%global appLoc serverName; %let compiled_apploc=/30.SASApps/3030.Projects/303001.DataController/build2/DataController; %let serverName=SASApp; %let appLoc=%sysfunc(coalescec(&appLoc,&compiled_apploc)); %let sasjs_clickmeservice=clickme; %let syscc=0; options ps=max nonotes nosgen nomprint nomlogic nosource2 nosource noquotelenmax; /* user supplied build vars */ /* user supplied build vars end */ /* system macro dependencies for build process */ %macro mf_getattrn( libds ,attr )/*/STORE SOURCE*/; %local dsid rc; %let dsid=%sysfunc(open(&libds,is)); %if &dsid = 0 %then %do; %put %str(WARN)ING: Cannot open %trim(&libds), system message below; %put %sysfunc(sysmsg()); -1 %end; %else %do; %sysfunc(attrn(&dsid,&attr)) %let rc=%sysfunc(close(&dsid)); %end; %mend mf_getattrn; %macro mf_nobs(libds )/*/STORE SOURCE*/; %mf_getattrn(&libds,NLOBS) %mend mf_nobs; %macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1) )/des='ungraceful abort' /*STORE SOURCE*/; %if not(%eval(%unquote(&iftrue))) %then %return; %put NOTE: /// mf_abort macro executing //; %if %length(&mac)>0 %then %put NOTE- called by &mac; %put NOTE - &msg; %abort; %mend mf_abort; /** @endcond */ %macro mf_verifymacvars( verifyVars /* list of macro variable NAMES */ ,makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */ ,mAbort=SOFT )/*/STORE SOURCE*/; %local verifyIterator verifyVar abortmsg; %do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( ))); %let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( )); %if not %symexist(&verifyvar) %then %do; %let abortmsg= Variable &verifyVar is MISSING; %goto exit_err; %end; %if %length(%trim(&&&verifyVar))=0 %then %do; %let abortmsg= Variable &verifyVar is EMPTY; %goto exit_err; %end; %if &makeupcase=YES %then %do; %let &verifyVar=%upcase(&&&verifyvar); %end; %end; %goto exit_success; %exit_err: %put &abortmsg; %mf_abort(iftrue=(&mabort ne SOFT), mac=mf_verifymacvars, msg=%str(&abortmsg) ) 0 %return; %exit_success: 1 %mend mf_verifymacvars; %macro mm_getDirectories( path= ,outds=work.mm_getDirectories ,mDebug=0 )/*/STORE SOURCE*/; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_getDirectories.sas; %&mD.put _local_; data &outds (keep=directoryuri name directoryname directorydesc ); length directoryuri name directoryname directorydesc $256; call missing(of _all_); __i+1; %if %length(&path)=0 %then %do; do while (metadata_getnobj("omsobj:Directory?@Id contains '.'",__i,directoryuri)>0); %end; %else %do; do while( metadata_getnobj("omsobj:Directory?@DirectoryName='&path'",__i,directoryuri) >0 ); %end; __rc1=metadata_getattr(directoryuri, "Name", name); __rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname); __rc3=metadata_getattr(directoryuri, "Desc", directorydesc); &mD.putlog (_all_) (=); drop __:; __i+1; if sum(of __rc1-__rc3)=0 then output; end; run; %mend mm_getDirectories; %macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767); %local rc fname; %if &prefix=0 %then %do; %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %end; %else %do; %local x len; %let len=%eval(8-%length(&prefix)); %let x=0; %do x=0 %to &maxtries; %let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len); %if %sysfunc(fileref(&fname)) > 0 %then %do; %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %return; %end; %end; %put unable to find available fileref after &maxtries attempts; %end; %mend mf_getuniquefileref; %macro mm_updatestpsourcecode(stp= ,stpcode= ,minify=NO ,mdebug=0 ); /* first, check if STP exists */ %local tsuri; %let tsuri=stopifempty ; data _null_; format type uri tsuri value $200.; call missing (of _all_); path="&stp.(StoredProcess)"; /* first, find the STP ID */ if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do; /* get sourcecode */ cnt=1; do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0); rc=metadata_getattr(tsuri,"Name",value); %if &mdebug=1 %then %do; put tsuri= value=; %end; if value="SourceCode" then do; /* found it! */ rc=metadata_getattr(tsuri,"Id",value); call symputx('tsuri',value,'l'); stop; end; cnt+1; end; end; else put (_all_)(=); run; %if &tsuri=stopifempty %then %do; %put %str(WARN)ING: &stp.(StoredProcess) not found!; %return; %end; %if %length(&stpcode)<2 %then %do; %put %str(WARN)ING: No SAS code supplied!!; %return; %end; %local frefin frefout; %let frefin=%mf_getuniquefileref(); %let frefout=%mf_getuniquefileref(); /* write header XML */ data _null_; file &frefin; put "$METAREPOSITORY ','>'); outstr=tranwrd(outstr,"'",'''); outstr=tranwrd(outstr,'"','"'); outstr=tranwrd(outstr,'0A'x,' '); outstr=tranwrd(outstr,'0D'x,' '); outstr=tranwrd(outstr,'$','$'); %if &minify=YES %then %do; outstr=cats(outstr); if outstr ne ''; if not (outstr=:'/*' and subpad(left(reverse(outstr)),1,2)='/*'); %end; outstr=trim(outstr); put outstr ' '; run; %end; data _null_; file &frefin mod; put "'>SAS268435456 "; run; proc metadata in= &frefin out=&frefout; run; %if &mdebug=1 %then %do; /* write the response to the log for debugging */ data _null_; infile &frefout lrecl=32767; input; put _infile_; run; %end; %else %do; filename &frefin clear; filename &frefout clear; %end; %mend mm_updatestpsourcecode; %macro mm_getrepos( outds=work.mm_getrepos )/*/STORE SOURCE*/; * use a temporary fileref to hold the response; filename response temp; /* get list of libraries */ proc metadata in= "1" out=response; run; /* write the response to the log for debugging */ /* data _null_; infile response lrecl=1048576; input; put _infile_; run; */ /* create an XML map to read the response */ filename sxlemap temp; data _null_; file sxlemap; put ''; put "/GetRepositories/Repositories/Repository"; put ""; put ''; put "/GetRepositories/Repositories/Repository/@Id"; put ""; put "characterstring200"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Name"; put ""; put "characterstring200"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Desc"; put ""; put "characterstring200"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@DefaultNS"; put "characterstring200"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@RepositoryType"; put "characterstring20"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@RepositoryFormat"; put "characterstring10"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@Access"; put "characterstring16"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@CurrentAccess"; put "characterstring16"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@PauseState"; put "characterstring16"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Path"; put ""; put "characterstring256"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Engine"; put ""; put "characterstring8"; put ''; put ''; put "/GetRepositories/Repositories/Repository/@Options"; put ""; put "characterstring32"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@MetadataCreated"; put "characterstring24"; put ''; put ''; put ""; put "/GetRepositories/Repositories/Repository/@MetadataUpdated"; put "characterstring24"; put ''; put '
'; run; libname _XML_ xml xmlfileref=response xmlmap=sxlemap; proc sort data= _XML_.SASRepos out=&outds; by name; run; /* clear references */ filename sxlemap clear; filename response clear; libname _XML_ clear; %mend mm_getrepos; %macro mm_getservercontexts( outds=work.mm_getrepos )/*/STORE SOURCE*/; %local repo repocnt x; %let repo=%sysfunc(getoption(metarepository)); /* first get list of available repos */ %mm_getrepos(outds=work.repos) %let repocnt=0; data _null_; set repos; where repositorytype in('CUSTOM','FOUNDATION'); keep id name ; call symputx(cats('repo',_n_),name,'l'); call symputx('repocnt',_n_,'l'); run; filename __mc1 temp; filename __mc2 temp; data &outds; length serveruri servername $200; call missing (of _all_); stop; run; %do x=1 %to &repocnt; options metarepository=&&repo&x; proc metadata in= "$METAREPOSITORY ServerContextSAS 0" out=__mc1; run; /* data _null_; infile __mc1 lrecl=1048576; input; put _infile_; run; */ data _null_; file __mc2; put ''; put "/GetMetadataObjects/Objects/ServerContext"; put ""; put ''; put "/GetMetadataObjects/Objects/ServerContext/@Id"; put ""; put "characterstring200"; put ''; put ''; put "/GetMetadataObjects/Objects/ServerContext/@Name"; put ""; put "characterstring200"; put ''; put '
'; run; libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2; proc append base=&outds data=__mc3.SASContexts;run; libname __mc3 clear; %end; options metarepository=&repo; filename __mc1 clear; filename __mc2 clear; %mend mm_getservercontexts; %macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1) , errds=work.mp_abort_errds , mode=REGULAR )/*/STORE SOURCE*/; %global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode; %local fref fid i; %if not(%eval(%unquote(&iftrue))) %then %return; %put NOTE: /// mp_abort macro executing //; %if %length(&mac)>0 %then %put NOTE- called by &mac; %put NOTE - &msg; %if %symexist(_SYSINCLUDEFILEDEVICE) /* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */ and %superq(SYSPROCESSNAME) ne %str(Compute Server) %then %do; %if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do; data &errds; iftrue='1=1'; length mac $100 msg $5000; mac=symget('mac'); msg=symget('msg'); run; data _null_; abort cancel FILE; run; %return; %end; %end; /* Web App Context */ %if %symexist(_PROGRAM) or %superq(SYSPROCESSNAME) = %str(Compute Server) or &mode=INCLUDE %then %do; options obs=max replace mprint; %if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do; options nosyntaxcheck; %end; %if &mode=INCLUDE %then %do; %if %sysfunc(exist(&errds))=1 %then %do; data _null_; set &errds; call symputx('iftrue',iftrue,'l'); call symputx('mac',mac,'l'); call symputx('msg',msg,'l'); putlog (_all_)(=); run; %if (&iftrue)=0 %then %return; %end; %else %do; %put &sysmacroname: No include errors found; %return; %end; %end; /* extract log errs / warns, if exist */ %local logloc logline; %global logmsg; /* capture global messages */ %if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG; %else %let logloc=%qsysfunc(getoption(LOG)); proc printto log=log;run; %let logline=0; %if %length(&logloc)>0 %then %do; data _null_; infile &logloc lrecl=5000; input; putlog _infile_; i=1; retain logonce 0; if ( _infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR" ) and logonce=0 then do; call symputx('logline',_n_); logonce+1; end; run; /* capture log including lines BEFORE the err */ %if &logline>0 %then %do; data _null_; infile &logloc lrecl=5000; input; i=1; stoploop=0; if _n_ ge &logline-15 and stoploop=0 then do until (i>22); call symputx('logmsg',catx('\n',symget('logmsg'),_infile_)); input; i+1; stoploop=1; end; if stoploop=1 then stop; run; %end; %end; %if %symexist(SYS_JES_JOB_URI) %then %do; /* setup webout for Viya */ options nobomfile; %if "X&SYS_JES_JOB_URI.X"="XX" %then %do; filename _webout temp lrecl=999999 mod; %end; %else %do; filename _webout filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json" lrecl=999999 mod; %end; %end; %else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do; options nobomfile; /* set up http header for SASjs Server */ %let fid=%sysfunc(fopen(&fref,A)); %if &fid=0 %then %do; %put %str(ERR)OR: %sysfunc(sysmsg()); %return; %end; %let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json))); %let rc=%sysfunc(fwrite(&fid)); %let rc=%sysfunc(fclose(&fid)); %let rc=%sysfunc(filename(&fref)); %end; /* send response in SASjs JSON format */ data _null_; file _webout mod lrecl=32000 encoding='utf-8'; length msg syswarningtext syserrortext $32767 mode $10 ; sasdatetime=datetime(); msg=symget('msg'); %if &logline>0 %then %do; msg=cats(msg,'\n\nLog Extract:\n',symget('logmsg')); %end; /* escape the escapes */ msg=tranwrd(msg,'\','\\'); /* escape the quotes */ msg=tranwrd(msg,'"','\"'); /* ditch the CRLFs as chrome complains */ msg=compress(msg,,'kw'); /* quote without quoting the quotes (which are escaped instead) */ msg=cats('"',msg,'"'); if symexist('_debug') then debug=quote(trim(symget('_debug'))); else debug='""'; if symget('sasjsprocessmode')='Stored Program' then mode='SASJS'; if mode ne 'SASJS' then put '>>weboutBEGIN<<'; put '{"SYSDATE" : "' "&SYSDATE" '"'; put ',"SYSTIME" : "' "&SYSTIME" '"'; put ',"sasjsAbort" : [{'; put ' "MSG":' msg ; put ' ,"MAC": "' "&mac" '"}]'; put ",""SYSUSERID"" : ""&sysuserid"" "; put ',"_DEBUG":' debug ; if symexist('_metauser') then do; _METAUSER=quote(trim(symget('_METAUSER'))); put ",""_METAUSER"": " _METAUSER; _METAPERSON=quote(trim(symget('_METAPERSON'))); put ',"_METAPERSON": ' _METAPERSON; end; if symexist('SYS_JES_JOB_URI') then do; SYS_JES_JOB_URI=quote(trim(symget('SYS_JES_JOB_URI'))); put ',"SYS_JES_JOB_URI": ' SYS_JES_JOB_URI; end; _PROGRAM=quote(trim(resolve(symget('_PROGRAM')))); put ',"_PROGRAM" : ' _PROGRAM ; put ",""SYSCC"" : ""&syscc"" "; syserrortext=cats(symget('syserrortext')); if findc(syserrortext,'"\'!!'0A0D09000E0F010210111A'x) then do; syserrortext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syserrortext) )))))))))))))!!'"'; end; else syserrortext=cats('"',syserrortext,'"'); put ',"SYSERRORTEXT" : ' syserrortext; put ",""SYSHOSTNAME"" : ""&syshostname"" "; put ",""SYSJOBID"" : ""&sysjobid"" "; put ",""SYSSCPL"" : ""&sysscpl"" "; put ",""SYSSITE"" : ""&syssite"" "; sysvlong=quote(trim(symget('sysvlong'))); put ',"SYSVLONG" : ' sysvlong; syswarningtext=cats(symget('syswarningtext')); if findc(syswarningtext,'"\'!!'0A0D09000E0F010210111A'x) then do; syswarningtext='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ prxchange('s/\x0D/\r/',-1, /* carriage return */ prxchange('s/\x09/\\t/',-1, /* tab */ prxchange('s/\x00/\\u0000/',-1, /* NUL */ prxchange('s/\x0E/\\u000E/',-1, /* SS */ prxchange('s/\x0F/\\u000F/',-1, /* SF */ prxchange('s/\x01/\\u0001/',-1, /* SOH */ prxchange('s/\x02/\\u0002/',-1, /* STX */ prxchange('s/\x10/\\u0010/',-1, /* DLE */ prxchange('s/\x11/\\u0011/',-1, /* DC1 */ prxchange('s/\x1A/\\u001A/',-1, /* SUB */ prxchange('s/\\/\\\\/',-1,syswarningtext) )))))))))))))!!'"'; end; else syswarningtext=cats('"',syswarningtext,'"'); put ",""SYSWARNINGTEXT"" : " syswarningtext; put ',"END_DTTM" : "' "%sysfunc(datetime(),E8601DT26.6)" '" '; put "}" ; if mode ne 'SASJS' then put '>>weboutEND<<'; run; %put _all_; %if "&sysprocessmode " = "SAS Stored Process Server " %then %do; data _null_; putlog 'stpsrvset program err and syscc'; rc=stpsrvset('program error', 0); call symputx("syscc",0,"g"); run; %if &sysscp=WIN and 1=0 /* deprecating this logic until we figure out a consistent abort */ and "%substr(%str(&sysvlong ),1,8)"="9.04.01M" and "%substr(%str(&sysvlong ),9,1)">"5" %then %do; /* skip approach (below) does not work in windows m6+ envs */ endsas; %end; %else %do; /** * endsas kills 9.4m3 deployments by orphaning multibridges. * Abort variants are ungraceful (non zero return code) * This approach lets SAS run silently until the end :-) * Caution - fails when called within a %include within a macro * Use mp_include() to handle this. */ filename skip temp; data _null_; file skip; put '%macro skip();'; comment '%mend skip; -> fix lint '; put '%macro skippy();'; comment '%mend skippy; -> fix lint '; run; %inc skip; %end; %end; %else %if "&sysprocessmode " = "SAS Compute Server " %then %do; /* endsas kills the session making it harder to fetch results */ data _null_; syswarningtext=symget('syswarningtext'); syserrortext=symget('syserrortext'); abort_msg=symget('msg'); syscc=symget('syscc'); sysuserid=symget('sysuserid'); iftrue=symget('iftrue'); put (_all_)(/=); call symputx('syscc',0); abort cancel nolist; run; %end; %else %do; %abort cancel; %end; %end; %else %do; %put _all_; %abort cancel; %end; %mend mp_abort; /** @endcond */ %macro mf_isblank(param )/*/STORE SOURCE*/; %sysevalf(%superq(param)=,boolean) %mend mf_isblank; %macro mp_dropmembers( list /* space separated list of datasets / views */ ,libref=WORK /* can only drop from a single library at a time */ ,iftrue=%str(1=1) )/*/STORE SOURCE*/; %if not(%eval(%unquote(&iftrue))) %then %return; %if %mf_isblank(&list) %then %do; %put NOTE: nothing to drop!; %return; %end; proc datasets lib=&libref nolist; delete &list; delete &list /mtype=view; run; %mend mp_dropmembers; %macro mm_createstp( stpname=Macro People STP ,stpdesc=This stp was created automatically by the mm_createstp macro ,filename=mm_createstp.sas ,directory=SASEnvironment/SASCode ,tree=/User Folders/sasdemo ,package=false ,streaming=true ,outds=work.mm_createstp ,mDebug=0 ,server=SASApp ,stptype=1 ,minify=NO ,frefin=mm_in ,frefout=mm_out )/*/STORE SOURCE*/; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_CreateSTP.sas; %&mD.put _local_; %mp_abort( iftrue=(%mf_verifymacvars(stpname filename directory tree)=0) ,mac=&sysmacroname ,msg=%str(Empty inputs: stpname filename directory tree) ) %mp_dropmembers(%scan(&outds,2,.)) /** * check tree exists */ data _null_; length type uri $256; rc=metadata_pathobj("","&tree","Folder",type,uri); call symputx('foldertype',type,'l'); call symputx('treeuri',uri,'l'); run; %if &foldertype ne Tree %then %do; %put %str(WARN)ING: Tree &tree does not exist!; %return; %end; /** * Check STP does not exist already */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&tree/&stpname",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype = ClassifierMap %then %do; %put %str(WARN)ING: Stored Process &stpname already exists in &tree!; %return; %end; /** * Check that the physical file exists */ %if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do; %put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!; %return; %end; %if &stptype=1 %then %do; /* type 1 STP - where code is stored on filesystem */ %if %sysevalf(&sysver lt 9.2) %then %do; %put %str(WARN)ING: Version 9.2 or later required; %return; %end; /* check directory object (where 9.2 source code reference is stored) */ data _null_; length id $20 dirtype $256; rc=metadata_resolve("&directory",dirtype,id); call symputx('checkdirtype',dirtype,'l'); run; %if &checkdirtype ne Directory %then %do; %mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug) %if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do; %put %str(WARN)ING: The directory object does not exist for &directory; %return; %end; %end; %else %do; data &outds; directoryuri="&directory"; run; %end; data &outds (keep=stpuri prompturi fileuri texturi); length stpuri prompturi fileuri texturi serveruri $256 ; if _n_=1 then call missing (of _all_); set &outds; /* final checks on uris */ length id $20 type $256; __rc=metadata_resolve("&treeuri",type,id); if type ne 'Tree' then do; putlog "%str(WARN)ING: Invalid tree URI: &treeuri"; stopme=1; end; __rc=metadata_resolve(directoryuri,type,id); if type ne 'Directory' then do; putlog "%str(WARN)ING: Invalid directory URI: " directoryuri; stopme=1; end; /* get server info */ __rc=metadata_resolve("&server",type,serveruri); if type ne 'LogicalServer' then do; __rc=metadata_getnobj("omsobj:LogicalServer?@Name='&server'",1,serveruri); if serveruri='' then do; putlog "%str(WARN)ING: Invalid server: &server"; stopme=1; end; end; if stopme=1 then do; putlog (_all_)(=); stop; end; /* create empty prompt */ rc1=METADATA_NEWOBJ('PromptGroup',prompturi,'Parameters'); rc2=METADATA_SETATTR(prompturi, 'UsageVersion', '1000000'); rc3=METADATA_SETATTR(prompturi, 'GroupType','2'); rc4=METADATA_SETATTR(prompturi, 'Name','Parameters'); rc5=METADATA_SETATTR(prompturi, 'PublicType','Embedded:PromptGroup'); GroupInfo= ""; rc6 = METADATA_SETATTR(prompturi, 'GroupInfo',groupinfo); if sum(of rc1-rc6) ne 0 then do; putlog "%str(WARN)ING: Issue creating prompt."; if prompturi ne . then do; putlog ' Removing orphan: ' prompturi; rc = METADATA_DELOBJ(prompturi); put rc=; end; stop; end; /* create a file uri */ rc7=METADATA_NEWOBJ('File',fileuri,'SP Source File'); rc8=METADATA_SETATTR(fileuri, 'FileName',"&filename"); rc9=METADATA_SETATTR(fileuri, 'IsARelativeName','1'); rc10=METADATA_SETASSN(fileuri, 'Directories','MODIFY',directoryuri); if sum(of rc7-rc10) ne 0 then do; putlog "%str(WARN)ING: Issue creating file."; if fileuri ne . then do; putlog ' Removing orphans:' prompturi fileuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); put (_all_)(=); end; stop; end; /* create a TextStore object */ rc11= METADATA_NEWOBJ('TextStore',texturi,'Stored Process'); rc12= METADATA_SETATTR(texturi, 'TextRole','StoredProcessConfiguration'); rc13= METADATA_SETATTR(texturi, 'TextType','XML'); storedtext='' !!"" !!""; rc14= METADATA_SETATTR(texturi, 'StoredText',storedtext); if sum(of rc11-rc14) ne 0 then do; putlog "%str(WARN)ING: Issue creating TextStore."; if texturi ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); put (_all_)(=); end; stop; end; /* create meta obj */ rc15= METADATA_NEWOBJ('ClassifierMap',stpuri,"&stpname"); rc16= METADATA_SETASSN(stpuri, 'Trees','MODIFY',treeuri); rc17= METADATA_SETASSN(stpuri, 'ComputeLocations','MODIFY',serveruri); rc18= METADATA_SETASSN(stpuri, 'SourceCode','MODIFY',fileuri); rc19= METADATA_SETASSN(stpuri, 'Prompts','MODIFY',prompturi); rc20= METADATA_SETASSN(stpuri, 'Notes','MODIFY',texturi); rc21= METADATA_SETATTR(stpuri, 'PublicType', 'StoredProcess'); rc22= METADATA_SETATTR(stpuri, 'TransformRole', 'StoredProcess'); rc23= METADATA_SETATTR(stpuri, 'UsageVersion', '1000000'); rc24= METADATA_SETATTR(stpuri, 'Desc', "&stpdesc"); /* tidy up if err */ if sum(of rc15-rc24) ne 0 then do; putlog "%str(WARN)ING: Issue creating STP."; if stpuri ne . then do; putlog ' Removing orphans: ' prompturi fileuri texturi stpuri; rc = METADATA_DELOBJ(prompturi); rc = METADATA_DELOBJ(fileuri); rc = METADATA_DELOBJ(texturi); rc = METADATA_DELOBJ(stpuri); put (_all_)(=); end; end; else do; fullpath=cats('_program=',treepath,"/&stpname"); putlog "NOTE: Stored Process Created!"; putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath; putlog "NOTE- "; putlog "NOTE-"; end; output; stop; run; %end; %else %if &stptype=2 %then %do; /* type 2 stp - code is stored in metadata */ %if %sysevalf(&sysver lt 9.3) %then %do; %put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs; %return; %end; /* check we have the correct ServerContext */ %mm_getservercontexts(outds=contexts) %local serveruri; %let serveruri=NOTFOUND; data _null_; set contexts; where upcase(servername)="%upcase(&server)"; call symputx('serveruri',serveruri); run; %if &serveruri=NOTFOUND %then %do; %put %str(WARN)ING: ServerContext *&server* not found!; %return; %end; /** * First, create a Hello World type 2 stored process */ filename &frefin temp; data _null_; file &frefin; treeuri=quote(symget('treeuri')); serveruri=quote(symget('serveruri')); stpdesc=quote(symget('stpdesc')); stpname=quote(symget('stpname')); put "$METAREPOSITORY "/ ''/ " "/ " "/ " "/ " "/ ' '/ ' ' / " "/ " "/ ' '/ " "/ ""/ "SAS"/ "268435456"; run; filename &frefout temp; proc metadata in= &frefin out=&frefout ; run; %if &mdebug=1 %then %do; /* write the response to the log for debugging */ data _null_; infile &frefout lrecl=1048576; input; put _infile_; run; %end; /** * Next, add the source code */ %mm_updatestpsourcecode(stp=&tree/&stpname ,stpcode="&directory/&filename" ,mdebug=&mdebug ,minify=&minify) %end; %else %do; %put %str(WARN)ING: STPTYPE=*&stptype* not recognised!; %end; %mend mm_createstp; %macro mf_getuser( )/*/STORE SOURCE*/; %local user; %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; %let user=&SYS_COMPUTE_SESSION_OWNER; %end; %else %if %symexist(_metaperson) %then %do; %if %length(&_metaperson)=0 %then %let user=&sysuserid; /* sometimes SAS will add @domain extension - remove for consistency */ /* but be sure to quote in case of usernames with commas */ %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); %end; %else %let user=&sysuserid; %quote(&user) %mend mf_getuser; %macro mm_createfolder(path=,mDebug=0); %put &sysmacroname: execution started for &path; %local dbg errorcheck; %if &mDebug=0 %then %let dbg=*; %local parentFolderObjId child errorcheck paths; %let paths=0; %let errorcheck=1; %if &syscc ge 4 %then %do; %put SYSCC=&syscc - this macro requires a clean session; %return; %end; data _null_; length objId parentId objType parent child $200 folderPath $1000; call missing (of _all_); folderPath = "%trim(&path)"; * remove any trailing slash ; if ( substr(folderPath,length(folderPath),1) = '/' ) then folderPath=substr(folderPath,1,length(folderPath)-1); * name must not be blank; if ( folderPath = '' ) then do; put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank"; end; * must have a starting slash ; if ( substr(folderPath,1,1) ne '/' ) then do; put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash"; stop; end; * check if folder already exists ; rc=metadata_pathobj('',cats(folderPath,"(Folder)"),"",objType,objId); if rc ge 1 then do; put "NOTE: Folder " folderPath " already exists!"; stop; end; * do not create a root (one level) folder ; if countc(folderPath,'/')=1 then do; put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder"; stop; end; * check that root folder exists ; root=cats('/',scan(folderpath,1,'/'),"(Folder)"); if metadata_pathobj('',root,"",objType,parentId)<1 then do; put "%str(ERR)OR: " root " does not exist!"; stop; end; * check that parent folder exists ; child=scan(folderPath,-1,'/'); parent=substr(folderpath,1,length(folderpath)-length(child)-1); rc=metadata_pathobj('',cats(parent,"(Folder)"),"",objType,parentId); if rc<1 then do; putlog 'The following folders will be created:'; /* folder does not exist - so start from top and work down */ length newpath $1000; paths=0; do x=2 to countw(folderpath,'/'); newpath=''; do i=1 to x; newpath=cats(newpath,'/',scan(folderpath,i,'/')); end; rc=metadata_pathobj('',cats(newpath,"(Folder)"),"",objType,parentId); if rc<1 then do; paths+1; call symputx(cats('path',paths),newpath); putlog newpath; end; call symputx('paths',paths); end; end; else putlog "parent " parent " exists"; call symputx('parentFolderObjId',parentId,'l'); call symputx('child',child,'l'); call symputx('errorcheck',0,'l'); &dbg put (_all_)(=); run; %if &errorcheck=1 or &syscc ge 4 %then %return; %if &paths>0 %then %do x=1 %to &paths; %put executing recursive call for &&path&x; %mm_createfolder(path=&&path&x) %end; %else %do; filename __newdir temp; options noquotelenmax; %local inmeta; %put creating: &path; %let inmeta=$METAREPOSITORY SAS268435456 ; proc metadata in="&inmeta" out=__newdir verbose; run ; /* check it was successful */ data _null_; length objId parentId objType parent child $200 ; call missing (of _all_); rc=metadata_pathobj('',cats("&path","(Folder)"),"",objType,objId); if rc ge 1 then do; putlog "SUCCCESS! &path created."; end; else do; putlog "%str(ERR)OR: unsuccessful attempt to create &path"; call symputx('syscc',8); end; run; /* write the response to the log for debugging */ %if &mDebug ne 0 %then %do; data _null_; infile __newdir lrecl=32767; input; put _infile_; run; %end; filename __newdir clear; %end; %put &sysmacroname: execution finished for &path; %mend mm_createfolder; %macro mm_deletestp( target= )/*/STORE SOURCE*/; /** * Check STP does exist */ %local cmtype; data _null_; length type uri $256; rc=metadata_pathobj("","&target",'StoredProcess',type,uri); call symputx('cmtype',type,'l'); call symputx('stpuri',uri,'l'); run; %if &cmtype ne ClassifierMap %then %do; %put NOTE: No Stored Process found at ⌖ %return; %end; filename __in temp lrecl=10000; filename __out temp lrecl=10000; data _null_ ; file __in ; put ""; put "SAS268436480"; put ""; run ; proc metadata in=__in out=__out verbose;run; /* list the result */ data _null_;infile __out; input; list; run; filename __in clear; filename __out clear; /** * Check deletion */ %local isgone; data _null_; length type uri $256; call missing (of _all_); rc=metadata_pathobj("","&target",'Note',type,uri); call symputx('isgone',type,'l'); run; %if &isgone = ClassifierMap %then %do; %put %str(ERR)OR: STP not deleted from ⌖ %let syscc=4; %return; %end; %mend mm_deletestp; /* system macro dependencies for build process end*/ /* system macros for build process */ %macro mm_createwebservice(path= ,name=initService ,precode= ,code=ft15f001 ,desc=This stp was created automagically by the mm_createwebservice macro ,mDebug=0 ,server=SASApp ,replace=YES ,adapter=sasjs )/*/STORE SOURCE*/; %if &syscc ge 4 %then %do; %put &=syscc - &sysmacroname will not execute in this state; %return; %end; %local mD; %if &mDebug=1 %then %let mD=; %else %let mD=%str(*); %&mD.put Executing mm_createwebservice.sas; %&mD.put _local_; * remove any trailing slash ; %if "%substr(&path,%length(&path),1)" = "/" %then %let path=%substr(&path,1,%length(&path)-1); /** * Add webout macro * These put statements are auto generated - to change the macro, change the * source (mm_webout) and run `build.py` */ filename sasjs temp; data _null_; file sasjs lrecl=3000 ; put "/* Created on %sysfunc(datetime(),datetime19.) by %mf_getuser() */"; /* WEBOUT BEGIN */ put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y '; put ' ,engine=DATASTEP '; put ' ,missing=NULL '; put ' ,showmeta=N '; put ' ,maxobs=MAX '; put ')/*/STORE SOURCE*/; '; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval '; put ' tmpds1 tmpds2 tmpds3 tmpds4; '; put '%let numcols=0; '; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;); '; put ' '; put '%if &action=OPEN %then %do; '; put ' options nobomfile; '; put ' data _null_;file &jref encoding=''utf-8'' lrecl=200; '; put ' put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"''; '; put ' run; '; put '%end; '; put '%else %if (&action=ARR or &action=OBJ) %then %do; '; put ' /* force variable names to always be uppercase in the JSON */ '; put ' options validvarname=upcase; '; put ' /* To avoid issues with _webout on EBI - such as encoding diffs and truncation '; put ' (https://support.sas.com/kb/49/325.html) we use temporary files */ '; put ' filename _sjs1 temp lrecl=200 ; '; put ' data _null_; file _sjs1 encoding=''utf-8''; '; put ' put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":"; '; put ' run; '; put ' /* now write to _webout 1 char at a time */ '; put ' data _null_; '; put ' infile _sjs1 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs1 clear; '; put ' '; put ' /* grab col defs */ '; put ' proc contents noprint data=&ds '; put ' out=_data_(keep=name type length format formatl formatd varnum label); '; put ' run; '; put ' %let colinfo=%scan(&syslast,2,.); '; put ' proc sort data=&colinfo; '; put ' by varnum; '; put ' run; '; put ' /* move meta to mac vars */ '; put ' data &colinfo; '; put ' if _n_=1 then call symputx(''numcols'',nobs,''l''); '; put ' set &colinfo end=last nobs=nobs; '; put ' name=upcase(name); '; put ' /* fix formats */ '; put ' if type=2 or type=6 then do; '; put ' typelong=''char''; '; put ' length fmt $49.; '; put ' if format='''' then fmt=cats(''$'',length,''.''); '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else fmt=cats(format,formatl,''.''); '; put ' end; '; put ' else do; '; put ' typelong=''num''; '; put ' if format='''' then fmt=''best.''; '; put ' else if formatl=0 then fmt=cats(format,''.''); '; put ' else if formatd=0 then fmt=cats(format,formatl,''.''); '; put ' else fmt=cats(format,formatl,''.'',formatd); '; put ' end; '; put ' /* 32 char unique name */ '; put ' newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27); '; put ' '; put ' call symputx(cats(''name'',_n_),name,''l''); '; put ' call symputx(cats(''newname'',_n_),newname,''l''); '; put ' call symputx(cats(''length'',_n_),length,''l''); '; put ' call symputx(cats(''fmt'',_n_),fmt,''l''); '; put ' call symputx(cats(''type'',_n_),type,''l''); '; put ' call symputx(cats(''typelong'',_n_),typelong,''l''); '; put ' call symputx(cats(''label'',_n_),coalescec(label,name),''l''); '; put ' /* overwritten when fmt=Y and a custom format exists in catalog */ '; put ' if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l''); '; put ' else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l''); '; put ' run; '; put ' '; put ' %let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql; '; put ' select count(*) into: lastobs from &ds; '; put ' %if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs)); '; put ' '; put ' %if &engine=PROCJSON %then %do; '; put ' %if &missing=STRING %then %do; '; put ' %put &sysmacroname: Special Missings not supported in proc json.; '; put ' %put &sysmacroname: Switching to DATASTEP engine; '; put ' %goto datastep; '; put ' %end; '; put ' data &tempds; '; put ' set &ds; '; put ' &stmt_obs; '; put ' %if &fmt=N %then format _numeric_ best32.;; '; put ' /* PRETTY is necessary to avoid line truncation in large files */ '; put ' filename _sjs2 temp lrecl=131068 encoding=''utf-8''; '; put ' proc json out=_sjs2 pretty '; put ' %if &action=ARR %then nokeys ; '; put ' ;export &tempds / nosastags fmtnumeric; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs2 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs2 clear; '; put ' %end; '; put ' %else %if &engine=DATASTEP %then %do; '; put ' %datastep: '; put ' %if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1 '; put ' %then %do; '; put ' %put &sysmacroname: &ds NOT FOUND!!!; '; put ' %return; '; put ' %end; '; put ' '; put ' %if &fmt=Y %then %do; '; put ' /** '; put ' * Extract format definitions '; put ' * First, by getting library locations from dictionary.formats '; put ' * Then, by exporting the width using proc format '; put ' * Cannot use maxw from sashelp.vformat as not always populated '; put ' * Cannot use fmtinfo() as not supported in all flavours '; put ' */ '; put ' %let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' %let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; put ' proc sql noprint; '; put ' create table &tmpds1 as '; put ' select cats(libname,''.'',memname) as FMTCAT, '; put ' FMTNAME '; put ' from dictionary.formats '; put ' where fmttype=''F'' and libname is not null '; put ' and fmtname in (select format from &colinfo where format is not null) '; put ' order by 1; '; put ' create table &tmpds2( '; put ' FMTNAME char(32), '; put ' LENGTH num '; put ' ); '; put ' %local catlist cat fmtlist i; '; put ' select distinct fmtcat into: catlist separated by '' '' from &tmpds1; '; put ' %do i=1 %to %sysfunc(countw(&catlist,%str( ))); '; put ' %let cat=%scan(&catlist,&i,%str( )); '; put ' proc sql; '; put ' select distinct fmtname into: fmtlist separated by '' '' '; put ' from &tmpds1 where fmtcat="&cat"; '; put ' proc format lib=&cat cntlout=&tmpds3(keep=fmtname length); '; put ' select &fmtlist; '; put ' run; '; put ' proc sql; '; put ' insert into &tmpds2 select distinct fmtname,length from &tmpds3; '; put ' %end; '; put ' '; put ' proc sql; '; put ' create table &tmpds4 as '; put ' select a.*, b.length as MAXW '; put ' from &colinfo a '; put ' left join &tmpds2 b '; put ' on cats(a.format)=cats(upcase(b.fmtname)) '; put ' order by a.varnum; '; put ' data _null_; '; put ' set &tmpds4; '; put ' if not missing(maxw); '; put ' call symputx( '; put ' cats(''fmtlen'',_n_), '; put ' /* vars need extra padding due to JSON escaping of special chars */ '; put ' min(32767,ceil((max(length,maxw)+10)*1.5)) '; put ' ,''l'' '; put ' ); '; put ' run; '; put ' '; put ' /* configure varlenchk - as we are explicitly shortening the variables */ '; put ' %let optval=%sysfunc(getoption(varlenchk)); '; put ' options varlenchk=NOWARN; '; put ' data _data_(compress=char); '; put ' /* shorten the new vars */ '; put ' length '; put ' %do i=1 %to &numcols; '; put ' &&name&i $&&fmtlen&i '; put ' %end; '; put ' ; '; put ' /* rename on entry */ '; put ' set &ds(rename=( '; put ' %do i=1 %to &numcols; '; put ' &&name&i=&&newname&i '; put ' %end; '; put ' )); '; put ' &stmt_obs; '; put ' '; put ' drop '; put ' %do i=1 %to &numcols; '; put ' &&newname&i '; put ' %end; '; put ' ; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=num %then %do; '; put ' &&name&i=cats(put(&&newname&i,&&fmt&i)); '; put ' %end; '; put ' %else %do; '; put ' &&name&i=put(&&newname&i,&&fmt&i); '; put ' %end; '; put ' %end; '; put ' if _error_ then do; '; put ' call symputx(''syscc'',1012); '; put ' stop; '; put ' end; '; put ' run; '; put ' %let fmtds=&syslast; '; put ' options varlenchk=&optval; '; put ' %end; '; put ' '; put ' proc format; /* credit yabwon for special null removal */ '; put ' value bart (default=40) '; put ' %if &missing=NULL %then %do; '; put ' ._ - .z = null '; put ' %end; '; put ' %else %do; '; put ' ._ = [quote()] '; put ' . = null '; put ' .a - .z = [quote()] '; put ' %end; '; put ' other = [best.]; '; put ' '; put ' data &tempds; '; put ' attrib _all_ label=''''; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' length &&name&i $&&fmtlen&i...; '; put ' format &&name&i $&&fmtlen&i...; '; put ' %end; '; put ' %end; '; put ' %if &fmt=Y %then %do; '; put ' set &fmtds; '; put ' %end; '; put ' %else %do; '; put ' set &ds; '; put ' %end; '; put ' &stmt_obs; '; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; put ' if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; put ' prxchange(''s/\x0D/\r/'',-1, /* carriage return */ '; put ' prxchange(''s/\x09/\\t/'',-1, /* tab */ '; put ' prxchange(''s/\x00/\\u0000/'',-1, /* NUL */ '; put ' prxchange(''s/\x0E/\\u000E/'',-1, /* SS */ '; put ' prxchange(''s/\x0F/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/\x01/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/\x02/\\u0002/'',-1, /* STX */ '; put ' prxchange(''s/\x10/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else &&name&i=quote(cats(&&name&i)); '; put ' %end; '; put ' %end; '; put ' run; '; put ' '; put ' filename _sjs3 temp lrecl=131068 ; '; put ' data _null_; '; put ' file _sjs3 encoding=''utf-8''; '; put ' if _n_=1 then put "["; '; put ' set &tempds; '; put ' if _n_>1 then put "," @; put '; put ' %if &action=ARR %then "[" ; %else "{" ; '; put ' %do i=1 %to &numcols; '; put ' %if &i>1 %then "," ; '; put ' %if &action=OBJ %then """&&name&i"":" ; '; put ' "&&name&i"n /* name literal for reserved variable names */ '; put ' %end; '; put ' %if &action=ARR %then "]" ; %else "}" ; ; '; put ' '; put ' /* close out the table */ '; put ' data _null_; '; put ' file _sjs3 mod encoding=''utf-8''; '; put ' put '']''; '; put ' run; '; put ' data _null_; '; put ' infile _sjs3 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs3 clear; '; put ' %end; '; put ' '; put ' proc sql; '; put ' drop table &colinfo, &tempds; '; put ' '; put ' %if %substr(&showmeta,1,1)=Y %then %do; '; put ' filename _sjs4 temp lrecl=131068 encoding=''utf-8''; '; put ' data _null_; '; put ' file _sjs4; '; put ' length label $350; '; put ' put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{"; '; put ' do i=1 to &numcols; '; put ' name=quote(trim(symget(cats(''name'',i)))); '; put ' format=quote(trim(symget(cats(''fmt'',i)))); '; put ' label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i))))); '; put ' length=quote(trim(symget(cats(''length'',i)))); '; put ' type=quote(trim(symget(cats(''typelong'',i)))); '; put ' if i>1 then put "," @@; '; put ' put name '':{"format":'' format '',"label":'' label '; put ' '',"length":'' length '',"type":'' type ''}''; '; put ' end; '; put ' put ''}}''; '; put ' run; '; put ' /* send back to webout */ '; put ' data _null_; '; put ' infile _sjs4 lrecl=1 recfm=n; '; put ' file &jref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjs4 clear; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=CLOSE %then %do; '; put ' data _null_; file &jref encoding=''utf-8'' mod ; '; put ' put "}"; '; put ' run; '; put '%end; '; put '%mend mp_jsonout; '; put ' '; put '%macro mf_getuser( '; put ')/*/STORE SOURCE*/; '; put ' %local user; '; put ' '; put ' %if %symexist(_sasjs_username) %then %let user=&_sasjs_username; '; put ' %else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do; '; put ' %let user=&SYS_COMPUTE_SESSION_OWNER; '; put ' %end; '; put ' %else %if %symexist(_metaperson) %then %do; '; put ' %if %length(&_metaperson)=0 %then %let user=&sysuserid; '; put ' /* sometimes SAS will add @domain extension - remove for consistency */ '; put ' /* but be sure to quote in case of usernames with commas */ '; put ' %else %let user=%unquote(%scan(%quote(&_metaperson),1,@)); '; put ' %end; '; put ' %else %let user=&sysuserid; '; put ' '; put ' %quote(&user) '; put ' '; put '%mend mf_getuser; '; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; put '%local i tempds jsonengine; '; put ' '; put '/* see https://github.com/sasjs/core/issues/41 */ '; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON; '; put '%else %let jsonengine=DATASTEP; '; put ' '; put ' '; put '%if &action=FETCH %then %do; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' options mprint notes mprintnest; '; put ' %end; '; put ' %let _webin_file_count=%eval(&_webin_file_count+0); '; put ' /* now read in the data */ '; put ' %do i=1 %to &_webin_file_count; '; put ' %if &_webin_file_count=1 %then %do; '; put ' %let _webin_fileref1=&_webin_fileref; '; put ' %let _webin_name1=&_webin_name; '; put ' %end; '; put ' data _null_; '; put ' infile &&_webin_fileref&i termstr=crlf; '; put ' input; '; put ' call symputx(''input_statement'',_infile_); '; put ' putlog "&&_webin_name&i input statement: " _infile_; '; put ' stop; '; put ' data &&_webin_name&i; '; put ' infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8''; '; put ' input &input_statement; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' if _n_<20 then putlog _infile_; '; put ' %end; '; put ' run; '; put ' %let sasjs_tables=&sasjs_tables &&_webin_name&i; '; put ' %end; '; put '%end; '; put ' '; put '%else %if &action=OPEN %then %do; '; put ' /* fix encoding */ '; put ' OPTIONS NOBOMFILE; '; put ' '; put ' /** '; put ' * check xengine type to avoid the below err message: '; put ' * > Function is only valid for filerefs using the CACHE access method. '; put ' */ '; put ' data _null_; '; put ' set sashelp.vextfl(where=(fileref="_WEBOUT")); '; put ' if xengine=''STREAM'' then do; '; put ' rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8"); '; put ' end; '; put ' run; '; put ' '; put ' /* setup json */ '; put ' data _null_;file &fref encoding=''utf-8''; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' put ''>>weboutBEGIN<<''; '; put ' %end; '; put ' put ''{"SYSDATE" : "'' "&SYSDATE" ''"''; '; put ' put '',"SYSTIME" : "'' "&SYSTIME" ''"''; '; put ' run; '; put ' '; put '%end; '; put ' '; put '%else %if &action=ARR or &action=OBJ %then %do; '; put ' %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref '; put ' ,engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs '; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; put ' /* To avoid issues with _webout on EBI we use a temporary file */ '; put ' filename _sjsref temp lrecl=131068; '; put ' %if %str(&workobs) > 0 %then %do; '; put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; put ' %local wtcnt;%let wtcnt=0; '; put ' data _null_; '; put ' set &tempds; '; put ' if not (upcase(name) =:"DATA"); /* ignore temp datasets */ '; put ' i+1; '; put ' call symputx(cats(''wt'',i),name,''l''); '; put ' call symputx(''wtcnt'',i,''l''); '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put ",""WORK"":{"; '; put ' %do i=1 %to &wtcnt; '; put ' %let wt=&&wt&i; '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' dsid=open("WORK.&wt",''is''); '; put ' nlobs=attrn(dsid,''NLOBS''); '; put ' nvars=attrn(dsid,''NVARS''); '; put ' rc=close(dsid); '; put ' if &i>1 then put '',''@; '; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y '; put ' ,maxobs=&workobs '; put ' ) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' run; '; put ' %end; '; put ' /* close off json */ '; put ' data _null_;file _sjsref mod encoding=''utf-8''; '; put ' length SYSPROCESSNAME syserrortext syswarningtext autoexec $512; '; put ' put ",""_DEBUG"" : ""&_debug"" "; '; put ' _METAUSER=quote(trim(symget(''_METAUSER''))); '; put ' put ",""_METAUSER"": " _METAUSER; '; put ' _METAPERSON=quote(trim(symget(''_METAPERSON''))); '; put ' put '',"_METAPERSON": '' _METAPERSON; '; put ' _PROGRAM=quote(trim(resolve(symget(''_PROGRAM'')))); '; put ' put '',"_PROGRAM" : '' _PROGRAM ; '; put ' autoexec=quote(urlencode(trim(getoption(''autoexec'')))); '; put ' put '',"AUTOEXEC" : '' autoexec; '; put ' put ",""MF_GETUSER"" : ""%mf_getuser()"" "; '; put ' put ",""SYSCC"" : ""&syscc"" "; '; put ' put ",""SYSENCODING"" : ""&sysencoding"" "; '; put ' syserrortext=cats(symget(''syserrortext'')); '; put ' if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' syserrortext=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; put ' prxchange(''s/\x0D/\r/'',-1, /* carriage return */ '; put ' prxchange(''s/\x09/\\t/'',-1, /* tab */ '; put ' prxchange(''s/\x00/\\u0000/'',-1, /* NUL */ '; put ' prxchange(''s/\x0E/\\u000E/'',-1, /* SS */ '; put ' prxchange(''s/\x0F/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/\x01/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/\x02/\\u0002/'',-1, /* STX */ '; put ' prxchange(''s/\x10/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */ '; put ' prxchange(''s/\\/\\\\/'',-1,syserrortext) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else syserrortext=cats(''"'',syserrortext,''"''); '; put ' put '',"SYSERRORTEXT" : '' syserrortext; '; put ' put ",""SYSHOSTNAME"" : ""&syshostname"" "; '; put ' put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" "; '; put ' put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" "; '; put ' SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME))); '; put ' put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME; '; put ' put ",""SYSJOBID"" : ""&sysjobid"" "; '; put ' put ",""SYSSCPL"" : ""&sysscpl"" "; '; put ' put ",""SYSSITE"" : ""&syssite"" "; '; put ' put ",""SYSUSERID"" : ""&sysuserid"" "; '; put ' sysvlong=quote(trim(symget(''sysvlong''))); '; put ' put '',"SYSVLONG" : '' sysvlong; '; put ' syswarningtext=cats(symget(''syswarningtext'')); '; put ' if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do; '; put ' syswarningtext=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; put ' prxchange(''s/\x0D/\r/'',-1, /* carriage return */ '; put ' prxchange(''s/\x09/\\t/'',-1, /* tab */ '; put ' prxchange(''s/\x00/\\u0000/'',-1, /* NUL */ '; put ' prxchange(''s/\x0E/\\u000E/'',-1, /* SS */ '; put ' prxchange(''s/\x0F/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/\x01/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/\x02/\\u0002/'',-1, /* STX */ '; put ' prxchange(''s/\x10/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */ '; put ' prxchange(''s/\\/\\\\/'',-1,syswarningtext) '; put ' )))))))))))))!!''"''; '; put ' end; '; put ' else syswarningtext=cats(''"'',syswarningtext,''"''); '; put ' put '',"SYSWARNINGTEXT" : '' syswarningtext; '; put ' put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" ''; '; put ' length memsize $32; '; put ' memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)"; '; put ' memsize=quote(cats(memsize)); '; put ' put '',"MEMSIZE" : '' memsize; '; put ' put "}" @; '; put ' %if %str(&_debug) ge 131 %then %do; '; put ' put ''>>weboutEND<<''; '; put ' %end; '; put ' run; '; put ' /* now write to _webout 1 char at a time */ '; put ' data _null_; '; put ' infile _sjsref lrecl=1 recfm=n; '; put ' file &fref mod lrecl=1 recfm=n; '; put ' input sourcechar $char1. @@; '; put ' format sourcechar hex2.; '; put ' put sourcechar char1. @@; '; put ' run; '; put ' filename _sjsref clear; '; put ' '; put '%end; '; put ' '; put '%mend mm_webout; '; /* WEBOUT END */ put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO'; put ' ,maxobs=MAX'; put ');'; put ' %mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt,missing=&missing'; put ' ,showmeta=&showmeta,maxobs=&maxobs'; put ' )'; put '%mend;'; run; /* add precode and code */ %local work tmpfile; %let work=%sysfunc(pathname(work)); %let tmpfile=__mm_createwebservice.temp; %local x fref freflist mod; %let freflist= &adapter &precode &code ; %do x=1 %to %sysfunc(countw(&freflist)); %if &x>1 %then %let mod=mod; %let fref=%scan(&freflist,&x); %&mD.put &sysmacroname: adding &fref; data _null_; file "&work/&tmpfile" lrecl=3000 &mod; infile &fref; input; put _infile_; run; %end; /* create the metadata folder if not already there */ %mm_createfolder(path=&path) %if &syscc ge 4 %then %return; %if %upcase(&replace)=YES %then %do; %mm_deletestp(target=&path/&name) %end; /* create the web service */ %mm_createstp(stpname=&name ,filename=&tmpfile ,directory=&work ,tree=&path ,stpdesc=&desc ,mDebug=&mdebug ,server=&server ,stptype=2) /* find the web app url */ %local url; %let url=localhost/SASStoredProcess; data _null_; length url $128; rc=METADATA_GETURI("Stored Process Web App",url); if rc=0 then call symputx('url',url,'l'); run; %put &sysmacroname: STP &name successfully created in &path; %put Check it out here:; %put ;%put ;%put ; %put &url?_PROGRAM=&path/&name; %put ;%put ;%put ; %mend mm_createwebservice; /* system macros for build process end */ * BuildInit start; /** @file @brief Initialise build program for SAS 9 DC

SAS Macros

**/ options nomprint; %global _metaperson _url dcpath; /* set webout if not running in STP mode */ data _null_; if "&sysprocessmode" ne "SAS Stored Process Server" then do; call execute('filename _webout temp;'); end; run; * BuildInit end; %let path=services; %let service=clickme; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put '''';'; put 'put '' '';'; put 'put '' Data Controller'';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '' '';'; put 'put '''';'; put 'run;'; put '%sasjsout(HTML)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/admin; %let service=configurator; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief provides the web service to create the control tables'; put '@details'; put '

SAS Macros

'; put '@li dc_getusergroups.sas'; put '@li mf_getuser.sas'; put '@li mf_getapploc.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%let root=%mf_getapploc();'; put '/* create web page */'; put 'data _null_;'; put 'file _webout;'; put 'infile datalines ;'; put 'input;'; put 'put _infile_;'; put 'datalines4;'; put ''; put ''; put ''; put ''; put 'Data Controller'; put ''; put ''; put ''; put ''; put ''; put '
'; put '
'; put ''; put 'Data Controller'; put '
'; put '
'; put '
'; put '
'; put '
'; put '
'; put ''; put '
'; put '
'; put 'Terms and Conditions'; put '
'; put '
'; put '
'; put '

Due to the way the Demo version is compiled (in an easy-to-deploy but'; put 'inefficient-to-run format), it should not be deployed to production servers.'; put 'Before proceeding with configuration, please confirm that you have read,'; put 'understood, and agreed to the'; put 'Data Controller for SAS© Evaluation Agreement.'; put '

'; put '
'; put '
'; put '>'; put ''; put '
'; put '
'; put '
'; put ''; put ''; put '
'; put '
'; put '
'; put ''; put ''; put ';;;;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=exportconfig; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_ds2cards(base_ds, tgt_ds='; put ',cards_file="%sysfunc(pathname(work))/cardgen.sas"'; put ',maxobs=max'; put ',random_sample=NO'; put ',showlog=YES'; put ',outencoding='; put ',append=NO'; put ')/*/STORE SOURCE*/;'; put '%local i setds nvars;'; put '%if not %sysfunc(exist(&base_ds)) %then %do;'; put '%put %str(WARN)ING: &base_ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&base_ds,.)=0 %then %let base_ds=WORK.&base_ds;'; put '%if (&tgt_ds = ) %then %let tgt_ds=&base_ds;'; put '%if %index(&tgt_ds,.)=0 %then %let tgt_ds=WORK.%scan(&base_ds,2,.);'; put '%if ("&outencoding" ne "") %then %let outencoding=encoding="&outencoding";'; put '%if ("&append" = "" or "&append" = "NO") %then %let append=;'; put '%else %let append=mod;'; put '/* get varcount */'; put '%let nvars=0;'; put 'proc sql noprint;'; put 'select count(*) into: nvars from dictionary.columns'; put 'where upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)";'; put '%if &nvars=0 %then %do;'; put '%put %str(WARN)ING: Dataset &base_ds has no variables, will not be converted.;'; put '%return;'; put '%end;'; put '/* get indexes */'; put 'proc sort'; put 'data=sashelp.vindex('; put 'where=(upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)")'; put ')'; put 'out=_data_;'; put 'by indxname indxpos;'; put 'run;'; put '%local indexes;'; put 'data _null_;'; put 'set &syslast end=last;'; put 'if _n_=1 then call symputx(''indexes'',''(index=('',''l'');'; put 'by indxname indxpos;'; put 'length vars $32767 nom uni $8;'; put 'retain vars;'; put 'if first.indxname then do;'; put 'idxcnt+1;'; put 'nom='''';'; put 'uni='''';'; put 'vars=name;'; put 'end;'; put 'else vars=catx('' '',vars,name);'; put 'if last.indxname then do;'; put 'if nomiss=''yes'' then nom=''/nomiss'';'; put 'if unique=''yes'' then uni=''/unique'';'; put 'call symputx(''indexes'''; put ',catx('' '',symget(''indexes''),indxname,''=('',vars,'')'',nom,uni)'; put ',''l'');'; put 'end;'; put 'if last then call symputx(''indexes'',cats(symget(''indexes''),''))''),''l'');'; put 'run;'; put 'data;run;'; put '%let setds=&syslast;'; put 'proc sql'; put '%if %datatyp(&maxobs)=NUMERIC %then %do;'; put 'outobs=&maxobs;'; put '%end;'; put ';'; put 'create table &setds as select * from &base_ds'; put '%if &random_sample=YES %then %do;'; put 'order by ranuni(42)'; put '%end;'; put ';'; put 'reset outobs=max;'; put 'create table datalines1 as'; put 'select name,type,length,varnum,format,label from dictionary.columns'; put 'where upcase(libname)="%upcase(%scan(&base_ds,1))"'; put 'and upcase(memname)="%upcase(%scan(&base_ds,2))";'; put '/**'; put 'Due to long decimals cannot use best. format'; put 'So - use bestd. format and then use character functions to strip trailing'; put 'zeros, if NOT an integer or missing!! Cannot use int() as it upsets'; put 'note2err when there are missings.'; put 'resolved code = ifc( mod(coalesce(VARIABLE,0),1)=0'; put ',put(VARIABLE,best32.)'; put ',substrn(put(VARIABLE,bestd32.),1'; put ',findc(put(VARIABLE,bestd32.),''0'',''TBK'')));'; put '**/'; put 'data datalines_2;'; put 'format dataline $32000.;'; put 'set datalines1 (where=(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM'')));'; put 'if type=''num'' then dataline='; put 'cats(''ifc(mod(coalesce('',name,'',0),1)=0'; put ',put('',name,'',best32.-l)'; put ',substrn(put('',name,'',bestd32.-l),1'; put ',findc(put('',name,'',bestd32.-l),"0","TBK")))'');'; put '/**'; put '* binary data must be converted, to store in text format. It is identified'; put '* by the presence of the $HEX keyword in the format.'; put '*/'; put 'else if upcase(format)=:''$HEX'' then'; put 'dataline=cats(''put(trim('',name,''),'',format,'')'');'; put '/**'; put '* There is no easy way to store line breaks in a cards file.'; put '* To discuss this, use: https://github.com/sasjs/core/issues/80'; put '* Removing all nonprintables with kw (keep writeable)'; put '*/'; put 'else dataline=cats(''compress('',name,'', ,"kw")'');'; put 'run;'; put 'proc sql noprint;'; put 'select dataline into: datalines separated by '','' from datalines_2;'; put '%local'; put 'process_dttm_flg'; put 'valid_from_dttm_flg'; put 'valid_to_dttm_flg'; put ';'; put '%let process_dttm_flg = N;'; put '%let valid_from_dttm_flg = N;'; put '%let valid_to_dttm_flg = N;'; put 'data _null_;'; put 'set datalines1 ;'; put '/* build attrib statement */'; put 'if type=''char'' then type2=''$'';'; put 'if strip(format) ne '''' then format2=cats(''format='',format);'; put 'if strip(label) ne '''' then label2=cats(''label='',quote(trim(label)));'; put 'str1=catx('' '',(put(name,$33.)||''length='')'; put ',put(cats(type2,length),$7.)||format2,label2);'; put '/* Build input statement */'; put 'if upcase(format)=:''$HEX'' then type3='':''!!format;'; put 'else if type=''char'' then type3='':$char.'';'; put 'str2=put(name,$33.)||type3;'; put 'if(upcase(name) = "PROCESSED_DTTM") then'; put 'call symputx("process_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_FROM_DTTM") then'; put 'call symputx("valid_from_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_TO_DTTM") then'; put 'call symputx("valid_to_dttm_flg", "Y", "L");'; put 'call symputx(cats("attrib_stmt_", put(_N_, 8.)), str1, "L");'; put 'call symputx(cats("input_stmt_", put(_N_, 8.))'; put ', ifc(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM''), str2, ""), "L");'; put 'run;'; put 'data _null_;'; put 'file &cards_file. &outencoding lrecl=32767 termstr=nl &append;'; put 'length __attrib $32767;'; put 'if _n_=1 then do;'; put 'put ''/**'';'; put 'put '' @file'';'; put 'put " @brief Datalines for %upcase(%scan(&base_ds,2)) dataset";'; put 'put " @details Generated by %nrstr(%%)mp_ds2cards()";'; put 'put " Source: https://github.com/sasjs/core";'; put 'put '' @cond '';'; put 'put ''**/'';'; put 'put "data &tgt_ds &indexes;";'; put 'put "attrib ";'; put '%do i = 1 %to &nvars;'; put '__attrib=symget("attrib_stmt_&i");'; put 'put __attrib;'; put '%end;'; put 'put ";";'; put '%if &process_dttm_flg. eq Y %then %do;'; put 'put ''retain PROCESSED_DTTM %sysfunc(datetime());'';'; put '%end;'; put '%if &valid_from_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_FROM_DTTM &low_date;'';'; put '%end;'; put '%if &valid_to_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_TO_DTTM &high_date;'';'; put '%end;'; put 'if __nobs=0 then do;'; put 'put ''call missing(of _all_);/* avoid uninitialised notes */'';'; put 'put ''stop;'';'; put 'put ''run;'';'; put 'end;'; put 'else do;'; put 'put "infile cards dsd;";'; put 'put "input ";'; put '%do i = 1 %to &nvars.;'; put '%if(%length(&&input_stmt_&i..)) %then'; put 'put " &&input_stmt_&i..";'; put ';'; put '%end;'; put 'put ";";'; put 'put ''missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'';'; put 'put "datalines4;";'; put 'end;'; put 'end;'; put 'set &setds end=__lastobs nobs=__nobs;'; put '/* remove all formats for write purposes - some have long underlying decimals */'; put 'format _numeric_ best30.29;'; put 'length __dataline $32767;'; put '__dataline=catq(''cqtmb'',&datalines);'; put 'put __dataline;'; put 'if __lastobs then do;'; put 'put '';;;;'';'; put 'put ''run;'';'; put 'put ''/** @endcond **/'';'; put 'stop;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &setds;'; put 'quit;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &cards_file lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: CARDS FILE SAVED IN:;'; put '%put NOTE-;%put NOTE-;'; put '%put NOTE- %sysfunc(dequote(&cards_file.));'; put '%put NOTE-;%put NOTE-;'; put '%mend mp_ds2cards;'; put '/** @endcond **/'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Downloads zip file of DC customer configurations'; put '@details Zip contains several excel files, containing the customer specific'; put '(non-DC) configurations. Useful when migrating to a new instance of'; put 'Data Controller.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li mp_ds2cards.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let work=%sysfunc(pathname(work));'; put '/* excel does not work in all envs */'; put '%let mime=application/vnd.ms-excel;'; put '%let dbms=EXCEL;'; put '%let mime=application/csv;'; put '%let dbms=CSV;'; put '%let ext=csv;'; put '%macro conditional_export(ds);'; put '%if %mf_nobs(&ds)>0 %then %do;'; put 'PROC EXPORT DATA= &ds OUTFILE= "&work/&ds..&ext"'; put 'DBMS=&dbms REPLACE;'; put 'RUN;'; put 'ods package(ProdOutput) add file="&work/&ds..&ext" mimetype="&mime";'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%nrstr(syscc=&syscc after &ds prep)'; put ')'; put '%mend conditional_export;'; put 'ods package(ProdOutput) open nopf;'; put 'data MPE_ALERTS;'; put 'set &mpelib..MPE_ALERTS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_ALERTS)'; put 'data MPE_COLUMN_LEVEL_SECURITY;'; put 'set &mpelib..MPE_COLUMN_LEVEL_SECURITY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'where also CLS_LIBREF ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_COLUMN_LEVEL_SECURITY)'; put 'data MPE_CONFIG;'; put 'set &mpelib..MPE_CONFIG;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_CONFIG)'; put 'data MPE_DATADICTIONARY;'; put 'set &mpelib..MPE_DATADICTIONARY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'if DD_SOURCE=:"&mpelib" then do;'; put '/* nothing */'; put 'end;'; put 'else output;'; put 'run;'; put '%conditional_export(MPE_DATADICTIONARY)'; put 'data MPE_EMAILS;'; put 'set &mpelib..MPE_EMAILS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_EMAILS)'; put 'data MPE_EXCEL_CONFIG;'; put 'set &mpelib..MPE_EXCEL_CONFIG;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_EXCEL_CONFIG)'; put 'data MPE_GROUPS;'; put 'set &mpelib..MPE_GROUPS;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_GROUPS)'; put 'data MPE_ROW_LEVEL_SECURITY;'; put 'set &mpelib..MPE_ROW_LEVEL_SECURITY;'; put 'where &dc_dttmtfmt. le tx_to;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_ROW_LEVEL_SECURITY)'; put 'data MPE_SECURITY;'; put 'set &mpelib..MPE_SECURITY;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_SECURITY)'; put 'data MPE_SELECTBOX;'; put 'set &mpelib..MPE_SELECTBOX;'; put 'where &dc_dttmtfmt. le ver_to_dttm;'; put 'where also select_lib ne "&mpelib";'; put 'drop ver_: selectbox_rk;'; put 'run;'; put '%conditional_export(MPE_SELECTBOX)'; put 'data MPE_TABLES;'; put 'set &mpelib..MPE_TABLES;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'where also LIBREF ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_TABLES)'; put 'data MPE_VALIDATIONS;'; put 'set &mpelib..MPE_VALIDATIONS;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'where also BASE_LIB ne "&mpelib";'; put 'drop tx_: ;'; put 'run;'; put '%conditional_export(MPE_VALIDATIONS)'; put '/* finish up zip file */'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name="DCBACKUP.zip" archive_path="&work");'; put 'ods package(ProdOutput) close;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%nrstr(syscc=&syscc after zip prep)'; put ')'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&work/DCBACKUP.zip)'; put ',outname=DCBACKUP.zip'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=exportdb; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_existfileref(fref'; put ')/*/STORE SOURCE*/;'; put '%local rc;'; put '%let rc=%sysfunc(fileref(&fref));'; put '%if &rc=0 %then %do;'; put '1'; put '%end;'; put '%else %if &rc<0 %then %do;'; put '%put &sysmacroname: Fileref &fref exists but the underlying file does not;'; put '1'; put '%end;'; put '%else %do;'; put '0'; put '%end;'; put '%mend mf_existfileref;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getddl(libref,ds,fref=getddl,flavour=SAS,showlog=NO,schema='; put ',applydttm=NO'; put ')/*/STORE SOURCE*/;'; put '/* check fileref is assigned */'; put '%if %mf_existfileref(&fref)=0 %then %do;'; put 'filename &fref temp ;'; put '%end;'; put '%if %length(&libref)=0 %then %let libref=WORK;'; put '%let flavour=%upcase(&flavour);'; put 'proc sql noprint;'; put 'create table _data_ as'; put 'select * from dictionary.tables'; put 'where upcase(libname)="%upcase(&libref)"'; put 'and memtype=''DATA'' /* views not currently supported */'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local tabinfo; %let tabinfo=&syslast;'; put 'create table _data_ as'; put 'select * from dictionary.columns'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local colinfo; %let colinfo=&syslast;'; put '%local dsnlist;'; put 'select distinct upcase(memname) into: dsnlist'; put 'separated by '' '''; put 'from &syslast'; put ';'; put 'create table _data_ as'; put 'select * from dictionary.indexes'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put 'order by idxusage, indxname, indxpos'; put ';'; put '%local idxinfo; %let idxinfo=&syslast;'; put '/* Extract all Primary Key and Unique data constraints */'; put '%mp_getconstraints(lib=%upcase(&libref),ds=%upcase(&ds),outds=_data_)'; put '%local colconst; %let colconst=&syslast;'; put '%macro addConst();'; put '%global constraints_used;'; put 'data _null_;'; put 'length ctype $11 constraint_name_orig $256 constraints_used $5000;'; put 'set &colconst('; put 'where=(table_name="&curds" and constraint_type in (''PRIMARY'',''UNIQUE''))'; put ') end=last;'; put 'file &fref mod;'; put 'by constraint_type constraint_name;'; put 'retain constraints_used;'; put 'constraint_name_orig=constraint_name;'; put 'if upcase(strip(constraint_type)) = ''PRIMARY'' then ctype=''PRIMARY KEY'';'; put 'else ctype=strip(constraint_type);'; put '%if &flavour=TSQL %then %do;'; put 'column_name=catt(''['',column_name,'']'');'; put 'constraint_name=catt(''['',constraint_name,'']'');'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'column_name=catt(''"'',column_name,''"'');'; put 'constraint_name=catt(''"'',constraint_name,''"'');'; put '%end;'; put 'if first.constraint_name then do;'; put 'constraints_used = catx('' '', constraints_used, constraint_name_orig);'; put 'put " ,CONSTRAINT " constraint_name ctype "(" ;'; put 'put '' '' column_name;'; put 'end;'; put 'else put '' ,'' column_name;'; put 'if last.constraint_name then do;'; put 'put " )";'; put 'call symput(''constraints_used'',strip(constraints_used));'; put 'end;'; put 'run;'; put '%put &=constraints_used;'; put '%mend addConst;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* DDL generated by &sysuserid on %sysfunc(datetime(),datetime19.) */";'; put 'run;'; put '%local x curds;'; put '%if &flavour=SAS %then %do;'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* SAS Flavour DDL for %upcase(&libref).&curds */";'; put 'put "proc sql;";'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'length lab $1024 typ $20;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table &libref..&curds(";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view &libref..&curds(";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'if length(format)>1 then fmt=" format="!!cats(format);'; put 'if length(label)>1 then'; put 'lab=" label="!!cats("''",tranwrd(label,"''","''''"),"''");'; put 'if notnull=''yes'' then notnul='' not null'';'; put 'if type=''char'' then typ=cats(''char('',length,'')'');'; put 'else if length ne 8 then typ=''num length=''!!cats(length);'; put 'else typ=''num'';'; put 'put name typ fmt notnul lab;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '/* ds=cats(libname,''.'',memname); */'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX '' indxname "ON &libref..&curds (" ;'; put 'put '' '' name ;'; put 'end;'; put 'else put '' ,'' name ;'; put '*else put '' ,'' name ;'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '/*'; put 'ods output IntegrityConstraints=ic;'; put 'proc contents data=testali out2=info;'; put 'run;'; put '*/'; put '%end;'; put '%end;'; put '%else %if &flavour=TSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''SQLSVR'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* TSQL Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table [&schema].[&curds](";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view [&schema].[&curds](";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt=''[datetime2](7) '';'; put '%end;'; put 'else if type=''num'' then fmt=''[decimal](18,2)'';'; put 'else if length le 8000 then fmt=''[varchar](''!!cats(length)!!'')'';'; put 'else fmt=cats(''[varchar](max)'');'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put 'put "[" name +(-1) "]" fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '*ds=cats(libname,''.'',memname);'; put 'if first.indxname then do;'; put '/* add nonclustered in case of multiple unique indexes */'; put 'put '' ,index ['' indxname +(-1) ''] UNIQUE NONCLUSTERED ('';'; put 'put '' ['' name +(-1) '']'';'; put 'end;'; put 'else put '' ,['' name +(-1) '']'';'; put 'if last.indxname then do;'; put 'put '' )'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'put '')'';'; put 'put ''GO'';'; put 'run;'; put '/* add extended properties for labels */'; put 'data _null_;'; put 'file &fref mod;'; put 'length nm $64 lab $1024;'; put 'set &colinfo (where=(upcase(memname)="&curds" and label ne '''')) end=last;'; put 'nm=cats("N''",tranwrd(name,"''","''''"),"''");'; put 'lab=cats("N''",tranwrd(label,"''","''''"),"''");'; put 'put '' '';'; put 'put "EXEC sys.sp_addextendedproperty ";'; put 'put " @name=N''MS_Description'',@value=" lab ;'; put 'put " ,@level0type=N''SCHEMA'',@level0name=N''&schema'' ";'; put 'put " ,@level1type=N''TABLE'',@level1name=N''&curds''";'; put 'put " ,@level2type=N''COLUMN'',@level2name=" nm ;'; put 'if last then put ''GO'';'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''POSTGRES'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put 'data _null_;'; put 'file &fref mod;'; put 'put "CREATE SCHEMA &schema;";'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put '%local curdsvarcount;'; put '%let curdsvarcount=%mf_getvarcount(&libref..&curds);'; put '%if &curdsvarcount>1600 %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &libref..&curds contains &curdsvarcount vars */";'; put 'put "/* Postgres cannot create tables with over 1600 vars */";'; put 'put "/* No DDL will be generated for this table";'; put 'run;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* Postgres Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'length fmt $32;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "CREATE TABLE &schema..&curds (";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "CREATE VIEW &schema..&curds (";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt='' TIMESTAMP '';'; put '%end;'; put 'else if type=''num'' then fmt='' DOUBLE PRECISION'';'; put 'else fmt=''VARCHAR(''!!cats(length)!!'')'';'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put '/* quote column names in case they represent reserved words */'; put 'name2=quote(trim(name));'; put 'put name2 fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX "'' indxname +(-1) ''" '' "ON &schema..&curds(";'; put 'put '' "'' name +(-1) ''"'' ;'; put 'end;'; put 'else put '' ,"'' name +(-1) ''"'';'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%if %upcase(&showlog)=YES %then %do;'; put 'options ps=max;'; put 'data _null_;'; put 'infile &fref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_getddl;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_ds2inserts(ds, outref=0,schema=0,outds=0,flavour=SAS,maxobs=max'; put ',applydttm=YES'; put ')/*/STORE SOURCE*/;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WAR)NING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WAR)NING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&ds,.)=0 %then %let ds=WORK.&ds;'; put '%let flavour=%upcase(&flavour);'; put '%if &flavour ne SAS and &flavour ne PGSQL %then %do;'; put '%put %str(WAR)NING: &flavour is not supported;'; put '%return;'; put '%end;'; put '%if &outref=0 %then %do;'; put '%put %str(WAR)NING: Please provide a fileref;'; put '%return;'; put '%end;'; put '%if %mf_existfileref(&outref)=0 %then %do;'; put 'filename &outref temp lrecl=66000;'; put '%end;'; put '%if &schema=0 %then %let schema=;'; put '%else %let schema=&schema..;'; put '%if &outds=0 %then %let outds=%scan(&ds,2,.);'; put '%local nobs;'; put 'proc sql noprint;'; put 'select count(*) into: nobs TRIMMED from &ds;'; put '%if &nobs=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'put "/* No rows found in &ds */";'; put 'run;'; put '%end;'; put '%local vars;'; put '%let vars=%mf_getvarcount(&ds);'; put '%if &vars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'put "/* No columns found in &schema.&ds */";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &vars>1600 and &flavour=PGSQL %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &schema.&ds contains &vars vars */";'; put 'put "/* Postgres cannot handle tables with over 1600 vars */";'; put 'put "/* No inserts will be generated for this table */";'; put 'run;'; put '%return;'; put '%end;'; put '%local varlist varlistcomma;'; put '%let varlist=%mf_getvarlist(&ds);'; put '%let varlistcomma=%mf_getvarlist(&ds,dlm=%str(,),quote=double);'; put '/* next, export data */'; put 'data _null_;'; put 'file &outref mod ;'; put 'if _n_=1 then put "/* &schema.&outds (&nobs rows, &vars columns) */";'; put 'set &ds;'; put '%if &maxobs ne max %then %do;'; put 'if _n_>&maxobs then stop;'; put '%end;'; put 'length _____str $32767;'; put 'call missing(_____str);'; put 'format _numeric_ best.;'; put 'format _character_ ;'; put '%local i comma var vtype vfmt;'; put '%do i=1 %to %sysfunc(countw(&varlist));'; put '%let var=%scan(&varlist,&i);'; put '%let vtype=%mf_getvartype(&ds,&var);'; put '%let vfmt=%upcase(%mf_getvarformat(&ds,&var,force=1));'; put '%if &i=1 %then %do;'; put '%if &flavour=SAS %then %do;'; put 'put "insert into &schema.&outds set ";'; put 'put " &var="@;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '_____str=cats('; put '"INSERT INTO &schema.&outds ("'; put ',symget(''varlistcomma'')'; put ',") VALUES ("'; put ');'; put 'put _____str;'; put 'put " "@;'; put '%end;'; put '%end;'; put '%else %do;'; put '%if &flavour=SAS %then %do;'; put 'put " ,&var="@;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'put " ,"@;'; put '%end;'; put '%end;'; put '%if &vtype=N %then %do;'; put '%if &flavour=SAS %then %do;'; put 'put &var;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'if missing(&var) then put ''NULL'';'; put '%if &applydttm=YES and "%substr(&vfmt.xxxxxxxx,1,8)"="DATETIME"'; put '%then %do;'; put 'else put "TIMESTAMP ''" &var E8601DT25.6 "''";'; put '%end;'; put '%else %do;'; put 'else put &var;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '_____str="''"!!trim(tranwrd(&var,"''","''''"))!!"''";'; put 'put _____str;'; put '%end;'; put '%end;'; put '%if &flavour=SAS %then %do;'; put 'put '';'';'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'put '');'';'; put '%end;'; put 'if _n_=&nobs then put /;'; put 'run;'; put '%mend mp_ds2inserts;'; put '%macro mp_lib2inserts(lib'; put ',flavour=SAS'; put ',outref=0'; put ',schema=0'; put ',maxobs=max'; put ',applydttm=YES'; put ')/*/STORE SOURCE*/;'; put '/* Find the tables */'; put '%local x ds memlist;'; put 'proc sql noprint;'; put 'select distinct lowcase(memname)'; put 'into: memlist'; put 'separated by '' '''; put 'from dictionary.tables'; put 'where upcase(libname)="%upcase(&lib)"'; put 'and memtype=''DATA''; /* exclude views */'; put '%let flavour=%upcase(&flavour);'; put '%if &flavour ne SAS and &flavour ne PGSQL %then %do;'; put '%put %str(WAR)NING: &flavour is not supported;'; put '%return;'; put '%end;'; put '/* create the inserts */'; put '%do x=1 %to %sysfunc(countw(&memlist));'; put '%let ds=%scan(&memlist,&x);'; put '%mp_ds2inserts(&lib..&ds'; put ',outref=&outref'; put ',schema=&schema'; put ',outds=&ds'; put ',flavour=&flavour'; put ',maxobs=&maxobs'; put ',applydttm=&applydttm'; put ')'; put '%end;'; put '%mend mp_lib2inserts;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Exports the data controller library in DB specific DDL'; put '@details If user is in the administrator group, they can call this'; put 'service directly adding the following URL params:'; put '@li &flavour= (only PGSQL supported at this time)'; put '@li &schema= (optional, if target schema is needed)'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_getddl.sas'; put '@li mp_lib2inserts.sas'; put '@li mp_streamfile.sas'; put '@li mpe_getgroups.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global flavour schema;'; put '/* if no flavour is specified, default to SAS */'; put '%let flavour=%sysfunc(coalescec(&flavour,SAS));'; put '/* if no schema var provided, DC Libref is used */'; put '%let schema=%sysfunc(coalescec(&schema,&dc_libref));'; put '/* check user is in admin group */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'data work.admins;'; put 'set work.usergroups;'; put 'put (_all_)(=);'; put 'run;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into:cnt'; put 'from usergroups'; put 'where groupname="&mpeadmins";'; put '%put &=cnt;'; put '%mp_abort(iftrue= (&cnt=0)'; put ',mac=&_program'; put ',msg=%str(The &DC_LIBREF library can only be exported by &mpeadmins members)'; put ')'; put '%mp_getddl(&DC_LIBREF'; put ',flavour=&flavour'; put ',schema=&schema'; put ',applydttm=YES'; put ',fref=tmpref'; put ')'; put '%mp_lib2inserts(&DC_LIBREF,flavour=&flavour,schema=&schema, outref=tmpref)'; put '%mp_streamfile(contenttype=TEXT'; put ',inref=tmpref'; put ',outname=&dc_libref..ddl'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=makedata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_increment(macro_name,incr=1);'; put '/* iterate the value */'; put '%let ¯o_name=%eval(&&¯o_name+&incr);'; put '/* return the value */'; put '&&¯o_name'; put '%mend mf_increment;'; put '%macro mpe_makedata(lib=,mpeadmins=,path=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &lib..mpe_alerts set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',alert_event=''*ALL*'''; put ',alert_lib=''*ALL*'''; put ',alert_ds=''*ALL*'''; put ',alert_user="&sysuserid";'; put 'insert into &lib..mpe_column_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',CLS_SCOPE=''EDIT'''; put ',CLS_GROUP=''AllUsers'''; put ',CLS_LIBREF="&lib"'; put ',CLS_TABLE=''MPE_LOCKANYTABLE'''; put ',CLS_VARIABLE_NM=''LOCK_STATUS_CD'''; put ',CLS_ACTIVE=1'; put ',CLS_HIDE=0;'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_EMAIL_ALERTS"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc=''YES or NO to enable email alerts. Note - this requires email '''; put '!!''options to be preconfigured! They can be configured in the '''; put '!!''settings stp if needed.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_VIEWLIB_CHECK"'; put ',var_value=''NO'''; put ',var_active=1'; put ',var_desc='; put '''Set to YES to enable library validity checking in viewLibs service.'''; put '!!'' Note: this can make the service very slow if there are lots of '''; put '!!''external libraries. If enabled, this removes empty libraries from '''; put '!!''the viewer library dropdown. To switch off, set to NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MACROS"'; put ',var_value=cats(symget(''path''),"/dc_macros")'; put ',var_active=1'; put ',var_desc=''Location of underlying macros - EUC feature.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_MAXOBS_WEBEDIT"'; put ',var_value="100"'; put ',var_active=1'; put ',var_desc=''This sets the maximum number of observations that can be loaded'''; put '!!'' into the browser for editing in the EDIT screen. A higher number'''; put '!!'' will require a decent browser (ie, not IE) and more memory on the'''; put '!!'' client side.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_VIEWER"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''YES will restrict the list of libraries and tables in VIEWER to'''; put '!!'' those explicitly set to VIEW in the MPE_SECURITY table. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_RESTRICT_EDITRECORD"'; put ',var_value="NO"'; put ',var_active=1'; put ',var_desc=''Setting YES will prevent the EDIT RECORD dialog appearing in the'''; put '!!'' EDIT screen by removing the "Edit Row" option in the right click menu'''; put '!!'', and the "ADD RECORD" button in the bottom left. Default=NO.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_CATALOG"'; put ',var_name="DC_IGNORELIBS"'; put ',var_value="|MAPSSAS|MAPS|"'; put ',var_active=1'; put ',var_desc=''Pipe seperated list of librefs (uppercase) to be ignored when'''; put '!!'' running the Data Catalog refresh process. This can enable a clean'''; put '!!'' run when invalid librefs are returned by the mpe_refreshlibs macro.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LOCALE"'; put ',var_value="SYSTEM"'; put ',var_active=1'; put ',var_desc=''Set to a locale (such as en_gb or en_be) to override the system'''; put '!!'' value (which can be driven from the browser settings). This is '''; put '!!''useful when importing ambiguous dates from CSV or Excel (eg 1/2/20 vs '''; put '!!''2/1/20) as DC uses the anydtdtm informats for import. Default=SYSTEM.'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BULKLOAD"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to enable BULKLOAD=YES in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_BUCKET"'; put ',var_value="''your-aws-bucket/Exchange''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS bucket to'''; put '!!'' use for s3 uploads in redshift'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_AWS_CREDENTIALS_FILE"'; put ',var_value="''/path/to/your/aws/s3/.credentials''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) value of the AWS creds file'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_REGION"'; put ',var_value="''eu-west-1''"'; put ',var_active=0'; put ',var_desc=''Set to the (quoted) AWS region in use'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_COMPRESS"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to perform compression ahead of the COPY command'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DCBL_REDSH"'; put ',var_name="BL_USE_SSL"'; put ',var_value="YES"'; put ',var_active=0'; put ',var_desc=''Set to YES to use SSL encryption'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC_REVIEW"'; put ',var_name="HISTORY_ROWS"'; put ',var_value=''100'''; put ',var_active=1'; put ',var_desc=''Number of rows (or additional rows) to return in the HISTORY '''; put '!!''page'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_LICENCE_KEY"'; put ',var_value='' '''; put ',var_active=1'; put ',var_desc=''Licence Key'';'; put 'insert into &lib..mpe_config set'; put 'tx_from=0'; put ',tx_to=''31DEC9999:23:59:59''dt'; put ',var_scope="DC"'; put ',var_name="DC_ACTIVATION_KEY"'; put ',var_value='' '''; put ',var_active=1'; put ',var_desc=''Activation Key'';'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''LIBRARY'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Data Controller Control Tables"'; put ',DD_LONGDESC="# The Data Controller Library"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib..MPE_TABLES"'; put ',DD_SHORTDESC="Configuration of new tables for Data Controller"'; put ',DD_LONGDESC="# MPE_TABLES - adding new tabels to Data Controller"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_TABLES.DSN"'; put ',DD_SHORTDESC="Dataset Name to be edited"'; put ',DD_LONGDESC="_DSN_ - must be UPCASE"'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''DIRECTORY'''; put ',DD_SOURCE="/some/directory"'; put ',DD_SHORTDESC="Directory for some purpose"'; put ',DD_LONGDESC="This directory is great. It''s great directory.'; put 'It trumps all other directories."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''TABLE'''; put ',DD_SOURCE="&lib"'; put ',DD_SHORTDESC="Transaction table for capturing Data Controller users"'; put ',DD_LONGDESC="After a user accepts the Data Controller EULA they are "'; put '!!"registered as a user in this table."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_datadictionary set'; put 'tx_from=0'; put ',DD_TYPE=''COLUMN'''; put ',DD_SOURCE="&lib..MPE_CONFIG.VAR_ACTIVE"'; put ',DD_SHORTDESC="Set to 1 to make an option active"'; put ',DD_LONGDESC="This value is used as a filter by data controller whenever "'; put '!!"querying for option settings."'; put ',DD_OWNER="&sysuserid"'; put ',DD_RESPONSIBLE="&sysuserid"'; put ',DD_SENSITIVITY="Low"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_GROUPS'; put '*/'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="allbow"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="dctestuser1"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="dc-admin"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="mihmed"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_groups set'; put 'tx_from=0'; put ',group_name="sec-sas9-prd-ext-sasplatform-300115datacontroller"'; put ',group_desc="Custom Group for Data Controller Purposes"'; put ',user_name="DCTest"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_ROW_LEVEL_SECURITY'; put '*/'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=1'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib."'; put ',RLS_TABLE="MPE_GROUPS"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''GROUP_NAME'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''-1''"'; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=2'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''sec-sas9-prd-int-sasplatform-300114sasjs'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_ROW_LEVEL_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''RLS_RK'''; put ',RLS_OPERATOR_NM=''>'''; put ',RLS_RAW_VALUE=''0'''; put ',RLS_ACTIVE=1;'; put 'insert into &lib..mpe_row_level_security set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',RLS_RK=3'; put ',RLS_SCOPE=''ALL'''; put ',RLS_GROUP=''DC Demo Group'''; put ',RLS_LIBREF="&lib"'; put ',RLS_TABLE="MPE_SECURITY"'; put ',RLS_GROUP_LOGIC=''AND'''; put ',RLS_SUBGROUP_LOGIC=''OR'''; put ',RLS_SUBGROUP_ID=0'; put ',RLS_VARIABLE_NM=''ACCESS_LEVEL'''; put ',RLS_OPERATOR_NM=''NE'''; put ',RLS_RAW_VALUE="''N/A''"'; put ',RLS_ACTIVE=1;'; put '/**'; put '* MPE_SECURITY'; put '*/'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-int-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="sec-sas9-prd-ext-sasplatform-300114sasjs"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="EDIT"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_security set'; put 'tx_from=0'; put ',libref="*ALL*"'; put ',dsn="*ALL*"'; put ',access_level="APPROVE"'; put ',sas_group="dc-admin"'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/* mpe_selectbox */'; put '%let rk=1;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=&rk'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''LOCKED'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_LOCKANYTABLE"'; put ',base_column="LOCK_STATUS_CD"'; put ',selectbox_value=''UNLOCKED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''EDIT'''; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''APPROVE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''VIEW'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''SIGNOFF'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''UPDATE'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''REPLACE'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''TXTEMPORAL'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''BITEMPORAL'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_TABLES"'; put ',base_column="LOADTYPE"'; put ',selectbox_value=''FORMAT_CAT'''; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''SUBMITTED'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''APPROVED'''; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ALERTS"'; put ',base_column="ALERT_EVENT"'; put ',selectbox_value=''REJECTED'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 1'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 2'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value=''Option 3'''; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_X_TEST"'; put ',base_column="SOME_DROPDOWN"'; put ',selectbox_value="This is a long option. This option is very long. "'; put '!!"It is optional, though."'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="CASE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MINVAL"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="MAXVAL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT"'; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT"'; put ',selectbox_order=5'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="NOTNULL"'; put ',selectbox_order=6'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="SOME_DATASET"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="DSN"'; put ',selectbox_value="EXAMPLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="COLUMN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="TABLE"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="LIBRARY"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="CATALOG"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_DATADICTIONARY"'; put ',base_column="DD_TYPE"'; put ',selectbox_value="FORMAT"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="LIBREF"'; put ',selectbox_value=''*ALL*'''; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_SECURITY"'; put ',base_column="ACCESS_LEVEL"'; put ',selectbox_value=''AUDIT'''; put ',selectbox_order=4'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="HARDSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_VALIDATIONS"'; put ',base_column="RULE_TYPE"'; put ',selectbox_value="SOFTSELECT_HOOK"'; put ',selectbox_order=7'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_GROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="AND"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_SUBGROUP_LOGIC"'; put ',selectbox_value="OR"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="="'; put ',selectbox_order=0'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="<="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value=">="'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="BETWEEN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NOT IN"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="NE"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_OPERATOR_NM"'; put ',selectbox_value="CONTAINS"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_EXCEL_CONFIG"'; put ',base_column="XL_RULE"'; put ',selectbox_value="FORMULA"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_column="RLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="1"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_ACTIVE"'; put ',selectbox_value="0"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="EDIT"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="VIEW"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_SCOPE"'; put ',selectbox_value="ALL"'; put ',selectbox_order=3'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="0"'; put ',selectbox_order=1'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..mpe_selectbox set'; put 'selectbox_rk=%mf_increment(rk)'; put ',ver_from_dttm=0'; put ',select_lib="&lib"'; put ',select_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_column="CLS_HIDE"'; put ',selectbox_value="1"'; put ',selectbox_order=2'; put ',ver_to_dttm=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_TABLES'; put '*/'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_COLUMN_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM'''; put ',notes=''Docs: https://docs.datacontroller.io/column-level-security'''; put ',post_edit_hook=''services/hooks/mpe_column_level_security_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_LOCKANYTABLE'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''LOCK_LIB LOCK_DS'''; put ',notes=''This table may be edited when a process failed and left a lock'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_TABLES'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''This entry allows the MP Editor to edit itself!'''; put ',post_edit_hook=''services/hooks/mpe_tables_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''LIBREF DSN ACCESS_LEVEL SAS_GROUP'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',notes=''Shows which metadata groups can edit which tables'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_SELECTBOX'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''SELECTBOX_RK'''; put ',var_txfrom=''VER_FROM_DTTM'''; put ',var_txto=''VER_TO_DTTM'''; put ',notes=''Can configure dropdowns for the front end'''; put ',rk_underlying=''SELECT_LIB SELECT_DS BASE_COLUMN SELECTBOX_VALUE'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_X_TEST'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''PRIMARY_KEY_FIELD'''; put ',notes=''Test table for controller'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EMAILS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''USER_NAME'''; put ',notes=''Primary Emails Table (backup is metadata)'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''VAR_SCOPE VAR_NAME'''; put ',notes=''Configuration variables for Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ALERTS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''ALERT_EVENT ALERT_LIB ALERT_DS ALERT_USER'''; put ',notes=''Configuration for alert email events'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_GROUPS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''GROUP_NAME USER_NAME'''; put ',notes=''Configuration for additional groups within Data Controller'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_VALIDATIONS'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''BASE_LIB BASE_DS BASE_COL RULE_TYPE'''; put ',notes=''Configuration of data quality rules in Editor component'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',post_edit_hook=''services/hooks/mpe_validations_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_DATADICTIONARY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''DD_TYPE DD_SOURCE'''; put ',notes=''Configuration of data dictionary'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_EXCEL_CONFIG'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''XL_LIBREF XL_TABLE XL_COLUMN'''; put ',notes=''Configuration of the excel import rules'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_ROW_LEVEL_SECURITY'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',buskey=''RLS_RK'''; put ',notes=''Configuration of Row Level Security'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',rk_underlying=''RLS_SCOPE RLS_GROUP RLS_LIBREF RLS_TABLE RLS_GROUP_LOGIC '''; put '!!''RLS_SUBGROUP_LOGIC RLS_SUBGROUP_ID RLS_VARIABLE_NM RLS_OPERATOR_NM '''; put '!!''RLS_RAW_VALUE '''; put ',post_edit_hook=''services/hooks/mpe_row_level_security_postedit'''; put ';'; put 'insert into &lib..mpe_tables'; put 'set tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',libref="&lib"'; put ',dsn=''MPE_X_CATALOG-FC'''; put ',num_of_approvals_required=1'; put ',loadtype=''FORMAT_CAT'''; put ',buskey=''TYPE FMTNAME FMTROW'''; put ',notes=''Sample Format Catalog'''; put ';'; put '/* mpe_validations */'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_SCOPE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_HIDE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_COLUMN_LEVEL_SECURITY"'; put ',base_col="CLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ALERTS"'; put ',base_col="ALERT_LIB"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_alerts.alert_lib"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''NOTNULL'''; put ',rule_value='' '''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="NUM_OF_APPROVALS_REQUIRED"'; put ',rule_type=''MINVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="BUSKEY"'; put ',rule_type=''NOTNULL'''; put ',rule_value=" "'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''CASE'''; put ',rule_value=''UPCASE'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="LIBREF"'; put ',rule_type=''HARDSELECT'''; put ',rule_value="&lib..MPE_TABLES.LIBREF"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_TABLES.DSN"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SECURITY"'; put ',base_col="SAS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="BASE_COL"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value="0"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_VALIDATIONS"'; put ',base_col="RULE_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value="1"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="DSN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/mpe_tables.dsn"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_TXTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSFROM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_BUSTO"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_TABLES"'; put ',base_col="VAR_PROCESSED"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_LIB"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="SELECT_DS"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_editable"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_SELECTBOX"'; put ',base_col="BASE_COLUMN"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_GROUP"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/sas_groups"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_LIBREF"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/libraries_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_TABLE"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/tables_all"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_SUBGROUP_ID"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_ROW_LEVEL_SECURITY"'; put ',base_col="RLS_VARIABLE_NM"'; put ',rule_type=''SOFTSELECT_HOOK'''; put ',rule_value="services/validations/columns_in_libds"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_X_TEST"'; put ',base_col="SOME_NUM"'; put ',rule_type=''HARDSELECT_HOOK'''; put ',rule_value="services/validations/mpe_x_test.some_num"'; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MINVAL'''; put ',rule_value=''0'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_EXCEL_CONFIG"'; put ',base_col="XL_ACTIVE"'; put ',rule_type=''MAXVAL'''; put ',rule_value=''1'''; put ',rule_active=1'; put ',tx_to=''31DEC5999:23:59:59''dt;'; put '/**'; put '* MPE_X_TEST'; put '*/'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=0'; put ',some_char=''this is dummy data'''; put ',some_dropdown=''Option 1'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=42'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=1'; put ',some_char=''more dummy data'''; put ',some_dropdown=''Option 2'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=422'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=2'; put ',some_char=''even more dummy data'''; put ',some_dropdown=''Option 3'''; put ',some_num=42'; put ',some_date=42'; put ',some_datetime=42'; put ',some_time=142'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=3'; put ',some_char=repeat(''It was a dark and stormy night. The wind was blowing'''; put '!!'' a gale! The captain said to his mate - mate, tell us a tale. And'''; put '!!'' this, is the tale he told: '',3)'; put ',some_dropdown=''Option 2'''; put ',some_num=1613.001'; put ',some_date=423'; put ',some_datetime=423'; put ',some_time=44'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=4'; put ',some_char=''if you can fill the unforgiving minute'''; put ',some_dropdown=''Option 1'''; put ',some_num=1613.001123456'; put ',some_date=4231'; put ',some_datetime=423123123'; put ',some_time=412'; put ',some_shortnum=3'; put ',some_bestnum=44;'; put '%do x=10 %to 500;'; put 'insert into &lib..mpe_x_test'; put 'set primary_key_field=10&x'; put ',some_char="&x bottles of beer on the wall"'; put ',some_dropdown=''Option 1'''; put ',some_num=ranuni(0)'; put ',some_date=round(ranuni(0)*1000,1)'; put ',some_datetime=round(ranuni(0)*50000,1)'; put ',some_time=round(ranuni(0)*100,1)'; put ',some_shortnum=round(ranuni(0)*100,1)'; put ',some_bestnum=round(ranuni(0)*100,1);'; put '%end;'; put '/* https://support.sas.com/resources/papers/proceedings/proceedings/sugi27/p056-27.pdf */'; put 'proc format library=&lib..mpe_x_catalog;'; put 'value otdate'; put '.Z = ''Some Zs'''; put '.N = ''Some 9s'''; put 'other = [date9.]'; put ';'; put 'invalue disc'; put '''ABC'' = 0.20'; put '''DEF'' = 0.25'; put '''XYZ'' = 0.00'; put 'other = 0.00'; put ';'; put 'invalue indate'; put '''00000000'' = .Z'; put '''99999999'' = .N'; put 'other = [yymmdd8.]'; put ';'; put 'value age(multilabel)'; put '20 - 29 = ''20 - 29'''; put '30 - 39 = ''30 - 39'''; put '40 - 49 = ''40 - 49'''; put '50 - 59 = ''50 - 59'''; put '60 - high = ''60 +++'''; put '20 - 35 = ''20 - 35'''; put '36 - 55 = ''36 - 55'''; put '55 - high = ''55 +++'''; put ';'; put '/* https://libguides.library.kent.edu/SAS/UserDefinedFormats */'; put 'VALUE $GENDERLABEL'; put '"M" = "Male"'; put '"F" = "Female"'; put ';'; put 'VALUE LIKERT_SEVEN'; put '1 = "Strongly Disagree"'; put '2 = "Disagree"'; put '3 = "Slightly Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5 = "Slightly Agree"'; put '6 = "Agree"'; put '7 = "Strongly Agree"'; put ';'; put 'VALUE LIKERT7_A'; put '1,2,3 = "Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5,6,7 = "Agree"'; put ';'; put 'VALUE LIKERT7_B'; put '1-3 = "Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5-7 = "Agree"'; put ';'; put 'VALUE INCOME'; put 'LOW -< 20000 = "Low"'; put '20000 -< 60000 = "Middle"'; put '60000 - HIGH = "High"'; put ';'; put 'VALUE RACE'; put '1 = "White"'; put '2 = "Black"'; put 'OTHER = "Other"'; put ';'; put 'VALUE GENDERCODE'; put '0 = ''Male'''; put '1 = ''Female'';'; put 'VALUE ATHLETECODE'; put '0 = ''Non-athlete'''; put '1 = ''Athlete'';'; put 'VALUE SMOKINGCODE'; put '0 = ''Nonsmoker'''; put '1 = ''Past smoker'''; put '2 = ''Current smoker'';'; put '/* https://documentation.sas.com/doc/en/pgmsascdc/v_017/proc/p1upn25lbfo6mkn1wncu4dyh9q91.htm */'; put 'value $state'; put '''Delaware''=''DE'''; put '''Florida''=''FL'''; put '''Ohio''=''OH'';'; put 'value MYfmt'; put '/* Format dates prior to 31DEC2011 using only a year. */'; put 'low-''31DEC2011''d=[year4.]'; put '/* Format 2012 dates using the month and year. */'; put '''01jan2012''d-''31DEC12''d=[monyy7.]'; put '/* Format dates 01JAN2013 and beyond using the day, month, and year. */'; put '''01JAN2013''d-high=[date9.]'; put '/* Catch missing values. */'; put 'other=''n/a'';'; put 'value newfmt .=''N/A'' other=[12.1];'; put '/* https://www.lexjansen.com/nesug/nesug08/cc/cc14.pdf */'; put 'value $genderml (multilabel)'; put '''1''=''Male'''; put '''2''=''Female'''; put '''1'',''2'','' ''=''Total people'';'; put 'value agemla (multilabel)'; put '1-4=''Preschool'''; put '1-18=''Children'''; put '19-120=''Adults'';'; put 'value agemlb (multilabel)'; put '19-120=''Adults'''; put '1-18=''Children'''; put '1-4=''Preschool'';'; put 'value agemlc (multilabel notsorted)'; put '19-120=''Adults'''; put '1-18=''Children'''; put '1-4=''Preschool'';'; put '%mend mpe_makedata;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mpe_makedatamodel(lib=);'; put '%if &syscc ne 0 %then %do;'; put '%put syscc=&syscc exiting &sysmacroname;'; put '%return;'; put '%end;'; put '%local notnull;'; put '%if %mf_existfeature(COLCONSTRAINTS)=1 %then %let notnull=not null;'; put '%put &=notnull;'; put 'proc sql;'; put 'create table &lib..mpe_alerts('; put 'tx_from num format=datetime19.3,'; put 'alert_event char(20),'; put 'alert_lib char(8),'; put 'alert_ds char(32),'; put 'alert_user char(100) ,'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_alerts;'; put 'index create'; put 'pk_mpealerts=(tx_from alert_event alert_lib alert_ds alert_user)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_audit('; put 'load_ref char(36) label=''unique load reference'','; put 'libref char(8) label=''Library Reference (8 chars)'','; put 'dsn char(32) label=''Dataset Name (32 chars)'','; put 'key_hash char(32) label='; put '''MD5 Hash of primary key values (pipe seperated)'','; put 'tgtvar_nm char(32) label=''Target variable name (32 chars)'','; put 'move_type char(1) label=''Either (A)ppended, (D)eleted or (M)odified'','; put 'processed_dttm num format=E8601DT26.6 label=''Processed at timestamp'','; put 'is_pk num label=''Is Primary Key Field? (1/0)'','; put 'is_diff num label='; put '''Did value change? (1/0/-1). Always -1 for appends and deletes.'','; put 'tgtvar_type char(1) label=''Either (C)haracter or (N)umeric'','; put 'oldval_num num format=best32. label=''Old (numeric) value'','; put 'newval_num num format=best32. label=''New (numeric) value'','; put 'oldval_char char(32765) label=''Old (character) value'','; put 'newval_char char(32765) label=''New (character) value'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_audit;'; put 'index create'; put 'pk_mpe_audit=(load_ref libref dsn key_hash tgtvar_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_column_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'CLS_SCOPE char(4) ¬null,'; put 'CLS_GROUP char(64) ¬null,'; put 'CLS_LIBREF char(8) ¬null,'; put 'CLS_TABLE char(32) ¬null,'; put 'CLS_VARIABLE_NM char(32) ¬null,'; put 'CLS_ACTIVE num ¬null,'; put 'CLS_HIDE num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_column_level_security;'; put 'index create'; put 'pk_mpe_column_level_security='; put '(tx_to CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_config('; put 'tx_from num ¬null format=datetime19.3'; put ',tx_to num ¬null format=datetime19.3'; put ',var_scope varchar(10) ¬null'; put ',var_name varchar(32) ¬null'; put ',var_value varchar(5000)'; put ',var_active num'; put ',var_desc varchar(300)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_config;'; put 'index create'; put 'pk_mpe_config=(tx_to var_scope var_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Ref'','; put 'engine char(32) label=''Library Engine'','; put 'libname char(256) format=$256. label=''Library Name'','; put 'paths char(8192) label=''Library Paths'','; put 'perms char(500) label=''Library Permissions (if BASE)'','; put 'owners char(500) label=''Library Owners (if BASE)'','; put 'schemas char(500) label=''Library Schemas (if DB)'','; put 'libid char(17) label=''LibraryId'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_libs;'; put 'index create'; put 'pk_mpe_datacatalog_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_TABS('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'memtype char(8) label=''Member Type'','; put 'dbms_memtype char(32) label=''DBMS Member Type'','; put 'memlabel char(512) label=''Data Set Label'','; put 'typemem char(8) label=''Data Set Type'','; put 'nvar num label=''Number of Variables'','; put 'compress char(8) label=''Compression Routine'','; put 'pk_fields char(512)'; put 'label=''Primary Key Fields (identified by being in a constraint that is both Unique and Not Null)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_TABS;'; put 'index create'; put 'pk_mpe_datacatalog_TABS=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datacatalog_vars('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Table Name'','; put 'name char(64) label=''Column Name'','; put 'memtype char(8) label=''Member Type'','; put 'type char(16) label=''Column Type'','; put 'length num label=''Column Length'','; put 'varnum num label=''Column Number in Table'','; put 'label char(512) label=''Column Label'','; put 'format char(49) label=''Column Format'','; put 'idxusage char(9) label=''Column Index Type'','; put 'notnull char(3) label=''Not NULL?'','; put 'pk_ind num label=''Primary Key Indicator (1=Primary Key field)'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datacatalog_vars;'; put 'index create'; put 'pk_mpe_datacatalog_vars=(libref dsn name tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_libs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'libsize num format=SIZEKMG. label=''Size of library'','; put 'table_cnt num label=''Number of Tables'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_libs;'; put 'index create'; put 'pk_mpe_datastatus_libs=(libref tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datastatus_tabs('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'libref char(8) label=''Library Name'','; put 'dsn char(64) label=''Member Name'','; put 'filesize num format=SIZEKMG. label=''Size of file'','; put 'crdate num format=DATETIME. informat=DATETIME. label=''Date Created'','; put 'modate num format=DATETIME. informat=DATETIME. label=''Date Modified'','; put 'nobs num label=''Number of Physical (Actual, inc. deleted) Observations'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datastatus_tabs;'; put 'index create'; put 'pk_mpe_datastatus_tabs=(libref dsn tx_to)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_datadictionary'; put '('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'TX_TO num ¬null format=datetime19.3,'; put 'DD_TYPE char(16),'; put 'DD_SOURCE char(1024),'; put 'DD_SHORTDESC char(256),'; put 'DD_LONGDESC char(32767),'; put 'DD_OWNER char(128),'; put 'DD_RESPONSIBLE char(128),'; put 'DD_SENSITIVITY char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_datadictionary;'; put 'index create'; put 'pk_mpe_datadictionary=(tx_to dd_type dd_source)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_dataloads('; put 'libref varchar(8) ¬null,'; put 'dsn varchar(32) ¬null,'; put 'etlsource varchar(100) ¬null,'; put 'loadtype varchar(20) ¬null,'; put 'changed_records int,'; put 'new_records int,'; put 'deleted_records int,'; put 'duration num,'; put 'user_nm varchar(50) ¬null,'; put 'processed_dttm num format=datetime19.3,'; put 'mac_ver varchar(5)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_dataloads;'; put 'index create'; put 'pk_mpe_dataloads=(processed_dttm libref dsn etlsource)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_emails('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'user_name char(50) ¬null,'; put 'user_displayname char(100),'; put 'user_email char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_emails;'; put 'index create'; put 'pk_mpe_emails=(tx_to user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_excel_config('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'xl_libref char(8),'; put 'xl_table char(32),'; put 'xl_column char(32),'; put 'xl_rule char(32),'; put 'xl_active num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_excel_config;'; put 'index create'; put 'pk_mpe_excel_config=(tx_to xl_libref xl_table xl_column)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filteranytable('; put 'filter_rk num ¬null,'; put 'filter_hash char(32) ¬null,'; put 'filter_table char(41) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filteranytable;'; put 'index create filter_rk /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_filtersource('; put 'filter_hash char(32) ¬null,'; put 'filter_line num ¬null,'; put 'group_logic char(3) ¬null,'; put 'subgroup_logic char(3) ¬null,'; put 'subgroup_id num ¬null,'; put 'variable_nm varchar(32) ¬null,'; put 'operator_nm varchar(12) ¬null,'; put 'raw_value varchar(4000) ¬null,'; put 'processed_dttm num ¬null format=datetime19.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_filtersource;'; put 'index create'; put 'pk_mpe_filtersource=(filter_hash filter_line)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_groups('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'group_name char(100) ¬null,'; put 'user_name char(50) ¬null,'; put 'group_desc char(256)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_groups;'; put 'index create'; put 'pk_mpe_groups=(tx_to group_name user_name)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lineage_cols'; put '('; put 'col_id char(32),'; put 'direction char(1),'; put 'sourcecoluri char(256),'; put 'map_type char(256),'; put 'map_transform char(256),'; put 'jobname char(256),'; put 'sourcetablename char(256),'; put 'sourcecolname char(256),'; put 'targettablename char(256),'; put 'targetcolname char(256),'; put 'targetcoluri char(256),'; put 'Derived_Rule char(500),'; put 'level int,'; put 'modified_dttm num format=datetime19.3,'; put 'modified_by char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_cols;'; put 'index create'; put 'pk_mpe_lineage_cols=(col_id direction sourcecoluri targetcoluri map_type map_transform)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..MPE_LINEAGE_TABS'; put '('; put 'tx_from num ¬null format=datetime19.3,'; put 'jobid char(17),'; put 'srctableid char(17),'; put 'tgttableid char(17),'; put 'jobname char(128),'; put 'srctabletype char(16),'; put 'srctablename char(64),'; put 'srclibref char(8),'; put 'tgttabletype char(16),'; put 'tgttablename char(64),'; put 'tgtlibref char(8),'; put 'tx_to num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lineage_tabs;'; put 'index create'; put 'pk_mpe_lineage_tabs=(tx_to jobid srctableid tgttableid)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_loads('; put 'csv_dir char(255),'; put 'user_nm char(50) ,'; put 'status char(15) ,'; put 'duration num ,'; put 'processed_dttm num format=datetime19.3,'; put 'reason_txt char(2048) ,'; put 'approvals char(64)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_loads;'; put 'index create csv_dir /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_lockanytable('; put 'lock_lib varchar(8) ¬null ,'; put 'lock_ds varchar(32) ¬null,'; put 'lock_status_cd varchar(10) ¬null,'; put 'lock_user_nm varchar(100) ¬null ,'; put 'lock_ref varchar(200),'; put 'lock_pid varchar(10),'; put 'lock_start_dttm num format=E8601DT26.6,'; put 'lock_end_dttm num format=E8601DT26.6'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_lockanytable;'; put 'index create'; put 'pk_mpe_lockanytable=(lock_lib lock_ds)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_maxkeyvalues('; put 'keytable varchar(41) label=''Base table in libref.dataset format'','; put 'keycolumn char(32) format=$32.'; put 'label=''The Surrogate / Retained key field containing the key values.'','; put 'max_key num label='; put '''Integer value representing current max RK or SK value in the KEYTABLE'','; put 'processed_dttm num format=E8601DT26.6'; put 'label=''Datetime this value was last updated'''; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_maxkeyvalues;'; put 'index create keytable /nomiss unique;'; put 'quit;'; put '/* no PK defined as it is a transaction table */'; put 'proc sql;'; put 'create table &lib..mpe_requests('; put 'request_dttm num ¬null format=datetime19.,'; put 'request_user char(64) ¬null,'; put 'request_service char(64) ¬null,'; put 'request_params char(128)'; put ');'; put 'proc sql;'; put 'create table &lib..mpe_review('; put 'table_id varchar(32) ¬null,'; put 'reviewed_by_nm varchar(100) ¬null,'; put 'base_table varchar(41) ¬null,'; put 'review_status_id varchar(10) ¬null,'; put 'reviewed_on_dttm num ¬null format=datetime19.3,'; put 'review_reason_txt varchar(400)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_review;'; put 'index create'; put 'pk_mpe_review=(table_id reviewed_by_nm)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_row_level_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'RLS_RK num ¬null,'; put 'RLS_SCOPE char(8) ¬null,'; put 'RLS_GROUP char(128) ¬null,'; put 'RLS_LIBREF char(8) ¬null,'; put 'RLS_TABLE char(32) ¬null,'; put 'RLS_GROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_LOGIC char(3) ¬null,'; put 'RLS_SUBGROUP_ID num ¬null,'; put 'RLS_VARIABLE_NM varchar(32) ¬null,'; put 'RLS_OPERATOR_NM varchar(12) ¬null,'; put 'RLS_RAW_VALUE varchar(4000) ¬null,'; put 'RLS_ACTIVE num ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_row_level_security;'; put 'index create'; put 'pk_mpe_row_level_security=(tx_to RLS_RK)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_security('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'libref char(8) ¬null,'; put 'dsn char(32) ¬null,'; put 'access_level char(10) ¬null,'; put 'sas_group char(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_security;'; put 'index create'; put 'pk_mpe_security=(tx_to libref dsn access_level sas_group)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_selectbox('; put 'ver_from_dttm num ¬null format=datetime19.3,/* timestamp for versioning*/'; put 'ver_to_dttm num ¬null format=datetime19.3, /* timestamp for versioning */'; put 'selectbox_rk num ¬null, /* surrogate key */'; put 'select_lib varchar(17) ¬null, /* libref (big enough for uri)*/'; put 'select_ds varchar(32) ¬null,'; put 'base_column varchar(36) ¬null, /* variable name against which to apply selectbox */'; put 'selectbox_value varchar(500) ¬null, /* selectbox value */'; put 'selectbox_order num , /* optional ordering (1 comes before 2) */'; put 'selectbox_type varchar(32) /* column type (blank for default, else'; put 'sas or js to indicate relevant system functions)*/'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_selectbox;'; put 'index create'; put 'pk_mpe_selectbox=(ver_to_dttm selectbox_rk)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_signoffs('; put 'tech_from_dttm num ¬null format=datetime19.3,'; put 'tech_to_dttm num ¬null format=datetime19.3,'; put 'signoff_table varchar(50) ¬null,'; put 'signoff_section_rk num ¬null,'; put 'signoff_version_rk num ¬null,'; put 'signoff_name varchar(100) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_signoffs;'; put 'index create'; put 'pk_mpe_signoffs=(tech_to_dttm signoff_table signoff_section_rk)'; put '/nomiss unique;'; put 'quit;'; put '/* mpe_submit */'; put 'proc sql;'; put 'create table &lib..mpe_submit('; put 'table_id varchar(32) ¬null,'; put 'submit_status_cd varchar(10) ¬null,'; put 'base_lib char(8) ¬null,'; put 'base_ds char(32) ¬null,'; put 'submitted_by_nm varchar(100) ¬null,'; put 'submitted_on_dttm num ¬null format=datetime19.3,'; put 'submitted_reason_txt varchar(400),'; put 'input_obs num,'; put 'input_vars num,'; put 'num_of_approvals_required num ¬null ,'; put 'num_of_approvals_remaining num ¬null ,'; put 'reviewed_by_nm char(100),'; put 'reviewed_on_dttm num'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_submit;'; put 'index create table_id /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_tables('; put 'tx_from num ¬null format=datetime19.3,'; put 'tx_to num ¬null format=datetime19.3,'; put 'libref char(8) ¬null,'; put 'dsn char(32) ¬null,'; put 'num_of_approvals_required int,'; put 'loadtype char(12) ,'; put 'buskey char(1000) ,'; put 'var_txfrom char(32) ,'; put 'var_txto char(32) ,'; put 'var_busfrom char(32) ,'; put 'var_busto char(32) ,'; put 'var_processed char(32) ,'; put 'close_vars varchar(500),'; put 'pre_edit_hook char(200),'; put 'post_edit_hook char(200),'; put 'pre_approve_hook char(200) ,'; put 'post_approve_hook char(200) ,'; put 'signoff_cols varchar(500),'; put 'signoff_hook varchar(200),'; put 'notes char(1000) ,'; put 'rk_underlying char(1000) ,'; put 'audit_libds char(41)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_tables;'; put 'index create'; put 'pk_mpe_tables=(tx_to libref dsn)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_users('; put 'user_id char(50) ¬null,'; put 'last_seen_dt num ¬null format=date9.,'; put 'registered_dt num ¬null format=date9.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_users;'; put 'index create user_id /nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..MPE_VALIDATIONS'; put '('; put 'TX_FROM num ¬null format=datetime19.3,'; put 'BASE_LIB varchar(8),'; put 'BASE_DS varchar(32),'; put 'BASE_COL varchar(32),'; put 'RULE_TYPE varchar(32),'; put 'RULE_VALUE varchar(128),'; put 'RULE_ACTIVE num ,'; put 'TX_TO num ¬null format=datetime19.3'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_validations;'; put 'index create'; put 'pk_mpe_validations=(tx_from base_lib base_ds base_col rule_type)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_x_test('; put 'primary_key_field num ¬null,'; put 'some_char char(32767) ,'; put 'some_dropdown char(128),'; put 'some_num num ,'; put 'some_date num format=date9.,'; put 'some_datetime num format=datetime19. informat=ANYDTDTM19.,'; put 'some_time num format=time8.,'; put 'some_shortnum num length=4,'; put 'some_bestnum num format=best.'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_x_test;'; put 'index create primary_key_field /nomiss unique;'; put 'quit;'; put '%mend mpe_makedatamodel;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mm_createdocument('; put 'tree=/User Folders/sasdemo'; put ',name=myNote'; put ',desc=Created by &sysmacroname'; put ',textrole='; put ',frefin=mm_in'; put ',frefout=mm_out'; put ',mDebug=1'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%mp_abort(iftrue= (%mf_verifymacvars(tree name)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: tree name)'; put ')'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue= (&type ne Tree)'; put ',mac=mm_createdocument.sas'; put ',msg=Tree &tree does not exist!'; put ')'; put '/**'; put '* Check object does not exist already'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&name","Note",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''docuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &type = Document %then %do;'; put '%put Document &name already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Now we can create the document'; put '*/'; put 'filename &frefin temp;'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'name=quote("&name");'; put 'desc=quote("&desc");'; put 'textrole=quote("&textrole");'; put 'treeuri=quote("&treeuri");'; put 'put "$METAREPOSITORY"/'; put '''"/'; put '" "/'; put ''' '' /'; put '''''/'; put '/*URI="Document for public note" */'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout verbose;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%mend mm_createdocument;'; put '%macro mm_createfolder(path=,mDebug=0);'; put '%put &sysmacroname: execution started for &path;'; put '%local dbg errorcheck;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%local parentFolderObjId child errorcheck paths;'; put '%let paths=0;'; put '%let errorcheck=1;'; put '%if &syscc ge 4 %then %do;'; put '%put SYSCC=&syscc - this macro requires a clean session;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'length objId parentId objType parent child $200'; put 'folderPath $1000;'; put 'call missing (of _all_);'; put 'folderPath = "%trim(&path)";'; put '* remove any trailing slash ;'; put 'if ( substr(folderPath,length(folderPath),1) = ''/'' ) then'; put 'folderPath=substr(folderPath,1,length(folderPath)-1);'; put '* name must not be blank;'; put 'if ( folderPath = '''' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank";'; put 'end;'; put '* must have a starting slash ;'; put 'if ( substr(folderPath,1,1) ne ''/'' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash";'; put 'stop;'; put 'end;'; put '* check if folder already exists ;'; put 'rc=metadata_pathobj('''',cats(folderPath,"(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'put "NOTE: Folder " folderPath " already exists!";'; put 'stop;'; put 'end;'; put '* do not create a root (one level) folder ;'; put 'if countc(folderPath,''/'')=1 then do;'; put 'put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder";'; put 'stop;'; put 'end;'; put '* check that root folder exists ;'; put 'root=cats(''/'',scan(folderpath,1,''/''),"(Folder)");'; put 'if metadata_pathobj('''',root,"",objType,parentId)<1 then do;'; put 'put "%str(ERR)OR: " root " does not exist!";'; put 'stop;'; put 'end;'; put '* check that parent folder exists ;'; put 'child=scan(folderPath,-1,''/'');'; put 'parent=substr(folderpath,1,length(folderpath)-length(child)-1);'; put 'rc=metadata_pathobj('''',cats(parent,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'putlog ''The following folders will be created:'';'; put '/* folder does not exist - so start from top and work down */'; put 'length newpath $1000;'; put 'paths=0;'; put 'do x=2 to countw(folderpath,''/'');'; put 'newpath='''';'; put 'do i=1 to x;'; put 'newpath=cats(newpath,''/'',scan(folderpath,i,''/''));'; put 'end;'; put 'rc=metadata_pathobj('''',cats(newpath,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'paths+1;'; put 'call symputx(cats(''path'',paths),newpath);'; put 'putlog newpath;'; put 'end;'; put 'call symputx(''paths'',paths);'; put 'end;'; put 'end;'; put 'else putlog "parent " parent " exists";'; put 'call symputx(''parentFolderObjId'',parentId,''l'');'; put 'call symputx(''child'',child,''l'');'; put 'call symputx(''errorcheck'',0,''l'');'; put '&dbg put (_all_)(=);'; put 'run;'; put '%if &errorcheck=1 or &syscc ge 4 %then %return;'; put '%if &paths>0 %then %do x=1 %to &paths;'; put '%put executing recursive call for &&path&x;'; put '%mm_createfolder(path=&&path&x)'; put '%end;'; put '%else %do;'; put 'filename __newdir temp;'; put 'options noquotelenmax;'; put '%local inmeta;'; put '%put creating: &path;'; put '%let inmeta=$METAREPOSITORY'; put ''; put 'SAS268435456'; put ';'; put 'proc metadata in="&inmeta" out=__newdir verbose;'; put 'run ;'; put '/* check it was successful */'; put 'data _null_;'; put 'length objId parentId objType parent child $200 ;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj('''',cats("&path","(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'putlog "SUCCCESS! &path created.";'; put 'end;'; put 'else do;'; put 'putlog "%str(ERR)OR: unsuccessful attempt to create &path";'; put 'call symputx(''syscc'',8);'; put 'end;'; put 'run;'; put '/* write the response to the log for debugging */'; put '%if &mDebug ne 0 %then %do;'; put 'data _null_;'; put 'infile __newdir lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'filename __newdir clear;'; put '%end;'; put '%put &sysmacroname: execution finished for &path;'; put '%mend mm_createfolder;'; put '%macro mm_createlibrary('; put 'libname=My New Library'; put ',libref=mynewlib'; put ',libdesc=Created automatically using the mm_createlibrary macro'; put ',engine=BASE'; put ',tree=/User Folders/sasdemo'; put ',servercontext=SASApp'; put ',directory=/tmp/somelib'; put ',IsPreassigned=0'; put ',mDebug=0'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%let libref=%upcase(&libref);'; put '/**'; put '* Check Library does not exist already with this libname'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Name=''&libname''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libname (&libname);'; put '%return;'; put '%end;'; put '/**'; put '* Check Library does not exist already with this libref'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Libref=''&libref''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libref (&libref) ;'; put '%return;'; put '%end;'; put '/**'; put '* Attempt to create tree'; put '*/'; put '%mm_createfolder(path=&tree)'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Create filerefs for proc metadata call'; put '*/'; put 'filename &frefin temp;'; put 'filename &frefout temp;'; put '%mp_abort(iftrue= ('; put '&engine=BASE & %mf_verifymacvars(libname libref engine servercontext tree)=0'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: libname libref engine servercontext tree)'; put ')'; put '%if &engine=BASE %then %do;'; put '/**'; put '* Check that the ServerContext exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:ServerContext?@Name=''&ServerContext''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''serveruri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne ServerContext %then %do;'; put '%put %str(ERR)OR: ServerContext (&ServerContext) does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Get prototype info'; put '*/'; put 'data _null_;'; put 'length type uri str $256;'; put 'str="omsobj:Prototype?@Name=''Library.SAS.Prototype.Name.xmlKey.txt''";'; put 'rc=metadata_resolve(str,type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''prototypeuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Prototype %then %do;'; put '%put %str(ERR)OR: Prototype Library.SAS.Prototype.Name.xmlKey.txt not found;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Physical location exists'; put '*/'; put '%if %sysfunc(fileexist(&directory))=0 %then %do;'; put '%put %str(ERR)OR: Physical directory (&directory) does not appear to exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Directory Object exists in metadata'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Directory %then %do;'; put '%put NOTE: Directory object does not exist for (&directory) location;'; put '%put NOTE: It will now be created;'; put 'data _null_;'; put 'file &frefin;'; put 'directory=quote(symget(''directory''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input; put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure directory (&directory) object was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype2'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &checktype2 ne Directory %then %do;'; put '%put %str(ERR)OR: Directory (&directory) object was NOT created!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Directory (&directoryuri) successfully created!;'; put '%end;'; put '/**'; put '* check SAS version'; put '*/'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: Version 9.3 or later required;'; put '%return;'; put '%end;'; put '/**'; put '* Prepare the XML and create the library'; put '*/'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'directoryuri=quote(symget(''directoryuri''));'; put 'libname=quote(symget(''libname''));'; put 'libref=quote(symget(''libref''));'; put 'IsPreassigned=quote(symget(''IsPreassigned''));'; put 'prototypeuri=quote(symget(''prototypeuri''));'; put '/* escape description so it can be stored as XML */'; put 'libdesc=tranwrd(symget(''libdesc''),''&'',''&'');'; put 'libdesc=tranwrd(libdesc,''<'',''<'');'; put 'libdesc=tranwrd(libdesc,''>'',''>'');'; put 'libdesc=tranwrd(libdesc,"''",''''');'; put 'libdesc=tranwrd(libdesc,''"'',''"'');'; put 'libdesc=tranwrd(libdesc,''0A''x,'' '');'; put 'libdesc=tranwrd(libdesc,''0D''x,'' '');'; put 'libdesc=tranwrd(libdesc,''$'',''$'');'; put 'libdesc=quote(trim(libdesc));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put ''' ''/'; put ''' "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '" "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '''SAS''/'; put '''268435456'';'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose ;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure library (&libname) was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&libname","Library",type,uri);'; put 'call symputx(''libtype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &libtype ne SASLibrary %then %do;'; put '%put %str(ERR)OR: Could not find (&libname) at (&tree)!!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Library (&libname) successfully created in (&tree)!;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Other library engine types are not yet supported!!;'; put '%end;'; put '/**'; put '* Wrap up'; put '*/'; put '%if &mdebug ne 1 %then %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_createlibrary;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mm_getDirectories('; put 'path='; put ',outds=work.mm_getDirectories'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getDirectories.sas;'; put '%&mD.put _local_;'; put 'data &outds (keep=directoryuri name directoryname directorydesc );'; put 'length directoryuri name directoryname directorydesc $256;'; put 'call missing(of _all_);'; put '__i+1;'; put '%if %length(&path)=0 %then %do;'; put 'do while'; put '(metadata_getnobj("omsobj:Directory?@Id contains ''.''",__i,directoryuri)>0);'; put '%end; %else %do;'; put 'do while('; put 'metadata_getnobj("omsobj:Directory?@DirectoryName=''&path''",__i,directoryuri)'; put '>0'; put ');'; put '%end;'; put '__rc1=metadata_getattr(directoryuri, "Name", name);'; put '__rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);'; put '__rc3=metadata_getattr(directoryuri, "Desc", directorydesc);'; put '&mD.putlog (_all_) (=);'; put 'drop __:;'; put '__i+1;'; put 'if sum(of __rc1-__rc3)=0 then output;'; put 'end;'; put 'run;'; put '%mend mm_getDirectories;'; put '%macro mm_updatestpsourcecode(stp='; put ',stpcode='; put ',minify=NO'; put ',mdebug=0'; put ');'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&stp.(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '%if &mdebug=1 %then %do;'; put 'put tsuri= value=;'; put '%end;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%if &tsuri=stopifempty %then %do;'; put '%put %str(WARN)ING: &stp.(StoredProcess) not found!;'; put '%return;'; put '%end;'; put '%if %length(&stpcode)<2 %then %do;'; put '%put %str(WARN)ING: No SAS code supplied!!;'; put '%return;'; put '%end;'; put '%local frefin frefout;'; put '%let frefin=%mf_getuniquefileref();'; put '%let frefout=%mf_getuniquefileref();'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'put "$METAREPOSITORY'; put '2 %then %do;'; put 'data _null_;'; put 'file &frefin lrecl=32767 mod;'; put 'infile &stpcode lrecl=32767;'; put 'length outstr $32767;'; put 'input outstr ;'; put '/* escape code so it can be stored as XML */'; put 'outstr=tranwrd(_infile_,''&'',''&'');'; put 'outstr=tranwrd(outstr,''<'',''<'');'; put 'outstr=tranwrd(outstr,''>'',''>'');'; put 'outstr=tranwrd(outstr,"''",''''');'; put 'outstr=tranwrd(outstr,''"'',''"'');'; put 'outstr=tranwrd(outstr,''0A''x,'' '');'; put 'outstr=tranwrd(outstr,''0D''x,'' '');'; put 'outstr=tranwrd(outstr,''$'',''$'');'; put '%if &minify=YES %then %do;'; put 'outstr=cats(outstr);'; put 'if outstr ne '''';'; put 'if not (outstr=:''/*'' and subpad(left(reverse(outstr)),1,2)=''/*'');'; put '%end;'; put 'outstr=trim(outstr);'; put 'put outstr '' '';'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &frefin mod;'; put 'put "''>SAS268435456'; put '";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_updatestpsourcecode;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro mm_getservercontexts('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* first get list of available repos */'; put '%mm_getrepos(outds=work.repos)'; put '%let repocnt=0;'; put 'data _null_;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put 'filename __mc1 temp;'; put 'filename __mc2 temp;'; put 'data &outds;'; put 'length serveruri servername $200;'; put 'call missing (of _all_);'; put 'stop;'; put 'run;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'ServerContextSAS'; put '0"'; put 'out=__mc1;'; put 'run;'; put '/*'; put 'data _null_;'; put 'infile __mc1 lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put 'data _null_;'; put 'file __mc2;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;'; put 'proc append base=&outds data=__mc3.SASContexts;run;'; put 'libname __mc3 clear;'; put '%end;'; put 'options metarepository=&repo;'; put 'filename __mc1 clear;'; put 'filename __mc2 clear;'; put '%mend mm_getservercontexts;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mm_createstp('; put 'stpname=Macro People STP'; put ',stpdesc=This stp was created automatically by the mm_createstp macro'; put ',filename=mm_createstp.sas'; put ',directory=SASEnvironment/SASCode'; put ',tree=/User Folders/sasdemo'; put ',package=false'; put ',streaming=true'; put ',outds=work.mm_createstp'; put ',mDebug=0'; put ',server=SASApp'; put ',stptype=1'; put ',minify=NO'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_CreateSTP.sas;'; put '%&mD.put _local_;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(stpname filename directory tree)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: stpname filename directory tree)'; put ')'; put '%mp_dropmembers(%scan(&outds,2,.))'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check STP does not exist already'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&stpname",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype = ClassifierMap %then %do;'; put '%put %str(WARN)ING: Stored Process &stpname already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that the physical file exists'; put '*/'; put '%if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do;'; put '%put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!;'; put '%return;'; put '%end;'; put '%if &stptype=1 %then %do;'; put '/* type 1 STP - where code is stored on filesystem */'; put '%if %sysevalf(&sysver lt 9.2) %then %do;'; put '%put %str(WARN)ING: Version 9.2 or later required;'; put '%return;'; put '%end;'; put '/* check directory object (where 9.2 source code reference is stored) */'; put 'data _null_;'; put 'length id $20 dirtype $256;'; put 'rc=metadata_resolve("&directory",dirtype,id);'; put 'call symputx(''checkdirtype'',dirtype,''l'');'; put 'run;'; put '%if &checkdirtype ne Directory %then %do;'; put '%mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug)'; put '%if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do;'; put '%put %str(WARN)ING: The directory object does not exist for &directory;'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'directoryuri="&directory";'; put 'run;'; put '%end;'; put 'data &outds (keep=stpuri prompturi fileuri texturi);'; put 'length stpuri prompturi fileuri texturi serveruri $256 ;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &outds;'; put '/* final checks on uris */'; put 'length id $20 type $256;'; put '__rc=metadata_resolve("&treeuri",type,id);'; put 'if type ne ''Tree'' then do;'; put 'putlog "%str(WARN)ING: Invalid tree URI: &treeuri";'; put 'stopme=1;'; put 'end;'; put '__rc=metadata_resolve(directoryuri,type,id);'; put 'if type ne ''Directory'' then do;'; put 'putlog "%str(WARN)ING: Invalid directory URI: " directoryuri;'; put 'stopme=1;'; put 'end;'; put '/* get server info */'; put '__rc=metadata_resolve("&server",type,serveruri);'; put 'if type ne ''LogicalServer'' then do;'; put '__rc=metadata_getnobj("omsobj:LogicalServer?@Name=''&server''",1,serveruri);'; put 'if serveruri='''' then do;'; put 'putlog "%str(WARN)ING: Invalid server: &server";'; put 'stopme=1;'; put 'end;'; put 'end;'; put 'if stopme=1 then do;'; put 'putlog (_all_)(=);'; put 'stop;'; put 'end;'; put '/* create empty prompt */'; put 'rc1=METADATA_NEWOBJ(''PromptGroup'',prompturi,''Parameters'');'; put 'rc2=METADATA_SETATTR(prompturi, ''UsageVersion'', ''1000000'');'; put 'rc3=METADATA_SETATTR(prompturi, ''GroupType'',''2'');'; put 'rc4=METADATA_SETATTR(prompturi, ''Name'',''Parameters'');'; put 'rc5=METADATA_SETATTR(prompturi, ''PublicType'',''Embedded:PromptGroup'');'; put 'GroupInfo='; put '"";'; put 'rc6 = METADATA_SETATTR(prompturi, ''GroupInfo'',groupinfo);'; put 'if sum(of rc1-rc6) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating prompt.";'; put 'if prompturi ne . then do;'; put 'putlog '' Removing orphan: '' prompturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'put rc=;'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a file uri */'; put 'rc7=METADATA_NEWOBJ(''File'',fileuri,''SP Source File'');'; put 'rc8=METADATA_SETATTR(fileuri, ''FileName'',"&filename");'; put 'rc9=METADATA_SETATTR(fileuri, ''IsARelativeName'',''1'');'; put 'rc10=METADATA_SETASSN(fileuri, ''Directories'',''MODIFY'',directoryuri);'; put 'if sum(of rc7-rc10) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating file.";'; put 'if fileuri ne . then do;'; put 'putlog '' Removing orphans:'' prompturi fileuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a TextStore object */'; put 'rc11= METADATA_NEWOBJ(''TextStore'',texturi,''Stored Process'');'; put 'rc12= METADATA_SETATTR(texturi, ''TextRole'',''StoredProcessConfiguration'');'; put 'rc13= METADATA_SETATTR(texturi, ''TextType'',''XML'');'; put 'storedtext='''''; put '!!""'; put '!!"";'; put 'rc14= METADATA_SETATTR(texturi, ''StoredText'',storedtext);'; put 'if sum(of rc11-rc14) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating TextStore.";'; put 'if texturi ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create meta obj */'; put 'rc15= METADATA_NEWOBJ(''ClassifierMap'',stpuri,"&stpname");'; put 'rc16= METADATA_SETASSN(stpuri, ''Trees'',''MODIFY'',treeuri);'; put 'rc17= METADATA_SETASSN(stpuri, ''ComputeLocations'',''MODIFY'',serveruri);'; put 'rc18= METADATA_SETASSN(stpuri, ''SourceCode'',''MODIFY'',fileuri);'; put 'rc19= METADATA_SETASSN(stpuri, ''Prompts'',''MODIFY'',prompturi);'; put 'rc20= METADATA_SETASSN(stpuri, ''Notes'',''MODIFY'',texturi);'; put 'rc21= METADATA_SETATTR(stpuri, ''PublicType'', ''StoredProcess'');'; put 'rc22= METADATA_SETATTR(stpuri, ''TransformRole'', ''StoredProcess'');'; put 'rc23= METADATA_SETATTR(stpuri, ''UsageVersion'', ''1000000'');'; put 'rc24= METADATA_SETATTR(stpuri, ''Desc'', "&stpdesc");'; put '/* tidy up if err */'; put 'if sum(of rc15-rc24) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating STP.";'; put 'if stpuri ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi stpuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'rc = METADATA_DELOBJ(stpuri);'; put 'put (_all_)(=);'; put 'end;'; put 'end;'; put 'else do;'; put 'fullpath=cats(''_program='',treepath,"/&stpname");'; put 'putlog "NOTE: Stored Process Created!";'; put 'putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath;'; put 'putlog "NOTE- "; putlog "NOTE-";'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%else %if &stptype=2 %then %do;'; put '/* type 2 stp - code is stored in metadata */'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs;'; put '%return;'; put '%end;'; put '/* check we have the correct ServerContext */'; put '%mm_getservercontexts(outds=contexts)'; put '%local serveruri; %let serveruri=NOTFOUND;'; put 'data _null_;'; put 'set contexts;'; put 'where upcase(servername)="%upcase(&server)";'; put 'call symputx(''serveruri'',serveruri);'; put 'run;'; put '%if &serveruri=NOTFOUND %then %do;'; put '%put %str(WARN)ING: ServerContext *&server* not found!;'; put '%return;'; put '%end;'; put '/**'; put '* First, create a Hello World type 2 stored process'; put '*/'; put 'filename &frefin temp;'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'stpdesc=quote(symget(''stpdesc''));'; put 'stpname=quote(symget(''stpname''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '" "/'; put '" "/'; put '" "/'; put '" "/'; put ''' ''/'; put ''' '' /'; put '" "/'; put '" "/'; put ''' ''/'; put '" "/'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout ;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/**'; put '* Next, add the source code'; put '*/'; put '%mm_updatestpsourcecode(stp=&tree/&stpname'; put ',stpcode="&directory/&filename"'; put ',mdebug=&mdebug'; put ',minify=&minify)'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: STPTYPE=*&stptype* not recognised!;'; put '%end;'; put '%mend mm_createstp;'; put '%macro mm_deletedocument('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check document exist'; put '*/'; put '%local type;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &type ne Document %then %do;'; put '%put %str(WARN)ING: No Document found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = Document %then %do;'; put '%put %str(ERR)OR: Document not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletedocument;'; put '%macro mm_deletestp('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check STP does exist'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype ne ClassifierMap %then %do;'; put '%put NOTE: No Stored Process found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = ClassifierMap %then %do;'; put '%put %str(ERR)OR: STP not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletestp;'; put '%macro mm_getstpinfo(pgm'; put ',outds=work.mm_getstpinfo'; put ',mDebug=0'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put 'data &outds;'; put 'length type stp_uri tsuri servercontext value $200'; put 'StoredProcessConfiguration $1000 sourcecode_first32k $32767;'; put 'keep path stp_uri sourcecode_first32k StoredProcessConfiguration'; put 'servercontext;'; put 'call missing (of _all_);'; put 'path="&pgm(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,stp_uri)>0 then do;'; put '/* get attributes */'; put 'cnt=1;'; put 'do while (metadata_getnasn(stp_uri,"Notes",cnt,tsuri)>0);'; put 'rc1=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put 'rc2=metadata_getattr(tsuri,"StoredText",sourcecode_first32k);'; put 'end;'; put 'else if value="Stored Process" then do;'; put 'rc3=metadata_getattr(tsuri,"StoredText",StoredProcessConfiguration);'; put 'end;'; put 'cnt+1;'; put 'end;'; put '/* get context (should only be one) */'; put 'rc4=metadata_getnasn(stp_uri,"ComputeLocations",1,tsuri);'; put 'rc5=metadata_getattr(tsuri,"Name",servercontext);'; put 'end;'; put 'else do;'; put 'put "%str(ERR)OR: could not find " path;'; put 'put (_all_)(=);'; put 'end;'; put '&md.put (_all_)(=);'; put 'run;'; put '%mend mm_getstpinfo ;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief service for creating the configuration tables in DEMO mode.'; put '@details'; put 'STP for creating the configuration tables in DEMO mode.'; put 'It also adds the STAGING directory as subdirectory to the BASE'; put 'library location.'; put 'Note - the CURLIB var is added during the build process.'; put '@warning This STP self destructs! It will delete itself after a successful run'; put 'to avoid being executed twice (and overwriting actual data)'; put '

SAS Macros

'; put '@li mf_getapploc.sas'; put '@li mf_getuser.sas'; put '@li mf_mkdir.sas'; put '@li mm_createdocument.sas'; put '@li mm_createlibrary.sas'; put '@li mm_createstp.sas'; put '@li mm_deletedocument.sas'; put '@li mm_deletestp.sas'; put '@li mm_getstpcode.sas'; put '@li mm_getstpinfo.sas'; put '@li mp_abort.sas'; put '@li mp_init.sas'; put '@li mpe_makedata.sas'; put '@li mpe_makedatamodel.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mp_init()'; put '%global admin repo path; /* URL params from configurator */'; put '%let repo=%sysfunc(coalescec(&repo,Foundation));'; put '%let admin=%sysfunc(coalescec(&admin,dc-admin));'; put '%let dcpath=%sysfunc(coalescec(&path,NOTFOUND));'; put '%mp_abort(iftrue= ("&dcpath" = "NOTFOUND")'; put ',mac=&_program'; put ',msg=%str(PATH variable was not provided)'; put ')'; put '%let root=%mf_getapploc();'; put '%let work=%sysfunc(pathname(work));'; put '%let dc_libref=%upcase(DC%substr(%sysevalf(%sysfunc(datetime())/60),3,6));'; put '%let DC_LIBNAME=Data Controller(&dc_libref);'; put '%let dcpath=&dcpath/&dc_libref;'; put '%put _all_;'; put '%mf_mkdir(&dcpath/dc_staging)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Unable to create &dcpath using &sysuserid)'; put ')'; put '/* check we have the admin rights to update the items in the Admin folder */'; put '%mm_createdocument(tree=&root/services/admin,name=permTest)'; put '%mm_deletedocument(target=&root/services/admin/permTest)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(User &_metaperson does not have WriteMetadata on metadata folder:'; put '&root )'; put ')'; put '/* check we have physical permissions to the DCLIB folder */'; put 'data _null_;'; put 'putlog "dcpath=&dcpath/permTest.txt";'; put 'putlog "sysuserid=&sysuserid";'; put 'data _null_;'; put 'file "&dcpath/permTest.txt";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(User &sysuserid does not have WRITE permissions on physical'; put 'directory: &dcpath )'; put ')'; put 'filename delfile "&dcpath/permTest.txt";'; put 'data _null_;'; put 'rc=fdelete(''delfile'');'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )'; put ')'; put '/* get the server context from the current STP */'; put '%mm_getstpinfo(&_program,outds=work.stpinfo)'; put 'data _null_;'; put 'set work.stpinfo;'; put 'call symputx(''serverContext'',serverContext);'; put 'run;'; put '/* create the library */'; put '%mm_createlibrary('; put 'libname=&DC_LIBNAME'; put ',libref=&dc_libref'; put ',libdesc=Data Controller for SAS configuration tables'; put ',engine=BASE'; put ',tree=&root/data'; put ',servercontext=&serverContext'; put ',directory=&dcpath'; put ',mDebug=1'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=buildtermsas9'; put ',msg=%str(Unable to create &dc_libref library)'; put ')'; put '/* assign the library */'; put 'libname &dc_libref "&dcpath";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=buildtermsas9'; put ',msg=%str(Unable to assign the &dc_libref library)'; put ')'; put '/* make the tables */'; put '/* SASAdministrators */'; put '%mpe_makedatamodel(lib=&dc_libref)'; put '%mpe_makedata(lib=&DC_LIBREF,mpeadmins=&admin,path=%str(&dcpath))'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem creating tables in &DC_LIBREF library\n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT)'; put ')'; put '/* register tables in metadata */'; put 'proc metalib;'; put 'omr (library="&DC_LIBNAME");'; put 'folder="&root/data";'; put 'update_rule=(delete);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem registering metadata for tables in &DC_LIBREF library \n'; put 'os user=&sysuserid \n'; put 'metaperson=%mf_getuser() \n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT'; put ')'; put ')'; put '/* finally, update the app component. The user will need WM perms for this. */'; put 'data _null_;'; put 'file "&work/settings.sas" mod ;'; put 'put '' '';'; put 'put ''%global DC_LIBREF DC_LIBNAME DC_LIBLOC DC_STAGING_AREA DC_ADMIN_GROUP'';'; put 'put '' DC_REPO_USERS DC_DTTMTFMT DC_MACROS;'';'; put 'put '' '';'; put 'put ''/* This metadata library (libref) contains control datasets for DC */'';'; put 'put ''/* If a different libref must be used, configure it below */'';'; put 'put ''%let DC_LIBREF='' "&DC_LIBREF;";'; put 'put ''%let DC_LIBNAME='' "&DC_LIBNAME;";'; put 'put ''%let DC_LIBLOC='' "&dcpath;";'; put 'put '' '';'; put 'put ''libname &DC_LIBREF "&dc_libloc";'';'; put 'put '' '';'; put 'put ''/* This metadata group has unrestricted access to Data Controller */'';'; put 'put ''%let dc_admin_group='' "&admin;";'; put 'put '' '';'; put 'put ''/* This repository is used to query for users and groups */'';'; put 'put ''%let dc_repo_users='' "&repo;";'; put 'put '' '';'; put 'put ''/* This physical location is used for staging data and audit history */'';'; put 'put ''%let dc_staging_area=&dc_libloc/dc_staging;'';'; put 'put '' '';'; put 'put ''data _null_;'';'; put 'put '' set &DC_LIBREF..mpe_config(where=('';'; put 'put '' var_scope="DC" '';'; put 'put '' and &dc_dttmtfmt. lt tx_to'';'; put 'put '' and var_active=1'';'; put 'put " ));";'; put 'put " call symputx(var_name,var_value,''G'');";'; put 'put '' putlog var_name "=" var_value;'';'; put 'put "run;";'; put 'put '' '';'; put 'put ''/* to override any DC macros with client versions, place them below */'';'; put 'put ''options insert=(sasautos=("&dc_macros"));'';'; put 'run;'; put '/*'; put 'put ''data _null_;'';'; put 'put '' length lib_uri up_uri path $256;'';'; put 'put '' call missing (of _all_);'';'; put 'put '' rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''''&dc_libref''''",1,lib_uri);'';'; put 'put '' rc=metadata_getnasn(lib_uri,"UsingPackages",1,up_uri);'';'; put 'put '' rc=metadata_getattr(up_uri,"DirectoryName",path);'';'; put 'put '' call symputx("dc_libloc",path);'';'; put 'put ''run;'';'; put '*/'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=syscc=&syscc when preparing data_controller_settings)'; put ')'; put '%mm_createstp(stpname=Data_Controller_Settings'; put ',filename=settings.sas'; put ',directory=&work'; put ',tree=&root/services/public'; put ',Server=&serverContext'; put ',stptype=2'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str('; put 'Problem updating the dc_staging area in'; put '&root/services/public/DataController Settings \n'; put 'SYSERRORTEXT=&SYSERRORTEXT \n'; put 'SYSWARNINGTEXT=&SYSWARNINGTEXT'; put ')'; put ')'; put 'data _null_;'; put 'file _webout;'; put 'put ''

Data Controller Config

'';'; put 'put ''

The following items have been successfully configured:

'';'; put 'put "";'; put 'put "

Next Steps:

";'; put 'put "
  1. Populate ";'; put 'put "Table Lineage
  2. ";'; put 'put "
  3. Populate";'; put 'put "Data Catalog
  4. ";'; put 'put "
  5. Now, ";'; put 'put "hereLaunch!
";'; put 'run;'; put '/* We ran successfully, now remove configurator and makedata STPs */'; put '%mm_deletestp(target=&root/services/admin/configurator)'; put '%mm_deletestp(target=&_program)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=makelib; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mm_createfolder(path=,mDebug=0);'; put '%put &sysmacroname: execution started for &path;'; put '%local dbg errorcheck;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%local parentFolderObjId child errorcheck paths;'; put '%let paths=0;'; put '%let errorcheck=1;'; put '%if &syscc ge 4 %then %do;'; put '%put SYSCC=&syscc - this macro requires a clean session;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'length objId parentId objType parent child $200'; put 'folderPath $1000;'; put 'call missing (of _all_);'; put 'folderPath = "%trim(&path)";'; put '* remove any trailing slash ;'; put 'if ( substr(folderPath,length(folderPath),1) = ''/'' ) then'; put 'folderPath=substr(folderPath,1,length(folderPath)-1);'; put '* name must not be blank;'; put 'if ( folderPath = '''' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH parameter value must be non-blank";'; put 'end;'; put '* must have a starting slash ;'; put 'if ( substr(folderPath,1,1) ne ''/'' ) then do;'; put 'put "%str(ERR)OR: &sysmacroname PATH param value must have starting slash";'; put 'stop;'; put 'end;'; put '* check if folder already exists ;'; put 'rc=metadata_pathobj('''',cats(folderPath,"(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'put "NOTE: Folder " folderPath " already exists!";'; put 'stop;'; put 'end;'; put '* do not create a root (one level) folder ;'; put 'if countc(folderPath,''/'')=1 then do;'; put 'put "%str(ERR)OR: &sysmacroname will not create a new ROOT folder";'; put 'stop;'; put 'end;'; put '* check that root folder exists ;'; put 'root=cats(''/'',scan(folderpath,1,''/''),"(Folder)");'; put 'if metadata_pathobj('''',root,"",objType,parentId)<1 then do;'; put 'put "%str(ERR)OR: " root " does not exist!";'; put 'stop;'; put 'end;'; put '* check that parent folder exists ;'; put 'child=scan(folderPath,-1,''/'');'; put 'parent=substr(folderpath,1,length(folderpath)-length(child)-1);'; put 'rc=metadata_pathobj('''',cats(parent,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'putlog ''The following folders will be created:'';'; put '/* folder does not exist - so start from top and work down */'; put 'length newpath $1000;'; put 'paths=0;'; put 'do x=2 to countw(folderpath,''/'');'; put 'newpath='''';'; put 'do i=1 to x;'; put 'newpath=cats(newpath,''/'',scan(folderpath,i,''/''));'; put 'end;'; put 'rc=metadata_pathobj('''',cats(newpath,"(Folder)"),"",objType,parentId);'; put 'if rc<1 then do;'; put 'paths+1;'; put 'call symputx(cats(''path'',paths),newpath);'; put 'putlog newpath;'; put 'end;'; put 'call symputx(''paths'',paths);'; put 'end;'; put 'end;'; put 'else putlog "parent " parent " exists";'; put 'call symputx(''parentFolderObjId'',parentId,''l'');'; put 'call symputx(''child'',child,''l'');'; put 'call symputx(''errorcheck'',0,''l'');'; put '&dbg put (_all_)(=);'; put 'run;'; put '%if &errorcheck=1 or &syscc ge 4 %then %return;'; put '%if &paths>0 %then %do x=1 %to &paths;'; put '%put executing recursive call for &&path&x;'; put '%mm_createfolder(path=&&path&x)'; put '%end;'; put '%else %do;'; put 'filename __newdir temp;'; put 'options noquotelenmax;'; put '%local inmeta;'; put '%put creating: &path;'; put '%let inmeta=$METAREPOSITORY'; put ''; put 'SAS268435456'; put ';'; put 'proc metadata in="&inmeta" out=__newdir verbose;'; put 'run ;'; put '/* check it was successful */'; put 'data _null_;'; put 'length objId parentId objType parent child $200 ;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj('''',cats("&path","(Folder)"),"",objType,objId);'; put 'if rc ge 1 then do;'; put 'putlog "SUCCCESS! &path created.";'; put 'end;'; put 'else do;'; put 'putlog "%str(ERR)OR: unsuccessful attempt to create &path";'; put 'call symputx(''syscc'',8);'; put 'end;'; put 'run;'; put '/* write the response to the log for debugging */'; put '%if &mDebug ne 0 %then %do;'; put 'data _null_;'; put 'infile __newdir lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'filename __newdir clear;'; put '%end;'; put '%put &sysmacroname: execution finished for &path;'; put '%mend mm_createfolder;'; put '%macro mm_createlibrary('; put 'libname=My New Library'; put ',libref=mynewlib'; put ',libdesc=Created automatically using the mm_createlibrary macro'; put ',engine=BASE'; put ',tree=/User Folders/sasdemo'; put ',servercontext=SASApp'; put ',directory=/tmp/somelib'; put ',IsPreassigned=0'; put ',mDebug=0'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%let libref=%upcase(&libref);'; put '/**'; put '* Check Library does not exist already with this libname'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Name=''&libname''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libname (&libname);'; put '%return;'; put '%end;'; put '/**'; put '* Check Library does not exist already with this libref'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:SASLibrary?@Libref=''&libref''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype = SASLibrary %then %do;'; put '%put %str(WARN)ING: Library (&liburi) already exists with libref (&libref) ;'; put '%return;'; put '%end;'; put '/**'; put '* Attempt to create tree'; put '*/'; put '%mm_createfolder(path=&tree)'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Create filerefs for proc metadata call'; put '*/'; put 'filename &frefin temp;'; put 'filename &frefout temp;'; put '%mp_abort(iftrue= ('; put '&engine=BASE & %mf_verifymacvars(libname libref engine servercontext tree)=0'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: libname libref engine servercontext tree)'; put ')'; put '%if &engine=BASE %then %do;'; put '/**'; put '* Check that the ServerContext exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:ServerContext?@Name=''&ServerContext''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''serveruri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne ServerContext %then %do;'; put '%put %str(ERR)OR: ServerContext (&ServerContext) does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Get prototype info'; put '*/'; put 'data _null_;'; put 'length type uri str $256;'; put 'str="omsobj:Prototype?@Name=''Library.SAS.Prototype.Name.xmlKey.txt''";'; put 'rc=metadata_resolve(str,type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''prototypeuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Prototype %then %do;'; put '%put %str(ERR)OR: Prototype Library.SAS.Prototype.Name.xmlKey.txt not found;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Physical location exists'; put '*/'; put '%if %sysfunc(fileexist(&directory))=0 %then %do;'; put '%put %str(ERR)OR: Physical directory (&directory) does not appear to exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that Directory Object exists in metadata'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &checktype ne Directory %then %do;'; put '%put NOTE: Directory object does not exist for (&directory) location;'; put '%put NOTE: It will now be created;'; put 'data _null_;'; put 'file &frefin;'; put 'directory=quote(symget(''directory''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input; put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure directory (&directory) object was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_resolve("omsobj:Directory?@DirectoryRole=''LibraryPath''"'; put '!!" and @DirectoryName=''&directory''",type,uri);'; put 'call symputx(''checktype2'',type,''l'');'; put 'call symputx(''directoryuri'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &checktype2 ne Directory %then %do;'; put '%put %str(ERR)OR: Directory (&directory) object was NOT created!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Directory (&directoryuri) successfully created!;'; put '%end;'; put '/**'; put '* check SAS version'; put '*/'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: Version 9.3 or later required;'; put '%return;'; put '%end;'; put '/**'; put '* Prepare the XML and create the library'; put '*/'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'directoryuri=quote(symget(''directoryuri''));'; put 'libname=quote(symget(''libname''));'; put 'libref=quote(symget(''libref''));'; put 'IsPreassigned=quote(symget(''IsPreassigned''));'; put 'prototypeuri=quote(symget(''prototypeuri''));'; put '/* escape description so it can be stored as XML */'; put 'libdesc=tranwrd(symget(''libdesc''),''&'',''&'');'; put 'libdesc=tranwrd(libdesc,''<'',''<'');'; put 'libdesc=tranwrd(libdesc,''>'',''>'');'; put 'libdesc=tranwrd(libdesc,"''",''''');'; put 'libdesc=tranwrd(libdesc,''"'',''"'');'; put 'libdesc=tranwrd(libdesc,''0A''x,'' '');'; put 'libdesc=tranwrd(libdesc,''0D''x,'' '');'; put 'libdesc=tranwrd(libdesc,''$'',''$'');'; put 'libdesc=quote(trim(libdesc));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put ''' ''/'; put ''' "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '" "/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put ''' ''/'; put '''SAS''/'; put '''268435456'';'; put 'run;'; put 'proc metadata in= &frefin out=&frefout %if &mdebug=1 %then verbose ;;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: Checking to ensure library (&libname) was created;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&libname","Library",type,uri);'; put 'call symputx(''libtype'',type,''l'');'; put 'call symputx(''liburi'',uri,''l'');'; put '%if &mdebug=1 %then putlog (_all_)(=);;'; put 'run;'; put '%if &libtype ne SASLibrary %then %do;'; put '%put %str(ERR)OR: Could not find (&libname) at (&tree)!!;'; put '%return;'; put '%end;'; put '%else %put NOTE: Library (&libname) successfully created in (&tree)!;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Other library engine types are not yet supported!!;'; put '%end;'; put '/**'; put '* Wrap up'; put '*/'; put '%if &mdebug ne 1 %then %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_createlibrary;'; put '%macro mm_createdocument('; put 'tree=/User Folders/sasdemo'; put ',name=myNote'; put ',desc=Created by &sysmacroname'; put ',textrole='; put ',frefin=mm_in'; put ',frefout=mm_out'; put ',mDebug=1'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%mp_abort(iftrue= (%mf_verifymacvars(tree name)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: tree name)'; put ')'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%mp_abort('; put 'iftrue= (&type ne Tree)'; put ',mac=mm_createdocument.sas'; put ',msg=Tree &tree does not exist!'; put ')'; put '/**'; put '* Check object does not exist already'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&name","Note",type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''docuri'',uri,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if &type = Document %then %do;'; put '%put Document &name already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Now we can create the document'; put '*/'; put 'filename &frefin temp;'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'name=quote("&name");'; put 'desc=quote("&desc");'; put 'textrole=quote("&textrole");'; put 'treeuri=quote("&treeuri");'; put 'put "$METAREPOSITORY"/'; put '''"/'; put '" "/'; put ''' '' /'; put '''''/'; put '/*URI="Document for public note" */'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout verbose;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%mend mm_createdocument;'; put '%macro mm_deletedocument('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check document exist'; put '*/'; put '%local type;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''type'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &type ne Document %then %do;'; put '%put %str(WARN)ING: No Document found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = Document %then %do;'; put '%put %str(ERR)OR: Document not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletedocument;'; put '%macro mm_deletestp('; put 'target='; put ')/*/STORE SOURCE*/;'; put '/**'; put '* Check STP does exist'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&target",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype ne ClassifierMap %then %do;'; put '%put NOTE: No Stored Process found at ⌖'; put '%return;'; put '%end;'; put 'filename __in temp lrecl=10000;'; put 'filename __out temp lrecl=10000;'; put 'data _null_ ;'; put 'file __in ;'; put 'put "";'; put 'put "SAS268436480";'; put 'put "";'; put 'run ;'; put 'proc metadata in=__in out=__out verbose;run;'; put '/* list the result */'; put 'data _null_;infile __out; input; list; run;'; put 'filename __in clear;'; put 'filename __out clear;'; put '/**'; put '* Check deletion'; put '*/'; put '%local isgone;'; put 'data _null_;'; put 'length type uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_pathobj("","&target",''Note'',type,uri);'; put 'call symputx(''isgone'',type,''l'');'; put 'run;'; put '%if &isgone = ClassifierMap %then %do;'; put '%put %str(ERR)OR: STP not deleted from ⌖'; put '%let syscc=4;'; put '%return;'; put '%end;'; put '%mend mm_deletestp;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mm_getDirectories('; put 'path='; put ',outds=work.mm_getDirectories'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getDirectories.sas;'; put '%&mD.put _local_;'; put 'data &outds (keep=directoryuri name directoryname directorydesc );'; put 'length directoryuri name directoryname directorydesc $256;'; put 'call missing(of _all_);'; put '__i+1;'; put '%if %length(&path)=0 %then %do;'; put 'do while'; put '(metadata_getnobj("omsobj:Directory?@Id contains ''.''",__i,directoryuri)>0);'; put '%end; %else %do;'; put 'do while('; put 'metadata_getnobj("omsobj:Directory?@DirectoryName=''&path''",__i,directoryuri)'; put '>0'; put ');'; put '%end;'; put '__rc1=metadata_getattr(directoryuri, "Name", name);'; put '__rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);'; put '__rc3=metadata_getattr(directoryuri, "Desc", directorydesc);'; put '&mD.putlog (_all_) (=);'; put 'drop __:;'; put '__i+1;'; put 'if sum(of __rc1-__rc3)=0 then output;'; put 'end;'; put 'run;'; put '%mend mm_getDirectories;'; put '%macro mm_updatestpsourcecode(stp='; put ',stpcode='; put ',minify=NO'; put ',mdebug=0'; put ');'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&stp.(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '%if &mdebug=1 %then %do;'; put 'put tsuri= value=;'; put '%end;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%if &tsuri=stopifempty %then %do;'; put '%put %str(WARN)ING: &stp.(StoredProcess) not found!;'; put '%return;'; put '%end;'; put '%if %length(&stpcode)<2 %then %do;'; put '%put %str(WARN)ING: No SAS code supplied!!;'; put '%return;'; put '%end;'; put '%local frefin frefout;'; put '%let frefin=%mf_getuniquefileref();'; put '%let frefout=%mf_getuniquefileref();'; put '/* write header XML */'; put 'data _null_;'; put 'file &frefin;'; put 'put "$METAREPOSITORY'; put '2 %then %do;'; put 'data _null_;'; put 'file &frefin lrecl=32767 mod;'; put 'infile &stpcode lrecl=32767;'; put 'length outstr $32767;'; put 'input outstr ;'; put '/* escape code so it can be stored as XML */'; put 'outstr=tranwrd(_infile_,''&'',''&'');'; put 'outstr=tranwrd(outstr,''<'',''<'');'; put 'outstr=tranwrd(outstr,''>'',''>'');'; put 'outstr=tranwrd(outstr,"''",''''');'; put 'outstr=tranwrd(outstr,''"'',''"'');'; put 'outstr=tranwrd(outstr,''0A''x,'' '');'; put 'outstr=tranwrd(outstr,''0D''x,'' '');'; put 'outstr=tranwrd(outstr,''$'',''$'');'; put '%if &minify=YES %then %do;'; put 'outstr=cats(outstr);'; put 'if outstr ne '''';'; put 'if not (outstr=:''/*'' and subpad(left(reverse(outstr)),1,2)=''/*'');'; put '%end;'; put 'outstr=trim(outstr);'; put 'put outstr '' '';'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &frefin mod;'; put 'put "''>SAS268435456'; put '";'; put 'run;'; put 'proc metadata in= &frefin out=&frefout;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename &frefin clear;'; put 'filename &frefout clear;'; put '%end;'; put '%mend mm_updatestpsourcecode;'; put '%macro mm_getservercontexts('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* first get list of available repos */'; put '%mm_getrepos(outds=work.repos)'; put '%let repocnt=0;'; put 'data _null_;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put 'filename __mc1 temp;'; put 'filename __mc2 temp;'; put 'data &outds;'; put 'length serveruri servername $200;'; put 'call missing (of _all_);'; put 'stop;'; put 'run;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'ServerContextSAS'; put '0"'; put 'out=__mc1;'; put 'run;'; put '/*'; put 'data _null_;'; put 'infile __mc1 lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put 'data _null_;'; put 'file __mc2;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/ServerContext/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;'; put 'proc append base=&outds data=__mc3.SASContexts;run;'; put 'libname __mc3 clear;'; put '%end;'; put 'options metarepository=&repo;'; put 'filename __mc1 clear;'; put 'filename __mc2 clear;'; put '%mend mm_getservercontexts;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mm_createstp('; put 'stpname=Macro People STP'; put ',stpdesc=This stp was created automatically by the mm_createstp macro'; put ',filename=mm_createstp.sas'; put ',directory=SASEnvironment/SASCode'; put ',tree=/User Folders/sasdemo'; put ',package=false'; put ',streaming=true'; put ',outds=work.mm_createstp'; put ',mDebug=0'; put ',server=SASApp'; put ',stptype=1'; put ',minify=NO'; put ',frefin=mm_in'; put ',frefout=mm_out'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_CreateSTP.sas;'; put '%&mD.put _local_;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(stpname filename directory tree)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Empty inputs: stpname filename directory tree)'; put ')'; put '%mp_dropmembers(%scan(&outds,2,.))'; put '/**'; put '* check tree exists'; put '*/'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree","Folder",type,uri);'; put 'call symputx(''foldertype'',type,''l'');'; put 'call symputx(''treeuri'',uri,''l'');'; put 'run;'; put '%if &foldertype ne Tree %then %do;'; put '%put %str(WARN)ING: Tree &tree does not exist!;'; put '%return;'; put '%end;'; put '/**'; put '* Check STP does not exist already'; put '*/'; put '%local cmtype;'; put 'data _null_;'; put 'length type uri $256;'; put 'rc=metadata_pathobj("","&tree/&stpname",''StoredProcess'',type,uri);'; put 'call symputx(''cmtype'',type,''l'');'; put 'call symputx(''stpuri'',uri,''l'');'; put 'run;'; put '%if &cmtype = ClassifierMap %then %do;'; put '%put %str(WARN)ING: Stored Process &stpname already exists in &tree!;'; put '%return;'; put '%end;'; put '/**'; put '* Check that the physical file exists'; put '*/'; put '%if %sysfunc(fileexist(&directory/&filename)) ne 1 %then %do;'; put '%put %str(WARN)ING: FILE *&directory/&filename* NOT FOUND!;'; put '%return;'; put '%end;'; put '%if &stptype=1 %then %do;'; put '/* type 1 STP - where code is stored on filesystem */'; put '%if %sysevalf(&sysver lt 9.2) %then %do;'; put '%put %str(WARN)ING: Version 9.2 or later required;'; put '%return;'; put '%end;'; put '/* check directory object (where 9.2 source code reference is stored) */'; put 'data _null_;'; put 'length id $20 dirtype $256;'; put 'rc=metadata_resolve("&directory",dirtype,id);'; put 'call symputx(''checkdirtype'',dirtype,''l'');'; put 'run;'; put '%if &checkdirtype ne Directory %then %do;'; put '%mm_getdirectories(path=&directory,outds=&outds ,mDebug=&mDebug)'; put '%if %mf_nobs(&outds)=0 or %sysfunc(exist(&outds))=0 %then %do;'; put '%put %str(WARN)ING: The directory object does not exist for &directory;'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'directoryuri="&directory";'; put 'run;'; put '%end;'; put 'data &outds (keep=stpuri prompturi fileuri texturi);'; put 'length stpuri prompturi fileuri texturi serveruri $256 ;'; put 'if _n_=1 then call missing (of _all_);'; put 'set &outds;'; put '/* final checks on uris */'; put 'length id $20 type $256;'; put '__rc=metadata_resolve("&treeuri",type,id);'; put 'if type ne ''Tree'' then do;'; put 'putlog "%str(WARN)ING: Invalid tree URI: &treeuri";'; put 'stopme=1;'; put 'end;'; put '__rc=metadata_resolve(directoryuri,type,id);'; put 'if type ne ''Directory'' then do;'; put 'putlog "%str(WARN)ING: Invalid directory URI: " directoryuri;'; put 'stopme=1;'; put 'end;'; put '/* get server info */'; put '__rc=metadata_resolve("&server",type,serveruri);'; put 'if type ne ''LogicalServer'' then do;'; put '__rc=metadata_getnobj("omsobj:LogicalServer?@Name=''&server''",1,serveruri);'; put 'if serveruri='''' then do;'; put 'putlog "%str(WARN)ING: Invalid server: &server";'; put 'stopme=1;'; put 'end;'; put 'end;'; put 'if stopme=1 then do;'; put 'putlog (_all_)(=);'; put 'stop;'; put 'end;'; put '/* create empty prompt */'; put 'rc1=METADATA_NEWOBJ(''PromptGroup'',prompturi,''Parameters'');'; put 'rc2=METADATA_SETATTR(prompturi, ''UsageVersion'', ''1000000'');'; put 'rc3=METADATA_SETATTR(prompturi, ''GroupType'',''2'');'; put 'rc4=METADATA_SETATTR(prompturi, ''Name'',''Parameters'');'; put 'rc5=METADATA_SETATTR(prompturi, ''PublicType'',''Embedded:PromptGroup'');'; put 'GroupInfo='; put '"";'; put 'rc6 = METADATA_SETATTR(prompturi, ''GroupInfo'',groupinfo);'; put 'if sum(of rc1-rc6) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating prompt.";'; put 'if prompturi ne . then do;'; put 'putlog '' Removing orphan: '' prompturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'put rc=;'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a file uri */'; put 'rc7=METADATA_NEWOBJ(''File'',fileuri,''SP Source File'');'; put 'rc8=METADATA_SETATTR(fileuri, ''FileName'',"&filename");'; put 'rc9=METADATA_SETATTR(fileuri, ''IsARelativeName'',''1'');'; put 'rc10=METADATA_SETASSN(fileuri, ''Directories'',''MODIFY'',directoryuri);'; put 'if sum(of rc7-rc10) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating file.";'; put 'if fileuri ne . then do;'; put 'putlog '' Removing orphans:'' prompturi fileuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create a TextStore object */'; put 'rc11= METADATA_NEWOBJ(''TextStore'',texturi,''Stored Process'');'; put 'rc12= METADATA_SETATTR(texturi, ''TextRole'',''StoredProcessConfiguration'');'; put 'rc13= METADATA_SETATTR(texturi, ''TextType'',''XML'');'; put 'storedtext='''''; put '!!""'; put '!!"";'; put 'rc14= METADATA_SETATTR(texturi, ''StoredText'',storedtext);'; put 'if sum(of rc11-rc14) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating TextStore.";'; put 'if texturi ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'put (_all_)(=);'; put 'end;'; put 'stop;'; put 'end;'; put '/* create meta obj */'; put 'rc15= METADATA_NEWOBJ(''ClassifierMap'',stpuri,"&stpname");'; put 'rc16= METADATA_SETASSN(stpuri, ''Trees'',''MODIFY'',treeuri);'; put 'rc17= METADATA_SETASSN(stpuri, ''ComputeLocations'',''MODIFY'',serveruri);'; put 'rc18= METADATA_SETASSN(stpuri, ''SourceCode'',''MODIFY'',fileuri);'; put 'rc19= METADATA_SETASSN(stpuri, ''Prompts'',''MODIFY'',prompturi);'; put 'rc20= METADATA_SETASSN(stpuri, ''Notes'',''MODIFY'',texturi);'; put 'rc21= METADATA_SETATTR(stpuri, ''PublicType'', ''StoredProcess'');'; put 'rc22= METADATA_SETATTR(stpuri, ''TransformRole'', ''StoredProcess'');'; put 'rc23= METADATA_SETATTR(stpuri, ''UsageVersion'', ''1000000'');'; put 'rc24= METADATA_SETATTR(stpuri, ''Desc'', "&stpdesc");'; put '/* tidy up if err */'; put 'if sum(of rc15-rc24) ne 0 then do;'; put 'putlog "%str(WARN)ING: Issue creating STP.";'; put 'if stpuri ne . then do;'; put 'putlog '' Removing orphans: '' prompturi fileuri texturi stpuri;'; put 'rc = METADATA_DELOBJ(prompturi);'; put 'rc = METADATA_DELOBJ(fileuri);'; put 'rc = METADATA_DELOBJ(texturi);'; put 'rc = METADATA_DELOBJ(stpuri);'; put 'put (_all_)(=);'; put 'end;'; put 'end;'; put 'else do;'; put 'fullpath=cats(''_program='',treepath,"/&stpname");'; put 'putlog "NOTE: Stored Process Created!";'; put 'putlog "NOTE- "; putlog "NOTE-"; putlog "NOTE-" fullpath;'; put 'putlog "NOTE- "; putlog "NOTE-";'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%else %if &stptype=2 %then %do;'; put '/* type 2 stp - code is stored in metadata */'; put '%if %sysevalf(&sysver lt 9.3) %then %do;'; put '%put %str(WARN)ING: SAS version 9.3 or later required to create type2 STPs;'; put '%return;'; put '%end;'; put '/* check we have the correct ServerContext */'; put '%mm_getservercontexts(outds=contexts)'; put '%local serveruri; %let serveruri=NOTFOUND;'; put 'data _null_;'; put 'set contexts;'; put 'where upcase(servername)="%upcase(&server)";'; put 'call symputx(''serveruri'',serveruri);'; put 'run;'; put '%if &serveruri=NOTFOUND %then %do;'; put '%put %str(WARN)ING: ServerContext *&server* not found!;'; put '%return;'; put '%end;'; put '/**'; put '* First, create a Hello World type 2 stored process'; put '*/'; put 'filename &frefin temp;'; put 'data _null_;'; put 'file &frefin;'; put 'treeuri=quote(symget(''treeuri''));'; put 'serveruri=quote(symget(''serveruri''));'; put 'stpdesc=quote(symget(''stpdesc''));'; put 'stpname=quote(symget(''stpname''));'; put 'put "$METAREPOSITORY "/'; put '''''/'; put '" "/'; put '" "/'; put '" "/'; put '" "/'; put ''' ''/'; put ''' '' /'; put '" "/'; put '" "/'; put ''' ''/'; put '" "/'; put '""/'; put '"SAS"/'; put '"268435456";'; put 'run;'; put 'filename &frefout temp;'; put 'proc metadata in= &frefin out=&frefout ;'; put 'run;'; put '%if &mdebug=1 %then %do;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile &frefout lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '/**'; put '* Next, add the source code'; put '*/'; put '%mm_updatestpsourcecode(stp=&tree/&stpname'; put ',stpcode="&directory/&filename"'; put ',mdebug=&mdebug'; put ',minify=&minify)'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: STPTYPE=*&stptype* not recognised!;'; put '%end;'; put '%mend mm_createstp;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Create a demo (base engine) library'; put '@details'; put 'Creates the library'; put '@warning This STP self destructs! It will delete itself after a successful run'; put 'to avoid being executed twice (and overwriting actual data)'; put '

SAS Macros

'; put '@li mm_createlibrary.sas'; put '@li mm_createdocument.sas'; put '@li mm_deletedocument.sas'; put '@li mp_abort.sas'; put '@li dc_assignlib.sas'; put '@li mm_deletestp.sas'; put '@li mm_createstp.sas'; put '@li mf_mkdir.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global dcpath;'; put '%let dclib=%upcase(DC%substr(%sysevalf(%sysfunc(datetime())/60),3,6));'; put '%let dclibname=Data Controller(&dclib);'; put '%let work=%sysfunc(pathname(work));'; put '%let dcpath=&dcpath/&dclib;'; put '%mf_mkdir(&dcpath)'; put '%mf_mkdir(&work)'; put '%put &=dcpath;'; put '/* check we have physical permissions to the DCLIB folder */'; put 'data _null_;'; put 'file "&dcpath/permTest.txt";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid does not have WRITE permissions on physical'; put 'directory: &dcpath )'; put ')'; put 'filename delfile "&dcpath/permTest.txt";'; put 'data _null_;'; put 'rc=fdelete(''delfile'');'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to write to &dcpath)'; put ')'; put 'data _null_;'; put 'pgm="&_program";'; put 'rootlen=length(trim(pgm))-length("/services/admin/makelib");'; put 'root=substr(pgm,1,rootlen);'; put 'putlog root=;'; put 'call symputx(''deploy_dir'',root);'; put 'run;'; put 'options noquotelenmax ps=max;'; put '/* check we have the admin rights to update the items in the Admin folder */'; put '%mm_createdocument(tree=&deploy_dir/services/admin,name=permTest)'; put '%mm_deletedocument(target=&deploy_dir/services/admin/permTest)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &_metaperson does not have WriteMetadata on SAS folder:'; put '&deploy_dir )'; put ')'; put '/**'; put '* Create library and load data'; put '*/'; put '%let mpelibname=Data Controller (&dclib);'; put '%mm_createlibrary('; put 'libname=&mpelibname'; put ',libref=&dclib'; put ',libdesc=Configuration tables for the MacroPeople Data Controller application'; put ',engine=BASE'; put ',tree=&deploy_dir/data'; put ',servercontext=SASApp'; put ',directory=&dcpath'; put ',mDebug=1)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to create &dclib library)'; put ')'; put '/* get direct libref */'; put '%dc_assignlib(READ,&dclib)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Unable to assign &dclib library)'; put ')'; put '/* create an initial settings service (this will be overwritten in the'; put 'data update step)'; put '*/'; put '%let temploc=&work/temp.txt;'; put 'data _null_;'; put 'file "&temploc" ;'; put 'put ''/* Data Controller Precode */'' / / ;'; put 'put '' '';'; put 'put ''options noquotelenmax ps=max;'';'; put 'put ''%global DC_LIBREF DC_LIBNAME;'';'; put 'put '' '';'; put 'put ''/* This metadata library (libref) contains control datasets for DC */'';'; put 'put ''/* If a different libref must be used, configure it below */'';'; put 'put ''%let DC_LIBREF='' "&dclib;";'; put 'put ''%let DC_LIBNAME='' "&mpelibname;";'; put 'put '' '';'; put 'put ''/* get physical path for direct libname - needed to track requests */'';'; put 'put ''data _null_;'';'; put 'put '' length lib_uri up_uri path $256;'';'; put 'put '' call missing (of _all_);'';'; put 'put '' rc=metadata_getnobj("omsobj:SASLibrary?@Libref=''''&dc_libref''''",1,lib_uri);'';'; put 'put '' rc=metadata_getnasn(lib_uri,"UsingPackages",1,up_uri);'';'; put 'put '' rc=metadata_getattr(up_uri,"DirectoryName",path);'';'; put 'put '' call symputx("dc_libloc",path);'';'; put 'put ''run;'';'; put 'put ''libname &DC_LIBREF "&dc_libloc";'';'; put 'put '' '';'; put 'run;'; put '%mm_deletestp(target=&deploy_dir/services/public/Data_Controller_Settings)'; put '%mm_createstp(stpname=Data_Controller_Settings'; put ',filename=temp.txt'; put ',directory=&work'; put ',tree=&deploy_dir/services/public'; put ',Server=SASApp'; put ',stptype=2'; put ',mdebug=1'; put ',stpdesc=Data Controller Configuration'; put ',minify=NO)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue creating settings stp)'; put ')'; put 'data _null_;'; put 'file _webout;'; put 'put "

Library &dclib successfully assigned

";'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshcatalog; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put '%if &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mpe_refreshtables(lib,ds=#all);'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%local engine; %let engine=%mf_getengine(&lib);'; put '%local schema; %let schema=%mf_getschema(&lib);'; put '%put running &sysmacroname &lib(&engine &schema) for &ds;'; put 'proc sql;'; put 'create table cols as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib cols extraction)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.indexes as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table finalcols as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.indexes b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%local dsn;'; put '%if &ds = #ALL %then %let dsn=;'; put '%mp_getconstraints(lib=&lib.,ds=&dsn,outds=work.constraints)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table work.pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.constraints'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table work.sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.constraints(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.constraints(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table work.pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from work.sum a'; put 'left join work.constraints(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table work.pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data work.finalpks;'; put 'set pkdefault pk4sure pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table finalcols as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* load columns */'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_vars'; put ',append_dsn=finalcols'; put ',PK=LIBREF DSN NAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF DSN'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.tabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data tabs2;'; put 'set finalcols;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table work.finaltabs as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.tabs a'; put 'left join work.tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_tabs'; put ',append_dsn=finaltabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '/* prepare table frequently changing attributes */'; put 'proc sql;'; put '%if &engine=SQLSVR %then %do;'; put 'connect using &lib;'; put 'create table work.attrs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(schema_id) as ''schema'', name, create_date, modify_date'; put 'FROM sys.tables ;'; put ');'; put 'create table work.nobs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(A.schema_id) AS ''schema'''; put ',A.Name, AVG(B.rows) AS ''RowCount'''; put 'FROM sys.objects A'; put 'INNER JOIN sys.partitions B ON A.object_id = B.object_id'; put 'WHERE A.type = ''U'''; put 'GROUP BY A.schema_id, A.Name'; put ');'; put 'disconnect from &lib;'; put 'create table statustabs as select'; put 'a.libref'; put ',a.dsn'; put ',b.create_date as crdate'; put ',b.modify_date as modate'; put ',. as filesize'; put ',c.RowCount as nobs'; put 'from work.tabs a'; put 'left join work.attrs(where=(schema="&schema")) b'; put 'on upcase(a.dsn)=upcase(b.name)'; put 'left join work.nobs(where=(schema="&schema")) c'; put 'on upcase(a.dsn)=upcase(c.name);'; put '%end;'; put '%else %do;'; put 'create table statustabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',crdate'; put ',modate'; put ',filesize'; put ',nobs'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%end;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_tabs'; put ',append_dsn=statustabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '%if &ds = #ALL %then %do;'; put 'proc sql;'; put 'create table statuslibs as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_libs'; put ',append_dsn=statuslibs'; put ',PK=LIBREF'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%mend mpe_refreshtables;'; put '%macro dc_refreshcatalog(libref);'; put '/* take current repository */'; put '%local repo repocnt xx;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'put (_all_)(=);'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put &sysmacroname #&libref#;'; put '%if #&libref# ne ## %then %do;'; put '%put &sysmacroname: assigning specific libref, &libref;'; put '%dc_assignlib(WRITE,&libref) /* write just in order to assign direct lib */'; put '%mpe_refreshlibs(lib=&libref)'; put '%mpe_refreshtables(&libref)'; put '%end;'; put '%else %do xx=1 %to &repocnt;'; put 'options metarepository=&&repo&xx;'; put '%mpe_refreshlibs()'; put '/* get libs to be ignored */'; put '%local ignorelist;'; put 'proc sql noprint;'; put 'select var_value into: ignorelist'; put 'from &mpelib..MPE_CONFIG'; put 'where var_scope=''DC_CATALOG'''; put 'and var_name="DC_IGNORELIBS"'; put 'and &dc_dttmtfmt. < TX_TO'; put 'and var_active=1;'; put '/* get all libs */'; put '%let libcnt=0;'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'if index("&ignorelist",''|''!!upcase(trim(libref))!!''|'')=0;'; put 'i+1;'; put 'call symputx(cats(''lib'',i),libref);'; put 'call symputx(''libcnt'',i);'; put 'run;'; put '%local i;'; put '%do i=1 %to &libcnt;'; put '%dc_assignlib(WRITE,&&lib&i)'; put '%mpe_refreshtables(&&lib&i)'; put '%end;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_refreshcatalog;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshcatalog.sas'; put '@brief Refreshes the library data catalog'; put '@details A library may be passed in a LIBREF url param.'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li dc_refreshcatalog.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global libref;'; put '%mpeinit()'; put '%dc_refreshcatalog(&libref)'; put 'data _null_;'; put 'file _webout;'; put 'put ''

Catalog Refresh Complete

'';'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshlibs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put '%if &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshlibs.sas'; put '@brief Refreshes the library data catalog'; put '@details'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li mpe_refreshlibs.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_refreshlibs()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshtablelineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshtablelineage.sas'; put '@brief updates the table level lineage'; put '@details extracts all sources/targets from every job'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li bitemporal_dataloader.sas'; put '@li mp_binarycopy.sas'; put '@li mf_getuniquefileref.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* get list of libraries */'; put '%let fileref1=%mf_getuniquefileref();'; put 'filename &fileref1 temp;'; put 'proc metadata in='; put '"$METAREPOSITORY'; put 'JobSAS'; put ''; put '8452'; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put ''; put '"'; put 'out=&fileref1'; put ';'; put 'run;'; put '/* create an XML map and extract dependencies from response */'; put '%macro getTables(type=);'; put '%local x;'; put '%do x=1 %to 2;'; put '%local dir;'; put '%if &x=1 %then %let dir=Source;'; put '%else %let dir=Target;'; put '%local y;'; put '%do y=1 %to 3;'; put '%local maptype;'; put '%if &y=1 %then %let maptype=ClassifierMap;'; put '%else %if &y=2 %then %let maptype=Select;'; put '%else %if &y=3 %then %let maptype=Join;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "";'; put 'put "";'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities/TransformationActivi"@;'; put 'put "ty/Steps/TransformationStep/Transformations/&maptype/Classifier"@;'; put 'put "&dir.s/&type";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/@Name";'; put 'put "characterstring128";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/Transformations"@;'; put 'put "/&maptype/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put "";'; put 'put "/GetMetadataObjects/Objects/Job/JobActivities"@;'; put 'put "/TransformationActivity/Steps/TransformationStep/Transformations/"@;'; put 'put "&maptype/Classifier&dir.s/&type/@Id";'; put 'put "characterstring17";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=&fileref1 xmlmap=sxlemap;'; put 'data work.&dir.&type/view=work.&dir.&type;'; put 'set _xml_.&dir.&type;'; put 'length tabletype maptype $16 tabledirection $1;'; put 'jobname=upcase(jobname);'; put 'tabletype="&type";'; put 'maptype="&maptype";'; put 'if "&dir"="Source" then tabledirection="R";'; put 'else tabledirection=''F'';'; put 'run;'; put 'proc append base=work.alldata data=work.&dir.&type;'; put 'run;'; put 'libname _XML_ clear;'; put '%end;'; put '%end;'; put '%mend getTables;'; put '/* list of types:'; put 'https://support.sas.com/documentation/cdl/en/omamodref/63903/HTML/default/viewer.htm#classifiermap.htm'; put '*/'; put '%getTables(type=PhysicalTable)'; put '%getTables(type=ExternalTable)'; put '%getTables(type=QueryTable)'; put '%getTables(type=RelationalTable)'; put '%getTables(type=Report)'; put '%getTables(type=Cube)'; put '%getTables(type=DataTable)'; put '/* remove dups and get tables */'; put 'proc sort data=work.alldata(keep=jobid jobname tableid tabletype tabledirection)'; put 'out=work.sorted nodupkey;'; put 'by _all_;'; put 'run;'; put 'proc sort data=work.sorted(keep=tableid) out=work.tables nodupkey;'; put 'by tableid;'; put 'run;'; put '/* this bit is slow due to lookups but given the different table types'; put 'it was the easiest approach */'; put 'data work.tables2;'; put 'length tablename liburi puri $64 libref schemaname $8 ;'; put 'if _n_=1 then call missing(tablename, liburi, puri, libref, schemaname);'; put 'set work.tables;'; put 'drop rc liburi;'; put 'if metadata_getnasn(tableid,"TablePackage",1,liburi)>0 then do;'; put 'rc= metadata_getattr(liburi, "SchemaName", SchemaName);'; put 'if ^missing(SchemaName) then do;'; put 'if metadata_getnasn(liburi,"UsedByPackages",1,puri)>0 then do;'; put 'rc=metadata_getattr(puri,"Libref",libref);'; put 'end;'; put 'end;'; put 'else rc=metadata_getattr(liburi,"Libref",libref);'; put 'libref=upcase(libref);'; put 'end;'; put 'rc=metadata_getattr(tableid,"Name",tablename);'; put 'tablename=upcase(tablename);'; put 'run;'; put 'proc sql;'; put 'create table work.augmented as'; put 'select a.*'; put ',b.tablename'; put ',b.libref'; put 'from work.sorted a'; put 'left join work.tables2 b'; put 'on a.tableid=b.tableid;'; put 'create table work.mpe_lineage_tabs as'; put 'select distinct'; put 'coalesce(a.jobid,b.jobid) as jobid,'; put 'coalesce(a.jobname,b.jobname) as jobname,'; put 'coalesce(a.tableid,"N/A") as srctableid,'; put 'a.tabletype as srctabletype,'; put 'a.tablename as srctablename,'; put 'coalesce(a.libref,''nolib'') as srclibref,'; put 'coalesce(b.tableid,"N/A") as tgttableid,'; put 'b.tabletype as tgttabletype,'; put 'b.tablename as tgttablename,'; put 'coalesce(b.libref,''nolib'') as tgtlibref'; put 'from work.augmented(where=(tabledirection=''R'')) a'; put 'full join work.augmented(where=(tabledirection=''F'')) b'; put 'on a.jobid=b.jobid'; put ';'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=MPE_LINEAGE_TABS'; put ',append_dsn=MPE_LINEAGE_TABS'; put ',PK=jobid srctableid tgttableid'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%mp_binarycopy(inref=&fileref1, outref=_webout)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=registerkey; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Register a new licence key'; put '@details'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@li bitemporal_dataloader.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '@test'; put 'echo ''{"keyupload":[{"activation_key":"slfdjasfda;dslf","licence_key":"asdfasdlfkajsfdas"}]}''>in.json'; put 'sasjs request admin/registerkey -d in.json'; put '**/'; put '%mpeinit()'; put '/* determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%global admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from groups where groupname="&mpeadmins";'; put '%mp_abort(iftrue= (&admin_check = 0)'; put ',mac=%str(&_program)'; put ',msg=%str(Only members of &mpeadmins may register a key)'; put ')'; put '%global licencekey activation_key;'; put 'data _null_;'; put 'set work.keyupload;'; put 'call symputx(''activation_key'',activation_key);'; put 'call symputx(''licencekey'',licence_key);'; put 'call symputx(''activlen'',length(activation_key));'; put 'call symputx(''liclen'',length(licence_key));'; put 'run;'; put '%mp_abort(iftrue= (&activlen< 10)'; put ',mac=%str(&_program)'; put ',msg=%str(Invalid activation_key)'; put ')'; put '%mp_abort(iftrue= (&liclen < 10)'; put ',mac=%str(&_program)'; put ',msg=%str(Invalid licencekey)'; put ')'; put 'data work.loadme;'; put 'if 0 then set &mpelib..mpe_config;'; put 'VAR_SCOPE=''DC'';'; put 'VAR_NAME=''DC_ACTIVATION_KEY'';'; put 'VAR_VALUE=symget(''activation_key'');'; put 'VAR_ACTIVE=1;'; put 'output;'; put 'VAR_NAME=''DC_LICENCE_KEY'';'; put 'VAR_VALUE=symget(''licencekey'');'; put 'VAR_ACTIVE=1;'; put 'output;'; put 'keep VAR_: ;'; put 'run;'; put '%bitemporal_dataloader('; put 'tech_from=tx_from'; put ',tech_to = tx_to'; put ',base_lib=&mpelib'; put ',base_dsn=mpe_config'; put ',append_lib=WORK'; put ',append_dsn=loadme'; put ',PK= VAR_SCOPE VAR_NAME'; put ',ETLSOURCE=%str(&_program STP)'; put ',LOADTYPE=TXTEMPORAL'; put ',dclib=&mpelib'; put ')'; put 'data work.return;'; put 'msg=''SUCCESS'';'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,return)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/approvers; %let service=getapprovals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getapprovals.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* determine users group membership */'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put 'proc sql noprint;'; put 'create table out1 (rename=(SUBMITTED_ON_DTTM1=SUBMITTED_ON_DTTM)) as'; put 'select table_id'; put ',submit_status_cd as REVIEW_STATUS_ID'; put ',SUBMITTED_BY_NM'; put ',cats(base_lib,''.'',base_ds) as base_table'; put ',put(submitted_on_dttm,yymmddhhmmss.) as SUBMITTED_ON_DTTM1'; put ',submitted_on_dttm as SUBMITTED_ON_DTTM2'; put ',submitted_reason_txt'; put ',num_of_approvals_required'; put ',num_of_approvals_remaining'; put ',base_lib as libref'; put ',base_ds as dsn'; put 'from &mpelib..mpe_submit (where=(submit_status_cd=''SUBMITTED''))'; put '/* filter out any submits for which approval is already made */'; put 'where table_id not in ('; put 'select table_id from &mpelib..mpe_review where submitted_by_nm="&user"'; put ');'; put '%macro getapprovals();'; put '%local admin_check;'; put 'select count(*) into: admin_check'; put 'from groups'; put 'where groupname="&mpeadmins"'; put 'or groupname in ('; put 'select sas_group from &mpelib..mpe_security'; put 'where libref=''*ALL*'''; put 'and &dc_dttmtfmt. lt tx_to'; put 'and access_level in (''APPROVE'')'; put ');'; put '%if &admin_check >0 %then %do;'; put 'create table fromSAS as'; put 'select distinct * from out1'; put 'order by SUBMITTED_ON_DTTM2 desc;'; put '%end;'; put '%else %do;'; put 'create table fromSAS as'; put 'select distinct a.*'; put 'from out1 a'; put 'inner join &mpelib..mpe_security b'; put 'on a.libref=b.libref'; put 'and (a.dsn=b.dsn or b.dsn=''*ALL*'')'; put 'and &dc_dttmtfmt. lt b.tx_to'; put 'and b.ACCESS_LEVEL =''APPROVE'''; put 'and b.SAS_GROUP in (select groupname from work.groups)'; put 'order by SUBMITTED_ON_DTTM2 desc;'; put '%end;'; put '%mend getapprovals;'; put '%getapprovals()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=gethistory; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Returns the list of previously approved / rejected items.'; put '@details History is taken from MPE_SUBMIT (where status_cd ne ''SUBMITTED'') and'; put 'filtered according to the groups in MPE_SECURITY (unless the user is in the'; put 'DC admin group).'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '

Service Inputs

'; put '
BROWSERPARAMS
'; put 'The following variables MAY be provided from frontend (HIST can also be set'; put 'in MPE_CONFIG):'; put '@li HIST - number of records to return'; put '@li STARTROW - the starting row (default is 1)'; put '

Service Outputs

'; put '
FROMSAS
'; put 'This table is returned, starting from &STARTROW for &HIST rows (ordered'; put 'descending on SUBMITTED datetime)'; put '@li TABLE_ID'; put '@li BASE_TABLE'; put '@li SUBMITTED'; put '@li SUBMITTED_REASON_TXT'; put '@li SUBMITTER'; put '@li REVIEWED'; put '@li STATUS'; put '@li REVIEWED_ON_DTTM'; put '@li APPROVER'; put '
HISTPARAMS
'; put '@li HIST - rows returned'; put '@li STARTROW - starting row used'; put '@li NOBS - Number of observations (rows) available'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* hard coded HIST value */'; put '%let hist=40;'; put '%let startrow=1;'; put '/* load parameters from frontend (HIST and STARTROW) */'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC_REVIEW"'; put 'and var_name=''HISTORY_ROWS'''; put 'and &dc_dttmtfmt. lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(''hist'',var_value,''G'');'; put 'putlog ''mpe_config: '' var_name "=" var_value;'; put 'run;'; put '/* load parameters (override HIST again if provided) */'; put '%mpe_getvars(BrowserParams, BrowserParams)'; put '/* determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.usergroups)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '/* check to see if the user is an admin, or has *ALL* access rights */'; put '%let authcheck=0;'; put 'proc sql noprint;'; put 'create table work.authcheck'; put 'as select *'; put 'from usergroups'; put 'where upcase(groupname)="%upcase(&mpeadmins)"'; put 'or upcase(groupname) in ('; put 'select upcase(sas_group) from &mpelib..mpe_security'; put 'where libref=''*ALL*'' and &dc_dttmtfmt. lt tx_to'; put ');'; put 'select count(*) into: authcheck from &syslast;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after auth check)'; put ')'; put '/* now get the previous &hist records from mpe_submit */'; put 'proc sql;'; put 'create view work.submits as'; put 'select distinct a.TABLE_ID'; put ',cats(a.base_lib,''.'',a.base_ds) as base_table'; put ',put(a.SUBMITTED_ON_DTTM,yymmddhhmmss.) as submitted'; put ',a.submitted_reason_txt'; put ',a.submitted_by_nm as submitter'; put ',put(a.REVIEWED_ON_DTTM,yymmddhhmmss.) as REVIEWED'; put ',a.submit_status_cd as status'; put ',a.reviewed_on_dttm'; put ',a.reviewed_by_nm as approver'; put 'from &mpelib..mpe_submit(where=(submit_status_cd ne ''SUBMITTED'')) a'; put '%macro gethistory();'; put '%if &authcheck=0 %then %do;'; put '/* filter for allowed items */'; put 'left join &mpelib..mpe_security(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.base_lib=b.libref'; put 'and (a.base_ds=b.dsn or b.dsn=''*ALL*'')'; put 'where upcase(b.SAS_GROUP) in (select upcase(groupname) from work.usergroups)'; put 'and b.access_level in (''VIEW'',''AUDIT'',''EDIT'',''APPROVE'')'; put '%end;'; put '%mend gethistory;'; put '%gethistory()'; put 'order by a.submitted_on_dttm desc;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after fetching submits)'; put ')'; put 'data work.fromsas;'; put 'set work.submits;'; put 'if _n_ ge &startrow;'; put 'n+1;'; put 'if n>&hist then stop;'; put 'drop n;'; put 'run;'; put 'proc sql noprint;'; put 'select count(*) into: nobs from work.submits;'; put 'data work.histparams;'; put 'hist=&hist;'; put 'startrow=&startrow;'; put 'nobs=&nobs;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(OBJ,histparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=rejection; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Removes a staged data package from approval screen'; put '@details'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_lockanytable.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_alerts.sas'; put '@li mpe_getvars.sas'; put '@li removecolsfromwork.sas'; put '

Service Outputs

'; put '
fromsas
'; put '@li TABLE_ID'; put '@li SUBMITTED_REASON_TXT'; put '@li RESPONSE'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global STP_ACTION TABLE STP_REASON;'; put '%mpeinit()'; put '%mpe_getvars(BrowserParams, BrowserParams)'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '/* get current status and base table */'; put 'data _null_;'; put 'set &mpelib..mpe_submit(where=(TABLE_ID="&TABLE"));'; put 'call symputx(''BASE_TABLE'',cats(base_lib,''.'',base_ds));'; put 'call symputx(''submit_status_cd'',submit_status_cd);'; put 'run;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: base_table)'; put ')'; put '%mp_abort('; put 'iftrue=(%quote(&submit_status_cd)=%quote(REJECTED))'; put ',mac=&_program'; put ',msg=%str(&table is already rejected!)'; put ')'; put '%mp_abort(iftrue= (&syscc ge 4)'; put ',mac=&_program'; put ',msg=%str(Issue on setup)'; put ')'; put '/**'; put '* determine if user is authorised to reject table'; put '*/'; put '%let user=%mf_getuser();'; put '%global authcheck; %let authcheck=0;'; put '%mpe_accesscheck(&base_table,outds=authAPP,user=&user,access_level=APPROVE)'; put '%let authcheck=%mf_getattrn(work.authAPP,NLOBS);'; put '%mp_abort(iftrue= (&authcheck=0)'; put ',mac=&_program..sas'; put ',msg=%str(User &user does not have APPROVE rights on &base_table and is not'; put 'in the &mpeadmins group)'; put ')'; put '/* update the control table to show table as rejected (and why) */'; put '%let now=%sysfunc(datetime());'; put 'data work.reject;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&table";'; put 'BASE_TABLE="&base_table";'; put 'REVIEW_STATUS_ID="REJECTED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&now;'; put 'REVIEW_REASON_TXT=symget(''STP_REASON'');'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table rejection),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.reject;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table rejection),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set submit_status_cd=''REJECTED'','; put 'num_of_approvals_remaining=0,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&now'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc AFTER update...)'; put ')'; put '%mpe_alerts(alert_event=REJECTED'; put ', alert_lib=%scan(&BASE_TABLE,1,.)'; put ', alert_ds=%scan(&BASE_TABLE,2,.)'; put ', dsid=&TABLE'; put ')'; put 'data fromSAS;'; put 'RESPONSE=''SUCCESS!'';'; put 'set REJECT;'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/auditors; %let service=getauditfile; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put (_all_)(=);'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getauditfile.sas'; put '@brief Downloads a zip file containing audit info.'; put '@details The staging location from the &mpelocapprovals location'; put 'is zipped and returned as a file download. A user can only request the'; put 'audit pack if they have EDIT or APPROVE rights on the target table.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_verifymacvars.sas'; put '@li mpe_accesscheck.sas'; put '@li mp_abort.sas'; put '@li mp_dirlist.sas'; put '@li mp_binarycopy.sas'; put '@li mf_getattrn.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'options mprint;'; put '/* security checks */'; put '%let user=%mf_getuser();'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: libds'; put 'from &mpelib..mpe_submit'; put 'where table_id="&table";'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(libds table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: libds table)'; put ')'; put '%mpe_accesscheck(&libds,outds=authEDIT,user=&user,access_level=EDIT);'; put '%mpe_accesscheck(&libds,outds=authAPP,user=&user,access_level=APPROVE);'; put '%mp_abort('; put 'iftrue=('; put '%mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put ')'; put ',mac=mpestp_audit'; put ',msg=%str(&user not authorised to download audit data for &table)'; put ')'; put 'ods package(ProdOutput) open nopf;'; put 'options notes source2 mprint;'; put '%let table=%unquote(&table);'; put '%mp_dirlist(outds=dirs, path=&mpelocapprovals/&TABLE);'; put 'data _null_;'; put 'set dirs;'; put 'retain str1'; put '"ods package(ProdOutput) add file=''&mpelocapprovals/&TABLE/";'; put 'retain str2 "'' mimetype=''text/plain'' path=''contents/'';";'; put 'call execute(cats(str1,filename,str2));'; put 'run;'; put '%let archive_path=%sysfunc(pathname(work));'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name= "&table..zip" archive_path="&archive_path");'; put 'ods package(ProdOutput) close;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%nrstr(syscc=&syscc)'; put ')'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&archive_path/&table..zip)'; put ',outname=&table..zip'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getdiffs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdiffs.sas'; put '@brief Retrieves the diff file for viewing'; put '@details'; put '

SAS Macros

'; put '@li mpe_getvars.sas'; put '@li mpe_accesscheck.sas'; put '@li mf_getattrn.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(BrowserParams, BrowserParams);'; put '/* security checks */'; put '%let user=%mf_getuser();'; put '%mpe_accesscheck(&libds,outds=authEDIT,user=&user,access_level=EDIT)'; put '%mpe_accesscheck(&libds,outds=authAPP,user=&user,access_level=APPROVE)'; put '%macro mpestp_diffs();'; put '%if %mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put '%then %do;'; put '%mp_abort(msg=%str('; put '&user not authorised to download diffs data for &stp_table)'; put ',mac=mpestp_diffs.sas);'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/* stream diffs csv to client */'; put '%mp_streamfile(contenttype=EXCEL'; put ',inloc=%str(&mpelocapprovals/&TABLE/&STP_DIFFS_CSV)'; put ',outname=&STP_DIFFS_CSV'; put ')'; put '%mend mpestp_diffs;'; put '%mpestp_diffs()'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getstagetable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getstagetable.sas'; put '@brief Retrieves the actual table that is being sent for update'; put '@details'; put '

SAS Macros

'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let table_id=%mf_getvalue(work.iwant,table_id);'; put 'libname loc "&mpelocapprovals/&table_id";'; put 'data stagetable;'; put 'set loc.&table_id;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,stagetable,missing=STRING)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=postdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_loadformat(libcat,libds'; put ',loadtarget=NO'; put ',auditlibds=0'; put ',locklibds=0'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=0'; put ',outds_del=0'; put ',outds_mod=0'; put ',mdebug=0'; put ');'; put '/* set up local macro variables and temporary tables (with a prefix) */'; put '%local err msg prefix dslist i var fmtlist ibufsize;'; put '%let dslist=base_fmts template inlibds ds1 stagedata storediffs del1 del2;'; put '%if &outds_add=0 %then %let dslist=&dslist outds_add;'; put '%if &outds_del=0 %then %let dslist=&dslist outds_del;'; put '%if &outds_mod=0 %then %let dslist=&dslist outds_mod;'; put '%let prefix=%substr(%mf_getuniquename(),1,21);'; put '%do i=1 %to %sysfunc(countw(&dslist));'; put '%let var=%scan(&dslist,&i);'; put '%local &var;'; put '%let &var=%upcase(&prefix._&var);'; put '%end;'; put '/* in DC, format catalogs maybe specified in the libds with a -FC extension */'; put '%let libcat=%scan(&libcat,1,-);'; put '/* perform input validations */'; put '%let err=0;'; put '%let msg=0;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'value=upcase(value);'; put 'if &mdebug=0 then put name ''='' value;'; put 'if name=:''LOAD'' and value not in (''YES'',''NO'') then do;'; put 'call symputx(''msg'',"invalid value for "!!name!!":"!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'else if name=''LIBCAT'' then do;'; put 'if exist(value,''CATALOG'') le 0 then do;'; put 'call symputx(''msg'',"Unable to open catalog: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if name=''LIBDS'' then do;'; put 'if exist(value) le 0 then do;'; put 'call symputx(''msg'',"Unable to open staging table: "!!value);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'end;'; put 'else if (name=:''OUTDS'' or name in (''DELETE_COL'',''LOCKLIBDS'',''AUDITLIBDS''))'; put 'and missing(value) then do;'; put 'call symputx(''msg'',"missing value in var: "!!name);'; put 'call symputx(''err'',1);'; put 'stop;'; put 'end;'; put 'run;'; put '%mp_abort('; put 'iftrue=(&err ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(&msg)'; put ')'; put '/**'; put '* First, extract only relevant formats from the catalog'; put '*/'; put 'proc sql noprint;'; put 'select distinct'; put 'case'; put 'when type=''N'' then upcase(fmtname)'; put 'when type=''C'' then cats(''$'',upcase(fmtname))'; put 'when type=''I'' then cats(''@'',upcase(fmtname))'; put 'when type=''J'' then cats(''@$'',upcase(fmtname))'; put 'else "&sysmacroname:UNHANDLED"'; put 'end'; put 'into: fmtlist separated by '' '''; put 'from &libds;'; put '%mp_cntlout(libcat=&libcat,fmtlist=&fmtlist,cntlout=&base_fmts)'; put '/* get a hash of the row */'; put '%local cvars nvars;'; put '%let cvars=TYPE FMTNAME START END LABEL PREFIX FILL SEXCL EEXCL HLO DECSEP'; put 'DIG3SEP DATATYPE LANGUAGE;'; put '%let nvars=FMTROW MIN MAX DEFAULT LENGTH FUZZ MULT NOEDIT;'; put 'data &base_fmts/note2err;'; put 'set &base_fmts;'; put 'fmthash=%mp_md5(cvars=&cvars, nvars=&nvars);'; put 'run;'; put '/**'; put '* Ensure input table and base_formats have consistent lengths and types'; put '*/'; put 'data &inlibds/nonote2err;'; put 'length &delete_col $3 FMTROW 8 start end label $32767;'; put 'if 0 then set &base_fmts;'; put 'set &libds;'; put 'by type fmtname notsorted;'; put 'if &delete_col='''' then &delete_col=''No'';'; put 'fmtname=upcase(fmtname);'; put 'type=upcase(type);'; put 'if missing(type) then do;'; put 'if substr(fmtname,1,1)=''@'' then do;'; put 'if substr(fmtname,2,1)=''$'' then type=''J'';'; put 'else type=''I'';'; put 'end;'; put 'else do;'; put 'if substr(fmtname,1,1)=''$'' then type=''C'';'; put 'else type=''N'';'; put 'end;'; put 'end;'; put 'if type in (''N'',''I'') then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* update row marker - retain new var as fmtrow may already be in libds */'; put 'if first.fmtname then row=1;'; put 'else row+1;'; put 'drop row;'; put 'fmtrow=row;'; put 'fmthash=%mp_md5(cvars=&cvars, nvars=&nvars);'; put 'run;'; put '/**'; put '* Identify new records'; put '*/'; put 'proc sql;'; put 'create table &outds_add(drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'left join &base_fmts b'; put 'on a.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where b.fmtname is null'; put 'and upcase(a.&delete_col) ne "YES"'; put 'order by type, fmtname, fmtrow;'; put '/**'; put '* Identify modified records'; put '*/'; put 'create table &outds_mod (drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'inner join &base_fmts b'; put 'on a.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where upcase(a.&delete_col) ne "YES"'; put 'and a.fmthash ne b.fmthash'; put 'order by type, fmtname, fmtrow;'; put '/**'; put '* Identify deleted records'; put '*/'; put 'create table &outds_del(drop=&delete_col) as'; put 'select a.*'; put 'from &inlibds a'; put 'inner join &base_fmts b'; put 'on a.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where upcase(a.&delete_col)="YES"'; put 'order by type, fmtname, fmtrow;'; put '/**'; put '* Identify fully deleted formats (where every record is removed)'; put '* These require to be explicitly deleted in proc format'; put '* del1 - identify _partial_ deletes'; put '* del2 - exclude these, and also formats that come with _additions_'; put '*/'; put 'create table &del1 as'; put 'select a.*'; put 'from &base_fmts a'; put 'left join &outds_del b'; put 'on a.type=b.type and a.fmtname=b.fmtname and a.fmtrow=b.fmtrow'; put 'where b.fmtrow is null;'; put 'create table &del2 as'; put 'select * from &outds_del'; put 'where cats(type,fmtname) not in (select cats(type,fmtname) from &outds_add)'; put 'and cats(type,fmtname) not in (select cats(type,fmtname) from &del1);'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc prior to load prep)'; put ')'; put '%if &loadtarget=YES %then %do;'; put '/* new records plus base records that are not deleted or modified */'; put 'data &ds1;'; put 'merge &base_fmts(in=base)'; put '&outds_mod(in=mod)'; put '&outds_add(in=add)'; put '&outds_del(in=del);'; put 'if not del and not mod;'; put 'by type fmtname fmtrow;'; put 'run;'; put '/* add back the modified records */'; put 'data &stagedata;'; put 'set &ds1 &outds_mod;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put '%end;'; put '/* mp abort needs to run outside of conditional blocks */'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc prior to actual load)'; put ')'; put '%if &loadtarget=YES %then %do;'; put '%if %mf_nobs(&stagedata)=0 and %mf_nobs(&del2)=0 %then %do;'; put '%put There are no changes to load in &libcat!;'; put '%return;'; put '%end;'; put '%if &locklibds ne 0 %then %do;'; put '/* prevent parallel updates */'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&libcat,1,.)'; put ',ds=%scan(&libcat,2,.)-FC'; put ',ref=MP_LOADFORMAT commencing format load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '/* do the actual load */'; put 'proc format lib=&libcat cntlin=&stagedata;'; put 'run;'; put '/* apply any full deletes */'; put '%if %mf_nobs(&del2)>0 %then %do;'; put '%local delfmtlist;'; put 'proc sql noprint;'; put 'select distinct case when type=''N'' then cats(fmtname,''.FORMAT'')'; put 'when type=''C'' then cats(fmtname,''.FORMATC'')'; put 'when type=''J'' then cats(fmtname,''.INFMTC'')'; put 'when type=''I'' then cats(fmtname,''.INFMT'')'; put 'else cats(fmtname,''.BADENTRY!!!'') end'; put 'into: delfmtlist'; put 'separated by '' '''; put 'from &del2;'; put 'proc catalog catalog=&libcat;'; put 'delete &delfmtlist;'; put 'quit;'; put '%end;'; put '%if &locklibds ne 0 %then %do;'; put '/* unlock the table */'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&libcat,1,.)'; put ',ds=%scan(&libcat,2,.)-FC'; put ',ref=MP_LOADFORMAT completed format load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '/* track the changes */'; put '%if &auditlibds ne 0 %then %do;'; put '%if &locklibds ne 0 %then %do;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&auditlibds,1,.)'; put ',ds=%scan(&auditlibds,2,.)'; put ',ref=MP_LOADFORMAT commencing audit table load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '%mp_storediffs(&libcat-FC'; put ',&base_fmts'; put ',TYPE FMTNAME FMTROW'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=&storediffs'; put ',mdebug=&mdebug'; put ')'; put 'proc append base=&auditlibds data=&storediffs;'; put 'run;'; put '%if &locklibds ne 0 %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&auditlibds,1,.)'; put ',ds=%scan(&auditlibds,2,.)'; put ',ref=MP_LOADFORMAT commencing audit table load'; put ',ctl_ds=&locklibds'; put ')'; put '%end;'; put '%end;'; put '%end;'; put '%mp_abort('; put 'iftrue=(&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc after load)'; put ')'; put '%if &mdebug=0 %then %do;'; put 'proc datasets lib=work;'; put 'delete &prefix:;'; put 'run;'; put '%put &sysmacroname exit vars:;'; put '%put _local_;'; put '%end;'; put '%mend mp_loadformat;'; put '%macro mpe_targetloader(libds= /* library.dataset to LOAD (target) */'; put ',now= %sysfunc(datetime()) /* static processed timestamp */'; put ',etlsource= /* process from whence the data came */'; put ',STAGING_DS= STAGING_DS /* name of staging (work) dataset which should'; put 'be appended into the target. */'; put ',LOADTARGET=NO /* set to yes to actually load the target */'; put ',CLOSE_VARS= /* provide close vars to override defaults */'; put ',dclib=NOTPROVIDED'; put ',mdebug=0'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%local lib ds nobs;'; put '/**'; put '* if a format catalog (suffix "-FC") we assume the catalog has already been'; put '* created by the calling program with a libds of work.fmtextract'; put '*/'; put '%let orig_lib=%upcase(%scan(&libds,1,.));'; put '%let orig_ds=%upcase(%scan(&libds,2,.));'; put '%let orig_libds=&libds;'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%let lib=WORK;'; put '%let ds=FMTEXTRACT;'; put '%let libds=&lib..&ds;'; put '%end;'; put '%else %do;'; put '%let lib=&orig_lib;'; put '%let ds=&orig_ds;'; put '%end;'; put '%mp_abort(iftrue= (&dclib=NOTPROVIDED)'; put ',mac=&sysmacroname'; put ',msg=%str(dclib=NOTPROVIDED)'; put ')'; put '/* get table attributes */'; put '%let nobs=0;'; put 'data work.sumo_config;'; put 'set &mpelib..mpe_tables;'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="&orig_lib"'; put 'and dsn="&orig_ds";'; put 'call symputx(''LOADTYPE'',loadtype,''l'');'; put 'call symputx(''BUSKEY'',buskey,''l'');'; put 'call symputx(''VAR_TXFROM'',var_txfrom,''l'');'; put 'call symputx(''VAR_TXTO'',var_txto,''l'');'; put 'call symputx(''VAR_BUSFROM'',var_busfrom,''l'');'; put 'call symputx(''VAR_BUSTO'',var_busto,''l'');'; put 'call symputx(''VAR_PROCESSED'',VAR_PROCESSED,''l'');'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING,''l'');'; put '%if %length(&CLOSE_VARS)=0 %then %do;'; put 'call symputx(''CLOSE_VARS'',CLOSE_VARS,''l'');'; put '%end;'; put 'call symputx(''nobs'',_n_,''l'');'; put 'if missing(AUDIT_LIBDS) then AUDIT_LIBDS="&dclib..MPE_AUDIT";'; put 'call symputx(''AUDIT_LIBDS'',AUDIT_LIBDS,''l'');'; put 'put (_all_)(=);'; put 'run;'; put '/* check if table is actually configured to load */'; put '%if &nobs ne 1 %then %do;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="%mf_getuser()"'; put ',STATUS=''FAILED (BAD DS)'''; put ',CSV_DIR=symget(''ETLSOURCE'')'; put ',PROCESSED_DTTM=&now;'; put '%end;'; put '%mp_abort(iftrue= (&nobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Table not registered in &mpelib..mpe_tables)'; put ')'; put '%mp_abort(iftrue= (&nobs>1)'; put ',mac=&sysmacroname'; put ',msg=%str(Something is very wrong with the PK in &mpelib..mpe_tables)'; put ')'; put '%if &LOADTYPE=TXTEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to= /* explicitly empty*/'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=&ETLSOURCE'; put ',LOADTYPE=&loadtype'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=REPLACE %then %do;'; put '%if &LOADTARGET=YES %then %do;'; put '%mp_lockanytable(LOCK,lib=&lib,ds=&ds,ref=%str(&etlsource),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put 'data WORK.&STAGING_DS;'; put 'set WORK.&STAGING_DS;'; put '%if %mf_existvar(&libds,&VAR_PROCESSED) %then %do;'; put '&VAR_PROCESSED = &now;'; put '%end;'; put 'drop _____DELETE__THIS__RECORD_____;'; put 'run;'; put 'proc sql; delete * from &libds;'; put 'proc append base=&libds data=WORK.&STAGING_DS force nowarn;run;'; put '%mp_lockanytable(UNLOCK,lib=&lib,ds=&ds,ctl_ds=&dclib..mpe_lockanytable)'; put '%end;'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '%bitemporal_dataloader(bus_from=,bus_to='; put ',tech_from= ,tech_to = /* explicitly empty*/'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=UPDATE'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %if &loadtype=FORMAT_CAT %then %do;'; put '/**'; put '* run mp_formatload'; put '* inputs:'; put '* - LOADTARGET'; put '* - CATALOG'; put '* - STAGEDATA'; put '* - LOADAUDIT'; put '* outputs:'; put '* work.outds_add'; put '* work.outds_del'; put '* work.outds_mod'; put '*/'; put '%mp_loadformat(&orig_libds'; put ',&staging_ds'; put ',loadtarget=&LOADTARGET'; put ',auditlibds=&AUDIT_LIBDS'; put ',locklibds=&dclib..mpe_lockanytable'; put ',delete_col=_____DELETE__THIS__RECORD_____'; put ',outds_add=outds_add'; put ',outds_del=outds_del'; put ',outds_mod=outds_mod'; put ',mdebug=&mdebug'; put ')'; put '%end;'; put '%else %if &loadtype=BITEMPORAL %then %do;'; put '%bitemporal_dataloader(bus_from=&VAR_BUSFROM,bus_to=&VAR_BUSTO'; put ',tech_from=&VAR_TXFROM'; put ',tech_to = &VAR_TXTO'; put ',base_lib=&lib'; put ',base_dsn=&ds'; put ',append_lib=WORK'; put ',append_dsn=&STAGING_DS'; put ',high_date=''31DEC9999:23:59:59''dt'; put ',PK= &buskey'; put ',ETLSOURCE=%superq(etlsource)'; put ',LOADTYPE=BITEMPORAL'; put ',RK_UNDERLYING=&RK_UNDERLYING'; put ',LOADTARGET=&LOADTARGET'; put ',RK_UPDATE_MAXKEYTABLE=&LOADTARGET'; put ',CLOSE_VARS=&CLOSE_VARS'; put ',processed=&VAR_PROCESSED'; put ',dclib=&dclib'; put ',outds_audit=&AUDIT_LIBDS'; put ')'; put '%end;'; put '%else %do;'; put '%put WARNING: LOADTYPE &LOADTYPE not supported;'; put '%let syscc=4;'; put '%mp_abort(msg=LOADTYPE &LOADTYPE not supported,mac=mpe_targetloader.sas)'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc exiting MPE_TARGETLOADER macro)'; put ')'; put '%mend mpe_targetloader;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mf_getuniquelibref(prefix=mclib,maxtries=1000);'; put '%local x;'; put '%if ( %length(&prefix) gt 7 ) %then %do;'; put '%put %str(ERR)OR: The prefix parameter cannot exceed 7 characters.;'; put '0'; put '%return;'; put '%end;'; put '%else %if (%sysfunc(NVALID(&prefix,v7))=0) %then %do;'; put '%put %str(ERR)OR: Invalid prefix (&prefix);'; put '0'; put '%return;'; put '%end;'; put '/* Set maxtries equal to ''10 to the power of [# unused characters] - 1'' */'; put '%let maxtries=%eval(10**(8-%length(&prefix))-1);'; put '%do x = 0 %to &maxtries;'; put '%if %sysfunc(libref(&prefix&x)) ne 0 %then %do;'; put '&prefix&x'; put '%return;'; put '%end;'; put '%let x = %eval(&x + 1);'; put '%end;'; put '%put %str(ERR)OR: No usable libref in range &prefix.0-&maxtries;'; put '%put %str(ERR)OR- Try reducing the prefix or deleting some libraries!;'; put '0'; put '%mend mf_getuniquelibref;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file postdata.sas'; put '@brief Either returns the file diffs or actually loads the data to target'; put '@details Before loading the target, a check is made against the time the'; put 'target was last updated (backend) and the time the DIFF was generated'; put '(frontend). If the target was updated whilst the DIFF was on the screen,'; put 'then the provided diff may have been incorrect and so a new DIFF should be'; put 'generated and approved before load.'; put 'Only 100 rows (of each DIFF type) are displayed on the DIFF screen.'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|ACTION:$char10.|TABLE:$char32.|DIFFTIME:$char29.|'; put '|---|---|---|'; put '|SHOW_DIFFS|DC20220208T142124517_124703_1184|"Tue, 08 Feb 2022 14:23:05 GMT"|'; put '

SAS Macros

'; put '@li bitemporal_dataloader.sas'; put '@li dc_assignlib.sas'; put '@li mf_existds.sas'; put '@li mf_existvar.sas'; put '@li mf_getattrn.sas'; put '@li mf_getengine.sas'; put '@li mf_getquotedstr.sas'; put '@li mf_getuniquelibref.sas'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_lockanytable.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_alerts.sas'; put '@li mpe_runhook.sas'; put '@li mpe_targetloader.sas'; put '@li removecolsfromwork.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '/* this could be a config setting if required */'; put '%let maxdiff=100;'; put '%mpeinit()'; put '/* load parameters */'; put 'data _null_;'; put 'set work.sascontroltable;'; put 'call symputx(''ACTION'',ACTION);'; put 'call symputx(''TABLE'',TABLE);'; put '/* DIFFTIME is when the DIFF was generated on the frontend */'; put 'call symputx(''DIFFTIME'',DIFFTIME);'; put 'run;'; put '%global action is_err err_msg;'; put '%let is_err=0;'; put '%let user=%mf_getuser();'; put '%let sastime=%sysfunc(datetime());'; put 'data sastime;'; put 'dt_sastime=&sastime;'; put 'run;'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'picture flatdate other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/* SHOW_DIFFS works by getting the temp tables from the bitemporal loader */'; put '/* so we share much of the logic from the actual load process */'; put '%let isfmtcat=0;'; put 'data APPROVE1;'; put 'set &mpelib..mpe_submit;'; put 'where TABLE_ID="&TABLE";'; put '/* fetch mpe_submit data */'; put 'libds=cats(base_lib,''.'',base_ds);'; put 'REVIEWED_ON=put(reviewed_on_dttm,datetime19.);'; put 'call symputx(''REVIEW_STATUS_ID'',submit_status_cd,''l'');'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED);'; put 'call symputx(''num_of_approvals_remaining'',num_of_approvals_remaining);'; put '/* other stuff that''s useful to do in data step */'; put 'call symputx(''orig_libds'',libds);'; put 'call symputx(''libds'',libds);'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''isfmtcat'',1);'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'putlog (_all_)(=);'; put '/* convert provided string DIFFTIME back to a numeric SAS datetime */'; put 'if "&action" ne "SHOW_DIFFS" then do;'; put 'call symputx(''DIFFTIME'',input(symget(''DIFFTIME''),anydtdtm18.));'; put 'end;'; put 'length difftime $32;'; put 'DIFFTIME=put(&sastime,datetime19.2);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&isfmtcat=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(difftime orig_libds libds table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: difftime orig_libds libds table)'; put ')'; put '/* security checks */'; put '%mpe_accesscheck(&orig_libds,outds=authEDIT,user=&user,access_level=EDIT)'; put '%mpe_accesscheck(&orig_libds,outds=authAPP,user=&user,access_level=APPROVE)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc Before entering postdata macro)'; put ')'; put '%mp_abort('; put 'iftrue=('; put '%mf_getattrn(work.authEDIT,NLOBS)=0 & %mf_getattrn(work.authAPP,NLOBS)=0'; put ')'; put ',mac=&_program'; put ',msg=%str(&user not authorised to view approval screen for &orig_libds)'; put ')'; put '%macro quickmacro(inds,outds);'; put 'data &outds ;'; put '%if %length(&VAR_BUSFROM)>0 %then %do;'; put 'format &VAR_BUSFROM &VAR_BUSTO yymmddhhmmss.;'; put '%end;'; put 'if 0 then set &emptybasetable;'; put 'set &inds;'; put '%if %mf_existvar(&libds,&var_txfrom) %then %do;'; put 'drop &var_txfrom &var_txto;'; put '%end;'; put '%if %mf_existvar(&inds,_____DELETE__THIS__RECORD_____) %then %do;'; put 'drop _____DELETE__THIS__RECORD_____;'; put '%end;'; put '%if %mf_existvar(&inds,&VAR_PROCESSED) %then %do;'; put 'drop &VAR_PROCESSED;'; put '%end;'; put 'run;'; put '%mend quickmacro;'; put '%macro postdata();'; put '%if %quote(&REVIEW_STATUS_ID)=%quote(REJECTED)'; put 'or %quote(&REVIEW_STATUS_ID)=%quote(APPROVED) %then'; put '%do;'; put 'data params; set approve1; run;'; put '%webout(OPEN)'; put '%webout(OBJ,PARAMS)'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if &action=APPROVE_TABLE %then %do;'; put '/* check user is authorised to approve table */'; put '/* user could be an editor but not an approver */'; put '%mp_abort(iftrue= (%mf_getattrn(work.authAPP,NLOBS)=0)'; put ',mac=&_program'; put ',msg=%str(&user may not APPROVE changes)'; put ')'; put '/* see if this user has already submitted an approval */'; put '%let prev_upload_check=1;'; put 'proc sql;'; put 'select count(*) into: prev_upload_check from &mpelib..mpe_review'; put 'where TABLE_ID="&TABLE" and REVIEWED_BY_NM="&user"'; put 'and REVIEW_STATUS_ID ne "SUBMITTED";'; put '%let authcheck=%mf_getattrn(work.authAPP,NLOBS);'; put '%if &authcheck=0 or &prev_upload_check=1 %then %do;'; put '%put WARNING: authcheck=&authcheck prev_upload_check=&prev_upload_check;'; put 'data apPARAMS;'; put 'AUTHORISED=&authcheck;'; put 'PREV_UPLOAD_CHECK=&prev_upload_check;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,apPARAMS);'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '/* now check if table has been updated since DIFF screen shown */'; put '%local fmt_tm usernm last_load etlsource;'; put '%let last_load=0;'; put 'proc sql noprint;'; put 'select max(processed_dttm) format=16.2 into: last_load'; put 'from &mpelib..mpe_dataloads'; put 'where libref="%scan(&orig_libds,1,.)" and dsn="%scan(&orig_libds,2,.)";'; put 'select processed_dttm format=datetime19., user_nm, etlsource'; put 'into: fmt_tm, :usernm, :etlsource'; put 'from &mpelib..mpe_dataloads'; put 'where libref="%scan(&orig_libds,1,.)" and dsn="%scan(&orig_libds,2,.)"'; put 'and processed_dttm=&last_load;'; put '%put TIMECHECK: &last_load>&difftime;'; put '%if %sysevalf(&last_load>&difftime,boolean)=1 %then %do;'; put '%let is_err=1;'; put '%let err_msg=&orig_libds was updated in batch %trim(&etlsource'; put ') by %trim(&usernm) on &fmt_tm - please refresh the page!!;'; put '%return;'; put '%end;'; put '%if &syscc ne 0 %then %do;'; put '%let is_err=1;'; put '%let err_msg=syscc=&syscc before logchange;'; put '%return;'; put '%end;'; put '/* upload about to commence so ensure logs */'; put 'options notes mprint source2;'; put '%local oldloc;'; put '%if %symexist(SYSPRINTTOLOG) %then %let oldloc=&SYSPRINTTOLOG;'; put '%else %let oldloc=%qsysfunc(getoption(LOG));'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto'; put 'log="&mpelocapprovals/&TABLE/approval.log";'; put 'run;'; put 'data _null_;'; put 'if _n_=1 then do;'; put 'length oldloc $1000;'; put 'oldloc=symget(''oldloc'');'; put 'putlog "****** redirected:" oldloc " *****";'; put 'end;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc printto'; put 'log="&mpelocapprovals/&TABLE/approval.log";'; put 'run;'; put '%end;'; put '%if &syscc ne 0 %then %do;'; put '%let is_err=1;'; put '%let err_msg=syscc=&syscc after logchange;'; put '%return;'; put '%end;'; put '%end;'; put '/**'; put '* upload the actual table'; put '*/'; put '%local libref ds;'; put '%let libref=%scan(&orig_libds,1,.);'; put '%let ds=%scan(&orig_libds,2,.);'; put 'proc sql noprint;'; put 'select PRE_APPROVE_HOOK, POST_APPROVE_HOOK, LOADTYPE, var_txfrom, var_txto'; put ',BUSKEY, VAR_BUSFROM, VAR_BUSTO'; put ',AUDIT_LIBDS, NOTES, coalesce(NUM_OF_APPROVALS_REQUIRED,1)'; put ',VAR_PROCESSED'; put 'into: PRE_APPROVE_HOOK, :POST_APPROVE_HOOK, :LOADTYPE,:var_txfrom,:var_txto'; put ',:BUSKEY,:VAR_BUSFROM,:VAR_BUSTO'; put ',:AUDIT_LIBDS, :TABLE_DESC, :NUM_OF_APPROVALS_REQUIRED_TOT'; put ',:VAR_PROCESSED'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="&libref"'; put 'and dsn="&ds";'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mpelocapprovals orig_libds)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: mpelocapprovals orig_libds)'; put ')'; put '/* get dataset from approvals location */'; put '%let tmplib=%mf_getuniquelibref();'; put 'libname &tmplib "&mpelocapprovals/&TABLE";'; put 'data STAGING_DS;'; put 'set &tmplib..&TABLE;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc before preapprove)'; put ')'; put '%dc_assignlib(WRITE,&libref)'; put '/* run pre-approve hook - occurs both BEFORE _and_ AFTER the diff */'; put '%mpe_runhook(PRE_APPROVE_HOOK)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after preapprove)'; put ')'; put '%if &num_of_approvals_remaining>1 and &action=APPROVE_TABLE %then %do;'; put '/* append to mpe_review table */'; put '%let apprno=%eval(&num_of_approvals_required-&num_of_approvals_remaining+1);'; put 'data work.append_review;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&TABLE";'; put 'BASE_TABLE="&orig_libds";'; put 'REVIEW_STATUS_ID="APPROVED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&sastime;'; put 'REVIEW_REASON_TXT="APPROVAL &apprno of &num_of_approvals_required";'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.append_review;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* update mpe_submit table */'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set num_of_approvals_remaining=&num_of_approvals_remaining-1,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&sastime'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'data apReqd;'; put 'AUTHORISED=1;'; put 'ALREADY_UPDATED=0;'; put 'ALREADY_UPDATED_DTTM=.;'; put 'set approve1; /* js will test for NUM_OF_APPROVALS_REQUIRED */'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,apReqd);'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc entering TARGETLOADER)'; put ')'; put '%mpe_targetloader(libds=&orig_libds'; put ',now= &sastime'; put ',etlsource=&TABLE'; put ',STAGING_DS=STAGING_DS'; put ',dclib=&mpelib'; put '%if &action=APPROVE_TABLE %then %do;'; put ',LOADTARGET=YES'; put '%end;'; put '%else %do;'; put ',LOADTARGET=NO'; put '%end;'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%if %mf_getattrn(STAGING_DS,NLOBS)=0 %then %do;'; put '/* empty dataset! */'; put 'data out;'; put 'set STAGING_DS;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc entering SHOWDIFFS)'; put ')'; put '%if &action=SHOW_DIFFS %then %do;'; put '/**'; put '* Now prepare the SHOW DIFFS (approve) screen'; put '*/'; put '/*To create the CURRENT diffs, we compare with the ACTUAL data. But first'; put 'need to find out what version TIME to query it for.. */'; put 'proc sql noprint;'; put 'select max(processed_dttm)-1 format=datetime19. into: tstamp'; put 'from &mpelib..mpe_dataloads'; put 'where libref="&libref" and dsn="&ds" and ETLSOURCE="&TABLE";'; put 'quit;'; put '%if &tstamp=. %then %let tstamp=%sysfunc(datetime(),datetime19.);'; put '/**'; put '* now create the DIFFS dataset'; put '* If using a database, then utilise pass through!'; put '* Create a temporary table inside the database for joins..'; put '*/'; put 'options mprint;'; put '%let engine_type=%mf_getEngine(%scan(&libds,1,.));'; put '%put &libds engine type = &engine_type;'; put '%local inner_table ;'; put '%if &engine_type=OLEDB %then %do;'; put '/* generate a unique ID for the temporary table */'; put 'data _null_;'; put 'call symputx(''UNIQUE_REF'''; put ',cats(round(datetime(),1)'; put ',''_'''; put ',round(ranuni(0)*100000,1)'; put ')'; put ',''l'''; put ');'; put 'run;'; put '%let inner_table=&libref.."##DIFF_&UNIQUE_REF"n;'; put 'proc sql;'; put 'create table &inner_table as'; put 'select * from work.outds_mod;'; put '%end;'; put '%else %let inner_table=work.outds_mod;'; put 'proc sql;'; put 'create view work.originals2 as'; put 'select b.*'; put 'from &inner_table a'; put 'inner join &libds'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '(where=("&tstamp"dt < &VAR_TXTO))'; put '%end;'; put 'b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&buskey));'; put '%let idx_val=%scan(&buskey,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by %mf_getquotedstr(in_str=&buskey,dlm=%str(,),quote=)'; put ';'; put 'create view bitemp5c_updates2 as'; put 'select * from work.outds_mod'; put 'order by %mf_getquotedstr(in_str=&buskey,dlm=%str(,),quote=)'; put ';'; put 'data; set &libds;stop;run;'; put '%let emptybasetable=&syslast;'; put 'options varlenchk=nowarn; /* for small numerics (<8) */'; put '%quickmacro(work.outds_del,deleted)'; put '%quickmacro(work.outds_add,new)'; put '%quickmacro(bitemp5c_updates2,updates)'; put '%quickmacro(originals2,originals)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc in quickmacro)'; put ')'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=work.updates'; put 'out=cols (keep=name type length varnum format);'; put 'run;'; put 'proc sort data=cols out=cols(drop=varnum); by varnum;run;'; put 'data cols; set cols; name=upcase(name);run;'; put '%let tempDIFFS_CSV=tempDiffs_%trim('; put '%sysfunc(datetime(),flatdate.)).csv;'; put '/**'; put '* Store temp tables so we have a record of diffs'; put '* do not change this libname or table name as it is used in some'; put '* post approve hooks'; put '*/'; put 'data TEMPDIFFS (compress=no) /* for realistic file size */;'; put 'length _____status $10;'; put 'set work.deleted (in=_____del)'; put 'work.new(in=_____new)'; put 'work.updates (in=_____upd)'; put 'work.originals2 (in=_____orig);'; put 'if _____del then _____status=''DELETED '';'; put 'else if _____new then _____status=''NEW'';'; put 'else if _____upd then _____status=''UPDATED'';'; put 'else if _____orig then _____status=''ORIGINAL'';'; put 'run;'; put 'proc export data=TEMPDIFFS dbms=csv replace'; put 'outfile="&mpelocapprovals/&TABLE/&tempDIFFS_CSV" ;'; put 'run;'; put 'proc sql noprint;'; put 'select filesize format=sizekmg10.1, filesize as filesize_raw'; put 'into: filesize,:filesize_raw'; put 'from dictionary.tables'; put 'where libname=''WORK'' and memtype=''DATA'' and memname=''TEMPDIFFS'';'; put 'data params;'; put 'set approve1;'; put 'DIFFS_CSV="&tempDIFFS_CSV";'; put 'FILESIZE="&filesize";'; put 'FILESIZE_RAW=&filesize_raw;'; put 'if %mf_nobs(work.originals)>&maxdiff'; put 'or %mf_nobs(work.new)>&maxdiff'; put 'or %mf_nobs(work.deleted)>&maxdiff'; put 'or %mf_nobs(work.updates)>&maxdiff'; put 'then TRUNCATED="YES";'; put 'else TRUNCATED="NO";'; put 'NUM_ADDED=%mf_getattrn(work.new,NLOBS);'; put 'NUM_DELETED=%mf_getattrn(work.deleted,NLOBS);'; put 'NUM_UPDATED=%mf_getattrn(work.updates,NLOBS);'; put 'SUBMITTED_ON=put(submitted_on_dttm,datetime19.);'; put '%if %mf_getattrn(work.authAPP,NLOBS)>0 %then %do;'; put 'ISAPPROVER=''YES'';'; put '%end;'; put '%else %do;'; put 'ISAPPROVER=''NO'';'; put '%end;'; put 'run;'; put '/*'; put '* The PRE_APPROVE_HOOK may have applied custom formats to the staged table.'; put '* To ensure consistency in the DIFF screen, we should apply the same formats'; put '* to the base table. Limit rows at the same time.'; put '*/'; put 'data work.originals;'; put 'if 0 then set deleted new updates;'; put 'set work.originals;'; put 'if _n_>&maxdiff then stop;'; put 'run;'; put '/* get additional submits against the same base table */'; put 'proc sort data=&mpelib..mpe_submit(where=('; put 'submit_status_cd=''SUBMITTED'''; put 'and cats(base_lib,''.'',base_ds)="&orig_libds"'; put 'and table_id ne "&TABLE"'; put ')) out=submits;'; put 'by descending submitted_on_dttm;'; put 'run;'; put '/* filter last 10 */'; put 'data submits;'; put 'set submits;'; put 'if _n_>10 then stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc SHOWDIFFS prior to streamout)'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,params)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,submits)'; put '%webout(OBJ,deleted,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,new,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,updates,fmt=N,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,ORIGINALS,fmt=N,missing=STRING)'; put '/* need same for formatted view */'; put '%webout(OBJ,deleted,dslabel=fmt_deleted,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,new,dslabel=fmt_new,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,updates,dslabel=fmt_updates,fmt=Y,missing=STRING,maxobs=&maxdiff)'; put '%webout(OBJ,originals,dslabel=fmt_ORIGINALS,fmt=Y,missing=STRING)'; put '%webout(CLOSE)'; put '%if &engine_type=OLEDB %then %do;'; put 'proc sql; /* needs to be dropped AFTER view execution */'; put 'drop table &inner_table;'; put '%end;'; put '%return;'; put '%end;'; put '%if &action=APPROVE_TABLE %then %do;'; put '%approve:'; put '/**'; put '* store temp tables so we have a record of diffs'; put '* do not change this libname or table name as it is used in some'; put '* post approve hooks'; put '* for REPLACE loads, temp tables not made, so make them'; put '*/'; put '%if &LOADTYPE=REPLACE %then %do;'; put 'data work.outds_add; run;'; put 'data work.outds_mod; run;'; put '%end;'; put 'libname approve "&mpelocapprovals/&TABLE";'; put 'data; set &libds;stop;run;'; put '%let emptybasetable=&syslast;'; put 'data approve.ActualDiffs;'; put 'length _____STATUS_____ $10;'; put 'if 0 then set &emptybasetable;'; put 'set work.outds_del (in=_____del)'; put 'work.outds_add (in=_____new)'; put 'work.outds_mod (in=_____upd);'; put 'if _____del then _____STATUS_____=''DELETED'';'; put 'else if _____new then _____STATUS_____=''NEW'';'; put 'else if _____upd then _____STATUS_____=''UPDATED'';'; put '%if %mf_existvar(&libds,&var_txfrom) %then %do;'; put 'drop &var_txfrom &var_txto;'; put '%end;'; put '%if %mf_existvar(&libds,&VAR_PROCESSED) %then %do;'; put 'drop &VAR_PROCESSED;'; put '%end;'; put 'run;'; put 'proc export data=approve.ActualDiffs'; put 'outfile="&mpelocapprovals/&TABLE/ActualDiffs.csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control table to show table as approved */'; put '/* append to mpe_review table */'; put '%let apprno=%eval(&num_of_approvals_required-&num_of_approvals_remaining+1);'; put 'data work.append_review;'; put 'if 0 then set &mpelib..mpe_review;'; put 'TABLE_ID="&TABLE";'; put 'BASE_TABLE="&orig_libds";'; put 'REVIEW_STATUS_ID="APPROVED";'; put 'REVIEWED_BY_NM="&user";'; put 'REVIEWED_ON_DTTM=&sastime;'; put 'REVIEW_REASON_TXT="APPROVAL &apprno of &num_of_approvals_required";'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_review,ref=%str(&table Approval),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base=&mpelib..mpe_review data=work.append_review;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_review,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* update mpe_submit table */'; put '%mp_lockanytable(LOCK,'; put 'lib=&mpelib,ds=mpe_submit,ref=%str(&table Approval in auditors/postdata),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc sql;'; put 'update &mpelib..mpe_submit'; put 'set submit_status_cd=''APPROVED'','; put 'num_of_approvals_remaining=&num_of_approvals_remaining-1,'; put 'reviewed_by_nm="&user",'; put 'reviewed_on_dttm=&sastime'; put 'where table_id="&table";'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* run post-approve hook */'; put '%mpe_runhook(POST_APPROVE_HOOK)'; put 'data apPARAMS;'; put 'AUTHORISED=1;'; put 'ALREADY_UPDATED=0;'; put 'ALREADY_UPDATED_DTTM=.;'; put 'DIFFTIME="&difftime";'; put 'if &syscc=0 then RESPONSE=''SUCCESS!'';'; put 'else response="SYSCC=&syscc.";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program 582'; put ',msg=%superq(msg)'; put ')'; put '%mpe_alerts(alert_event=APPROVED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&TABLE'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,apPARAMS)'; put '%webout(CLOSE)'; put '%return;'; put '%end;'; put '%mend postdata;'; put '%postdata()'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort(iftrue= (&is_err=1)'; put ',mac=&_program'; put ',msg=%superq(err_msg)'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/editors; %let service=getdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mpe_columnlevelsecurity(tgtlib,tgtds,inds'; put ',mode=VIEW'; put ',groupds=work.groups'; put ',clsds=work.clsview'; put ',outds=CLSVIEW'; put ',outmeta=work.cls_rules'; put ');'; put '%local col_list is_admin;'; put '/* filter for the appropriate rules */'; put 'proc sql;'; put 'create table &outmeta as'; put 'select CLS_VARIABLE_NM,'; put 'min(case when CLS_HIDE=1 then 1 else 0 end) as CLS_HIDE'; put 'from &clsds'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("&mode",''ALL'')'; put 'and CLS_ACTIVE=1'; put '%if &mode=VIEW %then %do;'; put 'and CLS_HIDE ne 1'; put '%end;'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from &groupds)'; put 'and CLS_LIBREF="%upcase(&tgtlib)"'; put 'and CLS_TABLE="%upcase(&tgtds)"'; put 'group by CLS_VARIABLE_NM;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from &groupds where groupname="&MPEADMINS";'; put '%put &sysmacroname: &=is_admin;'; put '%if %mf_nobs(work.cls_rules) = 0 or &is_admin>0 %then %do;'; put '%put &sysmacroname: no CLS rules to apply;'; put '%put &=is_admin;'; put '/* copy using append for speed */'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '/* ensure CLS_RULES is empty in case of admin */'; put 'data &outmeta;'; put 'set &outmeta;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &mode=VIEW %then %do;'; put '/* just send back the relevant columns */'; put '%let col_list=0;'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=0;'; put '%if &col_list=0 %then %do;'; put '/*'; put 'We have columns that are set to CLS_HIDE=1 but we do not have any to'; put 'explicitly show. Therefore we assume all columns are to be shown except'; put 'those that are explicitly hidden.'; put '*/'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=1;'; put 'data &outds;'; put 'set &inds;'; put 'drop &col_list;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'set &inds;'; put 'keep &col_list;'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &mode=EDIT %then %do;'; put '/*'; put 'In this case we pass all columns and the frontend will filter out the'; put 'ones that are not allowed to be edited.'; put '*/'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: invalid mode - &mode!;'; put '%abort;'; put '%end;'; put '%mend mpe_columnlevelsecurity;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mpe_getlabels(type,source,outds=mpe_getlabels);'; put '%local tmpds;'; put '%if &type=COLUMNS %then %do;'; put '%let tmpds=%mf_getuniquename();'; put 'proc contents noprint data=&source'; put 'out=&tmpds(keep=name memlabel label);'; put 'run;'; put 'proc sql ;'; put 'create table &outds as'; put 'select upcase(a.name) as name'; put ',a.memlabel'; put ',coalesce(b.dd_shortdesc,a.label) as desc'; put ',b.dd_longdesc as longdesc'; put 'from &tmpds a'; put 'left join &mpelib..mpe_datadictionary'; put '(where=(&dc_dttmtfmt. < tx_to'; put 'and dd_source ? %upcase("&source")'; put 'and dd_type=''COLUMN'')) b'; put 'on scan(b.dd_source,-1,''.'')=upcase(a.name);'; put '%end;'; put '%mend mpe_getlabels;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mm_getgroupmembers('; put 'group /* metadata group for which to bring back members */'; put ',outds=work.mm_getgroupmembers /* output dataset to contain the results */'; put ',emails=NO /* set to yes to bring back emails also */'; put ',id=NO /* set to yes if passing an ID rather than group name */'; put ')/*/STORE SOURCE*/;'; put 'data &outds ;'; put 'attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType'; put 'euri email length=$64'; put 'GroupDesc length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'drop uriGrp uriMem rcGrp rcMem rc i j arc ;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put '%if &id=NO %then %do;'; put 'rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Name=''&group''",i,uriGrp);'; put '%end;'; put '%else %do;'; put 'rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Id=''&group''",i,uriGrp);'; put '%end;'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role'; put ',MemberName,MemberType);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",GroupId);'; put 'rc = metadata_getattr(uriGrp,"Name",GroupName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",GroupDesc);'; put 'j=1;'; put 'do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName, MemberType, email);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'if membertype=''User'' and "&emails"=''YES'' then do;'; put 'if metadata_getnasn(uriMem,"EmailAddresses",1,euri)>0 then do;'; put 'arc=metadata_getattr(euri,"Address",email);'; put 'end;'; put 'end;'; put 'output;'; put 'j+1;'; put 'end;'; put 'end;'; put 'run;'; put '%mend mm_getgroupmembers;'; put '%macro dc_getgroupmembers(group,outds=dc_getgroupmembers);'; put '%mm_getgroupmembers(&group,outds=&outds)'; put '%mend dc_getgroupmembers;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_dsmeta(libds,outds=work.dsmeta);'; put '%local ds1 ds2;'; put 'data;run; %let ds1=&syslast;'; put 'data;run; %let ds2=&syslast;'; put '/* setup the ODS capture */'; put 'ods output attributes=&ds1 enginehost=&ds2;'; put '/* export the metadata */'; put 'proc contents data=&libds;'; put 'run;'; put '/* load it into a single table */'; put 'data &outds (keep=ods_table name value);'; put 'length ods_table $10 name label2 label1 label $100'; put 'value cvalue cvalue1 cvalue2 $1000'; put 'nvalue nvalue1 nvalue2 8;'; put 'if _n_=1 then call missing (of _all_);'; put '* putlog (_all_)(=);'; put 'set &ds1 (in=atrs) &ds2 (in=eng);'; put 'if atrs then do;'; put 'ods_table=''ATTRIBUTES'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'if label2 ne '''' then do;'; put 'name=label2;'; put 'value=coalescec(cvalue2,put(nvalue2,best.));'; put 'output;'; put 'end;'; put 'end;'; put 'else if eng then do;'; put 'ods_table=''ENGINEHOST'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &ds1, &ds2;'; put '%mend mp_dsmeta;'; put '%macro mp_getcols(ds, outds=work.cols);'; put '%local dropds;'; put 'proc contents noprint data=&ds'; put 'out=_data_ (keep=name type length label varnum format:);'; put 'run;'; put '%let dropds=&syslast;'; put 'data &outds(keep=name type length varnum format label ddtype fmtname);'; put 'set &dropds(rename=(format=fmtname type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if fmtname='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else format=cats(fmtname,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if fmtname='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else if formatd=0 then format=cats(fmtname,formatl,''.'');'; put 'else format=cats(fmtname,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put 'proc sql;'; put 'drop table &dropds;'; put '%mend mp_getcols;'; put '%macro mcf_init(func'; put ')/*/STORE SOURCE*/;'; put '%if not (%symexist(SASJS_PREFIX)) %then %do;'; put '%global SASJS_PREFIX;'; put '%let SASJS_PREFIX=SASJS;'; put '%end;'; put '%let func=%upcase(&func);'; put '/* the / character is just a seperator */'; put '%global &sasjs_prefix._FUNCTIONS;'; put '%if %index(&&&sasjs_prefix._FUNCTIONS,&func/)>0 %then %do;'; put '1'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &sasjs_prefix._FUNCTIONS=&&&sasjs_prefix._FUNCTIONS &func/;'; put '0'; put '%end;'; put '%mend mcf_init;'; put '%macro mcf_length(wrap=NO'; put ',insert_cmplib=DEPRECATED'; put ',lib=WORK'; put ',cat=SASJS'; put ',pkg=UTILS'; put ')/*/STORE SOURCE*/;'; put '%local i var cmpval found;'; put '%if %mcf_init(mcf_length)=1 %then %return;'; put '%if &wrap=YES %then %do;'; put 'proc fcmp outlib=&lib..&cat..&pkg;'; put '%end;'; put 'function mcf_length(var);'; put 'if var=. then len=0;'; put 'else if missing(var) or trunc(var,3)=var then len=3;'; put 'else if trunc(var,4)=var then len=4;'; put 'else if trunc(var,5)=var then len=5;'; put 'else if trunc(var,6)=var then len=6;'; put 'else if trunc(var,7)=var then len=7;'; put 'else len=8;'; put 'return(len);'; put 'endsub;'; put '%if &wrap=YES %then %do;'; put 'quit;'; put '%end;'; put '/* insert the CMPLIB if not already there */'; put '%let cmpval=%sysfunc(getoption(cmplib));'; put '%let found=0;'; put '%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));'; put '%let var=%scan(&cmpval,&i,%str( %(%)));'; put '%if &var=&lib..&cat %then %let found=1;'; put '%end;'; put '%if &found=0 %then %do;'; put 'options insert=(CMPLIB=(&lib..&cat));'; put '%end;'; put '%mend mcf_length;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mp_getmaxvarlengths('; put 'libds'; put ',num2char=NO'; put ',outds=work.mp_getmaxvarlengths'; put ')/*/STORE SOURCE*/;'; put '%local vars prefix x var fmt srcds;'; put '%let vars=%mf_getvarlist(libds=&libds);'; put '%let prefix=%substr(%mf_getuniquename(),1,25);'; put '%let num2char=%upcase(&num2char);'; put '%if &num2char=NO %then %do;'; put '/* compile length function for numeric fields */'; put '%mcf_length(wrap=YES, insert_cmplib=YES)'; put '%end;'; put '%if &num2char=NO'; put 'and ("%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5")'; put 'and %mf_getvarcount(&libds,typefilter=N) gt 0'; put '%then %do;'; put '/* custom functions not supported in summary operations */'; put '%let srcds=%mf_getuniquename();'; put 'data &srcds/view=&srcds;'; put 'set &libds;'; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let var=%scan(&vars,&x);'; put '%if %mf_getvartype(&libds,&var)=N %then %do;'; put '&prefix.&x=mcf_length(&var);'; put '%end;'; put '%end;'; put 'run;'; put '%end;'; put '%else %let srcds=&libds;'; put 'proc sql;'; put 'create table &outds (rename=('; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '&prefix.&x=%scan(&vars,&x)'; put '%end;'; put '))'; put 'as select'; put '%do x=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let var=%scan(&vars,&x);'; put '%if &x>1 %then ,;'; put '%if %mf_getvartype(&libds,&var)=C %then %do;'; put 'max(lengthn(&var)) as &prefix.&x'; put '%end;'; put '%else %if &num2char=YES %then %do;'; put '%let fmt=%mf_getvarformat(&libds,&var);'; put '%put fmt=&fmt;'; put '%if %str(&fmt)=%str() %then %do;'; put 'max(lengthn(cats(&var))) as &prefix.&x'; put '%end;'; put '%else %do;'; put 'max(lengthn(put(&var,&fmt))) as &prefix.&x'; put '%end;'; put '%end;'; put '%else %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then %do;'; put 'max(&prefix.&x) as &prefix.&x'; put '%end;'; put '%else %do;'; put 'max(mcf_length(&var)) as &prefix.&x'; put '%end;'; put '%end;'; put '%end;'; put 'from &srcds;'; put 'proc transpose data=&outds'; put 'out=&outds(rename=(_name_=NAME COL1=MAXLEN));'; put 'run;'; put '%mend mp_getmaxvarlengths;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdata.sas'; put '@brief Returns a dataset to the editor front end'; put '@details'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|FILTER_RK:$5.|'; put '|---|---|'; put '|DC258467.MPE_X_TEST|-1|'; put '

Service Outputs

'; put '
sasdata
'; put '
sasparams
'; put 'Contains info on the request. One row is returned.'; put '* CLS_FLG - set to 0 if there are no CLS rules (everything should be editable)'; put 'else set to 1 (CLS rules exist)'; put '
approvers
'; put '
dqrules
'; put '
dqdata
'; put '
cols
'; put 'Contains column level attributes.'; put '@li NAME - column name'; put '@li VARNUM - variable position. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li LABEL - variable label. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li FMTNAME - derived format name. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li DDTYPE - derived dropdown type. Source: https://core.sasjs.io/mp__getcols_8sas.html'; put '@li CLS_RULE - values include:'; put '- EDIT - the column is editable'; put '- READ - the column should be readonly'; put '- HIDE - the column should be hidden'; put '@li memlabel'; put '@li desc- augmented with MPE_DATADICTIONARY if exists, else label'; put '@li longdesc - from MPE_DATADICTIONARY'; put '
maxvarlengths
'; put '
xl_rules
'; put '
query
'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_getgroupmembers.sas'; put '@li mf_existvar.sas'; put '@li mf_getattrn.sas'; put '@li mf_getvarlist.sas'; put '@li mf_existds.sas'; put '@li mf_getquotedstr.sas'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_dsmeta.sas'; put '@li mp_getcols.sas'; put '@li mp_getmaxvarlengths.sas'; put '@li mp_validatecol.sas'; put '@li mpe_accesscheck.sas'; put '@li mpe_columnlevelsecurity.sas'; put '@li mpe_getlabels.sas'; put '@li mpe_filtermaster.sas'; put '@li mpe_runhook.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* Validate inputs'; put '*/'; put 'data work.intest;'; put 'length filter_rk 8;'; put 'set work.SASCONTROLTABLE;'; put '/* validate filter_rk */'; put 'if filter_rk le 0 then filter_rk=-1;'; put 'call symputx(''orig_libds'',upcase(libds));'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'is_fmt=1;'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''filter_rk'',filter_rk);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(Some err with service inputs)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(libds filter_rk)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: libds filter_rk)'; put ')'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* stream back meta info, further calls will return col metadata and actual data'; put '*/'; put '%let libref=%upcase(%scan(&libds,1,.));'; put '%let dsn=%upcase(%scan(&libds,2,.));'; put '%dc_assignlib(WRITE,&libref)'; put '/**'; put '* First check user has access permission to edit the table'; put '*/'; put '%put checking access;'; put '%let user=%mf_getuser();'; put '%mpe_accesscheck(&orig_libds,outds=mw_auth,user=&user,access_level=EDIT)'; put '%mp_abort(iftrue= (%mf_getattrn(work.mw_auth,NLOBS)=0)'; put ',mac=mpestp_getdata.sas'; put ',msg=&user is not authorised to edit &orig_libds %trim('; put ')in the &mpelib..MPE_SECURITY table'; put ')'; put '%mp_abort(iftrue= ( %mf_existds(libds=&libds) ne 1)'; put ',mac=mpestp_getdata.sas'; put ',msg=dataset &libds does not exist!!'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at line 60 )'; put ')'; put '%global loadtype var_txfrom var_txto var_processed filter_text pk coltype'; put 'sortpk;'; put '%put getting table attributes;'; put 'proc sql noprint;'; put 'select upcase(loadtype)'; put ',var_txfrom,var_txto'; put ',var_busfrom,var_busto'; put ',var_processed,rk_underlying,buskey'; put ',coalesce(rk_underlying,buskey)'; put ',pre_edit_hook'; put ',case when missing(rk_underlying) then buskey else rk_underlying end'; put 'into: loadtype,:var_txfrom,:var_txto'; put ',:var_busfrom ,:var_busto'; put ',:var_processed,:rk_underlying,:buskey, :sortPK, :pre_edit_hook,:pk'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt TX_TO'; put 'and upcase(dsn)="%scan(&orig_libds,2,.)"'; put 'and upcase(libref)="%scan(&orig_libds,1,.)";'; put '%put preparing filter query:;'; put '%mpe_filtermaster(EDIT,&orig_libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter_rk,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%macro mpestp_getdata();'; put '%if not %symexist(DC_MAXOBS_WEBEDIT) %then %do;'; put '%put NOTE:;%put NOTE- DC_MAXOBS_WEBEDIT not found!;'; put '%put NOTE- Please add to &mpelib..MPE_CONFIG table;'; put '%put NOTE-;%put NOTE-;'; put '%global DC_MAXOBS_WEBEDIT;'; put '%let DC_MAXOBS_WEBEDIT=500;'; put '%end;'; put '/* for tables which use RKs/SKs then we just expose the business key to'; put 'users - this lets uploads be sent to multiple environments (with'; put 'potentially different RK/SK values for the same business key).'; put 'Note that the config table has the RK column in the buskey field in'; put 'this scenario. */'; put '%if %length(&rk_underlying)>0 %then %let drop_rk=&buskey;'; put '%else %let drop_rk=;'; put '/* always remove the PROCESSED_DTTM column, if it exists */'; put '%if %length(&var_processed)=0 %then %do;'; put '%if %mf_existvar(&libds,PROCESSED_DTTM)>0 %then'; put '%let var_processed=PROCESSED_DTTM;'; put '%end;'; put '/**'; put '* Now get the slice of the actual table'; put '*/'; put 'options obs=10000;'; put '%if &loadtype=BITEMPORAL %then %do;'; put 'data out (drop=&var_txfrom &var_txto &var_processed &drop_rk );'; put '_____DELETE__THIS__RECORD_____="No";'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put 'proc sort data=out;'; put 'by &pk &var_busfrom;'; put 'run;'; put 'data out;'; put 'set out;'; put 'by &pk &var_busfrom;'; put 'if last.%scan(&pk,-1);'; put 'run;'; put '%end;'; put '%else %do;'; put 'data out (drop=&var_txfrom &var_txto &var_processed &drop_rk);'; put '_____DELETE__THIS__RECORD_____="No";'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put '%end;'; put 'options obs=max;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Issue with filtering (line 165) )'; put ')'; put 'options obs=&DC_MAXOBS_WEBEDIT;'; put '%let sortpk=%sysfunc(coalescec(&sortpk &var_busfrom,_ALL_));'; put 'proc sort data=work.out; by &sortPK; run;'; put 'options obs=max;'; put '%mpe_runhook(PRE_EDIT_HOOK)'; put '%let obscnt=%mf_getattrn(work.out,NLOBS);'; put '%mp_abort(iftrue=(&obscnt>&DC_MAXOBS_WEBEDIT)'; put ',mac=&_program'; put ',msg=Table is too big (&obscnt rows) - please filter and try again!'; put ')'; put '/* order delete var and pk fields at start of table */'; put '%let sourcevars=%mf_wordsInStr1ButNotStr2('; put 'Str1=%mf_getvarlist(work.out)'; put ',Str2= _____DELETE__THIS__RECORD_____ &pk'; put ');'; put '%put sourcevars=&sourcevars;'; put 'data outdata;'; put '/* delete & pk fields come first */'; put 'attrib _____DELETE__THIS__RECORD_____ &pk label='''';'; put '/* keep remaining variable order */'; put '%if %length(&sourcevars)>0 %then %do;'; put 'attrib &sourcevars label='''';'; put '%end;'; put '_____DELETE__THIS__RECORD_____="No ";'; put '%if %mf_nobs(work.out)=0 %then %do;'; put '/* send empty row if empty table to help with hot rendering */'; put 'output;'; put '%end;'; put 'set work.out ;'; put 'run;'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=outdata'; put 'out=vars(keep=name type length varnum format: label);'; put 'run;'; put 'proc sort;'; put 'by varnum;'; put 'run;'; put 'data vars3(keep=name type length format label pk varnum ctrloptions formatd);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED");'; put 'if type2=2 or type2=6 then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,formatl,''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if upcase(format2)=''DATETIME'' and formatl=0 then format=''DATETIME.'';'; put 'else format=cats(format2,formatl,''.'',formatd);'; put 'type=''num'';'; put 'end;'; put 'if name in ('''',%upcase(%mf_getQuotedStr(&pk,dlm=%str(,),quote=S)))'; put 'then PK=''YES'';'; put 'length ctrlOptions $500;'; put 'if name="_____DELETE__THIS__RECORD_____" then ctrlOptions=''["No","Yes"]'';'; put 'else ctrlOptions='''';'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at 242 (vars3 step) in &_program \n'; put '%superq(syserrortext)'; put ')'; put ')'; put '%global jsdttmvars jsdtvars jstmvars;'; put 'data _null_;'; put 'set vars3 end=last;'; put 'if _n_>1 then comma='','';'; put 'length coltype $500.;'; put 'format=upcase(format);'; put 'coltype=cats(comma,''{"data":"'',name,''"'');'; put 'if ctrlOptions ne '''' then'; put 'colType=cats(coltype,'',"type":"dropdown","source":'',ctrlOptions,"}");'; put 'else if type=''num'' then do;'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then do;'; put 'colType=cats(coltype'; put ','',"type":"date","dateFormat":"YYYY-MM-DD HH:mm:ss"'''; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat datetimes in javascript format */'; put 'call symput(''jsdttmvars'',symget(''jsdttmvars'')!!'' ''!!name);'; put 'end;'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then do;'; put '/* see bottom of file for more date formats!! */'; put '/* also when updating, update stagedata.sas and mp_getcols.sas'; put 'and mpe_loader.sas */'; put 'colType=cats(coltype,'',"type":"date","dateFormat":"YYYY-MM-DD"'''; put '/*colType=cats(coltype,'',"type":"date","dateFormat":"MM/DD/YYYY"''*/'; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat as javascript dates */'; put 'call symput(''jsdtvars'',symget(''jsdtvars'')!!'' ''!!name);'; put 'end;'; put 'else if format=:''TIME'' or format=:''HHMM'' then do;'; put 'colType=cats(coltype,'',"type":"time","timeFormat":"HH:mm:ss"'''; put ','',"correctFormat":"true"}'');'; put '/* build var list to reformat as javascript times */'; put 'call symput(''jstmvars'',symget(''jstmvars'')!!'' ''!!name);'; put 'end;'; put 'else do;'; put '/* is standard numeric but need to ascertain precision */'; put 'retain base ''000000000000000000'';'; put 'if formatd>0 then numFormat=cats(''.'',substr(base,1,formatd));'; put 'colType=cats(coltype,'',"type":"numeric","format":"0'',numFormat,''"}'');'; put 'end;'; put 'end;'; put 'else colType=cats(coltype,''}'');'; put 'length concatcoltype $32767;'; put 'retain concatcoltype;'; put 'concatcoltype=cats(concatcoltype,coltype);'; put 'if last then call symputx(''colType'',strip(concatcoltype),''g'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc at 283 (null step) in &_program)'; put ')'; put 'PROC FORMAT;'; put 'picture yymmddThhmmss (default=28) other=''%0Y-%0m-%0d %0H:%0M:%0s'''; put '(datatype=datetime);'; put 'picture JSyymmdd other=''%0Y-%0m-%0d'' (datatype=date);'; put 'picture JShhmmss (default=16) other=''%0H:%0M:%0s'' (datatype=time);'; put 'RUN;'; put '/* before we send the data, need to rebuild all date & datetime vars as char*/'; put '%let finalvars=%mf_getvarlist(work.outdata);'; put 'data sasdata;'; put '/* set formats & col order ahead of rename+import */'; put 'informat &finalvars ;'; put '/* read dataset and rename date / datetime vars as necessary */'; put 'set outdata'; put '%if %length(&jsdttmvars&jsdtvars&jstmvars)>0 %then %do;'; put '(rename=('; put '%local dtvarnum dtvar tmvar;'; put '/* temp datetime vars end in _____ */'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdttmvars,%str( )));'; put '%let dtvar=%scan(&jsdttmvars ,&dtvarnum);'; put '&dtvar=_____&dtvarnum._____'; put '%end;'; put '/* temp date vars do not end in _____ */'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdtvars,%str( )));'; put '%let dtvar=%scan( &jsdtvars,&dtvarnum);'; put '&dtvar=_____&dtvarnum'; put '%end;'; put '/* temp time vars end in ___tm */'; put '%do tmvarnum=1 %to %sysfunc(countw(&jstmvars,%str( )));'; put '%let tmvar=%scan( &jstmvars,&tmvarnum);'; put '&tmvar=_____&tmvarnum.___tm'; put '%end;'; put '))'; put '%end;'; put ';'; put '%if %length(&jsdttmvars)>0 %then %do ;'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdttmvars,%str( )));'; put '%let dtvar=%scan(&jsdttmvars,&dtvarnum);'; put '&dtvar=cats(put(_____&dtvarnum._____,yymmddThhmmss28.));'; put 'if &dtvar="ERROR" then call missing(&dtvar);'; put 'drop _____&dtvarnum._____;'; put '%end;'; put '%end;'; put '%if %length(&jsdtvars)>0 %then %do;'; put '%do dtvarnum=1 %to %sysfunc(countw(&jsdtvars,%str( )));'; put '%let dtvar=%scan(&jsdtvars,&dtvarnum);'; put '&dtvar=cats(put(_____&dtvarnum,JSyymmdd.));'; put 'if &dtvar="ERROR" then call missing(&dtvar);'; put 'drop _____&dtvarnum;'; put '%end;'; put '%end;'; put '%if %length(&jstmvars)>0 %then %do;'; put '%do tmvarnum=1 %to %sysfunc(countw(&jstmvars,%str( )));'; put '%let tmvar=%scan(&jstmvars,&tmvarnum);'; put '&tmvar=cats(put(_____&tmvarnum.___tm,JShhmmss14.));'; put 'if &tmvar="ERROR" then call missing(&tmvar);'; put 'drop _____&tmvarnum.___tm;'; put '%end;'; put '%end;'; put 'output;'; put 'run;'; put '/* get the relevant approvers for the drop down */'; put '%put getting approvers;'; put '%local sas_groups sas_i sas_group;'; put 'proc sql noprint;'; put 'select distinct sas_Group into: sas_groups separated by "|"'; put 'from &mpelib..mpe_security'; put 'where libref="%scan(&orig_libds,1,.)"'; put 'and dsn="%scan(&orig_libds,2,.)"'; put 'and access_level=''APPROVE'''; put 'and &dc_dttmtfmt. lt TX_TO;'; put '%if %length(&sas_groups)=0 %then %do;'; put '%dc_getgroupmembers(&dc_admin_group,outds=work.access1)'; put '%end;'; put '%else %do sas_i=1 %to %sysfunc(countw(&sas_groups,%str(|)));'; put '%let sas_group=%scan(&sas_Groups,&sas_i,%str(|));'; put '%dc_getgroupmembers(&sas_group,outds=work.temp&sas_i)'; put 'proc append base=work.access1 data=work.temp&sas_i;run;'; put '%end;'; put '%mend mpestp_getdata;'; put '%mpestp_getdata()'; put '%mp_abort(mode=INCLUDE)'; put '/* extract column level security rules */'; put '%mpe_columnlevelsecurity(%scan(&libds,1,.),%scan(&libds,2,.),work.sasdata'; put ',mode=EDIT'; put ',clsds=&mpelib..mpe_column_level_security'; put ',groupds=work.groups /* was created in mpe_filtermaster */'; put ',outds=work.sasdata1'; put ',outmeta=work.cls_rules'; put ')'; put '/* get labels */'; put '%mpe_getlabels(COLUMNS,sasdata1,outds=spec)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc extracting spec info)'; put ')'; put '/* extract col info */'; put '%mp_getcols(&libds, outds=cols1)'; put '/* join with cls rules */'; put 'proc sql;'; put 'create table work.cols as'; put 'select a.NAME'; put ',a.VARNUM'; put ',a.LABEL'; put ',a.FMTNAME'; put ',a.DDTYPE'; put ',case b.cls_hide'; put 'when 1 then ''HIDE'''; put 'when 0 then ''EDIT'''; put 'else ''READ'' end as CLS_RULE'; put ',c.memlabel'; put ',c.desc'; put ',c.longdesc'; put 'from work.cols1 a'; put 'left join work.cls_rules b'; put 'on a.NAME=b.CLS_VARIABLE_NM'; put 'left join work.spec c'; put 'on a.NAME=c.NAME;'; put 'proc sql;'; put 'create table approvers as select distinct membername as personname'; put ',membername as email, membername as userid'; put 'from work.access1;'; put '/*'; put 'create table access3 as select b.userid,b.email'; put 'from access2 a'; put ',support.users b'; put 'where a.personname=b.userid'; put 'and a.personname ne "%mf_getuser()"'; put 'and %sysfunc(datetime()) lt b.tx_to_dttm'; put 'order by 1;'; put '*/'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'input;'; put 'length filter_text $32767;'; put 'retain filter_text;'; put 'filter_text=catx('' '',filter_text,_infile_);'; put 'if eof then do;'; put 'if cats(filter_text)=''1=1'' then filter_text='''';'; put 'call symputx(''filter_text'',filter_text);'; put 'end;'; put 'run;'; put '%put params;'; put 'data sasparams;'; put 'length colHeaders $20000 filter_text $32767;'; put 'colHeaders=cats(upcase("%mf_getvarlist(sasdata1,dlm=%str(,))"));'; put 'pkCnt=countw("&pk");'; put 'pk="&pk";'; put 'dtvars=compbl("&jsdtvars");'; put 'dttmvars=compbl("&jsdttmvars");'; put 'tmvars=compbl("&jstmvars");'; put 'length coltype $32000;'; put 'coltype=symget(''coltype'');'; put 'loadtype=symget(''loadtype'');'; put 'if trim(symget(''rk_underlying'')) ne '''' then rk_flag=1;'; put 'else rk_flag=0;'; put 'filter_text=symget(''filter_text'');'; put 'if %mf_nobs(work.cls_rules)=0 then cls_flag=0;'; put 'else cls_flag=1;'; put 'put (_all_)(=);'; put 'run;'; put '/* Extract validation DQ Rules */'; put 'proc sort data=&mpelib..mpe_validations'; put '(where=(&dc_dttmtfmt. le TX_TO'; put 'and BASE_LIB="%scan(&orig_libds,1,.)" and BASE_DS="%scan(&orig_libds,2,.)"'; put 'and rule_active=1))'; put 'out=dqrules (keep=base_col rule_type rule_value);'; put 'by base_col rule_type rule_value;'; put 'run;'; put '/* merge with NOTNULL constraints in the physical table */'; put 'proc sql;'; put 'create table _data_ as'; put 'select * from dqrules'; put 'union'; put 'select upcase(name) as base_col'; put ',''NOTNULL'' as rule_type'; put ','''' as rule_value'; put 'from dictionary.columns'; put 'where upcase(libname)="%scan(&orig_libds,1,.)"'; put 'and upcase(memname)="%scan(&orig_libds,2,.)"'; put 'and upcase(name) in (select name from vars3)'; put 'and notnull=''yes'''; put 'order by 1,2,3;'; put 'data dqrules;'; put 'set &syslast;'; put 'by base_col rule_type rule_value;'; put 'if last.rule_type;'; put 'if rule_type in (''HARDSELECT'',''SOFTSELECT'') and countw(rule_value)=3 then'; put 'do;'; put 'retain x 0; x+1;'; put 'call symputx(cats(''source'',x),rule_value);'; put '%let sourcecnt=0;'; put 'call symputx(''sourcecnt'',x);'; put 'call symputx(cats(''base_col'',x),base_col);'; put 'end;'; put 'run;'; put 'proc sql;'; put 'create table dqdata as'; put 'select distinct base_column as base_col length=32'; put ',upcase(base_column) as rule_value length=74 /* deprecated */'; put ',selectbox_value as rule_data length=1000'; put ',selectbox_order'; put 'from &mpelib..mpe_selectbox'; put 'where &dc_dttmtfmt. lt ver_to_dttm'; put 'and select_lib="%scan(&orig_libds,1,.)"'; put 'and select_ds="%scan(&orig_libds,2,.)";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc during DQ rule validation)'; put ')'; put '/* extract selectbox data */'; put '%macro dq_selects();'; put '%local x source lib ds col;'; put '%do x=1 %to &sourcecnt;'; put '%let source=&&source&x;'; put '%let lib=%scan(&source,1,.);'; put '%let ds=%scan(&source,2,.);'; put '%let col=%scan(&source,3,.);'; put '%put &=source;'; put '%put &=lib;'; put '%dc_assignlib(READ,&lib)'; put 'proc sql;'; put 'create table dqdata&x as'; put 'select distinct "&&base_col&x" as base_col length=32'; put ',"&source" as rule_value length=74'; put ',cats(&col) as rule_data length=1000'; put ',0 as selectbox_order'; put 'from &lib..&ds'; put 'order by 1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc when selecting &&base_col&x from &orig_libds)'; put ')'; put 'proc append base=dqdata data=dqdata&x;run;'; put 'proc sql; drop table dqdata&x;'; put '%end;'; put '%mend dq_selects;'; put '%dq_selects()'; put 'proc sort data=dqdata;'; put 'by base_col selectbox_order;'; put 'run;'; put '%mp_getmaxvarlengths(work.sasdata1,outds=maxvarlengths)'; put 'data maxvarlengths;'; put 'set maxvarlengths;'; put 'if name=''_____DELETE__THIS__RECORD_____'' then mAXLEN=3;'; put 'run;'; put 'data xl_rules;'; put 'set &mpelib..mpe_excel_config;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(xl_libref)="%scan(&orig_libds,1,.)";'; put 'where also upcase(xl_table)="%scan(&orig_libds,2,.)";'; put 'where also xl_active=1;'; put 'keep xl_column xl_rule;'; put 'run;'; put '%mp_dsmeta(&libds, outds=dsmeta)'; put '/* send to the client */'; put '%webout(OPEN)'; put '%webout(OBJ,approvers)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,dqdata)'; put '%webout(OBJ,dqrules)'; put '%webout(OBJ,dsmeta)'; put '%webout(OBJ,maxvarlengths)'; put '%webout(OBJ,query)'; put '%webout(OBJ,sasdata1,fmt=N,missing=STRING,showmeta=YES,dslabel=sasdata)'; put '%webout(OBJ,sasparams)'; put '%webout(OBJ,xl_rules)'; put '%webout(CLOSE)'; put '/*'; put '$N8601Bw'; put '$N8601BAw'; put '$N8601Ew'; put '$N8601EAw'; put '$N8601EHw'; put '$N8601EXw'; put '$N8601Hw'; put '$N8601Xw'; put 'B8601DAw'; put 'B8601DNw'; put 'B8601DTw'; put 'B8601DZw'; put 'B8601LZw'; put 'B8601TMw'; put 'B8601TZw'; put 'DATEw'; put 'DATEAMPMw'; put 'DATETIMEw'; put 'DAYw'; put 'DDMMYYw'; put 'DDMMYYxw'; put 'DOWNAMEw'; put 'DTDATEw'; put 'DTMONYYw'; put 'DTWKDATXw'; put 'DTYEARw'; put 'DTYYQCw'; put 'E8601DAw'; put 'E8601DNw'; put 'E8601DTw'; put 'E8601DZw'; put 'E8601LZw'; put 'E8601TMw'; put 'E8601TZw'; put 'HHMMw'; put 'HOURw'; put 'JULDAYw'; put 'JULIANw'; put 'MMDDYYw'; put 'MMDDYYxw'; put 'MMSSw'; put 'MMYYw'; put 'MMYYxw'; put 'MONNAMEw'; put 'MONTHw'; put 'MONYYw'; put 'PDJULGw'; put 'PDJULIw'; put 'QTRw'; put 'QTRRw'; put 'TIMEw'; put 'TIMEAMPMw'; put 'TODw'; put 'WEEKDATEw'; put 'WEEKDATXw'; put 'WEEKDAYw'; put 'WEEKUw'; put 'WEEKVw'; put 'WEEKWw'; put 'WORDDATEw'; put 'WORDDATXw'; put 'YEARw'; put 'YYMMw'; put 'YYMMxw'; put 'YYMMDDw'; put 'YYMMDDxw'; put 'YYMONw'; put 'YYQw'; put 'YYQxw'; put 'YYQRw'; put 'YYQRxw'; put '$N8601BAw'; put '$N8601Ew'; put '$N8601EAw'; put '$N8601EHw'; put '$N8601EXw'; put '$N8601Hw'; put '$N8601Xw'; put 'B8601DAw'; put 'B8601DNw'; put 'B8601DTw'; put 'B8601DZw'; put 'B8601LZw'; put 'B8601TMw'; put 'B8601TZw'; put 'E8601DAw'; put 'E8601DNw'; put 'E8601DTw'; put 'E8601DZw'; put 'E8601LZw'; put 'E8601TMw'; put 'E8601TZw'; put '*/'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getdynamiccolvals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getdynamiccolvals.sas'; put '@brief Provide dynamic list of values according to a SAS program or service'; put '@details Configuration is made in the MPE_VALIDATIONS table, the dropdown'; put 'can be either a SOFTSELECT_HOOK or HARDSELECT_HOOK.'; put 'Results are sent in ARRAY format for efficiency.'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|VARIABLE_NM:$32.|'; put '|---|---|'; put '|DC258467.MPE_SECURITY|SAS_GROUP|'; put '
SOURCE_ROW
'; put 'This contains the raw values from the source table.'; put '

Service Outputs

'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_getservicecode.sas'; put '@li mf_nobs.sas'; put '@li mp_abort.sas'; put '@li mp_include.sas'; put '@li mp_validatecol.sas'; put '@li mf_getapploc.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* Validate inputs'; put '*/'; put '%let err_msg=;'; put 'data work.intest;'; put 'set work.SASCONTROLTABLE;'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put '/* validate varname */'; put 'is_name=nvalid(variable_nm,''v7'');'; put 'putlog (_all_)(=);'; put 'if is_libds ne 1 then do;'; put 'msg=''ERR''!!''OR: Invalid libds:''!!libds;'; put 'call symputx(''err_msg'',msg);'; put 'stop;'; put 'end;'; put 'else if is_name ne 1 then do;'; put 'msg=''ERR''!!''OR: Invalid name:''!!variable_nm;'; put 'call symputx(''err_msg'',msg);'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''variable_nm'',variable_nm);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after reading work.sascontroltable)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(&err_msg)'; put ')'; put '%dc_assignlib(READ,%scan(&libds,1,.))'; put '/* ensure that work.dynamic_extended_values exists */'; put 'data work.dynamic_extended_values;'; put 'run;'; put '/**'; put '* Get the code to execute'; put '*/'; put 'data work.codetest;'; put 'set &mpelib..MPE_VALIDATIONS;'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and base_lib="%scan(&libds,1,.)"'; put 'and base_ds="%scan(&libds,2,.)"'; put 'and base_col="&variable_nm"'; put 'and RULE_TYPE in (''HARDSELECT_HOOK'',''SOFTSELECT_HOOK'')'; put 'and RULE_ACTIVE=1;'; put 'putlog (_all_)(=);'; put 'if length(rule_value)>1 then do;'; put 'call symputx(''pgmloc'',rule_value);'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'output;'; put 'stop;'; put 'end;'; put 'else stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.codetest)=0)'; put ',mac=&_program'; put ',msg=%str(Hook not found in &mpelib..mpe_validations for &libds..&variable_nm)'; put ')'; put '%macro getdynamiccolvals();'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '%mend getdynamiccolvals;'; put '%getdynamiccolvals()'; put '/* execute the dynamic code */'; put '%mp_include(sascode)'; put '%mp_abort(mode=INCLUDE)'; put '/* ensure that the DISPLAY_INDEX variable exists */'; put 'data work.dynamic_values;'; put 'length DISPLAY_INDEX 8 DISPLAY_VALUE $32767;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.dynamic_values;'; put 'display_index=coalesce(display_index,_n_);'; put 'keep DISPLAY_INDEX DISPLAY_VALUE RAW_VALUE;'; put 'run;'; put '/* ensure that work.dynamic_extended_values exists with correct types */'; put 'data work.dynamic_extended_values;'; put 'length DISPLAY_INDEX 8 EXTRA_COL_NAME $32 DISPLAY_VALUE $5000 DISPLAY_TYPE $1'; put 'RAW_VALUE_NUM 8 RAW_VALUE_CHAR $5000 FORCED_VALUE 8;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.dynamic_extended_values;'; put 'run;'; put '%webout(OPEN)'; put '%webout(ARR,dynamic_values,fmt=N)'; put '%webout(ARR,dynamic_extended_values,fmt=N)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getlog; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put (_all_)(=);'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getlog.sas'; put '@brief Downloads the submission, useful if there is an error'; put '@details'; put '

SAS Macros

'; put '@li mf_verifymacvars.sas'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mp_dirlist.sas'; put '@li mp_binarycopy.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: table)'; put ')'; put '/* security checks */'; put '%let user=%mf_getuser();'; put '%let check_access=0;'; put 'proc sql noprint;'; put 'select count(*) into: check_access from &mpelib..mpe_loads'; put 'where csv_dir="&table" and user_nm="&user";'; put '%mp_abort(iftrue= (&check_access=0 )'; put ',msg=%str(&user not authorised to download audit data for &table)'; put ',mac=mpestp_getlog.sas'; put ')'; put 'ods package(ProdOutput) open nopf;'; put 'options notes source2 mprint;'; put '%mp_dirlist(outds=dirs, path=&mpelocapprovals/&TABLE)'; put 'data _null_;'; put 'set dirs;'; put 'if scan(filename,-1,''.'') not in (''sas7bdat'',''wpd'');'; put 'retain str1'; put '"ods package(ProdOutput) add file=''&mpelocapprovals/&TABLE/";'; put 'retain str2 "'' mimetype=''text/plain'' path=''contents/'';";'; put 'call execute(cats(str1,filename,str2));'; put 'run;'; put '%let archive_path=%sysfunc(pathname(work));'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'ods package(ProdOutput) publish archive properties'; put '(archive_name= "&table..zip" archive_path="&archive_path");'; put 'ods package(ProdOutput) close;'; put '/* now serve zip file to client */'; put '%mp_streamfile(contenttype=ZIP'; put ',inloc=%str(&archive_path/&table..zip)'; put ',outname=&table..zip'; put ')'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getsubmits; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getsubmits.sas'; put '@brief Returns a list of staged data items that need to be approved'; put '@details'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y-%0m-%0d %0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put 'proc sql noprint;'; put 'create table work.fromsas (rename=(SUBMITTED_ON=SUBMITTED_ON_DTTM)) as'; put 'select table_id'; put ',cats(base_lib,''.'',base_ds) as base_table'; put ',input_vars'; put ',input_obs'; put ',submitted_by_nm'; put ',submitted_reason_txt'; put ',''DEPRECATED'' as approve_group'; put ',submit_status_cd as review_status_id'; put ',reviewed_by_nm'; put ',reviewed_on_dttm'; put ',cats(put(SUBMITTED_ON_DTTM,yymmddhhmmss.)) as SUBMITTED_ON'; put 'from &mpelib..mpe_submit'; put 'where submitted_by_nm="%mf_getuser()" and submit_status_cd=''SUBMITTED'''; put 'order by submitted_on_dttm desc;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=loadfile; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=%sysfunc(datetime())'; put ',approvals='; put ',mperef='; put ',reason_txt='; put ',mac=mpe_loadfail.sas'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads'; put 'set STATUS=symget(''status'')'; put ', duration=&dur'; put ', processed_dttm=&dc_dttmtfmt.'; put ', approvals = symget(''approvals'')'; put ', reason_txt= symget(''reason_txt'')'; put 'where CSV_DIR="&mperef";'; put '%let syscc=666;'; put '%mp_abort(msg=%superq(status)\n%superq(reason_txt),mac=&mac)'; put '%mend mpe_loadfail;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put (_all_)(=);'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mpe_loader('; put 'mperef= /* name of subfolder containing the staged data */'; put ',mDebug=0 /* set to 1 for development or debugging */'; put ',submitted_reason_txt= /* populates column of same name in sumo_approvals*/'; put ',approver= /* allows a userid to be provided for direct approval email */'; put ',url= /* optional - url for debugging */'; put ',dlm=%str(,)'; put ',termstr=crlf'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%put entered mpe_loader from &=_program;'; put '%put &=url;'; put '%put &=termstr;'; put '%put &=dlm;'; put '/* determine full path to CSV directory */'; put '%local now;'; put '%let now=&dc_dttmtfmt;'; put '%put &=now;'; put '/**'; put '* get full path to package (only subdirectory passed through)'; put '*/'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mperef mpelocapprovals)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing: mperef mpelocapprovals)'; put ')'; put '%let csv_dir=%trim(&mpelocapprovals/&mperef);'; put '/* exit if package has already been uploaded */'; put '%local check;'; put 'proc sql noprint;'; put 'select count(*) into: check'; put 'from &mpelib..mpe_loads'; put 'where csv_dir="&mperef";'; put '%if &check %then %do;'; put '%mp_abort(msg=Folder &mperef already has an entry in &mpelib..mpe_loads'; put ',mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* get CSV directory contents */'; put '%mp_dirlist(path=&csv_dir,outds=WORK.getfiles)'; put 'data WORK.csvs;'; put 'set WORK.getfiles;'; put 'if upcase(scan(filename,3,''.''))=''CSV'' then do;'; put 'lib=upcase(scan(filename,1,''.''));'; put 'ds=upcase(scan(filename,2,''.''));'; put 'output;'; put 'end;'; put 'run;'; put '/* get table attributes */'; put 'proc sql noprint;'; put 'create table WORK.sumo_tables as'; put 'select a.filename, b.*'; put 'from WORK.csvs a'; put 'left join &mpelib..mpe_tables b'; put 'on a.lib=b.libref'; put 'and a.ds=b.dsn'; put 'where b.tx_from le &now'; put 'and &now lt b.tx_to;'; put '/* define user as meta user if available */'; put '%local user;'; put '%let user=%mf_getuser();'; put '/* check if there is actually a table to load */'; put '%if %mf_getattrn(WORK.sumo_tables,NLOBS)=0 %then %do;'; put '%let msg=Table not registered in &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=&msg'; put ',now=&now'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="&user"'; put ',STATUS=''IN PROGRESS'''; put ',CSV_dir="&mperef"'; put ',PROCESSED_DTTM=&now;'; put '/* import CSV */'; put '%let droplist=;'; put '%let attrib=;'; put '%let droplist=;'; put '%let libref=;'; put '%let DS=;'; put '/* get table info */'; put 'data _null_;'; put 'set sumo_tables;'; put 'libds=upcase(cats(libref,''.'',dsn));'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(dsn)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'call symputx(''libds'',libds);'; put 'call symputx(''FNAME'',filename);'; put 'call symputx(''LIBREF'',libref);'; put 'call symputx(''DS'',dsn);'; put 'call symputx(''LOADTYPE'',loadtype);'; put 'call symputx(''BUSKEY'',buskey);'; put 'call symputx(''VAR_TXFROM'',var_txfrom);'; put 'call symputx(''VAR_TXTO'',var_txto);'; put 'call symputx(''VAR_BUSFROM'',var_busfrom);'; put 'call symputx(''VAR_BUSTO'',var_busto);'; put 'call symputx(''VAR_PROCESSED'',var_processed);'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING);'; put 'call symputx(''POST_EDIT_HOOK'',POST_EDIT_HOOK);'; put 'call symputx(''NOTES'',NOTES);'; put 'call symputx(''PK'',coalescec(RK_UNDERLYING,buskey));'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED,''l'');'; put 'put (_all_)(=);'; put 'stop;'; put 'run;'; put '%if %length(&ds)=0 %then %do;'; put '%let msg=%str(ERR)OR: Unable to extract record from &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* user must have EDIT access to load a table */'; put '%mpe_accesscheck(&orig_libds'; put ',outds=work.sumo_access'; put ',user=&user'; put ',access_level=EDIT )'; put '%put exiting accesscheck;'; put '%if %mf_getattrn(work.sumo_access,NLOBS)=0 %then %do;'; put '%let msg=%str(ERR)OR: User is not authorised to edit &orig_libds!;'; put '%mpe_loadfail('; put 'status=UNAUTHORISED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%put now importing: "&csv_dir/&fname" termstr=&termstr;'; put '/* get the variables from the CSV */'; put 'data vars_csv1(index=(idxname=(varnum name)) drop=infile);'; put 'infile "&csv_dir/&fname" lrecl=32767 dsd termstr=&termstr encoding=''utf-8'';'; put 'input;'; put 'length infile $32767;'; put 'infile=compress(_infile_,''"'',);'; put 'infile=compress(infile,"''",);'; put 'format name $32.;'; put 'putlog ''received vars: '' infile;'; put 'call symputx(''received_vars'',infile,''l'');'; put 'do varnum=1 to countw(infile,"&dlm");'; put '/* keep writeable chars */'; put 'name=compress(upcase(scan(infile,varnum)),,''kw'');'; put 'if name ne "_____DELETE__THIS__RECORD_____" then output;'; put 'end;'; put 'stop;'; put 'run;'; put '%put received_vars = &received_vars;'; put '%dc_assignlib(WRITE,&libref)'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=&libds'; put 'out=vars(keep=name type length varnum format:);'; put 'run;'; put 'data vars(keep=name type length varnum format);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'format2=upcase(format2);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED"'; put ',"_____DELETE__THIS__RECORD_____");'; put 'if type2 in (2,6) then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,max(formatl,length),''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if format2=:''DATETIME'' or format2=:''E8601DT'' then do;'; put 'format=''DATETIME19.'';'; put 'end;'; put 'else if format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'''; put 'or format2=:''E8601DA'' or format2=:''B8601DA'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; put '/*'; put 'else if format2=:''DATETIME'' or format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'' then do;'; put '*date or datetime format so use original ;'; put 'dsid=open("&libref..&ds");'; put 'vnum=varnum(dsid,name);'; put 'format=varfmt(dsid,vnum);'; put 'dsid=close(dsid);'; put 'end;'; put '*/'; put 'else do;'; put 'if formatl=0 then formatl=length;'; put 'format=cats(format2,formatl,''.'',formatd);'; put 'end;'; put 'type=''num'';'; put 'end;'; put 'put (_all_)(=);'; put 'run;'; put '/* build attrib statement */'; put 'data vars_attrib;'; put 'length attrib_statement $32767 type2 $20;'; put 'set vars end=lastobs;'; put 'retain attrib_statement;'; put 'if type=''char'' then type2=''$'';'; put 'str1=catx('' '',name,''length='',cats(type2,length));'; put 'attrib_statement=trim(attrib_statement)!!'' ''!!trim(str1);'; put 'if lastobs then call symputx(''ATTRIB'',attrib_statement,''L'');'; put 'run;'; put '/* build input statement - first get vars in right order'; put 'and join with target formats*/'; put 'proc sql noprint;'; put 'create table vars_csv2 as'; put 'select b.*'; put 'from vars_csv1 a'; put 'left join vars_attrib b'; put 'on a.name=b.name'; put 'order by a.varnum;'; put '/* make sure that the variables we are importing, actually'; put 'exist on the target table */'; put '/** edit - extra variables are now simply ignored'; put '%local very_bad_vars;'; put 'select name into: very_bad_vars separated by '' '''; put 'from vars_csv1'; put 'where name not in (select name from vars)'; put 'and name ne "_____DELETE__THIS__RECORD_____";'; put '%if %length(&very_bad_vars) > 0 %then %do;'; put '%let msg=%str(WARNING: The following vars are not defined in %trim('; put ')&libref..&ds, yet they exist in &csv_dir/&ds..csv: &very_bad_vars);'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '**/'; put '/* now build input statement */'; put 'data final_check;'; put 'set vars_csv2 end=lastobs;'; put 'length input_statement $32767 type2 $20 droplist $32767;'; put 'retain input_statement droplist;'; put '/* Build input statement - CATCH EXCEPTIONS HERE!*/'; put 'if name in (''QUOTE_DTTM'') then do;'; put 'name=cats(name,''2'');'; put 'droplist=catx('' '',trim(droplist),name);'; put 'type2=''$20.'';/* converted below */'; put 'end;'; put 'else if type=''char'' then type2=cats(''$CHAR'', length,''.'');'; put 'else if format=''DATE9.'' then type2=''ANYDTDTE.'';'; put 'else if format=''DATETIME19.'' then type2=''ANYDTDTM.'';'; put 'else if format=:''TIME'' then type2=''ANYDTTME.'';'; put 'else if name='''' then do;/* additional vars in input data */'; put 'name=''_____DELETE__THIS__VARIABLE_____'';'; put 'droplist=catx('' '',trim(droplist),''_____DELETE__THIS__VARIABLE_____'');'; put 'type2=''$1.'';'; put 'end;'; put 'else type2=''best32.'';'; put '* else type2=cats(length,''.'');'; put 'input_statement=catx('' '',input_statement,name,'':'',type2);'; put 'if lastobs then do;'; put 'call symputx(''INPUT'', input_statement,''L'');'; put 'if trim(droplist) ne '''' then'; put 'call symputx(''droplist'',"drop "!!droplist!!'';'',''l'');'; put 'end;'; put 'run;'; put '%let mpeloadstop=0;'; put 'data work.STAGING_DS;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767'; put 'firstobs=2 missover termstr=&termstr encoding=''utf-8'';'; put 'attrib &attrib ;'; put 'if _n_=1 then call missing (of _all_);'; put 'missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____ %then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put '%if %index(%quote(&attrib.),UNLIKELY_VAR ) %then %do;'; put '/*UNLIKELY_VAR=input(UNLIKELY_VAR2,ANYDTDTM21.);*/'; put '/* SPECIAL LOGIC FOR SPECIAL VARS */'; put '%end;'; put 'if _error_ ne 0 then do;'; put 'putlog _infile_;'; put 'call symputx(''mpeloadstop'',_n_);'; put 'stop;'; put 'end;'; put '/* remove all blank rows */'; put 'if compress(cats(of _all_),''.'')='' '' then delete;'; put 'run;'; put '%if &mpeloadstop>0 %then %do;'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put '%put redirecting log output to capture return message;'; put '%put currentloc=&logloc;'; put 'filename tmp temp;'; put 'proc printto log=tmp;run;'; put 'data _null_;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767 firstobs=2'; put 'missover termstr=&termstr;'; put 'attrib &attrib ;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____'; put '%then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put 'if _error_ then stop;'; put 'run;'; put '/* get log back */'; put 'proc printto log=&logloc;run;'; put 'data _null_; infile tmp; input; putlog _infile_;run;'; put '/* scan log for invalid data warning */'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'length msg1 msg2 msg3 msg4 msg5 msg url $32767;'; put 'if index(_infile_,''NOTE: Invalid data for'') then do;'; put 'msg1=_infile_;'; put 'input;'; put 'msg2=_infile_;'; put 'input;'; put 'msg3=_infile_;'; put 'input;'; put 'msg4=_infile_;'; put 'input;'; put 'msg5=_infile_;'; put 'url=symget(''url'');'; put 'msg=catx(''\n'',msg1,msg2,msg3,msg4,msg5,''\n'',url);'; put 'call symputx(''msg'',msg);'; put 'stop;'; put 'end;'; put 'run;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/* check that the table is unique on PK */'; put 'proc sort data=work.STAGING_DS dupout=work.MPE_DUPS (keep=&pk) nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.MPE_DUPS,NLOBS)>0 %then %do;'; put '%local duplist;'; put 'data _null_;'; put 'set work.mpe_dups;'; put '%do i=1 %to %sysfunc(countw(&pk));'; put '%let iWord=%scan(&pk,&i);'; put 'call symputx(''duplist'',symget(''duplist'')!!'; put '" &iWord="!!trim(&iWord));'; put '%end;'; put 'run;'; put '%let msg=This upload contains duplicates on the Primary Key columns %trim('; put ')(&pk) \n Please remove the duplicates and try again. %trim('; put ')\n &duplist \n ;'; put '%mp_abort(msg=%superq(msg),mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%if &syscc gt 4 %then %do;'; put '%let msg=SYSCC=&syscc prior to post edit hook (%superq(syserrortext));'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mpe_runhook(POST_EDIT_HOOK)'; put '/* stop if err */'; put '%if &syscc gt 4 %then %do;'; put '%let msg=ERR in post edit hook (&post_edit_hook);'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/**'; put '* send to approve process'; put '*/'; put '/* create a dataset key (datetime plus 3 digit random number plus PID) */'; put '/* send dataset to approvals subfolder with same name as subfolder */'; put 'libname approval "&mpelocapprovals/&mperef";'; put 'data approval.&mperef;'; put 'set work.staging_ds;'; put 'run;'; put 'proc export data=approval.&mperef'; put 'outfile="&mpelocapprovals/&mperef/&mperef..csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control dataset with relevant info */'; put 'data append_app;'; put 'if 0 then set &mpelib..mpe_submit;/* get formats */'; put 'call missing (of _all_);'; put 'TABLE_ID="&mperef";'; put 'submit_status_cd=''SUBMITTED'';'; put 'submitted_by_nm="%mf_getuser()";'; put 'base_lib="&libref";'; put 'base_ds="&ds";'; put 'submitted_on_dttm=&now;'; put 'submitted_reason_txt=symget(''submitted_reason_txt'');'; put 'input_vars=%mf_getattrn(approval.&mperef,NVARS);'; put 'input_obs=%mf_getattrn(approval.&mperef,NLOBS);'; put 'num_of_approvals_required=&NUM_OF_APPROVALS_REQUIRED;'; put 'num_of_approvals_remaining=&NUM_OF_APPROVALS_REQUIRED;'; put 'reviewed_by_nm='''';'; put 'reviewed_on_dttm=.;'; put 'run;'; put '%mp_lockanytable(LOCK,lib=&mpelib,ds=mpe_submit,'; put 'ref=%str(&mperef update in &_program),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base= &mpelib..mpe_submit data=append_app;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* send email to REVIEW members */'; put '%put sending mpe_alerts;'; put '%mpe_alerts(alert_event=SUBMITTED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&mperef'; put ')'; put '/* DISABLE EMAIL FOR NOW'; put '%let b2=REASON: %quote(&submitted_reason_txt);'; put '%local URLNOTES;'; put '%if %length(¬es)>0 %then %let URLNOTES=%quote(%sysfunc(urlencode(¬es)));'; put '%let b3=%str(Click to review / approve: )%trim('; put ')%str(http://&_srvname:&_srvport&_url?_PROGRAM=/Web/approvals&)%trim('; put ')TABLEID=&dsid%str(&)BASETABLE=&libref..&ds%str(&)NOTES=&URLNOTES;'; put '%let b4=%str(Reference ID: &mperef);'; put '*/'; put '%put mpe_loader finishing up with syscc=&syscc;'; put '%if &syscc le 4 %then %do;'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'putlog ''Updating mpe_loads with the following query:'';'; put 'putlog "update &mpelib..mpe_loads set STATUS=''SUCCESS''";'; put 'putlog " , duration=" dur;'; put 'putlog " , processed_dttm=" now;'; put 'putlog " , approvals = ''&libref..&ds''";'; put 'putlog " where CSV_DIR=''&mperef'';";'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads set STATUS=''SUCCESS'''; put ', duration=&dur'; put ', processed_dttm=&now'; put ', approvals = "&libref..&ds"'; put 'where CSV_DIR="&mperef";'; put '%end;'; put '%else %do;'; put '%mpe_loadfail('; put 'status="FAILED - &syscc"'; put ',now=&now'; put ',approvals=&libref..&ds'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mend mpe_loader;'; put '%macro mp_cleancsv(in=NOTPROVIDED,out=NOTPROVIDED,qchar=''22''x);'; put '%if "&in"="NOTPROVIDED" or "&out"="NOTPROVIDED" %then %do;'; put '%put %str(ERR)OR: Please provide valid input (&in) & output (&out) locations;'; put '%return;'; put '%end;'; put '/* presence of a period(.) indicates a physical location */'; put '%if %index(&in,.) %then %let in="&in";'; put '%if %index(&out,.) %then %let out="&out";'; put '/**'; put '* convert all cr and crlf within quotes to lf'; put '* convert all other cr or lf to crlf'; put '*/'; put 'data _null_;'; put 'infile &in recfm=n ;'; put 'file &out recfm=n;'; put 'retain isq iscrlf 0 qchar &qchar;'; put 'input inchar $char1. ;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'if isq then do;'; put '/* inside a quote change cr and crlf to lf */'; put 'if inchar=''0D''x then do;'; put 'put ''0A''x;'; put 'input inchar $char1.;'; put 'if inchar ne ''0A''x then do;'; put 'put inchar $char1.;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'end;'; put 'end;'; put 'else put inchar $char1.;'; put 'end;'; put 'else do;'; put '/* outside a quote, change cr and lf to crlf */'; put 'if inchar=''0D''x then do;'; put 'crblank:'; put 'put ''0D0A''x;'; put 'input inchar $char1.;'; put 'if inchar=''0D''x then do;'; put '/* multiple CR indicates CR formatted file with blank lines */'; put 'goto crblank;'; put 'end;'; put 'else if inchar ne ''0A''x then do;'; put 'put inchar $char1.;'; put 'if inchar=qchar then isq = mod(isq+1,2);'; put 'end;'; put 'end;'; put 'else if inchar=''0A''x then put ''0D0A''x;'; put 'else put inchar $char1.;'; put 'end;'; put 'run;'; put '%mend mp_cleancsv;'; put '/** @endcond */'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file loadfile.sas'; put '@brief Loads a file'; put '@details'; put '

SAS Macros

'; put '@li mddl_sas_cntlout.sas'; put '@li mp_abort.sas'; put '@li mf_getplatform.sas'; put '@li mf_getuser.sas'; put '@li mf_getvarlist.sas'; put '@li mf_mkdir.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li dc_assignlib.sas'; put '@li mpe_getgroups.sas'; put '@li mp_lockfilecheck.sas'; put '@li mpe_loader.sas'; put '@li mp_cleancsv.sas'; put '@li mp_binarycopy.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global table dlm;'; put '%mpeinit(fetch=NO)'; put '%global _WEBIN_FILENAME1 _WEBIN_FILENAME2'; put '_WEBIN_FILEREF _WEBIN_FILEREF1 _WEBIN_FILEREF2;'; put '%macro load();'; put '%if %mf_getplatform()=SASVIYA %then %do;'; put '%global _webin_fileuri _webin_fileuri1 _webin_fileuri2;'; put '%let _webin_fileuri1=%sysfunc(coalescec(&_webin_fileuri1,&_webin_fileuri));'; put '%if "&_webin_fileuri1" ne "" %then %do;'; put '%put &=_webin_fileuri1;'; put 'filename sjfref1 filesrvc "&_webin_fileuri1";'; put '%let _WEBIN_FILEREF1=sjfref1;'; put '%end;'; put '%if "&_webin_fileuri2" ne "" %then %do;'; put '%put &=_webin_fileuri2;'; put 'filename sjfref2 filesrvc "&_webin_fileuri2";'; put '%let _WEBIN_FILEREF2=sjfref2;'; put '%end;'; put '%end;'; put '%mend load;'; put '%load()'; put '%let _WEBIN_FILENAME1=%sysfunc(coalescec(&_WEBIN_FILENAME1,&_WEBIN_FILENAME));'; put '%let _WEBIN_FILEREF1=%sysfunc(coalescec(&_WEBIN_FILEREF1,&_WEBIN_FILEREF));'; put '%let abort=0;'; put '/* we do not know if the excel file will be first or second fileref */'; put 'data _null_;'; put 'ext1=upcase(scan(symget(''_WEBIN_FILENAME1''),-1,''.''));'; put 'ext2=upcase(scan(symget(''_WEBIN_FILENAME2''),-1,''.''));'; put 'if ext1=''CSV'' then do;'; put 'csvname=symget(''_WEBIN_FILENAME1'');'; put 'csvref=symget(''_WEBIN_FILEREF1'');'; put 'xlsname=symget(''_WEBIN_FILENAME2'');'; put 'xlsref=symget(''_WEBIN_FILEREF2'');'; put 'end;'; put 'else if ext2=''CSV'' then do;'; put 'csvname=symget(''_WEBIN_FILENAME2'');'; put 'csvref=symget(''_WEBIN_FILEREF2'');'; put 'xlsname=symget(''_WEBIN_FILENAME1'');'; put 'xlsref=symget(''_WEBIN_FILEREF1'');'; put 'end;'; put 'else call symputx(''abort'',1);'; put 'call symputx(''csvname'',csvname);'; put 'call symputx(''csvref'',csvref);'; put 'call symputx(''xlsname'',xlsname);'; put 'call symputx(''xlsref'',coalescec(xlsref,''0''));'; put 'run;'; put '%mp_abort(iftrue= (&abort=1)'; put ',mac=&_program'; put ',msg=%str(File "&csvname" or "&xlsname" must be a CSV!'; put '(Comma separated with .csv extension))'; put ')'; put '%let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(table)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: table)'; put ')'; put '%let table=%upcase(%trim(&table));'; put '/* load parameters */'; put 'data _null_;'; put 'libds=upcase(symget(''table''));'; put 'call symputx(''orig_libds'',libds);'; put 'call symputx(''orig_lib'',scan(libds,1,''.''));'; put 'call symputx(''orig_ds'',scan(libds,2,''.''));'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'call execute(''%mddl_sas_cntlout(libds=work.fmtextract)'');'; put 'is_fmt=1;'; put 'end;'; put 'else call symputx(''libds'',libds);'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '/* check that the user has the requisite access */'; put '%mpe_getgroups(user=&user,outds=groups)'; put 'proc sql;'; put 'create table accesscheck as'; put 'select * from groups'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="EDIT"'; put 'and ('; put '(libref="&orig_lib" and dsn="&orig_ds")'; put 'or (libref="&orig_lib" and dsn="*ALL*")'; put 'or (libref="*ALL*" and dsn="*ALL*")'; put 'or (libref="*ALL*" and dsn="&orig_ds")'; put '));'; put '%let nobs=;'; put 'select count(*) into: nobs from &syslast;'; put '%mp_abort(iftrue= (&nobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(&user not authorised to load &orig_libds per &mpelib..mpe_security)'; put ')'; put '%dc_assignlib(WRITE,&orig_lib)'; put '%mp_abort(iftrue= (&syscc ge 4)'; put ',mac=loadfile'; put ',msg=%str(Issue assigning library &orig_lib)'; put ')'; put '%global txfrom txto processed;'; put 'data _null_;'; put 'set &mpelib..MPE_TABLES;'; put 'where libref="&orig_lib" and dsn="&orig_ds";'; put 'call symputx(''txfrom'',var_txfrom);'; put 'call symputx(''txto'',var_txto);'; put 'call symputx(''processed'',var_processed);'; put 'run;'; put '%mp_lockfilecheck(libds=&orig_libds)'; put 'data compare;'; put 'set &libds(drop=&txfrom &txto &processed);'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc line 80)'; put ')'; put '/* get line terminator, assume it''s the first cr, lf, or crlf */'; put 'data _null_;'; put 'length text $32767 term $4;'; put 'call missing (of _all_);'; put 'fid=fopen("&csvref",''I'',32767,''b'');'; put 'rc=fread(fid);'; put 'rc2=fget(fid,text,32767);'; put 'cr=find(text,''0D''x );'; put 'lf=find(text,''0A''x );'; put 'crlf=find(text,''0D0A''x);'; put 'rc=fclose(fid);'; put 'if crlf>0 & cr0 & crlf0 & cr>0 & lf0 then term=''LF'';'; put 'else term=''CR'';'; put 'call symputx(''termstr'',term);'; put 'run;'; put 'data _null_;'; put 'infile &csvref lrecl=32000 dsd termstr=&termstr;'; put 'input;'; put 'length incols_unsorted $32000 dlm $1;'; put 'incols_unsorted=compress(upcase(_infile_),"''"!!''"'');'; put '/* dlm has length 1 so will be the first non alpha / digit char */'; put '/* expectation is that there will not be any crazy characters in first col! */'; put 'dlm=compress(incols_unsorted,''_ '',''ad'');'; put 'incols_unsorted=compress(incols_unsorted,dlm!!''_'',''kado'');'; put 'incols_unsorted=tranwrd(incols_unsorted,dlm,'' '');'; put 'call symputx(''incols_unsorted'',incols_unsorted);'; put 'call symputx(''dlm'',dlm);'; put 'putlog incols_unsorted=;'; put 'putlog dlm=;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc line 99)'; put ')'; put '%let basecols=%upcase(%mf_getvarlist(work.compare,dlm=%str( )));'; put '%let missing_cols=%trim('; put '%mf_wordsInStr1ButNotStr2('; put 'Str1=&basecols'; put ',Str2=&incols_unsorted'; put '));'; put '%let msg='; put 'Expected cols: &basecols'; put '
Received cols: &incols_unsorted'; put '
Missing cols: &missing_cols'; put ';'; put '%mp_abort(iftrue= (%length(%trim(&missing_cols)) > 1 or &syscc ne 0)'; put ',mac=mpestp_loadfile.sas'; put ',msg=%superq(msg)'; put ')'; put '%let msg=0;'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/* create a dataset key (datetime plus 6 digit random number plus PID) */'; put '%let mperef=DC%left(%sysfunc(datetime(),B8601DT19.3))_%substr('; put '%sysfunc(ranuni(0)),3,6)_%substr(%str(&sysjobid ),1,4);'; put '/* Create package folder and redirect the log */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put '/* clean embedded line breaks and force CRLF line endings */'; put '%mp_cleancsv(in=&csvref, out=&dir/&orig_libds..csv)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(issue in mp_cleancsv)'; put ')'; put '%put; %put; %put log is being redirected;'; put '%let url=_program=%substr(&_program'; put ',1,%length(&_program)-8)getlog%nrstr(&)table=&mperef;'; put '%put to retrieve, visit this url:; %put;%put;'; put '%put &url;'; put '%put;'; put '/* proc printto log="&dir/weblog.txt";run; */'; put 'libname approve "&dir";'; put 'options mprint;'; put '%put &=mperef;'; put '%put &=termstr;'; put '%put &=dlm;'; put '%mpe_loader(mperef=&mperef'; put ',submitted_reason_txt=%quote(File upload: %superq(csvname))'; put ',dlm=%superq(dlm)'; put ',url=%superq(url)'; put ',termstr=CRLF'; put ',dc_dttmtfmt=&dc_dttmtfmt'; put ')'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort('; put 'iftrue= (%sysfunc(fileexist(%sysfunc(pathname(work))/mf_abort.error)) ne 0)'; put ',mac=&_program'; put ',msg=%nrstr(Problem occurred in &sysmacroname (mf_abort.error file found))'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mpestp_loadfile.sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename outref "&dir/BKP_&xlsname";'; put '%mp_binarycopy(iftrue=("&xlsref" ne "0"),inref=&xlsref,outref=outref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc when backing up source file &xlsname)'; put ')'; put 'data sasparams;'; put 'STATUS=''SUCCESS'';'; put 'DSID="&mperef";'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=stagedata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mpe_accesscheck('; put 'base_table /* base table to check for */'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%if %index(&outds,.) %then %do;'; put '%local lib ds;'; put '%let lib=%scan(&outds,1,.);'; put '%let ds=%scan(&outds,2,.);'; put '%if %upcase(&lib) ne WORK %then %do;'; put '%mp_abort(msg=outds should be a WORK table'; put ',mac=mpe_accesscheck);'; put '%end;'; put '%end;'; put '%else %let ds=&outds;'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing base_table/user access_level)'; put ')'; put '/* ensure any existing table is dropped */'; put '%mp_dropmembers(&ds)'; put '/* create a new table for temp use */'; put 'data; run;'; put '%local tempds; %let tempds=&syslast;'; put '/* overwrite with the list of groups */'; put '%mpe_getgroups(user=&user,outds=&tempds);'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds'; put 'where groupname="&mpeadmins"'; put 'or groupname in'; put '(select sas_group from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put '& ('; put '(libref="%scan(&base_table,1,.)" and dsn="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ')'; put ');'; put '%put base_table=&base_table;'; put '%put libref=%scan(&base_table,1,.);'; put '%put dsn=%scan(&base_table,2,.);'; put '%put access_level=&access_level;'; put '%mend mpe_accesscheck;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mpe_alerts(alert_event='; put ', alert_lib='; put ', alert_ds='; put ', dsid='; put ');'; put '/* exit if not configured */'; put '%global DC_EMAIL_ALERTS;'; put '%if &DC_EMAIL_ALERTS ne YES %then %do;'; put '%put DCNOTE: Email alerts are not configured;'; put '%put DCNOTE: (dc_email_alerts=&dc_email_alerts in &mpelib..mpe_config);'; put '%return;'; put '%end;'; put '%let alert_event=%upcase(&alert_event);'; put '%let alert_lib=%upcase(&alert_lib);'; put '%let alert_ds=%upcase(&alert_ds);'; put '%let from_user=%mf_getuser();'; put '/* get users TO which the email should be sent */'; put 'proc sql noprint;'; put 'create table users as select distinct a.alert_user,'; put 'b.user_displayname,'; put 'b.user_email'; put 'from &mpelib..mpe_alerts'; put '(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_emails'; put '(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on upcase(trim(a.alert_user))=upcase(trim(b.user_name))'; put 'where a.alert_event in ("&alert_event","*ALL*")'; put 'and a.alert_lib in ("&alert_lib","*ALL*")'; put 'and a.alert_ds in ("&alert_ds","*ALL*");'; put '%local isThere;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere>0 %then %do;'; put 'insert into &syslast set alert_user="&from_user";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data emails;'; put 'set users;'; put 'length emailuri uri text $256; call missing(emailuri,uri); drop emailuri uri;'; put '/* get displayname */'; put 'text=cats("omsobj:Person?@Name=''",alert_user,"''");'; put 'if metadata_getnobj(text,1,uri)<=0 then do;'; put 'putlog "DCWARN: &from_user not found";'; put 'return;'; put 'end;'; put 'else if user_displayname = '''' then do;'; put 'if metadata_getattr(uri,''DisplayName'',user_displayname)<0 then do;'; put 'putlog ''DCWARN: strange err, no displayname attribute of user URI'';'; put 'end;'; put 'end;'; put 'if index(user_email,''@'') then return;'; put '/* get email from metadata if not in input table */'; put 'if metadata_getnasn(uri,"EmailAddresses",1,emailuri)<=0 then do;'; put 'putlog "DCWARN: " alert_user " has no emails in MPE_EMAILS or metadata!";'; put 'if metadata_getattr(emailuri,"Address",user_email)<0 then do;'; put 'putlog ''DCWARN: Unexpected error! Valid emailURI but no email. Weird.'';'; put 'end;'; put 'end;'; put '/* only keep valid emails */'; put 'if index(user_email,''@'') ;'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select user_email into: emails separated by ''" "'' from emails;'; put '/* exit if nobody to email */'; put '%if %mf_getattrn(emails,NLOBS)=0 %then %do;'; put '%put NOTE: No alerts configured (mpe_alerts.sas);'; put '%return;'; put '%end;'; put '/* display email options */'; put 'data _null_;'; put 'set sashelp.voption(where=(group=''EMAIL''));'; put 'put optname ''='' setting;'; put 'run;'; put 'filename __out email ("&emails")'; put 'subject="Table &alert_lib..&alert_ds has been &alert_event";'; put '%local SUBMITTED_TXT;'; put '%if &alert_event=SUBMITTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_submit;'; put 'where table_id="&dsid" and submit_status_cd=''SUBMITTED'';'; put 'call symputx(''SUBMITTED_TXT'',submitted_reason_txt,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been proposed by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''SUBMITTED_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=APPROVED %then %do;'; put '/* there is no approval message */'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been approved by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put '%else %if &alert_event=REJECTED %then %do;'; put 'data _null_;'; put 'set &mpelib..mpe_review;'; put 'where table_id="&dsid" and review_status_id=''REJECTED'';'; put 'call symputx(''REVIEW_REASON_TXT'',REVIEW_REASON_TXT,''l'');'; put 'run;'; put 'data _null_;'; put 'File __out lrecl=32000;'; put 'put ''Dear user,'';'; put 'put '' '';'; put 'put "Please be advised that a change to table &alert_lib..&alert_ds has "'; put '"been rejected by &from_user on the ''&syshostname'' SAS server.";'; put 'put " ";'; put 'length txt $2048;'; put 'txt=symget(''REVIEW_REASON_TXT'');'; put 'put "Reason provided: " txt;'; put 'put " ";'; put 'put "This is an automated email by Data Controller for SAS®. For "'; put '"documentation, please visit https://docs.datacontroller.io";'; put 'run;'; put '%end;'; put 'filename __out clear;'; put '%mend mpe_alerts ;'; put '%macro mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=%sysfunc(datetime())'; put ',approvals='; put ',mperef='; put ',reason_txt='; put ',mac=mpe_loadfail.sas'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads'; put 'set STATUS=symget(''status'')'; put ', duration=&dur'; put ', processed_dttm=&dc_dttmtfmt.'; put ', approvals = symget(''approvals'')'; put ', reason_txt= symget(''reason_txt'')'; put 'where CSV_DIR="&mperef";'; put '%let syscc=666;'; put '%mp_abort(msg=%superq(status)\n%superq(reason_txt),mac=&mac)'; put '%mend mpe_loadfail;'; put '%macro dc_getservicecode(loc=,outref=);'; put '%mm_getstpcode(tree=&loc'; put ',outref=&outref'; put ')'; put '%mend dc_getservicecode;'; put '%macro mp_include(fileref'; put ',prefix=_'; put ',opts=SOURCE2'; put ',errds=work.mp_abort_errds'; put ')/*/STORE SOURCE*/;'; put '/* prepare precode */'; put '%local tempref;'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &tempref;'; put 'set sashelp.vextfl(where=(fileref="%upcase(&fileref)"));'; put 'put ''%let _SYSINCLUDEFILEDEVICE='' xengine '';'';'; put 'name=scan(xpath,-1,''/\'');'; put 'put ''%let _SYSINCLUDEFILENAME='' name '';'';'; put 'path=subpad(xpath,1,length(xpath)-length(name)-1);'; put 'put ''%let _SYSINCLUDEFILEDIR='' path '';'';'; put 'put ''%let _SYSINCLUDEFILEFILEREF='' "&fileref;";'; put 'run;'; put '/* prepare the errds */'; put 'data &errds;'; put 'length msg mac $1000;'; put 'call missing(msg,mac);'; put 'iftrue=''1=0'';'; put 'run;'; put '/* include the include */'; put '%inc &tempref &fileref/&opts;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=%str(&_SYSINCLUDEFILEDIR/&_SYSINCLUDEFILENAME)'; put ',msg=%str(syscc=&syscc after executing &_SYSINCLUDEFILENAME)'; put ')'; put 'filename &tempref clear;'; put '%mend mp_include;'; put '%macro mpe_runhook(hookvar);'; put '%local pgmloc pgmtype;'; put '%let pgmtype=0;'; put '%put &sysmacroname: &=hookvar;'; put '%if %length(&&&hookvar)>0 %then %do;'; put '%put &sysmacroname: Executing &&&hookvar;'; put 'data _null_;'; put 'rule_value=symget("&hookvar");'; put 'if scan(upcase(rule_value),-1,''.'')=''SAS'' then do;'; put 'call symputx(''pgmtype'',''PGM'');'; put 'call symputx(''pgmloc'',rule_value);'; put 'end;'; put 'else do;'; put 'apploc="%mf_getapploc()";'; put 'if substr(rule_value,1,1) ne ''/'''; put 'then rule_value=cats(apploc,''/'',rule_value);'; put 'call symputx(''pgmloc'',rule_value);'; put 'call symputx(''pgmtype'',''JOB'');'; put 'end;'; put 'run;'; put '%if &pgmtype=PGM %then %do;'; put 'filename sascode "&pgmloc";'; put '%end;'; put '%else %do;'; put '%dc_getservicecode(loc=&pgmloc'; put ',outref=sascode'; put ')'; put '%end;'; put '/* the below script will need to modify work.STAGING_DS */'; put '%local x; %let x=; /* legacy feature */'; put '%mp_include(sascode)'; put '%end;'; put '%mend mpe_runhook;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mp_dirlist(path=%sysfunc(pathname(work))'; put ', fref=0'; put ', outds=work.mp_dirlist'; put ', getattrs=NO'; put ', showparent=NO'; put ', maxdepth=0'; put ', level=0 /* The level of recursion to perform. For internal use only. */'; put ')/*/STORE SOURCE*/;'; put '%let getattrs=%upcase(&getattrs)XX;'; put '/* temp table */'; put '%local out_ds;'; put 'data;run;'; put '%let out_ds=%str(&syslast);'; put '/* drop main (top) table if it exists */'; put '%if &level=0 %then %do;'; put '%mp_dropmembers(%scan(&outds,-1,.), libref=WORK)'; put '%end;'; put 'data &out_ds(compress=no'; put 'keep=file_or_folder filepath filename ext msg directory level'; put ');'; put 'length directory filepath $500 fref fref2 $8 file_or_folder $6 filename $80'; put 'ext $20 msg $200 foption $16;'; put 'if _n_=1 then call missing(of _all_);'; put 'retain level &level;'; put '%if &fref=0 %then %do;'; put 'rc = filename(fref, "&path");'; put '%end;'; put '%else %do;'; put 'fref="&fref";'; put 'rc=0;'; put '%end;'; put 'if rc = 0 then do;'; put 'did = dopen(fref);'; put 'if did=0 then do;'; put 'putlog "NOTE: This directory is empty, or does not exist - &path";'; put 'msg=sysmsg();'; put 'put (_all_)(=);'; put 'stop;'; put 'end;'; put '/* attribute is OS-dependent - could be "Directory" or "Directory Name" */'; put 'numopts=doptnum(did);'; put 'do i=1 to numopts;'; put 'foption=doptname(did,i);'; put 'if foption=:''Directory'' then i=numopts;'; put 'end;'; put 'directory=dinfo(did,foption);'; put 'rc = filename(fref);'; put 'end;'; put 'else do;'; put 'msg=sysmsg();'; put 'put _all_;'; put 'stop;'; put 'end;'; put 'dnum = dnum(did);'; put 'do i = 1 to dnum;'; put 'filename = dread(did, i);'; put 'filepath=cats(directory,''/'',filename);'; put 'rc = filename(fref2,filepath);'; put 'midd=dopen(fref2);'; put 'dmsg=sysmsg();'; put 'if did > 0 then file_or_folder=''folder'';'; put 'rc=dclose(midd);'; put 'midf=fopen(fref2);'; put 'fmsg=sysmsg();'; put 'if midf > 0 then file_or_folder=''file'';'; put 'rc=fclose(midf);'; put 'if index(fmsg,''File is in use'') or index(dmsg,''is not a directory'')'; put 'then file_or_folder=''file'';'; put 'else if index(fmsg,''Insufficient authorization'') then file_or_folder=''file'';'; put 'else if file_or_folder='''' then file_or_folder=''locked'';'; put 'if file_or_folder=''file'' then do;'; put 'ext = prxchange(''s/.*\.{1,1}(.*)/$1/'', 1, filename);'; put 'if filename = ext then ext = '' '';'; put 'end;'; put 'else do;'; put 'ext='''';'; put 'file_or_folder=''folder'';'; put 'end;'; put 'output;'; put 'end;'; put 'rc = dclose(did);'; put '%if &showparent=YES and &level=0 %then %do;'; put 'filepath=directory;'; put 'file_or_folder=''folder'';'; put 'ext='''';'; put 'filename=scan(directory,-1,''/\'');'; put 'msg='''';'; put 'level=&level;'; put 'output;'; put '%end;'; put 'stop;'; put 'run;'; put '%if %substr(&getattrs,1,1)=Y %then %do;'; put 'data &out_ds;'; put 'set &out_ds;'; put 'length infoname infoval $60 fref $8;'; put 'if _n_=1 then call missing(fref);'; put 'rc=filename(fref,filepath);'; put 'drop rc infoname fid i close fref;'; put 'if file_or_folder=''file'' then do;'; put 'fid=fopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open file:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to foptnum(fid);'; put 'infoname=foptname(fid,i);'; put 'infoval=finfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=fclose(fid);'; put 'end;'; put 'else do;'; put 'fid=dopen(fref);'; put 'if fid le 0 then do;'; put 'msg=sysmsg();'; put 'putlog "Could not open folder:" filepath fid= ;'; put 'sasname=''_MCNOTVALID_'';'; put 'output;'; put 'end;'; put 'else do i=1 to doptnum(fid);'; put 'infoname=doptname(fid,i);'; put 'infoval=dinfo(fid,infoname);'; put 'sasname=compress(infoname, ''_'', ''adik'');'; put 'if anydigit(sasname)=1 then sasname=substr(sasname,anyalpha(sasname));'; put 'if upcase(sasname) ne ''FILENAME'' then output;'; put 'end;'; put 'close=dclose(fid);'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by filepath sasname;'; put 'proc transpose data=&out_ds out=&out_ds(drop=_:);'; put 'id sasname;'; put 'var infoval;'; put 'by filepath file_or_folder filename ext ;'; put 'run;'; put '%end;'; put 'data &out_ds;'; put 'set &out_ds(where=(filepath ne ''''));'; put 'run;'; put '/**'; put '* The above transpose can mean that some updates create additional columns.'; put '* This necessitates the occasional use of datastep over proc append.'; put '*/'; put '%if %mf_existds(&outds) %then %do;'; put '%local basevars appvars newvars;'; put '%let basevars=%mf_getvarlist(&outds);'; put '%let appvars=%mf_getvarlist(&out_ds);'; put '%let newvars=%length(%mf_wordsinstr1butnotstr2(Str1=&appvars,Str2=&basevars));'; put '%if &newvars>0 %then %do;'; put 'data &outds;'; put 'set &outds &out_ds;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds force nowarn;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'proc append base=&outds data=&out_ds;'; put 'run;'; put '%end;'; put '/* recursive call */'; put '%if &maxdepth>&level or &maxdepth=MAX %then %do;'; put 'data _null_;'; put 'set &out_ds;'; put 'where file_or_folder=''folder'';'; put '%if &showparent=YES and &level=0 %then %do;'; put 'if filepath ne directory;'; put '%end;'; put 'length code $10000;'; put 'code=cats(''%nrstr(%mp_dirlist(path='',filepath,",outds=&outds"'; put ',",getattrs=&getattrs,level=%eval(&level+1),maxdepth=&maxdepth))");'; put 'put code=;'; put 'call execute(code);'; put 'run;'; put '%end;'; put '/* tidy up */'; put 'proc sql;'; put 'drop table &out_ds;'; put '%mend mp_dirlist;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mpe_loader('; put 'mperef= /* name of subfolder containing the staged data */'; put ',mDebug=0 /* set to 1 for development or debugging */'; put ',submitted_reason_txt= /* populates column of same name in sumo_approvals*/'; put ',approver= /* allows a userid to be provided for direct approval email */'; put ',url= /* optional - url for debugging */'; put ',dlm=%str(,)'; put ',termstr=crlf'; put ',dc_dttmtfmt=E8601DT26.6'; put ');'; put '%put entered mpe_loader from &=_program;'; put '%put &=url;'; put '%put &=termstr;'; put '%put &=dlm;'; put '/* determine full path to CSV directory */'; put '%local now;'; put '%let now=&dc_dttmtfmt;'; put '%put &=now;'; put '/**'; put '* get full path to package (only subdirectory passed through)'; put '*/'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mperef mpelocapprovals)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing: mperef mpelocapprovals)'; put ')'; put '%let csv_dir=%trim(&mpelocapprovals/&mperef);'; put '/* exit if package has already been uploaded */'; put '%local check;'; put 'proc sql noprint;'; put 'select count(*) into: check'; put 'from &mpelib..mpe_loads'; put 'where csv_dir="&mperef";'; put '%if &check %then %do;'; put '%mp_abort(msg=Folder &mperef already has an entry in &mpelib..mpe_loads'; put ',mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* get CSV directory contents */'; put '%mp_dirlist(path=&csv_dir,outds=WORK.getfiles)'; put 'data WORK.csvs;'; put 'set WORK.getfiles;'; put 'if upcase(scan(filename,3,''.''))=''CSV'' then do;'; put 'lib=upcase(scan(filename,1,''.''));'; put 'ds=upcase(scan(filename,2,''.''));'; put 'output;'; put 'end;'; put 'run;'; put '/* get table attributes */'; put 'proc sql noprint;'; put 'create table WORK.sumo_tables as'; put 'select a.filename, b.*'; put 'from WORK.csvs a'; put 'left join &mpelib..mpe_tables b'; put 'on a.lib=b.libref'; put 'and a.ds=b.dsn'; put 'where b.tx_from le &now'; put 'and &now lt b.tx_to;'; put '/* define user as meta user if available */'; put '%local user;'; put '%let user=%mf_getuser();'; put '/* check if there is actually a table to load */'; put '%if %mf_getattrn(WORK.sumo_tables,NLOBS)=0 %then %do;'; put '%let msg=Table not registered in &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=&msg'; put ',now=&now'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put 'proc sql;'; put 'insert into &mpelib..mpe_loads'; put 'set USER_NM="&user"'; put ',STATUS=''IN PROGRESS'''; put ',CSV_dir="&mperef"'; put ',PROCESSED_DTTM=&now;'; put '/* import CSV */'; put '%let droplist=;'; put '%let attrib=;'; put '%let droplist=;'; put '%let libref=;'; put '%let DS=;'; put '/* get table info */'; put 'data _null_;'; put 'set sumo_tables;'; put 'libds=upcase(cats(libref,''.'',dsn));'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(dsn)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'call symputx(''libds'',libds);'; put 'call symputx(''FNAME'',filename);'; put 'call symputx(''LIBREF'',libref);'; put 'call symputx(''DS'',dsn);'; put 'call symputx(''LOADTYPE'',loadtype);'; put 'call symputx(''BUSKEY'',buskey);'; put 'call symputx(''VAR_TXFROM'',var_txfrom);'; put 'call symputx(''VAR_TXTO'',var_txto);'; put 'call symputx(''VAR_BUSFROM'',var_busfrom);'; put 'call symputx(''VAR_BUSTO'',var_busto);'; put 'call symputx(''VAR_PROCESSED'',var_processed);'; put 'call symputx(''RK_UNDERLYING'',RK_UNDERLYING);'; put 'call symputx(''POST_EDIT_HOOK'',POST_EDIT_HOOK);'; put 'call symputx(''NOTES'',NOTES);'; put 'call symputx(''PK'',coalescec(RK_UNDERLYING,buskey));'; put 'call symputx(''NUM_OF_APPROVALS_REQUIRED'',NUM_OF_APPROVALS_REQUIRED,''l'');'; put 'put (_all_)(=);'; put 'stop;'; put 'run;'; put '%if %length(&ds)=0 %then %do;'; put '%let msg=%str(ERR)OR: Unable to extract record from &mpelib..mpe_tables;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '/* export format catalog */'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* user must have EDIT access to load a table */'; put '%mpe_accesscheck(&orig_libds'; put ',outds=work.sumo_access'; put ',user=&user'; put ',access_level=EDIT )'; put '%put exiting accesscheck;'; put '%if %mf_getattrn(work.sumo_access,NLOBS)=0 %then %do;'; put '%let msg=%str(ERR)OR: User is not authorised to edit &orig_libds!;'; put '%mpe_loadfail('; put 'status=UNAUTHORISED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%mp_abort(msg=&msg,mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%put now importing: "&csv_dir/&fname" termstr=&termstr;'; put '/* get the variables from the CSV */'; put 'data vars_csv1(index=(idxname=(varnum name)) drop=infile);'; put 'infile "&csv_dir/&fname" lrecl=32767 dsd termstr=&termstr encoding=''utf-8'';'; put 'input;'; put 'length infile $32767;'; put 'infile=compress(_infile_,''"'',);'; put 'infile=compress(infile,"''",);'; put 'format name $32.;'; put 'putlog ''received vars: '' infile;'; put 'call symputx(''received_vars'',infile,''l'');'; put 'do varnum=1 to countw(infile,"&dlm");'; put '/* keep writeable chars */'; put 'name=compress(upcase(scan(infile,varnum)),,''kw'');'; put 'if name ne "_____DELETE__THIS__RECORD_____" then output;'; put 'end;'; put 'stop;'; put 'run;'; put '%put received_vars = &received_vars;'; put '%dc_assignlib(WRITE,&libref)'; put '/* get list of variables and their formats */'; put 'proc contents noprint data=&libds'; put 'out=vars(keep=name type length varnum format:);'; put 'run;'; put 'data vars(keep=name type length varnum format);'; put 'set vars(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'format2=upcase(format2);'; put '/* not interested in transaction or processing dates'; put '(append table must be supplied without them) */'; put 'if name not in ("&VAR_TXFROM","&VAR_TXTO","&VAR_PROCESSED"'; put ',"_____DELETE__THIS__RECORD_____");'; put 'if type2 in (2,6) then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else format=cats(format2,max(formatl,length),''.'');'; put 'type=''char'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if format2=:''DATETIME'' or format2=:''E8601DT'' then do;'; put 'format=''DATETIME19.'';'; put 'end;'; put 'else if format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'''; put 'or format2=:''E8601DA'' or format2=:''B8601DA'''; put 'then do;'; put 'format=''DATE9.'';'; put 'end;'; put 'else if format2=''BEST'' & formatl=0 then format=cats(''BEST'',length,''.'');'; put '/*'; put 'else if format2=:''DATETIME'' or format2=:''DATE'' or format2=:''DDMMYY'''; put 'or format2=:''MMDDYY'' or format2=:''YYMMDD'' then do;'; put '*date or datetime format so use original ;'; put 'dsid=open("&libref..&ds");'; put 'vnum=varnum(dsid,name);'; put 'format=varfmt(dsid,vnum);'; put 'dsid=close(dsid);'; put 'end;'; put '*/'; put 'else do;'; put 'if formatl=0 then formatl=length;'; put 'format=cats(format2,formatl,''.'',formatd);'; put 'end;'; put 'type=''num'';'; put 'end;'; put 'put (_all_)(=);'; put 'run;'; put '/* build attrib statement */'; put 'data vars_attrib;'; put 'length attrib_statement $32767 type2 $20;'; put 'set vars end=lastobs;'; put 'retain attrib_statement;'; put 'if type=''char'' then type2=''$'';'; put 'str1=catx('' '',name,''length='',cats(type2,length));'; put 'attrib_statement=trim(attrib_statement)!!'' ''!!trim(str1);'; put 'if lastobs then call symputx(''ATTRIB'',attrib_statement,''L'');'; put 'run;'; put '/* build input statement - first get vars in right order'; put 'and join with target formats*/'; put 'proc sql noprint;'; put 'create table vars_csv2 as'; put 'select b.*'; put 'from vars_csv1 a'; put 'left join vars_attrib b'; put 'on a.name=b.name'; put 'order by a.varnum;'; put '/* make sure that the variables we are importing, actually'; put 'exist on the target table */'; put '/** edit - extra variables are now simply ignored'; put '%local very_bad_vars;'; put 'select name into: very_bad_vars separated by '' '''; put 'from vars_csv1'; put 'where name not in (select name from vars)'; put 'and name ne "_____DELETE__THIS__RECORD_____";'; put '%if %length(&very_bad_vars) > 0 %then %do;'; put '%let msg=%str(WARNING: The following vars are not defined in %trim('; put ')&libref..&ds, yet they exist in &csv_dir/&ds..csv: &very_bad_vars);'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '**/'; put '/* now build input statement */'; put 'data final_check;'; put 'set vars_csv2 end=lastobs;'; put 'length input_statement $32767 type2 $20 droplist $32767;'; put 'retain input_statement droplist;'; put '/* Build input statement - CATCH EXCEPTIONS HERE!*/'; put 'if name in (''QUOTE_DTTM'') then do;'; put 'name=cats(name,''2'');'; put 'droplist=catx('' '',trim(droplist),name);'; put 'type2=''$20.'';/* converted below */'; put 'end;'; put 'else if type=''char'' then type2=cats(''$CHAR'', length,''.'');'; put 'else if format=''DATE9.'' then type2=''ANYDTDTE.'';'; put 'else if format=''DATETIME19.'' then type2=''ANYDTDTM.'';'; put 'else if format=:''TIME'' then type2=''ANYDTTME.'';'; put 'else if name='''' then do;/* additional vars in input data */'; put 'name=''_____DELETE__THIS__VARIABLE_____'';'; put 'droplist=catx('' '',trim(droplist),''_____DELETE__THIS__VARIABLE_____'');'; put 'type2=''$1.'';'; put 'end;'; put 'else type2=''best32.'';'; put '* else type2=cats(length,''.'');'; put 'input_statement=catx('' '',input_statement,name,'':'',type2);'; put 'if lastobs then do;'; put 'call symputx(''INPUT'', input_statement,''L'');'; put 'if trim(droplist) ne '''' then'; put 'call symputx(''droplist'',"drop "!!droplist!!'';'',''l'');'; put 'end;'; put 'run;'; put '%let mpeloadstop=0;'; put 'data work.STAGING_DS;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767'; put 'firstobs=2 missover termstr=&termstr encoding=''utf-8'';'; put 'attrib &attrib ;'; put 'if _n_=1 then call missing (of _all_);'; put 'missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____ %then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put '%if %index(%quote(&attrib.),UNLIKELY_VAR ) %then %do;'; put '/*UNLIKELY_VAR=input(UNLIKELY_VAR2,ANYDTDTM21.);*/'; put '/* SPECIAL LOGIC FOR SPECIAL VARS */'; put '%end;'; put 'if _error_ ne 0 then do;'; put 'putlog _infile_;'; put 'call symputx(''mpeloadstop'',_n_);'; put 'stop;'; put 'end;'; put '/* remove all blank rows */'; put 'if compress(cats(of _all_),''.'')='' '' then delete;'; put 'run;'; put '%if &mpeloadstop>0 %then %do;'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put '%put redirecting log output to capture return message;'; put '%put currentloc=&logloc;'; put 'filename tmp temp;'; put 'proc printto log=tmp;run;'; put 'data _null_;'; put '&droplist;'; put 'infile "&csv_dir/&fname" dsd dlm="&dlm" lrecl=32767 firstobs=2'; put 'missover termstr=&termstr;'; put 'attrib &attrib ;'; put 'input'; put '%if %scan(%quote(&received_vars),1)=_____DELETE__THIS__RECORD_____'; put '%then %do;'; put '_____DELETE__THIS__RECORD_____: $3.'; put '%end;'; put '&input;'; put 'if _error_ then stop;'; put 'run;'; put '/* get log back */'; put 'proc printto log=&logloc;run;'; put 'data _null_; infile tmp; input; putlog _infile_;run;'; put '/* scan log for invalid data warning */'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'length msg1 msg2 msg3 msg4 msg5 msg url $32767;'; put 'if index(_infile_,''NOTE: Invalid data for'') then do;'; put 'msg1=_infile_;'; put 'input;'; put 'msg2=_infile_;'; put 'input;'; put 'msg3=_infile_;'; put 'input;'; put 'msg4=_infile_;'; put 'input;'; put 'msg5=_infile_;'; put 'url=symget(''url'');'; put 'msg=catx(''\n'',msg1,msg2,msg3,msg4,msg5,''\n'',url);'; put 'call symputx(''msg'',msg);'; put 'stop;'; put 'end;'; put 'run;'; put '%mpe_loadfail('; put 'status=FAILED'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/* check that the table is unique on PK */'; put 'proc sort data=work.STAGING_DS dupout=work.MPE_DUPS (keep=&pk) nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.MPE_DUPS,NLOBS)>0 %then %do;'; put '%local duplist;'; put 'data _null_;'; put 'set work.mpe_dups;'; put '%do i=1 %to %sysfunc(countw(&pk));'; put '%let iWord=%scan(&pk,&i);'; put 'call symputx(''duplist'',symget(''duplist'')!!'; put '" &iWord="!!trim(&iWord));'; put '%end;'; put 'run;'; put '%let msg=This upload contains duplicates on the Primary Key columns %trim('; put ')(&pk) \n Please remove the duplicates and try again. %trim('; put ')\n &duplist \n ;'; put '%mp_abort(msg=%superq(msg),mac=mpe_loader.sas);'; put '%return;'; put '%end;'; put '%if &syscc gt 4 %then %do;'; put '%let msg=SYSCC=&syscc prior to post edit hook (%superq(syserrortext));'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%superq(msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mpe_runhook(POST_EDIT_HOOK)'; put '/* stop if err */'; put '%if &syscc gt 4 %then %do;'; put '%let msg=ERR in post edit hook (&post_edit_hook);'; put '%mpe_loadfail('; put 'status=FAILED - &syscc'; put ',now=&now'; put ',mperef=&mperef'; put ',reason_txt=%quote(&msg)'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '/**'; put '* send to approve process'; put '*/'; put '/* create a dataset key (datetime plus 3 digit random number plus PID) */'; put '/* send dataset to approvals subfolder with same name as subfolder */'; put 'libname approval "&mpelocapprovals/&mperef";'; put 'data approval.&mperef;'; put 'set work.staging_ds;'; put 'run;'; put 'proc export data=approval.&mperef'; put 'outfile="&mpelocapprovals/&mperef/&mperef..csv"'; put 'dbms=csv'; put 'replace;'; put 'run;'; put '/* update the control dataset with relevant info */'; put 'data append_app;'; put 'if 0 then set &mpelib..mpe_submit;/* get formats */'; put 'call missing (of _all_);'; put 'TABLE_ID="&mperef";'; put 'submit_status_cd=''SUBMITTED'';'; put 'submitted_by_nm="%mf_getuser()";'; put 'base_lib="&libref";'; put 'base_ds="&ds";'; put 'submitted_on_dttm=&now;'; put 'submitted_reason_txt=symget(''submitted_reason_txt'');'; put 'input_vars=%mf_getattrn(approval.&mperef,NVARS);'; put 'input_obs=%mf_getattrn(approval.&mperef,NLOBS);'; put 'num_of_approvals_required=&NUM_OF_APPROVALS_REQUIRED;'; put 'num_of_approvals_remaining=&NUM_OF_APPROVALS_REQUIRED;'; put 'reviewed_by_nm='''';'; put 'reviewed_on_dttm=.;'; put 'run;'; put '%mp_lockanytable(LOCK,lib=&mpelib,ds=mpe_submit,'; put 'ref=%str(&mperef update in &_program),'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'proc append base= &mpelib..mpe_submit data=append_app;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=&mpelib,ds=mpe_submit,'; put 'ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put '/* send email to REVIEW members */'; put '%put sending mpe_alerts;'; put '%mpe_alerts(alert_event=SUBMITTED'; put ', alert_lib=&libref'; put ', alert_ds=&ds'; put ', dsid=&mperef'; put ')'; put '/* DISABLE EMAIL FOR NOW'; put '%let b2=REASON: %quote(&submitted_reason_txt);'; put '%local URLNOTES;'; put '%if %length(¬es)>0 %then %let URLNOTES=%quote(%sysfunc(urlencode(¬es)));'; put '%let b3=%str(Click to review / approve: )%trim('; put ')%str(http://&_srvname:&_srvport&_url?_PROGRAM=/Web/approvals&)%trim('; put ')TABLEID=&dsid%str(&)BASETABLE=&libref..&ds%str(&)NOTES=&URLNOTES;'; put '%let b4=%str(Reference ID: &mperef);'; put '*/'; put '%put mpe_loader finishing up with syscc=&syscc;'; put '%if &syscc le 4 %then %do;'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'putlog ''Updating mpe_loads with the following query:'';'; put 'putlog "update &mpelib..mpe_loads set STATUS=''SUCCESS''";'; put 'putlog " , duration=" dur;'; put 'putlog " , processed_dttm=" now;'; put 'putlog " , approvals = ''&libref..&ds''";'; put 'putlog " where CSV_DIR=''&mperef'';";'; put 'run;'; put 'proc sql;'; put 'update &mpelib..mpe_loads set STATUS=''SUCCESS'''; put ', duration=&dur'; put ', processed_dttm=&now'; put ', approvals = "&libref..&ds"'; put 'where CSV_DIR="&mperef";'; put '%end;'; put '%else %do;'; put '%mpe_loadfail('; put 'status="FAILED - &syscc"'; put ',now=&now'; put ',approvals=&libref..&ds'; put ',mperef=&mperef'; put ',dc_dttmtfmt=&dc_dttmtfmt.'; put ')'; put '%return;'; put '%end;'; put '%mend mpe_loader;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mcf_init(func'; put ')/*/STORE SOURCE*/;'; put '%if not (%symexist(SASJS_PREFIX)) %then %do;'; put '%global SASJS_PREFIX;'; put '%let SASJS_PREFIX=SASJS;'; put '%end;'; put '%let func=%upcase(&func);'; put '/* the / character is just a seperator */'; put '%global &sasjs_prefix._FUNCTIONS;'; put '%if %index(&&&sasjs_prefix._FUNCTIONS,&func/)>0 %then %do;'; put '1'; put '%return;'; put '%end;'; put '%else %do;'; put '%let &sasjs_prefix._FUNCTIONS=&&&sasjs_prefix._FUNCTIONS &func/;'; put '0'; put '%end;'; put '%mend mcf_init;'; put '%macro mcf_getfmttype(wrap=NO'; put ',insert_cmplib=DEPRECATED'; put ',lib=WORK'; put ',cat=SASJS'; put ',pkg=UTILS'; put ')/*/STORE SOURCE*/;'; put '%local i var cmpval found;'; put '%if %mcf_init(mcf_getfmttype)=1 %then %return;'; put '%if &wrap=YES %then %do;'; put 'proc fcmp outlib=&lib..&cat..&pkg;'; put '%end;'; put 'function mcf_getfmttype(fmtnm $) $8;'; put 'if substr(fmtnm,1,1)=''$'' then return(''CHAR'');'; put 'else do;'; put '/* extract NAME */'; put 'length fmt $32;'; put 'fmt=scan(fmtnm,1,''.'');'; put 'do while ('; put 'substr(fmt,length(fmt),1) in (''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'',''0'')'; put ');'; put 'if length(fmt)=1 then fmt=''W'';'; put 'else fmt=substr(fmt,1,length(fmt)-1);'; put 'end;'; put '/* apply lookups */'; put 'if cats(fmt) in (''DATETIME'',''B8601DN'',''B8601DN'',''B8601DT'',''B8601DT'''; put ',''B8601DZ'',''B8601DZ'',''DATEAMPM'',''DTDATE'',''DTMONYY'',''DTWKDATX'',''DTYEAR'''; put ',''DTYYQC'',''E8601DN'',''E8601DN'',''E8601DT'',''E8601DT'',''E8601DZ'',''E8601DZ'')'; put 'then return(''DATETIME'');'; put 'else if fmt in (''DATE'',''YYMMDD'',''B8601DA'',''B8601DA'',''DAY'',''DDMMYY'''; put ',''DDMMYYB'',''DDMMYYC'',''DDMMYYD'',''DDMMYYN'',''DDMMYYP'',''DDMMYYS'',''DDMMYYx'''; put ',''DOWNAME'',''E8601DA'',''E8601DA'',''JULDAY'',''JULIAN'',''MMDDYY'',''MMDDYYB'''; put ',''MMDDYYC'',''MMDDYYD'',''MMDDYYN'',''MMDDYYP'',''MMDDYYS'',''MMDDYYx'',''MMYY'''; put ',''MMYYC'',''MMYYD'',''MMYYN'',''MMYYP'',''MMYYS'',''MMYYx'',''MONNAME'',''MONTH'''; put ',''MONYY'',''PDJULG'',''PDJULI'',''QTR'',''QTRR'',''WEEKDATE'',''WEEKDATX'',''WEEKDAY'''; put ',''WEEKU'',''WEEKV'',''WEEKW'',''WORDDATE'',''WORDDATX'',''YEAR'',''YYMM'',''YYMMC'''; put ',''YYMMD'',''YYMMDDB'',''YYMMDDC'',''YYMMDDD'',''YYMMDDN'',''YYMMDDP'',''YYMMDDS'''; put ',''YYMMDDx'',''YYMMN'',''YYMMP'',''YYMMS'',''YYMMx'',''YYMON'',''YYQ'',''YYQC'',''YYQD'''; put ',''YYQN'',''YYQP'',''YYQR'',''YYQRC'',''YYQRD'',''YYQRN'',''YYQRP'',''YYQRS'',''YYQRx'''; put ',''YYQS'',''YYQx'',''YYQZ'') then return(''DATE'');'; put 'else if fmt in (''TIME'',''B8601LZ'',''B8601LZ'',''B8601TM'',''B8601TM'',''B8601TZ'''; put ',''B8601TZ'',''E8601LZ'',''E8601LZ'',''E8601TM'',''E8601TM'',''E8601TZ'',''E8601TZ'''; put ',''HHMM'',''HOUR'',''MMSS'',''TIMEAMPM'',''TOD'') then return(''TIME'');'; put 'else return(''NUM'');'; put 'end;'; put 'endsub;'; put '%if &wrap=YES %then %do;'; put 'quit;'; put '%end;'; put '/* insert the CMPLIB if not already there */'; put '%let cmpval=%sysfunc(getoption(cmplib));'; put '%let found=0;'; put '%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));'; put '%let var=%scan(&cmpval,&i,%str( %(%)));'; put '%if &var=&lib..&cat %then %let found=1;'; put '%end;'; put '%if &found=0 %then %do;'; put 'options insert=(CMPLIB=(&lib..&cat));'; put '%end;'; put '%mend mcf_getfmttype;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_ds2csv(ds'; put ',dlm=COMMA'; put ',outref=0'; put ',outfile='; put ',outencoding=0'; put ',headerformat=LABEL'; put ',termstr=CRLF'; put ')/*/STORE SOURCE*/;'; put '%local outloc delim i varlist var vcnt vat dsv vcom vmiss fmttype vfmt;'; put '%if not %sysfunc(exist(&ds)) %then %do;'; put '%put %str(WARN)ING: &ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&ds,.)=0 %then %let ds=WORK.&ds;'; put '%if &outencoding=0 %then %let outencoding=;'; put '%else %let outencoding=encoding=&outencoding;'; put '%if &outref=0 %then %let outloc=&outfile;'; put '%else %let outloc=&outref;'; put '%if &headerformat=SASJS %then %do;'; put '%let delim=",";'; put '%let termstr=CRLF;'; put '%mcf_getfmttype(wrap=YES)'; put '%end;'; put '%else %if &dlm=COMMA %then %let delim=",";'; put '%else %let delim=";";'; put '/* credit to mjsq - https://stackoverflow.com/a/55642267 */'; put '/* first get headers */'; put 'data _null_;'; put 'file &outloc &outencoding lrecl=32767 termstr=&termstr;'; put 'length header $ 2000 varnm vfmt $32 dlm $1 fmttype $8;'; put 'call missing(of _all_);'; put 'dsid=open("&ds.","i");'; put 'num=attrn(dsid,"nvars");'; put 'dlm=&delim;'; put 'do i=1 to num;'; put 'varnm=upcase(varname(dsid,i));'; put 'if i=num then dlm='''';'; put '%if &headerformat=NAME %then %do;'; put 'header=cats(varnm,dlm);'; put '%end;'; put '%else %if &headerformat=LABEL %then %do;'; put 'header = cats(coalescec(varlabel(dsid,i),varnm),dlm);'; put '%end;'; put '%else %if &headerformat=SASJS %then %do;'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',varlen(dsid,i),''.'');'; put 'else do;'; put 'vfmt=coalescec(varfmt(dsid,i),''0'');'; put 'fmttype=mcf_getfmttype(vfmt);'; put 'if fmttype=''DATE'' then header=cats(varnm,'':date9.'');'; put 'else if fmttype=''DATETIME'' then header=cats(varnm,'':E8601DT26.6'');'; put 'else if fmttype=''TIME'' then header=cats(varnm,'':TIME12.'');'; put 'else header=cats(varnm,'':best.'');'; put 'end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Invalid headerformat value (&headerformat);'; put '%return;'; put '%end;'; put 'put header @;'; put 'end;'; put 'rc=close(dsid);'; put 'run;'; put '%let varlist=%mf_getvarlist(&ds);'; put '%let vcnt=%sysfunc(countw(&varlist));'; put '/**'; put '* The $quote modifier (without a width) will take the length from the variable'; put '* and increase by two. However this will lead to truncation where the value'; put '* contains double quotes (which are doubled up). To get around this, scan the'; put '* data to see the max number of double quotes, so that the appropriate width'; put '* can be applied in the subsequent step.'; put '*/'; put 'data _null_;'; put 'set &ds end=last;'; put '%do i=1 %to &vcnt;'; put '%let var=%scan(&varlist,&i);'; put '%if %mf_getvartype(&ds,&var)=C %then %do;'; put '%let dsv1=%mf_getuniquename(prefix=csvcol1_);'; put '%let dsv2=%mf_getuniquename(prefix=csvcol2_);'; put 'retain &dsv1 0;'; put '&dsv2=length(&var)+countc(&var,''"'');'; put 'if &dsv2>&dsv1 then &dsv1=&dsv2;'; put 'if last then call symputx('; put '"vlen&i"'; put '/* should be no shorter than varlen, and no longer than 32767 */'; put ',cats(''$quote'',min(&dsv1+2,32767),''.'')'; put ',''l'''; put ');'; put '%end;'; put '%end;'; put '%let vat=@;'; put '%let vcom=&delim;'; put '%let vmiss=%mf_getuniquename(prefix=csvcol3_);'; put '/* next, export data */'; put 'data _null_;'; put 'set &ds.;'; put 'file &outloc mod dlm=&delim dsd &outencoding lrecl=32767 termstr=&termstr;'; put 'if _n_=1 then &vmiss='' '';'; put '%do i=1 %to &vcnt;'; put '%let var=%scan(&varlist,&i);'; put '%if &i=&vcnt %then %do;'; put '%let vat=;'; put '%let vcom=;'; put '%end;'; put '%if %mf_getvartype(&ds,&var)=N %then %do;'; put '%if &headerformat = SASJS %then %do;'; put '%let vcom=&delim;'; put '%let fmttype=%sysfunc(mcf_getfmttype(%mf_getvarformat(&ds,&var)0));'; put '%if &fmttype=DATE %then %let vfmt=DATE9.;'; put '%else %if &fmttype=DATETIME %then %let vfmt=E8601DT26.6;'; put '%else %if &fmttype=TIME %then %let vfmt=TIME12.;'; put '%else %do;'; put '%let vfmt=;'; put '%let vcom=;'; put '%end;'; put '%end;'; put '%else %let vcom=;'; put '/* must use period - in order to work in both 9.4 and Viya 3.5 */'; put 'if missing(&var) and &var ne %sysfunc(getoption(MISSING)) then do;'; put '&vmiss=cats(''.'',&var);'; put 'put &vmiss &vat;'; put 'end;'; put 'else put &var &vfmt &vcom &vat;'; put '%end;'; put '%else %do;'; put '%if &i ne &vcnt %then %let vcom=&delim;'; put 'put &var &&vlen&i &vcom &vat;'; put '%end;'; put '%end;'; put 'run;'; put '%mend mp_ds2csv;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Sends a changeset to staging area'; put '@details This is the service that is called when submitting a new edit.'; put '

Service Inputs

'; put '
jsdata
'; put 'This is the staged data table, plus an _____DELETE__THIS__RECORD_____ column'; put '
SASControlTable
'; put '|ACTION:$char4.|MESSAGE:$char1.|LIBDS:$char19.|'; put '|---|---|---|'; put '|LOAD|User-Provided message|LIBREF.DATASET_NAME|'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mf_nobs.sas'; put '@li dc_assignlib.sas'; put '@li mf_verifymacvars.sas'; put '@li mf_mkdir.sas'; put '@li mf_getuniquefileref.sas'; put '@li mpe_loader.sas'; put '@li mpe_filtermaster.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_cntlout.sas'; put '@li mp_ds2csv.sas'; put '@li mf_getplatform.sas'; put '@li removecolsfromwork.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global approver; %let approver=;'; put '%global libref; %let libref=;'; put '%global dsn; %let dsn=;'; put '%global user; %let user=;'; put '%let user=%mf_getuser();'; put '/* load parameters */'; put 'data _null_;'; put 'set work.sascontroltable;'; put 'call symputx(''action'',action);'; put 'call symputx(''message'',message);'; put 'libds=upcase(libds);'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'libds=''work.fmtextract'';'; put 'call symputx(''libds'',libds);'; put 'is_fmt=1;'; put 'end;'; put 'else call symputx(''libds'',libds);'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/* stream back meta info, further jquery calls will return col metadata and'; put 'actual data */'; put '%let libref=%upcase(%scan(&libds,1,.));'; put '%let dsn=%upcase(%scan(&libds,2,.));'; put '%dc_assignlib(WRITE,&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc - unable to assign library &libref)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(mpelocapprovals libds)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: mpelocapprovals libds)'; put ')'; put '%put Verify that the upload does not violate Row Level Security checks:;'; put '%mpe_filtermaster(ULOAD,&libds,'; put 'dclib=&mpelib,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc during filtering process)'; put ')'; put '/* prepare inverse query */'; put '%let tempref=%mf_getuniquefileref();'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'file &tempref;'; put 'if _n_=1 then put ''where not('';'; put 'input;'; put 'put _infile_;'; put 'if eof then put '')'';'; put 'run;'; put '/* apply the query */'; put 'data work.badrecords;'; put 'set work.jsdata;'; put '%inc &tempref/source2;;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.badrecords)>0)'; put ',mac=&_program'; put ',msg=%str('; put 'Security Problem - %mf_nobs(work.badrecords) unauthorised records submitted'; put ')'; put ')'; put 'PROC FORMAT;'; put 'picture yymmddhhmmss other=''%0Y%0m%0d_%0H%0M%0S'' (datatype=datetime);'; put 'RUN;'; put '/**'; put '* Create package folder and redirect the log'; put '*/'; put '/* create a dataset key (datetime plus 6 digit random number plus PID) */'; put '%let mperef=DC%left(%sysfunc(datetime(),B8601DT19.3))_%substr('; put '%sysfunc(ranuni(0)),3,6)_%substr(%str(&sysjobid ),1,4);'; put '/* get web url */'; put '%global url;'; put '%let url=localhost/SASStoredProcess;'; put '%let platform=%mf_getplatform();'; put '%put &=platform;'; put 'data _null_;'; put 'length url $128;'; put '%macro stagedata();'; put '%if &platform=SASVIYA %then %do;'; put 'if symexist(''_baseurl'') then do;'; put 'url=symget(''_baseurl'');'; put 'if subpad(url,length(url)-9,9)=''SASStudio'''; put 'then url=substr(url,1,length(url)-11);'; put 'else url="&systcpiphostname/SASJobExecution";'; put 'end;'; put 'else url="&systcpiphostname/SASJobExecution";'; put '%end;'; put '%else %if &platform=SASMETA %then %do;'; put 'rc=METADATA_GETURI("Stored Process Web App",url);'; put '%end;'; put '%mend stagedata;'; put '%stagedata()'; put 'call symputx(''url'',url);'; put 'putlog url=;'; put 'run;'; put '/* Create package folder */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put '/* redirect the log */'; put '%put; %put; %put log is being redirected;'; put '%put to retrieve, visit this url:; %put;%put;'; put '%let url=&url?_program=%substr(&_program'; put ',1,%length(&_program)-9)getlog%str(&)table=&mperef;'; put '%put &url;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to log redirection)'; put ')'; put 'proc printto log="&dir/weblog.txt";run;'; put 'options notes mprint;'; put 'libname approve "&dir";'; put '/* take copy of webin file */'; put 'data _null_;'; put 'if symexist(''_WEBIN_FILEREF1'')'; put 'then ref=symget(''_WEBIN_FILEREF1'');'; put 'else if symexist(''sasjs_tables'') then do;'; put 'rc=filename(''ref'',"%sysfunc(pathname(work))/&dsn.csv");'; put 'ref=''ref'';'; put 'end;'; put 'else ref=''indata1'';'; put 'call symputx(''ref'',ref);'; put 'putlog ref=;'; put 'run;'; put '%mp_binarycopy(inref=&ref, outloc="&dir/_WEBIN_FILEREF1.txt")'; put '/* take copy of macvars */'; put 'data _null_;'; put 'file "&dir/macvars.sas";'; put 'set sashelp.vmacro;'; put 'where scope=''GLOBAL'';'; put 'put ''%let '' name ''='' value '';'';'; put 'run;'; put 'data approve.jsdset;'; put 'length _____DELETE__THIS__RECORD_____ $3;'; put 'set jsdata;'; put 'run;'; put '/**'; put '* mf_getvarXXX functions will fail if the target is locked - so take a copy'; put '* and reference that (this will also explicitly throw the lock situation)'; put '*/'; put '%let dscopy=work.dscopy;'; put 'data &dscopy;'; put 'set &libds;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Issue getting lock on &libds)'; put ')'; put '%mp_ds2csv(approve.jsdset'; put ',dlm=COMMA'; put ',outfile="&dir/&orig_libds..csv"'; put ',outencoding="UTF-8"'; put ',headerformat=NAME'; put ',termstr=CRLF'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc when writing the CSV)'; put ')'; put '%mpe_loader(mperef=&mperef'; put ',submitted_reason_txt=%superq(message)'; put ',approver=%quote(%trim(&approver))'; put ',url=%superq(url)'; put ',dc_dttmtfmt=&dc_dttmtfmt'; put ')'; put '%mp_abort(mode=INCLUDE)'; put '%mp_abort('; put 'iftrue=(%sysfunc(fileexist(%sysfunc(pathname(work))/mf_abort.error))=1)'; put ',mac=&_program..sas'; put ',msg=%str(mf_abort.error=1)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/* send relevant SUCCESS values */'; put 'data sasparams;'; put 'STATUS=''SUCCESS'';'; put 'DSID="&mperef";'; put 'url="&url";'; put 'run;'; put '%removecolsfromwork(___TMP___MD5)'; put '%webout(OPEN)'; put '%webout(OBJ,sasparams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/hooks; %let service=mpe_column_level_security_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_COLUMN_LEVEL_SECURITY table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming column_level_security settings to ensure'; put 'each individual filter is valid'; put '**/'; put '/* check scope values and ensure uppercasing */'; put '%let errflag=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'cls_scope=upcase(cls_scope);'; put 'CLS_LIBREF=upcase(CLS_LIBREF);'; put 'cls_table=upcase(CLS_TABLE);'; put 'CLS_VARIABLE_NM=upcase(CLS_VARIABLE_NM);'; put 'if cls_scope not in (''ALL'',''VIEW'',''EDIT'') then do;'; put 'call symputx(''errflag'',1);'; put 'call symputx(''errmsg'',"Invalid scope: "!!cls_scope);'; put 'stop;'; put 'end;'; put 'if cls_hide<1 then cls_hide=0;'; put 'else cls_hide=1;'; put 'if CLS_ACTIVE<1 then CLS_ACTIVE=0;'; put 'else CLS_ACTIVE=1;'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_column_level_security_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_row_level_security_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_ROW_LEVEL_SECURITY table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming row_level_security settings to ensure'; put 'each individual filter is'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mp_filtercheck.sas'; put '

Related Macros

'; put '@li mpe_loader.sas'; put '**/'; put '/* ignore scope and group for validation */'; put 'proc sql;'; put 'create table work.batches as'; put 'select distinct upcase(rls_libref) as rls_libref,'; put 'upcase(rls_table) as rls_table,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from work.staging_ds'; put 'where rls_active=1'; put 'order by rls_libref, rls_table;'; put '%let cnt=0;'; put 'data _null_;'; put 'set work.batches;'; put 'by rls_libref rls_table;'; put 'putlog (_all_)(=);'; put 'if last.rls_table then do;'; put 'x+1;'; put 'call symputx(cats(''libds'',x),cats(rls_libref,''.'',rls_table));'; put 'call symputx(''cnt'',x);'; put 'end;'; put 'run;'; put '%macro quickloop();'; put '%do i=1 %to &cnt;'; put 'data work.inds&i;'; put 'set work.batches;'; put 'if cats(rls_libref,''.'',rls_table)="&&libds&i";'; put 'keep group_logic subgroup_logic subgroup_id variable_nm operator_nm'; put 'raw_value;'; put 'run;'; put '%dc_assignlib(READ,%scan(&&libds&i,1,.))'; put '%mp_filtercheck(work.inds&i'; put ',targetds=&&libds&i'; put ',outds=work.badrecords'; put ',abort=YES'; put ')'; put '%end;'; put '%mend quickloop;'; put '%quickloop()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_tables_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_TABLES table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks MPE_TABLES to ensure modified / added records are'; put 'valid. If a non-default AUDIT_LIBDS is being used, there is also a check'; put 'to ensure that this table already exists.'; put '**/'; put '%let errmsg=;'; put '%let errflag=0;'; put '/* ensure uppercasing */'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'loadtype=upcase(loadtype);'; put 'buskey=upcase(buskey);'; put 'var_txfrom=upcase(var_txfrom);'; put 'var_txto=upcase(var_txto);'; put 'var_busfrom=upcase(var_busfrom);'; put 'var_busto=upcase(var_busto);'; put 'var_processed=upcase(var_processed);'; put 'close_vars=upcase(close_vars);'; put 'audit_libds=upcase(audit_libds);'; put '/* check for valid loadtype */'; put 'if LOADTYPE not in (''UPDATE'',''TXTEMPORAL'',''FORMAT_CAT'',''BITEMPORAL'',''REPLACE'')'; put 'then do;'; put 'call symputx(''errmsg'',"Invalid LOADTYPE: "!!LOADTYPE);'; put 'call symputx(''errflag'',1);'; put 'end;'; put '/* force correct BUSKEY and DSN when loading format catalogs */'; put 'if LOADTYPE=''FORMAT_CAT'' then do;'; put 'BUSKEY=''TYPE FMTNAME FMTROW'';'; put 'if subpad(dsn,length(dsn)-3,3) ne ''-FC'' then dsn=cats(dsn,''-FC'');'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_tables_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '/* get distinct list of audit libs */'; put 'proc sql;'; put 'create table work.liblist as'; put 'select distinct audit_libds'; put 'from work.staging_ds'; put 'where audit_libds not in ('''',''0'', "&dc_libref..MPE_AUDIT")'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne "YES";'; put '/* assign the libs */'; put 'data _null_;'; put 'set work.liblist;'; put 'call symputx(cats(''lib'',_n_),audit_libds);'; put 'libref=scan(audit_libds,1,''.'');'; put 'call execute(''%dc_assignlib(WRITE,''!!libref!!'')'');'; put 'run;'; put '/* check the audit tables exist */'; put 'data _null_;'; put 'set work.liblist;'; put 'if exist(audit_libds,"DATA")=0 then do;'; put 'call symputx(''errmsg'','; put '"Audit Table "!!audit_libds!!" does not exist, or could not be assigned."'; put ');'; put 'call symputx(''errflag'',1);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&errflag=1)'; put ',mac=mpe_tables_postedit'; put ',msg=%superq(errmsg)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_validations_postedit; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Post Edit Hook script for the MPE_VALIDATIONS table'; put '@details Post edit hooks provide additional backend validation for user'; put 'provided data. The incoming dataset is named `work.staging_ds` and is'; put 'provided in mpe_loader.sas.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put 'This validation checks the incoming mpe_validations settings to ensure'; put 'there are no columns that have both HARDSELECT_HOOK and SOFTSELECT_HOOK.'; put '

SAS Macros

'; put '@li mf_nobs.sas'; put '

Related Macros

'; put '@li mpe_loader.sas'; put '**/'; put '/** check to avoid a colum having both HARDSELECT_HOOK and SOFTSELECT_HOOK */'; put '/* need to merge with base table in the case of a single row being added */'; put '%global src_list1 src_list2;'; put '%let src_list1='''';'; put 'proc sql noprint;'; put 'create table work.check1 as'; put 'select quote(catx(''.'',base_lib,base_ds,base_col)) as source'; put ',rule_type'; put 'from work.staging_ds'; put 'where rule_type in (''SOFTSELECT_HOOK'',''HARDSELECT_HOOK'')'; put 'and upcase(_____DELETE__THIS__RECORD_____) ne "YES";'; put 'select distinct cats(source) into: src_list1 separated by '','''; put 'from work.check1;'; put 'create table work.check2 as'; put 'select quote(catx(''.'',base_lib,base_ds,base_col)) as source'; put ',rule_type'; put 'from &DC_LIBREF..MPE_VALIDATIONS'; put 'where rule_type in (''SOFTSELECT_HOOK'',''HARDSELECT_HOOK'')'; put 'and &dc_dttmtfmt. lt tx_to'; put 'and catx(''.'',base_lib,base_ds,base_col) in (&src_list1);'; put 'create table work.check3 as'; put 'select * from work.check1'; put 'union'; put 'select * from work.check2;'; put 'create table work.validation_checker as'; put 'select source'; put ',count(*) as cnt'; put 'from work.check3'; put 'group by 1'; put 'having cnt>1;'; put 'select distinct source into: src_list2 from work.validation_checker;'; put 'data _null_;'; put 'set work.validation_checker;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (%mf_nobs(work.validation_checker)>0)'; put ',mac=mpe_validations_postedit'; put ',msg=%str(The following vars have duplicate HOOKS: &src_list2)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/lineage; %let service=fetchcollineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro meta_mapper('; put 'baseds=work.allmap /* base table to contain metamapping (two level) */'; put ', stageds=col_meta /* temp table to append to base*/'; put ', metaid=OMSOBJ:Column\A5HOSDWY.BF00LWQT'; put ', direction=REVERSE /* either REVERSE or FORWARDS */'; put ', level=0 /* system var - show level of nesting */'; put ', job= /* system var - avoid looping same source */'; put ', levelcheck=50 /* system var - avoid going too deep down the rabbit hole */'; put ', append=NO /* system var - when YES means appending within nested loop */'; put ');'; put '%if &level>&levelcheck %then %return;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%if &direction=REVERSE %then %do;'; put '%let start=Target;'; put '%let finish=Source;'; put '%end;'; put '%else %do;'; put '%let start=Source;'; put '%let finish=Target;'; put '%end;'; put '%if &append=NO %then %do;'; put 'proc datasets lib=work;'; put 'delete %scan(&baseds,2,.);'; put 'quit;'; put '%let index_statement=(index=(HASH/unique));'; put '%end;'; put '%else %let index_statement=;'; put 'data &stageds &index_statement ;'; put 'length HASH $32'; put 'jobname sourcetablename sourcecolname sourcecoluri'; put 'map_type map_transform targettablename targetcolname targetcoluri'; put 'uri targettableuri tfmuri sourcetableuri scuri tpuri tmpuri mturi $256'; put 'Derived_Rule $500 Marker_ID Name_ID N_Name LibRef engine sourcePublicType'; put 'targetPublicType $64;'; put 'keep HASH jobname sourcetablename sourcecolname sourcecoluri'; put 'map_type map_transform'; put 'targettablename targetcolname targetcoluri Derived_Rule level;'; put '/* proc transpose logic only */'; put 'length sourceshorttablename sourcemembertype sourcelocation'; put 'assoc assocuri name sturi foundrefuri foundfinishuri'; put 'targetshorttablename targetlocation targetmembertype trafoName $256'; put 'sourceshorttableuri sourceshortcoluri checkrdm targetshorttableuri'; put 'targetshortcoluri selected_direction $17'; put 'lturi _location $200;'; put 'call missing (of _all_);'; put '&start.coluri="&METAID";'; put 'level=&level;'; put '/* first get table associated with the column */'; put 'if metadata_getnasn(&start.coluri,''Table'',1,&start.tableuri)=0 then do;'; put 'putlog "ERR" "OR: Table not found";'; put 'stop;'; put 'end;'; put 'rc=metadata_getattr(&start.tableuri,"Name",&start.tablename);'; put 'rc=metadata_getattr(&start.coluri,"Name",&start.colname);'; put 'rc=metadata_getattr(&start.tableuri,''PublicType'',&start.PublicType);'; put 'if (metadata_getnasn(&start.tableuri, "TablePackage",1, tpuri)>0) then'; put 'do;'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&start.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&start.tablename'; put ');'; put 'end;'; put 'else if (&start.PublicType="ExternalFile") then do;'; put 'rc=metadata_getnasn(&start.tableuri, "OwningFile",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefs",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefLocations",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,''FileName'',&start.tablename);'; put 'end;'; put 'else &start.tablename = ''work. ''||trim(lowcase(&start.tablename));'; put '/* now loop the Source / TargetFeatureMaps */'; put 'tfm=1;'; put 'do while(metadata_getnasn(&start.coluri,"&start.FeatureMaps",tfm,tfmuri)>0);'; put 'call missing(derived_rule);'; put 'rc=metadata_getattr(tfmuri,''TransformRole'',map_type);'; put '/* get job and step name */'; put 'if (metadata_getnasn(tfmuri,''AssociatedClassifierMap'',1,tmpuri)<1) then'; put 'do;'; put 'rc=metadata_getnasn(tfmuri,"&finish.Transformations",1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''AssociatedClassifierMap'',1,tmpuri);'; put 'end ;'; put 'rc=metadata_getnasn(tmpuri,''Steps'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',map_transform);'; put 'rc=metadata_getnasn(tmpuri,''Activities'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Jobs'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',jobname);'; put 'if Map_Type = ''DERIVED'' then do;'; put 'if(metadata_getnasn(tfmuri,"SourceCode",1, scuri)>0) then do;'; put '/* standard */'; put 'mturi=tfmuri;'; put 'end;'; put 'else do;'; put '/* some SQL joins store transform rules elsewhere */'; put 'rc=metadata_getnasn(tfmuri,"Feature&start.s",1, tmpuri);'; put 'if (metadata_getnasn(tmpuri,"Variables",1, tmpuri)>0)'; put 'then rc=metadata_getnasn(tmpuri,"OwningTransformation",1, mturi);'; put 'else rc=metadata_getnasn(tfmuri,"Transformation&start.s",1, mturi);'; put 'rc=metadata_getnasn(mturi,"SourceCode",1, scuri);'; put 'end;'; put 'rc=metadata_getattr(scuri,"StoredText",Derived_Rule);'; put 'Derived_Rule = compress(Derived_Rule,''0A''x);'; put '/* loop to generate derived rule (swap ref numbers for col descs) */'; put 'sv=1;'; put 'do while(metadata_getnasn(mturi,"SubstitutionVariables",sv,tmpuri)>0);'; put 'rc=metadata_getattr(tmpuri,"Marker",Marker_ID);'; put 'rc=metadata_getattr(tmpuri,"Name",Name_ID);'; put 'N_Name = compress(scan(Name_ID,2,''-''));'; put 'Derived_Rule=tranwrd('; put 'Derived_Rule,compress(Marker_ID),compress(N_Name)'; put ');'; put 'sv+1;'; put 'end;'; put 'end;'; put '/* get source col attributes */'; put 'fs=1;'; put 'do while(metadata_getnasn(tfmuri,"Feature&finish.s",fs,&finish.coluri)>0);'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put 'rc=metadata_getattr(&finish.tableuri,''PublicType'',&finish.PublicType);'; put 'if (metadata_getnasn(&finish.tableuri,"TablePackage",1,tpuri)>0) then'; put 'do;'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put 'else if (&finish.PublicType="ExternalFile") then do;'; put 'rc=metadata_getnasn(&finish.tableuri, "OwningFile",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefs",1, tmpuri);'; put 'rc=metadata_getnasn(tmpuri, "FileRefLocations",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,''FileName'',&finish.tablename);'; put 'end;'; put 'else &finish.tablename=compress(''work.''||lowcase(&finish.tablename));'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'fs+1;'; put 'end;'; put 'tfm+1;'; put 'end;'; put '/* No finish URI found - so proceed to see if this is due to transpose */'; put 'if missing(&finish.coluri)'; put 'and (metadata_getnasn(&start.tableuri,"&start.ClassifierMaps",1,tmpuri)>0)'; put 'then do;'; put 'length trafoname $256;'; put 'call missing(trafoName);'; put 'rc=metadata_getattr(tmpuri,''Name'',trafoName);'; put '/* get &finsh.tablename and jobname */'; put 'rc=metadata_getnasn(tmpuri,"Classifier&finish.s",1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'rc=metadata_getnasn(tmpuri,''Steps'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Activities'',1,tmpuri);'; put 'rc=metadata_getnasn(tmpuri,''Jobs'',1,tmpuri);'; put 'rc=metadata_getattr(tmpuri,''Name'',jobname);'; put 'rc1=1;n1=1;'; put 'do while(rc1>0);'; put 'rc1=metadata_getnasl(&finish.tableuri,n1,assoc);'; put 'if (assoc="Columns") then do;'; put 'rc2=1;n2=1;'; put 'do while(rc2>0 and missing(foundfinishuri));'; put '/* Walk through all column associations: SpecSourceTransformations*/'; put 'rc2=metadata_getnasn(&finish.tableuri,trim(assoc),n2,assocuri);'; put '/* REVERSE */'; put '%if ("&direction." = "REVERSE") %then %do;'; put 'if metadata_getnasn(assocuri,"SpecSourceTransformations",1,sturi)>0'; put 'then do;'; put 'rc=metadata_getattr(sturi,"Name",name);'; put '/* SAS Transpose: varColumns */'; put 'if (name ="varColumns") then do;'; put 'foundfinishuri = "true"; /* do a while exit */'; put 'put "scource colname name=" name;'; put 'put "scource colname uri=" assocuri;'; put '&finish.coluri=assocuri;'; put '&finish.shortcoluri=substr('; put '&finish.coluri,find(&finish.coluri, ''\'')+1'; put ');'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'map_type = "ONETOONE";'; put '/* get MemberType */'; put 'rc=metadata_getattr('; put '&finish.tableuri,"MemberType",&finish.membertype'; put ');'; put '&finish.shorttableuri = substr('; put '&finish.tableuri,find(&finish.tableuri, ''\'')+1'; put ');'; put 'rc=metadata_getattr('; put '&finish.shorttableuri,"PublicType",&finish.publictype'; put ');'; put 'if metadata_getnasn('; put '&finish.shorttableuri,"TablePackage",1,tpuri'; put ')>0'; put 'then do;'; put '/* init LibRef to overwrite previous for &start!!! */'; put 'call missing (LibRef);'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.shorttablename=&finish.tablename;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put '/* get SAS Folder location of the table */'; put 'if &finish.publictype eq "Table" then do;'; put 'lturi=&finish.shorttableuri;'; put 'rc=metadata_getnasn(lturi,"Trees",1,lturi);'; put 'rc=metadata_getattr(lturi,"Name",&finish.location);'; put 'tree=1;'; put 'do while (tree>0);'; put 'tree=metadata_getnasn(lturi,"ParentTree",1,lturi);'; put 'if tree > 0 then do;'; put 'rc=metadata_getattr(lturi,"Name",_location);'; put '&finish.location=catx(''/'',_location,&finish.location);'; put 'end;'; put 'end;'; put '&finish.location = ''/''||&finish.location;'; put 'end;'; put 'map_transform = trafoName;'; put 'derived_rule = "Transpose vertical";'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'end; /* (name = "_VALUE_COLUMN") */'; put 'end; /* (metadata_getnasn(assocuri2,"Spec&finish.xxx",1,sturi)>0) */'; put '%end; /* &direction = "REVERSE" */'; put '/* FORWARDS: if TargetFeatureMaps not available: -> target! */'; put '%if ("&direction." = "FORWARDS") %then %do;'; put 'if (metadata_getnasn(assocuri,"TargetFeatureMaps",1,sfuri)<0)'; put 'then do;'; put 'rc=metadata_getattr(assocuri,"Name",name);'; put 'if not missing(assocuri) then do;'; put 'put "target colname name=" name;'; put 'put "target colname uri=" assocuri;'; put '&finish.coluri=assocuri;'; put '&finish.shortcoluri=substr('; put '&finish.coluri,find(&finish.coluri, ''\'')+1'; put ');'; put 'rc=metadata_getattr(&finish.coluri,''Name'',&finish.colname);'; put 'rc=metadata_getnasn(&finish.coluri,''Table'',1,&finish.tableuri);'; put 'rc=metadata_getattr(&finish.tableuri,''Name'',&finish.tablename);'; put '&finish.shorttablename=&finish.tablename;'; put 'map_type = "ONETOMANY";'; put '/* get MemberType */'; put 'rc=metadata_getattr('; put '&finish.tableuri,"MemberType",&finish.membertype'; put ');'; put '&finish.shorttableuri = substr('; put '&finish.tableuri,find(&finish.tableuri, ''\'')+1'; put ');'; put 'rc=metadata_getattr('; put '&finish.shorttableuri,"PublicType",&finish.publictype'; put ');'; put 'if metadata_getnasn('; put '&finish.shorttableuri,"TablePackage",1,tpuri'; put ')>0'; put 'then do;'; put '/* init LibRef to overwrite previous for &start!!! */'; put 'call missing (LibRef);'; put 'rc=metadata_getattr(tpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tpuri,"Engine",engine);'; put 'if missing(libref) then do;'; put 'rc=metadata_getnasn(tpuri, "UsedByPackages",1, tmpuri);'; put 'rc=metadata_getattr(tmpuri,"Libref",LibRef);'; put 'rc=metadata_getattr(tmpuri,"Engine",engine);'; put 'end;'; put '&finish.shorttablename=&finish.tablename;'; put '&finish.tablename=cats('; put 'upcase(LibRef),''-'',upcase(engine),''.'',&finish.tablename'; put ');'; put 'end;'; put '/* get table''s SAS Folder location */'; put 'if &finish.publictype eq "Table" then do;'; put 'lturi=&finish.shorttableuri;'; put 'rc=metadata_getnasn(lturi,"Trees",1,lturi);'; put 'rc=metadata_getattr(lturi,"Name",&finish.location);'; put 'tree=1;'; put 'do while (tree>0);'; put 'tree=metadata_getnasn(lturi,"ParentTree",1,lturi);'; put 'if tree > 0 then do;'; put 'rc=metadata_getattr(lturi,"Name",_location);'; put '&finish.location=catx(''/'',_location,&finish.location);'; put 'end;'; put 'end;'; put '&finish.location = ''/''||&finish.location;'; put 'end;'; put 'map_transform = trafoName;'; put 'derived_rule = "Transpose horizontal";'; put '/* do a lookup to see if this record has been loaded before,'; put 'IF base table exists */'; put 'hash=put(md5('; put 'cats(jobname,sourcecoluri,map_type,map_transform,targetcoluri)'; put '),$hex32.);'; put '%if %sysfunc(exist(&baseds)) %then %do;'; put 'set &baseds(keep=hash) key=hash/unique;'; put 'if _iorc_ ne 0 then do;'; put '/* hash did not exist, hence this is a new record */'; put 'output;'; put '_error_=0;'; put 'end;'; put '%end;'; put '%else %do;'; put 'output;'; put '%end;'; put 'end;'; put 'end;'; put '%end; /* (&direction = "FORWARDS" */'; put 'call missing(assocuri);'; put 'n2+1;'; put 'end; /* while(rc1>0) */'; put 'end; /* (assoc="Columns") */'; put 'call missing(assoc);'; put 'n1+1;'; put 'end; /* while(rc1>0) */'; put 'end; /* missing(&finish.coluri) */'; put '/* ################# end mapping for Transpose flat ################# */'; put 'stop;'; put 'run;'; put 'proc append base=&baseds data=&stageds;'; put 'run;'; put 'data _null_;'; put 'set &stageds;'; put 'call execute(''%meta_mapper(metaid=''!!&finish.coluri'; put '!!",baseds=&baseds"'; put '!!",direction=&direction"'; put '!!",level=%eval(&level+1)"'; put '!!",levelcheck=&levelcheck"'; put '!!",job="!!jobname'; put '!!",append=YES)");'; put 'run;'; put '%mend meta_mapper;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch the metadata and server as dotlang'; put 'Some nice ideas for formatting are available here:'; put 'https://renenyffenegger.ch/notes/tools/Graphviz/examples/index'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li bitemporal_dataloader.sas'; put '@li meta_mapper.sas'; put '@version 9.4'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global column_id direction refresh;'; put '/* enable col id and direction to be passed as url params */'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%let max_depth=50;'; put '%put &=inds;'; put 'data _null_;'; put 'length max_depth $ 8;'; put 'set &inds;'; put 'call symputx(''column_id'',coluri);'; put 'call symputx(''direction'',direction);'; put 'call symputx(''refresh'',refresh);'; put 'if input(max_depth,8.)>0 then call symputx(''max_depth'',max_depth);'; put 'putlog (_all_)(=);'; put 'run;'; put '%put &=max_depth &=refresh;'; put 'data info;'; put 'length coluri colname taburi tabname liburi libref $256;'; put 'call missing(of _all_);'; put 'if metadata_getattr("&column_id","Name",colname)<0 then do;'; put 'putlog "Col &column_id not found";'; put 'call symputx(''syscc'',''1234'');'; put 'stop;'; put 'end;'; put 'rc=metadata_getnasn("&column_id","Table",1,taburi);'; put 'rc=metadata_getattr(taburi,"Name",tabname);'; put 'rc=metadata_getnasn(taburi,"TablePackage",1,liburi);'; put 'rc=metadata_getattr(liburi,"Libref",libref);'; put 'call symputx(''lib'',libref);'; put 'call symputx(''tab'',tabname);'; put 'call symputx(''col'',colname);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro launcher();'; put '/* check whether a lineage run already taken place */'; put 'proc sql noprint;'; put 'create table existing_data as'; put 'select * from &mpelib..mpe_lineage_cols'; put 'where col_id="&column_id"'; put 'and direction="%substr(&direction,1,1)";'; put '/* no data, so make some, and append it */'; put '%if &sqlobs=0 or &refresh=1 %then %do;'; put '%meta_mapper(metaid=&column_id'; put ', direction=&direction /* either REVERSE or FORWARDS */'; put ', baseds=work.allmap'; put ', levelcheck=%eval(&max_depth-1)'; put ')'; put 'data append;'; put 'length col_id $32 direction $1 modified_by $64;'; put 'retain col_id "&column_id";'; put 'retain direction "%substr(&direction,1,1)";'; put '%global modified_by modified_dttm;'; put '%let modified_dttm=%sysfunc(datetime());'; put 'retain modified_dttm &modified_dttm;'; put 'retain modified_by "%mf_getuser()";'; put '%let modified_by=%mf_getuser();'; put 'set allmap;'; put 'drop hash;'; put 'run;'; put 'proc sort data=append out=appendme nodupkey;'; put 'by col_id direction sourcecoluri targetcoluri map_type map_transform;'; put 'run;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_lineage_cols'; put ',append_dsn=appendme'; put ',PK=col_id direction sourcecoluri targetcoluri map_type map_transform'; put ',etlsource=&_program'; put ',loadtype=UPDATE'; put ',close_vars=col_id direction'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%else %do;'; put '/* data exists, so use it */'; put 'data work.allmap(drop=modified_by modified_dttm);'; put 'set existing_data(drop=col_id direction );'; put 'if _n_=1 then do;'; put 'call symputx(''modified_by'',modified_by,''g'');'; put 'call symputx(''modified_dttm'',modified_dttm,''g'');'; put 'end;'; put 'where level < &max_depth;'; put 'run;'; put '%end;'; put '%mend launcher;'; put '%launcher()'; put '/* generate graphviz */'; put 'filename tmp "%sysfunc(pathname(work))\GraphViz%sysfunc(datetime()).txt"'; put 'lrecl=10000 encoding=''utf-8'';'; put 'options noquotelenmax;'; put '%macro fcmpconditional();'; put '%if &sysver=9.3 and &sysscp=WIN %then %do;'; put '/* nothing - as the FCMP function causes an exception err in this case */'; put '%end;'; put '%else %do;'; put '/* prepare quick func to enable word wrapping of transformations */'; put 'options cmplib=work.funcs;'; put 'proc fcmp outlib=work.funcs.macrocore;'; put 'function wordwrap(str $,cols,splitchar $) $;'; put 'length outstr $32767 curstr $5000;'; put 'base=0;'; put 'put str=;'; put 'do i=1 to countw(str,'' '','' '');'; put 'curstr=scan(str,i,'' '');'; put 'outstr=trim(outstr)!!'' ''!!curstr;'; put 'base=base+length(curstr)+1;'; put 'if base>cols then do;'; put 'outstr=cats(outstr,splitchar);'; put 'base=0;'; put 'end;'; put 'end;'; put 'return (outstr);'; put 'endsub;'; put 'run;'; put '%end;'; put '%mend fcmpconditional;'; put '%fcmpconditional()'; put '/* prepare label with metadata */'; put 'proc sql;'; put 'create table jobs as select distinct jobname as job from work.allmap ;'; put 'create table cols as select distinct upcase(scan(cat,1,''.-'')) as tmplib'; put ',cats(calculated tmplib,''.'',upcase(scan(cat,2,''.''))) as tmptab'; put ',cats(calculated tmptab,''.'',upcase(col)) as col'; put 'from (select sourcetablename as cat, sourcecolname as col from work.allmap'; put 'union select targettablename as cat, targetcolname as col from work.allmap )'; put 'having findc(tmplib,''/\'')=0 and tmplib ne ''WORK'';'; put 'create table files as select distinct file'; put 'from (select sourcetablename as file from work.allmap'; put 'where findc(sourcetablename,''/\'')>0'; put 'union select targettablename as file from work.allmap'; put 'where findc(targettablename,''/\'')>0'; put ') ;'; put 'create table libs as select distinct tmplib as lib from cols;'; put 'create table tabs as select distinct tmptab as tab from cols;'; put 'data _null_;'; put 'file tmp;'; put 'put ''digraph G {'; put 'concentrate=true;'; put 'node [style=filled,shape=plain];'; put 'labelloc = "t";'; put ''';'; put 'label= "label=<'; put ''; put ''; put ''; put ''; put ''; put ''; put '
&direction Lineage for &col
Library:
&libGenerated by:&modified_by
Table:&tabGenerated on:'; put '%sysfunc(round(&modified_dttm,2),datetime19.)
>";'; put 'put label;'; put 'if "FORWARD"="&direction" then call symputx(''dirdesc'',''Impacted'');'; put 'else call symputx(''dirdesc'',''Source'');'; put '/* close out if there is no lineage */'; put 'if nobs=0 then put ''x [label="No lineage found" shape=Mdiamond]}'';'; put 'set work.allmap nobs=nobs;'; put 'stop;'; put 'run;'; put 'data graphviz1;'; put 'file tmp mod;'; put 'length line arrow $1000 stab ttab slib tlib $100 sbox tbox tooltip $500;'; put 'if _n_=1 then call missing(line, sbox, tbox, tooltip);'; put 'set work.allmap ;'; put 'sourceid=sourcecoluri;'; put 'targetid=targetcoluri;'; put 'if index(sourcetablename,'':'') then do;'; put 'slib='''';'; put 'stab=sourcetablename;'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'stab=scan(sourcetablename,-1,''/\'');'; put 'slib=subpad(sourcetablename,1,length(sourcetablename)-length(stab));'; put 'end;'; put 'else do;'; put 'slib=scan(sourcetablename,1,''.'');'; put 'stab=scan(sourcetablename,2,''.'');'; put 'end;'; put 'if index(targettablename,'':'') then do;'; put 'tlib='''';'; put 'ttab=targettablename;'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'ttab=scan(targettablename,-1,''/\'');'; put 'tlib=subpad(targettablename,1,length(targettablename)-length(ttab));'; put 'end;'; put 'else do;'; put 'tlib=scan(targettablename,1,''.'');'; put 'ttab=scan(targettablename,2,''.'');'; put 'end;'; put 'if trim(derived_rule) ne '''' then do;'; put 'derived_rule=tranwrd(derived_rule,''"'',''\"'');'; put '%macro quick();'; put '%if "&sysver"="9.3" and "&sysscp"="WIN" %then %do;'; put 'arrow=cats(''[color=Red, fontcolor=Red, penwidth="3", arrowsize="2",'''; put ',''label=">>'',map_transform,''<<\n'',derived_rule,''"]'');'; put '%end;'; put '%else %do;'; put 'arrow=cats(''[color=Red, fontcolor=Red, penwidth="3", arrowsize="2",'''; put ',''label=">>'',map_transform,''<<\n'',wordwrap(derived_rule,24,''\n''),''"]'');'; put '%end;'; put '%mend quick; %quick()'; put 'end;'; put 'else arrow=cats(''[ label="'',map_transform,''"]'');'; put 'source=quote(strip(sourceid));'; put 'target=quote(strip(targetid));'; put 'put '' '' source '' -> '' target arrow;'; put 'run;'; put 'data graphviz2 (keep=id tab lib col tooltip map_transform);'; put 'set graphviz1 (rename=(source=id stab=tab slib=lib sourcecolname=col ))'; put 'graphviz1 (rename=(target=id ttab=tab tlib=lib targetcolname=col ));'; put 'if upcase(lib)=:''WORK'' then tooltip=cats('',tooltip="Job:'',jobname,''"'');'; put 'else tooltip='''';'; put 'run;'; put 'proc sort data=graphviz2 out=graphviz3 noduprec; by _all_; run;'; put 'data _null_;'; put 'length shape $100 ;'; put 'set graphviz3 end=last;'; put 'file tmp mod;'; put 'tab=tranwrd(tab,''\'',''\\'');'; put 'tab=tranwrd(tab,''&'',''&'');'; put 'lib=tranwrd(lib,''&'',''&'');'; put 'if upcase(lib)=:''WORK'' then do;'; put 'lib=''WORK'';'; put 'put id ''[label=<
Table'' tab'; put '''
Column'' col'; put '''
> ,fillcolor=lightgrey, shape=" " '' tooltip '']'';'; put 'end;'; put 'else if map_transform=''File Reader'' then do;'; put 'put id ''[label="Location: '' lib ''\nFile:'' tab ''\nColumn: '' col'; put '''",shape=parallelogram, fillcolor="#00b300"'' tooltip '']'';'; put 'end;'; put 'else do;'; put 'engine=scan(lib,2,''-'');'; put 'lib=scan(lib,1,''-'');'; put 'if engine=''BASE'' then fillcolour=''lightyellow '';'; put 'else fillcolour=''lightblue'';'; put 'shape='' shape=cylinder, fillcolor= ''!!fillcolour;'; put 'put id ''[label=<
Library'' lib'; put '''
Table'' tab'; put '''
Column'' col'; put '''
> ,'' shape tooltip '']'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file tmp mod;'; put '/* close out if records exist */'; put 'set work.allmap;'; put 'put ''}'';'; put 'stop;'; put 'run;'; put 'data flatdata;'; put 'length type $8 item $256;'; put 'keep type item;'; put 'set cols(in=cols) tabs(in=tabs) files(in=files) libs(in=libs) jobs(in=jobs);'; put 'if cols then do;'; put 'type=''Column'';'; put 'item=col;'; put 'end;'; put 'else if tabs then do;'; put 'type=''Table'';'; put 'item=tab;'; put 'end;'; put 'else if files then do;'; put 'type=''File'';'; put 'item=file;'; put 'end;'; put 'else if libs then do;'; put 'type=''Library'';'; put 'item=lib;'; put 'end;'; put 'else if jobs then do;'; put 'type=''Job'';'; put 'item=job;'; put 'end;'; put 'run;'; put 'data fromSAS;'; put 'infile tmp end=last;'; put 'file tmp;'; put 'input ;'; put 'string=_infile_;'; put 'put string;'; put 'run;'; put 'filename tmp clear;'; put '/* get list of IDs so frontend can make a clickable list */'; put 'proc sql;'; put 'create table ids as select distinct id from graphviz3;'; put '%webout(OPEN)'; put '%webout(OBJ,fromSAS)'; put '%webout(OBJ,ids,dslabel=clickableIDS)'; put '%webout(OBJ,info)'; put '%webout(OBJ,flatdata)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=fetchtablelineage; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch Table Lineage for SAS 9'; put 'Some nice ideas for formatting are available here:'; put 'https://renenyffenegger.ch/notes/tools/Graphviz/examples/index'; put '

SAS Macros

'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global table_id direction graphOrientation;'; put '/* enable table id and direction to be passed as url params */'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put '%let max_depth=50;'; put 'data _null_;'; put 'length max_depth $ 8;'; put 'set &inds;'; put 'call symputx(''table_id'',table_id);'; put 'call symputx(''direction'',direction);'; put 'call symputx(''graphOrientation'',''LR'');'; put 'if max_depth>''0'' then call symputx(''max_depth'',max_depth);'; put 'putlog (_all_)(=);'; put 'run;'; put '%put &=max_depth;'; put '%mp_abort(iftrue= (&table_id=undefined)'; put ',mac=&_program'; put ',msg=%str(Table_id UNDEFINED provided from frontend)'; put ')'; put 'data work.info;'; put 'length tableid tablename liburi $64 libref $8;'; put 'drop rc;'; put 'tableid="&table_id";'; put 'call missing(liburi);'; put 'rc=metadata_getattr(tableid,"Name",tablename);'; put 'if metadata_getnasn(tableid,"TablePackage",1,liburi)>0 then do;'; put 'rc=metadata_getattr(liburi,"Libref",libref);'; put 'libref=upcase(libref);'; put 'end;'; put 'tablename=upcase(tablename);'; put 'if missing(libref) then libref=''nolib'';'; put 'call symputx(''libds'',cats(libref,''.'',tablename));'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%let src=%sysfunc(ifc(&direction=REVERSE,src,tgt));'; put '%let tgt=%sysfunc(ifc(&direction=REVERSE,tgt,src));'; put 'data work.sourcetable/view=work.sourcetable;'; put 'set &mpelib..MPE_LINEAGE_TABS;'; put 'where &dc_dttmtfmt. lt tx_to ;'; put 'drop tx_from tx_to;'; put 'run;'; put '%macro recursivejoin(iter=0'; put ',maxiter=&max_depth /* avoid infinite loop */'; put ');'; put '%if &iter=0 %then %do;'; put 'data work.baseds ;'; put 'retain level 0;'; put 'set work.sourcetable;'; put 'where &tgt.tableid="&table_id";'; put 'run;'; put '%let iter=1;'; put 'proc sql;'; put '%end;'; put '%else %if &iter>&maxiter %then %return;'; put 'create table work.appendds as'; put 'select distinct &iter as level'; put ',b.*'; put 'from work.baseds a'; put 'left join work.sourcetable b'; put 'on a.&src.tableid=b.&tgt.tableid'; put 'where a.level=%eval(&iter.-1)'; put 'and b.&src.tableid is not null'; put 'and a.&src.tableid is not null'; put 'and a.&src.tableid ne ''N/A'';'; put '%let obs=&sqlobs;'; put 'insert into work.baseds select * from work.appendds;'; put '%if &obs %then %do;'; put '%recursivejoin(iter=%eval(&iter.+1) )'; put '%end;'; put '%mend recursivejoin;'; put '%recursivejoin()'; put 'proc sql;'; put 'create table work.final as'; put 'select distinct *'; put 'from work.baseds(drop=level)'; put 'where jobid is not null;'; put '/* generate graphviz */'; put 'filename tmp "%sysfunc(pathname(work))\GraphViz%sysfunc(datetime()).txt"'; put 'lrecl=10000 encoding=''utf-8'';'; put '/* prepare label with metadata */'; put 'proc sql;'; put 'create table work.jobs as'; put 'select distinct jobid'; put ', jobname'; put ',quote(cats(jobid))||'' [label=''||quote(cats(jobname))||''];'' as line'; put 'from work.final;'; put 'create table work.tables as'; put 'select distinct &src.tableid as tableid'; put ',&src.tablename as tablename'; put ',&src.libref as libref'; put 'from work.final'; put 'where &src.tableid ne ''N/A'''; put 'union select'; put '&tgt.tableid as tableid'; put ',&tgt.tablename as tablename'; put ',&tgt.libref as libref'; put 'from work.final'; put 'where &tgt.tableid ne ''N/A'''; put 'order by libref, tablename;'; put 'create table idlookup as'; put 'select tableid as metaid'; put ',''TABLE'' as metatype'; put ',cats(libref,''.'',tablename) as metaname'; put 'from work.tables'; put 'union'; put 'select jobid as metaid'; put ',''JOB'' as metatype'; put ',jobname as metaname'; put 'from work.jobs'; put 'order by metaid;'; put 'data CRAYONS;'; put 'length attribute value $8;'; put 'infile datalines4 dsd;'; put 'input attribute value;'; put 'call symput(cats(''col'',_n_),quote(trim(value)));'; put 'datalines;'; put 'red,#e6194b'; put 'green,#3cb44b'; put 'blue,#4363d8'; put 'orange,#f58231'; put 'purple,#911eb4'; put 'cyan,#46f0f0'; put 'magenta,#f032e6'; put 'lime,#bcf60c'; put 'pink,#fabebe'; put 'teal,#008080'; put 'lavender,#e6beff'; put 'brown,#9a6324'; put 'beige,#fffac8'; put 'maroon,#800000'; put 'mint,#aaffc3'; put 'olive,#808000'; put 'apricot,#ffd8b1'; put 'navy,#000075'; put 'gray,#808080'; put 'black,#00000'; put 'yellow,#ffe119'; put 'white,#ffffff'; put ';;;;'; put 'run;'; put 'proc sort data=work.tables out=work.libs nodupkey;'; put 'by libref;'; put 'run;'; put 'data work.alllibs;'; put 'set work.libs end=last;'; put 'length line $1000. ;'; put 'crayon=symget(cats(''col'',_n_));'; put 'call symputx(libref,crayon);'; put 'if _n_=1 then do;'; put 'line=''subgraph cluster_libs { label="Libraries";'';output;'; put 'end;'; put 'line=cats(libref)!!'' [label=''||quote(cats(libref))||''; style="filled"; color='''; put '||cats(crayon)||'', shape = Mrecord, fontcolor=white]'';output;'; put 'if last then do;'; put 'line=''}'';output;'; put 'end;'; put 'run;'; put 'data alltables;'; put 'length line $1000. ;'; put 'set work.tables;'; put 'crayon=symget(libref);'; put 'line=quote(cats(tableid))||'' [label="''||cats(tablename)'; put '!!''", color=''!!cats(crayon)'; put '!!'', shape=cylinder,style=filled,fontcolor=white];'';'; put 'output;'; put 'run;'; put 'proc sort'; put 'data=final(keep=&src.tableid jobid &src.libref) out=&src.relations nodupkey;'; put 'by &src.tableid jobid;'; put 'proc sort'; put 'data=final(keep=&tgt.tableid jobid &tgt.libref) out=&tgt.relations nodupkey;'; put 'by jobid &tgt.tableid;'; put 'run;'; put 'data srcrelations;'; put 'set srcrelations;'; put 'length line $1000;'; put 'where srctableid ne ''N/A'';'; put 'line=cats('; put '''"'',cats(srctableid),''" -> "'',jobid,''" [color='',symget(srclibref),''];'''; put ');'; put 'data tgtrelations;'; put 'set tgtrelations;'; put 'where tgttableid ne ''N/A'';'; put 'length line $1000;'; put 'line=cats('; put '''"'',cats(jobid),''" -> "'',tgttableid,''" [color='',symget(tgtlibref),''];'''; put ');'; put 'run;'; put 'data finalfinal;'; put 'set work.alllibs(keep=line) work.alltables (keep=line) work.jobs(keep=line)'; put 'work.&src.relations(keep=line) work.&tgt.relations(keep=line) end=last;'; put 'if _N_ = 1 then do;'; put 'firstline=line;'; put 'line=''strict digraph "''!!"&libds"!!''" {''; output;'; put 'line="rankdir=&graphOrientation; nodesep=0.5; node [shape = octagon];";output;'; put 'line=firstline;'; put 'end;'; put 'output;'; put 'if last then do;'; put 'line=''}'';'; put 'output;'; put 'end;'; put 'drop firstline;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,finalfinal)'; put '%webout(OBJ,info)'; put '%webout(OBJ,final,dslabel=flatdata)'; put '%webout(OBJ,idlookup)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getmetacols; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getcols('; put 'tableuri='; put ',outds=work.mm_getcols'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'keep col: SAS:;'; put 'length assoc uri coluri colname coldesc SASColumnType SASFormat SASInformat'; put 'SASPrecision SASColumnLength $256;'; put 'call missing (of _all_);'; put 'uri=symget(''tableuri'');'; put 'n=1;'; put 'do while (metadata_getnasn(uri,''Columns'',n,coluri)>0);'; put 'rc3=metadata_getattr(coluri,"Name",colname);'; put 'rc3=metadata_getattr(coluri,"Desc",coldesc);'; put 'rc4=metadata_getattr(coluri,"SASColumnType",SASColumnType);'; put 'rc5=metadata_getattr(coluri,"SASFormat",SASFormat);'; put 'rc6=metadata_getattr(coluri,"SASInformat",SASInformat);'; put 'rc7=metadata_getattr(coluri,"SASPrecision",SASPrecision);'; put 'rc8=metadata_getattr(coluri,"SASColumnLength",SASColumnLength);'; put 'output;'; put 'call missing(colname,coldesc,SASColumnType,SASFormat,SASInformat'; put ',SASPrecision,SASColumnLength);'; put 'n+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by colname;'; put 'run;'; put '%mend mm_getcols;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getmetacols.sas'; put '@brief List the cols as defined in metadata'; put '@details Provide a table uri and get list of columns'; put '

SAS Macros

'; put '@li mm_getcols.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global tableuri;'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''tableuri'',scan(tableuri,-1,''\''));'; put 'run;'; put '%put &=tableuri;'; put '/* load parameters */'; put '%mm_getcols(tableuri=&tableuri,outds=metacols)'; put 'data out;'; put 'set metacols;'; put 'keep col:;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,out,dslabel=metacols)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getmetatables; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettables('; put 'uri='; put ',outds=work.mm_gettables'; put ',getauth=YES'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'length uri serveruri conn_uri domainuri libname ServerContext AuthDomain'; put 'path_schema usingpkguri type tableuri $256 id $17'; put 'libdesc $200 libref engine $8 IsDBMSLibname IsPreassigned $1'; put 'tablename $50 /* metadata table names can be longer than $32 */'; put ';'; put 'keep libname libdesc libref engine ServerContext path_schema AuthDomain'; put 'tableuri tablename IsPreassigned IsDBMSLibname id;'; put 'call missing (of _all_);'; put 'uri=symget(''uri'');'; put 'rc= metadata_getattr(uri, "Name", libname);'; put 'if rc <0 then do;'; put 'put ''The library is not defined in this metadata repository.'';'; put 'stop;'; put 'end;'; put 'rc= metadata_getattr(uri, "Desc", libdesc);'; put 'rc= metadata_getattr(uri, "Libref", libref);'; put 'rc= metadata_getattr(uri, "Engine", engine);'; put 'rc= metadata_getattr(uri, "IsDBMSLibname", IsDBMSLibname);'; put 'rc= metadata_getattr(uri, "IsPreassigned", IsPreassigned);'; put 'rc= metadata_getattr(uri, "Id", Id);'; put '/*** Get associated ServerContext ***/'; put 'rc= metadata_getnasn(uri, "DeployedComponents", 1, serveruri);'; put 'if rc > 0 then rc2= metadata_getattr(serveruri, "Name", ServerContext);'; put 'else ServerContext='''';'; put '/*** If the library is a DBMS library, get the Authentication Domain'; put 'associated with the DBMS connection credentials ***/'; put 'if IsDBMSLibname="1" and "&getauth"=''YES'' then do;'; put 'rc= metadata_getnasn(uri, "LibraryConnection", 1, conn_uri);'; put 'if rc>0 then do;'; put 'rc2= metadata_getnasn(conn_uri, "Domain", 1, domainuri);'; put 'if rc2>0 then rc3= metadata_getattr(domainuri, "Name", AuthDomain);'; put 'end;'; put 'end;'; put '/*** Get the path/database schema for this library ***/'; put 'rc=metadata_getnasn(uri, "UsingPackages", 1, usingpkguri);'; put 'if rc>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put 'if type=''Directory'' then'; put 'rc=metadata_getattr(usingpkguri, "DirectoryName", path_schema);'; put 'else if type=''DatabaseSchema'' then'; put 'rc=metadata_getattr(usingpkguri, "Name", path_schema);'; put 'else path_schema="unknown";'; put 'end;'; put '/*** Get the tables associated with this library ***/'; put '/*** If DBMS, tables are associated with DatabaseSchema ***/'; put 'if type=''DatabaseSchema'' then do;'; put 't=1;'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'else if type in (''Directory'',''SASLibrary'') then do;'; put 't=1;'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by tablename tableuri;'; put 'run;'; put '%mend mm_gettables;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getmetatables.sas'; put '@brief List the tables as defined in metadata'; put '@details Provide a library uri and get list of tables'; put '

SAS Macros

'; put '@li mm_gettables.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global liburi;'; put '%let exist=%sysfunc(exist(work.SASControlTable));'; put '%let inds=%sysfunc(ifc(&exist=1,SASControlTable,_null_));'; put '%put &=inds;'; put 'data _null_;'; put 'set &inds;'; put 'call symputx(''liburi'',liburi);'; put 'run;'; put '/* load parameters */'; put '%mm_gettables(uri=&liburi,outds=metatables,getauth=NO)'; put 'data out;'; put 'set metatables;'; put 'keep table:;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,metatables)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/metanav; %let service=metadetails; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getdetails(uri'; put ',outattrs=work.attributes'; put ',outassocs=work.associations'; put ')/*/STORE SOURCE*/;'; put 'data &outassocs;'; put 'keep assoc assocuri name;'; put 'length assoc assocuri name $256;'; put 'call missing(of _all_);'; put 'rc1=1;n1=1;'; put 'do while(rc1>0);'; put '/* Walk through all possible associations of this object. */'; put 'rc1=metadata_getnasl("&uri",n1,assoc);'; put 'rc2=1;n2=1;'; put 'do while(rc2>0);'; put '/* Walk through all the associations on this machine object. */'; put 'rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);'; put 'if (rc2>0) then do;'; put 'rc3=metadata_getattr(assocuri,"Name",name);'; put 'output;'; put 'end;'; put 'call missing(name,assocuri);'; put 'n2+1;'; put 'end;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by assoc name;'; put 'run;'; put 'data &outattrs;'; put 'keep type name value;'; put 'length type $4 name $256 value $32767;'; put 'rc1=1;n1=1;type=''Prop'';name='''';value='''';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnprp("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'rc1=1;n1=1;type=''Attr'';'; put 'do while(rc1>0);'; put 'rc1=metadata_getnatr("&uri",n1,name,value);'; put 'if rc1>0 then output;'; put 'n1+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by type name;'; put 'run;'; put '%mend mm_getdetails;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metadetails.sas'; put '@brief Retrieves metadata attributes and associations for a particular object'; put '@details'; put '

SAS Macros

'; put '@li mm_getdetails.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put '%mm_getdetails(&objecturi'; put ',outattrs=work.attributes'; put ',outassocs=work.associations'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,attributes)'; put '%webout(OBJ,associations)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metaobjects; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_getobjects('; put 'type=SASLibrary'; put ',outds=work.mm_getobjects'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"$METAREPOSITORY'; put '&typeSAS'; put '0"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Id";'; put 'put "characterstring200";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/&type/@Name";'; put 'put "characterstring200";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getobjects;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metaobjects.sas'; put '@brief Retrieves list of objects for a particular metadata type'; put '@details'; put '

SAS Macros

'; put '@li mm_getobjects.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put 'options metarepository=&repo;'; put '%mm_getobjects('; put 'type=&metatype'; put ',outds=work.objects'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,objects)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metarepos; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metarepos.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

'; put '@li mm_getrepos.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mm_getrepos(outds=work.repos)'; put 'data outrepos;'; put 'set repos;'; put 'if repositorytype in (''CUSTOM'',''FOUNDATION'');'; put 'keep id name description;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,outrepos)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=metatypes; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_gettypes('; put 'outds=work.mm_gettypes'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put ''; put 'SAS'; put ''; put '2048'; put ''; put ''; put '$METAREPOSITORY'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put ''//GetTypes/Types/Type'';'; put 'put ''64'';'; put 'put ''//GetTypes/Types/Type/@Id'';'; put 'put ''256'';'; put 'put ''//GetTypes/Types/Type/@Desc'';'; put 'put '''';'; put 'put ''//GetTypes/Types/Type/@HasSubtypes'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.sastypes out=&outds;'; put 'by id;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_gettypes;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file metatypes.sas'; put '@brief Retrieves list of metadata types'; put '@details'; put '

SAS Macros

'; put '@li mm_gettypes.sas'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mm_gettypes(outds=work.types)'; put '%webout(OPEN)'; put '%webout(OBJ,types)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/public; %let service=getchangeinfo; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getchangeinfo.sas'; put '@brief Returns the details for an approval diff'; put '@details'; put '

SAS Macros

'; put '@li mf_getengine.sas'; put '@li dc_assignlib.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let table=;'; put 'data _null_;'; put 'set SASControlTable;'; put 'call symputx(''table'',table);'; put 'run;'; put '%dc_assignlib(WRITE,%scan(&table,1,.))'; put '%let max_ver_dttm=0;'; put 'data APPROVE1;'; put 'set &mpelib..mpe_submit'; put '(rename=(SUBMITTED_ON_DTTM=submitted_on REVIEWED_ON_DTTM=REVIEWED_ON));'; put 'where TABLE_ID="&TABLE";'; put 'TABLE_NM=cats(base_lib,''.'',base_ds);'; put 'BASE_TABLE=table_nm;'; put 'call symputx(''base_lib'',base_lib);'; put 'REVIEWED_ON_DTTM=put(reviewed_on,datetime19.);'; put 'SUBMITTED_ON_DTTM=put(submitted_on,datetime19.);'; put 'run;'; put 'data jsParams;'; put 'set approve1;'; put 'LIB_ENGINE="%mf_getEngine(&base_lib)";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,jsParams)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getcols; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getcols.sas'; put '@brief Retrieves column info to enable population of dropdowns'; put '@details'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getvalue.sas'; put '@li mp_abort.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let ds=%mf_getvalue(work.iwant,libds);'; put '%dc_assignlib(READ,%scan(&ds,1,.))'; put 'proc contents noprint data=&ds'; put 'out=droplist1 (keep=name type length label varnum format:);'; put 'run;'; put 'data cols(keep=name type length varnum format label);'; put 'set droplist1(rename=(format=format2 type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if format2='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(format2,''.'');'; put 'else format=cats(format2,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if format2='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(format2,''.'');'; put 'else if formatd=0 then format=cats(format2,formatl,''.'');'; put 'else format=cats(format2,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,cols)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getcolvals; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_getVarFormat(libds /* two level ds name */'; put ', var /* variable name from which to return the format */'; put ', force=0'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vformat rc vlen vtype;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable format */'; put '%if(&vnum > 0) %then %let vformat=%sysfunc(varfmt(&dsid, &vnum));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let rc = %sysfunc(close(&dsid));'; put '%return;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* supply a default if no format available */'; put '%if %length(&vformat)<2 & &force=1 %then %do;'; put '%let vlen = %sysfunc(varlen(&dsid, &vnum));'; put '%let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%if &vtype=C %then %let vformat=$&vlen..;'; put '%else %let vformat=best.;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable format */'; put '&vformat'; put '%mend mf_getVarFormat;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Retrieves column info to enable population of dropdowns'; put '@details An optional filterquery may be provided, if so then it is validated'; put 'and then used to filter the subsequent results.'; put '

Service Inputs

'; put '
IWANT
'; put 'The STARTROW and ROWS variables are used to fetch additional values beyond'; put 'the initial default (4000).'; put '|libds:$19.|col:$9.|STARTROW:8.|ROWS:8.|'; put '|---|---|---|---|'; put '|DC258467.MPE_X_TEST|SOME_TIME|4001|1000'; put '
FILTERQUERY
'; put '|GROUP_LOGIC:$3|SUBGROUP_LOGIC:$3|SUBGROUP_ID:8.|VARIABLE_NM:$32|OPERATOR_NM:$10|RAW_VALUE:$32767|'; put '|---|---|---|---|---|---|'; put '|AND|AND|1|SOME_BESTNUM|>|1|'; put '|AND|AND|1|SOME_TIME|=|77333|'; put '

Service Outputs

'; put '
VALS
'; put 'The type of this column actually depends on the underlying column type, so it can change'; put '|FORMATTED|UNFORMATTED|'; put '|---|---|'; put '|$44.00|44|'; put '
META
'; put '|COLUMN:$32.|SASFORMAT:$32.|STARTROW:8.|ROWS:8.|'; put '|---|---|---|---|'; put '|COL_NAME|DOLLAR8.2|4001|1000'; put '

SAS Macros

'; put '@li mf_existds.sas'; put '@li mf_getvalue.sas'; put '@li mf_verifymacvars.sas'; put '@li dc_assignlib.sas'; put '@li mf_getvarformat.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_filtercheck.sas'; put '@li mp_filtergenerate.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd.'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* input table may or may not exist */'; put 'data work.initvars;'; put 'length GROUP_LOGIC $3 SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $32767;'; put 'call missing(of _all_);'; put 'stop;'; put 'data work.filterquery;'; put 'set %sysfunc(ifc('; put '%mf_existds(work.filterquery)=1'; put ',work.filterquery'; put ',work.initvars'; put '));'; put 'run;'; put '/* print data for debugging */'; put 'data _null_;'; put 'set work.iwant;'; put 'put (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set work.filterquery;'; put 'put (_all_)(=);'; put 'run;'; put '%let libds=%mf_getvalue(work.iwant,libds);'; put '%let col2=%mf_getvalue(work.iwant,col);'; put '%let is_fmt=0;'; put '%let startrow=1;'; put '%let rows=4000;'; put '%put &=libds;'; put '%put &=col2;'; put '%mp_abort(iftrue= (%mf_verifymacvars(libds col2)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Missing inputs from iwant. Libds=&libds col=&col2 )'; put ')'; put '%dc_assignlib(WRITE,%scan(&libds,1,.))'; put 'data _null_;'; put 'call missing(startrow,rows);'; put 'set work.iwant;'; put '/* check if the request is for a format catalog */'; put 'call symputx(''orig_libds'',libds);'; put 'is_fmt=0;'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''libds'',''work.fmtextract'');'; put 'is_fmt=1;'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'call symputx(''startrow'',coalesce(startrow,&startrow));'; put 'call symputx(''rows'',coalesce(rows,&rows));'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&orig_libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '/**'; put '* Validate the filter query'; put '*/'; put '%mp_filtercheck(work.filterquery,targetds=&libds,abort=YES)'; put '/**'; put '* Prepare the query'; put '*/'; put '%mp_filtergenerate(work.filterquery,outref=myfilter)'; put '/* cannot %inc in a sql where clause, only data step, so - use a view */'; put 'data work.vw_vals/view=work.vw_vals;'; put 'set &libds;'; put 'where %inc myfilter;;'; put 'run;'; put 'proc sql;'; put 'create view work.vw_vals_sorted as'; put 'select distinct'; put 'put(&col2,%mf_getVarFormat(&libds,&col2,force=1)) as formatted,'; put '&col2 as unformatted'; put 'from work.vw_vals;'; put '/* restrict num of output values */'; put 'data work.vals;'; put 'set work.vw_vals_sorted;'; put 'if _n_ ge &startrow;'; put 'x+1;'; put 'if x>&rows then stop;'; put 'drop x;'; put 'run;'; put 'data vals;'; put '/* ensure empty value if table is empty, for dropdowns */'; put 'if nobs=0 then output;'; put 'set vals nobs=nobs;'; put 'format unformatted ;'; put 'output;'; put 'run;'; put 'proc sql noprint;'; put 'select count(*) into: nobs from work.vw_vals_sorted;'; put 'data meta;'; put 'column="&col2";'; put 'sasformat="%mf_getVarFormat(&libds,&col2)";'; put 'startrow=&startrow;'; put 'rows=&rows;'; put 'nobs=&nobs;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,vals,missing=STRING,showmeta=YES)'; put '%webout(OBJ,meta)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getddl; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_existfileref(fref'; put ')/*/STORE SOURCE*/;'; put '%local rc;'; put '%let rc=%sysfunc(fileref(&fref));'; put '%if &rc=0 %then %do;'; put '1'; put '%end;'; put '%else %if &rc<0 %then %do;'; put '%put &sysmacroname: Fileref &fref exists but the underlying file does not;'; put '1'; put '%end;'; put '%else %do;'; put '0'; put '%end;'; put '%mend mf_existfileref;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getddl(libref,ds,fref=getddl,flavour=SAS,showlog=NO,schema='; put ',applydttm=NO'; put ')/*/STORE SOURCE*/;'; put '/* check fileref is assigned */'; put '%if %mf_existfileref(&fref)=0 %then %do;'; put 'filename &fref temp ;'; put '%end;'; put '%if %length(&libref)=0 %then %let libref=WORK;'; put '%let flavour=%upcase(&flavour);'; put 'proc sql noprint;'; put 'create table _data_ as'; put 'select * from dictionary.tables'; put 'where upcase(libname)="%upcase(&libref)"'; put 'and memtype=''DATA'' /* views not currently supported */'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local tabinfo; %let tabinfo=&syslast;'; put 'create table _data_ as'; put 'select * from dictionary.columns'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put ';'; put '%local colinfo; %let colinfo=&syslast;'; put '%local dsnlist;'; put 'select distinct upcase(memname) into: dsnlist'; put 'separated by '' '''; put 'from &syslast'; put ';'; put 'create table _data_ as'; put 'select * from dictionary.indexes'; put 'where upcase(libname)="%upcase(&libref)"'; put '%if %length(&ds)>0 %then %do;'; put 'and upcase(memname)="%upcase(&ds)"'; put '%end;'; put 'order by idxusage, indxname, indxpos'; put ';'; put '%local idxinfo; %let idxinfo=&syslast;'; put '/* Extract all Primary Key and Unique data constraints */'; put '%mp_getconstraints(lib=%upcase(&libref),ds=%upcase(&ds),outds=_data_)'; put '%local colconst; %let colconst=&syslast;'; put '%macro addConst();'; put '%global constraints_used;'; put 'data _null_;'; put 'length ctype $11 constraint_name_orig $256 constraints_used $5000;'; put 'set &colconst('; put 'where=(table_name="&curds" and constraint_type in (''PRIMARY'',''UNIQUE''))'; put ') end=last;'; put 'file &fref mod;'; put 'by constraint_type constraint_name;'; put 'retain constraints_used;'; put 'constraint_name_orig=constraint_name;'; put 'if upcase(strip(constraint_type)) = ''PRIMARY'' then ctype=''PRIMARY KEY'';'; put 'else ctype=strip(constraint_type);'; put '%if &flavour=TSQL %then %do;'; put 'column_name=catt(''['',column_name,'']'');'; put 'constraint_name=catt(''['',constraint_name,'']'');'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put 'column_name=catt(''"'',column_name,''"'');'; put 'constraint_name=catt(''"'',constraint_name,''"'');'; put '%end;'; put 'if first.constraint_name then do;'; put 'constraints_used = catx('' '', constraints_used, constraint_name_orig);'; put 'put " ,CONSTRAINT " constraint_name ctype "(" ;'; put 'put '' '' column_name;'; put 'end;'; put 'else put '' ,'' column_name;'; put 'if last.constraint_name then do;'; put 'put " )";'; put 'call symput(''constraints_used'',strip(constraints_used));'; put 'end;'; put 'run;'; put '%put &=constraints_used;'; put '%mend addConst;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* DDL generated by &sysuserid on %sysfunc(datetime(),datetime19.) */";'; put 'run;'; put '%local x curds;'; put '%if &flavour=SAS %then %do;'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* SAS Flavour DDL for %upcase(&libref).&curds */";'; put 'put "proc sql;";'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'length lab $1024 typ $20;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table &libref..&curds(";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view &libref..&curds(";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'if length(format)>1 then fmt=" format="!!cats(format);'; put 'if length(label)>1 then'; put 'lab=" label="!!cats("''",tranwrd(label,"''","''''"),"''");'; put 'if notnull=''yes'' then notnul='' not null'';'; put 'if type=''char'' then typ=cats(''char('',length,'')'');'; put 'else if length ne 8 then typ=''num length=''!!cats(length);'; put 'else typ=''num'';'; put 'put name typ fmt notnul lab;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '/* ds=cats(libname,''.'',memname); */'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX '' indxname "ON &libref..&curds (" ;'; put 'put '' '' name ;'; put 'end;'; put 'else put '' ,'' name ;'; put '*else put '' ,'' name ;'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '/*'; put 'ods output IntegrityConstraints=ic;'; put 'proc contents data=testali out2=info;'; put 'run;'; put '*/'; put '%end;'; put '%end;'; put '%else %if &flavour=TSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''SQLSVR'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* TSQL Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "create table [&schema].[&curds](";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "create view [&schema].[&curds](";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt=''[datetime2](7) '';'; put '%end;'; put 'else if type=''num'' then fmt=''[decimal](18,2)'';'; put 'else if length le 8000 then fmt=''[varchar](''!!cats(length)!!'')'';'; put 'else fmt=cats(''[varchar](max)'');'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put 'put "[" name +(-1) "]" fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put '*ds=cats(libname,''.'',memname);'; put 'if first.indxname then do;'; put '/* add nonclustered in case of multiple unique indexes */'; put 'put '' ,index ['' indxname +(-1) ''] UNIQUE NONCLUSTERED ('';'; put 'put '' ['' name +(-1) '']'';'; put 'end;'; put 'else put '' ,['' name +(-1) '']'';'; put 'if last.indxname then do;'; put 'put '' )'';'; put 'end;'; put 'run;'; put 'data _null_;'; put 'file &fref mod;'; put 'put '')'';'; put 'put ''GO'';'; put 'run;'; put '/* add extended properties for labels */'; put 'data _null_;'; put 'file &fref mod;'; put 'length nm $64 lab $1024;'; put 'set &colinfo (where=(upcase(memname)="&curds" and label ne '''')) end=last;'; put 'nm=cats("N''",tranwrd(name,"''","''''"),"''");'; put 'lab=cats("N''",tranwrd(label,"''","''''"),"''");'; put 'put '' '';'; put 'put "EXEC sys.sp_addextendedproperty ";'; put 'put " @name=N''MS_Description'',@value=" lab ;'; put 'put " ,@level0type=N''SCHEMA'',@level0name=N''&schema'' ";'; put 'put " ,@level1type=N''TABLE'',@level1name=N''&curds''";'; put 'put " ,@level2type=N''COLUMN'',@level2name=" nm ;'; put 'if last then put ''GO'';'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &flavour=PGSQL %then %do;'; put '/* if schema does not exist, set to be same as libref */'; put '%local schemaactual;'; put 'proc sql noprint;'; put 'select sysvalue into: schemaactual'; put 'from dictionary.libnames'; put 'where upcase(libname)="&libref" and engine=''POSTGRES'';'; put '%let schema=%sysfunc(coalescec(&schemaactual,&schema,&libref));'; put 'data _null_;'; put 'file &fref mod;'; put 'put "CREATE SCHEMA &schema;";'; put '%do x=1 %to %sysfunc(countw(&dsnlist));'; put '%let curds=%scan(&dsnlist,&x);'; put '%local curdsvarcount;'; put '%let curdsvarcount=%mf_getvarcount(&libref..&curds);'; put '%if &curdsvarcount>1600 %then %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* &libref..&curds contains &curdsvarcount vars */";'; put 'put "/* Postgres cannot create tables with over 1600 vars */";'; put 'put "/* No DDL will be generated for this table";'; put 'run;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'file &fref mod;'; put 'put "/* Postgres Flavour DDL for &schema..&curds */";'; put 'data _null_;'; put 'file &fref mod;'; put 'set &colinfo (where=(upcase(memname)="&curds")) end=last;'; put 'length fmt $32;'; put 'if _n_=1 then do;'; put 'if memtype=''DATA'' then do;'; put 'put "CREATE TABLE &schema..&curds (";'; put 'end;'; put 'else do;'; put '/* just a placeholder - we filter out views at the top */'; put 'put "CREATE VIEW &schema..&curds (";'; put 'end;'; put 'put " "@@;'; put 'end;'; put 'else put " ,"@@;'; put 'format=upcase(format);'; put 'if 1=0 then; /* dummy if */'; put '%if &applydttm=YES %then %do;'; put 'else if format=:''DATETIME'' then fmt='' TIMESTAMP '';'; put '%end;'; put 'else if type=''num'' then fmt='' DOUBLE PRECISION'';'; put 'else fmt=''VARCHAR(''!!cats(length)!!'')'';'; put 'if notnull=''yes'' then notnul='' NOT NULL'';'; put '/* quote column names in case they represent reserved words */'; put 'name2=quote(trim(name));'; put 'put name2 fmt notnul;'; put 'run;'; put '/* Extra step for data constraints */'; put '%addConst()'; put 'data _null_;'; put 'file &fref mod;'; put 'put '');'';'; put 'run;'; put '/* Create Unique Indexes, but only if they were not already defined within'; put 'the Constraints section. */'; put 'data _null_;'; put '*length ds $128;'; put 'set &idxinfo('; put 'where=('; put 'memname="&curds"'; put 'and unique=''yes'''; put 'and indxname not in ('; put '%sysfunc(tranwrd("&constraints_used",%str( ),%str(",")))'; put ')'; put ')'; put ');'; put 'file &fref mod;'; put 'by idxusage indxname;'; put 'if first.indxname then do;'; put 'put ''CREATE UNIQUE INDEX "'' indxname +(-1) ''" '' "ON &schema..&curds(";'; put 'put '' "'' name +(-1) ''"'' ;'; put 'end;'; put 'else put '' ,"'' name +(-1) ''"'';'; put 'if last.indxname then do;'; put 'put '');'';'; put 'end;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%if %upcase(&showlog)=YES %then %do;'; put 'options ps=max;'; put 'data _null_;'; put 'infile &fref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_getddl;'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Download DDL for a table or entire library in a particular flavour.'; put '@details'; put '

SAS Macros

'; put '@li mddl_sas_cntlout.sas'; put '@li dc_assignlib.sas'; put '@li mf_existds.sas'; put '@li mp_abort.sas'; put '@li mp_getddl.sas'; put '@li mp_streamfile.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global libref ds flavour;'; put '%let flavour=%sysfunc(coalescec(&flavour,SAS));'; put '%mpeinit()'; put '%dc_assignlib(READ,&libref)'; put 'data _null_;'; put '/* check if the request is for a format catalog */'; put 'ds=symget(''ds'');'; put 'if subpad(cats(reverse(ds)),1,3)=:''CF-'' then do;'; put 'ds=scan(ds,1,''-'');'; put 'libds=cats(symget(''libref''),''.'',ds);'; put 'putlog "Format Catalog Captured";'; put 'call execute(''%mddl_sas_cntlout(libds=work.fmtextract)'');'; put 'call symputx(''libref'',''work'');'; put 'call symputx(''ds'',''fmtextract'');'; put 'end;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=("exist&ds" ne "exist" and %mf_existds(libds=&libref..&ds)<1)'; put ',mac=&_program'; put ',msg=%str(Dataset &libref..&ds was not found)'; put ')'; put '%let tmploc=%sysfunc(pathname(work))/temp.txt;'; put 'filename tmp "&tmploc";'; put '%mp_getddl(&libref,&ds,flavour=&flavour, fref=tmp, applydttm=YES)'; put '%mp_streamfile(contenttype=TEXT'; put ',inloc=%str(&tmploc)'; put ',outname=&libref._&ds..ddl'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getgroups; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getgroups(outds=mm_getlibs);'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getgroups(outds=&outds,repo=foundation)'; put '%do x=1 %to &repocnt;'; put '%mm_getgroups(outds=&outds.a, repo=&&repo&x)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'proc sort data=&outds noduprec;'; put 'by groupname;'; put 'run;'; put '%mend dc_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file getgroups.sas'; put '@brief List all SAS Groups'; put '@details Gets a list of all SAS Groups. Runs without mpeinit() so that it'; put 'can be available to the sasjs/server configurator'; put '

SAS Macros

'; put '@li dc_getgroups.sas'; put '

Data Outputs

'; put '
groups
'; put '|NAME:$32.|DESCRIPTION:$64.|GROUPID:best.|'; put '|---|---|---|'; put '|`SomeGroup `|`A group `|`1`|'; put '|`Another Group`|`this is a different group`|`2`|'; put '|`admin`|`Administrators `|`3`|'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%dc_getgroups(outds=groups)'; put '%webout(OPEN)'; put '%webout(OBJ,groups)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=getrawdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_ds2cards(base_ds, tgt_ds='; put ',cards_file="%sysfunc(pathname(work))/cardgen.sas"'; put ',maxobs=max'; put ',random_sample=NO'; put ',showlog=YES'; put ',outencoding='; put ',append=NO'; put ')/*/STORE SOURCE*/;'; put '%local i setds nvars;'; put '%if not %sysfunc(exist(&base_ds)) %then %do;'; put '%put %str(WARN)ING: &base_ds does not exist;'; put '%return;'; put '%end;'; put '%if %index(&base_ds,.)=0 %then %let base_ds=WORK.&base_ds;'; put '%if (&tgt_ds = ) %then %let tgt_ds=&base_ds;'; put '%if %index(&tgt_ds,.)=0 %then %let tgt_ds=WORK.%scan(&base_ds,2,.);'; put '%if ("&outencoding" ne "") %then %let outencoding=encoding="&outencoding";'; put '%if ("&append" = "" or "&append" = "NO") %then %let append=;'; put '%else %let append=mod;'; put '/* get varcount */'; put '%let nvars=0;'; put 'proc sql noprint;'; put 'select count(*) into: nvars from dictionary.columns'; put 'where upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)";'; put '%if &nvars=0 %then %do;'; put '%put %str(WARN)ING: Dataset &base_ds has no variables, will not be converted.;'; put '%return;'; put '%end;'; put '/* get indexes */'; put 'proc sort'; put 'data=sashelp.vindex('; put 'where=(upcase(libname)="%scan(%upcase(&base_ds),1)"'; put 'and upcase(memname)="%scan(%upcase(&base_ds),2)")'; put ')'; put 'out=_data_;'; put 'by indxname indxpos;'; put 'run;'; put '%local indexes;'; put 'data _null_;'; put 'set &syslast end=last;'; put 'if _n_=1 then call symputx(''indexes'',''(index=('',''l'');'; put 'by indxname indxpos;'; put 'length vars $32767 nom uni $8;'; put 'retain vars;'; put 'if first.indxname then do;'; put 'idxcnt+1;'; put 'nom='''';'; put 'uni='''';'; put 'vars=name;'; put 'end;'; put 'else vars=catx('' '',vars,name);'; put 'if last.indxname then do;'; put 'if nomiss=''yes'' then nom=''/nomiss'';'; put 'if unique=''yes'' then uni=''/unique'';'; put 'call symputx(''indexes'''; put ',catx('' '',symget(''indexes''),indxname,''=('',vars,'')'',nom,uni)'; put ',''l'');'; put 'end;'; put 'if last then call symputx(''indexes'',cats(symget(''indexes''),''))''),''l'');'; put 'run;'; put 'data;run;'; put '%let setds=&syslast;'; put 'proc sql'; put '%if %datatyp(&maxobs)=NUMERIC %then %do;'; put 'outobs=&maxobs;'; put '%end;'; put ';'; put 'create table &setds as select * from &base_ds'; put '%if &random_sample=YES %then %do;'; put 'order by ranuni(42)'; put '%end;'; put ';'; put 'reset outobs=max;'; put 'create table datalines1 as'; put 'select name,type,length,varnum,format,label from dictionary.columns'; put 'where upcase(libname)="%upcase(%scan(&base_ds,1))"'; put 'and upcase(memname)="%upcase(%scan(&base_ds,2))";'; put '/**'; put 'Due to long decimals cannot use best. format'; put 'So - use bestd. format and then use character functions to strip trailing'; put 'zeros, if NOT an integer or missing!! Cannot use int() as it upsets'; put 'note2err when there are missings.'; put 'resolved code = ifc( mod(coalesce(VARIABLE,0),1)=0'; put ',put(VARIABLE,best32.)'; put ',substrn(put(VARIABLE,bestd32.),1'; put ',findc(put(VARIABLE,bestd32.),''0'',''TBK'')));'; put '**/'; put 'data datalines_2;'; put 'format dataline $32000.;'; put 'set datalines1 (where=(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM'')));'; put 'if type=''num'' then dataline='; put 'cats(''ifc(mod(coalesce('',name,'',0),1)=0'; put ',put('',name,'',best32.-l)'; put ',substrn(put('',name,'',bestd32.-l),1'; put ',findc(put('',name,'',bestd32.-l),"0","TBK")))'');'; put '/**'; put '* binary data must be converted, to store in text format. It is identified'; put '* by the presence of the $HEX keyword in the format.'; put '*/'; put 'else if upcase(format)=:''$HEX'' then'; put 'dataline=cats(''put(trim('',name,''),'',format,'')'');'; put '/**'; put '* There is no easy way to store line breaks in a cards file.'; put '* To discuss this, use: https://github.com/sasjs/core/issues/80'; put '* Removing all nonprintables with kw (keep writeable)'; put '*/'; put 'else dataline=cats(''compress('',name,'', ,"kw")'');'; put 'run;'; put 'proc sql noprint;'; put 'select dataline into: datalines separated by '','' from datalines_2;'; put '%local'; put 'process_dttm_flg'; put 'valid_from_dttm_flg'; put 'valid_to_dttm_flg'; put ';'; put '%let process_dttm_flg = N;'; put '%let valid_from_dttm_flg = N;'; put '%let valid_to_dttm_flg = N;'; put 'data _null_;'; put 'set datalines1 ;'; put '/* build attrib statement */'; put 'if type=''char'' then type2=''$'';'; put 'if strip(format) ne '''' then format2=cats(''format='',format);'; put 'if strip(label) ne '''' then label2=cats(''label='',quote(trim(label)));'; put 'str1=catx('' '',(put(name,$33.)||''length='')'; put ',put(cats(type2,length),$7.)||format2,label2);'; put '/* Build input statement */'; put 'if upcase(format)=:''$HEX'' then type3='':''!!format;'; put 'else if type=''char'' then type3='':$char.'';'; put 'str2=put(name,$33.)||type3;'; put 'if(upcase(name) = "PROCESSED_DTTM") then'; put 'call symputx("process_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_FROM_DTTM") then'; put 'call symputx("valid_from_dttm_flg", "Y", "L");'; put 'if(upcase(name) = "VALID_TO_DTTM") then'; put 'call symputx("valid_to_dttm_flg", "Y", "L");'; put 'call symputx(cats("attrib_stmt_", put(_N_, 8.)), str1, "L");'; put 'call symputx(cats("input_stmt_", put(_N_, 8.))'; put ', ifc(upcase(name) not in'; put '(''PROCESSED_DTTM'',''VALID_FROM_DTTM'',''VALID_TO_DTTM''), str2, ""), "L");'; put 'run;'; put 'data _null_;'; put 'file &cards_file. &outencoding lrecl=32767 termstr=nl &append;'; put 'length __attrib $32767;'; put 'if _n_=1 then do;'; put 'put ''/**'';'; put 'put '' @file'';'; put 'put " @brief Datalines for %upcase(%scan(&base_ds,2)) dataset";'; put 'put " @details Generated by %nrstr(%%)mp_ds2cards()";'; put 'put " Source: https://github.com/sasjs/core";'; put 'put '' @cond '';'; put 'put ''**/'';'; put 'put "data &tgt_ds &indexes;";'; put 'put "attrib ";'; put '%do i = 1 %to &nvars;'; put '__attrib=symget("attrib_stmt_&i");'; put 'put __attrib;'; put '%end;'; put 'put ";";'; put '%if &process_dttm_flg. eq Y %then %do;'; put 'put ''retain PROCESSED_DTTM %sysfunc(datetime());'';'; put '%end;'; put '%if &valid_from_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_FROM_DTTM &low_date;'';'; put '%end;'; put '%if &valid_to_dttm_flg. eq Y %then %do;'; put 'put ''retain VALID_TO_DTTM &high_date;'';'; put '%end;'; put 'if __nobs=0 then do;'; put 'put ''call missing(of _all_);/* avoid uninitialised notes */'';'; put 'put ''stop;'';'; put 'put ''run;'';'; put 'end;'; put 'else do;'; put 'put "infile cards dsd;";'; put 'put "input ";'; put '%do i = 1 %to &nvars.;'; put '%if(%length(&&input_stmt_&i..)) %then'; put 'put " &&input_stmt_&i..";'; put ';'; put '%end;'; put 'put ";";'; put 'put ''missing a b c d e f g h i j k l m n o p q r s t u v w x y z _;'';'; put 'put "datalines4;";'; put 'end;'; put 'end;'; put 'set &setds end=__lastobs nobs=__nobs;'; put '/* remove all formats for write purposes - some have long underlying decimals */'; put 'format _numeric_ best30.29;'; put 'length __dataline $32767;'; put '__dataline=catq(''cqtmb'',&datalines);'; put 'put __dataline;'; put 'if __lastobs then do;'; put 'put '';;;;'';'; put 'put ''run;'';'; put 'put ''/** @endcond **/'';'; put 'stop;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &setds;'; put 'quit;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &cards_file lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '%end;'; put '%put NOTE: CARDS FILE SAVED IN:;'; put '%put NOTE-;%put NOTE-;'; put '%put NOTE- %sysfunc(dequote(&cards_file.));'; put '%put NOTE-;%put NOTE-;'; put '%mend mp_ds2cards;'; put '/** @endcond **/'; put '%macro mp_binarycopy('; put 'inloc= /* full path and filename of the object to be copied */'; put ',outloc= /* full path and filename of object to be created */'; put ',inref=____in /* override default to use own filerefs */'; put ',outref=____out /* override default to use own filerefs */'; put ',mode=CREATE'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local mod;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if &mode=APPEND %then %let mod=mod;'; put '/* these IN and OUT filerefs can point to anything */'; put '%if &inref = ____in %then %do;'; put 'filename &inref &inloc lrecl=1048576 ;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref &outloc lrecl=1048576 &mod;'; put '%end;'; put '/* copy the file byte-for-byte */'; put 'data _null_;'; put 'infile &inref lrecl=1 recfm=n;'; put 'file &outref &mod recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%if &inref = ____in %then %do;'; put 'filename &inref clear;'; put '%end;'; put '%if &outref=____out %then %do;'; put 'filename &outref clear;'; put '%end;'; put '%mend mp_binarycopy;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mfs_httpheader(header_name'; put ',header_value'; put ')/*/STORE SOURCE*/;'; put '%global sasjs_stpsrv_header_loc;'; put '%local fref fid i;'; put '%if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc)) ne 0 %then %do;'; put '%put &=fref &=sasjs_stpsrv_header_loc;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(&header_name): %str(&header_value)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%mend mfs_httpheader;'; put '%macro mp_streamfile('; put 'contenttype=TEXT'; put ',inloc='; put ',inref=0'; put ',iftrue=%str(1=1)'; put ',outname='; put ',outref=_webout'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let contentype=%upcase(&contenttype);'; put '%let outref=%upcase(&outref);'; put '%local platform; %let platform=%mf_getplatform();'; put '/**'; put '* check engine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put '%local streamweb;'; put '%let streamweb=0;'; put 'data _null_;'; put 'set sashelp.vextfl(where=(upcase(fileref)="&outref"));'; put 'if xengine=''STREAM'' then call symputx(''streamweb'',1,''l'');'; put 'run;'; put '%if &contentype=CSV %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/csv'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/csv'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/csv)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=EXCEL %then %do;'; put '/* suitable for XLS format */'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/vnd.ms-excel'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype=''application/vnd.ms-excel'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/vnd.ms-excel)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=GIF or &contentype=JPEG or &contentype=PNG %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"image/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="image/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,image/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=HTML or &contenttype=MARKDOWN %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"text/%lowcase(&contenttype)");'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name="_webout.json"'; put 'contenttype="text/%lowcase(&contenttype)"'; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,text/%lowcase(&contenttype))'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=TEXT %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/text'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.txt'''; put 'contenttype=''application/text'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/text)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=WOFF or &contentype=WOFF2 or &contentype=TTF %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',"font/%lowcase(&contenttype)");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'contenttype="font/%lowcase(&contenttype)";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,font/%lowcase(&contenttype))'; put '%end;'; put '%end;'; put '%else %if &contentype=XLSX %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'','; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.xls'''; put 'contenttype='; put '''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type'; put ',application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; put ')'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %if &contentype=ZIP %then %do;'; put '%if (&platform=SASMETA and &streamweb=1) %then %do;'; put 'data _null_;'; put 'rc=stpsrv_header(''Content-Type'',''application/zip'');'; put 'rc=stpsrv_header(''Content-disposition'',"attachment; filename=&outname");'; put 'run;'; put '%end;'; put '%else %if &platform=SASVIYA %then %do;'; put 'filename &outref filesrvc parenturi="&SYS_JES_JOB_URI" name=''_webout.zip'''; put 'contenttype=''application/zip'''; put 'contentdisp="attachment; filename=&outname";'; put '%end;'; put '%else %if &platform=SASJS %then %do;'; put '%mfs_httpheader(Content-Type,application/zip)'; put '%mfs_httpheader(Content-disposition,%str(attachment; filename=&outname))'; put '%end;'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: Content Type &contenttype NOT SUPPORTED by &sysmacroname!;'; put '%end;'; put '%if &inref ne 0 %then %do;'; put '%mp_binarycopy(inref=&inref,outref=&outref)'; put '%end;'; put '%else %do;'; put '%mp_binarycopy(inloc="&inloc",outref=&outref)'; put '%end;'; put '%mend mp_streamfile;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Downloads data in a variety of formats'; put '@details To enable direct download, this service runs in a dedicated stream'; put 'as a GET request using URL parameters as inputs.'; put 'The inputs are:'; put '@li table - the libds of the table to be downloaded'; put '@li type - either SAS, CSV, EXCEL, MARKDOWN, WEBCSV or WEBTAB'; put '@li filter - the filter RK if used'; put '

SAS Macros

'; put '@li mf_verifymacvars.sas'; put '@li mf_getuser.sas'; put '@li mf_existfeature.sas'; put '@li dc_assignlib.sas'; put '@li mp_ds2cards.sas'; put '@li mp_abort.sas'; put '@li mp_binarycopy.sas'; put '@li mp_cntlout.sas'; put '@li mp_streamfile.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%global table type filter ds format is_fmt txfrom txto;'; put '%mpeinit()'; put '%let user=%mf_getuser();'; put '%let is_fmt=0;'; put '%mp_abort(iftrue= (%mf_verifymacvars(type table)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Invalid inputs: type table)'; put ')'; put '%let libds=%upcase(&table); /* actual source */'; put '%let table=%upcase(&table); /* used as label for fmt catalogs */'; put '%let lib=%scan(&table,1,.);'; put '%let ds=%scan(&table,2,.);'; put '%dc_assignlib(READ,&lib)'; put 'data _null_;'; put 'set &mpelib..MPE_TABLES;'; put 'where upcase(libref)="&lib" and upcase(dsn)="&ds";'; put '/* if a TXTEMPORAL table then filter as such */'; put 'call symputx(''txfrom'',var_txfrom);'; put 'call symputx(''txto'',var_txto);'; put 'ds=symget(''ds'');'; put 'is_fmt=0;'; put 'if subpad(cats(reverse(ds)),1,3)=:''CF-'' then do;'; put 'ds=scan(ds,1,''-'');'; put 'table=cats("&lib..",ds);'; put 'putlog "Format Catalog Captured";'; put 'is_fmt=1;'; put 'call symputx(''libds'',''work.fmtextract'');'; put 'call symputx(''table'',table);'; put 'end;'; put 'call symputx(''is_fmt'',is_fmt);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_cntlout('; put 'iftrue=(&is_fmt=1)'; put ',libcat=&table'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%put preparing query;'; put '%mpe_filtermaster(DLOAD,&libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%put printing generated filterquery:;'; put 'data _null_;'; put 'infile filtref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put 'options obs=200000;/* stop limit */'; put 'data staged(drop=&txfrom &txto);'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put 'options obs=max;'; put 'options validvarname=upcase;'; put '%macro mpestp_getrawdata();'; put '%local outfile;'; put '%if &type=SAS %then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..sas;'; put '%mp_ds2cards(base_ds=staged'; put ', tgt_ds=&table'; put ', cards_file= "&outfile"'; put ', maxobs=100000)'; put '%let ext=sas;'; put '%let mimetype=text;'; put '%end;'; put '%else %if &type=CSV or (&type=EXCEL and %mf_existfeature(EXPORTXLS) ne 1)'; put '/* cannot proc export excel if PC Files is not licensed */'; put '%then %do;'; put '%let outfile=%sysfunc(pathname(work))/&table..csv;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '%let ext=csv;'; put '%let mimetype=csv;'; put '%end;'; put '%else %if &type=EXCEL %then %do;'; put '%let ext=xlsx;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= "&outfile"'; put 'DBMS=xlsx ;'; put 'RUN;'; put '%let mimetype=XLSX;'; put '%end;'; put '%else %if &type=MARKDOWN %then %do;'; put '%let ext=md;'; put '%let outfile=%sysfunc(pathname(work))/&table..&ext;'; put 'filename mdref "&outfile" lrecl=32767;'; put '%mp_ds2md(staged,outref=mdref,showlog=NO)'; put '%let mimetype=MARKDOWN;'; put '%end;'; put '%else %if &type=WEBCSV %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=csv REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %if &type=WEBTAB %then %do;'; put 'PROC EXPORT DATA= staged'; put 'OUTFILE= _webout'; put 'DBMS=tab REPLACE;'; put 'RUN;'; put '/* don''t set headers */'; put '%return;'; put '%end;'; put '%else %do;'; put '%mp_abort(msg=type &type not supported,mac=mpestp_getrawdata.sas);'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_streamfile(contenttype=&mimetype'; put ',inloc=%str(&outfile)'; put ',outname=&table..&ext'; put ')'; put '%mend mpestp_getrawdata;'; put '%mpestp_getrawdata()'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=refreshlibinfo; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro bitemporal_closeouts('; put 'tech_from=tx_from_dttm'; put ',tech_to = tx_to_dttm /* Technical TO datetime variable.'; put 'Req''d on BASE table only. */'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE /* Name of STAGING table. */'; put ',PK= name sex /* Business key, space separated. */'; put '/* Should INCLUDE BUS_FROM field if relevant. */'; put ',NOW=DEFINE'; put ',FILTER= /* supply a filter to limit the update */'; put ',outdest= /* supply an unquoted filepath/filename.ext to get'; put 'a text file containing the update statements */'; put ',loadtype='; put ',loadtarget=YES /* if <> YES will return without changing anything */'; put ');'; put '%put ENTERING &sysmacroname;'; put '%local x var start;'; put '%let start=%sysfunc(datetime());'; put '%dc_assignlib(WRITE,&base_lib)'; put '%dc_assignlib(WRITE,&append_lib)'; put '%if &now=DEFINE %then %let now=&dc_dttmtfmt.;'; put '%put &=now;'; put '/**'; put '* perform basic checks'; put '*/'; put '/* do tables exist? */'; put '%if not %sysfunc(exist(&base_lib..&base_dsn)) %then %do;'; put '%mp_abort(msg=&base_lib..&base_dsn does not exist)'; put '%end;'; put '%else %if %sysfunc(exist(&append_lib..&append_dsn))=0'; put 'and %sysfunc(exist(&append_lib..&append_dsn,VIEW))=0 %then %do;'; put '%mp_abort(msg=&append_lib..&append_dsn does not exist)'; put '%end;'; put '/* do TX columns exist? */'; put '%if &loadtype ne UPDATE %then %do;'; put '%if not %mf_existvar(&base_lib..&base_dsn,&tech_from) %then %do;'; put '%mp_abort(msg=&tech_from does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&base_lib..&base_dsn,&tech_to) %then %do;'; put '%mp_abort(msg=&tech_to does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%end;'; put '/* do PK columns exist? */'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if not %mf_existvar(&base_lib..&base_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &base_lib..&base_dsn)'; put '%end;'; put '%else %if not %mf_existvar(&append_lib..&append_dsn,&var) %then %do;'; put '%mp_abort(msg=&var does not exist on &append_lib..&append_dsn)'; put '%end;'; put '%end;'; put '/* check uniqueness */'; put 'proc sort data=&append_lib..&append_dsn'; put 'out=___closeout1 noduprecs dupout=___closeout1a;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(___closeout1a,NLOBS)>0 %then'; put '%put NOTE: dups on (&PK) in (&append_lib..&append_dsn);'; put '/* is &NOW value within a tolerance? Should not allow renegade closeouts.. */'; put '%local gap;'; put '%let gap=0;'; put 'data _null_;'; put 'now=&now;'; put 'gap=intck(''HOURS'',now,datetime());'; put 'call symputx(''gap'',gap,''l'');'; put 'run;'; put '%mf_abort('; put 'iftrue=(&gap > 24),'; put 'msg=NOW variable (&now) is not within a 24hr tolerance'; put ')'; put '/* have any warnings / errs occurred thus far? If so, abort */'; put '%mf_abort('; put 'iftrue=(&syscc>0),'; put 'msg=Aborted due to SYSCC=&SYSCC status'; put ')'; put '/**'; put '* Create closeout statements. These are sent as individual SQL statements'; put '* to ensure pass-through utilisation. The update_cnt variable monitors'; put '* how many records were actually updated on the target table.'; put '*/'; put '%local update_cnt;'; put '%let update_cnt=0;'; put 'filename tmp temp;'; put 'data _null_;'; put 'set ___closeout1;'; put 'file tmp;'; put 'if _n_=1 then put ''proc sql noprint;'' ;'; put 'length string $32767.;'; put '%if &loadtype=UPDATE %then %do;'; put 'put "delete from &base_lib..&base_dsn where 1";'; put '%end;'; put '%else %do;'; put 'now=symget(''now'');'; put 'put "update &base_lib..&base_dsn set &tech_to= " now @;'; put '%if %mf_existvar(&base_lib..&base_dsn,PROCESSED_DTTM) %then %do;'; put 'put " ,PROCESSED_DTTM=" now @;'; put '%end;'; put 'put " where " now " lt &tech_to ";'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&PK));'; put '%let var=%scan(&pk,&x,%str( ));'; put '%if %mf_getvartype(&base_lib..&base_dsn,&var)=C %then %do;'; put '/* use single quotes to avoid ampersand resolution in data */'; put 'string=" & &var=''"!!trim(prxchange("s/''/''''/",-1,&var))!!"''";'; put '%end;'; put '%else %do;'; put 'string=cats(" & &var=",&var);'; put '%end;'; put 'put string;'; put '%end;'; put 'put "&filter ;";'; put 'put ''%let update_cnt=%eval(&update_cnt+&sqlobs);%put update_cnt=&update_cnt;'';'; put 'run;'; put 'data _null_;'; put 'infile tmp;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &loadtarget ne YES %then %return;'; put '/* ensure we have a lock */'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn'; put ',ref=bitemporal_closeouts'; put ',ctl_ds=&mpelib..mpe_lockanytable'; put ')'; put 'options source2;'; put '%inc tmp;'; put 'filename tmp clear;'; put '/**'; put '* Update audit tracker'; put '*/'; put '%local newobs; %let newobs=%mf_getattrn(work.___closeout1,NLOBS);'; put '%local user; %let user=%mf_getuser();'; put 'proc sql;'; put 'insert into &mpelib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&append_lib..&append_dsn contained &newobs records"'; put ',LOADTYPE="CLOSEOUT"'; put ',DELETED_RECORDS=&update_cnt'; put ',NEW_RECORDS=0'; put ',DURATION=%sysfunc(datetime())-&start'; put ',USER_NM="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%mend bitemporal_closeouts;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mf_wordsInStr1ButNotStr2('; put 'Str1= /* string containing words to extract */'; put ',Str2= /* used to compare with the extract string */'; put ')/*/STORE SOURCE*/;'; put '%local count_base count_extr i i2 extr_word base_word match outvar;'; put '%if %length(&str1)=0 or %length(&str2)=0 %then %do;'; put '%put base string (str1)= &str1;'; put '%put compare string (str2) = &str2;'; put '%return;'; put '%end;'; put '%let count_base=%sysfunc(countw(&Str2));'; put '%let count_extr=%sysfunc(countw(&Str1));'; put '%do i=1 %to &count_extr;'; put '%let extr_word=%scan(&Str1,&i,%str( ));'; put '%let match=0;'; put '%do i2=1 %to &count_base;'; put '%let base_word=%scan(&Str2,&i2,%str( ));'; put '%if &extr_word=&base_word %then %let match=1;'; put '%end;'; put '%if &match=0 %then %let outvar=&outvar &extr_word;'; put '%end;'; put '&outvar'; put '%mend mf_wordsInStr1ButNotStr2;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '/** @cond */'; put '%macro mp_storediffs(libds'; put ',origds'; put ',key'; put ',delds=0'; put ',appds=0'; put ',modds=0'; put ',outds=work.mp_storediffs'; put ',loadref=0'; put ',processed_dttm=0'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 hashkey inds_auto inds_keep dslist vlist;'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_ds1));'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_ds2));'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_ds3));'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_ds4));'; put '%let hashkey=%upcase(%mf_getuniquename(prefix=mpsd_hashkey));'; put '%let inds_auto=%upcase(%mf_getuniquename(prefix=mpsd_inds_auto));'; put '%let inds_keep=%upcase(%mf_getuniquename(prefix=mpsd_inds_keep));'; put '%let dslist=&origds;'; put '%if &delds ne 0 %then %do;'; put '%let delds=%upcase(&delds);'; put '%if %scan(&delds,-1,.)=&delds %then %let delds=WORK.&delds;'; put '%let dslist=&dslist &delds;'; put '%end;'; put '%if &appds ne 0 %then %do;'; put '%let appds=%upcase(&appds);'; put '%if %scan(&appds,-1,.)=&appds %then %let appds=WORK.&appds;'; put '%let dslist=&dslist &appds;'; put '%end;'; put '%if &modds ne 0 %then %do;'; put '%let modds=%upcase(&modds);'; put '%if %scan(&modds,-1,.)=&modds %then %let modds=WORK.&modds;'; put '%let dslist=&dslist &modds;'; put '%end;'; put '%let origds=%upcase(&origds);'; put '%if %scan(&origds,-1,.)=&origds %then %let origds=WORK.&origds;'; put '%let key=%upcase(&key);'; put '/* hash the key and append all the tables (marking the source) */'; put 'data &ds1;'; put 'set &dslist indsname=&inds_auto;'; put '&hashkey=put(md5(catx(''|'',%mf_getquotedstr(&key,quote=N))),$hex32.);'; put '&inds_keep=upcase(&inds_auto);'; put 'proc sort;'; put 'by &inds_keep &hashkey;'; put 'run;'; put '/* transpose numeric & char vars */'; put 'proc transpose data=&ds1'; put 'out=&ds2(rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_num));'; put 'by &inds_keep &hashkey;'; put 'var _numeric_;'; put 'run;'; put 'proc transpose data=&ds1'; put 'out=&ds3('; put 'rename=(&hashkey=key_hash _name_=tgtvar_nm col1=newval_char)'; put 'where=(tgtvar_nm not in ("&hashkey","&inds_keep"))'; put ');'; put 'by &inds_keep &hashkey;'; put 'var _character_;'; put 'run;'; put '%if %index(&libds,-)>0 and %scan(&libds,2,-)=FC %then %do;'; put '/* this is a format catalog - cannot query cols directly */'; put '%let vlist="TYPE","FMTNAME","FMTROW","START","END","LABEL","MIN","MAX"'; put ',"DEFAULT","LENGTH","FUZZ","PREFIX","MULT","FILL","NOEDIT","SEXCL"'; put ',"EEXCL","HLO","DECSEP","DIG3SEP","DATATYPE","LANGUAGE";'; put '%end;'; put '%else %let vlist=%mf_getvarlist(&libds,dlm=%str(,),quote=DOUBLE);'; put 'data &ds4;'; put 'length &inds_keep $41 tgtvar_nm $32 _label_ $256;'; put 'if _n_=1 then call missing(_label_);'; put 'drop _label_;'; put 'set &ds2 &ds3 indsname=&inds_auto;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%upcase(&vlist));'; put 'if upcase(&inds_auto)="&ds2" then tgtvar_type=''N'';'; put 'else if upcase(&inds_auto)="&ds3" then tgtvar_type=''C'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified vartype input!" &inds_auto;'; put 'call symputx(''syscc'',98);'; put 'end;'; put 'if &inds_keep="&appds" then move_type=''A'';'; put 'else if &inds_keep="&delds" then move_type=''D'';'; put 'else if &inds_keep="&modds" then move_type=''M'';'; put 'else if &inds_keep="&origds" then move_type=''O'';'; put 'else do;'; put 'putlog ''ERR'' +(-1) "OR: unidentified movetype input!" &inds_keep;'; put 'call symputx(''syscc'',99);'; put 'end;'; put 'tgtvar_nm=upcase(tgtvar_nm);'; put 'if tgtvar_nm in (%mf_getquotedstr(&key)) then is_pk=1;'; put 'else is_pk=0;'; put 'drop &inds_keep;'; put 'run;'; put '%if "&loadref"="0" %then %let loadref=%sysfunc(uuidgen());'; put '%if &processed_dttm=0 %then %let processed_dttm=%sysfunc(datetime());'; put '%let libds=%upcase(&libds);'; put '/* join orig vals for modified & deleted */'; put 'proc sql;'; put 'create table &outds as'; put 'select "&loadref" as load_ref length=36'; put ',&processed_dttm as processed_dttm format=E8601DT26.6'; put ',"%scan(&libds,1,.)" as libref length=8'; put ',"%scan(&libds,2,.)" as dsn length=32'; put ',b.key_hash length=32'; put ',b.move_type length=1'; put ',b.tgtvar_nm length=32'; put ',b.is_pk'; put ',case when b.move_type ne ''M'' then -1'; put 'when a.newval_num=b.newval_num and a.newval_char=b.newval_char then 0'; put 'else 1'; put 'end as is_diff'; put ',b.tgtvar_type length=1'; put ',case when b.move_type=''D'' then b.newval_num'; put 'else a.newval_num'; put 'end as oldval_num format=best32.'; put ',case when b.move_type=''D'' then .'; put 'else b.newval_num'; put 'end as newval_num format=best32.'; put ',case when b.move_type=''D'' then b.newval_char'; put 'else a.newval_char'; put 'end as oldval_char length=32765'; put ',case when b.move_type=''D'' then '''''; put 'else b.newval_char'; put 'end as newval_char length=32765'; put 'from &ds4(where=(move_type=''O'')) as a'; put 'right join &ds4(where=(move_type ne ''O'')) as b'; put 'on a.tgtvar_nm=b.tgtvar_nm'; put 'and a.key_hash=b.key_hash'; put 'order by move_type, key_hash,is_pk desc, tgtvar_nm;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4;'; put '%end;'; put '%mend mp_storediffs;'; put '/** @endcond */'; put '%macro bitemporal_dataloader('; put 'bus_from= /* Business FROM datetime variable. Req''d on'; put 'STAGING & BASE tables.*/'; put ',bus_to = /* Business TO datetime variable. Req''d on'; put 'STAGING & BASE tables. */'; put ',bus_from_override= /* Provide a hard coded BUS_FROM datetime value.*/'; put ',bus_to_override= /* provide a hard coded BUS_TO datetime value */'; put ',tech_from= /* Technical FROM datetime variable. Req''d on'; put 'BASE table only. */'; put ',tech_to = /* Technical TO datetime variable. Req''d on BASE'; put 'table only. */'; put ',processed= 0'; put ',base_lib=WORK /* Libref of the BASE table. */'; put ',base_dsn=BASETABLE /* Name of BASE table. */'; put ',append_lib=WORK /* Libref of the STAGING table. */'; put ',append_dsn=APPENDTABLE'; put ',high_date=''01JAN5999:00:00:00''dt /* High date to close out records */'; put ',PK= name sex'; put ',RK_UNDERLYING='; put ',KEEPVARS= /* Provides option for removing unwanted vars from append table */'; put ',RK_UPDATE_MAXKEYTABLE=NO /* If switching (or mix matching) with regular'; put 'SCD2 loader then set this switch to YES to'; put 'ensure the MAXKEYTABLE is updated with the'; put 'current maximum RK value for the target table'; put '*/'; put ',CHECK_UNIQUENESS=YES /* Perform a check of the APPEND table to ensure it is'; put 'unique on its business key */'; put ',ETLSOURCE=demo /* supply a value ($50.) to show as ETLSOURCE in'; put '&dclib..DATALOADS */'; put ',LOADTYPE=BITEMPORAL'; put ',RK_MAXKEYTABLE= mpe_maxkeyvalues'; put ',LOG=1 /* Switch to 0 to prevent records being added to'; put '&mpelib..mpe_DATALOADS (ie when testing)*/'; put ',DELETE_COL= _____DELETE__THIS__RECORD_____'; put '/* If this variable is found in the append dataset'; put 'then records are closed out (or deleted) in the'; put 'append table where that variable= "Yes" */'; put ',LOADTARGET=YES /* set to anything but uppercase YES to switch off'; put 'target table load and generate temp tables only */'; put ',CLOSE_VARS='; put '/*a problem with regular SCD2 or TXTEMPORAL loads is that there is'; put 'no facility to close out removed records (all records are'; put 'assumed new or changed). But how does one determine which'; put 'records are removed? Short of loading the entire table'; put 'each time? This parameter allows a set of variables'; put '(this should be a subset of the PK) to be declared, and'; put 'the macro will determine which records in the base table'; put 'need to be closed out ahead of the load.'; put 'For instance, given the following:'; put 'Base Table Staging Table'; put 'DATE ENTITY AMOUNT DATE ENTITY AMOUNT'; put 'JAN ACME4 66 JAN ACME4 66'; put 'FEB ACME4 99 FEB ACME4 99'; put 'FEB ACME1 22'; put 'By supplying DATE in CLOSE_VARS and DATE ENTITY as the PK,'; put 'the "FEB PAG 22" record would get closed out.'; put '*/'; put ',config_table=&dclib..MPE_CONFIG'; put ',dclib=&dc_libref'; put ',outds_del=work.outds_del'; put ',outds_add=work.outds_add'; put ',outds_mod=work.outds_mod'; put ',outds_audit=0'; put ');'; put '/* when changing this macro, update the version num here */'; put '%local ver;'; put '%let ver=32;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%dc_assignlib(WRITE,&base_lib) /* may not already be assigned */'; put '/* return straight away if nothing to load */'; put '%let nobs= %mf_getattrn(&append_lib..&append_dsn,NLOBS);'; put '%if &nobs=-1 %then %do;'; put 'proc sql noprint; select count(*) into: nobs from &append_lib..&append_dsn;'; put '%end;'; put '%if &nobs=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- Base dataset &append_lib..&append_dsn is empty. Nothing to upload!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/* hard exit if err condition exists */'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status;)'; put ')'; put '%local engine_type;'; put '%let engine_type=%mf_getengine(&base_lib);'; put '%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0'; put '%then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%return;'; put '%end;'; put '/**'; put '* The metadata functions (eg mf_existvar) will fail if the base table has a'; put '* SAS lock. So, make a snapshot of the base table for further use.'; put '* Also, make output tables (regardless).'; put '*/'; put '%local basecopy;'; put '%let basecopy=%mf_getuniquename(prefix=basecopy);'; put 'data &basecopy &outds_mod &outds_add &outds_del;'; put 'set &base_lib..&base_dsn;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (&syscc > 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after base table copy - aborting due to table lock)'; put ')'; put '%local cols idx_pk md5_col ;'; put '%let md5_col=___TMP___md5;'; put '%let check_uniqueness=%upcase(&check_uniqueness);'; put '%let RK_UPDATE_MAXKEYTABLE=%upcase(&RK_UPDATE_MAXKEYTABLE);'; put '%let high_date=%unquote(&high_date);'; put '%let loadtype=%upcase(&loadtype);'; put '/* ensure irrelevant variables are cleared */'; put '%if &loadtype=BUSTEMPORAL %then %do;'; put '%let tech_from=;'; put '%let tech_to=;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put '%let bus_from=;'; put '%let bus_to=;'; put '%end;'; put '/* ensure relevant variables are supplied */'; put '%mp_abort(iftrue=(&loadtype=BITEMPORAL & %mf_verifymacvars(bus_from bus_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing BUS_FROM / BUS_TO)'; put ')'; put '%mp_abort(iftrue=(&loadtype=TXTEMPORAL & %mf_verifymacvars(tech_from tech_to)=0)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Missing TECH_FROM / TECH_TO)'; put ')'; put '/**'; put '* drop any tables (may be defined as views or vice versa preventing overwrite)'; put '*/'; put '%mp_dropmembers(append bitemp0_append bitemp_cols)'; put '/* SQL Server requires its own time values */'; put '/* 9.2 will only give picture format down to seconds. 9.3 allows'; put 'milliseconds by using lower S and defining the decimal in the format name..*/'; put 'PROC FORMAT;'; put 'picture MyMSdt other=''%0Y-%0m-%0dT%0H:%0M:%0S'' (datatype=datetime);'; put 'RUN;'; put '%local dbnow;'; put '%let dbnow="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'data _null_;'; put '/* convert space separated macvar to comma separated for SQL processing */'; put 'call symputx(''PK_COMMA'',tranwrd(compbl("&pk"),'' '','',''),''L'');'; put 'call symputx(''PK_CNT'',countw("&pk",'' ''),''L'');'; put 'now=&dbnow;'; put 'call symputx(''NOW'',now,''L'');'; put 'call symputx(''SQLNOW'',cats("''",put(now,MyMSdt.),"''"),''L'');'; put 'length etlsource $100;'; put 'etlsource=subpad(symget(''etlsource''),1,100);'; put 'call symputx(''etlsource'',etlsource,''l'');'; put 'run;'; put '/**'; put '* Even if no PROCESSED var provided, assume that any variable named'; put '* PROCESSED_DTTM should be updated'; put '*/'; put '%if &processed=0 %then %do;'; put '%if %mf_existvar(&basecopy,PROCESSED_DTTM)'; put '%then %let processed=PROCESSED_DTTM;'; put '%else %let processed=;'; put '%end;'; put '/* extract colnames for md5 creation / change tracking */'; put 'proc contents noprint data=&base_lib..&base_dsn'; put 'out=work.bitemp_cols (keep=name type length varnum format:);'; put 'run;'; put 'proc sql noprint;'; put 'select name into: cols separated by '','''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put 'select case when type in (2,6) then cats(''put(md5(trim('',name,'')),$hex32.)'')'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put 'else cats(''put(md5(trim(put(ifn(missing('''; put ',name,''),'',name,'','',name,''*1),binary64.))),$hex32.)'') end'; put 'into: stripcols separated by ''||'''; put 'from work.bitemp_cols'; put 'where upcase(name) not in'; put '(%upcase("&bus_from","&bus_to"'; put ',"&tech_from","&tech_to"'; put ',"&processed","&delete_col")) ;'; put '/* set default formats*/'; put '%let bus_from_fmt = datetime19.;'; put '%let bus_to_fmt = datetime19.;'; put '%let processed_fmt = datetime19.;'; put '%let tech_from_fmt = format=datetime19.;'; put '%let tech_to_fmt = format=datetime19.;'; put '%put &=stripcols;'; put '%put &=pk;'; put 'data _null_;'; put 'set work.bitemp_cols;'; put 'if type=2 or type=6 then do;'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'if format='''' then fmt=cats(length,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put 'if upcase(name)="%upcase(&bus_from)" then'; put 'call symputx(''bus_from_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&bus_to)" then'; put 'call symputx(''bus_to_fmt'',fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_from)" then'; put 'call symputx(''tech_from_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&tech_to)" then'; put 'call symputx(''tech_to_fmt'',"format="!!fmt,''L'');'; put 'else if upcase(name)="%upcase(&processed)" then'; put 'call symputx(''processed_fmt'',fmt,''L'');'; put 'run;'; put '%if %index(%quote(&cols),___TMP___) %then %do;'; put '%let msg=%str(Table contains a variable name containing "___TMP___".%trim('; put ') This may conflict with temp variable generation!!);'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader);'; put '%let syscc=5;'; put '%return;'; put '%end;'; put '/* if transaction dates appear on the APPEND table, need to remove them */'; put '%local drop_tx_dates /* used in append table */'; put 'drop_tx_dates_noobs /* used to take the base table structure */;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_from)'; put '%then %let drop_tx_dates=&tech_from;'; put '%if %mf_existvar(&append_lib..&append_dsn, &tech_to)'; put '%then %let drop_tx_dates=&drop_tx_dates &tech_to;'; put '%if %length(%trim(&drop_tx_dates))>0'; put '%then %let drop_tx_dates=(drop=&drop_tx_dates);'; put '%if %mf_existvar(&basecopy, &tech_from)'; put '%then %let drop_tx_dates_noobs=&tech_from;'; put '%if %mf_existvar(&basecopy, &tech_to)'; put '%then %let drop_tx_dates_noobs=&drop_tx_dates_noobs &tech_to;'; put '%if %length(%trim(&drop_tx_dates_noobs))>0'; put '%then %let drop_tx_dates_noobs=(drop=&drop_tx_dates_noobs obs=0);'; put '%else %let drop_tx_dates_noobs=(obs=0);'; put '/**'; put '* Lock the table. This is necessary as we are doing a two part update (first'; put '* closing records then appending new records). It is theoretically possible'; put '* that an upload may occur whilst preparing the staging tables. And the'; put '* staging tables are about to be prepared..'; put '*/'; put '%if &LOADTARGET = YES %then %do;'; put '%put locking &base_lib..&base_dsn;'; put '%mp_lockanytable(LOCK,'; put 'lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%put locking &outds_audit;'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put '/* not an actual load, so avoid updating the max key table in next step. */'; put '%let rk_update_maxkeytable=NO;'; put '%end;'; put '%if %length(&RK_UNDERLYING)>0 %then %do;'; put '%mp_retainedkey('; put 'base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=&append_lib'; put ',append_dsn=&append_dsn'; put ',retained_key=&pk'; put ',business_key=&rk_underlying'; put ',check_uniqueness=&CHECK_UNIQUENESS'; put ',outds=work.append'; put '%if &rk_update_maxkeytable=NO %then %do;'; put ',maxkeytable=0'; put '%end;'; put '%else %do;'; put ',maxkeytable=&dclib..&RK_MAXKEYTABLE'; put '%end;'; put ',locktable=&dclib..mpe_lockanytable'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',filter_str=%str( (where=( &now < &tech_to)) )'; put '%end;'; put ')'; put '%end;'; put '%else %do;'; put 'proc sql;'; put 'create view work.append as select * from &append_lib..&append_dsn;'; put '%end;'; put '/**'; put '* generate md5 for append table'; put '*/'; put '/* it is possible the source dataset has additional (unwanted) columns.'; put 'Drop if specified; */'; put '%if %length(&keepvars)>0 %then %do;'; put '/* remove tech dates from keepvars as they are generated later */'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_from ),%str( )));'; put '%let keepvars=%sysfunc(tranwrd(%str( &keepvars ),%str( &tech_to ),%str( )));'; put '%let keepvars=(keep=&keepvars &bus_from &bus_to &processed &md5_col);'; put '%end;'; put '/* CAS varchar types cause append issues here, so perform autoconvert'; put 'by creating empty local table first */'; put 'data;'; put 'set &base_lib..&base_dsn &drop_tx_dates_noobs;'; put 'run;'; put '%local emptybasetable; %let emptybasetable=&syslast;'; put 'data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put '/* apply formats for bitemporal vars but not tx dates which are added later */'; put '%if %length(&keepvars)>0 and &loadtype=BITEMPORAL %then %do;'; put 'format &bus_from &bus_from_fmt;'; put 'format &bus_to &bus_to_fmt;'; put '%end;'; put 'set &emptybasetable /* base table reqd in case append has fewer cols */'; put 'work.append &drop_tx_dates;'; put '%if %length(%str(&bus_from_override))>0 %then %do;'; put '&bus_from= %unquote(&bus_from_override) ;'; put '%end;'; put '%if %length(%str(&bus_to_override))>0 %then %do;'; put '&bus_to= %unquote(&bus_to_override) ;'; put '%end;'; put 'length &md5_col $32;'; put '&md5_col=put(md5(&stripcols),hex32.);'; put '%if %length(&processed)>0 %then %do;'; put 'format &processed &processed_fmt;'; put '&processed=&now;'; put '%end;'; put '/**'; put '* If a delete column exists then create the delete dataset'; put '*/'; put '%if %mf_existvar(&append_lib..&append_dsn, &delete_col) %then %do;'; put 'drop &delete_col;'; put 'if upcase(&delete_col) = "YES" then output &outds_del ;'; put 'else output work.bitemp0_append ;'; put 'run;'; put '%if %mf_getattrn(&outds_del,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=%scan(&outds_del,-1,.)'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '%else %do;'; put 'output work.bitemp0_append;'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc gt 0 at line 494)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%if %length(&close_vars)>0 %then %do;'; put '/**'; put '* need to close out records that are not provided'; put '*/'; put 'proc sql;'; put 'create table bitemp1_closevars1 as'; put 'select distinct a.%mf_getquotedstr(in_str=&pk,dlm=%str(,a.),quote=)'; put 'from &base_lib..&base_dsn a'; put 'inner join work.bitemp0_append b'; put 'on 1=1'; put '/* join on closevars key */'; put '%do idx_pk=1 %to %sysfunc(countw(&close_vars));'; put '%let idx_val=%scan(&close_vars,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* filter base on tech dates if necessary */'; put '%if &loadtype=TXTEMPORAL %then %do;'; put 'where a.&tech_from <=&now and &now < a.&tech_to'; put '%end;'; put ';'; put 'create table bitemp1_closevars2 as'; put 'select distinct a.*'; put 'from bitemp1_closevars1 a'; put 'left join work.bitemp0_append b'; put 'on 1=1'; put '/* join on primary key */'; put '%do idx_pk=1 %to %sysfunc(countw(&pk));'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '/* identify removed records by null value in a field in PK but not close_vars'; put '*/'; put 'where b.%scan('; put '%mf_wordsInStr1ButNotStr2(Str1=&pk,Str2=&close_vars),1,%str( )'; put ') IS NULL'; put ';'; put '%if %mf_getattrn(bitemp1_closevars2,NLOBS)>0 %then %do;'; put '%bitemporal_closeouts('; put 'tech_from=&tech_from'; put ',tech_to = &tech_to'; put ',base_lib=&base_lib'; put ',base_dsn=&base_dsn'; put ',append_lib=work'; put ',append_dsn=bitemp1_closevars2'; put ',PK=&bus_from &pk'; put ',NOW=&dbnow'; put ',loadtarget=&loadtarget'; put ',loadtype=&loadtype'; put ')'; put '%end;'; put '%end;'; put '/* return if nothing to load (was just deletes) */'; put '%if %mf_getattrn(work.bitemp0_append,NLOBS)=0 %then %do;'; put '%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;'; put '%put NOTE- No updates - just deletes!;'; put '%put NOTE-;%put NOTE-;%put NOTE-;'; put '%end;'; put '/**'; put '* If applying manual overrides to business dates, then the input table MUST'; put '* be unique on the PK. Check, and if not - abort.'; put '*/'; put '%local msg;'; put '%if %length(&bus_from_override.&bus_to_override)>0 or &CHECK_UNIQUENESS=YES'; put '%then %do;'; put 'proc sort data=work.bitemp0_append out=work.bitemp0_check nodupkey;'; put 'by &pk;'; put 'run;'; put '%if %mf_getattrn(work.bitemp0_check,NLOBS)'; put 'ne %mf_getattrn(work.bitemp0_append,NLOBS)'; put '%then %do;'; put '%let msg=INPUT table &append_lib..&append_dsn is not unique on PK (&pk);'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE (&msg),'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_abort(msg=&msg,mac=bitemporal_dataloader.sas);'; put '%end;'; put '%end;'; put '/**'; put '* extract from BASE table. Only want matching records, as could be very BIG.'; put '* New records are subsequently identified via left join and test for nulls.'; put '*/'; put '%local temp_table temp_table2 base_table baselib_schema;'; put '%put DCNOTE: Extracting matching observations from &base_lib..&base_dsn;'; put '%if &engine_type=OLEDB %then %do;'; put '%let temp_table=##BITEMP_&base_dsn;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from [dbo].&base_dsn'; put 'where convert(datetime,&SQLNOW) < &tech_to );'; put '%else %let base_table=[dbo].&base_dsn;'; put 'proc sql;'; put 'create table &base_lib.."&temp_table"n as'; put 'select * from work.bitemp0_append;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '/* grab schema */'; put '%let baselib_schema=%mf_getschema(&base_lib);'; put '%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;'; put '/* grab redshift config */'; put '%local redcnt; %let redcnt=0;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'data _null_;'; put 'set &config_table(where=(var_scope=''DCBL_REDSH'' and var_active=1));'; put 'x+1;'; put 'call symputx(cats(''rednm'',x),var_value,''l'');'; put 'call symputx(cats(''redval'',x),var_value,''l'');'; put 'call symputx(''redcnt'',x,''l'');'; put 'run;'; put '%end;'; put '/* cannot persist temp tables so must create a temporary permanent table */'; put '%let temp_table=%mf_getuniquename(prefix=XDCTEMP);'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=(select * from &baselib_schema.&base_dsn'; put 'where timestamp &sqlnow < &tech_to );'; put '%else %let base_table=&baselib_schema.&base_dsn;'; put '/* make empty table first - must clone & drop extra cols as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &temp_table alter sortkey none) by myAlias;'; put '%end;'; put '%local dropcols;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(&pk)'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &temp_table drop column &idx_val;) by myAlias;'; put '%end;'; put 'exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp0/view=work.vw_bitemp0;'; put 'set work.bitemp0_append(keep=&pk &md5_col);'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&temp_table'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=work.vw_bitemp0 force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'create table work.bitemp0_base as select * from connection to myAlias('; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put '%let temp_table=CASUSER.%mf_getuniquename(prefix=DC);'; put 'data &temp_table;'; put 'set work.bitemp0_append;'; put 'run;'; put '%let bitemp0base=CASUSER.%mf_getuniquename(prefix=DC);'; put 'proc fedsql sessref=dcsession;'; put 'create table &bitemp0base{options replace=true} as'; put '%end;'; put '%else %do;'; put '%let temp_table=work.bitemp0_append;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then'; put '%let base_table=&base_lib..&base_dsn'; put '(where=(&tech_from <=&now and &now < &tech_to));'; put '%else %let base_table=&base_lib..&base_dsn;'; put 'proc sql;'; put 'create table work.bitemp0_base as'; put '%end;'; put 'select a.&md5_col /* this identifies NEW records */'; put ', b.*'; put '/* assume first PK field cannot be null (if defined in a PK constraint then'; put 'it definitely cannot be null) */'; put ', case when b.%scan(&pk,1) IS NULL then 1 else 0 end as ___TMP___NEW_FLG'; put 'from &baselib_schema.&temp_table a'; put 'left join &base_table b'; put 'on 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put '); proc sql; drop table &base_lib.."&temp_table"n;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put ';'; put 'quit;'; put 'data work.bitemp0_base;'; put 'set &bitemp0base;'; put 'run;'; put 'proc sql;'; put 'drop table &temp_table;'; put 'drop table &bitemp0base;'; put '%end;'; put '%else %do;'; put ';'; put '%end;'; put '/**'; put '* matching & changed records are those without NULL key values'; put '* &idx_val resolves to rightmost PK value (loop above)'; put '*/'; put '%put syscc (line525)=&syscc, sqlrc=&sqlrc;'; put '%mp_abort(iftrue= (&syscc gt 0 or &sqlrc>0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc sqlrc=&sqlrc)'; put ')'; put '%put hashcols2=&stripcols;'; put 'proc sql;'; put 'create table work.bitemp1_current(drop=___TMP___NEW_FLG) as'; put 'select *'; put ', put(md5(&stripcols),$hex32.) as &md5_col'; put 'from work.bitemp0_base (drop=&md5_col)'; put 'where ___TMP___NEW_FLG=0;'; put '/**'; put '* NEW records were identified in ___TMP___NEW_FLG in bitemp0_base'; put '*/'; put 'proc sql;'; put 'create table &outds_add'; put '(drop=&md5_col'; put '%if %mf_existvar(work.bitemp0_base, &delete_col) %then %do;'; put '&delete_col'; put '%end;'; put ')'; put 'as select a.*'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put ',&now as &tech_from &tech_from_fmt'; put ',&high_date as &tech_to &tech_to_fmt'; put '%end;'; put 'from work.bitemp0_append a /* STAGING records (mix of existing & new) */'; put ', work.bitemp0_base b /* BASE records (contains null values for new) */'; put 'where a.&md5_col=b.&md5_col /* took staging md5 across in left join */'; put 'and b.___TMP___NEW_FLG=1; /* NEW records also identified in bitemp0_base */'; put '/**'; put '* identify INSERTS. These are records with the same business key but'; put '* the bus_from and bus_to value are higher / lower (respectively)'; put '* such that the existing record needs to be SPLIT to surround the new'; put '* record.'; put '* eg: OLD RECORD from=1 to=10'; put '* NEW RECORD from=5 to=7'; put '*'; put '* APPENDED RECORDS:'; put '* - from=1 to=5'; put '* - from=5 to=7'; put '* - from=7 to=10'; put '*/'; put '/* inserts cannot happen with TXTEMPORAL */'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* IDENTIFY */'; put 'create table work.bitemp3_inserts as'; put 'select b.*'; put ',a.&bus_from as ___TMP___from'; put ',a.&bus_to as ___TMP___to'; put 'from work.bitemp0_append a'; put ',work.bitemp1_current b'; put 'where a.&bus_from > b.&bus_from'; put 'and a.&bus_to < b.&bus_to'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields may'; put 'not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '/* SPLIT */'; put 'data work.bitemp3a_inserts (drop=___TMP___from ___TMP___retain ___TMP___to) ;'; put 'set work.bitemp3_inserts;'; put 'by &pk &bus_from &bus_to &processed;'; put 'if first.&idx_val then do;'; put '___TMP___retain=&bus_to;'; put '&bus_to=___TMP___from;'; put 'output;'; put '&bus_to=___TMP___retain;'; put 'end;'; put 'if last.&idx_val then do;'; put '&bus_from=___TMP___to;'; put 'output;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* TX temporal load */'; put 'data work.bitemp3a_inserts;'; put 'set work.bitemp1_current;'; put 'stop;'; put 'run;'; put '%end;'; put '/* APPEND */'; put 'proc sql;'; put 'create view work.bitemp3a_view as'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put 'data bitemp3b_newbase;'; put 'set work.bitemp3a_inserts work.bitemp3a_view;'; put 'run;'; put '/** do not use! this converts short numerics into 8 bytes'; put 'proc sql;'; put 'create table work.bitemp3b_newbase as'; put 'select * from work.bitemp3a_inserts'; put 'union corr'; put 'select * from work.bitemp1_current'; put 'where &md5_col not in (select &md5_col from work.bitemp3a_inserts);'; put '*/'; put '/**'; put '* identify CHANGED records from staging.'; put '* Same business key with different temporal dates or md5 value'; put '* This table must be overlayed onto / into existing business history'; put '*/'; put 'proc sql;'; put 'create table work.bitemp4_updated as select distinct a.*'; put 'from work.bitemp0_append a'; put ',work.bitemp3b_newbase b'; put 'where 1=1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'and ( a.&md5_col ne b.&md5_col'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put 'OR (a.&bus_from ne b.&bus_from or a.&bus_to ne b.&bus_to)'; put '%end;'; put ')'; put ';'; put '/**'; put '* This section would have been one simple step with union all'; put '* but that converts short numerics into 8 bytes!'; put '* so, convoluted alternative to retain the same functionality.'; put '*/'; put '/* base records */'; put 'create view work.bitemp4_prep1 as'; put 'select ''BASE'' as ___TMP___'; put ',b.*'; put 'from work.bitemp4_updated a'; put ',work.bitemp3b_newbase b'; put 'where 1'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put ';'; put '/* updated records */'; put 'create view work.bitemp4_prep2 as'; put 'select ''STAG'' as ___TMP___ ,*'; put 'from work.bitemp4_updated;'; put '/* ensure we only keep columns that appear in both */'; put '%local bp1 bp2 bp3 bp4;'; put '%let bp1=%mf_getvarlist(bitemp4_prep1);'; put '%let bp2=%mf_getvarlist(bitemp4_prep2);'; put '%let bp3=%mf_wordsInStr1ButNotStr2(Str1=&bp1,Str2=&bp2);'; put '%let bp4=%mf_wordsInStr1ButNotStr2(Str1=&bp2,Str2=&bp1);'; put 'data work.bitemp4_prep3/view=bitemp4_prep3;'; put 'set bitemp4_prep1 bitemp4_prep2;'; put '%if %length(XX&bp3&bp4)>2 %then %do;'; put 'drop &bp3 &bp4 ;'; put '%end;'; put 'run;'; put '/* remove duplicates */'; put 'proc sql;'; put 'create table work.bitemp4a_allrecs as'; put 'select distinct *'; put 'from work.bitemp4_prep3'; put 'order by'; put '/* compress blanks and then insert commas (as the datetime fields'; put 'may not be in use) */'; put '%sysfunc(tranwrd(%sysfunc(compbl('; put '&pk &bus_from &bus_to &processed'; put ')),%str( ), %str(,)))'; put ';'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* this section aligns the business dates'; put '(eg for inserts or overlaps in the range) */'; put 'data work.bitemp4b_firstpass (drop=___TMP___cond ___TMP___from ___TMP___to );'; put 'set work.bitemp4a_allrecs;'; put 'by &pk &bus_from &bus_to &processed;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '___TMP___md5lag=lag(&md5_col);'; put '/* reset retained variables */'; put 'if first.&idx_val then do;'; put 'call missing (___TMP___cond, ___TMP___from, ___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry forward bus_from (and bus_to if higher)*/'; put 'if &md5_col=___TMP___md5lag then do;'; put '&bus_from=___TMP___from;'; put 'if &bus_to<___TMP___to then &bus_to=___TMP___to;'; put 'end;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 1'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 1'' then do;'; put '/* else ensure bus_from starts from prior record bus_to */'; put 'if &md5_col ne ___TMP___md5lag and &bus_from <= ___TMP___to'; put 'then &bus_from= ___TMP___to;'; put '/* new record may replace old record entirely */'; put 'if &bus_to <= &bus_from then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put 'run;'; put '%end;'; put '%else %do;'; put '/* keep staged records only */'; put 'data work.bitemp4b_firstpass;'; put 'set work.bitemp4a_allrecs;'; put 'if ___TMP___=''STAG'';'; put 'run;'; put '%end;'; put '/* next phase is to pass through in reverse - so set up the sort statement */'; put '%local byvar;'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let byvar=&byvar descending %scan(&pk,&idx_pk);'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL'; put '%then %let byvar=&byvar descending &bus_from descending &bus_to;'; put '/* if matching bus dates supplied, need to ensure we also have a sort'; put 'between BASE and STAGING tables */'; put '%let byvar=&byvar descending ___TMP___;'; put 'proc sort data=work.bitemp4b_firstpass out=work.bitemp4c_sort ;'; put 'by &byvar;'; put 'run;'; put '/**'; put '* Now (in reverse) pass back business start dates'; put '*/'; put 'data work.bitemp4d_secondpass;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put '&tech_from=&now;'; put '&tech_to=&high_date;'; put '%end;'; put 'set work.bitemp4c_sort ;'; put 'by &byvar;'; put 'retain ___TMP___cond ''Name of Condition'';'; put 'retain ___TMP___from ___TMP___to 0;'; put '%if &loadtype=BITEMPORAL or &loadtype=BUSTEMPORAL %then %do;'; put '/* put / _all_ /;*/'; put '___TMP___md5lag=lag(&md5_col);'; put 'if first.&idx_val then do;'; put '/* reset retained variables */'; put 'call missing (___TMP___cond,___TMP___from,___TMP___to,___TMP___md5lag);'; put 'end;'; put 'else do;'; put '/* if record is identical, carry back bus_to */'; put 'if &md5_col=___TMP___md5lag then &bus_to=___TMP___to;'; put 'end;'; put 'if ___TMP___=''STAG'' then do;'; put '/* need to carry forward the closing record */'; put '___TMP___cond=''Condition 2'';'; put 'end;'; put 'else if ___TMP___cond=''Condition 2'' then do;'; put '/* else ensure bus_to stops at subsequent record bus_from */'; put 'if &md5_col ne ___TMP___md5lag and &bus_to >= ___TMP___from'; put 'then &bus_to= ___TMP___from;'; put '/* new record may replace old record entirely */'; put 'if &bus_from >= &bus_to then delete;'; put 'if &bus_from=___TMP___from and &bus_to=___TMP___to then delete;'; put 'else call missing (___TMP___cond, ___TMP___from, ___TMP___to);'; put 'end;'; put '___TMP___from=&bus_from;'; put '___TMP___to=&bus_to;'; put '%end;'; put 'run;'; put '%put syscc (line600)=&syscc;'; put '/**'; put 'There may still be some records (eg old business history) which have not'; put 'changed.'; put 'Need to identify these and remove from the append so they are not updated'; put 'unnecessarily. This is done by generating a new md5 (which INCLUDES the'; put 'business key) and any matching / identical records are split out (from those'; put 'that need to be updated).'; put '*/'; put '%if &loadtype=BITEMPORAL %then %do;'; put '%let cat_string=catx(''|'' ,&bus_from,&bus_to);'; put 'data bitemp5a_lkp (keep=&md5_col);'; put 'set bitemp0_base;'; put '/* for BITEMPORAL we need to compare business dates also */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.);'; put 'run;'; put 'data bitemp5b_updates;'; put 'set bitemp4d_secondpass;'; put 'if _n_=1 then do;'; put 'dcl hash md5_lkp(dataset:''bitemp5a_lkp'');'; put 'md5_lkp.definekey("&md5_col");'; put 'md5_lkp.definedone();'; put 'end;'; put '/* drop old md5 col as will rebuild with new business dates */'; put '&md5_col=put(md5(&cat_string!!''|''!!&stripcols),$hex32.) ;'; put 'if md5_lkp.check()=0 then delete;'; put 'run;'; put 'proc sql;'; put '/* get min bus from as will update (close out) all records from this point'; put '(for that PK)*/'; put 'create table work.bitemp5d_subquery as'; put 'select &pk_comma, min(&bus_from)as &bus_from, max(&bus_to) as &bus_to'; put 'from work.bitemp5b_updates'; put 'group by &pk_comma;'; put '/* index has a huge efficiency impact on upcoming nested subquery */'; put 'create index index1 on work.bitemp5d_subquery(&pk_comma,&bus_from, &bus_to);'; put '%let lastds=work.bitemp5b_updates;'; put '%end;'; put '%else %if &loadtype=TXTEMPORAL or &loadtype=UPDATE %then %do;'; put 'proc sql;'; put 'create table work.bitemp5d_subquery as'; put 'select distinct &pk_comma'; put 'from bitemp4d_secondpass;'; put '%let lastds=work.bitemp4d_secondpass;'; put '%end;'; put '%else %let lastds=work.bitemp4d_secondpass;'; put '/* create single append table (an overlapped pre-sert may be classed as'; put 'both an update AND a new record). Also create temp views that may be'; put 'used for pre-load analysis. */'; put 'data &outds_mod;'; put 'set &lastds(drop=___TMP___: &md5_col);'; put 'run;'; put 'data bitemp6_allrecs / view=bitemp6_allrecs;'; put 'set &outds_mod /* UPDATED records */'; put '&outds_add /* NEW records */;'; put 'run;'; put 'proc sort data=work.bitemp6_allrecs'; put 'out=work.bitemp6_unique'; put 'noduprec'; put 'dupout=work.xx_BADBADBAD;'; put 'by _all_;'; put 'run;'; put '/* we have all our temp tables now so exit if this is all that is needed */'; put '%if &LOADTARGET ne YES %then %return;'; put '/* also exit if an err condition exists */'; put '%if &syscc>0 %then %do;'; put '%put syscc=&syscc;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%if "&outds_audit" ne "0" %then %do;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(Bitemporal transform / job aborted due to SYSCC=&SYSCC status)'; put ')'; put '/* final check - abort if a lock has appeared on the target or audit table */'; put '%mp_lockfilecheck(libds=&base_lib..&base_dsn)'; put '%if %mf_existds(&outds_audit) %then %do;'; put '%mp_lockfilecheck(libds=&outds_audit)'; put '%end;'; put '/**'; put '* STAGING TABLES PREPARED, ERR CONDITION TESTED FOR.. NOW TO LOAD!!'; put '*/'; put '/**'; put '* First, CLOSE OUT changed records (if not a REPLACE)'; put '* Note that SAS does not support ANSI standard for UPDATE with a join condition.'; put '* However - this can be worked around using a nested subquery..'; put '*/'; put 'data _null_;'; put 'putlog "&sysmacroname: CLOSEOUTS commencing";'; put 'run;'; put '%if %mf_getattrn(&lastds,NLOBS)=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: No closeouts needed";'; put 'run;'; put '%end;'; put '%else %if &engine_type=CAS %then %do;'; put '%mp_abort(iftrue= (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL)'; put ',mac=&sysmacroname in &_program'; put ',msg=%str(&loadtype not yet supported in CAS engine)'; put ')'; put '/* create temp table for deletions */'; put '%local delds;%let delds=%mf_getuniquename(prefix=DC);'; put 'data casuser.&delds;'; put 'set work.bitemp5d_subquery;'; put 'run;'; put '/* delete the records */'; put 'proc cas ;'; put 'table.deleteRows / table={'; put 'caslib="&base_lib",'; put 'name="&base_dsn",'; put 'where="1=1",'; put 'whereTable={caslib=''CASUSER'',name="&delds"}'; put '};'; put 'quit;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&delds;'; put '%end;'; put '%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)'; put '%then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: &loadtype operation using &engine_type engine";'; put 'run;'; put '%local flexinow;'; put 'proc sql;'; put '/* if OLEDB then create a temp table for efficiency */'; put '%local innertable;'; put '%if &engine_type=OLEDB %then %do;'; put '%let innertable=[##BITEMP_&base_dsn];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."##BITEMP_&base_dsn"n as'; put 'select * from work.bitemp5d_subquery;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put '%let innertable=%mf_getuniquename(prefix=XDCTEMP);'; put '%let top_table=&baselib_schema.&base_dsn;'; put '%let flexinow=timestamp &SQLNOW;'; put '/* make empty table first - must clone & drop extra cols'; put 'as autoload is bad */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;'; put '%if &engine_type=REDSHIFT %then %do;'; put 'exec (alter table &innertable alter sortkey none) by myAlias;'; put '%end;'; put '%let dropcols=%mf_wordsinstr1butnotstr2('; put 'str1=%upcase(%mf_getvarlist(&basecopy))'; put ',str2=%upcase(%mf_getvarlist(work.bitemp5d_subquery))'; put ');'; put '%if %length(&dropcols>0) %then %do idx_pk=1 %to %sysfunc(countw(&dropcols));'; put '%put &=dropcols;'; put '%let idx_val=%scan(&dropcols,&idx_pk);'; put 'exec(alter table &innertable drop column &idx_val;) by myAlias;;'; put '%end;'; put '/* create view to strip formats and avoid warns in log */'; put 'data work.vw_bitemp5d/view=work.vw_bitemp5d;'; put 'set work.bitemp5d_subquery;'; put 'format _all_;'; put 'run;'; put 'proc append base=&base_lib..&innertable ('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put 'data=work.vw_bitemp5d force nowarn;'; put 'run;'; put '/* open up a connection for pass through SQL */'; put '%dc_assignlib(WRITE,&base_lib,passthru=myAlias)'; put 'execute('; put '%end;'; put '%else %do;'; put '%let innertable=bitemp5d_subquery;'; put '%let top_table=&base_lib..&base_dsn;'; put '%let flexinow=&now;'; put '%end;'; put '%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then %do;'; put 'update &top_table set &tech_to=&flexinow'; put '%if %length(&processed)>0 %then %do;'; put ',&processed=&flexinow'; put '%end;'; put 'where &tech_from <= &flexinow and &flexinow < &tech_to and'; put '%end;'; put '%else %if &loadtype=UPDATE %then %do;'; put '/* changed records are deleted then re-appended when doing UPDATEs */'; put 'delete from &top_table where'; put '%end;'; put '%else %do;'; put '%put %str(ERR)OR: BUSTEMPORAL NOT YET SUPPORTED;'; put '%let syscc=5;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%goto end_of_macro;'; put '%end;'; put '/* perform join inside query as per'; put 'http://stackoverflow.com/questions/24629793/update-with-a-proc-sql */'; put 'exists( select 1 from &baselib_schema.&innertable where'; put '/* loop PK join */'; put '%do idx_pk=1 %to &pk_cnt;'; put '%let idx_val=%scan(&pk,&idx_pk);'; put '&base_dsn..&idx_val=&innertable..&idx_val and'; put '%end;'; put '%if &loadtype=BITEMPORAL %then %do;'; put '&base_dsn..&bus_from >= &innertable..&bus_from'; put 'and &base_dsn..&bus_to <= &innertable..&bus_to and'; put '%end;'; put '/* close the statement */'; put '1=1);'; put '%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES'; put '%then %do;'; put ') by myAlias;'; put 'execute (drop table &baselib_schema.&innertable) by myAlias;'; put '%end;'; put '%end;'; put 'quit;'; put 'data _null_;'; put 'putlog "&sysmacroname: Closeout complete";'; put 'run;'; put '/**'; put '* Append the new / updated records'; put '*/'; put '%if &engine_type=CAS %then %do;'; put '/* get varchar variables ready for casting */'; put '%local vcfmt vcrename vcassign vcdrop;'; put 'data _null_;'; put 'set work.bitemp_cols(where=(type=6)) end=last;'; put 'length vcrename vcassign vcdrop vcfmt $32767 rancol $32;'; put 'retain vcrename vcassign vcdrop vcfmt;'; put 'if _n_=1 then vcrename=''(rename=('';'; put 'rancol=resolve(''%mf_getuniquename()'');'; put 'vcfmt=trim(vcfmt)!!''length ''!!cats(name)!!'' varchar(*);'';'; put 'vcrename=trim(vcrename)!!'' ''!!cats(name,''='',rancol);'; put 'vcassign=cats(vcassign,name,''='',rancol,'';'');'; put 'vcdrop=cats(vcdrop,''drop ''!!rancol,'';'');'; put 'if last then do;'; put 'vcrename=cats(vcrename,''))'');'; put 'call symputx(''vcfmt'',vcfmt);'; put 'call symputx(''vcrename'',vcrename);'; put 'call symputx(''vcassign'',vcassign);'; put 'call symputx(''vcdrop'',vcdrop);'; put 'end;'; put 'run;'; put '/* prepare a temp cas table with varchars casted */'; put '%let tmp=%mf_getuniquename();'; put 'data casuser.&tmp ;'; put '&vcfmt'; put 'set work.bitemp6_unique &vcrename;'; put '&vcassign'; put '&vcdrop'; put 'run;'; put '/* load the table with varchars applied*/'; put 'data &base_lib..&base_dsn (append=yes )/sessref=dcsession ;'; put 'set casuser.&tmp;'; put 'run;'; put '/* drop temp table */'; put 'proc sql;'; put 'drop table CASUSER.&tmp;'; put '/* this code will not work as regular tables do not have varchars */'; put '/*'; put 'proc casutil;'; put 'load data=work.bitemp6_unique'; put 'outcaslib="&base_lib" casout="&base_dsn" append ;'; put 'quit;'; put '*/'; put '%end;'; put '%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;'; put 'proc append base=&base_lib..&base_dsn'; put '%if &engine_type=REDSHIFT %then %do;'; put '('; put '%do idx_pk=1 %to &redcnt;'; put '&&rednm&idx_pk = &&redval&idxpk'; put '%end;'; put ')'; put '%end;'; put 'data=bitemp6_unique force nowarn;'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc append base=&base_lib..&base_dsn data=bitemp6_unique force nowarn; run;'; put '%end;'; put '%mp_lockanytable(UNLOCK,lib=&base_lib,ds=&base_dsn,ref=&ETLSOURCE,'; put 'ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '/* final check on syscc */'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=&_program'; put ',msg=%str(!!Upload NOT successful!! Failed on actual update / append stage..)'; put ')'; put '%if &outds_audit ne 0 and &LOADTARGET=YES %then %do;'; put 'data work.vw_outds_orig /view=work.vw_outds_orig;'; put 'set work.bitemp0_base (drop=&md5_col);'; put 'where ___TMP___NEW_FLG=0;'; put 'drop ___TMP___NEW_FLG;'; put 'run;'; put '/* update the AUDIT table */'; put '%if %mf_existds(&outds_audit) %then %do;'; put 'options mprint;'; put '%mp_storediffs(&base_lib..&base_dsn'; put ',work.vw_outds_orig'; put ',&pk &bus_from'; put ',delds=&outds_del'; put ',modds=&outds_mod'; put ',appds=&outds_add'; put ',outds=work.mp_storediffs'; put ',processed_dttm=&now'; put ',loadref=%superq(etlsource)'; put ')'; put '/* exclude unchanged values in modified rows */'; put 'data work.mp_storediffs;'; put 'set work.mp_storediffs;'; put 'if MOVE_TYPE="M" and IS_PK=0 and IS_DIFF=0 then delete;'; put '* putlog load_ref= libref= dsn= key_hash= tgtvar_nm=;'; put 'run;'; put 'proc append base=&outds_audit data=work.mp_storediffs;'; put 'run;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&outds_audit,1,.)'; put ',ds=%scan(&outds_audit,2,.)'; put ',ref=&ETLSOURCE'; put ',ctl_ds=&dclib..mpe_lockanytable'; put ')'; put '%end;'; put '%end;'; put '%mp_abort(iftrue= (&syscc >4)'; put ',mac=bitemporal_dataloader'; put ',msg=%str(Problem in audit stage (&outds_audit))'; put ')'; put '%let user=%mf_getUser();'; put '/**'; put 'Notify as appropriate EMAILS DISABLED'; put '%sumo_alerts(ALERT_EVENT=UPDATE'; put ', ALERT_TARGET=&base_lib..&base_dsn'; put ', from_user= &user);'; put '*/'; put '/* monitor BiTemporal usage */'; put '%if &log=1 %then %do;'; put '%put syscc=&syscc;'; put '/* do not perform duration calc in pass through */'; put '%local dur;'; put 'data _null_;'; put 'now=symget(''now'');'; put 'dur=%sysfunc(datetime())-&now;'; put 'call symputx(''dur'',dur,''l'');'; put 'run;'; put 'proc sql;'; put 'insert into &dclib..mpe_dataloads'; put 'set libref=%upcase("&base_lib")'; put ',DSN=%upcase("&base_dsn")'; put ',ETLSOURCE="&ETLSOURCE"'; put ',LOADTYPE="&loadtype"'; put ',CHANGED_RECORDS=%mf_getattrn(&lastds,NLOBS)'; put ',NEW_RECORDS=%mf_getattrn(&outds_add,NLOBS)'; put ',DELETED_RECORDS=%mf_getattrn(&outds_del,NLOBS)'; put ',DURATION=&dur'; put ',MAC_VER="v&ver"'; put ',user_nm="&user"'; put ',PROCESSED_DTTM=&now;'; put 'quit;'; put '%put syscc=&syscc;'; put '%end;'; put '%end_of_macro:'; put '%mend bitemporal_dataloader;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mpe_refreshlibs(lib=0);'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data libs0;'; put 'set mm_getlibs;'; put 'by libraryref;'; put '%if &lib ne 0 %then %do;'; put 'where upcase(libraryref)="%upcase(&lib)";'; put '%end;'; put 'if "%mf_getplatform()"="SASMETA" then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings */'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sql;'; put 'create table libs1 as'; put 'select distinct libname'; put ',engine'; put ',path'; put ',level'; put ',sysname'; put ',sysvalue'; put 'from dictionary.libnames'; put 'order by libname, level,engine,path;'; put 'data libs2;'; put 'set libs1;'; put 'length tran $1024;'; put 'if missing(sysname) then sysname=''Missing'';'; put 'select(sysname);'; put 'when(''Access Permission'') tran=''Permissions'';'; put 'when(''Owner Name'') tran=''Owner'';'; put 'when(''Schema/Owner'') tran=''schema'';'; put 'otherwise tran=sysname;'; put 'end;'; put 'run;'; put 'proc transpose data=libs2 out=libs3;'; put 'by libname level engine path;'; put 'var sysvalue;'; put 'id tran;'; put 'run;'; put 'data libs4(rename=(libname=libref));'; put 'length paths $8192 perms owners schemas $500 permissions owner schema $1024;'; put 'if _n_=1 then call missing (of _all_);'; put 'set libs3;'; put 'by libname;'; put 'if engine=''V9'' then engine=''BASE'';'; put 'if first.libname then do;'; put 'retain paths perms owners schemas;'; put 'paths=''(''!!quote(trim(path));'; put 'perms=permissions;'; put 'owners=owner;'; put 'schemas=schema;'; put 'end;'; put 'else do;'; put 'paths=trim(paths)!!'' ''!!quote(trim(path));'; put 'perms=trim(perms)!!'',''!!trim(permissions);'; put 'owners=trim(owners)!!'',''!!trim(owner);'; put 'schemas=trim(schemas)!!'' ''!!trim(schema);'; put 'end;'; put 'if last.libname then do;'; put 'paths=trim(paths)!!'')'';'; put 'schemas=cats(schemas);'; put 'output;'; put 'end;'; put 'keep libname engine paths perms owners schemas;'; put 'run;'; put 'proc sql;'; put 'create table libs5 as'; put 'select a.libref'; put ',coalescec(b.engine,a.engine) as engine length=32'; put ',b.libraryname as libname'; put ',a.paths'; put ',a.perms'; put ',a.owners'; put ',a.schemas'; put ',b.libraryid as libid'; put 'from libs4 a'; put 'left join libs0 b'; put 'on upcase(a.libref)=upcase(b.libraryref)'; put 'where libref not in (''SASWORK'',''WORK'',''SASUSER'',''CASUSER'',''TEMP'',''STPSAMP'''; put ',''MAPSGFK'');'; put '%bitemporal_dataloader(base_lib=&dc_libref'; put ',base_dsn=MPE_DATACATALOG_LIBS'; put ',append_dsn=libs5'; put ',PK=LIBREF'; put ',etlsource=&_program'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&dc_libref'; put ')'; put '%mend mpe_refreshlibs;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mpe_refreshtables(lib,ds=#all);'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%local engine; %let engine=%mf_getengine(&lib);'; put '%local schema; %let schema=%mf_getschema(&lib);'; put '%put running &sysmacroname &lib(&engine &schema) for &ds;'; put 'proc sql;'; put 'create table cols as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib cols extraction)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc afer &lib indexes extraction)'; put ')'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.indexes as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table finalcols as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.indexes b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%local dsn;'; put '%if &ds = #ALL %then %let dsn=;'; put '%mp_getconstraints(lib=&lib.,ds=&dsn,outds=work.constraints)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table work.pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.constraints'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table work.sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.constraints(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.constraints(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table work.pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from work.sum a'; put 'left join work.constraints(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table work.pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data work.finalpks;'; put 'set pkdefault pk4sure pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table finalcols as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.cols a'; put 'left join work.finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* load columns */'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_vars'; put ',append_dsn=finalcols'; put ',PK=LIBREF DSN NAME'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF DSN'; put '%end;'; put ',dclib=&mpelib'; put ')'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.tabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data tabs2;'; put 'set finalcols;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table work.finaltabs as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.tabs a'; put 'left join work.tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datacatalog_tabs'; put ',append_dsn=finaltabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '/* prepare table frequently changing attributes */'; put 'proc sql;'; put '%if &engine=SQLSVR %then %do;'; put 'connect using &lib;'; put 'create table work.attrs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(schema_id) as ''schema'', name, create_date, modify_date'; put 'FROM sys.tables ;'; put ');'; put 'create table work.nobs as select * from connection to &lib('; put 'SELECT SCHEMA_NAME(A.schema_id) AS ''schema'''; put ',A.Name, AVG(B.rows) AS ''RowCount'''; put 'FROM sys.objects A'; put 'INNER JOIN sys.partitions B ON A.object_id = B.object_id'; put 'WHERE A.type = ''U'''; put 'GROUP BY A.schema_id, A.Name'; put ');'; put 'disconnect from &lib;'; put 'create table statustabs as select'; put 'a.libref'; put ',a.dsn'; put ',b.create_date as crdate'; put ',b.modify_date as modate'; put ',. as filesize'; put ',c.RowCount as nobs'; put 'from work.tabs a'; put 'left join work.attrs(where=(schema="&schema")) b'; put 'on upcase(a.dsn)=upcase(b.name)'; put 'left join work.nobs(where=(schema="&schema")) c'; put 'on upcase(a.dsn)=upcase(c.name);'; put '%end;'; put '%else %do;'; put 'create table statustabs as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',crdate'; put ',modate'; put ',filesize'; put ',nobs'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne #ALL %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%end;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_tabs'; put ',append_dsn=statustabs'; put ',PK=LIBREF DSN'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put '%if &ds ne #ALL %then %do;'; put ',close_vars=LIBREF'; put '%end;'; put ')'; put '%if &ds = #ALL %then %do;'; put 'proc sql;'; put 'create table statuslibs as select'; put 'libref'; put ',sum(filesize) as libsize'; put ',count(*) as table_cnt'; put 'from statustabs'; put 'group by 1;'; put '%bitemporal_dataloader(base_lib=&mpelib'; put ',base_dsn=mpe_datastatus_libs'; put ',append_dsn=statuslibs'; put ',PK=LIBREF'; put ',etlsource=&sysmacroname'; put ',loadtype=TXTEMPORAL'; put ',tech_from=TX_FROM'; put ',tech_to=TX_TO'; put ',dclib=&mpelib'; put ')'; put '%end;'; put '%mend mpe_refreshtables;'; put '%macro dc_refreshcatalog(libref);'; put '/* take current repository */'; put '%local repo repocnt xx;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'put (_all_)(=);'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'');'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put &sysmacroname #&libref#;'; put '%if #&libref# ne ## %then %do;'; put '%put &sysmacroname: assigning specific libref, &libref;'; put '%dc_assignlib(WRITE,&libref) /* write just in order to assign direct lib */'; put '%mpe_refreshlibs(lib=&libref)'; put '%mpe_refreshtables(&libref)'; put '%end;'; put '%else %do xx=1 %to &repocnt;'; put 'options metarepository=&&repo&xx;'; put '%mpe_refreshlibs()'; put '/* get libs to be ignored */'; put '%local ignorelist;'; put 'proc sql noprint;'; put 'select var_value into: ignorelist'; put 'from &mpelib..MPE_CONFIG'; put 'where var_scope=''DC_CATALOG'''; put 'and var_name="DC_IGNORELIBS"'; put 'and &dc_dttmtfmt. < TX_TO'; put 'and var_active=1;'; put '/* get all libs */'; put '%let libcnt=0;'; put 'data libraries;'; put 'set &mpelib..mpe_datacatalog_libs;'; put 'where &dc_dttmtfmt. le TX_TO;'; put 'if index("&ignorelist",''|''!!upcase(trim(libref))!!''|'')=0;'; put 'i+1;'; put 'call symputx(cats(''lib'',i),libref);'; put 'call symputx(''libcnt'',i);'; put 'run;'; put '%local i;'; put '%do i=1 %to &libcnt;'; put '%dc_assignlib(WRITE,&&lib&i)'; put '%mpe_refreshtables(&&lib&i)'; put '%end;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_refreshcatalog;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file refreshlibinfo.sas'; put '@brief Refresh the Data Catalog for a particular library'; put '@details When showing library info in the VIEW menu, the data is taken from'; put 'the Data Catalog tables. These may be empty or outdated, and so this service'; put 'allows end users to run a refresh of the data.'; put '

Service Inputs

'; put '
lib2refresh
'; put 'Should contain the libref to be refreshed.'; put '|libref:$8.|'; put '|---|'; put '|SOMELIB|'; put '

Service Outputs

'; put '
libinfo
'; put '|engine $|libname $|paths $|perms $|owners $|schemas $ |libid $|libsize $|table_cnt |'; put '|---|---|---|---|---|---|---|---|---|'; put '|V9|SOMELIB|"some/path"|rwxrwxr-x|sassrv|` `|` `|636MB|33|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_refreshcatalog.sas'; put '@li mp_abort.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%webout(FETCH)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem on startup)'; put ')'; put '%let libref=;'; put 'data _null_;'; put 'set work.lib2refresh;'; put 'call symputx(''libref'',libref);'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem with inputs - was lib2refresh object sent?)'; put ')'; put '%dc_assignlib(WRITE,&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc after lib assignment)'; put ')'; put '%dc_refreshcatalog(&libref)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',msg=%str(syscc=&syscc Problem when running the catalog refresh)'; put ')'; put '/* get libinfo */'; put 'proc sql;'; put 'create table work.libinfo as'; put 'select a.engine,'; put 'a.libname,'; put 'a.paths,'; put 'a.perms,'; put 'a.owners,'; put 'a.schemas,'; put 'a.libid,'; put 'b.libsize,'; put 'b.table_cnt'; put 'from &mpelib..mpe_datacatalog_libs(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'inner join &mpelib..mpe_datastatus_libs(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.libref=b.libref'; put 'where a.libref="&libref";'; put '%webout(OPEN)'; put '%webout(OBJ,libinfo)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=registeruser; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file registeruser.sas'; put '@brief Registers a new user in Data Controller'; put '@details New users are logged after accepting EULA terms.'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let userid=%mf_getuser();'; put '/* confirm the user is not registered */'; put '%let isRegistered=0;'; put 'proc sql noprint;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem accessing &mpelib..mpe_users table)'; put ')'; put '%mp_abort(iftrue= (&isregistered > 0)'; put ',mac=&_program..sas'; put ',msg=%str(User &userid is already registered on &mpelib..mpe_users!)'; put ')'; put 'data work.append;'; put 'if 0 then set &mpelib..mpe_users;'; put 'user_id=symget(''userid'');'; put 'registered_dt=today();'; put 'last_seen_dt=today();'; put 'run;'; put 'proc append base=&mpelib..mpe_users data=work.append;'; put '%let isRegistered=0;'; put 'proc sql noprint;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '%mp_abort(iftrue= (&syscc ne 0 or &isregistered ne 1)'; put ',mac=&_program..sas'; put ',msg=%str(Problem appending to &mpelib..mpe_users table)'; put ')'; put 'data work.return;'; put 'msg=''SUCCESS'';'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,return)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=startupservice; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file startupservice.sas'; put '@brief List the libraries and tables the mp-editor user can access'; put '@details If user is in a control group (&mpeadmins, configured in mpeinit.sas)'; put 'then they have access to all libraries / tables. Otherwise a join is made'; put 'to the &mpelib..mp_editor_access table.'; put 'This service is also callable from EUCs - just add EUCDLM= parameter.'; put 'EUCDLM values: TAB or CSV'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue on startup in startupService)'; put ')'; put '%let userid=%mf_getuser();'; put '%put userid is &userid;'; put '%mpe_getgroups(user=&userid,outds=groups)'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Issue with Groups syscc=&syscc for user &userid)'; put ')'; put '/* check if user is an admin */'; put '%let admin_check=0;'; put 'proc sql noprint;'; put 'select count(*) into: admin_check'; put 'from groups'; put 'where groupname="&mpeadmins";'; put '/* check if user is registered or not */'; put '%let isRegistered=0;'; put 'select count(*) into: isregistered'; put 'from &mpelib..mpe_users'; put 'where user_id="&userid";'; put '/* get number of registered users */'; put '%let registerCount=0;'; put 'select count(*) into: registercount'; put 'from &mpelib..mpe_users'; put 'where last_seen_dt>%sysfunc(today())-365;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem accessing &mpelib..mpe_users table)'; put ')'; put '%global dc_restrict_editrecord;'; put 'data work.globvars;'; put 'dclib="&mpelib";'; put 'sas9lineage_enabled=1;'; put 'isadmin=&admin_check;'; put 'isregistered=&isregistered;'; put 'registercount=®isterCount;'; put 'dc_admin_group="&mpeadmins";'; put '/* fetched from mpe_config in dc_getsettings */'; put 'licence_key="&dc_licence_key";'; put 'activation_key="&dc_activation_key";'; put 'dc_restrict_editrecord="&dc_restrict_editrecord";'; put 'run;'; put '%macro mstp_mpeditorstartup();'; put 'data _null_;'; put 'putlog "entering &sysmacroname";'; put 'run;'; put 'proc sql noprint;'; put '/* update last seen, if seen */'; put '%if &isregistered>0 %then %do;'; put 'update &mpelib..mpe_users'; put 'set last_seen_dt=%sysfunc(today())'; put 'where user_id="&userid";'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem updating &mpelib..mpe_users table)'; put ')'; put '%local all_cnt;'; put 'select count(*) into: all_cnt'; put 'from &mpelib..mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and ACCESS_LEVEL in (''EDIT'')'; put 'and libref=''*ALL*'''; put 'and SAS_GROUP in (select groupname from groups);'; put '%if &admin_check >0 or &all_cnt>0 %then %do;'; put 'create table sasDatasets as'; put 'select distinct libref, dsn'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. lt tx_to'; put 'order by 1;'; put '%end;'; put '%else %do;'; put 'create table sasDatasets as'; put 'select distinct a.libref,a.dsn'; put 'from &mpelib..mpe_tables a'; put 'left join &mpelib..mpe_security b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn'; put 'where &dc_dttmtfmt. lt a.tx_to'; put 'and &dc_dttmtfmt. lt b.tx_to'; put 'and b.ACCESS_LEVEL in (''EDIT'')'; put 'and b.SAS_GROUP in (select groupname from groups)'; put 'order by 1;'; put '%end;'; put '%mend mstp_mpeditorstartup;'; put '%mstp_mpeditorstartup()'; put 'create table saslibs as'; put 'select distinct libref'; put 'from &syslast;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(issue with security validation)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,sasDatasets)'; put '%webout(OBJ,saslibs)'; put '%webout(OBJ,globvars)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=validatefilter; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro removecolsfromwork(col);'; put '/* only an issue if debug mode enabled */'; put '%global _debug;'; put '%if &_debug ge 131 %then %do;'; put '%let col=%upcase(&col);'; put '%local memlist;'; put 'proc sql noprint;'; put 'select distinct memname into: memlist'; put 'separated by '' '''; put 'from dictionary.columns'; put 'where libname=''WORK'' and upcase(name)="&col";'; put '%if %mf_isblank(&memlist) %then %return;'; put '%mp_dropmembers(list=&memlist)'; put '%end;'; put '%mend removecolsfromwork;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_getvalue(libds,variable,filter=1'; put ')/*/STORE SOURCE*/;'; put '%if %mf_getattrn(&libds,NLOBS)>0 %then %do;'; put '%local dsid rc &variable;'; put '%let dsid=%sysfunc(open(&libds(where=(&filter))));'; put '%syscall set(dsid);'; put '%let rc = %sysfunc(fetch(&dsid));'; put '%let rc = %sysfunc(close(&dsid));'; put '%trim(&&&variable)'; put '%end;'; put '%mend mf_getvalue;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_islibds(libds'; put ')/*/STORE SOURCE*/;'; put '%local regex;'; put '%let regex=%sysfunc(prxparse(%str(/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i)));'; put '%sysfunc(prxmatch(®ex,&libds))'; put '%mend mf_islibds;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);'; put '%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)'; put ')'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put 'data _null_;'; put 'file &fref1;'; put 'infile &inref end=eof;'; put 'if _n_=1 then do;'; put 'put "proc sql;";'; put 'put "validate select * from &targetds";'; put 'put "where " ;'; put 'end;'; put 'input;'; put 'put _infile_;'; put 'putlog _infile_;'; put 'if eof then put ";quit;";'; put 'run;'; put '%inc &fref1;'; put 'data &outds;'; put 'if &sqlrc or &syscc or &syserr then do;'; put 'REASON_CD=''VALIDATION_ERR''!!''OR: ''!!'; put 'coalescec(symget(''SYSERRORTEXT''),symget(''SYSWARNINGTEXT''));'; put 'output;'; put 'end;'; put 'else stop;'; put 'run;'; put 'filename &fref1 clear;'; put '%if %mf_nobs(&outds)>0 %then %do;'; put '%if &abort=YES %then %do;'; put 'data _null_;'; put 'set &outds;'; put 'call symputx(''REASON_CD'',reason_cd,''l'');'; put 'stop;'; put 'run;'; put '%mp_abort('; put 'mac=&sysmacroname,'; put 'msg=%str(Filter validation issues.)'; put ')'; put '%end;'; put '%let syscc=1008;'; put '%end;'; put '%mend mp_filtervalidate;'; put '%macro mp_filtercheck(inds,targetds=,outds=work.badrecords,abort=YES);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put '/* Validate input column */'; put '%local vtype;'; put '%let vtype=%mf_getvartype(&inds,RAW_VALUE);'; put '%mp_abort(iftrue=(&abort=YES and &vtype ne C),'; put 'mac=&sysmacroname,'; put 'msg=%str(%str(ERR)OR: RAW_VALUE must be character)'; put ')'; put '%if &vtype ne C %then %do;'; put '%put &sysmacroname: RAW_VALUE must be character;'; put '%let syscc=42;'; put '%return;'; put '%end;'; put '/**'; put '* Sanitise the values based on valid value lists, then strip out'; put '* quotes, commas, periods and spaces.'; put '* Only numeric values should remain'; put '*/'; put '%local reason_cd nobs;'; put '%let nobs=0;'; put 'data &outds;'; put '/*length GROUP_LOGIC SUBGROUP_LOGIC $3 SUBGROUP_ID 8 VARIABLE_NM $32'; put 'OPERATOR_NM $10 RAW_VALUE $4000;*/'; put 'set &inds;'; put 'length reason_cd $4032 vtype $1 vnum dsid 8 tmp $4000;'; put 'drop tmp;'; put '/* quick check to ensure column exists */'; put 'if upcase(VARIABLE_NM) not in'; put '(%upcase(%mf_getvarlist(&targetds,dlm=%str(,),quote=SINGLE)))'; put 'then do;'; put 'REASON_CD="Variable "!!cats(variable_nm)!!" not in &targetds";'; put 'putlog REASON_CD= VARIABLE_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* need to open the dataset to get the column type */'; put 'dsid=open("&targetds","i");'; put 'if dsid>0 then do;'; put 'vnum=varnum(dsid,VARIABLE_NM);'; put 'if vnum<1 then do;'; put '/* should not happen as was also tested for above */'; put 'REASON_CD=cats("Variable (",VARIABLE_NM,") not found in &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'return;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put '/* closed list checks */'; put 'if GROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''GROUP_LOGIC should be AND/OR, not:''!!cats(GROUP_LOGIC);'; put 'putlog REASON_CD= GROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if SUBGROUP_LOGIC not in (''AND'',''OR'') then do;'; put 'REASON_CD=''SUBGROUP_LOGIC should be AND/OR, not:''!!cats(SUBGROUP_LOGIC);'; put 'putlog REASON_CD= SUBGROUP_LOGIC=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if mod(SUBGROUP_ID,1) ne 0 then do;'; put 'REASON_CD=''SUBGROUP_ID should be integer, not ''!!cats(subgroup_id);'; put 'putlog REASON_CD= SUBGROUP_ID=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'if OPERATOR_NM not in'; put '(''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'',''BETWEEN'',''IN'',''NOT IN'',''CONTAINS'')'; put 'then do;'; put 'REASON_CD=''Invalid OPERATOR_NM: ''!!cats(OPERATOR_NM);'; put 'putlog REASON_CD= OPERATOR_NM=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put '/* special missing logic */'; put 'if vtype=''N'''; put 'and OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'')'; put 'and cats(upcase(raw_value)) in ('; put '''.'',''.A'',''.B'',''.C'',''.D'',''.E'',''.F'',''.G'',''.H'',''.I'',''.J'',''.K'',''.L'',''.M'',''.N'''; put '''.N'',''.O'',''.P'',''.Q'',''.R'',''.S'',''.T'',''.U'',''.V'',''.W'',''.X'',''.Y'',''.Z'',''._'''; put ')'; put 'then do;'; put '/* valid numeric - exit data step loop */'; put 'return;'; put 'end;'; put '/* special logic */'; put 'if OPERATOR_NM in (''IN'',''NOT IN'',''BETWEEN'') then do;'; put 'if OPERATOR_NM=''BETWEEN'' then raw_value1=tranwrd(raw_value,'' AND '','','');'; put 'else do;'; put 'if substr(raw_value,1,1) ne ''('''; put 'or substr(cats(reverse(raw_value)),1,1) ne '')'''; put 'then do;'; put 'REASON_CD=''Missing start/end bracket in RAW_VALUE'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'else raw_value1=substr(raw_value,2,max(length(raw_value)-2,0));'; put 'end;'; put '/* we now have a comma seperated list of values */'; put 'if vtype=''N'' then do i=1 to countc(raw_value1, '','')+1;'; put 'tmp=scan(raw_value1,i,'','');'; put 'if cats(tmp) ne ''.'' and input(tmp, ?? 8.) eq . then do;'; put 'REASON_CD=''Non Numeric value provided'';'; put 'putlog REASON_CD= OPERATOR_NM= raw_value= raw_value1= ;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'return;'; put 'end;'; put 'end;'; put 'else raw_value1=raw_value;'; put '/* remove nested literals eg '''' */'; put 'raw_value1=tranwrd(raw_value1,"''''",'''');'; put '/* now match string literals (always single quotes) */'; put 'raw_value2=raw_value1;'; put 'regex = prxparse("s/(\'').*?(\'')//");'; put 'call prxchange(regex,-1,raw_value2);'; put '/* remove commas and periods*/'; put 'raw_value3=compress(raw_value2,'',.'');'; put '/* output records that contain values other than digits and spaces */'; put 'if notdigit(compress(raw_value3,'' ''))>0 then do;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog REASON_CD= raw_value= raw_value1= raw_value2= raw_value3=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'run;'; put 'data _null_;'; put 'set &outds end=last;'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue=(&abort=YES and &nobs>0),'; put 'mac=&sysmacroname,'; put 'msg=%str(Data issue: %superq(reason_cd))'; put ')'; put '%if &nobs>0 %then %do;'; put '%let syscc=1008;'; put '%return;'; put '%end;'; put '/**'; put '* syntax checking passed but it does not mean the filter is valid'; put '* for that we can run a proc sql validate query'; put '*/'; put '%local fref1;'; put '%let fref1=%mf_getuniquefileref();'; put '%mp_filtergenerate(&inds,outref=&fref1)'; put '/* this macro will also set syscc to 1008 if any issues found */'; put '%mp_filtervalidate(&fref1,&targetds,outds=&outds,abort=&abort)'; put '%mend mp_filtercheck;'; put '%macro mp_md5(cvars=,nvars=);'; put '%local i var sep;'; put 'put(md5('; put '%do i=1 %to %sysfunc(countw(&cvars));'; put '%let var=%scan(&cvars,&i,%str( ));'; put '&sep put(md5(trim(&var)),$hex32.)'; put '%let sep=!!;'; put '%end;'; put '%do i=1 %to %sysfunc(countw(&nvars));'; put '%let var=%scan(&nvars,&i,%str( ));'; put '/* multiply by 1 to strip precision errors (eg 0 != 0) */'; put '/* but ONLY if not missing, else will lose any special missing values */'; put '&sep put(md5(trim(put(ifn(missing(&var),&var,&var*1),binary64.))),$hex32.)'; put '%let sep=!!;'; put '%end;'; put '),$hex32.)'; put '%mend mp_md5;'; put '%macro mp_hashdataset('; put 'libds,'; put 'outds=work._data_,'; put 'salt=,'; put 'iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local keyvar /* roll up the md5 */'; put 'prevkeyvar /* retain prev record md5 */'; put 'lastvar /* last var in input ds */'; put 'cvars nvars;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '/* avoid naming conflict for hash key vars */'; put '%let keyvar=%mf_getuniquename();'; put '%let prevkeyvar=%mf_getuniquename();'; put '%let lastvar=%mf_getuniquename();'; put '%if %mf_getattrn(&libds,NLOBS)=0 %then %do;'; put 'data &outds;'; put 'length hashkey $32;'; put 'hashkey=put(md5("&salt"),$hex32.);'; put 'output;'; put 'stop;'; put 'run;'; put '%put &sysmacroname: Dataset &libds is empty, or is not a dataset;'; put '%put &sysmacroname: hashkey of &outds is based on salt (&salt) only;'; put '%end;'; put '%else %if %mf_getattrn(&libds,NLOBS)<0 %then %do;'; put '%put %str(ERR)OR: Dataset &libds is not a dataset;'; put '%end;'; put '%else %do;'; put 'data &outds(rename=(&keyvar=hashkey) keep=&keyvar)'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'length &prevkeyvar &keyvar $32;'; put 'retain &prevkeyvar;'; put 'if _n_=1 then &prevkeyvar=put(md5("&salt"),$hex32.);'; put 'set &libds end=&lastvar;'; put '/* hash should include previous row */'; put '&keyvar=%mp_md5('; put 'cvars=%mf_getvarlist(&libds,typefilter=C) &prevkeyvar,'; put 'nvars=%mf_getvarlist(&libds,typefilter=N)'; put ');'; put '&prevkeyvar=&keyvar;'; put 'if &lastvar then output;'; put 'run;'; put '%end;'; put '%mend mp_hashdataset;'; put '/** @cond */'; put '%macro mf_existvar(libds /* 2 part dataset name */'; put ', var /* variable name */'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid=0 %then %do;'; put '%put %sysfunc(sysmsg());'; put '0'; put '%end;'; put '%else %if %length(&var)=0 %then %do;'; put '0'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%sysfunc(varnum(&dsid,&var))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_existvar;'; put '/** @endcond */'; put '%macro mf_getquotedstr(IN_STR'; put ',DLM=%str(,)'; put ',QUOTE=S'; put ',indlm=%str( )'; put ')/*/STORE SOURCE*/;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if "e=S %then %let quote=%qsysfunc(byte(39));'; put '%else %if "e=D %then %let quote=%qsysfunc(byte(34));'; put '%else %if "e=N %then %let quote=;'; put '%local i item buffer;'; put '%let i=1;'; put '%do %while (%qscan(&IN_STR,&i,%str(&indlm)) ne %str() ) ;'; put '%let item=%qscan(&IN_STR,&i,%str(&indlm));'; put '%if %bquote("E) ne %then %let item="E%qtrim(&item)"E;'; put '%else %let item=%qtrim(&item);'; put '%if (&i = 1) %then %let buffer =%qtrim(&item);'; put '%else %let buffer =&buffer&DLM%qtrim(&item);'; put '%let i = %eval(&i+1);'; put '%end;'; put '%let buffer=%sysfunc(coalescec(%qtrim(&buffer),"E"E));'; put '&buffer'; put '%mend mf_getquotedstr;'; put '%macro mf_getattrc('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrc(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrc;'; put '%macro mp_lockfilecheck('; put 'libds'; put ')/*/STORE SOURCE*/;'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=checklock.sas'; put ',msg=Aborting with syscc=&syscc on entry.'; put ')'; put '%mp_abort(iftrue= ("&libds"="0")'; put ',mac=&sysmacroname'; put ',msg=%str(libds not provided)'; put ')'; put '%local msg lib ds;'; put '%let lib=%upcase(%scan(&libds,1,.));'; put '%let ds=%upcase(%scan(&libds,2,.));'; put '/* in DC, format catalogs are passed with a -FC suffix. No saslock here! */'; put '%if %scan(&libds,2,-)=FC %then %do;'; put '%put &sysmacroname: Format Catalog detected, no lockfile applied to &libds;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%let msg=options obs = 0. syserrortext=%superq(syserrortext);'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=checklock.sas'; put ',msg=%superq(msg)'; put ')'; put 'data _null_;'; put 'putlog "Checking engine & member type";'; put 'run;'; put '%local engine memtype;'; put '%let memtype=%mf_getattrc(&libds,MTYPE);'; put '%let engine=%mf_getattrc(&libds,ENGINE);'; put '%if &engine ne V9 and &engine ne BASE %then %do;'; put 'data _null_;'; put 'putlog "Lib &lib is not assigned using BASE engine - uses &engine instead";'; put 'putlog "SAS lock check will not be performed";'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &memtype ne DATA %then %do;'; put '%put NOTE: Cannot lock a VIEW!! Memtype=&memtype;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'putlog "Engine = &engine, memtype=&memtype";'; put 'putlog "Attempting lock statement";'; put 'run;'; put 'lock &libds;'; put '%local abortme;'; put '%let abortme=0;'; put '%if &syscc>0 or &SYSLCKRC ne 0 %then %do;'; put '%let msg=Unable to apply lock on &libds (SYSLCKRC=&SYSLCKRC syscc=&syscc);'; put '%put %str(ERR)OR: &sysmacroname: &msg;'; put '%let abortme=1;'; put '%end;'; put 'lock &libds clear;'; put '%mp_abort(iftrue= (&abortme=1)'; put ',mac=&sysmacroname'; put ',msg=%superq(msg)'; put ')'; put '%mend mp_lockfilecheck;'; put '%macro mp_lockanytable('; put 'action'; put ',lib= WORK'; put ',ds=0'; put ',ref='; put ',ctl_ds=0'; put ',loops=25'; put ',loop_secs=1'; put ');'; put 'data _null_;'; put 'if _n_=1 then putlog "&sysmacroname entry vars:";'; put 'set sashelp.vmacro;'; put 'where scope="&sysmacroname";'; put 'put name ''='' value;'; put 'run;'; put '%mp_abort(iftrue= ("&ds"="0" and &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(dataset was not provided)'; put ')'; put '%mp_abort(iftrue= (&ctl_ds=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Control dataset was not provided)'; put ')'; put '/* set up lib & mac vars */'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let action=%upcase(&action);'; put '%local user x trans msg abortme;'; put '%let user=%mf_getuser();'; put '%let abortme=0;'; put '%mp_abort(iftrue= (&action ne LOCK & &action ne UNLOCK & &action ne MAKETABLE)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid action (&action) provided)'; put ')'; put '/* if an err condition exists, exit before we even begin */'; put '%mp_abort(iftrue= (&syscc>0 and &action=LOCK)'; put ',mac=&sysmacroname'; put ',msg=%str(aborting due to syscc=&syscc on LOCK entry)'; put ')'; put '/* do not bother locking work tables (else may affect all WORK libraries) */'; put '%if (%upcase(&lib)=WORK or %str(&lib)=%str()) & &action ne MAKETABLE %then %do;'; put '%put NOTE: WORK libraries will not be registered in the locking system.;'; put '%return;'; put '%end;'; put '/* do not proceed if no observations can be processed */'; put '%mp_abort(iftrue= (%sysfunc(getoption(OBS))=0)'; put ',mac=&sysmacroname'; put ',msg=%str(cannot continue when options obs = 0)'; put ')'; put '%if &ACTION=LOCK %then %do;'; put '/* abort if a SAS lock is already in place, or cannot be applied */'; put '%mp_lockfilecheck(&lib..&ds)'; put '/* next, check there is a record for this table */'; put '%local record_exists_check;'; put 'proc sql noprint;'; put 'select count(*) into: record_exists_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &record_exists_check=0 %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: adding record to lock table..";'; put 'run;'; put 'data ;'; put 'if 0 then set &ctl_ds;'; put 'LOCK_LIB ="&lib";'; put 'LOCK_DS="&ds";'; put 'LOCK_STATUS_CD=''LOCKED'';'; put 'LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put 'LOCK_USER_NM="&user";'; put 'LOCK_PID="&sysjobid";'; put 'LOCK_REF="&ref";'; put 'output;stop;'; put 'run;'; put '%let trans=&syslast;'; put 'proc append base=&ctl_ds data=&trans;'; put 'run;'; put '%end;'; put '/* if record does exist, perform lock attempts */'; put '%else %do x=1 %to &loops;'; put 'data _null_;'; put 'putlog "&sysmacroname: attempting lock (iteration &x) "@;'; put 'putlog "at %sysfunc(datetime(),datetime19.) ..";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''LOCKED'''; put ', LOCK_START_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '/**'; put '* NOTE - occasionally SQL server will return an err code (deadlocked'; put '* transaction). If so, ignore it, keep calm, and carry on..'; put '*/'; put '%if &syscc>0 %then %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Update failed. "@;'; put 'putlog "Resetting err conditions and re-attempting.";'; put 'putlog "NOTE- syscc=&syscc syserr=&syserr sqlrc=&sqlrc";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%let syscc=0;'; put '%let sqlrc=0;'; put '%end;'; put '/* now check if the record was successfully updated */'; put '%local success_check;'; put 'proc sql noprint;'; put 'select count(*) into: success_check from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds"'; put 'and LOCK_PID="&sysjobid" and LOCK_STATUS_CD=''LOCKED'';'; put 'quit;'; put '%if &success_check=0 %then %do;'; put '%if &x < &loops %then %do;'; put '/* pause before next check */'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: table locked, waiting "@;'; put 'putlog "%sysfunc(sleep(&loop_secs)) seconds.. ";'; put 'putlog "NOTE- (iteration &x of &loops)";'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%end;'; put '%else %do;'; put '%let msg=Unable to lock &lib..&ds via &ctl_ds after &loops attempts.\n'; put 'Please ask your administrator to investigate!;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'putlog "NOTE- &sysmacroname: Table &lib..&ds locked at "@;'; put 'putlog " %sysfunc(datetime(),datetime19.) (iteration &x)"@;'; put 'putlog ''NOTE-'' / ''NOTE-'';'; put 'run;'; put '%if &syscc>0 %then %do;'; put '%put setting syscc(&syscc) back to 0;'; put '%let syscc=0;'; put '%end;'; put '%let x=&loops; /* no more iterations needed */'; put '%end;'; put '%end;'; put '%end;'; put '%else %if &ACTION=UNLOCK %then %do;'; put '%local status cnt;'; put '%let cnt=0;'; put 'proc sql noprint;'; put 'select count(*) into: cnt from &ctl_ds where LOCK_LIB ="&lib" & LOCK_DS="&ds";'; put '%if &cnt=0 %then %do;'; put '%put %str(WAR)NING: &lib..&ds was not previously locked in &ctl_ds!;'; put '%end;'; put '%else %do;'; put 'select LOCK_STATUS_CD into: status from &ctl_ds'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%if &syscc>0 %then %put syscc=&syscc sqlrc=&sqlrc;'; put '%if &status=LOCKED %then %do;'; put 'data _null_;'; put 'putlog "&sysmacroname: unlocking &lib..&ds:";'; put 'run;'; put 'proc sql;'; put 'update &ctl_ds'; put 'set LOCK_STATUS_CD=''UNLOCKED'''; put ', LOCK_END_DTTM="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put ', LOCK_USER_NM="&user"'; put ', LOCK_PID="&sysjobid"'; put ', LOCK_REF="&ref"'; put 'where LOCK_LIB ="&lib" and LOCK_DS="&ds";'; put 'quit;'; put '%end;'; put '%else %if &status=UNLOCKED %then %do;'; put '%put %str(WAR)NING: &lib..&ds is already unlocked!;'; put '%end;'; put '%else %do;'; put '%put NOTE: Unrecognised STATUS_CD (&status) in &ctl_ds;'; put '%let abortme=1;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '%let msg=lock_anytable given unsupported action (&action);'; put '%let abortme=1;'; put '%end;'; put '/* catch errs - mp_abort must be called outside of a logic block */'; put '%mp_abort(iftrue=(&abortme=1),'; put 'msg=%superq(msg),'; put 'mac=&sysmacroname'; put ')'; put '%exit_macro:'; put 'data _null_;'; put 'put "&sysmacroname: Exit vars: action=&action lib=&lib ds=&ds";'; put 'put " syscc=&syscc sqlrc=&sqlrc syserr=&syserr";'; put 'run;'; put '%mend mp_lockanytable;'; put '%macro mp_retainedkey('; put 'base_lib=WORK'; put ',base_dsn=BASETABLE'; put ',append_lib=WORK'; put ',append_dsn=APPENDTABLE'; put ',retained_key=DEFAULT_RK'; put ',business_key= PK1 PK2'; put ',check_uniqueness=NO'; put ',maxkeytable=0'; put ',locktable=0'; put ',outds=WORK.APPEND'; put ',filter_str='; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local base_libds app_libds key_field check maxkey idx_pk newkey_cnt iserr'; put 'msg x tempds1 tempds2 comma_pk appnobs checknobs dropvar tempvar idx_val;'; put '%let base_libds=%upcase(&base_lib..&base_dsn);'; put '%let app_libds=%upcase(&append_lib..&append_dsn);'; put '%let tempds1=%mf_getuniquename();'; put '%let tempds2=%mf_getuniquename();'; put '%let comma_pk=%mf_getquotedstr(in_str=%str(&business_key),dlm=%str(,),quote=);'; put '%let outds=%sysfunc(ifc(%index(&outds,.)=0,work.&outds,&outds));'; put '/* validation checks */'; put '%let iserr=0;'; put '%if &syscc>0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(SYSCC=&syscc on macro entry);'; put '%end;'; put '%else %if %sysfunc(exist(&base_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Base LIBDS (&base_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if %sysfunc(exist(&app_libds))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Append LIBDS (&app_libds) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&maxkeytable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Maxkeytable (&maxkeytable) expected but NOT FOUND);'; put '%end;'; put '%else %if &maxkeytable ne 0 and %sysfunc(exist(&locktable))=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Locktable (&locktable) expected but NOT FOUND);'; put '%end;'; put '%else %if %length(&business_key)=0 %then %do;'; put '%let iserr=1;'; put '%let msg=%str(Business key (&business_key) expected but NOT FOUND);'; put '%end;'; put '%do x=1 %to %sysfunc(countw(&business_key));'; put '/* check business key values exist */'; put '%let key_field=%scan(&business_key,&x,%str( ));'; put '%if not %mf_existvar(&app_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &app_libds!;'; put '%goto err;'; put '%end;'; put '%else %if not %mf_existvar(&base_libds,&key_field) %then %do;'; put '%let iserr=1;'; put '%let msg=Business key (&key_field) not found on &base_libds!;'; put '%goto err;'; put '%end;'; put '%end;'; put '%err:'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put 'proc sql noprint;'; put 'select sum(max(&retained_key),0) into: maxkey from &base_libds;'; put '/**'; put '* get base table RK and bus field values for lookup'; put '*/'; put 'proc sql noprint;'; put 'create table &tempds1 as'; put 'select distinct &comma_pk,&retained_key'; put 'from &base_libds &filter_str'; put 'order by &comma_pk,&retained_key;'; put '%if &check_uniqueness=YES %then %do;'; put 'select count(*) into:checknobs'; put 'from (select distinct &comma_pk from &app_libds);'; put 'select count(*) into: appnobs from &app_libds; /* might be view */'; put '%if &checknobs ne &appnobs %then %do;'; put '%let msg=Source table &app_libds is not unique on (&business_key);'; put '%let iserr=1;'; put '%end;'; put '%end;'; put '%if &iserr=1 %then %do;'; put '/* err case so first perform an unlock of the base table before exiting */'; put '%mp_lockanytable('; put 'UNLOCK,lib=&base_lib,ds=&base_dsn,ref=%superq(msg),ctl_ds=&locktable'; put ')'; put '%end;'; put '%mp_abort(iftrue= (&iserr=1),mac=mp_retainedkey,msg=%superq(msg))'; put '%if %mf_existvar(&app_libds,&retained_key)'; put '%then %let dropvar=(drop=&retained_key);'; put '/* prepare interim table with retained key populated for matching keys */'; put 'proc sql noprint;'; put 'create table &tempds2 as'; put 'select b.&retained_key, a.*'; put 'from &app_libds &dropvar a'; put 'left join &tempds1 b'; put 'on 1'; put '%do idx_pk=1 %to %sysfunc(countw(&business_key));'; put '%let idx_val=%scan(&business_key,&idx_pk);'; put 'and a.&idx_val=b.&idx_val'; put '%end;'; put 'order by &retained_key;'; put '/* identify the number of entries without retained keys (new records) */'; put 'select count(*) into: newkey_cnt'; put 'from &tempds2'; put 'where missing(&retained_key);'; put 'quit;'; put '/**'; put '* Update maxkey table if link provided'; put '*/'; put '%if &maxkeytable ne 0 %then %do;'; put 'proc sql noprint;'; put 'select count(*) into: check from &maxkeytable'; put 'where upcase(keytable)="&base_libds";'; put '%mp_lockanytable(LOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with mp_retainedkey'; put ',ctl_ds=&locktable'; put ')'; put 'proc sql;'; put '%if &check=0 %then %do;'; put 'insert into &maxkeytable'; put 'set keytable="&base_libds"'; put ',keycolumn="&retained_key"'; put ',max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;'; put '%end;'; put '%else %do;'; put 'update &maxkeytable'; put 'set max_key=%eval(&maxkey+&newkey_cnt)'; put ',processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt'; put 'where keytable="&base_libds";'; put '%end;'; put '%mp_lockanytable(UNLOCK'; put ',lib=%scan(&maxkeytable,1,.)'; put ',ds=%scan(&maxkeytable,2,.)'; put ',ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)'; put ',ctl_ds=&locktable'; put ')'; put '%end;'; put '/* fill in the missing retained key values */'; put '%let tempvar=%mf_getuniquename();'; put 'data &outds(drop=&tempvar);'; put 'retain &tempvar %eval(&maxkey+1);'; put 'set &tempds2;'; put 'if &retained_key =. then &retained_key=&tempvar;'; put '&tempvar=&tempvar+1;'; put 'run;'; put '%mend mp_retainedkey;'; put '%macro mp_filterstore(libds=,'; put 'queryds=work.filterquery,'; put 'filter_summary=PERM.FILTER_SUMMARY,'; put 'filter_detail=PERM.FILTER_DETAIL,'; put 'lock_table=PERM.LOCK_TABLE,'; put 'maxkeytable=PERM.MAXKEYTABLE,'; put 'outresult=work.result,'; put 'outquery=work.query,'; put 'mdebug=1'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%local ds0 ds1 ds2 ds3 ds4 filter_hash orig_libds;'; put '%let libds=%upcase(&libds);'; put '%let orig_libds=&libds;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc on macro entry)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&filter_summary)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid filter_summary value: &filter_summary)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&filter_detail)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid filter_detail value: &filter_detail)'; put ')'; put '%mp_abort(iftrue= (%mf_islibds(&lock_table)=0)'; put ',mac=mp_filterstore'; put ',msg=%str(Invalid lock_table value: &lock_table)'; put ')'; put '/**'; put '* validate query'; put '* use format catalog export, if a format'; put '*/'; put '%if "%substr(&libds,%length(&libds)-2,3)"="-FC" %then %do;'; put '%let libds=%scan(&libds,1,-); /* chop off -FC extension */'; put '%let ds0=%mf_getuniquename(prefix=fmtds_);'; put '%let libds=&ds0;'; put '/*'; put 'There is no need to export the entire format catalog here - the validations'; put 'are done against the data model, not the data values. So we can simply'; put 'hardcode the structure based on the cntlout dataset.'; put '*/'; put '%mddl_sas_cntlout(libds=&ds0)'; put '%end;'; put '%mp_filtercheck(&queryds,targetds=&libds,abort=YES)'; put '/* hash the result */'; put '%let ds1=%mf_getuniquename(prefix=hashds);'; put '%mp_hashdataset(&queryds,outds=&ds1,salt=&orig_libds)'; put '%let filter_hash=%upcase(%mf_getvalue(&ds1,hashkey));'; put '%if &mdebug=1 %then %do;'; put 'data _null_;'; put 'putlog "filter_hash=&filter_hash";'; put 'set &ds1;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '/* check if data already exists for this hash */'; put 'data &outresult;'; put 'set &filter_summary;'; put 'where filter_hash="&filter_hash";'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc after hash check)'; put ')'; put '%mp_abort(iftrue= ("&filter_hash "=" ")'; put ',mac=mp_filterstore'; put ',msg=%str(problem with filter_hash generation)'; put ')'; put '%if %mf_nobs(&outresult)=0 %then %do;'; put '/* first update summary table */'; put '%let ds3=%mf_getuniquename(prefix=filtersum);'; put 'data work.&ds3;'; put 'if 0 then set &filter_summary;'; put 'filter_table="&orig_libds";'; put 'filter_hash="&filter_hash";'; put 'PROCESSED_DTTM=%sysfunc(datetime());'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=%scan(&filter_summary,1,.)'; put ',ds=%scan(&filter_summary,2,.)'; put ',ref=MP_FILTERSTORE summary update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%let ds4=%mf_getuniquename(prefix=filtersumappend);'; put '%mp_retainedkey('; put 'base_lib=%scan(&filter_summary,1,.)'; put ',base_dsn=%scan(&filter_summary,2,.)'; put ',append_lib=work'; put ',append_dsn=&ds3'; put ',retained_key=filter_rk'; put ',business_key=filter_hash'; put ',maxkeytable=&maxkeytable'; put ',locktable=&lock_table'; put ',outds=work.&ds4'; put ')'; put 'proc append base=&filter_summary data=&ds4;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=%scan(&filter_summary,1,.)'; put ',ds=%scan(&filter_summary,2,.)'; put ',ref=MP_FILTERSTORE summary update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%if &syscc ne 0 %then %do;'; put 'data _null_;'; put 'set &ds4;'; put 'putlog (_all_)(=);'; put 'run;'; put '%goto err;'; put '%end;'; put 'data &outresult;'; put 'set &filter_summary;'; put 'where filter_hash="&filter_hash";'; put 'run;'; put '/* Next, update detail table */'; put '%let ds2=%mf_getuniquename(prefix=filterdetail);'; put 'data &ds2;'; put 'if 0 then set &filter_detail;'; put 'set &queryds;'; put 'format filter_hash $hex32. filter_line 8.;'; put 'filter_hash="&filter_hash";'; put 'filter_line=_n_;'; put 'PROCESSED_DTTM=%sysfunc(datetime());'; put 'run;'; put '%mp_lockanytable(LOCK,'; put 'lib=%scan(&filter_detail,1,.)'; put ',ds=%scan(&filter_detail,2,.)'; put ',ref=MP_FILTERSTORE update - &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put 'proc append base=&filter_detail data=&ds2;'; put 'run;'; put '%mp_lockanytable(UNLOCK,'; put 'lib=%scan(&filter_detail,1,.)'; put ',ds=%scan(&filter_detail,2,.)'; put ',ref=MP_FILTERSTORE detail update &filter_hash'; put ',ctl_ds=&lock_table'; put ')'; put '%if &syscc ne 0 %then %do;'; put 'data _null_;'; put 'set &ds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%goto err;'; put '%end;'; put '%end;'; put 'proc sort data=&filter_detail(where=(filter_hash="&filter_hash")) out=&outquery;'; put 'by filter_line;'; put 'run;'; put '%err:'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=mp_filterstore'; put ',msg=%str(syscc=&syscc on macro exit)'; put ')'; put '%mend mp_filterstore;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Validates a filter clause before it gets hashified, returns the RK'; put '@details Used to generate a FILTER_RK from an input query dataset.'; put 'Raw values are stored in dc.mpe_filtersource and the meta values are stored'; put 'in dc.mpe_filteranytable'; put '

Service Inputs

'; put '
IWANT
'; put '|FILTER_TABLE:$41.|'; put '|---|'; put '|DC258467.MPE_X_TEST|'; put '
FILTERQUERY
'; put '|GROUP_LOGIC:$3|SUBGROUP_LOGIC:$3|SUBGROUP_ID:8.|VARIABLE_NM:$32|OPERATOR_NM:$10|RAW_VALUE:$32767|'; put '|---|---|---|---|---|---|'; put '|AND|AND|1|SOME_BESTNUM|>|1|'; put '|AND|AND|1|SOME_TIME|=|77333|'; put '

Service Outputs

'; put '
result
'; put '@li FILTER_HASH'; put '@li FILTER_RK'; put '@li FILTER_TABLE'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getvalue.sas'; put '@li mp_filterstore.sas'; put '@li removecolsfromwork.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let ds=%upcase(%mf_getvalue(work.iwant,filter_table));'; put '%dc_assignlib(WRITE,%scan(&ds,1,.))'; put '%mp_filterstore('; put 'libds=&ds,'; put 'queryds=work.filterquery,'; put 'filter_summary=&dc_libref..mpe_filteranytable,'; put 'filter_detail=&dc_libref..mpe_filtersource,'; put 'lock_table=&dc_libref..mpe_lockanytable,'; put 'maxkeytable=&dc_libref..mpe_maxkeyvalues,'; put 'outresult=work.result,'; put 'outquery=work.query, /* not used */'; put 'mdebug=1'; put ')'; put '%removecolsfromwork(___TMP___MD5)'; put 'proc sql;'; put 'alter table work.result drop PROCESSED_DTTM;'; put '%webout(OPEN)'; put '%webout(OBJ,result)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewdata; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mpe_columnlevelsecurity(tgtlib,tgtds,inds'; put ',mode=VIEW'; put ',groupds=work.groups'; put ',clsds=work.clsview'; put ',outds=CLSVIEW'; put ',outmeta=work.cls_rules'; put ');'; put '%local col_list is_admin;'; put '/* filter for the appropriate rules */'; put 'proc sql;'; put 'create table &outmeta as'; put 'select CLS_VARIABLE_NM,'; put 'min(case when CLS_HIDE=1 then 1 else 0 end) as CLS_HIDE'; put 'from &clsds'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("&mode",''ALL'')'; put 'and CLS_ACTIVE=1'; put '%if &mode=VIEW %then %do;'; put 'and CLS_HIDE ne 1'; put '%end;'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from &groupds)'; put 'and CLS_LIBREF="%upcase(&tgtlib)"'; put 'and CLS_TABLE="%upcase(&tgtds)"'; put 'group by CLS_VARIABLE_NM;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from &groupds where groupname="&MPEADMINS";'; put '%put &sysmacroname: &=is_admin;'; put '%if %mf_nobs(work.cls_rules) = 0 or &is_admin>0 %then %do;'; put '%put &sysmacroname: no CLS rules to apply;'; put '%put &=is_admin;'; put '/* copy using append for speed */'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '/* ensure CLS_RULES is empty in case of admin */'; put 'data &outmeta;'; put 'set &outmeta;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %if &mode=VIEW %then %do;'; put '/* just send back the relevant columns */'; put '%let col_list=0;'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=0;'; put '%if &col_list=0 %then %do;'; put '/*'; put 'We have columns that are set to CLS_HIDE=1 but we do not have any to'; put 'explicitly show. Therefore we assume all columns are to be shown except'; put 'those that are explicitly hidden.'; put '*/'; put 'proc sql noprint;'; put 'select CLS_VARIABLE_NM into: col_list separated by '' '' from &outmeta'; put 'where CLS_HIDE=1;'; put 'data &outds;'; put 'set &inds;'; put 'drop &col_list;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds;'; put 'set &inds;'; put 'keep &col_list;'; put 'run;'; put '%end;'; put '%end;'; put '%else %if &mode=EDIT %then %do;'; put '/*'; put 'In this case we pass all columns and the frontend will filter out the'; put 'ones that are not allowed to be edited.'; put '*/'; put 'data &outds;'; put 'set &inds;'; put 'stop;'; put 'run;'; put 'proc append base=&outds data=&inds;'; put 'run;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: invalid mode - &mode!;'; put '%abort;'; put '%end;'; put '%mend mpe_columnlevelsecurity;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mf_getattrn('; put 'libds'; put ',attr'; put ')/*/STORE SOURCE*/;'; put '%local dsid rc;'; put '%let dsid=%sysfunc(open(&libds,is));'; put '%if &dsid = 0 %then %do;'; put '%put %str(WARN)ING: Cannot open %trim(&libds), system message below;'; put '%put %sysfunc(sysmsg());'; put '-1'; put '%end;'; put '%else %do;'; put '%sysfunc(attrn(&dsid,&attr))'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%mend mf_getattrn;'; put '%macro mf_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mp_filtergenerate(inds,outref=filter);'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc - on macro entry)'; put ')'; put 'filename &outref temp;'; put '%if %mf_nobs(&inds)=0 %then %do;'; put '/* ensure we have a default filter */'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%else %do;'; put 'proc sort data=&inds;'; put 'by SUBGROUP_ID;'; put 'run;'; put 'data _null_;'; put 'file &outref lrecl=32800;'; put 'set &inds end=last;'; put 'by SUBGROUP_ID;'; put 'if _n_=1 then put ''(('';'; put 'else if first.SUBGROUP_ID then put +1 GROUP_LOGIC ''('';'; put 'else put +2 SUBGROUP_LOGIC;'; put 'put +4 VARIABLE_NM OPERATOR_NM RAW_VALUE;'; put 'if last.SUBGROUP_ID then put '')''@;'; put 'if last then put '')'';'; put 'run;'; put '%end;'; put '%mend mp_filtergenerate;'; put '%macro mpe_filtermaster(mode,libds,'; put 'dclib=,'; put 'filter_rk=-1,'; put 'outref=0,'; put 'outds=work.query'; put ');'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%let mode=%upcase(&mode);'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= ('; put '&mode ne EDIT and &mode ne VIEW and &mode ne DLOAD and &mode ne ULOAD'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid MODE: &mode)'; put ')'; put '%mp_abort(iftrue= (&outref = 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Please provide a fileref!)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'filename &outref temp;'; put '/* ensure outputs exist */'; put 'data _null_;'; put 'file &outref;'; put 'put '' '';'; put 'run;'; put 'data &outds;'; put 'set &dclib..mpe_filtersource;'; put 'stop;'; put 'run;'; put '/**'; put '* Deal with FILTER_RK first'; put '*/'; put '%if &filter_rk gt 0 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''( ''@@;'; put 'set &dclib..mpe_filteranytable(where=(filter_rk=&filter_rk));'; put 'call symputx(''filter_hash'',filter_hash,''l'');'; put 'run;'; put 'proc sort data=&dclib..mpe_filtersource(where=(filter_hash="&filter_hash"))'; put 'out=&outds(drop=filter_hash filter_line processed_dttm);'; put 'by filter_line;'; put 'run;'; put '%mp_filtergenerate(&outds,outref=&outref)'; put '%end;'; put '/* Now filter for current records if the MODE is EDIT or DLOAD */'; put '%local varfrom varto;'; put '%let varfrom=0;'; put 'proc sql;'; put 'select coalescec(var_txfrom,''0''), var_txto into: varfrom,:varto'; put 'from &dclib..MPE_TABLES'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and libref="%scan(&libds,1,.)" and dsn="%scan(&libds,2,.)";'; put '%put &=varfrom;'; put '%put &=varto;'; put '/**'; put '* Check if the date variables were mentioned in the query'; put '* This is a trigger for serving a historical view instead of current'; put '* we skip this part when checking an ULOAD as there are no date vars'; put '*/'; put '%if &varfrom ne 0 and (&mode=EDIT or &mode=DLOAD) %then %do;'; put '%local validityvars;'; put 'proc sql;'; put 'select count(*) into: validityvars'; put 'from &outds'; put 'where variable_nm in ("&varfrom","&varto");'; put '%if &validityvars=0 %then %do;'; put 'data _null_;'; put 'file &outref mod;'; put 'length filter_text $32767;'; put 'varfrom=symget(''varfrom'');'; put 'varto=symget(''varto'');'; put 'filter_text=catx('' '','; put '''("%sysfunc(datetime(),'',"%mf_fmtdttm()",'')"dt <'',varto,'')'''; put ');'; put 'if &filter_rk > 0 then put ''AND '' filter_text;'; put 'else put filter_text;'; put 'run;'; put '%end;'; put '%end;'; put '/**'; put '* Now do Row Level Security based on the MPE_ROW_LEVEL_SECURITY table'; put '*/'; put '/* first determine users group membership */'; put '%mpe_getgroups(user=%mf_getuser(),outds=work.groups)'; put '%local admin_check;'; put 'proc sql;'; put 'select count(*) into: admin_check'; put 'from work.groups'; put 'where groupname="&mpeadmins";'; put '%put &sysmacroname: &=admin_check &=mpeadmins;'; put '%if &admin_check=0 %then %do;'; put '%local scopeval;'; put '%if &mode=DLOAD %then %let scopeval=VIEW;'; put '%if &mode=ULOAD %then %let scopeval=EDIT;'; put '%else %let scopeval=&mode;'; put '/* extract relevant rows */'; put '%local rlsds;'; put '%let rlsds=%mf_getuniquename();'; put 'proc sql;'; put 'create table work.&rlsds as'; put 'select rls_group,'; put 'rls_group_logic as group_logic,'; put 'rls_subgroup_logic as subgroup_logic,'; put 'rls_subgroup_id as subgroup_id,'; put 'rls_variable_nm as variable_nm,'; put 'rls_operator_nm as operator_nm,'; put 'rls_raw_value as raw_value'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("&scopeval",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="%scan(&libds,1,.)"'; put 'and rls_table="%scan(&libds,2,.)"'; put 'and rls_active=1'; put 'order by rls_group,rls_subgroup_id;'; put '%if &sqlobs>0 %then %do;'; put '/* check if we currently have filter or not */'; put 'data ;'; put 'infile &outref end=eof;'; put 'input;'; put 'if _n_=1 and eof and cats(_infile_)='''' then newfilter=1;'; put 'output;'; put 'stop;'; put 'run;'; put 'data _null_;'; put 'set &syslast;'; put 'file &outref mod;'; put 'if newfilter=1 then put ''('';'; put 'else put ''AND ('';'; put 'run;'; put '/* loop through and apply filters for each group membership */'; put '%local fref ds;'; put '%let fref=%mf_getuniquefileref();'; put '%let ds=%mf_getuniquename();'; put 'proc sql noprint;'; put 'select distinct rls_group into : group1 -'; put 'from work.&rlsds;'; put '%do i=1 %to &sqlobs;'; put 'data work.&ds;'; put 'set work.&rlsds;'; put 'where rls_group="&&group&i";'; put 'drop rls_group;'; put 'run;'; put '%mp_filtergenerate(&ds,outref=&fref)'; put 'data _null_;'; put 'infile &fref;'; put 'file &outref mod;'; put 'input;'; put 'if &i>1 and _n_=1 then put '' OR '';'; put 'put _infile_;'; put 'run;'; put '%end;'; put 'data _null_;'; put 'file &outref mod;'; put 'put '')'';'; put 'run;'; put '%end; /* &sqlobs>0 */'; put '%else %do;'; put '%put &sysmacroname: no matching groups;'; put 'data _null_;'; put 'set work.groups;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put '%mp_abort(iftrue= (&syscc>0)'; put ',mac=&sysmacroname'; put ',msg=%str(Row Level Security Generation Error)'; put ')'; put '%end; /* &admin_check=0 */'; put '%put leaving &sysmacroname with the following query:;'; put '%local empty;'; put '%let empty=0;'; put 'data _null_;'; put 'infile &outref end=eof;'; put 'input;'; put 'putlog _infile_;'; put 'if _n_=1 and eof and cats(_infile_)='''' then do;'; put 'put ''1=1'';'; put 'call symputx(''empty'',1,''l'');'; put 'end;'; put 'run;'; put '%if &empty=1 %then %do;'; put 'data _null_;'; put 'file &outref;'; put 'put ''1=1'';'; put 'run;'; put '%end;'; put '%mend mpe_filtermaster;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_gettables('; put 'uri='; put ',outds=work.mm_gettables'; put ',getauth=YES'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'length uri serveruri conn_uri domainuri libname ServerContext AuthDomain'; put 'path_schema usingpkguri type tableuri $256 id $17'; put 'libdesc $200 libref engine $8 IsDBMSLibname IsPreassigned $1'; put 'tablename $50 /* metadata table names can be longer than $32 */'; put ';'; put 'keep libname libdesc libref engine ServerContext path_schema AuthDomain'; put 'tableuri tablename IsPreassigned IsDBMSLibname id;'; put 'call missing (of _all_);'; put 'uri=symget(''uri'');'; put 'rc= metadata_getattr(uri, "Name", libname);'; put 'if rc <0 then do;'; put 'put ''The library is not defined in this metadata repository.'';'; put 'stop;'; put 'end;'; put 'rc= metadata_getattr(uri, "Desc", libdesc);'; put 'rc= metadata_getattr(uri, "Libref", libref);'; put 'rc= metadata_getattr(uri, "Engine", engine);'; put 'rc= metadata_getattr(uri, "IsDBMSLibname", IsDBMSLibname);'; put 'rc= metadata_getattr(uri, "IsPreassigned", IsPreassigned);'; put 'rc= metadata_getattr(uri, "Id", Id);'; put '/*** Get associated ServerContext ***/'; put 'rc= metadata_getnasn(uri, "DeployedComponents", 1, serveruri);'; put 'if rc > 0 then rc2= metadata_getattr(serveruri, "Name", ServerContext);'; put 'else ServerContext='''';'; put '/*** If the library is a DBMS library, get the Authentication Domain'; put 'associated with the DBMS connection credentials ***/'; put 'if IsDBMSLibname="1" and "&getauth"=''YES'' then do;'; put 'rc= metadata_getnasn(uri, "LibraryConnection", 1, conn_uri);'; put 'if rc>0 then do;'; put 'rc2= metadata_getnasn(conn_uri, "Domain", 1, domainuri);'; put 'if rc2>0 then rc3= metadata_getattr(domainuri, "Name", AuthDomain);'; put 'end;'; put 'end;'; put '/*** Get the path/database schema for this library ***/'; put 'rc=metadata_getnasn(uri, "UsingPackages", 1, usingpkguri);'; put 'if rc>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put 'if type=''Directory'' then'; put 'rc=metadata_getattr(usingpkguri, "DirectoryName", path_schema);'; put 'else if type=''DatabaseSchema'' then'; put 'rc=metadata_getattr(usingpkguri, "Name", path_schema);'; put 'else path_schema="unknown";'; put 'end;'; put '/*** Get the tables associated with this library ***/'; put '/*** If DBMS, tables are associated with DatabaseSchema ***/'; put 'if type=''DatabaseSchema'' then do;'; put 't=1;'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(usingpkguri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'else if type in (''Directory'',''SASLibrary'') then do;'; put 't=1;'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'if ntab>0 then do t=1 to ntab;'; put 'tableuri='''';'; put 'tablename='''';'; put 'ntab=metadata_getnasn(uri, "Tables", t, tableuri);'; put 'tabrc= metadata_getattr(tableuri, "Name", tablename);'; put 'output;'; put 'end;'; put 'else put ''Library '' libname '' has no tables registered'';'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by tablename tableuri;'; put 'run;'; put '%mend mm_gettables;'; put '%macro mm_getcols('; put 'tableuri='; put ',outds=work.mm_getcols'; put ')/*/STORE SOURCE*/;'; put 'data &outds;'; put 'keep col: SAS:;'; put 'length assoc uri coluri colname coldesc SASColumnType SASFormat SASInformat'; put 'SASPrecision SASColumnLength $256;'; put 'call missing (of _all_);'; put 'uri=symget(''tableuri'');'; put 'n=1;'; put 'do while (metadata_getnasn(uri,''Columns'',n,coluri)>0);'; put 'rc3=metadata_getattr(coluri,"Name",colname);'; put 'rc3=metadata_getattr(coluri,"Desc",coldesc);'; put 'rc4=metadata_getattr(coluri,"SASColumnType",SASColumnType);'; put 'rc5=metadata_getattr(coluri,"SASFormat",SASFormat);'; put 'rc6=metadata_getattr(coluri,"SASInformat",SASInformat);'; put 'rc7=metadata_getattr(coluri,"SASPrecision",SASPrecision);'; put 'rc8=metadata_getattr(coluri,"SASColumnLength",SASColumnLength);'; put 'output;'; put 'call missing(colname,coldesc,SASColumnType,SASFormat,SASInformat'; put ',SASPrecision,SASColumnLength);'; put 'n+1;'; put 'end;'; put 'run;'; put 'proc sort;'; put 'by colname;'; put 'run;'; put '%mend mm_getcols;'; put '%macro mm_createdataset(libds=,tableuri=,outds=work.mm_createdataset,mDebug=0);'; put '%local dbg errorcheck tempds1 tempds2 tempds3;'; put '%if &mDebug=0 %then %let dbg=*;'; put '%let errorcheck=1;'; put '%if %index(&libds,.)>0 %then %do;'; put '/* get lib uri */'; put 'data;run;%let tempds1=&syslast;'; put '%mm_getlibs(outds=&tempds1)'; put 'data _null_;'; put 'set &tempds1;'; put 'if upcase(libraryref)="%upcase(%scan(&libds,1,.))";'; put 'call symputx(''liburi'',LibraryId,''l'');'; put 'run;'; put '/* get ds uri */'; put 'data;run;%let tempds2=&syslast;'; put '%mm_gettables(uri=&liburi,outds=&tempds2)'; put 'data _null_;'; put 'set &tempds2;'; put 'where upcase(tablename)="%upcase(%scan(&libds,2,.))";'; put '&dbg putlog tableuri=;'; put 'call symputx(''tableuri'',tableuri);'; put 'run;'; put '%end;'; put 'data;run;'; put '%let tempds3=&syslast;'; put '%mm_getcols(tableuri=&tableuri,outds=&tempds3)'; put '%if %mf_nobs(&tempds3)=0 %then %do;'; put '%put &libds (&tableuri) has no columns defined!!;'; put 'data &outds;'; put 'run;'; put '%return;'; put '%end;'; put 'data _null_;'; put 'set &tempds3 end=last;'; put 'if _n_=1 then call execute(''data &outds;'');'; put 'length attrib $32767;'; put 'if SAScolumntype=''C'' then type=''$'';'; put 'attrib=''attrib ''!!cats(colname)!!'' length=''!!cats(type,SASColumnLength,''.'');'; put 'if not missing(sasformat) then fmt='' format=''!!cats(sasformat);'; put 'if not missing(sasinformat) then infmt='' informat=''!!cats(sasinformat);'; put 'if not missing(coldesc) then desc='' label=''!!quote(cats(coldesc));'; put 'attrib=trim(attrib)!!fmt!!infmt!!desc!!'';'';'; put 'call execute(attrib);'; put 'if last then call execute(''call missing(of _all_);stop;run;'');'; put 'run;'; put '%mend mm_createdataset;'; put '%macro dc_createdataset(libds=mm_getlibs,outds=viewdata);'; put '%mm_createdataset(libds=&libds,outds=viewdata)'; put '%mend dc_createdataset;'; put '%macro mm_gettableid('; put 'libref='; put ',ds='; put ',outds=work.mm_gettableid'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put 'data &outds;'; put 'length uri usingpkguri id type tableuri tablename tmpuri $256;'; put 'call missing(of _all_);'; put 'keep tableuri tablename;'; put 'n=1;'; put 'rc=0;'; put 'if metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",n,uri)<1 then do;'; put 'put "Library &libref not found";'; put 'stop;'; put 'end;'; put '&mD.putlog "uri is " uri;'; put 'if metadata_getnasn(uri, "UsingPackages", 1, usingpkguri)>0 then do;'; put 'rc=metadata_resolve(usingpkguri,type,id);'; put '&mD.putlog "Type is " type;'; put 'end;'; put 'if type=''DatabaseSchema'' then tmpuri=usingpkguri;'; put 'else tmpuri=uri;'; put 't=1;'; put 'do while(metadata_getnasn(tmpuri, "Tables", t, tableuri)>0);'; put 't+1;'; put 'rc= metadata_getattr(tableuri, "Name", tablename);'; put '&mD.putlog "Table is " tablename;'; put 'if upcase(tablename)="%upcase(&ds)" then do;'; put 'output;'; put 'end;'; put 'end;'; put 'run;'; put '%mend mm_gettableid;'; put '%macro dc_gettableid(libref='; put ',ds='; put ',outds=);'; put '%mm_gettableid(libref=&libref,ds=&ds,outds=&outds)'; put '%if %mf_nobs(&outds)=0 %then %do;'; put 'data &outds;'; put 'tableuri='''';'; put 'tablename="&ds";'; put 'run;'; put '%end;'; put '%mend dc_gettableid;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '%macro mf_getvarcount(libds,typefilter=A'; put ')/*/STORE SOURCE*/;'; put '%local dsid nvars rc outcnt x;'; put '%let dsid=%sysfunc(open(&libds));'; put '%let nvars=.;'; put '%let outcnt=0;'; put '%let typefilter=%upcase(&typefilter);'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &typefilter=A %then %let outcnt=&nvars;'; put '%else %if &nvars>0 %then %do x=1 %to &nvars;'; put '/* increment based on variable type */'; put '%if %sysfunc(vartype(&dsid,&x))=&typefilter %then %do;'; put '%let outcnt=%eval(&outcnt+1);'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put unable to open &libds (rc=&dsid);'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '&outcnt'; put '%mend mf_getvarcount;'; put '%macro mf_abort(mac=mf_abort.sas, msg=, iftrue=%str(1=1)'; put ')/des=''ungraceful abort'' /*STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mf_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%abort;'; put '%mend mf_abort;'; put '/** @endcond */'; put '%macro mf_verifymacvars('; put 'verifyVars /* list of macro variable NAMES */'; put ',makeUpcase=NO /* set to YES to make all the variable VALUES uppercase */'; put ',mAbort=SOFT'; put ')/*/STORE SOURCE*/;'; put '%local verifyIterator verifyVar abortmsg;'; put '%do verifyIterator=1 %to %sysfunc(countw(&verifyVars,%str( )));'; put '%let verifyVar=%qscan(&verifyVars,&verifyIterator,%str( ));'; put '%if not %symexist(&verifyvar) %then %do;'; put '%let abortmsg= Variable &verifyVar is MISSING;'; put '%goto exit_err;'; put '%end;'; put '%if %length(%trim(&&&verifyVar))=0 %then %do;'; put '%let abortmsg= Variable &verifyVar is EMPTY;'; put '%goto exit_err;'; put '%end;'; put '%if &makeupcase=YES %then %do;'; put '%let &verifyVar=%upcase(&&&verifyvar);'; put '%end;'; put '%end;'; put '%goto exit_success;'; put '%exit_err:'; put '%put &abortmsg;'; put '%mf_abort(iftrue=(&mabort ne SOFT),'; put 'mac=mf_verifymacvars,'; put 'msg=%str(&abortmsg)'; put ')'; put '0'; put '%return;'; put '%exit_success:'; put '1'; put '%mend mf_verifymacvars;'; put '%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);'; put 'proc sql;'; put 'create table &libds('; put 'TYPE char(1) label=''Type of format - either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'''; put ',FMTNAME char(32) label=''Format name'''; put ',FMTROW num label=''CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'''; put ',START char(32767) label=''Starting value for format'''; put '/*'; put 'Keep lengths of START and END the same to avoid this err:'; put '"Start is greater than end: -<."'; put 'Similar usage note: https://support.sas.com/kb/69/330.html'; put '*/'; put ',END char(32767) label=''Ending value for format'''; put ',LABEL char(32767) label=''Format value label'''; put ',MIN num length=3 label=''Minimum length'''; put ',MAX num length=3 label=''Maximum length'''; put ',DEFAULT num length=3 label=''Default length'''; put ',LENGTH num length=3 label=''Format length'''; put ',FUZZ num label=''Fuzz value'''; put ',PREFIX char(2) label=''Prefix characters'''; put ',MULT num label=''Multiplier'''; put ',FILL char(1) label=''Fill character'''; put ',NOEDIT num length=3 label=''Is picture string noedit?'''; put ',SEXCL char(1) label=''Start exclusion'''; put ',EEXCL char(1) label=''End exclusion'''; put ',HLO char(13) label=''Additional information. M=MultiLabel'''; put ',DECSEP char(1) label=''Decimal separator'''; put ',DIG3SEP char(1) label=''Three-digit separator'''; put ',DATATYPE char(8) label=''Date/time/datetime?'''; put ',LANGUAGE char(8) label=''Language for date strings'''; put ');'; put '%local lib;'; put '%let libds=%upcase(&libds);'; put '%if %index(&libds,.)=0 %then %let lib=WORK;'; put '%else %let lib=%scan(&libds,1,.);'; put 'proc datasets lib=&lib noprint;'; put 'modify %scan(&libds,-1,.);'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%mend mddl_sas_cntlout;'; put '%macro mp_aligndecimal(var,width=8);'; put '%local tmpvar;'; put '%let tmpvar=%mf_getuniquename(prefix=aligndp);'; put 'length &tmpvar $&width;'; put 'if index(&var,''.'') then do;'; put '&tmpvar=cats(scan(&var,1,''.''));'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar!!''.''!!cats(scan(&var,2,''.''));'; put 'end;'; put 'else do;'; put '&tmpvar=cats(&var);'; put '&tmpvar=right(&tmpvar);'; put '&var=&tmpvar;'; put 'end;'; put 'drop &tmpvar;'; put '%mend mp_aligndecimal;'; put '%macro mp_cntlout('; put 'iftrue=(1=1)'; put ',libcat='; put ',cntlout=work.fmtextract'; put ',fmtlist=0'; put ')/*/STORE SOURCE*/;'; put '%local ddlds cntlds i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%let ddlds=%mf_getuniquename();'; put '%let cntlds=%mf_getuniquename();'; put '%mddl_sas_cntlout(libds=&ddlds)'; put '%if %index(&libcat,-)>0 and %scan(&libcat,2,-)=FC %then %do;'; put '%let libcat=%scan(&libcat,1,-);'; put '%end;'; put 'proc format lib=&libcat cntlout=&cntlds;'; put '%if "&fmtlist" ne "0" and "&fmtlist" ne "" %then %do;'; put 'select'; put '%do i=1 %to %sysfunc(countw(&fmtlist,%str( )));'; put '%scan(&fmtlist,&i,%str( ))'; put '%end;'; put ';'; put '%end;'; put 'run;'; put 'data &cntlout/nonote2err;'; put 'if 0 then set &ddlds;'; put 'set &cntlds;'; put 'by type fmtname notsorted;'; put '/* align the numeric values to avoid overlapping ranges */'; put 'if type in ("I","N") then do;'; put '%mp_aligndecimal(start,width=16)'; put '%mp_aligndecimal(end,width=16)'; put 'end;'; put '/* create row marker. Data cannot be sorted without it! */'; put 'if first.fmtname then fmtrow=0;'; put 'fmtrow+1;'; put 'run;'; put 'proc sort;'; put 'by type fmtname fmtrow;'; put 'run;'; put 'proc sql;'; put 'drop table &ddlds,&cntlds;'; put '%mend mp_cntlout;'; put '/** @endcond */'; put '%macro mp_dsmeta(libds,outds=work.dsmeta);'; put '%local ds1 ds2;'; put 'data;run; %let ds1=&syslast;'; put 'data;run; %let ds2=&syslast;'; put '/* setup the ODS capture */'; put 'ods output attributes=&ds1 enginehost=&ds2;'; put '/* export the metadata */'; put 'proc contents data=&libds;'; put 'run;'; put '/* load it into a single table */'; put 'data &outds (keep=ods_table name value);'; put 'length ods_table $10 name label2 label1 label $100'; put 'value cvalue cvalue1 cvalue2 $1000'; put 'nvalue nvalue1 nvalue2 8;'; put 'if _n_=1 then call missing (of _all_);'; put '* putlog (_all_)(=);'; put 'set &ds1 (in=atrs) &ds2 (in=eng);'; put 'if atrs then do;'; put 'ods_table=''ATTRIBUTES'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'if label2 ne '''' then do;'; put 'name=label2;'; put 'value=coalescec(cvalue2,put(nvalue2,best.));'; put 'output;'; put 'end;'; put 'end;'; put 'else if eng then do;'; put 'ods_table=''ENGINEHOST'';'; put 'name=coalescec(label1,label);'; put 'value=coalescec(cvalue1,cvalue,put(coalesce(nvalue1,nvalue),best.));'; put 'output;'; put 'end;'; put 'run;'; put 'proc sql;'; put 'drop table &ds1, &ds2;'; put '%mend mp_dsmeta;'; put '%macro mp_getcols(ds, outds=work.cols);'; put '%local dropds;'; put 'proc contents noprint data=&ds'; put 'out=_data_ (keep=name type length label varnum format:);'; put 'run;'; put '%let dropds=&syslast;'; put 'data &outds(keep=name type length varnum format label ddtype fmtname);'; put 'set &dropds(rename=(format=fmtname type=type2));'; put 'name=upcase(name);'; put 'if type2=2 then do;'; put 'length format $49.;'; put 'if fmtname='''' then format=cats(''$'',length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else format=cats(fmtname,formatl,''.'');'; put 'type=''C'';'; put 'ddtype=''CHARACTER'';'; put 'end;'; put 'else do;'; put 'if fmtname='''' then format=cats(length,''.'');'; put 'else if formatl=0 then format=cats(fmtname,''.'');'; put 'else if formatd=0 then format=cats(fmtname,formatl,''.'');'; put 'else format=cats(fmtname,formatl,''.'',formatd);'; put 'type=''N'';'; put 'if format=:''DATETIME'' or format=:''E8601DT'' then ddtype=''DATETIME'';'; put 'else if format=:''DATE'' or format=:''DDMMYY'' or format=:''MMDDYY'''; put 'or format=:''YYMMDD'' or format=:''E8601DA'' or format=:''B8601DA'''; put 'or format=:''MONYY'''; put 'then ddtype=''DATE'';'; put 'else if format=:''TIME'' then ddtype=''TIME'';'; put 'else ddtype=''NUMERIC'';'; put 'end;'; put 'if label='''' then label=name;'; put 'run;'; put 'proc sql;'; put 'drop table &dropds;'; put '%mend mp_getcols;'; put '/** @cond */'; put '%macro mf_existfeature(feature'; put ')/*/STORE SOURCE*/;'; put '%let feature=%upcase(&feature);'; put '%local platform;'; put '%let platform=%mf_getplatform();'; put '%if &feature= %then %do;'; put '%put No feature was requested for detection;'; put '%end;'; put '%else %if &feature=COLCONSTRAINTS %then %do;'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=PROCLUA %then %do;'; put '/* https://blogs.sas.com/content/sasdummy/2015/08/03/using-lua-within-your-sas-programs */'; put '%if &platform=SASVIYA %then 1;'; put '%else %if "&sysver"="9.2" or "&sysver"="9.3" %then 0;'; put '%else %if "&SYSVLONG" < "9.04.01M3" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=DBMS_MEMTYPE %then %do;'; put '/* does dbms_memtype exist in dictionary.tables? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 0;'; put '%else 1;'; put '%end;'; put '%else %if &feature=EXPORTXLS %then %do;'; put '/* is it possible to PROC EXPORT an excel file? */'; put '%if "%substr(&sysver,1,1)"="4" or "%substr(&sysver,1,1)"="5" %then 1;'; put '%else %if %sysfunc(sysprod(SAS/ACCESS Interface to PC Files)) = 1 %then 1;'; put '%else 0;'; put '%end;'; put '%else %do;'; put '-1'; put '%put &sysmacroname: &feature not found;'; put '%end;'; put '%mend mf_existfeature;'; put '/** @endcond */'; put '%macro mf_getschema(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum rc schema;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc(open(sashelp.vlibnam(where=('; put 'libname="%upcase(&libref)" and sysname=''Schema/Owner'''; put ')),i));'; put '%if (&dsid ^= 0) %then %do;'; put '%let vnum=%sysfunc(varnum(&dsid,SYSVALUE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let schema=%sysfunc(getvarc(&dsid,&vnum));'; put '%put &libref. schema is &schema.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '&schema'; put '%mend mf_getschema;'; put '/** @endcond */'; put '%macro mf_isblank(param'; put ')/*/STORE SOURCE*/;'; put '%sysevalf(%superq(param)=,boolean)'; put '%mend mf_isblank;'; put '%macro mp_dropmembers('; put 'list /* space separated list of datasets / views */'; put ',libref=WORK /* can only drop from a single library at a time */'; put ',iftrue=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%if %mf_isblank(&list) %then %do;'; put '%put NOTE: nothing to drop!;'; put '%return;'; put '%end;'; put 'proc datasets lib=&libref nolist;'; put 'delete &list;'; put 'delete &list /mtype=view;'; put 'run;'; put '%mend mp_dropmembers;'; put '%macro mp_getconstraints(lib=WORK'; put ',ds='; put ',outds=mp_getconstraints'; put ',mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '/**'; put '* Cater for environments where sashelp.vcncolu is not available'; put '*/'; put '%if %sysfunc(exist(sashelp.vcncolu,view))=0 %then %do;'; put 'proc sql;'; put 'create table &outds('; put 'libref char(8)'; put ',TABLE_NAME char(32)'; put ',constraint_type char(8) label=''Constraint Type'''; put ',constraint_name char(32) label=''Constraint Name'''; put ',column_name char(32) label=''Column'''; put ',constraint_order num'; put ');'; put '%return;'; put '%end;'; put '/**'; put '* Neither dictionary tables nor sashelp provides a constraint order column,'; put '* however they DO arrive in the correct order. So, create the col.'; put '**/'; put '%local vw;'; put '%let vw=%mf_getuniquename(prefix=mp_getconstraints_vw_);'; put 'data &vw /view=&vw;'; put 'set sashelp.vcncolu;'; put 'where table_catalog="&lib";'; put '/* use retain approach to reset the constraint order with each constraint */'; put 'length tmp $1000;'; put 'retain tmp;'; put 'drop tmp;'; put 'if tmp ne catx(''|'',table_catalog,table_name,constraint_name) then do;'; put 'constraint_order=1;'; put 'end;'; put 'else constraint_order+1;'; put 'tmp=catx(''|'',table_catalog, table_name,constraint_name);'; put 'run;'; put '/* must use SQL as proc datasets does not support length changes */'; put 'proc sql noprint;'; put 'create table &outds as'; put 'select upcase(a.TABLE_CATALOG) as libref'; put ',upcase(a.TABLE_NAME) as TABLE_NAME'; put ',a.constraint_type'; put ',a.constraint_name'; put ',b.column_name'; put ',b.constraint_order'; put 'from dictionary.TABLE_CONSTRAINTS a'; put 'left join &vw b'; put 'on upcase(a.TABLE_CATALOG)=upcase(b.TABLE_CATALOG)'; put 'and upcase(a.TABLE_NAME)=upcase(b.TABLE_NAME)'; put 'and a.constraint_name=b.constraint_name'; put '/**'; put '* We cannot apply this clause to the underlying dictionary table. See:'; put '* https://communities.sas.com/t5/SAS-Programming/Unexpected-Where-Clause-behaviour-in-dictionary-TABLE/m-p/771554#M244867'; put '* cannot use`where calculated libref="&lib"` either as it will STILL execute'; put '* all the underlying constraint queries, causing exception errors in some'; put '* cases: https://github.com/sasjs/core/issues/283'; put '*/'; put 'where a.TABLE_CATALOG="&lib"'; put '%if "&ds" ne "" %then %do;'; put 'and upcase(a.TABLE_NAME)="&ds"'; put 'and upcase(b.TABLE_NAME)="&ds"'; put '%end;'; put 'order by libref, table_name, constraint_name, constraint_order'; put ';'; put '/* tidy up */'; put '%mp_dropmembers('; put '&vw,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getconstraints;'; put '%macro mp_getpk('; put 'lib,'; put 'ds=0,'; put 'outds=work.mp_getpk,'; put 'mdebug=0'; put ')/*/STORE SOURCE*/;'; put '%local engine schema ds1 ds2 ds3 dsn tabs1 tabs2 sum pk4sure pkdefault finalpks'; put 'pkfromindex;'; put '%let lib=%upcase(&lib);'; put '%let ds=%upcase(&ds);'; put '%let engine=%mf_getengine(&lib);'; put '%let schema=%mf_getschema(&lib);'; put '%let ds1=%mf_getuniquename(prefix=getpk_ds1);'; put '%let ds2=%mf_getuniquename(prefix=getpk_ds2);'; put '%let ds3=%mf_getuniquename(prefix=getpk_ds3);'; put '%let tabs1=%mf_getuniquename(prefix=getpk_tabs1);'; put '%let tabs2=%mf_getuniquename(prefix=getpk_tabs2);'; put '%let sum=%mf_getuniquename(prefix=getpk_sum);'; put '%let pk4sure=%mf_getuniquename(prefix=getpk_pk4sure);'; put '%let pkdefault=%mf_getuniquename(prefix=getpk_pkdefault);'; put '%let pkfromindex=%mf_getuniquename(prefix=getpk_pkfromindex);'; put '%let finalpks=%mf_getuniquename(prefix=getpk_finalpks);'; put '%local dbg;'; put '%if &mdebug=1 %then %do;'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '%end;'; put '%else %let dbg=*;'; put 'proc sql;'; put 'create table &ds1 as'; put 'select libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put ',upcase(name) as name'; put ',type'; put ',length'; put ',varnum'; put ',label'; put ',format'; put ',idxusage'; put ',notnull'; put 'from dictionary.columns'; put 'where upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put '%if &engine=SQLSVR %then %do;'; put 'proc sql;'; put 'connect using &lib;'; put 'create table work.&ds2 as'; put 'select * from connection to &lib('; put 'select'; put 's.name as SchemaName,'; put 't.name as memname,'; put 'tc.name as name,'; put 'ic.key_ordinal as KeyOrderNr'; put 'from'; put 'sys.schemas s'; put 'inner join sys.tables t on s.schema_id=t.schema_id'; put 'inner join sys.indexes i on t.object_id=i.object_id'; put 'inner join sys.index_columns ic on i.object_id=ic.object_id'; put 'and i.index_id=ic.index_id'; put 'inner join sys.columns tc on ic.object_id=tc.object_id'; put 'and ic.column_id=tc.column_id'; put 'where i.is_primary_key=1'; put 'and s.name=%str(%'')&schema%str(%'')'; put 'order by t.name, ic.key_ordinal ;'; put ');disconnect from &lib;'; put 'create table &ds3 as'; put 'select a.*'; put ',case when b.name is not null then 1 else 0 end as pk_ind'; put 'from work.&ds1 a'; put 'left join work.&ds2 b'; put 'on a.dsn=b.memname'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn;'; put '%end;'; put '%else %do;'; put '%if &ds = 0 %then %let dsn=;'; put '/* get all constraints, in constraint order*/'; put '%mp_getconstraints(lib=&lib,ds=&dsn,outds=work.&ds2)'; put '/* extract cols that are clearly primary keys */'; put 'proc sql;'; put 'create table &pk4sure as'; put 'select libref'; put ',table_name'; put ',constraint_name'; put ',constraint_order'; put ',column_name as name'; put 'from work.&ds2'; put 'where constraint_type=''PRIMARY'''; put 'order by 1,2,3,4;'; put '/* extract unique constraints where every col is also NOT NULL */'; put 'proc sql;'; put 'create table &sum as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',count(a.column_name) as unq_cnt'; put ',count(b.column_name) as nul_cnt'; put 'from work.&ds2(where=(constraint_type =''UNIQUE'')) a'; put 'left join work.&ds2(where=(constraint_type =''NOT NULL'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.column_name=b.column_name'; put 'group by 1,2,3'; put 'having unq_cnt=nul_cnt;'; put '/* extract cols from the relevant unique constraints */'; put 'create table &pkdefault as'; put 'select a.libref'; put ',a.table_name'; put ',a.constraint_name'; put ',b.constraint_order'; put ',b.column_name as name'; put 'from &sum a'; put 'left join &ds2(where=(constraint_type =''UNIQUE'')) b'; put 'on a.libref=b.libref'; put 'and a.table_name=b.table_name'; put 'and a.constraint_name=b.constraint_name'; put 'order by 1,2,3,4;'; put '/* extract cols from the relevant unique INDEXES */'; put 'create table &pkfromindex as'; put 'select libname as libref'; put ',memname as table_name'; put ',indxname as constraint_name'; put ',indxpos as constraint_order'; put ',name'; put 'from dictionary.indexes'; put 'where nomiss=''yes'' and unique=''yes'' and upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put 'order by 1,2,3,4;'; put '/* create one table */'; put 'data &finalpks;'; put 'set &pkdefault &pk4sure &pkfromindex;'; put 'pk_ind=1;'; put '/* if there are multiple unique constraints, take the first */'; put 'by libref table_name constraint_name;'; put 'retain keepme;'; put 'if first.table_name then keepme=1;'; put 'if first.constraint_name and not first.table_name then keepme=0;'; put 'if keepme=1;'; put 'run;'; put '/* join back to starting table */'; put 'proc sql;'; put 'create table &ds3 as'; put 'select a.*'; put ',b.constraint_order'; put ',case when b.pk_ind=1 then 1 else 0 end as pk_ind'; put 'from work.&ds1 a'; put 'left join work.&finalpks b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.table_name'; put 'and upcase(a.name)=upcase(b.name)'; put 'order by libref,dsn,constraint_order;'; put '%end;'; put '/* prepare tables */'; put 'proc sql;'; put 'create table work.&tabs1 as select'; put 'libname as libref'; put ',upcase(memname) as dsn'; put ',memtype'; put '%if %mf_existfeature(DBMS_MEMTYPE)=1 %then %do;'; put ',dbms_memtype'; put '%end;'; put '%else %do;'; put ',''n/a'' as dbms_memtype format=$32.'; put '%end;'; put ',typemem'; put ',memlabel'; put ',nvar'; put ',compress'; put 'from dictionary.tables'; put 'where upcase(libname)="&lib"'; put '%if &ds ne 0 %then %do;'; put 'and upcase(memname)="&ds"'; put '%end;'; put ';'; put 'data &tabs2;'; put 'set &ds3;'; put 'length pk_fields $512;'; put 'retain pk_fields;'; put 'by libref dsn constraint_order;'; put 'if first.dsn then pk_fields='''';'; put 'if pk_ind=1 then pk_fields=catx('' '',pk_fields,name);'; put 'if last.dsn then output;'; put 'run;'; put 'proc sql;'; put 'create table &outds as'; put 'select a.libref'; put ',a.dsn'; put ',a.memtype'; put ',a.dbms_memtype'; put ',a.typemem'; put ',a.memlabel'; put ',a.nvar'; put ',a.compress'; put ',b.pk_fields'; put 'from work.&tabs1 a'; put 'left join work.&tabs2 b'; put 'on a.libref=b.libref'; put 'and a.dsn=b.dsn;'; put '/* tidy up */'; put '%mp_dropmembers('; put '&ds1 &ds2 &ds3 &dsn &tabs1 &tabs2 &sum &pk4sure &pkdefault &finalpks,'; put 'iftrue=(&mdebug=0)'; put ')'; put '%mend mp_getpk;'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '%macro mf_getvarlist(libds'; put ',dlm=%str( )'; put ',quote=no'; put ',typefilter=A'; put ')/*/STORE SOURCE*/;'; put '/* declare local vars */'; put '%local outvar dsid nvars x rc dlm q var vtype;'; put '/* credit Rowland Hale - byte34 is double quote, 39 is single quote */'; put '%if %upcase("e)=DOUBLE %then %let q=%qsysfunc(byte(34));'; put '%else %if %upcase("e)=SINGLE %then %let q=%qsysfunc(byte(39));'; put '/* open dataset in macro */'; put '%let dsid=%sysfunc(open(&libds));'; put '%if &dsid %then %do;'; put '%let nvars=%sysfunc(attrn(&dsid,NVARS));'; put '%if &nvars>0 %then %do;'; put '/* add variables with supplied delimeter */'; put '%do x=1 %to &nvars;'; put '/* get variable type */'; put '%let vtype=%sysfunc(vartype(&dsid,&x));'; put '%if &vtype=&typefilter or &typefilter=A %then %do;'; put '%let var=&q.%sysfunc(varname(&dsid,&x))&q.;'; put '%if &var=&q&q %then %do;'; put '%put &sysmacroname: Empty column found in &libds!;'; put '%let var=&q. &q.;'; put '%end;'; put '%if %quote(&outvar)=%quote() %then %let outvar=&var;'; put '%else %let outvar=&outvar.&dlm.&var.;'; put '%end;'; put '%end;'; put '%end;'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: Unable to open &libds (rc=&dsid);'; put '%put &sysmacroname: SYSMSG= %sysfunc(sysmsg());'; put '%let rc=%sysfunc(close(&dsid));'; put '%end;'; put '%do;%unquote(&outvar)%end;'; put '%mend mf_getvarlist;'; put '%macro mf_getvartype(libds /* two level name */'; put ', var /* variable name from which to return the type */'; put ')/*/STORE SOURCE*/;'; put '%local dsid vnum vtype rc;'; put '/* Open dataset */'; put '%let dsid = %sysfunc(open(&libds));'; put '%if &dsid. > 0 %then %do;'; put '/* Get variable number */'; put '%let vnum = %sysfunc(varnum(&dsid, &var));'; put '/* Get variable type (C/N) */'; put '%if(&vnum. > 0) %then %let vtype = %sysfunc(vartype(&dsid, &vnum.));'; put '%else %do;'; put '%put NOTE: Variable &var does not exist in &libds;'; put '%let vtype = %str( );'; put '%end;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: dataset &libds not opened! (rc=&dsid);'; put '%put &sysmacroname: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '/* Close dataset */'; put '%let rc = %sysfunc(close(&dsid));'; put '/* Return variable type */'; put '&vtype'; put '%mend mf_getvartype;'; put '%macro mf_mkdir(dir'; put ')/*/STORE SOURCE*/;'; put '%local lastchar child parent;'; put '%let lastchar = %substr(&dir, %length(&dir));'; put '%if (%bquote(&lastchar) eq %str(:)) %then %do;'; put '/* Cannot create drive mappings */'; put '%return;'; put '%end;'; put '%if (%bquote(&lastchar)=%str(/)) or (%bquote(&lastchar)=%str(\)) %then %do;'; put '/* last char is a slash */'; put '%if (%length(&dir) eq 1) %then %do;'; put '/* one single slash - root location is assumed to exist */'; put '%return;'; put '%end;'; put '%else %do;'; put '/* strip last slash */'; put '%let dir = %substr(&dir, 1, %length(&dir)-1);'; put '%end;'; put '%end;'; put '%if (%sysfunc(fileexist(%bquote(&dir))) = 0) %then %do;'; put '/* directory does not exist so prepare to create */'; put '/* first get the childmost directory */'; put '%let child = %scan(&dir, -1, %str(/\:));'; put '/*'; put 'If child name = path name then there are no parents to create. Else'; put 'they must be recursively scanned.'; put '*/'; put '%if (%length(&dir) gt %length(&child)) %then %do;'; put '%let parent = %substr(&dir, 1, %length(&dir)-%length(&child));'; put '%mf_mkdir(&parent)'; put '%end;'; put '/*'; put 'Now create the directory. Complain loudly of any errs.'; put '*/'; put '%let dname = %sysfunc(dcreate(&child, &parent));'; put '%if (%bquote(&dname) eq ) %then %do;'; put '%put %str(ERR)OR: could not create &parent + &child;'; put '%abort cancel;'; put '%end;'; put '%else %do;'; put '%put Directory created: &dir;'; put '%end;'; put '%end;'; put '/* exit quietly if directory did exist.*/'; put '%mend mf_mkdir;'; put '%macro mp_searchdata(lib='; put ',ds='; put ',string= /* the query will use a contains (?) operator */'; put ',numval= /* numeric must match exactly */'; put ',outloc=0'; put ',outlib=MPSEARCH'; put ',outobs=-1'; put ',filter_text=%str(1=1)'; put ')/*/STORE SOURCE*/;'; put '%local table_list table table_num table colnum col start_tm check_tm vars type'; put 'coltype;'; put '%put process began at %sysfunc(datetime(),datetime19.);'; put '%if &syscc ge 4 %then %do;'; put '%put %str(WAR)NING: SYSCC=&syscc on macro entry;'; put '%return;'; put '%end;'; put '%if &string = %then %let type=N;'; put '%else %let type=C;'; put '%if "&outloc"="0" %then %do;'; put '%let outloc=%sysfunc(pathname(work))/%mf_getuniquename();'; put '%end;'; put '%mf_mkdir(&outloc)'; put 'libname &outlib "&outloc";'; put '/* get the list of tables in the library */'; put 'proc sql noprint;'; put 'select distinct memname into: table_list separated by '' '''; put 'from dictionary.tables'; put 'where upcase(libname)="%upcase(&lib)"'; put '%if &ds ne %then %do;'; put 'and upcase(memname)=%upcase("&ds")'; put '%end;'; put ';'; put '/* check that we have something to check */'; put '%if %length(&table_list)=0 %then %put library &lib contains no tables!;'; put '/* loop through each table */'; put '%else %do table_num=1 %to %sysfunc(countw(&table_list,%str( )));'; put '%let table=%scan(&table_list,&table_num,%str( ));'; put '%let vars=%mf_getvarlist(&lib..&table);'; put '%if %length(&vars)=0 %then %do;'; put '%put NO COLUMNS IN &lib..&table! This will be skipped.;'; put '%end;'; put '%else %do;'; put '%let check_tm=%sysfunc(datetime());'; put '/* prep input */'; put 'data &outlib..&table;'; put 'set &lib..&table;'; put 'where %unquote(&filter_text) and ( 0'; put '/* loop through columns */'; put '%do colnum=1 %to %sysfunc(countw(&vars,%str( )));'; put '%let col=%scan(&vars,&colnum,%str( ));'; put '%let coltype=%mf_getvartype(&lib..&table,&col);'; put '%if &type=C and &coltype=C %then %do;'; put '/* if a char column, see if it contains the string */'; put 'or ("&col"n ? "&string")'; put '%end;'; put '%else %if &type=N and &coltype=N %then %do;'; put '/* if numeric match exactly */'; put 'or ("&col"n = &numval)'; put '%end;'; put '%end;'; put ');'; put '%if &outobs>-1 %then %do;'; put 'if _n_ > &outobs then stop;'; put '%end;'; put 'run;'; put '%put Search query for &table took'; put '%sysevalf(%sysfunc(datetime())-&check_tm) seconds;'; put '%if &syscc ne 0 %then %do;'; put '%put %str(ERR)ROR: SYSCC=&syscc when processing &lib..&table;'; put '%return;'; put '%end;'; put '%if %mf_nobs(&outlib..&table)=0 %then %do;'; put 'proc sql;'; put 'drop table &outlib..&table;'; put '%end;'; put '%end;'; put '%end;'; put '%put process finished at %sysfunc(datetime(),datetime19.);'; put '%mend mp_searchdata;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewdata.sas'; put '@brief Provide the raw view of the data'; put '@details Pass a LIBDS and FILTER_RK to return a dataset for viewing.'; put 'VIEW datasets include all columns / rows (unlike EDIT, which are filtered'; put 'for current records and don''t include the SCD2 etc cols).'; put '

Service Inputs

'; put '
SASCONTROLTABLE
'; put '|LIBDS:$41.|FILTER_RK:$5.|SEARCHTYPE:$4|SEARCHVAL:$1000'; put '|---|---|---|---'; put '|DC258467.MPE_X_TEST|-1|CHAR|Some String|'; put '

Service Outputs

'; put '
cols
'; put '@li DDTYPE'; put '@li FORMAT'; put '@li LABEL'; put '@li LENGTH'; put '@li NAME'; put '@li TYPE'; put '@li VARNUM'; put '
sasparams
'; put '@li FILTER_TEXT'; put '@li NOBS'; put '@li PK_FIELDS - string seperated list of primary key fields, if they exist'; put '@li TABLENAME'; put '@li TABLEURI'; put '@li VARS'; put '
viewdata
'; put 'The raw data from the target table.'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li dc_createdataset.sas'; put '@li dc_gettableid.sas'; put '@li mf_existds.sas'; put '@li mf_getvarcount.sas'; put '@li mf_nobs.sas'; put '@li mf_verifymacvars.sas'; put '@li mp_abort.sas'; put '@li mp_cntlout.sas'; put '@li mp_dsmeta.sas'; put '@li mp_getcols.sas'; put '@li mp_getpk.sas'; put '@li mp_jsonout.sas'; put '@li mp_searchdata.sas'; put '@li mp_validatecol.sas'; put '@li mpe_columnlevelsecurity.sas'; put '@li mpe_filtermaster.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/* configure macvars */'; put '%global LIBDS FILTER_RK SEARCHVAL SEARCHTYPE FMT_IND;'; put '%let maxrows=250;'; put '/* avoid code injection */'; put '%let FMT_IND=0;'; put '%let SEARCHTYPE=;'; put '%let SEARCHVAL=;'; put '%let FILTER_RK=;'; put '%let LIBDS=;'; put '/**'; put '* Validate inputs'; put '*/'; put 'data work.intest;'; put 'length libds $41 filter_rk 8. searchval $100 searchtype $4;'; put 'set work.SASCONTROLTABLE;'; put '/* validate filter_rk */'; put 'if filter_rk le 0 then filter_rk=-1;'; put '/* check if the request is for a format catalog */'; put 'if substr(cats(reverse(libds)),1,3)=:''CF-'' then do;'; put 'libds=scan(libds,1,''-'');'; put 'putlog "Format Catalog Captured";'; put 'call symputx(''fmt_ind'',1);'; put 'end;'; put 'putlog (_all_)(=);'; put '/* validate libds */'; put '%mp_validatecol(LIBDS,LIBDS,is_libds)'; put 'if searchtype in (''CHAR'',''NUM'') then do;'; put 'searchval=tranwrd(searchval,''%'','''');'; put 'searchval=tranwrd(searchval,''&'','''');'; put 'searchval=tranwrd(searchval,'';'','''');'; put 'searchval=tranwrd(searchval,''"'','''');'; put 'call symputx(''searchtype'',searchtype);'; put 'call symputx(''searchval'',searchval);'; put 'end;'; put 'else if searchtype not in ('''',''NONE'') then do;'; put 'putlog ''ERR'' ''OR: Invalid searchtype:'' searchtype;'; put 'stop;'; put 'end;'; put 'if is_libds=0 then do;'; put 'putlog ''ERR'' ''OR: Invalid libds:'' libds;'; put 'stop;'; put 'end;'; put 'else do;'; put 'call symputx(''filter_rk'',filter_rk);'; put 'call symputx(''libds'',libds);'; put 'end;'; put 'output;'; put 'stop;'; put 'run;'; put '%mp_abort(iftrue= (%mf_verifymacvars(libds filter_rk fmt_ind)=0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem with macro inputs)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.intest)=0)'; put ',mac=&_program'; put ',msg=%str(Some err with service inputs)'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '/**'; put '* assign the Library'; put '*/'; put '%dc_assignlib(READ,%scan(&LIBDS,1,.))'; put '/* abort if looking for a format and the catalog doesn''t exist */'; put '%mp_abort(iftrue= (&fmt_ind=1 and %sysfunc(exist(&libds,CATALOG))=0)'; put ',mac=&_program..sas'; put ',msg=%str(Catalog &libds does not exist!)'; put ')'; put '/**'; put 'check if dataset can actually be opened - as library may exist but it may not'; put 'be possible to assign, and even if it can, the physical table may not exist'; put '**/'; put 'data _null_;'; put 'if &fmt_ind=0 then do;'; put 'dsid=open("&libds");'; put 'rc=close(dsid);'; put 'end;'; put 'else dsid=42;'; put 'call symputx(''existds'',dsid,''l'');'; put 'putlog ''dataset exists check:'' dsid;'; put 'run;'; put '/**'; put '* get the data'; put '*/'; put '%global dsobs;'; put '%let dsobs=0;'; put '%macro x();'; put '%if &existds>0 %then %do;'; put '%if &fmt_ind=1 %then %do;'; put '/* export format and point the libds to the output table from here on */'; put '%mp_cntlout('; put 'libcat=&libds'; put ',fmtlist=0'; put ',cntlout=work.fmtextract'; put ')'; put '%let libds=WORK.FMTEXTRACT;'; put 'proc datasets lib=work noprint;'; put 'modify FMTEXTRACT;'; put 'index create'; put 'pk_cntlout=(type fmtname fmtrow)'; put '/nomiss unique;'; put 'quit;'; put '%end;'; put 'proc sql noprint;'; put 'select count(*) into: dsobs from &libds;'; put '%put preparing query;'; put '%mpe_filtermaster(VIEW,&libds,'; put 'dclib=&mpelib,'; put 'filter_rk=&filter_rk,'; put 'outref=filtref,'; put 'outds=work.query'; put ')'; put '%put printing generated filterquery:;'; put 'data _null_;'; put 'infile filtref;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%if &searchtype=NONE or "%trim(&searchtype) " = " " %then %do;'; put '/* get row count */'; put 'filename rows temp;'; put 'data _null_;'; put 'file rows;'; put 'infile filtref end=eof;'; put 'input;'; put 'if _n_=1 then do;'; put 'put ''proc sql;'';'; put 'put "select count(*) into: dsobs from &libds where";'; put 'end;'; put 'put _infile_;'; put 'if eof then put '';'';'; put 'run;'; put 'data _null_;'; put 'infile rows;'; put 'input;'; put 'putlog _infile_;'; put 'run;'; put '%inc rows;'; put '/* send actual data, filtered and row-capped */'; put 'data work.viewdata;'; put 'set &libds;'; put 'where %inc filtref;;'; put 'if _n_>&maxrows then stop;'; put 'run;'; put '%if %mf_nobs(work.viewdata)=0 %then %do;'; put 'data work.viewdata;'; put '/* send empty row if empty table to help with hot rendering */'; put 'output;'; put 'set work.viewdata;'; put 'run;'; put '%end;'; put '%end;'; put '%else %do;'; put 'data work.vwsearch/view=work.vwsearch;'; put 'set &libds;'; put 'where %inc filtref;;'; put 'run;'; put '%if %upcase(&searchtype)=CHAR %then %do;'; put '%mp_searchdata(lib=work'; put ',ds=vwsearch'; put ',string=%superq(searchval)'; put ',outobs=&maxrows'; put ')'; put '%end;'; put '%else %if %upcase(&searchtype)=NUM %then %do;'; put '%mp_searchdata(lib=work'; put ',ds=vwsearch'; put ',numval=%superq(searchval)'; put ',outobs=&maxrows'; put ')'; put '%end;'; put '%if %mf_existds(libds=MPSEARCH.vwsearch) %then %do;'; put '%let dsobs=%mf_nobs(MPSEARCH.vwsearch);'; put 'data viewdata;'; put 'set MPSEARCH.vwsearch;'; put 'if _n_<&maxrows;'; put 'run;'; put '%end;'; put '%else %do;'; put '%let dsobs=0;'; put 'data viewdata;'; put 'set &libds;'; put 'stop;'; put 'run;'; put '%end;'; put '%end;'; put '%end;'; put '%else %do;'; put '/* physical table is not accessible so create from metatadata definition */'; put '%dc_createdataset(libds=&libds,outds=viewdata)'; put 'data viewData;'; put 'output;'; put 'set viewdata;'; put 'run;'; put '/* make filtref / work.query / work.groups to avoid downstream issues */'; put 'filename filtref temp;'; put 'data work.query;'; put 'file filtref;'; put 'x=0;'; put 'put x;'; put 'run;'; put 'data work.groups;'; put 'length groupuri groupname $32 groupdesc $128 ;'; put 'output;'; put 'stop;'; put 'run;'; put '%end;'; put '%mend x; %x()'; put '/* apply column level security */'; put '%mpe_columnlevelsecurity(%scan(&libds,1,.),%scan(&libds,2,.),work.viewdata'; put ',mode=VIEW'; put ',clsds=&mpelib..mpe_column_level_security'; put ',groupds=work.groups /* was created in mpe_filtermaster */'; put ',outds=work.viewdata2'; put ',outmeta=work.cls_rules'; put ')'; put '/* get table uri (if sas 9) to enable linking direct to lineage */'; put '%dc_gettableid(libref=%scan(&libds,1,.)'; put ',ds=%scan(&libds,2,.)'; put ',outds=work.parambase'; put ')'; put 'data _null_;'; put 'infile filtref end=eof;'; put 'input;'; put 'length filter_text $32767;'; put 'retain filter_text;'; put 'filter_text=catx('' '',filter_text,_infile_);'; put 'if eof then do;'; put 'if cats(filter_text)=''1=1'' then filter_text='''';'; put 'call symputx(''filter_text'',filter_text);'; put 'end;'; put 'run;'; put '%mp_getpk(%scan(&libds,1,.), ds=%scan(&libds,2,.), outds=work.pk_fields)'; put '%let pk_fields=;'; put 'data _null_;'; put 'set work.pk_fields;'; put 'call symputx(''pk_fields'',pk_fields);'; put 'run;'; put 'data work.sasparams;'; put 'set work.parambase;'; put 'format FILTER_TEXT $32767.;'; put 'FILTER_TEXT=symget(''FILTER_TEXT'');'; put 'length PK_FIELDS $512;'; put 'PK_FIELDS=symget(''PK_FIELDS'');'; put 'nobs=&dsobs;'; put 'vars=%mf_getvarcount(viewdata);'; put 'maxrows=&maxrows;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mp_getcols(&libds, outds=cols)'; put '%mp_dsmeta(&libds, outds=dsmeta)'; put '%webout(OPEN)'; put '%webout(OBJ,cls_rules)'; put '%webout(OBJ,cols)'; put '%webout(OBJ,dsmeta)'; put '%webout(OBJ,query)'; put '%webout(OBJ,sasparams)'; put '%webout(OBJ,viewData2,fmt=Y,missing=STRING,showmeta=YES,dslabel=viewdata)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewlibarray; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro mf_existds(libds'; put ')/*/STORE SOURCE*/;'; put '%if %sysfunc(exist(&libds)) ne 1 & %sysfunc(exist(&libds,VIEW)) ne 1 %then 0;'; put '%else 1;'; put '%mend mf_existds;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewlibarray.sas'; put '@brief List the libraries for view access'; put '@details'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mm_webout.sas'; put '@li mf_existds.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%let keepvars=libraryref libraryname;'; put 'data _null_;'; put 'length keepvars $32;'; put 'set %sysfunc(ifc(%mf_existds(iwant),iwant,_null_));'; put 'call symputx(''keepvars'',keepvars);'; put 'run;'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt. lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches where libref=''*ALL*'';'; put '%put securitygroupscount=&securitygroupscount;'; put '%put ALL_CNT=&ALL_CNT;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewlibs();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %do;'; put '%put user in admin group (scenario1=&scenario1);'; put '%return;'; put '%end;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put '%return;'; put '%end;'; put '/* scenario 3 - an *ALL* libref is listed */'; put '%if &all_cnt>0 %then %do;'; put '%put all_cnt=&all_cnt;'; put '%return;'; put '%end;'; put '/* scenario 4 - specific librefs listed */'; put '%if &securitygroupscount>0 %then %do;'; put '%put scenario 4;'; put '%put securitygroupscount=&securitygroupscount;'; put 'proc sql;'; put 'delete from mm_getLibs'; put 'where upcase(libraryref) not in (select upcase(libref) from matches);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic error!)'; put ')'; put '%mend mpestp_viewlibs;'; put '%mpestp_viewlibs()'; put '%global dc_viewlib_check;'; put '/**'; put '* deal with invalid and duplicate library definitions'; put '*/'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if symget(''dc_viewlib_check'')=''YES'' then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings'; put '*/'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sort data=mm_getlibs (keep=&keepvars);'; put 'by libraryname;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR, mm_getLibs)'; put '%mm_webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewlibs; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewlibs.sas'; put '@brief List the libraries for view access'; put '@details'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '@li mp_abort.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt.lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches where libref=''*ALL*'';'; put '%put securitygroupscount=&securitygroupscount;'; put '%put ALL_CNT=&ALL_CNT;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewlibs();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %do;'; put '%put user in admin group (scenario1=&scenario1);'; put '%return;'; put '%end;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put '%return;'; put '%end;'; put '/* scenario 3 - an *ALL* libref is listed */'; put '%if &all_cnt>0 %then %do;'; put '%put all_cnt=&all_cnt;'; put '%return;'; put '%end;'; put '/* scenario 4 - specific librefs listed */'; put '%if &securitygroupscount>0 %then %do;'; put '%put scenario 4;'; put '%put securitygroupscount=&securitygroupscount;'; put 'proc sql;'; put 'delete from mm_getLibs'; put 'where upcase(libraryref) not in (select upcase(libref) from matches);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put '%put DC_RESTRICT_VIEWER=&DC_RESTRICT_VIEWER;'; put '%put securitygroupscount=&securitygroupscount;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic err!)'; put ')'; put '%mend mpestp_viewlibs;'; put '%mpestp_viewlibs()'; put '%global dc_viewlib_check;'; put '/**'; put '* deal with invalid and duplicate library definitions'; put '*/'; put 'proc sort data=mm_getlibs;'; put 'by libraryref libraryname;'; put 'run;'; put 'data mm_getlibs;'; put 'set mm_getlibs;'; put 'by libraryref;'; put 'if symget(''dc_viewlib_check'')=''YES'' then do;'; put '/* note - invalid libraries can result in exception errors. If this happens,'; put 'configure the dc_viewlib_check variable to NO in Data Controller Settings'; put '*/'; put 'rc=libname(libraryref,,''meta'',cats(''library="'',libraryname,''";''));'; put 'drop rc;'; put 'if rc ne 0 then do;'; put 'putlog "NOTE: Library " libraryname " does not exist!!";'; put 'putlog (_all_) (=);'; put 'delete;'; put 'end;'; put 'end;'; put 'if not first.libraryref then delete;'; put 'run;'; put 'proc sort data=mm_getlibs out=saslibs;'; put 'by libraryname;'; put 'run;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%webout(OPEN)'; put '%webout(OBJ,saslibs)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=viewtables; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro dc_getusergroups(user=,outds=mm_getgroups);'; put '%global dc_repo_users;'; put '%if &dc_repo_users= %then %let dc_repo_users=foundation;'; put '%mm_getgroups(user=&user,outds=&outds,repo=&dc_repo_users)'; put '%mend dc_getusergroups;'; put '%macro mpe_getgroups(user=,outds=);'; put '%if not %symexist(dc_repo_users) %then %let dc_repo_users=foundation;'; put '%dc_getusergroups(user=&user,outds=&outds)'; put 'data;'; put 'length groupname groupdesc $256;'; put 'set &dc_libref..mpe_groups;'; put 'where &dc_dttmtfmt. lt tx_to;'; put 'where also upcase(user_name)="%upcase(&user)";'; put 'groupname=group_name;'; put 'groupdesc=group_desc;'; put 'keep groupname groupdesc;'; put 'run;'; put 'data &outds;'; put 'set &syslast &outds(keep=groupname groupdesc);'; put 'run;'; put '%mend mpe_getgroups;'; put '%macro mpe_getvars(injs,outds);'; put '/* load parameters */'; put 'data _null_;'; put '__dummychar='''';__dummynum=0;'; put 'set &outds;'; put 'array __charvals _character_;'; put 'do over __charvals;'; put 'call symputx(vname(__charvals),__charvals,''g'');'; put 'end;'; put 'array __numvals _numeric_;'; put 'do over __numvals;'; put 'call symputx(vname(__numvals),__numvals,''g'');'; put 'end;'; put 'run;'; put '%mend mpe_getvars;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file viewtables.sas'; put '@brief List the tables and format catalogs the user can view'; put '@details Provide a library and get list of tables and catalogs. Also return'; put 'the libinfo details.'; put '

Service Inputs

'; put '
SASControlTable
'; put 'Just one input - MPLIB (the libref to get tables and info for)'; put '|MPLIB:$char8.|'; put '|---|'; put '|SOMELIB|'; put '

Service Outputs

'; put '
work.mptables
'; put '|MEMNAME:$char32.|'; put '|---|'; put '|DS1|'; put '|DS2|'; put '|DS3|'; put 'etc'; put '
work.libinfo
'; put 'If attributes are empty, they don''t need to be shown on screen.'; put '|engine $|libname $|paths $|perms $|owners $|schemas $ |libid $|libsize $|table_cnt |'; put '|---|---|---|---|---|---|---|---|---|'; put '|V9|SOMELIB|"some/path"|rwxrwxr-x|sassrv|` `|` `|636MB|33|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getuser.sas'; put '@li mpe_getgroups.sas'; put '@li mpe_getvars.sas'; put '@li mpeinit.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%global MPLIB;'; put '/* load parameters */'; put '%mpe_getvars(SASControlTable, SASControlTable)'; put '/**'; put '* assign the Library'; put '*/'; put '%put &=MPLIB;'; put '%dc_assignlib(READ,&MPLIB)'; put '%mp_abort(iftrue= (&syscc ne 0 )'; put ',mac=&_program..sas'; put ',msg=%str(Unable to assign &mplib library)'; put ')'; put '/**'; put '* get the tables'; put '*/'; put 'data members; /* empty table */'; put 'name='''';'; put 'memtype='''';'; put 'run;'; put 'ods output Members=Members;'; put 'proc datasets library=&mplib ;'; put 'quit;'; put '/* cannot avoid the proc datasets warn!ng for an empty lib */'; put '/* nolist means no output and nowarn has no effect */'; put '%put &=syscc;'; put 'data _null_;'; put 'if "&syscc" ne "0" then do;'; put 'putlog "Library &mplib is empty, setting syscc to zero";'; put 'call symputx(''syscc'',0);'; put 'end;'; put 'run;'; put '%put &=syscc;'; put 'proc sql;'; put 'create table work.mptables as'; put 'select distinct case when memtype=''CATALOG'' then cats(name,''-FC'')'; put 'else name end as memname'; put 'from members;'; put '/* get security groups */'; put '%mpe_getgroups(user=%mf_getuser(),outds=groups)'; put '/* get security settings */'; put 'data sec;'; put 'set &mpelib..mpe_security;'; put 'where &dc_dttmtfmt. lt tx_to and ACCESS_LEVEL=''VIEW'';'; put 'where also libref in (''*ALL*'',"%upcase(&mplib)");'; put 'run;'; put '/* check for any matching groups */'; put 'proc sql noprint;'; put 'create table matches as'; put 'select * from sec'; put 'where upcase(sas_group) in (select upcase(groupname) from groups);'; put 'select count(*) into: securitygroupscount from matches;'; put 'select count(*) into: ALL_CNT from matches'; put 'where libref=''*ALL*'''; put 'or (libref="&mplib" and dsn=''*ALL*'');'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put '%macro mpestp_viewtables();'; put '%if not %symexist(DC_RESTRICT_VIEWER) %then %let DC_RESTRICT_VIEWER=NO;'; put '/* scenario 1 - user is in admin group, hence can view all libraries */'; put 'proc sql noprint;'; put 'select count(*) into: scenario1 from groups where groupname="&mpeadmins";'; put '%if &scenario1>0 %then %return;'; put '/* scenario 2 - viewer unrestricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=NO and &securitygroupscount=0 %then %return;'; put '/* scenario 3 - an *ALL* libref or DSN is listed */'; put '%if &all_cnt>0 %then %return;'; put '/* scenario 4 - specific tables listed */'; put '%if &securitygroupscount>0 %then %do;'; put 'proc sql;'; put 'delete from mptables'; put 'where upcase(memname) not in (select upcase(dsn) from sec);'; put '%return;'; put '%end;'; put '/* viewer restricted and no groups listed */'; put '%if &DC_RESTRICT_VIEWER=YES and &securitygroupscount=0 %then %do;'; put 'data mptables;'; put 'set mptables;'; put 'stop;'; put 'run;'; put '%return;'; put '%end;'; put '%mp_abort(iftrue= (1=1)'; put ',mac=&_program..sas'; put ',msg=%str(unhandled security logic error!)'; put ')'; put '%mend mpestp_viewtables;'; put '%mpestp_viewtables()'; put '/* get libinfo */'; put 'proc sql;'; put 'create table work.libinfo as'; put 'select a.engine,'; put 'a.libname,'; put 'a.paths,'; put 'a.perms,'; put 'a.owners,'; put 'a.schemas,'; put 'a.libid,'; put 'coalesce(b.libsize,0) as libsize,'; put 'coalesce(b.table_cnt,0) as table_cnt'; put 'from &mpelib..mpe_datacatalog_libs(where=(&dc_dttmtfmt. lt tx_to)) a'; put 'left join &mpelib..mpe_datastatus_libs(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.libref=b.libref'; put 'where a.libref="&MPLIB";'; put '%webout(OPEN)'; put '%webout(OBJ,mptables)'; put '%webout(OBJ,libinfo)'; put '%webout(CLOSE)'; put '%mpeterm()'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/usernav; %let service=usergroupsbymember; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getusers('; put 'outds=work.mm_getusers,'; put 'user=0'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put '%if %superq(user)=0 %then %do;'; put 'proc metadata in= '''; put '$METAREPOSITORY'; put 'Person'; put 'SAS'; put '0'; put ''; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename inref temp;'; put 'data _null_;'; put 'file inref;'; put 'put "";'; put 'put "$METAREPOSITORY";'; put 'put "Person";'; put 'put "SAS";'; put 'put "";'; put 'put "128";'; put 'put "";'; put 'put "";'; put 'put '''';'; put 'put "";'; put 'length string $10000;'; put 'string=cats('''');'; put 'put string;'; put 'put "";'; put 'put "";'; put 'run;'; put 'proc metadata in=inref out=response;'; put 'run;'; put '%end;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Id";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Name";'; put 'put "characterstring256";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getusers;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usergroupsbymember.sas'; put '@brief List the groups a member is in'; put '@details Runs without \%mpeinit() - this enables the dropdown to be populated'; put 'during configuration, when the settings service does not yet exist.'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mm_getusers.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%macro x();'; put '%if %sysfunc(exist(work.iwant)) ne 1 %then %do;'; put '/* macro called by configurator - grab the URI of calling user */'; put '%mm_getusers(user=&_metaperson, outds=work.iwant)'; put '%end;'; put '%mend x;'; put '%x()'; put 'data groups'; put 'roles(rename=(groupuri=roleuri groupname=rolename groupdesc=roledesc)) ;'; put 'length uri groupuri groupname groupdesc publictype str $256;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "WARNING: No groups found for ";'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri, "PublicType", PublicType);'; put 'a+1;'; put 'if PublicType = ''Role'' then output roles;'; put 'else output groups;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'keep groupuri groupname groupdesc;'; put 'if _n_=1 then delete; /* no content so don''t send empty row */'; put 'run;'; put 'data emails;'; put 'keep email type;'; put 'length emailuri email type uri str $256;'; put 'call missing(of _all_);'; put 'set iwant;'; put '/* credit'; put 'https://seleritysas.com/data-step-view-of-email-addresses-in-sas-metadata'; put '*/'; put 'emailrc=1;email_count=1;'; put 'do while(emailrc>0);'; put '/* Get Email from Person */'; put 'emailrc=metadata_getnasn(uri,"EmailAddresses",email_count,emailuri);'; put 'arc=1;'; put 'if (emailrc>0) then do;'; put 'arc=metadata_getattr(emailuri,"Address",email);'; put 'arc=metadata_getattr(emailuri,"EmailType",type);'; put 'end;'; put 'if (arc=0) then output emails;'; put 'email_count=email_count+1;'; put 'end;'; put 'run;'; put 'data logins;'; put 'length domain userid loginuri domainuri uri $256;'; put 'keep domain userid;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'login_count=1;'; put 'do while(metadata_getnasn(uri,"Logins",login_count,loginuri)>0);'; put 'rc=metadata_getattr(loginuri,"UserID",userid);'; put 'rc=metadata_getnasn(loginuri,"Domain",1,domainuri);'; put 'rc=metadata_getattr(domainuri,"Name",domain);'; put 'output;'; put 'login_count+1;'; put 'end;'; put 'run;'; put 'data info;'; put 'length uri name displayname metadatacreated metadataupdated $256;'; put 'keep name displayname metadatacreated metadataupdated;'; put 'call missing(of _all_);'; put 'set iwant;'; put 'rc=metadata_getattr(uri,"Name",name);'; put 'rc=metadata_getattr(uri,"DisplayName",displayname);'; put 'rc=metadata_getattr(uri,"MetadataCreated",MetadataCreated);'; put 'rc=metadata_getattr(uri,"MetadataUpdated",MetadataUpdated);'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,emails)'; put '%webout(OBJ,groups)'; put '%webout(OBJ,roles)'; put '%webout(OBJ,logins)'; put '%webout(OBJ,info)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembers; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getusers('; put 'outds=work.mm_getusers,'; put 'user=0'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put '%if %superq(user)=0 %then %do;'; put 'proc metadata in= '''; put '$METAREPOSITORY'; put 'Person'; put 'SAS'; put '0'; put ''; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put '%end;'; put '%else %do;'; put 'filename inref temp;'; put 'data _null_;'; put 'file inref;'; put 'put "";'; put 'put "$METAREPOSITORY";'; put 'put "Person";'; put 'put "SAS";'; put 'put "";'; put 'put "128";'; put 'put "";'; put 'put "";'; put 'put '''';'; put 'put "";'; put 'length string $10000;'; put 'string=cats('''');'; put 'put string;'; put 'put "";'; put 'put "";'; put 'run;'; put 'proc metadata in=inref out=response;'; put 'run;'; put '%end;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Id";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/Person/@Name";'; put 'put "characterstring256";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASObjects out=&outds;'; put 'by name;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getusers;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getusers(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getusers(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getusers(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getusers;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembers.sas'; put '@brief List all SAS users'; put '@details Gets a list of all SAS users'; put '

SAS Macros

'; put '@li dc_getusers.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%dc_getusers(outds=users)'; put '%webout(OPEN)'; put '%webout(OBJ,users)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembersbygroup; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbygroup.sas'; put '@brief List the members of a group'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@version 9.3'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'data sasMembers ;'; put 'attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType'; put 'MemberUpdated membercreated emailuri length=$64'; put 'GroupDesc email length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'drop uriGrp rcGrp rcMem rc i j;'; put 'set iwant;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put 'rcGrp=metadata_getnobj(groupid,i,uriGrp);'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role'; put ',MemberName,MemberType);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",GroupId);'; put 'rc = metadata_getattr(uriGrp,"Name",GroupName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",GroupDesc);'; put 'j=1;'; put 'do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName,MemberType);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'rc=metadata_getattr(uriMem, "MetadataCreated", MemberCreated);'; put 'rc=metadata_getattr(uriMem, "MetadataUpdated", MemberUpdated);'; put 'emailrc=metadata_getnasn(uriMem,"EmailAddresses",1,emailuri);'; put 'if (emailrc>0) then rc=metadata_getattr(emailuri,"Address",email);'; put 'output;'; put 'j+1;'; put 'call missing(email,emailuri);'; put 'end;'; put 'end;'; put 'if _n_=1 then delete;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasMembers)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=usermembersbyrole; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file usermembersbyrole.sas'; put '@brief List the members of a role'; put '

SAS Macros

'; put '@li mp_abort.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put 'data sasMembers sasgroups;'; put 'attrib uriGrp uriMem roleId roleName Group_or_Role MemberName MemberType'; put 'MemberUpdated membercreated emailuri length=$64'; put 'roleDesc email length=$256'; put 'rcGrp rcMem rc i j length=3;'; put 'call missing (of _all_);'; put 'set iwant;'; put 'i=1;'; put '* Grab the URI for the first Group ;'; put 'rcGrp=metadata_getnobj(roleid,i,uriGrp);'; put '* If Group found, enter do loop ;'; put 'if rcGrp>0 then do;'; put 'call missing (rcMem,uriMem,roleId,roleName,Group_or_Role'; put ',MemberName,MemberType,roleDesc);'; put '* get group info ;'; put 'rc = metadata_getattr(uriGrp,"Id",roleId);'; put 'rc = metadata_getattr(uriGrp,"Name",roleName);'; put 'rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);'; put 'rc = metadata_getattr(uriGrp,"Desc",roleDesc);'; put 'j=1;'; put 'if Group_or_Role=''Role'' then do while'; put '(metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);'; put 'call missing (MemberName,MemberType);'; put 'call missing(email,emailuri);'; put 'rc = metadata_getattr(uriMem,"Name",MemberName);'; put 'rc = metadata_getattr(uriMem,"PublicType",MemberType);'; put 'rc=metadata_getattr(uriMem, "MetadataCreated", MemberCreated);'; put 'rc=metadata_getattr(uriMem, "MetadataUpdated", MemberUpdated);'; put 'emailrc=metadata_getnasn(uriMem,"EmailAddresses",1,emailuri);'; put 'if (emailrc>0) then rc=metadata_getattr(emailuri,"Address",email);'; put 'if membertype=''UserGroup'' then output sasgroups;'; put 'else output sasmembers;'; put 'j+1;'; put 'end;'; put 'end;'; put 'if _n_=1 then delete; /* no roles so don''t send empty row */'; put 'keep uriMem membertype membername MemberCreated MemberUpdated email;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,sasGroups)'; put '%webout(OBJ,sasMembers)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=userroles; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getroles('; put 'outds=work.mm_getroles'; put ')/*/STORE SOURCE*/;'; put 'filename response temp;'; put 'options noquotelenmax;'; put 'proc metadata in= ''$METAREPOSITORY'; put 'IdentityGroupSAS388'; put ''; put ''; put ''; put ''; put ''''; put 'out=response;'; put 'run;'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup";'; put 'put "";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Id";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Name";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put "/GetMetadataObjects/Objects/IdentityGroup/@Desc";'; put 'put "";'; put 'put "characterstring500";'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.roles out=&outds;'; put 'by rolename;'; put 'run;'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getroles;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getroles(outds=mm_getroles);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getroles(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getroles(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getroles;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file userroles.sas'; put '@brief List all SAS Roles'; put '@details Gets a list of all SAS Roles'; put '

SAS Macros

'; put '@li dc_getroles.sas'; put '@li mpeinit.sas'; put '@author 4GL Apps Ltd'; put '@copyright 4GL Apps Ltd. This code may only be used within Data Controller'; put 'and may not be re-distributed or re-sold without the express permission of'; put '4GL Apps Ltd.'; put '**/'; put '%mpeinit()'; put '%dc_getroles(outds=roles)'; put '%webout(OPEN)'; put '%webout(OBJ,roles)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/validations; %let service=columns_in_libds; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '%macro mf_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; put '%macro mp_validatecol(incol,rule,outcol);'; put '/* tempcol is given a unique name with every invocation */'; put '%local tempcol;'; put '%let tempcol=%mf_getuniquename();'; put '%if &rule=ISINT %then %do;'; put '&outcol=0;'; put 'if not missing(&incol) then do;'; put '&tempcol=input(&incol,?? best32.);'; put 'if not missing(&tempcol) then if mod(&tempcol,1)=0 then &outcol=1;'; put 'end;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=ISNUM %then %do;'; put '/*'; put 'credit SØREN LASSEN'; put 'https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html'; put '*/'; put '&tempcol=input(&incol,?? best32.);'; put 'if missing(&tempcol) then &outcol=0;'; put 'else &outcol=1;'; put 'drop &tempcol;'; put '%end;'; put '%else %if &rule=LIBDS %then %do;'; put '/* match libref.dataset */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for LIBDS";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%else %if &rule=FORMAT %then %do;'; put '/* match valid format - regex could probably be improved */'; put 'if _n_=1 then do;'; put 'retain &tempcol;'; put '&tempcol=prxparse(''/^[_a-z\$]\w{0,31}\.[0-9]*$/i'');'; put 'if missing(&tempcol) then do;'; put 'putlog "%str(ERR)OR: Invalid expression for FORMAT";'; put 'stop;'; put 'end;'; put 'drop &tempcol;'; put 'end;'; put 'if prxmatch(&tempcol, trim(&incol)) then &outcol=1;'; put 'else &outcol=0;'; put '%end;'; put '%mend mp_validatecol;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for table columns'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

'; put '
work.sourcerow
'; put 'Has source table structure.'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_getuniquename.sas'; put '@li mp_abort.sas'; put '@li mp_validatecol.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlibds=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlibds=%mf_getuniquename();'; put '%let var_is_libds=%mf_getuniquename();'; put 'data _null_;'; put 'length xl_libref base_lib select_lib rls_libref cls_libref libref $8'; put 'xl_table base_ds select_ds rls_table cls_table dsn $32;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.source_row;'; put '&varlibds=symget(''libds'');'; put 'if &varlibds="&mpelib..MPE_EXCEL_CONFIG"'; put 'then &vartgtlibds=cats(xl_libref,''.'',xl_table);'; put 'else if &varlibds="&mpelib..MPE_VALIDATIONS"'; put 'then &vartgtlibds=cats(BASE_LIB,''.'',BASE_DS);'; put 'else if &varlibds="&mpelib..MPE_SELECTBOX"'; put 'then &vartgtlibds=cats(select_lib,''.'',select_ds);'; put 'else if &varlibds="&mpelib..MPE_ROW_LEVEL_SECURITY"'; put 'then &vartgtlibds=cats(RLS_LIBREF,''.'',RLS_TABLE);'; put 'else if &varlibds="&mpelib..MPE_COLUMN_LEVEL_SECURITY"'; put 'then &vartgtlibds=cats(CLS_LIBREF,''.'',CLS_TABLE);'; put 'else if &varlibds="&mpelib..MPE_TABLES"'; put 'then &vartgtlibds=cats(LIBREF,''.'',DSN);'; put '/* validate libds */'; put '%mp_validatecol(&vartgtlibds,LIBDS,&var_is_libds)'; put 'if &var_is_libds=1 then call symputx(''tgtlibds'',&vartgtlibds);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlibds" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Unable to extract libds vars from &libds inputs for &variable_nm)'; put ')'; put '%dc_assignlib(READ,%scan(&tgtlibds,1,.))'; put 'proc contents noprint data=&tgtlibds'; put 'out=work.DYNAMIC_VALUES (keep=name rename=(name=display_value) );'; put 'run;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.DYNAMIC_VALUES;'; put 'raw_value=upcase(display_value);'; put 'format raw_value;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=libraries_all; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '/**'; put '* get full list of libraries'; put '*/'; put '%dc_getlibs(outds=work.mm_getLibs)'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct libraryname as display_value,'; put 'upcase(libraryref) as raw_value'; put 'from work.mm_getLibs'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=libraries_editable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct libref as display_value,'; put 'upcase(libref) as raw_value'; put 'from &mpelib..mpe_tables'; put 'where &dc_dttmtfmt. < tx_to'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_alerts.alert_lib; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch extended values for alert_lib'; put '@details Fetches libraries from mpe_tables, creates extended values for'; put 'alert_ds, and marks "*ALL*" as the forced (default) value.'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put 'The FORCED_VALUE column can be used to force an extended value to be selected'; put 'by default when a particular value is chosen.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|FORCED_VALUE|'; put '|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|1|DISCOUNT_RT|"40%"|N|0.4||0|'; put '|1|DISCOUNT_RT|"30%"|N|0.3||1|'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|.|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|.|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|2|DISCOUNT_RT|"40%"|N|0.4||1|'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|.|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|1|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '%mp_abort(iftrue= ("%upcase(&libds)" ne "&DC_LIBREF..MPE_ALERTS" )'; put ',mac=&_program'; put ',msg=%str('; put 'Invalid validation, expected MPE_ALERTS.ALERT_LIB, got %superq(libds)'; put ')'; put ')'; put 'proc sql;'; put 'create table work.source as'; put 'select libref,dsn'; put 'from &DC_LIBREF..MPE_TABLES'; put 'where tx_to > &dc_dttmtfmt.'; put 'order by 1,2;'; put 'data work.DYNAMIC_VALUES (keep=display_index raw_value display_value);'; put 'set work.source end=last;'; put 'by libref;'; put 'if last.libref then do;'; put 'display_index+1;'; put 'raw_value=libref;'; put 'display_value=libref;'; put 'output;'; put 'end;'; put 'if last then do;'; put 'display_index+1;'; put 'raw_value=''*ALL*'';'; put 'display_value=''*ALL*'';'; put 'output;'; put 'end;'; put 'run;'; put 'data work.dynamic_extended_values(keep=display_index extra_col_name display_type'; put 'display_value RAW_VALUE_CHAR raw_value_num forced_value);'; put 'set work.source end=last;'; put 'by libref dsn;'; put 'retain extra_col_name ''ALERT_DS'';'; put 'retain display_type ''C'';'; put 'retain raw_value_num .;'; put 'raw_value_char=dsn;'; put 'display_value=dsn;'; put 'forced_value=0;'; put 'if first.libref then display_index+1;'; put 'if last.libref then do;'; put 'display_value=''*ALL*'';'; put 'raw_value_char=''*ALL*'';'; put 'forced_value=1;'; put 'output;'; put 'end;'; put 'else output;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_tables.dsn; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief fetch extended values for DSN'; put '@details Fetches datasets in a library, and ALSO fetches a list of numeric'; put 'vars for each dataset for use in adjacent columns (such as VAR_PROCESSED,'; put 'TX_TO etc).'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put 'The FORCED_VALUE column can be used to force an extended value to be selected'; put 'by default when a particular value is chosen.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|FORCED_VALUE|'; put '|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|1|DISCOUNT_RT|"40%"|N|0.4||0|'; put '|1|DISCOUNT_RT|"30%"|N|0.3||1|'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|.|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|.|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||.|'; put '|2|DISCOUNT_RT|"40%"|N|0.4||1|'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|.|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|1|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlib=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlib=%mf_getuniquename();'; put '%let var_is_lib=%mf_getuniquename();'; put 'data _null_;'; put 'length &varlibds $41 &vartgtlib $8;'; put 'set work.source_row;'; put '&varlibds=upcase(symget(''libds''));'; put 'if &varlibds="&mpelib..MPE_TABLES" then &vartgtlib=LIBREF;'; put 'else putlog "something unexpected happened";'; put '/* validate name */'; put 'if nvalid(&vartgtlib,''v7'') then call symputx(''tgtlib'',&vartgtlib);'; put 'call symputx(''vartgtlib'',&vartgtlib);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlib" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Invalid library - %superq(vartgtlib))'; put ',errds=work.dc_error_response'; put ')'; put '%dc_assignlib(READ,&tgtlib)'; put 'proc sql;'; put 'create table work.source as'; put 'select upcase(memname) as memname'; put ',upcase(name) as name'; put ',type'; put 'from dictionary.columns'; put 'where libname="&TGTLIB"'; put 'and memtype=''DATA'';'; put 'create table work.members as'; put 'select distinct memname as display_value'; put 'from work.source;'; put 'data work.DYNAMIC_VALUES;'; put 'set work.members;'; put 'raw_value=display_value;'; put 'display_index=_n_;'; put 'run;'; put 'proc sql;'; put 'create table work.dynamic_extended_values as'; put 'select a.display_index'; put ',b.name as display_value'; put ',"C" as display_type'; put ',b.name as RAW_VALUE_CHAR'; put ',. as RAW_VALUE_NUM'; put 'from work.dynamic_values a'; put 'left join work.source b'; put 'on a.display_value=b.memname'; put 'where b.type=''num'';'; put 'data work.dynamic_extended_values;'; put 'set work.DYNAMIC_EXTENDED_VALUES;'; put 'extra_col_name=''VAR_PROCESSED'';output;'; put 'extra_col_name=''VAR_TXFROM'';output;'; put 'extra_col_name=''VAR_TXTO'';output;'; put 'extra_col_name=''VAR_BUSFROM'';output;'; put 'extra_col_name=''VAR_BUSTO'';output;'; put 'run;'; put '/* set some force flags */'; put 'data work.dynamic_extended_values;'; put 'set work.DYNAMIC_EXTENDED_VALUES;'; put 'forced_value=0;'; put 'if extra_col_name=''VAR_TXFROM'' & raw_value_char=''TX_FROM'' then forced_value=1;'; put 'if extra_col_name=''VAR_TXTO'' & raw_value_char=''TX_TO'' then forced_value=1;'; put 'run;'; put 'proc sort;'; put 'by extra_col_name display_index;'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_x_test.some_num; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getlibs('; put 'outds=work.mm_getLibs'; put ')/*/STORE SOURCE*/;'; put '/*'; put 'flags:'; put 'OMI_SUCCINCT (2048) Do not return attributes with null values.'; put 'OMI_GET_METADATA (256) Executes a GetMetadata call for each object that'; put 'is returned by the GetMetadataObjects method.'; put 'OMI_ALL_SIMPLE (8) Gets all of the attributes of the requested object.'; put '*/'; put 'data _null_;'; put 'flags=2048+256+8;'; put 'call symputx(''flags'',flags,''l'');'; put 'run;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put ''''; put '$METAREPOSITORY'; put 'SASLibrary'; put ''; put 'SAS'; put '&flags'; put ''; put ''''; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put 'data _null_;'; put 'infile response lrecl=32767;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put '''';'; put 'put ''//Objects/SASLibrary'';'; put 'put ''>17'';'; put 'put ''//Objects/SASLibrary/@Id'';'; put 'put ''256>'';'; put 'put ''//Objects/SASLibrary/@Name'';'; put 'put ''8'';'; put 'put ''//Objects/SASLibrary/@Libref'';'; put 'put ''>12'';'; put 'put ''//Objects/SASLibrary/@Engine'';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put '/* sort the response by library name */'; put 'proc sort data=_XML_.saslibrary out=&outds;'; put 'by libraryname;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getlibs;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getlibs(outds=mm_getlibs);'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(''repo''!!cats(_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getlibs(outds=&outds)'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put '%mm_getlibs(outds=&outds.a)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_getlibs;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li DC_LIBREF - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'Output should be a single table called "work.dynamic_values" in the format'; put 'below. display_value should always be character, raw_value is unformatted'; put 'character/numeric.'; put '|DISPLAY_VALUE:$|RAW_VALUE:??|'; put '|---|---|'; put '|$44.00|44|'; put '

SAS Macros

'; put '@li dc_getlibs.sas'; put '**/'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct cats(some_num) as display_value,'; put 'some_num as raw_value'; put 'from &libds'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=sas_groups; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_getGroups('; put 'user='; put ',outds=work.mm_getGroups'; put ',repo=foundation'; put ',mDebug=0'; put ')/*/STORE SOURCE*/;'; put '%local mD oldrepo;'; put '%let oldrepo=%sysfunc(getoption(metarepository));'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_getGroups.sas;'; put '%&mD.put _local_;'; put '/* on some sites, user / group info is in a different metadata repo to the'; put 'default */'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&repo;'; put '%end;'; put '%if %length(&user)=0 %then %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'i+1;'; put 'do while'; put '(metadata_getnobj("omsobj:IdentityGroup?@Id contains ''.''",i,groupuri)>0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'i+1;'; put 'end;'; put 'run;'; put '%end;'; put '%else %do;'; put 'data &outds (keep=groupuri groupname groupdesc);'; put 'length uri groupuri groupname groupdesc group_or_role $256;'; put 'call missing(of _all_);'; put 'rc=metadata_getnobj("omsobj:Person?@Name=''&user''",1,uri);'; put 'if rc<=0 then do;'; put 'putlog "%str(WARN)ING: rc=" rc "&user not found "'; put '", or there was an issue reading the repository.";'; put 'stop;'; put 'end;'; put 'a=1;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'if grpassn in (-3,-4) then do;'; put 'putlog "%str(WARN)ING: No metadata groups found for &user";'; put 'output;'; put 'end;'; put 'else do while (grpassn > 0);'; put 'rc=metadata_getattr(groupuri, "Name", groupname);'; put 'rc=metadata_getattr(groupuri, "Desc", groupdesc);'; put 'a+1;'; put 'rc=metadata_getattr(groupuri,"PublicType",group_or_role);'; put 'if Group_or_Role = ''UserGroup'' then output;'; put 'grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);'; put 'end;'; put 'run;'; put '%end;'; put '%if &oldrepo ne &repo %then %do;'; put 'options metarepository=&oldrepo;'; put '%end;'; put '%mend mm_getGroups;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_getgroups(outds=mm_getlibs);'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '%put _local_;'; put '%mm_getgroups(outds=&outds,repo=foundation)'; put '%do x=1 %to &repocnt;'; put '%mm_getgroups(outds=&outds.a, repo=&&repo&x)'; put 'proc append base=&outds data=&outds.a;'; put 'run;'; put '%end;'; put 'proc sort data=&outds noduprec;'; put 'by groupname;'; put 'run;'; put '%mend dc_getgroups;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief validating the mpe_security.sas_group column'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_getgroups.sas'; put '**/'; put '%dc_getgroups(outds=groups)'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct groupname as display_value,'; put 'groupname as raw_value'; put 'from work.groups'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=tables_all; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '%macro mm_assignlib('; put 'libref'; put ',mAbort=HARD'; put ')/*/STORE SOURCE*/;'; put '%local mp_abort msg;'; put '%let mp_abort=0;'; put '%if %sysfunc(libref(&libref)) %then %do;'; put 'data _null_;'; put 'length liburi LibName msg $200;'; put 'call missing(of _all_);'; put 'nobj=metadata_getnobj("omsobj:SASLibrary?@Libref=''&libref''",1,liburi);'; put 'if nobj=1 then do;'; put 'rc=metadata_getattr(liburi,"Name",LibName);'; put '/* now try and assign it */'; put 'if libname("&libref",,''meta'',cats(''liburi="'',liburi,''";'')) ne 0 then do;'; put 'putlog "&libref could not be assigned";'; put 'putlog liburi=;'; put '/**'; put '* Fetch the system message for display in the abort modal. This is'; put '* not always helpful though. One example, previously received:'; put '* NOTE: Libref XX refers to the same library metadata as libref XX.'; put '*/'; put 'msg=sysmsg();'; put 'if msg=:''ERROR: Libref SAVE is not assigned.'' then do;'; put 'msg=catx(" ",'; put '"Could not assign %upcase(&libref).",'; put '"Please check metadata permissions! Libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'else if msg="ERROR: User does not have appropriate authorization "!!'; put '"level for library SAVE."'; put 'then do;'; put 'msg=catx(" ",'; put '"ERROR: User does not have appropriate authorization level",'; put '"for library %upcase(&libref), libname:",libname,'; put '"Liburi:",liburi'; put ');'; put 'end;'; put 'call symputx(''msg'',msg,''l'');'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1,''l'');'; put 'end;'; put 'else do;'; put 'put (_all_)(=);'; put 'call symputx(''libname'',libname,''L'');'; put 'call symputx(''liburi'',liburi,''L'');'; put 'end;'; put 'end;'; put 'else if nobj>1 then do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"More than one library with libref=&libref");'; put 'end;'; put 'else do;'; put 'if "&mabort"=''HARD'' then call symputx(''mp_abort'',1);'; put 'call symputx(''msg'',"Library &libref not found in metadata");'; put 'end;'; put 'run;'; put '%put NOTE: &msg;'; put '%end;'; put '%else %do;'; put '%put NOTE: Library &libref is already assigned;'; put '%end;'; put '%mp_abort(iftrue= (&mp_abort=1)'; put ',mac=mm_assignlib.sas'; put ',msg=%superq(msg)'; put ')'; put '%mend mm_assignlib;'; put '/** @cond */'; put '%macro mf_getengine(libref'; put ')/*/STORE SOURCE*/;'; put '%local dsid engnum rc engine;'; put '/* in case the parameter is a libref.tablename, pull off just the libref */'; put '%let libref = %upcase(%scan(&libref, 1, %str(.)));'; put '%let dsid=%sysfunc('; put 'open(sashelp.vlibnam(where=(libname="%upcase(&libref)")),i)'; put ');'; put '%if (&dsid ^= 0) %then %do;'; put '%let engnum=%sysfunc(varnum(&dsid,ENGINE));'; put '%let rc=%sysfunc(fetch(&dsid));'; put '%let engine=%sysfunc(getvarc(&dsid,&engnum));'; put '%put &libref. ENGINE is &engine.;'; put '%let rc= %sysfunc(close(&dsid));'; put '%end;'; put '%upcase(&engine)'; put '%mend mf_getengine;'; put '/** @endcond */'; put '%macro mm_assigndirectlib('; put 'libref /* libref to assign from metadata */'; put ',open_passthrough= /* provide an alias to produce the'; put 'CONNECT TO statement for the'; put 'relevant external database */'; put ',sql_options= /* add any options to add to proc sql statement eg outobs='; put '(only valid for pass through) */'; put ',mDebug=0'; put ',mAbort=0'; put ')/*/STORE SOURCE*/;'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing mm_assigndirectlib.sas;'; put '%&mD.put _local_;'; put '%if &mAbort=1 %then %let mAbort=;'; put '%else %let mAbort=%str(*);'; put '%&mD.put NOTE: Creating direct (non META) connection to &libref library;'; put '%local cur_engine;'; put '%let cur_engine=%mf_getengine(&libref);'; put '%if &cur_engine ne META and &cur_engine ne %then %do;'; put '%put NOTE: &libref already has a direct (&cur_engine) libname connection;'; put '%return;'; put '%end;'; put '%else %if %upcase(&libref)=WORK %then %do;'; put '%put NOTE: We already have a direct connection to WORK :-) ;'; put '%return;'; put '%end;'; put '/* need to determine the library ENGINE first */'; put '%local engine;'; put 'data _null_;'; put 'length lib_uri engine $256;'; put 'call missing (of _all_);'; put '/* get URI for the particular library */'; put 'rc1=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put '/* get the Engine attribute of the previous object */'; put 'rc2=metadata_getattr(lib_uri,''Engine'',engine);'; put 'putlog "mm_assigndirectlib for &libref:" rc1= lib_uri= rc2= engine=;'; put 'call symputx("liburi",lib_uri,''l'');'; put 'call symputx("engine",engine,''l'');'; put 'run;'; put '/* now obtain engine specific connection details */'; put '%if &engine=BASE %then %do;'; put '%&mD.put NOTE: Retrieving BASE library path;'; put 'data _null_;'; put 'length up_uri $256 path cat_path $1024;'; put 'retain cat_path;'; put 'call missing (of _all_);'; put '/* get all the filepaths of the UsingPackages association */'; put 'i=1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'do while (rc3>0);'; put '/* get the DirectoryName attribute of the previous object */'; put 'rc4=metadata_getattr(up_uri,''DirectoryName'',path);'; put 'if i=1 then path = ''("''!!trim(path)!!''" '';'; put 'else path ='' "''!!trim(path)!!''" '';'; put 'cat_path = trim(cat_path) !! " " !! trim(path) ;'; put 'i+1;'; put 'rc3=metadata_getnasn("&liburi",''UsingPackages'',i,up_uri);'; put 'end;'; put 'cat_path = trim(cat_path) !! ")";'; put '&mD.putlog "NOTE: Getting physical path for &libref library";'; put '&mD.putlog rc3= up_uri= rc4= cat_path= path=;'; put '&mD.putlog "NOTE: Libname cmd will be:";'; put '&mD.putlog "libname &libref" cat_path;'; put 'call symputx("filepath",cat_path,''l'');'; put 'run;'; put '%if %sysevalf(&sysver<9.4) %then %do;'; put 'libname &libref &filepath;'; put '%end;'; put '%else %do;'; put '/* apply the new filelocks option to cater for temporary locks */'; put 'libname &libref &filepath filelockwait=5;'; put '%end;'; put '%end;'; put '%else %if &engine=REMOTE %then %do;'; put 'data x;'; put 'length rcCon rcProp rc k 3 uriCon uriProp PropertyValue PropertyName'; put 'Delimiter $256 properties $2048;'; put 'retain properties;'; put 'rcCon = metadata_getnasn("&liburi", "LibraryConnection", 1, uriCon);'; put 'rcProp = metadata_getnasn(uriCon, "Properties", 1, uriProp);'; put 'k = 1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'do while (rcProp > 0);'; put 'rc = metadata_getattr(uriProp , "DefaultValue",PropertyValue);'; put 'rc = metadata_getattr(uriProp , "PropertyName",PropertyName);'; put 'rc = metadata_getattr(uriProp , "Delimiter",Delimiter);'; put 'properties = trim(properties) !! " " !! trim(PropertyName)'; put '!! trim(Delimiter) !! trim(PropertyValue);'; put 'output;'; put 'k+1;'; put 'rcProp = metadata_getnasn(uriCon, "Properties", k, uriProp);'; put 'end;'; put '%&mD.put NOTE: Getting properties for REMOTE SHARE &libref library;'; put '&mD.put _all_;'; put '%&mD.put NOTE: Libname cmd will be:;'; put '%&mD.put libname &libref &engine &properties slibref=&libref;'; put 'call symputx ("properties",trim(properties),''l'');'; put 'run;'; put 'libname &libref &engine &properties slibref=&libref;'; put '%end;'; put '%else %if &engine=OLEDB %then %do;'; put '%&mD.put NOTE: Retrieving OLEDB connection details;'; put 'data _null_;'; put 'length domain datasource provider properties schema'; put 'connx_uri domain_uri conprop_uri lib_uri schema_uri value $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection domain */'; put 'rc1=metadata_getnasn(connx_uri,''Domain'',1,domain_uri);'; put 'rc2=metadata_getattr(domain_uri,''Name'',domain);'; put '&mD.putlog / ''NOTE: '' // ''NOTE- connection id: '' connx_uri ;'; put '&mD.putlog ''NOTE- domain: '' domain;'; put '/* get DSN and PROVIDER from connection properties */'; put 'i=0;'; put 'do until (rc<0);'; put 'i+1;'; put 'rc=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc2=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.OLE.Property.DATASOURCE.Name.xmlKey.txt'' then do;'; put 'rc3=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROVIDER.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',provider);'; put 'end;'; put 'else if value=''Connection.OLE.Property.PROPERTIES.Name.xmlKey.txt'' then'; put 'do;'; put 'rc5=metadata_getattr(conprop_uri,''DefaultValue'',properties);'; put 'end;'; put 'end;'; put '&mD.putlog ''NOTE- dsn/provider/properties: '' /'; put 'datasource provider properties;'; put '&mD.putlog ''NOTE- schema: '' schema // ''NOTE-'';'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,lib_uri);'; put 'rc7=metadata_getattr(lib_uri,''SchemaName'',schema);'; put 'call symputx(''SQL_domain'',domain,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'call symputx(''SQL_provider'',provider,''l'');'; put 'call symputx(''SQL_properties'',properties,''l'');'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to OLEDB as &open_passthrough(INSERT_SQL=YES'; put '/* need additional properties to make this work */'; put 'properties=(''Integrated Security''=SSPI'; put '''Persist Security Info''=True'; put '%sysfunc(compress(%str(&SQL_properties),%str(())))'; put ')'; put 'DATASOURCE=&sql_dsn PROMPT=NO'; put 'PROVIDER=&sql_provider SCHEMA=&sql_schema CONNECTION = GLOBAL);'; put '%end;'; put '%else %do;'; put 'LIBNAME &libref OLEDB PROPERTIES=&sql_properties'; put 'DATASOURCE=&sql_dsn PROVIDER=&sql_provider SCHEMA=&sql_schema'; put '%if %length(&sql_domain)>0 %then %do;'; put 'authdomain="&sql_domain"'; put '%end;'; put 'connection=shared;'; put '%end;'; put '%end;'; put '%else %if &engine=ODBC %then %do;'; put '&mD.%put NOTE: Retrieving ODBC connection details;'; put 'data _null_;'; put 'length connx_uri conprop_uri value datasource up_uri schema $256.;'; put 'call missing (of _all_);'; put '/* get source connection ID */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,connx_uri);'; put '/* get connection properties */'; put 'i=0;'; put 'do until (rc2<0);'; put 'i+1;'; put 'rc2=metadata_getnasn(connx_uri,''Properties'',i,conprop_uri);'; put 'rc3=metadata_getattr(conprop_uri,''Name'',value);'; put 'if value=''Connection.ODBC.Property.DATASRC.Name.xmlKey.txt'' then do;'; put 'rc4=metadata_getattr(conprop_uri,''DefaultValue'',datasource);'; put 'rc2=-1;'; put 'end;'; put 'end;'; put '/* get SCHEMA */'; put 'rc6=metadata_getnasn("&liburi",''UsingPackages'',1,up_uri);'; put 'rc7=metadata_getattr(up_uri,''SchemaName'',schema);'; put '&mD.put rc= connx_uri= rc2= conprop_uri= rc3= value= rc4= datasource='; put 'rc6= up_uri= rc7= schema=;'; put 'call symputx(''SQL_schema'',schema,''l'');'; put 'call symputx(''SQL_dsn'',datasource,''l'');'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put 'proc sql &sql_options;'; put 'connect to ODBC as &open_passthrough'; put '(INSERT_SQL=YES DATASRC=&sql_dsn. CONNECTION=global);'; put '%end;'; put '%else %do;'; put 'libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;'; put '%end;'; put '%end;'; put '%else %if &engine=POSTGRES %then %do;'; put '%put NOTE: Obtaining POSTGRES library details;'; put 'data _null_;'; put 'length database ignore_read_only_columns direct_exe preserve_col_names'; put 'preserve_tab_names server schema authdomain user password'; put 'prop name value uri urisrc $256.;'; put 'call missing (of _all_);'; put '/* get database value */'; put 'prop=''Connection.DBMS.Property.DB.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,database,"");'; put 'if database^='''' then database=''database=''!!quote(trim(database));'; put 'call symputx(''database'',database,''l'');'; put '/* get IGNORE_READ_ONLY_COLUMNS value */'; put 'prop=''Library.DBMS.Property.DBIROC.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,ignore_read_only_columns,"");'; put 'if ignore_read_only_columns^='''' then ignore_read_only_columns='; put '''ignore_read_only_columns=''!!ignore_read_only_columns;'; put 'call symputx(''ignore_read_only_columns'',ignore_read_only_columns,''l'');'; put '/* get DIRECT_EXE value */'; put 'prop=''Library.DBMS.Property.DirectExe.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,direct_exe,"");'; put 'if direct_exe^='''' then direct_exe=''direct_exe=''!!direct_exe;'; put 'call symputx(''direct_exe'',direct_exe,''l'');'; put '/* get PRESERVE_COL_NAMES value */'; put 'prop=''Library.DBMS.Property.PreserveColNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_col_names,"");'; put 'if preserve_col_names^='''' then preserve_col_names='; put '''preserve_col_names=''!!preserve_col_names;'; put 'call symputx(''preserve_col_names'',preserve_col_names,''l'');'; put '/* get PRESERVE_TAB_NAMES value */'; put '/* be careful with PRESERVE_TAB_NAMES=YES - it will mean your table will'; put 'become case sensitive!! */'; put 'prop=''Library.DBMS.Property.PreserveTabNames.Name.xmlKey.txt'';'; put 'rc=metadata_getprop("&liburi",prop,preserve_tab_names,"");'; put 'if preserve_tab_names^='''' then preserve_tab_names='; put '''preserve_tab_names=''!!preserve_tab_names;'; put 'call symputx(''preserve_tab_names'',preserve_tab_names,''l'');'; put '/* get SERVER value */'; put 'if metadata_getnasn("&liburi","LibraryConnection",1,uri)>0 then do;'; put 'prop=''Connection.DBMS.Property.SERVER.Name.xmlKey.txt'';'; put 'rc=metadata_getprop(uri,prop,server,"");'; put 'end;'; put 'if server^='''' then server=''server=''!!quote(cats(server));'; put 'call symputx(''server'',server,''l'');'; put '/* get SCHEMA value */'; put 'if metadata_getnasn("&liburi","UsingPackages",1,uri)>0 then do;'; put 'rc=metadata_getattr(uri,"SchemaName",schema);'; put 'end;'; put 'if schema^='''' then schema=''schema=''!!schema;'; put 'call symputx(''schema'',schema,''l'');'; put '/* get AUTHDOMAIN value */'; put '/* this is only useful if the user account contains that auth domain'; put 'if metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then do;'; put 'rc=metadata_getnasn(uri,"Domain",1,urisrc);'; put 'rc=metadata_getattr(urisrc,"Name",authdomain);'; put 'end;'; put 'if authdomain^='''' then authdomain=''authdomain=''!!quote(trim(authdomain));'; put '*/'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* get user & pass */'; put 'if authdomain='''' & metadata_getnasn("&liburi","DefaultLogin",1,uri)>0 then'; put 'do;'; put 'rc=metadata_getattr(uri,"UserID",user);'; put 'rc=metadata_getattr(uri,"Password",password);'; put 'end;'; put 'if user^='''' then do;'; put 'user=''user=''!!quote(trim(user));'; put 'password=''password=''!!quote(trim(password));'; put 'end;'; put 'call symputx(''user'',user,''l'');'; put 'call symputx(''password'',password,''l'');'; put '&md.put _all_;'; put 'run;'; put '%if %length(&open_passthrough)>0 %then %do;'; put '%put %str(WARN)ING: Passthrough option for postgres not yet supported;'; put '%return;'; put '%end;'; put '%else %do;'; put '%if &mdebug=1 %then %do;'; put '%put NOTE: Executing the following:/;'; put '%put NOTE- libname &libref POSTGRES &database &ignore_read_only_columns;'; put '%put NOTE- &direct_exe &preserve_col_names &preserve_tab_names;'; put '%put NOTE- &server &schema &authdomain &user &password //;'; put '%end;'; put 'libname &libref POSTGRES &database &ignore_read_only_columns &direct_exe'; put '&preserve_col_names &preserve_tab_names &server &schema &authdomain'; put '&user &password;'; put '%end;'; put '%end;'; put '%else %if &engine=ORACLE %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null_;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/* path */'; put 'rc=metadata_getprop(assocuri1,'; put '''Connection.Oracle.Property.PATH.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref ORACLE path=&path schema=&schema;'; put '%put NOTE- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref ORACLE path=&path schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine=SQLSVR %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.SQL.Property.Datasrc.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref SQLSVR datasrc=&path schema=&schema ;'; put '%put NOTE- user="&user" pass="XXX";'; put '%put NOTE-;'; put 'libname &libref SQLSVR datasrc=&path schema=&schema user="&user" pass="&pass";'; put '%end;'; put '%else %if &engine=TERADATA %then %do;'; put '%put NOTE: Obtaining &engine library details;'; put 'data _null;'; put 'length assocuri1 assocuri2 assocuri3 authdomain path schema userid'; put 'passwd $256;'; put 'call missing (of _all_);'; put '/* get auth domain */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri1);'; put 'rc=metadata_getnasn(assocuri1,''Domain'',1,assocuri2);'; put 'rc=metadata_getattr(assocuri2,"Name",authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; put '/*'; put 'rc=metadata_getnasn("&liburi",''DefaultLogin'',1,assocuri1);'; put 'rc=metadata_getattr(assocuri1,"UserID",userid);'; put 'rc=metadata_getattr(assocuri1,"Password",passwd);'; put 'call symputx(''user'',userid,''l'');'; put 'call symputx(''pass'',passwd,''l'');'; put '*/'; put '/* path */'; put 'rc=metadata_getnasn("&liburi",''LibraryConnection'',1,assocuri2);'; put 'rc=metadata_getprop(assocuri2,'; put '''Connection.Teradata.Property.SERVER.Name.xmlKey.txt'',path);'; put 'call symputx(''path'',path,''l'');'; put '/* schema */'; put 'rc=metadata_getnasn("&liburi",''UsingPackages'',1,assocuri3);'; put 'rc=metadata_getattr(assocuri3,''SchemaName'',schema);'; put 'call symputx(''schema'',schema,''l'');'; put 'run;'; put '%put NOTE: Executing the following:/; %put NOTE-;'; put '%put NOTE- libname &libref TERADATA server="&path" schema=&schema ;'; put '%put NOTe- authdomain=&authdomain;'; put '%put NOTE-;'; put 'libname &libref TERADATA server="&path" schema=&schema authdomain=&authdomain;'; put '%end;'; put '%else %if &engine= %then %do;'; put '%put NOTE: Libref &libref is not registered in metadata;'; put '%&mAbort.mp_abort('; put 'msg=%str(ERR)OR: Libref &libref is not registered in metadata'; put ',mac=mm_assigndirectlib.sas);'; put '%return;'; put '%end;'; put '%else %do;'; put '%put %str(WARN)ING: Engine &engine is currently unsupported;'; put '%put %str(WARN)ING- Please contact your support team.;'; put '%return;'; put '%end;'; put '%mend mm_assigndirectlib;'; put '%macro mm_getrepos('; put 'outds=work.mm_getrepos'; put ')/*/STORE SOURCE*/;'; put '* use a temporary fileref to hold the response;'; put 'filename response temp;'; put '/* get list of libraries */'; put 'proc metadata in='; put '"1"'; put 'out=response;'; put 'run;'; put '/* write the response to the log for debugging */'; put '/*'; put 'data _null_;'; put 'infile response lrecl=1048576;'; put 'input;'; put 'put _infile_;'; put 'run;'; put '*/'; put '/* create an XML map to read the response */'; put 'filename sxlemap temp;'; put 'data _null_;'; put 'file sxlemap;'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository";'; put 'put "";'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Id";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Name";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Desc";'; put 'put "";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@DefaultNS";'; put 'put "characterstring200";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryType";'; put 'put "characterstring20";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@RepositoryFormat";'; put 'put "characterstring10";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@Access";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@CurrentAccess";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@PauseState";'; put 'put "characterstring16";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Path";'; put 'put "";'; put 'put "characterstring256";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Engine";'; put 'put "";'; put 'put "characterstring8";'; put 'put '''';'; put 'put '''';'; put 'put "/GetRepositories/Repositories/Repository/@Options";'; put 'put "";'; put 'put "characterstring32";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataCreated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put '''';'; put 'put "";'; put 'put "/GetRepositories/Repositories/Repository/@MetadataUpdated";'; put 'put "characterstring24";'; put 'put '''';'; put 'put ''
'';'; put 'run;'; put 'libname _XML_ xml xmlfileref=response xmlmap=sxlemap;'; put 'proc sort data= _XML_.SASRepos out=&outds;'; put 'by name;'; put 'run;'; put '/* clear references */'; put 'filename sxlemap clear;'; put 'filename response clear;'; put 'libname _XML_ clear;'; put '%mend mm_getrepos;'; put '%macro dc_assignlib(type,libref,passthru=);'; put '%put &sysmacroname entry vars:;'; put '%put _local_;'; put '/* take current repository */'; put '%local repo repocnt x;'; put '%let repo=%sysfunc(getoption(metarepository));'; put '/* get list of repositories and filter */'; put '%mm_getrepos(outds=repos)'; put '%let repocnt=0;'; put 'data repos;'; put 'set repos;'; put 'where repositorytype in(''CUSTOM'',''FOUNDATION'')'; put '& upcase(name) ne "%upcase(&repo)";'; put 'keep id name ;'; put 'call symputx(cats(''repo'',_n_),name,''l'');'; put 'call symputx(''repocnt'',_n_,''l'');'; put 'run;'; put '/* find out which of these repositories has the libref we are searching for */'; put '%local lib_uri;'; put '%let lib_uri=NOTFOUND;'; put 'data _null_; /* check default repo first */'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri=NOTFOUND %then %do;'; put '%do x=1 %to &repocnt;'; put 'options metarepository=&&repo&x;'; put 'data _null_;'; put 'length lib_uri $256;'; put 'call missing (of _all_);'; put 'rc=metadata_getnobj("omsobj:SASLibrary?@Libref =''&libref''",1,lib_uri);'; put 'call symputx(''lib_uri'',coalescec(lib_uri,''NOTFOUND''),''l'');'; put 'run;'; put '%if &lib_uri ne NOTFOUND %then %let x=%eval(&repocnt+1);'; put '%end;'; put '%end;'; put '%if &type=READ %then %do;'; put '%mm_assignlib(&libref)'; put '%end;'; put '%else %if &type=WRITE %then %do;'; put '%mm_assigndirectlib(&libref,open_passthrough=&passthru)'; put '%end;'; put 'options metarepository=&repo;'; put '%mend dc_assignlib;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for tables in a library'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5||'; put '|1|DISCOUNT_RT|"40%"|N|0.4||'; put '|1|DISCOUNT_RT|"30%"|N|0.3||'; put '|1|CURRENCY_SYMBOL|"GBP"|C||"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C||"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5||'; put '|2|DISCOUNT_RT|"40%"|N|0.4||'; put '|2|CURRENCY_SYMBOL|"EUR"|C||"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C||"HKD"|'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '**/'; put '/* send back the raw and formatted values */'; put '%let tgtlib=0;'; put '%let varlibds=%mf_getuniquename();'; put '%let vartgtlib=%mf_getuniquename();'; put '%let var_is_lib=%mf_getuniquename();'; put 'data _null_;'; put 'length &varlibds $41 &vartgtlib $8 libref $8 rls_libref $8;'; put 'if _n_=1 then call missing(of _all_);'; put 'set work.source_row;'; put '&varlibds=upcase(symget(''libds''));'; put 'if &varlibds="&mpelib..MPE_TABLES" then &vartgtlib=LIBREF;'; put 'else if &varlibds="&mpelib..MPE_ROW_LEVEL_SECURITY"'; put 'then &vartgtlib=RLS_LIBREF;'; put 'else if &varlibds="&mpelib..MPE_COLUMN_LEVEL_SECURITY"'; put 'then &vartgtlib=CLS_LIBREF;'; put '/* validate name */'; put 'if nvalid(&vartgtlib,''v7'') then call symputx(''tgtlib'',&vartgtlib);'; put 'call symputx(''vartgtlib'',&vartgtlib);'; put 'putlog (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= ("&tgtlib" ="0" )'; put ',mac=&_program..sas'; put ',msg=%str(Invalid library - %superq(vartgtlib))'; put ',errds=work.dc_error_response'; put ')'; put '%dc_assignlib(READ,&tgtlib)'; put 'data members; /* empty table */'; put 'name='' '';'; put 'run;'; put 'ods output Members=Members;'; put 'proc datasets library=&tgtlib ;'; put 'run;'; put '/* send back the raw and formatted values */'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct name as display_value,'; put 'upcase(name) as raw_value'; put 'from work.members'; put 'where MemType=''DATA'''; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=tables_editable; filename sascode temp lrecl=32767; data _null_; file sascode; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '/**'; put '@file mp_jsonout.sas'; put '@brief Writes JSON in SASjs format to a fileref'; put '@details This macro can be used to OPEN a JSON stream and send one or more'; put 'tables as arrays of rows, where each row can be an object or a nested array.'; put 'There are two engines available - DATASTEP or PROCJSON.'; put 'PROC JSON is fast but will produce errs like the ones below if'; put 'special chars are encountered.'; put '> (ERR)OR: Some code points did not transcode.'; put '> An object or array close is not valid at this point in the JSON text.'; put '> Date value out of range'; put 'If this happens, try running with ENGINE=DATASTEP.'; put 'The DATASTEP engine is used to handle special SAS missing numerics, and'; put 'can also convert entire datasets to formatted values. Output JSON is always'; put 'in UTF-8.'; put 'Usage:'; put 'filename tmp temp;'; put 'data class; set sashelp.class;run;'; put '%mp_jsonout(OPEN,jref=tmp)'; put '%mp_jsonout(OBJ,class,jref=tmp)'; put '%mp_jsonout(OBJ,class,dslabel=class2,jref=tmp,showmeta=Y)'; put '%mp_jsonout(CLOSE,jref=tmp)'; put 'data _null_;'; put 'infile tmp;'; put 'input;putlog _infile_;'; put 'run;'; put 'If you are building web apps with SAS then you are strongly encouraged to use'; put 'the mX_createwebservice macros in combination with the'; put '[sasjs adapter](https://github.com/sasjs/adapter).'; put 'For more information see https://sasjs.io'; put '@param [in] action Valid values:'; put '@li OPEN - opens the JSON'; put '@li OBJ - sends a table with each row as an object'; put '@li ARR - sends a table with each row in an array'; put '@li CLOSE - closes the JSON'; put '@param [in] ds The dataset to send. Must be a work table.'; put '@param [out] jref= (_webout) The fileref to which to send the JSON'; put '@param [out] dslabel= The name to give the table in the exported JSON'; put '@param [in] fmt= (Y) Whether to keep (Y) or strip (N) formats from the table'; put '@param [in] engine= (DATASTEP) Which engine to use to send the JSON. Options:'; put '@li PROCJSON (default)'; put '@li DATASTEP (more reliable when data has non standard characters)'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to JSON'; put '

Related Files

'; put '@li mp_ds2fmtds.sas'; put '@version 9.2'; put '@author Allan Bowe'; put '@source https://github.com/sasjs/core'; put '**/'; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=N'; put ',maxobs=MAX'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols numobs stmt_obs lastobs optval'; put 'tmpds1 tmpds2 tmpds3 tmpds4;'; put '%let numcols=0;'; put '%if &maxobs ne MAX %then %let stmt_obs=%str(if _n_>&maxobs then stop;);'; put '%if &action=OPEN %then %do;'; put 'options nobomfile;'; put 'data _null_;file &jref encoding=''utf-8'' lrecl=200;'; put 'put ''{"PROCESSED_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''"'';'; put 'run;'; put '%end;'; put '%else %if (&action=ARR or &action=OBJ) %then %do;'; put '/* force variable names to always be uppercase in the JSON */'; put 'options validvarname=upcase;'; put '/* To avoid issues with _webout on EBI - such as encoding diffs and truncation'; put '(https://support.sas.com/kb/49/325.html) we use temporary files */'; put 'filename _sjs1 temp lrecl=200 ;'; put 'data _null_; file _sjs1 encoding=''utf-8'';'; put 'put ", ""%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":";'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjs1 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs1 clear;'; put '/* grab col defs */'; put 'proc contents noprint data=&ds'; put 'out=_data_(keep=name type length format formatl formatd varnum label);'; put 'run;'; put '%let colinfo=%scan(&syslast,2,.);'; put 'proc sort data=&colinfo;'; put 'by varnum;'; put 'run;'; put '/* move meta to mac vars */'; put 'data &colinfo;'; put 'if _n_=1 then call symputx(''numcols'',nobs,''l'');'; put 'set &colinfo end=last nobs=nobs;'; put 'name=upcase(name);'; put '/* fix formats */'; put 'if type=2 or type=6 then do;'; put 'typelong=''char'';'; put 'length fmt $49.;'; put 'if format='''' then fmt=cats(''$'',length,''.'');'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else fmt=cats(format,formatl,''.'');'; put 'end;'; put 'else do;'; put 'typelong=''num'';'; put 'if format='''' then fmt=''best.'';'; put 'else if formatl=0 then fmt=cats(format,''.'');'; put 'else if formatd=0 then fmt=cats(format,formatl,''.'');'; put 'else fmt=cats(format,formatl,''.'',formatd);'; put 'end;'; put '/* 32 char unique name */'; put 'newname=''sasjs''!!substr(cats(put(md5(name),$hex32.)),1,27);'; put 'call symputx(cats(''name'',_n_),name,''l'');'; put 'call symputx(cats(''newname'',_n_),newname,''l'');'; put 'call symputx(cats(''length'',_n_),length,''l'');'; put 'call symputx(cats(''fmt'',_n_),fmt,''l'');'; put 'call symputx(cats(''type'',_n_),type,''l'');'; put 'call symputx(cats(''typelong'',_n_),typelong,''l'');'; put 'call symputx(cats(''label'',_n_),coalescec(label,name),''l'');'; put '/* overwritten when fmt=Y and a custom format exists in catalog */'; put 'if typelong=''num'' then call symputx(cats(''fmtlen'',_n_),200,''l'');'; put 'else call symputx(cats(''fmtlen'',_n_),min(32767,ceil((length+10)*1.5)),''l'');'; put 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql;'; put 'select count(*) into: lastobs from &ds;'; put '%if &maxobs ne MAX %then %let lastobs=%sysfunc(min(&lastobs,&maxobs));'; put '%if &engine=PROCJSON %then %do;'; put '%if &missing=STRING %then %do;'; put '%put &sysmacroname: Special Missings not supported in proc json.;'; put '%put &sysmacroname: Switching to DATASTEP engine;'; put '%goto datastep;'; put '%end;'; put 'data &tempds;'; put 'set &ds;'; put '&stmt_obs;'; put '%if &fmt=N %then format _numeric_ best32.;;'; put '/* PRETTY is necessary to avoid line truncation in large files */'; put 'filename _sjs2 temp lrecl=131068 encoding=''utf-8'';'; put 'proc json out=_sjs2 pretty'; put '%if &action=ARR %then nokeys ;'; put ';export &tempds / nosastags fmtnumeric;'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs2 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs2 clear;'; put '%end;'; put '%else %if &engine=DATASTEP %then %do;'; put '%datastep:'; put '%if %sysfunc(exist(&ds)) ne 1 & %sysfunc(exist(&ds,VIEW)) ne 1'; put '%then %do;'; put '%put &sysmacroname: &ds NOT FOUND!!!;'; put '%return;'; put '%end;'; put '%if &fmt=Y %then %do;'; put '/**'; put '* Extract format definitions'; put '* First, by getting library locations from dictionary.formats'; put '* Then, by exporting the width using proc format'; put '* Cannot use maxw from sashelp.vformat as not always populated'; put '* Cannot use fmtinfo() as not supported in all flavours'; put '*/'; put '%let tmpds1=%substr(fmtsum%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds2=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds3=%substr(cntl%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put '%let tmpds4=%substr(col%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; put 'proc sql noprint;'; put 'create table &tmpds1 as'; put 'select cats(libname,''.'',memname) as FMTCAT,'; put 'FMTNAME'; put 'from dictionary.formats'; put 'where fmttype=''F'' and libname is not null'; put 'and fmtname in (select format from &colinfo where format is not null)'; put 'order by 1;'; put 'create table &tmpds2('; put 'FMTNAME char(32),'; put 'LENGTH num'; put ');'; put '%local catlist cat fmtlist i;'; put 'select distinct fmtcat into: catlist separated by '' '' from &tmpds1;'; put '%do i=1 %to %sysfunc(countw(&catlist,%str( )));'; put '%let cat=%scan(&catlist,&i,%str( ));'; put 'proc sql;'; put 'select distinct fmtname into: fmtlist separated by '' '''; put 'from &tmpds1 where fmtcat="&cat";'; put 'proc format lib=&cat cntlout=&tmpds3(keep=fmtname length);'; put 'select &fmtlist;'; put 'run;'; put 'proc sql;'; put 'insert into &tmpds2 select distinct fmtname,length from &tmpds3;'; put '%end;'; put 'proc sql;'; put 'create table &tmpds4 as'; put 'select a.*, b.length as MAXW'; put 'from &colinfo a'; put 'left join &tmpds2 b'; put 'on cats(a.format)=cats(upcase(b.fmtname))'; put 'order by a.varnum;'; put 'data _null_;'; put 'set &tmpds4;'; put 'if not missing(maxw);'; put 'call symputx('; put 'cats(''fmtlen'',_n_),'; put '/* vars need extra padding due to JSON escaping of special chars */'; put 'min(32767,ceil((max(length,maxw)+10)*1.5))'; put ',''l'''; put ');'; put 'run;'; put '/* configure varlenchk - as we are explicitly shortening the variables */'; put '%let optval=%sysfunc(getoption(varlenchk));'; put 'options varlenchk=NOWARN;'; put 'data _data_(compress=char);'; put '/* shorten the new vars */'; put 'length'; put '%do i=1 %to &numcols;'; put '&&name&i $&&fmtlen&i'; put '%end;'; put ';'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '&stmt_obs;'; put 'drop'; put '%do i=1 %to &numcols;'; put '&&newname&i'; put '%end;'; put ';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=cats(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put '%end;'; put 'if _error_ then do;'; put 'call symputx(''syscc'',1012);'; put 'stop;'; put 'end;'; put 'run;'; put '%let fmtds=&syslast;'; put 'options varlenchk=&optval;'; put '%end;'; put 'proc format; /* credit yabwon for special null removal */'; put 'value bart (default=40)'; put '%if &missing=NULL %then %do;'; put '._ - .z = null'; put '%end;'; put '%else %do;'; put '._ = [quote()]'; put '. = null'; put '.a - .z = [quote()]'; put '%end;'; put 'other = [best.];'; put 'data &tempds;'; put 'attrib _all_ label='''';'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'length &&name&i $&&fmtlen&i...;'; put 'format &&name&i $&&fmtlen&i...;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; put '&stmt_obs;'; put 'format _numeric_ bart.;'; put '%do i=1 %to &numcols;'; put '%if &&typelong&i=char or &fmt=Y %then %do;'; put 'if findc(&&name&i,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put '&&name&i=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,&&name&i)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else &&name&i=quote(cats(&&name&i));'; put '%end;'; put '%end;'; put 'run;'; put 'filename _sjs3 temp lrecl=131068 ;'; put 'data _null_;'; put 'file _sjs3 encoding=''utf-8'';'; put 'if _n_=1 then put "[";'; put 'set &tempds;'; put 'if _n_>1 then put "," @; put'; put '%if &action=ARR %then "[" ; %else "{" ;'; put '%do i=1 %to &numcols;'; put '%if &i>1 %then "," ;'; put '%if &action=OBJ %then """&&name&i"":" ;'; put '"&&name&i"n /* name literal for reserved variable names */'; put '%end;'; put '%if &action=ARR %then "]" ; %else "}" ; ;'; put '/* close out the table */'; put 'data _null_;'; put 'file _sjs3 mod encoding=''utf-8'';'; put 'put '']'';'; put 'run;'; put 'data _null_;'; put 'infile _sjs3 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs3 clear;'; put '%end;'; put 'proc sql;'; put 'drop table &colinfo, &tempds;'; put '%if %substr(&showmeta,1,1)=Y %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; put 'length label $350;'; put 'put ", ""$%lowcase(%sysfunc(coalescec(&dslabel,&ds)))"":{""vars"":{";'; put 'do i=1 to &numcols;'; put 'name=quote(trim(symget(cats(''name'',i))));'; put 'format=quote(trim(symget(cats(''fmt'',i))));'; put 'label=quote(prxchange(''s/\\/\\\\/'',-1,trim(symget(cats(''label'',i)))));'; put 'length=quote(trim(symget(cats(''length'',i))));'; put 'type=quote(trim(symget(cats(''typelong'',i))));'; put 'if i>1 then put "," @@;'; put 'put name '':{"format":'' format '',"label":'' label'; put ''',"length":'' length '',"type":'' type ''}'';'; put 'end;'; put 'put ''}}'';'; put 'run;'; put '/* send back to webout */'; put 'data _null_;'; put 'infile _sjs4 lrecl=1 recfm=n;'; put 'file &jref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjs4 clear;'; put '%end;'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put 'data _null_; file &jref encoding=''utf-8'' mod ;'; put 'put "}";'; put 'run;'; put '%end;'; put '%mend mp_jsonout;'; put '/**'; put '@file mm_webout.sas'; put '@brief Send data to/from SAS Stored Processes'; put '@details This macro should be added to the start of each Stored Process,'; put '**immediately** followed by a call to:'; put '%mm_webout(FETCH)'; put 'This will read all the input data and create same-named SAS datasets in the'; put 'WORK library. You can then insert your code, and send data back using the'; put 'following syntax:'; put 'data some datasets; * make some data ;'; put 'retain some columns;'; put 'run;'; put '%mm_webout(OPEN)'; put '%mm_webout(ARR,some) * Array format, fast, suitable for large tables ;'; put '%mm_webout(OBJ,datasets) * Object format, easier to work with ;'; put 'Finally, wrap everything up send some helpful system variables too'; put '%mm_webout(CLOSE)'; put '@param [in] action Either FETCH, OPEN, ARR, OBJ or CLOSE'; put '@param [in] ds The dataset to send back to the frontend'; put '@param [out] dslabel= Value to use instead of table name for sending to JSON'; put '@param [in] fmt= (N) Setting Y converts all vars to their formatted values'; put '@param [out] fref= (_webout) The fileref to which to write the JSON'; put '@param [in] missing= (NULL) Special numeric missing values can be sent as NULL'; put '(eg `null`) or as STRING values (eg `".a"` or `".b"`)'; put '@param [in] showmeta= (N) Set to Y to output metadata alongside each table,'; put 'such as the column formats and types. The metadata is contained inside an'; put 'object with the same name as the table but prefixed with a dollar sign - ie,'; put '`,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}`'; put '@param [in] workobs= (0) When set to a positive integer, will create a new'; put 'output object (WORK) which contains this number of observations from all'; put 'tables in the WORK library.'; put '@param [in] maxobs= (MAX) Provide an integer to limit the number of input rows'; put 'that should be converted to output JSON'; put '

SAS Macros

'; put '@li mp_jsonout.sas'; put '

Related Macros

'; put '@li ms_webout.sas'; put '@li mv_webout.sas'; put '@version 9.3'; put '@author Allan Bowe'; put '**/'; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL'; put ',showmeta=N,maxobs=MAX,workobs=0'; put ');'; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug'; put 'sasjs_tables;'; put '%local i tempds jsonengine;'; put '/* see https://github.com/sasjs/core/issues/41 */'; put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;'; put '%else %let jsonengine=DATASTEP;'; put '%if &action=FETCH %then %do;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'options mprint notes mprintnest;'; put '%end;'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '/* now read in the data */'; put '%do i=1 %to &_webin_file_count;'; put '%if &_webin_file_count=1 %then %do;'; put '%let _webin_fileref1=&_webin_fileref;'; put '%let _webin_name1=&_webin_name;'; put '%end;'; put 'data _null_;'; put 'infile &&_webin_fileref&i termstr=crlf;'; put 'input;'; put 'call symputx(''input_statement'',_infile_);'; put 'putlog "&&_webin_name&i input statement: " _infile_;'; put 'stop;'; put 'data &&_webin_name&i;'; put 'infile &&_webin_fileref&i firstobs=2 dsd termstr=crlf encoding=''utf-8'';'; put 'input &input_statement;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'if _n_<20 then putlog _infile_;'; put '%end;'; put 'run;'; put '%let sasjs_tables=&sasjs_tables &&_webin_name&i;'; put '%end;'; put '%end;'; put '%else %if &action=OPEN %then %do;'; put '/* fix encoding */'; put 'OPTIONS NOBOMFILE;'; put '/**'; put '* check xengine type to avoid the below err message:'; put '* > Function is only valid for filerefs using the CACHE access method.'; put '*/'; put 'data _null_;'; put 'set sashelp.vextfl(where=(fileref="_WEBOUT"));'; put 'if xengine=''STREAM'' then do;'; put 'rc=stpsrv_header(''Content-type'',"text/html; encoding=utf-8");'; put 'end;'; put 'run;'; put '/* setup json */'; put 'data _null_;file &fref encoding=''utf-8'';'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutBEGIN<<'';'; put '%end;'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'run;'; put '%end;'; put '%else %if &action=ARR or &action=OBJ %then %do;'; put '%mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref'; put ',engine=&jsonengine,missing=&missing,showmeta=&showmeta,maxobs=&maxobs'; put ')'; put '%end;'; put '%else %if &action=CLOSE %then %do;'; put '/* To avoid issues with _webout on EBI we use a temporary file */'; put 'filename _sjsref temp lrecl=131068;'; put '%if %str(&workobs) > 0 %then %do;'; put '/* if debug mode, send back first XX records of each work table also */'; put 'data;run;%let tempds=%scan(&syslast,2,.);'; put 'ods output Members=&tempds;'; put 'proc datasets library=WORK memtype=data;'; put '%local wtcnt;%let wtcnt=0;'; put 'data _null_;'; put 'set &tempds;'; put 'if not (upcase(name) =:"DATA"); /* ignore temp datasets */'; put 'i+1;'; put 'call symputx(cats(''wt'',i),name,''l'');'; put 'call symputx(''wtcnt'',i,''l'');'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put ",""WORK"":{";'; put '%do i=1 %to &wtcnt;'; put '%let wt=&&wt&i;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'dsid=open("WORK.&wt",''is'');'; put 'nlobs=attrn(dsid,''NLOBS'');'; put 'nvars=attrn(dsid,''NVARS'');'; put 'rc=close(dsid);'; put 'if &i>1 then put '',''@;'; put 'put " ""&wt"" : {";'; put 'put ''"nlobs":'' nlobs;'; put 'put '',"nvars":'' nvars;'; put '%mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y'; put ',maxobs=&workobs'; put ')'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put '%end;'; put 'data _null_; file _sjsref mod encoding=''utf-8'';'; put 'put "}";'; put 'run;'; put '%end;'; put '/* close off json */'; put 'data _null_;file _sjsref mod encoding=''utf-8'';'; put 'length SYSPROCESSNAME syserrortext syswarningtext autoexec $512;'; put 'put ",""_DEBUG"" : ""&_debug"" ";'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'autoexec=quote(urlencode(trim(getoption(''autoexec''))));'; put 'put '',"AUTOEXEC" : '' autoexec;'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSPROCESSID"" : ""&SYSPROCESSID"" ";'; put 'put ",""SYSPROCESSMODE"" : ""&SYSPROCESSMODE"" ";'; put 'SYSPROCESSNAME=quote(urlencode(cats(SYSPROCESSNAME)));'; put 'put ",""SYSPROCESSNAME"" : " SYSPROCESSNAME;'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put '',"SYSWARNINGTEXT" : '' syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'length memsize $32;'; put 'memsize="%sysfunc(INPUTN(%sysfunc(getoption(memsize)), best.),sizekmg.)";'; put 'memsize=quote(cats(memsize));'; put 'put '',"MEMSIZE" : '' memsize;'; put 'put "}" @;'; put '%if %str(&_debug) ge 131 %then %do;'; put 'put ''>>weboutEND<<'';'; put '%end;'; put 'run;'; put '/* now write to _webout 1 char at a time */'; put 'data _null_;'; put 'infile _sjsref lrecl=1 recfm=n;'; put 'file &fref mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put 'filename _sjsref clear;'; put '%end;'; put '%mend mm_webout;'; put '%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; put ',maxobs=&maxobs'; put ') %mend;'; put '/* provide additional debug info */'; put '%global _program;'; put '%put &=syscc;'; put '%put user=%mf_getuser();'; put '%put pgm=&_program;'; put '%put timestamp=%sysfunc(datetime(),datetime19.);'; put '* Service Variables start;'; put '* Service Variables end;'; put '* SAS Macros start;'; put '%macro mf_getapploc(pgm);'; put '%if "&pgm"="" %then %do;'; put '%if %symexist(_program) %then %let pgm=&_program;'; put '%else %do;'; put '%put &sysmacroname: No value provided and no _program variable available;'; put '%return;'; put '%end;'; put '%end;'; put '%local root;'; put '/**'; put '* First check we are not in the tests/macros folder (which has no subfolders)'; put '* or specifically in the testsetup or testteardown services'; put '*/'; put '%if %index(&pgm,/tests/macros/)'; put 'or %index(&pgm,/tests/testsetup)'; put 'or %index(&pgm,/tests/testteardown)'; put '%then %do;'; put '%let root=%substr(&pgm,1,%index(&pgm,/tests)-1);'; put '&root'; put '%return;'; put '%end;'; put '/**'; put '* Next, move up two levels to avoid matches on subfolder or service name'; put '*/'; put '%let root=%substr(&pgm,1,%length(&pgm)-%length(%scan(&pgm,-1,/))-1);'; put '%let root=%substr(&root,1,%length(&root)-%length(%scan(&root,-1,/))-1);'; put '%if %index(&root,/tests/) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/tests/)-1);'; put '%end;'; put '%else %if %index(&root,/services) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/services)-1);'; put '%end;'; put '%else %if %index(&root,/jobs) %then %do;'; put '%let root=%substr(&root,1,%index(&root,/jobs)-1);'; put '%end;'; put '%else %put &sysmacroname: Could not find an app location from &pgm;'; put '&root'; put '%mend mf_getapploc ;'; put '%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767);'; put '%local rc fname;'; put '%if &prefix=0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%end;'; put '%else %do;'; put '%local x len;'; put '%let len=%eval(8-%length(&prefix));'; put '%let x=0;'; put '%do x=0 %to &maxtries;'; put '%let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len);'; put '%if %sysfunc(fileref(&fname)) > 0 %then %do;'; put '%let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl));'; put '%if &rc %then %put %sysfunc(sysmsg());'; put '&fname'; put '%return;'; put '%end;'; put '%end;'; put '%put unable to find available fileref after &maxtries attempts;'; put '%end;'; put '%mend mf_getuniquefileref;'; put '%macro mp_abort(mac=mp_abort.sas, type=, msg=, iftrue=%str(1=1)'; put ', errds=work.mp_abort_errds'; put ', mode=REGULAR'; put ')/*/STORE SOURCE*/;'; put '%global sysprocessmode sysprocessname sasjs_stpsrv_header_loc sasjsprocessmode;'; put '%local fref fid i;'; put '%if not(%eval(%unquote(&iftrue))) %then %return;'; put '%put NOTE: /// mp_abort macro executing //;'; put '%if %length(&mac)>0 %then %put NOTE- called by &mac;'; put '%put NOTE - &msg;'; put '%if %symexist(_SYSINCLUDEFILEDEVICE)'; put '/* abort cancel FILE does not restart outside the INCLUDE on Viya 3.5 */'; put 'and %superq(SYSPROCESSNAME) ne %str(Compute Server)'; put '%then %do;'; put '%if "*&_SYSINCLUDEFILEDEVICE*" ne "**" %then %do;'; put 'data &errds;'; put 'iftrue=''1=1'';'; put 'length mac $100 msg $5000;'; put 'mac=symget(''mac'');'; put 'msg=symget(''msg'');'; put 'run;'; put 'data _null_;'; put 'abort cancel FILE;'; put 'run;'; put '%return;'; put '%end;'; put '%end;'; put '/* Web App Context */'; put '%if %symexist(_PROGRAM)'; put 'or %superq(SYSPROCESSNAME) = %str(Compute Server)'; put 'or &mode=INCLUDE'; put '%then %do;'; put 'options obs=max replace mprint;'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5"'; put '%then %do;'; put 'options nosyntaxcheck;'; put '%end;'; put '%if &mode=INCLUDE %then %do;'; put '%if %sysfunc(exist(&errds))=1 %then %do;'; put 'data _null_;'; put 'set &errds;'; put 'call symputx(''iftrue'',iftrue,''l'');'; put 'call symputx(''mac'',mac,''l'');'; put 'call symputx(''msg'',msg,''l'');'; put 'putlog (_all_)(=);'; put 'run;'; put '%if (&iftrue)=0 %then %return;'; put '%end;'; put '%else %do;'; put '%put &sysmacroname: No include errors found;'; put '%return;'; put '%end;'; put '%end;'; put '/* extract log errs / warns, if exist */'; put '%local logloc logline;'; put '%global logmsg; /* capture global messages */'; put '%if %symexist(SYSPRINTTOLOG) %then %let logloc=&SYSPRINTTOLOG;'; put '%else %let logloc=%qsysfunc(getoption(LOG));'; put 'proc printto log=log;run;'; put '%let logline=0;'; put '%if %length(&logloc)>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input; putlog _infile_;'; put 'i=1;'; put 'retain logonce 0;'; put 'if ('; put '_infile_=:"%str(WARN)ING" or _infile_=:"%str(ERR)OR"'; put ') and logonce=0 then'; put 'do;'; put 'call symputx(''logline'',_n_);'; put 'logonce+1;'; put 'end;'; put 'run;'; put '/* capture log including lines BEFORE the err */'; put '%if &logline>0 %then %do;'; put 'data _null_;'; put 'infile &logloc lrecl=5000;'; put 'input;'; put 'i=1;'; put 'stoploop=0;'; put 'if _n_ ge &logline-15 and stoploop=0 then do until (i>22);'; put 'call symputx(''logmsg'',catx(''\n'',symget(''logmsg''),_infile_));'; put 'input;'; put 'i+1;'; put 'stoploop=1;'; put 'end;'; put 'if stoploop=1 then stop;'; put 'run;'; put '%end;'; put '%end;'; put '%if %symexist(SYS_JES_JOB_URI) %then %do;'; put '/* setup webout for Viya */'; put 'options nobomfile;'; put '%if "X&SYS_JES_JOB_URI.X"="XX" %then %do;'; put 'filename _webout temp lrecl=999999 mod;'; put '%end;'; put '%else %do;'; put 'filename _webout filesrvc parenturi="&SYS_JES_JOB_URI"'; put 'name="_webout.json" lrecl=999999 mod;'; put '%end;'; put '%end;'; put '%else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do;'; put 'options nobomfile;'; put '/* set up http header for SASjs Server */'; put '%let fid=%sysfunc(fopen(&fref,A));'; put '%if &fid=0 %then %do;'; put '%put %str(ERR)OR: %sysfunc(sysmsg());'; put '%return;'; put '%end;'; put '%let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json)));'; put '%let rc=%sysfunc(fwrite(&fid));'; put '%let rc=%sysfunc(fclose(&fid));'; put '%let rc=%sysfunc(filename(&fref));'; put '%end;'; put '/* send response in SASjs JSON format */'; put 'data _null_;'; put 'file _webout mod lrecl=32000 encoding=''utf-8'';'; put 'length msg syswarningtext syserrortext $32767 mode $10 ;'; put 'sasdatetime=datetime();'; put 'msg=symget(''msg'');'; put '%if &logline>0 %then %do;'; put 'msg=cats(msg,''\n\nLog Extract:\n'',symget(''logmsg''));'; put '%end;'; put '/* escape the escapes */'; put 'msg=tranwrd(msg,''\'',''\\'');'; put '/* escape the quotes */'; put 'msg=tranwrd(msg,''"'',''\"'');'; put '/* ditch the CRLFs as chrome complains */'; put 'msg=compress(msg,,''kw'');'; put '/* quote without quoting the quotes (which are escaped instead) */'; put 'msg=cats(''"'',msg,''"'');'; put 'if symexist(''_debug'') then debug=quote(trim(symget(''_debug'')));'; put 'else debug=''""'';'; put 'if symget(''sasjsprocessmode'')=''Stored Program'' then mode=''SASJS'';'; put 'if mode ne ''SASJS'' then put ''>>weboutBEGIN<<'';'; put 'put ''{"SYSDATE" : "'' "&SYSDATE" ''"'';'; put 'put '',"SYSTIME" : "'' "&SYSTIME" ''"'';'; put 'put '',"sasjsAbort" : [{'';'; put 'put '' "MSG":'' msg ;'; put 'put '' ,"MAC": "'' "&mac" ''"}]'';'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put '',"_DEBUG":'' debug ;'; put 'if symexist(''_metauser'') then do;'; put '_METAUSER=quote(trim(symget(''_METAUSER'')));'; put 'put ",""_METAUSER"": " _METAUSER;'; put '_METAPERSON=quote(trim(symget(''_METAPERSON'')));'; put 'put '',"_METAPERSON": '' _METAPERSON;'; put 'end;'; put 'if symexist(''SYS_JES_JOB_URI'') then do;'; put 'SYS_JES_JOB_URI=quote(trim(symget(''SYS_JES_JOB_URI'')));'; put 'put '',"SYS_JES_JOB_URI": '' SYS_JES_JOB_URI;'; put 'end;'; put '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'syserrortext=cats(symget(''syserrortext''));'; put 'if findc(syserrortext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syserrortext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syserrortext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syserrortext=cats(''"'',syserrortext,''"'');'; put 'put '',"SYSERRORTEXT" : '' syserrortext;'; put 'put ",""SYSHOSTNAME"" : ""&syshostname"" ";'; put 'put ",""SYSJOBID"" : ""&sysjobid"" ";'; put 'put ",""SYSSCPL"" : ""&sysscpl"" ";'; put 'put ",""SYSSITE"" : ""&syssite"" ";'; put 'sysvlong=quote(trim(symget(''sysvlong'')));'; put 'put '',"SYSVLONG" : '' sysvlong;'; put 'syswarningtext=cats(symget(''syswarningtext''));'; put 'if findc(syswarningtext,''"\''!!''0A0D09000E0F010210111A''x) then do;'; put 'syswarningtext=''"''!!trim('; put 'prxchange(''s/"/\\"/'',-1, /* double quote */'; put 'prxchange(''s/\x0A/\n/'',-1, /* new line */'; put 'prxchange(''s/\x0D/\r/'',-1, /* carriage return */'; put 'prxchange(''s/\x09/\\t/'',-1, /* tab */'; put 'prxchange(''s/\x00/\\u0000/'',-1, /* NUL */'; put 'prxchange(''s/\x0E/\\u000E/'',-1, /* SS */'; put 'prxchange(''s/\x0F/\\u000F/'',-1, /* SF */'; put 'prxchange(''s/\x01/\\u0001/'',-1, /* SOH */'; put 'prxchange(''s/\x02/\\u0002/'',-1, /* STX */'; put 'prxchange(''s/\x10/\\u0010/'',-1, /* DLE */'; put 'prxchange(''s/\x11/\\u0011/'',-1, /* DC1 */'; put 'prxchange(''s/\x1A/\\u001A/'',-1, /* SUB */'; put 'prxchange(''s/\\/\\\\/'',-1,syswarningtext)'; put ')))))))))))))!!''"'';'; put 'end;'; put 'else syswarningtext=cats(''"'',syswarningtext,''"'');'; put 'put ",""SYSWARNINGTEXT"" : " syswarningtext;'; put 'put '',"END_DTTM" : "'' "%sysfunc(datetime(),E8601DT26.6)" ''" '';'; put 'put "}" ;'; put 'if mode ne ''SASJS'' then put ''>>weboutEND<<'';'; put 'run;'; put '%put _all_;'; put '%if "&sysprocessmode " = "SAS Stored Process Server " %then %do;'; put 'data _null_;'; put 'putlog ''stpsrvset program err and syscc'';'; put 'rc=stpsrvset(''program error'', 0);'; put 'call symputx("syscc",0,"g");'; put 'run;'; put '%if &sysscp=WIN'; put 'and 1=0 /* deprecating this logic until we figure out a consistent abort */'; put 'and "%substr(%str(&sysvlong ),1,8)"="9.04.01M"'; put 'and "%substr(%str(&sysvlong ),9,1)">"5" %then %do;'; put '/* skip approach (below) does not work in windows m6+ envs */'; put 'endsas;'; put '%end;'; put '%else %do;'; put '/**'; put '* endsas kills 9.4m3 deployments by orphaning multibridges.'; put '* Abort variants are ungraceful (non zero return code)'; put '* This approach lets SAS run silently until the end :-)'; put '* Caution - fails when called within a %include within a macro'; put '* Use mp_include() to handle this.'; put '*/'; put 'filename skip temp;'; put 'data _null_;'; put 'file skip;'; put 'put ''%macro skip();'';'; put 'comment ''%mend skip; -> fix lint '';'; put 'put ''%macro skippy();'';'; put 'comment ''%mend skippy; -> fix lint '';'; put 'run;'; put '%inc skip;'; put '%end;'; put '%end;'; put '%else %if "&sysprocessmode " = "SAS Compute Server " %then %do;'; put '/* endsas kills the session making it harder to fetch results */'; put 'data _null_;'; put 'syswarningtext=symget(''syswarningtext'');'; put 'syserrortext=symget(''syserrortext'');'; put 'abort_msg=symget(''msg'');'; put 'syscc=symget(''syscc'');'; put 'sysuserid=symget(''sysuserid'');'; put 'iftrue=symget(''iftrue'');'; put 'put (_all_)(/=);'; put 'call symputx(''syscc'',0);'; put 'abort cancel nolist;'; put 'run;'; put '%end;'; put '%else %do;'; put '%abort cancel;'; put '%end;'; put '%end;'; put '%else %do;'; put '%put _all_;'; put '%abort cancel;'; put '%end;'; put '%mend mp_abort;'; put '/** @endcond */'; put '%macro mm_getstpcode('; put 'tree=/User Folders/sasdemo/somestp'; put ',name='; put ',outloc=0'; put ',outref=0'; put ',mDebug=1'; put ',showlog=NO'; put ');'; put '%local mD;'; put '%if &mDebug=1 %then %let mD=;'; put '%else %let mD=%str(*);'; put '%&mD.put Executing &sysmacroname..sas;'; put '%&mD.put _local_;'; put '%if %length(&name)>0 %then %let name=/&name;'; put '/* first, check if STP exists */'; put '%local tsuri;'; put '%let tsuri=stopifempty ;'; put 'data _null_;'; put 'format type uri tsuri value $200.;'; put 'call missing (of _all_);'; put 'path="&tree&name(StoredProcess)";'; put '/* first, find the STP ID */'; put 'if metadata_pathobj("",path,"StoredProcess",type,uri)>0 then do;'; put '/* get sourcecode */'; put 'cnt=1;'; put 'do while (metadata_getnasn(uri,"Notes",cnt,tsuri)>0);'; put 'rc=metadata_getattr(tsuri,"Name",value);'; put '&mD.put tsuri= value=;'; put 'if value="SourceCode" then do;'; put '/* found it! */'; put 'rc=metadata_getattr(tsuri,"Id",value);'; put 'call symputx(''tsuri'',value,''l'');'; put 'stop;'; put 'end;'; put 'cnt+1;'; put 'end;'; put 'end;'; put 'else put (_all_)(=);'; put 'run;'; put '%mp_abort(iftrue= (&tsuri=stopifempty)'; put ',mac=mm_getstpcode'; put ',msg=%str(&tree&name.(StoredProcess) not found!)'; put ')'; put '/**'; put '* Now we can extract the textstore'; put '*/'; put 'filename __getdoc temp lrecl=10000000;'; put 'proc metadata'; put 'in="$METAREPOSITORY'; put ''; put 'SAS1"'; put 'out=__getdoc ;'; put 'run;'; put '/* find the beginning of the text */'; put '%local start;'; put 'data _null_;'; put 'infile __getdoc lrecl=10000;'; put 'input;'; put 'start=index(_infile_,''StoredText="'');'; put 'if start then do;'; put 'call symputx("start",start+11);'; put '*putlog ''"'' _infile_ ''"'';'; put 'end;'; put 'stop;'; put '%local outeng;'; put '%if "&outloc"="0" %then %let outeng=TEMP;'; put '%else %let outeng="&outloc";'; put '%local fref;'; put '%if &outref=0 %then %let fref=%mf_getuniquefileref();'; put '%else %let fref=&outref;'; put '/* read the content, byte by byte, resolving escaped chars */'; put 'filename &fref &outeng lrecl=100000;'; put 'data _null_;'; put 'length filein 8 fileid 8;'; put 'filein = fopen("__getdoc","I",1,"B");'; put 'fileid = fopen("&fref","O",1,"B");'; put 'rec = "20"x;'; put 'length entity $6;'; put 'do while(fread(filein)=0);'; put 'x+1;'; put 'if x>&start then do;'; put 'rc = fget(filein,rec,1);'; put 'if rec=''"'' then leave;'; put 'else if rec="&" then do;'; put 'entity=rec;'; put 'do until (rec=";");'; put 'if fread(filein) ne 0 then goto getout;'; put 'rc = fget(filein,rec,1);'; put 'entity=cats(entity,rec);'; put 'end;'; put 'select (entity);'; put 'when (''&'' ) rec=''&'' ;'; put 'when (''<'' ) rec=''<'' ;'; put 'when (''>'' ) rec=''>'' ;'; put 'when (''''') rec="''" ;'; put 'when (''"'') rec=''"'' ;'; put 'when ('' '') rec=''0A''x;'; put 'when ('' '') rec=''0D''x;'; put 'when (''$'' ) rec=''$'' ;'; put 'when ('' '') rec=''09''x;'; put 'otherwise putlog "%str(WARN)ING: missing value for " entity=;'; put 'end;'; put 'rc =fput(fileid, substr(rec,1,1));'; put 'rc =fwrite(fileid);'; put 'end;'; put 'else do;'; put 'rc =fput(fileid,rec);'; put 'rc =fwrite(fileid);'; put 'end;'; put 'end;'; put 'end;'; put 'getout:'; put 'rc=fclose(filein);'; put 'rc=fclose(fileid);'; put 'run;'; put '%if &showlog=YES %then %do;'; put 'data _null_;'; put 'infile &fref lrecl=32767 end=last;'; put 'input;'; put 'if _n_=1 then putlog ''>>stpcodeBEGIN<<'';'; put 'putlog _infile_;'; put 'if last then putlog ''>>stpcodeEND<<'';'; put 'run;'; put '%end;'; put 'filename __getdoc clear;'; put '%if &outref=0 %then %do;'; put 'filename &fref clear;'; put '%end;'; put '%mend mm_getstpcode;'; put '%macro dc_getsettings();'; put '%global _program;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(syscc=&syscc on entry (&syswarningtext &syserrortext))'; put ')'; put '%if %length(&_PROGRAM)>1 %then %let root=&_program;'; put '%else %do;'; put '%global _metauser;'; put '%let _metauser=&sysuserid;'; put '/* to mimic a "real" _program we need to give a dummy role and stp name */'; put '%let root=/dummyRole/dummyName;'; put '%end;'; put '/* the DC precode is stored in the Admin folder in the root of'; put 'the project. Lets find that root. */'; put '%put &=root;'; put '%let root=%mf_getapploc();'; put '%put &=root;'; put '/* Now we know the root location we can retrieve the params */'; put '%let temploc=%sysfunc(pathname(work))/settings.txt;'; put '%mm_getstpcode(tree=&root/services/public'; put ',name=Data_Controller_Settings'; put ',outloc=&temploc'; put ')'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Unable to run getstpcode)'; put ')'; put 'filename _getsets "&temploc" lrecl=2000;'; put '/*'; put 'Do not use mp_include here - this puts a copy in every service, which creates'; put 'compilation problems when calling services from mp_include'; put '*/'; put '%inc _getsets/source2;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(Problem running &sysmacroname (&syswarningtext &syserrortext))'; put ')'; put '%mend dc_getsettings;'; put '%macro mf_fmtdttm('; put ')/*/STORE SOURCE*/;'; put '%if "&sysver"="9.2" or "&sysver"="9.3"'; put 'or ("&sysver"="9.4" and "%substr(&SYSVLONG,9,1)" le "3")'; put 'or "%substr(&sysver,1,1)"="4"'; put 'or "%substr(&sysver,1,1)"="5"'; put '%then %do;DATETIME19.3%end;'; put '%else %do;E8601DT26.6%end;'; put '%mend mf_fmtdttm;'; put '%macro mf_getuser('; put ')/*/STORE SOURCE*/;'; put '%local user;'; put '%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;'; put '%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;'; put '%let user=&SYS_COMPUTE_SESSION_OWNER;'; put '%end;'; put '%else %if %symexist(_metaperson) %then %do;'; put '%if %length(&_metaperson)=0 %then %let user=&sysuserid;'; put '/* sometimes SAS will add @domain extension - remove for consistency */'; put '/* but be sure to quote in case of usernames with commas */'; put '%else %let user=%unquote(%scan(%quote(&_metaperson),1,@));'; put '%end;'; put '%else %let user=&sysuserid;'; put '%quote(&user)'; put '%mend mf_getuser;'; put '%macro mp_init(prefix=SASJS'; put ')/*/STORE SOURCE*/;'; put '%if %symexist(SASJS_PREFIX) %then %return; /* only run once */'; put '%global'; put 'SASJS_PREFIX /* the ONLY hard-coded global macro variable in SASjs */'; put '&prefix._FUNCTIONS /* used in mcf_init() to track core function compilation */'; put '&prefix._INIT_NUM /* initialisation time as numeric */'; put '&prefix._INIT_DTTM /* initialisation time in E8601DT26.6 format */'; put '&prefix.WORK /* avoid typing %sysfunc(pathname(work)) every time */'; put ';'; put '%let sasjs_prefix=&prefix;'; put 'data _null_;'; put 'dttm=datetime();'; put 'call symputx("&sasjs_prefix._init_num",dttm,''g'');'; put 'call symputx("&sasjs_prefix._init_dttm",put(dttm,E8601DT26.6),''g'');'; put 'call symputx("&sasjs_prefix.work",pathname(''WORK''),''g'');'; put 'run;'; put 'options'; put 'compress=CHAR /* default is none so ensure we have something! */'; put 'datastmtchk=ALLKEYWORDS /* protection from overwriting input datasets */'; put 'errorcheck=STRICT /* catch errs in libname/filename statements */'; put 'fmterr /* ensure err when a format cannot be found */'; put 'mergenoby=%str(ERR)OR /* throw err when a merge has no BY variables */'; put 'missing=. /* changing this can cause hard to detect errs */'; put 'noquotelenmax /* avoid warnings for long strings */'; put 'noreplace /* avoid overwriting permanent datasets */'; put 'ps=max /* reduce log size slightly */'; put 'ls=max /* reduce log even more and avoid word truncation */'; put 'validmemname=COMPATIBLE /* avoid special characters etc in table names */'; put 'validvarname=V7 /* avoid special characters etc in variable names */'; put 'varinitchk=%str(ERR)OR /* avoid data mistakes from variable name typos */'; put 'varlenchk=%str(ERR)OR /* fail hard if truncation (data loss) can result */'; put '%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;'; put 'noautocorrect /* disallow misspelled procedure names */'; put 'dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */'; put '%end;'; put ';'; put '%mend mp_init;'; put '%macro mpeinit(fetch=YES);'; put '%global mpeinit'; put 'mpeadmins /* group with unrestricted Meditor access */'; put 'mpelocapprovals /* location for landing and staging files */'; put 'mpelib /* location of configuration tables for DC */'; put 'dc_repo_users /* location of user / group metadata */'; put 'dc_licence_key /* extracted in dc_getsettings */'; put 'dc_activation_key /* extracted in dc_getsettings */'; put 'dc_locale /* extracted in dc_getsettings */'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug'; put ';'; put '%if &mpeinit=1 %then %return;'; put '%else %let mpeinit=1;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(Problem on service startup (&syswarningtext &syserrortext))'; put ')'; put '%mp_init()'; put '%if &fetch=YES %then %do;'; put '%webout(FETCH)'; put '%end;'; put '%global _CLIENTNAME;'; put '%mp_abort(iftrue= (&_CLIENTNAME=SAS Enterprise Guide)'; put ',mac=&_program..sas'; put ',msg=%str(Data Controller is a web app and should not be executed from EG)'; put ')'; put 'options urlencoding=utf8 nobomfile lrecl=32767;'; put '%let perf=%sysfunc(datetime());'; put '%put perfdiff: 0;'; put '%let dc_locale=SYSTEM; /* default if not set */'; put '/**'; put '* E8601DT26.6 has widest database support - but not all SAS flavours can'; put '* handle it. Override in the settings STP if needed.'; put '*/'; put 'data _null_;'; put 'dc_dttmtfmt=''"%sysfunc(datetime(),''!!"%mf_fmtdttm()"!!'')"dt'';'; put 'call symputx(''dc_dttmtfmt'',dc_dttmtfmt);'; put 'put dc_dttmtfmt=;'; put 'run;'; put '%put &=dc_dttmtfmt;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc prior to dc_getsettings)'; put ')'; put '%dc_getsettings()'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program'; put ',msg=%str(syscc=&syscc after dc_getsettings)'; put ')'; put 'data _null_;'; put 'set &DC_LIBREF..mpe_config(where=('; put 'var_scope="DC"'; put 'and &dc_dttmtfmt lt tx_to'; put 'and var_active=1'; put '));'; put 'call symputx(var_name,var_value,''G'');'; put 'putlog var_name "=" var_value;'; put 'run;'; put '%let mpelib=&dc_libref;'; put '%let mpeadmins=&dc_admin_group;'; put '%let mpelocapprovals=&dc_staging_area;'; put '%let dc_repo_users=&dc_repo_users;'; put '%if &dc_locale ne SYSTEM %then %do;'; put 'options locale=&dc_locale;'; put '%end;'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(Problem during compilation or with STP precode (&syswarningtext))'; put ')'; put '%mend mpeinit;'; put '%macro mf_mval(var);'; put '%if %symexist(&var) %then %do;'; put '%superq(&var)'; put '%end;'; put '%mend mf_mval;'; put '%macro mf_trimstr(basestr,trimstr);'; put '%local baselen trimlen trimval;'; put '/* return if basestr is shorter than trimstr (or 0) */'; put '%let baselen=%length(%superq(basestr));'; put '%let trimlen=%length(%superq(trimstr));'; put '%if &baselen < &trimlen or &baselen=0 %then %return;'; put '/* obtain the characters from the end of basestr */'; put '%let trimval=%qsubstr(%superq(basestr)'; put ',%length(%superq(basestr))-&trimlen+1'; put ',&trimlen);'; put '/* compare and if matching, chop it off! */'; put '%if %superq(basestr)=%superq(trimstr) %then %do;'; put '%return;'; put '%end;'; put '%else %if %superq(trimval)=%superq(trimstr) %then %do;'; put '%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)'; put '%end;'; put '%else %do;'; put '&basestr'; put '%end;'; put '%mend mf_trimstr;'; put '%macro mf_getplatform(switch'; put ')/*/STORE SOURCE*/;'; put '%local a b c;'; put '%if &switch.NONE=NONE %then %do;'; put '%if %symexist(sasjsprocessmode) %then %do;'; put '%if &sasjsprocessmode=Stored Program %then %do;'; put 'SASJS'; put '%return;'; put '%end;'; put '%end;'; put '%if %symexist(sysprocessmode) %then %do;'; put '%if "&sysprocessmode"="SAS Object Server"'; put 'or "&sysprocessmode"= "SAS Compute Server" %then %do;'; put 'SASVIYA'; put '%end;'; put '%else %if "&sysprocessmode"="SAS Stored Process Server"'; put 'or "&sysprocessmode"="SAS Workspace Server"'; put '%then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if %symexist(_metaport) or %symexist(_metauser) %then %do;'; put 'SASMETA'; put '%return;'; put '%end;'; put '%else %do;'; put 'BASESAS'; put '%return;'; put '%end;'; put '%end;'; put '%else %if &switch=SASSTUDIO %then %do;'; put '/* return the version of SAS Studio else 0 */'; put '%if %mf_mval(_CLIENTAPP)=%str(SAS Studio) %then %do;'; put '%let a=%mf_mval(_CLIENTVERSION);'; put '%let b=%scan(&a,1,.);'; put '%if %eval(&b >2) %then %do;'; put '&b'; put '%end;'; put '%else 0;'; put '%end;'; put '%else 0;'; put '%end;'; put '%else %if &switch=VIYARESTAPI %then %do;'; put '%mf_trimstr(%sysfunc(getoption(servicesbaseurl)),/)'; put '%end;'; put '%mend mf_getplatform;'; put '%macro mpeterm();'; put '%local oldloc;'; put 'data _null_;'; put 'if symexist(''SYSPRINTTOLOG'') then oldloc=symget(''SYSPRINTTOLOG'');'; put 'else oldloc=getoption(''LOG'');'; put 'if subpad(oldloc,1,1) not in (''"'',"''",'' '') then oldloc=quote(cats(oldloc));'; put 'call symputx(''oldloc'',oldloc,''l'');'; put 'run;'; put '%if %length(&oldloc)>0 %then %do;'; put 'proc printto log=log;'; put 'run;'; put 'data _null_;'; put 'infile &oldloc;'; put 'input; putlog _infile_;'; put 'run;'; put '%end;'; put '%if %sysfunc(exist(&dc_libref..mpe_requests)) and %mf_getplatform() ne SASVIYA'; put '%then %do;'; put 'data ;'; put 'if 0 then set &dc_libref..mpe_requests;'; put 'request_dttm=%sysfunc(datetime());'; put 'request_user="%mf_getuser()";'; put 'request_service="%scan(&_program,-2,/)/%scan(&_program,-1,/)";'; put 'request_params='''';'; put 'output;stop;'; put 'proc append base=&dc_libref..mpe_requests data=&syslast force nowarn;'; put 'run;'; put '%end;'; put '%mend mpeterm;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'options noquotelenmax ps=max;'; put '/* create dummy macros to prevent stpbegin / stpend from corrupting sessions */'; put '%macro stpbegin();'; put '%put NOTE: the STPBEGIN macro should not be used for web apps!;'; put '%mend stpbegin;'; put '%macro stpend();'; put '%put NOTE: the STPEND macro should not be used for web apps!;'; put '%mend stpend;'; put '* ServiceInit end;'; put '* Service start;'; put '/**'; put '@file'; put '@brief Generic validator for editable libraries'; put '@details The input table is simply one row from the target table in table'; put 'called "work.source_row".'; put 'Available macro variables:'; put '@li MPELIB - The DC control library'; put '@li LIBDS - The library.dataset being filtered'; put '@li VARIABLE_NM - The column being filtered'; put '

Service Inputs

'; put '
work.source_row
'; put '|libref:$8|'; put '|somelib|'; put '

Service Outputs

'; put 'The values provided below are generic samples - we encourage you to replace'; put 'these with realistic values in your own deployments.'; put '
DYNAMIC_VALUES
'; put 'The RAW_VALUE column may be charactor or numeric. If DISPLAY_INDEX is not'; put 'provided, it is added automatically.'; put '|DISPLAY_INDEX:best.|DISPLAY_VALUE:$|RAW_VALUE|'; put '|---|---|---|'; put '|1|$77.43|77.43|'; put '|2|$88.43|88.43|'; put '
DYNAMIC_EXTENDED_VALUES
'; put 'This table is optional. If provided, it will map the DISPLAY_INDEX from the'; put 'DYNAMIC_VALUES table to additional column/value pairs, that will be used to'; put 'populate dropdowns for _other_ cells in the _same_ row.'; put 'Should be used sparingly! The use of large tables here can slow down the'; put 'browser.'; put '|DISPLAY_INDEX:best.|EXTRA_COL_NAME:$32.|DISPLAY_VALUE:$|DISPLAY_TYPE:$1.|RAW_VALUE_NUM|RAW_VALUE_CHAR:$5000|'; put '|---|---|---|---|---|---|'; put '|1|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|1|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|1|DISCOUNT_RT|"30%"|N|0.3|` `|'; put '|1|CURRENCY_SYMBOL|"GBP"|C|` `|"GBP"|'; put '|1|CURRENCY_SYMBOL|"RSD"|C|` `|"RSD"|'; put '|2|DISCOUNT_RT|"50%"|N|0.5|` `|'; put '|2|DISCOUNT_RT|"40%"|N|0.4|` `|'; put '|2|CURRENCY_SYMBOL|"EUR"|C|` `|"EUR"|'; put '|2|CURRENCY_SYMBOL|"HKD"|C|` `|"HKD"|'; put '**/'; put '/* send back the raw and formatted values */'; put 'data _null_;'; put 'var=symget(''variable_nm'');'; put 'libds=symget(''libds'');'; put 'if libds="&mpelib..MPE_EXCEL_CONFIG" and var=''XL_TABLE'' then do;'; put 'call symputx(''srccol'',''XL_LIBREF'');'; put 'end;'; put 'else call symputx(''srccol'',''libref'');'; put 'run;'; put 'proc sql;'; put 'create table work.DYNAMIC_VALUES as'; put 'select distinct dsn as display_value,'; put 'upcase(dsn) as raw_value'; put 'from &mpelib..mpe_tables'; put '(where=(&dc_dttmtfmt. < tx_to))'; put 'where libref in (select &srccol from work.source_row)'; put 'order by 1;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/web9; %let service=index-html; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5EYXRhIENvbnRyb2xsZXI8L3RpdGxlPgogICAgPCEtLSA8YmFzZSBocmVmPSIvIj4gLS0+CgogICAgPCEtLSBtZXRhIHRhZ3MgLS0+CiAgICA8bWV0YSBuYW1lPSJk''@;'; put 'put ''ZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVyZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIvPgogICAgPG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IkRhdGEgQ29udHJvbGxlciBmb3IgU0FTwq4iLz4KICAgIDxtZXRhIGl0ZW1wcm9wPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQ2FwdHVy''@;'; put 'put ''ZSwgUmV2aWV3LCBhbmQgQXBwcm92ZSIvPgogICAgPG1ldGEgaXRlbXByb3A9ImltYWdlIiBjb250ZW50PSJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8vaW1nL2RjX2JnX0Fzc2V0LTVAMngucG5nIi8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwOi8v''@;'; put 'put ''ZGVtby5kYXRhY29udHJvbGxlci5pbyIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iRGF0YSBDb250cm9sbGVyIGZvciBTQVPCriIvPgogICAgPG1ldGEgcHJvcGVydHk9Im9n''@;'; put 'put ''OmRlc2NyaXB0aW9uIiBjb250ZW50PSJDYXB0dXJlLCBSZXZpZXcsIGFuZCBBcHByb3ZlIi8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pby9pbWcvZGNfYmdfQXNzZXQtNUAyeC5wbmciLz4KCiAgICA8bWV0YSBu''@;'; put 'put ''YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIvPgogICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhy''@;'; put 'put ''ZWY9ImltYWdlcy9mYXZpY29uLmljbyIvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzLjMyN2VkYzg4YTVmMDAxYmIuY3NzIj48L2hlYWQ+CgogIDwhLS0KICAgICMjIFNBU0pTIEFkYXB0ZXIgY29uZmlnIGRldGFpbHMgIyMKCiAgICAqIGFwcExvYzogVGhlIGxvY2F0''@;'; put 'put ''aW9uIGluIG1ldGFkYXRhIG9yIFNBUyBkcml2ZSB3aGVyZSBEQyB3aWxsIGJlIGRlcGxveWVkCiAgICAqIHNlcnZlclR5cGU6IGVpdGhlciBTQVM5LCBTQVNWSVlBIG9yIFNBU0pTCiAgICAqIGxvZ2luTWVjaGFuaXNtOiBVc2UgJ0RlZmF1bHQnIGZvciByZWd1bGFyICh1c2VyL3Bhc3MpIGxv''@;'; put 'put ''Z2lucywgb3IgJ1JlZGlyZWN0ZWQnIGZvciAyRkEvU1NPCiAgICAqIGRlYnVnOiBXaGV0aGVyIHRvIGVuYWJsZSBkZWJ1ZyBvbiBzdGFydHVwCgogICAgIyMgVml5YSBvbmx5IHNldHRpbmdzICMjCiAgICAqIGFkbWluR3JvdXA6IFRoaXMgZ3JvdXAgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBh''@;'; put 'put ''Y2Nlc3MgKFZpeWEgT25seSkKICAgICogZGNQYXRoOiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gaW4gd2hpY2ggdG8gZGVwbG95IHRoZSBzdGFnaW5nIGFyZWEgKFZpeWEgb25seSkKICAgICogdXNlQ29tcHV0ZUFwaTogQ29ubmVjdGlvbiBtZXRob2QgKFZpeWEgb25seSkKICAgICogY29udGV4''@;'; put 'put ''dE5hbWU6IENvbXB1dGUgQ29udGV4dCAoVml5YSBvbmx5KQoKICAtLT4KCiAgPHNhc2pzIHNlcnZlcnVybD0iIiBhcHBsb2M9Ii9QdWJsaWMvYXBwL2RjIiBzZXJ2ZXJ0eXBlPSJTQVNKUyIgbG9naW5tZWNoYW5pc209IkRlZmF1bHQiIGRlYnVnPSJmYWxzZSIgdXNlY29tcHV0ZWFwaT0idHJ1''@;'; put 'put ''ZSIgY29udGV4dG5hbWU9IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCIgYWRtaW5ncm91cD0ic2VjLXNhczktcHJkLWludC1zYXNwbGF0Zm9ybS0zMDAxMTRzYXNqcyIgZGNwYXRoPSIvdG1wL2RjIiBob3RsaWNlbmNla2V5PSJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlv''@;'; put 'put ''biI+CiAgPC9zYXNqcz4KCiAgPGJvZHkgY2xhc3M9Im0tMCI+CiAgICA8bXktYXBwPjwvbXktYXBwPgogIDxzY3JpcHQgc3JjPSJydW50aW1lLmMzMTZhYzUxZDU5NjY3MTMuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9InBvbHlmaWxscy44N2RiYmQzZmFhYmVkNTEz''@;'; put 'put ''LmpzIiB0eXBlPSJtb2R1bGUiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJzY3JpcHRzLjg5YTg5NDdhMDI2NmM0N2EuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJtYWluLjdhNjFkZWI5NTk0MDA3MDQuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+PC9ib2R5Pgo8L2h0bWw+Cg=='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=main.7a61deb959400704-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1sxNzldLHs3NDA5MjpmdW5jdGlvbihXZSl7V2UuZXhwb3J0cz1mdW5jdGlvbih6ZSl7dmFyIFQ9e307ZnVuY3Rpb24gc2Uoayl7aWYoVFtrXSlyZXR1cm4g''@;'; put 'put ''VFtrXS5leHBvcnRzO3ZhciB2PVRba109e2k6ayxsOiExLGV4cG9ydHM6e319O3JldHVybiB6ZVtrXS5jYWxsKHYuZXhwb3J0cyx2LHYuZXhwb3J0cyxzZSksdi5sPSEwLHYuZXhwb3J0c31yZXR1cm4gc2UubT16ZSxzZS5jPVQsc2UuZD1mdW5jdGlvbihrLHYsaGUpe3NlLm8oayx2KXx8T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGssdix7ZW51bWVyYWJsZTohMCxnZXQ6aGV9KX0sc2Uucj1mdW5jdGlvbihrKXt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoayxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGssIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxzZS50PWZ1bmN0aW9uKGssdil7aWYoMSZ2JiYoaz1zZShrKSksOCZ2fHw0JnYmJiJvYmplY3QiPT10eXBlb2YgayYmayYmay5fX2VzTW9kdWxlKXJldHVybiBrO3ZhciBoZT1PYmplY3QuY3JlYXRlKG51''@;'; put 'put ''bGwpO2lmKHNlLnIoaGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShoZSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6a30pLDImdiYmInN0cmluZyIhPXR5cGVvZiBrKWZvcih2YXIgSCBpbiBrKXNlLmQoaGUsSCxmdW5jdGlvbihCKXtyZXR1cm4ga1tCXX0uYmluZChudWxsLEgpKTty''@;'; put 'put ''ZXR1cm4gaGV9LHNlLm49ZnVuY3Rpb24oayl7dmFyIHY9ayYmay5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGsuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4ga307cmV0dXJuIHNlLmQodiwiYSIsdiksdn0sc2Uubz1mdW5jdGlvbihrLHYpe3JldHVybiBPYmplY3QucHJvdG90eXBl''@;'; put 'put ''Lmhhc093blByb3BlcnR5LmNhbGwoayx2KX0sc2UucD0iIixzZShzZS5zPSIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpfSh7Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5k''@;'; put 'put ''ICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxULkNsYXJpdHlJY29uc0FwaT12b2lkIDA7dmFyIGs9c2UoCi8qISAuL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyICovCiIuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLHY9e30saGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoSCwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSC5zaW5nbGVJbnN0YW5jZXx8''@;'; put 'put ''KEguc2luZ2xlSW5zdGFuY2U9bmV3IEgpLEguc2luZ2xlSW5zdGFuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksSC5wcm90b3R5cGUudmFsaWRhdGVOYW1lPWZ1bmN0aW9uKEIpe2lmKDA9PT1CLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMg''@;'; put 'put ''bXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmchIik7aWYoL1xzLy50ZXN0KEIpKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMhIik7cmV0dXJuITB9LEgucHJvdG90eXBlLm5vcm1hbGl6ZVNoYXBl''@;'; put 'put ''TmFtZT1mdW5jdGlvbihCKXtyZXR1cm4gQi50b0xvd2VyQ2FzZSgpfSxILnByb3RvdHlwZS5zZXRJY29uVGVtcGxhdGU9ZnVuY3Rpb24oQixMKXt2YXIgSz1MLnRyaW0oKTt0aGlzLnZhbGlkYXRlTmFtZShCKSYmKEI9dGhpcy5ub3JtYWxpemVTaGFwZU5hbWUoQiksdltCXSYmZGVsZXRlIHZb''@;'; put 'put ''Ql0sdltCXT1LLGsuU2hhcGVUZW1wbGF0ZU9ic2VydmVyLmluc3RhbmNlLmVtaXRDaGFuZ2VzKEIsSykpfSxILnByb3RvdHlwZS5zZXRJY29uQWxpYXNlcz1mdW5jdGlvbihCLEwsSyl7Zm9yKHZhciBKPTAsST1LO0o8SS5sZW5ndGg7SisrKXt2YXIgUj1JW0pdO3RoaXMudmFsaWRhdGVOYW1l''@;'; put 'put ''KFIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoQixSLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQltMXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihCKXtpZigib2JqZWN0IiE9dHlwZW9mIEIpdGhyb3cgbmV3IEVycm9yKCdUaGUg''@;'; put 'put ''YXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxuICAgICAgICAgICAgICAgIHsgInNoYXBlLW5hbWUiOiAic2hhcGUtdGVtcGxhdGUiIH0nKTtmb3IodmFyIEwgaW4gQilCLmhhc093blByb3BlcnR5KEwpJiZ0aGlzLnNl''@;'; put 'put ''dEljb25UZW1wbGF0ZShMLEJbTF0pfSxILnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oQil7cmV0dXJuISF2W3RoaXMubm9ybWFsaXplU2hhcGVOYW1lKEIpXX0sSC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKEIpe2lmKCFCKXJldHVybiB2O2lmKCJzdHJpbmciIT10eXBlb2YgQil0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJPbmx5IHN0cmluZyBhcmd1bWVudCBpcyBhbGxvd2VkIGluIHRoaXMgbWV0aG9kLiIpO3JldHVybiB2W3RoaXMubm9ybWFsaXplU2hhcGVOYW1lKEIpXX0sSC5wcm90b3R5cGUuYWxpYXM9ZnVuY3Rpb24oQil7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAgICAgICAgICB7ICJzaGFwZS1uYW1lIjogWyJhbGlhcy1uYW1lIiwgLi4uXSB9Jyk7Zm9yKHZhciBMIGluIEIpaWYoQi5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eShMKSl7aWYoIXYuaGFzT3duUHJvcGVydHkoTCkpdGhyb3cgbmV3IEVycm9yKCdBbiBpY29uICInK0wrIlwiIHlvdSBhcmUgdHJ5aW5nIHRvIHNldCBhbGlhc2VzIHRvIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIENsYXJpdHkgSWNvbnMgc2V0cyEiKTt0aGlzLnNldEljb25BbGlhc2VzKHYsTCxC''@;'; put 'put ''W0xdKX19LEh9KCk7VC5DbGFyaXR5SWNvbnNBcGk9aGV9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0''@;'; put 'put ''cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuQ2xhcml0eUljb25FbGVtZW50PXZvaWQgMDt2YXIgaz1zZSgKLyohIC4vY2xyLWljb25zLWFwaSAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLHY9c2UoCi8q''@;'; put 'put ''ISAuL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLGhlPTAsSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7SC5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBC''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gTCgpe3ZhciBLPUIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBLLmNsckljb25VbmlxSWQ9Il9jbHJfaWNvbl8iK2hlLGhlKyssS30ib2JqZWN0Ij09dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3QmJihCPWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KEhUTUxFbGVtZW50LGFyZ3VtZW50cyx0aGlzLmNvbnN0cnVjdG9yKX0pLFQuQ2xhcml0eUljb25FbGVtZW50PUwsTC5vYnNlcnZlZEF0dHJpYnV0ZXM9WyJzaGFwZSIsInNpemUiLCJ0aXRsZSJdLChMLnByb3RvdHlw''@;'; put 'put ''ZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpMfX0pKS5jb25zdHJ1Y3Rvcj1MLEwucHJvdG90eXBlLl9hcHBlbmRDdXN0b21UaXRsZT1mdW5jdGlvbigpe3ZhciBLPUguY2xvbmVOb2Rl''@;'; put 'put ''KCExKTtLLmlkPXRoaXMuY2xySWNvblVuaXFJZCxLLnRleHRDb250ZW50PXRoaXMuY3VycmVudFRpdGxlQXR0clZhbCx0aGlzLmFwcGVuZENoaWxkKEspfSxMLnByb3RvdHlwZS5fc2V0SWNvblNpemU9ZnVuY3Rpb24oSyl7IU51bWJlcihLKXx8TnVtYmVyKEspPDA/KHRoaXMuc3R5bGUud2lk''@;'; put 'put ''dGg9bnVsbCx0aGlzLnN0eWxlLmhlaWdodD1udWxsKToodGhpcy5zdHlsZS53aWR0aD1LKyJweCIsdGhpcy5zdHlsZS5oZWlnaHQ9SysicHgiKX0sTC5wcm90b3R5cGUuX25vcm1hbGl6ZVNoYXBlPWZ1bmN0aW9uKEspe3JldHVybiBLLnNwbGl0KC9ccy8pWzBdLnRvTG93ZXJDYXNlKCl9LEwu''@;'; put 'put ''cHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIEs9dGhpcztpZih0aGlzLmdldEF0dHJpYnV0ZSgicm9sZSIpfHx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsIm5vbmUiKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2l6ZSIpKXt2YXIgSj10aGlzLmdldEF0dHJpYnV0ZSgi''@;'; put 'put ''c2l6ZSIpO3RoaXMuY3VycmVudFNpemVBdHRyVmFsIT09SiYmKHRoaXMuY3VycmVudFNpemVBdHRyVmFsPUosdGhpcy5fc2V0SWNvblNpemUoSikpfWlmKHRoaXMuaGFzQXR0cmlidXRlKCJzaGFwZSIpKXt2YXIgST10aGlzLl9ub3JtYWxpemVTaGFwZSh0aGlzLmdldEF0dHJpYnV0ZSgic2hh''@;'; put 'put ''cGUiKSk7aWYodGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbj12LlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyhJLGZ1bmN0aW9uKHope0suX2luamVjdFRlbXBsYXRlKHopfSksdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPUksIWsuQ2xhcml0eUljb25z''@;'; put 'put ''QXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpKXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTt2YXIgUj1rLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKTtpZihSPT09dGhpcy5jdXJyZW50''@;'; put 'put ''U2hhcGVUZW1wbGF0ZSlyZXR1cm47dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1SfWlmKHRoaXMuaGFzQXR0cmlidXRlKCJ0aXRsZSIpKXt2YXIgRT10aGlzLmdldEF0dHJpYnV0ZSgidGl0bGUiKTtpZih0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWwhPT1FJiYodGhpcy5jdXJyZW50VGl0bGVB''@;'; put 'put ''dHRyVmFsPUUpLCF0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpcmV0dXJufXRoaXMuX2luamVjdFRlbXBsYXRlKCl9LEwucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaz1mdW5jdGlvbihLLEosSSl7dmFyIFI9dGhpcztpZigic2l6ZSI9PT1LJiZ0aGlzLl9zZXRJY29uU2l6ZShJ''@;'; put 'put ''KSwic2hhcGUiPT09Syl7aWYodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPXRoaXMuX25vcm1hbGl6ZVNoYXBlKEkpLHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24mJih0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uKCksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlv''@;'; put 'put ''bj12LlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwsZnVuY3Rpb24oRSl7Ui5faW5qZWN0VGVtcGxhdGUoRSl9KSksIWsuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwp''@;'; put 'put ''KXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPWsuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpfSJ0aXRsZSI9PT1LJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPUks''@;'; put 'put ''IXRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LEwucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpfSxM''@;'; put 'put ''LnByb3RvdHlwZS5fc2V0QXJpYUxhYmVsbGVkQnk9ZnVuY3Rpb24oKXt2YXIgSz10aGlzLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IiksST10aGlzLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpfHx0aGlzO0s/SyYmSy5pbmRleE9mKHRoaXMuY2xySWNvblVuaXFJZCk8MCYmSS5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsSysiICIrdGhpcy5jbHJJY29uVW5pcUlkKTpJLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0aGlzLmNsckljb25VbmlxSWQpfSxMLnByb3RvdHlwZS5faW5qZWN0VGVtcGxhdGU9ZnVuY3Rpb24oSyl7SyYmSyE9PXRoaXMuY3VycmVudFNo''@;'; put 'put ''YXBlVGVtcGxhdGUmJih0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPUspLHRoaXMuaW5uZXJIVE1MPXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUsdGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsJiYodGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKSx0aGlzLl9hcHBlbmRDdXN0b21UaXRsZSgpKX0s''@;'; put 'put ''TC5wcm90b3R5cGUuX2luamVjdEVycm9yVGVtcGxhdGU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPWsuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCgiZXJyb3IiKSx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRz''@;'; put 'put ''IjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8q''@;'; put 'put ''ISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKHplLFQsc2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksVC5DbGFyaXR5SWNvbnM9dm9pZCAwO3ZhciBrPXNlKAovKiEgLi9jbHItaWNvbnMtYXBpICovCiIu''@;'; put 'put ''L3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIiksdj1zZSgKLyohIC4vY2xyLWljb25zLWVsZW1lbnQgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIiksaGU9c2UoCi8qISAuL3NoYXBlcy9jb3JlLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9p''@;'; put 'put ''Y29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIiksSD1rLkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZTtULkNsYXJpdHlJY29ucz1ILEguYWRkKGhlLkNvcmVTaGFwZXMpLHR5cGVvZiB3aW5kb3c8InUiJiYod2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKXx8KHdpbmRv''@;'; put 'put ''dy5DbGFyaXR5SWNvbnM9SCksY3VzdG9tRWxlbWVudHMuZ2V0KCJjbHItaWNvbiIpfHxjdXN0b21FbGVtZW50cy5kZWZpbmUoImNsci1pY29uIix2LkNsYXJpdHlJY29uRWxlbWVudCkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIjoKLyohKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKHplLFQsc2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksVC5Db3JlU2hhcGVzPVQuQ2xyU2hhcGVBcnJvdz1ULkNs''@;'; put 'put ''clNoYXBlU3RlcEZvcndhcmQyPVQuQ2xyU2hhcGVFeWVIaWRlPVQuQ2xyU2hhcGVFeWU9VC5DbHJTaGFwZUV2ZW50PVQuQ2xyU2hhcGVDYWxlbmRhcj1ULkNsclNoYXBlQW5nbGVEb3VibGU9VC5DbHJTaGFwZVZpZXdDb2x1bW5zPVQuQ2xyU2hhcGVTZWFyY2g9VC5DbHJTaGFwZVZtQnVnPVQu''@;'; put 'put ''Q2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPVQuQ2xyU2hhcGVGaWx0ZXJHcmlkPVQuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPVQuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9VC5DbHJTaGFwZUNsb3VkPVQuQ2xyU2hhcGVJbWFnZT1ULkNsclNoYXBlQmVsbD1ULkNsclNoYXBlRm9sZGVy''@;'; put 'put ''T3Blbj1ULkNsclNoYXBlRm9sZGVyPVQuQ2xyU2hhcGVBbmdsZT1ULkNsclNoYXBlVXNlcj1ULkNsclNoYXBlQmFycz1ULkNsclNoYXBlSGVscEluZm89VC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD1ULkNsclNoYXBlRXJyb3JTdGFuZGFyZD1ULkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPVQu''@;'; put 'put ''Q2xyU2hhcGVJbmZvU3RhbmRhcmQ9VC5DbHJTaGFwZUluZm9DaXJjbGU9VC5DbHJTaGFwZUNoZWNrQ2lyY2xlPVQuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT1ULkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT1ULkNsclNoYXBlVGltZXM9VC5DbHJTaGFwZUNoZWNrPVQuQ2xyU2hhcGVD''@;'; put 'put ''b2c9VC5DbHJTaGFwZUhvbWU9VC5DbHJTaGFwZVVua25vd25TdGF0dXM9dm9pZCAwO3ZhciBrPXNlKAovKiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksdj1zZSgKLyohIC4uL3V0aWxzL3N2''@;'; put 'put ''Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1QuQ2xyU2hhcGVVbmtub3duU3RhdHVzPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4''@;'; put 'put ''PSIxNy41OCIgY3k9IjI2LjIzIiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI0LjcsMTNhNS4xOCw1LjE4LDAsMCwwLTIuMTYtMy41Niw3LjI2LDcuMjYsMCwwLDAtNS43MS0xLjA5QTExLjM0''@;'; put 'put ''LDExLjM0LDAsMCwwLDEyLDEwLjQ0LDEsMSwwLDEsMCwxMy4yNiwxMmE5LjMyLDkuMzIsMCwwLDEsMy45NC0xLjcyLDUuMjksNS4yOSwwLDAsMSw0LjE2Ljc0LDMuMjEsMy4yMSwwLDAsMSwxLjM1LDIuMTljLjMzLDIuNjktMy4xOSwzLjc1LTUuMzIsNC4xNGwtLjgyLjE1djQuMzZhMSwxLDAs''@;'; put 'put ''MCwwLDIsMFYxOS4xN0MyNC42MSwxNy43OSwyNC44OCwxNC40MSwyNC43LDEzWiIvPicpLFQuQ2xyU2hhcGVIb21lPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNzEsMTcuMjlsLTE1LTE1YTEsMSwwLDAs''@;'; put 'put ''MC0xLjQxLDBsLTE1LDE1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTgsNC40MSwzMi4yOSwxOC43MWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMzJoLTVWMjJIMTNW''@;'; put 'put ''MzJIOFYxOEw2LDIwVjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NmwtMi0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxOWExLDEsMCwwLDEtLjcxLS4yOUwxOCw0''@;'; put 'put ''LjQxLDMuNzEsMTguNzFhMSwxLDAsMCwxLTEuNDEtMS40MWwxNS0xNWExLDEsMCwwLDEsMS40MSwwbDE1LDE1QTEsMSwwLDAsMSwzMywxOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTgsNy43OSw2LDE5Ljgz''@;'; put 'put ''VjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NloiLz4nKSxULkNsclNoYXBlQ29nPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMSwxMWMtMy45LDAtNywzLjEtNyw3''@;'; put 'put ''czMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdTMjIsMTEsMTguMSwxMXogTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMi44LDAsNSwyLjIsNSw1UzIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjYtMS41bDEuNC0yLjZjMC4zLTAuNiwwLjItMS40LTAuMy0xLjlsLTIuNC0yLjRjLTAuNS0wLjUtMS4zLTAuNi0xLjktMC4zbC0yLjYsMS40bC0xLjUtMC42bC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRj''@;'; put 'put ''LTAuNywwLTEuMywwLjUtMS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwx''@;'; put 'put ''NS42LDIsMTYuM3YzLjRjMCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4x''@;'; put 'put ''aDMuNGMwLjcsMCwxLjMtMC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwx''@;'; put 'put ''NS42LDMzLjUsMTQuOSwzMi44LDE0Ljd6IE0zMiwxOS40bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0x''@;'; put 'put ''LjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmww''@;'; put 'put ''LjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjQsMC41LDIuMSwwLjlsMC41LDAuM2wzLjMtMS44bDIsMmwtMS44LDMuM2wwLjMsMC41YzAuNCwwLjcsMC43''@;'; put 'put ''LDEuNCwwLjksMi4xbDAuMSwwLjVsMy42LDEuMVYxOS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjEsMThjMCwzLjksMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN3Mt''@;'; put 'put ''My4xLTctNy03QzE0LjIsMTEsMTEuMSwxNC4xLDExLjEsMTh6IE0yMy4xLDE4YzAsMi44LTIuMiw1LTUsNWMtMi44LDAtNS0yLjItNS01czIuMi01LDUtNUMyMC45LDEzLDIzLjEsMTUuMiwyMy4xLDE4eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjgsMTQuN0wzMCwxMy44bC0wLjEtMC4zYy0wLjgsMC0xLjYtMC4yLTIuNC0wLjRjMC4zLDAuNiwwLjYsMS4zLDAuOCwxLjlsMC4xLDAuNWwzLjYsMS4xdjIuOGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwx''@;'; put 'put ''LjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEu''@;'; put 'put ''OC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAu''@;'; put 'put ''MkwxNi42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS4zLDAuNSwxLjksMC44Yy0wLjMtMC44LTAuNC0xLjYtMC40LTIuNWwtMC40LTAuMmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4z''@;'; put 'put ''LTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFs''@;'; put 'put ''MC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwy''@;'; put 'put ''LjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy43LDE1LjRoLTUuM3YwLjFsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwt''@;'; put 'put ''MC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAu''@;'; put 'put ''Mi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy40bDEuNC0yLjNsLTAuNi0yQzIxLDIuNCwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUt''@;'; put 'put ''MS40LDEuMkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRj''@;'; put 'put ''MCwwLjcsMC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMt''@;'; put 'put ''MC41LDEuNS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNiwzMy45LDE1LjcsMzMu''@;'; put 'put ''NywxNS40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTguMSwyM2MtMi44LDAtNS0yLjItNS01czIuMi01LDUtNWMwLjIsMCwwLjUsMCwwLjcsMC4xYy0wLjItMC42LTAu''@;'; put 'put ''My0xLjMtMC4yLTJoLTAuNWMtMy45LDAtNywzLjEtNyw3YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdjMC0wLjktMC4yLTEuOC0wLjUtMi42aC0yLjJjMC41LDAuOCwwLjcsMS42LDAuNywyLjVDMjMuMSwyMC44LDIwLjksMjMsMTguMSwyM3oiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAu''@;'; put 'put ''NSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNTcs''@;'; put 'put ''MTUuNzJsLTMuMzUtMWExMS42NSwxMS42NSwwLDAsMC0uOTUtMi4zM2wxLjY0LTMuMDdhLjYxLjYxLDAsMCwwLS4xMS0uNzJMMjcuNDEsNi4yYS42MS42MSwwLDAsMC0uNzItLjExTDIzLjY0LDcuNzJhMTEuNjIsMTEuNjIsMCwwLDAtMi4zNi0xbC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5''@;'; put 'put ''LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEs''@;'; put 'put ''MCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0''@;'; put 'put ''bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYz''@;'; put 'put ''LDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEsMTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTIuMTIsMTIuMTIsMCwwLDAtLjQ3LTEuMzIsNy40OSw3LjQ5LDAsMCwxLTYuMTQtNi4xNiwxMS44MiwxMS44MiwwLDAsMC0xLjMzLS40OGwtMS0zLjMxQS42''@;'; put 'put ''MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3''@;'; put 'put ''bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDEx''@;'; put 'put ''LjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcy''@;'; put 'put ''bC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMi41NywxNS43MiwzMS41LDE1LjRIMjIuODVBNS41LDUuNSwwLDEsMSwxOCwxMi41YTUuNTMsNS41MywwLDAsMSwuNjUsMEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwyLjA5LTMuNjItLjg2LTIuODNBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFh''@;'; put 'put ''LjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2ExMS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQz''@;'; put 'put ''LjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2Eu''@;'; put 'put ''NjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIuMzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAs''@;'; put 'put ''MCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVy''@;'; put 'put ''dCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFQuQ2xyU2hhcGVDaGVjaz0oMCx2LmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEzLjcyLDI3LjY5LDMuMjksMTcuMjdhMSwxLDAsMCwxLDEuNDEtMS40MWw5LDlMMzEuMjksNy4yOWExLDEsMCwwLDEsMS40MSwxLjQxWiIvPicpLFQuQ2xyU2hhcGVUaW1lcz0oMCx2LmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEu''@;'; put 'put ''NDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nKSxULkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxLjMyYTEu''@;'; put 'put ''MywxLjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4zLDEuMywwLDAsMCwxOCwyMS4zMloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0i''@;'; put 'put ''MS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0''@;'; put 'put ''LTQuNDNabS0xLjc4LDEuOTRhMSwxLDAsMCwxLS44Ni40OUg4LjIxYTEsMSwwLDAsMS0uODgtMS40OEwxNy4wNyw4LjU1YTEsMSwwLDAsMSwxLjc2LDBsOS43NCwxNy45NEExLDEsMCwwLDEsMjguNTUsMjcuNDhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1pNMTYuNDYsMTIuNzRhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40''@;'; put 'put ''OSwwLDEsMS0zLDBaTTE4LDI2LjI1YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI2LjI1WiIvPicpLFQuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwxOCwyMC4wN1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTcuOTUi''@;'; put 'put ''IGN5PSIyMy4wMiIgcj0iMS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40''@;'; put 'put ''OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNS41WiIvPicpLFQuQ2xyU2hhcGVDaGVja0NpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTE2LjM0LDIzLjc0bC01LTVhMSwxLDAsMCwxLDEuNDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDE4QTEyLDEyLDAsMSwx''@;'; put 'put ''LDE4LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywxNy4xNmExLjQsMS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+JyksVC5DbHJTaGFwZUluZm9DaXJjbGU9KDAsdi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgIGN4PSIxNy45MyIgY3k9IjExLjkiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAgZD0iTTIxLDIzSDE5VjE1SDE2YTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''MXY2SDE1YTEsMSwwLDEsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCww''@;'; put 'put ''LDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwy''@;'; put 'put ''LDAsMCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgyVjE3SDE2YTEsMSwwLDAsMSwwLTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPicpLFQuQ2xyU2hhcGVJbmZvU3RhbmRhcmQ9KDAsdi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3Ljk3IiBjeT0iMTAuNDUiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjEsMjVIMTlWMTQuMUgxNmExLDEsMCwwLDAsMCwy''@;'; put 'put ''aDFWMjVIMTVhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwx''@;'; put 'put ''NCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWm0tLjEsNS4yOGEyLDIsMCwxLDEt''@;'; put 'put ''MiwyQTIsMiwwLDAsMSwxNy45LDcuMzhabTMuNiwyMS4yNWgtN2ExLjQsMS40LDAsMSwxLDAtMi44aDIuMXYtOS4ySDE1YTEuNCwxLjQsMCwxLDEsMC0yLjhoNC40djEyaDIuMWExLjQsMS40LDAsMSwxLDAsMi44WiIvPicpLFQuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9KDAsdi5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwxMi4xYTEsMSwwLDAsMC0xLjQxLDBMMTUuNDksMjMuMTVsLTYtNkExLDEsMCwwLDAsOCwxOC41M0wxNS40OSwyNiwyOCwxMy41MkExLDEsMCwwLDAsMjgsMTIuMVoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0yOC40NSwxMi42MywxNS4zMSwyNS43Niw3LjU1LDE4YTEuNCwxLjQsMCwwLDEsMi0ybDUuNzgsNS43OEwyNi40NywxMC42NWEx''@;'; put 'put ''LjQsMS40LDAsMSwxLDIsMloiLz4nKSxULkNsclNoYXBlRXJyb3JTdGFuZGFyZD0oMCx2LmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWk0xNi42LDguOGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI4LjZhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjguNloiLz4n''@;'; put 'put ''KSxULkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMi42MWExLDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEyQTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIg''@;'; put 'put ''ZD0iTTE1LjA2MjA3ODIsMS42ODExOTYgQzE1LjYyOTg4MTksMC42NDkyNjYzNTUgMTYuNzEwOTA5MSwwLjAxMDIyMTkzOTYgMTcuODg1LDAuMDEwMjIxOTM5NiBDMTkuMDU5MDkwOSwwLjAxMDIyMTkzOTYgMjAuMTQwMTE4MSwwLjY0OTI2NjM1NSAyMC43MDg2NDMzLDEuNjgyNTIxMjkgTDM0''@;'; put 'put ''LjU5ODY0NCwyNy4yNDI1MjI1IEMzNS4xNDA3NzQ2LDI4LjI0MDEzOTcgMzUuMTE3NDM0NSwyOS40NDk1MzczIDM0LjUzNzIxNjEsMzAuNDI1NDk0MyBDMzMuOTU2OTk3NywzMS40MDE0NTE0IDMyLjkwNTY3MSwzMS45OTk2OTg0IDMxLjc3LDMyIEw0LjAyMjM5MzIzLDMxLjk5OTc0OTIgQzIu''@;'; put 'put ''ODc0MDkwMDksMzIuMDI1NDY5OSAxLjc5OTAyODQzLDMxLjQzNzU3NTMgMS4yMDEwNjMzNSwzMC40NTY5MTI2IEMwLjYwMzA5ODI2NSwyOS40NzYyNDk5IDAuNTcyNzc3ODk5LDI4LjI1MTMxNzkgMS4xMjIwNzgxOCwyNy4yNDExOTYgTDE1LjA2MjA3ODIsMS42ODExOTYgWiBNMi44Nzg1MDc2''@;'; put 'put ''NywyOC4xOTc3MjgyIEMyLjY3MDYwOTY2LDI4LjU4MDAzNzYgMi42ODIwOTc1LDI5LjA0NDE0MjMgMi45MDg2NTU3LDI5LjQxNTY5NzcgQzMuMTM1MjEzOSwyOS43ODcyNTMyIDMuNTQyNTM1NCwzMC4wMDk5OTU5IDQsMzAgTDMxLjc2OTczNDQsMzAgQzMyLjE5OTkxOTEsMjkuOTk5ODg1OCAz''@;'; put 'put ''Mi41OTgyNDc4LDI5Ljc3MzIyMDggMzIuODE4MDgyMSwyOS40MDM0NDgyIEMzMy4wMzc5MTY0LDI5LjAzMzY3NTcgMzMuMDQ2NzU5NSwyOC41NzU0NTY3IDMyLjg0MTM1NjcsMjguMTk3NDc4NyBMMTguOTUzODczOSwyLjY0MjA4MTk1IEMxOC43Mzk0MjM2LDIuMjUyMzQ0MzYgMTguMzI5ODQx''@;'; put 'put ''OSwyLjAxMDIyMTk0IDE3Ljg4NSwyLjAxMDIyMTk0IEMxNy40NDA2ODg5LDIuMDEwMjIxOTQgMTcuMDMxNTUzOCwyLjI1MTc2NjkyIDE2LjgxNjg5NDYsMi42NDA2ODc1MyBMMi44Nzg1MDc2NywyOC4xOTc3MjgyIFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuNiwyOS4yMSwyMC43MSwzLjY1YTMuMjIsMy4yMiwwLDAsMC01LjY2LDBMMS4xNywyOS4yMUEzLjIyLDMuMjIsMCwwLDAsNCwzNEgzMS43N2EzLjIyLDMuMjIsMCwwLDAsMi44My00Ljc1Wk0xNi42LDEwYTEuNCwxLjQsMCwwLDEsMi44LDB2''@;'; put 'put ''MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjkuODVhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjkuODVaIi8+JyksVC5DbHJTaGFwZUhlbHBJbmZvPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4zOSwyNS40NWExLDEsMCwwLDAtMS4zOC4yOWMtMS40''@;'; put 'put ''MSwyLjE2LTQsNC44MS02LjMxLDUuN3MtNC4xMi41Ny00Ljg0LDBjLS4zMS0uMjctMS4xMi0xLS40My0zLjQ5LjQ2LTEuNjYsMy4zMi05LjQ4LDQtMTEuMzhsLTIuMTguMjhjLS42OSwxLjg2LTMuMjksOC44NC0zLjc2LDEwLjU4LS42OCwyLjQ5LS4zNCw0LjMsMS4wOSw1LjU2QTUuNTksNS41''@;'; put 'put ''OSwwLDAsMCwxNSwzNGE5LjUzLDkuNTMsMCwwLDAsMy40NS0uN2MyLjc5LTEuMDksNS43Mi00LjEyLDcuMjYtNi40N0ExLDEsMCwwLDAsMjUuMzksMjUuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4z''@;'; put 'put ''LDExYTQuNSw0LjUsMCwxLDAtNC41LTQuNUE0LjUsNC41LDAsMCwwLDE5LjMsMTFabTAtN2EyLjUsMi41LDAsMSwxLTIuNSwyLjVBMi41LDIuNSwwLDAsMSwxOS4zLDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xMS44MSwxNWMuMDYsMCw2LjI3LS44Miw3LjczLTEsLjY1LS4xLDEuMTQsMCwxLjMuMTVzLjIxLjgtLjA3LDEuNjhjLS42MSwxLjg2LTMuNjksMTEtNC41OSwxMy43MWE4LDgsMCwwLDAsMS4yOS0uMzgsNy4zMiw3LjMyLDAsMCwwLDEuMTUtLjZDMTkuODUsMjUsMjIuMTUsMTguMSwyMi42''@;'; put 'put ''NywxNi41MnMuMzktMi43OC0uMy0zLjZhMy4xNiwzLjE2LDAsMCwwLTMuMDgtLjgzYy0xLjQzLjE1LTcuNDcuOTQtNy43MywxYTEsMSwwLDAsMCwuMjYsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjAu''@;'; put 'put ''NzUiIGN5PSI2IiByPSI0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0Ljg0LDI2LjIzYTEsMSwwLDAsMC0xLjQuMjksMTYuNiwxNi42LDAsMCwxLTMuNTEsMy43N2MtLjMzLjI1LTEuNTYsMS4yLTIuMDgsMS0uMzYt''@;'; put 'put ''LjExLS4xNS0uODItLjA4LTEuMTJsLjUzLTEuNTdjLjIyLS42NCw0LjA1LTEyLDQuNDctMTMuMy42Mi0xLjkuMzUtMy43Ny0yLjQ4LTMuMzItLjc3LjA4LTguNTgsMS4wOS04LjcyLDEuMWExLDEsMCwwLDAsLjEzLDJzMy0uMzksMy4zMy0uNDJhLjg4Ljg4LDAsMCwxLC44NS40NCwyLjQ3LDIu''@;'; put 'put ''NDcsMCwwLDEtLjA3LDEuNzFjLS4yNiwxLTQuMzcsMTIuNTgtNC41LDEzLjI1YTIuNzgsMi43OCwwLDAsMCwxLjE4LDMsNSw1LDAsMCwwLDMuMDguODNoMGE4LjUzLDguNTMsMCwwLDAsMy4wOS0uNjJjMi40OS0xLDUuMDktMy42Niw2LjQ2LTUuNzVBMSwxLDAsMCwwLDI0Ljg0LDI2LjIzWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlQmFycz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDI5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEs''@;'; put 'put ''MCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMiw5SDRBMSwxLDAsMCwxLDQsN0gzMmExLDEsMCwwLDEsMCwyWiIvPicpLFQuQ2xyU2hhcGVVc2VyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwxLDAtNy03QTcsNywwLDAsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEt''@;'; put 'put ''NSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3''@;'; put 'put ''YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNC40NS0xLjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMjAsMTQuNmE1LDUsMCwxLDEsMS4yNC04LjQybDEtMS43NkE3LDcsMCwxLDAsMTgs''@;'; put 'put ''MTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgs''@;'; put 'put ''MTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4x''@;'; put 'put ''NiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw2Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYx''@;'; put 'put ''LDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTAiIHI9IjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEs''@;'; put 'put ''MjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUxLDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNC40NS0xLjZoLS4yMkEzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLjE2LTUuNDdBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4x''@;'; put 'put ''NFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41''@;'; put 'put ''LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcs''@;'; put 'put ''NywwLDAsMCw2Ljg1LTUuNTYsNy40LDcuNCwwLDAsMS0yLjI0LTYuNjlBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlQW5nbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS41MiwyMi41''@;'; put 'put ''MiwxOCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNywwLDAsMCwyLjQ1LDIuMzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCwwLDAsMi40NS0yLjM2WiIvPicpLFQuQ2xyU2hhcGVGb2xkZXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwy''@;'; put 'put ''LjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41VjI5SDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIu''@;'; put 'put ''NjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTFhNy41LDcuNSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMCwxNS40VjI5SDZWMTNoNy4zMWEyLDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4x''@;'; put 'put ''MSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVpNNiwxMVY3aDYuNDlsMi43Miw0''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDks''@;'; put 'put ''NUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjMuMTMsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMu''@;'; put 'put ''MjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+''@;'; put 'put ''JyksVC5DbHJTaGFwZUZvbGRlck9wZW49KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41Miwx''@;'; put 'put ''LDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCww''@;'; put 'put ''LDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAs''@;'; put 'put ''MCwxLTEuMjktMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFpNMjkuNTUsMjlINi45''@;'; put 'put ''bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0uMjRIMzMuNDlaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRoLS4zTDI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0aDkuNDJBMy42NywzLjY3LDAsMCwx''@;'; put 'put ''LDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40Mkwx''@;'; put 'put ''NC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAsMCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIu''@;'; put 'put ''NTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMmEyLDIsMCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1''@;'; put 'put ''LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40''@;'; put 'put ''SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwx''@;'; put 'put ''OSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCww''@;'; put 'put ''LDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcx''@;'; put 'put ''LDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4zMS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEy''@;'; put 'put ''LjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlQmVsbD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjUxLDI3Ljgz''@;'; put 'put ''QTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAsMCwxOS4yMSw0LjRWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYz''@;'; put 'put ''LDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAsMSwxaDI3LjhhMSwxLDAsMCwwLDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaTTUuMTMsMjguOTRhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0''@;'; put 'put ''LjI0LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNWE4Ljc0LDguNzQsMCwxLDEsMTcuNDcsMHY0Ljk0YTE0LjI0LDE0LjI0LDAsMCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBk''@;'; put 'put ''PSJNMzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEwLjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5LDcuNDQsNy40NCwwLDAsMS0yLjI0LS44NCw4Ljg5LDguODksMCwwLDEsLjQsMi42NHY0Ljk0YTE0LjI0LDE0LjI0''@;'; put 'put ''LDAsMCwwLDEuNjUsNS44NSwxNi4xNywxNi4xNywwLDAsMCwyLjQ0LDNINS4xM2ExNi4xNywxNi4xNywwLDAsMCwyLjQ0LTMsMTQuMjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1QTguOCw4LjgsMCwwLDEsMTgsNi4zMWE4LjYxLDguNjEsMCwwLDEsNC43NiwxLjQ0QTcuNDksNy40OSww''@;'; put 'put ''LDAsMSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTgsMTAuNTgsMCwwLDAtMy4zMi0xVjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwx''@;'; put 'put ''LTIuNDcsMi45MywxLDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjg1LDI4LjEzbC0uMzQtLjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWEx''@;'; put 'put ''Mi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40''@;'; put 'put ''LDAsMCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTUuMzIsMzJhMi42NSwyLjY1LDAsMCwwLDUuMjUsMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1YTEwLjkyLDEwLjkyLDAsMCwwLS4xNi0xLjc5QTcuNSw3LjUsMCwwLDEs''@;'; put 'put ''MjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU3LDEwLjU3LDAsMCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3''@;'; put 'put ''LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFQuQ2xyU2hhcGVJbWFnZT0oMCx2''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsMzBWNkgzMlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNOC45MiwxNGEzLDMsMCwxLDAtMy0zQTMsMywwLDAsMCw4LjkyLDE0Wm0wLTQuNkExLjYsMS42LDAsMSwxLDcuMzMsMTEsMS42LDEuNiwwLDAsMSw4LjkyLDkuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIyLjc4LDE1LjM3bC01LjQsNS40LTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzktNi43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUtOC40NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxQTEsMSwwLDAsMCwyMi43OCwxNS4zN1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTMsMTFhMywzLDAsMSwwLTMsM0EzLDMsMCwwLDAsMTEuOTMsMTFabS00LjYsMGExLjYsMS42LDAsMSwxLDEuNiwxLjZBMS42LDEuNiwwLDAsMSw3LjMzLDExWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuMzgsMjAuNzdsLTQtNGExLDEsMCwwLDAtMS40MSwwTDUuOTIsMjIuOXYyLjgzbDYuNzktNi43OUwxNiwyMi4xOGwtMy43NSwzLjc1SDE1bDguNDUt''@;'; put 'put ''OC40NUwzMCwyNFYyMS4xOGwtNS44MS01LjgxYTEsMSwwLDAsMC0xLjQxLDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYzMEg0VjZIMjIuNWE3LjQ5LDcuNDksMCww''@;'; put 'put ''LDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgz''@;'; put 'put ''MmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwx''@;'; put 'put ''LjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEy''@;'; put 'put ''LjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSww''@;'; put 'put ''TDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiLz4nKSxULkNsclNoYXBlQ2xvdWQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzM0gxMC42MkM1LjY3LDMzLDEsMjguMTksMSwyMy4xYTEwLDEwLDAsMCwxLDgtOS43NSwxMC4x''@;'; put 'put ''OSwxMC4xOSwwLDAsMSwyMC4zMywxLjA2QTEwLjA3LDEwLjA3LDAsMCwxLDI5LDE2LjY2YTguMjksOC4yOSwwLDAsMSw2LDhDMzUsMjkuMSwzMS4zMywzMywyNy4xNCwzM1pNMTkuMDksNi4yM2E4LjI0LDguMjQsMCwwLDAtOC4xOSw4bDAsLjg3LS44Ni4xQTcuOTQsNy45NCwwLDAsMCwzLDIz''@;'; put 'put ''LjFjMCw0LDMuNzcsNy45LDcuNjIsNy45SDI3LjE0QzMwLjIxLDMxLDMzLDI4LDMzLDI0LjY1YTYuMzEsNi4zMSwwLDAsMC01LjM3LTYuMjZsLTEuMTgtLjE4LjM5LTEuMTNBOC4xOCw4LjE4LDAsMCwwLDE5LjA5LDYuMjNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcuNDUsNy40NSwwLDAsMS0yLjEtLjU0LDgsOCwwLDAsMS0uMyw0LjE2bC0uMzksMS4xMywxLjE4LjE4YTYu''@;'; put 'put ''MzEsNi4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMuOTEtNy42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdhOC4yNCw4LjI0LDAsMCwxLDguMTktOEE4LjEzLDguMTMsMCwwLDEsMjIuNTgs''@;'; put 'put ''N2E3LjUzLDcuNTMsMCwwLDEtLjA4LTEsNy41MSw3LjUxLDAsMCwxLC4wOS0xLjEyQTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3Ljg2''@;'; put 'put ''LTMuOSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNCwxMC4xNCwwLDAsMCwuMi0xLjNoLTJhOC4yOCw4LjI4LDAsMCwxLS4zNywxLjcybC0uMzksMS4xMywxLjE4LjE4''@;'; put 'put ''YTYuMzEsNi4zMSwwLDAsMSw1LjM3LDYuMjZDMzIuOTUsMjgsMzAuMTYsMzEsMjcuMDksMzFIMTAuNTdjLTMuODQsMC03LjYyLTMuOTEtNy42Mi03LjlhNy45NCw3Ljk0LDAsMCwxLDctNy44OWwuODYtLjEsMC0uODdBOC4xNiw4LjE2LDAsMCwxLDIxLDYuNDdsMS0xLjhBMTAuMTksMTAuMTks''@;'; put 'put ''MCwwLDAsOC45MSwxMy4zNmExMCwxMCwwLDAsMC04LDkuNzVjMCw1LjA5LDQuNjcsOS45LDkuNjIsOS45SDI3LjA5YzQuMTksMCw3Ljg2LTMuOSw3Ljg2LTguMzVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1''@;'; put 'put ''LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjgu''@;'; put 'put ''MTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI5''@;'; put 'put ''LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ0LDcuNDQsMCwwLDEtNi42LTguNThBMTAuMTMsMTAuMTMsMCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMs''@;'; put 'put ''MTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNi42NmExMC4xNSwxMC4xNSwwLDAsMCwuMi0xLjI2aC03QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5''@;'; put 'put ''bDMtNS4yMUExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwzNSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFQuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9KDAsdi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFQuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPSgwLHYuY2xySWNvblNWRyko''@;'; put 'put ''JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlRmlsdGVyR3JpZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCww''@;'; put 'put ''LDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjha''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSww''@;'; put 'put ''LDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLFQuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCww''@;'; put 'put ''LTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCww''@;'; put 'put ''LDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0''@;'; put 'put ''LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVs''@;'; put 'put ''My45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxULkNsclNoYXBlVm1CdWc9KDAsdi5jbHJJY29uU1ZHKSgnPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iMyIg''@;'; put 'put ''ZmlsbD0iI2ZmZmZmZiIgb3BhY2l0eT0iMC4xNSIgc3R5bGU9Imlzb2xhdGlvbjppc29sYXRlIi8+PHBhdGggZD0iTTMuNzksMTQuODNhMS4wOSwxLjA5LDAsMCwwLTEuNDctLjU2LDEuMDksMS4wOSwwLDAsMC0uNTQsMS40OWwyLjQ3LDUuNGMuMzkuODUuOCwxLjI5LDEuNTcsMS4yOVM3LDIy''@;'; put 'put ''LDcuMzksMjEuMTZsMi4xNy00Ljc3YS4zMy4zMywwLDAsMSwuMzEtLjIuMzUuMzUsMCwwLDEsLjM1LjM1djQuNjFhMS4xNSwxLjE1LDAsMCwwLDEuMTQsMS4zLDEuMTcsMS4xNywwLDAsMCwxLjE3LTEuM1YxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEu''@;'; put 'put ''MTgsMS4ydjMuNzdhMS4xNywxLjE3LDAsMSwwLDIuMzIsMFYxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEuMTgsMS4ydjMuNzdhMS4xNiwxLjE2LDAsMSwwLDIuMzEsMFYxNi44NmEyLjY5LDIuNjksMCwwLDAtMi43OC0yLjY5LDMuNTcsMy41NywwLDAs''@;'; put 'put ''MC0yLjQ3LDEuMDUsMi43NSwyLjc1LDAsMCwwLTIuMzgtMS4wNUEzLjkzLDMuOTMsMCwwLDAsMTIsMTUuMjJhMi44MiwyLjgyLDAsMCwwLTIuMDgtMS4wNUEyLjU1LDIuNTUsMCwwLDAsNy40LDE1Ljg5TDUuODIsMTkuNjNsLTItNC44IiBmaWxsPSIjZmZmZmZmIi8+PHBhdGggZD0iTTMzLDE0''@;'; put 'put ''LjE4QTEuMTQsMS4xNCwwLDAsMCwzMS45LDE1bC0xLjE5LDMuNzNMMjkuNSwxNS4wNWExLjE4LDEuMTgsMCwwLDAtMS4xNS0uODdoLS4xYTEuMiwxLjIsMCwwLDAtMS4xNS44N2wtMS4xOSwzLjcxLTEuMTgtMy43MWExLjE1LDEuMTUsMCwwLDAtMS4xMS0uODcsMS4wOCwxLjA4LDAsMCwwLTEu''@;'; put 'put ''MTIsMS4wNywxLjY4LDEuNjgsMCwwLDAsLjEuNTRsMiw1LjdhMS4yNywxLjI3LDAsMCwwLDEuMjcsMSwxLjI0LDEuMjQsMCwwLDAsMS4yLS45M2wxLjItMy42NCwxLjIsMy42NGExLjI1LDEuMjUsMCwwLDAsMS4yNi45M0ExLjI3LDEuMjcsMCwwLDAsMzIsMjEuNUwzNCwxNS43M2ExLjc3LDEu''@;'; put 'put ''NzcsMCwwLDAsLjA4LS40OEExLjA3LDEuMDcsMCwwLDAsMzMsMTQuMThaIiBmaWxsPSIjZmZmZmZmIi8+JyksVC5DbHJTaGFwZVNlYXJjaD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjMzLDUuMDVBMTAu''@;'; put 'put ''OTUsMTAuOTUsMCwxLDEsNS4zOSwxNiwxMSwxMSwwLDAsMSwxNi4zMyw1LjA1bTAtMi4wNWExMywxMywwLDEsMCwxMywxMywxMywxMywwLDAsMC0xMy0xM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM1''@;'; put 'put ''LDMzLjI5bC03LjM3LTcuNDItMS40MiwxLjQxLDcuMzcsNy40MkExLDEsMCwxLDAsMzUsMzMuMjlaIi8+JyksVC5DbHJTaGFwZVZpZXdDb2x1bW5zPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsNUg1QTIs''@;'; put 'put ''MiwwLDAsMCwzLDdWMjlhMiwyLDAsMCwwLDIsMkgzMWEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMxLDVaTTEzLDI5SDVWN2g4Wm0xMCwwSDE1VjdoOFoiLz4nKSxULkNsclNoYXBlQW5nbGVEb3VibGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOSwxOS40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCw4LjgzLDcuNzEsMTkuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCw2LDI5LjcxLDE3LjcxQTEsMSwwLDAsMSwyOSwxOS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDMwLjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDE5LjgzLDcuNzEsMzAuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCwxNywyOS43MSwyOC43MUExLDEsMCwwLDEsMjksMzAuNDFaIi8+JyksVC5DbHJTaGFwZUNhbGVuZGFyPSgw''@;'; put 'put ''LHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEu''@;'; put 'put ''NzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjIwIiB5''@;'; put 'put ''PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0''@;'; put 'put ''PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC05IiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIHg9IjIwIiB5''@;'; put 'put ''PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiBk''@;'; put 'put ''PSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgy''@;'; put 'put ''OC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI4IiB5PSIxNCIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1i''@;'; put 'put ''YWRnZWQiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTki''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEyLS1iYWRnZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYmFkZ2VkIiBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMu''@;'; put 'put ''NjgsMTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgeD0iMTQi''@;'; put 'put ''IHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgeD0iMjYiIHk9IjE5IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xMC0tYWxlcnRlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cG9seWdvbiBw''@;'; put 'put ''b2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0z''@;'; put 'put ''Mi4yNSw2aC00VjlhMi4yLDIuMiwwLDEsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCww''@;'; put 'put ''LDAsMCwzMi4yNSw2Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2''@;'; put 'put ''VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41''@;'; put 'put ''LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTEwLDI2''@;'; put 'put ''SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUEx''@;'; put 'put ''Ljc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTYsNUgyNlYyNGgyWm0wLTVIMjZWMTloMloiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFQuQ2xyU2hhcGVFdmVudD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjE3LDI1Ljg2LDEwLjgxLDIwLjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxNi4xNywy''@;'; put 'put ''M2w4LjY0LTguNjRhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5''@;'; put 'put ''QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xMCwxMGEx''@;'; put 'put ''LDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAs''@;'; put 'put ''MCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAtMS40MS0xLjQxTDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEs''@;'; put 'put ''MzIsMTMuMjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0i''@;'; put 'put ''TTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMCwuMjMtLjQxSDIzLjhMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1hbGVydGVkIiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUu''@;'; put 'put ''NEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMyLjI1LDZoLTRWOWEy''@;'; put 'put ''LjIsMi4yLDAsMCwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZa''@;'; put 'put ''TTI1Ljk0LDE2LjU4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9''@;'; put 'put ''Ik0zMy42OCwxNS40SDI2LjNhMS4zNCwxLjM0LDAsMCwxLS4zNiwxLjE4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4LDctN2gtMUEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZo''@;'; put 'put ''LTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4''@;'; put 'put ''LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wm0tNC4wNiwzLjA4LTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksVC5DbHJTaGFwZUV5ZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4y''@;'; put 'put ''My05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44''@;'; put 'put ''LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAsMSwwLDI1LDE4''@;'; put 'put ''LDYuODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwxLDE4LjA5LDIyLjg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42Miwx''@;'; put 'put ''Ny41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjks''@;'; put 'put ''OC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0i''@;'; put 'put ''Ni44NiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLFQuQ2xyU2hhcGVFeWVIaWRlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgsNi43OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43''@;'; put 'put ''OSwwLDAsMC0yLjM3LjQzTDE4LDEzLjIzYTQuNzgsNC43OCwwLDAsMSwuNzQtLjA2QTQuODcsNC44NywwLDAsMSwyMy42MiwxOGE0Ljc5LDQuNzksMCwwLDEtLjA2Ljc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40Miwx''@;'; put 'put ''LjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40''@;'; put 'put ''OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm05Ljc1LDkuNzUsNi42NSw2LjY1YTQuODEsNC44MSwwLDAsMS0yLjUuNzJBNC44Nyw0Ljg3LDAsMCwxLDEzLjksMTgsNC44MSw0LjgxLDAsMCwxLDE0LjYy''@;'; put 'put ''LDE1LjUzWm0tMS40NS0xLjQ1YTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4zNywxMS4xN0E2Ljc5LDYuNzksMCwwLDAsMTYsMTEuNmw4LjgsOC44QTYuNzgsNi43OCwwLDAsMCwyNS4yMywxOCw2Ljg2LDYuODYsMCwwLDAsMTguMzcsMTEuMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4''@;'; put 'put ''LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5''@;'; put 'put ''LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm04LjMsOC4zYTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSww''@;'; put 'put ''LDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFQuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0i''@;'; put 'put ''TTcuMDgsNi41MmExLjY4LDEuNjgsMCwwLDAsMCwyLjRMMTYuNTEsMTgsNy4xMiwyNy4wOGExLjcsMS43LDAsMCwwLDIuMzYsMi40NGgwTDIxLjQsMTgsOS40OCw2LjQ3QTEuNjksMS42OSwwLDAsMCw3LjA4LDYuNTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0ExLjcsMS43LDAsMCwwLDI2LjQ5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlQXJyb3c9KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz4nKSxULkNvcmVTaGFwZXM9eyJ1bmtub3duLXN0YXR1cyI6VC5DbHJTaGFwZVVua25vd25TdGF0dXMsaG9tZTpULkNsclNoYXBlSG9tZSxjb2c6VC5DbHJTaGFwZUNvZyxjaGVjazpULkNsclNoYXBlQ2hlY2ssdGltZXM6VC5DbHJTaGFwZVRpbWVzLCJleGNsYW1hdGlv''@;'; put 'put ''bi10cmlhbmdsZSI6VC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGUsImV4Y2xhbWF0aW9uLWNpcmNsZSI6VC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlLCJjaGVjay1jaXJjbGUiOlQuQ2xyU2hhcGVDaGVja0NpcmNsZSwiaW5mby1jaXJjbGUiOlQuQ2xyU2hhcGVJbmZvQ2lyY2xlLCJp''@;'; put 'put ''bmZvLXN0YW5kYXJkIjpULkNsclNoYXBlSW5mb1N0YW5kYXJkLCJzdWNjZXNzLXN0YW5kYXJkIjpULkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkLCJlcnJvci1zdGFuZGFyZCI6VC5DbHJTaGFwZUVycm9yU3RhbmRhcmQsIndhcm5pbmctc3RhbmRhcmQiOlQuQ2xyU2hhcGVXYXJuaW5nU3RhbmRh''@;'; put 'put ''cmQsImhlbHAtaW5mbyI6VC5DbHJTaGFwZUhlbHBJbmZvLGJhcnM6VC5DbHJTaGFwZUJhcnMsdXNlcjpULkNsclNoYXBlVXNlcixhbmdsZTpULkNsclNoYXBlQW5nbGUsZm9sZGVyOlQuQ2xyU2hhcGVGb2xkZXIsImZvbGRlci1vcGVuIjpULkNsclNoYXBlRm9sZGVyT3BlbixiZWxsOlQuQ2xy''@;'; put 'put ''U2hhcGVCZWxsLGltYWdlOlQuQ2xyU2hhcGVJbWFnZSxjbG91ZDpULkNsclNoYXBlQ2xvdWQsImVsbGlwc2lzLWhvcml6b250YWwiOlQuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWwsImVsbGlwc2lzLXZlcnRpY2FsIjpULkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbCwiZmlsdGVyLWdyaWQi''@;'; put 'put ''OlQuQ2xyU2hhcGVGaWx0ZXJHcmlkLCJmaWx0ZXItZ3JpZC1jaXJjbGUiOlQuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlLCJ2bS1idWciOlQuQ2xyU2hhcGVWbUJ1ZyxzZWFyY2g6VC5DbHJTaGFwZVNlYXJjaCwidmlldy1jb2x1bW5zIjpULkNsclNoYXBlVmlld0NvbHVtbnMsImFuZ2xlLWRv''@;'; put 'put ''dWJsZSI6VC5DbHJTaGFwZUFuZ2xlRG91YmxlLGNhbGVuZGFyOlQuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpULkNsclNoYXBlRXZlbnQsZXllOlQuQ2xyU2hhcGVFeWUsImV5ZS1oaWRlIjpULkNsclNoYXBlRXllSGlkZSwic3RlcC1mb3J3YXJkLTIiOlQuQ2xyU2hhcGVTdGVwRm9yd2FyZDIs''@;'; put 'put ''YXJyb3c6VC5DbHJTaGFwZUFycm93fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJob3VzZSIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuaG9tZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsInNldHRpbmdzIiwoMCxrLmRlc2Ny''@;'; put 'put ''aXB0b3JDb25maWcpKFQuQ29yZVNoYXBlcy5jb2cpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJzdWNjZXNzIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlcy5jaGVjaykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImNsb3NlIiwo''@;'; put 'put ''MCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlcy50aW1lcykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsIndhcm5pbmciLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi10cmlhbmdsZSJdKSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KFQuQ29yZVNoYXBlcywiZXJyb3IiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImluZm8iLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVz''@;'; put 'put ''WyJpbmZvLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuQ29yZVNoYXBlcywibWVudSIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuYmFycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImF2YXRhciIsKDAsay5kZXNjcmlwdG9yQ29u''@;'; put 'put ''ZmlnKShULkNvcmVTaGFwZXMudXNlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImNhcmV0IiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlcy5hbmdsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImRpcmVjdG9yeSIsKDAsay5k''@;'; put 'put ''ZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuZm9sZGVyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuQ29yZVNoYXBlcywibm90aWZpY2F0aW9uIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlcy5iZWxsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuQ29yZVNoYXBl''@;'; put 'put ''cywiY29sbGFwc2UiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzWyJhbmdsZS1kb3VibGUiXSkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''Ki8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxULmRlc2NyaXB0b3JDb25maWc9dm9pZCAwLFQuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlv''@;'; put 'put ''biBrKHYpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTp2fX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPVQuY2hh''@;'; put 'put ''bmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsVC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdigpe3RoaXMuY2FsbGJhY2tzPVQuY2hhbmdlSGFuZGxlckNhbGxiYWNrc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHYsImluc3RhbmNl''@;'; put 'put ''Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuc2luZ2xlSW5zdGFuY2V8fCh2LnNpbmdsZUluc3RhbmNlPW5ldyB2KSx2LnNpbmdsZUluc3RhbmNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHYucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKGhlLEgpe3ZhciBCPXRo''@;'; put 'put ''aXM7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW2hlXT8tMT09PXRoaXMuY2FsbGJhY2tzW2hlXS5pbmRleE9mKEgpJiZ0aGlzLmNhbGxiYWNrc1toZV0ucHVzaChIKTp0aGlzLmNhbGxiYWNrc1toZV09W0hdLGZ1bmN0aW9uKCl7dmFyIEw9Qi5jYWxsYmFja3NbaGVdLmluZGV4T2YoSCk7Qi5jYWxs''@;'; put 'put ''YmFja3NbaGVdLnNwbGljZShMLDEpLDA9PT1CLmNhbGxiYWNrc1toZV0ubGVuZ3RoJiZkZWxldGUgQi5jYWxsYmFja3NbaGVdfX0sdi5wcm90b3R5cGUuZW1pdENoYW5nZXM9ZnVuY3Rpb24oaGUsSCl7dGhpcy5jYWxsYmFja3NbaGVdJiZ0aGlzLmNhbGxiYWNrc1toZV0ubWFwKGZ1bmN0aW9u''@;'; put 'put ''KEIpe0IoSCl9KX0sdn0oKTtULlNoYXBlVGVtcGxhdGVPYnNlcnZlcj1rfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAg''@;'; put 'put ''ICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRz''@;'; put 'put ''IGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxULmNsckljb25TVkc9dm9pZCAwO1QuY2xySWNvblNWRz1mdW5jdGlvbiBIKEIpe3ZhciBMPSIiO3JldHVybiBCLmluZGV4T2YoIi0t''@;'; put 'put ''YmFkZ2VkIik+LTEmJihMKz0iY2FuLWJhZGdlICIpLEIuaW5kZXhPZigiLS1hbGVydGVkIik+LTEmJihMKz0iY2FuLWFsZXJ0ICIpLEIuaW5kZXhPZigiY2xyLWktc29saWQiKT4tMSYmKEwrPSJoYXMtc29saWQgIiksKEw/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJytMKyciIHZpZXdC''@;'; put 'put ''b3g9IjAgMCAzNiAzNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6''@;'; put 'put ''JzxzdmcgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNh''@;'; put 'put ''YmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nKStCKyI8L3N2Zz4ifX19KX0sMzQyMDk6ZnVuY3Rpb24oV2Upe1dlLmV4cG9ydHM9ZnVuY3Rpb24oemUpe3ZhciBUPXt9O2Z1bmN0aW9uIHNlKGspe2lmKFRba10pcmV0dXJuIFRba10uZXhwb3J0czt2YXIgdj1UW2tdPXtpOmssbDohMSxleHBvcnRz''@;'; put 'put ''Ont9fTtyZXR1cm4gemVba10uY2FsbCh2LmV4cG9ydHMsdix2LmV4cG9ydHMsc2UpLHYubD0hMCx2LmV4cG9ydHN9cmV0dXJuIHNlLm09emUsc2UuYz1ULHNlLmQ9ZnVuY3Rpb24oayx2LGhlKXtzZS5vKGssdil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrLHYse2VudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OmhlfSl9LHNlLnI9ZnVuY3Rpb24oayl7dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGssU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KX0sc2UudD1mdW5jdGlvbihrLHYpe2lmKDEmdiYmKGs9c2UoaykpLDgmdnx8NCZ2JiYib2JqZWN0Ij09dHlwZW9mIGsmJmsmJmsuX19lc01vZHVsZSlyZXR1cm4gazt2YXIgaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihzZS5yKGhlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaGUs''@;'; put 'put ''ImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmt9KSwyJnYmJiJzdHJpbmciIT10eXBlb2Ygaylmb3IodmFyIEggaW4gaylzZS5kKGhlLEgsZnVuY3Rpb24oQil7cmV0dXJuIGtbQl19LmJpbmQobnVsbCxIKSk7cmV0dXJuIGhlfSxzZS5uPWZ1bmN0aW9uKGspe3ZhciB2PWsmJmsuX19l''@;'; put 'put ''c01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBrLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGt9O3JldHVybiBzZS5kKHYsImEiLHYpLHZ9LHNlLm89ZnVuY3Rpb24oayx2KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGssdil9LHNlLnA9IiIsc2Uoc2Uu''@;'; put 'put ''cz0iLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiKX0oeyIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAg''@;'; put 'put ''ICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbih6''@;'; put 'put ''ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuQWxsU2hhcGVzPXZvaWQgMDt2YXIgaz1zZSgKLyohIC4vY2hhcnQtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRz''@;'; put 'put ''Iiksdj1zZSgKLyohIC4vY29tbWVyY2Utc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIiksaGU9c2UoCi8qISAuL2NvcmUtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxIPXNlKAov''@;'; put 'put ''KiEgLi9lc3NlbnRpYWwtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyIpLEI9c2UoCi8qISAuL21lZGlhLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyIpLEw9c2UoCi8qISAuL3Nv''@;'; put 'put ''Y2lhbC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIiksSz1zZSgKLyohIC4vdGVjaG5vbG9neS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZWNobm9sb2d5LXNoYXBlcy50cyIpLEo9c2UoCi8qISAuL3RleHQt''@;'; put 'put ''ZWRpdC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIiksST1zZSgKLyohIC4vdHJhdmVsLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiKSxSPVtoZS5Db3JlU2hhcGVzLHYuQ29t''@;'; put 'put ''bWVyY2VTaGFwZXMsSC5Fc3NlbnRpYWxTaGFwZXMsQi5NZWRpYVNoYXBlcyxMLlNvY2lhbFNoYXBlcyxLLlRlY2hub2xvZ3lTaGFwZXMsSS5UcmF2ZWxTaGFwZXMsay5DaGFydFNoYXBlcyxKLlRleHRFZGl0U2hhcGVzXSxFPXt9O1QuQWxsU2hhcGVzPUU7Zm9yKHZhciB6PTAsaj1SO3o8ai5s''@;'; put 'put ''ZW5ndGg7eisrKXt2YXIgVj1qW3pdO2Zvcih2YXIgRyBpbiBWKVYuaGFzT3duUHJvcGVydHkoRykmJihFW0ddPVZbR10pfXR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChFKX0sIi4vcHJvamVj''@;'; put 'put ''dHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzICoq''@;'; put 'put ''KiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxULkNoYXJ0U2hhcGVzPVQuQ2xyU2hhcGVCZWxsQ3VydmU9VC5DbHJTaGFwZVRpY2tDaGFydD1ULkNsclNoYXBlU2NhdHRlclBsb3Q9VC5DbHJTaGFwZVBpZUNoYXJ0PVQuQ2xyU2hhcGVMaW5lQ2hhcnQ9VC5DbHJTaGFwZUhlYXRNYXA9VC5DbHJTaGFwZUdy''@;'; put 'put ''aWRDaGFydD1ULkNsclNoYXBlQ3VydmVDaGFydD1ULkNsclNoYXBlQ2xvdWRDaGFydD1ULkNsclNoYXBlQnViYmxlQ2hhcnQ9VC5DbHJTaGFwZUJveFBsb3Q9VC5DbHJTaGFwZUJhckNoYXJ0PVQuQ2xyU2hhcGVBeGlzQ2hhcnQ9dm9pZCAwO3ZhciBrPXNlKAovKiEgLi4vdXRpbHMvZGVzY3Jp''@;'; put 'put ''cHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksdj1zZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1QuQ2xyU2hh''@;'; put 'put ''cGVBeGlzQ2hhcnQ9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMz''@;'; put 'put ''LjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3''@;'; put 'put ''LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1''@;'; put 'put ''IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIg''@;'; put 'put ''NS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0''@;'; put 'put ''LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4y''@;'; put 'put ''MiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBM''@;'; put 'put ''IDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2LjAw''@;'; put 'put ''NyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4LjkxIDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkg''@;'; put 'put ''MTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1''@;'; put 'put ''IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAzMC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjgu''@;'; put 'put ''MyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMx''@;'; put 'put ''IDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYg''@;'; put 'put ''TCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2''@;'; put 'put ''IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43''@;'; put 'put ''OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4''@;'; put 'put ''LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwg''@;'; put 'put ''MzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLFQu''@;'; put 'put ''Q2xyU2hhcGVCYXJDaGFydD0oMCx2LmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpN''@;'; put 'put ''NCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAgTCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBMIDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8''@;'; put 'put ''cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2''@;'; put 'put ''IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcg''@;'; put 'put ''MTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBM''@;'; put 'put ''IDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMy''@;'; put 'put ''IDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYg''@;'; put 'put ''MjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUg''@;'; put 'put ''MjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3''@;'; put 'put ''IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2''@;'; put 'put ''IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIg''@;'; put 'put ''NS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBM''@;'; put 'put ''IDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAy''@;'; put 'put ''NiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAy''@;'; put 'put ''MyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAy''@;'; put 'put ''Ni44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQu''@;'; put 'put ''ODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3''@;'; put 'put ''LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYg''@;'; put 'put ''TCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIu''@;'; put 'put ''OTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQg''@;'; put 'put ''TCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxULkNsclNoYXBlQm94UGxvdD0oMCx2LmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1''@;'; put 'put ''SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40''@;'; put 'put ''IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUuNCAxMy42IEwgOC42IDEzLjYgTCA4LjYgMTcuMiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5''@;'; put 'put ''IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIEwgMTkgMjQgWiBNIDIwLjYgMTEuNiBMIDI3LjQgMTEuNiBMIDI3LjQgMTcuMiBMIDIwLjYgMTcuMiBMIDIwLjYgMTEuNiBaIE0gMjcuNCAyMi40IEwgMjAuNiAyMi40IEwgMjAuNiAxOC44IEwgMjcuNCAxOC44IEwgMjcuNCAyMi40IFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMw''@;'; put 'put ''LjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0''@;'; put 'put ''IFogTSAxOSAyNCBMIDI5IDI0IEwgMjkgMTAgTCAxOSAxMCBaIE0gMjEgMTIgTCAyNyAxMiBMIDI3IDE3IEwgMjEgMTcgWiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIg''@;'; put 'put ''MjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYg''@;'; put 'put ''TCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgMTAgTCAyMy43MjggMTAgQyAyNC4xMDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIwLjYgMTEuNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTIuOTg3IEMgMjcuOTA5IDEz''@;'; put 'put ''LjE3NyAyOC40NDUgMTMuMzEzIDI5IDEzLjM4NyBMIDI5IDI0IEwgMTkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5c''@;'; put 'put ''biAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYz''@;'; put 'put ''MyAxMCBMIDE5IDEwIEwgMTkgMjQgTCAyOSAyNCBMIDI5IDEzLjQyNyBDIDI5LjEwMyAxMy40NCAyOS4yMDYgMTMuNDUxIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAx''@;'; put 'put ''MiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAxNyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQgWiBNIDIxIDEyIEwgMjUuNDcyIDEyIEMgMjUuOTQgMTIuMzUyIDI2LjQ1MiAxMi42NSAyNyAxMi44ODUgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEg''@;'; put 'put ''MTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwg''@;'; put 'put ''NCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQg''@;'; put 'put ''MTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAyNCBMIDE5IDI0IEwgMTkgMTUuMzQ1IEMg''@;'; put 'put ''MTkuMDIxIDE1LjM0OCAyMC42IDE1LjM2IDIwLjYgMTUuMzYgTCAyMC42IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40IDE1LjM2IEwgMjkgMTUuMzU3IEwgMjkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBMIDI3LjQgMTguOCBaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAy''@;'; put 'put ''MS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0''@;'; put 'put ''LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxl''@;'; put 'put ''cnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBMIDE5IDEwIEwgMTkgMTAuMDQ4IEwgMTcuNjI1IDEyLjM5NSBD''@;'; put 'put ''IDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAxOSAyNCBMIDI5IDI0IEwgMjkgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAx''@;'; put 'put ''NCBMIDE1IDE0IFogTSAyNyAxNyBMIDIxIDE3IEwgMjEgMTUuMzU3IEwgMjcgMTUuMzU3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAz''@;'; put 'put ''NS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksVC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLHYu''@;'; put 'put ''Y2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1''@;'; put 'put ''IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4z''@;'; put 'put ''NDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAyOSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAxNi42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3''@;'; put 'put ''LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBD''@;'; put 'put ''IDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAx''@;'; put 'put ''My40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUg''@;'; put 'put ''MjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIwIDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEuNiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMg''@;'; put 'put ''MTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0''@;'; put 'put ''IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2''@;'; put 'put ''LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAy''@;'; put 'put ''OSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+''@;'; put 'put ''XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAy''@;'; put 'put ''Mi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBa''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcgMjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIxIDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2''@;'; put 'put ''LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIyNyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTkuNCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBa''@;'; put 'put ''IE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1''@;'; put 'put ''NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAy''@;'; put 'put ''MS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4''@;'; put 'put ''PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMw''@;'; put 'put ''LjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEu''@;'; put 'put ''NzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3''@;'; put 'put ''IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAx''@;'; put 'put ''OCAyMCBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBM''@;'; put 'put ''IDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4z''@;'; put 'put ''NDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMgMjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAx''@;'; put 'put ''MSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDExLjYgQyA5LjY3NSAxMS42IDguNiAxMi42NzUgOC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDEx''@;'; put 'put ''LjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIz''@;'; put 'put ''IEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5''@;'; put 'put ''LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4''@;'; put 'put ''NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAy''@;'; put 'put ''MS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNC41NzkgMTUuMzU3IEMgMjMuNjM5IDE1Ljg2MyAyMyAxNi44NTcgMjMgMTggQyAyMyAx''@;'; put 'put ''OS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2Ljg1NyAyOC4zNjEgMTUuODYzIDI3LjQyMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMg''@;'; put 'put ''MTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4yMDkgMTAgMTEgMTAgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1''@;'; put 'put ''NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAy''@;'; put 'put ''Mi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjku''@;'; put 'put ''MDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksVC5DbHJTaGFwZUNsb3VkQ2hhcnQ9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0''@;'; put 'put ''QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsMjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAx''@;'; put 'put ''NS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEwLjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1''@;'; put 'put ''OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4OCAxNy43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjgg''@;'; put 'put ''MjIgWiBNIDI1IDIwLjYgQyAyNC4yMjcgMjAuNiAyMy42IDIxLjIyNyAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI3IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNyAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEw''@;'; put 'put ''NSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEu''@;'; put 'put ''ODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAxMS4yNDMgQyAxOC42MjggOC45IDEzLjg3OSA5Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1''@;'; put 'put ''IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41''@;'; put 'put ''NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQg''@;'; put 'put ''MzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMx''@;'; put 'put ''NCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44NzggMTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5Ljg0OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAy''@;'; put 'put ''NC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5LjY5NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1''@;'; put 'put ''IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iNyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+''@;'; put 'put ''XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIu''@;'; put 'put ''ODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIz''@;'; put 'put ''Ljk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMi4zNjQgMTguMzM1IDIzLjMxNCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAy''@;'; put 'put ''MiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcgMjUgMjggMjMuNjU3IDI4IDIyIEMgMjggMjAuMzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44''@;'; put 'put ''OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1''@;'; put 'put ''LjM2NCAxMC41ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEuNjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMuMzY0IEMgMTMuMDQ5IDEwLjY3OSAxNi40NTMgOS40OTIgMTguOTU2IDEwLjEyNCBMIDE4LjAwOCAxMS43NDEgQyAxNi4xOCAxMS41MTggMTMuNjk1IDEyLjU3OCAxMS42''@;'; put 'put ''MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDE5LjIyOCAxOC45MjUgMjAuMjM3IDE2Ljk5OCAyMC40NTYgMTUuMzU3IEwgMjIuMjIgMTUuMzU3IEMgMjIuMDA2IDE3''@;'; put 'put ''LjQ3NyAyMC44MzggMTkuODYxIDE4Ljg0OSAyMS44NDkgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUg''@;'; put 'put ''MjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40''@;'; put 'put ''IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQg''@;'; put 'put ''MTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQg''@;'; put 'put ''WiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAy''@;'; put 'put ''Ljg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTguOTU2IDEwLjEyNCBDIDE2LjQ1MyA5LjQ5MiAxMy4wNDkgMTAuNjc5IDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkg''@;'; put 'put ''QyAyMC44MzggMTkuODYxIDIyLjAwNiAxNy40NzcgMjIuMjIgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42''@;'; put 'put ''NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45Mjgg''@;'; put 'put ''MjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5''@;'; put 'put ''LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLFQuQ2xyU2hhcGVDdXJ2ZUNoYXJ0PSgwLHYuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1''@;'; put 'put ''IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9w''@;'; put 'put ''YXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2''@;'; put 'put ''LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1''@;'; put 'put ''LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAx''@;'; put 'put ''NC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEw''@;'; put 'put ''NSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAu''@;'; put 'put ''OTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45''@;'; put 'put ''NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAy''@;'; put 'put ''Mi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAg''@;'; put 'put ''PHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIgNi4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAxMC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcu''@;'; put 'put ''ODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAxOC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1''@;'; put 'put ''LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAxNi40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDEx''@;'; put 'put ''LjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5''@;'; put 'put ''NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMyAxMiBDIDE0Ljgx''@;'; put 'put ''NyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0''@;'; put 'put ''IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2''@;'; put 'put ''IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2''@;'; put 'put ''IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4y''@;'; put 'put ''IDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAy''@;'; put 'put ''OS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4y''@;'; put 'put ''MDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUg''@;'; put 'put ''MjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0''@;'; put 'put ''OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAy''@;'; put 'put ''IDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1IEwgMTcuNjI1IDEyLjM5NSBDIDE3LjQ3NiAxMi42MTIgMTcuMzc5IDEyLjg0MyAxNy4zMyAxMy4wNzcgQyAxNy4yNjIgMTIuOTQ4IDE3LjE5MiAxMi44MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5''@;'; put 'put ''NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDExIEMgNiAxMS41NTIgNi40NDggMTIgNyAxMiBMIDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTku''@;'; put 'put ''ODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUyIDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC42NCAxNi41OTggMTguMzg1IDE1Ljc0''@;'; put 'put ''NCAxOC4xNDcgMTUuMDQ0IEMgMTguNDA3IDE1LjIxNSAxOC43MTcgMTUuMzI2IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMz''@;'; put 'put ''LjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4n''@;'; put 'put ''KSxULkNsclNoYXBlR3JpZENoYXJ0PSgwLHYuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwx''@;'; put 'put ''NSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoi''@;'; put 'put ''Lz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBDIDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4g''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDMyIDYgQyAzMy4xMDUgNiAzNCA2Ljg5NSAzNCA4IEwgMzQgMTUg''@;'; put 'put ''QyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBD''@;'; put 'put ''IDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwg''@;'; put 'put ''MTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkgQyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0IDIxIEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS1hbGVydGVkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAxOS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0OCBDIDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1''@;'; put 'put ''LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkgOCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtYWxlcnRlZCIg''@;'; put 'put ''ZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC1hbGVydGVkIiBk''@;'; put 'put ''PSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVk''@;'; put 'put ''IGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4w''@;'; put 'put ''MzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDE1IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYuMTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUg''@;'; put 'put ''MTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4z''@;'; put 'put ''NSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUuMzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2OCAxNS4zNTcgQyAzMy44IDE2LjI5MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3''@;'; put 'put ''IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAzMCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkg''@;'; put 'put ''MjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAw''@;'; put 'put ''NCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIy''@;'; put 'put ''LjU5IDYuMDU2IEMgMjIuNTkgNi43MjkgMjIuNjggNy4zODEgMjIuODQ4IDggTCAyMSA4IEwgMjEgMTUgTCAzMiAxNSBMIDMyIDEzLjE3NSBDIDMyLjcxNyAxMi45NzIgMzMuMzg5IDEyLjY2NCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8''@;'; put 'put ''Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIg''@;'; put 'put ''ZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQgNiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2''@;'; put 'put ''LjA1NiBDIDIyLjU5IDEwLjE0MSAyNS45MDEgMTMuNDUyIDI5Ljk4NiAxMy40NTIgQyAzMS40NjYgMTMuNDUyIDMyLjg0NCAxMy4wMTggMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUgMzAgTCA0IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAyOCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1''@;'; put 'put ''IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAz''@;'; put 'put ''MiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2''@;'; put 'put ''IiByPSI1Ii8+JyksVC5DbHJTaGFwZUhlYXRNYXA9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMx''@;'; put 'put ''IDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDI4IDEwIEwgMjggMjYgTCA4IDI2IFogTSA5LjYg''@;'; put 'put ''MjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDI2IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAy''@;'; put 'put ''NiAxNy4yIFogTSAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3LjIgTCAyMC4zIDExLjYgWiBNIDE1LjcgMjQgTCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4z''@;'; put 'put ''MzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAxMC41OTYgMjQuNTY0IDExLjEzNSAyNS4wOSAxMS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDEyLjI4NyBDIDI2LjYxMSAxMi42NzkgMjcuMjg0IDEyLjk4MyAyOCAxMy4xODIgTCAyOCAy''@;'; put 'put ''NiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAxMS42IEwgMTUuNyAx''@;'; put 'put ''Ny4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwgMjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1LjcgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9''@;'; put 'put ''Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBa''@;'; put 'put ''Ij48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDE5LjAyOCAxMCBMIDE4LjA5MSAxMS42IEwgMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxNS4zNTcgTCAyMS45IDE1LjM1NyBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxNS4zNTcgTCAyOCAxNS4zNTcg''@;'; put 'put ''TCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAyNCBMIDIw''@;'; put 'put ''LjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2''@;'; put 'put ''OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQg''@;'; put 'put ''NyBaIE0gOCAyNiBMIDI4IDI2IEwgMjggMTAgTCA4IDEwIFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAy''@;'; put 'put ''NiAxMiBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBNIDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEwIDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAz''@;'; put 'put ''NCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwg''@;'; put 'put ''MjggMTMuMjMyIEMgMjguNDIxIDEzLjM0NSAyOC44NTkgMTMuNDIyIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkg''@;'; put 'put ''TCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkgWiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAxMiBMIDI1LjU4NCAxMiBDIDI1LjcxOSAxMi4xIDI1Ljg1OCAxMi4xOTYgMjYgMTIuMjg3IFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAx''@;'; put 'put ''NCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAg''@;'; put 'put ''TCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3''@;'; put 'put ''IEwgMjIgMTUuMzU3IEwgMjYgMTUuMzU3IFogTSAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgTCAxNy44NTYgMTIgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3''@;'; put 'put ''IEwgMjAgMTUuMzU3IFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAxMCAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAx''@;'; put 'put ''MS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDEx''@;'; put 'put ''LjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLFQuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBa''@;'; put 'put ''IE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMw''@;'; put 'put ''LjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcG9seWdvbj5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIg''@;'; put 'put ''NyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk2IDMzLjEwNSA1IDMyIDUgWiBNIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTku''@;'; put 'put ''MDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuNjUgMTMgTCAzMS4zNSAxNC4yOCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMy''@;'; put 'put ''IDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMx''@;'; put 'put ''IEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAy''@;'; put 'put ''MS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BvbHlnb24+XG4gIDxjaXJjbGUgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzAu''@;'; put 'put ''MzIgMTMuNDggTCAzMS4zOCAxNC4yOCBMIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuMzEgMTMuNDYgQyAyNS4wNSAxMy4xIDIxLjk2OSA5LjIz''@;'; put 'put ''MyAyMi41NyA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgMTIuMzQgQyAzMi44OTUgMTMuMDM2IDMxLjYyNiAxMy40MjkgMzAuMzIgMTMuNDggWiI+PC9w''@;'; put 'put ''YXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMy''@;'; put 'put ''IDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUuNjIgMTUuMjIyIEwgOS42MDIgMjMuOTY4IEwgNS41NSAyMC4zODQgTCA2LjYxIDE5LjE4NiBMIDkuMzA4IDIxLjU3MiBMIDE1LjYzNCAxMi4zOCBMIDIyLjM4NCAyMi4zOTUgTCAyNy43MTcgMTUuMzQ4IEwg''@;'; put 'put ''MjkuNzI0IDE1LjM0OCBMIDIyLjMwOCAyNS4xNDUgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5''@;'; put 'put ''IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUg''@;'; put 'put ''MTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjcuNDUyIDE1LjM1NyBMIDIyLjM4IDIyLjA2IEwgMTUuNjMgMTIgTCA5LjI4IDIxLjI4IEwgNi43NSAxOS4wNCBMIDUu''@;'; put 'put ''NDIgMjAuNTMgTCA5LjY1IDI0LjI4IEwgMTUuNjEgMTUuNTYgTCAyMi4yOCAyNS41IEwgMjkuOTU5IDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEu''@;'; put 'put ''OTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksVC5DbHJTaGFwZVBpZUNoYXJ0PSgwLHYuY2xySWNvblNWRyko''@;'; put 'put ''J1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQg''@;'; put 'put ''NyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMu''@;'; put 'put ''NDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIz''@;'; put 'put ''LjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42''@;'; put 'put ''IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgQyAzMiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBD''@;'; put 'put ''IDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBM''@;'; put 'put ''IDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMy''@;'; put 'put ''IDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBM''@;'; put 'put ''IDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQgMjAuNCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQg''@;'; put 'put ''MjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4x''@;'; put 'put ''OTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMg''@;'; put 'put ''MzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAz''@;'; put 'put ''Mi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4''@;'; put 'put ''IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAy''@;'; put 'put ''OSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEyLjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBN''@;'; put 'put ''IDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAxMi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAxMC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI3IDE3IEwgMTkgMTcgTCAxOSAxNS4zNDUgQyAxOS4wMjEgMTUuMzQ4IDE5LjA0MyAxNS4zNDkgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAx''@;'; put 'put ''IDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNi44MzEgMTUuMzU3IEMgMjYuOTQyIDE1Ljg4NyAyNyAxNi40MzcgMjcgMTcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2''@;'; put 'put ''IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1''@;'; put 'put ''NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAy''@;'; put 'put ''IDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuODA3IDEzLjU4MyAxNy41NzEgMTUuMTk3IDE5IDE1LjM0NSBMIDE5IDE3IEwgMjcgMTcgQyAyNyAxNi40MzcgMjYuOTQyIDE1Ljg4NyAyNi44MzEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBM''@;'; put 'put ''IDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2''@;'; put 'put ''OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLFQuQ2xyU2hhcGVTY2F0dGVy''@;'; put 'put ''UGxvdD0oMCx2LmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMx''@;'; put 'put ''IDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUgNSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjEx''@;'; put 'put ''MSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5''@;'; put 'put ''MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBD''@;'; put 'put ''IDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9''@;'; put 'put ''Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcg''@;'; put 'put ''MTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBD''@;'; put 'put ''IDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAy''@;'; put 'put ''Ny41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41''@;'; put 'put ''ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45''@;'; put 'put ''MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMx''@;'; put 'put ''IDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45''@;'; put 'put ''NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAu''@;'; put 'put ''OTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEyLjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAx''@;'; put 'put ''NC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUuOCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44''@;'; put 'put ''MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4''@;'; put 'put ''LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMg''@;'; put 'put ''MTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42Mzcg''@;'; put 'put ''MjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4z''@;'; put 'put ''NzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAy''@;'; put 'put ''Mi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYu''@;'; put 'put ''NjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4z''@;'; put 'put ''NCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1''@;'; put 'put ''LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYg''@;'; put 'put ''MTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEz''@;'; put 'put ''OSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNIDE1LjE3''@;'; put 'put ''NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAy''@;'; put 'put ''NC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIg''@;'; put 'put ''MjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUg''@;'; put 'put ''MjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUu''@;'; put 'put ''NDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4''@;'; put 'put ''MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAy''@;'; put 'put ''Ljg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUu''@;'; put 'put ''OCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAx''@;'; put 'put ''My45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5''@;'; put 'put ''IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42''@;'; put 'put ''MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIw''@;'; put 'put ''Ljc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4w''@;'; put 'put ''ODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIg''@;'; put 'put ''MjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUu''@;'; put 'put ''NTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5''@;'; put 'put ''MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBj''@;'; put 'put ''eT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIg''@;'; put 'put ''NS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0g''@;'; put 'put ''OS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42''@;'; put 'put ''NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4w''@;'; put 'put ''NjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAx''@;'; put 'put ''OS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYz''@;'; put 'put ''NiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQu''@;'; put 'put ''ODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQu''@;'; put 'put ''MDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAy''@;'; put 'put ''Ny45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41''@;'; put 'put ''OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMu''@;'; put 'put ''MDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAx''@;'; put 'put ''Ny42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUu''@;'; put 'put ''OCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAx''@;'; put 'put ''My45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAxMi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5''@;'; put 'put ''IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcgQyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42''@;'; put 'put ''MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIw''@;'; put 'put ''Ljc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4w''@;'; put 'put ''ODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIg''@;'; put 'put ''MjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUu''@;'; put 'put ''NTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5''@;'; put 'put ''MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44''@;'; put 'put ''NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1''@;'; put 'put ''IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxU''@;'; put 'put ''LkNsclNoYXBlVGlja0NoYXJ0PSgwLHYuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIg''@;'; put 'put ''MzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2IDI1IEwgOCAy''@;'; put 'put ''NSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40''@;'; put 'put ''NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAz''@;'; put 'put ''MSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMg''@;'; put 'put ''MjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUg''@;'; put 'put ''MjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIg''@;'; put 'put ''WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIw''@;'; put 'put ''IDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAyNSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAyNS4wMiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxjaXJjbGUg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0''@;'; put 'put ''IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDgg''@;'; put 'put ''QyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAy''@;'; put 'put ''MyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBM''@;'; put 'put ''IDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBM''@;'; put 'put ''IDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQg''@;'; put 'put ''MTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUg''@;'; put 'put ''TCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMg''@;'; put 'put ''MjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAyNS4wMiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEw''@;'; put 'put ''IDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQg''@;'; put 'put ''MTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4w''@;'; put 'put ''MDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxULkNsclNoYXBlQmVsbEN1cnZlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4xMSwwLDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAs''@;'; put 'put ''MSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQuMTYsOC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxU''@;'; put 'put ''LkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6VC5DbHJTaGFwZUF4aXNDaGFydCwiYmFyLWNoYXJ0IjpULkNsclNoYXBlQmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6VC5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6VC5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjpU''@;'; put 'put ''LkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6VC5DbHJTaGFwZUdyaWRDaGFydCwibGluZS1jaGFydCI6VC5DbHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjpULkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOlQuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6''@;'; put 'put ''VC5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6VC5DbHJTaGFwZUJveFBsb3QsImhlYXQtbWFwIjpULkNsclNoYXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6VC5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAs''@;'; put 'put ''ay5kZXNjcmlwdG9yQ29uZmlnKShULkNoYXJ0U2hhcGVzWyJsaW5lLWNoYXJ0Il0pKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoVC5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyAq''@;'; put 'put ''KiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKHplLFQsc2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVCwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSksVC5Db21tZXJjZVNoYXBlcz1ULkNsclNoYXBlRmFjdG9yeT1ULkNsclNoYXBlRW1wbG95ZWU9VC5DbHJTaGFwZUVtcGxveWVlR3JvdXA9VC5DbHJTaGFwZVJ1YmxlPVQuQ2xyU2hhcGVQZXNvPVQuQ2xyU2hhcGVDb2luQmFnPVQuQ2xyU2hhcGVCaXRj''@;'; put 'put ''b2luPVQuQ2xyU2hhcGVZZW49VC5DbHJTaGFwZVdvbj1ULkNsclNoYXBlUnVwZWU9VC5DbHJTaGFwZVBvdW5kPVQuQ2xyU2hhcGVFQ2hlY2s9VC5DbHJTaGFwZURvbGxhckJpbGw9VC5DbHJTaGFwZUJhbms9VC5DbHJTaGFwZUNyZWRpdENhcmQ9VC5DbHJTaGFwZURvbGxhcj1ULkNsclNoYXBl''@;'; put 'put ''RXVybz1ULkNsclNoYXBlU3RvcmU9VC5DbHJTaGFwZVdhbGxldD1ULkNsclNoYXBlU2hvcHBpbmdDYXJ0PVQuQ2xyU2hhcGVQaWdneUJhbms9VC5DbHJTaGFwZVNob3BwaW5nQmFnPVQuQ2xyU2hhcGVDYWxjdWxhdG9yPXZvaWQgMDt2YXIgaz1zZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3It''@;'; put 'put ''Y29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLHY9c2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtULkNsclNoYXBlQ2Fs''@;'; put 'put ''Y3VsYXRvcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRIMjhWMzJa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEyLDhIMjUuNjdWNkgxMWExLDEsMCwwLDAtMSwxdjQuNjdoMloiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zIiBwb2ludHM9IjEyIDE2IDEwIDE2IDEwIDE4IDE0IDE4IDE0IDE0IDEyIDE0IDEyIDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNCAxNiAyMiAxNiAyMiAxOCAyNiAxOCAyNiAx''@;'; put 'put ''NCAyNCAxNCAyNCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHBvaW50cz0iMTggMTYgMTYgMTYgMTYgMTggMjAgMTggMjAgMTQgMTggMTQgMTggMTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBwb2ludHM9IjEyIDIyIDEwIDIyIDEwIDI0IDE0IDI0IDE0IDIwIDEyIDIwIDEyIDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgcG9pbnRzPSIyNCAy''@;'; put 'put ''MiAyMiAyMiAyMiAyNCAyNiAyNCAyNiAyMCAyNCAyMCAyNCAyMiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHBvaW50cz0iMTggMjIgMTYgMjIgMTYgMjQgMjAgMjQgMjAgMjAgMTggMjAgMTggMjIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiBwb2ludHM9IjEyIDI4IDEwIDI4IDEwIDMwIDE0IDMwIDE0IDI2IDEyIDI2IDEyIDI4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMTAiIHBvaW50cz0iMjQgMjggMjIgMjggMjIgMzAgMjYgMzAgMjYgMjYgMjQgMjYgMjQgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIgcG9pbnRzPSIxOCAyOCAxNiAyOCAxNiAzMCAyMCAzMCAy''@;'; put 'put ''MCAyNiAxOCAyNiAxOCAyOCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0xMiwyOEgxMFYy''@;'; put 'put ''NmgyWm0wLTZIMTBWMjBoMlptMC02SDEwVjE0aDJabTcsMTJIMTdWMjZoMlptMC02SDE3VjIwaDJabTAtNkgxN1YxNGgyWm03LDEySDI0VjI2aDJabTAtNkgyNFYyMGgyWm0wLTZIMjRWMTRoMlptMC03SDEwVjVIMjZaIi8+JyksVC5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLHYuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0SDlWMTJI''@;'; put 'put ''NFYzMi4wOUExLjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkxLDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgyVjkuMjJh''@;'; put 'put ''Nyw3LDAsMSwwLTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYxMloiLz4nKSxULkNsclNoYXBlUGlnZ3lCYW5rPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0LDEyLjQ4''@;'; put 'put ''LDEwLjExLDEwLjExLDAsMCwxLDE5LjQ0LDEyYS44LjgsMCwxLDAsLjI4LTEuNTdaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMjUuMzgiIGN5PSIxNi43MSIgcj0iMS4zNiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zNS41MSwxOC42M2ExLDEsMCwwLDAtLjg0LS40NCwzLjQyLDMuNDIsMCwwLDEtMi4wOS0xLjEyLDE3LjM1LDE3LjM1LDAsMCwxLTIuNjMtMy43OGwyLjg4LTQuNUExLjg5LDEuODksMCwwLDAsMzMsN2Ex''@;'; put 'put ''Ljc3LDEuNzcsMCwwLDAtMS4zMy0xLDEwLjEyLDEwLjEyLDAsMCwwLTUuMzkuNzUsMTIuNzIsMTIuNzIsMCwwLDAtMi43MiwxLjYzLDE2Ljk0LDE2Ljk0LDAsMCwwLTUuMTYtMS4zOUMxMS4zMSw2LjMsNC44MywxMC45LDQsMTdINGEyLjU2LDIuNTYsMCwwLDEtMS4zOC0xLjUzLDEuODEsMS44''@;'; put 'put ''MSwwLDAsMSwuMTQtMS40LDEuMTksMS4xOSwwLDAsMSwuNDMtLjQzLDEuMDgsMS4wOCwwLDAsMC0xLjEyLTEuODVBMy4zMSwzLjMxLDAsMCwwLC45MSwxM2E0LDQsMCwwLDAtLjMzLDMuMDhBNC43Niw0Ljc2LDAsMCwwLDMsMTguOTVsLjkyLjQ2YTE3LjU4LDE3LjU4LDAsMCwwLDEuODIsN2wu''@;'; put 'put ''MTcuMzhBMjMsMjMsMCwwLDAsOS4yLDMxLjg4YTEsMSwwLDAsMCwuNzUuMzRoNC41MmExLDEsMCwwLDAsLjkyLTEuMzhMMTUsMjkuOTRsMS4xOC4xM2EyMC4zMywyMC4zMywwLDAsMCw0LDBjLjM3LjYuNzcsMS4yLDEuMjEsMS43OWExLDEsMCwwLDAsLjguNDFoNC4zNGExLDEsMCwwLDAsLjky''@;'; put 'put ''LTEuMzljLS4xNy0uNC0uMzQtLjgzLS40Ny0xLjItLjE4LS41My0uMzItMS0uNDMtMS40NUExMy4xOCwxMy4xOCwwLDAsMCwyOS41NiwyNmExMi41LDEyLjUsMCwwLDAsMywwLDEsMSwwLDAsMCwuNzgtLjYybDIuMjYtNS44MUExLDEsMCwwLDAsMzUuNTEsMTguNjNabS0zLjc4LDUuNDRhMTEu''@;'; put 'put ''MzcsMTEuMzcsMCwwLDEtMi4zNS0uMTFoMGE4LjIsOC4yLDAsMCwxLTIuNTMtLjg3LDEsMSwwLDAsMC0uOTMsMS43NywxMS43MiwxMS43MiwwLDAsMCwxLjI5LjU4LDgsOCwwLDAsMS0xLjgsMS4xNmwtMS4wNi40OHMuNDksMi4xOS44MiwzLjE2SDIyLjc5Yy0uMjQtLjM0LTEuNDUtMi4zNi0x''@;'; put 'put ''LjQ1LTIuMzZsLS42Ny4wOWExOC41MywxOC41MywwLDAsMS00LjI1LjEyYy0uNjYtLjA2LTEuNzYtLjItMi42Mi0uMzVsLTEuNTUtLjI3cy42MywyLjQzLjc1LDIuNzR2MEgxMC40MkEyMC41NywyMC41NywwLDAsMSw3Ljc2LDI2bC0uMTgtLjM5QTE0LjYyLDE0LjYyLDAsMCwxLDYsMTcuNDhj''@;'; put 'put ''LjU0LTUuMTksNi4xMi05LjExLDEyLjE5LTguNTRhMTUuNDcsMTUuNDcsMCwwLDEsNS4wOCwxLjQ4bC42Mi4yOS41LS40N0ExMC4yOSwxMC4yOSwwLDAsMSwyNyw4LjU0YTguMjUsOC4yNSwwLDAsMSw0LS42NWwtMy4zOCw1LjI5LjI1LjVoMGEyMS4xNiwyMS4xNiwwLDAsMCwzLjMxLDQuODQs''@;'; put 'put ''Ni40OSw2LjQ5LDAsMCwwLDIuMTQsMS4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNSwxOC44N0E1LjgzLDUuODMsMCwwLDEsMzMsMTcuNjFhMjEuNjMsMjEuNjMsMCwwLDEtMy4yOS00Ljg0bDMuMzktNS4yOWEu''@;'; put 'put ''OS45LDAsMCwwLS41NC0xLjM4LDkuNjcsOS42NywwLDAsMC01LjEzLjcyLDEyLDEyLDAsMCwwLTMuMTMsMkExNy4zNywxNy4zNywwLDAsMCwxOC42LDcuMTVDMTEuOCw2LjUyLDUuMjcsMTAuOSw0LjU0LDE3bC0uMTQtLjA3QTIuNzYsMi43NiwwLDAsMSwyLjksMTUuMjlhMiwyLDAsMCwxLC4x''@;'; put 'put ''NS0xLjU1LDEuMzIsMS4zMiwwLDAsMSwuNDctLjQ4LDEuMDgsMS4wOCwwLDEsMC0xLjEyLTEuODUsMy40NSwzLjQ1LDAsMCwwLTEuMjMsMS4yNUE0LjE2LDQuMTYsMCwwLDAsLjg0LDE1LjlhNSw1LDAsMCwwLDIuNTcsM2wxLC41NGExOC42MiwxOC42MiwwLDAsMCwyLDcuMywyMywyMywwLDAs''@;'; put 'put ''MCwzLDQuNzksMSwxLDAsMCwwLC44LjM4aDMuNjFhLjUyLjUyLDAsMCwwLC40LS43NUwxNCwzMC4zOGExMSwxMSwwLDAsMS0uMzMtMS4xOGMuOTEuMTYsMi4wOC4zMSwyLjg3LjM4YTIwLjA3LDIwLjA3LDAsMCwwLDMuMTIsMGMuMzkuNy43OSwxLjMzLDEuMTUsMS44NWEuOTMuOTMsMCwwLDAs''@;'; put 'put ''Ljc3LjQxaDMuMTFhLjY1LjY1LDAsMCwwLC42MS0uODVjLS4yMy0uNzQtLjUzLTEuNzUtLjcxLTIuMzdhMTUuOSwxNS45LDAsMCwwLDMuNzUtMS43NmMuMTYtLjExLjMyLS4yNi40OC0uMzlhMTMuNzcsMTMuNzcsMCwwLDEtMi40Mi0xLC44LjgsMCwwLDEsLjc0LTEuNDIsMTEuNjQsMTEuNjQs''@;'; put 'put ''MCwwLDAsMy4xOCwxLjEsMTMuMzEsMTMuMzEsMCwwLDAsMi42OC4xMiwxLDEsMCwwLDAsLjktLjY2bDEuNzMtNC40NEExLDEsMCwwLDAsMzUsMTguODdaTTEzLjc5LDExLjU5YS44Ni44NiwwLDAsMS0uMy4wNS44NS44NSwwLDAsMS0uMy0xLjY0LDEyLjQxLDEyLjQxLDAsMCwxLDYuNjktLjU1''@;'; put 'put ''Ljg1Ljg1LDAsMSwxLS4zLDEuNjdBMTAuNzUsMTAuNzUsMCwwLDAsMTMuNzksMTEuNTlabTEyLjUyLDYuMTJhMS40NCwxLjQ0LDAsMSwxLDEuNDQtMS40NEExLjQ0LDEuNDQsMCwwLDEsMjYuMzIsMTcuNzJaIi8+JyksVC5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCx2LmNsckljb25TVkcpKCc8''@;'; put 'put ''Y2lyY2xlIGN4PSIxMy4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjA4LDUuMzdBMSwxLDAsMCwwLDMyLjMxLDVIMTEuNDlsLjY1LDJIMzFMMjguMzMsMTloLTE1TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVM''@;'; put 'put ''OS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDMuMTctMTRBMSwxLDAsMCwwLDMzLjA4LDUu''@;'; put 'put ''MzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwLjcxIDcgMjEuODcgNSAxMS40''@;'; put 'put ''OSA1IDEyLjE0IDcgMjAuNzEgNyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMTUsMTUuNCwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42''@;'; put 'put ''MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEs''@;'; put 'put ''MCwwLDAsMS0uNzhsMS4wOS00LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIx''@;'; put 'put ''My4zMyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTcsN2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDExLjQ5bC42NSwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVsLS40MiwwTDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4xM0EyLjY2''@;'; put 'put ''LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjU3LTYuOTFBNy41MSw3LjUxLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xLDYuMzlBMSwxLDAsMCwwLDMyLjMxLDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0uMTMuMTNB''@;'; put 'put ''Mi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMy4yLTEzQTEsMSwwLDAsMCwzMy4xLDYuMzlaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI2LjUi''@;'; put 'put ''IGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDkuMjFMOC43Niw0LjU3YTEsMSww''@;'; put 'put ''LDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYt''@;'; put 'put ''MWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuMTktNC44NFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg5LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDku''@;'; put 'put ''OTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwxLjcxLTdBNy40OSw3LjQ5LDAsMCwxLDMwLDEz''@;'; put 'put ''LjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LWJhZGdlIiAvPicpLFQuQ2xyU2hhcGVXYWxsZXQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEsNiw2SDI5''@;'; put 'put ''LjU4YTEsMSwwLDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4wOCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4xMSwwLDAs''@;'; put 'put ''MSw1LDI3LjkzVjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgyMmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMy4wMSIg''@;'; put 'put ''Y3k9IjIwIiByPSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAtMkg2QTIu''@;'; put 'put ''OTQsMi45NCwwLDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcuMTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQsMy44Nywz''@;'; put 'put ''Ljg3LDAsMCwxLDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLFQuQ2xyU2hhcGVTdG9yZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDMwSDE2VjIySDE0djhIOFYyMkg2djhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjIySDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAsMCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwuNDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCww''@;'; put 'put ''LDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdBMiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0zMCwxOC4xM0EyLjY4LDIuNjgsMCww''@;'; put 'put ''LDEsMjcuODIsMTdMMjcsMTUuODgsMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OCwyMC4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDE1LDE1Ljg4LDE0LjE5LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OCw4LjE4LDE3QTIuNjgsMi42OCwwLDAs''@;'; put 'put ''MSw2LDE4LjEzYTIuNjQsMi42NCwwLDAsMS0yLS44OFYxNC4xN0w4LjA4LDZIMjcuOTJMMzIsMTQuMTZ2LjY3bDAsMi4zOUEyLjY3LDIuNjcsMCwwLDEsMzAsMTguMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjgs''@;'; put 'put ''MzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuNzksMTMuMjcsMjkuNzEsNS4xMUEyLDIsMCwwLDAsMjcuOTIs''@;'; put 'put ''NEg4LjA4QTIsMiwwLDAsMCw2LjI5LDUuMTFMMi4yMSwxMy4yN2EyLDIsMCwwLDAtLjIxLjl2My4wOGEyLDIsMCwwLDAsLjQ2LDEuMjhBNC42Nyw0LjY3LDAsMCwwLDYsMjAuMTNhNC43Miw0LjcyLDAsMCwwLDMtMS4wNyw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAs''@;'; put 'put ''NC43Myw0LjczLDAsMCwwLDYsMCw0LjcyLDQuNzIsMCwwLDAsNi41My0uNTJBMiwyLDAsMCwwLDM0LDE3LjI2VjE0LjE3QTIsMiwwLDAsMCwzMy43OSwxMy4yN1pNMTUsMTQuNHYxLjUyTDE0LjE4LDE3YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMOSwxNS44OFYxNC40TDExLjU5LDZIMTZabTEy''@;'; put 'put ''LDEuNDhMMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxULkNsclNoYXBlRXVybz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTMxLjQ4LDI4LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAsMSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAsMS4wNi0x''@;'; put 'put ''LjdBMTQsMTQsMCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwySDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0uMDUtLjcx''@;'; put 'put ''LS4wNS0xLjA3czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4xOUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIsMCwwLDAs''@;'; put 'put ''MCwyaDkuODJhMSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCwwLDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLFQuQ2xyU2hhcGVEb2xsYXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0yNiwyMS4xNWE2LjkxLDYuOTEsMCwwLDAtNC4zOC0zLjMyQTI2LDI2LDAsMCwwLDE5LDE3LjE5VjguMTJBMTAuMDUsMTAuMDUsMCwwLDEsMjMuODYsMTBhMSwxLDAsMCwwLDEuMzMtMS41QTExLjc1LDExLjc1LDAsMCwwLDE5LDYuMVYzYTEsMSwwLDAsMC0yLDBWNmMtNC40LjEt''@;'; put 'put ''Ni44MywyLjI5LTcuNTcsNC4xOEE1LjU2LDUuNTYsMCwwLDAsMTEuNjYsMTcsMTMuMiwxMy4yLDAsMCwwLDE3LDE4Ljg0VjI4YTEyLjMsMTIuMywwLDAsMS03LjE0LTIuNzRBMSwxLDAsMSwwLDguNDksMjYuNywxNC4wOSwxNC4wOSwwLDAsMCwxNywzMHYzYTEsMSwwLDAsMCwyLDBWMzBjMi44''@;'; put 'put ''Mi0uMTksNi4wNy0xLjA5LDcuMy00Ljc2QTUuMzMsNS4zMywwLDAsMCwyNiwyMS4xNVpNMTIuNzksMTUuMzJhMy41NywzLjU3LDAsMCwxLTEuNDktNC4zOUMxMS40MSwxMC42MywxMi41Myw4LjEyLDE3LDh2OC44QTEwLjcsMTAuNywwLDAsMSwxMi43OSwxNS4zMlpNMjQuNCwyNC41NmMtLjcy''@;'; put 'put ''LDIuMTQtMi4zMiwzLjE3LTUuNCwzLjRWMTkuMjNjLjY0LjE0LDEuMy4zLDIsLjUxYTUsNSwwLDAsMSwzLjE5LDIuMzJBMy4zNCwzLjM0LDAsMCwxLDI0LjQsMjQuNTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNjUsMjEuNTljLTEsMy0zLjYxLDMuODQtNS45LDR2MmExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjcuNTlBMTEuNDcsMTEuNDcsMCwwLDEsMTEsMjVhMS4yNSwxLjI1LDAsMSwxLDEuNzEtMS44''@;'; put 'put ''Myw5LjExLDkuMTEsMCwwLDAsNC41NSwxLjk0VjE4LjgzYTkuNjMsOS42MywwLDAsMS0zLjczLTEuNDEsNC44LDQuOCwwLDAsMS0xLjkxLTUuODRjLjU5LTEuNTEsMi40Mi0zLjIzLDUuNjQtMy41MVY2LjI1YTEuMjUsMS4yNSwwLDAsMSwyLjUsMFY4LjExYTkuNjcsOS42NywwLDAsMSw0Ljks''@;'; put 'put ''MkExLjI1LDEuMjUsMCwwLDEsMjMsMTEuOTVhNy4xNCw3LjE0LDAsMCwwLTMuMjQtMS4zMXY2LjEzYy42LjEzLDEuMjQuMjcsMS45MS40OGE1Ljg1LDUuODUsMCwwLDEsMy42OSwyLjgyQTQuNjQsNC42NCwwLDAsMSwyNS42NSwyMy41OVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC45MiwxOS42NGMtLjQtLjEyLS43OS0uMjItMS4xNy0uM3Y1Ljc2YzItLjIsMy4wNy0uOSwzLjUzLTIuM2EyLjE1LDIuMTUsMCwwLDAtLjE1LTEuNThBMy40OSwzLjQ5LDAsMCwwLDIwLjkyLDE5LjY0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxULkNsclNo''@;'; put 'put ''YXBlQ3JlZGl0Q2FyZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBz''@;'; put 'put ''dHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwy''@;'; put 'put ''LDAsMCwwLDMyLDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZUJhbms9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjczTDE4LDIu''@;'; put 'put ''OTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1''@;'; put 'put ''SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1LjAyIiB5PSIxNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFM''@;'; put 'put ''MTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI2YTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDAtMkgyOFYxNy42''@;'; put 'put ''M0gyNlYyNUgxOVYxNy42M0gxN1YyNUgxMFYxNy42M0g4VjI1SDVBMSwxLDAsMCwwLDQsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4xNSwxMS41OGgzLjIxTDE4LjY1LDcuNzJhLjguOCwwLDAsMC0uOCwwbC02LjcyLDMuODZoMy4yMWwzLjktMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjIuNzcsOEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTQsMTMuMjRsLjU2LjMyYTEsMSwwLDAsMCwxLjQ0LTEuMTlBNy40NSw3LjQ1LDAsMCwxLDMxLjk0LDEzLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzMsMjlIM2ExLDEsMCwwLDAsMCwySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsMTVBMy41MSwzLjUx''@;'; put 'put ''LDAsMCwxLDIwLDE0SDV2MkgzMVYxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDYsOS43NGwuNjgtMS4xNy0xLjQ5LS44NWEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44''@;'; put 'put ''NmgzLjIxbDMuOS0yLjI0LDEuMS42M0MxOS4zOSw5Ljg5LDE5LjQyLDkuODEsMTkuNDYsOS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMDUsNS4yNSwxOCwyLjkyLDIu''@;'; put 'put ''NSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDE4LDUuMjMsMjEuMDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMuNSwxMy41Niw1LDEyLjY4VjE2SDMxVjEyLjcxbDEuNDguODVhMSwxLDAsMCwwLDEtMS43M0wxOCwyLjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczWk0xNy44NSw3LjExYS44LjgsMCwwLDEsLjgsMEwyNS4zNywxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFI''@;'; put 'put ''MTEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcuNjNIOFYyNUg1LjE1QTEu''@;'; put 'put ''MTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAsMCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3''@;'; put 'put ''SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYzSDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAs''@;'; put 'put ''MCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzksMTFIMjIuMTVsLTMuOS0yLjI0TDE0LjM1LDExSDExLjE0bDYuNzItMy44''@;'; put 'put ''NmEuOC44LDAsMCwxLC44LDBsNSwyLjg3QTcuNDUsNy40NSwwLDAsMSwyMi41LDZjMC0uMTYsMC0uMzIsMC0uNDhMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M0w1LDEyLjY4VjE2SDMxVjEzLjQyQTcuNTMsNy41MywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwxMy4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi44NSwy''@;'; put 'put ''N0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1LDEuMTUsMCww''@;'; put 'put ''LDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNWEzLjUxLDMuNTEsMCwwLDEtMy01LjI2bC4xNC0uMjQtMS4zNS0uNzhMMTQuMzUsMTFIMTEuMTRsNi43Mi0z''@;'; put 'put ''Ljg2YS44LjgsMCwwLDEsLjgsMGwxLjc1LDEsMS42NS0yLjg2TDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMNSwxMi42OFYxNkgzMVYxNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxULkNsclNoYXBlRG9sbGFyQmlsbD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUsNC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3QTUuODcs''@;'; put 'put ''NS44NywwLDAsMCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwxLDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcsMC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjExLTUuNTUs''@;'; put 'put ''NC43LTUuNTUsNC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgsMjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4xOCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywzLjIxLDYu''@;'; put 'put ''Myw3LjE1UzIxLjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MiIgY3g9IjE4IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLFQuQ2xyU2hhcGVFQ2hlY2s9KDAsdi5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM0''@;'; put 'put ''LDhIMTIuOTNhOC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTkuOWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4xNywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSwwLDAsMS0z''@;'; put 'put ''LjQ2LTNoNy41M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4LjM5LDYu''@;'; put 'put ''MjUsOC4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEsMSwwLDAs''@;'; put 'put ''MCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0zMSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40LDEyLjQ0''@;'; put 'put ''djBBNiw2LDAsMCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIsMTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwxLjA5LDEu''@;'; put 'put ''MTEsMS4yLDEuMiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYuNTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLFQuQ2xyU2hhcGVQb3VuZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjksMzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSwwLDAsMCwx''@;'; put 'put ''LjQ4LTEuMzVBNy4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJhMSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjExLjg4YTUu''@;'; put 'put ''ODUsNS44NSwwLDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEsMS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUsMCwwLDEs''@;'; put 'put ''MTUsMjUuNDJIMjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+JyksVC5DbHJTaGFwZVJ1cGVlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIuNiw2SDI4''@;'; put 'put ''YTEsMSwwLDAsMCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIsNS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIyLjA2LDMy''@;'; put 'put ''YTEsMSwwLDEsMCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs''@;'; put 'put ''MTYsMCwwLDAsMTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQuMjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZoNC43MWEz''@;'; put 'put ''LjU5LDMuNTksMCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJoLTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMuODgsMTFa''@;'; put 'put ''Ii8+JyksVC5DbHJTaGFwZVdvbj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZMMjcuNjgs''@;'; put 'put ''MTRIMjEuMzFMMTksNC43NmExLDEsMCwwLDAtMS45NCwwTDE0Ljc5LDE0SDguNDJMNi4xMyw0Ljc2YTEsMSwwLDAsMC0xLjk0LjQ4TDYuMzYsMTRIM2ExLDEsMCwwLDAsMCwySDYuODVsLjUsMkgzYTEsMSwwLDAsMCwwLDJINy44NGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMTUuMzYs''@;'; put 'put ''MjBoNS4zOGwyLjc5LDExLjI0YTEsMSwwLDAsMCwxLjk0LDBMMjguMjUsMjBIMzNhMSwxLDAsMCwwLDAtMlptLTUuODItMi0uNSwySDIyLjNsLS41LTJaTTE4LDkuMTYsMTkuMjUsMTRoLTIuNFpNOC45MSwxNmg1LjM4bC0uNSwySDkuNDFaTTExLjYsMjYuODQsOS45MSwyMEgxMy4zWk0xNS44''@;'; put 'put ''NSwxOGwuNS0yaDMuMzlsLjUsMlptOC42NCw4Ljg0TDIyLjgsMjBoMy4zOVoiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHBvaW50cz0iMTcuNzQgMTYgMTcuMjIgMTggMTguODUgMTggMTguMzIgMTYgMTcuNzQgMTYiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHBvaW50cz0iMTEuOTQgMTggMTQuNjMgMTggMTUuMTYgMTYgMTEuNDEgMTYgMTEuOTQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMiIHBvaW50cz0iMTMuMjkgMjMuMSAxNC4xIDIwIDEyLjQ3IDIwIDEzLjI5IDIzLjEiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHBvaW50cz0iMjEuNDQgMTggMjQuMTMgMTggMjQuNjYgMTYgMjAuOTEg''@;'; put 'put ''MTYgMjEuNDQgMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIHBvaW50cz0iMjIuNzggMjMuMSAyMy42IDIwIDIxLjk3IDIwIDIyLjc4IDIzLjEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTYiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LDIwSDI2LjE5TDI0LDI4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMMTkuMzgsMjBIMTYuNjlsLTIuMTksOC4zMmExLjI1LDEuMjUsMCwwLDEtMi40MiwwTDkuODgsMjBI''@;'; put 'put ''N2ExLDEsMCwwLDEsMC0ySDkuMzVsLS41My0ySDdhMSwxLDAsMCwxLDAtMkg4LjNsLTEtMy42OGExLjI1LDEuMjUsMCwwLDEsMi40Mi0uNjRMMTAuODgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40MiwwTDIwLjM4LDE0aDQuOGwxLjE0LTQuMzJhMS4yNSwxLjI1LDAsMCwx''@;'; put 'put ''LDIuNDIuNjRsLTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0uNTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLFQuQ2xyU2hhcGVZZW49KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4zNCw0LjU1''@;'; put 'put ''YTEsMSwwLDEsMC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwxLDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYy''@;'; put 'put ''My44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgyMmExLDEs''@;'; put 'put ''MCwwLDEsMCwySDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYyLjc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4LjA4bDUu''@;'; put 'put ''OTUtOS40OWExLjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLFQuQ2xyU2hhcGVCaXRjb2luPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gxMWExLDEs''@;'; put 'put ''MCwwLDAtMSwxVjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwyLDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwzLjQzLDIu''@;'; put 'put ''MzZBMy41MSwzLjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yMS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAsMCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMTMuNzVh''@;'; put 'put ''Mi4yNCwyLjI0LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIyLDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAs''@;'; put 'put ''MTgsMlptOC4zMSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdIMjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVWNy4wN2Ex''@;'; put 'put ''LDEsMCwwLDEsMiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0LjcyLDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksVC5DbHJTaGFwZUNvaW5CYWc9KDAsdi5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTIxLjYsMjlhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjIuNTQsMjRoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAs''@;'; put 'put ''MCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIsMzJIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNywz''@;'; put 'put ''MmgtN2ExLDEsMCwwLDAsMCwyaDdhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMy43LDI4aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjc0LDI2YTI4LDI4LDAsMCwwLTIuODItMTAuMTJBMjAuMjQsMjAuMjQsMCwwLDAsMjQuNiw4LjcxTDI3LDMuNDJhMSwxLDAsMCwwLS4wNy0xQTEsMSwwLDAsMCwyNi4xMywySDkuOGExLDEsMCwwLDAtLjkxLDEuNDJsMi40NSw1LjMxYTIwLjMz''@;'; put 'put ''LDIwLjMzLDAsMCwwLTYuMjgsNy4xNWMtMi4xNSw0LTIuODIsOC44OS0zLDEyLjI4YTMuNiwzLjYsMCwwLDAsMSwyLjcxQTMuNzksMy43OSwwLDAsMCw1LjgsMzEuOTRIMTJWMzBINS43MmExLjY4LDEuNjgsMCwwLDEtMS4yMS0uNTIsMS42MiwxLjYyLDAsMCwxLS40NS0xLjIzYy4xNC0yLjYx''@;'; put 'put ''LjY5LTcuNTgsMi43Ni0xMS40NUExOCwxOCwwLDAsMSwxMy4wOCwxMGgxYTMwLjgxLDMwLjgxLDAsMCwwLTEuODcsMi45MiwyMi43OCwyMi43OCwwLDAsMC0xLjQ3LDMuMzRsMS4zNy45MmEyNCwyNCwwLDAsMSwxLjQ5LTMuNDdBMjkuMSwyOS4xLDAsMCwxLDE2LjA1LDEwaDFhMjEuNDUsMjEu''@;'; put 'put ''NDUsMCwwLDEsMS40MSw1LDIyLjU0LDIyLjU0LDAsMCwxLC4zMiwzLjg2bDEuNTgtMS4xMWEyNC4xNSwyNC4xNSwwLDAsMC0uMzItM0EyNC44MiwyNC44MiwwLDAsMCwxOC43NiwxMGguNzhsLjkxLTJIMTMuMjFMMTEuMzYsNEgyNC41N2wtMi41LDUuNDdhOS45Myw5LjkzLDAsMCwxLDEuMjMu''@;'; put 'put ''NzgsMTguNjMsMTguNjMsMCwwLDEsNS44Niw2LjU3QTI2LjU5LDI2LjU5LDAsMCwxLDMxLjczLDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgPHBhdGggZD0iTTI0Ljg5LDI2aDcuODZjLS42Ni04LjcxLTQuNDEtMTQuMTItOS4yMi0xNy4z''@;'; put 'put ''MkwyNS43MiwzLjlhMSwxLDAsMCwwLS45MS0xLjRIMTEuMWExLDEsMCwwLDAtLjkxLDEuNGwxLjIsMi42SDIxLjUxbC0uOSwySDE4Ljc2QTI0LjksMjQuOSwwLDAsMSwyMCwxMy4xOWEyNC40OSwyNC40OSwwLDAsMSwuMzIsM2wtMS41OCwxLjExYTIyLjU0LDIyLjU0LDAsMCwwLS4zMi0zLjg2''@;'; put 'put ''QTIxLjc0LDIxLjc0LDAsMCwwLDE3LDguNWgtMWEyOC4yMiwyOC4yMiwwLDAsMC0yLjQ4LDMuNywyMy45MSwyMy45MSwwLDAsMC0xLjQ5LDMuNDZsLTEuMzctLjkxYTIyLjc4LDIyLjc4LDAsMCwxLDEuNDctMy4zNEEzMC44MSwzMC44MSwwLDAsMSwxNC4wNSw4LjVIMTIuM2wuMDguMTdDNy4w''@;'; put 'put ''OCwxMi4yLDMuMDUsMTguNCwzLjA1LDI4Ljc1QTEuNjUsMS42NSwwLDAsMCw0LjYxLDMwLjVoOEEyLjY3LDIuNjcsMCwwLDEsMTQuMjEsMjZhMi42NywyLjY3LDAsMCwxLS4zNy0xLjM0LDIuNywyLjcsMCwwLDEsMi43LTIuN2g2YTIuNywyLjcsMCwwLDEsMi43LDIuN0EyLjYzLDIuNjMsMCww''@;'; put 'put ''LDEsMjQuODksMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS42LDI4LjVhMSwxLDAsMCwwLTEtMWgtNmExLDEsMCwwLDAsMCwyaDZBMSwxLDAsMCwwLDIxLjYsMjguNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIC8+PHBhdGggZD0iTTIyLjU0LDIzLjVoLTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwzMS41SDE2YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuNywzMS41aC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNywyNy41aC03YTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''N2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxULkNsclNoYXBlUGVzbz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4xLTEuMTlo''@;'; put 'put ''Mi45M2EuOC44LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAsMCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCwwLDcuODkt''@;'; put 'put ''NS4ySDMxYS44LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYuNTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4''@;'; put 'put ''LDE5LjdoNS4xOWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcsMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcuOEg4Ljc2''@;'; put 'put ''YS45LjksMCwxLDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEyLDEuMyw2''@;'; put 'put ''LjgsNi44LDAsMCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksVC5DbHJTaGFwZVJ1YmxlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJhOC4yMyw4''@;'; put 'put ''LjIzLDAsMCwwLTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwxLDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMsMCwwLDEt''@;'; put 'put ''Ni40Myw2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgxLjIxVjIw''@;'; put 'put ''LjU2SDExLjI1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4yNSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicp''@;'; put 'put ''LFQuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTgu''@;'; put 'put ''NDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0''@;'; put 'put ''LDMuNzQsMCwwLDAsMTguNDIsNi45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS45MSwxNy42NWEyMC42LDIwLjYsMCwwLDAtMTMsMkExLjc3LDEuNzcsMCwwLDAsOCwyMS4yNXYzLjU2YTEsMSwwLDAsMCwyLDBWMjEuMzhh''@;'; put 'put ''MTguOTIsMTguOTIsMCwwLDEsMTItMS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMywyMkgyNi4zVjIwLjUyYTEsMSwwLDAsMC0yLDBWMjJIMTdhMSwxLDAsMCwwLTEsMVYzM2ExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAs''@;'; put 'put ''MCwxLTFWMjNBMSwxLDAsMCwwLDMzLDIyWk0zMiwzMkgxOFYyNGg2LjN2LjQxYTEsMSwwLDAsMCwyLDBWMjRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cmVjdCB4PSIyMS44MSIgeT0iMjcuNDIiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEu''@;'; put 'put ''NCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEwLjg0LDEyLjI0YTE4LDE4LDAsMCwwLTcuOTUsMkExLjY3LDEuNjcsMCwwLDAsMiwxNS43MXYzLjFhMSwxLDAsMCwwLDIsMHYtMi45YTE2LDE2LDAsMCwxLDcuNTgtMS42N0E3LjI4''@;'; put 'put ''LDcuMjgsMCwwLDEsMTAuODQsMTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzMuMTEsMTQuMjNhMTcuOCwxNy44LDAsMCwwLTcuMTItMiw3LjQ2LDcuNDYsMCwwLDEtLjczLDJBMTUuODksMTUuODksMCwwLDEsMzIsMTUu''@;'; put 'put ''OTF2Mi45YTEsMSwwLDEsMCwyLDB2LTMuMUExLjY3LDEuNjcsMCwwLDAsMzMuMTEsMTQuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cGF0aCBkPSJNMTAuNjYsMTAuNjFjMC0uMjMsMC0uNDUsMC0uNjdhMy4wNywzLjA3LDAsMCwxLC41NC02''@;'; put 'put ''LjExLDMuMTUsMy4xNSwwLDAsMSwyLjIuODksOC4xNiw4LjE2LDAsMCwxLDEuNy0xLjA4LDUuMTMsNS4xMywwLDAsMC05LDMuMjcsNS4xLDUuMSwwLDAsMCw0LjcsNUE3LjQyLDcuNDIsMCwwLDEsMTAuNjYsMTAuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''OCIvPlxuICA8cGF0aCBkPSJNMjQuNzcsMS44M2E1LjE3LDUuMTcsMCwwLDAtMy42OSwxLjU1LDcuODcsNy44NywwLDAsMSwxLjksMSwzLjE0LDMuMTQsMCwwLDEsNC45MywyLjUyLDMuMDksMy4wOSwwLDAsMS0xLjc5LDIuNzcsNy4xNCw3LjE0LDAsMCwxLC4wNi45Myw3Ljg4LDcuODgsMCww''@;'; put 'put ''LDEtLjEsMS4yLDUuMSw1LjEsMCwwLDAsMy44My00LjlBNS4xMiw1LjEyLDAsMCwwLDI0Ljc3LDEuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICBcbiAgPGVsbGlwc2UgY3g9IjE4IiBjeT0iMTEuMjgiIHJ4PSI0Ljc2IiByeT0iNC43IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxMS43NWMuMTYsMCwuMzIsMCwuNDgsMCwwLS4xNSwwLS4yOCwwLS40M2E2LjcsNi43LDAsMCwxLDMuNzUtNiw0LjYyLDQuNjIsMCwxLDAtNC4yMSw2LjQ2WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjQuNzYsMTEuMjhjMCwuMTUsMCwuMjgsMCwuNDMuMTYsMCwuMzIsMCwuNDgsMEE0LjU4LDQuNTgsMCwxLDAsMjEsNS4yOSw2LjcsNi43LDAsMCwxLDI0Ljc2LDExLjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjIuMjksMTYuNDVhMjEuNDUsMjEuNDUsMCwwLDEsNS43MSwyLDIuNzEsMi43MSwwLDAsMSwuNjguNTNIMzRWMTUuNTZhLjcyLjcyLDAsMCwwLS4zOC0uNjQsMTgsMTgsMCwwLDAtOC40LTIuMDVsLS42NiwwQTYuNjYsNi42NiwwLDAsMSwyMi4yOSwx''@;'; put 'put ''Ni40NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTYuNTMsMjAuOTJBMi43NiwyLjc2LDAsMCwxLDgsMTguNDdhMjEuNDUsMjEuNDUsMCwwLDEsNS43MS0yLDYuNjYsNi42NiwwLDAsMS0yLjI3LTMuNTVsLS42NiwwYTE4LDE4LDAsMCww''@;'; put 'put ''LTguNCwyLjA1LjcyLjcyLDAsMCwwLS4zOC42NFYyMkg2LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICA8cmVjdCB4PSIyMS40NiIgeT0iMjYuNjkiIHdpZHRoPSI1Ljk2IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMzIuODEsMjEuMjZIMjUuOTR2LTFhMSwxLDAsMCwwLTIsMHYxSDIyVjE4LjQzQTIwLjE3LDIwLjE3LDAsMCwwLDE4LDE4YTE5LjI3LDE5LjI3LDAsMCwwLTkuMDYsMi4yMi43Ni43NiwwLDAsMC0uNDEuNjh2NS42MWg3LjExdjYuMDlhMSwxLDAsMCww''@;'; put 'put ''LDEsMUgzMi44MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwzMi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxULkNsclNoYXBlRW1w''@;'; put 'put ''bG95ZWU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSwwLDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMuNTgsMjMu''@;'; put 'put ''NTgsMCwwLDEsNS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThWMjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEsMCwwLDAs''@;'; put 'put ''MzMuMTcsMjEuNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIxIiB5PSIy''@;'; put 'put ''OCIgd2lkdGg9IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBWMjJIMjJW''@;'; put 'put ''MTguNDJBMzIuMTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCwwLDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxULkNs''@;'; put 'put ''clNoYXBlRmFjdG9yeT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEsMSwwLDAs''@;'; put 'put ''MCw0LDMuNzNWMTRIM2ExLDEsMCwwLDAtMSwxVjMxYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY4LjI2QTEsMSwwLDAsMCwzMy40Nyw3LjM3Wk02LDVsMiwuNDRWMTRINlpNMzIsMzBINFYxNmg5LjgzYTEsMSwwLDAsMCwuNjQtLjIzTDIxLDEwLjM3djUuMjhhMSwxLDAsMCwwLDEu''@;'; put 'put ''NTYuODNMMzIsMTAuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSI2IiB5PSIxNy45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0i''@;'; put 'put ''NiIgeT0iMjEuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjYiIHk9IjI1Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NCIvPlxuICA8cmVjdCB4PSIxOSIgeT0iMTguOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgPHJlY3QgeD0iMjMiIHk9IjE4Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjI3IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjI0Ljk5IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zMi40NSw4LjQ0LDIyLDE1LjNWOS41MWExLDEsMCwwLDAtMS42My0uNzhMMTQuMDcsMTRIMTBWNC4wNkw0LDIuNzFWMTRIMlYzMWExLDEsMCwwLDAs''@;'; put 'put ''MSwxSDMzYTEsMSwwLDAsMCwxLTFWOS4yN0ExLDEsMCwwLDAsMzIuNDUsOC40NFpNMTQsMjlINlYyN2g4Wm0wLTRINlYyM2g4Wm0wLTRINlYxOWg4Wm04LDhIMjBWMjZoMlptMC02SDIwVjIwaDJabTQsNkgyNFYyNmgyWm0wLTZIMjRWMjBoMlptNCw2SDI4VjI2aDJabTAtNkgyOFYyMGgyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLFQuQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6VC5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOlQuQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6VC5DbHJTaGFwZVNob3BwaW5nQmFnLCJz''@;'; put 'put ''aG9wcGluZy1jYXJ0IjpULkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxldDpULkNsclNoYXBlV2FsbGV0LHN0b3JlOlQuQ2xyU2hhcGVTdG9yZSxldXJvOlQuQ2xyU2hhcGVFdXJvLGRvbGxhcjpULkNsclNoYXBlRG9sbGFyLHBlc286VC5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJkIjpULkNs''@;'; put 'put ''clNoYXBlQ3JlZGl0Q2FyZCxiYW5rOlQuQ2xyU2hhcGVCYW5rLCJkb2xsYXItYmlsbCI6VC5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOlQuQ2xyU2hhcGVFQ2hlY2sscG91bmQ6VC5DbHJTaGFwZVBvdW5kLHJ1cGVlOlQuQ2xyU2hhcGVSdXBlZSx3b246VC5DbHJTaGFwZVdvbix5ZW46''@;'; put 'put ''VC5DbHJTaGFwZVllbixiaXRjb2luOlQuQ2xyU2hhcGVCaXRjb2luLHJ1YmxlOlQuQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOlQuQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6VC5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6VC5DbHJTaGFwZUVtcGxveWVlLGZhY3Rv''@;'; put 'put ''cnk6VC5DbHJTaGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChULkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpc''@;'; put 'put ''CiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMg''@;'; put 'put ''Zm91bmQgKi9mdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuQ29yZVNoYXBlcz1ULkNsclNoYXBlQXJyb3c9VC5DbHJTaGFwZVN0ZXBGb3J3YXJkMj1ULkNsclNoYXBlRXllSGlkZT1ULkNsclNo''@;'; put 'put ''YXBlRXllPVQuQ2xyU2hhcGVFdmVudD1ULkNsclNoYXBlQ2FsZW5kYXI9VC5DbHJTaGFwZUFuZ2xlRG91YmxlPVQuQ2xyU2hhcGVWaWV3Q29sdW1ucz1ULkNsclNoYXBlU2VhcmNoPVQuQ2xyU2hhcGVWbUJ1Zz1ULkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT1ULkNsclNoYXBlRmlsdGVyR3Jp''@;'; put 'put ''ZD1ULkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD1ULkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPVQuQ2xyU2hhcGVDbG91ZD1ULkNsclNoYXBlSW1hZ2U9VC5DbHJTaGFwZUJlbGw9VC5DbHJTaGFwZUZvbGRlck9wZW49VC5DbHJTaGFwZUZvbGRlcj1ULkNsclNoYXBlQW5nbGU9VC5DbHJT''@;'; put 'put ''aGFwZVVzZXI9VC5DbHJTaGFwZUJhcnM9VC5DbHJTaGFwZUhlbHBJbmZvPVQuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9VC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9VC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD1ULkNsclNoYXBlSW5mb1N0YW5kYXJkPVQuQ2xyU2hhcGVJbmZvQ2lyY2xlPVQu''@;'; put 'put ''Q2xyU2hhcGVDaGVja0NpcmNsZT1ULkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9VC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9VC5DbHJTaGFwZVRpbWVzPVQuQ2xyU2hhcGVDaGVjaz1ULkNsclNoYXBlQ29nPVQuQ2xyU2hhcGVIb21lPVQuQ2xyU2hhcGVVbmtub3duU3RhdHVzPXZv''@;'; put 'put ''aWQgMDt2YXIgaz1zZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLHY9c2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRp''@;'; put 'put ''bHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtULkNsclNoYXBlVW5rbm93blN0YXR1cz0oMCx2LmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4z''@;'; put 'put ''Miw5LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjksMCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywx''@;'; put 'put ''M1oiLz4nKSxULkNsclNoYXBlSG9tZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEs''@;'; put 'put ''MzIuMjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwx''@;'; put 'put ''LDAsMCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMsMTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTkuNzZaIi8+JyksVC5DbHJTaGFwZUNvZz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0x''@;'; put 'put ''OC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzIuOCwwLDUsMi4yLDUsNVMyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi44LDE0LjdMMzAsMTMuOGwtMC42LTEu''@;'; put 'put ''NWwxLjQtMi42YzAuMy0wLjYsMC4yLTEuNC0wLjMtMS45bC0yLjQtMi40Yy0wLjUtMC41LTEuMy0wLjYtMS45LTAuM2wtMi42LDEuNGwtMS41LTAuNmwtMC45LTIuOEMyMSwyLjUsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4z''@;'; put 'put ''LTEuNiwwLjZMOS44LDUuMkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFs''@;'; put 'put ''MC42LDEuNWwtMS40LDIuNmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwy''@;'; put 'put ''LjYsMS40YzAuNiwwLjMsMS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTUuNiwzMy41LDE0LjksMzIuOCwxNC43eiBNMzIsMTkuNGwtMy42LDEuMUwy''@;'; put 'put ''OC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAuNywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41''@;'; put 'put ''LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTkuNHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwx''@;'; put 'put ''LjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjVMMjEsNy43YzAuNywwLjIsMS40LDAuNSwyLjEsMC45bDAuNSwwLjNsMy4zLTEuOGwyLDJsLTEuOCwzLjNsMC4zLDAuNWMwLjQsMC43LDAuNywxLjQsMC45LDIuMWwwLjEsMC41bDMuNiwxLjFWMTkuNHoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4xLDE4YzAsMy45LDMuMSw3LDcsN2MzLjksMCw3LTMuMSw3LTdzLTMuMS03LTctN0MxNC4yLDExLDExLjEsMTQuMSwxMS4xLDE4eiBNMjMuMSwx''@;'; put 'put ''OGMwLDIuOC0yLjIsNS01LDVjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVDMjAuOSwxMywyMy4xLDE1LjIsMjMuMSwxOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi44''@;'; put 'put ''LDE0LjdMMzAsMTMuOGwtMC4xLTAuM2MtMC44LDAtMS42LTAuMi0yLjQtMC40YzAuMywwLjYsMC42LDEuMywwLjgsMS45bDAuMSwwLjVsMy42LDEuMXYyLjhsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0w''@;'; put 'put ''LjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwtMC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4x''@;'; put 'put ''LTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAuMi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuMywwLjUs''@;'; put 'put ''MS45LDAuOGMtMC4zLTAuOC0wLjQtMS42LTAuNC0yLjVsLTAuNC0wLjJsLTAuOS0yLjhDMjEsMi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3''@;'; put 'put ''LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIu''@;'; put 'put ''NCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0w''@;'; put 'put ''LjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNywxNS40aC01LjN2MC4x''@;'; put 'put ''bDMuNiwxLjF2Mi44bC0zLjYsMS4xTDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0w''@;'; put 'put ''LjMtMS40LTAuNi0yLjEtMC45bC0wLjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMu''@;'; put 'put ''MiwxLjhsMC41LTAuM2MwLjctMC40LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNGwxLjQtMi4zbC0wLjYtMkMyMSwyLjQsMjAuNCwyLDE5LjcsMmgtMy40Yy0wLjcsMC0xLjMsMC41LTEuNCwxLjJMMTQsNmMtMC42LDAuMS0xLjEsMC4zLTEuNiwwLjZMOS44LDUu''@;'; put 'put ''MkM5LjIsNC45LDguNCw1LDcuOSw1LjVMNS41LDcuOUM1LDguNCw0LjksOS4yLDUuMiw5LjhsMS4zLDIuNWMtMC4yLDAuNS0wLjQsMS4xLTAuNiwxLjZsLTIuOCwwLjlDMi41LDE1LDIsMTUuNiwyLDE2LjN2My40YzAsMC43LDAuNSwxLjMsMS4yLDEuNUw2LDIyLjFsMC42LDEuNWwtMS40LDIu''@;'; put 'put ''NmMtMC4zLDAuNi0wLjIsMS40LDAuMywxLjlsMi40LDIuNGMwLjUsMC41LDEuMywwLjYsMS45LDAuM2wyLjYtMS40bDEuNSwwLjZsMC45LDIuOWMwLjIsMC42LDAuOCwxLjEsMS41LDEuMWgzLjRjMC43LDAsMS4zLTAuNSwxLjUtMS4xbDAuOS0yLjlsMS41LTAuNmwyLjYsMS40YzAuNiwwLjMs''@;'; put 'put ''MS40LDAuMiwxLjktMC4zbDIuNC0yLjRjMC41LTAuNSwwLjYtMS4zLDAuMy0xLjlsLTEuNC0yLjZsMC42LTEuNWwyLjktMC45YzAuNi0wLjIsMS4xLTAuOCwxLjEtMS41di0zLjRDMzQsMTYsMzMuOSwxNS43LDMzLjcsMTUuNHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LjEsMjNjLTIuOCwwLTUtMi4yLTUtNXMyLjItNSw1LTVjMC4yLDAsMC41LDAsMC43LDAuMWMtMC4yLTAuNi0wLjMtMS4zLTAuMi0yaC0wLjVjLTMuOSwwLTcsMy4xLTcsN2MwLDMuOSwzLjEs''@;'; put 'put ''Nyw3LDdjMy45LDAsNy0zLjEsNy03YzAtMC45LTAuMi0xLjgtMC41LTIuNmgtMi4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi41QzIzLjEsMjAuOCwyMC45LDIzLDE4LjEsMjN6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAu''@;'; put 'put ''NC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEsMjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjU3LDE1LjcybC0zLjM1LTFhMTEuNjUsMTEuNjUsMCwwLDAtLjk1LTIuMzNsMS42''@;'; put 'put ''NC0zLjA3YS42MS42MSwwLDAsMC0uMTEtLjcyTDI3LjQxLDYuMmEuNjEuNjEsMCwwLDAtLjcyLS4xMUwyMy42NCw3LjcyYTExLjYyLDExLjYyLDAsMCwwLTIuMzYtMWwtMS0zLjMxQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDEx''@;'; put 'put ''LjYzLDAsMCwwLTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywx''@;'; put 'put ''YTExLjYyLDExLjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAs''@;'; put 'put ''MCwuNTgtLjQzbDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40''@;'; put 'put ''My0uNThWMTYuMzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWk0xOCwyMy41QTUuNSw1LjUsMCwxLDEsMjMuNSwxOCw1LjUsNS41LDAsMCwxLDE4LDIzLjVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1i''@;'; put 'put ''YWRnZWQiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTEyLjEyLDEyLjEyLDAsMCwwLS40Ny0xLjMyLDcuNDksNy40OSwwLDAsMS02LjE0LTYuMTYsMTEuODIsMTEuODIsMCwwLDAtMS4zMy0uNDhsLTEtMy4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQz''@;'; put 'put ''bC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCww''@;'; put 'put ''LDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNo''@;'; put 'put ''My4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0x''@;'; put 'put ''YS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzIuNTcsMTUuNzIsMzEuNSwxNS40''@;'; put 'put ''SDIyLjg1QTUuNSw1LjUsMCwxLDEsMTgsMTIuNWE1LjUzLDUuNTMsMCwwLDEsLjY1LDBBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMi4wOS0zLjYyLS44Ni0yLjgzQS42MS42MSwwLDAsMCwxOS42OSwzSDE2LjMxYS42MS42MSwwLDAsMC0uNTguNDNsLTEsMy4zYTExLjYzLDExLjYzLDAsMCww''@;'; put 'put ''LTIuMzgsMWwtMy0xLjYyYS42MS42MSwwLDAsMC0uNzIuMTFMNi4yLDguNTlhLjYxLjYxLDAsMCwwLS4xMS43MmwxLjYyLDNhMTEuNjMsMTEuNjMsMCwwLDAtMSwyLjM3bC0zLjMxLDFhLjYxLjYxLDAsMCwwLS40My41OHYzLjM4YS42MS42MSwwLDAsMCwuNDMuNThsMy4zMywxYTExLjYyLDEx''@;'; put 'put ''LjYyLDAsMCwwLDEsMi4zM0w2LjA5LDI2LjY5YS42MS42MSwwLDAsMCwuMTEuNzJMOC41OSwyOS44YS42MS42MSwwLDAsMCwuNzIuMTFsMy4wOS0xLjY1YTExLjY1LDExLjY1LDAsMCwwLDIuMy45NGwxLDMuMzdhLjYxLjYxLDAsMCwwLC41OC40M2gzLjM4YS42MS42MSwwLDAsMCwuNTgtLjQz''@;'; put 'put ''bDEtMy4zOGExMS42MywxMS42MywwLDAsMCwyLjI4LS45NGwzLjExLDEuNjZhLjYxLjYxLDAsMCwwLC43Mi0uMTFsMi4zOS0yLjM5YS42MS42MSwwLDAsMCwuMTEtLjcybC0xLjY2LTMuMWExMS42MywxMS42MywwLDAsMCwuOTUtMi4yOWwzLjM3LTFhLjYxLjYxLDAsMCwwLC40My0uNThWMTYu''@;'; put 'put ''MzFBLjYxLjYxLDAsMCwwLDMyLjU3LDE1LjcyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Mi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxULkNsclNoYXBlQ2hlY2s9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSwwLDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxULkNsclNoYXBlVGltZXM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEu''@;'; put 'put ''NDFaIi8+JyksVC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2''@;'; put 'put ''QTEuMywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEs''@;'; put 'put ''MCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3''@;'; put 'put ''LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0x''@;'; put 'put ''LjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4nKSxULkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAs''@;'; put 'put ''MCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEu''@;'; put 'put ''MywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEu''@;'; put 'put ''NzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoiLz4nKSxULkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCww''@;'; put 'put ''LDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwz''@;'; put 'put ''LjU5LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQs''@;'; put 'put ''MCwwLDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLFQuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMi''@;'; put 'put ''IGN5PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEs''@;'; put 'put ''MSwwLDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0yaDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxULkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIg''@;'; put 'put ''Y3k9IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEu''@;'; put 'put ''NCwwLDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxULkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksVC5DbHJTaGFwZUVycm9yU3RhbmRh''@;'; put 'put ''cmQ9KDAsdi5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQs''@;'; put 'put ''MTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAs''@;'; put 'put ''MCwwLDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksVC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCx2LmNsckljb25TVkcp''@;'; put 'put ''KCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwx''@;'; put 'put ''LDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2''@;'; put 'put ''MzU1IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUyMTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1''@;'; put 'put ''LjExNzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMwLjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEu''@;'; put 'put ''MjAxMDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUsMjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIuODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3''@;'; put 'put ''NSwyOS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBD''@;'; put 'put ''MzMuMDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUsMjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwy''@;'; put 'put ''LjAxMDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAxNi44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjYsMjkuMjEsMjAuNzEs''@;'; put 'put ''My42NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcsMjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgsMCwx''@;'; put 'put ''LDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1WiIvPicpLFQuQ2xyU2hhcGVIZWxwSW5mbz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEt''@;'; put 'put ''LjI3LTEuMTItMS0uNDMtMy40OS40Ni0xLjY2LDMuMzItOS40OCw0LTExLjM4bC0yLjE4LjI4Yy0uNjksMS44Ni0zLjI5LDguODQtMy43NiwxMC41OC0uNjgsMi40OS0uMzQsNC4zLDEuMDksNS41NkE1LjU5LDUuNTksMCwwLDAsMTUsMzRhOS41Myw5LjUzLDAsMCwwLDMuNDUtLjdjMi43OS0x''@;'; put 'put ''LjA5LDUuNzItNC4xMiw3LjI2LTYuNDdBMSwxLDAsMCwwLDI1LjM5LDI1LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuMywxMWE0LjUsNC41LDAsMSwwLTQuNS00LjVBNC41LDQuNSwwLDAsMCwxOS4z''@;'; put 'put ''LDExWm0wLTdhMi41LDIuNSwwLDEsMS0yLjUsMi41QTIuNSwyLjUsMCwwLDEsMTkuMyw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuODEsMTVjLjA2LDAsNi4yNy0uODIsNy43My0xLC42NS0uMSwxLjE0''@;'; put 'put ''LDAsMS4zLjE1cy4yMS44LS4wNywxLjY4Yy0uNjEsMS44Ni0zLjY5LDExLTQuNTksMTMuNzFhOCw4LDAsMCwwLDEuMjktLjM4LDcuMzIsNy4zMiwwLDAsMCwxLjE1LS42QzE5Ljg1LDI1LDIyLjE1LDE4LjEsMjIuNjcsMTYuNTJzLjM5LTIuNzgtLjMtMy42YTMuMTYsMy4xNiwwLDAsMC0zLjA4''@;'; put 'put ''LS44M2MtMS40My4xNS03LjQ3Ljk0LTcuNzMsMWExLDEsMCwwLDAsLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjIwLjc1IiBjeT0iNiIgcj0iNCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC44NCwyNi4yM2ExLDEsMCwwLDAtMS40LjI5LDE2LjYsMTYuNiwwLDAsMS0zLjUxLDMuNzdjLS4zMy4yNS0xLjU2LDEuMi0yLjA4LDEtLjM2LS4xMS0uMTUtLjgyLS4wOC0xLjEybC41My0xLjU3Yy4yMi0uNjQsNC4wNS0x''@;'; put 'put ''Miw0LjQ3LTEzLjMuNjItMS45LjM1LTMuNzctMi40OC0zLjMyLS43Ny4wOC04LjU4LDEuMDktOC43MiwxLjFhMSwxLDAsMCwwLC4xMywyczMtLjM5LDMuMzMtLjQyYS44OC44OCwwLDAsMSwuODUuNDQsMi40NywyLjQ3LDAsMCwxLS4wNywxLjcxYy0uMjYsMS00LjM3LDEyLjU4LTQuNSwxMy4y''@;'; put 'put ''NWEyLjc4LDIuNzgsMCwwLDAsMS4xOCwzLDUsNSwwLDAsMCwzLjA4LjgzaDBhOC41Myw4LjUzLDAsMCwwLDMuMDktLjYyYzIuNDktMSw1LjA5LTMuNjYsNi40Ni01Ljc1QTEsMSwwLDAsMCwyNC44NCwyNi4yM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+Jyks''@;'; put 'put ''VC5DbHJTaGFwZUJhcnM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0''@;'; put 'put ''LDdIMzJhMSwxLDAsMCwxLDAsMloiLz4nKSxULkNsclNoYXBlVXNlcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pN''@;'; put 'put ''MjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1Ljc0''@;'; put 'put ''VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjZhNSw1LDAsMSwxLDEuMjQtOC40MmwxLTEuNzZBNyw3LDAsMSwwLDE4LDE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCww''@;'; put 'put ''LDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIyLDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcsNywwLDEsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEtNSw1QTUsNSwwLDAsMSwxOCw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUy''@;'; put 'put ''YTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAsMCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjEwIiByPSI3IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjYxLDI0LjUyYTE3LjE2LDE3LjE2LDAsMCwwLTI1LjIyLDAsMS41MSwxLjUxLDAs''@;'; put 'put ''MCwwLS4zOSwxdjZBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41di02QTEuNTEsMS41MSwwLDAsMCwzMC42MSwyNC41MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDQuNDUtMS42aC0uMjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy4xNi01LjQ3QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYt''@;'; put 'put ''NkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwwLDAsNi44NS01LjU2LDcuNCw3LjQsMCwwLDEtMi4yNC02LjY5QTcs''@;'; put 'put ''NywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksVC5DbHJTaGFwZUFuZ2xlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2''@;'; put 'put ''TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nKSxULkNsclNoYXBlRm9sZGVyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiww''@;'; put 'put ''LDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNVYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUxYTcuNSw3LjUsMCwwLDEt''@;'; put 'put ''MS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBk''@;'; put 'put ''PSJNMzAsMTUuNFYyOUg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsOUgx''@;'; put 'put ''Ni40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsMTFWN2g2LjQ5bDIuNzIsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYxNS40Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAs''@;'; put 'put ''MCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBk''@;'; put 'put ''PSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIzLjEzLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk02LDExVjdoNi40OWwyLjcy''@;'; put 'put ''LDRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFQuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLHYuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCww''@;'; put 'put ''LDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMu''@;'; put 'put ''NzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43''@;'; put 'put ''MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjI5LTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDks''@;'; put 'put ''NUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5''@;'; put 'put ''LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdW''@;'; put 'put ''MjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYu''@;'; put 'put ''NDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzJhMiwyLDAsMCwwLTItMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQs''@;'; put 'put ''MS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAs''@;'; put 'put ''MCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEy''@;'; put 'put ''LjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAsMCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0y''@;'; put 'put ''LjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwxLTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAs''@;'; put 'put ''NS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksVC5DbHJTaGFwZUJlbGw9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0x''@;'; put 'put ''LjM1LTQuODFWMTUuMTVBMTAuODEsMTAuODEsMCwwLDAsMTkuMjEsNC40VjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45Mywx''@;'; put 'put ''LDEsMCwwLDAtLjM0Ljc1djEuMzZhMSwxLDAsMCwwLDEsMWgyNy44YTEsMSwwLDAsMCwxLTFWMjguNThBMSwxLDAsMCwwLDMyLjUxLDI3LjgzWk01LjEzLDI4Ljk0YTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVhOC43NCw4Ljc0LDAs''@;'; put 'put ''MSwxLDE3LjQ3LDB2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAs''@;'; put 'put ''MCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgs''@;'; put 'put ''MzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjUxLDI3LjgzQTE0LjQsMTQuNCwwLDAsMSwzMCwyNC45YTEyLjYz''@;'; put 'put ''LDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OSw3LjQ0LDcuNDQsMCwwLDEtMi4yNC0uODQsOC44OSw4Ljg5LDAsMCwxLC40LDIuNjR2NC45NGExNC4yNCwxNC4yNCwwLDAsMCwxLjY1LDUuODUsMTYuMTcsMTYuMTcsMCwwLDAsMi40NCwzSDUu''@;'; put 'put ''MTNhMTYuMTcsMTYuMTcsMCwwLDAsMi40NC0zLDE0LjI0LDE0LjI0LDAsMCwwLDEuNjUtNS44NVYxNS4xNUE4LjgsOC44LDAsMCwxLDE4LDYuMzFhOC42MSw4LjYxLDAsMCwxLDQuNzYsMS40NEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YzAtLjIxLDAtLjQyLDAtLjYzYTEwLjU4LDEwLjU4LDAs''@;'; put 'put ''MCwwLTMuMzItMVYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwx''@;'; put 'put ''LDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIg''@;'; put 'put ''cj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi44NSwyOC4xM2wtLjM0LS4zQTE0LjM3LDE0LjM3LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgx''@;'; put 'put ''LDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIxLDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTNsLS4zNC4zdjIuODJIMzIuODVaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE1LjMyLDMyYTIuNjUsMi42NSwwLDAsMCw1LjI1LDBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiIGQ9Ik0xOCwzNC4yOEEyLjY3LDIuNjcsMCwwLDAsMjAuNTgsMzJIMTUuMzJBMi42NywyLjY3LDAsMCwwLDE4LDM0LjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzIuODUsMjguMTNsLS4zNC0uM0ExNC4zNywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNWExMC45MiwxMC45MiwwLDAsMC0uMTYtMS43OUE3LjUsNy41LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41NywxMC41NywwLDAsMC0z''@;'; put 'put ''LjMyLTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlSW1hZ2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2''@;'; put 'put ''VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCww''@;'; put 'put ''LDAsOC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMywwLDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0tNC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSww''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywz''@;'; put 'put ''LDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBMMTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIyLjc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEs''@;'; put 'put ''MS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksVC5DbHJTaGFwZUNsb3VkPSgwLHYuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTQsMzNIMTAuNjJDNS42NywzMywxLDI4LjE5LDEsMjMuMWExMCwxMCwwLDAsMSw4LTkuNzUsMTAuMTksMTAuMTksMCwwLDEsMjAuMzMsMS4wNkExMC4wNywxMC4wNywwLDAsMSwy''@;'; put 'put ''OSwxNi42NmE4LjI5LDguMjksMCwwLDEsNiw4QzM1LDI5LjEsMzEuMzMsMzMsMjcuMTQsMzNaTTE5LjA5LDYuMjNhOC4yNCw4LjI0LDAsMCwwLTguMTksOGwwLC44Ny0uODYuMUE3Ljk0LDcuOTQsMCwwLDAsMywyMy4xYzAsNCwzLjc3LDcuOSw3LjYyLDcuOUgyNy4xNEMzMC4yMSwzMSwzMywy''@;'; put 'put ''OCwzMywyNC42NWE2LjMxLDYuMzEsMCwwLDAtNS4zNy02LjI2bC0xLjE4LS4xOC4zOS0xLjEzQTguMTgsOC4xOCwwLDAsMCwxOS4wOSw2LjIzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgZD0iTTI5LDE2LjY2YTEwLjA3LDEwLjA3LDAsMCwwLC4yNS0yLjI0YzAtLjMzLDAtLjY1LDAtMWE3LjQ1LDcuNDUsMCwwLDEtMi4xLS41NCw4LDgsMCwwLDEtLjMsNC4xNmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMxLDI3''@;'; put 'put ''LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3YTguMjQsOC4yNCwwLDAsMSw4LjE5LThBOC4xMyw4LjEzLDAsMCwxLDIyLjU4LDdhNy41Myw3LjUzLDAsMCwxLS4wOC0xLDcuNTEsNy41MSwwLDAsMSwuMDkt''@;'; put 'put ''MS4xMkExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTQsMTAuMTQsMCwwLDAsLjItMS4zaC0yYTguMjgsOC4yOCwwLDAsMS0uMzcsMS43MmwtLjM5LDEuMTMsMS4xOC4xOGE2LjMxLDYuMzEsMCwwLDEsNS4zNyw2LjI2QzMyLjk1LDI4LDMwLjE2LDMx''@;'; put 'put ''LDI3LjA5LDMxSDEwLjU3Yy0zLjg0LDAtNy42Mi0zLjkxLTcuNjItNy45YTcuOTQsNy45NCwwLDAsMSw3LTcuODlsLjg2LS4xLDAtLjg3QTguMTYsOC4xNiwwLDAsMSwyMSw2LjQ3bDEtMS44QTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzZhMTAsMTAsMCwwLDAtOCw5Ljc1YzAsNS4wOSw0''@;'; put 'put ''LjY3LDkuOSw5LjYyLDkuOUgyNy4wOWM0LjE5LDAsNy44Ni0zLjksNy44Ni04LjM1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2LDEwLDEwLDAsMCwwLDEsMjMuMUMxLDI4LjE5LDUuNjIsMzMsMTAuNTcsMzNIMjcuMDlDMzEuMjgsMzMsMzUsMjkuMSwz''@;'; put 'put ''NSwyNC42NUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42''@;'; put 'put ''NSwwLTFhNy40NCw3LjQ0LDAsMCwxLTYuNi04LjU4QTEwLjEzLDEwLjEzLDAsMCwwLDE5LDQuMjMsMTAuMjYsMTAuMjYsMCwwLDAsOC45MSwxMy4zNiwxMCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4y''@;'; put 'put ''OSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjksMTYuNjZhMTAuMTUsMTAuMTUsMCwwLDAsLjItMS4yNmgtN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwzLTUuMjFBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwxMCwxMCww''@;'; put 'put ''LDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxULkNsclNoYXBlRWxsaXBz''@;'; put 'put ''aXNIb3Jpem9udGFsPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIx''@;'; put 'put ''OCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIg''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCx2LmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEi''@;'; put 'put ''IHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+''@;'; put 'put ''JyksVC5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAs''@;'; put 'put ''MC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4x''@;'; put 'put ''Mi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxULkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5''@;'; put 'put ''LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCww''@;'; put 'put ''LDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksVC5DbHJTaGFwZVZtQnVnPSgwLHYuY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRp''@;'; put 'put ''b246aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0LjgzYTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1''@;'; put 'put ''LjM1LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSwwLDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4x''@;'; put 'put ''NSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45Mywz''@;'; put 'put ''LjkzLDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAsMC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUs''@;'; put 'put ''MTUuMDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0uMWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4y''@;'; put 'put ''NywwLDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEuMi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIg''@;'; put 'put ''ZmlsbD0iI2ZmZmZmZiIvPicpLFQuQ2xyU2hhcGVTZWFyY2g9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4w''@;'; put 'put ''NW0wLTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMsMCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAs''@;'; put 'put ''MSwwLDM1LDMzLjI5WiIvPicpLFQuQ2xyU2hhcGVWaWV3Q29sdW1ucz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+JyksVC5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43''@;'; put 'put ''MS0uMjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWEx''@;'; put 'put ''LDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLFQuQ2xyU2hhcGVDYWxlbmRhcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1''@;'; put 'put ''LDZaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjgiIHk9IjE5''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIy''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xMSIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNCIgZD0iTTEwLDEw''@;'; put 'put ''YTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwx''@;'; put 'put ''LDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1''@;'; put 'put ''LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQt''@;'; put 'put ''LWJhZGdlZCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIHg9IjgiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIHg9IjIwIiB5PSIx''@;'; put 'put ''OSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xMS0tYmFkZ2VkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwy''@;'; put 'put ''LDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9Ijgi''@;'; put 'put ''IHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgeD0iMjAiIHk9IjE5IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC05LS1hbGVydGVkIiB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBvbHlnb24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlBMi4y''@;'; put 'put ''LDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVI''@;'; put 'put ''OFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjYsMTBhMSwx''@;'; put 'put ''LDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDks''@;'; put 'put ''M1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgt''@;'; put 'put ''NEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRo''@;'; put 'put ''MlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMu''@;'; put 'put ''NjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJa''@;'; put 'put ''bTAtNUg4VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxULkNsclNoYXBlRXZlbnQ9''@;'; put 'put ''KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAs''@;'; put 'put ''MCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAs''@;'; put 'put ''MTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAuODEs''@;'; put 'put ''MjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzIsMTMuMjJW''@;'; put 'put ''MzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEs''@;'; put 'put ''MSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAs''@;'; put 'put ''LjIzLS40MUgyMy44TDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcG9pbnRzPSIyMS4yOSA2IDEzIDYg''@;'; put 'put ''MTMgOCAyMC4xNCA4IDIxLjI5IDYiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFW''@;'; put 'put ''MzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI2LDEwYTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcu''@;'; put 'put ''OCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiww''@;'; put 'put ''LDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0x''@;'; put 'put ''VjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwt''@;'; put 'put ''OS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAs''@;'; put 'put ''MCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMs''@;'; put 'put ''MTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41''@;'; put 'put ''QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMu''@;'; put 'put ''NVptLTQuMDYsMy4wOC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFQuQ2xyU2hhcGVFeWU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4''@;'; put 'put ''bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQy''@;'; put 'put ''LDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0''@;'; put 'put ''Ljg2LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwxOC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywy''@;'; put 'put ''LDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjgu''@;'; put 'put ''NTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''Lz4nKSxULkNsclNoYXBlRXllSGlkZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0''@;'; put 'put ''LS4wNkE0Ljg3LDQuODcsMCwwLDEsMjMuNjIsMThhNC43OSw0Ljc5LDAsMCwxLS4wNi43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2''@;'; put 'put ''LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMuOCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCww''@;'; put 'put ''LDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1''@;'; put 'put ''bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgu''@;'; put 'put ''MzcsMTEuMTdBNi43OSw2Ljc5LDAsMCwwLDE2LDExLjZsOC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5''@;'; put 'put ''LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTku''@;'; put 'put ''OTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIz''@;'; put 'put ''LDkuMjgsMTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOC4zLDguM2E2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2Ex''@;'; put 'put ''Ny4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxULkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcu''@;'; put 'put ''MTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43''@;'; put 'put ''VjI5LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZUFycm93PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDgu''@;'; put 'put ''MzQsMTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksVC5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0''@;'; put 'put ''dXMiOlQuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6VC5DbHJTaGFwZUhvbWUsY29nOlQuQ2xyU2hhcGVDb2csY2hlY2s6VC5DbHJTaGFwZUNoZWNrLHRpbWVzOlQuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOlQuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJl''@;'; put 'put ''eGNsYW1hdGlvbi1jaXJjbGUiOlQuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpULkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpULkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6VC5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vz''@;'; put 'put ''cy1zdGFuZGFyZCI6VC5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZCwiZXJyb3Itc3RhbmRhcmQiOlQuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpULkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOlQuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOlQuQ2xy''@;'; put 'put ''U2hhcGVCYXJzLHVzZXI6VC5DbHJTaGFwZVVzZXIsYW5nbGU6VC5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpULkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6VC5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpULkNsclNoYXBlQmVsbCxpbWFnZTpULkNsclNoYXBlSW1hZ2UsY2xvdWQ6VC5DbHJT''@;'; put 'put ''aGFwZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpULkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6VC5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpULkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpU''@;'; put 'put ''LkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVnIjpULkNsclNoYXBlVm1CdWcsc2VhcmNoOlQuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6VC5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOlQuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpULkNsclNo''@;'; put 'put ''YXBlQ2FsZW5kYXIsZXZlbnQ6VC5DbHJTaGFwZUV2ZW50LGV5ZTpULkNsclNoYXBlRXllLCJleWUtaGlkZSI6VC5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpULkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OlQuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFQuQ29yZVNoYXBlcywiaG91c2UiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFQuQ29yZVNoYXBlcywic3VjY2VzcyIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJjbG9zZSIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMudGltZXMpKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJ3YXJuaW5nIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImVycm9yIiwoMCxrLmRlc2NyaXB0b3JD''@;'; put 'put ''b25maWcpKFQuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJpbmZvIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNv''@;'; put 'put ''cmVTaGFwZXMsIm1lbnUiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoVC5Db3JlU2hhcGVzLCJjYXJldCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsIm5vdGlmaWNhdGlvbiIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuQ29yZVNo''@;'; put 'put ''YXBlc1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJv''@;'; put 'put ''amVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKHpl''@;'; put 'put ''LFQsc2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksVC5DbHJTaGFwZUxvZ291dD1ULkNsclNoYXBlTG9naW49VC5DbHJTaGFwZUhlbHA9VC5DbHJTaGFwZUNvcHk9VC5DbHJTaGFwZUNoaWxkQXJyb3c9VC5DbHJTaGFwZUNp''@;'; put 'put ''cmNsZUFycm93PVQuQ2xyU2hhcGVBbGFybUNsb2NrPVQuQ2xyU2hhcGVDbG9jaz1ULkNsclNoYXBlSGlzdG9yeT1ULkNsclNoYXBlVGFncz1ULkNsclNoYXBlVGFnPVQuQ2xyU2hhcGVUcmFzaD1ULkNsclNoYXBlVGltZXNDaXJjbGU9VC5DbHJTaGFwZUJhbj1ULkNsclNoYXBlUGx1c0NpcmNs''@;'; put 'put ''ZT1ULkNsclNoYXBlTWludXNDaXJjbGU9VC5DbHJTaGFwZU1pbnVzPVQuQ2xyU2hhcGVQbHVzPVQuQ2xyU2hhcGVGaWxlPVQuQ2xyU2hhcGVQaW49VC5DbHJTaGFwZUZpbHRlcj1ULkNsclNoYXBlUG9wT3V0PVQuQ2xyU2hhcGVVc2Vycz1ULkNsclNoYXBlVW5sb2NrPVQuQ2xyU2hhcGVMb2Nr''@;'; put 'put ''PVQuQ2xyU2hhcGVVcGxvYWQ9VC5DbHJTaGFwZURvd25sb2FkPVQuQ2xyU2hhcGVMaWdodGJ1bGI9VC5DbHJTaGFwZVZpZXdDYXJkcz1ULkNsclNoYXBlVmlld0xpc3Q9VC5DbHJTaGFwZVN5bmM9VC5DbHJTaGFwZVJlZnJlc2g9VC5DbHJTaGFwZU5vdGU9VC5DbHJTaGFwZVBlbmNpbD1ULkNs''@;'; put 'put ''clNoYXBlVGhlcm1vbWV0ZXI9VC5DbHJTaGFwZUJ1Zz1ULkNsclNoYXBlU2Npc3NvcnM9VC5DbHJTaGFwZUFzdGVyaXNrPVQuQ2xyU2hhcGVCb29rPVQuQ2xyU2hhcGVPYmplY3RzPVQuQ2xyU2hhcGVSZXNpemU9VC5DbHJTaGFwZUN1cnNvckhhbmRDbGljaz1ULkNsclNoYXBlQ3Vyc29ySGFu''@;'; put 'put ''ZD1ULkNsclNoYXBlQ3Vyc29yQXJyb3c9VC5DbHJTaGFwZUdyaWRWaWV3PVQuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj1ULkNsclNoYXBlTmV3PVQuQ2xyU2hhcGVBbGFybU9mZj1ULkNsclNoYXBlUGluYm9hcmQ9VC5DbHJTaGFwZUFkZFRleHQ9dm9pZCAwLFQuQ2xyU2hhcGVDbG9uZT1U''@;'; put 'put ''LkNsclNoYXBlQ3Vyc29yTW92ZT1ULkNsclNoYXBlV2FuZD1ULkNsclNoYXBlU3VuPVQuQ2xyU2hhcGVNb29uPVQuQ2xyU2hhcGVGaWx0ZXIyPVQuQ2xyU2hhcGVEcmFnSGFuZGxlPVQuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQ9VC5DbHJTaGFwZUNvbG9yUGlja2VyPVQuQ2xyU2hhcGVCcmll''@;'; put 'put ''ZmNhc2U9VC5DbHJTaGFwZUV4cGFuZENhcmQ9VC5DbHJTaGFwZUNvbGxhcHNlQ2FyZD1ULkNsclNoYXBlU29ydEJ5PVQuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Mj1ULkNsclNoYXBlQWNjZXNzaWJpbGl0eTE9VC5DbHJTaGFwZVNocmluaz1ULkNsclNoYXBlUGFwZXJjbGlwPVQuQ2xyU2hhcGVG''@;'; put 'put ''aWxlR3JvdXA9VC5DbHJTaGFwZVJlcGVhdD1ULkNsclNoYXBlSWRCYWRnZT1ULkNsclNoYXBlQmFsYW5jZT1ULkNsclNoYXBlT3JnYW5pemF0aW9uPVQuQ2xyU2hhcGVOb0FjY2Vzcz1ULkNsclNoYXBlSG91cmdsYXNzPVQuQ2xyU2hhcGVGbGFtZT1ULkNsclNoYXBlVGFyZ2V0PVQuQ2xyU2hh''@;'; put 'put ''cGVCdWxsc2V5ZT1ULkNsclNoYXBlV3JlbmNoPVQuQ2xyU2hhcGVCb2x0PVQuQ2xyU2hhcGVMaWJyYXJ5PVQuQ2xyU2hhcGVLZXk9VC5DbHJTaGFwZVpvb21PdXQ9VC5DbHJTaGFwZVpvb21Jbj1ULkNsclNoYXBlV2luZG93UmVzdG9yZT1ULkNsclNoYXBlV2luZG93TWluPVQuQ2xyU2hhcGVX''@;'; put 'put ''aW5kb3dNYXg9VC5DbHJTaGFwZVdpbmRvd0Nsb3NlPVQuQ2xyU2hhcGVUb29scz1ULkNsclNoYXBlU3dpdGNoPVQuQ2xyU2hhcGVUd29XYXlBcnJvd3M9VC5DbHJTaGFwZUZpbGVTZXR0aW5ncz1ULkNsclNoYXBlU2Nyb2xsPVQuQ2xyU2hhcGVVbmRvPVQuQ2xyU2hhcGVSZWRvPVQuQ2xyU2hh''@;'; put 'put ''cGVMaXN0PVQuQ2xyU2hhcGVGaXJld2FsbD1ULkNsclNoYXBlQ2xpcGJvYXJkPVQuQ2xyU2hhcGVTbGlkZXI9VC5DbHJTaGFwZVdvcmxkPVQuQ2xyU2hhcGVQcmludGVyPXZvaWQgMCxULkVzc2VudGlhbFNoYXBlcz1ULkNsclNoYXBlQ29sb3JQYWxldHRlPVQuQ2xyU2hhcGVGaXJzdEFpZD1U''@;'; put 'put ''LkNsclNoYXBlQmV0YT1ULkNsclNoYXBlRG90Q2lyY2xlPVQuQ2xyU2hhcGVDaXJjbGU9VC5DbHJTaGFwZUNyb3NzaGFpcnM9VC5DbHJTaGFwZVZvbHVtZT1ULkNsclNoYXBlVGFibGU9VC5DbHJTaGFwZVNub3dmbGFrZT1ULkNsclNoYXBlRnVlbD1ULkNsclNoYXBlRm9ybT1ULkNsclNoYXBl''@;'; put 'put ''RmlzaD1ULkNsclNoYXBlVHJlZT1ULkNsclNoYXBlUmVjeWNsZT1ULkNsclNoYXBlRmlsdGVyT2ZmPVQuQ2xyU2hhcGVGaWxlWmlwPVQuQ2xyU2hhcGVDdXJzb3JIYW5kT3Blbj1ULkNsclNoYXBlQ3Vyc29ySGFuZEdyYWI9VC5DbHJTaGFwZVRyZWVWaWV3PVQuQ2xyU2hhcGVQb3J0cmFpdD1U''@;'; put 'put ''LkNsclNoYXBlUGFzdGU9VC5DbHJTaGFwZUxhbmRzY2FwZT1ULkNsclNoYXBlRXJhc2VyPVQuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPVQuQ2xyU2hhcGVEZXRhaWxzPXZvaWQgMDt2YXIgaz1zZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLHY9c2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxoZT1zZSgKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMv''@;'; put 'put ''aWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpO1QuQ2xyU2hhcGVBZGRUZXh0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMjFIMTNhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMiwxNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMTNBMSwxLDAsMCwwLDEyLDE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNywyN0gxM2ExLDEsMCwwLDAsMCwySDI3YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE1Ljg5LDlhMSwxLDAsMCwwLTEtMUgxMFYz''@;'; put 'put ''LjIxYTEsMSwwLDAsMC0yLDBWOEgyLjg5YTEsMSwwLDAsMCwwLDJIOHY1LjIxYTEsMSwwLDAsMCwyLDBWMTBoNC44OUExLDEsMCwwLDAsMTUuODksOVoiLz4nKSxULkNsclNoYXBlUGluYm9hcmQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMCw2LDMwLDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMz''@;'; put 'put ''LjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDcsN2ExLDEsMCwxLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMi4xLDExLjE5bC43LjVMMjYuNDYsOCwyNSw2LjU2LDIyLjUx''@;'; put 'put ''LDkuMTNjLTItLjg3LTQuMzUuMTQtNS45MiwxLjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MiwxLjY4LTUuOTNsMi41NC0yLjU3TDI3Ljg4LDkuMzgsMjQuMjEsMTMuMWwuNDkuNjlj''@;'; put 'put ''Ljc2LDEsLjI1LDIuMzctLjQxLDMuMzNMMTguNzcsMTEuNkMxOS44NCwxMC44NiwyMS4xNSwxMC41LDIyLjEsMTEuMTlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDEuMzgsMS4zOC00LDRjLTIt''@;'; put 'put ''Ljg3LTQuMzUuMTQtNS45MiwxLjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MSwxLjY4LTUuOTJsNC00LDEuMzgsMS4zOGExLDEsMCwxLDAsMS40MS0xLjQxWiIvPicpLFQuQ2xyU2hh''@;'; put 'put ''cGVBbGFybU9mZj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40''@;'; put 'put ''NywzLjg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS4zMywyMS41NGEuOS45LDAsMCwwLS40MS0xLjJsLTMuMi0xLjU2TDI0Ljg5LDIyQS44OS44OSwwLDAsMCwyNS4zMywyMS41NFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsOC42YS45LjksMCwwLDAtLjkuOXY0LjZsMS44LDEuODFWOS41QS45LjksMCwwLDAsMTgsOC42WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQiIGQ9Ik0xMS40MiwzLjQzYTUuOCw1LjgsMCwwLDAtNS44MS0uODFMOC4zLDUuMzJBMTYsMTYsMCwwLDEsMTEuNDIsMy40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMTgsNGExMy45''@;'; put 'put ''MSwxMy45MSwwLDAsMC04LjMsMi43NWwxLjQyLDEuNDNBMTIsMTIsMCwwLDEsMjcuODIsMjQuOWwxLjQyLDEuNDNBMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMS41Niw0LjIxLDIu''@;'; put 'put ''NzMsNS4zOGE1LjcsNS43LDAsMCwwLC42Nyw2LjFBMTUuNzgsMTUuNzgsMCwwLDEsNS40Niw4LjEyTDYuODgsOS41NUExMy45NCwxMy45NCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjg5LDEzLjg5LDAsMCwwLDE2LjgsMGw0LjE0''@;'; put 'put ''LDQuMTVMMzIsMzEuOSwzLDIuOFpNMjUsMjcuNzJBMTEuODksMTEuODksMCwwLDEsMTgsMzAsMTIsMTIsMCwwLDEsNiwxOGExMS44OSwxMS44OSwwLDAsMSwyLjI5LTdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzEu''@;'; put 'put ''NDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTEuNDIsMy40M2E1''@;'; put 'put ''LjgsNS44LDAsMCwwLTUuNzctLjgyTDguMzMsNS4zQTE2LDE2LDAsMCwxLDExLjQyLDMuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjQuOTIsMjEuOTRsNC4zNCw0LjM2QTE0LDE0LDAsMCwwLDkuNzUsNi43M0wx''@;'; put 'put ''NywxNFY5LjY5YTEsMSwwLDAsMSwyLDBWMTZsMi4zMywyLjM0TDI1LDIwLjFhMSwxLDAsMCwxLC40NywxLjMzQTEsMSwwLDAsMSwyNC45MiwyMS45NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xLjYxLDQuMjEsMi43''@;'; put 'put ''Myw1LjM0YTUuNzMsNS43MywwLDAsMCwuNjcsNi4xNUExNS44OCwxNS44OCwwLDAsMSw1LjQ4LDguMUw2LjkxLDkuNTJBMTMuOTQsMTMuOTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy44OSwxMy44OSwwLDAsMCwxNi44MywwbDQu''@;'; put 'put ''MTYsNC4xN0wzMiwzMS45LDMsMi44WiIvPicpLFQuQ2xyU2hhcGVOZXc9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC41OSwyM2wtNC4wOC01LDQtNC45YTEuODIsMS44MiwwLDAsMCwuMjMtMS45NEExLjkz''@;'; put 'put ''LDEuOTMsMCwwLDAsMzIuOTQsMTBoLTMxQTEuOTEsMS45MSwwLDAsMCwwLDExLjg4VjI0LjEzQTEuOTEsMS45MSwwLDAsMCwxLjk0LDI2SDMzLjA1YTEuOTMsMS45MywwLDAsMCwxLjc3LTEuMDlBMS44MiwxLjgyLDAsMCwwLDM0LjU5LDIzWk0yLDI0VjEySDMyLjc4bC00Ljg0LDUuOTNMMzIu''@;'; put 'put ''ODUsMjRaIi8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHBvaW50cz0iOS4zOSAxOS4zNSA2LjEzIDE1IDUgMTUgNSAyMS4xOCA2LjEzIDIxLjE4IDYuMTMgMTYuODQgOS4zOSAyMS4xOCAxMC41MSAyMS4xOCAxMC41''@;'; put 'put ''MSAxNSA5LjM5IDE1IDkuMzkgMTkuMzUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgcG9pbnRzPSIxMi4xOCAyMS4xOCAxNi44NCAyMS4xOCAxNi44NCAyMC4xNiAxMy4zMSAyMC4xNiAxMy4zMSAxOC41NSAxNi41''@;'; put 'put ''IDE4LjU1IDE2LjUgMTcuNTIgMTMuMzEgMTcuNTIgMTMuMzEgMTYuMDMgMTYuODQgMTYuMDMgMTYuODQgMTUgMTIuMTggMTUgMTIuMTggMjEuMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNC41''@;'; put 'put ''MiAxOS40MyAyMy4wNiAxNSAyMS44NCAxNSAyMC4zNyAxOS40MyAxOS4wNSAxNSAxNy44MiAxNSAxOS43OCAyMS4xOCAyMC44OSAyMS4xOCAyMi40NSAxNi41OSAyNCAyMS4xOCAyNS4xMyAyMS4xOCAyNy4wOCAxNSAyNS44NSAxNSAyNC41MiAxOS40MyIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjExLDI0LjQ5bC0zLjkyLTYuNjIsMy44OC02LjM1QTEsMSwwLDAsMCwzMy4yMiwxMEgyYTIsMiwwLDAsMC0yLDJWMjRhMiwyLDAsMCwwLDIsMkgzMy4yNUExLDEsMCwwLDAsMzQuMTEsMjQuNDlabS0yMy42LTMu''@;'; put 'put ''MzFIOS4zOUw2LjEzLDE2Ljg0djQuMzVINVYxNUg2LjEzbDMuMjcsNC4zNVYxNWgxLjEyWk0xNi44NCwxNkgxMy4zMXYxLjQ5aDMuMnYxaC0zLjJ2MS42MWgzLjUzdjFIMTIuMThWMTVoNC42NVptOC4yOSw1LjE2SDI0bC0xLjU1LTQuNTlMMjAuOSwyMS4xOEgxOS43OGwtMi02LjE4SDE5bDEu''@;'; put 'put ''MzIsNC40M0wyMS44NCwxNWgxLjIybDEuNDYsNC40M0wyNS44NSwxNWgxLjIzWiIvPicpLFQuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44Miww''@;'; put 'put ''LTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0yOC4yOSwyNC42MWExLDEsMCwwLDAtLjMyLjczbDAsNS4z''@;'; put 'put ''NC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMiwxNCw1LjM4LDE0LDEyQTExLjA4LDExLjA4LDAsMCwxLDI4LjI5LDI0LjYxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC42M2ExLDEsMCwwLDAsMS0xVjguNDhhMSwxLDAsMSwwLTIsMFYxOS42MUExLDEsMCwwLDAsMTgsMjAuNjNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIiBjeD0iMTgiIGN5PSIyNC4wNCIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUz''@;'; put 'put ''LDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0xNi45Myw5LjEzYTEuNDEsMS40MSwwLDEsMSwyLjgxLDBWMTguOWExLjQxLDEuNDEsMCwxLDEtMi44MSwwWm0xLjQxLDE3LjM1YTEuODcsMS44NywwLDEs''@;'; put 'put ''MSwxLjg3LTEuODdBMS44NywxLjg3LDAsMCwxLDE4LjM0LDI2LjQ3WiIvPicpLFQuQ2xyU2hhcGVHcmlkVmlldz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LDRINkEyLDIsMCwwLDAsNCw2djhhMiwyLDAs''@;'; put 'put ''MCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMTQsNFpNNiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAsNEgyMmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMjIsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LDIwSDZhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjIyQTIsMiwwLDAsMCwxNCwyMFpNNiwzMFYyMmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLDIwSDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIs''@;'; put 'put ''MCwwLDAsMzAsMjBaTTIyLDMwVjIyaDh2OFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjQiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyMCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHg9IjQiIHk9IjIwIiB3aWR0aD0iMTIi''@;'; put 'put ''IGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPicpLFQuQ2xyU2hhcGVDdXJzb3JBcnJvdz0o''@;'; put 'put ''MCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LjU4LDMyLjMxYTEsMSwwLDAsMS0uOTQtLjY1TDQsNS42NUExLDEsMCwwLDEsNS4yNSw0LjM3bDI2LDkuNjhhMSwxLDAsMCwxLS4wNSwxLjg5bC04LjM2LDIuNTcs''@;'; put 'put ''OC4zLDguM2ExLDEsMCwwLDEsMCwxLjQxbC0zLjI2LDMuMjZhMSwxLDAsMCwxLS43MS4yOWgwYTEsMSwwLDAsMS0uNzEtLjI5bC04LjMzLTguMzMtMi42LDguNDVhMSwxLDAsMCwxLS45My43MVptMy4wOS0xMmExLDEsMCwwLDEsLjcxLjI5bDguNzksOC43OUwyOSwyNy41MWwtOC43Ni04Ljc2''@;'; put 'put ''YTEsMSwwLDAsMSwuNDEtMS42Nmw3LjEzLTIuMkw2LjYsN2w3Ljg5LDIxLjJMMTYuNzEsMjFhMSwxLDAsMCwxLC43MS0uNjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTIuMzYsMy44OCwzQTEsMSwwLDAsMCwy''@;'; put 'put ''LjU5LDQuMjhMMTIsMjkuNDRhMSwxLDAsMCwwLDEuODktLjA1bDIuNjktOC43NSw5LjEyLDguOWExLDEsMCwwLDAsMS40MSwwbDIuMzUtMi4zNWExLDEsMCwwLDAsMC0xLjQxbC05LjA5LTguODZMMjksMTQuMjVBMSwxLDAsMCwwLDI5LDEyLjM2WiIvPicpLFQuQ2xyU2hhcGVDdXJzb3JIYW5k''@;'; put 'put ''PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNzQsMTUuMTlhMTMuNjYsMTMuNjYsMCwwLDAtNi44Ny0zLjgzQTI2LDI2LDAsMCwwLDE4LDEwLjU4VjUuMjhBMy40LDMuNCwwLDAsMCwxNC41LDIsMy40LDMu''@;'; put 'put ''NCwwLDAsMCwxMSw1LjI4djEwTDkuNCwxMy43YTMuNzcsMy43NywwLDAsMC01LjI4LDBBMy42NywzLjY3LDAsMCwwLDMsMTYuMzNhMy42LDMuNiwwLDAsMCwxLDIuNTZsNC42Niw1LjUyYTExLjUzLDExLjUzLDAsMCwwLDEuNDMsNCwxMC4xMiwxMC4xMiwwLDAsMCwyLDIuNTR2MS45MmExLjA3''@;'; put 'put ''LDEuMDcsMCwwLDAsMSwxLjA4SDI3YTEuMDcsMS4wNywwLDAsMCwxLTEuMDh2LTIuN2ExMi44MSwxMi44MSwwLDAsMCwzLTguMzZ2LTZBMSwxLDAsMCwwLDMwLjc0LDE1LjE5Wk0yOSwyMS44NmExMC43MiwxMC43MiwwLDAsMS0yLjYsNy4yNiwxLjExLDEuMTEsMCwwLDAtLjQuNzJWMzJIMTQu''@;'; put 'put ''MTRWMzAuNTJhMSwxLDAsMCwwLS40NC0uODMsNy4yNiw3LjI2LDAsMCwxLTEuODItMi4yMyw5LjE0LDkuMTQsMCwwLDEtMS4yLTMuNTIsMSwxLDAsMCwwLS4yMy0uNTlMNS41MywxNy41M2ExLjcsMS43LDAsMCwxLDAtMi40MiwxLjc2LDEuNzYsMCwwLDEsMi40NywwbDMsM3YzLjE0bDItMVY1''@;'; put 'put ''LjI4QTEuNDIsMS40MiwwLDAsMSwxNC41LDQsMS40MiwxLjQyLDAsMCwxLDE2LDUuMjh2MTEuOGwyLC40M1YxMi41OWEyNC4yNywyNC4yNywwLDAsMSwyLjUxLjE4VjE4bDEuNi4zNVYxM2MuNDEuMDguODMuMTcsMS4yNi4yOGExNC44OCwxNC44OCwwLDAsMSwxLjUzLjQ5djUuMTVsMS42LjM1''@;'; put 'put ''VjE0LjVBMTEuMDYsMTEuMDYsMCwwLDEsMjksMTYuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjguNjksMTQuMzN2NC44M2wtMi0uNDNWMTMuMjRhMTYuMTksMTYuMTksMCwwLDAtMi4zMy0uODR2NS44MmwtMi0u''@;'; put 'put ''NDNWMTJjLTEuMS0uMTgtMi4xOC0uMy0zLjA4LS4zNnY1LjUxbC0yLS40M1YxMS40OGgwVjQuMzRhMi41MywyLjUzLDAsMCwwLTIuNi0yLjQzLDIuNTMsMi41MywwLDAsMC0yLjYsMi40M1YxNy4yN2gwdjIuNTlsLTIsMVYxNS42TDcuNzUsMTMuMjFhMi44MywyLjgzLDAsMCwwLTQsMCwyLjkz''@;'; put 'put ''LDIuOTMsMCwwLDAsMCw0LjA5bDYsNy4xYTEwLjgyLDEwLjgyLDAsMCwwLDEuMzksNC4yMiw4LjQyLDguNDIsMCwwLDAsMi4yMSwyLjczdjIuNTZIMjcuNzlWMzAuNjJhMTIuNTQsMTIuNTQsMCwwLDAsMy04LjV2LTZBMTAsMTAsMCwwLDAsMjguNjksMTQuMzNaIi8+JyksVC5DbHJTaGFwZUN1''@;'; put 'put ''cnNvckhhbmRDbGljaz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjQsMTcuNmMtMS44LTEuOS00LjItMy4yLTYuNy0zLjdjLTEuMS0wLjMtMi4yLTAuNS0zLjMtMC42YzIuOC0zLjMsMi4zLTguMy0xLTEx''@;'; put 'put ''LjFzLTguMy0yLjMtMTEuMSwxcy0yLjMsOC4zLDEsMTEuMVxuICAgICAgICAgICAgICAgICAgICBjMC42LDAuNSwxLjIsMC45LDEuOCwxLjF2Mi4ybC0xLjYtMS41Yy0xLjQtMS40LTMuNy0xLjQtNS4yLDBjLTEuNCwxLjQtMS41LDMuNi0wLjEsNWw0LjYsNS40YzAuMiwxLjQsMC43LDIuNywx''@;'; put 'put ''LjQsMy45XG4gICAgICAgICAgICAgICAgICAgIGMwLjUsMC45LDEuMiwxLjgsMS45LDIuNXYxLjljMCwwLjYsMC40LDEsMSwxaDEzLjZjMC41LDAsMS0wLjUsMS0xdi0yLjZjMS45LTIuMywyLjktNS4yLDIuOS04LjF2LTUuOFxuICAgICAgICAgICAgICAgICAgICBDMzAuNywxNy45LDMwLjYs''@;'; put 'put ''MTcuNywzMC40LDE3LjZ6IE04LjQsOC4yYzAtMy4zLDIuNy01LjksNi01LjhjMy4zLDAsNS45LDIuNyw1LjgsNmMwLDEuOC0wLjgsMy40LTIuMiw0LjVWNy45XG4gICAgICAgICAgICAgICAgICAgIGMtMC4xLTEuOC0xLjYtMy4yLTMuNC0zLjJjLTEuOC0wLjEtMy40LDEuNC0zLjQsMy4ydjUu''@;'; put 'put ''MkM5LjUsMTIuMSw4LjUsMTAuMiw4LjQsOC4yTDguNCw4LjJ6IE0yOC43LDI0YzAuMSwyLjYtMC44LDUuMS0yLjUsNy4xXG4gICAgICAgICAgICAgICAgICAgIGMtMC4yLDAuMi0wLjQsMC40LTAuNCwwLjd2Mi4xSDE0LjJ2LTEuNGMwLTAuMy0wLjItMC42LTAuNC0wLjhjLTAuNy0wLjYtMS4z''@;'; put 'put ''LTEuMy0xLjgtMi4yYy0wLjYtMS0xLTIuMi0xLjItMy40XG4gICAgICAgICAgICAgICAgICAgIGMwLTAuMi0wLjEtMC40LTAuMi0wLjZsLTQuOC01LjdjLTAuMy0wLjMtMC41LTAuNy0wLjUtMS4yYzAtMC40LDAuMi0wLjksMC41LTEuMmMwLjctMC42LDEuNy0wLjYsMi40LDBsMi45LDIuOXYz''@;'; put 'put ''bDEuOS0xVjcuOVxuICAgICAgICAgICAgICAgICAgICBjMC4xLTAuNywwLjctMS4zLDEuNS0xLjJjMC43LDAsMS40LDAuNSwxLjQsMS4ydjExLjVsMiwwLjR2LTQuNmMwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMwLjcsMCwxLjQsMC4xLDIuMSwwLjJ2NS4xbDEuNiwwLjN2LTUuMlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgICAgICBsMS4yLDAuM2MwLjUsMC4xLDEsMC4zLDEuNSwwLjV2NWwxLjYsMC4zdi00LjZjMC45LDAuNCwxLjcsMSwyLjQsMS43TDI4LjcsMjR6Ii8+JyksVC5DbHJTaGFwZVJlc2l6ZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgZD0iTTE5LDRhMSwxLDAsMCwwLDAsMmg5LjU5bC05LjI1LDkuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMCw3LjQxVjE3YTEsMSwwLDAsMCwyLDBWNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiBkPSJNNCwxOWExLDEsMCwwLDEsMiwwdjkuNTlsOS4yNS05LjI1YTEsMSwwLDEsMSwxLjQxLDEuNDFMNy40MSwzMEgxN2ExLDEsMCwwLDEsMCwySDRaIi8+JyksVC5DbHJTaGFwZU9iamVjdHM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0xNi4wOCwxNC45YTEwLjQxLDEwLjQxLDAsMCwxLDEuODctLjcxbC00LTEwLjc3YTIsMiwwLDAsMC0zLjc1LDBMMiwyNS4yNkEyLDIsMCwwLDAsMy45MiwyOGg2Ljk0YTEwLDEwLDAsMCwxLS41Mi0ySDMuOTJMMTIuMDYsNC4xMloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsOUgyMmEyLDIsMCwwLDAtMiwydjIuODVjLjIzLDAsLjQ2LDAsLjY5LDBBMTAuNTEsMTAuNTEsMCwwLDEsMjIsMTMuOVYxMUgzMlYyMUgzMC42NWExMC40MiwxMC40MiwwLDAsMSwuNDUsMkgzMmEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMiw5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMC42OSwxNS44MWE4LjUsOC41LDAsMSwwLDguNSw4LjVBOC41MSw4LjUxLDAsMCwwLDIwLjY5LDE1LjgxWm0w''@;'; put 'put ''LDE1YTYuNSw2LjUsMCwxLDEsNi41LTYuNUE2LjUxLDYuNTEsMCwwLDEsMjAuNjksMzAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAuNjUsMjQuNDRhOS41MSw5LjUxLDAsMCwxLDcuMDYtOS4xN0wxMywzYTEs''@;'; put 'put ''MSwwLDAsMC0xLjg3LDBMMi4wNywyNi41NkExLDEsMCwwLDAsMywyNy45Mmg4LjMyQTkuNDQsOS40NCwwLDAsMSwxMC42NSwyNC40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMiwxMEgyMGExLDEsMCwwLDAtMSwx''@;'; put 'put ''djRhOS40Myw5LjQzLDAsMCwxLDEwLjYzLDlIMzJhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzIsMTBaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGN4PSIyMC4xNSIgY3k9IjI0LjQ0IiByPSI3LjUiLz4nKSxULkNs''@;'; put 'put ''clNoYXBlQm9vaz0oMCx2LmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiBkPSJNMjksOEg5Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWExLDEsMCwwLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVY5LjI1czAtLjA2LDAtLjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4Wk0yOCwzMkg5Ljg2QTIsMiwwLDAsMSw4LDMwVjkuNTVBMy42MywzLjYzLDAsMCwwLDkuODYsMTBIMjhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiB4PSIxMCIgeT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5''@;'; put 'put ''Ljg2LDRIMjlhMSwxLDAsMSwwLDAtMkg5Ljg2QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEsMSwwLDAsMCwwLC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjks''@;'; put 'put ''OFoiLz4nKSxULkNsclNoYXBlQXN0ZXJpc2s9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00''@;'; put 'put ''LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMs''@;'; put 'put ''MCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaTTI4LjI0LDI0YTEsMSwwLDAsMS0xLjM3LjM2TDE5LDE5Ljc1VjI5YTEsMSwwLDAsMS0yLDBWMTkuNzVMOS4xMywyNC4zNmExLDEsMCwwLDEtMS0xLjcyTDE2LDE4bC03LjktNC42NGExLDEsMCwxLDEsMS0xLjcy''@;'; put 'put ''TDE3LDE2LjI1VjdhMSwxLDAsMCwxLDIsMHY5LjI1bDcuODctNC42MmExLDEsMCwwLDEsMSwxLjcyTDIwLDE4bDcuOSw0LjY0QTEsMSwwLDAsMSwyOC4yNCwyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC44OSwy''@;'; put 'put ''MC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQs''@;'; put 'put ''MS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaIi8+JyksVC5DbHJTaGFwZVNjaXNzb3JzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgZD0iTTI0LjA2LDE4LjE4bDkuNjEtOC43N2ExLDEsMCwwLDAtLjA5LTEuNTVsLTIuMjQtMS42YTMuNTcsMy41NywwLDAsMC00LjI4LjEyTDE1Ljg4LDE1LjNsLTMuMjYtMi41MmE1LjQ1LDUuNDUsMCwxLDAtMSwx''@;'; put 'put ''Ljc3bDIuNjIsMkwxMCwyMGE1LjQ4LDUuNDgsMCwxLDAsMS41OSwxLjI5TDI4LjMsNy45NGExLjU3LDEuNTcsMCwwLDEsMS44OC0uMDVsMS4yMy44OEwyMS4xLDE4LjE5bDEwLjMxLDkuNC0xLjIzLjg4YTEuNTcsMS41NywwLDAsMS0xLjg4LS4wNWwtOS44MS03Ljg1TDE3LDIxLjkzbDEwLjA2''@;'; put 'put ''LDhhMy41NywzLjU3LDAsMCwwLDQuMjkuMTJsMi4yNC0xLjZhMSwxLDAsMCwwLC4wOS0xLjU1Wk03LjQ1LDE0LjU0YTMuNDYsMy40NiwwLDEsMSwzLjQ1LTMuNDZBMy40NiwzLjQ2LDAsMCwxLDcuNDUsMTQuNTRabTAsMTMuNzJBMy40NiwzLjQ2LDAsMSwxLDEwLjksMjQuOCwzLjQ2LDMuNDYs''@;'; put 'put ''MCwwLDEsNy40NSwyOC4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy44MSw4LjEzLDMxLjYzLDYuNDhhMS45MiwxLjkyLDAsMCwwLTIuMzYsMEwxMCwyMi4wNmE1LjQ2LDUuNDYsMCwxLDAsMiwxLjgxbDMuOS0z''@;'; put 'put ''LjEyTDI5LjI3LDMxLjUyYTEuOTIsMS45MiwwLDAsMCwyLjM2LDBsMi4xOC0xLjY0TDIwLjk0LDE5Wk03LjQ1LDI5Ljc1YTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NywyLjg3LDAsMCwxLDcuNDUsMjkuNzVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTQuMywxNS4yNCwxMiwxMy4zOGE1LjQ2LDUuNDYsMCwxLDAtMiwxLjgxTDEyLjE2LDE3Wm0tNi44NS0yYTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NiwyLjg2LDAsMCwxLDcuNDUsMTMuMjNaIi8+JyksVC5DbHJTaGFwZUJ1Zz0oMCx2LmNs''@;'; put 'put ''ckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMjMuNTYiIGN5PSIxNy43NCIgcj0iMS45NSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjIy''@;'; put 'put ''LjQyIiBjeT0iMjUuODgiIHI9IjEuNTgiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGN4PSIxMi44NiIgY3k9IjE3Ljc0IiByPSIxLjk1Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiBjeD0iMTMuOTkiIGN5PSIyNS44OCIgcj0iMS41OCIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0zMC44MywyMEgyOWExOS4yOSwxOS4yOSwwLDAsMC0xLjE4LTUuNzNsMS40''@;'; put 'put ''Ni0uNzlhMSwxLDAsMCwwLS45NS0xLjc2bC0zLDEuNjRBMTcuNjUsMTcuNjUsMCwwLDEsMjcsMjAuNzJDMjcsMjcsMjMuOCwzMS4yMywxOC44LDMxLjYyVjE1SDE3LjJWMzEuNjJDMTIuMjIsMzEuMjEsOSwyNyw5LDIwLjcyYTE3Ljc0LDE3Ljc0LDAsMCwxLDEuNzMtNy4zNEw3LjcsMTEuNzJh''@;'; put 'put ''MSwxLDAsMCwwLS45NSwxLjc2bDEuNS44QTE5LjM4LDE5LjM4LDAsMCwwLDcuMDcsMjBINS4xN2ExLDEsMCwwLDAsMCwySDcuMWExNC42MiwxNC42MiwwLDAsMCwxLjY2LDYuMTdMNi44NywyOS40OUExLDEsMCwxLDAsOCwzMS4xMmwxLjg0LTEuMjlBMTAuMzgsMTAuMzgsMCwwLDAsMTgsMzMu''@;'; put 'put ''NjZhMTAuMzgsMTAuMzgsMCwwLDAsOC4xNC0zLjgxTDI4LDMxLjEyYTEsMSwwLDEsMCwxLjE1LTEuNjRsLTEuODYtMS4zQTE0LjYxLDE0LjYxLDAsMCwwLDI4Ljk0LDIyaDEuODlhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC02IiBkPSJNMTEuNTEsNS4zNmExLjY3LDEuNjcsMCwwLDAsMS4wNy0uNTFBMy4yMSwzLjIxLDAsMCwxLDEzLjc2LDZhMTYuMzgsMTYuMzgsMCwwLDAtMi42NSwyLjg5LDIsMiwwLDAsMCwxLjYxLDMuMTlIMjMuMzJBMiwyLDAsMCwwLDI1LjEsMTFhMiwyLDAsMCwwLS4x''@;'; put 'put ''Ny0yLjFBMTYuMzQsMTYuMzQsMCwwLDAsMjIuMjUsNmEzLjIxLDMuMjEsMCwwLDEsMS4xNy0xLjExQTEuNjgsMS42OCwwLDEsMCwyMywzLjI3LDQuNzcsNC43NywwLDAsMCwyMSw1YTUuODEsNS44MSwwLDAsMC0yLjkzLTEsNS44Myw1LjgzLDAsMCwwLTMsMUE0Ljc3LDQuNzcsMCwwLDAsMTMs''@;'; put 'put ''My4yN2ExLjY4LDEuNjgsMCwxLDAtMS40OSwyLjA5Wk0xOCw2LjA3YzEuNDUsMCwzLjUzLDEuNTcsNS4zMSw0aDBsLTEwLjYsMEMxNC40OSw3LjYzLDE2LjU2LDYuMDcsMTgsNi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0zMC44MywyMEgyOWExOS4yOSwxOS4yOSwwLDAsMC0xLjE4LTUuNzNsMS40Ni0uNzlhMSwxLDAsMCwwLS45NS0xLjc2bC0zLDEuMjhIMTAuNzhMNy43LDExLjcyYTEsMSwwLDAsMC0uOTUsMS43NmwxLjUuOEExOS4zOCwxOS4zOCwwLDAsMCw3LjA3LDIwSDUuMTdhMSwxLDAsMCwwLDAs''@;'; put 'put ''Mkg3LjFhMTQuNjIsMTQuNjIsMCwwLDAsMS42Niw2LjE3TDYuODcsMjkuNDlBMSwxLDAsMSwwLDgsMzEuMTJsMS44NC0xLjI5QTEwLjI5LDEwLjI5LDAsMCwwLDE3LDMzLjZWMTVoMlYzMy42YTEwLjI5LDEwLjI5LDAsMCwwLDcuMTYtMy43NUwyOCwzMS4xMmExLDEsMCwxLDAsMS4xNS0xLjY0''@;'; put 'put ''bC0xLjg2LTEuM0ExNC42MSwxNC42MSwwLDAsMCwyOC45NCwyMmgxLjg5YTEsMSwwLDAsMCwwLTJaTTEwLjkxLDE3Ljc0YTEuOTUsMS45NSwwLDEsMSwxLjk1LDEuOTVBMS45NSwxLjk1LDAsMCwxLDEwLjkxLDE3Ljc0Wk0xNCwyNy40NmExLjU4LDEuNTgsMCwxLDEsMS41OC0xLjU4QTEuNTgs''@;'; put 'put ''MS41OCwwLDAsMSwxNCwyNy40NlptOC40MywwQTEuNTgsMS41OCwwLDEsMSwyNCwyNS44OCwxLjU4LDEuNTgsMCwwLDEsMjIuNDIsMjcuNDZabTEuMTMtNy43N2ExLjk1LDEuOTUsMCwxLDEsMS45NS0xLjk1QTEuOTUsMS45NSwwLDAsMSwyMy41NiwxOS42OVoiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMS4yMyw1LjI2YTEuNjcsMS42NywwLDAsMCwuNTQtLjMyLDUuOSw1LjksMCwwLDEsLjg5LjU4LDcuNDQsNy40NCwwLDAsMSwuOTUuOTRBMTguNDgsMTguNDgsMCwwLDAsMTAuNzksOS43Yy0uNC41Ny4wOSwx''@;'; put 'put ''LjI4Ljg2LDEuMjhIMjQuNDRjLjc3LDAsMS4yNi0uNzEuODYtMS4yOGExOC4zOCwxOC4zOCwwLDAsMC0yLjg4LTMuMjgsNy4yOCw3LjI4LDAsMCwxLC45MS0uOSw1LjksNS45LDAsMCwxLC44OS0uNTgsMS42OSwxLjY5LDAsMSwwLS41Ni0xLjUxLDcuNDksNy40OSwwLDAsMC0xLjMyLjgzLDku''@;'; put 'put ''MDYsOS4wNiwwLDAsMC0xLjE5LDEuMThBNS44NSw1Ljg1LDAsMCwwLDE4LDQuM2E1LjkxLDUuOTEsMCwwLDAtMy4xNywxLjE5LDkuMiw5LjIsMCwwLDAtMS4yMi0xLjIxLDcuNDksNy40OSwwLDAsMC0xLjMyLS44MywxLjY4LDEuNjgsMCwxLDAtMS4xMSwxLjgzWiIvPicpLFQuQ2xyU2hhcGVU''@;'; put 'put ''aGVybW9tZXRlcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LDIzLjE3VjExLjQ2SDE3VjIzLjJhMywzLDAsMSwwLDIsMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMTVhMSwxLDAsMCwwLDAtMkgyMy45MlYxMUgyNmExLDEsMCwwLDAsMC0ySDIzLjkyVjhhNiw2LDAsMCwwLTEyLDBWMjAuODFhOCw4LDAsMSwwLDEyLS4yVjE5SDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTVaTTI0LDI2YTYsNiwwLDEsMS0xMC4z''@;'; put 'put ''Ni00LjEybC4yNy0uMjlWOGE0LDQsMCwwLDEsOCwwVjIxLjQ0bC4zLjI5QTYsNiwwLDAsMSwyNCwyNloiLz4nKSxULkNsclNoYXBlUGVuY2lsPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuODcsOC4zMiwy''@;'; put 'put ''OCwyLjQyYTIuMDcsMi4wNywwLDAsMC0yLjkyLDBMNC4yNywyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQsMCwwLDAsLjQzLDBMMTMuMDksMzIsMzMuODcsMTEuMjRBMi4wNywyLjA3LDAsMCwwLDMzLjg3LDguMzJaTTEyLjA5LDMwLjIsNC4zMiwzMS44M2wx''@;'; put 'put ''Ljc3LTcuNjJMMjEuNjYsOC43bDYsNlpNMjksMTMuMjVsLTYtNiwzLjQ4LTMuNDYsNS45LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTQuMjIsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUs''@;'; put 'put ''Mi4xNCwyLjE0LDAsMCwwLC40MywwTDEzLDMyLDI4Ljg0LDE2LjIyLDIwLDcuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODIsOC4zMmwtNS45LTUuOWEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDIxLjcy''@;'; put 'put ''LDUuN2w4LjgzLDguODMsMy4yOC0zLjI4QTIuMDcsMi4wNywwLDAsMCwzMy44Miw4LjMyWiIvPicpLFQuQ2xyU2hhcGVOb3RlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCwzMEg2VjhIMTkuMjJsMi0ySDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTVsLTIsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjUzLDUuODQsMzAuMTYsMi40N2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwTDE0LjE3LDE2LjI2bC0xLjExLDQuODFBMS42MSwxLjYxLDAs''@;'; put 'put ''MCwwLDE0LjYzLDIzLDEuNjksMS42OSwwLDAsMCwxNSwyM2w0Ljg1LTEuMDdMMzMuNTMsOC4xMkExLjYxLDEuNjEsMCwwLDAsMzMuNTMsNS44NFpNMTguODEsMjAuMDhsLTMuNjYuODFMMTYsMTcuMjYsMjYuMzIsNi44N2wyLjgyLDIuODJaTTMwLjI3LDguNTYsMjcuNDUsNS43NCwyOSw0LjE2''@;'; put 'put ''LDMxLjg0LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2LjQsMjkuMywyLjdhMS43MSwxLjcxLDAsMCwwLTIuMzYsMEwyMy42NSw2SDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTEuNzZsMy0zQTEuNjcsMS42NywwLDAsMCwzMyw2LjRaTTE4LjgzLDIwLjEzbC00LjE5LjkzLDEtNC4xNSw5LjU1LTkuNTcsMy4yMywzLjIzWk0yOS41LDkuNDMsMjYuMjcsNi4ybDEuODUtMS44NSwzLjIzLDMuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVSZWZyZXNoPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjIuNCwxMS42NWExLjA5LDEuMDksMCwwLDAsMS4wOSwxLjA5SDM0LjQzVjEuODFhMS4wOSwxLjA5LDAs''@;'; put 'put ''MSwwLTIuMTksMFY4Ljk1YTE2LjQxLDE2LjQxLDAsMSwwLDEuNDcsMTUuODYsMS4xMiwxLjEyLDAsMCwwLTIuMDUtLjksMTQuMTgsMTQuMTgsMCwxLDEtMS4wNS0xMy4zNkgyMy41QTEuMDksMS4wOSwwLDAsMCwyMi40LDExLjY1WiIvPicpLFQuQ2xyU2hhcGVTeW5jPSgwLHYuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuODQsMTUuNzJhMSwxLDAsMSwwLTIsLjI5QTEzLjE1LDEzLjE1LDAsMCwxLDMxLDE3Ljk0LDEzLDEzLDAsMCwxLDguNywyN2g1LjM2YTEsMSwwLDAsMCwwLTJoLTl2OWExLDEsMCwxLDAs''@;'; put 'put ''MiwwVjI4LjJBMTUsMTUsMCwwLDAsMzIuODQsMTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC4wNiwxQTEuMDUsMS4wNSwwLDAsMCwyOSwyVjcuODNBMTQuOTQsMTQuOTQsMCwwLDAsMywxNy45''@;'; put 'put ''NGExNS4xNiwxNS4xNiwwLDAsMCwuMiwyLjQ4LDEsMSwwLDAsMCwxLC44NGguMTZhMSwxLDAsMCwwLC44Mi0xLjE1QTEzLjIzLDEzLjIzLDAsMCwxLDUsMTcuOTRhMTMsMTMsMCwwLDEsMTMtMTNBMTIuODcsMTIuODcsMCwwLDEsMjcuNDQsOUgyMi4wNmExLDEsMCwwLDAsMCwySDMxVjJBMSwx''@;'; put 'put ''LDAsMCwwLDMwLjA2LDFaIi8+JyksVC5DbHJTaGFwZVZpZXdMaXN0PSgwLHYuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEwSDMxYTEsMSwwLDAsMCwwLTJIN2ExLDEsMCwwLDAsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyIiB5PSIx''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzEsMTRIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjIiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0zMSwyMEg3YTEsMSwwLDAsMCww''@;'; put 'put ''LDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMiIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgZD0iTTMxLDI2SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPicpLFQuQ2xyU2hhcGVWaWV3Q2FyZHM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwx''@;'; put 'put ''N0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LDMwSDRh''@;'; put 'put ''MiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMyLDMwSDIxYTIs''@;'; put 'put ''MiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPicpLFQuQ2xyU2hhcGVMaWdodGJ1bGI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgs''@;'; put 'put ''MTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoMkExOC4xNywxOC4xNywwLDAsMCwxMywyMi40NGExOC40NiwxOC40NiwwLDAsMC0yLjIyLTMuOTIsMTUuNzksMTUuNzksMCwwLDEt''@;'; put 'put ''MS0xLjU0QTguNjQsOC42NCwwLDAsMSw5LDEzLjIzYTksOSwwLDAsMSwxOC4wNywwQTguNjQsOC42NCwwLDAsMSwyNi4yMSwxN2ExNS43OSwxNS43OSwwLDAsMS0xLDEuNTRBMTguNDYsMTguNDYsMCwwLDAsMjMsMjIuNDRhMTguMTcsMTguMTcsMCwwLDAtLjcxLDQuNzFoMmExNi4xOSwxNi4x''@;'; put 'put ''OSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjgsMTAuNjgsMCwwLDAsMS00LjYzQTExLDExLDAsMCwwLDE4LDIuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE4LjYzLDE1LjUxYS44LjgsMCwwLDAtMS4xMywwbC0zLDMsMi44NiwzLjEzdjUuNTRIMTlWMjFsLTIuMjQtMi40NSwxLjg5LTEuODlBLjguOCwwLDAsMCwxOC42MywxNS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSww''@;'; put 'put ''LDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjMyLDEwLjg5bC0yLjczLDIuNzNhLjguOCwwLDAsMCwxLjEzLDEuMTNMMTguNDUsMTJhLjguOCwwLDEsMC0xLjEz''@;'; put 'put ''LTEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDI3LjE1VjIxbC0yLjI0LTIuNDUsMS44OS0xLjg5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0zLDMsMi44NiwzLjEzdjUuNTRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0xNS43MiwxNC43NSwxOC40NSwxMmEuOC44LDAsMSwwLTEuMTMtMS4xM2wtMi43MywyLjczYS44LjgsMCwwLDAsMS4xMywxLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjcsMTIuODhjMCwuMTIsMCwuMjMsMCwuMzVBOC42NCw4LjY0LDAsMCwxLDI2LjIxLDE3YTE1Ljc5LDE1Ljc5LDAsMCwxLTEsMS41NEExOC40NiwxOC40NiwwLDAsMCwyMywyMi40NGExOC4xNywxOC4xNywwLDAsMC0uNzEsNC43MWgyYTE2LjE5LDE2LjE5LDAsMCwx''@;'; put 'put ''LC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy40NSw3LjQ1LDAsMCwxLDI3LDEyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNzEsMjcuMTVBMTguMTcsMTguMTcsMCwwLDAsMTMsMjIuNDRhMTguNDYsMTguNDYsMCwwLDAtMi4yMi0zLjkyLDE1Ljc5LDE1Ljc5LDAsMCwxLTEtMS41NEE4LjY0LDguNjQsMCwwLDEsOSwxMy4yMyw5LDksMCwwLDEsMjIuNTMsNS40N2E3LjQ1''@;'; put 'put ''LDcuNDUsMCwwLDEsLjQzLTIsMTEsMTEsMCwwLDAtMTYsOS44LDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44Ljgs''@;'; put 'put ''MCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMi4yNWExMSwxMSwwLDAsMC0xMSwxMSwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAs''@;'; put 'put ''MCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEzbC0xLjg5LDEuODlMMTksMjF2Ni4xN0gyNC4zYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSww''@;'; put 'put ''LDAsMCwyOCwxNy44NmExMC42OCwxMC42OCwwLDAsMCwxLTQuNjNBMTEsMTEsMCwwLDAsMTgsMi4yNVpNMTguNDUsMTJsLTIuNzMsMi43M2EuOC44LDAsMSwxLTEuMTMtMS4xM2wyLjczLTIuNzNBLjguOCwwLDEsMSwxOC40NSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTIyLDMyLjE1SDE0YS44LjgsMCwxLDAsMCwxLjZIMjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2QTcuNDcsNy40NywwLDAsMSwyMywz''@;'; put 'put ''LjQ0YTExLDExLDAsMCwwLTE2LDkuOCwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwuNTksNGg1LjY5VjIxLjYxbC0yLjg2LTMuMTMsMy0zYS44LjgsMCwwLDEsMS4xMywxLjEz''@;'; put 'put ''bC0xLjg5LDEuODlMMTksMjF2Ni4xN0gyNC4zYTE2LjE5LDE2LjE5LDAsMCwxLC41OS00LDE3LDE3LDAsMCwxLDItMy40N0ExNi4zMSwxNi4zMSwwLDAsMCwyOCwxNy44NmExMC42MywxMC42MywwLDAsMCwxLTQuNDNBNy41LDcuNSwwLDAsMSwyMi41LDZabS00LDYtMi43MywyLjczYS44Ljgs''@;'; put 'put ''MCwxLDEtMS4xMy0xLjEzbDIuNzMtMi43M0EuOC44LDAsMSwxLDE4LjQ1LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxULkNsclNoYXBlRG93bmxvYWQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJI''@;'; put 'put ''MzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDgu''@;'; put 'put ''ODEsMTcuNDZhMSwxLDAsMSwwLTEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2''@;'; put 'put ''YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwyNS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmExLDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksVC5DbHJTaGFwZVVwbG9hZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44''@;'; put 'put ''MSwxNVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMxLDMxSDVjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoMjZjMC42LDAsMS0wLjQsMS0xUzMxLjYsMzEsMzEsMzF6''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik04LjgsMTVMMTcsNi44djIwLjZjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMVY2LjhMMjAuMSw4bDEtMS44TDE4LDNMNy40LDEz''@;'; put 'put ''LjZDNywxNCw2LjksMTQuNiw3LjIsMTVzMSwwLjUsMS40LDAuMUM4LjcsMTUuMSw4LjgsMTUuMSw4LjgsMTV6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9''@;'; put 'put ''Ik0yNi45LDEuMUwyMS4xLDExYy0wLjQsMC42LTAuMiwxLjQsMC4zLDEuOGMwLjIsMC4yLDAuNSwwLjIsMC44LDAuMmgxMS41YzAuNywwLDEuMy0wLjUsMS4zLTEuMmMwLTAuMy0wLjEtMC41LTAuMi0wLjhsLTUuNy05LjljLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC44LDI3LDEs''@;'; put 'put ''MjYuOSwxLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNOC44MSwxNSwxNyw2LjgzVjI3LjQ4YTEsMSwwLDAsMCwyLDBWNi44M0wyNy4xOSwxNWExLDEsMCwwLDAsMS40MS0xLjQxTDE4LDMsNy4zOSwxMy42MUExLDEsMCwxLDAsOC44MSwx''@;'; put 'put ''NVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFQuQ2xyU2hhcGVMb2NrPSgwLHYuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMDksMjAuNTlBMi40MSwyLjQxLDAsMCwwLDE3LDI1LjE0VjI4aDJWMjUuMjNhMi40MSwyLjQxLDAsMCwwLS45MS00LjY0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAsMC04LTguMzYsOC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTEyLDEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIs''@;'; put 'put ''MCwwLDEsNiw2LjM2VjE1SDEyWk05LDMyVjE3SDI3VjMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYxNVpNMTksMjUuMjNWMjhIMTdWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVpNMjQsMTVIMTJWMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYuMzZaIi8+JyksVC5DbHJTaGFwZVVubG9jaz0oMCx2LmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEyLDI1LjE0VjI4aDJWMjUuMjNhMi40MiwyLjQyLDAsMSwwLTItLjA5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIs''@;'; put 'put ''MCwwLDAsMjYsMlpNMjIsMTdWMzJINFYxN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgy''@;'; put 'put ''MFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMTQsMjUuMjNWMjhIMTJWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVoiLz4nKSxULkNsclNoYXBlVXNlcnM9KDAsdi5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy45LDE3LjNjMi43LDAsNC44LTIuMiw0LjgtNC45YzAtMi43LTIuMi00LjgtNC45LTQuOGMtMi43LDAtNC44LDIuMi00LjgsNC44QzEzLDE1LjEsMTUuMiwxNy4zLDE3LjksMTcu''@;'; put 'put ''M3ogTTE3LjgsOS42QzE3LjksOS42LDE3LjksOS42LDE3LjgsOS42YzEuNiwwLDIuOSwxLjMsMi45LDIuOXMtMS4zLDIuOC0yLjksMi44Yy0xLjYsMC0yLjgtMS4zLTIuOC0yLjhDMTUsMTAuOSwxNi4zLDkuNiwxNy44LDkuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjcsMTYuN2MtMS45LTEuNy00LjQtMi42LTctMi41Yy0wLjMsMC0wLjUsMC0wLjgsMGMtMC4yLDAuOC0wLjUsMS41LTAuOSwyLjFjMC42LTAuMSwxLjEtMC4xLDEuNy0wLjFjMS45LTAuMSwzLjgsMC41LDUuMywxLjZWMjVo''@;'; put 'put ''MnYtOEwzMi43LDE2Ljd6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMy40LDcuOGMwLjUtMS4yLDEuOS0xLjgsMy4yLTEuM2MxLjIsMC41LDEuOCwxLjksMS4zLDMuMmMtMC40LDAuOS0xLjMsMS41LTIu''@;'; put 'put ''MiwxLjVjLTAuMiwwLTAuNSwwLTAuNy0wLjFjMC4xLDAuNSwwLjEsMSwwLjEsMS40YzAsMC4yLDAsMC40LDAsMC42YzAuMiwwLDAuNCwwLjEsMC42LDAuMWMyLjUsMCw0LjUtMiw0LjUtNC40YzAtMi41LTItNC41LTQuNC00LjVjLTEuNiwwLTMsMC44LTMuOCwyLjJDMjIuNSw2LjgsMjMsNy4y''@;'; put 'put ''LDIzLjQsNy44eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTIsMTYuNGMtMC40LTAuNi0wLjctMS4zLTAuOS0yLjFjLTAuMywwLTAuNSwwLTAuOCwwYy0yLjYtMC4xLTUuMSwwLjgtNywyLjRMMywxN3Y4''@;'; put 'put ''aDJ2LTcuMmMxLjYtMS4xLDMuNC0xLjcsNS4zLTEuNkMxMC45LDE2LjIsMTEuNSwxNi4zLDEyLDE2LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xMC4zLDEzLjFjMC4yLDAsMC40LDAsMC42LTAuMWMw''@;'; put 'put ''LTAuMiwwLTAuNCwwLTAuNmMwLTAuNSwwLTEsMC4xLTEuNGMtMC4yLDAuMS0wLjUsMC4xLTAuNywwLjFjLTEuMywwLTIuNC0xLjEtMi40LTIuNGMwLTEuMywxLjEtMi40LDIuNC0yLjRjMSwwLDEuOSwwLjYsMi4zLDEuNWMwLjQtMC41LDEtMSwxLjUtMS40Yy0xLjMtMi4xLTQtMi44LTYuMS0x''@;'; put 'put ''LjVjLTIuMSwxLjMtMi44LDQtMS41LDYuMUM3LjMsMTIuMyw4LjcsMTMuMSwxMC4zLDEzLjF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0yNi4xLDIyLjdsLTAuMi0wLjNjLTItMi4yLTQuOC0zLjUtNy44''@;'; put 'put ''LTMuNGMtMy0wLjEtNS45LDEuMi03LjksMy40TDEwLDIyLjd2Ny42YzAsMC45LDAuNywxLjcsMS43LDEuN2MwLDAsMCwwLDAsMGgxMi44YzAuOSwwLDEuNy0wLjgsMS43LTEuN2MwLDAsMCwwLDAsMFYyMi43eiBNMjQuMSwzMEgxMnYtNi42YzEuNi0xLjYsMy44LTIuNCw2LjEtMi40YzIuMi0w''@;'; put 'put ''LjEsNC40LDAuOCw2LDIuNFYzMHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTExLjA5LDE0LjU3Yy4xLDAsLjIsMCwuMzEsMGE2LjQzLDYuNDMsMCwwLDEsLjA5LTIsMi4w''@;'; put 'put ''OSwyLjA5LDAsMSwxLDEuNDctMyw2LjU4LDYuNTgsMCwwLDEsMS41NS0xLjMxLDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0x''@;'; put 'put ''MywxOC4xNGE2LjUzLDYuNTMsMCwwLDEtMS4yOC0yLjJsLS42MywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY3aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTMxLjM1LDE4LjQyQTguNTksOC41OSwwLDAsMCwyNSwxNS45MWMtLjMyLDAtLjYsMC0uOS4wNmE2LjUzLDYuNTMsMCwwLDEtMS4zNSwyLjI1QTcuOSw3LjksMCwwLDEsMjUsMTcuOTFhNi45NCw2''@;'; put 'put ''Ljk0LDAsMCwxLDQuNjQsMS41OHY2LjI3aDJWMTguN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LjEsMTkuNzNBOS42OSw5LjY5LDAsMCwwLDExLDIyLjQ3bC0uMjUu''@;'; put 'put ''Mjh2Ny4zM2ExLjU3LDEuNTcsMCwwLDAsMS42MSwxLjU0SDIzLjgzYTEuNTcsMS41NywwLDAsMCwxLjYxLTEuNTRWMjIuNzNsLS4yNS0uMjhBOS41OCw5LjU4LDAsMCwwLDE4LjEsMTkuNzNabTUuMzMsOS44OEgxMi43M1YyMy41NWE4LjA4LDguMDgsMCwwLDEsNS4zNy0xLjgyLDgsOCwwLDAs''@;'; put 'put ''MSw1LjMzLDEuOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTIwLjI4LDE0LjI3YTIuNDYsMi40NiwwLDEsMS0yLjQyLTIuODksMi40NCwyLjQ0LDAsMCwxLDEsLjI0LDMu''@;'; put 'put ''NjcsMy42NywwLDAsMSwuNDMtMiw0LjQxLDQuNDEsMCwwLDAtMS40OC0uMjdBNC40Nyw0LjQ3LDAsMSwwLDIyLjE0LDE1LDMuNjksMy42OSwwLDAsMSwyMC4yOCwxNC4yN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI3LjE4LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzRhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjM5LjhBMS4yOCwxLjI4LDAsMCwwLDI3LjE4LjhaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMDksMTQuNTdjLjEsMCwuMiwwLC4zMSwwYTYuNDMsNi40MywwLDAsMSwuMDktMiwyLjA5LDIuMDksMCwxLDEsMS40Ny0zLDYuNTgsNi41OCwwLDAsMSwxLjU1LTEuMzEs''@;'; put 'put ''NC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0xMywxOC4xNGE2LjUzLDYuNTMsMCwwLDEtMS4yOC0yLjJsLS42MywwYTguNjcsOC42''@;'; put 'put ''NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY3aDJWMTkuNTFhNyw3LDAsMCwxLDQuNjctMS42QTguMDksOC4wOSwwLDAsMSwxMywxOC4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0zMS4zNSwxOC40MkE4LjU5LDguNTksMCwwLDAsMjUsMTUuOTFjLS4zMiwwLS42LDAtLjkuMDZhNi41Myw2LjUzLDAsMCwxLTEuMzUsMi4yNUE3LjksNy45LDAsMCwxLDI1LDE3LjkxYTYuOTQsNi45NCwwLDAsMSw0LjY0LDEuNTh2Ni4yN2gyVjE4LjdaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMTcuODYsMTguM2E0LjQ3LDQuNDcsMCwxLDAtNC40Ny00LjQ3QTQuNDcsNC40NywwLDAsMCwxNy44NiwxOC4zWm0wLTYuOTNhMi40NywyLjQ3LDAsMSwxLTIuNDcs''@;'; put 'put ''Mi40N0EyLjQ3LDIuNDcsMCwwLDEsMTcuODYsMTEuMzdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMSwxOS43M0E5LjY5LDkuNjksMCwwLDAsMTEsMjIuNDdsLS4yNS4y''@;'; put 'put ''OHY3LjMzYTEuNTcsMS41NywwLDAsMCwxLjYxLDEuNTRIMjMuODNhMS41NywxLjU3LDAsMCwwLDEuNjEtMS41NFYyMi43M2wtLjI1LS4yOEE5LjU4LDkuNTgsMCwwLDAsMTguMSwxOS43M1ptNS4zMyw5Ljg4SDEyLjczVjIzLjU1YTguMDgsOC4wOCwwLDAsMSw1LjM3LTEuODIsOCw4LDAsMCwx''@;'; put 'put ''LDUuMzMsMS44WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTI2LjM3LDEyYTIsMiwwLDAsMS0yLjA5LjQyLDYuNTMsNi41MywwLDAsMSwuMTUsMS4zOCw2LjU5LDYuNTksMCww''@;'; put 'put ''LDEsMCwuNjgsNCw0LDAsMCwwLC41Ny4wNiw0LjA4LDQuMDgsMCwwLDAsMy4zLTEuN0E3LjQ1LDcuNDUsMCwwLDEsMjYuMzcsMTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MjIuOTUsNi45M2E0LjE2LDQuMTYsMCwwLDAtMS40NywxLjQ0QTYuNTksNi41OSwwLDAsMSwyMyw5Ljc3YTIuMSwyLjEsMCwwLDEsLjU5LS44M0E3LjQ0LDcuNDQsMCwwLDEsMjIuOTUsNi45M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwLjMzIiBjeT0iNS42NyIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42''@;'; put 'put ''Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU5LDYuNTksMCwwLDEsMTIsMTYuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC40MywxMy40NGE2LjU0LDYuNTQsMCwwLDEsMCwuNjksNC4wOSw0LjA5LDAsMCwwLC41OC4wNWguMTlBNC4wOSw0LjA5LDAsMSwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgY3g9IjE3Ljg3IiBjeT0iMTMuNDUiIHI9IjQuNDciLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiBkPSJNMTguMTEsMjAu''@;'; put 'put ''M0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTkuNTgsOS41OCwwLDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2''@;'; put 'put ''LjU5LDYuNTksMCwwLDEsMTIsMTYuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCww''@;'; put 'put ''LDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjguNTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0xMS4xLDE0LjE5Yy4xMSwwLC4yLDAsLjMxLDBhNi40NSw2LjQ1LDAsMCwxLDMuMTEtNi4yOSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFs''@;'; put 'put ''ZXJ0ZWQiIGQ9Ik0xOC4xMSwyMC4zQTkuNjksOS42OSwwLDAsMCwxMSwyM2wtLjI1LjI4djYuMzNhMS41NywxLjU3LDAsMCwwLDEuNiwxLjU0SDIzLjg0YTEuNTcsMS41NywwLDAsMCwxLjYtMS41NFYyMy4zTDI1LjIsMjNBOS41OCw5LjU4LDAsMCwwLDE4LjExLDIwLjNaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTE3Ljg3LDE3LjkyYTQuNDYsNC40NiwwLDAsMCw0LTIuNTRBMy42NywzLjY3LDAsMCwxLDE5LDkuODlsLjM1LS42MUE0LjQyLDQuNDIsMCwwLDAsMTcuODcs''@;'; put 'put ''OWE0LjQ3LDQuNDcsMCwxLDAsMCw4LjkzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4y''@;'; put 'put ''MywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTEyLDE2''@;'; put 'put ''LjE0cS0uNDMsMC0uODcsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2OC4yOEg4LjU0di00LjdsLjU1LS42Mi4yNS0uMjlhMTEsMTEsMCwwLDEsNC43MS0yLjg2QTYuNTgsNi41OCwwLDAsMSwxMiwxNi4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLjM0LDE4LjYzYTguNjcsOC42NywwLDAsMC02LjQzLTIuNTIsMTAuNDcsMTAuNDcsMCwwLDAtMS4wOS4wNiw2LjU5LDYuNTksMCwwLDEtMiwyLjQ1LDEwLjkxLDEwLjkxLDAsMCwxLDUsM2wuMjUuMjgu''@;'; put 'put ''NTQuNjJ2NC43MWgzLjk0VjE4LjkxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4w''@;'; put 'put ''OSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBjeD0iMTcuODciIGN5PSIxMy40NSIgcj0iNC40NyIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wy''@;'; put 'put ''NS4yLDIzQTkuNTgsOS41OCwwLDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNi0tYmFkZ2VkIiBkPSJNMjQuNDMsMTMuNDRhNi41NCw2LjU0LDAsMCwxLDAsLjY5LDQuMDksNC4wOSww''@;'; put 'put ''LDAsMCwuNTguMDVoLjE5YTQuMDUsNC4wNSwwLDAsMCwyLjUyLTEsNy41LDcuNSwwLDAsMS01LjE0LTYuMzJBNC4xMyw0LjEzLDAsMCwwLDIxLjQ3LDgsNi41Myw2LjUzLDAsMCwxLDI0LjQzLDEzLjQ0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlUG9wT3V0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcsMzNI''@;'; put 'put ''NWEyLDIsMCwwLDEtMi0yVjlBMiwyLDAsMCwxLDUsN0gxNVY5SDVWMzFIMjdWMjFoMlYzMUEyLDIsMCwwLDEsMjcsMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzYTEsMSwwLDAsMCwwLDJIMjku''@;'; put 'put ''NTlMMTUuNzQsMTguODVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMSw2LjQxVjE4YTEsMSwwLDAsMCwyLDBWM1oiLz4nKSxULkNsclNoYXBlRmlsdGVyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNEgzQTEs''@;'; put 'put ''MSwwLDAsMCwyLDVWNi42N2ExLjc5LDEuNzksMCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMmwyLC43NlYxOWExLDEsMCwwLDAtLjI5LS43MUw0LDYuNTlWNkgzMnYuNjFMMjAuMzMsMTguMjlBMSwxLDAsMCwwLDIwLDE5bDAsMTMuMjFMMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSww''@;'; put 'put ''LDAsMCwzNCw2LjdWNUExLDEsMCwwLDAsMzMsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNWExLDEsMCwwLDAtMS0xSDNBMSwxLDAs''@;'; put 'put ''MCwwLDIsNVY2LjY3YTEuNzksMS43OSwwLDAsMCwuNTMsMS4yN0wxNCwxOS41OHYxMC4yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy40OCw0aC0zMUEuNTIuNTIsMCwwLDAsMiw0LjUyVjYuMjRhMS4zMywxLjMzLDAsMCwwLC4zOS45NWwxMiwxMnYxMGw3LjI1LDMuNjFWMTku''@;'; put 'put ''MTdsMTItMTJBMS4zNSwxLjM1LDAsMCwwLDM0LDYuMjZWNC41MkEuNTIuNTIsMCwwLDAsMzMuNDgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZVBpbj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE2LjU5YTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy43MWExLDEsMCwwLDEsMS40MS0xLjQxTDMzLjcxLDE0Ljg5QTEsMSwwLDAsMSwzMywxNi41OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LjUyLDE1LjU2bC0xLjQxLTEuNDEtNy4yLDcuMmExLDEsMCwwLDAtLjI1LDEsOSw5LDAsMCwxLTEuNTMsOC4wOUw1LjU4LDE3Ljg3YTksOSwwLDAsMSw4LjA5LTEuNTMsMSwxLDAsMCwwLDEtLjI1bDcuMi03LjJMMjAuNDQsNy40OGwtNi43OSw2Ljc5''@;'; put 'put ''QTEwLjk0LDEwLjk0LDAsMCwwLDMuNDEsMTcuMTFhMSwxLDAsMCwwLDAsMS40Mmw2LjMzLDYuMzNMMi4yOSwzMi4yOWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4y''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTYuNzFhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjgyYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTVBMSwxLDAsMCwxLDMzLDE2LjcxWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC40NCw3LjU5bC02Ljc5LDYuNzlBMTAuOTQsMTAuOTQsMCwwLDAsMy40MSwxNy4yMmExLDEsMCwwLDAsMCwxLjQyTDkuNzMsMjUsMi4yOSwzMi40MWExLDEsMCwxLDAsMS40MSwx''@;'; put 'put ''LjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNGw2Ljc5LTYuNzlaIi8+JyksVC5DbHJTaGFwZUZpbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiIGQ9Ik0yMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTEuOTJabS0uMywyLjQ5LDYsNS45aC02Wk04LDMwVjZIMjB2OGg4VjMwWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTIxLjU5LDEyLjM5VjYuNDlsMS4wNywxYTcuMzEsNy4zMSwwLDAsMSwwLTIuODJMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUu''@;'; put 'put ''OTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjEzLjVhNy40NSw3LjQ1LDAsMCwxLTMuOTEtMS4xMVpNMjgsMzBIOFY2SDIwdjhoOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjgsMTUu''@;'; put 'put ''NFYzMEg4VjZIMjBWOC4yNWwyLjI1LTMuOUwyMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEu''@;'; put 'put ''ODgsMCwwLDAsMzAsMzAuMDlWMTEuOTJaTTIxLDEzVjUuODRMMjguMywxM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI3LjI1LDEzSDIxVjUuODRsMS42NCwxLjZhNy4yNSw3LjI1''@;'; put 'put ''LDAsMCwxLDAtMi43NEwyMS44OSw0SDcuODNBMS44OCwxLjg4LDAsMCwwLDYsNS45MVYzMC4wOUExLjg4LDEuODgsMCwwLDAsNy44MywzMkgyOC4xN0ExLjg4LDEuODgsMCwwLDAsMzAsMzAuMDlWMTMuNUE3LjQ3LDcuNDcsMCwwLDEsMjcuMjUsMTNaIi8+XG4gICAgICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjRjLTIsMC0zLjctMS42LTMuNy0zLjZjMC0wLjcsMC4yLTEuMywwLjUtMS45bDMuMi01LjVMMjEuOSw0SDcuOEM2LjgsNCw2LDQuOSw2LDUuOXYyNC4yYzAsMSwwLjgsMS45LDEuOCwxLjloMjAuM2MxLDAsMS44LTAuOSwxLjgtMS45VjE1LjRIMjIuMnoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJo''@;'; put 'put ''MTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPicpLFQuQ2xyU2hhcGVQbHVzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMTdIMTlWNmExLDEsMCwxLDAtMiwwVjE3SDZhMSwxLDAsMCwwLTEsMSwuOTEuOTEsMCwwLDAsMSwuOTRIMTdWMzBhMSwxLDAsMSwwLDIsMFYxOUgzMGExLDEsMCwwLDAsMS0xQTEsMSwwLDAsMCwzMCwxN1oiLz4nKSxULkNsclNo''@;'; put 'put ''YXBlTWludXM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDE3SDEwYTEsMSwwLDAsMCwwLDJIMjZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVNaW51c0NpcmNsZT0oMCx2LmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjQsMTdIMTJhMSwxLDAsMCwwLDAsMkgyNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LDE3LjVIMTJhMS41''@;'; put 'put ''LDEuNSwwLDAsMSwwLTNIMjRhMS41LDEuNSwwLDAsMSwwLDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVQbHVzQ2lyY2xlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi4xNywxN0gxOVY5LjgzYTEsMSwwLDAsMC0yLDBWMTdI''@;'; put 'put ''OS44M2ExLDEsMCwwLDAsMCwySDE3djcuMTdhMSwxLDAsMCwwLDIsMFYxOWg3LjE3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCww''@;'; put 'put ''LDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMThBMTYsMTYsMCwxLDEsMTgsMiwxNiwxNiwwLDAsMSwzNCwxOFptLTgu''@;'; put 'put ''NDEtMS41SDE5LjVWMTAuNDFhMS41LDEuNSwwLDAsMC0zLDBWMTYuNUgxMC40MWExLjUsMS41LDAsMCwwLDAsM0gxNi41djYuMDlhMS41LDEuNSwwLDAsMCwzLDBWMTkuNWg2LjA5YTEuNSwxLjUsMCwwLDAsMC0zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicp''@;'; put 'put ''LFQuQ2xyU2hhcGVCYW49KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThBMTMuOTMsMTMuOTMsMCwwLDEsNy40Myw4Ljg1TDI3LjE1''@;'; put 'put ''LDI4LjU3QTE0LDE0LDAsMCwxLDQsMThabTI0LjU3LDkuMTVMOC44NSw3LjQzQTE0LDE0LDAsMCwxLDI4LjU3LDI3LjE1WiIvPicpLFQuQ2xyU2hhcGVUaW1lc0NpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTE5LjYxLDE4bDQuODYtNC44NmExLDEsMCwwLDAtMS40MS0xLjQxTDE4LjIsMTYuNTRsLTQuODktNC44OWExLDEsMCwwLDAtMS40MSwxLjQxTDE2Ljc4LDE4LDEyLDIyLjcyYTEsMSwwLDEsMCwxLjQxLDEuNDFsNC43Ny00Ljc3LDQuNzQsNC43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LDIyLjFhMS40LDEuNCwwLDAsMS0yLDJsLTYtNkwxMiwyNi4xMmExLjQsMS40LDAsMSwxLTItMkwxNiwxOC4w''@;'; put 'put ''OCw5LjgzLDExLjg2YTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE2LjFsNi4xNy02LjE3YTEuNCwxLjQsMCwxLDEsMiwyTDIwLDE4LjA4WiIvPicpLFQuQ2xyU2hhcGVUcmFzaD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTI3LjE0LDM0SDguODZBMi45MywyLjkzLDAsMCwxLDYsMzFWMTEuMjNIOFYzMWEuOTMuOTMsMCwwLDAsLjg2LDFIMjcuMTRBLjkzLjkzLDAsMCwwLDI4LDMxVjExLjIzaDJWMzFBMi45MywyLjkzLDAsMCwxLDI3LjE0LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuNzgsOUg1QTEsMSwwLDAsMSw1LDdIMzAuNzhhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMjEiIHk9IjEz''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMyw1Ljg2SDIxLjFWNEgxNC45VjUuODZIMTNWNGEyLDIsMCwwLDEsMS45LTJoNi4yQTIsMiwwLDAsMSwyMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik02LDlWMzFhMi45MywyLjkzLDAsMCwwLDIuODYsM0gyNy4wOUEyLjkzLDIuOTMsMCwwLDAsMzAsMzFWOVptOSwyMEgxM1YxNGgyWm04LDBIMjFWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAu''@;'; put 'put ''NzMsNUgyM1Y0QTIsMiwwLDAsMCwyMSwyaC02LjJBMiwyLDAsMCwwLDEzLDRWNUg1QTEsMSwwLDEsMCw1LDdIMzAuNzNhMSwxLDAsMCwwLDAtMloiLz4nKSxULkNsclNoYXBlVGFnPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCww''@;'; put 'put ''LDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk0yMC42MiwzMC41Miw2LDE1LjkxVjZoOS45MmwxNC42LDE0LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIi''@;'; put 'put ''IHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMmwtMy44LTMuOEgyNS4zMWw1LjIyLDUuMjItOS45LDkuOUw2LDE1LjkxVjZoOS45MmwzLjQxLDMuNDEs''@;'; put 'put ''MS0xLjc4LTMtM0EyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTku''@;'; put 'put ''OUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNMjAuNjIsMzAuNTIsNiwxNS45MVY2aDkuOTJsMTQuNiwxNC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwy''@;'; put 'put ''LDAsMCwwLC41OSwxLjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC40NiwxNS43M0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksMTAuMjJsMS40My0yLjQ3TDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwxLjQxbDE0''@;'; put 'put ''LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlhMiwyLDAsMCwwLDAtMi44M1pNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuNDdsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuNDdBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuNDdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwx''@;'; put 'put ''NC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDkuNjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2LjMzIiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFQuQ2xyU2hhcGVUYWdzPSgwLHYuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEEx''@;'; put 'put ''LjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTE3LjI2LDI5''@;'; put 'put ''LjY5LDMuNjksMTYuMTVWN2g5LjFMMjYuMzcsMjAuNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMx''@;'; put 'put ''LjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk0xNy4yNiwyOS42OSwzLjY5LDE2LjE1VjdoOS4xTDI2LjM3LDIwLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNy44MSIgY3k9IjExLjE0IiByPSIxLjMzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRI''@;'; put 'put ''MjIuMjNBMy42NSwzLjY1LDAsMCwxLDIxLDE1LjE5bDUuMzMsNS4yOS05LjExLDkuMjFMMy42OSwxNi4xNVY3aDkuMWw2LDUuOTRhMy42OCwzLjY4LDAsMCwxLC4xLTIuNjlMMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5''@;'; put 'put ''LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAuODMsNi44LDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMTkuNzksOC42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMy4xNiwxOS4xMywyOS40MywxNS40SDI2LjY1bDUuMSw1TDIxLjIyLDMxLjA3YTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0t''@;'; put 'put ''YWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xNiwxOS4xMywxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDMxLjc1LDIwLjQ1LDIxLjIyLDMxLjA3YTEuOTMs''@;'; put 'put ''MS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxYTEuOTMsMS45MywwLDAsMCwwLTIuNzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMu''@;'; put 'put ''NjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEw''@;'; put 'put ''LDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4''@;'; put 'put ''LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwxLjczLDEuNzMsMCwwLDEsNi42Nywx''@;'; put 'put ''MS43MloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2Ex''@;'; put 'put ''LjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC44Myw2LjgsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwxOS43OSw4LjZaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMjkuNDMsMTUuNEgyNi42NWw1LjEsNUwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjcz''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3LDI0LDE1LjRIMjIuMjNhMy42NywzLjY3LDAsMCwxLTMuMzYtNS4xNUwxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEy''@;'; put 'put ''LjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43MywwLDEs''@;'; put 'put ''MSw4LjQsMTAsMS43MywxLjczLDAsMCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNI''@;'; put 'put ''MzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+JyksVC5DbHJTaGFwZUhpc3Rvcnk9KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDkuODNhMSwxLDAsMCwwLTEsMXY4LjcybDUuOSw0QTEsMSwwLDAsMCwyNCwyMS44OGwtNS0zLjM5VjEwLjgzQTEsMSwwLDAsMCwxOCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LjA5LDE2LjA5LDAsMCwwLDQsMTAuMjZWNS4yYTEsMSwwLDAsMC0yLDBWMTRoOC44YTEsMSwwLDAsMCwwLTJINS4zNUExNCwxNCwwLDEsMSw4LjU4LDI4LjM1YTEsMSwwLDAsMC0xLjM1LDEuNDhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksVC5DbHJTaGFwZUNsb2NrPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDE4LjRWMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTcuOTRBOS45NCw5Ljk0LDAsMCwxLDIzLjQxLDkuNTlsLjg1LTEuMzZhMTEuNTUsMTEuNTUsMCwxLDAtOC41MywyMUwxNiwyNy43QTEwLDEwLDAsMCwxLDgsMTcuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjkyLDEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2bC01LTMuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ0LDcuNDQsMCwwLDEtMS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDQsNy40NCwwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw2LjM4YTExLjU2LDExLjU2LDAsMCwwLTIuMjcsMjIuODlMMTYsMjcuN2ExMCwxMCwwLDEsMSw3LjM5LTE4LjFoMGE3LjQ1LDcuNDUsMCwwLDEtLjc4LTIuMjNBMTEuNDUsMTEuNDUsMCww''@;'; put 'put ''LDAsMTgsNi4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NmwtNS0zLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43NywxNS4zOWgtMkExNCwxNCwwLDEsMSwyMi4wOSw0LjYxbDEtMS43NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwzMy43NywxNS4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsOGE5LjgxLDkuODEsMCwwLDEsMiwuMjNsLjg1LTEuNDZhMTEuNTUsMTEuNTUsMCwxLDAtNS4xMywyMi41MkwxNiwyNy43QTEwLDEwLDAsMCwxLDE4LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44''@;'; put 'put ''NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYuMiwyMS4xOGExLDEsMCww''@;'; put 'put ''LDEtMS4zOS4yOGwtNS45LTRWMTAuNzVhMSwxLDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4xOFpNMjMuODUsOC4yM2ExMS4zOSwxMS4zOSwwLDEsMC04LjU0LDIwLjgzTDE1LDMwLjYzYTEzLDEzLDAsMSwxLDkuNy0yMy43N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MUE3LjQ4LDcuNDgsMCwwLDEsMjIuNjgsNy42MywxMS4yNCwxMS4yNCwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEy''@;'; put 'put ''LjgxLDEyLjgxLDAsMCwxLDQuNTEuODIsNy40Niw3LjQ2LDAsMCwxLC42OC0yLjk0LDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1pNMjQuMiwyMy4xOGExLDEsMCwwLDEtMS4zOS4yOGwtNS45LTRWMTAuNzVhMSwxLDAsMCwxLDIsMFYxOC40bDUsMy4zOUExLDEsMCwwLDEsMjQuMiwyMy4x''@;'; put 'put ''OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzcsMTUuMzlIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YzAtLjA5LS4wOS0uMTgtLjEzLS4yN1YxOC40bDUsMy4zOWExLDEsMCwwLDEtMS4xMSwxLjY2bC01LjktNFYxMC43NWExLDEsMCwwLDEsMS45MS0uNDFBMy42NSwz''@;'; put 'put ''LjY1LDAsMCwxLDE5LDkuODlMMjAuNzQsN0ExMS4xOSwxMS4xOSwwLDAsMCwxOCw2LjZhMTEuMzksMTEuMzksMCwwLDAtMi42OSwyMi40N0wxNSwzMC42M0ExMywxMywwLDAsMSwxOCw1YTEyLjgsMTIuOCwwLDAsMSwzLjU3LjUxbDEuNTMtMi42NkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwzMy43NywxNS4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxULkNsclNoYXBlQWxhcm1DbG9jaz0oMCx2LmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBkPSJNMzEuNDcsMy44NGE1Ljc4LDUuNzgsMCwwLDAtNy4zNy0uNjMsMTYuMDgsMTYuMDgsMCwwLDEsOC4yLDcuNjVBNS43Myw1LjczLDAsMCwwLDMxLjQ3LDMuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2''@;'; put 'put ''LjQsNC4wOUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTYuNCw0LjA5Wk0xOS41OCwy''@;'; put 'put ''OS45QTEyLDEyLDAsMSwxLDI5LjkyLDE5LjU2LDEyLDEyLDAsMCwxLDE5LjU4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjkyLDIwLjM0bC02LjA2LTNWOS41YS45LjksMCwwLDAtMS44LDB2OUwy''@;'; put 'put ''NC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwx''@;'; put 'put ''Ni4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44Niw5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45LjksMCwxLDAsLjc5LTEu''@;'; put 'put ''NjJsLTYuMDYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNGgtMmExMi4wNywxMi4wNywwLDEsMS04LjY3LTls''@;'; put 'put ''MS0xLjhhMTQsMTQsMCwwLDAtMTQsMjMuMjdMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4''@;'; put 'put ''LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMjcuNzhBMTMuODgsMTMuODgsMCwwLDAsMzEuNzcsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTks''@;'; put 'put ''MTMuNTZMMTksMTMuNHYzLjc4TDI1LDIwLjFhMSwxLDAsMSwxLS44NywxLjhMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwVjEwTDE5LDkuODlsMy01LjI4YTE0LDE0LDAsMCwwLTE0LDIzLjI3TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAs''@;'; put 'put ''MCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjgsMjcuNzhhMTMuODksMTMuODksMCwwLDAsMy4yMS0xNC4zOUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTEtMS4yMUExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjks''@;'; put 'put ''MTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFabS0yLjUyLTYuMzVhMSwxLDAsMCwxLTEuMzMuNDdMMTcsMTguNDRWOS42OWExLDEsMCwwLDEsMiwwdjcuNUwyNSwyMC4xQTEsMSwwLDAsMSwyNS40OSwyMS40M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE4Ljg2LDkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MmwtNi4wNi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjgsMjcuNzhhMTMuODksMTMuODksMCwwLDAsMy4yMS0xNC4zOSw3LDcsMCwwLDEtMi4xMS4wNUExMiwxMiwwLDEsMSwyMi41Niw2LjksNy41NCw3LjU0LDAsMCwxLDIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjExLTEuMjFBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEs''@;'; put 'put ''MSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4''@;'; put 'put ''LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3''@;'; put 'put ''LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNEExNCwxNCwwLDAsMCw4LjExLDI3Ljg4TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2''@;'; put 'put ''YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFMMjgsMjcuNzhBMTQsMTQsMCwwLDAsMTgsNFptNy40NywxNy40M2ExLDEsMCwwLDEtMS4zMy40N0wxNywxOC40NFY5LjY5YTEsMSwwLDAsMSwyLDB2Ny41TDI1LDIwLjFBMSwxLDAsMCwxLDI1''@;'; put 'put ''LjQ5LDIxLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFQuQ2xyU2hhcGVDaXJjbGVBcnJvdz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMy''@;'; put 'put ''LDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOCw4LjI2bC03LjYxLDcuNjFhMSwxLDAsMSwwLDEuNDEsMS40MUwxNywxMi4xOHYxNWExLDEsMCwwLDAsMiwwVjEybDUu''@;'; put 'put ''MjgsNS4yOGExLDEsMCwxLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMTUuNTdhMS40MywxLjQzLDAsMCwxLTIs''@;'; put 'put ''MEwxOS40LDEzVjI3LjE0YTEuNCwxLjQsMCwwLDEtMi44LDB2LTE0bC00LjQzLDQuNDNhMS40LDEuNCwwLDAsMS0yLTJMMTguMDgsNy43LDI2LDE1LjU5QTEuNCwxLjQsMCwwLDEsMjYsMTcuNTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksVC5DbHJTaGFw''@;'; put 'put ''ZUNoaWxkQXJyb3c9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjgyLDE1LjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQxTDI3LjIsMjFIOVYzLjc4YTEsMSwwLDEsMC0yLDBWMjFhMiwyLDAsMCwwLDIsMkgyNy4xNWwtMy43NCwzLjc1YTEsMSwwLDAsMCwwLDEuNDEs''@;'; put 'put ''MSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwuNzEtLjI5TDMxLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZUNvcHk9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjUsN2gtMTlBMS41LDEuNSwwLDAsMCw5LDguNXYy''@;'; put 'put ''NEExLjUsMS41LDAsMCwwLDEwLjUsMzRoMTlBMS41LDEuNSwwLDAsMCwzMSwzMi41VjguNUExLjUsMS41LDAsMCwwLDI5LjUsN1pNMjksMzJIMTFWOUgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMy41''@;'; put 'put ''QTEuNSwxLjUsMCwwLDAsMjQuNSwySDUuNUExLjUsMS41LDAsMCwwLDQsMy41djI0QTEuNSwxLjUsMCwwLDAsNS41LDI5SDZWNEgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMy41NkExLjU2LDEuNTYs''@;'; put 'put ''MCwwLDAsMjUuNDMsMkg1LjU3QTEuNTYsMS41NiwwLDAsMCw0LDMuNTZWMjguNDRBMS41NiwxLjU2LDAsMCwwLDUuNTcsMzBoLjUyVjQuMDdIMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI2IiB3aWR0aD0i''@;'; put 'put ''MjMiIGhlaWdodD0iMjgiIHJ4PSIxLjUiIHJ5PSIxLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxULkNsclNoYXBlSGVscD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMw''@;'; put 'put ''QTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4yOSw4LjkyYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4zMi43MS45Mi45''@;'; put 'put ''MiwwLDAsMCwuOTUuOTIsMS4wOCwxLjA4LDAsMCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAsMCwwLDEsLjlo''@;'; put 'put ''LjExYTEsMSwwLDAsMCwuOS0xVjE5LjQ1YzMtLjQyLDUuNDMtMiw1LjQzLTUuMjh2LS4wNUMyNC4xOCwxMS4xMiwyMS44NCw4LjkyLDE4LjI5LDguOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuNzgi''@;'; put 'put ''IGN5PSIyNi4yIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjE4LDE0LjE3di0uMDVjMC0zLTIuMzQtNS4yLTUuODgtNS4yYTcuMzgsNy4zOCwwLDAsMC01LjcyLDIuNTcsMSwxLDAsMCwwLS4z''@;'; put 'put ''Mi43MS45Mi45MiwwLDAsMCwuOTUuOTIsMS4wOCwxLjA4LDAsMCwwLC43MS0uMjksNS43LDUuNywwLDAsMSw0LjMzLTJjMi4zNiwwLDMuODMsMS41MiwzLjgzLDMuNDF2LjA1YzAsMi4yMS0xLjc2LDMuNDQtNC41NCwzLjY1YS44LjgsMCwwLDAtLjc2LjkyczAsMi4zMiwwLDIuNzVhMSwxLDAs''@;'; put 'put ''MCwwLDEsLjloLjExYTEsMSwwLDAsMCwuOS0xVjE5LjQ1QzIxLjc1LDE5LDI0LjE4LDE3LjQ1LDI0LjE4LDE0LjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNy43OCIgY3k9''@;'; put 'put ''IjI2LjIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDMsNy40MywwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40''@;'; put 'put ''NCw3LjQ0LDAsMCwxLC41OC0xLjkxLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ5LDcuNDksMCwwLDEtOS45My05LjkzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1ptLTE1LjM0LDE1YTEu''@;'; put 'put ''NjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0x''@;'; put 'put ''LjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0zLjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMs''@;'; put 'put ''Ni4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEsMTkuMiwxOS4xNSwxOS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0tLjIyLDI1Ljg1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42NSwxLjY1LDAsMCwx''@;'; put 'put ''LDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0zLjI1LDAtMS44My0x''@;'; put 'put ''LjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEsMTkuMiwxOS4xNSwx''@;'; put 'put ''OS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxULkNsclNoYXBlTG9naW49KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMkgyOFYzMEgxMlYyMC4ySDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwyOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuMTIsMTguNDZhMSwxLDAsMSwwLDEuNDEsMS40MWw1Ljc5LTUuNzlMMTYuNTQsOC4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE4''@;'; put 'put ''LjUsMTNINGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFIMTguNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMnY3aDguNUwxNS4xMiw5LjcxYTEsMSwwLDAsMSwxLjQx''@;'; put 'put ''LTEuNDFsNS43OSw1Ljc5LTUuNzksNS43OWExLDEsMCwwLDEtMS40MS0xLjQxTDE4LjUsMTVIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTEwLDEzSDRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVMb2dvdXQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcsNkgyM3Y5LjhoMlY2YTIsMiwwLDAsMC0y''@;'; put 'put ''LTJIN0EyLDIsMCwwLDAsNSw2VjMwYTIsMiwwLDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMkg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIy''@;'; put 'put ''SDE1LjYzYTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWgxNC41bC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsNEg3QTIsMiwwLDAs''@;'; put 'put ''MCw1LDZWMzBhMiwyLDAsMCwwLDIsMkgyM2EyLDIsMCwwLDAsMi0yVjI0SDE1LjYzYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtMUgyNVY2QTIsMiwwLDAsMCwyMyw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4''@;'; put 'put ''LjE2LDE3LjI4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTMsMjJIMjV2Mmg1LjEzbC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxULkNsclNoYXBlUHJpbnRlcj0oMCx2LmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMjksOUgyN1Y1SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1VjEzYTIsMiwwLDAsMSwyLTJIMjlhMiwyLDAsMCwxLDIsMnY5SDI5LjA4VjI0SDMzVjEzQTQsNCwwLDAsMCwyOSw5Wk0yNSw5SDExVjdIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iMjciIHk9IjEzLjA0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAt''@;'; put 'put ''MlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDIyLjA5IDI5LjA4IDIyLjA5IDI5LjA4IDI0IDMzIDI0IDMzIDE1LjQg''@;'; put 'put ''MzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEzYTIsMiwwLDAsMSwyLTJIMTguNjRBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMTkuNTQsOUgxMVY3aDkuNzFsMS4x''@;'; put 'put ''My0ySDlWOUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Mi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjgsMThIOGExLDEsMCwwLDAsMCwySDlWMzJIMjdWMjBoMWExLDEsMCwwLDAsMC0yWk0yNSwzMEgxMVYyMEgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjci''@;'; put 'put ''IHk9IjEzLjA0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxMi44OGE3LjQ1LDcuNDUsMCwwLDEtMiwuNTV2OC42NkgyOS4wOFYyNEgzM1Yx''@;'; put 'put ''M0MzMywxMywzMywxMi45MywzMywxMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTNhMiwyLDAsMCwxLDItMkgyNC40MmE3LjUsNy41LDAsMCwxLTEuMjctMkgxMVY3SDIy''@;'; put 'put ''LjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjU0LDcuNTQsMCwwLDEsLjA3LTFIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg2LjkyVjIyLjA5SDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksOUgyN1Y1SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZW''@;'; put 'put ''MTNBNCw0LDAsMCwwLDI5LDlaTTI1LDI0djZIMTFWMTlIMjVaTTI1LDlIMTFWN0gyNVptNCw2SDI3VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwx''@;'; put 'put ''OS41NCw5SDExVjdoOS43MWwxLjEzLTJIOVY5SDdhNCw0LDAsMCwwLTQsNFYyNEg5djhIMjdWMjRoNlYxNS40Wk0yNSwyNHY2SDExVjE5SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDEyLjg4YTcuMyw3LjMsMCwwLDEtNCwuNTVWMTVIMjdWMTNoLjMyYTcuNTIsNy41MiwwLDAsMS00LjE4LTRIMTFWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41NCw3LjU0LDAsMCwxLC4wNy0x''@;'; put 'put ''SDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZWMTNDMzMsMTMsMzMsMTIuOTMsMzMsMTIuODhaTTI1LDI0djZIMTFWMTlIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFQuQ2xyU2hhcGVXb3JsZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTQsMThhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRo''@;'; put 'put ''My42YTEyLjMsMTIuMywwLDAsMC0uNjctMS42SDI1LjY5QTE5LjcyLDE5LjcyLDAsMCwwLDIyLjgsNi41M2ExMi4zLDEyLjMsMCwwLDAtMi41NS0uNzYsMTcuODMsMTcuODMsMCwwLDEsMy44OSw2LjU5SDE4Ljc1VjUuNmMtLjI1LDAtLjUxLDAtLjc3LDBzLS40OSwwLS43MywwdjYuNzdIMTEu''@;'; put 'put ''ODZhMTcuODMsMTcuODMsMCwwLDEsMy45LTYuNiwxMi4yOCwxMi4yOCwwLDAsMC0yLjU0Ljc1LDE5LjcyLDE5LjcyLDAsMCwwLTIuOTEsNS44NUg2Ljk0QTEyLjMsMTIuMywwLDAsMCw2LjI2LDE0SDkuODlhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLDQsMTkuNjcsMTkuNjcsMCwwLDAsLjUsNC4z''@;'; put 'put ''N0g2LjQyQTEyLjM0LDEyLjM0LDAsMCwwLDcuMTYsMjRoMy4yM2ExOS4zMiwxOS4zMiwwLDAsMCwyLjY5LDUuMzYsMTIuMjgsMTIuMjgsMCwwLDAsMi42MS43OUExNy45MSwxNy45MSwwLDAsMSwxMiwyNGg1LjI2djYuMzRjLjI0LDAsLjQ5LDAsLjczLDBzLjUxLDAsLjc3LDBWMjRIMjRhMTcu''@;'; put 'put ''OSwxNy45LDAsMCwxLTMuNyw2LjE1LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjItLjgxQTE5LjMyLDE5LjMyLDAsMCwwLDI1LjYxLDI0aDMuMmExMi4zNCwxMi4zNCwwLDAsMCwuNzQtMS42SDI2QTE5LjY3LDE5LjY3LDAsMCwwLDI2LjU0LDE4Wm0tOS4yOSw0LjM3SDExLjUxYTE3LjY5LDE3LjY5''@;'; put 'put ''LDAsMCwxLS4wOS04LjRoNS44M1ptNy4yNCwwSDE4Ljc1VjE0aDUuODNBMTguMjEsMTguMjEsMCwwLDEsMjUsMTgsMTguMTIsMTguMTIsMCwwLDEsMjQuNDksMjIuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFh''@;'; put 'put ''Ny40NCw3LjQ0LDAsMCwxLTEuOTEuNTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQzLDcuNDMsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAuMjUsNS43N2ExNy44MywxNy44MywwLDAsMSwzLjg5LDYuNTlIMTguNzVWNS42Yy0uMjUsMC0uNTEsMC0uNzcsMHMtLjQ5LDAtLjczLDB2Ni43N0gxMS44NmExNy44MywxNy44MywwLDAsMSwzLjktNi42LDEyLjI4LDEyLjI4LDAsMCwwLTIuNTQu''@;'; put 'put ''NzUsMTkuNzIsMTkuNzIsMCwwLDAtMi45MSw1Ljg1SDYuOTRBMTIuMywxMi4zLDAsMCwwLDYuMjYsMTRIOS44OWExOS4zOCwxOS4zOCwwLDAsMC0uNDMsNCwxOS42NywxOS42NywwLDAsMCwuNSw0LjM3SDYuNDJBMTIuMzQsMTIuMzQsMCwwLDAsNy4xNiwyNGgzLjIzYTE5LjMyLDE5LjMyLDAs''@;'; put 'put ''MCwwLDIuNjksNS4zNiwxMi4yOCwxMi4yOCwwLDAsMCwyLjYxLjc5QTE3LjkxLDE3LjkxLDAsMCwxLDEyLDI0aDUuMjZ2Ni4zNGMuMjQsMCwuNDksMCwuNzMsMHMuNTEsMCwuNzcsMFYyNEgyNGExNy45LDE3LjksMCwwLDEtMy43LDYuMTUsMTIuMjgsMTIuMjgsMCwwLDAsMi42Mi0uODFBMTku''@;'; put 'put ''MzIsMTkuMzIsMCwwLDAsMjUuNjEsMjRoMy4yYTEyLjM0LDEyLjM0LDAsMCwwLC43NC0xLjZIMjZhMTkuNjcsMTkuNjcsMCwwLDAsLjUtNC4zNywxOS4zOCwxOS4zOCwwLDAsMC0uNDMtNGgzLjZjLS4wNi0uMTctLjEyLS4zMy0uMTktLjQ5YTcuNDUsNy40NSwwLDAsMS0zLjQ3LTEuMTFoLS4z''@;'; put 'put ''NmMwLS4xMS0uMDgtLjIxLS4xMS0uMzJhNy40OCw3LjQ4LDAsMCwxLTMuMDYtNS42MkExMi40MSwxMi40MSwwLDAsMCwyMC4yNSw1Ljc3Wm0tMywxNi41OUgxMS41MWExNy42OSwxNy42OSwwLDAsMS0uMDktOC40aDUuODNaTTI1LDE4YTE4LjEyLDE4LjEyLDAsMCwxLS41NSw0LjM3SDE4Ljc1''@;'; put 'put ''VjE0aDUuODNBMTguMjEsMTguMjEsMCwwLDEsMjUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDUsMThhMjAuNDYsMjAuNDYsMCwwLDAsLjYyLDQuOTNoNi40OFYxMy40NUgxMC41OEEyMC41NSwyMC41NSwwLDAsMCwxMC4wNSwxOFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44NSwxMy40NXY5LjQ4aDYuNDhBMjAuNDYsMjAuNDYsMCwwLDAsMjYsMThhMjAuNTUsMjAuNTUsMCwwLDAtLjUyLTQuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0zMC4yMiwyNC43MUgyNi42YTIxLjgsMjEuOCwwLDAsMS0zLDYsMTMuODYsMTMuODYsMCwwLDEtMywuOTIsMjAuMjEsMjAuMjEsMCwwLDAsNC4xOC02Ljk0SDE4Ljg2djcuMTVj''@;'; put 'put ''LS4yOSwwLS41NywwLS44Niwwcy0uNTUsMC0uODMsMFYyNC43MUgxMS4yMmEyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LDYuOTUsMTMuODYsMTMuODYsMCwwLDEtMi45NC0uOSwyMS44LDIxLjgsMCwwLDEtMy02LjA1SDUuNzhhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLTEuODFoNEEyMi4yLDIyLjIs''@;'; put 'put ''MCwwLDEsOC4zNywxOGEyMS44OCwyMS44OCwwLDAsMSwuNDgtNC41NUg0Ljc2YTEzLjg4LDEzLjg4LDAsMCwxLC43Ni0xLjgxSDkuMzNBMjIuMjYsMjIuMjYsMCwwLDEsMTIuNjEsNWExMy44NiwxMy44NiwwLDAsMSwyLjg3LS44NCwyMC4xMywyMC4xMywwLDAsMC00LjQsNy40NWg2LjA5VjRj''@;'; put 'put ''LjI4LDAsLjU1LDAsLjgzLDBzLjU4LDAsLjg2LDB2Ny42NGg2LjA5YTIwLjEzLDIwLjEzLDAsMCwwLTQuMzktNy40NEExMy44OSwxMy44OSwwLDAsMSwyMy40Myw1YTIyLjI2LDIyLjI2LDAsMCwxLDMuMjcsNi41OWgzLjc3YTEzLjg5LDEzLjg5LDAsMCwxLC43NiwxLjgxSDI3LjE3QTIxLjg4''@;'; put 'put ''LDIxLjg4LDAsMCwxLDI3LjY2LDE4YTIyLjIsMjIuMiwwLDAsMS0uNTcsNC45M2g0QTEzLjk0LDEzLjk0LDAsMCwxLDMwLjIyLDI0LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA1LDE4YTIwLjQ2LDIwLjQ2''@;'; put 'put ''LDAsMCwwLC42Miw0LjkzaDYuNDhWMTMuNDVIMTAuNThBMjAuNTUsMjAuNTUsMCwwLDAsMTAuMDUsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4Ljg1LDIyLjk0aDYuNDhBMjAuNDYs''@;'; put 'put ''MjAuNDYsMCwwLDAsMjYsMThhMjAuNTUsMjAuNTUsMCwwLDAtLjUyLTQuNTVIMTguODVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjku''@;'; put 'put ''NTh2MEgzMWE2Ljc3LDYuNzcsMCwwLDEtMi4wNywwaC0xLjhBMjEuODgsMjEuODgsMCwwLDEsMjcuNjYsMThhMjIuMiwyMi4yLDAsMCwxLS41Nyw0LjkzaDRhMTMuOTQsMTMuOTQsMCwwLDEtLjgzLDEuODFIMjYuNmEyMS44LDIxLjgsMCwwLDEtMyw2LDEzLjg2LDEzLjg2LDAsMCwxLTMsLjky''@;'; put 'put ''LDIwLjIxLDIwLjIxLDAsMCwwLDQuMTgtNi45NEgxOC44NnY3LjE1Yy0uMjksMC0uNTcsMC0uODYsMHMtLjU1LDAtLjgzLDBWMjQuNzFIMTEuMjJhMjAuMjEsMjAuMjEsMCwwLDAsNC4xOCw2Ljk1LDEzLjg2LDEzLjg2LDAsMCwxLTIuOTQtLjksMjEuOCwyMS44LDAsMCwxLTMtNi4wNUg1Ljc4''@;'; put 'put ''YTEzLjk0LDEzLjk0LDAsMCwxLS44My0xLjgxaDRBMjIuMiwyMi4yLDAsMCwxLDguMzcsMThhMjEuODgsMjEuODgsMCwwLDEsLjQ4LTQuNTVINC43NmExMy44OCwxMy44OCwwLDAsMSwuNzYtMS44MUg5LjMzQTIyLjI2LDIyLjI2LDAsMCwxLDEyLjYxLDVhMTMuODYsMTMuODYsMCwwLDEsMi44''@;'; put 'put ''Ny0uODQsMjAuMTMsMjAuMTMsMCwwLDAtNC40LDcuNDVoNi4wOVY0Yy4yOCwwLC41NSwwLC44Mywwcy41OCwwLC44NiwwdjcuNjRoNi4wOWwwLS4xM2E3LjQ3LDcuNDcsMCwwLDEtMi4zNi00Ljc2LDIwLjM3LDIwLjM3LDAsMCwwLTItMi41NSwxNC4yMywxNC4yMywwLDAsMSwyLjA2LjU2LDcu''@;'; put 'put ''NDQsNy40NCwwLDAsMSwuNTctMS44NiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFQuQ2xyU2hhcGVTbGlkZXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEyLjM3QTQsNCwwLDAsMCw5LDguNDhWNUExLDEsMCwxLDAsNyw1VjguNDhhNCw0LDAsMCwwLDAsNy43''@;'; put 'put ''OFYzMWExLDEsMCwxLDAsMiwwVjE2LjI2QTQsNCwwLDAsMCwxMiwxMi4zN1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSw4LDE0LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE1LjgzYTQsNCww''@;'; put 'put ''LDAsMC0zLTMuODlWNWExLDEsMCwxLDAtMiwwdjYuOTRhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE5LjcyQTQsNCwwLDAsMCwzMiwxNS44M1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyOCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMjQuNWE0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMFYyMC42MWE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMjguMzlBNCw0LDAsMCwwLDIyLDI0LjVabS00LDJhMiwyLDAsMSwxLDItMkEyLDIs''@;'; put 'put ''MCwwLDEsMTgsMjYuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTksOS4yOVY1QTEsMSwwLDEsMCw3LDVWOS4zYTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxNS40M0EzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsOSw5LjI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDIxLjQ1VjVhMSwxLDAsMSwwLTIsMFYyMS40N2EzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMjcuNmEzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDEyLjc1VjVhMSwxLDAsMSwwLTIsMHY3Ljc2YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxOC44OWEzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFQuQ2xyU2hhcGVDbGlwYm9hcmQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjI5LDVIMjdWN2gyVjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMx''@;'; put 'put ''QTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNy4zM0EyLjM0LDIu''@;'; put 'put ''MzQsMCwwLDAsMjMuNjcsNUgyMS44N2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI2Wk0yNCw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMy42N2EuMzMuMzMsMCwwLDEsLjMzLjMzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEx''@;'; put 'put ''IiB5PSIxOCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIyIiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjYiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNCIgd2lkdGg9IjE0IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIy''@;'; put 'put ''NiIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCww''@;'; put 'put ''VjdoMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uN2E0LDQsMCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI0LjQyQTcuNSw3LjUsMCwwLDEsMjMuMTMsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YzMkg3VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNyww''@;'; put 'put ''LDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4yOSw1SDIyLjE3YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5''@;'; put 'put ''VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjYuNjlBMS43LDEuNywwLDAsMCwyOS4yOSw1Wm0tMTgsM2ExLDEsMCwwLDEsMS0xaDMuNDRWNi4zMWEyLjMxLDIuMzEsMCwxLDEsNC42MywwVjdoMy40NGExLDEsMCwwLDEsMSwxdjJIMTEu''@;'; put 'put ''MzFaTTI1LDI4SDExVjI2SDI1Wm0wLTRIMTFWMjJIMjVabTAtNEgxMVYxOEgyNVptMC00SDExVjE0SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMEgxMS4z''@;'; put 'put ''MVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMxYTIuMzEsMi4zMSwwLDEsMSw0LjYzLDBWN2gyLjE5YTcuNTQsNy41NCwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFoLS40YTQuNDUsNC40NSwwLDAsMC00LjExLTNBNC40Niw0LjQ2LDAsMCwwLDE0LDVIN0ExLjc1LDEuNzUsMCww''@;'; put 'put ''LDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41Wk0yNSwyOEgxMVYyNkgyNVptMC00SDExVjIySDI1Wm0wLTRIMTFWMThIMjVabTAtNEgxMVYxNEgyNVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+Jyks''@;'; put 'put ''VC5DbHJTaGFwZUZpcmV3YWxsPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCw4SDMydjUuMDhIMjMuOHYtNEgyMnY0SDE0di00SDEydjRINFptMCw3SDMy''@;'; put 'put ''djYuMDhIMjguOTJWMTYuMjdIMjd2NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMnY1LjY4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0LjgxSDRWMTVIMjAuNThhMy41OCwzLjU4LDAsMCwxLTEuNzYtMS45MkgxNHYtNEgxMnY0SDRWOEgyMC4xNGwxLjE1LTJINEEy''@;'; put 'put ''LDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi40NS0uNDJIMjMuOFYxMC4yMmE3LjUsNy41LDAsMCwxLS42My0xLjE0SDIydjRIMTR2LTRIMTJ2NEg0VjhI''@;'; put 'put ''MjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTQsMTVIMzJ2Ni4wOEgyOC45MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45''@;'; put 'put ''VjE2LjI3SDd2NC44MUg0Wk0yMy44LDI4VjI0LjI3SDIyLjJWMjhIMTRWMjQuMjdoLTEuNlYyOEg0VjIzSDMydjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwy''@;'; put 'put ''LDAsMCwwLDMyLDZaTTE0LDI4SDEyVjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYxNmgydjRoOFYxNmgydjRoM1ptMC04SDRWMTJoOFY4aDJ2NGg4VjhoMnY0aDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDRWMTJoOFY4aDJ2NGg0LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNMTQsMjhI''@;'; put 'put ''MTJWMjRoMlptMTAsMEgyMlYyNGgyWm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDEwLjQ5VjEyaDEuNTFBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMTRI''@;'; put 'put ''NFYxMmg4VjhoMnY0aDhWOGguNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWk0xNCwyOEgxMlYyNGgyWm0xMCwwSDIyVjI0aDJabTgtNkg0VjIwSDdW''@;'; put 'put ''MTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFQuQ2xyU2hhcGVMaXN0PSgwLHYuY2xySWNvblNWRykoJzxyZWN0IHg9IjE1IiB5PSI4IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjE1IiB5PSIxMiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTYiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNCIgd2lkdGg9''@;'; put 'put ''IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjQiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlptMCwz''@;'; put 'put ''MEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTIiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNiIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjIwIiB3aWR0aD0i''@;'; put 'put ''OSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjQiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIx''@;'; put 'put ''MSIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSw4djJoOC42NmE3LjQ1LDcuNDUsMCwwLDEtLjg5''@;'; put 'put ''LTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWNEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg4LTJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0x''@;'; put 'put ''MywyNkgxMVYyNGgyWm0wLTRIMTFWMjBoMlptMC00SDExVjE2aDJabTAtNEgxMVYxMmgyWm0wLTRIMTFWOGgyWk0yNSwyNkgxNVYyNEgyNVptMC00SDE1VjIwSDI1Wm0wLTRIMTVWMTZIMjVabTAtNEgxNVYxMkgyNVptMC00SDE1VjhIMjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjY2LDEwSDE1VjhoNy43OGE3LjQyLDcuNDIsMCwwLDEsLjg5LTZIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyMy42NiwxMFpNMTMsMjZI''@;'; put 'put ''MTFWMjRoMlptMC00SDExVjIwaDJabTAtNEgxMVYxNmgyWm0wLTRIMTFWMTJoMlptMC00SDExVjhoMlpNMjUsMjZIMTVWMjRIMjVabTAtNEgxNVYyMEgyNVptMC00SDE1VjE2SDI1Wm0wLTRIMTVWMTJIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFQuQ2xyU2hhcGVSZWRvPSgwLHYuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yNCw0LjIyYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS41Niw1LjQ5aC0xM0ExMSwxMSwwLDAsMCwxMC4wNywzMiwxLDEsMCwwLDAsMTEsMzAuMThhOSw5LDAsMCwxLTUtOCw5LjA4LDkuMDgsMCwwLDEsOS4xMy05aDEzbC01LjU0LDUuNDhBMSwxLDAsMCwwLDI0LDIwbDgtNy45MVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVVbmRvPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44NywxMS4xNGgtMTNsNS41Ni01LjQ5QTEsMSwwLDAsMCwxMiw0LjIyTDQsMTIuMTMsMTIsMjBhMSwxLDAsMCwwLDEuNDEtMS40''@;'; put 'put ''Mkw3Ljg2LDEzLjE0aDEzYTkuMDgsOS4wOCwwLDAsMSw5LjEzLDksOSw5LDAsMCwxLTUsOEExLDEsMCwwLDAsMjUuOTMsMzJhMTEsMTEsMCwwLDAtNS4wNi0yMC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVTY3JvbGw9KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAs''@;'; put 'put ''NC41LTQuNVYxMy4xM2gtMlYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRabS00LjUtN0EyLjUsMi41LDAsMCwxLDMyLDYuNThWOS4xMkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYt''@;'; put 'put ''Mi41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMDgsMTUuNFYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSww''@;'; put 'put ''djQuNTRoMi42MUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWwuNDQtLjc2SDE4VjYuNThhNC40OCw0LjQ4LDAsMCwwLS43Ni0yLjVIMjIuNGwxLjE1LTJIMTMuNUE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAs''@;'; put 'put ''Ni41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjUsNy41LDAsMCwxLTEuMzUtMkgxOFY2LjU4''@;'; put 'put ''YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41aDUuNTJhNy40NCw3LjQ0LDAsMCwxLC44Ni0ySDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2''@;'; put 'put ''LTE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTMu''@;'; put 'put ''MTNoLTJWMjkuNTRhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4wOCwx''@;'; put 'put ''NS40VjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NGgyLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5bDQuNTEtNy44SDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41''@;'; put 'put ''LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtMS45Mi0uMjZ2MTYuM2EyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoOC41NGE3LjQ2LDcuNDYsMCwwLDEtLjkyLTlIMTMu''@;'; put 'put ''NUE0LjUsNC41LDAsMCwwLDksNi41OFYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjV2LTE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlRmlsZVNldHRpbmdzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEu''@;'; put 'put ''MTYsMCwwLDAtLjcxLTEuMTJsLTEuNjgtLjVjLS4wOS0uMjQtLjE4LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGEx''@;'; put 'put ''LjE1LDEuMTUsMCwwLDAtMS4xMS0uNzdoLTJhMS4xNiwxLjE2LDAsMCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0''@;'; put 'put ''LDcuNjQsMCwwLDAtLjMxLjc0bC0xLjU4LjQ3YTEuMTUsMS4xNSwwLDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiww''@;'; put 'put ''LDAsMCwxLjM3LjIxbDEuNDgtLjc4Yy4yMy4xMS40Ny4yLjcyLjI5TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQy''@;'; put 'put ''LTEuNGExLjE2LDEuMTYsMCwwLDAsLjIxLTEuMzhsLS43OS0xLjQ1cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIx''@;'; put 'put ''LDYuMjEsMCwwLDEtMS4yLjQ5bC0uNDIuMTItLjYzLDIuMDlIMjMuNDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMu''@;'; put 'put ''MDhsLjEzLS40MWE1Ljk0LDUuOTQsMCwwLDEsLjUzLTEuMjNMMTguOSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTIt''@;'; put 'put ''MSwxLDEtMSwxLjg5LjIxLjM4YTYuMDgsNi4wOCwwLDAsMSwuNSwxLjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQu''@;'; put 'put ''MDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZW''@;'; put 'put ''NUgyNnY3Ljg5YTMuMiwzLjIsMCwwLDEsMiwxLjcyVjVhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0uNzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCww''@;'; put 'put ''LS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZhNy44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSwwLDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCww''@;'; put 'put ''LS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4xNiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAsMC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44Mywx''@;'; put 'put ''LjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYsMCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcuMjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmEx''@;'; put 'put ''LjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjlsMS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYsMS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCww''@;'; put 'put ''LDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4xOWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAsMS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEt''@;'; put 'put ''MS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwxOC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQxYTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4y''@;'; put 'put ''Myw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEuODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjEuODdMMjMsM0g2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5''@;'; put 'put ''LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4''@;'; put 'put ''LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2''@;'; put 'put ''LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzdsLTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4x''@;'; put 'put ''NSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0xLjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGExLjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3''@;'; put 'put ''LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4xNiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCww''@;'; put 'put ''LDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiwwLDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4yOWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0x''@;'; put 'put ''LjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4xMVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwxLjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2''@;'; put 'put ''LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwtLjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwxLDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4''@;'; put 'put ''bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCwwLDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEyQTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEs''@;'; put 'put ''MSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xMiwyMC4zNWE0LDQsMCwxLDAs''@;'; put 'put ''NC4wOCw0QTQuMDYsNC4wNiwwLDAsMCwyNC4xMiwyMC4zNVptMCw2LjQ2YTIuNDMsMi40MywwLDEsMSwyLjQ4LTIuNDNBMi40NiwyLjQ2LDAsMCwxLDI0LjEyLDI2LjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE0LjQ5LDMxSDZWNUgyMy4wOGE2Ljk0LDYuOTQsMCwwLDEsLjYtMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNi4yM2wtMS4xLTEuMDhBMy4xMSwzLjExLDAsMCwxLDE0LjQ5LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE1LjMzVjEyLjcxYTcsNywwLDAsMS0yLTF2MS44OEEzLjIsMy4yLDAsMCwxLDI4LDE1LjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1LDMxSDZWNUgy''@;'; put 'put ''NnY4Ljc4YTIuMzcsMi4zNywwLDAsMSwyLDEuNTdWNWEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMy41NCwyMy40N2wtMi0uNjFhNy4wNiw3LjA2LDAsMCwwLS41OC0xLjQxbDEtMS44NmEuMzcuMzcsMCwwLDAtLjA3LS40NEwzMC40MSwxNy43YS4zNy4zNywwLDAsMC0uNDQtLjA3bC0xLjg1LDFBNyw3LDAsMCwwLDI2LjY5LDE4bC0uNjEtMmEuMzcuMzcsMCww''@;'; put 'put ''LDAtLjM2LS4yNWgtMmEuMzcuMzcsMCwwLDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42MWwtMS44Mi0xYS4zNy4zNywwLDAsMC0uNDQuMDdsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MmE3LDcsMCwwLDAtLjYxLDEuNDRsLTIsLjYxYS4zNy4zNywwLDAsMC0u''@;'; put 'put ''MjYuMzV2MmEuMzcuMzcsMCwwLDAsLjI2LjM1bDIsLjYxYTcsNywwLDAsMCwuNjEsMS40MWwtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NEwxOSwzMmEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJh''@;'; put 'put ''LjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OGE3LjA2LDcuMDYsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVW''@;'; put 'put ''MjMuODNBLjM3LjM3LDAsMCwwLDMzLjU0LDIzLjQ3Wk0yNC43LDI4LjE5QTMuMzMsMy4zMywwLDEsMSwyOCwyNC44NiwzLjMzLDMuMzMsMCwwLDEsMjQuNywyOC4xOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMu''@;'; put 'put ''NTQsMjMuNDdsLTItLjYxYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3''@;'; put 'put ''LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCww''@;'; put 'put ''LC4yNi4zNWwyLC42MWE3LDcsMCwwLDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2''@;'; put 'put ''bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwz''@;'; put 'put ''My41NCwyMy40N1pNMjQuNywyOC4xOUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjU1''@;'; put 'put ''LDMxSDZWNUgyMS44N0wyMywzSDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxQTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJh''@;'; put 'put ''LjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3''@;'; put 'put ''LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCwwLDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwu''@;'; put 'put ''MzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCwwLC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNyww''@;'; put 'put ''LDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4xOUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NS41NSwzMUg2VjVIMjMuMDhhNi45NCw2Ljk0LDAsMCwxLC42LTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTcuMTZsLTEtMUEyLjM4LDIuMzgsMCwwLDEsMTUuNTUsMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS4zNlYxMi43MWE3LDcsMCwwLDEtMi0xdjJBMi4zNywyLjM3LDAsMCwxLDI4LDE1LjM2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIC8+JyksVC5DbHJTaGFwZVR3b1dheUFycm93''@;'; put 'put ''cz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuNDMsMTYuODNBMSwxLDAsMCwwLDIyLDE4LjI0TDI1LjcyLDIySDcuODNhMSwxLDAsMCwwLDAsMkgyNS43MkwyMiwyNy43YTEsMSwwLDEsMCwxLjQyLDEuNDFMMjkuNTMsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4yNCwxOC40NWExLDEsMCwwLDAsLjcxLTEuNzFMMTAuMjQsMTNIMjguMTJhMSwxLDAsMCwwLDAtMkgxMC4yNGwzLjcxLTMuNzNhMSwxLDAsMCwwLTEuNDItMS40MUw2LjQyLDEybDYuMTEsNi4xNEExLDEsMCwwLDAsMTMu''@;'; put 'put ''MjQsMTguNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlU3dpdGNoPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LjcxLDE0SDIwLjkyVjEySDUuNzFMOS40Miw4LjI3QTEsMSwwLDEsMCw4LDYuODZMMS44OSwxMyw4LDE5''@;'; put 'put ''LjE0YTEsMSwwLDEsMCwxLjQyLTEuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEyIiB3aWR0aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuOTIsMTcuODZhMSwxLDAsMCwwLTEuNDIsMS40MUwzMC4y''@;'; put 'put ''MSwyM0gxNXYySDMwLjIxTDI2LjUsMjguNzRhMSwxLDAsMSwwLDEuNDIsMS40TDM0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMjMiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFQuQ2xyU2hhcGVUb29scz0oMCx2LmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMjAsMTRIMTZhMSwxLDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE1QTEsMSwwLDAsMCwyMCwxNFptLS40LDYuNkgxNi40VjE1LjRoMy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzMuNzEsMTIuMzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYy''@;'; put 'put ''OGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0xNCw2aDhWOEgxNFpNMzIsMTdIMjJ2MS45M0gzMlYyOEg0VjE4LjkzSDE0VjE3SDRWMTMuNUw3LjUsMTBoMjFMMzIsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYuNCIgeT0iMTUuNCIgd2lkdGg9IjMuMiIgaGVpZ2h0PSI1LjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMjFhMSwxLDAsMCwxLTEsMUgx''@;'; put 'put ''NmExLDEsMCwwLDEtMS0xVjE5SDJ2OWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTlIMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4Ljky''@;'; put 'put ''LDhoLTVWNi4wNUEyLDIsMCwwLDAsMjIsNEgxMy44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCwwLS43MS4yOUwyLjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMTdIMTVWMTVhMSwxLDAsMCwxLDEtMWg0YTEsMSwwLDAsMSwxLDF2MkgzNFYxMy4wOEExLDEsMCww''@;'; put 'put ''LDAsMzMuNzEsMTIuMzhaTTIyLDhIMTRWNmg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlV2luZG93Q2xvc2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4''@;'; put 'put ''LDE2LjU5LDEwLjcxLDkuMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4n''@;'; put 'put ''KSxULkNsclNoYXBlV2luZG93TWF4PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy44OSw5aC0yMGEyLDIsMCwwLDAtMiwyVjI1YTIsMiwwLDAsMCwyLDJoMjBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMjcuODksOVptLTIwLDE2VjExaDIwVjI1WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZVdpbmRvd01pbj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjdIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxULkNsclNoYXBlV2luZG93UmVzdG9yZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsOEgxNGEyLDIsMCwwLDAtMiwydjJoMlYxMEgyOFYyMEgyNnYyaDJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMjgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDE0SDhhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTZBMiwyLDAsMCwwLDIyLDE0Wk04LDI2VjE2SDIyVjI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIC8+JyksVC5DbHJTaGFwZVpvb21Jbj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwxLDE2LDI1LjkxWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDE1SDE3VjExYTEsMSwwLDAsMC0yLDB2NEgxMWExLDEsMCwwLDAsMCwyaDR2NGExLDEsMCwwLDAsMiwwVjE3aDRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAv''@;'; put 'put ''PicpLFQuQ2xyU2hhcGVab29tT3V0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMTVIMTJhMSwxLDAsMCwwLDAsMmg4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlS2V5PSgwLHYuY2xySWNvblNWRykoJzxyZWN0IHg9IjYuMzMi''@;'; put 'put ''IHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVpZ2h0PSIyLjU3IiByeD0iMSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjMuMzUsMTYuOGwuNjMtLjYzQTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcu''@;'; put 'put ''NDVaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywzLDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4''@;'; put 'put ''LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykg''@;'; put 'put ''cm90YXRlKC00NSkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M2E1LDUsMCwwLDAsLjYzLS43N0gyMi4yM2wtLjI5LDBMMjAuNTIsMTYuOCwzMiwy''@;'; put 'put ''OC4yOFYzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBMMjAuMSw4LjA2bDEtMS43OUwxOC43MSwzLjg0YTUsNSwwLDAsMC03''@;'; put 'put ''LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40LS40TDE4LDI2LjQ4aDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy''@;'; put 'put ''dGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEiIHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEg''@;'; put 'put ''MTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzUsMTYuOGwuNjMtLjYzQTUsNSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4w''@;'; put 'put ''NywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0zLTNMMTQsMjMuMzFhMywz''@;'; put 'put ''LDAsMCwxLTQuMjQsMEw0LjUsMThhMywzLDAsMCwxLDAtNC4yNGw4LjU2LTguNTZhMywzLDAsMCwxLDQuMjQsMGw1LjI2LDUuMjZhMywzLDAsMCwxLDAsNC4yNGwtMiwyTDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42QTUs''@;'; put 'put ''NSwwLDAsMCwyNCw5LjFMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcsMTUu''@;'; put 'put ''NjRhMSwxLDAsMCwxLTEuNDEsMGwtLjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEsMSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIsMjgu''@;'; put 'put ''MjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM4LDE2Ljc3bC42LS42YTUsNSwwLDAsMCwuNjMtLjc3SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42MkwxOC43MSwzLjg0YTUsNSwwLDAs''@;'; put 'put ''MC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEsMCwwLDEtMS40MSwwbC0uNC0uNGExLDEsMCww''@;'; put 'put ''LDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNkE1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwz''@;'; put 'put ''LjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEuNjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFM''@;'; put 'put ''MTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlTGlicmFyeT0oMCx2LmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzMuNDgsMjkuNjMsMjYuNzQsMTEuODJhMiwyLDAsMCwwLTIuNTgtMS4xNkwyMSwxMS44NVY4LjkyQTEuOTIsMS45MiwwLDAsMCwxOS4wOCw3SDE0VjQuOTJBMS45MiwxLjkyLDAsMCwwLDEyLjA4LDNINUEyLDIsMCwwLDAsMyw1VjMyYTEsMSwwLDAsMCwxLDFIMjBh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVYxOS4yN2w1LDEzLjIxYTEsMSwwLDAsMCwxLjI5LjU4bDUuNjEtMi4xNGExLDEsMCwwLDAsLjU4LTEuMjlaTTEyLDguODNWMzFINVY1aDdaTTE5LDMxSDE0VjloNVptOC41MS0uMjVMMjEuMTMsMTMuOTJsMy43NC0xLjQyLDYuMzksMTYuODNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi43NSwzSDUuMjVBMS4xNSwxLjE1LDAsMCwwLDQsNFYzM0gxNFY0QTEuMTUsMS4xNSwwLDAsMCwxMi43NSwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43NywzMS4wOWwtNi45NC0xOC4zYTEsMSwwLDAsMC0xLjI5LS41OEwyMiwxMy41OVY5YTEsMSwwLDAsMC0xLTFIMTZWMzNoNlYxNC42OUwyOC45MywzM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJT''@;'; put 'put ''aGFwZUJvbHQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUyLDM0aC0zYTEsMSwwLDAsMS0uODgtMS40NEwxMi41NSwyMUg2YTEsMSwwLDAsMS0uODUtMS41NGwxMC42OC0xN0ExLDEsMCwwLDEsMTYuNjQsMkgzMC4wN2ExLDEsMCwwLDEsLjc3LDEuNjlMMjEuNzgsMTRoNS4zOGEx''@;'; put 'put ''LDEsMCwwLDEsLjczLDEuNjZsLTE2LjYzLDE4QTEsMSwwLDAsMSwxMC41MiwzNFpNOS4xOCwzMmguOTFMMjQuODYsMTZIMTkuNTlhMSwxLDAsMCwxLS43Ny0xLjY5TDI3Ljg4LDRIMTcuMTlMNy43NywxOUgxNC4yYTEsMSwwLDAsMSwuODgsMS40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjgsMi4yOUEuNDkuNDksMCwwLDAsMzAuMzUsMkgxNi40MmEuNS41LDAsMCwwLS40Mi4yM2wtMTAuNzEsMTdBLjQ5LjQ5LDAsMCwwLDUuNywyMGg3LjY3TDYuNiwzMy4yNWEuNTIuNTIsMCwwLDAsLjQ2Ljc1''@;'; put 'put ''aDNhLjUuNSwwLDAsMCwuMzctLjE2TDI4LDE0Ljg1YS41LjUsMCwwLDAtLjM3LS44NUgyMC44OUwzMC43MiwyLjgyQS40OS40OSwwLDAsMCwzMC44LDIuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVXcmVuY2g9KDAsdi5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTMzLjE4LDI2LjExLDIwLjM1LDEzLjI4QTkuMjgsOS4yOCwwLDAsMCw3LjU0LDIuNzlsLTEuMzQuNTksNS4zOCw1LjM4TDguNzYsMTEuNTksMy4zOCw2LjIxLDIuNzksNy41NEE5LjI3LDkuMjcsMCwwLDAsMTMuMjgsMjAuMzVMMjYuMTEsMzMuMThhMiwyLDAsMCww''@;'; put 'put ''LDIuODMsMGw0LjI0LTQuMjRBMiwyLDAsMCwwLDMzLjE4LDI2LjExWm0tNS42Niw1LjY2TDEzLjg4LDE4LjEybC0uNTcuMTZhNy4yNyw3LjI3LDAsMCwxLTkuMzEtNyw3LjIsNy4yLDAsMCwxLC4xNS0xLjQ4bDQuNjEsNC42MSw1LjY2LTUuNjZMOS44MSw0LjE1YTcuMjcsNy4yNywwLDAsMSw4''@;'; put 'put ''LjQ3LDkuMTZsLS4xNi41N0wzMS43NywyNy41M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjcuMTMiIGN5PSIyNy4wOSIgcj0iMS4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuMjEgMjcuMTIpIHJv''@;'; put 'put ''dGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43MywyNy43MiwxOS42NywxMy42NmE4Ljc5LDguNzksMCwwLDAtMTItMTAuNUwxMyw4LjUzLDguNTMsMTMsMy4xNiw3LjY3YTguNzksOC43OSww''@;'; put 'put ''LDAsMCwxMC41LDEyTDI3LjcyLDMzLjczYTEuMDcsMS4wNywwLDAsMCwxLjUsMGw0LjUxLTQuNTFBMS4wNywxLjA3LDAsMCwwLDMzLjczLDI3LjcyWk0yOSwyOWExLjM4LDEuMzgsMCwxLDEsMC0yQTEuMzgsMS4zOCwwLDAsMSwyOSwyOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZUJ1bGxzZXllPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsLjc3LDEuODZhMTQuMDcsMTQuMDcsMCwxLDEtMTAsMTBsLTEuODYtLjc4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjQ1LDE1LjdhMTAuODEsMTAuODEsMCwxLDAsOC4zLTguMjZMMTYuMzcsOUE5LjI0LDkuMjQsMCwxLDEsOSwxNi4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIyLjA5YTQuMDgsNC4wOCwwLDAsMS00LTMuNjhsLTEuNjMtLjY4YzAsLjA5LDAsLjE4LDAsLjI3QTUuNjksNS42OSwwLDEsMCwxOCwxMi4zMWgtLjI0TDE4LjQzLDE0QTQuMDcsNC4wNywwLDAsMSwxOCwyMi4wOVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguMiwxMy4zNGEuNS41LDAsMCwwLC4zNS4xNUgxMi4ybDUuMzcsNS4zN0ExLDEsMCwwLDAsMTksMTcuNDRMMTMuNTMsMTJWOC41MWEuNS41LDAsMCwwLS4xNS0uMzVMNy43OSwy''@;'; put 'put ''LjU3YS41LjUsMCwwLDAtLjg1LjM1djRIM2EuNS41LDAsMCwwLS4zNS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDE4Ljg1YTEsMSwwLDAsMS0xLjQxLDBsLTMtM0E0LDQsMCwwLDAsMTMuOTEsMTgs''@;'; put 'put ''NC4wOSw0LjA5LDAsMSwwLDE4LDEzLjkxYTQsNCwwLDAsMC0yLC41NWwzLDNBMSwxLDAsMCwxLDE5LDE4Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsMS42''@;'; put 'put ''LDMuODlBMTEuODksMTEuODksMCwxLDEsNi40OSwxNS4zTDIuNjEsMTMuNjhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxNS45NEExMC4xNywxMC4xNywwLDEsMCwxNiw4bDEuNjks''@;'; put 'put ''NC4xMS4zMSwwQTUuODgsNS44OCwwLDEsMSwxMi4xMiwxOGMwLS4xMiwwLS4yMywwLS4zNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC4yLDEzLjM0YS41LjUsMCwwLDAsLjM1LjE1SDEyLjJsMi4zNSwyLjM1QTQu''@;'; put 'put ''MDksNC4wOSwwLDAsMSwxNiwxNC40NkwxMy41MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSwwLDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxULkNsclNoYXBlVGFy''@;'; put 'put ''Z2V0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw3LjJBMTAuOCwxMC44LDAsMSwwLDI4LjgsMTgsMTAuODEsMTAuODEsMCwwLDAsMTgsNy4yWm0wLDIwQTkuMiw5LjIsMCwxLDEsMjcuMiwxOCw5LjIxLDkuMjEsMCwwLDEsMTgsMjcuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEyLjMxQTUuNjksNS42OSwwLDEsMCwyMy42OSwxOCw1LjY5LDUuNjksMCwwLDAsMTgsMTIuMzFabTAsOS43N0E0LjA5LDQuMDksMCwxLDEsMjIuMDksMTgsNC4wOSw0LjA5LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSI0LjA5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDcuODNBMTAuMTcsMTAuMTcs''@;'; put 'put ''MCwxLDAsMjguMTcsMTgsMTAuMTgsMTAuMTgsMCwwLDAsMTgsNy44M1ptMCwxNkE1Ljg4LDUuODgsMCwxLDEsMjMuODgsMTgsNS44OCw1Ljg4LDAsMCwxLDE4LDIzLjg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMjcuODNBMTEuODMsMTEuODMsMCwxLDEsMjkuODMsMTgsMTEuODUsMTEuODUsMCwwLDEsMTgsMjkuODNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLFQuQ2xyU2hhcGVGbGFtZT0o''@;'; put 'put ''MCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMywxNi42NmMtMS4xOS0yLjA5LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy43OCw0LjQyLDE5LjVBOS4zLDkuMywwLDAsMCwzLDI0LjYxQzMs''@;'; put 'put ''MjkuNzIsNS44NiwzNCwxMS42NywzNEgyMi40OEMyOC4yOCwzNCwzMywyOSwzMywyMi43OEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjY2Wk0yMi40OCwzMkgxMS43N0M4LjEzLDMyLDUsMjguNjYsNSwyNC42MWE3LjQzLDcuNDMsMCwwLDEsMS4xNi00LjEzYy43My0xLjI5LDQuMDUtNy4y''@;'; put 'put ''MSw1LjY1LTEwLjA3bDMsNS4yOGExLDEsMCwwLDAsLjg3LjUxaDBhMSwxLDAsMCwwLC44Ny0uNTFMMjIuNDksNWMxLjg2LDMuMzMsNi4xNSwxMSw3LjA3LDEyLjZBOS4yNCw5LjI0LDAsMCwxLDMxLDIyLjc4QzMxLDI3Ljg3LDI3LjE4LDMyLDIyLjQ4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUuNzUsMjEuNzNjLS42NS0xLjE2LTQuMzgtNy44MS00LjM4LTcuODFhLjguOCwwLDAsMC0xLjQsMGwtNC4yLDcuNDgtMS41OS0yLjQ5YS44LjgsMCwwLDAtMS4zNSwwTDkuMzcsMjQuMzVhNC4zNSw0''@;'; put 'put ''LjM1LDAsMCwwLS44MiwyLjYsNC40OSw0LjQ5LDAsMCwwLC41LDJIMTFhMywzLDAsMCwxLS44My0yLDIuNzgsMi43OCwwLDAsMSwuNTYtMS43M2wyLjgtNC4zOCwxLjY2LDIuNmEuOC44LDAsMCwwLDEuNDEtLjEyLDcuODIsNy44MiwwLDAsMSwuNC0uOEwyMC42NywxNmwzLjY5LDYuNTdhNC44''@;'; put 'put ''Myw0LjgzLDAsMCwxLC43NywyLjcxQTUsNSwwLDAsMSwyMy40NiwyOWgyLjEzYTYuNjgsNi42OCwwLDAsMCwxLjE0LTMuNzQsNi40NSw2LjQ1LDAsMCwwLTEtMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzEuMywxNi4zMmMtMS4xOS0yLjA5LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy40Myw0LjQyLDE5LjE1QTkuMyw5LjMsMCwwLDAsMywyNC4yNmMwLDUuMTEsMy44OCw5LjY1LDguNjcsOS43NEgy''@;'; put 'put ''Mi40OEMyOC4yOCwzNCwzMywyOC42MiwzMywyMi40NEExMS4xMywxMS4xMywwLDAsMCwzMS4zLDE2LjMyWk0yMS40OCwzMkgxNC41NEE0LjY4LDQuNjgsMCwwLDEsMTAsMjcuNDFhMy45MSwzLjkxLDAsMCwxLC43NS0yLjM0bDMuMzUtNS4yMWEuNS41LDAsMCwxLC44NCwwbDEuNzgsMi43Nyww''@;'; put 'put ''LS4wOGMuNjMtMS4xMSw0LjIzLTcuNDgsNC4yMy03LjQ4YS41LjUsMCwwLDEsLjg3LDBzMy42LDYuMzgsNC4yMyw3LjQ4QTUuODMsNS44MywwLDAsMSwyNywyNS43NkMyNywzMiwyMi4xLDMyLDIxLjQ4LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxU''@;'; put 'put ''LkNsclNoYXBlSG91cmdsYXNzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMUE2LjY3LDYuNjcsMCwwLDAs''@;'; put 'put ''MjYsMTEuMDlWNGgzYTEsMSwwLDAsMCwwLTJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMThoMGE2LjI3LDYuMjcsMCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJI''@;'; put 'put ''N2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaTTEyLDI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEsMCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCwwLDEtMS4xOS0u''@;'; put 'put ''NjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyNHY3LjA5YTQuNjYsNC42NiwwLDAsMS0xLjg4LDMuNzJsLTEuMjgsMWgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAsMC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0LDQuNjcsNC42NywwLDAsMSwxLjE5''@;'; put 'put ''LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEsMjQsMjQuOTFWMzJIMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4z''@;'; put 'put ''Niw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMWE2LjY0LDYuNjQsMCwwLDAsMS4wOS0xSDIyLjIzYTMuNjQsMy42NCwwLDAsMS0uNzgtLjA5bC0uNjIuNDZoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRhMSwxLDAs''@;'; put 'put ''MCwwLC42NS45NCw0LjY3LDQuNjcsMCwwLDEsMS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyVjI0LjkxYTQuNjYsNC42NiwwLDAsMSwxLjg4LTMuNzJsMS4yOC0xYTQuNjYsNC42NiwwLDAsMSwxLjE4LS42MywxLDEsMCwwLDAsLjY1LS45NFYxNy4zM2ExLDEs''@;'; put 'put ''MCwwLDAtLjY1LS45NCw0LjY3LDQuNjcsMCwwLDEtMS4xOS0uNjNsLTEuMjgtMUE0LjY2LDQuNjYsMCwwLDEsMTIsMTEuMDlWNEgyMi40NUwyMy42LDJIN0ExLDEsMCwwLDAsNyw0aDN2Ny4wOWE2LjY3LDYuNjcsMCwwLDAsMi42OSw1LjMzbDEuMjgsMUE2LjM2LDYuMzYsMCwwLDAsMTUsMTho''@;'; put 'put ''MGE2LjI3LDYuMjcsMCwwLDAtMSwuNjJsLTEuMjgsMUE2LjY3LDYuNjcsMCwwLDAsMTAsMjQuOTFWMzJIN2ExLDEsMCwwLDAsMCwySDI5YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEu''@;'; put 'put ''MjgtMWE2LjY4LDYuNjgsMCwwLDAsMi41Ny00LjE2QTcuNTMsNy41MywwLDAsMSwyNCwxMC40OXYuNjFhNC42Niw0LjY2LDAsMCwxLTEuODgsMy43MmwtMS4yOCwxaDBhNC42Niw0LjY2LDAsMCwxLTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0''@;'; put 'put ''LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwxQTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMlYyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42NS0uOTQsNC42''@;'; put 'put ''Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OS0ySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBh''@;'; put 'put ''Ni4yNyw2LjI3LDAsMCwwLTEsLjYybC0xLjI4LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNGgyMmExLDEsMCwwLDAsMC0yaC0yMmExLDEsMCwx''@;'; put 'put ''LDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42NywzMmgtMjJhMSwxLDAsMCwwLDAsMmgyMmExLDEsMCwxLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41NSwxNS42N0E2LjA3LDYuMDcsMCwwLDAsMjUsMTEuMTJWNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEuNDgsMTEuNDgsMCwwLDAsMi45MSwxLjcydjEuMTZhMTEuNDgsMTEuNDgsMCwwLDAtMi45MSwxLjcyLDYuMDcsNi4w''@;'; put 'put ''NywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MmE2LjA3LDYuMDcsMCwwLDAtMi40NS00LjU1LDExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOUExMS40OCwxMS40OCwwLDAsMCwyMi41NSwxNS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi42Nyw0SDIyLjQ1''@;'; put 'put ''TDIzLjYsMkg2LjY3YTEsMSwwLDEsMCwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjUxLDIwLjI3YTYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MmE2''@;'; put 'put ''LjA3LDYuMDcsMCwwLDAtMi40NS00LjU1LDExLjQ4LDExLjQ4LDAsMCwwLTIuOTEtMS43MlYxNy4zOWExMS40OCwxMS40OCwwLDAsMCwyLjkxLTEuNzJsLjMtLjI3aC0uNjJBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQu''@;'; put 'put ''NTUsMTEuNDgsMTEuNDgsMCwwLDAsMi45MSwxLjcydjEuMTZBMTEuNDgsMTEuNDgsMCwwLDAsMTIuNTEsMjAuMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEu''@;'; put 'put ''MTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''YWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcs''@;'; put 'put ''NEgyMi43OGE3LjQ1LDcuNDUsMCwwLDEsLjg5LTJoLTE3YTEsMSwwLDEsMCwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41NSwyMC4yN2ExMS40OCwxMS40OCwwLDAsMC0yLjkx''@;'; put 'put ''LTEuNzJWMTcuMzlhMTEuNDgsMTEuNDgsMCwwLDAsMi45MS0xLjcyQTYuMjUsNi4yNSwwLDAsMCwyNSwxMS41NSw3LjQ3LDcuNDcsMCwwLDEsMjIuNSw2SDEwLjA2djUuMTJhNi4wNyw2LjA3LDAsMCwwLDIuNDUsNC41NSwxMS40OCwxMS40OCwwLDAsMCwyLjkxLDEuNzJ2MS4xNmExMS40OCwx''@;'; put 'put ''MS40OCwwLDAsMC0yLjkxLDEuNzIsNi4wNyw2LjA3LDAsMCwwLTIuNDUsNC41NXY1LjEySDI1VjI0LjgyQTYuMDcsNi4wNywwLDAsMCwyMi41NSwyMC4yN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksVC5DbHJTaGFwZU5vQWNjZXNzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4xNSwxNUg4Ljg1QTEuODUsMS44NSwwLDAsMCw3''@;'; put 'put ''LDE2Ljg1djIuMjlBMS44NSwxLjg1LDAsMCwwLDguODUsMjFIMjcuMTVBMS44NSwxLjg1LDAsMCwwLDI5LDE5LjE1VjE2Ljg1QTEuODUsMS44NSwwLDAsMCwyNy4xNSwxNVptLjI1LDQuMTVhLjI1LjI1LDAsMCwxLS4yNS4yNUg4Ljg1YS4yNS4yNSwwLDAsMS0uMjUtLjI1VjE2Ljg1YS4yNS4y''@;'; put 'put ''NSwwLDAsMSwuMjUtLjI1SDI3LjE1YS4yNS4yNSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LjE1LDIwSDYu''@;'; put 'put ''ODVBLjg1Ljg1LDAsMCwxLDYsMTkuMTVWMTYuODVBLjg1Ljg1LDAsMCwxLDYuODUsMTZIMjkuMTVhLjg1Ljg1LDAsMCwxLC44NS44NXYyLjI5QS44NS44NSwwLDAsMSwyOS4xNSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZU9yZ2Fu''@;'; put 'put ''aXphdGlvbj0oMCx2LmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44IDE0IDE3LjIgMTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4''@;'; put 'put ''LjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDIzSDRhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMTRhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMTQsMjNaTTQsMzFWMjVIMTR2NloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDIzSDIyYTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjVBMiwyLDAsMCwwLDMyLDIzWk0yMiwzMVYyNUgzMnY2WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsMTNIMjNhMiwyLDAsMCwwLDItMlY1YTIsMiwwLDAsMC0yLTJIMTNhMiwyLDAsMCwwLTIsMnY2QTIsMiwwLDAsMCwxMywxM1ptMC04SDIzdjZIMTNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIx''@;'; put 'put ''Ljg4IDkuOCAyMS44OCA5LjggMTguOCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMyIgd2lkdGg9IjE0''@;'; put 'put ''IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksVC5DbHJTaGFwZUJhbGFuY2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDMzSDEyYTEsMSwwLDAsMSwwLTJIMjRhMSwxLDAsMCwxLDAsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIyLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI4LDdIOEExLDEsMCwwLDEsOCw1SDI4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi45MywyNC43OWE3LjIzLDcuMjMsMCwwLDEtNS44MS0yLjg5bC0uNi0uOCwxLjU5LTEuMjEu''@;'; put 'put ''Ni44YTUuMjgsNS4yOCwwLDAsMCw4LjQyLDBsLjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDI2LjkzLDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNTEsMTkuMjVhLjguOCww''@;'; put 'put ''LDAsMS0uNzMtLjQ4TDI2LjkzLDEyLjJsLTIuODUsNi41N2EuOC44LDAsMCwxLTEuNDctLjY0TDI2LjIsOS44N2EuODMuODMsMCwwLDEsMS40NywwbDMuNTgsOC4yNmEuOC44LDAsMCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNOS42OCwyNC43OUE3LjIzLDcuMjMsMCwwLDEsMy44OCwyMS45bC0uNi0uOEw0Ljg2LDE5LjlsLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSw5LjY4LDI0Ljc5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjYsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDkuNjgsMTIuMiw2Ljg0LDE4Ljc3YS44LjgsMCwwLDEtMS40Ny0uNjRMOC45NSw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBMMTQsMTgu''@;'; put 'put ''MTNhLjguOCwwLDAsMS0uNzMsMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLFQuQ2xyU2hhcGVJZEJhZGdlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAs''@;'; put 'put ''MCwxOCwyMlptMC02Ljg2YTIuNjMsMi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiww''@;'; put 'put ''LDAsMC0yLDJ2N2g4Wk0yMCw5SDE2VjRoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMwVjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAs''@;'; put 'put ''MCwwLDEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yOCw2SDI0VjhoNFYzMkg4VjhoNFY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjgsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0wLTYuODZhMi42MywyLjYzLDAsMSwxLTIuNjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4y''@;'; put 'put ''Ni0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOS44OSwxOS41Niw5SDE2VjRoNFY4''@;'; put 'put ''LjI0bDItMy40NlY0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3aDQuNjRBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0y''@;'; put 'put ''OCwxNS40VjMySDhWOGg0VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYu''@;'; put 'put ''ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjJhNC4yMyw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0YTIsMiwwLDAsMC0yLTJIMTZhMiwyLDAsMCwwLTIsMnY3aDhaTTIwLDlIMTZWNGg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBoMS42VjI3Ljg3QTguMzMsOC4zMywwLDAsMSwxOCwyNS4yOWE4LjMzLDguMzMsMCwwLDEsNi40LDIuNTlWMzBIMjZWMjcuN2Ex''@;'; put 'put ''LjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJW''@;'; put 'put ''MzJIOFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSw0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEw''@;'; put 'put ''LjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTI4LDZIMjNWOGg1VjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyOCw2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOSw5Ljg5LDIxLDYuNVY0YTIsMiwwLDAsMC0yLTJIMTdhMiwyLDAsMCwwLTIsMnY2aDRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxNy43NyIgcj0iNC4y''@;'; put 'put ''MyIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAs''@;'; put 'put ''MCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS40VjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgi''@;'; put 'put ''IGN5PSIxNy43NyIgcj0iNC4yMyIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwx''@;'; put 'put ''MC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWOGg1VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41''@;'; put 'put ''QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksVC5DbHJTaGFwZVJlcGVhdD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMTQuMTVBMy4xNywzLjE3LDAsMCwxLDkuMTcsMTFIMjguNGwtNC4y''@;'; put 'put ''OCw0LjU0YTEsMSwwLDEsMCwxLjQ2LDEuMzdMMzIuMDksMTAsMjUuNTgsMy4wOWExLDEsMCwxLDAtMS40NiwxLjM3TDI4LjQsOUg5LjE3QTUuMTcsNS4xNywwLDAsMCw0LDE0LjE1djYuMWwyLTIuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIgZD0iTTMwLDIxLjg1QTMuMTcsMy4xNywwLDAsMSwyNi44MywyNUg3LjZsNC4yOC00LjU0YTEsMSwwLDEsMC0xLjQ2LTEuMzdMMy45MSwyNmw2LjUxLDYuOTFhMSwxLDAsMSwwLDEuNDYtMS4zN0w3LjYsMjdIMjYuODNBNS4xNyw1LjE3LDAsMCwwLDMyLDIxLjg1di02''@;'; put 'put ''LjFsLTIsMi4xMloiLz4nKSxULkNsclNoYXBlRmlsZUdyb3VwPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzRIMTNhMSwxLDAsMCwxLTEtMVYxMWExLDEsMCwwLDEsMS0xSDMxYTEsMSwwLDAsMSwxLDFW''@;'; put 'put ''MzNBMSwxLDAsMCwxLDMxLDM0Wk0xNCwzMkgzMFYxMkgxNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxNiIgeT0iMTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTYiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE2IiB5PSIyNCIgd2lkdGg9IjEyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTMxLDEwSDEzYTEsMSwwLDAsMC0xLDFWMzNhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMSwxMFpNMjgsMjZIMTZWMjRIMjhabTAtNEgxNlYyMEgyOFptMC00SDE2VjE2SDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYsMjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAsMCwxLDFINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMCwyOFY4SDI4Vjdh''@;'; put 'put ''MSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPicpLFQuQ2xyU2hhcGVQYXBlcmNsaXA9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjQyLDMyLjZBNi4zLDYuMyww''@;'; put 'put ''LDAsMSw0LDMwLjc5bC0uMTMtLjEzQTYuMiw2LjIsMCwwLDEsMiwyNi4yMiw2Ljc3LDYuNzcsMCwwLDEsNCwyMS40TDE5LjUsNi4wN2E4LjY3LDguNjcsMCwwLDEsMTIuMTUtLjM1QTgsOCwwLDAsMSwzNCwxMS40NGE5LDksMCwwLDEtMi43LDYuMzZMMTcuMzcsMzEuNkExLDEsMCwxLDEsMTYs''@;'; put 'put ''MzAuMThMMjkuODksMTYuMzhBNyw3LDAsMCwwLDMyLDExLjQ0YTYsNiwwLDAsMC0xLjc2LTQuMyw2LjY3LDYuNjcsMCwwLDAtOS4zNC4zNUw1LjQ1LDIyLjgyQTQuNzgsNC43OCwwLDAsMCw0LDI2LjIyYTQuMjEsNC4yMSwwLDAsMCwxLjI0LDNsLjEzLjEzYTQuNjQsNC42NCwwLDAsMCw2LjUt''@;'; put 'put ''LjIxTDI1LjIyLDE1Ljk0QTIuNywyLjcsMCwwLDAsMjYsMTRhMi4zNSwyLjM1LDAsMCwwLS42OS0xLjY4LDIuNjEsMi42MSwwLDAsMC0zLjY2LjEzbC05LjIsOS4xMmExLDEsMCwxLDEtMS40MS0xLjQyTDIwLjI4LDExYTQuNjIsNC42MiwwLDAsMSw2LjQ4LS4xM0E0LjMzLDQuMzMsMCwwLDEs''@;'; put 'put ''MjgsMTRhNC42OCw0LjY4LDAsMCwxLTEuNDEsMy4zNEwxMy4yOCwzMC41OEE2LjkxLDYuOTEsMCwwLDEsOC40MiwzMi42WiIvPicpLFQuQ2xyU2hhcGVTaHJpbms9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0z''@;'; put 'put ''MiwxNUgyMi40MWw5LjI1LTkuMjVhMSwxLDAsMCwwLTEuNDEtMS40MUwyMSwxMy41OVY0YTEsMSwwLDAsMC0yLDBWMTdIMzJhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEs''@;'; put 'put ''MCwwLDAsMCwyaDkuNTlMNC4zMywzMC4yNWExLDEsMCwxLDAsMS40MSwxLjQxTDE1LDIyLjQxVjMyYTEsMSwwLDAsMCwyLDBWMTlaIi8+JyksVC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40NCwzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43''@;'; put 'put ''LTExLjg4TDcuMzIsMTguNjRhOS4zLDkuMywwLDAsMCwxMy4xLDEzLjExTDE5LDMwLjMzQTcuMjksNy4yOSwwLDAsMSwxNC40NCwzMS45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjM2LDEuNjdhNC4x''@;'; put 'put ''Miw0LjEyLDAsMSwwLDQuMTEsNC4xMUE0LjEyLDQuMTIsMCwwLDAsMjUuMzYsMS42N1ptMCw2LjIzYTIuMTIsMi4xMiwwLDEsMSwyLjExLTIuMTJBMi4xMiwyLjEyLDAsMCwxLDI1LjM2LDcuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI2LjU2LDE4LjE4aC01YTEsMSwwLDAsMC0uMjQuMDVsMy4wOS0zLjU1YTIuODMsMi44MywwLDAsMC0uNjktNC4zM2wtOC00LjZhMSwxLDAsMCwwLTEuMTIuMDhMOS44Myw5LjU4QTEsMSwwLDAsMCw5LjY2LDExYTEsMSwwLDAsMCwuNzkuMzgsMSwxLDAsMCwwLC42''@;'; put 'put ''MS0uMjFsNC4yNy0zLjM0LDMuMTEsMS43Ny01LjA4LDUuNzhoMGE5LjI4LDkuMjgsMCwwLDAtNC41MywxLjgzbDEuNDMsMS40M0E3LjMsNy4zLDAsMCwxLDIwLjQyLDI4LjgxbDEuNDIsMS40M2E5LjI3LDkuMjcsMCwwLDAsLjc3LTEwLjA2aDIuODJsLS43Nyw2LjUxYTEsMSwwLDAsMCwuODgs''@;'; put 'put ''MS4xMWguMTJhMSwxLDAsMCwwLDEtLjg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjU2LDE4LjE4Wm0tNi4zNy03LjU2LDIuNTIsMS40NmEuNzkuNzksMCwwLDEsLjQuNTkuODEuODEsMCwwLDEtLjIuNjlMMTkuNzUsMTdBOS4xNyw5LjE3LDAsMCwwLDE2LDE1LjQ1''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzcsMzEuOTRhNy4zMSw3LjMxLDAsMCwxLTUuNy0xMS44OEw3LjY1LDE4LjY0YTkuMyw5LjMsMCwwLDAsMTMuMSwxMy4xMWwtMS40Mi0xLjQyQTcuMjksNy4y''@;'; put 'put ''OSwwLDAsMSwxNC43NywzMS45NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNjUsMi4xYTMuMTIsMy4xMiwwLDEsMCwzLjExLDMuMTJBMy4xMiwzLjEyLDAsMCwwLDI2LjY1LDIuMVoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODEsMTguMThIMjEuNDdxLS4zMS0uMzMtLjY2LS42M2w0LjM4LTQuODZhMi4xNCwyLjE0LDAsMCwwLS41My0zLjI3TDIwLjksNy4yM2wwLDBMMTcuMDUsNS4wN2ExLDEsMCwwLDAtMS4xMS4wOEwx''@;'; put 'put ''MS4xNSw4LjlhMSwxLDAsMCwwLDEuMjMsMS41OGw0LjI3LTMuMzQsMi44NywxLjYzTDEzLjYsMTUuMzlhOS4zMyw5LjMzLDAsMCwwLTQuNDQsMS44MmwxLjQyLDEuNDNBNy4zLDcuMywwLDAsMSwyMC43NSwyOC44MWwxLjQzLDEuNDNBOS4yNyw5LjI3LDAsMCwwLDIzLDIwLjE4aDIuNzRsLS43''@;'; put 'put ''Nyw2LjUxYTEsMSwwLDAsMCwuODcsMS4xMWguMTJhMSwxLDAsMCwwLDEtLjg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjgxLDE4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9''@;'; put 'put ''KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjA2LDExaC0yNGExLDEsMCwxLDAsMCwySDE0djkuNjVzMCwwLDAsMGwtMy43NSwxMGExLDEsMCwwLDAsLjU4LDEuMjksMS4xMywxLjEzLDAsMCwwLC4zNi4wNiwxLDEsMCwwLDAsLjkzLS42NUwxNS42MiwyNGg0Ljc2bDMuNTIsOS4zNWEx''@;'; put 'put ''LDEsMCwwLDAsLjkzLjY1LDEuMTMsMS4xMywwLDAsMCwuMzYtLjA2LDEsMSwwLDAsMCwuNTgtMS4yOUwyMiwyMi42OHMwLDAsMCwwVjEzaDguMDZhMSwxLDAsMSwwLDAtMlpNMjAsMjJIMTZWMTNoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE4LDEwYTQsNCwwLDEsMC00LTRBNCw0LDAsMCwwLDE4LDEwWm0wLTZhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcu''@;'; put 'put ''OTYiIGN5PSI1IiByPSIzIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDZhMSwxLDAsMCwwLDAsMmg4djguMzZzMCwwLDAsMEwxMC4xMSwzMy4xN2ExLDEsMCwwLDAsLjY2LDEuMjUsMS41NSwxLjU1LDAsMCww''@;'; put 'put ''LC4yOSwwLDEsMSwwLDAsMCwxLS43MWwzLjI5LTEwLjg0aDUuMzhMMjQsMzMuNzVhMSwxLDAsMCwwLDEsLjcxLDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsLjY2LTEuMjVMMjIsMjAuNHMwLDAsMCwwVjEyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZVNvcnRCeT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguNTQsMTNINy40NmExLDEsMCwwLDEsMC0ySDI4LjU0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xNywxOUg3LjQ2YTEsMSwwLDAsMSwwLTJIMjEuMTdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjc0LDI1SDcuNDZhMSwxLDAsMCwxLDAt''@;'; put 'put ''Mmg2LjI4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlQ29sbGFwc2VDYXJkPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyMUgzYTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxSDMzYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWMjJBMSwxLDAsMCwwLDMzLDIxWm0tMSw2SDRWMjNIMzJaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAt''@;'; put 'put ''MS4xMywwTDE4LDE4bC00LjUyLTQuNTJhLjguOCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAs''@;'; put 'put ''MC0xLjE0LjguOCwwLDAsMC0xLjEzLDBMMTgsMTIsMTMuNDgsNy40M2EuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMiIgd2lkdGg9''@;'; put 'put ''IjMyIiBoZWlnaHQ9IjgiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC43bC01Ljc5LTUuNzlhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDE4LDE3Ljg3bDQuMzgtNC4z''@;'; put 'put ''N2ExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjUsMTIuMjEsOC43MWExLDEsMCwwLDEsMC0xLjQyLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTEuNjds''@;'; put 'put ''NC4zOC00LjM4YTEsMSwwLDAsMSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksVC5DbHJTaGFwZUV4cGFuZENhcmQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEs''@;'; put 'put ''MSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCwzMyw2Wk0zMiwyOEg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjQ4LDE1Ljg2LDE4LDExLjM0bDQuNTIsNC41MmEuNzcu''@;'; put 'put ''NzcsMCwwLDAsLjU2LjI0LjgxLjgxLDAsMCwwLC41Ny0xLjM3TDE4LDkuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMjEuODYsMTgsMTcu''@;'; put 'put ''MzRsNC41Miw0LjUyYS43Ny43NywwLDAsMCwuNTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsMTUuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzMsNkgzQTEsMSwwLDAsMCwyLDdWMjlhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTIzLjc5LDIxLjQxYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTdsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMTQuMiwyMy43''@;'; put 'put ''OSwyMEExLDEsMCwwLDEsMjMuNzksMjEuNDFabTAtNi4yYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTAuODNsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsOGw1Ljc5LDUuNzlBMSwxLDAsMCwxLDIzLjc5LDE1LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlQnJpZWZjYXNlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiwyOGEwLDAsMCwwLDEsMCwwSDRWMjEuMzJhNy4xLDcuMSwwLDAsMS0yLTEuNDNWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5Ljg5YTYuNzQs''@;'; put 'put ''Ni43NCwwLDAsMS0yLDEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yNSwyMi40YTEsMSwwLDAsMCwxLTFWMTUuOTRIMjRWMThIMTR2MkgyNHYxLjRBMSwxLDAsMCwwLDI1LDIyLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0zMyw2SDI0VjQuMzhBMi40MiwyLjQyLDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQyLDIuNDIsMCwwLDAsMTIsNC4zOFY2SDNBMSwxLDAsMCwwLDIsN3Y4YTUsNSwwLDAsMCw1LDVoM3YxLjRhMSwxLDAsMCwwLDIsMFYxNS45NEgxMFYx''@;'; put 'put ''OEg3YTMsMywwLDAsMS0zLTNWOEgzMnY3YTMsMywwLDAsMS0zLDNIMjh2MmgxYTUsNSwwLDAsMCw1LTVWN0ExLDEsMCwwLDAsMzMsNlpNMjIsNkgxNFY0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMTFhLjQzLjQzLDAsMCwxLC40NC40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLDE4QTQuMDYsNC4wNiwwLDAsMCwzNCwxNFY2SDI0VjQuNDNBMi40NCwyLjQ0LDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQ0LDIuNDQsMCwwLDAsMTIsNC40M1Y2SDJ2OEE0LjA2LDQuMDYsMCwwLDAsNi4wNSwxOGg0VjE1LjkyaDJ2NS43''@;'; put 'put ''YTEsMSwwLDEsMS0yLDBWMjAuMDZINi4wNkE2LjA2LDYuMDYsMCwwLDEsMiwxOC40OXY5LjQ1YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOC40OWE2LDYsMCwwLDEtNC4wNiwxLjU3SDI4VjE4Wk0xNCw0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMWEuNDUuNDUsMCwwLDEs''@;'; put 'put ''LjQ1LjQzVjZIMTRaTTI2LDIxLjYyYTEsMSwwLDEsMS0yLDBWMjAuMDZIMTRWMThIMjRWMTUuOTJoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZUNvbG9yUGlja2VyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMC4wNWE1''@;'; put 'put ''LjA3LDUuMDcsMCwwLDAsLjEtNy4xN0E1LjA2LDUuMDYsMCwwLDAsMjYsM0wyMC43OCw4LjE1YTIuMTMsMi4xMywwLDAsMS0zLDBsLS42Ny0uNjdMMTUuNzIsOC45MiwyNy4wOCwyMC4yOGwxLjQyLTEuNDItLjY3LS42N2EyLjEzLDIuMTMsMCwwLDEsMC0zWk0yNi40NCwxMy44YTQuMDcsNC4w''@;'; put 'put ''NywwLDAsMC0xLjA4LDEuOTJsLTUuMDgtNS4wOEE0LjA3LDQuMDcsMCwwLDAsMjIuMiw5LjU2bDUuMTYtNS4xN2EzLjA5LDMuMDksMCwwLDEsNC4zNS0uMSwzLjA5LDMuMDksMCwwLDEtLjEsNC4zNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBh''@;'; put 'put ''dGggZD0iTTcuMywzMS41MWEyLDIsMCwxLDEtMi44My0yLjgzTDE4LjU4LDE0LjU3bC0xLjQyLTEuNDFMMy4wNSwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwuODksMzMuNTVBMSwxLDAsMCwwLC44OSwzNWExLDEsMCwwLDAsMS40MiwwbDEuNDMtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42''@;'; put 'put ''LDQuMDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwyMi44MiwxOC44MSwyMS40MSwxNy40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMuNzMsMi4xMWE0LjA5LDQuMDksMCwwLDAtNS43Ni4xTDIyLjgxLDcuMzhhMy4xMywzLjEzLDAs''@;'; put 'put ''MCwxLTQuMy4xMUwxNy4wOSw4LjkxLDI3LDE4Ljc5bDEuNDItMS40MkEzLjE4LDMuMTgsMCwwLDEsMjguNDYsMTNsNS4xNy01LjE3QTQuMDgsNC4wOCwwLDAsMCwzMy43MywyLjExWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yMi4xOCwx''@;'; put 'put ''Ni43OSw3LjQ2LDMxLjUxYTIsMiwwLDEsMS0yLjgyLTIuODNMMTkuMzUsMTRsLTEuNDEtMS40MUwzLjIyLDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TDEuMDYsMzMuNTVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwbDEuNDQtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQu''@;'; put 'put ''MDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwyMy42LDE4LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi42LDRIMjEuNTVhMy44OSwzLjg5LDAsMCwwLTcu''@;'; put 'put ''MzEsMEgxMy40QTIuNDEsMi40MSwwLDAsMCwxMSw2LjRWMTBIMjVWNi40QTIuNDEsMi40MSwwLDAsMCwyMi42LDRaTTIzLDhIMTNWNi4yNUEuMjUuMjUsMCwwLDEsMTMuMjUsNmgyLjY5bC4xMi0xLjExQTEuMjQsMS4yNCwwLDAsMSwxNi42MSw0YTIsMiwwLDAsMSwzLjE1LDEuMThsLjA5Ljg0''@;'; put 'put ''aDIuOWEuMjUuMjUsMCwwLDEsLjI1LjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuMjUsMTguMDZIMjEuMzNsMi44NC0yLjgzYTEsMSwwLDEsMC0xLjQyLTEuNDJMMTcuNSwxOS4wNmw1LjI1LDUuMjVhMSwxLDAsMCwwLC43''@;'; put 'put ''MS4yOSwxLDEsMCwwLDAsLjcxLTEuN2wtMi44NC0yLjg0SDMzLjI1YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yOSwxNmgyVjYuNjhBMS42NiwxLjY2LDAsMCwwLDI5LjM1LDVIMjcuMDhWN0gyOVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTI5LDMxSDdWN0g5VjVINi42NEExLjY2LDEuNjYsMCwwLDAsNSw2LjY3VjMxLjMyQTEuNjYsMS42NiwwLDAsMCw2LjY1LDMzSDI5LjM2QTEuNjYsMS42NiwwLDAsMCwzMSwzMS4zM1YyMi4wNkgy''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFQuQ2xyU2hhcGVEcmFnSGFuZGxlPSgwLHYuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+PGNpcmNsZSBjeD0iMTUiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUg''@;'; put 'put ''Y3g9IjIxIiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIxNSIgY3k9''@;'; put 'put ''IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFQuQ2xyU2hhcGVGaWx0ZXIyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI4LDE3SDhhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjMsMjNIMTNhMSwxLDAsMCwwLDAsMkgyM2Ex''@;'; put 'put ''LDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksVC5DbHJTaGFwZU1vb249KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDI3LjE5YTEsMSwwLDAsMC0xLS41NmMtLjI4LDAtLjU2LDAtLjg1LDBBMTEsMTEsMCwwLDEsMjQu''@;'; put 'put ''OTIsNS42MWExLDEsMCwwLDAsLjYxLTEsMSwxLDAsMCwwLS42Ny0uOTEsMTQuNywxNC43LDAsMCwwLTUtLjg3LDE1LjEyLDE1LjEyLDAsMCwwLDAsMzAuMjQsMTQuNzgsMTQuNzgsMCwwLDAsMTEtNC44MUExLDEsMCwwLDAsMzEsMjcuMTlaTTE5Ljg5LDMxLjEyYTEzLjEyLDEzLjEyLDAsMCwx''@;'; put 'put ''LDAtMjYuMjQsMTEuODEsMTEuODEsMCwwLDEsMiwuMTYsMTMsMTMsMCwwLDAsNS43MiwyMy41M0ExMi43NSwxMi43NSwwLDAsMSwxOS44OSwzMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI5LjIsMjYuNzJBMTIuMDcsMTIu''@;'; put 'put ''MDcsMCwwLDEsMjIuOSw0LjQ0LDEzLjY4LDEzLjY4LDAsMCwwLDE5LjQ5LDRhMTQsMTQsMCwwLDAsMCwyOCwxMy44MiwxMy44MiwwLDAsMCwxMC45LTUuMzRBMTEuNzEsMTEuNzEsMCwwLDEsMjkuMiwyNi43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+Jyks''@;'; put 'put ''VC5DbHJTaGFwZVN1bj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsNi4zMWExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMHYzLjRBMSwxLDAsMCwwLDE4LDYuMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwyOS42OWExLDEsMCwwLDAtMSwxdjMuNGExLDEsMCwwLDAsMiwwdi0zLjRBMSwxLDAsMCwwLDE4LDI5LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNOC4zMiw5Ljc0QTEsMSwwLDAsMCw5LDEwYTEsMSwwLDAsMCwuNzEtLjI5''@;'; put 'put ''LDEsMSwwLDAsMCwwLTEuNDJMNy4zMyw1LjkyQTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNjgsMjYuMjZhMSwxLDAsMSwwLTEuNDIsMS40MmwyLjQxLDIuNGExLDEsMCwwLDAsLjcxLjMsMSwx''@;'; put 'put ''LDAsMCwwLC43LS4zLDEsMSwwLDAsMCwwLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNNi4zMSwxOGExLDEsMCwwLDAtMS0xSDEuOTFhMSwxLDAsMCwwLDAsMmgzLjRBMSwxLDAsMCwwLDYuMzEsMThaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzQuMDksMTdoLTMuNGExLDEsMCwxLDAsMCwyaDMuNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTguMzIsMjYuMjZsLTIuNCwyLjQx''@;'; put 'put ''YTEsMSwwLDAsMCwuNywxLjcxLDEsMSwwLDAsMCwuNzEtLjNsMi40MS0yLjRhMSwxLDAsMSwwLTEuNDItMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNywxMGExLDEsMCwwLDAsLjcxLS4yOWwyLjQtMi40MWExLDEsMCwwLDAs''@;'; put 'put ''MC0xLjQxLDEsMSwwLDAsMC0xLjQxLDBsLTIuNDEsMi40YTEsMSwwLDAsMCwwLDEuNDJBMSwxLDAsMCwwLDI3LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHBhdGggZD0iTTE4LjEzLDcuNzVhMTAuMTMsMTAuMTMsMCwxLDAsMTAsMTAuMTNBMTAu''@;'; put 'put ''MDgsMTAuMDgsMCwwLDAsMTguMTMsNy43NVptMCwxOC4yNWE4LjEzLDguMTMsMCwxLDEsOC04LjEyQTguMDgsOC4wOCwwLDAsMSwxOC4xMywyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwYXRoIGQ9Ik0xOCw2LjQyYTEsMSwwLDAsMCwxLTFWMS45''@;'; put 'put ''MWExLDEsMCwwLDAtMiwwVjUuNDJBMSwxLDAsMCwwLDE4LDYuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyOS41OGExLDEsMCwwLDAtMSwxdjMuNTFhMSwxLDAsMCwwLDIsMFYzMC41OEExLDEsMCwwLDAsMTgsMjkuNThaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik04LjQsOS44MUExLDEsMCwwLDAsOS44MSw4LjRMNy4zMyw1LjkyQTEsMSwwLDAsMCw1LjkyLDcuMzNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNy42LDI2''@;'; put 'put ''LjE5YTEsMSwwLDAsMC0xLjQxLDEuNDFsMi40OCwyLjQ4YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LjQyLDE4YTEsMSwwLDAsMC0xLTFIMS45MWExLDEsMCwwLDAsMCwySDUuNDJBMSwxLDAsMCwwLDYu''@;'; put 'put ''NDIsMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zNC4wOSwxN0gzMC41OGExLDEsMCwwLDAsMCwyaDMuNTFhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+PHBhdGggZD0iTTguNCwy''@;'; put 'put ''Ni4xOSw1LjkyLDI4LjY3YTEsMSwwLDAsMCwxLjQxLDEuNDFMOS44MSwyNy42QTEsMSwwLDAsMCw4LjQsMjYuMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC03IiAvPjxwYXRoIGQ9Ik0yNy42LDkuODFsMi40OC0yLjQ4YTEsMSwwLDAsMC0xLjQxLTEuNDFMMjYuMTks''@;'; put 'put ''OC40QTEsMSwwLDAsMCwyNy42LDkuODFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04IiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjEwIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC05IiAvPicpLFQuQ2xyU2hhcGVXYW5kPSgwLHYuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuMSw0LDMxLjcxLDEuNmExLjgzLDEuODMsMCwwLDAtMS4zMS0uNTRoMGEyLjA1LDIuMDUsMCwwLDAtMS40NS42MkwxLjc2LDI5LjIzQTIsMiwwLDAsMCwxLjY4LDMybDIuNCwy''@;'; put 'put ''LjQzQTEuODMsMS44MywwLDAsMCw1LjM5LDM1aDBhMi4wNSwyLjA1LDAsMCwwLDEuNDUtLjYyTDM0LDYuNzlBMiwyLDAsMCwwLDM0LjEsNFpNNS40MiwzMi45MywzLjE2LDMwLjY1aDBMMjQuMTEsOS40M2wyLjI1LDIuMjhaTTMyLjYxLDUuMzlsLTUuMTIsNS4xOEwyNS4yNCw4LjI5bDUuMTMt''@;'; put 'put ''NS4yLDIuMjUsMi4yOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNTMsMjAuNDdsMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0yLjA5LDIuMDktMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMywx''@;'; put 'put ''LjEzbDIuMDksMi4wOS0yLjA5LDIuMDlhLjguOCwwLDAsMCwxLjEzLDEuMTNsMi4wOS0yLjA5LDIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMtMS4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuNzgsNi41''@;'; put 'put ''MWEuOC44LDAsMCwwLDEuMTMsMEwxNy40LDVsMS40OSwxLjQ5QS44LjgsMCwwLDAsMjAsNS4zOEwxOC41NCwzLjg5LDIwLDIuNGEuOC44LDAsMCwwLTEuMTMtMS4xM0wxNy40LDIuNzYsMTUuOTEsMS4yN0EuOC44LDAsMSwwLDE0Ljc4LDIuNGwxLjQ5LDEuNDlMMTQuNzgsNS4zOEEuOC44LDAs''@;'; put 'put ''MCwwLDE0Ljc4LDYuNTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTguMzMsMTUuMjZhLjguOCwwLDAsMCwxLjEzLDBsMS4xNi0xLjE2LDEuMTYsMS4xNmEuOC44LDAsMSwwLDEuMTMtMS4xM0wxMS43NiwxM2wx''@;'; put 'put ''LjE2LTEuMTZhLjguOCwwLDEsMC0xLjEzLTEuMTNsLTEuMTYsMS4xNkw5LjQ2LDEwLjY4YS44LjgsMCwxLDAtMS4xMywxLjEzTDkuNDksMTMsOC4zMywxNC4xM0EuOC44LDAsMCwwLDguMzMsMTUuMjZaIi8+JyksVC5DbHJTaGFwZUN1cnNvck1vdmU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQyLDAsMSwxLDAsMCwwLDAsMS40MUwzMC4xNCwxN0gxOVY1Ljg2bDIuNjksMi43YTEsMSwwLDAsMCwxLjQxLDAsMSwxLDAsMCwwLDAtMS40MkwxOCwyLDEyLjg5LDcuMTVhMSwxLDAsMCwwLS4yOS43MSwxLDEsMCwwLDAsMS43MS43TDE3LDUu''@;'; put 'put ''ODZWMTdINS44NmwyLjctMi42OWExLDEsMCwwLDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQyLDBMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjctMS43MUw1Ljg2LDE5SDE3VjMwLjE0bC0yLjY5LTIuN2ExLDEsMCwwLDAtMS43MS43LDEsMSwwLDAsMCwuMjkuNzFM''@;'; put 'put ''MTgsMzRsNS4xMS01LjE0YTEsMSwwLDAsMCwwLTEuNDIsMSwxLDAsMCwwLTEuNDEsMEwxOSwzMC4xNFYxOUgzMC4xNGwtMi43LDIuNjlhMSwxLDAsMCwwLC43LDEuNzEsMSwxLDAsMCwwLC43MS0uMjlMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxULkNsclNoYXBlQ2xvbmU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsNkgyMnY0aDJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwxMkgxNGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJabTAsMThIMTRWMTRIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cG9seWdvbiBwb2ludHM9IjIx''@;'; put 'put ''IDI4IDIzIDI4IDIzIDIzIDI4IDIzIDI4IDIxIDIzIDIxIDIzIDE2IDIxIDE2IDIxIDIxIDE2IDIxIDE2IDIzIDIxIDIzIDIxIDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTBWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMTJhMiwyLDAsMCwxLDItMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwz''@;'; put 'put ''MCwxMlpNMjgsMjNIMjN2NUgyMVYyM0gxNlYyMWg1VjE2aDJ2NWg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlRGV0YWlscz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMTRIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNOSwxOEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik05LDIySDE5YTEsMSwwLDAsMCwwLTJIOWExLDEsMCww''@;'; put 'put ''LDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xOSwyMkg5YTEsMSwwLDAsMSwwLTJIMTlhMSwx''@;'; put 'put ''LDAsMCwxLDAsMlptOC00SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWm0wLTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPSgwLHYu''@;'; put 'put ''Y2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBj''@;'; put 'put ''eD0iMjQiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFQuQ2xyU2hhcGVFcmFzZXI9''@;'; put 'put ''KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM1LjYyLDEyYTIuODIsMi44MiwwLDAsMC0uODQtMkwyNy40OSwyLjY1YTIuOSwyLjksMCwwLDAtNCwwTDIuODMsMjMuMjhhMi44NCwyLjg0LDAsMCwwLDAsNEw3LjUzLDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0ySDE2Ljc0''@;'; put 'put ''bDE4LTE4QTIuODIsMi44MiwwLDAsMCwzNS42MiwxMlpNMTMuOTEsMzJIMTAuMzZMNC4yNSwyNS44OWEuODQuODQsMCwwLDEsMC0xLjE5bDUuNTEtNS41Miw4LjQ5LDguNDhaTTMzLjM3LDEyLjU0LDE5LjY2LDI2LjI1bC04LjQ4LTguNDksMTMuNy0xMy43YS44Ni44NiwwLDAsMSwxLjE5LDBs''@;'; put 'put ''Ny4zLDcuMjlhLjg2Ljg2LDAsMCwxLC4yNS42QS44Mi44MiwwLDAsMSwzMy4zNywxMi41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwzMkgxNS4zM0wxOSwyOC4zN2wtOS45LTkuOUwzLjU0LDI0YTEuODMsMS44MywwLDAsMCww''@;'; put 'put ''LDIuNkw5LDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzQuMDgsMTAuNjVsLTcuMy03LjNhMS44MywxLjgzLDAsMCwwLTIuNiwwTDEwLjQ3LDE3LjA2bDkuOSw5LjlMMzQuMDgs''@;'; put 'put ''MTMuMjVBMS44NSwxLjg1LDAsMCwwLDM0LjA4LDEwLjY1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlTGFuZHNjYXBlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyMmEuODIuODIsMCwwLDAsLjU1LS4yMS44LjgsMCwwLDAsMC0xLjEzTDcuODMsMTguOEgyOC4xN2wt''@;'; put 'put ''MS43MiwxLjg2YS44LjgsMCwwLDAsMCwxLjEzQS44Mi44MiwwLDAsMCwyNywyMmEuNzguNzgsMCwwLDAsLjU4LS4yNkwzMS4wOSwxOGwtMy40Ny0zLjc0YS43OS43OSwwLDAsMC0xLjEzLDAsLjguOCwwLDAsMCwwLDEuMTNsMS43MiwxLjg2SDcuODNsMS43Mi0xLjg2YS44LjgsMCwwLDAsMC0x''@;'; put 'put ''LjEzLjc5Ljc5LDAsMCwwLTEuMTMsMEw0LjkxLDE4bDMuNDcsMy43NEEuNzguNzgsMCwwLDAsOSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMjcuNzcsMjEuODhhMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNywxLDEsMCwwLDEtLjA2LTEuNDFMMjcuNzEsMTlIOC4yOUw5LjcsMjAuNTJhMSwxLDAsMCwxLS4wNiwxLjQxQTEsMSwwLDAsMSw5LDIyLjJhMSwxLDAsMCwxLS43My0u''@;'; put 'put ''MzJMNC42NCwxOGwzLjU5LTMuODhBMSwxLDAsMCwxLDkuNywxNS40OEw4LjI5LDE3SDI3LjcxTDI2LjMsMTUuNDhhMSwxLDAsMCwxLDEuNDctMS4zNkwzMS4zNiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZVBhc3RlPSgwLHYuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwxMkgyNnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMwSDI4djJoMmEyLDIsMCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDIyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgyMkEyLDIsMCwwLDAsMjQsMjJaTTYsNkgyMlYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdodD0i''@;'; put 'put ''MiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiAvPicpLFQuQ2xyU2hhcGVQb3J0cmFpdD0oMCx2LmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTUuMzQsMjYuNDVhLjguOCwwLDAsMC0xLjEzLDAsLjc5Ljc5LDAsMCwwLDAsMS4xM0wxOCwzMS4wOWwzLjc0LTMuNDdhLjc5Ljc5LDAsMCwwLC4wNS0xLjEzLjguOCwwLDAsMC0xLjEzLDBMMTguOCwyOC4xN1Y3LjgzbDEuODYsMS43MmEuOC44LDAsMSwwLDEuMDgt''@;'; put 'put ''MS4xN0wxOCw0LjkxLDE0LjI2LDguMzhhLjc5Ljc5LDAsMCwwLDAsMS4xMy44LjgsMCwwLDAsMS4xMywwTDE3LjIsNy44M1YyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCww''@;'; put 'put ''LDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjRBMiwyLDAsMCwwLDI4LDJaTTIwLjUyLDI2LjNhMSwxLDAsMCwxLDEuMzYsMS40N0wxOCwzMS4zNmwtMy44OC0zLjU5YTEsMSwwLDAsMSwxLjM2LTEuNDdMMTcsMjcuNzFWOC4yOUwxNS40OCw5LjdhMSwxLDAsMCwxLTEuMzYtMS40N0wxOCw0LjY0bDMuODgsMy41OWExLDEsMCwwLDEsLjA1''@;'; put 'put ''LDEuNDEsMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNkwxOSw4LjI5VjI3LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlVHJlZVZpZXc9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDMySDExYTEsMSwwLDAs''@;'; put 'put ''MS0xLTFWMjdhMSwxLDAsMCwxLDEtMWg0YTEsMSwwLDAsMSwxLDF2NEExLDEsMCwwLDEsMTUsMzJabS0zLTJoMlYyOEgxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxNkgxMWExLDEsMCwwLDAtMSwxdjEuMkg1LjhWMTJIN2Ex''@;'; put 'put ''LDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDcsNkgzQTEsMSwwLDAsMCwyLDd2NGExLDEsMCwwLDAsMSwxSDQuMlYyOS44aDYuMzZhLjguOCwwLDAsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaTTQsOEg2djJI''@;'; put 'put ''NFpNMTQsMjBIMTJWMThoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNCw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzM0ExLDEsMCwwLDAsMzQsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0zMywxOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMsMjhIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IC8+PHJlY3QgeD0iMTAiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE1LDE2SDExYTEsMSwwLDAsMC0xLDF2MS4ySDUuOFYxMkg3YTEsMSwwLDAsMCwxLTFWN0ExLDEs''@;'; put 'put ''MCwwLDAsNyw2SDNBMSwxLDAsMCwwLDIsN3Y0YTEsMSwwLDAsMCwxLDFINC4yVjI5LjhIMTFhLjguOCwwLDEsMCwwLTEuNkg1LjhWMTkuOEgxMFYyMWExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxN0ExLDEsMCwwLDAsMTUsMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMyw4SDEwdjJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLDE4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTQiIC8+PHBhdGggZD0iTTMzLDI4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+JyksVC5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC4wOSw5Ljc0YTQsNCwwLDAs''@;'; put 'put ''MC0xLjE2LjE5Yy0uMTktMS4yNC0xLjU1LTIuMTgtMy4yNy0yLjE4QTQsNCwwLDAsMCwyMi4xMyw4LDMuMzcsMy4zNywwLDAsMCwxOSw2LjNhMy40NSwzLjQ1LDAsMCwwLTIuODcsMS4zMiwzLjY1LDMuNjUsMCwwLDAtMS44OS0uNTFBMy4wNSwzLjA1LDAsMCwwLDExLDkuODl2LjkxYy0xLjA2''@;'; put 'put ''LjQtNC4xMSwxLjgtNC45MSw0Ljg0cy4zNCw4LDIuNjksMTEuNzhhMjUuMjEsMjUuMjEsMCwwLDAsNS45LDYuNDEuOS45LDAsMCwwLC41My4xN0gyNS41NWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMywwLDAsMCwzLjc1LTYuMTNBMjUuOCwyNS44LDAsMCwwLDMxLjQxLDE4di01''@;'; put 'put ''LjVBMy4wOCwzLjA4LDAsMCwwLDI4LjA5LDkuNzRaTTI5LjYxLDE4YTI0LDI0LDAsMCwxLTEuNDcsOS4xNUExMi40NiwxMi40NiwwLDAsMSwyNS4yLDMyLjJIMTUuNDdhMjMuNzUsMjMuNzUsMCwwLDEtNS4yLTUuNzJjLTIuMzctMy44Ni0zLTguMjMtMi40OC0xMC4zOUE1LjcsNS43LDAsMCwx''@;'; put 'put ''LDExLDEyLjc2djcuNjVhLjkuOSwwLDAsMCwxLjgsMFY5Ljg5YzAtLjQ3LjU5LTEsMS40Ni0xczEuNDkuNTIsMS40OSwxdjUuNzJoMS44VjguODFjMC0uMjguNTgtLjcxLDEuNDYtLjcxczEuNTMuNDgsMS41My43NXY2Ljg5aDEuOFYxMGwuMTctLjEyYTIuMSwyLjEsMCwwLDEsMS4xOC0uMzJj''@;'; put 'put ''LjkzLDAsMS41LjQ0LDEuNS42OGwwLDYuNUgyN1YxMS44N2ExLjkxLDEuOTEsMCwwLDEsMS4xMi0uMzNjLjg2LDAsMS41Mi41MSwxLjUyLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZUN1cnNvckhhbmRPcGVuPSgwLHYuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0zMS40Niw4LjU3QTMuMTEsMy4xMSwwLDAsMCwyNyw1Ljc1YTMuMTksMy4xOSwwLDAsMC00LjY2LTIuNjQsMy4yOSwzLjI5LDAsMCwwLTYuNDItLjc2LDMuMjMsMy4yMywwLDAsMC0xLjY2LS40NkEzLjI3LDMuMjcsMCwwLDAsMTEsNS4xOFYxNy44NGMtMS4y''@;'; put 'put ''OC0xLjYtMi41My0zLjE4LTIuNzItMy40NUEzLjE5LDMuMTksMCwwLDAsNS41NiwxMi45YTMuMzcsMy4zNywwLDAsMC0zLjQ3LDMuNDhDMi4xOCwxOC4xOCw1LjY2LDI0LjU0LDgsMjhjMy41NCw1LjI0LDYuOTIsNiw3LjA3LDZsLjE4LDBIMjUuNTlhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMu''@;'; put 'put ''MTMsMTMuMTMsMCwwLDAsMy43NS02LjEzYzEtMy4wOSwxLjUzLTcuNTMsMS41OC0xMy41NlpNMjguMTgsMjcuMTJhMTIuNDYsMTIuNDYsMCwwLDEtMi45NCw1LjA4SDE1LjMzYy0uNDctLjE0LTMuMDctMS4xLTUuODctNS4yNVMzLjk0LDE3LjI3LDMuODksMTYuMjlhMS41LDEuNSwwLDAsMSwu''@;'; put 'put ''NDUtMS4xMywxLjUyLDEuNTIsMCwwLDEsMS4xNC0uNDYsMS40MywxLjQzLDAsMCwxLDEuMzIuNzFjLjI5LjQzLDIuMzYsMywzLjU3LDQuNTNMMTIuOCwxOC4zVjUuMThhMS40OCwxLjQ4LDAsMSwxLDIuOTUsMFYxNi4zMmgxLjh2LTEzYTEuNTEsMS41MSwwLDAsMSwzLDBWMTYuNDVoMS44VjZh''@;'; put 'put ''MS40MywxLjQzLDAsMSwxLDIuODUsMFYxNy40NEgyN1Y4LjU0YTEuMzMsMS4zMywwLDAsMSwyLjY1LDB2NS41NUMyOS42MiwyMCwyOS4xNCwyNC4yMSwyOC4xOCwyNy4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVGaWxlWmlw''@;'; put 'put ''PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwzMC4yVjEybC04LjEtNy45SDcuOEM2LjgsNC4xLDYsNC45LDYsNmMwLDAsMCwwLDAsMHYyNC4yYzAsMSwwLjcsMS44LDEuNywxLjhjMCwwLDAuMSwwLDAuMSwwaDIwLjNcblx0XHRjMSwwLDEuOC0wLjcsMS44LTEuN0MzMCwzMC4zLDMw''@;'; put 'put ''LDMwLjIsMzAsMzAuMnogTTIyLDYuNmw1LjYsNS40SDIyVjYuNnogTTI4LDMwSDcuOUw4LDZoMTJ2OGg4VjMweiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTEyLDI0YzAsMS43LDEuMywzLDMsM3MzLTEuMywzLTN2LTRoLTZWMjR6IE0x''@;'; put 'put ''My40LDI0di0yLjZoMy4yVjI0YzAuMSwwLjktMC42LDEuNy0xLjUsMS43Yy0wLjksMC4xLTEuNy0wLjYtMS43LTEuNVxuXHRcdEMxMy40LDI0LjIsMTMuNCwyNC4xLDEzLjQsMjR6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTguMiw5''@;'; put 'put ''YzAtMC42LTAuNC0xLTEtMUgxNXYyaDIuMkMxNy44LDEwLDE4LjIsOS42LDE4LjIsOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMi43LDEwYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxSDE1di0ySDEyLjd6IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMTcuMiwxNGMwLjYsMCwxLTAuNCwxLTFzLTAuNC0xLTEtMUgxNXYySDE3LjJ6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTEuNywxNWMwLDAuNiwwLjQs''@;'; put 'put ''MSwxLDFIMTV2LTJoLTIuM0MxMi4yLDE0LDExLjcsMTQuNCwxMS43LDE1eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE3LjIsMThjMC42LDAsMS0wLjQsMS0xcy0wLjQtMS0xLTFIMTV2MkgxNy4yeiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTE1LDI1LjZjMC45LDAsMS42LTAuNywxLjYtMS42di0yLjZoLTMuMlYyNEMxMy40LDI0LjksMTQuMSwyNS42LDE1LDI1LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45''@;'; put 'put ''LDRINy44QzYuOCw0LDYsNC45LDYsNS45djI0LjJjMCwxLDAuOCwxLjksMS44LDEuOWgyMC4zYzEsMCwxLjgtMC45LDEuOC0xLjlWMTEuOUwyMS45LDR6IE0xOCwyNGMwLDEuNy0xLjMsMy0zLDNcblx0XHRzLTMtMS4zLTMtM3YtNGg2VjI0eiBNMTcuMiwxMmMwLjYsMCwxLDAuNCwxLDFzLTAu''@;'; put 'put ''NCwxLTEsMUgxNXYyaDIuMmMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMUgxNXYtMmgtMi4yYy0wLjYsMC0xLTAuNC0xLTFcblx0XHRzMC40LTEsMS0xSDE1di0yaC0yLjJjLTAuNiwwLTEtMC40LTEtMXMwLjQtMSwxLTFIMTVWOGgyLjJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2''@;'; put 'put ''MkgxNy4yeiBNMjEuOSwxMlY2LjVsNS43LDUuNUgyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlRmlsdGVyT2ZmPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw2LjRDMzQsNS42LDMzLjMsNSwzMi41LDVIMTAuM2wyLDJI''@;'; put 'put ''MzJ2MC42bC05LjYsOS42bDEuNCwxLjRMMzMuNCw5QzMzLjgsOC42LDM0LDguMSwzNCw3LjZWNi41QzM0LDYuNSwzNCw2LjQsMzQsNi40eiJcblx0XHQgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIuNywzbDIsMmgtMUMyLjksNC45LDIu''@;'; put 'put ''MSw1LjUsMiw2LjN2MS4xYzAsMC41LDAuMiwxLDAuNiwxLjRMMTQsMjAuMnYxMC4zbDEuOSwwLjhWMTkuNEw0LDcuNVY3aDIuN0wyMCwyMC4zdjEyLjlsMiwwLjhcblx0XHRjMCwwLDAsMCwwLTAuMVYyMi4zbDEwLjEsMTAuMWwxLjQtMS40TDQuMSwxLjZMMi43LDN6IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjMuOSwxOC42TDEwLjMsNS4xaDIyLjJDMzMuMyw1LDM0LDUuNiwzNCw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUtMC4yLDEtMC42LDEuNEwyMy45LDE4LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMy41LDMxTDQuMSwxLjZMMi42LDNsMi4xLDIuMUgzLjVDMi43LDUsMiw1LjYsMiw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC41djEwLjFsOCwzLjRWMjIuNFxuXHRsMTAuMSwxMC4xTDMzLjUsMzF6IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVSZWN5Y2xlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjQsMTcuNGMwLjIsMC4xLDAuMywwLjEsMC41LDAuMWMwLjIsMCwwLjQtMC4xLDAuNS0wLjFsNy00LjFjMC4zLTAuMiwwLjUtMC41LDAu''@;'; put 'put ''NS0wLjljMC0wLjQtMC4yLTAuNy0wLjUtMC45TDExLjksMTBcblx0XHRMMTQsNi4yYzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjNjMCwwLDAsMCwwLjEsMGMwLjQtMC4zLDAuNS0wLjksMC4zLTEuM1xuXHRcdGMtMC42''@;'; put 'put ''LTEtMS40LTEuOS0yLjQtMi40Yy0zLTEuNi02LjctMC42LTguMywyLjRMOS42LDkuOWMtMC4zLDAuNS0wLjEsMS4xLDAuMywxLjRsMiwxLjJsLTQsMi40VjguMmMwLTAuNi0wLjQtMS0xLTFcblx0XHRDNi40LDcuMyw2LDcuNyw2LDguM3Y4LjNDNiwxNi45LDYuMiwxNy4yLDYuNCwxNy40eiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjEsMjFsLTMuNS02LjJjLTAuMS0wLjItMC40LTAuNC0wLjYtMC41Yy0wLjMtMC4xLTAuNSwwLTAuOCwwLjFsLTIuMiwxLjNWMTFsNS41LDMuM2MwLjEsMCwwLjEsMC4xLDAuMiwwLjFcblx0''@;'; put 'put ''XHRjMC41LDAuMiwxLjEsMCwxLjMtMC41YzAuMi0wLjUsMC0xLjEtMC41LTEuM2wtNy00LjJjLTAuMy0wLjItMC43LTAuMi0xLDBDMjMuMSw4LjUsMjMsOC44LDIzLDkuMnY4LjNjMCwwLjQsMC4xLDAuOCwwLjQsMVxuXHRcdGMwLjMsMC4yLDAuNywwLjIsMSwwbDIuOS0xLjdsMyw1LjNjMC43''@;'; put 'put ''LDEuMywwLjcsMi44LDAsNC4xYy0wLjYsMS4yLTEuOSwxLjktMy4yLDEuOWgtMC45Yy0wLjUsMC0xLjIsMC40LTEuMiwxXG5cdFx0YzAuMSwwLjYsMC42LDEsMS4yLDFoMC45YzIuMSwwLDQtMS4xLDUtMi45QzMzLjIsMjUuMiwzMy4yLDIyLjksMzIuMSwyMXoiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMi40LDI4LjJsLTctNC4yYy0wLjMtMC4yLTAuNy0wLjItMSwwYy0wLjMsMC4yLTAuNCwwLjUtMC40LDAuOXYzLjNIOS4xYy0xLjUtMC4xLTIuOS0wLjktMy42LTIuM1xuXHRcdGMtMC44LTEuNC0wLjgtMy4yLDAtNC42YzAu''@;'; put 'put ''My0wLjUsMC4xLTEuMS0wLjQtMS40Yy0wLjUtMC4zLTEuMS0wLjEtMS40LDAuNGMtMS4yLDIuMS0xLjEsNC42LDAuMSw2LjZDNC45LDI4LjgsNywzMCw5LjIsMzBIMTVcblx0XHRjMC42LDAsMS0wLjQsMS0xdi0yLjRsNCwyLjRsLTUuNiwzLjNjLTAuMywwLjItMC41LDAuNS0wLjUsMC45YzAs''@;'; put 'put ''MC42LDAuNSwxLDEsMWMwLjIsMCwwLjMtMC4xLDAuNS0wLjJsNy00LjJcblx0XHRjMC4yLTAuMSwwLjMtMC4yLDAuNC0wLjRDMjMuMSwyOSwyMi45LDI4LjQsMjIuNCwyOC4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIwLjgsMy4x''@;'; put 'put ''Yy0zLTEuNi02LjctMC42LTguNCwyLjRsLTIuMiwzLjhsLTItMS4xQzguMiw4LDgsOCw3LjksOEM3LjQsOCw3LDguNCw3LDguOXY3LjJjMCwwLjMsMC4xLDAuNiwwLjQsMC44XG5cdFx0YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMiwwLDAuMywwLDAuNC0wLjFsNi4zLTMuNmMwLjMtMC4y''@;'; put 'put ''LDAuNC0wLjQsMC40LTAuOGMwLTAuMy0wLjItMC42LTAuNC0wLjhMMTIsMTAuM2wyLjItMy44XG5cdFx0YzAuNC0wLjcsMS0xLjMsMS43LTEuN2MyLTEuMSw0LjUtMC4zLDUuNiwxLjdjMC4zLDAuNSwwLjksMC42LDEuNCwwLjRjMC41LTAuMywwLjYtMC45LDAuNC0xLjRDMjIuNiw0LjUsMjEu''@;'; put 'put ''OCwzLjYsMjAuOCwzLjF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yLDIxLjFsLTMtNS4zbDIuMy0xLjNjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhjMC0wLjMtMC4yLTAuNi0wLjQtMC44bC02LjItMy42Yy0wLjEtMC4xLTAuMy0wLjEt''@;'; put 'put ''MC40LTAuMVxuXHRcdGMtMC41LDAtMC45LDAuNC0wLjksMC45djcuMmMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4yLDAsMC4zLTAuMSwwLjQtMC4xbDIuMi0xLjNsMyw1LjNcblx0XHRjMC43LDEuMiwwLjcsMi44LDAsNGMtMC43LDEuMi0xLjksMS45''@;'; put 'put ''LTMuMiwxLjloLTAuOWMtMC42LDAtMSwwLjQtMSwxYzAsMC42LDAuNCwxLDEsMWgwLjljMi4xLDAsNC0xLjEsNS0zXG5cdFx0QzMzLjIsMjUuMywzMy4yLDIzLDMyLjIsMjEuMXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjcsMjguNGwt''@;'; put 'put ''Ni4yLTMuNmMtMC4xLTAuMS0wLjMtMC4xLTAuNC0wLjFjLTAuNSwwLTAuOSwwLjQtMC45LDAuOXYyLjZIOS4zYy0xLjUsMC0yLjktMC44LTMuNi0yLjFcblx0XHRjLTAuOC0xLjQtMC44LTMuMSwwLTQuNWMwLjMtMC41LDAuMS0xLjEtMC40LTEuNGMtMC41LTAuMy0xLjEtMC4xLTEuNCwwLjRj''@;'; put 'put ''LTEuMiwyLTEuMiw0LjUsMCw2LjVjMS4xLDEuOSwzLjEsMy4xLDUuNCwzLjFoNC44djIuNlxuXHRcdGMwLDAuMywwLjIsMC42LDAuNCwwLjhjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjFjMC4xLDAsMC4zLDAsMC40LTAuMWw2LjMtMy42YzAuMy0wLjIsMC40LTAuNCwwLjQtMC44XG5cdFx0QzIy''@;'; put 'put ''LjEsMjguOCwyMS45LDI4LjUsMjEuNywyOC40eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlVHJlZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNiwxMS43QzI5LjIsNS44LDI0LDEuNywxOCwxLjdjLTcuMiwwLTEzLDUuOC0x''@;'; put 'put ''MywxM2MwLDYuOCw1LjMsMTIuNCwxMiwxMi45djVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNXYtMlYyMlxuXHRjMCwwLDAsMCwwLTAuMXYtMy42bDQuNy00LjdjMC40LTAuNCwwLjQtMSwwLTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxOSwxNS42di0zbC0zLjMtMy4zYy0wLjQtMC40''@;'; put 'put ''LTEtMC40LTEuNCwwXG5cdGMtMC40LDAuNC0wLjQsMSwwLDEuNGwyLjcsMi43djYuMmwtMy44LTMuOGMtMC40LTAuNC0xLTAuNC0xLjQsMGMtMC40LDAuNC0wLjQsMSwwLDEuNGw1LjIsNS4ydjMuMmMtNS42LTAuNS0xMC01LjItMTAtMTAuOVxuXHRjMC02LjEsNC45LTExLDExLTExczExLDQu''@;'; put 'put ''OSwxMSwxMWMwLDQuOS0zLjMsOS4yLTgsMTAuNnYyLjFDMjgsMjUuNywzMi4zLDE4LjcsMzAuNiwxMS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJDMTAuOCwxLjcsNC44LDcuMyw0LjUsMTQuNUM0LjIsMjEuNyw5LjgsMjcu''@;'; put 'put ''NywxNywyOHYtNS4ybC01LjItNS4yYy0wLjQtMC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwbDMuOCwzLjh2LTYuMmwtMi43LTIuN2MtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwYzAsMCwwLDAsMCwwbDMuMywzLjN2M2wz''@;'; put 'put ''LjMtMy4zYzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwYzAuNCwwLjQsMC40LDEsMCwxLjRMMTksMTguOFYyOGM3LjItMC4zLDEyLjgtNi4zLDEyLjUtMTMuNVMyNS4yLDEuNywxOCwyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMTgsMjhjLTAuMywwLTAuNiwwLTEsMHY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTVDMTguNywyOCwxOC4zLDI4LDE4LDI4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlRmlzaD0oMCx2LmNsckljb25TVkcpKCc8Y2lyY2xl''@;'; put 'put ''IGN4PSIxMS40OSIgY3k9IjE3LjUiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLjQ4LDkuMjlhMSwxLDAsMCwwLTEsMGMtMy4zNywyLTUuOTEsNS44MS02LjksNy40NUwyNC44NSwxOHMtMSwxLjYyLTEsMS42MmMtMS43''@;'; put 'put ''NiwyLjQ5LTUuMSw2LjM2LTguNzksNi4zNi00LjY1LDAtOC43NS02LjE1LTkuODQtNy45NCwxLjA5LTEuNzksNS4xOC03Ljk0LDkuODQtNy45NCwzLjU0LDAsNi43NywzLjU4LDguNTgsNi4wN2wuMjgtLjQ4cy4zNi0uNTEuOTMtMS4yNUMyMi43MiwxMS42NCwxOS4xOCw4LjA2LDE1LDguMDZj''@;'; put 'put ''LTYuNTksMC0xMS42Nyw5LjA3LTExLjg4LDkuNDZMMi44OSwxOGwuMjcuNDhjLjIxLjM5LDUuMjksOS40NiwxMS44OCw5LjQ2LDUuMDYsMCw5LjIyLTUuMzQsMTEtOEMyNiwyMCwyNy4xOCwxOCwyNy4xOCwxOGgwbC4wNy0uMTFhMTguMDYsMTguMDYsMCwwLDEsMS44OC0yLjc1czAsMCwwLDBh''@;'; put 'put ''MjAuMzEsMjAuMzEsMCwwLDEsMi44Ni0zVjIzLjg4YTIwLjkzLDIwLjkzLDAsMCwxLTMuNjEtNGwtLjE2LjI2aDBsLTEsMS41OWExOC43NCwxOC43NCwwLDAsMCw1LjIxLDQuOTUsMSwxLDAsMCwwLC41LjE0LDEuMTMsMS4xMywwLDAsMCwuNS0uMTMsMSwxLDAsMCwwLC41LS44N1YxMC4xNkEx''@;'; put 'put ''LDEsMCwwLDAsMzMuNDgsOS4yOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVGb3JtPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSwxMkg3YTEsMSwwLDAsMS0xLTFWN0ExLDEsMCwwLDEsNyw2SDIxYTEsMSwwLDAsMSwx''@;'; put 'put ''LDF2NEExLDEsMCwwLDEsMjEsMTJaTTgsMTBIMjBWNy45NEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDE0LjA4SDdhMSwxLDAsMCwwLTEsMVYxOWExLDEsMCwwLDAsMSwxSDE4LjM2TDIyLDE2LjNWMTUuMDhBMSwxLDAsMCww''@;'; put 'put ''LDIxLDE0LjA4Wk0yMCwxOEg4VjE2SDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTExLjA2LDMxLjUxdi0uMDZsLjMyLTEuMzlINFY0aDIwVjE0LjI1TDI2LDEyLjM2VjNhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDNWMzFh''@;'; put 'put ''MSwxLDAsMCwwLDEsMWg4QTMuNDQsMy40NCwwLDAsMSwxMS4wNiwzMS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxOS4xN2wtLjc4Ljc5QTEsMSwwLDAsMCwyMiwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LDI2Ljk0YTEsMSwwLDAsMCwxLDFoNC44NGwuMy0xLjMuMTMtLjU1LDAtLjA1SDhWMjRoNi4zNGwyLTJIN2ExLDEsMCwwLDAtMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMz''@;'; put 'put ''LjQ5LDE2LjY3LDMwLjEyLDEzLjNhMS42MSwxLjYxLDAsMCwwLTIuMjgsMGgwTDE0LjEzLDI3LjA5LDEzLDMxLjlhMS42MSwxLjYxLDAsMCwwLDEuMjYsMS45LDEuNTUsMS41NSwwLDAsMCwuMzEsMCwxLjE1LDEuMTUsMCwwLDAsLjM3LDBsNC44NS0xLjA3TDMzLjQ5LDE5YTEuNiwxLjYsMCww''@;'; put 'put ''LDAsMC0yLjI3Wk0xOC43NywzMC45MWwtMy42Ni44MUwxNiwyOC4wOSwyNi4yOCwxNy43bDIuODIsMi44MlpNMzAuMjMsMTkuMzlsLTIuODItMi44MkwyOSwxNWwyLjg0LDIuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxULkNsclNoYXBlRnVl''@;'; put 'put ''bD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuMTIsMzRINS45QTIuODEsMi44MSwwLDAsMSwzLDMxLjE5VjQuODZBMi45LDIuOSwwLDAsMSw2LDIuMDdIMjAuMjJBMi43MiwyLjcyLDAsMCwxLDIzLDQuODZWMzEuMTlBMi44MiwyLjgyLDAsMCwxLDIwLjEyLDM0Wk01LjksNEEuODcu''@;'; put 'put ''ODcsMCwwLDAsNSw0Ljg2VjMxLjE5YS44Ny44NywwLDAsMCwuODcuODdIMjAuMTJhLjk0Ljk0LDAsMCwwLC45NS0uODdWNC44NkEuOTQuOTQsMCwwLDAsMjAuMTIsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOS41MywzNEEzLjUs''@;'; put 'put ''My41LDAsMCwxLDI2LDMwLjVWMjNhMiwyLDAsMCwwLTItMkgyMi41N2ExLDEsMCwwLDEsMC0ySDI0YTQsNCwwLDAsMSw0LDRWMzAuNWExLjUsMS41LDAsMCwwLDMsMFYxNy4zbC0zLjEzLTdBMi4yOSwyLjI5LDAsMCwwLDI1LjgsOWgtLjczYTEsMSwwLDEsMSwwLTJoLjczYTQuMyw0LjMsMCww''@;'; put 'put ''LDEsMy45MywyLjU1bDMuMjEsNy4xNmExLDEsMCwwLDEsLjA5LjQxVjMwLjVBMy41LDMuNSwwLDAsMSwyOS41MywzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCw5SDhBMSwxLDAsMSwxLDgsN0gxOGExLDEsMCwwLDEsMCwyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDEzSDhBMSwxLDAsMSwxLDgsMTFIMThBMSwxLDAsMSwxLDE4LDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI1LDEyLjA4YTEs''@;'; put 'put ''MSwwLDAsMS0xLTF2LTZhMSwxLDAsMCwxLDIsMHY2QTEsMSwwLDAsMSwyNSwxMi4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPicpLFQuQ2xyU2hhcGVTbm93Zmxha2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA1LDMzLjYxYTEsMSww''@;'; put 'put ''LDAsMS0xLTFWMy4zN2ExLDEsMCwxLDEsMS45NSwwVjMyLjYzQTEsMSwwLDAsMSwxOC4wNSwzMy42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiwxMC4wNywxNC41Miw2LjU0YTEsMSwwLDAsMSwwLTEuNDEsMSwxLDAsMCwx''@;'; put 'put ''LDEuNDEsMGwyLjEzLDIuMTIsMi4xMi0yLjEyYTEsMSwwLDAsMSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMC44NSwzMS4xN2ExLDEsMCwwLDEtLjctLjI5TDE4LDI4Ljc2LDE1LjksMzAu''@;'; put 'put ''ODhhMSwxLDAsMCwxLTEuNDEsMCwxLDEsMCwwLDEsMC0xLjQyTDE4LDI1LjkzbDMuNTQsMy41M2ExLDEsMCwwLDEsMCwxLjQyQTEsMSwwLDAsMSwyMC44NSwzMS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC45MiwyNi41YTEs''@;'; put 'put ''MSwwLDAsMS0uNS0uMTNsLTI2LTE1QTEsMSwwLDAsMSw0LjA3LDEwYTEsMSwwLDAsMSwxLjM3LS4zNmwyNiwxNWExLDEsMCwwLDEtLjUsMS44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LDE1LjM3YTEsMSwwLDAsMS0uMjYtMmwy''@;'; put 'put ''LjktLjc4TDcuODQsOS43M2ExLDEsMCwxLDEsMS45My0uNTJMMTEuMDcsMTQsNi4yNCwxNS4zM0EuODIuODIsMCwwLDEsNiwxNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNy4wNSwyNy41NGExLDEsMCwwLDEtMS0uNzVMMjQu''@;'; put 'put ''OCwyMmw0LjgyLTEuM2ExLDEsMCwxLDEsLjUyLDEuOTNsLTIuOS43OC43OCwyLjlhMSwxLDAsMCwxLS43MSwxLjIyQS43NS43NSwwLDAsMSwyNy4wNSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik00Ljk0LDI2LjVhMSwxLDAs''@;'; put 'put ''MCwxLS41LTEuODdsMjYtMTVhMSwxLDAsMCwxLDEuMzYuMzYsMSwxLDAsMCwxLS4zNiwxLjM3bC0yNiwxNUExLDEsMCwwLDEsNC45NCwyNi41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTguODEsMjcuNTRhLjc1Ljc1LDAsMCwxLS4y''@;'; put 'put ''NiwwLDEsMSwwLDAsMS0uNzEtMS4yMmwuNzgtMi45LTIuOS0uNzhBMSwxLDAsMCwxLDUsMjEuMzhhMSwxLDAsMCwxLDEuMjMtLjcxTDExLjA3LDIybC0xLjMsNC44MkExLDEsMCwwLDEsOC44MSwyNy41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0yOS44OCwxNS4zN2EuODIuODIsMCwwLDEtLjI2LDBMMjQuOCwxNGwxLjI5LTQuODNBMSwxLDAsMSwxLDI4LDkuNzNsLS43OCwyLjg5LDIuOS43OGExLDEsMCwwLDEtLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz4nKSxULkNsclNo''@;'; put 'put ''YXBlVGFibGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTgsMzRhMSwxLDAsMCwxLTEtMVYyLjkyYTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTcsMzMuOTJhMSwxLDAs''@;'; put 'put ''MCwxLTEtMVY5LjFhMSwxLDAsMSwxLDIsMFYzMi45MkExLDEsMCwwLDEsMTcsMzMuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjYsMzRhMSwxLDAsMCwxLTEtMVY5YTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDI2LDM0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjExLDE4aC0yNWExLDEsMCwxLDEsMC0yaDI1YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMuMSwyNi45''@;'; put 'put ''NEg4LjFBMSwxLDAsMSwxLDguMSwyNWgyNWExLDEsMCwxLDEsMCwxLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLDguOTJIM0ExLDEsMCwxLDEsMyw3SDMzYTEsMSwwLDEsMSwwLDEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxULkNsclNoYXBlVm9sdW1lPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS44OCwzMkgxMmE0LDQsMCwwLDEtNC00VjExLjQ2TDIuMzEsNS43N2ExLDEsMCwwLDEtLjIyLTEuMDlBMSwxLDAsMCwxLDMsNC4wNkgyOC44NmExLDEsMCww''@;'; put 'put ''LDEsMSwxVjI4QTQsNCwwLDAsMSwyNS44OCwzMlpNNS40Myw2bDQuMjgsNC4zNGEuNzUuNzUsMCwwLDEsLjIxLjYzdjE3QTIuMTMsMi4xMywwLDAsMCwxMiwzMEgyNS44OEEyLjEsMi4xLDAsMCwwLDI4LDI4VjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMzMsMTZhMSwxLDAsMCwxLTEtMVY2SDI4Ljg2YS45Mi45MiwwLDAsMS0xLS45LDEsMSwwLDAsMSwxLTFIMzNhMSwxLDAsMCwxLDEsMVYxNUExLDEsMCwwLDEsMzMsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJN''@;'; put 'put ''MjQsMTFIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDE1SDIxYTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yNCwxOUgxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjQsMjdIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI0LDIzSDIxQTEsMSwwLDEsMSwyMSwyMUgyNEExLDEsMCwxLDEsMjQsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxULkNsclNoYXBlQ3Jv''@;'; put 'put ''c3NoYWlycz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjlBMTEsMTEsMCwxLDEsMjksMTgsMTEsMTEsMCwwLDEsMTgsMjlaTTE4LDlhOSw5LDAsMSwwLDksOUE5LDksMCwwLDAsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwyM2E1LDUsMCwxLDEsNS01QTUsNSwwLDAsMSwxOCwyM1ptMC04YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDE4LDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlhMSwxLDAsMCwxLTEtMVYyLjhhMSwxLDAsMCwx''@;'; put 'put ''LDIsMFY4QTEsMSwwLDAsMSwxOCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDM0YTEsMSwwLDAsMS0xLTFWMjhhMSwxLDAsMCwxLDIsMHY1QTEsMSwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik04LDE5SDMuMTdhMSwxLDAsMCwxLDAtMkg4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuMSwxOUgyOGExLDEsMCwwLDEsMC0yaDUuMWExLDEsMCwwLDEsMCwy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksVC5DbHJTaGFwZUNpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQs''@;'; put 'put ''MTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksVC5DbHJT''@;'; put 'put ''aGFwZURvdENpcmNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTFhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCww''@;'; put 'put ''LDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVCZXRhPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjIxLDE0LjA3aDNhMS42MSwxLjYx''@;'; put 'put ''LDAsMCwxLDEuODEsMS41LDEuNDQsMS40NCwwLDAsMS0uODQsMS4zNCwxLjY3LDEuNjcsMCwwLDEsMS4xLDEuNTMsMS43NSwxLjc1LDAsMCwxLTIsMS42M0g3LjIxWm0yLjcxLDIuNDJjLjQ4LDAsLjgyLS4yOC44Mi0uNjdzLS4zNC0uNjUtLjgyLS42NUg4LjQ5djEuMzJabS4yLDIuNDhhLjc1''@;'; put 'put ''Ljc1LDAsMSwwLDAtMS40N0g4LjQ5VjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE0LjU1LDE1LjIzdjEuMmgzdjEuMTZoLTN2MS4zMmgzLjMzdjEuMTZIMTMuMjZ2LTZoNC42MnYxLjE2WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIwLjQxLDE1LjIzSDE4LjU0VjE0LjA3aDV2MS4xNkgyMS43djQuODRIMjAuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjgsMTkuMTJIMjUuMzJsLS4z''@;'; put 'put ''OC45NUgyMy41bDIuNDQtNmgxLjQ0bDIuNDUsNkgyOC4zOFpNMjcuNTUsMThsLS44OS0yLjE5TDI1Ljc3LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTguMDYsMzBhLjg0Ljg0LDAsMCwxLS4zOC0uMDhBMSwxLDAsMCwxLDcu''@;'; put 'put ''MDYsMjlWMjVoLTRhMSwxLDAsMCwxLTEtMVYxMGExLDEsMCwwLDEsMS0xaDMwYTEsMSwwLDAsMSwxLDFWMjRhMSwxLDAsMCwxLTEsMUgxMy40OEw4Ljc3LDI5LjcxQTEsMSwwLDAsMSw4LjA2LDMwWm0tNC03aDRhMSwxLDAsMCwxLDEsMXYyLjU5bDMuMy0zLjNhMSwxLDAsMCwxLC43LS4yOWgx''@;'; put 'put ''OVYxMWgtMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuXG4gIDxwb2x5Z29uIHBvaW50cz0iMjUuOCwxOCAyNy41LDE4IDI2LjcsMTUuOCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuXHQ8cGF0aCBkPSJNMTAuNCwx''@;'; put 'put ''Ny41Yy0wLjEsMC0wLjIsMC0wLjMsMEg4LjVWMTlsMS42LDBjMC40LDAuMSwwLjgtMC4yLDAuOS0wLjZDMTEuMSwxOCwxMC44LDE3LjYsMTAuNCwxNy41eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXHQ8cGF0aCBkPSJNMTAuNywxNS44YzAtMC40LTAuMy0w''@;'; put 'put ''LjctMC44LTAuN0g4LjV2MS4zaDEuNEMxMC40LDE2LjUsMTAuNywxNi4yLDEwLjcsMTUuOHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cblx0PHBhdGggZD0iTTMzLjEsOWgtMzBjLTAuNiwwLTEsMC40LTEsMXYxNGMwLDAuNiwwLjQsMSwxLDFoNHY0YzAsMC40''@;'; put 'put ''LDAuMiwwLjgsMC42LDAuOUM3LjgsMzAsNy45LDMwLDguMSwzMGMwLjMsMCwwLjUtMC4xLDAuNy0wLjNcblx0XHRsNC43LTQuN2gxOS42YzAuNiwwLDEtMC40LDEtMVYxMEMzNC4xLDkuNCwzMy42LDksMzMuMSw5eiBNMTAuNCwyMC4xYy0wLjEsMC0wLjEsMC0wLjIsMEg3LjJ2LTZoM2MwLjkt''@;'; put 'put ''MC4xLDEuNywwLjUsMS44LDEuNFxuXHRcdGMwLDAsMCwwLjEsMCwwLjFjMCwwLjYtMC4zLDEuMS0wLjgsMS4zYzAuNiwwLjIsMS4xLDAuOCwxLjEsMS41QzEyLjIsMTkuNCwxMS40LDIwLjEsMTAuNCwyMC4xeiBNMTcuOSwxNS4yaC0zLjN2MS4yaDN2MS4yaC0zdjEuM1xuXHRcdGgzLjN2MS4y''@;'; put 'put ''aC00LjZ2LTZoNC42VjE1LjJ6IE0yMS43LDIwLjFoLTEuM3YtNC44aC0xLjl2LTEuMmg1djEuMmgtMS44VjIwLjF6IE0yOC40LDIwLjFsLTAuNC0xaC0yLjdsLTAuNCwxaC0xLjRsMi40LTZoMS40bDIuNSw2XG5cdFx0SDI4LjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC00Ii8+XG4nKSxULkNsclNoYXBlRmlyc3RBaWQ9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwy''@;'; put 'put ''LDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjAuMTUsMjUuMkgx''@;'; put 'put ''Ni43NGExLjMsMS4zLDAsMCwxLTEuMy0xLjNWMjEuMmgtMi43YTEuMywxLjMsMCwwLDEtMS4zLTEuM1YxNi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gyLjdWMTIuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMy40MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjIuN2gyLjcxYTEuMywxLjMsMCww''@;'; put 'put ''LDEsMS4yOSwxLjN2My40YTEuMywxLjMsMCwwLDEtMS4yOSwxLjNIMjEuNDR2Mi43QTEuMywxLjMsMCwwLDEsMjAuMTUsMjUuMlpNMTcsMjMuNmgyLjgxdi00aDRWMTYuOGgtNHYtNEgxN3Y0SDEzdjIuOGg0Wm03LjExLTYuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTMyLDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQu''@;'; put 'put ''NWEuNS41LDAsMCwxLC41LS41aDdhLjUuNSwwLDAsMSwuNS41VjZoLThaTTI0LjY0LDE5LjlhLjUuNSwwLDAsMS0uNS41aC0zLjV2My41YS41LjUsMCwwLDEtLjUuNWgtMy40YS41LjUsMCwwLDEtLjUtLjVWMjAuNGgtMy41YS41LjUsMCwwLDEtLjUtLjVWMTYuNWEuNS41LDAsMCwxLC41LS41''@;'; put 'put ''aDMuNVYxMi41YS41LjUsMCwwLDEsLjUtLjVoMy40YS41LjUsMCwwLDEsLjUuNVYxNmgzLjVhLjUuNSwwLDAsMSwuNS41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxULkNsclNoYXBlQ29sb3JQYWxldHRlPSgwLHYuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yMS41NCwyMy4wNWEzLjIyLDMuMjIsMCwwLDEtMy0xLjc3QTMuMDUsMy4wNSwwLDAsMSwxOC41LDE5YTMuNzQsMy43NCwwLDAsMSwxLjk1LTIuMDZBMy40LDMuNCwwLDAsMSwyNSwxOC4zYTMsMywwLDAsMSwuMDgsMi4zMiwzLjY5LDMuNjksMCwwLDEtMiwyLjA3QTMuODUsMy44NSww''@;'; put 'put ''LDAsMSwyMS41NCwyMy4wNVptLjU0LTQuOTFhMi40MSwyLjQxLDAsMCwwLTEsLjIxaDBBMi4xMywyLjEzLDAsMCwwLDIwLDE5LjUxYTEuMzcsMS4zNywwLDAsMCwwLDEuMDksMS44MSwxLjgxLDAsMCwwLDIuNDUuNjMsMi4xLDIuMSwwLDAsMCwxLjEyLTEuMTUsMS40LDEuNCwwLDAsMCwwLTEu''@;'; put 'put ''MUExLjU5LDEuNTksMCwwLDAsMjIuMDgsMTguMTRabS0xLjI5LS41MmgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE2LjE5LDMzLjg3QTEzLjcyLDEzLjcyLDAsMCwxLDYuNCwzMCwxMy44NiwxMy44NiwwLDAsMSwyLDIwYzAt''@;'; put 'put ''NC40LDItOC44NCw1LjY4LTEyLjVhMTguMiwxOC4yLDAsMCwxLDEzLjEtNS4zN2guMTJjMy4zMywwLDYuODUsMS40OSw3LjI0LDQuNzMuMjEsMS43Ny0uNTksMy40Ny0xLjI5LDUtLjU1LDEuMTctMS4xMSwyLjM5LS43MiwyLjgxczEsLjEyLDIuMDktLjJhNi4yNyw2LjI3LDAsMCwxLDMuMzgt''@;'; put 'put ''LjM2LDMsMywwLDAsMSwxLjg3LDEuNTZjLjk0LDEuODMuNDcsNC42Ny0uMjMsNi41NGgwQTE3LjM4LDE3LjM4LDAsMCwxLDI5LDI4Ljc0LDE5LjQzLDE5LjQzLDAsMCwxLDE2LjE5LDMzLjg3Wk0yMC43OCw0LjE2QTE2LjIyLDE2LjIyLDAsMCwwLDkuMDksOUM1Ljc5LDEyLjIzLDQsMTYuMTYs''@;'; put 'put ''NCwyMEExMS45MiwxMS45MiwwLDAsMCw3LjgsMjguNmM1LjM4LDUuMjUsMTQuNjIsMy41NSwxOS44Ny0xLjMzYTE1LjUyLDE1LjUyLDAsMCwwLDMuNy01Ljc1aDBjLjctMS45Ljg0LTMuOTIuMzItNC45MmExLDEsMCwwLDAtLjYxLS41NSw0Ljg2LDQuODYsMCwwLDAtMi4yOS4zNWMtMS4zMS4z''@;'; put 'put ''OS0zLC44OS00LjEyLS4zNS0xLjMyLTEuNC0uNDYtMy4yNS4zNy01YTcuOTMsNy45MywwLDAsMCwxLjExLTMuOWMtLjI0LTItMi44MS0yLjk1LTUuMjYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy44NywyNi42NUEyLjU5''@;'; put 'put ''LDIuNTksMCwwLDAsMjIuMzUsMjVMMjIsMjQuOWwtLjQ2LDEuNTMuMTYsMGExLDEsMCwwLDEsLjYuNjFjLjE3LjYtLjQxLDEuMzEtMS4yNiwxLjU1cy0xLjcxLS4wNy0xLjg4LS42NmwtMS41NC40M2gwYTIuODMsMi44MywwLDAsMCwyLjg0LDEuOTEsNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAs''@;'; put 'put ''MCwyMy44NywyNi42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0xNS4wNywyNS41OWgwYTIuNzMsMi43MywwLDAsMC0yLjI0LTEuODRsLS4yNywxLjU4YTEuMTIsMS4xMiwwLDAsMSwxLC43Yy4xNy41OS0uNDEsMS4zLTEuMjYs''@;'; put 'put ''MS41NEExLjkyLDEuOTIsMCwwLDEsMTEsMjcuNTJhMSwxLDAsMCwxLS42LS42MXMwLS4wOSwwLS4xM2wtMS41OC4xNmEyLDIsMCwwLDAsLjA2LjQxQTIuNTksMi41OSwwLDAsMCwxMC4zNywyOWEzLjM2LDMuMzYsMCwwLDAsMS4zMS4yNSwzLjcsMy43LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwx''@;'; put 'put ''NS4wNywyNS41OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xMC43OCwxOS4xN2EyLjU5LDIuNTksMCwwLDAtMS41Mi0xLjY1LDIuOTEsMi45MSwwLDAsMC0uNS0uMTZsLS4zNywxLjU2YTEuMjEsMS4yMSwwLDAsMSwuMjUuMDgs''@;'; put 'put ''MSwxLDAsMCwxLC42LjZjLjE3LjYtLjQxLDEuMzEtMS4yNiwxLjU1cy0xLjcxLS4wNi0xLjg4LS42NmEuODYuODYsMCwwLDEsMC0uMzlsLTEuNTYtLjM0YTIuNCwyLjQsMCwwLDAsMCwxLjE2QTIuODMsMi44MywwLDAsMCw3LjQsMjIuODNhNCw0LDAsMCwwLDEtLjE0QTMsMywwLDAsMCwxMC43''@;'; put 'put ''OCwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMy40NSwxMS40YTIuNTksMi41OSwwLDAsMC0xLjUyLTEuNjUsMS4xNywxLjE3LDAsMCwwLS4yLS4wNmwtLjUyLDEuNTFhLjM4LjM4LDAsMCwxLC4xLDAsMSwxLDAsMCwx''@;'; put 'put ''LC42LjZjLjE3LjYtLjQxLDEuMzEtMS4yNiwxLjU1YTIuMDYsMi4wNiwwLDAsMS0xLjI4LS4wNSwxLDEsMCwwLDEtLjYtLjYxLjg1Ljg1LDAsMCwxLDAtLjMybC0xLjU4LS4xOWEyLjMsMi4zLDAsMCwwLC4wNi45NEEyLjU2LDIuNTYsMCwwLDAsOC43NSwxNC44YTMuMzcsMy4zNywwLDAsMCwx''@;'; put 'put ''LjMxLjI2LDQsNCwwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMTMuNDUsMTEuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0yMSw2Ljc4YTIuNTYsMi41NiwwLDAsMC0xLjUyLTEuNjVsLS4zLS4xTDE4LjcsNi41NmwuMTUsMGExLDEs''@;'; put 'put ''MCwwLDEsLjYuNjFjLjE3LjYtLjQxLDEuMy0xLjI2LDEuNTRzLTEuNzEtLjA2LTEuODgtLjY1YS45LjksMCwwLDEsLjA2LS41OEwxNC44OSw2LjlhMi40NywyLjQ3LDAsMCwwLS4xMiwxLjYzLDIuODQsMi44NCwwLDAsMCwyLjg0LDEuOTEsMy41OCwzLjU4LDAsMCwwLDEtLjE1QTMsMywwLDAs''@;'; put 'put ''MCwyMSw2Ljc4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cblxuICA8cGF0aCBkPSJNMzIuMjMsMTQuODljLTIuMS0uNTYtNC45MywxLjgtNi4zNC4zLTEuNzEtMS44MiwyLjI3LTUuNTMsMS44Ni04LjkyLS4zMy0yLjc4LTMuNTEtNC4wOC02LjY2LTQu''@;'; put 'put ''MUExOC41LDE4LjUsMCwwLDAsNy43NCw3LjU5Yy02LjY0LDYuNTktOC4wNywxNi0xLjM3LDIyLjQ4LDYuMjEsNiwxNi42MSw0LjIzLDIyLjY3LTEuNGExNy43MywxNy43MywwLDAsMCw0LjIyLTYuNTRDMzQuMzQsMTkuMjMsMzQuNDQsMTUuNDksMzIuMjMsMTQuODlaTTkuNCwxMC41N2EyLjIz''@;'; put 'put ''LDIuMjMsMCwwLDEsMi44NywxLjIxLDIuMjIsMi4yMiwwLDAsMS0xLjgxLDIuNTNBMi4yMiwyLjIyLDAsMCwxLDcuNTksMTMuMSwyLjIzLDIuMjMsMCwwLDEsOS40LDEwLjU3Wk01LjA3LDIwLjgyYTIuMjIsMi4yMiwwLDAsMSwxLjgyLTIuNTNBMi4yMiwyLjIyLDAsMCwxLDkuNzUsMTkuNSwy''@;'; put 'put ''LjIzLDIuMjMsMCwwLDEsNy45NCwyMiwyLjI0LDIuMjQsMCwwLDEsNS4wNywyMC44MlptNyw4LjMzYTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjFBMi4yMywyLjIzLDAsMCwxLDExLDI1LjQxYTIuMjMsMi4yMywwLDAsMSwyLjg3LDEuMjFBMi4yMiwyLjIyLDAsMCwxLDEyLDI5LjE1Wk0xNSw4''@;'; put 'put ''LjI2YTIuMjMsMi4yMywwLDAsMSwxLjgxLTIuNTMsMi4yNCwyLjI0LDAsMCwxLDIuODcsMS4yMSwyLjIyLDIuMjIsMCwwLDEtMS44MiwyLjUzQTIuMjEsMi4yMSwwLDAsMSwxNSw4LjI2Wm01LjgyLDIyLjE5YTIuMjIsMi4yMiwwLDAsMS0yLjg3LTEuMjEsMi4yMywyLjIzLDAsMCwxLDEuODEt''@;'; put 'put ''Mi41MywyLjI0LDIuMjQsMCwwLDEsMi44NywxLjIxQTIuMjIsMi4yMiwwLDAsMSwyMC43OCwzMC40NVptNS0xMC40NmEzLjIsMy4yLDAsMCwxLTEuNjksMS43NiwzLjUzLDMuNTMsMCwwLDEtMS40LjMsMi43OCwyLjc4LDAsMCwxLTIuNTYtMS41LDIuNDksMi40OSwwLDAsMS0uMDctMiwzLjIs''@;'; put 'put ''My4yLDAsMCwxLDEuNjktMS43NiwzLDMsMCwwLDEsNCwxLjJBMi41NCwyLjU0LDAsMCwxLDI1Ljc5LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLFQuRXNzZW50aWFsU2hhcGVzPXsiYWRkLXRleHQiOlQuQ2xyU2hhcGVBZGRUZXh0LCJhbGFybS1vZmYi''@;'; put 'put ''OlQuQ2xyU2hhcGVBbGFybU9mZixwaW5ib2FyZDpULkNsclNoYXBlUGluYm9hcmQsbmV3OlQuQ2xyU2hhcGVOZXcsImJ1YmJsZS1leGNsYW1hdGlvbiI6VC5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uLCJncmlkLXZpZXciOlQuQ2xyU2hhcGVHcmlkVmlldywiY3Vyc29yLWFycm93IjpULkNs''@;'; put 'put ''clNoYXBlQ3Vyc29yQXJyb3csImN1cnNvci1oYW5kIjpULkNsclNoYXBlQ3Vyc29ySGFuZCwiY3Vyc29yLWhhbmQtY2xpY2siOlQuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2ssImN1cnNvci1oYW5kLWdyYWIiOlQuQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYiwiY3Vyc29yLWhhbmQtb3BlbiI6VC5D''@;'; put 'put ''bHJTaGFwZUN1cnNvckhhbmRPcGVuLCJjdXJzb3ItbW92ZSI6VC5DbHJTaGFwZUN1cnNvck1vdmUsImZpcnN0LWFpZCI6VC5DbHJTaGFwZUZpcnN0QWlkLHJlc2l6ZTpULkNsclNoYXBlUmVzaXplLG9iamVjdHM6VC5DbHJTaGFwZU9iamVjdHMsYm9vazpULkNsclNoYXBlQm9vayxhc3Rlcmlz''@;'; put 'put ''azpULkNsclNoYXBlQXN0ZXJpc2ssYnVnOlQuQ2xyU2hhcGVCdWcsc2Npc3NvcnM6VC5DbHJTaGFwZVNjaXNzb3JzLHRoZXJtb21ldGVyOlQuQ2xyU2hhcGVUaGVybW9tZXRlcixwZW5jaWw6VC5DbHJTaGFwZVBlbmNpbCxub3RlOlQuQ2xyU2hhcGVOb3RlLHJlZnJlc2g6VC5DbHJTaGFwZVJl''@;'; put 'put ''ZnJlc2gsc3luYzpULkNsclNoYXBlU3luYywidmlldy1saXN0IjpULkNsclNoYXBlVmlld0xpc3QsInZpZXctY2FyZHMiOlQuQ2xyU2hhcGVWaWV3Q2FyZHMsInRyZWUtdmlldyI6VC5DbHJTaGFwZVRyZWVWaWV3LGxpZ2h0YnVsYjpULkNsclNoYXBlTGlnaHRidWxiLGRvd25sb2FkOlQuQ2xy''@;'; put 'put ''U2hhcGVEb3dubG9hZCx1cGxvYWQ6VC5DbHJTaGFwZVVwbG9hZCxsb2NrOlQuQ2xyU2hhcGVMb2NrLHVubG9jazpULkNsclNoYXBlVW5sb2NrLHVzZXJzOlQuQ2xyU2hhcGVVc2VycywicG9wLW91dCI6VC5DbHJTaGFwZVBvcE91dCxmaWx0ZXI6VC5DbHJTaGFwZUZpbHRlcixwaW46VC5DbHJT''@;'; put 'put ''aGFwZVBpbixmaWxlOlQuQ2xyU2hhcGVGaWxlLHBsdXM6VC5DbHJTaGFwZVBsdXMsbWludXM6VC5DbHJTaGFwZU1pbnVzLCJtaW51cy1jaXJjbGUiOlQuQ2xyU2hhcGVNaW51c0NpcmNsZSwicGx1cy1jaXJjbGUiOlQuQ2xyU2hhcGVQbHVzQ2lyY2xlLGJhbjpULkNsclNoYXBlQmFuLCJ0aW1l''@;'; put 'put ''cy1jaXJjbGUiOlQuQ2xyU2hhcGVUaW1lc0NpcmNsZSx0cmFzaDpULkNsclNoYXBlVHJhc2gsY2lyY2xlOlQuQ2xyU2hhcGVDaXJjbGUsdGFnOlQuQ2xyU2hhcGVUYWcsdGFnczpULkNsclNoYXBlVGFncyxoaXN0b3J5OlQuQ2xyU2hhcGVIaXN0b3J5LGNsb2NrOlQuQ2xyU2hhcGVDbG9jaywi''@;'; put 'put ''YWxhcm0tY2xvY2siOlQuQ2xyU2hhcGVBbGFybUNsb2NrLGFycm93OmhlLkNsclNoYXBlQXJyb3csImNpcmNsZS1hcnJvdyI6VC5DbHJTaGFwZUNpcmNsZUFycm93LCJjaGlsZC1hcnJvdyI6VC5DbHJTaGFwZUNoaWxkQXJyb3csY29weTpULkNsclNoYXBlQ29weSxoZWxwOlQuQ2xyU2hhcGVI''@;'; put 'put ''ZWxwLGxvZ2luOlQuQ2xyU2hhcGVMb2dpbixsb2dvdXQ6VC5DbHJTaGFwZUxvZ291dCxwcmludGVyOlQuQ2xyU2hhcGVQcmludGVyLHdvcmxkOlQuQ2xyU2hhcGVXb3JsZCxzbGlkZXI6VC5DbHJTaGFwZVNsaWRlcixjbGlwYm9hcmQ6VC5DbHJTaGFwZUNsaXBib2FyZCxmaXJld2FsbDpULkNs''@;'; put 'put ''clNoYXBlRmlyZXdhbGwsbGlzdDpULkNsclNoYXBlTGlzdCxyZWRvOlQuQ2xyU2hhcGVSZWRvLHVuZG86VC5DbHJTaGFwZVVuZG8sc2Nyb2xsOlQuQ2xyU2hhcGVTY3JvbGwsImZpbGUtc2V0dGluZ3MiOlQuQ2xyU2hhcGVGaWxlU2V0dGluZ3MsInR3by13YXktYXJyb3dzIjpULkNsclNoYXBl''@;'; put 'put ''VHdvV2F5QXJyb3dzLHN3aXRjaDpULkNsclNoYXBlU3dpdGNoLHRvb2xzOlQuQ2xyU2hhcGVUb29scywid2luZG93LWNsb3NlIjpULkNsclNoYXBlV2luZG93Q2xvc2UsIndpbmRvdy1tYXgiOlQuQ2xyU2hhcGVXaW5kb3dNYXgsIndpbmRvdy1taW4iOlQuQ2xyU2hhcGVXaW5kb3dNaW4sIndp''@;'; put 'put ''bmRvdy1yZXN0b3JlIjpULkNsclNoYXBlV2luZG93UmVzdG9yZSwiem9vbS1pbiI6VC5DbHJTaGFwZVpvb21Jbiwiem9vbS1vdXQiOlQuQ2xyU2hhcGVab29tT3V0LGtleTpULkNsclNoYXBlS2V5LGxpYnJhcnk6VC5DbHJTaGFwZUxpYnJhcnksYm9sdDpULkNsclNoYXBlQm9sdCx3cmVuY2g6''@;'; put 'put ''VC5DbHJTaGFwZVdyZW5jaCxidWxsc2V5ZTpULkNsclNoYXBlQnVsbHNleWUsdGFyZ2V0OlQuQ2xyU2hhcGVUYXJnZXQsZmxhbWU6VC5DbHJTaGFwZUZsYW1lLGhvdXJnbGFzczpULkNsclNoYXBlSG91cmdsYXNzLCJuby1hY2Nlc3MiOlQuQ2xyU2hhcGVOb0FjY2Vzcyxvcmdhbml6YXRpb246''@;'; put 'put ''VC5DbHJTaGFwZU9yZ2FuaXphdGlvbixiYWxhbmNlOlQuQ2xyU2hhcGVCYWxhbmNlLCJpZC1iYWRnZSI6VC5DbHJTaGFwZUlkQmFkZ2UscmVwZWF0OlQuQ2xyU2hhcGVSZXBlYXQsImZpbGUtZ3JvdXAiOlQuQ2xyU2hhcGVGaWxlR3JvdXAscGFwZXJjbGlwOlQuQ2xyU2hhcGVQYXBlcmNsaXAs''@;'; put 'put ''c2hyaW5rOlQuQ2xyU2hhcGVTaHJpbmssImFjY2Vzc2liaWxpdHktMSI6VC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxLCJhY2Nlc3NpYmlsaXR5LTIiOlQuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Miwic29ydC1ieSI6VC5DbHJTaGFwZVNvcnRCeSwiY29sbGFwc2UtY2FyZCI6VC5DbHJTaGFwZUNv''@;'; put 'put ''bGxhcHNlQ2FyZCwiZXhwYW5kLWNhcmQiOlQuQ2xyU2hhcGVFeHBhbmRDYXJkLGJyaWVmY2FzZTpULkNsclNoYXBlQnJpZWZjYXNlLCJjb2xvci1waWNrZXIiOlQuQ2xyU2hhcGVDb2xvclBpY2tlciwiY29weS10by1jbGlwYm9hcmQiOlQuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQsImZpbHRl''@;'; put 'put ''ci0yIjpULkNsclNoYXBlRmlsdGVyMiwiZHJhZy1oYW5kbGUiOlQuQ2xyU2hhcGVEcmFnSGFuZGxlLG1vb246VC5DbHJTaGFwZU1vb24sc3VuOlQuQ2xyU2hhcGVTdW4sd2FuZDpULkNsclNoYXBlV2FuZCxjbG9uZTpULkNsclNoYXBlQ2xvbmUsZGV0YWlsczpULkNsclNoYXBlRGV0YWlscywi''@;'; put 'put ''ZHJhZy1oYW5kbGUtY29ybmVyIjpULkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcixlcmFzZXI6VC5DbHJTaGFwZUVyYXNlcixsYW5kc2NhcGU6VC5DbHJTaGFwZUxhbmRzY2FwZSxwYXN0ZTpULkNsclNoYXBlUGFzdGUscG9ydHJhaXQ6VC5DbHJTaGFwZVBvcnRyYWl0LCJmaWxlLXppcCI6VC5D''@;'; put 'put ''bHJTaGFwZUZpbGVaaXAsImZpbHRlci1vZmYiOlQuQ2xyU2hhcGVGaWx0ZXJPZmYscmVjeWNsZTpULkNsclNoYXBlUmVjeWNsZSx0cmVlOlQuQ2xyU2hhcGVUcmVlLGZpc2g6VC5DbHJTaGFwZUZpc2gsZm9ybTpULkNsclNoYXBlRm9ybSxmdWVsOlQuQ2xyU2hhcGVGdWVsLHNub3dmbGFrZTpU''@;'; put 'put ''LkNsclNoYXBlU25vd2ZsYWtlLHRhYmxlOlQuQ2xyU2hhcGVUYWJsZSwiZG90LWNpcmNsZSI6VC5DbHJTaGFwZURvdENpcmNsZSx2b2x1bWU6VC5DbHJTaGFwZVZvbHVtZSxjcm9zc2hhaXJzOlQuQ2xyU2hhcGVDcm9zc2hhaXJzLGJldGE6VC5DbHJTaGFwZUJldGEsImNvbG9yLXBhbGV0dGUi''@;'; put 'put ''OlQuQ2xyU2hhcGVDb2xvclBhbGV0dGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkVzc2VudGlhbFNoYXBlcywiZWRpdCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5wZW5jaWwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsIm5v''@;'; put 'put ''dGUtZWRpdCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5ub3RlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuRXNzZW50aWFsU2hhcGVzLCJncm91cCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy51c2VycykpLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShULkVzc2VudGlhbFNoYXBlcywiZG9jdW1lbnQiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Fc3NlbnRpYWxTaGFwZXMuZmlsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkVzc2VudGlhbFNoYXBlcywiYWRkIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuRXNzZW50''@;'; put 'put ''aWFsU2hhcGVzLnBsdXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsImNhbmNlbCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5iYW4pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsInJlbW92ZSIsKDAs''@;'; put 'put ''ay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlc1sidGltZXMtY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsInNpZ24taW4iLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Fc3NlbnRpYWxTaGFwZXMubG9naW4pKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsInNpZ24tb3V0IiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuRXNzZW50aWFsU2hhcGVzLmxvZ291dCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkVzc2VudGlhbFNoYXBlcywibGlnaHRuaW5nIiwoMCxrLmRlc2NyaXB0b3JDb25maWcp''@;'; put 'put ''KFQuRXNzZW50aWFsU2hhcGVzLmJvbHQpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsImZsb3ctY2hhcnQiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Fc3NlbnRpYWxTaGFwZXMub3JnYW5pemF0aW9uKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuRXNzZW50''@;'; put 'put ''aWFsU2hhcGVzLCJhbGVydCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlc1siYnViYmxlLWV4Y2xhbWF0aW9uIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsInBpbm5lZCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlh''@;'; put 'put ''bFNoYXBlcy5waW5ib2FyZCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMs''@;'; put 'put ''ImF0dGFjaG1lbnQiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5Fc3NlbnRpYWxTaGFwZXMucGFwZXJjbGlwKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuRXNzZW50aWFsU2hhcGVzLCJyZXNpemUtZG93biIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5zaHJp''@;'; put 'put ''bmspKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS11cCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULkVzc2VudGlhbFNoYXBlcy5yZXNpemUpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYm''@;'; put 'put ''d2luZG93LkNsYXJpdHlJY29ucy5hZGQoVC5Fc3NlbnRpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAg''@;'; put 'put ''ICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlv''@;'; put 'put ''bih6ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuTWVkaWFTaGFwZXM9VC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlPVQuQ2xyU2hhcGVNaWNyb3Bob25lPVQuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9VC5DbHJTaGFw''@;'; put 'put ''ZVJlcGxheU9uZT1ULkNsclNoYXBlUmVwbGF5QWxsPVQuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9VC5DbHJTaGFwZU11c2ljTm90ZT1ULkNsclNoYXBlRmlsbVN0cmlwPVQuQ2xyU2hhcGVIZWFkcGhvbmVzPVQuQ2xyU2hhcGVWb2x1bWVNdXRlPVQuQ2xyU2hhcGVWb2x1bWVVcD1ULkNsclNoYXBl''@;'; put 'put ''Vm9sdW1lRG93bj1ULkNsclNoYXBlU2h1ZmZsZT1ULkNsclNoYXBlVmlkZW9DYW1lcmE9VC5DbHJTaGFwZUNhbWVyYT1ULkNsclNoYXBlRmFzdEZvcndhcmQ9VC5DbHJTaGFwZVJld2luZD1ULkNsclNoYXBlUG93ZXI9VC5DbHJTaGFwZVN0b3A9VC5DbHJTaGFwZVN0ZXBGb3J3YXJkPVQuQ2xy''@;'; put 'put ''U2hhcGVQYXVzZT1ULkNsclNoYXBlUGxheT12b2lkIDA7dmFyIGs9c2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtULkNsclNoYXBlUGxheT0oMCxrLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguMDcsMzEuNkEyLjA3LDIuMDcsMCwwLDEsNiwyOS41M1Y2LjMyQTIuMDcsMi4wNywwLDAsMSw5LDQuNDdMMzIuMjEsMTYuMDhhMi4wNywyLjA3LDAsMCwxLDAsMy43TDksMzEuMzhBMi4wNiwyLjA2LDAs''@;'; put 'put ''MCwxLDguMDcsMzEuNlptMC0yNS4zNEw4LDYuMzJWMjkuNTNsLjEuMDZMMzEuMzEsMThhLjA2LjA2LDAsMCwwLDAtLjA2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxNi4wOCw4Ljk0LDQuNDdBMi4w''@;'; put 'put ''NywyLjA3LDAsMCwwLDYsNi4zMlYyOS41M2EyLjA2LDIuMDYsMCwwLDAsMywxLjg1TDMyLjE2LDE5Ljc3YTIuMDcsMi4wNywwLDAsMCwwLTMuN1oiLz4nKSxULkNsclNoYXBlUGF1c2U9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xMi45MywzMkg2LjA3QTIuMDcsMi4wNywwLDAsMSw0LDI5LjkzVjYuMDdBMi4wNywyLjA3LDAsMCwxLDYuMDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwxNSw2LjA3VjI5LjkzQTIuMDcsMi4wNywwLDAsMSwxMi45MywzMlpNMTMsNkg2VjMwaDdaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOS45MywzMkgyMy4wN0EyLjA3LDIuMDcsMCwwLDEsMjEsMjkuOTNWNi4wN0EyLjA3LDIuMDcsMCwwLDEsMjMuMDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwzMiw2LjA3VjI5LjkzQTIu''@;'; put 'put ''MDcsMi4wNywwLDAsMSwyOS45MywzMlpNMzAsNkgyM1YzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjMuOTUiIHk9IjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjAuOTUiIHk9IjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+JyksVC5DbHJTaGFwZVN0ZXBGb3J3YXJkPSgwLGsuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNSwzMi4yM2EyLDIsMCwwLDEtMi0yVjUuNzdBMiwyLDAsMCwxLDYuMTcsNC4xNEwyMy4yMywxNi4zOGEyLDIsMCwwLDEsMCwzLjI1aDBMNi4xNywzMS44NkEyLDIsMCwwLDEsNSwzMi4yM1pNNSw1Ljc3''@;'; put 'put ''VjMwLjIzTDIyLjA3LDE4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzEsMzJIMjhhMiwyLDAsMCwxLTItMlY2YTIsMiwwLDAsMSwyLTJoM2EyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMSwzMlpN''@;'; put 'put ''MjgsNlYzMGgzVjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUsMzEuOWEyLDIsMCwwLDEtMi0yVjUuNDRBMiwyLDAsMCwxLDYuMTIsMy44MUwyMy4xOCwxNmEyLDIsMCwwLDEsMCwzLjI1aDBMNi4xMiwzMS41''@;'; put 'put ''MkEyLDIsMCwwLDEsNSwzMS45WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjI1Ljk1IiB5PSIzLjY3IiB3aWR0aD0iNyIgaGVpZ2h0PSIyOCIgcng9IjIiIHJ5PSIyIi8+JyksVC5DbHJTaGFwZVN0b3A9KDAsay5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMkg2YTIsMiwwLDAsMS0yLTJWNkEyLDIsMCwwLDEsNiw0SDMwYTIsMiwwLDAsMSwyLDJWMzBBMiwyLDAsMCwxLDMwLDMyWk02LDZWMzBIMzBWNloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIzLjk2IiB5PSI0IiB3aWR0aD0iMjcuOTkiIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLFQuQ2xyU2hhcGVQb3dlcj0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxYTEsMSwwLDAsMS0xLTFWNGExLDEsMCwwLDEsMiwwVjIwQTEsMSwwLDAsMSwxOCwyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4''@;'; put 'put ''LDM0LjE1YTE1LDE1LDAsMCwxLTcuNTItMjgsMSwxLDAsMCwxLDEsMS43MywxMywxMywwLDEsMCwxMywwLDEsMSwwLDEsMSwxLTEuNzMsMTUsMTUsMCwwLDEtNy41MiwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE4LDIxYTEsMSwwLDAsMCwxLTFWNGExLDEsMCwwLDAtMiwwVjIwQTEsMSwwLDAsMCwxOCwyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCIgZD0iTTMyLjUxLDE1LjRIMzAuNDRhMTMsMTMsMCwxLDEtMTktNy41LDEsMSwwLDAsMC0xLTEuNzNBMTUsMTUsMCwxLDAsMzMsMTkuMTUsMTQuOSwxNC45LDAsMCwwLDMyLjUxLDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwyMWExLDEsMCwwLDEtMS0xVjRhMSwxLDAsMCwxLDIsMFYyMEExLDEsMCwwLDEsMTgsMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNWwtLjMxLDBBMTMsMTMsMCwxLDEsMTEuNDgsNy45YTEsMSwwLDAsMC0xLTEuNzMsMTUsMTUsMCwxLDAsMjEuMzEsNy4xQTcuNDksNy40OSwwLDAsMSwzMCwxMy41''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptLjA2LDE3LjY4YTEuMjgsMS4yOCwwLDAsMS0xLjI5LTEuMjhWOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwVjE4LjRBMS4yOCwxLjI4LDAsMCwxLDE4LjA2LDE5LjY4Wk0x''@;'; put 'put ''OCwyNy43OUE5Ljg4LDkuODgsMCwwLDEsMTIuMTcsOS44NWExLjQsMS40LDAsMCwxLDEuOTQuMzEsMS4zNywxLjM3LDAsMCwxLS4zMSwxLjkyLDcuMTgsNy4xOCwwLDEsMCwxMS40Myw1LjgsNy4wNyw3LjA3LDAsMCwwLTMtNS43NkExLjM3LDEuMzcsMCwwLDEsMjIsMTAuMmExLjQsMS40LDAs''@;'; put 'put ''MCwxLDEuOTQtLjI5QTkuODgsOS44OCwwLDAsMSwxOCwyNy43OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNGgtNkE5LjcsOS43LDAsMCwxLDI4LDE3Ljg5YTEw''@;'; put 'put ''LDEwLDAsMSwxLTE1LjgzLTgsMS40LDEuNCwwLDAsMSwxLjk0LjMxLDEuMzcsMS4zNywwLDAsMS0uMzEsMS45Miw3LjE4LDcuMTgsMCwxLDAsMTEuNDMsNS44LDcuMDgsNy4wOCwwLDAsMC0uNDUtMi40OUgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTR2NC40YTEuMjksMS4yOSwwLDAs''@;'; put 'put ''MS0yLjU4LDBWOC42NWExLjI5LDEuMjksMCwwLDEsMi41OCwwdi43MWwzLjc2LTYuNTFBMTYsMTYsMCwxLDAsMzQsMThhMTYsMTYsMCwwLDAtLjIzLTIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMy41Ny0uOUE5LjgzLDkuODMsMCwwLDEsMjgsMTcuODlhMTAsMTAsMCwxLDEtMTUuODMtOCwxLjQsMS40LDAsMCwxLDEuOTQuMzEsMS4zNywx''@;'; put 'put ''LjM3LDAsMCwxLS4zMSwxLjkyLDcuMTgsNy4xOCwwLDEsMCwxMS40Myw1LjgsNy4wNyw3LjA3LDAsMCwwLTMtNS43NkExLjM3LDEuMzcsMCwwLDEsMjIsMTAuMmExLjM4LDEuMzgsMCwwLDEsMS41Mi0uNDksNy40NSw3LjQ1LDAsMCwxLS4zLTYuODMsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5''@;'; put 'put ''LjkzQTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk0xNi43Nyw4LjY1YTEuMjksMS4yOSwwLDAsMSwyLjU4LDBWMTguNGExLjI5LDEuMjksMCwwLDEtMi41OCwwWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlUmV3aW5kPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuMDksMzEuNThsLTE1LjMyLTEyYTIsMiwwLDAs''@;'; put 'put ''MSwwLTMuMTVsMTUuMzItMTJhMS45MywxLjkzLDAsMCwxLDIuMDYtLjIyQTEuNzcsMS43NywwLDAsMSwyMCw2djYuN0wzMC44Myw0LjQyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzQsNlYzMGEyLDIsMCwwLDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4y''@;'; put 'put ''MkwyMCwyMy4zMVYzMGExLjc3LDEuNzcsMCwwLDEtLjg1LDEuNzksMS45NCwxLjk0LDAsMCwxLTIuMDYtLjIyWk0zMiwzMGwuMDYtMjRMMTgsMTYuOFY2TDMsMTgsMTgsMzBWMTkuMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0xNi45MiwzMS41OCwxLjYsMTkuNTdhMiwyLDAsMCwxLDAtMy4xNWwxNS4zMi0xMkExLjkzLDEuOTMsMCwwLDEsMTksNC4yLDEuODksMS44OSwwLDAsMSwyMCw2djYuN0wzMC42Niw0LjQyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzMuODMsNlYzMGEyLDIsMCww''@;'; put 'put ''LDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMkwyMCwyMy4zMVYzMGExLjg5LDEuODksMCwwLDEtMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMloiLz4nKSxULkNsclNoYXBlRmFzdEZvcndhcmQ9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy43NywzMS45MmEyLDIsMCwwLDEtLjg2LS4yQTEuODEsMS44MSwwLDAsMSwxNiwyOS45M3YtNi43TDUuMjQsMzEuNWExLjk0LDEuOTQsMCwwLDEtMi4wNi4yMiwyLDIsMCwwLDEtMS4xMS0xLjc5di0yNEEyLDIsMCwwLDEsMy4xOCw0''@;'; put 'put ''LjEyYTEuOTMsMS45MywwLDAsMSwyLjA2LjIyTDE2LDEyLjYxVjUuOTFhMS44MSwxLjgxLDAsMCwxLC45MS0xLjc5QTEuOTMsMS45MywwLDAsMSwxOSw0LjM0bDE1LjMyLDEyYTIsMiwwLDAsMSwwLDMuMTVMMTksMzEuNUEyLDIsMCwwLDEsMTcuNzcsMzEuOTJabTAtMTIuOFYyOS45M2wxNS4y''@;'; put 'put ''Ni0xMi0xNS4zMi0xMiwuMDYsMTAuODFMNCw1LjkxdjI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE3LjcxLDMyYTIsMiwwLDAsMS0uODYtLjJBMS43NywxLjc3LDAsMCwxLDE2LDMwdi02LjdMNS4xNywzMS41OGEx''@;'; put 'put ''Ljk0LDEuOTQsMCwwLDEtMi4wNi4yMkEyLDIsMCwwLDEsMiwzMFY2QTIsMiwwLDAsMSwzLjExLDQuMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42OVY2YTEuNzcsMS43NywwLDAsMSwuODUtMS43OSwxLjkzLDEuOTMsMCwwLDEsMi4wNi4yMmwxNS4zMiwxMmEyLDIsMCwwLDEsMCwz''@;'; put 'put ''LjE1bC0xNS4zMiwxMkEyLDIsMCwwLDEsMTcuNzEsMzJaIi8+JyksVC5DbHJTaGFwZUNhbWVyYT0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwyLDAsMCwwLDIxLjc4LDRIMTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCww''@;'; put 'put ''LDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwyMkg0VjEwaDguNjdsMS41NS00aDcuNTZsMS41NSw0SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik05LDE5YTksOSwwLDEsMCw5LTlBOSw5LDAsMCwwLDksMTlabTE2LjQsMEE3LjQsNy40LDAsMSwxLDE4LDExLjYsNy40MSw3LjQxLDAsMCwxLDI1LjQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuMzcs''@;'; put 'put ''MTIuODNhLjguOCwwLDAsMC0uOC0uOEg2LjE3YS44LjgsMCwwLDAsMCwxLjZoMi40QS44LjgsMCwwLDAsOS4zNywxMi44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzQsMTlhNS41Nyw1LjU3LDAsMCww''@;'; put 'put ''LDMuMjQsNWwuODUtMS4zN2E0LDQsMCwxLDEsNC4xMS02LjYxbC44Ni0xLjM4QTUuNTYsNS41NiwwLDAsMCwxMi4zNCwxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwy''@;'; put 'put ''LDAsMCwwLDIxLjc4LDRIMTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFpNNi4xNywxMy42M2EuOC44LDAsMCwxLDAtMS42aDIuNGEuOC44LDAsMCwxLDAsMS42''@;'; put 'put ''Wk0xOCwyOGE5LDksMCwxLDEsOS05QTksOSwwLDAsMSwxOCwyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4xMSwxOS4wNmE3LjA3LDcuMDcsMCwwLDAsNC4xMSw2LjQxbDEuMDktMS43NGE1LDUsMCwxLDEsNS4y''@;'; put 'put ''Mi04LjM5bDEuMDktMS43NmE3LjA2LDcuMDYsMCwwLDAtMTEuNTEsNS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxULkNsclNoYXBlVmlkZW9DYW1lcmE9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zNCwxMC4zNGEyLjExLDIuMTEsMCwwLDAtMS4xNi0xLjksMiwyLDAsMCwwLTIuMTMuMTVMMjYsMTEuNlY4YTIsMiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjRhMiwyLDAsMCwwLDItMlYyNC40bDQuNjQsM2EyLjA3LDIuMDcs''@;'; put 'put ''MCwwLDAsMi4yLjJBMi4xMSwyLjExLDAsMCwwLDM0LDI1LjY2Wk0zMS45MywyNS43N2MtLjA2LDAtLjExLDAtLjE5LS4wNkwyNCwyMC43N1YyOEg2YTIsMiwwLDAsMS0yLTJWMTBBMiwyLDAsMCwxLDYsOEgyNHY3LjIzbDcuOC01YS4xMS4xMSwwLDAsMSwuMTMsMCwuMTEuMTEsMCwwLDEsLjA3''@;'; put 'put ''LjExVjI1LjY2QS4xMS4xMSwwLDAsMSwzMS45MywyNS43N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zLDkuMzUsMjYsMTIuOVY4YTIsMiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0''@;'; put 'put ''LDRIMjRhMiwyLDAsMCwwLDItMlYyMy4wOGw2LjMsMy41NUExLjEsMS4xLDAsMCwwLDM0LDI1Ljc3VjEwLjJBMS4xLDEuMSwwLDAsMCwzMi4zLDkuMzVaIi8+JyksVC5DbHJTaGFwZVNodWZmbGU9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0yMS42MSwxMWg4LjYybC0zLjMsMy4zYTEsMSwwLDEsMCwxLjQxLDEuNDJMMzQsMTAuMDhsLS43MS0uNzFoMEwyOC4zNCw0LjQzYTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTEsOUgyMWExLDEsMCwwLDAtLjg2LjVMMTcuNSwxNC4wOWwxLjE2LDJaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjA3LDI1LjA3SDNhMSwxLDAsMCwwLDAsMmg4LjY1YTEsMSwwLDAsMCwuODYtLjVMMTUuMTgsMjIsMTQsMjBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTI4LjM0LDIwLjE3YTEsMSwwLDAsMC0xLjQxLDEuNDJsMy41LDMuNUgyMS42MUwxMi41MSw5LjUzYTEsMSwwLDAsMC0uODYtLjVIM2ExLDEsMCwxLDAsMCwyaDguMDdsOS4xLDE1LjU1YTEsMSwwLDAsMCwuODYuNUgyOS45bC0zLDNhMSwx''@;'; put 'put ''LDAsMCwwLDEuNDEsMS40Mmw0Ljk1LTQuOTRoMGwuNzEtLjcxWiIvPicpLFQuQ2xyU2hhcGVWb2x1bWVEb3duPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMTFhMSwxLDAsMCwxLS41NC0xLjg1''@;'; put 'put ''LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43M0E4LjIxLDguMjEsMCwwLDEsMjMuOTQsMjUsMSwxLDAsMCwxLDIzLjQxLDI1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwz''@;'; put 'put ''MmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5LjIybDcuMzMtNy40MUEyLDIsMCwwLDEsMjAsNlYzMGEyLDIsMCwwLDEtMS4yNCwxLjg1QTIsMiwwLDAsMSwxOCwzMlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4yOEwxOCwz''@;'; put 'put ''MFY2bC03LjY1LDcuNjhhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSww''@;'; put 'put ''LDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOC4zNCwzLjg3LDksMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSww''@;'; put 'put ''LDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWNC42MkExLDEsMCwwLDAsMTguMzQsMy44N1oiLz4nKSxULkNsclNoYXBlVm9sdW1lVXA9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''My40MSwyNS4yNWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczLDguMjEsOC4yMSwwLDAsMSwuMjQsMTQuMDZBMSwxLDAsMCwxLDIzLjQxLDI1LjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQsMjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzMi4wNmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5LjIybDcuMzMtNy4zOUEyLDIsMCwwLDEsMjAsNnYyNGEyLDIsMCwwLDEt''@;'; put 'put ''MS4yNCwxLjg1QTIsMiwwLDAsMSwxOCwzMi4wNlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4zTDE4LDMwLjA2VjZMMTAuMzUsMTMuN2ExLDEsMCwwLDEtLjcxLjNaTTE4LDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBk''@;'; put 'put ''PSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSwwLDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQsMjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LjMzLDQsOS4wNywxMmgtNmExLDEsMCwwLDAtMSwxdjkuOTJhMSwxLDAsMCwwLDEsMUg4Ljg4bDkuNDYsOC4yNEExLDEsMCwwLDAsMjAsMzEuNDNWNC43MkExLDEsMCwwLDAsMTguMzMsNFoiLz4nKSxU''@;'; put 'put ''LkNsclNoYXBlVm9sdW1lTXV0ZT0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMuNjEsNi40MSw5LjE5LDEySDRhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJIOS4xNGw3LjQxLDcuNDdBMiwyLDAsMCww''@;'; put 'put ''LDE4LDMyYTIsMiwwLDAsMCwuNzYtLjE1QTIsMiwwLDAsMCwyMCwzMFYyMi43N2w1Ljg5LDUuODljLS4yNS4xNS0uNDkuMjktLjc1LjQyYTEsMSwwLDAsMCwuOSwxLjc5LDE0LjQsMTQuNCwwLDAsMCwxLjMxLS43NWwyLjI4LDIuMjhMMzEsMzEsNSw1Wk0xOCwzMGwtNy43My03Ljc3QTEsMSww''@;'; put 'put ''LDAsMCw5LjU2LDIySDRWMTRIOS42NGExLDEsMCwwLDAsLjcxLS4zbC4yNi0uMjZMMTgsMjAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI0Ljg5LDYuNjlBMTIuNDIsMTIuNDIsMCwwLDEsMjksMjYuMWwx''@;'; put 'put ''LjQyLDEuNDJBMTQuNDIsMTQuNDIsMCwwLDAsMjUuNzYsNC44OGExLDEsMCwxLDAtLjg3LDEuOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjIuNjksMTIuNjJBNi4yNyw2LjI3LDAsMCwxLDI1LjgsMThhNi4x''@;'; put 'put ''Nyw2LjE3LDAsMCwxLTEuMjQsMy43MUwyNiwyMy4xM0E4LjE1LDguMTUsMCwwLDAsMjcuOCwxOGE4LjI4LDguMjgsMCwwLDAtNC4xLTcuMTEsMSwxLDAsMSwwLTEsMS43M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBk''@;'; put 'put ''PSJNMTgsNnY5LjE1bDIsMlY2YTIsMiwwLDAsMC0zLjQyLTEuNDFMMTIsOS4xN2wxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjQuODcsNi42OUExMi40MiwxMi40MiwwLDAsMSwyOC43NSwyNi4zbDEu''@;'; put 'put ''NDIsMS40MkExNC40MywxNC40MywwLDAsMCwyNS43NCw0Ljg4YTEsMSwwLDAsMC0uODcsMS44WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI3LjMsMjcuNjdoMGwtMy44NC0zLjg0LS41Ny0uNTdoMEw0LjYzLDUsMy4y''@;'; put 'put ''MSw2LjQxLDguOCwxMkgzYTEsMSwwLDAsMC0xLDFWMjNhMSwxLDAsMCwwLDEsMUg4LjgzbDkuNTEsOC4zQTEsMSwwLDAsMCwyMCwzMS41NVYyMy4ybDUuNTksNS41OWMtLjE3LjEtLjM0LjItLjUxLjI5YTEsMSwwLDAsMCwuOSwxLjc5Yy4zNy0uMTkuNzItLjQsMS4wOC0uNjJsMi4xNCwyLjE0''@;'; put 'put ''TDMwLjYxLDMxbC0zLjI1LTMuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjIuNjksMTIuNjJBNi4yNyw2LjI3LDAsMCwxLDI1LjgsMThhNi4xNyw2LjE3LDAsMCwxLTEuNDIsMy45MmwxLjQyLDEuNDJhOC4xNiw4''@;'; put 'put ''LjE2LDAsMCwwLDItNS4zNCw4LjI4LDguMjgsMCwwLDAtNC4xLTcuMTEsMSwxLDAsMSwwLTEsMS43M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yMCw0LjYyYTEsMSwwLDAsMC0xLjY2LS43NWwtNi40Miw1LjZMMjAs''@;'; put 'put ''MTcuNTRaIi8+JyksVC5DbHJTaGFwZUhlYWRwaG9uZXM9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwzQTE0LjI3LDE0LjI3LDAsMCwwLDQsMTcuNVYzMUg5LjJBMi43NCwyLjc0LDAsMCwwLDEyLDI4LjMz''@;'; put 'put ''VjIxLjY3QTIuNzQsMi43NCwwLDAsMCw5LjIsMTlINlYxNy41QTEyLjI3LDEyLjI3LDAsMCwxLDE4LDUsMTIuMjcsMTIuMjcsMCwwLDEsMzAsMTcuNVYxOUgyNi44QTIuNzQsMi43NCwwLDAsMCwyNCwyMS42N3Y2LjY3QTIuNzQsMi43NCwwLDAsMCwyNi44LDMxSDMyVjE3LjVBMTQuMjcsMTQu''@;'; put 'put ''MjcsMCwwLDAsMTgsM1pNOS4yLDIxYS43NS43NSwwLDAsMSwuOC42N3Y2LjY3YS43NS43NSwwLDAsMS0uOC42N0g2VjIxWk0yNiwyOC4zM1YyMS42N2EuNzUuNzUsMCwwLDEsLjgtLjY3SDMwdjhIMjYuOEEuNzUuNzUsMCwwLDEsMjYsMjguMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOC4yQTEuNzQsMS43NCwwLDAsMCwxMCwyOS4zM1YyMi42N0ExLjc0LDEuNzQsMCwwLDAsOC4yLDIxSDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3''@;'; put 'put ''LDEyLjI3LDAsMCwxLDMwLDE3LjVWMjFIMjcuOEExLjc0LDEuNzQsMCwwLDAsMjYsMjIuNjd2Ni42N0ExLjc0LDEuNzQsMCwwLDAsMjcuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaIi8+JyksVC5DbHJTaGFwZUZpbG1TdHJpcD0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wm0wLDI2SDZWNkgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTQuNiwyMy4wN2ExLjI5LDEuMjksMCwwLDAsMS4yNC4wOWw4LjczLTRhMS4zLDEuMywwLDAsMCwwLTIuMzdoMGwtOC43My00QTEuMywxLjMsMCwwLDAsMTQsMTR2OEExLjI5LDEuMjksMCwwLDAsMTQuNiwyMy4wN1ptMS04LjZM''@;'; put 'put ''MjMuMzEsMTgsMTUuNiwyMS41MVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI4IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNCIgeD0iMTQiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyMCIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjI2IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iOCIgeT0iMjYiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiB4PSIxNCIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC05IiB4PSIyMCIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTIwLDdoMnYzSDIwWk0xNCw3aDJ2M0gxNFpNMTAsMjlIOFYyNmgyWm0wLTE5''@;'; put 'put ''SDhWN2gyWm02LDE5SDE0VjI2aDJabTYsMEgyMFYyNmgyWm0zLjE2LTEwLjE2TDE1LjM5LDIzLjJBMSwxLDAsMCwxLDE0LDIyLjI4VjEzLjU3YTEsMSwwLDAsMSwxLjQxLS45MUwyNS4xNiwxN0ExLDEsMCwwLDEsMjUuMTYsMTguODRaTTI4LDI5SDI2VjI2aDJabTAtMTlIMjZWN2gyWiIvPicp''@;'; put 'put ''LFQuQ2xyU2hhcGVNdXNpY05vdGU9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTMxLjY4LDYuMTZjLTEuOTItMy4zLTEwLjYtNC0xMS41OC00LjA5TDE5LDJWMjIuMzRhNS44OSw1''@;'; put 'put ''Ljg5LDAsMCwwLS44Mi0uNTYsOC4zMyw4LjMzLDAsMCwwLTYuNTMtLjQxQzcuNTcsMjIuNyw0LjkyLDI2LjUsNS43OCwyOS44NGE1LjMzLDUuMzMsMCwwLDAsMi42NiwzLjMyLDcuNDgsNy40OCwwLDAsMCwzLjYxLjg4QTkuNTQsOS41NCwwLDAsMCwxNSwzMy41N2MzLjY3LTEuMTgsNi4xNy00''@;'; put 'put ''LjMzLDYuMDYtNy4zNlY5LjM0YTI5LjE0LDI5LjE0LDAsMCwxLDYuNTUsMS40MywxLDEsMCwxLDAsLjcyLTEuODdBMzEuMzcsMzEuMzcsMCwwLDAsMjEsNy4zM1Y0LjE3YzMuMzMuMzYsOCwxLjM4LDguOTIsMywyLDMuNDEtMi4zMyw3LjM2LTIuMzcsNy40YTEsMSwwLDAsMCwxLjMzLDEuNDlD''@;'; put 'put ''MjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2Wk0xNC4zNSwzMS42N2E2LjQzLDYuNDMsMCwwLDEtNS0uMjYsMy4zMSwzLjMxLDAsMCwxLTEuNjktMi4wN2MtLjYtMi4zMywxLjQ1LTUuMDUsNC41OC02LjA2YTcuNTIsNy41MiwwLDAsMSwyLjMtLjM3LDUuNTIsNS41MiwwLDAsMSwyLjY1''@;'; put 'put ''LjYyLDMuMzEsMy4zMSwwLDAsMSwxLjY5LDIuMDdDMTkuNTQsMjcuOTQsMTcuNDksMzAuNjYsMTQuMzUsMzEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMS42OCw2LjE2Yy0xLjky''@;'; put 'put ''LTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjI5YTUuODgsNS44OCwwLDAsMC0uODEtLjU1LDguMzMsOC4zMywwLDAsMC02LjUzLS40MWMtNC4xMiwxLjMzLTYuNzcsNS4xMy01LjkxLDguNDdhNS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4LDcuNDgsMCwwLDAsMy42MS44OEE5''@;'; put 'put ''LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTJjMy43LTEuMTksNi4yLTQuMzcsNi4wNi03LjQyLDAsMCwwLDAsMCwwVjguNDljMSwuMTIsMi4zNy4zMywzLjgyLjY0YTExLjE3LDExLjE3LDAsMCwxLDQuMDYsMS40NmMxLC42Ni4zOCwxLjkuMzMsMmExMS44LDExLjgsMCwwLDEtMS42NiwyLDEsMSww''@;'; put 'put ''LDAsMCwxLjMzLDEuNDlDMjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2WiIvPicpLFQuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMu''@;'; put 'put ''ODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik04LjU2LDE5LjQ1YTMsMywwLDEsMC0zLTNB''@;'; put 'put ''MywzLDAsMCwwLDguNTYsMTkuNDVabTAtNC42QTEuNiwxLjYsMCwxLDEsNywxNi40NSwxLjYsMS42LDAsMCwxLDguNTYsMTQuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNNy45LDI4bDYtNiwzLjE4LDMuMThMMTQuMjYsMjhoMmw3''@;'; put 'put ''LjQ2LTcuNDZMMzAsMjYuNzd2LTJMMjQuMiwxOWEuNzEuNzEsMCwwLDAtMSwwbC01LjE2LDUuMTZMMTQuMzcsMjAuNWEuNzEuNzEsMCwwLDAtMSwwTDUuOTIsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSww''@;'; put 'put ''LDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwx''@;'; put 'put ''LDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwz''@;'; put 'put ''MC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTguNTYsMTMuNDVhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC41NiwxMy40NVpNMzAsMjhoLTI0bDcuNDYtNy40N2EuNzEuNzEsMCwwLDEsMSwwbDMuNjgsMy42OEwyMy4yMSwxOWEuNzEuNzEsMCwwLDEsMSwwTDMwLDI0Ljc5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlUmVwbGF5QWxsPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNy40NiwyNi4yMmExLjQsMS40LDAsMCwwLDEtLjQybDUuNTktNS41NmExLjQzLDEuNDMsMCwwLDAsLjQyLTEsMS40Niwx''@;'; put 'put ''LjQ2LDAsMCwwLS40Mi0xbC01LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLTIuNDQsMVYyNC43OWExLjQxLDEuNDEsMCwwLDAsLjg4LDEuMzJBMS41NCwxLjU0LDAsMCwwLDE3LjQ2LDI2LjIyWm0uMTYtMTIuMTYsNS4xOSw1LjE2LTUuMTksNS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCwwLC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4zMywxLDEsMCwwLDAtLjA3LTEuNDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEu''@;'; put 'put ''NzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZVJlcGxheU9uZT0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTks''@;'; put 'put ''MjcuMjdhMSwxLDAsMCwwLDEtMVYxNGExLDEsMCwwLDAtMS0xSDE5YTMuOCwzLjgsMCwwLDAtMS4xLjIzbC0yLC42MmEuOTIuOTIsMCwwLDAtLjcyLjg2Ljg4Ljg4LDAsMCwwLC44OC44NiwxLjQ2LDEuNDYsMCwwLDAsLjQzLS4wOEwxOCwxNS4wN3YxMS4yQTEsMSwwLDAsMCwxOSwyNy4yN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCwwLC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4zMywxLDEsMCwwLDAtLjA3LTEu''@;'; put 'put ''NDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEuNzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZVZpZGVvR2FsbGVyeT0oMCxr''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0zMiwzMEg0VjEy''@;'; put 'put ''SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTIuODIsMjYuNzlhMS43NCwxLjc0LDAsMCwwLC45My4yOCwxLjY4LDEuNjgsMCwwLDAsLjY5LS4x''@;'; put 'put ''NWw5Ljc3LTQuMzZhMS42OSwxLjY5LDAsMCwwLDAtMy4xTDE0LjQ0LDE1LjFhMS43LDEuNywwLDAsMC0yLjM5LDEuNTV2OC43MkExLjcsMS43LDAsMCwwLDEyLjgyLDI2Ljc5Wm0uNjMtMTAuMTRhLjI5LjI5LDAsMCwxLC4xNC0uMjUuMy4zLDAsMCwxLC4xNiwwLC4yNy4yNywwLDAsMSwuMTIs''@;'; put 'put ''MGw5Ljc3LDQuMzVhLjI5LjI5LDAsMCwxLC4xOC4yOC4yOC4yOCwwLDAsMS0uMTguMjdsLTkuNzcsNC4zNmEuMjguMjgsMCwwLDEtLjI4LDAsLjMxLjMxLDAsMCwxLS4xNC0uMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuMTIs''@;'; put 'put ''MTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0yNC4xOCwyMS44M2wtOS43Nyw0LjM2QTEsMSwwLDAsMSwxMywyNS4y''@;'; put 'put ''OFYxNi41NmExLDEsMCwwLDEsMS40MS0uOTFMMjQuMTgsMjBBMSwxLDAsMCwxLDI0LjE4LDIxLjgzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlTWljcm9waG9uZT0o''@;'; put 'put ''MCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjRjMy45LDAsNy0zLjEsNy03VjljMC0zLjktMy4xLTctNy03cy03LDMuMS03LDd2OEMxMSwyMC45LDE0LjEsMjQsMTgsMjR6IE0xMyw5YzAtMi44LDIuMi01LDUtNXM1LDIuMiw1LDV2OFxuXHRcdGMwLDIuOC0yLjIsNS01LDVzLTUtMi4y''@;'; put 'put ''LTUtNVY5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwxMC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMw''@;'; put 'put ''LjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywz''@;'; put 'put ''LjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTdoLTJjMCw1LjUtNC41LDEwLTEwLDEwUzgsMjIuNSw4LDE3SDZjMCw2LjMsNC44LDExLjQsMTEsMTEuOVYzMmgtM2MtMC42LDAtMSww''@;'; put 'put ''LjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zLjFDMjUuMiwyOC40LDMwLDIzLjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZT0oMCxrLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAsMTdoLTJjMCwxLjgtMC41LDMuNS0xLjQsNWwxLjUsMS41QzI5LjMsMjEuNSwyOS45LDE5LjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsNGMyLjgsMCw1LDIuMiw1LDV2OGMwLDAu''@;'; put 'put ''NC0wLjEsMC44LTAuMiwxLjJsMS42LDEuNmMwLjQtMC45LDAuNi0xLjgsMC42LTIuOFY5YzAtMy45LTMuMi03LTcuMS02Ljlcblx0XHRjLTIuOSwwLTUuNiwxLjktNi41LDQuN0wxMyw4LjNDMTMuNSw1LjksMTUuNiw0LjIsMTgsNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNS4yLDI2LjZsNi45LDYuOWwxLjQtMS40TDQsMi42TDIuNiw0bDguNCw4LjRWMTdjMCwzLjksMy4xLDcsNyw3YzEuMywwLDIuNS0wLjMsMy42LTFsMi4yLDIuMkMyMi4xLDI2LjQsMjAuMSwyNywxOCwyN1xuXHRcdGMtNS40LDAuMi05LjgtNC4xLTEw''@;'; put 'put ''LTkuNGMwLTAuMiwwLTAuNCwwLTAuNkg2YzAuMSw2LjIsNC44LDExLjQsMTEsMTJ2M2gtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zQzIxLjIsMjguOCwyMy40LDI4LDI1LjIsMjYuNnogTTEzLjgsMTkuN0MxMy4z''@;'; put 'put ''LDE4LjksMTMsMTgsMTMsMTd2LTIuNmw3LjEsNy4xQzE3LjksMjIuNSwxNS4yLDIxLjgsMTMuOCwxOS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsMS44LTAuNSwzLjUtMS40LDVsMS41LDEuNUMyOS4zLDIxLjUs''@;'; put 'put ''MjkuOSwxOS4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMjUsMTdWOWMwLTMuOS0zLjItNy03LjEtNi45Yy0yLjksMC01LjYsMS45LTYuNSw0LjdsMTMsMTNDMjQuOCwxOC45LDI1LDE3LjksMjUsMTd6IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNS4yLDI2LjZsNi45LDYuOWwxLjQtMS40TDQsMi42TDIuNiw0bDguNCw4LjRWMTdjMCwzLjksMy4xLDcsNyw3YzEuMywwLDIuNS0wLjMsMy42LTFsMi4yLDIuMkMyMi4xLDI2LjQsMjAuMSwyNywxOCwyN1xuXHRcdGMtNS40''@;'; put 'put ''LDAuMi05LjgtNC4xLTEwLTkuNGMwLTAuMiwwLTAuNCwwLTAuNkg2YzAuMSw2LjIsNC44LDExLjQsMTEsMTJ2M2gtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zQzIxLjIsMjguOCwyMy40LDI4LDI1LjIsMjYuNnoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksVC5NZWRpYVNoYXBlcz17cGxheTpULkNsclNoYXBlUGxheSxwYXVzZTpULkNsclNoYXBlUGF1c2UsInN0ZXAtZm9yd2FyZCI6VC5DbHJTaGFwZVN0ZXBGb3J3YXJkLHN0b3A6VC5DbHJTaGFwZVN0b3AscG93ZXI6''@;'; put 'put ''VC5DbHJTaGFwZVBvd2VyLHJld2luZDpULkNsclNoYXBlUmV3aW5kLCJmYXN0LWZvcndhcmQiOlQuQ2xyU2hhcGVGYXN0Rm9yd2FyZCxjYW1lcmE6VC5DbHJTaGFwZUNhbWVyYSwidmlkZW8tY2FtZXJhIjpULkNsclNoYXBlVmlkZW9DYW1lcmEsc2h1ZmZsZTpULkNsclNoYXBlU2h1ZmZsZSwi''@;'; put 'put ''dm9sdW1lLXVwIjpULkNsclNoYXBlVm9sdW1lVXAsInZvbHVtZS1kb3duIjpULkNsclNoYXBlVm9sdW1lRG93biwidm9sdW1lLW11dGUiOlQuQ2xyU2hhcGVWb2x1bWVNdXRlLGhlYWRwaG9uZXM6VC5DbHJTaGFwZUhlYWRwaG9uZXMsImZpbG0tc3RyaXAiOlQuQ2xyU2hhcGVGaWxtU3RyaXAs''@;'; put 'put ''Im11c2ljLW5vdGUiOlQuQ2xyU2hhcGVNdXNpY05vdGUsImltYWdlLWdhbGxlcnkiOlQuQ2xyU2hhcGVJbWFnZUdhbGxlcnksInJlcGxheS1hbGwiOlQuQ2xyU2hhcGVSZXBsYXlBbGwsInJlcGxheS1vbmUiOlQuQ2xyU2hhcGVSZXBsYXlPbmUsInZpZGVvLWdhbGxlcnkiOlQuQ2xyU2hhcGVW''@;'; put 'put ''aWRlb0dhbGxlcnksbWljcm9waG9uZTpULkNsclNoYXBlTWljcm9waG9uZSwibWljcm9waG9uZS1tdXRlIjpULkNsclNoYXBlTWljcm9waG9uZU11dGV9LHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25z''@;'; put 'put ''LmFkZChULk1lZGlhU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKHplLFQsc2UpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksVC5Tb2NpYWxTaGFwZXM9VC5DbHJTaGFwZUhhc2h0YWc9VC5DbHJTaGFwZUNyb3duPVQuQ2xyU2hhcGVUaHVtYnNEb3duPVQuQ2xyU2hhcGVUaHVtYnNVcD1ULkNsclNoYXBlU2FkRmFjZT1ULkNs''@;'; put 'put ''clNoYXBlTmV1dHJhbEZhY2U9VC5DbHJTaGFwZUhhcHB5RmFjZT1ULkNsclNoYXBlUGljdHVyZT1ULkNsclNoYXBlQ2hhdEJ1YmJsZT1ULkNsclNoYXBlVGFsa0J1YmJsZXM9VC5DbHJTaGFwZUhlYXJ0QnJva2VuPVQuQ2xyU2hhcGVIZWFydD1ULkNsclNoYXBlSW5ib3g9VC5DbHJTaGFwZUZs''@;'; put 'put ''YWc9VC5DbHJTaGFwZVRhc2tzPVQuQ2xyU2hhcGVFbnZlbG9wZT1ULkNsclNoYXBlQm9va21hcms9VC5DbHJTaGFwZUhhbGZTdGFyPVQuQ2xyU2hhcGVTdGFyPVQuQ2xyU2hhcGVTaGFyZT12b2lkIDA7dmFyIGs9c2UoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9q''@;'; put 'put ''ZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSx2PXNlKAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksaGU9c2UoCi8qISAuL2NvcmUtc2hhcGVzICovCiIu''@;'; put 'put ''L3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKTtULkNsclNoYXBlU2hhcmU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQs''@;'; put 'put ''MTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMs''@;'; put 'put ''MywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDcsMjFaTTI3LjUzLDMyYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDI3LjUzLDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''Ny41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1''@;'; put 'put ''LDAsMSwwLDUtNVoiLz4nKSxULkNsclNoYXBlU3Rhcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwt''@;'; put 'put ''Ny40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4yMy4yMywwLDAsMC0uMDgtLjI0TDIuNzEsMTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEuMjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNh''@;'; put 'put ''LjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCwwLS4wOC4yNGwyLjQ1LDguNjRBMi4yMywyLjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCww''@;'; put 'put ''LDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4zNWw3LjA2LTUuNTVhLjIyLjIyLDAsMCwwLS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIyLDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEu''@;'; put 'put ''NDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIuMjIsMCwwLDEsLjc3LDIuMzVMOS4zMywzMS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMuMjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEt''@;'; put 'put ''LjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAsMy4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIs''@;'; put 'put ''MCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0WiIvPicpLFQuQ2xyU2hhcGVIYWxmU3Rhcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAs''@;'; put 'put ''MC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMx''@;'; put 'put ''LjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwxLjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIuMjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwy''@;'; put 'put ''LjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4yNWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAsMCwwLDExLDIwLjc2TDMuOSwxNS4yMWEuMjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0u''@;'; put 'put ''MTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcs''@;'; put 'put ''MGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIs''@;'; put 'put ''Mi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUtOC42NGEuMjIuMjIsMCwwLDEsLjA4LS4yNFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRBLjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEs''@;'; put 'put ''LjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRhLjIyLjIyLDAsMCwxLC4xMy40bC03LjA2LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0LjksMjMuMTFaIi8+JyksVC5DbHJTaGFwZUJvb2ttYXJrPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAsMCwxLTEuNDEtLjU4TDE4LDI2LjgybC02LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEuOTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wx''@;'; put 'put ''OCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAsOCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiww''@;'; put 'put ''LDAsMCwyNiwyWiIvPicpLFQuQ2xyU2hhcGVFbnZlbG9wZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIs''@;'; put 'put ''MiwwLDAsMCwzMiw2Wk0zMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBMMzIsOS4yMXYxNy41bC03LjM2LTcuMzYtMS40MSwxLjQxWk01LjMxLDhIMzAuMzhMMTcuODQsMjAuNDdaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMDhWMjYuNzFsLTcuMzYtNy4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEy''@;'; put 'put ''LDIsMCwwLDAsMi44MiwwbDguODMtOC43OGE3LjQ0LDcuNDQsMCwwLDEtMi0uODVsLTguMjYsOC4yMUw1LjMxLDhIMjIuODFhNy40OSw3LjQ5LDAsMCwxLS4zMS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMkE3LjQ1LDcuNDUsMCwwLDEs''@;'; put 'put ''MzIsMTMuMDhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjUuODYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjI2SDMyVjI2LjcxbC03LjM2LTcuMzYtMS40MSwxLjQxTDMwLjQ2LDI4SDUuNjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCww''@;'; put 'put ''LDIuODIsMGw2LjY2LTYuNjNIMjMuMDhsLTUuMjQsNS4yMUw1LjMxLDhIMjAuMDZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zMyw2YTIsMiwwLDAsMC0uNDEsMGgtMjhhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODEsNy4zOSwxOS4yNSwyMS44OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzMuODEsNy4zOVpNNS4zLDI4SDMuOTFWMjYuNTdsNy4y''@;'; put 'put ''Ny03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNiwxMi4zNEE3LjQ5LDcu''@;'; put 'put ''NDksMCwwLDEsMjIuNSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI5''@;'; put 'put ''bC04LjcxLDguNjhhMiwyLDAsMCwxLTIuODIsMEwyLDcuNWEyLDIsMCwwLDAtLjA3LjVWMjhhMiwyLDAsMCwwLDIsMmgyOGEyLDIsMCwwLDAsMi0yVjEyLjM5QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSwwSDMw''@;'; put 'put ''LjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjUuNzdsLTYuNTIsNi40OWEyLDIsMCwwLDEtMi44MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTUuMzhaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEsNy4yNyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yMi45NCwxNS40aC0uN0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDMuOTJhMiwyLDAsMCwwLS41My4wOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksVC5DbHJT''@;'; put 'put ''aGFwZVRhc2tzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuMjksMzRINi43MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1''@;'; put 'put ''QTEuNywxLjcsMCwwLDEsMzEsNi42OVYzMi4zMUExLjcsMS43LDAsMCwxLDI5LjI5LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuNjYsMjUuNzYsMTEuMywyMC40QTEsMSwwLDAsMSwxMi43Miwx''@;'; put 'put ''OWwzLjk0LDMuOTQsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNiwxMUgxMFY3LjMzQTIuMzQsMi4zNCwwLDAsMSwxMi4zMyw1aDEuNzlhNCw0LDAs''@;'; put 'put ''MCwxLDcuNzUsMGgxLjc5QTIuMzQsMi4zNCwwLDAsMSwyNiw3LjMzWk0xMiw5SDI0VjcuMzNBLjMzLjMzLDAsMCwwLDIzLjY3LDdIMjBWNmEyLDIsMCwwLDAtNCwwVjdIMTIuMzNhLjMzLjMzLDAsMCwwLS4zMy4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LDkuODksMTkuNTYsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aC43MWwxLjE2LTJhNCw0LDAsMCwwLTcuNzQsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAs''@;'; put 'put ''MTAsNy4zM1YxMWg4LjY0QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjQuMTksMTUuNGwtNy41Myw3LjUzTDEyLjcyLDE5QTEs''@;'; put 'put ''MSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSwwLDAsMCwuMi0uMzFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0yOSwxNS40VjMySDdWN0g5''@;'; put 'put ''VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMxQTEuNywxLjcsMCwwLDAsNi43MSwzNEgyOS4yOUExLjcsMS43LDAsMCwwLDMxLDMyLjMxVjE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMi43MiwxOUExLDEsMCwwLDAsMTEuMywyMC40bDUuMzYsNS4zNkwyNi43MSwxNS43MWExLDEsMCwwLDAtMS40MS0xLjQxbC04LjY0LDguNjRaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIs''@;'; put 'put ''Ny41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIzLjEzLDlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAs''@;'; put 'put ''MCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjkuMjksNC45NWgtNy4yYTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWNi42NEEx''@;'; put 'put ''LjcsMS43LDAsMCwwLDI5LjI5LDQuOTVabS0xOCwzYTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gzLjQ0YTEsMSwwLDAsMSwxLDFWOS44SDExLjI1Wm0xNC41Miw5LjIzLTkuMTIsOS4xMi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwz''@;'; put 'put ''LjI2LDcuMTQtNy4xNGExLjQsMS40LDAsMSwxLDIsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjUuODgsMTUuNGExLjM4LDEuMzgsMCwwLDEtLjExLDEuODFsLTkuMTIsOS4x''@;'; put 'put ''Mi01LjI0LTUuMjRhMS40LDEuNCwwLDAsMSwyLTJsMy4yNiwzLjI2LDctN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OWwwLS4wOUgxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2guNDJMMjIsNC43NmE0LjMsNC4zLDAsMCwwLTgu''@;'; put 'put ''MDkuMTlIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02LjQ2LTMuN0gxMS4yNVY4YTEsMSwwLDAsMSwxLTFoMy40NFY2LjMyYTIuMzEsMi4zMSwwLDAsMSw0LjYzLDBWN2gyLjI2YTcuNTMs''@;'; put 'put ''Ny41MywwLDAsMS0uMDctMSw3LjUzLDcuNTMsMCwwLDEsLjA4LTEuMDVoLS41YTQuMzEsNC4zMSwwLDAsMC04LjE3LDBIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY0VjMyLjI2YTEuNywxLjcsMCwwLDAsMS43MSwxLjY5SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMjZWMTMuNDNBNy41Miw3''@;'; put 'put ''LjUyLDAsMCwxLDMwLDEzLjVabS00LjIzLDMuNzEtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwxLjQsMCwxLDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlRmxhZz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEt''@;'; put 'put ''MVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4x''@;'; put 'put ''MSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0xLjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDksMi44NVY1LjA4QTguOCw4LjgsMCwwLDEsMTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUs''@;'; put 'put ''MCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4LjkzLDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiww''@;'; put 'put ''LDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzksMTYuNzksMCwwLDAsNy0xLjM3LDEsMSwwLDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAsMCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsNS45MiwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwx''@;'; put 'put ''NC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OUExMi43OCwxMi43OCwwLDAsMCwxMy4yLDIsMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0''@;'; put 'put ''Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNSwzLjgyWiIvPicpLFQuQ2xyU2hhcGVJbmJveD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwx''@;'; put 'put ''OCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAsMCwwLTEsMXYxNC41bC0zLjM4LTMuMzhBMSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYu''@;'; put 'put ''NUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQx''@;'; put 'put ''TDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YyMUgyMy42MWwtLjEuODlhNS40Miw1LjQyLDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAs''@;'; put 'put ''Ni41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFQuQ2xyU2hhcGVIZWFydD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEuMTIsMTEuNDksMyw3LjY0YzEuMzQtMi43NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40''@;'; put 'put ''OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0yLjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3LDI3LjksMTguNjEsMzIuMjJBMSwxLDAsMCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0''@;'; put 'put ''LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEzLDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4xLDMuNjktNy42NCwyLjE0LTEwLjgxLTEtMi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00''@;'; put 'put ''Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5''@;'; put 'put ''Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEs''@;'; put 'put ''MTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxULkNsclNoYXBlSGVhcnRCcm9rZW49KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44''@;'; put 'put ''NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4LDIuMzQtNC42LDQuMzcsMy40OSw0LjEsMS41Mi0xLjNMMTguNTQsMjFsNS40LTUuMTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODks''@;'; put 'put ''Ni4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgxQTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMwLjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYuOTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSww''@;'; put 'put ''LDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYsMTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQsOS42NCwwLDAsMC0zLjk0LTIuMjJDOC4yLDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45''@;'; put 'put ''LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzktOCwxMi4wNy0xMS43MUMzNC4xLDE1LjgyLDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcu''@;'; put 'put ''NjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCwwLDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5LDAsMCwwLTIuNDgsNC41NkwyMi4yNywxNSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSww''@;'; put 'put ''LDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYsMGE5LjY2LDkuNjYsMCwwLDAtMy44OS0yLjE4QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwx''@;'; put 'put ''LDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxULkNsclNoYXBlVGFsa0J1YmJsZXM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEz''@;'; put 'put ''VjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlW''@;'; put 'put ''N0EzLDMsMCwwLDAsMzEsNFpNMzIsMjIuOTQsMjguNSwyMC4yMWExLDEsMCwwLDAtLjYxLS4yMUgxNGExLDEsMCwwLDEtMS0xVjdhMSwxLDAsMCwxLDEtMUgzMUExLjEsMS4xLDAsMCwxLDMyLDcuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTIzLDI2YTEsMSwwLDAsMS0xLDFIOGMtLjIyLDAtLjQzLjItLjYxLjMzTDQsMzBWMTRhMSwxLDAsMCwxLDEtMUg4Ljg2VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3''@;'; put 'put ''LDAsMCwwLDI1LDI2LjEzVjI1SDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2OS43MkwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0x''@;'; put 'put ''LTFWN2ExLDEsMCwwLDEsMS0xSDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTgsMTlWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMTRBNiw2LDAsMCwxLDgsMTlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVsNC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjdBMywzLDAsMCwwLDMxLDRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCwwLC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYs''@;'; put 'put ''MCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ4LDcuNDgsMCwwLDEsMjIuNzgsNEgxNGEzLDMsMCwwLDAtMywzVjE5YTMsMywwLDAsMCwzLDNIMjcuNTVs''@;'; put 'put ''NC43OCwzLjcxYTEsMSwwLDAsMCwxLC4xMSwxLDEsMCwwLDAsLjU3LS45VjEyLjM3QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0i''@;'; put 'put ''NiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxULkNsclNoYXBlQ2hhdEJ1YmJsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0''@;'; put 'put ''LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI4LjI5LDI0LjYxYTEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAt''@;'; put 'put ''LjgzLS4xMUExNiwxNiwwLDAsMSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMDgsMTEuMDgsMCwwLDEsMjguMjksMjQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yNSwxNS41SDExYTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjc1LDIwLjVoLTcuNWExLDEsMCwwLDAsMCwyaDcuNWExLDEs''@;'; put 'put ''MCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjgsMTIuNUgyNC43MmExLDEsMCwwLDAsMC0ySDExLjI4YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zOCwxMi42OWE3LjQzLDcuNDMsMCwwLDEtMS44OS42NkExMC4zNSwxMC4zNSwwLDAsMSwzMiwxNi41YTExLjA4LDExLjA4LDAsMCwxLTMuNzEsOC4xMSwxLDEsMCwwLDAtLjMyLjczbDAsNS4zNC00LjM4LTIuNzlhMSwx''@;'; put 'put ''LDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMmExNiwxNiwwLDAsMSw0LjU1LjY2QTcuNDQsNy40NCwwLDAsMSwyMywzLjIyYTE4LDE4LDAsMCwwLTUtLjcyYy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2''@;'; put 'put ''LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRsMC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0ExMi4zMiwxMi4zMiwwLDAsMCwzMy4zOCwxMi42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSwxNS41YTEsMSwwLDAsMCwwLDJIMjVhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC4yNSwy''@;'; put 'put ''MC41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjgsMTEuNWExLDEsMCwwLDAsMSwxSDI0LjcyYTEsMSwwLDAsMCwu''@;'; put 'put ''ODMtLjQ3QTcuNTMsNy41MywwLDAsMSwyNCwxMC41SDExLjI4QTEsMSwwLDAsMCwxMC4yOCwxMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUz''@;'; put 'put ''LDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wm04LDE0YTEsMSwwLDAsMS0xLDFIMTFhMSwxLDAsMCwxLDAtMkgyNUExLDEsMCwwLDEsMjYsMTYuNVptLTMuMjUsNWExLDEsMCwwLDEtMSwxaC03LjVhMSwx''@;'; put 'put ''LDAsMCwxLDAtMmg3LjVBMSwxLDAsMCwxLDIyLjc1LDIxLjVabS0xMi40Ny0xMGExLDEsMCwwLDEsMS0xSDI0LjcyYTEsMSwwLDAsMSwwLDJIMTEuMjhBMSwxLDAsMCwxLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMwLDEzLjI1YTcuNDYsNy40NiwwLDAsMS00LjM1LTEuNCwxLDEsMCwwLDEtLjkzLjY1SDExLjI4YTEsMSwwLDAsMSwwLTJIMjQuMkE3LjQ2LDcuNDYsMCwwLDEsMjMsMy4yYTE4LDE4LDAsMCwwLTUtLjdjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgs''@;'; put 'put ''MTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3LDEyLjM0LDEyLjM0LDAsMCwwLS42OC00QTcuNDYsNy40NiwwLDAsMSwzMCwxMy4yNVpNMjEuNzUsMjIuNWgtNy41YTEsMSwwLDAsMSwwLTJoNy41YTEsMSwwLDAs''@;'; put 'put ''MSwwLDJabTMuMjUtNUgxMWExLDEsMCwwLDEsMC0ySDI1YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNS43NSIgcj0iNSIgIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFQuQ2xyU2hhcGVQaWN0dXJlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEy''@;'; put 'put ''LDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywx''@;'; put 'put ''MSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2''@;'; put 'put ''LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAsMCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAt''@;'; put 'put ''MywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4z''@;'; put 'put ''OCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwz''@;'; put 'put ''MiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45''@;'; put 'put ''bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYu''@;'; put 'put ''MDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFQuQ2xyU2hhcGVIYXBweUZhY2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMDUiIGN5PSIxMy44OSIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywy''@;'; put 'put ''OC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAsMCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCww''@;'; put 'put ''LDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwx''@;'; put 'put ''NS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxULkNsclNoYXBlTmV1dHJhbEZhY2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1''@;'; put 'put ''LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIv''@;'; put 'put ''PicpLFQuQ2xyU2hhcGVTYWRGYWNlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjE2LDIwYTksOSwwLDAsMC03LjMzLDMuNzgsMSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4x''@;'; put 'put ''NiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0''@;'; put 'put ''LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcsNywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksVC5DbHJTaGFwZVRodW1ic1VwPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgyLTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZh''@;'; put 'put ''Mi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4yMyw4LjcyQTExLjM5LDExLjM5LDAsMCwwLDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4xMywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIu''@;'; put 'put ''MzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAsMS40LDkuNjJjMS44OSw1LjQsNC4xLDcuMTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwxLDAsMCwxLTEtMVYxNGExLDEsMCwwLDEsMS0xaDdabS02LTJoNFYxNUgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYz''@;'; put 'put ''LDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIsNS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMwLjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwx''@;'; put 'put ''LDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+''@;'; put 'put ''JyksVC5DbHJTaGFwZVRodW1ic0Rvd249KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEwYzIuOTItMS44Miw3LjMtNCw5LjM3LTRoNmExNi42OCwxNi42OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42''@;'; put 'put ''OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAsMCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4xMywwLDAsMSwzLjkxLDNjMS44OCwyLjUxLDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEs''@;'; put 'put ''MSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQuMS03LjE0LTQuMi03LjIyQTEsMSwwLDAsMCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQsMTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCwwLDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43Niwx''@;'; put 'put ''MC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjkuNDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIsNEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwyM2ExLDEsMCwwLDAsMS0xVjZBMSwxLDAsMCwwLDksNUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlQ3Jvd249KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4zOSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwxLjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUs''@;'; put 'put ''MjAuMzUsMCwwLDAtNC41OCwxLjQzLDIyLjcsMjIuNywwLDAsMC0zLjQ4LDIuMUExNy42OSwxNy42OSwwLDAsMSwyMiwxNi41N2E0Ny42NSw0Ny42NSwwLDAsMS0yLjgtNy42OSwxLDEsMCwwLDAtMS0uNzQsMSwxLDAsMCwwLTEsLjc0LDQ2LjcxLDQ2LjcxLDAsMCwxLTIuOCw3LjY5LDE3LDE3''@;'; put 'put ''LDAsMCwxLTEuNzYsMi44LDIyLjcsMjIuNywwLDAsMC0zLjQ4LTIuMSwyMC42NiwyMC42NiwwLDAsMC00LjU4LTEuNDMsMSwxLDAsMCwwLTEsLjM5LDEsMSwwLDAsMC0uMDksMS4wNUE1MC4xMyw1MC4xMywwLDAsMSw3LjgyLDMxLjE3YTEsMSwwLDAsMCwxLC44M0gyNy42MmExLDEsMCwwLDAs''@;'; put 'put ''MS0uODMsNTAuMTUsNTAuMTUsMCwwLDEsNC4yNi0xMy44OSwxLDEsMCwwLDAtLjA5LTEuMDVBMSwxLDAsMCwwLDMxLjgxLDE1Ljg0Wk0yNi43OSwzMEg5LjY0YTU1LjY2LDU1LjY2LDAsMCwwLTMuNC0xMS43MSwxNS43NSwxNS43NSwwLDAsMSwyLjA5Ljc4LDIwLDIwLDAsMCwxLDMuODUsMi40''@;'; put 'put ''NSwxLDEsMCwwLDAsMS4zOS0uMDksMTkuMjgsMTkuMjgsMCwwLDAsMi42Ny00LDQzLjQ2LDQzLjQ2LDAsMCwwLDItNC44OSw0MS43NCw0MS43NCwwLDAsMCwyLDQuODksMTkuOTIsMTkuOTIsMCwwLDAsMi42Niw0LDEsMSwwLDAsMCwxLjQuMDksMTkuMjEsMTkuMjEsMCwwLDEsMy44NS0yLjQ1''@;'; put 'put ''LDE0Ljc3LDE0Ljc3LDAsMCwxLDIuMDktLjc4QTU1LjA3LDU1LjA3LDAsMCwwLDI2Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE4LjIyLDYuMzlBMS4zOSwxLjM5LDAsMSwwLDE2Ljg0LDUsMS4zOSwxLjM5LDAsMCwwLDE4LjIyLDYuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNMTguMjMsMjYuMzRhMS4xMSwxLjExLDAsMSwwLDEuMSwxLjFBMS4xLDEuMSwwLDAsMCwxOC4yMywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik0xMi41OCwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUEx''@;'; put 'put ''LjEsMS4xLDAsMCwwLDEyLjU4LDI2LjM0WiIvPjxwYXRoIGQ9Ik0yMy44OSwyNi4zNGExLjExLDEuMTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDIzLjg5LDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cblxuICA8cGF0aCBkPSJNMi42''@;'; put 'put ''LDExLjkzQTEuNCwxLjQsMCwxLDAsNCwxMy4zMywxLjQsMS40LDAsMCwwLDIuNiwxMS45M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPGVsbGlwc2UgY3g9IjMzLjgzIiBjeT0iMTMuMzMiIHJ4PSIxLjM5IiByeT0iMS4zOSIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTguMjIsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjYzLDE2''@;'; put 'put ''LjFBMTguNjEsMTguNjEsMCwwLDAsMjgsMTcuMzRhMjEuNTcsMjEuNTcsMCwwLDAtNCwyLjQ5LDE5LjIsMTkuMiwwLDAsMS0yLjI2LTMuNDksNDguOTIsNDguOTIsMCwwLDEtMi41Mi02LjU4LDEsMSwwLDAsMC0xLS43MWgwYTEsMSwwLDAsMC0xLC43MSw0OC40Miw0OC40MiwwLDAsMS0yLjUy''@;'; put 'put ''LDYuNTgsMTguNjksMTguNjksMCwwLDEtMi4yNiwzLjQ4LDIyLjgxLDIyLjgxLDAsMCwwLTQtMi40OEExOC44MywxOC44MywwLDAsMCw0LjksMTYuMWExLDEsMCwwLDAtMSwuMzMsMSwxLDAsMCwwLS4xMywxLjA3LDU1LjksNTUuOSwwLDAsMSw0LDEzLjUsMSwxLDAsMCwwLDEsLjgzaDE5YTEs''@;'; put 'put ''MSwwLDAsMCwxLS44Myw1NS45LDU1LjksMCwwLDEsNC0xMy41LDEsMSwwLDAsMC0uMTMtMS4wN0ExLDEsMCwwLDAsMzEuNjMsMTYuMVpNMTEuMDgsMjguNTVhMS4xMSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwxMS4wOCwyOC41NVptNy4xNSwwYTEuMTEsMS4xMSwwLDAs''@;'; put 'put ''MSwwLTIuMjEsMS4xMSwxLjExLDAsMCwxLDAsMi4yMVptNy4xNiwwYTEuMTEsMS4xMSwwLDEsMSwxLjEtMS4xMUExLjExLDEuMTEsMCwwLDEsMjUuMzksMjguNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00Ii8+XG4gICcpLFQuQ2xyU2hhcGVIYXNodGFnPSgwLHYu''@;'; put 'put ''Y2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4zLDEySDE1LjExbDEuNTUtNy43NGExLDEsMCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDku''@;'; put 'put ''MTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAsMSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMu''@;'; put 'put ''MzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42MS04SDIyLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAs''@;'; put 'put ''MCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0SDE1YTEsMSwwLDAsMC0xLC43OEwxMywxMEg3YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJI''@;'; put 'put ''OS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1LS43OEwxMy42NywyNmg1LjRsLTEsNC44M0ExLDEsMCwwLDAsMTksMzJoMmExLDEsMCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLTho''@;'; put 'put ''NmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0xMiwxMmgtNS40bDEuNjQtOGg1LjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLFQuU29jaWFsU2hhcGVzPXtjcm93bjpULkNsclNoYXBlQ3Jvd24sc2hhcmU6VC5DbHJT''@;'; put 'put ''aGFwZVNoYXJlLHN0YXI6VC5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6VC5DbHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJrOlQuQ2xyU2hhcGVCb29rbWFyayxlbnZlbG9wZTpULkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6aGUuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpoZS5DbHJTaGFwZUV2''@;'; put 'put ''ZW50LHRhc2tzOlQuQ2xyU2hhcGVUYXNrcyxmbGFnOlQuQ2xyU2hhcGVGbGFnLGluYm94OlQuQ2xyU2hhcGVJbmJveCxoYXNodGFnOlQuQ2xyU2hhcGVIYXNodGFnLGhlYXJ0OlQuQ2xyU2hhcGVIZWFydCwiaGVhcnQtYnJva2VuIjpULkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxl''@;'; put 'put ''cyI6VC5DbHJTaGFwZVRhbGtCdWJibGVzLCJjaGF0LWJ1YmJsZSI6VC5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTpULkNsclNoYXBlUGljdHVyZSwiaGFwcHktZmFjZSI6VC5DbHJTaGFwZUhhcHB5RmFjZSwibmV1dHJhbC1mYWNlIjpULkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNl''@;'; put 'put ''IjpULkNsclNoYXBlU2FkRmFjZSwidGh1bWJzLXVwIjpULkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjpULkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuU29jaWFsU2hhcGVzLCJmYXZvcml0ZSIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlNvY2lh''@;'; put 'put ''bFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlNvY2lhbFNoYXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAsay5kZXNjcmlw''@;'; put 'put ''dG9yQ29uZmlnKShULlNvY2lhbFNoYXBlcy5jYWxlbmRhcikpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChULlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMv''@;'; put 'put ''dGVjaG5vbG9neS1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZWNobm9sb2d5LXNoYXBlcy50cyAqKiohCiAg''@;'; put 'put ''ICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxULkNsclNoYXBlVk1XQXBwPVQuQ2xyU2hhcGVWTT1ULkNsclNoYXBlUm91dGVyPVQuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPVQuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9VC5DbHJTaGFwZU5ldHdvcmtHbG9iZT1ULkNsclNoYXBlVGFibGV0PVQuQ2xyU2hh''@;'; put 'put ''cGVNb2JpbGU9VC5DbHJTaGFwZUJhdHRlcnk9VC5DbHJTaGFwZUFwcGxpY2F0aW9uPVQuQ2xyU2hhcGVDb2RlPVQuQ2xyU2hhcGVUZXJtaW5hbD1ULkNsclNoYXBlRGlzcGxheT1ULkNsclNoYXBlQ29tcHV0ZXI9VC5DbHJTaGFwZUZsb3BweT1ULkNsclNoYXBlUGx1Z2luPVQuQ2xyU2hhcGVE''@;'; put 'put ''b3dubG9hZENsb3VkPVQuQ2xyU2hhcGVVcGxvYWRDbG91ZD1ULkNsclNoYXBlRXhwb3J0PVQuQ2xyU2hhcGVJbXBvcnQ9VC5DbHJTaGFwZVNoaWVsZFg9VC5DbHJTaGFwZVNoaWVsZD1ULkNsclNoYXBlU2hpZWxkQ2hlY2s9VC5DbHJTaGFwZVJlc291cmNlUG9vbD1ULkNsclNoYXBlRGF0YUNs''@;'; put 'put ''dXN0ZXI9VC5DbHJTaGFwZU1lbW9yeT1ULkNsclNoYXBlQ1BVPVQuQ2xyU2hhcGVCdWlsZGluZz1ULkNsclNoYXBlQXBwbGljYXRpb25zPVQuQ2xyU2hhcGVDbHVzdGVyPVQuQ2xyU2hhcGVTdG9yYWdlPVQuQ2xyU2hhcGVIb3N0PVQuQ2xyU2hhcGVEYXNoYm9hcmQ9VC5DbHJTaGFwZU1vdXNl''@;'; put 'put ''PVQuQ2xyU2hhcGVLZXlib2FyZD1ULkNsclNoYXBlRGV2aWNlcz1ULkNsclNoYXBlQmFja3VwPVQuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlPVQuQ2xyU2hhcGVIYXJkRGlzaz1ULkNsclNoYXBlUmFja1NlcnZlcj1ULkNsclNoYXBlV2lmaT1ULkNsclNoYXBlQnVuZGxlPVQuQ2xyU2hhcGVCbG9j''@;'; put 'put ''a3NHcm91cD1ULkNsclNoYXBlQmxvY2s9VC5DbHJTaGFwZUxheWVycz1ULkNsclNoYXBlVW5pbnN0YWxsPVQuQ2xyU2hhcGVJbnN0YWxsPVQuQ2xyU2hhcGVOb1dpZmk9VC5DbHJTaGFwZVBob25lSGFuZHNldD1ULkNsclNoYXBlUnVsZXJQZW5jaWw9dm9pZCAwLFQuVGVjaG5vbG9neVNoYXBl''@;'; put 'put ''cz1ULkNsclNoYXBlRmlsZVNoYXJlMj1ULkNsclNoYXBlQ2lDZD1ULkNsclNoYXBlQW5pbWF0aW9uPVQuQ2xyU2hhcGVUYXBlRHJpdmU9VC5DbHJTaGFwZU1lZGlhQ2hhbmdlcj1ULkNsckNvbnRyb2xMdW49VC5DbHJTaGFwZVBvZD1ULkNsclNoYXBlTm9kZT1ULkNsclNoYXBlTmFtZXNwYWNl''@;'; put 'put ''PVQuQ2xyU2hhcGVOb2Rlcz1ULkNsclNoYXBlTm9kZUdyb3VwPVQuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj1ULkNsclNoYXBlSG9zdEdyb3VwPVQuQ2xyU2hhcGVTcXVpZD1ULkNsclNoYXBlQ2FwYWNpdG9yPVQuQ2xyU2hhcGVSZXNpc3Rvcj1ULkNsclNoYXBlSW5kdWN0b3I9VC5DbHJTaGFw''@;'; put 'put ''ZVJhZGFyPVQuQ2xyU2hhcGVVc2I9VC5DbHJTaGFwZVFyQ29kZT1ULkNsclNoYXBlRmlsZVNoYXJlPVQuQ2xyU2hhcGVDb250YWluZXJWb2x1bWU9VC5DbHJTaGFwZUNvbnRhaW5lcj1ULkNsclNoYXBlQ2REdmQ9VC5DbHJTaGFwZUJhckNvZGU9VC5DbHJTaGFwZUF0b209VC5DbHJTaGFwZUFz''@;'; put 'put ''c2lnblVzZXI9VC5DbHJTaGFwZVByb2Nlc3NPblZNPVQuQ2xyU2hhcGVCbHVldG9vdGhPZmY9VC5DbHJTaGFwZUJsdWV0b290aD1ULkNsclNoYXBlU1NEPVQuQ2xyU2hhcGVOVk1lPVQuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz1ULkNsclNoYXBlSGFyZERyaXZlPVQuQ2xyU2hhcGVBZG1pbmlz''@;'; put 'put ''dHJhdG9yPVQuQ2xyU2hhcGVGbGFzaz1ULkNsclNoYXBlSGVsaXg9VC5DbHJTaGFwZURlcGxveT1ULkNsclNoYXBlQ2xvdWRUcmFmZmljPVQuQ2xyU2hhcGVDbG91ZFNjYWxlPVQuQ2xyU2hhcGVDbG91ZE5ldHdvcms9VC5DbHJTaGFwZVVubGluaz1ULkNsclNoYXBlTGluaz1ULkNsclNoYXBl''@;'; put 'put ''RGlzY29ubmVjdD1ULkNsclNoYXBlQ29ubmVjdD1ULkNsclNoYXBlVW5hcmNoaXZlPVQuQ2xyU2hhcGVBcmNoaXZlPVQuQ2xyU2hhcGVDZXJ0aWZpY2F0ZT12b2lkIDA7dmFyIGs9c2UoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRp''@;'; put 'put ''bHMvZGVzY3JpcHRvci1jb25maWcudHMiKSx2PXNlKAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7VC5DbHJTaGFwZVJ1bGVyUGVuY2lsPSgwLHYuY2xySWNvblNWRykoJzxwb2x5Z29u''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBwb2ludHM9IjkgMTcuNDEgOSAyNyAxOC41OSAyNyAxNi41OSAyNSAxMSAyNSAxMSAxOS40MSA5IDE3LjQxIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgZD0iTTM0Ljg3LDMyLjI5LDMyLDI5LjM4VjMySDRWMjcuODVINnYtMS42SDRWMTkuNkg2VjE4SDRWMTEuNkg2VjEwSDRWNC40MUwxOS45NCwyMC4yNlYxNy40NEwzLjcxLDEuMjlBMSwxLDAsMCwwLDIsMlYzM2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjQsMzBoNGEyLDIsMCwwLDAsMi0yVjguN0wyNy43LDQuNDdhMiwyLDAsMCwwLTEuNzYtMWgwYTIsMiwwLDAsMC0xLjc2LDEuMDhMMjIsOC43MlYyOEEyLDIsMCwwLDAs''@;'; put 'put ''MjQsMzBaTTI0LDkuMmwxLjk0LTMuNzdMMjgsOS4yMVYyNEgyNFptMCwxNi40M2g0djIuNDRIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuODcsMzIuMjEsMzAsMjcuMzdWOC43NUwyNy43LDQuNTJhMiwyLDAs''@;'; put 'put ''MCwwLTMuNTQsMEwyMiw4Ljc2VjE5LjQxTDMuNzEsMS4yMUExLDEsMCwwLDAsMiwxLjkyVjEwSDQuMTd2MS42SDJWMThINC4xN3YxLjZIMnY2LjY1SDQuMTd2MS42SDJ2NS4wN2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVpNMTAsMjZWMTYuOTRMMTkuMDcsMjZabTE4''@;'; put 'put ''LDIuMTFIMjRWMjUuNjhoNFptMC00SDI0VjkuMjVsMS45NC0zLjc3TDI4LDkuMjZaIi8+XG4nKSxULkNsclNoYXBlUGhvbmVIYW5kc2V0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuNzMsMzUuNDRhNC43''@;'; put 'put ''Miw0LjcyLDAsMCwxLTEtLjExLDMzLjkxLDMzLjkxLDAsMCwxLTE2LjYyLTguNzUsMzIuNzEsMzIuNzEsMCwwLDEtOS0xNi4yNUE0LjU4LDQuNTgsMCwwLDEsMi40Niw2LjA1bDQtMy44NUEyLDIsMCwwLDEsOCwxLjY2YTIsMiwwLDAsMSwxLjQ1Ljg3bDUsNy4zOWExLjYsMS42LDAsMCwxLS4x''@;'; put 'put ''MSwxLjlsLTIuNTEsM2ExOC45NCwxOC45NCwwLDAsMCw0LjE3LDUuODloMGExOS4yNiwxOS4yNiwwLDAsMCw2LjA3LDQuMDlsMy4xMS0yLjQ3YTEuNjQsMS42NCwwLDAsMSwxLjg2LS4xMmw3LjU1LDQuODhBMiwyLDAsMCwxLDM1LDMwLjJsLTMuOSwzLjg2QTQuNzQsNC43NCwwLDAsMSwyNy43''@;'; put 'put ''MywzNS40NFpNNy44NCwzLjY0bC00LDMuODVhMi41NCwyLjU0LDAsMCwwLS43NSwyLjQsMzAuNywzMC43LDAsMCwwLDguNDEsMTUuMjYsMzEuOSwzMS45LDAsMCwwLDE1LjY0LDguMjMsMi43NSwyLjc1LDAsMCwwLDIuNS0uNzRsMy45LTMuODYtNy4yOS00LjcxLTMuMzQsMi42NmExLDEsMCww''@;'; put 'put ''LDEtLjkyLjE3LDIwLjA2LDIwLjA2LDAsMCwxLTcuMzYtNC43NWgwYTE5LjQ5LDE5LjQ5LDAsMCwxLTQuODctNy4yQTEsMSwwLDAsMSwxMCwxNGwyLjctMy4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4yMiwy''@;'; put 'put ''MC42NGEyMC4zNywyMC4zNywwLDAsMCw3LjQsNC43OWwzLjc3LTNhLjY3LjY3LDAsMCwxLC43NiwwbDcsNC41MWEyLDIsMCwwLDEsLjMzLDMuMThsLTMuMjgsMy4yNGE0LDQsMCwwLDEtMy42MywxLjA3LDM1LjA5LDM1LjA5LDAsMCwxLTE3LjE1LTlBMzMuNzksMzMuNzksMCwwLDEsMS4xNSw4''@;'; put 'put ''LjZhMy43OCwzLjc4LDAsMCwxLDEuMS0zLjU1bDMuNC0zLjI4YTIsMiwwLDAsMSwzLjEyLjMyTDEzLjQzLDlhLjYzLjYzLDAsMCwxLDAsLjc1bC0zLjA3LDMuNjlBMTkuNzUsMTkuNzUsMCwwLDAsMTUuMjIsMjAuNjRaIi8+XG4nKSxULkNsclNoYXBlTm9XaWZpPSgwLHYuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuNDJhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMjQuNDJabTAsNmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwxOCwzMC40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYuMjEsMjEuODVhMSwxLDAsMCwwLS4yMy0xLjQsMTMuNTYsMTMuNTYsMCwwLDAtNS0yLjIzbDMuODcsMy44N0ExLDEsMCwwLDAsMjYuMjEsMjEuODVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LjA1LDEwLjcyYTIwLjg4LDIwLjg4LDAsMCwwLTQuMTYuNDNsMS43NCwxLjc0YTE5LDE5LDAsMCwxLDIuNDItLjE3QTE4Ljc2LDE4Ljc2LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAs''@;'; put 'put ''MTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMzLjU1LDguMkEyOC4xMSwyOC4xMSwwLDAsMCw4LjExLDUuMzZMOS42OSw2LjkzQTI2LDI2LDAsMCwxLDMyLjQ1LDkuODdhMSwxLDAsMCwwLDEu''@;'; put 'put ''MS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0xLjg0LDQuNzUsNC4yNyw3LjE4Yy0uNjIuMzQtMS4yMy43LTEuODMsMS4xQTEsMSwwLDEsMCwzLjU2LDkuOTRDNC4yNiw5LjQ3LDUsOSw1Ljc0LDguNjVs''@;'; put 'put ''My44NywzLjg3QTIwLjU5LDIwLjU5LDAsMCwwLDYuMjMsMTQuNCwxLDEsMCwwLDAsNy4zNiwxNmExOC44MiwxOC44MiwwLDAsMSwzLjc3LTJsNC4xNiw0LjE2QTEzLjUxLDEzLjUxLDAsMCwwLDEwLDIwLjU1YTEsMSwwLDAsMCwxLjE4LDEuNjFBMTEuNTIsMTEuNTIsMCwwLDEsMTcsMjBsMTAu''@;'; put 'put ''OCwxMC44LDEuNDEtMS40MS0yNi0yNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjkuNTQiIHI9IjMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTIiIGQ9Ik0yOS4xOCwxNy43MWwuMTEtLjE3YTEuNTEsMS41MSwwLDAsMC0uNDctMi4xQTIwLjU3LDIwLjU3LDAsMCwwLDE4LDEyLjM3Yy0uNTYsMC0xLjExLDAtMS42NS4wN2wzLjIxLDMuMjFhMTcuNDEsMTcuNDEsMCwwLDEsNy42LDIuNTJBMS40OSwxLjQ5LDAsMCwwLDI5LjE4LDE3''@;'; put 'put ''LjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTMyLjc2LDkuMzhBMjcuOSwyNy45LDAsMCwwLDEwLjE4LDYuMjdMMTIuODEsOC45QTI0LjY4LDI0LjY4LDAsMCwxLDMxLjEsMTIuMTJhMS40OSwxLjQ5LDAsMCwwLDIt''@;'; put 'put ''LjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMyw0Ljc1bDMuMSwzLjFBMjcuMjgsMjcuMjgsMCwwLDAsMy4xOCw5LjQyYTEuNTEsMS41MSwwLDAsMC0u''@;'; put 'put ''NDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY5LDI0LjY5LDAsMCwxLDMuNjctMS45bDMuMTQsMy4xNGEyMC42MywyMC42MywwLDAsMC00LjUzLDIuMDksMS41MSwxLjUxLDAsMCwwLS40NiwyLjFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NkExNy40NiwxNy40''@;'; put 'put ''NiwwLDAsMSwxNC4yNSwxNmwzLjYsMy42YTEzLjM5LDEzLjM5LDAsMCwwLTYuNzksMS45MywxLjUsMS41LDAsMCwwLS40NiwyLjA5bC4xLjE2YTEuNTIsMS41MiwwLDAsMCwyLjA2LjQ0LDEwLjIsMTAuMiwwLDAsMSw5LS43TDI5LDMwLjc1bDEuNDEtMS40MS0yNi0yNloiLz5cbicpLFQuQ2xy''@;'; put 'put ''U2hhcGVJbnN0YWxsPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBh''@;'; put 'put ''MiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCwwLDMwLjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEwLjMsMTguODdsNyw2Ljg5YTEsMSwwLDAsMCwxLjQsMGw3''@;'; put 'put ''LTYuODlhMSwxLDAsMCwwLTEuNC0xLjQzTDE5LDIyLjY1VjRhMSwxLDAsMCwwLTIsMFYyMi42NWwtNS4zLTUuMjFhMSwxLDAsMCwwLTEuNCwxLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+PHBhdGggZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEs''@;'; put 'put ''MCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAs''@;'; put 'put ''MCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMi0tYWxlcnRlZCIgZD0iTTMxLDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUs''@;'; put 'put ''MS4xNFoiLz5cbicpLFQuQ2xyU2hhcGVVbmluc3RhbGw9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43''@;'; put 'put ''LDI1LjNsLTUuMjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTBBMiwyLDAsMCww''@;'; put 'put ''LDMwLjkyLDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUu''@;'; put 'put ''MjgtNS4yMSw1LjI4LTUuMjFhMSwxLDAsMCwwLTEuNDEtMS40MkwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEsMSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMxLDEzLjQzVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBhMiwyLDAsMCwwLDIuMDgsMkgzMC45MkEyLDIsMCwwLDAsMzMsMzBWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEz''@;'; put 'put ''LjQzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTEuMjksMjYuNzJhMSwxLDAsMCwwLDEuNDEsMEwxOCwyMS40OWw1LjMsNS4yM0ExLDEsMCwwLDAsMjQuNywyNS4zbC01LjI4LTUuMjEsNC43NS00LjY5SDIyLjIzYTMuNjUsMy42NSwwLDAsMS0uODEtLjFMMTgsMTgu''@;'; put 'put ''NjhsLTUuMy01LjIzYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS4yOCw1LjIxTDExLjMsMjUuM0ExLDEsMCwwLDAsMTEuMjksMjYuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMx''@;'; put 'put ''LDE1LjRWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLFQuQ2xyU2hh''@;'; put 'put ''cGVMYXllcnM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWEx''@;'; put 'put ''LDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVpNNS4zNCwxMi4xNmwxMi42Niw2LDEyLjY2LTZMMTgsNi4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjYuMTZhMSwxLDAs''@;'; put 'put ''MCwxLS40My0uMUwyLjU3LDE5YTEsMSwwLDEsMSwuODUtMS44MUwxOCwyNC4wNmwxNC41Ny02Ljg5QTEsMSwwLDEsMSwzMy40MywxOWwtMTUsNy4wOUExLDEsMCwwLDEsMTgsMjYuMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSww''@;'; put 'put ''LDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOCwzMi4wN2ExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwuODUtMS44MUwxOCwzMGwxNC41Ny02Ljg5YTEsMSwwLDEsMSwuODUs''@;'; put 'put ''MS44MUwxOC40MywzMkExLDEsMCwwLDEsMTgsMzIuMDdaIi8+XG4nKSxULkNsclNoYXBlQmxvY2s9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQyLDkuMDlsLTEzLTZhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmEx''@;'; put 'put ''LDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTBBMSwxLDAsMCwwLDMxLjQyLDkuMDlaTTE4LDUuMSwyOC42MSwxMCwxOCwxNC45LDcuMzksMTBaTTYsMTEuNTZsMTEsNS4wOHYxNC44TDYsMjYuMzZaTTE5LDMxLjQ0VjE2LjY0bDExLTUuMDh2MTQuOFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjUzVjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDIuNTctMS4xOWEzLjY3LDMuNjcsMCwwLDEtMi4xMS0xLjIyTDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsMy4wOCwxLjQyLDEtMS43NEwx''@;'; put 'put ''OC40MiwzLjA5YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4LjkxbDEzLDZhMSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjE1LjUzWk0xNywzMS40NCw2LDI2LjM2VjExLjU2bDExLDUuMDhaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NywxLjI2bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkySDMzLjdhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkyTDI5LjA4LDEuMjZBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDI2Ljg3LDEuMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3''@;'; put 'put ''LDcuNTcsMCwwLDEtMi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmEx''@;'; put 'put ''LDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDMxLjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMt''@;'; put 'put ''NmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIsOS4wOVpNMTgsMTQuOSw3LjM5LDEwLDE4LDUuMSwyOC42MSwxMFpNMzAsMjYu''@;'; put 'put ''MzYsMTksMzEuNDRWMTYuNjRsMTEtNS4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuMzh2MTFMMTksMzEuNDRWMTYuNjRsMi43OS0xLjI5YTMuNjgsMy42OCwwLDAsMS0yLjI1LTEuMTZMMTgsMTQuOSw3''@;'; put 'put ''LjM5LDEwLDE4LDUuMWwzLDEuMzksMS0xLjc1TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTIsMjEuMTMsMTFhMS4yNywxLjI3LDAsMCwwLDEuMSwxLjkxSDMzLjY4QTEuMjcsMS4yNywwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjEyQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjI2LjM2TDE5LDMxLjQ0VjE2LjY0bDguMDgtMy43M2E3LjU3LDcuNTcsMCwwLDEt''@;'; put 'put ''Mi0xLjI3TDE4LDE0LjksNy4zOSwxMCwxOCw1LjFsNC42MSwyLjEzQTcuMTIsNy4xMiwwLDAsMSwyMi41LDZhOCw4LDAsMCwxLC4wNy0xTDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0''@;'; put 'put ''LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTMuMjJBNy4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksVC5DbHJTaGFwZUJsb2Nrc0dyb3VwPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0z''@;'; put 'put ''LjQ1YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCwwLS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBs''@;'; put 'put ''Ny41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZabS0yLjgxLjkxTDI1LjYxLDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1Wk0xOC4xLDQuMDhsNS4xMSwyLjM1TDE4LjEsOC43OCwxMyw2LjQzWk0xMC42LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIy''@;'; put 'put ''LDUuNDksMTkuNjdabTYuNSwxMS40OS02LjUsMy02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjhaTTExLjYsMTUuNTdoMFY4bDYuMDgsMi44YTEsMSwwLDAsMCwuODQsMEwyNC42LDh2Ny41OGgwbC02LjUsM1pNMzIuMTEsMjguODFsLTYuNSwzLTYuNTEtM1Yy''@;'; put 'put ''MS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRsNi4wOC0yLjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3aC0ydjBsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCww''@;'; put 'put ''bC4yNC0uMTFhNC4xNyw0LjE3LDAsMCwxLC4yOS0uNjVsMS4zMy0yLjMxLTIuMjgsMUwxMyw2LjQzbDUuMS0yLjM1LDMuNDcsMS42LDEtMS43M0wxOC41LDIuMDhhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTgu''@;'; put 'put ''OTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEw''@;'; put 'put ''LjYsMjIsNS40OSwxOS42N1ptMCwxNC40OS02LjUtM1YyMS4yM0wxMC4xOCwyNEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTE1LTE0LjQ4LDUuMTEsMi4zNUwyNS42MSwyMiwyMC41LDE5LjY3Wm0wLDE0LjQ5LTYuNTEtM1YyMS4yMkwyNS4xOSwyNEExLDEsMCwwLDAsMjYsMjRs''@;'; put 'put ''Ni4wOC0yLjgsMCw3LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4x''@;'; put 'put ''LTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWMTIuN2E3LjU4''@;'; put 'put ''LDcuNTgsMCwwLDEtMi0xLjUxdjQuMzlsLTYuNSwzLTYuNS0zVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwTDIzLDguNzJhNy4wNSw3LjA1LDAsMCwxLS40Ny0ybC00LjQ3LDJMMTMsNi40M2w1LjEtMi4zNSw0LjQ0LDJzMC0uMDYsMC0uMDlhNy41NSw3LjU1LDAsMCwxLC4yNy0ybC00LjMt''@;'; put 'put ''MmExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0z''@;'; put 'put ''LjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4x''@;'; put 'put ''MSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4''@;'; put 'put ''PSIzMC4wMyIgY3k9IjYuMDMiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbjxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0zLjQ1''@;'; put 'put ''YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0TDIuNjgsMTguNzZhMSwxLDAsMCwwLS41OC45MXY5Ljc4aDBhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41''@;'; put 'put ''LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFoMFYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZaTTI1LjYxLDIyLDIwLjUsMTkuNjdsNS4xMS0yLjM1LDUuMTEsMi4zNVptLTEtNi40NC02LjQ0LDNWMTAuODdhMSwxLDAsMCwwLC4zNS0uMDhMMjQuNiw4djcuNThaTTE4LjEsNC4wOGw1LjExLDIu''@;'; put 'put ''MzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5LTYuNSwzaDBWMjQuMTFoMEExLDEsMCwwLDAsMTEsMjRsNi4wOC0yLjhabTE1LDAtNi40NiwzVjI0LjExQTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N3YwaC0ydjBsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOGwuMTQtLjA2QTMuMjMsMy4yMywwLDAsMSwxOSwxMGwxLjI4LTIuMjItMi4xNCwxTDEz''@;'; put 'put ''LDYuNDNsNS4xLTIuMzUsMy4zOSwxLjU2LDEtMS43My00LTEuODNhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRsLTYuOSwzLjE4YTEsMSwwLDAsMC0uNTguOTF2OS43OGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4''@;'; put 'put ''LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MVYxOS42N0ExLDEsMCwwLDAsMzMuNTMsMTguNzZabS0yOCwuOTEsNS4xMS0yLjM2LDUuMTEsMi4zNUwxMC42LDIyWk0xMC42LDMxLjhWMjQuMTFBMS4wOCwxLjA4LDAsMCwwLDExLDI0bDYu''@;'; put 'put ''MDgtMi44LDAsNy42Wm05LjktMTIuMTMsNS4xMS0yLjM1LDUuMTEsMi4zNUwyNS42MSwyMlpNMjUuNjQsMzEuOFYyNC4xMUEuODkuODksMCwwLDAsMjYsMjRsNi4wOC0yLjgsMCw3LjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuPHBhdGggZD0iTTI2Ljg5LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjcsMTNIMzMuNzJhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjEsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODksMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1YxMi42OWE3LjY2LDcuNjYsMCwwLDEtMi0xLjQ3djQuMzRsLTYuNDMsM1YxMC44N2ExLjA1LDEuMDUsMCwwLDAsLjM1LS4wOEwyMyw4LjczYTcuNjUsNy42NSwwLDAs''@;'; put 'put ''MS0uNDgtMmwtNC40MiwyTDEzLDYuNDNsNS4xLTIuMzUsNC4zOCwyVjZhNy41NSw3LjU1LDAsMCwxLC4yNy0yTDE4LjUsMi4wOGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwu''@;'; put 'put ''NTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYs''@;'; put 'put ''MzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4xMSwyLjM1TDI1LjYxLDIyWk0yNS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuPGNpcmNsZSBjeD0iMjkuOTgiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxULkNsclNoYXBlQnVuZGxlPSgwLHYuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwu''@;'; put 'put ''ODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWk01LDEyLjEzLDE2LDE3LjRWMzEuNDZMNSwyNi4y''@;'; put 'put ''Wk0xOCwzMS40NVYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEs''@;'; put 'put ''MSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEy''@;'; put 'put ''LjkxWm0xLDE1LjhWMTcuMzZsMTMtNi4yOXYxNC4xWiIvPlxuJyksVC5DbHJTaGFwZVdpZmk9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy41NSw4LjJhMjguMSwyOC4xLDAsMCwwLTMxLjExLjA4QTEsMSww''@;'; put 'put ''LDEsMCwzLjU2LDkuOTRhMjYuMTEsMjYuMTEsMCwwLDEsMjguODktLjA3LDEsMSwwLDAsMCwxLjEtMS42N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTguMDUsMTAuNzJBMjAuNzQsMjAuNzQsMCwwLDAsNi4y''@;'; put 'put ''MywxNC40LDEsMSwwLDAsMCw3LjM2LDE2LDE4Ljg1LDE4Ljg1LDAsMCwxLDI4LjY0LDE2YTEsMSwwLDAsMCwxLjEyLTEuNjVBMjAuNzUsMjAuNzUsMCwwLDAsMTguMDUsMTAuNzJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MyIgZD0iTTE4LjA1LDE3LjlhMTMuNTEsMTMuNTEsMCwwLDAtOCwyLjY0LDEsMSwwLDAsMCwxLjE4LDEuNjEsMTEuNTYsMTEuNTYsMCwwLDEsMTMuNjItLjA4QTEsMSwwLDEsMCwyNiwyMC40NiwxMy41MiwxMy41MiwwLDAsMCwxOC4wNSwxNy45WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLjc2LDkuMzhhMjcuODcsMjcuODcsMCwwLDAtMjkuNTcsMCwxLjUxLDEuNTEsMCwwLDAt''@;'; put 'put ''LjQ4LDIuMTFsLjExLjE3YTEuNDksMS40OSwwLDAsMCwyLC40NiwyNC42OCwyNC42OCwwLDAsMSwyNi4yNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3QTEuNTEsMS41MSwwLDAsMCwzMi43Niw5LjM4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI4LjgyLDE1LjQ0YTIwLjU5LDIwLjU5LDAsMCwwLTIxLjcsMCwxLjUxLDEuNTEsMCwwLDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDE3LjQsMTcuNCwwLDAsMSwxOC4zNiwwLDEuNDksMS40OSwwLDAsMCwyLS40NmwuMTEtLjE3''@;'; put 'put ''QTEuNTEsMS41MSwwLDAsMCwyOC44MiwxNS40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0yNC44OCwyMS40OWExMy40MSwxMy40MSwwLDAsMC0xMy44MiwwLDEuNSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41''@;'; put 'put ''MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMjcsMTAuMjcsMCwwLDEsMTAuNDIsMCwxLjUyLDEuNTIsMCwwLDAsMi4wNi0uNDVsLjEtLjE2QTEuNDksMS40OSwwLDAsMCwyNC44OCwyMS40OVoiLz5cbicpLFQuQ2xyU2hhcGVSYWNrU2VydmVyPSgwLHYuY2xySWNvblNWRykoJzxyZWN0IGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTE4LjY0LDExQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTB2MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgzMlYyMUg0VjE1SDIwLjU4QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41Nkg0VjdIMjAuNzFsMS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4x''@;'; put 'put ''MywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0iMTAiIHk9IjE3IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIx''@;'; put 'put ''NCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0xMCwxMUgyNHYtLjUxQTcuNDgsNy40OCwwLDAsMSwyMy4xMyw5SDEwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi42OC0uNUg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk00LDE1SDMydjZINFpNNCwyOVYyM0gzMnY2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTAiIHk9IjkiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iNiIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NSIgZD0iTTMyLDVINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk00LDdIMzJ2Nkg0Wm0wLDhIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNiIgeD0iNiIgeT0iMjUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxMCIgeT0iMjUiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTksOS44OSwxOS41Niw5SDEwVjdIMjAuNzFsMS43My0zSDRBMiwyLDAsMCwwLDIsNnY2SDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5Wk04LDlINlY3SDhaIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMnY4SDM0VjE1LjM4Wk04LDE5SDZWMTdIOFptMTYsMEgxMFYxN0gyNFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMiwxNHY4SDM0VjE0Wm02LDVINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMjMuMTMsOUgxMFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0uMDctMSw3LjQ5LDcuNDksMCwwLDEsLjI4LTJINEEyLDIsMCwwLDAsMiw2djZIMjUuNTFBNy41Miw3LjUyLDAsMCwxLDIzLjEzLDlaTTgs''@;'; put 'put ''OUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDIySDM0VjE0SDJabTgtNUgyNHYySDEwWk02LDE3SDh2Mkg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2djZIMzRWNkEyLDIsMCwwLDAsMzIs''@;'; put 'put ''NFpNOCw5SDZWN0g4Wk0yNCw5SDEwVjdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMiwzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRIMlptOC0zSDI0djJIMTBaTTYsMjdIOHYySDZaIi8+XG4n''@;'; put 'put ''KSxULkNsclNoYXBlSGFyZERpc2s9KDAsdi5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0zNCwyMS4wOGwtMS40LTUuNjhIMzAuNTFsMS40OSw2VjI5SDRWMjEuNDRMNy4wNiw5aDEyLjVsMS4xNS0ySDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFB''@;'; put 'put ''MSwxLDAsMCwwLDM0LDIxLjA4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjAiIHdp''@;'; put 'put ''ZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzQsMjEuMDgsMzIsMTMuMjFhNy40OSw3LjQ5LDAsMCwxLTIsLjI5bDIsNy45NFYyOUg0VjIxLjQ0TDcuMDYsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4wNkEyLDIsMCwwLDAsNS4x''@;'; put 'put ''Myw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNCwyMS4wOCwzMC44Niw4LjQzQTIsMiwwLDAsMCwyOC45NCw3SDcuMDZBMiwyLDAsMCwwLDUu''@;'; put 'put ''MTMsOC40N0wyLDIxLjA4YTEsMSwwLDAsMCwwLC4yNFYyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjEuMzFBMSwxLDAsMCwwLDM0LDIxLjA4Wk00LDI5VjIxLjQ0TDcuMDYsOUgyOC45M0wzMiwyMS40NFYyOVoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzIuNTgsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLDEzLjIxQTcuNDcsNy40NywwLDAsMSwyMi41Nyw3SDcuMDZBMiwyLDAsMCwwLDUuMTMsOC40N0wyLjI5LDIwSDMzLjcxWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjg2''@;'; put 'put ''LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMiwyMnY3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYyMlptMjgsNUgyNlYyNWg0WiIvPlxuJyksVC5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9KDAsdi5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdo''@;'; put 'put ''dD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEuNzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTTMxLjU4LDE1LjRIMjkuNDZjMSwyLjg1LDIuMzEsNi4zNywyLjU0LDcuMDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjks''@;'; put 'put ''MS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xMiwzNCwyMiwzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1i''@;'; put 'put ''YWRnZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVh''@;'; put 'put ''MSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2Mmg3Ljk1QzMwLDE2Ljk0LDMxLjcyLDIxLjY1LDMyLDIyLjQ4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIMTVWMTJINy4wN2ExLjkyLDEuOTIs''@;'; put 'put ''MCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIuMzNDMzQsMjIuMSwzNCwyMiwzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTEzLDkuOTIsMTcs''@;'; put 'put ''NlYxOWExLDEsMCwxLDAsMiwwVjZsNCwzLjk1QTEsMSwwLDEsMCwyNC4zOCw4LjVMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLjg0LDEzLjM3''@;'; put 'put ''QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIs''@;'; put 'put ''MiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDEuNDcsMS40NiwxLTEu''@;'; put 'put ''NzlMMTgsMi4xNiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyMi4yM0EzLjYyLDMuNjIsMCwwLDEsMjEsMTUuMTZW''@;'; put 'put ''MThhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgzMy45M0MzMy43OSwyMS40OSwzMy4yOCwyMC4wNywzMS41OCwxNS40WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGExLDEsMCwxLDAsMiwwVjZsNCwzLjk1YTEsMSwwLDAsMCwuNzEuMjlsLjExLDBhNy40Niw3LjQ2LDAsMCwxLTEuMjUtMy41MkwxOCwyLjE2LDExLjYxLDguNUExLDEs''@;'; put 'put ''MCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzAuODcsMTMuNDVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNUE3LjQ2LDcuNDYsMCwwLDEsMjUuNTEsMTJIMjF2NmEzLDMs''@;'; put 'put ''MCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDMzLjkzQzMzLjc3LDIxLjQzLDMzLjE1LDE5LjcsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYy''@;'; put 'put ''NFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45MywxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45''@;'; put 'put ''LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTQsMTkuNjksMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE4YTEsMSww''@;'; put 'put ''LDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbicpLFQuQ2xyU2hhcGVCYWNrdXA9KDAsdi5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdo''@;'; put 'put ''dD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOCwxOS44NGw0LjQ3LTQuNDRoLS4yM2EzLjY3LDMuNjcsMCwwLDEtMi0uNjFMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00''@;'; put 'put ''LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEuNTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIy''@;'; put 'put ''LjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1''@;'; put 'put ''LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uMjQsMS4zaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBI''@;'; put 'put ''NFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAsMS0uMTQtMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3''@;'; put 'put ''LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIGQ9Ik0zMC44NCwxMy4zN0ExLjk0LDEuOTQsMCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwxLS4xNCwyaDIuNTRDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEg5LjU4YTMsMywwLDAs''@;'; put 'put ''MS0uMTQtMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg0LDEzLjM3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwxNC45MUEzLDMsMCwwLDEsOS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw0SDI2VjI2aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNS0uNTEtLjY1LTEuOTMtMi4zNS02LjZIMjUuM2wtNS44OSw1Ljg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''NC0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjQsMy42NCwwLDAsMS0yLS42MUwxOSwxNlY0YTEsMSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEu''@;'; put 'put ''NDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTE2LjU4LDIxLjI2LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42''@;'; put 'put ''OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIiBkPSJNMTguNjYsMjJIMzMuOTNjLS4xNy0uNTctLjc5LTIuMy0zLjA2LTguNTVhNy41NSw3LjU1LDAsMCwxLS44Ny4wNSw3LjQ2LDcuNDYsMCwwLDEtMy4z''@;'; put 'put ''NS0uOCwzLDMsMCwwLDEtLjg2LDIuMjFsLTYuMzgsNi4zNVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwxOS44NGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDEyLjA4TDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTkuNDEsMjEuMjZsLS43NC43NEgzMy45M2MtLjE3LS41Ny0uNzktMi4zMS0zLjA5LTguNjNBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDI2LjU1YTMsMywwLDAsMS0uNzYsMi45MloiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xNi41OCwyMS4yNiwxMC4yLDE0LjkxQTMsMywwLDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbicpLFQuQ2xyU2hhcGVEZXZpY2VzPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyNkgyNFYxNVpNMjQsMzBWMjcuNmg4VjMwWiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMCwyMkg0VjZIMjh2NWgyVjZhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMkgyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAsMjZIOWExLDEsMCwwLDAsMCwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDEzSDI0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTVBMiwyLDAsMCwwLDMyLDEzWm0wLDJWMjhIMjRWMTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjgsNEg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMmg4djJIOS4zMkExLjIsMS4yLDAsMCww''@;'; put 'put ''LDgsMjdhMS4yLDEuMiwwLDAsMCwxLjMyLDFIMTkuOTJ2LS4zN0gyMFYyMkg0VjZIMjh2NWgyVjZBMiwyLDAsMCwwLDI4LDRaIi8+XG4nKSxULkNsclNoYXBlS2V5Ym9hcmQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhabTAsMThINFYxMEgzMloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI3IiB5''@;'; put 'put ''PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjExIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE1IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjE5IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHg9IjIzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjI3IiB5''@;'; put 'put ''PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9IjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgeD0iMTEiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIHg9IjE1IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiB4PSIxOSIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgeD0iMjMi''@;'; put 'put ''IHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIHg9IjI3IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiB4PSIyNyIgeT0iMjIiIHdpZHRoPSIxLjk0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIgeD0iNyIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgeD0iMTEuMTMiIHk9IjIyIiB3aWR0aD0iMTMuNzUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFpNMTksMTNoMnYySDE5Wm0wLDRoMnYySDE5Wm0tNC00aDJ2MkgxNVptMCw0aDJ2MkgxNVptLTQtNGgydjJIMTFaTTksMjRIN1YyMkg5Wm0wLTVIN1Yx''@;'; put 'put ''N0g5Wm0wLTRIN1YxM0g5Wm0yLDJoMnYySDExWm0xMy44OCw3SDExLjEzVjIySDI0Ljg4Wk0yNSwxOUgyM1YxN2gyWm0wLTRIMjNWMTNoMlptMy45NCw5SDI3VjIyaDEuOTRaTTI5LDE5SDI3VjE3aDJabTAtNEgyN1YxM2gyWiIvPlxuJyksVC5DbHJTaGFwZU1vdXNlPSgwLHYuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMzRBMTAsMTAsMCwwLDEsOCwyNFYxMmExMCwxMCwwLDAsMSwyMCwwVjI0QTEwLDEwLDAsMCwxLDE4LDM0Wk0xOCw0YTgsOCwwLDAsMC04LDhWMjRhOCw4LDAsMCwwLDE2LDBWMTJBOCw4''@;'; put 'put ''LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDE1YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDIsMHY0QTEsMSwwLDAsMSwxOCwxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTEwLDEwLDAsMCwwLDgsMTJWMjRhMTAsMTAsMCwwLDAsMjAsMFYxMkExMCwxMCwwLDAsMCwxOCwyWm0xLjMsMTEuNDRhMS4zLDEuMywwLDAsMS0yLjYsMFYxMGExLjMsMS4zLDAsMCwxLDIuNiwwWiIvPlxuJyksVC5D''@;'; put 'put ''bHJTaGFwZURhc2hib2FyZD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI1LjE4LDEyLjMybC01LjkxLDUuODFhMywzLDAsMSwwLDEuNDEsMS40Mmw1LjkyLTUuODFaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTExLjM0LDI1LjVINi42NmExNC40MywxNC40MywwLDAsMS0z''@;'; put 'put ''LjExLTcuODRIN3YtMkgzLjU1QTE0LjQxLDE0LjQxLDAsMCwxLDcsMTEuMjlsMi40NSwyLjQ1LDEuNDEtMS40MUw4LjQzLDkuODdBMTQuNDEsMTQuNDEsMCwwLDEsMTcsNi4yOXYzLjVoMlY2LjNhMTQuNDcsMTQuNDcsMCwwLDEsMTMuNCwxMy42MUgyOC45MnYyaDMuNTNBMTQuNDMsMTQuNDMs''@;'; put 'put ''MCwwLDEsMjkuMzQsMjkuNzVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTUuODUsMTguNjlhMywzLDAsMSwwLDQuODMuODVsNS45Mi01LjgxLTEuNDEtMS40MS01LjkxLDUu''@;'; put 'put ''ODFBMywzLDAsMCwwLDE1Ljg1LDE4LjY5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjU4LDEzYTcuNDUsNy40NSwwLDAsMS0yLjA2LjQ0LDE0LjQsMTQuNCwwLDAsMSwx''@;'; put 'put ''LjkzLDYuNDNIMjguOTJ2MmgzLjUzYTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEsNy44NEg2LjY2YTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUsMS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAs''@;'; put 'put ''MSwxNyw2LjI5djMuNWgyVjYuM0ExNC40MSwxNC40MSwwLDAsMSwyMi41OCw3YTcuNTIsNy41MiwwLDAsMS0uMDgtMSw3LjUyLDcuNTIsMCwwLDEsLjA5LTEuMDlBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNloi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw0LjI1QTE2LjQ5LDE2LjQ5LDAsMCwwLDUuNCwzMS40bC4zLjM1SDMwLjNsLjMtLjM1QTE2LjQ5LDE2LjQ5LDAsMCwwLDE4LDQuMjVabTguNiw5LjQ4LTUuOTIsNS44MWEzLDMsMCwxLDEtMS40MS0xLjQybDUuOTEtNS44MVptLTIzLDYuMTdIN3Yy''@;'; put 'put ''SDMuNTZjMC0uMzktLjA1LS43Ny0uMDUtMS4xN1MzLjUzLDIwLjE4LDMuNTUsMTkuOVptNC44OC0xMCwyLjQ2LDIuNDZMOS40NywxMy43NCw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N1pNMTksOS43OUgxN1Y2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1Wk0zMi40''@;'; put 'put ''OSwyMC43NGMwLC4zOSwwLC43OS0uMDUsMS4xN0gyOC45MnYtMmgzLjUzQzMyLjQ3LDIwLjE4LDMyLjQ5LDIwLjQ2LDMyLjQ5LDIwLjc0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MzIuNTgsMTNhNy40Niw3LjQ2LDAsMCwxLTEwLTguMTJBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVhMTYuNDUsMTYuNDUsMCwwLDAsMi0xOC4zNlpNMTcsNi4yOWMuMzIsMCwuNjMsMCwxLDBzLjcsMCwxLC4wNXYzLjVIMTdaTTcsMjEuOTFIMy41NmMwLS4z''@;'; put 'put ''OS0uMDUtLjc3LS4wNS0xLjE3czAtLjU2LDAtLjgzSDdabTIuNTEtOC4xNkw3LDExLjI5QTE0LjU3LDE0LjU3LDAsMCwxLDguNDMsOS44N2wyLjQ2LDIuNDZabTEwLjYyLDkuMTlhMywzLDAsMSwxLS44Mi00LjgxbDUuOTEtNS44MSwxLjQxLDEuNDEtNS45Miw1LjgxQTMsMywwLDAsMSwyMC4w''@;'; put 'put ''OSwyMi45M1ptMTIuMzUtMUgyOC45MnYtMmgzLjUzYzAsLjI4LDAsLjU1LDAsLjgzUzMyLjQ3LDIxLjUyLDMyLjQ0LDIxLjkxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbicpLFQuQ2xyU2hhcGVIb3N0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuM2EyLjQ4LDIuNDgsMCwxLDAsMi40OCwyLjQ3QTIuNDgsMi40OCwwLDAs''@;'; put 'put ''MCwxOCwyNC4zWm0wLDMuNmExLjEzLDEuMTMsMCwxLDEsMS4xMy0xLjEyQTEuMTMsMS4xMywwLDAsMSwxOCwyNy45WiIvPjxyZWN0IHg9IjEzLjUiIHk9IjIwLjciIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjY1LDMuNkgxMC4zNUExLjM1LDEuMzUsMCwwLDAsOSw0Ljk1VjMyLjRIMjdWNC45NUExLjM1LDEuMzUsMCwwLDAsMjUuNjUsMy42Wm0tLjQ1LDI3SDEwLjhWNS40SDI1LjJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjEyLjYiIHk9IjcuMiIgd2lkdGg9IjEwLjgiIGhlaWdodD0iMS40NCIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi42IiB5PSIxMC44IiB3aWR0''@;'; put 'put ''aD0iMTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41''@;'; put 'put ''LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJzMC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVk''@;'; put 'put ''IiBwb2ludHM9IjIxLjMsNiAxMiw2IDEyLDcuNiAyMC40LDcuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTIsMTEuNmg2LjZjMC0wLjYsMC4yLTEuMSwwLjQtMS42aC03''@;'; put 'put ''VjExLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yNiwxNS40VjMySDEwVjRoMTIuNWwxLjEtMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTUuNEgyNnoiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4yLDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4y''@;'; put 'put ''aDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS4yLDI3LjhjMCwxLjUsMS4yLDIuOCwyLjgsMi44czIuOC0xLjIsMi44LTIuOFMxOS41LDI1LDE4LDI1UzE1LjIsMjYuMiwxNS4yLDI3Ljh6IE0xOS4yLDI3LjhjMCwwLjctMC42LDEuMi0xLjIsMS4ycy0xLjItMC42LTEuMi0xLjJz''@;'; put 'put ''MC42LTEuMiwxLjItMS4yUzE5LjIsMjcuMSwxOS4yLDI3Ljh6Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIxMyIgeT0iMjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0yNCwxMC41Yy0wLjEtMC4yLTAuMi0wLjMtMC4zLTAuNUgxMnYxLjZoMTJWMTAuNXoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xMiw2djEuNmgxMC43Yy0wLjEtMC41LTAuMi0xLjEtMC4yLTEuNkgxMnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC01LS1iYWRnZWQiIGQ9Ik0yNiwxMi4zVjMySDEwVjRoMTIuOGMwLjItMC43LDAuNS0xLjQsMC45LTJIOS41QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjJDMjcuMywxMywyNi42LDEyLjcsMjYsMTIuM3oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNi41LDJoLTE3QzguNywy''@;'; put 'put ''LDgsMi43LDgsMy41VjM0aDIwVjMuNUMyOCwyLjcsMjcuMywyLDI2LjUsMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnogTTI0LDExLjZIMTJWMTBo''@;'; put 'put ''MTJWMTEuNnogTTI0LDcuNkgxMlY2aDEyVjcuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yMi4yLDE1LjNjLTIsMC0zLjctMS42LTMuNy0zLjdIMTJWMTBoNi45YzAtMC4xLDAuMS0wLjIsMC4xLTAuMmwxLjItMi4ySDEyVjZoOS4ybDIuMy00aC0xNEM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS4zSDIy''@;'; put 'put ''LjJ6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6IE0yMywyMi42SDEzVjIxaDEwVjIyLjZ6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxbC01Ljcs''@;'; put 'put ''OS45Yy0wLjMsMC42LTAuMSwxLjQsMC41LDEuN2MwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmgxMS40YzAuNywwLDEuMy0wLjYsMS4zLTEuM2MwLTAuMi0wLjEtMC40LTAuMi0wLjZMMjkuMSwxYy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuNywyNywwLjgsMjYuOSwxeiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjQsMTAuM3YxLjJIMTJWMTBoMTEuOGMtMC41LTAuNy0wLjgtMS41LTEtMi40SDEyVjZoMTAuNWMwLDAsMC0wLjEsMC0wLjFjMC0xLjQsMC40LTIuNywx''@;'; put 'put ''LjEtMy45SDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxMy4xQzI2LjQsMTIuNiwyNSwxMS43LDI0LDEwLjN6IE0xOCwzMC41Yy0xLjUsMC0yLjgtMS4yLTIuOC0yLjhTMTYuNSwyNSwxOCwyNXMyLjgsMS4yLDIuOCwyLjhTMTkuNSwzMC41LDE4LDMwLjV6TTIzLDIyLjZIMTNWMjFoMTBW''@;'; put 'put ''MjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIyNy44IiByPSIxLjIiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1LjkiIHI9IjUiLz5cbicpLFQuQ2xyU2hhcGVTdG9yYWdlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMs''@;'; put 'put ''Ni42OWgwYy0uMTgtMy40MS05LjQ3LTQuMzMtMTUtNC4zM1MzLDMuMjksMyw2Ljc4VjI5LjM3YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1Y2Ljc4czAsMCwwLDBTMzMsNi43LDMzLDYuNjlabS0yLDcuNTZjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwz''@;'; put 'put ''Ny40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzIsNDMuMzIsMCwwLDAsMTgsMTguN2M0LDAsOS45My0uNDgsMTMtMnY1LjE3Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMiw0My4zMiwwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40''@;'; put 'put ''OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdWNi44MkM1LjMsNiwxMCw0LjM2LDE4LDQuMzZjNy43NywwLDEyLjQ2LDEuNTMsMTMsMi4zNy0uNTIuODctNS4yMSwyLjM5LTEzLDIuMzlBMzcuNiwzNy42LDAsMCwxLDcsNy43NlY5Ljg1YTQzLjUz''@;'; put 'put ''LDQzLjUzLDAsMCwwLDExLDEuMjdjNCwwLDkuOTMtLjQ4LDEzLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xOS41MSw5LjA5LDE4LDkuMTFBMzcuNiwzNy42LDAsMCwx''@;'; put 'put ''LDcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjdoLjYxQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMjguODMs''@;'; put 'put ''MTUuNEEzOC4zNywzOC4zNywwLDAsMSwxOCwxNi43LDM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMyw0My4zMywwLDAsMCwxOCwxOC43YzQsMCw5LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1''@;'; put 'put ''YTQzLjMzLDQzLjMzLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIuNDVTNS4zLDMwLjIsNSwyOS4zN1Y2LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmMxLjUsMCwyLjg5LjA2LDQuMTUuMTZsMS4xLTEuOWMtMS44Ni0uMTgtMy43LS4y''@;'; put 'put ''Ni01LjI1LS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzdi0xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTcsNy43NlY5Ljg1YTQzLjUzLDQzLjUzLDAsMCwwLDExLDEuMjcsNTQuODIsNTQuODIsMCwwLDAsNi4yLS4zNiw3LjUsNy41LDAsMCwxLTEuMTMtMS44OGMtMS41LjE1LTMuMi4yNC01''@;'; put 'put ''LjA3LjI0QTM3LjYsMzcuNiwwLDAsMSw3LDcuNzZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDN2LjgyYy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUs''@;'; put 'put ''MzcuNDUsMCwwLDEsNywxNS4zNHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xN2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0u''@;'; put 'put ''NDgsMTMtMnY1LjFjLS4zNS44Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYsMTAsNC4zNiwxOCw0LjM2YzEuNywwLDMuMjUuMDgsNC42NC4yYTcuNDQsNy40NCwwLDAsMSwuNjctMS45NGMtMS44OC0uMTgtMy43NS0uMjYtNS4zMS0uMjYtNS41NywwLTE1''@;'; put 'put ''LC45My0xNSw0LjQzVjI5LjM3YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NFY4LjU5Yy0uNDMs''@;'; put 'put ''Mi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTFDMjYsMTAuNTMsMzIuNTIsOC43OSwzMyw2LjYxaDBDMzIuOCwzLjIsMjMuNTIsMi4yOCwxOCwyLjI4UzMsMy4yMSwzLDYuNzFWMjkuMjljMCwzLjQ5LDkuNDMs''@;'; put 'put ''NC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4wOVYxNi4zNGMtLjQzLDIuMi03LDMuOTQt''@;'; put 'put ''MTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE3LjkxLDIw''@;'; put 'put ''LjI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yYTM5LjQsMzkuNCwwLDAsMCwxMS42NiwxLjUxYzYuOSwwLDEyLjctMS4yNywxNC41MS0zSDIyLjIzYTMuNjcsMy42NywwLDAsMS0zLjU1LTIuNzVoLS43N0EzOS40LDM5LjQsMCwwLDEsNi4yNSwxMVY5YTM5LjQsMzkuNCwwLDAsMCwx''@;'; put 'put ''MS42NiwxLjUxaC44MkEzLjY0LDMuNjQsMCwwLDEsMTksOS43NWw0LjE3LTcuMjJjLTEuODUtLjE4LTMuNjgtLjI1LTUuMjEtLjI1LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYs''@;'; put 'put ''MjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0QzMyLjU3LDE4LjUzLDI2LDIwLjI4LDE3LjkxLDIwLjI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxbC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTcuOTEsMTguMjhjOC4wOCwwLDE0LjY2LTEuNzQsMTUuMDktMy45NHYtMS42YTcuNDcsNy40NywwLDAsMS03LjM4LS44''@;'; put 'put ''LDQ4LjMsNDguMywwLDAsMS03LjcxLjU5QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTEsNTEsNTEsMCwwLDAsNi0uMzQsNy40Niw3LjQ2LDAsMCwxLS41OS03LjY1Yy0xLjg3LS4xOC0zLjczLS4yNi01LjI4LS4yNi01LjU3LDAtMTUsLjkzLTE1''@;'; put 'put ''LDQuNDNWMjkuMjljMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjI0LjA5QzMyLjU3LDI2LjI4LDI2LDI4LDE3LjkxLDI4QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDI2LjUydi0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwyNkMyNiwyNiwzMi41NywyNC4yOCwzMywyMi4w''@;'; put 'put ''OVYxNi4zNGMtLjQzLDIuMi03LDMuOTQtMTUuMDksMy45NEEzOS40LDM5LjQsMCwwLDEsNi4yNSwxOC43N3YtMkEzOS40LDM5LjQsMCwwLDAsMTcuOTEsMTguMjhaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuJyksVC5DbHJTaGFwZUNsdXN0ZXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjM2LDhIMjcuNXYySDMxVjMwSDI3LjV2MkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+PGVs''@;'; put 'put ''bGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEEx''@;'; put 'put ''LjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMjQsMzBIMTJWNkgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxMEg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdWMzJIOC41VjMwSDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPjxl''@;'; put 'put ''bGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSw5Ljg5bC4zOS0uNjhIMTMuNXYxLjZoNS4xN0Ez''@;'; put 'put ''LjY1LDMuNjUsMCwwLDEsMTksOS44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMzBIMTJWNmg5LjI5bDEuMTUtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYz''@;'; put 'put ''MkgyNlYxNS40SDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAzMCAyNy41IDMwIDI3LjUgMzIgMzMgMzIgMzMgMTUuNCAzMSAxNS40IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwx''@;'; put 'put ''LjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMs''@;'; put 'put ''OS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPjxlbGxpcHNlIGN4PSIxOC4wMSIgY3k9IjI1Ljk5IiByeD0iMS44IiByeT0iMS43OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMy41IiB5PSI5LjIxIiB3aWR0aD0iOSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI0LDEwLjQ5VjMwSDEyVjZIMjIuNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy41Myw3LjUzLDAsMCwxLDI0LDEwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzBIMjcuNXYySDMzVjEyLjg3QTcuNDUsNy40NSwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zNiw4SDI3LjVWMzJIMzNWOS42N0ExLjY1LDEuNjUsMCwwLDAs''@;'; put 'put ''MzEuMzYsOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI0LjMyLDRIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWNS42OEExLjY4LDEuNjgsMCwwLDAsMjQuMzIsNFpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgy''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDkuNjdWMzJIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxl''@;'; put 'put ''cnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuNSIgeT0iMTUuNCIgd2lkdGg9IjUuNSIgaGVpZ2h0PSIxNi42IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMTMuNTZhMy42''@;'; put 'put ''OCwzLjY4LDAsMCwxLS4zMS0zSDEzVjloNi41NmwyLjg5LTVIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaTTE4LDI3Ljc5QTEuNzksMS43OSwwLDEsMSwxOS44MSwyNiwxLjgsMS44LDAsMCwxLDE4LDI3Ljc5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4w''@;'; put 'put ''NiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAs''@;'; put 'put ''MCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTEuNjhBMS42OCwxLjY4LDAsMCwwLDEwLDUuNjhWMzJIMjZWMTIuMzRBNy40''@;'; put 'put ''OSw3LjQ5LDAsMCwxLDIyLjUsNlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaTTIzLDEwLjZIMTNWOUgyM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ3LDcuNDcsMCwwLDEtMi41LS40NFYzMkgzM1YxMi44N0E3LjQ3LDcuNDcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9KDAsdi5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQg''@;'; put 'put ''MTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDQgMzAgOCAyNiA4IDI2IDEwIDMyIDEwIDMyIDQgMzAgNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0''@;'; put 'put ''IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUgMzAgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cG9s''@;'; put 'put ''eWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkg''@;'; put 'put ''MzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAgMTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgOCAxNSA4''@;'; put 'put ''IDE1IDEwIDIxIDEwIDIxIDQgMTkgNCAxOSA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMTkgMTUgMTkgMTUgMjEgMjEgMjEgMjEgMTUgMTkgMTUgMTkgMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDMwIDE1IDMwIDE1''@;'; put 'put ''IDMyIDIxIDMyIDIxIDI2IDE5IDI2IDE5IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''YmFkZ2UiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCA4IDQgOCA0IDEwIDEwIDEwIDEwIDQgOCA0IDggOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0i''@;'; put 'put ''OCAxOSA0IDE5IDQgMjEgMTAgMjEgMTAgMTUgOCAxNSA4IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAx''@;'; put 'put ''NSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMTUgMzAgMTkgMjYgMTkgMjYgMjEgMzIgMjEgMzIgMTUgMzAgMTUiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMzAgNCAzMCA0IDMyIDEwIDMyIDEwIDI2IDggMjYgOCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFs''@;'; put 'put ''ZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjMwIDMwIDI2IDMwIDI2IDMyIDMyIDMyIDMyIDI2IDMwIDI2IDMwIDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDhIMTV2Mmg0TDE5LDkuODksMjEsNi41''@;'; put 'put ''VjRIMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43''@;'; put 'put ''OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWln''@;'; put 'put ''aHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0''@;'; put 'put ''IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVp''@;'; put 'put ''Z2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9''@;'; put 'put ''IjQiIHk9IjQiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJl''@;'; put 'put ''Y3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMTBoNEwxOSw5Ljg5LDIxLDYuNVY0SDE1WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtOC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtOS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iNCIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIxNSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC04LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZUJ1aWxkaW5nPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS44''@;'; put 'put ''OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0gyMlY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxOS44OCwzWk0yMCwzMUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1i''@;'; put 'put ''YWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2''@;'; put 'put ''IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1LS1iYWRnZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzVjMxSDIz''@;'; put 'put ''djJIMzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMjAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdo''@;'; put 'put ''dD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9''@;'; put 'put ''IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''MS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjI3IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE2LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCww''@;'; put 'put ''LDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJWOC4yNGwyLTMuNDFBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjE1LjM4YTMuNjgsMy42OCwwLDAsMS0yLS43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xNy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDMxIDIzIDMxIDIzIDMzIDMzIDMzIDMzIDE1LjQgMzEgMTUuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE4''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTktLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw4SDIyVjMzSDMzVjEwQTIsMiwwLDAsMCwzMSw4Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBI''@;'; put 'put ''MjhWMjNoMlptMC01SDI4VjE4aDJabTAtNUgyOFYxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWNS4xMkEyLjEyLDIuMTIs''@;'; put 'put ''MCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgxMVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVWOGgy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDlWMzBoNnYzaDVWMTQuNjRhMy42NywzLjY3LDAsMCwxLTEtNC43NmwxLTEuNjVWNS4xMkEyLjEyLDIu''@;'; put 'put ''MTIsMCwwLDAsMTcuODgsM1pNOSwyNUg3VjIzSDlabTAtNUg3VjE4SDlabTAtNUg3VjEzSDlabTAtNUg3VjhIOVptNCwxNUgxMVYyM2gyWm0wLTVIMTFWMThoMlptMC01SDExVjEzaDJabTAtNUgxMVY4aDJabTQsMTVIMTVWMjNoMlptMC01SDE1VjE4aDJabTAtNUgxNVYxM2gyWm0wLTVIMTVW''@;'; put 'put ''OGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRsLS4yMywwVjMzSDMzVjE1LjRaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm00LDVIMjhWMjNoMlptMC01SDI4''@;'; put 'put ''VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDEx''@;'; put 'put ''TDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0''@;'; put 'put ''LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0w''@;'; put 'put ''LTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTVIMjhWMTMuMjJBNy41LDcuNSwwLDAsMSwyMi43OCw4SDIyVjMz''@;'; put 'put ''SDMzVjEyLjg3QTcuNDcsNy40NywwLDAsMSwzMCwxMy41Wk0yNiwyNUgyNFYyM2gyWm0wLTVIMjRWMThoMlptMC01SDI0VjEzaDJabTQsMTBIMjhWMjNoMlptMC01SDI4VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjN2Mmg4VjMxSDIzdjJIMzNWMTBBMiwyLDAsMCww''@;'; put 'put ''LDMxLDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2''@;'; put 'put ''VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0''@;'; put 'put ''aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9''@;'; put 'put ''IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE3Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTkiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIy''@;'; put 'put ''MyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIwIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVDUFU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjA4LDIzLjA3aC0xMXYxLjVIMjMuODNhLjc1Ljc1LDAsMCwwLC43''@;'; put 'put ''NS0uNzVWMTEuMzNoLTEuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwxOC4xNWEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWOC4xQTIuMSwyLjEsMCwwLDAs''@;'; put 'put ''MjcuOSw2SDI2LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAs''@;'; put 'put ''MS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMw''@;'; put 'put ''LDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNFpNMjgsMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjcuOWEuMS4xLDAsMCwxLC4xLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjA2LDI0LjU3SDIzLjgzYS43NS43NSwwLDAsMCwuNzUtLjc1VjExLjMzaC0xLjVWMjMuMDdoLTExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjEzLjVhNy40OSw3LjQ5LDAsMCwxLTItLjI4VjI3LjlhLjEuMSwwLDAsMS0uMS4xSDguMWEuMS4xLDAsMCwxLS4xLS4xVjguMUEuMS4xLDAsMCwxLDguMSw4SDIyLjc4YTcuNDksNy40OSww''@;'; put 'put ''LDAsMS0uMjgtMkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSww''@;'; put 'put ''LDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwx''@;'; put 'put ''LDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjE1LjRIMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhoMTJsMS4x''@;'; put 'put ''NS0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZI''@;'; put 'put ''NlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEu''@;'; put 'put ''NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1Ljc1LDAsMCwwLC43NS0uNzVWMTUuNGgtMS41djcuNjdoLTExWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMuNTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYx''@;'; put 'put ''NS40SDI1djguNDFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjE1LjRoLS43N0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4x''@;'; put 'put ''VjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMw''@;'; put 'put ''aDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTMuNWE3LjQ2LDcuNDYsMCwwLDEtNS0xLjkyVjIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgxLjQyQTcu''@;'; put 'put ''NDYsNy40NiwwLDAsMSwyMi41LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhh''@;'; put 'put ''LjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIu''@;'; put 'put ''MmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40''@;'; put 'put ''VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIu''@;'; put 'put ''MSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40''@;'; put 'put ''Wk0yNSwyMy44MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTFoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZU1lbW9yeT0oMCx2LmNsckljb25TVkcpKCc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQi''@;'; put 'put ''IGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjI0IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw3SDRBMiwyLDAsMCwwLDIsOXY0SDRWOUgzMnY0aDJWOUEyLDIsMCwwLDAsMzIsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMTksMTMuNTZBMy42NiwzLjY2LDAsMCwxLDE4LjU3LDEySDE2djhoNFYxNC42NEEzLjY3LDMuNjcsMCwwLDEsMTksMTMuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iMjQiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjQuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMTkuNTZsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOXY0''@;'; put 'put ''SDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0''@;'; put 'put ''PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMiIgd2lkdGg9IjQiIGhlaWdodD0iOCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMyLDE3VjI3SDE5djJIMzJhMiwyLDAsMCwwLDItMlYxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyQTcuNDYsNy40NiwwLDAsMSwyNS41MSwx''@;'; put 'put ''MkgyNHY4aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDlIMjMuMTNhNy40NSw3LjQ1LDAsMCwxLS41NS0ySDRBMiwyLDAsMCwwLDIsOXY0SDRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzQsMTNWOWEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN0gzMlYxM1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFptOCwwSDI0VjEyaDRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMTUuMDdIMjhWMjBIMjRWMTUuMDdIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDIwLDE0LjMxVjIwSDE2VjEyaDIuNjFBMy42OCwzLjY4LDAsMCwxLDE5LDkuNTVMMjAu''@;'; put 'put ''NTIsN0g0QTIsMiwwLDAsMCwyLDl2NEg0djRIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1SDE5VjI5SDMyYTIsMiwwLDAsMCwyLTJWMTdaTTEyLDIwSDhWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NS44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNi44QTEuMjgsMS4yOCwwLDAsMCwyNi44NS44WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE3VjEzLjIyYTcuMzMsNy4zMywwLDAsMS00LDBWMjBIMjRWMTJoMS41MWE3LjQ4LDcuNDgsMCwwLDEtMi45NC01SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJI''@;'; put 'put ''MTYuNjFWMjUuNTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0Wm04LDBIMTZWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcu''@;'; put 'put ''OTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMzIsNy4yNywzMiw3LjkxVjE4LjI0YzAsLjU0LTEuNDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQu''@;'; put 'put ''MDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUy''@;'; put 'put ''LTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDks''@;'; put 'put ''MTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2''@;'; put 'put ''LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEuNDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDE4LjI0VjcuOTFjMC0uNjUsMi4wOS0xLjg0LDUuNS0xLjg0UzE1LDcuMjcsMTUsNy45MVY5LjdhMTguNzUsMTguNzUsMCwwLDEsMi0uMlY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0''@;'; put 'put ''Ljc3LDIxLjY3LDcuOSwyMlYyMEM1LjQ2LDE5LjY4LDQsMTguNzgsNCwxOC4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuNjUsMTguNTJjLS44NSwxLTMuNDIsMi02LjY1''@;'; put 'put ''LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwxNC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEy''@;'; put 'put ''Ljc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOGwuNzUsMGEzLjY5LDMuNjksMCwwLDEtLjA4LTJsLS42NiwwYy00LjkzLDAtOC42NSwxLjg4LTgu''@;'; put 'put ''NjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuNGgtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0x''@;'; put 'put ''Ljc1LjYzLTMsMS42OC0zLDMuMTJWOS41bC4yNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjIuODRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJj''@;'; put 'put ''My4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNI''@;'; put 'put ''MzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQsNS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUu''@;'; put 'put ''NDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIs''@;'; put 'put ''NC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwxMC44NVptNi42NSw3LjY3Yy0uODUsMS0zLjQyLDItNi42NSwyQTE0LjQ5LDE0LjQ5LDAsMCwxLDE0LDIwdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYs''@;'; put 'put ''MTIuNzYsMCwwLDAsNi42NS0xLjU2djMuMTJjLS44NSwxLTMuNDIsMi02LjY1LDJhMTQuNDksMTQuNDksMCwwLDEtNC0uNTN2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2Mi4yOWMwLC45NS0yLjY1LDIuMzgtNi42NSwyLjM4cy02LjY1''@;'; put 'put ''LTEuNDMtNi42NS0yLjM4VjE1LjIzYzAtLjk1LDIuNjUtMi4zOCw2LjY1LTIuMzhzNi42NSwxLjQzLDYuNjUsMi4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDcuOTFjMC0u''@;'; put 'put ''MzMuNTUtLjgsMS41NC0xLjE4LDAtLjI0LDAtLjQ4LDAtLjczYTcuNTIsNy41MiwwLDAsMSwuMTQtMS40MUMyMC41NSw1LjE5LDE5LDYuMywxOSw3LjkxVjkuNWExOC43NSwxOC43NSwwLDAsMSwyLC4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2NWMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1di01LjlBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2LjUsNC4wOEMyMi43Nyw0LjA4LDE5LDUuNCwxOSw3LjkxVjkuNDhjNS4zLjI2LDksMi42LDksNS43NnY2LjdsLjA1LjA2YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWNy45MUMzNCw1LjQsMzAuMjMsNC4wOCwyNi41LDQuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAs''@;'; put 'put ''MCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEu''@;'; put 'put ''MTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMsMTAuODUsMTgsMTAuODVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQt''@;'; put 'put ''Ny41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4wOCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjM5LTIuN2wtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43''@;'; put 'put ''NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4yM1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1''@;'; put 'put ''LTEuMTEsOC42My0zLjExVjE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDQuOGMtMS43NS42My0zLDEuNjgtMywzLjEy''@;'; put 'put ''VjkuNDhsLjI3LDBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgyOHY2LjUzbC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDkuNDhWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIs''@;'; put 'put ''Ny45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJMOCwyMS45M3YtNi43QzgsMTIuMDgsMTEuNyw5Ljc0LDE3LDkuNDhaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1''@;'; put 'put ''Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4y''@;'; put 'put ''MSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45MywxMC44NSwxOCwx''@;'; put 'put ''MC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNTIsNy41MiwwLDAsMSwuMTQtMS40QzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS40OGExNS4zMywxNS4zMywwLDAs''@;'; put 'put ''MSw1LDFBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNDlBNy40Nyw3LjQ3LDAsMCwxLDI3LjM1LDEzYTQsNCwwLDAsMSwuNywyLjIzdjYu''@;'; put 'put ''N2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVYxMi4zM0E3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNDlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljk5IiBy''@;'; put 'put ''PSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxULkNsclNoYXBlUmVzb3VyY2VQb29sPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxLjczYTE0LDE0LDAsMCwx''@;'; put 'put ''LC4yMiwxLjZIMTcuNDlMOC4zLDI4LjA3QTE0LDE0LDAsMCwxLDIyLjA5LDQuNjJsMS0xLjc2QTE2LDE2LDAsMSwwLDM0LDE4YTE2LDE2LDAsMCwwLS4yMy0yLjYxWk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4w''@;'; put 'put ''NiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAs''@;'; put 'put ''MCwwLDE4LDJaTTQsMThhMTQsMTQsMCwwLDEsMjcuOTUtMUgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsNCwxOFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4yLDEzLjRhMTMuOTEsMTMuOTEsMCwwLDEsLjc1LDMuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuNjEsNC44YTcuNDMsNy40MywwLDAsMSwuNTgtMS45MiwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDku''@;'; put 'put ''OTNBNy40Myw3LjQzLDAsMCwxLDMxLjIsMTMuNFpNMTgsMzJhMTMuOTEsMTMuOTEsMCwwLDEtOC4xNi0yLjY1TDE4LjQzLDE5SDMxLjk1QTE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguNTcsMzAuOUExNiwxNiwwLDAsMCwzMy45NSwxOUgx''@;'; put 'put ''OC40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN0ExNiwxNiwwLDEsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45NSwxN2ExNS45MSwxNS45MSwwLDAsMC0uODQtNC4xOCw3''@;'; put 'put ''LjQ5LDcuNDksMCwwLDEtOS45Mi05Ljk0QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE2LDE2LDAsMCwwLS4xOC0xLjYxSDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDQuMDYtN0ExNiwxNiwwLDAsMCw3LDI5LjZMMTcuNDksMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVTaGllbGRDaGVjaz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYu''@;'; put 'put ''NjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUu''@;'; put 'put ''MDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQs''@;'; put 'put ''NDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuODgsMTYuODdhMSwxLDAsMCwwLTEuNDEsMS40MWw2LDZMMjYuNCwxMy43N0ExLDEsMCwwLDAsMjUsMTIuMzNsLTkuNDcsOS4x''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwz''@;'; put 'put ''LjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVptLTQuNTcsNi42NUwxNS41MSwyNC45LDkuMTksMTguNTdhMS40LDEuNCww''@;'; put 'put ''LDAsMSwyLTJMMTUuNTQsMjEsMjQuNzMsMTJhMS40LDEuNCwwLDEsMSwyLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVTaGllbGQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43''@;'; put 'put ''OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQs''@;'; put 'put ''MCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44''@;'; put 'put ''MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMwLDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDE1LjR2LjUzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3''@;'; put 'put ''LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTNjMSwuNjQsMi4yLDEuMjcsMy40MywxLjg5bDEtMS43NGE0MS4xLDQxLjEsMCwwLDEtMy44OS0yLjE4TDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0''@;'; put 'put ''Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41djIuNDNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4''@;'; put 'put ''LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0Ni4xOSw0Ni4xOSwwLDAsMCw0LjUxLDIuNDJjMC0uMSwwLS4xOSwwLS4yOWE3LjQ5LDcuNDksMCwwLDEsLjIzLTEuODMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0''@;'; put 'put ''My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMu''@;'; put 'put ''NjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40Myw0''@;'; put 'put ''YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUs''@;'; put 'put ''MTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40Nyww''@;'; put 'put ''LDAsMS03LjI3LTkuMzMsNDEuNjEsNDEuNjEsMCwwLDEtNC4xOS0yLjMzTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMu''@;'; put 'put ''MTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZVNoaWVsZFg9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUs''@;'; put 'put ''MCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1''@;'; put 'put ''VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMw''@;'; put 'put ''LDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjgxLDEwLjc5LDE4LDE1LjYxbC00LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxN2wtNC44MSw0LjgxYTEsMSwwLDEsMCwxLjQxLDEu''@;'; put 'put ''NDFMMTgsMTguNDNsNC44MSw0LjgxYTEsMSwwLDAsMCwxLjQxLTEuNDFMMTkuNDEsMTdsNC44MS00LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43''@;'; put 'put ''OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4x''@;'; put 'put ''MmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTI0LjUxLDIxLjU1YTEuNCwxLjQsMCwwLDEtMiwyTDE4LDE5bC00LjUzLDQuNTNhMS40MywxLjQzLDAsMCwxLTIsMCwxLjQsMS40LDAsMCwxLDAtMkwxNiwxN2wtNC41My00LjUzYTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE1bDQu''@;'; put 'put ''NTMtNC41M2ExLjQsMS40LDAsMCwxLDIsMkwyMCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZUltcG9ydD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxNC44N0w4LDEwLjg2VjE1aDJWMTMuNjFoNy42''@;'; put 'put ''MVY2SDI4VjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaTTE2LDEySDEwdi0uMzJMMTUuNyw2SDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4y''@;'; put 'put ''OGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQs''@;'; put 'put ''MjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI4LDE1LjRWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFoNy42''@;'; put 'put ''MVY2aDMuNjhsMS4xNS0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFs''@;'; put 'put ''ZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuOTQsMjYuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwxOSwyMmwtNS42OC01LjY4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTUuMiwyMUgzYTEsMSwwLDEsMCwwLDJIMTUuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMEg4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDEzLjYxaDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjE1aDJabTAtMS45MkwxNS43LDZIMTZ2NkgxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42''@;'; put 'put ''OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxNC44''@;'; put 'put ''N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhhMSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLDIxYTEsMSwwLDEsMCwwLDJIOFYyMVoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxNC44N0w4LDEwLjg2VjIxSDE1LjJsLTMuMjUtMy4yNWExLDEsMCwwLDEsMS40MS0xLjQxTDE5LDIybC01LjY4LDUuNjhh''@;'; put 'put ''MSwxLDAsMCwxLTEuNDEtMS40MUwxNS4yMywyM0g4djdhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy41LDcuNSwwLDAsMSwyMi41LDZaTTE2LDEySDEwdi0uMzJMMTUuNjksNkgxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVFeHBvcnQ9KDAsdi5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDI0djguMzhoMlY2YTIsMiwwLDAsMC0yLTJIMTAuODdMNCwxMC44N1YzMGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJINlptMC0xLjkyTDExLjY5LDZIMTJ2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcuNjFWNmg3LjY4bDEuMTUtMkgxMC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4w''@;'; put 'put ''NiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQx''@;'; put 'put ''TDMwLjE2LDIxSDE4YTEsMSwwLDAsMCwwLDJIMzAuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM0LDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMTIuMzRh''@;'; put 'put ''Ny41Myw3LjUzLDAsMCwxLTItMS44NXYzLjg5aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDEzLjYxaDcuNjFWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMC44N0w0''@;'; put 'put ''LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIg''@;'; put 'put ''cj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjZhMiwyLDAsMCwwLTItMkgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEu''@;'; put 'put ''NDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4zMiwxNi4zNWExLDEsMCwwLDAtMS40MSwxLjQxTDMxLjE2LDIx''@;'; put 'put ''SDI2djJoNS4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzUsMjJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjE1LjRIMjIuMjNB''@;'; put 'put ''My42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgxMC44N0w0LDEwLjg2VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMlYyM0gxOEExLDEsMCwwLDEsMTcsMjJaTTEyLDEySDZ2LS4zMkwxMS42OSw2SDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEu''@;'; put 'put ''NDEsMS40MUwzNSwyMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMjJhMSwxLDAsMCwxLDEtMWg4VjEyLjM0QTcuNDYsNy40NiwwLDAsMSwyMi43OCw0SDEwLjg3TDQsMTAuODZWMzBh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxULkNsclNoYXBlVXBsb2FkQ2xvdWQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEs''@;'; put 'put ''MC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCwwLDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMs''@;'; put 'put ''OC40MywwLDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAsMSwwLC44bC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAsMCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIuNTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAsMCwyMywyMC4xNGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4y''@;'; put 'put ''OCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUu''@;'; put 'put ''NCw4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDctLjQ1LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS43NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4''@;'; put 'put ''LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDIxdjJoNS4zOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUt''@;'; put 'put ''NSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCwwLDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4YTgsOCwwLDAsMCw0LjU0LTE0LjU2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy42LDE4LjM4QTcuNzEsNy43MSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40MywwLDAsMSw4LTUuNCw4Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwx''@;'; put 'put ''MC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNzQsOS43NCwwLDAsMCwxLjYsMTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42Niw3LjY2LDAsMCwxLDMuNiwxOC4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyks''@;'; put 'put ''VC5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5LjY1LDkuNjUsMCwwLDAsMTAuODksMjhhMywzLDAsMCwx''@;'; put 'put ''LDAtMkE3LjY1LDcuNjUsMCwwLDEsMTEsMTAuNzRsLjY3LDAsLjIzLS42M2E4LjQzLDguNDMsMCwwLDEsOC01LjQsOC4yNiw4LjI2LDAsMCwxLDguNDUsOCw3Ljc1LDcuNzUsMCwwLDEsMCwuOGwtLjA4LjcyLjY1LjNBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSwwLDJoMS4y''@;'; put 'put ''OGE4LDgsMCwwLDAsMy45My0xNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIuNTdB''@;'; put 'put ''MSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSww''@;'; put 'put ''LDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5Ljg3''@;'; put 'put ''LDQuNjlhOC44MSw4LjgxLDAsMCwxLDIsLjI1bDEtMS44YTEwLjgsMTAuOCwwLDAsMC0zLjA3LS40NSwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTgu''@;'; put 'put ''NDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi45LDE1LjRIMzAuMjFBNiw2LDAsMCwxLDI2LjM4LDI2SDI1LjA5YTMsMywwLDAsMSww''@;'; put 'put ''LDJoMS4yOEE4LDgsMCwwLDAsMzIuOSwxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42''@;'; put 'put ''OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjIuMjgsMjYuMDdhMSwxLDAsMCwwLS43MS4yOUwxOSwyOC45NFYxNi42OGExLDEsMCwxLDAtMiwwVjI4Ljk0bC0yLjU3LTIuNTdBMSwxLDAsMCwwLDEzLDI3Ljc4bDUsNSw1LTVhMSwxLDAsMCwwLS43MS0xLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4Ljc5LDguNzksMCwwLDEsMi42OC40Miw3LjQ1LDcuNDUsMCwwLDEsLjUtMS45NCwxMC43OSwxMC43OSwwLDAsMC0zLjE4LS40OCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSww''@;'; put 'put ''LDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzQTguNDMsOC40MywwLDAsMSwxOS44Nyw0LjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMzAuOTIsMTMuNDRhNy4xMyw3LjEzLDAsMCwxLTIuNjMtLjE0YzAsLjA4LDAsLjE1LDAsLjIzbC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCw0LjU0LTE0LjYxWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAg''@;'; put 'put ''ICAgICAnKSxULkNsclNoYXBlUGx1Z2luPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAs''@;'; put 'put ''MCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2Wm0yLjQxLDdBMywzLDAsMCwxLDMwLDI0SDI3djcuODNINFYy''@;'; put 'put ''NUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMsMCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoOFYxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEs''@;'; put 'put ''MzIuMjIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjgxLDE2SDI5di0uNkgyN1YxOGgyLjgxQTMuMTMsMy4xMywwLDAsMSwzMywyMC42OSwzLDMsMCwwLDEsMzIuMjIsMjMsMywzLDAsMCwxLDMwLDI0''@;'; put 'put ''SDI3djcuODNINFYyNUg1YTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDQuODEsMTVINFY4LjgzaDlWN2EzLDMsMCwwLDEsMS0yLjIyQTMsMywwLDAsMSwxNi4zMSw0LDMuMTMsMy4xMywwLDAsMSwxOSw3LjE5VjguODNoLjY2TDIxLDYuNTlBNS4xMiw1LjEyLDAsMCwwLDE2LjUx''@;'; put 'put ''LDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4x''@;'; put 'put ''NSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4''@;'; put 'put ''LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEs''@;'; put 'put ''MTZIMjlWMTMuNDNhNy40NSw3LjQ1LDAsMCwxLTItLjU1VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNo''@;'; put 'put ''OVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2g0LjA2YTcuNDQsNy40NCwwLDAsMS0uNTEtMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEz''@;'; put 'put ''LjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWOC44M2EyLDIsMCwwLDAtMi0ySDIxQTUuMTQsNS4xNCwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1''@;'; put 'put ''LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgy''@;'; put 'put ''OXYtLjZIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwy''@;'; put 'put ''M0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjlWMTMuNDNhNy41LDcuNSwwLDAsMS02LjQ1LTYuNTlIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4x''@;'; put 'put ''MywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAsMCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksVC5DbHJTaGFw''@;'; put 'put ''ZUZsb3BweT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuMzYsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjguNzhaTTI1LDMwSDExVjIySDI1Wm01LDBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2''@;'; put 'put ''NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJIMTJWNkgyNi41MUwzMCw5LjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAs''@;'; put 'put ''MCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0xLjY4bC0uNDMtLjNIMTJWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwz''@;'; put 'put ''MCwxMy41Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDI3VjIyYTIsMiwwLDAsMC0yLTJIMTFhMiwyLDAsMCwwLTIsMnY4SDZWNmg0djZhMiwyLDAsMCwwLDIsMmg3LjM1YTMuNTQsMy41NCwwLDAsMS0uNzctMkgxMlY2aDku''@;'; put 'put ''MjlsMS4xNS0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjUsMzBIMTFWMjJIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSww''@;'; put 'put ''LDAsMSwyNiwyMS41Wk0yNCwxNEgxMmEyLDIsMCwwLDEtMi0yVjZoMnY2SDI2QTIsMiwwLDAsMSwyNCwxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDYsNy40NiwwLDAsMS00LTEuMThBMiwyLDAs''@;'; put 'put ''MCwxLDI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjUuNTRhNy40NSw3LjQ1LDAsMCwxLTIuNzYtOEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUs''@;'; put 'put ''MCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42OSwzLjY5LDAsMCwxLDE5LjM1LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZoNi41OEEzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMi40NSw0SDZB''@;'; put 'put ''MiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNMjYsMzBIMTBWMjEuNUExLjUsMS41LDAsMCwxLDExLjUsMjBoMTNBMS41LDEuNSwwLDAsMSwyNiwyMS41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAnKSxULkNsclNoYXBlQ29tcHV0ZXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjYgMjIuODggOS42IDEwLjYgMjQuNCAxMC42IDI1Ljk4IDkgOCA5IDgg''@;'; put 'put ''MjIuODggOS42IDIyLjg4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYsN0gzMFYyM2gyVjYuNUExLjUsMS41LDAsMCwwLDMwLjUsNUg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4zNGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42VjI2''@;'; put 'put ''LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDI1djMuNEEyLjYsMi42LDAsMCwwLDMuNiwzMUgzMi4z''@;'; put 'put ''NGEyLjYsMi42LDAsMCwwLDIuNi0yLjZWMjVabTMyLDMuNGEuNi42LDAsMCwxLS42LjZIMy41NmEuNi42LDAsMCwxLS42LS42VjI2LjUzaDkuOTVhMS42NCwxLjY0LDAsMCwwLDEuNSwxaDcuMTNhMS42NCwxLjY0LDAsMCwwLDEuNS0xSDMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjYsMjIuODhWMTAuNmg5LjE0QTMuNjQsMy42NCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIOFYyMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDIwLjcxbDEuMTUtMkg1LjVBMS41LDEuNSwwLDAsMCw0LDYuNVYyM0g2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjMwIiB5PSIxNS40IiB3aWR0aD0iMiIgaGVpZ2h0PSI3LjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0''@;'; put 'put ''LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4wNy0xSDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZW''@;'; put 'put ''N0gyMi41N0E3LjUyLDcuNTIsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYyM2gyVjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMTMsOUg4VjIyLjg4SDkuNlYxMC42SDI0LjA4QTcuNDksNy40OSwwLDAsMSwyMy4xMyw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMjlWMjRoM1Y3LjU3QTEuNTQsMS41NCwwLDAsMCwzMC41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yMy44MSwyNmMtLjM1LjktLjk0LDEuNS0xLjYxLDEuNUgxMy43NGMtLjY4LDAtMS4yNi0uNi0xLjYxLTEuNUgxdjEuNzVBMi40NSwyLjQ1LDAsMCwwLDMuNiwzMEgzMi40QTIuNDUsMi40NSwwLDAsMCwzNSwyNy43NVYyNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI5IiB5PSIxNS40IiB3aWR0aD0iMyIgaGVpZ2h0PSI4LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik03LDEwSDE5TDE5LDkuODksMjEuMjksNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0xLjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDEwSDIzLjY2QTcuNDYsNy40NiwwLDAsMSwyMi41LDZINS41QTEuNTQsMS41NCwwLDAsMCw0LDcuNTdWMjRIN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJhNy4xNCw3LjE0LDAsMCwxLTMsLjJWMjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVEaXNwbGF5PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwx''@;'; put 'put ''LjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUsM1pNMzIsMjVINFY1SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''b2x5Z29uIHBvaW50cz0iNy43IDguNzYgMjguMTMgOC43NiAyOS45NCA3LjE2IDYuMSA3LjE2IDYuMSAyMyA3LjcgMjMgNy43IDguNzYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwz''@;'; put 'put ''LjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCww''@;'; put 'put ''LDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4x''@;'; put 'put ''NywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyNUg0VjVIMjEuODdMMjMsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTUu''@;'; put 'put ''MzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgMjMgNy43IDguNzYgMTkuNyA4Ljc2IDIwLjYyIDcuMTYgNi4xIDcuMTYgNi4xIDIzIDcuNyAyMyIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUy''@;'; put 'put ''VjI4LjEzSDIxLjI0VjI5LjVBNC4yLDQuMiwwLDAsMCwyMi4xNywzMkgxMy44M2E0LjIsNC4yLDAsMCwwLC45My0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwy''@;'; put 'put ''NiwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuMSwyM0g3LjdWOC43NkgyM2E3LjQ0LDcuNDQsMCwwLDEtLjQzLTEuNkg2LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyNUg0VjVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCww''@;'; put 'put ''LDAsMzQsMjUuNVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDkuOTRhMSwx''@;'; put 'put ''LDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwz''@;'; put 'put ''LjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjQuNUExLjUsMS41LDAsMCwwLDMyLjUsM1pNMzEsMjEuODNINVY3SDMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAs''@;'; put 'put ''MS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJIMjYuMDZhLjkyLjkyLDAsMCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMXY2LjQzSDVWN0gyMC43MUwyMywzSDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYx''@;'; put 'put ''LDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwx''@;'; put 'put ''My40M3Y4LjQxSDVWN0gyMi41N2E3LjI5LDcuMjksMCwwLDEsLjU1LTRIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDQsNy40NCwwLDAsMSwzMSwxMy40M1oiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQu''@;'; put 'put ''Q2xyU2hhcGVUZXJtaW5hbD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMlY5LjJINFpNNCwyOVYxMC44SDMyVjI5WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDE1''@;'; put 'put ''LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3IDI0LjExIDE2LjYgMTkuNyAxNi42IDE3Ljg5IDcgMTMuNDggNyAxNS42OCAxMy43OSAxOC44IDcgMjEuOTEgNyAy''@;'; put 'put ''NC4xMSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOUg0VjEwLjhIMTguNjhBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwx''@;'; put 'put ''LjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEu''@;'; put 'put ''MTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjIzIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQu''@;'; put 'put ''MTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMjlI''@;'; put 'put ''NFYxMC44SDI0LjI0YTcuNTEsNy41MSwwLDAsMS0xLTEuNkg0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwx''@;'; put 'put ''My4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNi44LDE1LjgxVjEzLjE3bDEwLDQuNTl2Mi4wOGwtMTAsNC41OVYyMS43OGw2LjUx''@;'; put 'put ''LTNaTTIzLjQsMjUuNEgxN1YyM2g2LjRaTTQsOS4yVjdIMzJWOS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bC40LS42OUg0VjdIMjAuNzFs''@;'; put 'put ''MS4xNS0ySDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTE2LjgsMTkuODNsLTEwLDQuNTlWMjEuNzhsNi41MS0zLTYuNTEtM1YxMy4xN2wxMCw0LjU5Wm02LjYsNS41N0gxN1YyM2g2LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44''@;'; put 'put ''NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNi43OC00LjNINFY3SDIyLjU3YTcuNTIsNy41MiwwLDAsMS0u''@;'; put 'put ''MDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYu''@;'; put 'put ''Niw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVDb2RlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0x''@;'; put 'put ''LjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwz''@;'; put 'put ''LjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsOS44M2EuOS45LDAsMCwwLTEuMDkuNjZMMTUu''@;'; put 'put ''NDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhsMy40NC0xMy44MUEuOS45LDAsMCwwLDE5Ljk0LDkuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwx''@;'; put 'put ''Mi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTYsMTEuNjIsMTUuNDEsMjQuMjlhLjkuOSwwLDAsMCwuNjYsMS4wOWwuMjIsMGEuOS45LDAsMCwwLC44Ny0uNjhMMTkuNzMsMTQuNGEzLjU5LDMuNTksMCwwLDEtMS4xNi0yLjc5WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTItMS4zOEgyNC42NGwzLjI0LDIuMjEtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCww''@;'; put 'put ''LTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCww''@;'; put 'put ''LDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0xLjY1TDguMTMsMTcuNjEsMTMuNDUsMTRBMSwxLDAsMCwwLDEzLjcxLDEyLjU5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0t''@;'; put 'put ''YmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjIxLDE2Ljc4bC02LjUzLTQuNDVBMSwxLDAsMSwwLDIyLjU1LDE0bDUuMzIsMy42My01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwzLjQ0LTEzLjgxQS45''@;'; put 'put ''LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZUFwcGxpY2F0aW9uPSgwLHYuY2xySWNvblNWRykoJzxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMyIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsNkgzMnY0LjJINFpNNCwzMFYxMS44SDMyVjMw''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRabTAsNi4ySDRWNkgzMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lk''@;'; put 'put ''dGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAn''@;'; put 'put ''KSxULkNsclNoYXBlQmF0dGVyeT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4xMiw0SDIzVjMuNThBMS41OCwxLjU4LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44''@;'; put 'put ''OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWNS44OEExLjg4LDEuODgsMCwwLDAsMjUuMTIsNFpNMjUsMzJIMTFWNmg0VjRoNlY2aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOC41OSwxMS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5YTEsMSwwLDAsMCwxLjc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDE1LjRWMzJIMTFWNmg0VjRoNlY2aC4yOGwxLjY0LTIuODVBMS41NywxLjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMu''@;'; put 'put ''NThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0x''@;'; put 'put ''LjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjksMTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDEx''@;'; put 'put ''LjU4VjMySDExVjZoNFY0aDZWNkgyMi41QTcuNDcsNy40NywwLDAsMSwyMywzLjM4LDEuNTcsMS41NywwLDAsMCwyMS40MiwySDE0LjU4QTEuNTgsMS41OCwwLDAsMCwxMywzLjU4VjRIMTAuODhBMS44OCwxLjg4LDAsMCwwLDksNS44OFYzMi4xMkExLjg4LDEuODgsMCwwLDAsMTAuODgsMzRI''@;'; put 'put ''MjUuMTJBMS44OCwxLjg4LDAsMCwwLDI3LDMyLjEyVjEyLjg3QTcuNSw3LjUsMCwwLDEsMjUsMTEuNThaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNFYyLjYyQS42LjYsMCww''@;'; put 'put ''LDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NHYtMjhBMS4wOSwxLjA5LDAsMCwwLDI2LDRaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEy''@;'; put 'put ''LjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIyLjIzLDE1LjRBMy42NiwzLjY2LDAsMCwxLDIwLjU1LDE1bDIuNzYsNC43OUwxNi45LDE4LjdsMy4zNiw2LjczYTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmwuMDkuMTVBMy42NiwzLjY2''@;'; put 'put ''LDAsMCwxLDE5LDkuODlMMjIuNDUsNEgyMlYyLjYyQS42LjYsMCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTIyLjUsNmE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjJWMi42MkEuNi42LDAsMCwwLDIxLjQyLDJIMTQuNThhLjYuNiwwLDAsMC0uNTguNjJWNEgxMEExLjA5LDEuMDksMCwwLDAsOSw1LjA3djI4QTEsMSwwLDAsMCwxMCwzNEgyNmExLDEsMCwwLDAsMS0uOTRWMTIuODdB''@;'; put 'put ''Ny41LDcuNSwwLDAsMSwyMi41LDZaTTIwLjI2LDI1LjQ0YTEuMiwxLjIsMCwwLDEtMi4xNSwxLjA3TDEyLjY1LDE1LjU2bDYsMS0yLjI5LTRhMS4yLDEuMiwwLDEsMSwyLjA4LTEuMmw0LjgzLDguMzdMMTYuOSwxOC43WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVNb2JpbGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTEsNkgyNVYyNEgxMVpt''@;'; put 'put ''MCwyNFYyNkgyNXY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTksMzBIMTdWMjhoMlptLTgtNFY2SDI1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgJyksVC5DbHJTaGFwZVRhYmxldD0oMCx2LmNsckljb25TVkcpKCc8cmVjdCB4PSIxNyIgeT0iMjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEy''@;'; put 'put ''LDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwzMCwyWm0wLDJWMjYuMzhINlY0Wk02LDMyVjI4SDMwdjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwySDZBMiwyLDAsMCwwLDQsNFYzMmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMzAsMlpNMTksMzJIMTdWMzBoMlpNNiwyOFY0SDMwVjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksVC5DbHJTaGFw''@;'; put 'put ''ZU5ldHdvcmtHbG9iZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJh''@;'; put 'put ''MTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWm0wLDJhMTIsMTIsMCwwLDEsOC40NCwzLjQ4YzAsLjMzLDAsLjY2LDAsMUExOC41MSwxOC41MSwwLDAsMCwxNCw4LjUzYTIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBj''@;'; put 'put ''LS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS45MiwxMS45MiwwLDAsMSwxNy43NSw0Wm0tMyw1Ljg3QTE3LDE3LDAsMCwxLDI1LjkyLDEwYTE2LjksMTYuOSwwLDAsMS0zLjExLDcsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42''@;'; put 'put ''M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3Wm0tNC0zLjZjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2''@;'; put 'put ''LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4y''@;'; put 'put ''Ny44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQz''@;'; put 'put ''LDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4Wm02LjUxLTguOWEyLjMzLDIuMzMsMCwwLDAtLjMzLTEuMTksMTguNCwxOC40LDAsMCwwLDMuMzktNy4zN3EuNzUuMzUsMS40''@;'; put 'put ''OC43OGExMiwxMiwwLDAsMSwuNDIsOC4yQTE2LDE2LDAsMCwxLDI0LjI3LDE5LjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRoLTJjMCwuMiwwLC40LDAsLjYxYTEyLDEyLDAsMCwxLS41MywzLjUyLDE2LDE2LDAsMCwxLTUtLjQxLDIuMzMsMi4z''@;'; put 'put ''MywwLDAsMC0uMzMtMS4xOSwxOC44NywxOC44NywwLDAsMCwxLjYyLTIuNTJIMjMuODNhMTcuMjksMTcuMjksMCwwLDEtMSwxLjU0LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43''@;'; put 'put ''N0ExNy4wOCwxNy4wOCwwLDAsMSwxOS41Niw5bC44Ny0xLjUxYTE4LjU5LDE4LjU5LDAsMCwwLTYuMzksMSwyLjMzLDIuMzMsMCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuODgsMTEuODgsMCwwLDEsMjIsNC43OUwy''@;'; put 'put ''MywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMzMS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFptLTIxLTkuMTNjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCww''@;'; put 'put ''LTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCwwLDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODks''@;'; put 'put ''Mi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcuNTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45''@;'; put 'put ''MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEyLjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCww''@;'; put 'put ''LDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTVsLS41MSwwYTExLjkxLDExLjkxLDAsMCwxLS4yNSw2LDE2LDE2LDAs''@;'; put 'put ''MCwxLTUtLjQxLDIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC41OSwxOC41OSwwLDAsMCwyLjc4LTUuMTgsNy40OSw3LjQ5LDAsMCwxLTEuMzEtLjgyLDE3LDE3LDAsMCwxLTIuNjEsNSwyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQu''@;'; put 'put ''OTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzcsMTcsMTcsMCwwLDEsOC41My0uNjIsNy40Myw3LjQzLDAsMCwxLS41Ni0xLjU5QTE4LjU2LDE4LjU2LDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0u''@;'; put 'put ''MTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjkyLDAsMCwxLDIyLjU3LDVhNy40NSw3LjQ1LDAsMCwxLC41My0yQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00Wk0xMC43Niw2LjI3YzAsLjIxLjA2LjQzLjEuNjQuMDkuNDQu''@;'; put 'put ''MjEuODcuMzMsMS4zYTIuMjgsMi4yOCwwLDAsMC0xLjEsMi4yNUExOC4zMiwxOC4zMiwwLDAsMCw1LjksMTQuMjIsMTIsMTIsMCwwLDEsMTAuNzYsNi4yN1ptMCwxNS43MUEyLjM0LDIuMzQsMCwwLDAsOS4yLDIzLjc0bC0uNjQsMEExMS45NCwxMS45NCwwLDAsMSw1LjgsMTYuOTJsLjExLS4x''@;'; put 'put ''OWExNi45LDE2LjksMCwwLDEsNC44MS00Ljg5LDIuMzEsMi4zMSwwLDAsMCwyLjI4LjYzLDE3LjUzLDE3LjUzLDAsMCwwLDUuMzUsNS42NWMuNDEuMjcuODMuNTIsMS4yNS43NkEyLjMyLDIuMzIsMCwwLDAsMTkuNzgsMjBhMTYuOTQsMTYuOTQsMCwwLDEtNi4yLDMuMTFBMi4zNCwyLjM0LDAs''@;'; put 'put ''MCwwLDEwLjc2LDIyWm03LDZhMTEuOTIsMTEuOTIsMCwwLDEtNS44MS0xLjUxbC4yOC0uMDZhMi4zNCwyLjM0LDAsMCwwLDEuNTctMS43OSwxOC40MywxOC40MywwLDAsMCw3LTMuNSwyLjI5LDIuMjksMCwwLDAsMy0uNjIsMTcuNDEsMTcuNDEsMCwwLDAsNC4zMi41NmwuNTMsMEExMiwxMiww''@;'; put 'put ''LDAsMSwxNy43NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEsLjYzYTIuMjgsMi4yOCwwLDAsMSwyLjU4LS41NywxNi45LDE2LjksMCwwLDAsMy4xMS03QTE3LDE3LDAsMCwwLDE0LjcyLDkuODdaIiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJhMTQsMTQsMCwwLDAtMTQsMTRjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDEsMCwxNy43NSwyWk0yOC4xLDIxLjA5YTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjks''@;'; put 'put ''Mi4yOSwwLDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMzLDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIs''@;'; put 'put ''Mi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43''@;'; put 'put ''NSwxOC43NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCww''@;'; put 'put ''LDEsMTQsOC41M2ExOC41MSwxOC41MSwwLDAsMSwxMi4xMS0uMDdjMC0uMzIsMC0uNjUsMC0xaDBhMTIsMTIsMCwwLDEsMi42MiwzLjg1aDBxLS43My0uNDMtMS40OC0uNzhhMTguNCwxOC40LDAsMCwxLTMuMzksNy4zNywyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwu''@;'; put 'put ''NDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjczLDE1LjRIMjUuNTZhMTguODcsMTguODcsMCwwLDEtMS42MiwyLjUyLDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAs''@;'; put 'put ''MS0uNjEsMS41M0gyOC4xYTE3LjQxLDE3LjQxLDAsMCwxLTQuMzItLjU2LDIuMjksMi4yOSwwLDAsMS0zLC42MiwxOC40MywxOC40MywwLDAsMS03LDMuNSwyLjM0LDIuMzQsMCwwLDEtMS41NywxLjc5bC0uMjkuMDZhMTEuOTMsMTEuOTMsMCwwLDEtMy4zOS0yLjhsLjY2LDBhMi4zMywyLjMz''@;'; put 'put ''LDAsMCwxLDQuMzctLjU4QTE2Ljk0LDE2Ljk0LDAsMCwwLDE5Ljc4LDIwYTIuMzIsMi4zMiwwLDAsMS0uMTgtMS4xN2MtLjQyLS4yNC0uODQtLjQ5LTEuMjUtLjc2QTE3LjUzLDE3LjUzLDAsMCwxLDEzLDEyLjQ3YTIuMzEsMi4zMSwwLDAsMS0yLjI4LS42MywyNy4zMSwyNy4zMSwwLDAsMC01''@;'; put 'put ''LDQuNzRjMC0uMiwwLS4zOSwwLS41N2ExMiwxMiwwLDAsMSwuMTQtMS43MywxOC43NSwxOC43NSwwLDAsMSw0LjItMy44LDIuMjgsMi4yOCwwLDAsMSwxLjEtMi4yNWMtLjEyLS40My0uMjQtLjg2LS4zMy0xLjMsMC0uMTQsMC0uMjktLjExLS42NGExMiwxMiwwLDAsMSwxLjM3LS44N2MuMS41''@;'; put 'put ''OS4xNC45LjIxLDEuMjFzLjIuODUuMzIsMS4yN2wuMjUsMEEyLjMzLDIuMzMsMCwwLDEsMTQsOC41M2ExOC41OSwxOC41OSwwLDAsMSw2LjM5LTFMMjMsM0ExNCwxNCwwLDAsMCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBBMTQsMTQsMCwwLDAsMzEuNzYsMTZDMzEuNzYsMTUu''@;'; put 'put ''OCwzMS43NCwxNS42LDMxLjczLDE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI2LDExLjY0YTE2LDE2LDAsMCwwLDQuOTMsNS4yM2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4y''@;'; put 'put ''OCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE3LjI5LDE3LjI5LDAsMCwwLDEtMS41NGgtMS42QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlhMTcuMDgsMTcuMDgsMCwwLDAtNC44NC44OCwyLjI1LDIuMjUsMCwwLDEtLjQ3LDEuNzdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwx''@;'; put 'put ''LjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNSwxMy4zNWE3LjU0LDcuNTQsMCwwLDEtMS41LjE1LDcuNDYsNy40NiwwLDAsMS0zLjI4LS43NiwxOC41OSwxOC41OSwwLDAsMS0yLjc4LDUuMTgsMi4zMywyLjMzLDAsMCwx''@;'; put 'put ''LC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4w''@;'; put 'put ''NmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdh''@;'; put 'put ''Mi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMyww''@;'; put 'put ''LS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjU2LDE4LjU2LDAsMCwxLDguNjUtLjg3LDcuNDUsNy40NSwwLDAsMSwuNDEtNC41OUExNCwxNCwwLDAs''@;'; put 'put ''MCwzLjc1LDE2YzAsLjQ1LDAsLjg5LjA3LDEuMzNsMCwwaDBhMTQsMTQsMCwxLDAsMjcuNjgtNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNzIsOS44N2EyLjI1LDIuMjUsMCwwLDEt''@;'; put 'put ''LjQ3LDEuNzcsMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0uNTcsMTcsMTcsMCwwLDAsMi42MS01LDcuNTIsNy41MiwwLDAsMS0yLjE2LTIuNjdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLFQuQ2xy''@;'; put 'put ''U2hhcGVOZXR3b3JrU2V0dGluZ3M9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjhjLjU0LS4xNCwxLjA2LS4zMiwxLjU5LS41MXYtMS4yYTIuNzcsMi43NywwLDAsMSwuMDYtLjUxLDE3LjQ0LDE3LjQ0LDAsMCwxLTEuODIu''@;'; put 'put ''NjIsMi4yOCwyLjI4LDAsMCwwLTQuMjguNjNsLS40NSwwaDBhMTEuOTMsMTEuOTMsMCwwLDEtMi44OC03LjI3LDE3Ljc5LDE3Ljc5LDAsMCwxLDUtNC43MiwyLjIzLDIuMjMsMCwwLDAsMi4yOS41NiwxOC41MiwxOC41MiwwLDAsMCw0LjQ3LDUsMi43NCwyLjc0LDAsMCwxLC4yMS0uMjRsLjk1''@;'; put 'put ''LS45MWExNi45LDE2LjksMCwwLDEtNC4zNS00Ljc5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIyQTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNGwuMTksMGgxLjU2YTE5LDE5LDAsMCwwLC45MS0yLjcyYy40My4xOS44''@;'; put 'put ''NC40MSwxLjI2LjY0YTExLjk0LDExLjk0LDAsMCwxLDEsNC4wOWwwLDBBMi43NywyLjc3LDAsMCwxLDMwLDE2YTIuNzMsMi43MywwLDAsMSwuNjguMUExNCwxNCwwLDEsMCwxNi4wOCwzMWEyLjcyLDIuNzIsMCwwLDEsMC0yQTExLjkzLDExLjkzLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1''@;'; put 'put ''YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCwwLDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAs''@;'; put 'put ''MCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwxOS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI1LDIxLjE5QTMuODQsMy44NCwwLDEsMCwyOC44OCwyNSwzLjg3LDMuODcsMCwwLDAsMjUsMjEuMTlabTAsNi4wOEEyLjI0LDIuMjQsMCwxLDEsMjcuMjgsMjUsMi4yNiwyLjI2LDAsMCwxLDI1LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQuMTcsMjQuMTRhMS4xNCwxLjE0LDAsMCwwLS43LTEuMWwtMS41Ni0uNDZxLS4xMS0uMzItLjI2LS42M2wuNzItMS4zM2ExLjE0LDEuMTQsMCwwLDAtLjIxLTEuMzRsLTEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAtMS4zNC0uMmwtMS4zNC43''@;'; put 'put ''MWE3LjI4LDcuMjgsMCwwLDAtLjY3LS4yOEwyNywxNi43MWExLjE0LDEuMTQsMCwwLDAtMS4wOC0uNzZIMjRhMS4xNCwxLjE0LDAsMCwwLTEuMDguOGwtLjQ0LDEuNDNhNy4zMiw3LjMyLDAsMCwwLS42OC4yOGwtMS4zMi0uN2ExLjE0LDEuMTQsMCwwLDAtMS4zMy4xOWwtMS4zNywxLjMxYTEu''@;'; put 'put ''MTQsMS4xNCwwLDAsMC0uMjEsMS4zNWwuNywxLjI4cS0uMTYuMzItLjI4LjY1TDE2LjU4LDIzYTEuMTMsMS4xMywwLDAsMC0uODEsMS4wOXYxLjg3QTEuMTQsMS4xNCwwLDAsMCwxNi41OSwyN2wxLjQ3LjQ0cS4xMi4zMi4yOC42NGwtLjcyLDEuMzVhMS4xNCwxLjE0LDAsMCwwLC4yLDEuMzVs''@;'; put 'put ''MS4zNCwxLjMyYTEuMTQsMS4xNCwwLDAsMCwxLjM0LjJsMS4zNy0uNzJxLjMxLjE0LjYzLjI2bC40NCwxLjQ3YTEuMTQsMS4xNCwwLDAsMCwxLjA5LjhoMS45QTEuMTQsMS4xNCwwLDAsMCwyNywzMy4zMWwuNDQtMS40N2MuMjEtLjA3LjQyLS4xNi42Mi0uMjVsMS4zOC43M2ExLjE0LDEuMTQs''@;'; put 'put ''MCwwLDAsMS4zMy0uMmwxLjM0LTEuMzJhMS4xNCwxLjE0LDAsMCwwLC4yMS0xLjM1bC0uNzMtMS4zNHEuMTQtLjMuMjUtLjZsMS41LS40NEExLjEzLDEuMTMsMCwwLDAsMzQuMTcsMjZabS0xLjYsMS41LTIsLjU4LS4xMi40MkE1LjU1LDUuNTUsMCwwLDEsMzAsMjcuNzNsLS4yMS4zOCwxLDEu''@;'; put 'put ''NzktLjg2Ljg0LTEuODItMS0uMzcuMmE1Ljc4LDUuNzgsMCwwLDEtMS4xMi40NmwtLjQyLjEyLS41OSwySDI0LjM4bC0uNTktMS45NS0uNDItLjEyQTUuODYsNS44NiwwLDAsMSwyMi4yNCwzMGwtLjM3LS4yLTEuODEsMS0uODYtLjg1LDEtMS44Mi0uMjItLjM4YTUuNiw1LjYsMCwwLDEtLjQ5''@;'; put 'put ''LTEuMTNsLS4xMy0uNDEtMS45NS0uNThWMjQuNDJsMS45NC0uNTguMTItLjQxYTUuNTMsNS41MywwLDAsMSwuNDktMS4xNGwuMjItLjM5LTEtMS43My44Ny0uODQsMS43Ny45NC4zOC0uMjFhNS44LDUuOCwwLDAsMSwxLjE3LS40OWwuNDEtLjEyLjU5LTEuOTFoMS4yM2wuNTgsMS45LjQxLjEy''@;'; put 'put ''YTUuNzksNS43OSwwLDAsMSwxLjE2LjQ4bC4zOC4yMSwxLjgtLjk1Ljg2Ljg1LTEsMS43Ny4yMS4zOGE1LjUzLDUuNTMsMCwwLDEsLjQ3LDEuMTNsLjEyLjQyLDEuOTMuNTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zNCwyMy42MywzMiwyM2E3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjksMTcuODZhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMWE3LDcsMCwwLDAtMS40My0uNjFsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4z''@;'; put 'put ''Ny4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxTDIwLDE3LjhhLjM3LjM3LDAsMCwwLS40NC4wN0wxOCwxOS4zMWEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LDcsMCwwLDAsMTguMzUsMjNsLTIsLjYxYS4zNy4zNywwLDAsMC0uMjYuMzV2MmEuMzcuMzcsMCww''@;'; put 'put ''LDAsLjI2LjM1bDIsLjYxQTcsNywwLDAsMCwxOSwyOC4zN2wtMSwxLjlhLjM3LjM3LDAsMCwwLC4wNy40NGwxLjQ1LDEuNDVhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCwwLDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwu''@;'; put 'put ''MzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhBNyw3LDAsMCwwLDMxLjk1LDI3bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjI0QS4zNy4zNywwLDAsMCwzNCwy''@;'; put 'put ''My42M1ptLTguODMsNC43MkEzLjMzLDMuMzMsMCwxLDEsMjguNTMsMjUsMy4zMywzLjMzLDAsMCwxLDI1LjE5LDI4LjM0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44NSwyNy40NGEyLjI5LDIuMjksMCwwLDAs''@;'; put 'put ''MS43NC0xLjY4LDE5LjcxLDE5LjcxLDAsMCwwLDEuODktLjZWMjMuOTVhMiwyLDAsMCwxLC4wOS0uNTUsMTcuNDIsMTcuNDIsMCwwLDEtMi4xNy43OCwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0yLjg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEs''@;'; put 'put ''NS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNjUsNS4wOSwxLjkzLDEuOTMsMCwwLDEsLjIzLS4zMmwuODktLjg3YTE2Ljg5LDE2Ljg5LDAsMCwxLTQuNDktNC44OSwyLjI3LDIuMjcsMCwwLDAsLjM1LTEuMmMwLS4wNywwLS4xNCwwLS4yMkExNy42''@;'; put 'put ''OSwxNy42OSwwLDAsMSwyNSwxMWExNy40OSwxNy40OSwwLDAsMS0xLjE1LDMuMzUsMS45NCwxLjk0LDAsMCwxLC4zMS0uMDVoMS40NWExOS4wNiwxOS4wNiwwLDAsMCwuOS0yLjdjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTMsMTEuOTMsMCwwLDEsMSw0LjYzbDEtLjUxYTIsMiwwLDAsMSwu''@;'; put 'put ''OTItLjIzaC4wOEExNCwxNCwwLDEsMCwxNi40NCwzMWExLjk0LDEuOTQsMCwwLDEsLjEyLTEuNDZsLjI4LS41M2gtLjA3QTExLjkxLDExLjkxLDAsMCwxLDEwLjg1LDI3LjQ0Wk0xNi43Niw1YTEyLDEyLDAsMCwxLDguNjEsMy42NmMwLC4yNSwwLC41MS0uMDguNzZhMTkuMjEsMTkuMjEsMCww''@;'; put 'put ''LDAtMTIuMzUuMTFBMi4yOCwyLjI4LDAsMCwwLDExLjc0LDlhMTcsMTcsMCwwLDEtLjYxLTIuNTNBMTEuOTIsMTEuOTIsMCwwLDEsMTYuNzYsNVpNOS42Niw3LjM2YTE4LjcyLDE4LjcyLDAsMCwwLC40OSwxLjkyLDIuMjgsMi4yOCwwLDAsMC0xLjA3LDEuOTNzMCwuMSwwLC4xNUExOS40NSwx''@;'; put 'put ''OS40NSwwLDAsMCw1LDE0Ljc5LDEyLDEyLDAsMCwxLDkuNjYsNy4zNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMC43''@;'; put 'put ''OCw4LjQxQTIsMiwwLDAsMCwyOC44Nyw3SDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1pNMzIsMjdINFYxOS4wNkw3LjEzLDlIMjgu''@;'; put 'put ''ODdMMzIsMTkuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTcuMTEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9''@;'; put 'put ''IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjYuMjMiIHk9IjE4IiB3aWR0aD0iMjMuNjkiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMywxNS40SDMwLjg2TDMyLDE5LjA2''@;'; put 'put ''VjI3SDRWMTkuMDZMNy4xMyw5SDE5LjU2bDEuMTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjcuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyLjEyIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1i''@;'; put 'put ''YWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjIuMSIgeT0iMjIi''@;'; put 'put ''IHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjcuMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MSwxOC40N2wtMS42NS01LjMyYTcuNDksNy40OSwwLDAsMS0yLC4zM0wzMiwxOS4wNlYyN0g0VjE5LjA2TDcuMTMsOWgxNmE3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCww''@;'; put 'put ''LS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAs''@;'; put 'put ''NS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFW''@;'; put 'put ''MjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMC43MSw3SDcuMTNBMiwyLDAs''@;'; put 'put ''MCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFW''@;'; put 'put ''MjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIu''@;'; put 'put ''MjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMi4yNiwxMy4xNUE3LjQ5LDcuNDksMCwwLDEsMjIuNTcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNmEyLDIsMCwwLDAtLjA5LS41OVpNOC45MiwyNUg3''@;'; put 'put ''LjEyVjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMEgyMi4xVjIyaDEuOFptNSwwSDI3LjFWMjJoMS44Wk0zMSwxOS40SDVWMThIMzFaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlUm91dGVyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwx''@;'; put 'put ''NC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQxTDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEsMSwwLDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAtMkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS4zOCwxNS40SDI4LjU0TDMwLjE1LDE3SDIyLjQ2YTEsMSwwLDEsMCwwLDJoNy42OWwtMi43MSwyLjY5YTEsMSwwLDAsMCwxLjQxLDEuNDJMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC44N2wxLjE1LTEuMTYtLjEtLjE1QTMuNjgsMy42OCwwLDAsMSwxOSwxMFYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEsOC4zMmExLDEsMCwxLDAtMS40''@;'; put 'put ''MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTQuODdsNS4xMS01LjE0''@;'; put 'put ''YTEsMSwwLDEsMC0xLjQyLTEuNDFMMTksMTFWMy4zM2ExLDEsMCwwLDAtMiwwVjExTDE0LjMxLDguMzJhMSwxLDAsMSwwLTEuNDIsMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEsMCwwLDAsMiwwVjI1bDIuNjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljg1LDE5aDcuNjlhMSwxLDAsMCwwLDAtMkg1Ljg1bDIuNzEtMi42OWExLDEsMCwxLDAtMS40MS0xLjQyTDIsMThsNS4xNCw1LjExYTEsMSwwLDEsMCwxLjQxLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMTgsMS42N2ExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwxLjY3Wk0xMy44Niw5LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1''@;'; put 'put ''LjE1bC00LjE0LTQuMUEuOC44LDAsMCwxLDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcuNjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEw''@;'; put 'put ''LjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiwwVjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44''@;'; put 'put ''LDAsMSwxLTEuMTItMS4xNGwyLjItMi4xNUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwxLDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44''@;'; put 'put ''MiwxNS4zOUgyOC42OEwzMSwxNy42N2wtNC4xOSw0LjA5YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44LjgsMCwwLDEsMC0xLjZoNi4yN2wtMS41LTEuNDdIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTMtMS41MUwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDEsMSwxNSw5''@;'; put 'put ''LjkybDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2NC40OUEzLjY1LDMuNjUsMCwwLDEsMTksOS44OWw0LjIyLTcuMzFBMTYsMTYsMCwxLDAsMzQsMTcuNjcsMTYsMTYsMCwwLDAsMzMuODIsMTUuMzlabS0yMy41LDYuMzVhLjguOCwwLDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQu''@;'; put 'put ''MDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUs''@;'; put 'put ''MjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwy''@;'; put 'put ''MS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4yMiwxMi43NkE3LjQ5LDcuNDksMCwwLDEsMjMuMzIsMi42YTE2LDE2LDAsMSwwLDkuOSwxMC4xN1pNMTMuODYsOS45MmEuOC44LDAsMCwxLDEuMTMsMGwyLjIxLDIuMTlWNS45M2EuOC44LDAsMCwxLDEuNiwwdjYuMThMMjEs''@;'; put 'put ''OS45MmEuOC44LDAsMSwxLDEuMTMsMS4xNEwxOCwxNS4xNWwtNC4xNC00LjFBLjguOCwwLDAsMSwxMy44Niw5LjkyWk0xMC4zMiwyMS43NGEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAs''@;'; put 'put ''MS42SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2EuOC44LDAsMCwxLTEuMTMsMEwxOC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAs''@;'; put 'put ''MCwxLDIyLjE0LDI1LjQxWm00LjY3LTMuNjZhLjguOCwwLDEsMS0xLjEyLTEuMTRsMi4yLTIuMTVIMjEuNjNhLjguOCwwLDAsMSwwLTEuNmg2LjI3bC0yLjItMi4xNGEuOC44LDAsMSwxLDEuMTItMS4xNEwzMSwxNy42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVWTT0oMCx2LmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMTEsNUgyNVY4aDJWNWEyLDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTBIMTd2Mmg4djZoMlYxMmgz''@;'; put 'put ''VjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLDVIMjEuODdMMjMsM0gxMUEyLDIsMCwwLDAsOSw1djYuODVoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjE1LjQiIHdpZHRoPSIxLjk5IiBoZWlnaHQ9IjIuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNFYyNkgy''@;'; put 'put ''MlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjE1LjRaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsMTB2MmgxLjU3QTMuNjcsMy42NywwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLDVIMjIuNTdhNy40NSw3LjQ1LDAsMCwxLC41NS0ySDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVoMFYyNkgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjhoOGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuNDksNy40''@;'; put 'put ''OSwwLDAsMSwzMCwxMy41Wk02LDMxVjE3SDIwdjlIMTZWMjBIMTR2NmEyLDIsMCwwLDAsMiwyaDR2M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMmg4djZoMlYxMi44N0E3''@;'; put 'put ''LjUyLDcuNTIsMCwwLDEsMjMuNjYsMTBIMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDI3VjVhMiwyLDAsMCwwLTItMkgxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxNy4xOWEyLDIsMCwwLDAtMiwydjEuNEgyMEEzLjYsMy42LDAsMCwxLDIzLjYsMTd2OEgyMlYxN2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEyQTIsMiwwLDAsMCwzMCwxMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42aDIuNzJMMjMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4xOSwxMGEyLDIs''@;'; put 'put ''MCwwLDAtMiwydjEuNEgxOUEzLjY4LDMuNjgsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjIxLDE1LjRBMy41NSwzLjU1LDAsMCwxLDIzLjYsMTd2OEgyMlYx''@;'; put 'put ''N2EyLDIsMCwwLDAtMi0ySDZhMiwyLDAsMCwwLTIsMlYzMWEyLDIsMCwwLDAsMiwySDIwYTIsMiwwLDAsMCwyLTJWMjkuNkgxNy4xOWEzLjYsMy42LDAsMCwxLTMuNi0zLjZWMjBoMS42djZhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNTksMTJhMy42LDMuNiwwLDAsMSwzLjYtMy42SDIyLjlBNy40NSw3LjQ1LDAsMCwxLDIz''@;'; put 'put ''LjEzLDNIMTFBMiwyLDAsMCwwLDksNXY4LjRoNC41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OSw3LjQ5LDAsMCwxLDIzLjY2LDEwSDE3LjE5YTIsMiwwLDAsMC0y''@;'; put 'put ''LDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlVk1XQXBwPSgwLHYuY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIg''@;'; put 'put ''MjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggMTQgNiAxNCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMCA0IDIwIDggMjIgOCAyMiA2IDMwIDYgMzAgMTQgMjggMTQgMjggMTYgMzIgMTYgMzIgNCAyMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIx''@;'; put 'put ''MSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjI4IDIyIDMwIDIyIDMwIDMwIDIyIDMwIDIyIDI4IDIwIDI4IDIwIDMyIDMyIDMyIDMyIDIwIDI4IDIwIDI4IDIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRo''@;'; put 'put ''PSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmwwLS4xVjE3aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRl''@;'; put 'put ''ZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjIuNDUgNCAyMCA0IDIwIDggMjAuMTQgOCAyMi40NSA0IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIx''@;'; put 'put ''NS40IiB3aWR0aD0iNCIgaGVpZ2h0PSIwLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC05LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29u''@;'; put 'put ''IHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50''@;'; put 'put ''cz0iMTQgMzAgNiAzMCA2IDIyIDggMjIgOCAyMCA0IDIwIDQgMzIgMTYgMzIgMTYgMjggMTQgMjggMTQgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAxNCA2IDE0''@;'; put 'put ''IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDZoLjVhNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLC4yOC0ySDIwVjhoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjE0SDI4djJoNFYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNSwxMS41OGE3LjUzLDcuNTMsMCwwLDEtLjU4LS41OEgxOXY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlQ2VydGlmaWNh''@;'; put 'put ''dGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhINFY4SDMybDAsOC41NmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxVjhBMiwyLDAsMCwwLDMyLDZaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2''@;'; put 'put ''IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQt''@;'; put 'put ''MTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0i''@;'; put 'put ''MS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjIzIiB3aWR0aD0iMTAiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYs''@;'; put 'put ''Ni4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIN3YxLjZIMTkuMDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMydjEuMTZhOC40MSw4''@;'; put 'put ''LjQxLDAsMCwxLDIsMS44MXYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMC4xNGwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTls''@;'; put 'put ''LjU3LS43LjkzLTEuMTRMMjAuNDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9Ijci''@;'; put 'put ''IHk9IjEyIiB3aWR0aD0iMTciIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI3IiB5PSIxNiIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAu''@;'; put 'put ''NjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJ2My4zNGE4LjQxLDgu''@;'; put 'put ''NDEsMCwwLDEsMiwxLjgxdi02QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LDI4VjhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0y''@;'; put 'put ''SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0TDIwLjQxLDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1''@;'; put 'put ''IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDMwSDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMzJhMiwyLDAsMCwxLDIsMlYxOC4zN2E4LjM0''@;'; put 'put ''LDguMzQsMCwwLDAtMTMuNDksOS43OWwtLjkzLDEuMTRaTTcsMTJ2MS42SDI0VjEyWm0wLDUuNkgxOFYxNkg3Wm0wLDdIMTdWMjNIN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuODMsMjMuNTlhNi4zNyw2LjM3''@;'; put 'put ''LDAsMSwwLTEwLjc3LDQuNTlsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdBNi4zNCw2LjM0LDAsMCwwLDMzLjgzLDIzLjU5Wm0tMTAuNzQsMGE0LjM3LDQuMzcsMCwxLDEsNC4zNyw0LjMxQTQuMzUs''@;'; put 'put ''NC4zNSwwLDAsMSwyMy4xLDIzLjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2''@;'; put 'put ''LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCwwLDAsMzMuODMsMjMuNTlabS0xMC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjkuMjVhOC4zNiw4LjM2LDAsMCwxLDQuNzUsM3YtM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMTkuMDcsMTMuNkg3VjEySDE4LjU3QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRBOC4zNCw4LjM0LDAsMCwxLDI1LjY2LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAs''@;'; put 'put ''MCwxLDE5LjA3LDEzLjZaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjcuNDYsMTcuMjNhNi4zNiw2LjM2LDAsMCwwLTQuNCwxMWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN2E2LjM2LDYuMzYsMCwwLDAtNC40LTExWm0wLDEwLjY4YTQuMzEsNC4z''@;'; put 'put ''MSwwLDEsMSw0LjM3LTQuMzFBNC4zNSw0LjM1LDAsMCwxLDI3LjQ2LDI3LjkxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkg0QTIsMiww''@;'; put 'put ''LDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMzQsMTguMzd2LTZBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTE3LDI0LjZIN1YyM0gxN1ptMS03SDdWMTZIMThabTYtNEg3VjEySDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksVC5DbHJT''@;'; put 'put ''aGFwZUFyY2hpdmU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwxOEg2VjE0aDRhMywzLDAsMCwxLS42OC0xLjg3czAtLjA5LDAt''@;'; put 'put ''LjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNBMywzLDAsMCwxLDI2LDE0aDR2NEgyMmwtMiwySDMyVjEz''@;'; put 'put ''LjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00''@;'; put 'put ''LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjQxLDIwLjYsMTgsMjJsLTEuNDEtMS40TDE2LDIwSDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjIwSDIwWk0yMiwyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNhMywzLDAsMCwx''@;'; put 'put ''LS44OCwyLjEyTDIyLDE4SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yLDE0LjI1YTMsMywwLDAsMS0uODgtMi4xMnMwLS4wOSwwLS4xM0g1LjVBMS41LDEu''@;'; put 'put ''NSwwLDAsMCw0LDEzLjVWMThIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE5LjE4bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTEuNDFsLTQsMy45NVYzYTEsMSwwLDEsMC0yLDB2MTIuNGwtNC0zLjk1YTEs''@;'; put 'put ''MSwwLDAsMC0xLjQxLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlVW5hcmNoaXZlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkg3VjIySDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjIySDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQsMjRhMSwxLDAsMCwwLDEsMWg2YTEsMSwwLDAsMCwwLTJIMTVBMSwxLDAsMCwwLDE0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMThINlYxNGg5VjEySDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNS43OEEzLDMsMCwwLDEsMTUsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0zMC41LDEySDIxdjJoOXY0SDIxYTMsMywwLDAsMS0uNzgsMkgzMlYxMy41QTEuNSwxLjUsMCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDkuNTUsMTcsNS42''@;'; put 'put ''VjE4YTEsMSwwLDEsMCwyLDBWNS42bDQsMy45NWExLDEsMCwxLDAsMS40MS0xLjQyTDE4LDEuNzgsMTEuNjEsOC4xM0ExLDEsMCwwLDAsMTMsOS41NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxYTMs''@;'; put 'put ''MywwLDAsMS0yLjIyLTFINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjAuMjFBMywzLDAsMCwxLDE4LDIxWm00LDNhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwwLDEsMC0yaDZBMSwxLDAsMCwxLDIyLDI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMkg1LjVBMS41LDEuNSwwLDAsMCw0LDEzLjVWMThIMTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2NkgzMlYxMy41QTEuNSwxLjUs''@;'; put 'put ''MCwwLDAsMzAuNSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43OCwxMS42MSw4LjEzQTEs''@;'; put 'put ''MSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZUNvbm5lY3Q9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDI4LjIzQTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxNC4xNWE2LjI1LDYu''@;'; put 'put ''MjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMjJhNi4yMiw2LjIyLDAsMCwwLDYuMjItNUgzNFpNMTcuMDgsMjJIMTQuMTVhNC4xNyw0LjE3LDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00aDIuOTRaTTIyLDIySDE5VjE0aDNhNC4xNyw0''@;'; put 'put ''LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjIsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiww''@;'; put 'put ''LDAsMCw2LjIyLDVIMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjIzLDE3QTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxOVYyNGgzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLTVIMzRWMTdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlRGlzY29ubmVjdD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTcsNkE2LjIxLDYuMjEsMCwwLDAsNiwxMUgyLjEzdjJINmE2LjIzLDYuMjMsMCwwLDAsNi4yMSw1SDE3VjZaTTE1LjEsMTZI''@;'; put 'put ''MTIuMTdhNC4yLDQuMiwwLDAsMS00LjMxLTQsNC4xNyw0LjE3LDAsMCwxLDQuMzEtNEgxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTIsMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgx''@;'; put 'put ''OXYySDE0YTEsMSwwLDEsMCwwLDJoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNzZabS0xMCw1SDIxVjIwaDIuOTRhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjMuOTQsMjhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiw2YTYuMjEsNi4yMSwwLDAsMC02LjIxLDVIMnYySDUuODNBNi4yMyw2LjIzLDAsMCwwLDEyLDE4SDE3VjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc5LDIzSDMwLjE0YTYuMjUsNi4yNSwwLDAsMC02LjIxLTVIMTl2MkgxNGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAs''@;'; put 'put ''Ni4yMi01aDMuNjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlTGluaz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNiwyNC4zMmwtMi40NiwyLjQ0YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwx''@;'; put 'put ''LDAtNS41NWw0LjY5LTQuNjVhNCw0LDAsMCwxLDUuNjIsMCwzLjg2LDMuODYsMCwwLDEsMSwxLjcxQTIsMiwwLDAsMCwyMS4xLDE4bDEuMjktMS4yOGE1Ljg5LDUuODksMCwwLDAtMS4xNS0xLjYyLDYsNiwwLDAsMC04LjQ0LDBMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2''@;'; put 'put ''LDAsMCwwLDguNDQsMGwzLjY1LTMuNjJjLS4xNywwLS4zMywwLS41LDBBOCw4LDAsMCwxLDE3LjYsMjQuMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42MSw3LjgyYTYsNiwwLDAsMC04LjQ0LDBsLTMu''@;'; put 'put ''NjUsMy42MmMuMTcsMCwuMzMsMCwuNDksMGgwYTgsOCwwLDAsMSwyLjEuMjhsMi40Ni0yLjQ0YTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC42OSw0LjY1YTQsNCwwLDAsMS01LjYyLDAsMy44NiwzLjg2LDAsMCwxLTEtMS43MSwyLDIsMCwwLDAtLjI4LjIzbC0x''@;'; put 'put ''LjI5LDEuMjhhNS44OSw1Ljg5LDAsMCwwLDEuMTUsMS42Miw2LDYsMCwwLDAsOC40NCwwbDQuNjktNC42NWE1LjkyLDUuOTIsMCwwLDAsMC04LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVVbmxpbms9KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUsNSwzLjU5LDYuNDFsOSw5TDguMSwxOS43OWE1LjkxLDUuOTEsMCwwLDAsMCw4LjM5LDYsNiwwLDAsMCw4LjQ0LDBMMjEsMjMuNzhsOC42Myw4LjYzTDMxLDMxWk0xNS4xMywyNi43NmE0LDQsMCwwLDEtNS42MiwwLDMuOTIsMy45MiwwLDAsMSww''@;'; put 'put ''LTUuNTVMMTQsMTYuNzlsNS41OCw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTMsOS4yMmE0LDQsMCwwLDEsNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLDUuNTVsLTQuNzksNC43NkwyMy43OCwy''@;'; put 'put ''MWw0Ljc5LTQuNzZhNS45Miw1LjkyLDAsMCwwLDAtOC4zOSw2LDYsMCwwLDAtOC40NCwwbC00Ljc2LDQuNzRMMTYuNzgsMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksVC5DbHJTaGFwZUNsb3VkTmV0d29yaz0oMCx2LmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAuNzEsMTUuMTh2LTFBMTEuMjgsMTEuMjgsMCwwLDAsMTkuNTYsMi44M2gtLjExYTExLjI4LDExLjI4LDAsMCwwLTExLDguOTMsNy40Nyw3LjQ3LDAsMCwwLDAsMTQuOTRIMjkuMTNhNS44Niw1Ljg2LDAsMCwwLDEuNTgtMTEuNTJaTTI5LjEzLDI0LjdIOC40''@;'; put 'put ''NmE1LjQ3LDUuNDcsMCwxLDEsMC0xMC45NGgxLjY5bC4xMS0uODdhOS4yNyw5LjI3LDAsMCwxLDE4LjQ1LDEuM3YxLjI4YzAsLjA5LDAsLjE4LDAsLjI3bC0uMDcsMS4xNS45NC4xMWEzLjg2LDMuODYsMCwwLDEtLjQzLDcuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41OCwzMS4xOEgxOC44NXYtMi40aC0ydjIuNEg2LjA4YTEsMSwwLDAsMCwwLDJoMjMuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLFQu''@;'; put 'put ''Q2xyU2hhcGVDbG91ZFNjYWxlPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjMyLDExLjExSDcuODRMOCwxMC4yNEE3LjE5LDcuMTksMCwwLDEsMTUuMDcsNGguMDdhNy4xNSw3LjE1LDAsMCwxLDQuNzEsMS44MywxMS4xLDExLjEsMCwwLDEsMy4wOS42NEE5LjE4LDkuMTgsMCwwLDAs''@;'; put 'put ''MTUuMTYsMmgtLjA5QTkuMiw5LjIsMCwwLDAsNi4xMyw5LjExLDYuMTUsNi4xNSwwLDAsMCwyLjMzLDE5Ljk1LDguMDksOC4wOSwwLDAsMSwzLDE3LjcxYTQuMTIsNC4xMiwwLDAsMS0uODEtMi40NEE0LjE2LDQuMTYsMCwwLDEsNi4zMiwxMS4xMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjQsMTYuOTFoMS41MkwxMiwxNmE3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjE3LDcuMTcsMCwwLDEsNS43LDIuOTIsMTEuMDUsMTEuMDUsMCwwLDEsMi43Mi43Nyw5LjIsOS4yLDAsMCwwLTgu''@;'; put 'put ''NC01LjY5aC0uMDlhOS4yLDkuMiwwLDAsMC04Ljk0LDcuMTIsNi4xNSw2LjE1LDAsMCwwLTMuNjQsMTEsOC4xMSw4LjExLDAsMCwxLC43OS0yLDQuMTQsNC4xNCwwLDAsMSwzLTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMi40MiwyNC40N3YtLjYyYTkuMTgsOS4xOCwwLDAsMC0xOC4xMy0yLjE2QTYuMTYsNi4xNiwwLDAsMCwxNC40OCwzNEgzMWE0Ljg4LDQuODgsMCwwLDAsMS40Ni05LjUzWk0zMSwzMkgxNC40OGE0LjE2LDQuMTYsMCwxLDEsMC04LjMySDE2bC4xMS0uODdhNy4xOSw3LjE5LDAs''@;'; put 'put ''MCwxLDcuMTItNi4yNWguMDdhNy4yMSw3LjIxLDAsMCwxLDcuMTIsNy4yNXYxYzAsLjA3LDAsLjEzLDAsLjJsLS4wNywxLjExLjk0LjExQTIuODgsMi44OCwwLDAsMSwzMSwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAnKSxULkNs''@;'; put 'put ''clNoYXBlQ2xvdWRUcmFmZmljPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwyMC44MmEuODguODgsMCwwLDAtLjg4LS44OEgyMC43NWwxLjEtMS4xQS44OC44OCwwLDAsMCwyMC42LDE3LjZsLTMuMjEsMy4yMkwyMC42LDI0YS44OC44OCwwLDEsMCwxLjI1LTEuMjRMMjAuNzYs''@;'; put 'put ''MjEuN2g0LjlBLjg4Ljg4LDAsMCwwLDI2LjU0LDIwLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjcsMjEuN2EuODguODgsMCwxLDAsMC0xLjc2aC0uNThhLjg4Ljg4LDAsMSwwLDAsMS43NloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIxLDIwaC0uMDZhLjg1Ljg1LDAsMCwwLS44NS44OC45MS45MSwwLDAsMCwuOTEuODguODguODgsMCwxLDAsMC0xLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuNTksMTFhLjg4Ljg4LDAsMCwwLTEuMjUsMS4yNGwxLjEsMS4xSDI3LjUzYS44OC44OCwwLDEsMCwwLDEuNzZoNC45bC0xLjA5LDEuMDlhLjg4Ljg4LDAsMCwwLDEuMjUsMS4yNGwzLjIxLTMuMjJaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC41LDE1LjA3YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuOSwxNC4yN2EuODUuODUsMCwwLDAtLjg1LS44OEgyMWEuODguODgsMCwxLDAsMCwxLjc2QS45MS45MSwwLDAsMCwyMS45LDE0LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzAuMzYsMjMuNjVjMCwuMTMsMCwuMjYsMCwuMzlhMy43NywzLjc3LDAsMCwxLTMuNjIsMy44OUg3LjI4YTUuMzIsNS4zMiwwLDAsMS01LjEzLTUuNDhBNS4zMiw1LjMyLDAsMCwxLDcuMjgsMTdIOC45MUw5LDE2LjEyYTguOTIsOC45MiwwLDAsMSw4LjYyLThoLjA4YTgu''@;'; put 'put ''NDksOC40OSwwLDAsMSw2LjU2LDMuMjloMi4zN2ExMC41NSwxMC41NSwwLDAsMC04LjkxLTUuMjVoLS4xMUExMC44MiwxMC44MiwwLDAsMCw3LjIyLDE1YTcuMjgsNy4yOCwwLDAsMC03LDcuNDMsNy4yNyw3LjI3LDAsMCwwLDcuMDgsNy40M0gyNi43N0E1LjcyLDUuNzIsMCwwLDAsMzIuMzUs''@;'; put 'put ''MjRhMy43NywzLjc3LDAsMCwwLDAtLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVEZXBsb3k9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgZD0iTTExLjU0LDEwLjczbC05LDUuMTdhMSwxLDAsMCwwLS41Ljg3djExYTEsMSwwLDAsMCwuNS44N2w5LDUuMTVhMSwxLDAsMCwwLDEsMGw5LTUuMTVhMSwxLDAsMCwwLC41LS44N3YtMTFhMSwxLDAsMCwwLS41LS44N2wtOS01LjE3QTEsMSwwLDAsMCwxMS41NCwxMC43M1pN''@;'; put 'put ''MTEsMzEuMDhsLTctNFYxOC40NGw3LDRaTTEyLDIxLDQuODEsMTYuODcsMTIsMTIuNzhsNy4yMSw0LjEyWm04LDYuMDktNyw0VjIyLjQ0bDctNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAs''@;'; put 'put ''MCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTIuNDYsMTAuNzNhMSwx''@;'; put 'put ''LDAsMCwwLTEsMGwtOC42OCw1TDEyLDIxbDkuMTktNS4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDI3LjczYTEsMSwwLDAsMCwuNS44N0wxMSwzMy40NnYtMTFMMiwxNy4yOFoiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xMywzMy40Nmw4LjUtNC44NmExLDEsMCwwLDAsLjUtLjg3VjE3LjI5bC05LDUuMTVaIi8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVIZWxpeD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODgsMTMuMDdhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUuNzNhLjkuOSwwLDEsMSwxLDEuNTJMOS4zNywxMi45MkEuOS45LDAsMCwxLDguODgsMTMuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTEzLjI1LDE1LjExYS45LjksMCwwLDEtLjQ5LTEuNjZMMTgsMTAuMDhhLjkuOSwwLDEsMSwxLDEuNTJMMTMuNzQsMTVBLjkuOSwwLDAsMSwxMy4yNSwxNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTkuNzIsMzAuMjNhLjkuOSwwLDAsMS0uNDktMS42Nmw4LjkzLTUuNzNhLjkuOSwwLDAsMSwxLDEuNTJMMjAuMiwzMC4wOUEuOS45LDAsMCwxLDE5LjcyLDMwLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0xOC45MiwyNS45NGEuOS45LDAsMCwxLS40OS0xLjY2bDUuMjUtMy4zN2EuOS45LDAsMSwxLDEsMS41MUwxOS40LDI1LjhBLjg5Ljg5LDAsMCwxLDE4LjkyLDI1Ljk0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMS41Niw1LjY5YTMuNTksMy41OSwwLDAsMSwuMTUsMy41M0wxOC44MywxNWgyLjI1bDIuNDMtNC44N2E1LjYxLDUuNjEsMCwwLDAtNS04LjE0SDEzLjI2bC0xLDJoNi4yMkEzLjYxLDMuNjEsMCwwLDEsMjEuNTYsNS42OVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuOTEsMjAuNzhBNS41Myw1LjUzLDAsMCwwLDI3LjY2LDE3SDkuMzFhMy41NCwzLjU0LDAsMCwxLTMuNTYtMy42NywzLjYxLDMuNjEsMCwwLDEsLjQyLTEuNTRsNC4yNi04LjQ5YTEsMSww''@;'; put 'put ''LDEsMC0xLjc5LS45TDQuNCwxMC44NEE1LjY3LDUuNjcsMCwwLDAsNCwxNS4yMiw1LjUzLDUuNTMsMCwwLDAsOS4yOCwxOWg3LjZsLTMuNDQsNi44N2E1LjY0LDUuNjQsMCwwLDAsMS41LDYuOTJBNS4zOCw1LjM4LDAsMCwwLDE4LjQxLDM0aDUuMjVsMS0ySDE4LjQzYTMuNTgsMy41OCwwLDAs''@;'; put 'put ''MS0zLjIyLTUuMjFMMTkuMTEsMTloOC41NGEzLjQyLDMuNDIsMCwwLDEsMi4xNS43MSwzLjU3LDMuNTcsMCwwLDEsMSw0LjQzbC00LjEyLDguMjJhMSwxLDAsMSwwLDEuNzkuOWw0LjA2LTguMUE1LjY3LDUuNjcsMCwwLDAsMzIuOTEsMjAuNzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuMTYsMTkuNjNBNS41NSw1LjU1LDAsMCwwLDI3LjQyLDE3SDEwLjA2YTQuMzYsNC4zNiwwLDAsMS0zLjY3LTIsNC4wNyw0LjA3LDAsMCwxLS4xOS00LjEzbDMuNjItNywxLjQyLDEuNjMtMi43NCw1LjMsOC44NC01LjY2''@;'; put 'put ''YS45MS45MSwwLDAsMSwxLDEuNTNMNy44NCwxMy4zOGEyLjEzLDIuMTMsMCwwLDAsLjI0LjUyLDIuMjgsMi4yOCwwLDAsMCwxLjY1LDFMMTguMTEsOS41YS45MS45MSwwLDAsMSwxLDEuNTJMMTMsMTQuOTRIMjAuOGwyLjQxLTQuODJhNS42LDUuNiwwLDAsMC01LTguMTJIOWExLDEsMCwwLDAt''@;'; put 'put ''LjkuNTZMMy44OCwxMC44OWE1LjYsNS42LDAsMCwwLDUsOC4xMmg3LjY1bC0zLjQzLDYuODdhNS42LDUuNiwwLDAsMCw1LDguMTJoOS4yOGExLDEsMCwwLDAsLjkzLS42NWw0LjE0LTguMjRBNS41OCw1LjU4LDAsMCwwLDMyLjE2LDE5LjYzWk0xNy43NSwyNS41N0EuOTEuOTEsMCwwLDEsMTgs''@;'; put 'put ''MjQuMzFsNi0zLjg4QS45MS45MSwwLDEsMSwyNSwyMmwtNiwzLjg4YS45MS45MSwwLDAsMS0xLjI2LS4yN1pNMjksMjQuMzRsLTksNS43OGEuOTEuOTEsMCwxLDEtMS0xLjUzbDktNS43OGEuOTEuOTEsMCwxLDEsMSwxLjUzWiIvPlxuICAgICAgICAnKSxULkNsclNoYXBlRmxhc2s9KDAsdi5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDI3LjI4LDIzLDE0Ljg0VjRoMWExLDEsMCwwLDAsMC0ySDEyYTEsMSwwLDAsMCwwLDJoMVYxNC44NEw0LjUxLDI3LjM2QTQuMjksNC4yOSwwLDAsMCw1LDMyLjgsNC4zOCw0LjM4LDAsMCwwLDguMTUsMzRIMjhhNC4yNCw0LjI0LDAsMCwwLDMu''@;'; put 'put ''NDItNi43MlpNMjkuODUsMzFhMi42MiwyLjYyLDAsMCwxLTIsMUg4YTIuMiwyLjIsMCwwLDEtMi4wNi0xLjQxLDIuNjgsMi42OCwwLDAsMSwuMjktMi4xN2wzLTQuNDQsMTQsMC0xLjMxLTJIMTAuNTdMMTUsMTUuNDZWNGg2VjE1LjQ2bDguODQsMTMuMDVBMi4yMywyLjIzLDAsMCwxLDI5Ljg1''@;'; put 'put ''LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDksMjcuNCwyMywxNC45NFY0aDFhMSwxLDAsMCwwLDAtMkgxMi4wOGExLDEsMCwwLDAsMCwySDEzVjE0Ljk0TDQuNTgsMjcuMzFhNC4zMSw0LjMxLDAs''@;'; put 'put ''MCwwLS43OCwzQTQuMjMsNC4yMywwLDAsMCw4LDM0SDI3Ljg2QTQuMzYsNC4zNiwwLDAsMCwzMSwzMi44LDQuMjMsNC4yMywwLDAsMCwzMS40OSwyNy40Wk0xNSwxNS40OVY0aDZWMTUuNDlMMjYuMTUsMjNIOS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+''@;'; put 'put ''XG4gICAgICAgICcpLFQuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42OCwxNC44MWE2Ljc2LDYuNzYsMCwxLDEsNi43Ni02Ljc1QTYuNzcsNi43NywwLDAsMSwxNC42OCwxNC44MVptMC0xMS41MWE0Ljc2LDQuNzYsMCwxLDAsNC43Niw0Ljc2''@;'; put 'put ''QTQuNzYsNC43NiwwLDAsMCwxNC42OCwzLjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40MiwzMS42OEEyLjE0LDIuMTQsMCwwLDEsMTUuOCwzMEg0VjI0LjIyYTE0LjgxLDE0LjgxLDAsMCwxLDExLjA5''@;'; put 'put ''LTQuNjhsLjcyLDBhMi4yLDIuMiwwLDAsMSwuNjItMS44NWwuMTItLjExYy0uNDcsMC0xLS4wNi0xLjQ2LS4wNkExNi40NywxNi40NywwLDAsMCwyLjIsMjMuMjZhMSwxLDAsMCwwLS4yLjZWMzBhMiwyLDAsMCwwLDIsMkgxNi43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODcsMTYuMjlhLjM3LjM3LDAsMCwxLC4xNSwwLC40Mi40MiwwLDAsMC0uMTUsMFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwy''@;'; put 'put ''My4zMmwtMi0uNjFhNy4yMSw3LjIxLDAsMCwwLS41OC0xLjQxbDEtMS44NkEuMzguMzgsMCwwLDAsMzIsMTlsLTEuNDUtMS40NWEuMzYuMzYsMCwwLDAtLjQ0LS4wN2wtMS44NCwxYTcuMTUsNy4xNSwwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM2LjM2LDAsMCwwLS4zNi0uMjRIMjMuODJhLjM2''@;'; put 'put ''LjM2LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNmwtMS44Mi0xYS4zNS4zNSwwLDAsMC0uNDMuMDdMMTcuNjksMTlhLjM4LjM4LDAsMCwwLS4wNi40NGwxLDEuODJBNi43Nyw2Ljc3LDAsMCwwLDE4LDIyLjY5bC0yLC42YS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNUEuMzUu''@;'; put 'put ''MzUsMCwwLDAsMTYsMjZsMiwuNjFhNyw3LDAsMCwwLC42LDEuNDFsLTEsMS45MWEuMzYuMzYsMCwwLDAsLjA2LjQzbDEuNDUsMS40NWEuMzguMzgsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA5LDcuMDksMCwwLDAsMS40LjU3bC42LDJhLjM4LjM4LDAsMCwwLC4zNS4yNmgyLjA1YS4zNy4zNyww''@;'; put 'put ''LDAsMCwuMzUtLjI2bC42MS0yLjA1YTYuOTIsNi45MiwwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM2LjM2LDAsMCwwLC40My0uMDdMMzIsMzAuNEEuMzUuMzUsMCwwLDAsMzIsMzBsLTEtMS44OGE3LDcsMCwwLDAsLjU4LTEuMzlsMi0uNjFhLjM2LjM2LDAsMCwwLC4yNi0uMzVWMjMuNjdBLjM2''@;'; put 'put ''LjM2LDAsMCwwLDMzLjY4LDIzLjMyWk0yNC44NSwyOGEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjMzQTMuMzQsMy4zNCwwLDAsMSwyNC44NSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTQuNjciIGN5''@;'; put 'put ''PSI4LjMiIHI9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTYuNDQsMzEuODJhMi4xNSwyLjE1LDAsMCwxLS4zOC0yLjU1bC41My0xLTEuMDktLjMzQTIuMTQsMi4xNCwwLDAsMSwxNCwyNS44NFYyMy43OWEyLjE2''@;'; put 'put ''LDIuMTYsMCwwLDEsMS41My0yLjA3bDEuMDktLjMzLS41Mi0xYTIuMTcsMi4xNywwLDAsMSwuMzUtMi41MiwxOC45MiwxOC45MiwwLDAsMC0yLjMyLS4xNkExNS41OCwxNS41OCwwLDAsMCwyLDIzLjA3djcuNzVhMSwxLDAsMCwwLDEsMUgxNi40NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNywyMy40NmwtMi0uNmE2LjczLDYuNzMsMCwwLDAtLjU4LTEuNDJsMS0xLjg2YS4zNS4zNSwwLDAsMC0uMDctLjQzbC0xLjQ1LTEuNDZhLjM4LjM4LDAsMCwwLS40My0uMDdsLTEuODUsMWE3Ljc0LDcuNzQsMCww''@;'; put 'put ''LDAtMS40My0uNmwtLjYxLTJhLjM4LjM4LDAsMCwwLS4zNi0uMjVIMjMuODRhLjM4LjM4LDAsMCwwLS4zNS4yNmwtLjYsMmE2Ljg1LDYuODUsMCwwLDAtMS40NS42MWwtMS44MS0xYS4zOC4zOCwwLDAsMC0uNDQuMDZsLTEuNDcsMS40NGEuMzcuMzcsMCwwLDAtLjA3LjQ0bDEsMS44MkE3LjI0''@;'; put 'put ''LDcuMjQsMCwwLDAsMTgsMjIuODNsLTIsLjYxYS4zNi4zNiwwLDAsMC0uMjYuMzV2Mi4wNWEuMzYuMzYsMCwwLDAsLjI2LjM1bDIsLjYxYTcuMjksNy4yOSwwLDAsMCwuNiwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LjE2LDMyYS4zOC4zOCwwLDAsMCwuNDQuMDZsMS44Ny0x''@;'; put 'put ''YTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMi4wNWEuMzguMzgsMCwwLDAsLjM2LjI2aDIuMDVhLjM4LjM4LDAsMCwwLC4zNS0uMjZsLjYtMi4wNWE2LjY4LDYuNjgsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zOC4zOCwwLDAsMCwuNDQtLjA2TDMyLDMwLjU1YS4zOC4zOCwwLDAsMCwuMDYt''@;'; put 'put ''LjQ0bC0xLTEuODhhNi45Miw2LjkyLDAsMCwwLC41Ny0xLjM4bDItLjYxYS4zOS4zOSwwLDAsMCwuMjctLjM1VjIzLjgyQS40LjQsMCwwLDAsMzMuNywyMy40NlptLTguODMsNC43MmEzLjM0LDMuMzQsMCwxLDEsMy4zMy0zLjM0QTMuMzQsMy4zNCwwLDAsMSwyNC44NywyOC4xOFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICcpLFQuQ2xyU2hhcGVIYXJkRHJpdmU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDhhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''Wk0zMiwyOEg0VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjYuMjEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyOS44MSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS44OCwxOC4wOGEzLjU5''@;'; put 'put ''LDMuNTksMCwxLDAsMy41OS0zLjU5LDMuODQsMy44NCwwLDAsMC0uOTEuMTNMMTUsMTYuMTZhMi4wOCwyLjA4LDAsMCwxLC41LS4wNywyLDIsMCwxLDEtMiwyLDEuNjQsMS42NCwwLDAsMSwuMDgtLjVMMTIsMTcuMTZBMy41MywzLjUzLDAsMCwwLDExLjg4LDE4LjA4WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNDcsMjUuNzNhNy42Niw3LjY2LDAsMCwxLTcuNjUtNy42NSw3LjU1LDcuNTUsMCwwLDEsLjI3LTJMNi41NCwxNS43YTkuMjQsOS4yNCwwLDAsMCwxNy44LDQuOTVIMjIuNjZBNy42NCw3''@;'; put 'put ''LjY0LDAsMCwxLDE1LjQ3LDI1LjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMjIsMTcuODNhLjguOCwwLDAsMC0uOC0uOEgyNC42NmE5LjI2LDkuMjYsMCwwLDAtOS4xOS04LjIsOS4zNiw5LjM2LDAs''@;'; put 'put ''MCwwLTIuMzguMzJsLjQyLDEuNTRhNy44Niw3Ljg2LDAsMCwxLDItLjI2QTcuNjYsNy42NiwwLDAsMSwyMywxN0gyMC45MmEuOC44LDAsMCwwLDAsMS42aDYuNUEuOC44LDAsMCwwLDI4LjIyLDE3LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEyLDE3LjE2bDEuNTQuNDJhMS42NCwxLjY0LDAsMCwwLS4wOC41LDIsMiwwLDEsMCwyLTIsMi4wOCwyLjA4LDAsMCwwLS41''@;'; put 'put ''LjA3bC0uNDEtMS41NGEzLjg0LDMuODQsMCwwLDEsLjkxLS4xMywzLjU5LDMuNTksMCwxLDEtMy41OSwzLjU5QTMuNTMsMy41MywwLDAsMSwxMiwxNy4xNlpNNS4zMSw4QTEuMjUsMS4yNSwwLDEsMSw0LjA2LDkuMjUsMS4yNSwxLjI1LDAsMCwxLDUuMzEsOFptMCwyMC4wNmExLjI1LDEuMjUs''@;'; put 'put ''MCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSw1LjMxLDI4LjA2Wm0xMC4xNi0uNzNBOS4yMiw5LjIyLDAsMCwxLDYuNTQsMTUuN2wxLjU1LjQxYTcuNTUsNy41NSwwLDAsMC0uMjcsMiw3LjY0LDcuNjQsMCwwLDAsMTQuODQsMi41N2gxLjY4QTkuMjUsOS4yNSwwLDAsMSwxNS40Nywy''@;'; put 'put ''Ny4zM1ptMTItOC43aC02LjVhLjguOCwwLDAsMSwwLTEuNkgyM2E3LjY2LDcuNjYsMCwwLDAtNy41Ny02LjYsNy44Niw3Ljg2LDAsMCwwLTIsLjI2bC0uNDItMS41NGE5LjM2LDkuMzYsMCwwLDEsMi4zOC0uMzJBOS4yNiw5LjI2LDAsMCwxLDI0LjY2LDE3aDIuNzZhLjguOCwwLDAsMSwwLDEu''@;'; put 'put ''NlptMy4zOSw5LjQzYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDI4LjA2Wm0wLTE3LjU2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjgxLDEwLjVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlSGFyZERyaXZlRGlza3M9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDUuNzRBMS43NCwxLjc0LDAsMCwwLDI0LjI2LDRIMy43NEExLjc0LDEuNzQsMCwwLDAsMiw1Ljc0VjIwLjI2QTEuNzQsMS43NCwwLDAsMCwzLjc0LDIySDRW''@;'; put 'put ''NkgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3Ljc0LDI2''@;'; put 'put ''SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yNiwxMkgxMS43NEExLjc0LDEuNzQsMCwwLDAsMTAsMTMuNzRWMjguMjZBMS43NCwxLjc0LDAsMCwwLDExLjc0LDMwSDMyLjI2QTEuNzQsMS43''@;'; put 'put ''NCwwLDAsMCwzNCwyOC4yNlYxMy43NEExLjc0LDEuNzQsMCwwLDAsMzIuMjYsMTJaTTMyLDI4SDEyVjE0SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuOTQsMjMuNjhhMi42NCwyLjY0LDAsMSwwLTIu''@;'; put 'put ''Ny0yLjYzQTIuNjcsMi42NywwLDAsMCwxOS45NCwyMy42OFptMC0zLjg3YTEuMjQsMS4yNCwwLDEsMS0xLjI5LDEuMjRBMS4yNywxLjI3LDAsMCwxLDE5Ljk0LDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMTkuOTQsMTYuMjJhNC45Myw0LjkzLDAsMCwxLDQuOTUsNC4zNUgyMy43MVYyMmg0LjQxYS43LjcsMCwwLDAsMC0xLjRIMjYuMzFhNi4zMyw2LjMzLDAsMCwwLTYuMzctNS43NSw2LjU4LDYuNTgsMCwwLDAtMS40OC4xN2wuMzUsMS4zN0E0LjczLDQuNzMsMCwwLDEsMTkuOTQsMTYuMjJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwyNy4yN2E2LjQyLDYuNDIsMCwwLDAsNS42Ny0zLjM1SDIzLjkzYTUsNSwwLDAsMS00LDEuOTUsNC45MSw0LjkxLDAsMCwxLTUtNC44Miw1LjE2LDUuMTYs''@;'; put 'put ''MCwwLDEsLjA4LS43OUwxMy42MywyMGE3LDcsMCwwLDAtLjA5LDFBNi4zMiw2LjMyLDAsMCwwLDE5Ljk0LDI3LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQu''@;'; put 'put ''MjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCw5Ljc0QTEuNzQsMS43NCwwLDAsMCwyOC4y''@;'; put 'put ''Niw4SDcuNzRBMS43NCwxLjc0LDAsMCwwLDYsOS43NFYyNC4yNkExLjc0LDEuNzQsMCwwLDAsNy43NCwyNkg4VjEwSDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS42MiwyMi42QTEuNTUsMS41NSwwLDEsMCwx''@;'; put 'put ''OCwyMS4wNSwxLjYsMS42LDAsMCwwLDE5LjYyLDIyLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEu''@;'; put 'put ''NzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMTkuNjIsMTcuNzRhMy4zMSwzLjMxLDAsMSwxLTMuMzgsMy4zMUEzLjM1LDMuMzUsMCwwLDEsMTkuNjIsMTcuNzRabTAsMTEuMTNhNy45NCw3Ljk0LDAsMCwxLTgtNy44''@;'; put 'put ''Miw3LjgzLDcuODMsMCwwLDEsLjExLTEuMjlsMS43NS4zYTUuMzYsNS4zNiwwLDAsMC0uMTEsMSw2LjE4LDYuMTgsMCwwLDAsNi4yOCw2LjA2LDYuMzUsNi4zNSwwLDAsMCw1LTIuNDZoMi4xQTguMDYsOC4wNiwwLDAsMSwxOS42MiwyOC44N1pNMjkuODksMjIuMkgyNC4zNlYyMC40NGgxLjQ4''@;'; put 'put ''QTYuMTksNi4xOSwwLDAsMCwxOS42MiwxNWE2LjQ4LDYuNDgsMCwwLDAtMS40MS4xNmwtLjQ1LTEuN2E4LjE2LDguMTYsMCwwLDEsMS44Ni0uMjIsOCw4LDAsMCwxLDgsNy4yMWgyLjI2YS44OC44OCwwLDAsMSwwLDEuNzZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00''@;'; put 'put ''IiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlTlZNZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjJWMTRhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkgyNUEyLDIsMCwwLDAsMjcsMjJaTTExLDE0SDI1djhIMTFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI1LjAxIiB5PSI2''@;'; put 'put ''IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LjgsOEgxNi44N1Y2aC0xMUw3Ljc4LDQuMDhhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDIsNyw2LjM3''@;'; put 'put ''LDExLjRhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuNjEsMjQuNjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQyTDMwLjEsMjhI''@;'; put 'put ''MTl2MkgzMC4ybC0yLDJhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzQsMjkuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSIyOCIgd2lkdGg9IjQi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSIyOCIgd2lkdGg9IjEuOTciIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAg''@;'; put 'put ''ICAgICcpLFQuQ2xyU2hhcGVTU0Q9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjI5LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLDE4LjYyYzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJzLS41MywxLjA5LTEuNTUsMS4wOWE0LDQsMCwwLDEt''@;'; put 'put ''Mi43MS0xLjExbC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MnMtMS4xNS0yLjA1LTIuODctMi40NGMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDEwLDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMUE0LjU4''@;'; put 'put ''LDQuNTgsMCwwLDAsMTAsMTMuNjljLTEuNzQsMC0zLDEuMDUtMywyLjQ5UzguMjYsMTguMjIsMTAsMTguNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44MywyMC45M2E0LDQsMCwwLDEtMi43MS0xLjEx''@;'; put 'put ''bC0uODYsMS4wNmE1LDUsMCwwLDAsMy41MiwxLjM0YzIsMCwzLjEtMSwzLjEtMi41MlMxOS43MywxNy42NSwxOCwxNy4yNmMtMS4zMS0uMy0xLjkyLS41NC0xLjkyLTEuMjFBMS4yNSwxLjI1LDAsMCwxLDE3LjQ4LDE1YTMuNjgsMy42OCwwLDAsMSwyLjM3LDFsLjgxLTEuMWE0LjU2LDQuNTYs''@;'; put 'put ''MCwwLDAtMy4xMi0xLjE1Yy0xLjczLDAtMywxLjA1LTMsMi40OXMxLjE5LDIsMi44OSwyLjQ0YzEuMzIuMzEsMS45MS41NCwxLjkxLDEuMjJTMTguODUsMjAuOTMsMTcuODMsMjAuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yOS45LDE4YzAtMi40MS0xLjkyLTQuMTItNC42NC00LjEyaC0yLjl2OC4yNGgyLjlDMjgsMjIuMDgsMjkuOSwyMC4zNywyOS45LDE4Wm0tNi0yLjc2aDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC04IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk01LjIxLDhBMS4yNSwxLjI1LDAsMSwxLDQsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4yMSw4Wm0w''@;'; put 'put ''LDIwYTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMjEsMjhabTUuMDYtNS43OGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIu''@;'; put 'put ''ODktLjg5LTIuODktMi40NHMxLjIyLTIuNDksMy0yLjQ5YTQuNTgsNC41OCwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFBMy42OCwzLjY4LDAsMCwwLDEwLDE1YTEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRT''@;'; put 'put ''MTIuMjQsMjIuMjIsMTAuMjcsMjIuMjJabTcuNTEsMGE1LDUsMCwwLDEtMy41Mi0xLjM0bC44Ni0xLjA2YTQsNCwwLDAsMCwyLjcxLDEuMTFjMSwwLDEuNTUtLjUsMS41NS0xLjA5cy0uNTktLjkxLTEuOTEtMS4yMmMtMS43LS40LTIuODktLjg5LTIuODktMi40NHMxLjIzLTIuNDksMy0yLjQ5''@;'; put 'put ''YTQuNTYsNC41NiwwLDAsMSwzLjEyLDEuMTVsLS44MSwxLjFhMy42OCwzLjY4LDAsMCwwLTIuMzctMSwxLjI1LDEuMjUsMCwwLDAtMS4zOSwxLjA4YzAsLjY3LjYxLjkxLDEuOTIsMS4yMSwxLjcyLjM5LDIuODcuOTQsMi44NywyLjQ0UzE5Ljc1LDIyLjIyLDE3Ljc4LDIyLjIyWm00LjU4LS4x''@;'; put 'put ''NFYxMy44NGgyLjljMi43MiwwLDQuNjQsMS43MSw0LjY0LDQuMTJTMjgsMjIuMDgsMjUuMjYsMjIuMDhaTTMwLjY5LDI4YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDMwLjY5LDI4Wm0wLTE3LjVhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUs''@;'; put 'put ''MCwwLDEsMzAuNjksMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMTUuMmgxLjU2YTIuNzcsMi43NywwLDEsMSwwLDUuNTNIMjMuODZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yIiAvPlxuICAgICAgICAnKSxULkNsclNoYXBlQmx1ZXRvb3RoPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi42NCwyNS4yNywxOSwxNy41MywxOSwzLDI1LjIxLDkuNGwtNS42NSw1Ljc5TDIxLDE2LjYybDUuNjgtNS44MmEyLDIsMCwwLDAsMC0yLjc4TDIwLjQ4LDEuN0EyLjA4''@;'; put 'put ''LDIuMDgsMCwwLDAsMTguODUsMSwyLDIsMCwwLDAsMTcsM1YxNS4zOEwxMC4wNSw4LjI3QTEsMSwwLDAsMCw4LjYyLDkuNjZMMTYuNzksMTgsOS4wNiwyNmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzM2EyLjA3LDIuMDcsMCww''@;'; put 'put ''LDAsLjcxLDEuNjJBMiwyLDAsMCwwLDE5LDM1YTEuOTQsMS45NCwwLDAsMCwxLjQyLS42bDYuMjMtNi4zOEEyLDIsMCwwLDAsMjYuNjQsMjUuMjdaTTE5LDMzLjA1VjIwLjI5bDYuMjEsNi4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuNTIsMjQuNTJsLTUuNjUtNS44My0xLjQ2LTEuNXYtMTJMMjMuNzksOS43bC0zLjYsMy43MSwyLjI0LDIuMjksNC4wOS00LjIyYTIuNTQsMi41NCwwLDAsMCwwLTMuNTZMMjAuNTcsMS43OEEyLjU0LDIuNTQsMCwwLDAsMTYuMiwzLjU1VjEzLjg2bC01LjUzLTUuN2ExLjYsMS42''@;'; put 'put ''LDAsMSwwLTIuMywyLjIzTDE1Ljc1LDE4bC03LDcuMTlhMS42LDEuNiwwLDAsMCwwLDIuMjYsMS42MywxLjYzLDAsMCwwLDEuMTIuNDUsMS41OCwxLjU4LDAsMCwwLDEuMTUtLjQ5bDUuMTEtNS4yN1YzMi40NWEyLjUzLDIuNTMsMCwwLDAsMS41OSwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUu''@;'; put 'put ''MTksMi41NiwyLjU2LDAsMCwwLDEuODMtLjc3bDUuOTUtNi4xNUEyLjU0LDIuNTQsMCwwLDAsMjYuNTIsMjQuNTJaTTE5LjQsMzAuODNWMjEuNzdsNC4zOSw0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlQmx1ZXRvb3RoT2ZmPSgw''@;'; put 'put ''LHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOSwzLDI1LjIyLDkuNGwtNS42Niw1LjhMMjEsMTYuNjNsNS42OC01LjgzYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIsMiwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzdjExLjRsMiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuNzcsNSwzLjM2LDYuNDIsMTUuODksMTksOS4wNiwyNmExLDEsMCwwLDAsLjcxLDEuNywxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzMi45NGEyLjA4LDIuMDgsMCwwLDAsLjcxLDEuNjNBMiwyLDAsMCwwLDE5LDM1YTIsMiwwLDAs''@;'; put 'put ''MCwxLjQyLS42bDUuNDEtNS41NCwzLjU0LDMuNTNMMzAuNzcsMzFaTTE5LDMzLjA1di0xMWw1LjQxLDUuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzEsNS4xNywyMy43LDkuN2wtMy41OSwzLjcxLDIuMjQsMi4yOSw0LjA5''@;'; put 'put ''LTQuMjJhMi41NiwyLjU2LDAsMCwwLDAtMy41NmwtNi02LjE0YTIuNTEsMi41MSwwLDAsMC0yLjc3LS41OSwyLjU0LDIuNTQsMCwwLDAtMS42LDIuMzZ2MTBsMy4yMSwzLjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNNC41LDUsMy4wOSw2''@;'; put 'put ''LjQyLDE1LjE3LDE4LjUxLDguNywyNS4xOUExLjYsMS42LDAsMCwwLDkuODUsMjcuOSwxLjU3LDEuNTcsMCwwLDAsMTEsMjcuNDFsNS4xMS01LjI3VjMyLjQ1YTIuNTQsMi41NCwwLDAsMCwxLjYsMi4zNiwyLjQ0LDIuNDQsMCwwLDAsLjk1LjE5LDIuNTUsMi41NSwwLDAsMCwxLjgyLS43N2w1''@;'; put 'put ''LjEyLTUuMjksMy40OSwzLjQ4TDMwLjUsMzFaTTE5LjgxLDMwLjgzVjIyLjY1bDQsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZVByb2Nlc3NPblZNPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCww''@;'; put 'put ''LDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0LjQ4LDAsMCwwLDI3LjM3LDcuMzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0''@;'; put 'put ''TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAsMCwzMy40OSwyNi4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjMxLDE3LjA4YTEuMDYsMS4wNiwwLDAsMCwuNDQuMTYsMSwxLDAs''@;'; put 'put ''MCwwLDEuMTItLjg1QTEyLjIxLDEyLjIxLDAsMCwxLDE4LjY5LDUuODRMMTYuNDUsNy4zN2ExLDEsMCwwLDAsLjQ3LDEuNzlBMSwxLDAsMCwwLDE3LjU2LDlsNS4zMy0zLjY2TDE4LjMzLjc2YTEsMSwwLDEsMC0xLjM5LDEuMzhsMS43LDEuN0ExNC4yLDE0LjIsMCwwLDAsMy44OSwxNi4xMiwx''@;'; put 'put ''LDEsMCwwLDAsNC4zMSwxNy4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMS43MywyOS45M2ExMiwxMiwwLDAsMS00Ljg0LjUxLDEyLjMsMTIuMywwLDAsMS05LjU3LTYuM2wyLjQ5LjkzYTEsMSwwLDAsMCwuNjktMS44NGwtNC41''@;'; put 'put ''OS0xLjdoMEw0LjQ0LDIxLDMuMzMsMjcuMzVhMSwxLDAsMCwwLC43OSwxLjEzbC4xNywwYTEsMSwwLDAsMCwxLS44MWwuNDItMi40YTE0LjMsMTQuMywwLDAsMCwxMSw3LjE0LDEzLjkxLDEzLjkxLDAsMCwwLDUuNjMtLjYsMSwxLDAsMCwwLS42LTEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxM0gxNGExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NCIgLz4nKSxULkNsclNoYXBlQXNzaWduVXNlcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNy40Niw3LjQ2LDAsMSwwLTcuNDUtNy40NkE3LjQ2LDcuNDYsMCwwLDAsMTgsMTdaTTE4LDQuMDdhNS40Niw1LjQ2LDAsMSwxLTUuNDUsNS40NUE1LjQ2LDUuNDYsMCwwLDEsMTgs''@;'; put 'put ''NC4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxLjg5VjI1Ljc3YTE2LjEzLDE2LjEzLDAsMCwxLDEyLTUsMTYuNjEsMTYuNjEsMCwwLDEsOC43MSwyLjMzbDEuMzUtMS41MUExOC41MywxOC41MywwLDAsMCwxOCwxOC43NCwx''@;'; put 'put ''Ny43LDE3LjcsMCwwLDAsNC4yMSwyNC44YTEsMSwwLDAsMC0uMjEuNnY2LjQ5QTIuMDYsMi4wNiwwLDAsMCw2LDM0SDE4LjM5bC0xLjktMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMS44OSwzMCwzMkgyNi44NWwtMS44LDJI''@;'; put 'put ''MzBhMi4wNiwyLjA2LDAsMCwwLDItMi4wN1YyNi4ybC0yLDIuMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzQuNzYsMTguNjJhMSwxLDAsMCwwLTEuNDEuMDhsLTExLjYyLDEzLTUuMi01LjU5QTEsMSwwLDAsMCwxNS4xMiwyNmEx''@;'; put 'put ''LDEsMCwwLDAtLjA2LDEuNDJsNi42OSw3LjJMMzQuODQsMjBBMSwxLDAsMCwwLDM0Ljc2LDE4LjYyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxMC4zNiIgcj0iNi44MSIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTIsMjYuNjVhMi44LDIuOCwwLDAsMSw0Ljg1LTEuOEwyMC43MSwyOWw2Ljg0LTcuNjNBMTYuODEsMTYuODEsMCwwLDAsMTgsMTguNTUsMTYuMTMsMTYuMTMsMCwwLDAsNS41LDI0YTEsMSwwLDAsMC0uMi42MVYzMGEyLDIsMCwwLDAsMS45''@;'; put 'put ''NCwyaDguNTdsLTMuMDctMy4zQTIuODEsMi44MSwwLDAsMSwxMiwyNi42NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI4Ljc2LDMyYTIsMiwwLDAsMCwxLjk0LTJWMjYuMjRMMjUuNTcsMzJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy43NywxOC42MmExLDEsMCwwLDAtMS40Mi4wOGwtMTEuNjIsMTMtNS4yLTUuNTlBMSwxLDAsMCwwLDE0LjEyLDI2YTEsMSwwLDAsMCwwLDEuNDJsNi42OCw3LjJMMzMuODQsMjBBMSwxLDAsMCwwLDMzLjc3LDE4LjYyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxULkNsclNoYXBlQXRvbT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTQuMDVhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMTQuMDVabTAsNi40NGEyLjQyLDIuNDIsMCwxLDEsMi40Mi0yLjQyQTIuNDIsMi40MiwwLDAs''@;'; put 'put ''MSwxOCwyMC40OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNC4yMywxMS43MWEzOS4xNCwzOS4xNCwwLDAsMC00LjU3LTMuOTIsMjIuODYsMjIuODYsMCwwLDEsMy40OC0xLjcyYy4zMi0uMTIuNjItLjIxLjkyLS4zYTIuMjgsMi4y''@;'; put 'put ''OCwwLDAsMCwzLjgxLS40NiwzLjMxLDMuMzEsMCwwLDEsMS45Mi44NGMxLjE5LDEuMTksMS4yMiwzLjU5LjEsNi41OC40OS42NS45NCwxLjMxLDEuMzUsMiwuMTctLjQuMzUtLjc5LjQ5LTEuMTgsMS40Ny0zLjg1LDEuMjgtNy0uNTMtOC43OGE1LjI5LDUuMjksMCwwLDAtMy4zMy0xLjQ0LDIu''@;'; put 'put ''MjksMi4yOSwwLDAsMC00LjMxLjU0Yy0uMzcuMTEtLjc0LjIyLTEuMTMuMzdhMjUuNzksMjUuNzksMCwwLDAtNC41NywyLjM1QTI2LjIxLDI2LjIxLDAsMCwwLDEzLjI4LDQuMmMtMy44NS0xLjQ2LTctMS4yOC04Ljc3LjUzQzIuODUsNi40LDIuNTgsOS4xNywzLjY4LDEyLjU5YTIuMjgsMi4y''@;'; put 'put ''OCwwLDAsMCwxLjU5LDMuNjdjLjMyLjYxLjY3LDEuMjIsMS4wNiwxLjgyQTI1LjU0LDI1LjU0LDAsMCwwLDQsMjIuNjZjLTEuNDcsMy44NC0xLjI4LDcsLjUzLDguNzdhNS42Myw1LjYzLDAsMCwwLDQuMTIsMS41MSwxMy4zNCwxMy4zNCwwLDAsMCw0LjY1LTEsMjYuMjEsMjYuMjEsMCwwLDAs''@;'; put 'put ''NC41OC0yLjM1QTI1Ljc5LDI1Ljc5LDAsMCwwLDIyLjQzLDMyYTE0LjE2LDE0LjE2LDAsMCwwLDMuNjUuOUEyLjMsMi4zLDAsMCwwLDMwLjQ2LDMyYTQuNTUsNC41NSwwLDAsMCwuNzQtLjU3YzEuODEtMS44MSwyLTQuOTMuNTMtOC43N0EzMi42OCwzMi42OCwwLDAsMCwyNC4yMywxMS43MVpN''@;'; put 'put ''MTIuNTcsMzAuMDljLTMsMS4xNS01LjQ1LDEuMTMtNi42NS0uMDhzLTEuMjMtMy42Mi0uMDctNi42NGEyMi43NywyMi43NywwLDAsMSwxLjcxLTMuNDgsNDAuMTksNDAuMTksMCwwLDAsMy45Miw0LjU2Yy40My40My44Ny44NSwxLjMxLDEuMjVxLjktLjQ2LDEuODMtMS4wNWMtLjU4LS41Mi0x''@;'; put 'put ''LjE2LTEtMS43Mi0xLjYxYTM0LDM0LDAsMCwxLTUuNzQtNy40N0EyLjI5LDIuMjksMCwwLDAsNS41LDExLjY5aDBjLS43NS0yLjUtLjYyLTQuNDkuNDMtNS41NGEzLjcyLDMuNzIsMCwwLDEsMi43Mi0uOTIsMTEuNCwxMS40LDAsMCwxLDMuOTMuODQsMjIuODYsMjIuODYsMCwwLDEsMy40OCwx''@;'; put 'put ''LjcyLDM5LjE0LDM5LjE0LDAsMCwwLTQuNTcsMy45MmMtLjQ0LjQ0LS44Ny45LTEuMjksMS4zNmEyMC4yNywyMC4yNywwLDAsMCwxLDEuODVjLjU0LS42MSwxLjA5LTEuMjEsMS42OC0xLjhhMzYuMzMsMzYuMzMsMCwwLDEsNS00LjE3LDM2Ljg4LDM2Ljg4LDAsMCwxLDQuOTUsNC4xNywzNi4y''@;'; put 'put ''NiwzNi4yNiwwLDAsMSw0LjE3LDUsMzcsMzcsMCwwLDEtNC4xNyw1QTMwLjY4LDMwLjY4LDAsMCwxLDEyLjU3LDMwLjA5Wk0yOS43OSwzMGwtLjE2LjEzYTIuMjcsMi4yNywwLDAsMC0zLjUuNzIsMTIuNTcsMTIuNTcsMCwwLDEtMy0uNzcsMjIsMjIsMCwwLDEtMy40OC0xLjcyLDM5LjE0LDM5''@;'; put 'put ''LjE0LDAsMCwwLDQuNTctMy45MiwzOC4yNiwzOC4yNiwwLDAsMCwzLjkyLTQuNTYsMjIuODgsMjIuODgsMCwwLDEsMS43MiwzLjQ4QzMxLDI2LjM5LDMxLDI4LjgxLDI5Ljc5LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LjIz''@;'; put 'put ''LDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIyLDMuNTkuMSw2LjU4LjQ5LjY1''@;'; put 'put ''Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4yOSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43OSwwLDAsMC00LjU3LDIuMzVB''@;'; put 'put ''MjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQsMCwwLDAsNCwyMi42NmMtMS40''@;'; put 'put ''NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUtMSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAsMy42NS45QTIuMywyLjMsMCww''@;'; put 'put ''LDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02LjY0YTIyLjc3LDIyLjc3LDAs''@;'; put 'put ''MCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYsMS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1LjUsMTEuNjloMGMtLjc1LTIu''@;'; put 'put ''NS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2YTIwLjI3LDIwLjI3LDAsMCww''@;'; put 'put ''LDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgsMCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCwwLDEsMTIuNTcsMzAuMDlaTTI5''@;'; put 'put ''Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAsMS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwyMi44OCwwLDAsMSwxLjcyLDMu''@;'; put 'put ''NDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE3Ljk5IiBjeT0iMTguMDciIHI9IjMuMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuNjYgMy4xMSkgcm90YXRlKC05LjIyKSIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlQmFyQ29kZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw3QTEsMSwwLDAsMCw0LDhWMzBhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw1LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSw3QTEsMSwwLDAsMCw4LDhWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMTMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxNyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDIxLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMjUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyOSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTMzLDdhMSwxLDAsMCwwLTEsMVYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDMzLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz4nKSxULkNsclNoYXBlQ2REdmQ9KDAsdi5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi4zMywxOGE0LjQ2LDQuNDYs''@;'; put 'put ''MCwxLDAtNC40NSw0LjQ2QTQuNDYsNC40NiwwLDAsMCwyMi4zMywxOFpNMTcuODgsMjAuOUEyLjg2LDIuODYsMCwxLDEsMjAuNzMsMTgsMi44NiwyLjg2LDAsMCwxLDE3Ljg4LDIwLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTcu''@;'; put 'put ''ODgsNy40M0gxOFY1Ljg0aC0uMTJBMTIuMjEsMTIuMjEsMCwwLDAsNS42OCwxNy43NWgxLjZBMTAuNjEsMTAuNjEsMCwwLDEsMTcuODgsNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC4wOCwxOEgyOC40OXYwQTEwLjYxLDEw''@;'; put 'put ''LjYxLDAsMCwxLDE4LjI1LDI4LjYzdjEuNkExMi4yMiwxMi4yMiwwLDAsMCwzMC4wOSwxOFMzMC4wOCwxOCwzMC4wOCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxMVY5LjQ0aC0uMTJhOC42Miw4LjYyLDAsMCwwLTguNiw4''@;'; put 'put ''LjMyaDEuNmE3LDcsMCwwLDEsNy02LjcyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTE4LjI1LDI1djEuNkE4LjYxLDguNjEsMCwwLDAsMjYuNDgsMTh2MGgtMS42djBBNyw3LDAsMCwxLDE4LjI1LDI1WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTE4LjE3LDEuOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTguMTcsMS45MlpNMjYuMjMsMThoMS41NGE5LjYxLDkuNjEsMCwwLDEtOS42LDkuNTNIMThWMjZoLjE3QTguMDcsOC4wNywwLDAsMCwyNi4yMywx''@;'; put 'put ''OFpNNi4wNSwxOEg0LjQ1di0uMDhBMTMuNzIsMTMuNzIsMCwwLDEsMTgsNC4yMXYxLjZBMTIuMTMsMTIuMTMsMCwwLDAsNi4wNSwxNy45MlptNC4wNSwwSDguNTZ2LS4wOEE5LjYxLDkuNjEsMCwwLDEsMTgsOC4zMlY5Ljg2YTguMDcsOC4wNywwLDAsMC03LjksOC4wNlptNC4zMi0uMDhhMy43''@;'; put 'put ''NSwzLjc1LDAsMSwxLDMuNzUsMy43NUEzLjc1LDMuNzUsMCwwLDEsMTQuNDIsMTcuOTJabTMuNzUsMTMuNzFIMThWMzBoLjE3QTEyLjEzLDEyLjEzLDAsMCwwLDMwLjI4LDE4aDEuNkExMy43MywxMy43MywwLDAsMSwxOC4xNywzMS42M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+JyksVC5DbHJTaGFwZUNvbnRhaW5lcj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjI4QTIsMiwwLDAsMSwzMiwzMFpNNCw4VjI4SDMyVjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSw5LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJN''@;'; put 'put ''MTQuOTIsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMTQuOTIsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44Ljgs''@;'; put 'put ''MCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwyMSwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI3LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDI3LDI1LjNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTkuNjMsMjQuMjNhLjc5Ljc5LDAsMCwxLS44MS43N0EuNzkuNzksMCww''@;'; put 'put ''LDEsOCwyNC4yM1YxMS43N0EuNzkuNzksMCwwLDEsOC44MiwxMWEuNzkuNzksMCwwLDEsLjgxLjc3Wm02LDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4yMSwwYS43OS43OSww''@;'; put 'put ''LDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwuODIuNzdabTYuMTIsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEs''@;'; put 'put ''LjgyLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDE3LjU4YTMyLjM1LDMyLjM1LDAsMCwwLDYuMy45Miw0LjEzLDQuMTMsMCwwLDEsLjkyLTEuMzcs''@;'; put 'put ''MzAuOTQsMzAuOTQsMCwwLDEtNy4yMi0xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYsMjhWOC4xOWMuMzQtLjc2LDQuMzEtMi4xMSwxMS0yLjExczEwLjY3LDEuMzUsMTEsMnYuM2MtLjgyLjc5LTQuNTgsMi4wNS0xMS4xMSwyLjA1''@;'; put 'put ''QTMzLjQ4LDMzLjQ4LDAsMCwxLDgsOS40NHYxLjQ0YTM1LjYsMzUuNiwwLDAsMCw4Ljg5LDFjNC4yOSwwLDguOC0uNTgsMTEuMTEtMS44MnY1LjA3YTUuMyw1LjMsMCwwLDEtMS44MS44OEgzMFY4LjEyYzAtMy4xOS04LjE3LTQtMTMtNHMtMTMsLjg1LTEzLDRWMjhDNCwzMC42Myw5LjM5LDMx''@;'; put 'put ''LjY4LDE0LDMyVjMwQzkuMTMsMjkuNjYsNi4yOCwyOC42Miw2LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTgsMjQuMjhhMzEuMywzMS4zLDAsMCwwLDYsLjg5di0xLjRhMjguOTMsMjguOTMsMCwwLDEtNi0uOTNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwzMlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yMSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwwLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDIxLDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsMjEu''@;'; put 'put ''ODJhLjcuNywwLDAsMC0uNy43VjMwYS43LjcsMCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAtLjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40''@;'; put 'put ''LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMzIsMThIMThhMiwyLDAsMCwwLTIsMlYzMmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjBBMiwyLDAsMCwwLDMyLDE4Wk0xOCwz''@;'; put 'put ''MlYyMEgzMlYzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LDIxLjgyYS43LjcsMCwwLDAtLjcuN1YzMGEuNy43LDAsMSwwLDEuNCwwVjIyLjUyQS43LjcsMCwwLDAsMjUsMjEuODJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yOSwyMS43YS43LjcsMCwwLDAt''@;'; put 'put ''LjcuN3Y3LjQ5YS43LjcsMCwxLDAsMS40LDBWMjIuNEEuNy43LDAsMCwwLDI5LDIxLjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0xOCwxNkgyOFY4LjEyYzAtMS42OC01LjM4LTMtMTItM1M0LDYuNDQsNCw4LjEyVjI4YzAsMS41LDQuMzMs''@;'; put 'put ''Mi43NSwxMCwzVjI1LjIyYTI5LjE3LDI5LjE3LDAsMCwxLTgtMS4yOVYyMi40NGwuMjQuMUEyNi42MywyNi42MywwLDAsMCwxNCwyMy44MlYyMGE0LDQsMCwwLDEsLjI5LTEuNDdBMjkuMTksMjkuMTksMCwwLDEsNiwxNy4yM1YxNS43NWwuMjQuMDlhMjksMjksMCwwLDAsOSwxLjMyaDBBNCw0''@;'; put 'put ''LDAsMCwxLDE4LDE2Wk02LDEwLjU0VjkuMDVsLjI0LjA5QTMwLjEyLDMwLjEyLDAsMCwwLDE2LDEwLjQ3LDI4LjMzLDI4LjMzLDAsMCwwLDI2LDkuMDV2MS41YTMyLjUzLDMyLjUzLDAsMCwxLTEwLDEuMzJBMzIuNDQsMzIuNDQsMCwwLDEsNiwxMC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTUiIC8+JyksVC5DbHJTaGFwZUZpbGVTaGFyZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFB''@;'; put 'put ''MiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOTEsMjIuNDhhMi4wNiwyLjA2LDAs''@;'; put 'put ''MCwwLTEuNDQuNjJsLTUuNzItMi42NlYyMGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0LDIuMTIsMi4xMiwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNhMi4wOSwyLjA5LDAsMSwwLDIu''@;'; put 'put ''MDgtMi4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAs''@;'; put 'put ''MCwzMCw5Wk02LDdoNi40OWwyLjcyLDRINlpNMjEuOTQsMjYuNjRhMi4wOSwyLjA5LDAsMCwxLTIuMTEtMi4wNmwwLS4zLTUuNjctMi42Ni0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMDgsMi4wOCwwLDEsMSwuNTgsMS40NkwxNC43NSwyMHYuNDds''@;'; put 'put ''NS43MiwyLjY2YTIuMDcsMi4wNywwLDEsMSwxLjQ3LDMuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVRckNvZGU9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNiw0QTEuNiwxLjYsMCwwLDAsNCw1LjZWMTJoOFY0Wk0xMCwx''@;'; put 'put ''MEg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LDMwLjRBMS42LDEuNiwwLDAsMCw1LjYsMzJIMTJWMjRINFpNNiwyNmg0djRINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yNCwzMmg2LjRBMS42LDEuNiwwLDAsMCwzMiwzMC40VjI0SDI0Wm0yLTZoNHY0SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjQsNEgyNHY4aDhWNS42QTEuNiwxLjYsMCwwLDAsMzAuNCw0Wk0zMCwxMEgyNlY2aDRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cG9seWdvbiBwb2ludHM9IjIwIDEwIDIwIDggMTYgOCAxNiAxMiAxOCAxMiAxOCAxMCAyMCAxMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHJlY3QgeD0iMTIiIHk9''@;'; put 'put ''IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cmVjdCB4PSIxNCIgeT0iMTQiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwb2x5Z29u''@;'; put 'put ''IHBvaW50cz0iMjAgNiAyMCA4IDIyIDggMjIgNCAxNCA0IDE0IDggMTYgOCAxNiA2IDIwIDYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxyZWN0IHg9IjQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSI0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtOSIgLz48cG9seWdvbiBwb2ludHM9IjEyIDE2IDEyIDE4IDEwIDE4IDEwIDE0IDggMTQgOCAxOCA2IDE4IDYgMjAgNCAyMCA0IDIyIDggMjIgOCAyMCAxMCAyMCAxMCAyMiAxMiAyMiAxMiAyMCAxNCAyMCAxNCAxNiAxMiAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEwIiAvPjxwb2x5Z29uIHBvaW50cz0iMjAgMTYgMjIgMTYgMjIgMTggMjQgMTggMjQgMTYgMjYgMTYgMjYgMTQgMjIgMTQgMjIgMTAgMjAgMTAgMjAgMTIgMTggMTIgMTggMTQgMjAgMTQgMjAgMTYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xMSIgLz48cG9seWdvbiBwb2ludHM9IjE4IDMwIDE0IDMwIDE0IDMyIDIyIDMyIDIyIDMwIDIwIDMwIDIwIDI4IDE4IDI4IDE4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMiAyMCAyMiAxOCAyMCAx''@;'; put 'put ''OCAyMCAxNiAxOCAxNiAxOCAxOCAxNiAxOCAxNiAyMCAxOCAyMCAxOCAyMiAyMCAyMiAyMCAyMCAyMiAyMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiAvPjxyZWN0IHg9IjMwIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE0IiAvPjxyZWN0IHg9IjIyIiB5PSIyMCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiAvPjxwb2x5Z29uIHBvaW50cz0iMzAgMTQgMjggMTQgMjggMTYgMjYgMTYgMjYgMTgg''@;'; put 'put ''MjggMTggMjggMjAgMzAgMjAgMzAgMTggMzIgMTggMzIgMTYgMzAgMTYgMzAgMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIgLz48cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xNyIgLz48cG9seWdvbiBwb2ludHM9IjE0IDI4IDE2IDI4IDE2IDI2IDE4IDI2IDE4IDI0IDE2IDI0IDE2IDIwIDE0IDIwIDE0IDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTgiIC8+JyksVC5DbHJTaGFwZVVzYj0oMCx2LmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTQuMjksMTEuNGExLjQ5LDEuNDksMCwwLDEsMS4yOC0uNzJoMWEyLjg5LDIuODksMCwwLDAsMi43NSwyLjA5LDMsMywwLDAsMCwwLTUuOTEsMi45LDIuOSwwLDAsMC0yLjY3LDEuODJIMTUuNTdhMy40OSwzLjQ5LDAsMCwwLTMsMS42NmwtMyw0LjgzaDIuMzZabTUt''@;'; put 'put ''Mi45NEExLjM2LDEuMzYsMCwxLDEsMTgsOS44MSwxLjMyLDEuMzIsMCwwLDEsMTkuMzMsOC40NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zNC4zLDE3LjM3bC02LjExLTMuNjZhLjcuNywwLDAsMC0uNywwLC43MS43MSwwLDAsMC0u''@;'; put 'put ''MzYuNjFWMTdINi45MmEyLjMzLDIuMzMsMCwwLDEsLjMyLDEuMTcsMi40NywyLjQ3LDAsMSwxLTIuNDctMi40NiwyLjM3LDIuMzcsMCwwLDEsMS4xNS4zbC45My0xLjc2QTQuNDQsNC40NCwwLDEsMCw5LjE1LDE5aDMuNThsNC4xNyw2LjY1YTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMS42NnYx''@;'; put 'put ''LjI4YS43OS43OSwwLDAsMCwuOC43OWg0LjQ5YS43OS43OSwwLDAsMCwuOC0uNzl2LTQuNGEuNzkuNzksMCwwLDAtLjgtLjhIMjIuMzRhLjguOCwwLDAsMC0uOC44djEuMTJIMTkuODhhMS41MSwxLjUxLDAsMCwxLTEuMjgtLjcyTDE1LjA5LDE5aDEydjIuNjZhLjY5LjY5LDAsMCwwLC4zNi42''@;'; put 'put ''MS42Ny42NywwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDYuMTEtMy42NmEuNjkuNjksMCwwLDAsLjM0LS42QS43MS43MSwwLDAsMCwzNC4zLDE3LjM3Wk0yMy4xNCwyNUgyNnYyLjhIMjMuMTRabTUuMzktNC41NlYxNS41NWw0LDIuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQuNzIsMTcuMzdsLTUuNTEtMy4zMWEuNzEuNzEsMCwwLDAtMS4wNy42VjE3SDExLjc3bDMuNTItNS42YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxLjY0YTIuNDEsMi40MSwwLDAsMCwyLjI1LDEuNjEsMi40OCwyLjQ4LDAsMCww''@;'; put 'put ''LDAtNC45NSwyLjM4LDIuMzgsMCwwLDAtMi4xMywxLjM0SDE2LjU3YTMuNDksMy40OSwwLDAsMC0zLDEuNjZMOS40MSwxN0g4YTMuNDYsMy40NiwwLDEsMCwuMDgsMmg1LjY0bDQuMTUsNi42MmEzLjQ5LDMuNDksMCwwLDAsMywxLjY2aDIuNTl2LjkyaDQuNFYyMy44aC00LjR2MS40OEgyMC44''@;'; put 'put ''OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTYuMTEsMTloMTJ2Mi4yOGEuNy43LDAsMCwwLC4zNi42MS43Mi43MiwwLDAsMCwuMzQuMDkuNjUuNjUsMCwwLDAsLjM2LS4xbDUuNTItMy4zMWEuNy43LDAsMCwwLDAtMS4yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgLz4nKSxULkNsclNoYXBlUmFkYXI9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDE4YzAsNy43LTYuMywxNC0xNCwxNGMtNy43LDAtMTQtNi4zLTE0LTE0QzQsMTAuNiw5LjcsNC41LDE3LjEsNHYzLjdjLTUuNywwLjUtOS45LDUuNS05LjQsMTEuMnM1LjUsOS45LDExLjIsOS40''@;'; put 'put ''XG5cdGM1LjMtMC41LDkuNC00LjksOS40LTEwLjNoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zcy04LjMtMy43LTguMy04LjNjMC00LjIsMy4xLTcuOCw3LjMtOC4zdjQuNGMtMS44LDAuNC0zLjEsMi0zLjEsMy45XG5cdGMwLDIuMiwxLjgsNCw0LDRzNC0xLjgsNC00YzAtMS44LTEuMy0zLjQt''@;'; put 'put ''My0zLjhWMi4xQzE4LjYsMiwxOC4zLDIsMTgsMkM5LjIsMiwyLDkuMiwyLDE4czcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZIMzJ6IE0yMCwxOFxuXHRjMCwxLjEtMC45LDItMiwycy0yLTAuOS0yLTJzMC45LTIsMi0yUzIwLDE2LjksMjAsMTh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIsMThjMCw3LjctNi4yLDE0LTE0LDE0UzQsMjUuOCw0LDE4YzAtNy40LDUuNy0xMy41LDEzLjEtMTR2My43Yy01LjcsMC41LTkuOCw1LjUtOS4zLDExLjJzNS41LDkuOCwxMS4yLDkuM1xuXHRcdGM1LjMtMC41LDkuMy00LjksOS4zLTEw''@;'; put 'put ''LjJoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zUzkuNywyMi42LDkuNywxOGMwLTQuMiwzLjItNy44LDcuMy04LjJ2NC40Yy0yLjEsMC42LTMuNCwyLjctMi45LDQuOVxuXHRcdGMwLjYsMi4xLDIuNywzLjQsNC45LDIuOWMyLjEtMC42LDMuNC0yLjcsMi45LTQuOWMtMC40LTEuNC0xLjUtMi41''@;'; put 'put ''LTIuOS0yLjlWMmMtMC40LDAtMC43LDAtMS4xLDBjLTguOCwwLTE2LDcuMi0xNiwxNlxuXHRcdGMwLDguOCw3LjIsMTYsMTYsMTZzMTYtNy4yLDE2LTE2YzAsMCwwLDAsMCwwSDMyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlSW5kdWN0''@;'; put 'put ''b3I9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjMxLDI1LjgxYy0xLjc1LDAtMy0yLjQ5LTMtNmExMi43OSwxMi43OSwwLDAsMSwxLjcyLTYuNywyLjU3LDIuNTcsMCwwLDAtMy43OSwwQTEyLjc5LDEyLjc5LDAsMCwxLDIxLDE5Ljc2YzAsMy41Ni0xLjIzLDYtMyw2cy0zLTIuNDkt''@;'; put 'put ''My02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDAsMTIuNzksMTIuNzksMCwwLDEsMS43Miw2LjdjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuODgsMTIuODgsMCwwLDEsMS43MS02LjcsMi43LDIuNywwLDAsMC0xLjg5LS44N0M3LjEs''@;'; put 'put ''MTIuMTksNS42OSwxMy43LDUsMTZsLS4yMy43SDJhMSwxLDAsMCwxLDAtMkgzLjI5YzEuMS0yLjgzLDMuMDYtNC41NSw1LjI0LTQuNTVhNC42Nyw0LjY3LDAsMCwxLDMuMTYsMS4zMiw0LjYyLDQuNjIsMCwwLDEsMy4xNS0xLjMyQTQuNjUsNC42NSwwLDAsMSwxOCwxMS41MWE0LjQzLDQuNDMs''@;'; put 'put ''MCwwLDEsNi4zMSwwLDQuNjcsNC42NywwLDAsMSwzLjE2LTEuMzJjMi4xOCwwLDQuMTQsMS43Miw1LjI0LDQuNTVIMzRhMSwxLDAsMCwxLDAsMkgzMS4yOGwtLjIzLS43Yy0uNzQtMi4zNC0yLjE1LTMuODUtMy41OC0zLjg1YTIuNywyLjcsMCwwLDAtMS44OS44NywxMi44OCwxMi44OCwwLDAs''@;'; put 'put ''MSwxLjcxLDYuN0MyNy4yOSwyMy4zMiwyNi4wNywyNS44MSwyNC4zMSwyNS44MVpNMTgsMTQuOTNhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTgsMTQuOTNabTYuMzEsMGExMS43MSwxMS43''@;'; put 'put ''MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwyNC4zMSwxNC45M1ptLTEyLjYyLDBhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEu''@;'; put 'put ''NzEsMCwwLDAsMTEuNjksMTQuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlUmVzaXN0b3I9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjQzLDI2LjM0aDBBMS40NywxLjQ3LDAsMCwxLDI4LDI1LjIyTDI0Ljg2LDEz''@;'; put 'put ''LjE1LDIxLjc0LDI1LjIyYTEuNDksMS40OSwwLDAsMS0xLjQ1LDEuMTJoMGExLjQ5LDEuNDksMCwwLDEtMS40Ni0xLjEyTDE1LjcxLDEzLjE1LDEyLjYsMjUuMjJhMS41MSwxLjUxLDAsMCwxLTIuOTEsMEw2LjU3LDEzLjE1LDUuMjIsMTguMzdIMmExLDEsMCwwLDEsMC0ySDMuNjdsMS40NS01''@;'; put 'put ''LjU5QTEuNDgsMS40OCwwLDAsMSw2LjU3LDkuNjZoMEExLjQ3LDEuNDcsMCwwLDEsOCwxMC43OGwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS40OSwxLjQ5LDAsMCwxLDEuNDUtMS4xMmgwYTEuNDksMS40OSwwLDAsMSwxLjQ2LDEuMTJsMy4xMiwxMi4wNywzLjEyLTEyLjA3YTEuNSwxLjUsMCww''@;'; put 'put ''LDEsMi45LDBsMy4xMiwxMi4wNywxLjM1LTUuMjJIMzRhMSwxLDAsMCwxLDAsMkgzMi4zM2wtMS40NSw1LjU5QTEuNDgsMS40OCwwLDAsMSwyOS40MywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVDYXBhY2l0b3I9KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwxNSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwzNC4wNmExLDEsMCww''@;'; put 'put ''LDEtMS0xVjMuMTVhMSwxLDAsMSwxLDIsMFYzMy4wNkExLDEsMCwwLDEsMjEsMzQuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuNDYsMTlIM2ExLDEsMCwwLDEsMC0ySDE0LjQ2YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMTlIMjEuNTRhMSwxLDAsMCwxLDAtMkgzM2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksVC5DbHJTaGFwZVNxdWlkPSgwLHYuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xOCw3YTEsMSwwLDAsMS0xLTFWMy4xOWExLDEsMCwwLDEsMiwwVjZBMSwxLDAsMCwxLDE4LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYzMGExLDEsMCwwLDEsMiww''@;'; put 'put ''djNBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuNDEsMThsMS43OC0xLjc3YTEsMSwwLDEsMC0xLjQyLTEuNDJMNiwxNi41OSw0LjIzLDE0LjgxYTEsMSwwLDEsMC0xLjQyLDEuNDJMNC41OSwxOCwyLjgx''@;'; put 'put ''LDE5Ljc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUw2LDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBk''@;'; put 'put ''PSJNNiwxMy43NmwuMzYtLjM2YTMsMywwLDAsMSwyLjExLS44OCwxMSwxMSwwLDAsMSwxOSwwLDMsMywwLDAsMSwyLjEyLjg4bC4zNi4zNi4yLS4yYTEzLDEzLDAsMCwwLTI0LjQsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMCwy''@;'; put 'put ''Mi4yNGwtLjM2LjM2YTMsMywwLDAsMS0yLjEyLjg4LDExLDExLDAsMCwxLTE5LDAsMywzLDAsMCwxLTIuMTItLjg4TDYsMjIuMjRsLS4yLjJhMTMsMTMsMCwwLDAsMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQxLDE4''@;'; put 'put ''bDEuNzgtMS43N2ExLDEsMCwwLDAtMS40Mi0xLjQyTDMwLDE2LjU5bC0xLjc3LTEuNzhhMSwxLDAsMSwwLTEuNDIsMS40MkwyOC41OSwxOGwtMS43OCwxLjc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMCwxOS40MWwxLjc3LDEuNzhhMSwx''@;'; put 'put ''LDAsMCwwLDEuNDIsMCwxLDEsMCwwLDAsMC0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksVC5DbHJTaGFwZUhvc3RHcm91cD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuMDgsMzRoLTE0QTEuMDgsMS4wOCwwLDAsMSw2LDMzVjEy''@;'; put 'put ''YTEuMDgsMS4wOCwwLDAsMSwxLjA4LTEuMDhoMTRBMS4wOCwxLjA4LDAsMCwxLDIyLjE2LDEyVjMzQTEuMDgsMS4wOCwwLDAsMSwyMS4wOCwzNFpNOC4xNiwzMS44OEgyMFYxM0g4LjE2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cmVjdCB4PSIx''@;'; put 'put ''MC4wOCIgeT0iMTQuOTYiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yNi4xLDI3LjgxaC0yVjloLTEyVjdoMTNhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLjA4LDIzaC0yVjVoLTExVjNoMTJhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjEzLjA4IiB5PSIyNy44OCIgd2lkdGg9IjIiIGhlaWdodD0iMi4xNiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4wOCwzMSBMMS4wOCwzMSBDMC41MTM0MjcxOTcsMzEuMDAxNTU2NCAwLjA0MTk2NjM3NjUsMzAuNTY1MDE4NiAwLDMwIEww''@;'; put 'put ''LDkgQzAsOC40MDM1MzI0NyAwLjQ4MzUzMjQ3LDcuOTIgMS4wOCw3LjkyIEwxNS4wOCw3LjkyIEMxNS42NzY0Njc1LDcuOTIgMTYuMTYsOC40MDM1MzI0NyAxNi4xNiw5IEwxNi4xNiwzMCBDMTYuMTE4MDMzNiwzMC41NjUwMTg2IDE1LjY0NjU3MjgsMzEuMDAxNTU2NCAxNS4wOCwzMSBaIE00''@;'; put 'put ''LjA4LDExLjk2IEw0LjA4LDEzLjk2IEwxMi4wOCwxMy45NiBMMTIuMDgsMTEuOTYgTDQuMDgsMTEuOTYgWiBNNy4wOCwyNC44OCBMNy4wOCwyNy4wNCBMOS4wOCwyNy4wNCBMOS4wOCwyNC44OCBMNy4wOCwyNC44OCBaIiAvPlxuPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgZD0iTTIwLjEsMjQuODEgTDE4LjEsMjQuODEgTDE4LjEsNiBMNi4xLDYgTDYuMSw0IEwxOS4xLDQgQzE5LjY1MjI4NDcsNCAyMC4xLDQuNDQ3NzE1MjUgMjAuMSw1IEwyMC4xLDI0LjgxIFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''IiBkPSJNMjQuMDgsMjAgTDIyLjA4LDIwIEwyMi4wOCwyIEwxMS4wOCwyIEwxMS4wOCwwIEwyMy4wOCwwIEMyMy42MzIyODQ3LDAgMjQuMDgsMC40NDc3MTUyNSAyNC4wOCwxIEwyNC4wOCwyMCBaIiAvPicpLFQuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj0oMCx2LmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNNi4wNiwzMGExLDEsMCwwLDEtMS0xVjhoLTJhMSwxLDAsMCwxLDAtMmg0VjI5QTEsMSwwLDAsMSw2LjA2LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMwLjA2LDI3aC0yNVY5aDI1YTMsMywwLDAsMSwzLDNWMjRB''@;'; put 'put ''MywzLDAsMCwxLDMwLjA2LDI3Wm0tMjMtMmgyM2ExLDEsMCwwLDAsMS0xVjEyYTEsMSwwLDAsMC0xLTFoLTIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMDYiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMTQiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOS4wNiwyMmgtOFYyMGg3VjE0aDJ2''@;'; put 'put ''N0ExLDEsMCwwLDEsMTkuMDYsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLFQuQ2xyU2hhcGVOb2RlR3JvdXA9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDIxLjU4bC00Ljk0LTIuODNWMTMuMDlhMSwxLDAsMCwwLS41MS0uODdM''@;'; put 'put ''MjIuNjQsOS4xYTEsMSwwLDAsMC0xLDBMMTYuMiwxMi4yMmExLDEsMCwwLDAtLjUxLjg3djUuNjZsLTQuOTQsMi44M2ExLDEsMCwwLDAtLjUuODd2Ni4yNGExLDEsMCwwLDAsLjUuODZsNS40NSwzLjEyYTEsMSwwLDAsMCwxLDBsNC45NS0yLjgzLDQuOTUsMi44M2ExLDEsMCwwLDAsLjUuMTQs''@;'; put 'put ''MSwxLDAsMCwwLC40OS0uMTRsNS40NS0zLjEyYTEsMSwwLDAsMCwuNS0uODZWMjIuNDVBMSwxLDAsMCwwLDMzLjUzLDIxLjU4Wk0yMi4xNCwxMS4xMmw0LjQ1LDIuNTVWMTlsLTQuNDYsMi41Ni00LjQ0LTIuNlYxMy42N1pNMTYuNjksMzAuNjVsLTQuNDQtMi41NFYyM2w0LjY4LTIuNjgsNC40''@;'; put 'put ''LDIuNTdWMjhaTTMyLDI4LjExbC00LjQ0LDIuNTRMMjIuOTMsMjhWMjIuOTNsNC40Ni0yLjU3TDMyLDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcsMjcuNDNhMSwxLDAsMCwxLTEtMVYxOS45QTEsMSwwLDAsMSw2LjUsMTls''@;'; put 'put ''NC45NS0yLjgzVjEwLjU0YTEsMSwwLDAsMSwuNS0uODdsNS4yMS0zYTEsMSwwLDAsMSwxLjM3LjM3LDEsMSwwLDAsMS0uMzgsMS4zN2wtNC43LDIuNjh2NS42NmExLDEsMCwwLDEtLjUxLjg3TDgsMjAuNDh2NS45NUExLDEsMCwwLDEsNywyNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zLDI1LjA1YTEsMSwwLDAsMS0xLTFWMTcuNTNhMSwxLDAsMCwxLC41LS44Nmw1LTIuODRWOC4xN0ExLDEsMCwwLDEsOCw3LjMxbDUuMjUtM2ExLDEsMCwwLDEsMSwxLjc0TDkuNDUsOC43NXY1LjY2YTEsMSwwLDAsMS0uNTEuODdM''@;'; put 'put ''NCwxOC4xMXY1Ljk0QTEsMSwwLDAsMSwzLDI1LjA1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxULkNsclNoYXBlTm9kZXM9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUsMzQuMjksMiwyOS4zOVYxOS41OGw4LjUtNC45LDguNSw0Ljl2''@;'; put 'put ''OS44MVpNNCwyOC4yMywxMC41LDMyLDE3LDI4LjIzVjIwLjc0TDEwLjUsMTcsNCwyMC43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yNS41LDM0LjI5LDE3LDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk0xOSwy''@;'; put 'put ''OC4yMywyNS41LDMyLDMyLDI4LjIzVjIwLjc0TDI1LjUsMTcsMTksMjAuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTgsMjEuMzJsLTguNS00LjlWNi42MUwxOCwxLjcxbDguNSw0Ljl2OS44MVptLTYuNS02LjA2TDE4LDE5''@;'; put 'put ''bDYuNS0zLjc1VjcuNzdMMTgsNCwxMS41LDcuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLFQuQ2xyU2hhcGVOYW1lc3BhY2U9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDQuMThhMSwxLDAsMSwwLTEsMS43M2w2LDMuNDdWMjYuNjJs''@;'; put 'put ''LTYsMy40N2ExLDEsMCwwLDAtLjM3LDEuMzYsMSwxLDAsMCwwLDEuMzcuMzdsNy00LjA1VjguMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNOS42OCwyOS45LDQsMjYuNjJWOS4zOEw5LjY4LDYuMWExLDEsMCwxLDAtMS0xLjcz''@;'; put 'put ''TDIsOC4yM1YyNy43N2w2LjY4LDMuODZhMSwxLDAsMCwwLDEuMzctLjM3QTEsMSwwLDAsMCw5LjY4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTAsMTJWMjRhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjEy''@;'; put 'put ''YTIsMiwwLDAsMC0yLTJIMTJBMiwyLDAsMCwwLDEwLDEyWm03LDB2NUgxMlYxMlptLTUsN2g1djVIMTJabTcsNVYxOWg1djVabTUtN0gxOVYxMmg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxULkNsclNoYXBlTm9kZT0oMCx2LmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNMTgsMzAuNjYsNywyNC4zM1YxMS42N0wxOCw1LjM0bDExLDYuMzNWMjQuMzNaTTksMjMuMThsOSw1LjE3LDktNS4xN1YxMi44MkwxOCw3LjY1LDksMTIuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLFQuQ2xyU2hhcGVQb2Q9''@;'; put 'put ''KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDMySDEwYTYsNiwwLDAsMS02LTZWMTBhNiw2LDAsMCwxLDYtNkgyNmE2LDYsMCwwLDEsNiw2VjI2QTYsNiwwLDAsMSwyNiwzMlpNMTAsNmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjZhNCw0LDAsMCwwLDQtNFYxMGE0LDQs''@;'; put 'put ''MCwwLDAtNC00WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI2LjU2LDE1SDE1LjQ0QTEuNDMsMS40MywwLDAsMCwxNCwxNi40NHY4LjEyQTEuNDMsMS40MywwLDAsMCwxNS40NCwyNkgyNi41NkExLjQzLDEuNDMsMCwwLDAsMjgs''@;'; put 'put ''MjQuNTZWMTYuNDRBMS40MywxLjQzLDAsMCwwLDI2LjU2LDE1Wk0yNiwyNEgxNlYxN0gyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMi40LDE5SDEwVjEySDIwdjEuNGgydi0yQTEuNDMsMS40MywwLDAsMCwyMC41NiwxMEg5''@;'; put 'put ''LjQ0QTEuNDMsMS40MywwLDAsMCw4LDExLjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDkuNDQsMjFoM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksVC5DbHJDb250cm9sTHVuPSgwLHYuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNOCwyNC41OWEy''@;'; put 'put ''NS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4czkuMS0uNDUs''@;'; put 'put ''MTItMS44OHY1LjExYy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4zM1YxOGE0MC44Niw0MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlY4aDBzMCwwLDAtLjA3YzAtMy4zNS04LjgtNC4yNS0xNC00LjI1UzQsNC41''@;'; put 'put ''OCw0LDcuOTN2MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWk0xOCw1LjY4YzcuMTUsMCwxMS41MywxLjQ0LDEyLDIuMjUtLjQ2LjgxLTQuODQsMi4yNS0xMiwyLjI1UzYuMzEsOC42OSw2LDhDNi4zMSw3LjE4LDEwLjcx''@;'; put 'put ''LDUuNjgsMTgsNS42OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRs''@;'; put 'put ''LTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGgg''@;'; put 'put ''ZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0xOCwxNy41NEEzNC44''@;'; put 'put ''MSwzNC44MSwwLDAsMSw4LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMtLjQ1LDEyLTEuOTF2My4yM2gyVjEzLjIyYTcuMzIsNy4zMiwwLDAsMS0yLC4yOHYxLjkxQzI5LjA5LDE2LjIzLDI1LDE3LjU0LDE4LDE3LjU0WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhhNDcuNjYsNDcuNjYsMCwwLDAsNy4wOS0uNTIsNy40NSw3LjQ1LDAsMCwxLTEuNTEtMS44LDQ3LjQsNDcuNCwwLDAsMS01''@;'; put 'put ''LjU4LjMyQzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIuMywxLjY2LDAsMy4xNi4wOCw0LjUxLjIxYTcuNTYsNy41NiwwLDAsMSwuMjktMmMtMS43LS4xNy0zLjM4LS4yNC00LjgtLjI0LTUuMiwwLTE0LC45LTE0LDQuMjV2MTkuNmMwLDIsMy4xNywzLjE0''@;'; put 'put ''LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTgsMjQuNTlhMjUuNSwyNS41LDAsMCwwLDIuNzUuNTlsMS4yMS0xLjQxYTI0LjEzLDI0LjEzLDAsMCwxLTQtLjgzWiIvPjxwYXRoIGQ9Ik0zMi4wOSwyMkgxNS40NmwtNS40''@;'; put 'put ''MSw2LjMxTDE1LjQ5LDM0aDE2LjZhMiwyLDAsMCwwLDItMlYyMy45M0EyLDIsMCwwLDAsMzIuMDksMjJabTAsMTBIMTYuMzRsLTMuNTktMy43N0wxNi4zOCwyNEgzMi4wOXY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgs''@;'; put 'put ''MTIsMS44OGguNTlhMy41OSwzLjU5LDAsMCwxLC4zMi0ySDE4QzEwLjcxLDEwLjE4LDYuMzEsOC42OSw2LDhjLjMyLS44LDQuNzItMi4zLDEyLTIuMywxLjIyLDAsMi4zNS4wNSwzLjQxLjEybDEuMS0xLjkxYy0xLjYtLjE1LTMuMTctLjIxLTQuNTEtLjIxLTUuMiwwLTE0LC45LTE0LDQuMjV2''@;'; put 'put ''MTkuNmMwLDIsMy4xNywzLjE0LDYuODMsMy43Mkw4LjM4LDI4LjY4QzcsMjguMjgsNi4xMywyNy44NCw2LDI3LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTgsMTYuMzNWMThhNDAuODYsNDAu''@;'; put 'put ''ODYsMCwwLDAsMTAsMS4xNmMzLjQ2LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTUuNEgzMGMtLjkxLjgyLTUsMi4xMy0xMiwyLjEzQTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRl''@;'; put 'put ''ZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzIuMDks''@;'; put 'put ''MjFIMzJWMTcuMzJjLTEuOSwyLjkzLTEwLjQ2LDMuMy0xNCwzLjNBNDIuNDMsNDIuNDMsMCwwLDEsOCwxOS41NlYxNy44OEE0MC41OSw0MC41OSwwLDAsMCwxOCwxOWM1LDAsMTMuMi0uODIsMTQtMy44MlYxMC43MmMtMi4yMSwzLjM2LTEwLjQ5LDMuNDYtMTQsMy40NkE0Mi4xMiw0Mi4xMiww''@;'; put 'put ''LDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRjNSwwLDEzLjI4LS44MywxNC0zLjg4VjcuODNoMGMtLjE5LTMuMjctOC44NC00LjE1LTE0LTQuMTVTNC4yMSw0LjU2LDQsNy44M0g0djE5LjdjMCwyLjE2LDMuNjQsMy4zLDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3''@;'; put 'put ''YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAsMy40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAsMS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45''@;'; put 'put ''MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuXG4gIDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgydi0yYTcuMzQsNy4z''@;'; put 'put ''NCwwLDAsMS00LjEyLDAsMzkuNDcsMzkuNDcsMCwwLDEtOS44OCwxQTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAuNTksNDAuNTksMCwwLDAsMTAsMS4xNCw0Ny43Niw0Ny43NiwwLDAsMCw3LjA5LS41MkE3LjQ1LDcuNDUsMCwwLDEsMjIuOCwzLjkyYy0xLjctLjE3LTMuMzgtLjI0''@;'; put 'put ''LTQuOC0uMjQtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4xNiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwzLC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4y''@;'; put 'put ''NCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwzMmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQsMjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAsMSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4''@;'; put 'put ''LDE5YzQuODUsMCwxMi44LS43OSwxMy45MS0zLjYySDIyLjIzYTMuNjgsMy42OCwwLDAsMS0yLjczLTEuMjNIMThBNDIuMTIsNDIuMTIsMCwwLDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0aC41OWEzLjYxLDMuNjEsMCwwLDEsLjQ2LTIuMjlsMy40Ni02Yy0xLjYtLjE1''@;'; put 'put ''LTMuMTctLjIxLTQuNTEtLjIxLTUuMTQsMC0xMy43OS44OC0xNCw0LjE1SDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42MywzLjg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEyNS43OSwyNS43OSwwLDAsMCwz''@;'; put 'put ''LjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgxNS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxULkNsclNoYXBlTWVkaWFDaGFuZ2VyPSgwLHYuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAs''@;'; put 'put ''MCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMCw0Wk02LDMwVjZIMzBWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiLz48cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMjcuMjIsMTBIMjB2NGEuOC44LDAsMSwwLDEuNTksMFYxMS42aDUuNjNh''@;'; put 'put ''LjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVj''@;'; put 'put ''dCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC04Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9''@;'; put 'put ''IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4''@;'; put 'put ''LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4''@;'; put 'put ''LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtOS0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0yMCwxNGEuOC44LDAsMSwwLDEuNTksMFYxMS42SDI1QTcuNzQsNy43NCwwLDAsMSwyMy42NiwxMEgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiLz5cbiAgPHBh''@;'; put 'put ''dGggZD0iTTMwLDEzLjVoMFYzMEg2VjZIMjIuNVY2YTcuMzcsNy4zNywwLDAsMSwuMjgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3''@;'; put 'put ''LDcuMzcsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Mi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHJlY3QgeD0iMjAiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjQiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhl''@;'; put 'put ''aWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTQiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC02LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE4IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9Ijgu''@;'; put 'put ''MTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjYiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC05LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxNS40VjMwSDZWNkgyMS4yN2wxLjE4LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFM''@;'; put 'put ''MjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4Ljgx''@;'; put 'put ''VjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWm0wLTZIMjBWMTBoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cblxuICA8cGF0aCBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtNC0xLjE2VjE0''@;'; put 'put ''SDIwVjEwaDMuNjZBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmE3LjM3LDcuMzcsMCwwLDEsLjI4LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJB''@;'; put 'put ''Ny4zNyw3LjM3LDAsMCwxLDMwLDEzLjVaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRIMTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik0yMi4yMywxNS40YTMuNjgsMy42OCwwLDAsMS0zLjE4LTUuNTFMMjIuNDUsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0xNywyOEg4''@;'; put 'put ''LjgxVjI2SDE3Wm0wLTRIOC44MVYyMkgxN1ptMC00SDguODFWMThIMTdabTAtNEg4LjgxVjE0SDE3Wm0wLTRIOC44MVYxMEgxN1pNMjIsMjRIMjBWMjJoMlptMC00SDIwVjE4aDJabTQsNEgyNFYyMmgyWm0wLTRIMjRWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLFQuQ2xyU2hhcGVUYXBlRHJpdmU9KDAsdi5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEzLjMzLDEzLjM1YTQuNTIsNC41MiwwLDEsMCw0LjUzLDQuNTJBNC41Myw0LjUzLDAsMCwwLDEzLjMzLDEzLjM1''@;'; put 'put ''Wm0wLDcuNDRhMi45MiwyLjkyLDAsMSwxLDIuOTMtMi45MkEyLjkyLDIuOTIsMCwwLDEsMTMuMzMsMjAuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNjIsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTIsNC41MkE0LjUz''@;'; put 'put ''LDQuNTMsMCwwLDAsMjMuNjIsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45Mi0yLjkyQTIuOTIsMi45MiwwLDAsMSwyMy42MiwyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik02LDExVjIzLjU1SDhWMTJIMjku''@;'; put 'put ''MzRWMTBIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG5cbiAgPHBhdGggZD0iTTguODEsMTcuODdhNC41Myw0LjUzLDAsMSwwLDQuNTItNC41MkE0LjUzLDQuNTMsMCwwLDAsOC44MSwxNy44N1ptNy40NSwwQTIuOTMsMi45''@;'; put 'put ''MywwLDEsMSwxMy4zMywxNSwyLjkzLDIuOTMsMCwwLDEsMTYuMjYsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE5LjEsMTcuODdhNC41Miw0LjUyLDAsMSwwLDQuNTItNC41MkE0LjUzLDQu''@;'; put 'put ''NTMsMCwwLDAsMTkuMSwxNy44N1ptNy40NCwwQTIuOTIsMi45MiwwLDEsMSwyMy42MiwxNSwyLjkyLDIuOTIsMCwwLDEsMjYuNTQsMTcuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLDEzLjIy''@;'; put 'put ''VjI4SDRWOEgyMi43OGE3LjM3LDcuMzcsMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjY1LDcuNjUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyNS41MWE3LjY2LDcuNjYsMCwwLDEtMS44NS0ySDdBMSwxLDAsMCwwLDYsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4Ljgx''@;'; put 'put ''LDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik03LDEwYTEsMSwwLDAsMC0xLDFW''@;'; put 'put ''MjMuNTVIOFYxMkgxOC41N0EzLjcsMy43LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMjhINFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhW''@;'; put 'put ''MjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTIyLjA5LDE1LjM5YTMuNjUsMy42NSwwLDAsMS0xLjgtLjU1LDQuNTEsNC41MSww''@;'; put 'put ''LDEsMCw3LjExLjU2SDI1LjE3YTIuOTIsMi45MiwwLDEsMS0zLjA4LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywx''@;'; put 'put ''M0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMy''@;'; put 'put ''LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0zMCwyNEg2VjEySDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1''@;'; put 'put ''LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTIzLjc5LDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDIzLjc5LDIzWm0wLTdhMiwyLDAs''@;'; put 'put ''MSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG5cbiAgPHBhdGggZD0iTTEyLjIxLDIzYTUsNSwwLDEsMC01LTVBNSw1LDAsMCwwLDEyLjIxLDIzWm0wLTdhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTIuMjEsMTZa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gIDxwYXRoIGQ9Ik0zMCwxMy41VjI0SDZWMTJIMjUuNTFhNy40OSw3LjQ5LDAsMCwxLTMtNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDksNy40''@;'; put 'put ''OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik03LjIsMThhNSw1LDAsMSwwLDUtNUE1LDUsMCwwLDAsNy4yLDE4Wm03LDBhMiwyLDAsMSwxLTItMkEyLDIsMCwwLDEsMTQuMjIsMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4g''@;'; put 'put ''IDxwYXRoIGQ9Ik0xOC43OCwxOGE1LDUsMCwxLDAsOS4yNy0yLjZIMjIuMjNhMy43MSwzLjcxLDAsMCwxLTIuMTctLjcxQTUsNSwwLDAsMCwxOC43OCwxOFptNS0yYTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMFYyNEg2VjEySDE4LjU3YTMuNjUsMy42NSwwLDAsMSwuNDgtMi4xMUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxULkNsclNoYXBlQW5pbWF0aW9uPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC4xNiwzMS43MWE0LjQsNC40LDAsMCwx''@;'; put 'put ''LTQuNjQtMUE0LjM0LDQuMzQsMCwwLDEsNC4yMywyNy42YTQuNDEsNC40MSwwLDAsMSwuMTgtMS4yLDExLjYxLDExLjYxLDAsMCwxLTEtMi41Niw2LjQsNi40LDAsMCwwLDkuMzMsOC42M0ExMS41NSwxMS41NSwwLDAsMSwxMC4xNiwzMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MSwyNy42OGE3LjYxLDcuNjEsMCwwLDEtOS4wOC0xLjI2LDcuNTgsNy41OCwwLDAsMS0xLjI3LTkuMDYsMTQuMjYsMTQuMjYsMCwwLDEtLjM3LTIuODUsOS41OCw5LjU4LDAsMCwwLC4yMiwxMy4zMyw5LjYzLDkuNjMsMCwwLDAs''@;'; put 'put ''MTMuMzUuMjJBMTQuNDYsMTQuNDYsMCwwLDEsMTguNDEsMjcuNjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNjYsMjYuMjFhMTIuMSwxMi4xLDAsMSwxLDguNTctMy41NGgwQTEyLjExLDEyLjExLDAsMCwxLDIxLjY2LDI2''@;'; put 'put ''LjIxWk0yMS42Niw0QTEwLjExLDEwLjExLDAsMCwwLDExLjU0LDE0LjExYTEwLDEwLDAsMCwwLDMsNy4xNCwxMC4xMiwxMC4xMiwwLDAsMCwxNC4zMSwwQTEwLjExLDEwLjExLDAsMCwwLDIxLjY2LDRabTcuODYsMThoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIi8+XG4gIFxuICA8cGF0aCBkPSJNMy41LDIzLjc3YTYuNDEsNi40MSwwLDAsMCw5LjMzLDguNjdBMTEuNjUsMTEuNjUsMCwwLDEsMy41LDIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy42OCwxNC41M2E5LjYsOS42LDAs''@;'; put 'put ''MCwwLDEzLjQsMTMuN0ExNC4xMSwxNC4xMSwwLDAsMSw3LjY4LDE0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNzgsMkExMi4xMiwxMi4xMiwwLDEsMSw5LjY2LDE0LjE1LDEyLjEyLDEyLjEyLDAsMCwxLDIxLjc4LDIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgJyksVC5DbHJTaGFwZUNpQ2Q9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjUzLDE5LjgxYTcuNDUsNy40NSwwLDAsMS0xLjY1LS4xOCwxMC40OCwxMC40OCwwLDAsMSwuNzIsMi4xM2MuMywwLC42MSwwLC45''@;'; put 'put ''MywwYTkuNTIsOS41MiwwLDAsMCwzLS40OWwtLjkzLTEuODFBNy42Nyw3LjY3LDAsMCwxLDIzLjUzLDE5LjgxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjM2LDE3Ljg3LDE4LDE3LjQ5YTcuNCw3LjQsMCwwLDEtMi4yLTUu''@;'; put 'put ''OTIsNy4zMSw3LjMxLDAsMCwxLDEuNTQtNEwxNy4yNiw5QTEsMSwwLDAsMCwxOC4xNywxMGguMDlhMSwxLDAsMCwwLDEtLjkxTDE5LjYsNWExLDEsMCwwLDAtLjI5LS43OUExLDEsMCwwLDAsMTguNTIsNGwtNC4wOS4zNWExLDEsMCwwLDAsLjE3LDJsMS4yOS0uMTFhOS40NSw5LjQ1LDAsMCww''@;'; put 'put ''LTIuMDUsNS4zMiw5LjI4LDkuMjgsMCwwLDAsMi42Nyw3LjI2bC4zMS4zN2E3LjMzLDcuMzMsMCwwLDEsMi4wNiw0LjkxLDcuMzksNy4zOSwwLDAsMS0uMjYsMi40N2wxLjguOTFhOC43Niw4Ljc2LDAsMCwwLC40NS0zLjUxQTkuMjgsOS4yOCwwLDAsMCwxOC4zNiwxNy44N1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMi40LDE3LjkxLDMxLjE5LDE4QTkuNjUsOS42NSwwLDAsMCwyMy41MywyLjQ1YTkuMzMsOS4zMywwLDAsMC0zLC40OWwuOTEsMS44YTcuNjcsNy42NywwLDAsMSw5Ljc2LDcuMzksNy41OCw3LjU4LDAs''@;'; put 'put ''MCwxLTEuNjUsNC43MmwuMS0xLjU0YTEsMSwwLDEsMC0yLS4xM2wtLjI4LDQuMDhhMSwxLDAsMCwwLC4zMS43OC45NC45NCwwLDAsMCwuNjkuMjhoLjFsNC4wOC0uNDJhMSwxLDAsMCwwLC45LTEuMUExLDEsMCwwLDAsMzIuNCwxNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik00LjA3LDIwLjQ0aC4wOGw0LjA5LS4zNWExLDEsMCwxLDAtLjE3LTJsLTEuMzkuMTJhNy42Myw3LjYzLDAsMCwxLDQuNTItMS40OSw3LjksNy45LDAsMCwxLDEuNjMuMTgsMTAuMjMsMTAuMjMsMCwwLDEtLjcxLTIuMTNjLS4zLDAtLjYxLDAt''@;'; put 'put ''LjkyLDBhOS42Niw5LjY2LDAsMCwwLTUuOSwybC4xMi0xLjMxYTEsMSwwLDAsMC0uOTItMS4wOCwxLDEsMCwwLDAtMS4wOC45MWwtLjM1LDQuMDhhMSwxLDAsMCwwLDEsMS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC40''@;'; put 'put ''MiwyOC4yM2wtNC4wOS4yN2ExLDEsMCwwLDAsLjEzLDJMMTYsMzAuMzlhNy43MSw3LjcxLDAsMCwxLTEyLjU0LTYsNy42LDcuNiwwLDAsMSwuMjktMkwyLDIxLjQ2YTkuNTksOS41OSwwLDAsMC0uNDcsMi45NUE5LjcsOS43LDAsMCwwLDE3LjE5LDMybC0uMTIsMS4xOGExLDEsMCwwLDAsLjg5''@;'; put 'put ''LDEuMWguMTFhMSwxLDAsMCwwLDEtLjlsLjQyLTQuMDZhMSwxLDAsMCwwLTEuMDYtMS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxULkNsclNoYXBlRmlsZVNoYXJlMj0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEg3LjgzQTEuODks''@;'; put 'put ''MS44OSwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OSwxLjg5LDAsMCwwLDcuODMsMzJIMjguMTdBMS44NywxLjg3LDAsMCwwLDMwLDMwLjA5VjlaTTI0LDUuNzgsMjguMiwxMEgyNFpNOCwzMFY2SDIydjZoNlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0yMiwyMS44MWEyLjExLDIuMTEsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2di0uNDRsNS42Ni0yLjY1YTIuMDgsMi4wOCwwLDEsMCwuMDYtMi45NGgwYTIuMTQsMi4xNCwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVs''@;'; put 'put ''LjA4LS4wOCw1LjY3LDIuNjZ2LjNBMi4wOSwyLjA5LDAsMSwwLDIyLDIxLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0yNSw0LjA2SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNlYzMC4xNWExLjg5LDEuODksMCwwLDAs''@;'; put 'put ''MS44MywxLjkxSDI4LjE3QTEuODcsMS44NywwLDAsMCwzMCwzMC4xNVY5Wk0yMiwyNmEyLjA5LDIuMDksMCwwLDEtMi4xLTIuMDh2LS4zTDE0LjI3LDIxbC0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMTQsMi4xNCwwLDAsMSwuNjQtMS40OGgwYTIu''@;'; put 'put ''MDgsMi4wOCwwLDEsMS0uMDYsMi45NGwtNS42NiwyLjY1di40NGw1LjcyLDIuNjZBMi4xMSwyLjExLDAsMCwxLDIyLDIxLjgxbDAsMEEyLjA5LDIuMDksMCwwLDEsMjIsMjZabTItMTZWNS44NGw0LjIsNC4yMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxU''@;'; put 'put ''LlRlY2hub2xvZ3lTaGFwZXM9eyJydWxlci1wZW5jaWwiOlQuQ2xyU2hhcGVSdWxlclBlbmNpbCwicGhvbmUtaGFuZHNldCI6VC5DbHJTaGFwZVBob25lSGFuZHNldCwibm8td2lmaSI6VC5DbHJTaGFwZU5vV2lmaSxpbnN0YWxsOlQuQ2xyU2hhcGVJbnN0YWxsLHVuaW5zdGFsbDpULkNsclNo''@;'; put 'put ''YXBlVW5pbnN0YWxsLGxheWVyczpULkNsclNoYXBlTGF5ZXJzLGJsb2NrOlQuQ2xyU2hhcGVCbG9jaywiYmxvY2tzLWdyb3VwIjpULkNsclNoYXBlQmxvY2tzR3JvdXAsYnVuZGxlOlQuQ2xyU2hhcGVCdW5kbGUsd2lmaTpULkNsclNoYXBlV2lmaSwicmFjay1zZXJ2ZXIiOlQuQ2xyU2hhcGVS''@;'; put 'put ''YWNrU2VydmVyLCJoYXJkLWRpc2siOlQuQ2xyU2hhcGVIYXJkRGlzaywiYmFja3VwLXJlc3RvcmUiOlQuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlLGJhY2t1cDpULkNsclNoYXBlQmFja3VwLGRldmljZXM6VC5DbHJTaGFwZURldmljZXMsa2V5Ym9hcmQ6VC5DbHJTaGFwZUtleWJvYXJkLG1vdXNl''@;'; put 'put ''OlQuQ2xyU2hhcGVNb3VzZSxkYXNoYm9hcmQ6VC5DbHJTaGFwZURhc2hib2FyZCxob3N0OlQuQ2xyU2hhcGVIb3N0LHN0b3JhZ2U6VC5DbHJTaGFwZVN0b3JhZ2UsY2x1c3RlcjpULkNsclNoYXBlQ2x1c3RlcixhcHBsaWNhdGlvbnM6VC5DbHJTaGFwZUFwcGxpY2F0aW9ucyxidWlsZGluZzpU''@;'; put 'put ''LkNsclNoYXBlQnVpbGRpbmcsY3B1OlQuQ2xyU2hhcGVDUFUsbWVtb3J5OlQuQ2xyU2hhcGVNZW1vcnksImRhdGEtY2x1c3RlciI6VC5DbHJTaGFwZURhdGFDbHVzdGVyLCJyZXNvdXJjZS1wb29sIjpULkNsclNoYXBlUmVzb3VyY2VQb29sLHNoaWVsZDpULkNsclNoYXBlU2hpZWxkLCJzaGll''@;'; put 'put ''bGQtY2hlY2siOlQuQ2xyU2hhcGVTaGllbGRDaGVjaywic2hpZWxkLXgiOlQuQ2xyU2hhcGVTaGllbGRYLGltcG9ydDpULkNsclNoYXBlSW1wb3J0LGV4cG9ydDpULkNsclNoYXBlRXhwb3J0LCJ1cGxvYWQtY2xvdWQiOlQuQ2xyU2hhcGVVcGxvYWRDbG91ZCwiZG93bmxvYWQtY2xvdWQiOlQu''@;'; put 'put ''Q2xyU2hhcGVEb3dubG9hZENsb3VkLHBsdWdpbjpULkNsclNoYXBlUGx1Z2luLGZsb3BweTpULkNsclNoYXBlRmxvcHB5LGNvbXB1dGVyOlQuQ2xyU2hhcGVDb21wdXRlcixkaXNwbGF5OlQuQ2xyU2hhcGVEaXNwbGF5LHRlcm1pbmFsOlQuQ2xyU2hhcGVUZXJtaW5hbCxjb2RlOlQuQ2xyU2hh''@;'; put 'put ''cGVDb2RlLGFwcGxpY2F0aW9uOlQuQ2xyU2hhcGVBcHBsaWNhdGlvbixiYXR0ZXJ5OlQuQ2xyU2hhcGVCYXR0ZXJ5LG1vYmlsZTpULkNsclNoYXBlTW9iaWxlLHRhYmxldDpULkNsclNoYXBlVGFibGV0LCJuZXR3b3JrLWdsb2JlIjpULkNsclNoYXBlTmV0d29ya0dsb2JlLCJuZXR3b3JrLXNl''@;'; put 'put ''dHRpbmdzIjpULkNsclNoYXBlTmV0d29ya1NldHRpbmdzLCJuZXR3b3JrLXN3aXRjaCI6VC5DbHJTaGFwZU5ldHdvcmtTd2l0Y2gscm91dGVyOlQuQ2xyU2hhcGVSb3V0ZXIsdm06VC5DbHJTaGFwZVZNLCJ2bXctYXBwIjpULkNsclNoYXBlVk1XQXBwLGNlcnRpZmljYXRlOlQuQ2xyU2hhcGVD''@;'; put 'put ''ZXJ0aWZpY2F0ZSxhcmNoaXZlOlQuQ2xyU2hhcGVBcmNoaXZlLHVuYXJjaGl2ZTpULkNsclNoYXBlVW5hcmNoaXZlLGNvbm5lY3Q6VC5DbHJTaGFwZUNvbm5lY3QsZGlzY29ubmVjdDpULkNsclNoYXBlRGlzY29ubmVjdCxsaW5rOlQuQ2xyU2hhcGVMaW5rLHVubGluazpULkNsclNoYXBlVW5s''@;'; put 'put ''aW5rLCJjbG91ZC1uZXR3b3JrIjpULkNsclNoYXBlQ2xvdWROZXR3b3JrLCJjbG91ZC1zY2FsZSI6VC5DbHJTaGFwZUNsb3VkU2NhbGUsImNsb3VkLXRyYWZmaWMiOlQuQ2xyU2hhcGVDbG91ZFRyYWZmaWMsImNvbnRyb2wtbHVuIjpULkNsckNvbnRyb2xMdW4sZGVwbG95OlQuQ2xyU2hhcGVE''@;'; put 'put ''ZXBsb3ksaGVsaXg6VC5DbHJTaGFwZUhlbGl4LGZsYXNrOlQuQ2xyU2hhcGVGbGFzayxhZG1pbmlzdHJhdG9yOlQuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yLCJoYXJkLWRyaXZlIjpULkNsclNoYXBlSGFyZERyaXZlLCJoYXJkLWRyaXZlLWRpc2tzIjpULkNsclNoYXBlSGFyZERyaXZlRGlza3Ms''@;'; put 'put ''bnZtZTpULkNsclNoYXBlTlZNZSxzc2Q6VC5DbHJTaGFwZVNTRCxibHVldG9vdGg6VC5DbHJTaGFwZUJsdWV0b290aCwiYmx1ZXRvb3RoLW9mZiI6VC5DbHJTaGFwZUJsdWV0b290aE9mZiwicHJvY2Vzcy1vbi12bSI6VC5DbHJTaGFwZVByb2Nlc3NPblZNLCJhc3NpZ24tdXNlciI6VC5DbHJT''@;'; put 'put ''aGFwZUFzc2lnblVzZXIsYXRvbTpULkNsclNoYXBlQXRvbSwiYmFyLWNvZGUiOlQuQ2xyU2hhcGVCYXJDb2RlLCJjZC1kdmQiOlQuQ2xyU2hhcGVDZER2ZCxjb250YWluZXI6VC5DbHJTaGFwZUNvbnRhaW5lciwiY29udGFpbmVyLXZvbHVtZSI6VC5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZSwi''@;'; put 'put ''ZmlsZS1zaGFyZSI6VC5DbHJTaGFwZUZpbGVTaGFyZSwicXItY29kZSI6VC5DbHJTaGFwZVFyQ29kZSx1c2I6VC5DbHJTaGFwZVVzYixyYWRhcjpULkNsclNoYXBlUmFkYXIsY2FwYWNpdG9yOlQuQ2xyU2hhcGVDYXBhY2l0b3Isc3F1aWQ6VC5DbHJTaGFwZVNxdWlkLGluZHVjdG9yOlQuQ2xy''@;'; put 'put ''U2hhcGVJbmR1Y3RvcixyZXNpc3RvcjpULkNsclNoYXBlUmVzaXN0b3IsImhvc3QtZ3JvdXAiOlQuQ2xyU2hhcGVIb3N0R3JvdXAsInN0b3JhZ2UtYWRhcHRlciI6VC5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyLCJub2RlLWdyb3VwIjpULkNsclNoYXBlTm9kZUdyb3VwLG5vZGVzOlQuQ2xyU2hh''@;'; put 'put ''cGVOb2RlcyxuYW1lc3BhY2U6VC5DbHJTaGFwZU5hbWVzcGFjZSxub2RlOlQuQ2xyU2hhcGVOb2RlLHBvZDpULkNsclNoYXBlUG9kLCJtZWRpYS1jaGFuZ2VyIjpULkNsclNoYXBlTWVkaWFDaGFuZ2VyLCJ0YXBlLWRyaXZlIjpULkNsclNoYXBlVGFwZURyaXZlLGFuaW1hdGlvbjpULkNsclNo''@;'; put 'put ''YXBlQW5pbWF0aW9uLCJjaS1jZCI6VC5DbHJTaGFwZUNpQ2QsImZpbGUtc2hhcmUtMiI6VC5DbHJTaGFwZUZpbGVTaGFyZTJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULlRlY2hub2xvZ3lTaGFwZXMsInNlcnZlciIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlRlY2hub2xvZ3lTaGFwZXMu''@;'; put 'put ''aG9zdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULlRlY2hub2xvZ3lTaGFwZXMsImNvbW1hbmQiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5UZWNobm9sb2d5U2hhcGVzLnRlcm1pbmFsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuVGVjaG5vbG9neVNoYXBlcywibW9iaWxlLXBob25l''@;'; put 'put ''IiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuVGVjaG5vbG9neVNoYXBlcy5tb2JpbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5UZWNobm9sb2d5U2hhcGVzLCJsaWNlbnNlIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuVGVjaG5vbG9neVNoYXBlcy5jZXJ0aWZpY2F0ZSkpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShULlRlY2hub2xvZ3lTaGFwZXMsImRpc2Nvbm5lY3RlZCIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlRlY2hub2xvZ3lTaGFwZXNbIm5vLXdpZmkiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULlRlY2hub2xvZ3lTaGFwZXMsInJlY2VpdmVyIiwoMCxrLmRl''@;'; put 'put ''c2NyaXB0b3JDb25maWcpKFQuVGVjaG5vbG9neVNoYXBlc1sicGhvbmUtaGFuZHNldCJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuVGVjaG5vbG9neVNoYXBlcywiZGVzaWduIiwoMCxrLmRlc2NyaXB0b3JDb25maWcpKFQuVGVjaG5vbG9neVNoYXBlc1sicnVsZXItcGVuY2lsIl0pKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoVC5UZWNobm9sb2d5U2hhcGVzLCJkbmEiLCgwLGsuZGVzY3JpcHRvckNvbmZpZykoVC5UZWNobm9sb2d5U2hhcGVzLmhlbGl4KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuVGVjaG5vbG9neVNoYXBlcywiZm9sZGVyLXNoYXJlIiwoMCxrLmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKFQuVGVjaG5vbG9neVNoYXBlc1siZmlsZS1zaGFyZSJdKSksdHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKFQuVGVjaG5vbG9neVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50''@;'; put 'put ''cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuVGV4dEVkaXRTaGFwZXM9VC5DbHJTaGFwZVN1cGVyc2NyaXB0PVQuQ2xyU2hhcGVTdWJzY3JpcHQ9VC5DbHJTaGFwZVN0cmlrZXRocm91Z2g9VC5DbHJTaGFwZUluZGVudD1ULkNsclNoYXBlT3V0ZGVudD1ULkNsclNoYXBlSGlnaGxpZ2h0''@;'; put 'put ''ZXI9VC5DbHJTaGFwZVRleHRDb2xvcj1ULkNsclNoYXBlTGFuZ3VhZ2U9VC5DbHJTaGFwZUFsaWduVG9wPVQuQ2xyU2hhcGVBbGlnbk1pZGRsZT1ULkNsclNoYXBlQWxpZ25Cb3R0b209VC5DbHJTaGFwZVVuZGVybGluZT1ULkNsclNoYXBlVGV4dD1ULkNsclNoYXBlQWxpZ25SaWdodFRleHQ9''@;'; put 'put ''VC5DbHJTaGFwZUJsb2NrUXVvdGU9VC5DbHJTaGFwZVBhaW50Um9sbGVyPVQuQ2xyU2hhcGVOdW1iZXJMaXN0PVQuQ2xyU2hhcGVBbGlnbkxlZnRUZXh0PVQuQ2xyU2hhcGVKdXN0aWZ5VGV4dD1ULkNsclNoYXBlSXRhbGljPVQuQ2xyU2hhcGVBbGlnblJpZ2h0PVQuQ2xyU2hhcGVBbGlnbkxl''@;'; put 'put ''ZnQ9VC5DbHJTaGFwZUFsaWduQ2VudGVyPVQuQ2xyU2hhcGVGb250U2l6ZT1ULkNsclNoYXBlQ2hlY2tib3hMaXN0PVQuQ2xyU2hhcGVDZW50ZXJUZXh0PVQuQ2xyU2hhcGVCdWxsZXRMaXN0PVQuQ2xyU2hhcGVCb2xkPXZvaWQgMDt2YXIgaz1zZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2Vu''@;'; put 'put ''ZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1QuQ2xyU2hhcGVCb2xkPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi40MywxNy41NGE0LjY3LDQuNjcsMCwwLDAsMi44LTQuMzd2LS4wNmE0LjQzLDQuNDMsMCwwLDAtMS4z''@;'; put 'put ''MS0zLjI1LDcuMDksNy4wOSwwLDAsMC01LjEzLTEuNzNoLTdBMS43MSwxLjcxLDAsMCwwLDEwLDkuODZWMjZhMS43MiwxLjcyLDAsMCwwLDEuNzQsMS43NGg3LjMzYzQuMzcsMCw3LjI1LTEuODgsNy4yNS01LjM4VjIyLjNDMjYuMzIsMTkuNjQsMjQuNzMsMTguMzIsMjIuNDMsMTcuNTRaTTEz''@;'; put 'put ''LjY4LDExLjRoNC41NGMyLDAsMy4xNS44OSwzLjE1LDIuMzN2LjA2YzAsMS42OC0xLjM2LDIuNDktMy4zOCwyLjQ5SDEzLjY4Wk0yMi4zNywyMmMwLDEuNTktMS4zMSwyLjQzLTMuNDYsMi40M0gxMy42OFYxOS42Mmg1YzIuNDksMCwzLjY5Ljg4LDMuNjksMi4zN1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVCdWxsZXRMaXN0PSgwLGsuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjUuMjEiIGN5PSI5LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSI1''@;'; put 'put ''LjIxIiBjeT0iMTcuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUgY3g9IjUuMjEiIGN5PSIyNS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMyLjQyLDlh''@;'; put 'put ''MSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxULkNsclNoYXBlQ2VudGVyVGV4dD0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuODgs''@;'; put 'put ''OEg1LjEyYTEuMSwxLjEsMCwwLDAsMCwyLjJIMzAuODhhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNS41LDE2LjJhMS4xLDEuMSwwLDEsMCwwLTIuMmgtMTVhMS4xLDEuMSwwLDEsMCwwLDIuMloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMC4yNSwyMEg1Ljc1YTEuMSwxLjEsMCwwLDAsMCwyLjJoMjQuNWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBh''@;'; put 'put ''dGggZD0iTTI0Ljg4LDI2SDExLjEyYTEuMSwxLjEsMCwxLDAsMCwyLjJIMjQuODhhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFQuQ2xyU2hhcGVDaGVja2JveExpc3Q9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTMxLjQzLDE2SDEwdjJIMzEuNDNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMS40MywyNEgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNMTUuNDUsMTBoMTZhMSwxLDAsMCwwLDAtMmgtMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNSwzLjQyYTEuMDksMS4wOSwwLDAsMC0xLjU1LDBMNy44OSwxMS40OCw0LjUxLDcuODRBMS4x''@;'; put 'put ''LDEuMSwwLDEsMCwyLjksOS4zNGw0Ljk0LDUuM0wxNy41LDVBMS4xLDEuMSwwLDAsMCwxNy41LDMuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxULkNsclNoYXBlRm9udFNpemU9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLDkuMDhB''@;'; put 'put ''MS4xMywxLjEzLDAsMCwwLDE5Ljg2LDhINC42MmExLjEsMS4xLDAsMSwwLDAsMi4xOUgxMVYyN2ExLjA5LDEuMDksMCwwLDAsMi4xNywwVjEwLjE5aDYuNjlBMS4xNCwxLjE0LDAsMCwwLDIxLDkuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0''@;'; put 'put ''aCBkPSJNMzAuNjcsMTVIMjEuMTVhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMjVWMjYuNWExLjA5LDEuMDksMCwwLDAsMi4xNywwVjE3LjIzaDMuNTRhMS4xLDEuMSwwLDEsMCwwLTIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxULkNsclNoYXBl''@;'; put 'put ''QWxpZ25DZW50ZXI9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDIwSDE5VjE2aDZhMSwxLDAsMCwwLDEtMVY3YTEsMSwwLDAsMC0xLTFIMTlWMmExLDEsMCwwLDAtMiwwVjZIMTFhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwxLDFoNnY0SDVhMSwxLDAsMCwwLTEsMXY4YTEsMSww''@;'; put 'put ''LDAsMCwxLDFIMTd2NGExLDEsMCwwLDAsMiwwVjMwSDMxYTEsMSwwLDAsMCwxLTFWMjFBMSwxLDAsMCwwLDMxLDIwWk0xMiwxNFY4SDI0djZaTTMwLDI4SDZWMjJIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxULkNsclNoYXBlQWxpZ25MZWZ0''@;'; put 'put ''PSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDFBMSwxLDAsMCwwLDQsMlYzNGExLDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDUsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwyMEg4VjMwSDMxYTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''MjFBMSwxLDAsMCwwLDMxLDIwWm0tMSw4SDEwVjIySDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDE1VjdhMSwxLDAsMCwwLTEtMUg4VjE2SDIzQTEsMSwwLDAsMCwyNCwxNVptLTItMUgxMFY4SDIyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksVC5DbHJTaGFwZUFsaWduUmlnaHQ9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDFhMSwxLDAsMCwwLTEsMVYzNGExLDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDMxLDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNCwyMXY4YTEsMSwwLDAsMCwxLDFIMjhWMjBINUExLDEsMCwwLDAsNCwyMVptMiwxSDI2djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMiw3djhhMSwxLDAsMCwwLDEsMUgy''@;'; put 'put ''OFY2SDEzQTEsMSwwLDAsMCwxMiw3Wm0yLDFIMjZ2NkgxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLFQuQ2xyU2hhcGVJdGFsaWM9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjQyLDhIMTcuMWExLjEsMS4xLDAsMSwwLDAsMi4xOWgy''@;'; put 'put ''LjEzTDEzLjExLDI1LjU1SDEwLjQ3YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDE3LjhhMS4xLDEuMSwwLDEsMCwwLTIuMTlIMTUuNTFsNi4xMy0xNS4zNmgyLjc4YTEuMSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksVC5D''@;'; put 'put ''bHJTaGFwZUp1c3RpZnlUZXh0PSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LDEwLjJIMzEuNzVhMS4xLDEuMSwwLDEsMCwwLTIuMkg2YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEuNzUs''@;'; put 'put ''MTRINmExLjEsMS4xLDAsMSwwLDAsMi4ySDMxLjc1YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzEuMTIsMjBINi42MmExLjEsMS4xLDAsMSwwLDAsMi4yaDI0LjVhMS4xLDEuMSwwLDEsMCwwLTIu''@;'; put 'put ''MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC40NSwyNS44M0g2LjZhMS4xLDEuMSwwLDAsMCwwLDIuMkgzMC40NWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQi''@;'; put 'put ''IC8+JyksVC5DbHJTaGFwZUFsaWduTGVmdFRleHQ9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjI1LDI2SDZ2Mi4ySDIwLjI1YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgsMjBINnYy''@;'; put 'put ''LjJIMjhBMS4xLDEuMSwwLDAsMCwyOCwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMi42LDE1LjFBMS4xLDEuMSwwLDAsMCwyMS41LDE0SDZ2Mi4ySDIxLjVBMS4xLDEuMSwwLDAsMCwyMi42LDE1LjFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjkuMjUsOEg2djIuMkgyOS4yNWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksVC5DbHJTaGFwZU51bWJlckxpc3Q9KDAsay5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI1LjQ2IDcuNDEgNS40NiAxMS41NiA2LjY1IDExLjU2IDYuNjUgNi4wNSA1LjcgNi4wNSA0LjA1IDcuMTYgNC41MiA4IDUuNDYgNy40MSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUuNTcsMTQu''@;'; put 'put ''ODJhLjc2Ljc2LDAsMCwxLC44My43M2MwLC4zOC0uMjEuNzQtLjg3LDEuMjdsLTIsMS41N3YxSDcuNjdWMTguMjhINS4zM2wxLS43N2MxLS43LDEuMjgtMS4yNywxLjI4LTJhMS44MywxLjgzLDAsMCwwLTItMS43NiwyLjYzLDIuNjMsMCwwLDAtMi4xNCwxLjA4bC43Ni43M0ExLjc1LDEuNzUs''@;'; put 'put ''MCwwLDEsNS41NywxNC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik02LjU2LDI0LjY0YTEuMzIsMS4zMiwwLDAsMCwxLTEuMjdjMC0uODctLjc4LTEuNTEtMi0xLjUxYTIuNjEsMi42MSwwLDAsMC0yLjEsMWwuNjkuNzJhMS43OCwx''@;'; put 'put ''Ljc4LDAsMCwxLDEuMy0uNjRjLjU0LDAsLjkyLjI2LjkyLjY2cy0uMzYuNjItMSwuNjJINC43OXYxaC42NGMuNzQsMCwxLjA3LjIxLDEuMDcuNjNzLS4zNS42OC0xLC42OGEyLDIsMCwwLDEtMS40Ni0uNjVsLS43Ljc4YTIuODUsMi44NSwwLDAsMCwyLjIxLjkzYzEuMjksMCwyLjEzLS42OSwy''@;'; put 'put ''LjEzLTEuNjRBMS4zMywxLjMzLDAsMCwwLDYuNTYsMjQuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNDIsOWExLDEsMCwwLDAtMS0xSDEwdjJIMzEuNDJBMSwxLDAsMCwwLDMyLjQyLDlaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzEuNDIsMTZIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQyLDI0SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFQuQ2xyU2hhcGVQYWludFJvbGxlcj0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTBWNGEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNHY2YTIsMiwwLDAsMCwyLDJIMjlBMiwyLDAsMCwwLDMx''@;'; put 'put ''LDEwWk02LDRIMjl2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4yOUwxOC43LDE2LjU0YTEsMSwwLDAsMC0uNywxVjE5SDE2VjMzYTIsMiwwLDAsMCwyLDJoMmEyLDIsMCwwLDAsMi0yVjE5SDIwdi0uNzNMMzMu''@;'; put 'put ''MywxNGExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMyw2Wk0yMCwzM0gxOFYyMWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHJlY3QgeD0iNCIgeT0iMiIgd2lkdGg9IjI3IiBoZWlnaHQ9IjEwIiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4yNEwxOC43MSwxNi40NWExLDEsMCwwLDAtLjcxLDFWMTlIMTZWMzRhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTlIMjB2LS44MkwzMy4yOSwxNEExLDEsMCwwLDAsMzQsMTNWN0ExLDEsMCww''@;'; put 'put ''LDAsMzMsNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZUJsb2NrUXVvdGU9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTExLjg2LDE2LjU1YTQuMzEsNC4zMSwwLDAsMC0yLjExLjU2LDE0LjQ0LDE0LjQ0LDAsMCwxLDQuMzYtNiwx''@;'; put 'put ''LjEsMS4xLDAsMCwwLTEuNC0xLjdjLTQsMy4yNS01Ljc4LDcuNzUtNS43OCwxMC41NEE1LjA4LDUuMDgsMCwwLDAsMTAsMjQuNThhNC40LDQuNCwwLDAsMCwxLjg4LjQ0LDQuMjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMjMsMTYuNTVhNC4yOSw0LjI5LDAsMCwwLTIuMTEuNTYsMTQuNSwxNC41LDAsMCwxLDQuMzUtNiwxLjEsMS4xLDAsMSwwLTEuMzktMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRhNS4wOCw1LjA4LDAsMCwwLDMsNC42MUE0LjM3LDQuMzcsMCwwLDAsMjMsMjVh''@;'; put 'put ''NC4yNCw0LjI0LDAsMSwwLDAtOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dD0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNjUsMjcuMWExLjEsMS4xLDAsMCwwLDEuMSwxLjFIMzBWMjZI''@;'; put 'put ''MTUuNzVBMS4xLDEuMSwwLDAsMCwxNC42NSwyNy4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYuOSwyMS4xQTEuMSwxLjEsMCwwLDAsOCwyMi4ySDMwVjIwSDhBMS4xLDEuMSwwLDAsMCw2LjksMjEuMVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMy40LDE1LjFhMS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjE0SDE0LjVBMS4xLDEuMSwwLDAsMCwxMy40LDE1LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJN''@;'; put 'put ''Ni43NSw4YTEuMSwxLjEsMCwxLDAsMCwyLjJIMzBWOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFQuQ2xyU2hhcGVUZXh0PSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xOSw4Ljg0YTEuNDUsMS40NSwwLDAsMC0xLjQtMWgtLjEyYTEu''@;'; put 'put ''NDYsMS40NiwwLDAsMC0xLjQyLDFMMS4xNCwyNi41NmExLjI5LDEuMjksMCwwLDAtLjE0LjU5LDEsMSwwLDAsMCwxLDEsMS4xMiwxLjEyLDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4w''@;'; put 'put ''OCwxLjY0LDEuNjQsMCwwLDAtLjE0LS41N1pNNi4wOCwyMC43MWw0LjU5LTEwLjIyLDQuNiwxMC4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yNCwxNC43OEE2LjM1LDYuMzUsMCwwLDAsMjcuNiwxMy4yYTExLjM2LDExLjM2''@;'; put 'put ''LDAsMCwwLTQuNywxLDEsMSwwLDAsMC0uNTguODksMSwxLDAsMCwwLC45NC45MiwxLjIzLDEuMjMsMCwwLDAsLjM5LS4wOCw4Ljg3LDguODcsMCwwLDEsMy43Mi0uODFjMi43LDAsNC4yOCwxLjMzLDQuMjgsMy45MnYuNWExNS4yOSwxNS4yOSwwLDAsMC00LjQyLS42MWMtMy42NCwwLTYuMTQs''@;'; put 'put ''MS42MS02LjE0LDQuNjR2LjA1YzAsMi45NSwyLjcsNC40OCw1LjM3LDQuNDhhNi4yOSw2LjI5LDAsMCwwLDUuMTktMi40OFYyNi45YTEsMSwwLDAsMCwxLDEsMSwxLDAsMCwwLDEtMS4wNlYxOUE1LjcxLDUuNzEsMCwwLDAsMzIuMjQsMTQuNzhabS0uNTYsNy43YzAsMi4yOC0yLjE3LDMuODkt''@;'; put 'put ''NC44MSwzLjg5LTEuOTQsMC0zLjYxLTEuMDYtMy42MS0yLjg2di0uMDZjMC0xLjgsMS41LTMsNC4yLTNhMTUuMiwxNS4yLDAsMCwxLDQuMjIuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxULkNsclNoYXBlVW5kZXJsaW5lPSgwLGsuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xOCwyOC4xN2M1LjA4LDAsOC40OC0zLjA4LDguNDgtOVY4LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44YzAsNC40NC0yLjM4LDYuNzEtNi4xMyw2Ljcxcy02LjIxLTIuNDctNi4yMS02Ljg1VjguNTRhMS4xNSwxLjE1LDAsMSwwLTIuMywwdjEwLjhDOS41''@;'; put 'put ''MywyNS4wOSwxMywyOC4xNywxOCwyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwzMEg1YTEuMTEsMS4xMSwwLDAsMCwwLDIuMjFIMzFBMS4xMSwxLjExLDAsMCwwLDMxLDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZUFsaWduQm90dG9tPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwzMEgyYTEsMSwwLDAsMCwwLDJIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xNiw1YTEsMSwwLDAsMC0xLTFIN0ExLDEsMCwwLDAsNiw1VjI4SDE2Wk0xNCwyNkg4VjZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwxM2ExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDFWMjhIMzBaTTI4LDI2''@;'; put 'put ''SDIyVjE0aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlQWxpZ25NaWRkbGU9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDMwVjExYTEsMSwwLDAsMC0xLTFIMjFhMSwxLDAsMCwwLTEsMXY2SDE2VjVhMSwxLDAs''@;'; put 'put ''MCwwLTEtMUg3QTEsMSwwLDAsMCw2LDVWMTdIMmExLDEsMCwwLDAsMCwySDZWMzFhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTloNHY2YTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjE5aDRhMSwxLDAsMCwwLDAtMlpNMTQsMzBIOFY2aDZabTE0LTZIMjJWMTJoNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFQuQ2xyU2hhcGVBbGlnblRvcD0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsNEgyQTEsMSwwLDAsMCwyLDZIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjhINlpNOCwxMGg2VjMwSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMjNhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWOEgyMFptMi0xM2g2VjIySDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksVC5DbHJTaGFwZUxhbmd1YWdlPSgwLGsuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwzSDE0djVoMlY1aDE0YzAuNiwwLDEsMC40LDEsMXYxMWMwLDAuNi0wLjQs''@;'; put 'put ''MS0xLDFIMTd2N2gtNS4zTDgsMjcuOVYyNUg1Yy0wLjYsMC0xLTAuNC0xLTFWMTNjMC0wLjYsMC40LTEsMS0xaDEzdi0ySDVcblx0XHRjLTEuNywwLTMsMS4zLTMsM3YxMWMwLDEuNywxLjMsMywzLDNoMXY1LjFsNi4zLTUuMUgxOXYtN2gxMWMxLjcsMCwzLTEuMywzLTNWNkMzMyw0LjMsMzEu''@;'; put 'put ''NywzLDMwLDN6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNi4yLDIyLjloMi40bDAuNi0xLjZoMy4xbDAuNiwxLjZoMi40TDExLjksMTRIOS41TDYuMiwyMi45eiBNMTAuNywxNi41bDEsMy4xaC0yTDEwLjcsMTYuNXoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMCwxN2MxLjEsMCwyLjYtMC4zLDQtMWMxLjQsMC43LDMsMSw0LDF2LTJjMCwwLTEsMC0yLjEtMC40YzEuMi0xLjIsMi4xLTMsMi4xLTUuNlY4aC0zVjZoLTJ2MmgtM3YyaDUuOVxuXHRcdGMtMC4yLDEuOC0x''@;'; put 'put ''LDIuOS0xLjksMy42Yy0wLjYtMC41LTEuMi0xLjItMS42LTIuMWgtMi4xYzAuNCwxLjMsMSwyLjMsMS44LDMuMUMyMS4xLDE1LDIwLjIsMTUsMjAsMTVWMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cG9seWdvbiBwb2ludHM9IjExLDE2LjUgMTAs''@;'; put 'put ''MTkuNiAxMiwxOS42IDExLDE2LjUgXHQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjMsM2gtMTZ2NWg0djJoLTEzYy0xLjcsMC0zLDEuMy0zLDN2MTFjMCwxLjcsMS4zLDMsMywzaDF2NS4xbDYuMy01LjFoNi43di03aDExYzEuNywwLDMt''@;'; put 'put ''MS4zLDMtM1Y2XG5cdFx0QzMzLjMsNC4zLDMyLDMsMzAuMywzeiBNMTMuMSwyMi45bC0wLjUtMS42SDkuNWwtMC42LDEuNkg2LjVMOS44LDE0aDIuNGwzLjMsOC45TDEzLjEsMjIuOXogTTI4LjMsMTV2MmMtMS4zLDAtMi43LTAuNC0zLjktMVxuXHRcdGMtMS4yLDAuNi0yLjYsMC45LTQsMWwt''@;'; put 'put ''MC4xLTJjMC43LDAsMS40LTAuMSwyLjEtMC4zYy0wLjktMC45LTEuNS0yLTEuOC0zLjJoMi4xYzAuMywwLjksMC45LDEuNiwxLjYsMi4yYzEuMS0wLjksMS44LTIuMiwxLjktMy43XG5cdFx0aC02VjhoM1Y2aDJ2MmgzLjNsMC4xLDFjMC4xLDIuMS0wLjcsNC4yLTIuMiw1LjdDMjcuMSwxNC45''@;'; put 'put ''LDI3LjcsMTUsMjguMywxNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksVC5DbHJTaGFwZVRleHRDb2xvcj0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTkuNDcsMy44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFIMThhMS40NSwxLjQ1LDAsMCwwLTEu''@;'; put 'put ''NDIsMUw4LjQyLDIxLjU2YTEuMzUsMS4zNSwwLDAsMC0uMTQuNTksMSwxLDAsMCwwLDEsMSwxLjExLDEuMTEsMCwwLDAsMS4wOC0uNzdsMi4wOC00LjY1aDExbDIuMDgsNC41OWExLjI0LDEuMjQsMCwwLDAsMS4xMi44MywxLjA4LDEuMDgsMCwwLDAsMS4wOC0xLjA4LDEuNTksMS41OSwwLDAs''@;'; put 'put ''MC0uMTQtLjU3Wk0xMy4zNiwxNS43MSwxOCw1LjQ5bDQuNiwxMC4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjQuMDYiIHk9IjI1IiB3aWR0aD0iMjgiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLFQuQ2xyU2hhcGVIaWdobGlnaHRlcj0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUuODIsMjYuMDZhMSwxLDAsMCwxLS43MS0uMjlMOC42NywxOS4zM2ExLDEsMCwwLDEtLjI5LS43MSwxLDEsMCwwLDEsLjI5LS43MUwyMywzLjU0''@;'; put 'put ''YTUuNTUsNS41NSwwLDEsMSw3Ljg1LDcuODZMMTYuNTMsMjUuNzdBMSwxLDAsMCwxLDE1LjgyLDI2LjA2Wm0tNS03LjQ0LDUsNUwyOS40OCwxMGEzLjU0LDMuNTQsMCwwLDAsMC01LDMuNjMsMy42MywwLDAsMC01LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIvPlxuICA8cGF0aCBkPSJNMTAuMzgsMjguMjhBMSwxLDAsMCwxLDkuNjcsMjhMNi40NSwyNC43N2ExLDEsMCwwLDEtLjIyLTEuMDlsMi4yMi01LjQ0YTEsMSwwLDAsMSwxLjYzLS4zM2w2LjQ1LDYuNDRBMSwxLDAsMCwxLDE2LjIsMjZsLTUuNDQsMi4yMkExLjMzLDEuMzMsMCwwLDEsMTAu''@;'; put 'put ''MzgsMjguMjhaTTguMzMsMjMuODJsMi4yOSwyLjI4LDMuNDMtMS40TDkuNzQsMjAuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNOC45NCwzMGgtNWExLDEsMCwwLDEtLjg0LTEuNTVsMy4yMi00Ljk0YTEsMSwwLDAsMSwxLjU1''@;'; put 'put ''LS4xNmwzLjIxLDMuMjJhMSwxLDAsMCwxLC4wNiwxLjM1TDkuNywyOS42NEExLDEsMCwwLDEsOC45NCwzMFpNNS43OCwyOEg4LjQ3TDksMjcuMzRsLTEuNy0xLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIzLjA2IiB5PSIzMSIg''@;'; put 'put ''d2lkdGg9IjMwIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+JyksVC5DbHJTaGFwZU91dGRlbnQ9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjA2LDloLTI2YTEsMSwwLDEsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE5''@;'; put 'put ''aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyOWgtMjZhMSwxLDAsMCwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTkuNTYsMjIuNTRhMSwxLDAsMCwxLS43LS4z''@;'; put 'put ''TDQuNjEsMThsNC4yNS00LjI0YTEsMSwwLDAsMSwxLjQxLDEuNDFMNy40NCwxOGwyLjgzLDIuODNhMSwxLDAsMCwxLS43MSwxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz4nKSxULkNsclNoYXBlSW5kZW50PSgwLGsuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxOWgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI0aC0xN2Ex''@;'; put 'put ''LDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik01LjU2LDIyLjU0YTEsMSwwLDAsMS0uNy0xLjcxTDcuNjgsMTgsNC44NiwxNS4xN2ExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBMMTAuNTEsMTgsNi4yNywyMi4yNEExLDEsMCwwLDEsNS41NiwyMi41NFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksVC5DbHJTaGFwZVN0cmlrZXRocm91Z2g9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjg4LDE5LjkyaC0zMGExLDEsMCwxLDEsMC0yaDMwYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy4yNywxNS44NmExMi45LDEyLjksMCwwLDEsMS4yOS0uNTJBNS42OSw1LjY5LDAsMCwxLDEwLjM5LDE1YTMuMTgsMy4xOCwwLDAsMSwyLjc1LDEuMTFBNC40NCw0LjQ0LDAsMCwxLDE0LDE4Ljg1di40OWExMy44MywxMy44MywwLDAsMC00''@;'; put 'put ''LjI5LS43NCw2LjE5LDYuMTksMCwwLDAtMi41OS41NEE1LDUsMCwwLDAsNS44MSwyMEgxNS44OFYxOC44NWE1LjY3LDUuNjcsMCwwLDAtMS4zNy00LDUuMTYsNS4xNiwwLDAsMC00LTEuNDksMTAsMTAsMCwwLDAtMy45MS44OC44Ny44NywwLDAsMC0uNDQsMS4xOEEuODQuODQsMCwwLDAsNy4y''@;'; put 'put ''NywxNS44NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMSwyMGE1Ljk0LDUuOTQsMCwwLDEsLjU0LTIuMzEsNC4zNSw0LjM1LDAsMCwxLDEuNTgtMS44Myw0LjI3LDQuMjcsMCwwLDEsNC41OSwwLDQuNDcsNC40NywwLDAsMSwx''@;'; put 'put ''LjU3LDEuODNBNi4xMiw2LjEyLDAsMCwxLDI5Ljg1LDIwaDJhNy43Myw3LjczLDAsMCwwLS43OC0zLjE5LDYsNiwwLDAsMC0yLjE4LTIuNDUsNS43NCw1Ljc0LDAsMCwwLTMuMS0uODgsNS4zOSw1LjM5LDAsMCwwLTIuOC43Myw1LjU1LDUuNTUsMCwwLDAtMiwyLjA1VjEwYS44Ny44NywwLDAs''@;'; put 'put ''MC0uODYtLjg2SDIwYS44Ny44NywwLDAsMC0uODYuODZWMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMjkuNjcsMjJhNS42MSw1LjYxLDAsMCwxLS4zNiwxLjA3LDQuNDcsNC40NywwLDAsMS0xLjU3LDEuODUsNC4zMiw0LjMy''@;'; put 'put ''LDAsMCwxLTQuNTksMCw0LjM1LDQuMzUsMCwwLDEtMS41OC0xLjg1QTUuNjQsNS42NCwwLDAsMSwyMS4yLDIySDE5LjA5djQuMTNBLjg3Ljg3LDAsMCwwLDIwLDI3aC4yYS44Ny44NywwLDAsMCwuODYtLjg2VjI0LjUxYTUuNTgsNS41OCwwLDAsMCwyLDIuMDYsNS40OCw1LjQ4LDAsMCwwLDIu''@;'; put 'put ''OC43Miw1LjY2LDUuNjYsMCwwLDAsMy4xLS44OEE1Ljg4LDUuODgsMCwwLDAsMzEuMDksMjQsNy4wOSw3LjA5LDAsMCwwLDMxLjczLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE0LDIydi43NmEzLjM0LDMuMzQsMCwwLDEt''@;'; put 'put ''MS42MiwyLDUuMzQsNS4zNCwwLDAsMS0yLjY5LjcyLDMuNzgsMy43OCwwLDAsMS0yLjM2LS43LDIuMjQsMi4yNCwwLDAsMS0uOTQtMS45LDIuMjksMi4yOSwwLDAsMSwuMi0uOTFINC42MmE0LDQsMCwwLDAtLjEzLDEsMy44MywzLjgzLDAsMCwwLDEuMzUsMy4wNkE1LjE1LDUuMTUsMCwwLDAs''@;'; put 'put ''OS4zMSwyNy4yLDYsNiwwLDAsMCwxMiwyNi41N2E0LjYyLDQuNjIsMCwwLDAsMi0xLjc0VjI2YS44Ni44NiwwLDAsMCwuODYuODZIMTVhLjg2Ljg2LDAsMCwwLC44Ni0uODZWMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLFQuQ2xyU2hhcGVTdWJz''@;'; put 'put ''Y3JpcHQ9KDAsay5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjU1LDE4bDYuOCw4LjZhMS4xNywxLjE3LDAsMCwxLS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NEwxMywxOS45MSw2LjYsMjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45''@;'; put 'put ''TDExLjU1LDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4xNywxLjE3LDAsMCwxLDYuNjMsOGw2LjQ0LDguMTNMMTkuNSw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwxLC45MiwxLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjMsMzEuOCwyNy40OSwyOGE5LjksOS45LDAsMCwwLDEuODgtMi4wNUEzLjQ0LDMuNDQsMCwwLDAsMzAsMjRhMi4zNSwyLjM1LDAsMCwwLS4zNS0xLjI3LDIuNDQsMi40NCwwLDAsMC0xLS44NCwyLjksMi45LDAsMCwwLTEuMjYtLjI4LDMu''@;'; put 'put ''MzYsMy4zNiwwLDAsMC0xLjgzLjUsNS42NCw1LjY0LDAsMCwwLTEuNDgsMS40MmwtMS0uODFhNS4xMSw1LjExLDAsMCwxLDQuMzYtMi4zNyw0LjM1LDQuMzUsMCwwLDEsMiwuNDUsMy40MywzLjQzLDAsMCwxLDIsMy4xOCw0LjQ1LDQuNDUsMCwwLDEtLjY4LDIuMzUsMTAuOSwxMC45LDAsMCwx''@;'; put 'put ''LTIuMjQsMi40NmwtMy4yNCwyLjgxSDMxLjVWMzNIMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLFQuQ2xyU2hhcGVTdXBlcnNjcmlwdD0oMCxrLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNDMsMThsNi43OSw4LjZhMS4xNywxLjE3LDAsMCwx''@;'; put 'put ''LS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NGwtNi40NC04LjEzTDYuNDcsMjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45TDExLjQzLDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4yLDEuMiwwLDAsMSw2LjUx''@;'; put 'put ''LDhsNi40Myw4LjEzTDE5LjM4LDhhMS4xNywxLjE3LDAsMCwxLC45Mi0uNDRoMGExLjE3LDEuMTcsMCwwLDEsLjkyLDEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMi44NSwxNC40N2w0LjUxLTMuODVhOS4zNyw5LjM3LDAs''@;'; put 'put ''MCwwLDEuODgtMiwzLjQzLDMuNDMsMCwwLDAsLjU5LTEuODYsMi4yNywyLjI3LDAsMCwwLS4zNi0xLjI3LDIuMzgsMi4zOCwwLDAsMC0uOTUtLjgzLDIuNzcsMi43NywwLDAsMC0xLjI2LS4yOSwzLjM5LDMuMzksMCwwLDAtMS44My41LDUuODMsNS44MywwLDAsMC0xLjQ5LDEuNDJsLTEtLjgx''@;'; put 'put ''YTUuMTIsNS4xMiwwLDAsMSw0LjM2LTIuMzcsNC4zNiw0LjM2LDAsMCwxLDIsLjQ1LDMuNDcsMy40NywwLDAsMSwyLDMuMThBNC40NCw0LjQ0LDAsMCwxLDMwLjU4LDlhMTEuMTQsMTEuMTQsMCwwLDEtMi4yNCwyLjQ2TDI1LjEsMTQuMzFoNi4yOHYxLjMzSDIyLjg1WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxULlRleHRFZGl0U2hhcGVzPXtib2xkOlQuQ2xyU2hhcGVCb2xkLCJidWxsZXQtbGlzdCI6VC5DbHJTaGFwZUJ1bGxldExpc3QsImNoZWNrYm94LWxpc3QiOlQuQ2xyU2hhcGVDaGVja2JveExpc3QsIm51bWJlci1saXN0IjpULkNs''@;'; put 'put ''clNoYXBlTnVtYmVyTGlzdCwiZm9udC1zaXplIjpULkNsclNoYXBlRm9udFNpemUsaXRhbGljOlQuQ2xyU2hhcGVJdGFsaWMsImp1c3RpZnktdGV4dCI6VC5DbHJTaGFwZUp1c3RpZnlUZXh0LCJjZW50ZXItdGV4dCI6VC5DbHJTaGFwZUNlbnRlclRleHQsImFsaWduLWxlZnQtdGV4dCI6VC5D''@;'; put 'put ''bHJTaGFwZUFsaWduTGVmdFRleHQsImFsaWduLXJpZ2h0LXRleHQiOlQuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dCwicGFpbnQtcm9sbGVyIjpULkNsclNoYXBlUGFpbnRSb2xsZXIsImJsb2NrLXF1b3RlIjpULkNsclNoYXBlQmxvY2tRdW90ZSx0ZXh0OlQuQ2xyU2hhcGVUZXh0LHVuZGVybGlu''@;'; put 'put ''ZTpULkNsclNoYXBlVW5kZXJsaW5lLCJhbGlnbi1jZW50ZXIiOlQuQ2xyU2hhcGVBbGlnbkNlbnRlciwiYWxpZ24tbGVmdCI6VC5DbHJTaGFwZUFsaWduTGVmdCwiYWxpZ24tcmlnaHQiOlQuQ2xyU2hhcGVBbGlnblJpZ2h0LCJhbGlnbi1ib3R0b20iOlQuQ2xyU2hhcGVBbGlnbkJvdHRvbSwi''@;'; put 'put ''YWxpZ24tbWlkZGxlIjpULkNsclNoYXBlQWxpZ25NaWRkbGUsImFsaWduLXRvcCI6VC5DbHJTaGFwZUFsaWduVG9wLGxhbmd1YWdlOlQuQ2xyU2hhcGVMYW5ndWFnZSwidGV4dC1jb2xvciI6VC5DbHJTaGFwZVRleHRDb2xvcixoaWdobGlnaHRlcjpULkNsclNoYXBlSGlnaGxpZ2h0ZXIsaW5k''@;'; put 'put ''ZW50OlQuQ2xyU2hhcGVJbmRlbnQsb3V0ZGVudDpULkNsclNoYXBlT3V0ZGVudCxzdHJpa2V0aHJvdWdoOlQuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoLHN1YnNjcmlwdDpULkNsclNoYXBlU3Vic2NyaXB0LHN1cGVyc2NyaXB0OlQuQ2xyU2hhcGVTdXBlcnNjcmlwdH0sdHlwZW9mIHdpbmRvdzwi''@;'; put 'put ''dSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKFQuVGV4dEVkaXRTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShULCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxULlRyYXZlbFNoYXBlcz1ULkNsclNoYXBlT25Ib2xpZGF5PVQuQ2xyU2hhcGVU''@;'; put 'put ''cmFpbGVyPVQuQ2xyU2hhcGVGZXJyeT1ULkNsclNoYXBlQ2FyYXZhbj1ULkNsclNoYXBlQ2FtcGVydmFuPVQuQ2xyU2hhcGVCb2F0PVQuQ2xyU2hhcGVCaWN5Y2xlPVQuQ2xyU2hhcGVNYXBNYXJrZXI9VC5DbHJTaGFwZUNvbXBhc3M9VC5DbHJTaGFwZU1hcD1ULkNsclNoYXBlQ2FyPVQuQ2xy''@;'; put 'put ''U2hhcGVBaXJwbGFuZT1ULkNsclNoYXBlVHJ1Y2s9dm9pZCAwO3ZhciBrPXNlKAovKiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksdj1zZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJh''@;'; put 'put ''dG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1QuQ2xyU2hhcGVUcnVjaz0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCww''@;'; put 'put ''LTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMTkuN2E2LjQ1LDYuNDUsMCwwLDEsMS41Ni0uMmMuMTUsMCwuMjksMCwuNDQsMFYxNGg0YTIsMiwwLDAsMSwyLDJ2MUgyOHYyaDR2NUgyOS42YTQuNTQsNC41NCwwLDAsMC04LjM0LDBIMTQuNDNhNC41LDQuNSww''@;'; put 'put ''LDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDksNC40OSwwLDAsMCw4LjkyLDBIMzNhMSwxLDAsMCwwLDEtMVYxNkE0LDQsMCwwLDAsMzAsMTJaTTEwLjI2LDI4YTIuMzgsMi4zOCwwLDEsMSwwLTQuNzUsMi4zOCwyLjM4LDAsMSwxLDAsNC43NVptMTUuMTcs''@;'; put 'put ''MGEyLjM4LDIuMzgsMCwxLDEsMi41LTIuMzdBMi40NCwyLjQ0LDAsMCwxLDI1LjQzLDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwx''@;'; put 'put ''LDAsMCwwLDEsMUg0VjhIMjRWMjEuNDlBNC40NSw0LjQ1LDAsMCwwLDIxLjI1LDI0SDE0LjQzYTQuNSw0LjUsMCwwLDAtNC4xNy0yLjc2QTQuMzgsNC4zOCwwLDEsMCwxNC43MiwyNkgyMWE0LjQ4LDQuNDgsMCwwLDAsOC45MSwwSDM0VjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4z''@;'; put 'put ''OCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDIsMjhaTTMyLDE3SDI2VjE0aDRhMiwyLDAsMCwxLDIsMloiLz4nKSxULkNsclNoYXBlQWlycGxhbmU9KDAsdi5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS43Nyw4LjE2YTIuNDMsMi40MywwLDAsMC0xLjktMkwyOCw0Ljg3YTQuNSw0LjUsMCwwLDAtMy42NS43OUw3LDE4LjMsMi4xNCwxOC4xQTEuODYsMS44NiwwLDAsMCwuOTEsMjEu''@;'; put 'put ''NDFsNSwzLjkzYy42LjczLDEsLjU5LDEwLjkzLTQuODJsLjkzLDkuNDJhMS4zNiwxLjM2LDAsMCwwLC44NSwxLjE4LDEuNDMsMS40MywwLDAsMCwuNTQuMSwxLjU0LDEuNTQsMCwwLDAsMS0uNDFsMi4zOS0yLjE4YTEuNTIsMS41MiwwLDAsMCwuNDYtLjgzTDI1LjIsMTUuOWMzLjU3LTIsNi45''@;'; put 'put ''NS0zLjg4LDkuMzYtNS4yNUEyLjQzLDIuNDMsMCwwLDAsMzUuNzcsOC4xNlptLTIuMi43NWMtMi41LDEuNDItNiwzLjQxLTkuNzYsNS40N2wtLjQxLjIzTDIxLjA3LDI3LjI4bC0xLjQ3LDEuMzRMMTguNSwxNy4zMiwxNy4xNywxOEMxMCwyMiw3LjYxLDIzLjE2LDYuNzksMjMuNTJsLTQuMy0z''@;'; put 'put ''LjQxLDUuMDguMjIsMTgtMTMuMDZhMi41MSwyLjUxLDAsMCwxLDItLjQ1bDUuODUsMS4yNmEuNDMuNDMsMCwwLDEsLjM1LjM3QS40Mi40MiwwLDAsMSwzMy41Nyw4LjkxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9''@;'; put 'put ''Ik03LDEyLjU0bDMuNTYsMSwxLjY0LTEuMTktNC0xLjE2TDEwLDEwLjA5bDUuNDctLjE2LDIuMy0xLjY3TDEwLDguNWExLjI1LDEuMjUsMCwwLDAtLjcuMTdMNi42NywxMC4yQTEuMjgsMS4yOCwwLDAsMCw3LDEyLjU0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYuMjUsMTEuNSwxMiwxMy4xNmw2LjMyLTQuNTktOS4wNy4yNkEuNTIuNTIsMCwwLDAsOSw4LjkxTDYuMTMsMTAuNTZBLjUxLjUxLDAsMCwwLDYuMjUsMTEuNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIGQ9Ik0zNC41Miw2LjM2LDI4LjIyLDVhMy43OCwzLjc4LDAsMCwwLTMuMDcuNjdMNi4xMiwxOS41bC00LjU3LS4yYTEuMjUsMS4yNSwwLDAsMC0uODMsMi4yMmw0LjQ1LDMuNTNhLjU1LjU1LDAsMCwwLC41My4wOWMxLjI3LS40OSw2LTMsMTEuNTktNi4wN2wxLjEyLDEx''@;'; put 'put ''LjUxYS41NS41NSwwLDAsMCwuOS4zN2wyLjUtMi4wOGEuNzYuNzYsMCwwLDAsLjI2LS40NWwyLjM3LTEzLjI5YzQtMi4yMiw3LjgyLTQuMzcsMTAuNTEtNS44OUExLjU1LDEuNTUsMCwwLDAsMzQuNTIsNi4zNloiLz4nKSxULkNsclNoYXBlQ2FyPSgwLHYuY2xySWNvblNWRykoJzxyZWN0IGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIxNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LjQ1LDE0LjE3QTIyLjEs''@;'; put 'put ''MjIuMSwwLDAsMCwxOS4zOCw3YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4wOC40Ny0uMTQuOTItLjIsMS4zNkE0LDQsMCwwLDAsMiwxOHY2LjEzYTIsMiwwLDAsMCwyLDJWMjBINFYxOGEyLDIsMCwwLDEsMi0ySDI0LjczQTcuMjgsNy4yOCwwLDAsMSwz''@;'; put 'put ''MiwyMy4yN1YyNGgtMmE0LjUzLDQuNTMsMCwxLDAsLjMzLDJIMzJhMiwyLDAsMCwwLDItMnYtLjczQTkuMjgsOS4yOCwwLDAsMCwyNi40NSwxNC4xN1pNMTEsMTRINi45M2MwLS4zMS4wOS0uNjMuMTUtMUE2LjUyLDYuNTIsMCwwLDEsMTEsOGgwWm0yLDBWNy41OGE4LjE3LDguMTcsMCwwLDEs''@;'; put 'put ''NS4zNiwxLjE2QTE5LDE5LDAsMCwxLDIzLjksMTRaTTI1LjgsMjguMzhhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjUuOCwyOC4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0''@;'; put 'put ''LjE3LDI0YTQuNTMsNC41MywwLDEsMCwuMzMsMmg1LjNjMC0uMDgsMC0uMTcsMC0uMjVBNiw2LDAsMCwxLDIwLDI0Wk0xMCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwxMCwyOC4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYuODcsMTQuMjhBMjIuMzYsMjIuMzYsMCwwLDAsMTkuNjUsNi45YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4wOC40OS0uMTUsMS0uMjEsMS40aC0xQTIuNTksMi41OSwwLDAsMCwyLDE2LjU5djguNTVh''@;'; put 'put ''Ljg2Ljg2LDAsMCwwLC44Ni44Nkg0LjU5YzAtLjEzLDAtLjI2LDAtLjM5YTUuNzcsNS43NywwLDAsMSw3LjcxLTUuNDVsLTEsMWE0LjU2LDQuNTYsMCwwLDAtNC4zNCwxLjU4LDMsMywwLDAsMC0uNjMuOTNBNC41LDQuNSwwLDEsMCwxNC44MiwyNmg1LjQ4YzAtLjEzLDAtLjI2LDAtLjM5QTUu''@;'; put 'put ''NzcsNS43NywwLDAsMSwyOCwyMC4xNmwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDMwLjUzLDI2aDIuNjFhLjg2Ljg2LDAsMCwwLC44Ni0uODZWMjMuMzZBOS4zOSw5LjM5LDAsMCwwLDI2Ljg3LDE0LjI4Wk0xMiwxNEg4YzAt''@;'; put 'put ''LjM1LjEtLjcxLjE2LTEuMDdhNi41Miw2LjUyLDAsMCwxLDMuODctNWgwWk0xMC4zNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwxMC4zNiwyOC4zNlpNMTksMTlIMTZWMTdoM1ptLTYtNVY3LjQ3YTguMTYsOC4xNiwwLDAsMSw1LjQsMS4xNUExOS4xNSwxOS4x''@;'; put 'put ''NSwwLDAsMSwyNCwxNFpNMjYuMDYsMjguMzZhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjYuMDYsMjguMzZaIi8+JyksVC5DbHJTaGFwZU1hcD0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTMzLjU5LDYuMTlBMSwxLDAsMCwwLDMyLjcsNkwyMy4wOSw5LDEzLjQ2LDQuMTFhMSwxLDAsMCwwLS44NCwwTDIuNjIsOC4yQTEsMSwwLDAsMCwyLDkuMTNWMjkuNjFhMSwxLDAsMCwwLDEuMzguOTJMMTMsMjYuNThsOS41OSw0LjkyYTEsMSwwLDAsMCwuNDYuMTEsMSwxLDAsMCwwLC4zLDBs''@;'; put 'put ''MTAtMy4xMmExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMy41OSw2LjE5Wk0zMiwyNi43NWwtOC4zMiwyLjZWMjcuMDZoLTEuNnYybC04LjQtNC4zMVYyMy4wNmgtMS42djEuNzJMNCwyOC4xMVY5Ljc5bDguMDgtMy4zM1Y4LjgxaDEuNlY2LjQ3bDguNCw0LjN2Mi4xaDEuNlYxMUwzMiw4''@;'; put 'put ''LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMi4wOCIgeT0iMTUuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMi4wOCIgeT0iMjEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi4wOCIgeT0iMTEuMDYiIHdpZHRoPSIx''@;'; put 'put ''LjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMi4wOCIgeT0iMTcuMTMiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy43NSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy4zMSw3LjM1LDI1LDkuOTRWMTRIMjNWMTAuMjlMMTQsNS42OFY5SDEyVjUuMjdsLTkuNjcsNEEuNTMuNTMsMCwwLDAsMiw5Ljc1VjMwLjQ1YS41My41MywwLDAsMCwuNzQuNDlMMTIsMjcuMTJWMjNoMnY0LjUzbDksNC42MVYy''@;'; put 'put ''OGgydjMuNzlsOC42My0yLjdhLjUzLjUzLDAsMCwwLC4zNy0uNTFWNy44NkEuNTMuNTMsMCwwLDAsMzMuMzEsNy4zNVpNMTQsMjFIMTJWMTdoMlptMC02SDEyVjExaDJaTTI1LDI2SDIzVjIyaDJabTAtNkgyM1YxNmgyWiIvPicpLFQuQ2xyU2hhcGVDb21wYXNzPSgwLHYuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0yMC44MiwxNS4zMWgwTDEwLjQ2LDljLS40Ni0uMjYtMS4xMS4zNy0uODYuODRsNi4xNSwxMC41NiwxMC41Niw2LjE1YS42Ni42NiwwLDAsMCwuODQtLjg2Wm0tNCw0LDMtMyw0LjU1LDcuNDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTEsMjkuOTVWMjkuNTNIMTd2Mi40MkExNCwxNCwwLDAsMSw0LjA1LDE5SDYuNDdWMTdINC4wNUExNCwxNCwwLDAsMSwxNyw0LjA1VjYuNDdoMlY0LjA1QTE0LDE0LDAsMCwx''@;'; put 'put ''LDMxLjk1LDE3SDI5LjUzdjJoMi40MkExNCwxNCwwLDAsMSwxOSwzMS45NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNi40NywxOUg0''@;'; put 'put ''LjA1YzAtLjMzLS4wNS0uNjYtLjA1LTFzMC0uNjcuMDUtMUg2LjQ3Wk0xNyw0LjA1Yy4zMywwLC42Ni0uMDUsMS0uMDVzLjY3LDAsMSwuMDVWNi40N0gxN1ptMiwyNy45Yy0uMzMsMC0uNjYuMDUtMSwuMDVzLS42NywwLTEtLjA1VjI5LjUzaDJabTgtNS41OGEuNTkuNTksMCwwLDEtLjY5LjE2''@;'; put 'put ''TDE1Ljc1LDIwLjM4LDkuNiw5LjgyYy0uMjUtLjQ3LjM5LTEuMS44Ni0uODRsMTAuMzcsNi4zM2gwbDYuMzMsMTAuMzdBLjU5LjU5LDAsMCwxLDI3LDI2LjM3Wk0yOS41MywxOVYxN2gyLjQyYzAsLjMzLjA1LjY2LjA1LDFzMCwuNjctLjA1LDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNi43NyAxOS4zNSAyNC4zNSAyMy43NyAxOS44IDE2LjMzIDE2Ljc3IDE5LjM1IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVNYXBNYXJrZXI9KDAsdi5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCwwLDE4LDYuNzJabTAsOS40NmEzLjczLDMuNzMsMCwxLDEsMy43My0zLjczQTMuNzMsMy43''@;'; put 'put ''MywwLDAsMSwxOCwxNi4xN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYx''@;'; put 'put ''LDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAsMCwxOCwyWk0yMy41OSwyNGwtLjM2LjUzYy0xLjcyLDIuNTgtNCw1LjQ3LTUuMjMsNi45''@;'; put 'put ''LTEuMTgtMS40My0zLjUxLTQuMzItNS4yMy02LjlMMTIuNDIsMjRjLTEuNzctMi42NC00LjItNi4yNS00LjItMTAuMzFhOS43OCw5Ljc4LDAsMSwxLDE5LjU2LDBDMjcuNzgsMTcuNzksMjUuMzYsMjEuNCwyMy41OSwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCwwLDE4LDYuNzJabTAsOS40NmEzLjczLDMuNzMsMCwxLDEsMy43My0zLjczQTMuNzMsMy43MywwLDAsMSwxOCwxNi4x''@;'; put 'put ''N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40OWE3LjQ5LDcuNDksMCwwLDEtMi0uMzNjMCwuMTksMCwuMzgsMCwuNTcsMCw0LjA2LTIuNDIsNy42Ny00LjE5''@;'; put 'put ''LDEwLjMxbC0uMzYuNTNjLTEuNzIsMi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMUE5Ljc3LDkuNzcsMCwwLDEsMjIuNTYsNS4wOWE3LjQ1LDcuNDUsMCwwLDEsLjUyLTJBMTEuNzUs''@;'; put 'put ''MTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43''@;'; put 'put ''OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTExLjc5LDExLjc5LDAsMCwwLDYuMjIsMTMuNzNjMCw0LjY3LDIuNjIsOC41OCw0LjU0LDExLjQzbC4zNS41MmE5OS42MSw5OS42MSwwLDAsMCw2LjE0LDhsLjc2Ljg5Ljc2LS44OWE5''@;'; put 'put ''OS44Miw5OS44MiwwLDAsMCw2LjE0LThsLjM1LS41M2MxLjkxLTIuODUsNC41My02Ljc1LDQuNTMtMTEuNDJBMTEuNzksMTEuNzksMCwwLDAsMTgsMlptMCwxN2E2LjU2LDYuNTYsMCwxLDEsNi41Ni02LjU2QTYuNTYsNi41NiwwLDAsMSwxOCwxOVoiLz5cbiAgICAgICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40''@;'; put 'put ''OUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzgsMTFhNi41OCw2LjU4LDAsMSwxLTEuNjEtMyw3LjQyLDcuNDIsMCwwLDEsLjMxLTQuODRBMTEuNzUsMTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwu''@;'; put 'put ''NzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIxMi40NCIgcj0iMy43MyIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9''@;'; put 'put ''IjYiIHI9IjUiLz4nKSxULkNsclNoYXBlQmljeWNsZT0oMCx2LmNsckljb25TVkcpKCc8cGF0aCBkPSJNOC41LDI5LjY1QTYuNTEsNi41MSwwLDAsMSwyLDIzLjE1YTYuMzksNi4zOSwwLDAsMSw2LjUtNi4zNkE2LjM5LDYuMzksMCwwLDEsMTUsMjMuMTUsNi41MSw2LjUxLDAsMCwxLDguNSwy''@;'; put 'put ''OS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDguNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNy41LDI5LjY1YTYuNTEsNi41MSwwLDAsMS02LjUtNi41LDYuNSw2LjUsMCwwLDEs''@;'; put 'put ''MTMsMEE2LjUxLDYuNTEsMCwwLDEsMjcuNSwyOS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDI3LjUsMTguNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTksMjQuNjZIOGExLDEsMCwwLDEt''@;'; put 'put ''Ljg5LTEuNDVsNS0xMCwxLjc4LjlMOS42MiwyMi43M0gxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxyZWN0IHg9IjEzIiB5PSIxMi42OCIgd2lkdGg9IjExIiBoZWlnaHQ9IjEuOTEiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC00IiAvPjxwYXRoIGQ9Ik0yOCwyNC42NmExLDEsMCwwLDEtLjk0LS42NkwyMi4yOSwxMC42NkgyMGExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLS45M2gzYS45NC45NCwwLDAsMSwuOTQuNmw1LDE0YTEsMSwwLDAsMS0uNiwxLjI3QTEsMSwwLDAsMSwyOCwyNC42NloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xMywxNC42NmExLDEsMCwwLDEtLjcxLS4yOWwtMS43LTEuNzFIOGExLDEsMCwwLDEtMS0xLC45NC45NCwwLDAsMSwxLTFoM2ExLjA4LDEuMDgsMCwwLDEsLjc1LjI3bDIsMmExLDEsMCwwLDEsMCwxLjQxQTEs''@;'; put 'put ''MSwwLDAsMSwxMywxNC42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0xNSwyMS45Yy0wLjItMi0xLjItMy44LTIuOS00LjlsLTIuNSw0LjlIMTV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik03LjIsMjMuNGMtMC4yLTAuMy0wLjItMC43LDAtMWwzLjItNi4zYy0wLjYtMC4yLTEuMi0wLjItMS44LTAuMkM1LDE1LjksMiwxOC44LDIsMjIuNGMwLDMuNiwyLjksNi41LDYuNSw2LjVcblx0YzMsMCw1LjYtMi4xLDYuMy01SDhDNy43LDIzLjksNy4zLDIzLjcsNy4yLDIzLjR6IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOSwyMS45aC00YzAsMC4yLDAsMC4zLDAsMC41YzAsMC41LTAuMSwxLTAuMiwxLjVIMTlWMjEuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjUs''@;'; put 'put ''MTUuOWMtMC4zLDAtMC42LDAtMC45LDAuMWwyLjQsNi42YzAuMiwwLjUtMC4xLDEuMS0wLjYsMS4zYy0wLjEsMC0wLjIsMC4xLTAuMywwLjFjLTAuNCwwLTAuOC0wLjMtMC45LTAuN2wtMi40LTYuN1xuXHRjLTMuMiwxLjYtNC41LDUuNS0zLDguN2MxLjYsMy4yLDUuNSw0LjUsOC43LDNjMy4y''@;'; put 'put ''LTEuNiw0LjUtNS41LDMtOC43QzMyLjIsMTcuMywzMCwxNS45LDI3LjUsMTUuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTI0LjcsMTYuN2MwLjYtMC4zLDEuMy0wLjUsMS45LTAuNmwtMi43LTcuNEMyMy44LDguMiwyMy40LDgsMjMsNy45''@;'; put 'put ''aC0zYy0wLjYsMC0xLDAuNS0xLDEuMWMwLDAuNSwwLjQsMC45LDEsMC45XG5cdGMwLDAsMCwwLDAsMGgyLjNsMC43LDJoLTkuNmwtMS43LTEuN0MxMS41LDEwLjEsMTEuMywxMCwxMSwxMEg4Yy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDIuNmwxLjIsMS4ybC0xLjUsM1xuXHRjMC42LDAu''@;'; put 'put ''MiwxLjMsMC41LDEuOCwwLjhsMS42LTMuMmgxMEwyNC43LDE2Ljd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLFQuQ2xyU2hhcGVCb2F0PSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS4xLDI3LjFDMjgsMjcsMjYuOSwyNy40LDI2LDI4LjJjLTEu''@;'; put 'put ''MSwxLjEtMi45LDEuMS00LjEsMGMtMS0wLjctMi4xLTEuMS0zLjMtMS4xYy0xLjItMC4xLTIuNCwwLjMtMy4zLDEuMVxuXHRcdEMxNC43LDI4LjcsMTQsMjksMTMuMiwyOXMtMS41LTAuMy0yLjEtMC44Yy0xLTAuOC0yLjItMS4yLTMuNC0xLjJzLTIuNCwwLjQtMy40LDEuMkMzLjcsMjguNywy''@;'; put 'put ''LjgsMjksMiwyOXYyXG5cdFx0YzEuMywwLjEsMi42LTAuMywzLjYtMS4yQzYuMiwyOS4zLDcuMSwyOSw3LjksMjljMC43LDAsMS41LDAuMywyLjEsMC44YzEuOCwxLjYsNC42LDEuNiw2LjUsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOFxuXHRcdGMwLjcsMCwxLjQsMC4zLDIsMC44YzEuOSwx''@;'; put 'put ''LjYsNC42LDEuNiw2LjUsMGMwLjUtMC41LDEuMy0wLjgsMi0wLjhjMC43LDAsMS40LDAuMywxLjksMC44YzAuOSwwLjcsMS45LDEuMSwzLDEuMnYtMlxuXHRcdGMtMSwwLTEuMi0wLjQtMS43LTAuOEMzMS40LDI3LjUsMzAuMywyNy4xLDI5LjEsMjcuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDIzYzAtMC42LDAuNS0xLDEuMS0xSDMybC0zLjUsMy4xaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjItMC4yYzAuNy0wLjgsMC42LTIuMS0wLjItMi44XG5cdFx0QzMzLDIwLjIsMzIuNiwyMCwzMi4xLDIw''@;'; put 'put ''aC0yNWMtMS43LDAtMywxLjMtMywzdjMuMmMwLjUtMC41LDEuMi0wLjgsMS45LTEuMVYyM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik04LjksMTlIMTV2LTcuOGMwLTAuNi0wLjMtMS4yLTAuOC0xLjZDMTMuMyw4LjksMTIsOS4xLDEx''@;'; put 'put ''LjQsMTBsLTQuMSw1LjljLTAuNCwwLjYtMC40LDEuNC0wLjEsMi4xQzcuNSwxOC42LDguMiwxOSw4LjksMTlcblx0XHR6IE0xMy4xLDExLjJMMTMsMTdIOC45TDEzLjEsMTEuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNiwxOGMw''@;'; put 'put ''LjQtMC42LDAuNC0xLjQsMC0yTDE5LjcsNS42Yy0wLjQtMC42LTEtMS0xLjctMWMtMS4xLDAtMiwwLjktMiwyVjE5aDguM0MyNSwxOSwyNS43LDE4LjYsMjYsMTh6IE0xNy45LDYuNlxuXHRcdGw2LjQsMTAuNWgtNi40VjYuNnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC00IiAvPjxwYXRoIGQ9Ik0zNCwzMWMtMS4xLTAuMS0yLjEtMC41LTMtMS4yYy0wLjUtMC41LTEuMi0wLjgtMi0wLjhjLTAuNywwLTEuNSwwLjMtMiwwLjhjLTAuOSwwLjgtMiwxLjEtMy4xLDEuMWMtMS4yLDAtMi40LTAuNC0zLjMtMS4xXG5cdGMtMS4yLTEuMS0zLTEuMS00LjEsMGMt''@;'; put 'put ''MC45LDAuOC0yLjEsMS4yLTMuNCwxLjJjLTEuMiwwLTIuMy0wLjQtMy4yLTEuMmMtMC42LTAuNS0xLjMtMC44LTItMC44Yy0wLjgsMC0xLjcsMC4zLTIuMywwLjhcblx0Yy0xLDAuOC0yLjMsMS4yLTMuNSwxLjFWMjljMC44LDAsMS43LTAuMywyLjMtMC45YzEtMC44LDIuMi0xLjIsMy40LTEu''@;'; put 'put ''MWMxLjIsMCwyLjQsMC40LDMuMywxLjJjMS4yLDEuMSwzLDEuMSw0LjIsMFxuXHRjMS45LTEuNiw0LjctMS42LDYuNSwwYzEuMiwxLjEsMywxLjEsNC4xLDBjMC45LTAuOCwyLjEtMS4yLDMuMy0xLjJjMS4xLDAsMi4yLDAuNCwzLDEuMkMzMi44LDI4LjcsMzMsMjksMzQsMjlMMzQsMzF6IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjEsMjYuMmMwLjYtMC41LDEuMi0wLjgsMS45LTFWMjNjMC0wLjYsMC40LTEuMSwxLTEuMWgyNUwyOC40LDI1aDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjItMC4yXG5cdGMwLjct''@;'; put 'put ''MC45LDAuNS0yLjEtMC40LTIuOEMzMi45LDIwLjEsMzIuNCwyMCwzMiwyMEg3Yy0xLjcsMC0zLDEuMy0zLDNMNC4xLDI2LjJMNC4xLDI2LjJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45LDE4LjlIOC45Yy0xLjEsMC0yLTAuOS0yLTJj''@;'; put 'put ''MC0wLjQsMC4xLTAuOCwwLjQtMS4ybDQuMS01LjhjMC42LTAuOSwxLjktMS4xLDIuOC0wLjVjMC41LDAuNCwwLjgsMSwwLjgsMS42VjE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNC4zLDE4LjlIMTZWNi40YzAtMS4xLDAuOS0yLDIt''@;'; put 'put ''MmMwLjcsMCwxLjMsMC40LDEuNywxTDI2LDE1LjhjMC42LDEsMC4yLDIuMi0wLjcsMi43QzI1LDE4LjcsMjQuNiwxOC44LDI0LjMsMTguOVxuXHRMMjQuMywxOC45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxULkNsclNoYXBlQ2FtcGVydmFuPSgwLHYu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik05LjUsMjRDOS41LDI0LDkuNSwyNCw5LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVjMCwwLDAsMCwwLDBDNiwyOS40LDcuNiwzMSw5LjUsMzFjMS45LDAsMy41LTEuNiwzLjUtMy41XG5cdFx0UzExLjQsMjQsOS41LDI0eiBNOS41LDI5QzguNywyOSw4''@;'; put 'put ''LDI4LjMsOCwyNy41UzguNywyNiw5LjUsMjZzMS41LDAuNywxLjUsMS41UzEwLjMsMjksOS41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIzLjUsMjRDMjMuNSwyNCwyMy41LDI0LDIzLjUsMjRjLTEuOSwwLTMuNSwxLjYtMy41''@;'; put 'put ''LDMuNWMwLDAsMCwwLDAsMGMwLDEuOSwxLjUsMy41LDMuNSwzLjVjMS45LDAsMy41LTEuNiwzLjUtMy41XG5cdFx0UzI1LjQsMjQsMjMuNSwyNHogTTIzLjUsMjljLTAuOCwwLTEuNS0wLjctMS41LTEuNXMwLjctMS41LDEuNS0xLjVzMS41LDAuNywxLjUsMS41UzI0LjMsMjksMjMuNSwyOXoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMywyMC4xVjIwaC0wLjFsLTMuNS01LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4zVjkuN0MzMiw3LjEsMjkuOSw1LDI3LjMsNWgtOC41Yy0xLjksMC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMs''@;'; put 'put ''MS4zLTMsM1xuXHRcdHYxN2gyVjExYzAtMC42LDAuNC0xLDEtMWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIuNy0yLjcsMi43SDI0djloNy44XG5cdFx0bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwx''@;'; put 'put ''aC0ydjJoMmMxLjcsMCwzLTEuMywzLTN2LTMuM0wzMywyMC4xeiBNMjYsMjB2LTVoMS41bDMuMSw1SDI2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3QgeD0iMTkiIHk9IjkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAsMjIgMjIsMjIgMjIsMTMgMTUsMTMgMTUsMjggMTcsMjggMTcsMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik02LDIwaDd2LTdINlYy''@;'; put 'put ''MHogTTgsMTVoM3YzSDhWMTV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNOS41LDI0QzcuNiwyNCw2LDI1LjYsNiwyNy41UzcuNiwzMSw5LjUsMzFjMCwwLDAsMCwwLDBjMS45LDAsMy41LTEuNiwzLjUtMy41YzAsMCwwLTAuMSwwLTAu''@;'; put 'put ''MUMxMywyNS41LDExLjQsMjQsOS41LDI0eiJcblx0XHQgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSIyMy41IiBjeT0iMjcuNSIgcj0iMy41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOS41''@;'; put 'put ''LDE0LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4yVjkuN2MwLDAsMCwwLDAtMC4xQzMyLDcsMjkuOSw1LDI3LjMsNWgtOC41Yy0xLjksMC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMsMS4zLTMsM3YxN1xuXHRcdGgyVjExYzAtMC42LDAuNC0xLDEtMWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40''@;'; put 'put ''LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIuNy0yLjcsMi43SDI3aC0zdjloNy44XG5cdFx0bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwxaC0ydjJoMmMxLjcsMCwzLTEuMywzLTN2LTMuM0wyOS41LDE0LjV6IiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zIiAvPjxyZWN0IHg9IjE5IiB5PSI5IiB3aWR0aD0iNy45IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCwyMiAyMS45LDIyIDIxLjksMTMgMTUsMTMgMTUsMjggMTYuOSwyOCAx''@;'; put 'put ''Ni45LDE1IDIwLDE1IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxyZWN0IHg9IjYiIHk9IjEzIiB3aWR0aD0iNi45IiBoZWlnaHQ9IjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+JyksVC5DbHJTaGFwZUNhcmF2YW49KDAs''@;'; put 'put ''di5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjUsMjFDMTEsMjEsOSwyMyw5LDI1LjVzMiw0LjUsNC41LDQuNWMyLjUsMCw0LjUtMiw0LjUtNC41QzE4LDIzLDE2LDIxLDEzLjUsMjF6IE0xMy41LDI4Yy0xLjQsMC0yLjUtMS4xLTIuNS0yLjVcblx0XHRzMS4xLTIuNSwyLjUtMi41czIuNSwx''@;'; put 'put ''LjEsMi41LDIuNVMxNC45LDI4LDEzLjUsMjh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywy''@;'; put 'put ''LDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRcdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRc''@;'; put 'put ''dGMwLjYsMCwxLTAuNCwxLTFTMzMuNiwyNCwzMywyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxMkg3djZoOVYxMnogTTE0LDE2SDl2LTJoNVYxNnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0xMy41LDMwQzExLDMwLDksMjgsOSwyNS41czItNC41LDQuNS00LjVzNC41LDIsNC41LDQuNUMxOCwyOCwxNiwzMCwxMy41LDMweiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEt''@;'; put 'put ''MS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRjLTAuNiwwLTEtMC40LTEtMVY5YzAtMC42LDAuNC0xLDEtMWgxOC44YzAuNCwwLDAuNywwLjIsMC45LDAuNWw0LjIsNy41YzAuMSww''@;'; put 'put ''LjEsMC4xLDAuMywwLjEsMC41VjI0aC00VjEyaC03djhoMnYtNmgzdjEwaC0zdjJoMTNcblx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMTYsMThIN3YtNmg5VjE4eiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxULkNsclNoYXBlRmVycnk9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDI1LjFjLTEuMiwwLTIuMywwLjQtMy4zLDEuMWMwLDAsMCwwLDAsMGMtMS4xLDEuMS0zLDEuMS00LjEsMGMtMC45LTAuOC0yLjEtMS4yLTMuMy0x''@;'; put 'put ''LjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMlxuXHRcdGMtMS4yLDEuMS0zLDEuMS00LjIsMEMxMCwyNS40LDguOCwyNSw3LjYsMjVjLTEuMiwwLTIuNCwwLjQtMy40LDEuMUMzLjYsMjYuNywyLjgsMjcsMiwyN3YyYzEuMywwLjEsMi41LTAuNCwzLjQtMS4yXG5cdFx0QzYuMSwyNy4zLDYuOSwy''@;'; put 'put ''Nyw3LjcsMjdjMC44LDAsMS41LDAuMywyLjEsMC44YzEuOSwxLjYsNC43LDEuNiw2LjUsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4zLDIuMSwwLjhcblx0XHRjMS45LDEuNiw0LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjUsMC4zLDIs''@;'; put 'put ''MC44YzAuOSwwLjcsMiwxLjEsMy4xLDEuMnYtMS45Yy0wLjcsMC0xLjQtMC4zLTEuOS0wLjlcblx0XHRDMzEuMywyNS40LDMwLjEsMjUsMjksMjUuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjksMjMuMlYyMEgzMmwtMy41LDNo''@;'; put 'put ''MC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC41LTAuNiwwLjUtMS40LDAuMi0yLjFjLTAuNC0wLjctMS0xLTEuOC0xaC00LjRcblx0XHRMMjIuNSwxMUgxN2MtMS43LDAtMywxLjMtMywzaC0yVjguMUg2djYuMWMtMS4yLDAuNC0yLDEuNS0yLDIuOHYxLjFWMjB2''@;'; put 'put ''NC4zbDAuMS0wLjFDNC42LDIzLjcsNS4yLDIzLjQsNS45LDIzLjJ6IE04LDEwaDJ2NEg4VjEwelxuXHRcdCBNNiwxN2MwLTAuNiwwLjQtMSwxLTFoOXYtMmMwLTAuNiwwLjQtMSwxLTFoNWwwLjYsMUgxOHYyaDUuOGwxLjIsMi4xSDZWMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguMiwyNWMtMS4yLDAtMi40LDAuNC0zLjMsMS4yYy0xLjIsMS4xLTMsMS4xLTQuMSwwYy0xLjktMS42LTQuNi0xLjYtNi41LDBjLTEuMiwxLjEtMi45LDEuMS00LjEsMFxuXHRcdGMtMC45LTAuOC0yLTEuMi0zLjItMS4yYy0xLjIsMC0yLjMs''@;'; put 'put ''MC40LTMuMiwxLjJDMy40LDI2LjcsMi43LDI3LDIsMjd2MmMxLjEtMC4xLDIuMi0wLjUsMy4xLTEuMkM1LjYsMjcuMyw2LjMsMjcsNywyN1xuXHRcdGMwLjcsMCwxLjUsMC4zLDIsMC44YzEuOSwxLjYsNC43LDEuNiw2LjYsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4z''@;'; put 'put ''LDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwXG5cdFx0YzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNiwwLjMsMi4xLDAuOGMwLjksMC44LDIuMiwxLjMsMy40LDEuMnYtMmMtMC44LDAtMS42LTAuMy0yLjItMC44QzMwLjcsMjUuNCwyOS41LDI1LDI4LjIsMjV6IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjgsMjMuMnYtMy4zaDI2LjFMMjguNCwyM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4xLTAuMmMwLjctMC45LDAuNS0yLjEtMC40LTIuOGMtMC4zLTAuMy0wLjgtMC40LTEuMi0wLjRc''@;'; put 'put ''blx0XHRoLTQuMWwtNS40LTdoLTUuNWMtMS43LDAtMywxLjMtMywzaC0yVjhINnY2LjJjLTEuMiwwLjQtMi4xLDEuNS0yLjEsMi44bDAsNy4ybDAuMSwwQzQuNSwyMy43LDUuMSwyMy40LDUuOCwyMy4yeiBNMTcuOSwxNGg0LjJcblx0XHRsMS40LDJoLTUuN1YxNHogTTcuOSwxMGgydjRoLTJW''@;'; put 'put ''MTB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVUcmFpbGVyPSgwLHYuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUuOFMxOC4yLDE5''@;'; put 'put ''LjIsMTUsMTkuMnogTTE1LDI5LjJjLTIuMywwLTQuMi0xLjktNC4yLTQuMlxuXHRcdHMxLjktNC4yLDQuMi00LjJzNC4yLDEuOSw0LjIsNC4yUzE3LjMsMjkuMiwxNSwyOS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHJlY3QgeD0iMTQiIHk9IjI0''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOUgydjEzLjFjMCwwLDAsMCwwLDBDMiwyNC4zLDMuNywyNiw1LjksMjZIN3YtMkg1LjljLTEsMC0xLjgtMC44LTEuOS0xLjlWMTVoMjJ2Ny4xYzAs''@;'; put 'put ''MS0wLjgsMS44LTEuOSwxLjlIMjN2MmgxLjFcblx0XHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiBNMjYsMTNINHYtMmgyMlYxM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAv''@;'; put 'put ''PjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjEx''@;'; put 'put ''aDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTkuMmMtMy4yLDAtNS44LDIuNi01LjgsNS44czIuNiw1LjgsNS44LDUuOHM1LjgtMi42LDUuOC01LjhsMCwwQzIwLjgsMjEuOCwxOC4y''@;'; put 'put ''LDE5LjIsMTUsMTkuMnogTTE2LDI2aC0ydi0yaDJWMjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFQuQ2xyU2hhcGVPbkhvbGlkYXk9KDAsdi5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA4LDIuMzRjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgs''@;'; put 'put ''MTQsMTYsMTRBMTcuOTEsMTcuOTEsMCwwLDAsMjMsMjkuNjZsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zLDEsMSwwLDAsMCwuMTYtLjU0VjI1LjYxYTEzLDEzLDAsMCwwLDQtOS4yN0MzNC4wOCw4LjYyLDI2LjksMi4zNCwxOC4wOCwyLjM0Wk0yOC4zNywyNC40NWExLDEsMCwwLDAtLjMy''@;'; put 'put ''LjczdjUuMzRsLTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMSwxNiwxNiwwLDAsMS00Ljc2LjcyYy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMSwxMS4xLDAsMCwxLDI4LjM3LDI0LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjEsMTUuODIsMzEsMTUuNjcsMjguNSwxMy40NGEzLjI1LDMuMjUsMCwwLDAtMi4zOS0uODRsLTUuMzguMzQtMy41OS0zYS44MS44MSwwLDAsMC0uNTItLjE5SDEzLjU2YS43OC43OCwwLDAsMC0uNjkuNC43Ny43NywwLDAsMCwwLC43''@;'; put 'put ''OWwxLjM2LDIuNDQtNC43MS4yOSwxLjMxLDEuNTIsMTUuMzktMWExLjY1LDEuNjUsMCwwLDEsMS4yMi40M2wyLjM2LDIuMTNhLjExLjExLDAsMCwxLDAsLjA3YzAsLjA2LS4wOS4wNS0uMS4wNkgyMS44MmwtLjM1LjM3LTUuMTksNS41M0gxNC42NGwyLjczLTUuOUg4LjU0TDcuMTMsMTQuMTYs''@;'; put 'put ''Ni41MSwxM2EuOC44LDAsMCwwLTEtLjJBLjgxLjgxLDAsMCwwLDUuMiwxMy45bDIsMy45NGExLjIxLDEuMjEsMCwwLDAsMS4wOC42NWg2LjU3bC0xLjk0LDQuMThBMS4yLDEuMiwwLDAsMCwxMywyMy44M2ExLjIyLDEuMjIsMCwwLDAsMSwuNTZoMi40M2ExLjE3LDEuMTcsMCwwLDAsLjg4LS4z''@;'; put 'put ''OWw1LjE4LTUuNTFoNy4xNmExLjY1LDEuNjUsMCwwLDAsMS41Mi0uOTFBMS43NCwxLjc0LDAsMCwwLDMxLjEsMTUuODJaTTE0LjkyLDExLjMxaDEuNDFsMi4wOSwxLjc3TDE2LDEzLjIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTcuOTEsMTcuOTEsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zQTEsMSwwLDAsMCwzMCwzMi41VjI1Ljc3YTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwx''@;'; put 'put ''OCwyLjVaTTI5Ljg0LDE4SDIxLjUxYS40Mi40MiwwLDAsMC0uMy4xM2wtNS4zLDUuNjRhLjM5LjM5LDAsMCwxLS4yOS4xM0gxMy4xOWEuNDEuNDEsMCwwLDEtLjM3LS41OGwyLjQ3LTUuMzJINy40NmEuNDIuNDIsMCwwLDEtLjM2LS4yMmwtMi43LTVINi4yNGEuNTMuNTMsMCwwLDEsLjM5LjE4''@;'; put 'put ''bDEuNTYsMS42OWEuMzguMzgsMCwwLDAsLjMzLjE0bDYuMTgtLjM4LTItMy41NWgyLjg5YS40Ny40NywwLDAsMSwuMzEuMTFMMTkuNjMsMTRsNi42OS0uMzVhMi40NCwyLjQ0LDAsMCwxLDEuODEuNjNsMi40NywyLjIzQS45Mi45MiwwLDAsMSwyOS44NCwxOFoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksVC5UcmF2ZWxTaGFwZXM9e3RydWNrOlQuQ2xyU2hhcGVUcnVjayxhaXJwbGFuZTpULkNsclNoYXBlQWlycGxhbmUsY2FyOlQuQ2xyU2hhcGVDYXIsbWFwOlQuQ2xyU2hhcGVNYXAsY29tcGFzczpULkNsclNoYXBlQ29tcGFzcywibWFwLW1h''@;'; put 'put ''cmtlciI6VC5DbHJTaGFwZU1hcE1hcmtlcixiaWN5Y2xlOlQuQ2xyU2hhcGVCaWN5Y2xlLGJvYXQ6VC5DbHJTaGFwZUJvYXQsY2FtcGVydmFuOlQuQ2xyU2hhcGVDYW1wZXJ2YW4sY2FyYXZhbjpULkNsclNoYXBlQ2FyYXZhbixmZXJyeTpULkNsclNoYXBlRmVycnksdHJhaWxlcjpULkNsclNo''@;'; put 'put ''YXBlVHJhaWxlciwib24taG9saWRheSI6VC5DbHJTaGFwZU9uSG9saWRheX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFQuVHJhdmVsU2hhcGVzLCJwbGFuZSIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlRyYXZlbFNoYXBlcy5haXJwbGFuZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULlRy''@;'; put 'put ''YXZlbFNoYXBlcywiYXV0byIsKDAsay5kZXNjcmlwdG9yQ29uZmlnKShULlRyYXZlbFNoYXBlcy5jYXIpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoVC5UcmF2ZWxTaGFwZXMpfSwiLi9w''@;'; put 'put ''cm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3Jp''@;'; put 'put ''cHRvci1jb25maWcudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShULCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxULmRlc2NyaXB0b3JDb25maWc9dm9pZCAwLFQuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlvbiBrKHYpe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTp2fX19LCIuL3By''@;'; put 'put ''b2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFn''@;'; put 'put ''LWdlbmVyYXRvci50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KFQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFQuY2xySWNvblNWRz12b2lkIDA7VC5jbHJJY29uU1ZHPWZ1bmN0aW9uIEgoQil7dmFyIEw9IiI7cmV0dXJuIEIuaW5kZXhPZigiLS1iYWRnZWQiKT4tMSYmKEwrPSJjYW4tYmFkZ2UgIiksQi5pbmRleE9mKCItLWFsZXJ0''@;'; put 'put ''ZWQiKT4tMSYmKEwrPSJjYW4tYWxlcnQgIiksQi5pbmRleE9mKCJjbHItaS1zb2xpZCIpPi0xJiYoTCs9Imhhcy1zb2xpZCAiKSwoTD8nPHN2ZyB2ZXJzaW9uPSIxLjEiIGNsYXNzPSInK0wrJyIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0''@;'; put 'put ''IlxuICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyI+JzonPHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzNiAzNiIgcHJlc2VydmVB''@;'; put 'put ''c3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPicpK0IrIjwvc3ZnPiJ9fX0pfSw2MTQ5NToo''@;'; put 'put ''V2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPXt9O1QucihzZSksVC5kKHNlLHtjYW5jZWxBbmltYXRpb25GcmFtZTooKT0+TFMsZ2V0Q29tcGFyaXNvbkZ1bmN0aW9uOigpPT5WY2UsaGFzQ2FwdGlvblByb2JsZW06KCk9PmlZLGlzQ2xhc3NMaXN0U3VwcG9ydGVkOigpPT5GY2UsaXNH''@;'; put 'put ''ZXRDb21wdXRlZFN0eWxlU3VwcG9ydGVkOigpPT5OY2UsaXNQYXNzaXZlRXZlbnRTdXBwb3J0ZWQ6KCk9PkJjZSxpc1RleHRDb250ZW50U3VwcG9ydGVkOigpPT5IY2UsaXNUb3VjaFN1cHBvcnRlZDooKT0+blkscmVxdWVzdEFuaW1hdGlvbkZyYW1lOigpPT5CSX0pO3ZhciBrPXt9O1Qucihr''@;'; put 'put ''KSxULmQoayx7YXJyYXlBdmc6KCk9PllXZSxhcnJheUVhY2g6KCk9PlJuLGFycmF5RmlsdGVyOigpPT5EMSxhcnJheUZsYXR0ZW46KCk9PlVjZSxhcnJheU1hcDooKT0+aGEsYXJyYXlNYXg6KCk9PlVXZSxhcnJheU1pbjooKT0+WldlLGFycmF5UmVkdWNlOigpPT5QcyxhcnJheVN1bTooKT0+''@;'; put 'put ''emNlLGFycmF5VW5pcXVlOigpPT5hWSxleHRlbmRBcnJheTooKT0+b1ksZ2V0RGlmZmVyZW5jZU9mQXJyYXlzOigpPT5sWSxnZXRJbnRlcnNlY3Rpb25PZkFycmF5czooKT0+V1dlLGdldFVuaW9uT2ZBcnJheXM6KCk9PkdXZSxwaXZvdDooKT0+RlMsc3RyaW5nVG9BcnJheTooKT0+c1ksdG8y''@;'; put 'put ''ZEFycmF5OigpPT5qY2V9KTt2YXIgdj17fTtULnIodiksVC5kKHYse2Nsb25lOigpPT5lMCxjcmVhdGVPYmplY3RQcm9wTGlzdGVuZXI6KCk9Pmc1LGRlZXBDbG9uZTooKT0+eGMsZGVlcEV4dGVuZDooKT0+SFMsZGVlcE9iamVjdFNpemU6KCk9PlVJLGRlZmluZUdldHRlcjooKT0+SGgsZHVj''@;'; put 'put ''a1NjaGVtYTooKT0+UDcsZXh0ZW5kOigpPT5ydSxnZXRQcm9wZXJ0eTooKT0+WWNlLGhhc093blByb3BlcnR5OigpPT5Tcyxpbmhlcml0OigpPT5mMyxpc09iamVjdDooKT0+cGEsaXNPYmplY3RFcXVhbDooKT0+akksbWl4aW46KCk9PlRsLG9iamVjdEVhY2g6KCk9Pm1hLHNldFByb3BlcnR5''@;'; put 'put ''OigpPT56SX0pO3ZhciBoZT17fTtULnIoaGUpLFQuZChoZSx7aXNDaHJvbWU6KCk9PnVZLGlzQ2hyb21lV2ViS2l0OigpPT4kY2UsaXNFZGdlOigpPT5YY2UsaXNFZGdlV2ViS2l0OigpPT5xV2UsaXNGaXJlZm94OigpPT5aSSxpc0ZpcmVmb3hXZWJLaXQ6KCk9PktjZSxpc0lFOigpPT5KY2Us''@;'; put 'put ''aXNJRTk6KCk9PlFjZSxpc0lPUzooKT0+Y1ksaXNJcGFkT1M6KCk9PmZZLGlzTGludXhPUzooKT0+SldlLGlzTVNCcm93c2VyOigpPT5YV2UsaXNNYWNPUzooKT0+WUksaXNNb2JpbGVCcm93c2VyOigpPT5QZCxpc1NhZmFyaTooKT0+cWNlLGlzV2luZG93c09TOigpPT5kWSxzZXRCcm93c2Vy''@;'; put 'put ''TWV0YTooKT0+V2NlLHNldFBsYXRmb3JtTWV0YTooKT0+R2NlfSk7dmFyIEg9e307VC5yKEgpLFQuZChILHtfaW5qZWN0UHJvZHVjdEluZm86KCk9PmYwZSxpc0RlZmluZWQ6KCk9PmlvLGlzRW1wdHk6KCk9Pnd1LGlzUmVnRXhwOigpPT5hMGUsaXNVbmRlZmluZWQ6KCk9PkxsLHN0cmluZ2lm''@;'; put 'put ''eTooKT0+TXN9KTt2YXIgQj17fTtULnIoQiksVC5kKEIse2VxdWFsc0lnbm9yZUNhc2U6KCk9PnJHZSxpc1BlcmNlbnRWYWx1ZTooKT0+Z1kscmFuZG9tU3RyaW5nOigpPT5tWSxzYW5pdGl6ZTooKT0+R0ksc3RyaXBUYWdzOigpPT55WSxzdWJzdGl0dXRlOigpPT52WSx0b1VwcGVyQ2FzZUZp''@;'; put 'put ''cnN0OigpPT5BY30pO3ZhciBMPXt9O1QucihMKSxULmQoTCx7SFRNTF9DSEFSQUNURVJTOigpPT52MGUsYWRkQ2xhc3M6KCk9PmdpLGFkZEV2ZW50OigpPT5jR2UsY2xlYXJUZXh0U2VsZWN0aW9uOigpPT5FWSxjbG9zZXN0OigpPT54NCxjbG9zZXN0RG93bjooKT0+elMsZW1wdHk6KCk9PkZk''@;'; put 'put ''LGZhc3RJbm5lckhUTUw6KCk9PnY1LGZhc3RJbm5lclRleHQ6KCk9Pk80LGdldENhcmV0UG9zaXRpb246KCk9PmtZLGdldENvbXB1dGVkU3R5bGU6KCk9PkQ0LGdldENzc1RyYW5zZm9ybTooKT0+aEdlLGdldEZyYW1lRWxlbWVudDooKT0+cDBlLGdldFBhcmVudDooKT0+aDBlLGdldFBhcmVu''@;'; put 'put ''dFdpbmRvdzooKT0+alMsZ2V0U2Nyb2xsTGVmdDooKT0+S0ksZ2V0U2Nyb2xsVG9wOigpPT5VUyxnZXRTY3JvbGxhYmxlRWxlbWVudDooKT0+WlMsZ2V0U2Nyb2xsYmFyV2lkdGg6KCk9Pk51LGdldFNlbGVjdGlvbkVuZFBvc2l0aW9uOigpPT55MGUsZ2V0U2VsZWN0aW9uVGV4dDooKT0+YjBl''@;'; put 'put ''LGdldFN0eWxlOigpPT5CNyxnZXRUcmltbWluZ0NvbnRhaW5lcjooKT0+YjUsZ2V0V2luZG93U2Nyb2xsTGVmdDooKT0+eTUsZ2V0V2luZG93U2Nyb2xsVG9wOigpPT5WNyxoYXNBY2Nlc3NUb1BhcmVudFdpbmRvdzooKT0+c0dlLGhhc0NsYXNzOigpPT5ZbyxoYXNIb3Jpem9udGFsU2Nyb2xs''@;'; put 'put ''YmFyOigpPT53MGUsaGFzVmVydGljYWxTY3JvbGxiYXI6KCk9Pl8wZSxpbmRleDooKT0+bTBlLGlubmVySGVpZ2h0OigpPT5kMyxpbm5lcldpZHRoOigpPT5ZUyxpc0NoaWxkT2Y6KCk9PkE0LGlzRGV0YWNoZWQ6KCk9PkFZLGlzSW5wdXQ6KCk9PiRTLGlzT3V0c2lkZUlucHV0OigpPT5YSSxp''@;'; put 'put ''c1Zpc2libGU6KCk9Pk43LG1hdGNoZXNDU1NSdWxlczooKT0+dUdlLG9ic2VydmVWaXNpYmlsaXR5Q2hhbmdlT25jZTooKT0+UzBlLG9mZnNldDooKT0+aXUsb3V0ZXJIZWlnaHQ6KCk9PmNzLG91dGVyV2lkdGg6KCk9PlNsLG92ZXJsYXlDb250YWluc0VsZW1lbnQ6KCk9PlQ0LHJlbW92ZUNs''@;'; put 'put ''YXNzOigpPT5KbyxyZW1vdmVFdmVudDooKT0+ZkdlLHJlbW92ZVRleHROb2RlczooKT0+TVkscmVzZXRDc3NUcmFuc2Zvcm06KCk9PkdTLHNlbGVjdEVsZW1lbnRJZkFsbG93ZWQ6KCk9PkMwZSxzZXRDYXJldFBvc2l0aW9uOigpPT5XUyxzZXRPdmVybGF5UG9zaXRpb246KCk9PnFJfSk7dmFy''@;'; put 'put ''IEs9e307VC5yKEspLFQuZChLLHtjdXJyeTooKT0+azBlLGN1cnJ5UmlnaHQ6KCk9PmdHZSxkZWJvdW5jZTooKT0+VFksZmFzdENhbGw6KCk9PkpJLGlzRnVuY3Rpb246KCk9PlBsLHBhcnRpYWw6KCk9Pk9ZLHBpcGU6KCk9Pm1HZSx0aHJvdHRsZTooKT0+TTBlLHRocm90dGxlQWZ0ZXJIaXRz''@;'; put 'put ''OigpPT5wR2V9KTt2YXIgSj17fTtULnIoSiksVC5kKEose0tFWV9DT0RFUzooKT0+aG8saXNDdHJsS2V5OigpPT55R2UsaXNDdHJsTWV0YUtleTooKT0+eDBlLGlzRnVuY3Rpb25LZXk6KCk9PkRZLGlzS2V5OigpPT5qNyxpc1ByaW50YWJsZUNoYXI6KCk9PkUwZX0pO3ZhciBJPXt9O1QucihJ''@;'; put 'put ''KSxULmQoSSx7aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6KCk9Pl81LGlzTGVmdENsaWNrOigpPT5RSSxpc1JpZ2h0Q2xpY2s6KCk9Pkk0LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjooKT0+SGR9KTt2YXIgUj17fTtULnIoUiksVC5kKFIse19kYXRhVG9IVE1MOigpPT56WSxodG1s''@;'; put 'put ''VG9HcmlkU2V0dGluZ3M6KCk9PkIwZSxpbnN0YW5jZVRvSFRNTDooKT0+all9KTt2YXIgRT17fTtULnIoRSksVC5kKEUse2lzTnVtZXJpYzooKT0+dDAsaXNOdW1lcmljTGlrZTooKT0+ajBlLHJhbmdlRWFjaDooKT0+X28scmFuZ2VFYWNoUmV2ZXJzZTooKT0+clIsdmFsdWVBY2NvcmRpbmdQ''@;'; put 'put ''ZXJjZW50OigpPT5ZWX0pO3ZhciB6PXt9O1Qucih6KSxULmQoeix7Y291bnRGaXJzdFJvd0tleXM6KCk9PkJXLGNyZWF0ZUVtcHR5U3ByZWFkc2hlZXREYXRhOigpPT5ndHQsY3JlYXRlU3ByZWFkc2hlZXREYXRhOigpPT5wdHQsY3JlYXRlU3ByZWFkc2hlZXRPYmplY3REYXRhOigpPT5tdHQs''@;'; put 'put ''ZGF0YVJvd1RvQ2hhbmdlc0FycmF5OigpPT5WVyxpc0FycmF5T2ZBcnJheXM6KCk9PmpmZSxpc0FycmF5T2ZPYmplY3RzOigpPT56ZmUsc3ByZWFkc2hlZXRDb2x1bW5JbmRleDooKT0+aHR0LHNwcmVhZHNoZWV0Q29sdW1uTGFiZWw6KCk9PlZSfSk7dmFyIGo9e307VC5yKGopLFQuZChqLHtD''@;'; put 'put ''T05URVhUTUVOVV9JVEVNU19BRERfQ09NTUVOVDooKT0+VEcsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UOigpPT5SRyxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfQk9UVE9NOigpPT5CRyxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfQ0VOVEVSOigpPT5QRyxDT05URVhUTUVO''@;'; put 'put ''VV9JVEVNU19BTElHTk1FTlRfSlVTVElGWTooKT0+SEcsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX0xFRlQ6KCk9PkxHLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9NSURETEU6KCk9PlZHLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9SSUdIVDooKT0+RkcsQ09OVEVYVE1F''@;'; put 'put ''TlVfSVRFTVNfQUxJR05NRU5UX1RPUDooKT0+TkcsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSUzooKT0+akcsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSU19CT1RUT006KCk9PlpHLENPTlRFWFRNRU5VX0lURU1TX0JPUkRFUlNfTEVGVDooKT0+WUcsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVS''@;'; put 'put ''U19SSUdIVDooKT0+VUcsQ09OVEVYVE1FTlVfSVRFTVNfQk9SREVSU19UT1A6KCk9PnpHLENPTlRFWFRNRU5VX0lURU1TX0NMRUFSX0NPTFVNTjooKT0+YkcsQ09OVEVYVE1FTlVfSVRFTVNfQ09QWTooKT0+X0csQ09OVEVYVE1FTlVfSVRFTVNfQ09QWV9DT0xVTU5fSEVBREVSU19PTkxZOigp''@;'; put 'put ''PT5TRyxDT05URVhUTUVOVV9JVEVNU19DT1BZX1dJVEhfQ09MVU1OX0dST1VQX0hFQURFUlM6KCk9PkNHLENPTlRFWFRNRU5VX0lURU1TX0NPUFlfV0lUSF9DT0xVTU5fSEVBREVSUzooKT0+d0csQ09OVEVYVE1FTlVfSVRFTVNfQ1VUOigpPT5NRyxDT05URVhUTUVOVV9JVEVNU19FRElUX0NP''@;'; put 'put ''TU1FTlQ6KCk9Pk9HLENPTlRFWFRNRU5VX0lURU1TX0ZSRUVaRV9DT0xVTU46KCk9PmtHLENPTlRFWFRNRU5VX0lURU1TX0hJREVfQ09MVU1OOigpPT5LRyxDT05URVhUTUVOVV9JVEVNU19ISURFX1JPVzooKT0+WEcsQ09OVEVYVE1FTlVfSVRFTVNfSU5TRVJUX0xFRlQ6KCk9PmRHLENPTlRF''@;'; put 'put ''WFRNRU5VX0lURU1TX0lOU0VSVF9SSUdIVDooKT0+aEcsQ09OVEVYVE1FTlVfSVRFTVNfTUVSR0VfQ0VMTFM6KCk9PnhHLENPTlRFWFRNRU5VX0lURU1TX05FU1RFRF9ST1dTX0RFVEFDSF9DSElMRDooKT0+JEcsQ09OVEVYVE1FTlVfSVRFTVNfTkVTVEVEX1JPV1NfSU5TRVJUX0NISUxEOigp''@;'; put 'put ''PT5HRyxDT05URVhUTUVOVV9JVEVNU19OT19JVEVNUzooKT0+dUcsQ09OVEVYVE1FTlVfSVRFTVNfUkVBRF9PTkxZOigpPT55RyxDT05URVhUTUVOVV9JVEVNU19SRUFEX09OTFlfQ09NTUVOVDooKT0+SUcsQ09OVEVYVE1FTlVfSVRFTVNfUkVETzooKT0+dkcsQ09OVEVYVE1FTlVfSVRFTVNf''@;'; put 'put ''UkVNT1ZFX0JPUkRFUlM6KCk9PldHLENPTlRFWFRNRU5VX0lURU1TX1JFTU9WRV9DT0xVTU46KCk9Pm1HLENPTlRFWFRNRU5VX0lURU1TX1JFTU9WRV9DT01NRU5UOigpPT5ERyxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfUk9XOigpPT5wRyxDT05URVhUTUVOVV9JVEVNU19ST1dfQUJPVkU6''@;'; put 'put ''KCk9PmNHLENPTlRFWFRNRU5VX0lURU1TX1JPV19CRUxPVzooKT0+ZkcsQ09OVEVYVE1FTlVfSVRFTVNfU0hPV19DT0xVTU46KCk9PnFHLENPTlRFWFRNRU5VX0lURU1TX1NIT1dfUk9XOigpPT5KRyxDT05URVhUTUVOVV9JVEVNU19VTkRPOigpPT5nRyxDT05URVhUTUVOVV9JVEVNU19VTkZS''@;'; put 'put ''RUVaRV9DT0xVTU46KCk9PkVHLENPTlRFWFRNRU5VX0lURU1TX1VOTUVSR0VfQ0VMTFM6KCk9PkFHLENPTlRFWFRfTUVOVV9JVEVNU19OQU1FU1BBQ0U6KCk9Pm1kZSxGSUxURVJTX0JVVFRPTlNfQ0FOQ0VMOigpPT5NJCxGSUxURVJTX0JVVFRPTlNfQ0xFQVI6KCk9PkMkLEZJTFRFUlNfQlVU''@;'; put 'put ''VE9OU19PSzooKT0+UyQsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1NFQVJDSDooKT0+ayQsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1NFQ09ORF9WQUxVRTooKT0+eCQsRklMVEVSU19CVVRUT05TX1BMQUNFSE9MREVSX1ZBTFVFOigpPT5FJCxGSUxURVJTX0JVVFRPTlNfU0VM''@;'; put 'put ''RUNUX0FMTDooKT0+dyQsRklMVEVSU19DT05ESVRJT05TX0FGVEVSOigpPT5oJCxGSUxURVJTX0NPTkRJVElPTlNfQkVGT1JFOigpPT5wJCxGSUxURVJTX0NPTkRJVElPTlNfQkVHSU5TX1dJVEg6KCk9PnIkLEZJTFRFUlNfQ09ORElUSU9OU19CRVRXRUVOOigpPT5mJCxGSUxURVJTX0NPTkRJ''@;'; put 'put ''VElPTlNfQllfVkFMVUU6KCk9PkFydCxGSUxURVJTX0NPTkRJVElPTlNfQ09OVEFJTlM6KCk9Pm8kLEZJTFRFUlNfQ09ORElUSU9OU19FTVBUWTooKT0+UUcsRklMVEVSU19DT05ESVRJT05TX0VORFNfV0lUSDooKT0+aSQsRklMVEVSU19DT05ESVRJT05TX0VRVUFMOigpPT50JCxGSUxURVJT''@;'; put 'put ''X0NPTkRJVElPTlNfR1JFQVRFUl9USEFOOigpPT5sJCxGSUxURVJTX0NPTkRJVElPTlNfR1JFQVRFUl9USEFOX09SX0VRVUFMOigpPT5zJCxGSUxURVJTX0NPTkRJVElPTlNfTEVTU19USEFOOigpPT51JCxGSUxURVJTX0NPTkRJVElPTlNfTEVTU19USEFOX09SX0VRVUFMOigpPT5jJCxGSUxU''@;'; put 'put ''RVJTX0NPTkRJVElPTlNfTkFNRVNQQUNFOigpPT5rcyxGSUxURVJTX0NPTkRJVElPTlNfTk9ORTooKT0+cVIsRklMVEVSU19DT05ESVRJT05TX05PVF9CRVRXRUVOOigpPT5kJCxGSUxURVJTX0NPTkRJVElPTlNfTk9UX0NPTlRBSU46KCk9PmEkLEZJTFRFUlNfQ09ORElUSU9OU19OT1RfRU1Q''@;'; put 'put ''VFk6KCk9PmUkLEZJTFRFUlNfQ09ORElUSU9OU19OT1RfRVFVQUw6KCk9Pm4kLEZJTFRFUlNfQ09ORElUSU9OU19UT0RBWTooKT0+bSQsRklMVEVSU19DT05ESVRJT05TX1RPTU9SUk9XOigpPT5nJCxGSUxURVJTX0NPTkRJVElPTlNfWUVTVEVSREFZOigpPT52JCxGSUxURVJTX0RJVlNfRklM''@;'; put 'put ''VEVSX0JZX0NPTkRJVElPTjooKT0+eSQsRklMVEVSU19ESVZTX0ZJTFRFUl9CWV9WQUxVRTooKT0+YiQsRklMVEVSU19MQUJFTFNfQ09OSlVOQ1RJT046KCk9Pl8kLEZJTFRFUlNfTEFCRUxTX0RJU0pVTkNUSU9OOigpPT5YUixGSUxURVJTX05BTUVTUEFDRTooKT0+bjAsRklMVEVSU19WQUxV''@;'; put 'put ''RVNfQkxBTktfQ0VMTFM6KCk9PkpSfSk7dmFyIFY9e307ZnVuY3Rpb24gRyhsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbH1mdW5jdGlvbiBXKGwpe2NvbnN0IGE9bChmPT57RXJyb3IuY2FsbChmKSxmLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrfSk7cmV0dXJuIGEucHJvdG90eXBlPU9i''@;'; put 'put ''amVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGF9VC5yKFYpLFQuZChWLHtnZXROb3JtYWxpemVkRGF0ZTooKT0+aDJlfSk7Y29uc3QgVT1XKGw9PmZ1bmN0aW9uKGEpe2wodGhpcyksdGhpcy5tZXNzYWdlPWE/YCR7YS5sZW5ndGh9IGVycm9y''@;'; put 'put ''cyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4ke2EubWFwKChmLGQpPT5gJHtkKzF9KSAke2YudG9TdHJpbmcoKX1gKS5qb2luKCJcbiAgIil9YDoiIix0aGlzLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuZXJyb3JzPWF9KTtmdW5jdGlvbiBxKGwsYyl7aWYobCl7''@;'; put 'put ''Y29uc3QgYT1sLmluZGV4T2YoYyk7MDw9YSYmbC5zcGxpY2UoYSwxKX19Y2xhc3MgdGV7Y29uc3RydWN0b3IoYyl7dGhpcy5pbml0aWFsVGVhcmRvd249Yyx0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRhZ2U9bnVsbCx0aGlzLl9maW5hbGl6ZXJzPW51bGx9dW5zdWJzY3JpYmUoKXtsZXQg''@;'; put 'put ''YztpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO2NvbnN0e19wYXJlbnRhZ2U6YX09dGhpcztpZihhKWlmKHRoaXMuX3BhcmVudGFnZT1udWxsLEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IGggb2YgYSloLnJlbW92ZSh0aGlzKTtlbHNlIGEucmVtb3ZlKHRoaXMpO2NvbnN0e2lu''@;'; put 'put ''aXRpYWxUZWFyZG93bjpmfT10aGlzO2lmKEcoZikpdHJ5e2YoKX1jYXRjaChoKXtjPWggaW5zdGFuY2VvZiBVP2guZXJyb3JzOltoXX1jb25zdHtfZmluYWxpemVyczpkfT10aGlzO2lmKGQpe3RoaXMuX2ZpbmFsaXplcnM9bnVsbDtmb3IoY29uc3QgaCBvZiBkKXRyeXtsZShoKX1jYXRjaCht''@;'; put 'put ''KXtjPWM/P1tdLG0gaW5zdGFuY2VvZiBVP2M9Wy4uLmMsLi4ubS5lcnJvcnNdOmMucHVzaChtKX19aWYoYyl0aHJvdyBuZXcgVShjKX19YWRkKGMpe3ZhciBhO2lmKGMmJmMhPT10aGlzKWlmKHRoaXMuY2xvc2VkKWxlKGMpO2Vsc2V7aWYoYyBpbnN0YW5jZW9mIHRlKXtpZihjLmNsb3NlZHx8''@;'; put 'put ''Yy5faGFzUGFyZW50KHRoaXMpKXJldHVybjtjLl9hZGRQYXJlbnQodGhpcyl9KHRoaXMuX2ZpbmFsaXplcnM9bnVsbCE9PShhPXRoaXMuX2ZpbmFsaXplcnMpJiZ2b2lkIDAhPT1hP2E6W10pLnB1c2goYyl9fV9oYXNQYXJlbnQoYyl7Y29uc3R7X3BhcmVudGFnZTphfT10aGlzO3JldHVybiBh''@;'; put 'put ''PT09Y3x8QXJyYXkuaXNBcnJheShhKSYmYS5pbmNsdWRlcyhjKX1fYWRkUGFyZW50KGMpe2NvbnN0e19wYXJlbnRhZ2U6YX09dGhpczt0aGlzLl9wYXJlbnRhZ2U9QXJyYXkuaXNBcnJheShhKT8oYS5wdXNoKGMpLGEpOmE/W2EsY106Y31fcmVtb3ZlUGFyZW50KGMpe2NvbnN0e19wYXJlbnRh''@;'; put 'put ''Z2U6YX09dGhpczthPT09Yz90aGlzLl9wYXJlbnRhZ2U9bnVsbDpBcnJheS5pc0FycmF5KGEpJiZxKGEsYyl9cmVtb3ZlKGMpe2NvbnN0e19maW5hbGl6ZXJzOmF9PXRoaXM7YSYmcShhLGMpLGMgaW5zdGFuY2VvZiB0ZSYmYy5fcmVtb3ZlUGFyZW50KHRoaXMpfX10ZS5FTVBUWT0oKCk9Pntj''@;'; put 'put ''b25zdCBsPW5ldyB0ZTtyZXR1cm4gbC5jbG9zZWQ9ITAsbH0pKCk7Y29uc3QgbmU9dGUuRU1QVFk7ZnVuY3Rpb24gaWUobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiB0ZXx8bCYmImNsb3NlZCJpbiBsJiZHKGwucmVtb3ZlKSYmRyhsLmFkZCkmJkcobC51bnN1YnNjcmliZSl9ZnVuY3Rpb24gbGUo''@;'; put 'put ''bCl7RyhsKT9sKCk6bC51bnN1YnNjcmliZSgpfWNvbnN0IGRlPXtvblVuaGFuZGxlZEVycm9yOm51bGwsb25TdG9wcGVkTm90aWZpY2F0aW9uOm51bGwsUHJvbWlzZTp2b2lkIDAsdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzohMSx1c2VEZXByZWNhdGVkTmV4dENvbnRl''@;'; put 'put ''eHQ6ITF9LHVlPXtzZXRUaW1lb3V0KGwsYywuLi5hKXtjb25zdHtkZWxlZ2F0ZTpmfT11ZTtyZXR1cm4gZj8uc2V0VGltZW91dD9mLnNldFRpbWVvdXQobCxjLC4uLmEpOnNldFRpbWVvdXQobCxjLC4uLmEpfSxjbGVhclRpbWVvdXQobCl7Y29uc3R7ZGVsZWdhdGU6Y309dWU7cmV0dXJuKGM/''@;'; put 'put ''LmNsZWFyVGltZW91dHx8Y2xlYXJUaW1lb3V0KShsKX0sZGVsZWdhdGU6dm9pZCAwfTtmdW5jdGlvbiBjZShsKXt1ZS5zZXRUaW1lb3V0KCgpPT57Y29uc3R7b25VbmhhbmRsZWRFcnJvcjpjfT1kZTtpZighYyl0aHJvdyBsO2MobCl9KX1mdW5jdGlvbiBZKCl7fWNvbnN0IGI9RigiQyIsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCk7ZnVuY3Rpb24gRihsLGMsYSl7cmV0dXJue2tpbmQ6bCx2YWx1ZTpjLGVycm9yOmF9fWxldCBnPW51bGw7ZnVuY3Rpb24gQyhsKXtpZihkZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXtjb25zdCBjPSFnO2lmKGMmJihnPXtlcnJvclRocm93bjoh''@;'; put 'put ''MSxlcnJvcjpudWxsfSksbCgpLGMpe2NvbnN0e2Vycm9yVGhyb3duOmEsZXJyb3I6Zn09ZztpZihnPW51bGwsYSl0aHJvdyBmfX1lbHNlIGwoKX1jbGFzcyB5IGV4dGVuZHMgdGV7Y29uc3RydWN0b3IoYyl7c3VwZXIoKSx0aGlzLmlzU3RvcHBlZD0hMSxjPyh0aGlzLmRlc3RpbmF0aW9uPWMs''@;'; put 'put ''aWUoYykmJmMuYWRkKHRoaXMpKTp0aGlzLmRlc3RpbmF0aW9uPVRlfXN0YXRpYyBjcmVhdGUoYyxhLGYpe3JldHVybiBuZXcgcmUoYyxhLGYpfW5leHQoYyl7dGhpcy5pc1N0b3BwZWQ/a2UoZnVuY3Rpb24gTihsKXtyZXR1cm4gRigiTiIsbCx2b2lkIDApfShjKSx0aGlzKTp0aGlzLl9uZXh0''@;'; put 'put ''KGMpfWVycm9yKGMpe3RoaXMuaXNTdG9wcGVkP2tlKGZ1bmN0aW9uIHgobCl7cmV0dXJuIEYoIkUiLHZvaWQgMCxsKX0oYyksdGhpcyk6KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKGMpKX1jb21wbGV0ZSgpe3RoaXMuaXNTdG9wcGVkP2tlKGIsdGhpcyk6KHRoaXMuaXNTdG9wcGVk''@;'; put 'put ''PSEwLHRoaXMuX2NvbXBsZXRlKCkpfXVuc3Vic2NyaWJlKCl7dGhpcy5jbG9zZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCxzdXBlci51bnN1YnNjcmliZSgpLHRoaXMuZGVzdGluYXRpb249bnVsbCl9X25leHQoYyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGMpfV9lcnJvcihjKXt0cnl7dGhpcy5k''@;'; put 'put ''ZXN0aW5hdGlvbi5lcnJvcihjKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19X2NvbXBsZXRlKCl7dHJ5e3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19fWNvbnN0IHA9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7ZnVuY3Rpb24gUyhs''@;'; put 'put ''LGMpe3JldHVybiBwLmNhbGwobCxjKX1jbGFzcyBRe2NvbnN0cnVjdG9yKGMpe3RoaXMucGFydGlhbE9ic2VydmVyPWN9bmV4dChjKXtjb25zdHtwYXJ0aWFsT2JzZXJ2ZXI6YX09dGhpcztpZihhLm5leHQpdHJ5e2EubmV4dChjKX1jYXRjaChmKXtmZShmKX19ZXJyb3IoYyl7Y29uc3R7cGFy''@;'; put 'put ''dGlhbE9ic2VydmVyOmF9PXRoaXM7aWYoYS5lcnJvcil0cnl7YS5lcnJvcihjKX1jYXRjaChmKXtmZShmKX1lbHNlIGZlKGMpfWNvbXBsZXRlKCl7Y29uc3R7cGFydGlhbE9ic2VydmVyOmN9PXRoaXM7aWYoYy5jb21wbGV0ZSl0cnl7Yy5jb21wbGV0ZSgpfWNhdGNoKGEpe2ZlKGEpfX19Y2xh''@;'; put 'put ''c3MgcmUgZXh0ZW5kcyB5e2NvbnN0cnVjdG9yKGMsYSxmKXtsZXQgZDtpZihzdXBlcigpLEcoYyl8fCFjKWQ9e25leHQ6Yz8/dm9pZCAwLGVycm9yOmE/P3ZvaWQgMCxjb21wbGV0ZTpmPz92b2lkIDB9O2Vsc2V7bGV0IGg7dGhpcyYmZGUudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0PyhoPU9i''@;'; put 'put ''amVjdC5jcmVhdGUoYyksaC51bnN1YnNjcmliZT0oKT0+dGhpcy51bnN1YnNjcmliZSgpLGQ9e25leHQ6Yy5uZXh0JiZTKGMubmV4dCxoKSxlcnJvcjpjLmVycm9yJiZTKGMuZXJyb3IsaCksY29tcGxldGU6Yy5jb21wbGV0ZSYmUyhjLmNvbXBsZXRlLGgpfSk6ZD1jfXRoaXMuZGVzdGluYXRp''@;'; put 'put ''b249bmV3IFEoZCl9fWZ1bmN0aW9uIGZlKGwpe2RlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc/ZnVuY3Rpb24gTShsKXtkZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZnJiYoZy5lcnJvclRocm93bj0hMCxnLmVycm9yPWwpfShsKTpjZShs''@;'; put 'put ''KX1mdW5jdGlvbiBrZShsLGMpe2NvbnN0e29uU3RvcHBlZE5vdGlmaWNhdGlvbjphfT1kZTthJiZ1ZS5zZXRUaW1lb3V0KCgpPT5hKGwsYykpfWNvbnN0IFRlPXtjbG9zZWQ6ITAsbmV4dDpZLGVycm9yOmZ1bmN0aW9uIG1lKGwpe3Rocm93IGx9LGNvbXBsZXRlOll9LFBlPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIjtmdW5jdGlvbiBGZShsKXtyZXR1cm4gbH1mdW5jdGlvbiBMZShsKXtyZXR1cm4gMD09PWwubGVuZ3RoP0ZlOjE9PT1sLmxlbmd0aD9sWzBdOmZ1bmN0aW9uKGEpe3JldHVybiBsLnJlZHVjZSgoZixkKT0+''@;'; put 'put ''ZChmKSxhKX19bGV0IEJlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7YSYmKHRoaXMuX3N1YnNjcmliZT1hKX1saWZ0KGEpe2NvbnN0IGY9bmV3IGw7cmV0dXJuIGYuc291cmNlPXRoaXMsZi5vcGVyYXRvcj1hLGZ9c3Vic2NyaWJlKGEsZixkKXtjb25zdCBoPWZ1bmN0aW9uIG10KGwp''@;'; put 'put ''e3JldHVybiBsJiZsIGluc3RhbmNlb2YgeXx8ZnVuY3Rpb24gUWUobCl7cmV0dXJuIGwmJkcobC5uZXh0KSYmRyhsLmVycm9yKSYmRyhsLmNvbXBsZXRlKX0obCkmJmllKGwpfShhKT9hOm5ldyByZShhLGYsZCk7cmV0dXJuIEMoKCk9Pntjb25zdHtvcGVyYXRvcjptLHNvdXJjZTpffT10aGlz''@;'; put 'put ''O2guYWRkKG0/bS5jYWxsKGgsXyk6Xz90aGlzLl9zdWJzY3JpYmUoaCk6dGhpcy5fdHJ5U3Vic2NyaWJlKGgpKX0pLGh9X3RyeVN1YnNjcmliZShhKXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZShhKX1jYXRjaChmKXthLmVycm9yKGYpfX1mb3JFYWNoKGEsZil7cmV0dXJuIG5ldyhmPUhl''@;'; put 'put ''KGYpKSgoZCxoKT0+e2NvbnN0IG09bmV3IHJlKHtuZXh0Ol89Pnt0cnl7YShfKX1jYXRjaChPKXtoKE8pLG0udW5zdWJzY3JpYmUoKX19LGVycm9yOmgsY29tcGxldGU6ZH0pO3RoaXMuc3Vic2NyaWJlKG0pfSl9X3N1YnNjcmliZShhKXt2YXIgZjtyZXR1cm4gbnVsbD09PShmPXRoaXMuc291''@;'; put 'put ''cmNlKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5zdWJzY3JpYmUoYSl9W1BlXSgpe3JldHVybiB0aGlzfXBpcGUoLi4uYSl7cmV0dXJuIExlKGEpKHRoaXMpfXRvUHJvbWlzZShhKXtyZXR1cm4gbmV3KGE9SGUoYSkpKChmLGQpPT57bGV0IGg7dGhpcy5zdWJzY3JpYmUobT0+aD1tLG09PmQobSks''@;'; put 'put ''KCk9PmYoaCkpfSl9fXJldHVybiBsLmNyZWF0ZT1jPT5uZXcgbChjKSxsfSkoKTtmdW5jdGlvbiBIZShsKXt2YXIgYztyZXR1cm4gbnVsbCE9PShjPWw/P2RlLlByb21pc2UpJiZ2b2lkIDAhPT1jP2M6UHJvbWlzZX1jb25zdCBLZT1XKGw9PmZ1bmN0aW9uKCl7bCh0aGlzKSx0aGlzLm5hbWU9''@;'; put 'put ''Ik9iamVjdFVuc3Vic2NyaWJlZEVycm9yIix0aGlzLm1lc3NhZ2U9Im9iamVjdCB1bnN1YnNjcmliZWQifSk7bGV0IHdlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBCZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5jbG9zZWQ9ITEsdGhpcy5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsdGhpcy5v''@;'; put 'put ''YnNlcnZlcnM9W10sdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRocm93bkVycm9yPW51bGx9bGlmdChhKXtjb25zdCBmPW5ldyBJZSh0aGlzLHRoaXMpO3JldHVybiBmLm9wZXJhdG9yPWEsZn1fdGhyb3dJZkNsb3NlZCgpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5l''@;'; put 'put ''dyBLZX1uZXh0KGEpe0MoKCk9PntpZih0aGlzLl90aHJvd0lmQ2xvc2VkKCksIXRoaXMuaXNTdG9wcGVkKXt0aGlzLmN1cnJlbnRPYnNlcnZlcnN8fCh0aGlzLmN1cnJlbnRPYnNlcnZlcnM9QXJyYXkuZnJvbSh0aGlzLm9ic2VydmVycykpO2Zvcihjb25zdCBmIG9mIHRoaXMuY3VycmVudE9i''@;'; put 'put ''c2VydmVycylmLm5leHQoYSl9fSl9ZXJyb3IoYSl7QygoKT0+e2lmKHRoaXMuX3Rocm93SWZDbG9zZWQoKSwhdGhpcy5pc1N0b3BwZWQpe3RoaXMuaGFzRXJyb3I9dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy50aHJvd25FcnJvcj1hO2NvbnN0e29ic2VydmVyczpmfT10aGlzO2Zvcig7Zi5sZW5n''@;'; put 'put ''dGg7KWYuc2hpZnQoKS5lcnJvcihhKX19KX1jb21wbGV0ZSgpe0MoKCk9PntpZih0aGlzLl90aHJvd0lmQ2xvc2VkKCksIXRoaXMuaXNTdG9wcGVkKXt0aGlzLmlzU3RvcHBlZD0hMDtjb25zdHtvYnNlcnZlcnM6YX09dGhpcztmb3IoO2EubGVuZ3RoOylhLnNoaWZ0KCkuY29tcGxldGUoKX19''@;'; put 'put ''KX11bnN1YnNjcmliZSgpe3RoaXMuaXNTdG9wcGVkPXRoaXMuY2xvc2VkPSEwLHRoaXMub2JzZXJ2ZXJzPXRoaXMuY3VycmVudE9ic2VydmVycz1udWxsfWdldCBvYnNlcnZlZCgpe3ZhciBhO3JldHVybihudWxsPT09KGE9dGhpcy5vYnNlcnZlcnMpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmxl''@;'; put 'put ''bmd0aCk+MH1fdHJ5U3Vic2NyaWJlKGEpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksc3VwZXIuX3RyeVN1YnNjcmliZShhKX1fc3Vic2NyaWJlKGEpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhhKSx0aGlzLl9pbm5lclN1''@;'; put 'put ''YnNjcmliZShhKX1faW5uZXJTdWJzY3JpYmUoYSl7Y29uc3R7aGFzRXJyb3I6Zixpc1N0b3BwZWQ6ZCxvYnNlcnZlcnM6aH09dGhpcztyZXR1cm4gZnx8ZD9uZToodGhpcy5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsaC5wdXNoKGEpLG5ldyB0ZSgoKT0+e3RoaXMuY3VycmVudE9ic2VydmVycz1u''@;'; put 'put ''dWxsLHEoaCxhKX0pKX1fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhhKXtjb25zdHtoYXNFcnJvcjpmLHRocm93bkVycm9yOmQsaXNTdG9wcGVkOmh9PXRoaXM7Zj9hLmVycm9yKGQpOmgmJmEuY29tcGxldGUoKX1hc09ic2VydmFibGUoKXtjb25zdCBhPW5ldyBCZTtyZXR1cm4gYS5zb3VyY2U9''@;'; put 'put ''dGhpcyxhfX1yZXR1cm4gbC5jcmVhdGU9KGMsYSk9Pm5ldyBJZShjLGEpLGx9KSgpO2NsYXNzIEllIGV4dGVuZHMgd2V7Y29uc3RydWN0b3IoYyxhKXtzdXBlcigpLHRoaXMuZGVzdGluYXRpb249Yyx0aGlzLnNvdXJjZT1hfW5leHQoYyl7dmFyIGEsZjtudWxsPT09KGY9bnVsbD09PShhPXRo''@;'; put 'put ''aXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT1hP3ZvaWQgMDphLm5leHQpfHx2b2lkIDA9PT1mfHxmLmNhbGwoYSxjKX1lcnJvcihjKXt2YXIgYSxmO251bGw9PT0oZj1udWxsPT09KGE9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWE/dm9pZCAwOmEuZXJyb3IpfHx2b2lkIDA9PT1mfHxm''@;'; put 'put ''LmNhbGwoYSxjKX1jb21wbGV0ZSgpe3ZhciBjLGE7bnVsbD09PShhPW51bGw9PT0oYz10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb21wbGV0ZSl8fHZvaWQgMD09PWF8fGEuY2FsbChjKX1fc3Vic2NyaWJlKGMpe3ZhciBhLGY7cmV0dXJuIG51bGwhPT0oZj1udWxs''@;'; put 'put ''PT09KGE9dGhpcy5zb3VyY2UpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN1YnNjcmliZShjKSkmJnZvaWQgMCE9PWY/ZjpuZX19Y2xhc3MgT2UgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMuX3ZhbHVlPWN9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWUoKX1f''@;'; put 'put ''c3Vic2NyaWJlKGMpe2NvbnN0IGE9c3VwZXIuX3N1YnNjcmliZShjKTtyZXR1cm4hYS5jbG9zZWQmJmMubmV4dCh0aGlzLl92YWx1ZSksYX1nZXRWYWx1ZSgpe2NvbnN0e2hhc0Vycm9yOmMsdGhyb3duRXJyb3I6YSxfdmFsdWU6Zn09dGhpcztpZihjKXRocm93IGE7cmV0dXJuIHRoaXMuX3Ro''@;'; put 'put ''cm93SWZDbG9zZWQoKSxmfW5leHQoYyl7c3VwZXIubmV4dCh0aGlzLl92YWx1ZT1jKX19ZnVuY3Rpb24gZXQobCl7cmV0dXJuIEcobD8ubGlmdCl9ZnVuY3Rpb24gbnQobCl7cmV0dXJuIGM9PntpZihldChjKSlyZXR1cm4gYy5saWZ0KGZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gbChhLHRoaXMp''@;'; put 'put ''fWNhdGNoKGYpe3RoaXMuZXJyb3IoZil9fSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19ZnVuY3Rpb24gcWUobCxjLGEsZixkKXtyZXR1cm4gbmV3IGh0KGwsYyxhLGYsZCl9Y2xhc3MgaHQgZXh0ZW5kcyB5e2NvbnN0cnVj''@;'; put 'put ''dG9yKGMsYSxmLGQsaCxtKXtzdXBlcihjKSx0aGlzLm9uRmluYWxpemU9aCx0aGlzLnNob3VsZFVuc3Vic2NyaWJlPW0sdGhpcy5fbmV4dD1hP2Z1bmN0aW9uKF8pe3RyeXthKF8pfWNhdGNoKE8pe2MuZXJyb3IoTyl9fTpzdXBlci5fbmV4dCx0aGlzLl9lcnJvcj1kP2Z1bmN0aW9uKF8pe3Ry''@;'; put 'put ''eXtkKF8pfWNhdGNoKE8pe2MuZXJyb3IoTyl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTpzdXBlci5fZXJyb3IsdGhpcy5fY29tcGxldGU9Zj9mdW5jdGlvbigpe3RyeXtmKCl9Y2F0Y2goXyl7Yy5lcnJvcihfKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19OnN1cGVyLl9jb21w''@;'; put 'put ''bGV0ZX11bnN1YnNjcmliZSgpe3ZhciBjO2lmKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlfHx0aGlzLnNob3VsZFVuc3Vic2NyaWJlKCkpe2NvbnN0e2Nsb3NlZDphfT10aGlzO3N1cGVyLnVuc3Vic2NyaWJlKCksIWEmJihudWxsPT09KGM9dGhpcy5vbkZpbmFsaXplKXx8dm9pZCAwPT09Y3x8''@;'; put 'put ''Yy5jYWxsKHRoaXMpKX19fWZ1bmN0aW9uIEVlKGwsYyl7cmV0dXJuIG50KChhLGYpPT57bGV0IGQ9MDthLnN1YnNjcmliZShxZShmLGg9PntmLm5leHQobC5jYWxsKGMsaCxkKyspKX0pKX0pfWZ1bmN0aW9uIE90KGwsYyxhLGYpe3ZhciBtLGQ9YXJndW1lbnRzLmxlbmd0aCxoPWQ8Mz9jOm51''@;'; put 'put ''bGw9PT1mP2Y9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGEpOmY7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSloPVJlZmxlY3QuZGVjb3JhdGUobCxjLGEsZik7ZWxzZSBmb3IodmFyIF89bC5sZW5ndGgt''@;'; put 'put ''MTtfPj0wO18tLSkobT1sW19dKSYmKGg9KGQ8Mz9tKGgpOmQ+Mz9tKGMsYSxoKTptKGMsYSkpfHxoKTtyZXR1cm4gZD4zJiZoJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxhLGgpLGh9ZnVuY3Rpb24gX3QobCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfdD8odGhpcy52PWwsdGhpcyk6bmV3''@;'; put 'put ''IF90KGwpfWZ1bmN0aW9uIG90KGwpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgYSxjPWxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBjP2MuY2FsbChsKToobD1mdW5j''@;'; put 'put ''dGlvbiBwdChsKXt2YXIgYz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsYT1jJiZsW2NdLGY9MDtpZihhKXJldHVybiBhLmNhbGwobCk7aWYobCYmIm51bWJlciI9PXR5cGVvZiBsLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBsJiZmPj1s''@;'; put 'put ''Lmxlbmd0aCYmKGw9dm9pZCAwKSx7dmFsdWU6bCYmbFtmKytdLGRvbmU6IWx9fX07dGhyb3cgbmV3IFR5cGVFcnJvcihjPyJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiI6IlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKX0obCksYT17fSxmKCJuZXh0IiksZigidGhyb3ciKSxmKCJy''@;'; put 'put ''ZXR1cm4iKSxhW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxhKTtmdW5jdGlvbiBmKGgpe2FbaF09bFtoXSYmZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKF8sTyl7IWZ1bmN0aW9uIGQoaCxtLF8sTyl7UHJvbWlzZS5yZXNvbHZl''@;'; put 'put ''KE8pLnRoZW4oZnVuY3Rpb24oWCl7aCh7dmFsdWU6WCxkb25lOl99KX0sbSl9KF8sTywobT1sW2hdKG0pKS5kb25lLG0udmFsdWUpfSl9fX0iZnVuY3Rpb24iPT10eXBlb2YgU3VwcHJlc3NlZEVycm9yJiZTdXBwcmVzc2VkRXJyb3I7Y29uc3QgRm49bD0+bCYmIm51bWJlciI9PXR5cGVvZiBs''@;'; put 'put ''Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIGw7ZnVuY3Rpb24gcXQobCl7cmV0dXJuIEcobD8udGhlbil9ZnVuY3Rpb24gSG4obCl7cmV0dXJuIEcobFtQZV0pfWZ1bmN0aW9uIGlpKGwpe3JldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciYmRyhsPy5bU3ltYm9sLmFzeW5jSXRlcmF0b3Jd''@;'; put 'put ''KX1mdW5jdGlvbiBjbihsKXtyZXR1cm4gbmV3IFR5cGVFcnJvcihgWW91IHByb3ZpZGVkICR7bnVsbCE9PWwmJiJvYmplY3QiPT10eXBlb2YgbD8iYW4gaW52YWxpZCBvYmplY3QiOmAnJHtsfSdgfSB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlkZSBhbiBPYnNl''@;'; put 'put ''cnZhYmxlLCBQcm9taXNlLCBSZWFkYWJsZVN0cmVhbSwgQXJyYXksIEFzeW5jSXRlcmFibGUsIG9yIEl0ZXJhYmxlLmApfWNvbnN0IFhyPWZ1bmN0aW9uIGpuKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yP1N5bWJvbC5pdGVyYXRvcjoiQEBpdGVy''@;'; put 'put ''YXRvciJ9KCk7ZnVuY3Rpb24gdmkobCl7cmV0dXJuIEcobD8uW1hyXSl9ZnVuY3Rpb24gRXIobCl7cmV0dXJuIGZ1bmN0aW9uIFZ0KGwsYyxhKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQu''@;'; put 'put ''Iik7dmFyIGQsZj1hLmFwcGx5KGwsY3x8W10pLGg9W107cmV0dXJuIGQ9e30sbSgibmV4dCIpLG0oInRocm93IiksbSgicmV0dXJuIiksZFtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZDtmdW5jdGlvbiBtKGJlKXtmW2JlXSYmKGRbYmVdPWZ1bmN0aW9u''@;'; put 'put ''KHhlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oVmUsWmUpe2gucHVzaChbYmUseGUsVmUsWmVdKT4xfHxfKGJlLHhlKX0pfSl9ZnVuY3Rpb24gXyhiZSx4ZSl7dHJ5eyFmdW5jdGlvbiBPKGJlKXtiZS52YWx1ZSBpbnN0YW5jZW9mIF90P1Byb21pc2UucmVzb2x2ZShiZS52YWx1ZS52''@;'; put 'put ''KS50aGVuKFgsYWUpOnBlKGhbMF1bMl0sYmUpfShmW2JlXSh4ZSkpfWNhdGNoKFZlKXtwZShoWzBdWzNdLFZlKX19ZnVuY3Rpb24gWChiZSl7XygibmV4dCIsYmUpfWZ1bmN0aW9uIGFlKGJlKXtfKCJ0aHJvdyIsYmUpfWZ1bmN0aW9uIHBlKGJlLHhlKXtiZSh4ZSksaC5zaGlmdCgpLGgubGVu''@;'; put 'put ''Z3RoJiZfKGhbMF1bMF0saFswXVsxXSl9fSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbiooKXtjb25zdCBhPWwuZ2V0UmVhZGVyKCk7dHJ5e2Zvcig7Oyl7Y29uc3R7dmFsdWU6Zixkb25lOmR9PXlpZWxkIF90KGEucmVhZCgpKTtpZihkKXJldHVybiB5aWVsZCBfdCh2b2lkIDApO3lpZWxkIHlp''@;'; put 'put ''ZWxkIF90KGYpfX1maW5hbGx5e2EucmVsZWFzZUxvY2soKX19KX1mdW5jdGlvbiBZaShsKXtyZXR1cm4gRyhsPy5nZXRSZWFkZXIpfWZ1bmN0aW9uIEpyKGwpe2lmKGwgaW5zdGFuY2VvZiBCZSlyZXR1cm4gbDtpZihudWxsIT1sKXtpZihIbihsKSlyZXR1cm4gZnVuY3Rpb24gYW8obCl7cmV0''@;'; put 'put ''dXJuIG5ldyBCZShjPT57Y29uc3QgYT1sW1BlXSgpO2lmKEcoYS5zdWJzY3JpYmUpKXJldHVybiBhLnN1YnNjcmliZShjKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZSIpfSl9KGwpO2lm''@;'; put 'put ''KEZuKGwpKXJldHVybiBmdW5jdGlvbiBCcihsKXtyZXR1cm4gbmV3IEJlKGM9Pntmb3IobGV0IGE9MDthPGwubGVuZ3RoJiYhYy5jbG9zZWQ7YSsrKWMubmV4dChsW2FdKTtjLmNvbXBsZXRlKCl9KX0obCk7aWYocXQobCkpcmV0dXJuIGZ1bmN0aW9uIEppKGwpe3JldHVybiBuZXcgQmUoYz0+''@;'; put 'put ''e2wudGhlbihhPT57Yy5jbG9zZWR8fChjLm5leHQoYSksYy5jb21wbGV0ZSgpKX0sYT0+Yy5lcnJvcihhKSkudGhlbihudWxsLGNlKX0pfShsKTtpZihpaShsKSlyZXR1cm4gY28obCk7aWYodmkobCkpcmV0dXJuIGZ1bmN0aW9uIHRvKGwpe3JldHVybiBuZXcgQmUoYz0+e2Zvcihjb25zdCBh''@;'; put 'put ''IG9mIGwpaWYoYy5uZXh0KGEpLGMuY2xvc2VkKXJldHVybjtjLmNvbXBsZXRlKCl9KX0obCk7aWYoWWkobCkpcmV0dXJuIGZ1bmN0aW9uIGxvKGwpe3JldHVybiBjbyhFcihsKSl9KGwpfXRocm93IGNuKGwpfWZ1bmN0aW9uIGNvKGwpe3JldHVybiBuZXcgQmUoYz0+eyhmdW5jdGlvbiBzbyhs''@;'; put 'put ''LGMpe3ZhciBhLGYsZCxoO3JldHVybiBmdW5jdGlvbiBHbihsLGMsYSxmKXtyZXR1cm4gbmV3KGF8fChhPVByb21pc2UpKShmdW5jdGlvbihoLG0pe2Z1bmN0aW9uIF8oYWUpe3RyeXtYKGYubmV4dChhZSkpfWNhdGNoKHBlKXttKHBlKX19ZnVuY3Rpb24gTyhhZSl7dHJ5e1goZi50aHJvdyhh''@;'; put 'put ''ZSkpfWNhdGNoKHBlKXttKHBlKX19ZnVuY3Rpb24gWChhZSl7YWUuZG9uZT9oKGFlLnZhbHVlKTpmdW5jdGlvbiBkKGgpe3JldHVybiBoIGluc3RhbmNlb2YgYT9oOm5ldyBhKGZ1bmN0aW9uKG0pe20oaCl9KX0oYWUudmFsdWUpLnRoZW4oXyxPKX1YKChmPWYuYXBwbHkobCxjfHxbXSkpLm5l''@;'; put 'put ''eHQoKSl9KX0odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RyeXtmb3IoYT1vdChsKTshKGY9eWllbGQgYS5uZXh0KCkpLmRvbmU7KWlmKGMubmV4dChmLnZhbHVlKSxjLmNsb3NlZClyZXR1cm59Y2F0Y2gobSl7ZD17ZXJyb3I6bX19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGg9''@;'; put 'put ''YS5yZXR1cm4pJiYoeWllbGQgaC5jYWxsKGEpKX1maW5hbGx5e2lmKGQpdGhyb3cgZC5lcnJvcn19Yy5jb21wbGV0ZSgpfSl9KShsLGMpLmNhdGNoKGE9PmMuZXJyb3IoYSkpfSl9ZnVuY3Rpb24gWGkobCxjLGEsZj0wLGQ9ITEpe2NvbnN0IGg9Yy5zY2hlZHVsZShmdW5jdGlvbigpe2EoKSxk''@;'; put 'put ''P2wuYWRkKHRoaXMuc2NoZWR1bGUobnVsbCxmKSk6dGhpcy51bnN1YnNjcmliZSgpfSxmKTtpZihsLmFkZChoKSwhZClyZXR1cm4gaH1mdW5jdGlvbiBfcihsLGMsYT0xLzApe3JldHVybiBHKGMpP19yKChmLGQpPT5FZSgoaCxtKT0+YyhmLGgsZCxtKSkoSnIobChmLGQpKSksYSk6KCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgYyYmKGE9YyksbnQoKGYsZCk9PmZ1bmN0aW9uIHBvKGwsYyxhLGYsZCxoLG0sXyl7Y29uc3QgTz1bXTtsZXQgWD0wLGFlPTAscGU9ITE7Y29uc3QgYmU9KCk9PntwZSYmIU8ubGVuZ3RoJiYhWCYmYy5jb21wbGV0ZSgpfSx4ZT1aZT0+WDxmP1ZlKFplKTpPLnB1c2goWmUp''@;'; put 'put ''LFZlPVplPT57aCYmYy5uZXh0KFplKSxYKys7bGV0IGx0PSExO0pyKGEoWmUsYWUrKykpLnN1YnNjcmliZShxZShjLGR0PT57ZD8uKGR0KSxoP3hlKGR0KTpjLm5leHQoZHQpfSwoKT0+e2x0PSEwfSx2b2lkIDAsKCk9PntpZihsdCl0cnl7Zm9yKFgtLTtPLmxlbmd0aCYmWDxmOyl7Y29uc3Qg''@;'; put 'put ''ZHQ9Ty5zaGlmdCgpO20/WGkoYyxtLCgpPT5WZShkdCkpOlZlKGR0KX1iZSgpfWNhdGNoKGR0KXtjLmVycm9yKGR0KX19KSl9O3JldHVybiBsLnN1YnNjcmliZShxZShjLHhlLCgpPT57cGU9ITAsYmUoKX0pKSwoKT0+e18/LigpfX0oZixkLGwsYSkpKX1mdW5jdGlvbiBGaShsPTEvMCl7cmV0''@;'; put 'put ''dXJuIF9yKEZlLGwpfWNvbnN0IEhvPW5ldyBCZShsPT5sLmNvbXBsZXRlKCkpO2Z1bmN0aW9uIFZ1KGwpe3JldHVybiBsJiZHKGwuc2NoZWR1bGUpfWZ1bmN0aW9uIGdzKGwpe3JldHVybiBsW2wubGVuZ3RoLTFdfWZ1bmN0aW9uIEJ1KGwpe3JldHVybiBHKGdzKGwpKT9sLnBvcCgpOnZvaWQg''@;'; put 'put ''MH1mdW5jdGlvbiBYMChsKXtyZXR1cm4gVnUoZ3MobCkpP2wucG9wKCk6dm9pZCAwfWZ1bmN0aW9uIEtkKGwsYz0wKXtyZXR1cm4gbnQoKGEsZik9PnthLnN1YnNjcmliZShxZShmLGQ9PlhpKGYsbCwoKT0+Zi5uZXh0KGQpLGMpLCgpPT5YaShmLGwsKCk9PmYuY29tcGxldGUoKSxjKSxkPT5Y''@;'; put 'put ''aShmLGwsKCk9PmYuZXJyb3IoZCksYykpKX0pfWZ1bmN0aW9uIGQwKGwsYz0wKXtyZXR1cm4gbnQoKGEsZik9PntmLmFkZChsLnNjaGVkdWxlKCgpPT5hLnN1YnNjcmliZShmKSxjKSl9KX1mdW5jdGlvbiBxZChsLGMpe2lmKCFsKXRocm93IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJl''@;'; put 'put ''IG51bGwiKTtyZXR1cm4gbmV3IEJlKGE9PntYaShhLGMsKCk9Pntjb25zdCBmPWxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7WGkoYSxjLCgpPT57Zi5uZXh0KCkudGhlbihkPT57ZC5kb25lP2EuY29tcGxldGUoKTphLm5leHQoZC52YWx1ZSl9KX0sMCwhMCl9KX0pfWZ1bmN0aW9uIG5sKGws''@;'; put 'put ''Yyl7cmV0dXJuIGM/ZnVuY3Rpb24gcjIobCxjKXtpZihudWxsIT1sKXtpZihIbihsKSlyZXR1cm4gZnVuY3Rpb24gTGMobCxjKXtyZXR1cm4gSnIobCkucGlwZShkMChjKSxLZChjKSl9KGwsYyk7aWYoRm4obCkpcmV0dXJuIGZ1bmN0aW9uIEZsKGwsYyl7cmV0dXJuIG5ldyBCZShhPT57bGV0''@;'; put 'put ''IGY9MDtyZXR1cm4gYy5zY2hlZHVsZShmdW5jdGlvbigpe2Y9PT1sLmxlbmd0aD9hLmNvbXBsZXRlKCk6KGEubmV4dChsW2YrK10pLGEuY2xvc2VkfHx0aGlzLnNjaGVkdWxlKCkpfSl9KX0obCxjKTtpZihxdChsKSlyZXR1cm4gZnVuY3Rpb24gdmEobCxjKXtyZXR1cm4gSnIobCkucGlwZShk''@;'; put 'put ''MChjKSxLZChjKSl9KGwsYyk7aWYoaWkobCkpcmV0dXJuIHFkKGwsYyk7aWYodmkobCkpcmV0dXJuIGZ1bmN0aW9uIE1yKGwsYyl7cmV0dXJuIG5ldyBCZShhPT57bGV0IGY7cmV0dXJuIFhpKGEsYywoKT0+e2Y9bFtYcl0oKSxYaShhLGMsKCk9PntsZXQgZCxoO3RyeXsoe3ZhbHVlOmQsZG9u''@;'; put 'put ''ZTpofT1mLm5leHQoKSl9Y2F0Y2gobSl7cmV0dXJuIHZvaWQgYS5lcnJvcihtKX1oP2EuY29tcGxldGUoKTphLm5leHQoZCl9LDAsITApfSksKCk9PkcoZj8ucmV0dXJuKSYmZi5yZXR1cm4oKX0pfShsLGMpO2lmKFlpKGwpKXJldHVybiBmdW5jdGlvbiBRMyhsLGMpe3JldHVybiBxZChFcihs''@;'; put 'put ''KSxjKX0obCxjKX10aHJvdyBjbihsKX0obCxjKTpKcihsKX1mdW5jdGlvbiBzYSguLi5sKXtjb25zdCBjPVgwKGwpLGE9ZnVuY3Rpb24gSjMobCxjKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGdzKGwpP2wucG9wKCk6Y30obCwxLzApLGY9bDtyZXR1cm4gZi5sZW5ndGg/MT09PWYubGVuZ3Ro''@;'; put 'put ''P0pyKGZbMF0pOkZpKGEpKG5sKGYsYykpOkhvfWZ1bmN0aW9uIEdpKC4uLmwpe3JldHVybiBubChsLFgwKGwpKX1mdW5jdGlvbiAkbChsPXt9KXtjb25zdHtjb25uZWN0b3I6Yz0oKCk9Pm5ldyB3ZSkscmVzZXRPbkVycm9yOmE9ITAscmVzZXRPbkNvbXBsZXRlOmY9ITAscmVzZXRPblJlZkNv''@;'; put 'put ''dW50WmVybzpkPSEwfT1sO3JldHVybiBoPT57bGV0IG0sXyxPLFg9MCxhZT0hMSxwZT0hMTtjb25zdCBiZT0oKT0+e18/LnVuc3Vic2NyaWJlKCksXz12b2lkIDB9LHhlPSgpPT57YmUoKSxtPU89dm9pZCAwLGFlPXBlPSExfSxWZT0oKT0+e2NvbnN0IFplPW07eGUoKSxaZT8udW5zdWJzY3Jp''@;'; put 'put ''YmUoKX07cmV0dXJuIG50KChaZSxsdCk9PntYKyssIXBlJiYhYWUmJmJlKCk7Y29uc3QgZHQ9Tz1PPz9jKCk7bHQuYWRkKCgpPT57WC0tLDA9PT1YJiYhcGUmJiFhZSYmKF89aDAoVmUsZCkpfSksZHQuc3Vic2NyaWJlKGx0KSwhbSYmWD4wJiYobT1uZXcgcmUoe25leHQ6Z3Q9PmR0Lm5leHQo''@;'; put 'put ''Z3QpLGVycm9yOmd0PT57cGU9ITAsYmUoKSxfPWgwKHhlLGEsZ3QpLGR0LmVycm9yKGd0KX0sY29tcGxldGU6KCk9PnthZT0hMCxiZSgpLF89aDAoeGUsZiksZHQuY29tcGxldGUoKX19KSxKcihaZSkuc3Vic2NyaWJlKG0pKX0pKGgpfX1mdW5jdGlvbiBoMChsLGMsLi4uYSl7aWYoITA9PT1j''@;'; put 'put ''KXJldHVybiB2b2lkIGwoKTtpZighMT09PWMpcmV0dXJuO2NvbnN0IGY9bmV3IHJlKHtuZXh0OigpPT57Zi51bnN1YnNjcmliZSgpLGwoKX19KTtyZXR1cm4gSnIoYyguLi5hKSkuc3Vic2NyaWJlKGYpfWZ1bmN0aW9uIGtsKGwsYyl7cmV0dXJuIG50KChhLGYpPT57bGV0IGQ9bnVsbCxoPTAs''@;'; put 'put ''bT0hMTtjb25zdCBfPSgpPT5tJiYhZCYmZi5jb21wbGV0ZSgpO2Euc3Vic2NyaWJlKHFlKGYsTz0+e2Q/LnVuc3Vic2NyaWJlKCk7bGV0IFg9MDtjb25zdCBhZT1oKys7SnIobChPLGFlKSkuc3Vic2NyaWJlKGQ9cWUoZixwZT0+Zi5uZXh0KGM/YyhPLHBlLGFlLFgrKyk6cGUpLCgpPT57ZD1u''@;'; put 'put ''dWxsLF8oKX0pKX0sKCk9PnttPSEwLF8oKX0pKX0pfWZ1bmN0aW9uIFBjKGwsYyl7cmV0dXJuIGw9PT1jfWZ1bmN0aW9uIERhKGwpe2ZvcihsZXQgYyBpbiBsKWlmKGxbY109PT1EYSlyZXR1cm4gYzt0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgcmVuYW1lZCBwcm9wZXJ0eSBvbiB0YXJn''@;'; put 'put ''ZXQgb2JqZWN0LiIpfWZ1bmN0aW9uIHAwKGwsYyl7Zm9yKGNvbnN0IGEgaW4gYyljLmhhc093blByb3BlcnR5KGEpJiYhbC5oYXNPd25Qcm9wZXJ0eShhKSYmKGxbYV09Y1thXSl9ZnVuY3Rpb24gS2wobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBsO2lmKEFycmF5LmlzQXJyYXko''@;'; put 'put ''bCkpcmV0dXJuIlsiK2wubWFwKEtsKS5qb2luKCIsICIpKyJdIjtpZihudWxsPT1sKXJldHVybiIiK2w7aWYobC5vdmVycmlkZGVuTmFtZSlyZXR1cm5gJHtsLm92ZXJyaWRkZW5OYW1lfWA7aWYobC5uYW1lKXJldHVybmAke2wubmFtZX1gO2NvbnN0IGM9bC50b1N0cmluZygpO2lmKG51bGw9''@;'; put 'put ''PWMpcmV0dXJuIiIrYztjb25zdCBhPWMuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PWE/YzpjLnN1YnN0cmluZygwLGEpfWZ1bmN0aW9uIGt1KGwsYyl7cmV0dXJuIG51bGw9PWx8fCIiPT09bD9udWxsPT09Yz8iIjpjOm51bGw9PWN8fCIiPT09Yz9sOmwrIiAiK2N9Y29uc3QgYTI9RGEoe19f''@;'; put 'put ''Zm9yd2FyZF9yZWZfXzpEYX0pO2Z1bmN0aW9uIFBhKGwpe3JldHVybiBsLl9fZm9yd2FyZF9yZWZfXz1QYSxsLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIEtsKHRoaXMoKSl9LGx9ZnVuY3Rpb24gQ28obCl7cmV0dXJuIG0wKGwpP2woKTpsfWZ1bmN0aW9uIG0wKGwpe3JldHVybiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBsJiZsLmhhc093blByb3BlcnR5KGEyKSYmbC5fX2ZvcndhcmRfcmVmX189PT1QYX1mdW5jdGlvbiBYZChsKXtyZXR1cm4gbCYmISFsLlx1MDI3NXByb3ZpZGVyc31jb25zdCBlcD0iaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyI7Y2xhc3MgSXIgZXh0ZW5kcyBF''@;'; put 'put ''cnJvcntjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGZ1bmN0aW9uIEV1KGwsYyl7cmV0dXJuYE5HMCR7TWF0aC5hYnMobCl9JHtjPyI6ICIrYzoiIn1gfShjLGEpKSx0aGlzLmNvZGU9Y319ZnVuY3Rpb24gSW8obCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsP2w6bnVsbD09bD8iIjpTdHJpbmco''@;'; put 'put ''bCl9ZnVuY3Rpb24gbm8obCxjKXt0aHJvdyBuZXcgSXIoLTIwMSwhMSl9ZnVuY3Rpb24gcHIobCxjKXtudWxsPT1sJiZmdW5jdGlvbiB6byhsLGMsYSxmKXt0aHJvdyBuZXcgRXJyb3IoYEFTU0VSVElPTiBFUlJPUjogJHtsfWArKG51bGw9PWY/IiI6YCBbRXhwZWN0ZWQ9PiAke2F9ICR7Zn0g''@;'; put 'put ''JHtjfSA8PUFjdHVhbF1gKSl9KGMsbCxudWxsLCIhPSIpfWZ1bmN0aW9uIGhyKGwpe3JldHVybnt0b2tlbjpsLnRva2VuLHByb3ZpZGVkSW46bC5wcm92aWRlZElufHxudWxsLGZhY3Rvcnk6bC5mYWN0b3J5LHZhbHVlOnZvaWQgMH19ZnVuY3Rpb24geGkobCl7cmV0dXJue3Byb3ZpZGVyczps''@;'; put 'put ''LnByb3ZpZGVyc3x8W10saW1wb3J0czpsLmltcG9ydHN8fFtdfX1mdW5jdGlvbiBVZihsKXtyZXR1cm4gUTAobCx0cCl8fFEwKGwsQmEpfWZ1bmN0aW9uIFEwKGwsYyl7cmV0dXJuIGwuaGFzT3duUHJvcGVydHkoYyk/bFtjXTpudWxsfWZ1bmN0aW9uIEw2KGwpe3JldHVybiBsJiYobC5oYXNP''@;'; put 'put ''d25Qcm9wZXJ0eShjMil8fGwuaGFzT3duUHJvcGVydHkoSWIpKT9sW2MyXTpudWxsfWNvbnN0IHRwPURhKHtcdTAyNzVwcm92OkRhfSksYzI9RGEoe1x1MDI3NWluajpEYX0pLEJhPURhKHtuZ0luamVjdGFibGVEZWY6RGF9KSxJYj1EYSh7bmdJbmplY3RvckRlZjpEYX0pO3ZhciBhYT1mdW5j''@;'; put 'put ''dGlvbihsKXtyZXR1cm4gbFtsLkRlZmF1bHQ9MF09IkRlZmF1bHQiLGxbbC5Ib3N0PTFdPSJIb3N0IixsW2wuU2VsZj0yXT0iU2VsZiIsbFtsLlNraXBTZWxmPTRdPSJTa2lwU2VsZiIsbFtsLk9wdGlvbmFsPThdPSJPcHRpb25hbCIsbH0oYWF8fHt9KTtsZXQgdW07ZnVuY3Rpb24gcGkobCl7''@;'; put 'put ''Y29uc3QgYz11bTtyZXR1cm4gdW09bCxjfWZ1bmN0aW9uIEthKGwsYyxhKXtjb25zdCBmPVVmKGwpO3JldHVybiBmJiYicm9vdCI9PWYucHJvdmlkZWRJbj92b2lkIDA9PT1mLnZhbHVlP2YudmFsdWU9Zi5mYWN0b3J5KCk6Zi52YWx1ZTphJmFhLk9wdGlvbmFsP251bGw6dm9pZCAwIT09Yz9j''@;'; put 'put ''OnZvaWQgbm8oS2wobCkpfWNvbnN0IFBpPSgoKT0+dHlwZW9mIGdsb2JhbFRoaXM8InUiJiZnbG9iYWxUaGlzfHx0eXBlb2YgZ2xvYmFsPCJ1IiYmZ2xvYmFsfHx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93fHx0eXBlb2Ygc2VsZjwidSImJnR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSIm''@;'; put 'put ''JnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZikoKSx2MD17fSwkMT0iX19OR19ESV9GTEFHX18iLEZjPSJuZ1RlbXBUb2tlblBhdGgiLGN1PS9cbi9nbSxINj0iX19zb3VyY2UiO2xldCBZZjtmdW5jdGlvbiBLMShsKXtjb25zdCBjPVlmO3JldHVybiBZZj1sLGN9ZnVu''@;'; put 'put ''Y3Rpb24gUmIobCxjPWFhLkRlZmF1bHQpe2lmKHZvaWQgMD09PVlmKXRocm93IG5ldyBJcigtMjAzLCExKTtyZXR1cm4gbnVsbD09PVlmP0thKGwsdm9pZCAwLGMpOllmLmdldChsLGMmYWEuT3B0aW9uYWw/bnVsbDp2b2lkIDAsYyl9ZnVuY3Rpb24gc3IobCxjPWFhLkRlZmF1bHQpe3JldHVy''@;'; put 'put ''bihmdW5jdGlvbiBjYSgpe3JldHVybiB1bX0oKXx8UmIpKENvKGwpLGMpfWZ1bmN0aW9uIEhpKGwsYz1hYS5EZWZhdWx0KXtyZXR1cm4gc3IobCx5MChjKSl9ZnVuY3Rpb24geTAobCl7cmV0dXJuIHR5cGVvZiBsPiJ1Inx8Im51bWJlciI9PXR5cGVvZiBsP2w6MHwobC5vcHRpb25hbCYmOCl8''@;'; put 'put ''KGwuaG9zdCYmMSl8KGwuc2VsZiYmMil8KGwuc2tpcFNlbGYmJjQpfWZ1bmN0aW9uIHJjKGwpe2NvbnN0IGM9W107Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDthKyspe2NvbnN0IGY9Q28obFthXSk7aWYoQXJyYXkuaXNBcnJheShmKSl7aWYoMD09PWYubGVuZ3RoKXRocm93IG5ldyBJcig5MDAs''@;'; put 'put ''ITEpO2xldCBkLGg9YWEuRGVmYXVsdDtmb3IobGV0IG09MDttPGYubGVuZ3RoO20rKyl7Y29uc3QgXz1mW21dLE89TjYoXyk7Im51bWJlciI9PXR5cGVvZiBPPy0xPT09Tz9kPV8udG9rZW46aHw9TzpkPV99Yy5wdXNoKHNyKGQsaCkpfWVsc2UgYy5wdXNoKHNyKGYpKX1yZXR1cm4gY31mdW5j''@;'; put 'put ''dGlvbiBmMihsLGMpe3JldHVybiBsWyQxXT1jLGwucHJvdG90eXBlWyQxXT1jLGx9ZnVuY3Rpb24gTjYobCl7cmV0dXJuIGxbJDFdfWZ1bmN0aW9uIHZjKGwpe3JldHVybnt0b1N0cmluZzpsfS50b1N0cmluZygpfXZhciBxMT1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLk9uUHVzaD0wXT0iT25Q''@;'; put 'put ''dXNoIixsW2wuRGVmYXVsdD0xXT0iRGVmYXVsdCIsbH0ocTF8fHt9KSxqdT1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkVtdWxhdGVkPTBdPSJFbXVsYXRlZCIsbFtsLk5vbmU9Ml09Ik5vbmUiLGxbbC5TaGFkb3dEb209M109IlNoYWRvd0RvbSIsbH0oanV8fHt9KTtjb25zdCBpYz17fSx4YT1b''@;'; put 'put ''XSxHZj1EYSh7XHUwMjc1Y21wOkRhfSksZDI9RGEoe1x1MDI3NWRpcjpEYX0pLG9jPURhKHtcdTAyNzVwaXBlOkRhfSksWDE9RGEoe1x1MDI3NW1vZDpEYX0pLGIwPURhKHtcdTAyNzVmYWM6RGF9KSxoMj1EYSh7X19OR19FTEVNRU5UX0lEX186RGF9KSx5bD1EYSh7X19OR19FTlZfSURfXzpE''@;'; put 'put ''YX0pO2Z1bmN0aW9uIHp1KGwsYyxhKXtsZXQgZj1sLmxlbmd0aDtmb3IoOzspe2NvbnN0IGQ9bC5pbmRleE9mKGMsYSk7aWYoLTE9PT1kKXJldHVybiBkO2lmKDA9PT1kfHxsLmNoYXJDb2RlQXQoZC0xKTw9MzIpe2NvbnN0IGg9Yy5sZW5ndGg7aWYoZCtoPT09Znx8bC5jaGFyQ29kZUF0KGQr''@;'; put 'put ''aCk8PTMyKXJldHVybiBkfWE9ZCsxfX1mdW5jdGlvbiAkZihsLGMsYSl7bGV0IGY9MDtmb3IoO2Y8YS5sZW5ndGg7KXtjb25zdCBkPWFbZl07aWYoIm51bWJlciI9PXR5cGVvZiBkKXtpZigwIT09ZClicmVhaztmKys7Y29uc3QgaD1hW2YrK10sbT1hW2YrK10sXz1hW2YrK107bC5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoYyxtLF8saCl9ZWxzZXtjb25zdCBoPWQsbT1hWysrZl07Y20oaCk/bC5zZXRQcm9wZXJ0eShjLGgsbSk6bC5zZXRBdHRyaWJ1dGUoYyxoLG0pLGYrK319cmV0dXJuIGZ9ZnVuY3Rpb24gdGgobCl7cmV0dXJuIDM9PT1sfHw0PT09bHx8Nj09PWx9ZnVuY3Rpb24gY20obCl7cmV0dXJu''@;'; put 'put ''IDY0PT09bC5jaGFyQ29kZUF0KDApfWZ1bmN0aW9uIHAyKGwsYyl7aWYobnVsbCE9PWMmJjAhPT1jLmxlbmd0aClpZihudWxsPT09bHx8MD09PWwubGVuZ3RoKWw9Yy5zbGljZSgpO2Vsc2V7bGV0IGE9LTE7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2NvbnN0IGQ9Y1tmXTsibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIGQ/YT1kOjA9PT1hfHxmbShsLGEsZCxudWxsLC0xPT09YXx8Mj09PWE/Y1srK2ZdOm51bGwpfX1yZXR1cm4gbH1mdW5jdGlvbiBmbShsLGMsYSxmLGQpe2xldCBoPTAsbT1sLmxlbmd0aDtpZigtMT09PWMpbT0tMTtlbHNlIGZvcig7aDxsLmxlbmd0aDspe2NvbnN0IF89bFto''@;'; put 'put ''KytdO2lmKCJudW1iZXIiPT10eXBlb2YgXyl7aWYoXz09PWMpe209LTE7YnJlYWt9aWYoXz5jKXttPWgtMTticmVha319fWZvcig7aDxsLmxlbmd0aDspe2NvbnN0IF89bFtoXTtpZigibnVtYmVyIj09dHlwZW9mIF8pYnJlYWs7aWYoXz09PWEpe2lmKG51bGw9PT1mKXJldHVybiB2b2lkKG51''@;'; put 'put ''bGwhPT1kJiYobFtoKzFdPWQpKTtpZihmPT09bFtoKzFdKXJldHVybiB2b2lkKGxbaCsyXT1kKX1oKyssbnVsbCE9PWYmJmgrKyxudWxsIT09ZCYmaCsrfS0xIT09bSYmKGwuc3BsaWNlKG0sMCxjKSxoPW0rMSksbC5zcGxpY2UoaCsrLDAsYSksbnVsbCE9PWYmJmwuc3BsaWNlKGgrKywwLGYp''@;'; put 'put ''LG51bGwhPT1kJiZsLnNwbGljZShoKyssMCxkKX1jb25zdCBkbT0ibmctdGVtcGxhdGUiO2Z1bmN0aW9uIExiKGwsYyxhKXtsZXQgZj0wLGQ9ITA7Zm9yKDtmPGwubGVuZ3RoOyl7bGV0IGg9bFtmKytdO2lmKCJzdHJpbmciPT10eXBlb2YgaCYmZCl7Y29uc3QgbT1sW2YrK107aWYoYSYmImNs''@;'; put 'put ''YXNzIj09PWgmJi0xIT09enUobS50b0xvd2VyQ2FzZSgpLGMsMCkpcmV0dXJuITB9ZWxzZXtpZigxPT09aCl7Zm9yKDtmPGwubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mKGg9bFtmKytdKTspaWYoaC50b0xvd2VyQ2FzZSgpPT09YylyZXR1cm4hMDtyZXR1cm4hMX0ibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGgmJihkPSExKX19cmV0dXJuITF9ZnVuY3Rpb24gbnAobCl7cmV0dXJuIDQ9PT1sLnR5cGUmJmwudmFsdWUhPT1kbX1mdW5jdGlvbiBFbChsLGMsYSl7cmV0dXJuIGM9PT0oNCE9PWwudHlwZXx8YT9sLnZhbHVlOmRtKX1mdW5jdGlvbiBfMChsLGMsYSl7bGV0IGY9NDtjb25zdCBkPWwuYXR0''@;'; put 'put ''cnN8fFtdLGg9ZnVuY3Rpb24gUGIobCl7Zm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspaWYodGgobFtjXSkpcmV0dXJuIGM7cmV0dXJuIGwubGVuZ3RofShkKTtsZXQgbT0hMTtmb3IobGV0IF89MDtfPGMubGVuZ3RoO18rKyl7Y29uc3QgTz1jW19dO2lmKCJudW1iZXIiIT10eXBlb2YgTyl7''@;'; put 'put ''aWYoIW0paWYoNCZmKXtpZihmPTJ8MSZmLCIiIT09TyYmIUVsKGwsTyxhKXx8IiI9PT1PJiYxPT09Yy5sZW5ndGgpe2lmKFV1KGYpKXJldHVybiExO209ITB9fWVsc2V7Y29uc3QgWD04JmY/TzpjWysrX107aWYoOCZmJiZudWxsIT09bC5hdHRycyl7aWYoIUxiKGwuYXR0cnMsWCxhKSl7aWYo''@;'; put 'put ''VXUoZikpcmV0dXJuITE7bT0hMH1jb250aW51ZX1jb25zdCBwZT1ycCg4JmY/ImNsYXNzIjpPLGQsbnAobCksYSk7aWYoLTE9PT1wZSl7aWYoVXUoZikpcmV0dXJuITE7bT0hMDtjb250aW51ZX1pZigiIiE9PVgpe2xldCBiZTtiZT1wZT5oPyIiOmRbcGUrMV0udG9Mb3dlckNhc2UoKTtjb25z''@;'; put 'put ''dCB4ZT04JmY/YmU6bnVsbDtpZih4ZSYmLTEhPT16dSh4ZSxYLDApfHwyJmYmJlghPT1iZSl7aWYoVXUoZikpcmV0dXJuITE7bT0hMH19fX1lbHNle2lmKCFtJiYhVXUoZikmJiFVdShPKSlyZXR1cm4hMTtpZihtJiZVdShPKSljb250aW51ZTttPSExLGY9T3wxJmZ9fXJldHVybiBVdShmKXx8''@;'; put 'put ''bX1mdW5jdGlvbiBVdShsKXtyZXR1cm4gMD09KDEmbCl9ZnVuY3Rpb24gcnAobCxjLGEsZil7aWYobnVsbD09PWMpcmV0dXJuLTE7bGV0IGQ9MDtpZihmfHwhYSl7bGV0IGg9ITE7Zm9yKDtkPGMubGVuZ3RoOyl7Y29uc3QgbT1jW2RdO2lmKG09PT1sKXJldHVybiBkO2lmKDM9PT1tfHw2PT09''@;'; put 'put ''bSloPSEwO2Vsc2V7aWYoMT09PW18fDI9PT1tKXtsZXQgXz1jWysrZF07Zm9yKDsic3RyaW5nIj09dHlwZW9mIF87KV89Y1srK2RdO2NvbnRpbnVlfWlmKDQ9PT1tKWJyZWFrO2lmKDA9PT1tKXtkKz00O2NvbnRpbnVlfX1kKz1oPzE6Mn1yZXR1cm4tMX1yZXR1cm4gZnVuY3Rpb24gRmIobCxj''@;'; put 'put ''KXtsZXQgYT1sLmluZGV4T2YoNCk7aWYoYT4tMSlmb3IoYSsrO2E8bC5sZW5ndGg7KXtjb25zdCBmPWxbYV07aWYoIm51bWJlciI9PXR5cGVvZiBmKXJldHVybi0xO2lmKGY9PT1jKXJldHVybiBhO2ErK31yZXR1cm4tMX0oYyxsKX1mdW5jdGlvbiBobShsLGMsYT0hMSl7Zm9yKGxldCBmPTA7''@;'; put 'put ''ZjxjLmxlbmd0aDtmKyspaWYoXzAobCxjW2ZdLGEpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHBtKGwsYyl7ZTpmb3IobGV0IGE9MDthPGMubGVuZ3RoO2ErKyl7Y29uc3QgZj1jW2FdO2lmKGwubGVuZ3RoPT09Zi5sZW5ndGgpe2ZvcihsZXQgZD0wO2Q8bC5sZW5ndGg7ZCsrKWlmKGxb''@;'; put 'put ''ZF0hPT1mW2RdKWNvbnRpbnVlIGU7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIHZzKGwsYyl7cmV0dXJuIGw/Ijpub3QoIitjLnRyaW0oKSsiKSI6Y31mdW5jdGlvbiBWNihsKXtsZXQgYz1sWzBdLGE9MSxmPTIsZD0iIixoPSExO2Zvcig7YTxsLmxlbmd0aDspe2xldCBtPWxbYV07aWYo''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBtKWlmKDImZil7Y29uc3QgXz1sWysrYV07ZCs9IlsiK20rKF8ubGVuZ3RoPjA/Jz0iJytfKyciJzoiIikrIl0ifWVsc2UgOCZmP2QrPSIuIittOjQmZiYmKGQrPSIgIittKTtlbHNlIiIhPT1kJiYhVXUobSkmJihjKz12cyhoLGQpLGQ9IiIpLGY9bSxoPWh8fCFV''@;'; put 'put ''dShmKTthKyt9cmV0dXJuIiIhPT1kJiYoYys9dnMoaCxkKSksY31mdW5jdGlvbiBrcihsKXtyZXR1cm4gdmMoKCk9Pntjb25zdCBjPWJtKGwpLGE9ey4uLmMsZGVjbHM6bC5kZWNscyx2YXJzOmwudmFycyx0ZW1wbGF0ZTpsLnRlbXBsYXRlLGNvbnN0czpsLmNvbnN0c3x8bnVsbCxuZ0NvbnRl''@;'; put 'put ''bnRTZWxlY3RvcnM6bC5uZ0NvbnRlbnRTZWxlY3RvcnMsb25QdXNoOmwuY2hhbmdlRGV0ZWN0aW9uPT09cTEuT25QdXNoLGRpcmVjdGl2ZURlZnM6bnVsbCxwaXBlRGVmczpudWxsLGRlcGVuZGVuY2llczpjLnN0YW5kYWxvbmUmJmwuZGVwZW5kZW5jaWVzfHxudWxsLGdldFN0YW5kYWxvbmVJ''@;'; put 'put ''bmplY3RvcjpudWxsLHNpZ25hbHM6bC5zaWduYWxzPz8hMSxkYXRhOmwuZGF0YXx8e30sZW5jYXBzdWxhdGlvbjpsLmVuY2Fwc3VsYXRpb258fGp1LkVtdWxhdGVkLHN0eWxlczpsLnN0eWxlc3x8eGEsXzpudWxsLHNjaGVtYXM6bC5zY2hlbWFzfHxudWxsLHRWaWV3Om51bGwsaWQ6IiJ9O2o2''@;'; put 'put ''KGEpO2NvbnN0IGY9bC5kZXBlbmRlbmNpZXM7cmV0dXJuIGEuZGlyZWN0aXZlRGVmcz1vcChmLCExKSxhLnBpcGVEZWZzPW9wKGYsITApLGEuaWQ9ZnVuY3Rpb24gVmIobCl7bGV0IGM9MDtjb25zdCBhPVtsLnNlbGVjdG9ycyxsLm5nQ29udGVudFNlbGVjdG9ycyxsLmhvc3RWYXJzLGwuaG9z''@;'; put 'put ''dEF0dHJzLGwuY29uc3RzLGwudmFycyxsLmRlY2xzLGwuZW5jYXBzdWxhdGlvbixsLnN0YW5kYWxvbmUsbC5zaWduYWxzLGwuZXhwb3J0QXMsSlNPTi5zdHJpbmdpZnkobC5pbnB1dHMpLEpTT04uc3RyaW5naWZ5KGwub3V0cHV0cyksT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobC50eXBl''@;'; put 'put ''LnByb3RvdHlwZSksISFsLmNvbnRlbnRRdWVyaWVzLCEhbC52aWV3UXVlcnldLmpvaW4oInwiKTtmb3IoY29uc3QgZCBvZiBhKWM9TWF0aC5pbXVsKDMxLGMpK2QuY2hhckNvZGVBdCgwKTw8MDtyZXR1cm4gYys9MjE0NzQ4MzY0OCwiYyIrY30oYSksYX0pfWZ1bmN0aW9uIHZtKGwpe3JldHVy''@;'; put 'put ''biBuYShsKXx8cWwobCl9ZnVuY3Rpb24gQjYobCl7cmV0dXJuIG51bGwhPT1sfWZ1bmN0aW9uIERpKGwpe3JldHVybiB2YygoKT0+KHt0eXBlOmwudHlwZSxib290c3RyYXA6bC5ib290c3RyYXB8fHhhLGRlY2xhcmF0aW9uczpsLmRlY2xhcmF0aW9uc3x8eGEsaW1wb3J0czpsLmltcG9ydHN8''@;'; put 'put ''fHhhLGV4cG9ydHM6bC5leHBvcnRzfHx4YSx0cmFuc2l0aXZlQ29tcGlsZVNjb3BlczpudWxsLHNjaGVtYXM6bC5zY2hlbWFzfHxudWxsLGlkOmwuaWR8fG51bGx9KSl9ZnVuY3Rpb24gaXAobCxjKXtpZihudWxsPT1sKXJldHVybiBpYztjb25zdCBhPXt9O2Zvcihjb25zdCBmIGluIGwpaWYo''@;'; put 'put ''bC5oYXNPd25Qcm9wZXJ0eShmKSl7bGV0IGQ9bFtmXSxoPWQ7QXJyYXkuaXNBcnJheShkKSYmKGg9ZFsxXSxkPWRbMF0pLGFbZF09ZixjJiYoY1tkXT1oKX1yZXR1cm4gYX1mdW5jdGlvbiBTcihsKXtyZXR1cm4gdmMoKCk9Pntjb25zdCBjPWJtKGwpO3JldHVybiBqNihjKSxjfSl9ZnVuY3Rp''@;'; put 'put ''b24gVmwobCl7cmV0dXJue3R5cGU6bC50eXBlLG5hbWU6bC5uYW1lLGZhY3Rvcnk6bnVsbCxwdXJlOiExIT09bC5wdXJlLHN0YW5kYWxvbmU6ITA9PT1sLnN0YW5kYWxvbmUsb25EZXN0cm95OmwudHlwZS5wcm90b3R5cGUubmdPbkRlc3Ryb3l8fG51bGx9fWZ1bmN0aW9uIG5hKGwpe3JldHVy''@;'; put 'put ''biBsW0dmXXx8bnVsbH1mdW5jdGlvbiBxbChsKXtyZXR1cm4gbFtkMl18fG51bGx9ZnVuY3Rpb24genMobCl7cmV0dXJuIGxbb2NdfHxudWxsfWZ1bmN0aW9uIFp1KGwsYyl7Y29uc3QgYT1sW1gxXXx8bnVsbDtpZighYSYmITA9PT1jKXRocm93IG5ldyBFcnJvcihgVHlwZSAke0tsKGwpfSBk''@;'; put 'put ''b2VzIG5vdCBoYXZlICdcdTAyNzVtb2QnIHByb3BlcnR5LmApO3JldHVybiBhfWZ1bmN0aW9uIGJtKGwpe2NvbnN0IGM9e307cmV0dXJue3R5cGU6bC50eXBlLHByb3ZpZGVyc1Jlc29sdmVyOm51bGwsZmFjdG9yeTpudWxsLGhvc3RCaW5kaW5nczpsLmhvc3RCaW5kaW5nc3x8bnVsbCxob3N0''@;'; put 'put ''VmFyczpsLmhvc3RWYXJzfHwwLGhvc3RBdHRyczpsLmhvc3RBdHRyc3x8bnVsbCxjb250ZW50UXVlcmllczpsLmNvbnRlbnRRdWVyaWVzfHxudWxsLGRlY2xhcmVkSW5wdXRzOmMsaW5wdXRUcmFuc2Zvcm1zOm51bGwsaW5wdXRDb25maWc6bC5pbnB1dHN8fGljLGV4cG9ydEFzOmwuZXhwb3J0''@;'; put 'put ''QXN8fG51bGwsc3RhbmRhbG9uZTohMD09PWwuc3RhbmRhbG9uZSxzaWduYWxzOiEwPT09bC5zaWduYWxzLHNlbGVjdG9yczpsLnNlbGVjdG9yc3x8eGEsdmlld1F1ZXJ5Omwudmlld1F1ZXJ5fHxudWxsLGZlYXR1cmVzOmwuZmVhdHVyZXN8fG51bGwsc2V0SW5wdXQ6bnVsbCxmaW5kSG9zdERp''@;'; put 'put ''cmVjdGl2ZURlZnM6bnVsbCxob3N0RGlyZWN0aXZlczpudWxsLGlucHV0czppcChsLmlucHV0cyxjKSxvdXRwdXRzOmlwKGwub3V0cHV0cyl9fWZ1bmN0aW9uIGo2KGwpe2wuZmVhdHVyZXM/LmZvckVhY2goYz0+YyhsKSl9ZnVuY3Rpb24gb3AobCxjKXtpZighbClyZXR1cm4gbnVsbDtjb25z''@;'; put 'put ''dCBhPWM/enM6dm07cmV0dXJuKCk9PigiZnVuY3Rpb24iPT10eXBlb2YgbD9sKCk6bCkubWFwKGY9PmEoZikpLmZpbHRlcihCNil9Y29uc3QgTmk9MCxqaT0xLFBvPTIsZmw9MyxYbD00LEoxPTUsR289NixOYz03LEJsPTgscWY9OSxRMT0xMCxabz0xMSxnMj0xMixfbT0xMyxVcz0xNCxKbD0x''@;'; put 'put ''NSxuaD0xNixyaD0xNyx5Yz0xOCx2Mj0xOSxlZj0yMCx0Zj0yMSx3MD0yMixhcD0yMyxscD0yNCx5YT0yNSx3bT0xLHo2PTIsQzA9NyxvaD05LGZ1PTExO2Z1bmN0aW9uIE91KGwpe3JldHVybiBBcnJheS5pc0FycmF5KGwpJiYib2JqZWN0Ij09dHlwZW9mIGxbd21dfWZ1bmN0aW9uIGR1KGwp''@;'; put 'put ''e3JldHVybiBBcnJheS5pc0FycmF5KGwpJiYhMD09PWxbd21dfWZ1bmN0aW9uIEpmKGwpe3JldHVybiAwIT0oNCZsLmZsYWdzKX1mdW5jdGlvbiBuZihsKXtyZXR1cm4gbC5jb21wb25lbnRPZmZzZXQ+LTF9ZnVuY3Rpb24geTIobCl7cmV0dXJuIDE9PSgxJmwuZmxhZ3MpfWZ1bmN0aW9uIGFj''@;'; put 'put ''KGwpe3JldHVybiEhbC50ZW1wbGF0ZX1mdW5jdGlvbiBDbShsKXtyZXR1cm4gMCE9KDUxMiZsW1BvXSl9ZnVuY3Rpb24gYWYobCxjKXtyZXR1cm4gbC5oYXNPd25Qcm9wZXJ0eShiMCk/bFtiMF06bnVsbH1sZXQgdGQ9UGkuV2Vha1JlZj8/Y2xhc3MgZTF7Y29uc3RydWN0b3IoYyl7dGhpcy5y''@;'; put 'put ''ZWY9Y31kZXJlZigpe3JldHVybiB0aGlzLnJlZn19LCQ2PTAsVmM9bnVsbCxzcD0hMTtmdW5jdGlvbiBicyhsKXtjb25zdCBjPVZjO3JldHVybiBWYz1sLGN9Y2xhc3MgdXB7Y29uc3RydWN0b3IoKXt0aGlzLmlkPSQ2KyssdGhpcy5yZWY9ZnVuY3Rpb24gYWgobCl7cmV0dXJuIG5ldyB0ZChs''@;'; put 'put ''KX0odGhpcyksdGhpcy5wcm9kdWNlcnM9bmV3IE1hcCx0aGlzLmNvbnN1bWVycz1uZXcgTWFwLHRoaXMudHJhY2tpbmdWZXJzaW9uPTAsdGhpcy52YWx1ZVZlcnNpb249MH1jb25zdW1lclBvbGxQcm9kdWNlcnNGb3JDaGFuZ2UoKXtmb3IoY29uc3RbYyxhXW9mIHRoaXMucHJvZHVjZXJzKXtj''@;'; put 'put ''b25zdCBmPWEucHJvZHVjZXJOb2RlLmRlcmVmKCk7aWYobnVsbCE9ZiYmYS5hdFRyYWNraW5nVmVyc2lvbj09PXRoaXMudHJhY2tpbmdWZXJzaW9uKXtpZihmLnByb2R1Y2VyUG9sbFN0YXR1cyhhLnNlZW5WYWx1ZVZlcnNpb24pKXJldHVybiEwfWVsc2UgdGhpcy5wcm9kdWNlcnMuZGVsZXRl''@;'; put 'put ''KGMpLGY/LmNvbnN1bWVycy5kZWxldGUodGhpcy5pZCl9cmV0dXJuITF9cHJvZHVjZXJNYXlIYXZlQ2hhbmdlZCgpe2NvbnN0IGM9c3A7c3A9ITA7dHJ5e2Zvcihjb25zdFthLGZdb2YgdGhpcy5jb25zdW1lcnMpe2NvbnN0IGQ9Zi5jb25zdW1lck5vZGUuZGVyZWYoKTtudWxsIT1kJiZkLnRy''@;'; put 'put ''YWNraW5nVmVyc2lvbj09PWYuYXRUcmFja2luZ1ZlcnNpb24/ZC5vbkNvbnN1bWVyRGVwZW5kZW5jeU1heUhhdmVDaGFuZ2VkKCk6KHRoaXMuY29uc3VtZXJzLmRlbGV0ZShhKSxkPy5wcm9kdWNlcnMuZGVsZXRlKHRoaXMuaWQpKX19ZmluYWxseXtzcD1jfX1wcm9kdWNlckFjY2Vzc2VkKCl7''@;'; put 'put ''aWYoc3ApdGhyb3cgbmV3IEVycm9yKCIiKTtpZihudWxsPT09VmMpcmV0dXJuO2xldCBjPVZjLnByb2R1Y2Vycy5nZXQodGhpcy5pZCk7dm9pZCAwPT09Yz8oYz17Y29uc3VtZXJOb2RlOlZjLnJlZixwcm9kdWNlck5vZGU6dGhpcy5yZWYsc2VlblZhbHVlVmVyc2lvbjp0aGlzLnZhbHVlVmVy''@;'; put 'put ''c2lvbixhdFRyYWNraW5nVmVyc2lvbjpWYy50cmFja2luZ1ZlcnNpb259LFZjLnByb2R1Y2Vycy5zZXQodGhpcy5pZCxjKSx0aGlzLmNvbnN1bWVycy5zZXQoVmMuaWQsYykpOihjLnNlZW5WYWx1ZVZlcnNpb249dGhpcy52YWx1ZVZlcnNpb24sYy5hdFRyYWNraW5nVmVyc2lvbj1WYy50cmFj''@;'; put 'put ''a2luZ1ZlcnNpb24pfWdldCBoYXNQcm9kdWNlcnMoKXtyZXR1cm4gdGhpcy5wcm9kdWNlcnMuc2l6ZT4wfWdldCBwcm9kdWNlclVwZGF0ZXNBbGxvd2VkKCl7cmV0dXJuITEhPT1WYz8uY29uc3VtZXJBbGxvd1NpZ25hbFdyaXRlc31wcm9kdWNlclBvbGxTdGF0dXMoYyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''dmFsdWVWZXJzaW9uIT09Y3x8KHRoaXMub25Qcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbigpLHRoaXMudmFsdWVWZXJzaW9uIT09Yyl9fWxldCBqYz1udWxsO2Z1bmN0aW9uIGIyKGwpe2NvbnN0IGM9YnMobnVsbCk7dHJ5e3JldHVybiBsKCl9ZmluYWxseXticyhjKX19Y29uc3QgbjE9KCk9''@;'; put 'put ''Pnt9O2NsYXNzIHE2IGV4dGVuZHMgdXB7Y29uc3RydWN0b3IoYyxhLGYpe3N1cGVyKCksdGhpcy53YXRjaD1jLHRoaXMuc2NoZWR1bGU9YSx0aGlzLmRpcnR5PSExLHRoaXMuY2xlYW51cEZuPW4xLHRoaXMucmVnaXN0ZXJPbkNsZWFudXA9ZD0+e3RoaXMuY2xlYW51cEZuPWR9LHRoaXMuY29u''@;'; put 'put ''c3VtZXJBbGxvd1NpZ25hbFdyaXRlcz1mfW5vdGlmeSgpe3RoaXMuZGlydHl8fHRoaXMuc2NoZWR1bGUodGhpcyksdGhpcy5kaXJ0eT0hMH1vbkNvbnN1bWVyRGVwZW5kZW5jeU1heUhhdmVDaGFuZ2VkKCl7dGhpcy5ub3RpZnkoKX1vblByb2R1Y2VyVXBkYXRlVmFsdWVWZXJzaW9uKCl7fXJ1''@;'; put 'put ''bigpe2lmKHRoaXMuZGlydHk9ITEsMCE9PXRoaXMudHJhY2tpbmdWZXJzaW9uJiYhdGhpcy5jb25zdW1lclBvbGxQcm9kdWNlcnNGb3JDaGFuZ2UoKSlyZXR1cm47Y29uc3QgYz1icyh0aGlzKTt0aGlzLnRyYWNraW5nVmVyc2lvbisrO3RyeXt0aGlzLmNsZWFudXBGbigpLHRoaXMuY2xlYW51''@;'; put 'put ''cEZuPW4xLHRoaXMud2F0Y2godGhpcy5yZWdpc3Rlck9uQ2xlYW51cCl9ZmluYWxseXticyhjKX19Y2xlYW51cCgpe3RoaXMuY2xlYW51cEZuKCl9fWNsYXNzIEpie2NvbnN0cnVjdG9yKGMsYSxmKXt0aGlzLnByZXZpb3VzVmFsdWU9Yyx0aGlzLmN1cnJlbnRWYWx1ZT1hLHRoaXMuZmlyc3RD''@;'; put 'put ''aGFuZ2U9Zn1pc0ZpcnN0Q2hhbmdlKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGFuZ2V9fWZ1bmN0aW9uIGJsKCl7cmV0dXJuIEVtfWZ1bmN0aW9uIEVtKGwpe3JldHVybiBsLnR5cGUucHJvdG90eXBlLm5nT25DaGFuZ2VzJiYobC5zZXRJbnB1dD1lXyksUWJ9ZnVuY3Rpb24gUWIoKXtjb25zdCBs''@;'; put 'put ''PVg2KHRoaXMpLGM9bD8uY3VycmVudDtpZihjKXtjb25zdCBhPWwucHJldmlvdXM7aWYoYT09PWljKWwucHJldmlvdXM9YztlbHNlIGZvcihsZXQgZiBpbiBjKWFbZl09Y1tmXTtsLmN1cnJlbnQ9bnVsbCx0aGlzLm5nT25DaGFuZ2VzKGMpfX1mdW5jdGlvbiBlXyhsLGMsYSxmKXtjb25zdCBk''@;'; put 'put ''PXRoaXMuZGVjbGFyZWRJbnB1dHNbYV0saD1YNihsKXx8ZnVuY3Rpb24gcjEobCxjKXtyZXR1cm4gbFtZc109Y30obCx7cHJldmlvdXM6aWMsY3VycmVudDpudWxsfSksbT1oLmN1cnJlbnR8fChoLmN1cnJlbnQ9e30pLF89aC5wcmV2aW91cyxPPV9bZF07bVtkXT1uZXcgSmIoTyYmTy5jdXJy''@;'; put 'put ''ZW50VmFsdWUsYyxfPT09aWMpLGxbZl09Y31ibC5uZ0luaGVyaXQ9ITA7Y29uc3QgWXM9Il9fbmdTaW1wbGVDaGFuZ2VzX18iO2Z1bmN0aW9uIFg2KGwpe3JldHVybiBsW1lzXXx8bnVsbH1jb25zdCBTMD1mdW5jdGlvbihsLGMsYSl7fTtmdW5jdGlvbiBfbChsKXtmb3IoO0FycmF5LmlzQXJy''@;'; put 'put ''YXkobCk7KWw9bFtOaV07cmV0dXJuIGx9ZnVuY3Rpb24gbzEobCxjKXtyZXR1cm4gX2woY1tsXSl9ZnVuY3Rpb24gV3MobCxjKXtyZXR1cm4gX2woY1tsLmluZGV4XSl9ZnVuY3Rpb24gQWUobCxjKXtyZXR1cm4gbC5kYXRhW2NdfWZ1bmN0aW9uIEplKGwsYyl7cmV0dXJuIGxbY119ZnVuY3Rp''@;'; put 'put ''b24gYnQobCxjKXtjb25zdCBhPWNbbF07cmV0dXJuIE91KGEpP2E6YVtOaV19ZnVuY3Rpb24gUHIobCxjKXtyZXR1cm4gbnVsbD09Yz9udWxsOmxbY119ZnVuY3Rpb24gU28obCl7bFtyaF09MH1mdW5jdGlvbiByYShsKXsxMDI0JmxbUG9dfHwobFtQb118PTEwMjQsaHUobCwxKSl9ZnVuY3Rp''@;'; put 'put ''b24gWWEobCl7MTAyNCZsW1BvXSYmKGxbUG9dJj0tMTAyNSxodShsLC0xKSl9ZnVuY3Rpb24gaHUobCxjKXtsZXQgYT1sW2ZsXTtpZihudWxsPT09YSlyZXR1cm47YVtKMV0rPWM7bGV0IGY9YTtmb3IoYT1hW2ZsXTtudWxsIT09YSYmKDE9PT1jJiYxPT09ZltKMV18fC0xPT09YyYmMD09PWZb''@;'; put 'put ''SjFdKTspYVtKMV0rPWMsZj1hLGE9YVtmbF19Y29uc3QgQm89e2xGcmFtZTpDeChudWxsKSxiaW5kaW5nc0VuYWJsZWQ6ITAsc2tpcEh5ZHJhdGlvblJvb3RUTm9kZTpudWxsfTtmdW5jdGlvbiBoeCgpe3JldHVybiBCby5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gaHAoKXtyZXR1cm4gbnVs''@;'; put 'put ''bCE9PUJvLnNraXBIeWRyYXRpb25Sb290VE5vZGV9ZnVuY3Rpb24gUXIoKXtyZXR1cm4gQm8ubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIElhKCl7cmV0dXJuIEJvLmxGcmFtZS50Vmlld31mdW5jdGlvbiBVdChsKXtyZXR1cm4gQm8ubEZyYW1lLmNvbnRleHRMVmlldz1sLGxbQmxdfWZ1bmN0aW9u''@;'; put 'put ''IFp0KGwpe3JldHVybiBCby5sRnJhbWUuY29udGV4dExWaWV3PW51bGwsbH1mdW5jdGlvbiBEdSgpe2xldCBsPXB4KCk7Zm9yKDtudWxsIT09bCYmNjQ9PT1sLnR5cGU7KWw9bC5wYXJlbnQ7cmV0dXJuIGx9ZnVuY3Rpb24gcHgoKXtyZXR1cm4gQm8ubEZyYW1lLmN1cnJlbnRUTm9kZX1mdW5j''@;'; put 'put ''dGlvbiBsZihsLGMpe2NvbnN0IGE9Qm8ubEZyYW1lO2EuY3VycmVudFROb2RlPWwsYS5pc1BhcmVudD1jfWZ1bmN0aW9uIHRfKCl7cmV0dXJuIEJvLmxGcmFtZS5pc1BhcmVudH1mdW5jdGlvbiBlOCgpe0JvLmxGcmFtZS5pc1BhcmVudD0hMX1mdW5jdGlvbiBZdSgpe2NvbnN0IGw9Qm8ubEZy''@;'; put 'put ''YW1lO2xldCBjPWwuYmluZGluZ1Jvb3RJbmRleDtyZXR1cm4tMT09PWMmJihjPWwuYmluZGluZ1Jvb3RJbmRleD1sLnRWaWV3LmJpbmRpbmdTdGFydEluZGV4KSxjfWZ1bmN0aW9uIG5kKCl7cmV0dXJuIEJvLmxGcmFtZS5iaW5kaW5nSW5kZXh9ZnVuY3Rpb24gcHAoKXtyZXR1cm4gQm8ubEZy''@;'; put 'put ''YW1lLmJpbmRpbmdJbmRleCsrfWZ1bmN0aW9uIHNmKGwpe2NvbnN0IGM9Qm8ubEZyYW1lLGE9Yy5iaW5kaW5nSW5kZXg7cmV0dXJuIGMuYmluZGluZ0luZGV4PWMuYmluZGluZ0luZGV4K2wsYX1mdW5jdGlvbiBCRihsLGMpe2NvbnN0IGE9Qm8ubEZyYW1lO2EuYmluZGluZ0luZGV4PWEuYmlu''@;'; put 'put ''ZGluZ1Jvb3RJbmRleD1sLHQ4KGMpfWZ1bmN0aW9uIHQ4KGwpe0JvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg9bH1mdW5jdGlvbiByXyhsKXtjb25zdCBjPUJvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg7cmV0dXJuLTE9PT1jP251bGw6bFtjXX1mdW5jdGlvbiB5eCgpe3Jl''@;'; put 'put ''dHVybiBCby5sRnJhbWUuY3VycmVudFF1ZXJ5SW5kZXh9ZnVuY3Rpb24gaV8obCl7Qm8ubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4PWx9ZnVuY3Rpb24gYngobCl7Y29uc3QgYz1sW2ppXTtyZXR1cm4gMj09PWMudHlwZT9jLmRlY2xUTm9kZToxPT09Yy50eXBlP2xbR29dOm51bGx9ZnVuY3Rp''@;'; put 'put ''b24gX3gobCxjLGEpe2lmKGEmYWEuU2tpcFNlbGYpe2xldCBkPWMsaD1sO2Zvcig7IShkPWQucGFyZW50LG51bGwhPT1kfHxhJmFhLkhvc3R8fChkPWJ4KGgpLG51bGw9PT1kfHwoaD1oW1VzXSwxMCZkLnR5cGUpKSk7KTtpZihudWxsPT09ZClyZXR1cm4hMTtjPWQsbD1ofWNvbnN0IGY9Qm8u''@;'; put 'put ''bEZyYW1lPXd4KCk7cmV0dXJuIGYuY3VycmVudFROb2RlPWMsZi5sVmlldz1sLCEwfWZ1bmN0aW9uIG9fKGwpe2NvbnN0IGM9d3goKSxhPWxbamldO0JvLmxGcmFtZT1jLGMuY3VycmVudFROb2RlPWEuZmlyc3RDaGlsZCxjLmxWaWV3PWwsYy50Vmlldz1hLGMuY29udGV4dExWaWV3PWwsYy5i''@;'; put 'put ''aW5kaW5nSW5kZXg9YS5iaW5kaW5nU3RhcnRJbmRleCxjLmluSTE4bj0hMX1mdW5jdGlvbiB3eCgpe2NvbnN0IGw9Qm8ubEZyYW1lLGM9bnVsbD09PWw/bnVsbDpsLmNoaWxkO3JldHVybiBudWxsPT09Yz9DeChsKTpjfWZ1bmN0aW9uIEN4KGwpe2NvbnN0IGM9e2N1cnJlbnRUTm9kZTpudWxs''@;'; put 'put ''LGlzUGFyZW50OiEwLGxWaWV3Om51bGwsdFZpZXc6bnVsbCxzZWxlY3RlZEluZGV4Oi0xLGNvbnRleHRMVmlldzpudWxsLGVsZW1lbnREZXB0aENvdW50OjAsY3VycmVudE5hbWVzcGFjZTpudWxsLGN1cnJlbnREaXJlY3RpdmVJbmRleDotMSxiaW5kaW5nUm9vdEluZGV4Oi0xLGJpbmRpbmdJ''@;'; put 'put ''bmRleDotMSxjdXJyZW50UXVlcnlJbmRleDowLHBhcmVudDpsLGNoaWxkOm51bGwsaW5JMThuOiExfTtyZXR1cm4gbnVsbCE9PWwmJihsLmNoaWxkPWMpLGN9ZnVuY3Rpb24gU3goKXtjb25zdCBsPUJvLmxGcmFtZTtyZXR1cm4gQm8ubEZyYW1lPWwucGFyZW50LGwuY3VycmVudFROb2RlPW51''@;'; put 'put ''bGwsbC5sVmlldz1udWxsLGx9Y29uc3QgTXg9U3g7ZnVuY3Rpb24gbjgoKXtjb25zdCBsPVN4KCk7bC5pc1BhcmVudD0hMCxsLnRWaWV3PW51bGwsbC5zZWxlY3RlZEluZGV4PS0xLGwuY29udGV4dExWaWV3PW51bGwsbC5lbGVtZW50RGVwdGhDb3VudD0wLGwuY3VycmVudERpcmVjdGl2ZUlu''@;'; put 'put ''ZGV4PS0xLGwuY3VycmVudE5hbWVzcGFjZT1udWxsLGwuYmluZGluZ1Jvb3RJbmRleD0tMSxsLmJpbmRpbmdJbmRleD0tMSxsLmN1cnJlbnRRdWVyeUluZGV4PTB9ZnVuY3Rpb24gbGMoKXtyZXR1cm4gQm8ubEZyYW1lLnNlbGVjdGVkSW5kZXh9ZnVuY3Rpb24gXzIobCl7Qm8ubEZyYW1lLnNl''@;'; put 'put ''bGVjdGVkSW5kZXg9bH1mdW5jdGlvbiBRbCgpe2NvbnN0IGw9Qm8ubEZyYW1lO3JldHVybiBBZShsLnRWaWV3LGwuc2VsZWN0ZWRJbmRleCl9bGV0IEV4PSEwO2Z1bmN0aW9uIHI4KCl7cmV0dXJuIEV4fWZ1bmN0aW9uIHJkKGwpe0V4PWx9ZnVuY3Rpb24gaTgobCxjKXtmb3IobGV0IGE9Yy5k''@;'; put 'put ''aXJlY3RpdmVTdGFydCxmPWMuZGlyZWN0aXZlRW5kO2E8ZjthKyspe2NvbnN0IGg9bC5kYXRhW2FdLnR5cGUucHJvdG90eXBlLHtuZ0FmdGVyQ29udGVudEluaXQ6bSxuZ0FmdGVyQ29udGVudENoZWNrZWQ6XyxuZ0FmdGVyVmlld0luaXQ6TyxuZ0FmdGVyVmlld0NoZWNrZWQ6WCxuZ09uRGVz''@;'; put 'put ''dHJveTphZX09aDttJiYobC5jb250ZW50SG9va3M/Pz1bXSkucHVzaCgtYSxtKSxfJiYoKGwuY29udGVudEhvb2tzPz89W10pLnB1c2goYSxfKSwobC5jb250ZW50Q2hlY2tIb29rcz8/PVtdKS5wdXNoKGEsXykpLE8mJihsLnZpZXdIb29rcz8/PVtdKS5wdXNoKC1hLE8pLFgmJigobC52aWV3''@;'; put 'put ''SG9va3M/Pz1bXSkucHVzaChhLFgpLChsLnZpZXdDaGVja0hvb2tzPz89W10pLnB1c2goYSxYKSksbnVsbCE9YWUmJihsLmRlc3Ryb3lIb29rcz8/PVtdKS5wdXNoKGEsYWUpfX1mdW5jdGlvbiBvOChsLGMsYSl7eHgobCxjLDMsYSl9ZnVuY3Rpb24gYTgobCxjLGEsZil7KDMmbFtQb10pPT09''@;'; put 'put ''YSYmeHgobCxjLGEsZil9ZnVuY3Rpb24gYV8obCxjKXtsZXQgYT1sW1BvXTsoMyZhKT09PWMmJihhJj04MTkxLGErPTEsbFtQb109YSl9ZnVuY3Rpb24geHgobCxjLGEsZil7Y29uc3QgaD1mPz8tMSxtPWMubGVuZ3RoLTE7bGV0IF89MDtmb3IobGV0IE89dm9pZCAwIT09Zj82NTUzNSZsW3Jo''@;'; put 'put ''XTowO088bTtPKyspaWYoIm51bWJlciI9PXR5cGVvZiBjW08rMV0pe2lmKF89Y1tPXSxudWxsIT1mJiZfPj1mKWJyZWFrfWVsc2UgY1tPXTwwJiYobFtyaF0rPTY1NTM2KSwoXzxofHwtMT09aCkmJigkRihsLGEsYyxPKSxsW3JoXT0oNDI5NDkwMTc2MCZsW3JoXSkrTysyKSxPKyt9ZnVuY3Rp''@;'; put 'put ''b24gQXgobCxjKXtTMCg0LGwsYyk7Y29uc3QgYT1icyhudWxsKTt0cnl7Yy5jYWxsKGwpfWZpbmFsbHl7YnMoYSksUzAoNSxsLGMpfX1mdW5jdGlvbiAkRihsLGMsYSxmKXtjb25zdCBkPWFbZl08MCxoPWFbZisxXSxfPWxbZD8tYVtmXTphW2ZdXTtkP2xbUG9dPj4xMzxsW3JoXT4+MTYmJigz''@;'; put 'put ''JmxbUG9dKT09PWMmJihsW1BvXSs9ODE5MixBeChfLGgpKTpBeChfLGgpfWNvbnN0IG1wPS0xO2NsYXNzIE9te2NvbnN0cnVjdG9yKGMsYSxmKXt0aGlzLmZhY3Rvcnk9Yyx0aGlzLnJlc29sdmluZz0hMSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9YSx0aGlzLmluamVjdEltcGw9Zn19ZnVu''@;'; put 'put ''Y3Rpb24gVHgobCl7cmV0dXJuIGwhPT1tcH1mdW5jdGlvbiBzaChsKXtyZXR1cm4gMzI3NjcmbH1mdW5jdGlvbiBncChsLGMpe2xldCBhPWZ1bmN0aW9uIHNfKGwpe3JldHVybiBsPj4xNn0obCksZj1jO2Zvcig7YT4wOylmPWZbVXNdLGEtLTtyZXR1cm4gZn1sZXQgRG09ITA7ZnVuY3Rpb24g''@;'; put 'put ''dWYobCl7Y29uc3QgYz1EbTtyZXR1cm4gRG09bCxjfWNvbnN0IGw4PTI1NSxPeD01O2xldCBzOD0wO2NvbnN0IGNmPXt9O2Z1bmN0aW9uIHU4KGwsYyl7Y29uc3QgYT1EeChsLGMpO2lmKC0xIT09YSlyZXR1cm4gYTtjb25zdCBmPWNbamldO2YuZmlyc3RDcmVhdGVQYXNzJiYobC5pbmplY3Rv''@;'; put 'put ''ckluZGV4PWMubGVuZ3RoLHcyKGYuZGF0YSxsKSx3MihjLG51bGwpLHcyKGYuYmx1ZXByaW50LG51bGwpKTtjb25zdCBkPWNfKGwsYyksaD1sLmluamVjdG9ySW5kZXg7aWYoVHgoZCkpe2NvbnN0IG09c2goZCksXz1ncChkLGMpLE89X1tqaV0uZGF0YTtmb3IobGV0IFg9MDtYPDg7WCsrKWNb''@;'; put 'put ''aCtYXT1fW20rWF18T1ttK1hdfXJldHVybiBjW2grOF09ZCxofWZ1bmN0aW9uIHcyKGwsYyl7bC5wdXNoKDAsMCwwLDAsMCwwLDAsMCxjKX1mdW5jdGlvbiBEeChsLGMpe3JldHVybi0xPT09bC5pbmplY3RvckluZGV4fHxsLnBhcmVudCYmbC5wYXJlbnQuaW5qZWN0b3JJbmRleD09PWwuaW5q''@;'; put 'put ''ZWN0b3JJbmRleHx8bnVsbD09PWNbbC5pbmplY3RvckluZGV4KzhdPy0xOmwuaW5qZWN0b3JJbmRleH1mdW5jdGlvbiBjXyhsLGMpe2lmKGwucGFyZW50JiYtMSE9PWwucGFyZW50LmluamVjdG9ySW5kZXgpcmV0dXJuIGwucGFyZW50LmluamVjdG9ySW5kZXg7bGV0IGE9MCxmPW51bGwsZD1j''@;'; put 'put ''O2Zvcig7bnVsbCE9PWQ7KXtpZihmPU54KGQpLG51bGw9PT1mKXJldHVybiBtcDtpZihhKyssZD1kW1VzXSwtMSE9PWYuaW5qZWN0b3JJbmRleClyZXR1cm4gZi5pbmplY3RvckluZGV4fGE8PDE2fXJldHVybiBtcH1mdW5jdGlvbiBmXyhsLGMsYSl7IWZ1bmN0aW9uIHVfKGwsYyxhKXtsZXQg''@;'; put 'put ''Zjsic3RyaW5nIj09dHlwZW9mIGE/Zj1hLmNoYXJDb2RlQXQoMCl8fDA6YS5oYXNPd25Qcm9wZXJ0eShoMikmJihmPWFbaDJdKSxudWxsPT1mJiYoZj1hW2gyXT1zOCsrKTtjb25zdCBkPWYmbDg7Yy5kYXRhW2wrKGQ+Pk94KV18PTE8PGR9KGwsYyxhKX1mdW5jdGlvbiBJeChsLGMsYSl7aWYo''@;'; put 'put ''YSZhYS5PcHRpb25hbHx8dm9pZCAwIT09bClyZXR1cm4gbDtubygpfWZ1bmN0aW9uIFJ4KGwsYyxhLGYpe2lmKGEmYWEuT3B0aW9uYWwmJnZvaWQgMD09PWYmJihmPW51bGwpLCEoYSYoYWEuU2VsZnxhYS5Ib3N0KSkpe2NvbnN0IGQ9bFtxZl0saD1waSh2b2lkIDApO3RyeXtyZXR1cm4gZD9k''@;'; put 'put ''LmdldChjLGYsYSZhYS5PcHRpb25hbCk6S2EoYyxmLGEmYWEuT3B0aW9uYWwpfWZpbmFsbHl7cGkoaCl9fXJldHVybiBJeChmLDAsYSl9ZnVuY3Rpb24gTHgobCxjLGEsZj1hYS5EZWZhdWx0LGQpe2lmKG51bGwhPT1sKXtpZigyMDQ4JmNbUG9dJiYhKGYmYWEuU2VsZikpe2NvbnN0IG09ZnVu''@;'; put 'put ''Y3Rpb24gdEgobCxjLGEsZixkKXtsZXQgaD1sLG09Yztmb3IoO251bGwhPT1oJiZudWxsIT09bSYmMjA0OCZtW1BvXSYmISg1MTImbVtQb10pOyl7Y29uc3QgXz1QeChoLG0sYSxmfGFhLlNlbGYsY2YpO2lmKF8hPT1jZilyZXR1cm4gXztsZXQgTz1oLnBhcmVudDtpZighTyl7Y29uc3QgWD1t''@;'; put 'put ''W2VmXTtpZihYKXtjb25zdCBhZT1YLmdldChhLGNmLGYpO2lmKGFlIT09Y2YpcmV0dXJuIGFlfU89TngobSksbT1tW1VzXX1oPU99cmV0dXJuIGR9KGwsYyxhLGYsY2YpO2lmKG0hPT1jZilyZXR1cm4gbX1jb25zdCBoPVB4KGwsYyxhLGYsY2YpO2lmKGghPT1jZilyZXR1cm4gaH1yZXR1cm4g''@;'; put 'put ''UngoYyxhLGYsZCl9ZnVuY3Rpb24gUHgobCxjLGEsZixkKXtjb25zdCBoPWZ1bmN0aW9uIFFGKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gbC5jaGFyQ29kZUF0KDApfHwwO2NvbnN0IGM9bC5oYXNPd25Qcm9wZXJ0eShoMik/bFtoMl06dm9pZCAwO3JldHVybiJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgYz9jPj0wP2MmbDg6ZUg6Y30oYSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGgpe2lmKCFfeChjLGwsZikpcmV0dXJuIGYmYWEuSG9zdD9JeChkLDAsZik6UngoYyxhLGYsZCk7dHJ5e2NvbnN0IG09aChmKTtpZihudWxsIT1tfHxmJmFhLk9wdGlvbmFsKXJldHVybiBtO25vKCl9Zmlu''@;'; put 'put ''YWxseXtNeCgpfX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgaCl7bGV0IG09bnVsbCxfPUR4KGwsYyksTz1tcCxYPWYmYWEuSG9zdD9jW0psXVtHb106bnVsbDtmb3IoKC0xPT09X3x8ZiZhYS5Ta2lwU2VsZikmJihPPS0xPT09Xz9jXyhsLGMpOmNbXys4XSxPIT09bXAmJkh4KGYsITEpPyht''@;'; put 'put ''PWNbamldLF89c2goTyksYz1ncChPLGMpKTpfPS0xKTstMSE9PV87KXtjb25zdCBhZT1jW2ppXTtpZihGeChoLF8sYWUuZGF0YSkpe2NvbnN0IHBlPUpGKF8sYyxhLG0sZixYKTtpZihwZSE9PWNmKXJldHVybiBwZX1PPWNbXys4XSxPIT09bXAmJkh4KGYsY1tqaV0uZGF0YVtfKzhdPT09WCkm''@;'; put 'put ''JkZ4KGgsXyxjKT8obT1hZSxfPXNoKE8pLGM9Z3AoTyxjKSk6Xz0tMX19cmV0dXJuIGR9ZnVuY3Rpb24gSkYobCxjLGEsZixkLGgpe2NvbnN0IG09Y1tqaV0sXz1tLmRhdGFbbCs4XSxhZT1jOChfLG0sYSxudWxsPT1mP25mKF8pJiZEbTpmIT1tJiYwIT0oMyZfLnR5cGUpLGQmYWEuSG9zdCYm''@;'; put 'put ''aD09PV8pO3JldHVybiBudWxsIT09YWU/QzIoYyxtLGFlLF8pOmNmfWZ1bmN0aW9uIGM4KGwsYyxhLGYsZCl7Y29uc3QgaD1sLnByb3ZpZGVySW5kZXhlcyxtPWMuZGF0YSxfPTEwNDg1NzUmaCxPPWwuZGlyZWN0aXZlU3RhcnQsYWU9aD4+MjAsYmU9ZD9fK2FlOmwuZGlyZWN0aXZlRW5kO2Zv''@;'; put 'put ''cihsZXQgeGU9Zj9fOl8rYWU7eGU8YmU7eGUrKyl7Y29uc3QgVmU9bVt4ZV07aWYoeGU8TyYmYT09PVZlfHx4ZT49TyYmVmUudHlwZT09PWEpcmV0dXJuIHhlfWlmKGQpe2NvbnN0IHhlPW1bT107aWYoeGUmJmFjKHhlKSYmeGUudHlwZT09PWEpcmV0dXJuIE99cmV0dXJuIG51bGx9ZnVuY3Rp''@;'; put 'put ''b24gQzIobCxjLGEsZil7bGV0IGQ9bFthXTtjb25zdCBoPWMuZGF0YTtpZihmdW5jdGlvbiBLRihsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIE9tfShkKSl7Y29uc3QgbT1kO20ucmVzb2x2aW5nJiZmdW5jdGlvbiBnMChsLGMpe2NvbnN0IGE9Yz9gLiBEZXBlbmRlbmN5IHBhdGg6ICR7Yy5qb2lu''@;'; put 'put ''KCIgPiAiKX0gPiAke2x9YDoiIjt0aHJvdyBuZXcgSXIoLTIwMCxgQ2lyY3VsYXIgZGVwZW5kZW5jeSBpbiBESSBkZXRlY3RlZCBmb3IgJHtsfSR7YX1gKX0oZnVuY3Rpb24gRWEobCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGw/bC5uYW1lfHxsLnRvU3RyaW5nKCk6Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBsJiZudWxsIT1sJiYiZnVuY3Rpb24iPT10eXBlb2YgbC50eXBlP2wudHlwZS5uYW1lfHxsLnR5cGUudG9TdHJpbmcoKTpJbyhsKX0oaFthXSkpO2NvbnN0IF89dWYobS5jYW5TZWVWaWV3UHJvdmlkZXJzKTttLnJlc29sdmluZz0hMDtjb25zdCBPPW0uaW5qZWN0SW1wbD9waShtLmlu''@;'; put 'put ''amVjdEltcGwpOm51bGw7X3gobCxmLGFhLkRlZmF1bHQpO3RyeXtkPWxbYV09bS5mYWN0b3J5KHZvaWQgMCxoLGwsZiksYy5maXJzdENyZWF0ZVBhc3MmJmE+PWYuZGlyZWN0aXZlU3RhcnQmJmZ1bmN0aW9uIEdGKGwsYyxhKXtjb25zdHtuZ09uQ2hhbmdlczpmLG5nT25Jbml0OmQsbmdEb0No''@;'; put 'put ''ZWNrOmh9PWMudHlwZS5wcm90b3R5cGU7aWYoZil7Y29uc3QgbT1FbShjKTsoYS5wcmVPcmRlckhvb2tzPz89W10pLnB1c2gobCxtKSwoYS5wcmVPcmRlckNoZWNrSG9va3M/Pz1bXSkucHVzaChsLG0pfWQmJihhLnByZU9yZGVySG9va3M/Pz1bXSkucHVzaCgwLWwsZCksaCYmKChhLnByZU9y''@;'; put 'put ''ZGVySG9va3M/Pz1bXSkucHVzaChsLGgpLChhLnByZU9yZGVyQ2hlY2tIb29rcz8/PVtdKS5wdXNoKGwsaCkpfShhLGhbYV0sYyl9ZmluYWxseXtudWxsIT09TyYmcGkoTyksdWYoXyksbS5yZXNvbHZpbmc9ITEsTXgoKX19cmV0dXJuIGR9ZnVuY3Rpb24gRngobCxjLGEpe3JldHVybiEhKGFb''@;'; put 'put ''YysobD4+T3gpXSYxPDxsKX1mdW5jdGlvbiBIeChsLGMpe3JldHVybiEobCZhYS5TZWxmfHxsJmFhLkhvc3QmJmMpfWNsYXNzIHZwe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fdE5vZGU9Yyx0aGlzLl9sVmlldz1hfWdldChjLGEsZil7cmV0dXJuIEx4KHRoaXMuX3ROb2RlLHRoaXMuX2xWaWV3''@;'; put 'put ''LGMseTAoZiksYSl9fWZ1bmN0aW9uIGVIKCl7cmV0dXJuIG5ldyB2cChEdSgpLFFyKCkpfWZ1bmN0aW9uIHhsKGwpe3JldHVybiB2YygoKT0+e2NvbnN0IGM9bC5wcm90b3R5cGUuY29uc3RydWN0b3IsYT1jW2IwXXx8bDEoYyksZj1PYmplY3QucHJvdG90eXBlO2xldCBkPU9iamVjdC5nZXRQ''@;'; put 'put ''cm90b3R5cGVPZihsLnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtkJiZkIT09Zjspe2NvbnN0IGg9ZFtiMF18fGwxKGQpO2lmKGgmJmghPT1hKXJldHVybiBoO2Q9T2JqZWN0LmdldFByb3RvdHlwZU9mKGQpfXJldHVybiBoPT5uZXcgaH0pfWZ1bmN0aW9uIGwxKGwpe3JldHVybiBtMChs''@;'; put 'put ''KT8oKT0+e2NvbnN0IGM9bDEoQ28obCkpO3JldHVybiBjJiZjKCl9OmFmKGwpfWZ1bmN0aW9uIE54KGwpe2NvbnN0IGM9bFtqaV0sYT1jLnR5cGU7cmV0dXJuIDI9PT1hP2MuZGVjbFROb2RlOjE9PT1hP2xbR29dOm51bGx9ZnVuY3Rpb24gSW0obCl7cmV0dXJuIGZ1bmN0aW9uIGRfKGwsYyl7''@;'; put 'put ''aWYoImNsYXNzIj09PWMpcmV0dXJuIGwuY2xhc3NlcztpZigic3R5bGUiPT09YylyZXR1cm4gbC5zdHlsZXM7Y29uc3QgYT1sLmF0dHJzO2lmKGEpe2NvbnN0IGY9YS5sZW5ndGg7bGV0IGQ9MDtmb3IoO2Q8Zjspe2NvbnN0IGg9YVtkXTtpZih0aChoKSlicmVhaztpZigwPT09aClkKz0yO2Vs''@;'; put 'put ''c2UgaWYoIm51bWJlciI9PXR5cGVvZiBoKWZvcihkKys7ZDxmJiYic3RyaW5nIj09dHlwZW9mIGFbZF07KWQrKztlbHNle2lmKGg9PT1jKXJldHVybiBhW2QrMV07ZCs9Mn19fXJldHVybiBudWxsfShEdSgpLGwpfWNvbnN0IGJwPSJfX3BhcmFtZXRlcnNfXyI7ZnVuY3Rpb24gd3AobCxjLGEp''@;'; put 'put ''e3JldHVybiB2YygoKT0+e2NvbnN0IGY9ZnVuY3Rpb24gZjgobCl7cmV0dXJuIGZ1bmN0aW9uKC4uLmEpe2lmKGwpe2NvbnN0IGY9bCguLi5hKTtmb3IoY29uc3QgZCBpbiBmKXRoaXNbZF09ZltkXX19fShjKTtmdW5jdGlvbiBkKC4uLmgpe2lmKHRoaXMgaW5zdGFuY2VvZiBkKXJldHVybiBm''@;'; put 'put ''LmFwcGx5KHRoaXMsaCksdGhpcztjb25zdCBtPW5ldyBkKC4uLmgpO3JldHVybiBfLmFubm90YXRpb249bSxfO2Z1bmN0aW9uIF8oTyxYLGFlKXtjb25zdCBwZT1PLmhhc093blByb3BlcnR5KGJwKT9PW2JwXTpPYmplY3QuZGVmaW5lUHJvcGVydHkoTyxicCx7dmFsdWU6W119KVticF07Zm9y''@;'; put 'put ''KDtwZS5sZW5ndGg8PWFlOylwZS5wdXNoKG51bGwpO3JldHVybihwZVthZV09cGVbYWVdfHxbXSkucHVzaChtKSxPfX1yZXR1cm4gYSYmKGQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYS5wcm90b3R5cGUpKSxkLnByb3RvdHlwZS5uZ01ldGFkYXRhTmFtZT1sLGQuYW5ub3RhdGlvbkNscz1k''@;'; put 'put ''LGR9KX1jb25zdCBkOD1GdW5jdGlvbjtmdW5jdGlvbiBSbShsLGMpe2wuZm9yRWFjaChhPT5BcnJheS5pc0FycmF5KGEpP1JtKGEsYyk6YyhhKSl9ZnVuY3Rpb24gczEobCxjLGEpe2M+PWwubGVuZ3RoP2wucHVzaChhKTpsLnNwbGljZShjLDAsYSl9ZnVuY3Rpb24gaDgobCxjKXtyZXR1cm4g''@;'; put 'put ''Yz49bC5sZW5ndGgtMT9sLnBvcCgpOmwuc3BsaWNlKGMsMSlbMF19ZnVuY3Rpb24gaWQobCxjKXtjb25zdCBhPVtdO2ZvcihsZXQgZj0wO2Y8bDtmKyspYS5wdXNoKGMpO3JldHVybiBhfWZ1bmN0aW9uIEl1KGwsYyxhKXtsZXQgZj1vZChsLGMpO3JldHVybiBmPj0wP2xbMXxmXT1hOihmPX5m''@;'; put 'put ''LGZ1bmN0aW9uIGFIKGwsYyxhLGYpe2xldCBkPWwubGVuZ3RoO2lmKGQ9PWMpbC5wdXNoKGEsZik7ZWxzZSBpZigxPT09ZClsLnB1c2goZixsWzBdKSxsWzBdPWE7ZWxzZXtmb3IoZC0tLGwucHVzaChsW2QtMV0sbFtkXSk7ZD5jOylsW2RdPWxbZC0yXSxkLS07bFtjXT1hLGxbYysxXT1mfX0o''@;'; put 'put ''bCxmLGMsYSkpLGZ9ZnVuY3Rpb24gTTIobCxjKXtjb25zdCBhPW9kKGwsYyk7aWYoYT49MClyZXR1cm4gbFsxfGFdfWZ1bmN0aW9uIG9kKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGxIKGwsYyxhKXtsZXQgZj0wLGQ9bC5sZW5ndGg+PmE7Zm9yKDtkIT09Zjspe2NvbnN0IGg9ZisoZC1mPj4xKSxt''@;'; put 'put ''PWxbaDw8YV07aWYoYz09PW0pcmV0dXJuIGg8PGE7bT5jP2Q9aDpmPWgrMX1yZXR1cm5+KGQ8PGEpfShsLGMsMSl9Y29uc3QgY2g9ZjIod3AoIk9wdGlvbmFsIiksOCksRTA9ZjIod3AoIlNraXBTZWxmIiksNCk7ZnVuY3Rpb24gUzgobCl7cmV0dXJuIDEyOD09KDEyOCZsLmZsYWdzKX12YXIg''@;'; put 'put ''aGg9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsbFtsLkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSIsbH0oaGh8fHt9KTtjb25zdCB2SD0vXj58Xi0+fDwhLS18LS0+fC0tIT58PCEtJC9nLHlIPS8oPHw+KS8sTTg9Ilx1MjAwYiQxXHUyMDBiIjtjb25zdCBi''@;'; put 'put ''Xz1uZXcgTWFwO2xldCBfXz0wO2NvbnN0IENfPSJfX25nQ29udGV4dF9fIjtmdW5jdGlvbiBXdShsLGMpe091KGMpPyhsW0NfXT1jW3YyXSxmdW5jdGlvbiBObShsKXtiXy5zZXQobFt2Ml0sbCl9KGMpKTpsW0NfXT1jfWxldCBTXztmdW5jdGlvbiBNXyhsLGMpe3JldHVybiBTXyhsLGMpfWZ1''@;'; put 'put ''bmN0aW9uIGptKGwpe2NvbnN0IGM9bFtmbF07cmV0dXJuIGR1KGMpP2NbZmxdOmN9ZnVuY3Rpb24gZUEobCl7cmV0dXJuIGs4KGxbZzJdKX1mdW5jdGlvbiB0QShsKXtyZXR1cm4gazgobFtYbF0pfWZ1bmN0aW9uIGs4KGwpe2Zvcig7bnVsbCE9PWwmJiFkdShsKTspbD1sW1hsXTtyZXR1cm4g''@;'; put 'put ''bH1mdW5jdGlvbiBFMihsLGMsYSxmLGQpe2lmKG51bGwhPWYpe2xldCBoLG09ITE7ZHUoZik/aD1mOk91KGYpJiYobT0hMCxmPWZbTmldKTtjb25zdCBfPV9sKGYpOzA9PT1sJiZudWxsIT09YT9udWxsPT1kP21oKGMsYSxfKTpwZihjLGEsXyxkfHxudWxsLCEwKToxPT09bCYmbnVsbCE9PWE/''@;'; put 'put ''cGYoYyxhLF8sZHx8bnVsbCwhMCk6Mj09PWw/ZnVuY3Rpb24gUjgobCxjLGEpe2NvbnN0IGY9VHAobCxjKTtmJiZmdW5jdGlvbiBVYyhsLGMsYSxmKXtsLnJlbW92ZUNoaWxkKGMsYSxmKX0obCxmLGMsYSl9KGMsXyxtKTozPT09bCYmYy5kZXN0cm95Tm9kZShfKSxudWxsIT1oJiZmdW5jdGlv''@;'; put 'put ''biBjQShsLGMsYSxmLGQpe2NvbnN0IGg9YVtDMF07aCE9PV9sKGEpJiZFMihjLGwsZixoLGQpO2ZvcihsZXQgXz1mdTtfPGEubGVuZ3RoO18rKyl7Y29uc3QgTz1hW19dO1ptKE9bamldLE8sbCxjLGYsaCl9fShjLGwsaCxhLGQpfX1mdW5jdGlvbiBrXyhsLGMpe3JldHVybiBsLmNyZWF0ZUNv''@;'; put 'put ''bW1lbnQoZnVuY3Rpb24gSG0obCl7cmV0dXJuIGwucmVwbGFjZSh2SCxjPT5jLnJlcGxhY2UoeUgsTTgpKX0oYykpfWZ1bmN0aW9uIHg4KGwsYyxhKXtyZXR1cm4gbC5jcmVhdGVFbGVtZW50KGMsYSl9ZnVuY3Rpb24gckEobCxjKXtjb25zdCBhPWxbb2hdLGY9YS5pbmRleE9mKGMpO1lhKGMp''@;'; put 'put ''LGEuc3BsaWNlKGYsMSl9ZnVuY3Rpb24geDIobCxjKXtpZihsLmxlbmd0aDw9ZnUpcmV0dXJuO2NvbnN0IGE9ZnUrYyxmPWxbYV07aWYoZil7Y29uc3QgZD1mW25oXTtudWxsIT09ZCYmZCE9PWwmJnJBKGQsZiksYz4wJiYobFthLTFdW1hsXT1mW1hsXSk7Y29uc3QgaD1oOChsLGZ1K2MpOyFm''@;'; put 'put ''dW5jdGlvbiBPSChsLGMpe1ptKGwsYyxjW1pvXSwyLG51bGwsbnVsbCksY1tOaV09bnVsbCxjW0dvXT1udWxsfShmW2ppXSxmKTtjb25zdCBtPWhbeWNdO251bGwhPT1tJiZtLmRldGFjaFZpZXcoaFtqaV0pLGZbZmxdPW51bGwsZltYbF09bnVsbCxmW1BvXSY9LTEyOX1yZXR1cm4gZn1mdW5j''@;'; put 'put ''dGlvbiBBOChsLGMpe2lmKCEoMjU2JmNbUG9dKSl7Y29uc3QgYT1jW1pvXTtjW2FwXT8uZGVzdHJveSgpLGNbbHBdPy5kZXN0cm95KCksYS5kZXN0cm95Tm9kZSYmWm0obCxjLGEsMyxudWxsLG51bGwpLGZ1bmN0aW9uIFJIKGwpe2xldCBjPWxbZzJdO2lmKCFjKXJldHVybiBUOChsW2ppXSxs''@;'; put 'put ''KTtmb3IoO2M7KXtsZXQgYT1udWxsO2lmKE91KGMpKWE9Y1tnMl07ZWxzZXtjb25zdCBmPWNbZnVdO2YmJihhPWYpfWlmKCFhKXtmb3IoO2MmJiFjW1hsXSYmYyE9PWw7KU91KGMpJiZUOChjW2ppXSxjKSxjPWNbZmxdO251bGw9PT1jJiYoYz1sKSxPdShjKSYmVDgoY1tqaV0sYyksYT1jJiZj''@;'; put 'put ''W1hsXX1jPWF9fShjKX19ZnVuY3Rpb24gVDgobCxjKXtpZighKDI1NiZjW1BvXSkpe2NbUG9dJj0tMTI5LGNbUG9dfD0yNTYsZnVuY3Rpb24gb0EobCxjKXtsZXQgYTtpZihudWxsIT1sJiZudWxsIT0oYT1sLmRlc3Ryb3lIb29rcykpZm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKz0yKXtjb25z''@;'; put 'put ''dCBkPWNbYVtmXV07aWYoIShkIGluc3RhbmNlb2YgT20pKXtjb25zdCBoPWFbZisxXTtpZihBcnJheS5pc0FycmF5KGgpKWZvcihsZXQgbT0wO208aC5sZW5ndGg7bSs9Mil7Y29uc3QgXz1kW2hbbV1dLE89aFttKzFdO1MwKDQsXyxPKTt0cnl7Ty5jYWxsKF8pfWZpbmFsbHl7UzAoNSxfLE8p''@;'; put 'put ''fX1lbHNle1MwKDQsZCxoKTt0cnl7aC5jYWxsKGQpfWZpbmFsbHl7UzAoNSxkLGgpfX19fX0obCxjKSxmdW5jdGlvbiBpQShsLGMpe2NvbnN0IGE9bC5jbGVhbnVwLGY9Y1tOY107aWYobnVsbCE9PWEpZm9yKGxldCBoPTA7aDxhLmxlbmd0aC0xO2grPTIpaWYoInN0cmluZyI9PXR5cGVvZiBh''@;'; put 'put ''W2hdKXtjb25zdCBtPWFbaCszXTttPj0wP2ZbbV0oKTpmWy1tXS51bnN1YnNjcmliZSgpLGgrPTJ9ZWxzZSBhW2hdLmNhbGwoZlthW2grMV1dKTtudWxsIT09ZiYmKGNbTmNdPW51bGwpO2NvbnN0IGQ9Y1t0Zl07aWYobnVsbCE9PWQpe2NbdGZdPW51bGw7Zm9yKGxldCBoPTA7aDxkLmxlbmd0''@;'; put 'put ''aDtoKyspKDAsZFtoXSkoKX19KGwsYyksMT09PWNbamldLnR5cGUmJmNbWm9dLmRlc3Ryb3koKTtjb25zdCBhPWNbbmhdO2lmKG51bGwhPT1hJiZkdShjW2ZsXSkpe2EhPT1jW2ZsXSYmckEoYSxjKTtjb25zdCBmPWNbeWNdO251bGwhPT1mJiZmLmRldGFjaFZpZXcobCl9IWZ1bmN0aW9uIGJI''@;'; put 'put ''KGwpe2JfLmRlbGV0ZShsW3YyXSl9KGMpfX1mdW5jdGlvbiBBcChsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uIHptKGwsYyxhKXtsZXQgZj1jO2Zvcig7bnVsbCE9PWYmJjQwJmYudHlwZTspZj0oYz1mKS5wYXJlbnQ7aWYobnVsbD09PWYpcmV0dXJuIGFbTmldO3tjb25zdHtjb21wb25lbnRPZmZz''@;'; put 'put ''ZXQ6ZH09ZjtpZihkPi0xKXtjb25zdHtlbmNhcHN1bGF0aW9uOmh9PWwuZGF0YVtmLmRpcmVjdGl2ZVN0YXJ0K2RdO2lmKGg9PT1qdS5Ob25lfHxoPT09anUuRW11bGF0ZWQpcmV0dXJuIG51bGx9cmV0dXJuIFdzKGYsYSl9fShsLGMucGFyZW50LGEpfWZ1bmN0aW9uIHBmKGwsYyxhLGYsZCl7''@;'; put 'put ''bC5pbnNlcnRCZWZvcmUoYyxhLGYsZCl9ZnVuY3Rpb24gbWgobCxjLGEpe2wuYXBwZW5kQ2hpbGQoYyxhKX1mdW5jdGlvbiBPOChsLGMsYSxmLGQpe251bGwhPT1mP3BmKGwsYyxhLGYsZCk6bWgobCxjLGEpfWZ1bmN0aW9uIFRwKGwsYyl7cmV0dXJuIGwucGFyZW50Tm9kZShjKX1mdW5jdGlv''@;'; put 'put ''biBtZihsLGMsYSl7cmV0dXJuIGxBKGwsYyxhKX1sZXQgRDgsWW0sVF8sTDgsbEE9ZnVuY3Rpb24gYUEobCxjLGEpe3JldHVybiA0MCZsLnR5cGU/V3MobCxhKTpudWxsfTtmdW5jdGlvbiBJOChsLGMsYSxmKXtjb25zdCBkPUFwKGwsZixjKSxoPWNbWm9dLF89bWYoZi5wYXJlbnR8fGNbR29d''@;'; put 'put ''LGYsYyk7aWYobnVsbCE9ZClpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgTz0wO088YS5sZW5ndGg7TysrKU84KGgsZCxhW09dLF8sITEpO2Vsc2UgTzgoaCxkLGEsXywhMSk7dm9pZCAwIT09RDgmJkQ4KGgsZixjLGEsZCl9ZnVuY3Rpb24gVW0obCxjKXtpZihudWxsIT09Yyl7Y29uc3Qg''@;'; put 'put ''YT1jLnR5cGU7aWYoMyZhKXJldHVybiBXcyhjLGwpO2lmKDQmYSlyZXR1cm4geF8oLTEsbFtjLmluZGV4XSk7aWYoOCZhKXtjb25zdCBmPWMuY2hpbGQ7aWYobnVsbCE9PWYpcmV0dXJuIFVtKGwsZik7e2NvbnN0IGQ9bFtjLmluZGV4XTtyZXR1cm4gZHUoZCk/eF8oLTEsZCk6X2woZCl9fWlm''@;'; put 'put ''KDMyJmEpcmV0dXJuIE1fKGMsbCkoKXx8X2wobFtjLmluZGV4XSk7e2NvbnN0IGY9c0EobCxjKTtyZXR1cm4gbnVsbCE9PWY/QXJyYXkuaXNBcnJheShmKT9mWzBdOlVtKGptKGxbSmxdKSxmKTpVbShsLGMubmV4dCl9fXJldHVybiBudWxsfWZ1bmN0aW9uIHNBKGwsYyl7cmV0dXJuIG51bGwh''@;'; put 'put ''PT1jP2xbSmxdW0dvXS5wcm9qZWN0aW9uW2MucHJvamVjdGlvbl06bnVsbH1mdW5jdGlvbiB4XyhsLGMpe2NvbnN0IGE9ZnUrbCsxO2lmKGE8Yy5sZW5ndGgpe2NvbnN0IGY9Y1thXSxkPWZbamldLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PWQpcmV0dXJuIFVtKGYsZCl9cmV0dXJuIGNbQzBdfWZ1''@;'; put 'put ''bmN0aW9uIEFfKGwsYyxhLGYsZCxoLG0pe2Zvcig7bnVsbCE9YTspe2NvbnN0IF89ZlthLmluZGV4XSxPPWEudHlwZTtpZihtJiYwPT09YyYmKF8mJld1KF9sKF8pLGYpLGEuZmxhZ3N8PTIpLDMyIT0oMzImYS5mbGFncykpaWYoOCZPKUFfKGwsYyxhLmNoaWxkLGYsZCxoLCExKSxFMihjLGws''@;'; put 'put ''ZCxfLGgpO2Vsc2UgaWYoMzImTyl7Y29uc3QgWD1NXyhhLGYpO2xldCBhZTtmb3IoO2FlPVgoKTspRTIoYyxsLGQsYWUsaCk7RTIoYyxsLGQsXyxoKX1lbHNlIDE2Jk8/RkgobCxjLGYsYSxkLGgpOkUyKGMsbCxkLF8saCk7YT1tP2EucHJvamVjdGlvbk5leHQ6YS5uZXh0fX1mdW5jdGlvbiBa''@;'; put 'put ''bShsLGMsYSxmLGQsaCl7QV8oYSxmLGwuZmlyc3RDaGlsZCxjLGQsaCwhMSl9ZnVuY3Rpb24gRkgobCxjLGEsZixkLGgpe2NvbnN0IG09YVtKbF0sTz1tW0dvXS5wcm9qZWN0aW9uW2YucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheShPKSlmb3IobGV0IFg9MDtYPE8ubGVuZ3RoO1grKylF''@;'; put 'put ''MihjLGwsZCxPW1hdLGgpO2Vsc2V7bGV0IFg9Tztjb25zdCBhZT1tW2ZsXTtTOChmKSYmKFguZmxhZ3N8PTEyOCksQV8obCxjLFgsYWUsZCxoLCEwKX19ZnVuY3Rpb24gZkEobCxjLGEpeyIiPT09YT9sLnJlbW92ZUF0dHJpYnV0ZShjLCJjbGFzcyIpOmwuc2V0QXR0cmlidXRlKGMsImNsYXNz''@;'; put 'put ''IixhKX1mdW5jdGlvbiBkQShsLGMsYSl7Y29uc3R7bWVyZ2VkQXR0cnM6ZixjbGFzc2VzOmQsc3R5bGVzOmh9PWE7bnVsbCE9PWYmJiRmKGwsYyxmKSxudWxsIT09ZCYmZkEobCxjLGQpLG51bGwhPT1oJiZmdW5jdGlvbiBISChsLGMsYSl7bC5zZXRBdHRyaWJ1dGUoYywic3R5bGUiLGEpfShs''@;'; put 'put ''LGMsaCl9ZnVuY3Rpb24gT3AobCl7cmV0dXJuIGZ1bmN0aW9uIFdtKCl7aWYodm9pZCAwPT09WW0mJihZbT1udWxsLFBpLnRydXN0ZWRUeXBlcykpdHJ5e1ltPVBpLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOmw9PmwsY3JlYXRlU2NyaXB0Omw9Pmws''@;'; put 'put ''Y3JlYXRlU2NyaXB0VVJMOmw9Pmx9KX1jYXRjaHt9cmV0dXJuIFltfSgpPy5jcmVhdGVIVE1MKGwpfHxsfWZ1bmN0aW9uIEdtKCl7aWYodm9pZCAwIT09VF8pcmV0dXJuIFRfO2lmKHR5cGVvZiBkb2N1bWVudDwidSIpcmV0dXJuIGRvY3VtZW50O3Rocm93IG5ldyBJcigyMTAsITEpfWZ1bmN0''@;'; put 'put ''aW9uIE9fKCl7aWYodm9pZCAwPT09TDgmJihMOD1udWxsLFBpLnRydXN0ZWRUeXBlcykpdHJ5e0w4PVBpLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIjdW5zYWZlLWJ5cGFzcyIse2NyZWF0ZUhUTUw6bD0+bCxjcmVhdGVTY3JpcHQ6bD0+bCxjcmVhdGVTY3JpcHRVUkw6bD0+''@;'; put 'put ''bH0pfWNhdGNoe31yZXR1cm4gTDh9ZnVuY3Rpb24gbUEobCl7cmV0dXJuIE9fKCk/LmNyZWF0ZUhUTUwobCl8fGx9ZnVuY3Rpb24gdkEobCl7cmV0dXJuIE9fKCk/LmNyZWF0ZVNjcmlwdFVSTChsKXx8bH1jbGFzcyB5QXtjb25zdHJ1Y3RvcihjKXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0Fw''@;'; put 'put ''cGxpY2F0aW9uU2VjdXJpdHk9Y310b1N0cmluZygpe3JldHVybmBTYWZlVmFsdWUgbXVzdCB1c2UgW3Byb3BlcnR5XT1iaW5kaW5nOiAke3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eX0gKHNlZSAke2VwfSlgfX1mdW5jdGlvbiBnaChsKXtyZXR1cm4gbCBpbnN0''@;'; put 'put ''YW5jZW9mIHlBP2wuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTpsfWZ1bmN0aW9uICRtKGwsYyl7Y29uc3QgYT1mdW5jdGlvbiBZSChsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIHlBJiZsLmdldFR5cGVOYW1lKCl8fG51bGx9KGwpO2lmKG51bGwhPWEmJmEhPT1jKXtpZigi''@;'; put 'put ''UmVzb3VyY2VVUkwiPT09YSYmIlVSTCI9PT1jKXJldHVybiEwO3Rocm93IG5ldyBFcnJvcihgUmVxdWlyZWQgYSBzYWZlICR7Y30sIGdvdCBhICR7YX0gKHNlZSAke2VwfSlgKX1yZXR1cm4gYT09PWN9Y2xhc3MgRF97Y29uc3RydWN0b3IoYyl7dGhpcy5pbmVydERvY3VtZW50SGVscGVyPWN9''@;'; put 'put ''Z2V0SW5lcnRCb2R5RWxlbWVudChjKXtjPSI8Ym9keT48cmVtb3ZlPjwvcmVtb3ZlPiIrYzt0cnl7Y29uc3QgYT0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhPcChjKSwidGV4dC9odG1sIikuYm9keTtyZXR1cm4gbnVsbD09PWE/dGhpcy5pbmVydERvY3VtZW50SGVs''@;'; put 'put ''cGVyLmdldEluZXJ0Qm9keUVsZW1lbnQoYyk6KGEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSxhKX1jYXRjaHtyZXR1cm4gbnVsbH19fWNsYXNzIElfe2NvbnN0cnVjdG9yKGMpe3RoaXMuZGVmYXVsdERvYz1jLHRoaXMuaW5lcnREb2N1bWVudD10aGlzLmRlZmF1bHREb2MuaW1wbGVtZW50''@;'; put 'put ''YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJzYW5pdGl6YXRpb24taW5lcnQiKX1nZXRJbmVydEJvZHlFbGVtZW50KGMpe2NvbnN0IGE9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIGEuaW5uZXJIVE1MPU9wKGMpLGF9fWNvbnN0IFdIPS9eKD8h''@;'; put 'put ''amF2YXNjcmlwdDopKD86W2EtejAtOSsuLV0rOnxbXiY6XC8/I10qKD86W1wvPyNdfCQpKS9pO2Z1bmN0aW9uIFJfKGwpe3JldHVybihsPVN0cmluZyhsKSkubWF0Y2goV0gpP2w6InVuc2FmZToiK2x9ZnVuY3Rpb24gZ2YobCl7Y29uc3QgYz17fTtmb3IoY29uc3QgYSBvZiBsLnNwbGl0KCIs''@;'; put 'put ''IikpY1thXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBqbCguLi5sKXtjb25zdCBjPXt9O2Zvcihjb25zdCBhIG9mIGwpZm9yKGNvbnN0IGYgaW4gYSlhLmhhc093blByb3BlcnR5KGYpJiYoY1tmXT0hMCk7cmV0dXJuIGN9Y29uc3Qgc2Q9Z2YoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSxMXz1n''@;'; put 'put ''ZigiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLFBfPWdmKCJycCxydCIpLEZfPWpsKHNkLGpsKExfLGdmKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxm''@;'; put 'put ''aWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSxqbChQXyxnZigiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixj''@;'; put 'put ''aXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLGpsKFBfLExfKSksSF89''@;'; put 'put ''Z2YoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLF9BPWpsKEhfLGdmKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxj''@;'; put 'put ''bGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFu''@;'; put 'put ''Z3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzcmNzZXQsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQs''@;'; put 'put ''dGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSxnZigiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFy''@;'; put 'put ''aWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlhLWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3Bv''@;'; put 'put ''cHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1vZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1v''@;'; put 'put ''d25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVzY3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVk''@;'; put 'put ''LGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSksJEg9Z2YoInNjcmlwdCxzdHlsZSx0ZW1wbGF0ZSIpO2NsYXNzIEtIe2NvbnN0cnVjdG9yKCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEs''@;'; put 'put ''dGhpcy5idWY9W119c2FuaXRpemVDaGlsZHJlbihjKXtsZXQgYT1jLmZpcnN0Q2hpbGQsZj0hMDtmb3IoO2E7KWlmKGEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9mPXRoaXMuc3RhcnRFbGVtZW50KGEpOmEubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGEubm9k''@;'; put 'put ''ZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxmJiZhLmZpcnN0Q2hpbGQpYT1hLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2E7KXthLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChhKTtsZXQgZD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChh''@;'; put 'put ''LGEubmV4dFNpYmxpbmcpO2lmKGQpe2E9ZDticmVha31hPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGEsYS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9c3RhcnRFbGVtZW50KGMpe2NvbnN0IGE9Yy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCFGXy5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eShhKSlyZXR1cm4gdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsISRILmhhc093blByb3BlcnR5KGEpO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKGEpO2NvbnN0IGY9Yy5hdHRyaWJ1dGVzO2ZvcihsZXQgZD0wO2Q8Zi5sZW5ndGg7ZCsrKXtjb25zdCBoPWYuaXRl''@;'; put 'put ''bShkKSxtPWgubmFtZSxfPW0udG9Mb3dlckNhc2UoKTtpZighX0EuaGFzT3duUHJvcGVydHkoXykpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwO2NvbnRpbnVlfWxldCBPPWgudmFsdWU7SF9bX10mJihPPVJfKE8pKSx0aGlzLmJ1Zi5wdXNoKCIgIixtLCc9Iicsd0EoTyksJyInKX1yZXR1''@;'; put 'put ''cm4gdGhpcy5idWYucHVzaCgiPiIpLCEwfWVuZEVsZW1lbnQoYyl7Y29uc3QgYT1jLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Rl8uaGFzT3duUHJvcGVydHkoYSkmJiFzZC5oYXNPd25Qcm9wZXJ0eShhKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChhKSx0aGlzLmJ1Zi5w''@;'; put 'put ''dXNoKCI+IikpfWNoYXJzKGMpe3RoaXMuYnVmLnB1c2god0EoYykpfWNoZWNrQ2xvYmJlcmVkRWxlbWVudChjLGEpe2lmKGEmJihjLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKT09PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05f''@;'; put 'put ''Q09OVEFJTkVEX0JZKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyBjbG9iYmVyZWQ6ICR7Yy5vdXRlckhUTUx9YCk7cmV0dXJuIGF9fWNvbnN0IHFIPS9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxYSD0vKFte''@;'; put 'put ''XCMtfiB8IV0pL2c7ZnVuY3Rpb24gd0EobCl7cmV0dXJuIGwucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UocUgsZnVuY3Rpb24oYyl7cmV0dXJuIiYjIisoMTAyNCooYy5jaGFyQ29kZUF0KDApLTU1Mjk2KSsoYy5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkucmVwbGFj''@;'; put 'put ''ZShYSCxmdW5jdGlvbihjKXtyZXR1cm4iJiMiK2MuY2hhckNvZGVBdCgwKSsiOyJ9KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgUDg7ZnVuY3Rpb24gTl8obCl7cmV0dXJuImNvbnRlbnQiaW4gbCYmZnVuY3Rpb24gUUgobCl7cmV0dXJuIGwubm9kZVR5''@;'; put 'put ''cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmIlRFTVBMQVRFIj09PWwubm9kZU5hbWV9KGwpP2wuY29udGVudDpudWxsfXZhciBEcD1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLk5PTkU9MF09Ik5PTkUiLGxbbC5IVE1MPTFdPSJIVE1MIixsW2wuU1RZTEU9Ml09IlNUWUxFIixsW2wuU0NSSVBUPTNd''@;'; put 'put ''PSJTQ1JJUFQiLGxbbC5VUkw9NF09IlVSTCIsbFtsLlJFU09VUkNFX1VSTD01XT0iUkVTT1VSQ0VfVVJMIixsfShEcHx8e30pO2Z1bmN0aW9uIHZoKGwpe2NvbnN0IGM9S20oKTtyZXR1cm4gYz9tQShjLnNhbml0aXplKERwLkhUTUwsbCl8fCIiKTokbShsLCJIVE1MIik/bUEoZ2gobCkpOmZ1''@;'; put 'put ''bmN0aW9uIEpIKGwsYyl7bGV0IGE9bnVsbDt0cnl7UDg9UDh8fGZ1bmN0aW9uIEEyKGwpe2NvbnN0IGM9bmV3IElfKGwpO3JldHVybiBmdW5jdGlvbiBiQSgpe3RyeXtyZXR1cm4hIShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKE9wKCIiKSwidGV4dC9odG1sIil9Y2F0''@;'; put 'put ''Y2h7cmV0dXJuITF9fSgpP25ldyBEXyhjKTpjfShsKTtsZXQgZj1jP1N0cmluZyhjKToiIjthPVA4LmdldEluZXJ0Qm9keUVsZW1lbnQoZik7bGV0IGQ9NSxoPWY7ZG97aWYoMD09PWQpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBp''@;'; put 'put ''cyB1bnN0YWJsZSIpO2QtLSxmPWgsaD1hLmlubmVySFRNTCxhPVA4LmdldEluZXJ0Qm9keUVsZW1lbnQoZil9d2hpbGUoZiE9PWgpO3JldHVybiBPcCgobmV3IEtIKS5zYW5pdGl6ZUNoaWxkcmVuKE5fKGEpfHxhKSl9ZmluYWxseXtpZihhKXtjb25zdCBmPU5fKGEpfHxhO2Zvcig7Zi5maXJz''@;'; put 'put ''dENoaWxkOylmLnJlbW92ZUNoaWxkKGYuZmlyc3RDaGlsZCl9fX0oR20oKSxJbyhsKSl9ZnVuY3Rpb24gVl8obCl7Y29uc3QgYz1LbSgpO3JldHVybiBjP2Muc2FuaXRpemUoRHAuVVJMLGwpfHwiIjokbShsLCJVUkwiKT9naChsKTpSXyhJbyhsKSl9ZnVuY3Rpb24gQ0EobCl7Y29uc3QgYz1L''@;'; put 'put ''bSgpO2lmKGMpcmV0dXJuIHZBKGMuc2FuaXRpemUoRHAuUkVTT1VSQ0VfVVJMLGwpfHwiIik7aWYoJG0obCwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gdkEoZ2gobCkpO3Rocm93IG5ldyBJcig5MDQsITEpfWZ1bmN0aW9uIEttKCl7Y29uc3QgbD1RcigpO3JldHVybiBsJiZsW1ExXS5zYW5pdGl6''@;'; put 'put ''ZXJ9Y2xhc3MgTWl7Y29uc3RydWN0b3IoYyxhKXt0aGlzLl9kZXNjPWMsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMuXHUwMjc1cHJvdj12b2lkIDAsIm51bWJlciI9PXR5cGVvZiBhP3RoaXMuX19OR19FTEVNRU5UX0lEX189YTp2b2lkIDAhPT1hJiYodGhpcy5c''@;'; put 'put ''dTAyNzVwcm92PWhyKHt0b2tlbjp0aGlzLHByb3ZpZGVkSW46YS5wcm92aWRlZElufHwicm9vdCIsZmFjdG9yeTphLmZhY3Rvcnl9KSl9Z2V0IG11bHRpKCl7cmV0dXJuIHRoaXN9dG9TdHJpbmcoKXtyZXR1cm5gSW5qZWN0aW9uVG9rZW4gJHt0aGlzLl9kZXNjfWB9fWNvbnN0IHFtPW5ldyBN''@;'; put 'put ''aSgiRU5WSVJPTk1FTlRfSU5JVElBTElaRVIiKSxNQT1uZXcgTWkoIklOSkVDVE9SIiwtMSksa0E9bmV3IE1pKCJJTkpFQ1RPUl9ERUZfVFlQRVMiKTtjbGFzcyBFQXtnZXQoYyxhPXYwKXtpZihhPT09djApe2NvbnN0IGY9bmV3IEVycm9yKGBOdWxsSW5qZWN0b3JFcnJvcjogTm8gcHJvdmlk''@;'; put 'put ''ZXIgZm9yICR7S2woYyl9IWApO3Rocm93IGYubmFtZT0iTnVsbEluamVjdG9yRXJyb3IiLGZ9cmV0dXJuIGF9fWZ1bmN0aW9uIG9OKC4uLmwpe3JldHVybntcdTAyNzVwcm92aWRlcnM6eEEoMCxsKSxcdTAyNzVmcm9tTmdNb2R1bGU6ITB9fWZ1bmN0aW9uIHhBKGwsLi4uYyl7Y29uc3QgYT1b''@;'; put 'put ''XSxmPW5ldyBTZXQ7bGV0IGQ7cmV0dXJuIFJtKGMsaD0+e2NvbnN0IG09aDtqXyhtLGEsW10sZikmJihkfHw9W10sZC5wdXNoKG0pKX0pLHZvaWQgMCE9PWQmJkFBKGQsYSksYX1mdW5jdGlvbiBBQShsLGMpe2ZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKXtjb25zdHtwcm92aWRlcnM6ZH09''@;'; put 'put ''bFthXTt6XyhkLGg9PntjLnB1c2goaCl9KX19ZnVuY3Rpb24gal8obCxjLGEsZil7aWYoIShsPUNvKGwpKSlyZXR1cm4hMTtsZXQgZD1udWxsLGg9TDYobCk7Y29uc3QgbT0haCYmbmEobCk7aWYoaHx8bSl7aWYobSYmIW0uc3RhbmRhbG9uZSlyZXR1cm4hMTtkPWx9ZWxzZXtjb25zdCBPPWwu''@;'; put 'put ''bmdNb2R1bGU7aWYoaD1MNihPKSwhaClyZXR1cm4hMTtkPU99Y29uc3QgXz1mLmhhcyhkKTtpZihtKXtpZihfKXJldHVybiExO2lmKGYuYWRkKGQpLG0uZGVwZW5kZW5jaWVzKXtjb25zdCBPPSJmdW5jdGlvbiI9PXR5cGVvZiBtLmRlcGVuZGVuY2llcz9tLmRlcGVuZGVuY2llcygpOm0uZGVw''@;'; put 'put ''ZW5kZW5jaWVzO2Zvcihjb25zdCBYIG9mIE8pal8oWCxjLGEsZil9fWVsc2V7aWYoIWgpcmV0dXJuITE7e2lmKG51bGwhPWguaW1wb3J0cyYmIV8pe2xldCBYO2YuYWRkKGQpO3RyeXtSbShoLmltcG9ydHMsYWU9PntqXyhhZSxjLGEsZikmJihYfHw9W10sWC5wdXNoKGFlKSl9KX1maW5hbGx5''@;'; put 'put ''e312b2lkIDAhPT1YJiZBQShYLGMpfWlmKCFfKXtjb25zdCBYPWFmKGQpfHwoKCk9Pm5ldyBkKTtjLnB1c2goe3Byb3ZpZGU6ZCx1c2VGYWN0b3J5OlgsZGVwczp4YX0se3Byb3ZpZGU6a0EsdXNlVmFsdWU6ZCxtdWx0aTohMH0se3Byb3ZpZGU6cW0sdXNlVmFsdWU6KCk9PnNyKGQpLG11bHRp''@;'; put 'put ''OiEwfSl9Y29uc3QgTz1oLnByb3ZpZGVycztudWxsPT1PfHxffHx6XyhPLGFlPT57Yy5wdXNoKGFlKX0pfX1yZXR1cm4gZCE9PWwmJnZvaWQgMCE9PWwucHJvdmlkZXJzfWZ1bmN0aW9uIHpfKGwsYyl7Zm9yKGxldCBhIG9mIGwpWGQoYSkmJihhPWEuXHUwMjc1cHJvdmlkZXJzKSxBcnJheS5p''@;'; put 'put ''c0FycmF5KGEpP3pfKGEsYyk6YyhhKX1jb25zdCBhTj1EYSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6RGF9KTtmdW5jdGlvbiBVXyhsKXtyZXR1cm4gbnVsbCE9PWwmJiJvYmplY3QiPT10eXBlb2YgbCYmYU4gaW4gbH1mdW5jdGlvbiBUMihsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''bH1jb25zdCBKbT1uZXcgTWkoIlNldCBJbmplY3RvciBzY29wZS4iKSxGOD17fSxsTj17fTtsZXQgWl87ZnVuY3Rpb24gSDgoKXtyZXR1cm4gdm9pZCAwPT09Wl8mJihaXz1uZXcgRUEpLFpffWNsYXNzIHUxe31jbGFzcyBZXyBleHRlbmRzIHUxe2dldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fZGVzdHJveWVkfWNvbnN0cnVjdG9yKGMsYSxmLGQpe3N1cGVyKCksdGhpcy5wYXJlbnQ9YSx0aGlzLnNvdXJjZT1mLHRoaXMuc2NvcGVzPWQsdGhpcy5yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbmdPbkRlc3Ryb3lIb29rcz1uZXcgU2V0LHRoaXMuX29uRGVzdHJveUhvb2tzPVtdLHRoaXMu''@;'; put 'put ''X2Rlc3Ryb3llZD0hMSxHXyhjLG09PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKG0pKSx0aGlzLnJlY29yZHMuc2V0KE1BLElwKHZvaWQgMCx0aGlzKSksZC5oYXMoImVudmlyb25tZW50IikmJnRoaXMucmVjb3Jkcy5zZXQodTEsSXAodm9pZCAwLHRoaXMpKTtjb25zdCBoPXRoaXMucmVjb3Jkcy5n''@;'; put 'put ''ZXQoSm0pO251bGwhPWgmJiJzdHJpbmciPT10eXBlb2YgaC52YWx1ZSYmdGhpcy5zY29wZXMuYWRkKGgudmFsdWUpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcz1uZXcgU2V0KHRoaXMuZ2V0KGtBLm11bHRpLHhhLGFhLlNlbGYpKX1kZXN0cm95KCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKSx0''@;'; put 'put ''aGlzLl9kZXN0cm95ZWQ9ITA7dHJ5e2Zvcihjb25zdCBhIG9mIHRoaXMuX25nT25EZXN0cm95SG9va3MpYS5uZ09uRGVzdHJveSgpO2NvbnN0IGM9dGhpcy5fb25EZXN0cm95SG9va3M7dGhpcy5fb25EZXN0cm95SG9va3M9W107Zm9yKGNvbnN0IGEgb2YgYylhKCl9ZmluYWxseXt0aGlzLnJl''@;'; put 'put ''Y29yZHMuY2xlYXIoKSx0aGlzLl9uZ09uRGVzdHJveUhvb2tzLmNsZWFyKCksdGhpcy5pbmplY3RvckRlZlR5cGVzLmNsZWFyKCl9fW9uRGVzdHJveShjKXtyZXR1cm4gdGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKSx0aGlzLl9vbkRlc3Ryb3lIb29rcy5wdXNoKGMpLCgpPT50aGlzLnJlbW92''@;'; put 'put ''ZU9uRGVzdHJveShjKX1ydW5JbkNvbnRleHQoYyl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKTtjb25zdCBhPUsxKHRoaXMpLGY9cGkodm9pZCAwKTt0cnl7cmV0dXJuIGMoKX1maW5hbGx5e0sxKGEpLHBpKGYpfX1nZXQoYyxhPXYwLGY9YWEuRGVmYXVsdCl7aWYodGhpcy5hc3NlcnROb3RE''@;'; put 'put ''ZXN0cm95ZWQoKSxjLmhhc093blByb3BlcnR5KHlsKSlyZXR1cm4gY1t5bF0odGhpcyk7Zj15MChmKTtjb25zdCBkPUsxKHRoaXMpLGg9cGkodm9pZCAwKTt0cnl7aWYoIShmJmFhLlNraXBTZWxmKSl7bGV0IF89dGhpcy5yZWNvcmRzLmdldChjKTtpZih2b2lkIDA9PT1fKXtjb25zdCBPPWZ1''@;'; put 'put ''bmN0aW9uIGROKGwpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsfHwib2JqZWN0Ij09dHlwZW9mIGwmJmwgaW5zdGFuY2VvZiBNaX0oYykmJlVmKGMpO189TyYmdGhpcy5pbmplY3RhYmxlRGVmSW5TY29wZShPKT9JcChXXyhjKSxGOCk6bnVsbCx0aGlzLnJlY29yZHMuc2V0KGMsXyl9aWYo''@;'; put 'put ''bnVsbCE9XylyZXR1cm4gdGhpcy5oeWRyYXRlKGMsXyl9cmV0dXJuKGYmYWEuU2VsZj9IOCgpOnRoaXMucGFyZW50KS5nZXQoYyxhPWYmYWEuT3B0aW9uYWwmJmE9PT12MD9udWxsOmEpfWNhdGNoKG0pe2lmKCJOdWxsSW5qZWN0b3JFcnJvciI9PT1tLm5hbWUpe2lmKChtW0ZjXT1tW0ZjXXx8''@;'; put 'put ''W10pLnVuc2hpZnQoS2woYykpLGQpdGhyb3cgbTtyZXR1cm4gZnVuY3Rpb24gSGMobCxjLGEsZil7Y29uc3QgZD1sW0ZjXTt0aHJvdyBjW0g2XSYmZC51bnNoaWZ0KGNbSDZdKSxsLm1lc3NhZ2U9ZnVuY3Rpb24gV2YobCxjLGEsZj1udWxsKXtsPWwmJiJcbiI9PT1sLmNoYXJBdCgwKSYmIlx1''@;'; put 'put ''MDI3NSI9PWwuY2hhckF0KDEpP2wuc2xpY2UoMik6bDtsZXQgZD1LbChjKTtpZihBcnJheS5pc0FycmF5KGMpKWQ9Yy5tYXAoS2wpLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgYyl7bGV0IGg9W107Zm9yKGxldCBtIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShtKSl7''@;'; put 'put ''bGV0IF89Y1ttXTtoLnB1c2gobSsiOiIrKCJzdHJpbmciPT10eXBlb2YgXz9KU09OLnN0cmluZ2lmeShfKTpLbChfKSkpfWQ9YHske2guam9pbigiLCAiKX19YH1yZXR1cm5gJHthfSR7Zj8iKCIrZisiKSI6IiJ9WyR7ZH1dOiAke2wucmVwbGFjZShjdSwiXG4gICIpfWB9KCJcbiIrbC5tZXNz''@;'; put 'put ''YWdlLGQsYSxmKSxsLm5nVG9rZW5QYXRoPWQsbFtGY109bnVsbCxsfShtLGMsIlIzSW5qZWN0b3JFcnJvciIsdGhpcy5zb3VyY2UpfXRocm93IG19ZmluYWxseXtwaShoKSxLMShkKX19cmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCl7Y29uc3QgYz1LMSh0aGlzKSxhPXBpKHZvaWQgMCk7''@;'; put 'put ''dHJ5e2NvbnN0IGY9dGhpcy5nZXQocW0ubXVsdGkseGEsYWEuU2VsZik7Zm9yKGNvbnN0IGQgb2YgZilkKCl9ZmluYWxseXtLMShjKSxwaShhKX19dG9TdHJpbmcoKXtjb25zdCBjPVtdLGE9dGhpcy5yZWNvcmRzO2Zvcihjb25zdCBmIG9mIGEua2V5cygpKWMucHVzaChLbChmKSk7cmV0dXJu''@;'; put 'put ''YFIzSW5qZWN0b3JbJHtjLmpvaW4oIiwgIil9XWB9YXNzZXJ0Tm90RGVzdHJveWVkKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBJcigyMDUsITEpfXByb2Nlc3NQcm92aWRlcihjKXtsZXQgYT1UMihjPUNvKGMpKT9jOkNvKGMmJmMucHJvdmlkZSk7Y29uc3QgZj1mdW5jdGlvbiB1''@;'; put 'put ''TihsKXtyZXR1cm4gVV8obCk/SXAodm9pZCAwLGwudXNlVmFsdWUpOklwKERBKGwpLEY4KX0oYyk7aWYoVDIoYyl8fCEwIT09Yy5tdWx0aSl0aGlzLnJlY29yZHMuZ2V0KGEpO2Vsc2V7bGV0IGQ9dGhpcy5yZWNvcmRzLmdldChhKTtkfHwoZD1JcCh2b2lkIDAsRjgsITApLGQuZmFjdG9yeT0o''@;'; put 'put ''KT0+cmMoZC5tdWx0aSksdGhpcy5yZWNvcmRzLnNldChhLGQpKSxhPWMsZC5tdWx0aS5wdXNoKGMpfXRoaXMucmVjb3Jkcy5zZXQoYSxmKX1oeWRyYXRlKGMsYSl7cmV0dXJuIGEudmFsdWU9PT1GOCYmKGEudmFsdWU9bE4sYS52YWx1ZT1hLmZhY3RvcnkoKSksIm9iamVjdCI9PXR5cGVvZiBh''@;'; put 'put ''LnZhbHVlJiZhLnZhbHVlJiZmdW5jdGlvbiBmTihsKXtyZXR1cm4gbnVsbCE9PWwmJiJvYmplY3QiPT10eXBlb2YgbCYmImZ1bmN0aW9uIj09dHlwZW9mIGwubmdPbkRlc3Ryb3l9KGEudmFsdWUpJiZ0aGlzLl9uZ09uRGVzdHJveUhvb2tzLmFkZChhLnZhbHVlKSxhLnZhbHVlfWluamVjdGFi''@;'; put 'put ''bGVEZWZJblNjb3BlKGMpe2lmKCFjLnByb3ZpZGVkSW4pcmV0dXJuITE7Y29uc3QgYT1DbyhjLnByb3ZpZGVkSW4pO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT8iYW55Ij09PWF8fHRoaXMuc2NvcGVzLmhhcyhhKTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGEpfXJlbW92ZU9uRGVzdHJv''@;'; put 'put ''eShjKXtjb25zdCBhPXRoaXMuX29uRGVzdHJveUhvb2tzLmluZGV4T2YoYyk7LTEhPT1hJiZ0aGlzLl9vbkRlc3Ryb3lIb29rcy5zcGxpY2UoYSwxKX19ZnVuY3Rpb24gV18obCl7Y29uc3QgYz1VZihsKSxhPW51bGwhPT1jP2MuZmFjdG9yeTphZihsKTtpZihudWxsIT09YSlyZXR1cm4gYTtp''@;'; put 'put ''ZihsIGluc3RhbmNlb2YgTWkpdGhyb3cgbmV3IElyKDIwNCwhMSk7aWYobCBpbnN0YW5jZW9mIEZ1bmN0aW9uKXJldHVybiBmdW5jdGlvbiBzTihsKXtjb25zdCBjPWwubGVuZ3RoO2lmKGM+MCl0aHJvdyBpZChjLCI/IiksbmV3IElyKDIwNCwhMSk7Y29uc3QgYT1mdW5jdGlvbiBWYShsKXty''@;'; put 'put ''ZXR1cm4gbCYmKGxbdHBdfHxsW0JhXSl8fG51bGx9KGwpO3JldHVybiBudWxsIT09YT8oKT0+YS5mYWN0b3J5KGwpOigpPT5uZXcgbH0obCk7dGhyb3cgbmV3IElyKDIwNCwhMSl9ZnVuY3Rpb24gREEobCxjLGEpe2xldCBmO2lmKFQyKGwpKXtjb25zdCBkPUNvKGwpO3JldHVybiBhZihkKXx8''@;'; put 'put ''V18oZCl9aWYoVV8obCkpZj0oKT0+Q28obC51c2VWYWx1ZSk7ZWxzZSBpZihmdW5jdGlvbiBPQShsKXtyZXR1cm4hKCFsfHwhbC51c2VGYWN0b3J5KX0obCkpZj0oKT0+bC51c2VGYWN0b3J5KC4uLnJjKGwuZGVwc3x8W10pKTtlbHNlIGlmKGZ1bmN0aW9uIFRBKGwpe3JldHVybiEoIWx8fCFs''@;'; put 'put ''LnVzZUV4aXN0aW5nKX0obCkpZj0oKT0+c3IoQ28obC51c2VFeGlzdGluZykpO2Vsc2V7Y29uc3QgZD1DbyhsJiYobC51c2VDbGFzc3x8bC5wcm92aWRlKSk7aWYoIWZ1bmN0aW9uIGNOKGwpe3JldHVybiEhbC5kZXBzfShsKSlyZXR1cm4gYWYoZCl8fFdfKGQpO2Y9KCk9Pm5ldyBkKC4uLnJj''@;'; put 'put ''KGwuZGVwcykpfXJldHVybiBmfWZ1bmN0aW9uIElwKGwsYyxhPSExKXtyZXR1cm57ZmFjdG9yeTpsLHZhbHVlOmMsbXVsdGk6YT9bXTp2b2lkIDB9fWZ1bmN0aW9uIEdfKGwsYyl7Zm9yKGNvbnN0IGEgb2YgbClBcnJheS5pc0FycmF5KGEpP0dfKGEsYyk6YSYmWGQoYSk/R18oYS5cdTAyNzVw''@;'; put 'put ''cm92aWRlcnMsYyk6YyhhKX1jb25zdCBOOD1uZXcgTWkoIkFwcElkIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+aE59KSxoTj0ibmciLElBPW5ldyBNaSgiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxxYT1uZXcgTWkoIlBsYXRmb3JtIElEIix7cHJvdmlkZWRJbjoicGxhdGZvcm0i''@;'; put 'put ''LGZhY3Rvcnk6KCk9PiJ1bmtub3duIn0pLFJBPW5ldyBNaSgiQW5pbWF0aW9uTW9kdWxlVHlwZSIpLFY4PW5ldyBNaSgiQ1NQIG5vbmNlIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+R20oKS5ib2R5Py5xdWVyeVNlbGVjdG9yKCJbbmdDc3BOb25jZV0iKT8uZ2V0QXR0cmlidXRl''@;'; put 'put ''KCJuZ0NzcE5vbmNlIil8fG51bGx9KTtsZXQgUEE9KGwsYyk9Pm51bGw7ZnVuY3Rpb24gSEEobCxjKXtyZXR1cm4gUEEobCxjKX1jbGFzcyBCQXt9Y2xhc3MgakF7fWNsYXNzIEZwe3Jlc29sdmVDb21wb25lbnRGYWN0b3J5KGMpe3Rocm93IGZ1bmN0aW9uIG53KGwpe2NvbnN0IGM9RXJyb3Io''@;'; put 'put ''YE5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAke0tsKGwpfS5gKTtyZXR1cm4gYy5uZ0NvbXBvbmVudD1sLGN9KGMpfX1sZXQgYzE9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuTlVMTD1uZXcgRnAsbH0pKCk7ZnVuY3Rpb24gcncoKXtyZXR1cm4gdWQoRHUoKSxRcigpKX1mdW5jdGlv''@;'; put 'put ''biB1ZChsLGMpe3JldHVybiBuZXcgVmkoV3MobCxjKSl9bGV0IFZpPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5uYXRpdmVFbGVtZW50PWF9fXJldHVybiBsLl9fTkdfRUxFTUVOVF9JRF9fPXJ3LGx9KSgpO2Z1bmN0aW9uIEkyKGwpe3JldHVybiBsIGluc3RhbmNlb2YgVmk/''@;'; put 'put ''bC5uYXRpdmVFbGVtZW50Omx9Y2xhc3MgSHB7fWxldCBqbz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5kZXN0cm95Tm9kZT1udWxsfX1yZXR1cm4gbC5fX05HX0VMRU1FTlRfSURfXz0oKT0+ZnVuY3Rpb24gd2MoKXtjb25zdCBsPVFyKCksYT1idChEdSgpLmluZGV4LGwpO3Jl''@;'; put 'put ''dHVybihPdShhKT9hOmwpW1pvXX0oKSxsfSkoKSxZOD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm51bGx9KSxsfSkoKTtjbGFzcyByZ3tjb25zdHJ1Y3RvcihjKXt0aGlzLmZ1bGw9Yyx0aGlzLm1h''@;'; put 'put ''am9yPWMuc3BsaXQoIi4iKVswXSx0aGlzLm1pbm9yPWMuc3BsaXQoIi4iKVsxXSx0aGlzLnBhdGNoPWMuc3BsaXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9fWNvbnN0IHlOPW5ldyByZygiMTYuMS42IiksaXc9e307ZnVuY3Rpb24gaWcobCl7Zm9yKDtsOyl7bFtQb118PTY0O2NvbnN0IGM9''@;'; put 'put ''am0obCk7aWYoQ20obCkmJiFjKXJldHVybiBsO2w9Y31yZXR1cm4gbnVsbH1mdW5jdGlvbiBvdyhsKXtyZXR1cm4gbC5uZ09yaWdpbmFsRXJyb3J9Y2xhc3MgUjJ7Y29uc3RydWN0b3IoKXt0aGlzLl9jb25zb2xlPWNvbnNvbGV9aGFuZGxlRXJyb3IoYyl7Y29uc3QgYT10aGlzLl9maW5kT3Jp''@;'; put 'put ''Z2luYWxFcnJvcihjKTt0aGlzLl9jb25zb2xlLmVycm9yKCJFUlJPUiIsYyksYSYmdGhpcy5fY29uc29sZS5lcnJvcigiT1JJR0lOQUwgRVJST1IiLGEpfV9maW5kT3JpZ2luYWxFcnJvcihjKXtsZXQgYT1jJiZvdyhjKTtmb3IoO2EmJm93KGEpOylhPW93KGEpO3JldHVybiBhfHxudWxsfX1j''@;'; put 'put ''b25zdCBsdz1uZXcgTWkoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PiExfSk7ZnVuY3Rpb24gRzgobCl7cmV0dXJuIGwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld31mdW5jdGlvbiBMMihsKXtyZXR1cm4gbC5vd25lckRvY3VtZW50fWZ1bmN0aW9uIHN3KGwpe3JldHVybiBs''@;'; put 'put ''Lm93bmVyRG9jdW1lbnQuYm9keX1mdW5jdGlvbiBjZChsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2woKTpsfWNsYXNzICQ4IGV4dGVuZHMgdXB7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29uc3VtZXJBbGxvd1NpZ25hbFdyaXRlcz0hMSx0aGlzLl9s''@;'; put 'put ''Vmlldz1udWxsfXNldCBsVmlldyhjKXt0aGlzLl9sVmlldz1jfW9uQ29uc3VtZXJEZXBlbmRlbmN5TWF5SGF2ZUNoYW5nZWQoKXtpZyh0aGlzLl9sVmlldyl9b25Qcm9kdWNlclVwZGF0ZVZhbHVlVmVyc2lvbigpe31nZXQgaGFzUmVhZEFTaWduYWwoKXtyZXR1cm4gdGhpcy5oYXNQcm9kdWNl''@;'; put 'put ''cnN9cnVuSW5Db250ZXh0KGMsYSxmKXtjb25zdCBkPWJzKHRoaXMpO3RoaXMudHJhY2tpbmdWZXJzaW9uKys7dHJ5e2MoYSxmKX1maW5hbGx5e2JzKGQpfX1kZXN0cm95KCl7dGhpcy50cmFja2luZ1ZlcnNpb24rK319bGV0IEs4PW51bGw7ZnVuY3Rpb24gJEEoKXtyZXR1cm4gSzg/Pz1uZXcg''@;'; put 'put ''JDgsSzh9ZnVuY3Rpb24gS0EobCxjKXtyZXR1cm4gbFtjXT8/JEEoKX1mdW5jdGlvbiBxQShsLGMpe2NvbnN0IGE9JEEoKTthLmhhc1JlYWRBU2lnbmFsJiYobFtjXT1LOCxhLmxWaWV3PWwsSzg9bmV3ICQ4KX1jb25zdCBxbz17fTtmdW5jdGlvbiBTZShsKXt1dyhJYSgpLFFyKCksbGMoKSts''@;'; put 'put ''LCExKX1mdW5jdGlvbiB1dyhsLGMsYSxmKXtpZighZilpZigzPT0oMyZjW1BvXSkpe2NvbnN0IGg9bC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PWgmJm84KGMsaCxhKX1lbHNle2NvbnN0IGg9bC5wcmVPcmRlckhvb2tzO251bGwhPT1oJiZhOChjLGgsMCxhKX1fMihhKX1mdW5jdGlvbiBj''@;'; put 'put ''dyhsLGM9bnVsbCxhPW51bGwsZil7Y29uc3QgZD1mdyhsLGMsYSxmKTtyZXR1cm4gZC5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKSxkfWZ1bmN0aW9uIGZ3KGwsYz1udWxsLGE9bnVsbCxmLGQ9bmV3IFNldCl7Y29uc3QgaD1bYXx8eGEsb04obCldO3JldHVybiBmPWZ8fCgib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIGw/dm9pZCAwOktsKGwpKSxuZXcgWV8oaCxjfHxIOCgpLGZ8fG51bGwsZCl9bGV0IEFsPSgoKT0+e2NsYXNzIGx7c3RhdGljIGNyZWF0ZShhLGYpe2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGN3KHtuYW1lOiIifSxmLGEsIiIpO3tjb25zdCBkPWEubmFtZT8/IiI7cmV0''@;'; put 'put ''dXJuIGN3KHtuYW1lOmR9LGEucGFyZW50LGEucHJvdmlkZXJzLGQpfX19cmV0dXJuIGwuVEhST1dfSUZfTk9UX0ZPVU5EPXYwLGwuTlVMTD1uZXcgRUEsbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+c3IoTUEpfSksbC5fX05HX0VMRU1FTlRf''@;'; put 'put ''SURfXz0tMSxsfSkoKTtmdW5jdGlvbiBydChsLGM9YWEuRGVmYXVsdCl7Y29uc3QgYT1RcigpO3JldHVybiBudWxsPT09YT9zcihsLGMpOkx4KER1KCksYSxDbyhsKSxjKX1mdW5jdGlvbiBxOChsLGMsYSxmLGQsaCxtLF8sTyxYLGFlKXtjb25zdCBwZT1jLmJsdWVwcmludC5zbGljZSgpO3Jl''@;'; put 'put ''dHVybiBwZVtOaV09ZCxwZVtQb109MTQwfGYsKG51bGwhPT1YfHxsJiYyMDQ4JmxbUG9dKSYmKHBlW1BvXXw9MjA0OCksU28ocGUpLHBlW2ZsXT1wZVtVc109bCxwZVtCbF09YSxwZVtRMV09bXx8bCYmbFtRMV0scGVbWm9dPV98fGwmJmxbWm9dLHBlW3FmXT1PfHxsJiZsW3FmXXx8bnVsbCxw''@;'; put 'put ''ZVtHb109aCxwZVt2Ml09ZnVuY3Rpb24gcGgoKXtyZXR1cm4gX18rK30oKSxwZVt3MF09YWUscGVbZWZdPVgscGVbSmxdPTI9PWMudHlwZT9sW0psXTpwZSxwZX1mdW5jdGlvbiBWcChsLGMsYSxmLGQpe2xldCBoPWwuZGF0YVtjXTtpZihudWxsPT09aCloPWZ1bmN0aW9uIGR3KGwsYyxhLGYs''@;'; put 'put ''ZCl7Y29uc3QgaD1weCgpLG09dF8oKSxPPWwuZGF0YVtjXT1mdW5jdGlvbiBKOChsLGMsYSxmLGQsaCl7bGV0IG09Yz9jLmluamVjdG9ySW5kZXg6LTEsXz0wO3JldHVybiBocCgpJiYoX3w9MTI4KSx7dHlwZTphLGluZGV4OmYsaW5zZXJ0QmVmb3JlSW5kZXg6bnVsbCxpbmplY3RvckluZGV4''@;'; put 'put ''Om0sZGlyZWN0aXZlU3RhcnQ6LTEsZGlyZWN0aXZlRW5kOi0xLGRpcmVjdGl2ZVN0eWxpbmdMYXN0Oi0xLGNvbXBvbmVudE9mZnNldDotMSxwcm9wZXJ0eUJpbmRpbmdzOm51bGwsZmxhZ3M6Xyxwcm92aWRlckluZGV4ZXM6MCx2YWx1ZTpkLGF0dHJzOmgsbWVyZ2VkQXR0cnM6bnVsbCxsb2Nh''@;'; put 'put ''bE5hbWVzOm51bGwsaW5pdGlhbElucHV0czp2b2lkIDAsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLHRWaWV3Om51bGwsbmV4dDpudWxsLHByZXY6bnVsbCxwcm9qZWN0aW9uTmV4dDpudWxsLGNoaWxkOm51bGwscGFyZW50OmMscHJvamVjdGlvbjpudWxsLHN0eWxlczpudWxsLHN0eWxlc1dp''@;'; put 'put ''dGhvdXRIb3N0Om51bGwscmVzaWR1YWxTdHlsZXM6dm9pZCAwLGNsYXNzZXM6bnVsbCxjbGFzc2VzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbENsYXNzZXM6dm9pZCAwLGNsYXNzQmluZGluZ3M6MCxzdHlsZUJpbmRpbmdzOjB9fSgwLG0/aDpoJiZoLnBhcmVudCxhLGMsZixkKTtyZXR1cm4g''@;'; put 'put ''bnVsbD09PWwuZmlyc3RDaGlsZCYmKGwuZmlyc3RDaGlsZD1PKSxudWxsIT09aCYmKG0/bnVsbD09aC5jaGlsZCYmbnVsbCE9PU8ucGFyZW50JiYoaC5jaGlsZD1PKTpudWxsPT09aC5uZXh0JiYoaC5uZXh0PU8sTy5wcmV2PWgpKSxPfShsLGMsYSxmLGQpLGZ1bmN0aW9uIFZGKCl7cmV0dXJu''@;'; put 'put ''IEJvLmxGcmFtZS5pbkkxOG59KCkmJihoLmZsYWdzfD0zMik7ZWxzZSBpZig2NCZoLnR5cGUpe2gudHlwZT1hLGgudmFsdWU9ZixoLmF0dHJzPWQ7Y29uc3QgbT1mdW5jdGlvbiBUbSgpe2NvbnN0IGw9Qm8ubEZyYW1lLGM9bC5jdXJyZW50VE5vZGU7cmV0dXJuIGwuaXNQYXJlbnQ/YzpjLnBh''@;'; put 'put ''cmVudH0oKTtoLmluamVjdG9ySW5kZXg9bnVsbD09PW0/LTE6bS5pbmplY3RvckluZGV4fXJldHVybiBsZihoLCEwKSxofWZ1bmN0aW9uIG9nKGwsYyxhLGYpe2lmKDA9PT1hKXJldHVybi0xO2NvbnN0IGQ9Yy5sZW5ndGg7Zm9yKGxldCBoPTA7aDxhO2grKyljLnB1c2goZiksbC5ibHVlcHJp''@;'; put 'put ''bnQucHVzaChmKSxsLmRhdGEucHVzaChudWxsKTtyZXR1cm4gZH1mdW5jdGlvbiBpVChsLGMsYSxmLGQpe2NvbnN0IGg9S0EoYyxhcCksbT1sYygpLF89MiZmO3RyeXtpZihfMigtMSksXyYmYy5sZW5ndGg+eWEmJnV3KGwsYyx5YSwhMSksUzAoXz8yOjAsZCksXyloLnJ1bkluQ29udGV4dChh''@;'; put 'put ''LGYsZCk7ZWxzZXtjb25zdCBYPWJzKG51bGwpO3RyeXthKGYsZCl9ZmluYWxseXticyhYKX19fWZpbmFsbHl7XyYmbnVsbD09PWNbYXBdJiZxQShjLGFwKSxfMihtKSxTMChfPzM6MSxkKX19ZnVuY3Rpb24gaHcobCxjLGEpe2lmKEpmKGMpKXtjb25zdCBmPWJzKG51bGwpO3RyeXtjb25zdCBo''@;'; put 'put ''PWMuZGlyZWN0aXZlRW5kO2ZvcihsZXQgbT1jLmRpcmVjdGl2ZVN0YXJ0O208aDttKyspe2NvbnN0IF89bC5kYXRhW21dO18uY29udGVudFF1ZXJpZXMmJl8uY29udGVudFF1ZXJpZXMoMSxhW21dLG0pfX1maW5hbGx5e2JzKGYpfX19ZnVuY3Rpb24gcHcobCxjLGEpe2h4KCkmJihmdW5jdGlv''@;'; put 'put ''biBQTihsLGMsYSxmKXtjb25zdCBkPWEuZGlyZWN0aXZlU3RhcnQsaD1hLmRpcmVjdGl2ZUVuZDtuZihhKSYmZnVuY3Rpb24gek4obCxjLGEpe2NvbnN0IGY9V3MoYyxsKSxkPW9UKGEpO2xldCBtPTE2O2Euc2lnbmFscz9tPTQwOTY6YS5vblB1c2gmJihtPTY0KTtjb25zdCBfPWV2KGwscTgo''@;'; put 'put ''bCxkLG51bGwsbSxmLGMsbnVsbCxsW1ExXS5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIoZixhKSxudWxsLG51bGwsbnVsbCkpO2xbYy5pbmRleF09X30oYyxhLGwuZGF0YVtkK2EuY29tcG9uZW50T2Zmc2V0XSksbC5maXJzdENyZWF0ZVBhc3N8fHU4KGEsYyksV3UoZixjKTtjb25z''@;'; put 'put ''dCBtPWEuaW5pdGlhbElucHV0cztmb3IobGV0IF89ZDtfPGg7XysrKXtjb25zdCBPPWwuZGF0YVtfXSxYPUMyKGMsbCxfLGEpO1d1KFgsYyksbnVsbCE9PW0mJlVOKDAsXy1kLFgsTywwLG0pLGFjKE8pJiYoYnQoYS5pbmRleCxjKVtCbF09QzIoYyxsLF8sYSkpfX0obCxjLGEsV3MoYSxjKSks''@;'; put 'put ''NjQ9PSg2NCZhLmZsYWdzKSYmZlQobCxjLGEpKX1mdW5jdGlvbiBYOChsLGMsYT1Xcyl7Y29uc3QgZj1jLmxvY2FsTmFtZXM7aWYobnVsbCE9PWYpe2xldCBkPWMuaW5kZXgrMTtmb3IobGV0IGg9MDtoPGYubGVuZ3RoO2grPTIpe2NvbnN0IG09ZltoKzFdLF89LTE9PT1tP2EoYyxsKTpsW21d''@;'; put 'put ''O2xbZCsrXT1ffX19ZnVuY3Rpb24gb1QobCl7Y29uc3QgYz1sLnRWaWV3O3JldHVybiBudWxsPT09Y3x8Yy5pbmNvbXBsZXRlRmlyc3RQYXNzP2wudFZpZXc9QnAoMSxudWxsLGwudGVtcGxhdGUsbC5kZWNscyxsLnZhcnMsbC5kaXJlY3RpdmVEZWZzLGwucGlwZURlZnMsbC52aWV3UXVlcnks''@;'; put 'put ''bC5zY2hlbWFzLGwuY29uc3RzLGwuaWQpOmN9ZnVuY3Rpb24gQnAobCxjLGEsZixkLGgsbSxfLE8sWCxhZSl7Y29uc3QgcGU9eWErZixiZT1wZStkLHhlPWZ1bmN0aW9uIGFUKGwsYyl7Y29uc3QgYT1bXTtmb3IobGV0IGY9MDtmPGM7ZisrKWEucHVzaChmPGw/bnVsbDpxbyk7cmV0dXJuIGF9''@;'; put 'put ''KHBlLGJlKSxWZT0iZnVuY3Rpb24iPT10eXBlb2YgWD9YKCk6WDtyZXR1cm4geGVbamldPXt0eXBlOmwsYmx1ZXByaW50OnhlLHRlbXBsYXRlOmEscXVlcmllczpudWxsLHZpZXdRdWVyeTpfLGRlY2xUTm9kZTpjLGRhdGE6eGUuc2xpY2UoKS5maWxsKG51bGwscGUpLGJpbmRpbmdTdGFydElu''@;'; put 'put ''ZGV4OnBlLGV4cGFuZG9TdGFydEluZGV4OmJlLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hl''@;'; put 'put ''Y2tIb29rczpudWxsLGNvbnRlbnRIb29rczpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZl''@;'; put 'put ''UmVnaXN0cnk6ImZ1bmN0aW9uIj09dHlwZW9mIGg/aCgpOmgscGlwZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiBtP20oKTptLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOk8sY29uc3RzOlZlLGluY29tcGxldGVGaXJzdFBhc3M6ITEsc3NySWQ6YWV9fWxldCBtdz1sPT5udWxsO2Z1bmN0''@;'; put 'put ''aW9uIFAyKGwsYyxhLGYpe2ZvcihsZXQgZCBpbiBsKWlmKGwuaGFzT3duUHJvcGVydHkoZCkpe2E9bnVsbD09PWE/e306YTtjb25zdCBoPWxbZF07bnVsbD09PWY/UTgoYSxjLGQsaCk6Zi5oYXNPd25Qcm9wZXJ0eShkKSYmUTgoYSxjLGZbZF0saCl9cmV0dXJuIGF9ZnVuY3Rpb24gUTgobCxj''@;'; put 'put ''LGEsZil7bC5oYXNPd25Qcm9wZXJ0eShhKT9sW2FdLnB1c2goYyxmKTpsW2FdPVtjLGZdfWZ1bmN0aW9uIFpjKGwsYyxhLGYsZCxoLG0sXyl7Y29uc3QgTz1XcyhjLGEpO2xldCBhZSxYPWMuaW5wdXRzOyFfJiZudWxsIT1YJiYoYWU9WFtmXSk/KF93KGwsYSxhZSxmLGQpLG5mKGMpJiZmdW5j''@;'; put 'put ''dGlvbiBETihsLGMpe2NvbnN0IGE9YnQoYyxsKTsxNiZhW1BvXXx8KGFbUG9dfD02NCl9KGEsYy5pbmRleCkpOjMmYy50eXBlJiYoZj1mdW5jdGlvbiBjVChsKXtyZXR1cm4iY2xhc3MiPT09bD8iY2xhc3NOYW1lIjoiZm9yIj09PWw/Imh0bWxGb3IiOiJmb3JtYWN0aW9uIj09PWw/ImZvcm1B''@;'; put 'put ''Y3Rpb24iOiJpbm5lckh0bWwiPT09bD8iaW5uZXJIVE1MIjoicmVhZG9ubHkiPT09bD8icmVhZE9ubHkiOiJ0YWJpbmRleCI9PT1sPyJ0YWJJbmRleCI6bH0oZiksZD1udWxsIT1tP20oZCxjLnZhbHVlfHwiIixmKTpkLGguc2V0UHJvcGVydHkoTyxmLGQpKX1mdW5jdGlvbiBndyhsLGMsYSxm''@;'; put 'put ''KXtpZihoeCgpKXtjb25zdCBkPW51bGw9PT1mP251bGw6eyIiOi0xfSxoPWZ1bmN0aW9uIEhOKGwsYyl7Y29uc3QgYT1sLmRpcmVjdGl2ZVJlZ2lzdHJ5O2xldCBmPW51bGwsZD1udWxsO2lmKGEpZm9yKGxldCBoPTA7aDxhLmxlbmd0aDtoKyspe2NvbnN0IG09YVtoXTtpZihobShjLG0uc2Vs''@;'; put 'put ''ZWN0b3JzLCExKSlpZihmfHwoZj1bXSksYWMobSkpaWYobnVsbCE9PW0uZmluZEhvc3REaXJlY3RpdmVEZWZzKXtjb25zdCBfPVtdO2Q9ZHx8bmV3IE1hcCxtLmZpbmRIb3N0RGlyZWN0aXZlRGVmcyhtLF8sZCksZi51bnNoaWZ0KC4uLl8sbSksdncobCxjLF8ubGVuZ3RoKX1lbHNlIGYudW5z''@;'; put 'put ''aGlmdChtKSx2dyhsLGMsMCk7ZWxzZSBkPWR8fG5ldyBNYXAsbS5maW5kSG9zdERpcmVjdGl2ZURlZnM/LihtLGYsZCksZi5wdXNoKG0pfXJldHVybiBudWxsPT09Zj9udWxsOltmLGRdfShsLGEpO2xldCBtLF87bnVsbD09PWg/bT1fPW51bGw6W20sX109aCxudWxsIT09bSYmYWcobCxjLGEs''@;'; put 'put ''bSxkLF8pLGQmJmZ1bmN0aW9uIE5OKGwsYyxhKXtpZihjKXtjb25zdCBmPWwubG9jYWxOYW1lcz1bXTtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrPTIpe2NvbnN0IGg9YVtjW2QrMV1dO2lmKG51bGw9PWgpdGhyb3cgbmV3IElyKC0zMDEsITEpO2YucHVzaChjW2RdLGgpfX19KGEsZixkKX1h''@;'; put 'put ''Lm1lcmdlZEF0dHJzPXAyKGEubWVyZ2VkQXR0cnMsYS5hdHRycyl9ZnVuY3Rpb24gYWcobCxjLGEsZixkLGgpe2ZvcihsZXQgWD0wO1g8Zi5sZW5ndGg7WCsrKWZfKHU4KGEsYyksbCxmW1hdLnR5cGUpOyFmdW5jdGlvbiBCTihsLGMsYSl7bC5mbGFnc3w9MSxsLmRpcmVjdGl2ZVN0YXJ0PWMs''@;'; put 'put ''bC5kaXJlY3RpdmVFbmQ9YythLGwucHJvdmlkZXJJbmRleGVzPWN9KGEsbC5kYXRhLmxlbmd0aCxmLmxlbmd0aCk7Zm9yKGxldCBYPTA7WDxmLmxlbmd0aDtYKyspe2NvbnN0IGFlPWZbWF07YWUucHJvdmlkZXJzUmVzb2x2ZXImJmFlLnByb3ZpZGVyc1Jlc29sdmVyKGFlKX1sZXQgbT0hMSxf''@;'; put 'put ''PSExLE89b2cobCxjLGYubGVuZ3RoLG51bGwpO2ZvcihsZXQgWD0wO1g8Zi5sZW5ndGg7WCsrKXtjb25zdCBhZT1mW1hdO2EubWVyZ2VkQXR0cnM9cDIoYS5tZXJnZWRBdHRycyxhZS5ob3N0QXR0cnMpLGpOKGwsYSxjLE8sYWUpLFZOKE8sYWUsZCksbnVsbCE9PWFlLmNvbnRlbnRRdWVyaWVz''@;'; put 'put ''JiYoYS5mbGFnc3w9NCksKG51bGwhPT1hZS5ob3N0QmluZGluZ3N8fG51bGwhPT1hZS5ob3N0QXR0cnN8fDAhPT1hZS5ob3N0VmFycykmJihhLmZsYWdzfD02NCk7Y29uc3QgcGU9YWUudHlwZS5wcm90b3R5cGU7IW0mJihwZS5uZ09uQ2hhbmdlc3x8cGUubmdPbkluaXR8fHBlLm5nRG9DaGVj''@;'; put 'put ''aykmJigobC5wcmVPcmRlckhvb2tzPz89W10pLnB1c2goYS5pbmRleCksbT0hMCksIV8mJihwZS5uZ09uQ2hhbmdlc3x8cGUubmdEb0NoZWNrKSYmKChsLnByZU9yZGVyQ2hlY2tIb29rcz8/PVtdKS5wdXNoKGEuaW5kZXgpLF89ITApLE8rK30hZnVuY3Rpb24gT04obCxjLGEpe2NvbnN0IGQ9''@;'; put 'put ''Yy5kaXJlY3RpdmVFbmQsaD1sLmRhdGEsbT1jLmF0dHJzLF89W107bGV0IE89bnVsbCxYPW51bGw7Zm9yKGxldCBhZT1jLmRpcmVjdGl2ZVN0YXJ0O2FlPGQ7YWUrKyl7Y29uc3QgcGU9aFthZV0sYmU9YT9hLmdldChwZSk6bnVsbCxWZT1iZT9iZS5vdXRwdXRzOm51bGw7Tz1QMihwZS5pbnB1''@;'; put 'put ''dHMsYWUsTyxiZT9iZS5pbnB1dHM6bnVsbCksWD1QMihwZS5vdXRwdXRzLGFlLFgsVmUpO2NvbnN0IFplPW51bGw9PT1PfHxudWxsPT09bXx8bnAoYyk/bnVsbDpaTihPLGFlLG0pO18ucHVzaChaZSl9bnVsbCE9PU8mJihPLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoYy5mbGFnc3w9OCks''@;'; put 'put ''Ty5oYXNPd25Qcm9wZXJ0eSgic3R5bGUiKSYmKGMuZmxhZ3N8PTE2KSksYy5pbml0aWFsSW5wdXRzPV8sYy5pbnB1dHM9TyxjLm91dHB1dHM9WH0obCxhLGgpfWZ1bmN0aW9uIGZUKGwsYyxhKXtjb25zdCBmPWEuZGlyZWN0aXZlU3RhcnQsZD1hLmRpcmVjdGl2ZUVuZCxoPWEuaW5kZXgsbT1m''@;'; put 'put ''dW5jdGlvbiB2eCgpe3JldHVybiBCby5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4fSgpO3RyeXtfMihoKTtmb3IobGV0IF89ZjtfPGQ7XysrKXtjb25zdCBPPWwuZGF0YVtfXSxYPWNbX107dDgoXyksKG51bGwhPT1PLmhvc3RCaW5kaW5nc3x8MCE9PU8uaG9zdFZhcnN8fG51bGwhPT1P''@;'; put 'put ''Lmhvc3RBdHRycykmJkZOKE8sWCl9fWZpbmFsbHl7XzIoLTEpLHQ4KG0pfX1mdW5jdGlvbiBGTihsLGMpe251bGwhPT1sLmhvc3RCaW5kaW5ncyYmbC5ob3N0QmluZGluZ3MoMSxjKX1mdW5jdGlvbiB2dyhsLGMsYSl7Yy5jb21wb25lbnRPZmZzZXQ9YSwobC5jb21wb25lbnRzPz89W10pLnB1''@;'; put 'put ''c2goYy5pbmRleCl9ZnVuY3Rpb24gVk4obCxjLGEpe2lmKGEpe2lmKGMuZXhwb3J0QXMpZm9yKGxldCBmPTA7ZjxjLmV4cG9ydEFzLmxlbmd0aDtmKyspYVtjLmV4cG9ydEFzW2ZdXT1sO2FjKGMpJiYoYVsiIl09bCl9fWZ1bmN0aW9uIGpOKGwsYyxhLGYsZCl7bC5kYXRhW2ZdPWQ7Y29uc3Qg''@;'; put 'put ''aD1kLmZhY3Rvcnl8fChkLmZhY3Rvcnk9YWYoZC50eXBlKSksbT1uZXcgT20oaCxhYyhkKSxydCk7bC5ibHVlcHJpbnRbZl09bSxhW2ZdPW0sZnVuY3Rpb24gUk4obCxjLGEsZixkKXtjb25zdCBoPWQuaG9zdEJpbmRpbmdzO2lmKGgpe2xldCBtPWwuaG9zdEJpbmRpbmdPcENvZGVzO251bGw9''@;'; put 'put ''PT1tJiYobT1sLmhvc3RCaW5kaW5nT3BDb2Rlcz1bXSk7Y29uc3QgXz1+Yy5pbmRleDsoZnVuY3Rpb24gTE4obCl7bGV0IGM9bC5sZW5ndGg7Zm9yKDtjPjA7KXtjb25zdCBhPWxbLS1jXTtpZigibnVtYmVyIj09dHlwZW9mIGEmJmE8MClyZXR1cm4gYX1yZXR1cm4gMH0pKG0pIT1fJiZtLnB1''@;'; put 'put ''c2goXyksbS5wdXNoKGEsZixoKX19KGwsYyxmLG9nKGwsYSxkLmhvc3RWYXJzLHFvKSxkKX1mdW5jdGlvbiB2ZihsLGMsYSxmLGQsaCl7Y29uc3QgbT1XcyhsLGMpOyFmdW5jdGlvbiB5dyhsLGMsYSxmLGQsaCxtKXtpZihudWxsPT1oKWwucmVtb3ZlQXR0cmlidXRlKGMsZCxhKTtlbHNle2Nv''@;'; put 'put ''bnN0IF89bnVsbD09bT9JbyhoKTptKGgsZnx8IiIsZCk7bC5zZXRBdHRyaWJ1dGUoYyxkLF8sYSl9fShjW1pvXSxtLGgsbC52YWx1ZSxhLGYsZCl9ZnVuY3Rpb24gVU4obCxjLGEsZixkLGgpe2NvbnN0IG09aFtjXTtpZihudWxsIT09bSlmb3IobGV0IF89MDtfPG0ubGVuZ3RoOylkVChmLGEs''@;'; put 'put ''bVtfKytdLG1bXysrXSxtW18rK10pfWZ1bmN0aW9uIGRUKGwsYyxhLGYsZCl7Y29uc3QgaD1icyhudWxsKTt0cnl7Y29uc3QgbT1sLmlucHV0VHJhbnNmb3JtcztudWxsIT09bSYmbS5oYXNPd25Qcm9wZXJ0eShmKSYmKGQ9bVtmXS5jYWxsKGMsZCkpLG51bGwhPT1sLnNldElucHV0P2wuc2V0''@;'; put 'put ''SW5wdXQoYyxkLGEsZik6Y1tmXT1kfWZpbmFsbHl7YnMoaCl9fWZ1bmN0aW9uIFpOKGwsYyxhKXtsZXQgZj1udWxsLGQ9MDtmb3IoO2Q8YS5sZW5ndGg7KXtjb25zdCBoPWFbZF07aWYoMCE9PWgpaWYoNSE9PWgpe2lmKCJudW1iZXIiPT10eXBlb2YgaClicmVhaztpZihsLmhhc093blByb3Bl''@;'; put 'put ''cnR5KGgpKXtudWxsPT09ZiYmKGY9W10pO2NvbnN0IG09bFtoXTtmb3IobGV0IF89MDtfPG0ubGVuZ3RoO18rPTIpaWYobVtfXT09PWMpe2YucHVzaChoLG1bXysxXSxhW2QrMV0pO2JyZWFrfX1kKz0yfWVsc2UgZCs9MjtlbHNlIGQrPTR9cmV0dXJuIGZ9ZnVuY3Rpb24gaFQobCxjLGEsZil7''@;'; put 'put ''cmV0dXJuW2wsITAsITEsYyxudWxsLDAsZixhLG51bGwsbnVsbCxudWxsXX1mdW5jdGlvbiBwVChsLGMpe2NvbnN0IGE9bC5jb250ZW50UXVlcmllcztpZihudWxsIT09YSlmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrPTIpe2NvbnN0IGg9YVtmKzFdO2lmKC0xIT09aCl7Y29uc3QgbT1sLmRh''@;'; put 'put ''dGFbaF07aV8oYVtmXSksbS5jb250ZW50UXVlcmllcygyLGNbaF0saCl9fX1mdW5jdGlvbiBldihsLGMpe3JldHVybiBsW2cyXT9sW19tXVtYbF09YzpsW2cyXT1jLGxbX21dPWMsY31mdW5jdGlvbiBidyhsLGMsYSl7aV8oMCk7Y29uc3QgZj1icyhudWxsKTt0cnl7YyhsLGEpfWZpbmFsbHl7''@;'; put 'put ''YnMoZil9fWZ1bmN0aW9uIG1UKGwpe3JldHVybiBsW05jXXx8KGxbTmNdPVtdKX1mdW5jdGlvbiBnVChsKXtyZXR1cm4gbC5jbGVhbnVwfHwobC5jbGVhbnVwPVtdKX1mdW5jdGlvbiB2VChsLGMsYSl7cmV0dXJuKG51bGw9PT1sfHxhYyhsKSkmJihhPWZ1bmN0aW9uIEFtKGwpe2Zvcig7QXJy''@;'; put 'put ''YXkuaXNBcnJheShsKTspe2lmKCJvYmplY3QiPT10eXBlb2YgbFt3bV0pcmV0dXJuIGw7bD1sW05pXX1yZXR1cm4gbnVsbH0oYVtjLmluZGV4XSkpLGFbWm9dfWZ1bmN0aW9uIHlUKGwsYyl7Y29uc3QgYT1sW3FmXSxmPWE/YS5nZXQoUjIsbnVsbCk6bnVsbDtmJiZmLmhhbmRsZUVycm9yKGMp''@;'; put 'put ''fWZ1bmN0aW9uIF93KGwsYyxhLGYsZCl7Zm9yKGxldCBoPTA7aDxhLmxlbmd0aDspe2NvbnN0IG09YVtoKytdLF89YVtoKytdO2RUKGwuZGF0YVttXSxjW21dLGYsXyxkKX19ZnVuY3Rpb24gZmQobCxjLGEpe2NvbnN0IGY9bzEoYyxsKTshZnVuY3Rpb24gbkEobCxjLGEpe2wuc2V0VmFsdWUo''@;'; put 'put ''YyxhKX0obFtab10sZixhKX1mdW5jdGlvbiBZTihsLGMpe2NvbnN0IGE9YnQoYyxsKSxmPWFbamldOyFmdW5jdGlvbiBXTihsLGMpe2ZvcihsZXQgYT1jLmxlbmd0aDthPGwuYmx1ZXByaW50Lmxlbmd0aDthKyspYy5wdXNoKGwuYmx1ZXByaW50W2FdKX0oZixhKTtjb25zdCBkPWFbTmldO251''@;'; put 'put ''bGwhPT1kJiZudWxsPT09YVt3MF0mJihhW3cwXT1IQShkLGFbcWZdKSksd3coZixhLGFbQmxdKX1mdW5jdGlvbiB3dyhsLGMsYSl7b18oYyk7dHJ5e2NvbnN0IGY9bC52aWV3UXVlcnk7bnVsbCE9PWYmJmJ3KDEsZixhKTtjb25zdCBkPWwudGVtcGxhdGU7bnVsbCE9PWQmJmlUKGwsYyxkLDEs''@;'; put 'put ''YSksbC5maXJzdENyZWF0ZVBhc3MmJihsLmZpcnN0Q3JlYXRlUGFzcz0hMSksbC5zdGF0aWNDb250ZW50UXVlcmllcyYmcFQobCxjKSxsLnN0YXRpY1ZpZXdRdWVyaWVzJiZidygyLGwudmlld1F1ZXJ5LGEpO2NvbnN0IGg9bC5jb21wb25lbnRzO251bGwhPT1oJiZmdW5jdGlvbiBiVChsLGMp''@;'; put 'put ''e2ZvcihsZXQgYT0wO2E8Yy5sZW5ndGg7YSsrKVlOKGwsY1thXSl9KGMsaCl9Y2F0Y2goZil7dGhyb3cgbC5maXJzdENyZWF0ZVBhc3MmJihsLmluY29tcGxldGVGaXJzdFBhc3M9ITAsbC5maXJzdENyZWF0ZVBhc3M9ITEpLGZ9ZmluYWxseXtjW1BvXSY9LTUsbjgoKX19bGV0IF9UPSgoKT0+''@;'; put 'put ''e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmFsbD1uZXcgU2V0LHRoaXMucXVldWU9bmV3IE1hcH1jcmVhdGUoYSxmLGQpe2NvbnN0IGg9dHlwZW9mIFpvbmU+InUiP251bGw6Wm9uZS5jdXJyZW50LG09bmV3IHE2KGEsWD0+e3RoaXMuYWxsLmhhcyhYKSYmdGhpcy5xdWV1ZS5zZXQoWCxo''@;'; put 'put ''KX0sZCk7bGV0IF87dGhpcy5hbGwuYWRkKG0pLG0ubm90aWZ5KCk7Y29uc3QgTz0oKT0+e20uY2xlYW51cCgpLF8/LigpLHRoaXMuYWxsLmRlbGV0ZShtKSx0aGlzLnF1ZXVlLmRlbGV0ZShtKX07cmV0dXJuIF89Zj8ub25EZXN0cm95KE8pLHtkZXN0cm95Ok99fWZsdXNoKCl7aWYoMCE9PXRo''@;'; put 'put ''aXMucXVldWUuc2l6ZSlmb3IoY29uc3RbYSxmXW9mIHRoaXMucXVldWUpdGhpcy5xdWV1ZS5kZWxldGUoYSksZj9mLnJ1bigoKT0+YS5ydW4oKSk6YS5ydW4oKX1nZXQgaXNRdWV1ZUVtcHR5KCl7cmV0dXJuIDA9PT10aGlzLnF1ZXVlLnNpemV9fXJldHVybiBsLlx1MDI3NXByb3Y9aHIoe3Rv''@;'; put 'put ''a2VuOmwscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bmV3IGx9KSxsfSkoKTtmdW5jdGlvbiB0dihsLGMsYSl7bGV0IGY9YT9sLnN0eWxlczpudWxsLGQ9YT9sLmNsYXNzZXM6bnVsbCxoPTA7aWYobnVsbCE9PWMpZm9yKGxldCBtPTA7bTxjLmxlbmd0aDttKyspe2NvbnN0IF89Y1tt''@;'; put 'put ''XTsibnVtYmVyIj09dHlwZW9mIF8/aD1fOjE9PWg/ZD1rdShkLF8pOjI9PWgmJihmPWt1KGYsXysiOiAiK2NbKyttXSsiOyIpKX1hP2wuc3R5bGVzPWY6bC5zdHlsZXNXaXRob3V0SG9zdD1mLGE/bC5jbGFzc2VzPWQ6bC5jbGFzc2VzV2l0aG91dEhvc3Q9ZH1mdW5jdGlvbiBsZyhsLGMsYSxm''@;'; put 'put ''LGQ9ITEpe2Zvcig7bnVsbCE9PWE7KXtjb25zdCBoPWNbYS5pbmRleF07aWYobnVsbCE9PWgmJmYucHVzaChfbChoKSksZHUoaCkpe2ZvcihsZXQgXz1mdTtfPGgubGVuZ3RoO18rKyl7Y29uc3QgTz1oW19dLFg9T1tqaV0uZmlyc3RDaGlsZDtudWxsIT09WCYmbGcoT1tqaV0sTyxYLGYpfWhb''@;'; put 'put ''QzBdIT09aFtOaV0mJmYucHVzaChoW0MwXSl9Y29uc3QgbT1hLnR5cGU7aWYoOCZtKWxnKGwsYyxhLmNoaWxkLGYpO2Vsc2UgaWYoMzImbSl7Y29uc3QgXz1NXyhhLGMpO2xldCBPO2Zvcig7Tz1fKCk7KWYucHVzaChPKX1lbHNlIGlmKDE2Jm0pe2NvbnN0IF89c0EoYyxhKTtpZihBcnJheS5p''@;'; put 'put ''c0FycmF5KF8pKWYucHVzaCguLi5fKTtlbHNle2NvbnN0IE89am0oY1tKbF0pO2xnKE9bamldLE8sXyxmLCEwKX19YT1kP2EucHJvamVjdGlvbk5leHQ6YS5uZXh0fXJldHVybiBmfWZ1bmN0aW9uIG52KGwsYyxhLGY9ITApe2NvbnN0IGQ9Y1tRMV0ucmVuZGVyZXJGYWN0b3J5O2QuYmVnaW4m''@;'; put 'put ''JmQuYmVnaW4oKTt0cnl7d1QobCxjLGwudGVtcGxhdGUsYSl9Y2F0Y2gobSl7dGhyb3cgZiYmeVQoYyxtKSxtfWZpbmFsbHl7ZC5lbmQmJmQuZW5kKCksY1tRMV0uZWZmZWN0TWFuYWdlcj8uZmx1c2goKX19ZnVuY3Rpb24gd1QobCxjLGEsZil7Y29uc3QgZD1jW1BvXTtpZigyNTYhPSgyNTYm''@;'; put 'put ''ZCkpe2NbUTFdLmVmZmVjdE1hbmFnZXI/LmZsdXNoKCksb18oYyk7dHJ5e1NvKGMpLGZ1bmN0aW9uIGd4KGwpe3JldHVybiBCby5sRnJhbWUuYmluZGluZ0luZGV4PWx9KGwuYmluZGluZ1N0YXJ0SW5kZXgpLG51bGwhPT1hJiZpVChsLGMsYSwyLGYpO2NvbnN0IG09Mz09KDMmZCk7aWYobSl7''@;'; put 'put ''Y29uc3QgWD1sLnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09WCYmbzgoYyxYLG51bGwpfWVsc2V7Y29uc3QgWD1sLnByZU9yZGVySG9va3M7bnVsbCE9PVgmJmE4KGMsWCwwLG51bGwpLGFfKGMsMCl9aWYoZnVuY3Rpb24gWE4obCl7Zm9yKGxldCBjPWVBKGwpO251bGwhPT1jO2M9dEEoYykp''@;'; put 'put ''e2lmKCFjW3o2XSljb250aW51ZTtjb25zdCBhPWNbb2hdO2ZvcihsZXQgZj0wO2Y8YS5sZW5ndGg7ZisrKXtyYShhW2ZdKX19fShjKSxDVChjLDIpLG51bGwhPT1sLmNvbnRlbnRRdWVyaWVzJiZwVChsLGMpLG0pe2NvbnN0IFg9bC5jb250ZW50Q2hlY2tIb29rcztudWxsIT09WCYmbzgoYyxY''@;'; put 'put ''KX1lbHNle2NvbnN0IFg9bC5jb250ZW50SG9va3M7bnVsbCE9PVgmJmE4KGMsWCwxKSxhXyhjLDEpfSFmdW5jdGlvbiByVChsLGMpe2NvbnN0IGE9bC5ob3N0QmluZGluZ09wQ29kZXM7aWYobnVsbD09PWEpcmV0dXJuO2NvbnN0IGY9S0EoYyxscCk7dHJ5e2ZvcihsZXQgZD0wO2Q8YS5sZW5n''@;'; put 'put ''dGg7ZCsrKXtjb25zdCBoPWFbZF07aWYoaDwwKV8yKH5oKTtlbHNle2NvbnN0IG09aCxfPWFbKytkXSxPPWFbKytkXTtCRihfLG0pLGYucnVuSW5Db250ZXh0KE8sMixjW21dKX19fWZpbmFsbHl7bnVsbD09PWNbbHBdJiZxQShjLGxwKSxfMigtMSl9fShsLGMpO2NvbnN0IF89bC5jb21wb25l''@;'; put 'put ''bnRzO251bGwhPT1fJiZNVChjLF8sMCk7Y29uc3QgTz1sLnZpZXdRdWVyeTtpZihudWxsIT09TyYmYncoMixPLGYpLG0pe2NvbnN0IFg9bC52aWV3Q2hlY2tIb29rcztudWxsIT09WCYmbzgoYyxYKX1lbHNle2NvbnN0IFg9bC52aWV3SG9va3M7bnVsbCE9PVgmJmE4KGMsWCwyKSxhXyhjLDIp''@;'; put 'put ''fSEwPT09bC5maXJzdFVwZGF0ZVBhc3MmJihsLmZpcnN0VXBkYXRlUGFzcz0hMSksY1tQb10mPS03MyxZYShjKX1maW5hbGx5e244KCl9fX1mdW5jdGlvbiBDVChsLGMpe2ZvcihsZXQgYT1lQShsKTtudWxsIT09YTthPXRBKGEpKWZvcihsZXQgZj1mdTtmPGEubGVuZ3RoO2YrKylTVChhW2Zd''@;'; put 'put ''LGMpfWZ1bmN0aW9uIEpOKGwsYyxhKXtTVChidChjLGwpLGEpfWZ1bmN0aW9uIFNUKGwsYyl7aWYoIWZ1bmN0aW9uIEt0KGwpe3JldHVybiAxMjg9PSgxMjgmbFtQb10pfShsKSlyZXR1cm47Y29uc3QgYT1sW2ppXTtpZig4MCZsW1BvXSYmMD09PWN8fDEwMjQmbFtQb118fDI9PT1jKXdUKGEs''@;'; put 'put ''bCxhLnRlbXBsYXRlLGxbQmxdKTtlbHNlIGlmKGxbSjFdPjApe0NUKGwsMSk7Y29uc3QgZD1sW2ppXS5jb21wb25lbnRzO251bGwhPT1kJiZNVChsLGQsMSl9fWZ1bmN0aW9uIE1UKGwsYyxhKXtmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKylKTihsLGNbZl0sYSl9Y2xhc3Mgc2d7Z2V0IHJv''@;'; put 'put ''b3ROb2Rlcygpe2NvbnN0IGM9dGhpcy5fbFZpZXcsYT1jW2ppXTtyZXR1cm4gbGcoYSxjLGEuZmlyc3RDaGlsZCxbXSl9Y29uc3RydWN0b3IoYyxhKXt0aGlzLl9sVmlldz1jLHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlldz1hLHRoaXMuX2FwcFJlZj1udWxsLHRoaXMuX2F0dGFjaGVkVG9WaWV3''@;'; put 'put ''Q29udGFpbmVyPSExfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX2xWaWV3W0JsXX1zZXQgY29udGV4dChjKXt0aGlzLl9sVmlld1tCbF09Y31nZXQgZGVzdHJveWVkKCl7cmV0dXJuIDI1Nj09KDI1NiZ0aGlzLl9sVmlld1tQb10pfWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5f''@;'; put 'put ''YXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil7Y29uc3QgYz10aGlzLl9sVmlld1tmbF07aWYoZHUoYykpe2NvbnN0IGE9Y1s4XSxmPWE/YS5pbmRleE9mKHRoaXMpOi0xO2Y+LTEmJih4MihjLGYpLGg4KGEsZikpfXRoaXMuX2F0''@;'; put 'put ''dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfUE4KHRoaXMuX2xWaWV3W2ppXSx0aGlzLl9sVmlldyl9b25EZXN0cm95KGMpeyFmdW5jdGlvbiBNMChsLGMpe2lmKDI1Nj09KDI1NiZsW1BvXSkpdGhyb3cgbmV3IElyKDkxMSwhMSk7bnVsbD09PWxbdGZdJiYobFt0Zl09W10pLGxbdGZdLnB1c2go''@;'; put 'put ''Yyl9KHRoaXMuX2xWaWV3LGMpfW1hcmtGb3JDaGVjaygpe2lnKHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3W1BvXSY9LTEyOX1yZWF0dGFjaCgpe3RoaXMuX2xWaWV3W1BvXXw9MTI4fWRldGVjdENoYW5nZXMoKXtudih0aGlzLl9s''@;'; put 'put ''Vmlld1tqaV0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1jaGVja05vQ2hhbmdlcygpe31hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IElyKDkwMiwhMSk7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJl''@;'; put 'put ''Zigpe3RoaXMuX2FwcFJlZj1udWxsLGZ1bmN0aW9uIElIKGwsYyl7Wm0obCxjLGNbWm9dLDIsbnVsbCxudWxsKX0odGhpcy5fbFZpZXdbamldLHRoaXMuX2xWaWV3KX1hdHRhY2hUb0FwcFJlZihjKXtpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil0aHJvdyBuZXcgSXIoOTAyLCEx''@;'; put 'put ''KTt0aGlzLl9hcHBSZWY9Y319Y2xhc3MgUU4gZXh0ZW5kcyBzZ3tjb25zdHJ1Y3RvcihjKXtzdXBlcihjKSx0aGlzLl92aWV3PWN9ZGV0ZWN0Q2hhbmdlcygpe2NvbnN0IGM9dGhpcy5fdmlldztudihjW2ppXSxjLGNbQmxdLCExKX1jaGVja05vQ2hhbmdlcygpe31nZXQgY29udGV4dCgpe3Jl''@;'; put 'put ''dHVybiBudWxsfX1jbGFzcyBrVCBleHRlbmRzIGMxe2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy5uZ01vZHVsZT1jfXJlc29sdmVDb21wb25lbnRGYWN0b3J5KGMpe2NvbnN0IGE9bmEoYyk7cmV0dXJuIG5ldyB1ZyhhLHRoaXMubmdNb2R1bGUpfX1mdW5jdGlvbiBFVChsKXtjb25zdCBj''@;'; put 'put ''PVtdO2ZvcihsZXQgYSBpbiBsKWwuaGFzT3duUHJvcGVydHkoYSkmJmMucHVzaCh7cHJvcE5hbWU6bFthXSx0ZW1wbGF0ZU5hbWU6YX0pO3JldHVybiBjfWNsYXNzIHRWe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5pbmplY3Rvcj1jLHRoaXMucGFyZW50SW5qZWN0b3I9YX1nZXQoYyxhLGYpe2Y9''@;'; put 'put ''eTAoZik7Y29uc3QgZD10aGlzLmluamVjdG9yLmdldChjLGl3LGYpO3JldHVybiBkIT09aXd8fGE9PT1pdz9kOnRoaXMucGFyZW50SW5qZWN0b3IuZ2V0KGMsYSxmKX19Y2xhc3MgdWcgZXh0ZW5kcyBqQXtnZXQgaW5wdXRzKCl7Y29uc3QgYz10aGlzLmNvbXBvbmVudERlZixhPWMuaW5wdXRU''@;'; put 'put ''cmFuc2Zvcm1zLGY9RVQoYy5pbnB1dHMpO2lmKG51bGwhPT1hKWZvcihjb25zdCBkIG9mIGYpYS5oYXNPd25Qcm9wZXJ0eShkLnByb3BOYW1lKSYmKGQudHJhbnNmb3JtPWFbZC5wcm9wTmFtZV0pO3JldHVybiBmfWdldCBvdXRwdXRzKCl7cmV0dXJuIEVUKHRoaXMuY29tcG9uZW50RGVmLm91''@;'; put 'put ''dHB1dHMpfWNvbnN0cnVjdG9yKGMsYSl7c3VwZXIoKSx0aGlzLmNvbXBvbmVudERlZj1jLHRoaXMubmdNb2R1bGU9YSx0aGlzLmNvbXBvbmVudFR5cGU9Yy50eXBlLHRoaXMuc2VsZWN0b3I9ZnVuY3Rpb24gSGIobCl7cmV0dXJuIGwubWFwKFY2KS5qb2luKCIsIil9KGMuc2VsZWN0b3JzKSx0''@;'; put 'put ''aGlzLm5nQ29udGVudFNlbGVjdG9ycz1jLm5nQ29udGVudFNlbGVjdG9ycz9jLm5nQ29udGVudFNlbGVjdG9yczpbXSx0aGlzLmlzQm91bmRUb01vZHVsZT0hIWF9Y3JlYXRlKGMsYSxmLGQpe2xldCBoPShkPWR8fHRoaXMubmdNb2R1bGUpaW5zdGFuY2VvZiB1MT9kOmQ/LmluamVjdG9yO2gm''@;'; put 'put ''Jm51bGwhPT10aGlzLmNvbXBvbmVudERlZi5nZXRTdGFuZGFsb25lSW5qZWN0b3ImJihoPXRoaXMuY29tcG9uZW50RGVmLmdldFN0YW5kYWxvbmVJbmplY3RvcihoKXx8aCk7Y29uc3QgbT1oP25ldyB0VihjLGgpOmMsXz1tLmdldChIcCxudWxsKTtpZihudWxsPT09Xyl0aHJvdyBuZXcgSXIo''@;'; put 'put ''NDA3LCExKTtjb25zdCBhZT17cmVuZGVyZXJGYWN0b3J5Ol8sc2FuaXRpemVyOm0uZ2V0KFk4LG51bGwpLGVmZmVjdE1hbmFnZXI6bS5nZXQoX1QsbnVsbCl9LHBlPV8uY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksYmU9dGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3Jz''@;'; put 'put ''WzBdWzBdfHwiZGl2Iix4ZT1mP2Z1bmN0aW9uIGxUKGwsYyxhLGYpe2NvbnN0IGg9Zi5nZXQobHcsITEpfHxhPT09anUuU2hhZG93RG9tLG09bC5zZWxlY3RSb290RWxlbWVudChjLGgpO3JldHVybiBmdW5jdGlvbiBBTihsKXttdyhsKX0obSksbX0ocGUsZix0aGlzLmNvbXBvbmVudERlZi5l''@;'; put 'put ''bmNhcHN1bGF0aW9uLG0pOng4KHBlLGJlLGZ1bmN0aW9uIGVWKGwpe2NvbnN0IGM9bC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09Yz8ic3ZnIjoibWF0aCI9PT1jPyJtYXRoIjpudWxsfShiZSkpLGx0PXRoaXMuY29tcG9uZW50RGVmLnNpZ25hbHM/NDYwODp0aGlzLmNvbXBvbmVudERl''@;'; put 'put ''Zi5vblB1c2g/NTc2OjUyOCxkdD1CcCgwLG51bGwsbnVsbCwxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLGd0PXE4KG51bGwsZHQsbnVsbCxsdCxudWxsLG51bGwsYWUscGUsbSxudWxsLG51bGwpO2xldCBqdCxybjtvXyhndCk7dHJ5e2NvbnN0IFh0PXRoaXMuY29tcG9uZW50''@;'; put 'put ''RGVmO2xldCB5bixRbj1udWxsO1h0LmZpbmRIb3N0RGlyZWN0aXZlRGVmcz8oeW49W10sUW49bmV3IE1hcCxYdC5maW5kSG9zdERpcmVjdGl2ZURlZnMoWHQseW4sUW4pLHluLnB1c2goWHQpKTp5bj1bWHRdO2NvbnN0IE9yPWZ1bmN0aW9uIHhUKGwsYyl7Y29uc3QgYT1sW2ppXSxmPXlhO3Jl''@;'; put 'put ''dHVybiBsW2ZdPWMsVnAoYSxmLDIsIiNob3N0IixudWxsKX0oZ3QseGUpLFZyPWZ1bmN0aW9uIHJWKGwsYyxhLGYsZCxoLG0pe2NvbnN0IF89ZFtqaV07IWZ1bmN0aW9uIGlWKGwsYyxhLGYpe2Zvcihjb25zdCBkIG9mIGwpYy5tZXJnZWRBdHRycz1wMihjLm1lcmdlZEF0dHJzLGQuaG9zdEF0''@;'; put 'put ''dHJzKTtudWxsIT09Yy5tZXJnZWRBdHRycyYmKHR2KGMsYy5tZXJnZWRBdHRycywhMCksbnVsbCE9PWEmJmRBKGYsYSxjKSl9KGYsbCxjLG0pO2xldCBPPW51bGw7bnVsbCE9PWMmJihPPUhBKGMsZFtxZl0pKTtjb25zdCBYPWgucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGMsYSk7''@;'; put 'put ''bGV0IGFlPTE2O2Euc2lnbmFscz9hZT00MDk2OmEub25QdXNoJiYoYWU9NjQpO2NvbnN0IHBlPXE4KGQsb1QoYSksbnVsbCxhZSxkW2wuaW5kZXhdLGwsaCxYLG51bGwsbnVsbCxPKTtyZXR1cm4gXy5maXJzdENyZWF0ZVBhc3MmJnZ3KF8sbCxmLmxlbmd0aC0xKSxldihkLHBlKSxkW2wuaW5k''@;'; put 'put ''ZXhdPXBlfShPcix4ZSxYdCx5bixndCxhZSxwZSk7cm49QWUoZHQseWEpLHhlJiZmdW5jdGlvbiBhVihsLGMsYSxmKXtpZihmKSRmKGwsYSxbIm5nLXZlcnNpb24iLHlOLmZ1bGxdKTtlbHNle2NvbnN0e2F0dHJzOmQsY2xhc3NlczpofT1mdW5jdGlvbiBtbShsKXtjb25zdCBjPVtdLGE9W107''@;'; put 'put ''bGV0IGY9MSxkPTI7Zm9yKDtmPGwubGVuZ3RoOyl7bGV0IGg9bFtmXTtpZigic3RyaW5nIj09dHlwZW9mIGgpMj09PWQ/IiIhPT1oJiZjLnB1c2goaCxsWysrZl0pOjg9PT1kJiZhLnB1c2goaCk7ZWxzZXtpZighVXUoZCkpYnJlYWs7ZD1ofWYrK31yZXR1cm57YXR0cnM6YyxjbGFzc2VzOmF9''@;'; put 'put ''fShjLnNlbGVjdG9yc1swXSk7ZCYmJGYobCxhLGQpLGgmJmgubGVuZ3RoPjAmJmZBKGwsYSxoLmpvaW4oIiAiKSl9fShwZSxYdCx4ZSxmKSx2b2lkIDAhPT1hJiZmdW5jdGlvbiBsVihsLGMsYSl7Y29uc3QgZj1sLnByb2plY3Rpb249W107Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspe2Nv''@;'; put 'put ''bnN0IGg9YVtkXTtmLnB1c2gobnVsbCE9aD9BcnJheS5mcm9tKGgpOm51bGwpfX0ocm4sdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnMsYSksanQ9ZnVuY3Rpb24gb1YobCxjLGEsZixkLGgpe2NvbnN0IG09RHUoKSxfPWRbamldLE89V3MobSxkKTthZyhfLGQsbSxhLG51bGwsZik7Zm9yKGxldCBh''@;'; put 'put ''ZT0wO2FlPGEubGVuZ3RoO2FlKyspV3UoQzIoZCxfLG0uZGlyZWN0aXZlU3RhcnQrYWUsbSksZCk7ZlQoXyxkLG0pLE8mJld1KE8sZCk7Y29uc3QgWD1DMihkLF8sbS5kaXJlY3RpdmVTdGFydCttLmNvbXBvbmVudE9mZnNldCxtKTtpZihsW0JsXT1kW0JsXT1YLG51bGwhPT1oKWZvcihjb25z''@;'; put 'put ''dCBhZSBvZiBoKWFlKFgsYyk7cmV0dXJuIGh3KF8sbSxsKSxYfShWcixYdCx5bixRbixndCxbc1ZdKSx3dyhkdCxndCxudWxsKX1maW5hbGx5e244KCl9cmV0dXJuIG5ldyBuVih0aGlzLmNvbXBvbmVudFR5cGUsanQsdWQocm4sZ3QpLGd0LHJuKX19Y2xhc3MgblYgZXh0ZW5kcyBCQXtjb25z''@;'; put 'put ''dHJ1Y3RvcihjLGEsZixkLGgpe3N1cGVyKCksdGhpcy5sb2NhdGlvbj1mLHRoaXMuX3Jvb3RMVmlldz1kLHRoaXMuX3ROb2RlPWgsdGhpcy5wcmV2aW91c0lucHV0VmFsdWVzPW51bGwsdGhpcy5pbnN0YW5jZT1hLHRoaXMuaG9zdFZpZXc9dGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1uZXcgUU4o''@;'; put 'put ''ZCksdGhpcy5jb21wb25lbnRUeXBlPWN9c2V0SW5wdXQoYyxhKXtjb25zdCBmPXRoaXMuX3ROb2RlLmlucHV0cztsZXQgZDtpZihudWxsIT09ZiYmKGQ9ZltjXSkpe2lmKHRoaXMucHJldmlvdXNJbnB1dFZhbHVlcz8/PW5ldyBNYXAsdGhpcy5wcmV2aW91c0lucHV0VmFsdWVzLmhhcyhjKSYm''@;'; put 'put ''T2JqZWN0LmlzKHRoaXMucHJldmlvdXNJbnB1dFZhbHVlcy5nZXQoYyksYSkpcmV0dXJuO2NvbnN0IGg9dGhpcy5fcm9vdExWaWV3O193KGhbamldLGgsZCxjLGEpLHRoaXMucHJldmlvdXNJbnB1dFZhbHVlcy5zZXQoYyxhKSxpZyhidCh0aGlzLl90Tm9kZS5pbmRleCxoKSl9fWdldCBpbmpl''@;'; put 'put ''Y3Rvcigpe3JldHVybiBuZXcgdnAodGhpcy5fdE5vZGUsdGhpcy5fcm9vdExWaWV3KX1kZXN0cm95KCl7dGhpcy5ob3N0Vmlldy5kZXN0cm95KCl9b25EZXN0cm95KGMpe3RoaXMuaG9zdFZpZXcub25EZXN0cm95KGMpfX1mdW5jdGlvbiBzVigpe2NvbnN0IGw9RHUoKTtpOChRcigpW2ppXSxs''@;'; put 'put ''KX1mdW5jdGlvbiBybyhsKXtsZXQgYz1mdW5jdGlvbiBBVChsKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGwucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn0obC50eXBlKSxhPSEwO2NvbnN0IGY9W2xdO2Zvcig7Yzspe2xldCBkO2lmKGFjKGwpKWQ9Yy5cdTAyNzVjbXB8fGMuXHUwMjc1''@;'; put 'put ''ZGlyO2Vsc2V7aWYoYy5cdTAyNzVjbXApdGhyb3cgbmV3IElyKDkwMywhMSk7ZD1jLlx1MDI3NWRpcn1pZihkKXtpZihhKXtmLnB1c2goZCk7Y29uc3QgbT1sO20uaW5wdXRzPXJ2KGwuaW5wdXRzKSxtLmlucHV0VHJhbnNmb3Jtcz1ydihsLmlucHV0VHJhbnNmb3JtcyksbS5kZWNsYXJlZElu''@;'; put 'put ''cHV0cz1ydihsLmRlY2xhcmVkSW5wdXRzKSxtLm91dHB1dHM9cnYobC5vdXRwdXRzKTtjb25zdCBfPWQuaG9zdEJpbmRpbmdzO18mJmZWKGwsXyk7Y29uc3QgTz1kLnZpZXdRdWVyeSxYPWQuY29udGVudFF1ZXJpZXM7aWYoTyYmdVYobCxPKSxYJiZjVihsLFgpLHAwKGwuaW5wdXRzLGQuaW5w''@;'; put 'put ''dXRzKSxwMChsLmRlY2xhcmVkSW5wdXRzLGQuZGVjbGFyZWRJbnB1dHMpLHAwKGwub3V0cHV0cyxkLm91dHB1dHMpLG51bGwhPT1kLmlucHV0VHJhbnNmb3JtcyYmKG51bGw9PT1tLmlucHV0VHJhbnNmb3JtcyYmKG0uaW5wdXRUcmFuc2Zvcm1zPXt9KSxwMChtLmlucHV0VHJhbnNmb3Jtcyxk''@;'; put 'put ''LmlucHV0VHJhbnNmb3JtcykpLGFjKGQpJiZkLmRhdGEuYW5pbWF0aW9uKXtjb25zdCBhZT1sLmRhdGE7YWUuYW5pbWF0aW9uPShhZS5hbmltYXRpb258fFtdKS5jb25jYXQoZC5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IGg9ZC5mZWF0dXJlcztpZihoKWZvcihsZXQgbT0wO208aC5sZW5ndGg7''@;'; put 'put ''bSsrKXtjb25zdCBfPWhbbV07XyYmXy5uZ0luaGVyaXQmJl8obCksXz09PXJvJiYoYT0hMSl9fWM9T2JqZWN0LmdldFByb3RvdHlwZU9mKGMpfSFmdW5jdGlvbiBDdyhsKXtsZXQgYz0wLGE9bnVsbDtmb3IobGV0IGY9bC5sZW5ndGgtMTtmPj0wO2YtLSl7Y29uc3QgZD1sW2ZdO2QuaG9zdFZh''@;'; put 'put ''cnM9Yys9ZC5ob3N0VmFycyxkLmhvc3RBdHRycz1wMihkLmhvc3RBdHRycyxhPXAyKGEsZC5ob3N0QXR0cnMpKX19KGYpfWZ1bmN0aW9uIHJ2KGwpe3JldHVybiBsPT09aWM/e306bD09PXhhP1tdOmx9ZnVuY3Rpb24gdVYobCxjKXtjb25zdCBhPWwudmlld1F1ZXJ5O2wudmlld1F1ZXJ5PWE/''@;'; put 'put ''KGYsZCk9PntjKGYsZCksYShmLGQpfTpjfWZ1bmN0aW9uIGNWKGwsYyl7Y29uc3QgYT1sLmNvbnRlbnRRdWVyaWVzO2wuY29udGVudFF1ZXJpZXM9YT8oZixkLGgpPT57YyhmLGQsaCksYShmLGQsaCl9OmN9ZnVuY3Rpb24gZlYobCxjKXtjb25zdCBhPWwuaG9zdEJpbmRpbmdzO2wuaG9zdEJp''@;'; put 'put ''bmRpbmdzPWE/KGYsZCk9PntjKGYsZCksYShmLGQpfTpjfWZ1bmN0aW9uIElUKGwpe2NvbnN0IGM9bC5pbnB1dENvbmZpZyxhPXt9O2Zvcihjb25zdCBmIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShmKSl7Y29uc3QgZD1jW2ZdO0FycmF5LmlzQXJyYXkoZCkmJmRbMl0mJihhW2ZdPWRbMl0p''@;'; put 'put ''fWwuaW5wdXRUcmFuc2Zvcm1zPWF9ZnVuY3Rpb24gaXYobCl7cmV0dXJuISFvdihsKSYmKEFycmF5LmlzQXJyYXkobCl8fCEobCBpbnN0YW5jZW9mIE1hcCkmJlN5bWJvbC5pdGVyYXRvciBpbiBsKX1mdW5jdGlvbiBvdihsKXtyZXR1cm4gbnVsbCE9PWwmJigiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''bHx8Im9iamVjdCI9PXR5cGVvZiBsKX1mdW5jdGlvbiB5ZihsLGMsYSl7cmV0dXJuIGxbY109YX1mdW5jdGlvbiBHdShsLGMsYSl7cmV0dXJuIU9iamVjdC5pcyhsW2NdLGEpJiYobFtjXT1hLCEwKX1mdW5jdGlvbiBGMihsLGMsYSxmKXtjb25zdCBkPUd1KGwsYyxhKTtyZXR1cm4gR3UobCxj''@;'; put 'put ''KzEsZil8fGR9ZnVuY3Rpb24gYXYobCxjLGEsZixkKXtjb25zdCBoPUYyKGwsYyxhLGYpO3JldHVybiBHdShsLGMrMixkKXx8aH1mdW5jdGlvbiB4MChsLGMsYSxmLGQsaCl7Y29uc3QgbT1GMihsLGMsYSxmKTtyZXR1cm4gRjIobCxjKzIsZCxoKXx8bX1mdW5jdGlvbiBScihsLGMsYSxmKXtj''@;'; put 'put ''b25zdCBkPVFyKCk7cmV0dXJuIEd1KGQscHAoKSxjKSYmKElhKCksdmYoUWwoKSxkLGwsYyxhLGYpKSxScn1mdW5jdGlvbiB6cChsLGMsYSxmKXtyZXR1cm4gR3UobCxwcCgpLGEpP2MrSW8oYSkrZjpxb31mdW5jdGlvbiB0dChsLGMsYSxmLGQsaCxtLF8pe2NvbnN0IE89UXIoKSxYPUlhKCks''@;'; put 'put ''YWU9bCt5YSxwZT1YLmZpcnN0Q3JlYXRlUGFzcz9mdW5jdGlvbiBGVihsLGMsYSxmLGQsaCxtLF8sTyl7Y29uc3QgWD1jLmNvbnN0cyxhZT1WcChjLGwsNCxtfHxudWxsLFByKFgsXykpO2d3KGMsYSxhZSxQcihYLE8pKSxpOChjLGFlKTtjb25zdCBwZT1hZS50Vmlldz1CcCgyLGFlLGYsZCxo''@;'; put 'put ''LGMuZGlyZWN0aXZlUmVnaXN0cnksYy5waXBlUmVnaXN0cnksbnVsbCxjLnNjaGVtYXMsWCxudWxsKTtyZXR1cm4gbnVsbCE9PWMucXVlcmllcyYmKGMucXVlcmllcy50ZW1wbGF0ZShjLGFlKSxwZS5xdWVyaWVzPWMucXVlcmllcy5lbWJlZGRlZFRWaWV3KGFlKSksYWV9KGFlLFgsTyxjLGEs''@;'; put 'put ''ZixkLGgsbSk6WC5kYXRhW2FlXTtsZihwZSwhMSk7Y29uc3QgYmU9SXcoWCxPLHBlLGwpO3I4KCkmJkk4KFgsTyxiZSxwZSksV3UoYmUsTyksZXYoTyxPW2FlXT1oVChiZSxPLGJlLHBlKSkseTIocGUpJiZwdyhYLE8scGUpLG51bGwhPW0mJlg4KE8scGUsXyl9bGV0IEl3PWZ1bmN0aW9uIFJ3''@;'; put 'put ''KGwsYyxhLGYpe3JldHVybiByZCghMCksY1tab10uY3JlYXRlQ29tbWVudCgiIil9O2Z1bmN0aW9uIFFpKGwpe3JldHVybiBKZShmdW5jdGlvbiBORigpe3JldHVybiBCby5sRnJhbWUuY29udGV4dExWaWV3fSgpLHlhK2wpfWZ1bmN0aW9uIFJlKGwsYyxhKXtjb25zdCBmPVFyKCk7cmV0dXJu''@;'; put 'put ''IEd1KGYscHAoKSxjKSYmWmMoSWEoKSxRbCgpLGYsbCxjLGZbWm9dLGEsITEpLFJlfWZ1bmN0aW9uIEx3KGwsYyxhLGYsZCl7Y29uc3QgbT1kPyJjbGFzcyI6InN0eWxlIjtfdyhsLGEsYy5pbnB1dHNbbV0sbSxmKX1mdW5jdGlvbiB5ZShsLGMsYSxmKXtjb25zdCBkPVFyKCksaD1JYSgpLG09''@;'; put 'put ''eWErbCxfPWRbWm9dLE89aC5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gelQobCxjLGEsZixkLGgpe2NvbnN0IG09Yy5jb25zdHMsTz1WcChjLGwsMixmLFByKG0sZCkpO3JldHVybiBndyhjLGEsTyxQcihtLGgpKSxudWxsIT09Ty5hdHRycyYmdHYoTyxPLmF0dHJzLCExKSxudWxsIT09Ty5t''@;'; put 'put ''ZXJnZWRBdHRycyYmdHYoTyxPLm1lcmdlZEF0dHJzLCEwKSxudWxsIT09Yy5xdWVyaWVzJiZjLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGMsTyksT30obSxoLGQsYyxhLGYpOmguZGF0YVttXSxYPVVUKGgsZCxPLF8sYyxsKTtkW21dPVg7Y29uc3QgYWU9eTIoTyk7cmV0dXJuIGxmKE8sITApLGRB''@;'; put 'put ''KF8sWCxPKSwzMiE9KDMyJk8uZmxhZ3MpJiZyOCgpJiZJOChoLGQsWCxPKSwwPT09ZnVuY3Rpb24gT0YoKXtyZXR1cm4gQm8ubEZyYW1lLmVsZW1lbnREZXB0aENvdW50fSgpJiZXdShYLGQpLGZ1bmN0aW9uIERGKCl7Qm8ubEZyYW1lLmVsZW1lbnREZXB0aENvdW50Kyt9KCksYWUmJihwdyho''@;'; put 'put ''LGQsTyksaHcoaCxPLGQpKSxudWxsIT09ZiYmWDgoZCxPKSx5ZX1mdW5jdGlvbiBDZSgpe2xldCBsPUR1KCk7dF8oKT9lOCgpOihsPWwucGFyZW50LGxmKGwsITEpKTtjb25zdCBjPWw7KGZ1bmN0aW9uIFJGKGwpe3JldHVybiBCby5za2lwSHlkcmF0aW9uUm9vdFROb2RlPT09bH0pKGMpJiZm''@;'; put 'put ''dW5jdGlvbiBIRigpe0JvLnNraXBIeWRyYXRpb25Sb290VE5vZGU9bnVsbH0oKSxmdW5jdGlvbiBJRigpe0JvLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudC0tfSgpO2NvbnN0IGE9SWEoKTtyZXR1cm4gYS5maXJzdENyZWF0ZVBhc3MmJihpOChhLGwpLEpmKGwpJiZhLnF1ZXJpZXMuZWxlbWVu''@;'; put 'put ''dEVuZChsKSksbnVsbCE9Yy5jbGFzc2VzV2l0aG91dEhvc3QmJmZ1bmN0aW9uIHFGKGwpe3JldHVybiAwIT0oOCZsLmZsYWdzKX0oYykmJkx3KGEsYyxRcigpLGMuY2xhc3Nlc1dpdGhvdXRIb3N0LCEwKSxudWxsIT1jLnN0eWxlc1dpdGhvdXRIb3N0JiZmdW5jdGlvbiBYRihsKXtyZXR1cm4g''@;'; put 'put ''MCE9KDE2JmwuZmxhZ3MpfShjKSYmTHcoYSxjLFFyKCksYy5zdHlsZXNXaXRob3V0SG9zdCwhMSksQ2V9ZnVuY3Rpb24gdG4obCxjLGEsZil7cmV0dXJuIHllKGwsYyxhLGYpLENlKCksdG59bGV0IFVUPShsLGMsYSxmLGQsaCk9PihyZCghMCkseDgoZixkLGZ1bmN0aW9uIGt4KCl7cmV0dXJu''@;'; put 'put ''IEJvLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlfSgpKSk7ZnVuY3Rpb24gV3IobCxjLGEpe2NvbnN0IGY9UXIoKSxkPUlhKCksaD1sK3lhLG09ZC5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gUHcobCxjLGEsZixkKXtjb25zdCBoPWMuY29uc3RzLG09UHIoaCxmKSxfPVZwKGMsbCw4LCJuZy1j''@;'; put 'put ''b250YWluZXIiLG0pO3JldHVybiBudWxsIT09bSYmdHYoXyxtLCEwKSxndyhjLGEsXyxQcihoLGQpKSxudWxsIT09Yy5xdWVyaWVzJiZjLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGMsXyksX30oaCxkLGYsYyxhKTpkLmRhdGFbaF07bGYobSwhMCk7Y29uc3QgXz1ZVChkLGYsbSxsKTtyZXR1cm4g''@;'; put 'put ''ZltoXT1fLHI4KCkmJkk4KGQsZixfLG0pLFd1KF8sZikseTIobSkmJihwdyhkLGYsbSksaHcoZCxtLGYpKSxudWxsIT1hJiZYOChmLG0pLFdyfWZ1bmN0aW9uIEdyKCl7bGV0IGw9RHUoKTtjb25zdCBjPUlhKCk7cmV0dXJuIHRfKCk/ZTgoKToobD1sLnBhcmVudCxsZihsLCExKSksYy5maXJz''@;'; put 'put ''dENyZWF0ZVBhc3MmJihpOChjLGwpLEpmKGwpJiZjLnF1ZXJpZXMuZWxlbWVudEVuZChsKSksR3J9ZnVuY3Rpb24gZXMobCxjLGEpe3JldHVybiBXcihsLGMsYSksR3IoKSxlc31sZXQgWVQ9KGwsYyxhLGYpPT4ocmQoITApLGtfKGNbWm9dLCIiKSk7ZnVuY3Rpb24gWm4oKXtyZXR1cm4gUXIo''@;'; put 'put ''KX1mdW5jdGlvbiBwZyhsKXtyZXR1cm4hIWwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnRoZW59ZnVuY3Rpb24gV1QobCl7cmV0dXJuISFsJiYiZnVuY3Rpb24iPT10eXBlb2YgbC5zdWJzY3JpYmV9ZnVuY3Rpb24gRXQobCxjLGEsZil7Y29uc3QgZD1RcigpLGg9SWEoKSxtPUR1KCk7cmV0dXJu''@;'; put 'put ''IEdUKGgsZCxkW1pvXSxtLGwsYyxmKSxFdH1mdW5jdGlvbiBGdyhsLGMpe2NvbnN0IGE9RHUoKSxmPVFyKCksZD1JYSgpO3JldHVybiBHVChkLGYsdlQocl8oZC5kYXRhKSxhLGYpLGEsbCxjKSxGd31mdW5jdGlvbiBHVChsLGMsYSxmLGQsaCxtKXtjb25zdCBfPXkyKGYpLFg9bC5maXJzdENy''@;'; put 'put ''ZWF0ZVBhc3MmJmdUKGwpLGFlPWNbQmxdLHBlPW1UKGMpO2xldCBiZT0hMDtpZigzJmYudHlwZXx8bSl7Y29uc3QgWmU9V3MoZixjKSxsdD1tP20oWmUpOlplLGR0PXBlLmxlbmd0aCxndD1tP3JuPT5tKF9sKHJuW2YuaW5kZXhdKSk6Zi5pbmRleDtsZXQganQ9bnVsbDtpZighbSYmXyYmKGp0''@;'; put 'put ''PWZ1bmN0aW9uIGpWKGwsYyxhLGYpe2NvbnN0IGQ9bC5jbGVhbnVwO2lmKG51bGwhPWQpZm9yKGxldCBoPTA7aDxkLmxlbmd0aC0xO2grPTIpe2NvbnN0IG09ZFtoXTtpZihtPT09YSYmZFtoKzFdPT09Zil7Y29uc3QgXz1jW05jXSxPPWRbaCsyXTtyZXR1cm4gXy5sZW5ndGg+Tz9fW09dOm51''@;'; put 'put ''bGx9InN0cmluZyI9PXR5cGVvZiBtJiYoaCs9Mil9cmV0dXJuIG51bGx9KGwsYyxkLGYuaW5kZXgpKSxudWxsIT09anQpKGp0Ll9fbmdMYXN0TGlzdGVuZXJGbl9ffHxqdCkuX19uZ05leHRMaXN0ZW5lckZuX189aCxqdC5fX25nTGFzdExpc3RlbmVyRm5fXz1oLGJlPSExO2Vsc2V7aD1LVChm''@;'; put 'put ''LGMsYWUsaCwhMSk7Y29uc3Qgcm49YS5saXN0ZW4obHQsZCxoKTtwZS5wdXNoKGgscm4pLFgmJlgucHVzaChkLGd0LGR0LGR0KzEpfX1lbHNlIGg9S1QoZixjLGFlLGgsITEpO2NvbnN0IHhlPWYub3V0cHV0cztsZXQgVmU7aWYoYmUmJm51bGwhPT14ZSYmKFZlPXhlW2RdKSl7Y29uc3QgWmU9''@;'; put 'put ''VmUubGVuZ3RoO2lmKFplKWZvcihsZXQgbHQ9MDtsdDxaZTtsdCs9Mil7Y29uc3QgWHQ9Y1tWZVtsdF1dW1ZlW2x0KzFdXS5zdWJzY3JpYmUoaCkseW49cGUubGVuZ3RoO3BlLnB1c2goaCxYdCksWCYmWC5wdXNoKGQsZi5pbmRleCx5biwtKHluKzEpKX19fWZ1bmN0aW9uICRUKGwsYyxhLGYp''@;'; put 'put ''e3RyeXtyZXR1cm4gUzAoNixjLGEpLCExIT09YShmKX1jYXRjaChkKXtyZXR1cm4geVQobCxkKSwhMX1maW5hbGx5e1MwKDcsYyxhKX19ZnVuY3Rpb24gS1QobCxjLGEsZixkKXtyZXR1cm4gZnVuY3Rpb24gaChtKXtpZihtPT09RnVuY3Rpb24pcmV0dXJuIGY7aWcobC5jb21wb25lbnRPZmZz''@;'; put 'put ''ZXQ+LTE/YnQobC5pbmRleCxjKTpjKTtsZXQgTz0kVChjLGEsZixtKSxYPWguX19uZ05leHRMaXN0ZW5lckZuX187Zm9yKDtYOylPPSRUKGMsYSxYLG0pJiZPLFg9WC5fX25nTmV4dExpc3RlbmVyRm5fXztyZXR1cm4gZCYmITE9PT1PJiZtLnByZXZlbnREZWZhdWx0KCksT319ZnVuY3Rpb24g''@;'; put 'put ''R2UobD0xKXtyZXR1cm4gZnVuY3Rpb24gakYobCl7cmV0dXJuKEJvLmxGcmFtZS5jb250ZXh0TFZpZXc9ZnVuY3Rpb24gekYobCxjKXtmb3IoO2w+MDspYz1jW1VzXSxsLS07cmV0dXJuIGN9KGwsQm8ubEZyYW1lLmNvbnRleHRMVmlldykpW0JsXX0obCl9ZnVuY3Rpb24gelYobCxjKXtsZXQg''@;'; put 'put ''YT1udWxsO2NvbnN0IGY9ZnVuY3Rpb24gbTIobCl7Y29uc3QgYz1sLmF0dHJzO2lmKG51bGwhPWMpe2NvbnN0IGE9Yy5pbmRleE9mKDUpO2lmKCEoMSZhKSlyZXR1cm4gY1thKzFdfXJldHVybiBudWxsfShsKTtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrKyl7Y29uc3QgaD1jW2RdO2lmKCIq''@;'; put 'put ''IiE9PWgpe2lmKG51bGw9PT1mP2htKGwsaCwhMCk6cG0oZixoKSlyZXR1cm4gZH1lbHNlIGE9ZH1yZXR1cm4gYX1mdW5jdGlvbiBUaShsKXtjb25zdCBjPVFyKClbSmxdW0dvXTtpZighYy5wcm9qZWN0aW9uKXtjb25zdCBmPWMucHJvamVjdGlvbj1pZChsP2wubGVuZ3RoOjEsbnVsbCksZD1m''@;'; put 'put ''LnNsaWNlKCk7bGV0IGg9Yy5jaGlsZDtmb3IoO251bGwhPT1oOyl7Y29uc3QgbT1sP3pWKGgsbCk6MDtudWxsIT09bSYmKGRbbV0/ZFttXS5wcm9qZWN0aW9uTmV4dD1oOmZbbV09aCxkW21dPWgpLGg9aC5uZXh0fX19ZnVuY3Rpb24gRHIobCxjPTAsYSl7Y29uc3QgZj1RcigpLGQ9SWEoKSxo''@;'; put 'put ''PVZwKGQseWErbCwxNixudWxsLGF8fG51bGwpO251bGw9PT1oLnByb2plY3Rpb24mJihoLnByb2plY3Rpb249YyksZTgoKSwoIWZbdzBdfHxocCgpKSYmMzIhPSgzMiZoLmZsYWdzKSYmZnVuY3Rpb24gUEgobCxjLGEpe0ZIKGNbWm9dLDAsYyxhLEFwKGwsYSxjKSxtZihhLnBhcmVudHx8Y1tH''@;'; put 'put ''b10sYSxjKSl9KGQsZixoKX1mdW5jdGlvbiBSdShsLGMsYSl7cmV0dXJuIGJoKGwsIiIsYywiIixhKSxSdX1mdW5jdGlvbiBiaChsLGMsYSxmLGQpe2NvbnN0IGg9UXIoKSxtPXpwKGgsYyxhLGYpO3JldHVybiBtIT09cW8mJlpjKElhKCksUWwoKSxoLGwsbSxoW1pvXSxkLCExKSxiaH1mdW5j''@;'; put 'put ''dGlvbiBnZyhsLGMpe3JldHVybiBsPDwxN3xjPDwyfWZ1bmN0aW9uIGYxKGwpe3JldHVybiBsPj4xNyYzMjc2N31mdW5jdGlvbiBIdyhsKXtyZXR1cm4gMnxsfWZ1bmN0aW9uIGQxKGwpe3JldHVybigxMzEwNjgmbCk+PjJ9ZnVuY3Rpb24gTncobCxjKXtyZXR1cm4tMTMxMDY5Jmx8Yzw8Mn1m''@;'; put 'put ''dW5jdGlvbiBWdyhsKXtyZXR1cm4gMXxsfWZ1bmN0aW9uIG5PKGwsYyxhLGYsZCl7Y29uc3QgaD1sW2ErMV0sbT1udWxsPT09YztsZXQgXz1mP2YxKGgpOmQxKGgpLE89ITE7Zm9yKDswIT09XyYmKCExPT09T3x8bSk7KXtjb25zdCBhZT1sW18rMV07V1YobFtfXSxjKSYmKE89ITAsbFtfKzFd''@;'; put 'put ''PWY/VncoYWUpOkh3KGFlKSksXz1mP2YxKGFlKTpkMShhZSl9TyYmKGxbYSsxXT1mP0h3KGgpOlZ3KGgpKX1mdW5jdGlvbiBXVihsLGMpe3JldHVybiBudWxsPT09bHx8bnVsbD09Y3x8KEFycmF5LmlzQXJyYXkobCk/bFsxXTpsKT09PWN8fCEoIUFycmF5LmlzQXJyYXkobCl8fCJzdHJpbmci''@;'; put 'put ''IT10eXBlb2YgYykmJm9kKGwsYyk+PTB9Y29uc3QgJHM9e3RleHRFbmQ6MCxrZXk6MCxrZXlFbmQ6MCx2YWx1ZTowLHZhbHVlRW5kOjB9O2Z1bmN0aW9uIHJPKGwpe3JldHVybiBsLnN1YnN0cmluZygkcy5rZXksJHMua2V5RW5kKX1mdW5jdGlvbiBpTyhsLGMpe2NvbnN0IGE9JHMudGV4dEVu''@;'; put 'put ''ZDtyZXR1cm4gYT09PWM/LTE6KGM9JHMua2V5RW5kPWZ1bmN0aW9uIHFWKGwsYyxhKXtmb3IoO2M8YSYmbC5jaGFyQ29kZUF0KGMpPjMyOyljKys7cmV0dXJuIGN9KGwsJHMua2V5PWMsYSksTjIobCxjLGEpKX1mdW5jdGlvbiBOMihsLGMsYSl7Zm9yKDtjPGEmJmwuY2hhckNvZGVBdChjKTw9''@;'; put 'put ''MzI7KWMrKztyZXR1cm4gY31mdW5jdGlvbiBXYyhsLGMsYSl7cmV0dXJuIEEwKGwsYyxhLCExKSxXY31mdW5jdGlvbiBncihsLGMpe3JldHVybiBBMChsLGMsbnVsbCwhMCksZ3J9ZnVuY3Rpb24gYmYobCxjKXtmb3IobGV0IGE9ZnVuY3Rpb24gJFYobCl7cmV0dXJuIGZ1bmN0aW9uIFljKGwp''@;'; put 'put ''eyRzLmtleT0wLCRzLmtleUVuZD0wLCRzLnZhbHVlPTAsJHMudmFsdWVFbmQ9MCwkcy50ZXh0RW5kPWwubGVuZ3RofShsKSxpTyhsLE4yKGwsMCwkcy50ZXh0RW5kKSl9KGMpO2E+PTA7YT1pTyhjLGEpKUl1KGwsck8oYyksITApfWZ1bmN0aW9uIEEwKGwsYyxhLGYpe2NvbnN0IGQ9UXIoKSxo''@;'; put 'put ''PUlhKCksbT1zZigyKTtoLmZpcnN0VXBkYXRlUGFzcyYmX2YoaCxsLG0sZiksYyE9PXFvJiZHdShkLG0sYykmJll3KGgsaC5kYXRhW2xjKCldLGQsZFtab10sbCxkW20rMV09ZnVuY3Rpb24gY08obCxjKXtyZXR1cm4gbnVsbD09bHx8IiI9PT1sfHwoInN0cmluZyI9PXR5cGVvZiBjP2wrPWM6''@;'; put 'put ''Im9iamVjdCI9PXR5cGVvZiBsJiYobD1LbChnaChsKSkpKSxsfShjLGEpLGYsbSl9ZnVuY3Rpb24gc08obCxjKXtyZXR1cm4gYz49bC5leHBhbmRvU3RhcnRJbmRleH1mdW5jdGlvbiBfZihsLGMsYSxmKXtjb25zdCBkPWwuZGF0YTtpZihudWxsPT09ZFthKzFdKXtjb25zdCBoPWRbbGMoKV0s''@;'; put 'put ''bT1zTyhsLGEpO1d3KGgsZikmJm51bGw9PT1jJiYhbSYmKGM9ITEpLGM9ZnVuY3Rpb24gSlYobCxjLGEsZil7Y29uc3QgZD1yXyhsKTtsZXQgaD1mP2MucmVzaWR1YWxDbGFzc2VzOmMucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PWQpMD09PShmP2MuY2xhc3NCaW5kaW5nczpjLnN0eWxlQmlu''@;'; put 'put ''ZGluZ3MpJiYoYT12ZyhhPVp3KG51bGwsbCxjLGEsZiksYy5hdHRycyxmKSxoPW51bGwpO2Vsc2V7Y29uc3QgbT1jLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09bXx8bFttXSE9PWQpaWYoYT1adyhkLGwsYyxhLGYpLG51bGw9PT1oKXtsZXQgTz1mdW5jdGlvbiBRVihsLGMsYSl7Y29u''@;'; put 'put ''c3QgZj1hP2MuY2xhc3NCaW5kaW5nczpjLnN0eWxlQmluZGluZ3M7aWYoMCE9PWQxKGYpKXJldHVybiBsW2YxKGYpXX0obCxjLGYpO3ZvaWQgMCE9PU8mJkFycmF5LmlzQXJyYXkoTykmJihPPVp3KG51bGwsbCxjLE9bMV0sZiksTz12ZyhPLGMuYXR0cnMsZiksZnVuY3Rpb24gZUIobCxjLGEs''@;'; put 'put ''Zil7bFtmMShhP2MuY2xhc3NCaW5kaW5nczpjLnN0eWxlQmluZGluZ3MpXT1mfShsLGMsZixPKSl9ZWxzZSBoPWZ1bmN0aW9uIHRCKGwsYyxhKXtsZXQgZjtjb25zdCBkPWMuZGlyZWN0aXZlRW5kO2ZvcihsZXQgaD0xK2MuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7aDxkO2grKylmPXZnKGYsbFto''@;'; put 'put ''XS5ob3N0QXR0cnMsYSk7cmV0dXJuIHZnKGYsYy5hdHRycyxhKX0obCxjLGYpfXJldHVybiB2b2lkIDAhPT1oJiYoZj9jLnJlc2lkdWFsQ2xhc3Nlcz1oOmMucmVzaWR1YWxTdHlsZXM9aCksYX0oZCxoLGMsZiksZnVuY3Rpb24gWlYobCxjLGEsZixkLGgpe2xldCBtPWg/Yy5jbGFzc0JpbmRp''@;'; put 'put ''bmdzOmMuc3R5bGVCaW5kaW5ncyxfPWYxKG0pLE89ZDEobSk7bFtmXT1hO2xldCBhZSxYPSExO2lmKEFycmF5LmlzQXJyYXkoYSk/KGFlPWFbMV0sKG51bGw9PT1hZXx8b2QoYSxhZSk+MCkmJihYPSEwKSk6YWU9YSxkKWlmKDAhPT1PKXtjb25zdCBiZT1mMShsW18rMV0pO2xbZisxXT1nZyhi''@;'; put 'put ''ZSxfKSwwIT09YmUmJihsW2JlKzFdPU53KGxbYmUrMV0sZikpLGxbXysxXT1mdW5jdGlvbiBTaShsLGMpe3JldHVybiAxMzEwNzEmbHxjPDwxN30obFtfKzFdLGYpfWVsc2UgbFtmKzFdPWdnKF8sMCksMCE9PV8mJihsW18rMV09TncobFtfKzFdLGYpKSxfPWY7ZWxzZSBsW2YrMV09Z2coTyww''@;'; put 'put ''KSwwPT09Xz9fPWY6bFtPKzFdPU53KGxbTysxXSxmKSxPPWY7WCYmKGxbZisxXT1IdyhsW2YrMV0pKSxuTyhsLGFlLGYsITApLG5PKGwsYWUsZiwhMSksZnVuY3Rpb24gWVYobCxjLGEsZixkKXtjb25zdCBoPWQ/bC5yZXNpZHVhbENsYXNzZXM6bC5yZXNpZHVhbFN0eWxlcztudWxsIT1oJiYi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIGMmJm9kKGgsYyk+PTAmJihhW2YrMV09VncoYVtmKzFdKSl9KGMsYWUsbCxmLGgpLG09Z2coXyxPKSxoP2MuY2xhc3NCaW5kaW5ncz1tOmMuc3R5bGVCaW5kaW5ncz1tfShkLGgsYyxhLG0sZil9fWZ1bmN0aW9uIFp3KGwsYyxhLGYsZCl7bGV0IGg9bnVsbDtjb25z''@;'; put 'put ''dCBtPWEuZGlyZWN0aXZlRW5kO2xldCBfPWEuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09Xz9fPWEuZGlyZWN0aXZlU3RhcnQ6XysrO188bSYmKGg9Y1tfXSxmPXZnKGYsaC5ob3N0QXR0cnMsZCksaCE9PWwpOylfKys7cmV0dXJuIG51bGwhPT1sJiYoYS5kaXJlY3RpdmVTdHlsaW5n''@;'; put 'put ''TGFzdD1fKSxmfWZ1bmN0aW9uIHZnKGwsYyxhKXtjb25zdCBmPWE/MToyO2xldCBkPS0xO2lmKG51bGwhPT1jKWZvcihsZXQgaD0wO2g8Yy5sZW5ndGg7aCsrKXtjb25zdCBtPWNbaF07Im51bWJlciI9PXR5cGVvZiBtP2Q9bTpkPT09ZiYmKEFycmF5LmlzQXJyYXkobCl8fChsPXZvaWQgMD09''@;'; put 'put ''PWw/W106WyIiLGxdKSxJdShsLG0sISFhfHxjWysraF0pKX1yZXR1cm4gdm9pZCAwPT09bD9udWxsOmx9ZnVuY3Rpb24gWXcobCxjLGEsZixkLGgsbSxfKXtpZighKDMmYy50eXBlKSlyZXR1cm47Y29uc3QgTz1sLmRhdGEsWD1PW18rMV0sYWU9ZnVuY3Rpb24gVVYobCl7cmV0dXJuIDE9PSgx''@;'; put 'put ''JmwpfShYKT90cyhPLGMsYSxkLGQxKFgpLG0pOnZvaWQgMDt3ZihhZSl8fCh3ZihoKXx8ZnVuY3Rpb24gdE8obCl7cmV0dXJuIDI9PSgyJmwpfShYKSYmKGg9dHMoTyxudWxsLGEsZCxfLG0pKSxmdW5jdGlvbiBYUShsLGMsYSxmLGQpe2lmKGMpZD9sLmFkZENsYXNzKGEsZik6bC5yZW1vdmVD''@;'; put 'put ''bGFzcyhhLGYpO2Vsc2V7bGV0IGg9LTE9PT1mLmluZGV4T2YoIi0iKT92b2lkIDA6aGguRGFzaENhc2U7bnVsbD09ZD9sLnJlbW92ZVN0eWxlKGEsZixoKTooInN0cmluZyI9PXR5cGVvZiBkJiZkLmVuZHNXaXRoKCIhaW1wb3J0YW50IikmJihkPWQuc2xpY2UoMCwtMTApLGh8PWhoLkltcG9y''@;'; put 'put ''dGFudCksbC5zZXRTdHlsZShhLGYsZCxoKSl9fShmLG0sbzEobGMoKSxhKSxkLGgpKX1mdW5jdGlvbiB0cyhsLGMsYSxmLGQsaCl7Y29uc3QgbT1udWxsPT09YztsZXQgXztmb3IoO2Q+MDspe2NvbnN0IE89bFtkXSxYPUFycmF5LmlzQXJyYXkoTyksYWU9WD9PWzFdOk8scGU9bnVsbD09PWFl''@;'; put 'put ''O2xldCBiZT1hW2QrMV07YmU9PT1xbyYmKGJlPXBlP3hhOnZvaWQgMCk7bGV0IHhlPXBlP00yKGJlLGYpOmFlPT09Zj9iZTp2b2lkIDA7aWYoWCYmIXdmKHhlKSYmKHhlPU0yKE8sZikpLHdmKHhlKSYmKF89eGUsbSkpcmV0dXJuIF87Y29uc3QgVmU9bFtkKzFdO2Q9bT9mMShWZSk6ZDEoVmUp''@;'; put 'put ''fWlmKG51bGwhPT1jKXtsZXQgTz1oP2MucmVzaWR1YWxDbGFzc2VzOmMucmVzaWR1YWxTdHlsZXM7bnVsbCE9TyYmKF89TTIoTyxmKSl9cmV0dXJuIF99ZnVuY3Rpb24gd2YobCl7cmV0dXJuIHZvaWQgMCE9PWx9ZnVuY3Rpb24gV3cobCxjKXtyZXR1cm4gMCE9KGwuZmxhZ3MmKGM/ODoxNikp''@;'; put 'put ''fWZ1bmN0aW9uIFllKGwsYz0iIil7Y29uc3QgYT1RcigpLGY9SWEoKSxkPWwreWEsaD1mLmZpcnN0Q3JlYXRlUGFzcz9WcChmLGQsMSxjLG51bGwpOmYuZGF0YVtkXSxtPUd3KGYsYSxoLGMsbCk7YVtkXT1tLHI4KCkmJkk4KGYsYSxtLGgpLGxmKGgsITEpfWxldCBHdz0obCxjLGEsZixkKT0+''@;'; put 'put ''KHJkKCEwKSxmdW5jdGlvbiBFOChsLGMpe3JldHVybiBsLmNyZWF0ZVRleHQoYyl9KGNbWm9dLGYpKTtmdW5jdGlvbiBhcihsKXtyZXR1cm4gd3IoIiIsbCwiIiksYXJ9ZnVuY3Rpb24gd3IobCxjLGEpe2NvbnN0IGY9UXIoKSxkPXpwKGYsbCxjLGEpO3JldHVybiBkIT09cW8mJmZkKGYsbGMo''@;'; put 'put ''KSxkKSx3cn1mdW5jdGlvbiAkdShsLGMsYSxmLGQpe2NvbnN0IGg9UXIoKSxtPWZ1bmN0aW9uIFVwKGwsYyxhLGYsZCxoKXtjb25zdCBfPUYyKGwsbmQoKSxhLGQpO3JldHVybiBzZigyKSxfP2MrSW8oYSkrZitJbyhkKStoOnFvfShoLGwsYyxhLGYsZCk7cmV0dXJuIG0hPT1xbyYmZmQoaCxs''@;'; put 'put ''YygpLG0pLCR1fWZ1bmN0aW9uIE8wKGwsYyxhLGYsZCxoLG0pe2NvbnN0IF89UXIoKSxPPWZ1bmN0aW9uIFpwKGwsYyxhLGYsZCxoLG0sXyl7Y29uc3QgWD1hdihsLG5kKCksYSxkLG0pO3JldHVybiBzZigzKSxYP2MrSW8oYSkrZitJbyhkKStoK0lvKG0pK186cW99KF8sbCxjLGEsZixkLGgs''@;'; put 'put ''bSk7cmV0dXJuIE8hPT1xbyYmZmQoXyxsYygpLE8pLE8wfWZ1bmN0aW9uIHlnKGwsYyxhLGYsZCxoLG0sXyxPKXtjb25zdCBYPVFyKCksYWU9ZnVuY3Rpb24gWXAobCxjLGEsZixkLGgsbSxfLE8sWCl7Y29uc3QgcGU9eDAobCxuZCgpLGEsZCxtLE8pO3JldHVybiBzZig0KSxwZT9jK0lvKGEp''@;'; put 'put ''K2YrSW8oZCkraCtJbyhtKStfK0lvKE8pK1g6cW99KFgsbCxjLGEsZixkLGgsbSxfLE8pO3JldHVybiBhZSE9PXFvJiZmZChYLGxjKCksYWUpLHlnfWZ1bmN0aW9uIHBPKGwsYyxhKXshZnVuY3Rpb24gVDAobCxjLGEsZil7Y29uc3QgZD1JYSgpLGg9c2YoMik7ZC5maXJzdFVwZGF0ZVBhc3Mm''@;'; put 'put ''Jl9mKGQsbnVsbCxoLGYpO2NvbnN0IG09UXIoKTtpZihhIT09cW8mJkd1KG0saCxhKSl7Y29uc3QgXz1kLmRhdGFbbGMoKV07aWYoV3coXyxmKSYmIXNPKGQsaCkpe2xldCBPPWY/Xy5jbGFzc2VzV2l0aG91dEhvc3Q6Xy5zdHlsZXNXaXRob3V0SG9zdDtudWxsIT09TyYmKGE9a3UoTyxhfHwi''@;'; put 'put ''IikpLEx3KGQsXyxtLGEsZil9ZWxzZSFmdW5jdGlvbiBwdShsLGMsYSxmLGQsaCxtLF8pe2Q9PT1xbyYmKGQ9eGEpO2xldCBPPTAsWD0wLGFlPTA8ZC5sZW5ndGg/ZFswXTpudWxsLHBlPTA8aC5sZW5ndGg/aFswXTpudWxsO2Zvcig7bnVsbCE9PWFlfHxudWxsIT09cGU7KXtjb25zdCBiZT1P''@;'; put 'put ''PGQubGVuZ3RoP2RbTysxXTp2b2lkIDAseGU9WDxoLmxlbmd0aD9oW1grMV06dm9pZCAwO2xldCBaZSxWZT1udWxsO2FlPT09cGU/KE8rPTIsWCs9MixiZSE9PXhlJiYoVmU9cGUsWmU9eGUpKTpudWxsPT09cGV8fG51bGwhPT1hZSYmYWU8cGU/KE8rPTIsVmU9YWUpOihYKz0yLFZlPXBlLFpl''@;'; put 'put ''PXhlKSxudWxsIT09VmUmJll3KGwsYyxhLGYsVmUsWmUsbSxfKSxhZT1PPGQubGVuZ3RoP2RbT106bnVsbCxwZT1YPGgubGVuZ3RoP2hbWF06bnVsbH19KGQsXyxtLG1bWm9dLG1baCsxXSxtW2grMV09ZnVuY3Rpb24gbkIobCxjLGEpe2lmKG51bGw9PWF8fCIiPT09YSlyZXR1cm4geGE7Y29u''@;'; put 'put ''c3QgZj1bXSxkPWdoKGEpO2lmKEFycmF5LmlzQXJyYXkoZCkpZm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspbChmLGRbaF0sITApO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBkKWZvcihjb25zdCBoIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShoKSYmbChmLGgsZFtoXSk7ZWxzZSJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgZCYmYyhmLGQpO3JldHVybiBmfShsLGMsYSksZixoKX19KEl1LGJmLHpwKFFyKCksbCxjLGEpLCEwKX1mdW5jdGlvbiBtMShsLGMsYSl7Y29uc3QgZj1RcigpO3JldHVybiBHdShmLHBwKCksYykmJlpjKElhKCksUWwoKSxmLGwsYyxmW1pvXSxhLCEwKSxtMX1mdW5jdGlvbiBf''@;'; put 'put ''ZyhsLGMsYSl7Y29uc3QgZj1RcigpO2lmKEd1KGYscHAoKSxjKSl7Y29uc3QgaD1JYSgpLG09UWwoKTtaYyhoLG0sZixsLGMsdlQocl8oaC5kYXRhKSxtLGYpLGEsITApfXJldHVybiBfZ31jb25zdCBCMj12b2lkIDA7dmFyIHB2PVsiZW4iLFtbImEiLCJwIl0sWyJBTSIsIlBNIl0sQjJdLFtb''@;'; put 'put ''IkFNIiwiUE0iXSxCMixCMl0sW1siUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJd''@;'; put 'put ''LFsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXV0sQjIsW1siSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMi''@;'; put 'put ''XSxbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLEIyLFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBE''@;'; put 'put ''b21pbmkiXV0sMCxbNiwwXSxbIk0vZC95eSIsIk1NTSBkLCB5IiwiTU1NTSBkLCB5IiwiRUVFRSwgTU1NTSBkLCB5Il0sWyJoOm1tIGEiLCJoOm1tOnNzIGEiLCJoOm1tOnNzIGEgeiIsImg6bW06c3MgYSB6enp6Il0sWyJ7MX0sIHswfSIsQjIsInsxfSAnYXQnIHswfSIsQjJdLFsiLiIsIiwi''@;'; put 'put ''LCI7IiwiJSIsIisiLCItIiwiRSIsIlx4ZDciLCJcdTIwMzAiLCJcdTIyMWUiLCJOYU4iLCI6Il0sWyIjLCMjMC4jIyMiLCIjLCMjMCUiLCJceGE0IywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gX08obCl7Y29uc3QgYT1NYXRoLmZsb29y''@;'; put 'put ''KE1hdGguYWJzKGwpKSxmPWwudG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1hJiYwPT09Zj8xOjV9XTtsZXQgZGQ9e307ZnVuY3Rpb24gS3MobCl7Y29uc3QgYz1mdW5jdGlvbiBnQihsKXtyZXR1cm4gbC50b0xvd2VyQ2FzZSgpLnJlcGxhY2Uo''@;'; put 'put ''L18vZywiLSIpfShsKTtsZXQgYT1lQyhjKTtpZihhKXJldHVybiBhO2NvbnN0IGY9Yy5zcGxpdCgiLSIpWzBdO2lmKGE9ZUMoZiksYSlyZXR1cm4gYTtpZigiZW4iPT09ZilyZXR1cm4gcHY7dGhyb3cgbmV3IElyKDcwMSwhMSl9ZnVuY3Rpb24gZUMobCl7cmV0dXJuIGwgaW4gZGR8fChkZFts''@;'; put 'put ''XT1QaS5uZyYmUGkubmcuY29tbW9uJiZQaS5uZy5jb21tb24ubG9jYWxlcyYmUGkubmcuY29tbW9uLmxvY2FsZXNbbF0pLGRkW2xdfXZhciBlYT1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsbFtsLkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNG''@;'; put 'put ''b3JtYXQiLGxbbC5EYXlQZXJpb2RzU3RhbmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLGxbbC5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0IixsW2wuRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIixsW2wuTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLGxb''@;'; put 'put ''bC5Nb250aHNTdGFuZGFsb25lPTZdPSJNb250aHNTdGFuZGFsb25lIixsW2wuRXJhcz03XT0iRXJhcyIsbFtsLkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsbFtsLldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIixsW2wuRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQi''@;'; put 'put ''LGxbbC5UaW1lRm9ybWF0PTExXT0iVGltZUZvcm1hdCIsbFtsLkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLGxbbC5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsbFtsLk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIixsW2wuQ3VycmVuY3lDb2Rl''@;'; put 'put ''PTE1XT0iQ3VycmVuY3lDb2RlIixsW2wuQ3VycmVuY3lTeW1ib2w9MTZdPSJDdXJyZW5jeVN5bWJvbCIsbFtsLkN1cnJlbmN5TmFtZT0xN109IkN1cnJlbmN5TmFtZSIsbFtsLkN1cnJlbmNpZXM9MThdPSJDdXJyZW5jaWVzIixsW2wuRGlyZWN0aW9uYWxpdHk9MTldPSJEaXJlY3Rpb25hbGl0''@;'; put 'put ''eSIsbFtsLlBsdXJhbENhc2U9MjBdPSJQbHVyYWxDYXNlIixsW2wuRXh0cmFEYXRhPTIxXT0iRXh0cmFEYXRhIixsfShlYXx8e30pO2NvbnN0IHFwPSJlbi1VUyI7bGV0IG9lPXFwO2Z1bmN0aW9uIFVyKGwsYyxhLGYsZCl7aWYobD1DbyhsKSxBcnJheS5pc0FycmF5KGwpKWZvcihsZXQgaD0w''@;'; put 'put ''O2g8bC5sZW5ndGg7aCsrKVVyKGxbaF0sYyxhLGYsZCk7ZWxzZXtjb25zdCBoPUlhKCksbT1RcigpO2xldCBfPVQyKGwpP2w6Q28obC5wcm92aWRlKSxPPURBKGwpO2NvbnN0IFg9RHUoKSxhZT0xMDQ4NTc1JlgucHJvdmlkZXJJbmRleGVzLHBlPVguZGlyZWN0aXZlU3RhcnQsYmU9WC5wcm92''@;'; put 'put ''aWRlckluZGV4ZXM+PjIwO2lmKFQyKGwpfHwhbC5tdWx0aSl7Y29uc3QgeGU9bmV3IE9tKE8sZCxydCksVmU9ZmkoXyxjLGQ/YWU6YWUrYmUscGUpOy0xPT09VmU/KGZfKHU4KFgsbSksaCxfKSxGcihoLGwsYy5sZW5ndGgpLGMucHVzaChfKSxYLmRpcmVjdGl2ZVN0YXJ0KyssWC5kaXJlY3Rp''@;'; put 'put ''dmVFbmQrKyxkJiYoWC5wcm92aWRlckluZGV4ZXMrPTEwNDg1NzYpLGEucHVzaCh4ZSksbS5wdXNoKHhlKSk6KGFbVmVdPXhlLG1bVmVdPXhlKX1lbHNle2NvbnN0IHhlPWZpKF8sYyxhZStiZSxwZSksVmU9ZmkoXyxjLGFlLGFlK2JlKSxsdD1WZT49MCYmYVtWZV07aWYoZCYmIWx0fHwhZCYm''@;'; put 'put ''ISh4ZT49MCYmYVt4ZV0pKXtmXyh1OChYLG0pLGgsXyk7Y29uc3QgZHQ9ZnVuY3Rpb24gJG8obCxjLGEsZixkKXtjb25zdCBoPW5ldyBPbShsLGEscnQpO3JldHVybiBoLm11bHRpPVtdLGguaW5kZXg9YyxoLmNvbXBvbmVudFByb3ZpZGVycz0wLGtpKGgsZCxmJiYhYSksaH0oZD9nbzpFbyxh''@;'; put 'put ''Lmxlbmd0aCxkLGYsTyk7IWQmJmx0JiYoYVtWZV0ucHJvdmlkZXJGYWN0b3J5PWR0KSxGcihoLGwsYy5sZW5ndGgsMCksYy5wdXNoKF8pLFguZGlyZWN0aXZlU3RhcnQrKyxYLmRpcmVjdGl2ZUVuZCsrLGQmJihYLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksYS5wdXNoKGR0KSxtLnB1c2go''@;'; put 'put ''ZHQpfWVsc2UgRnIoaCxsLHhlPi0xP3hlOlZlLGtpKGFbZD9WZTp4ZV0sTywhZCYmZikpOyFkJiZmJiZsdCYmYVtWZV0uY29tcG9uZW50UHJvdmlkZXJzKyt9fX1mdW5jdGlvbiBGcihsLGMsYSxmKXtjb25zdCBkPVQyKGMpLGg9ZnVuY3Rpb24gWG0obCl7cmV0dXJuISFsLnVzZUNsYXNzfShj''@;'; put 'put ''KTtpZihkfHxoKXtjb25zdCBPPShoP0NvKGMudXNlQ2xhc3MpOmMpLnByb3RvdHlwZS5uZ09uRGVzdHJveTtpZihPKXtjb25zdCBYPWwuZGVzdHJveUhvb2tzfHwobC5kZXN0cm95SG9va3M9W10pO2lmKCFkJiZjLm11bHRpKXtjb25zdCBhZT1YLmluZGV4T2YoYSk7LTE9PT1hZT9YLnB1c2go''@;'; put 'put ''YSxbZixPXSk6WFthZSsxXS5wdXNoKGYsTyl9ZWxzZSBYLnB1c2goYSxPKX19fWZ1bmN0aW9uIGtpKGwsYyxhKXtyZXR1cm4gYSYmbC5jb21wb25lbnRQcm92aWRlcnMrKyxsLm11bHRpLnB1c2goYyktMX1mdW5jdGlvbiBmaShsLGMsYSxmKXtmb3IobGV0IGQ9YTtkPGY7ZCsrKWlmKGNbZF09''@;'; put 'put ''PT1sKXJldHVybiBkO3JldHVybi0xfWZ1bmN0aW9uIEVvKGwsYyxhLGYpe3JldHVybiBCaSh0aGlzLm11bHRpLFtdKX1mdW5jdGlvbiBnbyhsLGMsYSxmKXtjb25zdCBkPXRoaXMubXVsdGk7bGV0IGg7aWYodGhpcy5wcm92aWRlckZhY3Rvcnkpe2NvbnN0IG09dGhpcy5wcm92aWRlckZhY3Rv''@;'; put 'put ''cnkuY29tcG9uZW50UHJvdmlkZXJzLF89QzIoYSxhW2ppXSx0aGlzLnByb3ZpZGVyRmFjdG9yeS5pbmRleCxmKTtoPV8uc2xpY2UoMCxtKSxCaShkLGgpO2ZvcihsZXQgTz1tO088Xy5sZW5ndGg7TysrKWgucHVzaChfW09dKX1lbHNlIGg9W10sQmkoZCxoKTtyZXR1cm4gaH1mdW5jdGlvbiBC''@;'; put 'put ''aShsLGMpe2ZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKWMucHVzaCgoMCxsW2FdKSgpKTtyZXR1cm4gY31mdW5jdGlvbiByaShsLGM9W10pe3JldHVybiBhPT57YS5wcm92aWRlcnNSZXNvbHZlcj0oZixkKT0+ZnVuY3Rpb24geXIobCxjLGEpe2NvbnN0IGY9SWEoKTtpZihmLmZpcnN0Q3Jl''@;'; put 'put ''YXRlUGFzcyl7Y29uc3QgZD1hYyhsKTtVcihhLGYuZGF0YSxmLmJsdWVwcmludCxkLCEwKSxVcihjLGYuZGF0YSxmLmJsdWVwcmludCxkLCExKX19KGYsZD9kKGwpOmwsYyl9fWNsYXNzIFhze31jbGFzcyBndXt9Y2xhc3MgejIgZXh0ZW5kcyBYc3tjb25zdHJ1Y3RvcihjLGEsZil7c3VwZXIo''@;'; put 'put ''KSx0aGlzLl9wYXJlbnQ9YSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPVtdLHRoaXMuZGVzdHJveUNicz1bXSx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uZXcga1QodGhpcyk7Y29uc3QgZD1adShjKTt0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPWNkKGQuYm9vdHN0cmFwKSx0''@;'; put 'put ''aGlzLl9yM0luamVjdG9yPWZ3KGMsYSxbe3Byb3ZpZGU6WHMsdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6YzEsdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9LC4uLmZdLEtsKGMpLG5ldyBTZXQoWyJlbnZpcm9ubWVudCJdKSksdGhpcy5fcjNJbmplY3Rvci5yZXNvbHZl''@;'; put 'put ''SW5qZWN0b3JJbml0aWFsaXplcnMoKSx0aGlzLmluc3RhbmNlPXRoaXMuX3IzSW5qZWN0b3IuZ2V0KGMpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9yM0luamVjdG9yfWRlc3Ryb3koKXtjb25zdCBjPXRoaXMuX3IzSW5qZWN0b3I7IWMuZGVzdHJveWVkJiZjLmRlc3Ryb3koKSx0aGlz''@;'; put 'put ''LmRlc3Ryb3lDYnMuZm9yRWFjaChhPT5hKCkpLHRoaXMuZGVzdHJveUNicz1udWxsfW9uRGVzdHJveShjKXt0aGlzLmRlc3Ryb3lDYnMucHVzaChjKX19Y2xhc3MgaGQgZXh0ZW5kcyBndXtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT1jfWNyZWF0ZShjKXtyZXR1cm4g''@;'; put 'put ''bmV3IHoyKHRoaXMubW9kdWxlVHlwZSxjLFtdKX19Y2xhc3MgQ2YgZXh0ZW5kcyBYc3tjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBrVCh0aGlzKSx0aGlzLmluc3RhbmNlPW51bGw7Y29uc3QgYT1uZXcgWV8oWy4uLmMucHJvdmlkZXJz''@;'; put 'put ''LHtwcm92aWRlOlhzLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOmMxLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sYy5wYXJlbnR8fEg4KCksYy5kZWJ1Z05hbWUsbmV3IFNldChbImVudmlyb25tZW50Il0pKTt0aGlzLmluamVjdG9yPWEsYy5ydW5FbnZpcm9ubWVu''@;'; put 'put ''dEluaXRpYWxpemVycyYmYS5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKX1kZXN0cm95KCl7dGhpcy5pbmplY3Rvci5kZXN0cm95KCl9b25EZXN0cm95KGMpe3RoaXMuaW5qZWN0b3Iub25EZXN0cm95KGMpfX1mdW5jdGlvbiB5QihsLGMsYT1udWxsKXtyZXR1cm4gbmV3IENmKHtwcm92''@;'; put 'put ''aWRlcnM6bCxwYXJlbnQ6YyxkZWJ1Z05hbWU6YSxydW5FbnZpcm9ubWVudEluaXRpYWxpemVyczohMH0pLmluamVjdG9yfWxldCBzdmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9pbmplY3Rvcj1hLHRoaXMuY2FjaGVkSW5qZWN0b3JzPW5ldyBNYXB9Z2V0T3JDcmVhdGVT''@;'; put 'put ''dGFuZGFsb25lSW5qZWN0b3IoYSl7aWYoIWEuc3RhbmRhbG9uZSlyZXR1cm4gbnVsbDtpZighdGhpcy5jYWNoZWRJbmplY3RvcnMuaGFzKGEpKXtjb25zdCBmPXhBKDAsYS50eXBlKSxkPWYubGVuZ3RoPjA/eUIoW2ZdLHRoaXMuX2luamVjdG9yLGBTdGFuZGFsb25lWyR7YS50eXBlLm5hbWV9''@;'; put 'put ''XWApOm51bGw7dGhpcy5jYWNoZWRJbmplY3RvcnMuc2V0KGEsZCl9cmV0dXJuIHRoaXMuY2FjaGVkSW5qZWN0b3JzLmdldChhKX1uZ09uRGVzdHJveSgpe3RyeXtmb3IoY29uc3QgYSBvZiB0aGlzLmNhY2hlZEluamVjdG9ycy52YWx1ZXMoKSludWxsIT09YSYmYS5kZXN0cm95KCl9ZmluYWxs''@;'; put 'put ''eXt0aGlzLmNhY2hlZEluamVjdG9ycy5jbGVhcigpfX19cmV0dXJuIGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxwcm92aWRlZEluOiJlbnZpcm9ubWVudCIsZmFjdG9yeTooKT0+bmV3IGwoc3IodTEpKX0pLGx9KSgpO2Z1bmN0aW9uIExlZShsKXtsLmdldFN0YW5kYWxvbmVJbmplY3Rvcj1j''@;'; put 'put ''PT5jLmdldChzdmUpLmdldE9yQ3JlYXRlU3RhbmRhbG9uZUluamVjdG9yKGwpfWZ1bmN0aW9uIFhhKGwsYyxhKXtjb25zdCBmPVl1KCkrbCxkPVFyKCk7cmV0dXJuIGRbZl09PT1xbz95ZihkLGYsYT9jLmNhbGwoYSk6YygpKTpmdW5jdGlvbiBjZyhsLGMpe3JldHVybiBsW2NdfShkLGYpfWZ1''@;'; put 'put ''bmN0aW9uIF9oKGwsYyxhLGYpe3JldHVybiBqZWUoUXIoKSxZdSgpLGwsYyxhLGYpfWZ1bmN0aW9uIHdoKGwsYyxhLGYsZCl7cmV0dXJuIHplZShRcigpLFl1KCksbCxjLGEsZixkKX1mdW5jdGlvbiBuQyhsLGMsYSxmLGQsaCl7cmV0dXJuIFVlZShRcigpLFl1KCksbCxjLGEsZixkLGgpfWZ1''@;'; put 'put ''bmN0aW9uIE1PKGwsYyxhLGYsZCxoLG0pe3JldHVybiBmdW5jdGlvbiBaZWUobCxjLGEsZixkLGgsbSxfLE8pe2NvbnN0IFg9YythO3JldHVybiB4MChsLFgsZCxoLG0sXyk/eWYobCxYKzQsTz9mLmNhbGwoTyxkLGgsbSxfKTpmKGQsaCxtLF8pKTpyQyhsLFgrNCl9KFFyKCksWXUoKSxsLGMs''@;'; put 'put ''YSxmLGQsaCxtKX1mdW5jdGlvbiByQyhsLGMpe2NvbnN0IGE9bFtjXTtyZXR1cm4gYT09PXFvP3ZvaWQgMDphfWZ1bmN0aW9uIGplZShsLGMsYSxmLGQsaCl7Y29uc3QgbT1jK2E7cmV0dXJuIEd1KGwsbSxkKT95ZihsLG0rMSxoP2YuY2FsbChoLGQpOmYoZCkpOnJDKGwsbSsxKX1mdW5jdGlv''@;'; put 'put ''biB6ZWUobCxjLGEsZixkLGgsbSl7Y29uc3QgXz1jK2E7cmV0dXJuIEYyKGwsXyxkLGgpP3lmKGwsXysyLG0/Zi5jYWxsKG0sZCxoKTpmKGQsaCkpOnJDKGwsXysyKX1mdW5jdGlvbiBVZWUobCxjLGEsZixkLGgsbSxfKXtjb25zdCBPPWMrYTtyZXR1cm4gYXYobCxPLGQsaCxtKT95ZihsLE8r''@;'; put 'put ''MyxfP2YuY2FsbChfLGQsaCxtKTpmKGQsaCxtKSk6ckMobCxPKzMpfWZ1bmN0aW9uIHdsKGwsYyl7Y29uc3QgYT1JYSgpO2xldCBmO2NvbnN0IGQ9bCt5YTthLmZpcnN0Q3JlYXRlUGFzcz8oZj1mdW5jdGlvbiBDdmUobCxjKXtpZihjKWZvcihsZXQgYT1jLmxlbmd0aC0xO2E+PTA7YS0tKXtj''@;'; put 'put ''b25zdCBmPWNbYV07aWYobD09PWYubmFtZSlyZXR1cm4gZn19KGMsYS5waXBlUmVnaXN0cnkpLGEuZGF0YVtkXT1mLGYub25EZXN0cm95JiYoYS5kZXN0cm95SG9va3M/Pz1bXSkucHVzaChkLGYub25EZXN0cm95KSk6Zj1hLmRhdGFbZF07Y29uc3QgaD1mLmZhY3Rvcnl8fChmLmZhY3Rvcnk9''@;'; put 'put ''YWYoZi50eXBlKSksbT1waShydCk7dHJ5e2NvbnN0IF89dWYoITEpLE89aCgpO3JldHVybiB1ZihfKSxmdW5jdGlvbiBIVihsLGMsYSxmKXthPj1sLmRhdGEubGVuZ3RoJiYobC5kYXRhW2FdPW51bGwsbC5ibHVlcHJpbnRbYV09bnVsbCksY1thXT1mfShhLFFyKCksZCxPKSxPfWZpbmFsbHl7''@;'; put 'put ''cGkobSl9fWZ1bmN0aW9uIEpzKGwsYyxhKXtjb25zdCBmPWwreWEsZD1RcigpLGg9SmUoZCxmKTtyZXR1cm4gaUMoZCxmKT9qZWUoZCxZdSgpLGMsaC50cmFuc2Zvcm0sYSxoKTpoLnRyYW5zZm9ybShhKX1mdW5jdGlvbiB3ZyhsLGMsYSxmKXtjb25zdCBkPWwreWEsaD1RcigpLG09SmUoaCxk''@;'; put 'put ''KTtyZXR1cm4gaUMoaCxkKT96ZWUoaCxZdSgpLGMsbS50cmFuc2Zvcm0sYSxmLG0pOm0udHJhbnNmb3JtKGEsZil9ZnVuY3Rpb24gX0IobCxjLGEsZixkKXtjb25zdCBoPWwreWEsbT1RcigpLF89SmUobSxoKTtyZXR1cm4gaUMobSxoKT9VZWUobSxZdSgpLGMsXy50cmFuc2Zvcm0sYSxmLGQs''@;'; put 'put ''Xyk6Xy50cmFuc2Zvcm0oYSxmLGQpfWZ1bmN0aW9uIGlDKGwsYyl7cmV0dXJuIGxbamldLmRhdGFbY10ucHVyZX1mdW5jdGlvbiB3QihsKXtyZXR1cm4gYz0+e3NldFRpbWVvdXQobCx2b2lkIDAsYyl9fWNvbnN0IHhyPWNsYXNzIGt2ZSBleHRlbmRzIHdle2NvbnN0cnVjdG9yKGM9ITEpe3N1''@;'; put 'put ''cGVyKCksdGhpcy5fX2lzQXN5bmM9Y31lbWl0KGMpe3N1cGVyLm5leHQoYyl9c3Vic2NyaWJlKGMsYSxmKXtsZXQgZD1jLGg9YXx8KCgpPT5udWxsKSxtPWY7aWYoYyYmIm9iamVjdCI9PXR5cGVvZiBjKXtjb25zdCBPPWM7ZD1PLm5leHQ/LmJpbmQoTyksaD1PLmVycm9yPy5iaW5kKE8pLG09''@;'; put 'put ''Ty5jb21wbGV0ZT8uYmluZChPKX10aGlzLl9faXNBc3luYyYmKGg9d0IoaCksZCYmKGQ9d0IoZCkpLG0mJihtPXdCKG0pKSk7Y29uc3QgXz1zdXBlci5zdWJzY3JpYmUoe25leHQ6ZCxlcnJvcjpoLGNvbXBsZXRlOm19KTtyZXR1cm4gYyBpbnN0YW5jZW9mIHRlJiZjLmFkZChfKSxffX07ZnVu''@;'; put 'put ''Y3Rpb24gRXZlKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbU3ltYm9sLml0ZXJhdG9yXSgpfWNsYXNzIFUye2dldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyB4cil9Y29uc3RydWN0b3IoYz0hMSl7dGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09u''@;'; put 'put ''bHk9Yyx0aGlzLmRpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fY2hhbmdlc0RldGVjdGVkPSExLHRoaXMuX2NoYW5nZXM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMuZmlyc3Q9dm9pZCAwLHRoaXMubGFzdD12b2lkIDA7Y29uc3QgYT1VMi5wcm90b3R5cGU7YVtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHwoYVtTeW1ib2wuaXRlcmF0b3JdPUV2ZSl9Z2V0KGMpe3JldHVybiB0aGlzLl9yZXN1bHRzW2NdfW1hcChjKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAoYyl9ZmlsdGVyKGMpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcihjKX1maW5kKGMpe3JldHVybiB0aGlzLl9yZXN1bHRz''@;'; put 'put ''LmZpbmQoYyl9cmVkdWNlKGMsYSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKGMsYSl9Zm9yRWFjaChjKXt0aGlzLl9yZXN1bHRzLmZvckVhY2goYyl9c29tZShjKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKGMpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgp''@;'; put 'put ''fXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldChjLGEpe2NvbnN0IGY9dGhpcztmLmRpcnR5PSExO2NvbnN0IGQ9ZnVuY3Rpb24gazAobCl7cmV0dXJuIGwuZmxhdChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfShjKTsodGhpcy5fY2hhbmdlc0RldGVj''@;'; put 'put ''dGVkPSFmdW5jdGlvbiBmZihsLGMsYSl7aWYobC5sZW5ndGghPT1jLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGY9MDtmPGwubGVuZ3RoO2YrKyl7bGV0IGQ9bFtmXSxoPWNbZl07aWYoYSYmKGQ9YShkKSxoPWEoaCkpLGghPT1kKXJldHVybiExfXJldHVybiEwfShmLl9yZXN1bHRzLGQsYSkp''@;'; put 'put ''JiYoZi5fcmVzdWx0cz1kLGYubGVuZ3RoPWQubGVuZ3RoLGYubGFzdD1kW3RoaXMubGVuZ3RoLTFdLGYuZmlyc3Q9ZFswXSl9bm90aWZ5T25DaGFuZ2VzKCl7dGhpcy5fY2hhbmdlcyYmKHRoaXMuX2NoYW5nZXNEZXRlY3RlZHx8IXRoaXMuX2VtaXREaXN0aW5jdENoYW5nZXNPbmx5KSYmdGhp''@;'; put 'put ''cy5fY2hhbmdlcy5lbWl0KHRoaXMpfXNldERpcnR5KCl7dGhpcy5kaXJ0eT0hMH1kZXN0cm95KCl7dGhpcy5jaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5jaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fWxldCB6bD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5fX05HX0VMRU1FTlRfSURfXz1UdmUsbH0p''@;'; put 'put ''KCk7Y29uc3QgeHZlPXpsLEF2ZT1jbGFzcyBleHRlbmRzIHh2ZXtjb25zdHJ1Y3RvcihjLGEsZil7c3VwZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PWMsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPWEsdGhpcy5lbGVtZW50UmVmPWZ9Z2V0IHNzcklkKCl7cmV0dXJuIHRoaXMuX2Rl''@;'; put 'put ''Y2xhcmF0aW9uVENvbnRhaW5lci50Vmlldz8uc3NySWR8fG51bGx9Y3JlYXRlRW1iZWRkZWRWaWV3KGMsYSl7cmV0dXJuIHRoaXMuY3JlYXRlRW1iZWRkZWRWaWV3SW1wbChjLGEsbnVsbCl9Y3JlYXRlRW1iZWRkZWRWaWV3SW1wbChjLGEsZil7Y29uc3QgbT10aGlzLl9kZWNsYXJhdGlvblRD''@;'; put 'put ''b250YWluZXIudFZpZXcsXz1xOCh0aGlzLl9kZWNsYXJhdGlvbkxWaWV3LG0sYyw0MDk2JnRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbUG9dPzQwOTY6MTYsbnVsbCxtLmRlY2xUTm9kZSxudWxsLG51bGwsbnVsbCxhfHxudWxsLGZ8fG51bGwpO19bbmhdPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdb''@;'; put 'put ''dGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtjb25zdCBYPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbeWNdO3JldHVybiBudWxsIT09WCYmKF9beWNdPVguY3JlYXRlRW1iZWRkZWRWaWV3KG0pKSx3dyhtLF8sYyksbmV3IHNnKF8pfX07ZnVuY3Rpb24gVHZlKCl7cmV0dXJuIGtP''@;'; put 'put ''KER1KCksUXIoKSl9ZnVuY3Rpb24ga08obCxjKXtyZXR1cm4gNCZsLnR5cGU/bmV3IEF2ZShjLGwsdWQobCxjKSk6bnVsbH1sZXQgZmE9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuX19OR19FTEVNRU5UX0lEX189RnZlLGx9KSgpO2Z1bmN0aW9uIEZ2ZSgpe3JldHVybiBYZWUoRHUoKSxRcigp''@;'; put 'put ''KX1jb25zdCBIdmU9ZmEsS2VlPWNsYXNzIGV4dGVuZHMgSHZle2NvbnN0cnVjdG9yKGMsYSxmKXtzdXBlcigpLHRoaXMuX2xDb250YWluZXI9Yyx0aGlzLl9ob3N0VE5vZGU9YSx0aGlzLl9ob3N0TFZpZXc9Zn1nZXQgZWxlbWVudCgpe3JldHVybiB1ZCh0aGlzLl9ob3N0VE5vZGUsdGhpcy5f''@;'; put 'put ''aG9zdExWaWV3KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IHZwKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpfWdldCBwYXJlbnRJbmplY3Rvcigpe2NvbnN0IGM9Y18odGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyk7aWYoVHgoYykpe2NvbnN0IGE9Z3AoYyx0aGlz''@;'; put 'put ''Ll9ob3N0TFZpZXcpLGY9c2goYyk7cmV0dXJuIG5ldyB2cChhW2ppXS5kYXRhW2YrOF0sYSl9cmV0dXJuIG5ldyB2cChudWxsLHRoaXMuX2hvc3RMVmlldyl9Y2xlYXIoKXtmb3IoO3RoaXMubGVuZ3RoPjA7KXRoaXMucmVtb3ZlKHRoaXMubGVuZ3RoLTEpfWdldChjKXtjb25zdCBhPXFlZSh0''@;'; put 'put ''aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWEmJmFbY118fG51bGx9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9sQ29udGFpbmVyLmxlbmd0aC1mdX1jcmVhdGVFbWJlZGRlZFZpZXcoYyxhLGYpe2xldCBkLGg7Im51bWJlciI9PXR5cGVvZiBmP2Q9ZjpudWxsIT1mJiYoZD1mLmlu''@;'; put 'put ''ZGV4LGg9Zi5pbmplY3Rvcik7Y29uc3QgXz1jLmNyZWF0ZUVtYmVkZGVkVmlld0ltcGwoYXx8e30saCxudWxsKTtyZXR1cm4gdGhpcy5pbnNlcnRJbXBsKF8sZCxmYWxzZSksX31jcmVhdGVDb21wb25lbnQoYyxhLGYsZCxoKXtjb25zdCBtPWMmJiFmdW5jdGlvbiBTMihsKXtyZXR1cm4iZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgbH0oYyk7bGV0IF87aWYobSlfPWE7ZWxzZXtjb25zdCBaZT1hfHx7fTtfPVplLmluZGV4LGY9WmUuaW5qZWN0b3IsZD1aZS5wcm9qZWN0YWJsZU5vZGVzLGg9WmUuZW52aXJvbm1lbnRJbmplY3Rvcnx8WmUubmdNb2R1bGVSZWZ9Y29uc3QgTz1tP2M6bmV3IHVnKG5h''@;'; put 'put ''KGMpKSxYPWZ8fHRoaXMucGFyZW50SW5qZWN0b3I7aWYoIWgmJm51bGw9PU8ubmdNb2R1bGUpe2NvbnN0IGx0PShtP1g6dGhpcy5wYXJlbnRJbmplY3RvcikuZ2V0KHUxLG51bGwpO2x0JiYoaD1sdCl9bmEoTy5jb21wb25lbnRUeXBlPz97fSk7Y29uc3QgeGU9Ty5jcmVhdGUoWCxkLG51bGws''@;'; put 'put ''aCk7cmV0dXJuIHRoaXMuaW5zZXJ0SW1wbCh4ZS5ob3N0VmlldyxfLGZhbHNlKSx4ZX1pbnNlcnQoYyxhKXtyZXR1cm4gdGhpcy5pbnNlcnRJbXBsKGMsYSwhMSl9aW5zZXJ0SW1wbChjLGEsZil7Y29uc3QgZD1jLl9sVmlldyxoPWRbamldO2lmKGZ1bmN0aW9uIFVuKGwpe3JldHVybiBkdShs''@;'; put 'put ''W2ZsXSl9KGQpKXtjb25zdCBPPXRoaXMuaW5kZXhPZihjKTtpZigtMSE9PU8pdGhpcy5kZXRhY2goTyk7ZWxzZXtjb25zdCBYPWRbZmxdLGFlPW5ldyBLZWUoWCxYW0dvXSxYW2ZsXSk7YWUuZGV0YWNoKGFlLmluZGV4T2YoYykpfX1jb25zdCBtPXRoaXMuX2FkanVzdEluZGV4KGEpLF89dGhp''@;'; put 'put ''cy5fbENvbnRhaW5lcjtpZihmdW5jdGlvbiBkbChsLGMsYSxmKXtjb25zdCBkPWZ1K2YsaD1hLmxlbmd0aDtmPjAmJihhW2QtMV1bWGxdPWMpLGY8aC1mdT8oY1tYbF09YVtkXSxzMShhLGZ1K2YsYykpOihhLnB1c2goYyksY1tYbF09bnVsbCksY1tmbF09YTtjb25zdCBtPWNbbmhdO251bGwh''@;'; put 'put ''PT1tJiZhIT09bSYmZnVuY3Rpb24gcVEobCxjKXtjb25zdCBhPWxbb2hdO2NbSmxdIT09Y1tmbF1bZmxdW0psXSYmKGxbejZdPSEwKSxudWxsPT09YT9sW29oXT1bY106YS5wdXNoKGMpfShtLGMpO2NvbnN0IF89Y1t5Y107bnVsbCE9PV8mJl8uaW5zZXJ0VmlldyhsKSxjW1BvXXw9MTI4fSho''@;'; put 'put ''LGQsXyxtKSwhZil7Y29uc3QgTz14XyhtLF8pLFg9ZFtab10sYWU9VHAoWCxfW0MwXSk7bnVsbCE9PWFlJiZmdW5jdGlvbiBESChsLGMsYSxmLGQsaCl7ZltOaV09ZCxmW0dvXT1jLFptKGwsZixhLDEsZCxoKX0oaCxfW0dvXSxYLGQsYWUsTyl9cmV0dXJuIGMuYXR0YWNoVG9WaWV3Q29udGFp''@;'; put 'put ''bmVyUmVmKCksczEoU0IoXyksbSxjKSxjfW1vdmUoYyxhKXtyZXR1cm4gdGhpcy5pbnNlcnQoYyxhKX1pbmRleE9mKGMpe2NvbnN0IGE9cWVlKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBudWxsIT09YT9hLmluZGV4T2YoYyk6LTF9cmVtb3ZlKGMpe2NvbnN0IGE9dGhpcy5fYWRqdXN0SW5k''@;'; put 'put ''ZXgoYywtMSksZj14Mih0aGlzLl9sQ29udGFpbmVyLGEpO2YmJihoOChTQih0aGlzLl9sQ29udGFpbmVyKSxhKSxBOChmW2ppXSxmKSl9ZGV0YWNoKGMpe2NvbnN0IGE9dGhpcy5fYWRqdXN0SW5kZXgoYywtMSksZj14Mih0aGlzLl9sQ29udGFpbmVyLGEpO3JldHVybiBmJiZudWxsIT1oOChT''@;'; put 'put ''Qih0aGlzLl9sQ29udGFpbmVyKSxhKT9uZXcgc2coZik6bnVsbH1fYWRqdXN0SW5kZXgoYyxhPTApe3JldHVybiBjPz90aGlzLmxlbmd0aCthfX07ZnVuY3Rpb24gcWVlKGwpe3JldHVybiBsWzhdfWZ1bmN0aW9uIFNCKGwpe3JldHVybiBsWzhdfHwobFs4XT1bXSl9ZnVuY3Rpb24gWGVlKGws''@;'; put 'put ''Yyl7bGV0IGE7Y29uc3QgZj1jW2wuaW5kZXhdO3JldHVybiBkdShmKT9hPWY6KGE9aFQoZixjLG51bGwsbCksY1tsLmluZGV4XT1hLGV2KGMsYSkpLEplZShhLGMsbCxmKSxuZXcgS2VlKGEsbCxjKX1sZXQgSmVlPWZ1bmN0aW9uIFFlZShsLGMsYSxmKXtpZihsW0MwXSlyZXR1cm47bGV0IGQ7''@;'; put 'put ''ZD04JmEudHlwZT9fbChmKTpmdW5jdGlvbiBOdmUobCxjKXtjb25zdCBhPWxbWm9dLGY9YS5jcmVhdGVDb21tZW50KCIiKSxkPVdzKGMsbCk7cmV0dXJuIHBmKGEsVHAoYSxkKSxmLGZ1bmN0aW9uIExIKGwsYyl7cmV0dXJuIGwubmV4dFNpYmxpbmcoYyl9KGEsZCksITEpLGZ9KGMsYSksbFtD''@;'; put 'put ''MF09ZH07Y2xhc3MgTUJ7Y29uc3RydWN0b3IoYyl7dGhpcy5xdWVyeUxpc3Q9Yyx0aGlzLm1hdGNoZXM9bnVsbH1jbG9uZSgpe3JldHVybiBuZXcgTUIodGhpcy5xdWVyeUxpc3QpfXNldERpcnR5KCl7dGhpcy5xdWVyeUxpc3Quc2V0RGlydHkoKX19Y2xhc3Mga0J7Y29uc3RydWN0b3IoYz1b''@;'; put 'put ''XSl7dGhpcy5xdWVyaWVzPWN9Y3JlYXRlRW1iZWRkZWRWaWV3KGMpe2NvbnN0IGE9Yy5xdWVyaWVzO2lmKG51bGwhPT1hKXtjb25zdCBmPW51bGwhPT1jLmNvbnRlbnRRdWVyaWVzP2MuY29udGVudFF1ZXJpZXNbMF06YS5sZW5ndGgsZD1bXTtmb3IobGV0IGg9MDtoPGY7aCsrKXtjb25zdCBt''@;'; put 'put ''PWEuZ2V0QnlJbmRleChoKTtkLnB1c2godGhpcy5xdWVyaWVzW20uaW5kZXhJbkRlY2xhcmF0aW9uVmlld10uY2xvbmUoKSl9cmV0dXJuIG5ldyBrQihkKX1yZXR1cm4gbnVsbH1pbnNlcnRWaWV3KGMpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXMoYyl9ZGV0YWNoVmlldyhjKXt0aGlz''@;'; put 'put ''LmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGMpfWRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGMpe2ZvcihsZXQgYT0wO2E8dGhpcy5xdWVyaWVzLmxlbmd0aDthKyspbnVsbCE9PWl0ZShjLGEpLm1hdGNoZXMmJnRoaXMucXVlcmllc1thXS5zZXREaXJ0eSgpfX1jbGFzcyBldGV7Y29uc3RydWN0''@;'; put 'put ''b3IoYyxhLGY9bnVsbCl7dGhpcy5wcmVkaWNhdGU9Yyx0aGlzLmZsYWdzPWEsdGhpcy5yZWFkPWZ9fWNsYXNzIEVCe2NvbnN0cnVjdG9yKGM9W10pe3RoaXMucXVlcmllcz1jfWVsZW1lbnRTdGFydChjLGEpe2ZvcihsZXQgZj0wO2Y8dGhpcy5xdWVyaWVzLmxlbmd0aDtmKyspdGhpcy5xdWVy''@;'; put 'put ''aWVzW2ZdLmVsZW1lbnRTdGFydChjLGEpfWVsZW1lbnRFbmQoYyl7Zm9yKGxldCBhPTA7YTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2ErKyl0aGlzLnF1ZXJpZXNbYV0uZWxlbWVudEVuZChjKX1lbWJlZGRlZFRWaWV3KGMpe2xldCBhPW51bGw7Zm9yKGxldCBmPTA7Zjx0aGlzLmxlbmd0aDtmKysp''@;'; put 'put ''e2NvbnN0IGQ9bnVsbCE9PWE/YS5sZW5ndGg6MCxoPXRoaXMuZ2V0QnlJbmRleChmKS5lbWJlZGRlZFRWaWV3KGMsZCk7aCYmKGguaW5kZXhJbkRlY2xhcmF0aW9uVmlldz1mLG51bGwhPT1hP2EucHVzaChoKTphPVtoXSl9cmV0dXJuIG51bGwhPT1hP25ldyBFQihhKTpudWxsfXRlbXBsYXRl''@;'; put 'put ''KGMsYSl7Zm9yKGxldCBmPTA7Zjx0aGlzLnF1ZXJpZXMubGVuZ3RoO2YrKyl0aGlzLnF1ZXJpZXNbZl0udGVtcGxhdGUoYyxhKX1nZXRCeUluZGV4KGMpe3JldHVybiB0aGlzLnF1ZXJpZXNbY119Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLnF1ZXJpZXMubGVuZ3RofXRyYWNrKGMpe3RoaXMu''@;'; put 'put ''cXVlcmllcy5wdXNoKGMpfX1jbGFzcyB4Qntjb25zdHJ1Y3RvcihjLGE9LTEpe3RoaXMubWV0YWRhdGE9Yyx0aGlzLm1hdGNoZXM9bnVsbCx0aGlzLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9LTEsdGhpcy5jcm9zc2VzTmdUZW1wbGF0ZT0hMSx0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZT0hMCx0''@;'; put 'put ''aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleD1hfWVsZW1lbnRTdGFydChjLGEpe3RoaXMuaXNBcHBseWluZ1RvTm9kZShhKSYmdGhpcy5tYXRjaFROb2RlKGMsYSl9ZWxlbWVudEVuZChjKXt0aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleD09PWMuaW5kZXgmJih0aGlzLl9hcHBsaWVzVG9OZXh0''@;'; put 'put ''Tm9kZT0hMSl9dGVtcGxhdGUoYyxhKXt0aGlzLmVsZW1lbnRTdGFydChjLGEpfWVtYmVkZGVkVFZpZXcoYyxhKXtyZXR1cm4gdGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGMpPyh0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSEwLHRoaXMuYWRkTWF0Y2goLWMuaW5kZXgsYSksbmV3IHhCKHRoaXMubWV0''@;'; put 'put ''YWRhdGEpKTpudWxsfWlzQXBwbHlpbmdUb05vZGUoYyl7aWYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGUmJjEhPSgxJnRoaXMubWV0YWRhdGEuZmxhZ3MpKXtjb25zdCBhPXRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4O2xldCBmPWMucGFyZW50O2Zvcig7bnVsbCE9PWYmJjgmZi50eXBlJiZm''@;'; put 'put ''LmluZGV4IT09YTspZj1mLnBhcmVudDtyZXR1cm4gYT09PShudWxsIT09Zj9mLmluZGV4Oi0xKX1yZXR1cm4gdGhpcy5fYXBwbGllc1RvTmV4dE5vZGV9bWF0Y2hUTm9kZShjLGEpe2NvbnN0IGY9dGhpcy5tZXRhZGF0YS5wcmVkaWNhdGU7aWYoQXJyYXkuaXNBcnJheShmKSlmb3IobGV0IGQ9''@;'; put 'put ''MDtkPGYubGVuZ3RoO2QrKyl7Y29uc3QgaD1mW2RdO3RoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGMsYSxqdmUoYSxoKSksdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oYyxhLGM4KGEsYyxoLCExLCExKSl9ZWxzZSBmPT09emw/NCZhLnR5cGUmJnRoaXMubWF0Y2hUTm9kZVdp''@;'; put 'put ''dGhSZWFkT3B0aW9uKGMsYSwtMSk6dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oYyxhLGM4KGEsYyxmLCExLCExKSl9bWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGMsYSxmKXtpZihudWxsIT09Zil7Y29uc3QgZD10aGlzLm1ldGFkYXRhLnJlYWQ7aWYobnVsbCE9PWQpaWYoZD09PVZp''@;'; put 'put ''fHxkPT09ZmF8fGQ9PT16bCYmNCZhLnR5cGUpdGhpcy5hZGRNYXRjaChhLmluZGV4LC0yKTtlbHNle2NvbnN0IGg9YzgoYSxjLGQsITEsITEpO251bGwhPT1oJiZ0aGlzLmFkZE1hdGNoKGEuaW5kZXgsaCl9ZWxzZSB0aGlzLmFkZE1hdGNoKGEuaW5kZXgsZil9fWFkZE1hdGNoKGMsYSl7bnVs''@;'; put 'put ''bD09PXRoaXMubWF0Y2hlcz90aGlzLm1hdGNoZXM9W2MsYV06dGhpcy5tYXRjaGVzLnB1c2goYyxhKX19ZnVuY3Rpb24ganZlKGwsYyl7Y29uc3QgYT1sLmxvY2FsTmFtZXM7aWYobnVsbCE9PWEpZm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKz0yKWlmKGFbZl09PT1jKXJldHVybiBhW2YrMV07''@;'; put 'put ''cmV0dXJuIG51bGx9ZnVuY3Rpb24gVXZlKGwsYyxhLGYpe3JldHVybi0xPT09YT9mdW5jdGlvbiB6dmUobCxjKXtyZXR1cm4gMTEmbC50eXBlP3VkKGwsYyk6NCZsLnR5cGU/a08obCxjKTpudWxsfShjLGwpOi0yPT09YT9mdW5jdGlvbiBadmUobCxjLGEpe3JldHVybiBhPT09Vmk/dWQoYyxs''@;'; put 'put ''KTphPT09emw/a08oYyxsKTphPT09ZmE/WGVlKGMsbCk6dm9pZCAwfShsLGMsZik6QzIobCxsW2ppXSxhLGMpfWZ1bmN0aW9uIHR0ZShsLGMsYSxmKXtjb25zdCBkPWNbeWNdLnF1ZXJpZXNbZl07aWYobnVsbD09PWQubWF0Y2hlcyl7Y29uc3QgaD1sLmRhdGEsbT1hLm1hdGNoZXMsXz1bXTtm''@;'; put 'put ''b3IobGV0IE89MDtPPG0ubGVuZ3RoO08rPTIpe2NvbnN0IFg9bVtPXTtfLnB1c2goWDwwP251bGw6VXZlKGMsaFtYXSxtW08rMV0sYS5tZXRhZGF0YS5yZWFkKSl9ZC5tYXRjaGVzPV99cmV0dXJuIGQubWF0Y2hlc31mdW5jdGlvbiBBQihsLGMsYSxmKXtjb25zdCBkPWwucXVlcmllcy5nZXRC''@;'; put 'put ''eUluZGV4KGEpLGg9ZC5tYXRjaGVzO2lmKG51bGwhPT1oKXtjb25zdCBtPXR0ZShsLGMsZCxhKTtmb3IobGV0IF89MDtfPGgubGVuZ3RoO18rPTIpe2NvbnN0IE89aFtfXTtpZihPPjApZi5wdXNoKG1bXy8yXSk7ZWxzZXtjb25zdCBYPWhbXysxXSxhZT1jWy1PXTtmb3IobGV0IHBlPWZ1O3Bl''@;'; put 'put ''PGFlLmxlbmd0aDtwZSsrKXtjb25zdCBiZT1hZVtwZV07YmVbbmhdPT09YmVbZmxdJiZBQihiZVtqaV0sYmUsWCxmKX1pZihudWxsIT09YWVbb2hdKXtjb25zdCBwZT1hZVtvaF07Zm9yKGxldCBiZT0wO2JlPHBlLmxlbmd0aDtiZSsrKXtjb25zdCB4ZT1wZVtiZV07QUIoeGVbamldLHhlLFgs''@;'; put 'put ''Zil9fX19fXJldHVybiBmfWZ1bmN0aW9uIHVpKGwpe2NvbnN0IGM9UXIoKSxhPUlhKCksZj15eCgpO2lfKGYrMSk7Y29uc3QgZD1pdGUoYSxmKTtpZihsLmRpcnR5JiZmdW5jdGlvbiBSdChsKXtyZXR1cm4gND09KDQmbFtQb10pfShjKT09PSgyPT0oMiZkLm1ldGFkYXRhLmZsYWdzKSkpe2lm''@;'; put 'put ''KG51bGw9PT1kLm1hdGNoZXMpbC5yZXNldChbXSk7ZWxzZXtjb25zdCBoPWQuY3Jvc3Nlc05nVGVtcGxhdGU/QUIoYSxjLGYsW10pOnR0ZShhLGMsZCxmKTtsLnJlc2V0KGgsSTIpLGwubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gTm8obCxjLGEpe2NvbnN0''@;'; put 'put ''IGY9SWEoKTtmLmZpcnN0Q3JlYXRlUGFzcyYmKHJ0ZShmLG5ldyBldGUobCxjLGEpLC0xKSwyPT0oMiZjKSYmKGYuc3RhdGljVmlld1F1ZXJpZXM9ITApKSxudGUoZixRcigpLGMpfWZ1bmN0aW9uIEZvKGwsYyxhLGYpe2NvbnN0IGQ9SWEoKTtpZihkLmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3Qg''@;'; put 'put ''aD1EdSgpO3J0ZShkLG5ldyBldGUoYyxhLGYpLGguaW5kZXgpLGZ1bmN0aW9uIFd2ZShsLGMpe2NvbnN0IGE9bC5jb250ZW50UXVlcmllc3x8KGwuY29udGVudFF1ZXJpZXM9W10pO2MhPT0oYS5sZW5ndGg/YVthLmxlbmd0aC0xXTotMSkmJmEucHVzaChsLnF1ZXJpZXMubGVuZ3RoLTEsYyl9''@;'; put 'put ''KGQsbCksMj09KDImYSkmJihkLnN0YXRpY0NvbnRlbnRRdWVyaWVzPSEwKX1udGUoZCxRcigpLGEpfWZ1bmN0aW9uIGNpKCl7cmV0dXJuIGZ1bmN0aW9uIFl2ZShsLGMpe3JldHVybiBsW3ljXS5xdWVyaWVzW2NdLnF1ZXJ5TGlzdH0oUXIoKSx5eCgpKX1mdW5jdGlvbiBudGUobCxjLGEpe2Nv''@;'; put 'put ''bnN0IGY9bmV3IFUyKDQ9PSg0JmEpKTsoZnVuY3Rpb24gVE4obCxjLGEsZil7Y29uc3QgZD1tVChjKTtkLnB1c2goYSksbC5maXJzdENyZWF0ZVBhc3MmJmdUKGwpLnB1c2goZixkLmxlbmd0aC0xKX0pKGwsYyxmLGYuZGVzdHJveSksbnVsbD09PWNbeWNdJiYoY1t5Y109bmV3IGtCKSxjW3lj''@;'; put 'put ''XS5xdWVyaWVzLnB1c2gobmV3IE1CKGYpKX1mdW5jdGlvbiBydGUobCxjLGEpe251bGw9PT1sLnF1ZXJpZXMmJihsLnF1ZXJpZXM9bmV3IEVCKSxsLnF1ZXJpZXMudHJhY2sobmV3IHhCKGMsYSkpfWZ1bmN0aW9uIGl0ZShsLGMpe3JldHVybiBsLnF1ZXJpZXMuZ2V0QnlJbmRleChjKX1mdW5j''@;'; put 'put ''dGlvbiBLdShsLGMpe3JldHVybiBrTyhsLGMpfWNvbnN0IExCPW5ldyBNaSgiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIiKTtsZXQgUEI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21p''@;'; put 'put ''c2UoKGEsZik9Pnt0aGlzLnJlc29sdmU9YSx0aGlzLnJlamVjdD1mfSksdGhpcy5hcHBJbml0cz1IaShMQix7b3B0aW9uYWw6ITB9KT8/W119cnVuSW5pdGlhbGl6ZXJzKCl7aWYodGhpcy5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgYT1bXTtmb3IoY29uc3QgZCBvZiB0aGlzLmFwcEluaXRz''@;'; put 'put ''KXtjb25zdCBoPWQoKTtpZihwZyhoKSlhLnB1c2goaCk7ZWxzZSBpZihXVChoKSl7Y29uc3QgbT1uZXcgUHJvbWlzZSgoXyxPKT0+e2guc3Vic2NyaWJlKHtjb21wbGV0ZTpfLGVycm9yOk99KX0pO2EucHVzaChtKX19Y29uc3QgZj0oKT0+e3RoaXMuZG9uZT0hMCx0aGlzLnJlc29sdmUoKX07''@;'; put 'put ''UHJvbWlzZS5hbGwoYSkudGhlbigoKT0+e2YoKX0pLmNhdGNoKGQ9Pnt0aGlzLnJlamVjdChkKX0pLDA9PT1hLmxlbmd0aCYmZigpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rv''@;'; put 'put ''a2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpLHd0ZT0oKCk9PntjbGFzcyBse2xvZyhhKXtjb25zb2xlLmxvZyhhKX13YXJuKGEpe2NvbnNvbGUud2FybihhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9''@;'; put 'put ''LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLGx9KSgpO2NvbnN0IHBkPW5ldyBNaSgiTG9jYWxlSWQiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5IaShwZCxhYS5PcHRpb25hbHxhYS5Ta2lwU2VsZil8''@;'; put 'put ''fGZ1bmN0aW9uIGg3ZSgpe3JldHVybiB0eXBlb2YgJGxvY2FsaXplPCJ1IiYmJGxvY2FsaXplLmxvY2FsZXx8cXB9KCl9KTtsZXQgeE89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMudGFza0lkPTAsdGhpcy5wZW5kaW5nVGFza3M9bmV3IFNldCx0aGlzLmhhc1BlbmRpbmdUYXNr''@;'; put 'put ''cz1uZXcgT2UoITEpfWFkZCgpe3RoaXMuaGFzUGVuZGluZ1Rhc2tzLm5leHQoITApO2NvbnN0IGE9dGhpcy50YXNrSWQrKztyZXR1cm4gdGhpcy5wZW5kaW5nVGFza3MuYWRkKGEpLGF9cmVtb3ZlKGEpe3RoaXMucGVuZGluZ1Rhc2tzLmRlbGV0ZShhKSwwPT09dGhpcy5wZW5kaW5nVGFza3Mu''@;'; put 'put ''c2l6ZSYmdGhpcy5oYXNQZW5kaW5nVGFza3MubmV4dCghMSl9bmdPbkRlc3Ryb3koKXt0aGlzLnBlbmRpbmdUYXNrcy5jbGVhcigpLHRoaXMuaGFzUGVuZGluZ1Rhc2tzLm5leHQoITEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVw''@;'; put 'put ''cm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtjbGFzcyBnN2V7Y29uc3RydWN0b3IoYyxhKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT1jLHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWF9fWxldCBDdGU9KCgpPT57Y2xhc3MgbHtjb21w''@;'; put 'put ''aWxlTW9kdWxlU3luYyhhKXtyZXR1cm4gbmV3IGhkKGEpfWNvbXBpbGVNb2R1bGVBc3luYyhhKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcGlsZU1vZHVsZVN5bmMoYSkpfWNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyhhKXtjb25zdCBmPXRoaXMuY29tcGlsZU1v''@;'; put 'put ''ZHVsZVN5bmMoYSksaD1jZChadShhKS5kZWNsYXJhdGlvbnMpLnJlZHVjZSgobSxfKT0+e2NvbnN0IE89bmEoXyk7cmV0dXJuIE8mJm0ucHVzaChuZXcgdWcoTykpLG19LFtdKTtyZXR1cm4gbmV3IGc3ZShmLGgpfWNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzQXN5bmMoYSl7cmV0dXJu''@;'; put 'put ''IFByb21pc2UucmVzb2x2ZSh0aGlzLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyhhKSl9Y2xlYXJDYWNoZSgpe31jbGVhckNhY2hlRm9yKGEpe31nZXRNb2R1bGVJZChhKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3''@;'; put 'put ''NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2Z1bmN0aW9uIGt0ZSguLi5sKXt9Y2xhc3MgVW97Y29uc3RydWN0b3Ioe2VuYWJsZUxvbmdTdGFja1RyYWNlOmM9ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlv''@;'; put 'put ''bjphPSExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOmY9ITF9KXtpZih0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IHhyKCExKSx0aGlzLm9uTWljcm90''@;'; put 'put ''YXNrRW1wdHk9bmV3IHhyKCExKSx0aGlzLm9uU3RhYmxlPW5ldyB4cighMSksdGhpcy5vbkVycm9yPW5ldyB4cighMSksdHlwZW9mIFpvbmU+InUiKXRocm93IG5ldyBJcig5MDgsITEpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtjb25zdCBkPXRoaXM7ZC5fbmVzdGluZz0wLGQuX291dGVy''@;'; put 'put ''PWQuX2lubmVyPVpvbmUuY3VycmVudCxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYoZC5faW5uZXI9ZC5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLGMmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKGQuX2lubmVyPWQuX2lubmVyLmZvcmsoWm9u''@;'; put 'put ''ZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksZC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSFmJiZhLGQuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249ZixkLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxkLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25G''@;'; put 'put ''cmFtZT1mdW5jdGlvbiBiN2UoKXtjb25zdCBsPSJmdW5jdGlvbiI9PXR5cGVvZiBQaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7bGV0IGM9UGlbbD8icmVxdWVzdEFuaW1hdGlvbkZyYW1lIjoic2V0VGltZW91dCJdLGE9UGlbbD8iY2FuY2VsQW5pbWF0aW9uRnJhbWUiOiJjbGVhclRpbWVvdXQi''@;'; put 'put ''XTtpZih0eXBlb2YgWm9uZTwidSImJmMmJmEpe2NvbnN0IGY9Y1tab25lLl9fc3ltYm9sX18oIk9yaWdpbmFsRGVsZWdhdGUiKV07ZiYmKGM9Zik7Y29uc3QgZD1hW1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtkJiYoYT1kKX1yZXR1cm57bmF0aXZlUmVxdWVzdEFuaW1h''@;'; put 'put ''dGlvbkZyYW1lOmMsbmF0aXZlQ2FuY2VsQW5pbWF0aW9uRnJhbWU6YX19KCkubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGZ1bmN0aW9uIEM3ZShsKXtjb25zdCBjPSgpPT57IWZ1bmN0aW9uIHc3ZShsKXtsLmlzQ2hlY2tTdGFibGVSdW5uaW5nfHwtMSE9PWwubGFzdFJlcXVlc3RBbmlt''@;'; put 'put ''YXRpb25GcmFtZUlkfHwobC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9bC5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY2FsbChQaSwoKT0+e2wuZmFrZVRvcEV2ZW50VGFza3x8KGwuZmFrZVRvcEV2ZW50VGFzaz1ab25lLnJvb3Quc2NoZWR1bGVFdmVudFRhc2soImZha2VUb3BF''@;'; put 'put ''dmVudFRhc2siLCgpPT57bC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9LTEsSEIobCksbC5pc0NoZWNrU3RhYmxlUnVubmluZz0hMCxGQihsKSxsLmlzQ2hlY2tTdGFibGVSdW5uaW5nPSExfSx2b2lkIDAsKCk9Pnt9LCgpPT57fSkpLGwuZmFrZVRvcEV2ZW50VGFzay5pbnZva2UoKX0p''@;'; put 'put ''LEhCKGwpKX0obCl9O2wuX2lubmVyPWwuX2lubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazooYSxmLGQsaCxtLF8pPT57dHJ5e3JldHVybiBFdGUobCksYS5pbnZva2VUYXNrKGQsaCxtLF8pfWZpbmFsbHl7KGwuc2hv''@;'; put 'put ''dWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbiYmImV2ZW50VGFzayI9PT1oLnR5cGV8fGwuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiZjKCkseHRlKGwpfX0sb25JbnZva2U6KGEsZixkLGgsbSxfLE8pPT57dHJ5e3JldHVybiBFdGUobCksYS5pbnZva2UoZCxoLG0s''@;'; put 'put ''XyxPKX1maW5hbGx5e2wuc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24mJmMoKSx4dGUobCl9fSxvbkhhc1Rhc2s6KGEsZixkLGgpPT57YS5oYXNUYXNrKGQsaCksZj09PWQmJigibWljcm9UYXNrIj09aC5jaGFuZ2U/KGwuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPWgubWljcm9UYXNr''@;'; put 'put ''LEhCKGwpLEZCKGwpKToibWFjcm9UYXNrIj09aC5jaGFuZ2UmJihsLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPWgubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6KGEsZixkLGgpPT4oYS5oYW5kbGVFcnJvcihkLGgpLGwucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pmwub25FcnJvci5lbWl0KGgpKSwh''@;'; put 'put ''MSl9KX0oZCl9c3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpe3JldHVybiB0eXBlb2YgWm9uZTwidSImJiEwPT09Wm9uZS5jdXJyZW50LmdldCgiaXNBbmd1bGFyWm9uZSIpfXN0YXRpYyBhc3NlcnRJbkFuZ3VsYXJab25lKCl7aWYoIVVvLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBJcig5''@;'; put 'put ''MDksITEpfXN0YXRpYyBhc3NlcnROb3RJbkFuZ3VsYXJab25lKCl7aWYoVW8uaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IElyKDkwOSwhMSl9cnVuKGMsYSxmKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuKGMsYSxmKX1ydW5UYXNrKGMsYSxmLGQpe2NvbnN0IGg9dGhpcy5faW5uZXIsbT1o''@;'; put 'put ''LnNjaGVkdWxlRXZlbnRUYXNrKCJOZ1pvbmVFdmVudDogIitkLGMsXzdlLGt0ZSxrdGUpO3RyeXtyZXR1cm4gaC5ydW5UYXNrKG0sYSxmKX1maW5hbGx5e2guY2FuY2VsVGFzayhtKX19cnVuR3VhcmRlZChjLGEsZil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bkd1YXJkZWQoYyxhLGYpfXJ1bk91''@;'; put 'put ''dHNpZGVBbmd1bGFyKGMpe3JldHVybiB0aGlzLl9vdXRlci5ydW4oYyl9fWNvbnN0IF83ZT17fTtmdW5jdGlvbiBGQihsKXtpZigwPT1sLl9uZXN0aW5nJiYhbC5oYXNQZW5kaW5nTWljcm90YXNrcyYmIWwuaXNTdGFibGUpdHJ5e2wuX25lc3RpbmcrKyxsLm9uTWljcm90YXNrRW1wdHkuZW1p''@;'; put 'put ''dChudWxsKX1maW5hbGx5e2lmKGwuX25lc3RpbmctLSwhbC5oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7bC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bC5vblN0YWJsZS5lbWl0KG51bGwpKX1maW5hbGx5e2wuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBIQihsKXtsLmhhc1BlbmRpbmdNaWNyb3Rh''@;'; put 'put ''c2tzPSEhKGwuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzfHwobC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9ufHxsLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmLTEhPT1sLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZCl9ZnVuY3Rpb24gRXRlKGwpe2wuX25l''@;'; put 'put ''c3RpbmcrKyxsLmlzU3RhYmxlJiYobC5pc1N0YWJsZT0hMSxsLm9uVW5zdGFibGUuZW1pdChudWxsKSl9ZnVuY3Rpb24geHRlKGwpe2wuX25lc3RpbmctLSxGQihsKX1jbGFzcyBTN2V7Y29uc3RydWN0b3IoKXt0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01h''@;'; put 'put ''Y3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IHhyLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgeHIsdGhpcy5vblN0YWJsZT1uZXcgeHIsdGhpcy5vbkVycm9yPW5ldyB4cn1ydW4oYyxhLGYpe3JldHVybiBjLmFwcGx5KGEsZil9cnVuR3VhcmRlZChj''@;'; put 'put ''LGEsZil7cmV0dXJuIGMuYXBwbHkoYSxmKX1ydW5PdXRzaWRlQW5ndWxhcihjKXtyZXR1cm4gYygpfXJ1blRhc2soYyxhLGYsZCl7cmV0dXJuIGMuYXBwbHkoYSxmKX19Y29uc3QgQXRlPW5ldyBNaSgiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpUdGV9KTtmdW5jdGlvbiBUdGUoKXtj''@;'; put 'put ''b25zdCBsPUhpKFVvKTtsZXQgYz0hMDtyZXR1cm4gc2EobmV3IEJlKGQ9PntjPWwuaXNTdGFibGUmJiFsLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhbC5oYXNQZW5kaW5nTWljcm90YXNrcyxsLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57ZC5uZXh0KGMpLGQuY29tcGxldGUoKX0pfSksbmV3IEJl''@;'; put 'put ''KGQ9PntsZXQgaDtsLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57aD1sLm9uU3RhYmxlLnN1YnNjcmliZSgoKT0+e1VvLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxxdWV1ZU1pY3JvdGFzaygoKT0+eyFjJiYhbC5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIWwuaGFzUGVuZGluZ01pY3JvdGFza3Mm''@;'; put 'put ''JihjPSEwLGQubmV4dCghMCkpfSl9KX0pO2NvbnN0IG09bC5vblVuc3RhYmxlLnN1YnNjcmliZSgoKT0+e1VvLmFzc2VydEluQW5ndWxhclpvbmUoKSxjJiYoYz0hMSxsLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57ZC5uZXh0KCExKX0pKX0pO3JldHVybigpPT57aC51bnN1YnNjcmliZSgpLG0u''@;'; put 'put ''dW5zdWJzY3JpYmUoKX19KS5waXBlKCRsKCkpKX1jb25zdCBPdGU9bmV3IE1pKCIiKSxBTz1uZXcgTWkoIiIpO2xldCBCQixOQj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLl9uZ1pvbmU9YSx0aGlzLnJlZ2lzdHJ5PWYsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5f''@;'; put 'put ''aXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLEJCfHwoZnVuY3Rpb24gTTdlKGwpe0JCPWx9KGQpLGQuYWRkVG9XaW5kb3coZikpLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLGEucnVuKCgpPT57''@;'; put 'put ''dGhpcy50YXNrVHJhY2tpbmdab25lPXR5cGVvZiBab25lPiJ1Ij9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pfV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9kaWRXb3JrPSEw''@;'; put 'put ''LHRoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57VW8uYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHF1ZXVlTWljcm90YXNrKCgpPT57dGhpcy5faXNab25l''@;'; put 'put ''U3RhYmxlPSEwLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pfX0pfSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291''@;'; put 'put ''bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJs''@;'; put 'put ''ZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpcXVldWVNaWNyb3Rhc2soKCk9Pntmb3IoOzAhPT10aGlz''@;'; put 'put ''Ll9jYWxsYmFja3MubGVuZ3RoOyl7bGV0IGE9dGhpcy5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dChhLnRpbWVvdXRJZCksYS5kb25lQ2IodGhpcy5fZGlkV29yayl9dGhpcy5fZGlkV29yaz0hMX0pO2Vsc2V7bGV0IGE9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFj''@;'; put 'put ''a3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcihmPT4hZi51cGRhdGVDYnx8IWYudXBkYXRlQ2IoYSl8fChjbGVhclRpbWVvdXQoZi50aW1lb3V0SWQpLCExKSksdGhpcy5fZGlkV29yaz0hMH19Z2V0UGVuZGluZ1Rhc2tzKCl7cmV0dXJuIHRoaXMudGFza1RyYWNraW5nWm9uZT90aGlzLnRhc2tU''@;'; put 'put ''cmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAoYT0+KHtzb3VyY2U6YS5zb3VyY2UsY3JlYXRpb25Mb2NhdGlvbjphLmNyZWF0aW9uTG9jYXRpb24sZGF0YTphLmRhdGF9KSk6W119YWRkQ2FsbGJhY2soYSxmLGQpe2xldCBoPS0xO2YmJmY+MCYmKGg9c2V0VGltZW91dCgoKT0+e3RoaXMuX2Nh''@;'; put 'put ''bGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKG09Pm0udGltZW91dElkIT09aCksYSh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSxmKSksdGhpcy5fY2FsbGJhY2tzLnB1c2goe2RvbmVDYjphLHRpbWVvdXRJZDpoLHVwZGF0ZUNiOmR9KX13aGVuU3RhYmxlKGEs''@;'; put 'put ''ZixkKXtpZihkJiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9wbHVnaW5zL3Rhc2stdHJhY2tpbmci''@;'; put 'put ''IGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKGEsZixkKSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9Z2V0UGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9cmVnaXN0ZXJBcHBsaWNhdGlvbihhKXt0aGlzLnJlZ2lzdHJ5LnJlZ2lzdGVyQXBwbGlj''@;'; put 'put ''YXRpb24oYSx0aGlzKX11bnJlZ2lzdGVyQXBwbGljYXRpb24oYSl7dGhpcy5yZWdpc3RyeS51bnJlZ2lzdGVyQXBwbGljYXRpb24oYSl9ZmluZFByb3ZpZGVycyhhLGYsZCl7cmV0dXJuW119fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFVvKSxz''@;'; put 'put ''cihWQiksc3IoQU8pKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxWQj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXB9cmVnaXN0ZXJBcHBsaWNhdGlvbihhLGYpe3RoaXMuX2FwcGxpY2F0''@;'; put 'put ''aW9ucy5zZXQoYSxmKX11bnJlZ2lzdGVyQXBwbGljYXRpb24oYSl7dGhpcy5fYXBwbGljYXRpb25zLmRlbGV0ZShhKX11bnJlZ2lzdGVyQWxsQXBwbGljYXRpb25zKCl7dGhpcy5fYXBwbGljYXRpb25zLmNsZWFyKCl9Z2V0VGVzdGFiaWxpdHkoYSl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9u''@;'; put 'put ''cy5nZXQoYSl8fG51bGx9Z2V0QWxsVGVzdGFiaWxpdGllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9Z2V0QWxsUm9vdEVsZW1lbnRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9ZmluZFRlc3RhYmlsaXR5''@;'; put 'put ''SW5UcmVlKGEsZj0hMCl7cmV0dXJuIEJCPy5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyxhLGYpPz9udWxsfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlk''@;'; put 'put ''ZWRJbjoicGxhdGZvcm0ifSksbH0pKCksSnA9bnVsbDtjb25zdCBEdGU9bmV3IE1pKCJBbGxvd011bHRpcGxlVG9rZW4iKSxqQj1uZXcgTWkoIlBsYXRmb3JtRGVzdHJveUxpc3RlbmVycyIpLHpCPW5ldyBNaSgiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKTtjbGFzcyBSdGV7Y29uc3RydWN0b3Io''@;'; put 'put ''YyxhKXt0aGlzLm5hbWU9Yyx0aGlzLnRva2VuPWF9fWZ1bmN0aW9uIFB0ZShsLGMsYT1bXSl7Y29uc3QgZj1gUGxhdGZvcm06ICR7Y31gLGQ9bmV3IE1pKGYpO3JldHVybihoPVtdKT0+e2xldCBtPVVCKCk7aWYoIW18fG0uaW5qZWN0b3IuZ2V0KER0ZSwhMSkpe2NvbnN0IF89Wy4uLmEsLi4u''@;'; put 'put ''aCx7cHJvdmlkZTpkLHVzZVZhbHVlOiEwfV07bD9sKF8pOmZ1bmN0aW9uIHg3ZShsKXtpZihKcCYmIUpwLmdldChEdGUsITEpKXRocm93IG5ldyBJcig0MDAsITEpOyhmdW5jdGlvbiBJdGUoKXshZnVuY3Rpb24gS2IobCl7amM9bH0oKCk9Pnt0aHJvdyBuZXcgSXIoNjAwLCExKX0pfSkoKSxK''@;'; put 'put ''cD1sO2NvbnN0IGM9bC5nZXQoSHRlKTsoZnVuY3Rpb24gTHRlKGwpe2wuZ2V0KElBLG51bGwpPy5mb3JFYWNoKGE9PmEoKSl9KShsKX0oZnVuY3Rpb24gRnRlKGw9W10sYyl7cmV0dXJuIEFsLmNyZWF0ZSh7bmFtZTpjLHByb3ZpZGVyczpbe3Byb3ZpZGU6Sm0sdXNlVmFsdWU6InBsYXRmb3Jt''@;'; put 'put ''In0se3Byb3ZpZGU6akIsdXNlVmFsdWU6bmV3IFNldChbKCk9PkpwPW51bGxdKX0sLi4ubF19KX0oXyxmKSl9cmV0dXJuIGZ1bmN0aW9uIFQ3ZShsKXtjb25zdCBjPVVCKCk7aWYoIWMpdGhyb3cgbmV3IElyKDQwMSwhMSk7cmV0dXJuIGN9KCl9fWZ1bmN0aW9uIFVCKCl7cmV0dXJuIEpwPy5n''@;'; put 'put ''ZXQoSHRlKT8/bnVsbH1sZXQgSHRlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5faW5qZWN0b3I9YSx0aGlzLl9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoYSxmKXtjb25zdCBk''@;'; put 'put ''PWZ1bmN0aW9uIE83ZShsPSJ6b25lLmpzIixjKXtyZXR1cm4ibm9vcCI9PT1sP25ldyBTN2U6InpvbmUuanMiPT09bD9uZXcgVW8oYyk6bH0oZj8ubmdab25lLGZ1bmN0aW9uIE50ZShsKXtyZXR1cm57ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURl''@;'; put 'put ''dGVjdGlvbjpsPy5ldmVudENvYWxlc2Npbmc/PyExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOmw/LnJ1bkNvYWxlc2Npbmc/PyExfX0oe2V2ZW50Q29hbGVzY2luZzpmPy5uZ1pvbmVFdmVudENvYWxlc2NpbmcscnVuQ29hbGVzY2luZzpmPy5uZ1pvbmVSdW5Db2FsZXNjaW5n''@;'; put 'put ''fSkpO3JldHVybiBkLnJ1bigoKT0+e2NvbnN0IGg9ZnVuY3Rpb24gdEMobCxjLGEpe3JldHVybiBuZXcgejIobCxjLGEpfShhLm1vZHVsZVR5cGUsdGhpcy5pbmplY3RvcixmdW5jdGlvbiBVdGUobCl7cmV0dXJuW3twcm92aWRlOlVvLHVzZUZhY3Rvcnk6bH0se3Byb3ZpZGU6cW0sbXVsdGk6''@;'; put 'put ''ITAsdXNlRmFjdG9yeTooKT0+e2NvbnN0IGM9SGkoSTdlLHtvcHRpb25hbDohMH0pO3JldHVybigpPT5jLmluaXRpYWxpemUoKX19LHtwcm92aWRlOnp0ZSx1c2VGYWN0b3J5OkQ3ZX0se3Byb3ZpZGU6QXRlLHVzZUZhY3Rvcnk6VHRlfV19KCgpPT5kKSksbT1oLmluamVjdG9yLmdldChSMixu''@;'; put 'put ''dWxsKTtyZXR1cm4gZC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IF89ZC5vbkVycm9yLnN1YnNjcmliZSh7bmV4dDpPPT57bS5oYW5kbGVFcnJvcihPKX19KTtoLm9uRGVzdHJveSgoKT0+e1RPKHRoaXMuX21vZHVsZXMsaCksXy51bnN1YnNjcmliZSgpfSl9KSxmdW5jdGlvbiBWdGUo''@;'; put 'put ''bCxjLGEpe3RyeXtjb25zdCBmPWEoKTtyZXR1cm4gcGcoZik/Zi5jYXRjaChkPT57dGhyb3cgYy5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bC5oYW5kbGVFcnJvcihkKSksZH0pOmZ9Y2F0Y2goZil7dGhyb3cgYy5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bC5oYW5kbGVFcnJvcihmKSksZn19KG0s''@;'; put 'put ''ZCwoKT0+e2NvbnN0IF89aC5pbmplY3Rvci5nZXQoUEIpO3JldHVybiBfLnJ1bkluaXRpYWxpemVycygpLF8uZG9uZVByb21pc2UudGhlbigoKT0+KGZ1bmN0aW9uIGdlKGwpe3ByKGwsIkV4cGVjdGVkIGxvY2FsZUlkIHRvIGJlIGRlZmluZWQiKSwic3RyaW5nIj09dHlwZW9mIGwmJihvZT1s''@;'; put 'put ''LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikpfShoLmluamVjdG9yLmdldChwZCxxcCl8fHFwKSx0aGlzLl9tb2R1bGVEb0Jvb3RzdHJhcChoKSxoKSl9KX0pfWJvb3RzdHJhcE1vZHVsZShhLGY9W10pe2NvbnN0IGQ9QnRlKHt9LGYpO3JldHVybiBmdW5jdGlvbiBrN2UobCxjLGEp''@;'; put 'put ''e2NvbnN0IGY9bmV3IGhkKGEpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZil9KDAsMCxhKS50aGVuKGg9PnRoaXMuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeShoLGQpKX1fbW9kdWxlRG9Cb290c3RyYXAoYSl7Y29uc3QgZj1hLmluamVjdG9yLmdldChDZyk7aWYoYS5fYm9vdHN0cmFwQ29tcG9u''@;'; put 'put ''ZW50cy5sZW5ndGg+MClhLl9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2goZD0+Zi5ib290c3RyYXAoZCkpO2Vsc2V7aWYoIWEuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgSXIoLTQwMywhMSk7YS5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGYpfXRoaXMuX21vZHVsZXMucHVz''@;'; put 'put ''aChhKX1vbkRlc3Ryb3koYSl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKGEpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBJcig0MDQsITEpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNo''@;'; put 'put ''KGY9PmYuZGVzdHJveSgpKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzLmZvckVhY2goZj0+ZigpKTtjb25zdCBhPXRoaXMuX2luamVjdG9yLmdldChqQixudWxsKTthJiYoYS5mb3JFYWNoKGY9PmYoKSksYS5jbGVhcigpKSx0aGlzLl9kZXN0cm95ZWQ9ITB9Z2V0IGRlc3Ryb3llZCgpe3JldHVy''@;'; put 'put ''biB0aGlzLl9kZXN0cm95ZWR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKEFsKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLGx9KSgpO2Z1bmN0aW9uIEJ0ZShs''@;'; put 'put ''LGMpe3JldHVybiBBcnJheS5pc0FycmF5KGMpP2MucmVkdWNlKEJ0ZSxsKTp7Li4ubCwuLi5jfX1sZXQgQ2c9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl9ydW5uaW5nVGljaz0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5f''@;'; put 'put ''ZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl92aWV3cz1bXSx0aGlzLmludGVybmFsRXJyb3JIYW5kbGVyPUhpKHp0ZSksdGhpcy56b25lSXNTdGFibGU9SGkoQXRlKSx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLmlzU3RhYmxlPUhpKHhPKS5oYXNQZW5k''@;'; put 'put ''aW5nVGFza3MucGlwZShrbChhPT5hP0dpKCExKTp0aGlzLnpvbmVJc1N0YWJsZSksZnVuY3Rpb24gbzIobCxjPUZlKXtyZXR1cm4gbD1sPz9QYyxudCgoYSxmKT0+e2xldCBkLGg9ITA7YS5zdWJzY3JpYmUocWUoZixtPT57Y29uc3QgXz1jKG0pOyhofHwhbChkLF8pKSYmKGg9ITEsZD1fLGYu''@;'; put 'put ''bmV4dChtKSl9KSl9KX0oKSwkbCgpKSx0aGlzLl9pbmplY3Rvcj1IaSh1MSl9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMuX2luamVjdG9yfWJvb3RzdHJhcChhLGYpe2NvbnN0IGQ9YSBpbnN0YW5jZW9mIGpBO2lmKCF0''@;'; put 'put ''aGlzLl9pbmplY3Rvci5nZXQoUEIpLmRvbmUpdGhyb3chZCYmZnVuY3Rpb24gS2YobCl7Y29uc3QgYz1uYShsKXx8cWwobCl8fHpzKGwpO3JldHVybiBudWxsIT09YyYmYy5zdGFuZGFsb25lfShhKSxuZXcgSXIoNDA1LCExKTtsZXQgbTttPWQ/YTp0aGlzLl9pbmplY3Rvci5nZXQoYzEpLnJl''@;'; put 'put ''c29sdmVDb21wb25lbnRGYWN0b3J5KGEpLHRoaXMuY29tcG9uZW50VHlwZXMucHVzaChtLmNvbXBvbmVudFR5cGUpO2NvbnN0IF89ZnVuY3Rpb24gRTdlKGwpe3JldHVybiBsLmlzQm91bmRUb01vZHVsZX0obSk/dm9pZCAwOnRoaXMuX2luamVjdG9yLmdldChYcyksWD1tLmNyZWF0ZShBbC5O''@;'; put 'put ''VUxMLFtdLGZ8fG0uc2VsZWN0b3IsXyksYWU9WC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHBlPVguaW5qZWN0b3IuZ2V0KE90ZSxudWxsKTtyZXR1cm4gcGU/LnJlZ2lzdGVyQXBwbGljYXRpb24oYWUpLFgub25EZXN0cm95KCgpPT57dGhpcy5kZXRhY2hWaWV3KFguaG9zdFZpZXcpLFRPKHRo''@;'; put 'put ''aXMuY29tcG9uZW50cyxYKSxwZT8udW5yZWdpc3RlckFwcGxpY2F0aW9uKGFlKX0pLHRoaXMuX2xvYWRDb21wb25lbnQoWCksWH10aWNrKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IElyKDEwMSwhMSk7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgYSBvZiB0aGlz''@;'; put 'put ''Ll92aWV3cylhLmRldGVjdENoYW5nZXMoKX1jYXRjaChhKXt0aGlzLmludGVybmFsRXJyb3JIYW5kbGVyKGEpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITF9fWF0dGFjaFZpZXcoYSl7Y29uc3QgZj1hO3RoaXMuX3ZpZXdzLnB1c2goZiksZi5hdHRhY2hUb0FwcFJlZih0aGlzKX1kZXRh''@;'; put 'put ''Y2hWaWV3KGEpe2NvbnN0IGY9YTtUTyh0aGlzLl92aWV3cyxmKSxmLmRldGFjaEZyb21BcHBSZWYoKX1fbG9hZENvbXBvbmVudChhKXt0aGlzLmF0dGFjaFZpZXcoYS5ob3N0VmlldyksdGhpcy50aWNrKCksdGhpcy5jb21wb25lbnRzLnB1c2goYSk7Y29uc3QgZj10aGlzLl9pbmplY3Rvci5n''@;'; put 'put ''ZXQoekIsW10pO2YucHVzaCguLi50aGlzLl9ib290c3RyYXBMaXN0ZW5lcnMpLGYuZm9yRWFjaChkPT5kKGEpKX1uZ09uRGVzdHJveSgpe2lmKCF0aGlzLl9kZXN0cm95ZWQpdHJ5e3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaChhPT5hKCkpLHRoaXMuX3ZpZXdzLnNsaWNlKCkuZm9y''@;'; put 'put ''RWFjaChhPT5hLmRlc3Ryb3koKSl9ZmluYWxseXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fdmlld3M9W10sdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W119fW9uRGVzdHJveShhKXtyZXR1cm4gdGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNo''@;'; put 'put ''KGEpLCgpPT5UTyh0aGlzLl9kZXN0cm95TGlzdGVuZXJzLGEpfWRlc3Ryb3koKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IElyKDQwNiwhMSk7Y29uc3QgYT10aGlzLl9pbmplY3RvcjthLmRlc3Ryb3kmJiFhLmRlc3Ryb3llZCYmYS5kZXN0cm95KCl9Z2V0IHZpZXdDb3VudCgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl92aWV3cy5sZW5ndGh9d2FybklmRGVzdHJveWVkKCl7fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtm''@;'; put 'put ''dW5jdGlvbiBUTyhsLGMpe2NvbnN0IGE9bC5pbmRleE9mKGMpO2E+LTEmJmwuc3BsaWNlKGEsMSl9Y29uc3QgenRlPW5ldyBNaSgiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+SGkoUjIpLmhhbmRsZUVycm9yLmJpbmQodm9pZCAwKX0pO2Z1bmN0aW9uIEQ3ZSgpe2NvbnN0IGw9''@;'; put 'put ''SGkoVW8pLGM9SGkoUjIpO3JldHVybiBhPT5sLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5jLmhhbmRsZUVycm9yKGEpKX1sZXQgSTdlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLnpvbmU9SGkoVW8pLHRoaXMuYXBwbGljYXRpb25SZWY9SGkoQ2cpfWluaXRpYWxpemUoKXt0aGlz''@;'; put 'put ''Ll9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9ufHwodGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbj10aGlzLnpvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLnpvbmUucnVuKCgpPT57dGhpcy5hcHBsaWNhdGlvblJlZi50aWNrKCl9KX19''@;'; put 'put ''KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJv''@;'; put 'put ''dmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtsZXQgVWw9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuX19OR19FTEVNRU5UX0lEX189TDdlLGx9KSgpO2Z1bmN0aW9uIEw3ZShsKXtyZXR1cm4gZnVuY3Rpb24gUDdlKGwsYyxhKXtpZihuZihsKSYmIWEpe2NvbnN0IGY9YnQobC5pbmRleCxjKTtyZXR1''@;'; put 'put ''cm4gbmV3IHNnKGYsZil9cmV0dXJuIDQ3JmwudHlwZT9uZXcgc2coY1tKbF0sYyk6bnVsbH0oRHUoKSxRcigpLDE2PT0oMTYmbCkpfWNsYXNzIEd0ZXtjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyhjKXtyZXR1cm4gaXYoYyl9Y3JlYXRlKGMpe3JldHVybiBuZXcgajdlKGMpfX1jb25zdCBCN2U9''@;'; put 'put ''KGwsYyk9PmM7Y2xhc3Mgajdle2NvbnN0cnVjdG9yKGMpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhp''@;'; put 'put ''cy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51''@;'; put 'put ''bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj1jfHxCN2V9Zm9yRWFjaEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5faXRIZWFkO251bGwhPT1hO2E9YS5fbmV4dCljKGEpfWZvckVhY2hPcGVyYXRpb24oYyl7bGV0IGE9dGhpcy5faXRIZWFkLGY9dGhp''@;'; put 'put ''cy5fcmVtb3ZhbHNIZWFkLGQ9MCxoPW51bGw7Zm9yKDthfHxmOyl7Y29uc3QgbT0hZnx8YSYmYS5jdXJyZW50SW5kZXg8S3RlKGYsZCxoKT9hOmYsXz1LdGUobSxkLGgpLE89bS5jdXJyZW50SW5kZXg7aWYobT09PWYpZC0tLGY9Zi5fbmV4dFJlbW92ZWQ7ZWxzZSBpZihhPWEuX25leHQsbnVs''@;'; put 'put ''bD09bS5wcmV2aW91c0luZGV4KWQrKztlbHNle2h8fChoPVtdKTtjb25zdCBYPV8tZCxhZT1PLWQ7aWYoWCE9YWUpe2ZvcihsZXQgYmU9MDtiZTxYO2JlKyspe2NvbnN0IHhlPWJlPGgubGVuZ3RoP2hbYmVdOmhbYmVdPTAsVmU9eGUrYmU7YWU8PVZlJiZWZTxYJiYoaFtiZV09eGUrMSl9aFtt''@;'; put 'put ''LnByZXZpb3VzSW5kZXhdPWFlLVh9fV8hPT1PJiZjKG0sXyxPKX19Zm9yRWFjaFByZXZpb3VzSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9wcmV2aW91c0l0SGVhZDtudWxsIT09YTthPWEuX25leHRQcmV2aW91cyljKGEpfWZvckVhY2hBZGRlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5f''@;'; put 'put ''YWRkaXRpb25zSGVhZDtudWxsIT09YTthPWEuX25leHRBZGRlZCljKGEpfWZvckVhY2hNb3ZlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1hO2E9YS5fbmV4dE1vdmVkKWMoYSl9Zm9yRWFjaFJlbW92ZWRJdGVtKGMpe2xldCBhO2ZvcihhPXRoaXMuX3JlbW92''@;'; put 'put ''YWxzSGVhZDtudWxsIT09YTthPWEuX25leHRSZW1vdmVkKWMoYSl9Zm9yRWFjaElkZW50aXR5Q2hhbmdlKGMpe2xldCBhO2ZvcihhPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0SWRlbnRpdHlDaGFuZ2UpYyhhKX1kaWZmKGMpe2lmKG51bGw9PWMmJihjPVtd''@;'; put 'put ''KSwhaXYoYykpdGhyb3cgbmV3IElyKDkwMCwhMSk7cmV0dXJuIHRoaXMuY2hlY2soYyk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayhjKXt0aGlzLl9yZXNldCgpO2xldCBkLGgsbSxhPXRoaXMuX2l0SGVhZCxmPSExO2lmKEFycmF5LmlzQXJyYXkoYykpe3RoaXMubGVuZ3RoPWMubGVu''@;'; put 'put ''Z3RoO2ZvcihsZXQgXz0wO188dGhpcy5sZW5ndGg7XysrKWg9Y1tfXSxtPXRoaXMuX3RyYWNrQnlGbihfLGgpLG51bGwhPT1hJiZPYmplY3QuaXMoYS50cmFja0J5SWQsbSk/KGYmJihhPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGEsaCxtLF8pKSxPYmplY3QuaXMoYS5pdGVtLGgpfHx0aGlz''@;'; put 'put ''Ll9hZGRJZGVudGl0eUNoYW5nZShhLGgpKTooYT10aGlzLl9taXNtYXRjaChhLGgsbSxfKSxmPSEwKSxhPWEuX25leHR9ZWxzZSBkPTAsZnVuY3Rpb24geVYobCxjKXtpZihBcnJheS5pc0FycmF5KGwpKWZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKWMobFthXSk7ZWxzZXtjb25zdCBhPWxb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXSgpO2xldCBmO2Zvcig7IShmPWEubmV4dCgpKS5kb25lOyljKGYudmFsdWUpfX0oYyxfPT57bT10aGlzLl90cmFja0J5Rm4oZCxfKSxudWxsIT09YSYmT2JqZWN0LmlzKGEudHJhY2tCeUlkLG0pPyhmJiYoYT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihhLF8sbSxk''@;'; put 'put ''KSksT2JqZWN0LmlzKGEuaXRlbSxfKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoYSxfKSk6KGE9dGhpcy5fbWlzbWF0Y2goYSxfLG0sZCksZj0hMCksYT1hLl9uZXh0LGQrK30pLHRoaXMubGVuZ3RoPWQ7cmV0dXJuIHRoaXMuX3RydW5jYXRlKGEpLHRoaXMuY29sbGVjdGlvbj1jLHRoaXMu''@;'; put 'put ''aXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5''@;'; put 'put ''KXtsZXQgYztmb3IoYz10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0KWMuX25leHRQcmV2aW91cz1jLl9uZXh0O2ZvcihjPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0QWRkZWQpYy5wcmV2aW91c0luZGV4PWMuY3VycmVu''@;'; put 'put ''dEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCxjPXRoaXMuX21vdmVzSGVhZDtudWxsIT09YztjPWMuX25leHRNb3ZlZCljLnByZXZpb3VzSW5kZXg9Yy5jdXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxs''@;'; put 'put ''LHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21hdGNoKGMsYSxmLGQpe2xldCBoO3JldHVybiBudWxsPT09Yz9oPXRoaXMuX2l0VGFpbDooaD1jLl9w''@;'; put 'put ''cmV2LHRoaXMuX3JlbW92ZShjKSksbnVsbCE9PShjPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KGYsbnVsbCkpPyhPYmplY3QuaXMoYy5pdGVtLGEpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShjLGEpLHRoaXMuX3JlaW5zZXJ0''@;'; put 'put ''QWZ0ZXIoYyxoLGQpKTpudWxsIT09KGM9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChmLGQpKT8oT2JqZWN0LmlzKGMuaXRlbSxhKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoYyxhKSx0aGlzLl9tb3ZlQWZ0ZXIoYyxoLGQpKTpjPXRo''@;'; put 'put ''aXMuX2FkZEFmdGVyKG5ldyB6N2UoYSxmKSxoLGQpLGN9X3ZlcmlmeVJlaW5zZXJ0aW9uKGMsYSxmLGQpe2xldCBoPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KGYsbnVsbCk7cmV0dXJuIG51bGwhPT1oP2M9dGhpcy5fcmVpbnNl''@;'; put 'put ''cnRBZnRlcihoLGMuX3ByZXYsZCk6Yy5jdXJyZW50SW5kZXghPWQmJihjLmN1cnJlbnRJbmRleD1kLHRoaXMuX2FkZFRvTW92ZXMoYyxkKSksY31fdHJ1bmNhdGUoYyl7Zm9yKDtudWxsIT09Yzspe2NvbnN0IGE9Yy5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayhjKSks''@;'; put 'put ''Yz1hfW51bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpLG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zl''@;'; put 'put ''c1RhaWwuX25leHRNb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwpLG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNU''@;'; put 'put ''YWlsJiYodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfV9yZWluc2VydEFmdGVyKGMsYSxmKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKGMpO2NvbnN0IGQ9Yy5fcHJldlJlbW92ZWQs''@;'; put 'put ''aD1jLl9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PWQ/dGhpcy5fcmVtb3ZhbHNIZWFkPWg6ZC5fbmV4dFJlbW92ZWQ9aCxudWxsPT09aD90aGlzLl9yZW1vdmFsc1RhaWw9ZDpoLl9wcmV2UmVtb3ZlZD1kLHRoaXMuX2luc2VydEFmdGVyKGMsYSxmKSx0aGlzLl9hZGRUb01vdmVzKGMsZiks''@;'; put 'put ''Y31fbW92ZUFmdGVyKGMsYSxmKXtyZXR1cm4gdGhpcy5fdW5saW5rKGMpLHRoaXMuX2luc2VydEFmdGVyKGMsYSxmKSx0aGlzLl9hZGRUb01vdmVzKGMsZiksY31fYWRkQWZ0ZXIoYyxhLGYpe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcihjLGEsZiksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxs''@;'; put 'put ''PT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPWM6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPWMsY31faW5zZXJ0QWZ0ZXIoYyxhLGYpe2NvbnN0IGQ9bnVsbD09PWE/dGhpcy5faXRIZWFkOmEuX25leHQ7cmV0dXJuIGMuX25leHQ9ZCxjLl9wcmV2PWEs''@;'; put 'put ''bnVsbD09PWQ/dGhpcy5faXRUYWlsPWM6ZC5fcHJldj1jLG51bGw9PT1hP3RoaXMuX2l0SGVhZD1jOmEuX25leHQ9YyxudWxsPT09dGhpcy5fbGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3ICR0ZSksdGhpcy5fbGlua2VkUmVjb3Jkcy5wdXQoYyksYy5jdXJyZW50SW5k''@;'; put 'put ''ZXg9ZixjfV9yZW1vdmUoYyl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKGMpKX1fdW5saW5rKGMpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZShjKTtjb25zdCBhPWMuX3ByZXYsZj1jLl9uZXh0O3JldHVybiBu''@;'; put 'put ''dWxsPT09YT90aGlzLl9pdEhlYWQ9ZjphLl9uZXh0PWYsbnVsbD09PWY/dGhpcy5faXRUYWlsPWE6Zi5fcHJldj1hLGN9X2FkZFRvTW92ZXMoYyxhKXtyZXR1cm4gYy5wcmV2aW91c0luZGV4PT09YXx8KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVz''@;'; put 'put ''SGVhZD1jOnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPWMpLGN9X2FkZFRvUmVtb3ZhbHMoYyl7cmV0dXJuIG51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJlY29yZHM9bmV3ICR0ZSksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dChjKSxjLmN1cnJlbnRJ''@;'; put 'put ''bmRleD1udWxsLGMuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD1jLGMuX3ByZXZSZW1vdmVkPW51bGwpOihjLl9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3Zh''@;'; put 'put ''bHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9YyksY31fYWRkSWRlbnRpdHlDaGFuZ2UoYyxhKXtyZXR1cm4gYy5pdGVtPWEsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNI''@;'; put 'put ''ZWFkPWM6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPWMsY319Y2xhc3Mgejdle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5pdGVtPWMsdGhpcy50cmFja0J5SWQ9YSx0aGlzLmN1cnJlbnRJbmRleD1udWxsLHRoaXMucHJldmlvdXNJbmRleD1udWxsLHRoaXMu''@;'; put 'put ''X25leHRQcmV2aW91cz1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldkR1cD1udWxsLHRoaXMuX25leHREdXA9bnVsbCx0aGlzLl9wcmV2UmVtb3ZlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4''@;'; put 'put ''dE1vdmVkPW51bGwsdGhpcy5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGx9fWNsYXNzIFU3ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2hlYWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9YWRkKGMpe251bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9YyxjLl9uZXh0RHVwPW51bGws''@;'; put 'put ''Yy5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD1jLGMuX3ByZXZEdXA9dGhpcy5fdGFpbCxjLl9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD1jKX1nZXQoYyxhKXtsZXQgZjtmb3IoZj10aGlzLl9oZWFkO251bGwhPT1mO2Y9Zi5fbmV4dER1cClpZigobnVsbD09PWF8fGE8PWYu''@;'; put 'put ''Y3VycmVudEluZGV4KSYmT2JqZWN0LmlzKGYudHJhY2tCeUlkLGMpKXJldHVybiBmO3JldHVybiBudWxsfXJlbW92ZShjKXtjb25zdCBhPWMuX3ByZXZEdXAsZj1jLl9uZXh0RHVwO3JldHVybiBudWxsPT09YT90aGlzLl9oZWFkPWY6YS5fbmV4dER1cD1mLG51bGw9PT1mP3RoaXMuX3RhaWw9''@;'; put 'put ''YTpmLl9wcmV2RHVwPWEsbnVsbD09PXRoaXMuX2hlYWR9fWNsYXNzICR0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9cHV0KGMpe2NvbnN0IGE9Yy50cmFja0J5SWQ7bGV0IGY9dGhpcy5tYXAuZ2V0KGEpO2Z8fChmPW5ldyBVN2UsdGhpcy5tYXAuc2V0KGEsZikpLGYuYWRkKGMp''@;'; put 'put ''fWdldChjLGEpe2NvbnN0IGQ9dGhpcy5tYXAuZ2V0KGMpO3JldHVybiBkP2QuZ2V0KGMsYSk6bnVsbH1yZW1vdmUoYyl7Y29uc3QgYT1jLnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0KGEpLnJlbW92ZShjKSYmdGhpcy5tYXAuZGVsZXRlKGEpLGN9Z2V0IGlzRW1wdHkoKXtyZXR1cm4g''@;'; put 'put ''MD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1hcC5jbGVhcigpfX1mdW5jdGlvbiBLdGUobCxjLGEpe2NvbnN0IGY9bC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1mKXJldHVybiBmO2xldCBkPTA7cmV0dXJuIGEmJmY8YS5sZW5ndGgmJihkPWFbZl0pLGYrYytkfWNsYXNzIHF0ZXtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe31zdXBwb3J0cyhjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIE1hcHx8b3YoYyl9Y3JlYXRlKCl7cmV0dXJuIG5ldyBaN2V9fWNsYXNzIFo3ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlY29yZHM9bmV3IE1hcCx0aGlzLl9tYXBIZWFkPW51bGwsdGhpcy5fYXBwZW5kQWZ0ZXI9''@;'; put 'put ''bnVsbCx0aGlzLl9wcmV2aW91c01hcEhlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFs''@;'; put 'put ''c1RhaWw9bnVsbH1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfWZvckVhY2hJdGVtKGMpe2xldCBhO2ZvcihhPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWE7YT1h''@;'; put 'put ''Ll9uZXh0KWMoYSl9Zm9yRWFjaFByZXZpb3VzSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0UHJldmlvdXMpYyhhKX1mb3JFYWNoQ2hhbmdlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWE7YT1h''@;'; put 'put ''Ll9uZXh0Q2hhbmdlZCljKGEpfWZvckVhY2hBZGRlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09YTthPWEuX25leHRBZGRlZCljKGEpfWZvckVhY2hSZW1vdmVkSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWE7YT1h''@;'; put 'put ''Ll9uZXh0UmVtb3ZlZCljKGEpfWRpZmYoYyl7aWYoYyl7aWYoIShjIGluc3RhbmNlb2YgTWFwfHxvdihjKSkpdGhyb3cgbmV3IElyKDkwMCwhMSl9ZWxzZSBjPW5ldyBNYXA7cmV0dXJuIHRoaXMuY2hlY2soYyk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayhjKXt0aGlzLl9yZXNldCgp''@;'; put 'put ''O2xldCBhPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNoKGMsKGYsZCk9PntpZihhJiZhLmtleT09PWQpdGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoYSxmKSx0aGlzLl9hcHBlbmRBZnRlcj1hLGE9YS5fbmV4dDtlbHNle2NvbnN0IGg9dGhpcy5f''@;'; put 'put ''Z2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkoZCxmKTthPXRoaXMuX2luc2VydEJlZm9yZU9yQXBwZW5kKGEsaCl9fSksYSl7YS5fcHJldiYmKGEuX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPWE7Zm9yKGxldCBmPWE7bnVsbCE9PWY7Zj1mLl9uZXh0UmVtb3ZlZClmPT09dGhp''@;'; put 'put ''cy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUoZi5rZXkpLGYuX25leHRSZW1vdmVkPWYuX25leHQsZi5wcmV2aW91c1ZhbHVlPWYuY3VycmVudFZhbHVlLGYuY3VycmVudFZhbHVlPW51bGwsZi5fcHJldj1udWxsLGYuX25leHQ9bnVsbH1yZXR1''@;'; put 'put ''cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9X2luc2VydEJlZm9yZU9yQXBwZW5kKGMsYSl7aWYoYyl7''@;'; put 'put ''Y29uc3QgZj1jLl9wcmV2O3JldHVybiBhLl9uZXh0PWMsYS5fcHJldj1mLGMuX3ByZXY9YSxmJiYoZi5fbmV4dD1hKSxjPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9YSksdGhpcy5fYXBwZW5kQWZ0ZXI9YyxjfXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5k''@;'; put 'put ''QWZ0ZXIuX25leHQ9YSxhLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWEsdGhpcy5fYXBwZW5kQWZ0ZXI9YSxudWxsfV9nZXRPckNyZWF0ZVJlY29yZEZvcktleShjLGEpe2lmKHRoaXMuX3JlY29yZHMuaGFzKGMpKXtjb25zdCBkPXRoaXMuX3JlY29yZHMuZ2V0KGMp''@;'; put 'put ''O3RoaXMuX21heWJlQWRkVG9DaGFuZ2VzKGQsYSk7Y29uc3QgaD1kLl9wcmV2LG09ZC5fbmV4dDtyZXR1cm4gaCYmKGguX25leHQ9bSksbSYmKG0uX3ByZXY9aCksZC5fbmV4dD1udWxsLGQuX3ByZXY9bnVsbCxkfWNvbnN0IGY9bmV3IFk3ZShjKTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQo''@;'; put 'put ''YyxmKSxmLmN1cnJlbnRWYWx1ZT1hLHRoaXMuX2FkZFRvQWRkaXRpb25zKGYpLGZ9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgYztmb3IodGhpcy5fcHJldmlvdXNNYXBIZWFkPXRoaXMuX21hcEhlYWQsYz10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0KWMu''@;'; put 'put ''X25leHRQcmV2aW91cz1jLl9uZXh0O2ZvcihjPXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT1jO2M9Yy5fbmV4dENoYW5nZWQpYy5wcmV2aW91c1ZhbHVlPWMuY3VycmVudFZhbHVlO2ZvcihjPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9YztjPWMuX25leHRBZGRlZCljLnByZXZpb3VzVmFs''@;'; put 'put ''dWU9Yy5jdXJyZW50VmFsdWU7dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbH19X21heWJlQWRkVG9DaGFuZ2VzKGMsYSl7T2JqZWN0LmlzKGEs''@;'; put 'put ''Yy5jdXJyZW50VmFsdWUpfHwoYy5wcmV2aW91c1ZhbHVlPWMuY3VycmVudFZhbHVlLGMuY3VycmVudFZhbHVlPWEsdGhpcy5fYWRkVG9DaGFuZ2VzKGMpKX1fYWRkVG9BZGRpdGlvbnMoYyl7bnVsbD09PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRp''@;'; put 'put ''dGlvbnNUYWlsPWM6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1jLHRoaXMuX2FkZGl0aW9uc1RhaWw9Yyl9X2FkZFRvQ2hhbmdlcyhjKXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9YzoodGhpcy5fY2hhbmdlc1Rh''@;'; put 'put ''aWwuX25leHRDaGFuZ2VkPWMsdGhpcy5fY2hhbmdlc1RhaWw9Yyl9X2ZvckVhY2goYyxhKXtjIGluc3RhbmNlb2YgTWFwP2MuZm9yRWFjaChhKTpPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGY9PmEoY1tmXSxmKSl9fWNsYXNzIFk3ZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmtleT1jLHRoaXMucHJl''@;'; put 'put ''dmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fWZ1''@;'; put 'put ''bmN0aW9uIFh0ZSgpe3JldHVybiBuZXcgYnYoW25ldyBHdGVdKX1sZXQgYnY9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmZhY3Rvcmllcz1hfXN0YXRpYyBjcmVhdGUoYSxmKXtpZihudWxsIT1mKXtjb25zdCBkPWYuZmFjdG9yaWVzLnNsaWNlKCk7YT1hLmNvbmNhdChkKX1y''@;'; put 'put ''ZXR1cm4gbmV3IGwoYSl9c3RhdGljIGV4dGVuZChhKXtyZXR1cm57cHJvdmlkZTpsLHVzZUZhY3Rvcnk6Zj0+bC5jcmVhdGUoYSxmfHxYdGUoKSksZGVwczpbW2wsbmV3IEUwLG5ldyBjaF1dfX1maW5kKGEpe2NvbnN0IGY9dGhpcy5mYWN0b3JpZXMuZmluZChkPT5kLnN1cHBvcnRzKGEpKTtp''@;'; put 'put ''ZihudWxsIT1mKXJldHVybiBmO3Rocm93IG5ldyBJcig5MDEsITEpfX1yZXR1cm4gbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6WHRlfSksbH0pKCk7ZnVuY3Rpb24gSnRlKCl7cmV0dXJuIG5ldyBhQyhbbmV3IHF0ZV0pfWxldCBhQz0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuZmFjdG9yaWVzPWF9c3RhdGljIGNyZWF0ZShhLGYpe2lmKGYpe2NvbnN0IGQ9Zi5mYWN0b3JpZXMuc2xpY2UoKTthPWEuY29uY2F0KGQpfXJldHVybiBuZXcgbChhKX1zdGF0aWMgZXh0ZW5kKGEpe3JldHVybntwcm92aWRlOmwsdXNlRmFjdG9y''@;'; put 'put ''eTpmPT5sLmNyZWF0ZShhLGZ8fEp0ZSgpKSxkZXBzOltbbCxuZXcgRTAsbmV3IGNoXV19fWZpbmQoYSl7Y29uc3QgZj10aGlzLmZhY3Rvcmllcy5maW5kKGQ9PmQuc3VwcG9ydHMoYSkpO2lmKGYpcmV0dXJuIGY7dGhyb3cgbmV3IElyKDkwMSwhMSl9fXJldHVybiBsLlx1MDI3NXByb3Y9aHIo''@;'; put 'put ''e3Rva2VuOmwscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpKdGV9KSxsfSkoKTtjb25zdCAkN2U9UHRlKG51bGwsImNvcmUiLFtdKTtsZXQgSzdlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShz''@;'; put 'put ''cihDZykpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe30pLGx9KSgpO2Z1bmN0aW9uIF92KGwpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGw/bDpudWxsIT1sJiYiZmFsc2UiIT09bH1sZXQgcUI9bnVsbDtmdW5jdGlvbiBRcCgpe3JldHVybiBxQn1jbGFzcyBs''@;'; put 'put ''OWV7fWNvbnN0IEZhPW5ldyBNaSgiRG9jdW1lbnRUb2tlbiIpO2xldCBYQj0oKCk9PntjbGFzcyBse2hpc3RvcnlHbyhhKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVw''@;'; put 'put ''cm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gSGkodTllKX0scHJvdmlkZWRJbjoicGxhdGZvcm0ifSksbH0pKCk7Y29uc3QgczllPW5ldyBNaSgiTG9jYXRpb24gSW5pdGlhbGl6ZWQiKTtsZXQgdTllPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBYQntjb25zdHJ1Y3Rv''@;'; put 'put ''cigpe3N1cGVyKCksdGhpcy5fZG9jPUhpKEZhKSx0aGlzLl9sb2NhdGlvbj13aW5kb3cubG9jYXRpb24sdGhpcy5faGlzdG9yeT13aW5kb3cuaGlzdG9yeX1nZXRCYXNlSHJlZkZyb21ET00oKXtyZXR1cm4gUXAoKS5nZXRCYXNlSHJlZih0aGlzLl9kb2MpfW9uUG9wU3RhdGUoYSl7Y29uc3Qg''@;'; put 'put ''Zj1RcCgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7cmV0dXJuIGYuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLGEsITEpLCgpPT5mLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixhKX1vbkhhc2hDaGFuZ2UoYSl7Y29uc3QgZj1RcCgpLmdldEds''@;'; put 'put ''b2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7cmV0dXJuIGYuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsYSwhMSksKCk9PmYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsYSl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uaHJlZn1nZXQg''@;'; put 'put ''cHJvdG9jb2woKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24ucHJvdG9jb2x9Z2V0IGhvc3RuYW1lKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lfWdldCBwb3J0KCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBh''@;'; put 'put ''dGhuYW1lfWdldCBzZWFyY2goKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNofWdldCBoYXNoKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKGEpe3RoaXMuX2xvY2F0aW9uLnBhdGhuYW1lPWF9cHVzaFN0YXRlKGEsZixkKXt0aGlzLl9oaXN0b3J5LnB1c2hT''@;'; put 'put ''dGF0ZShhLGYsZCl9cmVwbGFjZVN0YXRlKGEsZixkKXt0aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZShhLGYsZCl9Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28oYT0wKXt0aGlzLl9oaXN0b3J5LmdvKGEpfWdl''@;'; put 'put ''dFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgbH0scHJvdmlkZWRJbjoicGxhdGZvcm0i''@;'; put 'put ''fSksbH0pKCk7ZnVuY3Rpb24gSkIobCxjKXtpZigwPT1sLmxlbmd0aClyZXR1cm4gYztpZigwPT1jLmxlbmd0aClyZXR1cm4gbDtsZXQgYT0wO3JldHVybiBsLmVuZHNXaXRoKCIvIikmJmErKyxjLnN0YXJ0c1dpdGgoIi8iKSYmYSsrLDI9PWE/bCtjLnN1YnN0cmluZygxKToxPT1hP2wrYzps''@;'; put 'put ''KyIvIitjfWZ1bmN0aW9uIG9uZShsKXtjb25zdCBjPWwubWF0Y2goLyN8XD98JC8pLGE9YyYmYy5pbmRleHx8bC5sZW5ndGg7cmV0dXJuIGwuc2xpY2UoMCxhLSgiLyI9PT1sW2EtMV0/MTowKSkrbC5zbGljZShhKX1mdW5jdGlvbiBaMihsKXtyZXR1cm4gbCYmIj8iIT09bFswXT8iPyIrbDps''@;'; put 'put ''fWxldCBNZz0oKCk9PntjbGFzcyBse2hpc3RvcnlHbyhhKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gSGkobG5lKX0scHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtjb25zdCBhbmU9bmV3IE1pKCJhcHBCYXNlSHJlZiIpO2xldCBsbmU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIE1ne2NvbnN0cnVjdG9yKGEsZil7c3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPWEsdGhpcy5fcmVt''@;'; put 'put ''b3ZlTGlzdGVuZXJGbnM9W10sdGhpcy5fYmFzZUhyZWY9Zj8/dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKT8/SGkoRmEpLmxvY2F0aW9uPy5vcmlnaW4/PyIifW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMu''@;'; put 'put ''X3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZShhKXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZShhKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZShhKSl9Z2V0QmFzZUhyZWYoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKGEpe3JldHVybiBKQih0aGlzLl9iYXNlSHJlZixhKX1wYXRoKGE9ITEpe2NvbnN0IGY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZStaMih0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnNlYXJjaCksZD10aGlzLl9wbGF0''@;'; put 'put ''Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIGQmJmE/YCR7Zn0ke2R9YDpmfXB1c2hTdGF0ZShhLGYsZCxoKXtjb25zdCBtPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGQrWjIoaCkpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKGEsZixtKX1yZXBsYWNlU3RhdGUoYSxmLGQsaCl7''@;'; put 'put ''Y29uc3QgbT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChkK1oyKGgpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZShhLGYsbSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX1n''@;'; put 'put ''ZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aGlzdG9yeUdvKGE9MCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oaXN0b3J5R28/LihhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoWEIpLHNyKGFu''@;'; put 'put ''ZSw4KSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksYzllPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBNZ3tjb25zdHJ1Y3RvcihhLGYpe3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1hLHRoaXMuX2Jh''@;'; put 'put ''c2VIcmVmPSIiLHRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zPVtdLG51bGwhPWYmJih0aGlzLl9iYXNlSHJlZj1mKX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUoYSl7dGhp''@;'; put 'put ''cy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUoYSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UoYSkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXBhdGgoYT0hMSl7bGV0IGY9dGhpcy5fcGxh''@;'; put 'put ''dGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBudWxsPT1mJiYoZj0iIyIpLGYubGVuZ3RoPjA/Zi5zdWJzdHJpbmcoMSk6Zn1wcmVwYXJlRXh0ZXJuYWxVcmwoYSl7Y29uc3QgZj1KQih0aGlzLl9iYXNlSHJlZixhKTtyZXR1cm4gZi5sZW5ndGg+MD8iIyIrZjpmfXB1c2hTdGF0ZShhLGYsZCxo''@;'; put 'put ''KXtsZXQgbT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChkK1oyKGgpKTswPT1tLmxlbmd0aCYmKG09dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUoYSxmLG0pfXJlcGxhY2VTdGF0ZShhLGYsZCxoKXtsZXQgbT10aGlzLnBy''@;'; put 'put ''ZXBhcmVFeHRlcm5hbFVybChkK1oyKGgpKTswPT1tLmxlbmd0aCYmKG09dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUoYSxmLG0pfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNr''@;'; put 'put ''KCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWhpc3RvcnlHbyhhPTApe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGlzdG9yeUdvPy4oYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFhCKSxzcihhbmUsOCkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGdkPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5fc3ViamVjdD1uZXcgeHIsdGhpcy5fdXJsQ2hhbmdlTGlz''@;'; put 'put ''dGVuZXJzPVtdLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3k9YTtjb25zdCBmPXRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9iYXNlUGF0aD1mdW5jdGlvbiBoOWUobCl7aWYobmV3IFJlZ0V4cCgiXihodHRw''@;'; put 'put ''cz86KT8vLyIpLnRlc3QobCkpe2NvbnN0WyxhXT1sLnNwbGl0KC9cL1wvW15cL10rLyk7cmV0dXJuIGF9cmV0dXJuIGx9KG9uZShzbmUoZikpKSx0aGlzLl9sb2NhdGlvblN0cmF0ZWd5Lm9uUG9wU3RhdGUoZD0+e3RoaXMuX3N1YmplY3QuZW1pdCh7dXJsOnRoaXMucGF0aCghMCkscG9wOiEw''@;'; put 'put ''LHN0YXRlOmQuc3RhdGUsdHlwZTpkLnR5cGV9KX0pfW5nT25EZXN0cm95KCl7dGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpLHRoaXMuX3VybENoYW5nZUxpc3RlbmVycz1bXX1wYXRoKGE9ITEpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSh0aGlzLl9sb2NhdGlvblN0''@;'; put 'put ''cmF0ZWd5LnBhdGgoYSkpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kuZ2V0U3RhdGUoKX1pc0N1cnJlbnRQYXRoRXF1YWxUbyhhLGY9IiIpe3JldHVybiB0aGlzLnBhdGgoKT09dGhpcy5ub3JtYWxpemUoYStaMihmKSl9bm9ybWFsaXplKGEpe3JldHVybiBsLnN0''@;'; put 'put ''cmlwVHJhaWxpbmdTbGFzaChmdW5jdGlvbiBkOWUobCxjKXtpZighbHx8IWMuc3RhcnRzV2l0aChsKSlyZXR1cm4gYztjb25zdCBhPWMuc3Vic3RyaW5nKGwubGVuZ3RoKTtyZXR1cm4iIj09PWF8fFsiLyIsIjsiLCI/IiwiIyJdLmluY2x1ZGVzKGFbMF0pP2E6Y30odGhpcy5fYmFzZVBhdGgs''@;'; put 'put ''c25lKGEpKSl9cHJlcGFyZUV4dGVybmFsVXJsKGEpe3JldHVybiBhJiYiLyIhPT1hWzBdJiYoYT0iLyIrYSksdGhpcy5fbG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwoYSl9Z28oYSxmPSIiLGQ9bnVsbCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5wdXNoU3RhdGUoZCwiIixh''@;'; put 'put ''LGYpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybChhK1oyKGYpKSxkKX1yZXBsYWNlU3RhdGUoYSxmPSIiLGQ9bnVsbCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5yZXBsYWNlU3RhdGUoZCwiIixhLGYpLHRoaXMuX25vdGlmeVVybENoYW5n''@;'; put 'put ''ZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybChhK1oyKGYpKSxkKX1mb3J3YXJkKCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX2xvY2F0aW9uU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyhhPTApe3RoaXMuX2xvY2F0aW9uU3RyYXRlZ3ku''@;'; put 'put ''aGlzdG9yeUdvPy4oYSl9b25VcmxDaGFuZ2UoYSl7cmV0dXJuIHRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKGEpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZShmPT57dGhpcy5fbm90aWZ5VXJsQ2hh''@;'; put 'put ''bmdlTGlzdGVuZXJzKGYudXJsLGYuc3RhdGUpfSkpLCgpPT57Y29uc3QgZj10aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuaW5kZXhPZihhKTt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuc3BsaWNlKGYsMSksMD09PXRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5sZW5ndGgmJih0aGlzLl91cmxD''@;'; put 'put ''aGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPW51bGwpfX1fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKGE9IiIsZil7dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmZvckVhY2goZD0+ZChhLGYpKX1zdWJzY3JpYmUoYSxmLGQpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDphLGVycm9yOmYsY29tcGxldGU6ZH0pfX1yZXR1cm4gbC5ub3JtYWxpemVRdWVyeVBhcmFtcz1aMixsLmpvaW5XaXRoU2xhc2g9SkIsbC5zdHJpcFRyYWlsaW5nU2xhc2g9b25lLGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBuZXcoYXx8bCkoc3IoTWcpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZjllKCl7cmV0dXJuIG5ldyBnZChzcihNZykpfSgpfSxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2Z1bmN0aW9uIHNuZShsKXtyZXR1cm4gbC5y''@;'; put 'put ''ZXBsYWNlKC9cL2luZGV4Lmh0bWwkLywiIil9dmFyIEx1PWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuRm9ybWF0PTBdPSJGb3JtYXQiLGxbbC5TdGFuZGFsb25lPTFdPSJTdGFuZGFsb25lIixsfShMdXx8e30pLGlsPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuTmFycm93PTBdPSJOYXJyb3ciLGxb''@;'; put 'put ''bC5BYmJyZXZpYXRlZD0xXT0iQWJicmV2aWF0ZWQiLGxbbC5XaWRlPTJdPSJXaWRlIixsW2wuU2hvcnQ9M109IlNob3J0IixsfShpbHx8e30pLEQwPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuU2hvcnQ9MF09IlNob3J0IixsW2wuTWVkaXVtPTFdPSJNZWRpdW0iLGxbbC5Mb25nPTJdPSJMb25n''@;'; put 'put ''IixsW2wuRnVsbD0zXT0iRnVsbCIsbH0oRDB8fHt9KTtmdW5jdGlvbiBRQihsLGMsYSl7Y29uc3QgZj1LcyhsKSxoPU1mKFtmW2VhLkRheXNGb3JtYXRdLGZbZWEuRGF5c1N0YW5kYWxvbmVdXSxjKTtyZXR1cm4gTWYoaCxhKX1mdW5jdGlvbiBlaihsLGMsYSl7Y29uc3QgZj1LcyhsKSxoPU1m''@;'; put 'put ''KFtmW2VhLk1vbnRoc0Zvcm1hdF0sZltlYS5Nb250aHNTdGFuZGFsb25lXV0sYyk7cmV0dXJuIE1mKGgsYSl9ZnVuY3Rpb24gTWYobCxjKXtmb3IobGV0IGE9YzthPi0xO2EtLSlpZih0eXBlb2YgbFthXTwidSIpcmV0dXJuIGxbYV07dGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBBUEk6''@;'; put 'put ''IGxvY2FsZSBkYXRhIHVuZGVmaW5lZCIpfWZ1bmN0aW9uIHZuZShsLGMpe2M9ZW5jb2RlVVJJQ29tcG9uZW50KGMpO2Zvcihjb25zdCBhIG9mIGwuc3BsaXQoIjsiKSl7Y29uc3QgZj1hLmluZGV4T2YoIj0iKSxbZCxoXT0tMT09Zj9bYSwiIl06W2Euc2xpY2UoMCxmKSxhLnNsaWNlKGYrMSld''@;'; put 'put ''O2lmKGQudHJpbSgpPT09YylyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGgpfXJldHVybiBudWxsfWNvbnN0IGNqPS9ccysvLHluZT1bXTtsZXQgeXU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9YSx0aGlzLl9rZXlWYWx1ZURpZmZl''@;'; put 'put ''cnM9Zix0aGlzLl9uZ0VsPWQsdGhpcy5fcmVuZGVyZXI9aCx0aGlzLmluaXRpYWxDbGFzc2VzPXluZSx0aGlzLnN0YXRlTWFwPW5ldyBNYXB9c2V0IGtsYXNzKGEpe3RoaXMuaW5pdGlhbENsYXNzZXM9bnVsbCE9YT9hLnRyaW0oKS5zcGxpdChjaik6eW5lfXNldCBuZ0NsYXNzKGEpe3RoaXMu''@;'; put 'put ''cmF3Q2xhc3M9InN0cmluZyI9PXR5cGVvZiBhP2EudHJpbSgpLnNwbGl0KGNqKTphfW5nRG9DaGVjaygpe2Zvcihjb25zdCBmIG9mIHRoaXMuaW5pdGlhbENsYXNzZXMpdGhpcy5fdXBkYXRlU3RhdGUoZiwhMCk7Y29uc3QgYT10aGlzLnJhd0NsYXNzO2lmKEFycmF5LmlzQXJyYXkoYSl8fGEg''@;'; put 'put ''aW5zdGFuY2VvZiBTZXQpZm9yKGNvbnN0IGYgb2YgYSl0aGlzLl91cGRhdGVTdGF0ZShmLCEwKTtlbHNlIGlmKG51bGwhPWEpZm9yKGNvbnN0IGYgb2YgT2JqZWN0LmtleXMoYSkpdGhpcy5fdXBkYXRlU3RhdGUoZiwhIWFbZl0pO3RoaXMuX2FwcGx5U3RhdGVEaWZmKCl9X3VwZGF0ZVN0YXRl''@;'; put 'put ''KGEsZil7Y29uc3QgZD10aGlzLnN0YXRlTWFwLmdldChhKTt2b2lkIDAhPT1kPyhkLmVuYWJsZWQhPT1mJiYoZC5jaGFuZ2VkPSEwLGQuZW5hYmxlZD1mKSxkLnRvdWNoZWQ9ITApOnRoaXMuc3RhdGVNYXAuc2V0KGEse2VuYWJsZWQ6ZixjaGFuZ2VkOiEwLHRvdWNoZWQ6ITB9KX1fYXBwbHlT''@;'; put 'put ''dGF0ZURpZmYoKXtmb3IoY29uc3QgYSBvZiB0aGlzLnN0YXRlTWFwKXtjb25zdCBmPWFbMF0sZD1hWzFdO2QuY2hhbmdlZD8odGhpcy5fdG9nZ2xlQ2xhc3MoZixkLmVuYWJsZWQpLGQuY2hhbmdlZD0hMSk6ZC50b3VjaGVkfHwoZC5lbmFibGVkJiZ0aGlzLl90b2dnbGVDbGFzcyhmLCExKSx0''@;'; put 'put ''aGlzLnN0YXRlTWFwLmRlbGV0ZShmKSksZC50b3VjaGVkPSExfX1fdG9nZ2xlQ2xhc3MoYSxmKXsoYT1hLnRyaW0oKSkubGVuZ3RoPjAmJmEuc3BsaXQoY2opLmZvckVhY2goZD0+e2Y/dGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LGQpOnRoaXMuX3Jl''@;'; put 'put ''bmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxkKX0pfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChidikscnQoYUMpLHJ0KFZpKSxydChqbykpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIi''@;'; put 'put ''LCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9LHN0YW5kYWxvbmU6ITB9KSxsfSkoKTtjbGFzcyBKOWV7Y29uc3RydWN0b3IoYyxhLGYsZCl7dGhpcy4kaW1wbGljaXQ9Yyx0aGlzLm5nRm9yT2Y9YSx0aGlzLmluZGV4PWYs''@;'; put 'put ''dGhpcy5jb3VudD1kfWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19bGV0IFJhPSgoKT0+''@;'; put 'put ''e2NsYXNzIGx7c2V0IG5nRm9yT2YoYSl7dGhpcy5fbmdGb3JPZj1hLHRoaXMuX25nRm9yT2ZEaXJ0eT0hMH1zZXQgbmdGb3JUcmFja0J5KGEpe3RoaXMuX3RyYWNrQnlGbj1hfWdldCBuZ0ZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fdHJhY2tCeUZufWNvbnN0cnVjdG9yKGEsZixkKXt0aGlz''@;'; put 'put ''Ll92aWV3Q29udGFpbmVyPWEsdGhpcy5fdGVtcGxhdGU9Zix0aGlzLl9kaWZmZXJzPWQsdGhpcy5fbmdGb3JPZj1udWxsLHRoaXMuX25nRm9yT2ZEaXJ0eT0hMCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdGb3JUZW1wbGF0ZShhKXthJiYodGhpcy5fdGVtcGxhdGU9YSl9bmdEb0NoZWNrKCl7''@;'; put 'put ''aWYodGhpcy5fbmdGb3JPZkRpcnR5KXt0aGlzLl9uZ0Zvck9mRGlydHk9ITE7Y29uc3QgYT10aGlzLl9uZ0Zvck9mOyF0aGlzLl9kaWZmZXImJmEmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGEpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSkpfWlmKHRoaXMuX2RpZmZlcil7''@;'; put 'put ''Y29uc3QgYT10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTthJiZ0aGlzLl9hcHBseUNoYW5nZXMoYSl9fV9hcHBseUNoYW5nZXMoYSl7Y29uc3QgZj10aGlzLl92aWV3Q29udGFpbmVyO2EuZm9yRWFjaE9wZXJhdGlvbigoZCxoLG0pPT57aWYobnVsbD09ZC5wcmV2aW91c0luZGV4''@;'; put 'put ''KWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyBKOWUoZC5pdGVtLHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1tP3ZvaWQgMDptKTtlbHNlIGlmKG51bGw9PW0pZi5yZW1vdmUobnVsbD09PWg/dm9pZCAwOmgpO2Vsc2UgaWYobnVsbCE9PWgpe2NvbnN0IF89Zi5n''@;'; put 'put ''ZXQoaCk7Zi5tb3ZlKF8sbSksX25lKF8sZCl9fSk7Zm9yKGxldCBkPTAsaD1mLmxlbmd0aDtkPGg7ZCsrKXtjb25zdCBfPWYuZ2V0KGQpLmNvbnRleHQ7Xy5pbmRleD1kLF8uY291bnQ9aCxfLm5nRm9yT2Y9dGhpcy5fbmdGb3JPZn1hLmZvckVhY2hJZGVudGl0eUNoYW5nZShkPT57X25lKGYu''@;'; put 'put ''Z2V0KGQuY3VycmVudEluZGV4KSxkKX0pfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGEsZil7cmV0dXJuITB9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZhKSxydCh6bCkscnQoYnYpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxz''@;'; put 'put ''ZWxlY3RvcnM6W1siIiwibmdGb3IiLCIiLCJuZ0Zvck9mIiwiIl1dLGlucHV0czp7bmdGb3JPZjoibmdGb3JPZiIsbmdGb3JUcmFja0J5OiJuZ0ZvclRyYWNrQnkiLG5nRm9yVGVtcGxhdGU6Im5nRm9yVGVtcGxhdGUifSxzdGFuZGFsb25lOiEwfSksbH0pKCk7ZnVuY3Rpb24gX25lKGwsYyl7''@;'; put 'put ''bC5jb250ZXh0LiRpbXBsaWNpdD1jLml0ZW19bGV0ICRpPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLl92aWV3Q29udGFpbmVyPWEsdGhpcy5fY29udGV4dD1uZXcgUTllLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1udWxsLHRo''@;'; put 'put ''aXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWY9Zn1zZXQgbmdJZihhKXt0aGlzLl9jb250ZXh0LiRpbXBsaWNpdD10aGlzLl9jb250ZXh0Lm5nSWY9YSx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZUaGVuKGEpe3duZSgi''@;'; put 'put ''bmdJZlRoZW4iLGEpLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1hLHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmRWxzZShhKXt3bmUoIm5nSWZFbHNlIixhKSx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9YSx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMu''@;'; put 'put ''X3VwZGF0ZVZpZXcoKX1fdXBkYXRlVmlldygpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0P3RoaXMuX3RoZW5WaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmJiYodGhpcy5fdGhlblZpZXdSZWY9''@;'; put 'put ''dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGhlblRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSk6dGhpcy5fZWxzZVZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxh''@;'; put 'put ''dGVSZWYmJih0aGlzLl9lbHNlVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChhLGYpe3JldHVybiEwfX1yZXR1cm4gbC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChmYSkscnQoemwpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmdJZiIsIiJdXSxpbnB1dHM6e25nSWY6Im5nSWYiLG5nSWZUaGVuOiJuZ0lmVGhlbiIsbmdJZkVsc2U6Im5nSWZFbHNlIn0sc3RhbmRh''@;'; put 'put ''bG9uZTohMH0pLGx9KSgpO2NsYXNzIFE5ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9fWZ1bmN0aW9uIHduZShsLGMpe2lmKGMmJiFjLmNyZWF0ZUVtYmVkZGVkVmlldyl0aHJvdyBuZXcgRXJyb3IoYCR7bH0gbXVzdCBiZSBhIFRlbXBsYXRlUmVm''@;'; put 'put ''LCBidXQgcmVjZWl2ZWQgJyR7S2woYyl9Jy5gKX1jbGFzcyBmantjb25zdHJ1Y3RvcihjLGEpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9Yyx0aGlzLl90ZW1wbGF0ZVJlZj1hLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVm''@;'; put 'put ''LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZShjKXtjJiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiFjJiZ0aGlzLl9jcmVhdGVkJiZ0''@;'; put 'put ''aGlzLmRlc3Ryb3koKX19bGV0IGtmPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0Vmlld3M9W10sdGhpcy5fZGVmYXVsdFVzZWQ9ITEsdGhpcy5fY2FzZUNvdW50PTAsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMX1z''@;'; put 'put ''ZXQgbmdTd2l0Y2goYSl7dGhpcy5fbmdTd2l0Y2g9YSwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfV9hZGRDYXNlKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfV9hZGREZWZhdWx0KGEpe3RoaXMuX2RlZmF1bHRWaWV3cy5wdXNoKGEpfV9tYXRj''@;'; put 'put ''aENhc2UoYSl7Y29uc3QgZj1hPT10aGlzLl9uZ1N3aXRjaDtyZXR1cm4gdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD10aGlzLl9sYXN0Q2FzZXNNYXRjaGVkfHxmLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleCsrLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD09PXRoaXMuX2Nhc2VDb3VudCYmKHRo''@;'; put 'put ''aXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghdGhpcy5fbGFzdENhc2VzTWF0Y2hlZCksdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PTAsdGhpcy5fbGFzdENhc2VzTWF0Y2hlZD0hMSksZn1fdXBkYXRlRGVmYXVsdENhc2VzKGEpe2lmKHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg+MCYmYSE9PXRo''@;'; put 'put ''aXMuX2RlZmF1bHRVc2VkKXt0aGlzLl9kZWZhdWx0VXNlZD1hO2Zvcihjb25zdCBmIG9mIHRoaXMuX2RlZmF1bHRWaWV3cylmLmVuZm9yY2VTdGF0ZShhKX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNl''@;'; put 'put ''bGVjdG9yczpbWyIiLCJuZ1N3aXRjaCIsIiJdXSxpbnB1dHM6e25nU3dpdGNoOiJuZ1N3aXRjaCJ9LHN0YW5kYWxvbmU6ITB9KSxsfSkoKSxDaD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLm5nU3dpdGNoPWQsZC5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IGZqKGEs''@;'; put 'put ''Zil9bmdEb0NoZWNrKCl7dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhpcy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZhKSxydCh6bCkscnQoa2YsOSkpfSxsLlx1MDI3''@;'; put 'put ''NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9LHN0YW5kYWxvbmU6ITB9KSxsfSkoKSxTbmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5fbmdFbD1hLHRoaXMu''@;'; put 'put ''X2RpZmZlcnM9Zix0aGlzLl9yZW5kZXJlcj1kLHRoaXMuX25nU3R5bGU9bnVsbCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdTdHlsZShhKXt0aGlzLl9uZ1N0eWxlPWEsIXRoaXMuX2RpZmZlciYmYSYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoYSkuY3JlYXRlKCkpfW5nRG9D''@;'; put 'put ''aGVjaygpe2lmKHRoaXMuX2RpZmZlcil7Y29uc3QgYT10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTthJiZ0aGlzLl9hcHBseUNoYW5nZXMoYSl9fV9zZXRTdHlsZShhLGYpe2NvbnN0W2QsaF09YS5zcGxpdCgiLiIpLG09LTE9PT1kLmluZGV4T2YoIi0iKT92b2lkIDA6aGguRGFz''@;'; put 'put ''aENhc2U7bnVsbCE9Zj90aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsZCxoP2Ake2Z9JHtofWA6ZixtKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsZCxtKX1fYXBwbHlDaGFuZ2VzKGEpe2EuZm9yRWFj''@;'; put 'put ''aFJlbW92ZWRJdGVtKGY9PnRoaXMuX3NldFN0eWxlKGYua2V5LG51bGwpKSxhLmZvckVhY2hBZGRlZEl0ZW0oZj0+dGhpcy5fc2V0U3R5bGUoZi5rZXksZi5jdXJyZW50VmFsdWUpKSxhLmZvckVhY2hDaGFuZ2VkSXRlbShmPT50aGlzLl9zZXRTdHlsZShmLmtleSxmLmN1cnJlbnRWYWx1ZSkp''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQoYUMpLHJ0KGpvKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsIm5nU3R5bGUiLCIiXV0saW5wdXRzOntuZ1N0eWxlOiJuZ1N0eWxlIn0sc3RhbmRhbG9uZToh''@;'; put 'put ''MH0pLGx9KSgpLHlkPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj1hLHRoaXMuX3ZpZXdSZWY9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0PW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0''@;'; put 'put ''bGV0SW5qZWN0b3I9bnVsbH1uZ09uQ2hhbmdlcyhhKXtpZihhLm5nVGVtcGxhdGVPdXRsZXR8fGEubmdUZW1wbGF0ZU91dGxldEluamVjdG9yKXtjb25zdCBmPXRoaXMuX3ZpZXdDb250YWluZXJSZWY7aWYodGhpcy5fdmlld1JlZiYmZi5yZW1vdmUoZi5pbmRleE9mKHRoaXMuX3ZpZXdSZWYp''@;'; put 'put ''KSx0aGlzLm5nVGVtcGxhdGVPdXRsZXQpe2NvbnN0e25nVGVtcGxhdGVPdXRsZXQ6ZCxuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpoLG5nVGVtcGxhdGVPdXRsZXRJbmplY3RvcjptfT10aGlzO3RoaXMuX3ZpZXdSZWY9Zi5jcmVhdGVFbWJlZGRlZFZpZXcoZCxoLG0/e2luamVjdG9yOm19OnZv''@;'; put 'put ''aWQgMCl9ZWxzZSB0aGlzLl92aWV3UmVmPW51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZhLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChmYSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRD''@;'; put 'put ''b250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0IixuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I6Im5nVGVtcGxhdGVPdXRsZXRJbmplY3RvciJ9LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W2JsXX0pLGx9KSgpO2NsYXNzIG55ZXtjcmVhdGVTdWJzY3JpcHRpb24oYyxh''@;'; put 'put ''KXtyZXR1cm4gYjIoKCk9PmMuc3Vic2NyaWJlKHtuZXh0OmEsZXJyb3I6Zj0+e3Rocm93IGZ9fSkpfWRpc3Bvc2UoYyl7YjIoKCk9PmMudW5zdWJzY3JpYmUoKSl9fWNsYXNzIHJ5ZXtjcmVhdGVTdWJzY3JpcHRpb24oYyxhKXtyZXR1cm4gYy50aGVuKGEsZj0+e3Rocm93IGZ9KX1kaXNwb3Nl''@;'; put 'put ''KGMpe319Y29uc3QgaXllPW5ldyByeWUsb3llPW5ldyBueWU7bGV0IHpPPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsLHRoaXMuX3JlZj1h''@;'; put 'put ''fW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCksdGhpcy5fcmVmPW51bGx9dHJhbnNmb3JtKGEpe3JldHVybiB0aGlzLl9vYmo/YSE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKGEpKTp0aGlzLl9sYXRlc3RWYWx1ZToo''@;'; put 'put ''YSYmdGhpcy5fc3Vic2NyaWJlKGEpLHRoaXMuX2xhdGVzdFZhbHVlKX1fc3Vic2NyaWJlKGEpe3RoaXMuX29iaj1hLHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KGEpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24oYSxmPT50''@;'; put 'put ''aGlzLl91cGRhdGVMYXRlc3RWYWx1ZShhLGYpKX1fc2VsZWN0U3RyYXRlZ3koYSl7aWYocGcoYSkpcmV0dXJuIGl5ZTtpZihXVChhKSlyZXR1cm4gb3llO3Rocm93IGZ1bmN0aW9uIGJkKGwsYyl7cmV0dXJuIG5ldyBJcigyMTAwLCExKX0oKX1fZGlzcG9zZSgpe3RoaXMuX3N0cmF0ZWd5LmRp''@;'; put 'put ''c3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfV91cGRhdGVMYXRlc3RWYWx1ZShhLGYpe2E9PT10aGlzLl9vYmomJih0aGlzLl9sYXRlc3RWYWx1ZT1mLHRoaXMuX3JlZi5tYXJrRm9y''@;'; put 'put ''Q2hlY2soKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFVsLDE2KSl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToiYXN5bmMiLHR5cGU6bCxwdXJlOiExLHN0YW5kYWxvbmU6ITB9KSxsfSkoKSxNbmU9KCgpPT57Y2xhc3MgbHt0cmFuc2Zvcm0o''@;'; put 'put ''YSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEsbnVsbCwyKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToianNvbiIsdHlwZTpsLHB1cmU6ITEsc3RhbmRhbG9uZTohMH0pLGx9KSgpLFVPPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7Y29uc3RydWN0b3IoYSl7dGhpcy5kaWZmZXJzPWEsdGhpcy5rZXlWYWx1ZXM9W10sdGhpcy5jb21wYXJlRm49a25lfXRyYW5zZm9ybShhLGY9a25lKXtpZighYXx8IShhIGluc3RhbmNlb2YgTWFwKSYmIm9iamVjdCIhPXR5cGVvZiBhKXJldHVybiBudWxsO3RoaXMuZGlmZmVyfHwodGhp''@;'; put 'put ''cy5kaWZmZXI9dGhpcy5kaWZmZXJzLmZpbmQoYSkuY3JlYXRlKCkpO2NvbnN0IGQ9dGhpcy5kaWZmZXIuZGlmZihhKSxoPWYhPT10aGlzLmNvbXBhcmVGbjtyZXR1cm4gZCYmKHRoaXMua2V5VmFsdWVzPVtdLGQuZm9yRWFjaEl0ZW0obT0+e3RoaXMua2V5VmFsdWVzLnB1c2goZnVuY3Rpb24g''@;'; put 'put ''dnllKGwsYyl7cmV0dXJue2tleTpsLHZhbHVlOmN9fShtLmtleSxtLmN1cnJlbnRWYWx1ZSkpfSkpLChkfHxoKSYmKHRoaXMua2V5VmFsdWVzLnNvcnQoZiksdGhpcy5jb21wYXJlRm49ZiksdGhpcy5rZXlWYWx1ZXN9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3''@;'; put 'put ''KGF8fGwpKHJ0KGFDLDE2KSl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToia2V5dmFsdWUiLHR5cGU6bCxwdXJlOiExLHN0YW5kYWxvbmU6ITB9KSxsfSkoKTtmdW5jdGlvbiBrbmUobCxjKXtjb25zdCBhPWwua2V5LGY9Yy5rZXk7aWYoYT09PWYpcmV0dXJuIDA7aWYodm9pZCAwPT09YSlyZXR1''@;'; put 'put ''cm4gMTtpZih2b2lkIDA9PT1mKXJldHVybi0xO2lmKG51bGw9PT1hKXJldHVybiAxO2lmKG51bGw9PT1mKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmInN0cmluZyI9PXR5cGVvZiBmKXJldHVybiBhPGY/LTE6MTtpZigibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgZilyZXR1cm4gYS1mO2lmKCJib29sZWFuIj09dHlwZW9mIGEmJiJib29sZWFuIj09dHlwZW9mIGYpcmV0dXJuIGE8Zj8tMToxO2NvbnN0IGQ9U3RyaW5nKGEpLGg9U3RyaW5nKGYpO3JldHVybiBkPT1oPzA6ZDxoPy0xOjF9bGV0IGJvPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe30pLGx9KSgpO2Z1bmN0aW9uIEhhKGwpe3JldHVybiJicm93c2VyIj09PWx9ZnVuY3Rpb24geG5lKGwpe3JldHVybiJzZXJ2ZXIiPT09bH1sZXQgTXllPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bmV3IGt5ZShzcihGYSksd2luZG93KX0pLGx9KSgpO2NsYXNzIGt5ZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMuZG9jdW1lbnQ9Yyx0aGlzLndpbmRvdz1hLHRo''@;'; put 'put ''aXMub2Zmc2V0PSgpPT5bMCwwXX1zZXRPZmZzZXQoYyl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheShjKT8oKT0+YzpjfWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKT9bdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsdGhpcy53aW5kb3cucGFnZVlP''@;'; put 'put ''ZmZzZXRdOlswLDBdfXNjcm9sbFRvUG9zaXRpb24oYyl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyhjWzBdLGNbMV0pfXNjcm9sbFRvQW5jaG9yKGMpe2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuO2NvbnN0IGE9ZnVuY3Rpb24gRXll''@;'; put 'put ''KGwsYyl7Y29uc3QgYT1sLmdldEVsZW1lbnRCeUlkKGMpfHxsLmdldEVsZW1lbnRzQnlOYW1lKGMpWzBdO2lmKGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwuY3JlYXRlVHJlZVdhbGtlciYmbC5ib2R5JiYiZnVuY3Rpb24iPT10eXBlb2YgbC5ib2R5LmF0dGFjaFNoYWRvdyl7''@;'; put 'put ''Y29uc3QgZj1sLmNyZWF0ZVRyZWVXYWxrZXIobC5ib2R5LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UKTtsZXQgZD1mLmN1cnJlbnROb2RlO2Zvcig7ZDspe2NvbnN0IGg9ZC5zaGFkb3dSb290O2lmKGgpe2NvbnN0IG09aC5nZXRFbGVtZW50QnlJZChjKXx8aC5xdWVyeVNlbGVjdG9yKGBbbmFt''@;'; put 'put ''ZT0iJHtjfSJdYCk7aWYobSlyZXR1cm4gbX1kPWYubmV4dE5vZGUoKX19cmV0dXJuIG51bGx9KHRoaXMuZG9jdW1lbnQsYyk7YSYmKHRoaXMuc2Nyb2xsVG9FbGVtZW50KGEpLGEuZm9jdXMoKSl9c2V0SGlzdG9yeVNjcm9sbFJlc3RvcmF0aW9uKGMpe2lmKHRoaXMuc3VwcG9ydFNjcm9sbFJl''@;'; put 'put ''c3RvcmF0aW9uKCkpe2NvbnN0IGE9dGhpcy53aW5kb3cuaGlzdG9yeTthJiZhLnNjcm9sbFJlc3RvcmF0aW9uJiYoYS5zY3JvbGxSZXN0b3JhdGlvbj1jKX19c2Nyb2xsVG9FbGVtZW50KGMpe2NvbnN0IGE9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPWEubGVmdCt0aGlzLndpbmRvdy5w''@;'; put 'put ''YWdlWE9mZnNldCxkPWEudG9wK3RoaXMud2luZG93LnBhZ2VZT2Zmc2V0LGg9dGhpcy5vZmZzZXQoKTt0aGlzLndpbmRvdy5zY3JvbGxUbyhmLWhbMF0sZC1oWzFdKX1zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKXt0cnl7aWYoIXRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSlyZXR1cm4hMTtj''@;'; put 'put ''b25zdCBjPUFuZSh0aGlzLndpbmRvdy5oaXN0b3J5KXx8QW5lKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLndpbmRvdy5oaXN0b3J5KSk7cmV0dXJuISghY3x8IWMud3JpdGFibGUmJiFjLnNldCl9Y2F0Y2h7cmV0dXJuITF9fXN1cHBvcnRzU2Nyb2xsaW5nKCl7dHJ5e3JldHVybiEhdGhp''@;'; put 'put ''cy53aW5kb3cmJiEhdGhpcy53aW5kb3cuc2Nyb2xsVG8mJiJwYWdlWE9mZnNldCJpbiB0aGlzLndpbmRvd31jYXRjaHtyZXR1cm4hMX19fWZ1bmN0aW9uIEFuZShsKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLCJzY3JvbGxSZXN0b3JhdGlvbiIpfWNsYXNzIFRu''@;'; put 'put ''ZXt9Y2xhc3MgS3llIGV4dGVuZHMgbDlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnN1cHBvcnRzRE9NRXZlbnRzPSEwfX1jbGFzcyBnaiBleHRlbmRzIEt5ZXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshZnVuY3Rpb24gYTllKGwpe3FCfHwocUI9bCl9KG5ldyBnail9''@;'; put 'put ''b25BbmRDYW5jZWwoYyxhLGYpe3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoYSxmKSwoKT0+e2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGYpfX1kaXNwYXRjaEV2ZW50KGMsYSl7Yy5kaXNwYXRjaEV2ZW50KGEpfXJlbW92ZShjKXtjLnBhcmVudE5vZGUmJmMucGFyZW50Tm9kZS5yZW1vdmVD''@;'; put 'put ''aGlsZChjKX1jcmVhdGVFbGVtZW50KGMsYSl7cmV0dXJuKGE9YXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSkuY3JlYXRlRWxlbWVudChjKX1jcmVhdGVIdG1sRG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUi''@;'; put 'put ''KX1nZXREZWZhdWx0RG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnR9aXNFbGVtZW50Tm9kZShjKXtyZXR1cm4gYy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfWlzU2hhZG93Um9vdChjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9Z2V0R2xvYmFsRXZlbnRUYXJn''@;'; put 'put ''ZXQoYyxhKXtyZXR1cm4id2luZG93Ij09PWE/d2luZG93OiJkb2N1bWVudCI9PT1hP2M6ImJvZHkiPT09YT9jLmJvZHk6bnVsbH1nZXRCYXNlSHJlZihjKXtjb25zdCBhPWZ1bmN0aW9uIHF5ZSgpe3JldHVybiBmQz1mQ3x8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpLGZDP2ZDLmdl''@;'; put 'put ''dEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9KCk7cmV0dXJuIG51bGw9PWE/bnVsbDpmdW5jdGlvbiBYeWUobCl7V089V098fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxXTy5zZXRBdHRyaWJ1dGUoImhyZWYiLGwpO2NvbnN0IGM9V08ucGF0aG5hbWU7cmV0dXJuIi8iPT09Yy5jaGFyQXQo''@;'; put 'put ''MCk/YzpgLyR7Y31gfShhKX1yZXNldEJhc2VFbGVtZW50KCl7ZkM9bnVsbH1nZXRVc2VyQWdlbnQoKXtyZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnR9Z2V0Q29va2llKGMpe3JldHVybiB2bmUoZG9jdW1lbnQuY29va2llLGMpfX1sZXQgV08sZkM9bnVsbCxReWU9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHtidWlsZCgpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IHZqPW5ldyBNaSgiRXZlbnRN''@;'; put 'put ''YW5hZ2VyUGx1Z2lucyIpO2xldCBMbmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYpe3RoaXMuX3pvbmU9Zix0aGlzLl9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFwLGEuZm9yRWFjaChkPT57ZC5tYW5hZ2VyPXRoaXN9KSx0aGlzLl9wbHVnaW5zPWEuc2xpY2UoKS5yZXZlcnNlKCl9''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcihhLGYsZCl7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZikuYWRkRXZlbnRMaXN0ZW5lcihhLGYsZCl9Z2V0Wm9uZSgpe3JldHVybiB0aGlzLl96b25lfV9maW5kUGx1Z2luRm9yKGEpe2xldCBmPXRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLmdldChhKTtpZihm''@;'; put 'put ''KXJldHVybiBmO2lmKGY9dGhpcy5fcGx1Z2lucy5maW5kKGg9Pmguc3VwcG9ydHMoYSkpLCFmKXRocm93IG5ldyBJcig1MTAxLCExKTtyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KGEsZiksZn19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCkoc3IodmopLHNyKFVvKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y2xhc3MgUG5le2NvbnN0cnVjdG9yKGMpe3RoaXMuX2RvYz1jfX1jb25zdCB5aj0ibmctYXBwLWlkIjtsZXQgRm5lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3Io''@;'; put 'put ''YSxmLGQsaD17fSl7dGhpcy5kb2M9YSx0aGlzLmFwcElkPWYsdGhpcy5ub25jZT1kLHRoaXMucGxhdGZvcm1JZD1oLHRoaXMuc3R5bGVSZWY9bmV3IE1hcCx0aGlzLmhvc3ROb2Rlcz1uZXcgU2V0LHRoaXMuc3R5bGVOb2Rlc0luRE9NPXRoaXMuY29sbGVjdFNlcnZlclJlbmRlcmVkU3R5bGVz''@;'; put 'put ''KCksdGhpcy5wbGF0Zm9ybUlzU2VydmVyPXhuZShoKSx0aGlzLnJlc2V0SG9zdE5vZGVzKCl9YWRkU3R5bGVzKGEpe2Zvcihjb25zdCBmIG9mIGEpMT09PXRoaXMuY2hhbmdlVXNhZ2VDb3VudChmLDEpJiZ0aGlzLm9uU3R5bGVBZGRlZChmKX1yZW1vdmVTdHlsZXMoYSl7Zm9yKGNvbnN0IGYg''@;'; put 'put ''b2YgYSl0aGlzLmNoYW5nZVVzYWdlQ291bnQoZiwtMSk8PTAmJnRoaXMub25TdHlsZVJlbW92ZWQoZil9bmdPbkRlc3Ryb3koKXtjb25zdCBhPXRoaXMuc3R5bGVOb2Rlc0luRE9NO2EmJihhLmZvckVhY2goZj0+Zi5yZW1vdmUoKSksYS5jbGVhcigpKTtmb3IoY29uc3QgZiBvZiB0aGlzLmdl''@;'; put 'put ''dEFsbFN0eWxlcygpKXRoaXMub25TdHlsZVJlbW92ZWQoZik7dGhpcy5yZXNldEhvc3ROb2RlcygpfWFkZEhvc3QoYSl7dGhpcy5ob3N0Tm9kZXMuYWRkKGEpO2Zvcihjb25zdCBmIG9mIHRoaXMuZ2V0QWxsU3R5bGVzKCkpdGhpcy5hZGRTdHlsZVRvSG9zdChhLGYpfXJlbW92ZUhvc3QoYSl7''@;'; put 'put ''dGhpcy5ob3N0Tm9kZXMuZGVsZXRlKGEpfWdldEFsbFN0eWxlcygpe3JldHVybiB0aGlzLnN0eWxlUmVmLmtleXMoKX1vblN0eWxlQWRkZWQoYSl7Zm9yKGNvbnN0IGYgb2YgdGhpcy5ob3N0Tm9kZXMpdGhpcy5hZGRTdHlsZVRvSG9zdChmLGEpfW9uU3R5bGVSZW1vdmVkKGEpe2NvbnN0IGY9''@;'; put 'put ''dGhpcy5zdHlsZVJlZjtmLmdldChhKT8uZWxlbWVudHM/LmZvckVhY2goZD0+ZC5yZW1vdmUoKSksZi5kZWxldGUoYSl9Y29sbGVjdFNlcnZlclJlbmRlcmVkU3R5bGVzKCl7Y29uc3QgYT10aGlzLmRvYy5oZWFkPy5xdWVyeVNlbGVjdG9yQWxsKGBzdHlsZVske3lqfT0iJHt0aGlzLmFwcElk''@;'; put 'put ''fSJdYCk7aWYoYT8ubGVuZ3RoKXtjb25zdCBmPW5ldyBNYXA7cmV0dXJuIGEuZm9yRWFjaChkPT57bnVsbCE9ZC50ZXh0Q29udGVudCYmZi5zZXQoZC50ZXh0Q29udGVudCxkKX0pLGZ9cmV0dXJuIG51bGx9Y2hhbmdlVXNhZ2VDb3VudChhLGYpe2NvbnN0IGQ9dGhpcy5zdHlsZVJlZjtpZihk''@;'; put 'put ''LmhhcyhhKSl7Y29uc3QgaD1kLmdldChhKTtyZXR1cm4gaC51c2FnZSs9ZixoLnVzYWdlfXJldHVybiBkLnNldChhLHt1c2FnZTpmLGVsZW1lbnRzOltdfSksZn1nZXRTdHlsZUVsZW1lbnQoYSxmKXtjb25zdCBkPXRoaXMuc3R5bGVOb2Rlc0luRE9NLGg9ZD8uZ2V0KGYpO2lmKGg/LnBhcmVu''@;'; put 'put ''dE5vZGU9PT1hKXJldHVybiBkLmRlbGV0ZShmKSxoLnJlbW92ZUF0dHJpYnV0ZSh5aiksaDt7Y29uc3QgbT10aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0aGlzLm5vbmNlJiZtLnNldEF0dHJpYnV0ZSgibm9uY2UiLHRoaXMubm9uY2UpLG0udGV4dENvbnRlbnQ9Zix0''@;'; put 'put ''aGlzLnBsYXRmb3JtSXNTZXJ2ZXImJm0uc2V0QXR0cmlidXRlKHlqLHRoaXMuYXBwSWQpLG19fWFkZFN0eWxlVG9Ib3N0KGEsZil7Y29uc3QgZD10aGlzLmdldFN0eWxlRWxlbWVudChhLGYpO2EuYXBwZW5kQ2hpbGQoZCk7Y29uc3QgaD10aGlzLnN0eWxlUmVmLG09aC5nZXQoZik/LmVsZW1l''@;'; put 'put ''bnRzO20/bS5wdXNoKGQpOmguc2V0KGYse2VsZW1lbnRzOltkXSx1c2FnZToxfSl9cmVzZXRIb3N0Tm9kZXMoKXtjb25zdCBhPXRoaXMuaG9zdE5vZGVzO2EuY2xlYXIoKSxhLmFkZCh0aGlzLmRvYy5oZWFkKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCkoc3IoRmEpLHNyKE44KSxzcihWOCw4KSxzcihxYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IGJqPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt''@;'; put 'put ''bCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLG1hdGg6Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aE1MLyJ9LF9qPS8l''@;'; put 'put ''Q09NUCUvZyxyYmU9bmV3IE1pKCJSZW1vdmVTdHlsZXNPbkNvbXBEZXN0cm95Iix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+ITF9KTtmdW5jdGlvbiBObmUobCxjKXtyZXR1cm4gYy5tYXAoYT0+YS5yZXBsYWNlKF9qLGwpKX1sZXQgd2o9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rv''@;'; put 'put ''cihhLGYsZCxoLG0sXyxPLFg9bnVsbCl7dGhpcy5ldmVudE1hbmFnZXI9YSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9Zix0aGlzLmFwcElkPWQsdGhpcy5yZW1vdmVTdHlsZXNPbkNvbXBEZXN0cm95PWgsdGhpcy5kb2M9bSx0aGlzLnBsYXRmb3JtSWQ9Xyx0aGlzLm5nWm9uZT1PLHRoaXMubm9u''@;'; put 'put ''Y2U9WCx0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlzLnBsYXRmb3JtSXNTZXJ2ZXI9eG5lKF8pLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5ldyBDaihhLG0sTyx0aGlzLnBsYXRmb3JtSXNTZXJ2ZXIpfWNyZWF0ZVJlbmRlcmVyKGEsZil7aWYoIWF8fCFmKXJldHVybiB0aGlzLmRl''@;'; put 'put ''ZmF1bHRSZW5kZXJlcjt0aGlzLnBsYXRmb3JtSXNTZXJ2ZXImJmYuZW5jYXBzdWxhdGlvbj09PWp1LlNoYWRvd0RvbSYmKGY9ey4uLmYsZW5jYXBzdWxhdGlvbjpqdS5FbXVsYXRlZH0pO2NvbnN0IGQ9dGhpcy5nZXRPckNyZWF0ZVJlbmRlcmVyKGEsZik7cmV0dXJuIGQgaW5zdGFuY2VvZiBC''@;'; put 'put ''bmU/ZC5hcHBseVRvSG9zdChhKTpkIGluc3RhbmNlb2YgU2omJmQuYXBwbHlTdHlsZXMoKSxkfWdldE9yQ3JlYXRlUmVuZGVyZXIoYSxmKXtjb25zdCBkPXRoaXMucmVuZGVyZXJCeUNvbXBJZDtsZXQgaD1kLmdldChmLmlkKTtpZighaCl7Y29uc3QgbT10aGlzLmRvYyxfPXRoaXMubmdab25l''@;'; put 'put ''LE89dGhpcy5ldmVudE1hbmFnZXIsWD10aGlzLnNoYXJlZFN0eWxlc0hvc3QsYWU9dGhpcy5yZW1vdmVTdHlsZXNPbkNvbXBEZXN0cm95LHBlPXRoaXMucGxhdGZvcm1Jc1NlcnZlcjtzd2l0Y2goZi5lbmNhcHN1bGF0aW9uKXtjYXNlIGp1LkVtdWxhdGVkOmg9bmV3IEJuZShPLFgsZix0aGlz''@;'; put 'put ''LmFwcElkLGFlLG0sXyxwZSk7YnJlYWs7Y2FzZSBqdS5TaGFkb3dEb206cmV0dXJuIG5ldyBsYmUoTyxYLGEsZixtLF8sdGhpcy5ub25jZSxwZSk7ZGVmYXVsdDpoPW5ldyBTaihPLFgsZixhZSxtLF8scGUpfWQuc2V0KGYuaWQsaCl9cmV0dXJuIGh9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbmRl''@;'; put 'put ''cmVyQnlDb21wSWQuY2xlYXIoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoTG5lKSxzcihGbmUpLHNyKE44KSxzcihyYmUpLHNyKEZhKSxzcihxYSksc3IoVW8pLHNyKFY4KSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5Omwu''@;'; put 'put ''XHUwMjc1ZmFjfSksbH0pKCk7Y2xhc3MgQ2p7Y29uc3RydWN0b3IoYyxhLGYsZCl7dGhpcy5ldmVudE1hbmFnZXI9Yyx0aGlzLmRvYz1hLHRoaXMubmdab25lPWYsdGhpcy5wbGF0Zm9ybUlzU2VydmVyPWQsdGhpcy5kYXRhPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5kZXN0cm95Tm9kZT1u''@;'; put 'put ''dWxsfWRlc3Ryb3koKXt9Y3JlYXRlRWxlbWVudChjLGEpe3JldHVybiBhP3RoaXMuZG9jLmNyZWF0ZUVsZW1lbnROUyhialthXXx8YSxjKTp0aGlzLmRvYy5jcmVhdGVFbGVtZW50KGMpfWNyZWF0ZUNvbW1lbnQoYyl7cmV0dXJuIHRoaXMuZG9jLmNyZWF0ZUNvbW1lbnQoYyl9Y3JlYXRlVGV4''@;'; put 'put ''dChjKXtyZXR1cm4gdGhpcy5kb2MuY3JlYXRlVGV4dE5vZGUoYyl9YXBwZW5kQ2hpbGQoYyxhKXsoVm5lKGMpP2MuY29udGVudDpjKS5hcHBlbmRDaGlsZChhKX1pbnNlcnRCZWZvcmUoYyxhLGYpe2MmJihWbmUoYyk/Yy5jb250ZW50OmMpLmluc2VydEJlZm9yZShhLGYpfXJlbW92ZUNoaWxk''@;'; put 'put ''KGMsYSl7YyYmYy5yZW1vdmVDaGlsZChhKX1zZWxlY3RSb290RWxlbWVudChjLGEpe2xldCBmPSJzdHJpbmciPT10eXBlb2YgYz90aGlzLmRvYy5xdWVyeVNlbGVjdG9yKGMpOmM7aWYoIWYpdGhyb3cgbmV3IElyKC01MTA0LCExKTtyZXR1cm4gYXx8KGYudGV4dENvbnRlbnQ9IiIpLGZ9cGFy''@;'; put 'put ''ZW50Tm9kZShjKXtyZXR1cm4gYy5wYXJlbnROb2RlfW5leHRTaWJsaW5nKGMpe3JldHVybiBjLm5leHRTaWJsaW5nfXNldEF0dHJpYnV0ZShjLGEsZixkKXtpZihkKXthPWQrIjoiK2E7Y29uc3QgaD1ialtkXTtoP2Muc2V0QXR0cmlidXRlTlMoaCxhLGYpOmMuc2V0QXR0cmlidXRlKGEsZil9''@;'; put 'put ''ZWxzZSBjLnNldEF0dHJpYnV0ZShhLGYpfXJlbW92ZUF0dHJpYnV0ZShjLGEsZil7aWYoZil7Y29uc3QgZD1ialtmXTtkP2MucmVtb3ZlQXR0cmlidXRlTlMoZCxhKTpjLnJlbW92ZUF0dHJpYnV0ZShgJHtmfToke2F9YCl9ZWxzZSBjLnJlbW92ZUF0dHJpYnV0ZShhKX1hZGRDbGFzcyhjLGEp''@;'; put 'put ''e2MuY2xhc3NMaXN0LmFkZChhKX1yZW1vdmVDbGFzcyhjLGEpe2MuY2xhc3NMaXN0LnJlbW92ZShhKX1zZXRTdHlsZShjLGEsZixkKXtkJihoaC5EYXNoQ2FzZXxoaC5JbXBvcnRhbnQpP2Muc3R5bGUuc2V0UHJvcGVydHkoYSxmLGQmaGguSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTpjLnN0''@;'; put 'put ''eWxlW2FdPWZ9cmVtb3ZlU3R5bGUoYyxhLGYpe2YmaGguRGFzaENhc2U/Yy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShhKTpjLnN0eWxlW2FdPSIifXNldFByb3BlcnR5KGMsYSxmKXtjW2FdPWZ9c2V0VmFsdWUoYyxhKXtjLm5vZGVWYWx1ZT1hfWxpc3RlbihjLGEsZil7aWYoInN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBjJiYhKGM9UXAoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLmRvYyxjKSkpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgJHtjfSBmb3IgZXZlbnQgJHthfWApO3JldHVybiB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsYSx0aGlz''@;'; put 'put ''LmRlY29yYXRlUHJldmVudERlZmF1bHQoZikpfWRlY29yYXRlUHJldmVudERlZmF1bHQoYyl7cmV0dXJuIGE9PntpZigiX19uZ1Vud3JhcF9fIj09PWEpcmV0dXJuIGM7ITE9PT0odGhpcy5wbGF0Zm9ybUlzU2VydmVyP3RoaXMubmdab25lLnJ1bkd1YXJkZWQoKCk9PmMoYSkpOmMoYSkpJiZh''@;'; put 'put ''LnByZXZlbnREZWZhdWx0KCl9fX1mdW5jdGlvbiBWbmUobCl7cmV0dXJuIlRFTVBMQVRFIj09PWwudGFnTmFtZSYmdm9pZCAwIT09bC5jb250ZW50fWNsYXNzIGxiZSBleHRlbmRzIENqe2NvbnN0cnVjdG9yKGMsYSxmLGQsaCxtLF8sTyl7c3VwZXIoYyxoLG0sTyksdGhpcy5zaGFyZWRTdHls''@;'; put 'put ''ZXNIb3N0PWEsdGhpcy5ob3N0RWw9Zix0aGlzLnNoYWRvd1Jvb3Q9Zi5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFkb3dSb290KTtjb25zdCBYPU5uZShkLmlkLGQuc3R5bGVzKTtmb3IoY29uc3QgYWUgb2YgWCl7Y29u''@;'; put 'put ''c3QgcGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtfJiZwZS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixfKSxwZS50ZXh0Q29udGVudD1hZSx0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQocGUpfX1ub2RlT3JTaGFkb3dSb290KGMpe3JldHVybiBjPT09dGhpcy5ob3N0RWw/dGhp''@;'; put 'put ''cy5zaGFkb3dSb290OmN9YXBwZW5kQ2hpbGQoYyxhKXtyZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KGMpLGEpfWluc2VydEJlZm9yZShjLGEsZil7cmV0dXJuIHN1cGVyLmluc2VydEJlZm9yZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QoYyksYSxmKX1yZW1v''@;'; put 'put ''dmVDaGlsZChjLGEpe3JldHVybiBzdXBlci5yZW1vdmVDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QoYyksYSl9cGFyZW50Tm9kZShjKXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KGMpKSl9ZGVzdHJveSgpe3Ro''@;'; put 'put ''aXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9fWNsYXNzIFNqIGV4dGVuZHMgQ2p7Y29uc3RydWN0b3IoYyxhLGYsZCxoLG0sXyxPKXtzdXBlcihjLGgsbSxfKSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9YSx0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ry''@;'; put 'put ''b3k9ZCx0aGlzLnN0eWxlcz1PP05uZShPLGYuc3R5bGVzKTpmLnN0eWxlc31hcHBseVN0eWxlcygpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXModGhpcy5zdHlsZXMpfWRlc3Ryb3koKXt0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3kmJnRoaXMuc2hhcmVkU3R5bGVzSG9z''@;'; put 'put ''dC5yZW1vdmVTdHlsZXModGhpcy5zdHlsZXMpfX1jbGFzcyBCbmUgZXh0ZW5kcyBTantjb25zdHJ1Y3RvcihjLGEsZixkLGgsbSxfLE8pe2NvbnN0IFg9ZCsiLSIrZi5pZDtzdXBlcihjLGEsZixoLG0sXyxPLFgpLHRoaXMuY29udGVudEF0dHI9ZnVuY3Rpb24gaWJlKGwpe3JldHVybiJfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJSIucmVwbGFjZShfaixsKX0oWCksdGhpcy5ob3N0QXR0cj1mdW5jdGlvbiBvYmUobCl7cmV0dXJuIl9uZ2hvc3QtJUNPTVAlIi5yZXBsYWNlKF9qLGwpfShYKX1hcHBseVRvSG9zdChjKXt0aGlzLmFwcGx5U3R5bGVzKCksdGhpcy5zZXRBdHRyaWJ1dGUoYyx0aGlzLmhv''@;'; put 'put ''c3RBdHRyLCIiKX1jcmVhdGVFbGVtZW50KGMsYSl7Y29uc3QgZj1zdXBlci5jcmVhdGVFbGVtZW50KGMsYSk7cmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZShmLHRoaXMuY29udGVudEF0dHIsIiIpLGZ9fWxldCBzYmU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFBuZXtjb25zdHJ1Y3RvcihhKXtz''@;'; put 'put ''dXBlcihhKX1zdXBwb3J0cyhhKXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKGEsZixkKXtyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKGYsZCwhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGYsZCl9cmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGYsZCl7cmV0dXJuIGEucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcihmLGQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihGYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IGpuZT1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwi''@;'; put 'put ''c2hpZnQiXSx1YmU9eyJcYiI6IkJhY2tzcGFjZSIsIlx0IjoiVGFiIiwiXHg3ZiI6IkRlbGV0ZSIsIlx4MWIiOiJFc2NhcGUiLERlbDoiRGVsZXRlIixFc2M6IkVzY2FwZSIsTGVmdDoiQXJyb3dMZWZ0IixSaWdodDoiQXJyb3dSaWdodCIsVXA6IkFycm93VXAiLERvd246IkFycm93RG93biIs''@;'; put 'put ''TWVudToiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsV2luOiJPUyJ9LGNiZT17YWx0Omw9PmwuYWx0S2V5LGNvbnRyb2w6bD0+bC5jdHJsS2V5LG1ldGE6bD0+bC5tZXRhS2V5LHNoaWZ0Omw9Pmwuc2hpZnRLZXl9O2xldCBmYmU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFBuZXtj''@;'; put 'put ''b25zdHJ1Y3RvcihhKXtzdXBlcihhKX1zdXBwb3J0cyhhKXtyZXR1cm4gbnVsbCE9bC5wYXJzZUV2ZW50TmFtZShhKX1hZGRFdmVudExpc3RlbmVyKGEsZixkKXtjb25zdCBoPWwucGFyc2VFdmVudE5hbWUoZiksbT1sLmV2ZW50Q2FsbGJhY2soaC5mdWxsS2V5LGQsdGhpcy5tYW5hZ2VyLmdl''@;'; put 'put ''dFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PlFwKCkub25BbmRDYW5jZWwoYSxoLmRvbUV2ZW50TmFtZSxtKSl9c3RhdGljIHBhcnNlRXZlbnROYW1lKGEpe2NvbnN0IGY9YS50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIiksZD1mLnNo''@;'; put 'put ''aWZ0KCk7aWYoMD09PWYubGVuZ3RofHwia2V5ZG93biIhPT1kJiYia2V5dXAiIT09ZClyZXR1cm4gbnVsbDtjb25zdCBoPWwuX25vcm1hbGl6ZUtleShmLnBvcCgpKTtsZXQgbT0iIixfPWYuaW5kZXhPZigiY29kZSIpO2lmKF8+LTEmJihmLnNwbGljZShfLDEpLG09ImNvZGUuIiksam5lLmZv''@;'; put 'put ''ckVhY2goWD0+e2NvbnN0IGFlPWYuaW5kZXhPZihYKTthZT4tMSYmKGYuc3BsaWNlKGFlLDEpLG0rPVgrIi4iKX0pLG0rPWgsMCE9Zi5sZW5ndGh8fDA9PT1oLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBPPXt9O3JldHVybiBPLmRvbUV2ZW50TmFtZT1kLE8uZnVsbEtleT1tLE99c3RhdGlj''@;'; put 'put ''IG1hdGNoRXZlbnRGdWxsS2V5Q29kZShhLGYpe2xldCBkPXViZVthLmtleV18fGEua2V5LGg9IiI7cmV0dXJuIGYuaW5kZXhPZigiY29kZS4iKT4tMSYmKGQ9YS5jb2RlLGg9ImNvZGUuIiksIShudWxsPT1kfHwhZCkmJihkPWQudG9Mb3dlckNhc2UoKSwiICI9PT1kP2Q9InNwYWNlIjoiLiI9''@;'; put 'put ''PT1kJiYoZD0iZG90Iiksam5lLmZvckVhY2gobT0+e20hPT1kJiYoMCxjYmVbbV0pKGEpJiYoaCs9bSsiLiIpfSksaCs9ZCxoPT09Zil9c3RhdGljIGV2ZW50Q2FsbGJhY2soYSxmLGQpe3JldHVybiBoPT57bC5tYXRjaEV2ZW50RnVsbEtleUNvZGUoaCxhKSYmZC5ydW5HdWFyZGVkKCgpPT5m''@;'; put 'put ''KGgpKX19c3RhdGljIF9ub3JtYWxpemVLZXkoYSl7cmV0dXJuImVzYyI9PT1hPyJlc2NhcGUiOmF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKEZhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0p''@;'; put 'put ''KCk7Y29uc3QgVW5lPVt7cHJvdmlkZTpxYSx1c2VWYWx1ZToiYnJvd3NlciJ9LHtwcm92aWRlOklBLHVzZVZhbHVlOmZ1bmN0aW9uIGRiZSgpe2dqLm1ha2VDdXJyZW50KCl9LG11bHRpOiEwfSx7cHJvdmlkZTpGYSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHBiZSgpe3JldHVybiBmdW5jdGlvbiBw''@;'; put 'put ''QShsKXtUXz1sfShkb2N1bWVudCksZG9jdW1lbnR9LGRlcHM6W119XSxtYmU9UHRlKCQ3ZSwiYnJvd3NlciIsVW5lKSxnYmU9bmV3IE1pKCIiKSxabmU9W3twcm92aWRlOkFPLHVzZUNsYXNzOmNsYXNzIEp5ZXthZGRUb1dpbmRvdyhjKXtQaS5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9KGYsZD0h''@;'; put 'put ''MCk9Pntjb25zdCBoPWMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGYsZCk7aWYobnVsbD09aCl0aHJvdyBuZXcgSXIoNTEwMywhMSk7cmV0dXJuIGh9LFBpLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPSgpPT5jLmdldEFsbFRlc3RhYmlsaXRpZXMoKSxQaS5nZXRBbGxBbmd1bGFyUm9vdEVs''@;'; put 'put ''ZW1lbnRzPSgpPT5jLmdldEFsbFJvb3RFbGVtZW50cygpLFBpLmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoUGkuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLFBpLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2goZj0+e2NvbnN0IGQ9UGkuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtsZXQg''@;'; put 'put ''aD1kLmxlbmd0aCxtPSExO2NvbnN0IF89ZnVuY3Rpb24oTyl7bT1tfHxPLGgtLSwwPT1oJiZmKG0pfTtkLmZvckVhY2goTz0+e08ud2hlblN0YWJsZShfKX0pfSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGMsYSxmKXtyZXR1cm4gbnVsbD09YT9udWxsOmMuZ2V0VGVzdGFiaWxpdHkoYSk/Pyhm''@;'; put 'put ''P1FwKCkuaXNTaGFkb3dSb290KGEpP3RoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGMsYS5ob3N0LCEwKTp0aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZShjLGEucGFyZW50RWxlbWVudCwhMCk6bnVsbCl9fSxkZXBzOltdfSx7cHJvdmlkZTpPdGUsdXNlQ2xhc3M6TkIsZGVwczpbVW8sVkIs''@;'; put 'put ''QU9dfSx7cHJvdmlkZTpOQix1c2VDbGFzczpOQixkZXBzOltVbyxWQixBT119XSxZbmU9W3twcm92aWRlOkptLHVzZVZhbHVlOiJyb290In0se3Byb3ZpZGU6UjIsdXNlRmFjdG9yeTpmdW5jdGlvbiBoYmUoKXtyZXR1cm4gbmV3IFIyfSxkZXBzOltdfSx7cHJvdmlkZTp2aix1c2VDbGFzczpz''@;'; put 'put ''YmUsbXVsdGk6ITAsZGVwczpbRmEsVW8scWFdfSx7cHJvdmlkZTp2aix1c2VDbGFzczpmYmUsbXVsdGk6ITAsZGVwczpbRmFdfSx3aixGbmUsTG5lLHtwcm92aWRlOkhwLHVzZUV4aXN0aW5nOndqfSx7cHJvdmlkZTpUbmUsdXNlQ2xhc3M6UXllLGRlcHM6W119LFtdXTtsZXQgV25lPSgoKT0+''@;'; put 'put ''e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7fXN0YXRpYyB3aXRoU2VydmVyVHJhbnNpdGlvbihhKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6W3twcm92aWRlOk44LHVzZVZhbHVlOmEuYXBwSWR9XX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwp''@;'; put 'put ''KHNyKGdiZSwxMikpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe3Byb3ZpZGVyczpbLi4uWW5lLC4uLlpuZV0saW1wb3J0czpbYm8sSzdlXX0pLGx9KSgpLEduZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX2RvYz1hfWdldFRpdGxlKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2RvYy50aXRsZX1zZXRUaXRsZShhKXt0aGlzLl9kb2MudGl0bGU9YXx8IiJ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKEZhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmZ1bmN0aW9uKGEpe2xldCBmPW51''@;'; put 'put ''bGw7cmV0dXJuIGY9YT9uZXcgYTpmdW5jdGlvbiB5YmUoKXtyZXR1cm4gbmV3IEduZShzcihGYSkpfSgpLGZ9LHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdztUKDc0MDkyKSxUKDM0MjA5KTtjb25zdCBraj17ZmlsdGVyOntjb2xzOltdLHZhbHM6''@;'; put 'put ''W10sZ3JvdXBMb2dpYzoiIix3aGVyZUNsYXVzZToiIixsaWJkczoiIixjbGF1c2VzOltdLHF1ZXJ5OltdfX0sSm49e3Jvb3RQYXJhbToiIixlZGl0b3I6e3N0YXJ0dXBTZXQ6ITEsdHJlZU5vZGVMaWJyYXJpZXM6W10sbGlic0FuZFRhYmxlczpbXSxsaWJyYXJpZXM6W10sbGlicmFyeToiIix0''@;'; put 'put ''YWJsZToiIixmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119fSx2aWV3ZXI6e3N0YXJ0dXBTZXQ6ITEsdGFibGVzU2V0OiExLGxpYnJhcmllczpbXSx0YWJsZXM6bnVsbCxsaWJyYXJ5OiIiLHRh''@;'; put 'put ''YmxlOiIiLGxpYmluZm86W10sbGlicmFyaWVzU2VhcmNoOiIiLGZpbHRlcjp7Y29sczpbXSx2YWxzOltdLGdyb3VwTG9naWM6IiIsd2hlcmVDbGF1c2U6IiIsbGliZHM6IiIsY2xhdXNlczpbXSxxdWVyeTpbXX0sY3VycmVudFNlbGVjdGlvbjoiIn0sdmlld2JveGVzOnt9LGxpbmVhZ2U6e2xp''@;'; put 'put ''YnJhcnlMaXN0OltdLHRhYmxlc0xpc3Q6W10sY29sdW1uc0xpc3Q6W10sbGlicmFyaWVzU2VhcmNoOiIiLGxpYjoiIix0YWJsZToiIixjb2x1bW46IiIsY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGU6IiIsY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uOiIifSxtZXRhZGF0YTp7bWV0YURhdGFM''@;'; put 'put ''aXN0OnZvaWQgMCxtZXRhRGF0YVNlYXJjaDoiIixtZXRhT2JqZWN0TGlzdDpbXSxtZXRhT2JqZWN0U2VhcmNoOiIiLG1ldGFSZXBvc2l0b3JpZXM6dm9pZCAwLHNlbGVjdGVkUmVwb3NpdG9yeToiIn0sdml5YUFwaTp7Y29sbGVjdGlvbnNMaXN0OnZvaWQgMCxjb2xsZWN0aW9uc1NlYXJjaDoi''@;'; put 'put ''IixzZWxlY3RlZFJlcG9zaXRvcnk6IiJ9LHVzZXJuYXY6e3VzZXJMaXN0OnZvaWQgMCx1c2VyU2VhcmNoOiIiLGdyb3VwTGlzdDp2b2lkIDAsZ3JvdXBTZWFyY2g6IiIscm9sZUxpc3Q6dm9pZCAwLHJvbGVTZWFyY2g6IiJ9LG9wZXJhdG9yczp7bnVtT3BlcmF0b3JzOlsiPSIsIjwiLCI+Iiwi''@;'; put 'put ''PD0iLCI+PSIsIkJFVFdFRU4iLCJJTiIsIk5PVCBJTiIsIk5FIl0sY2hhck9wZXJhdG9yczpbIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJDT05UQUlOUyIsIklOIiwiTk9UIElOIiwiTkUiXX19O3ZhciBLbz1UKDE2Njc2KSxYbmU9VC5uKEtvKTtmdW5jdGlvbiBKbmUobCxjLGEsZixkLGgsbSl7''@;'; put 'put ''dHJ5e3ZhciBfPWxbaF0obSksTz1fLnZhbHVlfWNhdGNoKFgpe3JldHVybiB2b2lkIGEoWCl9Xy5kb25lP2MoTyk6UHJvbWlzZS5yZXNvbHZlKE8pLnRoZW4oZixkKX1mdW5jdGlvbiB5aShsKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9YXJndW1lbnRzO3JldHVybiBuZXcgUHJv''@;'; put 'put ''bWlzZShmdW5jdGlvbihmLGQpe3ZhciBoPWwuYXBwbHkoYyxhKTtmdW5jdGlvbiBtKE8pe0puZShoLGYsZCxtLF8sIm5leHQiLE8pfWZ1bmN0aW9uIF8oTyl7Sm5lKGgsZixkLG0sXywidGhyb3ciLE8pfW0odm9pZCAwKX0pfX1mdW5jdGlvbiBFaihsKXtyZXR1cm4hIWwmJihsIGluc3RhbmNl''@;'; put 'put ''b2YgQmV8fEcobC5saWZ0KSYmRyhsLnN1YnNjcmliZSkpfWNvbnN0e2lzQXJyYXk6U2JlfT1BcnJheSx7Z2V0UHJvdG90eXBlT2Y6TWJlLHByb3RvdHlwZTprYmUsa2V5czpFYmV9PU9iamVjdDtmdW5jdGlvbiBRbmUobCl7aWYoMT09PWwubGVuZ3RoKXtjb25zdCBjPWxbMF07aWYoU2JlKGMp''@;'; put 'put ''KXJldHVybnthcmdzOmMsa2V5czpudWxsfTtpZihmdW5jdGlvbiB4YmUobCl7cmV0dXJuIGwmJiJvYmplY3QiPT10eXBlb2YgbCYmTWJlKGwpPT09a2JlfShjKSl7Y29uc3QgYT1FYmUoYyk7cmV0dXJue2FyZ3M6YS5tYXAoZj0+Y1tmXSksa2V5czphfX19cmV0dXJue2FyZ3M6bCxrZXlzOm51''@;'; put 'put ''bGx9fWNvbnN0e2lzQXJyYXk6QWJlfT1BcnJheTtmdW5jdGlvbiB4aihsKXtyZXR1cm4gRWUoYz0+ZnVuY3Rpb24gVGJlKGwsYyl7cmV0dXJuIEFiZShjKT9sKC4uLmMpOmwoYyl9KGwsYykpfWZ1bmN0aW9uIGVyZShsLGMpe3JldHVybiBsLnJlZHVjZSgoYSxmLGQpPT4oYVtmXT1jW2RdLGEp''@;'; put 'put ''LHt9KX1mdW5jdGlvbiBDdiguLi5sKXtjb25zdCBjPVgwKGwpLGE9QnUobCkse2FyZ3M6ZixrZXlzOmR9PVFuZShsKTtpZigwPT09Zi5sZW5ndGgpcmV0dXJuIG5sKFtdLGMpO2NvbnN0IGg9bmV3IEJlKGZ1bmN0aW9uIE9iZShsLGMsYT1GZSl7cmV0dXJuIGY9Pnt0cmUoYywoKT0+e2NvbnN0''@;'; put 'put ''e2xlbmd0aDpkfT1sLGg9bmV3IEFycmF5KGQpO2xldCBtPWQsXz1kO2ZvcihsZXQgTz0wO088ZDtPKyspdHJlKGMsKCk9Pntjb25zdCBYPW5sKGxbT10sYyk7bGV0IGFlPSExO1guc3Vic2NyaWJlKHFlKGYscGU9PntoW09dPXBlLGFlfHwoYWU9ITAsXy0tKSxffHxmLm5leHQoYShoLnNsaWNl''@;'; put 'put ''KCkpKX0sKCk9PnstLW18fGYuY29tcGxldGUoKX0pKX0sZil9LGYpfX0oZixjLGQ/bT0+ZXJlKGQsbSk6RmUpKTtyZXR1cm4gYT9oLnBpcGUoeGooYSkpOmh9ZnVuY3Rpb24gdHJlKGwsYyxhKXtsP1hpKGEsbCxjKTpjKCl9Y29uc3QgR089VyhsPT5mdW5jdGlvbigpe2wodGhpcyksdGhpcy5u''@;'; put 'put ''YW1lPSJFbXB0eUVycm9yIix0aGlzLm1lc3NhZ2U9Im5vIGVsZW1lbnRzIGluIHNlcXVlbmNlIn0pO2Z1bmN0aW9uICRPKC4uLmwpe3JldHVybiBmdW5jdGlvbiBEYmUoKXtyZXR1cm4gRmkoMSl9KCkobmwobCxYMChsKSkpfWZ1bmN0aW9uIG5yZShsKXtyZXR1cm4gbmV3IEJlKGM9PntKcihs''@;'; put 'put ''KCkpLnN1YnNjcmliZShjKX0pfWZ1bmN0aW9uIGRDKGwsYyl7Y29uc3QgYT1HKGwpP2w6KCk9PmwsZj1kPT5kLmVycm9yKGEoKSk7cmV0dXJuIG5ldyBCZShjP2Q9PmMuc2NoZWR1bGUoZiwwLGQpOmYpfWZ1bmN0aW9uIEFqKCl7cmV0dXJuIG50KChsLGMpPT57bGV0IGE9bnVsbDtsLl9yZWZD''@;'; put 'put ''b3VudCsrO2NvbnN0IGY9cWUoYyx2b2lkIDAsdm9pZCAwLHZvaWQgMCwoKT0+e2lmKCFsfHxsLl9yZWZDb3VudDw9MHx8MDwtLWwuX3JlZkNvdW50KXJldHVybiB2b2lkKGE9bnVsbCk7Y29uc3QgZD1sLl9jb25uZWN0aW9uLGg9YTthPW51bGwsZCYmKCFofHxkPT09aCkmJmQudW5zdWJzY3Jp''@;'; put 'put ''YmUoKSxjLnVuc3Vic2NyaWJlKCl9KTtsLnN1YnNjcmliZShmKSxmLmNsb3NlZHx8KGE9bC5jb25uZWN0KCkpfSl9Y2xhc3MgcnJlIGV4dGVuZHMgQmV7Y29uc3RydWN0b3IoYyxhKXtzdXBlcigpLHRoaXMuc291cmNlPWMsdGhpcy5zdWJqZWN0RmFjdG9yeT1hLHRoaXMuX3N1YmplY3Q9bnVs''@;'; put 'put ''bCx0aGlzLl9yZWZDb3VudD0wLHRoaXMuX2Nvbm5lY3Rpb249bnVsbCxldChjKSYmKHRoaXMubGlmdD1jLmxpZnQpfV9zdWJzY3JpYmUoYyl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZShjKX1nZXRTdWJqZWN0KCl7Y29uc3QgYz10aGlzLl9zdWJqZWN0O3JldHVybighY3x8''@;'; put 'put ''Yy5pc1N0b3BwZWQpJiYodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9X3RlYXJkb3duKCl7dGhpcy5fcmVmQ291bnQ9MDtjb25zdHtfY29ubmVjdGlvbjpjfT10aGlzO3RoaXMuX3N1YmplY3Q9dGhpcy5fY29ubmVjdGlvbj1udWxsLGM/LnVuc3Vi''@;'; put 'put ''c2NyaWJlKCl9Y29ubmVjdCgpe2xldCBjPXRoaXMuX2Nvbm5lY3Rpb247aWYoIWMpe2M9dGhpcy5fY29ubmVjdGlvbj1uZXcgdGU7Y29uc3QgYT10aGlzLmdldFN1YmplY3QoKTtjLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUocWUoYSx2b2lkIDAsKCk9Pnt0aGlzLl90ZWFyZG93bigpLGEu''@;'; put 'put ''Y29tcGxldGUoKX0sZj0+e3RoaXMuX3RlYXJkb3duKCksYS5lcnJvcihmKX0sKCk9PnRoaXMuX3RlYXJkb3duKCkpKSksYy5jbG9zZWQmJih0aGlzLl9jb25uZWN0aW9uPW51bGwsYz10ZS5FTVBUWSl9cmV0dXJuIGN9cmVmQ291bnQoKXtyZXR1cm4gQWooKSh0aGlzKX19ZnVuY3Rpb24gRWYo''@;'; put 'put ''bCl7cmV0dXJuIGw8PTA/KCk9PkhvOm50KChjLGEpPT57bGV0IGY9MDtjLnN1YnNjcmliZShxZShhLGQ9PnsrK2Y8PWwmJihhLm5leHQoZCksbDw9ZiYmYS5jb21wbGV0ZSgpKX0pKX0pfWZ1bmN0aW9uIHQ0KC4uLmwpe2NvbnN0IGM9WDAobCk7cmV0dXJuIG50KChhLGYpPT57KGM/JE8obCxh''@;'; put 'put ''LGMpOiRPKGwsYSkpLnN1YnNjcmliZShmKX0pfWZ1bmN0aW9uIElsKGwsYyl7cmV0dXJuIG50KChhLGYpPT57bGV0IGQ9MDthLnN1YnNjcmliZShxZShmLGg9PmwuY2FsbChjLGgsZCsrKSYmZi5uZXh0KGgpKSl9KX1mdW5jdGlvbiBLTyhsKXtyZXR1cm4gbnQoKGMsYSk9PntsZXQgZj0hMTtj''@;'; put 'put ''LnN1YnNjcmliZShxZShhLGQ9PntmPSEwLGEubmV4dChkKX0sKCk9PntmfHxhLm5leHQobCksYS5jb21wbGV0ZSgpfSkpfSl9ZnVuY3Rpb24gaXJlKGw9SWJlKXtyZXR1cm4gbnQoKGMsYSk9PntsZXQgZj0hMTtjLnN1YnNjcmliZShxZShhLGQ9PntmPSEwLGEubmV4dChkKX0sKCk9PmY/YS5j''@;'; put 'put ''b21wbGV0ZSgpOmEuZXJyb3IobCgpKSkpfSl9ZnVuY3Rpb24gSWJlKCl7cmV0dXJuIG5ldyBHT31mdW5jdGlvbiBuNChsLGMpe2NvbnN0IGE9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gZj0+Zi5waXBlKGw/SWwoKGQsaCk9PmwoZCxoLGYpKTpGZSxFZigxKSxhP0tPKGMpOmlyZSgoKT0+''@;'; put 'put ''bmV3IEdPKSl9ZnVuY3Rpb24gU3YobCxjKXtyZXR1cm4gRyhjKT9fcihsLGMsMSk6X3IobCwxKX1mdW5jdGlvbiBxdShsLGMsYSl7Y29uc3QgZj1HKGwpfHxjfHxhP3tuZXh0OmwsZXJyb3I6Yyxjb21wbGV0ZTphfTpsO3JldHVybiBmP250KChkLGgpPT57dmFyIG07bnVsbD09PShtPWYuc3Vi''@;'; put 'put ''c2NyaWJlKXx8dm9pZCAwPT09bXx8bS5jYWxsKGYpO2xldCBfPSEwO2Quc3Vic2NyaWJlKHFlKGgsTz0+e3ZhciBYO251bGw9PT0oWD1mLm5leHQpfHx2b2lkIDA9PT1YfHxYLmNhbGwoZixPKSxoLm5leHQoTyl9LCgpPT57dmFyIE87Xz0hMSxudWxsPT09KE89Zi5jb21wbGV0ZSl8fHZvaWQg''@;'; put 'put ''MD09PU98fE8uY2FsbChmKSxoLmNvbXBsZXRlKCl9LE89Pnt2YXIgWDtfPSExLG51bGw9PT0oWD1mLmVycm9yKXx8dm9pZCAwPT09WHx8WC5jYWxsKGYsTyksaC5lcnJvcihPKX0sKCk9Pnt2YXIgTyxYO18mJihudWxsPT09KE89Zi51bnN1YnNjcmliZSl8fHZvaWQgMD09PU98fE8uY2FsbChm''@;'; put 'put ''KSksbnVsbD09PShYPWYuZmluYWxpemUpfHx2b2lkIDA9PT1YfHxYLmNhbGwoZil9KSl9KTpGZX1mdW5jdGlvbiBrZyhsKXtyZXR1cm4gbnQoKGMsYSk9PntsZXQgaCxmPW51bGwsZD0hMTtmPWMuc3Vic2NyaWJlKHFlKGEsdm9pZCAwLHZvaWQgMCxtPT57aD1KcihsKG0sa2cobCkoYykpKSxm''@;'; put 'put ''PyhmLnVuc3Vic2NyaWJlKCksZj1udWxsLGguc3Vic2NyaWJlKGEpKTpkPSEwfSkpLGQmJihmLnVuc3Vic2NyaWJlKCksZj1udWxsLGguc3Vic2NyaWJlKGEpKX0pfWZ1bmN0aW9uIFRqKGwpe3JldHVybiBsPD0wPygpPT5IbzpudCgoYyxhKT0+e2xldCBmPVtdO2Muc3Vic2NyaWJlKHFlKGEs''@;'; put 'put ''ZD0+e2YucHVzaChkKSxsPGYubGVuZ3RoJiZmLnNoaWZ0KCl9LCgpPT57Zm9yKGNvbnN0IGQgb2YgZilhLm5leHQoZCk7YS5jb21wbGV0ZSgpfSx2b2lkIDAsKCk9PntmPW51bGx9KSl9KX1mdW5jdGlvbiBoQyhsKXtyZXR1cm4gbnQoKGMsYSk9Pnt0cnl7Yy5zdWJzY3JpYmUoYSl9ZmluYWxs''@;'; put 'put ''eXthLmFkZChsKX19KX1jb25zdCBkYT0icHJpbWFyeSIscEM9U3ltYm9sKCJSb3V0ZVRpdGxlIik7Y2xhc3MgRmJle2NvbnN0cnVjdG9yKGMpe3RoaXMucGFyYW1zPWN8fHt9fWhhcyhjKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucGFyYW1zLGMp''@;'; put 'put ''fWdldChjKXtpZih0aGlzLmhhcyhjKSl7Y29uc3QgYT10aGlzLnBhcmFtc1tjXTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hWzBdOmF9cmV0dXJuIG51bGx9Z2V0QWxsKGMpe2lmKHRoaXMuaGFzKGMpKXtjb25zdCBhPXRoaXMucGFyYW1zW2NdO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6''@;'; put 'put ''W2FdfXJldHVybltdfWdldCBrZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKX19ZnVuY3Rpb24gTXYobCl7cmV0dXJuIG5ldyBGYmUobCl9ZnVuY3Rpb24gSGJlKGwsYyxhKXtjb25zdCBmPWEucGF0aC5zcGxpdCgiLyIpO2lmKGYubGVuZ3RoPmwubGVuZ3RofHwiZnVsbCI9''@;'; put 'put ''PT1hLnBhdGhNYXRjaCYmKGMuaGFzQ2hpbGRyZW4oKXx8Zi5sZW5ndGg8bC5sZW5ndGgpKXJldHVybiBudWxsO2NvbnN0IGQ9e307Zm9yKGxldCBoPTA7aDxmLmxlbmd0aDtoKyspe2NvbnN0IG09ZltoXSxfPWxbaF07aWYobS5zdGFydHNXaXRoKCI6IikpZFttLnN1YnN0cmluZygxKV09Xztl''@;'; put 'put ''bHNlIGlmKG0hPT1fLnBhdGgpcmV0dXJuIG51bGx9cmV0dXJue2NvbnN1bWVkOmwuc2xpY2UoMCxmLmxlbmd0aCkscG9zUGFyYW1zOmR9fWZ1bmN0aW9uIE1oKGwsYyl7Y29uc3QgYT1sP09iamVjdC5rZXlzKGwpOnZvaWQgMCxmPWM/T2JqZWN0LmtleXMoYyk6dm9pZCAwO2lmKCFhfHwhZnx8''@;'; put 'put ''YS5sZW5ndGghPWYubGVuZ3RoKXJldHVybiExO2xldCBkO2ZvcihsZXQgaD0wO2g8YS5sZW5ndGg7aCsrKWlmKGQ9YVtoXSwhYXJlKGxbZF0sY1tkXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYXJlKGwsYyl7aWYoQXJyYXkuaXNBcnJheShsKSYmQXJyYXkuaXNBcnJheShjKSl7aWYo''@;'; put 'put ''bC5sZW5ndGghPT1jLmxlbmd0aClyZXR1cm4hMTtjb25zdCBhPVsuLi5sXS5zb3J0KCksZj1bLi4uY10uc29ydCgpO3JldHVybiBhLmV2ZXJ5KChkLGgpPT5mW2hdPT09ZCl9cmV0dXJuIGw9PT1jfWZ1bmN0aW9uIGxyZShsKXtyZXR1cm4gbC5sZW5ndGg+MD9sW2wubGVuZ3RoLTFdOm51bGx9''@;'; put 'put ''ZnVuY3Rpb24gcjQobCl7cmV0dXJuIEVqKGwpP2w6cGcobCk/bmwoUHJvbWlzZS5yZXNvbHZlKGwpKTpHaShsKX1jb25zdCBWYmU9e2V4YWN0OmZ1bmN0aW9uIGNyZShsLGMsYSl7aWYoIUVnKGwuc2VnbWVudHMsYy5zZWdtZW50cyl8fCFxTyhsLnNlZ21lbnRzLGMuc2VnbWVudHMsYSl8fGwu''@;'; put 'put ''bnVtYmVyT2ZDaGlsZHJlbiE9PWMubnVtYmVyT2ZDaGlsZHJlbilyZXR1cm4hMTtmb3IoY29uc3QgZiBpbiBjLmNoaWxkcmVuKWlmKCFsLmNoaWxkcmVuW2ZdfHwhY3JlKGwuY2hpbGRyZW5bZl0sYy5jaGlsZHJlbltmXSxhKSlyZXR1cm4hMTtyZXR1cm4hMH0sc3Vic2V0OmZyZX0sc3JlPXtl''@;'; put 'put ''eGFjdDpmdW5jdGlvbiBCYmUobCxjKXtyZXR1cm4gTWgobCxjKX0sc3Vic2V0OmZ1bmN0aW9uIGpiZShsLGMpe3JldHVybiBPYmplY3Qua2V5cyhjKS5sZW5ndGg8PU9iamVjdC5rZXlzKGwpLmxlbmd0aCYmT2JqZWN0LmtleXMoYykuZXZlcnkoYT0+YXJlKGxbYV0sY1thXSkpfSxpZ25vcmVk''@;'; put 'put ''OigpPT4hMH07ZnVuY3Rpb24gdXJlKGwsYyxhKXtyZXR1cm4gVmJlW2EucGF0aHNdKGwucm9vdCxjLnJvb3QsYS5tYXRyaXhQYXJhbXMpJiZzcmVbYS5xdWVyeVBhcmFtc10obC5xdWVyeVBhcmFtcyxjLnF1ZXJ5UGFyYW1zKSYmISgiZXhhY3QiPT09YS5mcmFnbWVudCYmbC5mcmFnbWVudCE9''@;'; put 'put ''PWMuZnJhZ21lbnQpfWZ1bmN0aW9uIGZyZShsLGMsYSl7cmV0dXJuIGRyZShsLGMsYy5zZWdtZW50cyxhKX1mdW5jdGlvbiBkcmUobCxjLGEsZil7aWYobC5zZWdtZW50cy5sZW5ndGg+YS5sZW5ndGgpe2NvbnN0IGQ9bC5zZWdtZW50cy5zbGljZSgwLGEubGVuZ3RoKTtyZXR1cm4hKCFFZyhk''@;'; put 'put ''LGEpfHxjLmhhc0NoaWxkcmVuKCl8fCFxTyhkLGEsZikpfWlmKGwuc2VnbWVudHMubGVuZ3RoPT09YS5sZW5ndGgpe2lmKCFFZyhsLnNlZ21lbnRzLGEpfHwhcU8obC5zZWdtZW50cyxhLGYpKXJldHVybiExO2Zvcihjb25zdCBkIGluIGMuY2hpbGRyZW4paWYoIWwuY2hpbGRyZW5bZF18fCFm''@;'; put 'put ''cmUobC5jaGlsZHJlbltkXSxjLmNoaWxkcmVuW2RdLGYpKXJldHVybiExO3JldHVybiEwfXtjb25zdCBkPWEuc2xpY2UoMCxsLnNlZ21lbnRzLmxlbmd0aCksaD1hLnNsaWNlKGwuc2VnbWVudHMubGVuZ3RoKTtyZXR1cm4hIShFZyhsLnNlZ21lbnRzLGQpJiZxTyhsLnNlZ21lbnRzLGQsZikm''@;'; put 'put ''JmwuY2hpbGRyZW5bZGFdKSYmZHJlKGwuY2hpbGRyZW5bZGFdLGMsaCxmKX19ZnVuY3Rpb24gcU8obCxjLGEpe3JldHVybiBjLmV2ZXJ5KChmLGQpPT5zcmVbYV0obFtkXS5wYXJhbWV0ZXJzLGYucGFyYW1ldGVycykpfWNsYXNzIGt2e2NvbnN0cnVjdG9yKGM9bmV3IENsKFtdLHt9KSxhPXt9''@;'; put 'put ''LGY9bnVsbCl7dGhpcy5yb290PWMsdGhpcy5xdWVyeVBhcmFtcz1hLHRoaXMuZnJhZ21lbnQ9Zn1nZXQgcXVlcnlQYXJhbU1hcCgpe3JldHVybiB0aGlzLl9xdWVyeVBhcmFtTWFwfHwodGhpcy5fcXVlcnlQYXJhbU1hcD1Ndih0aGlzLnF1ZXJ5UGFyYW1zKSksdGhpcy5fcXVlcnlQYXJhbU1h''@;'; put 'put ''cH10b1N0cmluZygpe3JldHVybiBaYmUuc2VyaWFsaXplKHRoaXMpfX1jbGFzcyBDbHtjb25zdHJ1Y3RvcihjLGEpe3RoaXMuc2VnbWVudHM9Yyx0aGlzLmNoaWxkcmVuPWEsdGhpcy5wYXJlbnQ9bnVsbCxPYmplY3QudmFsdWVzKGEpLmZvckVhY2goZj0+Zi5wYXJlbnQ9dGhpcyl9aGFzQ2hp''@;'; put 'put ''bGRyZW4oKXtyZXR1cm4gdGhpcy5udW1iZXJPZkNoaWxkcmVuPjB9Z2V0IG51bWJlck9mQ2hpbGRyZW4oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5jaGlsZHJlbikubGVuZ3RofXRvU3RyaW5nKCl7cmV0dXJuIFhPKHRoaXMpfX1jbGFzcyBtQ3tjb25zdHJ1Y3RvcihjLGEpe3RoaXMucGF0''@;'; put 'put ''aD1jLHRoaXMucGFyYW1ldGVycz1hfWdldCBwYXJhbWV0ZXJNYXAoKXtyZXR1cm4gdGhpcy5fcGFyYW1ldGVyTWFwfHwodGhpcy5fcGFyYW1ldGVyTWFwPU12KHRoaXMucGFyYW1ldGVycykpLHRoaXMuX3BhcmFtZXRlck1hcH10b1N0cmluZygpe3JldHVybiBtcmUodGhpcyl9fWZ1bmN0aW9u''@;'; put 'put ''IEVnKGwsYyl7cmV0dXJuIGwubGVuZ3RoPT09Yy5sZW5ndGgmJmwuZXZlcnkoKGEsZik9PmEucGF0aD09PWNbZl0ucGF0aCl9bGV0IGdDPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2Vu''@;'; put 'put ''OmwsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgT2p9LHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7Y2xhc3MgT2p7cGFyc2UoYyl7Y29uc3QgYT1uZXcgdF9lKGMpO3JldHVybiBuZXcga3YoYS5wYXJzZVJvb3RTZWdtZW50KCksYS5wYXJzZVF1ZXJ5UGFyYW1zKCksYS5wYXJzZUZy''@;'; put 'put ''YWdtZW50KCkpfXNlcmlhbGl6ZShjKXtjb25zdCBhPWAvJHt2QyhjLnJvb3QsITApfWAsZj1mdW5jdGlvbiBHYmUobCl7Y29uc3QgYz1PYmplY3Qua2V5cyhsKS5tYXAoYT0+e2NvbnN0IGY9bFthXTtyZXR1cm4gQXJyYXkuaXNBcnJheShmKT9mLm1hcChkPT5gJHtKTyhhKX09JHtKTyhkKX1g''@;'; put 'put ''KS5qb2luKCImIik6YCR7Sk8oYSl9PSR7Sk8oZil9YH0pLmZpbHRlcihhPT4hIWEpO3JldHVybiBjLmxlbmd0aD9gPyR7Yy5qb2luKCImIil9YDoiIn0oYy5xdWVyeVBhcmFtcyk7cmV0dXJuYCR7YX0ke2Z9JHsic3RyaW5nIj09dHlwZW9mIGMuZnJhZ21lbnQ/YCMke2Z1bmN0aW9uIFliZShs''@;'; put 'put ''KXtyZXR1cm4gZW5jb2RlVVJJKGwpfShjLmZyYWdtZW50KX1gOiIifWB9fWNvbnN0IFpiZT1uZXcgT2o7ZnVuY3Rpb24gWE8obCl7cmV0dXJuIGwuc2VnbWVudHMubWFwKGM9Pm1yZShjKSkuam9pbigiLyIpfWZ1bmN0aW9uIHZDKGwsYyl7aWYoIWwuaGFzQ2hpbGRyZW4oKSlyZXR1cm4gWE8o''@;'; put 'put ''bCk7aWYoYyl7Y29uc3QgYT1sLmNoaWxkcmVuW2RhXT92QyhsLmNoaWxkcmVuW2RhXSwhMSk6IiIsZj1bXTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2QsaF0pPT57ZCE9PWRhJiZmLnB1c2goYCR7ZH06JHt2QyhoLCExKX1gKX0pLGYubGVuZ3RoPjA/YCR7''@;'; put 'put ''YX0oJHtmLmpvaW4oIi8vIil9KWA6YX17Y29uc3QgYT1mdW5jdGlvbiBVYmUobCxjKXtsZXQgYT1bXTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2YsZF0pPT57Zj09PWRhJiYoYT1hLmNvbmNhdChjKGQsZikpKX0pLE9iamVjdC5lbnRyaWVzKGwuY2hpbGRy''@;'; put 'put ''ZW4pLmZvckVhY2goKFtmLGRdKT0+e2YhPT1kYSYmKGE9YS5jb25jYXQoYyhkLGYpKSl9KSxhfShsLChmLGQpPT5kPT09ZGE/W3ZDKGwuY2hpbGRyZW5bZGFdLCExKV06W2Ake2R9OiR7dkMoZiwhMSl9YF0pO3JldHVybiAxPT09T2JqZWN0LmtleXMobC5jaGlsZHJlbikubGVuZ3RoJiZudWxs''@;'; put 'put ''IT1sLmNoaWxkcmVuW2RhXT9gJHtYTyhsKX0vJHthWzBdfWA6YCR7WE8obCl9Lygke2Euam9pbigiLy8iKX0pYH19ZnVuY3Rpb24gaHJlKGwpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQobCkucmVwbGFjZSgvJTQwL2csIkAiKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQv''@;'; put 'put ''ZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpfWZ1bmN0aW9uIEpPKGwpe3JldHVybiBocmUobCkucmVwbGFjZSgvJTNCL2dpLCI7Iil9ZnVuY3Rpb24gRGoobCl7cmV0dXJuIGhyZShsKS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKS5yZXBsYWNlKC8lMjYvZ2ks''@;'; put 'put ''IiYiKX1mdW5jdGlvbiBRTyhsKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGwpfWZ1bmN0aW9uIHByZShsKXtyZXR1cm4gUU8obC5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9ZnVuY3Rpb24gbXJlKGwpe3JldHVybmAke0RqKGwucGF0aCl9JHtmdW5jdGlvbiBXYmUobCl7cmV0dXJuIE9iamVj''@;'; put 'put ''dC5rZXlzKGwpLm1hcChjPT5gOyR7RGooYyl9PSR7RGoobFtjXSl9YCkuam9pbigiIil9KGwucGFyYW1ldGVycyl9YH1jb25zdCAkYmU9L15bXlwvKCk/OyNdKy87ZnVuY3Rpb24gSWoobCl7Y29uc3QgYz1sLm1hdGNoKCRiZSk7cmV0dXJuIGM/Y1swXToiIn1jb25zdCBLYmU9L15bXlwvKCk/''@;'; put 'put ''Oz0jXSsvLFhiZT0vXltePT8mI10rLyxRYmU9L15bXiYjXSsvO2NsYXNzIHRfZXtjb25zdHJ1Y3RvcihjKXt0aGlzLnVybD1jLHRoaXMucmVtYWluaW5nPWN9cGFyc2VSb290U2VnbWVudCgpe3JldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbCgiLyIpLCIiPT09dGhpcy5yZW1haW5pbmd8fHRo''@;'; put 'put ''aXMucGVla1N0YXJ0c1dpdGgoIj8iKXx8dGhpcy5wZWVrU3RhcnRzV2l0aCgiIyIpP25ldyBDbChbXSx7fSk6bmV3IENsKFtdLHRoaXMucGFyc2VDaGlsZHJlbigpKX1wYXJzZVF1ZXJ5UGFyYW1zKCl7Y29uc3QgYz17fTtpZih0aGlzLmNvbnN1bWVPcHRpb25hbCgiPyIpKWRve3RoaXMucGFy''@;'; put 'put ''c2VRdWVyeVBhcmFtKGMpfXdoaWxlKHRoaXMuY29uc3VtZU9wdGlvbmFsKCImIikpO3JldHVybiBjfXBhcnNlRnJhZ21lbnQoKXtyZXR1cm4gdGhpcy5jb25zdW1lT3B0aW9uYWwoIiMiKT9kZWNvZGVVUklDb21wb25lbnQodGhpcy5yZW1haW5pbmcpOm51bGx9cGFyc2VDaGlsZHJlbigpe2lm''@;'; put 'put ''KCIiPT09dGhpcy5yZW1haW5pbmcpcmV0dXJue307dGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKTtjb25zdCBjPVtdO2Zvcih0aGlzLnBlZWtTdGFydHNXaXRoKCIoIil8fGMucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvIikmJiF0aGlzLnBlZWtTdGFy''@;'; put 'put ''dHNXaXRoKCIvLyIpJiYhdGhpcy5wZWVrU3RhcnRzV2l0aCgiLygiKTspdGhpcy5jYXB0dXJlKCIvIiksYy5wdXNoKHRoaXMucGFyc2VTZWdtZW50KCkpO2xldCBhPXt9O3RoaXMucGVla1N0YXJ0c1dpdGgoIi8oIikmJih0aGlzLmNhcHR1cmUoIi8iKSxhPXRoaXMucGFyc2VQYXJlbnMoITAp''@;'; put 'put ''KTtsZXQgZj17fTtyZXR1cm4gdGhpcy5wZWVrU3RhcnRzV2l0aCgiKCIpJiYoZj10aGlzLnBhcnNlUGFyZW5zKCExKSksKGMubGVuZ3RoPjB8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD4wKSYmKGZbZGFdPW5ldyBDbChjLGEpKSxmfXBhcnNlU2VnbWVudCgpe2NvbnN0IGM9SWoodGhpcy5yZW1h''@;'; put 'put ''aW5pbmcpO2lmKCIiPT09YyYmdGhpcy5wZWVrU3RhcnRzV2l0aCgiOyIpKXRocm93IG5ldyBJcig0MDA5LCExKTtyZXR1cm4gdGhpcy5jYXB0dXJlKGMpLG5ldyBtQyhRTyhjKSx0aGlzLnBhcnNlTWF0cml4UGFyYW1zKCkpfXBhcnNlTWF0cml4UGFyYW1zKCl7Y29uc3QgYz17fTtmb3IoO3Ro''@;'; put 'put ''aXMuY29uc3VtZU9wdGlvbmFsKCI7Iik7KXRoaXMucGFyc2VQYXJhbShjKTtyZXR1cm4gY31wYXJzZVBhcmFtKGMpe2NvbnN0IGE9ZnVuY3Rpb24gcWJlKGwpe2NvbnN0IGM9bC5tYXRjaChLYmUpO3JldHVybiBjP2NbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtpZighYSlyZXR1cm47dGhpcy5j''@;'; put 'put ''YXB0dXJlKGEpO2xldCBmPSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IGQ9SWoodGhpcy5yZW1haW5pbmcpO2QmJihmPWQsdGhpcy5jYXB0dXJlKGYpKX1jW1FPKGEpXT1RTyhmKX1wYXJzZVF1ZXJ5UGFyYW0oYyl7Y29uc3QgYT1mdW5jdGlvbiBKYmUobCl7Y29uc3Qg''@;'; put 'put ''Yz1sLm1hdGNoKFhiZSk7cmV0dXJuIGM/Y1swXToiIn0odGhpcy5yZW1haW5pbmcpO2lmKCFhKXJldHVybjt0aGlzLmNhcHR1cmUoYSk7bGV0IGY9IiI7aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj0iKSl7Y29uc3QgbT1mdW5jdGlvbiBlX2UobCl7Y29uc3QgYz1sLm1hdGNoKFFiZSk7cmV0''@;'; put 'put ''dXJuIGM/Y1swXToiIn0odGhpcy5yZW1haW5pbmcpO20mJihmPW0sdGhpcy5jYXB0dXJlKGYpKX1jb25zdCBkPXByZShhKSxoPXByZShmKTtpZihjLmhhc093blByb3BlcnR5KGQpKXtsZXQgbT1jW2RdO0FycmF5LmlzQXJyYXkobSl8fChtPVttXSxjW2RdPW0pLG0ucHVzaChoKX1lbHNlIGNb''@;'; put 'put ''ZF09aH1wYXJzZVBhcmVucyhjKXtjb25zdCBhPXt9O2Zvcih0aGlzLmNhcHR1cmUoIigiKTshdGhpcy5jb25zdW1lT3B0aW9uYWwoIikiKSYmdGhpcy5yZW1haW5pbmcubGVuZ3RoPjA7KXtjb25zdCBmPUlqKHRoaXMucmVtYWluaW5nKSxkPXRoaXMucmVtYWluaW5nW2YubGVuZ3RoXTtpZigi''@;'; put 'put ''LyIhPT1kJiYiKSIhPT1kJiYiOyIhPT1kKXRocm93IG5ldyBJcig0MDEwLCExKTtsZXQgaDtmLmluZGV4T2YoIjoiKT4tMT8oaD1mLnNsaWNlKDAsZi5pbmRleE9mKCI6IikpLHRoaXMuY2FwdHVyZShoKSx0aGlzLmNhcHR1cmUoIjoiKSk6YyYmKGg9ZGEpO2NvbnN0IG09dGhpcy5wYXJzZUNo''@;'; put 'put ''aWxkcmVuKCk7YVtoXT0xPT09T2JqZWN0LmtleXMobSkubGVuZ3RoP21bZGFdOm5ldyBDbChbXSxtKSx0aGlzLmNvbnN1bWVPcHRpb25hbCgiLy8iKX1yZXR1cm4gYX1wZWVrU3RhcnRzV2l0aChjKXtyZXR1cm4gdGhpcy5yZW1haW5pbmcuc3RhcnRzV2l0aChjKX1jb25zdW1lT3B0aW9uYWwo''@;'; put 'put ''Yyl7cmV0dXJuISF0aGlzLnBlZWtTdGFydHNXaXRoKGMpJiYodGhpcy5yZW1haW5pbmc9dGhpcy5yZW1haW5pbmcuc3Vic3RyaW5nKGMubGVuZ3RoKSwhMCl9Y2FwdHVyZShjKXtpZighdGhpcy5jb25zdW1lT3B0aW9uYWwoYykpdGhyb3cgbmV3IElyKDQwMTEsITEpfX1mdW5jdGlvbiBncmUo''@;'; put 'put ''bCl7cmV0dXJuIGwuc2VnbWVudHMubGVuZ3RoPjA/bmV3IENsKFtdLHtbZGFdOmx9KTpsfWZ1bmN0aW9uIHZyZShsKXtjb25zdCBjPXt9O2Zvcihjb25zdCBmIG9mIE9iamVjdC5rZXlzKGwuY2hpbGRyZW4pKXtjb25zdCBoPXZyZShsLmNoaWxkcmVuW2ZdKTtpZihmPT09ZGEmJjA9PT1oLnNl''@;'; put 'put ''Z21lbnRzLmxlbmd0aCYmaC5oYXNDaGlsZHJlbigpKWZvcihjb25zdFttLF9db2YgT2JqZWN0LmVudHJpZXMoaC5jaGlsZHJlbikpY1ttXT1fO2Vsc2UoaC5zZWdtZW50cy5sZW5ndGg+MHx8aC5oYXNDaGlsZHJlbigpKSYmKGNbZl09aCl9cmV0dXJuIGZ1bmN0aW9uIG5fZShsKXtpZigxPT09''@;'; put 'put ''bC5udW1iZXJPZkNoaWxkcmVuJiZsLmNoaWxkcmVuW2RhXSl7Y29uc3QgYz1sLmNoaWxkcmVuW2RhXTtyZXR1cm4gbmV3IENsKGwuc2VnbWVudHMuY29uY2F0KGMuc2VnbWVudHMpLGMuY2hpbGRyZW4pfXJldHVybiBsfShuZXcgQ2wobC5zZWdtZW50cyxjKSl9ZnVuY3Rpb24geGcobCl7cmV0''@;'; put 'put ''dXJuIGwgaW5zdGFuY2VvZiBrdn1mdW5jdGlvbiB5cmUobCl7bGV0IGM7Y29uc3QgZD1ncmUoZnVuY3Rpb24gYShoKXtjb25zdCBtPXt9O2Zvcihjb25zdCBPIG9mIGguY2hpbGRyZW4pe2NvbnN0IFg9YShPKTttW08ub3V0bGV0XT1YfWNvbnN0IF89bmV3IENsKGgudXJsLG0pO3JldHVybiBo''@;'; put 'put ''PT09bCYmKGM9XyksX30obC5yb290KSk7cmV0dXJuIGM/P2R9ZnVuY3Rpb24gYnJlKGwsYyxhLGYpe2xldCBkPWw7Zm9yKDtkLnBhcmVudDspZD1kLnBhcmVudDtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIFJqKGQsZCxkLGEsZik7Y29uc3QgaD1mdW5jdGlvbiBpX2UobCl7aWYoInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBsWzBdJiYxPT09bC5sZW5ndGgmJiIvIj09PWxbMF0pcmV0dXJuIG5ldyB3cmUoITAsMCxsKTtsZXQgYz0wLGE9ITE7Y29uc3QgZj1sLnJlZHVjZSgoZCxoLG0pPT57aWYoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT1oKXtpZihoLm91dGxldHMpe2NvbnN0IF89e307cmV0dXJu''@;'; put 'put ''IE9iamVjdC5lbnRyaWVzKGgub3V0bGV0cykuZm9yRWFjaCgoW08sWF0pPT57X1tPXT0ic3RyaW5nIj09dHlwZW9mIFg/WC5zcGxpdCgiLyIpOlh9KSxbLi4uZCx7b3V0bGV0czpffV19aWYoaC5zZWdtZW50UGF0aClyZXR1cm5bLi4uZCxoLnNlZ21lbnRQYXRoXX1yZXR1cm4ic3RyaW5nIiE9''@;'; put 'put ''dHlwZW9mIGg/Wy4uLmQsaF06MD09PW0/KGguc3BsaXQoIi8iKS5mb3JFYWNoKChfLE8pPT57MD09TyYmIi4iPT09X3x8KDA9PU8mJiIiPT09Xz9hPSEwOiIuLiI9PT1fP2MrKzoiIiE9XyYmZC5wdXNoKF8pKX0pLGQpOlsuLi5kLGhdfSxbXSk7cmV0dXJuIG5ldyB3cmUoYSxjLGYpfShjKTtp''@;'; put 'put ''ZihoLnRvUm9vdCgpKXJldHVybiBSaihkLGQsbmV3IENsKFtdLHt9KSxhLGYpO2NvbnN0IG09ZnVuY3Rpb24gb19lKGwsYyxhKXtpZihsLmlzQWJzb2x1dGUpcmV0dXJuIG5ldyB0RChjLCEwLDApO2lmKCFhKXJldHVybiBuZXcgdEQoYywhMSxOYU4pO2lmKG51bGw9PT1hLnBhcmVudClyZXR1''@;'; put 'put ''cm4gbmV3IHREKGEsITAsMCk7Y29uc3QgZj1lRChsLmNvbW1hbmRzWzBdKT8wOjE7cmV0dXJuIGZ1bmN0aW9uIGFfZShsLGMsYSl7bGV0IGY9bCxkPWMsaD1hO2Zvcig7aD5kOyl7aWYoaC09ZCxmPWYucGFyZW50LCFmKXRocm93IG5ldyBJcig0MDA1LCExKTtkPWYuc2VnbWVudHMubGVuZ3Ro''@;'; put 'put ''fXJldHVybiBuZXcgdEQoZiwhMSxkLWgpfShhLGEuc2VnbWVudHMubGVuZ3RoLTErZixsLm51bWJlck9mRG91YmxlRG90cyl9KGgsZCxsKSxfPW0ucHJvY2Vzc0NoaWxkcmVuP2JDKG0uc2VnbWVudEdyb3VwLG0uaW5kZXgsaC5jb21tYW5kcyk6Q3JlKG0uc2VnbWVudEdyb3VwLG0uaW5kZXgs''@;'; put 'put ''aC5jb21tYW5kcyk7cmV0dXJuIFJqKGQsbS5zZWdtZW50R3JvdXAsXyxhLGYpfWZ1bmN0aW9uIGVEKGwpe3JldHVybiJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9bCYmIWwub3V0bGV0cyYmIWwuc2VnbWVudFBhdGh9ZnVuY3Rpb24geUMobCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBsJiZu''@;'; put 'put ''dWxsIT1sJiZsLm91dGxldHN9ZnVuY3Rpb24gUmoobCxjLGEsZixkKXtsZXQgbSxoPXt9O2YmJk9iamVjdC5lbnRyaWVzKGYpLmZvckVhY2goKFtPLFhdKT0+e2hbT109QXJyYXkuaXNBcnJheShYKT9YLm1hcChhZT0+YCR7YWV9YCk6YCR7WH1gfSksbT1sPT09Yz9hOl9yZShsLGMsYSk7Y29u''@;'; put 'put ''c3QgXz1ncmUodnJlKG0pKTtyZXR1cm4gbmV3IGt2KF8saCxkKX1mdW5jdGlvbiBfcmUobCxjLGEpe2NvbnN0IGY9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGwuY2hpbGRyZW4pLmZvckVhY2goKFtkLGhdKT0+e2ZbZF09aD09PWM/YTpfcmUoaCxjLGEpfSksbmV3IENsKGwuc2VnbWVudHMs''@;'; put 'put ''Zil9Y2xhc3Mgd3Jle2NvbnN0cnVjdG9yKGMsYSxmKXtpZih0aGlzLmlzQWJzb2x1dGU9Yyx0aGlzLm51bWJlck9mRG91YmxlRG90cz1hLHRoaXMuY29tbWFuZHM9ZixjJiZmLmxlbmd0aD4wJiZlRChmWzBdKSl0aHJvdyBuZXcgSXIoNDAwMywhMSk7Y29uc3QgZD1mLmZpbmQoeUMpO2lmKGQm''@;'; put 'put ''JmQhPT1scmUoZikpdGhyb3cgbmV3IElyKDQwMDQsITEpfXRvUm9vdCgpe3JldHVybiB0aGlzLmlzQWJzb2x1dGUmJjE9PT10aGlzLmNvbW1hbmRzLmxlbmd0aCYmIi8iPT10aGlzLmNvbW1hbmRzWzBdfX1jbGFzcyB0RHtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5zZWdtZW50R3JvdXA9Yyx0''@;'; put 'put ''aGlzLnByb2Nlc3NDaGlsZHJlbj1hLHRoaXMuaW5kZXg9Zn19ZnVuY3Rpb24gQ3JlKGwsYyxhKXtpZihsfHwobD1uZXcgQ2woW10se30pKSwwPT09bC5zZWdtZW50cy5sZW5ndGgmJmwuaGFzQ2hpbGRyZW4oKSlyZXR1cm4gYkMobCxjLGEpO2NvbnN0IGY9ZnVuY3Rpb24gc19lKGwsYyxhKXts''@;'; put 'put ''ZXQgZj0wLGQ9Yztjb25zdCBoPXttYXRjaDohMSxwYXRoSW5kZXg6MCxjb21tYW5kSW5kZXg6MH07Zm9yKDtkPGwuc2VnbWVudHMubGVuZ3RoOyl7aWYoZj49YS5sZW5ndGgpcmV0dXJuIGg7Y29uc3QgbT1sLnNlZ21lbnRzW2RdLF89YVtmXTtpZih5QyhfKSlicmVhaztjb25zdCBPPWAke199''@;'; put 'put ''YCxYPWY8YS5sZW5ndGgtMT9hW2YrMV06bnVsbDtpZihkPjAmJnZvaWQgMD09PU8pYnJlYWs7aWYoTyYmWCYmIm9iamVjdCI9PXR5cGVvZiBYJiZ2b2lkIDA9PT1YLm91dGxldHMpe2lmKCFNcmUoTyxYLG0pKXJldHVybiBoO2YrPTJ9ZWxzZXtpZighTXJlKE8se30sbSkpcmV0dXJuIGg7Zisr''@;'; put 'put ''fWQrK31yZXR1cm57bWF0Y2g6ITAscGF0aEluZGV4OmQsY29tbWFuZEluZGV4OmZ9fShsLGMsYSksZD1hLnNsaWNlKGYuY29tbWFuZEluZGV4KTtpZihmLm1hdGNoJiZmLnBhdGhJbmRleDxsLnNlZ21lbnRzLmxlbmd0aCl7Y29uc3QgaD1uZXcgQ2wobC5zZWdtZW50cy5zbGljZSgwLGYucGF0''@;'; put 'put ''aEluZGV4KSx7fSk7cmV0dXJuIGguY2hpbGRyZW5bZGFdPW5ldyBDbChsLnNlZ21lbnRzLnNsaWNlKGYucGF0aEluZGV4KSxsLmNoaWxkcmVuKSxiQyhoLDAsZCl9cmV0dXJuIGYubWF0Y2gmJjA9PT1kLmxlbmd0aD9uZXcgQ2wobC5zZWdtZW50cyx7fSk6Zi5tYXRjaCYmIWwuaGFzQ2hpbGRy''@;'; put 'put ''ZW4oKT9MaihsLGMsYSk6Zi5tYXRjaD9iQyhsLDAsZCk6TGoobCxjLGEpfWZ1bmN0aW9uIGJDKGwsYyxhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG5ldyBDbChsLnNlZ21lbnRzLHt9KTt7Y29uc3QgZj1mdW5jdGlvbiBsX2UobCl7cmV0dXJuIHlDKGxbMF0pP2xbMF0ub3V0bGV0czp7W2Rh''@;'; put 'put ''XTpsfX0oYSksZD17fTtpZighZltkYV0mJmwuY2hpbGRyZW5bZGFdJiYxPT09bC5udW1iZXJPZkNoaWxkcmVuJiYwPT09bC5jaGlsZHJlbltkYV0uc2VnbWVudHMubGVuZ3RoKXtjb25zdCBoPWJDKGwuY2hpbGRyZW5bZGFdLGMsYSk7cmV0dXJuIG5ldyBDbChsLnNlZ21lbnRzLGguY2hpbGRy''@;'; put 'put ''ZW4pfXJldHVybiBPYmplY3QuZW50cmllcyhmKS5mb3JFYWNoKChbaCxtXSk9Pnsic3RyaW5nIj09dHlwZW9mIG0mJihtPVttXSksbnVsbCE9PW0mJihkW2hdPUNyZShsLmNoaWxkcmVuW2hdLGMsbSkpfSksT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2gsbV0pPT57dm9p''@;'; put 'put ''ZCAwPT09ZltoXSYmKGRbaF09bSl9KSxuZXcgQ2wobC5zZWdtZW50cyxkKX19ZnVuY3Rpb24gTGoobCxjLGEpe2NvbnN0IGY9bC5zZWdtZW50cy5zbGljZSgwLGMpO2xldCBkPTA7Zm9yKDtkPGEubGVuZ3RoOyl7Y29uc3QgaD1hW2RdO2lmKHlDKGgpKXtjb25zdCBPPXVfZShoLm91dGxldHMp''@;'; put 'put ''O3JldHVybiBuZXcgQ2woZixPKX1pZigwPT09ZCYmZUQoYVswXSkpe2YucHVzaChuZXcgbUMobC5zZWdtZW50c1tjXS5wYXRoLFNyZShhWzBdKSkpLGQrKztjb250aW51ZX1jb25zdCBtPXlDKGgpP2gub3V0bGV0c1tkYV06YCR7aH1gLF89ZDxhLmxlbmd0aC0xP2FbZCsxXTpudWxsO20mJl8m''@;'; put 'put ''JmVEKF8pPyhmLnB1c2gobmV3IG1DKG0sU3JlKF8pKSksZCs9Mik6KGYucHVzaChuZXcgbUMobSx7fSkpLGQrKyl9cmV0dXJuIG5ldyBDbChmLHt9KX1mdW5jdGlvbiB1X2UobCl7Y29uc3QgYz17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobCkuZm9yRWFjaCgoW2EsZl0pPT57InN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBmJiYoZj1bZl0pLG51bGwhPT1mJiYoY1thXT1MaihuZXcgQ2woW10se30pLDAsZikpfSksY31mdW5jdGlvbiBTcmUobCl7Y29uc3QgYz17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobCkuZm9yRWFjaCgoW2EsZl0pPT5jW2FdPWAke2Z9YCksY31mdW5jdGlvbiBNcmUobCxjLGEp''@;'; put 'put ''e3JldHVybiBsPT1hLnBhdGgmJk1oKGMsYS5wYXJhbWV0ZXJzKX1jb25zdCBfQz0iaW1wZXJhdGl2ZSI7Y2xhc3Mga2h7Y29uc3RydWN0b3IoYyxhKXt0aGlzLmlkPWMsdGhpcy51cmw9YX19Y2xhc3MgUGogZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEsZj0iaW1wZXJhdGl2ZSIsZD1udWxs''@;'; put 'put ''KXtzdXBlcihjLGEpLHRoaXMudHlwZT0wLHRoaXMubmF2aWdhdGlvblRyaWdnZXI9Zix0aGlzLnJlc3RvcmVkU3RhdGU9ZH10b1N0cmluZygpe3JldHVybmBOYXZpZ2F0aW9uU3RhcnQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JylgfX1jbGFzcyBpNCBleHRlbmRzIGtoe2Nv''@;'; put 'put ''bnN0cnVjdG9yKGMsYSxmKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9Zix0aGlzLnR5cGU9MX10b1N0cmluZygpe3JldHVybmBOYXZpZ2F0aW9uRW5kKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFm''@;'; put 'put ''dGVyUmVkaXJlY3RzfScpYH19Y2xhc3MgbkQgZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEsZixkKXtzdXBlcihjLGEpLHRoaXMucmVhc29uPWYsdGhpcy5jb2RlPWQsdGhpcy50eXBlPTJ9dG9TdHJpbmcoKXtyZXR1cm5gTmF2aWdhdGlvbkNhbmNlbChpZDogJHt0aGlzLmlkfSwgdXJsOiAn''@;'; put 'put ''JHt0aGlzLnVybH0nKWB9fWNsYXNzIHdDIGV4dGVuZHMga2h7Y29uc3RydWN0b3IoYyxhLGYsZCl7c3VwZXIoYyxhKSx0aGlzLnJlYXNvbj1mLHRoaXMuY29kZT1kLHRoaXMudHlwZT0xNn19Y2xhc3MgRmogZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEsZixkKXtzdXBlcihjLGEpLHRoaXMu''@;'; put 'put ''ZXJyb3I9Zix0aGlzLnRhcmdldD1kLHRoaXMudHlwZT0zfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FcnJvcihpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCBlcnJvcjogJHt0aGlzLmVycm9yfSlgfX1jbGFzcyBjX2UgZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEs''@;'; put 'put ''ZixkKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9Zix0aGlzLnN0YXRlPWQsdGhpcy50eXBlPTR9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVzUmVjb2duaXplZChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51''@;'; put 'put ''cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0YXRlfSlgfX1jbGFzcyBmX2UgZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEsZixkKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9Zix0aGlzLnN0YXRlPWQsdGhpcy50eXBlPTd9dG9TdHJpbmcoKXtyZXR1cm5g''@;'; put 'put ''R3VhcmRzQ2hlY2tTdGFydChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0YXRlfSlgfX1jbGFzcyBkX2UgZXh0ZW5kcyBraHtjb25zdHJ1Y3RvcihjLGEsZixk''@;'; put 'put ''LGgpe3N1cGVyKGMsYSksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1mLHRoaXMuc3RhdGU9ZCx0aGlzLnNob3VsZEFjdGl2YXRlPWgsdGhpcy50eXBlPTh9dG9TdHJpbmcoKXtyZXR1cm5gR3VhcmRzQ2hlY2tFbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJS''@;'; put 'put ''ZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0sIHNob3VsZEFjdGl2YXRlOiAke3RoaXMuc2hvdWxkQWN0aXZhdGV9KWB9fWNsYXNzIGhfZSBleHRlbmRzIGtoe2NvbnN0cnVjdG9yKGMsYSxmLGQpe3N1cGVyKGMsYSksdGhpcy51cmxB''@;'; put 'put ''ZnRlclJlZGlyZWN0cz1mLHRoaXMuc3RhdGU9ZCx0aGlzLnR5cGU9NX10b1N0cmluZygpe3JldHVybmBSZXNvbHZlU3RhcnQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7''@;'; put 'put ''dGhpcy5zdGF0ZX0pYH19Y2xhc3MgcF9lIGV4dGVuZHMga2h7Y29uc3RydWN0b3IoYyxhLGYsZCl7c3VwZXIoYyxhKSx0aGlzLnVybEFmdGVyUmVkaXJlY3RzPWYsdGhpcy5zdGF0ZT1kLHRoaXMudHlwZT02fXRvU3RyaW5nKCl7cmV0dXJuYFJlc29sdmVFbmQoaWQ6ICR7dGhpcy5pZH0sIHVy''@;'; put 'put ''bDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgbV9le2NvbnN0cnVjdG9yKGMpe3RoaXMucm91dGU9Yyx0aGlzLnR5cGU9OX10b1N0cmluZygpe3JldHVybmBSb3V0ZUNv''@;'; put 'put ''bmZpZ0xvYWRTdGFydChwYXRoOiAke3RoaXMucm91dGUucGF0aH0pYH19Y2xhc3MgZ19le2NvbnN0cnVjdG9yKGMpe3RoaXMucm91dGU9Yyx0aGlzLnR5cGU9MTB9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVDb25maWdMb2FkRW5kKHBhdGg6ICR7dGhpcy5yb3V0ZS5wYXRofSlgfX1jbGFzcyB2''@;'; put 'put ''X2V7Y29uc3RydWN0b3IoYyl7dGhpcy5zbmFwc2hvdD1jLHRoaXMudHlwZT0xMX10b1N0cmluZygpe3JldHVybmBDaGlsZEFjdGl2YXRpb25TdGFydChwYXRoOiAnJHt0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIifScpYH19Y2xh''@;'; put 'put ''c3MgeV9le2NvbnN0cnVjdG9yKGMpe3RoaXMuc25hcHNob3Q9Yyx0aGlzLnR5cGU9MTJ9dG9TdHJpbmcoKXtyZXR1cm5gQ2hpbGRBY3RpdmF0aW9uRW5kKHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1j''@;'; put 'put ''bGFzcyBiX2V7Y29uc3RydWN0b3IoYyl7dGhpcy5zbmFwc2hvdD1jLHRoaXMudHlwZT0xM310b1N0cmluZygpe3JldHVybmBBY3RpdmF0aW9uU3RhcnQocGF0aDogJyR7dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIn0nKWB9fWNs''@;'; put 'put ''YXNzIF9fZXtjb25zdHJ1Y3RvcihjKXt0aGlzLnNuYXBzaG90PWMsdGhpcy50eXBlPTE0fXRvU3RyaW5nKCl7cmV0dXJuYEFjdGl2YXRpb25FbmQocGF0aDogJyR7dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIn0nKWB9fWNsYXNz''@;'; put 'put ''IGtyZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5yb3V0ZXJFdmVudD1jLHRoaXMucG9zaXRpb249YSx0aGlzLmFuY2hvcj1mLHRoaXMudHlwZT0xNX10b1N0cmluZygpe3JldHVybmBTY3JvbGwoYW5jaG9yOiAnJHt0aGlzLmFuY2hvcn0nLCBwb3NpdGlvbjogJyR7dGhpcy5wb3NpdGlvbj9g''@;'; put 'put ''JHt0aGlzLnBvc2l0aW9uWzBdfSwgJHt0aGlzLnBvc2l0aW9uWzFdfWA6bnVsbH0nKWB9fWNsYXNzIHdfZXtjb25zdHJ1Y3Rvcigpe3RoaXMub3V0bGV0PW51bGwsdGhpcy5yb3V0ZT1udWxsLHRoaXMuaW5qZWN0b3I9bnVsbCx0aGlzLmNoaWxkcmVuPW5ldyBDQyx0aGlzLmF0dGFjaFJlZj1u''@;'; put 'put ''dWxsfX1sZXQgQ0M9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuY29udGV4dHM9bmV3IE1hcH1vbkNoaWxkT3V0bGV0Q3JlYXRlZChhLGYpe2NvbnN0IGQ9dGhpcy5nZXRPckNyZWF0ZUNvbnRleHQoYSk7ZC5vdXRsZXQ9Zix0aGlzLmNvbnRleHRzLnNldChhLGQpfW9uQ2hpbGRP''@;'; put 'put ''dXRsZXREZXN0cm95ZWQoYSl7Y29uc3QgZj10aGlzLmdldENvbnRleHQoYSk7ZiYmKGYub3V0bGV0PW51bGwsZi5hdHRhY2hSZWY9bnVsbCl9b25PdXRsZXREZWFjdGl2YXRlZCgpe2NvbnN0IGE9dGhpcy5jb250ZXh0cztyZXR1cm4gdGhpcy5jb250ZXh0cz1uZXcgTWFwLGF9b25PdXRsZXRS''@;'; put 'put ''ZUF0dGFjaGVkKGEpe3RoaXMuY29udGV4dHM9YX1nZXRPckNyZWF0ZUNvbnRleHQoYSl7bGV0IGY9dGhpcy5nZXRDb250ZXh0KGEpO3JldHVybiBmfHwoZj1uZXcgd19lLHRoaXMuY29udGV4dHMuc2V0KGEsZikpLGZ9Z2V0Q29udGV4dChhKXtyZXR1cm4gdGhpcy5jb250ZXh0cy5nZXQoYSl8''@;'; put 'put ''fG51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2NsYXNzIEVyZXtjb25zdHJ1Y3RvcihjKXt0aGlzLl9yb290PWN9''@;'; put 'put ''Z2V0IHJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdC52YWx1ZX1wYXJlbnQoYyl7Y29uc3QgYT10aGlzLnBhdGhGcm9tUm9vdChjKTtyZXR1cm4gYS5sZW5ndGg+MT9hW2EubGVuZ3RoLTJdOm51bGx9Y2hpbGRyZW4oYyl7Y29uc3QgYT1IaihjLHRoaXMuX3Jvb3QpO3JldHVybiBhP2EuY2hpbGRy''@;'; put 'put ''ZW4ubWFwKGY9PmYudmFsdWUpOltdfWZpcnN0Q2hpbGQoYyl7Y29uc3QgYT1IaihjLHRoaXMuX3Jvb3QpO3JldHVybiBhJiZhLmNoaWxkcmVuLmxlbmd0aD4wP2EuY2hpbGRyZW5bMF0udmFsdWU6bnVsbH1zaWJsaW5ncyhjKXtjb25zdCBhPU5qKGMsdGhpcy5fcm9vdCk7cmV0dXJuIGEubGVu''@;'; put 'put ''Z3RoPDI/W106YVthLmxlbmd0aC0yXS5jaGlsZHJlbi5tYXAoZD0+ZC52YWx1ZSkuZmlsdGVyKGQ9PmQhPT1jKX1wYXRoRnJvbVJvb3QoYyl7cmV0dXJuIE5qKGMsdGhpcy5fcm9vdCkubWFwKGE9PmEudmFsdWUpfX1mdW5jdGlvbiBIaihsLGMpe2lmKGw9PT1jLnZhbHVlKXJldHVybiBjO2Zv''@;'; put 'put ''cihjb25zdCBhIG9mIGMuY2hpbGRyZW4pe2NvbnN0IGY9SGoobCxhKTtpZihmKXJldHVybiBmfXJldHVybiBudWxsfWZ1bmN0aW9uIE5qKGwsYyl7aWYobD09PWMudmFsdWUpcmV0dXJuW2NdO2Zvcihjb25zdCBhIG9mIGMuY2hpbGRyZW4pe2NvbnN0IGY9TmoobCxhKTtpZihmLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gZi51bnNoaWZ0KGMpLGZ9cmV0dXJuW119Y2xhc3MgRzJ7Y29uc3RydWN0b3IoYyxhKXt0aGlzLnZhbHVlPWMsdGhpcy5jaGlsZHJlbj1hfXRvU3RyaW5nKCl7cmV0dXJuYFRyZWVOb2RlKCR7dGhpcy52YWx1ZX0pYH19ZnVuY3Rpb24gRXYobCl7Y29uc3QgYz17fTtyZXR1cm4gbCYm''@;'; put 'put ''bC5jaGlsZHJlbi5mb3JFYWNoKGE9PmNbYS52YWx1ZS5vdXRsZXRdPWEpLGN9Y2xhc3MgeHJlIGV4dGVuZHMgRXJle2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYyksdGhpcy5zbmFwc2hvdD1hLFZqKHRoaXMsYyl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5zbmFwc2hvdC50b1N0cmluZygpfX1m''@;'; put 'put ''dW5jdGlvbiBBcmUobCxjKXtjb25zdCBhPWZ1bmN0aW9uIENfZShsLGMpe2NvbnN0IG09bmV3IHJEKFtdLHt9LHt9LCIiLHt9LGRhLGMsbnVsbCx7fSk7cmV0dXJuIG5ldyBPcmUoIiIsbmV3IEcyKG0sW10pKX0oMCxjKSxmPW5ldyBPZShbbmV3IG1DKCIiLHt9KV0pLGQ9bmV3IE9lKHt9KSxo''@;'; put 'put ''PW5ldyBPZSh7fSksbT1uZXcgT2Uoe30pLF89bmV3IE9lKCIiKSxPPW5ldyB0dShmLGQsbSxfLGgsZGEsYyxhLnJvb3QpO3JldHVybiBPLnNuYXBzaG90PWEucm9vdCxuZXcgeHJlKG5ldyBHMihPLFtdKSxhKX1jbGFzcyB0dXtjb25zdHJ1Y3RvcihjLGEsZixkLGgsbSxfLE8pe3RoaXMudXJs''@;'; put 'put ''U3ViamVjdD1jLHRoaXMucGFyYW1zU3ViamVjdD1hLHRoaXMucXVlcnlQYXJhbXNTdWJqZWN0PWYsdGhpcy5mcmFnbWVudFN1YmplY3Q9ZCx0aGlzLmRhdGFTdWJqZWN0PWgsdGhpcy5vdXRsZXQ9bSx0aGlzLmNvbXBvbmVudD1fLHRoaXMuX2Z1dHVyZVNuYXBzaG90PU8sdGhpcy50aXRsZT10''@;'; put 'put ''aGlzLmRhdGFTdWJqZWN0Py5waXBlKEVlKFg9PlhbcENdKSk/P0dpKHZvaWQgMCksdGhpcy51cmw9Yyx0aGlzLnBhcmFtcz1hLHRoaXMucXVlcnlQYXJhbXM9Zix0aGlzLmZyYWdtZW50PWQsdGhpcy5kYXRhPWh9Z2V0IHJvdXRlQ29uZmlnKCl7cmV0dXJuIHRoaXMuX2Z1dHVyZVNuYXBzaG90''@;'; put 'put ''LnJvdXRlQ29uZmlnfWdldCByb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnJvb3R9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXJlbnQodGhpcyl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuZmlyc3RDaGlsZCh0aGlzKX1n''@;'; put 'put ''ZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuY2hpbGRyZW4odGhpcyl9Z2V0IHBhdGhGcm9tUm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXRoRnJvbVJvb3QodGhpcyl9Z2V0IHBhcmFtTWFwKCl7cmV0dXJuIHRoaXMuX3BhcmFtTWFwfHwodGhpcy5fcGFy''@;'; put 'put ''YW1NYXA9dGhpcy5wYXJhbXMucGlwZShFZShjPT5NdihjKSkpKSx0aGlzLl9wYXJhbU1hcH1nZXQgcXVlcnlQYXJhbU1hcCgpe3JldHVybiB0aGlzLl9xdWVyeVBhcmFtTWFwfHwodGhpcy5fcXVlcnlQYXJhbU1hcD10aGlzLnF1ZXJ5UGFyYW1zLnBpcGUoRWUoYz0+TXYoYykpKSksdGhpcy5f''@;'; put 'put ''cXVlcnlQYXJhbU1hcH10b1N0cmluZygpe3JldHVybiB0aGlzLnNuYXBzaG90P3RoaXMuc25hcHNob3QudG9TdHJpbmcoKTpgRnV0dXJlKCR7dGhpcy5fZnV0dXJlU25hcHNob3R9KWB9fWZ1bmN0aW9uIFRyZShsLGM9ImVtcHR5T25seSIpe2NvbnN0IGE9bC5wYXRoRnJvbVJvb3Q7bGV0IGY9''@;'; put 'put ''MDtpZigiYWx3YXlzIiE9PWMpZm9yKGY9YS5sZW5ndGgtMTtmPj0xOyl7Y29uc3QgZD1hW2ZdLGg9YVtmLTFdO2lmKGQucm91dGVDb25maWcmJiIiPT09ZC5yb3V0ZUNvbmZpZy5wYXRoKWYtLTtlbHNle2lmKGguY29tcG9uZW50KWJyZWFrO2YtLX19cmV0dXJuIGZ1bmN0aW9uIFNfZShsKXty''@;'; put 'put ''ZXR1cm4gbC5yZWR1Y2UoKGMsYSk9Pih7cGFyYW1zOnsuLi5jLnBhcmFtcywuLi5hLnBhcmFtc30sZGF0YTp7Li4uYy5kYXRhLC4uLmEuZGF0YX0scmVzb2x2ZTp7Li4uYS5kYXRhLC4uLmMucmVzb2x2ZSwuLi5hLnJvdXRlQ29uZmlnPy5kYXRhLC4uLmEuX3Jlc29sdmVkRGF0YX19KSx7cGFy''@;'; put 'put ''YW1zOnt9LGRhdGE6e30scmVzb2x2ZTp7fX0pfShhLnNsaWNlKGYpKX1jbGFzcyByRHtnZXQgdGl0bGUoKXtyZXR1cm4gdGhpcy5kYXRhPy5bcENdfWNvbnN0cnVjdG9yKGMsYSxmLGQsaCxtLF8sTyxYKXt0aGlzLnVybD1jLHRoaXMucGFyYW1zPWEsdGhpcy5xdWVyeVBhcmFtcz1mLHRoaXMu''@;'; put 'put ''ZnJhZ21lbnQ9ZCx0aGlzLmRhdGE9aCx0aGlzLm91dGxldD1tLHRoaXMuY29tcG9uZW50PV8sdGhpcy5yb3V0ZUNvbmZpZz1PLHRoaXMuX3Jlc29sdmU9WH1nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5yb290fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3Rh''@;'; put 'put ''dGUucGFyZW50KHRoaXMpfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0Q2hpbGQodGhpcyl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRoaXMpfWdldCBwYXRoRnJvbVJvb3QoKXtyZXR1cm4gdGhpcy5fcm91''@;'; put 'put ''dGVyU3RhdGUucGF0aEZyb21Sb290KHRoaXMpfWdldCBwYXJhbU1hcCgpe3JldHVybiB0aGlzLl9wYXJhbU1hcHx8KHRoaXMuX3BhcmFtTWFwPU12KHRoaXMucGFyYW1zKSksdGhpcy5fcGFyYW1NYXB9Z2V0IHF1ZXJ5UGFyYW1NYXAoKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRo''@;'; put 'put ''aXMuX3F1ZXJ5UGFyYW1NYXA9TXYodGhpcy5xdWVyeVBhcmFtcykpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGUodXJsOicke3RoaXMudXJsLm1hcChmPT5mLnRvU3RyaW5nKCkpLmpvaW4oIi8iKX0nLCBwYXRoOicke3RoaXMucm91dGVDb25maWc/dGhpcy5y''@;'; put 'put ''b3V0ZUNvbmZpZy5wYXRoOiIifScpYH19Y2xhc3MgT3JlIGV4dGVuZHMgRXJle2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYSksdGhpcy51cmw9YyxWaih0aGlzLGEpfXRvU3RyaW5nKCl7cmV0dXJuIERyZSh0aGlzLl9yb290KX19ZnVuY3Rpb24gVmoobCxjKXtjLnZhbHVlLl9yb3V0ZXJTdGF0''@;'; put 'put ''ZT1sLGMuY2hpbGRyZW4uZm9yRWFjaChhPT5WaihsLGEpKX1mdW5jdGlvbiBEcmUobCl7Y29uc3QgYz1sLmNoaWxkcmVuLmxlbmd0aD4wP2AgeyAke2wuY2hpbGRyZW4ubWFwKERyZSkuam9pbigiLCAiKX0gfSBgOiIiO3JldHVybmAke2wudmFsdWV9JHtjfWB9ZnVuY3Rpb24gQmoobCl7aWYo''@;'; put 'put ''bC5zbmFwc2hvdCl7Y29uc3QgYz1sLnNuYXBzaG90LGE9bC5fZnV0dXJlU25hcHNob3Q7bC5zbmFwc2hvdD1hLE1oKGMucXVlcnlQYXJhbXMsYS5xdWVyeVBhcmFtcyl8fGwucXVlcnlQYXJhbXNTdWJqZWN0Lm5leHQoYS5xdWVyeVBhcmFtcyksYy5mcmFnbWVudCE9PWEuZnJhZ21lbnQmJmwu''@;'; put 'put ''ZnJhZ21lbnRTdWJqZWN0Lm5leHQoYS5mcmFnbWVudCksTWgoYy5wYXJhbXMsYS5wYXJhbXMpfHxsLnBhcmFtc1N1YmplY3QubmV4dChhLnBhcmFtcyksZnVuY3Rpb24gTmJlKGwsYyl7aWYobC5sZW5ndGghPT1jLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MDthPGwubGVuZ3RoOysrYSlp''@;'; put 'put ''ZighTWgobFthXSxjW2FdKSlyZXR1cm4hMTtyZXR1cm4hMH0oYy51cmwsYS51cmwpfHxsLnVybFN1YmplY3QubmV4dChhLnVybCksTWgoYy5kYXRhLGEuZGF0YSl8fGwuZGF0YVN1YmplY3QubmV4dChhLmRhdGEpfWVsc2UgbC5zbmFwc2hvdD1sLl9mdXR1cmVTbmFwc2hvdCxsLmRhdGFTdWJq''@;'; put 'put ''ZWN0Lm5leHQobC5fZnV0dXJlU25hcHNob3QuZGF0YSl9ZnVuY3Rpb24gamoobCxjKXtjb25zdCBhPU1oKGwucGFyYW1zLGMucGFyYW1zKSYmZnVuY3Rpb24gemJlKGwsYyl7cmV0dXJuIEVnKGwsYykmJmwuZXZlcnkoKGEsZik9Pk1oKGEucGFyYW1ldGVycyxjW2ZdLnBhcmFtZXRlcnMpKX0o''@;'; put 'put ''bC51cmwsYy51cmwpO3JldHVybiBhJiYhKCFsLnBhcmVudCE9IWMucGFyZW50KSYmKCFsLnBhcmVudHx8amoobC5wYXJlbnQsYy5wYXJlbnQpKX1sZXQgeHY9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aXZhdGVkPW51bGwsdGhpcy5fYWN0aXZhdGVkUm91dGU9bnVsbCx0''@;'; put 'put ''aGlzLm5hbWU9ZGEsdGhpcy5hY3RpdmF0ZUV2ZW50cz1uZXcgeHIsdGhpcy5kZWFjdGl2YXRlRXZlbnRzPW5ldyB4cix0aGlzLmF0dGFjaEV2ZW50cz1uZXcgeHIsdGhpcy5kZXRhY2hFdmVudHM9bmV3IHhyLHRoaXMucGFyZW50Q29udGV4dHM9SGkoQ0MpLHRoaXMubG9jYXRpb249SGkoZmEp''@;'; put 'put ''LHRoaXMuY2hhbmdlRGV0ZWN0b3I9SGkoVWwpLHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcj1IaSh1MSksdGhpcy5pbnB1dEJpbmRlcj1IaShpRCx7b3B0aW9uYWw6ITB9KSx0aGlzLnN1cHBvcnRzQmluZGluZ1RvQ29tcG9uZW50SW5wdXRzPSEwfWdldCBhY3RpdmF0ZWRDb21wb25lbnRSZWYo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5hY3RpdmF0ZWR9bmdPbkNoYW5nZXMoYSl7aWYoYS5uYW1lKXtjb25zdHtmaXJzdENoYW5nZTpmLHByZXZpb3VzVmFsdWU6ZH09YS5uYW1lO2lmKGYpcmV0dXJuO3RoaXMuaXNUcmFja2VkSW5QYXJlbnRDb250ZXh0cyhkKSYmKHRoaXMuZGVhY3RpdmF0ZSgpLHRoaXMu''@;'; put 'put ''cGFyZW50Q29udGV4dHMub25DaGlsZE91dGxldERlc3Ryb3llZChkKSksdGhpcy5pbml0aWFsaXplT3V0bGV0V2l0aE5hbWUoKX19bmdPbkRlc3Ryb3koKXt0aGlzLmlzVHJhY2tlZEluUGFyZW50Q29udGV4dHModGhpcy5uYW1lKSYmdGhpcy5wYXJlbnRDb250ZXh0cy5vbkNoaWxkT3V0bGV0''@;'; put 'put ''RGVzdHJveWVkKHRoaXMubmFtZSksdGhpcy5pbnB1dEJpbmRlcj8udW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKHRoaXMpfWlzVHJhY2tlZEluUGFyZW50Q29udGV4dHMoYSl7cmV0dXJuIHRoaXMucGFyZW50Q29udGV4dHMuZ2V0Q29udGV4dChhKT8ub3V0bGV0PT09dGhpc31uZ09uSW5pdCgp''@;'; put 'put ''e3RoaXMuaW5pdGlhbGl6ZU91dGxldFdpdGhOYW1lKCl9aW5pdGlhbGl6ZU91dGxldFdpdGhOYW1lKCl7aWYodGhpcy5wYXJlbnRDb250ZXh0cy5vbkNoaWxkT3V0bGV0Q3JlYXRlZCh0aGlzLm5hbWUsdGhpcyksdGhpcy5hY3RpdmF0ZWQpcmV0dXJuO2NvbnN0IGE9dGhpcy5wYXJlbnRDb250''@;'; put 'put ''ZXh0cy5nZXRDb250ZXh0KHRoaXMubmFtZSk7YT8ucm91dGUmJihhLmF0dGFjaFJlZj90aGlzLmF0dGFjaChhLmF0dGFjaFJlZixhLnJvdXRlKTp0aGlzLmFjdGl2YXRlV2l0aChhLnJvdXRlLGEuaW5qZWN0b3IpKX1nZXQgaXNBY3RpdmF0ZWQoKXtyZXR1cm4hIXRoaXMuYWN0aXZhdGVkfWdl''@;'; put 'put ''dCBjb21wb25lbnQoKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IElyKDQwMTIsITEpO3JldHVybiB0aGlzLmFjdGl2YXRlZC5pbnN0YW5jZX1nZXQgYWN0aXZhdGVkUm91dGUoKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IElyKDQwMTIsITEpO3JldHVybiB0aGlzLl9hY3Rp''@;'; put 'put ''dmF0ZWRSb3V0ZX1nZXQgYWN0aXZhdGVkUm91dGVEYXRhKCl7cmV0dXJuIHRoaXMuX2FjdGl2YXRlZFJvdXRlP3RoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGE6e319ZGV0YWNoKCl7aWYoIXRoaXMuYWN0aXZhdGVkKXRocm93IG5ldyBJcig0MDEyLCExKTt0aGlzLmxvY2F0aW9u''@;'; put 'put ''LmRldGFjaCgpO2NvbnN0IGE9dGhpcy5hY3RpdmF0ZWQ7cmV0dXJuIHRoaXMuYWN0aXZhdGVkPW51bGwsdGhpcy5fYWN0aXZhdGVkUm91dGU9bnVsbCx0aGlzLmRldGFjaEV2ZW50cy5lbWl0KGEuaW5zdGFuY2UpLGF9YXR0YWNoKGEsZil7dGhpcy5hY3RpdmF0ZWQ9YSx0aGlzLl9hY3RpdmF0''@;'; put 'put ''ZWRSb3V0ZT1mLHRoaXMubG9jYXRpb24uaW5zZXJ0KGEuaG9zdFZpZXcpLHRoaXMuaW5wdXRCaW5kZXI/LmJpbmRBY3RpdmF0ZWRSb3V0ZVRvT3V0bGV0Q29tcG9uZW50KHRoaXMpLHRoaXMuYXR0YWNoRXZlbnRzLmVtaXQoYS5pbnN0YW5jZSl9ZGVhY3RpdmF0ZSgpe2lmKHRoaXMuYWN0aXZh''@;'; put 'put ''dGVkKXtjb25zdCBhPXRoaXMuY29tcG9uZW50O3RoaXMuYWN0aXZhdGVkLmRlc3Ryb3koKSx0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5kZWFjdGl2YXRlRXZlbnRzLmVtaXQoYSl9fWFjdGl2YXRlV2l0aChhLGYpe2lmKHRoaXMuaXNBY3RpdmF0''@;'; put 'put ''ZWQpdGhyb3cgbmV3IElyKDQwMTMsITEpO3RoaXMuX2FjdGl2YXRlZFJvdXRlPWE7Y29uc3QgZD10aGlzLmxvY2F0aW9uLG09YS5zbmFwc2hvdC5jb21wb25lbnQsXz10aGlzLnBhcmVudENvbnRleHRzLmdldE9yQ3JlYXRlQ29udGV4dCh0aGlzLm5hbWUpLmNoaWxkcmVuLE89bmV3IE1fZShh''@;'; put 'put ''LF8sZC5pbmplY3Rvcik7dGhpcy5hY3RpdmF0ZWQ9ZC5jcmVhdGVDb21wb25lbnQobSx7aW5kZXg6ZC5sZW5ndGgsaW5qZWN0b3I6TyxlbnZpcm9ubWVudEluamVjdG9yOmY/P3RoaXMuZW52aXJvbm1lbnRJbmplY3Rvcn0pLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksdGhp''@;'; put 'put ''cy5pbnB1dEJpbmRlcj8uYmluZEFjdGl2YXRlZFJvdXRlVG9PdXRsZXRDb21wb25lbnQodGhpcyksdGhpcy5hY3RpdmF0ZUV2ZW50cy5lbWl0KHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1''@;'; put 'put ''ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0saW5wdXRzOntuYW1lOiJuYW1lIn0sb3V0cHV0czp7YWN0aXZhdGVFdmVudHM6ImFjdGl2YXRlIixkZWFjdGl2YXRlRXZlbnRzOiJkZWFjdGl2YXRlIixhdHRhY2hFdmVudHM6ImF0dGFjaCIsZGV0YWNoRXZlbnRz''@;'; put 'put ''OiJkZXRhY2gifSxleHBvcnRBczpbIm91dGxldCJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W2JsXX0pLGx9KSgpO2NsYXNzIE1fZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5yb3V0ZT1jLHRoaXMuY2hpbGRDb250ZXh0cz1hLHRoaXMucGFyZW50PWZ9Z2V0KGMsYSl7cmV0dXJuIGM9PT10''@;'; put 'put ''dT90aGlzLnJvdXRlOmM9PT1DQz90aGlzLmNoaWxkQ29udGV4dHM6dGhpcy5wYXJlbnQuZ2V0KGMsYSl9fWNvbnN0IGlEPW5ldyBNaSgiIik7bGV0IElyZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5vdXRsZXREYXRhU3Vic2NyaXB0aW9ucz1uZXcgTWFwfWJpbmRBY3RpdmF0''@;'; put 'put ''ZWRSb3V0ZVRvT3V0bGV0Q29tcG9uZW50KGEpe3RoaXMudW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKGEpLHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZURhdGEoYSl9dW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKGEpe3RoaXMub3V0bGV0RGF0YVN1YnNjcmlwdGlvbnMuZ2V0KGEpPy51bnN1YnNjcmli''@;'; put 'put ''ZSgpLHRoaXMub3V0bGV0RGF0YVN1YnNjcmlwdGlvbnMuZGVsZXRlKGEpfXN1YnNjcmliZVRvUm91dGVEYXRhKGEpe2NvbnN0e2FjdGl2YXRlZFJvdXRlOmZ9PWEsZD1DdihbZi5xdWVyeVBhcmFtcyxmLnBhcmFtcyxmLmRhdGFdKS5waXBlKGtsKChbaCxtLF9dLE8pPT4oXz17Li4uaCwuLi5t''@;'; put 'put ''LC4uLl99LDA9PT1PP0dpKF8pOlByb21pc2UucmVzb2x2ZShfKSkpKS5zdWJzY3JpYmUoaD0+e2lmKCFhLmlzQWN0aXZhdGVkfHwhYS5hY3RpdmF0ZWRDb21wb25lbnRSZWZ8fGEuYWN0aXZhdGVkUm91dGUhPT1mfHxudWxsPT09Zi5jb21wb25lbnQpcmV0dXJuIHZvaWQgdGhpcy51bnN1YnNj''@;'; put 'put ''cmliZUZyb21Sb3V0ZURhdGEoYSk7Y29uc3QgbT1mdW5jdGlvbiBvOWUobCl7Y29uc3QgYz1uYShsKTtpZighYylyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyB1ZyhjKTtyZXR1cm57Z2V0IHNlbGVjdG9yKCl7cmV0dXJuIGEuc2VsZWN0b3J9LGdldCB0eXBlKCl7cmV0dXJuIGEuY29tcG9uZW50''@;'; put 'put ''VHlwZX0sZ2V0IGlucHV0cygpe3JldHVybiBhLmlucHV0c30sZ2V0IG91dHB1dHMoKXtyZXR1cm4gYS5vdXRwdXRzfSxnZXQgbmdDb250ZW50U2VsZWN0b3JzKCl7cmV0dXJuIGEubmdDb250ZW50U2VsZWN0b3JzfSxnZXQgaXNTdGFuZGFsb25lKCl7cmV0dXJuIGMuc3RhbmRhbG9uZX0sZ2V0''@;'; put 'put ''IGlzU2lnbmFsKCl7cmV0dXJuIGMuc2lnbmFsc319fShmLmNvbXBvbmVudCk7aWYobSlmb3IoY29uc3R7dGVtcGxhdGVOYW1lOl99b2YgbS5pbnB1dHMpYS5hY3RpdmF0ZWRDb21wb25lbnRSZWYuc2V0SW5wdXQoXyxoW19dKTtlbHNlIHRoaXMudW5zdWJzY3JpYmVGcm9tUm91dGVEYXRhKGEp''@;'; put 'put ''fSk7dGhpcy5vdXRsZXREYXRhU3Vic2NyaXB0aW9ucy5zZXQoYSxkKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7ZnVuY3Rpb24gU0MobCxjLGEpe2lm''@;'; put 'put ''KGEmJmwuc2hvdWxkUmV1c2VSb3V0ZShjLnZhbHVlLGEudmFsdWUuc25hcHNob3QpKXtjb25zdCBmPWEudmFsdWU7Zi5fZnV0dXJlU25hcHNob3Q9Yy52YWx1ZTtjb25zdCBkPWZ1bmN0aW9uIEVfZShsLGMsYSl7cmV0dXJuIGMuY2hpbGRyZW4ubWFwKGY9Pntmb3IoY29uc3QgZCBvZiBhLmNo''@;'; put 'put ''aWxkcmVuKWlmKGwuc2hvdWxkUmV1c2VSb3V0ZShmLnZhbHVlLGQudmFsdWUuc25hcHNob3QpKXJldHVybiBTQyhsLGYsZCk7cmV0dXJuIFNDKGwsZil9KX0obCxjLGEpO3JldHVybiBuZXcgRzIoZixkKX17aWYobC5zaG91bGRBdHRhY2goYy52YWx1ZSkpe2NvbnN0IGg9bC5yZXRyaWV2ZShj''@;'; put 'put ''LnZhbHVlKTtpZihudWxsIT09aCl7Y29uc3QgbT1oLnJvdXRlO3JldHVybiBtLnZhbHVlLl9mdXR1cmVTbmFwc2hvdD1jLnZhbHVlLG0uY2hpbGRyZW49Yy5jaGlsZHJlbi5tYXAoXz0+U0MobCxfKSksbX19Y29uc3QgZj1mdW5jdGlvbiB4X2UobCl7cmV0dXJuIG5ldyB0dShuZXcgT2UobC51''@;'; put 'put ''cmwpLG5ldyBPZShsLnBhcmFtcyksbmV3IE9lKGwucXVlcnlQYXJhbXMpLG5ldyBPZShsLmZyYWdtZW50KSxuZXcgT2UobC5kYXRhKSxsLm91dGxldCxsLmNvbXBvbmVudCxsKX0oYy52YWx1ZSksZD1jLmNoaWxkcmVuLm1hcChoPT5TQyhsLGgpKTtyZXR1cm4gbmV3IEcyKGYsZCl9fWNvbnN0''@;'; put 'put ''IHpqPSJuZ05hdmlnYXRpb25DYW5jZWxpbmdFcnJvciI7ZnVuY3Rpb24gUnJlKGwsYyl7Y29uc3R7cmVkaXJlY3RUbzphLG5hdmlnYXRpb25CZWhhdmlvck9wdGlvbnM6Zn09eGcoYyk/e3JlZGlyZWN0VG86YyxuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zOnZvaWQgMH06YyxkPUxyZSghMSww''@;'; put 'put ''LGMpO3JldHVybiBkLnVybD1hLGQubmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9ucz1mLGR9ZnVuY3Rpb24gTHJlKGwsYyxhKXtjb25zdCBmPW5ldyBFcnJvcigiTmF2aWdhdGlvbkNhbmNlbGluZ0Vycm9yOiAiKyhsfHwiIikpO3JldHVybiBmW3pqXT0hMCxmLmNhbmNlbGxhdGlvbkNvZGU9Yyxh''@;'; put 'put ''JiYoZi51cmw9YSksZn1mdW5jdGlvbiBQcmUobCl7cmV0dXJuIEZyZShsKSYmeGcobC51cmwpfWZ1bmN0aW9uIEZyZShsKXtyZXR1cm4gbCYmbFt6al19bGV0IEhyZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAy''@;'; put 'put ''NzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1sibmctY29tcG9uZW50Il1dLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W0xlZV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJnRuKDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOlt4dl0sZW5jYXBz''@;'; put 'put ''dWxhdGlvbjoyfSksbH0pKCk7ZnVuY3Rpb24gVWoobCl7Y29uc3QgYz1sLmNoaWxkcmVuJiZsLmNoaWxkcmVuLm1hcChVaiksYT1jP3suLi5sLGNoaWxkcmVuOmN9OnsuLi5sfTtyZXR1cm4hYS5jb21wb25lbnQmJiFhLmxvYWRDb21wb25lbnQmJihjfHxhLmxvYWRDaGlsZHJlbikmJmEub3V0''@;'; put 'put ''bGV0JiZhLm91dGxldCE9PWRhJiYoYS5jb21wb25lbnQ9SHJlKSxhfWZ1bmN0aW9uIF9kKGwpe3JldHVybiBsLm91dGxldHx8ZGF9ZnVuY3Rpb24gTUMobCl7aWYoIWwpcmV0dXJuIG51bGw7aWYobC5yb3V0ZUNvbmZpZz8uX2luamVjdG9yKXJldHVybiBsLnJvdXRlQ29uZmlnLl9pbmplY3Rv''@;'; put 'put ''cjtmb3IobGV0IGM9bC5wYXJlbnQ7YztjPWMucGFyZW50KXtjb25zdCBhPWMucm91dGVDb25maWc7aWYoYT8uX2xvYWRlZEluamVjdG9yKXJldHVybiBhLl9sb2FkZWRJbmplY3RvcjtpZihhPy5faW5qZWN0b3IpcmV0dXJuIGEuX2luamVjdG9yfXJldHVybiBudWxsfWNsYXNzIExfZXtjb25z''@;'; put 'put ''dHJ1Y3RvcihjLGEsZixkLGgpe3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5PWMsdGhpcy5mdXR1cmVTdGF0ZT1hLHRoaXMuY3VyclN0YXRlPWYsdGhpcy5mb3J3YXJkRXZlbnQ9ZCx0aGlzLmlucHV0QmluZGluZ0VuYWJsZWQ9aH1hY3RpdmF0ZShjKXtjb25zdCBhPXRoaXMuZnV0dXJlU3RhdGUu''@;'; put 'put ''X3Jvb3QsZj10aGlzLmN1cnJTdGF0ZT90aGlzLmN1cnJTdGF0ZS5fcm9vdDpudWxsO3RoaXMuZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGEsZixjKSxCaih0aGlzLmZ1dHVyZVN0YXRlLnJvb3QpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhhLGYsYyl9ZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGMs''@;'; put 'put ''YSxmKXtjb25zdCBkPUV2KGEpO2MuY2hpbGRyZW4uZm9yRWFjaChoPT57Y29uc3QgbT1oLnZhbHVlLm91dGxldDt0aGlzLmRlYWN0aXZhdGVSb3V0ZXMoaCxkW21dLGYpLGRlbGV0ZSBkW21dfSksT2JqZWN0LnZhbHVlcyhkKS5mb3JFYWNoKGg9Pnt0aGlzLmRlYWN0aXZhdGVSb3V0ZUFuZEl0''@;'; put 'put ''c0NoaWxkcmVuKGgsZil9KX1kZWFjdGl2YXRlUm91dGVzKGMsYSxmKXtjb25zdCBkPWMudmFsdWUsaD1hP2EudmFsdWU6bnVsbDtpZihkPT09aClpZihkLmNvbXBvbmVudCl7Y29uc3QgbT1mLmdldENvbnRleHQoZC5vdXRsZXQpO20mJnRoaXMuZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGMsYSxt''@;'; put 'put ''LmNoaWxkcmVuKX1lbHNlIHRoaXMuZGVhY3RpdmF0ZUNoaWxkUm91dGVzKGMsYSxmKTtlbHNlIGgmJnRoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4oYSxmKX1kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihjLGEpe2MudmFsdWUuY29tcG9uZW50JiZ0aGlzLnJvdXRlUmV1''@;'; put 'put ''c2VTdHJhdGVneS5zaG91bGREZXRhY2goYy52YWx1ZS5zbmFwc2hvdCk/dGhpcy5kZXRhY2hBbmRTdG9yZVJvdXRlU3VidHJlZShjLGEpOnRoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0KGMsYSl9ZGV0YWNoQW5kU3RvcmVSb3V0ZVN1YnRyZWUoYyxhKXtjb25zdCBmPWEuZ2V0Q29udGV4''@;'; put 'put ''dChjLnZhbHVlLm91dGxldCksZD1mJiZjLnZhbHVlLmNvbXBvbmVudD9mLmNoaWxkcmVuOmEsaD1FdihjKTtmb3IoY29uc3QgbSBvZiBPYmplY3Qua2V5cyhoKSl0aGlzLmRlYWN0aXZhdGVSb3V0ZUFuZEl0c0NoaWxkcmVuKGhbbV0sZCk7aWYoZiYmZi5vdXRsZXQpe2NvbnN0IG09Zi5vdXRs''@;'; put 'put ''ZXQuZGV0YWNoKCksXz1mLmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKTt0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zdG9yZShjLnZhbHVlLnNuYXBzaG90LHtjb21wb25lbnRSZWY6bSxyb3V0ZTpjLGNvbnRleHRzOl99KX19ZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0KGMsYSl7Y29u''@;'; put 'put ''c3QgZj1hLmdldENvbnRleHQoYy52YWx1ZS5vdXRsZXQpLGQ9ZiYmYy52YWx1ZS5jb21wb25lbnQ/Zi5jaGlsZHJlbjphLGg9RXYoYyk7Zm9yKGNvbnN0IG0gb2YgT2JqZWN0LmtleXMoaCkpdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihoW21dLGQpO2YmJihmLm91dGxldCYm''@;'; put 'put ''KGYub3V0bGV0LmRlYWN0aXZhdGUoKSxmLmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKSksZi5hdHRhY2hSZWY9bnVsbCxmLnJvdXRlPW51bGwpfWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLGYpe2NvbnN0IGQ9RXYoYSk7Yy5jaGlsZHJlbi5mb3JFYWNoKGg9Pnt0aGlzLmFjdGl2YXRl''@;'; put 'put ''Um91dGVzKGgsZFtoLnZhbHVlLm91dGxldF0sZiksdGhpcy5mb3J3YXJkRXZlbnQobmV3IF9fZShoLnZhbHVlLnNuYXBzaG90KSl9KSxjLmNoaWxkcmVuLmxlbmd0aCYmdGhpcy5mb3J3YXJkRXZlbnQobmV3IHlfZShjLnZhbHVlLnNuYXBzaG90KSl9YWN0aXZhdGVSb3V0ZXMoYyxhLGYpe2Nv''@;'; put 'put ''bnN0IGQ9Yy52YWx1ZSxoPWE/YS52YWx1ZTpudWxsO2lmKEJqKGQpLGQ9PT1oKWlmKGQuY29tcG9uZW50KXtjb25zdCBtPWYuZ2V0T3JDcmVhdGVDb250ZXh0KGQub3V0bGV0KTt0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLG0uY2hpbGRyZW4pfWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxk''@;'; put 'put ''Um91dGVzKGMsYSxmKTtlbHNlIGlmKGQuY29tcG9uZW50KXtjb25zdCBtPWYuZ2V0T3JDcmVhdGVDb250ZXh0KGQub3V0bGV0KTtpZih0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRBdHRhY2goZC5zbmFwc2hvdCkpe2NvbnN0IF89dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kucmV0cmll''@;'; put 'put ''dmUoZC5zbmFwc2hvdCk7dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kuc3RvcmUoZC5zbmFwc2hvdCxudWxsKSxtLmNoaWxkcmVuLm9uT3V0bGV0UmVBdHRhY2hlZChfLmNvbnRleHRzKSxtLmF0dGFjaFJlZj1fLmNvbXBvbmVudFJlZixtLnJvdXRlPV8ucm91dGUudmFsdWUsbS5vdXRsZXQmJm0u''@;'; put 'put ''b3V0bGV0LmF0dGFjaChfLmNvbXBvbmVudFJlZixfLnJvdXRlLnZhbHVlKSxCaihfLnJvdXRlLnZhbHVlKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxudWxsLG0uY2hpbGRyZW4pfWVsc2V7Y29uc3QgXz1NQyhkLnNuYXBzaG90KTttLmF0dGFjaFJlZj1udWxsLG0ucm91dGU9ZCxtLmlu''@;'; put 'put ''amVjdG9yPV8sbS5vdXRsZXQmJm0ub3V0bGV0LmFjdGl2YXRlV2l0aChkLG0uaW5qZWN0b3IpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhjLG51bGwsbS5jaGlsZHJlbil9fWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGMsbnVsbCxmKX19Y2xhc3MgTnJle2NvbnN0cnVjdG9yKGMp''@;'; put 'put ''e3RoaXMucGF0aD1jLHRoaXMucm91dGU9dGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19fWNsYXNzIG9Ee2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5jb21wb25lbnQ9Yyx0aGlzLnJvdXRlPWF9fWZ1bmN0aW9uIFBfZShsLGMsYSl7Y29uc3QgZj1sLl9yb290O3JldHVybiBrQyhmLGM/Yy5f''@;'; put 'put ''cm9vdDpudWxsLGEsW2YudmFsdWVdKX1mdW5jdGlvbiBBdihsLGMpe2NvbnN0IGE9U3ltYm9sKCksZj1jLmdldChsLGEpO3JldHVybiBmPT09YT8iZnVuY3Rpb24iIT10eXBlb2YgbHx8ZnVuY3Rpb24gRGIobCl7cmV0dXJuIG51bGwhPT1VZihsKX0obCk/Yy5nZXQobCk6bDpmfWZ1bmN0aW9u''@;'; put 'put ''IGtDKGwsYyxhLGYsZD17Y2FuRGVhY3RpdmF0ZUNoZWNrczpbXSxjYW5BY3RpdmF0ZUNoZWNrczpbXX0pe2NvbnN0IGg9RXYoYyk7cmV0dXJuIGwuY2hpbGRyZW4uZm9yRWFjaChtPT57KGZ1bmN0aW9uIEhfZShsLGMsYSxmLGQ9e2NhbkRlYWN0aXZhdGVDaGVja3M6W10sY2FuQWN0aXZhdGVD''@;'; put 'put ''aGVja3M6W119KXtjb25zdCBoPWwudmFsdWUsbT1jP2MudmFsdWU6bnVsbCxfPWE/YS5nZXRDb250ZXh0KGwudmFsdWUub3V0bGV0KTpudWxsO2lmKG0mJmgucm91dGVDb25maWc9PT1tLnJvdXRlQ29uZmlnKXtjb25zdCBPPWZ1bmN0aW9uIE5fZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIGEpcmV0dXJuIGEobCxjKTtzd2l0Y2goYSl7Y2FzZSJwYXRoUGFyYW1zQ2hhbmdlIjpyZXR1cm4hRWcobC51cmwsYy51cmwpO2Nhc2UicGF0aFBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFFZyhsLnVybCxjLnVybCl8fCFNaChsLnF1ZXJ5UGFyYW1zLGMucXVlcnlQYXJh''@;'; put 'put ''bXMpO2Nhc2UiYWx3YXlzIjpyZXR1cm4hMDtjYXNlInBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFqaihsLGMpfHwhTWgobC5xdWVyeVBhcmFtcyxjLnF1ZXJ5UGFyYW1zKTtkZWZhdWx0OnJldHVybiFqaihsLGMpfX0obSxoLGgucm91dGVDb25maWcucnVuR3VhcmRzQW5kUmVz''@;'; put 'put ''b2x2ZXJzKTtPP2QuY2FuQWN0aXZhdGVDaGVja3MucHVzaChuZXcgTnJlKGYpKTooaC5kYXRhPW0uZGF0YSxoLl9yZXNvbHZlZERhdGE9bS5fcmVzb2x2ZWREYXRhKSxrQyhsLGMsaC5jb21wb25lbnQ/Xz9fLmNoaWxkcmVuOm51bGw6YSxmLGQpLE8mJl8mJl8ub3V0bGV0JiZfLm91dGxldC5p''@;'; put 'put ''c0FjdGl2YXRlZCYmZC5jYW5EZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IG9EKF8ub3V0bGV0LmNvbXBvbmVudCxtKSl9ZWxzZSBtJiZFQyhjLF8sZCksZC5jYW5BY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyBOcmUoZikpLGtDKGwsbnVsbCxoLmNvbXBvbmVudD9fP18uY2hpbGRyZW46bnVsbDph''@;'; put 'put ''LGYsZCl9KShtLGhbbS52YWx1ZS5vdXRsZXRdLGEsZi5jb25jYXQoW20udmFsdWVdKSxkKSxkZWxldGUgaFttLnZhbHVlLm91dGxldF19KSxPYmplY3QuZW50cmllcyhoKS5mb3JFYWNoKChbbSxfXSk9PkVDKF8sYS5nZXRDb250ZXh0KG0pLGQpKSxkfWZ1bmN0aW9uIEVDKGwsYyxhKXtjb25z''@;'; put 'put ''dCBmPUV2KGwpLGQ9bC52YWx1ZTtPYmplY3QuZW50cmllcyhmKS5mb3JFYWNoKChbaCxtXSk9PntFQyhtLGQuY29tcG9uZW50P2M/Yy5jaGlsZHJlbi5nZXRDb250ZXh0KGgpOm51bGw6YyxhKX0pLGEuY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyBvRChkLmNvbXBvbmVudCYmYyYmYy5v''@;'; put 'put ''dXRsZXQmJmMub3V0bGV0LmlzQWN0aXZhdGVkP2Mub3V0bGV0LmNvbXBvbmVudDpudWxsLGQpKX1mdW5jdGlvbiB4QyhsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbH1mdW5jdGlvbiBWcmUobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBHT3x8IkVtcHR5RXJyb3IiPT09bD8ubmFtZX1jb25z''@;'; put 'put ''dCBhRD1TeW1ib2woIklOSVRJQUxfVkFMVUUiKTtmdW5jdGlvbiBUdigpe3JldHVybiBrbChsPT5DdihsLm1hcChjPT5jLnBpcGUoRWYoMSksdDQoYUQpKSkpLnBpcGUoRWUoYz0+e2Zvcihjb25zdCBhIG9mIGMpaWYoITAhPT1hKXtpZihhPT09YUQpcmV0dXJuIGFEO2lmKCExPT09YXx8YSBp''@;'; put 'put ''bnN0YW5jZW9mIGt2KXJldHVybiBhfXJldHVybiEwfSksSWwoYz0+YyE9PWFEKSxFZigxKSkpfWZ1bmN0aW9uIEJyZShsKXtyZXR1cm4gZnVuY3Rpb24gTmUoLi4ubCl7cmV0dXJuIExlKGwpfShxdShjPT57aWYoeGcoYykpdGhyb3cgUnJlKDAsYyl9KSxFZShjPT4hMD09PWMpKX1jbGFzcyBs''@;'; put 'put ''RHtjb25zdHJ1Y3RvcihjKXt0aGlzLnNlZ21lbnRHcm91cD1jfHxudWxsfX1jbGFzcyBqcmV7Y29uc3RydWN0b3IoYyl7dGhpcy51cmxUcmVlPWN9fWZ1bmN0aW9uIE92KGwpe3JldHVybiBkQyhuZXcgbEQobCkpfWZ1bmN0aW9uIHpyZShsKXtyZXR1cm4gZEMobmV3IGpyZShsKSl9Y2xhc3Mg''@;'; put 'put ''aXdle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy51cmxTZXJpYWxpemVyPWMsdGhpcy51cmxUcmVlPWF9bm9NYXRjaEVycm9yKGMpe3JldHVybiBuZXcgSXIoNDAwMiwhMSl9bGluZXJhbGl6ZVNlZ21lbnRzKGMsYSl7bGV0IGY9W10sZD1hLnJvb3Q7Zm9yKDs7KXtpZihmPWYuY29uY2F0KGQuc2Vn''@;'; put 'put ''bWVudHMpLDA9PT1kLm51bWJlck9mQ2hpbGRyZW4pcmV0dXJuIEdpKGYpO2lmKGQubnVtYmVyT2ZDaGlsZHJlbj4xfHwhZC5jaGlsZHJlbltkYV0pcmV0dXJuIGRDKG5ldyBJcig0ZTMsITEpKTtkPWQuY2hpbGRyZW5bZGFdfX1hcHBseVJlZGlyZWN0Q29tbWFuZHMoYyxhLGYpe3JldHVybiB0''@;'; put 'put ''aGlzLmFwcGx5UmVkaXJlY3RDcmVhdGVVcmxUcmVlKGEsdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKGEpLGMsZil9YXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoYyxhLGYsZCl7Y29uc3QgaD10aGlzLmNyZWF0ZVNlZ21lbnRHcm91cChjLGEucm9vdCxmLGQpO3JldHVybiBuZXcga3YoaCx0''@;'; put 'put ''aGlzLmNyZWF0ZVF1ZXJ5UGFyYW1zKGEucXVlcnlQYXJhbXMsdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSxhLmZyYWdtZW50KX1jcmVhdGVRdWVyeVBhcmFtcyhjLGEpe2NvbnN0IGY9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGMpLmZvckVhY2goKFtkLGhdKT0+e2lmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgaCYmaC5zdGFydHNXaXRoKCI6Iikpe2NvbnN0IF89aC5zdWJzdHJpbmcoMSk7ZltkXT1hW19dfWVsc2UgZltkXT1ofSksZn1jcmVhdGVTZWdtZW50R3JvdXAoYyxhLGYsZCl7Y29uc3QgaD10aGlzLmNyZWF0ZVNlZ21lbnRzKGMsYS5zZWdtZW50cyxmLGQpO2xldCBtPXt9O3JldHVy''@;'; put 'put ''biBPYmplY3QuZW50cmllcyhhLmNoaWxkcmVuKS5mb3JFYWNoKChbXyxPXSk9PnttW19dPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKGMsTyxmLGQpfSksbmV3IENsKGgsbSl9Y3JlYXRlU2VnbWVudHMoYyxhLGYsZCl7cmV0dXJuIGEubWFwKGg9PmgucGF0aC5zdGFydHNXaXRoKCI6Iik/dGhp''@;'; put 'put ''cy5maW5kUG9zUGFyYW0oYyxoLGQpOnRoaXMuZmluZE9yUmV0dXJuKGgsZikpfWZpbmRQb3NQYXJhbShjLGEsZil7Y29uc3QgZD1mW2EucGF0aC5zdWJzdHJpbmcoMSldO2lmKCFkKXRocm93IG5ldyBJcig0MDAxLCExKTtyZXR1cm4gZH1maW5kT3JSZXR1cm4oYyxhKXtsZXQgZj0wO2Zvcihj''@;'; put 'put ''b25zdCBkIG9mIGEpe2lmKGQucGF0aD09PWMucGF0aClyZXR1cm4gYS5zcGxpY2UoZiksZDtmKyt9cmV0dXJuIGN9fWNvbnN0IFpqPXttYXRjaGVkOiExLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6W10scGFyYW1ldGVyczp7fSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50''@;'; put 'put ''czp7fX07ZnVuY3Rpb24gb3dlKGwsYyxhLGYsZCl7Y29uc3QgaD1ZaihsLGMsYSk7cmV0dXJuIGgubWF0Y2hlZD8oZj1mdW5jdGlvbiBBX2UobCxjKXtyZXR1cm4gbC5wcm92aWRlcnMmJiFsLl9pbmplY3RvciYmKGwuX2luamVjdG9yPXlCKGwucHJvdmlkZXJzLGMsYFJvdXRlOiAke2wucGF0''@;'; put 'put ''aH1gKSksbC5faW5qZWN0b3I/P2N9KGMsZiksZnVuY3Rpb24gdHdlKGwsYyxhLGYpe2NvbnN0IGQ9Yy5jYW5NYXRjaDtyZXR1cm4gZCYmMCE9PWQubGVuZ3RoP0dpKGQubWFwKG09Pntjb25zdCBfPUF2KG0sbCk7cmV0dXJuIHI0KGZ1bmN0aW9uIFpfZShsKXtyZXR1cm4gbCYmeEMobC5jYW5N''@;'; put 'put ''YXRjaCl9KF8pP18uY2FuTWF0Y2goYyxhKTpsLnJ1bkluQ29udGV4dCgoKT0+XyhjLGEpKSl9KSkucGlwZShUdigpLEJyZSgpKTpHaSghMCl9KGYsYyxhKS5waXBlKEVlKG09PiEwPT09bT9oOnsuLi5aan0pKSk6R2koaCl9ZnVuY3Rpb24gWWoobCxjLGEpe2lmKCIiPT09Yy5wYXRoKXJldHVy''@;'; put 'put ''biJmdWxsIj09PWMucGF0aE1hdGNoJiYobC5oYXNDaGlsZHJlbigpfHxhLmxlbmd0aD4wKT97Li4uWmp9OnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6YSxwYXJhbWV0ZXJzOnt9LHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOnt9fTtjb25zdCBkPShj''@;'; put 'put ''Lm1hdGNoZXJ8fEhiZSkoYSxsLGMpO2lmKCFkKXJldHVybnsuLi5aan07Y29uc3QgaD17fTtPYmplY3QuZW50cmllcyhkLnBvc1BhcmFtcz8/e30pLmZvckVhY2goKFtfLE9dKT0+e2hbX109Ty5wYXRofSk7Y29uc3QgbT1kLmNvbnN1bWVkLmxlbmd0aD4wP3suLi5oLC4uLmQuY29uc3VtZWRb''@;'; put 'put ''ZC5jb25zdW1lZC5sZW5ndGgtMV0ucGFyYW1ldGVyc306aDtyZXR1cm57bWF0Y2hlZDohMCxjb25zdW1lZFNlZ21lbnRzOmQuY29uc3VtZWQscmVtYWluaW5nU2VnbWVudHM6YS5zbGljZShkLmNvbnN1bWVkLmxlbmd0aCkscGFyYW1ldGVyczptLHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOmQu''@;'; put 'put ''cG9zUGFyYW1zPz97fX19ZnVuY3Rpb24gVXJlKGwsYyxhLGYpe3JldHVybiBhLmxlbmd0aD4wJiZmdW5jdGlvbiBzd2UobCxjLGEpe3JldHVybiBhLnNvbWUoZj0+c0QobCxjLGYpJiZfZChmKSE9PWRhKX0obCxhLGYpP3tzZWdtZW50R3JvdXA6bmV3IENsKGMsbHdlKGYsbmV3IENsKGEsbC5j''@;'; put 'put ''aGlsZHJlbikpKSxzbGljZWRTZWdtZW50czpbXX06MD09PWEubGVuZ3RoJiZmdW5jdGlvbiB1d2UobCxjLGEpe3JldHVybiBhLnNvbWUoZj0+c0QobCxjLGYpKX0obCxhLGYpP3tzZWdtZW50R3JvdXA6bmV3IENsKGwuc2VnbWVudHMsYXdlKGwsMCxhLGYsbC5jaGlsZHJlbikpLHNsaWNlZFNl''@;'; put 'put ''Z21lbnRzOmF9OntzZWdtZW50R3JvdXA6bmV3IENsKGwuc2VnbWVudHMsbC5jaGlsZHJlbiksc2xpY2VkU2VnbWVudHM6YX19ZnVuY3Rpb24gYXdlKGwsYyxhLGYsZCl7Y29uc3QgaD17fTtmb3IoY29uc3QgbSBvZiBmKWlmKHNEKGwsYSxtKSYmIWRbX2QobSldKXtjb25zdCBfPW5ldyBDbChb''@;'; put 'put ''XSx7fSk7aFtfZChtKV09X31yZXR1cm57Li4uZCwuLi5ofX1mdW5jdGlvbiBsd2UobCxjKXtjb25zdCBhPXt9O2FbZGFdPWM7Zm9yKGNvbnN0IGYgb2YgbClpZigiIj09PWYucGF0aCYmX2QoZikhPT1kYSl7Y29uc3QgZD1uZXcgQ2woW10se30pO2FbX2QoZildPWR9cmV0dXJuIGF9ZnVuY3Rp''@;'; put 'put ''b24gc0QobCxjLGEpe3JldHVybighKGwuaGFzQ2hpbGRyZW4oKXx8Yy5sZW5ndGg+MCl8fCJmdWxsIiE9PWEucGF0aE1hdGNoKSYmIiI9PT1hLnBhdGh9Y2xhc3MgaHdle2NvbnN0cnVjdG9yKGMsYSxmLGQsaCxtLF8pe3RoaXMuaW5qZWN0b3I9Yyx0aGlzLmNvbmZpZ0xvYWRlcj1hLHRoaXMu''@;'; put 'put ''cm9vdENvbXBvbmVudFR5cGU9Zix0aGlzLmNvbmZpZz1kLHRoaXMudXJsVHJlZT1oLHRoaXMucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT1tLHRoaXMudXJsU2VyaWFsaXplcj1fLHRoaXMuYWxsb3dSZWRpcmVjdHM9ITAsdGhpcy5hcHBseVJlZGlyZWN0cz1uZXcgaXdlKHRoaXMudXJsU2Vy''@;'; put 'put ''aWFsaXplcix0aGlzLnVybFRyZWUpfW5vTWF0Y2hFcnJvcihjKXtyZXR1cm4gbmV3IElyKDQwMDIsITEpfXJlY29nbml6ZSgpe2NvbnN0IGM9VXJlKHRoaXMudXJsVHJlZS5yb290LFtdLFtdLHRoaXMuY29uZmlnKS5zZWdtZW50R3JvdXA7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91''@;'; put 'put ''cCh0aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGMsZGEpLnBpcGUoa2coYT0+e2lmKGEgaW5zdGFuY2VvZiBqcmUpcmV0dXJuIHRoaXMuYWxsb3dSZWRpcmVjdHM9ITEsdGhpcy51cmxUcmVlPWEudXJsVHJlZSx0aGlzLm1hdGNoKGEudXJsVHJlZSk7dGhyb3cgYSBpbnN0YW5jZW9mIGxEP3Ro''@;'; put 'put ''aXMubm9NYXRjaEVycm9yKGEpOmF9KSxFZShhPT57Y29uc3QgZj1uZXcgckQoW10sT2JqZWN0LmZyZWV6ZSh7fSksT2JqZWN0LmZyZWV6ZSh7Li4udGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zfSksdGhpcy51cmxUcmVlLmZyYWdtZW50LHt9LGRhLHRoaXMucm9vdENvbXBvbmVudFR5cGUsbnVs''@;'; put 'put ''bCx7fSksZD1uZXcgRzIoZixhKSxoPW5ldyBPcmUoIiIsZCksbT1mdW5jdGlvbiByX2UobCxjLGE9bnVsbCxmPW51bGwpe3JldHVybiBicmUoeXJlKGwpLGMsYSxmKX0oZixbXSx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMsdGhpcy51cmxUcmVlLmZyYWdtZW50KTtyZXR1cm4gbS5xdWVyeVBh''@;'; put 'put ''cmFtcz10aGlzLnVybFRyZWUucXVlcnlQYXJhbXMsaC51cmw9dGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShtKSx0aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKGguX3Jvb3QpLHtzdGF0ZTpoLHRyZWU6bX19KSl9bWF0Y2goYyl7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cCh0''@;'; put 'put ''aGlzLmluamVjdG9yLHRoaXMuY29uZmlnLGMucm9vdCxkYSkucGlwZShrZyhmPT57dGhyb3cgZiBpbnN0YW5jZW9mIGxEP3RoaXMubm9NYXRjaEVycm9yKGYpOmZ9KSl9aW5oZXJpdFBhcmFtc0FuZERhdGEoYyl7Y29uc3QgYT1jLnZhbHVlLGY9VHJlKGEsdGhpcy5wYXJhbXNJbmhlcml0YW5j''@;'; put 'put ''ZVN0cmF0ZWd5KTthLnBhcmFtcz1PYmplY3QuZnJlZXplKGYucGFyYW1zKSxhLmRhdGE9T2JqZWN0LmZyZWV6ZShmLmRhdGEpLGMuY2hpbGRyZW4uZm9yRWFjaChkPT50aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKGQpKX1wcm9jZXNzU2VnbWVudEdyb3VwKGMsYSxmLGQpe3JldHVybiAwPT09''@;'; put 'put ''Zi5zZWdtZW50cy5sZW5ndGgmJmYuaGFzQ2hpbGRyZW4oKT90aGlzLnByb2Nlc3NDaGlsZHJlbihjLGEsZik6dGhpcy5wcm9jZXNzU2VnbWVudChjLGEsZixmLnNlZ21lbnRzLGQsITApfXByb2Nlc3NDaGlsZHJlbihjLGEsZil7Y29uc3QgZD1bXTtmb3IoY29uc3QgaCBvZiBPYmplY3Qua2V5''@;'; put 'put ''cyhmLmNoaWxkcmVuKSkicHJpbWFyeSI9PT1oP2QudW5zaGlmdChoKTpkLnB1c2goaCk7cmV0dXJuIG5sKGQpLnBpcGUoU3YoaD0+e2NvbnN0IG09Zi5jaGlsZHJlbltoXSxfPWZ1bmN0aW9uIElfZShsLGMpe2NvbnN0IGE9bC5maWx0ZXIoZj0+X2QoZik9PT1jKTtyZXR1cm4gYS5wdXNoKC4u''@;'; put 'put ''LmwuZmlsdGVyKGY9Pl9kKGYpIT09YykpLGF9KGEsaCk7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cChjLF8sbSxoKX0pLGZ1bmN0aW9uIExiZShsLGMpe3JldHVybiBudChmdW5jdGlvbiBSYmUobCxjLGEsZixkKXtyZXR1cm4oaCxtKT0+e2xldCBfPWEsTz1jLFg9MDtoLnN1YnNj''@;'; put 'put ''cmliZShxZShtLGFlPT57Y29uc3QgcGU9WCsrO089Xz9sKE8sYWUscGUpOihfPSEwLGFlKSxmJiZtLm5leHQoTyl9LGQmJigoKT0+e18mJm0ubmV4dChPKSxtLmNvbXBsZXRlKCl9KSkpfX0obCxjLGFyZ3VtZW50cy5sZW5ndGg+PTIsITApKX0oKGgsbSk9PihoLnB1c2goLi4ubSksaCkpLEtP''@;'; put 'put ''KG51bGwpLGZ1bmN0aW9uIFBiZShsLGMpe2NvbnN0IGE9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gZj0+Zi5waXBlKGw/SWwoKGQsaCk9PmwoZCxoLGYpKTpGZSxUaigxKSxhP0tPKGMpOmlyZSgoKT0+bmV3IEdPKSl9KCksX3IoaD0+e2lmKG51bGw9PT1oKXJldHVybiBPdihmKTtjb25z''@;'; put 'put ''dCBtPVpyZShoKTtyZXR1cm4gZnVuY3Rpb24gcHdlKGwpe2wuc29ydCgoYyxhKT0+Yy52YWx1ZS5vdXRsZXQ9PT1kYT8tMTphLnZhbHVlLm91dGxldD09PWRhPzE6Yy52YWx1ZS5vdXRsZXQubG9jYWxlQ29tcGFyZShhLnZhbHVlLm91dGxldCkpfShtKSxHaShtKX0pKX1wcm9jZXNzU2VnbWVu''@;'; put 'put ''dChjLGEsZixkLGgsbSl7cmV0dXJuIG5sKGEpLnBpcGUoU3YoXz0+dGhpcy5wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZShfLl9pbmplY3Rvcj8/YyxhLF8sZixkLGgsbSkucGlwZShrZyhPPT57aWYoTyBpbnN0YW5jZW9mIGxEKXJldHVybiBHaShudWxsKTt0aHJvdyBPfSkpKSxuNChfPT4h''@;'; put 'put ''IV8pLGtnKF89PntpZihWcmUoXykpcmV0dXJuIGZ1bmN0aW9uIGZ3ZShsLGMsYSl7cmV0dXJuIDA9PT1jLmxlbmd0aCYmIWwuY2hpbGRyZW5bYV19KGYsZCxoKT9HaShbXSk6T3YoZik7dGhyb3cgX30pKX1wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZShjLGEsZixkLGgsbSxfKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gY3dlKGwsYyxhLGYpe3JldHVybiEhKF9kKGwpPT09Znx8ZiE9PWRhJiZzRChjLGEsbCkpJiYoIioqIj09PWwucGF0aHx8WWooYyxsLGEpLm1hdGNoZWQpfShmLGQsaCxtKT92b2lkIDA9PT1mLnJlZGlyZWN0VG8/dGhpcy5tYXRjaFNlZ21lbnRBZ2FpbnN0Um91dGUoYyxkLGYs''@;'; put 'put ''aCxtLF8pOl8mJnRoaXMuYWxsb3dSZWRpcmVjdHM/dGhpcy5leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChjLGQsYSxmLGgsbSk6T3YoZCk6T3YoZCl9ZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QoYyxhLGYsZCxoLG0pe3JldHVybiIqKiI9PT1k''@;'; put 'put ''LnBhdGg/dGhpcy5leHBhbmRXaWxkQ2FyZFdpdGhQYXJhbXNBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGMsZixkLG0pOnRoaXMuZXhwYW5kUmVndWxhclNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0KGMsYSxmLGQsaCxtKX1leHBhbmRXaWxkQ2FyZFdpdGhQYXJhbXNBZ2FpbnN0''@;'; put 'put ''Um91dGVVc2luZ1JlZGlyZWN0KGMsYSxmLGQpe2NvbnN0IGg9dGhpcy5hcHBseVJlZGlyZWN0cy5hcHBseVJlZGlyZWN0Q29tbWFuZHMoW10sZi5yZWRpcmVjdFRvLHt9KTtyZXR1cm4gZi5yZWRpcmVjdFRvLnN0YXJ0c1dpdGgoIi8iKT96cmUoaCk6dGhpcy5hcHBseVJlZGlyZWN0cy5saW5l''@;'; put 'put ''cmFsaXplU2VnbWVudHMoZixoKS5waXBlKF9yKG09Pntjb25zdCBfPW5ldyBDbChtLHt9KTtyZXR1cm4gdGhpcy5wcm9jZXNzU2VnbWVudChjLGEsXyxtLGQsITEpfSkpfWV4cGFuZFJlZ3VsYXJTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdChjLGEsZixkLGgsbSl7Y29uc3R7bWF0''@;'; put 'put ''Y2hlZDpfLGNvbnN1bWVkU2VnbWVudHM6TyxyZW1haW5pbmdTZWdtZW50czpYLHBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzOmFlfT1ZaihhLGQsaCk7aWYoIV8pcmV0dXJuIE92KGEpO2NvbnN0IHBlPXRoaXMuYXBwbHlSZWRpcmVjdHMuYXBwbHlSZWRpcmVjdENvbW1hbmRzKE8sZC5yZWRpcmVj''@;'; put 'put ''dFRvLGFlKTtyZXR1cm4gZC5yZWRpcmVjdFRvLnN0YXJ0c1dpdGgoIi8iKT96cmUocGUpOnRoaXMuYXBwbHlSZWRpcmVjdHMubGluZXJhbGl6ZVNlZ21lbnRzKGQscGUpLnBpcGUoX3IoYmU9PnRoaXMucHJvY2Vzc1NlZ21lbnQoYyxmLGEsYmUuY29uY2F0KFgpLG0sITEpKSl9bWF0Y2hTZWdt''@;'; put 'put ''ZW50QWdhaW5zdFJvdXRlKGMsYSxmLGQsaCxtKXtsZXQgXztpZigiKioiPT09Zi5wYXRoKXtjb25zdCBPPWQubGVuZ3RoPjA/bHJlKGQpLnBhcmFtZXRlcnM6e307Xz1HaSh7c25hcHNob3Q6bmV3IHJEKGQsTyxPYmplY3QuZnJlZXplKHsuLi50aGlzLnVybFRyZWUucXVlcnlQYXJhbXN9KSx0''@;'; put 'put ''aGlzLnVybFRyZWUuZnJhZ21lbnQsWXJlKGYpLF9kKGYpLGYuY29tcG9uZW50Pz9mLl9sb2FkZWRDb21wb25lbnQ/P251bGwsZixXcmUoZikpLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6W119KSxhLmNoaWxkcmVuPXt9fWVsc2UgXz1vd2UoYSxmLGQsYykucGlwZShF''@;'; put 'put ''ZSgoe21hdGNoZWQ6Tyxjb25zdW1lZFNlZ21lbnRzOlgscmVtYWluaW5nU2VnbWVudHM6YWUscGFyYW1ldGVyczpwZX0pPT5PP3tzbmFwc2hvdDpuZXcgckQoWCxwZSxPYmplY3QuZnJlZXplKHsuLi50aGlzLnVybFRyZWUucXVlcnlQYXJhbXN9KSx0aGlzLnVybFRyZWUuZnJhZ21lbnQsWXJl''@;'; put 'put ''KGYpLF9kKGYpLGYuY29tcG9uZW50Pz9mLl9sb2FkZWRDb21wb25lbnQ/P251bGwsZixXcmUoZikpLGNvbnN1bWVkU2VnbWVudHM6WCxyZW1haW5pbmdTZWdtZW50czphZX06bnVsbCkpO3JldHVybiBfLnBpcGUoa2woTz0+bnVsbD09PU8/T3YoYSk6dGhpcy5nZXRDaGlsZENvbmZpZyhjPWYu''@;'; put 'put ''X2luamVjdG9yPz9jLGYsZCkucGlwZShrbCgoe3JvdXRlczpYfSk9Pntjb25zdCBhZT1mLl9sb2FkZWRJbmplY3Rvcj8/Yyx7c25hcHNob3Q6cGUsY29uc3VtZWRTZWdtZW50czpiZSxyZW1haW5pbmdTZWdtZW50czp4ZX09Tyx7c2VnbWVudEdyb3VwOlZlLHNsaWNlZFNlZ21lbnRzOlplfT1V''@;'; put 'put ''cmUoYSxiZSx4ZSxYKTtpZigwPT09WmUubGVuZ3RoJiZWZS5oYXNDaGlsZHJlbigpKXJldHVybiB0aGlzLnByb2Nlc3NDaGlsZHJlbihhZSxYLFZlKS5waXBlKEVlKGR0PT5udWxsPT09ZHQ/bnVsbDpbbmV3IEcyKHBlLGR0KV0pKTtpZigwPT09WC5sZW5ndGgmJjA9PT1aZS5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIEdpKFtuZXcgRzIocGUsW10pXSk7Y29uc3QgbHQ9X2QoZik9PT1oO3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50KGFlLFgsVmUsWmUsbHQ/ZGE6aCwhMCkucGlwZShFZShkdD0+W25ldyBHMihwZSxkdCldKSl9KSkpKX1nZXRDaGlsZENvbmZpZyhjLGEsZil7cmV0dXJuIGEuY2hpbGRy''@;'; put 'put ''ZW4/R2koe3JvdXRlczphLmNoaWxkcmVuLGluamVjdG9yOmN9KTphLmxvYWRDaGlsZHJlbj92b2lkIDAhPT1hLl9sb2FkZWRSb3V0ZXM/R2koe3JvdXRlczphLl9sb2FkZWRSb3V0ZXMsaW5qZWN0b3I6YS5fbG9hZGVkSW5qZWN0b3J9KTpmdW5jdGlvbiBld2UobCxjLGEsZil7Y29uc3QgZD1j''@;'; put 'put ''LmNhbkxvYWQ7cmV0dXJuIHZvaWQgMD09PWR8fDA9PT1kLmxlbmd0aD9HaSghMCk6R2koZC5tYXAobT0+e2NvbnN0IF89QXYobSxsKTtyZXR1cm4gcjQoZnVuY3Rpb24gQl9lKGwpe3JldHVybiBsJiZ4QyhsLmNhbkxvYWQpfShfKT9fLmNhbkxvYWQoYyxhKTpsLnJ1bkluQ29udGV4dCgoKT0+''@;'; put 'put ''XyhjLGEpKSl9KSkucGlwZShUdigpLEJyZSgpKX0oYyxhLGYpLnBpcGUoX3IoZD0+ZD90aGlzLmNvbmZpZ0xvYWRlci5sb2FkQ2hpbGRyZW4oYyxhKS5waXBlKHF1KGg9PnthLl9sb2FkZWRSb3V0ZXM9aC5yb3V0ZXMsYS5fbG9hZGVkSW5qZWN0b3I9aC5pbmplY3Rvcn0pKTpmdW5jdGlvbiBy''@;'; put 'put ''d2UobCl7cmV0dXJuIGRDKExyZSghMSwzKSl9KCkpKTpHaSh7cm91dGVzOltdLGluamVjdG9yOmN9KX19ZnVuY3Rpb24gbXdlKGwpe2NvbnN0IGM9bC52YWx1ZS5yb3V0ZUNvbmZpZztyZXR1cm4gYyYmIiI9PT1jLnBhdGh9ZnVuY3Rpb24gWnJlKGwpe2NvbnN0IGM9W10sYT1uZXcgU2V0O2Zv''@;'; put 'put ''cihjb25zdCBmIG9mIGwpe2lmKCFtd2UoZikpe2MucHVzaChmKTtjb250aW51ZX1jb25zdCBkPWMuZmluZChoPT5mLnZhbHVlLnJvdXRlQ29uZmlnPT09aC52YWx1ZS5yb3V0ZUNvbmZpZyk7dm9pZCAwIT09ZD8oZC5jaGlsZHJlbi5wdXNoKC4uLmYuY2hpbGRyZW4pLGEuYWRkKGQpKTpjLnB1''@;'; put 'put ''c2goZil9Zm9yKGNvbnN0IGYgb2YgYSl7Y29uc3QgZD1acmUoZi5jaGlsZHJlbik7Yy5wdXNoKG5ldyBHMihmLnZhbHVlLGQpKX1yZXR1cm4gYy5maWx0ZXIoZj0+IWEuaGFzKGYpKX1mdW5jdGlvbiBZcmUobCl7cmV0dXJuIGwuZGF0YXx8e319ZnVuY3Rpb24gV3JlKGwpe3JldHVybiBsLnJl''@;'; put 'put ''c29sdmV8fHt9fWZ1bmN0aW9uIHZ3ZShsLGMpe3JldHVybiBfcihhPT57Y29uc3R7dGFyZ2V0U25hcHNob3Q6ZixndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOmR9fT1hO2lmKCFkLmxlbmd0aClyZXR1cm4gR2koYSk7bGV0IGg9MDtyZXR1cm4gbmwoZCkucGlwZShTdihtPT5mdW5jdGlvbiB5''@;'; put 'put ''d2UobCxjLGEsZil7Y29uc3QgZD1sLnJvdXRlQ29uZmlnLGg9bC5fcmVzb2x2ZTtyZXR1cm4gdm9pZCAwIT09ZD8udGl0bGUmJiFHcmUoZCkmJihoW3BDXT1kLnRpdGxlKSxmdW5jdGlvbiBid2UobCxjLGEsZil7Y29uc3QgZD1mdW5jdGlvbiBfd2UobCl7cmV0dXJuWy4uLk9iamVjdC5rZXlz''@;'; put 'put ''KGwpLC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCldfShsKTtpZigwPT09ZC5sZW5ndGgpcmV0dXJuIEdpKHt9KTtjb25zdCBoPXt9O3JldHVybiBubChkKS5waXBlKF9yKG09PmZ1bmN0aW9uIHd3ZShsLGMsYSxmKXtjb25zdCBkPU1DKGMpPz9mLGg9QXYobCxkKTtyZXR1cm4g''@;'; put 'put ''cjQoaC5yZXNvbHZlP2gucmVzb2x2ZShjLGEpOmQucnVuSW5Db250ZXh0KCgpPT5oKGMsYSkpKX0obFttXSxjLGEsZikucGlwZShuNCgpLHF1KF89PntoW21dPV99KSkpLFRqKDEpLGZ1bmN0aW9uIG9yZShsKXtyZXR1cm4gRWUoKCk9PmwpfShoKSxrZyhtPT5WcmUobSk/SG86ZEMobSkpKX0o''@;'; put 'put ''aCxsLGMsZikucGlwZShFZShtPT4obC5fcmVzb2x2ZWREYXRhPW0sbC5kYXRhPVRyZShsLGEpLnJlc29sdmUsZCYmR3JlKGQpJiYobC5kYXRhW3BDXT1kLnRpdGxlKSxudWxsKSkpfShtLnJvdXRlLGYsbCxjKSkscXUoKCk9PmgrKyksVGooMSksX3IobT0+aD09PWQubGVuZ3RoP0dpKGEpOkhv''@;'; put 'put ''KSl9KX1mdW5jdGlvbiBHcmUobCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsLnRpdGxlfHxudWxsPT09bC50aXRsZX1mdW5jdGlvbiBXaihsKXtyZXR1cm4ga2woYz0+e2NvbnN0IGE9bChjKTtyZXR1cm4gYT9ubChhKS5waXBlKEVlKCgpPT5jKSk6R2koYyl9KX1jb25zdCBEdj1uZXcgTWko''@;'; put 'put ''IlJPVVRFUyIpO2xldCBHaj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5jb21wb25lbnRMb2FkZXJzPW5ldyBXZWFrTWFwLHRoaXMuY2hpbGRyZW5Mb2FkZXJzPW5ldyBXZWFrTWFwLHRoaXMuY29tcGlsZXI9SGkoQ3RlKX1sb2FkQ29tcG9uZW50KGEpe2lmKHRoaXMuY29tcG9u''@;'; put 'put ''ZW50TG9hZGVycy5nZXQoYSkpcmV0dXJuIHRoaXMuY29tcG9uZW50TG9hZGVycy5nZXQoYSk7aWYoYS5fbG9hZGVkQ29tcG9uZW50KXJldHVybiBHaShhLl9sb2FkZWRDb21wb25lbnQpO3RoaXMub25Mb2FkU3RhcnRMaXN0ZW5lciYmdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyKGEpO2NvbnN0''@;'; put 'put ''IGY9cjQoYS5sb2FkQ29tcG9uZW50KCkpLnBpcGUoRWUoJHJlKSxxdShoPT57dGhpcy5vbkxvYWRFbmRMaXN0ZW5lciYmdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcihhKSxhLl9sb2FkZWRDb21wb25lbnQ9aH0pLGhDKCgpPT57dGhpcy5jb21wb25lbnRMb2FkZXJzLmRlbGV0ZShhKX0pKSxkPW5l''@;'; put 'put ''dyBycmUoZiwoKT0+bmV3IHdlKS5waXBlKEFqKCkpO3JldHVybiB0aGlzLmNvbXBvbmVudExvYWRlcnMuc2V0KGEsZCksZH1sb2FkQ2hpbGRyZW4oYSxmKXtpZih0aGlzLmNoaWxkcmVuTG9hZGVycy5nZXQoZikpcmV0dXJuIHRoaXMuY2hpbGRyZW5Mb2FkZXJzLmdldChmKTtpZihmLl9sb2Fk''@;'; put 'put ''ZWRSb3V0ZXMpcmV0dXJuIEdpKHtyb3V0ZXM6Zi5fbG9hZGVkUm91dGVzLGluamVjdG9yOmYuX2xvYWRlZEluamVjdG9yfSk7dGhpcy5vbkxvYWRTdGFydExpc3RlbmVyJiZ0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXIoZik7Y29uc3QgaD10aGlzLmxvYWRNb2R1bGVGYWN0b3J5T3JSb3V0ZXMo''@;'; put 'put ''Zi5sb2FkQ2hpbGRyZW4pLnBpcGUoRWUoXz0+e3RoaXMub25Mb2FkRW5kTGlzdGVuZXImJnRoaXMub25Mb2FkRW5kTGlzdGVuZXIoZik7bGV0IE8sWDtyZXR1cm4gQXJyYXkuaXNBcnJheShfKT9YPV86KE89Xy5jcmVhdGUoYSkuaW5qZWN0b3IsWD1PLmdldChEdixbXSxhYS5TZWxmfGFhLk9w''@;'; put 'put ''dGlvbmFsKS5mbGF0KCkpLHtyb3V0ZXM6WC5tYXAoVWopLGluamVjdG9yOk99fSksaEMoKCk9Pnt0aGlzLmNoaWxkcmVuTG9hZGVycy5kZWxldGUoZil9KSksbT1uZXcgcnJlKGgsKCk9Pm5ldyB3ZSkucGlwZShBaigpKTtyZXR1cm4gdGhpcy5jaGlsZHJlbkxvYWRlcnMuc2V0KGYsbSksbX1s''@;'; put 'put ''b2FkTW9kdWxlRmFjdG9yeU9yUm91dGVzKGEpe3JldHVybiByNChhKCkpLnBpcGUoRWUoJHJlKSxfcihmPT5mIGluc3RhbmNlb2YgZ3V8fEFycmF5LmlzQXJyYXkoZik/R2koZik6bmwodGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMoZikpKSl9fXJldHVybiBsLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2Z1bmN0aW9uICRyZShsKXtyZXR1cm4gZnVuY3Rpb24gQ3dlKGwpe3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IGwmJiJkZWZhdWx0ImluIGx9KGwpP2wuZGVmYXVsdDpsfWxldCB1RD0oKCk9PntjbGFzcyBse2dldCBoYXNSZXF1ZXN0ZWROYXZpZ2F0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5hdmlnYXRpb25JZH1jb25zdHJ1Y3Rvcigpe3RoaXMuY3VycmVudE5hdmlnYXRpb249bnVsbCx0aGlzLmxhc3RT''@;'; put 'put ''dWNjZXNzZnVsTmF2aWdhdGlvbj1udWxsLHRoaXMuZXZlbnRzPW5ldyB3ZSx0aGlzLmNvbmZpZ0xvYWRlcj1IaShHaiksdGhpcy5lbnZpcm9ubWVudEluamVjdG9yPUhpKHUxKSx0aGlzLnVybFNlcmlhbGl6ZXI9SGkoZ0MpLHRoaXMucm9vdENvbnRleHRzPUhpKENDKSx0aGlzLmlucHV0Qmlu''@;'; put 'put ''ZGluZ0VuYWJsZWQ9bnVsbCE9PUhpKGlELHtvcHRpb25hbDohMH0pLHRoaXMubmF2aWdhdGlvbklkPTAsdGhpcy5hZnRlclByZWFjdGl2YXRpb249KCk9PkdpKHZvaWQgMCksdGhpcy5yb290Q29tcG9uZW50VHlwZT1udWxsLHRoaXMuY29uZmlnTG9hZGVyLm9uTG9hZEVuZExpc3RlbmVyPWQ9''@;'; put 'put ''PnRoaXMuZXZlbnRzLm5leHQobmV3IGdfZShkKSksdGhpcy5jb25maWdMb2FkZXIub25Mb2FkU3RhcnRMaXN0ZW5lcj1kPT50aGlzLmV2ZW50cy5uZXh0KG5ldyBtX2UoZCkpfWNvbXBsZXRlKCl7dGhpcy50cmFuc2l0aW9ucz8uY29tcGxldGUoKX1oYW5kbGVOYXZpZ2F0aW9uUmVxdWVzdChh''@;'; put 'put ''KXtjb25zdCBmPSsrdGhpcy5uYXZpZ2F0aW9uSWQ7dGhpcy50cmFuc2l0aW9ucz8ubmV4dCh7Li4udGhpcy50cmFuc2l0aW9ucy52YWx1ZSwuLi5hLGlkOmZ9KX1zZXR1cE5hdmlnYXRpb25zKGEpe3JldHVybiB0aGlzLnRyYW5zaXRpb25zPW5ldyBPZSh7aWQ6MCxjdXJyZW50VXJsVHJlZTph''@;'; put 'put ''LmN1cnJlbnRVcmxUcmVlLGN1cnJlbnRSYXdVcmw6YS5jdXJyZW50VXJsVHJlZSxleHRyYWN0ZWRVcmw6YS51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QoYS5jdXJyZW50VXJsVHJlZSksdXJsQWZ0ZXJSZWRpcmVjdHM6YS51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QoYS5jdXJyZW50''@;'; put 'put ''VXJsVHJlZSkscmF3VXJsOmEuY3VycmVudFVybFRyZWUsZXh0cmFzOnt9LHJlc29sdmU6bnVsbCxyZWplY3Q6bnVsbCxwcm9taXNlOlByb21pc2UucmVzb2x2ZSghMCksc291cmNlOl9DLHJlc3RvcmVkU3RhdGU6bnVsbCxjdXJyZW50U25hcHNob3Q6YS5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCx0''@;'; put 'put ''YXJnZXRTbmFwc2hvdDpudWxsLGN1cnJlbnRSb3V0ZXJTdGF0ZTphLnJvdXRlclN0YXRlLHRhcmdldFJvdXRlclN0YXRlOm51bGwsZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczpbXSxjYW5EZWFjdGl2YXRlQ2hlY2tzOltdfSxndWFyZHNSZXN1bHQ6bnVsbH0pLHRoaXMudHJhbnNpdGlvbnMu''@;'; put 'put ''cGlwZShJbChmPT4wIT09Zi5pZCksRWUoZj0+KHsuLi5mLGV4dHJhY3RlZFVybDphLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdChmLnJhd1VybCl9KSksa2woZj0+e2xldCBkPSExLGg9ITE7cmV0dXJuIEdpKGYpLnBpcGUocXUobT0+e3RoaXMuY3VycmVudE5hdmlnYXRpb249e2lkOm0u''@;'; put 'put ''aWQsaW5pdGlhbFVybDptLnJhd1VybCxleHRyYWN0ZWRVcmw6bS5leHRyYWN0ZWRVcmwsdHJpZ2dlcjptLnNvdXJjZSxleHRyYXM6bS5leHRyYXMscHJldmlvdXNOYXZpZ2F0aW9uOnRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uP3suLi50aGlzLmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlv''@;'; put 'put ''bixwcmV2aW91c05hdmlnYXRpb246bnVsbH06bnVsbH19KSxrbChtPT57Y29uc3QgXz1hLmJyb3dzZXJVcmxUcmVlLnRvU3RyaW5nKCksTz0hYS5uYXZpZ2F0ZWR8fG0uZXh0cmFjdGVkVXJsLnRvU3RyaW5nKCkhPT1ffHxfIT09YS5jdXJyZW50VXJsVHJlZS50b1N0cmluZygpO2lmKCFPJiYi''@;'; put 'put ''cmVsb2FkIiE9PShtLmV4dHJhcy5vblNhbWVVcmxOYXZpZ2F0aW9uPz9hLm9uU2FtZVVybE5hdmlnYXRpb24pKXtjb25zdCBhZT0iIjtyZXR1cm4gdGhpcy5ldmVudHMubmV4dChuZXcgd0MobS5pZCxhLnNlcmlhbGl6ZVVybChmLnJhd1VybCksYWUsMCkpLGEucmF3VXJsVHJlZT1tLnJhd1Vy''@;'; put 'put ''bCxtLnJlc29sdmUobnVsbCksSG99aWYoYS51cmxIYW5kbGluZ1N0cmF0ZWd5LnNob3VsZFByb2Nlc3NVcmwobS5yYXdVcmwpKXJldHVybiBLcmUobS5zb3VyY2UpJiYoYS5icm93c2VyVXJsVHJlZT1tLmV4dHJhY3RlZFVybCksR2kobSkucGlwZShrbChhZT0+e2NvbnN0IHBlPXRoaXMudHJh''@;'; put 'put ''bnNpdGlvbnM/LmdldFZhbHVlKCk7cmV0dXJuIHRoaXMuZXZlbnRzLm5leHQobmV3IFBqKGFlLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYWUuZXh0cmFjdGVkVXJsKSxhZS5zb3VyY2UsYWUucmVzdG9yZWRTdGF0ZSkpLHBlIT09dGhpcy50cmFuc2l0aW9ucz8uZ2V0VmFsdWUo''@;'; put 'put ''KT9IbzpQcm9taXNlLnJlc29sdmUoYWUpfSksZnVuY3Rpb24gZ3dlKGwsYyxhLGYsZCxoKXtyZXR1cm4gX3IobT0+ZnVuY3Rpb24gZHdlKGwsYyxhLGYsZCxoLG09ImVtcHR5T25seSIpe3JldHVybiBuZXcgaHdlKGwsYyxhLGYsZCxtLGgpLnJlY29nbml6ZSgpfShsLGMsYSxmLG0uZXh0cmFj''@;'; put 'put ''dGVkVXJsLGQsaCkucGlwZShFZSgoe3N0YXRlOl8sdHJlZTpPfSk9Pih7Li4ubSx0YXJnZXRTbmFwc2hvdDpfLHVybEFmdGVyUmVkaXJlY3RzOk99KSkpKX0odGhpcy5lbnZpcm9ubWVudEluamVjdG9yLHRoaXMuY29uZmlnTG9hZGVyLHRoaXMucm9vdENvbXBvbmVudFR5cGUsYS5jb25maWcs''@;'; put 'put ''dGhpcy51cmxTZXJpYWxpemVyLGEucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSkscXUoYWU9PntpZihmLnRhcmdldFNuYXBzaG90PWFlLnRhcmdldFNuYXBzaG90LGYudXJsQWZ0ZXJSZWRpcmVjdHM9YWUudXJsQWZ0ZXJSZWRpcmVjdHMsdGhpcy5jdXJyZW50TmF2aWdhdGlvbj17Li4udGhp''@;'; put 'put ''cy5jdXJyZW50TmF2aWdhdGlvbixmaW5hbFVybDphZS51cmxBZnRlclJlZGlyZWN0c30sImVhZ2VyIj09PWEudXJsVXBkYXRlU3RyYXRlZ3kpe2lmKCFhZS5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlKXtjb25zdCBiZT1hLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UoYWUudXJsQWZ0ZXJS''@;'; put 'put ''ZWRpcmVjdHMsYWUucmF3VXJsKTthLnNldEJyb3dzZXJVcmwoYmUsYWUpfWEuYnJvd3NlclVybFRyZWU9YWUudXJsQWZ0ZXJSZWRpcmVjdHN9Y29uc3QgcGU9bmV3IGNfZShhZS5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGFlLmV4dHJhY3RlZFVybCksdGhpcy51cmxTZXJpYWxp''@;'; put 'put ''emVyLnNlcmlhbGl6ZShhZS51cmxBZnRlclJlZGlyZWN0cyksYWUudGFyZ2V0U25hcHNob3QpO3RoaXMuZXZlbnRzLm5leHQocGUpfSkpO2lmKE8mJmEudXJsSGFuZGxpbmdTdHJhdGVneS5zaG91bGRQcm9jZXNzVXJsKGEucmF3VXJsVHJlZSkpe2NvbnN0e2lkOmFlLGV4dHJhY3RlZFVybDpw''@;'; put 'put ''ZSxzb3VyY2U6YmUscmVzdG9yZWRTdGF0ZTp4ZSxleHRyYXM6VmV9PW0sWmU9bmV3IFBqKGFlLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUocGUpLGJlLHhlKTt0aGlzLmV2ZW50cy5uZXh0KFplKTtjb25zdCBsdD1BcmUoMCx0aGlzLnJvb3RDb21wb25lbnRUeXBlKS5zbmFwc2hvdDty''@;'; put 'put ''ZXR1cm4gR2koZj17Li4ubSx0YXJnZXRTbmFwc2hvdDpsdCx1cmxBZnRlclJlZGlyZWN0czpwZSxleHRyYXM6ey4uLlZlLHNraXBMb2NhdGlvbkNoYW5nZTohMSxyZXBsYWNlVXJsOiExfX0pfXtjb25zdCBhZT0iIjtyZXR1cm4gdGhpcy5ldmVudHMubmV4dChuZXcgd0MobS5pZCxhLnNlcmlh''@;'; put 'put ''bGl6ZVVybChmLmV4dHJhY3RlZFVybCksYWUsMSkpLGEucmF3VXJsVHJlZT1tLnJhd1VybCxtLnJlc29sdmUobnVsbCksSG99fSkscXUobT0+e2NvbnN0IF89bmV3IGZfZShtLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUobS5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXpl''@;'; put 'put ''ci5zZXJpYWxpemUobS51cmxBZnRlclJlZGlyZWN0cyksbS50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVudHMubmV4dChfKX0pLEVlKG09PmY9ey4uLm0sZ3VhcmRzOlBfZShtLnRhcmdldFNuYXBzaG90LG0uY3VycmVudFNuYXBzaG90LHRoaXMucm9vdENvbnRleHRzKX0pLGZ1bmN0aW9uIFdf''@;'; put 'put ''ZShsLGMpe3JldHVybiBfcihhPT57Y29uc3R7dGFyZ2V0U25hcHNob3Q6ZixjdXJyZW50U25hcHNob3Q6ZCxndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOmgsY2FuRGVhY3RpdmF0ZUNoZWNrczptfX09YTtyZXR1cm4gMD09PW0ubGVuZ3RoJiYwPT09aC5sZW5ndGg/R2koey4uLmEsZ3VhcmRz''@;'; put 'put ''UmVzdWx0OiEwfSk6ZnVuY3Rpb24gR19lKGwsYyxhLGYpe3JldHVybiBubChsKS5waXBlKF9yKGQ9PmZ1bmN0aW9uIFFfZShsLGMsYSxmLGQpe2NvbnN0IGg9YyYmYy5yb3V0ZUNvbmZpZz9jLnJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGU6bnVsbDtyZXR1cm4gaCYmMCE9PWgubGVuZ3RoP0dp''@;'; put 'put ''KGgubWFwKF89Pntjb25zdCBPPU1DKGMpPz9kLFg9QXYoXyxPKTtyZXR1cm4gcjQoZnVuY3Rpb24gVV9lKGwpe3JldHVybiBsJiZ4QyhsLmNhbkRlYWN0aXZhdGUpfShYKT9YLmNhbkRlYWN0aXZhdGUobCxjLGEsZik6Ty5ydW5JbkNvbnRleHQoKCk9PlgobCxjLGEsZikpKS5waXBlKG40KCkp''@;'; put 'put ''fSkpLnBpcGUoVHYoKSk6R2koITApfShkLmNvbXBvbmVudCxkLnJvdXRlLGEsYyxmKSksbjQoZD0+ITAhPT1kLCEwKSl9KG0sZixkLGwpLnBpcGUoX3IoXz0+XyYmZnVuY3Rpb24gVl9lKGwpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGx9KF8pP2Z1bmN0aW9uICRfZShsLGMsYSxmKXtyZXR1''@;'; put 'put ''cm4gbmwoYykucGlwZShTdihkPT4kTyhmdW5jdGlvbiBxX2UobCxjKXtyZXR1cm4gbnVsbCE9PWwmJmMmJmMobmV3IHZfZShsKSksR2koITApfShkLnJvdXRlLnBhcmVudCxmKSxmdW5jdGlvbiBLX2UobCxjKXtyZXR1cm4gbnVsbCE9PWwmJmMmJmMobmV3IGJfZShsKSksR2koITApfShkLnJv''@;'; put 'put ''dXRlLGYpLGZ1bmN0aW9uIEpfZShsLGMsYSl7Y29uc3QgZj1jW2MubGVuZ3RoLTFdLGg9Yy5zbGljZSgwLGMubGVuZ3RoLTEpLnJldmVyc2UoKS5tYXAobT0+ZnVuY3Rpb24gRl9lKGwpe2NvbnN0IGM9bC5yb3V0ZUNvbmZpZz9sLnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQ6bnVsbDty''@;'; put 'put ''ZXR1cm4gYyYmMCE9PWMubGVuZ3RoP3tub2RlOmwsZ3VhcmRzOmN9Om51bGx9KG0pKS5maWx0ZXIobT0+bnVsbCE9PW0pLm1hcChtPT5ucmUoKCk9PkdpKG0uZ3VhcmRzLm1hcChPPT57Y29uc3QgWD1NQyhtLm5vZGUpPz9hLGFlPUF2KE8sWCk7cmV0dXJuIHI0KGZ1bmN0aW9uIHpfZShsKXty''@;'; put 'put ''ZXR1cm4gbCYmeEMobC5jYW5BY3RpdmF0ZUNoaWxkKX0oYWUpP2FlLmNhbkFjdGl2YXRlQ2hpbGQoZixsKTpYLnJ1bkluQ29udGV4dCgoKT0+YWUoZixsKSkpLnBpcGUobjQoKSl9KSkucGlwZShUdigpKSkpO3JldHVybiBHaShoKS5waXBlKFR2KCkpfShsLGQucGF0aCxhKSxmdW5jdGlvbiBY''@;'; put 'put ''X2UobCxjLGEpe2NvbnN0IGY9Yy5yb3V0ZUNvbmZpZz9jLnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlOm51bGw7aWYoIWZ8fDA9PT1mLmxlbmd0aClyZXR1cm4gR2koITApO2NvbnN0IGQ9Zi5tYXAoaD0+bnJlKCgpPT57Y29uc3QgbT1NQyhjKT8/YSxfPUF2KGgsbSk7cmV0dXJuIHI0KGZ1bmN0''@;'; put 'put ''aW9uIGpfZShsKXtyZXR1cm4gbCYmeEMobC5jYW5BY3RpdmF0ZSl9KF8pP18uY2FuQWN0aXZhdGUoYyxsKTptLnJ1bkluQ29udGV4dCgoKT0+XyhjLGwpKSkucGlwZShuNCgpKX0pKTtyZXR1cm4gR2koZCkucGlwZShUdigpKX0obCxkLnJvdXRlLGEpKSksbjQoZD0+ITAhPT1kLCEwKSl9KGYs''@;'; put 'put ''aCxsLGMpOkdpKF8pKSxFZShfPT4oey4uLmEsZ3VhcmRzUmVzdWx0Ol99KSkpfSl9KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcixtPT50aGlzLmV2ZW50cy5uZXh0KG0pKSxxdShtPT57aWYoZi5ndWFyZHNSZXN1bHQ9bS5ndWFyZHNSZXN1bHQseGcobS5ndWFyZHNSZXN1bHQpKXRocm93IFJy''@;'; put 'put ''ZSgwLG0uZ3VhcmRzUmVzdWx0KTtjb25zdCBfPW5ldyBkX2UobS5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG0uZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKG0udXJsQWZ0ZXJSZWRpcmVjdHMpLG0udGFyZ2V0U25hcHNob3QsISFtLmd1YXJkc1Jl''@;'; put 'put ''c3VsdCk7dGhpcy5ldmVudHMubmV4dChfKX0pLElsKG09PiEhbS5ndWFyZHNSZXN1bHR8fChhLnJlc3RvcmVIaXN0b3J5KG0pLHRoaXMuY2FuY2VsTmF2aWdhdGlvblRyYW5zaXRpb24obSwiIiwzKSwhMSkpLFdqKG09PntpZihtLmd1YXJkcy5jYW5BY3RpdmF0ZUNoZWNrcy5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIEdpKG0pLnBpcGUocXUoXz0+e2NvbnN0IE89bmV3IGhfZShfLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoXy5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoXy51cmxBZnRlclJlZGlyZWN0cyksXy50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVu''@;'; put 'put ''dHMubmV4dChPKX0pLGtsKF89PntsZXQgTz0hMTtyZXR1cm4gR2koXykucGlwZSh2d2UoYS5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcikscXUoe25leHQ6KCk9Pk89ITAsY29tcGxldGU6KCk9PntPfHwoYS5yZXN0b3JlSGlzdG9yeShfKSx0aGlz''@;'; put 'put ''LmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKF8sIiIsMikpfX0pKX0pLHF1KF89Pntjb25zdCBPPW5ldyBwX2UoXy5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKF8uZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKF8udXJsQWZ0ZXJSZWRpcmVjdHMp''@;'; put 'put ''LF8udGFyZ2V0U25hcHNob3QpO3RoaXMuZXZlbnRzLm5leHQoTyl9KSl9KSxXaihtPT57Y29uc3QgXz1PPT57Y29uc3QgWD1bXTtPLnJvdXRlQ29uZmlnPy5sb2FkQ29tcG9uZW50JiYhTy5yb3V0ZUNvbmZpZy5fbG9hZGVkQ29tcG9uZW50JiZYLnB1c2godGhpcy5jb25maWdMb2FkZXIubG9h''@;'; put 'put ''ZENvbXBvbmVudChPLnJvdXRlQ29uZmlnKS5waXBlKHF1KGFlPT57Ty5jb21wb25lbnQ9YWV9KSxFZSgoKT0+e30pKSk7Zm9yKGNvbnN0IGFlIG9mIE8uY2hpbGRyZW4pWC5wdXNoKC4uLl8oYWUpKTtyZXR1cm4gWH07cmV0dXJuIEN2KF8obS50YXJnZXRTbmFwc2hvdC5yb290KSkucGlwZShL''@;'; put 'put ''TygpLEVmKDEpKX0pLFdqKCgpPT50aGlzLmFmdGVyUHJlYWN0aXZhdGlvbigpKSxFZShtPT57Y29uc3QgXz1mdW5jdGlvbiBrX2UobCxjLGEpe2NvbnN0IGY9U0MobCxjLl9yb290LGE/YS5fcm9vdDp2b2lkIDApO3JldHVybiBuZXcgeHJlKGYsYyl9KGEucm91dGVSZXVzZVN0cmF0ZWd5LG0u''@;'; put 'put ''dGFyZ2V0U25hcHNob3QsbS5jdXJyZW50Um91dGVyU3RhdGUpO3JldHVybiBmPXsuLi5tLHRhcmdldFJvdXRlclN0YXRlOl99fSkscXUobT0+e2EuY3VycmVudFVybFRyZWU9bS51cmxBZnRlclJlZGlyZWN0cyxhLnJhd1VybFRyZWU9YS51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKG0udXJs''@;'; put 'put ''QWZ0ZXJSZWRpcmVjdHMsbS5yYXdVcmwpLGEucm91dGVyU3RhdGU9bS50YXJnZXRSb3V0ZXJTdGF0ZSwiZGVmZXJyZWQiPT09YS51cmxVcGRhdGVTdHJhdGVneSYmKG0uZXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZXx8YS5zZXRCcm93c2VyVXJsKGEucmF3VXJsVHJlZSxtKSxhLmJyb3dzZXJV''@;'; put 'put ''cmxUcmVlPW0udXJsQWZ0ZXJSZWRpcmVjdHMpfSksKChsLGMsYSxmKT0+RWUoZD0+KG5ldyBMX2UoYyxkLnRhcmdldFJvdXRlclN0YXRlLGQuY3VycmVudFJvdXRlclN0YXRlLGEsZikuYWN0aXZhdGUobCksZCkpKSh0aGlzLnJvb3RDb250ZXh0cyxhLnJvdXRlUmV1c2VTdHJhdGVneSxtPT50''@;'; put 'put ''aGlzLmV2ZW50cy5uZXh0KG0pLHRoaXMuaW5wdXRCaW5kaW5nRW5hYmxlZCksRWYoMSkscXUoe25leHQ6bT0+e2Q9ITAsdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb249dGhpcy5jdXJyZW50TmF2aWdhdGlvbixhLm5hdmlnYXRlZD0hMCx0aGlzLmV2ZW50cy5uZXh0KG5ldyBpNChtLmlk''@;'; put 'put ''LHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUobS5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYS5jdXJyZW50VXJsVHJlZSkpKSxhLnRpdGxlU3RyYXRlZ3k/LnVwZGF0ZVRpdGxlKG0udGFyZ2V0Um91dGVyU3RhdGUuc25hcHNob3QpLG0ucmVzb2x2ZSgh''@;'; put 'put ''MCl9LGNvbXBsZXRlOigpPT57ZD0hMH19KSxoQygoKT0+e2R8fGh8fHRoaXMuY2FuY2VsTmF2aWdhdGlvblRyYW5zaXRpb24oZiwiIiwxKSx0aGlzLmN1cnJlbnROYXZpZ2F0aW9uPy5pZD09PWYuaWQmJih0aGlzLmN1cnJlbnROYXZpZ2F0aW9uPW51bGwpfSksa2cobT0+e2lmKGg9ITAsRnJl''@;'; put 'put ''KG0pKXtQcmUobSl8fChhLm5hdmlnYXRlZD0hMCxhLnJlc3RvcmVIaXN0b3J5KGYsITApKTtjb25zdCBfPW5ldyBuRChmLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoZi5leHRyYWN0ZWRVcmwpLG0ubWVzc2FnZSxtLmNhbmNlbGxhdGlvbkNvZGUpO2lmKHRoaXMuZXZlbnRzLm5l''@;'; put 'put ''eHQoXyksUHJlKG0pKXtjb25zdCBPPWEudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShtLnVybCxhLnJhd1VybFRyZWUpLFg9e3NraXBMb2NhdGlvbkNoYW5nZTpmLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDoiZWFnZXIiPT09YS51cmxVcGRhdGVTdHJhdGVneXx8S3Jl''@;'; put 'put ''KGYuc291cmNlKX07YS5zY2hlZHVsZU5hdmlnYXRpb24oTyxfQyxudWxsLFgse3Jlc29sdmU6Zi5yZXNvbHZlLHJlamVjdDpmLnJlamVjdCxwcm9taXNlOmYucHJvbWlzZX0pfWVsc2UgZi5yZXNvbHZlKCExKX1lbHNle2EucmVzdG9yZUhpc3RvcnkoZiwhMCk7Y29uc3QgXz1uZXcgRmooZi5p''@;'; put 'put ''ZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGYuZXh0cmFjdGVkVXJsKSxtLGYudGFyZ2V0U25hcHNob3Q/P3ZvaWQgMCk7dGhpcy5ldmVudHMubmV4dChfKTt0cnl7Zi5yZXNvbHZlKGEuZXJyb3JIYW5kbGVyKG0pKX1jYXRjaChPKXtmLnJlamVjdChPKX19cmV0dXJuIEhvfSkpfSkp''@;'; put 'put ''fWNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKGEsZixkKXtjb25zdCBoPW5ldyBuRChhLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYS5leHRyYWN0ZWRVcmwpLGYsZCk7dGhpcy5ldmVudHMubmV4dChoKSxhLnJlc29sdmUoITEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtmdW5jdGlvbiBLcmUobCl7cmV0dXJuIGwhPT1fQ31sZXQgcXJlPSgoKT0+e2NsYXNzIGx7YnVpbGRUaXRsZShhKXtsZXQg''@;'; put 'put ''ZixkPWEucm9vdDtmb3IoO3ZvaWQgMCE9PWQ7KWY9dGhpcy5nZXRSZXNvbHZlZFRpdGxlRm9yUm91dGUoZCk/P2YsZD1kLmNoaWxkcmVuLmZpbmQoaD0+aC5vdXRsZXQ9PT1kYSk7cmV0dXJuIGZ9Z2V0UmVzb2x2ZWRUaXRsZUZvclJvdXRlKGEpe3JldHVybiBhLmRhdGFbcENdfX1yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gSGkoU3dlKX0scHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxTd2U9KCgpPT57Y2xhc3MgbCBleHRlbmRzIHFyZXtjb25zdHJ1''@;'; put 'put ''Y3RvcihhKXtzdXBlcigpLHRoaXMudGl0bGU9YX11cGRhdGVUaXRsZShhKXtjb25zdCBmPXRoaXMuYnVpbGRUaXRsZShhKTt2b2lkIDAhPT1mJiZ0aGlzLnRpdGxlLnNldFRpdGxlKGYpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihHbmUpKX0s''@;'; put 'put ''bC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxNd2U9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxm''@;'; put 'put ''YWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIEhpKEV3ZSl9LHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7Y2xhc3Mga3dle3Nob3VsZERldGFjaChjKXtyZXR1cm4hMX1zdG9yZShjLGEpe31zaG91bGRBdHRhY2goYyl7cmV0dXJuITF9cmV0cmlldmUoYyl7cmV0dXJuIG51bGx9c2hvdWxkUmV1''@;'; put 'put ''c2VSb3V0ZShjLGEpe3JldHVybiBjLnJvdXRlQ29uZmlnPT09YS5yb3V0ZUNvbmZpZ319bGV0IEV3ZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMga3dle31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oZil7cmV0dXJuKGN8fChjPXhsKGwpKSkoZnx8''@;'; put 'put ''bCl9fSgpLGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7Y29uc3QgY0Q9bmV3IE1pKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4oe30pfSk7bGV0IHh3ZT0oKCk9PntjbGFzcyBse31yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gSGkoQXdlKX0scHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxBd2U9KCgpPT57Y2xhc3MgbHtzaG91bGRQcm9jZXNzVXJsKGEp''@;'; put 'put ''e3JldHVybiEwfWV4dHJhY3QoYSl7cmV0dXJuIGF9bWVyZ2UoYSxmKXtyZXR1cm4gYX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSks''@;'; put 'put ''bH0pKCk7dmFyIEFDPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuQ09NUExFVEU9MF09IkNPTVBMRVRFIixsW2wuRkFJTEVEPTFdPSJGQUlMRUQiLGxbbC5SRURJUkVDVElORz0yXT0iUkVESVJFQ1RJTkciLGx9KEFDfHx7fSk7ZnVuY3Rpb24gWHJlKGwsYyl7bC5ldmVudHMucGlwZShJbChhPT5h''@;'; put 'put ''IGluc3RhbmNlb2YgaTR8fGEgaW5zdGFuY2VvZiBuRHx8YSBpbnN0YW5jZW9mIEZqfHxhIGluc3RhbmNlb2Ygd0MpLEVlKGE9PmEgaW5zdGFuY2VvZiBpNHx8YSBpbnN0YW5jZW9mIHdDP0FDLkNPTVBMRVRFOmEgaW5zdGFuY2VvZiBuRCYmKDA9PT1hLmNvZGV8fDE9PT1hLmNvZGUpP0FDLlJF''@;'; put 'put ''RElSRUNUSU5HOkFDLkZBSUxFRCksSWwoYT0+YSE9PUFDLlJFRElSRUNUSU5HKSxFZigxKSkuc3Vic2NyaWJlKCgpPT57YygpfSl9ZnVuY3Rpb24gVHdlKGwpe3Rocm93IGx9ZnVuY3Rpb24gT3dlKGwsYyxhKXtyZXR1cm4gYy5wYXJzZSgiLyIpfWNvbnN0IER3ZT17cGF0aHM6ImV4YWN0Iixm''@;'; put 'put ''cmFnbWVudDoiaWdub3JlZCIsbWF0cml4UGFyYW1zOiJpZ25vcmVkIixxdWVyeVBhcmFtczoiZXhhY3QifSxJd2U9e3BhdGhzOiJzdWJzZXQiLGZyYWdtZW50OiJpZ25vcmVkIixtYXRyaXhQYXJhbXM6Imlnbm9yZWQiLHF1ZXJ5UGFyYW1zOiJzdWJzZXQifTtsZXQgTGE9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bHtnZXQgbmF2aWdhdGlvbklkKCl7cmV0dXJuIHRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLm5hdmlnYXRpb25JZH1nZXQgYnJvd3NlclBhZ2VJZCgpe2lmKCJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24pcmV0dXJuIHRoaXMubG9jYXRpb24uZ2V0U3Rh''@;'; put 'put ''dGUoKT8uXHUwMjc1cm91dGVyUGFnZUlkfWdldCBldmVudHMoKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuZXZlbnRzfWNvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlZD0hMSx0aGlzLmN1cnJlbnRQYWdlSWQ9MCx0aGlzLmNvbnNvbGU9SGkod3RlKSx0aGlzLmlzTmdab25l''@;'; put 'put ''RW5hYmxlZD0hMSx0aGlzLm9wdGlvbnM9SGkoY0Qse29wdGlvbmFsOiEwfSl8fHt9LHRoaXMucGVuZGluZ1Rhc2tzPUhpKHhPKSx0aGlzLmVycm9ySGFuZGxlcj10aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyfHxUd2UsdGhpcy5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXI9dGhpcy5vcHRpb25z''@;'; put 'put ''Lm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcnx8T3dlLHRoaXMubmF2aWdhdGVkPSExLHRoaXMubGFzdFN1Y2Nlc3NmdWxJZD0tMSx0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3k9SGkoeHdlKSx0aGlzLnJvdXRlUmV1c2VTdHJhdGVneT1IaShNd2UpLHRoaXMudGl0bGVTdHJhdGVneT1IaShxcmUp''@;'; put 'put ''LHRoaXMub25TYW1lVXJsTmF2aWdhdGlvbj10aGlzLm9wdGlvbnMub25TYW1lVXJsTmF2aWdhdGlvbnx8Imlnbm9yZSIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PXRoaXMub3B0aW9ucy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5fHwiZW1wdHlPbmx5Iix0aGlzLnVybFVwZGF0''@;'; put 'put ''ZVN0cmF0ZWd5PXRoaXMub3B0aW9ucy51cmxVcGRhdGVTdHJhdGVneXx8ImRlZmVycmVkIix0aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb249dGhpcy5vcHRpb25zLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb258fCJyZXBsYWNlIix0aGlzLmNvbmZpZz1IaShEdix7b3B0aW9u''@;'; put 'put ''YWw6ITB9KT8uZmxhdCgpPz9bXSx0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucz1IaSh1RCksdGhpcy51cmxTZXJpYWxpemVyPUhpKGdDKSx0aGlzLmxvY2F0aW9uPUhpKGdkKSx0aGlzLmNvbXBvbmVudElucHV0QmluZGluZ0VuYWJsZWQ9ISFIaShpRCx7b3B0aW9uYWw6ITB9KSx0aGlzLmlz''@;'; put 'put ''Tmdab25lRW5hYmxlZD1IaShVbylpbnN0YW5jZW9mIFVvJiZVby5pc0luQW5ndWxhclpvbmUoKSx0aGlzLnJlc2V0Q29uZmlnKHRoaXMuY29uZmlnKSx0aGlzLmN1cnJlbnRVcmxUcmVlPW5ldyBrdix0aGlzLnJhd1VybFRyZWU9dGhpcy5jdXJyZW50VXJsVHJlZSx0aGlzLmJyb3dzZXJVcmxU''@;'; put 'put ''cmVlPXRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5yb3V0ZXJTdGF0ZT1BcmUoMCxudWxsKSx0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5zZXR1cE5hdmlnYXRpb25zKHRoaXMpLnN1YnNjcmliZShhPT57dGhpcy5sYXN0U3VjY2Vzc2Z1bElkPWEuaWQsdGhpcy5jdXJyZW50UGFnZUlkPXRo''@;'; put 'put ''aXMuYnJvd3NlclBhZ2VJZD8/MH0sYT0+e3RoaXMuY29uc29sZS53YXJuKGBVbmhhbmRsZWQgTmF2aWdhdGlvbiBFcnJvcjogJHthfWApfSl9cmVzZXRSb290Q29tcG9uZW50VHlwZShhKXt0aGlzLnJvdXRlclN0YXRlLnJvb3QuY29tcG9uZW50PWEsdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlv''@;'; put 'put ''bnMucm9vdENvbXBvbmVudFR5cGU9YX1pbml0aWFsTmF2aWdhdGlvbigpe2lmKHRoaXMuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCksIXRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLmhhc1JlcXVlc3RlZE5hdmlnYXRpb24pe2NvbnN0IGE9dGhpcy5sb2NhdGlvbi5nZXRTdGF0ZSgp''@;'; put 'put ''O3RoaXMubmF2aWdhdGVUb1N5bmNXaXRoQnJvd3Nlcih0aGlzLmxvY2F0aW9uLnBhdGgoITApLF9DLGEpfX1zZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIoKXt0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9ufHwodGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbj10aGlzLmxvY2F0aW9uLnN1YnNj''@;'; put 'put ''cmliZShhPT57Y29uc3QgZj0icG9wc3RhdGUiPT09YS50eXBlPyJwb3BzdGF0ZSI6Imhhc2hjaGFuZ2UiOyJwb3BzdGF0ZSI9PT1mJiZzZXRUaW1lb3V0KCgpPT57dGhpcy5uYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyKGEudXJsLGYsYS5zdGF0ZSl9LDApfSkpfW5hdmlnYXRlVG9TeW5jV2l0''@;'; put 'put ''aEJyb3dzZXIoYSxmLGQpe2NvbnN0IGg9e3JlcGxhY2VVcmw6ITB9LG09ZD8ubmF2aWdhdGlvbklkP2Q6bnVsbDtpZihkKXtjb25zdCBPPXsuLi5kfTtkZWxldGUgTy5uYXZpZ2F0aW9uSWQsZGVsZXRlIE8uXHUwMjc1cm91dGVyUGFnZUlkLDAhPT1PYmplY3Qua2V5cyhPKS5sZW5ndGgmJiho''@;'; put 'put ''LnN0YXRlPU8pfWNvbnN0IF89dGhpcy5wYXJzZVVybChhKTt0aGlzLnNjaGVkdWxlTmF2aWdhdGlvbihfLGYsbSxoKX1nZXQgdXJsKCl7cmV0dXJuIHRoaXMuc2VyaWFsaXplVXJsKHRoaXMuY3VycmVudFVybFRyZWUpfWdldEN1cnJlbnROYXZpZ2F0aW9uKCl7cmV0dXJuIHRoaXMubmF2aWdh''@;'; put 'put ''dGlvblRyYW5zaXRpb25zLmN1cnJlbnROYXZpZ2F0aW9ufWdldCBsYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24oKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9ufXJlc2V0Q29uZmlnKGEpe3RoaXMuY29uZmlnPWEubWFwKFVqKSx0aGlz''@;'; put 'put ''Lm5hdmlnYXRlZD0hMSx0aGlzLmxhc3RTdWNjZXNzZnVsSWQ9LTF9bmdPbkRlc3Ryb3koKXt0aGlzLmRpc3Bvc2UoKX1kaXNwb3NlKCl7dGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY29tcGxldGUoKSx0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5sb2NhdGlvblN1YnNjcmlw''@;'; put 'put ''dGlvbi51bnN1YnNjcmliZSgpLHRoaXMubG9jYXRpb25TdWJzY3JpcHRpb249dm9pZCAwKSx0aGlzLmRpc3Bvc2VkPSEwfWNyZWF0ZVVybFRyZWUoYSxmPXt9KXtjb25zdHtyZWxhdGl2ZVRvOmQscXVlcnlQYXJhbXM6aCxmcmFnbWVudDptLHF1ZXJ5UGFyYW1zSGFuZGxpbmc6XyxwcmVzZXJ2''@;'; put 'put ''ZUZyYWdtZW50Ok99PWYsWD1PP3RoaXMuY3VycmVudFVybFRyZWUuZnJhZ21lbnQ6bTtsZXQgcGUsYWU9bnVsbDtzd2l0Y2goXyl7Y2FzZSJtZXJnZSI6YWU9ey4uLnRoaXMuY3VycmVudFVybFRyZWUucXVlcnlQYXJhbXMsLi4uaH07YnJlYWs7Y2FzZSJwcmVzZXJ2ZSI6YWU9dGhpcy5jdXJy''@;'; put 'put ''ZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVhaztkZWZhdWx0OmFlPWh8fG51bGx9bnVsbCE9PWFlJiYoYWU9dGhpcy5yZW1vdmVFbXB0eVByb3BzKGFlKSk7dHJ5e3BlPXlyZShkP2Quc25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290KX1jYXRjaHsoInN0cmluZyIhPXR5''@;'; put 'put ''cGVvZiBhWzBdfHwhYVswXS5zdGFydHNXaXRoKCIvIikpJiYoYT1bXSkscGU9dGhpcy5jdXJyZW50VXJsVHJlZS5yb290fXJldHVybiBicmUocGUsYSxhZSxYPz9udWxsKX1uYXZpZ2F0ZUJ5VXJsKGEsZj17c2tpcExvY2F0aW9uQ2hhbmdlOiExfSl7Y29uc3QgZD14ZyhhKT9hOnRoaXMucGFy''@;'; put 'put ''c2VVcmwoYSksaD10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UoZCx0aGlzLnJhd1VybFRyZWUpO3JldHVybiB0aGlzLnNjaGVkdWxlTmF2aWdhdGlvbihoLF9DLG51bGwsZil9bmF2aWdhdGUoYSxmPXtza2lwTG9jYXRpb25DaGFuZ2U6ITF9KXtyZXR1cm4gZnVuY3Rpb24gUndlKGwp''@;'; put 'put ''e2ZvcihsZXQgYz0wO2M8bC5sZW5ndGg7YysrKWlmKG51bGw9PWxbY10pdGhyb3cgbmV3IElyKDQwMDgsITEpfShhKSx0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5jcmVhdGVVcmxUcmVlKGEsZiksZil9c2VyaWFsaXplVXJsKGEpe3JldHVybiB0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXpl''@;'; put 'put ''KGEpfXBhcnNlVXJsKGEpe2xldCBmO3RyeXtmPXRoaXMudXJsU2VyaWFsaXplci5wYXJzZShhKX1jYXRjaChkKXtmPXRoaXMubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVyKGQsdGhpcy51cmxTZXJpYWxpemVyLGEpfXJldHVybiBmfWlzQWN0aXZlKGEsZil7bGV0IGQ7aWYoZD0hMD09PWY/ey4u''@;'; put 'put ''LkR3ZX06ITE9PT1mP3suLi5Jd2V9OmYseGcoYSkpcmV0dXJuIHVyZSh0aGlzLmN1cnJlbnRVcmxUcmVlLGEsZCk7Y29uc3QgaD10aGlzLnBhcnNlVXJsKGEpO3JldHVybiB1cmUodGhpcy5jdXJyZW50VXJsVHJlZSxoLGQpfXJlbW92ZUVtcHR5UHJvcHMoYSl7cmV0dXJuIE9iamVjdC5rZXlz''@;'; put 'put ''KGEpLnJlZHVjZSgoZixkKT0+e2NvbnN0IGg9YVtkXTtyZXR1cm4gbnVsbCE9aCYmKGZbZF09aCksZn0se30pfXNjaGVkdWxlTmF2aWdhdGlvbihhLGYsZCxoLG0pe2lmKHRoaXMuZGlzcG9zZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7bGV0IF8sTyxYO20/KF89bS5yZXNvbHZlLE89''@;'; put 'put ''bS5yZWplY3QsWD1tLnByb21pc2UpOlg9bmV3IFByb21pc2UoKHBlLGJlKT0+e189cGUsTz1iZX0pO2NvbnN0IGFlPXRoaXMucGVuZGluZ1Rhc2tzLmFkZCgpO3JldHVybiBYcmUodGhpcywoKT0+e3F1ZXVlTWljcm90YXNrKCgpPT50aGlzLnBlbmRpbmdUYXNrcy5yZW1vdmUoYWUpKX0pLHRo''@;'; put 'put ''aXMubmF2aWdhdGlvblRyYW5zaXRpb25zLmhhbmRsZU5hdmlnYXRpb25SZXF1ZXN0KHtzb3VyY2U6ZixyZXN0b3JlZFN0YXRlOmQsY3VycmVudFVybFRyZWU6dGhpcy5jdXJyZW50VXJsVHJlZSxjdXJyZW50UmF3VXJsOnRoaXMuY3VycmVudFVybFRyZWUscmF3VXJsOmEsZXh0cmFzOmgscmVz''@;'; put 'put ''b2x2ZTpfLHJlamVjdDpPLHByb21pc2U6WCxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5yb3V0ZXJTdGF0ZX0pLFguY2F0Y2gocGU9PlByb21pc2UucmVqZWN0KHBlKSl9c2V0QnJvd3NlclVybChhLGYpe2NvbnN0IGQ9''@;'; put 'put ''dGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShhKTtpZih0aGlzLmxvY2F0aW9uLmlzQ3VycmVudFBhdGhFcXVhbFRvKGQpfHxmLmV4dHJhcy5yZXBsYWNlVXJsKXtjb25zdCBtPXsuLi5mLmV4dHJhcy5zdGF0ZSwuLi50aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShmLmlkLHRoaXMuYnJv''@;'; put 'put ''d3NlclBhZ2VJZCl9O3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGQsIiIsbSl9ZWxzZXtjb25zdCBoPXsuLi5mLmV4dHJhcy5zdGF0ZSwuLi50aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShmLmlkLCh0aGlzLmJyb3dzZXJQYWdlSWQ/PzApKzEpfTt0aGlzLmxvY2F0aW9uLmdvKGQsIiIs''@;'; put 'put ''aCl9fXJlc3RvcmVIaXN0b3J5KGEsZj0hMSl7aWYoImNvbXB1dGVkIj09PXRoaXMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbil7Y29uc3QgaD10aGlzLmN1cnJlbnRQYWdlSWQtKHRoaXMuYnJvd3NlclBhZ2VJZD8/dGhpcy5jdXJyZW50UGFnZUlkKTswIT09aD90aGlzLmxvY2F0aW9u''@;'; put 'put ''Lmhpc3RvcnlHbyhoKTp0aGlzLmN1cnJlbnRVcmxUcmVlPT09dGhpcy5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5maW5hbFVybCYmMD09PWgmJih0aGlzLnJlc2V0U3RhdGUoYSksdGhpcy5icm93c2VyVXJsVHJlZT1hLmN1cnJlbnRVcmxUcmVlLHRoaXMucmVzZXRVcmxUb0N1cnJlbnRVcmxU''@;'; put 'put ''cmVlKCkpfWVsc2UicmVwbGFjZSI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24mJihmJiZ0aGlzLnJlc2V0U3RhdGUoYSksdGhpcy5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKSl9cmVzZXRTdGF0ZShhKXt0aGlzLnJvdXRlclN0YXRlPWEuY3VycmVudFJvdXRlclN0YXRl''@;'; put 'put ''LHRoaXMuY3VycmVudFVybFRyZWU9YS5jdXJyZW50VXJsVHJlZSx0aGlzLnJhd1VybFRyZWU9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKHRoaXMuY3VycmVudFVybFRyZWUsYS5yYXdVcmwpfXJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpe3RoaXMubG9jYXRpb24ucmVwbGFjZVN0''@;'; put 'put ''YXRlKHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodGhpcy5yYXdVcmxUcmVlKSwiIix0aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZSh0aGlzLmxhc3RTdWNjZXNzZnVsSWQsdGhpcy5jdXJyZW50UGFnZUlkKSl9Z2VuZXJhdGVOZ1JvdXRlclN0YXRlKGEsZil7cmV0dXJuImNvbXB1dGVk''@;'; put 'put ''Ij09PXRoaXMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbj97bmF2aWdhdGlvbklkOmEsXHUwMjc1cm91dGVyUGFnZUlkOmZ9OntuYXZpZ2F0aW9uSWQ6YX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2Vu''@;'; put 'put ''OmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpLEkwPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8pe3RoaXMucm91dGVyPWEsdGhpcy5yb3V0ZT1mLHRoaXMudGFiSW5kZXhBdHRyaWJ1dGU9ZCx0aGlzLnJlbmRlcmVyPWgsdGhpcy5l''@;'; put 'put ''bD1tLHRoaXMubG9jYXRpb25TdHJhdGVneT1fLHRoaXMuaHJlZj1udWxsLHRoaXMuY29tbWFuZHM9bnVsbCx0aGlzLm9uQ2hhbmdlcz1uZXcgd2UsdGhpcy5wcmVzZXJ2ZUZyYWdtZW50PSExLHRoaXMuc2tpcExvY2F0aW9uQ2hhbmdlPSExLHRoaXMucmVwbGFjZVVybD0hMTtjb25zdCBPPW0u''@;'; put 'put ''bmF0aXZlRWxlbWVudC50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO3RoaXMuaXNBbmNob3JFbGVtZW50PSJhIj09PU98fCJhcmVhIj09PU8sdGhpcy5pc0FuY2hvckVsZW1lbnQ/dGhpcy5zdWJzY3JpcHRpb249YS5ldmVudHMuc3Vic2NyaWJlKFg9PntYIGluc3RhbmNlb2YgaTQmJnRoaXMudXBk''@;'; put 'put ''YXRlSHJlZigpfSk6dGhpcy5zZXRUYWJJbmRleElmTm90T25OYXRpdmVFbCgiMCIpfXNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKGEpe251bGwhPXRoaXMudGFiSW5kZXhBdHRyaWJ1dGV8fHRoaXMuaXNBbmNob3JFbGVtZW50fHx0aGlzLmFwcGx5QXR0cmlidXRlVmFsdWUoInRhYmluZGV4''@;'; put 'put ''IixhKX1uZ09uQ2hhbmdlcyhhKXt0aGlzLmlzQW5jaG9yRWxlbWVudCYmdGhpcy51cGRhdGVIcmVmKCksdGhpcy5vbkNoYW5nZXMubmV4dCh0aGlzKX1zZXQgcm91dGVyTGluayhhKXtudWxsIT1hPyh0aGlzLmNvbW1hbmRzPUFycmF5LmlzQXJyYXkoYSk/YTpbYV0sdGhpcy5zZXRUYWJJbmRl''@;'; put 'put ''eElmTm90T25OYXRpdmVFbCgiMCIpKToodGhpcy5jb21tYW5kcz1udWxsLHRoaXMuc2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwobnVsbCkpfW9uQ2xpY2soYSxmLGQsaCxtKXtyZXR1cm4hIShudWxsPT09dGhpcy51cmxUcmVlfHx0aGlzLmlzQW5jaG9yRWxlbWVudCYmKDAhPT1hfHxmfHxk''@;'; put 'put ''fHxofHxtfHwic3RyaW5nIj09dHlwZW9mIHRoaXMudGFyZ2V0JiYiX3NlbGYiIT10aGlzLnRhcmdldCkpfHwodGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFRyZWUse3NraXBMb2NhdGlvbkNoYW5nZTp0aGlzLnNraXBMb2NhdGlvbkNoYW5nZSxyZXBsYWNlVXJsOnRoaXMucmVw''@;'; put 'put ''bGFjZVVybCxzdGF0ZTp0aGlzLnN0YXRlfSksIXRoaXMuaXNBbmNob3JFbGVtZW50KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfXVwZGF0ZUhyZWYoKXt0aGlzLmhyZWY9bnVsbCE9PXRoaXMudXJsVHJlZSYmdGhpcy5sb2NhdGlvblN0cmF0ZWd5P3Ro''@;'; put 'put ''aXMubG9jYXRpb25TdHJhdGVneT8ucHJlcGFyZUV4dGVybmFsVXJsKHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnVybFRyZWUpKTpudWxsO2NvbnN0IGE9bnVsbD09PXRoaXMuaHJlZj9udWxsOmZ1bmN0aW9uIFNBKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gaU4obCxjKXtyZXR1cm4i''@;'; put 'put ''c3JjIj09PWMmJigiZW1iZWQiPT09bHx8ImZyYW1lIj09PWx8fCJpZnJhbWUiPT09bHx8Im1lZGlhIj09PWx8fCJzY3JpcHQiPT09bCl8fCJocmVmIj09PWMmJigiYmFzZSI9PT1sfHwibGluayI9PT1sKT9DQTpWX30oYyxhKShsKX0odGhpcy5ocmVmLHRoaXMuZWwubmF0aXZlRWxlbWVudC50''@;'; put 'put ''YWdOYW1lLnRvTG93ZXJDYXNlKCksImhyZWYiKTt0aGlzLmFwcGx5QXR0cmlidXRlVmFsdWUoImhyZWYiLGEpfWFwcGx5QXR0cmlidXRlVmFsdWUoYSxmKXtjb25zdCBkPXRoaXMucmVuZGVyZXIsaD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7bnVsbCE9PWY/ZC5zZXRBdHRyaWJ1dGUoaCxhLGYp''@;'; put 'put ''OmQucmVtb3ZlQXR0cmlidXRlKGgsYSl9Z2V0IHVybFRyZWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuY29tbWFuZHM/bnVsbDp0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHRoaXMuY29tbWFuZHMse3JlbGF0aXZlVG86dm9pZCAwIT09dGhpcy5yZWxhdGl2ZVRvP3RoaXMucmVsYXRpdmVUbzp0''@;'; put 'put ''aGlzLnJvdXRlLHF1ZXJ5UGFyYW1zOnRoaXMucXVlcnlQYXJhbXMsZnJhZ21lbnQ6dGhpcy5mcmFnbWVudCxxdWVyeVBhcmFtc0hhbmRsaW5nOnRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyxwcmVzZXJ2ZUZyYWdtZW50OnRoaXMucHJlc2VydmVGcmFnbWVudH0pfX1yZXR1cm4gbC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChMYSkscnQodHUpLEltKCJ0YWJpbmRleCIpLHJ0KGpvKSxydChWaSkscnQoTWcpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwicm91dGVyTGluayIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpm''@;'; put 'put ''dW5jdGlvbihhLGYpezEmYSYmRXQoImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkNsaWNrKGguYnV0dG9uLGguY3RybEtleSxoLnNoaWZ0S2V5LGguYWx0S2V5LGgubWV0YUtleSl9KSwyJmEmJlJyKCJ0YXJnZXQiLGYudGFyZ2V0KX0saW5wdXRzOnt0YXJnZXQ6InRhcmdldCIscXVl''@;'; put 'put ''cnlQYXJhbXM6InF1ZXJ5UGFyYW1zIixmcmFnbWVudDoiZnJhZ21lbnQiLHF1ZXJ5UGFyYW1zSGFuZGxpbmc6InF1ZXJ5UGFyYW1zSGFuZGxpbmciLHN0YXRlOiJzdGF0ZSIscmVsYXRpdmVUbzoicmVsYXRpdmVUbyIscHJlc2VydmVGcmFnbWVudDpbInByZXNlcnZlRnJhZ21lbnQiLCJwcmVz''@;'; put 'put ''ZXJ2ZUZyYWdtZW50Iixfdl0sc2tpcExvY2F0aW9uQ2hhbmdlOlsic2tpcExvY2F0aW9uQ2hhbmdlIiwic2tpcExvY2F0aW9uQ2hhbmdlIixfdl0scmVwbGFjZVVybDpbInJlcGxhY2VVcmwiLCJyZXBsYWNlVXJsIixfdl0scm91dGVyTGluazoicm91dGVyTGluayJ9LHN0YW5kYWxvbmU6ITAs''@;'; put 'put ''ZmVhdHVyZXM6W0lULGJsXX0pLGx9KSgpLFRDPSgoKT0+e2NsYXNzIGx7Z2V0IGlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX2lzQWN0aXZlfWNvbnN0cnVjdG9yKGEsZixkLGgsbSl7dGhpcy5yb3V0ZXI9YSx0aGlzLmVsZW1lbnQ9Zix0aGlzLnJlbmRlcmVyPWQsdGhpcy5jZHI9aCx0aGlzLmxp''@;'; put 'put ''bms9bSx0aGlzLmNsYXNzZXM9W10sdGhpcy5faXNBY3RpdmU9ITEsdGhpcy5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucz17ZXhhY3Q6ITF9LHRoaXMuaXNBY3RpdmVDaGFuZ2U9bmV3IHhyLHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPWEuZXZlbnRzLnN1YnNjcmliZShfPT57XyBpbnN0''@;'; put 'put ''YW5jZW9mIGk0JiZ0aGlzLnVwZGF0ZSgpfSl9bmdBZnRlckNvbnRlbnRJbml0KCl7R2kodGhpcy5saW5rcy5jaGFuZ2VzLEdpKG51bGwpKS5waXBlKEZpKCkpLnN1YnNjcmliZShhPT57dGhpcy51cGRhdGUoKSx0aGlzLnN1YnNjcmliZVRvRWFjaExpbmtPbkNoYW5nZXMoKX0pfXN1YnNjcmli''@;'; put 'put ''ZVRvRWFjaExpbmtPbkNoYW5nZXMoKXt0aGlzLmxpbmtJbnB1dENoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7Y29uc3QgYT1bLi4udGhpcy5saW5rcy50b0FycmF5KCksdGhpcy5saW5rXS5maWx0ZXIoZj0+ISFmKS5tYXAoZj0+Zi5vbkNoYW5nZXMpO3RoaXMubGlua0lucHV0''@;'; put 'put ''Q2hhbmdlc1N1YnNjcmlwdGlvbj1ubChhKS5waXBlKEZpKCkpLnN1YnNjcmliZShmPT57dGhpcy5faXNBY3RpdmUhPT10aGlzLmlzTGlua0FjdGl2ZSh0aGlzLnJvdXRlcikoZikmJnRoaXMudXBkYXRlKCl9KX1zZXQgcm91dGVyTGlua0FjdGl2ZShhKXtjb25zdCBmPUFycmF5LmlzQXJyYXko''@;'; put 'put ''YSk/YTphLnNwbGl0KCIgIik7dGhpcy5jbGFzc2VzPWYuZmlsdGVyKGQ9PiEhZCl9bmdPbkNoYW5nZXMoYSl7dGhpcy51cGRhdGUoKX1uZ09uRGVzdHJveSgpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5saW5rSW5wdXRDaGFuZ2VzU3Vic2NyaXB0''@;'; put 'put ''aW9uPy51bnN1YnNjcmliZSgpfXVwZGF0ZSgpeyF0aGlzLmxpbmtzfHwhdGhpcy5yb3V0ZXIubmF2aWdhdGVkfHxxdWV1ZU1pY3JvdGFzaygoKT0+e2NvbnN0IGE9dGhpcy5oYXNBY3RpdmVMaW5rcygpO3RoaXMuX2lzQWN0aXZlIT09YSYmKHRoaXMuX2lzQWN0aXZlPWEsdGhpcy5jZHIubWFy''@;'; put 'put ''a0ZvckNoZWNrKCksdGhpcy5jbGFzc2VzLmZvckVhY2goZj0+e2E/dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxmKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LGYpfSksYSYmdm9pZCAwIT09dGhp''@;'; put 'put ''cy5hcmlhQ3VycmVudFdoZW5BY3RpdmU/dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsImFyaWEtY3VycmVudCIsdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUudG9TdHJpbmcoKSk6dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhp''@;'; put 'put ''cy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsImFyaWEtY3VycmVudCIpLHRoaXMuaXNBY3RpdmVDaGFuZ2UuZW1pdChhKSl9KX1pc0xpbmtBY3RpdmUoYSl7Y29uc3QgZj1mdW5jdGlvbiBMd2UobCl7cmV0dXJuISFsLnBhdGhzfSh0aGlzLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zKT90aGlzLnJv''@;'; put 'put ''dXRlckxpbmtBY3RpdmVPcHRpb25zOnRoaXMucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMuZXhhY3R8fCExO3JldHVybiBkPT4hIWQudXJsVHJlZSYmYS5pc0FjdGl2ZShkLnVybFRyZWUsZil9aGFzQWN0aXZlTGlua3MoKXtjb25zdCBhPXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKTty''@;'; put 'put ''ZXR1cm4gdGhpcy5saW5rJiZhKHRoaXMubGluayl8fHRoaXMubGlua3Muc29tZShhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoTGEpLHJ0KFZpKSxydChqbykscnQoVWwpLHJ0KEkwLDgpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siIiwicm91dGVyTGlua0FjdGl2ZSIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLEkwLDUpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYubGlua3M9aCl9fSxpbnB1dHM6e3JvdXRlckxpbmtBY3RpdmVPcHRpb25zOiJyb3V0ZXJMaW5r''@;'; put 'put ''QWN0aXZlT3B0aW9ucyIsYXJpYUN1cnJlbnRXaGVuQWN0aXZlOiJhcmlhQ3VycmVudFdoZW5BY3RpdmUiLHJvdXRlckxpbmtBY3RpdmU6InJvdXRlckxpbmtBY3RpdmUifSxvdXRwdXRzOntpc0FjdGl2ZUNoYW5nZToiaXNBY3RpdmVDaGFuZ2UifSxleHBvcnRBczpbInJvdXRlckxpbmtBY3Rp''@;'; put 'put ''dmUiXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltibF19KSxsfSkoKTtjbGFzcyBKcmV7fWxldCBQd2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMucm91dGVyPWEsdGhpcy5pbmplY3Rvcj1kLHRoaXMucHJlbG9hZGluZ1N0cmF0ZWd5PWgsdGhpcy5sb2FkZXI9''@;'; put 'put ''bX1zZXRVcFByZWxvYWRpbmcoKXt0aGlzLnN1YnNjcmlwdGlvbj10aGlzLnJvdXRlci5ldmVudHMucGlwZShJbChhPT5hIGluc3RhbmNlb2YgaTQpLFN2KCgpPT50aGlzLnByZWxvYWQoKSkpLnN1YnNjcmliZSgoKT0+e30pfXByZWxvYWQoKXtyZXR1cm4gdGhpcy5wcm9jZXNzUm91dGVzKHRo''@;'; put 'put ''aXMuaW5qZWN0b3IsdGhpcy5yb3V0ZXIuY29uZmlnKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXByb2Nlc3NSb3V0ZXMoYSxmKXtjb25zdCBkPVtdO2Zvcihjb25zdCBoIG9mIGYpe2gucHJvdmlkZXJzJiYhaC5faW5q''@;'; put 'put ''ZWN0b3ImJihoLl9pbmplY3Rvcj15QihoLnByb3ZpZGVycyxhLGBSb3V0ZTogJHtoLnBhdGh9YCkpO2NvbnN0IG09aC5faW5qZWN0b3I/P2EsXz1oLl9sb2FkZWRJbmplY3Rvcj8/bTsoaC5sb2FkQ2hpbGRyZW4mJiFoLl9sb2FkZWRSb3V0ZXMmJnZvaWQgMD09PWguY2FuTG9hZHx8aC5sb2Fk''@;'; put 'put ''Q29tcG9uZW50JiYhaC5fbG9hZGVkQ29tcG9uZW50KSYmZC5wdXNoKHRoaXMucHJlbG9hZENvbmZpZyhtLGgpKSwoaC5jaGlsZHJlbnx8aC5fbG9hZGVkUm91dGVzKSYmZC5wdXNoKHRoaXMucHJvY2Vzc1JvdXRlcyhfLGguY2hpbGRyZW4/P2guX2xvYWRlZFJvdXRlcykpfXJldHVybiBubChk''@;'; put 'put ''KS5waXBlKEZpKCkpfXByZWxvYWRDb25maWcoYSxmKXtyZXR1cm4gdGhpcy5wcmVsb2FkaW5nU3RyYXRlZ3kucHJlbG9hZChmLCgpPT57bGV0IGQ7ZD1mLmxvYWRDaGlsZHJlbiYmdm9pZCAwPT09Zi5jYW5Mb2FkP3RoaXMubG9hZGVyLmxvYWRDaGlsZHJlbihhLGYpOkdpKG51bGwpO2NvbnN0''@;'; put 'put ''IGg9ZC5waXBlKF9yKG09Pm51bGw9PT1tP0dpKHZvaWQgMCk6KGYuX2xvYWRlZFJvdXRlcz1tLnJvdXRlcyxmLl9sb2FkZWRJbmplY3Rvcj1tLmluamVjdG9yLHRoaXMucHJvY2Vzc1JvdXRlcyhtLmluamVjdG9yPz9hLG0ucm91dGVzKSkpKTtyZXR1cm4gZi5sb2FkQ29tcG9uZW50JiYhZi5f''@;'; put 'put ''bG9hZGVkQ29tcG9uZW50P25sKFtoLHRoaXMubG9hZGVyLmxvYWRDb21wb25lbnQoZildKS5waXBlKEZpKCkpOmh9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoTGEpLHNyKEN0ZSksc3IodTEpLHNyKEpyZSksc3IoR2opKX0sbC5cdTAyNzVw''@;'; put 'put ''cm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtjb25zdCAkaj1uZXcgTWkoIiIpO2xldCBRcmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG09e30pe3RoaXMudXJsU2VyaWFsaXplcj1hLHRoaXMudHJhbnNpdGlv''@;'; put 'put ''bnM9Zix0aGlzLnZpZXdwb3J0U2Nyb2xsZXI9ZCx0aGlzLnpvbmU9aCx0aGlzLm9wdGlvbnM9bSx0aGlzLmxhc3RJZD0wLHRoaXMubGFzdFNvdXJjZT0iaW1wZXJhdGl2ZSIsdGhpcy5yZXN0b3JlZElkPTAsdGhpcy5zdG9yZT17fSxtLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb249bS5zY3Jv''@;'; put 'put ''bGxQb3NpdGlvblJlc3RvcmF0aW9ufHwiZGlzYWJsZWQiLG0uYW5jaG9yU2Nyb2xsaW5nPW0uYW5jaG9yU2Nyb2xsaW5nfHwiZGlzYWJsZWQifWluaXQoKXsiZGlzYWJsZWQiIT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnRoaXMudmlld3BvcnRTY3JvbGxlci5z''@;'; put 'put ''ZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24oIm1hbnVhbCIpLHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPXRoaXMuY3JlYXRlU2Nyb2xsRXZlbnRzKCksdGhpcy5zY3JvbGxFdmVudHNTdWJzY3JpcHRpb249dGhpcy5jb25zdW1lU2Nyb2xsRXZlbnRzKCl9Y3JlYXRlU2Nyb2xsRXZl''@;'; put 'put ''bnRzKCl7cmV0dXJuIHRoaXMudHJhbnNpdGlvbnMuZXZlbnRzLnN1YnNjcmliZShhPT57YSBpbnN0YW5jZW9mIFBqPyh0aGlzLnN0b3JlW3RoaXMubGFzdElkXT10aGlzLnZpZXdwb3J0U2Nyb2xsZXIuZ2V0U2Nyb2xsUG9zaXRpb24oKSx0aGlzLmxhc3RTb3VyY2U9YS5uYXZpZ2F0aW9uVHJp''@;'; put 'put ''Z2dlcix0aGlzLnJlc3RvcmVkSWQ9YS5yZXN0b3JlZFN0YXRlP2EucmVzdG9yZWRTdGF0ZS5uYXZpZ2F0aW9uSWQ6MCk6YSBpbnN0YW5jZW9mIGk0Pyh0aGlzLmxhc3RJZD1hLmlkLHRoaXMuc2NoZWR1bGVTY3JvbGxFdmVudChhLHRoaXMudXJsU2VyaWFsaXplci5wYXJzZShhLnVybEFmdGVy''@;'; put 'put ''UmVkaXJlY3RzKS5mcmFnbWVudCkpOmEgaW5zdGFuY2VvZiB3QyYmMD09PWEuY29kZSYmKHRoaXMubGFzdFNvdXJjZT12b2lkIDAsdGhpcy5yZXN0b3JlZElkPTAsdGhpcy5zY2hlZHVsZVNjcm9sbEV2ZW50KGEsdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKGEudXJsKS5mcmFnbWVudCkpfSl9''@;'; put 'put ''Y29uc3VtZVNjcm9sbEV2ZW50cygpe3JldHVybiB0aGlzLnRyYW5zaXRpb25zLmV2ZW50cy5zdWJzY3JpYmUoYT0+e2EgaW5zdGFuY2VvZiBrcmUmJihhLnBvc2l0aW9uPyJ0b3AiPT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24/dGhpcy52aWV3cG9ydFNjcm9sbGVy''@;'; put 'put ''LnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pOiJlbmFibGVkIj09PXRoaXMub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihhLnBvc2l0aW9uKTphLmFuY2hvciYmImVuYWJsZWQiPT09dGhpcy5vcHRpb25zLmFu''@;'; put 'put ''Y2hvclNjcm9sbGluZz90aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9BbmNob3IoYS5hbmNob3IpOiJkaXNhYmxlZCIhPT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pKX0pfXNj''@;'; put 'put ''aGVkdWxlU2Nyb2xsRXZlbnQoYSxmKXt0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy56b25lLnJ1bigoKT0+e3RoaXMudHJhbnNpdGlvbnMuZXZlbnRzLm5leHQobmV3IGtyZShhLCJwb3BzdGF0ZSI9PT10aGlzLmxhc3RTb3VyY2U/dGhpcy5z''@;'; put 'put ''dG9yZVt0aGlzLnJlc3RvcmVkSWRdOm51bGwsZikpfSl9LDApfSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSx0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGEpeyFmdW5jdGlvbiBuVCgpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCIpfSgpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2Z1bmN0aW9uICQyKGwsYyl7cmV0dXJue1x1MDI3NWtpbmQ6bCxcdTAyNzVwcm92aWRlcnM6Y319''@;'; put 'put ''ZnVuY3Rpb24gdGllKCl7Y29uc3QgbD1IaShBbCk7cmV0dXJuIGM9Pntjb25zdCBhPWwuZ2V0KENnKTtpZihjIT09YS5jb21wb25lbnRzWzBdKXJldHVybjtjb25zdCBmPWwuZ2V0KExhKSxkPWwuZ2V0KG5pZSk7MT09PWwuZ2V0KEtqKSYmZi5pbml0aWFsTmF2aWdhdGlvbigpLGwuZ2V0KHJp''@;'; put 'put ''ZSxudWxsLGFhLk9wdGlvbmFsKT8uc2V0VXBQcmVsb2FkaW5nKCksbC5nZXQoJGosbnVsbCxhYS5PcHRpb25hbCk/LmluaXQoKSxmLnJlc2V0Um9vdENvbXBvbmVudFR5cGUoYS5jb21wb25lbnRUeXBlc1swXSksZC5jbG9zZWR8fChkLm5leHQoKSxkLmNvbXBsZXRlKCksZC51bnN1YnNjcmli''@;'; put 'put ''ZSgpKX19Y29uc3QgbmllPW5ldyBNaSgiIix7ZmFjdG9yeTooKT0+bmV3IHdlfSksS2o9bmV3IE1pKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4xfSkscmllPW5ldyBNaSgiIik7ZnVuY3Rpb24gVndlKGwpe3JldHVybiAkMigwLFt7cHJvdmlkZTpyaWUsdXNlRXhpc3Rpbmc6''@;'; put 'put ''UHdlfSx7cHJvdmlkZTpKcmUsdXNlRXhpc3Rpbmc6bH1dKX1jb25zdCBpaWU9bmV3IE1pKCJST1VURVJfRk9SUk9PVF9HVUFSRCIpLGp3ZT1bZ2Qse3Byb3ZpZGU6Z0MsdXNlQ2xhc3M6T2p9LExhLENDLHtwcm92aWRlOnR1LHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZWllKGwpe3JldHVybiBsLnJv''@;'; put 'put ''dXRlclN0YXRlLnJvb3R9LGRlcHM6W0xhXX0sR2osW11dO2Z1bmN0aW9uIHp3ZSgpe3JldHVybiBuZXcgUnRlKCJSb3V0ZXIiLExhKX1sZXQgbzQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt9c3RhdGljIGZvclJvb3QoYSxmKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6W2p3''@;'; put 'put ''ZSxbXSx7cHJvdmlkZTpEdixtdWx0aTohMCx1c2VWYWx1ZTphfSx7cHJvdmlkZTppaWUsdXNlRmFjdG9yeTpXd2UsZGVwczpbW0xhLG5ldyBjaCxuZXcgRTBdXX0se3Byb3ZpZGU6Y0QsdXNlVmFsdWU6Znx8e319LGY/LnVzZUhhc2g/e3Byb3ZpZGU6TWcsdXNlQ2xhc3M6YzllfTp7cHJvdmlk''@;'; put 'put ''ZTpNZyx1c2VDbGFzczpsbmV9LHtwcm92aWRlOiRqLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCBsPUhpKE15ZSksYz1IaShVbyksYT1IaShjRCksZj1IaSh1RCksZD1IaShnQyk7cmV0dXJuIGEuc2Nyb2xsT2Zmc2V0JiZsLnNldE9mZnNldChhLnNjcm9sbE9mZnNldCksbmV3IFFyZShkLGYsbCxj''@;'; put 'put ''LGEpfX0sZj8ucHJlbG9hZGluZ1N0cmF0ZWd5P1Z3ZShmLnByZWxvYWRpbmdTdHJhdGVneSkuXHUwMjc1cHJvdmlkZXJzOltdLHtwcm92aWRlOlJ0ZSxtdWx0aTohMCx1c2VGYWN0b3J5Onp3ZX0sZj8uaW5pdGlhbE5hdmlnYXRpb24/R3dlKGYpOltdLGY/LmJpbmRUb0NvbXBvbmVudElucHV0''@;'; put 'put ''cz8kMig4LFtJcmUse3Byb3ZpZGU6aUQsdXNlRXhpc3Rpbmc6SXJlfV0pLlx1MDI3NXByb3ZpZGVyczpbXSxbe3Byb3ZpZGU6b2llLHVzZUZhY3Rvcnk6dGllfSx7cHJvdmlkZTp6QixtdWx0aTohMCx1c2VFeGlzdGluZzpvaWV9XV19fXN0YXRpYyBmb3JDaGlsZChhKXtyZXR1cm57bmdNb2R1''@;'; put 'put ''bGU6bCxwcm92aWRlcnM6W3twcm92aWRlOkR2LG11bHRpOiEwLHVzZVZhbHVlOmF9XX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKGlpZSw4KSl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7fSksbH0pKCk7ZnVu''@;'; put 'put ''Y3Rpb24gV3dlKGwpe3JldHVybiJndWFyZGVkIn1mdW5jdGlvbiBHd2UobCl7cmV0dXJuWyJkaXNhYmxlZCI9PT1sLmluaXRpYWxOYXZpZ2F0aW9uPyQyKDMsW3twcm92aWRlOkxCLG11bHRpOiEwLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCBjPUhpKExhKTtyZXR1cm4oKT0+e2Muc2V0VXBMb2Nh''@;'; put 'put ''dGlvbkNoYW5nZUxpc3RlbmVyKCl9fX0se3Byb3ZpZGU6S2osdXNlVmFsdWU6Mn1dKS5cdTAyNzVwcm92aWRlcnM6W10sImVuYWJsZWRCbG9ja2luZyI9PT1sLmluaXRpYWxOYXZpZ2F0aW9uPyQyKDIsW3twcm92aWRlOktqLHVzZVZhbHVlOjB9LHtwcm92aWRlOkxCLG11bHRpOiEwLGRlcHM6''@;'; put 'put ''W0FsXSx1c2VGYWN0b3J5OmM9Pntjb25zdCBhPWMuZ2V0KHM5ZSxQcm9taXNlLnJlc29sdmUoKSk7cmV0dXJuKCk9PmEudGhlbigoKT0+bmV3IFByb21pc2UoZj0+e2NvbnN0IGQ9Yy5nZXQoTGEpLGg9Yy5nZXQobmllKTtYcmUoZCwoKT0+e2YoITApfSksYy5nZXQodUQpLmFmdGVyUHJlYWN0''@;'; put 'put ''aXZhdGlvbj0oKT0+KGYoITApLGguY2xvc2VkP0dpKHZvaWQgMCk6aCksZC5pbml0aWFsTmF2aWdhdGlvbigpfSkpfX1dKS5cdTAyNzVwcm92aWRlcnM6W11dfWNvbnN0IG9pZT1uZXcgTWkoIiIpO3ZhciBhaWU9VCgzNjA3MiksS3dlPVQoNjYzMDQpO2NvbnN0IHFqPXt1c2Vyc19hbGxvd2Vk''@;'; put 'put ''OjEsdmlld2VyX3Jvd3NfYWxsb3dlZDoxNSxlZGl0b3Jfcm93c19hbGxvd2VkOjE1LHN0YWdlX3Jvd3NfYWxsb3dlZDoxLzAsaGlzdG9yeV9yb3dzX2FsbG93ZWQ6MTUsc3VibWl0X3Jvd3NfbGltaXQ6NSx2aWV3Ym94X2xpbWl0OjEsbGluZWFnZV9kYWlseV9saW1pdDozLHRhYmxlc19pbl9s''@;'; put 'put ''aWJyYXJ5X2xpbWl0OjM1LHZpZXdib3g6ITAsZmlsZVVwbG9hZDohMCxlZGl0UmVjb3JkOiEwLGFkZFJlY29yZDohMH07dmFyIGcxPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wudmlld2VyX3Jvd3NfYWxsb3dlZD0wXT0idmlld2VyX3Jvd3NfYWxsb3dlZCIsbFtsLmVkaXRvcl9yb3dzX2FsbG93''@;'; put 'put ''ZWQ9MV09ImVkaXRvcl9yb3dzX2FsbG93ZWQiLGxbbC5zdGFnZV9yb3dzX2FsbG93ZWQ9Ml09InN0YWdlX3Jvd3NfYWxsb3dlZCIsbFtsLmhpc3Rvcnlfcm93c19hbGxvd2VkPTNdPSJoaXN0b3J5X3Jvd3NfYWxsb3dlZCIsbFtsLnN1Ym1pdF9yb3dzX2xpbWl0PTRdPSJzdWJtaXRfcm93c19s''@;'; put 'put ''aW1pdCIsbFtsLnRhYmxlc19pbl9saWJyYXJ5X2xpbWl0PTVdPSJ0YWJsZXNfaW5fbGlicmFyeV9saW1pdCIsbFtsLnZpZXdib3g9Nl09InZpZXdib3giLGxbbC52aWV3Ym94X2xpbWl0PTddPSJ2aWV3Ym94X2xpbWl0IixsW2wubGluZWFnZV9kYWlseV9saW1pdD04XT0ibGluZWFnZV9kYWls''@;'; put 'put ''eV9saW1pdCIsbFtsLmZpbGVVcGxvYWQ9OV09ImZpbGVVcGxvYWQiLGxbbC5lZGl0UmVjb3JkPTEwXT0iZWRpdFJlY29yZCIsbFtsLmFkZFJlY29yZD0xMV09ImFkZFJlY29yZCIsbH0oZzF8fHt9KSx2MT1UKDU2MzIxKSxsaWU9VC5uKHYxKSxYdT1UKDc2NzcxKTtsZXQgSXY9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHtjb25zdHJ1Y3Rvcigpe31zZXREY0FkYXB0ZXJTZXR0aW5ncyhhKXt0aGlzLmRjQWRhcHRlclNldHRpbmdzPWF9Z2V0RGNBZGFwdGVyU2V0dGluZ3MoKXtyZXR1cm4gdGhpcy5kY0FkYXB0ZXJTZXR0aW5nc319cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksWGo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMudXNlckNoYW5nZT1uZXcgd2V9c2V0IHVzZXIoYSl7dGhpcy5fdXNlcj1hLHRoaXMudXNl''@;'; put 'put ''ckNoYW5nZS5uZXh0KGEpfWdldCB1c2VyKCl7cmV0dXJuIHRoaXMuX3VzZXJ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLEpqPSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''Y29uc3RydWN0b3IoKXt0aGlzLmFsZXJ0cz1uZXcgd2V9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLFJzPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3Io''@;'; put 'put ''YSl7dGhpcy5hbGVydHNTZXJ2aWNlPWEsdGhpcy5vblNpZGViYXJUb2dnbGU9bmV3IHhyLHRoaXMub25TdGFydHVwRGF0YUxvYWRlZD1uZXcgeHIsdGhpcy5vblNob3dBYm9ydE1vZGFsPW5ldyB4cix0aGlzLm9uUmVxdWVzdHNNb2RhbE9wZW49bmV3IHhyLHRoaXMub25EZW1vTGltaXRNb2Rh''@;'; put 'put ''bFNob3c9bmV3IHhyLHRoaXMudmlld0xhc3RVcmw9bnVsbCx0aGlzLnNpZGViYXJDbG9zZUxpbWl0PTEyODB9c2hvd0RlbW9MaW1pdE1vZGFsKGEpe3RoaXMub25EZW1vTGltaXRNb2RhbFNob3cuZW1pdChhKX1zaG93SW5mb01vZGFsKGE9IkluZm8iLGYpe3RoaXMub25TaG93QWJvcnRNb2Rh''@;'; put 'put ''bC5lbWl0KHttb2RhbFRpdGxlOmEsbWVzc2FnZTpmLHNhc1NlcnZpY2U6IiIsZGV0YWlsczpudWxsfSl9c2hvd0Fib3J0TW9kYWwoYSxmLGQsaD12b2lkIDApe2R8fChkPW51bGwpO2xldCBtPXtzYXNTZXJ2aWNlOmEsbWVzc2FnZTpmLGRldGFpbHM6ZH07aCYmKG0ubW9kYWxUaXRsZT1oKSx0''@;'; put 'put ''aGlzLm9uU2hvd0Fib3J0TW9kYWwuZW1pdChtKX1vcGVuUmVxdWVzdHNNb2RhbCgpe3RoaXMub25SZXF1ZXN0c01vZGFsT3Blbi5lbWl0KCEwKX1jYXRjaFJlc3BvbnNlRXJyb3IoYSxmKXtsZXQgZD0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCI7aWYoZi5lcnJvcil7bGV0IGg7ZD1mLmVy''@;'; put 'put ''cm9yLm1lc3NhZ2UsZi5lcnJvci5kZXRhaWxzJiZmLmVycm9yLmRldGFpbHMubG9nJiYoaD1mLmVycm9yLmRldGFpbHMubG9nKSwoIWR8fGQudHJpbSgpLmxlbmd0aDwxKSYmKGQ9IlNBUyBTZXJ2aWNlIGVycm9yIG9jdXJyZWQiKSx0aGlzLnNob3dBYm9ydE1vZGFsKGEsZCx7TE9HOmh9LCJS''@;'; put 'put ''ZXF1ZXN0IGVycm9yIil9ZWxzZSB0aGlzLnNob3dBYm9ydE1vZGFsKGEsZCl9dG9nZ2xlU2lkZWJhcigpe3RoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoKX1jbG9zZVNpZGViYXIoKXt3aW5kb3cuaW5uZXJXaWR0aDx0aGlzLnNpZGViYXJDbG9zZUxpbWl0JiZ0aGlzLm9uU2lkZWJhclRvZ2ds''@;'; put 'put ''ZS5lbWl0KHtvcGVuOiExfSl9b3BlblNpZGViYXIoKXt0aGlzLm9uU2lkZWJhclRvZ2dsZS5lbWl0KHtvcGVuOiEwfSl9c3RhcnR1cERhdGFMb2FkZWQoKXt0aGlzLm9uU3RhcnR1cERhdGFMb2FkZWQuZW1pdCgpfWRpc3BhdGNoRXZlbnQoYSl7bGV0IGY7ImZ1bmN0aW9uIj09dHlwZW9mIEV2''@;'; put 'put ''ZW50P2Y9bmV3IEV2ZW50KGEpOihmPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLGYuaW5pdEV2ZW50KGEsITAsITApKSx3aW5kb3cuZGlzcGF0Y2hFdmVudChmKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoSmopKX0sbC5cdTAyNzVw''@;'; put 'put ''cm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtjbGFzcyBmRHt9Y2xhc3MgZER7fWNsYXNzIEVoe2NvbnN0cnVjdG9yKGMpe3RoaXMubm9ybWFsaXplZE5hbWVzPW5ldyBNYXAsdGhpcy5sYXp5VXBkYXRlPW51bGwsYz8ic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGM/dGhpcy5sYXp5SW5pdD0oKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLGMuc3BsaXQoIlxuIikuZm9yRWFjaChhPT57Y29uc3QgZj1hLmluZGV4T2YoIjoiKTtpZihmPjApe2NvbnN0IGQ9YS5zbGljZSgwLGYpLGg9ZC50b0xvd2VyQ2FzZSgpLG09YS5zbGljZShmKzEpLnRy''@;'; put 'put ''aW0oKTt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZCxoKSx0aGlzLmhlYWRlcnMuaGFzKGgpP3RoaXMuaGVhZGVycy5nZXQoaCkucHVzaChtKTp0aGlzLmhlYWRlcnMuc2V0KGgsW21dKX19KX06dHlwZW9mIEhlYWRlcnM8InUiJiZjIGluc3RhbmNlb2YgSGVhZGVycz8odGhpcy5oZWFk''@;'; put 'put ''ZXJzPW5ldyBNYXAsYy5mb3JFYWNoKChhLGYpPT57dGhpcy5zZXRIZWFkZXJFbnRyaWVzKGYsYSl9KSk6dGhpcy5sYXp5SW5pdD0oKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLE9iamVjdC5lbnRyaWVzKGMpLmZvckVhY2goKFthLGZdKT0+e3RoaXMuc2V0SGVhZGVyRW50cmllcyhhLGYpfSl9''@;'; put 'put ''OnRoaXMuaGVhZGVycz1uZXcgTWFwfWhhcyhjKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmhhcyhjLnRvTG93ZXJDYXNlKCkpfWdldChjKXt0aGlzLmluaXQoKTtjb25zdCBhPXRoaXMuaGVhZGVycy5nZXQoYy50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYSYmYS5sZW5ndGg+MD9h''@;'; put 'put ''WzBdOm51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKX1nZXRBbGwoYyl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5nZXQoYy50b0xvd2VyQ2FzZSgpKXx8bnVsbH1hcHBlbmQoYyxhKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jbG9uZSh7bmFtZTpjLHZhbHVlOmEsb3A6ImEifSl9c2V0KGMsYSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6Yyx2YWx1ZTphLG9wOiJzIn0pfWRlbGV0ZShjLGEpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOmMsdmFsdWU6YSxvcDoiZCJ9KX1tYXliZVNldE5vcm1hbGl6ZWROYW1l''@;'; put 'put ''KGMsYSl7dGhpcy5ub3JtYWxpemVkTmFtZXMuaGFzKGEpfHx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoYSxjKX1pbml0KCl7dGhpcy5sYXp5SW5pdCYmKHRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiBFaD90aGlzLmNvcHlGcm9tKHRoaXMubGF6eUluaXQpOnRoaXMubGF6eUluaXQoKSx0aGlz''@;'; put 'put ''LmxhenlJbml0PW51bGwsdGhpcy5sYXp5VXBkYXRlJiYodGhpcy5sYXp5VXBkYXRlLmZvckVhY2goYz0+dGhpcy5hcHBseVVwZGF0ZShjKSksdGhpcy5sYXp5VXBkYXRlPW51bGwpKX1jb3B5RnJvbShjKXtjLmluaXQoKSxBcnJheS5mcm9tKGMuaGVhZGVycy5rZXlzKCkpLmZvckVhY2goYT0+''@;'; put 'put ''e3RoaXMuaGVhZGVycy5zZXQoYSxjLmhlYWRlcnMuZ2V0KGEpKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5zZXQoYSxjLm5vcm1hbGl6ZWROYW1lcy5nZXQoYSkpfSl9Y2xvbmUoYyl7Y29uc3QgYT1uZXcgRWg7cmV0dXJuIGEubGF6eUluaXQ9dGhpcy5sYXp5SW5pdCYmdGhpcy5sYXp5SW5pdCBp''@;'; put 'put ''bnN0YW5jZW9mIEVoP3RoaXMubGF6eUluaXQ6dGhpcyxhLmxhenlVcGRhdGU9KHRoaXMubGF6eVVwZGF0ZXx8W10pLmNvbmNhdChbY10pLGF9YXBwbHlVcGRhdGUoYyl7Y29uc3QgYT1jLm5hbWUudG9Mb3dlckNhc2UoKTtzd2l0Y2goYy5vcCl7Y2FzZSJhIjpjYXNlInMiOmxldCBmPWMudmFs''@;'; put 'put ''dWU7aWYoInN0cmluZyI9PXR5cGVvZiBmJiYoZj1bZl0pLDA9PT1mLmxlbmd0aClyZXR1cm47dGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKGMubmFtZSxhKTtjb25zdCBkPSgiYSI9PT1jLm9wP3RoaXMuaGVhZGVycy5nZXQoYSk6dm9pZCAwKXx8W107ZC5wdXNoKC4uLmYpLHRoaXMuaGVh''@;'; put 'put ''ZGVycy5zZXQoYSxkKTticmVhaztjYXNlImQiOmNvbnN0IGg9Yy52YWx1ZTtpZihoKXtsZXQgbT10aGlzLmhlYWRlcnMuZ2V0KGEpO2lmKCFtKXJldHVybjttPW0uZmlsdGVyKF89Pi0xPT09aC5pbmRleE9mKF8pKSwwPT09bS5sZW5ndGg/KHRoaXMuaGVhZGVycy5kZWxldGUoYSksdGhpcy5u''@;'; put 'put ''b3JtYWxpemVkTmFtZXMuZGVsZXRlKGEpKTp0aGlzLmhlYWRlcnMuc2V0KGEsbSl9ZWxzZSB0aGlzLmhlYWRlcnMuZGVsZXRlKGEpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShhKX19c2V0SGVhZGVyRW50cmllcyhjLGEpe2NvbnN0IGY9KEFycmF5LmlzQXJyYXkoYSk/YTpbYV0pLm1h''@;'; put 'put ''cChoPT5oLnRvU3RyaW5nKCkpLGQ9Yy50b0xvd2VyQ2FzZSgpO3RoaXMuaGVhZGVycy5zZXQoZCxmKSx0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoYyxkKX1mb3JFYWNoKGMpe3RoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5ub3JtYWxpemVkTmFtZXMua2V5cygpKS5mb3JFYWNoKGE9''@;'; put 'put ''PmModGhpcy5ub3JtYWxpemVkTmFtZXMuZ2V0KGEpLHRoaXMuaGVhZGVycy5nZXQoYSkpKX19Y2xhc3MgcXdle2VuY29kZUtleShjKXtyZXR1cm4gc2llKGMpfWVuY29kZVZhbHVlKGMpe3JldHVybiBzaWUoYyl9ZGVjb2RlS2V5KGMpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYyl9ZGVj''@;'; put 'put ''b2RlVmFsdWUoYyl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjKX19Y29uc3QgSndlPS8lKFxkW2EtZjAtOV0pL2dpLFF3ZT17NDA6IkAiLCIzQSI6IjoiLDI0OiIkIiwiMkMiOiIsIiwiM0IiOiI7IiwiM0QiOiI9IiwiM0YiOiI/IiwiMkYiOiIvIn07ZnVuY3Rpb24gc2llKGwpe3JldHVy''@;'; put 'put ''biBlbmNvZGVVUklDb21wb25lbnQobCkucmVwbGFjZShKd2UsKGMsYSk9PlF3ZVthXT8/Yyl9ZnVuY3Rpb24gaEQobCl7cmV0dXJuYCR7bH1gfWNsYXNzIGE0e2NvbnN0cnVjdG9yKGM9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPWMu''@;'; put 'put ''ZW5jb2Rlcnx8bmV3IHF3ZSxjLmZyb21TdHJpbmcpe2lmKGMuZnJvbU9iamVjdCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGJvdGggZnJvbVN0cmluZyBhbmQgZnJvbU9iamVjdC4iKTt0aGlzLm1hcD1mdW5jdGlvbiBYd2UobCxjKXtjb25zdCBhPW5ldyBNYXA7cmV0dXJuIGwu''@;'; put 'put ''bGVuZ3RoPjAmJmwucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKGQ9Pntjb25zdCBoPWQuaW5kZXhPZigiPSIpLFttLF9dPS0xPT1oP1tjLmRlY29kZUtleShkKSwiIl06W2MuZGVjb2RlS2V5KGQuc2xpY2UoMCxoKSksYy5kZWNvZGVWYWx1ZShkLnNsaWNlKGgrMSkpXSxP''@;'; put 'put ''PWEuZ2V0KG0pfHxbXTtPLnB1c2goXyksYS5zZXQobSxPKX0pLGF9KGMuZnJvbVN0cmluZyx0aGlzLmVuY29kZXIpfWVsc2UgYy5mcm9tT2JqZWN0Pyh0aGlzLm1hcD1uZXcgTWFwLE9iamVjdC5rZXlzKGMuZnJvbU9iamVjdCkuZm9yRWFjaChhPT57Y29uc3QgZj1jLmZyb21PYmplY3RbYV0s''@;'; put 'put ''ZD1BcnJheS5pc0FycmF5KGYpP2YubWFwKGhEKTpbaEQoZildO3RoaXMubWFwLnNldChhLGQpfSkpOnRoaXMubWFwPW51bGx9aGFzKGMpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLm1hcC5oYXMoYyl9Z2V0KGMpe3RoaXMuaW5pdCgpO2NvbnN0IGE9dGhpcy5tYXAuZ2V0KGMpO3JldHVybiBh''@;'; put 'put ''P2FbMF06bnVsbH1nZXRBbGwoYyl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmdldChjKXx8bnVsbH1rZXlzKCl7cmV0dXJuIHRoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5tYXAua2V5cygpKX1hcHBlbmQoYyxhKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06Yyx2YWx1ZTphLG9w''@;'; put 'put ''OiJhIn0pfWFwcGVuZEFsbChjKXtjb25zdCBhPVtdO3JldHVybiBPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGY9Pntjb25zdCBkPWNbZl07QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goaD0+e2EucHVzaCh7cGFyYW06Zix2YWx1ZTpoLG9wOiJhIn0pfSk6YS5wdXNoKHtwYXJhbTpmLHZhbHVl''@;'; put 'put ''OmQsb3A6ImEifSl9KSx0aGlzLmNsb25lKGEpfXNldChjLGEpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTpjLHZhbHVlOmEsb3A6InMifSl9ZGVsZXRlKGMsYSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOmMsdmFsdWU6YSxvcDoiZCJ9KX10b1N0cmluZygpe3JldHVybiB0aGlzLmluaXQo''@;'; put 'put ''KSx0aGlzLmtleXMoKS5tYXAoYz0+e2NvbnN0IGE9dGhpcy5lbmNvZGVyLmVuY29kZUtleShjKTtyZXR1cm4gdGhpcy5tYXAuZ2V0KGMpLm1hcChmPT5hKyI9Iit0aGlzLmVuY29kZXIuZW5jb2RlVmFsdWUoZikpLmpvaW4oIiYiKX0pLmZpbHRlcihjPT4iIiE9PWMpLmpvaW4oIiYiKX1jbG9u''@;'; put 'put ''ZShjKXtjb25zdCBhPW5ldyBhNCh7ZW5jb2Rlcjp0aGlzLmVuY29kZXJ9KTtyZXR1cm4gYS5jbG9uZUZyb209dGhpcy5jbG9uZUZyb218fHRoaXMsYS51cGRhdGVzPSh0aGlzLnVwZGF0ZXN8fFtdKS5jb25jYXQoYyksYX1pbml0KCl7bnVsbD09PXRoaXMubWFwJiYodGhpcy5tYXA9bmV3IE1h''@;'; put 'put ''cCksbnVsbCE9PXRoaXMuY2xvbmVGcm9tJiYodGhpcy5jbG9uZUZyb20uaW5pdCgpLHRoaXMuY2xvbmVGcm9tLmtleXMoKS5mb3JFYWNoKGM9PnRoaXMubWFwLnNldChjLHRoaXMuY2xvbmVGcm9tLm1hcC5nZXQoYykpKSx0aGlzLnVwZGF0ZXMuZm9yRWFjaChjPT57c3dpdGNoKGMub3Ape2Nh''@;'; put 'put ''c2UiYSI6Y2FzZSJzIjpjb25zdCBhPSgiYSI9PT1jLm9wP3RoaXMubWFwLmdldChjLnBhcmFtKTp2b2lkIDApfHxbXTthLnB1c2goaEQoYy52YWx1ZSkpLHRoaXMubWFwLnNldChjLnBhcmFtLGEpO2JyZWFrO2Nhc2UiZCI6aWYodm9pZCAwPT09Yy52YWx1ZSl7dGhpcy5tYXAuZGVsZXRlKGMu''@;'; put 'put ''cGFyYW0pO2JyZWFrfXtsZXQgZj10aGlzLm1hcC5nZXQoYy5wYXJhbSl8fFtdO2NvbnN0IGQ9Zi5pbmRleE9mKGhEKGMudmFsdWUpKTstMSE9PWQmJmYuc3BsaWNlKGQsMSksZi5sZW5ndGg+MD90aGlzLm1hcC5zZXQoYy5wYXJhbSxmKTp0aGlzLm1hcC5kZWxldGUoYy5wYXJhbSl9fX0pLHRo''@;'; put 'put ''aXMuY2xvbmVGcm9tPXRoaXMudXBkYXRlcz1udWxsKX19Y2xhc3MgZUNle2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1zZXQoYyxhKXtyZXR1cm4gdGhpcy5tYXAuc2V0KGMsYSksdGhpc31nZXQoYyl7cmV0dXJuIHRoaXMubWFwLmhhcyhjKXx8dGhpcy5tYXAuc2V0KGMsYy5kZWZh''@;'; put 'put ''dWx0VmFsdWUoKSksdGhpcy5tYXAuZ2V0KGMpfWRlbGV0ZShjKXtyZXR1cm4gdGhpcy5tYXAuZGVsZXRlKGMpLHRoaXN9aGFzKGMpe3JldHVybiB0aGlzLm1hcC5oYXMoYyl9a2V5cygpe3JldHVybiB0aGlzLm1hcC5rZXlzKCl9fWZ1bmN0aW9uIHVpZShsKXtyZXR1cm4gdHlwZW9mIEFycmF5''@;'; put 'put ''QnVmZmVyPCJ1IiYmbCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfWZ1bmN0aW9uIGNpZShsKXtyZXR1cm4gdHlwZW9mIEJsb2I8InUiJiZsIGluc3RhbmNlb2YgQmxvYn1mdW5jdGlvbiBmaWUobCl7cmV0dXJuIHR5cGVvZiBGb3JtRGF0YTwidSImJmwgaW5zdGFuY2VvZiBGb3JtRGF0YX1jbGFz''@;'; put 'put ''cyBPQ3tjb25zdHJ1Y3RvcihjLGEsZixkKXtsZXQgaDtpZih0aGlzLnVybD1hLHRoaXMuYm9keT1udWxsLHRoaXMucmVwb3J0UHJvZ3Jlc3M9ITEsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5yZXNwb25zZVR5cGU9Impzb24iLHRoaXMubWV0aG9kPWMudG9VcHBlckNhc2UoKSxmdW5j''@;'; put 'put ''dGlvbiB0Q2UobCl7c3dpdGNoKGwpe2Nhc2UiREVMRVRFIjpjYXNlIkdFVCI6Y2FzZSJIRUFEIjpjYXNlIk9QVElPTlMiOmNhc2UiSlNPTlAiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSh0aGlzLm1ldGhvZCl8fGQ/KHRoaXMuYm9keT12b2lkIDAhPT1mP2Y6bnVsbCxoPWQpOmg9Zixo''@;'; put 'put ''JiYodGhpcy5yZXBvcnRQcm9ncmVzcz0hIWgucmVwb3J0UHJvZ3Jlc3MsdGhpcy53aXRoQ3JlZGVudGlhbHM9ISFoLndpdGhDcmVkZW50aWFscyxoLnJlc3BvbnNlVHlwZSYmKHRoaXMucmVzcG9uc2VUeXBlPWgucmVzcG9uc2VUeXBlKSxoLmhlYWRlcnMmJih0aGlzLmhlYWRlcnM9aC5oZWFk''@;'; put 'put ''ZXJzKSxoLmNvbnRleHQmJih0aGlzLmNvbnRleHQ9aC5jb250ZXh0KSxoLnBhcmFtcyYmKHRoaXMucGFyYW1zPWgucGFyYW1zKSksdGhpcy5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBFaCksdGhpcy5jb250ZXh0fHwodGhpcy5jb250ZXh0PW5ldyBlQ2UpLHRoaXMucGFyYW1zKXtjb25z''@;'; put 'put ''dCBtPXRoaXMucGFyYW1zLnRvU3RyaW5nKCk7aWYoMD09PW0ubGVuZ3RoKXRoaXMudXJsV2l0aFBhcmFtcz1hO2Vsc2V7Y29uc3QgXz1hLmluZGV4T2YoIj8iKTt0aGlzLnVybFdpdGhQYXJhbXM9YSsoLTE9PT1fPyI/IjpfPGEubGVuZ3RoLTE/IiYiOiIiKSttfX1lbHNlIHRoaXMucGFyYW1z''@;'; put 'put ''PW5ldyBhNCx0aGlzLnVybFdpdGhQYXJhbXM9YX1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHk/bnVsbDp1aWUodGhpcy5ib2R5KXx8Y2llKHRoaXMuYm9keSl8fGZpZSh0aGlzLmJvZHkpfHxmdW5jdGlvbiBuQ2UobCl7cmV0dXJuIHR5cGVvZiBVUkxTZWFyY2hQYXJh''@;'; put 'put ''bXM8InUiJiZsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSh0aGlzLmJvZHkpfHwic3RyaW5nIj09dHlwZW9mIHRoaXMuYm9keT90aGlzLmJvZHk6dGhpcy5ib2R5IGluc3RhbmNlb2YgYTQ/dGhpcy5ib2R5LnRvU3RyaW5nKCk6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJib29s''@;'; put 'put ''ZWFuIj09dHlwZW9mIHRoaXMuYm9keXx8QXJyYXkuaXNBcnJheSh0aGlzLmJvZHkpP0pTT04uc3RyaW5naWZ5KHRoaXMuYm9keSk6dGhpcy5ib2R5LnRvU3RyaW5nKCl9ZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIoKXtyZXR1cm4gbnVsbD09PXRoaXMuYm9keXx8ZmllKHRoaXMuYm9keSk/bnVs''@;'; put 'put ''bDpjaWUodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDp1aWUodGhpcy5ib2R5KT9udWxsOiJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5PyJ0ZXh0L3BsYWluIjp0aGlzLmJvZHkgaW5zdGFuY2VvZiBhND8iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9''@;'; put 'put ''VVRGLTgiOiJvYmplY3QiPT10eXBlb2YgdGhpcy5ib2R5fHwibnVtYmVyIj09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5PyJhcHBsaWNhdGlvbi9qc29uIjpudWxsfWNsb25lKGM9e30pe2NvbnN0IGE9Yy5tZXRob2R8fHRoaXMubWV0aG9kLGY9Yy51cmx8''@;'; put 'put ''fHRoaXMudXJsLGQ9Yy5yZXNwb25zZVR5cGV8fHRoaXMucmVzcG9uc2VUeXBlLGg9dm9pZCAwIT09Yy5ib2R5P2MuYm9keTp0aGlzLmJvZHksbT12b2lkIDAhPT1jLndpdGhDcmVkZW50aWFscz9jLndpdGhDcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFscyxfPXZvaWQgMCE9PWMucmVw''@;'; put 'put ''b3J0UHJvZ3Jlc3M/Yy5yZXBvcnRQcm9ncmVzczp0aGlzLnJlcG9ydFByb2dyZXNzO2xldCBPPWMuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLFg9Yy5wYXJhbXN8fHRoaXMucGFyYW1zO2NvbnN0IGFlPWMuY29udGV4dD8/dGhpcy5jb250ZXh0O3JldHVybiB2b2lkIDAhPT1jLnNldEhlYWRlcnMm''@;'; put 'put ''JihPPU9iamVjdC5rZXlzKGMuc2V0SGVhZGVycykucmVkdWNlKChwZSxiZSk9PnBlLnNldChiZSxjLnNldEhlYWRlcnNbYmVdKSxPKSksYy5zZXRQYXJhbXMmJihYPU9iamVjdC5rZXlzKGMuc2V0UGFyYW1zKS5yZWR1Y2UoKHBlLGJlKT0+cGUuc2V0KGJlLGMuc2V0UGFyYW1zW2JlXSksWCkp''@;'; put 'put ''LG5ldyBPQyhhLGYsaCx7cGFyYW1zOlgsaGVhZGVyczpPLGNvbnRleHQ6YWUscmVwb3J0UHJvZ3Jlc3M6XyxyZXNwb25zZVR5cGU6ZCx3aXRoQ3JlZGVudGlhbHM6bX0pfX12YXIgUnY9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5TZW50PTBdPSJTZW50IixsW2wuVXBsb2FkUHJvZ3Jlc3M9MV09''@;'; put 'put ''IlVwbG9hZFByb2dyZXNzIixsW2wuUmVzcG9uc2VIZWFkZXI9Ml09IlJlc3BvbnNlSGVhZGVyIixsW2wuRG93bmxvYWRQcm9ncmVzcz0zXT0iRG93bmxvYWRQcm9ncmVzcyIsbFtsLlJlc3BvbnNlPTRdPSJSZXNwb25zZSIsbFtsLlVzZXI9NV09IlVzZXIiLGx9KFJ2fHx7fSk7Y2xhc3MgUWp7''@;'; put 'put ''Y29uc3RydWN0b3IoYyxhPTIwMCxmPSJPSyIpe3RoaXMuaGVhZGVycz1jLmhlYWRlcnN8fG5ldyBFaCx0aGlzLnN0YXR1cz12b2lkIDAhPT1jLnN0YXR1cz9jLnN0YXR1czphLHRoaXMuc3RhdHVzVGV4dD1jLnN0YXR1c1RleHR8fGYsdGhpcy51cmw9Yy51cmx8fG51bGwsdGhpcy5vaz10aGlz''@;'; put 'put ''LnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDB9fWNsYXNzIGV6IGV4dGVuZHMgUWp7Y29uc3RydWN0b3IoYz17fSl7c3VwZXIoYyksdGhpcy50eXBlPVJ2LlJlc3BvbnNlSGVhZGVyfWNsb25lKGM9e30pe3JldHVybiBuZXcgZXooe2hlYWRlcnM6Yy5oZWFkZXJzfHx0aGlzLmhlYWRlcnMs''@;'; put 'put ''c3RhdHVzOnZvaWQgMCE9PWMuc3RhdHVzP2Muc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6Yy5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOmMudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIEx2IGV4dGVuZHMgUWp7Y29uc3RydWN0b3IoYz17fSl7c3VwZXIoYyks''@;'; put 'put ''dGhpcy50eXBlPVJ2LlJlc3BvbnNlLHRoaXMuYm9keT12b2lkIDAhPT1jLmJvZHk/Yy5ib2R5Om51bGx9Y2xvbmUoYz17fSl7cmV0dXJuIG5ldyBMdih7Ym9keTp2b2lkIDAhPT1jLmJvZHk/Yy5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOmMuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp2''@;'; put 'put ''b2lkIDAhPT1jLnN0YXR1cz9jLnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OmMuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDpjLnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX1jbGFzcyBkaWUgZXh0ZW5kcyBRantjb25zdHJ1Y3RvcihjKXtzdXBlcihjLDAsIlVua25vd24g''@;'; put 'put ''RXJyb3IiKSx0aGlzLm5hbWU9Ikh0dHBFcnJvclJlc3BvbnNlIix0aGlzLm9rPSExLHRoaXMubWVzc2FnZT10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDA/YEh0dHAgZmFpbHVyZSBkdXJpbmcgcGFyc2luZyBmb3IgJHtjLnVybHx8Iih1bmtub3duIHVybCkifWA6YEh0dHAgZmFp''@;'; put 'put ''bHVyZSByZXNwb25zZSBmb3IgJHtjLnVybHx8Iih1bmtub3duIHVybCkifTogJHtjLnN0YXR1c30gJHtjLnN0YXR1c1RleHR9YCx0aGlzLmVycm9yPWMuZXJyb3J8fG51bGx9fWZ1bmN0aW9uIHR6KGwsYyl7cmV0dXJue2JvZHk6YyxoZWFkZXJzOmwuaGVhZGVycyxjb250ZXh0OmwuY29udGV4''@;'; put 'put ''dCxvYnNlcnZlOmwub2JzZXJ2ZSxwYXJhbXM6bC5wYXJhbXMscmVwb3J0UHJvZ3Jlc3M6bC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6bC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOmwud2l0aENyZWRlbnRpYWxzfX1sZXQgbno9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcihh''@;'; put 'put ''KXt0aGlzLmhhbmRsZXI9YX1yZXF1ZXN0KGEsZixkPXt9KXtsZXQgaDtpZihhIGluc3RhbmNlb2YgT0MpaD1hO2Vsc2V7bGV0IE8sWDtPPWQuaGVhZGVycyBpbnN0YW5jZW9mIEVoP2QuaGVhZGVyczpuZXcgRWgoZC5oZWFkZXJzKSxkLnBhcmFtcyYmKFg9ZC5wYXJhbXMgaW5zdGFuY2VvZiBh''@;'; put 'put ''ND9kLnBhcmFtczpuZXcgYTQoe2Zyb21PYmplY3Q6ZC5wYXJhbXN9KSksaD1uZXcgT0MoYSxmLHZvaWQgMCE9PWQuYm9keT9kLmJvZHk6bnVsbCx7aGVhZGVyczpPLGNvbnRleHQ6ZC5jb250ZXh0LHBhcmFtczpYLHJlcG9ydFByb2dyZXNzOmQucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBl''@;'; put 'put ''OmQucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENyZWRlbnRpYWxzOmQud2l0aENyZWRlbnRpYWxzfSl9Y29uc3QgbT1HaShoKS5waXBlKFN2KE89PnRoaXMuaGFuZGxlci5oYW5kbGUoTykpKTtpZihhIGluc3RhbmNlb2YgT0N8fCJldmVudHMiPT09ZC5vYnNlcnZlKXJldHVybiBtO2NvbnN0''@;'; put 'put ''IF89bS5waXBlKElsKE89Pk8gaW5zdGFuY2VvZiBMdikpO3N3aXRjaChkLm9ic2VydmV8fCJib2R5Iil7Y2FzZSJib2R5Ijpzd2l0Y2goaC5yZXNwb25zZVR5cGUpe2Nhc2UiYXJyYXlidWZmZXIiOnJldHVybiBfLnBpcGUoRWUoTz0+e2lmKG51bGwhPT1PLmJvZHkmJiEoTy5ib2R5IGluc3Rh''@;'; put 'put ''bmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiBPLmJvZHl9KSk7Y2FzZSJibG9iIjpyZXR1cm4gXy5waXBlKEVlKE89PntpZihudWxsIT09Ty5ib2R5JiYhKE8uYm9keSBpbnN0YW5jZW9mIEJsb2IpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgQmxvYi4iKTtyZXR1cm4gTy5ib2R5fSkpO2Nhc2UidGV4dCI6cmV0dXJuIF8ucGlwZShFZShPPT57aWYobnVsbCE9PU8uYm9keSYmInN0cmluZyIhPXR5cGVvZiBPLmJvZHkpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3Qg''@;'; put 'put ''YSBzdHJpbmcuIik7cmV0dXJuIE8uYm9keX0pKTtkZWZhdWx0OnJldHVybiBfLnBpcGUoRWUoTz0+Ty5ib2R5KSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIF87ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7ZC5vYnNlcnZlfX1g''@;'; put 'put ''KX19ZGVsZXRlKGEsZj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIixhLGYpfWdldChhLGY9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsYSxmKX1oZWFkKGEsZj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsYSxmKX1qc29ucChhLGYpe3JldHVybiB0aGlzLnJl''@;'; put 'put ''cXVlc3QoIkpTT05QIixhLHtwYXJhbXM6KG5ldyBhNCkuYXBwZW5kKGYsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnMoYSxmPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIixhLGYpfXBhdGNoKGEsZixkPXt9KXty''@;'; put 'put ''ZXR1cm4gdGhpcy5yZXF1ZXN0KCJQQVRDSCIsYSx0eihkLGYpKX1wb3N0KGEsZixkPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIixhLHR6KGQsZikpfXB1dChhLGYsZD17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIixhLHR6KGQsZikpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihmRCkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2Z1bmN0aW9uIG1pZShsLGMpe3JldHVybiBjKGwpfWZ1bmN0aW9uIGlDZShsLGMpe3JldHVybihhLGYpPT5jLmludGVyY2VwdChhLHto''@;'; put 'put ''YW5kbGU6ZD0+bChkLGYpfSl9Y29uc3QgYUNlPW5ldyBNaSgiIiksREM9bmV3IE1pKCIiKSxnaWU9bmV3IE1pKCIiKTtmdW5jdGlvbiBsQ2UoKXtsZXQgbD1udWxsO3JldHVybihjLGEpPT57bnVsbD09PWwmJihsPShIaShhQ2Use29wdGlvbmFsOiEwfSk/P1tdKS5yZWR1Y2VSaWdodChpQ2Us''@;'; put 'put ''bWllKSk7Y29uc3QgZj1IaSh4TyksZD1mLmFkZCgpO3JldHVybiBsKGMsYSkucGlwZShoQygoKT0+Zi5yZW1vdmUoZCkpKX19bGV0IHZpZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgZkR7Y29uc3RydWN0b3IoYSxmKXtzdXBlcigpLHRoaXMuYmFja2VuZD1hLHRoaXMuaW5qZWN0b3I9Zix0aGlz''@;'; put 'put ''LmNoYWluPW51bGwsdGhpcy5wZW5kaW5nVGFza3M9SGkoeE8pfWhhbmRsZShhKXtpZihudWxsPT09dGhpcy5jaGFpbil7Y29uc3QgZD1BcnJheS5mcm9tKG5ldyBTZXQoWy4uLnRoaXMuaW5qZWN0b3IuZ2V0KERDKSwuLi50aGlzLmluamVjdG9yLmdldChnaWUsW10pXSkpO3RoaXMuY2hhaW49''@;'; put 'put ''ZC5yZWR1Y2VSaWdodCgoaCxtKT0+ZnVuY3Rpb24gb0NlKGwsYyxhKXtyZXR1cm4oZixkKT0+YS5ydW5JbkNvbnRleHQoKCk9PmMoZixoPT5sKGgsZCkpKX0oaCxtLHRoaXMuaW5qZWN0b3IpLG1pZSl9Y29uc3QgZj10aGlzLnBlbmRpbmdUYXNrcy5hZGQoKTtyZXR1cm4gdGhpcy5jaGFpbihh''@;'; put 'put ''LGQ9PnRoaXMuYmFja2VuZC5oYW5kbGUoZCkpLnBpcGUoaEMoKCk9PnRoaXMucGVuZGluZ1Rhc2tzLnJlbW92ZShmKSkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihkRCksc3IodTEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rv''@;'; put 'put ''cnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtjb25zdCBmQ2U9L15cKVxdXH0nLD9cbi87bGV0IGJpZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMueGhyRmFjdG9yeT1hfWhhbmRsZShhKXtpZigiSlNPTlAiPT09YS5tZXRob2QpdGhyb3cgbmV3IElyKC0yODAwLCExKTtjb25zdCBm''@;'; put 'put ''PXRoaXMueGhyRmFjdG9yeTtyZXR1cm4oZi5cdTAyNzVsb2FkSW1wbD9ubChmLlx1MDI3NWxvYWRJbXBsKCkpOkdpKG51bGwpKS5waXBlKGtsKCgpPT5uZXcgQmUoaD0+e2NvbnN0IG09Zi5idWlsZCgpO2lmKG0ub3BlbihhLm1ldGhvZCxhLnVybFdpdGhQYXJhbXMpLGEud2l0aENyZWRlbnRp''@;'; put 'put ''YWxzJiYobS53aXRoQ3JlZGVudGlhbHM9ITApLGEuaGVhZGVycy5mb3JFYWNoKChaZSxsdCk9Pm0uc2V0UmVxdWVzdEhlYWRlcihaZSxsdC5qb2luKCIsIikpKSxhLmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8bS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0''@;'; put 'put ''ZXh0L3BsYWluLCAqLyoiKSwhYS5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IFplPWEuZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIoKTtudWxsIT09WmUmJm0uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixaZSl9aWYoYS5yZXNwb25zZVR5cGUpe2NvbnN0IFplPWEu''@;'; put 'put ''cmVzcG9uc2VUeXBlLnRvTG93ZXJDYXNlKCk7bS5yZXNwb25zZVR5cGU9Impzb24iIT09WmU/WmU6InRleHQifWNvbnN0IF89YS5zZXJpYWxpemVCb2R5KCk7bGV0IE89bnVsbDtjb25zdCBYPSgpPT57aWYobnVsbCE9PU8pcmV0dXJuIE87Y29uc3QgWmU9bS5zdGF0dXNUZXh0fHwiT0siLGx0''@;'; put 'put ''PW5ldyBFaChtLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkdD1mdW5jdGlvbiBkQ2UobCl7cmV0dXJuInJlc3BvbnNlVVJMImluIGwmJmwucmVzcG9uc2VVUkw/bC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChsLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9sLmdldFJl''@;'; put 'put ''c3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0obSl8fGEudXJsO3JldHVybiBPPW5ldyBleih7aGVhZGVyczpsdCxzdGF0dXM6bS5zdGF0dXMsc3RhdHVzVGV4dDpaZSx1cmw6ZHR9KSxPfSxhZT0oKT0+e2xldHtoZWFkZXJzOlplLHN0YXR1czpsdCxzdGF0dXNUZXh0OmR0LHVy''@;'; put 'put ''bDpndH09WCgpLGp0PW51bGw7MjA0IT09bHQmJihqdD10eXBlb2YgbS5yZXNwb25zZT4idSI/bS5yZXNwb25zZVRleHQ6bS5yZXNwb25zZSksMD09PWx0JiYobHQ9anQ/MjAwOjApO2xldCBybj1sdD49MjAwJiZsdDwzMDA7aWYoImpzb24iPT09YS5yZXNwb25zZVR5cGUmJiJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YganQpe2NvbnN0IFh0PWp0O2p0PWp0LnJlcGxhY2UoZkNlLCIiKTt0cnl7anQ9IiIhPT1qdD9KU09OLnBhcnNlKGp0KTpudWxsfWNhdGNoKHluKXtqdD1YdCxybiYmKHJuPSExLGp0PXtlcnJvcjp5bix0ZXh0Omp0fSl9fXJuPyhoLm5leHQobmV3IEx2KHtib2R5Omp0LGhlYWRlcnM6''@;'; put 'put ''WmUsc3RhdHVzOmx0LHN0YXR1c1RleHQ6ZHQsdXJsOmd0fHx2b2lkIDB9KSksaC5jb21wbGV0ZSgpKTpoLmVycm9yKG5ldyBkaWUoe2Vycm9yOmp0LGhlYWRlcnM6WmUsc3RhdHVzOmx0LHN0YXR1c1RleHQ6ZHQsdXJsOmd0fHx2b2lkIDB9KSl9LHBlPVplPT57Y29uc3R7dXJsOmx0fT1YKCks''@;'; put 'put ''ZHQ9bmV3IGRpZSh7ZXJyb3I6WmUsc3RhdHVzOm0uc3RhdHVzfHwwLHN0YXR1c1RleHQ6bS5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOmx0fHx2b2lkIDB9KTtoLmVycm9yKGR0KX07bGV0IGJlPSExO2NvbnN0IHhlPVplPT57YmV8fChoLm5leHQoWCgpKSxiZT0hMCk7bGV0IGx0''@;'; put 'put ''PXt0eXBlOlJ2LkRvd25sb2FkUHJvZ3Jlc3MsbG9hZGVkOlplLmxvYWRlZH07WmUubGVuZ3RoQ29tcHV0YWJsZSYmKGx0LnRvdGFsPVplLnRvdGFsKSwidGV4dCI9PT1hLnJlc3BvbnNlVHlwZSYmbS5yZXNwb25zZVRleHQmJihsdC5wYXJ0aWFsVGV4dD1tLnJlc3BvbnNlVGV4dCksaC5uZXh0''@;'; put 'put ''KGx0KX0sVmU9WmU9PntsZXQgbHQ9e3R5cGU6UnYuVXBsb2FkUHJvZ3Jlc3MsbG9hZGVkOlplLmxvYWRlZH07WmUubGVuZ3RoQ29tcHV0YWJsZSYmKGx0LnRvdGFsPVplLnRvdGFsKSxoLm5leHQobHQpfTtyZXR1cm4gbS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixhZSksbS5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKCJlcnJvciIscGUpLG0uYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIscGUpLG0uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHBlKSxhLnJlcG9ydFByb2dyZXNzJiYobS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIseGUpLG51bGwhPT1fJiZtLnVwbG9hZCYmbS51cGxvYWQu''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLFZlKSksbS5zZW5kKF8pLGgubmV4dCh7dHlwZTpSdi5TZW50fSksKCk9PnttLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixwZSksbS5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIscGUpLG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9h''@;'; put 'put ''ZCIsYWUpLG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGltZW91dCIscGUpLGEucmVwb3J0UHJvZ3Jlc3MmJihtLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIix4ZSksbnVsbCE9PV8mJm0udXBsb2FkJiZtLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsVmUpKSxt''@;'; put 'put ''LnJlYWR5U3RhdGUhPT1tLkRPTkUmJm0uYWJvcnQoKX19KSkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihUbmUpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtjb25zdCByej1uZXcgTWko''@;'; put 'put ''IlhTUkZfRU5BQkxFRCIpLF9pZT1uZXcgTWkoIlhTUkZfQ09PS0lFX05BTUUiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4iWFNSRi1UT0tFTiJ9KSx3aWU9bmV3IE1pKCJYU1JGX0hFQURFUl9OQU1FIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+IlgtWFNSRi1UT0tF''@;'; put 'put ''TiJ9KTtjbGFzcyBDaWV7fWxldCBtQ2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5kb2M9YSx0aGlzLnBsYXRmb3JtPWYsdGhpcy5jb29raWVOYW1lPWQsdGhpcy5sYXN0Q29va2llU3RyaW5nPSIiLHRoaXMubGFzdFRva2VuPW51bGwsdGhpcy5wYXJzZUNvdW50PTB9''@;'; put 'put ''Z2V0VG9rZW4oKXtpZigic2VydmVyIj09PXRoaXMucGxhdGZvcm0pcmV0dXJuIG51bGw7Y29uc3QgYT10aGlzLmRvYy5jb29raWV8fCIiO3JldHVybiBhIT09dGhpcy5sYXN0Q29va2llU3RyaW5nJiYodGhpcy5wYXJzZUNvdW50KyssdGhpcy5sYXN0VG9rZW49dm5lKGEsdGhpcy5jb29raWVO''@;'; put 'put ''YW1lKSx0aGlzLmxhc3RDb29raWVTdHJpbmc9YSksdGhpcy5sYXN0VG9rZW59fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKEZhKSxzcihxYSksc3IoX2llKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSks''@;'; put 'put ''bH0pKCk7ZnVuY3Rpb24gZ0NlKGwsYyl7Y29uc3QgYT1sLnVybC50b0xvd2VyQ2FzZSgpO2lmKCFIaShyeil8fCJHRVQiPT09bC5tZXRob2R8fCJIRUFEIj09PWwubWV0aG9kfHxhLnN0YXJ0c1dpdGgoImh0dHA6Ly8iKXx8YS5zdGFydHNXaXRoKCJodHRwczovLyIpKXJldHVybiBjKGwpO2Nv''@;'; put 'put ''bnN0IGY9SGkoQ2llKS5nZXRUb2tlbigpLGQ9SGkod2llKTtyZXR1cm4gbnVsbCE9ZiYmIWwuaGVhZGVycy5oYXMoZCkmJihsPWwuY2xvbmUoe2hlYWRlcnM6bC5oZWFkZXJzLnNldChkLGYpfSkpLGMobCl9dmFyIGw0PWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuSW50ZXJjZXB0b3JzPTBdPSJJ''@;'; put 'put ''bnRlcmNlcHRvcnMiLGxbbC5MZWdhY3lJbnRlcmNlcHRvcnM9MV09IkxlZ2FjeUludGVyY2VwdG9ycyIsbFtsLkN1c3RvbVhzcmZDb25maWd1cmF0aW9uPTJdPSJDdXN0b21Yc3JmQ29uZmlndXJhdGlvbiIsbFtsLk5vWHNyZlByb3RlY3Rpb249M109Ik5vWHNyZlByb3RlY3Rpb24iLGxbbC5K''@;'; put 'put ''c29ucFN1cHBvcnQ9NF09Ikpzb25wU3VwcG9ydCIsbFtsLlJlcXVlc3RzTWFkZVZpYVBhcmVudD01XT0iUmVxdWVzdHNNYWRlVmlhUGFyZW50IixsW2wuRmV0Y2g9Nl09IkZldGNoIixsfShsNHx8e30pO2Z1bmN0aW9uIEFnKGwsYyl7cmV0dXJue1x1MDI3NWtpbmQ6bCxcdTAyNzVwcm92aWRl''@;'; put 'put ''cnM6Y319ZnVuY3Rpb24gdkNlKC4uLmwpe2NvbnN0IGM9W256LGJpZSx2aWUse3Byb3ZpZGU6ZkQsdXNlRXhpc3Rpbmc6dmllfSx7cHJvdmlkZTpkRCx1c2VFeGlzdGluZzpiaWV9LHtwcm92aWRlOkRDLHVzZVZhbHVlOmdDZSxtdWx0aTohMH0se3Byb3ZpZGU6cnosdXNlVmFsdWU6ITB9LHtw''@;'; put 'put ''cm92aWRlOkNpZSx1c2VDbGFzczptQ2V9XTtmb3IoY29uc3QgYSBvZiBsKWMucHVzaCguLi5hLlx1MDI3NXByb3ZpZGVycyk7cmV0dXJuIGZ1bmN0aW9uIEJfKGwpe3JldHVybntcdTAyNzVwcm92aWRlcnM6bH19KGMpfWNvbnN0IFNpZT1uZXcgTWkoIkxFR0FDWV9JTlRFUkNFUFRPUl9GTiIp''@;'; put 'put ''O2xldCBiQ2U9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7cHJvdmlkZXJzOlt2Q2UoQWcobDQuTGVnYWN5SW50ZXJjZXB0b3JzLFt7cHJvdmlkZTpT''@;'; put 'put ''aWUsdXNlRmFjdG9yeTpsQ2V9LHtwcm92aWRlOkRDLHVzZUV4aXN0aW5nOlNpZSxtdWx0aTohMH1dKSldfSksbH0pKCksTWllPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLmh0dHA9YSx0aGlzLmFwcFN0b3JlU2VydmljZT1mLHRoaXMudXJsPSIiLHRoaXMuZHJpdmVVcmw9''@;'; put 'put ''IiIsdGhpcy5odHRwT3B0aW9ucz17d2l0aENyZWRlbnRpYWxzOiEwfX1zZXR1cCgpe2NvbnN0IGE9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3MoKTt0aGlzLnVybD1gJHthPy5zZXJ2ZXJVcmx8fCIifS9TQVNqc0FwaWAsdGhpcy5kcml2ZVVybD1gJHt0aGlzLnVy''@;'; put 'put ''bH0vZHJpdmVgfWdldFNlcnZlckluZm8oKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVybH0vaW5mb2ApfWdldEZpbGVGcm9tRHJpdmUoYSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZmlsZS8/X2ZpbGVQYXRoPSR7YX1gLHRoaXMuaHR0cE9wdGlvbnMp''@;'; put 'put ''fWdldEZvbGRlckNvbnRlbnRzRnJvbURyaXZlKGEpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZHJpdmVVcmx9L2ZvbGRlcj9fZm9sZGVyUGF0aD0ke2F9YCx0aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlVHJlZUZyb21Ecml2ZSgpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMu''@;'; put 'put ''ZHJpdmVVcmx9L2ZpbGV0cmVlYCx0aGlzLmh0dHBPcHRpb25zKX1nZXRGaWxlRnJvbUZpbGVUcmVlKGEpe3JldHVybiBuZXcgUHJvbWlzZSgoZixkKT0+e3RoaXMuZ2V0RmlsZVRyZWVGcm9tRHJpdmUoKS5zdWJzY3JpYmUoaD0+e2NvbnN0IF89dGhpcy5maW5kSW5UcmVlKGgudHJlZSxhKTtm''@;'; put 'put ''KF8pfSl9KX1maW5kSW5UcmVlKGEsZil7aWYoYS5yZWxhdGl2ZVBhdGg9PT1mKXJldHVybiBhO2ZvcihsZXQgZCBvZiBhLmNoaWxkcmVuKXtjb25zdCBoPXRoaXMuZmluZEluVHJlZShkLGYpO2lmKGgpcmV0dXJuIGh9fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5l''@;'; put 'put ''dyhhfHxsKShzcihueiksc3IoSXYpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxwbD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfKXt0aGlzLmFwcFN0b3JlU2VydmljZT1hLHRoaXMu''@;'; put 'put ''dXNlclNlcnZpY2U9Zix0aGlzLmV2ZW50U2VydmljZT1kLHRoaXMuc2FzanNTZXJ2aWNlPWgsdGhpcy5sb2dnZXJTZXJ2aWNlPW0sdGhpcy5yb3V0ZXI9Xyx0aGlzLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXI9bmV3IHhyLHRoaXMuaW5jb3JyZWN0U2l0ZUlkRW1pdHRlcj1uZXcgeHIsdGhp''@;'; put 'put ''cy5yZXF1ZXN0U2l0ZUlkRW1pdHRlcj1uZXcgeHIsdGhpcy5zYXNqc0FkYXB0ZXI9bmV3KGxpZSgpKSx0aGlzLmFwcExvY0NoZWNrUGVuZGluZz0hMSx0aGlzLnNob3VsZExvZ2luPW5ldyBPZSghMSksdGhpcy5saWNlbnNlX3NpdGVfaWQ9bmV3IE9lKG51bGwpfXNhc1NlcnZpY2VJbml0KCl7''@;'; put 'put ''aWYodGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpLHRoaXMuc2FzanNTZXJ2aWNlLnNldHVwKCksdGhpcy5kY0FkYXB0ZXJTZXR0aW5ncyl7c3dpdGNoKHRoaXMuc2FzanNBZGFwdGVyPW5ldyhsaWUoKSkodGhpcy5kY0Fk''@;'; put 'put ''YXB0ZXJTZXR0aW5ncyksdGhpcy5kY0FkYXB0ZXJTZXR0aW5ncy5zZXJ2ZXJUeXBlKXtjYXNlIFh1LkQuU2FzVml5YTp0aGlzLmNoZWNrVml5YURlcGxveSh0aGlzLmRjQWRhcHRlclNldHRpbmdzLmFwcExvY3x8IiIpO2JyZWFrO2Nhc2UgWHUuRC5TYXM5OnRoaXMubG9hZFN0YXJ0dXBTZXJ2''@;'; put 'put ''aWNlRW1pdHRlci5lbWl0KCk7YnJlYWs7Y2FzZSBYdS5ELlNhc2pzOnRoaXMuY2hlY2tTYXNqc0RlcGxveSgpfSJSZWRpcmVjdGVkIj09PXRoaXMuZ2V0U2FzanNDb25maWcoKS5sb2dpbk1lY2hhbmlzbSYmdGhpcy5zaG91bGRMb2dpbi5zdWJzY3JpYmUoYT0+e2EmJnRoaXMuc2FzanNBZGFw''@;'; put 'put ''dGVyLmxvZ0luKCkudGhlbihmPT57Y29uc29sZS5sb2coInJlcyIsZil9KX0pfWVsc2UgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLCJBZGFwdGVyIHNldHRpbmdzIChpbmRleC5odG1sKSBhcmUgbm90IHByZXNlbnQuIil9cmVxdWVzdChhLGYsZCxoKXtyZXR1cm4g''@;'; put 'put ''aHx8KGg9e30pLHRoaXMubG9nZ2VyU2VydmljZS5sb2dSZXF1ZXN0RGF0YShhPSJzZXJ2aWNlcy8iK2EsZiksbmV3IFByb21pc2UoKG0sXyk9Pnt0aGlzLnNhc2pzQWRhcHRlci5yZXF1ZXN0KGEsZixkLCgpPT57dGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKX0pLnRoZW4oTz0+e2lmKCExPT09''@;'; put 'put ''Ty5sb2dpbiYmKHRoaXMuc2hvdWxkTG9naW4ubmV4dCghMCksXyghMSkpLCF0aGlzLnVzZXJTZXJ2aWNlLnVzZXImJk8uTUZfR0VUVVNFUiYmKHRoaXMudXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6Ty5NRl9HRVRVU0VSfSksTy5TWVNTSVRFJiYodGhpcy5yZXF1ZXN0U2l0ZUlkRW1pdHRl''@;'; put 'put ''ci5lbWl0KE8uU1lTU0lURSksdGhpcy5nZXRMaWNlbnNlU2l0ZUlkKCkubGVuZ3RoPjAmJih0aGlzLmdldExpY2Vuc2VTaXRlSWQoKS5pbmNsdWRlcyhPLlNZU1NJVEUpfHx0aGlzLmluY29ycmVjdFNpdGVJZEVtaXR0ZXIuZW1pdChPLlNZU1NJVEUpKSksNDA0PT09Ty5zdGF0dXMmJl8oe01F''@;'; put 'put ''U1NBR0U6Ty5ib2R5fHwiU0FTIFJlc3BvbmRlZCB3aXRoIGVycm9yIn0pLHR5cGVvZiBPLnNhc2pzQWJvcnQ8InUiKXtjb25zdCBYPU8sYWU9WC5zYXNqc0Fib3J0WzBdLk1TRyxwZT1YLnNhc2pzQWJvcnRbMF0uTUFDO2lmKGFlLmluY2x1ZGVzKCJEYXRhX0NvbnRyb2xsZXJfU2V0dGluZ3Mo''@;'; put 'put ''U3RvcmVkUHJvY2Vzcykgbm90IGZvdW5kIikpcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLHZvaWQgXyh7ZXJyb3I6YWV9KTtoPy5zdXBwcmVzc1N1Y2Nlc3NBYm9ydE1vZGFsfHx0aGlzLmV2''@;'; put 'put ''ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChhLnJlcGxhY2UoInNlcnZpY2VzLyIsIiIpLGFlLHtTWVNXQVJOSU5HVEVYVDpYLlNZU1dBUk5JTkdURVhULFNZU0VSUk9SVEVYVDpYLlNZU0VSUk9SVEVYVCxNQUM6cGV9KSxfKHtlcnJvcjphZX0pfW0oTyl9LE89PntpZihjb25zb2xlLmVycm9y''@;'; put 'put ''KE8pLE8uZXJyb3Ipe2xldCBhZSxYPU8uZXJyb3IubWVzc2FnZTtPLmVycm9yLmRldGFpbHMmJk8uZXJyb3IuZGV0YWlscy5sb2cmJihhZT1PLmVycm9yLmRldGFpbHMubG9nKSwoIVh8fFgudHJpbSgpLmxlbmd0aDwxKSYmKFg9IlNBUyBTZXJ2aWNlIGVycm9yIG9jdXJyZWQiKSxoPy5zdXBw''@;'; put 'put ''cmVzc0Vycm9yQWJvcnRNb2RhbHx8dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoYSxYLHtMT0c6YWV9LCJSZXF1ZXN0IGVycm9yIiksXyh7ZXJyb3I6WH0pfV8oTyl9KX0pfXVwbG9hZEZpbGUoYSxmLGQpe3JldHVybiB0aGlzLnNhc2pzQWRhcHRlci51cGxvYWRGaWxlKGEsZixk''@;'; put 'put ''KX1sb2dpbihhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2NvbnN0IGg9ZC5nZXRTZXJ2ZXJUeXBlKCk9PT1YdS5ELlNhc2pzPyJjbGllbnRJRDEiOnZvaWQgMDtyZXR1cm4gZC5zYXNqc0FkYXB0ZXIubG9nSW4oYSxmLGgpLnRoZW4obT0+KG0uaXNMb2dnZWRJbiYmKGQu''@;'; put 'put ''dXNlclNlcnZpY2UudXNlcj17dXNlcm5hbWU6bS51c2VyTmFtZX0sZC5hcHBMb2NDaGVja1BlbmRpbmcmJihkLmNoZWNrVml5YURlcGxveShkLmRjQWRhcHRlclNldHRpbmdzPy5hcHBMb2N8fCIiKSxkLmFwcExvY0NoZWNrUGVuZGluZz0hMSkpLGQuc2hvdWxkTG9naW4ubmV4dCghbS5pc0xv''@;'; put 'put ''Z2dlZEluKSxtLmlzTG9nZ2VkSW4pLG09Pihjb25zb2xlLmVycm9yKG0pLGQuc2hvdWxkTG9naW4ubmV4dCghMCksITEpKS5jYXRjaChtPT4oNDAzPT09bSYmY29uc29sZS5lcnJvcigiSW52YWxpZCBob3N0IiksITEpKX0pKCl9Z2V0TGljZW5zZVNpdGVJZCgpe3JldHVybiB0aGlzLmxpY2Vu''@;'; put 'put ''c2Vfc2l0ZV9pZC52YWx1ZXx8W119c2V0TGljZW5zZVNpdGVJZChhKXt0aGlzLmxpY2Vuc2Vfc2l0ZV9pZC5uZXh0KCJvYmplY3QiPT10eXBlb2YgYT9hOlthXSl9Y2hlY2tTYXNqc0RlcGxveSgpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2NvbnN0IGQ9YCR7YS5nZXRTYXNq''@;'; put 'put ''c0NvbmZpZygpLmFwcExvY30vc2VydmljZXMvYWRtaW5gO2Euc2FzanNTZXJ2aWNlLmdldEZvbGRlckNvbnRlbnRzRnJvbURyaXZlKGQpLnN1YnNjcmliZShoPT57aC5maWxlcy5pbmNsdWRlcygibWFrZWRhdGEuc2FzIik/KGEuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksYS5y''@;'; put 'put ''b3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpKTooYS5sb2FkU3RhcnR1cFNlcnZpY2VFbWl0dGVyLmVtaXQoKSxhLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiZhLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIikpfSxoPT57aC5lcnJvci5pbmNsdWRlcygiVW5hdXRob3JpemVk''@;'; put 'put ''Iik/KGEuc2hvdWxkTG9naW4ubmV4dCghMCksYS5zaG91bGRMb2dpbi5zdWJzY3JpYmUobT0+eyExPT09bSYmbG9jYXRpb24ucmVsb2FkKCl9KSk6aC5lcnJvci5pbmNsdWRlcygiRm9sZGVyIGRvZXNuJ3QgZXhpc3QuIikmJihjb25zb2xlLndhcm4oIlNBU2pzIFNBUyBzZXJ2aWNlcyBhcmUg''@;'; put 'put ''bm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLGEuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksYS5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpKX0pfSkoKX1zYXNqc01ha2VkYXRhQ2hlY2tpbmcoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlv''@;'; put 'put ''biooKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgZj15aShmdW5jdGlvbiooZCxoKXthLmNoZWNraW5nSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoeWkoZnVuY3Rpb24qKCl7YS5zYXNqc01ha2VkYXRhU3VjY2Vzc2Z1bGwoKS50aGVuKG09PnttJiYoY2xlYXJJbnRlcnZhbChhLmNo''@;'; put 'put ''ZWNraW5nSW50ZXJ2YWwpLGQobSkpfSkuY2F0Y2gobT0+e2NsZWFySW50ZXJ2YWwoYS5jaGVja2luZ0ludGVydmFsKSxoKG0pfSl9KSwxZTMpfSk7cmV0dXJuIGZ1bmN0aW9uKGQsaCl7cmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9KSgpfXNhc2pzTWFrZWRhdGFTdWNjZXNz''@;'; put 'put ''ZnVsbCgpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoZixkKT0+e2NvbnN0IG09YCR7YS5nZXRTYXNqc0NvbmZpZygpLmFwcExvY30vc2VydmljZXMvYWRtaW5gO2Euc2FzanNTZXJ2aWNlLmdldEZvbGRlckNvbnRlbnRzRnJvbURyaXZlKG0p''@;'; put 'put ''LnN1YnNjcmliZShfPT57Xy5maWxlcy5pbmNsdWRlcygibWFrZWRhdGEuc2FzIik/ZighMSk6ZighMCl9LF89PntfLmVycm9yLmluY2x1ZGVzKCJGb2xkZXIgZG9lc24ndCBleGlzdC4iKSYmZCgpfSl9KX0pKCl9Y2hlY2tWaXlhRGVwbG95KGEpe3ZhciBmPXRoaXM7cmV0dXJuIHlpKGZ1bmN0''@;'; put 'put ''aW9uKigpe2xldCBoPSExO2g9dHlwZW9mIGYuc2FzanNBZGFwdGVyLmdldEZvbGRlcjwidSI/eWllbGQgZi5hcHBMb2NDaGVjayhhKTp5aWVsZCBmLmFwcExvY0NoZWNrUHJlQXhpb3NkQWRhcHRlcihhKSxoJiZmLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuZW1pdCgpfSkoKX1hcHBMb2ND''@;'; put 'put ''aGVjayhhKXt2YXIgZj10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbigpe3ZhciBkPXlpKGZ1bmN0aW9uKihoLG0pe2xldCBPLF89ITE7dHJ5e089eWllbGQgZi5zYXNqc0FkYXB0ZXIuZ2V0Rm9sZGVyKGEpfWNhdGNoKFgpeyJMb2dpblJlcXVpcmVkRXJyb3IiPT09WC5uYW1lPyhm''@;'; put 'put ''LmFwcExvY0NoZWNrUGVuZGluZz0hMCxmLnNob3VsZExvZ2luLm5leHQoITApLGgoITEpKTpfPSEwfWlmKF8pcmV0dXJuIGNvbnNvbGUud2FybigiVml5YSBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLGYuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRh''@;'; put 'put ''TG9hZGVkKCksZi5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLGgoITEpO2goITApfSk7cmV0dXJuIGZ1bmN0aW9uKGgsbSl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9YXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKGEpe3JldHVybiBuZXcgUHJvbWlzZSgo''@;'; put 'put ''ZixkKT0+e2xldCBtPSExO3JldHVybiBmZXRjaChgL2ZvbGRlcnMvZm9sZGVycy9AaXRlbT9wYXRoPSR7YX1gKS50aGVuKF89Pig0MDQ9PT1fLnN0YXR1cyYmKG09ITApLF8udGV4dCgpKSkudGhlbihfPT57aWYodGhpcy5pc0xvZ2luUmVxdWlyZWQoXykpdGhpcy5hcHBMb2NDaGVja1BlbmRp''@;'; put 'put ''bmc9ITAsdGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKTtlbHNle2lmKG0pcmV0dXJuIGNvbnNvbGUud2FybigiVml5YSBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0''@;'; put 'put ''ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLGYoITEpO2xldCBPPW51bGw7dHJ5e089SlNPTi5wYXJzZShfKX1jYXRjaHt9aWYoTyYmTy5odHRwU3RhdHVzQ29kZSYmNDA0PT09Ty5odHRwU3RhdHVzQ29kZSlyZXR1cm4gY29uc29sZS53YXJuKCJWaXlhIHNlcnZpY2VzIGFyZSBub3QgcHJl''@;'; put 'put ''c2VudCBvbiB0aGUgY3VycmVudCBhcHBMb2MuIiksdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksZighMSk7ZighMCl9fSkuY2F0Y2goXz0+e2YoITEpfSl9KX1pc0xvZ2luUmVxdWlyZWQoYSl7cmV0dXJu''@;'; put 'put ''Lzxmb3JtLithY3Rpb249IiguKkxvZ29uW14iXSopLio+L2dtLnRlc3QoYSl9bG9nb3V0KCl7dGhpcy5zYXNqc0FkYXB0ZXIubG9nT3V0KCkudGhlbigoKT0+e2xvY2F0aW9uLnJlbG9hZCgpfSl9Z2V0U2FzanNDb25maWcoKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25m''@;'; put 'put ''aWcoKX1nZXRTYXNSZXF1ZXN0cygpe3JldHVybiB0aGlzLnNhc2pzQWRhcHRlci5nZXRTYXNSZXF1ZXN0cygpfXNldERlYnVnU3RhdGUoYSl7dGhpcy5zYXNqc0FkYXB0ZXIuc2V0RGVidWdTdGF0ZShhKX1nZXRTYXNqc0luc3RhbmNlKCl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyfWdldFNl''@;'; put 'put ''cnZlclR5cGUoKXtjb25zdCBhPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc2pzQ29uZmlnKCk7cmV0dXJuIGEuc2VydmVyVHlwZT9hLnNlcnZlclR5cGU6IlNBU1ZJWUEifWdldEV4ZWN1dGlvblBhdGgoKXtjb25zdCBhPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc2pzQ29uZmlnKCk7c3dpdGNo''@;'; put 'put ''KGEuc2VydmVyVHlwZSl7Y2FzZSBYdS5ELlNhc1ZpeWE6cmV0dXJuIGEucGF0aFNBU1ZpeWE7Y2FzZSBYdS5ELlNhczk6cmV0dXJuIGEucGF0aFNBUzk7Y2FzZSBYdS5ELlNhc2pzOnJldHVybiBhLnBhdGhTQVNKU319fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3''@;'; put 'put ''KGF8fGwpKHNyKEl2KSxzcihYaiksc3IoUnMpLHNyKE1pZSksc3IoeTEpLHNyKExhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCkseTE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmluamVj''@;'; put 'put ''dG9yPWF9bG9nKGEsZil7dGhpcy5pbmplY3RTYXNTZXJ2aWNlKCksdGhpcy5zYXNqc0NvbmZpZz8uZGVidWcmJihmP2NvbnNvbGUubG9nKGEsZik6Y29uc29sZS5sb2coYSkpfWVycm9yKGEsZil7Y29uc29sZS5lcnJvcihhLGYpfWxvZ1JlcXVlc3REYXRhKGEsZil7aWYodGhpcy5sb2coIi0t''@;'; put 'put ''LSBBZGFwdGVyIFJlcXVlc3QgSW5wdXQgLS0tIiksdGhpcy5sb2coYSksZil7Zm9yKGxldCBkIG9mIE9iamVjdC5rZXlzKGYpKXRoaXMubG9nKGQsZltkXSk7dGhpcy5sb2coIi0tLS0tLSIpfWVsc2UgdGhpcy5sb2coIm5vIGRhdGEgc2VudCIpfWluamVjdFNhc1NlcnZpY2UoKXtpZighdGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZyl7Y29uc3QgYT10aGlzLmluamVjdG9yLmdldChwbCk7dGhpcy5zYXNqc0NvbmZpZz1hLmdldFNhc2pzQ29uZmlnKCl9fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihBbCkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmws''@;'; put 'put ''ZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2NvbnN0IGtpZT1mdW5jdGlvbiB4Q2UobCxjKXtyZXR1cm4gbD09PWN8fGwhPWwmJmMhPWN9LG1EPWZ1bmN0aW9uIEFDZShsLGMpe2Zvcih2YXIgYT1sLmxlbmd0aDthLS07KWlmKGtpZShsW2FdWzBdLGMpKXJl''@;'; put 'put ''dHVybiBhO3JldHVybi0xfTt2YXIgT0NlPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gUHYobCl7dmFyIGM9LTEsYT1udWxsPT1sPzA6bC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2M8YTspe3ZhciBmPWxbY107dGhpcy5zZXQoZlswXSxmWzFdKX19UHYucHJvdG90eXBlLmNs''@;'; put 'put ''ZWFyPWZ1bmN0aW9uIGtDZSgpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LFB2LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gRENlKGwpe3ZhciBjPXRoaXMuX19kYXRhX18sYT1tRChjLGwpO3JldHVybiEoYTwwfHwoYT09Yy5sZW5ndGgtMT9jLnBvcCgpOk9DZS5jYWxsKGMsYSwx''@;'; put 'put ''KSwtLXRoaXMuc2l6ZSwwKSl9LFB2LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gUkNlKGwpe3ZhciBjPXRoaXMuX19kYXRhX18sYT1tRChjLGwpO3JldHVybiBhPDA/dm9pZCAwOmNbYV1bMV19LFB2LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gUENlKGwpe3JldHVybiBtRCh0aGlzLl9fZGF0YV9f''@;'; put 'put ''LGwpPi0xfSxQdi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIEhDZShsLGMpe3ZhciBhPXRoaXMuX19kYXRhX18sZj1tRChhLGwpO3JldHVybiBmPDA/KCsrdGhpcy5zaXplLGEucHVzaChbbCxjXSkpOmFbZl1bMV09Yyx0aGlzfTtjb25zdCBnRD1QdixFaWU9Im9iamVjdCI9PXR5cGVvZiBnbG9i''@;'; put 'put ''YWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsO3ZhciAkQ2U9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZjtjb25zdCB4aD1FaWV8fCRDZXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxzND14aC5TeW1ib2w7''@;'; put 'put ''dmFyIHhpZT1PYmplY3QucHJvdG90eXBlLFhDZT14aWUuaGFzT3duUHJvcGVydHksSkNlPXhpZS50b1N0cmluZyxJQz1zND9zNC50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIG5TZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBBaWU9czQ/czQudG9TdHJpbmdUYWc6dm9pZCAwO2NvbnN0''@;'; put 'put ''IEZ2PWZ1bmN0aW9uIGxTZShsKXtyZXR1cm4gbnVsbD09bD92b2lkIDA9PT1sPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpBaWUmJkFpZSBpbiBPYmplY3QobCk/ZnVuY3Rpb24gUUNlKGwpe3ZhciBjPVhDZS5jYWxsKGwsSUMpLGE9bFtJQ107dHJ5e2xbSUNdPXZvaWQg''@;'; put 'put ''MDt2YXIgZj0hMH1jYXRjaHt9dmFyIGQ9SkNlLmNhbGwobCk7cmV0dXJuIGYmJihjP2xbSUNdPWE6ZGVsZXRlIGxbSUNdKSxkfShsKTpmdW5jdGlvbiByU2UobCl7cmV0dXJuIG5TZS5jYWxsKGwpfShsKX0sUkM9ZnVuY3Rpb24gc1NlKGwpe3ZhciBjPXR5cGVvZiBsO3JldHVybiBudWxsIT1s''@;'; put 'put ''JiYoIm9iamVjdCI9PWN8fCJmdW5jdGlvbiI9PWMpfSxUaWU9ZnVuY3Rpb24gaFNlKGwpe2lmKCFSQyhsKSlyZXR1cm4hMTt2YXIgYz1GdihsKTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1jfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1jfHwiW29iamVjdCBBc3luY0Z1bmN0''@;'; put 'put ''aW9uXSI9PWN8fCJbb2JqZWN0IFByb3h5XSI9PWN9O3ZhciBsLHBTZT14aFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sT2llPShsPS9bXi5dKyQvLmV4ZWMocFNlJiZwU2Uua2V5cyYmcFNlLmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitsOiIiO3ZhciB5U2U9RnVuY3Rpb24u''@;'; put 'put ''cHJvdG90eXBlLnRvU3RyaW5nO2NvbnN0IFRnPWZ1bmN0aW9uIGJTZShsKXtpZihudWxsIT1sKXt0cnl7cmV0dXJuIHlTZS5jYWxsKGwpfWNhdGNoe310cnl7cmV0dXJuIGwrIiJ9Y2F0Y2h7fX1yZXR1cm4iIn07dmFyIHdTZT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxFU2U9UmVn''@;'; put 'put ''RXhwKCJeIitGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4r''@;'; put 'put ''Pyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtjb25zdCBBU2U9ZnVuY3Rpb24geFNlKGwpe3JldHVybiEoIVJDKGwpfHxmdW5jdGlvbiBtU2UobCl7cmV0dXJuISFPaWUmJk9pZSBpbiBsfShsKSkmJihUaWUobCk/RVNlOndTZSkudGVzdChUZyhsKSl9LE9nPWZ1bmN0aW9uIERTZShsLGMpe3Zh''@;'; put 'put ''ciBhPWZ1bmN0aW9uIFRTZShsLGMpe3JldHVybiBsPy5bY119KGwsYyk7cmV0dXJuIEFTZShhKT9hOnZvaWQgMH0sTEM9T2coeGgsIk1hcCIpLFBDPU9nKE9iamVjdCwiY3JlYXRlIik7dmFyIEJTZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBaU2U9T2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBIdihsKXt2YXIgYz0tMSxhPW51bGw9PWw/MDpsLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrYzxhOyl7dmFyIGY9bFtjXTt0aGlzLnNldChmWzBdLGZbMV0pfX1Idi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gTFNlKCl7dGhpcy5fX2Rh''@;'; put 'put ''dGFfXz1QQz9QQyhudWxsKTp7fSx0aGlzLnNpemU9MH0sSHYucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBGU2UobCl7dmFyIGM9dGhpcy5oYXMobCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW2xdO3JldHVybiB0aGlzLnNpemUtPWM/MTowLGN9LEh2LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24g''@;'; put 'put ''alNlKGwpe3ZhciBjPXRoaXMuX19kYXRhX187aWYoUEMpe3ZhciBhPWNbbF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09YT92b2lkIDA6YX1yZXR1cm4gQlNlLmNhbGwoYyxsKT9jW2xdOnZvaWQgMH0sSHYucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBZU2UobCl7dmFyIGM9''@;'; put 'put ''dGhpcy5fX2RhdGFfXztyZXR1cm4gUEM/dm9pZCAwIT09Y1tsXTpaU2UuY2FsbChjLGwpfSxIdi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uICRTZShsLGMpe3ZhciBhPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMobCk/MDoxLGFbbF09UEMmJnZvaWQgMD09PWM/Il9f''@;'; put 'put ''bG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOmMsdGhpc307Y29uc3QgRGllPUh2LHZEPWZ1bmN0aW9uIGVNZShsLGMpe3ZhciBhPWwuX19kYXRhX187cmV0dXJuIGZ1bmN0aW9uIEpTZShsKXt2YXIgYz10eXBlb2YgbDtyZXR1cm4ic3RyaW5nIj09Y3x8Im51bWJlciI9PWN8fCJzeW1ib2wiPT1j''@;'; put 'put ''fHwiYm9vbGVhbiI9PWM/Il9fcHJvdG9fXyIhPT1sOm51bGw9PT1sfShjKT9hWyJzdHJpbmciPT10eXBlb2YgYz8ic3RyaW5nIjoiaGFzaCJdOmEubWFwfTtmdW5jdGlvbiBOdihsKXt2YXIgYz0tMSxhPW51bGw9PWw/MDpsLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrYzxhOyl7dmFyIGY9''@;'; put 'put ''bFtjXTt0aGlzLnNldChmWzBdLGZbMV0pfX1Odi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gcVNlKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgRGllLG1hcDpuZXcoTEN8fGdEKSxzdHJpbmc6bmV3IERpZX19LE52LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gdE1l''@;'; put 'put ''KGwpe3ZhciBjPXZEKHRoaXMsbCkuZGVsZXRlKGwpO3JldHVybiB0aGlzLnNpemUtPWM/MTowLGN9LE52LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gck1lKGwpe3JldHVybiB2RCh0aGlzLGwpLmdldChsKX0sTnYucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBvTWUobCl7cmV0dXJuIHZEKHRoaXMs''@;'; put 'put ''bCkuaGFzKGwpfSxOdi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIGxNZShsLGMpe3ZhciBhPXZEKHRoaXMsbCksZj1hLnNpemU7cmV0dXJuIGEuc2V0KGwsYyksdGhpcy5zaXplKz1hLnNpemU9PWY/MDoxLHRoaXN9O2NvbnN0IG96PU52O2Z1bmN0aW9uIFZ2KGwpe3ZhciBjPXRoaXMuX19kYXRh''@;'; put 'put ''X189bmV3IGdEKGwpO3RoaXMuc2l6ZT1jLnNpemV9VnYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFZDZSgpe3RoaXMuX19kYXRhX189bmV3IGdELHRoaXMuc2l6ZT0wfSxWdi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGpDZShsKXt2YXIgYz10aGlzLl9fZGF0YV9fLGE9Yy5kZWxldGUo''@;'; put 'put ''bCk7cmV0dXJuIHRoaXMuc2l6ZT1jLnNpemUsYX0sVnYucHJvdG90eXBlLmdldD1mdW5jdGlvbiBVQ2UobCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGwpfSxWdi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFlDZShsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMobCl9LFZ2LnByb3RvdHlw''@;'; put 'put ''ZS5zZXQ9ZnVuY3Rpb24gY01lKGwsYyl7dmFyIGE9dGhpcy5fX2RhdGFfXztpZihhIGluc3RhbmNlb2YgZ0Qpe3ZhciBmPWEuX19kYXRhX187aWYoIUxDfHxmLmxlbmd0aDwxOTkpcmV0dXJuIGYucHVzaChbbCxjXSksdGhpcy5zaXplPSsrYS5zaXplLHRoaXM7YT10aGlzLl9fZGF0YV9fPW5l''@;'; put 'put ''dyBveihmKX1yZXR1cm4gYS5zZXQobCxjKSx0aGlzLnNpemU9YS5zaXplLHRoaXN9O2NvbnN0IGRNZT1Wdjt2YXIgbU1lPWZ1bmN0aW9uKCl7dHJ5e3ZhciBsPU9nKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gbCh7fSwiIix7fSksbH1jYXRjaHt9fSgpO2NvbnN0IElpZT1tTWUs''@;'; put 'put ''UmllPWZ1bmN0aW9uIGdNZShsLGMsYSl7Il9fcHJvdG9fXyI9PWMmJklpZT9JaWUobCxjLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTphLHdyaXRhYmxlOiEwfSk6bFtjXT1hfTt2YXIgeU1lPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Y29uc3QgTGllPWZ1''@;'; put 'put ''bmN0aW9uIGJNZShsLGMsYSl7dmFyIGY9bFtjXTsoIXlNZS5jYWxsKGwsYyl8fCFraWUoZixhKXx8dm9pZCAwPT09YSYmIShjIGluIGwpKSYmUmllKGwsYyxhKX0seUQ9ZnVuY3Rpb24gX01lKGwsYyxhLGYpe3ZhciBkPSFhO2F8fChhPXt9KTtmb3IodmFyIGg9LTEsbT1jLmxlbmd0aDsrK2g8''@;'; put 'put ''bTspe3ZhciBfPWNbaF0sTz1mP2YoYVtfXSxsW19dLF8sYSxsKTp2b2lkIDA7dm9pZCAwPT09TyYmKE89bFtfXSksZD9SaWUoYSxfLE8pOkxpZShhLF8sTyl9cmV0dXJuIGF9LEJ2PWZ1bmN0aW9uIFNNZShsKXtyZXR1cm4gbnVsbCE9bCYmIm9iamVjdCI9PXR5cGVvZiBsfSxQaWU9ZnVuY3Rp''@;'; put 'put ''b24ga01lKGwpe3JldHVybiBCdihsKSYmIltvYmplY3QgQXJndW1lbnRzXSI9PUZ2KGwpfTt2YXIgRmllPU9iamVjdC5wcm90b3R5cGUsRU1lPUZpZS5oYXNPd25Qcm9wZXJ0eSx4TWU9RmllLnByb3BlcnR5SXNFbnVtZXJhYmxlLEFNZT1QaWUoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRz''@;'; put 'put ''fSgpKT9QaWU6ZnVuY3Rpb24obCl7cmV0dXJuIEJ2KGwpJiZFTWUuY2FsbChsLCJjYWxsZWUiKSYmIXhNZS5jYWxsKGwsImNhbGxlZSIpfTtjb25zdCBUTWU9QU1lLGp2PUFycmF5LmlzQXJyYXk7dmFyIEhpZT0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBvcnRzLm5v''@;'; put 'put ''ZGVUeXBlJiZleHBvcnRzLE5pZT1IaWUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxWaWU9TmllJiZOaWUuZXhwb3J0cz09PUhpZT94aC5CdWZmZXI6dm9pZCAwO2NvbnN0IEJpZT0oVmllP1ZpZS5pc0J1ZmZlcjp2b2lkIDApfHxm''@;'; put 'put ''dW5jdGlvbiBETWUoKXtyZXR1cm4hMX07dmFyIEhNZT0vXig/OjB8WzEtOV1cZCopJC87Y29uc3QgVk1lPWZ1bmN0aW9uIE5NZShsLGMpe3ZhciBhPXR5cGVvZiBsO3JldHVybiEhKGM9Yz8/OTAwNzE5OTI1NDc0MDk5MSkmJigibnVtYmVyIj09YXx8InN5bWJvbCIhPWEmJkhNZS50ZXN0KGwp''@;'; put 'put ''KSYmbD4tMSYmbCUxPT0wJiZsPGN9LGppZT1mdW5jdGlvbiBqTWUobCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBsJiZsPi0xJiZsJTE9PTAmJmw8PTkwMDcxOTkyNTQ3NDA5OTF9O3ZhciBycz17fTtyc1siW29iamVjdCBGbG9hdDMyQXJyYXldIl09cnNbIltvYmplY3QgRmxvYXQ2NEFycmF5''@;'; put 'put ''XSJdPXJzWyJbb2JqZWN0IEludDhBcnJheV0iXT1yc1siW29iamVjdCBJbnQxNkFycmF5XSJdPXJzWyJbb2JqZWN0IEludDMyQXJyYXldIl09cnNbIltvYmplY3QgVWludDhBcnJheV0iXT1yc1siW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1yc1siW29iamVjdCBVaW50MTZBcnJheV0i''@;'; put 'put ''XT1yc1siW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxyc1siW29iamVjdCBBcmd1bWVudHNdIl09cnNbIltvYmplY3QgQXJyYXldIl09cnNbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09cnNbIltvYmplY3QgQm9vbGVhbl0iXT1yc1siW29iamVjdCBEYXRhVmlld10iXT1yc1siW29iamVjdCBE''@;'; put 'put ''YXRlXSJdPXJzWyJbb2JqZWN0IEVycm9yXSJdPXJzWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPXJzWyJbb2JqZWN0IE1hcF0iXT1yc1siW29iamVjdCBOdW1iZXJdIl09cnNbIltvYmplY3QgT2JqZWN0XSJdPXJzWyJbb2JqZWN0IFJlZ0V4cF0iXT1yc1siW29iamVjdCBTZXRdIl09cnNbIltvYmpl''@;'; put 'put ''Y3QgU3RyaW5nXSJdPXJzWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7Y29uc3QgYXo9ZnVuY3Rpb24gcGtlKGwpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbChjKX19O3ZhciB6aWU9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0''@;'; put 'put ''cyxGQz16aWUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxsej1GQyYmRkMuZXhwb3J0cz09PXppZSYmRWllLnByb2Nlc3M7Y29uc3QgenY9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEZDJiZGQy5yZXF1aXJlJiZGQy5yZXF1aXJlKCJ1''@;'; put 'put ''dGlsIikudHlwZXN8fGx6JiZsei5iaW5kaW5nJiZsei5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2h7fX0oKTt2YXIgVWllPXp2JiZ6di5pc1R5cGVkQXJyYXk7Y29uc3QgeWtlPVVpZT9heihVaWUpOmZ1bmN0aW9uIGRrZShsKXtyZXR1cm4gQnYobCkmJmppZShsLmxlbmd0aCkmJiEhcnNbRnYobCld''@;'; put 'put ''fTt2YXIgX2tlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7Y29uc3QgWmllPWZ1bmN0aW9uIHdrZShsLGMpe3ZhciBhPWp2KGwpLGY9IWEmJlRNZShsKSxkPSFhJiYhZiYmQmllKGwpLGg9IWEmJiFmJiYhZCYmeWtlKGwpLG09YXx8Znx8ZHx8aCxfPW0/ZnVuY3Rpb24gd01lKGws''@;'; put 'put ''Yyl7Zm9yKHZhciBhPS0xLGY9QXJyYXkobCk7KythPGw7KWZbYV09YyhhKTtyZXR1cm4gZn0obC5sZW5ndGgsU3RyaW5nKTpbXSxPPV8ubGVuZ3RoO2Zvcih2YXIgWCBpbiBsKShjfHxfa2UuY2FsbChsLFgpKSYmKCFtfHwhKCJsZW5ndGgiPT1YfHxkJiYoIm9mZnNldCI9PVh8fCJwYXJlbnQi''@;'; put 'put ''PT1YKXx8aCYmKCJidWZmZXIiPT1YfHwiYnl0ZUxlbmd0aCI9PVh8fCJieXRlT2Zmc2V0Ij09WCl8fFZNZShYLE8pKSkmJl8ucHVzaChYKTtyZXR1cm4gX307dmFyIENrZT1PYmplY3QucHJvdG90eXBlO2NvbnN0IHN6PWZ1bmN0aW9uIFNrZShsKXt2YXIgYz1sJiZsLmNvbnN0cnVjdG9yO3Jl''@;'; put 'put ''dHVybiBsPT09KCJmdW5jdGlvbiI9PXR5cGVvZiBjJiZjLnByb3RvdHlwZXx8Q2tlKX0sWWllPWZ1bmN0aW9uIE1rZShsLGMpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gbChjKGEpKX19LEVrZT1ZaWUoT2JqZWN0LmtleXMsT2JqZWN0KTt2YXIgQWtlPU9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHk7Y29uc3QgV2llPWZ1bmN0aW9uIERrZShsKXtyZXR1cm4gbnVsbCE9bCYmamllKGwubGVuZ3RoKSYmIVRpZShsKX0sdXo9ZnVuY3Rpb24gSWtlKGwpe3JldHVybiBXaWUobCk/WmllKGwpOmZ1bmN0aW9uIFRrZShsKXtpZighc3oobCkpcmV0dXJuIEVrZShsKTt2YXIgYz1b''@;'; put 'put ''XTtmb3IodmFyIGEgaW4gT2JqZWN0KGwpKUFrZS5jYWxsKGwsYSkmJiJjb25zdHJ1Y3RvciIhPWEmJmMucHVzaChhKTtyZXR1cm4gY30obCl9O3ZhciBOa2U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBCa2U9ZnVuY3Rpb24gVmtlKGwpe2lmKCFSQyhsKSlyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gUGtlKGwpe3ZhciBjPVtdO2lmKG51bGwhPWwpZm9yKHZhciBhIGluIE9iamVjdChsKSljLnB1c2goYSk7cmV0dXJuIGN9KGwpO3ZhciBjPXN6KGwpLGE9W107Zm9yKHZhciBmIGluIGwpImNvbnN0cnVjdG9yIj09ZiYmKGN8fCFOa2UuY2FsbChsLGYpKXx8YS5wdXNoKGYpO3Jl''@;'; put 'put ''dHVybiBhfSxjej1mdW5jdGlvbiBqa2UobCl7cmV0dXJuIFdpZShsKT9aaWUobCwhMCk6QmtlKGwpfTt2YXIgR2llPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsJGllPUdpZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1v''@;'; put 'put ''ZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLEtpZT0kaWUmJiRpZS5leHBvcnRzPT09R2llP3hoLkJ1ZmZlcjp2b2lkIDAscWllPUtpZT9LaWUuYWxsb2NVbnNhZmU6dm9pZCAwO2NvbnN0IFhpZT1mdW5jdGlvbiBYa2UoKXtyZXR1cm5bXX07dmFyIFFrZT1PYmplY3QucHJvdG90eXBl''@;'; put 'put ''LnByb3BlcnR5SXNFbnVtZXJhYmxlLEppZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVFZT1KaWU/ZnVuY3Rpb24obCl7cmV0dXJuIG51bGw9PWw/W106KGw9T2JqZWN0KGwpLGZ1bmN0aW9uIEtrZShsLGMpe2Zvcih2YXIgYT0tMSxmPW51bGw9PWw/MDpsLmxlbmd0aCxkPTAsaD1b''@;'; put 'put ''XTsrK2E8Zjspe3ZhciBtPWxbYV07YyhtLGEsbCkmJihoW2QrK109bSl9cmV0dXJuIGh9KEppZShsKSxmdW5jdGlvbihjKXtyZXR1cm4gUWtlLmNhbGwobCxjKX0pKX06WGllO2NvbnN0IGZ6PWVFZSxRaWU9ZnVuY3Rpb24gckVlKGwsYyl7Zm9yKHZhciBhPS0xLGY9Yy5sZW5ndGgsZD1sLmxl''@;'; put 'put ''bmd0aDsrK2E8ZjspbFtkK2FdPWNbYV07cmV0dXJuIGx9LGVvZT1ZaWUoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7dmFyIGFFZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGwpe2Zvcih2YXIgYz1bXTtsOylRaWUoYyxmeihsKSksbD1lb2UobCk7cmV0dXJu''@;'; put 'put ''IGN9OlhpZTtjb25zdCB0b2U9YUVlLG5vZT1mdW5jdGlvbiB1RWUobCxjLGEpe3ZhciBmPWMobCk7cmV0dXJuIGp2KGwpP2Y6UWllKGYsYShsKSl9LGZFZT1mdW5jdGlvbiBjRWUobCl7cmV0dXJuIG5vZShsLHV6LGZ6KX0saEVlPWZ1bmN0aW9uIGRFZShsKXtyZXR1cm4gbm9lKGwsY3osdG9l''@;'; put 'put ''KX0sZHo9T2coeGgsIkRhdGFWaWV3IiksaHo9T2coeGgsIlByb21pc2UiKSxwej1PZyh4aCwiU2V0IiksbXo9T2coeGgsIldlYWtNYXAiKTt2YXIgcm9lPSJbb2JqZWN0IE1hcF0iLGlvZT0iW29iamVjdCBQcm9taXNlXSIsb29lPSJbb2JqZWN0IFNldF0iLGFvZT0iW29iamVjdCBXZWFrTWFw''@;'; put 'put ''XSIsbG9lPSJbb2JqZWN0IERhdGFWaWV3XSIsYkVlPVRnKGR6KSxfRWU9VGcoTEMpLHdFZT1UZyhoeiksQ0VlPVRnKHB6KSxTRWU9VGcobXopLERnPUZ2OyhkeiYmRGcobmV3IGR6KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1sb2V8fExDJiZEZyhuZXcgTEMpIT1yb2V8fGh6JiZEZyhoei5yZXNv''@;'; put 'put ''bHZlKCkpIT1pb2V8fHB6JiZEZyhuZXcgcHopIT1vb2V8fG16JiZEZyhuZXcgbXopIT1hb2UpJiYoRGc9ZnVuY3Rpb24obCl7dmFyIGM9RnYobCksYT0iW29iamVjdCBPYmplY3RdIj09Yz9sLmNvbnN0cnVjdG9yOnZvaWQgMCxmPWE/VGcoYSk6IiI7aWYoZilzd2l0Y2goZil7Y2FzZSBiRWU6''@;'; put 'put ''cmV0dXJuIGxvZTtjYXNlIF9FZTpyZXR1cm4gcm9lO2Nhc2Ugd0VlOnJldHVybiBpb2U7Y2FzZSBDRWU6cmV0dXJuIG9vZTtjYXNlIFNFZTpyZXR1cm4gYW9lfXJldHVybiBjfSk7Y29uc3QgZ3o9RGc7dmFyIGtFZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IHNvZT14''@;'; put 'put ''aC5VaW50OEFycmF5LHZ6PWZ1bmN0aW9uIFRFZShsKXt2YXIgYz1uZXcgbC5jb25zdHJ1Y3RvcihsLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgc29lKGMpLnNldChuZXcgc29lKGwpKSxjfTt2YXIgSUVlPS9cdyokLzt2YXIgdW9lPXM0P3M0LnByb3RvdHlwZTp2b2lkIDAsY29lPXVvZT91b2Uu''@;'; put 'put ''dmFsdWVPZjp2b2lkIDA7Y29uc3Qgb3hlPWZ1bmN0aW9uIGl4ZShsLGMsYSl7dmFyIGY9bC5jb25zdHJ1Y3Rvcjtzd2l0Y2goYyl7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuIHZ6KGwpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4g''@;'; put 'put ''bmV3IGYoK2wpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybiBmdW5jdGlvbiBPRWUobCxjKXt2YXIgYT1jP3Z6KGwuYnVmZmVyKTpsLmJ1ZmZlcjtyZXR1cm4gbmV3IGwuY29uc3RydWN0b3IoYSxsLmJ5dGVPZmZzZXQsbC5ieXRlTGVuZ3RoKX0obCxhKTtjYXNlIltvYmplY3QgRmxv''@;'; put 'put ''YXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFt''@;'; put 'put ''cGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZnVuY3Rpb24gSEVlKGwsYyl7dmFyIGE9Yz92eihsLmJ1ZmZlcik6bC5idWZmZXI7cmV0dXJuIG5ldyBsLmNvbnN0cnVjdG9yKGEsbC5ieXRlT2Zmc2V0LGwubGVu''@;'; put 'put ''Z3RoKX0obCxhKTtjYXNlIltvYmplY3QgTWFwXSI6Y2FzZSJbb2JqZWN0IFNldF0iOnJldHVybiBuZXcgZjtjYXNlIltvYmplY3QgTnVtYmVyXSI6Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVybiBuZXcgZihsKTtjYXNlIltvYmplY3QgUmVnRXhwXSI6cmV0dXJuIGZ1bmN0aW9uIFJFZShs''@;'; put 'put ''KXt2YXIgYz1uZXcgbC5jb25zdHJ1Y3RvcihsLnNvdXJjZSxJRWUuZXhlYyhsKSk7cmV0dXJuIGMubGFzdEluZGV4PWwubGFzdEluZGV4LGN9KGwpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4gZnVuY3Rpb24gUEVlKGwpe3JldHVybiBjb2U/T2JqZWN0KGNvZS5jYWxsKGwpKTp7fX0o''@;'; put 'put ''bCl9fTt2YXIgZm9lPU9iamVjdC5jcmVhdGUsYXhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe31yZXR1cm4gZnVuY3Rpb24oYyl7aWYoIVJDKGMpKXJldHVybnt9O2lmKGZvZSlyZXR1cm4gZm9lKGMpO2wucHJvdG90eXBlPWM7dmFyIGE9bmV3IGw7cmV0dXJuIGwucHJvdG90eXBlPXZvaWQg''@;'; put 'put ''MCxhfX0oKTtjb25zdCBseGU9YXhlO3ZhciBkb2U9enYmJnp2LmlzTWFwO2NvbnN0IHB4ZT1kb2U/YXooZG9lKTpmdW5jdGlvbiBmeGUobCl7cmV0dXJuIEJ2KGwpJiYiW29iamVjdCBNYXBdIj09Z3oobCl9O3ZhciBob2U9enYmJnp2LmlzU2V0O2NvbnN0IGJ4ZT1ob2U/YXooaG9lKTpmdW5j''@;'; put 'put ''dGlvbiBneGUobCl7cmV0dXJuIEJ2KGwpJiYiW29iamVjdCBTZXRdIj09Z3oobCl9O3ZhciBwb2U9IltvYmplY3QgQXJndW1lbnRzXSIsbW9lPSJbb2JqZWN0IEZ1bmN0aW9uXSIsZ29lPSJbb2JqZWN0IE9iamVjdF0iLFlsPXt9O1lsW3BvZV09WWxbIltvYmplY3QgQXJyYXldIl09WWxbIltv''@;'; put 'put ''YmplY3QgQXJyYXlCdWZmZXJdIl09WWxbIltvYmplY3QgRGF0YVZpZXddIl09WWxbIltvYmplY3QgQm9vbGVhbl0iXT1ZbFsiW29iamVjdCBEYXRlXSJdPVlsWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1ZbFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09WWxbIltvYmplY3QgSW50OEFycmF5''@;'; put 'put ''XSJdPVlsWyJbb2JqZWN0IEludDE2QXJyYXldIl09WWxbIltvYmplY3QgSW50MzJBcnJheV0iXT1ZbFsiW29iamVjdCBNYXBdIl09WWxbIltvYmplY3QgTnVtYmVyXSJdPVlsW2dvZV09WWxbIltvYmplY3QgUmVnRXhwXSJdPVlsWyJbb2JqZWN0IFNldF0iXT1ZbFsiW29iamVjdCBTdHJpbmdd''@;'; put 'put ''Il09WWxbIltvYmplY3QgU3ltYm9sXSJdPVlsWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09WWxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09WWxbIltvYmplY3QgVWludDE2QXJyYXldIl09WWxbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsWWxbIltvYmplY3QgRXJyb3JdIl09WWxb''@;'; put 'put ''bW9lXT1ZbFsiW29iamVjdCBXZWFrTWFwXSJdPSExO2NvbnN0IFd4ZT1mdW5jdGlvbiBiRChsLGMsYSxmLGQsaCl7dmFyIG0sXz0xJmMsTz0yJmMsWD00JmM7aWYoYSYmKG09ZD9hKGwsZixkLGgpOmEobCkpLHZvaWQgMCE9PW0pcmV0dXJuIG07aWYoIVJDKGwpKXJldHVybiBsO3ZhciBhZT1q''@;'; put 'put ''dihsKTtpZihhZSl7aWYobT1mdW5jdGlvbiBFRWUobCl7dmFyIGM9bC5sZW5ndGgsYT1uZXcgbC5jb25zdHJ1Y3RvcihjKTtyZXR1cm4gYyYmInN0cmluZyI9PXR5cGVvZiBsWzBdJiZrRWUuY2FsbChsLCJpbmRleCIpJiYoYS5pbmRleD1sLmluZGV4LGEuaW5wdXQ9bC5pbnB1dCksYX0obCks''@;'; put 'put ''IV8pcmV0dXJuIGZ1bmN0aW9uIEdrZShsLGMpe3ZhciBhPS0xLGY9bC5sZW5ndGg7Zm9yKGN8fChjPUFycmF5KGYpKTsrK2E8ZjspY1thXT1sW2FdO3JldHVybiBjfShsLG0pfWVsc2V7dmFyIHBlPWd6KGwpLGJlPXBlPT1tb2V8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PXBlO2lm''@;'; put 'put ''KEJpZShsKSlyZXR1cm4gZnVuY3Rpb24gWWtlKGwsYyl7aWYoYylyZXR1cm4gbC5zbGljZSgpO3ZhciBhPWwubGVuZ3RoLGY9cWllP3FpZShhKTpuZXcgbC5jb25zdHJ1Y3RvcihhKTtyZXR1cm4gbC5jb3B5KGYpLGZ9KGwsXyk7aWYocGU9PWdvZXx8cGU9PXBvZXx8YmUmJiFkKXtpZihtPU98''@;'; put 'put ''fGJlP3t9OmZ1bmN0aW9uIHN4ZShsKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgbC5jb25zdHJ1Y3Rvcnx8c3oobCk/e306bHhlKGVvZShsKSl9KGwpLCFfKXJldHVybiBPP2Z1bmN0aW9uIGxFZShsLGMpe3JldHVybiB5RChsLHRvZShsKSxjKX0obCxmdW5jdGlvbiB6a2UobCxjKXtyZXR1''@;'; put 'put ''cm4gbCYmeUQoYyxjeihjKSxsKX0obSxsKSk6ZnVuY3Rpb24gdEVlKGwsYyl7cmV0dXJuIHlEKGwsZnoobCksYyl9KGwsZnVuY3Rpb24gUmtlKGwsYyl7cmV0dXJuIGwmJnlEKGMsdXooYyksbCl9KG0sbCkpfWVsc2V7aWYoIVlsW3BlXSlyZXR1cm4gZD9sOnt9O209b3hlKGwscGUsXyl9fWh8''@;'; put 'put ''fChoPW5ldyBkTWUpO3ZhciB4ZT1oLmdldChsKTtpZih4ZSlyZXR1cm4geGU7aC5zZXQobCxtKSxieGUobCk/bC5mb3JFYWNoKGZ1bmN0aW9uKGx0KXttLmFkZChiRChsdCxjLGEsbHQsbCxoKSl9KTpweGUobCkmJmwuZm9yRWFjaChmdW5jdGlvbihsdCxkdCl7bS5zZXQoZHQsYkQobHQsYyxh''@;'; put 'put ''LGR0LGwsaCkpfSk7dmFyIFplPWFlP3ZvaWQgMDooWD9PP2hFZTpmRWU6Tz9jejp1eikobCk7cmV0dXJuIGZ1bmN0aW9uIGhNZShsLGMpe2Zvcih2YXIgYT0tMSxmPW51bGw9PWw/MDpsLmxlbmd0aDsrK2E8ZiYmITEhPT1jKGxbYV0sYSxsKTspO30oWmV8fGwsZnVuY3Rpb24obHQsZHQpe1pl''@;'; put 'put ''JiYobHQ9bFtkdD1sdF0pLExpZShtLGR0LGJEKGx0LGMsYSxkdCxsLGgpKX0pLG19LF9EPWZ1bmN0aW9uIEt4ZShsKXtyZXR1cm4gV3hlKGwsNSl9O3ZhciBxeGU9VCg5Mjg3Myk7bGV0IFB1PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLnNob3duTGlicmFyaWVzPTUwLHRoaXMu''@;'; put 'put ''bG9hZE1vcmVDb3VudD01MCx0aGlzLmlzTWljcm9zb2Z0PSExLHRoaXMuaXNNaWNyb3NvZnQ9dGhpcy5pc0lFb3JFREdFKCksY29uc29sZS5sb2coIklzIElFIG9yIEVkZ2U/Iix0aGlzLmlzTWljcm9zb2Z0KX1jb252ZXJ0SnNEYXRlVG9TYXNEYXRlKGEsZj0iZGF5cyIpe2xldCBkLGg9MDtk''@;'; put 'put ''PWEgaW5zdGFuY2VvZiBEYXRlP2E6bmV3IERhdGUoYSksaD1uZXcgRGF0ZShEYXRlLlVUQyhkLmdldEZ1bGxZZWFyKCksZC5nZXRNb250aCgpLGQuZ2V0RGF0ZSgpLGQuZ2V0SG91cnMoKSxkLmdldE1pbnV0ZXMoKSxkLmdldFNlY29uZHMoKSkpLnZhbHVlT2YoKTtjb25zdCBPPWgrMzE1NjE5''@;'; put 'put ''MmU1O3N3aXRjaChmKXtjYXNlImRheXMiOntsZXQgWD1PLzg2NGU1O3JldHVybiBYPU1hdGguYWJzKFgpLFg9TWF0aC5mbG9vcihYKSxYfWNhc2Uic2Vjb25kcyI6cmV0dXJuIE8vMWUzfXJldHVybiAwfWNvbnZlcnRTYXNEYXlzVG9Kc0RhdGUoYSxmPSJkYXlzIil7aWYoIm51bWJlciIhPXR5''@;'; put 'put ''cGVvZiBhJiYoYT1wYXJzZUZsb2F0KGEpKSwic2Vjb25kcyI9PT1mKXtsZXQgXz0xZTMqYS0zMTU2MTkyZTU7cmV0dXJuIF8rPTYwKm5ldyBEYXRlKF8pLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzLG5ldyBEYXRlKF8pfXJldHVybiBuZXcgRGF0ZSg4NjRlNSphLTMxNTYxOTJlNSl9dHJlZU9u''@;'; put 'put ''RmlsdGVyKGEsZil7bGV0IGQ9YS5zZWFyY2hTdHJpbmc/YS5zZWFyY2hTdHJpbmc6IiIsaD1mLnNwbGl0KCIuIilbMF0sbT1mLnNwbGl0KCIuIilbMV0sXz1oKyJBbGwiO2FbaF0mJihhW19dfHwoYVtfXT10aGlzLmRlZXBDbG9uZShhW2hdKSksYVtoXT10aGlzLmRlZXBDbG9uZShhW19dKSxk''@;'; put 'put ''Lmxlbmd0aD4wJiYoYVtoXT1hW2hdLmZpbHRlcihtP089Pk9bbV0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhkLnRvTG93ZXJDYXNlKCkpOk89Pk8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhkLnRvTG93ZXJDYXNlKCkpKSkpfWxpYnJhcnlPbkZpbHRlcihhLGYsZCl7Zi5sZW5ndGg+MD9hLmZv''@;'; put 'put ''ckVhY2goaD0+e2hbZF0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpPyhoLmhpZGRlbj0hMSxoLmluRm9yZWdyb3VuZD0hMCk6KGguaGlkZGVuPSEwLGguaW5Gb3JlZ3JvdW5kPSExKX0pOih0aGlzLnJlc2V0QXJyYXlGaWx0ZXIoYSksdGhpcy5kaXNwbGF5TGlicmFy''@;'; put 'put ''aWVzKGEpKX1kaXNwbGF5TGlicmFyaWVzKGEsZil7Zj90aGlzLnNob3duTGlicmFyaWVzKz10aGlzLmxvYWRNb3JlQ291bnQ6KHRoaXMuc2hvd25MaWJyYXJpZXM9NTAsdGhpcy5yZXNldExpYnJhcnlGb3JlZ3JvdW5kKGEpKTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoJiZkIT09dGhpcy5zaG93''@;'; put 'put ''bkxpYnJhcmllcztkKyspYVtkXS5pbkZvcmVncm91bmQ9ITB9cmVzZXRMaWJyYXJ5Rm9yZWdyb3VuZChhKXtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrKylhW2ZdLmluRm9yZWdyb3VuZD0hMX1tZXRhT2JqZWN0T25GaWx0ZXIoYSxmLGQpe2YubGVuZ3RoPjA/KHRoaXMucmVzZXRBcnJheUZp''@;'; put 'put ''bHRlcihhKSxhLmZvckVhY2goaD0+e2hbZF0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpfHwoaC5oaWRkZW49ITApfSkpOnRoaXMucmVzZXRBcnJheUZpbHRlcihhKX1yZXNldEFycmF5RmlsdGVyKGEpe2EuZm9yRWFjaChmPT57Zi5oaWRkZW49ITEsZi5pbkZvcmVn''@;'; put 'put ''cm91bmQmJmRlbGV0ZSBmLmluRm9yZWdyb3VuZH0pfWlzSUVvckVER0UoKXt2YXIgYT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm4gYS5pbmRleE9mKCJNU0lFICIpPjB8fChhLmluZGV4T2YoIlRyaWRlbnQvIik+MD8oYS5pbmRleE9mKCJydjoiKSwhMCk6YS5pbmRleE9mKCJF''@;'; put 'put ''ZGdlLyIpPjApfWNvbnZlcnRPYmplY3RzVG9BcnJheShhLGY9ITEpe3JldHVybiBmJiYoYT10aGlzLmRlZXBDbG9uZShhKSksYS5tYXAoZD0+T2JqZWN0LmtleXMoZCkubWFwKGg9PmRbaF0pKX1hZGRMZWFkaW5nWmVybyhhKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEudG9TdHJp''@;'; put 'put ''bmcoKSksYS5sZW5ndGg8Mj8iMCIrYTphfWRlbGV0ZUtleXNBbmRIYXNoKGEsZixkPSEwKXtjb25zdCBoPWQ/dGhpcy5kZWVwQ2xvbmUoYSk6YTtmb3IobGV0IG0gb2YgZilkZWxldGUgaFttXTtyZXR1cm4gcXhlKEpTT04uc3RyaW5naWZ5KGgpKS50b1N0cmluZygpfWRvd25sb2FkVGV4dEZp''@;'; put 'put ''bGUoYSxmKXtjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtkLnNldEF0dHJpYnV0ZSgiaHJlZiIsImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KGYpKSxkLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLGErIi50eHQiKSxkLnN0eWxl''@;'; put 'put ''LmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZCksZC5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZCl9Y29udmVydEFycmF5VmFsdWVzKGEsZil7aWYoYS5sZW5ndGg8MSlyZXR1cm5bXTtzd2l0Y2goZil7Y2FzZSJudW1iZXIiOnJldHVybiBhLm1h''@;'; put 'put ''cChkPT4xKmQpO2Nhc2Uic3RyaW5nIjpyZXR1cm4gYS50b1N0cmluZygpLnNwbGl0KCIsIil9fWRlYm91bmNlQ2FsbChhLGYpe2NsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZW91dCksdGhpcy5kZWJvdW5jZVRpbWVvdXQ9c2V0VGltZW91dChmLGEpfWRlZXBDbG9uZShhKXtyZXR1cm4g''@;'; put 'put ''X0QoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpLGIxPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxt''@;'; put 'put ''LF8pe3RoaXMubG9nZ2VyU2VydmljZT1hLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWYsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmhlbHBlclNlcnZpY2U9bSx0aGlzLnJvdXRlcj1fLHRoaXMudXNlckNvdW50TGltaXRhdGlvbj0hMSx0aGlzLmxpY2Vuc2VLZXlE''@;'; put 'put ''YXRhPW51bGwsdGhpcy5fbGljZW5jZVN0YXRlPXFqLHRoaXMuYWxsRmVhdHVyZXNPbj17dmlld2VyX3Jvd3NfYWxsb3dlZDoxLzAsZWRpdG9yX3Jvd3NfYWxsb3dlZDoxLzAsc3RhZ2Vfcm93c19hbGxvd2VkOjEvMCxoaXN0b3J5X3Jvd3NfYWxsb3dlZDoxLzAsc3VibWl0X3Jvd3NfbGltaXQ6''@;'; put 'put ''MS8wLHRhYmxlc19pbl9saWJyYXJ5X2xpbWl0OjEvMCx2aWV3Ym94X2xpbWl0OjEvMCxsaW5lYWdlX2RhaWx5X2xpbWl0OjEvMCx2aWV3Ym94OiEwLGZpbGVVcGxvYWQ6ITAsZWRpdFJlY29yZDohMCxhZGRSZWNvcmQ6ITB9LHRoaXMuZnJlZVRpZXJMaWNlbmNlRGF0YT17ZGVtbzohMCxob3Rf''@;'; put 'put ''bGljZW5zZV9rZXk6dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3MoKT8uaG90TGljZW5jZUtleSx1c2Vyc19hbGxvd2VkOnRoaXMuX2xpY2VuY2VTdGF0ZS51c2Vyc19hbGxvd2VkfHwxLHZhbGlkX3VudGlsOktvKCkuYWRkKDEsInllYXIiKS5mb3JtYXQoIllZWVkt''@;'; put 'put ''TU0tREQiKSxzaXRlX2lkOiIiLHNpdGVfaWRfbXVsdGlwbGU6W119LHRoaXMuaXNBcHBBY3RpdmF0ZWQ9bmV3IE9lKG51bGwpLHRoaXMuaXNBcHBPdmVyQ2FwYWNpdHk9bmV3IE9lKCExKSx0aGlzLmN1cnJlbnRVc2VyQ2FuUmVnaXN0ZXI9bmV3IE9lKCExKSx0aGlzLmFwcExvY2tlZD1uZXcg''@;'; put 'put ''T2UoITEpLHRoaXMubGljZW5zZUV4cGlyZXNJbkRheXM9bmV3IE9lKG51bGwpLHRoaXMuaXNBcHBGcmVlVGllcj1uZXcgT2UoITEpLHRoaXMubGljZW5jZVByb2JsZW09bmV3IE9lKG51bGwpLHRoaXMuaG90X2xpY2Vuc2Vfa2V5PW5ldyBPZSh2b2lkIDApLHRoaXMubGljZW5jZVN0YXRlPW5l''@;'; put 'put ''dyBPZSh0aGlzLl9saWNlbmNlU3RhdGUpLHRoaXMuc2FzU2VydmljZS5pbmNvcnJlY3RTaXRlSWRFbWl0dGVyLnN1YnNjcmliZShPPT57aWYobnVsbCE9PXRoaXMuaXNBcHBBY3RpdmF0ZWQudmFsdWUmJiF0aGlzLmlzQXBwRnJlZVRpZXIudmFsdWUpe2NvbnN0IFg9YC9saWNlbnNpbmcva2V5''@;'; put 'put ''P2Vycm9yPW1pc3NtYXRjaCZtaXNzbWF0Y2hJZD0ke099JmZvcmNlPXRydWVgO3RoaXMubGljZW5jZVByb2JsZW0ubmV4dChYKSx0aGlzLmRlYWN0aXZhdGVBcHAoWCl9fSl9YWN0aXZhdGlvbihhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtmLmZyZWVUaWVyTGljZW5jZURh''@;'; put 'put ''dGEuaG90X2xpY2Vuc2Vfa2V5PWYuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCk/LmhvdExpY2VuY2VLZXkseWllbGQgZi5zZXRTdGFydHVwc2VydmljZVJ1bGVzKGEpLHlpZWxkIGYubGljZW5zaW5nKGEuZ2xvYnZhcnMsYS5TWVNTSVRFKX0pKCl9c2V0U3RhcnR1cHNl''@;'; put 'put ''cnZpY2VSdWxlcyhhKXt0aGlzLl9saWNlbmNlU3RhdGUuZWRpdFJlY29yZD0iWUVTIiE9PWEuZ2xvYnZhcnNbMF0uRENfUkVTVFJJQ1RfRURJVFJFQ09SRH1saWNlbnNpbmcoYSxmKXt2YXIgZD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtpZighYXx8IWFbMF0pe2NvbnN0IG09J0Vycm9y''@;'; put 'put ''IGdldHRpbmcgIkdsb2J2YXJzIiBmcm9tIHN0YXJ0dXBzZXJ2aWNlIHJlc3BvbnNlLic7cmV0dXJuIGNvbnNvbGUuZXJyb3IobSksZC5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKSx2b2lkIGQucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9saWNlbnNpbmcva2V5P2Vycm9yPWludmFsaWQmZGV0YWls''@;'; put 'put ''cz0ke2J0b2EobSl9YCl9bGV0IGg9YVswXTtyZXR1cm4gdm9pZCAwPT09aC5MSUNFTkNFX0tFWXx8dm9pZCAwPT09aC5BQ1RJVkFUSU9OX0tFWXx8bnVsbD09aC5SRUdJU1RFUkNPVU5UfHxudWxsPT1oLklTUkVHSVNURVJFRD8oY29uc29sZS5lcnJvcigiU29tZSBvZiBnbG9idmFycyBhcmUg''@;'; put 'put ''bm90IHByZXNlbnQiKSxkLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgZC5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLCJTb21lIG9mIHRoZSBnbG9idmFycyBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHN0YXJ0dXBzZXJ2aWNlIikpOmguTElDRU5DRV9LRVkmJmguQUNU''@;'; put 'put ''SVZBVElPTl9LRVk/KGQubGljZW5jZUtleT1oLkxJQ0VOQ0VfS0VZLGQuYWN0aXZhdGlvbktleT1oLkFDVElWQVRJT05fS0VZLHZvaWQoeWllbGQgZC5kZWNyeXB0TGljZW5zZUtleShoLkxJQ0VOQ0VfS0VZLGguQUNUSVZBVElPTl9LRVkpLnRoZW4oZnVuY3Rpb24oKXt2YXIgbT15aShmdW5j''@;'; put 'put ''dGlvbiooXyl7eWllbGQgZC5hcHBsaWNhdGlvbkFjdGl2YXRpb24oXyxoLGYpfSk7cmV0dXJuIGZ1bmN0aW9uKF8pe3JldHVybiBtLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksZnVuY3Rpb24oKXt2YXIgbT15aShmdW5jdGlvbiooXyl7Y29uc3QgTz1gRXJyb3IgZGVjcnlwdGluZyBsaWNl''@;'; put 'put ''bnNlIGtleS4gJHtffWA7Y29uc29sZS5lcnJvcihPKTtjb25zdCBYPWAvbGljZW5zaW5nL2tleT9lcnJvcj1pbnZhbGlkJmRldGFpbHM9JHtidG9hKE8pfSZmb3JjZT10cnVlYDtkLmxpY2VuY2VQcm9ibGVtLm5leHQoWCksZC5yb3V0ZXIubmF2aWdhdGVCeVVybChYKSxzZXRUaW1lb3V0KCgp''@;'; put 'put ''PT5kLmFwcGxpY2F0aW9uQWN0aXZhdGlvbihkLmZyZWVUaWVyTGljZW5jZURhdGEsaCxmLCEwKSl9KTtyZXR1cm4gZnVuY3Rpb24oXyl7cmV0dXJuIG0uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpKTp5aWVsZCBkLmFwcGxpY2F0aW9uQWN0aXZhdGlvbihkLmZyZWVUaWVyTGljZW5jZURh''@;'; put 'put ''dGEsaCxmKX0pKCl9YXBwbGljYXRpb25BY3RpdmF0aW9uKGEsZixkLGgpe2h8fChoPSExKSx0aGlzLnNldFNpdGVJZChhKSwhYS5kZW1vJiZmJiZkJiZ0aGlzLmhhbmRsZVNpdGVJZE1pc3NtYXRjaChhLGYsZCxoKTtsZXQgbT12b2lkIDAhPT1hLmhvdF9saWNlbnNlX2tleT9hLmhvdF9saWNl''@;'; put 'put ''bnNlX2tleTp0aGlzLmhvdF9saWNlbnNlX2tleS52YWx1ZTttfHwobT10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpPy5ob3RMaWNlbmNlS2V5KSx0aGlzLmhvdF9saWNlbnNlX2tleS5uZXh0KG0pLHRoaXMudXNlckNvdW50TGltaXRhdGlvbiYmdGhpcy5oYW5k''@;'; put 'put ''bGVVc2Vyc0FsbG93ZWQoYSksdGhpcy5saWNlbnNlS2V5RGF0YT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGEpLHdpbmRvdy5hcHBpbmZvKCk7Y29uc3R7ZXhwaXJ5X2RhdGU6XyxkYXlzVG9FeHBpcnk6T309dGhpcy5jYWxjdWxhdGVFeHBpcnkoYSk7aWYod2luZG93LmxpY2Vuc2VF''@;'; put 'put ''eHBpcmVzSW49Tyx0aGlzLmxpY2Vuc2VFeHBpcmVzSW5EYXlzLm5leHQoTyksTzw9MClyZXR1cm4gY29uc29sZS5lcnJvcigiTGljZW5zZSBrZXkgaGFzIGV4cGlyZWQiKSx2b2lkKGYmJmQmJnRoaXMuaGFuZGxlRXhwaXJ5KF8sZixkLGgpKTt0aGlzLmlzQXBwRnJlZVRpZXIubmV4dCghIWEu''@;'; put 'put ''ZGVtbyksZiYmdGhpcy5oYW5kbGVVc2VyUmVnaXN0cmF0aW9uKGEsZixoKSx0aGlzLmRlY29kZUxpY2VuY2VGZWF0dXJlcyhhKSx0aGlzLmxpY2VuY2VTdGF0ZS5uZXh0KHRoaXMuX2xpY2VuY2VTdGF0ZSl9ZGVjb2RlTGljZW5jZUZlYXR1cmVzKGEpe2lmKCFhLmZlYXR1cmVzKXtpZihhLmRl''@;'; put 'put ''bW8pcmV0dXJuO3JldHVybiB2b2lkKHRoaXMuX2xpY2VuY2VTdGF0ZT10aGlzLmFsbEZlYXR1cmVzT24pfWNvbnN0IGY9YS5mZWF0dXJlcy5zcGxpdCgiLCIpO3RoaXMuX2xpY2VuY2VTdGF0ZT17Li4udGhpcy5fbGljZW5jZVN0YXRlLHZpZXdlcl9yb3dzX2FsbG93ZWQ6dGhpcy5wYXJzZUZl''@;'; put 'put ''YXR1cmVWYWx1ZShmW2cxLnZpZXdlcl9yb3dzX2FsbG93ZWRdKSxlZGl0b3Jfcm93c19hbGxvd2VkOnRoaXMucGFyc2VGZWF0dXJlVmFsdWUoZltnMS5lZGl0b3Jfcm93c19hbGxvd2VkXSksc3RhZ2Vfcm93c19hbGxvd2VkOnRoaXMucGFyc2VGZWF0dXJlVmFsdWUoZltnMS5zdGFnZV9yb3dz''@;'; put 'put ''X2FsbG93ZWRdKSxoaXN0b3J5X3Jvd3NfYWxsb3dlZDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGZbZzEuaGlzdG9yeV9yb3dzX2FsbG93ZWRdKSxzdWJtaXRfcm93c19saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGZbZzEuc3VibWl0X3Jvd3NfbGltaXRdKSx0YWJsZXNfaW5fbGlicmFy''@;'; put 'put ''eV9saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGZbZzEudGFibGVzX2luX2xpYnJhcnlfbGltaXRdKSx2aWV3Ym94X2xpbWl0OnRoaXMucGFyc2VGZWF0dXJlVmFsdWUoZltnMS52aWV3Ym94X2xpbWl0XSksbGluZWFnZV9kYWlseV9saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGZb''@;'; put 'put ''ZzEubGluZWFnZV9kYWlseV9saW1pdF0pLHZpZXdib3g6dGhpcy5wYXJzZUZlYXR1cmVUb2dnbGUoZltnMS52aWV3Ym94XSksZmlsZVVwbG9hZDp0aGlzLnBhcnNlRmVhdHVyZVRvZ2dsZShmW2cxLmZpbGVVcGxvYWRdKSxlZGl0UmVjb3JkOnRoaXMucGFyc2VGZWF0dXJlVG9nZ2xlKGZbZzEu''@;'; put 'put ''ZWRpdFJlY29yZF0pLGFkZFJlY29yZDp0aGlzLnBhcnNlRmVhdHVyZVRvZ2dsZShmW2cxLmFkZFJlY29yZF0pfSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKCJMaWNlbmNlIHN0YXRlOiIsdGhpcy5fbGljZW5jZVN0YXRlKX1wYXJzZUZlYXR1cmVWYWx1ZShhKXtyZXR1cm4iLSI9PT1hPzEvMDpw''@;'; put 'put ''YXJzZUludChhKX1wYXJzZUZlYXR1cmVUb2dnbGUoYSl7cmV0dXJuISFwYXJzZUludChhKX1kZWNyeXB0TGljZW5zZUtleShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGg9eWkoZnVuY3Rpb24qKG0sXyl7aWYoIXdpbmRvdy5jcnlwdG98fCF3aW5k''@;'; put 'put ''b3cuY3J5cHRvLnN1YnRsZSl0cnl7bGV0IGJlPWF0b2IoYS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpKTttKEpTT04ucGFyc2UoYmUpKX1jYXRjaChiZSl7XygiRXJyb3IgcGFyc2luZyBodHRwIGxpY2Vuc2Uga2V5IGRhdGEuICIrYmUpfWxldCBYLE89eWllbGQgZC5iYXNlNjRUb0Fy''@;'; put 'put ''cmF5QnVmZmVyKGEpLmNhdGNoKGJlPT57XyhiZSl9KTtjb25zdCBhZT15aWVsZCBkLmJhc2U2NFRvQXJyYXlCdWZmZXIoZikuY2F0Y2goYmU9PntfKGJlKX0pO2lmKCFhZSlyZXR1cm4gdm9pZCBfKCJNaXNzaW5nIGFjdGl2YXRpb24ga2V5Iik7bGV0IHBlO1g9YWU7dHJ5e3BlPXlpZWxkIHdp''@;'; put 'put ''bmRvdy5jcnlwdG8uc3VidGxlLmltcG9ydEtleSgicGtjczgiLFgse25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtMjU2In0sITAsWyJkZWNyeXB0Il0pfWNhdGNoKGJlKXtfKCJVbmFibGUgdG8gaW1wb3J0IGRlY3J5cHRpb24ga2V5OiAiK2JlKX1pZihwZSlpZihPKXRyeXt3aW5kb3cuY3J5''@;'; put 'put ''cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOiJSU0EtT0FFUCIsaGFzaDp7bmFtZToiU0hBLTI1NiJ9fSxwZSxPKS50aGVuKGJlPT57bGV0IHhlPShuZXcgS3dlLlRleHREZWNvZGVyKS5kZWNvZGUoYmUpO3RyeXttKEpTT04ucGFyc2UoeGUpKX1jYXRjaChWZSl7XygiRXJyb3IgcGFyc2luZyBs''@;'; put 'put ''aWNlbnNlIGtleSBkYXRhLiAiK1ZlKX19LGJlPT57XyhiZSl9KX1jYXRjaChiZSl7XyhiZSl9ZWxzZSBfKCJMaWNlbnNlIGtleSBieXRlcyBtaXNzaW5nIik7ZWxzZSBfKCJVbmFibGUgdG8gaW1wb3J0IGRlY3J5cHRpb24ga2V5Iil9KTtyZXR1cm4gZnVuY3Rpb24obSxfKXtyZXR1cm4gaC5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKX1nZXRIb3RMaWNlbnNlS2V5KCl7cmV0dXJuIHRoaXMuaG90X2xpY2Vuc2Vfa2V5LnZhbHVlfWdldExpY2Vuc2VLZXlEYXRhKCl7cmV0dXJuIHRoaXMubGljZW5zZUtleURhdGF9ZGVhY3RpdmF0ZUFwcChhKXt0aGlzLl9saWNlbmNlU3RhdGU9cWos''@;'; put 'put ''dGhpcy5hcHBsaWNhdGlvbkFjdGl2YXRpb24odGhpcy5mcmVlVGllckxpY2VuY2VEYXRhKSxhJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGEpfWNoZWNrTGluZWFnZUxpbWl0KGEpe2lmKHRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmxpbmVhZ2VfZGFpbHlfbGltaXQ9PT0xLzApcmV0dXJu''@;'; put 'put ''ITE7Y29uc3QgZj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgibGluZWFnZV9yZW5kZXJzIiksZD1LbygpLnZhbHVlT2YoKTtpZighZilyZXR1cm4gYXx8dGhpcy5zZXRMaW5lYWdlUmVuZGVyKGQsMSksITE7Y29uc3QgaD1wYXJzZUludChmLnNwbGl0KCIsIilbMF0pLG09cGFyc2VJbnQoZi5zcGxp''@;'; put 'put ''dCgiLCIpWzFdKTtyZXR1cm4gS28oaCkuaXNTYW1lKEtvKCksImRheSIpP20+PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmxpbmVhZ2VfZGFpbHlfbGltaXR8fChhfHx0aGlzLnNldExpbmVhZ2VSZW5kZXIoZCxtKzEpLCExKTooYXx8dGhpcy5zZXRMaW5lYWdlUmVuZGVyKGQsMSksITEpfXNl''@;'; put 'put ''dExpbmVhZ2VSZW5kZXIoYSxmKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgibGluZWFnZV9yZW5kZXJzIixgJHthfSwke2Z9YCl9YmFzZTY0VG9BcnJheUJ1ZmZlcihhKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgZj15aShmdW5jdGlvbiooZCxoKXtkKGFpZS5KKGEpKX0pO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihkLGgpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpfWFycmF5QnVmZmVyVG9CYXNlNjQoYSl7cmV0dXJuIG5ldyBQcm9taXNlKChmLGQpPT57ZihhaWUuYyhhKSl9KX1zZXRTaXRlSWQoYSl7YS5zaXRlX2lkX211bHRpcGxlP3RoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZS5zZXRMaWNlbnNlU2l0ZUlkKGEuc2l0ZV9pZF9tdWx0aXBsZSk6YS5zaXRlX2lkJiZ0aGlzLnNhc1NlcnZpY2Uuc2V0TGljZW5zZVNpdGVJZChhLnNpdGVfaWQpfWhhbmRsZVNpdGVJZE1pc3NtYXRjaChhLGYsZCxoKXtsZXQgbT0hMSxfPSExO2lmKCghYS5zaXRlX2lkfHxhLnNpdGVfaWQh''@;'; put 'put ''PT1kKSYmKG09ITApLCghYS5zaXRlX2lkX211bHRpcGxlfHwhYS5zaXRlX2lkX211bHRpcGxlLmluY2x1ZGVzKGQpKSYmKF89ITApLG0mJl8pcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRoZSBrZXkgcHJvdmlkZWQgaXMgZm9yIGRpZmZlcmVudCBvcmdhbml6YXRpb24uIiksdm9pZCBzZXRUaW1l''@;'; put 'put ''b3V0KCgpPT57Y29uc3QgTz0iL2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc21hdGNoJmZvcmNlPXRydWUiO3RoaXMubGljZW5jZVByb2JsZW0ubmV4dChPKSx0aGlzLl9saWNlbmNlU3RhdGU9cWosdGhpcy5hcHBsaWNhdGlvbkFjdGl2YXRpb24odGhpcy5mcmVlVGllckxpY2VuY2VEYXRhLGYs''@;'; put 'put ''ZCwhMCksaHx8dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChPKX0pfWNhbGN1bGF0ZUV4cGlyeShhKXtsZXQgZj1LbyhhLnZhbGlkX3VudGlsLCJZWVlZLU1NLUREIikuc3RhcnRPZigiZGF5IiksZD1LbygpLnN0YXJ0T2YoImRheSIpLGg9Zi5kaWZmKGQsImRheXMiKTtyZXR1cm57ZXhwaXJ5''@;'; put 'put ''X2RhdGU6ZixkYXlzVG9FeHBpcnk6aH19aGFuZGxlRXhwaXJ5KGEsZixkLGgpe3NldFRpbWVvdXQoKCk9Pntjb25zdCBtPWAvbGljZW5zaW5nL2tleT9mb3JjZT10cnVlJmVycm9yPWV4cGlyZWQmZGV0YWlscz0ke2J0b2EoIkV4cGlyeSBkYXRlOiAiK2EuZm9ybWF0KCJERC9NTS9ZWVlZIikp''@;'; put 'put ''fWA7dGhpcy5saWNlbmNlUHJvYmxlbS5uZXh0KG0pLHRoaXMuYXBwbGljYXRpb25BY3RpdmF0aW9uKHRoaXMuZnJlZVRpZXJMaWNlbmNlRGF0YSxmLGQsITApLGh8fHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobSl9KX1oYW5kbGVVc2Vyc0FsbG93ZWQoYSl7YS5kZW1vJiZ2b2lkIDAhPT10''@;'; put 'put ''aGlzLl9saWNlbmNlU3RhdGUudXNlcnNfYWxsb3dlZCYmKGEudXNlcnNfYWxsb3dlZD1hLnVzZXJzX2FsbG93ZWQ+MD9hLnVzZXJzX2FsbG93ZWQ6dGhpcy5fbGljZW5jZVN0YXRlLnVzZXJzX2FsbG93ZWQpLHRoaXMuX2xpY2VuY2VTdGF0ZS51c2Vyc19hbGxvd2VkPWEudXNlcnNfYWxsb3dl''@;'; put 'put ''ZH1oYW5kbGVVc2VyUmVnaXN0cmF0aW9uKGEsZixkKXtpZih0aGlzLnVzZXJDb3VudExpbWl0YXRpb24mJihmLlJFR0lTVEVSQ09VTlQ+YS51c2Vyc19hbGxvd2VkPyhjb25zb2xlLndhcm4oIkFwcCBoYXMgbW9yZSB1c2VycyByZWdpc3RlcmVkIHRoZW4gbGljZW5zZWQuIiksdGhpcy5pc0Fw''@;'; put 'put ''cE92ZXJDYXBhY2l0eS5uZXh0KCEwKSk6Zi5SRUdJU1RFUkNPVU5UPT09YS51c2Vyc19hbGxvd2VkJiZjb25zb2xlLndhcm4oIkFwcCBoYXMgaGl0IGxpbWl0IG9mIHVzZXJzIHJlZ2lzdGVyZWQuIikpLDEhPT1mLklTUkVHSVNURVJFRClyZXR1cm4gZi5SRUdJU1RFUkNPVU5UPGEudXNlcnNf''@;'; put 'put ''YWxsb3dlZHx8IXRoaXMudXNlckNvdW50TGltaXRhdGlvbj8oY29uc29sZS5sb2coIlVzZXIgY2FuIHJlZ2lzdGVyIiksdGhpcy5jdXJyZW50VXNlckNhblJlZ2lzdGVyLm5leHQoITApLHRoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdm9pZChkfHx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5''@;'; put 'put ''VXJsKCIvbGljZW5zaW5nL3JlZ2lzdGVyIikpKToodGhpcy5jdXJyZW50VXNlckNhblJlZ2lzdGVyLm5leHQoITEpLHRoaXMuaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdm9pZChkfHx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvbGljZW5zaW5nL2xpbWl0IikpKTt0aGlzLmlzQXBwQWN0''@;'; put 'put ''aXZhdGVkLm5leHQoITApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcih5MSksc3IoSXYpLHNyKFJzKSxzcihwbCksc3IoUHUpLHNyKExhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46''@;'; put 'put ''InJvb3QifSksbH0pKCksd0Q9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMubGljZW5jZVNlcnZpY2U9YSx0aGlzLmV2ZW50U2VydmljZT1mLHRoaXMuc2FzU2VydmljZT1kLHRoaXMubG9nZ2VyU2VydmljZT1oLHRoaXMucm91dGVyPW0sdGhpcy5zeXNzaXRlPW5l''@;'; put 'put ''dyBPZShudWxsKSx0aGlzLmVudmlyb25tZW50SW5mbz1udWxsLHRoaXMuc3Vic2NyaWJlKCksdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShfPT57XyBpbnN0YW5jZW9mIGk0JiYiL2RlcGxveSI9PT1fLnVybCYmdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKX0pfXNh''@;'; put 'put ''c1NlcnZpY2VJbml0KCl7dGhpcy5zYXNTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9c3Vic2NyaWJlKCl7dGhpcy5zYXNTZXJ2aWNlLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuc3Vic2NyaWJlKCgpPT57dGhpcy5zdGFydFVwRGF0YSgpfSksdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3RTaXRl''@;'; put 'put ''SWRFbWl0dGVyLnN1YnNjcmliZShhPT57dGhpcy5wYXRjaFN5c3NpdGUoYSl9KX1nZXRFbnZpcm9ubWVudEluZm8oKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudEluZm99cGF0Y2hTeXNzaXRlKGEpe2xldCBmPXRoaXMuc3lzc2l0ZS5nZXRWYWx1ZSgpO2YmJihmLmluY2x1ZGVzKGEpfHwoZi5w''@;'; put 'put ''dXNoKGEpLHRoaXMuc3lzc2l0ZS5uZXh0KGYpKSl9c3RhcnRVcERhdGEoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgZj0hMTt5aWVsZCBhLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3N0YXJ0dXBzZXJ2aWNlIixudWxsKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGQ9''@;'; put 'put ''eWkoZnVuY3Rpb24qKGgpe2Euc3lzc2l0ZS5uZXh0KFtoLlNZU1NJVEVdKTtsZXQgbT1bXTtpZigoIWguZ2xvYnZhcnN8fGguZ2xvYnZhcnMmJiFoLmdsb2J2YXJzWzBdKSYmbS5wdXNoKCJHbG9idmFycyIpLGguc2FzZGF0YXNldHN8fG0ucHVzaCgiU2FzZGF0YXNldHMiKSxoLnNhc2xpYnN8''@;'; put 'put ''fG0ucHVzaCgiU2FzbGlicyIpLG0ubGVuZ3RoPjApcmV0dXJuIGY9ITAsYS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLGAke20uam9pbigiLCAiKX0gYXJlIG5vdCBwcmVzZW50IGluIHRoZSBzdGFydHVwc2VydmljZWApLHZvaWQgYS5saWNlbmNlU2VydmljZS5pc0FwcEFj''@;'; put 'put ''dGl2YXRlZC5uZXh0KCExKTthLmVudmlyb25tZW50SW5mbz17U1lTU0lURTpoLlNZU1NJVEUsU1lTU0NQTDpoLlNZU1NDUEwsU1lTVENQSVBIT1NUTkFNRTpoLlNZU1RDUElQSE9TVE5BTUUsU1lTVkxPTkc6aC5TWVNWTE9ORyxNRU1TSVpFOmguTUVNU0laRSxTWVNQUk9DRVNTTU9ERTpoLlNZ''@;'; put 'put ''U1BST0NFU1NNT0RFLFNZU0hPU1ROQU1FOmguU1lTSE9TVE5BTUUsU1lTSE9TVElORk9MT05HOmguU1lTSE9TVElORk9MT05HLFNZU0VOQ09ESU5HOmguU1lTRU5DT0RJTkcsQVVUT0VYRUM6aC5BVVRPRVhFQyxJU0FETUlOOmguZ2xvYnZhcnNbMF0uSVNBRE1JTixEQ19BRE1JTl9HUk9VUDpo''@;'; put 'put ''Lmdsb2J2YXJzWzBdLkRDX0FETUlOX0dST1VQfTtsZXQgWCxhZSxfPWguc2FzZGF0YXNldHMsTz17fTtmb3IobGV0IFZlIG9mIF8pT1tWZS5MSUJSRUZdfHwoT1tWZS5MSUJSRUZdPVtdKSxPW1ZlLkxJQlJFRl0ucHVzaChWZS5EU04pO2xldCBwZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5''@;'; put 'put ''KE8pKSxiZT1bXTtmb3IobGV0IFZlIG9mIE9iamVjdC5rZXlzKHBlKSliZS5wdXNoKHtMSUJSQVJZUkVGOlZlLHRhYmxlczpwZVtWZV19KTtsZXQgeGU9YmU7WD1PLGFlPU9iamVjdC5rZXlzKE8pLHZvaWQgMCE9PVgmJihKbi5lZGl0b3IubGlic0FuZFRhYmxlcz1YKSxKbi5lZGl0b3IudHJl''@;'; put 'put ''ZU5vZGVMaWJyYXJpZXM9eGUsSm4uZWRpdG9yLmxpYnJhcmllcz1hZSxKbi5lZGl0b3Iuc3RhcnR1cFNldD0hMCx5aWVsZCBhLmxpY2VuY2VTZXJ2aWNlLmFjdGl2YXRpb24oaCl9KTtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkuY2F0Y2go''@;'; put 'put ''ZD0+e2Y9ITAsYS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRXJyb3IiLCJUaGVyZSBpcyBhbiBpc3N1ZSB3aXRoIHN0YXJ0dXBzZXJ2aWNlIHJlc3BvbnNlIiksYS5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC5uZXh0KCExKX0pLGEubG9nZ2VyU2VydmljZS5sb2coIkFjdGl2''@;'; put 'put ''YXRlZDoiLGEubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWUpLGZ8fChhLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLGEubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWU/YS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSYmYS5yb3V0''@;'; put 'put ''ZXIubmF2aWdhdGVCeVVybCgiL2hvbWUiKTohYS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKSYmIWEucm91dGVyLnVybC5pbmNsdWRlcygibGljZW5zaW5nIikmJmEucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NpbmcmZm9yY2U9dHJ1ZSIpKX0p''@;'; put 'put ''KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKGIxKSxzcihScyksc3IocGwpLHNyKHkxKSxzcihMYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NsYXNzIFh4ZXtjb25zdHJ1Y3Rvcihj''@;'; put 'put ''LGEpe3RoaXMuZm49Yyx0aGlzLnN1YnNjcmlwdGlvbnM9YX11bnN1YnNjcmliZSgpe2NvbnN0IGM9dGhpcy5zdWJzY3JpcHRpb25zLmluZGV4T2YodGhpcyk7LTEhPT1jJiZ0aGlzLnN1YnNjcmlwdGlvbnMuc3BsaWNlKGMsMSl9fWZ1bmN0aW9uIHU0KGwpe3JldHVybiBudWxsIT1sJiYib2Jq''@;'; put 'put ''ZWN0Ij09dHlwZW9mIGwmJiEwPT09bFsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIl19ZnVuY3Rpb24gSzIobCl7cmV0dXJuIGZ1bmN0aW9uIGMoYSl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHx1NChhKT9jOmwuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBVdihsKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gYyhhLGYpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGM7Y2FzZSAxOnJldHVybiB1NChhKT9jOksyKGZ1bmN0aW9uKGQpe3JldHVybiBsKGEsZCl9KTtkZWZhdWx0OnJldHVybiB1NChhKSYmdTQoZik/Yzp1NChhKT9LMihmdW5jdGlvbihk''@;'; put 'put ''KXtyZXR1cm4gbChkLGYpfSk6dTQoZik/SzIoZnVuY3Rpb24oZCl7cmV0dXJuIGwoYSxkKX0pOmwoYSxmKX19fWNvbnN0IENEPVV2KGZ1bmN0aW9uKGMsYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBjfHxudWxsIT1hJiYoYS5jb25zdHJ1Y3Rvcj09PWN8fCJPYmplY3QiPT09Yy5uYW1lJiYib2Jq''@;'; put 'put ''ZWN0Ij09dHlwZW9mIGEpfSk7ZnVuY3Rpb24gU0QobCxjKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsbCl9dmFyIHZvZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2NvbnN0IHlvZT1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10i''@;'; put 'put ''PT09dm9lLmNhbGwoYXJndW1lbnRzKT9mdW5jdGlvbihjKXtyZXR1cm4iW29iamVjdCBBcmd1bWVudHNdIj09PXZvZS5jYWxsKGMpfTpmdW5jdGlvbihjKXtyZXR1cm4gU0QoImNhbGxlZSIsYyl9fSgpLHRBZT1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihjKXtyZXR1cm4gbnVsbCE9YyYmYy5s''@;'; put 'put ''ZW5ndGg+PTAmJiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYyl9O2Z1bmN0aW9uIGJvZShsKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKX12YXIgaUFlPUsyKGZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBudWxsIT1jJiYiZnVuY3Rpb24iPT10eXBlb2YgY1siZmFudGFzeS1sYW5kL2VtcHR5Il0/Y1siZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1jJiZudWxsIT1jLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5jb25zdHJ1Y3RvclsiZmFudGFzeS1sYW5kL2VtcHR5''@;'; put 'put ''Il0/Yy5jb25zdHJ1Y3RvclsiZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1jJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5lbXB0eT9jLmVtcHR5KCk6bnVsbCE9YyYmbnVsbCE9Yy5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGMuY29uc3RydWN0b3IuZW1wdHk/Yy5jb25zdHJ1''@;'; put 'put ''Y3Rvci5lbXB0eSgpOnRBZShjKT9bXTpib2UoYyk/IiI6ZnVuY3Rpb24gbkFlKGwpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpfShjKT97fTp5b2UoYyk/ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpOmZ1bmN0aW9uIHJB''@;'; put 'put ''ZShsKXt2YXIgYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCk7cmV0dXJuIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIj09PWN8fCJbb2JqZWN0IEludDhBcnJheV0iPT09Y3x8IltvYmplY3QgVWludDhBcnJheV0iPT09Y3x8IltvYmplY3QgSW50MTZBcnJheV0iPT09Y3x8''@;'; put 'put ''IltvYmplY3QgVWludDE2QXJyYXldIj09PWN8fCJbb2JqZWN0IEludDMyQXJyYXldIj09PWN8fCJbb2JqZWN0IFVpbnQzMkFycmF5XSI9PT1jfHwiW29iamVjdCBGbG9hdDMyQXJyYXldIj09PWN8fCJbb2JqZWN0IEZsb2F0NjRBcnJheV0iPT09Y3x8IltvYmplY3QgQmlnSW50NjRBcnJheV0i''@;'; put 'put ''PT09Y3x8IltvYmplY3QgQmlnVWludDY0QXJyYXldIj09PWN9KGMpP2MuY29uc3RydWN0b3IuZnJvbSgiIik6dm9pZCAwfSk7Y29uc3Qgb0FlPWlBZTtmdW5jdGlvbiBfb2UobCl7Zm9yKHZhciBhLGM9W107IShhPWwubmV4dCgpKS5kb25lOyljLnB1c2goYS52YWx1ZSk7cmV0dXJuIGN9ZnVu''@;'; put 'put ''Y3Rpb24gd29lKGwsYyxhKXtmb3IodmFyIGY9MCxkPWEubGVuZ3RoO2Y8ZDspe2lmKGwoYyxhW2ZdKSlyZXR1cm4hMDtmKz0xfXJldHVybiExfWNvbnN0IGJ6PSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uIGxBZShsLGMpe3JldHVybiBsPT09Yz8wIT09''@;'; put 'put ''bHx8MS9sPT0xL2M6bCE9bCYmYyE9Y307dmFyIHNBZT0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLENvZT1bImNvbnN0cnVjdG9yIiwidmFsdWVPZiIsImlzUHJvdG90eXBlT2YiLCJ0b1N0cmluZyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiaGFz''@;'; put 'put ''T3duUHJvcGVydHkiLCJ0b0xvY2FsZVN0cmluZyJdLFNvZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMucHJvcGVydHlJc0VudW1lcmFibGUoImxlbmd0aCIpfSgpLHVBZT1mdW5jdGlvbihjLGEpe2Zvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7KXtpZihjW2ZdPT09YSlyZXR1cm4hMDtmKz0x''@;'; put 'put ''fXJldHVybiExfTtjb25zdCBNb2U9SzIoImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5rZXlzfHxTb2U/ZnVuY3Rpb24oYyl7aWYoT2JqZWN0KGMpIT09YylyZXR1cm5bXTt2YXIgYSxmLGQ9W10saD1Tb2UmJnlvZShjKTtmb3IoYSBpbiBjKVNEKGEsYykmJighaHx8Imxlbmd0aCIhPT1hKSYm''@;'; put 'put ''KGRbZC5sZW5ndGhdPWEpO2lmKHNBZSlmb3IoZj1Db2UubGVuZ3RoLTE7Zj49MDspU0QoYT1Db2VbZl0sYykmJiF1QWUoZCxhKSYmKGRbZC5sZW5ndGhdPWEpLGYtPTE7cmV0dXJuIGR9OmZ1bmN0aW9uKGMpe3JldHVybiBPYmplY3QoYykhPT1jP1tdOk9iamVjdC5rZXlzKGMpfSksa29lPUsy''@;'; put 'put ''KGZ1bmN0aW9uKGMpe3JldHVybiBudWxsPT09Yz8iTnVsbCI6dm9pZCAwPT09Yz8iVW5kZWZpbmVkIjpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYykuc2xpY2UoOCwtMSl9KTtmdW5jdGlvbiBFb2UobCxjLGEsZil7dmFyIGQ9X29lKGwpO2Z1bmN0aW9uIG0oXyxPKXtyZXR1cm4g''@;'; put 'put ''X3ooXyxPLGEuc2xpY2UoKSxmLnNsaWNlKCkpfXJldHVybiF3b2UoZnVuY3Rpb24oXyxPKXtyZXR1cm4hd29lKG0sTyxfKX0sX29lKGMpLGQpfWZ1bmN0aW9uIF96KGwsYyxhLGYpe2lmKGJ6KGwsYykpcmV0dXJuITA7dmFyIGQ9a29lKGwpO2lmKGQhPT1rb2UoYykpcmV0dXJuITE7aWYoImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGxbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09dHlwZW9mIGNbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSlyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbFsiZmFudGFzeS1sYW5kL2VxdWFscyJdJiZsWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0oYykm''@;'; put 'put ''JiJmdW5jdGlvbiI9PXR5cGVvZiBjWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmNbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShsKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbC5lcXVhbHN8fCJmdW5jdGlvbiI9PXR5cGVvZiBjLmVxdWFscylyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbC5lcXVh''@;'; put 'put ''bHMmJmwuZXF1YWxzKGMpJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5lcXVhbHMmJmMuZXF1YWxzKGwpO3N3aXRjaChkKXtjYXNlIkFyZ3VtZW50cyI6Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOmlmKCJmdW5jdGlvbiI9PXR5cGVvZiBsLmNvbnN0cnVjdG9yJiYiUHJvbWlzZSI9PT1mdW5jdGlv''@;'; put 'put ''biBhQWUobCl7dmFyIGM9U3RyaW5nKGwpLm1hdGNoKC9eZnVuY3Rpb24gKFx3KikvKTtyZXR1cm4gbnVsbD09Yz8iIjpjWzFdfShsLmNvbnN0cnVjdG9yKSlyZXR1cm4gbD09PWM7YnJlYWs7Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmlmKHR5cGVvZiBsIT10eXBl''@;'; put 'put ''b2YgY3x8IWJ6KGwudmFsdWVPZigpLGMudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkRhdGUiOmlmKCFieihsLnZhbHVlT2YoKSxjLnZhbHVlT2YoKSkpcmV0dXJuITE7YnJlYWs7Y2FzZSJFcnJvciI6cmV0dXJuIGwubmFtZT09PWMubmFtZSYmbC5tZXNzYWdlPT09Yy5tZXNzYWdl''@;'; put 'put ''O2Nhc2UiUmVnRXhwIjppZihsLnNvdXJjZSE9PWMuc291cmNlfHxsLmdsb2JhbCE9PWMuZ2xvYmFsfHxsLmlnbm9yZUNhc2UhPT1jLmlnbm9yZUNhc2V8fGwubXVsdGlsaW5lIT09Yy5tdWx0aWxpbmV8fGwuc3RpY2t5IT09Yy5zdGlja3l8fGwudW5pY29kZSE9PWMudW5pY29kZSlyZXR1cm4h''@;'; put 'put ''MX1mb3IodmFyIGg9YS5sZW5ndGgtMTtoPj0wOyl7aWYoYVtoXT09PWwpcmV0dXJuIGZbaF09PT1jO2gtPTF9c3dpdGNoKGQpe2Nhc2UiTWFwIjpyZXR1cm4gbC5zaXplPT09Yy5zaXplJiZFb2UobC5lbnRyaWVzKCksYy5lbnRyaWVzKCksYS5jb25jYXQoW2xdKSxmLmNvbmNhdChbY10pKTtj''@;'; put 'put ''YXNlIlNldCI6cmV0dXJuIGwuc2l6ZT09PWMuc2l6ZSYmRW9lKGwudmFsdWVzKCksYy52YWx1ZXMoKSxhLmNvbmNhdChbbF0pLGYuY29uY2F0KFtjXSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJp''@;'; put 'put ''bmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5''@;'; put 'put ''IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIG09TW9lKGwpO2lmKG0ubGVuZ3RoIT09TW9lKGMpLmxlbmd0aClyZXR1cm4hMTt2YXIgXz1hLmNvbmNhdChbbF0pLE89Zi5jb25jYXQoW2Nd''@;'; put 'put ''KTtmb3IoaD1tLmxlbmd0aC0xO2g+PTA7KXt2YXIgWD1tW2hdO2lmKCFTRChYLGMpfHwhX3ooY1tYXSxsW1hdLF8sTykpcmV0dXJuITE7aC09MX1yZXR1cm4hMH1jb25zdCBoQWU9VXYoZnVuY3Rpb24oYyxhKXtyZXR1cm4gX3ooYyxhLFtdLFtdKX0pLHhvZT1LMihmdW5jdGlvbihjKXtyZXR1''@;'; put 'put ''cm4gbnVsbCE9YyYmaEFlKGMsb0FlKGMpKX0pO2Z1bmN0aW9uIEhDKGwpe3JldHVybiBudWxsPT1sfWZ1bmN0aW9uIGM0KGwpe3JldHVybiBIQyhsKXx8eG9lKGwpfWZ1bmN0aW9uIHd6KGwpe3JldHVybiBDRChTdHJpbmcsbCl9ZnVuY3Rpb24gTUQobCl7cmV0dXJuIENEKE9iamVjdCxsKX1m''@;'; put 'put ''dW5jdGlvbiBUb2UobCl7cmV0dXJuIENEKE1hcCxsKX1mdW5jdGlvbiBPb2UobCxjKXtyZXR1cm4gbCE9PWN9ZnVuY3Rpb24gRG9lKGwsYyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGwpPT09SlNPTi5zdHJpbmdpZnkoYyl9ZnVuY3Rpb24gSW9lKGwpe2NvbnN0IGM9bmV3IE1hcDtmb3IoY29u''@;'; put 'put ''c3RbYSxmXW9mIGwpVG9lKGYpP2Muc2V0KGEsSW9lKGYpKTpjLnNldChhLGYpO3JldHVybiBjfWZ1bmN0aW9uIF9BZShsKXtzd2l0Y2goITApe2Nhc2UgVG9lKGwpOnJldHVybiBJb2UobCk7Y2FzZSBNRChsKSYmIUFycmF5LmlzQXJyYXkobCk6cmV0dXJuIElnKHt9LGwpO2RlZmF1bHQ6cmV0''@;'; put 'put ''dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobCkpfX1mdW5jdGlvbiBJZyguLi5sKXtjb25zdCBjPXt9O3JldHVybiBsLm1hcChhPT5NRChhKT97Li4uYX06e30pLmZvckVhY2goYT0+e09iamVjdC5rZXlzKGEpLmZvckVhY2goZj0+e2NvbnN0IGQ9YVtmXTtjW2ZdPUFycmF5LmlzQXJy''@;'; put 'put ''YXkoZCk/QXJyYXkuZnJvbShkKTpNRChkKT9JZyhjW2ZdfHx7fSxkKTpkfSl9KSxjfWZ1bmN0aW9uIExvZShsPXdpbmRvdyl7cmV0dXJuIUhDKGwpfWxldCBrRCxQb2UsQ3osU3o7ZnVuY3Rpb24gRm9lKGw9ITApe2lmKCFsfHwha0Qpe2NvbnN0IGM9ZG9jdW1lbnQmJmRvY3VtZW50LnF1ZXJ5''@;'; put 'put ''U2VsZWN0b3IoIltuZy12ZXJzaW9uXSIpO2tEPWM/IiIrYy5nZXRBdHRyaWJ1dGUoIm5nLXZlcnNpb24iKTp2b2lkIDB9cmV0dXJuIGtEfWZ1bmN0aW9uIGtBZShsPSEwKXtyZXR1cm4gbCYma0R8fChQb2U9d2luZG93Py5hbmd1bGFyPy52ZXJzaW9uPy5mdWxsKSxQb2V9ZnVuY3Rpb24gSG9l''@;'; put 'put ''KGw9ITApe3JldHVybiBsJiZDenx8KEN6PXdpbmRvdz8uQ0RTPy5fcmVhY3Q/LnZlcnNpb24/d2luZG93LkNEUy5fcmVhY3QudmVyc2lvbjpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1yZWFjdHJvb3RdLCBbZGF0YS1yZWFjdGlkXSIpPyJ1bmtub3duIHZlcnNpb24iOnZvaWQgMCks''@;'; put 'put ''Q3p9ZnVuY3Rpb24gTm9lKGw9ITApe2lmKCFsfHwhU3ope2NvbnN0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiKiIpO2xldCBhO2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKWlmKGNbZl0uX192dWVfXyl7YT1jW2ZdO2JyZWFrfVN6PWE/InVua25vd24gdmVyc2lvbiI6dm9pZCAw''@;'; put 'put ''fXJldHVybiBTen1mdW5jdGlvbiBSZyhsKXtyZXR1cm4gbC5yZXBsYWNlKC9bQS1aXS9nLGM9PiItIitjLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGpvZShsKXtyZXR1cm4gbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStsLnNsaWNlKDEpfWNvbnN0IElBZT1uZXcgY2xhc3N7Y29uc3RydWN0''@;'; put 'put ''b3IoKXtpZih0aGlzLnN1cHBvcnRzPXtqczohMH0sIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiKXx8Im5vLWpzIj09PWRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiKSl7Y29uc3QgbD1SZyhPYmplY3Qua2V5cyh0aGlzLnN1cHBvcnRz''@;'; put 'put ''KS5yZWR1Y2UoKGMsYSk9PmAke2N9ICR7dGhpcy5zdXBwb3J0c1thXT9hOiJuby0iK2F9YCwiIikpLnRyaW0oKTtkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgiY2RzLXN1cHBvcnRzIixsKX19fTtmdW5jdGlvbiBab2UobCxjKXtzd2l0Y2gobCl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYSxmKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oYSxmLGQpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihhLGYsZCxoKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYSxmLGQsaCxtKXtyZXR1cm4gYy5hcHBseSh0aGlz''@;'; put 'put ''LGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYSxmLGQsaCxtLF8pe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihhLGYsZCxoLG0sXyxPKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oYSxmLGQsaCxtLF8sTyxYKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYSxmLGQsaCxtLF8sTyxYLGFlKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMTA6cmV0dXJuIGZ1bmN0aW9uKGEsZixkLGgs''@;'; put 'put ''bSxfLE8sWCxhZSxwZSl7cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gX2FyaXR5IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciBubyBncmVhdGVyIHRoYW4gdGVuIil9fWZ1bmN0aW9uIFlvZShs''@;'; put 'put ''LGMsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBmPVtdLGQ9MCxoPWwsbT0wO208Yy5sZW5ndGh8fGQ8YXJndW1lbnRzLmxlbmd0aDspe3ZhciBfO208Yy5sZW5ndGgmJighdTQoY1ttXSl8fGQ+PWFyZ3VtZW50cy5sZW5ndGgpP189Y1ttXTooXz1hcmd1bWVudHNbZF0sZCs9MSksZltt''@;'; put 'put ''XT1fLHU0KF8pfHwoaC09MSksbSs9MX1yZXR1cm4gaDw9MD9hLmFwcGx5KHRoaXMsZik6Wm9lKGgsWW9lKGwsZixhKSl9fWNvbnN0IFdvZT1VdihmdW5jdGlvbihjLGEpe3JldHVybiAxPT09Yz9LMihhKTpab2UoYyxZb2UoYyxbXSxhKSl9KSxMQWU9TnVtYmVyLmlzSW50ZWdlcnx8ZnVuY3Rp''@;'; put 'put ''b24oYyl7cmV0dXJuIGM8PDA9PT1jfSxGQWU9VXYoZnVuY3Rpb24oYyxhKXt2YXIgZj1jPDA/YS5sZW5ndGgrYzpjO3JldHVybiBib2UoYSk/YS5jaGFyQXQoZik6YVtmXX0pLE5BZT1VdihmdW5jdGlvbihjLGEpe3JldHVybiBjLm1hcChmdW5jdGlvbihmKXtmb3IodmFyIG0sZD1hLGg9MDto''@;'; put 'put ''PGYubGVuZ3RoOyl7aWYobnVsbD09ZClyZXR1cm47ZD1MQWUobT1mW2hdKT9GQWUobSxkKTpkW21dLGgrPTF9cmV0dXJuIGR9KX0pLEJBZT1VdihmdW5jdGlvbihjLGEpe3JldHVybiBOQWUoW2NdLGEpWzBdfSksekFlPVdvZSgyLChsLGMpPT52b2lkIDAhPT1CQWUobCxjKSksR29lPXpBZSh7''@;'; put 'put ''IkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciI6ITB9LHdpbmRvdyk7Y2xhc3MgTGd7c3RhdGljIGxvZyguLi5jKXtFeigpJiZreigpJiZjb25zb2xlLmxvZyguLi5jKX1zdGF0aWMgd2FybiguLi5jKXtFeigpJiZreigpJiZjb25zb2xlLndhcm4oLi4uYyl9c3RhdGljIGVycm9yKC4uLmMpe0V6''@;'; put 'put ''KCkmJmt6KCkmJmNvbnNvbGUuZXJyb3IoLi4uYyl9fWZ1bmN0aW9uIGt6KCl7cmV0dXJuIUdvZShbImphc21pbmUiXSl9ZnVuY3Rpb24gRXooKXtyZXR1cm4hd2luZG93LkNEUy5lbnZpcm9ubWVudC5wcm9kdWN0aW9ufWZ1bmN0aW9uICRvZSgpe0xvZSgpJiYod2luZG93LkNEUz13aW5kb3cu''@;'; put 'put ''Q0RTfHx7X3ZlcnNpb246W10sX3JlYWN0Ont2ZXJzaW9uOnZvaWQgMH0sX3N1cHBvcnRzOklBZS5zdXBwb3J0cyxfaXNTdGF0ZVByb3hpZWQ6ITEsX3N0YXRlOntmb2N1c1RyYXBJdGVtczpbXSxsYXllckVsZW1lbnRzOltdLGkxOG5SZWdpc3RyeTp7fSxlbGVtZW50UmVnaXN0cnk6e30saWNv''@;'; put 'put ''blJlZ2lzdHJ5Ont9LG1vdGlvblJlZ2lzdHJ5Ont9fSxlbnZpcm9ubWVudDp7cHJvZHVjdGlvbjohMX0sZ2V0RGV0YWlsczpLb2UsbG9nRGV0YWlsczpaQWV9LGZ1bmN0aW9uKCl7Y29uc3QgbD0iNi40LjUiO3dpbmRvdy5DRFMuX3ZlcnNpb24uaW5kZXhPZihsKTwwJiYod2luZG93LkNEUy5f''@;'; put 'put ''dmVyc2lvbi5wdXNoKGwpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKT8uc2V0QXR0cmlidXRlKCJjZHMtdmVyc2lvbiIsd2luZG93LkNEUy5fdmVyc2lvbi5qb2luKCIgIikpKSx3aW5kb3cuQ0RTLl92ZXJzaW9uLmxlbmd0aD4xJiZMZy53YXJuKCJSdW5uaW5nIG1vcmUgdGhhbiBv''@;'; put 'put ''bmUgdmVyc2lvbiBvZiBDbGFyaXR5IGNhbiBjYXVzZSB1bmV4cGVjdGVkIGlzc3Vlcy4gUGxlYXNlIGVuc3VyZSBvbmx5IG9uZSB2ZXJzaW9uIGlzIGxvYWRlZC4iKX0oKSx3aW5kb3cuQ0RTLl9pc1N0YXRlUHJveGllZHx8KHdpbmRvdy5DRFMuX2lzU3RhdGVQcm94aWVkPSEwLHdpbmRvdy5D''@;'; put 'put ''RFMuX3N0YXRlPW5ldyBQcm94eSh3aW5kb3cuQ0RTLl9zdGF0ZSx7c2V0OihsLGMsYSk9Pntjb25zdCBmPXtrZXk6YyxwcmV2OndpbmRvdy5DRFMuX3N0YXRlW2NdLGN1cnJlbnQ6YX07cmV0dXJuIGxbY109YSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiQ0RTX1NU''@;'; put 'put ''QVRFX1VQREFURSIse2RldGFpbDpmfSkpLCEwfX0pKSl9ZnVuY3Rpb24gS29lKCl7cmV0dXJue3ZlcnNpb25zOndpbmRvdy5DRFMuX3ZlcnNpb24sZW52aXJvbm1lbnQ6d2luZG93LkNEUy5lbnZpcm9ubWVudCx1c2VyQWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdXBwb3J0czp3aW5kb3cu''@;'; put 'put ''Q0RTLl9zdXBwb3J0cyxhbmd1bGFyVmVyc2lvbjpGb2UoITEpLGFuZ3VsYXJKU1ZlcnNpb246a0FlKCExKSxyZWFjdFZlcnNpb246SG9lKCExKSx2dWVWZXJzaW9uOk5vZSghMSksc3RhdGU6ey4uLndpbmRvdy5DRFMuX3N0YXRlLGljb25SZWdpc3RyeTpPYmplY3Qua2V5cyh3aW5kb3cuQ0RT''@;'; put 'put ''Ll9zdGF0ZS5pY29uUmVnaXN0cnkpLG1vdGlvblJlZ2lzdHJ5Ok9iamVjdC5rZXlzKHdpbmRvdy5DRFMuX3N0YXRlLm1vdGlvblJlZ2lzdHJ5KSxmb2N1c1RyYXBSZWdpc3RyeTpPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5mb2N1c1RyYXBJdGVtcy5tYXAobD0+bC5mb2N1c1RyYXBJ''@;'; put 'put ''ZCkpfX19ZnVuY3Rpb24gWkFlKCl7TGcubG9nKEpTT04uc3RyaW5naWZ5KEtvZSgpLG51bGwsMikpfWNvbnN0IHh6PW5ldyBjbGFzcyBKeGV7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119c3Vic2NyaWJlKGMpe2NvbnN0IGE9bmV3IFh4ZShjLHRoaXMuc3Vic2NyaXB0aW9u''@;'; put 'put ''cyk7cmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGEpLGF9ZW1pdChjKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLmZuKGMpKX10b0V2ZW50T2JzZXJ2YWJsZSgpe3JldHVybiB0aGlzfX07eHoubGlzdGVuZXI9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiQ0RTX1NU''@;'; put 'put ''QVRFX1VQREFURSIsbD0+eHouZW1pdChsLmRldGFpbCkpO2NsYXNzIG51e3N0YXRpYyBnZXQgc3RhdGUoKXtyZXR1cm4gJG9lKCksd2luZG93LkNEUy5fc3RhdGV9c3RhdGljIGdldFZhbHVlKGMpe3JldHVybiBudS5zdGF0ZVtjXX1zdGF0aWMgc2V0VmFsdWUoYyxhKXtudS5zdGF0ZVtjXT1h''@;'; put 'put ''fXN0YXRpYyBsb2coKXtMZy5sb2coSlNPTi5zdHJpbmdpZnkobnUuc3RhdGUsbnVsbCwyKSl9fW51LnN0YXRlVXBkYXRlcz14ei50b0V2ZW50T2JzZXJ2YWJsZSgpO2NvbnN0IFlBZT1bInVua25vd24iLHtvdXRsaW5lOic8Y2lyY2xlIGNsYXNzPSJjZHMtaW50ZXJuYWwtZG90LTMiIGN4PSIz''@;'; put 'put ''MS4xIiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMiIgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMSIgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiLz4nfV07Y2xhc3MgamF7c3RhdGljIGdl''@;'; put 'put ''dCByZWdpc3RyeSgpe3JldHVybnt1bmtub3duOllBZVsxXSwuLi5udS5zdGF0ZS5pY29uUmVnaXN0cnl9fXN0YXRpYyBhZGRJY29ucyguLi5jKXtudS5zdGF0ZS5pY29uUmVnaXN0cnk9ey4uLm51LnN0YXRlLmljb25SZWdpc3RyeSwuLi5PYmplY3QuZnJvbUVudHJpZXMoYy5maWx0ZXIoKFth''@;'; put 'put ''XSk9PiFqYS5yZWdpc3RyeVthXSkpfX1zdGF0aWMgYWRkQWxpYXNlcyguLi5jKXtjb25zdCBhPWMuZmlsdGVyKChbZl0pPT5qYS5yZWdpc3RyeVtmXSkuZmxhdE1hcCgoW2YsZF0pPT5kLm1hcChoPT5baCxqYS5yZWdpc3RyeVtmXV0pKTtudS5zdGF0ZS5pY29uUmVnaXN0cnk9ey4uLm51LnN0''@;'; put 'put ''YXRlLmljb25SZWdpc3RyeSwuLi5PYmplY3QuZnJvbUVudHJpZXMoYSl9fXN0YXRpYyBnZXRJY29uTmFtZUZyb21TaGFwZShjKXtyZXR1cm4gY1swXX19Y29uc3QgWnY9WyJhbmdsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yOS41MiwyMi41MiwxOCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNyww''@;'; put 'put ''LDAsMCwyLjQ1LDIuMzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCwwLDAsMi40NS0yLjM2WiIvPid9XSxfMT1bImV4Y2xhbWF0aW9uLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwx''@;'; put 'put ''LDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+PHBhdGggZD0iTTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwxOCwyMC4wN1oiLz48Y2lyY2xlIGN4PSIxNy45NSIgY3k9IjIzLjAyIiByPSIxLjUiLz4nLHNv''@;'; put 'put ''bGlkOic8cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMS40OSw2YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNS41YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI1''@;'; put 'put ''LjVaIi8+J31dLHcxPVsiY2hlY2stY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz48cGF0aCBkPSJNMTYuMzQsMjMuNzRsLTUtNWExLDEs''@;'; put 'put ''MCwwLDEsMS40MS0xLjQxbDMuNTksMy41OSw2Ljc4LTYuNzhhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzAsMThBMTIsMTIsMCwxLDEsMTgsNiwxMiwxMiwwLDAsMSwzMCwxOFptLTQuNzctMi4xNmExLjQsMS40LDAsMCwwLTItMmwtNi43Nyw2Ljc3TDEzLDE3''@;'; put 'put ''LjE2YTEuNCwxLjQsMCwwLDAtMiwybDUuNDUsNS40NVoiLz4nfV0scW9lPVsiZWxsaXBzaXMtaG9yaXpvbnRhbCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iNC45IiBjeT0i''@;'; put 'put ''MTgiIHI9IjIuOSIvPicsb3V0bGluZUJhZGdlZDonPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45Ii8+J31dLE5DPVsid2luZG93LWNsb3NlIix7b3V0bGluZTon''@;'; put 'put ''PHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDEwLjcxLDkuMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEu''@;'; put 'put ''NDFaIi8+J31dLFdBZT1bImV2ZW50Iix7b3V0bGluZTonPHBhdGggZD0iTTE2LjE3LDI1Ljg2LDEwLjgxLDIwLjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxNi4xNywyM2w4LjY0LTguNjRhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz48cGF0aCBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgz''@;'; put 'put ''Ljc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNW''@;'; put 'put ''OUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPjxyZWN0IHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPicsb3V0bGluZUFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0xMCwxMGEx''@;'; put 'put ''LDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLC4yMy0uNDFIMjMuOEwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+PHBvbHln''@;'; put 'put ''b24gcG9pbnRzPSIyMS4yOSA2IDEzIDYgMTMgOCAyMC4xNCA4IDIxLjI5IDYiLz48cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwz''@;'; put 'put ''MC4xOVYxNS4zOFoiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0xMC44MSwyMC41bDUuMzYsNS4zNkwyNi4yMiwxNS44MWExLDEsMCwwLDAtMS40MS0xLjQxTDE2LjE3LDIzbC0zLjk0LTMuOTRhMSwxLDAsMCwwLTEuNDEsMS40MVoiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEt''@;'; put 'put ''MVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcu''@;'; put 'put ''NDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz48cGF0aCBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJN''@;'; put 'put ''MjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+PHBhdGggZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMCwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTI1Ljk0LDE2LjU4bC05LjY3LDkuNjdMMTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4z''@;'; put 'put ''NiwwLDEsMSwxLjkzLDEuOTNaIi8+Jyxzb2xpZEFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzMuNjgsMTUuNEgyNi4zYTEuMzQsMS4zNCwwLDAsMS0uMzYsMS4xOGwtOS42Nyw5LjY3''@;'; put 'put ''TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOCw3LTdoLTFBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUs''@;'; put 'put ''MzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+Jyxzb2xpZEJhZGdlZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEy''@;'; put 'put ''LjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVptLTQuMDYsMy4wOC05LjY3LDkuNjdM''@;'; put 'put ''MTEsMjAuOTRBMS4zNiwxLjM2LDAsMCwxLDEyLjksMTlsMy4zOCwzLjM4TDI0LDE0LjY2YTEuMzYsMS4zNiwwLDEsMSwxLjkzLDEuOTNaIi8+J31dLEdBZT1bImNhbGVuZGFyIix7b3V0bGluZTonPHBhdGggZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCww''@;'; put 'put ''LDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+PHJlY3QgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTQiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxOSIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QiIHg9IjE0IiB5PSIy''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAs''@;'; put 'put ''MCwxMCwxMFoiLz48cGF0aCBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+PHJlY3QgeD0iMTMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIi8+JyxvdXRsaW5lQWxlcnRlZDonPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMzBI''@;'; put 'put ''NFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaIi8+PHJlY3QgeD0iOCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTQi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIx''@;'; put 'put ''OSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9''@;'; put 'put ''IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwb2x5Z29uIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+JyxvdXRsaW5lQmFkZ2VkOic8''@;'; put 'put ''cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIvPjxyZWN0IHg9IjgiIHk9''@;'; put 'put ''IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIg''@;'; put 'put ''eT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4''@;'; put 'put ''IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxwYXRoIGQ9''@;'; put 'put ''Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMjIuNSw2SDEzVjhoOS43OEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDEsMS00LjQsMFY2''@;'; put 'put ''SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0xMCwyNkg4VjI0aDJabTAtNUg4''@;'; put 'put ''VjE5aDJabTAtNUg4VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm0wLTVIMjBWMTRoMlptNiwxMEgyNlYyNGgyWm0wLTVIMjZWMTloMlptMC01SDI2VjE0aDJaIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAs''@;'; put 'put ''MCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz4nLHNvbGlkQWxlcnRlZDonPHBhdGggZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAs''@;'; put 'put ''MCwxLDE5LDkuODlMMjEuMjksNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUuMzhaTTEwLDI2SDhWMjRoMlptMC01SDhWMTlo''@;'; put 'put ''MlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTYsNUgyNlYyNGgyWm0wLTVIMjZWMTloMloiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCww''@;'; put 'put ''LDAsMTAsMTBaIi8+Jyxzb2xpZEJhZGdlZDonPHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRB''@;'; put 'put ''MS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUsMCwwLDEsMzAsMTMuNVpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJa''@;'; put 'put ''bTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPid9XSwkQWU9WyJleWUtaGlkZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgs''@;'; put 'put ''Ni43OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43OSwwLDAsMC0yLjM3LjQzTDE4LDEzLjIzYTQuNzgsNC43OCwwLDAsMSwuNzQtLjA2QTQuODcsNC44NywwLDAsMSwyMy42MiwxOGE0Ljc5LDQuNzksMCwwLDEtLjA2Ljc0WiIvPjxwYXRoIGQ9Ik0z''@;'; put 'put ''NC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQy''@;'; put 'put ''YTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIvPjxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAsMCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1''@;'; put 'put ''LDEuNzUtMS41LTI2LTI2Wm05Ljc1LDkuNzUsNi42NSw2LjY1YTQuODEsNC44MSwwLDAsMS0yLjUuNzJBNC44Nyw0Ljg3LDAsMCwxLDEzLjksMTgsNC44MSw0LjgxLDAsMCwxLDE0LjYyLDE1LjUzWm0tMS40NS0xLjQ1YTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwx''@;'; put 'put ''NC45MSwwLDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOC4zNywxMS4xN0E2Ljc5LDYuNzksMCwwLDAsMTYsMTEuNmw4LjgsOC44QTYuNzgsNi43OCwwLDAsMCwyNS4yMywx''@;'; put 'put ''OCw2Ljg2LDYuODYsMCwwLDAsMTguMzcsMTEuMTdaIi8+PHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEz''@;'; put 'put ''LjgsOC40M2ExNy43NSwxNy43NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIi8+PHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4''@;'; put 'put ''LDEwLDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTguMyw4LjNhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjks''@;'; put 'put ''MTcuMjksMCwwLDEsNi4xMi02LjNaIi8+J31dLEtBZT1bImV5ZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYt''@;'; put 'put ''My43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIvPjxwYXRoIGQ9Ik0xOC4wOSwxMS4x''@;'; put 'put ''N0E2Ljg2LDYuODYsMCwxLDAsMjUsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjA5LDExLjE3Wm0wLDExLjcyQTQuODYsNC44NiwwLDEsMSwyMywxOCw0Ljg3LDQuODcsMCwwLDEsMTguMDksMjIuODlaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0x''@;'; put 'put ''NS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0''@;'; put 'put ''LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIi8+PGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0iNi44NiIvPid9XSxxQWU9WyJlbGxpcHNpcy12ZXJ0aWNhbCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjki''@;'; put 'put ''Lz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIvPicsb3V0bGluZUJhZGdlZDonPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9''@;'; put 'put ''IjE4IiBjeT0iMzEuMSIgcj0iMi45Ii8+J31dLFhBZT1bInZpZXctY29sdW1ucyIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMSw1SDVBMiwyLDAsMCwwLDMsN1YyOWEyLDIsMCwwLDAsMiwySDMxYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzEsNVpNMTMsMjlINVY3aDhabTEwLDBIMTVWN2g4''@;'; put 'put ''WiIvPid9XSxKQWU9WyJhcnJvdyIse291dGxpbmU6JzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDguMzQsMTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiLz4nfV0sWG9lPVsidGlt''@;'; put 'put ''ZXMiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTkuNDEsMThsOC4yOS04LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksOS43MSw4LjI5QTEsMSwwLDAsMCw4LjI5LDkuNzFMMTYuNTksMTgsOC4yOSwyNi4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDguMjksOC4yOWExLDEs''@;'; put 'put ''MCwwLDAsMS40MS0xLjQxWiIvPid9XSxRQWU9WyJzdGVwLWZvcndhcmQtMiIse291dGxpbmU6JzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcuMTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5''@;'; put 'put ''LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIvPjxwYXRoIGQ9Ik0yNi40OSw1YTEuNywxLjcsMCwwLDAtMS43LDEuN1YyOS4zYTEuNywxLjcsMCwwLDAsMy40LDBWNi43QTEuNywxLjcsMCwwLDAsMjYuNDksNVoiLz4nfV0sSm9lPVsiYW5nbGUtZG91YmxlIix7b3V0bGluZTonPHBhdGggZD0iTTI5''@;'; put 'put ''LDE5LjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDguODMsNy43MSwxOS4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDYsMjkuNzEsMTcuNzFBMSwxLDAsMCwxLDI5LDE5LjQxWiIvPjxwYXRoIGQ9Ik0yOSwzMC40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSww''@;'; put 'put ''LDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPid9XSxlVGU9WyJmaWx0ZXItZ3JpZC1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41''@;'; put 'put ''N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz48cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwx''@;'; put 'put ''OCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJa''@;'; put 'put ''Ii8+PHBhdGggZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSww''@;'; put 'put ''LDAsMCwuMTUtLjM1VjExWiIvPid9XSx0VGU9WyJmaWx0ZXItZ3JpZCIse291dGxpbmU6JzxwYXRoIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRB''@;'; put 'put ''MS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1''@;'; put 'put ''djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nfV0sUW9lPVsiaW5mby1jaXJjbGUiLHtvdXRsaW5lOic8Y2lyY2xlIGN4PSIxNy45''@;'; put 'put ''MyIgY3k9IjExLjkiIHI9IjEuNCIvPjxwYXRoIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz48cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAs''@;'; put 'put ''MSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0yLDUuMTVhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsMTUuOSwxMS4xNVpNMjMsMjRhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwx''@;'; put 'put ''LDEsMC0yaDJWMTdIMTZhMSwxLDAsMCwxLDAtMmg0djhoMkExLDEsMCwwLDEsMjMsMjRaIi8+J31dLG5UZT1bImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDIxLjMyYTEuMywxLjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4z''@;'; put 'put ''LDEuMywwLDAsMCwxOCwyMS4zMloiLz48Y2lyY2xlIGN4PSIxNy45NSIgY3k9IjI0LjI3IiByPSIxLjUiLz48cGF0aCBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQz''@;'; put 'put ''Wm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAs''@;'; put 'put ''MCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIs''@;'; put 'put ''MS43MiwwLDAsMSwxOCwyNi4yNVoiLz4nfV0sclRlPVsiY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+Jyxzb2xpZDonPHBhdGggZD0i''@;'; put 'put ''TTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0WiIvPid9XSxpVGU9WyJkb3QtY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDExYTcsNywwLDEsMS03LDcsNyw3LDAsMCwxLDctNyIvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPid9XSxlYWU9WyJlcnJvci1zdGFuZGFyZCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz48cGF0aCBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJh''@;'; put 'put ''MSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+PHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDIuMWExNiwx''@;'; put 'put ''NiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwyLjFaTTE2LjYsOC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOC42WiIvPid9XSxvVGU9WyJzdWNjZXNzLXN0YW5k''@;'; put 'put ''YXJkIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz48cGF0aCBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwx''@;'; put 'put ''LDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1''@;'; put 'put ''Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+J31dO2NsYXNzIGxUZSBleHRlbmRzIHRle2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoKX1zY2hlZHVsZShjLGE9MCl7cmV0dXJuIHRoaXN9fWNvbnN0IEVEPXtzZXRJbnRlcnZhbChsLGMsLi4uYSl7Y29uc3R7ZGVsZWdh''@;'; put 'put ''dGU6Zn09RUQ7cmV0dXJuIGY/LnNldEludGVydmFsP2Yuc2V0SW50ZXJ2YWwobCxjLC4uLmEpOnNldEludGVydmFsKGwsYywuLi5hKX0sY2xlYXJJbnRlcnZhbChsKXtjb25zdHtkZWxlZ2F0ZTpjfT1FRDtyZXR1cm4oYz8uY2xlYXJJbnRlcnZhbHx8Y2xlYXJJbnRlcnZhbCkobCl9LGRlbGVn''@;'; put 'put ''YXRlOnZvaWQgMH07Y2xhc3MgQXogZXh0ZW5kcyBsVGV7Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLGEpLHRoaXMuc2NoZWR1bGVyPWMsdGhpcy53b3JrPWEsdGhpcy5wZW5kaW5nPSExfXNjaGVkdWxlKGMsYT0wKXt2YXIgZjtpZih0aGlzLmNsb3NlZClyZXR1cm4gdGhpczt0aGlzLnN0YXRl''@;'; put 'put ''PWM7Y29uc3QgZD10aGlzLmlkLGg9dGhpcy5zY2hlZHVsZXI7cmV0dXJuIG51bGwhPWQmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQoaCxkLGEpKSx0aGlzLnBlbmRpbmc9ITAsdGhpcy5kZWxheT1hLHRoaXMuaWQ9bnVsbCE9PShmPXRoaXMuaWQpJiZ2b2lkIDAhPT1mP2Y6dGhpcy5y''@;'; put 'put ''ZXF1ZXN0QXN5bmNJZChoLHRoaXMuaWQsYSksdGhpc31yZXF1ZXN0QXN5bmNJZChjLGEsZj0wKXtyZXR1cm4gRUQuc2V0SW50ZXJ2YWwoYy5mbHVzaC5iaW5kKGMsdGhpcyksZil9cmVjeWNsZUFzeW5jSWQoYyxhLGY9MCl7aWYobnVsbCE9ZiYmdGhpcy5kZWxheT09PWYmJiExPT09dGhpcy5w''@;'; put 'put ''ZW5kaW5nKXJldHVybiBhO251bGwhPWEmJkVELmNsZWFySW50ZXJ2YWwoYSl9ZXhlY3V0ZShjLGEpe2lmKHRoaXMuY2xvc2VkKXJldHVybiBuZXcgRXJyb3IoImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24iKTt0aGlzLnBlbmRpbmc9ITE7Y29uc3QgZj10aGlzLl9leGVjdXRlKGMsYSk7''@;'; put 'put ''aWYoZilyZXR1cm4gZjshMT09PXRoaXMucGVuZGluZyYmbnVsbCE9dGhpcy5pZCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlcix0aGlzLmlkLG51bGwpKX1fZXhlY3V0ZShjLGEpe2xldCBkLGY9ITE7dHJ5e3RoaXMud29yayhjKX1jYXRjaChoKXtmPSEwLGQ9''@;'; put 'put ''aHx8bmV3IEVycm9yKCJTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yIil9aWYoZilyZXR1cm4gdGhpcy51bnN1YnNjcmliZSgpLGR9dW5zdWJzY3JpYmUoKXtpZighdGhpcy5jbG9zZWQpe2NvbnN0e2lkOmMsc2NoZWR1bGVyOmF9PXRoaXMse2FjdGlvbnM6Zn09YTt0aGlzLndv''@;'; put 'put ''cms9dGhpcy5zdGF0ZT10aGlzLnNjaGVkdWxlcj1udWxsLHRoaXMucGVuZGluZz0hMSxxKGYsdGhpcyksbnVsbCE9YyYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChhLGMsbnVsbCkpLHRoaXMuZGVsYXk9bnVsbCxzdXBlci51bnN1YnNjcmliZSgpfX19Y29uc3QgVHo9e25vdzooKT0+''@;'; put 'put ''KFR6LmRlbGVnYXRlfHxEYXRlKS5ub3coKSxkZWxlZ2F0ZTp2b2lkIDB9O2NsYXNzIFZDe2NvbnN0cnVjdG9yKGMsYT1WQy5ub3cpe3RoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcj1jLHRoaXMubm93PWF9c2NoZWR1bGUoYyxhPTAsZil7cmV0dXJuIG5ldyB0aGlzLnNjaGVkdWxlckFjdGlvbkN0''@;'; put 'put ''b3IodGhpcyxjKS5zY2hlZHVsZShmLGEpfX1WQy5ub3c9VHoubm93O2NsYXNzIE96IGV4dGVuZHMgVkN7Y29uc3RydWN0b3IoYyxhPVZDLm5vdyl7c3VwZXIoYyxhKSx0aGlzLmFjdGlvbnM9W10sdGhpcy5fYWN0aXZlPSExfWZsdXNoKGMpe2NvbnN0e2FjdGlvbnM6YX09dGhpcztpZih0aGlz''@;'; put 'put ''Ll9hY3RpdmUpcmV0dXJuIHZvaWQgYS5wdXNoKGMpO2xldCBmO3RoaXMuX2FjdGl2ZT0hMDtkb3tpZihmPWMuZXhlY3V0ZShjLnN0YXRlLGMuZGVsYXkpKWJyZWFrfXdoaWxlKGM9YS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsZil7Zm9yKDtjPWEuc2hpZnQoKTspYy51bnN1YnNjcmli''@;'; put 'put ''ZSgpO3Rocm93IGZ9fX1jb25zdCBCQz1uZXcgT3ooQXopLHNUZT1CQztmdW5jdGlvbiBZdihsLGM9QkMpe3JldHVybiBudCgoYSxmKT0+e2xldCBkPW51bGwsaD1udWxsLG09bnVsbDtjb25zdCBfPSgpPT57aWYoZCl7ZC51bnN1YnNjcmliZSgpLGQ9bnVsbDtjb25zdCBYPWg7aD1udWxsLGYu''@;'; put 'put ''bmV4dChYKX19O2Z1bmN0aW9uIE8oKXtjb25zdCBYPW0rbCxhZT1jLm5vdygpO2lmKGFlPFgpcmV0dXJuIGQ9dGhpcy5zY2hlZHVsZSh2b2lkIDAsWC1hZSksdm9pZCBmLmFkZChkKTtfKCl9YS5zdWJzY3JpYmUocWUoZixYPT57aD1YLG09Yy5ub3coKSxkfHwoZD1jLnNjaGVkdWxlKE8sbCks''@;'; put 'put ''Zi5hZGQoZCkpfSwoKT0+e18oKSxmLmNvbXBsZXRlKCl9LHZvaWQgMCwoKT0+e2g9ZD1udWxsfSkpfSl9ZnVuY3Rpb24gQWgobCl7cmV0dXJuIG50KChjLGEpPT57SnIobCkuc3Vic2NyaWJlKHFlKGEsKCk9PmEuY29tcGxldGUoKSxZKSksIWEuY2xvc2VkJiZjLnN1YnNjcmliZShhKX0pfWZ1''@;'; put 'put ''bmN0aW9uIER6KGw9MCxjLGE9c1RlKXtsZXQgZj0tMTtyZXR1cm4gbnVsbCE9YyYmKFZ1KGMpP2E9YzpmPWMpLG5ldyBCZShkPT57bGV0IGg9ZnVuY3Rpb24gY1RlKGwpe3JldHVybiBsIGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKGwpfShsKT8rbC1hLm5vdygpOmw7aDwwJiYoaD0wKTtsZXQg''@;'; put 'put ''bT0wO3JldHVybiBhLnNjaGVkdWxlKGZ1bmN0aW9uKCl7ZC5jbG9zZWR8fChkLm5leHQobSsrKSwwPD1mP3RoaXMuc2NoZWR1bGUodm9pZCAwLGYpOmQuY29tcGxldGUoKSl9LGgpfSl9Y29uc3QgZFRlPVsiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciJdLGhUZT1bImFkZEV2ZW50TGlz''@;'; put 'put ''dGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0scFRlPVsib24iLCJvZmYiXTtmdW5jdGlvbiB3ZChsLGMsYSxmKXtpZihHKGEpJiYoZj1hLGE9dm9pZCAwKSxmKXJldHVybiB3ZChsLGMsYSkucGlwZSh4aihmKSk7Y29uc3RbZCxoXT1mdW5jdGlvbiB2VGUobCl7cmV0dXJuIEcobC5hZGRF''@;'; put 'put ''dmVudExpc3RlbmVyKSYmRyhsLnJlbW92ZUV2ZW50TGlzdGVuZXIpfShsKT9oVGUubWFwKG09Pl89PmxbbV0oYyxfLGEpKTpmdW5jdGlvbiBtVGUobCl7cmV0dXJuIEcobC5hZGRMaXN0ZW5lcikmJkcobC5yZW1vdmVMaXN0ZW5lcil9KGwpP2RUZS5tYXAobmFlKGwsYykpOmZ1bmN0aW9uIGdU''@;'; put 'put ''ZShsKXtyZXR1cm4gRyhsLm9uKSYmRyhsLm9mZil9KGwpP3BUZS5tYXAobmFlKGwsYykpOltdO2lmKCFkJiZGbihsKSlyZXR1cm4gX3IobT0+d2QobSxjLGEpKShKcihsKSk7aWYoIWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBldmVudCB0YXJnZXQiKTtyZXR1cm4gbmV3IEJlKG09''@;'; put 'put ''Pntjb25zdCBfPSguLi5PKT0+bS5uZXh0KDE8Ty5sZW5ndGg/TzpPWzBdKTtyZXR1cm4gZChfKSwoKT0+aChfKX0pfWZ1bmN0aW9uIG5hZShsLGMpe3JldHVybiBhPT5mPT5sW2FdKGMsZil9Y2xhc3MgeEQgZXh0ZW5kcyB3ZXtjb25zdHJ1Y3RvcihjPTEvMCxhPTEvMCxmPVR6KXtzdXBlcigp''@;'; put 'put ''LHRoaXMuX2J1ZmZlclNpemU9Yyx0aGlzLl93aW5kb3dUaW1lPWEsdGhpcy5fdGltZXN0YW1wUHJvdmlkZXI9Zix0aGlzLl9idWZmZXI9W10sdGhpcy5faW5maW5pdGVUaW1lV2luZG93PSEwLHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz1hPT09MS8wLHRoaXMuX2J1ZmZlclNpemU9TWF0aC5t''@;'; put 'put ''YXgoMSxjKSx0aGlzLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsYSl9bmV4dChjKXtjb25zdHtpc1N0b3BwZWQ6YSxfYnVmZmVyOmYsX2luZmluaXRlVGltZVdpbmRvdzpkLF90aW1lc3RhbXBQcm92aWRlcjpoLF93aW5kb3dUaW1lOm19PXRoaXM7YXx8KGYucHVzaChjKSwhZCYmZi5wdXNoKGgu''@;'; put 'put ''bm93KCkrbSkpLHRoaXMuX3RyaW1CdWZmZXIoKSxzdXBlci5uZXh0KGMpfV9zdWJzY3JpYmUoYyl7dGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX3RyaW1CdWZmZXIoKTtjb25zdCBhPXRoaXMuX2lubmVyU3Vic2NyaWJlKGMpLHtfaW5maW5pdGVUaW1lV2luZG93OmYsX2J1ZmZlcjpkfT10''@;'; put 'put ''aGlzLGg9ZC5zbGljZSgpO2ZvcihsZXQgbT0wO208aC5sZW5ndGgmJiFjLmNsb3NlZDttKz1mPzE6MiljLm5leHQoaFttXSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoYyksYX1fdHJpbUJ1ZmZlcigpe2NvbnN0e19idWZmZXJTaXplOmMsX3RpbWVzdGFtcFByb3ZpZGVy''@;'; put 'put ''OmEsX2J1ZmZlcjpmLF9pbmZpbml0ZVRpbWVXaW5kb3c6ZH09dGhpcyxoPShkPzE6MikqYztpZihjPDEvMCYmaDxmLmxlbmd0aCYmZi5zcGxpY2UoMCxmLmxlbmd0aC1oKSwhZCl7Y29uc3QgbT1hLm5vdygpO2xldCBfPTA7Zm9yKGxldCBPPTE7TzxmLmxlbmd0aCYmZltPXTw9bTtPKz0yKV89''@;'; put 'put ''TztfJiZmLnNwbGljZSgwLF8rMSl9fX1jbGFzcyByYWV7fWNsYXNzIHlUZXt9Y29uc3QgcTI9IioiO2Z1bmN0aW9uIEMxKGwsYyl7cmV0dXJue3R5cGU6NyxuYW1lOmwsZGVmaW5pdGlvbnM6YyxvcHRpb25zOnt9fX1mdW5jdGlvbiBjYyhsLGM9bnVsbCl7cmV0dXJue3R5cGU6NCxzdHlsZXM6''@;'; put 'put ''Yyx0aW1pbmdzOmx9fWZ1bmN0aW9uIGlhZShsLGM9bnVsbCl7cmV0dXJue3R5cGU6MixzdGVwczpsLG9wdGlvbnM6Y319ZnVuY3Rpb24gQ2EobCl7cmV0dXJue3R5cGU6NixzdHlsZXM6bCxvZmZzZXQ6bnVsbH19ZnVuY3Rpb24gQUQobCxjLGEpe3JldHVybnt0eXBlOjAsbmFtZTpsLHN0eWxl''@;'; put 'put ''czpjLG9wdGlvbnM6YX19ZnVuY3Rpb24gYlRlKGwpe3JldHVybnt0eXBlOjUsc3RlcHM6bH19ZnVuY3Rpb24gYnUobCxjLGE9bnVsbCl7cmV0dXJue3R5cGU6MSxleHByOmwsYW5pbWF0aW9uOmMsb3B0aW9uczphfX1jbGFzcyBqQ3tjb25zdHJ1Y3RvcihjPTAsYT0wKXt0aGlzLl9vbkRvbmVG''@;'; put 'put ''bnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5fb3JpZ2luYWxPbkRvbmVGbnM9W10sdGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3Bv''@;'; put 'put ''c2l0aW9uPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT1jK2F9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaChjPT5jKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9b25TdGFydChjKXt0aGlz''@;'; put 'put ''Ll9vcmlnaW5hbE9uU3RhcnRGbnMucHVzaChjKSx0aGlzLl9vblN0YXJ0Rm5zLnB1c2goYyl9b25Eb25lKGMpe3RoaXMuX29yaWdpbmFsT25Eb25lRm5zLnB1c2goYyksdGhpcy5fb25Eb25lRm5zLnB1c2goYyl9b25EZXN0cm95KGMpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKGMpfWhhc1N0''@;'; put 'put ''YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1pbml0KCl7fXBsYXkoKXt0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX29uU3RhcnQoKSx0aGlzLnRyaWdnZXJNaWNyb3Rhc2soKSksdGhpcy5fc3RhcnRlZD0hMH10cmlnZ2VyTWljcm90YXNrKCl7cXVldWVNaWNyb3Rhc2soKCk9PnRoaXMu''@;'; put 'put ''X29uRmluaXNoKCkpfV9vblN0YXJ0KCl7dGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3ll''@;'; put 'put ''ZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goYz0+YygpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXJlc2V0KCl7dGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9vblN0''@;'; put 'put ''YXJ0Rm5zPXRoaXMuX29yaWdpbmFsT25TdGFydEZucyx0aGlzLl9vbkRvbmVGbnM9dGhpcy5fb3JpZ2luYWxPbkRvbmVGbnN9c2V0UG9zaXRpb24oYyl7dGhpcy5fcG9zaXRpb249dGhpcy50b3RhbFRpbWU/Yyp0aGlzLnRvdGFsVGltZToxfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMudG90''@;'; put 'put ''YWxUaW1lP3RoaXMuX3Bvc2l0aW9uL3RoaXMudG90YWxUaW1lOjF9dHJpZ2dlckNhbGxiYWNrKGMpe2NvbnN0IGE9InN0YXJ0Ij09Yz90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZuczthLmZvckVhY2goZj0+ZigpKSxhLmxlbmd0aD0wfX1jbGFzcyBvYWV7Y29uc3RydWN0b3IoYyl7''@;'; put 'put ''dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9MCx0aGlzLnBsYXll''@;'; put 'put ''cnM9YztsZXQgYT0wLGY9MCxkPTA7Y29uc3QgaD10aGlzLnBsYXllcnMubGVuZ3RoOzA9PWg/cXVldWVNaWNyb3Rhc2soKCk9PnRoaXMuX29uRmluaXNoKCkpOnRoaXMucGxheWVycy5mb3JFYWNoKG09PnttLm9uRG9uZSgoKT0+eysrYT09aCYmdGhpcy5fb25GaW5pc2goKX0pLG0ub25EZXN0''@;'; put 'put ''cm95KCgpPT57KytmPT1oJiZ0aGlzLl9vbkRlc3Ryb3koKX0pLG0ub25TdGFydCgoKT0+eysrZD09aCYmdGhpcy5fb25TdGFydCgpfSl9KSx0aGlzLnRvdGFsVGltZT10aGlzLnBsYXllcnMucmVkdWNlKChtLF8pPT5NYXRoLm1heChtLF8udG90YWxUaW1lKSwwKX1fb25GaW5pc2goKXt0aGlz''@;'; put 'put ''Ll9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25Eb25lRm5zPVtdKX1pbml0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goYz0+Yy5pbml0KCkpfW9uU3RhcnQoYyl7dGhpcy5fb25TdGFydEZucy5wdXNoKGMpfV9vblN0''@;'; put 'put ''YXJ0KCl7dGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9zdGFydGVkPSEwLHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaChjPT5jKCkpLHRoaXMuX29uU3RhcnRGbnM9W10pfW9uRG9uZShjKXt0aGlzLl9vbkRvbmVGbnMucHVzaChjKX1vbkRlc3Ryb3koYyl7dGhpcy5fb25EZXN0cm95Rm5zLnB1''@;'; put 'put ''c2goYyl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLnBhcmVudFBsYXllcnx8dGhpcy5pbml0KCksdGhpcy5fb25TdGFydCgpLHRoaXMucGxheWVycy5mb3JFYWNoKGM9PmMucGxheSgpKX1wYXVzZSgpe3RoaXMucGxheWVycy5mb3JFYWNoKGM9PmMucGF1''@;'; put 'put ''c2UoKSl9cmVzdGFydCgpe3RoaXMucGxheWVycy5mb3JFYWNoKGM9PmMucmVzdGFydCgpKX1maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKGM9PmMuZmluaXNoKCkpfWRlc3Ryb3koKXt0aGlzLl9vbkRlc3Ryb3koKX1fb25EZXN0cm95KCl7dGhpcy5fZGVz''@;'; put 'put ''dHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX29uRmluaXNoKCksdGhpcy5wbGF5ZXJzLmZvckVhY2goYz0+Yy5kZXN0cm95KCkpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMucGxheWVycy5mb3JF''@;'; put 'put ''YWNoKGM9PmMucmVzZXQoKSksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITF9c2V0UG9zaXRpb24oYyl7Y29uc3QgYT1jKnRoaXMudG90YWxUaW1lO3RoaXMucGxheWVycy5mb3JFYWNoKGY9Pntjb25zdCBkPWYudG90YWxUaW1lP01hdGgubWlu''@;'; put 'put ''KDEsYS9mLnRvdGFsVGltZSk6MTtmLnNldFBvc2l0aW9uKGQpfSl9Z2V0UG9zaXRpb24oKXtjb25zdCBjPXRoaXMucGxheWVycy5yZWR1Y2UoKGEsZik9Pm51bGw9PT1hfHxmLnRvdGFsVGltZT5hLnRvdGFsVGltZT9mOmEsbnVsbCk7cmV0dXJuIG51bGwhPWM/Yy5nZXRQb3NpdGlvbigpOjB9''@;'; put 'put ''YmVmb3JlRGVzdHJveSgpe3RoaXMucGxheWVycy5mb3JFYWNoKGM9PntjLmJlZm9yZURlc3Ryb3kmJmMuYmVmb3JlRGVzdHJveSgpfSl9dHJpZ2dlckNhbGxiYWNrKGMpe2NvbnN0IGE9InN0YXJ0Ij09Yz90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZuczthLmZvckVhY2goZj0+Zigp''@;'; put 'put ''KSxhLmxlbmd0aD0wfX1sZXQgYWFlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLl9yZW5kZXJlcj1hLHRoaXMuX2VsZW1lbnRSZWY9Zix0aGlzLm9uQ2hhbmdlPWQ9Pnt9LHRoaXMub25Ub3VjaGVkPSgpPT57fX1zZXRQcm9wZXJ0eShhLGYpe3RoaXMuX3JlbmRlcmVyLnNl''@;'; put 'put ''dFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxhLGYpfXJlZ2lzdGVyT25Ub3VjaGVkKGEpe3RoaXMub25Ub3VjaGVkPWF9cmVnaXN0ZXJPbkNoYW5nZShhKXt0aGlzLm9uQ2hhbmdlPWF9c2V0RGlzYWJsZWRTdGF0ZShhKXt0aGlzLnNldFByb3BlcnR5KCJkaXNhYmxl''@;'; put 'put ''ZCIsYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGpvKSxydChWaSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsfSksbH0pKCksUGc9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGFhZXt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0''@;'; put 'put ''IGM7cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLGZlYXR1cmVzOltyb119KSxsfSkoKTtjb25zdCBUaD1uZXcgTWkoIk5nVmFsdWVBY2Nlc3NvciIpLHdUZT17cHJvdmlkZTpUaCx1c2VFeGlzdGluZzpQYSgo''@;'; put 'put ''KT0+UjApLG11bHRpOiEwfTtsZXQgUjA9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFBne3dyaXRlVmFsdWUoYSl7dGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBjO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4oY3x8KGM9eGwo''@;'; put 'put ''bCkpKShmfHxsKX19KCksbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNr''@;'; put 'put ''Ym94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJjaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uQ2hhbmdlKGgudGFyZ2V0LmNoZWNrZWQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25Ub3VjaGVkKCl9KX0sZmVhdHVyZXM6''@;'; put 'put ''W3JpKFt3VGVdKSxyb119KSxsfSkoKTtjb25zdCBDVGU9e3Byb3ZpZGU6VGgsdXNlRXhpc3Rpbmc6UGEoKCk9PmlzKSxtdWx0aTohMH0sTVRlPW5ldyBNaSgiQ29tcG9zaXRpb25FdmVudE1vZGUiKTtsZXQgaXM9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGFhZXtjb25zdHJ1Y3RvcihhLGYsZCl7''@;'; put 'put ''c3VwZXIoYSxmKSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9ZCx0aGlzLl9jb21wb3Npbmc9ITEsbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSFmdW5jdGlvbiBTVGUoKXtjb25zdCBsPVFwKCk/UXAoKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4v''@;'; put 'put ''YW5kcm9pZCAoXGQrKS8udGVzdChsLnRvTG93ZXJDYXNlKCkpfSgpKX13cml0ZVZhbHVlKGEpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixhPz8iIil9X2hhbmRsZUlucHV0KGEpeyghdGhpcy5fY29tcG9zaXRpb25Nb2RlfHx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJiF0aGlzLl9jb21wb3Np''@;'; put 'put ''bmcpJiZ0aGlzLm9uQ2hhbmdlKGEpfV9jb21wb3NpdGlvblN0YXJ0KCl7dGhpcy5fY29tcG9zaW5nPSEwfV9jb21wb3NpdGlvbkVuZChhKXt0aGlzLl9jb21wb3Npbmc9ITEsdGhpcy5fY29tcG9zaXRpb25Nb2RlJiZ0aGlzLm9uQ2hhbmdlKGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChqbykscnQoVmkpLHJ0KE1UZSw4KSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImlucHV0IiwiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwiZm9ybUNvbnRyb2xOYW1lIiwi''@;'; put 'put ''Il0sWyJpbnB1dCIsImZvcm1Db250cm9sIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwibmdNb2RlbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsIm5nTW9kZWwiLCIiXSxbIiIsIm5nRGVmYXVsdENv''@;'; put 'put ''bnRyb2wiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiaW5wdXQiLGZ1bmN0aW9uKGgpe3JldHVybiBmLl9oYW5kbGVJbnB1dChoLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vblRvdWNoZWQoKX0pKCJjb21wb3NpdGlvbnN0YXJ0''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBmLl9jb21wb3NpdGlvblN0YXJ0KCl9KSgiY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKGgpe3JldHVybiBmLl9jb21wb3NpdGlvbkVuZChoLnRhcmdldC52YWx1ZSl9KX0sZmVhdHVyZXM6W3JpKFtDVGVdKSxyb119KSxsfSkoKTtjb25zdCBmYz1uZXcgTWko''@;'; put 'put ''Ik5nVmFsaWRhdG9ycyIpLGQ0PW5ldyBNaSgiTmdBc3luY1ZhbGlkYXRvcnMiKTtmdW5jdGlvbiBnYWUobCl7cmV0dXJuIG51bGwhPWx9ZnVuY3Rpb24gdmFlKGwpe3JldHVybiBwZyhsKT9ubChsKTpsfWZ1bmN0aW9uIHlhZShsKXtsZXQgYz17fTtyZXR1cm4gbC5mb3JFYWNoKGE9PntjPW51''@;'; put 'put ''bGwhPWE/ey4uLmMsLi4uYX06Y30pLDA9PT1PYmplY3Qua2V5cyhjKS5sZW5ndGg/bnVsbDpjfWZ1bmN0aW9uIGJhZShsLGMpe3JldHVybiBjLm1hcChhPT5hKGwpKX1mdW5jdGlvbiBfYWUobCl7cmV0dXJuIGwubWFwKGM9PmZ1bmN0aW9uIEVUZShsKXtyZXR1cm4hbC52YWxpZGF0ZX0oYyk/''@;'; put 'put ''YzphPT5jLnZhbGlkYXRlKGEpKX1mdW5jdGlvbiBSeihsKXtyZXR1cm4gbnVsbCE9bD9mdW5jdGlvbiB3YWUobCl7aWYoIWwpcmV0dXJuIG51bGw7Y29uc3QgYz1sLmZpbHRlcihnYWUpO3JldHVybiAwPT1jLmxlbmd0aD9udWxsOmZ1bmN0aW9uKGEpe3JldHVybiB5YWUoYmFlKGEsYykpfX0o''@;'; put 'put ''X2FlKGwpKTpudWxsfWZ1bmN0aW9uIEx6KGwpe3JldHVybiBudWxsIT1sP2Z1bmN0aW9uIENhZShsKXtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPWwuZmlsdGVyKGdhZSk7cmV0dXJuIDA9PWMubGVuZ3RoP251bGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uIF9UZSguLi5sKXtjb25z''@;'; put 'put ''dCBjPUJ1KGwpLHthcmdzOmEsa2V5czpmfT1RbmUobCksZD1uZXcgQmUoaD0+e2NvbnN0e2xlbmd0aDptfT1hO2lmKCFtKXJldHVybiB2b2lkIGguY29tcGxldGUoKTtjb25zdCBfPW5ldyBBcnJheShtKTtsZXQgTz1tLFg9bTtmb3IobGV0IGFlPTA7YWU8bTthZSsrKXtsZXQgcGU9ITE7SnIo''@;'; put 'put ''YVthZV0pLnN1YnNjcmliZShxZShoLGJlPT57cGV8fChwZT0hMCxYLS0pLF9bYWVdPWJlfSwoKT0+Ty0tLHZvaWQgMCwoKT0+eyghT3x8IXBlKSYmKFh8fGgubmV4dChmP2VyZShmLF8pOl8pLGguY29tcGxldGUoKSl9KSl9fSk7cmV0dXJuIGM/ZC5waXBlKHhqKGMpKTpkfShiYWUoYSxjKS5t''@;'; put 'put ''YXAodmFlKSkucGlwZShFZSh5YWUpKX19KF9hZShsKSk6bnVsbH1mdW5jdGlvbiBTYWUobCxjKXtyZXR1cm4gbnVsbD09PWw/W2NdOkFycmF5LmlzQXJyYXkobCk/Wy4uLmwsY106W2wsY119ZnVuY3Rpb24gUHoobCl7cmV0dXJuIGw/QXJyYXkuaXNBcnJheShsKT9sOltsXTpbXX1mdW5jdGlv''@;'; put 'put ''biBPRChsLGMpe3JldHVybiBBcnJheS5pc0FycmF5KGwpP2wuaW5jbHVkZXMoYyk6bD09PWN9ZnVuY3Rpb24gRWFlKGwsYyl7Y29uc3QgYT1QeihjKTtyZXR1cm4gUHoobCkuZm9yRWFjaChkPT57T0QoYSxkKXx8YS5wdXNoKGQpfSksYX1mdW5jdGlvbiB4YWUobCxjKXtyZXR1cm4gUHooYyku''@;'; put 'put ''ZmlsdGVyKGE9PiFPRChsLGEpKX1jbGFzcyBBYWV7Y29uc3RydWN0b3IoKXt0aGlzLl9yYXdWYWxpZGF0b3JzPVtdLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1bXSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRy''@;'; put 'put ''b2wudmFsdWU6bnVsbH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuY29udHJvbD90''@;'; put 'put ''aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9Z2V0IGVycm9ycygpe3JldHVy''@;'; put 'put ''biB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfWdldCBwcmlzdGluZSgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9Z2V0IGRpcnR5KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH1nZXQgdG91''@;'; put 'put ''Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH1nZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzOm51bGx9Z2V0IHVudG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91''@;'; put 'put ''Y2hlZDpudWxsfWdldCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlczpudWxsfWdldCB2YWx1ZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH1nZXQgcGF0aCgpe3Jl''@;'; put 'put ''dHVybiBudWxsfV9zZXRWYWxpZGF0b3JzKGMpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9Y3x8W10sdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1Seih0aGlzLl9yYXdWYWxpZGF0b3JzKX1fc2V0QXN5bmNWYWxpZGF0b3JzKGMpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1jfHxbXSx0aGlzLl9j''@;'; put 'put ''b21wb3NlZEFzeW5jVmFsaWRhdG9yRm49THoodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgdmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm58fG51bGx9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JG''@;'; put 'put ''bnx8bnVsbH1fcmVnaXN0ZXJPbkRlc3Ryb3koYyl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLnB1c2goYyl9X2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpe3RoaXMuX29uRGVzdHJveUNhbGxiYWNrcy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzPVtdfXJlc2V0''@;'; put 'put ''KGM9dm9pZCAwKXt0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5yZXNldChjKX1oYXNFcnJvcihjLGEpe3JldHVybiEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuaGFzRXJyb3IoYyxhKX1nZXRFcnJvcihjLGEpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmdldEVycm9y''@;'; put 'put ''KGMsYSk6bnVsbH19Y2xhc3MgS2MgZXh0ZW5kcyBBYWV7Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gbnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfX1jbGFzcyBxYyBleHRlbmRzIEFhZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcGFyZW50PW51bGwsdGhp''@;'; put 'put ''cy5uYW1lPW51bGwsdGhpcy52YWx1ZUFjY2Vzc29yPW51bGx9fWNsYXNzIFRhZXtjb25zdHJ1Y3RvcihjKXt0aGlzLl9jZD1jfWdldCBpc1RvdWNoZWQoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy50b3VjaGVkfWdldCBpc1VudG91Y2hlZCgpe3JldHVybiEhdGhpcy5fY2Q/LmNvbnRy''@;'; put 'put ''b2w/LnVudG91Y2hlZH1nZXQgaXNQcmlzdGluZSgpe3JldHVybiEhdGhpcy5fY2Q/LmNvbnRyb2w/LnByaXN0aW5lfWdldCBpc0RpcnR5KCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8uZGlydHl9Z2V0IGlzVmFsaWQoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy52YWxpZH1nZXQg''@;'; put 'put ''aXNJbnZhbGlkKCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8uaW52YWxpZH1nZXQgaXNQZW5kaW5nKCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8ucGVuZGluZ31nZXQgaXNTdWJtaXR0ZWQoKXtyZXR1cm4hIXRoaXMuX2NkPy5zdWJtaXR0ZWR9fWxldCBXYT0oKCk9PntjbGFzcyBs''@;'; put 'put ''IGV4dGVuZHMgVGFle2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChxYywyKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdN''@;'; put 'put ''b2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigibmctdW50b3VjaGVkIixmLmlzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsZi5pc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsZi5pc1ByaXN0aW5lKSgi''@;'; put 'put ''bmctZGlydHkiLGYuaXNEaXJ0eSkoIm5nLXZhbGlkIixmLmlzVmFsaWQpKCJuZy1pbnZhbGlkIixmLmlzSW52YWxpZCkoIm5nLXBlbmRpbmciLGYuaXNQZW5kaW5nKX0sZmVhdHVyZXM6W3JvXX0pLGx9KSgpLGg0PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBUYWV7Y29uc3RydWN0b3IoYSl7c3Vw''@;'; put 'put ''ZXIoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KEtjLDEwKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cE5hbWUiLCIiXSxbIiIsImZvcm1BcnJheU5hbWUiLCIiXSxbIiIsIm5nTW9kZWxHcm91''@;'; put 'put ''cCIsIiJdLFsiIiwiZm9ybUdyb3VwIiwiIl0sWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RWYXJzOjE2LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoIm5nLXVudG91Y2hlZCIsZi5pc1VudG91Y2hlZCkoIm5nLXRvdWNoZWQiLGYuaXNU''@;'; put 'put ''b3VjaGVkKSgibmctcHJpc3RpbmUiLGYuaXNQcmlzdGluZSkoIm5nLWRpcnR5IixmLmlzRGlydHkpKCJuZy12YWxpZCIsZi5pc1ZhbGlkKSgibmctaW52YWxpZCIsZi5pc0ludmFsaWQpKCJuZy1wZW5kaW5nIixmLmlzUGVuZGluZykoIm5nLXN1Ym1pdHRlZCIsZi5pc1N1Ym1pdHRlZCl9LGZl''@;'; put 'put ''YXR1cmVzOltyb119KSxsfSkoKTtjb25zdCB6Qz0iVkFMSUQiLElEPSJJTlZBTElEIixXdj0iUEVORElORyIsVUM9IkRJU0FCTEVEIjtmdW5jdGlvbiBOeihsKXtyZXR1cm4oUkQobCk/bC52YWxpZGF0b3JzOmwpfHxudWxsfWZ1bmN0aW9uIFZ6KGwsYyl7cmV0dXJuKFJEKGMpP2MuYXN5bmNW''@;'; put 'put ''YWxpZGF0b3JzOmwpfHxudWxsfWZ1bmN0aW9uIFJEKGwpe3JldHVybiBudWxsIT1sJiYhQXJyYXkuaXNBcnJheShsKSYmIm9iamVjdCI9PXR5cGVvZiBsfWNsYXNzIFJhZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMuX3BlbmRpbmdEaXJ0eT0hMSx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxp''@;'; put 'put ''ZGF0b3I9ITEsdGhpcy5fcGVuZGluZ1RvdWNoZWQ9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT57fSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLnByaXN0aW5lPSEwLHRoaXMudG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdLHRoaXMuX2Fzc2lnblZhbGlkYXRvcnMo''@;'; put 'put ''YyksdGhpcy5fYXNzaWduQXN5bmNWYWxpZGF0b3JzKGEpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbn1zZXQgdmFsaWRhdG9yKGMpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1jfWdldCBhc3luY1ZhbGlkYXRv''@;'; put 'put ''cigpe3JldHVybiB0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm59c2V0IGFzeW5jVmFsaWRhdG9yKGMpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49Y31nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgdmFsaWQo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5zdGF0dXM9PT16Q31nZXQgaW52YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PUlEfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT1Xdn1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT1VQ31nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlz''@;'; put 'put ''LnN0YXR1cyE9PVVDfWdldCBkaXJ0eSgpe3JldHVybiF0aGlzLnByaXN0aW5lfWdldCB1bnRvdWNoZWQoKXtyZXR1cm4hdGhpcy50b3VjaGVkfWdldCB1cGRhdGVPbigpe3JldHVybiB0aGlzLl91cGRhdGVPbj90aGlzLl91cGRhdGVPbjp0aGlzLnBhcmVudD90aGlzLnBhcmVudC51cGRhdGVP''@;'; put 'put ''bjoiY2hhbmdlIn1zZXRWYWxpZGF0b3JzKGMpe3RoaXMuX2Fzc2lnblZhbGlkYXRvcnMoYyl9c2V0QXN5bmNWYWxpZGF0b3JzKGMpe3RoaXMuX2Fzc2lnbkFzeW5jVmFsaWRhdG9ycyhjKX1hZGRWYWxpZGF0b3JzKGMpe3RoaXMuc2V0VmFsaWRhdG9ycyhFYWUoYyx0aGlzLl9yYXdWYWxpZGF0''@;'; put 'put ''b3JzKSl9YWRkQXN5bmNWYWxpZGF0b3JzKGMpe3RoaXMuc2V0QXN5bmNWYWxpZGF0b3JzKEVhZShjLHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycykpfXJlbW92ZVZhbGlkYXRvcnMoYyl7dGhpcy5zZXRWYWxpZGF0b3JzKHhhZShjLHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1yZW1vdmVBc3luY1Zh''@;'; put 'put ''bGlkYXRvcnMoYyl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoeGFlKGMsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKSl9aGFzVmFsaWRhdG9yKGMpe3JldHVybiBPRCh0aGlzLl9yYXdWYWxpZGF0b3JzLGMpfWhhc0FzeW5jVmFsaWRhdG9yKGMpe3JldHVybiBPRCh0aGlzLl9yYXdBc3luY1Zh''@;'; put 'put ''bGlkYXRvcnMsYyl9Y2xlYXJWYWxpZGF0b3JzKCl7dGhpcy52YWxpZGF0b3I9bnVsbH1jbGVhckFzeW5jVmFsaWRhdG9ycygpe3RoaXMuYXN5bmNWYWxpZGF0b3I9bnVsbH1tYXJrQXNUb3VjaGVkKGM9e30pe3RoaXMudG91Y2hlZD0hMCx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0aGlz''@;'; put 'put ''Ll9wYXJlbnQubWFya0FzVG91Y2hlZChjKX1tYXJrQWxsQXNUb3VjaGVkKCl7dGhpcy5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjohMH0pLHRoaXMuX2ZvckVhY2hDaGlsZChjPT5jLm1hcmtBbGxBc1RvdWNoZWQoKSl9bWFya0FzVW50b3VjaGVkKGM9e30pe3RoaXMudG91Y2hlZD0hMSx0aGlz''@;'; put 'put ''Ll9wZW5kaW5nVG91Y2hlZD0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoYT0+e2EubWFya0FzVW50b3VjaGVkKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKGMpfW1hcmtBc0RpcnR5KGM9e30pe3RoaXMucHJpc3Rp''@;'; put 'put ''bmU9ITEsdGhpcy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5KGMpfW1hcmtBc1ByaXN0aW5lKGM9e30pe3RoaXMucHJpc3RpbmU9ITAsdGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2ZvckVhY2hDaGlsZChhPT57YS5tYXJrQXNQcmlzdGluZSh7b25s''@;'; put 'put ''eVNlbGY6ITB9KX0pLHRoaXMuX3BhcmVudCYmIWMub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoYyl9bWFya0FzUGVuZGluZyhjPXt9KXt0aGlzLnN0YXR1cz1XdiwhMSE9PWMuZW1pdEV2ZW50JiZ0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cyksdGhp''@;'; put 'put ''cy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc1BlbmRpbmcoYyl9ZGlzYWJsZShjPXt9KXtjb25zdCBhPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KGMub25seVNlbGYpO3RoaXMuc3RhdHVzPVVDLHRoaXMuZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxkKGY9''@;'; put 'put ''PntmLmRpc2FibGUoey4uLmMsb25seVNlbGY6ITB9KX0pLHRoaXMuX3VwZGF0ZVZhbHVlKCksITEhPT1jLmVtaXRFdmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl91cGRhdGVBbmNlc3Rv''@;'; put 'put ''cnMoey4uLmMsc2tpcFByaXN0aW5lQ2hlY2s6YX0pLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChmPT5mKCEwKSl9ZW5hYmxlKGM9e30pe2NvbnN0IGE9dGhpcy5fcGFyZW50TWFya2VkRGlydHkoYy5vbmx5U2VsZik7dGhpcy5zdGF0dXM9ekMsdGhpcy5fZm9yRWFjaENoaWxkKGY9''@;'; put 'put ''PntmLmVuYWJsZSh7Li4uYyxvbmx5U2VsZjohMH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6Yy5lbWl0RXZlbnR9KSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoey4uLmMsc2tpcFByaXN0aW5lQ2hlY2s6YX0pLHRoaXMuX29uRGlzYWJsZWRD''@;'; put 'put ''aGFuZ2UuZm9yRWFjaChmPT5mKCExKSl9X3VwZGF0ZUFuY2VzdG9ycyhjKXt0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiYodGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoYyksYy5za2lwUHJpc3RpbmVDaGVja3x8dGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSgpLHRo''@;'; put 'put ''aXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCgpKX1zZXRQYXJlbnQoYyl7dGhpcy5fcGFyZW50PWN9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX11cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGM9e30pe3RoaXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVWYWx1ZSgpLHRo''@;'; put 'put ''aXMuZW5hYmxlZCYmKHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCksdGhpcy5lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9yKCksdGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksKHRoaXMuc3RhdHVzPT09ekN8fHRoaXMuc3RhdHVzPT09V3YpJiZ0aGlzLl9ydW5B''@;'; put 'put ''c3luY1ZhbGlkYXRvcihjLmVtaXRFdmVudCkpLCExIT09Yy5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0''@;'; put 'put ''ZVZhbHVlQW5kVmFsaWRpdHkoYyl9X3VwZGF0ZVRyZWVWYWxpZGl0eShjPXtlbWl0RXZlbnQ6ITB9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoYT0+YS5fdXBkYXRlVHJlZVZhbGlkaXR5KGMpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDpjLmVtaXRF''@;'; put 'put ''dmVudH0pfV9zZXRJbml0aWFsU3RhdHVzKCl7dGhpcy5zdGF0dXM9dGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP1VDOnpDfV9ydW5WYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy52YWxpZGF0b3I/dGhpcy52YWxpZGF0b3IodGhpcyk6bnVsbH1fcnVuQXN5bmNWYWxpZGF0b3IoYyl7aWYodGhp''@;'; put 'put ''cy5hc3luY1ZhbGlkYXRvcil7dGhpcy5zdGF0dXM9V3YsdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSEwO2NvbnN0IGE9dmFlKHRoaXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1hLnN1YnNjcmliZShmPT57dGhpcy5f''@;'; put 'put ''aGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExLHRoaXMuc2V0RXJyb3JzKGYse2VtaXRFdmVudDpjfSl9KX19X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9u''@;'; put 'put ''LnVuc3Vic2NyaWJlKCksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExKX1zZXRFcnJvcnMoYyxhPXt9KXt0aGlzLmVycm9ycz1jLHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09YS5lbWl0RXZlbnQpfWdldChjKXtsZXQgYT1jO3JldHVybiBudWxsPT1hfHwoQXJy''@;'; put 'put ''YXkuaXNBcnJheShhKXx8KGE9YS5zcGxpdCgiLiIpKSwwPT09YS5sZW5ndGgpP251bGw6YS5yZWR1Y2UoKGYsZCk9PmYmJmYuX2ZpbmQoZCksdGhpcyl9Z2V0RXJyb3IoYyxhKXtjb25zdCBmPWE/dGhpcy5nZXQoYSk6dGhpcztyZXR1cm4gZiYmZi5lcnJvcnM/Zi5lcnJvcnNbY106bnVsbH1o''@;'; put 'put ''YXNFcnJvcihjLGEpe3JldHVybiEhdGhpcy5nZXRFcnJvcihjLGEpfWdldCByb290KCl7bGV0IGM9dGhpcztmb3IoO2MuX3BhcmVudDspYz1jLl9wYXJlbnQ7cmV0dXJuIGN9X3VwZGF0ZUNvbnRyb2xzRXJyb3JzKGMpe3RoaXMuc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLGMmJnRo''@;'; put 'put ''aXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnMoYyl9X2luaXRPYnNlcnZhYmxlcygpe3RoaXMudmFsdWVDaGFuZ2VzPW5ldyB4cix0aGlzLnN0YXR1c0NoYW5nZXM9bmV3IHhyfV9jYWxjdWxh''@;'; put 'put ''dGVTdGF0dXMoKXtyZXR1cm4gdGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP1VDOnRoaXMuZXJyb3JzP0lEOnRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcnx8dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKFd2KT9Xdjp0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoSUQp''@;'; put 'put ''P0lEOnpDfV9hbnlDb250cm9sc0hhdmVTdGF0dXMoYyl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGE9PmEuc3RhdHVzPT09Yyl9X2FueUNvbnRyb2xzRGlydHkoKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoYz0+Yy5kaXJ0eSl9X2FueUNvbnRyb2xzVG91Y2hlZCgpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9hbnlDb250cm9scyhjPT5jLnRvdWNoZWQpfV91cGRhdGVQcmlzdGluZShjPXt9KXt0aGlzLnByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCksdGhpcy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZShjKX1fdXBkYXRlVG91Y2hlZChj''@;'; put 'put ''PXt9KXt0aGlzLnRvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fcGFyZW50JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKGMpfV9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZShjKXt0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9Y31fc2V0''@;'; put 'put ''VXBkYXRlU3RyYXRlZ3koYyl7UkQoYykmJm51bGwhPWMudXBkYXRlT24mJih0aGlzLl91cGRhdGVPbj1jLnVwZGF0ZU9uKX1fcGFyZW50TWFya2VkRGlydHkoYyl7cmV0dXJuIWMmJiEoIXRoaXMuX3BhcmVudHx8IXRoaXMuX3BhcmVudC5kaXJ0eSkmJiF0aGlzLl9wYXJlbnQuX2FueUNvbnRy''@;'; put 'put ''b2xzRGlydHkoKX1fZmluZChjKXtyZXR1cm4gbnVsbH1fYXNzaWduVmFsaWRhdG9ycyhjKXt0aGlzLl9yYXdWYWxpZGF0b3JzPUFycmF5LmlzQXJyYXkoYyk/Yy5zbGljZSgpOmMsdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj1mdW5jdGlvbiBPVGUobCl7cmV0dXJuIEFycmF5LmlzQXJyYXko''@;'; put 'put ''bCk/UnoobCk6bHx8bnVsbH0odGhpcy5fcmF3VmFsaWRhdG9ycyl9X2Fzc2lnbkFzeW5jVmFsaWRhdG9ycyhjKXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9QXJyYXkuaXNBcnJheShjKT9jLnNsaWNlKCk6Yyx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49ZnVuY3Rpb24gRFRlKGwp''@;'; put 'put ''e3JldHVybiBBcnJheS5pc0FycmF5KGwpP0x6KGwpOmx8fG51bGx9KHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9fWNsYXNzIExEIGV4dGVuZHMgUmFle2NvbnN0cnVjdG9yKGMsYSxmKXtzdXBlcihOeihhKSxWeihmLGEpKSx0aGlzLmNvbnRyb2xzPWMsdGhpcy5faW5pdE9ic2VydmFibGVz''@;'; put 'put ''KCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koYSksdGhpcy5fc2V0VXBDb250cm9scygpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pfXJlZ2lzdGVyQ29udHJvbChjLGEpe3JldHVybiB0aGlzLmNvbnRy''@;'; put 'put ''b2xzW2NdP3RoaXMuY29udHJvbHNbY106KHRoaXMuY29udHJvbHNbY109YSxhLnNldFBhcmVudCh0aGlzKSxhLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGEpfWFkZENvbnRyb2woYyxhLGY9e30pe3RoaXMucmVnaXN0ZXJDb250cm9sKGMs''@;'; put 'put ''YSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6Zi5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1yZW1vdmVDb250cm9sKGMsYT17fSl7dGhpcy5jb250cm9sc1tjXSYmdGhpcy5jb250cm9sc1tjXS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFu''@;'; put 'put ''Z2UoKCk9Pnt9KSxkZWxldGUgdGhpcy5jb250cm9sc1tjXSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDphLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXNldENvbnRyb2woYyxhLGY9e30pe3RoaXMuY29udHJvbHNbY10mJnRoaXMuY29udHJv''@;'; put 'put ''bHNbY10uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksZGVsZXRlIHRoaXMuY29udHJvbHNbY10sYSYmdGhpcy5yZWdpc3RlckNvbnRyb2woYyxhKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpmLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlv''@;'; put 'put ''bkNoYW5nZSgpfWNvbnRhaW5zKGMpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGMpJiZ0aGlzLmNvbnRyb2xzW2NdLmVuYWJsZWR9c2V0VmFsdWUoYyxhPXt9KXsoZnVuY3Rpb24gSWFlKGwsYyxhKXtsLl9mb3JFYWNoQ2hpbGQoKGYsZCk9PntpZih2b2lkIDA9PT1hW2Rd''@;'; put 'put ''KXRocm93IG5ldyBJcigxMDAyLCIiKX0pfSkodGhpcywwLGMpLE9iamVjdC5rZXlzKGMpLmZvckVhY2goZj0+eyhmdW5jdGlvbiBEYWUobCxjLGEpe2NvbnN0IGY9bC5jb250cm9scztpZighKGM/T2JqZWN0LmtleXMoZik6ZikubGVuZ3RoKXRocm93IG5ldyBJcigxZTMsIiIpO2lmKCFmW2Fd''@;'; put 'put ''KXRocm93IG5ldyBJcigxMDAxLCIiKX0pKHRoaXMsITAsZiksdGhpcy5jb250cm9sc1tmXS5zZXRWYWx1ZShjW2ZdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6YS5lbWl0RXZlbnR9KX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShhKX1wYXRjaFZhbHVlKGMsYT17fSl7bnVsbCE9YyYm''@;'; put 'put ''KE9iamVjdC5rZXlzKGMpLmZvckVhY2goZj0+e2NvbnN0IGQ9dGhpcy5jb250cm9sc1tmXTtkJiZkLnBhdGNoVmFsdWUoY1tmXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmEuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoYSkpfXJlc2V0KGM9e30sYT17fSl7dGhp''@;'; put 'put ''cy5fZm9yRWFjaENoaWxkKChmLGQpPT57Zi5yZXNldChjW2RdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6YS5lbWl0RXZlbnR9KX0pLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGEpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoYSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGEpfWdldFJhd1ZhbHVl''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LChjLGEsZik9PihjW2ZdPWEuZ2V0UmF3VmFsdWUoKSxjKSl9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtsZXQgYz10aGlzLl9yZWR1Y2VDaGlsZHJlbighMSwoYSxmKT0+ISFmLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fGEpO3JldHVy''@;'; put 'put ''biBjJiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksY31fZm9yRWFjaENoaWxkKGMpe09iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmZvckVhY2goYT0+e2NvbnN0IGY9dGhpcy5jb250cm9sc1thXTtmJiZjKGYsYSl9KX1fc2V0VXBDb250cm9scygpe3RoaXMu''@;'; put 'put ''X2ZvckVhY2hDaGlsZChjPT57Yy5zZXRQYXJlbnQodGhpcyksYy5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKX0pfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHMoYyl7Zm9yKGNvbnN0''@;'; put 'put ''W2EsZl1vZiBPYmplY3QuZW50cmllcyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRhaW5zKGEpJiZjKGYpKXJldHVybiEwO3JldHVybiExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoYSxmLGQpPT4oKGYuZW5hYmxlZHx8dGhpcy5kaXNhYmxlZCkm''@;'; put 'put ''JihhW2RdPWYudmFsdWUpLGEpKX1fcmVkdWNlQ2hpbGRyZW4oYyxhKXtsZXQgZj1jO3JldHVybiB0aGlzLl9mb3JFYWNoQ2hpbGQoKGQsaCk9PntmPWEoZixkLGgpfSksZn1fYWxsQ29udHJvbHNEaXNhYmxlZCgpe2Zvcihjb25zdCBjIG9mIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpKWlm''@;'; put 'put ''KHRoaXMuY29udHJvbHNbY10uZW5hYmxlZClyZXR1cm4hMTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9X2ZpbmQoYyl7cmV0dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkoYyk/dGhpcy5jb250cm9sc1tjXTpudWxsfX1j''@;'; put 'put ''b25zdCBGZz1uZXcgTWkoIkNhbGxTZXREaXNhYmxlZFN0YXRlIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+WkN9KSxaQz0iYWx3YXlzIjtmdW5jdGlvbiBZQyhsLGMsYT1aQyl7QnoobCxjKSxjLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShsLnZhbHVlKSwobC5kaXNhYmxlZHx8''@;'; put 'put ''ImFsd2F5cyI9PT1hKSYmYy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGU/LihsLmRpc2FibGVkKSxmdW5jdGlvbiBMVGUobCxjKXtjLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShhPT57bC5fcGVuZGluZ1ZhbHVlPWEsbC5fcGVuZGluZ0NoYW5nZT0hMCxsLl9wZW5kaW5n''@;'; put 'put ''RGlydHk9ITAsImNoYW5nZSI9PT1sLnVwZGF0ZU9uJiZMYWUobCxjKX0pfShsLGMpLGZ1bmN0aW9uIEZUZShsLGMpe2NvbnN0IGE9KGYsZCk9PntjLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShmKSxkJiZjLnZpZXdUb01vZGVsVXBkYXRlKGYpfTtsLnJlZ2lzdGVyT25DaGFuZ2UoYSksYy5f''@;'; put 'put ''cmVnaXN0ZXJPbkRlc3Ryb3koKCk9PntsLl91bnJlZ2lzdGVyT25DaGFuZ2UoYSl9KX0obCxjKSxmdW5jdGlvbiBQVGUobCxjKXtjLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCk9PntsLl9wZW5kaW5nVG91Y2hlZD0hMCwiYmx1ciI9PT1sLnVwZGF0ZU9uJiZsLl9wZW5kaW5n''@;'; put 'put ''Q2hhbmdlJiZMYWUobCxjKSwic3VibWl0IiE9PWwudXBkYXRlT24mJmwubWFya0FzVG91Y2hlZCgpfSl9KGwsYyksZnVuY3Rpb24gUlRlKGwsYyl7aWYoYy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUpe2NvbnN0IGE9Zj0+e2MudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRl''@;'; put 'put ''KGYpfTtsLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShhKSxjLl9yZWdpc3Rlck9uRGVzdHJveSgoKT0+e2wuX3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGEpfSl9fShsLGMpfWZ1bmN0aW9uIEhEKGwsYyl7bC5mb3JFYWNoKGE9PnthLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJmEu''@;'; put 'put ''cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShjKX0pfWZ1bmN0aW9uIEJ6KGwsYyl7Y29uc3QgYT1mdW5jdGlvbiBNYWUobCl7cmV0dXJuIGwuX3Jhd1ZhbGlkYXRvcnN9KGwpO251bGwhPT1jLnZhbGlkYXRvcj9sLnNldFZhbGlkYXRvcnMoU2FlKGEsYy52YWxpZGF0b3IpKToiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgYSYmbC5zZXRWYWxpZGF0b3JzKFthXSk7Y29uc3QgZj1mdW5jdGlvbiBrYWUobCl7cmV0dXJuIGwuX3Jhd0FzeW5jVmFsaWRhdG9yc30obCk7bnVsbCE9PWMuYXN5bmNWYWxpZGF0b3I/bC5zZXRBc3luY1ZhbGlkYXRvcnMoU2FlKGYsYy5hc3luY1ZhbGlkYXRvcikpOiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBmJiZsLnNldEFzeW5jVmFsaWRhdG9ycyhbZl0pO2NvbnN0IGQ9KCk9PmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO0hEKGMuX3Jhd1ZhbGlkYXRvcnMsZCksSEQoYy5fcmF3QXN5bmNWYWxpZGF0b3JzLGQpfWZ1bmN0aW9uIExhZShsLGMpe2wuX3BlbmRpbmdEaXJ0''@;'; put 'put ''eSYmbC5tYXJrQXNEaXJ0eSgpLGwuc2V0VmFsdWUobC5fcGVuZGluZ1ZhbHVlLHtlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6ITF9KSxjLnZpZXdUb01vZGVsVXBkYXRlKGwuX3BlbmRpbmdWYWx1ZSksbC5fcGVuZGluZ0NoYW5nZT0hMX1jb25zdCBqVGU9e3Byb3ZpZGU6S2MsdXNlRXhpc3Rpbmc6''@;'; put 'put ''UGEoKCk9PkNkKX0sV0M9KCgpPT5Qcm9taXNlLnJlc29sdmUoKSkoKTtsZXQgQ2Q9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEtje2NvbnN0cnVjdG9yKGEsZixkKXtzdXBlcigpLHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGU9ZCx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLl9kaXJlY3RpdmVzPW5l''@;'; put 'put ''dyBTZXQsdGhpcy5uZ1N1Ym1pdD1uZXcgeHIsdGhpcy5mb3JtPW5ldyBMRCh7fSxSeihhKSxMeihmKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9y''@;'; put 'put ''bX1nZXQgcGF0aCgpe3JldHVybltdfWdldCBjb250cm9scygpe3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9YWRkQ29udHJvbChhKXtXQy50aGVuKCgpPT57Y29uc3QgZj10aGlzLl9maW5kQ29udGFpbmVyKGEucGF0aCk7YS5jb250cm9sPWYucmVnaXN0ZXJDb250cm9sKGEubmFtZSxhLmNv''@;'; put 'put ''bnRyb2wpLFlDKGEuY29udHJvbCxhLHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGUpLGEuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLmFkZChhKX0pfWdldENvbnRyb2woYSl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoYS5wYXRo''@;'; put 'put ''KX1yZW1vdmVDb250cm9sKGEpe1dDLnRoZW4oKCk9Pntjb25zdCBmPXRoaXMuX2ZpbmRDb250YWluZXIoYS5wYXRoKTtmJiZmLnJlbW92ZUNvbnRyb2woYS5uYW1lKSx0aGlzLl9kaXJlY3RpdmVzLmRlbGV0ZShhKX0pfWFkZEZvcm1Hcm91cChhKXtXQy50aGVuKCgpPT57Y29uc3QgZj10aGlz''@;'; put 'put ''Ll9maW5kQ29udGFpbmVyKGEucGF0aCksZD1uZXcgTEQoe30pOyhmdW5jdGlvbiBQYWUobCxjKXtCeihsLGMpfSkoZCxhKSxmLnJlZ2lzdGVyQ29udHJvbChhLm5hbWUsZCksZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pfXJlbW92ZUZvcm1Hcm91cChhKXtXQy50''@;'; put 'put ''aGVuKCgpPT57Y29uc3QgZj10aGlzLl9maW5kQ29udGFpbmVyKGEucGF0aCk7ZiYmZi5yZW1vdmVDb250cm9sKGEubmFtZSl9KX1nZXRGb3JtR3JvdXAoYSl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoYS5wYXRoKX11cGRhdGVNb2RlbChhLGYpe1dDLnRoZW4oKCk9Pnt0aGlzLmZvcm0uZ2V0KGEu''@;'; put 'put ''cGF0aCkuc2V0VmFsdWUoZil9KX1zZXRWYWx1ZShhKXt0aGlzLmNvbnRyb2wuc2V0VmFsdWUoYSl9b25TdWJtaXQoYSl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLGZ1bmN0aW9uIEZhZShsLGMpe2wuX3N5bmNQZW5kaW5nQ29udHJvbHMoKSxjLmZvckVhY2goYT0+e2NvbnN0IGY9YS5jb250''@;'; put 'put ''cm9sOyJzdWJtaXQiPT09Zi51cGRhdGVPbiYmZi5fcGVuZGluZ0NoYW5nZSYmKGEudmlld1RvTW9kZWxVcGRhdGUoZi5fcGVuZGluZ1ZhbHVlKSxmLl9wZW5kaW5nQ2hhbmdlPSExKX0pfSh0aGlzLmZvcm0sdGhpcy5fZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KGEpLCJkaWFsb2ci''@;'; put 'put ''PT09YT8udGFyZ2V0Py5tZXRob2R9b25SZXNldCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKGE9dm9pZCAwKXt0aGlzLmZvcm0ucmVzZXQoYSksdGhpcy5zdWJtaXR0ZWQ9ITF9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZudWxsIT10aGlzLm9wdGlvbnMudXBkYXRl''@;'; put 'put ''T24mJih0aGlzLmZvcm0uX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2ZpbmRDb250YWluZXIoYSl7cmV0dXJuIGEucG9wKCksYS5sZW5ndGg/dGhpcy5mb3JtLmdldChhKTp0aGlzLmZvcm19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwp''@;'; put 'put ''KHJ0KGZjLDEwKSxydChkNCwxMCkscnQoRmcsOCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywiZm9ybUdyb3VwIiwiIl0sWyJuZy1mb3JtIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7''@;'; put 'put ''MSZhJiZFdCgic3VibWl0IixmdW5jdGlvbihoKXtyZXR1cm4gZi5vblN1Ym1pdChoKX0pKCJyZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vblJlc2V0KCl9KX0saW5wdXRzOntvcHRpb25zOlsibmdGb3JtT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7bmdTdWJtaXQ6Im5nU3VibWl0''@;'; put 'put ''In0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbcmkoW2pUZV0pLHJvXX0pLGx9KSgpO2Z1bmN0aW9uIEhhZShsLGMpe2NvbnN0IGE9bC5pbmRleE9mKGMpO2E+LTEmJmwuc3BsaWNlKGEsMSl9ZnVuY3Rpb24gTmFlKGwpe3JldHVybiJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9PWwm''@;'; put 'put ''JjI9PT1PYmplY3Qua2V5cyhsKS5sZW5ndGgmJiJ2YWx1ZSJpbiBsJiYiZGlzYWJsZWQiaW4gbH1jb25zdCBaej1jbGFzcyBleHRlbmRzIFJhZXtjb25zdHJ1Y3RvcihjPW51bGwsYSxmKXtzdXBlcihOeihhKSxWeihmLGEpKSx0aGlzLmRlZmF1bHRWYWx1ZT1udWxsLHRoaXMuX29uQ2hhbmdl''@;'; put 'put ''PVtdLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITEsdGhpcy5fYXBwbHlGb3JtU3RhdGUoYyksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koYSksdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5j''@;'; put 'put ''VmFsaWRhdG9yfSksUkQoYSkmJihhLm5vbk51bGxhYmxlfHxhLmluaXRpYWxWYWx1ZUlzRGVmYXVsdCkmJih0aGlzLmRlZmF1bHRWYWx1ZT1OYWUoYyk/Yy52YWx1ZTpjKX1zZXRWYWx1ZShjLGE9e30pe3RoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWMsdGhpcy5fb25DaGFuZ2UubGVu''@;'; put 'put ''Z3RoJiYhMSE9PWEuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKGY9PmYodGhpcy52YWx1ZSwhMSE9PWEuZW1pdFZpZXdUb01vZGVsQ2hhbmdlKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGEpfXBhdGNoVmFsdWUoYyxhPXt9KXt0aGlzLnNldFZh''@;'; put 'put ''bHVlKGMsYSl9cmVzZXQoYz10aGlzLmRlZmF1bHRWYWx1ZSxhPXt9KXt0aGlzLl9hcHBseUZvcm1TdGF0ZShjKSx0aGlzLm1hcmtBc1ByaXN0aW5lKGEpLHRoaXMubWFya0FzVW50b3VjaGVkKGEpLHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSxhKSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExfV91''@;'; put 'put ''cGRhdGVWYWx1ZSgpe31fYW55Q29udHJvbHMoYyl7cmV0dXJuITF9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH1yZWdpc3Rlck9uQ2hhbmdlKGMpe3RoaXMuX29uQ2hhbmdlLnB1c2goYyl9X3VucmVnaXN0ZXJPbkNoYW5nZShjKXtIYWUodGhpcy5fb25DaGFu''@;'; put 'put ''Z2UsYyl9cmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGMpe3RoaXMuX29uRGlzYWJsZWRDaGFuZ2UucHVzaChjKX1fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoYyl7SGFlKHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UsYyl9X2ZvckVhY2hDaGlsZChjKXt9X3N5bmNQZW5kaW5nQ29udHJvbHMo''@;'; put 'put ''KXtyZXR1cm4hKCJzdWJtaXQiIT09dGhpcy51cGRhdGVPbnx8KHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0aGlzLm1hcmtBc1RvdWNoZWQoKSwhdGhpcy5fcGVuZGluZ0NoYW5nZSl8fCh0aGlzLnNldFZhbHVlKHRoaXMuX3Bl''@;'; put 'put ''bmRpbmdWYWx1ZSx7b25seVNlbGY6ITAsZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksMCkpfV9hcHBseUZvcm1TdGF0ZShjKXtOYWUoYyk/KHRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWMudmFsdWUsYy5kaXNhYmxlZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVu''@;'; put 'put ''dDohMX0pOnRoaXMuZW5hYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9Y319LFpUZT17cHJvdmlkZTpxYyx1c2VFeGlzdGluZzpQYSgoKT0+emEpfSxCYWU9KCgpPT5Qcm9taXNlLnJlc29sdmUoKSkoKTtsZXQgemE9KCgpPT57''@;'; put 'put ''Y2xhc3MgbCBleHRlbmRzIHFje2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfKXtzdXBlcigpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW0sdGhpcy5jYWxsU2V0RGlzYWJsZWRTdGF0ZT1fLHRoaXMuY29udHJvbD1uZXcgWnosdGhpcy5fcmVnaXN0ZXJlZD0hMSx0aGlzLm5hbWU9IiIsdGhpcy51''@;'; put 'put ''cGRhdGU9bmV3IHhyLHRoaXMuX3BhcmVudD1hLHRoaXMuX3NldFZhbGlkYXRvcnMoZiksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKGQpLHRoaXMudmFsdWVBY2Nlc3Nvcj1mdW5jdGlvbiBVeihsLGMpe2lmKCFjKXJldHVybiBudWxsO2xldCBhLGYsZDtyZXR1cm4gQXJyYXkuaXNBcnJheShj''@;'; put 'put ''KSxjLmZvckVhY2goaD0+e2guY29uc3RydWN0b3I9PT1pcz9hPWg6ZnVuY3Rpb24gVlRlKGwpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobC5jb25zdHJ1Y3Rvcik9PT1QZ30oaCk/Zj1oOmQ9aH0pLGR8fGZ8fGF8fG51bGx9KDAsaCl9bmdPbkNoYW5nZXMoYSl7aWYodGhpcy5fY2hl''@;'; put 'put ''Y2tGb3JFcnJvcnMoKSwhdGhpcy5fcmVnaXN0ZXJlZHx8Im5hbWUiaW4gYSl7aWYodGhpcy5fcmVnaXN0ZXJlZCYmKHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuZm9ybURpcmVjdGl2ZSkpe2NvbnN0IGY9YS5uYW1lLnByZXZpb3VzVmFsdWU7dGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRy''@;'; put 'put ''b2woe25hbWU6ZixwYXRoOnRoaXMuX2dldFBhdGgoZil9KX10aGlzLl9zZXRVcENvbnRyb2woKX0iaXNEaXNhYmxlZCJpbiBhJiZ0aGlzLl91cGRhdGVEaXNhYmxlZChhKSxmdW5jdGlvbiB6eihsLGMpe2lmKCFsLmhhc093blByb3BlcnR5KCJtb2RlbCIpKXJldHVybiExO2NvbnN0IGE9bC5t''@;'; put 'put ''b2RlbDtyZXR1cm4hIWEuaXNGaXJzdENoYW5nZSgpfHwhT2JqZWN0LmlzKGMsYS5jdXJyZW50VmFsdWUpfShhLHRoaXMudmlld01vZGVsKSYmKHRoaXMuX3VwZGF0ZVZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGly''@;'; put 'put ''ZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9nZXRQYXRoKHRoaXMubmFtZSl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9dmll''@;'; put 'put ''d1RvTW9kZWxVcGRhdGUoYSl7dGhpcy52aWV3TW9kZWw9YSx0aGlzLnVwZGF0ZS5lbWl0KGEpfV9zZXRVcENvbnRyb2woKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpLHRoaXMuX2lzU3RhbmRhbG9uZSgpP3RoaXMuX3NldFVwU3RhbmRhbG9uZSgpOnRoaXMuZm9ybURpcmVjdGl2ZS5hZGRD''@;'; put 'put ''b250cm9sKHRoaXMpLHRoaXMuX3JlZ2lzdGVyZWQ9ITB9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZudWxsIT10aGlzLm9wdGlvbnMudXBkYXRlT24mJih0aGlzLmNvbnRyb2wuX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2lzU3RhbmRhbG9uZSgpe3JldHVy''@;'; put 'put ''biF0aGlzLl9wYXJlbnR8fCEoIXRoaXMub3B0aW9uc3x8IXRoaXMub3B0aW9ucy5zdGFuZGFsb25lKX1fc2V0VXBTdGFuZGFsb25lKCl7WUModGhpcy5jb250cm9sLHRoaXMsdGhpcy5jYWxsU2V0RGlzYWJsZWRTdGF0ZSksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2Vt''@;'; put 'put ''aXRFdmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7fV9jaGVja05hbWUoKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhp''@;'; put 'put ''cy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUoKX1fdXBkYXRlVmFsdWUoYSl7QmFlLnRoZW4oKCk9Pnt0aGlzLmNvbnRyb2wuc2V0VmFsdWUoYSx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY/Lm1hcmtGb3JDaGVj''@;'; put 'put ''aygpfSl9X3VwZGF0ZURpc2FibGVkKGEpe2NvbnN0IGY9YS5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxkPTAhPT1mJiZfdihmKTtCYWUudGhlbigoKT0+e2QmJiF0aGlzLmNvbnRyb2wuZGlzYWJsZWQ/dGhpcy5jb250cm9sLmRpc2FibGUoKTohZCYmdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0''@;'; put 'put ''aGlzLmNvbnRyb2wuZW5hYmxlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY/Lm1hcmtGb3JDaGVjaygpfSl9X2dldFBhdGgoYSl7cmV0dXJuIHRoaXMuX3BhcmVudD9mdW5jdGlvbiBQRChsLGMpe3JldHVyblsuLi5jLnBhdGgsbF19KGEsdGhpcy5fcGFyZW50KTpbYV19fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KEtjLDkpLHJ0KGZjLDEwKSxydChkNCwxMCkscnQoVGgsMTApLHJ0KFVsLDgpLHJ0KEZnLDgpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmdNb2RlbCIsIiIsMywiZm9ybUNvbnRyb2xOYW1l''@;'; put 'put ''IiwiIiwzLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGlzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdLG9wdGlvbnM6WyJuZ01vZGVsT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7dXBkYXRlOiJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ01vZGVsIl0sZmVhdHVyZXM6W3JpKFtaVGVdKSxybyxibF19KSxsfSkoKSxwND0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxl''@;'; put 'put ''Y3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsIm5nTmF0aXZlVmFsaWRhdGUiLCIiXV0saG9zdEF0dHJzOlsibm92YWxpZGF0ZSIsIiJdfSksbH0pKCk7Y29uc3QgWVRlPXtwcm92aWRlOlRoLHVzZUV4aXN0aW5nOlBhKCgpPT5WRCksbXVsdGk6ITB9O2xldCBWRD0oKCk9PntjbGFz''@;'; put 'put ''cyBsIGV4dGVuZHMgUGd7d3JpdGVWYWx1ZShhKXt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsYT8/IiIpfXJlZ2lzdGVyT25DaGFuZ2UoYSl7dGhpcy5vbkNoYW5nZT1mPT57YSgiIj09Zj9udWxsOnBhcnNlRmxvYXQoZikpfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGM7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250''@;'; put 'put ''cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoImlucHV0IixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkNoYW5nZShoLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''Zi5vblRvdWNoZWQoKX0pfSxmZWF0dXJlczpbcmkoW1lUZV0pLHJvXX0pLGx9KSgpO2NvbnN0IFdUZT17cHJvdmlkZTpUaCx1c2VFeGlzdGluZzpQYSgoKT0+QkQpLG11bHRpOiEwfTtsZXQgamFlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe30pLGx9KSgpLEdUZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fYWNjZXNzb3JzPVtdfWFkZChhLGYpe3RoaXMuX2FjY2Vzc29ycy5wdXNoKFthLGZdKX1yZW1vdmUoYSl7Zm9yKGxl''@;'; put 'put ''dCBmPXRoaXMuX2FjY2Vzc29ycy5sZW5ndGgtMTtmPj0wOy0tZilpZih0aGlzLl9hY2Nlc3NvcnNbZl1bMV09PT1hKXJldHVybiB2b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZiwxKX1zZWxlY3QoYSl7dGhpcy5fYWNjZXNzb3JzLmZvckVhY2goZj0+e3RoaXMuX2lzU2FtZUdyb3VwKGYs''@;'; put 'put ''YSkmJmZbMV0hPT1hJiZmWzFdLmZpcmVVbmNoZWNrKGEudmFsdWUpfSl9X2lzU2FtZUdyb3VwKGEsZil7cmV0dXJuISFhWzBdLmNvbnRyb2wmJmFbMF0uX3BhcmVudD09PWYuX2NvbnRyb2wuX3BhcmVudCYmYVsxXS5uYW1lPT09Zi5uYW1lfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''YSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjpqYWV9KSxsfSkoKSxCRD0oKCk9PntjbGFzcyBsIGV4dGVuZHMgUGd7Y29uc3RydWN0b3IoYSxmLGQsaCl7c3VwZXIoYSxmKSx0aGlzLl9yZWdpc3RyeT1k''@;'; put 'put ''LHRoaXMuX2luamVjdG9yPWgsdGhpcy5zZXREaXNhYmxlZFN0YXRlRmlyZWQ9ITEsdGhpcy5vbkNoYW5nZT0oKT0+e30sdGhpcy5jYWxsU2V0RGlzYWJsZWRTdGF0ZT1IaShGZyx7b3B0aW9uYWw6ITB9KT8/WkN9bmdPbkluaXQoKXt0aGlzLl9jb250cm9sPXRoaXMuX2luamVjdG9yLmdldChx''@;'; put 'put ''YyksdGhpcy5fY2hlY2tOYW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsdGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyl9d3JpdGVWYWx1ZShhKXt0aGlzLl9zdGF0ZT1hPT09dGhpcy52YWx1ZSx0aGlzLnNldFByb3BlcnR5KCJjaGVj''@;'; put 'put ''a2VkIix0aGlzLl9zdGF0ZSl9cmVnaXN0ZXJPbkNoYW5nZShhKXt0aGlzLl9mbj1hLHRoaXMub25DaGFuZ2U9KCk9PnthKHRoaXMudmFsdWUpLHRoaXMuX3JlZ2lzdHJ5LnNlbGVjdCh0aGlzKX19c2V0RGlzYWJsZWRTdGF0ZShhKXsodGhpcy5zZXREaXNhYmxlZFN0YXRlRmlyZWR8fGF8fCJ3''@;'; put 'put ''aGVuRGlzYWJsZWRGb3JMZWdhY3lDb2RlIj09PXRoaXMuY2FsbFNldERpc2FibGVkU3RhdGUpJiZ0aGlzLnNldFByb3BlcnR5KCJkaXNhYmxlZCIsYSksdGhpcy5zZXREaXNhYmxlZFN0YXRlRmlyZWQ9ITB9ZmlyZVVuY2hlY2soYSl7dGhpcy53cml0ZVZhbHVlKGEpfV9jaGVja05hbWUoKXsh''@;'; put 'put ''dGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGpvKSxydChWaSkscnQoR1RlKSxydChBbCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlw''@;'; put 'put ''ZTpsLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihh''@;'; put 'put ''LGYpezEmYSYmRXQoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkNoYW5nZSgpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25Ub3VjaGVkKCl9KX0saW5wdXRzOntuYW1lOiJuYW1lIixmb3JtQ29udHJvbE5hbWU6ImZvcm1Db250cm9sTmFtZSIsdmFsdWU6InZhbHVlIn0s''@;'; put 'put ''ZmVhdHVyZXM6W3JpKFtXVGVdKSxyb119KSxsfSkoKTtjb25zdCBXej1uZXcgTWkoIk5nTW9kZWxXaXRoRm9ybUNvbnRyb2xXYXJuaW5nIiksZU9lPXtwcm92aWRlOlRoLHVzZUV4aXN0aW5nOlBhKCgpPT5MMCksbXVsdGk6ITB9O2Z1bmN0aW9uIFdhZShsLGMpe3JldHVybiBudWxsPT1sP2Ak''@;'; put 'put ''e2N9YDooYyYmIm9iamVjdCI9PXR5cGVvZiBjJiYoYz0iT2JqZWN0IiksYCR7bH06ICR7Y31gLnNsaWNlKDAsNTApKX1sZXQgTDA9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFBne2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9p''@;'; put 'put ''ZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKGEpe3RoaXMuX2NvbXBhcmVXaXRoPWF9d3JpdGVWYWx1ZShhKXt0aGlzLnZhbHVlPWE7Y29uc3QgZD1XYWUodGhpcy5fZ2V0T3B0aW9uSWQoYSksYSk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUi''@;'; put 'put ''LGQpfXJlZ2lzdGVyT25DaGFuZ2UoYSl7dGhpcy5vbkNoYW5nZT1mPT57dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZShmKSxhKHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKGEpe2Zv''@;'; put 'put ''cihjb25zdCBmIG9mIHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChmKSxhKSlyZXR1cm4gZjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoYSl7Y29uc3QgZj1mdW5jdGlvbiB0T2UobCl7cmV0dXJuIGwuc3BsaXQoIjoi''@;'; put 'put ''KVswXX0oYSk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZik/dGhpcy5fb3B0aW9uTWFwLmdldChmKTphfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oZil7cmV0dXJuKGN8fChjPXhsKGwpKSkoZnx8bCl9fSgpLGwuXHUwMjc1ZGlyPVNy''@;'; put 'put ''KHt0eXBlOmwsc2VsZWN0b3JzOltbInNlbGVjdCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdz''@;'; put 'put ''OmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiY2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkNoYW5nZShoLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vblRvdWNoZWQoKX0pfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVz''@;'; put 'put ''OltyaShbZU9lXSkscm9dfSksbH0pKCksUzE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5fZWxlbWVudD1hLHRoaXMuX3JlbmRlcmVyPWYsdGhpcy5fc2VsZWN0PWQsdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKCkpfXNl''@;'; put 'put ''dCBuZ1ZhbHVlKGEpe251bGwhPXRoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLnNldCh0aGlzLmlkLGEpLHRoaXMuX3NldEVsZW1lbnRWYWx1ZShXYWUodGhpcy5pZCxhKSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVl''@;'; put 'put ''KGEpe3RoaXMuX3NldEVsZW1lbnRWYWx1ZShhKSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSl9X3NldEVsZW1lbnRWYWx1ZShhKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZh''@;'; put 'put ''bHVlIixhKX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCkocnQoVmkpLHJ0KGpvKSxydChMMCw5KSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksbH0pKCk7Y29uc3Qgbk9lPXtwcm92aWRlOlRoLHVzZUV4aXN0aW5nOlBhKCgp''@;'; put 'put ''PT5HQyksbXVsdGk6ITB9O2Z1bmN0aW9uIEdhZShsLGMpe3JldHVybiBudWxsPT1sP2Ake2N9YDooInN0cmluZyI9PXR5cGVvZiBjJiYoYz1gJyR7Y30nYCksYyYmIm9iamVjdCI9PXR5cGVvZiBjJiYoYz0iT2JqZWN0IiksYCR7bH06ICR7Y31gLnNsaWNlKDAsNTApKX1sZXQgR0M9KCgpPT57''@;'; put 'put ''Y2xhc3MgbCBleHRlbmRzIFBne2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKGEpe3RoaXMuX2NvbXBhcmVXaXRoPWF9d3Jp''@;'; put 'put ''dGVWYWx1ZShhKXtsZXQgZjtpZih0aGlzLnZhbHVlPWEsQXJyYXkuaXNBcnJheShhKSl7Y29uc3QgZD1hLm1hcChoPT50aGlzLl9nZXRPcHRpb25JZChoKSk7Zj0oaCxtKT0+e2guX3NldFNlbGVjdGVkKGQuaW5kZXhPZihtLnRvU3RyaW5nKCkpPi0xKX19ZWxzZSBmPShkLGgpPT57ZC5fc2V0''@;'; put 'put ''U2VsZWN0ZWQoITEpfTt0aGlzLl9vcHRpb25NYXAuZm9yRWFjaChmKX1yZWdpc3Rlck9uQ2hhbmdlKGEpe3RoaXMub25DaGFuZ2U9Zj0+e2NvbnN0IGQ9W10saD1mLnNlbGVjdGVkT3B0aW9ucztpZih2b2lkIDAhPT1oKXtjb25zdCBtPWg7Zm9yKGxldCBfPTA7XzxtLmxlbmd0aDtfKyspe2Nv''@;'; put 'put ''bnN0IFg9dGhpcy5fZ2V0T3B0aW9uVmFsdWUobVtfXS52YWx1ZSk7ZC5wdXNoKFgpfX1lbHNle2NvbnN0IG09Zi5vcHRpb25zO2ZvcihsZXQgXz0wO188bS5sZW5ndGg7XysrKXtjb25zdCBPPW1bX107aWYoTy5zZWxlY3RlZCl7Y29uc3QgWD10aGlzLl9nZXRPcHRpb25WYWx1ZShPLnZhbHVl''@;'; put 'put ''KTtkLnB1c2goWCl9fX10aGlzLnZhbHVlPWQsYShkKX19X3JlZ2lzdGVyT3B0aW9uKGEpe2NvbnN0IGY9KHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuc2V0KGYsYSksZn1fZ2V0T3B0aW9uSWQoYSl7Zm9yKGNvbnN0IGYgb2YgdGhpcy5fb3B0''@;'; put 'put ''aW9uTWFwLmtleXMoKSlpZih0aGlzLl9jb21wYXJlV2l0aCh0aGlzLl9vcHRpb25NYXAuZ2V0KGYpLl92YWx1ZSxhKSlyZXR1cm4gZjtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUoYSl7Y29uc3QgZj1mdW5jdGlvbiByT2UobCl7cmV0dXJuIGwuc3BsaXQoIjoiKVswXX0oYSk7cmV0dXJu''@;'; put 'put ''IHRoaXMuX29wdGlvbk1hcC5oYXMoZik/dGhpcy5fb3B0aW9uTWFwLmdldChmKS5fdmFsdWU6YX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxsLlx1MDI3NWRpcj1Tcih7dHlwZTps''@;'; put 'put ''LHNlbGVjdG9yczpbWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYp''@;'; put 'put ''ezEmYSYmRXQoImNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25DaGFuZ2UoaC50YXJnZXQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25Ub3VjaGVkKCl9KX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbcmkoW25PZV0pLHJvXX0pLGx9''@;'; put 'put ''KSgpLE0xPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuX2VsZW1lbnQ9YSx0aGlzLl9yZW5kZXJlcj1mLHRoaXMuX3NlbGVjdD1kLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbih0aGlzKSl9c2V0IG5nVmFsdWUoYSl7bnVs''@;'; put 'put ''bCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fdmFsdWU9YSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoR2FlKHRoaXMuaWQsYSkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZShhKXt0aGlzLl9zZWxlY3Q/KHRoaXMuX3ZhbHVlPWEsdGhpcy5fc2V0''@;'; put 'put ''RWxlbWVudFZhbHVlKEdhZSh0aGlzLmlkLGEpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUoYSl9X3NldEVsZW1lbnRWYWx1ZShhKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2''@;'; put 'put ''ZUVsZW1lbnQsInZhbHVlIixhKX1fc2V0U2VsZWN0ZWQoYSl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsYSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUo''@;'; put 'put ''dGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChqbykscnQoR0MsOSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJv''@;'; put 'put ''cHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLGx9KSgpLHJsZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhp''@;'; put 'put ''KHtpbXBvcnRzOltqYWVdfSksbH0pKCksZGM9KCgpPT57Y2xhc3MgbHtzdGF0aWMgd2l0aENvbmZpZyhhKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6W3twcm92aWRlOkZnLHVzZVZhbHVlOmEuY2FsbFNldERpc2FibGVkU3RhdGU/P1pDfV19fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltybGVdfSksbH0pKCksaE9lPSgoKT0+e2NsYXNzIGx7c3RhdGljIHdpdGhDb25maWcoYSl7cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJzOlt7cHJvdmlk''@;'; put 'put ''ZTpXeix1c2VWYWx1ZTphLndhcm5Pbk5nTW9kZWxXaXRoRm9ybUNvbnRyb2w/PyJhbHdheXMifSx7cHJvdmlkZTpGZyx1c2VWYWx1ZTphLmNhbGxTZXREaXNhYmxlZFN0YXRlPz9aQ31dfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1''@;'; put 'put ''bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbcmxlXX0pLGx9KSgpO2Z1bmN0aW9uIHBPZShsLGMpe3RoaXMudj1sLHRoaXMuaz1jfWZ1bmN0aW9uIFVEKGwpe3ZhciBjLGE7ZnVuY3Rpb24gZihoLG0pe3RyeXt2YXIgXz1sW2hdKG0pLE89Xy52YWx1ZSxYPU8gaW5z''@;'; put 'put ''dGFuY2VvZiBwT2U7UHJvbWlzZS5yZXNvbHZlKFg/Ty52Ok8pLnRoZW4oZnVuY3Rpb24oYWUpe2lmKFgpe3ZhciBwZT0icmV0dXJuIj09PWg/InJldHVybiI6Im5leHQiO2lmKCFPLmt8fGFlLmRvbmUpcmV0dXJuIGYocGUsYWUpO2FlPWxbcGVdKGFlKS52YWx1ZX1kKF8uZG9uZT8icmV0dXJu''@;'; put 'put ''Ijoibm9ybWFsIixhZSl9LGZ1bmN0aW9uKGFlKXtmKCJ0aHJvdyIsYWUpfSl9Y2F0Y2goYWUpe2QoInRocm93IixhZSl9fWZ1bmN0aW9uIGQoaCxtKXtzd2l0Y2goaCl7Y2FzZSJyZXR1cm4iOmMucmVzb2x2ZSh7dmFsdWU6bSxkb25lOiEwfSk7YnJlYWs7Y2FzZSJ0aHJvdyI6Yy5yZWplY3Qo''@;'; put 'put ''bSk7YnJlYWs7ZGVmYXVsdDpjLnJlc29sdmUoe3ZhbHVlOm0sZG9uZTohMX0pfShjPWMubmV4dCk/ZihjLmtleSxjLmFyZyk6YT1udWxsfXRoaXMuX2ludm9rZT1mdW5jdGlvbihoLG0pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihfLE8pe3ZhciBYPXtrZXk6aCxhcmc6bSxyZXNvbHZl''@;'; put 'put ''Ol8scmVqZWN0Ok8sbmV4dDpudWxsfTthP2E9YS5uZXh0PVg6KGM9YT1YLGYoaCxtKSl9KX0sImZ1bmN0aW9uIiE9dHlwZW9mIGwucmV0dXJuJiYodGhpcy5yZXR1cm49dm9pZCAwKX1VRC5wcm90b3R5cGVbImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmFzeW5jSXRlcmF0b3J8''@;'; put 'put ''fCJAQGFzeW5jSXRlcmF0b3IiXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxVRC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5faW52b2tlKCJuZXh0IixsKX0sVUQucHJvdG90eXBlLnRocm93PWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLl9pbnZva2UoInRocm93Iixs''@;'; put 'put ''KX0sVUQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5faW52b2tlKCJyZXR1cm4iLGwpfTtjbGFzcyBaRHtzdGF0aWMgZ2V0VHJhcEVsZW1lbnRzKCl7cmV0dXJuWy4uLm51LnN0YXRlLmZvY3VzVHJhcEl0ZW1zXX1zdGF0aWMgc2V0VHJhcEVsZW1lbnRzKGMpe2Nv''@;'; put 'put ''bnN0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaHRtbCIpO251bGwhPT1hJiZmdW5jdGlvbiBxeihsLC4uLmMpe2wmJmMuZm9yRWFjaCgoW2EsZl0pPT57ITE9PT1mfHxudWxsPT09Zj9sLnJlbW92ZUF0dHJpYnV0ZShhKTpsLnNldEF0dHJpYnV0ZShhLGYrIiIpfSl9KGEsWyJjZHMtZm9j''@;'; put 'put ''dXMtdHJhcCIsISFjLmxlbmd0aCYmIiJdKSxudS5zdGF0ZS5mb2N1c1RyYXBJdGVtcz1bLi4uY119c3RhdGljIHJlbW92ZVRyYXBFbGVtZW50KGMpe3RoaXMuZ2V0VHJhcEVsZW1lbnRzKCkubGVuZ3RoPDF8fHRoaXMuc2V0VHJhcEVsZW1lbnRzKFsuLi50aGlzLmdldFRyYXBFbGVtZW50cygp''@;'; put 'put ''LmZpbHRlcihhPT5hLmZvY3VzVHJhcElkIT09Yy5mb2N1c1RyYXBJZCldKX1zdGF0aWMgc2V0Q3VycmVudChjKXtjPy5mb2N1c1RyYXBJZCYmdGhpcy5zZXRUcmFwRWxlbWVudHMoWy4uLnRoaXMuZ2V0VHJhcEVsZW1lbnRzKCkuZmlsdGVyKGE9PmEuZm9jdXNUcmFwSWQhPT1jLmZvY3VzVHJh''@;'; put 'put ''cElkKSxjXSl9c3RhdGljIGFjdGl2YXRlUHJldmlvdXNDdXJyZW50KCl7dGhpcy5zZXRUcmFwRWxlbWVudHMoWy4uLnRoaXMuZ2V0VHJhcEVsZW1lbnRzKCldLnNsaWNlKDAsLTEpKX1zdGF0aWMgZ2V0Q3VycmVudCgpe3JldHVybiBmdW5jdGlvbiBtT2UobCl7cmV0dXJuIGwubGVuZ3RoP2xb''@;'; put 'put ''bC5sZW5ndGgtMV06dm9pZCAwfSh0aGlzLmdldFRyYXBFbGVtZW50cygpKXx8bnVsbH19Y29uc3QgRU9lPVdvZSgzLChsLGMsYSk9PnshZnVuY3Rpb24gVUFlKGwsYyl7cmV0dXJuIGN8fChjPXdpbmRvdyYmd2luZG93LmN1c3RvbUVsZW1lbnRzKSwhY3x8ISFjLmdldChsKX0obCl8fGZ1bmN0''@;'; put 'put ''aW9uIEVBZSgpe3JldHVybiB3aW5kb3c/LmxvY2F0aW9uPy5ocmVmPy5pbmNsdWRlcygibG9jYWxob3N0OjYwMDYiKX0oKT8oYS5kZWZpbmUobCxjKSwkb2UoKSx3aW5kb3cmJiFPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5lbGVtZW50UmVnaXN0cnkpLnNvbWUoZj0+Zj09PWwpJiYo''@;'; put 'put ''d2luZG93LkNEUy5fc3RhdGUuZWxlbWVudFJlZ2lzdHJ5PXsuLi53aW5kb3cuQ0RTLl9zdGF0ZS5lbGVtZW50UmVnaXN0cnksW2xdOnt9fSkpOkxnLndhcm4obCsiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCIpfSk7ZnVuY3Rpb24gb2xlKGwsYyl7TG9lKCkmJkdvZShbImN1c3RvbUVs''@;'; put 'put ''ZW1lbnRzIl0pJiZFT2UobCxjLHdpbmRvdy5jdXN0b21FbGVtZW50cyl9bGV0IGFsZT0hMTtmdW5jdGlvbiB4T2UobCl7aWYoKGw9TWF0aC50cnVuYyhsKXx8MCk8MCYmKGwrPXRoaXMubGVuZ3RoKSwhKGw8MHx8bD49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW2xdfWlmKCFhbGUpe2FsZT0h''@;'; put 'put ''MDtjb25zdCBsPVJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtmb3IoY29uc3QgYyBvZltBcnJheSxTdHJpbmcsbF0pT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLCJhdCIse3ZhbHVlOnhPZSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MH0pfWxldCBsbGU9ITEsc2xlPSExO2Z1bmN0aW9uIHVsZShsLGMsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKGMpP3RoaXMuZ2V0QXR0cmlidXRlKGMpOm51''@;'; put 'put ''bGx9LHNldDpmdW5jdGlvbihmKXtudWxsIT09Zj90aGlzLnNldEF0dHJpYnV0ZShjLGYpOnRoaXMucmVtb3ZlQXR0cmlidXRlKGMpfX0pfWxsZXx8RWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInJvbGUiKXx8KHVsZShFbGVtZW50LnByb3RvdHlwZSwicm9sZSIsInJvbGUiKSxs''@;'; put 'put ''bGU9ITApLHNsZXx8RWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFyaWFMYWJlbCIpfHwoc2xlPSEwLFsiQWN0aXZlRGVzY2VuZGFudCIsIkF0b21pYyIsIkF1dG9Db21wbGV0ZSIsIkJ1c3kiLCJDaGVja2VkIiwiQ29sQ291bnQiLCJDb2xJbmRleCIsIkNvbFNwYW4iLCJDb250''@;'; put 'put ''cm9scyIsIkN1cnJlbnQiLCJEZXNjcmliZWRCeSIsIkRldGFpbHMiLCJEaXNhYmxlZCIsIkVycm9yTWVzc2FnZSIsIkV4cGFuZGVkIiwiRmxvd1RvIiwiSGFzUG9wdXAiLCJIaWRkZW4iLCJJbnZhbGlkIiwiS2V5U2hvcnRjdXRzIiwiTGFiZWwiLCJMYWJlbGxlZEJ5IiwiTGV2ZWwiLCJMaXZl''@;'; put 'put ''IiwiTW9kYWwiLCJNdWx0aUxpbmUiLCJNdWx0aVNlbGVjdGFibGUiLCJPcmllbnRhdGlvbiIsIk93bnMiLCJQbGFjZWhvbGRlciIsIlBvc0luU2V0IiwiUHJlc3NlZCIsIlJlYWRPbmx5IiwiUmVsZXZhbnQiLCJSZXF1aXJlZCIsIlJvbGVEZXNjcmlwdGlvbiIsIlJvd0NvdW50IiwiUm93SW5k''@;'; put 'put ''ZXgiLCJSb3dTcGFuIiwiU2VsZWN0ZWQiLCJTZXRTaXplIiwiU29ydCIsIlZhbHVlTWF4IiwiVmFsdWVNaW4iLCJWYWx1ZU5vdyIsIlZhbHVlVGV4dCJdLmZvckVhY2gobD0+dWxlKEVsZW1lbnQucHJvdG90eXBlLCJhcmlhLSIrbC50b0xvd2VyQ2FzZSgpLCJhcmlhIitsKSkpO2NvbnN0IFlE''@;'; put 'put ''PXdpbmRvdyxYej1ZRC5TaGFkb3dSb290JiYodm9pZCAwPT09WUQuU2hhZHlDU1N8fFlELlNoYWR5Q1NTLm5hdGl2ZVNoYWRvdykmJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZSJpbiBDU1NTdHlsZVNoZWV0LnByb3RvdHlwZSxKej1TeW1ib2wo''@;'; put 'put ''KSxjbGU9bmV3IFdlYWtNYXA7Y2xhc3MgZmxle2NvbnN0cnVjdG9yKGMsYSxmKXtpZih0aGlzLl8kY3NzUmVzdWx0JD0hMCxmIT09SnopdGhyb3cgRXJyb3IoIkNTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuIik7dGhpcy5j''@;'; put 'put ''c3NUZXh0PWMsdGhpcy50PWF9Z2V0IHN0eWxlU2hlZXQoKXtsZXQgYz10aGlzLm87Y29uc3QgYT10aGlzLnQ7aWYoWHomJnZvaWQgMD09PWMpe2NvbnN0IGY9dm9pZCAwIT09YSYmMT09PWEubGVuZ3RoO2YmJihjPWNsZS5nZXQoYSkpLHZvaWQgMD09PWMmJigodGhpcy5vPWM9bmV3IENTU1N0''@;'; put 'put ''eWxlU2hlZXQpLnJlcGxhY2VTeW5jKHRoaXMuY3NzVGV4dCksZiYmY2xlLnNldChhLGMpKX1yZXR1cm4gY310b1N0cmluZygpe3JldHVybiB0aGlzLmNzc1RleHR9fWNvbnN0IFF6PShsLC4uLmMpPT57Y29uc3QgYT0xPT09bC5sZW5ndGg/bFswXTpjLnJlZHVjZSgoZixkLGgpPT5mKyhtPT57''@;'; put 'put ''aWYoITA9PT1tLl8kY3NzUmVzdWx0JClyZXR1cm4gbS5jc3NUZXh0O2lmKCJudW1iZXIiPT10eXBlb2YgbSlyZXR1cm4gbTt0aHJvdyBFcnJvcigiVmFsdWUgcGFzc2VkIHRvICdjc3MnIGZ1bmN0aW9uIG11c3QgYmUgYSAnY3NzJyBmdW5jdGlvbiByZXN1bHQ6ICIrbSsiLiBVc2UgJ3Vuc2Fm''@;'; put 'put ''ZUNTUycgdG8gcGFzcyBub24tbGl0ZXJhbCB2YWx1ZXMsIGJ1dCB0YWtlIGNhcmUgdG8gZW5zdXJlIHBhZ2Ugc2VjdXJpdHkuIil9KShkKStsW2grMV0sbFswXSk7cmV0dXJuIG5ldyBmbGUoYSxsLEp6KX0sZGxlPVh6P2w9Pmw6bD0+bCBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/KGM9Pnts''@;'; put 'put ''ZXQgYT0iIjtmb3IoY29uc3QgZiBvZiBjLmNzc1J1bGVzKWErPWYuY3NzVGV4dDtyZXR1cm4obD0+bmV3IGZsZSgic3RyaW5nIj09dHlwZW9mIGw/bDpsKyIiLHZvaWQgMCxKeikpKGEpfSkobCk6bDt2YXIgZVU7Y29uc3QgV0Q9d2luZG93LGhsZT1XRC50cnVzdGVkVHlwZXMsT09lPWhsZT9o''@;'; put 'put ''bGUuZW1wdHlTY3JpcHQ6IiIscGxlPVdELnJlYWN0aXZlRWxlbWVudFBvbHlmaWxsU3VwcG9ydCx0VT17dG9BdHRyaWJ1dGUobCxjKXtzd2l0Y2goYyl7Y2FzZSBCb29sZWFuOmw9bD9PT2U6bnVsbDticmVhaztjYXNlIE9iamVjdDpjYXNlIEFycmF5Omw9bnVsbD09bD9sOkpTT04uc3RyaW5n''@;'; put 'put ''aWZ5KGwpfXJldHVybiBsfSxmcm9tQXR0cmlidXRlKGwsYyl7bGV0IGE9bDtzd2l0Y2goYyl7Y2FzZSBCb29sZWFuOmE9bnVsbCE9PWw7YnJlYWs7Y2FzZSBOdW1iZXI6YT1udWxsPT09bD9udWxsOk51bWJlcihsKTticmVhaztjYXNlIE9iamVjdDpjYXNlIEFycmF5OnRyeXthPUpTT04ucGFy''@;'; put 'put ''c2UobCl9Y2F0Y2h7YT1udWxsfX1yZXR1cm4gYX19LG1sZT0obCxjKT0+YyE9PWwmJihjPT1jfHxsPT1sKSxuVT17YXR0cmlidXRlOiEwLHR5cGU6U3RyaW5nLGNvbnZlcnRlcjp0VSxyZWZsZWN0OiExLGhhc0NoYW5nZWQ6bWxlfSxyVT0iZmluYWxpemVkIjtjbGFzcyBHdiBleHRlbmRzIEhU''@;'; put 'put ''TUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl8kRWk9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMSx0aGlzLmhhc1VwZGF0ZWQ9ITEsdGhpcy5fJEVsPW51bGwsdGhpcy51KCl9c3RhdGljIGFkZEluaXRpYWxpemVyKGMpe3ZhciBhO3RoaXMuZmluYWxpemUoKSwo''@;'; put 'put ''bnVsbCE9PShhPXRoaXMuaCkmJnZvaWQgMCE9PWE/YTp0aGlzLmg9W10pLnB1c2goYyl9c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXt0aGlzLmZpbmFsaXplKCk7Y29uc3QgYz1bXTtyZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllcy5mb3JFYWNoKChhLGYpPT57Y29uc3QgZD10''@;'; put 'put ''aGlzLl8kRXAoZixhKTt2b2lkIDAhPT1kJiYodGhpcy5fJEV2LnNldChkLGYpLGMucHVzaChkKSl9KSxjfXN0YXRpYyBjcmVhdGVQcm9wZXJ0eShjLGE9blUpe2lmKGEuc3RhdGUmJihhLmF0dHJpYnV0ZT0hMSksdGhpcy5maW5hbGl6ZSgpLHRoaXMuZWxlbWVudFByb3BlcnRpZXMuc2V0KGMs''@;'; put 'put ''YSksIWEubm9BY2Nlc3NvciYmIXRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KGMpKXtjb25zdCBmPSJzeW1ib2wiPT10eXBlb2YgYz9TeW1ib2woKToiX18iK2MsZD10aGlzLmdldFByb3BlcnR5RGVzY3JpcHRvcihjLGYsYSk7dm9pZCAwIT09ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KHRoaXMucHJvdG90eXBlLGMsZCl9fXN0YXRpYyBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoYyxhLGYpe3JldHVybntnZXQoKXtyZXR1cm4gdGhpc1thXX0sc2V0KGQpe2NvbnN0IGg9dGhpc1tjXTt0aGlzW2FdPWQsdGhpcy5yZXF1ZXN0VXBkYXRlKGMsaCxmKX0sY29uZmlndXJhYmxlOiEwLGVu''@;'; put 'put ''dW1lcmFibGU6ITB9fXN0YXRpYyBnZXRQcm9wZXJ0eU9wdGlvbnMoYyl7cmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXMuZ2V0KGMpfHxuVX1zdGF0aWMgZmluYWxpemUoKXtpZih0aGlzLmhhc093blByb3BlcnR5KHJVKSlyZXR1cm4hMTt0aGlzW3JVXT0hMDtjb25zdCBjPU9iamVjdC5n''@;'; put 'put ''ZXRQcm90b3R5cGVPZih0aGlzKTtpZihjLmZpbmFsaXplKCksdm9pZCAwIT09Yy5oJiYodGhpcy5oPVsuLi5jLmhdKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAoYy5lbGVtZW50UHJvcGVydGllcyksdGhpcy5fJEV2PW5ldyBNYXAsdGhpcy5oYXNPd25Qcm9wZXJ0eSgicHJvcGVy''@;'; put 'put ''dGllcyIpKXtjb25zdCBhPXRoaXMucHJvcGVydGllcyxmPVsuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpXTtmb3IoY29uc3QgZCBvZiBmKXRoaXMuY3JlYXRlUHJvcGVydHkoZCxhW2RdKX1yZXR1cm4gdGhpcy5lbGVt''@;'; put 'put ''ZW50U3R5bGVzPXRoaXMuZmluYWxpemVTdHlsZXModGhpcy5zdHlsZXMpLCEwfXN0YXRpYyBmaW5hbGl6ZVN0eWxlcyhjKXtjb25zdCBhPVtdO2lmKEFycmF5LmlzQXJyYXkoYykpe2NvbnN0IGY9bmV3IFNldChjLmZsYXQoMS8wKS5yZXZlcnNlKCkpO2Zvcihjb25zdCBkIG9mIGYpYS51bnNo''@;'; put 'put ''aWZ0KGRsZShkKSl9ZWxzZSB2b2lkIDAhPT1jJiZhLnB1c2goZGxlKGMpKTtyZXR1cm4gYX1zdGF0aWMgXyRFcChjLGEpe2NvbnN0IGY9YS5hdHRyaWJ1dGU7cmV0dXJuITE9PT1mP3ZvaWQgMDoic3RyaW5nIj09dHlwZW9mIGY/Zjoic3RyaW5nIj09dHlwZW9mIGM/Yy50b0xvd2VyQ2FzZSgp''@;'; put 'put ''OnZvaWQgMH11KCl7dmFyIGM7dGhpcy5fJEVfPW5ldyBQcm9taXNlKGE9PnRoaXMuZW5hYmxlVXBkYXRpbmc9YSksdGhpcy5fJEFMPW5ldyBNYXAsdGhpcy5fJEVnKCksdGhpcy5yZXF1ZXN0VXBkYXRlKCksbnVsbD09PShjPXRoaXMuY29uc3RydWN0b3IuaCl8fHZvaWQgMD09PWN8fGMuZm9y''@;'; put 'put ''RWFjaChhPT5hKHRoaXMpKX1hZGRDb250cm9sbGVyKGMpe3ZhciBhLGY7KG51bGwhPT0oYT10aGlzLl8kRVMpJiZ2b2lkIDAhPT1hP2E6dGhpcy5fJEVTPVtdKS5wdXNoKGMpLHZvaWQgMCE9PXRoaXMucmVuZGVyUm9vdCYmdGhpcy5pc0Nvbm5lY3RlZCYmKG51bGw9PT0oZj1jLmhvc3RDb25u''@;'; put 'put ''ZWN0ZWQpfHx2b2lkIDA9PT1mfHxmLmNhbGwoYykpfXJlbW92ZUNvbnRyb2xsZXIoYyl7dmFyIGE7bnVsbD09PShhPXRoaXMuXyRFUyl8fHZvaWQgMD09PWF8fGEuc3BsaWNlKHRoaXMuXyRFUy5pbmRleE9mKGMpPj4+MCwxKX1fJEVnKCl7dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVy''@;'; put 'put ''dGllcy5mb3JFYWNoKChjLGEpPT57dGhpcy5oYXNPd25Qcm9wZXJ0eShhKSYmKHRoaXMuXyRFaS5zZXQoYSx0aGlzW2FdKSxkZWxldGUgdGhpc1thXSl9KX1jcmVhdGVSZW5kZXJSb290KCl7dmFyIGM7Y29uc3QgYT1udWxsIT09KGM9dGhpcy5zaGFkb3dSb290KSYmdm9pZCAwIT09Yz9jOnRo''@;'; put 'put ''aXMuYXR0YWNoU2hhZG93KHRoaXMuY29uc3RydWN0b3Iuc2hhZG93Um9vdE9wdGlvbnMpO3JldHVybigobCxjKT0+e1h6P2wuYWRvcHRlZFN0eWxlU2hlZXRzPWMubWFwKGE9PmEgaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0P2E6YS5zdHlsZVNoZWV0KTpjLmZvckVhY2goYT0+e2NvbnN0IGY9''@;'; put 'put ''ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxkPVlELmxpdE5vbmNlO3ZvaWQgMCE9PWQmJmYuc2V0QXR0cmlidXRlKCJub25jZSIsZCksZi50ZXh0Q29udGVudD1hLmNzc1RleHQsbC5hcHBlbmRDaGlsZChmKX0pfSkoYSx0aGlzLmNvbnN0cnVjdG9yLmVsZW1lbnRTdHlsZXMpLGF9''@;'; put 'put ''Y29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgYzt2b2lkIDA9PT10aGlzLnJlbmRlclJvb3QmJih0aGlzLnJlbmRlclJvb3Q9dGhpcy5jcmVhdGVSZW5kZXJSb290KCkpLHRoaXMuZW5hYmxlVXBkYXRpbmcoITApLG51bGw9PT0oYz10aGlzLl8kRVMpfHx2b2lkIDA9PT1jfHxjLmZvckVhY2goYT0+''@;'; put 'put ''e3ZhciBmO3JldHVybiBudWxsPT09KGY9YS5ob3N0Q29ubmVjdGVkKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5jYWxsKGEpfSl9ZW5hYmxlVXBkYXRpbmcoYyl7fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dmFyIGM7bnVsbD09PShjPXRoaXMuXyRFUyl8fHZvaWQgMD09PWN8fGMuZm9yRWFjaChh''@;'; put 'put ''PT57dmFyIGY7cmV0dXJuIG51bGw9PT0oZj1hLmhvc3REaXNjb25uZWN0ZWQpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLmNhbGwoYSl9KX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soYyxhLGYpe3RoaXMuXyRBSyhjLGYpfV8kRU8oYyxhLGY9blUpe3ZhciBkO2NvbnN0IGg9dGhpcy5jb25zdHJ1''@;'; put 'put ''Y3Rvci5fJEVwKGMsZik7aWYodm9pZCAwIT09aCYmITA9PT1mLnJlZmxlY3Qpe2NvbnN0IG09KHZvaWQgMCE9PShudWxsPT09KGQ9Zi5jb252ZXJ0ZXIpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLnRvQXR0cmlidXRlKT9mLmNvbnZlcnRlcjp0VSkudG9BdHRyaWJ1dGUoYSxmLnR5cGUpO3RoaXMu''@;'; put 'put ''XyRFbD1jLG51bGw9PW0/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoaCk6dGhpcy5zZXRBdHRyaWJ1dGUoaCxtKSx0aGlzLl8kRWw9bnVsbH19XyRBSyhjLGEpe3ZhciBmO2NvbnN0IGQ9dGhpcy5jb25zdHJ1Y3RvcixoPWQuXyRFdi5nZXQoYyk7aWYodm9pZCAwIT09aCYmdGhpcy5fJEVsIT09aCl7''@;'; put 'put ''Y29uc3QgbT1kLmdldFByb3BlcnR5T3B0aW9ucyhoKSxfPSJmdW5jdGlvbiI9PXR5cGVvZiBtLmNvbnZlcnRlcj97ZnJvbUF0dHJpYnV0ZTptLmNvbnZlcnRlcn06dm9pZCAwIT09KG51bGw9PT0oZj1tLmNvbnZlcnRlcil8fHZvaWQgMD09PWY/dm9pZCAwOmYuZnJvbUF0dHJpYnV0ZSk/bS5j''@;'; put 'put ''b252ZXJ0ZXI6dFU7dGhpcy5fJEVsPWgsdGhpc1toXT1fLmZyb21BdHRyaWJ1dGUoYSxtLnR5cGUpLHRoaXMuXyRFbD1udWxsfX1yZXF1ZXN0VXBkYXRlKGMsYSxmKXtsZXQgZD0hMDt2b2lkIDAhPT1jJiYoKChmPWZ8fHRoaXMuY29uc3RydWN0b3IuZ2V0UHJvcGVydHlPcHRpb25zKGMpKS5o''@;'; put 'put ''YXNDaGFuZ2VkfHxtbGUpKHRoaXNbY10sYSk/KHRoaXMuXyRBTC5oYXMoYyl8fHRoaXMuXyRBTC5zZXQoYyxhKSwhMD09PWYucmVmbGVjdCYmdGhpcy5fJEVsIT09YyYmKHZvaWQgMD09PXRoaXMuXyRFQyYmKHRoaXMuXyRFQz1uZXcgTWFwKSx0aGlzLl8kRUMuc2V0KGMsZikpKTpkPSExKSwh''@;'; put 'put ''dGhpcy5pc1VwZGF0ZVBlbmRpbmcmJmQmJih0aGlzLl8kRV89dGhpcy5fJEVqKCkpfV8kRWooKXt2YXIgYz10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtjLmlzVXBkYXRlUGVuZGluZz0hMDt0cnl7eWllbGQgYy5fJEVffWNhdGNoKGYpe1Byb21pc2UucmVqZWN0KGYpfWNvbnN0IGE9Yy5z''@;'; put 'put ''Y2hlZHVsZVVwZGF0ZSgpO3JldHVybiBudWxsIT1hJiYoeWllbGQgYSksIWMuaXNVcGRhdGVQZW5kaW5nfSkoKX1zY2hlZHVsZVVwZGF0ZSgpe3JldHVybiB0aGlzLnBlcmZvcm1VcGRhdGUoKX1wZXJmb3JtVXBkYXRlKCl7dmFyIGM7aWYoIXRoaXMuaXNVcGRhdGVQZW5kaW5nKXJldHVybjt0''@;'; put 'put ''aGlzLl8kRWkmJih0aGlzLl8kRWkuZm9yRWFjaCgoZCxoKT0+dGhpc1toXT1kKSx0aGlzLl8kRWk9dm9pZCAwKTtsZXQgYT0hMTtjb25zdCBmPXRoaXMuXyRBTDt0cnl7YT10aGlzLnNob3VsZFVwZGF0ZShmKSxhPyh0aGlzLndpbGxVcGRhdGUoZiksbnVsbD09PShjPXRoaXMuXyRFUyl8fHZv''@;'; put 'put ''aWQgMD09PWN8fGMuZm9yRWFjaChkPT57dmFyIGg7cmV0dXJuIG51bGw9PT0oaD1kLmhvc3RVcGRhdGUpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmNhbGwoZCl9KSx0aGlzLnVwZGF0ZShmKSk6dGhpcy5fJEVrKCl9Y2F0Y2goZCl7dGhyb3cgYT0hMSx0aGlzLl8kRWsoKSxkfWEmJnRoaXMuXyRB''@;'; put 'put ''RShmKX13aWxsVXBkYXRlKGMpe31fJEFFKGMpe3ZhciBhO251bGw9PT0oYT10aGlzLl8kRVMpfHx2b2lkIDA9PT1hfHxhLmZvckVhY2goZj0+e3ZhciBkO3JldHVybiBudWxsPT09KGQ9Zi5ob3N0VXBkYXRlZCl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuY2FsbChmKX0pLHRoaXMuaGFzVXBkYXRl''@;'; put 'put ''ZHx8KHRoaXMuaGFzVXBkYXRlZD0hMCx0aGlzLmZpcnN0VXBkYXRlZChjKSksdGhpcy51cGRhdGVkKGMpfV8kRWsoKXt0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdl''@;'; put 'put ''dFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuXyRFX31zaG91bGRVcGRhdGUoYyl7cmV0dXJuITB9dXBkYXRlKGMpe3ZvaWQgMCE9PXRoaXMuXyRFQyYmKHRoaXMuXyRFQy5mb3JFYWNoKChhLGYpPT50aGlzLl8kRU8oZix0aGlzW2ZdLGEpKSx0aGlzLl8kRUM9dm9pZCAwKSx0aGlzLl8k''@;'; put 'put ''RWsoKX11cGRhdGVkKGMpe31maXJzdFVwZGF0ZWQoYyl7fX12YXIgaVU7R3ZbclVdPSEwLEd2LmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAsR3YuZWxlbWVudFN0eWxlcz1bXSxHdi5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9LHBsZT8uKHtSZWFjdGl2ZUVsZW1lbnQ6R3Z9KSwo''@;'; put 'put ''bnVsbCE9PShlVT1XRC5yZWFjdGl2ZUVsZW1lbnRWZXJzaW9ucykmJnZvaWQgMCE9PWVVP2VVOldELnJlYWN0aXZlRWxlbWVudFZlcnNpb25zPVtdKS5wdXNoKCIxLjYuMiIpO2NvbnN0IEdEPXdpbmRvdywkdj1HRC50cnVzdGVkVHlwZXMsZ2xlPSR2PyR2LmNyZWF0ZVBvbGljeSgibGl0LWh0''@;'; put 'put ''bWwiLHtjcmVhdGVIVE1MOmw9Pmx9KTp2b2lkIDAsJEQ9IiRsaXQkIixYMj1gbGl0JCR7KE1hdGgucmFuZG9tKCkrIiIpLnNsaWNlKDkpfSRgLG9VPSI/IitYMixET2U9YDwke29VfT5gLE5nPWRvY3VtZW50LCRDPSgpPT5OZy5jcmVhdGVDb21tZW50KCIiKSxLQz1sPT5udWxsPT09bHx8Im9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBsJiYiZnVuY3Rpb24iIT10eXBlb2YgbCx2bGU9QXJyYXkuaXNBcnJheSxhVT0iWyBcdFxuXGZccl0iLHFDPS88KD86KCEtLXxcL1teYS16QS1aXSl8KFwvP1thLXpBLVpdW14+XHNdKil8KFwvPyQpKS9nLGJsZT0vLS0+L2csX2xlPS8+L2csVmc9UmVnRXhwKGA+fCR7''@;'; put 'put ''YVV9KD86KFteXFxzIic+PS9dKykoJHthVX0qPSR7YVV9Kig/OlteIFx0XG5cZlxyIidcYDw+PV18KCJ8Jyl8KSl8JClgLCJnIiksd2xlPS8nL2csQ2xlPS8iL2csU2xlPS9eKD86c2NyaXB0fHN0eWxlfHRleHRhcmVhfHRpdGxlKSQvaSxNbGU9bD0+KGMsLi4uYSk9Pih7XyRsaXRUeXBlJDps''@;'; put 'put ''LHN0cmluZ3M6Yyx2YWx1ZXM6YX0pLGxVPU1sZSgxKSxJT2U9TWxlKDIpLEt2PVN5bWJvbC5mb3IoImxpdC1ub0NoYW5nZSIpLEZ1PVN5bWJvbC5mb3IoImxpdC1ub3RoaW5nIiksa2xlPW5ldyBXZWFrTWFwLEJnPU5nLmNyZWF0ZVRyZWVXYWxrZXIoTmcsMTI5LG51bGwsITEpO2Z1bmN0aW9u''@;'; put 'put ''IEVsZShsLGMpe2lmKCFBcnJheS5pc0FycmF5KGwpfHwhbC5oYXNPd25Qcm9wZXJ0eSgicmF3IikpdGhyb3cgRXJyb3IoImludmFsaWQgdGVtcGxhdGUgc3RyaW5ncyBhcnJheSIpO3JldHVybiB2b2lkIDAhPT1nbGU/Z2xlLmNyZWF0ZUhUTUwoYyk6Y31jbGFzcyBYQ3tjb25zdHJ1Y3Rvcih7''@;'; put 'put ''c3RyaW5nczpjLF8kbGl0VHlwZSQ6YX0sZil7bGV0IGQ7dGhpcy5wYXJ0cz1bXTtsZXQgaD0wLG09MDtjb25zdCBfPWMubGVuZ3RoLTEsTz10aGlzLnBhcnRzLFtYLGFlXT0oKGwsYyk9Pntjb25zdCBhPWwubGVuZ3RoLTEsZj1bXTtsZXQgZCxoPTI9PT1jPyI8c3ZnPiI6IiIsbT1xQztmb3Io''@;'; put 'put ''bGV0IF89MDtfPGE7XysrKXtjb25zdCBPPWxbX107bGV0IFgsYWUscGU9LTEsYmU9MDtmb3IoO2JlPE8ubGVuZ3RoJiYobS5sYXN0SW5kZXg9YmUsYWU9bS5leGVjKE8pLG51bGwhPT1hZSk7KWJlPW0ubGFzdEluZGV4LG09PT1xQz8iIS0tIj09PWFlWzFdP209YmxlOnZvaWQgMCE9PWFlWzFd''@;'; put 'put ''P209X2xlOnZvaWQgMCE9PWFlWzJdPyhTbGUudGVzdChhZVsyXSkmJihkPVJlZ0V4cCgiPC8iK2FlWzJdLCJnIikpLG09VmcpOnZvaWQgMCE9PWFlWzNdJiYobT1WZyk6bT09PVZnPyI+Ij09PWFlWzBdPyhtPWQ/P3FDLHBlPS0xKTp2b2lkIDA9PT1hZVsxXT9wZT0tMjoocGU9bS5sYXN0SW5k''@;'; put 'put ''ZXgtYWVbMl0ubGVuZ3RoLFg9YWVbMV0sbT12b2lkIDA9PT1hZVszXT9WZzonIic9PT1hZVszXT9DbGU6d2xlKTptPT09Q2xlfHxtPT09d2xlP209Vmc6bT09PWJsZXx8bT09PV9sZT9tPXFDOihtPVZnLGQ9dm9pZCAwKTtjb25zdCB4ZT1tPT09VmcmJmxbXysxXS5zdGFydHNXaXRoKCIvPiIp''@;'; put 'put ''PyIgIjoiIjtoKz1tPT09cUM/TytET2U6cGU+PTA/KGYucHVzaChYKSxPLnNsaWNlKDAscGUpKyREK08uc2xpY2UocGUpK1gyK3hlKTpPK1gyKygtMj09PXBlPyhmLnB1c2godm9pZCAwKSxfKTp4ZSl9cmV0dXJuW0VsZShsLGgrKGxbYV18fCI8Pz4iKSsoMj09PWM/Ijwvc3ZnPiI6IiIpKSxm''@;'; put 'put ''XX0pKGMsYSk7aWYodGhpcy5lbD1YQy5jcmVhdGVFbGVtZW50KFgsZiksQmcuY3VycmVudE5vZGU9dGhpcy5lbC5jb250ZW50LDI9PT1hKXtjb25zdCBwZT10aGlzLmVsLmNvbnRlbnQsYmU9cGUuZmlyc3RDaGlsZDtiZS5yZW1vdmUoKSxwZS5hcHBlbmQoLi4uYmUuY2hpbGROb2Rlcyl9Zm9y''@;'; put 'put ''KDtudWxsIT09KGQ9QmcubmV4dE5vZGUoKSkmJk8ubGVuZ3RoPF87KXtpZigxPT09ZC5ub2RlVHlwZSl7aWYoZC5oYXNBdHRyaWJ1dGVzKCkpe2NvbnN0IHBlPVtdO2Zvcihjb25zdCBiZSBvZiBkLmdldEF0dHJpYnV0ZU5hbWVzKCkpaWYoYmUuZW5kc1dpdGgoJEQpfHxiZS5zdGFydHNXaXRo''@;'; put 'put ''KFgyKSl7Y29uc3QgeGU9YWVbbSsrXTtpZihwZS5wdXNoKGJlKSx2b2lkIDAhPT14ZSl7Y29uc3QgVmU9ZC5nZXRBdHRyaWJ1dGUoeGUudG9Mb3dlckNhc2UoKSskRCkuc3BsaXQoWDIpLFplPS8oWy4/QF0pPyguKikvLmV4ZWMoeGUpO08ucHVzaCh7dHlwZToxLGluZGV4OmgsbmFtZTpaZVsy''@;'; put 'put ''XSxzdHJpbmdzOlZlLGN0b3I6Ii4iPT09WmVbMV0/VGxlOiI/Ij09PVplWzFdP09sZToiQCI9PT1aZVsxXT9EbGU6SkN9KX1lbHNlIE8ucHVzaCh7dHlwZTo2LGluZGV4Omh9KX1mb3IoY29uc3QgYmUgb2YgcGUpZC5yZW1vdmVBdHRyaWJ1dGUoYmUpfWlmKFNsZS50ZXN0KGQudGFnTmFtZSkp''@;'; put 'put ''e2NvbnN0IHBlPWQudGV4dENvbnRlbnQuc3BsaXQoWDIpLGJlPXBlLmxlbmd0aC0xO2lmKGJlPjApe2QudGV4dENvbnRlbnQ9JHY/JHYuZW1wdHlTY3JpcHQ6IiI7Zm9yKGxldCB4ZT0wO3hlPGJlO3hlKyspZC5hcHBlbmQocGVbeGVdLCRDKCkpLEJnLm5leHROb2RlKCksTy5wdXNoKHt0eXBl''@;'; put 'put ''OjIsaW5kZXg6KytofSk7ZC5hcHBlbmQocGVbYmVdLCRDKCkpfX19ZWxzZSBpZig4PT09ZC5ub2RlVHlwZSlpZihkLmRhdGE9PT1vVSlPLnB1c2goe3R5cGU6MixpbmRleDpofSk7ZWxzZXtsZXQgcGU9LTE7Zm9yKDstMSE9PShwZT1kLmRhdGEuaW5kZXhPZihYMixwZSsxKSk7KU8ucHVzaCh7''@;'; put 'put ''dHlwZTo3LGluZGV4Omh9KSxwZSs9WDIubGVuZ3RoLTF9aCsrfX1zdGF0aWMgY3JlYXRlRWxlbWVudChjLGEpe2NvbnN0IGY9TmcuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gZi5pbm5lckhUTUw9YyxmfX1mdW5jdGlvbiBqZyhsLGMsYT1sLGYpe3ZhciBkLGgsbSxfO2lmKGM9''@;'; put 'put ''PT1LdilyZXR1cm4gYztsZXQgTz12b2lkIDAhPT1mP251bGw9PT0oZD1hLl8kQ28pfHx2b2lkIDA9PT1kP3ZvaWQgMDpkW2ZdOmEuXyRDbDtjb25zdCBYPUtDKGMpP3ZvaWQgMDpjLl8kbGl0RGlyZWN0aXZlJDtyZXR1cm4gTz8uY29uc3RydWN0b3IhPT1YJiYobnVsbD09PShoPU8/Ll8kQU8p''@;'; put 'put ''fHx2b2lkIDA9PT1ofHxoLmNhbGwoTywhMSksdm9pZCAwPT09WD9PPXZvaWQgMDooTz1uZXcgWChsKSxPLl8kQVQobCxhLGYpKSx2b2lkIDAhPT1mPyhudWxsIT09KG09KF89YSkuXyRDbykmJnZvaWQgMCE9PW0/bTpfLl8kQ289W10pW2ZdPU86YS5fJENsPU8pLHZvaWQgMCE9PU8mJihjPWpn''@;'; put 'put ''KGwsTy5fJEFTKGwsYy52YWx1ZXMpLE8sZikpLGN9Y2xhc3MgQWxle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fJEFWPVtdLHRoaXMuXyRBTj12b2lkIDAsdGhpcy5fJEFEPWMsdGhpcy5fJEFNPWF9Z2V0IHBhcmVudE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFNLnBhcmVudE5vZGV9Z2V0IF8kQVUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fJEFNLl8kQVV9dShjKXt2YXIgYTtjb25zdHtlbDp7Y29udGVudDpmfSxwYXJ0czpkfT10aGlzLl8kQUQsaD0obnVsbCE9PShhPWM/LmNyZWF0aW9uU2NvcGUpJiZ2b2lkIDAhPT1hP2E6TmcpLmltcG9ydE5vZGUoZiwhMCk7QmcuY3VycmVudE5vZGU9aDtsZXQgbT1C''@;'; put 'put ''Zy5uZXh0Tm9kZSgpLF89MCxPPTAsWD1kWzBdO2Zvcig7dm9pZCAwIT09WDspe2lmKF89PT1YLmluZGV4KXtsZXQgYWU7Mj09PVgudHlwZT9hZT1uZXcgcXYobSxtLm5leHRTaWJsaW5nLHRoaXMsYyk6MT09PVgudHlwZT9hZT1uZXcgWC5jdG9yKG0sWC5uYW1lLFguc3RyaW5ncyx0aGlzLGMp''@;'; put 'put ''OjY9PT1YLnR5cGUmJihhZT1uZXcgSWxlKG0sdGhpcyxjKSksdGhpcy5fJEFWLnB1c2goYWUpLFg9ZFsrK09dfV8hPT1YPy5pbmRleCYmKG09QmcubmV4dE5vZGUoKSxfKyspfXJldHVybiBCZy5jdXJyZW50Tm9kZT1OZyxofXYoYyl7bGV0IGE9MDtmb3IoY29uc3QgZiBvZiB0aGlzLl8kQVYp''@;'; put 'put ''dm9pZCAwIT09ZiYmKHZvaWQgMCE9PWYuc3RyaW5ncz8oZi5fJEFJKGMsZixhKSxhKz1mLnN0cmluZ3MubGVuZ3RoLTIpOmYuXyRBSShjW2FdKSksYSsrfX1jbGFzcyBxdntjb25zdHJ1Y3RvcihjLGEsZixkKXt2YXIgaDt0aGlzLnR5cGU9Mix0aGlzLl8kQUg9RnUsdGhpcy5fJEFOPXZvaWQg''@;'; put 'put ''MCx0aGlzLl8kQUE9Yyx0aGlzLl8kQUI9YSx0aGlzLl8kQU09Zix0aGlzLm9wdGlvbnM9ZCx0aGlzLl8kQ3A9bnVsbD09PShoPWQ/LmlzQ29ubmVjdGVkKXx8dm9pZCAwPT09aHx8aH1nZXQgXyRBVSgpe3ZhciBjLGE7cmV0dXJuIG51bGwhPT0oYT1udWxsPT09KGM9dGhpcy5fJEFNKXx8dm9p''@;'; put 'put ''ZCAwPT09Yz92b2lkIDA6Yy5fJEFVKSYmdm9pZCAwIT09YT9hOnRoaXMuXyRDcH1nZXQgcGFyZW50Tm9kZSgpe2xldCBjPXRoaXMuXyRBQS5wYXJlbnROb2RlO2NvbnN0IGE9dGhpcy5fJEFNO3JldHVybiB2b2lkIDAhPT1hJiYxMT09PWM/Lm5vZGVUeXBlJiYoYz1hLnBhcmVudE5vZGUpLGN9''@;'; put 'put ''Z2V0IHN0YXJ0Tm9kZSgpe3JldHVybiB0aGlzLl8kQUF9Z2V0IGVuZE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFCfV8kQUkoYyxhPXRoaXMpe2M9amcodGhpcyxjLGEpLEtDKGMpP2M9PT1GdXx8bnVsbD09Y3x8IiI9PT1jPyh0aGlzLl8kQUghPT1GdSYmdGhpcy5fJEFSKCksdGhpcy5fJEFIPUZ1''@;'; put 'put ''KTpjIT09dGhpcy5fJEFIJiZjIT09S3YmJnRoaXMuXyhjKTp2b2lkIDAhPT1jLl8kbGl0VHlwZSQ/dGhpcy5nKGMpOnZvaWQgMCE9PWMubm9kZVR5cGU/dGhpcy4kKGMpOihsPT52bGUobCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBsPy5bU3ltYm9sLml0ZXJhdG9yXSkoYyk/dGhpcy5UKGMpOnRo''@;'; put 'put ''aXMuXyhjKX1rKGMpe3JldHVybiB0aGlzLl8kQUEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyx0aGlzLl8kQUIpfSQoYyl7dGhpcy5fJEFIIT09YyYmKHRoaXMuXyRBUigpLHRoaXMuXyRBSD10aGlzLmsoYykpfV8oYyl7dGhpcy5fJEFIIT09RnUmJktDKHRoaXMuXyRBSCk/dGhpcy5fJEFB''@;'; put 'put ''Lm5leHRTaWJsaW5nLmRhdGE9Yzp0aGlzLiQoTmcuY3JlYXRlVGV4dE5vZGUoYykpLHRoaXMuXyRBSD1jfWcoYyl7dmFyIGE7Y29uc3R7dmFsdWVzOmYsXyRsaXRUeXBlJDpkfT1jLGg9Im51bWJlciI9PXR5cGVvZiBkP3RoaXMuXyRBQyhjKToodm9pZCAwPT09ZC5lbCYmKGQuZWw9WEMuY3Jl''@;'; put 'put ''YXRlRWxlbWVudChFbGUoZC5oLGQuaFswXSksdGhpcy5vcHRpb25zKSksZCk7aWYoKG51bGw9PT0oYT10aGlzLl8kQUgpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLl8kQUQpPT09aCl0aGlzLl8kQUgudihmKTtlbHNle2NvbnN0IG09bmV3IEFsZShoLHRoaXMpLF89bS51KHRoaXMub3B0aW9ucyk7''@;'; put 'put ''bS52KGYpLHRoaXMuJChfKSx0aGlzLl8kQUg9bX19XyRBQyhjKXtsZXQgYT1rbGUuZ2V0KGMuc3RyaW5ncyk7cmV0dXJuIHZvaWQgMD09PWEmJmtsZS5zZXQoYy5zdHJpbmdzLGE9bmV3IFhDKGMpKSxhfVQoYyl7dmxlKHRoaXMuXyRBSCl8fCh0aGlzLl8kQUg9W10sdGhpcy5fJEFSKCkpO2Nv''@;'; put 'put ''bnN0IGE9dGhpcy5fJEFIO2xldCBmLGQ9MDtmb3IoY29uc3QgaCBvZiBjKWQ9PT1hLmxlbmd0aD9hLnB1c2goZj1uZXcgcXYodGhpcy5rKCRDKCkpLHRoaXMuaygkQygpKSx0aGlzLHRoaXMub3B0aW9ucykpOmY9YVtkXSxmLl8kQUkoaCksZCsrO2Q8YS5sZW5ndGgmJih0aGlzLl8kQVIoZiYm''@;'; put 'put ''Zi5fJEFCLm5leHRTaWJsaW5nLGQpLGEubGVuZ3RoPWQpfV8kQVIoYz10aGlzLl8kQUEubmV4dFNpYmxpbmcsYSl7dmFyIGY7Zm9yKG51bGw9PT0oZj10aGlzLl8kQVApfHx2b2lkIDA9PT1mfHxmLmNhbGwodGhpcywhMSwhMCxhKTtjJiZjIT09dGhpcy5fJEFCOyl7Y29uc3QgZD1jLm5leHRT''@;'; put 'put ''aWJsaW5nO2MucmVtb3ZlKCksYz1kfX1zZXRDb25uZWN0ZWQoYyl7dmFyIGE7dm9pZCAwPT09dGhpcy5fJEFNJiYodGhpcy5fJENwPWMsbnVsbD09PShhPXRoaXMuXyRBUCl8fHZvaWQgMD09PWF8fGEuY2FsbCh0aGlzLGMpKX19Y2xhc3MgSkN7Y29uc3RydWN0b3IoYyxhLGYsZCxoKXt0aGlz''@;'; put 'put ''LnR5cGU9MSx0aGlzLl8kQUg9RnUsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLmVsZW1lbnQ9Yyx0aGlzLm5hbWU9YSx0aGlzLl8kQU09ZCx0aGlzLm9wdGlvbnM9aCxmLmxlbmd0aD4yfHwiIiE9PWZbMF18fCIiIT09ZlsxXT8odGhpcy5fJEFIPUFycmF5KGYubGVuZ3RoLTEpLmZpbGwobmV3IFN0''@;'; put 'put ''cmluZyksdGhpcy5zdHJpbmdzPWYpOnRoaXMuXyRBSD1GdX1nZXQgdGFnTmFtZSgpe3JldHVybiB0aGlzLmVsZW1lbnQudGFnTmFtZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGMsYT10aGlzLGYsZCl7Y29uc3QgaD10aGlzLnN0cmluZ3M7bGV0IG09ITE7aWYodm9p''@;'; put 'put ''ZCAwPT09aCljPWpnKHRoaXMsYyxhLDApLG09IUtDKGMpfHxjIT09dGhpcy5fJEFIJiZjIT09S3YsbSYmKHRoaXMuXyRBSD1jKTtlbHNle2NvbnN0IF89YztsZXQgTyxYO2ZvcihjPWhbMF0sTz0wO088aC5sZW5ndGgtMTtPKyspWD1qZyh0aGlzLF9bZitPXSxhLE8pLFg9PT1LdiYmKFg9dGhp''@;'; put 'put ''cy5fJEFIW09dKSxtfHwobT0hS0MoWCl8fFghPT10aGlzLl8kQUhbT10pLFg9PT1GdT9jPUZ1OmMhPT1GdSYmKGMrPShYPz8iIikraFtPKzFdKSx0aGlzLl8kQUhbT109WH1tJiYhZCYmdGhpcy5qKGMpfWooYyl7Yz09PUZ1P3RoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUodGhpcy5uYW1l''@;'; put 'put ''KTp0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSxjPz8iIil9fWNsYXNzIFRsZSBleHRlbmRzIEpDe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9M31qKGMpe3RoaXMuZWxlbWVudFt0aGlzLm5hbWVdPWM9PT1GdT92b2lkIDA6Y319Y29uc3Qg''@;'; put 'put ''Uk9lPSR2PyR2LmVtcHR5U2NyaXB0OiIiO2NsYXNzIE9sZSBleHRlbmRzIEpDe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9NH1qKGMpe2MmJmMhPT1GdT90aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSxST2UpOnRoaXMuZWxlbWVudC5yZW1v''@;'; put 'put ''dmVBdHRyaWJ1dGUodGhpcy5uYW1lKX19Y2xhc3MgRGxlIGV4dGVuZHMgSkN7Y29uc3RydWN0b3IoYyxhLGYsZCxoKXtzdXBlcihjLGEsZixkLGgpLHRoaXMudHlwZT01fV8kQUkoYyxhPXRoaXMpe3ZhciBmO2lmKChjPW51bGwhPT0oZj1qZyh0aGlzLGMsYSwwKSkmJnZvaWQgMCE9PWY/ZjpG''@;'; put 'put ''dSk9PT1LdilyZXR1cm47Y29uc3QgZD10aGlzLl8kQUgsaD1jPT09RnUmJmQhPT1GdXx8Yy5jYXB0dXJlIT09ZC5jYXB0dXJlfHxjLm9uY2UhPT1kLm9uY2V8fGMucGFzc2l2ZSE9PWQucGFzc2l2ZSxtPWMhPT1GdSYmKGQ9PT1GdXx8aCk7aCYmdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlz''@;'; put 'put ''dGVuZXIodGhpcy5uYW1lLHRoaXMsZCksbSYmdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5uYW1lLHRoaXMsYyksdGhpcy5fJEFIPWN9aGFuZGxlRXZlbnQoYyl7dmFyIGEsZjsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fJEFIP3RoaXMuXyRBSC5jYWxsKG51bGwhPT0oZj1u''@;'; put 'put ''dWxsPT09KGE9dGhpcy5vcHRpb25zKXx8dm9pZCAwPT09YT92b2lkIDA6YS5ob3N0KSYmdm9pZCAwIT09Zj9mOnRoaXMuZWxlbWVudCxjKTp0aGlzLl8kQUguaGFuZGxlRXZlbnQoYyl9fWNsYXNzIElsZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5lbGVtZW50PWMsdGhpcy50eXBlPTYsdGhp''@;'; put 'put ''cy5fJEFOPXZvaWQgMCx0aGlzLl8kQU09YSx0aGlzLm9wdGlvbnM9Zn1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGMpe2pnKHRoaXMsYyl9fWNvbnN0IFJsZT1HRC5saXRIdG1sUG9seWZpbGxTdXBwb3J0O1JsZT8uKFhDLHF2KSwobnVsbCE9PShpVT1HRC5saXRIdG1s''@;'; put 'put ''VmVyc2lvbnMpJiZ2b2lkIDAhPT1pVT9pVTpHRC5saXRIdG1sVmVyc2lvbnM9W10pLnB1c2goIjIuNy41Iik7Y29uc3QgTGxlPShsLGMsYSk9Pnt2YXIgZixkO2NvbnN0IGg9bnVsbCE9PShmPWE/LnJlbmRlckJlZm9yZSkmJnZvaWQgMCE9PWY/ZjpjO2xldCBtPWguXyRsaXRQYXJ0JDtpZih2''@;'; put 'put ''b2lkIDA9PT1tKXtjb25zdCBfPW51bGwhPT0oZD1hPy5yZW5kZXJCZWZvcmUpJiZ2b2lkIDAhPT1kP2Q6bnVsbDtoLl8kbGl0UGFydCQ9bT1uZXcgcXYoYy5pbnNlcnRCZWZvcmUoJEMoKSxfKSxfLHZvaWQgMCxhPz97fSl9cmV0dXJuIG0uXyRBSShsKSxtfTt2YXIgc1UsdVU7Y2xhc3MgWHYg''@;'; put 'put ''ZXh0ZW5kcyBHdntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZW5kZXJPcHRpb25zPXtob3N0OnRoaXN9LHRoaXMuXyREbz12b2lkIDB9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBjLGE7Y29uc3QgZj1zdXBlci5jcmVhdGVSZW5kZXJSb290KCk7cmV0dXJuIG51bGwh''@;'; put 'put ''PT0oYz0oYT10aGlzLnJlbmRlck9wdGlvbnMpLnJlbmRlckJlZm9yZSkmJnZvaWQgMCE9PWN8fChhLnJlbmRlckJlZm9yZT1mLmZpcnN0Q2hpbGQpLGZ9dXBkYXRlKGMpe2NvbnN0IGE9dGhpcy5yZW5kZXIoKTt0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLnJlbmRlck9wdGlvbnMuaXNDb25uZWN0''@;'; put 'put ''ZWQ9dGhpcy5pc0Nvbm5lY3RlZCksc3VwZXIudXBkYXRlKGMpLHRoaXMuXyREbz1MbGUoYSx0aGlzLnJlbmRlclJvb3QsdGhpcy5yZW5kZXJPcHRpb25zKX1jb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBjO3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShjPXRoaXMuXyREbyl8fHZv''@;'; put 'put ''aWQgMD09PWN8fGMuc2V0Q29ubmVjdGVkKCEwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBjO3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShjPXRoaXMuXyREbyl8fHZvaWQgMD09PWN8fGMuc2V0Q29ubmVjdGVkKCExKX1yZW5kZXIoKXtyZXR1cm4gS3Z9fVh2LmZp''@;'; put 'put ''bmFsaXplZD0hMCxYdi5fJGxpdEVsZW1lbnQkPSEwLG51bGw9PT0oc1U9Z2xvYmFsVGhpcy5saXRFbGVtZW50SHlkcmF0ZVN1cHBvcnQpfHx2b2lkIDA9PT1zVXx8c1UuY2FsbChnbG9iYWxUaGlzLHtMaXRFbGVtZW50Olh2fSk7Y29uc3QgUGxlPWdsb2JhbFRoaXMubGl0RWxlbWVudFBvbHlm''@;'; put 'put ''aWxsU3VwcG9ydDtQbGU/Lih7TGl0RWxlbWVudDpYdn0pLChudWxsIT09KHVVPWdsb2JhbFRoaXMubGl0RWxlbWVudFZlcnNpb25zKSYmdm9pZCAwIT09dVU/dVU6Z2xvYmFsVGhpcy5saXRFbGVtZW50VmVyc2lvbnM9W10pLnB1c2goIjMuMy4yIik7Y29uc3QgRmxlPVF6YEBjaGFyc2V0ICJV''@;'; put 'put ''VEYtOCI7Omhvc3QsOnJvb3R7LS3OtDI6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHhzLCBjYWxjKDQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLc60Mzp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS14cywgY2FsYyg4ICogMXJlbSAvIHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDQ6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2Utc20sIGNhbGMoMTIgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLc60NTp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1tZCwgY2FsYygxNiAqIDFyZW0g''@;'; put 'put ''LyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tzrQ2OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLWxnLCBjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS3OtDc6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteGwsIGNhbGMoMzIg''@;'; put 'put ''KiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKX1bY2RzLWxheW91dH49IndyYXA6bm9uZSJde2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJde2ZsZXgtZ3JvdzoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduOnNo''@;'; put 'put ''cmluayJde2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50O2ZsZXgtZ3JvdzowIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWl0ZW1zOmZsZXgtc3RhcnQ7YWxpZ24taXRlbXM6Zmxl''@;'; put 'put ''eC1zdGFydDt3aWR0aDoxMDAlO21hcmdpbjowO21pbi1oZWlnaHQ6MH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dH49dmVydGljYWxdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5b''@;'; put 'put ''Y2RzLXRleHRde3dpZHRoOmluaXRpYWwhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmxlZnQiXXtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17YWxpZ24t''@;'; put 'put ''aXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246''@;'; put 'put ''Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJvcmRlcjpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJdPip7ZmxleC1ncm93''@;'; put 'put ''OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl0+''@;'; put 'put ''KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9y''@;'; put 'put ''aXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpv''@;'; put 'put ''bnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF17d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PXZlcnRpY2FsXSxbY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxh''@;'; put 'put ''eW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRp''@;'; put 'put ''Y2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0ib3JkZXI6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17bWFyZ2luLWJvdHRv''@;'; put 'put ''bTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99W2Nkcy1sYXlvdXR+''@;'; put 'put ''PWdyaWRde2Rpc3BsYXk6Z3JpZDthbGlnbi1pdGVtczpzdGFydDthbGlnbi1jb250ZW50OnN0YXJ0O2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQodmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtZ3JpZC1jb2xzLDEyKSwxZnIpO3dpZHRoOjEwMCV9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1s''@;'; put 'put ''YXlvdXQqPXJvd3Nde2dyaWQtdGVtcGxhdGUtcm93czpyZXBlYXQoMTIsYXV0byl9W2Nkcy1sYXlvdXR+PWdyaWRdPltjZHMtbGF5b3V0Kj1yb3dde2FsaWduLXNlbGY6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2FsaWduLWNvbnRlbnQ6c3Rh''@;'; put 'put ''cnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde2p1c3RpZnktY29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17anVzdGlmeS1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNo''@;'; put 'put ''O2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRl''@;'; put 'put ''cjtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfTo6c2xvdHRlZChbY2RzLWxheW91dH49ImRpc3BsYXk6c2NyZWVuLXJlYWRlci1vbmx5Il0pLFtjZHMtbGF5b3V0fj0iZGlzcGxheTpzY3JlZW4tcmVhZGVyLW9ubHkiXXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBv''@;'; put 'put ''cnRhbnQ7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Y2xpcC1wYXRoOmluc2V0KDUwJSk7cGFkZGluZzowO2JvcmRlcjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowO2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0iZ2FwOm5vbmUiXXtnYXA6MH1bY2RzLWxheW91dCo9ImdhcDp4eHMiXXtnYXA6dmFyKC0tzrQyKX1bY2RzLWxheW91dCo9ImdhcDp4cyJde2dhcDp2YXIoLS3OtDMpfVtjZHMtbGF5b3V0Kj0iZ2FwOnNtIl17Z2FwOnZhcigtLc60NCl9W2Nkcy1sYXlvdXQqPSJnYXA6''@;'; put 'put ''bWQiXXtnYXA6dmFyKC0tzrQ1KX1bY2RzLWxheW91dCo9ImdhcDpsZyJde2dhcDp2YXIoLS3OtDYpfVtjZHMtbGF5b3V0fj0icDpub25lIl17cGFkZGluZzowIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHhzIl17cGFkZGluZzp2YXIoLS3OtDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49''@;'; put 'put ''InA6eHMiXXtwYWRkaW5nOnZhcigtLc60MykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDpzbSJde3BhZGRpbmc6dmFyKC0tzrQ0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOm1kIl17cGFkZGluZzp2YXIoLS3OtDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06bWQiXXttYXJnaW46''@;'; put 'put ''dmFyKC0tzrQ1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOmxnIl17cGFkZGluZzp2YXIoLS3OtDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4cyJde3BhZGRpbmctdG9wOnZhcigtLc60MykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLc60MykhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0icC14OmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLc60NikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tzrQ2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS3OtDYpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIo''@;'; put 'put ''LS3OtDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDptZCJde3BhZGRpbmctbGVmdDp2YXIoLS3OtDUpIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6bGciXXtnYXA6dmFyKC0tzrQ2KX1bY2RzLWxheW91dH49InBAbWQ6bGciXXtw''@;'; put 'put ''YWRkaW5nOnZhcigtLc60NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4bCJde21hcmdpbjp2YXIoLS3OtDcpIWltcG9ydGFudH19W2Nkcy1sYXlvdXR+PWZpbGxde3dpZHRoOjEwMCUhaW1wb3J0YW50fSosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fVtjZHMt''@;'; put 'put ''bGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl0+OjpzbG90dGVkKCopLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPjo6c2xvdHRlZCgqKSxbY2RzLWxheW91dH49dmVydGljYWxdW2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbjpzdHJldGNoIl0+OjpzbG90dGVkKCope2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z246dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90''@;'; put 'put ''dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpz''@;'; put 'put ''bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJdKSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde21hcmdpbi1yaWdodDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpz''@;'; put 'put ''bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0''@;'; put 'put ''ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWlu''@;'; put 'put ''LXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9w''@;'; put 'put ''OmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIi''@;'; put 'put ''XSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWdu''@;'; put 'put ''QHNtOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduQHNtOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChb''@;'; put 'put ''Y2RzLWxheW91dCo9ImFsaWduQG1kOnZlcnRpY2FsLWNlbnRlciJdKXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0g''@;'; put 'put ''OjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXSl7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmJvdHRvbSJdKXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXSl7bWFyZ2luLWxl''@;'; put 'put ''ZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXSl7bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJh''@;'; put 'put ''bGlnbkBsZzpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2ZXJ0aWNhbC1jZW50ZXIiXSl7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJdKSxbY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5''@;'; put 'put ''b3V0Kj0iYWxpZ25AbGc6dG9wIl0pe21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpib3R0b20iXSl7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxd''@;'; put 'put ''IDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDoxNDQw''@;'; put 'put ''cHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl0pe21hcmdpbi10b3A6YXV0bzttYXJn''@;'; put 'put ''aW4tYm90dG9tOmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJdKXthbGlnbi1z''@;'; put 'put ''ZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnRvcCJdKXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9t''@;'; put 'put ''Il0pe21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25A''@;'; put 'put ''eGw6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0b319W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVy''@;'; put 'put ''Il0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl0pe21h''@;'; put 'put ''cmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpz''@;'; put 'put ''bG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jp''@;'; put 'put ''em9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJd''@;'; put 'put ''KSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSks''@;'; put 'put ''W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90''@;'; put 'put ''dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Ym90dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250''@;'; put 'put ''YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhzOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFu''@;'; put 'put ''dH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLWNl''@;'; put 'put ''bnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLWNl''@;'; put 'put ''bnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJdKXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhv''@;'; put 'put ''cml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5''@;'; put 'put ''b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXSl7YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduQG1kOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXSl7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXSl7YWxpZ24tc2VsZjpmbGV4LWVu''@;'; put 'put ''ZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXSl7bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXSl7bWFy''@;'; put 'put ''Z2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJdKXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0pLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJhbGlnbkBsZzpob3Jpem9udGFsLWNlbnRlciJdKXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOnRvcCJdKXthbGlnbi1zZWxmOmZs''@;'; put 'put ''ZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJdKXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJdKXtt''@;'; put 'put ''YXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6bGVmdCJdKXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PWhvcml6''@;'; put 'put ''b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdKSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVyIl0pe2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9u''@;'; put 'put ''dGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSksW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtY2VudGVyIl0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdo''@;'; put 'put ''dDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl0pe2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0gOjpzbG90dGVkKFtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90''@;'; put 'put ''dG9tIl0pe2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdIDo6c2xvdHRlZChbY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il0pe21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXSA6OnNsb3R0ZWQoW2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJhbGlnbkB4bDpsZWZ0Il0pe21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19W2Nkcy10ZXh0XXtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTttYXJnaW4t''@;'; put 'put ''dG9wOjA7bWFyZ2luLWJvdHRvbTowfVtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06OmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06OmJlZm9yZSxbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdOjphZnRlcixbY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWhvcml6''@;'; put 'put ''b250YWxdOjpiZWZvcmUsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF06OmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49dmVydGljYWxdOjpiZWZvcmV7ZGlzcGxheTpub25lfVtjZHMtdGV4dCo9ZGlzcGxheV0sW2Nkcy10ZXh0Kj1zZWN0aW9uXSxbY2RzLXRleHQqPXN1YnNl''@;'; put 'put ''Y3Rpb25dLFtjZHMtdGV4dCo9dGl0bGVde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29s''@;'; put 'put ''b3ItNDAwLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCwjMjEzMzNiKSl9W2Nkcy10ZXh0Kj1ib2R5XSxbY2RzLXRleHQqPW1lc3NhZ2VdLFtjZHMtdGV4dCo9c2Vjb25kYXJ5XXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwLHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItYmxhY2ssIzAwMCkpfVtjZHMtdGV4dCo9aW5saW5lXXt3aWR0aDphdXRvIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9W2Nkcy10ZXh0Kj1kaXNwbGF5XXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3Bs''@;'; put 'put ''YXktZm9udC1zaXplLGNhbGMoNDAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRp''@;'; put 'put ''c3BsYXktbGluZS1oZWlnaHQsMS4xZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nLC0uMDEyNWVtKX1bY2RzLXRleHQqPWRpc3BsYXldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dp''@;'; put 'put ''ZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQsMS4xZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdl''@;'; put 'put ''bSl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCwxLjFlbSkgLSAxZW0pLyAyKSkqLTEp''@;'; put 'put ''IC0gLjA0NGVtKX1bY2RzLXRleHQqPXRpdGxlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZSxjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFw''@;'; put 'put ''aHktdGl0bGUtZm9udC13ZWlnaHQsNDAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4xNjY2N2VtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGV0dGVyLXNwYWNpbmcsLS4wMDgz''@;'; put 'put ''MzNlbSl9W2Nkcy10ZXh0Kj10aXRsZV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4xNjY2N2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9dGl0bGVdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0g''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1saW5lLWhlaWdodCwxLjE2NjY3ZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zZWN0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplLGNhbGMoMjAg''@;'; put 'put ''KiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQsMS4y''@;'; put 'put ''ZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nLC0uMDFlbSl9W2Nkcy10ZXh0Kj1zZWN0aW9uXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2Fs''@;'; put 'put ''YygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMmVtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2VjdGlvbl06''@;'; put 'put ''OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXIt''@;'; put 'put ''aGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQsMS4yZW0pIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1z''@;'; put 'put ''dWJzZWN0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplLGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9u''@;'; put 'put ''LWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQsMS4yNWVtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZywtLjAxMjVl''@;'; put 'put ''bSl9W2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25dOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMo''@;'; put 'put ''KCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSAr''@;'; put 'put ''IGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuMjVlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWJvZHlde2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0''@;'; put 'put ''LDQwMCk7Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSxjYWxjKDE0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2lu''@;'; put 'put ''ZywtLjAxNDI4NmVtKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3ZW0pfVtjZHMtdGV4dCo9Ym9keV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNh''@;'; put 'put ''bGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4xZW0pfVtjZHMtdGV4dCo9Ym9keV06OmFm''@;'; put 'put ''dGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVp''@;'; put 'put ''Z2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQsMS40Mjg1N2VtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfWJvZHlbY2RzLXRleHQq''@;'; put 'put ''PWJvZHldOjphZnRlcixib2R5W2Nkcy10ZXh0Kj1ib2R5XTo6YmVmb3Jle2NvbnRlbnQ6bm9uZX1bY2RzLXRleHQqPW1lc3NhZ2Vde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXNpemUsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC13ZWlnaHQsY2FsYyg0MDAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdl''@;'; put 'put ''LWxpbmUtaGVpZ2h0LDEuMjVlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGV0dGVyLXNwYWNpbmcsLS4wMTI1ZW0pfVtjZHMtdGV4dCo9bWVzc2FnZV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6''@;'; put 'put ''MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCwxLjI1ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9''@;'; put 'put ''W2Nkcy10ZXh0Kj1tZXNzYWdlXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''dHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCwxLjI1ZW0pIC0gMWVtKS8gMikpKi0xKSAt''@;'; put 'put ''IC4wNDRlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnlde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSxjYWxjKDEzICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0LDQwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCwxLjIzMDc3ZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0''@;'; put 'put ''dGVyLXNwYWNpbmcsLS4wMDc2OTJlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1''@;'; put 'put ''ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCwxLjIzMDc3ZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnldOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lk''@;'; put 'put ''dGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBo''@;'; put 'put ''eS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dH49bGlua117Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LWxpbmstY29sb3IsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwjMDA3OWFkKSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudH1bY2RzLXRl''@;'; put 'put ''eHR+PWxpbmtdOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLEhpZ2hsaWdodCBzb2xpZCAycHgpO291dGxpbmUtb2Zmc2V0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS1vZmZzZXQsMXB4KX1bY2RzLXRl''@;'; put 'put ''eHR+PWxpbmtdOmhvdmVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDAsIzAwNjA4YSkpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGlj''@;'; put 'put ''XSl7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZCx2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTYwMCwjM2I0MGNlKSkhaW1wb3J0YW50fVtjZHMtdGV4dH49bGlua106dmlzaXRlZDpub3QoW2Nkcy10ZXh0fj1zdGF0aWNdKTpob3Zl''@;'; put 'put ''cntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNzAwLCMyNDI5YzIpKSFpbXBvcnRhbnR9QG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7W2Nkcy10''@;'; put 'put ''ZXh0PWxpbmtdOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLXdlYmtpdCw1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3IpfX1bY2RzLXRleHR+PWNvZGVde2NvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwjZTAyMjAwKSk7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxLjFlbX1bY2RzLWRpdmlkZXJde2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCxjYWxjKDEgKiAxcmVt''@;'; put 'put ''IC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCwjY2JkNGQ4KSkgMCAwIDAgdmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1ib3JkZXItd2lkdGgtMTAwLGNhbGMoMSAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgaW5zZXR9W2Nkcy10ZXh0fj1saWdodF17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWxpZ2h0LDMwMCkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtdGV4dH49anVzdGlmeV17dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1bY2RzLXRleHR+PWxlZnRde3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1yaWdodF17dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1jZW50ZXJde3RleHQtYWxp''@;'; put 'put ''Z246Y2VudGVyIWltcG9ydGFudH1bY2RzLXRleHR+PWxoZV17cGFkZGluZzouMDVweCAwfVtjZHMtdGV4dH49bGhlXTo6YmVmb3Jle2NvbnRlbnQ6IiI7bWFyZ2luLXRvcDotLjEyNGVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy10ZXh0fj1saGVdOjphZnRlcntjb250ZW50OiIiO21h''@;'; put 'put ''cmdpbi1ib3R0b206LS4yMjFlbTtkaXNwbGF5OmJsb2NrO2hlaWdodDowfVtjZHMtdGV4dCo9aDJdLFtjZHMtdGV4dCo9aDNde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBz''@;'; put 'put ''YW5zLXNlcmlmKTtmb250LXNpemU6MS40cmVtO2ZvbnQtd2VpZ2h0OjIwMDtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwKTtsaW5lLWhlaWdodDoxLjcxNDNlbTtsZXR0ZXItc3BhY2luZzotLjAxNzg1N2VtfVtjZHMtdGV4dCo9aDJdOjpiZWZvcmV7Y29udGVu''@;'; put 'put ''dDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygoMS43MTQzZW0gLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgy''@;'; put 'put ''XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRl''@;'; put 'put ''ci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCgxLjcxNDNlbSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDNde2ZvbnQtc2l6ZToxLjFyZW07bGluZS1oZWlnaHQ6MS4wOTA5ZW07bGV0''@;'; put 'put ''dGVyLXNwYWNpbmc6LS4wMTM2MzZlbX1bY2RzLXRleHQqPWgzXTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNh''@;'; put 'put ''bGMoKDEuMDkwOWVtIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1oM106OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1o''@;'; put 'put ''ZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygoMS4wOTA5ZW0gLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX06aG9z''@;'; put 'put ''dHthbGw6aW5pdGlhbDtkaXNwbGF5OmJsb2NrO3Zpc2liaWxpdHk6aW5oZXJpdDtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTtjb250YWluOmxheW91dDtib3gtc2l6''@;'; put 'put ''aW5nOmJvcmRlci1ib3ghaW1wb3J0YW50Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lIWltcG9ydGFudH0qLDphZnRlciw6YmVmb3Jle2JveC1zaXppbmc6aW5oZXJpdCFpbXBvcnRhbnR9c2xvdHtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICJD''@;'; put 'put ''bGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTtkaXNwbGF5OmNvbnRlbnRzIWltcG9ydGFudH06OnNsb3R0ZWQoKil7Zm9udC1mYW1pbHk6aW5oZXJpdDtib3gtc2l6aW5nOmluaGVyaXR9OjpzbG90dGVkKCopOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXR5cG9ncmFwaHktY29sb3ItMjAwLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCwjNGY2MTY5KSl9Omhvc3QoW19pcy1hbmNob3JdKSw6aG9zdChbcm9sZT1idXR0b25dKXtjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnR9Omhvc3QoW19pcy1hbmNob3JdKSA6OnNs''@;'; put 'put ''b3R0ZWQoKiksOmhvc3QoW3JvbGU9YnV0dG9uXSkgOjpzbG90dGVkKCope2N1cnNvcjpwb2ludGVyIWltcG9ydGFudH06aG9zdChbcm9sZT1idXR0b25dW2Rpc2FibGVkXSl7Y3Vyc29yOm5vdC1hbGxvd2VkIWltcG9ydGFudH06aG9zdChbcm9sZT1idXR0b25dW2Rpc2FibGVkXSkgOjpzbG90''@;'; put 'put ''dGVkKCope2N1cnNvcjpub3QtYWxsb3dlZCFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdChbaGlkZGVuXSksW2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH06aG9zdChbaGlkZGVuKj1mYWxzZV0pe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fTpob3N0KFtyb2xlPWRp''@;'; put 'put ''YWxvZ11baGlkZGVuXSksOmhvc3QoW3JvbGU9ZGlhbG9nXVtoaWRkZW5dKSA6OnNsb3R0ZWQoKil7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fTpob3N0KFtyb2xlPWRpYWxvZ11baGlkZGVuKj1mYWxzZV0pLDpob3N0KFtyb2xlPWRpYWxvZ11b''@;'; put 'put ''aGlkZGVuKj1mYWxzZV0pIDo6c2xvdHRlZCgqKXt2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50fTpob3N0KFtfZm9jdXNlZF0pIC5pbnB1dCw6aG9zdChbX2ZvY3VzZWRdKSBbZm9jdXNhYmxlXSw6aG9zdChbdGFiaW5kZXg9IjAiXTpmb2N1cyksOmhvc3QoW3RhYmluZGV4PSIwIl06Zm9j''@;'; put 'put ''dXMpIFtmb2N1c2FibGVdLFt0YWJpbmRleD0iMCJdW2ZvY3VzYWJsZV06Zm9jdXN7b3V0bGluZTpIaWdobGlnaHQgc29saWQgMnB4O291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rp''@;'; put 'put ''b24tb3V0bGluZS1vZmZzZXQsMXB4KX1gO2Z1bmN0aW9uIGNVKGwpe3JldHVybmBjYWxjKCgke2x9IC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkgKiAxcmVtKWB9Y29uc3QgTk9lPShsLGMpPT4ibWV0aG9kIj09PWMua2luZCYmYy5kZXNjcmlwdG9yJiYhKCJ2YWx1ZSJpbiBjLmRlc2NyaXB0''@;'; put 'put ''b3IpP3suLi5jLGZpbmlzaGVyKGEpe2EuY3JlYXRlUHJvcGVydHkoYy5rZXksbCl9fTp7a2luZDoiZmllbGQiLGtleTpTeW1ib2woKSxwbGFjZW1lbnQ6Im93biIsZGVzY3JpcHRvcjp7fSxvcmlnaW5hbEtleTpjLmtleSxpbml0aWFsaXplcigpeyJmdW5jdGlvbiI9PXR5cGVvZiBjLmluaXRp''@;'; put 'put ''YWxpemVyJiYodGhpc1tjLmtleV09Yy5pbml0aWFsaXplci5jYWxsKHRoaXMpKX0sZmluaXNoZXIoYSl7YS5jcmVhdGVQcm9wZXJ0eShjLmtleSxsKX19LFZPZT0obCxjLGEpPT57Yy5jb25zdHJ1Y3Rvci5jcmVhdGVQcm9wZXJ0eShhLGwpfTtmdW5jdGlvbiBIbGUobCl7cmV0dXJuKGMsYSk9''@;'; put 'put ''PnZvaWQgMCE9PWE/Vk9lKGwsYyxhKTpOT2UobCxjKX1mdW5jdGlvbiBObGUobCxjKXtzd2l0Y2goYyYmYy50eXBlKXtjYXNlIEFycmF5OmNhc2UgT2JqZWN0OnJldHVybntyZWZsZWN0OiExLC4uLmN9O2Nhc2UgU3RyaW5nOnJldHVybntyZWZsZWN0OiEwLGF0dHJpYnV0ZTpSZyhsKSxjb252''@;'; put 'put ''ZXJ0ZXI6e3RvQXR0cmlidXRlOmE9PmF8fG51bGx9LC4uLmN9O2Nhc2UgTnVtYmVyOnJldHVybntyZWZsZWN0OiEwLGF0dHJpYnV0ZTpSZyhsKSwuLi5jfTtjYXNlIEJvb2xlYW46cmV0dXJue3JlZmxlY3Q6ITAsYXR0cmlidXRlOlJnKGwpLGNvbnZlcnRlcjp7dG9BdHRyaWJ1dGU6YT0+YT8i''@;'; put 'put ''IjpudWxsLGZyb21BdHRyaWJ1dGU6YT0+ZnVuY3Rpb24ga09lKGwpe3JldHVybiBudWxsIT1sJiYiIitsIT0iZmFsc2UifShhKX0sLi4uY307Y2FzZSBEYXRlOnJldHVybntyZWZsZWN0OiExLGNvbnZlcnRlcjp7ZnJvbUF0dHJpYnV0ZTphPT5uZXcgRGF0ZShhKX0sLi4uY307ZGVmYXVsdDpy''@;'; put 'put ''ZXR1cm57Li4uY319fWZ1bmN0aW9uIExzKGwpe3JldHVybihjLGEpPT4obD8ucmVxdWlyZWQmJmZ1bmN0aW9uIEJPZShsLGMsYSl7Y29uc3QgZj1sLmZpcnN0VXBkYXRlZDtsLmZpcnN0VXBkYXRlZD1mdW5jdGlvbihkKXtpZihhJiZhLnJlcXVpcmVkJiZjNCh0aGlzW2NdKSl7Y29uc3QgaD1h''@;'; put 'put ''LnJlcXVpcmVkTWVzc2FnZXx8ZnVuY3Rpb24obT0id2FybmluZyIsXyxPKXtjb25zdCBYPU8udG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm5gJHtqb2UobSl9OiAke199IGlzIHJlcXVpcmVkIHRvIHVzZSAke1h9IGNvbXBvbmVudC4gU2V0IHRoZSBKUyBQcm9wZXJ0eSBvciBIVE1MIEF0dHJp''@;'; put 'put ''YnV0ZS5cblxuYCsoRm9lKCk/YEFuZ3VsYXI6IDwke1h9IFske199XT0iLi4uIj48LyR7WH0+XG5gOiIiKSsoTm9lKCk/YFZ1ZTogPCR7WH0gOiR7X309Ii4uLiI+PC8ke1h9PlxuYDoiIikrKEhvZSgpP2BSZWFjdDogPCR7ZnVuY3Rpb24gQUFlKGwpe3JldHVybiBqb2UoZnVuY3Rpb24geEFl''@;'; put 'put ''KGwpe3JldHVybiBsLnNwbGl0KCItIikubWFwKChjLGEpPT5hP2MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYy5zbGljZSgxKS50b0xvd2VyQ2FzZSgpOmMpLmpvaW4oIiIpfShsKSl9KFgpfSAke2FlPV8sYWUuc3RhcnRzV2l0aCgiYXJpYSIpP1JnKGFlKTphZX09ey4uLn0gLz5cbmA6IiIp''@;'; put 'put ''K2BIVE1MOiA8JHtYfSAke1JnKF8pfT0iLi4uIj48LyR7WH0+XG5KYXZhU2NyaXB0OiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcke1h9JykuJHtffSA9ICcuLi4nO1xuXG5gO3ZhciBhZX0oYS5yZXF1aXJlZCxjLHRoaXMudGFnTmFtZSk7aWYoImVycm9yIj09PWEucmVxdWlyZWQpdGhyb3cg''@;'; put 'put ''RXJyb3IoaCk7TGcud2FybihoLHRoaXMpfWYmJmYuY2FsbCh0aGlzLGQpfX0oYyxhLGwpLEhsZShObGUoYSxsKSkoYyxhKSl9ZnVuY3Rpb24gVmxlKGwpe3JldHVybihjLGEpPT57Y29uc3QgZj1ObGUoYSxsKTtyZXR1cm4gZiYmKGYucmVmbGVjdD0hIWw/LnJlZmxlY3QmJmwucmVmbGVjdCxm''@;'; put 'put ''LnJlZmxlY3QmJiFsPy5hdHRyaWJ1dGUmJihmLmF0dHJpYnV0ZT0iXyIrUmcoYSkpKSxIbGUoZikoYyxhKX19dmFyIE9oLFVPZT1RemBAa2V5ZnJhbWVzIGZhZGVJbkFuZE91dHswJSx0b3tvcGFjaXR5OjB9NzUle29wYWNpdHk6MX19Omhvc3R7LS1jb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxh''@;'; put 'put ''eTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjAp''@;'; put 'put ''KSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtt''@;'; put 'put ''YXJnaW46MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmlsbDp2YXIoLS1jb2xvcik7Y29sb3I6dmFyKC0tY29sb3IpO2NvbnRhaW46c3RyaWN0O2N1cnNvcjppbmhlcml0fXN2Z3tkaXNwbGF5OmJsb2NrfTpob3N0KFtzaXplKj14c10pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUs''@;'; put 'put ''Y2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSxjYWxjKDggKiAx''@;'; put 'put ''cmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKX06aG9zdChbc2l6ZSo9c21dKXtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNh''@;'; put 'put ''bGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICog''@;'; put 'put ''MXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj1tZF0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTks''@;'; put 'put ''Y2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQg''@;'; put 'put ''KiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTksY2FsYygyNCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPWxnXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''MTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSxjYWxjKDM2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2Fs''@;'; put 'put ''YygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXhsXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMixjYWxjKDQ4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''MTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXh4bF0pe2hlaWdodDpjYWxjKHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMTMsY2FsYyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSk7d2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl''@;'; put 'put ''LTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpO21pbi13aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMsY2Fs''@;'; put 'put ''Yyg2NCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSl9Omhvc3QoW3NpemUqPWZpdF0pe2hlaWdodDphdXRvO3dpZHRoOmF1dG87Y29udGFpbjps''@;'; put 'put ''YXlvdXR9Omhvc3QoW3N0YXR1cz1zdWNjZXNzXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwLCAjNDI4MTBlKSl9Omhvc3QoW3N0YXR1cz1kYW5nZXJdKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0''@;'; put 'put ''dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbc3RhdHVzPXdhcm5pbmddKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkp''@;'; put 'put ''fTpob3N0KFtzdGF0dXM9aW5mb10pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9Omhvc3QoW3N0YXR1cz1uZXV0cmFsXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWws''@;'; put 'put ''IHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCwgIzRmNjE2OSkpfTpob3N0KFtpbnZlcnNlXSl7LS1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDAsICNjYmQ0ZDgpfTpob3N0KFtkaXJlY3Rpb249dXBdKXt0cmFuc2Zvcm06cm90YXRl''@;'; put 'put ''KDApfTpob3N0KFtkaXJlY3Rpb249ZG93bl0pe3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX06aG9zdChbZGlyZWN0aW9uPXJpZ2h0XSl7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9Omhvc3QoW2RpcmVjdGlvbj1sZWZ0XSl7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTpob3N0KFtmbGlwPWhv''@;'; put 'put ''cml6b250YWxdKXt0cmFuc2Zvcm06c2NhbGUoLTEpIHJvdGF0ZVgoMTgwZGVnKX06aG9zdChbZmxpcD12ZXJ0aWNhbF0pe3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWSgxODBkZWcpfS5hbGVydCwuYmFkZ2V7ZmlsbDp2YXIoLS1iYWRnZS1jb2xvcix2YXIoLS1jZHMtYWxpYXMtc3RhdHVz''@;'; put 'put ''LWRhbmdlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsI2UwMjIwMCkpKX06aG9zdChbYmFkZ2U9c3VjY2Vzc10pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCwgIzQyODEwZSkpfTpo''@;'; put 'put ''b3N0KFtiYWRnZT1kYW5nZXJdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsICNlMDIyMDApKX06aG9zdChbYmFkZ2UqPXdhcm5pbmddKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0''@;'; put 'put ''dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0KFtiYWRnZT1pbmhlcml0XSl7LS1iYWRnZS1jb2xvcjpjdXJyZW50Q29sb3J9Omhvc3QoW2JhZGdlPWluZm9dKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0''@;'; put 'put ''dXMtaW5mbywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlhZCkpfTpob3N0KFtiYWRnZT1uZXV0cmFsXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCwgIzRm''@;'; put 'put ''NjE2OSkpfTpob3N0KFtiYWRnZT1pbmhlcml0LXRyaWFuZ2xlXSl7LS1iYWRnZS1jb2xvcjpjdXJyZW50Q29sb3J9Omhvc3QoW2JhZGdlXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlciwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAw''@;'; put 'put ''LCAjZTAyMjAwKSl9Omhvc3QoW2JhZGdlPXN1Y2Nlc3NdW2ludmVyc2VdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2VzcywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDAsICM0MjgxMGUpKX06aG9zdChbYmFkZ2UqPXdhcm5pbmddW2ludmVyc2Vd''@;'; put 'put ''KXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCwgI2EzNjUwMCkpfTpob3N0KFtiYWRnZSo9aW5oZXJpdF1baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6Y3VycmVudENvbG9yfTpob3N0KFti''@;'; put 'put ''YWRnZT1pbmZvXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8sIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDAsICMwMDc5YWQpKX0uY2RzLWludGVybmFsLWRvdC0xe2FuaW1hdGlvbjpmYWRlSW5BbmRPdXQgMS44cyBlYXNlLWluIDBz''@;'; put 'put ''IGluZmluaXRlfS5jZHMtaW50ZXJuYWwtZG90LTJ7YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2Utb3V0IC40MjJzIGluZmluaXRlfS5jZHMtaW50ZXJuYWwtZG90LTN7YW5pbWF0aW9uOmZhZGVJbkFuZE91dCAxLjhzIGVhc2Utb3V0IC42NzVzIGluZmluaXRlfUBtZWRpYSAocHJl''@;'; put 'put ''ZmVycy1yZWR1Y2VkLW1vdGlvbil7LmNkcy1pbnRlcm5hbC1kb3QtMSwuY2RzLWludGVybmFsLWRvdC0yLC5jZHMtaW50ZXJuYWwtZG90LTN7YW5pbWF0aW9uOm5vbmV9fWA7ZnVuY3Rpb24gR09lKGwsYyl7bGV0IGE9IiI7c3dpdGNoKGZ1bmN0aW9uIFpPZShsKXtzd2l0Y2goITApe2Nhc2Ug''@;'; put 'put ''YzQobCk6cmV0dXJuIE9oLk5pbFNpemVWYWx1ZTtjYXNlIGZ1bmN0aW9uIEJsZShsKXtyZXR1cm5bInh4cyIsInhzIiwic20iLCJtZCIsImxnIiwieGwiLCJ4eGwiXS5pbmRleE9mKGwpPi0xfShsKTpyZXR1cm4gT2guVmFsaWRTaXplU3RyaW5nO2Nhc2UgZnVuY3Rpb24gQW9lKGwpe3JldHVy''@;'; put 'put ''biB3eihsKSYmIXhvZShsLnRyaW0oKSkmJitsPT0rbH0obCk6cmV0dXJuIE9oLlZhbGlkTnVtZXJpY1N0cmluZztkZWZhdWx0OnJldHVybiBPaC5CYWRTaXplVmFsdWV9fShmdW5jdGlvbiBZT2UobCl7cmV0dXJuIGM0KGwpPyIiOmZ1bmN0aW9uIFRBZShsLGMsYT0iIil7Y29uc3QgZj1sLnNw''@;'; put 'put ''bGl0KCIgIiksZD0iIj09PWE/Zi5maWx0ZXIoaD0+aCE9PWMpOmYubWFwKGg9Pmg9PT1jP2E6aCk7cmV0dXJuIGQubGVuZ3RoPjA/ZC5qb2luKCIgIik6IiJ9KGwsImZpdCIpfShjKSkpe2Nhc2UgT2guVmFsaWROdW1lcmljU3RyaW5nOnJldHVybiBhPWNVKHBhcnNlSW50KGMpKSx2b2lkIGZ1''@;'; put 'put ''bmN0aW9uIEZPZShsLC4uLmMpe2MuZm9yRWFjaCgoW2EsZl0pPT57bC5zdHlsZVthXT1mfSl9KGwsLi4uZnVuY3Rpb24gV09lKGwsYyl7cmV0dXJuIUhDKGwpJiZsLmluZGV4T2YoImZpdCIpPi0xP1tbIndpZHRoIiwiYXV0byJdLFsiaGVpZ2h0IiwiYXV0byJdLFsibWluLXdpZHRoIixjXSxb''@;'; put 'put ''Im1pbi1oZWlnaHQiLGNdXTpbWyJ3aWR0aCIsY10sWyJoZWlnaHQiLGNdLFsibWluLXdpZHRoIixjXSxbIm1pbi1oZWlnaHQiLGNdXX0oYyxhKSk7Y2FzZSBPaC5WYWxpZFNpemVTdHJpbmc6Y2FzZSBPaC5OaWxTaXplVmFsdWU6cmV0dXJuIHZvaWQgZnVuY3Rpb24gSE9lKGwsLi4uYyl7Yy5m''@;'; put 'put ''b3JFYWNoKGE9PntsLnN0eWxlW2FdPSIifSl9KGwsIndpZHRoIiwiaGVpZ2h0IiwibWluLXdpZHRoIiwibWluLWhlaWdodCIpO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBmVShsKXtyZXR1cm4gbC5iYWRnZSYmKCJpbmhlcml0LXRyaWFuZ2xlIj09PWwuYmFkZ2V8fCJ3YXJuaW5nLXRyaWFu''@;'; put 'put ''Z2xlIj09PWwuYmFkZ2UpfSFmdW5jdGlvbihsKXtsLkJhZFNpemVWYWx1ZT0iYmFkLXZhbHVlIixsLlZhbGlkU2l6ZVN0cmluZz0idmFsdWUtaXMtc3RyaW5nIixsLlZhbGlkTnVtZXJpY1N0cmluZz0idmFsdWUtaXMtbnVtZXJpYyIsbC5OaWxTaXplVmFsdWU9InZhbHVlLWlzLW5pbCJ9KE9o''@;'; put 'put ''fHwoT2g9e30pKTtjbGFzcyBTZCBleHRlbmRzIFh2e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zaGFwZT0idW5rbm93biIsdGhpcy5zb2xpZD0hMSx0aGlzLmludmVyc2U9ITF9c3RhdGljIGdldCBzdHlsZXMoKXtyZXR1cm5bRmxlLFVPZV19Z2V0IHNoYXBlKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3NoYXBlfXNldCBzaGFwZShjKXtpZihmdW5jdGlvbiB2QWUobCxjKXtyZXR1cm4hYzQobCkmJk9vZShsLGMpfShjLHRoaXMuX3NoYXBlKSl7Y29uc3QgYT10aGlzLl9zaGFwZTt0aGlzLl9zaGFwZT1jLHRoaXMucmVxdWVzdFVwZGF0ZSgic2hhcGUiLGEpfX1nZXQgc2l6''@;'; put 'put ''ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKGMpe2lmKGZ1bmN0aW9uIGdBZShsLGMpe3JldHVybiBmdW5jdGlvbiBtQWUobCl7cmV0dXJuIENEKFN0cmluZyxsKXx8SEMobCl9KGwpJiZPb2UobCxjKX0oYyx0aGlzLl9zaXplKSl7Y29uc3QgYT10aGlzLl9zaXplO3RoaXMuX3NpemU9''@;'; put 'put ''YyxHT2UodGhpcyxjKSx0aGlzLnJlcXVlc3RVcGRhdGUoInNpemUiLGEpfX11cGRhdGVkKGMpe2lmKGMuaGFzKCJpbm5lck9mZnNldCIpJiZ0aGlzLmlubmVyT2Zmc2V0PjApe2NvbnN0IGE9Y1UoLTEqdGhpcy5pbm5lck9mZnNldCksZj1gY2FsYygxMDAlICsgJHtjVSgyKnRoaXMuaW5uZXJP''@;'; put 'put ''ZmZzZXQpfSlgO3RoaXMuc3ZnLnN0eWxlLndpZHRoPWYsdGhpcy5zdmcuc3R5bGUuaGVpZ2h0PWYsdGhpcy5zdmcuc3R5bGUubWFyZ2luPWAke2F9IDAgMCAke2F9YH19Zmlyc3RVcGRhdGVkKGMpe2lmKHN1cGVyLmZpcnN0VXBkYXRlZChjKSx0aGlzLmlzQ29ubmVjdGVkKXtsZXQgYT0idW5r''@;'; put 'put ''bm93biI7dGhpcy5zdWJzY3JpcHRpb249bnUuc3RhdGVVcGRhdGVzLnN1YnNjcmliZShmPT57Imljb25SZWdpc3RyeSI9PT1mLmtleSYmamEucmVnaXN0cnlbdGhpcy5zaGFwZV0mJmEhPT10aGlzLnNoYXBlJiYoYT10aGlzLnNoYXBlLHRoaXMucmVxdWVzdFVwZGF0ZSgic2hhcGUiKSl9KX19''@;'; put 'put ''ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfXJlbmRlcigpe3JldHVybiB3eihqYS5yZWdpc3RyeVt0aGlzLnNoYXBlXSk/bFVgPHNwYW4gLmlubmVySFRNTD0iJHtqYS5yZWdpc3RyeVt0''@;'; put 'put ''aGlzLnNoYXBlXX0iPjwvc3Bhbj5gOklPZWA8c3ZnIC5pbm5lckhUTUw9IiR7ZnVuY3Rpb24gS09lKGwpe2NvbnN0IGM9amEucmVnaXN0cnlbbC5zaGFwZV0/P2phLnJlZ2lzdHJ5LnVua25vd247bGV0IGE9bC5zb2xpZCYmYy5zb2xpZD9jLnNvbGlkOmMub3V0bGluZTtyZXR1cm4gbC5iYWRn''@;'; put 'put ''ZSYmIWZVKGwpJiYoYT1sLnNvbGlkP2Muc29saWRCYWRnZWQ/P2E6Yy5vdXRsaW5lQmFkZ2VkPz9hKSxmVShsKSYmKGE9bC5zb2xpZD9jLnNvbGlkQWxlcnRlZD8/YTpjLm91dGxpbmVBbGVydGVkPz9hKSxhfSh0aGlzKStmdW5jdGlvbiAkT2UobCl7bGV0IGM9IiI7cmV0dXJuIGwuYmFkZ2Um''@;'; put 'put ''JmZVKGwpP2M9JzxwYXRoIGQ9Ik0yNi44NSAxLjE0TDIxLjEzIDExYTEuMjggMS4yOCAwIDAwMS4xIDJoMTEuNDVhMS4yOCAxLjI4IDAgMDAxLjEtMmwtNS43Mi05Ljg2YTEuMjggMS4yOCAwIDAwLTIuMjEgMHoiIGNsYXNzPSJhbGVydCIgLz4nOmwuYmFkZ2UmJihjPSc8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJiYWRnZSIgLz4nKSxjfSh0aGlzKX0iIHZpZXdCb3g9IjAgMCAzNiAzNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zdmc+YH19T3QoW0xzKHt0eXBlOlN0cmluZ30pXSxTZC5wcm90b3R5cGUs''@;'; put 'put ''InNoYXBlIixudWxsKSxPdChbTHMoe3R5cGU6U3RyaW5nfSldLFNkLnByb3RvdHlwZSwic2l6ZSIsbnVsbCksT3QoW0xzKHt0eXBlOlN0cmluZ30pXSxTZC5wcm90b3R5cGUsImRpcmVjdGlvbiIsdm9pZCAwKSxPdChbTHMoe3R5cGU6U3RyaW5nfSldLFNkLnByb3RvdHlwZSwiZmxpcCIsdm9p''@;'; put 'put ''ZCAwKSxPdChbTHMoe3R5cGU6Qm9vbGVhbn0pXSxTZC5wcm90b3R5cGUsInNvbGlkIix2b2lkIDApLE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sU2QucHJvdG90eXBlLCJzdGF0dXMiLHZvaWQgMCksT3QoW0xzKHt0eXBlOkJvb2xlYW59KV0sU2QucHJvdG90eXBlLCJpbnZlcnNlIix2b2lkIDAp''@;'; put 'put ''LE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sU2QucHJvdG90eXBlLCJiYWRnZSIsdm9pZCAwKSxPdChbVmxlKHt0eXBlOk51bWJlcn0pXSxTZC5wcm90b3R5cGUsImlubmVyT2Zmc2V0Iix2b2lkIDApLE90KFtmdW5jdGlvbiB6T2UobCxjKXtyZXR1cm4oKHtmaW5pc2hlcjpsLGRlc2NyaXB0b3I6''@;'; put 'put ''Y30pPT4oYSxmKT0+e3ZhciBkO2lmKHZvaWQgMD09PWYpe2NvbnN0IGg9bnVsbCE9PShkPWEub3JpZ2luYWxLZXkpJiZ2b2lkIDAhPT1kP2Q6YS5rZXksbT1udWxsIT1jP3traW5kOiJtZXRob2QiLHBsYWNlbWVudDoicHJvdG90eXBlIixrZXk6aCxkZXNjcmlwdG9yOmMoYS5rZXkpfTp7Li4u''@;'; put 'put ''YSxrZXk6aH07cmV0dXJuIG51bGwhPWwmJihtLmZpbmlzaGVyPWZ1bmN0aW9uKF8pe2woXyxoKX0pLG19e2NvbnN0IGg9YS5jb25zdHJ1Y3Rvcjt2b2lkIDAhPT1jJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxmLGMoZikpLGw/LihoLGYpfX0pKHtkZXNjcmlwdG9yOmE9Pntjb25zdCBmPXtn''@;'; put 'put ''ZXQoKXt2YXIgZCxoO3JldHVybiBudWxsIT09KGg9bnVsbD09PShkPXRoaXMucmVuZGVyUm9vdCl8fHZvaWQgMD09PWQ/dm9pZCAwOmQucXVlcnlTZWxlY3RvcihsKSkmJnZvaWQgMCE9PWg/aDpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYoYyl7Y29uc3QgZD0ic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIGE/U3ltYm9sKCk6Il9fIithO2YuZ2V0PWZ1bmN0aW9uKCl7dmFyIGgsbTtyZXR1cm4gdm9pZCAwPT09dGhpc1tkXSYmKHRoaXNbZF09bnVsbCE9PShtPW51bGw9PT0oaD10aGlzLnJlbmRlclJvb3QpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnF1ZXJ5U2VsZWN0b3IobCkp''@;'; put 'put ''JiZ2b2lkIDAhPT1tP206bnVsbCksdGhpc1tkXX19cmV0dXJuIGZ9fSl9KCJzdmciKV0sU2QucHJvdG90eXBlLCJzdmciLHZvaWQgMCksb2xlKCJjZHMtaWNvbiIsU2QpO2NsYXNzIFhPZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1o''@;'; put 'put ''b3N0Q29ubmVjdGVkKCl7dmFyIGM9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7eWllbGQgYy5ob3N0LnVwZGF0ZUNvbXBsZXRlLGMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixhPT5jLmVtdWxhdGVBY3RpdmUoYSkpLGMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv''@;'; put 'put ''d24iLGE9PmMuZW11bGF0ZUFjdGl2ZShhKSksYy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwoKT0+Yy5lbXVsYXRlSW5hY3RpdmUoKSksYy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5jLmVtdWxhdGVJbmFjdGl2ZSgpKSxjLmhvc3QuYWRkRXZlbnRMaXN0ZW5lcigi''@;'; put 'put ''bW91c2V1cCIsKCk9PmMuZW11bGF0ZUluYWN0aXZlKCkpfSkoKX1lbXVsYXRlQWN0aXZlKGMpe3RoaXMuaG9zdC5kaXNhYmxlZHx8dGhpcy5ob3N0Py5zZXRBdHRyaWJ1dGUoImNkcy1hY3RpdmUiLCIiKSwiU3BhY2UiPT09Yy5jb2RlJiZjLnRhcmdldD09PXRoaXMuaG9zdCYmYy5wcmV2ZW50''@;'; put 'put ''RGVmYXVsdCgpfWVtdWxhdGVJbmFjdGl2ZSgpe3RoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoImNkcy1hY3RpdmUiKX19Y2xhc3MgUU9le2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXsodGhpcy5ob3N0Lmhh''@;'; put 'put ''c0F0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIpfHx0aGlzLmhvc3QuYXJpYUNvbnRyb2xzKSYmKHRoaXMuaG9zdC5hcmlhSGFzUG9wdXA9InRydWUiLHRoaXMuaG9zdC5hcmlhRXhwYW5kZWQ9ImZhbHNlIil9fWNsYXNzIHREZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0aGlzLmhvc3Qu''@;'; put 'put ''YWRkQ29udHJvbGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPT10aGlzLmhvc3QuZGlzYWJsZWQmJih0aGlzLmhvc3QuYXJpYURpc2FibGVkPXRoaXMuaG9zdC5kaXNhYmxlZCksdGhpcy5ob3N0LnJlYWRvbmx5JiYodGhpcy5ob3N0LmFyaWFEaXNhYmxlZD1udWxsKX19Y2xhc3MgckRl''@;'; put 'put ''e2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7bnVsbCE9dGhpcy5ob3N0LnByZXNzZWQmJih0aGlzLmhvc3QuYXJpYVByZXNzZWQ9dGhpcy5ob3N0LnByZXNzZWQ/InRydWUiOiJmYWxzZSIpLHRoaXMuaG9zdC5y''@;'; put 'put ''ZWFkb25seSYmKHRoaXMuaG9zdC5hcmlhUHJlc3NlZD1udWxsKX19Y2xhc3Mgb0Rle2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXt0aGlzLmhvc3QudGFiSW5kZXg9MH1ob3N0VXBkYXRlZCgpe3RoaXMuaG9z''@;'; put 'put ''dC5yb2xlPXRoaXMuaG9zdC5yZWFkb25seT9udWxsOiJidXR0b24iLHRoaXMuaG9zdC50YWJJbmRleD10aGlzLmhvc3QuZGlzYWJsZWQ/LTE6MCx0aGlzLmhvc3QucmVhZG9ubHkmJnRoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iil9fWNsYXNzIGxEZXtjb25zdHJ1Y3Rvcihj''@;'; put 'put ''KXt0aGlzLmhvc3Q9Yyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1nZXQgY3VycmVudEFuY2hvcigpe3JldHVybiJBIj09PXRoaXMuaG9zdC5wYXJlbnRFbGVtZW50Py50YWdOYW1lP3RoaXMuaG9zdC5wYXJlbnRFbGVtZW50Om51bGx9aG9zdENvbm5lY3RlZCgpe3RoaXMuc2V0QW5j''@;'; put 'put ''aG9yKCl9aG9zdFVwZGF0ZWQoKXt0aGlzLnNldEFuY2hvcigpfXNldEFuY2hvcigpe3RoaXMuY3VycmVudEFuY2hvciYmdGhpcy5jdXJyZW50QW5jaG9yIT09dGhpcy5wcmV2aW91c0FuY2hvciYmKHRoaXMucHJldmlvdXNBbmNob3I9dGhpcy5jdXJyZW50QW5jaG9yLHRoaXMuaG9zdC5yZWFk''@;'; put 'put ''b25seT0hMCx0aGlzLmN1cnJlbnRBbmNob3Iuc3R5bGUubGluZUhlaWdodD0iMCIsdGhpcy5jdXJyZW50QW5jaG9yLnN0eWxlLnRleHREZWNvcmF0aW9uPSJub25lIil9fWNvbnN0IGRVPWw9Pmw/P0Z1O2Z1bmN0aW9uIGpsZShsKXtsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wUHJvcGFnYXRp''@;'; put 'put ''b24oKX1jb25zdCBoVT1uZXcgTWFwKFtbImFycm93LWxlZnQiLCJBcnJvd0xlZnQiXSxbImFycm93LXJpZ2h0IiwiQXJyb3dSaWdodCJdLFsiYXJyb3ctdXAiLCJBcnJvd1VwIl0sWyJhcnJvdy1kb3duIiwiQXJyb3dEb3duIl0sWyJ0YWIiLCJUYWIiXSxbImVudGVyIiwiRW50ZXIiXSxbImVz''@;'; put 'put ''Y2FwZSIsIkVzY2FwZSJdLFsic3BhY2UiLCIgIl0sWyJob21lIiwiSG9tZSJdLFsiZW5kIiwiRW5kIl1dKTtjbGFzcyB1RGV7c3RhdGljIGdldCBrZXljb2Rlcygpe3JldHVybiBfQWUoaFUpfXN0YXRpYyBhZGQoYyxhKXtoVS5zZXQoYyxhKX1zdGF0aWMgaGFzKGMpe3JldHVybiBoVS5oYXMo''@;'; put 'put ''Yyl9c3RhdGljIGdldENvZGUoYyxhPXRoaXMua2V5Y29kZXMpe3JldHVybiBmdW5jdGlvbiBjRGUobCxjKXtyZXR1cm4gYy5nZXQobCl8fCIifShjLGEpfX1mdW5jdGlvbiBwVShsLGMpe3JldHVybiB1RGUuZ2V0Q29kZShjKT09PWwua2V5fXZhciBEaDshZnVuY3Rpb24obCl7bC5BcnJvd1Vw''@;'; put 'put ''PSJBcnJvd1VwIixsLkFycm93RG93bj0iQXJyb3dEb3duIixsLkFycm93TGVmdD0iQXJyb3dMZWZ0IixsLkFycm93UmlnaHQ9IkFycm93UmlnaHQiLGwuRW5kPSJFbmQiLGwuSG9tZT0iSG9tZSIsbC5QYWdlVXA9IlBhZ2VVcCIsbC5QYWdlRG93bj0iUGFnZURvd24ifShEaHx8KERoPXt9KSk7''@;'; put 'put ''Y2xhc3MgdkRle2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMudHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9ySGFuZGxlcj10aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvci5iaW5kKHRoaXMpLHRoaXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvckhhbmRsZXI9dGhp''@;'; put 'put ''cy5lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9yLmJpbmQodGhpcyksdGhpcy5ob3N0LmFkZENvbnRyb2xsZXIodGhpcyl9aG9zdFVwZGF0ZWQoKXt0aGlzLnNldEJ1dHRvblR5cGUoKSx0aGlzLnNldHVwTmF0aXZlQnV0dG9uQmVoYXZpb3IoKX1zZXRCdXR0b25UeXBlKCl7IXRoaXMuaG9z''@;'; put 'put ''dC50eXBlJiZ0aGlzLmhvc3QuY2xvc2VzdCgiZm9ybSIpJiYodGhpcy5ob3N0LnR5cGU9InN1Ym1pdCIpfXNldHVwTmF0aXZlQnV0dG9uQmVoYXZpb3IoKXt0aGlzLmhvc3QucmVhZG9ubHl8fHRoaXMuaG9zdC5kaXNhYmxlZD8odGhpcy5ob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNr''@;'; put 'put ''Iix0aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvckhhbmRsZXIpLHRoaXMuaG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9ySGFuZGxlcikpOih0aGlzLmhvc3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMu''@;'; put 'put ''dHJpZ2dlck5hdGl2ZUJ1dHRvbkJlaGF2aW9ySGFuZGxlciksdGhpcy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLmVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3JIYW5kbGVyKSl9ZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvcihjKXshZnVuY3Rpb24gZkRlKGwsYyxh''@;'; put 'put ''KXtsLmZpbHRlcihmPT5wVShjLGYpKS5sZW5ndGg+MCYmYSgpfShbImVudGVyIiwic3BhY2UiXSxjLCgpPT57InN1Ym1pdCI9PT10aGlzLmhvc3QudHlwZT90aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvcihjKTp0aGlzLmhvc3QuY2xpY2soKSxqbGUoYyl9KX10cmlnZ2VyTmF0aXZl''@;'; put 'put ''QnV0dG9uQmVoYXZpb3IoYyl7aWYodGhpcy5ob3N0LmRpc2FibGVkKWpsZShjKTtlbHNlIGlmKCFjLmRlZmF1bHRQcmV2ZW50ZWQpe2NvbnN0IGE9ZnVuY3Rpb24gbURlKGwsYyxhKXtjb25zdCBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2MuYXBwZW5kQ2hpbGQoZiksTGxlKGws''@;'; put 'put ''Yyx7cmVuZGVyQmVmb3JlOmYsLi4uYX0pO2NvbnN0IGQ9Zi5wcmV2aW91c1NpYmxpbmc7cmV0dXJuIGYucmVtb3ZlKCksZH0obFVgPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0icHJlc2VudGF0aW9uIiA/ZGlzYWJsZWQ9IiR7dGhpcy5ob3N0LmRpc2FibGVkfSIgdGFiaW5kZXg9''@;'; put 'put ''Ii0xIiBzdHlsZT0iZGlzcGxheTpub25lIWltcG9ydGFudCIgdmFsdWU9IiR7ZFUodGhpcy5ob3N0LnZhbHVlKX0iIG5hbWU9IiR7ZFUodGhpcy5ob3N0Lm5hbWUpfSIgdHlwZT0iJHtkVSh0aGlzLmhvc3QudHlwZSl9Ij48L2J1dHRvbj5gLHRoaXMuaG9zdCk7YT8uZGlzcGF0Y2hFdmVudChu''@;'; put 'put ''ZXcgTW91c2VFdmVudCgiY2xpY2siLHtyZWxhdGVkVGFyZ2V0OnRoaXMuaG9zdCxjb21wb3NlZDohMH0pKSxhPy5yZW1vdmUoKX19fWNsYXNzIGJEZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPXRo''@;'; put 'put ''aXMuaG9zdC5leHBhbmRlZCYmKHRoaXMuaG9zdC5hcmlhRXhwYW5kZWQ9dGhpcy5ob3N0LmV4cGFuZGVkPyJ0cnVlIjoiZmFsc2UiKSx0aGlzLmhvc3QucmVhZG9ubHkmJih0aGlzLmhvc3QuYXJpYUV4cGFuZGVkPW51bGwpfX1sZXQgTWQ9Y2xhc3MgZXh0ZW5kcyBYdntjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZGlzYWJsZWQ9ITF9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZChsKXtjb25zdCBjPXRoaXMuX2Rpc2FibGVkO3RoaXMuX2Rpc2FibGVkPWwsdGhpcy5yZXF1ZXN0VXBkYXRlKCJkaXNhYmxlZCIsYyl9''@;'; put 'put ''fTtPdChbTHMoe3R5cGU6Qm9vbGVhbn0pXSxNZC5wcm90b3R5cGUsInByZXNzZWQiLHZvaWQgMCksT3QoW0xzKHt0eXBlOkJvb2xlYW59KV0sTWQucHJvdG90eXBlLCJleHBhbmRlZCIsdm9pZCAwKSxPdChbTHMoe3R5cGU6Qm9vbGVhbn0pXSxNZC5wcm90b3R5cGUsInJlYWRvbmx5Iix2b2lk''@;'; put 'put ''IDApLE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sTWQucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sTWQucHJvdG90eXBlLCJuYW1lIix2b2lkIDApLE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sTWQucHJvdG90eXBlLCJ2YWx1ZSIsdm9pZCAwKSxPdChbTHMo''@;'; put 'put ''e3R5cGU6Qm9vbGVhbn0pXSxNZC5wcm90b3R5cGUsImRpc2FibGVkIixudWxsKSxPdChbTHMoe3R5cGU6U3RyaW5nfSldLE1kLnByb3RvdHlwZSwicG9wdXAiLHZvaWQgMCksTWQ9T3QoW2Z1bmN0aW9uIHFPZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyBYT2UoYykpfSgp''@;'; put 'put ''LGZ1bmN0aW9uIGlEZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyBvRGUoYykpfSgpLGZ1bmN0aW9uIG5EZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyByRGUoYykpfSgpLGZ1bmN0aW9uIHlEZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9''@;'; put 'put ''Pm5ldyBiRGUoYykpfSgpLGZ1bmN0aW9uIGVEZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyB0RGUoYykpfSgpLGZ1bmN0aW9uIEpPZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyBRT2UoYykpfSgpLGZ1bmN0aW9uIGdEZSgpe3JldHVybiBsPT5sLmFk''@;'; put 'put ''ZEluaXRpYWxpemVyKGM9Pm5ldyB2RGUoYykpfSgpLGZ1bmN0aW9uIGFEZSgpe3JldHVybiBsPT5sLmFkZEluaXRpYWxpemVyKGM9Pm5ldyBsRGUoYykpfSgpXSxNZCk7Y29uc3QgS0Q9e2FjdGlvbnM6e3NvcnQ6IlNvcnQiLGV4cGFuZDoiRXhwYW5kIixjbG9zZToiQ2xvc2UiLHJlc2l6ZToi''@;'; put 'put ''UmVzaXplIixmaWx0ZXI6IkZpbHRlciJ9LGFsZXJ0OntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UiLGxvYWRpbmc6IkxvYWRpbmciLGluZm86IkluZm8iLHN1Y2Nlc3M6IlN1Y2Nlc3MiLHdhcm5pbmc6Ildhcm5pbmciLGRhbmdlcjoiRXJyb3IifSxkcm9wZG93bjp7b3BlbjoiT3BlbiJ9''@;'; put 'put ''LGZpbGU6e2Jyb3dzZToiYnJvd3NlIixmaWxlczoiZmlsZXMiLHJlbW92ZUZpbGU6InJlbW92ZSBmaWxlIn0sbW9kYWw6e2Nsb3NlQnV0dG9uQXJpYUxhYmVsOiJDbG9zZSBtb2RhbCIsY29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgbW9kYWwgY29udGVudCIsY29udGVudEJveDoiU2Nyb2xs''@;'; put 'put ''YWJsZSBtb2RhbCBib2R5Iixjb250ZW50RW5kOiJFbmQgb2YgbW9kYWwgY29udGVudCJ9LG5hdmlnYXRpb246e25hdmlnYXRpb25FbGVtZW50OiJuYXZpZ2F0aW9uIixuYXZpZ2F0aW9uTGFiZWw6Im5hdmlnYXRpb24gbWVudSIsbmF2aWdhdGlvbkFicmlkZ2VkVGV4dDoiVmlldyBhYnJpZGdl''@;'; put 'put ''ZCBtZW51IixuYXZpZ2F0aW9uVW5hYnJpZGdlZFRleHQ6IlZpZXcgdW5hYnJpZGdlZCBtZW51In0sb3ZlcmxheTp7Y2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIGRpYWxvZyIsY29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgZGlhbG9nIGNvbnRlbnQiLGNvbnRlbnRFbmQ6IkVuZCBvZiBk''@;'; put 'put ''aWFsb2cgY29udGVudCJ9LHBvcHVwOntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgcG9wdXAiLGNvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9mIHBvcHVwIGNvbnRlbnQiLGNvbnRlbnRFbmQ6IkVuZCBvZiBwb3B1cCBjb250ZW50In0scGFzc3dvcmQ6e3Nob3dCdXR0b25BcmlhTGFiZWw6''@;'; put 'put ''IlNob3cgcGFzc3dvcmQiLGhpZGVCdXR0b25BcmlhTGFiZWw6IkhpZGUgcGFzc3dvcmQifSxwcm9ncmVzczp7bG9hZGluZzoiTG9hZGluZyIsbG9vcGluZzoiTG9hZGluZyJ9LHRyZWV2aWV3Ontsb2FkaW5nOiJMb2FkaW5nIn0sZ3JpZDp7cmVzaXplQ29sdW1uOiJSZXNpemUgQ29sdW1uIixj''@;'; put 'put ''bG9zZURldGFpbHM6IkNsb3NlIERldGFpbHMiLG5vRGF0YToiTm8gUmVzdWx0cyBGb3VuZCIscm93RGV0YWlsU3RhcnQ6IlN0YXJ0IG9mIHJvdyBkZXRhaWxzIixyb3dEZXRhaWxFbmQ6IkVuZCBvZiByb3cgZGV0YWlscyIsZm9vdGVyRW5kOiJFbmQgb2YgZ3JpZCByb3dzIixhY3Rpb246IkFj''@;'; put 'put ''dGlvbiIsZHJvcFRhcmdldDoiRHJvcCBJdGVtIixwYWdpbmF0aW9uOntsYWJlbDoiZ3JpZCBwYWdpbmF0aW9uIixmaXJzdFBhZ2U6ImdvIHRvIGZpcnN0IHBhZ2UiLHByZXZpb3VzUGFnZToiZ28gdG8gcHJldmlvdXMgcGFnZSIsbmV4dFBhZ2U6ImdvIHRvIG5leHQgcGFnZSIsbGFzdFBhZ2U6''@;'; put 'put ''ImdvIHRvIGxhc3QgcGFnZSIscGFnZVNpemU6InJvd3MgcGVyIHBhZ2UiLHBhZ2U6InBhZ2UifX19O2NsYXNzIHpne3N0YXRpYyBnZXQga2V5cygpe3JldHVybiAwPT09T2JqZWN0LmtleXMobnUuc3RhdGUuaTE4blJlZ2lzdHJ5KS5sZW5ndGgmJihudS5zdGF0ZS5pMThuUmVnaXN0cnk9SWco''@;'; put 'put ''S0QsbnUuc3RhdGUuaTE4blJlZ2lzdHJ5KSksSWcoS0QsbnUuc3RhdGUuaTE4blJlZ2lzdHJ5KX1zdGF0aWMgZmluZEtleShjKXtjb25zdCBhPXpnLmtleXM7cmV0dXJuIE9iamVjdC5rZXlzKGEpLmZpbmQoZj0+RG9lKGFbZl0sYykpfXN0YXRpYyBnZXQoYyl7cmV0dXJuIGMmJnpnLmtleXNb''@;'; put 'put ''Y118fHt9fXN0YXRpYyByZXNldCgpe251LnN0YXRlLmkxOG5SZWdpc3RyeT1JZyh7fSxLRCl9c3RhdGljIGh5ZHJhdGUoYyxhKXtyZXR1cm4gSlNPTi5wYXJzZShmdW5jdGlvbiBEQWUobCxjLGEpe3JldHVybiBsLnJlcGxhY2UoL1wkXHsuKz9cfS9nLGY9PmZ1bmN0aW9uIGJBZShsLGMsYT1g''@;'; put 'put ''XCR7JHtsfX1gKXtyZXR1cm4gbC5zcGxpdCgiLiIpLnJlZHVjZSgoZixkKT0+e3RyeXtjb25zdCBoPWZbZF07c3dpdGNoKCEwKXtjYXNlIG51bGw9PT1oOmNhc2UhMT09PWg6Y2FzZSIiPT09aDpjYXNlIDA9PT1oOnJldHVybiBoO2RlZmF1bHQ6cmV0dXJuIGh8fGF9fWNhdGNoe3JldHVybiBh''@;'; put 'put ''fX0sYyl9KGYuc3Vic3RyKDIsZi5sZW5ndGgtMykudHJpbSgpLGMsYSkpfShKU09OLnN0cmluZ2lmeShjKSxhKSl9c3RhdGljIGxvY2FsaXplKGMpe251LnN0YXRlLmkxOG5SZWdpc3RyeT1JZyhLRCxudS5zdGF0ZS5pMThuUmVnaXN0cnksYyl9fXZhciBTRGU9UXpgOmhvc3R7LS1pY29uLXdp''@;'; put 'put ''ZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNywgY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0taWNvbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LCBjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS13''@;'; put 'put ''aWR0aDp2YXIoLS1pY29uLXdpZHRoKTstLWhlaWdodDp2YXIoLS1pY29uLXdpZHRoKTstLWN1cnNvcjpwb2ludGVyOy0tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTMwMCwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwLCAjMmQ0MDQ4KSk7''@;'; put 'put ''LS1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zLCBjYWxjKDEzICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSk7LS1iYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy0tcGFkZGluZzowOy0tb3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2Jq''@;'; put 'put ''ZWN0LWludGVyYWN0aW9uLW91dGxpbmUsIEhpZ2hsaWdodCBzb2xpZCAycHgpOy0tb3V0bGluZS1vZmZzZXQ6Y2FsYyh2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0LCAxcHgpICogLTEpO3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2s7b3V0bGluZTowIWltcG9ydGFudH06aG9zdChbcm9sZT1idXR0b25dKXtwb2ludGVyLWV2ZW50czppbml0aWFsO2N1cnNvcjp2YXIoLS1jdXJzb3IpIWltcG9ydGFudH06aG9zdChbc3RhdHVzPWFjdGl2ZV0pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9OjpzbG90dGVkKFtzaGFwZT1jbG9zZV0pLDo6c2xvdHRlZChbc2hhcGU9aW5mby1jaXJjbGVdKSw6OnNsb3R0ZWQoW3NoYXBlPXRpbWVzXSksOmhvc3QoW3NoYXBlPWNsb3NlXSksOmhvc3QoW3NoYXBlPWluZm8tY2lyY2xl''@;'; put 'put ''XSl7LS1pY29uLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCwgY2FsYygxOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0taWNvbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04LCBjYWxjKDE4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFz''@;'; put 'put ''ZSwgMjApKSl9Omhvc3QoOmhvdmVyKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDAsICMxYjJiMzIpKX06aG9zdCg6YWN0aXZlKXstLWNvbG9yOnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwLCAjMWIyYjMyKSl9Omhvc3QoOmFjdGl2ZSkgLnByaXZhdGUtaG9zdHt0cmFuc2Zvcm06dHJhbnNsYXRlWShjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtMSxjYWxjKDEgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpLyAyKSl9Omhvc3QoW2Rpc2FibGVkXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlv''@;'; put 'put ''bi0zMDAsICNhZWI4YmMpKX0ucHJpdmF0ZS1ob3N0ey0taWNvbi1jb2xvcjp2YXIoLS1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iYWNrZ3JvdW5kKTtwYWRkaW5nOnZhcigtLXBhZGRpbmcpO2NvbG9yOnZhcigtLWNvbG9yKTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplKTtkaXNwbGF5OmZs''@;'; put 'put ''ZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOnZhcigtLXdpZHRoKTttaW4taGVpZ2h0OnZhcigtLWhlaWdodCl9OjpzbG90dGVkKGNkcy1pY29uKSxjZHMtaWNvbnt3aWR0aDp2YXIoLS1pY29uLXdpZHRoKTtoZWlnaHQ6dmFyKC0taWNvbi1o''@;'; put 'put ''ZWlnaHQpO3BvaW50ZXItZXZlbnRzOm5vbmV9OjpzbG90dGVkKGNkcy1pY29uOm5vdChbc3RhdHVzXSkpLGNkcy1pY29uey0tY29sb3I6dmFyKC0taWNvbi1jb2xvcil9Omhvc3QoW2Rpc2FibGVkXTphY3RpdmUpe3BvaW50ZXItZXZlbnRzOm5vbmUhaW1wb3J0YW50fS5wcml2YXRlLWhvc3Q6''@;'; put 'put ''OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKC0xKnZhcigtLXdpZHRoKSAtIDEpO3RvcDpjYWxjKC0xKnZhcigtLWhlaWdodCkgLSAxKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXRvdWNoLXRhcmdldCxjYWxjKDM2ICogMXJl''@;'; put 'put ''bSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtoZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi10b3VjaC10YXJnZXQsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW2Rpc2FibGVkXSkgLnByaXZhdGUtaG9zdDo6''@;'; put 'put ''YWZ0ZXJ7b3V0bGluZTowIWltcG9ydGFudH06aG9zdCg6Zm9jdXMpIC5wcml2YXRlLWhvc3Q6OmFmdGVye291dGxpbmU6dmFyKC0tb3V0bGluZSk7b3V0bGluZS1vZmZzZXQ6dmFyKC0tb3V0bGluZS1vZmZzZXQpfUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApezpo''@;'; put 'put ''b3N0KDpmb2N1cykgLnByaXZhdGUtaG9zdDo6YWZ0ZXJ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3J9fWA7Y2xhc3MgVWcgZXh0ZW5kcyBNZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pMThuPXpnLmtleXMuYWN0aW9ucyx0aGlzLmNkc0J1''@;'; put 'put ''dHRvbkFjdGlvbj0hMH1yZW5kZXIoKXtyZXR1cm4gbFVgPGRpdiBjbGFzcz0icHJpdmF0ZS1ob3N0Ij48c2xvdD48Y2RzLWljb24gLnNoYXBlPSIke3RoaXMuc2hhcGU/dGhpcy5zaGFwZToiZWxsaXBzaXMtdmVydGljYWwifSIgLnNpemU9IiR7dGhpcy5pY29uU2l6ZX0iID9zb2xpZD0iJHt0''@;'; put 'put ''aGlzLnByZXNzZWR8fHRoaXMuZXhwYW5kZWR9IiBpbm5lci1vZmZzZXQ9IiR7MX0iPjwvY2RzLWljb24+PC9zbG90PjwvZGl2PmB9dXBkYXRlZChjKXtzdXBlci51cGRhdGVkKGMpLHRoaXMuYXJpYUxhYmVsfHx0aGlzLnJlYWRvbmx5fHxMZy53YXJuKCJBIGFyaWEtbGFiZWwgaXMgcmVxdWly''@;'; put 'put ''ZWQgZm9yIGludGVyYWN0aXZlIGNkcy1idXR0b24tYWN0aW9uIHR5cGUiLHRoaXMpLGMuaGFzKCJyZWFkb25seSIpJiYodGhpcy5hcmlhSGlkZGVuPXRoaXMucmVhZG9ubHkmJiF0aGlzLmhhc0F0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpPyJ0cnVlIjpudWxsKX19VWcuc3R5bGVzPVtGbGUsU0Rl''@;'; put 'put ''XSxPdChbTHMoe3R5cGU6U3RyaW5nfSldLFVnLnByb3RvdHlwZSwic2hhcGUiLHZvaWQgMCksT3QoW0xzKHt0eXBlOlN0cmluZyxyZWZsZWN0OiEwfSldLFVnLnByb3RvdHlwZSwiYWN0aW9uIix2b2lkIDApLE90KFtMcyh7dHlwZTpTdHJpbmd9KV0sVWcucHJvdG90eXBlLCJpY29uU2l6ZSIs''@;'; put 'put ''dm9pZCAwKSxPdChbZnVuY3Rpb24gX0RlKCl7cmV0dXJuKGwsYyk9Pntjb25zdCBhPWwuY29ubmVjdGVkQ2FsbGJhY2ssZj1sLmRpc2Nvbm5lY3RlZENhbGxiYWNrO2wuY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXtsLl9faTE4blN1Yj1udS5zdGF0ZVVwZGF0ZXMuc3Vic2NyaWJlKGg9''@;'; put 'put ''PnsiaTE4blJlZ2lzdHJ5Ij09PWgua2V5JiZ0aGlzLnJlcXVlc3RVcGRhdGUoYyl9KSxhJiZhLmFwcGx5KHRoaXMpfSxsLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7bC5fX2kxOG5TdWIudW5zdWJzY3JpYmUoKSxmJiZmLmFwcGx5KHRoaXMpfTtjb25zdCBkPXtnZXQoKXtjb25z''@;'; put 'put ''dCBoPUlnKHpnLmtleXNbdGhpcy5fX2kxOG5LZXldLHRoaXMuX19pMThufHx7fSk7cmV0dXJuIHpnLmh5ZHJhdGUoaCx0aGlzKX0sc2V0KGgpe2NvbnN0IG09ZnVuY3Rpb24gd0RlKGwsYyl7aWYoYzQobCkpe2xldCBhPXt9O2lmKGMuaGFzQXR0cmlidXRlKCJjZHMtaTE4biIpKXtjb25zdCBm''@;'; put 'put ''PWMuZ2V0QXR0cmlidXRlKCJjZHMtaTE4biIpKyIiO2lmKGM0KGYpKWE9e307ZWxzZSB0cnl7YT1KU09OLnBhcnNlKGYpfWNhdGNoe0xnLndhcm4oIkNsYXJpdHkgaTE4bjogSW52YWxpZCBKU09OIHBhc3NlZCB0byBjZHMtaTE4biIpLGE9e319fXJldHVybiBhfXJldHVybiBsfShoLHRoaXMp''@;'; put 'put ''LF89ZnVuY3Rpb24gQ0RlKGwsYyxhLGYpe3JldHVybiBjNChsKT9Eb2UoYSxmKT97dXBkYXRlOiExfTp7dXBkYXRlOiEwLHZhbHVlczphfTpsPT09Yz97dXBkYXRlOiExLHZhbHVlczp7fX06e3VwZGF0ZTohMCxrZXk6bCx2YWx1ZXM6e319fSh6Zy5maW5kS2V5KG0pfHwiIix0aGlzLl9faTE4''@;'; put 'put ''bktleSxtLHRoaXMuX19pMThuKTt2b2lkIDAhPT1fLmtleSYmKHRoaXMuX19pMThuS2V5PV8ua2V5KyIiKSx2b2lkIDAhPT1fLnZhbHVlcyYmKHRoaXMuX19pMThuPXsuLi5fLnZhbHVlc30pLCEwPT09Xy51cGRhdGUmJnRoaXMucmVxdWVzdFVwZGF0ZSgpLHRoaXMucmVxdWVzdFVwZGF0ZShj''@;'; put 'put ''KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O3JldHVybiB2b2lkIDAhPT1jP2Z1bmN0aW9uKGgsbSxfKXtjb25zdCBPPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShtLF8saCk7cmV0dXJuIExzKHt0eXBlOk9iamVjdCxhdHRyaWJ1dGU6ImNkcy1pMThuIn0pKE8sXyl9KGQsbCxjKTpm''@;'; put 'put ''dW5jdGlvbihoLG0pe2NvbnN0IF89e2tpbmQ6Im1ldGhvZCIscGxhY2VtZW50OiJwcm90b3R5cGUiLGtleTptLmtleSxkZXNjcmlwdG9yOmh9O3JldHVybiBMcyh7dHlwZTpPYmplY3R9KShfKX0oZCxsKX19KCldLFVnLnByb3RvdHlwZSwiaTE4biIsdm9pZCAwKSxPdChbVmxlKHt0eXBlOkJv''@;'; put 'put ''b2xlYW4scmVmbGVjdDohMCxhdHRyaWJ1dGU6ImNkcy1idXR0b24tYWN0aW9uIn0pXSxVZy5wcm90b3R5cGUsImNkc0J1dHRvbkFjdGlvbiIsdm9pZCAwKTtjbGFzcyBVbGUgZXh0ZW5kcyBVZ3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zaGFwZT0iY2xvc2UifWNv''@;'; put 'put ''bm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmFyaWFMYWJlbD10aGlzLmFyaWFMYWJlbD90aGlzLmFyaWFMYWJlbDp0aGlzLmkxOG4uY2xvc2V9fU90KFtMcyh7dHlwZTpTdHJpbmd9KV0sVWxlLnByb3RvdHlwZSwic2hhcGUiLHZvaWQgMCksb2xlKCJj''@;'; put 'put ''ZHMtaW50ZXJuYWwtY2xvc2UtYnV0dG9uIixVbGUpLGphLmFkZEljb25zKFhvZSksamEuYWRkQWxpYXNlcyhbInRpbWVzIixbImNsb3NlIl1dKTtjb25zdCBPbz1bIioiXTtmdW5jdGlvbiBrRGUobCxjKXtpZigxJmwmJihXcigwKSxZZSgxKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2Uo''@;'; put 'put ''MSksYXIoYS5jb21tb25TdHJpbmdzLmtleXMuZGFuZ2VyKX19ZnVuY3Rpb24gRURlKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwxNCksdHQoMSxrRGUsMiwxLCJuZy1jb250YWluZXIiLDApLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdCxmPUdlKCk7U2UoMSksUmUoIm5nSWYi''@;'; put 'put ''LGEuc3RhdHVzPT09Zi5BY2NvcmRpb25TdGF0dXMuRXJyb3IpfX1mdW5jdGlvbiB4RGUobCxjKXtpZigxJmwmJihXcigwKSxZZSgxKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksYXIoYS5jb21tb25TdHJpbmdzLmtleXMuZGFuZ2VyKX19ZnVuY3Rpb24gQURlKGwsYyl7aWYoMSZs''@;'; put 'put ''JiYoV3IoMCksWWUoMSksR3IoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLGFyKGEuY29tbW9uU3RyaW5ncy5rZXlzLnN1Y2Nlc3MpfX1mdW5jdGlvbiBURGUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDE1KSxFdCgiQHRvZ2dsZS5kb25lIixmdW5jdGlvbigpe1V0''@;'; put 'put ''KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkuY29sbGFwc2VQYW5lbE9uQW5pbWF0aW9uRG9uZShkKSl9KSx5ZSgxLCJkaXYiLDE2KSxEcigyLDIpLENlKCkoKX0yJmwmJlJlKCJAdG9nZ2xlIix2b2lkIDApfWZ1bmN0aW9uIE9EZShsLGMpe2lmKDEmbCl7Y29uc3Qg''@;'; put 'put ''YT1abigpO1dyKDApLHR0KDEsRURlLDIsMSwiZGl2IiwxKSx5ZSgyLCJkaXYiLDIpKDMsImRpdiIsMykoNCwiYnV0dG9uIiw0LDUpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS50b2dnbGVQYW5lbCgpKX0pLHdsKDYsImFzeW5jIikseWUoNywic3BhbiIsNiks''@;'; put 'put ''dHQoOCx4RGUsMiwxLCJuZy1jb250YWluZXIiLDApLHR0KDksQURlLDIsMSwibmctY29udGFpbmVyIiwwKSxDZSgpLHllKDEwLCJzcGFuIiw3KSx0bigxMSwiY2RzLWljb24iLDgpKDEyLCJzcGFuIiw5KSgxMywiY2RzLWljb24iLDEwKSgxNCwiY2RzLWljb24iLDExKSxDZSgpLERyKDE1KSxE''@;'; put 'put ''cigxNiwxKSxDZSgpKCkseWUoMTcsImRpdiIsMTIpLHR0KDE4LFREZSwzLDEsImRpdiIsMTMpLENlKCkoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKCk7bGV0IGQ7U2UoMSksUmUoIm5nSWYiLGEuc3RhdHVzIT09Zi5BY2NvcmRpb25TdGF0dXMuSW5hY3RpdmUpLFNl''@;'; put 'put ''KDEpLFJlKCJuZ0NsYXNzIixmLmdldFBhbmVsU3RhdGVDbGFzc2VzKGEpKSxTZSgyKSxncigiY2xyLWFjY29yZGlvbi1oZWFkZXItaGFzLWRlc2NyaXB0aW9uIiwobnVsbD09KGQ9SnMoNiwxNixmLmFjY29yZGlvbkRlc2NyaXB0aW9uLmNoYW5nZXMpKT9udWxsOmQubGVuZ3RoKXx8Zi5hY2Nv''@;'; put 'put ''cmRpb25EZXNjcmlwdGlvbi5sZW5ndGgpLFJlKCJpZCIsZi5nZXRBY2NvcmRpb25IZWFkZXJJZChhLnRlbXBsYXRlSWQpKSgiZGlzYWJsZWQiLGYuaXNBY2NvcmRpb24mJmEuZGlzYWJsZWQpLFJyKCJhcmlhLWRpc2FibGVkIiwhZi5pc0FjY29yZGlvbiYmYS5kaXNhYmxlZCkoImFyaWEtY29u''@;'; put 'put ''dHJvbHMiLGYuZ2V0QWNjb3JkaW9uQ29udGVudElkKGEudGVtcGxhdGVJZCkpKCJhcmlhLWV4cGFuZGVkIixhLm9wZW4pLFNlKDQpLFJlKCJuZ0lmIixhLnN0YXR1cz09PWYuQWNjb3JkaW9uU3RhdHVzLkVycm9yKSxTZSgxKSxSZSgibmdJZiIsYS5zdGF0dXM9PT1mLkFjY29yZGlvblN0YXR1''@;'; put 'put ''cy5Db21wbGV0ZSksU2UoOCksUmUoIkBza2lwSW5pdGlhbFJlbmRlciIsdm9pZCAwKSgiaWQiLGYuZ2V0QWNjb3JkaW9uQ29udGVudElkKGEudGVtcGxhdGVJZCkpLFJyKCJhcmlhLWhpZGRlbiIsIWEub3BlbikoImFyaWEtbGFiZWxsZWRieSIsZi5nZXRBY2NvcmRpb25IZWFkZXJJZChhLnRl''@;'; put 'put ''bXBsYXRlSWQpKSxTZSgxKSxSZSgibmdJZiIsYS5vcGVuKX19Y29uc3QgWmxlPVtbWyJjbHItYWNjb3JkaW9uLXRpdGxlIl0sWyJjbHItc3RlcC10aXRsZSJdXSxbWyJjbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9uIl0sWyJjbHItc3RlcC1kZXNjcmlwdGlvbiJdXSwiKiJdLFlsZT1bImNsci1h''@;'; put 'put ''Y2NvcmRpb24tdGl0bGUsIGNsci1zdGVwLXRpdGxlIiwiY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiwgY2xyLXN0ZXAtZGVzY3JpcHRpb24iLCIqIl0sSkRlPVsiY2xyTG9hZGluZyIsIiJdO2Z1bmN0aW9uIFFEZShsLGMpezEmbCYmKHllKDAsInNwYW4iKSx0bigxLCJzcGFuIiwyKSxDZSgp''@;'; put 'put ''KSwyJmwmJihTZSgxKSxSZSgiQHNwaW5uZXIiLHZvaWQgMCkpfWZ1bmN0aW9uIGVJZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsInNwYW4iKSgxLCJzcGFuIiwzKSxFdCgiQHZhbGlkYXRlZC5kb25lIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKTtyZXR1cm4gWnQoZC5s''@;'; put 'put ''b2FkaW5nU3RhdGVDaGFuZ2UoZC5idXR0b25TdGF0ZS5ERUZBVUxUKSl9KSxDZSgpKCl9MiZsJiYoU2UoMSksUmUoIkB2YWxpZGF0ZWQiLHZvaWQgMCkpfWZ1bmN0aW9uIHRJZShsLGMpezEmbCYmKHllKDAsInNwYW4iKSxEcigxKSxDZSgpKSwyJmwmJlJlKCJAZGVmYXVsdEJ1dHRvbiIsdm9p''@;'; put 'put ''ZCAwKX1mdW5jdGlvbiBuSWUobCxjKXsxJmwmJnRuKDAsImxhYmVsIil9Y29uc3QgckllPVtbWyIiLCJjbHJDaGVja2JveCIsIiJdLFsiIiwiY2xyVG9nZ2xlIiwiIl1dLFtbImxhYmVsIl1dXSxpSWU9WyJbY2xyQ2hlY2tib3hdLFtjbHJUb2dnbGVdIiwibGFiZWwiXTtmdW5jdGlvbiBvSWUo''@;'; put 'put ''bCxjKXsxJmwmJnRuKDAsImxhYmVsIil9ZnVuY3Rpb24gYUllKGwsYyl7MSZsJiZEcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gbEllKGwsYyl7MSZsJiZ0bigwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gc0llKGwsYyl7MSZsJiZ0bigwLCJjZHMtaWNvbiIsNil9ZnVu''@;'; put 'put ''Y3Rpb24gdUllKGwsYyl7MSZsJiZEcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIGNJZShsLGMpezEmbCYmRHIoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgZkllPVtbWyJsYWJlbCJdXSxbWyJjbHItY2hlY2tib3gtd3JhcHBlciJdLFsiY2xyLXRvZ2ds''@;'; put 'put ''ZS13cmFwcGVyIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxkSWU9WyJsYWJlbCIsImNsci1jaGVja2JveC13cmFwcGVyLGNsci10b2dnbGUtd3JhcHBlciIsImNsci1jb250cm9sLWhlbHBlciIs''@;'; put 'put ''ImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdLGhJZT1bImNscktleUZvY3VzIiwiIl07ZnVuY3Rpb24geUllKGwsYyl7MSZsJiZ0bigwLCJsYWJlbCIpfWZ1bmN0aW9uIGJJZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIF9JZShsLGMpezEm''@;'; put 'put ''bCYmdG4oMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIHdJZShsLGMpezEmbCYmRHIoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIENJZShsLGMpezEmbCYmRHIoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBTSWUobCxjKXsxJmwmJkRyKDAsNCxbIipu''@;'; put 'put ''Z0lmIiwic2hvd1ZhbGlkIl0pfWNvbnN0IE1JZT1bW1sibGFiZWwiXV0sW1siIiwiY2xySW5wdXQiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLGtJZT1bImxhYmVsIiwiW2NscklucHV0XSIs''@;'; put 'put ''ImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIEVJZShsLGMpe2lmKDEmbCYmKHllKDAsInRoIiw0KSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UnIoImFyaWEtbGFiZWwiLGEuZGF5KSxT''@;'; put 'put ''ZSgxKSx3cigiICIsYS5uYXJyb3csIiAiKX19ZnVuY3Rpb24geEllKGwsYyl7aWYoMSZsJiYoeWUoMCwidGQiLDcpLHRuKDEsImNsci1kYXkiLDgpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgiY2xyRGF5VmlldyIsYSl9fWZ1bmN0aW9uIEFJZShsLGMpe2lmKDEm''@;'; put 'put ''bCYmKHllKDAsInRyIiw1KSx0dCgxLHhJZSwyLDEsInRkIiw2KSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksUmUoIm5nRm9yT2YiLGEpfX1mdW5jdGlvbiBUSWUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDEpLEV0KCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtjb25zdCBoPVV0KGEpLmluZGV4O3JldHVybiBadChHZSgpLmNoYW5nZU1vbnRoKGgpKX0pLFllKDEpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleCxkPUdlKCk7Z3IoImlzLXNlbGVjdGVkIixmPT09ZC5jYWxlbmRhck1vbnRoSW5kZXgpLFJyKCJ0YWJp''@;'; put 'put ''bmRleCIsZC5nZXRUYWJJbmRleChmKSksU2UoMSksd3IoIiAiLGEsIiAiKX19ZnVuY3Rpb24gT0llKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiw3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkuY2hh''@;'; put 'put ''bmdlWWVhcihoKSl9KSxZZSgxKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKCk7Z3IoImlzLXNlbGVjdGVkIixhPT09Zi5jYWxlbmRhclllYXIpLFJyKCJ0YWJpbmRleCIsZi5nZXRUYWJJbmRleChhKSksU2UoMSksd3IoIiAiLGEsIiAiKX19ZnVuY3Rpb24gREllKGws''@;'; put 'put ''Yyl7MSZsJiZ0bigwLCJjbHItbW9udGhwaWNrZXIiKX1mdW5jdGlvbiBJSWUobCxjKXsxJmwmJnRuKDAsImNsci15ZWFycGlja2VyIil9ZnVuY3Rpb24gUkllKGwsYyl7MSZsJiZ0bigwLCJjbHItZGF5cGlja2VyIil9Y29uc3QgTEllPVsiYWN0aW9uQnV0dG9uIl07ZnVuY3Rpb24gUEllKGws''@;'; put 'put ''Yyl7MSZsJiZ0bigwLCJsYWJlbCIpfWZ1bmN0aW9uIEZJZShsLGMpezEmbCYmKHllKDAsImJ1dHRvbiIsOCw5KSx0bigyLCJjZHMtaWNvbiIsMTApLENlKCkpLDImbCYmUmUoImRpc2FibGVkIixHZSgpLmlzSW5wdXREYXRlRGlzYWJsZWQpfWZ1bmN0aW9uIEhJZShsLGMpezEmbCYmdG4oMCwi''@;'; put 'put ''Y2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIiwxMSl9ZnVuY3Rpb24gTkllKGwsYyl7MSZsJiZ0bigwLCJjZHMtaWNvbiIsMTIpfWZ1bmN0aW9uIFZJZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDEzKX1mdW5jdGlvbiBCSWUobCxjKXsxJmwmJkRyKDAsMixbIipuZ0lmIiwic2hvd0hl''@;'; put 'put ''bHBlciJdKX1mdW5jdGlvbiBqSWUobCxjKXsxJmwmJkRyKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQiXSl9ZnVuY3Rpb24gekllKGwsYyl7MSZsJiZEcigwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBVSWU9W1tbImxhYmVsIl1dLFtbIiIsImNsckRhdGUiLCIiXV0sW1siY2xy''@;'; put 'put ''LWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLFpJZT1bImxhYmVsIiwiW2NsckRhdGVdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rp''@;'; put 'put ''b24gWUllKGwsYyl7MSZsJiZ0bigwLCJsYWJlbCIpfWNvbnN0IFdJZT1bW1siIiwiY2xyUmFkaW8iLCIiXV0sW1sibGFiZWwiXV1dLEdJZT1bIltjbHJSYWRpb10iLCJsYWJlbCJdO2Z1bmN0aW9uICRJZShsLGMpezEmbCYmdG4oMCwibGFiZWwiKX1mdW5jdGlvbiBLSWUobCxjKXsxJmwmJkRy''@;'; put 'put ''KDAsMixbIipuZ0lmIiwic2hvd0hlbHBlciJdKX1mdW5jdGlvbiBxSWUobCxjKXsxJmwmJnRuKDAsImNkcy1pY29uIiw1KX1mdW5jdGlvbiBYSWUobCxjKXsxJmwmJnRuKDAsImNkcy1pY29uIiw2KX1mdW5jdGlvbiBKSWUobCxjKXsxJmwmJkRyKDAsMyxbIipuZ0lmIiwic2hvd0ludmFsaWQi''@;'; put 'put ''XSl9ZnVuY3Rpb24gUUllKGwsYyl7MSZsJiZEcigwLDQsWyIqbmdJZiIsInNob3dWYWxpZCJdKX1jb25zdCBlUmU9W1tbImxhYmVsIl1dLFtbImNsci1yYWRpby13cmFwcGVyIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJv''@;'; put 'put ''bC1zdWNjZXNzIl1dXSx0UmU9WyJsYWJlbCIsImNsci1yYWRpby13cmFwcGVyIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gblJlKGwsYyl7MSZsJiZ0bigwLCJsYWJlbCIpfWZ1bmN0aW9uIHJSZShsLGMp''@;'; put 'put ''ezEmbCYmdG4oMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIGlSZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIG9SZShsLGMpezEmbCYmRHIoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIGFSZShsLGMpezEmbCYmRHIoMCwzLFsiKm5nSWYiLCJzaG93''@;'; put 'put ''SW52YWxpZCJdKX1mdW5jdGlvbiBsUmUobCxjKXsxJmwmJkRyKDAsNCxbIipuZ0lmIiwic2hvd1ZhbGlkIl0pfWNvbnN0IHNSZT1bW1sibGFiZWwiXV0sW1siIiwiY2xyU2VsZWN0IiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHIt''@;'; put 'put ''Y29udHJvbC1zdWNjZXNzIl1dXSx1UmU9WyJsYWJlbCIsIltjbHJTZWxlY3RdIiwiY2xyLWNvbnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gY1JlKGwsYyl7MSZsJiZ0bigwLCJsYWJlbCIpfWZ1bmN0aW9uIGZSZShsLGMp''@;'; put 'put ''ezEmbCYmdG4oMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIGRSZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDYpfWZ1bmN0aW9uIGhSZShsLGMpezEmbCYmRHIoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIHBSZShsLGMpezEmbCYmRHIoMCwzLFsiKm5nSWYiLCJzaG93''@;'; put 'put ''SW52YWxpZCJdKX1mdW5jdGlvbiBtUmUobCxjKXsxJmwmJkRyKDAsNCxbIipuZ0lmIiwic2hvd1ZhbGlkIl0pfWNvbnN0IGdSZT1bW1sibGFiZWwiXV0sW1siIiwiY2xyVGV4dGFyZWEiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNs''@;'; put 'put ''ci1jb250cm9sLXN1Y2Nlc3MiXV1dLHZSZT1bImxhYmVsIiwiW2NsclRleHRhcmVhXSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdLHlSZT1bImFuY2hvciJdO2Z1bmN0aW9uIGJSZShsLGMpe2lmKDEmbCYmKHllKDAsImRp''@;'; put 'put ''diIsNCkoMSwiZGl2Iiw1KSgyLCJidXR0b24iLDYpLHRuKDMsImNkcy1pY29uIiw3KSxDZSgpKCksRHIoNCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7UmUoImlkIixhLnBvcG92ZXJJZCksUnIoImFyaWEtbGFiZWwiLGEuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGFncmlkRmlsdGVyRGlhbG9n''@;'; put 'put ''QXJpYUxhYmVsKSxTZSgzKSxScigidGl0bGUiLGEuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKX19Y29uc3QgX1JlPVsiaW5wdXRfbG93Il0sd1JlPVsiaW5wdXQiXSxDUmU9WyJjb2x1bW5Qb3J0YWwiXTtmdW5jdGlvbiBTUmUobCxjKXsxJmwmJkRyKDApfWNvbnN0IE1SZT1bInJlc2l6ZVRy''@;'; put 'put ''YWNrZXIiXSxrUmU9WyJjb2x1bW5IYW5kbGUiXTtmdW5jdGlvbiBFUmUobCxjKXsxJmwmJmVzKDApfWZ1bmN0aW9uIHhSZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDEwKSwyJmwmJlJyKCJkaXJlY3Rpb24iLEdlKDIpLnNvcnREaXJlY3Rpb24pfWZ1bmN0aW9uIEFSZShsLGMpe2lmKDEm''@;'; put 'put ''bCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsNyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnNvcnQoKSl9KSx0dCgxLEVSZSwxLDAsIm5nLWNvbnRhaW5lciIsOCksdHQoMix4UmUsMSwxLCJjZHMtaWNvbiIsOSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9''@;'; put 'put ''R2UoKSxmPVFpKDYpO1NlKDEpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixmKSxTZSgxKSxSZSgibmdJZiIsYS5zb3J0RGlyZWN0aW9uKX19ZnVuY3Rpb24gVFJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDExKSxFdCgiY2xyRmlsdGVyVmFs''@;'; put 'put ''dWVDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmZpbHRlclZhbHVlPWQpfSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtSZSgiY2xyRmlsdGVyUGxhY2Vob2xkZXIiLGEuZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIpKCJjbHJEZ1N0cmluZ0ZpbHRlciIsYS5yZWdp''@;'; put 'put ''c3RlcmVkKSgiY2xyRmlsdGVyVmFsdWUiLGEuZmlsdGVyVmFsdWUpfX1mdW5jdGlvbiBPUmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItZGctbnVtZXJpYy1maWx0ZXIiLDEyKSxFdCgiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxa''@;'; put 'put ''dChHZSgpLmZpbHRlclZhbHVlPWQpfSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtSZSgiY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXIiLGEuZmlsdGVyTnVtYmVyTWF4UGxhY2Vob2xkZXIpKCJjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlciIsYS5maWx0ZXJOdW1iZXJNaW5QbGFjZWhvbGRlciko''@;'; put 'put ''ImNsckRnTnVtZXJpY0ZpbHRlciIsYS5yZWdpc3RlcmVkKSgiY2xyRmlsdGVyVmFsdWUiLGEuZmlsdGVyVmFsdWUpfX1mdW5jdGlvbiBEUmUobCxjKXsxJmwmJkRyKDAsMSl9ZnVuY3Rpb24gSVJlKGwsYyl7MSZsJiZlcygwKX1mdW5jdGlvbiBSUmUobCxjKXtpZigxJmwmJih5ZSgwLCJzcGFu''@;'; put 'put ''IiwxMyksdHQoMSxJUmUsMSwwLCJuZy1jb250YWluZXIiLDgpLENlKCkpLDImbCl7R2UoKTtjb25zdCBhPVFpKDYpO1NlKDEpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixhKX19ZnVuY3Rpb24gTFJlKGwsYyl7MSZsJiZ0bigwLCJjbHItZGctY29sdW1uLXNlcGFyYXRvciIpfWNvbnN0IFBSZT1b''@;'; put 'put ''W1siY2xyLWRnLWZpbHRlciJdLFsiY2xyLWRnLXN0cmluZy1maWx0ZXIiXSxbImNsci1kZy1udW1lcmljLWZpbHRlciJdXSwiKiJdLEZSZT1bImNsci1kZy1maWx0ZXIsIGNsci1kZy1zdHJpbmctZmlsdGVyLCBjbHItZGctbnVtZXJpYy1maWx0ZXIiLCIqIl07ZnVuY3Rpb24gSFJlKGwsYyl7''@;'; put 'put ''MSZsJiZ0bigwLCJkaXYiLDQpfWZ1bmN0aW9uIE5SZShsLGMpezEmbCYmRHIoMCwwLFsiKm5nSWYiLCJlbXB0eURhdGFncmlkIl0pfWZ1bmN0aW9uIFZSZShsLGMpe2lmKDEmbCYmKFdyKDApLHllKDEsImJ1dHRvbiIsMSksdG4oMiwiY2RzLWljb24iLDIpLENlKCksR3IoKSksMiZsKXtjb25z''@;'; put 'put ''dCBhPUdlKCk7U2UoMiksUnIoInRpdGxlIixhLmNvbW1vblN0cmluZ3Mua2V5cy5pbmZvKX19Y29uc3QgQlJlPVsiY2VsbFBvcnRhbCJdO2Z1bmN0aW9uIGpSZShsLGMpezEmbCYmRHIoMCl9Y29uc3QgelJlPVsicm93UG9ydGFsIl07ZnVuY3Rpb24gVVJlKGwsYyl7MSZsJiZEcigwKX1jb25z''@;'; put 'put ''dCBaUmU9WyJkZXRhaWxCdXR0b24iXSxZUmU9WyJzdGlja3lDZWxscyJdLFdSZT1bInNjcm9sbGFibGVDZWxscyJdLEdSZT1bImNhbGN1bGF0ZWRDZWxscyJdO2Z1bmN0aW9uICRSZShsLGMpe31mdW5jdGlvbiBLUmUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItZXhwYW5kYWJsZS1hbmltYXRp''@;'; put 'put ''b24iLDcpLHR0KDEsJFJlLDAsMCwibmctdGVtcGxhdGUiLDgpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKSxmPVFpKDYpO1JlKCJjbHJFeHBhbmRUcmlnZ2VyIixhLmV4cGFuZEFuaW1hdGlvblRyaWdnZXIpLFNlKDEpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixmKX19ZnVuY3Rpb24gcVJlKGws''@;'; put 'put ''Yyl7fWZ1bmN0aW9uIFhSZShsLGMpezEmbCYmdHQoMCxxUmUsMCwwLCJuZy10ZW1wbGF0ZSIsOCksMiZsJiYoR2UoMiksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLFFpKDYpKSl9ZnVuY3Rpb24gSlJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw2KSxFdCgibW91c2Vkb3du''@;'; put 'put ''IixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5jbGVhclJhbmdlcyhkKSl9KSgiY2xpY2siLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKTtyZXR1cm4gWnQoaC5zZWxlY3RSb3coIWguc2VsZWN0ZWQsZCkpfSksdHQoMSxLUmUsMiwyLCJjbHItZXhwYW5kYWJsZS1hbmlt''@;'; put 'put ''YXRpb24iLDEpLHR0KDIsWFJlLDEsMSxudWxsLDIpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nSWYiLGEuZXhwYW5kLmV4cGFuZGFibGUpLFNlKDEpLFJlKCJuZ0lmIiwhYS5leHBhbmQuZXhwYW5kYWJsZSl9fWZ1bmN0aW9uIFFSZShsLGMpe31mdW5jdGlvbiBlTGUo''@;'; put 'put ''bCxjKXtpZigxJmwmJih5ZSgwLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDcpLHR0KDEsUVJlLDAsMCwibmctdGVtcGxhdGUiLDgpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLGY9UWkoNik7UmUoImNsckV4cGFuZFRyaWdnZXIiLGEuZXhwYW5kQW5pbWF0aW9uVHJpZ2dlciksU2UoMSks''@;'; put 'put ''UmUoIm5nVGVtcGxhdGVPdXRsZXQiLGYpfX1mdW5jdGlvbiB0TGUobCxjKXt9ZnVuY3Rpb24gbkxlKGwsYyl7MSZsJiZ0dCgwLHRMZSwwLDAsIm5nLXRlbXBsYXRlIiw4KSwyJmwmJihHZSgpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixRaSg2KSkpfWZ1bmN0aW9uIHJMZShsLGMpezEmbCYmRHIo''@;'; put 'put ''MCl9Y29uc3QgV2xlPWZ1bmN0aW9uKGwpe3JldHVybnsiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCI6bH19O2Z1bmN0aW9uIGlMZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMTkpKDEsImNsci1jaGVja2JveC13cmFwcGVyIikoMiwiaW5wdXQiLDIwKSxFdCgibmdN''@;'; put 'put ''b2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnRvZ2dsZShkKSl9KSxDZSgpLHllKDMsImxhYmVsIiwyMSksRXQoImNsaWNrIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoMikuY2xlYXJSYW5nZXMoZCkpfSkseWUoNCwic3BhbiIsMjIpLFllKDUp''@;'; put 'put ''LENlKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1JlKCJuZ0NsYXNzIixfaCg3LFdsZSwhYS5jbHJEZ1NlbGVjdGFibGUpKSxTZSgyKSxSZSgibmdNb2RlbCIsYS5zZWxlY3RlZCkoImlkIixhLmNoZWNrYm94SWQpKCJkaXNhYmxlZCIsIWEuY2xyRGdTZWxlY3RhYmxlfHxudWxsKSxS''@;'; put 'put ''cigiYXJpYS1kaXNhYmxlZCIsIWEuY2xyRGdTZWxlY3RhYmxlfHxudWxsKSxTZSgxKSxSZSgiZm9yIixhLmNoZWNrYm94SWQpLFNlKDIpLGFyKGEuY2xyRGdSb3dBcmlhTGFiZWx8fGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdCl9fWZ1bmN0aW9uIG9MZShsLGMpe2lmKDEmbCl7Y29uc3Qg''@;'; put 'put ''YT1abigpO3llKDAsImRpdiIsMTkpKDEsImNsci1yYWRpby13cmFwcGVyIikoMiwiaW5wdXQiLDIzKSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPWQpfSksQ2UoKSx5ZSgzLCJsYWJlbCIsMjQpKDQs''@;'; put 'put ''InNwYW4iLDIyKSxZZSg1KSxDZSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtSZSgibmdDbGFzcyIsX2goMTAsV2xlLCFhLmNsckRnU2VsZWN0YWJsZSkpLFNlKDIpLFJlKCJpZCIsYS5yYWRpb0lkKSgibmFtZSIsYS5zZWxlY3Rpb24uaWQrIi1yYWRpbyIpKCJ2YWx1ZSIsYS5pdGVt''@;'; put 'put ''KSgibmdNb2RlbCIsYS5zZWxlY3Rpb24uY3VycmVudFNpbmdsZSkoImNoZWNrZWQiLGEuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGU9PT1hLml0ZW0pKCJkaXNhYmxlZCIsIWEuY2xyRGdTZWxlY3RhYmxlfHxudWxsKSxScigiYXJpYS1kaXNhYmxlZCIsIWEuY2xyRGdTZWxlY3RhYmxlfHxudWxs''@;'; put 'put ''KSxTZSgxKSxSZSgiZm9yIixhLnJhZGlvSWQpLFNlKDIpLGFyKGEuY2xyRGdSb3dBcmlhTGFiZWx8fGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdCl9fWZ1bmN0aW9uIGFMZShsLGMpezEmbCYmKHllKDAsImRpdiIsMjUpLERyKDEsMiksQ2UoKSl9ZnVuY3Rpb24gbExlKGwsYyl7aWYoMSZs''@;'; put 'put ''KXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiwyOSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSg0KS50b2dnbGVFeHBhbmQoKSl9KSx0bigxLCJjZHMtaWNvbiIsMzApLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKDQpO1JyKCJhcmlhLWV4cGFuZGVkIixhLmV4''@;'; put 'put ''cGFuZC5leHBhbmRlZCkoImFyaWEtbGFiZWwiLGEuZXhwYW5kLmV4cGFuZGVkP2EuY2xyRGdEZXRhaWxDbG9zZUxhYmVsOmEuY2xyRGdEZXRhaWxPcGVuTGFiZWwpKCJhcmlhLWNvbnRyb2xzIixhLmV4cGFuZGFibGVJZCksU2UoMSksUnIoImRpcmVjdGlvbiIsYS5leHBhbmQuZXhwYW5kZWQ/''@;'; put 'put ''ImRvd24iOiJyaWdodCIpKCJ0aXRsZSIsYS5leHBhbmQuZXhwYW5kZWQ/YS5jb21tb25TdHJpbmdzLmtleXMuY29sbGFwc2U6YS5jb21tb25TdHJpbmdzLmtleXMuZXhwYW5kKX19ZnVuY3Rpb24gc0xlKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXNwaW5uZXIiLDMxKSxZZSgxKSxDZSgpKSwy''@;'; put 'put ''Jmwpe2NvbnN0IGE9R2UoNCk7U2UoMSksYXIoYS5jb21tb25TdHJpbmdzLmtleXMubG9hZGluZyl9fWZ1bmN0aW9uIHVMZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsbExlLDIsNSwiYnV0dG9uIiwyNyksdHQoMixzTGUsMiwxLCJjbHItc3Bpbm5lciIsMjgpLEdyKCkpLDImbCl7Y29uc3Qg''@;'; put 'put ''YT1HZSgzKTtTZSgxKSxSZSgibmdJZiIsIWEuZXhwYW5kLmxvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixhLmV4cGFuZC5sb2FkaW5nKX19ZnVuY3Rpb24gY0xlKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwyNiksdHQoMSx1TGUsMywyLCJuZy1jb250YWluZXIiLDIpLENlKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1HZSgyKTtTZSgxKSxSZSgibmdJZiIsYS5leHBhbmQuZXhwYW5kYWJsZSl9fWZ1bmN0aW9uIGZMZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMzIpKDEsImJ1dHRvbiIsMzMsMzQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPVFpKDIpLGg9''@;'; put 'put ''R2UoMik7cmV0dXJuIFp0KGguZGV0YWlsU2VydmljZS50b2dnbGUoaC5pdGVtLGQpKX0pLHRuKDMsImNkcy1pY29uIiwzNSksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSxncigiaXMtb3BlbiIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihhLml0ZW0pKSxScigiYXJpYS1s''@;'; put 'put ''YWJlbCIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihhLml0ZW0pP2EuY2xyRGdEZXRhaWxDbG9zZUxhYmVsOmEuY2xyRGdEZXRhaWxPcGVuTGFiZWwpKCJhcmlhLWV4cGFuZGVkIixhLmRldGFpbFNlcnZpY2UuaXNPcGVuKSgiYXJpYS1jb250cm9scyIsYS5kZXRhaWxTZXJ2aWNlLmlkKSxT''@;'; put 'put ''ZSgyKSxScigiZGlyZWN0aW9uIixhLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGEuaXRlbSk/ImxlZnQiOiJyaWdodCIpKCJ0aXRsZSIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihhLml0ZW0pP2EuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlOmEuY29tbW9uU3RyaW5ncy5rZXlzLm9wZW4p''@;'; put 'put ''fX1mdW5jdGlvbiBkTGUobCxjKXt9ZnVuY3Rpb24gaExlKGwsYyl7MSZsJiZ0dCgwLGRMZSwwLDAsIm5nLXRlbXBsYXRlIiw4KSwyJmwmJihHZSgyKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsUWkoNCkpKX1mdW5jdGlvbiBwTGUobCxjKXt9ZnVuY3Rpb24gbUxlKGwsYyl7MSZsJiZ0dCgwLHBM''@;'; put 'put ''ZSwwLDAsIm5nLXRlbXBsYXRlIiw4KSwyJmwmJihHZSgyKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsUWkoNCkpKX1jb25zdCBnTGU9ZnVuY3Rpb24obCl7cmV0dXJueyJpcy1yZXBsYWNlZCI6bH19O2Z1bmN0aW9uIHZMZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsOSkoMSwiZGl2IiwxMCks''@;'; put 'put ''V3IoMixudWxsLDExKSx0dCg0LGlMZSw2LDksImRpdiIsMTIpLHR0KDUsb0xlLDYsMTIsImRpdiIsMTIpLHR0KDYsYUxlLDIsMCwiZGl2IiwxMyksdHQoNyxjTGUsMiwxLCJkaXYiLDE0KSx0dCg4LGZMZSw0LDcsImRpdiIsMTUpLEdyKCksQ2UoKSx5ZSg5LCJkaXYiLDE2KSgxMCwiZGl2Iiwx''@;'; put 'put ''NyksRHIoMTEsMSksZXMoMTIsbnVsbCwxOCksQ2UoKSx0dCgxNCxoTGUsMSwxLG51bGwsMiksdHQoMTUsbUxlLDEsMSxudWxsLDIpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7Z3IoImRhdGFncmlkLXJvdy1kZXRhaWwtb3BlbiIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihhLml0ZW0p''@;'; put 'put ''KSxSZSgiaWQiLGEuaWQpLFNlKDQpLFJlKCJuZ0lmIixhLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09YS5TRUxFQ1RJT05fVFlQRS5NdWx0aSksU2UoMSksUmUoIm5nSWYiLGEuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1hLlNFTEVDVElPTl9UWVBFLlNpbmdsZSksU2UoMSksUmUoIm5n''@;'; put 'put ''SWYiLGEucm93QWN0aW9uU2VydmljZS5oYXNBY3Rpb25hYmxlUm93KSxTZSgxKSxSZSgibmdJZiIsYS5nbG9iYWxFeHBhbmRhYmxlLmhhc0V4cGFuZGFibGVSb3cpLFNlKDEpLFJlKCJuZ0lmIixhLmRldGFpbFNlcnZpY2UuZW5hYmxlZCksU2UoMSksUmUoIm5nQ2xhc3MiLF9oKDExLGdMZSxh''@;'; put 'put ''LnJlcGxhY2VkJiZhLmV4cGFuZGVkKSksU2UoNSksUmUoIm5nSWYiLGEucmVwbGFjZWQmJiFhLmV4cGFuZC5sb2FkaW5nKSxTZSgxKSxSZSgibmdJZiIsIWEucmVwbGFjZWQmJiFhLmV4cGFuZC5sb2FkaW5nKX19Y29uc3QgeUxlPVtbWyJjbHItZGctcm93LWRldGFpbCJdXSxbWyJjbHItZGct''@;'; put 'put ''Y2VsbCJdXSxbWyJjbHItZGctYWN0aW9uLW92ZXJmbG93Il1dXSxiTGU9WyJjbHItZGctcm93LWRldGFpbCIsImNsci1kZy1jZWxsIiwiY2xyLWRnLWFjdGlvbi1vdmVyZmxvdyJdLF9MZT1bImRhdGFncmlkVGFibGUiXSx3TGU9WyJzY3JvbGxhYmxlQ29sdW1ucyJdLENMZT1bInByb2plY3Rl''@;'; put 'put ''ZERpc3BsYXlDb2x1bW5zIl0sU0xlPVsicHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zIl0sTUxlPVsiZGlzcGxheWVkUm93cyJdLGtMZT1bImNhbGN1bGF0aW9uUm93cyJdO2Z1bmN0aW9uIEVMZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMjQpLEV0KCJrZXlkb3du''@;'; put 'put ''LnNwYWNlIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCk7cmV0dXJuIGguYWxsU2VsZWN0ZWQ9IWguYWxsU2VsZWN0ZWQsWnQoZC5wcmV2ZW50RGVmYXVsdCgpKX0pLHllKDEsImRpdiIsMjUpKDIsImlucHV0IiwyNiksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVy''@;'; put 'put ''biBVdChhKSxadChHZSgpLmFsbFNlbGVjdGVkPWQpfSksQ2UoKSx5ZSgzLCJsYWJlbCIsMjcpKDQsInNwYW4iLDI4KSxZZSg1KSxDZSgpKCkoKSx0big2LCJkaXYiLDI5KSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLFJlKCJpZCIsYS5zZWxlY3RBbGxJZCkoIm5nTW9kZWwiLGEu''@;'; put 'put ''YWxsU2VsZWN0ZWQpLFJyKCJhcmlhLWxhYmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwpLFNlKDEpLFJlKCJmb3IiLGEuc2VsZWN0QWxsSWQpLFNlKDIpLGFyKGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCl9fWZ1bmN0aW9uIHhMZShsLGMpezEmbCYmKHllKDAsImRp''@;'; put 'put ''diIsMzApLHRuKDEsImRpdiIsMjkpLENlKCkpLDImbCYmUnIoImFyaWEtbGFiZWwiLEdlKCkuY2xyRGdTaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWwpfWZ1bmN0aW9uIEFMZShsLGMpezEmbCYmKHllKDAsImRpdiIsMzEpLHRuKDEsImRpdiIsMjkpLENlKCkpLDImbCYmUnIoImFyaWEtbGFiZWwi''@;'; put 'put ''LEdlKCkuY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsKX1mdW5jdGlvbiBUTGUobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDMyKSx0bigxLCJkaXYiLDI5KSxDZSgpKSwyJmwmJlJyKCJhcmlhLWxhYmVsIixHZSgpLmNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWwpfWZ1bmN0aW9uIE9M''@;'; put 'put ''ZShsLGMpezEmbCYmdG4oMCwiY2xyLWRnLXBsYWNlaG9sZGVyIil9ZnVuY3Rpb24gRExlKGwsYyl7MSZsJiYoeWUoMCwiZGl2IiwzMykoMSwiY2xyLXNwaW5uZXIiLDM0KSxZZSgyLCJMb2FkaW5nIiksQ2UoKSgpKX1jb25zdCBJTGU9W1tbImNsci1kZy1hY3Rpb24tYmFyIl1dLFtbImNsci1k''@;'; put 'put ''Zy1wbGFjZWhvbGRlciJdXSxbWyJjbHItZGctZm9vdGVyIl1dLFtbIiIsImNscklmRGV0YWlsIiwiIl0sWyJjbHItZGctZGV0YWlsIl1dXSxSTGU9WyJjbHItZGctYWN0aW9uLWJhciIsImNsci1kZy1wbGFjZWhvbGRlciIsImNsci1kZy1mb290ZXIiLCJbY2xySWZEZXRhaWxdLGNsci1kZy1k''@;'; put 'put ''ZXRhaWwiXSxQTGU9WyJhbGxTZWxlY3RlZCJdO2Z1bmN0aW9uIEZMZShsLGMpe2lmKDEmbCYmKFdyKDApLHllKDEsImgyIiksWWUoMiksQ2UoKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMiksYXIoYS5jb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVtbnMpfX1mdW5jdGlvbiBITGUo''@;'; put 'put ''bCxjKXt9ZnVuY3Rpb24gTkxlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwibGkiKSgxLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDIsImlucHV0IiwxNCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe2NvbnN0IG09VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgy''@;'; put 'put ''KS50b2dnbGVDb2x1bW5TdGF0ZShtLCFkKSl9KSxDZSgpLHllKDMsImxhYmVsIiksdHQoNCxITGUsMCwwLCJuZy10ZW1wbGF0ZSIsMTUpLENlKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDIpO1NlKDIpLFJlKCJkaXNhYmxlZCIsZi5oYXNPbmx5T25lVmlzaWJsZUNv''@;'; put 'put ''bHVtbiYmIWEuaGlkZGVuKSgibmdNb2RlbCIsIWEuaGlkZGVuKSxTZSgyKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsYS50aXRsZVRlbXBsYXRlUmVmKX19ZnVuY3Rpb24gVkxlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIiwxNiks''@;'; put 'put ''RXQoImNsckFsbFNlbGVjdGVkIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgyKS5hbGxDb2x1bW5zU2VsZWN0ZWQoKSl9KSxZZSgxKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSx3cigiICIsYS5jb21tb25TdHJpbmdzLmtleXMuc2VsZWN0QWxsLCIgIil9fWZ1bmN0''@;'; put 'put ''aW9uIEJMZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMikoMSwiZGl2IiwzKSgyLCJkaXYiLDQsNSksWWUoNCksQ2UoKSx0dCg1LEZMZSwzLDEsIm5nLWNvbnRhaW5lciIsNiksRHIoNikseWUoNywiYnV0dG9uIiw3KSx0big4LCJjZHMtaWNvbiIsOCkseWUoOSwic3BhbiIsOSksWWUoMTAp''@;'; put 'put ''LENlKCkoKSgpLHllKDExLCJ1bCIsMTApLHR0KDEyLE5MZSw1LDMsImxpIiwxMSksQ2UoKSx5ZSgxMywiZGl2IiwxMiksRHIoMTQsMSksdHQoMTUsVkxlLDIsMSwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIiwxMyksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtSZSgiaWQiLGEucG9w''@;'; put 'put ''b3ZlcklkKSxScigiYXJpYS1sYWJlbCIsYS5jb21tb25TdHJpbmdzLmtleXMuc2hvd0NvbHVtbnNNZW51RGVzY3JpcHRpb24pLFNlKDQpLGFyKGEuY29tbW9uU3RyaW5ncy5rZXlzLmFsbENvbHVtbnNTZWxlY3RlZCksU2UoMSksUmUoIm5nSWYiLCFhLmN1c3RvbVRvZ2dsZVRpdGxlKSxTZSgy''@;'; put 'put ''KSxScigiYXJpYS1sYWJlbCIsYS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLFNlKDEpLFJyKCJ0aXRsZSIsYS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLFNlKDIpLGFyKGEuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSxTZSgyKSxSZSgibmdGb3JPZiIsYS5oaWRlYWJsZUNvbHVtblN0''@;'; put 'put ''YXRlcykoIm5nRm9yVHJhY2tCeSIsYS50cmFja0J5Rm4pLFNlKDMpLFJlKCJuZ0lmIiwhYS5jdXN0b21Ub2dnbGVCdXR0b24pfX1jb25zdCBqTGU9W1tbImNsci1kZy1jb2x1bW4tdG9nZ2xlLXRpdGxlIl1dLFtbImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiJdXV0sekxlPVsiY2xyLWRn''@;'; put 'put ''LWNvbHVtbi10b2dnbGUtdGl0bGUiLCJjbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iXTtmdW5jdGlvbiBZTGUobCxjKXtpZigxJmwmJihXcigwKSx5ZSgxLCJkaXYiLDEpKDIsImNsci1jaGVja2JveC13cmFwcGVyIiwyKSx0bigzLCJpbnB1dCIsMykseWUoNCwibGFiZWwiKSxZZSg1KSxD''@;'; put 'put ''ZSgpLHllKDYsInNwYW4iLDQpLFllKDcpLENlKCkoKSgpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDUpLGFyKGEuc2VsZWN0aW9uLmN1cnJlbnQubGVuZ3RoKSxTZSgyKSxhcihhLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RlZFJvd3MpfX1mdW5jdGlvbiBXTGUobCxjKXsxJmwmJnRu''@;'; put 'put ''KDAsImNsci1kZy1jb2x1bW4tdG9nZ2xlIil9ZnVuY3Rpb24gR0xlKGwsYyl7aWYoMSZsJiYoV3IoMCksRHIoMSwxKSx0dCgyLFdMZSwxLDAsImNsci1kZy1jb2x1bW4tdG9nZ2xlIiwwKSx5ZSgzLCJkaXYiLDUpLERyKDQsMiksQ2UoKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgyKSxS''@;'; put 'put ''ZSgibmdJZiIsYS5oYXNIaWRlYWJsZUNvbHVtbnMmJiFhLnRvZ2dsZSl9fWNvbnN0ICRMZT1bW1siY2xyLWRnLXBhZ2luYXRpb24iXV0sW1siY2xyLWRnLWNvbHVtbi10b2dnbGUiXV0sIioiXSxLTGU9WyJjbHItZGctcGFnaW5hdGlvbiIsImNsci1kZy1jb2x1bW4tdG9nZ2xlIiwiKiJdO2Z1''@;'; put 'put ''bmN0aW9uIHFMZShsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsMyksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJuZ1ZhbHVlIixhKSxTZSgxKSxhcihhKX19Y29uc3QgWExlPVsiY3VycmVudFBhZ2VJbnB1dCJdO2Z1bmN0aW9uIEpMZShsLGMpezEmbCYmKHll''@;'; put 'put ''KDAsImRpdiIsNCksRHIoMSwxKSxDZSgpKX1mdW5jdGlvbiBRTGUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJpbnB1dCIsMTcsMTgpLEV0KCJrZXlkb3duLmVudGVyIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoMykudXBkYXRlQ3VycmVudFBhZ2UoZCkpfSkoImJs''@;'; put 'put ''dXIiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgzKS51cGRhdGVDdXJyZW50UGFnZShkKSl9KSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgzKTtSZSgic2l6ZSIsYS5wYWdlLmxhc3QudG9TdHJpbmcoKS5sZW5ndGgpKCJ2YWx1ZSIsYS5wYWdlLmN1cnJlbnQpLFJyKCJhcmlhLWxh''@;'; put 'put ''YmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5jdXJyZW50UGFnZSl9fWZ1bmN0aW9uIGVQZShsLGMpe2lmKDEmbCYmKHllKDAsInNwYW4iKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMSksYXIoYS5wYWdlLmN1cnJlbnQpfX1mdW5jdGlvbiB0UGUobCxjKXtpZigxJmwpe2Nv''@;'; put 'put ''bnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDUpKDEsImJ1dHRvbiIsNiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgyKS5wYWdlLmN1cnJlbnQ9MSl9KSx5ZSgyLCJzcGFuIiw3KSxZZSgzKSxDZSgpLHRuKDQsImNkcy1pY29uIiw4KSxDZSgpLHllKDUsImJ1dHRvbiIs''@;'; put 'put ''OSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMik7cmV0dXJuIFp0KGQucGFnZS5jdXJyZW50PWQucGFnZS5jdXJyZW50LTEpfSkseWUoNiwic3BhbiIsNyksWWUoNyksQ2UoKSx0big4LCJjZHMtaWNvbiIsMTApLENlKCksdHQoOSxRTGUsMiwzLCJpbnB1dCIsMTEp''@;'; put 'put ''LHR0KDEwLGVQZSwyLDEsIm5nLXRlbXBsYXRlIixudWxsLDEyLEt1KSxZZSgxMiwiIFx4YTAvXHhhMCIpLHllKDEzLCJzcGFuIiksWWUoMTQpLENlKCkseWUoMTUsImJ1dHRvbiIsMTMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBadChkLnBhZ2Uu''@;'; put 'put ''Y3VycmVudD1kLnBhZ2UuY3VycmVudCsxKX0pLHllKDE2LCJzcGFuIiw3KSxZZSgxNyksQ2UoKSx0bigxOCwiY2RzLWljb24iLDE0KSxDZSgpLHllKDE5LCJidXR0b24iLDE1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gWnQoZC5wYWdlLmN1cnJl''@;'; put 'put ''bnQ9ZC5wYWdlLmxhc3QpfSkseWUoMjAsInNwYW4iLDcpLFllKDIxKSxDZSgpLHRuKDIyLCJjZHMtaWNvbiIsMTYpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMTEpLGY9R2UoMik7U2UoMSksUmUoImRpc2FibGVkIixmLnBhZ2UuY3VycmVudDw9MSksUnIoImFyaWEtbGFiZWwiLGYuY29t''@;'; put 'put ''bW9uU3RyaW5ncy5rZXlzLmZpcnN0UGFnZSksU2UoMiksYXIoZi5jb21tb25TdHJpbmdzLmtleXMuZmlyc3RQYWdlKSxTZSgyKSxSZSgiZGlzYWJsZWQiLGYucGFnZS5jdXJyZW50PD0xKSxScigiYXJpYS1sYWJlbCIsZi5jb21tb25TdHJpbmdzLmtleXMucHJldmlvdXNQYWdlKSxTZSgyKSxh''@;'; put 'put ''cihmLmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLFNlKDIpLFJlKCJuZ0lmIiwhZi5kaXNhYmxlQ3VycmVudFBhZ2VJbnB1dCkoIm5nSWZFbHNlIixhKSxTZSg0KSxScigiYXJpYS1sYWJlbCIsZi5jb21tb25TdHJpbmdzLmtleXMudG90YWxQYWdlcyksU2UoMSksYXIoZi5wYWdl''@;'; put 'put ''Lmxhc3QpLFNlKDEpLFJlKCJkaXNhYmxlZCIsZi5wYWdlLmN1cnJlbnQ+PWYucGFnZS5sYXN0KSxScigiYXJpYS1sYWJlbCIsZi5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpLFNlKDIpLGFyKGYuY29tbW9uU3RyaW5ncy5rZXlzLm5leHRQYWdlKSxTZSgyKSxSZSgiZGlzYWJsZWQiLGYu''@;'; put 'put ''cGFnZS5jdXJyZW50Pj1mLnBhZ2UubGFzdCksUnIoImFyaWEtbGFiZWwiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmxhc3RQYWdlKSxTZSgyKSxhcihmLmNvbW1vblN0cmluZ3Mua2V5cy5sYXN0UGFnZSl9fWZ1bmN0aW9uIG5QZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsSkxlLDIsMCwiZGl2''@;'; put 'put ''IiwxKSx5ZSgyLCJkaXYiLDIpLERyKDMpLENlKCksdHQoNCx0UGUsMjMsMTYsImRpdiIsMyksR3IoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nSWYiLGEuX3BhZ2VTaXplQ29tcG9uZW50KSxTZSgzKSxSZSgibmdJZiIsYS5wYWdlLmxhc3Q+MSl9fWZ1bmN0aW9uIHJQZShsLGMp''@;'; put 'put ''e2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEsImRpdiIsMTkpLFllKDIpLENlKCkseWUoMywiZGl2Iiw1KSg0LCJidXR0b24iLDkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCk7cmV0dXJuIFp0KGQucGFnZS5jdXJyZW50PWQucGFnZS5jdXJyZW50LTEp''@;'; put 'put ''fSkseWUoNSwic3BhbiIsNyksWWUoNiksQ2UoKSx0big3LCJjZHMtaWNvbiIsMTApLENlKCkseWUoOCwic3BhbiIpLFllKDkpLENlKCkseWUoMTAsImJ1dHRvbiIsMTMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCk7cmV0dXJuIFp0KGQucGFnZS5jdXJyZW50PWQu''@;'; put 'put ''cGFnZS5jdXJyZW50KzEpfSkseWUoMTEsInNwYW4iLDcpLFllKDEyKSxDZSgpLHRuKDEzLCJjZHMtaWNvbiIsMTQpLENlKCkoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLE8wKCIgIixhLnBhZ2UuZmlyc3RJdGVtKzEsIi0iLGEucGFnZS5sYXN0SXRlbSsxLCIgLyAiLGEucGFn''@;'; put 'put ''ZS50b3RhbEl0ZW1zLCIgIiksU2UoMiksUmUoImRpc2FibGVkIixhLnBhZ2UuY3VycmVudDw9MSksUnIoImFyaWEtbGFiZWwiLGEuY29tbW9uU3RyaW5ncy5rZXlzLnByZXZpb3VzUGFnZSksU2UoMiksYXIoYS5jb21tb25TdHJpbmdzLmtleXMucHJldmlvdXNQYWdlKSxTZSgzKSxhcihhLnBh''@;'; put 'put ''Z2UuY3VycmVudCksU2UoMSksUmUoImRpc2FibGVkIixhLnBhZ2UuY3VycmVudD49YS5wYWdlLmxhc3QpLFJyKCJhcmlhLWxhYmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0UGFnZSksU2UoMiksYXIoYS5jb21tb25TdHJpbmdzLmtleXMubmV4dFBhZ2UpfX1jb25zdCBpUGU9WyIqIixb''@;'; put 'put ''WyJjbHItZGctcGFnZS1zaXplIl1dXSxvUGU9WyIqIiwiY2xyLWRnLXBhZ2Utc2l6ZSJdO2Z1bmN0aW9uIGFQZShsLGMpezEmbCYmdG4oMCwiY2RzLWljb24iLDcpLDImbCYmUnIoImRpcmVjdGlvbiIsR2UoKS5jYXJldERpcmVjdGlvbil9ZnVuY3Rpb24gbFBlKGwsYyl7aWYoMSZsJiYoeWUo''@;'; put 'put ''MCwic3BhbiIsOCksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksYXIoYS5jb21tb25TdHJpbmdzLmtleXMuc3RhY2tWaWV3Q2hhbmdlZCl9fWZ1bmN0aW9uIHNQZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsOSksRHIoMSwyKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtX''@;'; put 'put ''YygiaGVpZ2h0IixhLmV4cGFuZGVkPyJhdXRvIjowKSxScigiaWQiLGEuZ2V0U3RhY2tDaGlsZHJlbklkKCkpKCJhcmlhLWxhYmVsbGVkYnkiLGEubGFiZWxsZWRCeUlkKX19Y29uc3QgdVBlPVtbWyJjbHItc3RhY2stbGFiZWwiXV0sIioiLFtbImNsci1zdGFjay1ibG9jayJdXV0sY1BlPVsi''@;'; put 'put ''Y2xyLXN0YWNrLWxhYmVsIiwiKiIsImNsci1zdGFjay1ibG9jayJdLGZQZT1bW1siY2xyLXN0YWNrLWhlYWRlciJdXSwiKiJdLGRQZT1bImNsci1zdGFjay1oZWFkZXIiLCIqIl07ZnVuY3Rpb24gX1BlKGwsYyl7MSZsJiZlcygwKX1mdW5jdGlvbiB3UGUobCxjKXtpZigxJmwmJihXcigwKSx0''@;'; put 'put ''dCgxLF9QZSwxLDAsIm5nLWNvbnRhaW5lciIsMiksR3IoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9R2UoMik7U2UoMSksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGYuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbi50ZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixmLmdl''@;'; put 'put ''dENvbnRleHQoYSkpfX1mdW5jdGlvbiBDUGUobCxjKXtpZigxJmwmJihXcigwKSx0dCgxLHdQZSwyLDIsIm5nLWNvbnRhaW5lciIsMSksR3IoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nRm9yT2YiLChudWxsPT1hLnBhcmVudD9udWxsOmEucGFyZW50LmNoaWxkcmVuKXx8YS5j''@;'; put 'put ''aGlsZHJlbil9fWNvbnN0IFNQZT1bImNvbnRlbnRDb250YWluZXIiXTtmdW5jdGlvbiBNUGUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5leHBhbmRTZXJ2aWNlLnRvZ2dsZSgpKX0p''@;'; put 'put ''KCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5mb2N1c1RyZWVOb2RlKCkpfSksdG4oMSwiY2RzLWljb24iLDEwKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJyKCJkaXJlY3Rpb24iLGEuZXhwYW5kU2VydmljZS5leHBhbmRlZD8iZG93biI6InJpZ2h0''@;'; put 'put ''Iil9fWZ1bmN0aW9uIGtQZShsLGMpezEmbCYmKHllKDAsImRpdiIsMTEpLHRuKDEsInNwYW4iLDEyKSxDZSgpKX1mdW5jdGlvbiBFUGUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDEzKSgxLCJpbnB1dCIsMTQpLEV0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7VXQoYSk7Y29u''@;'; put 'put ''c3QgZD1HZSgpO3JldHVybiBadChkLl9tb2RlbC50b2dnbGVTZWxlY3Rpb24oZC5mZWF0dXJlc1NlcnZpY2UuZWFnZXIpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5mb2N1c1RyZWVOb2RlKCkpfSksQ2UoKSx0bigyLCJsYWJlbCIsMTUpLENlKCl9aWYoMiZs''@;'; put 'put ''KXtjb25zdCBhPUdlKCk7U2UoMSksYmgoImlkIiwiIixhLm5vZGVJZCwiLWNoZWNrIiksUmUoImNoZWNrZWQiLGEuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09YS5TVEFURVMuU0VMRUNURUQpKCJpbmRldGVybWluYXRlIixhLl9tb2RlbC5zZWxlY3RlZC52YWx1ZT09PWEuU1RBVEVTLklOREVU''@;'; put 'put ''RVJNSU5BVEUpLFNlKDEpLGJoKCJmb3IiLCIiLGEubm9kZUlkLCItY2hlY2siKX19ZnVuY3Rpb24geFBlKGwsYyl7MSZsJiYoeWUoMCwic3BhbiIpLFllKDEsIiBzZWxlY3RlZCIpLENlKCkpfWZ1bmN0aW9uIEFQZShsLGMpezEmbCYmKHllKDAsInNwYW4iKSxZZSgxLCIgdW5zZWxlY3RlZCIp''@;'; put 'put ''LENlKCkpfWZ1bmN0aW9uIFRQZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTYpLHR0KDEseFBlLDIsMCwic3BhbiIsMTcpLHR0KDIsQVBlLDIsMCwic3BhbiIsMTcpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0lmIixhLmFyaWFTZWxlY3RlZCksU2UoMSksUmUoIm5n''@;'; put 'put ''SWYiLCFhLmFyaWFTZWxlY3RlZCl9fWNvbnN0IE9QZT1bIioiLFtbImNsci10cmVlLW5vZGUiXV0sW1siIiwiY2xySWZFeHBhbmRlZCIsIiJdXV0sRFBlPVsiKiIsImNsci10cmVlLW5vZGUiLCJbY2xySWZFeHBhbmRlZF0iXTtmdW5jdGlvbiBJUGUobCxjKXsxJmwmJnRuKDAsImNsci1yZWN1''@;'; put 'put ''cnNpdmUtY2hpbGRyZW4iLDEpLDImbCYmUmUoImNoaWxkcmVuIixHZSgpLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24ucm9vdCl9ZnVuY3Rpb24gUlBlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiw0KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEp''@;'; put 'put ''LFp0KEdlKDIpLmNsb3NlKCkpfSksdG4oMSwiY2RzLWljb24iLDUpLENlKCl9MiZsJiZScigiYXJpYS1sYWJlbCIsR2UoMikuY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWwpfWZ1bmN0aW9uIExQZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMSkoMSwiZGl2IiwyKSxEcigyKSxDZSgpLHR0KDMs''@;'; put 'put ''UlBlLDIsMSwiYnV0dG9uIiwzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtncigiYWxlcnQtaGlkZGVuIixhLmhpZGRlbikoImFsZXJ0LXNtIixhLmlzU21hbGwpKCJhbGVydC1hcHAtbGV2ZWwiLGEuaXNBcHBMZXZlbCksUmUoIm5nQ2xhc3MiLGEuYWxlcnRDbGFzcyksU2UoMyksUmUoIm5n''@;'; put 'put ''SWYiLGEuY2xvc2FibGUpfX1mdW5jdGlvbiBQUGUobCxjKXsxJmwmJnRuKDAsImNsci1hbGVydHMtcGFnZXIiLDEpLDImbCYmUmUoImNsckN1cnJlbnRBbGVydEluZGV4IixHZSgpLmN1cnJlbnRBbGVydEluZGV4KX1jb25zdCBGUGU9W1tbImNsci1hbGVydCJdXV0sSFBlPVsiY2xyLWFsZXJ0''@;'; put 'put ''Il07ZnVuY3Rpb24gQlBlKGwsYyl7MSZsJiZEcigwKX1jb25zdCBqUGU9WyJ0YWJDb250ZW50UHJvamVjdGVkUmVmIl07ZnVuY3Rpb24gelBlKGwsYyl7aWYoMSZsJiYoeWUoMCwic2VjdGlvbiIsMSksRHIoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7Z3IoImFjdGl2ZSIsYS5hY3RpdmUp''@;'; put 'put ''LFJlKCJpZCIsYS50YWJDb250ZW50SWQpKCJoaWRkZW4iLCFhLmFjdGl2ZSksUnIoImFyaWEtbGFiZWxsZWRieSIsYS5hcmlhTGFiZWxsZWRCeSkoImFyaWEtaGlkZGVuIiwhYS5hY3RpdmUpfX1jb25zdCBVUGU9WyJ0YWJDb250ZW50Vmlld0NvbnRhaW5lciJdO2Z1bmN0aW9uIFpQZShsLGMp''@;'; put 'put ''e2lmKDEmbCYmKFdyKDApLHllKDEsImxpIiw0KSxlcygyLDUpLENlKCksR3IoKSksMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1NlKDIpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixhLnRlbXBsYXRlUmVmQ29udGFpbmVyLnRlbXBsYXRlKX19ZnVuY3Rpb24gWVBlKGwsYyl7aWYoMSZsJiYo''@;'; put 'put ''V3IoMCksdHQoMSxaUGUsMywxLCJuZy1jb250YWluZXIiLDIpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKCk7U2UoMSksUmUoIm5nSWYiLGEudGFic0lkPT09Zi50YWJzSWQmJiFhLmluT3ZlcmZsb3cpfX1mdW5jdGlvbiBXUGUobCxjKXsxJmwmJmVzKDAsNSksMiZsJiZS''@;'; put 'put ''ZSgibmdUZW1wbGF0ZU91dGxldCIsR2UoKS4kaW1wbGljaXQudGVtcGxhdGVSZWZDb250YWluZXIudGVtcGxhdGUpfWZ1bmN0aW9uIEdQZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsV1BlLDEsMSwibmctY29udGFpbmVyIiwxMyksR3IoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9''@;'; put 'put ''R2UoMyk7U2UoMSksUmUoIm5nSWYiLGEudGFic0lkPT09Zi50YWJzSWQmJmEuaW5PdmVyZmxvdyl9fWZ1bmN0aW9uICRQZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10YWItb3ZlcmZsb3ctY29udGVudCIsMTIpLEV0KCJrZXlkb3duLmVzY2FwZSIsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gVXQoYSksWnQoR2UoMikuY2xvc2VPbkVzY2FwZUtleSgpKX0sMCxMMikoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKSxHZSgpO2NvbnN0IGg9UWkoNCk7cmV0dXJuIFp0KEdlKCkuY2xvc2VPbk91dHNpZGVDbGljayhkLGgpKX0sITEsTDIpKCJmb2N1c291dCIsZnVuY3Rpb24oZCl7''@;'; put 'put ''cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmNsb3NlT25Gb2N1c091dChkKSl9KSx0dCgxLEdQZSwyLDEsIm5nLWNvbnRhaW5lciIsMSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nRm9yT2YiLGEudGFiTGlua0RpcmVjdGl2ZXMpfX1mdW5jdGlvbiBLUGUobCxjKXtpZigx''@;'; put 'put ''Jmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJkaXYiLDYpKDIsImxpIiw3KSgzLCJidXR0b24iLDgsOSksRXQoIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5fbW91c2Vkb3duPSEwKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2Uo''@;'; put 'put ''KS5vcGVuT3ZlcmZsb3dPbkZvY3VzKCkpfSkoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnRvZ2dsZU92ZXJmbG93T25DbGljaygpKX0pLHRuKDUsImNkcy1pY29uIiwxMCksQ2UoKSgpLHR0KDYsJFBlLDIsMSwiY2xyLXRhYi1vdmVyZmxvdy1jb250ZW50IiwxMSks''@;'; put 'put ''Q2UoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLGdyKCJvcGVuIixhLnRvZ2dsZVNlcnZpY2Uub3BlbiksU2UoMiksZ3IoImFjdGl2ZSIsYS5hY3RpdmVUYWJJbk92ZXJmbG93KSgib3BlbiIsYS50b2dnbGVTZXJ2aWNlLm9wZW4pLFJyKCJ0YWJpbmRleCIsYS5hY3RpdmVUYWJJ''@;'; put 'put ''bk92ZXJmbG93JiYhYS50b2dnbGVTZXJ2aWNlLm9wZW4/MDotMSkoInRpdGxlIixhLmNvbW1vblN0cmluZ3Mua2V5cy5tb3JlKSxTZSgyKSxScigidGl0bGUiLGEuY29tbW9uU3RyaW5ncy5rZXlzLm1vcmUpLFNlKDEpLFJlKCJuZ0lmIixhLnRvZ2dsZVNlcnZpY2Uub3Blbil9fWZ1bmN0aW9u''@;'; put 'put ''IHFQZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsMyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnRvZ2dsZUJ5QnV0dG9uKCkpfSksdG4oMSwiY2RzLWljb24iLDQpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7Z3IoIm9uLWNv''@;'; put 'put ''bGxhcHNlIixhLmNvbGxhcHNlZCksUnIoImFyaWEtZXhwYW5kZWQiLGEuYXJpYUV4cGFuZGVkKSgiYXJpYS1sYWJlbCIsYS5jb21tb25TdHJpbmdzLmtleXMudmVydGljYWxOYXZUb2dnbGUpLFNlKDEpLFJyKCJkaXJlY3Rpb24iLGEuY29sbGFwc2VkPyJyaWdodCI6ImxlZnQiKSgidGl0bGUi''@;'; put 'put ''LGEuY29sbGFwc2VkP2EuY29tbW9uU3RyaW5ncy5rZXlzLmV4cGFuZDphLmNvbW1vblN0cmluZ3Mua2V5cy5jb2xsYXBzZSl9fWZ1bmN0aW9uIFhQZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsNSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxa''@;'; put 'put ''dChHZSgpLmNvbGxhcHNlZD0hMSl9KSxDZSgpfTImbCYmUnIoImFyaWEtbGFiZWwiLEdlKCkuY29tbW9uU3RyaW5ncy5rZXlzLnZlcnRpY2FsTmF2VG9nZ2xlKX1jb25zdCBlRmU9WyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiXSx0RmU9W1tbIiIsImNsclZlcnRpY2FsTmF2SWNvbiIsIiJdXSwi''@;'; put 'put ''KiJdLG5GZT1bIltjbHJWZXJ0aWNhbE5hdkljb25dIiwiKiJdO2Z1bmN0aW9uIHJGZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsMTEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikuY2xvc2UoKSl9KSx0bigxLCJjZHMtaWNvbiIs''@;'; put 'put ''MTIpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1JyKCJhcmlhLWxhYmVsIixhLmNsb3NlQnV0dG9uQXJpYUxhYmVsfHxhLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSl9fWZ1bmN0aW9uIGlGZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMSkoMSwiZGl2IiwyKSxF''@;'; put 'put ''dCgiQGZhZGVEb3duLmRvbmUiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmZhZGVEb25lKGQpKX0pLHllKDIsImRpdiIsMyksWWUoMyksQ2UoKSx5ZSg0LCJkaXYiLDQpLERyKDUpLHllKDYsImRpdiIsNSkoNywiZGl2Iiw2KSg4LCJkaXYiLDcpLERyKDksMSksQ2UoKSx0dCgx''@;'; put 'put ''MCxyRmUsMiwxLCJidXR0b24iLDgpLENlKCkseWUoMTEsImRpdiIsOSksRHIoMTIsMiksQ2UoKSxEcigxMywzKSxDZSgpKCkseWUoMTQsImRpdiIsMyksWWUoMTUpLENlKCkoKSx5ZSgxNiwiZGl2IiwxMCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKTtyZXR1cm4g''@;'; put 'put ''WnQoZC5zdGF0aWNCYWNrZHJvcHx8ZC5jbG9zZSgpKX0pLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxncigibW9kYWwtc20iLCJzbSI9PWEuc2l6ZSkoIm1vZGFsLWxnIiwibGciPT1hLnNpemUpKCJtb2RhbC14bCIsInhsIj09YS5zaXplKSxSZSgiQGZhZGVEb3duIixhLnNr''@;'; put 'put ''aXBBbmltYXRpb24pLFJyKCJhcmlhLWhpZGRlbiIsIWEuX29wZW4pKCJhcmlhLWxhYmVsbGVkYnkiLGEubGFiZWxsZWRCeSksU2UoMiksYXIoYS5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50U3RhcnQpLFNlKDUpLFJ1KCJpZCIsYS5tb2RhbElkKSxTZSgyKSxSZSgibmdJZiIsYS5j''@;'; put 'put ''bG9zYWJsZSksU2UoNSksYXIoYS5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kKSxTZSgxKSxSZSgiQGZhZGUiLHZvaWQgMCl9fWNvbnN0IG9GZT1bW1siIiw4LCJtb2RhbC1uYXYiXV0sW1siIiw4LCJtb2RhbC10aXRsZSJdXSxbWyIiLDgsIm1vZGFsLWJvZHkiXV0sW1siIiw4''@;'; put 'put ''LCJtb2RhbC1mb290ZXIiXV1dLGFGZT1bIi5tb2RhbC1uYXYiLCIubW9kYWwtdGl0bGUiLCIubW9kYWwtYm9keSIsIi5tb2RhbC1mb290ZXIiXTtsZXQgUmw9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGly''@;'; put 'put ''PVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1pY29uIl1dfSksbH0pKCksSmE9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNkcy1pY29uIl1dfSksbH0p''@;'; put 'put ''KCksbGw9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvXV19KSxsfSkoKTtjbGFzcyBRQ3t9dmFyIFhjPWZ1bmN0aW9uKGwpe3Jl''@;'; put 'put ''dHVybiBsW2wuREVGQVVMVD0wXT0iREVGQVVMVCIsbFtsLkxPQURJTkc9MV09IkxPQURJTkciLGxbbC5TVUNDRVNTPTJdPSJTVUNDRVNTIixsW2wuRVJST1I9M109IkVSUk9SIixsfShYY3x8e30pO2xldCBKYz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMubGlzdGVuZXI9YSx0''@;'; put 'put ''aGlzLl9sb2FkaW5nU3RhdGU9WGMuREVGQVVMVH1nZXQgbG9hZGluZ1N0YXRlKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmdTdGF0ZX1zZXQgbG9hZGluZ1N0YXRlKGEpeyEwPT09YT9hPVhjLkxPQURJTkc6YXx8KGE9WGMuREVGQVVMVCksYSE9PXRoaXMuX2xvYWRpbmdTdGF0ZSYmKHRoaXMuX2xv''@;'; put 'put ''YWRpbmdTdGF0ZT1hLHRoaXMubGlzdGVuZXImJnRoaXMubGlzdGVuZXIubG9hZGluZ1N0YXRlQ2hhbmdlKGEpKX1uZ09uRGVzdHJveSgpe3RoaXMubG9hZGluZ1N0YXRlPVhjLkRFRkFVTFR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFFDLDgp''@;'; put 'put ''KX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyTG9hZGluZyIsIiJdXSxpbnB1dHM6e2xvYWRpbmdTdGF0ZTpbImNsckxvYWRpbmciLCJsb2FkaW5nU3RhdGUiXX19KSxsfSkoKSxRYz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5leHBhbmRhYmxl''@;'; put 'put ''PTAsdGhpcy5fbG9hZGluZz0hMSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9leHBhbmRDaGFuZ2U9bmV3IHdlfWdldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9c2V0IGxvYWRpbmcoYSl7KGE9ISFhKSE9PXRoaXMuX2xvYWRpbmcmJih0aGlzLl9sb2FkaW5nPWEpfWdldCBleHBh''@;'; put 'put ''bmRlZCgpe3JldHVybiB0aGlzLl9leHBhbmRlZH1zZXQgZXhwYW5kZWQoYSl7KGE9ISFhKSE9PXRoaXMuX2V4cGFuZGVkJiYodGhpcy5fZXhwYW5kZWQ9YSx0aGlzLl9leHBhbmRDaGFuZ2UubmV4dChhKSl9Z2V0IGV4cGFuZENoYW5nZSgpe3JldHVybiB0aGlzLl9leHBhbmRDaGFuZ2UuYXNP''@;'; put 'put ''YnNlcnZhYmxlKCl9dG9nZ2xlKCl7dGhpcy5leHBhbmRlZD0hdGhpcy5fZXhwYW5kZWR9bG9hZGluZ1N0YXRlQ2hhbmdlKGEpe3RoaXMubG9hZGluZz1hPT09WGMuTE9BRElOR319cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1o''@;'; put 'put ''cih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksT0ZlPTA7ZnVuY3Rpb24gSHUoKXtyZXR1cm4iY2xyLWlkLSIrT0ZlKyt9bGV0IEdsZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9''@;'; put 'put ''a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiJdLFsiY2xyLXN0ZXAtZGVzY3JpcHRpb24iXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9uIiwhMCl9LG5nQ29udGVu''@;'; put 'put ''dFNlbGVjdG9yczpPbyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxsfSkoKTt2YXIgSjI9ZnVuY3Rpb24obCl7cmV0dXJuIGwuSW5hY3RpdmU9ImluYWN0aXZlIixsLkVy''@;'; put 'put ''cm9yPSJlcnJvciIsbC5Db21wbGV0ZT0iY29tcGxldGUiLGx9KEoyfHx7fSk7Y29uc3Qga2Q9IjAuMnMgZWFzZS1pbi1vdXQiLERGZT1bQzEoInNraXBJbml0aWFsUmVuZGVyIixbYnUoIjplbnRlciIsW10pXSksQzEoInRvZ2dsZSIsW2J1KCJ2b2lkID0+ICoiLFtDYSh7ZGlzcGxheToiYmxv''@;'; put 'put ''Y2siLGhlaWdodDowfSksY2Moa2QsQ2Eoe2hlaWdodDoiKiJ9KSldKV0pXSxtVT0oQzEoInNraXBJbml0aWFsUmVuZGVyIixbYnUoIjplbnRlciIsW10pXSksQzEoInRvZ2dsZSIsW2J1KCJ2b2lkID0+ICoiLFtDYSh7ZGlzcGxheToiYmxvY2siLGhlaWdodDowfSksY2Moa2QsQ2Eoe2hlaWdo''@;'; put 'put ''dDoiKiJ9KSldKSxidSgiKiA9PiB2b2lkIixbQ2Eoe2Rpc3BsYXk6ImJsb2NrIn0pLGNjKGtkLENhKHtoZWlnaHQ6MCxkaXNwbGF5OiJub25lIn0pKV0pXSkse29wZW46Ik9wZW4iLGNsb3NlOiJDbG9zZSIsc2hvdzoiU2hvdyIsaGlkZToiSGlkZSIsZXhwYW5kOiJFeHBhbmQiLGNvbGxhcHNl''@;'; put 'put ''OiJDb2xsYXBzZSIsbW9yZToiTW9yZSIsc2VsZWN0OiJTZWxlY3QiLHNlbGVjdEFsbDoiU2VsZWN0IEFsbCIscHJldmlvdXM6IlByZXZpb3VzIixuZXh0OiJOZXh0IixjdXJyZW50OiJKdW1wIHRvIGN1cnJlbnQiLGluZm86IkluZm8iLHN1Y2Nlc3M6IlN1Y2Nlc3MiLHdhcm5pbmc6Ildhcm5p''@;'; put 'put ''bmciLGRhbmdlcjoiRXJyb3IiLHJvd0FjdGlvbnM6IkF2YWlsYWJsZSBhY3Rpb25zIixwaWNrQ29sdW1uczoiTWFuYWdlIENvbHVtbnMiLHNob3dDb2x1bW5zOiJTaG93IENvbHVtbnMiLHNvcnRDb2x1bW46IlNvcnQgQ29sdW1uIixmaXJzdFBhZ2U6IkZpcnN0IFBhZ2UiLGxhc3RQYWdlOiJM''@;'; put 'put ''YXN0IFBhZ2UiLG5leHRQYWdlOiJOZXh0IFBhZ2UiLHByZXZpb3VzUGFnZToiUHJldmlvdXMgUGFnZSIsY3VycmVudFBhZ2U6IkN1cnJlbnQgUGFnZSIsdG90YWxQYWdlczoiVG90YWwgUGFnZXMiLGZpbHRlckl0ZW1zOiJGaWx0ZXIgaXRlbXMiLG1pblZhbHVlOiJNaW4gdmFsdWUiLG1heFZh''@;'; put 'put ''bHVlOiJNYXggdmFsdWUiLG1vZGFsQ29udGVudFN0YXJ0OiJCZWdpbm5pbmcgb2YgTW9kYWwgQ29udGVudCIsbW9kYWxDb250ZW50RW5kOiJFbmQgb2YgTW9kYWwgQ29udGVudCIsc2hvd0NvbHVtbnNNZW51RGVzY3JpcHRpb246IlNob3cgb3IgaGlkZSBjb2x1bW5zIG1lbnUiLGFsbENvbHVt''@;'; put 'put ''bnNTZWxlY3RlZDoiQWxsIGNvbHVtbnMgc2VsZWN0ZWQiLHNpZ25wb3N0VG9nZ2xlOiJTaWducG9zdCBUb2dnbGUiLHNpZ25wb3N0Q2xvc2U6IlNpZ25wb3N0IENsb3NlIixsb2FkaW5nOiJMb2FkaW5nIixkZXRhaWxQYW5lU3RhcnQ6IlN0YXJ0IG9mIHJvdyBkZXRhaWxzIixkZXRhaWxQYW5l''@;'; put 'put ''RW5kOiJFbmQgb2Ygcm93IGRldGFpbHMiLHNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbDoiU2luZ2xlIHNlbGVjdGlvbiBoZWFkZXIiLHNpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWw6IlNpbmdsZSBhY3Rpb25hYmxlIGhlYWRlciIsZGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbDoiVG9nZ2xlIG1v''@;'; put 'put ''cmUgcm93IGNvbnRlbnQiLGRhdGFncmlkRmlsdGVyQXJpYUxhYmVsOiJUb2dnbGUge0NPTFVNTn0gZmlsdGVyIixkYXRhZ3JpZEZpbHRlckRpYWxvZ0FyaWFMYWJlbDoiRmlsdGVyIGRpYWxvZyIsY29sdW1uU2VwYXJhdG9yQXJpYUxhYmVsOiJDb2x1bW4gcmVzaXplIGhhbmRsZSIsY29sdW1u''@;'; put 'put ''U2VwYXJhdG9yRGVzY3JpcHRpb246IlVzZSBsZWZ0IG9yIHJpZ2h0IGtleSB0byByZXNpemUgdGhlIGNvbHVtbiIsYWxlcnRDbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgYWxlcnQiLGFsZXJ0TmV4dEFsZXJ0QXJpYUxhYmVsOiJOZXh0IGFsZXJ0IG1lc3NhZ2UsIHtDVVJSRU5UfSBvZiB7''@;'; put 'put ''Q09VTlR9IixhbGVydFByZXZpb3VzQWxlcnRBcmlhTGFiZWw6IlByZXZpb3VzIGFsZXJ0IG1lc3NhZ2UsIHtDVVJSRU5UfSBvZiB7Q09VTlR9IixkYXRlcGlja2VyRGlhbG9nTGFiZWw6IkNob29zZSBkYXRlIixkYXRlcGlja2VyVG9nZ2xlOiJUb2dnbGUgZGF0ZXBpY2tlciIsZGF0ZXBpY2tl''@;'; put 'put ''clRvZ2dsZUNob29zZURhdGVMYWJlbDoiQ2hvb3NlIGRhdGUiLGRhdGVwaWNrZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWw6IkNoYW5nZSBkYXRlLCB7U0VMRUNURURfREFURX0iLGRhdGVwaWNrZXJQcmV2aW91c01vbnRoOiJQcmV2aW91cyBtb250aCIsZGF0ZXBpY2tlckN1cnJlbnRNb250aDoi''@;'; put 'put ''Q3VycmVudCBtb250aCIsZGF0ZXBpY2tlck5leHRNb250aDoiTmV4dCBtb250aCIsZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlOiJQcmV2aW91cyBkZWNhZGUiLGRhdGVwaWNrZXJOZXh0RGVjYWRlOiJOZXh0IGRlY2FkZSIsZGF0ZXBpY2tlckN1cnJlbnREZWNhZGU6IkN1cnJlbnQgZGVjYWRl''@;'; put 'put ''IixkYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0OiJTZWxlY3QgbW9udGgsIHRoZSBjdXJyZW50IG1vbnRoIGlzIHtDQUxFTkRBUl9NT05USH0iLGRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dDoiU2VsZWN0IHllYXIsIHRoZSBjdXJyZW50IHllYXIgaXMge0NBTEVOREFSX1lFQVJ9IixkYXRlcGlj''@;'; put 'put ''a2VyU2VsZWN0ZWRMYWJlbDoie0ZVTExfREFURX0gLSBTZWxlY3RlZCIsc3RhY2tWaWV3Q2hhbmdlZDoiVmFsdWUgY2hhbmdlZC4iLHJlc3BvbnNpdmVOYXZUb2dnbGVPcGVuOiJOYXZpZ2F0aW9uIG1lbnUiLHJlc3BvbnNpdmVOYXZUb2dnbGVDbG9zZToiTmF2aWdhdGlvbiBtZW51IixyZXNw''@;'; put 'put ''b25zaXZlTmF2T3ZlcmZsb3dPcGVuOiJOYXZpZ2F0aW9uIG92ZXJmbG93IG1lbnUiLHJlc3BvbnNpdmVOYXZPdmVyZmxvd0Nsb3NlOiJOYXZpZ2F0aW9uIG92ZXJmbG93IG1lbnUiLHZlcnRpY2FsTmF2R3JvdXBUb2dnbGU6IlRvZ2dsZSB2ZXJ0aWNhbCBuYXZpZ2F0aW9uIGdyb3VwIix2ZXJ0''@;'; put 'put ''aWNhbE5hdlRvZ2dsZToiVG9nZ2xlIHZlcnRpY2FsIG5hdmlnYXRpb24iLHRpbWVsaW5lU3RlcE5vdFN0YXJ0ZWQ6Ik5vdCBzdGFydGVkIix0aW1lbGluZVN0ZXBDdXJyZW50OiJDdXJyZW50Iix0aW1lbGluZVN0ZXBTdWNjZXNzOiJDb21wbGV0ZWQiLHRpbWVsaW5lU3RlcEVycm9yOiJFcnJv''@;'; put 'put ''ciIsdGltZWxpbmVTdGVwUHJvY2Vzc2luZzoiSW4gcHJvZ3Jlc3MiLGNvbWJvYm94RGVsZXRlOiJEZWxldGUgc2VsZWN0ZWQgb3B0aW9uIixjb21ib2JveFNlYXJjaGluZzonU2VhcmNoaW5nIGZvciBtYXRjaGVzIGZvciAie0lOUFVUfSInLGNvbWJvYm94U2VsZWN0aW9uOiJTZWxlY3Rpb24i''@;'; put 'put ''LGNvbWJvYm94U2VsZWN0ZWQ6IlNlbGVjdGVkIixjb21ib2JveE5vUmVzdWx0czoiTm8gcmVzdWx0cyIsY29tYm9ib3hPcGVuOiJTaG93IG9wdGlvbnMiLGRhdGFncmlkRXhwYW5kYWJsZUJlZ2lubmluZ09mOiJCZWdpbm5pbmcgb2YiLGRhdGFncmlkRXhwYW5kYWJsZUVuZE9mOiJFbmQgb2Yi''@;'; put 'put ''LGRhdGFncmlkRXhwYW5kYWJsZVJvd0NvbnRlbnQ6IkV4cGFuZGFibGUgcm93IGNvbnRlbnQiLGRhdGFncmlkRXhwYW5kYWJsZVJvd3NIZWxwZXJUZXh0OiJTY3JlZW4gcmVhZGVyIHRhYmxlIGNvbW1hbmRzIG1heSBub3Qgd29yayBmb3Igdmlld2luZyBleHBhbmRlZCBjb250ZW50LCBwbGVh''@;'; put 'put ''c2UgdXNlIHlvdXIgc2NyZWVuIHJlYWRlcidzIGJyb3dzZSBtb2RlIHRvIHJlYWQgdGhlIGNvbnRlbnQgZXhwb3NlZCBieSB0aGlzIGJ1dHRvbiIsd2l6YXJkU3RlcFN1Y2Nlc3M6IkNvbXBsZXRlZCIsd2l6YXJkU3RlcEVycm9yOiJFcnJvciIsd2l6YXJkU3RlcG5hdkFyaWFMYWJlbDoiU3Rl''@;'; put 'put ''cCBuYXZpZ2F0aW9uIixwYXNzd29yZEhpZGU6IkhpZGUgcGFzc3dvcmQiLHBhc3N3b3JkU2hvdzoiU2hvdyBwYXNzd29yZCIsc2VsZWN0ZWRSb3dzOiJTZWxlY3RlZCByb3dzIn0pO2xldCBUYT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RyaW5ncz1tVX1nZXQga2V5cygp''@;'; put 'put ''e3JldHVybiB0aGlzLl9zdHJpbmdzfWxvY2FsaXplKGEpe3RoaXMuX3N0cmluZ3M9ey4uLnRoaXMuX3N0cmluZ3MsLi4uYX19cGFyc2UoYSxmPXt9KXtjb25zdCBkPU9iamVjdC5rZXlzKGYpO2xldCBoPWE7cmV0dXJuIGQubGVuZ3RoJiZkLmZvckVhY2gobT0+e2g9aC5yZXBsYWNlKGB7JHtt''@;'; put 'put ''fX1gLGZbbV0pfSksaH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7dmFyIGVTPWZ1bmN0aW9uKGwpe3JldHVybiBsLkRl''@;'; put 'put ''ZmF1bHQ9ImRlZmF1bHQiLGwuTXVsdGk9Im11bHRpIixsfShlU3x8e30pO2xldCBSRmU9MDtjbGFzcyBMRmV7Y29uc3RydWN0b3IoYyxhKXt0aGlzLmlkPWMsdGhpcy5hY2NvcmRpb25JZD1hLHRoaXMuc3RhdHVzPUoyLkluYWN0aXZlLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmRpc2FibGVkPSEx''@;'; put 'put ''LHRoaXMub3Blbj0hMSx0aGlzLnRlbXBsYXRlSWQ9YCR7dGhpcy5pZH0tJHt0aGlzLmFjY29yZGlvbklkfWB9fWNsYXNzICRsZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyYXRlZ3k9ZVMuRGVmYXVsdCx0aGlzLmFjY29yZGlvbkNvdW50PVJGZSsrLHRoaXMuX3BhbmVscz17fX1nZXQgcGFuZWxz''@;'; put 'put ''KCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3BhbmVscykubWFwKGM9PnRoaXMuX3BhbmVsc1tjXSl9c2V0U3RyYXRlZ3koYyl7dGhpcy5zdHJhdGVneT1jfXVwZGF0ZVBhbmVsT3JkZXIoYyl7Yy5mb3JFYWNoKChhLGYpPT50aGlzLl9wYW5lbHNbYV0uaW5kZXg9ZiksdGhpcy5yZW1vdmVP''@;'; put 'put ''bGRQYW5lbHMoYyl9YWRkUGFuZWwoYyxhPSExKXt0aGlzLl9wYW5lbHNbY109bmV3IExGZShjLHRoaXMuYWNjb3JkaW9uQ291bnQpLHRoaXMuX3BhbmVsc1tjXS5vcGVuPWF9dG9nZ2xlUGFuZWwoYyxhKXtjb25zdCBkPXZvaWQgMCE9PWE/YTohdGhpcy5fcGFuZWxzW2NdLm9wZW47ZCYmdGhp''@;'; put 'put ''cy5zdHJhdGVneT09PWVTLkRlZmF1bHQmJnRoaXMuY2xvc2VBbGxQYW5lbHMoKSx0aGlzLl9wYW5lbHNbY10ub3Blbj1kfWRpc2FibGVQYW5lbChjLGEpe3RoaXMuX3BhbmVsc1tjXS5kaXNhYmxlZD1hfWNsb3NlQWxsUGFuZWxzKCl7dGhpcy5wYW5lbHMuZm9yRWFjaChjPT50aGlzLl9wYW5l''@;'; put 'put ''bHNbYy5pZF0ub3Blbj0hMSl9cmVtb3ZlT2xkUGFuZWxzKGMpe3RoaXMucGFuZWxzLmZpbHRlcihhPT52b2lkIDA9PT1jLmZpbmQoZj0+Zj09PWEuaWQpKS5mb3JFYWNoKGE9PmRlbGV0ZSB0aGlzLl9wYW5lbHNbYS5pZF0pfX1sZXQgdFM9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3Ro''@;'; put 'put ''aXMuYWNjb3JkaW9uPW5ldyAkbGUsdGhpcy5fcGFuZWxzQ2hhbmdlcz1uZXcgT2UodGhpcy5hY2NvcmRpb24ucGFuZWxzKX1nZXRQYW5lbENoYW5nZXMoYSl7cmV0dXJuIHRoaXMuX3BhbmVsc0NoYW5nZXMucGlwZShFZShmPT5mLmZpbmQoZD0+ZC5pZD09PWEpKSl9c2V0U3RyYXRlZ3koYSl7''@;'; put 'put ''dGhpcy5hY2NvcmRpb24uc2V0U3RyYXRlZ3koYSl9YWRkUGFuZWwoYSxmPSExKXt0aGlzLmFjY29yZGlvbi5hZGRQYW5lbChhLGYpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX10b2dnbGVQYW5lbChhLGYpe3RoaXMuYWNjb3JkaW9uLnRvZ2dsZVBhbmVsKGEsZiksdGhpcy5lbWl0VXBkYXRl''@;'; put 'put ''ZFBhbmVscygpfWRpc2FibGVQYW5lbChhLGYpe3RoaXMuYWNjb3JkaW9uLmRpc2FibGVQYW5lbChhLGYpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX11cGRhdGVQYW5lbE9yZGVyKGEpe3RoaXMuYWNjb3JkaW9uLnVwZGF0ZVBhbmVsT3JkZXIoYSksdGhpcy5lbWl0VXBkYXRlZFBhbmVscygp''@;'; put 'put ''fWVtaXRVcGRhdGVkUGFuZWxzKCl7dGhpcy5fcGFuZWxzQ2hhbmdlcy5uZXh0KHRoaXMuYWNjb3JkaW9uLnBhbmVscyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30p''@;'; put 'put ''LGx9KSgpLHFEPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuY29tbW9uU3RyaW5ncz1hLHRoaXMuYWNjb3JkaW9uU2VydmljZT1mLHRoaXMuaWZFeHBhbmRTZXJ2aWNlPWQsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnBhbmVsT3Blbj0hMSx0aGlzLnBhbmVsT3BlbkNoYW5n''@;'; put 'put ''ZT1uZXcgeHIsdGhpcy5BY2NvcmRpb25TdGF0dXM9SjIsdGhpcy5pc0FjY29yZGlvbj0hMCx0aGlzLl9pZD1IdSgpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoYSl7dGhpcy5faWQ9YX1uZ09uSW5pdCgpe3RoaXMucGFuZWw9dGhpcy5hY2NvcmRpb25TZXJ2aWNlLmdldFBhbmVs''@;'; put 'put ''Q2hhbmdlcyh0aGlzLmlkKS5waXBlKHF1KGE9PnRoaXMuZW1pdFBhbmVsQ2hhbmdlKGEpKSksdGhpcy5hY2NvcmRpb25TZXJ2aWNlLmFkZFBhbmVsKHRoaXMuaWQsdGhpcy5wYW5lbE9wZW4pLHRoaXMuYWNjb3JkaW9uU2VydmljZS50b2dnbGVQYW5lbCh0aGlzLmlkLHRoaXMucGFuZWxPcGVu''@;'; put 'put ''KSx0aGlzLmFjY29yZGlvblNlcnZpY2UuZGlzYWJsZVBhbmVsKHRoaXMuaWQsdGhpcy5kaXNhYmxlZCl9bmdPbkNoYW5nZXMoYSl7dGhpcy5wYW5lbCYmYS5wYW5lbE9wZW4mJmEucGFuZWxPcGVuLmN1cnJlbnRWYWx1ZSE9PWEucGFuZWxPcGVuLnByZXZpb3VzVmFsdWUmJnRoaXMuYWNjb3Jk''@;'; put 'put ''aW9uU2VydmljZS50b2dnbGVQYW5lbCh0aGlzLmlkLGEucGFuZWxPcGVuLmN1cnJlbnRWYWx1ZSksdGhpcy5wYW5lbCYmYS5kaXNhYmxlZCYmYS5kaXNhYmxlZC5jdXJyZW50VmFsdWUhPT1hLmRpc2FibGVkLnByZXZpb3VzVmFsdWUmJnRoaXMuYWNjb3JkaW9uU2VydmljZS5kaXNhYmxlUGFu''@;'; put 'put ''ZWwodGhpcy5pZCxhLmRpc2FibGVkLmN1cnJlbnRWYWx1ZSl9dG9nZ2xlUGFuZWwoKXt0aGlzLmFjY29yZGlvblNlcnZpY2UudG9nZ2xlUGFuZWwodGhpcy5pZCl9Y29sbGFwc2VQYW5lbE9uQW5pbWF0aW9uRG9uZShhKXthLm9wZW58fCh0aGlzLmlmRXhwYW5kU2VydmljZS5leHBhbmRlZD0h''@;'; put 'put ''MSl9Z2V0UGFuZWxTdGF0ZUNsYXNzZXMoYSl7cmV0dXJuYGNsci1hY2NvcmRpb24tcGFuZWwtJHthLnN0YXR1c30gJHthLm9wZW4/ImNsci1hY2NvcmRpb24tcGFuZWwtb3BlbiI6IiJ9YH1nZXRBY2NvcmRpb25Db250ZW50SWQoYSl7cmV0dXJuYGNsci1hY2NvcmRpb24tY29udGVudC0ke2F9''@;'; put 'put ''J2B9Z2V0QWNjb3JkaW9uSGVhZGVySWQoYSl7cmV0dXJuYGNsci1hY2NvcmRpb24taGVhZGVyLSR7YX1gfWVtaXRQYW5lbENoYW5nZShhKXthLm9wZW4hPT10aGlzLnBhbmVsT3BlbiYmKHRoaXMucGFuZWxPcGVuQ2hhbmdlLmVtaXQoYS5vcGVuKSx0aGlzLnBhbmVsT3Blbj1hLm9wZW4pLGEu''@;'; put 'put ''b3BlbiYmKHRoaXMuaWZFeHBhbmRTZXJ2aWNlLmV4cGFuZGVkPSEwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVGEpLHJ0KHRTKSxydChRYykpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLXBh''@;'; put 'put ''bmVsIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsR2xlLDQpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYuYWNjb3JkaW9uRGVzY3JpcHRpb249aCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImNsci1hY2Nv''@;'; put 'put ''cmRpb24tcGFuZWwiLCEwKX0saW5wdXRzOntkaXNhYmxlZDpbImNsckFjY29yZGlvblBhbmVsRGlzYWJsZWQiLCJkaXNhYmxlZCJdLHBhbmVsT3BlbjpbImNsckFjY29yZGlvblBhbmVsT3BlbiIsInBhbmVsT3BlbiJdfSxvdXRwdXRzOntwYW5lbE9wZW5DaGFuZ2U6ImNsckFjY29yZGlvblBh''@;'; put 'put ''bmVsT3BlbkNoYW5nZSJ9LGZlYXR1cmVzOltyaShbUWNdKSxibF0sbmdDb250ZW50U2VsZWN0b3JzOllsZSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1s0LCJuZ0lmIl0sWyJhcmlhLWxpdmUiLCJhc3NlcnRpdmUiLCJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzMsIm5nQ2xhc3Mi''@;'; put 'put ''XSxbMSwiY2xyLWFjY29yZGlvbi1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbiIsMywiaWQiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJoZWFkZXJCdXR0b24iLCIiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwiY2xyLWFjY29yZGlvbi1zdGF0''@;'; put 'put ''dXMiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCIsMSwiY2xyLWFjY29yZGlvbi1hbmdsZSJdLFsxLCJjbHItYWNjb3JkaW9uLW51bWJlciJdLFsic3RhdHVzIiwiZGFuZ2VyIiwic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsImNsci1hY2NvcmRpb24tZXJyb3It''@;'; put 'put ''aWNvbiJdLFsic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwxLCJjbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb24iXSxbInJvbGUiLCJyZWdpb24iLDEsImNsci1hY2NvcmRpb24tY29udGVudC1yZWdpb24iLDMsImlkIl0sWyJjbGFzcyIsImNsci1hY2NvcmRpb24t''@;'; put 'put ''Y29udGVudCIsNCwibmdJZiJdLFsiYXJpYS1saXZlIiwiYXNzZXJ0aXZlIiwxLCJjbHItc3Itb25seSJdLFsxLCJjbHItYWNjb3JkaW9uLWNvbnRlbnQiXSxbMSwiY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoWmxlKSx0dCgw''@;'; put 'put ''LE9EZSwxOSwxOCwibmctY29udGFpbmVyIiwwKSx3bCgxLCJhc3luYyIpKSwyJmEmJlJlKCJuZ0lmIixKcygxLDEsZi5wYW5lbCkpfSxkZXBlbmRlbmNpZXM6WyRpLHl1LEphLHpPXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOkRGZX0sY2hhbmdlRGV0ZWN0aW9uOjB9KSxsfSko''@;'; put 'put ''KSxLbGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmFjY29yZGlvblNlcnZpY2U9YSx0aGlzLm11bHRpUGFuZWw9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdfW5nT25Jbml0KCl7dGhpcy5zZXRBY2NvcmRpb25TdHJhdGVneSgpfW5nT25DaGFuZ2VzKGEpe2EubXVsdGlQYW5l''@;'; put 'put ''bC5jdXJyZW50VmFsdWUhPT1hLm11bHRpUGFuZWwucHJldmlvdXNWYWx1ZSYmdGhpcy5zZXRBY2NvcmRpb25TdHJhdGVneSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yRE9NQ2hhbmdlcygpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vi''@;'; put 'put ''c2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9c2V0QWNjb3JkaW9uU3RyYXRlZ3koKXt0aGlzLmFjY29yZGlvblNlcnZpY2Uuc2V0U3RyYXRlZ3kodGhpcy5tdWx0aVBhbmVsP2VTLk11bHRpOmVTLkRlZmF1bHQpfWxpc3RlbkZvckRPTUNoYW5nZXMoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5wYW5lbHMuY2hhbmdlcy5waXBlKHQ0KHRoaXMucGFuZWxzKSkuc3Vic2NyaWJlKGE9PnRoaXMuYWNjb3JkaW9uU2VydmljZS51cGRhdGVQYW5lbE9yZGVyKGEudG9BcnJheSgpLm1hcChmPT5mLmlkKSkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxs''@;'; put 'put ''KShydCh0UykpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQscUQsNSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5wYW5lbHM9aCl9fSxob3N0VmFyczoyLGhv''@;'; put 'put ''c3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImNsci1hY2NvcmRpb24iLCEwKX0saW5wdXRzOnttdWx0aVBhbmVsOlsiY2xyQWNjb3JkaW9uTXVsdGlQYW5lbCIsIm11bHRpUGFuZWwiXX0sZmVhdHVyZXM6W3JpKFt0U10pLGJsXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6''@;'; put 'put ''MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbH0pKCkscWxlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1''@;'; put 'put ''MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWNjb3JkaW9uLWNvbnRlbnQiXSxbImNsci1zdGVwLWNvbnRlbnQiXV0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSxEcigwKSl9LGVuY2Fwc3Vs''@;'; put 'put ''YXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGx9KSgpLFhsZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi10aXRsZSJdLFsiY2xy''@;'; put 'put ''LXN0ZXAtdGl0bGUiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItYWNjb3JkaW9uLXRpdGxlIiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkp''@;'; put 'put ''fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxsfSkoKSxKdj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNhYmxlQ2hvY29sYXRlQ2hlY2s9ITEsdGhpcy5fY2hvY29sYXRlPW5ldyB3ZX1nZXQgY2hvY29sYXRlKCl7cmV0dXJuIHRoaXMuX2Nob2NvbGF0''@;'; put 'put ''ZS5hc09ic2VydmFibGUoKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLmRpc2FibGVDaG9jb2xhdGVDaGVja3x8dGhpcy5fY2hvY29sYXRlLm5leHQoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmx9KSxs''@;'; put 'put ''fSkoKSxRdj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5zdWJzY3JpcHRpb249Zi5jaG9jb2xhdGUuc3Vic2NyaWJlKCgpPT57dGhpcy5sYXRlc3RGbGF2b3IhPT10aGlzLmZsYXZvciYmKGYuZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSEwLGEuZGV0ZWN0Q2hhbmdlcygpLGYu''@;'; put 'put ''ZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSExKX0pfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMubGF0ZXN0Rmxhdm9yPXRoaXMuZmxhdm9yfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBuZXcoYXx8bCkocnQoVWwpLHJ0KEp2KSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmx9KSxsfSkoKSxnVT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgSnZ7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBjO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4oY3x8KGM9eGwobCkpKShm''@;'; put 'put ''fHxsKX19KCksbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbiJdXSxmZWF0dXJlczpbcm9dfSksbH0pKCksSmxlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBRdntjb25zdHJ1Y3RvcihhLGYsZCl7aWYoIWYpdGhyb3cgbmV3IEVycm9yKCJjbHItYWNjb3Jk''@;'; put 'put ''aW9uLXBhbmVsIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGNsci1hY2NvcmRpb24iKTtzdXBlcihhLGYpLHRoaXMuZXhwYW5kPWR9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCkocnQoVWwpLHJ0KGdVLDgpLHJ0KFFjKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFuZWwiXV0sZmVhdHVyZXM6W3JvXX0pLGx9KSgpLFFsZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoWnYsXzEsdzEp''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGxdXX0pLGx9KSgpLFZGZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''YSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGwsUWxlXSxRbGVdfSksbH0pKCk7dmFyIE1vPWZ1bmN0aW9uKGwpe3JldHVybiBsLkFycm93TGVmdD0iQXJyb3dMZWZ0IixsLkFycm93VXA9IkFycm93VXAi''@;'; put 'put ''LGwuQXJyb3dSaWdodD0iQXJyb3dSaWdodCIsbC5BcnJvd0Rvd249IkFycm93RG93biIsbC5CYWNrc3BhY2U9IkJhY2tzcGFjZSIsbC5UYWI9IlRhYiIsbC5FbnRlcj0iRW50ZXIiLGwuRXNjYXBlPSJFc2NhcGUiLGwuU3BhY2U9IlNwYWNlIixsLlNwYWNlYmFyPSIgIixsLkhvbWU9IkhvbWUi''@;'; put 'put ''LGwuRW5kPSJFbmQiLGx9KE1vfHx7fSksWmc9ZnVuY3Rpb24obCl7cmV0dXJuIGwuQXJyb3dVcD0iVXAiLGwuQXJyb3dEb3duPSJEb3duIixsLkFycm93UmlnaHQ9IlJpZ2h0IixsLkFycm93TGVmdD0iTGVmdCIsbC5TcGFjZT0iU3BhY2ViYXIiLGwuRXNjYXBlPSJFc2MiLGx9KFpnfHx7fSk7''@;'; put 'put ''ZnVuY3Rpb24gRWQobCl7cmV0dXJuIGw9PT1Nby5BcnJvd1VwfHxsPT09WmcuQXJyb3dVcD9Nby5BcnJvd1VwOmw9PT1Nby5BcnJvd0Rvd258fGw9PT1aZy5BcnJvd0Rvd24/TW8uQXJyb3dEb3duOmw9PT1Nby5BcnJvd1JpZ2h0fHxsPT09WmcuQXJyb3dSaWdodD9Nby5BcnJvd1JpZ2h0Omw9''@;'; put 'put ''PT1Nby5BcnJvd0xlZnR8fGw9PT1aZy5BcnJvd0xlZnQ/TW8uQXJyb3dMZWZ0Omw9PT1Nby5TcGFjZXx8bD09PVpnLlNwYWNlP01vLlNwYWNlOmw9PT1Nby5Fc2NhcGV8fGw9PT1aZy5Fc2NhcGU/TW8uRXNjYXBlOmx9ZnVuY3Rpb24gYlUobCl7Y29uc3QgYz1FZChsLmtleSk7KGM9PT1Nby5B''@;'; put 'put ''cnJvd1VwfHxjPT09TW8uQXJyb3dEb3dufHxjPT09TW8uQXJyb3dMZWZ0fHxjPT09TW8uQXJyb3dSaWdodCkmJmwucHJldmVudERlZmF1bHQoKX1sZXQgUWE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX29wZW49ITEsdGhpcy5fb3BlbkNoYW5nZT1uZXcgd2UsdGhpcy5fb3Bl''@;'; put 'put ''bkV2ZW50Q2hhbmdlPW5ldyB3ZSx0aGlzLl9wb3BvdmVyQWxpZ25lZD1uZXcgd2V9Z2V0IG9wZW5DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb3BlbkNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgb3BlbkV2ZW50KCl7cmV0dXJuIHRoaXMuX29wZW5FdmVudH1zZXQgb3BlbkV2ZW50KGEpe3RoaXMu''@;'; put 'put ''X29wZW5FdmVudD1hLHRoaXMuX29wZW5FdmVudENoYW5nZS5uZXh0KGEpfWdldCBvcGVuKCl7cmV0dXJuIHRoaXMuX29wZW59c2V0IG9wZW4oYSl7dGhpcy5fb3BlbiE9PShhPSEhYSkmJih0aGlzLl9vcGVuPWEsdGhpcy5fb3BlbkNoYW5nZS5uZXh0KGEpKX1nZXQgb3JpZ2luYWxFdmVudCgp''@;'; put 'put ''e3JldHVybiB0aGlzLl9vcGVuRXZlbnR9Z2V0IHBvcG92ZXJBbGlnbmVkKCl7cmV0dXJuIHRoaXMuX3BvcG92ZXJBbGlnbmVkLmFzT2JzZXJ2YWJsZSgpfWdldEV2ZW50Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX29wZW5FdmVudENoYW5nZS5hc09ic2VydmFibGUoKX10b2dnbGVXaXRoRXZlbnQo''@;'; put 'put ''YSl7YlUoYSksdGhpcy5vcGVuRXZlbnQ9YSx0aGlzLm9wZW49IXRoaXMub3Blbn1wb3BvdmVyQWxpZ25lZEVtaXQoYSl7dGhpcy5fcG9wb3ZlckFsaWduZWQubmV4dChhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7''@;'; put 'put ''dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksUTI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5yZW5kZXJlcj1hLHRoaXMuc21hcnRPcGVuU2VydmljZT1mLHRoaXMuZG9jdW1lbnQ9ZCx0aGlzLm91dHNpZGVDbGlja0Nsb3NlPSEwLHRoaXMuc2Nyb2xs''@;'; put 'put ''VG9DbG9zZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZi5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57aD8odGhpcy5hZGRFc2NhcGVMaXN0ZW5lcigpLHRoaXMuYWRkQ2xpY2tMaXN0ZW5lcigpLHRoaXMuYWRkU2Nyb2xsTGlzdGVuZXIoKSk6dGhp''@;'; put 'put ''cy5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpfSksZi5nZXRFdmVudENoYW5nZSgpLnN1YnNjcmliZShoPT57dGhpcy5pZ25vcmVkRXZlbnQ9aH0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSksdGhpcy5yZW1vdmVBbGxFdmVu''@;'; put 'put ''dExpc3RlbmVycygpfWFkZFNjcm9sbExpc3RlbmVyKCl7dGhpcy5zY3JvbGxUb0Nsb3NlJiYodGhpcy5kb2N1bWVudFNjcm9sbGVyPXdkKHRoaXMuZG9jdW1lbnQsInNjcm9sbCIse2NhcHR1cmU6ITB9KSx0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbj10aGlzLmRvY3VtZW50U2Nyb2xsZXIucGlw''@;'; put 'put ''ZShJbCh0aGlzLnRlc3RGb3JTbWFydFBvcG92ZXJDb250ZW50Q29udGFpbmVyKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ITEsdGhpcy5zZXRBbmNob3JGb2N1cygpfSkpfXJlbW92ZVNjcm9sbExpc3RlbmVyKCl7dGhpcy5kb2N1bWVudFNjcm9sbGVyJiYo''@;'; put 'put ''dGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxkZWxldGUgdGhpcy5kb2N1bWVudFNjcm9sbGVyKX1hZGRDbGlja0xpc3RlbmVyKCl7dGhpcy5vdXRzaWRlQ2xpY2tDbG9zZSYmKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMu''@;'; put 'put ''ZG9jdW1lbnQsImNsaWNrIixhPT57YT09PXRoaXMuaWdub3JlZEV2ZW50P2RlbGV0ZSB0aGlzLmlnbm9yZWRFdmVudDoodGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49ITEsYS50YXJnZXQuZm9jdXMoKSl9KSl9cmVtb3ZlQ2xpY2tMaXN0ZW5lcigpe3RoaXMub3V0c2lkZUNsaWNrQ2xvc2Um''@;'; put 'put ''JihkZWxldGUgdGhpcy5pZ25vcmVkRXZlbnQsdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXImJih0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpLGRlbGV0ZSB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikpfWFkZEVzY2FwZUxpc3RlbmVyKCl7dGhpcy5lc2NhcGVMaXN0ZW5lcj10aGlz''@;'; put 'put ''LnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCJrZXlkb3duLmVzY2FwZSIsKCk9Pnt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3Blbj0hMSx0aGlzLnNldEFuY2hvckZvY3VzKCl9KX1yZW1vdmVFc2NhcGVMaXN0ZW5lcigpe3RoaXMuZXNjYXBlTGlzdGVuZXImJih0aGlzLmVzY2FwZUxp''@;'; put 'put ''c3RlbmVyKCksZGVsZXRlIHRoaXMuZXNjYXBlTGlzdGVuZXIpfXNldENsb3NlRm9jdXMoKXt0aGlzLmNsb3NlQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1zZXRBbmNob3JGb2N1cygpe3RoaXMuYW5jaG9yQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX10ZXN0Rm9yU21h''@;'; put 'put ''cnRQb3BvdmVyQ29udGVudENvbnRhaW5lcihhKXtsZXQgZj1hLnRhcmdldDtmb3IoO2YuY2xhc3NMaXN0JiYiYm9keSIhPT1mLnBhcmVudEVsZW1lbnQubG9jYWxOYW1lOylmPWYucGFyZW50RWxlbWVudDtyZXR1cm4hIWYuY2xhc3NMaXN0JiYhZi5jbGFzc0xpc3QuY29udGFpbnMoImNsci1w''@;'; put 'put ''b3BvdmVyLWNvbnRlbnQiKX1yZW1vdmVBbGxFdmVudExpc3RlbmVycygpe3RoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXIoKSx0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXIoKSx0aGlzLnJlbW92ZUVzY2FwZUxpc3RlbmVyKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpKHNyKGpvKSxzcihRYSksc3IoRmEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxyUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7YS5hbmNob3JCdXR0b25SZWY9Zn19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUTIpLHJ0KFZpKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJBbmNob3IiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItYW5jaG9yIiwhMCl9''@;'; put 'put ''fSksbH0pKCksbnNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuZWxlbWVudFJlZj1hLHRoaXMuc21hcnRFdmVudHNTZXJ2aWNlPWYsdGhpcy5zbWFydE9wZW5TZXJ2aWNlPWQsdGhpcy5jbG9zZUNoYW5nZT1uZXcgeHIsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMu''@;'; put 'put ''c3Vic2NyaXB0aW9ucy5wdXNoKGQub3BlbkNoYW5nZS5waXBlKElsKGg9PiFoKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jbG9zZUNoYW5nZS5uZXh0KCl9KSl9aGFuZGxlQ2xpY2soYSl7dGhpcy5zbWFydE9wZW5TZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChhKSx0aGlzLnNtYXJ0RXZlbnRzU2Vy''@;'; put 'put ''dmljZS5zZXRBbmNob3JGb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc21hcnRFdmVudHNTZXJ2aWNlLmNsb3NlQnV0dG9uUmVmPXRoaXMuZWxlbWVudFJlZix0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5zZXRDbG9zZUZvY3VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlv''@;'; put 'put ''bnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQoUTIpLHJ0KFFhKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJDbG9zZUJ1dHRvbiIs''@;'; put 'put ''IiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gZi5oYW5kbGVDbGljayhoKX0pLDImYSYmZ3IoImNsci1zbWFydC1jbG9zZS1idXR0b24iLCEwKX0sb3V0cHV0czp7Y2xvc2VDaGFuZ2U6ImNsclBvcG92''@;'; put 'put ''ZXJPbkNsb3NlQ2hhbmdlIn19KSxsfSkoKTt2YXIgU2M9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5WRVJUSUNBTD0wXT0iVkVSVElDQUwiLGxbbC5IT1JJWk9OVEFMPTFdPSJIT1JJWk9OVEFMIixsfShTY3x8e30pLE5hPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuU1RBUlQ9MF09IlNUQVJUIixs''@;'; put 'put ''W2wuQ0VOVEVSPS41XT0iQ0VOVEVSIixsW2wuRU5EPTFdPSJFTkQiLGx9KE5hfHx7fSksaVM9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5CT1RUT009MF09IkJPVFRPTSIsbFtsLkxFRlQ9MV09IkxFRlQiLGxbbC5SSUdIVD0yXT0iUklHSFQiLGxbbC5UT1A9M109IlRPUCIsbH0oaVN8fHt9KTtj''@;'; put 'put ''b25zdCBtND1sPT4oey4uLmwsc2lkZTotMSpsLnNpZGV9KSxlMz0obCxjKT0+e2NvbnN0IGE9bC5jb250ZW50KyhjPy41Oi0uNSk7cmV0dXJuIGE8MHx8YT4xP2w6ey4uLmwsY29udGVudDphfX07ZnVuY3Rpb24gZTcobCxjLGEpe3JldHVybiBmPT5jKGwoZiksYSl9ZnVuY3Rpb24gazEobCxj''@;'; put 'put ''LGEpe2xldCBmPWMubGVmdCxkPWMudG9wO3N3aXRjaChsLmF4aXMrbC5zaWRlKXtjYXNlLTE6Zis9cnNlKGwsYyxhKSxkLT1hLmhlaWdodDticmVhaztjYXNlIDE6Zis9cnNlKGwsYyxhKSxkKz1jLmhlaWdodDticmVhaztjYXNlIDA6Zi09YS53aWR0aCxkKz1pc2UobCxjLGEpO2JyZWFrO2Nh''@;'; put 'put ''c2UgMjpmKz1jLndpZHRoLGQrPWlzZShsLGMsYSl9cmV0dXJue3hPZmZzZXQ6Zix5T2Zmc2V0OmR9fWZ1bmN0aW9uIHJzZShsLGMsYSl7bGV0IGY9MDtzd2l0Y2gobC5hbmNob3Ipe2Nhc2UgTmEuU1RBUlQ6YnJlYWs7Y2FzZSBOYS5DRU5URVI6Zis9Yy53aWR0aC8yO2JyZWFrO2Nhc2UgTmEu''@;'; put 'put ''RU5EOmYrPWMud2lkdGh9c3dpdGNoKGwuY29udGVudCl7Y2FzZSBOYS5TVEFSVDpicmVhaztjYXNlIE5hLkNFTlRFUjpmLT1hLndpZHRoLzI7YnJlYWs7Y2FzZSBOYS5FTkQ6Zi09YS53aWR0aH1yZXR1cm4gZn1mdW5jdGlvbiBpc2UobCxjLGEpe2xldCBmPTA7c3dpdGNoKGwuYW5jaG9yKXtj''@;'; put 'put ''YXNlIE5hLlNUQVJUOmJyZWFrO2Nhc2UgTmEuQ0VOVEVSOmYrPWMuaGVpZ2h0LzI7YnJlYWs7Y2FzZSBOYS5FTkQ6Zis9Yy5oZWlnaHR9c3dpdGNoKGwuY29udGVudCl7Y2FzZSBOYS5TVEFSVDpicmVhaztjYXNlIE5hLkNFTlRFUjpmLT1hLmhlaWdodC8yO2JyZWFrO2Nhc2UgTmEuRU5EOmYt''@;'; put 'put ''PWEuaGVpZ2h0fXJldHVybiBmfWxldCB0Nz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5ldmVudFNlcnZpY2U9YSx0aGlzLnBsYXRmb3JtSWQ9Zix0aGlzLl9zaG91bGRSZWFsaWduPW5ldyB3ZSx0aGlzLnNob3VsZFJlYWxpZ249dGhpcy5fc2hvdWxkUmVhbGlnbi5hc09i''@;'; put 'put ''c2VydmFibGUoKX1yZWFsaWduKCl7dGhpcy5fc2hvdWxkUmVhbGlnbi5uZXh0KCl9YWxpZ25Db250ZW50KGEpe2lmKCFIYSh0aGlzLnBsYXRmb3JtSWQpKXJldHVybnt4T2Zmc2V0OjAseU9mZnNldDowfTt0aGlzLmN1cnJlbnRBbmNob3JDb29yZHM9dGhpcy5ldmVudFNlcnZpY2UuYW5jaG9y''@;'; put 'put ''QnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuY29udGVudE9mZnNldHM9azEodGhpcy5wb3NpdGlvbix0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhp''@;'; put 'put ''cy5jdXJyZW50Q29udGVudENvb3Jkcyk7Y29uc3QgZj1mdW5jdGlvbiBqRmUobCxjKXtjb25zdCBhPVtdLGZfYm90dG9tPWwueU9mZnNldCtjLmhlaWdodCxmX2xlZnQ9bC54T2Zmc2V0LGZfcmlnaHQ9bC54T2Zmc2V0K2Mud2lkdGg7cmV0dXJuIGwueU9mZnNldD49MHx8YS5wdXNoKGlTLlRP''@;'; put 'put ''UCksZl9sZWZ0Pj0wfHxhLnB1c2goaVMuTEVGVCksZl9ib3R0b208PSh3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpfHxhLnB1c2goaVMuQk9UVE9NKSxmX3JpZ2h0PD0od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50''@;'; put 'put ''RWxlbWVudC5jbGllbnRXaWR0aCl8fGEucHVzaChpUy5SSUdIVCksYX0odGhpcy5jb250ZW50T2Zmc2V0cyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKSxkPWYucmVkdWNlKChoLG0pPT5oK20sMCk7cmV0dXJuIDE9PT1mLmxlbmd0aCYmdGhpcy5wb3NpdGlvbi5heGlzPT09U2MuVkVSVElD''@;'; put 'put ''QUw/dGhpcy5oYW5kbGVWZXJ0aWNhbEF4aXNPbmVWaW9sYXRpb24oZCk6MT09PWYubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9PT1TYy5IT1JJWk9OVEFMP3RoaXMuaGFuZGxlSG9yaXpvbnRhbEF4aXNPbmVWaW9sYXRpb24oZCk6Mj09PWYubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9''@;'; put 'put ''PT1TYy5WRVJUSUNBTD90aGlzLmhhbmRsZVZlcnRpY2FsQXhpc1R3b1Zpb2xhdGlvbnMoZCk6Mj09PWYubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9PT1TYy5IT1JJWk9OVEFMJiZ0aGlzLmhhbmRsZUhvcml6b250YWxBeGlzVHdvVmlvbGF0aW9ucyhkKSx0aGlzLmNvbnRlbnRPZmZzZXRz''@;'; put 'put ''fWhhbmRsZVZlcnRpY2FsQXhpc09uZVZpb2xhdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAwOmNhc2UgMzp0aGlzLmNvbnRlbnRPZmZzZXRzPWsxKG00KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVhaztjYXNlIDE6''@;'; put 'put ''dGhpcy5jb250ZW50T2Zmc2V0cz1rMSh0aGlzLnBvc2l0aW9uLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKSx0aGlzLmNvbnRlbnRPZmZzZXRzLnhPZmZzZXQ8MCYmKHRoaXMuY29udGVudE9mZnNldHMueE9mZnNldD0xMCk7YnJlYWs7Y2FzZSAy''@;'; put 'put ''OnRoaXMuY29udGVudE9mZnNldHM9azEoZTModGhpcy5wb3NpdGlvbiwhMCksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpfX1oYW5kbGVWZXJ0aWNhbEF4aXNUd29WaW9sYXRpb25zKGEpe3N3aXRjaChhKXtjYXNlIDU6e2NvbnN0IGY9ZTcobTQs''@;'; put 'put ''ZTMsITApO3RoaXMuY29udGVudE9mZnNldHM9azEoZih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSA0Ontjb25zdCBmPWU3KG00LGUzLCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPWsxKGYodGhpcy5w''@;'; put 'put ''b3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgMzpkZWZhdWx0OmJyZWFrO2Nhc2UgMjp7Y29uc3QgZj1lNyhtNCxlMywhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1rMShmKHRoaXMucG9zaXRpb24pLHRoaXMuY3Vy''@;'; put 'put ''cmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha31jYXNlIDE6e2NvbnN0IGY9ZTcobTQsZTMsITEpO3RoaXMuY29udGVudE9mZnNldHM9azEoZih0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENv''@;'; put 'put ''b3Jkcyk7YnJlYWt9fX1oYW5kbGVIb3Jpem9udGFsQXhpc09uZVZpb2xhdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjp0aGlzLmNvbnRlbnRPZmZzZXRzPWsxKG00KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRz''@;'; put 'put ''KTticmVhaztjYXNlIDA6dGhpcy5jb250ZW50T2Zmc2V0cz1rMShlMyh0aGlzLnBvc2l0aW9uLCEwKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7Y2FzZSAzOnRoaXMuY29udGVudE9mZnNldHM9azEoZTModGhpcy5wb3NpdGlvbiks''@;'; put 'put ''dGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpfX1oYW5kbGVIb3Jpem9udGFsQXhpc1R3b1Zpb2xhdGlvbnMoYSl7c3dpdGNoKGEpe2Nhc2UgNTpjYXNlIDQ6e2NvbnN0IGY9ZTcobTQsZTMsITEpO3RoaXMuY29udGVudE9mZnNldHM9azEoZih0aGlz''@;'; put 'put ''LnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSAzOmRlZmF1bHQ6YnJlYWs7Y2FzZSAyOmNhc2UgMTp7Y29uc3QgZj1lNyhtNCxlMywhMCk7dGhpcy5jb250ZW50T2Zmc2V0cz1rMShmKHRoaXMucG9zaXRpb24p''@;'; put 'put ''LHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha319fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihRMiksc3IocWEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAy''@;'; put 'put ''NzVmYWN9KSxsfSkoKSxvUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8pe3RoaXMuZG9jdW1lbnQ9YSx0aGlzLmNvbnRhaW5lcj1mLHRoaXMudGVtcGxhdGU9ZCx0aGlzLnJlbmRlcmVyPWgsdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZT1tLHRoaXMuc21hcnRFdmVu''@;'; put 'put ''dHNTZXJ2aWNlPV8sdGhpcy5zbWFydE9wZW5TZXJ2aWNlPU8sdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwsdGhpcy5zaG91bGRSZWFsaWduPSExLHRoaXMuY2hlY2tDb2xsZWN0b3I9bmV3IHhyfXNldCBvcGVuKGEpe3RoaXMuc21hcnRPcGVu''@;'; put 'put ''U2VydmljZS5vcGVuPSEhYX1zZXQgY29udGVudEF0KGEpe3RoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UucG9zaXRpb249YX1zZXQgb3V0c2lkZUNsaWNrQ2xvc2UoYSl7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uub3V0c2lkZUNsaWNrQ2xvc2U9ISFhfXNldCBzY3JvbGxUb0Nsb3NlKGEpe3Ro''@;'; put 'put ''aXMuc21hcnRFdmVudHNTZXJ2aWNlLnNjcm9sbFRvQ2xvc2U9ISFhfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuJiZ0aGlzLnZpZXcmJnRoaXMuc2hvdWxkUmVhbGlnbiYmdGhpcy5jaGVja0NvbGxlY3Rvci5lbWl0KCl9bmdBZnRlclZpZXdJbml0''@;'; put 'put ''KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9PnthP3RoaXMuYWRkQ29udGVudCgpOnRoaXMucmVtb3ZlQ29udGVudCgpfSksdGhpcy5zbWFydFBvc2l0aW9uU2VydmljZS5zaG91bGRSZWFsaWduLnN1YnNjcmli''@;'; put 'put ''ZSgoKT0+e3RoaXMuc2hvdWxkUmVhbGlnbj0hMH0pLHRoaXMuY2hlY2tDb2xsZWN0b3IucGlwZShZdigwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5hbGlnbkNvbnRlbnQoKSx0aGlzLnNob3VsZFJlYWxpZ249ITEsdGhpcy52aWV3JiZ0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5y''@;'; put 'put ''b290Tm9kZXNbMF0sIm9wYWNpdHkiLCIxIil9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbW92ZUNvbnRlbnQoKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfWFkZENvbnRlbnQoKXt0aGlzLnZpZXc9dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRW''@;'; put 'put ''aWV3KHRoaXMudGVtcGxhdGUpO2NvbnN0W2FdPXRoaXMudmlldy5yb290Tm9kZXM7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2UuY29udGVudFJlZj1hLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYSwiY2xyLXBvcG92ZXItY29udGVudCIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoYSwidG9wIiwi''@;'; put 'put ''MHB4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShhLCJsZWZ0IiwiMHB4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShhLCJvcGFjaXR5IiwiMCIpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPXRoaXMucmVuZGVyZXIubGlzdGVuKGEsImNsaWNrIixmPT57dGhpcy5zbWFydE9wZW5TZXJ2''@;'; put 'put ''aWNlLm9wZW5FdmVudD1mfSksdGhpcy52aWV3LnJvb3ROb2Rlcy5mb3JFYWNoKGY9Pnt0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSxmKX0pLHRoaXMuc2hvdWxkUmVhbGlnbj0hMH1yZW1vdmVDb250ZW50KCl7dGhpcy52aWV3JiYodGhpcy5yZW1vdmVDbGlj''@;'; put 'put ''a0xpc3RlbmVyRm4mJih0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbigpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwpLHRoaXMudmlldy5yb290Tm9kZXMuZm9yRWFjaChhPT50aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSxhKSksdGhpcy5jb250''@;'; put 'put ''YWluZXIuY2xlYXIoKSxkZWxldGUgdGhpcy52aWV3KX1hbGlnbkNvbnRlbnQoKXtpZighdGhpcy52aWV3KXJldHVybjtjb25zdCBhPXRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2UuYWxpZ25Db250ZW50KHRoaXMudmlldy5yb290Tm9kZXNbMF0pO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhp''@;'; put 'put ''cy52aWV3LnJvb3ROb2Rlc1swXSwidG9wIixgJHthLnlPZmZzZXR9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sImxlZnQiLGAke2EueE9mZnNldH1weGApLHRoaXMuc21hcnRPcGVuU2VydmljZS5wb3BvdmVyQWxpZ25lZEVtaXQodGhpcy52aWV3''@;'; put 'put ''LnJvb3ROb2Rlc1swXSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KEZhKSxydChmYSkscnQoemwpLHJ0KGpvKSxydCh0NykscnQoUTIpLHJ0KFFhKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsclBvcG92ZXJD''@;'; put 'put ''b250ZW50IiwiIl1dLGlucHV0czp7b3BlbjpbImNsclBvcG92ZXJDb250ZW50Iiwib3BlbiJdLGNvbnRlbnRBdDpbImNsclBvcG92ZXJDb250ZW50QXQiLCJjb250ZW50QXQiXSxvdXRzaWRlQ2xpY2tDbG9zZTpbImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsIm91dHNp''@;'; put 'put ''ZGVDbGlja0Nsb3NlIl0sc2Nyb2xsVG9DbG9zZTpbImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsInNjcm9sbFRvQ2xvc2UiXX19KSxsfSkoKSxhUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuc21hcnRPcGVuU2VydmljZT1hLHRoaXMub3BlbkNsb3NlQ2hhbmdl''@;'; put 'put ''PW5ldyB4cix0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGY9Pnt0aGlzLm9wZW5DbG9zZUNoYW5nZS5uZXh0KGYpfSkpfWhhbmRsZUNsaWNrKGEpe3RoaXMuc21hcnRPcGVuU2Vy''@;'; put 'put ''dmljZS50b2dnbGVXaXRoRXZlbnQoYSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChRYSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTps''@;'; put 'put ''LHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBmLmhhbmRsZUNsaWNrKGgpfSksMiZhJiZncigiY2xyLXNtYXJ0LW9wZW4t''@;'; put 'put ''Y2xvc2UiLCEwKX0sb3V0cHV0czp7b3BlbkNsb3NlQ2hhbmdlOiJjbHJQb3BvdmVyT3BlbkNsb3NlQ2hhbmdlIn19KSxsfSkoKSxsUz0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0p''@;'; put 'put ''LGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbXV19KSxsfSkoKTt2YXIgRTE9ZnVuY3Rpb24obCl7cmV0dXJuIGwuVVA9InVwIixsLkRPV049ImRvd24iLGwuTEVGVD0ibGVmdCIsbC5SSUdIVD0icmlnaHQiLGx9KEUxfHx7fSk7bGV0IHNTPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7''@;'; put 'put ''dGhpcy5yZW5kZXJlcj1hLHRoaXMuX3VubGlzdGVuRnVuY3M9W119Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1yZXNldChhKXt0aGlzLl9jdXJyZW50PWF9bGlzdGVuVG9BcnJvd0tleXMoYSl7dGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVu''@;'; put 'put ''KGEsImtleWRvd24uYXJyb3d1cCIsKCk9PiF0aGlzLm1vdmUoRTEuVVApKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImtleWRvd24uYXJyb3dkb3duIiwoKT0+IXRoaXMubW92ZShFMS5ET1dOKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0''@;'; put 'put ''aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmFycm93bGVmdCIsKCk9PiF0aGlzLm1vdmUoRTEuTEVGVCkpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYSwia2V5ZG93bi5hcnJvd3JpZ2h0IiwoKT0+IXRoaXMubW92ZShFMS5SSUdIVCkpKX1y''@;'; put 'put ''ZWdpc3RlckNvbnRhaW5lcihhLGY9IjAiKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShhLCJ0YWJpbmRleCIsZiksdGhpcy5saXN0ZW5Ub0Fycm93S2V5cyhhKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYSwia2V5ZG93bi5zcGFjZSIsKCk9PiF0''@;'; put 'put ''aGlzLmFjdGl2YXRlQ3VycmVudCgpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImtleWRvd24uZW50ZXIiLCgpPT4hdGhpcy5hY3RpdmF0ZUN1cnJlbnQoKSkpfW1vdmVUbyhhKXt2b2lkIDAhPT1hJiYodGhpcy5jdXJyZW50JiZ0aGlzLmN1cnJl''@;'; put 'put ''bnQuYmx1cigpLGEuZm9jdXMoKSx0aGlzLl9jdXJyZW50PWEpfW1vdmUoYSl7bGV0IGY9ITE7aWYodGhpcy5jdXJyZW50KXtjb25zdCBkPXRoaXMuY3VycmVudFthXTtkJiYoRWooZCk/ZDpHaShkKSkuc3Vic2NyaWJlKG09PnttJiYodGhpcy5tb3ZlVG8obSksZj0hMCl9KX1yZXR1cm4gZn1h''@;'; put 'put ''Y3RpdmF0ZUN1cnJlbnQoKXtyZXR1cm4hKCF0aGlzLmN1cnJlbnR8fCF0aGlzLmN1cnJlbnQuYWN0aXZhdGV8fCh0aGlzLmN1cnJlbnQuYWN0aXZhdGUoKSwwKSl9ZGV0YWNoTGlzdGVuZXJzKCl7dGhpcy5fdW5saXN0ZW5GdW5jcy5mb3JFYWNoKGE9PmEoKSl9fXJldHVybiBsLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKGpvKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y29uc3QgbHNlPXtwcm92aWRlOnNTLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gekZlKGwsYyl7cmV0dXJuIGx8fG5ldyBzUyhjKX0s''@;'; put 'put ''ZGVwczpbW25ldyBjaCxuZXcgRTAsc1NdLGpvXX07dmFyIHhmPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuQkVGT1JFPS0xXT0iQkVGT1JFIixsW2wuQUZURVI9MV09IkFGVEVSIixsfSh4Znx8e30pO2NsYXNzIFAwe31QMFsidG9wLXJpZ2h0Il09e2F4aXM6U2MuVkVSVElDQUwsc2lkZTp4Zi5C''@;'; put 'put ''RUZPUkUsYW5jaG9yOk5hLkVORCxjb250ZW50Ok5hLkVORH0sUDBbInRvcC1sZWZ0Il09e2F4aXM6U2MuVkVSVElDQUwsc2lkZTp4Zi5CRUZPUkUsYW5jaG9yOk5hLlNUQVJULGNvbnRlbnQ6TmEuU1RBUlR9LFAwWyJib3R0b20tcmlnaHQiXT17YXhpczpTYy5WRVJUSUNBTCxzaWRlOnhmLkFG''@;'; put 'put ''VEVSLGFuY2hvcjpOYS5FTkQsY29udGVudDpOYS5FTkR9LFAwWyJib3R0b20tbGVmdCJdPXtheGlzOlNjLlZFUlRJQ0FMLHNpZGU6eGYuQUZURVIsYW5jaG9yOk5hLlNUQVJULGNvbnRlbnQ6TmEuU1RBUlR9LFAwWyJyaWdodC10b3AiXT17YXhpczpTYy5IT1JJWk9OVEFMLHNpZGU6eGYuQUZU''@;'; put 'put ''RVIsYW5jaG9yOk5hLkNFTlRFUixjb250ZW50Ok5hLkVORH0sUDBbInJpZ2h0LWJvdHRvbSJdPXtheGlzOlNjLkhPUklaT05UQUwsc2lkZTp4Zi5BRlRFUixhbmNob3I6TmEuU1RBUlQsY29udGVudDpOYS5TVEFSVH0sUDBbImxlZnQtdG9wIl09e2F4aXM6U2MuSE9SSVpPTlRBTCxzaWRlOnhm''@;'; put 'put ''LkJFRk9SRSxhbmNob3I6TmEuQ0VOVEVSLGNvbnRlbnQ6TmEuRU5EfSxQMFsibGVmdC1ib3R0b20iXT17YXhpczpTYy5IT1JJWk9OVEFMLHNpZGU6eGYuQkVGT1JFLGFuY2hvcjpOYS5TVEFSVCxjb250ZW50Ok5hLlNUQVJUfTtjbGFzcyB3VXtzdGF0aWMgbGlua1BhcmVudChjLGEsZil7Yy5m''@;'; put 'put ''b3JFYWNoKGQ9PmRbZl09YSl9c3RhdGljIGxpbmtWZXJ0aWNhbChjLGE9ITApe2MuZm9yRWFjaCgoZixkKT0+e2Q+MCYmKGYudXA9Y1tkLTFdKSxkPGMubGVuZ3RoLTEmJihmLmRvd249Y1tkKzFdKX0pLGEmJmMubGVuZ3RoPjEmJihjWzBdLnVwPWNbYy5sZW5ndGgtMV0sY1tjLmxlbmd0aC0x''@;'; put 'put ''XS5kb3duPWNbMF0pfX1sZXQgeDE9KCgpPT57Y2xhc3MgbHt1c2VyRGVmaW5lZFdpZHRoKGEpe2EuY2xhc3NMaXN0LmFkZCgiZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJvIik7Y29uc3QgZj10aGlzLmNsaWVudFJlY3QoYSkud2lkdGg7cmV0dXJuIGEuY2xhc3NMaXN0LnJlbW92ZSgiZGF0YWdy''@;'; put 'put ''aWQtY2VsbC13aWR0aC16ZXJvIiksZn1zY3JvbGxCYXJXaWR0aChhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aC1hLmNsaWVudFdpZHRofXNjcm9sbFdpZHRoKGEpe3JldHVybiBhLnNjcm9sbFdpZHRofHwwfWNvbXB1dGVkSGVpZ2h0KGEpe3JldHVybiBwYXJzZUludChnZXRDb21wdXRlZFN0eWxl''@;'; put 'put ''KGEpLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLDEwKX1jbGllbnRSZWN0KGEpe2NvbnN0IGY9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnBhcnNlSW50KGYudG9wLDEwKSxib3R0b206cGFyc2VJbnQoZi5ib3R0b20sMTApLGxlZnQ6cGFyc2VJbnQoZi5sZWZ0LDEw''@;'; put 'put ''KSxyaWdodDpwYXJzZUludChmLnJpZ2h0LDEwKSx3aWR0aDpwYXJzZUludChmLndpZHRoLDEwKSxoZWlnaHQ6cGFyc2VJbnQoZi5oZWlnaHQsMTApfX1taW5XaWR0aChhKXtyZXR1cm4gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShhKS5nZXRQcm9wZXJ0eVZhbHVlKCJtaW4td2lkdGgiKSwx''@;'; put 'put ''MCl9Zm9jdXMoYSl7YS5mb2N1cygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxYRD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5l''@;'; put 'put ''bGVtZW50PWEsdGhpcy5kb21BZGFwdGVyPWYsdGhpcy5zdGFydEhlaWdodD0wfWdldCBleHBhbmRBbmltYXRpb24oKXtyZXR1cm57dmFsdWU6dGhpcy5jbHJFeHBhbmRUcmlnZ2VyLHBhcmFtczp7c3RhcnRIZWlnaHQ6dGhpcy5zdGFydEhlaWdodH19fWFuaW1hdGlvbkRvbmUoKXt0aGlzLnVw''@;'; put 'put ''ZGF0ZVN0YXJ0SGVpZ2h0KCl9dXBkYXRlU3RhcnRIZWlnaHQoKXt0aGlzLnN0YXJ0SGVpZ2h0PXRoaXMuZG9tQWRhcHRlci5jb21wdXRlZEhlaWdodCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCl8fDB9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwp''@;'; put 'put ''KHJ0KFZpKSxydCh4MSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkZ3KCJAZXhwYW5kQW5pbWF0aW9uLmRvbmUiLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIGYuYW5pbWF0aW9uRG9uZSgpfSksMiZhJiZfZygiQGV4cGFuZEFuaW1hdGlvbiIsZi5leHBhbmRBbmltYXRpb24pfSxpbnB1dHM6e2NsckV4cGFuZFRyaWdnZXI6ImNsckV4cGFuZFRyaWdnZXIifSxmZWF0dXJlczpbcmkoW3gxXSldLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczox''@;'; put 'put ''LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVufSJdLGRhdGE6e2FuaW1hdGlvbjpbQzEoImV4cGFuZEFuaW1hdGlvbiIsW2J1KCJ0cnVlIDw9PiBmYWxz''@;'; put 'put ''ZSIsW0NhKHtoZWlnaHQ6Int7c3RhcnRIZWlnaHR9fXB4In0pLGNjKCIwLjJzIGVhc2UtaW4tb3V0IixDYSh7aGVpZ2h0OiIqIn0pKV0pXSldfX0pLGx9KSgpLENVPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3''@;'; put 'put ''NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tib11dfSksbH0pKCksVUZlPTA7Y29uc3Qgcjc9bmV3IE1pKCJJRl9BQ1RJVkVfSUQiKSxZRmU9e3Byb3ZpZGU6cjcsdXNlRmFjdG9yeTpmdW5jdGlvbiBaRmUoKXtyZXR1cm4rK1VGZX19O2xldCBZZz0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fY3VycmVudENoYW5nZT1uZXcgd2V9Z2V0IGN1cnJlbnRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY3VycmVudENoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGEpe3RoaXMu''@;'; put 'put ''X2N1cnJlbnQhPT1hJiYodGhpcy5fY3VycmVudD1hLHRoaXMuX2N1cnJlbnRDaGFuZ2UubmV4dChhKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHVT''@;'; put 'put ''PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9YSx0aGlzLmlkPWYsdGhpcy50ZW1wbGF0ZT1kLHRoaXMuY29udGFpbmVyPWgsdGhpcy5hY3RpdmVDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLndhc0FjdGl2ZT0hMSx0aGlzLmNoZWNrQW5kVXBk''@;'; put 'put ''YXRlVmlldyhhLmN1cnJlbnQpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnRDaGFuZ2Uuc3Vic2NyaWJlKG09Pnt0aGlzLmNoZWNrQW5kVXBkYXRlVmlldyhtKX0pfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD09''@;'; put 'put ''PXRoaXMuaWR9c2V0IGFjdGl2ZShhKXthJiYodGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD10aGlzLmlkKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9dXBkYXRlVmlldyhhKXthP3RoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlz''@;'; put 'put ''LnRlbXBsYXRlKTp0aGlzLmNvbnRhaW5lci5jbGVhcigpfWNoZWNrQW5kVXBkYXRlVmlldyhhKXtjb25zdCBmPWE9PT10aGlzLmlkO2YhPT10aGlzLndhc0FjdGl2ZSYmKHRoaXMudXBkYXRlVmlldyhmKSx0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KGYpLHRoaXMud2FzQWN0aXZlPWYpfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChZZykscnQocjcpLHJ0KHpsKSxydChmYSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJJZkFjdGl2ZSIsIiJdXSxpbnB1dHM6e2FjdGl2ZTpbImNscklmQWN0aXZlIiwiYWN0''@;'; put 'put ''aXZlIl19LG91dHB1dHM6e2FjdGl2ZUNoYW5nZToiY2xySWZBY3RpdmVDaGFuZ2UifX0pLGx9KSgpLHhkPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMudG9nZ2xlU2VydmljZT1hLHRoaXMudGVtcGxhdGU9Zix0aGlzLmNvbnRhaW5lcj1kLHRoaXMub3BlbkNoYW5nZT1u''@;'; put 'put ''ZXcgeHIoITEpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShoPT57dGhpcy51cGRhdGVWaWV3KGgpLHRoaXMub3BlbkNoYW5nZS5lbWl0KGgpfSl9Z2V0IG9wZW4oKXtyZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW59c2V0IG9w''@;'; put 'put ''ZW4oYSl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49YX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9dXBkYXRlVmlldyhhKXthP3RoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlKTp0aGlzLmNvbnRhaW5lci5jbGVhcigp''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChRYSkscnQoemwpLHJ0KGZhKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNscklmT3BlbiIsIiJdXSxpbnB1dHM6e29wZW46WyJjbHJJZk9wZW4iLCJvcGVuIl19LG91''@;'; put 'put ''dHB1dHM6e29wZW5DaGFuZ2U6ImNscklmT3BlbkNoYW5nZSJ9fSksbH0pKCksc3NlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0aGlzLnRlbXBsYXRlPWEsdGhpcy5jb250YWluZXI9Zix0aGlzLmVsPWQsdGhpcy5yZW5kZXJlcj1oLHRoaXMuZXhwYW5kPW0sdGhpcy5l''@;'; put 'put ''eHBhbmRlZENoYW5nZT1uZXcgeHIoITApLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3N1YnNjcmlwdGlvbnM9W10sdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKG0uZXhwYW5kQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMudXBkYXRlVmlldygpLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0''@;'; put 'put ''aGlzLmV4cGFuZC5leHBhbmRlZCl9KSl9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuX2V4cGFuZGVkfXNldCBleHBhbmRlZChhKXsiYm9vbGVhbiI9PXR5cGVvZiBhJiYodGhpcy5leHBhbmQuZXhwYW5kZWQ9YSx0aGlzLl9leHBhbmRlZD1hKX1uZ09uSW5pdCgpe3RoaXMuZXhwYW5kLmV4''@;'; put 'put ''cGFuZGFibGUrKyx0aGlzLnVwZGF0ZVZpZXcoKX1uZ09uRGVzdHJveSgpe3RoaXMuZXhwYW5kLmV4cGFuZGFibGUtLSx0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX11cGRhdGVWaWV3KCl7aWYoIXRoaXMuZXhwYW5kLmV4cGFuZGVkfHwwPT09dGhpcy5j''@;'; put 'put ''b250YWluZXIubGVuZ3RoKWlmKHRoaXMudGVtcGxhdGUpdGhpcy5leHBhbmQuZXhwYW5kZWQ/dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpOnRoaXMuY29udGFpbmVyLmNsZWFyKCk7ZWxzZSB0cnl7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVs''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQsImRpc3BsYXkiLHRoaXMuZXhwYW5kLmV4cGFuZGVkP251bGw6Im5vbmUiKX1jYXRjaHt9fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh6bCw4KSxydChmYSkscnQoVmkpLHJ0KGpvKSxydChRYykpfSxsLlx1MDI3NWRp''@;'; put 'put ''cj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dLGlucHV0czp7ZXhwYW5kZWQ6WyJjbHJJZkV4cGFuZGVkIiwiZXhwYW5kZWQiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNscklmRXhwYW5kZWRDaGFuZ2UifX0pLGx9KSgpLEFmPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tib11dfSksbH0pKCk7Y2xhc3MgdDN7Y29uc3RydWN0b3IoYyl7dGhpcy5kcmFnUG9zaXRpb249Yy5kcmFn''@;'; put 'put ''UG9zaXRpb24sdGhpcy5ncm91cD1jLmdyb3VwLHRoaXMuZHJhZ0RhdGFUcmFuc2Zlcj1jLmRyYWdEYXRhVHJhbnNmZXIsdGhpcy5kcm9wUG9pbnRQb3NpdGlvbj1jLmRyb3BQb2ludFBvc2l0aW9ufX12YXIgRjA9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5EUkFHX1NUQVJUPTBdPSJEUkFHX1NU''@;'; put 'put ''QVJUIixsW2wuRFJBR19NT1ZFPTFdPSJEUkFHX01PVkUiLGxbbC5EUkFHX0VORD0yXT0iRFJBR19FTkQiLGxbbC5EUkFHX0VOVEVSPTNdPSJEUkFHX0VOVEVSIixsW2wuRFJBR19MRUFWRT00XT0iRFJBR19MRUFWRSIsbFtsLkRST1A9NV09IkRST1AiLGx9KEYwfHx7fSk7bGV0IHVzZT0oKCk9''@;'; put 'put ''PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5kcmFnU3RhcnQ9bmV3IHdlLHRoaXMuZHJhZ01vdmU9bmV3IHdlLHRoaXMuZHJhZ0VuZD1uZXcgd2UsdGhpcy5kcm9wPW5ldyB3ZX1nZXQgZHJhZ1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5kcmFnU3RhcnQuYXNPYnNlcnZhYmxlKCl9Z2V0IGRy''@;'; put 'put ''YWdNb3ZlZCgpe3JldHVybiB0aGlzLmRyYWdNb3ZlLmFzT2JzZXJ2YWJsZSgpfWdldCBkcmFnRW5kZWQoKXtyZXR1cm4gdGhpcy5kcmFnRW5kLmFzT2JzZXJ2YWJsZSgpfWdldCBkcm9wcGVkKCl7cmV0dXJuIHRoaXMuZHJvcC5hc09ic2VydmFibGUoKX1icm9hZGNhc3QoYSl7c3dpdGNoKGEu''@;'; put 'put ''dHlwZSl7Y2FzZSBGMC5EUkFHX1NUQVJUOnRoaXMuZHJhZ1N0YXJ0Lm5leHQoYSk7YnJlYWs7Y2FzZSBGMC5EUkFHX01PVkU6dGhpcy5kcmFnTW92ZS5uZXh0KGEpO2JyZWFrO2Nhc2UgRjAuRFJBR19FTkQ6dGhpcy5kcmFnRW5kLm5leHQoYSk7YnJlYWs7Y2FzZSBGMC5EUk9QOnRoaXMuZHJv''@;'; put 'put ''cC5uZXh0KGEpfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksY1M9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYs''@;'; put 'put ''ZCl7dGhpcy5uZ1pvbmU9YSx0aGlzLnJlbmRlcmVyPWYsdGhpcy5ldmVudEJ1cz1kLHRoaXMuZHJhZ1N0YXJ0RGVsYXk9MCx0aGlzLmhhc0RyYWdTdGFydGVkPSExLHRoaXMuZHJhZ1N0YXJ0PW5ldyB3ZSx0aGlzLmRyYWdNb3ZlPW5ldyB3ZSx0aGlzLmRyYWdFbmQ9bmV3IHdlLHRoaXMubGlz''@;'; put 'put ''dGVuZXJzPVtdfWdldCBkcmFnU3RhcnRlZCgpe3JldHVybiB0aGlzLmRyYWdTdGFydC5hc09ic2VydmFibGUoKX1nZXQgZHJhZ01vdmVkKCl7cmV0dXJuIHRoaXMuZHJhZ01vdmUuYXNPYnNlcnZhYmxlKCl9Z2V0IGRyYWdFbmRlZCgpe3JldHVybiB0aGlzLmRyYWdFbmQuYXNPYnNlcnZhYmxl''@;'; put 'put ''KCl9Z2V0IGRyYWdTdGFydFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdGlhbFBvc2l0aW9ufWF0dGFjaERyYWdMaXN0ZW5lcnMoYSl7dGhpcy5kcmFnZ2FibGVFbD1hLHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5jdXN0b21EcmFnRXZlbnQodGhpcy5kcmFnZ2FibGVFbCwibW91c2Vkb3du''@;'; put 'put ''IiwibW91c2Vtb3ZlIiwibW91c2V1cCIpKSx0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMuY3VzdG9tRHJhZ0V2ZW50KHRoaXMuZHJhZ2dhYmxlRWwsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIpKX1kZXRhY2hEcmFnTGlzdGVuZXJzKCl7dGhpcy5saXN0ZW5lcnMmJnRoaXMu''@;'; put 'put ''bGlzdGVuZXJzLm1hcChhPT5hKCkpLHRoaXMubmVzdGVkTGlzdGVuZXJzJiZ0aGlzLm5lc3RlZExpc3RlbmVycy5tYXAoYT0+YSgpKSx0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciYmdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKX1nZXROYXRpdmVFdmVu''@;'; put 'put ''dE9iamVjdChhKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsImNoYW5nZWRUb3VjaGVzIik/YS5jaGFuZ2VkVG91Y2hlc1swXTphfWN1c3RvbURyYWdFdmVudChhLGYsZCxoKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5saXN0ZW4oYSxmLG09Pnt0aGlzLmlu''@;'; put 'put ''aXRpYWxQb3NpdGlvbj17cGFnZVg6dGhpcy5nZXROYXRpdmVFdmVudE9iamVjdChtKS5wYWdlWCxwYWdlWTp0aGlzLmdldE5hdGl2ZUV2ZW50T2JqZWN0KG0pLnBhZ2VZfSx0aGlzLm5lc3RlZExpc3RlbmVycz1bXSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMubmVz''@;'; put 'put ''dGVkTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oImRvY3VtZW50Iiwic2VsZWN0c3RhcnQiLF89PntfLnByZXZlbnREZWZhdWx0KCksXy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0pKSx0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnkoZCksdGhpcy5kcmFnU3RhcnRE''@;'; put 'put ''ZWxheVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyJiZ0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpLHRoaXMuaGFzRHJhZ1N0YXJ0ZWQ9ITAsdGhpcy5icm9hZGNhc3QobSxGMC5EUkFHX1NUQVJUKSx0aGlzLm5l''@;'; put 'put ''c3RlZExpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsZCxfPT57Xy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLmhhc0RyYWdTdGFydGVkJiZ0aGlzLmJyb2FkY2FzdChfLEYwLkRSQUdfTU9WRSl9KSl9LHRoaXMuZHJhZ1N0YXJ0RGVsYXkpfSks''@;'; put 'put ''dGhpcy5uZXN0ZWRMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbigiZG9jdW1lbnQiLGgsXz0+e3RoaXMuaGFzRHJhZ1N0YXJ0ZWQmJih0aGlzLmhhc0RyYWdTdGFydGVkPSExLHRoaXMuYnJvYWRjYXN0KF8sRjAuRFJBR19FTkQpKSxjbGVhclRpbWVvdXQodGhpcy5kcmFnU3Rh''@;'; put 'put ''cnREZWxheVRpbWVvdXQpLHRoaXMubmVzdGVkTGlzdGVuZXJzLm1hcChPPT5PKCkpLHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyJiZ0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpfSkpfSl9Y2hlY2tEcmFnU3RhcnRCb3VuZGFyeShhKXt0aGlzLmNoZWNr''@;'; put 'put ''RHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcj10aGlzLnJlbmRlcmVyLmxpc3RlbigiZG9jdW1lbnQiLGEsZj0+e2NvbnN0IGQ9TWF0aC5hYnModGhpcy5nZXROYXRpdmVFdmVudE9iamVjdChmKS5wYWdlWC10aGlzLmluaXRpYWxQb3NpdGlvbi5wYWdlWCksaD1NYXRoLmFicyh0aGlzLmdldE5h''@;'; put 'put ''dGl2ZUV2ZW50T2JqZWN0KGYpLnBhZ2VZLXRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VZKTsoZD4xfHxoPjEpJiYoY2xlYXJUaW1lb3V0KHRoaXMuZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0KSx0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciYmdGhpcy5jaGVja0RyYWdTdGFydEJv''@;'; put 'put ''dW5kYXJ5TGlzdGVuZXIoKSl9KX1icm9hZGNhc3QoYSxmKXtjb25zdCBkPXRoaXMuZ2VuZXJhdGVEcmFnRXZlbnQoYSxmKTtzd2l0Y2goZC50eXBlKXtjYXNlIEYwLkRSQUdfU1RBUlQ6dGhpcy5kcmFnU3RhcnQubmV4dChkKTticmVhaztjYXNlIEYwLkRSQUdfTU9WRTp0aGlzLmRyYWdNb3Zl''@;'; put 'put ''Lm5leHQoZCk7YnJlYWs7Y2FzZSBGMC5EUkFHX0VORDp0aGlzLmRyYWdFbmQubmV4dChkKX1kLmdob3N0RWxlbWVudD10aGlzLmdob3N0RWxlbWVudCxkLmRyb3BQb2ludFBvc2l0aW9uPXRoaXMuZHJvcFBvaW50UG9zaXRpb24sdGhpcy5ldmVudEJ1cy5icm9hZGNhc3QoZCl9Z2VuZXJhdGVE''@;'; put 'put ''cmFnRXZlbnQoYSxmKXtjb25zdCBkPXRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3QoYSk7cmV0dXJue3R5cGU6ZixkcmFnUG9zaXRpb246e3BhZ2VYOmQucGFnZVgscGFnZVk6ZC5wYWdlWSxtb3ZlWDpkLnBhZ2VYLXRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VYLG1vdmVZOmQucGFnZVktdGhp''@;'; put 'put ''cy5pbml0aWFsUG9zaXRpb24ucGFnZVl9LGdyb3VwOnRoaXMuZ3JvdXAsZHJhZ0RhdGFUcmFuc2Zlcjp0aGlzLmRyYWdEYXRhVHJhbnNmZXIsZ2hvc3RFbGVtZW50OnRoaXMuZ2hvc3RFbGVtZW50fX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3Io''@;'; put 'put ''VW8pLHNyKGpvKSxzcih1c2UpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxTVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuZG9tQWRhcHRlcj1hfWdldCBoYXNEcmFnZ2FibGVTdGF0ZSgpe3JldHVybiEhdGhpcy5zbmFw''@;'; put 'put ''c2hvdERyYWdFdmVudCYmISF0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdH1nZXQgY2xpZW50UmVjdCgpe3JldHVybiB0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdH1nZXQgZHJhZ0V2ZW50KCl7cmV0dXJuIHRoaXMuc25hcHNob3REcmFnRXZlbnR9Y2FwdHVyZShhLGYpe3RoaXMuZHJhZ2dh''@;'; put 'put ''YmxlRWxDbGllbnRSZWN0PXRoaXMuZG9tQWRhcHRlci5jbGllbnRSZWN0KGEpLHRoaXMuc25hcHNob3REcmFnRXZlbnQ9Zn1kaXNjYXJkKCl7ZGVsZXRlIHRoaXMuZHJhZ2dhYmxlRWxDbGllbnRSZWN0LGRlbGV0ZSB0aGlzLnNuYXBzaG90RHJhZ0V2ZW50fX1yZXR1cm4gbC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcih4MSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGNzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSl7aWYodGhpcy5lbD1hLHRoaXMuZHJhZ0V2ZW50TGlzdGVu''@;'; put 'put ''ZXI9Zix0aGlzLmRyYWdnYWJsZVNuYXBzaG90PWQsdGhpcy5yZW5kZXJlcj1oLHRoaXMubmdab25lPW0sdGhpcy5sZWF2ZUFuaW1Db25maWc9e3ZhbHVlOjAscGFyYW1zOnt0b3A6IjBweCIsbGVmdDoiMHB4In19LHRoaXMuc3Vic2NyaXB0aW9ucz1bXSwhdGhpcy5kcmFnRXZlbnRMaXN0ZW5l''@;'; put 'put ''cnx8IXRoaXMuZHJhZ2dhYmxlU25hcHNob3QpdGhyb3cgbmV3IEVycm9yKCJUaGUgY2xyLWRyYWdnYWJsZS1naG9zdCBjb21wb25lbnQgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLiIpO3RoaXMuZHJhZ2dhYmxlR2hvc3RFbD10aGlzLmVsLm5h''@;'; put 'put ''dGl2ZUVsZW1lbnQsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYWdnYWJsZUdob3N0RWwsImRyYWdnYWJsZS1naG9zdCIpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZ2hvc3RFbGVtZW50PXRoaXMuZHJhZ2dhYmxlR2hvc3RFbCx0aGlzLnNldERlZmF1bHRHaG9zdFNpemUodGhpcy5k''@;'; put 'put ''cmFnZ2FibGVHaG9zdEVsKTtjb25zdCBfPXt0b3A6dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVktdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcDowLGxl''@;'; put 'put ''ZnQ6dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmRyYWdnYWJsZVNuYXBzaG90LmRyYWdFdmVudC5kcmFnUG9zaXRpb24ucGFnZVgtdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnQ6MH07bGV0IE89ITE7dGhpcy5zdWJzY3JpcHRpb25z''@;'; put 'put ''LnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnTW92ZWQuc3Vic2NyaWJlKFg9PntPfHwodGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5oYXNEcmFnZ2FibGVTdGF0ZT90aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LnRvcH1weGAs''@;'; put 'put ''YCR7dGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmxlZnR9cHhgKTp0aGlzLmFuaW1hdGVUb09uTGVhdmUoYCR7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlvbi5wYWdlWX1weGAsYCR7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnRQb3NpdGlv''@;'; put 'put ''bi5wYWdlWX1weGApLE89ITApO2NvbnN0IGFlPXRoaXMuZmluZFRvcExlZnRQb3NpdGlvbihYLmRyYWdQb3NpdGlvbixfKTt0aGlzLnNldFBvc2l0aW9uU3R5bGUodGhpcy5kcmFnZ2FibGVHaG9zdEVsLGFlLnBhZ2VYLGFlLnBhZ2VZKSx0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyb3BQb2lu''@;'; put 'put ''dFBvc2l0aW9uPXRoaXMuZmluZERyb3BQb2ludFBvc2l0aW9uKGFlKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9c2V0RGVmYXVsdEdob3N0U2l6ZShhKXt0aGlzLmRyYWdnYWJsZVNuYXBzaG90Lmhhc0RyYWdnYWJsZVN0''@;'; put 'put ''YXRlJiZ0aGlzLnNldFNpemVTdHlsZShhLHRoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2xpZW50UmVjdC53aWR0aCx0aGlzLmRyYWdnYWJsZVNuYXBzaG90LmNsaWVudFJlY3QuaGVpZ2h0KX1hbmltYXRlVG9PbkxlYXZlKGEsZil7dGhpcy5uZ1pvbmUucnVuKCgpPT57dGhpcy5sZWF2ZUFuaW1D''@;'; put 'put ''b25maWc9e3ZhbHVlOjAscGFyYW1zOnt0b3A6YSxsZWZ0OmZ9fX0pfWZpbmRUb3BMZWZ0UG9zaXRpb24oYSxmKXtyZXR1cm57cGFnZVg6YS5wYWdlWC1mLmxlZnQscGFnZVk6YS5wYWdlWS1mLnRvcH19ZmluZERyb3BQb2ludFBvc2l0aW9uKGEpe3JldHVybiB0aGlzLmRyYWdnYWJsZVNuYXBz''@;'; put 'put ''aG90Lmhhc0RyYWdnYWJsZVN0YXRlP3twYWdlWDphLnBhZ2VYK3RoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2xpZW50UmVjdC53aWR0aC8yLHBhZ2VZOmEucGFnZVkrdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5jbGllbnRSZWN0LmhlaWdodC8yfTphfXNldFNpemVTdHlsZShhLGYsZCl7dGhpcy5y''@;'; put 'put ''ZW5kZXJlci5zZXRTdHlsZShhLCJ3aWR0aCIsYCR7Zn1weGApLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoYSwiaGVpZ2h0IixgJHtkfXB4YCl9c2V0UG9zaXRpb25TdHlsZShhLGYsZCl7dGhpcy5yZW5kZXJlci5zZXRTdHlsZShhLCJsZWZ0IixgJHtmfXB4YCksdGhpcy5yZW5kZXJlci5zZXRT''@;'; put 'put ''dHlsZShhLCJ0b3AiLGAke2R9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGEsInZpc2liaWxpdHkiLCJ2aXNpYmxlIil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChjUyw4KSxydChTVSw4KSxydChqbykscnQoVW8pKX0sbC5c''@;'; put 'put ''dTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRyYWdnYWJsZS1naG9zdCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmX2coIkBsZWF2ZUFuaW1hdGlvbiIsZi5sZWF2ZUFuaW1Db25maWcpfSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVj''@;'; put 'put ''bHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbQzEoImxlYXZlQW5pbWF0aW9uIixbYnUoIjpsZWF2ZSIsW0NhKHtsZWZ0OiIqIix0b3A6IioifSksY2MoIjAuMnMgZWFzZS1pbi1vdXQi''@;'; put 'put ''LENhKHt0b3A6Int7dG9wfX0iLGxlZnQ6Int7bGVmdH19In0pKV0pXSldfX0pLGx9KSgpLGZzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXtpZih0aGlzLnRlbXBsYXRlPWEsdGhpcy5jb250YWluZXI9Zix0aGlzLmRyYWdFdmVudExpc3RlbmVyPWQsdGhpcy5zdWJzY3JpcHRp''@;'; put 'put ''b25zPVtdLCF0aGlzLmRyYWdFdmVudExpc3RlbmVyfHwhdGhpcy5jb250YWluZXIpdGhyb3cgbmV3IEVycm9yKCJUaGUgKmNscklmRHJhZ2dlZCBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgYSBjbHJEcmFnZ2FibGUgZGlyZWN0aXZlLiIpO3RoaXMuc3Vic2NyaXB0aW9u''@;'; put 'put ''cy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0ZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ0VuZGVk''@;'; put 'put ''LnN1YnNjcmliZSgoKT0+e3RoaXMuY29udGFpbmVyLmNsZWFyKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh6bCkscnQoZmEs''@;'; put 'put ''MTIpLHJ0KGNTLDgpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xySWZEcmFnZ2VkIiwiIl1dfSksbH0pKCksTVU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYpe3RoaXMuZHJhZ0V2ZW50TGlzdGVuZXI9YSx0aGlzLnJlbmRlcmVyPWZ9Z2V0IGRlZmF1''@;'; put 'put ''bHRIYW5kbGVFbCgpe3JldHVybiB0aGlzLl9kZWZhdWx0SGFuZGxlRWx9c2V0IGRlZmF1bHRIYW5kbGVFbChhKXt0aGlzLl9kZWZhdWx0SGFuZGxlRWw9YSx0aGlzLl9jdXN0b21IYW5kbGVFbHx8dGhpcy5tYWtlRWxlbWVudEhhbmRsZSh0aGlzLl9kZWZhdWx0SGFuZGxlRWwpfWdldCBjdXN0''@;'; put 'put ''b21IYW5kbGVFbCgpe3JldHVybiB0aGlzLl9jdXN0b21IYW5kbGVFbH1yZWdpc3RlckN1c3RvbUhhbmRsZShhKXt0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRldGFjaERyYWdMaXN0ZW5lcnMoKSx0aGlzLl9jdXN0b21IYW5kbGVFbD1hLHRoaXMubWFrZUVsZW1lbnRIYW5kbGUodGhpcy5fY3Vz''@;'; put 'put ''dG9tSGFuZGxlRWwpfXVucmVnaXN0ZXJDdXN0b21IYW5kbGUoKXt0aGlzLmRyYWdFdmVudExpc3RlbmVyLmRldGFjaERyYWdMaXN0ZW5lcnMoKSx0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2N1c3RvbUhhbmRsZUVsLCJkcmFnLWhhbmRsZSIpLGRlbGV0ZSB0aGlzLl9jdXN0b21I''@;'; put 'put ''YW5kbGVFbCx0aGlzLl9kZWZhdWx0SGFuZGxlRWwmJnRoaXMubWFrZUVsZW1lbnRIYW5kbGUodGhpcy5fZGVmYXVsdEhhbmRsZUVsKX1tYWtlRWxlbWVudEhhbmRsZShhKXt0aGlzLl9kZWZhdWx0SGFuZGxlRWwmJnRoaXMuX2RlZmF1bHRIYW5kbGVFbCE9PWEmJnRoaXMucmVuZGVyZXIucmVt''@;'; put 'put ''b3ZlQ2xhc3ModGhpcy5fZGVmYXVsdEhhbmRsZUVsLCJkcmFnLWhhbmRsZSIpLHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuYXR0YWNoRHJhZ0xpc3RlbmVycyhhKSx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGEsImRyYWctaGFuZGxlIil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXty''@;'; put 'put ''ZXR1cm4gbmV3KGF8fGwpKHNyKGNTKSxzcihqbykpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGRzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMucmVuZGVyZXI9YX1lbnRlcigpe3RoaXMucmVuZGVyZXIuYWRkQ2xhc3Mo''@;'; put 'put ''ZG9jdW1lbnQuYm9keSwiaW4tZHJhZyIpfWV4aXQoKXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksImluLWRyYWciKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3Ioam8pKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjps''@;'; put 'put ''LGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxoc2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPLFgpe3RoaXMuZWw9YSx0aGlzLmRyYWdFdmVudExpc3RlbmVyPWYsdGhpcy5kcmFnSGFuZGxlUmVnaXN0cmFyPWQsdGhpcy52aWV3Q29udGFpbmVyUmVmPWgsdGhp''@;'; put 'put ''cy5jZnI9bSx0aGlzLmluamVjdG9yPV8sdGhpcy5kcmFnZ2FibGVTbmFwc2hvdD1PLHRoaXMuZ2xvYmFsRHJhZ01vZGU9WCx0aGlzLmRyYWdTdGFydEVtaXR0ZXI9bmV3IHhyLHRoaXMuZHJhZ01vdmVFbWl0dGVyPW5ldyB4cix0aGlzLmRyYWdFbmRFbWl0dGVyPW5ldyB4cix0aGlzLmRyYWdP''@;'; put 'put ''bj0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5kcmFnZ2FibGVFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5jb21wb25lbnRGYWN0b3J5PXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNzZSl9c2V0IGRhdGFUcmFuc2ZlcihhKXt0aGlzLmRyYWdFdmVudExpc3Rl''@;'; put 'put ''bmVyLmRyYWdEYXRhVHJhbnNmZXI9YX1zZXQgZ3JvdXAoYSl7dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5ncm91cD1hfXNldCBkcmFnU3RhcnREZWxheShhKXsibnVtYmVyIj09dHlwZW9mIGE/dGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnU3RhcnREZWxheT1hOiJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''YSYmKHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZHJhZ1N0YXJ0RGVsYXk9cGFyc2VJbnQoYSwxMCl8fDApfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZHJhZ0hhbmRsZVJlZ2lzdHJhci5kZWZhdWx0SGFuZGxlRWw9dGhpcy5kcmFnZ2FibGVFbCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0''@;'; put 'put ''aGlzLmRyYWdFdmVudExpc3RlbmVyLmRyYWdTdGFydGVkLnN1YnNjcmliZShhPT57dGhpcy5nbG9iYWxEcmFnTW9kZS5lbnRlcigpLHRoaXMuZHJhZ09uPSEwLHRoaXMuY3VzdG9tR2hvc3R8fHRoaXMuY3JlYXRlRGVmYXVsdEdob3N0KGEpLHRoaXMuZHJhZ1N0YXJ0RW1pdHRlci5lbWl0KG5l''@;'; put 'put ''dyB0MyhhKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kcmFnTW92ZWQuc3Vic2NyaWJlKGE9Pnt0aGlzLmRyYWdNb3ZlRW1pdHRlci5lbWl0KG5ldyB0MyhhKSl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kcmFnRXZlbnRMaXN0''@;'; put 'put ''ZW5lci5kcmFnRW5kZWQuc3Vic2NyaWJlKGE9Pnt0aGlzLmdsb2JhbERyYWdNb2RlLmV4aXQoKSx0aGlzLmRyYWdPbj0hMSx0aGlzLmN1c3RvbUdob3N0fHx0aGlzLmRlc3Ryb3lEZWZhdWx0R2hvc3QoKSx0aGlzLmRyYWdFbmRFbWl0dGVyLmVtaXQobmV3IHQzKGEpKX0pKX1uZ09uRGVzdHJv''@;'; put 'put ''eSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSksdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCl9Y3JlYXRlRGVmYXVsdEdob3N0KGEpe3RoaXMuZHJhZ2dhYmxlU25hcHNob3QuY2FwdHVyZSh0aGlzLmRyYWdnYWJsZUVs''@;'; put 'put ''LGEpLHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodGhpcy5jb21wb25lbnRGYWN0b3J5LDAsdGhpcy5pbmplY3RvcixbW3RoaXMuZHJhZ2dhYmxlRWwuY2xvbmVOb2RlKCEwKV1dKX1kZXN0cm95RGVmYXVsdEdob3N0KCl7dGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFy''@;'; put 'put ''KCksdGhpcy5kcmFnZ2FibGVTbmFwc2hvdC5kaXNjYXJkKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChjUykscnQoTVUpLHJ0KGZhKSxydChjMSkscnQoQWwpLHJ0KFNVKSxydChkc2UpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6''@;'; put 'put ''bCxzZWxlY3RvcnM6W1siIiwiY2xyRHJhZ2dhYmxlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsZnNlLDUpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYuY3VzdG9tR2hvc3Q9aC5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5j''@;'; put 'put ''dGlvbihhLGYpezImYSYmZ3IoImRyYWdnYWJsZSIsITApKCJiZWluZy1kcmFnZ2VkIixmLmRyYWdPbil9LGlucHV0czp7ZGF0YVRyYW5zZmVyOlsiY2xyRHJhZ2dhYmxlIiwiZGF0YVRyYW5zZmVyIl0sZ3JvdXA6WyJjbHJHcm91cCIsImdyb3VwIl0sZHJhZ1N0YXJ0RGVsYXk6WyJjbHJEcmFn''@;'; put 'put ''U3RhcnREZWxheSIsImRyYWdTdGFydERlbGF5Il19LG91dHB1dHM6e2RyYWdTdGFydEVtaXR0ZXI6ImNsckRyYWdTdGFydCIsZHJhZ01vdmVFbWl0dGVyOiJjbHJEcmFnTW92ZSIsZHJhZ0VuZEVtaXR0ZXI6ImNsckRyYWdFbmQifSxmZWF0dXJlczpbcmkoW2NTLE1VLFNVLGRzZSx4MV0pXX0p''@;'; put 'put ''LGx9KSgpLHBzZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dXX0pLGx9KSgpO2NvbnN0IG1zZT1uZXcgTWkoIkZPQ1VTX09O''@;'; put 'put ''X1ZJRVdfSU5JVCIpLEdGZT17cHJvdmlkZTptc2UsdXNlVmFsdWU6ITB9O2xldCBrVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfKXt0aGlzLmVsPWEsdGhpcy5wbGF0Zm9ybUlkPWYsdGhpcy5mb2N1c09uVmlld0luaXQ9ZCx0aGlzLnJlbmRlcmVyPW0sdGhpcy5kaXJl''@;'; put 'put ''Y3RGb2N1cz0hMCx0aGlzLmRlc3Ryb3kkPW5ldyB3ZSx0aGlzLl9pc0VuYWJsZWQ9dGhpcy5mb2N1c09uVmlld0luaXQsdGhpcy5kb2N1bWVudD1oLF8ucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PndkKGEubmF0aXZlRWxlbWVudCwiZm9jdXNvdXQiKS5waXBlKEFoKHRoaXMuZGVzdHJveSQpKS5z''@;'; put 'put ''dWJzY3JpYmUoKCk9Pnt0aGlzLmRpcmVjdEZvY3VzfHwodGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJvdXRsaW5lIixudWxsKSl9KSl9c2V0''@;'; put 'put ''IGlzRW5hYmxlZChhKXt0aGlzLmZvY3VzT25WaWV3SW5pdCYmImJvb2xlYW4iPT10eXBlb2YgYSYmKHRoaXMuX2lzRW5hYmxlZD1hKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmZvY3VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3kkLm5leHQoKX1mb2N1cygpe0hhKHRoaXMucGxhdGZv''@;'; put 'put ''cm1JZCkmJnRoaXMuX2lzRW5hYmxlZCYmdGhpcy5kb2N1bWVudCYmdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09dGhpcy5lbC5uYXRpdmVFbGVtZW50JiYodGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09dGhpcy5lbC5uYXRp''@;'; put 'put ''dmVFbGVtZW50JiYodGhpcy5kaXJlY3RGb2N1cz0hMSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiLTEiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwib3V0bGluZSIsIm5vbmUiKSx0aGlz''@;'; put 'put ''LmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQocWEpLHJ0KG1zZSkscnQoRmEpLHJ0KGpvKSxydChVbykpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJG''@;'; put 'put ''b2N1c09uVmlld0luaXQiLCIiXV0saW5wdXRzOntpc0VuYWJsZWQ6WyJjbHJGb2N1c09uVmlld0luaXQiLCJpc0VuYWJsZWQiXX19KSxsfSkoKSxXZz0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGko''@;'; put 'put ''e3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtwcm92aWRlcnM6W0dGZV0saW1wb3J0czpbW2JvXV19KSxsfSkoKSwkRmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcz1bXX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBj''@;'; put 'put ''dXJyZW50KGEpe3RoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5wdXNoKHRoaXMuX2N1cnJlbnQpLHRoaXMuX2N1cnJlbnQ9YX1nZXQgbmJGb2N1c1RyYXBwZXJzKCl7cmV0dXJuIHRoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5sZW5ndGh9YWN0aXZhdGVQcmV2aW91c1RyYXBwZXIoKXt0aGlzLl9j''@;'; put 'put ''dXJyZW50PXRoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5wb3AoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksZzQ9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMuZWw9YSx0aGlzLmluamVjdG9yPWYsdGhpcy5mb2N1c1RyYXBzVHJhY2tlcj1kLHRoaXMucmVuZGVyZXI9aCx0aGlzLnBsYXRmb3JtSWQ9bSx0aGlzLmxvY2FsRm9jdXNFc2NhcGVkPSExLHRoaXMuX2NvbmZpZz17c3RyaWN0''@;'; put 'put ''OiEwfSx0aGlzLmRvY3VtZW50PXRoaXMuaW5qZWN0b3IuZ2V0KEZhKSx0aGlzLmZvY3VzVHJhcHNUcmFja2VyLmN1cnJlbnQ9dGhpc31zZXQgY29uZmlnKGEpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKHRoaXMuX2NvbmZpZywiIj09PWE/e306YSl9Z2V0IHBvdGVudGlhbGx5Rm9jdXNh''@;'; put 'put ''YmxlRWxzKCl7cmV0dXJuWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZl06bm90KFt0YWJpbmRleD0iLTEiXSksIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0iLTEiXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmlu''@;'; put 'put ''ZGV4PSItMSJdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSItMSJdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Ii0xIl0pLCBbY29udGVudGVkaXRhYmxlPSJ0cnVlIl06bm90KFt0YWJpbmRleD0iLTEiXSksIFt0YWJpbmRleF06bm90''@;'; put 'put ''KFt0YWJpbmRleD0iLTEiXSkgJyldfW5nT25Jbml0KCl7SGEodGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpLHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpKX1uZ0FmdGVyVmlld0lu''@;'; put 'put ''aXQoKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiYodGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQ9dGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LHRoaXMucGFyZW50RWxlbWVudD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCksdGhpcy5hZGRSZWJvdW5kRWxzKCl9bmdPbkRl''@;'; put 'put ''c3Ryb3koKXt0aGlzLnJlbW92ZVJlYm91bmRFbHMoKSx0aGlzLnNldFByZXZpb3VzRm9jdXMoKSx0aGlzLmZvY3VzVHJhcHNUcmFja2VyLmFjdGl2YXRlUHJldmlvdXNUcmFwcGVyKCl9b25Gb2N1c0luKGEpe2NvbnN0IGY9dGhpcy5lbC5uYXRpdmVFbGVtZW50O3RoaXMuZm9jdXNUcmFwc1Ry''@;'; put 'put ''YWNrZXIuY3VycmVudCE9PXRoaXN8fCFIYSh0aGlzLnBsYXRmb3JtSWQpfHx0aGlzLmxvY2FsRm9jdXNFc2NhcGVkfHxmLmNvbnRhaW5zKGEudGFyZ2V0KXx8KGEudGFyZ2V0PT09dGhpcy50b3BSZWJvdW5kRWwmJmYuY29udGFpbnMoYS5yZWxhdGVkVGFyZ2V0KT8odGhpcy5mb2N1c0xhc3RG''@;'; put 'put ''b2N1c2FibGUoKSx0aGlzLmZvY3VzVHJhcEVsSWZPdXRzaWRlKCkpOmEudGFyZ2V0PT09dGhpcy5ib3R0b21SZWJvdW5kRWwmJmYuY29udGFpbnMoYS5yZWxhdGVkVGFyZ2V0KT8odGhpcy5mb2N1c0ZpcnN0Rm9jdXNhYmxlKCksdGhpcy5mb2N1c1RyYXBFbElmT3V0c2lkZSgpKTp0aGlzLl9j''@;'; put 'put ''b25maWcuc3RyaWN0P3RoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpOnRoaXMubG9jYWxGb2N1c0VzY2FwZWQ9ITApfXNldFByZXZpb3VzRm9jdXMoKXt0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudCYmdGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMucHJldmlvdXNB''@;'; put 'put ''Y3RpdmVFbGVtZW50LmZvY3VzKCl9Y3JlYXRlRm9jdXNhYmxlT2ZmU2NyZWVuRWwoKXtjb25zdCBhPXRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3JldHVybiB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShhLCJ0YWJpbmRleCIsIjAiKSx0aGlzLnJlbmRlcmVyLmFkZENs''@;'; put 'put ''YXNzKGEsIm9mZnNjcmVlbi1mb2N1cy1yZWJvdW5kZXIiKSxhfWFkZFJlYm91bmRFbHMoKXtpZihIYSh0aGlzLnBsYXRmb3JtSWQpKXt0aGlzLnRvcFJlYm91bmRFbD10aGlzLmNyZWF0ZUZvY3VzYWJsZU9mZlNjcmVlbkVsKCksdGhpcy5ib3R0b21SZWJvdW5kRWw9dGhpcy5jcmVhdGVGb2N1''@;'; put 'put ''c2FibGVPZmZTY3JlZW5FbCgpO2NvbnN0IGE9dGhpcy5lbC5uYXRpdmVFbGVtZW50O3RoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKGEucGFyZW50RWxlbWVudCx0aGlzLnRvcFJlYm91bmRFbCxhKSxhLm5leHRTaWJsaW5nP3RoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKGEucGFyZW50Tm9k''@;'; put 'put ''ZSx0aGlzLmJvdHRvbVJlYm91bmRFbCxhLm5leHRTaWJsaW5nKTp0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGEucGFyZW50Tm9kZSx0aGlzLmJvdHRvbVJlYm91bmRFbCl9fXJlbW92ZVJlYm91bmRFbHMoKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLnRvcFJlYm91bmRFbCYmdGhpcy5i''@;'; put 'put ''b3R0b21SZWJvdW5kRWwmJih0aGlzLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy50b3BSZWJvdW5kRWwpLHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmJvdHRvbVJlYm91bmRFbCksZGVsZXRlIHRoaXMudG9wUmVib3VuZEVsLGRlbGV0ZSB0aGlzLmJvdHRvbVJl''@;'; put 'put ''Ym91bmRFbCl9Zm9jdXNGaXJzdEZvY3VzYWJsZSgpe2ZvcihsZXQgYT0wO2E8dGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVscy5sZW5ndGgmJih0aGlzLmZpcnN0Rm9jdXNhYmxlRWw9dGhpcy5mb2N1c0VsZW1lbnQodGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVsc1thXSksIXRoaXMuZmly''@;'; put 'put ''c3RGb2N1c2FibGVFbCk7YSsrKTt9Zm9jdXNMYXN0Rm9jdXNhYmxlKCl7Zm9yKGxldCBhPXRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHMubGVuZ3RoLTE7YT49MCYmKHRoaXMubGFzdEZvY3VzYWJsZUVsPXRoaXMuZm9jdXNFbGVtZW50KHRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHNb''@;'; put 'put ''YV0pLCF0aGlzLmxhc3RGb2N1c2FibGVFbCk7YS0tKTt9Zm9jdXNUcmFwRWxJZk91dHNpZGUoKXt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpfWZvY3VzRWxlbWVudChhKXtyZXR1cm4g''@;'; put 'put ''YSYmYS5mb2N1cyYmKGEuZm9jdXMoKSxkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09YSk/YTpudWxsfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQoQWwpLHJ0KCRGZSkscnQoam8pLHJ0KHFhKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBl''@;'; put 'put ''Omwsc2VsZWN0b3JzOltbIiIsImNsckZvY3VzVHJhcCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJmb2N1c2luIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkZvY3VzSW4oaCl9LDAsTDIpfSxpbnB1dHM6e2NvbmZpZzpbImNsckZvY3VzVHJhcCIsImNvbmZpZyJd''@;'; put 'put ''fX0pLGx9KSgpLEpEPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tib11dfSksbH0pKCkscUZlPSgoKT0+e2NsYXNzIGx7Y29uc3Ry''@;'; put 'put ''dWN0b3IoKXt0aGlzLl90ZXh0Q29udGVudENoYW5nZT1uZXcgd2V9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX3RleHRDb250ZW50fXNldCB0ZXh0Q29udGVudChhKXt0aGlzLl90ZXh0Q29udGVudD1hLHRoaXMuX3RleHRDb250ZW50Q2hhbmdlLm5leHQoYSl9Z2V0IHRleHRDb250''@;'; put 'put ''ZW50Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX3RleHRDb250ZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxYRmU9''@;'; put 'put ''KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvXV19KSxsfSkoKSxRRmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLGxsLGxTXV19KSxsfSkoKSxJaD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5lbD1hLHRoaXMucmVuZGVyZXI9Zix0aGlz''@;'; put 'put ''LmNsckxvYWRpbmdDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLmJ1dHRvblN0YXRlPVhjLHRoaXMuc3RhdGU9WGMuREVGQVVMVH1sb2FkaW5nU3RhdGVDaGFuZ2UoYSl7aWYoYSE9PXRoaXMuc3RhdGUpe3N3aXRjaCh0aGlzLnN0YXRlPWEsYSl7Y2FzZSBYYy5ERUZBVUxUOnRoaXMucmVuZGVyZXIu''@;'; put 'put ''cmVtb3ZlU3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIpLHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2Zvcm0iKSx0aGlzLmRpc2FibGVkfHx0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVs''@;'; put 'put ''ZW1lbnQsImRpc2FibGVkIik7YnJlYWs7Y2FzZSBYYy5MT0FESU5HOnRoaXMuc2V0RXhwbGljaXRCdXR0b25XaWR0aCgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGV6KDApIiksdGhpcy5yZW5kZXJlci5zZXRBdHRy''@;'; put 'put ''aWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsIiIpO2JyZWFrO2Nhc2UgWGMuU1VDQ0VTUzp0aGlzLnNldEV4cGxpY2l0QnV0dG9uV2lkdGgoKTticmVhaztjYXNlIFhjLkVSUk9SOnRoaXMubG9hZGluZ1N0YXRlQ2hhbmdlKFhjLkRFRkFVTFQpfXRoaXMuY2xyTG9hZGlu''@;'; put 'put ''Z0NoYW5nZS5lbWl0KGEpfX1zZXRFeHBsaWNpdEJ1dHRvbldpZHRoKCl7aWYodGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXtjb25zdCBhPXRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo''@;'; put 'put ''KSxmPU1hdGgubWF4KDQyLGEud2lkdGgpO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYCR7Zn1weGApfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVmkpLHJ0KGpvKSl9LGwuXHUwMjc1Y21w''@;'; put 'put ''PWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImJ1dHRvbiIsImNsckxvYWRpbmciLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJlJyKCJkaXNhYmxlZCIsZi5kaXNhYmxlZD8iIjpudWxsKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRz''@;'; put 'put ''OntjbHJMb2FkaW5nQ2hhbmdlOiJjbHJMb2FkaW5nQ2hhbmdlIn0sZmVhdHVyZXM6W3JpKFt7cHJvdmlkZTpRQyx1c2VFeGlzdGluZzpsfV0pXSxhdHRyczpKRGUsbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjQsdmFyczo0LGNvbnN0czpbWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNo''@;'; put 'put ''Q2FzZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwic3Bpbm5lci1jaGVjayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksV3IoMCwwKSx0dCgxLFFEZSwyLDEsInNwYW4iLDEpLHR0KDIsZUllLDIsMSwi''@;'; put 'put ''c3BhbiIsMSksdHQoMyx0SWUsMiwxLCJzcGFuIiwxKSxHcigpKSwyJmEmJihSZSgibmdTd2l0Y2giLGYuc3RhdGUpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLGYuYnV0dG9uU3RhdGUuTE9BRElORyksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsZi5idXR0b25TdGF0ZS5TVUNDRVNTKSxTZSgx''@;'; put 'put ''KSxSZSgibmdTd2l0Y2hDYXNlIixmLmJ1dHRvblN0YXRlLkRFRkFVTFQpKX0sZGVwZW5kZW5jaWVzOltrZixDaF0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbQzEoImRlZmF1bHRCdXR0b24iLFtidSgiOmVudGVyIixbQ2Eoe29wYWNpdHk6MH0pLGNjKCIyMDBtcyAxMDBtcyBl''@;'; put 'put ''YXNlLWluIixDYSh7b3BhY2l0eToxfSkpXSksYnUoIjpsZWF2ZSIsW0NhKHtvcGFjaXR5OjB9KV0pXSksQzEoInNwaW5uZXIiLFtidSgiOmVudGVyIixbQ2Eoe29wYWNpdHk6MH0pLGNjKCIyMDBtcyAxMDBtcyBlYXNlLWluIixDYSh7b3BhY2l0eToxfSkpXSksYnUoIjpsZWF2ZSIsW0NhKHtv''@;'; put 'put ''cGFjaXR5OjF9KSxjYygiMTAwbXMgZWFzZS1vdXQiLENhKHtvcGFjaXR5OjB9KSldKV0pLEMxKCJ2YWxpZGF0ZWQiLFtidSgiOmVudGVyIixbY2MoIjYwMG1zIixiVGUoW0NhKHt0cmFuc2Zvcm06InNjYWxlKDAsMCkiLG9mZnNldDowfSksQ2Eoe29wYWNpdHk6MSxvZmZzZXQ6LjJ9KSxDYSh7''@;'; put 'put ''dHJhbnNmb3JtOiJzY2FsZSgxLjIsMS4yKSIsb2Zmc2V0Oi40fSksQ2Eoe3RyYW5zZm9ybToic2NhbGUoLjksLjkpIixvZmZzZXQ6LjZ9KSxDYSh7dHJhbnNmb3JtOiJzY2FsZSgxLDEpIixvZmZzZXQ6MX0pXSkpXSksYnUoIjpsZWF2ZSIsW0NhKHtvcGFjaXR5OjF9KSxjYygiMTAwbXMgZWFz''@;'; put 'put ''ZS1vdXQiLENhKHtvcGFjaXR5OjB9KSldKV0pXX19KSxsfSkoKSx0SGU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvXV19KSxs''@;'; put 'put ''fSkoKSxuSGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKHFvZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W3RIZSxRRmVdfSks''@;'; put 'put ''bH0pKCksckhlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJuZy1jb21wb25lbnQiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXt9''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFFEPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe30pLGx9KSgpLGlIZT0wLFRmPSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''Y29uc3RydWN0b3IoKXt0aGlzLl9pZD0iY2xyLWZvcm0tY29udHJvbC0iKyArK2lIZSx0aGlzLl9pZENoYW5nZT1uZXcgT2UodGhpcy5faWQpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoYSl7dGhpcy5faWQ9YSx0aGlzLl9pZENoYW5nZS5uZXh0KGEpfWdldCBpZENoYW5nZSgp''@;'; put 'put ''e3JldHVybiB0aGlzLl9pZENoYW5nZS5hc09ic2VydmFibGUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksb0hlPTAsR2c9KCgpPT57Y2xhc3MgbHtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe3RoaXMuX2lkPSJjbHItZm9ybS1jb250YWluZXItIisgKytvSGUsdGhpcy5faWRDaGFuZ2U9bmV3IE9lKHRoaXMuX2lkKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKGEpe3RoaXMuX2lkPWEsdGhpcy5faWRDaGFuZ2UubmV4dChhKX1nZXQgaWRDaGFuZ2Uo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5faWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2xldCBFVT0oKCk9PntjbGFzcyBse2Nv''@;'; put 'put ''bnN0cnVjdG9yKGEsZil7dGhpcy5jb250cm9sSWRTZXJ2aWNlPWEsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9Zix0aGlzLmNvbnRyb2xJZFN1ZmZpeD0iYWJzdHJhY3QifWdldCBpZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lcklkU2VydmljZT9gJHt0aGlzLmNvbnRhaW5lcklkU2VydmljZS5p''@;'; put 'put ''ZH0tJHt0aGlzLmNvbnRyb2xJZFN1ZmZpeH1gOnRoaXMuY29udHJvbElkU2VydmljZT9gJHt0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWR9LSR7dGhpcy5jb250cm9sSWRTdWZmaXh9YDpudWxsfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChUZiw4''@;'; put 'put ''KSxydChHZyw4KSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmx9KSxsfSkoKSxhSGU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEVVe2NvbnN0cnVjdG9yKGEsZil7c3VwZXIoYSxmKSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9YSx0aGlzLmNvbnRhaW5lcklkU2VydmljZT1mLHRoaXMuY29udHJvbElk''@;'; put 'put ''U3VmZml4PSJlcnJvciJ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFRmLDgpLHJ0KEdnLDgpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWNvbnRyb2wtZXJyb3IiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6''@;'; put 'put ''ZnVuY3Rpb24oYSxmKXsyJmEmJihScigiaWQiLGYuaWQpLGdyKCJjbHItc3VidGV4dCIsITApKX0sZmVhdHVyZXM6W3JvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoy''@;'; put 'put ''fSksbH0pKCkseFU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEVVe2NvbnN0cnVjdG9yKGEsZil7c3VwZXIoYSxmKSx0aGlzLmNvbnRyb2xJZFNlcnZpY2U9YSx0aGlzLmNvbnRhaW5lcklkU2VydmljZT1mLHRoaXMuY29udHJvbElkU3VmZml4PSJoZWxwZXIifX1yZXR1cm4gbC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChUZiw4KSxydChHZyw4KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1jb250cm9sLWhlbHBlciJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmKFJyKCJpZCIsZi5pZCks''@;'; put 'put ''Z3IoImNsci1zdWJ0ZXh0IiwhMCkpfSxmZWF0dXJlczpbcm9dLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxIMD0oKCk9PntjbGFzcyBse2NvbnN0cnVj''@;'; put 'put ''dG9yKCl7dGhpcy5fY29udHJvbENoYW5nZXM9bmV3IHdlLHRoaXMuX2hlbHBlcnM9bmV3IHdlfWdldCBjb250cm9sQ2hhbmdlcygpe3JldHVybiB0aGlzLl9jb250cm9sQ2hhbmdlcy5hc09ic2VydmFibGUoKX1nZXQgaGVscGVyc0NoYW5nZSgpe3JldHVybiB0aGlzLl9oZWxwZXJzLmFzT2Jz''@;'; put 'put ''ZXJ2YWJsZSgpfXNldENvbnRyb2woYSl7dGhpcy5fY29udHJvbENoYW5nZXMubmV4dChhKX1zZXRIZWxwZXJzKGEpe3RoaXMuX2hlbHBlcnMubmV4dChhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxm''@;'; put 'put ''YWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7dmFyIE4wPWZ1bmN0aW9uKGwpe3JldHVybiBsLk5PTkU9Ik5PTkUiLGwuVkFMSUQ9IlZBTElEIixsLklOVkFMSUQ9IklOVkFMSUQiLGx9KE4wfHx7fSk7bGV0IE9mPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5uZ0NvbnRyb2xT''@;'; put 'put ''ZXJ2aWNlPWEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3N0YXR1c0NoYW5nZXM9bmV3IE9lKE4wLk5PTkUpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUoZj0+e2YmJih0aGlzLmNvbnRyb2w9Zix0aGlz''@;'; put 'put ''LnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnRyaWdnZXJTdGF0dXNDaGFuZ2UoKX0pKSl9KSl9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5fc3RhdHVzQ2hhbmdlcy5hc09ic2VydmFibGUoKX1uZ09uRGVz''@;'; put 'put ''dHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9dHJpZ2dlclN0YXR1c0NoYW5nZSgpe2lmKHRoaXMuY29udHJvbCl7Y29uc3QgYT1OMFt0aGlzLmNvbnRyb2wuc3RhdHVzXTt0aGlzLl9zdGF0dXNDaGFuZ2VzLm5leHQoWyJWQUxJRCIsIklOVkFM''@;'; put 'put ''SUQiXS5pbmNsdWRlcyhhKT9hOk4wLk5PTkUpfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoSDApKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTt2YXIgJGc9ZnVuY3Rpb24obCl7cmV0dXJu''@;'; put 'put ''IGwuVkVSVElDQUw9InZlcnRpY2FsIixsLkhPUklaT05UQUw9Imhvcml6b250YWwiLGwuQ09NUEFDVD0iY29tcGFjdCIsbH0oJGd8fHt9KTtsZXQgbjM9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubWluTGFiZWxTaXplPTEsdGhpcy5tYXhMYWJlbFNpemU9MTIsdGhpcy5sYXlv''@;'; put 'put ''dXQ9JGcuSE9SSVpPTlRBTCx0aGlzLmxheW91dFZhbHVlcz1PYmplY3Qua2V5cygkZykubWFwKGE9PiRnW2FdKSx0aGlzLl9sYWJlbFNpemU9Mn1nZXQgbGFiZWxTaXplKCl7cmV0dXJuIHRoaXMuX2xhYmVsU2l6ZX1zZXQgbGFiZWxTaXplKGEpe3RoaXMubGFiZWxTaXplSXNWYWxpZChhKSYm''@;'; put 'put ''KHRoaXMuX2xhYmVsU2l6ZT1hKX1nZXQgbGF5b3V0Q2xhc3MoKXtyZXR1cm5gY2xyLWZvcm0tJHt0aGlzLmxheW91dH1gfWlzVmVydGljYWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT0kZy5WRVJUSUNBTH1pc0hvcml6b250YWwoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT0kZy5IT1JJWk9OVEFM''@;'; put 'put ''fWlzQ29tcGFjdCgpe3JldHVybiB0aGlzLmxheW91dD09PSRnLkNPTVBBQ1R9aXNWYWxpZChhKXtyZXR1cm4gdGhpcy5sYXlvdXRWYWx1ZXMuaW5kZXhPZihhKT4tMX1sYWJlbFNpemVJc1ZhbGlkKGEpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPj10aGlzLm1pbkxhYmVsU2l6ZSYm''@;'; put 'put ''YTw9dGhpcy5tYXhMYWJlbFNpemV9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGVsPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0''@;'; put 'put ''aGlzLmNvbnRyb2xJZFNlcnZpY2U9YSx0aGlzLmxheW91dFNlcnZpY2U9Zix0aGlzLm5nQ29udHJvbFNlcnZpY2U9ZCx0aGlzLnJlbmRlcmVyPWgsdGhpcy5lbD1tLHRoaXMuZW5hYmxlR3JpZD0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W119Z2V0IGxhYmVsVGV4dCgpe3JldHVybiB0aGlzLmVs''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQmJnRoaXMuZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudH1uZ09uSW5pdCgpeyh0aGlzLmNvbnRyb2xJZFNlcnZpY2V8fHRoaXMubmdDb250cm9sU2VydmljZSkmJnRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJjbHItY29udHJv''@;'; put 'put ''bC1sYWJlbCIpLHRoaXMuZW5hYmxlR3JpZCYmdGhpcy5sYXlvdXRTZXJ2aWNlJiYhdGhpcy5sYXlvdXRTZXJ2aWNlLmlzVmVydGljYWwoKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wiKTwwJiYodGhpcy5y''@;'; put 'put ''ZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImNsci1jb2wtMTIiKSx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxgY2xyLWNvbC1tZC0ke3RoaXMubGF5b3V0U2VydmljZS5sYWJlbFNpemV9YCkpLHRoaXMuY29udHJvbElkU2Vydmlj''@;'; put 'put ''ZSYmIXRoaXMuZm9yQXR0ciYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkQ2hhbmdlLnN1YnNjcmliZShhPT50aGlzLmZvckF0dHI9YSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1k''@;'; put 'put ''aXNhYmxlR3JpZCgpe3RoaXMuZW5hYmxlR3JpZD0hMX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVGYsOCkscnQobjMsOCkscnQoSDAsOCkscnQoam8pLHJ0KFZpKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImxhYmVs''@;'; put 'put ''Il1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZScigiZm9yIixmLmZvckF0dHIpfSxpbnB1dHM6e2ZvckF0dHI6WyJmb3IiLCJmb3JBdHRyIl19fSksbH0pKCksbEhlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBFVXtjb25zdHJ1Y3RvcihhLGYpe3N1cGVyKGEs''@;'; put 'put ''ZiksdGhpcy5jb250cm9sSWRTZXJ2aWNlPWEsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9Zix0aGlzLmNvbnRyb2xJZFN1ZmZpeD0ic3VjY2VzcyJ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFRmLDgpLHJ0KEdnLDgpKX0sbC5cdTAyNzVjbXA9''@;'; put 'put ''a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmKFJyKCJpZCIsZi5pZCksZ3IoImNsci1zdWJ0ZXh0IiwhMCkpfSxmZWF0dXJlczpbcm9dLG5nQ29udGVudFNlbGVjdG9yczpPbyxk''@;'; put 'put ''ZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxEZj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMubGF5b3V0U2VydmljZT1hLHRoaXMuY2xhc3NOYW1lPSIifWNvbnRyb2xDbGFzcyhh''@;'; put 'put ''PU4wLk5PTkUsZj0hMSxkPSIiKXtjb25zdCBoPVt0aGlzLmNsYXNzTmFtZSxkXTtzd2l0Y2goYSl7Y2FzZSBOMC5WQUxJRDpoLnB1c2goImNsci1zdWNjZXNzIik7YnJlYWs7Y2FzZSBOMC5JTlZBTElEOmgucHVzaCgiY2xyLWVycm9yIil9cmV0dXJuIGYmJnRoaXMubGF5b3V0U2VydmljZSYm''@;'; put 'put ''LTE9PT10aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJjbHItY29sIikmJmgucHVzaChgY2xyLWNvbC1tZC0ke3RoaXMubGF5b3V0U2VydmljZS5tYXhMYWJlbFNpemUtdGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZX0gY2xyLWNvbC0xMmApLGguam9pbigiICIpLnRyaW0oKX1pbml0Q29udHJv''@;'; put 'put ''bENsYXNzKGEsZil7ZiYmZi5jbGFzc05hbWUmJih0aGlzLmNsYXNzTmFtZT1mLmNsYXNzTmFtZSxmLmNsYXNzTmFtZS5zcGxpdCgiICIpLmZvckVhY2goaD0+e2guc3RhcnRzV2l0aCgiY2xyLWNvbCIpJiZhLnJlbW92ZUNsYXNzKGYsaCl9KSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKG4zLDgpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxvNz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPWEsdGhpcy5sYXlvdXRT''@;'; put 'put ''ZXJ2aWNlPWYsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPWQsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPWgsdGhpcy5fZHluYW1pYz0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2Uuc3RhdHVzQ2hhbmdlcy5z''@;'; put 'put ''dWJzY3JpYmUobT0+e3RoaXMuc3RhdGU9bSx0aGlzLnVwZGF0ZUhlbHBlcnMoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm5nQ29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKG09Pnt0aGlzLmNvbnRyb2w9bX0pKX1nZXQgc2hvd0hlbHBlcigpe3JldHVy''@;'; put 'put ''biEhdGhpcy5jb250cm9sSGVscGVyQ29tcG9uZW50JiYoISF0aGlzLmNvbnRyb2xIZWxwZXJDb21wb25lbnQmJighdGhpcy50b3VjaGVkfHx0aGlzLnN0YXRlPT09TjAuTk9ORSl8fCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50JiZ0aGlzLnN0YXRlPT09TjAuVkFMSUR8fCF0aGlzLmNv''@;'; put 'put ''bnRyb2xFcnJvckNvbXBvbmVudCYmdGhpcy5zdGF0ZT09PU4wLklOVkFMSUQpfWdldCBzaG93VmFsaWQoKXtyZXR1cm4gdGhpcy50b3VjaGVkJiZ0aGlzLnN0YXRlPT09TjAuVkFMSUQmJiEhdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudH1nZXQgc2hvd0ludmFsaWQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy50b3VjaGVkJiZ0aGlzLnN0YXRlPT09TjAuSU5WQUxJRCYmISF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudH1nZXQgdG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/LnRvdWNoZWR9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy51cGRhdGVIZWxwZXJzKCl9bmdPbkRlc3Ryb3koKXt0''@;'; put 'put ''aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfWNvbnRyb2xDbGFzcygpe3JldHVybiB0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2UuY29udHJvbENsYXNzKCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50JiZ0aGlzLnN0YXRlPT09TjAuVkFMSUR8fCF0aGlz''@;'; put 'put ''LnRvdWNoZWQ/TjAuTk9ORTp0aGlzLnN0YXRlLHRoaXMuYWRkR3JpZCgpKX1hZGRHcmlkKCl7cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCl9dXBkYXRlSGVscGVycygpe3RoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5uZ0NvbnRy''@;'; put 'put ''b2xTZXJ2aWNlLnNldEhlbHBlcnMoe3Nob3c6dGhpcy5zaG93SW52YWxpZHx8dGhpcy5zaG93SGVscGVyfHx0aGlzLnNob3dWYWxpZCxzaG93SW52YWxpZDp0aGlzLnNob3dJbnZhbGlkLHNob3dIZWxwZXI6dGhpcy5zaG93SGVscGVyLHNob3dWYWxpZDp0aGlzLnNob3dWYWxpZH0pfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChPZikscnQobjMsOCkscnQoRGYpLHJ0KEgwKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmKEZvKGQsZWwsNSksRm8oZCxsSGUsNSksRm8o''@;'; put 'put ''ZCxhSGUsNSksRm8oZCx4VSw1KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5sYWJlbD1oLmZpcnN0KSx1aShoPWNpKCkpJiYoZi5jb250cm9sU3VjY2Vzc0NvbXBvbmVudD1oLmZpcnN0KSx1aShoPWNpKCkpJiYoZi5jb250cm9sRXJyb3JDb21wb25lbnQ9aC5maXJzdCksdWkoaD1jaSgp''@;'; put 'put ''KSYmKGYuY29udHJvbEhlbHBlckNvbXBvbmVudD1oLmZpcnN0KX19fSksbH0pKCk7Y2xhc3MgZUl7Y29uc3RydWN0b3IoYyxhLGY9MCl7aWYodGhpcy5pbmplY3Rvcj1hLmluamVjdG9yLCF0aGlzLmluamVjdG9yLmdldChjLG51bGwpKXtjb25zdCBkPXRoaXMuaW5qZWN0b3IuZ2V0KGMxKSxo''@;'; put 'put ''PXRoaXMuaW5qZWN0b3IuZ2V0KFZpKTthLmNyZWF0ZUNvbXBvbmVudChkLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHJIZSkpO2NvbnN0IG09ZC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjKSxfPVtdO19bZl09W2gubmF0aXZlRWxlbWVudF07Y29uc3QgTz1hLmNyZWF0ZUNvbXBvbmVudCht''@;'; put 'put ''LHZvaWQgMCx2b2lkIDAsXyk7YS5yZW1vdmUoMCksTy5pbnN0YW5jZS5fZHluYW1pYz0hMCx0aGlzLmluamVjdG9yPU8uaW5qZWN0b3J9fWdldChjLGEpe3JldHVybiB0aGlzLmluamVjdG9yLmdldChjLGEpfX1sZXQgQVU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvdWNo''@;'; put 'put ''ZWQ9bmV3IHdlfWdldCB0b3VjaGVkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX3RvdWNoZWQuYXNPYnNlcnZhYmxlKCl9bWFya0FzVG91Y2hlZCgpe3RoaXMuX3RvdWNoZWQubmV4dCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92''@;'; put 'put ''PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxhNz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfKXt0aGlzLnZjcj1hLHRoaXMud3JhcHBlclR5cGU9Zix0aGlzLm5nQ29udHJvbD1oLHRoaXMuaW5kZXg9MCx0aGlzLnN1YnNjcmlwdGlvbnM9W10s''@;'; put 'put ''dGhpcy5yZW5kZXJlcj1tLHRoaXMuZWw9Xzt0cnl7dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPWQuZ2V0KEgwKSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1kLmdldChPZiksdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPWQuZ2V0KERmKSx0aGlzLm1hcmtDb250cm9sU2VydmljZT1kLmdldChB''@;'; put 'put ''VSl9Y2F0Y2h7fXRoaXMuY29udHJvbENsYXNzU2VydmljZSYmdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmluaXRDb250cm9sQ2xhc3MobSxfLm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFya0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1hcmtDb250cm9sU2Vy''@;'; put 'put ''dmljZS50b3VjaGVkQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMubWFya0FzVG91Y2hlZCgpfSkpLHRoaXMubmdDb250cm9sU2VydmljZSYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLmhlbHBlcnNDaGFuZ2Uuc3Vic2NyaWJlKE89Pnt0aGlzLnNldEFy''@;'; put 'put ''aWFEZXNjcmliZWRCeShPKX0pKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKGEpe3RoaXMuX2lkPWEsdGhpcy5jb250cm9sSWRTZXJ2aWNlJiYodGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkPWEpfW5nT25Jbml0KCl7dGhpcy5fY29udGFpbmVySW5qZWN0b3I9bmV3IGVJKHRoaXMu''@;'; put 'put ''d3JhcHBlclR5cGUsdGhpcy52Y3IsdGhpcy5pbmRleCksdGhpcy5jb250cm9sSWRTZXJ2aWNlPXRoaXMuX2NvbnRhaW5lckluamVjdG9yLmdldChUZik7dHJ5e3RoaXMuY29udGFpbmVySWRTZXJ2aWNlPXRoaXMuX2NvbnRhaW5lckluamVjdG9yLmdldChHZyl9Y2F0Y2h7fXRoaXMuX2lkP3Ro''@;'; put 'put ''aXMuY29udHJvbElkU2VydmljZS5pZD10aGlzLl9pZDp0aGlzLl9pZD10aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLm5nQ29udHJvbFNlcnZpY2Uuc2V0Q29udHJvbCh0aGlzLm5nQ29udHJvbCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlw''@;'; put 'put ''dGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXRyaWdnZXJWYWxpZGF0aW9uKCl7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2UmJnRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlLnRyaWdnZXJTdGF0dXNDaGFuZ2UoKX1nZXRQcm92aWRlckZyb21Db250YWluZXIoYSxmKXt0cnl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2NvbnRhaW5lckluamVjdG9yLmdldChhLGYpfWNhdGNoe3JldHVybiBmfX1tYXJrQXNUb3VjaGVkKCl7dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCksdGhpcy5uZ0NvbnRyb2wuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCl9c2V0QXJp''@;'; put 'put ''YURlc2NyaWJlZEJ5KGEpe2lmKGEuc2hvdyl7Y29uc3QgZj10aGlzLmdldEFyaWFEZXNjcmliZWRCeUlkKGEpO2lmKG51bGwhPT1mKXJldHVybiB2b2lkIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiYXJpYS1kZXNjcmliZWRieSIsZil9dGhpcy5y''@;'; put 'put ''ZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJhcmlhLWRlc2NyaWJlZGJ5Iil9Z2V0QXJpYURlc2NyaWJlZEJ5SWQoYSl7bGV0IGY9ImhlbHBlciI7cmV0dXJuIGEuc2hvd0ludmFsaWQ/Zj0iZXJyb3IiOmEuc2hvd1ZhbGlkJiYoZj0ic3VjY2VzcyIpLHRo''@;'; put 'put ''aXMuY29udGFpbmVySWRTZXJ2aWNlP3RoaXMuY29udGFpbmVySWRTZXJ2aWNlLmlkLmNvbmNhdCgiLSIsZik6dGhpcy5jb250cm9sSWRTZXJ2aWNlP3RoaXMuY29udHJvbElkU2VydmljZS5pZC5jb25jYXQoIi0iLGYpOm51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gbmV3KGF8fGwpKHJ0KGZhKSxydChkOCkscnQoQWwpLHJ0KHFjKSxydChqbykscnQoVmkpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGYudHJpZ2dlclZhbGlk''@;'; put 'put ''YXRpb24oKX0pLDImYSYmbTEoImlkIixmLmlkKX0saW5wdXRzOntpZDoiaWQifX0pLGx9KSgpLHZzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5sYXlvdXRTZXJ2aWNlPWEsdGhpcy5tYXJrQ29udHJvbFNlcnZpY2U9Zn1zZXQgbGFiZWxTaXplKGEpe2NvbnN0IGY9cGFy''@;'; put 'put ''c2VJbnQoYSwxMCl8fDI7dGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZT1mfW9uRm9ybVN1Ym1pdCgpe3RoaXMubWFya0FzVG91Y2hlZCgpfW1hcmtBc1RvdWNoZWQoKXt0aGlzLm1hcmtDb250cm9sU2VydmljZS5tYXJrQXNUb3VjaGVkKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KG4zKSxydChBVSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJGb3JtIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsZWwsNSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYo''@;'; put 'put ''Zi5sYWJlbHM9aCl9fSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoInN1Ym1pdCIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkZvcm1TdWJtaXQoKX0pLDImYSYmZ3IoImNsci1mb3JtIiwhMCkoImNsci1mb3JtLWhvcml6b250YWwiLGYubGF5b3V0U2Vydmlj''@;'; put 'put ''ZS5pc0hvcml6b250YWwoKSkoImNsci1mb3JtLWNvbXBhY3QiLGYubGF5b3V0U2VydmljZS5pc0NvbXBhY3QoKSl9LGlucHV0czp7bGFiZWxTaXplOlsiY2xyTGFiZWxTaXplIiwibGFiZWxTaXplIl19LGZlYXR1cmVzOltyaShbbjMsQVVdKV19KSxsfSkoKSxKdT0oKCk9PntjbGFzcyBse2Nv''@;'; put 'put ''bnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoXzEsdzEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGxdXX0pLGx9KSgpO2NvbnN0IFRVPW5ldyBNaSgi''@;'; put 'put ''SVNfVE9HR0xFIiksZkhlPXtwcm92aWRlOlRVLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gY0hlKCl7cmV0dXJuIG5ldyBPZSghMSl9fTtsZXQgVjA9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9keW5hbWljPSExLHRoaXMudG9nZ2xlPSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0''@;'; put 'put ''aGlzLnN1YnNjcmlwdGlvbnMucHVzaChhLnN1YnNjcmliZShmPT57dGhpcy50b2dnbGU9Zn0pKX1uZ09uSW5pdCgpe3RoaXMubGFiZWwmJnRoaXMubGFiZWwuZGlzYWJsZUdyaWQoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9''@;'; put 'put ''fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFRVKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1jaGVja2JveC13cmFwcGVyIl0sWyJjbHItdG9nZ2xlLXdyYXBwZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24o''@;'; put 'put ''YSxmLGQpe2lmKDEmYSYmRm8oZCxlbCw3KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLmxhYmVsPWguZmlyc3QpfX0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItY2hlY2tib3gtd3JhcHBlciIsIWYudG9nZ2xlKSgiY2xyLXRvZ2dsZS13cmFw''@;'; put 'put ''cGVyIixmLnRvZ2dsZSl9LGZlYXR1cmVzOltyaShbVGYsZkhlXSldLG5nQ29udGVudFNlbGVjdG9yczppSWUsZGVjbHM6Myx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKHJJZSksRHIoMCksRHIoMSwxKSx0dCgyLG5JZSwxLDAsImxh''@;'; put 'put ''YmVsIiwwKSksMiZhJiYoU2UoMiksUmUoIm5nSWYiLCFmLmxhYmVsKSl9LGRlcGVuZGVuY2llczpbJGksZWxdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEIwPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhN3tjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyl7c3VwZXIoYSxWMCxmLGQsaCxtKSx0aGlz''@;'; put 'put ''LnRvZ2dsZT1ffW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKTtjb25zdCBhPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKFRVLG51bGwpO2EmJm51bGwhPT10aGlzLnRvZ2dsZSYmYS5uZXh0KCEwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCkocnQoZmEpLHJ0KEFsKSxydChxYywxMCkscnQoam8pLHJ0KFZpKSxJbSgiY2xyVG9nZ2xlIikpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJDaGVja2JveCIsIiJdLFsiIiwiY2xyVG9nZ2xlIiwiIl1dLGZlYXR1cmVzOltyb119KSxsfSkoKSxsNz0oKCk9''@;'; put 'put ''PntjbGFzcyBsIGV4dGVuZHMgbzd7Y29uc3RydWN0b3IoYSxmLGQsaCl7c3VwZXIoaCxhLGYsZCksdGhpcy5sYXlvdXRTZXJ2aWNlPWEsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPWYsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPWQsdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9aCx0aGlzLmlu''@;'; put 'put ''bGluZT0hMX1nZXQgY2xySW5saW5lKCl7cmV0dXJuIHRoaXMuaW5saW5lfXNldCBjbHJJbmxpbmUoYSl7dGhpcy5pbmxpbmU9InN0cmluZyI9PXR5cGVvZiBhPyJmYWxzZSIhPT1hOiEhYX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpfXNldEFyaWFSb2xlcygpe3Ro''@;'; put 'put ''aXMucm9sZT10aGlzLmNoZWNrYm94ZXMubGVuZ3RoPyJncm91cCI6bnVsbH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQobjMsOCkscnQoRGYpLHJ0KEgwKSxydChPZikpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHIt''@;'; put 'put ''Y2hlY2tib3gtY29udGFpbmVyIl0sWyJjbHItdG9nZ2xlLWNvbnRhaW5lciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLEIwLDUpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYuY2hlY2tib3hlcz1oKX19LGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1''@;'; put 'put ''bmN0aW9uKGEsZil7MiZhJiYoUnIoInJvbGUiLGYucm9sZSksZ3IoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09Zi5jb250cm9sP251bGw6Zi5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsZi5hZGRHcmlkKCkpKX0saW5wdXRzOntj''@;'; put 'put ''bHJJbmxpbmU6ImNscklubGluZSJ9LGZlYXR1cmVzOltyaShbT2YsSDAsRGYsR2ddKSxyb10sbmdDb250ZW50U2VsZWN0b3JzOmRJZSxkZWNsczoxMCx2YXJzOjksY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXN1YnRl''@;'; put 'put ''eHQtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1j''@;'; put 'put ''aXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2st''@;'; put 'put ''Y2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaShmSWUpLERyKDApLHR0KDEsb0llLDEsMCwibGFiZWwiLDApLHllKDIsImRpdiIsMSksRHIoMywxKSx5ZSg0''@;'; put 'put ''LCJkaXYiLDIpLHR0KDUsYUllLDEsMCwibmctY29udGVudCIsMCksdHQoNixsSWUsMSwwLCJjZHMtaWNvbiIsMyksdHQoNyxzSWUsMSwwLCJjZHMtaWNvbiIsNCksdHQoOCx1SWUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCg5LGNJZSwxLDAsIm5nLWNvbnRlbnQiLDApLENlKCkoKSksMiZhJiYo''@;'; put 'put ''U2UoMSksUmUoIm5nSWYiLCFmLmxhYmVsJiZmLmFkZEdyaWQoKSksU2UoMSksZ3IoImNsci1jb250cm9sLWlubGluZSIsZi5jbHJJbmxpbmUpLFJlKCJuZ0NsYXNzIixmLmNvbnRyb2xDbGFzcygpKSxTZSgzKSxSZSgibmdJZiIsZi5zaG93SGVscGVyKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93''@;'; put 'put ''SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbJGksZWwseXUsSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGRIZT0oKCk9PntjbGFz''@;'; put 'put ''cyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoXzEsdzEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGwsSnUsUURdLEp1XX0pLGx9KSgpO2Z1''@;'; put 'put ''bmN0aW9uIElmKGwpe3JldHVybiBudWxsIT09bCYmKCJzdHJpbmciPT10eXBlb2YgbD9sLmxlbmd0aD49MDoiYm9vbGVhbiI9PXR5cGVvZiBsJiZsKX1sZXQgUmg9KCgpPT57Y2xhc3MgbHtnZXQgc3Bpbm5lckNsYXNzKCl7cmV0dXJuITB9Z2V0IGlubGluZUNsYXNzKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2lubGluZX1zZXQgY2xySW5saW5lKGEpe3RoaXMuX2lubGluZT1JZihhKX1nZXQgaW52ZXJzZUNsYXNzKCl7cmV0dXJuIHRoaXMuX2ludmVyc2V9c2V0IGNsckludmVyc2UoYSl7dGhpcy5faW52ZXJzZT1JZihhKX1nZXQgc21hbGxDbGFzcygpe3JldHVybiB0aGlzLl9zbWFsbH1zZXQgY2xy''@;'; put 'put ''U21hbGwoYSl7dGhpcy5fc21hbGw9SWYoYSl9Z2V0IG1lZGl1bUNsYXNzKCl7cmV0dXJuIXRoaXMuX3NtYWxsJiZ0aGlzLl9tZWRpdW19c2V0IGNsck1lZGl1bShhKXt0aGlzLl9tZWRpdW09SWYoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxs''@;'; put 'put ''Llx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItc3Bpbm5lciJdXSxob3N0VmFyczoxMSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJihScigiYXJpYS1idXN5IiwhMCksZ3IoInNwaW5uZXIiLGYuc3Bpbm5lckNsYXNzKSgic3Bpbm5lci1pbmxpbmUiLGYuaW5s''@;'; put 'put ''aW5lQ2xhc3MpKCJzcGlubmVyLWludmVyc2UiLGYuaW52ZXJzZUNsYXNzKSgic3Bpbm5lci1zbSIsZi5zbWFsbENsYXNzKSgic3Bpbm5lci1tZCIsZi5tZWRpdW1DbGFzcykpfSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIixjbHJJbnZlcnNlOiJjbHJJbnZlcnNlIixjbHJTbWFsbDoi''@;'; put 'put ''Y2xyU21hbGwiLGNsck1lZGl1bToiY2xyTWVkaXVtIn0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSxEcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGZTPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tib11dfSksbH0pKCk7dmFyIHY0PWZ1bmN0aW9uKGwpe3JldHVybiBsLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsbC5IT1JJWk9OVEFMPSJo''@;'; put 'put ''b3Jpem9udGFsIixsLkJPVEg9ImJvdGgiLGx9KHY0fHx7fSk7bGV0IHlzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5lbGVtZW50UmVmPWEsdGhpcy5wbGF0Zm9ybUlkPWZ9Z2V0IG5hdGl2ZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1l''@;'; put 'put ''bnR9Zm9jdXMoKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQocWEpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siIiwiY2xyS2V5Rm9jdXNJdGVtIiwiIl1dfSksbH0pKCksczc9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmVsZW1lbnRSZWY9YSx0aGlzLmRpcmVjdGlvbj12NC5WRVJUSUNBTCx0aGlzLmZvY3VzT25Mb2FkPSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmZv''@;'; put 'put ''Y3VzQ2hhbmdlPW5ldyB4cix0aGlzLl9jdXJyZW50PTB9Z2V0IGZvY3VzYWJsZUl0ZW1zKCl7cmV0dXJuIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zP3RoaXMuX2ZvY3VzYWJsZUl0ZW1zOnRoaXMuY2xyS2V5Rm9jdXNJdGVtcz90aGlzLmNscktleUZvY3VzSXRlbXMudG9BcnJheSgpOltdfXNldCBm''@;'; put 'put ''b2N1c2FibGVJdGVtcyhhKXtBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCYmKHRoaXMuX2ZvY3VzYWJsZUl0ZW1zPWEsdGhpcy5pbml0aWFsaXplRm9jdXMoKSl9Z2V0IG5hdGl2ZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9Z2V0IGN1cnJlbnQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fY3VycmVudH1zZXQgY3VycmVudChhKXt0aGlzLl9jdXJyZW50IT09YSYmKHRoaXMuX2N1cnJlbnQ9YSl9Z2V0IGN1cnJlbnRJdGVtKCl7cmV0dXJuIHRoaXMuZm9jdXNhYmxlSXRlbXNbdGhpcy5fY3VycmVudF19Z2V0IGN1cnJlbnRJdGVtRWxlbWVudCgpe3JldHVybiB0''@;'; put 'put ''aGlzLmN1cnJlbnRJdGVtLm5hdGl2ZUVsZW1lbnQ/dGhpcy5jdXJyZW50SXRlbS5uYXRpdmVFbGVtZW50OnRoaXMuY3VycmVudEl0ZW19bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JJdGVtVXBkYXRlcygpKSx0aGlzLmluaXRpYWxp''@;'; put 'put ''emVGb2N1cygpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1oYW5kbGVLZXlib2FyZEV2ZW50KGEpe2lmKHRoaXMuY3VycmVudEl0ZW1FbGVtZW50IT09YS50YXJnZXQpe2NvbnN0IGY9dGhpcy5nZXRJdGVtUG9zaXRpb24oYS50''@;'; put 'put ''YXJnZXQpO3RoaXMucG9zaXRpb25JblJhbmdlKGYpJiYodGhpcy5jdXJyZW50PWYpfXRoaXMucHJldktleVByZXNzZWQoYSkmJnRoaXMuY3VycmVudEZvY3VzSXNOb3RGaXJzdEl0ZW0oKT90aGlzLm1vdmVUbyh0aGlzLmN1cnJlbnQtMSk6dGhpcy5uZXh0S2V5UHJlc3NlZChhKSYmdGhpcy5j''@;'; put 'put ''dXJyZW50Rm9jdXNJc05vdExhc3RJdGVtKCk/dGhpcy5tb3ZlVG8odGhpcy5jdXJyZW50KzEpOmEuY29kZT09PU1vLkhvbWU/dGhpcy5tb3ZlVG8oMCk6YS5jb2RlPT09TW8uRW5kJiZ0aGlzLm1vdmVUbyh0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aC0xKSxiVShhKX1zZXRDbGlja2VkSXRl''@;'; put 'put ''bUN1cnJlbnQoYSl7Y29uc3QgZj10aGlzLmdldEl0ZW1Qb3NpdGlvbihhLnRhcmdldCk7Zj4tMSYmdGhpcy5tb3ZlVG8oZil9Zm9jdXNDdXJyZW50KCl7dGhpcy5jdXJyZW50SXRlbS5mb2N1cygpLHRoaXMuZm9jdXNDaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KX1tb3ZlVG8oYSl7dGhpcy5w''@;'; put 'put ''b3NpdGlvbkluUmFuZ2UoYSkmJih0aGlzLmN1cnJlbnQ9YSx0aGlzLmZvY3VzQ3VycmVudCgpKX1wb3NpdGlvbkluUmFuZ2UoYSl7cmV0dXJuIGE+PTAmJmE8dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGh9Y3VycmVudEZvY3VzSXNOb3RGaXJzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVu''@;'; put 'put ''dC0xPj0wfWN1cnJlbnRGb2N1c0lzTm90TGFzdEl0ZW0oKXtyZXR1cm4gdGhpcy5fY3VycmVudCsxPHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RofWluaXRpYWxpemVGb2N1cygpe3RoaXMuZm9jdXNhYmxlSXRlbXMmJnRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoJiYodGhpcy5fY3VycmVu''@;'; put 'put ''dD49dGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgmJih0aGlzLl9jdXJyZW50PXRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoLTEpLHRoaXMuZm9jdXNPbkxvYWQmJih0aGlzLmN1cnJlbnRJdGVtLmZvY3VzKCksdGhpcy5mb2N1c0NoYW5nZS5uZXh0KCkpKX1uZXh0S2V5UHJlc3NlZChhKXtj''@;'; put 'put ''b25zdCBmPUVkKGEua2V5KTtzd2l0Y2godGhpcy5kaXJlY3Rpb24pe2Nhc2UgdjQuVkVSVElDQUw6cmV0dXJuIGY9PT1Nby5BcnJvd0Rvd247Y2FzZSB2NC5IT1JJWk9OVEFMOnJldHVybiBmPT09TW8uQXJyb3dSaWdodDtjYXNlIHY0LkJPVEg6cmV0dXJuIGY9PT1Nby5BcnJvd0Rvd258fGY9''@;'; put 'put ''PT1Nby5BcnJvd1JpZ2h0O2RlZmF1bHQ6cmV0dXJuITF9fXByZXZLZXlQcmVzc2VkKGEpe2NvbnN0IGY9RWQoYS5rZXkpO3N3aXRjaCh0aGlzLmRpcmVjdGlvbil7Y2FzZSB2NC5WRVJUSUNBTDpyZXR1cm4gZj09PU1vLkFycm93VXA7Y2FzZSB2NC5IT1JJWk9OVEFMOnJldHVybiBmPT09TW8u''@;'; put 'put ''QXJyb3dMZWZ0O2Nhc2UgdjQuQk9USDpyZXR1cm4gZj09PU1vLkFycm93VXB8fGY9PT1Nby5BcnJvd0xlZnQ7ZGVmYXVsdDpyZXR1cm4hMX19Z2V0SXRlbVBvc2l0aW9uKGEpe3JldHVybiB0aGlzLl9mb2N1c2FibGVJdGVtcz90aGlzLmZvY3VzYWJsZUl0ZW1zLmluZGV4T2YoYSk6dGhpcy5m''@;'; put 'put ''b2N1c2FibGVJdGVtcy5tYXAoZj0+Zi5uYXRpdmVFbGVtZW50KS5pbmRleE9mKGEpfWxpc3RlbkZvckl0ZW1VcGRhdGVzKCl7cmV0dXJuIHRoaXMuY2xyS2V5Rm9jdXNJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuaW5pdGlhbGl6ZUZvY3VzKCl9KX19cmV0dXJuIGwuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVmkpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyS2V5Rm9jdXMiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmRm8oZCx5c2UsNSksMiZhKXtsZXQgaDt1aSho''@;'; put 'put ''PWNpKCkpJiYoZi5jbHJLZXlGb2N1c0l0ZW1zPWgpfX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgia2V5ZG93biIsZnVuY3Rpb24oaCl7cmV0dXJuIGYuaGFuZGxlS2V5Ym9hcmRFdmVudChoKX0pKCJjbGljayIsZnVuY3Rpb24oaCl7cmV0dXJuIGYuc2V0Q2xpY2tlZEl0''@;'; put 'put ''ZW1DdXJyZW50KGgpfSl9LGlucHV0czp7ZGlyZWN0aW9uOlsiY2xyRGlyZWN0aW9uIiwiZGlyZWN0aW9uIl0sZm9jdXNPbkxvYWQ6WyJjbHJGb2N1c09uTG9hZCIsImZvY3VzT25Mb2FkIl0sZm9jdXNhYmxlSXRlbXM6WyJjbHJLZXlGb2N1cyIsImZvY3VzYWJsZUl0ZW1zIl19LG91dHB1dHM6''@;'; put 'put ''e2ZvY3VzQ2hhbmdlOiJjbHJGb2N1c0NoYW5nZSJ9LGF0dHJzOmhJZSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksT1U9KCgpPT57Y2xhc3MgbHt9cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvXV19KSxsfSkoKTtjb25zdCB1Nz1uZXcgTWkoIlBPUE9WRVJfSE9TVF9BTkNIT1IiKTtjbGFzcyBoSGV7Y29udGFp''@;'; put 'put ''bnNJdGVtKGMpe3JldHVybiEhdGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5pbmNsdWRlcyhjKX1zZWxlY3QoYyl7dGhpcy5hZGRJdGVtKGMpfXVuc2VsZWN0KGMpe3RoaXMucmVtb3ZlSXRlbShjKX1pc0VtcHR5KCl7cmV0dXJuISh0aGlzLm1vZGVsJiZ0aGlzLm1vZGVsLmxlbmd0aD4wKX1wb3Ao''@;'; put 'put ''KXtsZXQgYztyZXR1cm4gdGhpcy5tb2RlbCYmdGhpcy5tb2RlbC5sZW5ndGg+MCYmKGM9dGhpcy5tb2RlbFt0aGlzLm1vZGVsLmxlbmd0aC0xXSx0aGlzLnJlbW92ZUl0ZW0oYykpLGN9dG9TdHJpbmcoYyxhPS0xKXtsZXQgZj0iIjtyZXR1cm4gdGhpcy5tb2RlbCYmKGE+LTE/dGhpcy5tb2Rl''@;'; put 'put ''bFthXSYmKGYrPWMmJnRoaXMubW9kZWxbYV1bY10/dGhpcy5tb2RlbFthXVtjXTp0aGlzLm1vZGVsW2FdLnRvU3RyaW5nKCkpOnRoaXMubW9kZWwuZm9yRWFjaChkPT57Zis9YyYmZFtjXT9kW2NdOmQudG9TdHJpbmcoKSxmKz0iICJ9KSksZi50cmltKCl9YWRkSXRlbShjKXt0aGlzLmNvbnRh''@;'; put 'put ''aW5zSXRlbShjKXx8KHRoaXMubW9kZWw9dGhpcy5tb2RlbHx8W10sdGhpcy5tb2RlbC5wdXNoKGMpKX1yZW1vdmVJdGVtKGMpe2lmKG51bGw9PXRoaXMubW9kZWwpcmV0dXJuO2NvbnN0IGE9dGhpcy5tb2RlbC5pbmRleE9mKGMpO2E+LTEmJnRoaXMubW9kZWwuc3BsaWNlKGEsMSksMD09PXRo''@;'; put 'put ''aXMubW9kZWwubGVuZ3RoJiYodGhpcy5tb2RlbD1udWxsKX19Y2xhc3MgcEhle2NvbnRhaW5zSXRlbShjKXtyZXR1cm4gdGhpcy5tb2RlbD09PWN9c2VsZWN0KGMpe3RoaXMubW9kZWw9Y311bnNlbGVjdChjKXt0aGlzLmNvbnRhaW5zSXRlbShjKSYmKHRoaXMubW9kZWw9bnVsbCl9aXNFbXB0''@;'; put 'put ''eSgpe3JldHVybiF0aGlzLm1vZGVsfXBvcCgpe2NvbnN0IGM9dGhpcy5tb2RlbDtyZXR1cm4gdGhpcy5tb2RlbD1udWxsLGN9dG9TdHJpbmcoYyl7cmV0dXJuIHRoaXMubW9kZWw/YyYmdGhpcy5tb2RlbFtjXT90aGlzLm1vZGVsW2NdOnRoaXMubW9kZWwudG9TdHJpbmcoKToiIn19Y2xhc3Mg''@;'; put 'put ''dEl7fWZ1bmN0aW9uIGJzZShsKXtyZXR1cm5bbCx7cHJvdmlkZTp0SSx1c2VFeGlzdGluZzpsfV19Y2xhc3MgbUhlIGV4dGVuZHMgcEhle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb2N1c0NoYW5nZWQ9bmV3IE9lKG51bGwpfWdldCBmb2N1c0NoYW5nZWQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fZm9jdXNDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpfXNlbGVjdChjKXt0aGlzLm1vZGVsIT09YyYmKHRoaXMubW9kZWw9Yyx0aGlzLl9mb2N1c0NoYW5nZWQubmV4dChjKSl9fWxldCBnSGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGluZz0hMSx0aGlz''@;'; put 'put ''Ll9jdXJyZW50SW5wdXQ9IiIsdGhpcy5faW5wdXRDaGFuZ2VkPW5ldyBPZSgiIiksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZD1uZXcgeEQoMSksdGhpcy5pbnB1dENoYW5nZWQ9dGhpcy5faW5wdXRDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpfWdldCBjdXJyZW50SW5wdXQoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''Y3VycmVudElucHV0fXNldCBjdXJyZW50SW5wdXQoYSl7IiI9PT1hJiYhdGhpcy5tdWx0aXNlbGVjdGFibGUmJnRoaXMuc2V0U2VsZWN0aW9uVmFsdWUobnVsbCksdGhpcy5fY3VycmVudElucHV0PWEsdGhpcy5faW5wdXRDaGFuZ2VkLm5leHQoYSl9Z2V0IHNlbGVjdGlvbkNoYW5nZWQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5hc09ic2VydmFibGUoKX1nZXQgbXVsdGlzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwgaW5zdGFuY2VvZiBoSGV9c2VsZWN0KGEpe251bGw9PWF8fHRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKGEpfHwo''@;'; put 'put ''dGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoYSksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX10b2dnbGUoYSl7bnVsbCE9YSYmKHRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKGEpP3RoaXMuc2VsZWN0aW9uTW9kZWwudW5zZWxlY3Qo''@;'; put 'put ''YSk6dGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoYSksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX11bnNlbGVjdChhKXtudWxsPT1hfHwhdGhpcy5zZWxlY3Rpb25Nb2RlbC5jb250YWluc0l0ZW0oYSl8fCh0aGlzLnNlbGVjdGlvbk1vZGVsLnVu''@;'; put 'put ''c2VsZWN0KGEpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4dCh0aGlzLnNlbGVjdGlvbk1vZGVsKSl9c2V0U2VsZWN0aW9uVmFsdWUoYSl7IXRoaXMuc2VsZWN0aW9uTW9kZWx8fHRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZWw9PT1hfHwhdGhpcy5zZWxlY3Rpb25Nb2RlbC5tb2RlbCYmIWF8''@;'; put 'put ''fCh0aGlzLnNlbGVjdGlvbk1vZGVsLm1vZGVsPWEsdGhpcy5fc2VsZWN0aW9uQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0aW9uTW9kZWwpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5Omwu''@;'; put 'put ''XHUwMjc1ZmFjfSksbH0pKCk7YnNlKCgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy50b2dnbGVTZXJ2aWNlPWYsdGhpcy5zZWxlY3Rpb25TZXJ2aWNlPWQsdGhpcy5wbGF0Zm9ybUlkPWgsdGhpcy5wc2V1ZG9Gb2N1cz1uZXcgbUhlLHRoaXMub3B0aW9uRGF0YT1bXSx0''@;'; put 'put ''aGlzLmhhbmRsZUZvY3VzU3Vic2NyaXB0aW9uKCksdGhpcy5yZW5kZXJlcj1hLmNyZWF0ZVJlbmRlcmVyKG51bGwsbnVsbCl9Z2V0IHRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fdHJpZ2dlcn1zZXQgdHJpZ2dlcihhKXt0aGlzLl90cmlnZ2VyPWEsdGhpcy5hZGRGb2N1c09uQmx1ckxpc3RlbmVy''@;'; put 'put ''KGEpfWdldCBsaXN0Ym94KCl7cmV0dXJuIHRoaXMuX2xpc3Rib3h9c2V0IGxpc3Rib3goYSl7dGhpcy5fbGlzdGJveD1hLHRoaXMuYWRkRm9jdXNPbkJsdXJMaXN0ZW5lcihhKX1nZXQgdGV4dElucHV0KCl7cmV0dXJuIHRoaXMuX3RleHRJbnB1dH1zZXQgdGV4dElucHV0KGEpe3RoaXMuX3Rl''@;'; put 'put ''eHRJbnB1dD1hLHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImtleWRvd24iLGY9PiF0aGlzLmhhbmRsZVRleHRJbnB1dChmKSksdGhpcy5hZGRGb2N1c09uQmx1ckxpc3RlbmVyKGEpfWZvY3VzSW5wdXQoKXt0aGlzLnRleHRJbnB1dCYmSGEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50ZXh0SW5w''@;'; put 'put ''dXQuZm9jdXMoKX1mb2N1c0ZpcnN0QWN0aXZlKCl7aWYodGhpcy5vcHRpb25EYXRhLmxlbmd0aD4wKWlmKHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpdGhpcy5wc2V1ZG9Gb2N1cy5zZWxlY3QodGhpcy5vcHRpb25EYXRhWzBdKTtlbHNle2xldCBhO2E9''@;'; put 'put ''dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWxbMF06dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsO2NvbnN0IGY9dGhpcy5vcHRpb25EYXRhLmZpbmQoZD0+ZC52YWx1''@;'; put 'put ''ZT09PWEpO3RoaXMucHNldWRvRm9jdXMuc2VsZWN0KGZ8fHRoaXMub3B0aW9uRGF0YVswXSksdGhpcy5zY3JvbGxJbnRvU2VsZWN0ZWRNb2RlbCgiYXV0byIpfX1hZGRPcHRpb25WYWx1ZXMoYSl7dGhpcy5vcHRpb25EYXRhPWF9aGFuZGxlRm9jdXNTdWJzY3JpcHRpb24oKXt0aGlzLnRvZ2ds''@;'; put 'put ''ZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoYT0+e2F8fCh0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsPW51bGwpfSl9bW92ZUZvY3VzVG8oYSl7bGV0IGY9dGhpcy5vcHRpb25EYXRhLmZpbmRJbmRleChkPT5kLmVxdWFscyh0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsKSk7YT09PUUxLlVQPy0x''@;'; put 'put ''PT09Znx8MD09PWY/Zj10aGlzLm9wdGlvbkRhdGEubGVuZ3RoLTE6Zi0tOmE9PT1FMS5ET1dOJiYoLTE9PT1mfHxmPT09dGhpcy5vcHRpb25EYXRhLmxlbmd0aC0xP2Y9MDpmKyspLHRoaXMucHNldWRvRm9jdXMuc2VsZWN0KHRoaXMub3B0aW9uRGF0YVtmXSksdGhpcy5zY3JvbGxJbnRvU2Vs''@;'; put 'put ''ZWN0ZWRNb2RlbCgpfW9wZW5BbmRNb3ZlVG8oYSl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4/dGhpcy5tb3ZlRm9jdXNUbyhhKToodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2UucGlwZShFZigxKSkuc3Vic2NyaWJlKGY9PntmJiZ0aGlzLm1vdmVGb2N1c1RvKGEpfSksdGhpcy50b2dn''@;'; put 'put ''bGVTZXJ2aWNlLm9wZW49ITApfWhhbmRsZVRleHRJbnB1dChhKXtsZXQgZj0hMTtjb25zdCBkPUVkKGEua2V5KTtpZihhKXN3aXRjaChkKXtjYXNlIE1vLkVudGVyOnRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiZ0aGlzLnBzZXVkb0ZvY3VzLm1vZGVsJiYodGhpcy5zZWxlY3Rpb25TZXJ2aWNl''@;'; put 'put ''Lm11bHRpc2VsZWN0YWJsZT90aGlzLnNlbGVjdGlvblNlcnZpY2UudG9nZ2xlKHRoaXMucHNldWRvRm9jdXMubW9kZWwudmFsdWUpOnRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3QodGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC52YWx1ZSksZj0hMCk7YnJlYWs7Y2FzZSBNby5TcGFjZTp0aGlz''@;'; put 'put ''LnRvZ2dsZVNlcnZpY2Uub3Blbnx8KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwLGY9ITApO2JyZWFrO2Nhc2UgTW8uQXJyb3dVcDp0aGlzLnByZXZlbnRWaWV3cG9ydFNjcm9sbGluZyhhKSx0aGlzLm9wZW5BbmRNb3ZlVG8oRTEuVVApLGY9ITA7YnJlYWs7Y2FzZSBNby5BcnJvd0Rvd246''@;'; put 'put ''dGhpcy5wcmV2ZW50Vmlld3BvcnRTY3JvbGxpbmcoYSksdGhpcy5vcGVuQW5kTW92ZVRvKEUxLkRPV04pLGY9ITA7YnJlYWs7ZGVmYXVsdDphLmtleSE9PU1vLlRhYiYmKCF0aGlzLnNlbGVjdGlvblNlcnZpY2UubXVsdGlzZWxlY3RhYmxlfHxhLmtleSE9PU1vLkJhY2tzcGFjZSkmJmEua2V5''@;'; put 'put ''IT09TW8uRXNjYXBlJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJih0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCl9cmV0dXJuIGZ9c2Nyb2xsSW50b1NlbGVjdGVkTW9kZWwoYT0ic21vb3RoIil7dGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbCYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbCYm''@;'; put 'put ''dGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbC5lbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6YSxibG9jazoiY2VudGVyIixpbmxpbmU6Im5lYXJlc3QifSl9cHJldmVudFZpZXdwb3J0U2Nyb2xsaW5nKGEpe2EucHJldmVudERlZmF1bHQoKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWFk''@;'; put 'put ''ZEZvY3VzT25CbHVyTGlzdGVuZXIoYSl7SGEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5yZW5kZXJlci5saXN0ZW4oYSwiYmx1ciIsZj0+e3RoaXMuZm9jdXNPdXRPZkNvbXBvbmVudChmKSYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExLHRoaXMuY29tcG9uZW50Q2RSZWYmJnRoaXMuY29t''@;'; put 'put ''cG9uZW50Q2RSZWYuZGV0ZWN0Q2hhbmdlcygpKX0pfWZvY3VzT3V0T2ZDb21wb25lbnQoYSl7Y29uc3QgZj1hLnJlbGF0ZWRUYXJnZXR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuISh0aGlzLnRleHRJbnB1dC5jb250YWlucyhmKXx8dGhpcy50cmlnZ2VyLmNvbnRhaW5zKGYpfHx0''@;'; put 'put ''aGlzLmxpc3Rib3guY29udGFpbnMoZikpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihIcCksc3IoUWEpLHNyKGdIZSksc3IocWEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSk7bGV0IHZI''@;'; put 'put ''ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoXzEsdzEsWnYsTkMpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sZGMsbGws''@;'; put 'put ''T1UsSnUsQWYsbFMsZlNdLEp1LEFmXX0pLGx9KSgpLERVPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBvN3t9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxsLlx1MDI3NWNtcD1rcih7dHlw''@;'; put 'put ''ZTpsLHNlbGVjdG9yczpbWyJjbHItaW5wdXQtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1mLmNvbnRyb2w/bnVsbDpmLmNvbnRy''@;'; put 'put ''b2wuZGlzYWJsZWQpKCJjbHItcm93IixmLmFkZEdyaWQoKSl9LGZlYXR1cmVzOltyaShbT2YsSDAsVGYsRGZdKSxyb10sbmdDb250ZW50U2VsZWN0b3JzOmtJZSxkZWNsczoxMCx2YXJzOjcsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3Mi''@;'; put 'put ''XSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNo''@;'; put 'put ''YXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl0sWyJz''@;'; put 'put ''aGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoTUllKSxEcigwKSx0dCgxLHlJZSwxLDAsImxhYmVsIiwwKSx5ZSgyLCJkaXYiLDEp''@;'; put 'put ''KDMsImRpdiIsMiksRHIoNCwxKSx0dCg1LGJJZSwxLDAsImNkcy1pY29uIiwzKSx0dCg2LF9JZSwxLDAsImNkcy1pY29uIiw0KSxDZSgpLHR0KDcsd0llLDEsMCwibmctY29udGVudCIsMCksdHQoOCxDSWUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCg5LFNJZSwxLDAsIm5nLWNvbnRlbnQiLDAp''@;'; put 'put ''LENlKCkpLDImYSYmKFNlKDEpLFJlKCJuZ0lmIiwhZi5sYWJlbCYmZi5hZGRHcmlkKCkpLFNlKDEpLFJlKCJuZ0NsYXNzIixmLmNvbnRyb2xDbGFzcygpKSxTZSgzKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''Zi5zaG93SGVscGVyKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbJGksZWwseXUsSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFJmPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhN3tjb25zdHJ1Y3Rv''@;'; put 'put ''cihhLGYsZCxoLG0pe3N1cGVyKGEsRFUsZixkLGgsbSksdGhpcy5pbmRleD0xfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChmYSkscnQoQWwpLHJ0KHFjLDEwKSxydChqbykscnQoVmkpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siIiwiY2xySW5wdXQiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItaW5wdXQiLCEwKX0sZmVhdHVyZXM6W3JvXX0pLGx9KSgpLF9zZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoXzEsdzEpfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sZGMsbGwsSnVdLEp1XX0pLGx9KSgpLElVPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c2Vk''@;'; put 'put ''PW5ldyBPZSghMSl9Z2V0IGZvY3VzQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWQuYXNPYnNlcnZhYmxlKCl9c2V0IGZvY3VzZWQoYSl7dGhpcy5fZm9jdXNlZC5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92''@;'; put 'put ''PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSx5SGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKF8xLHcxKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9''@;'; put 'put ''KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLF9zZSxsbF1dfSksbH0pKCk7Y29uc3QgX0hlPS9kKy4rbSsuK3krL2ksd0hlPS9tKy4rZCsuK3krL2ksQ0hlPS9kK3xtK3x5Ky9pLFNIZT0vXGQrL2csTUhlPS9Nb2JpL2ksa0hlPS9cdTIwMGYvZyxSVT0iWVlZWSIsbkk9e25hbWU6IkxJ''@;'; put 'put ''VFRMRV9FTkRJQU4iLGZvcm1hdDpbIkREIiwiTU0iLFJVXX0sRlU9e25hbWU6Ik1JRERMRV9FTkRJQU4iLGZvcm1hdDpbIk1NIiwiREQiLFJVXX0sRUhlPXtuYW1lOiJCSUdfRU5ESUFOIixmb3JtYXQ6W1JVLCJNTSIsIkREIl19O2Z1bmN0aW9uIENzZShsLGMpe3JldHVybiBuZXcgRGF0ZShs''@;'; put 'put ''LGMrMSwwKS5nZXREYXRlKCl9Y2xhc3MgREhle2NvbnN0cnVjdG9yKGMsYT0hMSxmPSExLGQ9ITEsaD0hMSxtPSExKXt0aGlzLmRheU1vZGVsPWMsdGhpcy5pc1RvZGF5c0RhdGU9YSx0aGlzLmlzRXhjbHVkZWQ9Zix0aGlzLmlzRGlzYWJsZWQ9ZCx0aGlzLmlzU2VsZWN0ZWQ9aCx0aGlzLmlz''@;'; put 'put ''Rm9jdXNhYmxlPW19Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMuaXNGb2N1c2FibGU/MDotMX19Y2xhc3MgQTF7Y29uc3RydWN0b3IoYyxhLGYpe3RoaXMueWVhcj1jLHRoaXMubW9udGg9YSx0aGlzLmRhdGU9Zn1pc0VxdWFsKGMpe3JldHVybiEhYyYmdGhpcy55ZWFyPT09Yy55ZWFyJiZ0''@;'; put 'put ''aGlzLm1vbnRoPT09Yy5tb250aCYmdGhpcy5kYXRlPT09Yy5kYXRlfXRvRGF0ZSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRhdGUpfWluY3JlbWVudEJ5KGMpe2NvbnN0IGE9bmV3IERhdGUodGhpcy55ZWFyLHRoaXMubW9udGgsdGhpcy5kYXRlK2MpO3Jl''@;'; put 'put ''dHVybiBuZXcgQTEoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9Y2xvbmUoKXtyZXR1cm4gbmV3IEExKHRoaXMueWVhcix0aGlzLm1vbnRoLHRoaXMuZGF0ZSl9dG9Db21wYXJpc29uU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy55ZWFyfSR7dGhpcy5wYWQodGhpcy5t''@;'; put 'put ''b250aCl9JHt0aGlzLnBhZCh0aGlzLmRhdGUpfWB9dG9EYXRlU3RyaW5nKCl7cmV0dXJuIHRoaXMudG9EYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9cGFkKGMpe3JldHVybiBjPDEwP2AwJHtjfWA6YCR7Y31gfX1jbGFzcyBJSGV7Y29uc3RydWN0b3IoYyxhLGYsZCxoLG0pe3RoaXMuY2Fs''@;'; put 'put ''ZW5kYXI9Yyx0aGlzLnNlbGVjdGVkRGF5PWEsdGhpcy5mb2N1c2FibGVEYXk9Zix0aGlzLnRvZGF5PWQsdGhpcy5maXJzdERheU9mV2Vlaz1oLHRoaXMuZXhjbHVkZWREYXRlcz1tLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3M9W10sdGhpcy5pbml0aWFsaXplQ2FsZW5kYXJWaWV3KCl9Z2V0IGNh''@;'; put 'put ''bGVuZGFyVmlldygpe3JldHVybiB0aGlzLl9jYWxlbmRhclZpZXd9dXBkYXRlRm9jdXNhYmxlRGF5KGMpe3RoaXMuc2V0Rm9jdXNhYmxlRmxhZyh0aGlzLmZvY3VzYWJsZURheSwhMSksdGhpcy5zZXRGb2N1c2FibGVGbGFnKGMsITApLHRoaXMuZm9jdXNhYmxlRGF5PWN9aW5pdGlhbGl6ZUNh''@;'; put 'put ''bGVuZGFyVmlldygpe2NvbnN0IGM9dGhpcy5jYWxlbmRhci5wcmV2aW91c01vbnRoKCksYT10aGlzLmNhbGVuZGFyLm5leHRNb250aCgpLGY9dGhpcy5udW1EYXlzRnJvbVByZXZNb250aEluQ2FsVmlldyh0aGlzLmNhbGVuZGFyLnllYXIsdGhpcy5jYWxlbmRhci5tb250aCksZD00Mi0odGhp''@;'; put 'put ''cy5jYWxlbmRhci5kYXlzLmxlbmd0aCtmKTtsZXQgaD1bXSxtPVtdO2Y+MCYmKGg9dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHMoYy5kYXlzLnNsaWNlKC0xKmYpLCEwLCExKSksdGhpcy5jdXJyTW9udGhEYXlWaWV3cz10aGlzLmdlbmVyYXRlRGF5Vmlld01vZGVscyh0aGlzLmNhbGVuZGFy''@;'; put 'put ''LmRheXMsITEsITApLGQ+MCYmKG09dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHMoYS5kYXlzLnNsaWNlKDAsZCksITAsITEpKSx0aGlzLl9jYWxlbmRhclZpZXc9dGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldyhoLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3MsbSksdGhpcy5pbml0aWFsaXplU2Vs''@;'; put 'put ''ZWN0ZWREYXkoKSx0aGlzLmluaXRpYWxpemVGb2N1c2FibGVEYXkoKX1pc0RhdGVFeGNsdWRlZChjKXtjb25zdHttaW5EYXRlOmEsbWF4RGF0ZTpmfT10aGlzLmV4Y2x1ZGVkRGF0ZXMsZD1hLnRvQ29tcGFyaXNvblN0cmluZygpLGg9Zi50b0NvbXBhcmlzb25TdHJpbmcoKSxtPWMudG9Db21w''@;'; put 'put ''YXJpc29uU3RyaW5nKCk7cmV0dXJuIShtPj1kJiZtPD1oKX1nZW5lcmF0ZURheVZpZXdNb2RlbHMoYyxhLGYpe2NvbnN0IGQ9Yy5tYXAoaD0+bmV3IERIZShoLCExLGEsdGhpcy5pc0RhdGVFeGNsdWRlZChoKSwhMSwhMSkpO3JldHVybiBmJiZ0aGlzLmNhbGVuZGFyLmlzRGF5SW5DYWxlbmRh''@;'; put 'put ''cih0aGlzLnRvZGF5KSYmKGRbdGhpcy50b2RheS5kYXRlLTFdLmlzVG9kYXlzRGF0ZT0hMCksZH1udW1EYXlzRnJvbVByZXZNb250aEluQ2FsVmlldyhjLGEpe2NvbnN0IGY9ZnVuY3Rpb24gQUhlKGwsYyxhKXtyZXR1cm4gbmV3IERhdGUobCxjLGEpLmdldERheSgpfShjLGEsMSk7cmV0dXJu''@;'; put 'put ''IGY+PXRoaXMuZmlyc3REYXlPZldlZWs/Zi10aGlzLmZpcnN0RGF5T2ZXZWVrOjcrZi10aGlzLmZpcnN0RGF5T2ZXZWVrfWlzRGF5SW5DYWxlbmRhclZpZXcoYyl7cmV0dXJuISF0aGlzLmNhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcihjKX1nZW5lcmF0ZUNhbGVuZGFyVmlldyhjLGEsZil7Y29u''@;'; put 'put ''c3QgZD1bLi4uYywuLi5hLC4uLmZdLGg9W107Zm9yKGxldCBtPTA7bTw2O20rKyloW21dPWQuc2xpY2UoNyptLDcqKG0rMSkpO3JldHVybiBofWluaXRpYWxpemVTZWxlY3RlZERheSgpe3RoaXMuc2VsZWN0ZWREYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLnNlbGVjdGVkRGF5''@;'; put 'put ''KSYmKHRoaXMuY3Vyck1vbnRoRGF5Vmlld3NbdGhpcy5zZWxlY3RlZERheS5kYXRlLTFdLmlzU2VsZWN0ZWQ9ITApfWluaXRpYWxpemVGb2N1c2FibGVEYXkoKXt0aGlzLmZvY3VzYWJsZURheSYmdGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMuZm9jdXNhYmxlRGF5KT90aGlzLnNldEZv''@;'; put 'put ''Y3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITApOnRoaXMuc2VsZWN0ZWREYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLnNlbGVjdGVkRGF5KT8odGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuc2VsZWN0ZWREYXksITApLHRoaXMuZm9jdXNhYmxlRGF5PXRoaXMuc2Vs''@;'; put 'put ''ZWN0ZWREYXkuY2xvbmUoKSk6dGhpcy5pc0RheUluQ2FsZW5kYXJWaWV3KHRoaXMudG9kYXkpPyh0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy50b2RheSwhMCksdGhpcy5mb2N1c2FibGVEYXk9dGhpcy50b2RheS5jbG9uZSgpKToodGhpcy5mb2N1c2FibGVEYXk9bmV3IEExKHRoaXMuY2Fs''@;'; put 'put ''ZW5kYXIueWVhcix0aGlzLmNhbGVuZGFyLm1vbnRoLDE1KSx0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITApKX1zZXRGb2N1c2FibGVGbGFnKGMsYSl7YyYmKHRoaXMuY3Vyck1vbnRoRGF5Vmlld3NbYy5kYXRlLTFdLmlzRm9jdXNhYmxlPWEpfX1sZXQgZFM9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmxvY2FsZT1hLHRoaXMuX2ZpcnN0RGF5T2ZXZWVrPTAsdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0YSgpfWdldCBmaXJzdERheU9mV2Vlaygpe3JldHVybiB0aGlzLl9maXJzdERheU9mV2Vla31nZXQgbG9jYWxlRGF5cygpe3JldHVybiB0''@;'; put 'put ''aGlzLl9sb2NhbGVEYXlzfWdldCBsb2NhbGVEYXlzTmFycm93KCl7cmV0dXJuIHRoaXMuX2xvY2FsZURheXMubWFwKGE9PmEubmFycm93KX1nZXQgbG9jYWxlTW9udGhzQWJicmV2aWF0ZWQoKXtyZXR1cm4gdGhpcy5fbG9jYWxlTW9udGhzQWJicmV2aWF0ZWR9Z2V0IGxvY2FsZU1vbnRoc1dp''@;'; put 'put ''ZGUoKXtyZXR1cm4gdGhpcy5fbG9jYWxlTW9udGhzV2lkZX1nZXQgbG9jYWxlRGF0ZUZvcm1hdCgpe3JldHVybiB0aGlzLl9sb2NhbGVEYXRlRm9ybWF0fWluaXRpYWxpemVMb2NhbGVEYXRhKCl7dGhpcy5pbml0aWFsaXplRmlyc3REYXlPZldlZWsoKSx0aGlzLmluaXRpYWxpemVMb2NhbGVE''@;'; put 'put ''YXRlRm9ybWF0KCksdGhpcy5pbml0aWFsaXplTG9jYWxlTW9udGhzQWJicmV2aWF0ZWQoKSx0aGlzLmluaXRpYWxpemVMb2NhbGVNb250aHNXaWRlKCksdGhpcy5pbml0aWFsaXplTG9jYWxlRGF5cygpfWluaXRpYWxpemVMb2NhbGVEYXlzKCl7Y29uc3QgYT1bXSxmPVFCKHRoaXMubG9jYWxl''@;'; put 'put ''LEx1LlN0YW5kYWxvbmUsaWwuV2lkZSkuc2xpY2UoKSxkPVFCKHRoaXMubG9jYWxlLEx1LlN0YW5kYWxvbmUsaWwuTmFycm93KS5zbGljZSgpLGg9dGhpcy5maXJzdERheU9mV2Vlaztmb3IobGV0IG09MDttPDc7bSsrKWEucHVzaCh7ZGF5OmZbbV0sbmFycm93OmRbbV19KTtpZihoPjApe2Nv''@;'; put 'put ''bnN0IG09YS5zcGxpY2UoMCxoKTthLnB1c2goLi4ubSl9dGhpcy5fbG9jYWxlRGF5cz1hfWluaXRpYWxpemVMb2NhbGVNb250aHNBYmJyZXZpYXRlZCgpe3RoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkPWVqKHRoaXMubG9jYWxlLEx1LlN0YW5kYWxvbmUsaWwuQWJicmV2aWF0ZWQpLnNs''@;'; put 'put ''aWNlKCl9aW5pdGlhbGl6ZUxvY2FsZU1vbnRoc1dpZGUoKXt0aGlzLl9sb2NhbGVNb250aHNXaWRlPWVqKHRoaXMubG9jYWxlLEx1LlN0YW5kYWxvbmUsaWwuV2lkZSkuc2xpY2UoKX1pbml0aWFsaXplRmlyc3REYXlPZldlZWsoKXt0aGlzLl9maXJzdERheU9mV2Vlaz1mdW5jdGlvbiB5OWUo''@;'; put 'put ''bCl7cmV0dXJuIEtzKGwpW2VhLkZpcnN0RGF5T2ZXZWVrXX0odGhpcy5sb2NhbGUpfWluaXRpYWxpemVMb2NhbGVEYXRlRm9ybWF0KCl7dGhpcy5fbG9jYWxlRGF0ZUZvcm1hdD1mdW5jdGlvbiBsQyhsLGMpe3JldHVybiBNZihLcyhsKVtlYS5EYXRlRm9ybWF0XSxjKX0odGhpcy5sb2NhbGUs''@;'; put 'put ''RDAuU2hvcnQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihwZCkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NsYXNzIEFke2NvbnN0cnVjdG9yKGMsYSl7dGhpcy55ZWFyPWMsdGhpcy5t''@;'; put 'put ''b250aD1hLHRoaXMuaW5pdGlhbGl6ZURheXNJbkNhbGVuZGFyKCl9aXNFcXVhbChjKXtyZXR1cm4hIWMmJnRoaXMueWVhcj09PWMueWVhciYmdGhpcy5tb250aD09PWMubW9udGh9aXNEYXlJbkNhbGVuZGFyKGMpe3JldHVybiEhYyYmdGhpcy55ZWFyPT09Yy55ZWFyJiZ0aGlzLm1vbnRoPT09''@;'; put 'put ''Yy5tb250aH1wcmV2aW91c01vbnRoKCl7cmV0dXJuIDA9PT10aGlzLm1vbnRoP25ldyBBZCh0aGlzLnllYXItMSwxMSk6bmV3IEFkKHRoaXMueWVhcix0aGlzLm1vbnRoLTEpfW5leHRNb250aCgpe3JldHVybiAxMT09PXRoaXMubW9udGg/bmV3IEFkKHRoaXMueWVhcisxLDApOm5ldyBBZCh0''@;'; put 'put ''aGlzLnllYXIsdGhpcy5tb250aCsxKX1pbml0aWFsaXplRGF5c0luQ2FsZW5kYXIoKXtjb25zdCBjPUNzZSh0aGlzLnllYXIsdGhpcy5tb250aCk7dGhpcy5kYXlzPUFycmF5KGMpLmZpbGwobnVsbCkubWFwKChhLGYpPT5uZXcgQTEodGhpcy55ZWFyLHRoaXMubW9udGgsZisxKSl9fWxldCBy''@;'; put 'put ''Mz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9kYXlzRnVsbERhdGU9bmV3IERhdGUsdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2U9bmV3IHdlLHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyQ2hhbmdlPW5ldyB3ZSx0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2U9bmV3IHdlLHRo''@;'; put 'put ''aXMuX2ZvY3VzZWREYXlDaGFuZ2U9bmV3IHdlfWdldCB0b2RheSgpe3JldHVybiB0aGlzLl90b2RheX1nZXQgZGlzcGxheWVkQ2FsZW5kYXIoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJ9Z2V0IHNlbGVjdGVkRGF5Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF5Q2hh''@;'; put 'put ''bmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBkaXNwbGF5ZWRDYWxlbmRhckNoYW5nZSgpe3JldHVybiB0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNPbkNhbGVuZGFyQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZS5h''@;'; put 'put ''c09ic2VydmFibGUoKX1nZXQgZm9jdXNlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c2VkRGF5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpfW5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZChhKXt0aGlzLnNlbGVjdGVkRGF5PWEsdGhpcy5fc2VsZWN0ZWREYXlDaGFuZ2UubmV4dChhKX1pbml0''@;'; put 'put ''aWFsaXplQ2FsZW5kYXIoKXt0aGlzLmZvY3VzZWREYXk9bnVsbCx0aGlzLmluaXRpYWxpemVUb2RheXNEYXRlKCksdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXI9dGhpcy5zZWxlY3RlZERheT9uZXcgQWQodGhpcy5zZWxlY3RlZERheS55ZWFyLHRoaXMuc2VsZWN0ZWREYXkubW9udGgpOm5ldyBB''@;'; put 'put ''ZCh0aGlzLnRvZGF5LnllYXIsdGhpcy50b2RheS5tb250aCl9Y2hhbmdlTW9udGgoYSl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgQWQodGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIueWVhcixhKSl9Y2hhbmdlWWVhcihhKXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKG5ldyBBZChh''@;'; put 'put ''LHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLm1vbnRoKSl9bW92ZVRvTmV4dE1vbnRoKCl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcih0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5uZXh0TW9udGgoKSl9bW92ZVRvUHJldmlvdXNNb250aCgpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIodGhp''@;'; put 'put ''cy5fZGlzcGxheWVkQ2FsZW5kYXIucHJldmlvdXNNb250aCgpKX1tb3ZlVG9DdXJyZW50TW9udGgoKXt0aGlzLmRpc3BsYXllZENhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcih0aGlzLnRvZGF5KXx8dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgQWQodGhpcy50b2RheS55ZWFyLHRoaXMu''@;'; put 'put ''dG9kYXkubW9udGgpKSx0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UubmV4dCgpfWluY3JlbWVudEZvY3VzRGF5KGEpe3RoaXMuZm9jdXNlZERheT10aGlzLmZvY3VzZWREYXkuaW5jcmVtZW50QnkoYSksdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIuaXNEYXlJbkNhbGVuZGFyKHRoaXMuZm9j''@;'; put 'put ''dXNlZERheSk/dGhpcy5fZm9jdXNlZERheUNoYW5nZS5uZXh0KHRoaXMuZm9jdXNlZERheSk6dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgQWQodGhpcy5mb2N1c2VkRGF5LnllYXIsdGhpcy5mb2N1c2VkRGF5Lm1vbnRoKSksdGhpcy5fZm9jdXNPbkNhbGVuZGFyQ2hhbmdlLm5leHQo''@;'; put 'put ''KX1zZXREaXNwbGF5ZWRDYWxlbmRhcihhKXt0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhci5pc0VxdWFsKGEpfHwodGhpcy5fZGlzcGxheWVkQ2FsZW5kYXI9YSx0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5uZXh0KCkpfWluaXRpYWxpemVUb2RheXNEYXRlKCl7dGhpcy5fdG9kYXlzRnVs''@;'; put 'put ''bERhdGU9bmV3IERhdGUsdGhpcy5fdG9kYXk9bmV3IEExKHRoaXMuX3RvZGF5c0Z1bGxEYXRlLmdldEZ1bGxZZWFyKCksdGhpcy5fdG9kYXlzRnVsbERhdGUuZ2V0TW9udGgoKSx0aGlzLl90b2RheXNGdWxsRGF0ZS5nZXREYXRlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxmNz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5fbmdab25lPWEsdGhpcy5wbGF0Zm9ybUlkPWZ9Zm9jdXNDZWxsKGEpe3RoaXMuX25nWm9uZS5y''@;'; put 'put ''dW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMubmdab25lSXNTdGFibGVJbkJyb3dzZXIoKS5zdWJzY3JpYmUoKCk9Pntjb25zdCBmPWEubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXg9IjAiXScpO2YmJmYuZm9jdXMoKX0pfSl9Zm9jdXNJbnB1dChhKXt0aGlzLl9uZ1pv''@;'; put 'put ''bmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PnRoaXMubmdab25lSXNTdGFibGVJbkJyb3dzZXIoKS5zdWJzY3JpYmUoKCk9PmEuZm9jdXMoKSkpfWVsZW1lbnRJc0ZvY3VzZWQoYSl7cmV0dXJuIEhhKHRoaXMucGxhdGZvcm1JZCkmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1hfW5nWm9uZUlz''@;'; put 'put ''U3RhYmxlSW5Ccm93c2VyKCl7cmV0dXJuIHRoaXMuX25nWm9uZS5vblN0YWJsZS5hc09ic2VydmFibGUoKS5waXBlKG40KCksSWwoKCk9PkhhKHRoaXMucGxhdGZvcm1JZCkpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoVW8pLHNyKHFhKSl9''@;'; put 'put ''LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksZDc9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPWEsdGhpcy5kaXNhYmxlZERhdGVzPXttaW5EYXRlOm5ldyBBMSgwLDAsMSksbWF4RGF0ZTpu''@;'; put 'put ''ZXcgQTEoOTk5OSwxMSwzMSl9LHRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQ9ImRkL01NL3kiLHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD1uSSx0aGlzLmRlbGltaXRlcnM9WyIvIiwiLyJdLHRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQ9dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2Nh''@;'; put 'put ''bGVEYXRlRm9ybWF0LHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURpc3BsYXlGb3JtYXQoKX1nZXQgcGxhY2Vob2xkZXJUZXh0KCl7Y29uc3QgYT10aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQuZm9ybWF0O3JldHVybiBhWzBdK3RoaXMuZGVsaW1pdGVyc1swXSthWzFdK3RoaXMuZGVsaW1pdGVyc1sx''@;'; put 'put ''XSthWzJdfXNldE1pbkRhdGUoYSl7aWYoYSl7Y29uc3RbZixkLGhdPWEuc3BsaXQoIi0iKS5tYXAobT0+cGFyc2VJbnQobSwxMCkpO3RoaXMuZGlzYWJsZWREYXRlcy5taW5EYXRlPW5ldyBBMShmLGQtMSxoKX1lbHNlIHRoaXMuZGlzYWJsZWREYXRlcy5taW5EYXRlPW5ldyBBMSgwLDAsMSl9''@;'; put 'put ''c2V0TWF4RGF0ZShhKXtpZihhKXtjb25zdFtmLGQsaF09YS5zcGxpdCgiLSIpLm1hcChtPT5wYXJzZUludChtLDEwKSk7dGhpcy5kaXNhYmxlZERhdGVzLm1heERhdGU9bmV3IEExKGYsZC0xLGgpfWVsc2UgdGhpcy5kaXNhYmxlZERhdGVzLm1heERhdGU9bmV3IEExKDk5OTksMTEsMzEpfXRv''@;'; put 'put ''TG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhhKXtpZihhKXtpZihpc05hTihhLmdldFRpbWUoKSkpcmV0dXJuIiI7Y29uc3QgZj1hLmdldERhdGUoKSxkPWEuZ2V0TW9udGgoKSsxLGg9Zj45P2YudG9TdHJpbmcoKToiMCIrZixtPWQ+OT9kLnRvU3RyaW5nKCk6IjAiK2Q7cmV0dXJuIHRoaXMu''@;'; put 'put ''bG9jYWxlRGlzcGxheUZvcm1hdD09PW5JP2grdGhpcy5kZWxpbWl0ZXJzWzBdK20rdGhpcy5kZWxpbWl0ZXJzWzFdK2EuZ2V0RnVsbFllYXIoKTp0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9PT1GVT9tK3RoaXMuZGVsaW1pdGVyc1swXStoK3RoaXMuZGVsaW1pdGVyc1sxXSthLmdldEZ1bGxZ''@;'; put 'put ''ZWFyKCk6YS5nZXRGdWxsWWVhcigpK3RoaXMuZGVsaW1pdGVyc1swXSttK3RoaXMuZGVsaW1pdGVyc1sxXStofXJldHVybiIifWdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IGY9YS5tYXRjaChTSGUpO2lmKCFmfHwzIT09Zi5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIG51bGw7Y29uc3RbZCxoLG1dPWY7cmV0dXJuIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD09PW5JP3RoaXMudmFsaWRhdGVBbmRHZXREYXRlKG0saCxkKTp0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9PT1GVT90aGlzLnZhbGlkYXRlQW5kR2V0RGF0ZShtLGQsaCk6dGhpcy52YWxpZGF0''@;'; put 'put ''ZUFuZEdldERhdGUoZCxoLG0pfWluaXRpYWxpemVMb2NhbGVEaXNwbGF5Rm9ybWF0KCl7Y29uc3QgYT10aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0LnRvTG9jYWxlTG93ZXJDYXNlKCk7dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PV9IZS50ZXN0KGEpP25JOndIZS50ZXN0KGEpP0ZVOkVIZSx0''@;'; put 'put ''aGlzLmV4dHJhY3REZWxpbWl0ZXJzKCl9ZXh0cmFjdERlbGltaXRlcnMoKXtpZih0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0KXtjb25zdCBmPXRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQucmVwbGFjZShrSGUsIiIpLnNwbGl0KENIZSk7ZiYmND09PWYubGVuZ3RoP3RoaXMuZGVsaW1pdGVy''@;'; put 'put ''cz1bZlsxXSxmWzJdXTpjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIGRhdGUgZm9ybWF0IHJlY2VpdmVkLiBEZWxpbWl0ZXJzIGV4dHJhY3RlZDogIixmKX19aXNWYWxpZE1vbnRoKGEpe3JldHVybiBhPi0xJiZhPDEyfWlzVmFsaWREYXRlKGEsZixkKXtyZXR1cm4gZD4wJiZkPD1Dc2UoYSxm''@;'; put 'put ''KX12YWxpZGF0ZUFuZEdldERhdGUoYSxmLGQpe2NvbnN0IGg9K2EsbT0rZi0xLF89K2Q7aWYoIXRoaXMuaXNWYWxpZE1vbnRoKG0pfHwhdGhpcy5pc1ZhbGlkRGF0ZShoLG0sXykpcmV0dXJuIG51bGw7Y29uc3QgTz1mdW5jdGlvbiBUSGUobCl7aWYobD45OTk5fHxsPjEwMCYmbDw5OTl8fGw8''@;'; put 'put ''MTApcmV0dXJuLTE7aWYobD45OTkpcmV0dXJuIGw7Y29uc3QgYz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7bGV0IGY9bCsxMDAqTWF0aC5mbG9vcihjLzEwMCk7cmV0dXJuIGY+YysyMCYmKGYtPTEwMCksZn0oaCk7cmV0dXJuLTEhPT1PP25ldyBEYXRlKE8sbSxfKTpudWxsfX1yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihkUykpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGhTPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl90b3VjaGVkQ2hhbmdlPW5ldyB3ZSx0aGlz''@;'; put 'put ''Ll9kaXJ0eUNoYW5nZT1uZXcgd2V9Z2V0IHRvdWNoZWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZENoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZGlydHlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZGlydHlDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9bWFya0FzVG91Y2hlZCgpe3RoaXMuX3Rv''@;'; put 'put ''dWNoZWRDaGFuZ2UubmV4dCgpfW1hcmtBc0RpcnR5KCl7dGhpcy5fZGlydHlDaGFuZ2UubmV4dCgpfXNldERpc2FibGVkKGEpe3RoaXMuZGlzYWJsZWQ9YX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxm''@;'; put 'put ''YWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksU3NlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWEsdGhpcy5fdG9nZ2xlU2VydmljZT1mLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT1kLHRoaXMuY29tbW9uU3RyaW5n''@;'; put 'put ''cz1ofWdldCBkYXlWaWV3KCl7cmV0dXJuIHRoaXMuX2RheVZpZXd9c2V0IGRheVZpZXcoYSl7dGhpcy5fZGF5Vmlldz1hfWdldCBkYXlTdHJpbmcoKXtyZXR1cm4gdGhpcy5kYXlWaWV3LmlzU2VsZWN0ZWQ/dGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlz''@;'; put 'put ''LmRhdGVwaWNrZXJTZWxlY3RlZExhYmVsLHtGVUxMX0RBVEU6dGhpcy5fZGF5Vmlldy5kYXlNb2RlbC50b0RhdGVTdHJpbmcoKX0pOnRoaXMuX2RheVZpZXcuZGF5TW9kZWwudG9EYXRlU3RyaW5nKCl9b25EYXlWaWV3Rm9jdXMoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9jdXNl''@;'; put 'put ''ZERheT10aGlzLmRheVZpZXcuZGF5TW9kZWx9c2VsZWN0RGF5KCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZCh0aGlzLmRheVZpZXcuZGF5TW9kZWwpLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5tYXJrQXNEaXJ0eSgpLHRoaXMuX3Rv''@;'; put 'put ''Z2dsZVNlcnZpY2Uub3Blbj0hMX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocjMpLHJ0KFFhKSxydChoUykscnQoVGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRheSJdXSxob3N0VmFyczoyLGhvc3RCaW5k''@;'; put 'put ''aW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImRheSIsITApfSxpbnB1dHM6e2RheVZpZXc6WyJjbHJEYXlWaWV3IiwiZGF5VmlldyJdfSxkZWNsczoyLHZhcnM6MTMsY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEsImRheS1idG4iLDMsImNsaWNrIiwiZm9jdXMiXV0sdGVtcGxhdGU6ZnVu''@;'; put 'put ''Y3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJidXR0b24iLDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5zZWxlY3REYXkoKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkRheVZpZXdGb2N1cygpfSksWWUoMSksQ2UoKSksMiZhJiYoZ3IoImlzLXRvZGF5IixmLmRheVZp''@;'; put 'put ''ZXcuaXNUb2RheXNEYXRlKSgiaXMtZXhjbHVkZWQiLGYuZGF5Vmlldy5pc0V4Y2x1ZGVkKSgiaXMtZGlzYWJsZWQiLGYuZGF5Vmlldy5pc0Rpc2FibGVkKSgiaXMtc2VsZWN0ZWQiLGYuZGF5Vmlldy5pc1NlbGVjdGVkKSxScigidGFiaW5kZXgiLGYuZGF5Vmlldy50YWJJbmRleCkoImFyaWEt''@;'; put 'put ''Y3VycmVudCIsZi5kYXlWaWV3LmlzVG9kYXlzRGF0ZT8iZGF0ZSI6ImZhbHNlIikoImFyaWEtbGFiZWwiLGYuZGF5U3RyaW5nKSgiYXJpYS1zZWxlY3RlZCIsZi5kYXlWaWV3LmlzU2VsZWN0ZWQpLFNlKDEpLHdyKCIgIixmLmRheVZpZXcuZGF5TW9kZWwuZGF0ZSwiICIpKX0sZW5jYXBzdWxh''@;'; put 'put ''dGlvbjoyfSksbH0pKCksTXNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlPWEsdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZT1kLHRoaXMuX2RhdGVJT1NlcnZpY2U9''@;'; put 'put ''aCx0aGlzLl9lbFJlZj1tLHRoaXMuX3N1YnM9W10sdGhpcy5nZW5lcmF0ZUNhbGVuZGFyVmlldygpLHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKX1nZXQgbG9jYWxlRGF5cygpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZURheXN9Z2V0IGNhbGVuZGFyKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhcn1nZXQgc2VsZWN0ZWREYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5fWdldCBmb2N1c2VkRGF5KCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2Vy''@;'; put 'put ''dmljZS5mb2N1c2VkRGF5fWdldCB0b2RheSgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UudG9kYXl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vicy5m''@;'; put 'put ''b3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9b25LZXlEb3duKGEpe2lmKGEmJnRoaXMuZm9jdXNlZERheSlzd2l0Y2goRWQoYS5rZXkpKXtjYXNlIE1vLkFycm93VXA6YS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgtNyk7''@;'; put 'put ''YnJlYWs7Y2FzZSBNby5BcnJvd0Rvd246YS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSg3KTticmVhaztjYXNlIE1vLkFycm93TGVmdDphLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlu''@;'; put 'put ''Y3JlbWVudEZvY3VzRGF5KC0xKTticmVhaztjYXNlIE1vLkFycm93UmlnaHQ6YS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgxKX19aW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKXt0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0''@;'; put 'put ''ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoKX0pKSx0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzZWREYXlDaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0''@;'; put 'put ''aGlzLmNhbGVuZGFyVmlld01vZGVsLnVwZGF0ZUZvY3VzYWJsZURheShhKX0pKSx0aGlzLl9zdWJzLnB1c2godGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmZvY3VzT25DYWxlbmRhckNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2Vs''@;'; put 'put ''bCh0aGlzLl9lbFJlZil9KSl9Z2VuZXJhdGVDYWxlbmRhclZpZXcoKXt0aGlzLmNhbGVuZGFyVmlld01vZGVsPW5ldyBJSGUodGhpcy5jYWxlbmRhcix0aGlzLnNlbGVjdGVkRGF5LHRoaXMuZm9jdXNlZERheSx0aGlzLnRvZGF5LHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2UuZmlyc3REYXlP''@;'; put 'put ''ZldlZWssdGhpcy5fZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoZFMpLHJ0KHIzKSxydChmNykscnQoZDcpLHJ0KFZpKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNs''@;'; put 'put ''ci1jYWxlbmRhciJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJrZXlkb3duIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbktleURvd24oaCl9KX0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY2FsZW5kYXItdGFibGUiXSxbMSwiY2FsZW5kYXItcm93Iiwid2Vla2Rh''@;'; put 'put ''eXMiXSxbImNsYXNzIiwiY2FsZW5kYXItY2VsbCB3ZWVrZGF5Iiwicm9sZSIsImhlYWRpbmciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJjYWxlbmRhci1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImhlYWRpbmciLDEsImNhbGVuZGFyLWNlbGwiLCJ3ZWVrZGF5''@;'; put 'put ''Il0sWzEsImNhbGVuZGFyLXJvdyJdLFsiY2xhc3MiLCJjYWxlbmRhci1jZWxsIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY2FsZW5kYXItY2VsbCJdLFszLCJjbHJEYXlWaWV3Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwidGFibGUiLDApKDEsInRyIiwxKSx0dCgy''@;'; put 'put ''LEVJZSwyLDIsInRoIiwyKSxDZSgpLHR0KDMsQUllLDIsMSwidHIiLDMpLENlKCkpLDImYSYmKFNlKDIpLFJlKCJuZ0Zvck9mIixmLmxvY2FsZURheXMpLFNlKDEpLFJlKCJuZ0Zvck9mIixmLmNhbGVuZGFyVmlld01vZGVsLmNhbGVuZGFyVmlldykpfSxkZXBlbmRlbmNpZXM6W1NzZSxSYV0s''@;'; put 'put ''ZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksckk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9kb2N1bWVudD1hLHRoaXMuX2lzVXNlckFnZW50TW9iaWxlPSExLHRoaXMuX2RvY3VtZW50JiYodGhpcy5faXNVc2VyQWdlbnRNb2JpbGU9TUhlLnRlc3QoYS5kZWZhdWx0Vmlldy5u''@;'; put 'put ''YXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLl9pbm5lcldpZHRoPWEuZGVmYXVsdFZpZXcuaW5uZXJXaWR0aCl9Z2V0IGlzRW5hYmxlZCgpe3JldHVybiEodGhpcy5fZG9jdW1lbnQmJnRoaXMuX2lubmVyV2lkdGg8NzY4JiZ0aGlzLl9pc1VzZXJBZ2VudE1vYmlsZSl9fXJldHVybiBsLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKEZhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksaDc9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpb249UDBbImJvdHRvbS1sZWZ0Il0sdGhpcy5f''@;'; put 'put ''Y3VycmVudFZpZXc9IkRBWVZJRVcifWdldCBpc0RheVZpZXcoKXtyZXR1cm4iREFZVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNZZWFyVmlldygpe3JldHVybiJZRUFSVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNNb250aFZpZXcoKXtyZXR1cm4iTU9OVEhWSUVXIj09''@;'; put 'put ''PXRoaXMuX2N1cnJlbnRWaWV3fWNoYW5nZVRvTW9udGhWaWV3KCl7dGhpcy5fY3VycmVudFZpZXc9Ik1PTlRIVklFVyJ9Y2hhbmdlVG9ZZWFyVmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJZRUFSVklFVyJ9Y2hhbmdlVG9EYXlWaWV3KCl7dGhpcy5fY3VycmVudFZpZXc9IkRBWVZJRVcifX1y''@;'; put 'put ''ZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxrc2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMuX3ZpZXdNYW5hZ2VyU2Vydmlj''@;'; put 'put ''ZT1hLHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9Zix0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9ZCx0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPWgsdGhpcy5fZWxSZWY9bSx0aGlzLl9mb2N1c2VkTW9udGhJbmRleD10aGlzLmNhbGVuZGFyTW9udGhJbmRleH1nZXQgbW9udGhO''@;'; put 'put ''YW1lcygpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc1dpZGV9Z2V0IGNhbGVuZGFyTW9udGhJbmRleCgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIubW9udGh9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5f''@;'; put 'put ''ZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW9uS2V5RG93bihhKXtpZihhKXtjb25zdCBmPUVkKGEua2V5KTtmPT09TW8uQXJyb3dVcCYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg+MD8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aElu''@;'; put 'put ''ZGV4LS0sdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpmPT09TW8uQXJyb3dEb3duJiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleDwxMT8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4KyssdGhpcy5fZGF0ZXBpY2tl''@;'; put 'put ''ckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpmPT09TW8uQXJyb3dSaWdodCYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg8Nj8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4KzYsdGhpcy5fZGF0ZXBp''@;'; put 'put ''Y2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpmPT09TW8uQXJyb3dMZWZ0JiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleD41JiYoYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4LTYsdGhpcy5fZGF0''@;'; put 'put ''ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKX19Y2hhbmdlTW9udGgoYSl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmNoYW5nZU1vbnRoKGEpLHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKX1nZXRUYWJJbmRleChhKXtyZXR1''@;'; put 'put ''cm4gYT09PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4PzA6LTF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGg3KSxydChkUykscnQocjMpLHJ0KGY3KSxydChWaSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItbW9u''@;'; put 'put ''dGhwaWNrZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJrZXlkb3duIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbktleURvd24oaCl9KSwyJmEmJmdyKCJtb250aHBpY2tlciIsITApfSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1sidHlwZSIsImJ1''@;'; put 'put ''dHRvbiIsImNsYXNzIiwiY2FsZW5kYXItYnRuIG1vbnRoIiwzLCJpcy1zZWxlY3RlZCIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsIm1vbnRoIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmdHQo''@;'; put 'put ''MCxUSWUsMiw0LCJidXR0b24iLDApLDImYSYmUmUoIm5nRm9yT2YiLGYubW9udGhOYW1lcyl9LGRlcGVuZGVuY2llczpbUmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpO2NsYXNzIHBTe2NvbnN0cnVjdG9yKGMpe3RoaXMueWVhcj1jLHRoaXMueWVhclJhbmdlPVtdLHRoaXMuZ2VuZXJhdGVZ''@;'; put 'put ''ZWFyUmFuZ2UoKX1nZXQgbWlkZGxlWWVhcigpe3JldHVybiB0aGlzLnllYXJSYW5nZVtNYXRoLmZsb29yKHRoaXMueWVhclJhbmdlLmxlbmd0aC8yKV19bmV4dERlY2FkZSgpe3JldHVybiBuZXcgcFModGhpcy55ZWFyKzEwKX1wcmV2aW91c0RlY2FkZSgpe3JldHVybiBuZXcgcFModGhpcy55''@;'; put 'put ''ZWFyLTEwKX1jdXJyZW50RGVjYWRlKCl7cmV0dXJuIG5ldyBwUygobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpfWluUmFuZ2UoYyl7cmV0dXJuIHRoaXMueWVhclJhbmdlLmluZGV4T2YoYyk+LTF9Z2VuZXJhdGVZZWFyUmFuZ2UoKXtjb25zdCBhPXRoaXMueWVhci10aGlzLnllYXIlMTA7dGhp''@;'; put 'put ''cy55ZWFyUmFuZ2U9dGhpcy5nZW5lcmF0ZVJhbmdlKGEsYSsxMCl9Z2VuZXJhdGVSYW5nZShjLGEpe3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6YS1jfSwoZixkKT0+ZCtjKX19bGV0IHhzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSl7dGhpcy5fZGF0ZU5hdmlnYXRp''@;'; put 'put ''b25TZXJ2aWNlPWEsdGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlPWYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZT1kLHRoaXMuX2VsUmVmPWgsdGhpcy5jb21tb25TdHJpbmdzPW0sdGhpcy55ZWFyUmFuZ2VNb2RlbD1uZXcgcFModGhpcy5jYWxlbmRhclllYXIpLHRoaXMuX2ZvY3VzZWRZ''@;'; put 'put ''ZWFyPXRoaXMuY2FsZW5kYXJZZWFyfWdldCBjYWxlbmRhclllYXIoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXJ9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxS''@;'; put 'put ''ZWYpfW9uS2V5RG93bihhKXtpZihhKXtjb25zdCBmPUVkKGEua2V5KTtmPT09TW8uQXJyb3dVcD8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTEpKTpmPT09TW8uQXJyb3dEb3duPyhhLnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZW1lbnRGb2N1c1ll''@;'; put 'put ''YXJCeSgxKSk6Zj09PU1vLkFycm93UmlnaHQ/KGEucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KDUpKTpmPT09TW8uQXJyb3dMZWZ0JiYoYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTUpKX19Y2hhbmdlWWVhcihhKXt0aGlz''@;'; put 'put ''Ll9kYXRlTmF2aWdhdGlvblNlcnZpY2UuY2hhbmdlWWVhcihhKSx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9EYXlWaWV3KCl9cHJldmlvdXNEZWNhZGUoKXt0aGlzLnllYXJSYW5nZU1vZGVsPXRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKX1jdXJyZW50RGVj''@;'; put 'put ''YWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheS55ZWFyKXx8KHRoaXMueWVhclJhbmdlTW9kZWw9dGhpcy55ZWFyUmFuZ2VNb2RlbC5jdXJyZW50RGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9j''@;'; put 'put ''dXNDZWxsKHRoaXMuX2VsUmVmKX1uZXh0RGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbD10aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKX1nZXRUYWJJbmRleChhKXtyZXR1cm4gdGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2ZvY3VzZWRZZWFyKXx8KHRoaXMuX2Zv''@;'; put 'put ''Y3VzZWRZZWFyPXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLmNhbGVuZGFyWWVhcik/dGhpcy5jYWxlbmRhclllYXI6dGhpcy55ZWFyUmFuZ2VNb2RlbC5taWRkbGVZZWFyKSx0aGlzLl9mb2N1c2VkWWVhcj09PWE/MDotMX1pbmNyZW1lbnRGb2N1c1llYXJCeShhKXt0aGlzLl9m''@;'; put 'put ''b2N1c2VkWWVhcj10aGlzLl9mb2N1c2VkWWVhcithLHRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcil8fCh0aGlzLnllYXJSYW5nZU1vZGVsPWE+MD90aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKTp0aGlzLnllYXJSYW5nZU1vZGVsLnByZXZpb3Vz''@;'; put 'put ''RGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocjMpLHJ0KGg3KSxydChmNykscnQoVmkpLHJ0KFRhKSl9LGwuXHUwMjc1Y21wPWtyKHt0''@;'; put 'put ''eXBlOmwsc2VsZWN0b3JzOltbImNsci15ZWFycGlja2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgia2V5ZG93biIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25LZXlEb3duKGgpfSksMiZhJiZncigieWVhcnBpY2tlciIsITApfSxkZWNsczo5LHZh''@;'; put 'put ''cnM6Nyxjb25zdHM6W1sxLCJ5ZWFyLXN3aXRjaGVycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwic3dpdGNoZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsic2hhcGUiLCJldmVudCJdLFsic2hhcGUiLCJhbmdsZSIsImRp''@;'; put 'put ''cmVjdGlvbiIsInJpZ2h0Il0sWzEsInllYXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjYWxlbmRhci1idG4geWVhciIsMywiaXMtc2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJ5ZWFyIiwzLCJj''@;'; put 'put ''bGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsImRpdiIsMCkoMSwiYnV0dG9uIiwxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYucHJldmlvdXNEZWNhZGUoKX0pLHRuKDIsImNkcy1pY29uIiwyKSxDZSgpLHllKDMsImJ1dHRvbiIsMSksRXQoImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBmLmN1cnJlbnREZWNhZGUoKX0pLHRuKDQsImNkcy1pY29uIiwzKSxDZSgpLHllKDUsImJ1dHRvbiIsMSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLm5leHREZWNhZGUoKX0pLHRuKDYsImNkcy1pY29uIiw0KSxDZSgpKCkseWUoNywiZGl2Iiw1''@;'; put 'put ''KSx0dCg4LE9JZSwyLDQsImJ1dHRvbiIsNiksQ2UoKSksMiZhJiYoU2UoMSksUnIoImFyaWEtbGFiZWwiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZSksU2UoMSksUnIoInRpdGxlIixmLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNE''@;'; put 'put ''ZWNhZGUpLFNlKDEpLFJyKCJhcmlhLWxhYmVsIixmLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudERlY2FkZSksU2UoMSksUnIoInRpdGxlIixmLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudERlY2FkZSksU2UoMSksUnIoImFyaWEtbGFiZWwiLGYuY29t''@;'; put 'put ''bW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0RGVjYWRlKSxTZSgxKSxScigidGl0bGUiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0RGVjYWRlKSxTZSgyKSxSZSgibmdGb3JPZiIsZi55ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2UpKX0sZGVwZW5kZW5jaWVzOltKYSxS''@;'; put 'put ''YV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksQXNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlPWEsdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWYsdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT1kLHRoaXMuY29tbW9uU3Ry''@;'; put 'put ''aW5ncz1ofWdldCBtb250aEF0dHJTdHJpbmcoKXtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJTZWxlY3RNb250aFRleHQse0NBTEVOREFSX01PTlRIOnRoaXMuY2FsZW5kYXJNb250aH0pfWdldCB5ZWFyQXR0clN0cmlu''@;'; put 'put ''Zygpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclNlbGVjdFllYXJUZXh0LHtDQUxFTkRBUl9ZRUFSOnRoaXMuY2FsZW5kYXJZZWFyLnRvU3RyaW5nKCl9KX1nZXQgY2FsZW5kYXJNb250aCgpe3JldHVybiB0aGlzLl9s''@;'; put 'put ''b2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc0FiYnJldmlhdGVkW3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhci5tb250aF19Z2V0IGNhbGVuZGFyWWVhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5k''@;'; put 'put ''YXIueWVhcn1jaGFuZ2VUb01vbnRoVmlldygpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb01vbnRoVmlldygpfWNoYW5nZVRvWWVhclZpZXcoKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9ZZWFyVmlldygpfW5leHRNb250aCgpe3RoaXMuX2RhdGVOYXZpZ2F0''@;'; put 'put ''aW9uU2VydmljZS5tb3ZlVG9OZXh0TW9udGgoKX1wcmV2aW91c01vbnRoKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb1ByZXZpb3VzTW9udGgoKX1jdXJyZW50TW9udGgoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvQ3VycmVudE1vbnRoKCl9fXJldHVy''@;'; put 'put ''biBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGg3KSxydChyMykscnQoZFMpLHJ0KFRhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXlwaWNrZXIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsy''@;'; put 'put ''JmEmJmdyKCJkYXlwaWNrZXIiLCEwKX0sZGVjbHM6MTgsdmFyczoxNCxjb25zdHM6W1sxLCJjbHItc3Itb25seSJdLFsxLCJjYWxlbmRhci1oZWFkZXIiXSxbMSwiY2FsZW5kYXItcGlja2VycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwibW9udGhwaWNrZXItdHJpZ2dl''@;'; put 'put ''ciIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsInllYXJwaWNrZXItdHJpZ2dlciIsMywiY2xpY2siXSxbMSwiY2FsZW5kYXItc3dpdGNoZXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJzd2l0Y2hlciIsMywiY2xpY2siXSxbInNo''@;'; put 'put ''YXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJsZWZ0Il0sWyJzaGFwZSIsImV2ZW50Il0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApLFllKDEpLENlKCkseWUoMiwiZGl2IiwxKSgzLCJkaXYi''@;'; put 'put ''LDIpKDQsImJ1dHRvbiIsMyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmNoYW5nZVRvTW9udGhWaWV3KCl9KSxZZSg1KSxDZSgpLHllKDYsImJ1dHRvbiIsNCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmNoYW5nZVRvWWVhclZpZXcoKX0pLFllKDcpLENlKCkoKSx5''@;'; put 'put ''ZSg4LCJkaXYiLDUpKDksImJ1dHRvbiIsNiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLnByZXZpb3VzTW9udGgoKX0pLHRuKDEwLCJjZHMtaWNvbiIsNyksQ2UoKSx5ZSgxMSwiYnV0dG9uIiw2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuY3VycmVudE1vbnRoKCl9''@;'; put 'put ''KSx0bigxMiwiY2RzLWljb24iLDgpLENlKCkseWUoMTMsImJ1dHRvbiIsNiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLm5leHRNb250aCgpfSksdG4oMTQsImNkcy1pY29uIiw5KSxDZSgpKCkoKSx0bigxNSwiY2xyLWNhbGVuZGFyIikseWUoMTYsImRpdiIsMCksWWUoMTcpLENl''@;'; put 'put ''KCkpLDImYSYmKFNlKDEpLGFyKGYuY29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudFN0YXJ0KSxTZSgzKSxScigiYXJpYS1sYWJlbCIsZi5tb250aEF0dHJTdHJpbmcpKCJ0aXRsZSIsZi5tb250aEF0dHJTdHJpbmcpLFNlKDEpLHdyKCIgIixmLmNhbGVuZGFyTW9udGgsIiAiKSxTZSgx''@;'; put 'put ''KSxScigiYXJpYS1sYWJlbCIsZi55ZWFyQXR0clN0cmluZykoInRpdGxlIixmLnllYXJBdHRyU3RyaW5nKSxTZSgxKSx3cigiICIsZi5jYWxlbmRhclllYXIsIiAiKSxTZSgyKSxScigiYXJpYS1sYWJlbCIsZi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzTW9udGgpLFNl''@;'; put 'put ''KDEpLFJyKCJ0aXRsZSIsZi5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzTW9udGgpLFNlKDEpLFJyKCJhcmlhLWxhYmVsIixmLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudE1vbnRoKSxTZSgxKSxScigidGl0bGUiLGYuY29tbW9uU3RyaW5ncy5rZXlz''@;'; put 'put ''LmRhdGVwaWNrZXJDdXJyZW50TW9udGgpLFNlKDEpLFJyKCJhcmlhLWxhYmVsIixmLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dE1vbnRoKSxTZSgxKSxScigidGl0bGUiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0TW9udGgpLFNlKDMpLGFyKGYuY29tbW9u''@;'; put 'put ''U3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudEVuZCkpfSxkZXBlbmRlbmNpZXM6W01zZSxKYV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksVHNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT1mfWdldCBp''@;'; put 'put ''c01vbnRoVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc01vbnRoVmlld31nZXQgaXNZZWFyVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc1llYXJWaWV3fWdldCBpc0RheVZpZXcoKXtyZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UuaXNE''@;'; put 'put ''YXlWaWV3fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChUYSkscnQoaDcpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJkaWFsb2ci''@;'; put 'put ''XSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmKFJyKCJhcmlhLW1vZGFsIiwhMCkoImFyaWEtbGFiZWwiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJEaWFsb2dMYWJlbCksZ3IoImRhdGVwaWNrZXIiLCEwKSl9LGZlYXR1cmVzOltyaShbZjddKV0s''@;'; put 'put ''ZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHR0KDAsREllLDEsMCwiY2xyLW1vbnRocGlja2VyIiwwKSx0dCgxLElJZSwxLDAsImNsci15ZWFycGlja2VyIiwwKSx0dCgyLFJJZSwxLDAsImNsci1kYXlwaWNrZXIiLDApKSwy''@;'; put 'put ''JmEmJihSZSgibmdJZiIsZi5pc01vbnRoVmlldyksU2UoMSksUmUoIm5nSWYiLGYuaXNZZWFyVmlldyksU2UoMSksUmUoIm5nSWYiLGYuaXNEYXlWaWV3KSl9LGRlcGVuZGVuY2llczpba3NlLHhzZSxBc2UsJGldLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLG1TPSgoKT0+e2NsYXNzIGwgZXh0''@;'; put 'put ''ZW5kcyBvN3tjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPLFgsYWUscGUsYmUseGUsVmUpe3N1cGVyKFZlLGJlLHBlLHhlKSx0aGlzLnJlbmRlcmVyPWEsdGhpcy50b2dnbGVTZXJ2aWNlPWYsdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2U9ZCx0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2Vydmlj''@;'; put 'put ''ZT1oLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT1tLHRoaXMuZGF0ZUlPU2VydmljZT1fLHRoaXMuY29tbW9uU3RyaW5ncz1PLHRoaXMuZm9jdXNTZXJ2aWNlPVgsdGhpcy52aWV3TWFuYWdlclNlcnZpY2U9YWUsdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlPXBlLHRoaXMubGF5b3V0U2Vy''@;'; put 'put ''dmljZT1iZSx0aGlzLm5nQ29udHJvbFNlcnZpY2U9eGUsdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9VmUsdGhpcy5mb2N1cz0hMSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmZvY3VzU2VydmljZS5mb2N1c0NoYW5nZS5zdWJzY3JpYmUoWmU9Pnt0aGlzLmZvY3VzPVplfSkpLHRo''@;'; put 'put ''aXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5tYXJrQXNUb3VjaGVkKCl9KSl9c2V0IGNsclBvc2l0aW9uKGEpe2EmJlAwW2FdJiYodGhpcy52aWV3TWFuYWdlclNlcnZp''@;'; put 'put ''Y2UucG9zaXRpb249UDBbYV0pfXNldCBhY3Rpb25CdXR0b24oYSl7dGhpcy50b2dnbGVCdXR0b249YX1nZXQgcG9wb3ZlclBvc2l0aW9uKCl7cmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9ufWdldCBvcGVuKCl7cmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVufWdl''@;'; put 'put ''dCBpc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkfWdldCBpc0lucHV0RGF0ZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLmRpc2FibGVkfHx0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UmJnRoaXMu''@;'; put 'put ''ZGF0ZUZvcm1Db250cm9sU2VydmljZS5kaXNhYmxlZH1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoYT0+e2E/dGhpcy5pbml0aWFsaXplQ2FsZW5kYXIoKTp0aGlzLnRvZ2dsZUJ1dHRvbi5u''@;'; put 'put ''YXRpdmVFbGVtZW50LmZvY3VzKCl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpKX1nZXRUb2dnbGVCdXR0b25MYWJlbChhKXtpZihhKXtjb25zdCBmPXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoYS50''@;'; put 'put ''b0RhdGUoKSk7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsLHtTRUxFQ1RFRF9EQVRFOmZ9KXx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZX1yZXR1cm4g''@;'; put 'put ''dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNob29zZURhdGVMYWJlbHx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZX1saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERh''@;'; put 'put ''eUNoYW5nZS5waXBlKHQ0KHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSkuc3Vic2NyaWJlKGE9PntpZih0aGlzLmlzRW5hYmxlZCl7Y29uc3QgZj10aGlzLmdldFRvZ2dsZUJ1dHRvbkxhYmVsKGEpLGQ9dGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudDt0aGlz''@;'; put 'put ''LnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkLCJhcmlhLWxhYmVsIixmKSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkLCJ0aXRsZSIsZil9fSl9aW5pdGlhbGl6ZUNhbGVuZGFyKCl7dGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZUNhbGVuZGFyKCl9fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGpvKSxydChRYSkscnQocjMpLHJ0KHJJKSxydChoUykscnQoZDcpLHJ0KFRhKSxydChJVSkscnQoaDcpLHJ0KERmKSxydChuMyw4KSxydChIMCkscnQoT2YpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6''@;'; put 'put ''W1siY2xyLWRhdGUtY29udGFpbmVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oTEllLDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYuYWN0aW9uQnV0dG9uPWQuZmlyc3QpfX0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJj''@;'; put 'put ''bHItZGF0ZS1jb250YWluZXIiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsZi5pc0lucHV0RGF0ZURpc2FibGVkKSgiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItcm93IixmLmFkZEdyaWQoKSl9LGlucHV0czp7Y2xyUG9zaXRpb246ImNsclBvc2l0aW9uIn0sZmVhdHVyZXM6''@;'; put 'put ''W3JpKFtUZixRYSxRMix0NyxkUyxEZixJVSxIMCxkNyxyMyxySSxoUyxoNyxPZl0pLHJvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WkllLGRlY2xzOjEzLHZhcnM6MTQsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbImNsclBvcG92ZXJB''@;'; put 'put ''bmNob3IiLCIiLDEsImNsci1pbnB1dC13cmFwcGVyIl0sWzEsImNsci1pbnB1dC1ncm91cCJdLFsidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b24iLCIiLCJjbGFzcyIsImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiIsMywiZGlzYWJsZWQiLDQsIm5nSWYiXSxb''@;'; put 'put ''ImNsckZvY3VzVHJhcCIsIiIsNCwiY2xyUG9wb3ZlckNvbnRlbnQiLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwi''@;'; put 'put ''c2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRy''@;'; put 'put ''dWUiLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwxLCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24iLDMsImRpc2FibGVkIl0sWyJhY3Rpb25CdXR0b24iLCIiXSxbInN0YXR1cyIsImluZm8iLCJzaGFwZSIsImNhbGVuZGFyIl0s''@;'; put 'put ''WyJjbHJGb2N1c1RyYXAiLCIiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRk''@;'; put 'put ''ZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKFVJZSksRHIoMCksdHQoMSxQSWUsMSwwLCJsYWJlbCIsMCkseWUoMiwiZGl2IiwxKSgzLCJkaXYiLDIpKDQsImRpdiIsMyksRHIoNSwxKSx0dCg2LEZJZSwzLDEsImJ1dHRv''@;'; put 'put ''biIsNCksdHQoNyxISWUsMSwwLCJjbHItZGF0ZXBpY2tlci12aWV3LW1hbmFnZXIiLDUpLENlKCksdHQoOCxOSWUsMSwwLCJjZHMtaWNvbiIsNiksdHQoOSxWSWUsMSwwLCJjZHMtaWNvbiIsNyksQ2UoKSx0dCgxMCxCSWUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCgxMSxqSWUsMSwwLCJuZy1j''@;'; put 'put ''b250ZW50IiwwKSx0dCgxMix6SWUsMSwwLCJuZy1jb250ZW50IiwwKSxDZSgpKSwyJmEmJihTZSgxKSxSZSgibmdJZiIsIWYubGFiZWwmJmYuYWRkR3JpZCgpKSxTZSgxKSxSZSgibmdDbGFzcyIsZi5jb250cm9sQ2xhc3MoKSksU2UoMiksZ3IoImNsci1mb2N1cyIsZi5mb2N1cyksU2UoMiks''@;'; put 'put ''UmUoIm5nSWYiLGYuaXNFbmFibGVkKSxTZSgxKSxSZSgiY2xyUG9wb3ZlckNvbnRlbnQiLGYub3BlbikoImNsclBvcG92ZXJDb250ZW50QXQiLGYucG9wb3ZlclBvc2l0aW9uKSgiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwhMCkoImNsclBvcG92ZXJDb250ZW50U2Ny''@;'; put 'put ''b2xsVG9DbG9zZSIsITApLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dJbnZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93VmFsaWQpLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dIZWxwZXIpLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dJbnZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93VmFsaWQp''@;'; put 'put ''KX0sZGVwZW5kZW5jaWVzOltUc2UsJGksZWwseXUsclMsYVMsSmEsb1MsZzRdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLE5VPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhN3tjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPLFgsYWUscGUsYmUseGUsVmUpe3N1cGVyKGEsbVMsZixtLGgsZCksdGhp''@;'; put 'put ''cy5lbD1kLHRoaXMucmVuZGVyZXI9aCx0aGlzLmNvbnRyb2w9bSx0aGlzLmNvbnRhaW5lcj1fLHRoaXMuZGF0ZUlPU2VydmljZT1PLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPVgsdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U9YWUsdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNl''@;'; put 'put ''PXBlLHRoaXMucGxhdGZvcm1JZD1iZSx0aGlzLmZvY3VzU2VydmljZT14ZSx0aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2U9VmUsdGhpcy5kYXRlQ2hhbmdlPW5ldyB4cighMSksdGhpcy5pbmRleD0xfXNldCBkYXRlKGEpe3RoaXMucHJldmlvdXNEYXRlQ2hhbmdlIT09YSYmdGhpcy51cGRh''@;'; put 'put ''dGVEYXRlKHRoaXMuZ2V0VmFsaWREYXRlVmFsdWVGcm9tRGF0ZShhKSksdGhpcy5pbml0aWFsQ2xyRGF0ZUlucHV0VmFsdWV8fCh0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZT1hKX1zZXQgbWluKGEpe3RoaXMuZGF0ZUlPU2VydmljZS5zZXRNaW5EYXRlKGEpfXNldCBtYXgoYSl7dGhp''@;'; put 'put ''cy5kYXRlSU9TZXJ2aWNlLnNldE1heERhdGUoYSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT90aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlzYWJsZWQ6bnVsbH1zZXQgZGlzYWJsZWQoYSl7dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNl''@;'; put 'put ''JiZ0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2Uuc2V0RGlzYWJsZWQoSWYoYSkpfWdldCBwbGFjZWhvbGRlclRleHQoKXtyZXR1cm4gdGhpcy5wbGFjZWhvbGRlcj90aGlzLnBsYWNlaG9sZGVyOnRoaXMuZGF0ZUlPU2VydmljZS5wbGFjZWhvbGRlclRleHR9Z2V0IGlucHV0VHlwZSgpe3Jl''@;'; put 'put ''dHVybiBIYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLnVzaW5nTmF0aXZlRGF0ZXBpY2tlcigpPyJkYXRlIjoidGV4dCJ9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMucG9wdWxhdGVTZXJ2aWNlc0Zyb21Db250YWluZXJDb21wb25lbnQoKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVz''@;'; put 'put ''aCh0aGlzLmxpc3RlbkZvclVzZXJTZWxlY3RlZERheUNoYW5nZXMoKSx0aGlzLmxpc3RlbkZvckNvbnRyb2xWYWx1ZUNoYW5nZXMoKSx0aGlzLmxpc3RlbkZvclRvdWNoQ2hhbmdlcygpLHRoaXMubGlzdGVuRm9yRGlydHlDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JJbnB1dFJlZm9jdXMoKSl9''@;'; put 'put ''bmdBZnRlclZpZXdJbml0KCl7dGhpcy5wcm9jZXNzSW5pdGlhbElucHV0cygpfXNldEZvY3VzU3RhdGVzKCl7dGhpcy5zZXRGb2N1cyghMCl9dHJpZ2dlclZhbGlkYXRpb24oKXtzdXBlci50cmlnZ2VyVmFsaWRhdGlvbigpLHRoaXMuc2V0Rm9jdXMoITEpfW9uVmFsdWVDaGFuZ2UoYSl7Y29u''@;'; put 'put ''c3QgZj10aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoYS52YWx1ZSk7aWYodGhpcy51c2luZ0NsYXJpdHlEYXRlcGlja2VyKCkmJmYpdGhpcy51cGRhdGVEYXRlKGYsITApO2Vsc2UgaWYodGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKSl7Y29uc3RbZCxo''@;'; put 'put ''LG1dPWEudmFsdWUuc3BsaXQoIi0iKTt0aGlzLnVwZGF0ZURhdGUobmV3IERhdGUoK2QsK2gtMSwrbSksITApfWVsc2UgdGhpcy5lbWl0RGF0ZU91dHB1dChudWxsKX11c2luZ0NsYXJpdHlEYXRlcGlja2VyKCl7cmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxl''@;'; put 'put ''ZH11c2luZ05hdGl2ZURhdGVwaWNrZXIoKXtyZXR1cm4hdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkfXNldEZvY3VzKGEpe3RoaXMuZm9jdXNTZXJ2aWNlJiYodGhpcy5mb2N1c1NlcnZpY2UuZm9jdXNlZD1hKX1wb3B1bGF0ZVNlcnZpY2VzRnJvbUNvbnRhaW5lckNv''@;'; put 'put ''bXBvbmVudCgpe3RoaXMuY29udGFpbmVyfHwodGhpcy5kYXRlSU9TZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGQ3KSx0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihyMyksdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNl''@;'; put 'put ''cnZpY2U9dGhpcy5nZXRQcm92aWRlckZyb21Db250YWluZXIockkpLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihoUykpfXByb2Nlc3NJbml0aWFsSW5wdXRzKCl7dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKT90aGlzLnVw''@;'; put 'put ''ZGF0ZURhdGUodGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKHRoaXMuY29udHJvbC52YWx1ZSkpOnRoaXMudXBkYXRlRGF0ZSh0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZSl9dXBkYXRlRGF0ZShhLGY9ITEpe2NvbnN0IGQ9dGhpcy5nZXRWYWxpZERh''@;'; put 'put ''dGVWYWx1ZUZyb21EYXRlKGEpO2Y/dGhpcy5lbWl0RGF0ZU91dHB1dChkKTp0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZT1kLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlJiYodGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk9ZD9uZXcgQTEoZC5nZXRGdWxsWWVhcigpLGQu''@;'; put 'put ''Z2V0TW9udGgoKSxkLmdldERhdGUoKSk6bnVsbCksdGhpcy51cGRhdGVJbnB1dChkKX11cGRhdGVJbnB1dChhKXtpZihhKXtjb25zdCBmPXRoaXMuZGF0ZUlPU2VydmljZS50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoYSk7dGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKT8oYS5zZXRN''@;'; put 'put ''aW51dGVzKGEuZ2V0TWludXRlcygpLWEuZ2V0VGltZXpvbmVPZmZzZXQoKSksdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInZhbHVlQXNEYXRlIixhKSk6dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSYmZiE9PXRoaXMuY29udHJvbC52YWx1''@;'; put 'put ''ZT90aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShmKTp0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidmFsdWUiLGYpfWVsc2UgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInZhbHVlIiwiIil9Z2V0VmFs''@;'; put 'put ''aWREYXRlVmFsdWVGcm9tRGF0ZShhKXtpZih0aGlzLmRhdGVJT1NlcnZpY2Upe2NvbnN0IGY9dGhpcy5kYXRlSU9TZXJ2aWNlLnRvTG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhhKTtyZXR1cm4gdGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKGYpfXJldHVy''@;'; put 'put ''biBudWxsfWVtaXREYXRlT3V0cHV0KGEpeyFmdW5jdGlvbiBPSGUobCxjKXtyZXR1cm4gbCBpbnN0YW5jZW9mIERhdGUmJmMgaW5zdGFuY2VvZiBEYXRlJiZsLmdldEZ1bGxZZWFyKCk9PT1jLmdldEZ1bGxZZWFyKCkmJmwuZ2V0TW9udGgoKT09PWMuZ2V0TW9udGgoKSYmbC5nZXREYXRlKCk9''@;'; put 'put ''PT1jLmdldERhdGUoKX0oYSx0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZSk/KHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGEpLHRoaXMucHJldmlvdXNEYXRlQ2hhbmdlPWEpOiFhJiZ0aGlzLnByZXZpb3VzRGF0ZUNoYW5nZSYmKHRoaXMuZGF0ZUNoYW5nZS5lbWl0KG51bGwpLHRoaXMucHJldmlvdXNE''@;'; put 'put ''YXRlQ2hhbmdlPW51bGwpfWRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpe3JldHVybiEhdGhpcy5jb250cm9sfWxpc3RlbkZvckNvbnRyb2xWYWx1ZUNoYW5nZXMoKXtyZXR1cm4gR2kodGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSkucGlwZShJbChhPT5hKSxrbCgoKT0+dGhpcy5j''@;'; put 'put ''b250cm9sLnZhbHVlQ2hhbmdlcyksSWwoKCk9PiF0aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZWxlbWVudElzRm9jdXNlZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKSkuc3Vic2NyaWJlKGE9PnRoaXMudXBkYXRlRGF0ZSh0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURh''@;'; put 'put ''dGVTdHJpbmcoYSkpKX1saXN0ZW5Gb3JVc2VyU2VsZWN0ZWREYXlDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Q2hhbmdlLnN1YnNjcmliZShhPT50aGlzLnVwZGF0ZURhdGUoYS50b0RhdGUoKSwhMCkpfWxpc3RlbkZvclRvdWNoQ2hhbmdl''@;'; put 'put ''cygpe3JldHVybiB0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UudG91Y2hlZENoYW5nZS5waXBlKElsKCgpPT50aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpKSkuc3Vic2NyaWJlKCgpPT50aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCkpfWxpc3RlbkZvckRpcnR5''@;'; put 'put ''Q2hhbmdlcygpe3JldHVybiB0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlydHlDaGFuZ2UucGlwZShJbCgoKT0+dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSkpLnN1YnNjcmliZSgoKT0+dGhpcy5jb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKSl9bGlzdGVuRm9ySW5w''@;'; put 'put ''dXRSZWZvY3VzKCl7cmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5Q2hhbmdlLnBpcGUoSWwoYT0+ISFhKSkuc3Vic2NyaWJlKCgpPT50aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNJbnB1dCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKX19cmV0dXJu''@;'; put 'put ''IGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoZmEpLHJ0KEFsKSxydChWaSkscnQoam8pLHJ0KHFjLDEwKSxydChtUyw4KSxydChkNyw4KSxydChyMyw4KSxydChySSw4KSxydChoUyw4KSxydChxYSkscnQoSVUsOCkscnQoZjcpKX0sbC5cdTAyNzVkaXI9U3Io''@;'; put 'put ''e3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyRGF0ZSIsIiJdXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBmLnNldEZvY3VzU3RhdGVzKCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZi50cmlnZ2Vy''@;'; put 'put ''VmFsaWRhdGlvbigpfSkoImNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25WYWx1ZUNoYW5nZShoLnRhcmdldCl9KSwyJmEmJihtMSgiZGlzYWJsZWQiLGYuZGlzYWJsZWQpLFJyKCJwbGFjZWhvbGRlciIsZi5wbGFjZWhvbGRlclRleHQpKCJ0eXBlIixmLmlucHV0VHlwZSksZ3IoImNs''@;'; put 'put ''ci1pbnB1dCIsITApKX0saW5wdXRzOntwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGRhdGU6WyJjbHJEYXRlIiwiZGF0ZSJdLG1pbjoibWluIixtYXg6Im1heCIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7ZGF0ZUNoYW5nZToiY2xyRGF0ZUNoYW5nZSJ9LGZlYXR1cmVzOltyaShb''@;'; put 'put ''ZjddKSxyb119KSxsfSkoKSxWVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuZGF0ZUlPU2VydmljZT1hfXZhbGlkYXRlKGEpe2lmKHRoaXMuZGF0ZUlPU2VydmljZSl7Y29uc3QgZj10aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoYS52YWx1''@;'; put 'put ''ZSksZD10aGlzLmRhdGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcy5taW5EYXRlLnRvRGF0ZSgpLGg9dGhpcy5kYXRlSU9TZXJ2aWNlLmRpc2FibGVkRGF0ZXMubWF4RGF0ZS50b0RhdGUoKTtpZihmJiZmPHRoaXMuZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzLm1pbkRhdGUudG9EYXRlKCkp''@;'; put 'put ''cmV0dXJue21pbjp7bWluOmQudG9Mb2NhbGVEYXRlU3RyaW5nKCksYWN0dWFsOmYudG9Mb2NhbGVEYXRlU3RyaW5nKCl9fTtpZihmJiZmPnRoaXMuZGF0ZUlPU2VydmljZS5kaXNhYmxlZERhdGVzLm1heERhdGUudG9EYXRlKCkpcmV0dXJue21heDp7bWF4OmgudG9Mb2NhbGVEYXRlU3RyaW5n''@;'; put 'put ''KCksYWN0dWFsOmYudG9Mb2NhbGVEYXRlU3RyaW5nKCl9fX1yZXR1cm4gbnVsbH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoZDcsOCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJEYXRlIiwiIl1dLGZlYXR1''@;'; put 'put ''cmVzOltyaShbe3Byb3ZpZGU6ZmMsdXNlRXhpc3Rpbmc6bCxtdWx0aTohMH1dKV19KSxsfSkoKSxMSGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKF8xLHcxLFp2LFdBZSxHQWUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxs''@;'; put 'put ''KX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sUUQsQWYsbFMsbGwsSkQsSnVdXX0pLGx9KSgpO25ldyBNaSh2b2lkIDApO2xldCBISGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKCRBZSxLQWUsXzEsdzEpfX1y''@;'; put 'put ''ZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sZGMsbGwsSnVdLEp1XX0pLGx9KSgpLEJVPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9keW5h''@;'; put 'put ''bWljPSExfW5nT25Jbml0KCl7dGhpcy5sYWJlbCYmdGhpcy5sYWJlbC5kaXNhYmxlR3JpZCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXJhZGlvLXdyYXBwZXIiXV0sY29u''@;'; put 'put ''dGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmRm8oZCxlbCw3KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLmxhYmVsPWguZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJjbHItcmFkaW8td3JhcHBlciIsITApfSxmZWF0''@;'; put 'put ''dXJlczpbcmkoW1RmXSldLG5nQ29udGVudFNlbGVjdG9yczpHSWUsZGVjbHM6Myx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKFdJZSksRHIoMCksRHIoMSwxKSx0dCgyLFlJZSwxLDAsImxhYmVsIiwwKSksMiZhJiYoU2UoMiksUmUo''@;'; put 'put ''Im5nSWYiLCFmLmxhYmVsKSl9LGRlcGVuZGVuY2llczpbJGksZWxdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGpVPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhN3tjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3N1cGVyKGEsQlUsZixkLGgsbSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZhKSxydChBbCkscnQocWMsMTApLHJ0KGpvKSxydChWaSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJSYWRpbyIsIiJdXSxmZWF0dXJlczpbcm9dfSksbH0pKCksTkhlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBvN3tj''@;'; put 'put ''b25zdHJ1Y3RvcihhLGYsZCxoKXtzdXBlcihoLGEsZixkKSx0aGlzLmxheW91dFNlcnZpY2U9YSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9Zix0aGlzLm5nQ29udHJvbFNlcnZpY2U9ZCx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1oLHRoaXMuaW5saW5lPSExfWdldCBjbHJJbmxpbmUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5pbmxpbmV9c2V0IGNscklubGluZShhKXt0aGlzLmlubGluZT0ic3RyaW5nIj09dHlwZW9mIGE/ImZhbHNlIiE9PWE6ISFhfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0QXJpYVJvbGVzKCl9c2V0QXJpYVJvbGVzKCl7dGhpcy5yb2xlPXRoaXMucmFkaW9zLmxl''@;'; put 'put ''bmd0aD8iZ3JvdXAiOm51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KG4zLDgpLHJ0KERmKSxydChIMCkscnQoT2YpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXJhZGlvLWNvbnRhaW5lciJdXSxjb250ZW50''@;'; put 'put ''UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLGpVLDUpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYucmFkaW9zPWgpfX0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJihScigicm9sZSIsZi5yb2xlKSxncigiY2xyLWZvcm0tY29udHJvbCIs''@;'; put 'put ''ITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1mLmNvbnRyb2w/bnVsbDpmLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixmLmFkZEdyaWQoKSkpfSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIn0sZmVhdHVyZXM6W3JpKFtIMCxPZixEZixHZ10pLHJvXSxuZ0Nv''@;'; put 'put ''bnRlbnRTZWxlY3RvcnM6dFJlLGRlY2xzOjEwLHZhcnM6OSxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItc3VidGV4dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJleGNsYW1h''@;'; put 'put ''dGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxb''@;'; put 'put ''InNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFs''@;'; put 'put ''aWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKGVSZSksRHIoMCksdHQoMSwkSWUsMSwwLCJsYWJlbCIsMCkseWUoMiwiZGl2IiwxKSxEcigzLDEpLHllKDQsImRpdiIsMiksdHQoNSxLSWUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCg2LHFJZSwxLDAsImNkcy1p''@;'; put 'put ''Y29uIiwzKSx0dCg3LFhJZSwxLDAsImNkcy1pY29uIiw0KSx0dCg4LEpJZSwxLDAsIm5nLWNvbnRlbnQiLDApLHR0KDksUUllLDEsMCwibmctY29udGVudCIsMCksQ2UoKSgpKSwyJmEmJihTZSgxKSxSZSgibmdJZiIsIWYubGFiZWwmJmYuYWRkR3JpZCgpKSxTZSgxKSxncigiY2xyLWNvbnRy''@;'; put 'put ''b2wtaW5saW5lIixmLmNscklubGluZSksUmUoIm5nQ2xhc3MiLGYuY29udHJvbENsYXNzKCkpLFNlKDMpLFJlKCJuZ0lmIixmLnNob3dIZWxwZXIpLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dJbnZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93VmFsaWQpLFNlKDEpLFJlKCJuZ0lmIixmLnNo''@;'; put 'put ''b3dJbnZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOlskaSxlbCx5dSxKYV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksVkhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtqYS5hZGRJY29ucyhfMSx3MSl9fXJldHVybiBsLlx1MDI3NWZhYz1m''@;'; put 'put ''dW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxKdSxRRCxsbF0sSnVdfSksbH0pKCksQkhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtqYS5hZGRJY29ucyhfMSx3MSl9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxKdSxRRCxsbF0sSnVdfSksbH0pKCkscDc9KCgpPT57Y2xhc3MgbCBleHRlbmRzIG83e2NvbnN0cnVjdG9yKGEsZixkLGgp''@;'; put 'put ''e3N1cGVyKGgsYSxmLGQpLHRoaXMubGF5b3V0U2VydmljZT1hLHRoaXMuY29udHJvbENsYXNzU2VydmljZT1mLHRoaXMubmdDb250cm9sU2VydmljZT1kLHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPWgsdGhpcy5tdWx0aT0hMX1uZ09uSW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNo''@;'; put 'put ''KHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUoYT0+e2EmJih0aGlzLm11bHRpPWEudmFsdWVBY2Nlc3NvciBpbnN0YW5jZW9mIEdDLHRoaXMuY29udHJvbD1hKX0pKX13cmFwcGVyQ2xhc3MoKXtyZXR1cm4gdGhpcy5tdWx0aT8iY2xyLW11bHRpc2VsZWN0''@;'; put 'put ''LXdyYXBwZXIiOiJjbHItc2VsZWN0LXdyYXBwZXIifX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChuMyw4KSxydChEZikscnQoSDApLHJ0KE9mKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zZWxlY3QtY29udGFp''@;'; put 'put ''bmVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsR0MsNSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5tdWx0aXBsZT1oLmZpcnN0KX19LGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2xyLWZvcm0tY29udHJv''@;'; put 'put ''bCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1mLmNvbnRyb2w/bnVsbDpmLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixmLmFkZEdyaWQoKSl9LGZlYXR1cmVzOltyaShbT2YsSDAsVGYsRGZdKSxyb10sbmdDb250ZW50U2VsZWN0b3JzOnVSZSxkZWNsczoxMCx2''@;'; put 'put ''YXJzOjgsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRk''@;'; put 'put ''ZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRh''@;'; put 'put ''bmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEm''@;'; put 'put ''JihUaShzUmUpLERyKDApLHR0KDEsblJlLDEsMCwibGFiZWwiLDApLHllKDIsImRpdiIsMSkoMywiZGl2IiwyKSxEcig0LDEpLHR0KDUsclJlLDEsMCwiY2RzLWljb24iLDMpLHR0KDYsaVJlLDEsMCwiY2RzLWljb24iLDQpLENlKCksdHQoNyxvUmUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCg4''@;'; put 'put ''LGFSZSwxLDAsIm5nLWNvbnRlbnQiLDApLHR0KDksbFJlLDEsMCwibmctY29udGVudCIsMCksQ2UoKSksMiZhJiYoU2UoMSksUmUoIm5nSWYiLCFmLmxhYmVsJiZmLmFkZEdyaWQoKSksU2UoMSksUmUoIm5nQ2xhc3MiLGYuY29udHJvbENsYXNzKCkpLFNlKDEpLFJlKCJuZ0NsYXNzIixmLndy''@;'; put 'put ''YXBwZXJDbGFzcygpKSxTZSgyKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SGVscGVyKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSl9''@;'; put 'put ''LGRlcGVuZGVuY2llczpbJGksZWwseXUsSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLG03PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhN3tjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3N1cGVyKGEscDcsZixkLGgsbSksdGhpcy5pbmRleD0xfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''YSl7cmV0dXJuIG5ldyhhfHxsKShydChmYSkscnQoQWwpLHJ0KHFjLDEwKSxydChqbykscnQoVmkpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyU2VsZWN0IiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2xy''@;'; put 'put ''LXNlbGVjdCIsITApfSxmZWF0dXJlczpbcm9dfSksbH0pKCksakhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtqYS5hZGRJY29ucyhfMSx3MSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5c''@;'; put 'put ''dTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxkYyxsbCxKdV0sSnVdfSksbH0pKCksT3NlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBvN3t9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxs''@;'; put 'put ''Llx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdGV4dGFyZWEtY29udGFpbmVyIl1dLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1m''@;'; put 'put ''LmNvbnRyb2w/bnVsbDpmLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixmLmFkZEdyaWQoKSl9LGZlYXR1cmVzOltyaShbT2YsSDAsVGYsRGZdKSxyb10sbmdDb250ZW50U2VsZWN0b3JzOnZSZSxkZWNsczoxMCx2YXJzOjcsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1j''@;'; put 'put ''b250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXRleHRhcmVhLXdyYXBwZXIiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiY2xhc3Mi''@;'; put 'put ''LCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEs''@;'; put 'put ''ImNsci12YWxpZGF0ZS1pY29uIl0sWyJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoZ1JlKSxEcigwKSx0dCgxLGNSZSwxLDAs''@;'; put 'put ''ImxhYmVsIiwwKSx5ZSgyLCJkaXYiLDEpKDMsImRpdiIsMiksRHIoNCwxKSx0dCg1LGZSZSwxLDAsImNkcy1pY29uIiwzKSx0dCg2LGRSZSwxLDAsImNkcy1pY29uIiw0KSxDZSgpLHR0KDcsaFJlLDEsMCwibmctY29udGVudCIsMCksdHQoOCxwUmUsMSwwLCJuZy1jb250ZW50IiwwKSx0dCg5''@;'; put 'put ''LG1SZSwxLDAsIm5nLWNvbnRlbnQiLDApLENlKCkpLDImYSYmKFNlKDEpLFJlKCJuZ0lmIiwhZi5sYWJlbCYmZi5hZGRHcmlkKCkpLFNlKDEpLFJlKCJuZ0NsYXNzIixmLmNvbnRyb2xDbGFzcygpKSxTZSgzKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hv''@;'; put 'put ''d1ZhbGlkKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SGVscGVyKSxTZSgxKSxSZSgibmdJZiIsZi5zaG93SW52YWxpZCksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1ZhbGlkKSl9LGRlcGVuZGVuY2llczpbJGksZWwseXUsSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLHpIZT0oKCk9PntjbGFz''@;'; put 'put ''cyBsIGV4dGVuZHMgYTd7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXtzdXBlcihhLE9zZSxmLGQsaCxtKSx0aGlzLmluZGV4PTF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZhKSxydChBbCkscnQocWMsMTApLHJ0KGpvKSxydChWaSkpfSxsLlx1''@;'; put 'put ''MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJUZXh0YXJlYSIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImNsci10ZXh0YXJlYSIsITApfSxmZWF0dXJlczpbcm9dfSksbH0pKCksVUhlPSgoKT0+e2NsYXNzIGx7Y29uc3Ry''@;'; put 'put ''dWN0b3IoKXtqYS5hZGRJY29ucyhfMSx3MSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxkYyxsbCxKdV0sSnVdfSksbH0pKCksRHNlPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tib10sSnUsZEhlLHZIZSxMSGUsX3NlLEhIZSxWSGUsakhlLFVIZSxCSGUseUhlXX0pLGx9KSgpLElz''@;'; put 'put ''ZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dXX0pLGx9KSgpLFpIZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dXX0pLGx9KSgpO2NsYXNzIGlJe31sZXQgZ1M9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubmJDaGFuZ2VzPTAsdGhpcy5f''@;'; put 'put ''Y2hhbmdlPW5ldyB3ZX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1jaGFuZ2VTdGFydCgpe3RoaXMubmJDaGFuZ2VzKyt9Y2hhbmdlRG9uZSgpezA9PS0tdGhpcy5uYkNoYW5nZXMmJnRoaXMuX2NoYW5nZS5uZXh0KCl9fXJldHVybiBsLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHk0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5zdGF0ZURlYm91bmNlcj1hLHRoaXMuYWN0aXZhdGVkPSExLHRoaXMuX3Np''@;'; put 'put ''emU9MCx0aGlzLl9jdXJyZW50PTEsdGhpcy5fY2hhbmdlPW5ldyB3ZSx0aGlzLnByZXZlbnRFbWl0PSExLHRoaXMuX3NpemVDaGFuZ2U9bmV3IHdlfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9c2V0IHNpemUoYSl7Y29uc3QgZj10aGlzLl9zaXplO2EhPT1mJiYodGhpcy5wcmV2ZW50''@;'; put 'put ''RW1pdHx8dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX3NpemU9YSx0aGlzLl9jdXJyZW50PTA9PT1hPzE6TWF0aC5mbG9vcihmL2EqKHRoaXMuX2N1cnJlbnQtMSkpKzEsdGhpcy5wcmV2ZW50RW1pdHx8KHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpLHRo''@;'; put 'put ''aXMuX3NpemVDaGFuZ2UubmV4dCh0aGlzLl9zaXplKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKSkpLHRoaXMucHJldmVudEVtaXQ9ITF9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5fdG90YWxJdGVtc3x8MH1zZXQgdG90YWxJdGVtcyhhKXt0aGlzLl90b3RhbEl0ZW1z''@;'; put 'put ''PWEsdGhpcy5jdXJyZW50PnRoaXMubGFzdCYmKHRoaXMuY3VycmVudD10aGlzLmxhc3QpfWdldCBsYXN0KCl7cmV0dXJuIHRoaXMuX2xhc3Q/dGhpcy5fbGFzdDp0aGlzLnNpemU+MCYmdGhpcy50b3RhbEl0ZW1zP01hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMvdGhpcy5zaXplKToxfXNldCBs''@;'; put 'put ''YXN0KGEpe3RoaXMuX2xhc3Q9YX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgc2l6ZUNoYW5nZSgpe3JldHVybiB0aGlzLl9zaXplQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9c2V0IGN1''@;'; put 'put ''cnJlbnQoYSl7YSE9PXRoaXMuX2N1cnJlbnQmJih0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fY3VycmVudD1hLHRoaXMuX2NoYW5nZS5uZXh0KGEpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpKX1nZXQgZmlyc3RJdGVtKCl7cmV0dXJuIDA9PT10aGlz''@;'; put 'put ''Ll90b3RhbEl0ZW1zPy0xOjA9PT10aGlzLnNpemU/MDoodGhpcy5jdXJyZW50LTEpKnRoaXMuc2l6ZX1nZXQgbGFzdEl0ZW0oKXtpZigwPT09dGhpcy5fdG90YWxJdGVtcylyZXR1cm4tMTtpZigwPT09dGhpcy5zaXplKXJldHVybiB0aGlzLnRvdGFsSXRlbXMtMTtsZXQgYT10aGlzLmN1cnJl''@;'; put 'put ''bnQqdGhpcy5zaXplLTE7cmV0dXJuIHRoaXMudG90YWxJdGVtcyYmKGE9TWF0aC5taW4oYSx0aGlzLnRvdGFsSXRlbXMtMSkpLGF9cHJldmlvdXMoKXt0aGlzLmN1cnJlbnQ+MSYmdGhpcy5jdXJyZW50LS19bmV4dCgpe3RoaXMuY3VycmVudDx0aGlzLmxhc3QmJnRoaXMuY3VycmVudCsrfXJl''@;'; put 'put ''c2V0UGFnZVNpemUoYT0hMSl7dGhpcy5wcmV2ZW50RW1pdD1hLHRoaXMuc2l6ZT0wfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihnUykpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGkzPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLl9wYWdlPWEsdGhpcy5zdGF0ZURlYm91bmNlcj1mLHRoaXMuX2NoYW5nZT1uZXcgd2UsdGhpcy5fYWxsPVtdfWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWhhc0FjdGl2ZUZpbHRlcnMoKXtm''@;'; put 'put ''b3IoY29uc3R7ZmlsdGVyOmF9b2YgdGhpcy5fYWxsKWlmKGEmJmEuaXNBY3RpdmUoKSlyZXR1cm4hMDtyZXR1cm4hMX1nZXRBY3RpdmVGaWx0ZXJzKCl7Y29uc3QgYT1bXTtmb3IoY29uc3R7ZmlsdGVyOmZ9b2YgdGhpcy5fYWxsKWYmJmYuaXNBY3RpdmUoKSYmYS5wdXNoKGYpO3JldHVybiBh''@;'; put 'put ''fWFkZChhKXtjb25zdCBmPWEuY2hhbmdlcy5zdWJzY3JpYmUoKCk9PnRoaXMucmVzZXRQYWdlQW5kRW1pdEZpbHRlckNoYW5nZShbYV0pKTtsZXQgZD0hMTtjb25zdCBoPW5ldyBvSShhLCgpPT57aWYoZClyZXR1cm47Zi51bnN1YnNjcmliZSgpO2NvbnN0IG09dGhpcy5fYWxsLmZpbmRJbmRl''@;'; put 'put ''eChfPT5fLmZpbHRlcj09PWEpO20+PTAmJnRoaXMuX2FsbC5zcGxpY2UobSwxKSxhLmlzQWN0aXZlKCkmJnRoaXMucmVzZXRQYWdlQW5kRW1pdEZpbHRlckNoYW5nZShbXSksZD0hMH0pO3JldHVybiB0aGlzLl9hbGwucHVzaChoKSxhLmlzQWN0aXZlKCkmJnRoaXMucmVzZXRQYWdlQW5kRW1p''@;'; put 'put ''dEZpbHRlckNoYW5nZShbYV0pLGh9YWNjZXB0cyhhKXtmb3IoY29uc3R7ZmlsdGVyOmZ9b2YgdGhpcy5fYWxsKWlmKGYmJmYuaXNBY3RpdmUoKSYmIWYuYWNjZXB0cyhhKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXNldFBhZ2VBbmRFbWl0RmlsdGVyQ2hhbmdlKGEpe3RoaXMuc3RhdGVEZWJvdW5j''@;'; put 'put ''ZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9wYWdlLmN1cnJlbnQ9MSx0aGlzLl9jaGFuZ2UubmV4dChhKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoeTQpLHNyKGdTKSl9LGwuXHUwMjc1''@;'; put 'put ''cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y2xhc3Mgb0l7Y29uc3RydWN0b3IoYyxhKXt0aGlzLmZpbHRlcj1jLHRoaXMudW5yZWdpc3Rlcj1hfX1sZXQgYUk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmZpbHRlcnM9YX1nZXQgZmlsdGVy''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJlZCYmdGhpcy5yZWdpc3RlcmVkLmZpbHRlcn1uZ09uRGVzdHJveSgpe3RoaXMuZGVsZXRlRmlsdGVyKCl9c2V0RmlsdGVyKGEpe3RoaXMuZGVsZXRlRmlsdGVyKCksYSBpbnN0YW5jZW9mIG9JP3RoaXMucmVnaXN0ZXJlZD1hOmEmJih0aGlzLnJlZ2lz''@;'; put 'put ''dGVyZWQ9dGhpcy5maWx0ZXJzLmFkZChhKSl9ZGVsZXRlRmlsdGVyKCl7dGhpcy5yZWdpc3RlcmVkJiYodGhpcy5yZWdpc3RlcmVkLnVucmVnaXN0ZXIoKSxkZWxldGUgdGhpcy5yZWdpc3RlcmVkKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQo''@;'; put 'put ''aTMpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bH0pLGx9KSgpLHZTPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhSXtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3N1cGVyKGEpLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlPWQsdGhpcy5wbGF0Zm9ybUlkPWgsdGhp''@;'; put 'put ''cy5lbGVtZW50UmVmPW0sdGhpcy5vcGVuQ2hhbmdlPW5ldyB4cighMSksdGhpcy5hcmlhRXhwYW5kZWQ9ITEsdGhpcy5wb3BvdmVySWQ9SHUoKSx0aGlzLnNtYXJ0UG9zaXRpb249e2F4aXM6U2MuVkVSVElDQUwsc2lkZTp4Zi5BRlRFUixhbmNob3I6TmEuRU5ELGNvbnRlbnQ6TmEuRU5EfSx0''@;'; put 'put ''aGlzLl9vcGVuPSExLHRoaXMuc3Vicz1bXSx0aGlzLnN1YnMucHVzaChkLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKF89Pnt0aGlzLm9wZW49Xyx0aGlzLmFyaWFFeHBhbmRlZD1ffSkpfWdldCBvcGVuKCl7cmV0dXJuIHRoaXMuX29wZW59c2V0IG9wZW4oYSl7dGhpcy5vcGVuIT09KGE9ISFhKSYm''@;'; put 'put ''KHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlLm9wZW49YSx0aGlzLm9wZW5DaGFuZ2UuZW1pdChhKSwhYSYmSGEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuX29wZW49YSl9c2V0IGN1c3RvbUZpbHRlcihhKXt0aGlzLnNldEZpbHRlcihh''@;'; put 'put ''KX1nZXQgYWN0aXZlKCl7cmV0dXJuISF0aGlzLmZpbHRlciYmdGhpcy5maWx0ZXIuaXNBY3RpdmUoKX1uZ09uQ2hhbmdlcygpe3RoaXMuc2V0VG9nZ2xlQnV0dG9uQXJpYUxhYmVsKCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vicy5mb3JFYWNoKGE9PmEudW5z''@;'; put 'put ''dWJzY3JpYmUoKSl9c2V0VG9nZ2xlQnV0dG9uQXJpYUxhYmVsKCl7Y29uc3QgZD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xvc2VzdCgiY2xyLWRnLWNvbHVtbiIpPy5xdWVyeVNlbGVjdG9yKCIuZGF0YWdyaWQtY29sdW1uLXRpdGxlIik/LnRleHRDb250ZW50LnRyaW0oKS50''@;'; put 'put ''b0xvY2FsZUxvd2VyQ2FzZSgpO3RoaXMudG9nZ2xlQnV0dG9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRhZ3JpZEZpbHRlckFyaWFMYWJlbCx7Q09MVU1OOmR8fCIifSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGkzKSxydChUYSkscnQoUWEpLHJ0KHFhKSxydChWaSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oeVJlLDUsVmkpLDImYSl7bGV0IGQ7''@;'; put 'put ''dWkoZD1jaSgpKSYmKGYuYW5jaG9yPWQuZmlyc3QpfX0saW5wdXRzOntvcGVuOlsiY2xyRGdGaWx0ZXJPcGVuIiwib3BlbiJdLGN1c3RvbUZpbHRlcjpbImNsckRnRmlsdGVyIiwiY3VzdG9tRmlsdGVyIl19LG91dHB1dHM6e29wZW5DaGFuZ2U6ImNsckRnRmlsdGVyT3BlbkNoYW5nZSJ9LGZl''@;'; put 'put ''YXR1cmVzOltyaShbe3Byb3ZpZGU6aUksdXNlRXhpc3Rpbmc6bH1dKSxybyxibF0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjQsdmFyczoxMyxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJBbmNob3IiLCIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwx''@;'; put 'put ''LCJkYXRhZ3JpZC1maWx0ZXItdG9nZ2xlIl0sWyJhbmNob3IiLCIiXSxbInNvbGlkIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLWZpbHRlciIsImNsckZvY3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDMsImlkIiw0LCJjbHJQb3BvdmVyQ29udGVudCIsImNsclBvcG92ZXJDb250ZW50QXQi''@;'; put 'put ''LCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiXSxbImNsckZvY3VzVHJhcCIsIiIsInJvbGUiLCJkaWFsb2ciLDEsImRhdGFncmlkLWZpbHRlciIsMywiaWQiXSxbMSwiZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdy''@;'; put 'put ''YXBwZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiLDEsImNsb3NlIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCkseWUoMCwiYnV0dG9uIiwwLDEpLHRuKDIsImNkcy1pY29uIiwyKSxDZSgp''@;'; put 'put ''LHR0KDMsYlJlLDUsMywiZGl2IiwzKSksMiZhJiYoZ3IoImRhdGFncmlkLWZpbHRlci1vcGVuIixmLm9wZW4pKCJkYXRhZ3JpZC1maWx0ZXJlZCIsZi5hY3RpdmUpLFJyKCJhcmlhLWxhYmVsIixmLnRvZ2dsZUJ1dHRvbkFyaWFMYWJlbCkoImFyaWEtZXhwYW5kZWQiLGYuYXJpYUV4cGFuZGVk''@;'; put 'put ''KSgiYXJpYS1jb250cm9scyIsZi5wb3BvdmVySWQpLFNlKDIpLFJyKCJzdGF0dXMiLGYuYWN0aXZlPyJpbmZvIjpudWxsKSgic2hhcGUiLGYuYWN0aXZlPyJmaWx0ZXItZ3JpZC1jaXJjbGUiOiJmaWx0ZXItZ3JpZCIpLFNlKDEpLFJlKCJjbHJQb3BvdmVyQ29udGVudCIsZi5vcGVuKSgiY2xy''@;'; put 'put ''UG9wb3ZlckNvbnRlbnRBdCIsZi5zbWFydFBvc2l0aW9uKSgiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwhMCkoImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSIsITApKX0sZGVwZW5kZW5jaWVzOltyUyxhUyxKYSxvUyxnNCxuc2VdLGVuY2Fwc3VsYXRpb246''@;'; put 'put ''Mn0pLGx9KSgpO2NsYXNzIHpVe2NvbnN0cnVjdG9yKGMpe3RoaXMucHJvcD1jLGMuaW5kZXhPZigiLiIpPj0wJiYodGhpcy5zcGxpdFByb3A9Yy5zcGxpdCgiLiIpKX1nZXRQcm9wVmFsdWUoYyl7aWYodGhpcy5zcGxpdFByb3Ape2xldCBhPWM7Zm9yKGNvbnN0IGYgb2YgdGhpcy5zcGxpdFBy''@;'; put 'put ''b3Ape2lmKG51bGw9PT1hfHx0eXBlb2YgYT4idSJ8fHR5cGVvZiBhW2ZdPiJ1IilyZXR1cm47YT1hW2ZdfXJldHVybiBhfXJldHVybiBjW3RoaXMucHJvcF19fWNsYXNzIGxJe2NvbnN0cnVjdG9yKGMsYT0hMSl7dGhpcy5wcm9wPWMsdGhpcy5leGFjdD1hLHRoaXMubmVzdGVkUHJvcD1uZXcg''@;'; put 'put ''elUoYyl9YWNjZXB0cyhjLGEsZil7Y29uc3QgZD10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGMpO3JldHVybiEodm9pZCAwPT09ZHx8bnVsbCE9PWEmJigibnVtYmVyIiE9dHlwZW9mIGR8fGQ8YSl8fG51bGwhPT1mJiYoIm51bWJlciIhPXR5cGVvZiBkfHxkPmYpKX19Y2xhc3MgS2d7''@;'; put 'put ''Y29uc3RydWN0b3IoYyl7dGhpcy5maWx0ZXJGbj1jLHRoaXMuX2NoYW5nZXM9bmV3IHdlLHRoaXMuX2xvdz1udWxsLHRoaXMuX2hpZ2g9bnVsbH1nZXQgY2hhbmdlcygpe3JldHVybiB0aGlzLl9jaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpfWdldCB2YWx1ZSgpe3JldHVyblt0aGlzLl9sb3csdGhp''@;'; put 'put ''cy5faGlnaF19c2V0IHZhbHVlKGMpe2NvbnN0IGE9Y1swXSxmPWNbMV07KGEhPT10aGlzLl9sb3d8fGYhPT10aGlzLl9oaWdoKSYmKHRoaXMuX2xvdz1hLHRoaXMuX2hpZ2g9Zix0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2xvdyx0aGlzLl9oaWdoXSkpfWdldCBsb3coKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fbG93fXNldCBsb3coYyl7YyE9PXRoaXMuX2xvdyYmKHRoaXMuX2xvdz1jLHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fbG93LHRoaXMuX2hpZ2hdKSl9Z2V0IGhpZ2goKXtyZXR1cm4gdGhpcy5faGlnaH1zZXQgaGlnaChjKXtjIT09dGhpcy5faGlnaCYmKHRoaXMuX2hpZ2g9Yyx0aGlz''@;'; put 'put ''Ll9jaGFuZ2VzLm5leHQoW3RoaXMuX2xvdyx0aGlzLl9oaWdoXSkpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgbEk/e3Byb3BlcnR5OnRoaXMuZmlsdGVyRm4ucHJvcCxsb3c6dGhpcy5fbG93LGhpZ2g6dGhpcy5faGlnaH06dGhpc31pc0FjdGl2ZSgpe3Jl''@;'; put 'put ''dHVybiBudWxsIT09dGhpcy5fbG93fHxudWxsIT09dGhpcy5oaWdofWFjY2VwdHMoYyl7cmV0dXJuIHRoaXMuZmlsdGVyRm4uYWNjZXB0cyhjLHRoaXMuX2xvdyx0aGlzLl9oaWdoKX1lcXVhbHMoYyl7cmV0dXJuIGMgaW5zdGFuY2VvZiBLZyYmKGMuZmlsdGVyRm4gaW5zdGFuY2VvZiBsST90''@;'; put 'put ''aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgbEkmJmMuZmlsdGVyRm4ucHJvcD09PXRoaXMuZmlsdGVyRm4ucHJvcCYmYy5sb3c9PT10aGlzLl9sb3cmJmMuaGlnaD09PXRoaXMuX2hpZ2g6Yz09PXRoaXMpfX1sZXQgUnNlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhSXtjb25zdHJ1Y3RvcihhLGYs''@;'; put 'put ''ZCxoLG0pe3N1cGVyKGEpLHRoaXMuZG9tQWRhcHRlcj1mLHRoaXMuY29tbW9uU3RyaW5ncz1kLHRoaXMucG9wb3ZlclRvZ2dsZVNlcnZpY2U9aCx0aGlzLm5nWm9uZT1tLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2U9bmV3IHhyLHRoaXMub3Blbj0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W119Z2V0''@;'; put 'put ''IHZhbHVlKCl7cmV0dXJuW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXX1zZXQgdmFsdWUoYSl7dGhpcy5maWx0ZXImJkFycmF5LmlzQXJyYXkoYSk/YSYmKGFbMF0hPT10aGlzLmZpbHRlci5sb3d8fGFbMV0hPT10aGlzLmZpbHRlci5oaWdoKSYmKHRoaXMuZmlsdGVyLmxvdz0i''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGFbMF0/YVswXTpudWxsLHRoaXMuZmlsdGVyLmhpZ2g9Im51bWJlciI9PXR5cGVvZiBhWzFdP2FbMV06bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoYSkpOnRoaXMuaW5pdEZpbHRlclZhbHVlcz1hfXNldCBjdXN0b21OdW1lcmljRmlsdGVyKGEpe3Ro''@;'; put 'put ''aXMuc2V0RmlsdGVyKGEgaW5zdGFuY2VvZiBvST9hOm5ldyBLZyhhKSksdGhpcy5pbml0RmlsdGVyVmFsdWVzJiYodGhpcy52YWx1ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZXMsZGVsZXRlIHRoaXMuaW5pdEZpbHRlclZhbHVlcyl9Z2V0IG1heFBsYWNlaG9sZGVyVmFsdWUoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5tYXhQbGFjZWhvbGRlcnx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMubWF4VmFsdWV9Z2V0IG1pblBsYWNlaG9sZGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5taW5QbGFjZWhvbGRlcnx8dGhpcy5jb21tb25TdHJpbmdzLmtleXMubWluVmFsdWV9Z2V0IGxvdygpe3JldHVybiJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgdGhpcy5maWx0ZXIubG93JiZpc0Zpbml0ZSh0aGlzLmZpbHRlci5sb3cpP3RoaXMuZmlsdGVyLmxvdzpudWxsfXNldCBsb3coYSl7Im51bWJlciI9PXR5cGVvZiBhJiZhIT09dGhpcy5maWx0ZXIubG93Pyh0aGlzLmZpbHRlci5sb3c9YSx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVt''@;'; put 'put ''aXQoW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXSkpOiJudW1iZXIiIT10eXBlb2YgYSYmKHRoaXMuZmlsdGVyLmxvdz1udWxsLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSl9Z2V0IGhpZ2goKXtyZXR1cm4i''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHRoaXMuZmlsdGVyLmhpZ2gmJmlzRmluaXRlKHRoaXMuZmlsdGVyLmhpZ2gpP3RoaXMuZmlsdGVyLmhpZ2g6bnVsbH1zZXQgaGlnaChhKXsibnVtYmVyIj09dHlwZW9mIGEmJmEhPT10aGlzLmZpbHRlci5oaWdoPyh0aGlzLmZpbHRlci5oaWdoPWEsdGhpcy5maWx0''@;'; put 'put ''ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKToibnVtYmVyIiE9dHlwZW9mIGEmJih0aGlzLmZpbHRlci5oaWdoPW51bGwsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKX1u''@;'; put 'put ''Z0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnBvcG92ZXJUb2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLm9wZW49YSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+''@;'; put 'put ''e3RoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpfSl9KX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+e2EudW5zdWJzY3JpYmUoKX0pfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChpMykscnQoeDEpLHJ0KFRhKSxydChRYSkscnQoVW8pKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLW51bWVyaWMtZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmKE5vKF9SZSw1KSxO''@;'; put 'put ''byh2Uyw1KSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5pbnB1dD1kLmZpcnN0KSx1aShkPWNpKCkpJiYoZi5maWx0ZXJDb250YWluZXI9ZC5maXJzdCl9fSxpbnB1dHM6e21pblBsYWNlaG9sZGVyOlsiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJtaW5QbGFjZWhvbGRlciJdLG1heFBs''@;'; put 'put ''YWNlaG9sZGVyOlsiY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXIiLCJtYXhQbGFjZWhvbGRlciJdLHZhbHVlOlsiY2xyRmlsdGVyVmFsdWUiLCJ2YWx1ZSJdLGN1c3RvbU51bWVyaWNGaWx0ZXI6WyJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjdXN0b21OdW1lcmljRmlsdGVyIl19LG91dHB1dHM6e2Zp''@;'; put 'put ''bHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltyaShbe3Byb3ZpZGU6aUksdXNlRXhpc3Rpbmc6bH1dKSxyb10sZGVjbHM6Nix2YXJzOjgsY29uc3RzOltbMywiY2xyRGdGaWx0ZXIiLCJjbHJEZ0ZpbHRlck9wZW4iLCJjbHJEZ0ZpbHRlck9wZW5DaGFu''@;'; put 'put ''Z2UiXSxbInR5cGUiLCJudW1iZXIiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJuYW1lIiwibG93IiwxLCJkYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dCIsMywibmdNb2RlbCIsInBsYWNlaG9sZGVyIiwibmdNb2RlbENoYW5nZSJdLFsiaW5wdXRfbG93IiwiIl0sWzEsImRhdGFncmlkLWZp''@;'; put 'put ''bHRlci1pbnB1dC1zcGFjZXIiXSxbInR5cGUiLCJudW1iZXIiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJuYW1lIiwiaGlnaCIsMSwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXQiLDMsIm5nTW9kZWwiLCJwbGFjZWhvbGRlciIsIm5nTW9kZWxDaGFuZ2UiXSxbImlucHV0X2hpZ2giLCIi''@;'; put 'put ''XV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJjbHItZGctZmlsdGVyIiwwKSxFdCgiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vcGVuPWh9KSx5ZSgxLCJpbnB1dCIsMSwyKSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7cmV0''@;'; put 'put ''dXJuIGYubG93PWh9KSxDZSgpLHRuKDMsInNwYW4iLDMpLHllKDQsImlucHV0Iiw0LDUpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5oaWdoPWh9KSxDZSgpKCkpLDImYSYmKFJlKCJjbHJEZ0ZpbHRlciIsZi5yZWdpc3RlcmVkKSgiY2xyRGdGaWx0ZXJPcGVuIixm''@;'; put 'put ''Lm9wZW4pLFNlKDEpLFJlKCJuZ01vZGVsIixmLmxvdykoInBsYWNlaG9sZGVyIixmLm1pblBsYWNlaG9sZGVyVmFsdWUpLFJyKCJhcmlhLWxhYmVsIixmLm1pblBsYWNlaG9sZGVyVmFsdWUpLFNlKDMpLFJlKCJuZ01vZGVsIixmLmhpZ2gpKCJwbGFjZWhvbGRlciIsZi5tYXhQbGFjZWhvbGRl''@;'; put 'put ''clZhbHVlKSxScigiYXJpYS1sYWJlbCIsZi5tYXhQbGFjZWhvbGRlclZhbHVlKSl9LGRlcGVuZGVuY2llczpbdlMsVkQsaXMsV2EsemFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpO2NsYXNzIHNJe2NvbnN0cnVjdG9yKGMsYT0hMSl7dGhpcy5wcm9wPWMsdGhpcy5leGFjdD1hLHRoaXMubmVz''@;'; put 'put ''dGVkUHJvcD1uZXcgelUoYyl9YWNjZXB0cyhjLGEpe2NvbnN0IGY9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShjKTtyZXR1cm4hKHR5cGVvZiBmPiJ1IikmJih0aGlzLmV4YWN0PygiIitmKS50b0xvd2VyQ2FzZSgpPT09YTooIiIrZikudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEpPj0w''@;'; put 'put ''KX19Y2xhc3MgcWd7Y29uc3RydWN0b3IoYyl7dGhpcy5maWx0ZXJGbj1jLHRoaXMuX2NoYW5nZXM9bmV3IHdlLHRoaXMuX2xvd2VyQ2FzZVZhbHVlPSIiLHRoaXMuX3Jhd1ZhbHVlPSIifWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IGxvd2Vy''@;'; put 'put ''Q2FzZVZhbHVlKCl7cmV0dXJuIHRoaXMuX2xvd2VyQ2FzZVZhbHVlfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmZpbHRlckZuIGluc3RhbmNlb2Ygc0k/e3Byb3BlcnR5OnRoaXMuZmlsdGVyRm4ucHJvcCx2YWx1ZTp0aGlzLnZhbHVlfTp0aGlzfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl9y''@;'; put 'put ''YXdWYWx1ZX1zZXQgdmFsdWUoYyl7Y3x8KGM9IiIpLGMhPT10aGlzLl9yYXdWYWx1ZSYmKHRoaXMuX3Jhd1ZhbHVlPWMsdGhpcy5fbG93ZXJDYXNlVmFsdWU9Yy50b0xvd2VyQ2FzZSgpLnRyaW0oKSx0aGlzLl9jaGFuZ2VzLm5leHQoYykpfWlzQWN0aXZlKCl7cmV0dXJuISF0aGlzLnZhbHVl''@;'; put 'put ''fWFjY2VwdHMoYyl7cmV0dXJuIHRoaXMuZmlsdGVyRm4uYWNjZXB0cyhjLHRoaXMubG93ZXJDYXNlVmFsdWUpfWVxdWFscyhjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIHFnJiYoYy5maWx0ZXJGbiBpbnN0YW5jZW9mIHNJP3RoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiBzSSYmYy5maWx0ZXJGbi5w''@;'; put 'put ''cm9wPT09dGhpcy5maWx0ZXJGbi5wcm9wJiZjLnZhbHVlPT09dGhpcy52YWx1ZTpjPT09dGhpcyl9fWxldCBVVT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgYUl7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXtzdXBlcihhKSx0aGlzLmRvbUFkYXB0ZXI9Zix0aGlzLmNvbW1vblN0cmluZ3M9ZCx0aGlz''@;'; put 'put ''LnNtYXJ0VG9nZ2xlU2VydmljZT1oLHRoaXMubmdab25lPW0sdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZT1uZXcgeHIsdGhpcy5vcGVuPSExLHRoaXMuc3Vicz1bXX1zZXQgY3VzdG9tU3RyaW5nRmlsdGVyKGEpe3RoaXMuc2V0RmlsdGVyKGEgaW5zdGFuY2VvZiBvST9hOm5ldyBxZyhhKSksdGhp''@;'; put 'put ''cy5pbml0RmlsdGVyVmFsdWUmJih0aGlzLnZhbHVlPXRoaXMuaW5pdEZpbHRlclZhbHVlLGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZmlsdGVyLnZhbHVlfXNldCB2YWx1ZShhKXt0aGlzLmZpbHRlciYmInN0cmluZyI9PXR5cGVvZiBhPyhh''@;'; put 'put ''fHwoYT0iIiksYSE9PXRoaXMuZmlsdGVyLnZhbHVlJiYodGhpcy5maWx0ZXIudmFsdWU9YSx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoYSkpKTp0aGlzLmluaXRGaWx0ZXJWYWx1ZT1hfWdldCBwbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMucGxhY2Vob2xkZXJ8fHRoaXMuY29t''@;'; put 'put ''bW9uU3RyaW5ncy5rZXlzLmZpbHRlckl0ZW1zfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vicy5wdXNoKHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLm9wZW49YSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3JlcXVlc3RB''@;'; put 'put ''bmltYXRpb25GcmFtZSgoKT0+e3RoaXMuZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpfSl9KX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoaTMpLHJ0KHgxKSxydChUYSkscnQoUWEpLHJ0KFVvKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1zdHJpbmctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmKE5vKHdS''@;'; put 'put ''ZSw1KSxObyh2Uyw1KSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5pbnB1dD1kLmZpcnN0KSx1aShkPWNpKCkpJiYoZi5maWx0ZXJDb250YWluZXI9ZC5maXJzdCl9fSxpbnB1dHM6e3BsYWNlaG9sZGVyOlsiY2xyRmlsdGVyUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciJdLGN1c3RvbVN0''@;'; put 'put ''cmluZ0ZpbHRlcjpbImNsckRnU3RyaW5nRmlsdGVyIiwiY3VzdG9tU3RyaW5nRmlsdGVyIl0sdmFsdWU6WyJjbHJGaWx0ZXJWYWx1ZSIsInZhbHVlIl19LG91dHB1dHM6e2ZpbHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltyaShbe3Byb3ZpZGU6aUks''@;'; put 'put ''dXNlRXhpc3Rpbmc6bH1dKSxyb10sZGVjbHM6Myx2YXJzOjUsY29uc3RzOltbMywiY2xyRGdGaWx0ZXIiLCJjbHJEZ0ZpbHRlck9wZW4iLCJjbHJEZ0ZpbHRlck9wZW5DaGFuZ2UiXSxbInR5cGUiLCJ0ZXh0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwibmFtZSIsInNlYXJjaCIsMSwiY2xyLWlu''@;'; put 'put ''cHV0IiwzLCJuZ01vZGVsIiwicGxhY2Vob2xkZXIiLCJuZ01vZGVsQ2hhbmdlIl0sWyJpbnB1dCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsImNsci1kZy1maWx0ZXIiLDApLEV0KCJjbHJEZ0ZpbHRlck9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9w''@;'; put 'put ''ZW49aH0pLHllKDEsImlucHV0IiwxLDIpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi52YWx1ZT1ofSksQ2UoKSgpKSwyJmEmJihSZSgiY2xyRGdGaWx0ZXIiLGYucmVnaXN0ZXJlZCkoImNsckRnRmlsdGVyT3BlbiIsZi5vcGVuKSxTZSgxKSxSZSgibmdNb2RlbCIs''@;'; put 'put ''Zi52YWx1ZSkoInBsYWNlaG9sZGVyIixmLnBsYWNlaG9sZGVyVmFsdWUpLFJyKCJhcmlhLWxhYmVsIixmLnBsYWNlaG9sZGVyVmFsdWUpKX0sZGVwZW5kZW5jaWVzOlt2UyxpcyxXYSx6YV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksYjQ9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEp2e31yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oZil7cmV0dXJuKGN8fChjPXhsKGwpKSkoZnx8bCl9fSgpLGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdXSxmZWF0dXJlczpbcm9dfSksbH0pKCksZzc9KCgpPT57''@;'; put 'put ''Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50PTB9Z2V0IGhhc0FjdGlvbmFibGVSb3coKXtyZXR1cm4gdGhpcy5hY3Rpb25hYmxlQ291bnQ+MH1yZWdpc3Rlcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50Kyt9dW5yZWdpc3Rlcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50''@;'; put 'put ''LS19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHY3PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBRdntjb25zdHJ1Y3RvcihhLGYsZCl7aWYoIWYpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJjbHItZGctcm93IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRhdGFncmlkIik7c3VwZXIoYSxmKSx0aGlzLnJvd0FjdGlvbnM9ZH1nZXQgZmxhdm9yKCl7cmV0dXJuIHRoaXMucm93QWN0aW9ucy5oYXNBY3Rpb25hYmxlUm93fX1yZXR1cm4gbC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChVbCkscnQoYjQsOCkscnQoZzcpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl0sWyJjbHItZGctcm93Il1dLGZlYXR1cmVzOltyb119KSxsfSkoKSxUZD0oKCk9PntjbGFzcyBs''@;'; put 'put ''e2NvbnN0cnVjdG9yKCl7dGhpcy50b2dnbGVTdGF0ZT0hMSx0aGlzLl9lbmFibGVkPSExLHRoaXMuX3N0YXRlPW5ldyBPZSh0aGlzLnRvZ2dsZVN0YXRlKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKGEpe3RoaXMuX2VuYWJsZWQ9YX1nZXQgc3RhdGUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jYWNoZX1nZXQgc3RhdGVDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCl9Z2V0IGlzT3Blbigpe3JldHVybiEwPT09dGhpcy50b2dnbGVTdGF0ZX1jbG9zZSgpe3RoaXMudG9nZ2xlU3RhdGU9ITEsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRv''@;'; put 'put ''Z2dsZVN0YXRlKSx0aGlzLmJ1dHRvbiYmKHRoaXMuYnV0dG9uLmZvY3VzKCksdGhpcy5idXR0b249bnVsbCl9b3BlbihhLGYpe3RoaXMuY2FjaGU9YSx0aGlzLmJ1dHRvbj1mLHRoaXMudG9nZ2xlU3RhdGU9ITAsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRvZ2dsZVN0YXRlKX10b2dnbGUoYSxm''@;'; put 'put ''KXt0aGlzLmlzUm93T3BlbihhKXx8IWE/dGhpcy5jbG9zZSgpOnRoaXMub3BlbihhLGYpfWlzUm93T3BlbihhKXtyZXR1cm4hKCF0aGlzLnRvZ2dsZVN0YXRlfHx0aGlzLmNhY2hlIT09YSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3''@;'; put 'put ''NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHk3PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5kZXRhaWxTZXJ2aWNlPWEsdGhpcy5leHBhbmRhYmxlQ291bnQ9MH1nZXQgaGFzRXhwYW5kYWJsZVJvdygpe3JldHVybiF0aGlzLmRldGFpbFNl''@;'; put 'put ''cnZpY2UuZW5hYmxlZCYmdGhpcy5leHBhbmRhYmxlQ291bnQ+MH1yZWdpc3Rlcigpe3RoaXMuZXhwYW5kYWJsZUNvdW50Kyt9dW5yZWdpc3Rlcigpe3RoaXMuZXhwYW5kYWJsZUNvdW50LS19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFRkKSl9''@;'; put 'put ''LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksYjc9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFF2e2NvbnN0cnVjdG9yKGEsZixkKXtpZighZil0aHJvdyBuZXcgRXJyb3IoImNsci1kZy1yb3cgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2Yg''@;'; put 'put ''YSBjbHItZGF0YWdyaWQiKTtzdXBlcihhLGYpLHRoaXMuZXhwYW5kYWJsZUNvdW50PWR9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmV4cGFuZGFibGVDb3VudC5oYXNFeHBhbmRhYmxlUm93fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChVbCks''@;'; put 'put ''cnQoYjQsOCkscnQoeTcpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlkIl0sWyJjbHItZGctcm93Il1dLGZlYXR1cmVzOltyb119KSxsfSkoKTtjbGFzcyB1SXtjb25zdHJ1Y3RvcihjKXt0aGlzLnByb3A9Yyx0aGlzLm5lc3RlZFByb3A9bmV3IHpV''@;'; put 'put ''KGMpfWNvbXBhcmUoYyxhKXtsZXQgZj10aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGMpLGQ9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShhKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGYmJihmPWYudG9Mb3dlckNhc2UoKSksInN0cmluZyI9PXR5cGVvZiBkJiYoZD1kLnRvTG93''@;'; put 'put ''ZXJDYXNlKCkpLHR5cGVvZiBmPiJ1Inx8bnVsbD09PWY/dHlwZW9mIGQ+InUifHxudWxsPT09ZD8wOjE6dHlwZW9mIGQ+InUifHxudWxsPT09ZHx8ZjxkPy0xOmY+ZD8xOjB9fXZhciBqMD1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLlVOU09SVEVEPTBdPSJVTlNPUlRFRCIsbFtsLkFTQz0xXT0i''@;'; put 'put ''QVNDIixsW2wuREVTQz0tMV09IkRFU0MiLGx9KGowfHx7fSk7bGV0IFpVPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9keW5hbWljPSExfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuY29sdW1uVmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1u''@;'; put 'put ''Z09uRGVzdHJveSgpe3RoaXMuY29sdW1uVmlldy5kZXN0cm95KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJkZy13cmFwcGVkLWNvbHVtbiJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24o''@;'; put 'put ''YSxmKXtpZigxJmEmJk5vKENSZSw1KSwyJmEpe2xldCBkO3VpKGQ9Y2koKSkmJihmLnRlbXBsYXRlUmVmPWQuZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJjb2x1bW5Qb3J0YWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEm''@;'; put 'put ''JihUaSgpLHR0KDAsU1JlLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMCxLdSkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxjST0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuc3RhdGVEZWJvdW5jZXI9YSx0aGlzLl9yZXZlcnNlPSExLHRoaXMuX2NoYW5nZT1uZXcgd2V9Z2V0''@;'; put 'put ''IGNvbXBhcmF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcGFyYXRvcn1zZXQgY29tcGFyYXRvcihhKXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5fY29tcGFyYXRvcj1hLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfWdldCBy''@;'; put 'put ''ZXZlcnNlKCl7cmV0dXJuIHRoaXMuX3JldmVyc2V9c2V0IHJldmVyc2UoYSl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX3JldmVyc2U9YSx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKX1nZXQgY2hhbmdlKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX10b2dnbGUoYSxmKXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0YXJ0KCksdGhpcy5jb21wYXJhdG9yPT09YT90aGlzLl9yZXZlcnNlPXR5cGVvZiBmPCJ1IiYmZnx8IXRoaXMuX3JldmVyc2U6KHRoaXMuX2NvbXBhcmF0b3I9YSx0aGlz''@;'; put 'put ''Ll9yZXZlcnNlPXR5cGVvZiBmPCJ1IiYmZiksdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9Y2xlYXIoKXt0aGlzLmNvbXBhcmF0b3I9bnVsbH1jb21wYXJlKGEsZil7cmV0dXJuKHRoaXMucmV2ZXJzZT8tMToxKSp0aGlzLmNvbXBhcmF0b3IuY29t''@;'; put 'put ''cGFyZShhLGYpfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0aGlzKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoZ1MpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTt2YXIgT2Q9''@;'; put 'put ''ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5BTElHTl9DT0xVTU5TPTBdPSJBTElHTl9DT0xVTU5TIixsW2wuQ0FMQ1VMQVRFX01PREVfT049MV09IkNBTENVTEFURV9NT0RFX09OIixsW2wuQ0FMQ1VMQVRFX01PREVfT0ZGPTJdPSJDQUxDVUxBVEVfTU9ERV9PRkYiLGxbbC5DTEVBUl9XSURUSFM9''@;'; put 'put ''M109IkNMRUFSX1dJRFRIUyIsbFtsLkNPTVBVVEVfQ09MVU1OX1dJRFRIUz00XT0iQ09NUFVURV9DT0xVTU5fV0lEVEhTIixsfShPZHx8e30pO2xldCBYZz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVuZGVyU3RlcD1uZXcgd2UsdGhpcy5hbHJlYWR5U2l6ZWQ9ITF9Z2V0''@;'; put 'put ''IHJlbmRlclN0ZXAoKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RlcC5hc09ic2VydmFibGUoKX1maWx0ZXJSZW5kZXJTdGVwcyhhKXtyZXR1cm4gdGhpcy5yZW5kZXJTdGVwLnBpcGUoSWwoZj0+YT09PWYpKX1yZXNpemUoKXt0aGlzLl9yZW5kZXJTdGVwLm5leHQoT2QuQ0FMQ1VMQVRFX01PREVf''@;'; put 'put ''T04pLHRoaXMuYWxyZWFkeVNpemVkJiZ0aGlzLl9yZW5kZXJTdGVwLm5leHQoT2QuQ0xFQVJfV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQoT2QuQ09NUFVURV9DT0xVTU5fV0lEVEhTKSx0aGlzLl9yZW5kZXJTdGVwLm5leHQoT2QuQUxJR05fQ09MVU1OUyksdGhpcy5hbHJlYWR5U2l6''@;'; put 'put ''ZWQ9ITAsdGhpcy5fcmVuZGVyU3RlcC5uZXh0KE9kLkNBTENVTEFURV9NT0RFX09GRil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLFlVPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuZWw9YSx0aGlzLmRvbUFkYXB0ZXI9Zix0aGlzLm9yZ2FuaXplcj1kLHRoaXMuX3Jlc2l6ZWRCeT0wfWdldCByZXNpemVkQnkoKXtyZXR1cm4gdGhpcy5fcmVzaXplZEJ5fWdldCBtaW5Db2x1bW5XaWR0aCgpe3JldHVybiB0aGlzLmRvbUFk''@;'; put 'put ''YXB0ZXIubWluV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50KXx8OTZ9Z2V0IG1heFJlc2l6ZVJhbmdlKCl7cmV0dXJuIHRoaXMud2lkdGhCZWZvcmVSZXNpemUtdGhpcy5taW5Db2x1bW5XaWR0aH1nZXQgd2lkdGhBZnRlclJlc2l6ZSgpe3JldHVybiB0aGlzLndpZHRoQmVmb3JlUmVzaXpl''@;'; put 'put ''K3RoaXMuX3Jlc2l6ZWRCeX1zdGFydFJlc2l6ZSgpe3RoaXMuX3Jlc2l6ZWRCeT0wLHRoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZT0hMCx0aGlzLndpZHRoQmVmb3JlUmVzaXplPXRoaXMuZG9tQWRhcHRlci5jbGllbnRSZWN0KHRoaXMuZWwubmF0aXZlRWxlbWVudCkud2lkdGh9ZW5kUmVz''@;'; put 'put ''aXplKCl7dGhpcy5vcmdhbml6ZXIucmVzaXplKCl9Y2FsY3VsYXRlUmVzaXplKGEpe2E8LXRoaXMubWF4UmVzaXplUmFuZ2U/KHRoaXMuX3Jlc2l6ZWRCeT0tdGhpcy5tYXhSZXNpemVSYW5nZSx0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9ITEpOih0aGlzLl9yZXNpemVkQnk9YSx0aGlz''@;'; put 'put ''LmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9ITApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihWaSksc3IoeDEpLHNyKFhnKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksV1U9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnBsYXRmb3JtSWQ9YX1nZXQgdGFibGVSZWYoKXtyZXR1cm4gdGhpcy5fdGFibGVSZWZ9c2V0IHRhYmxlUmVmKGEpe3RoaXMuX3RhYmxlUmVmPWF9c2V0IHRhYmxlKGEpe0hhKHRoaXMucGxhdGZvcm1JZCkmJmEubmF0aXZlRWxlbWVudCYmKHRoaXMu''@;'; put 'put ''dGFibGVSZWY9YS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kYXRhZ3JpZC10YWJsZSIpKX1nZXRDb2x1bW5EcmFnSGVpZ2h0KCl7cmV0dXJuIHRoaXMudGFibGVSZWY/YCR7dGhpcy50YWJsZVJlZi5jbGllbnRIZWlnaHR9cHhgOm51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKHFhKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksUHNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8pe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2U9YSx0aGlzLnJl''@;'; put 'put ''bmRlcmVyPWYsdGhpcy5uZ1pvbmU9ZCx0aGlzLnRhYmxlU2l6ZVNlcnZpY2U9aCx0aGlzLmNvbW1vblN0cmluZz1tLHRoaXMuZG9jdW1lbnQ9Xyx0aGlzLmNvbHVtblNlcGFyYXRvcklkPUh1KCksdGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duPSExLHRoaXMudW5saXN0ZW5lcnM9W119Z2V0''@;'; put 'put ''IGRlc2NyaXB0aW9uSWQoKXtyZXR1cm5gJHt0aGlzLmNvbHVtblNlcGFyYXRvcklkfS1hcmlhLWRlc2NyaWJlZGJ5YH1nZXQgcmVzaXplVHJhY2tlckVsKCl7cmV0dXJuIHRoaXMucmVzaXplVHJhY2tlclJlZi5uYXRpdmVFbGVtZW50fWdldCBjb2x1bW5IYW5kbGVFbCgpe3JldHVybiB0aGlz''@;'; put 'put ''LmNvbHVtbkhhbmRsZVJlZi5uYXRpdmVFbGVtZW50fW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy51bmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuY29sdW1uSGFuZGxlRWwsImtleWRvd24iLGE9Pnt0aGlz''@;'; put 'put ''LnNob3dUcmFja2VyT25GaXJzdEtleURvd24oYSksdGhpcy5tb3ZlVHJhY2tlck9uS2V5RG93bihhKX0pKSx0aGlzLnVubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5jb2x1bW5IYW5kbGVFbCwia2V5dXAiLGE9Pnt0aGlzLmhpZGVUcmFja2VyT25LZXlVcChhKX0p''@;'; put 'put ''KX0pfW5nT25EZXN0cm95KCl7dGhpcy51bmxpc3RlbmVycy5mb3JFYWNoKGE9PmEoKSl9c2hvd1RyYWNrZXIoKXt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnN0YXJ0UmVzaXplKCk7Y29uc3QgYT10aGlzLnRhYmxlU2l6ZVNlcnZpY2UuZ2V0Q29sdW1uRHJhZ0hlaWdodCgpO3RoaXMucmVu''@;'; put 'put ''ZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsImhlaWdodCIsYSksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZGlzcGxheSIsImJsb2NrIil9bW92ZVRyYWNrZXIoYSl7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5jYWxjdWxhdGVSZXNp''@;'; put 'put ''emUoYSksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwidHJhbnNmb3JtIixgdHJhbnNsYXRlWCgke3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5fXB4KWApLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCJjdXJz''@;'; put 'put ''b3IiLCJjb2wtcmVzaXplIiksdGhpcy5yZWRGbGFnVHJhY2tlcigpfWhpZGVUcmFja2VyKCl7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5lbmRSZXNpemUoKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJkaXNwbGF5Iiwibm9uZSIpLHRoaXMucmVuZGVy''@;'; put 'put ''ZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZVgoMHB4KSIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCJjdXJzb3IiLCJhdXRvIil9c2hvd1RyYWNrZXJPbkZpcnN0S2V5RG93bihhKXshdGhpcy5yZXNpemVT''@;'; put 'put ''dGFydGVkT25LZXlEb3duJiYodGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KGEpfHx0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50KGEpKSYmKHRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93bj0hMCx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJvbi1hcnJvdy1r''@;'; put 'put ''ZXktcmVzaXplIiksdGhpcy5zaG93VHJhY2tlcigpKX1tb3ZlVHJhY2tlck9uS2V5RG93bihhKXt0aGlzLmlzQXJyb3dMZWZ0S2V5RXZlbnQoYSk/dGhpcy5tb3ZlVHJhY2tlcih0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeS0xMik6dGhpcy5pc0Fycm93UmlnaHRLZXlFdmVu''@;'; put 'put ''dChhKSYmdGhpcy5tb3ZlVHJhY2tlcih0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeSsxMil9aGlkZVRyYWNrZXJPbktleVVwKGEpe3RoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93biYmKHRoaXMuaXNBcnJvd0xlZnRLZXlFdmVudChhKXx8dGhpcy5pc0Fycm93UmlnaHRLZXlF''@;'; put 'put ''dmVudChhKSkmJih0aGlzLnJlc2l6ZVN0YXJ0ZWRPbktleURvd249ITEsdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwib24tYXJyb3cta2V5LXJlc2l6ZSIpLHRoaXMuaGlkZVRyYWNrZXIoKSx0aGlzLmNvbHVtbkhhbmRsZUVsLmZvY3VzKCkpfXJlZEZs''@;'; put 'put ''YWdUcmFja2VyKCl7dGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlIT09dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlJiYodGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPXRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UuaXNXaXRoaW5NYXhSZXNpemVS''@;'; put 'put ''YW5nZSx0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U/dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZXhjZWVkZWQtbWF4Iik6dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZXhjZWVkZWQtbWF4IikpfWlzQXJyb3dM''@;'; put 'put ''ZWZ0S2V5RXZlbnQoYSl7cmV0dXJuIEVkKGEua2V5KT09PU1vLkFycm93TGVmdH1pc0Fycm93UmlnaHRLZXlFdmVudChhKXtyZXR1cm4gRWQoYS5rZXkpPT09TW8uQXJyb3dSaWdodH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoWVUpLHJ0KGpv''@;'; put 'put ''KSxydChVbykscnQoV1UpLHJ0KFRhKSxydChGYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uLXNlcGFyYXRvciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxmKXtpZigxJmEmJihObyhNUmUsNSksTm8oa1JlLDUpKSwyJmEpe2xldCBkO3VpKGQ9''@;'; put 'put ''Y2koKSkmJihmLnJlc2l6ZVRyYWNrZXJSZWY9ZC5maXJzdCksdWkoZD1jaSgpKSYmKGYuY29sdW1uSGFuZGxlUmVmPWQuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJkYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIiwhMCl9LGRlY2xzOjYs''@;'; put 'put ''dmFyczo1LGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwiY2xyRHJhZ2dhYmxlIiwiIiwxLCJkYXRhZ3JpZC1jb2x1bW4taGFuZGxlIiwzLCJjbHJHcm91cCIsImNsckRyYWdTdGFydCIsImNsckRyYWdNb3ZlIiwiY2xyRHJhZ0VuZCJdLFsiY29sdW1uSGFuZGxlIiwiIl0sWzEsImNsci1zci1v''@;'; put 'put ''bmx5Il0sWzEsImRhdGFncmlkLWNvbHVtbi1yZXNpemUtdHJhY2tlciJdLFsicmVzaXplVHJhY2tlciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsImJ1dHRvbiIsMCwxKSxFdCgiY2xyRHJhZ1N0YXJ0IixmdW5jdGlvbigpe3JldHVybiBmLnNob3dUcmFja2VyKCl9''@;'; put 'put ''KSgiY2xyRHJhZ01vdmUiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm1vdmVUcmFja2VyKGguZHJhZ1Bvc2l0aW9uLm1vdmVYKX0pKCJjbHJEcmFnRW5kIixmdW5jdGlvbigpe3JldHVybiBmLmhpZGVUcmFja2VyKCl9KSxDZSgpLHllKDIsInNwYW4iLDIpLFllKDMpLENlKCksdG4oNCwiZGl2Iiwz''@;'; put 'put ''LDQpKSwyJmEmJihSZSgiY2xyR3JvdXAiLGYuY29sdW1uU2VwYXJhdG9ySWQpLFJyKCJhcmlhLWxhYmVsIixmLmNvbW1vblN0cmluZy5rZXlzLmNvbHVtblNlcGFyYXRvckFyaWFMYWJlbCkoImFyaWEtZGVzY3JpYmVkYnkiLGYuZGVzY3JpcHRpb25JZCksU2UoMiksUnIoImlkIixmLmRlc2Ny''@;'; put 'put ''aXB0aW9uSWQpLFNlKDEpLHdyKCIgIixmLmNvbW1vblN0cmluZy5rZXlzLmNvbHVtblNlcGFyYXRvckRlc2NyaXB0aW9uLCIgIikpfSxkZXBlbmRlbmNpZXM6W2hzZV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksSmc9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGFJe2NvbnN0cnVjdG9yKGEsZixk''@;'; put 'put ''LGgsbSl7c3VwZXIoZiksdGhpcy5fc29ydD1hLHRoaXMudmNyPWQsdGhpcy5kZXRhaWxTZXJ2aWNlPWgsdGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1tLHRoaXMuc29ydE9yZGVyQ2hhbmdlPW5ldyB4cix0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyB4cix0aGlzLnNvcnRlZENoYW5nZT1uZXcg''@;'; put 'put ''eHIsdGhpcy5zaG93U2VwYXJhdG9yPSEwLHRoaXMuY3VzdG9tRmlsdGVyPSExLHRoaXMuX2NvbFR5cGU9InN0cmluZyIsdGhpcy5fc29ydE9yZGVyPWowLlVOU09SVEVELHRoaXMuX3NvcnRlZD0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5s''@;'; put 'put ''aXN0ZW5Gb3JTb3J0aW5nQ2hhbmdlcygpKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvckRldGFpbFBhbmVDaGFuZ2VzKCkpfWdldCBjb2xUeXBlKCl7cmV0dXJuIHRoaXMuX2NvbFR5cGV9c2V0IGNvbFR5cGUoYSl7dGhpcy5fY29sVHlwZT1hfWdldCBmaWVsZCgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9maWVsZH1zZXQgZmllbGQoYSl7InN0cmluZyI9PXR5cGVvZiBhJiYodGhpcy5fZmllbGQ9YSx0aGlzLl9zb3J0Qnl8fCh0aGlzLl9zb3J0Qnk9bmV3IHVJKGEpKSl9Z2V0IHNvcnRCeSgpe3JldHVybiB0aGlzLl9zb3J0Qnl9c2V0IHNvcnRCeShhKXsic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGE/dGhpcy5fc29ydEJ5PW5ldyB1SShhKTphP3RoaXMuX3NvcnRCeT1hOnRoaXMuZmllbGQ/dGhpcy5fc29ydEJ5PW5ldyB1SSh0aGlzLmZpZWxkKTpkZWxldGUgdGhpcy5fc29ydEJ5fWdldCBzb3J0T3JkZXIoKXtyZXR1cm4gdGhpcy5fc29ydE9yZGVyfXNldCBzb3J0T3JkZXIoYSl7''@;'; put 'put ''aWYoISh0eXBlb2YgYT4idSIpJiZ0aGlzLl9zb3J0T3JkZXIhPT1hKXN3aXRjaChhKXtkZWZhdWx0OmNhc2UgajAuVU5TT1JURUQ6dGhpcy5fc29ydC5jbGVhcigpO2JyZWFrO2Nhc2UgajAuQVNDOnRoaXMuc29ydCghMSk7YnJlYWs7Y2FzZSBqMC5ERVNDOnRoaXMuc29ydCghMCl9fWdldCBz''@;'; put 'put ''b3J0ZWQoKXtyZXR1cm4gdGhpcy5fc29ydGVkfXNldCBzb3J0ZWQoYSl7IWEmJnRoaXMuc29ydGVkPyh0aGlzLl9zb3J0ZWQ9ITEsdGhpcy5fc29ydC5jbGVhcigpKTphJiYhdGhpcy5zb3J0ZWQmJnRoaXMuc29ydCgpfXNldCB1cGRhdGVGaWx0ZXJWYWx1ZShhKXt0aGlzLmZpbHRlcj90aGlz''@;'; put 'put ''LmZpbHRlciBpbnN0YW5jZW9mIHFnPygoIWF8fCJzdHJpbmciIT10eXBlb2YgYSkmJihhPSIiKSxhIT09dGhpcy5maWx0ZXIudmFsdWUmJih0aGlzLmZpbHRlci52YWx1ZT1hKSk6dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBLZyYmKCghYXx8IShhIGluc3RhbmNlb2YgQXJyYXkpKSYmKGE9W251''@;'; put 'put ''bGwsbnVsbF0pLDI9PT1hLmxlbmd0aCYmKGFbMF0hPT10aGlzLmZpbHRlci52YWx1ZVswXXx8YVsxXSE9PXRoaXMuZmlsdGVyLnZhbHVlWzFdKSYmKHRoaXMuZmlsdGVyLnZhbHVlPWEpKTp0aGlzLmluaXRGaWx0ZXJWYWx1ZT1hfXNldCBwcm9qZWN0ZWRGaWx0ZXIoYSl7YSYmKHRoaXMuZGVs''@;'; put 'put ''ZXRlRmlsdGVyKCksdGhpcy5jdXN0b21GaWx0ZXI9ITApfWdldCBzb3J0YWJsZSgpe3JldHVybiEhdGhpcy5fc29ydEJ5fWdldCBhcmlhU29ydCgpe3N3aXRjaCh0aGlzLl9zb3J0T3JkZXIpe2RlZmF1bHQ6Y2FzZSBqMC5VTlNPUlRFRDpyZXR1cm4ibm9uZSI7Y2FzZSBqMC5BU0M6cmV0dXJu''@;'; put 'put ''ImFzY2VuZGluZyI7Y2FzZSBqMC5ERVNDOnJldHVybiJkZXNjZW5kaW5nIn19Z2V0IHNvcnREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fc29ydERpcmVjdGlvbn1nZXQgZmlsdGVyVmFsdWUoKXtyZXR1cm4gdGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBxZ3x8dGhpcy5maWx0ZXIgaW5zdGFuY2Vv''@;'; put 'put ''ZiBLZz90aGlzLmZpbHRlci52YWx1ZTpudWxsfXNldCBmaWx0ZXJWYWx1ZShhKXsodGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBxZ3x8dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBLZykmJih0aGlzLnVwZGF0ZUZpbHRlclZhbHVlPWEsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmls''@;'; put 'put ''dGVyLnZhbHVlKSl9Z2V0IF92aWV3KCl7cmV0dXJuIHRoaXMud3JhcHBlZEluamVjdG9yLmdldChaVSx0aGlzLnZjcikuY29sdW1uVmlld31uZ09uSW5pdCgpe3RoaXMud3JhcHBlZEluamVjdG9yPW5ldyBlSShaVSx0aGlzLnZjcil9bmdPbkNoYW5nZXMoYSl7YS5jb2xUeXBlJiZhLmNvbFR5''@;'; put 'put ''cGUuY3VycmVudFZhbHVlJiZhLmNvbFR5cGUuY3VycmVudFZhbHVlIT09YS5jb2xUeXBlLnByZXZpb3VzVmFsdWUmJiF0aGlzLmN1c3RvbUZpbHRlciYmIXRoaXMuZmlsdGVyJiZ0aGlzLmNvbFR5cGUmJnRoaXMuZmllbGQmJnRoaXMuc2V0dXBEZWZhdWx0RmlsdGVyKHRoaXMuZmllbGQsdGhp''@;'; put 'put ''cy5jb2xUeXBlKSxhLmZpZWxkJiZhLmZpZWxkLmN1cnJlbnRWYWx1ZSYmYS5maWVsZC5jdXJyZW50VmFsdWUhPT1hLmZpZWxkLnByZXZpb3VzVmFsdWUmJiF0aGlzLmN1c3RvbUZpbHRlciYmdGhpcy5jb2xUeXBlJiZ0aGlzLnNldHVwRGVmYXVsdEZpbHRlcih0aGlzLmZpZWxkLHRoaXMuY29s''@;'; put 'put ''VHlwZSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9c29ydChhKXt0aGlzLnNvcnRhYmxlJiYodGhpcy5fc29ydC50b2dnbGUodGhpcy5fc29ydEJ5LGEpLHRoaXMuX3NvcnRPcmRlcj10aGlz''@;'; put 'put ''Ll9zb3J0LnJldmVyc2U/ajAuREVTQzpqMC5BU0MsdGhpcy5fc29ydERpcmVjdGlvbj10aGlzLl9zb3J0T3JkZXI9PT1qMC5ERVNDPyJkb3duIjoidXAiLHRoaXMuc29ydEljb249dGhpcy5fc29ydE9yZGVyPT09ajAuREVTQz8iYXJyb3cgZG93biI6ImFycm93Iix0aGlzLnNvcnRPcmRlckNo''@;'; put 'put ''YW5nZS5lbWl0KHRoaXMuX3NvcnRPcmRlciksdGhpcy5fc29ydGVkPSEwLHRoaXMuc29ydGVkQ2hhbmdlLmVtaXQoITApKX1saXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpe3JldHVybiB0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGVDaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLnNob3dTZXBh''@;'; put 'put ''cmF0b3IhPT0hYSYmKHRoaXMuc2hvd1NlcGFyYXRvcj0hYSx0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX0pfWxpc3RlbkZvclNvcnRpbmdDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX3NvcnQuY2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5t''@;'; put 'put ''YXJrRm9yQ2hlY2soKSx0aGlzLnNvcnRPcmRlciE9PWowLlVOU09SVEVEJiZhLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0T3JkZXI9ajAuVU5TT1JURUQsdGhpcy5zb3J0T3JkZXJDaGFuZ2UuZW1pdCh0aGlzLl9zb3J0T3JkZXIpLHRoaXMuc29ydEljb249bnVsbCx0''@;'; put 'put ''aGlzLl9zb3J0RGlyZWN0aW9uPW51bGwpLHRoaXMuc29ydGVkJiZhLmNvbXBhcmF0b3IhPT10aGlzLl9zb3J0QnkmJih0aGlzLl9zb3J0ZWQ9ITEsdGhpcy5zb3J0ZWRDaGFuZ2UuZW1pdCghMSkpfSl9c2V0dXBEZWZhdWx0RmlsdGVyKGEsZil7Im51bWJlciI9PT1mP3RoaXMuc2V0RmlsdGVy''@;'; put 'put ''KG5ldyBLZyhuZXcgbEkoYSkpKToic3RyaW5nIj09PWYmJnRoaXMuc2V0RmlsdGVyKG5ldyBxZyhuZXcgc0koYSkpKSx0aGlzLmZpbHRlciYmdGhpcy5pbml0RmlsdGVyVmFsdWUmJih0aGlzLnVwZGF0ZUZpbHRlclZhbHVlPXRoaXMuaW5pdEZpbHRlclZhbHVlLGRlbGV0ZSB0aGlzLmluaXRG''@;'; put 'put ''aWx0ZXJWYWx1ZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGNJKSxydChpMykscnQoZmEpLHJ0KFRkKSxydChVbCkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uIl1dLGNvbnRlbnRRdWVyaWVz''@;'; put 'put ''OmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsaUksNSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5wcm9qZWN0ZWRGaWx0ZXI9aC5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEm''@;'; put 'put ''JihScigiYXJpYS1zb3J0IixmLmFyaWFTb3J0KSxncigiZGF0YWdyaWQtY29sdW1uIiwhMCkpfSxpbnB1dHM6e2ZpbHRlclN0cmluZ1BsYWNlaG9sZGVyOlsiY2xyRmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIiLCJmaWx0ZXJTdHJpbmdQbGFjZWhvbGRlciJdLGZpbHRlck51bWJlck1heFBsYWNl''@;'; put 'put ''aG9sZGVyOlsiY2xyRmlsdGVyTnVtYmVyTWF4UGxhY2Vob2xkZXIiLCJmaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlciJdLGZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyOlsiY2xyRmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXIiLCJmaWx0ZXJOdW1iZXJNaW5QbGFjZWhvbGRlciJdLGNvbFR5''@;'; put 'put ''cGU6WyJjbHJEZ0NvbFR5cGUiLCJjb2xUeXBlIl0sZmllbGQ6WyJjbHJEZ0ZpZWxkIiwiZmllbGQiXSxzb3J0Qnk6WyJjbHJEZ1NvcnRCeSIsInNvcnRCeSJdLHNvcnRPcmRlcjpbImNsckRnU29ydE9yZGVyIiwic29ydE9yZGVyIl0sc29ydGVkOlsiY2xyRGdTb3J0ZWQiLCJzb3J0ZWQiXSx1''@;'; put 'put ''cGRhdGVGaWx0ZXJWYWx1ZTpbImNsckZpbHRlclZhbHVlIiwidXBkYXRlRmlsdGVyVmFsdWUiXX0sb3V0cHV0czp7c29ydE9yZGVyQ2hhbmdlOiJjbHJEZ1NvcnRPcmRlckNoYW5nZSIsZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZhbHVlQ2hhbmdlIixzb3J0ZWRDaGFuZ2U6ImNsckRn''@;'; put 'put ''U29ydGVkQ2hhbmdlIn0sZmVhdHVyZXM6W3JpKFt0NyxRMixRYV0pLHJvLGJsXSxuZ0NvbnRlbnRTZWxlY3RvcnM6RlJlLGRlY2xzOjksdmFyczo1LGNvbnN0czpbWzEsImRhdGFncmlkLWNvbHVtbi1mbGV4Il0sWyJjbGFzcyIsImRhdGFncmlkLWNvbHVtbi10aXRsZSIsInR5cGUiLCJidXR0''@;'; put 'put ''b24iLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsckZpbHRlclBsYWNlaG9sZGVyIiwiY2xyRGdTdHJpbmdGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwiY2xyRmlsdGVyTWluUGxh''@;'; put 'put ''Y2Vob2xkZXIiLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSIsImNsckZpbHRlclZhbHVlQ2hhbmdlIiw0LCJuZ0lmIl0sWyJjb2x1bW5UaXRsZSIsIiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1''@;'; put 'put ''dHRvbiIsMSwiZGF0YWdyaWQtY29sdW1uLXRpdGxlIiwzLCJjbGljayJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJzaGFwZSIsImFycm93IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwiY2xhc3MiLCJzb3J0LWljb24iLDQsIm5nSWYiXSxbInNoYXBlIiwiYXJyb3ciLCJhcmlhLWhpZGRlbiIs''@;'; put 'put ''InRydWUiLDEsInNvcnQtaWNvbiJdLFszLCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsImNsckRnU3RyaW5nRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJdLFszLCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsImNsckZpbHRlck1pblBsYWNlaG9sZGVyIiwi''@;'; put 'put ''Y2xyRGdOdW1lcmljRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaShQUmUpLHllKDAsImRpdiIsMCksdHQoMSxBUmUsMywyLCJidXR0b24iLDEp''@;'; put 'put ''LERyKDIpLHR0KDMsVFJlLDEsMywiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDIpLHR0KDQsT1JlLDEsNCwiY2xyLWRnLW51bWVyaWMtZmlsdGVyIiwzKSx0dCg1LERSZSwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDQsS3UpLHR0KDcsUlJlLDIsMSwic3BhbiIsNSksdHQoOCxMUmUsMSwwLCJjbHIt''@;'; put 'put ''ZGctY29sdW1uLXNlcGFyYXRvciIsNiksQ2UoKSksMiZhJiYoU2UoMSksUmUoIm5nSWYiLGYuc29ydGFibGUpLFNlKDIpLFJlKCJuZ0lmIixmLmZpZWxkJiYhZi5jdXN0b21GaWx0ZXImJiJzdHJpbmciPT1mLmNvbFR5cGUpLFNlKDEpLFJlKCJuZ0lmIixmLmZpZWxkJiYhZi5jdXN0b21GaWx0''@;'; put 'put ''ZXImJiJudW1iZXIiPT1mLmNvbFR5cGUpLFNlKDMpLFJlKCJuZ0lmIiwhZi5zb3J0YWJsZSksU2UoMSksUmUoIm5nSWYiLGYuc2hvd1NlcGFyYXRvcikpfSxkZXBlbmRlbmNpZXM6W1VVLFJzZSxQc2UsJGkseWQsSmFdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGx9KSgp''@;'; put 'put ''LF80PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuX2ZpbHRlcnM9YSx0aGlzLl9zb3J0PWYsdGhpcy5fcGFnZT1kLHRoaXMubG9hZGluZz0hMSx0aGlzLl9zbWFydD0hMSx0aGlzLl9kaXNwbGF5ZWQ9W10sdGhpcy5fY2hhbmdlPW5ldyB3ZSx0aGlzLl9hbGxDaGFuZ2Vz''@;'; put 'put ''PW5ldyB3ZSx0aGlzLml0ZXJhdG9yVHJhY2tCeT0oaCxtKT0+bX1nZXQgc21hcnQoKXtyZXR1cm4gdGhpcy5fc21hcnR9Z2V0IGFsbCgpe3JldHVybiB0aGlzLl9hbGx9c2V0IGFsbChhKXt0aGlzLl9hbGw9YSx0aGlzLmVtaXRBbGxDaGFuZ2VzKGEpLHRoaXMuc21hcnQ/dGhpcy5fZmlsdGVy''@;'; put 'put ''SXRlbXMoKToodGhpcy5fZGlzcGxheWVkPWEsdGhpcy5lbWl0Q2hhbmdlKCkpfWdldCBkaXNwbGF5ZWQoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkfWdldCBjaGFuZ2UoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBhbGxDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2Fs''@;'; put 'put ''bENoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IHVuaW5pdGlhbGl6ZWQoKXtyZXR1cm4hdGhpcy5fYWxsfWRlc3Ryb3koKXt0aGlzLl9maWx0ZXJzU3ViJiZ0aGlzLl9maWx0ZXJzU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fc29ydFN1YiYmdGhpcy5fc29ydFN1Yi51bnN1YnNjcmliZSgpLHRo''@;'; put 'put ''aXMuX3BhZ2VTdWImJnRoaXMuX3BhZ2VTdWIudW5zdWJzY3JpYmUoKX1zbWFydGVuVXAoKXt0aGlzLl9zbWFydD0hMCx0aGlzLl9maWx0ZXJzU3ViPXRoaXMuX2ZpbHRlcnMuY2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5fZmlsdGVySXRlbXMoKSksdGhpcy5fc29ydFN1Yj10aGlzLl9zb3J0''@;'; put 'put ''LmNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zb3J0LmNvbXBhcmF0b3I/dGhpcy5fc29ydEl0ZW1zKCk6dGhpcy5fZmlsdGVySXRlbXMoKX0pLHRoaXMuX3BhZ2VTdWI9dGhpcy5fcGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT50aGlzLl9jaGFuZ2VQYWdlKCkpfXJlZnJlc2goKXt0aGlz''@;'; put 'put ''LnNtYXJ0JiZ0aGlzLl9maWx0ZXJJdGVtcygpfWNhblRyYWNrQnkoKXtyZXR1cm4hIXRoaXMuZGF0YWdyaWRUcmFja0J5fHxBcnJheS5pc0FycmF5KHRoaXMuYWxsKX10cmFja0J5KGEsZil7aWYodGhpcy5kYXRhZ3JpZFRyYWNrQnkpcmV0dXJuIHRoaXMuZGF0YWdyaWRUcmFja0J5KGEpO2lm''@;'; put 'put ''KEFycmF5LmlzQXJyYXkodGhpcy5hbGwpKXJldHVybiBmPWY/P3RoaXMuYWxsLmluZGV4T2YoYSksdGhpcy5pdGVyYXRvclRyYWNrQnkoZixhKTt0aHJvdyBuZXcgRXJyb3IoImltcHJvcGVyIGNhbGwgdG8gSXRlbXMjdHJhY2tCeSIpfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0''@;'; put 'put ''aGlzLmRpc3BsYXllZCl9ZW1pdEFsbENoYW5nZXMoYSl7dGhpcy5fYWxsQ2hhbmdlcy5uZXh0KGEpfV9maWx0ZXJJdGVtcygpe3RoaXMudW5pbml0aWFsaXplZHx8KHRoaXMuX2ZpbHRlcmVkPXRoaXMuX2ZpbHRlcnMuaGFzQWN0aXZlRmlsdGVycygpP3RoaXMuX2FsbC5maWx0ZXIoYT0+dGhp''@;'; put 'put ''cy5fZmlsdGVycy5hY2NlcHRzKGEpKTp0aGlzLl9hbGwuc2xpY2UoKSx0aGlzLl9wYWdlLnRvdGFsSXRlbXM9dGhpcy5fZmlsdGVyZWQubGVuZ3RoLHRoaXMuX3NvcnRJdGVtcygpKX1fc29ydEl0ZW1zKCl7dGhpcy51bmluaXRpYWxpemVkfHwodGhpcy5fc29ydC5jb21wYXJhdG9yJiZ0aGlz''@;'; put 'put ''Ll9maWx0ZXJlZC5zb3J0KChhLGYpPT50aGlzLl9zb3J0LmNvbXBhcmUoYSxmKSksdGhpcy5fY2hhbmdlUGFnZSgpKX1fY2hhbmdlUGFnZSgpe3RoaXMudW5pbml0aWFsaXplZHx8dGhpcy5fcGFnZS5hY3RpdmF0ZWQmJjA9PT10aGlzLl9wYWdlLnNpemV8fCh0aGlzLl9kaXNwbGF5ZWQ9dGhp''@;'; put 'put ''cy5fcGFnZS5zaXplPjA/dGhpcy5fZmlsdGVyZWQuc2xpY2UodGhpcy5fcGFnZS5maXJzdEl0ZW0sdGhpcy5fcGFnZS5sYXN0SXRlbSsxKTp0aGlzLl9maWx0ZXJlZCx0aGlzLmVtaXRDaGFuZ2UoKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNy''@;'; put 'put ''KGkzKSxzcihjSSksc3IoeTQpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxfNz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMudGVtcGxhdGU9YSx0aGlzLmRpZmZlcnM9Zix0aGlzLml0ZW1zPWQsdGhpcy52Y3I9''@;'; put 'put ''aCx0aGlzLmRpZmZlcj1udWxsLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSxkLnNtYXJ0ZW5VcCgpLHRoaXMuaXRlcmFibGVQcm94eT1uZXcgUmEodGhpcy52Y3IsdGhpcy50ZW1wbGF0ZSx0aGlzLmRpZmZlcnMpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGQuY2hhbmdlLnN1YnNjcmliZShtPT57''@;'; put 'put ''dGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yT2Y9bSx0aGlzLml0ZXJhYmxlUHJveHkubmdEb0NoZWNrKCl9KSl9c2V0IHJhd0l0ZW1zKGEpe3RoaXMuX3Jhd0l0ZW1zPWF8fFtdfXNldCB0cmFja0J5KGEpe3RoaXMuaXRlbXMuaXRlcmF0b3JUcmFja0J5PWEsdGhpcy5pdGVyYWJsZVByb3h5Lm5n''@;'; put 'put ''Rm9yVHJhY2tCeT1hfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGEsZil7cmV0dXJuITB9bmdEb0NoZWNrKCl7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9yYXdJdGVtcykuY3JlYXRlKHRoaXMuaXRlcmFibGVQcm94eS5uZ0ZvclRyYWNr''@;'; put 'put ''QnkpKSx0aGlzLmRpZmZlciYmdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9yYXdJdGVtcykmJih0aGlzLml0ZW1zLmFsbD10aGlzLl9yYXdJdGVtcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh6bCkscnQoYnYpLHJ0KF80KSxydChmYSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJEZ0l0ZW1zIiwiIiwiY2xyRGdJdGVtc09mIiwiIl1dLGlucHV0czp7cmF3SXRlbXM6WyJjbHJEZ0l0ZW1zT2Yi''@;'; put 'put ''LCJyYXdJdGVtcyJdLHRyYWNrQnk6WyJjbHJEZ0l0ZW1zVHJhY2tCeSIsInRyYWNrQnkiXX19KSxsfSkoKSxHVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuaXRlbXM9YX1nZXQgZW1wdHlEYXRhZ3JpZCgpe3JldHVybiEodGhpcy5pdGVtcy5sb2FkaW5nfHx0aGlzLml0ZW1z''@;'; put 'put ''LmRpc3BsYXllZCYmMCE9PXRoaXMuaXRlbXMuZGlzcGxheWVkLmxlbmd0aCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KF80KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1wbGFjZWhvbGRlciJdXSxob3N0''@;'; put 'put ''VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lciIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbInJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXBsYWNlaG9sZGVyIl0s''@;'; put 'put ''WyJjbGFzcyIsImRhdGFncmlkLXBsYWNlaG9sZGVyLWltYWdlIiw0LCJuZ0lmIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRlbnQiXSxbNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1wbGFjZWhvbGRlci1pbWFnZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihh''@;'; put 'put ''LGYpezEmYSYmKFRpKCkseWUoMCwiZGl2IiwwKSx0dCgxLEhSZSwxLDAsImRpdiIsMSkseWUoMiwic3BhbiIsMiksdHQoMyxOUmUsMSwwLCJuZy1jb250ZW50IiwzKSxDZSgpKCkpLDImYSYmKGdyKCJkYXRhZ3JpZC1lbXB0eSIsZi5lbXB0eURhdGFncmlkKSxTZSgxKSxSZSgibmdJZiIsZi5l''@;'; put 'put ''bXB0eURhdGFncmlkKSxTZSgyKSxSZSgibmdJZiIsZi5lbXB0eURhdGFncmlkKSl9LGRlcGVuZGVuY2llczpbJGldLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLCRVPSgoKT0+e2NsYXNzIGx7c2V0IHRyaWdnZXJFbChhKXt0aGlzLl90cmlnZ2VyRWw9YX1mb2N1c1RyaWdnZXIoKXt0aGlzLl90''@;'; put 'put ''cmlnZ2VyRWwmJnRoaXMuX3RyaWdnZXJFbC5mb2N1cygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxLVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9y''@;'; put 'put ''KCl7dGhpcy5faWQ9bmV3IHdlfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZC5hc09ic2VydmFibGUoKX1zZXRJZChhKXt0aGlzLl9pZC5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rv''@;'; put 'put ''cnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxmST0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8pe3RoaXMudG9nZ2xlU2VydmljZT1hLHRoaXMuZWw9Zix0aGlzLmNvbW1vblN0cmluZ3M9ZCx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPWgsdGhpcy5zaWducG9zdEZvY3VzTWFu''@;'; put 'put ''YWdlcj1tLHRoaXMucGxhdGZvcm1JZD1PLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLmRvY3VtZW50PV99bmdPbkluaXQoKXt0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyLnRyaWdnZXJFbD10aGlzLmVsLm5hdGl2ZUVsZW1lbnQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b2dn''@;'; put 'put ''bGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLmFyaWFFeHBhbmRlZD1hO2NvbnN0IGY9dGhpcy5pc09wZW47dGhpcy5pc09wZW49YSwhdGhpcy5pc09wZW4mJmYmJnRoaXMuZm9jdXNPbkNsb3NlKCl9KSx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlLmlkLnN1YnNjcmliZShh''@;'; put 'put ''PT50aGlzLmFyaWFDb250cm9sPWEpKSx0aGlzLmFkZERlZmF1bHRBcmlhTGFiZWwodGhpcy5lbC5uYXRpdmVFbGVtZW50KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9b25TaWducG9zdFRyaWdnZXJDbGljayhhKXt0aGlzLnRv''@;'; put 'put ''Z2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGEpfWFkZERlZmF1bHRBcmlhTGFiZWwoYSl7YS5oYXNBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKXx8YS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNpZ25wb3N0VG9nZ2xlKX1mb2N1c09uQ2xvc2Uo''@;'; put 'put ''KXtIYSh0aGlzLnBsYXRmb3JtSWQpJiYhdGhpcy5pc09wZW4mJnRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuZG9jdW1lbnQuYm9keSYmdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlci5mb2N1c1RyaWdnZXIoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBuZXcoYXx8bCkocnQoUWEpLHJ0KFZpKSxydChUYSkscnQoS1UpLHJ0KCRVKSxydChGYSkscnQocWEpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIl1dLGhvc3RBdHRyczpbMSwic2lnbnBvc3QtdHJpZ2dlciJdLGhvc3RW''@;'; put 'put ''YXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uU2lnbnBvc3RUcmlnZ2VyQ2xpY2soaCl9KSwyJmEmJihScigiYXJpYS1leHBhbmRlZCIsZi5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixmLmFyaWFDb250''@;'; put 'put ''cm9sKSxncigiYWN0aXZlIixmLmlzT3BlbikpfX0pLGx9KSgpLHFVPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5jb21tb25TdHJpbmdzPWEsdGhpcy51c2VDdXN0b21UcmlnZ2VyPSExfXNldCBjdXN0b21UcmlnZ2VyKGEpe3RoaXMudXNlQ3VzdG9tVHJpZ2dlcj0hIWF9fXJl''@;'; put 'put ''dHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFRhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zaWducG9zdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLGZJLDUpLDImYSl7bGV0''@;'; put 'put ''IGg7dWkoaD1jaSgpKSYmKGYuY3VzdG9tVHJpZ2dlcj1oLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigic2lnbnBvc3QiLCEwKX0sZmVhdHVyZXM6W3JpKFtRYSwkVSx7cHJvdmlkZTp1Nyx1c2VFeGlzdGluZzpWaX0sS1VdKV0sbmdDb250''@;'; put 'put ''ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjIsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbHJTaWducG9zdFRyaWdnZXIiLCIiLDEsInNpZ25wb3N0LWFjdGlvbiIsImJ0biIsImJ0bi1zbWFsbCIsImJ0bi1saW5rIl0sWyJzaGFwZSIsImluZm8tY2lyY2xlIl1d''@;'; put 'put ''LHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSx0dCgwLFZSZSwzLDEsIm5nLWNvbnRhaW5lciIsMCksRHIoMSkpLDImYSYmUmUoIm5nSWYiLCFmLnVzZUN1c3RvbVRyaWdnZXIpfSxkZXBlbmRlbmNpZXM6WyRpLGZJLEphXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxYVT0oKCk9''@;'; put 'put ''PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fZHluYW1pYz0hMX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmNlbGxWaWV3PXRoaXMudGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KG51bGwpfW5nT25EZXN0cm95KCl7dGhpcy5jZWxsVmlldy5kZXN0cm95KCl9fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJkZy13cmFwcGVkLWNlbGwiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiZObyhCUmUsNSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi50ZW1w''@;'; put 'put ''bGF0ZVJlZj1kLmZpcnN0KX19LG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1siY2VsbFBvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksdHQoMCxqUmUsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLEt1KSl9LGVuY2Fwc3Vs''@;'; put 'put ''YXRpb246Mn0pLGx9KSgpLHc0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy52Y3I9YX1nZXQgX3ZpZXcoKXtyZXR1cm4gdGhpcy53cmFwcGVkSW5qZWN0b3IuZ2V0KFhVLHRoaXMudmNyKS5jZWxsVmlld31uZ09uSW5pdCgpe3RoaXMud3JhcHBlZEluamVjdG9yPW5ldyBlSShY''@;'; put 'put ''VSx0aGlzLnZjcil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1jZWxsIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQs''@;'; put 'put ''cVUsNCksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5zaWducG9zdD1oKX19LGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiZGF0YWdyaWQtY2VsbCIsITApKCJkYXRhZ3JpZC1zaWducG9zdC10cmln''@;'; put 'put ''Z2VyIixmLnNpZ25wb3N0Lmxlbmd0aD4wKX0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSxEcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEZzZT0wLHlTPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBRY3tj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5leHBhbmRhYmxlSWQ9IiIsdGhpcy5fcmVwbGFjZT1uZXcgT2UoITEpLHRoaXMuX2FuaW1hdGU9bmV3IHdlLEZzZSsrLHRoaXMuZXhwYW5kYWJsZUlkPSJjbHItZGctZXhwYW5kYWJsZS1yb3ctIitGc2V9Z2V0IGV4cGFuZGVkKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2V4cGFuZGVkfXNldCBleHBhbmRlZChhKXsoYT0hIWEpIT09dGhpcy5fZXhwYW5kZWQmJih0aGlzLl9leHBhbmRlZD1hLHRoaXMuX2FuaW1hdGUubmV4dCgpLHRoaXMuX2V4cGFuZENoYW5nZS5uZXh0KGEpKX1nZXQgcmVwbGFjZSgpe3JldHVybiB0aGlzLl9yZXBsYWNlLmFzT2JzZXJ2''@;'; put 'put ''YWJsZSgpfWdldCBhbmltYXRlKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUuYXNPYnNlcnZhYmxlKCl9bG9hZGluZ1N0YXRlQ2hhbmdlKGEpe3N1cGVyLmxvYWRpbmdTdGF0ZUNoYW5nZShhKSxhIT09WGMuTE9BRElORyYmdGhpcy5fYW5pbWF0ZS5uZXh0KCl9c2V0UmVwbGFjZShhKXt0aGlzLl9y''@;'; put 'put ''ZXBsYWNlLm5leHQoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO3ZhciB3Nz1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkRJU1BMQVk9MF09IkRJU1BM''@;'; put 'put ''QVkiLGxbbC5DQUxDVUxBVEU9MV09IkNBTENVTEFURSIsbH0odzd8fHt9KSxzbD1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLk5vbmU9MF09Ik5vbmUiLGxbbC5TaW5nbGU9MV09IlNpbmdsZSIsbFtsLk11bHRpPTJdPSJNdWx0aSIsbH0oc2x8fHt9KTtsZXQgSlU9KCgpPT57Y2xhc3MgbHtjb25z''@;'; put 'put ''dHJ1Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5yb3dWaWV3PXRoaXMudGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KG51bGwpfW5nT25EZXN0cm95KCl7dGhpcy5yb3dWaWV3LmRlc3Ryb3koKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImRnLXdyYXBwZWQtcm93Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oelJlLDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYudGVtcGxhdGVSZWY9ZC5maXJzdCl9''@;'; put 'put ''fSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbInJvd1BvcnRhbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksdHQoMCxVUmUsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwwLEt1KSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFdI''@;'; put 'put ''ZT0wLEM3PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLl9pdGVtcz1hLHRoaXMuX2ZpbHRlcnM9Zix0aGlzLnByZXNlcnZlU2VsZWN0aW9uPSExLHRoaXMuc2hpZnRQcmVzc2VkPSExLHRoaXMucm93U2VsZWN0aW9uTW9kZT0hMSx0aGlzLnByZXZTZWxlY3Rpb25SZWZzPVtd''@;'; put 'put ''LHRoaXMubG9ja2VkUmVmcz1bXSx0aGlzLnZhbHVlQ29sbGVjdG9yPW5ldyB3ZSx0aGlzLl9zZWxlY3Rpb25UeXBlPXNsLk5vbmUsdGhpcy5fY2hhbmdlPW5ldyB3ZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5pZD0iY2xyLWRnLXNlbGVjdGlvbiIrV0hlKyssdGhpcy5zdWJzY3JpcHRp''@;'; put 'put ''b25zLnB1c2godGhpcy5fZmlsdGVycy5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57IXRoaXMuX3NlbGVjdGFibGV8fHRoaXMucHJlc2VydmVTZWxlY3Rpb258fHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9pdGVtcy5hbGxDaGFuZ2VzLnN1YnNj''@;'; put 'put ''cmliZShkPT57Y29uc3QgaD1bXTtzd2l0Y2godGhpcy5zZWxlY3Rpb25UeXBlKXtjYXNlIHNsLk5vbmU6YnJlYWs7Y2FzZSBzbC5TaW5nbGU6e2xldCBtLF89ITE7dGhpcy5jdXJyZW50U2luZ2xlJiYhdGhpcy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmJiZ0aGlzLl9pdGVtcy5jYW5UcmFja0J5''@;'; put 'put ''KCkmJih0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9dGhpcy5faXRlbXMudHJhY2tCeSh0aGlzLmN1cnJlbnRTaW5nbGUpKSxkLmZvckVhY2goKE8sWCk9Pntjb25zdCBhZT10aGlzLl9pdGVtcy50cmFja0J5KE8sWCk7dGhpcy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmPT09YWUmJihtPU8s''@;'; put 'put ''Xz0hMCksdGhpcy5sb2NrZWRSZWZzLmluZGV4T2YoYWUpPi0xJiZoLnB1c2goYWUpfSksdGhpcy5faXRlbXMuc21hcnQmJiFtJiYoXz0hMCksc2V0VGltZW91dCgoKT0+e18mJih0aGlzLmN1cnJlbnRTaW5nbGU9bSl9LDApO2JyZWFrfWNhc2Ugc2wuTXVsdGk6e2xldCBtPXRoaXMuY3VycmVu''@;'; put 'put ''dC5zbGljZSgpLF89ITE7dGhpcy5jdXJyZW50Lmxlbmd0aD4wJiZ0aGlzLnByZXZTZWxlY3Rpb25SZWZzLmxlbmd0aCE9PXRoaXMuY3VycmVudC5sZW5ndGgmJnRoaXMuX2l0ZW1zLmNhblRyYWNrQnkoKSYmKHRoaXMucHJldlNlbGVjdGlvblJlZnM9W10sdGhpcy5jdXJyZW50LmZvckVhY2go''@;'; put 'put ''Tz0+e3RoaXMucHJldlNlbGVjdGlvblJlZnMucHVzaCh0aGlzLl9pdGVtcy50cmFja0J5KE8pKX0pKSxkLmZvckVhY2goKE8sWCk9Pntjb25zdCBhZT10aGlzLl9pdGVtcy50cmFja0J5KE8sWCk7dGhpcy5sb2NrZWRSZWZzLmluZGV4T2YoYWUpPi0xJiZoLnB1c2goYWUpfSksbS5sZW5ndGg+''@;'; put 'put ''MCYmKGQuZm9yRWFjaCgoTyxYKT0+e2NvbnN0IGFlPXRoaXMuX2l0ZW1zLnRyYWNrQnkoTyxYKSxwZT10aGlzLnByZXZTZWxlY3Rpb25SZWZzLmluZGV4T2YoYWUpO3BlPi0xJiYobVtwZV09TyxfPSEwKX0pLHRoaXMuX2l0ZW1zLnNtYXJ0JiYobT1tLmZpbHRlcihPPT5kLmluZGV4T2YoTyk+''@;'; put 'put ''LTEpLHRoaXMuY3VycmVudC5sZW5ndGghPT1tLmxlbmd0aCYmKF89ITApKSxzZXRUaW1lb3V0KCgpPT57XyYmKHRoaXMuY3VycmVudD1tKX0sMCkpO2JyZWFrfX10aGlzLmxvY2tlZFJlZnM9aH0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnZhbHVlQ29sbGVjdG9yLnBpcGUoWXYo''@;'; put 'put ''MCkpLnN1YnNjcmliZSgoKT0+dGhpcy5lbWl0Q2hhbmdlKCkpKX1nZXQgc2VsZWN0aW9uVHlwZSgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlfXNldCBzZWxlY3Rpb25UeXBlKGEpe2EhPT10aGlzLnNlbGVjdGlvblR5cGUmJih0aGlzLl9zZWxlY3Rpb25UeXBlPWEsYT09PXNsLk5vbmU/''@;'; put 'put ''ZGVsZXRlIHRoaXMuY3VycmVudDp0aGlzLnVwZGF0ZUN1cnJlbnQoW10sITEpKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGEpe3RoaXMudXBkYXRlQ3VycmVudChhLCEwKX1nZXQgY3VycmVudFNpbmdsZSgpe3JldHVybiB0aGlzLl9jdXJyZW50U2lu''@;'; put 'put ''Z2xlfXNldCBjdXJyZW50U2luZ2xlKGEpe2EhPT10aGlzLl9jdXJyZW50U2luZ2xlJiYodGhpcy5fY3VycmVudFNpbmdsZT1hLHRoaXMuX2l0ZW1zLmNhblRyYWNrQnkoKSYmYSYmKHRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj10aGlzLl9pdGVtcy50cmFja0J5KGEpKSx0aGlzLmVtaXRD''@;'; put 'put ''aGFuZ2UoKSl9Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IF9zZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGU9PT1zbC5NdWx0aXx8dGhpcy5fc2VsZWN0aW9uVHlwZT09PXNsLlNpbmdsZX1jbGVhclNlbGVjdGlvbigpe3Ro''@;'; put 'put ''aXMuX2N1cnJlbnQ9W10sdGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1bXSx0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9bnVsbCx0aGlzLl9jdXJyZW50U2luZ2xlPW51bGwsdGhpcy5lbWl0Q2hhbmdlKCl9ZGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJz''@;'; put 'put ''Y3JpYmUoKSl9dXBkYXRlQ3VycmVudChhLGYpe3RoaXMuX2N1cnJlbnQ9YSxmJiZ0aGlzLnZhbHVlQ29sbGVjdG9yLm5leHQoYSl9aXNTZWxlY3RlZChhKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uVHlwZT09PXNsLlNpbmdsZT90aGlzLmN1cnJlbnRTaW5nbGU9PT1hOnRoaXMuX3NlbGVjdGlv''@;'; put 'put ''blR5cGU9PT1zbC5NdWx0aSYmdGhpcy5jdXJyZW50LmluZGV4T2YoYSk+PTB9c2V0U2VsZWN0ZWQoYSxmKXtjb25zdCBkPXRoaXMuY3VycmVudD90aGlzLmN1cnJlbnQuaW5kZXhPZihhKTotMTtzd2l0Y2godGhpcy5fc2VsZWN0aW9uVHlwZSl7Y2FzZSBzbC5Ob25lOmNhc2Ugc2wuU2luZ2xl''@;'; put 'put ''OmJyZWFrO2Nhc2Ugc2wuTXVsdGk6ZD49MCYmIWY/dGhpcy5kZXNlbGVjdEl0ZW0oZCk6ZDwwJiZmJiZ0aGlzLnNlbGVjdEl0ZW0oYSl9fWlzQWxsU2VsZWN0ZWQoKXtpZih0aGlzLl9zZWxlY3Rpb25UeXBlIT09c2wuTXVsdGl8fCF0aGlzLl9pdGVtcy5kaXNwbGF5ZWQpcmV0dXJuITE7Y29u''@;'; put 'put ''c3QgYT10aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZmlsdGVyKGg9PiExPT09dGhpcy5pc0xvY2tlZChoKSk7cmV0dXJuIShhLmxlbmd0aDwxKSYmYS5maWx0ZXIoaD0+dGhpcy5jdXJyZW50LmluZGV4T2YoaCk+LTEpLmxlbmd0aD09PWEubGVuZ3RofWxvY2tJdGVtKGEsZil7aWYodGhpcy5jYW5J''@;'; put 'put ''dEJlTG9ja2VkKCkpe2NvbnN0IGQ9dGhpcy5faXRlbXMudHJhY2tCeShhKTshMD09PWY/dGhpcy5sb2NrZWRSZWZzLnB1c2goZCk6dGhpcy5sb2NrZWRSZWZzPXRoaXMubG9ja2VkUmVmcy5maWx0ZXIoaD0+ZCE9PWgpfX1pc0xvY2tlZChhKXtpZih0aGlzLmNhbkl0QmVMb2NrZWQoKSl7Y29u''@;'; put 'put ''c3QgZj10aGlzLl9pdGVtcy50cmFja0J5KGEpO3JldHVybiB0aGlzLmxvY2tlZFJlZnMuaW5kZXhPZihmKT4tMX1yZXR1cm4hMX10b2dnbGVBbGwoKXt0aGlzLl9zZWxlY3Rpb25UeXBlPT09c2wuTm9uZXx8dGhpcy5fc2VsZWN0aW9uVHlwZT09PXNsLlNpbmdsZXx8KHRoaXMuaXNBbGxTZWxl''@;'; put 'put ''Y3RlZCgpP3RoaXMuX2l0ZW1zLmRpc3BsYXllZC5mb3JFYWNoKGE9Pntjb25zdCBmPXRoaXMuY3VycmVudC5pbmRleE9mKGEpO2Y+LTEmJiExPT09dGhpcy5pc0xvY2tlZChhKSYmdGhpcy5kZXNlbGVjdEl0ZW0oZil9KTp0aGlzLl9pdGVtcy5kaXNwbGF5ZWQuZm9yRWFjaChhPT57dGhpcy5j''@;'; put 'put ''dXJyZW50LmluZGV4T2YoYSk8MCYmITE9PT10aGlzLmlzTG9ja2VkKGEpJiZ0aGlzLnNlbGVjdEl0ZW0oYSl9KSl9c2VsZWN0SXRlbShhKXt0aGlzLmN1cnJlbnQ9dGhpcy5jdXJyZW50LmNvbmNhdChhKSx0aGlzLl9pdGVtcy5jYW5UcmFja0J5KCkmJnRoaXMucHJldlNlbGVjdGlvblJlZnMu''@;'; put 'put ''cHVzaCh0aGlzLl9pdGVtcy50cmFja0J5KGEpKX1kZXNlbGVjdEl0ZW0oYSl7aWYodGhpcy5jdXJyZW50PXRoaXMuY3VycmVudC5zbGljZSgwLGEpLmNvbmNhdCh0aGlzLmN1cnJlbnQuc2xpY2UoYSsxKSksYTx0aGlzLnByZXZTZWxlY3Rpb25SZWZzLmxlbmd0aCl7Y29uc3QgZj10aGlzLnBy''@;'; put 'put ''ZXZTZWxlY3Rpb25SZWZzLnNwbGljZShhLDEpO3RoaXMubG9ja2VkUmVmcz10aGlzLmxvY2tlZFJlZnMuZmlsdGVyKGQ9PmQhPT1mWzBdKX19Y2FuSXRCZUxvY2tlZCgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlIT09c2wuTm9uZSYmdGhpcy5faXRlbXMuY2FuVHJhY2tCeSgpfWVtaXRD''@;'; put 'put ''aGFuZ2UoKXt0aGlzLl9zZWxlY3Rpb25UeXBlPT09c2wuU2luZ2xlP3RoaXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVudFNpbmdsZSk6dGhpcy5fc2VsZWN0aW9uVHlwZT09PXNsLk11bHRpJiZ0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihfNCksc3IoaTMpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxRVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX3ZpZXc9bmV3IE9lKHc3LkRJU1BMQVkpLHRoaXMuc3Vi''@;'; put 'put ''c2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChhLmZpbHRlclJlbmRlclN0ZXBzKE9kLkNBTENVTEFURV9NT0RFX09OKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3ZpZXcubmV4dCh3Ny5DQUxDVUxBVEUpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goYS5maWx0ZXJSZW5kZXJT''@;'; put 'put ''dGVwcyhPZC5DQUxDVUxBVEVfTU9ERV9PRkYpLnN1YnNjcmliZSgoKT0+dGhpcy5fdmlldy5uZXh0KHc3LkRJU1BMQVkpKSl9Z2V0IHZpZXcoKXtyZXR1cm4gdGhpcy5fdmlldy5hc09ic2VydmFibGUoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5z''@;'; put 'put ''dWJzY3JpYmUoKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFhnKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksZVo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnNlbGVj''@;'; put 'put ''dGlvbj1hfW9uU2VsZWN0aW9uQ2VsbENsaWNrKGEpe3RoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGV8fCJMQUJFTCIhPT1hLnRhcmdldC50YWdOYW1lJiYiSU5QVVQiIT09YS50YXJnZXQudGFnTmFtZSYmYS50YXJnZXQucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5jbGljaygpfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChDNykpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLDgsImRhdGFncmlkLXNlbGVjdCJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJjbGljayIsZnVuY3Rpb24o''@;'; put 'put ''aCl7cmV0dXJuIGYub25TZWxlY3Rpb25DZWxsQ2xpY2soaCl9KX19KSxsfSkoKSxkST0wLFFnPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyxYLGFlLHBlLGJlLHhlKXt0aGlzLnNlbGVjdGlvbj1hLHRoaXMucm93QWN0aW9uU2VydmljZT1mLHRoaXMuZ2xvYmFsRXhw''@;'; put 'put ''YW5kYWJsZT1kLHRoaXMuZXhwYW5kPWgsdGhpcy5kZXRhaWxTZXJ2aWNlPW0sdGhpcy5kaXNwbGF5TW9kZT1fLHRoaXMudmNyPU8sdGhpcy5yZW5kZXJlcj1YLHRoaXMuZWw9YWUsdGhpcy5jb21tb25TdHJpbmdzPXBlLHRoaXMuaXRlbXM9YmUsdGhpcy5kb2N1bWVudD14ZSx0aGlzLnNlbGVj''@;'; put 'put ''dGVkQ2hhbmdlZD1uZXcgeHIoITEpLHRoaXMuZXhwYW5kZWRDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLmRpc3BsYXlDZWxscz0hMSx0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXI9ITEsdGhpcy5TRUxFQ1RJT05fVFlQRT1zbCx0aGlzLml0ZW1DaGFuZ2VzPW5ldyB4RCgxKSx0aGlzLl9zZWxl''@;'; put 'put ''Y3RlZD0hMSx0aGlzLl9kZXRhaWxPcGVuTGFiZWw9IiIsdGhpcy5fZGV0YWlsQ2xvc2VMYWJlbD0iIix0aGlzLl9yb3dBcmlhTGFiZWw9IiIsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3NlbGVjdGFibGU9ITAsZEkrKyx0aGlzLmlkPSJjbHItZGctcm93IitkSSx0aGlzLnJhZGlvSWQ9''@;'; put 'put ''ImNsci1kZy1yb3ctcmQiK2RJLHRoaXMuY2hlY2tib3hJZD0iY2xyLWRnLXJvdy1jYiIrZEksdGhpcy5leHBhbmRhYmxlSWQ9aC5leHBhbmRhYmxlSWQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goQ3YodGhpcy5leHBhbmQucmVwbGFjZSx0aGlzLmV4cGFuZC5leHBhbmRDaGFuZ2UpLnN1YnNj''@;'; put 'put ''cmliZSgoW1ZlLFplXSk9PntWZSYmWmU/KHRoaXMucmVwbGFjZWQ9ITAsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLXJvdy1yZXBsYWNlZCIpKToodGhpcy5yZXBsYWNlZD0hMSx0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwu''@;'; put 'put ''bmF0aXZlRWxlbWVudCwiZGF0YWdyaWQtcm93LXJlcGxhY2VkIikpfSkpfWdldCBpdGVtKCl7cmV0dXJuIHRoaXMuX2l0ZW19c2V0IGl0ZW0oYSl7dGhpcy5faXRlbT1hLHRoaXMuaXRlbUNoYW5nZXMubmV4dChhKSx0aGlzLmNsckRnU2VsZWN0YWJsZT10aGlzLl9zZWxlY3RhYmxlfWdldCBj''@;'; put 'put ''bHJEZ1NlbGVjdGFibGUoKXtyZXR1cm4hdGhpcy5zZWxlY3Rpb24uaXNMb2NrZWQodGhpcy5pdGVtKX1zZXQgY2xyRGdTZWxlY3RhYmxlKGEpe3RoaXMuaXRlbSYmdGhpcy5zZWxlY3Rpb24ubG9ja0l0ZW0odGhpcy5pdGVtLCJmYWxzZSI9PT1hfHwhMT09PWEpLHRoaXMuX3NlbGVjdGFibGU9''@;'; put 'put ''YX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXNsLk5vbmU/dGhpcy5fc2VsZWN0ZWQ6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLml0ZW0pfXNldCBzZWxlY3RlZChhKXt0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09c2wu''@;'; put 'put ''Tm9uZT90aGlzLl9zZWxlY3RlZD1hOihhJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09c2wuTXVsdGk/dGhpcy5yYW5nZVNlbGVjdCgpOnRoaXMuc2VsZWN0aW9uLnJhbmdlU3RhcnQ9bnVsbCx0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3RlZCh0aGlzLml0ZW0sYSkpfWdldCBleHBh''@;'; put 'put ''bmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH1zZXQgZXhwYW5kZWQoYSl7dGhpcy5leHBhbmQuZXhwYW5kZWQ9YX1nZXQgY2xyRGdEZXRhaWxPcGVuTGFiZWwoKXtyZXR1cm4gdGhpcy5fZGV0YWlsT3BlbkxhYmVsP3RoaXMuX2RldGFpbE9wZW5MYWJlbDp0aGlzLmNvbW1vblN0''@;'; put 'put ''cmluZ3Mua2V5cy5vcGVufXNldCBjbHJEZ0RldGFpbE9wZW5MYWJlbChhKXt0aGlzLl9kZXRhaWxPcGVuTGFiZWw9YX1nZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKCl7cmV0dXJuIHRoaXMuX2RldGFpbENsb3NlTGFiZWw/dGhpcy5fZGV0YWlsQ2xvc2VMYWJlbDp0aGlzLmNvbW1vblN0cmlu''@;'; put 'put ''Z3Mua2V5cy5jbG9zZX1zZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKGEpe3RoaXMuX2RldGFpbENsb3NlTGFiZWw9YX1nZXQgY2xyRGdSb3dBcmlhTGFiZWwoKXtyZXR1cm4gdGhpcy5fcm93QXJpYUxhYmVsP3RoaXMuX3Jvd0FyaWFMYWJlbDp0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxl''@;'; put 'put ''Y3R9c2V0IGNsckRnUm93QXJpYUxhYmVsKGEpe3RoaXMuX3Jvd0FyaWFMYWJlbD1hfWdldCBfdmlldygpe3JldHVybiB0aGlzLndyYXBwZWRJbmplY3Rvci5nZXQoSlUsdGhpcy52Y3IpLnJvd1ZpZXd9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1uZXcgZUkoSlUsdGhpcy52Y3Ip''@;'; put 'put ''LHRoaXMuc2VsZWN0aW9uLmxvY2tJdGVtKHRoaXMuaXRlbSwhMT09PXRoaXMuY2xyRGdTZWxlY3RhYmxlKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmRnQ2VsbHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmRnQ2VsbHMuZm9yRWFjaChhPT57YS5fdmlldy5kZXN0cm95ZWR8fHRo''@;'; put 'put ''aXMuX3Njcm9sbGFibGVDZWxscy5pbnNlcnQoYS5fdmlldyl9KX0pfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZGlzcGxheU1vZGUudmlldy5zdWJzY3JpYmUoYT0+e2ZvcihsZXQgZj10aGlzLl9zY3JvbGxhYmxlQ2VsbHMubGVuZ3RoO2Y+MDtmLS0p''@;'; put 'put ''dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmRldGFjaCgpO2ZvcihsZXQgZj10aGlzLl9jYWxjdWxhdGVkQ2VsbHMubGVuZ3RoO2Y+MDtmLS0pdGhpcy5fY2FsY3VsYXRlZENlbGxzLmRldGFjaCgpO2E9PT13Ny5DQUxDVUxBVEU/KHRoaXMuZGlzcGxheUNlbGxzPSExLHRoaXMuZGdDZWxscy5mb3JF''@;'; put 'put ''YWNoKGY9PntmLl92aWV3LmRlc3Ryb3llZHx8dGhpcy5fY2FsY3VsYXRlZENlbGxzLmluc2VydChmLl92aWV3KX0pKToodGhpcy5kaXNwbGF5Q2VsbHM9ITAsdGhpcy5kZ0NlbGxzLmZvckVhY2goZj0+e2YuX3ZpZXcuZGVzdHJveWVkfHx0aGlzLl9zY3JvbGxhYmxlQ2VsbHMuaW5zZXJ0KGYu''@;'; put 'put ''X3ZpZXcpfSkpfSksdGhpcy5leHBhbmQuYW5pbWF0ZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXI9IXRoaXMuZXhwYW5kQW5pbWF0aW9uVHJpZ2dlcn0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUo''@;'; put 'put ''KSl9dG9nZ2xlKGE9IXRoaXMuc2VsZWN0ZWQpe2EhPT10aGlzLnNlbGVjdGVkJiYodGhpcy5zZWxlY3RlZD1hLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoYSkpfXRvZ2dsZUV4cGFuZCgpe3RoaXMuZXhwYW5kLmV4cGFuZGFibGUmJih0aGlzLmV4cGFuZEFuaW1hdGlvbi51cGRhdGVTdGFy''@;'; put 'put ''dEhlaWdodCgpLHRoaXMuZXhwYW5kZWQ9IXRoaXMuZXhwYW5kZWQsdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpKX1jbGVhclJhbmdlcyhhKXthLnNoaWZ0S2V5JiYodGhpcy5kb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSwtMSE9PXdpbmRv''@;'; put 'put ''dy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkZpcmVmb3giKSYmKGEucHJldmVudERlZmF1bHQoKSx0aGlzLnRvZ2dsZSghMCkpKX1zZWxlY3RSb3coYT0hdGhpcy5zZWxlY3RlZCxmKXsiTEFCRUwiIT09Zi50YXJnZXQudGFnTmFtZSYmKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5''@;'; put 'put ''cGU9PT10aGlzLlNFTEVDVElPTl9UWVBFLlNpbmdsZT90aGlzLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPXRoaXMuaXRlbTp0aGlzLnRvZ2dsZShhKSl9cmFuZ2VTZWxlY3QoKXtjb25zdCBhPXRoaXMuaXRlbXMuZGlzcGxheWVkO2lmKCFhKXJldHVybjtjb25zdCBmPWEuaW5kZXhPZih0aGlz''@;'; put 'put ''LnNlbGVjdGlvbi5yYW5nZVN0YXJ0KTtpZih0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0JiZ0aGlzLnNlbGVjdGlvbi5jdXJyZW50LmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uLnJhbmdlU3RhcnQpJiZ0aGlzLnNlbGVjdGlvbi5zaGlmdFByZXNzZWQmJi0xIT09Zil7Y29uc3QgZD1hLmluZGV4''@;'; put 'put ''T2YodGhpcy5pdGVtKSxoPW5ldyBTZXQodGhpcy5zZWxlY3Rpb24uY3VycmVudC5jb25jYXQoYS5zbGljZShNYXRoLm1pbihmLGQpLE1hdGgubWF4KGYsZCkrMSkpKTt0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHRoaXMuc2VsZWN0aW9uLmN1cnJlbnQucHVzaCguLi5oKX1lbHNl''@;'; put 'put ''IHRoaXMuc2VsZWN0aW9uLnJhbmdlU3RhcnQ9dGhpcy5pdGVtfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChDNykscnQoZzcpLHJ0KHk3KSxydCh5UykscnQoVGQpLHJ0KFFVKSxydChmYSkscnQoam8pLHJ0KFZpKSxydChUYSkscnQoXzQpLHJ0''@;'; put 'put ''KEZhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1yb3ciXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmRm8oZCx3NCw0KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLmRnQ2VsbHM9aCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24o''@;'; put 'put ''YSxmKXtpZigxJmEmJihObyhYRCw1KSxObyhaUmUsNSksTm8oWVJlLDUsZmEpLE5vKFdSZSw1LGZhKSxObyhHUmUsNSxmYSkpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYuZXhwYW5kQW5pbWF0aW9uPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLmRldGFpbEJ1dHRvbj1kLmZpcnN0KSx1aShk''@;'; put 'put ''PWNpKCkpJiYoZi5fc3RpY2t5Q2VsbHM9ZC5maXJzdCksdWkoZD1jaSgpKSYmKGYuX3Njcm9sbGFibGVDZWxscz1kLmZpcnN0KSx1aShkPWNpKCkpJiYoZi5fY2FsY3VsYXRlZENlbGxzPWQuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsInJvd2dyb3VwIl0saG9zdFZhcnM6NSxob3N0Qmlu''@;'; put 'put ''ZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJihScigiYXJpYS1vd25zIixmLmlkKSxncigiZGF0YWdyaWQtcm93IiwhMCkoImRhdGFncmlkLXNlbGVjdGVkIixmLnNlbGVjdGVkKSl9LGlucHV0czp7aXRlbTpbImNsckRnSXRlbSIsIml0ZW0iXSxjbHJEZ1NlbGVjdGFibGU6ImNsckRnU2VsZWN0''@;'; put 'put ''YWJsZSIsc2VsZWN0ZWQ6WyJjbHJEZ1NlbGVjdGVkIiwic2VsZWN0ZWQiXSxleHBhbmRlZDpbImNsckRnRXhwYW5kZWQiLCJleHBhbmRlZCJdLGNsckRnRGV0YWlsT3BlbkxhYmVsOiJjbHJEZ0RldGFpbE9wZW5MYWJlbCIsY2xyRGdEZXRhaWxDbG9zZUxhYmVsOiJjbHJEZ0RldGFpbENsb3Nl''@;'; put 'put ''TGFiZWwiLGNsckRnUm93QXJpYUxhYmVsOiJjbHJEZ1Jvd0FyaWFMYWJlbCJ9LG91dHB1dHM6e3NlbGVjdGVkQ2hhbmdlZDoiY2xyRGdTZWxlY3RlZENoYW5nZSIsZXhwYW5kZWRDaGFuZ2U6ImNsckRnRXhwYW5kZWRDaGFuZ2UifSxmZWF0dXJlczpbcmkoW3lTLHtwcm92aWRlOlFjLHVzZUV4''@;'; put 'put ''aXN0aW5nOnlTfSx7cHJvdmlkZTpRQyx1c2VFeGlzdGluZzp5U31dKV0sbmdDb250ZW50U2VsZWN0b3JzOmJMZSxkZWNsczo5LHZhcnM6Myxjb25zdHM6W1siY2xhc3MiLCJkYXRhZ3JpZC1yb3ctY2xpY2thYmxlIiwzLCJtb3VzZWRvd24iLCJjbGljayIsNCwibmdJZiJdLFszLCJjbHJFeHBh''@;'; put 'put ''bmRUcmlnZ2VyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbImRldGFpbCIsIiJdLFsicm93Q29udGVudCIsIiJdLFsiY2FsY3VsYXRlZENlbGxzIiwiIl0sWzEsImRhdGFncmlkLXJvdy1jbGlja2FibGUiLDMsIm1vdXNlZG93biIsImNsaWNrIl0sWzMsImNsckV4cGFuZFRyaWdnZXIiXSxbMywi''@;'; put 'put ''bmdUZW1wbGF0ZU91dGxldCJdLFsicm9sZSIsInJvdyIsMSwiZGF0YWdyaWQtcm93LW1hc3RlciIsImRhdGFncmlkLXJvdy1mbGV4IiwzLCJpZCJdLFsxLCJkYXRhZ3JpZC1yb3ctc3RpY2t5Il0sWyJzdGlja3lDZWxscyIsIiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQt''@;'; put 'put ''Zml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDQsIm5nSWYiXSxb''@;'; put 'put ''ImNsYXNzIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsInJvbGUiLCJncmlkY2VsbCIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNl''@;'; put 'put ''bGwiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUiLDMsIm5nQ2xhc3MiXSxbMSwiZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzIl0sWyJzY3JvbGxhYmxlQ2VsbHMiLCIiXSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtc2VsZWN0IiwiZGF0YWdyaWQtZml4ZWQt''@;'; put 'put ''Y29sdW1uIiwiZGF0YWdyaWQtY2VsbCIsMywibmdDbGFzcyJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLDMsIm5nTW9kZWwiLCJpZCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSJdLFsxLCJjbHItY29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiZm9yIiwi''@;'; put 'put ''Y2xpY2siXSxbMSwiY2xyLXNyLW9ubHkiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwzLCJpZCIsIm5hbWUiLCJ2YWx1ZSIsIm5nTW9kZWwiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCJuZ01vZGVsQ2hhbmdlIl0sWzEsImNsci1jb250cm9sLWxhYmVsIiwiY2xyLWNvbC1udWxsIiwz''@;'; put 'put ''LCJmb3IiXSxbInJvbGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtcm93LWFjdGlvbnMiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLCJkYXRhZ3JpZC1jZWxsIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4i''@;'; put 'put ''LCJkYXRhZ3JpZC1jZWxsIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsclNtYWxsIiwiIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNh''@;'; put 'put ''cmV0LWJ1dHRvbiIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLDEsImRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbiJdLFsiY2xyU21hbGwiLCIiXSxbMSwiZGF0YWdyaWQtZGV0YWlsLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsidHlw''@;'; put 'put ''ZSIsImJ1dHRvbiIsImFyaWEtaGFzcG9wdXAiLCJkaWFsb2ciLDEsImRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24iLDMsImNsaWNrIl0sWyJkZXRhaWxCdXR0b24iLCIiXSxbInNoYXBlIiwiYW5nbGUtZG91YmxlIiwxLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbiJdXSx0ZW1wbGF0''@;'; put 'put ''ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKHlMZSksdHQoMCxKUmUsMywyLCJkaXYiLDApLHR0KDEsZUxlLDIsMiwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxKSx0dCgyLG5MZSwxLDEsbnVsbCwyKSx0dCgzLHJMZSwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDMsS3UpLHR0KDUsdkxlLDE2''@;'; put 'put ''LDEzLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LEt1KSxlcyg3LG51bGwsNSkpLDImYSYmKFJlKCJuZ0lmIixmLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25Nb2RlKSxTZSgxKSxSZSgibmdJZiIsIWYuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGUmJmYuZXhwYW5kLmV4cGFuZGFibGUpLFNlKDEpLFJl''@;'; put 'put ''KCJuZ0lmIiwhZi5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZSYmIWYuZXhwYW5kLmV4cGFuZGFibGUpKX0sZGVwZW5kZW5jaWVzOltYRCxWMCxCVSxSaCwkaSx5ZCxlWix5dSxSMCxCMCxXYSx6YSxlbCxCRCxpcyxqVSxKYV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCk7dmFyIHowPWZ1bmN0''@;'; put 'put ''aW9uKGwpe3JldHVybiBsW2wuV0lEVEg9MF09IldJRFRIIixsW2wuSElEREVOPTFdPSJISURERU4iLGx9KHowfHx7fSk7Y29uc3QgSHNlPU9iamVjdC5rZXlzKHowKS5tYXAobD0+ejBbbF0pLmZpbHRlcihsPT5sPT09cGFyc2VJbnQobCwxMCkpO2xldCBvMz0oKCk9PntjbGFzcyBse2NvbnN0''@;'; put 'put ''cnVjdG9yKCl7dGhpcy5jb2x1bW5zPVtdLHRoaXMuX2NhY2hlPVtdfWdldCBjb2x1bW5TdGF0ZXMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLm1hcChhPT5hLnZhbHVlKX1nZXQgaGFzSGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uU3RhdGVzLmZpbHRlcihhPT5hLmhpZGVhYmxl''@;'; put 'put ''KS5sZW5ndGg+MH1jYWNoZSgpe3RoaXMuX2NhY2hlPXRoaXMuY29sdW1ucy5tYXAoYT0+e2NvbnN0IGY9ey4uLmEudmFsdWV9O3JldHVybiBkZWxldGUgZi5jaGFuZ2VzLGZ9KX1oYXNDYWNoZSgpe3JldHVybiEhdGhpcy5fY2FjaGUubGVuZ3RofXJlc2V0VG9MYXN0Q2FjaGUoKXt0aGlzLl9j''@;'; put 'put ''YWNoZS5mb3JFYWNoKChhLGYpPT57dGhpcy5jb2x1bW5zW2ZdLm5leHQoey4uLmEsY2hhbmdlczpIc2V9KX0pLHRoaXMuX2NhY2hlPVtdfWVtaXRTdGF0ZUNoYW5nZUF0KGEsZil7dGhpcy5jb2x1bW5zW2FdJiZ0aGlzLmVtaXRTdGF0ZUNoYW5nZSh0aGlzLmNvbHVtbnNbYV0sZil9ZW1pdFN0''@;'; put 'put ''YXRlQ2hhbmdlKGEsZil7YS5uZXh0KHsuLi5hLnZhbHVlLC4uLmZ9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksTnNlPSgoKT0+e2NsYXNzIGx7Y29u''@;'; put 'put ''c3RydWN0b3IoYSxmLGQsaCl7dGhpcy5maWx0ZXJzPWEsdGhpcy5zb3J0PWYsdGhpcy5wYWdlPWQsdGhpcy5kZWJvdW5jZXI9aCx0aGlzLmNoYW5nZT10aGlzLmRlYm91bmNlci5jaGFuZ2UucGlwZShFZSgoKT0+dGhpcy5zdGF0ZSkpfWdldCBzdGF0ZSgpe2NvbnN0IGE9e307dGhpcy5wYWdl''@;'; put 'put ''LnNpemU+MCYmKGEucGFnZT17ZnJvbTp0aGlzLnBhZ2UuZmlyc3RJdGVtLHRvOnRoaXMucGFnZS5sYXN0SXRlbSxzaXplOnRoaXMucGFnZS5zaXplLGN1cnJlbnQ6dGhpcy5wYWdlLmN1cnJlbnR9KSx0aGlzLnNvcnQuY29tcGFyYXRvciYmKGEuc29ydD10aGlzLnNvcnQuY29tcGFyYXRvciBp''@;'; put 'put ''bnN0YW5jZW9mIHVJP3tieTp0aGlzLnNvcnQuY29tcGFyYXRvci5wcm9wLHJldmVyc2U6dGhpcy5zb3J0LnJldmVyc2V9OntieTp0aGlzLnNvcnQuY29tcGFyYXRvcixyZXZlcnNlOnRoaXMuc29ydC5yZXZlcnNlfSk7Y29uc3QgZj10aGlzLmZpbHRlcnMuZ2V0QWN0aXZlRmlsdGVycygpO2lm''@;'; put 'put ''KGYubGVuZ3RoPjApe2EuZmlsdGVycz1bXTtmb3IoY29uc3QgZCBvZiBmKWEuZmlsdGVycy5wdXNoKGQuc3RhdGU/ZC5zdGF0ZTpkKX1yZXR1cm4gYX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoaTMpLHNyKGNJKSxzcih5NCksc3IoZ1MpKX0s''@;'; put 'put ''bC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxWc2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnpvbmU9YSx0aGlzLmxpc3RlbmVyc0FkZGVkPSExLHRoaXMuZGVzdHJveSQ9bmV3IHdlLHRoaXMuY29uZmlnPXtrZXlHcmlkUm93''@;'; put 'put ''czoiW3JvbGU9cm93XTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyKSIsa2V5R3JpZENlbGxzOiJbcm9sZT1ncmlkY2VsbF06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRlbnQpLCBbcm9sZT1jb2x1bW5oZWFkZXJdOm5vdCguZGF0''@;'; put 'put ''YWdyaWQtaGlkZGVuLWNvbHVtbik6bm90KC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250ZW50KSwgLmRhdGFncmlkLWRldGFpbC1jYXJldCIsa2V5R3JpZDoiW3JvbGU9Z3JpZF0ifX1nZXQgZ3JpZCgpe3JldHVybiB0aGlzLmhvc3Q/LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb25maWcua2V5R3Jp''@;'; put 'put ''ZCl9Z2V0IHJvd3MoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRSb3dzKX1nZXQgY2VsbHMoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscyl9bmdPbkRlc3Ryb3koKXt0aGlz''@;'; put 'put ''LmRlc3Ryb3kkLm5leHQoKSx0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCl9YWRkTGlzdGVuZXJzKCl7dGhpcy5saXN0ZW5lcnNBZGRlZHx8KHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3dkKHRoaXMuZ3JpZCwibW91c2Vkb3duIikucGlwZShBaCh0aGlzLmRlc3Ryb3kkKSkuc3Vi''@;'; put 'put ''c2NyaWJlKGE9PntpZigxPT09YS5idXR0b25zJiYhYS5jdHJsS2V5KXtjb25zdCBmPXRoaXMuY2VsbHM/QXJyYXkuZnJvbSh0aGlzLmNlbGxzKS5maW5kKGQ9PmQ9PT1hLnRhcmdldHx8ZD09PWEudGFyZ2V0LmNsb3Nlc3QodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSk6bnVsbDtmJiZ0aGlz''@;'; put 'put ''LnNldEFjdGl2ZUNlbGwoZil9fSksd2QodGhpcy5ncmlkLCJrZXlkb3duIikucGlwZShBaCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGE9PntpZigoIWEudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZHJhZy1oYW5kbGUiKXx8IkFycm93TGVmdCIhPT1hLmNvZGUmJiJBcnJvd1JpZ2h0''@;'; put 'put ''IiE9PWEuY29kZSkmJigiQXJyb3dVcCI9PT1hLmNvZGV8fCJBcnJvd0Rvd24iPT09YS5jb2RlfHwiQXJyb3dMZWZ0Ij09PWEuY29kZXx8IkFycm93UmlnaHQiPT09YS5jb2RlfHwiRW5kIj09PWEuY29kZXx8IkhvbWUiPT09YS5jb2RlfHwiUGFnZVVwIj09PWEuY29kZXx8IlBhZ2VEb3duIj09''@;'; put 'put ''PWEuY29kZSkpe2NvbnN0e3g6Zix5OmR9PXRoaXMuZ2V0TmV4dEl0ZW1Db29yZGluYXRlKGEpLGg9dGhpcy5yb3dzP0FycmF5LmZyb20odGhpcy5yb3dzW2RdLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSlbZl06bnVsbDtoJiZ0aGlzLnNldEFjdGl2ZUNlbGwo''@;'; put 'put ''aCksYS5wcmV2ZW50RGVmYXVsdCgpfX0pfSksdGhpcy5saXN0ZW5lcnNBZGRlZD0hMCl9aW5pdGlhbGl6ZUtleUdyaWQoYSl7dGhpcy5ob3N0PWEsdGhpcy5hZGRMaXN0ZW5lcnMoKSx0aGlzLnJlc2V0S2V5R3JpZCgpfXJlc2V0S2V5R3JpZCgpe3RoaXMuY2VsbHM/LmZvckVhY2goZj0+Zi5z''@;'; put 'put ''ZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSksKHRoaXMuY2VsbHM/dGhpcy5jZWxsc1swXTpudWxsKT8uc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKX1zZXRBY3RpdmVDZWxsKGEpe2NvbnN0IGY9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQobT0+IjAiPT09''@;'; put 'put ''bS5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikpOm51bGw7ZiYmZi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxhLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik7Y29uc3QgZD1mdW5jdGlvbiBHSGUobCl7Y29uc3QgYz1bImFbaHJlZl0iLCJhcmVhW2hyZWZdIiwiaW5wdXQ6bm90''@;'; put 'put ''KFtkaXNhYmxlZF0pIiwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKSIsInNlbGVjdDpub3QoW2Rpc2FibGVkXSkiLCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSkiLCJpZnJhbWUiLCJvYmplY3QiLCJlbWJlZCIsIipbdGFiaW5kZXhdIiwiKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0iLCJbcm9sZT1i''@;'; put 'put ''dXR0b25dOm5vdChbZGlzYWJsZWRdKSJdLmpvaW4oIiwiKTtyZXR1cm4gQXJyYXkuZnJvbShsLnF1ZXJ5U2VsZWN0b3JBbGwoYykpfShhKTsoImNvbHVtbmhlYWRlciIhPT1hLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZkWzBdP2RbMF06YSkuZm9jdXMoKX1nZXROZXh0SXRlbUNvb3JkaW5hdGUo''@;'; put 'put ''YSl7bGV0IGY9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoeGU9PiIwIj09PXhlLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6bnVsbDsiVGFiIj09PWEuY29kZSYmKGY9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7Y29uc3QgZD10aGlzLnJvd3MmJmY/QXJyYXkuZnJv''@;'; put 'put ''bSh0aGlzLnJvd3MpLmZpbmQoeGU9PnhlLmNvbnRhaW5zKGYpKTpudWxsLGg9dGhpcy5yb3dzP3RoaXMucm93cy5sZW5ndGgtMTowLG09dGhpcy5jZWxscz90aGlzLmNlbGxzLmxlbmd0aC90aGlzLnJvd3MubGVuZ3RoLTE6MDtsZXQgXz1kJiZmP0FycmF5LmZyb20oZC5xdWVyeVNlbGVjdG9y''@;'; put 'put ''QWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscykpLmluZGV4T2YoZik6MCxPPWQmJmYmJnRoaXMucm93cz9BcnJheS5mcm9tKHRoaXMucm93cykuaW5kZXhPZihkKTowO2NvbnN0IFg9dGhpcy5ob3N0LmRpcixhZT0icnRsIj09PVg/IkFycm93UmlnaHQiOiJBcnJvd0xlZnQiLHBlPSJydGwi''@;'; put 'put ''PT09WD8iQXJyb3dMZWZ0IjoiQXJyb3dSaWdodCIsYmU9TWF0aC5mbG9vcih0aGlzLmhvc3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kYXRhZ3JpZCIpLmNsaWVudEhlaWdodC90aGlzLnJvd3NbMF0uY2xpZW50SGVpZ2h0KS0xfHwwO3JldHVybiJBcnJvd1VwIj09PWEuY29kZSYmMCE9PU8/Ty09MToi''@;'; put 'put ''QXJyb3dEb3duIj09PWEuY29kZSYmTzxoP08rPTE6YS5jb2RlPT09YWUmJjAhPT1fP18tPTE6YS5jb2RlPT09cGUmJl88bT9fKz0xOiJFbmQiPT09YS5jb2RlPyhfPW0sYS5jdHJsS2V5JiYoTz1oKSk6IkhvbWUiPT09YS5jb2RlPyhfPTAsYS5jdHJsS2V5JiYoTz0wKSk6IlBhZ2VVcCI9PT1h''@;'; put 'put ''LmNvZGU/Tz1PLWJlPjA/Ty1iZTowOiJQYWdlRG93biI9PT1hLmNvZGUmJihPPU8rYmU8aD9PK2JlOmgpLHt4Ol8seTpPfX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoVW8pKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5c''@;'; put 'put ''dTAyNzVmYWN9KSxsfSkoKSxTNz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8sWCxhZSxwZSxiZSx4ZSxWZSxaZSxsdCxkdCl7dGhpcy5vcmdhbml6ZXI9YSx0aGlzLml0ZW1zPWYsdGhpcy5leHBhbmRhYmxlUm93cz1kLHRoaXMuc2VsZWN0aW9uPWgsdGhpcy5yb3dB''@;'; put 'put ''Y3Rpb25TZXJ2aWNlPW0sdGhpcy5zdGF0ZVByb3ZpZGVyPV8sdGhpcy5kaXNwbGF5TW9kZT1PLHRoaXMucmVuZGVyZXI9WCx0aGlzLmRldGFpbFNlcnZpY2U9YWUsdGhpcy5kb2N1bWVudD1wZSx0aGlzLmVsPWJlLHRoaXMucGFnZT14ZSx0aGlzLmNvbW1vblN0cmluZ3M9VmUsdGhpcy5jb2x1''@;'; put 'put ''bW5zU2VydmljZT1aZSx0aGlzLmtleU5hdmlnYXRpb249bHQsdGhpcy56b25lPWR0LHRoaXMuY2xyRGdTaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWw9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuc2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsLHRoaXMuY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxh''@;'; put 'put ''YmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNpbmdsZUFjdGlvbmFibGVBcmlhTGFiZWwsdGhpcy5jbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWwsdGhpcy5jbHJEZ0Rpc2FibGVQYWdlRm9jdXM9''@;'; put 'put ''ITEsdGhpcy5zZWxlY3RlZENoYW5nZWQ9bmV3IHhyKCExKSx0aGlzLnNpbmdsZVNlbGVjdGVkQ2hhbmdlZD1uZXcgeHIoITEpLHRoaXMucmVmcmVzaD1uZXcgeHIoITEpLHRoaXMuU0VMRUNUSU9OX1RZUEU9c2wsdGhpcy5fc3Vic2NyaXB0aW9ucz1bXTtjb25zdCBndD1IdSgpO3RoaXMuc2Vs''@;'; put 'put ''ZWN0QWxsSWQ9ImNsci1kZy1zZWxlY3QtYWxsLSIrZ3QsdGhpcy5kZXRhaWxTZXJ2aWNlLmlkPWd0fWdldCBsb2FkaW5nKCl7cmV0dXJuIHRoaXMuaXRlbXMubG9hZGluZ31zZXQgbG9hZGluZyhhKXt0aGlzLml0ZW1zLmxvYWRpbmc9YX1zZXQgc2VsZWN0ZWQoYSl7dGhpcy5zZWxlY3Rpb24u''@;'; put 'put ''c2VsZWN0aW9uVHlwZT1hP3NsLk11bHRpOnNsLk5vbmUsdGhpcy5zZWxlY3Rpb24udXBkYXRlQ3VycmVudChhLCExKX1zZXQgc2luZ2xlU2VsZWN0ZWQoYSl7dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT1zbC5TaW5nbGUsYT90aGlzLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPWE6dGhp''@;'; put 'put ''cy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZSYmKHRoaXMuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGU9bnVsbCl9c2V0IGNsckRnUHJlc2VydmVTZWxlY3Rpb24oYSl7dGhpcy5zZWxlY3Rpb24ucHJlc2VydmVTZWxlY3Rpb249YX1zZXQgcm93U2VsZWN0aW9uTW9kZShhKXt0aGlzLnNlbGVjdGlv''@;'; put 'put ''bi5yb3dTZWxlY3Rpb25Nb2RlPWF9c2V0IHRyYWNrQnkoYSl7dGhpcy5pdGVtcy5kYXRhZ3JpZFRyYWNrQnk9YX1nZXQgYWxsU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNBbGxTZWxlY3RlZCgpfXNldCBhbGxTZWxlY3RlZChhKXt0aGlzLnNlbGVjdGlvbi50b2dnbGVBbGwo''@;'; put 'put ''KX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLml0ZW1zLnNtYXJ0fHwodGhpcy5pdGVtcy5hbGw9dGhpcy5yb3dzLm1hcChmPT5mLml0ZW0pKTtjb25zdCBhPXRoaXMucm93cy5jaGFuZ2VzLnBpcGUoa2woZj0+c2EoR2koZi5tYXAoZD0+ZC5pdGVtKSksQ3YoZi5tYXAoZD0+ZC5pdGVtQ2hh''@;'; put 'put ''bmdlcykpLnBpcGUoWXYoMCkpKSkpO3RoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChhLnN1YnNjcmliZShmPT57dGhpcy5pdGVtcy5zbWFydHx8KHRoaXMuaXRlbXMuYWxsPWYpfSksdGhpcy5yb3dzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57Zm9yKGxldCBmPXRoaXMuX2Rpc3BsYXllZFJvd3Mu''@;'; put 'put ''bGVuZ3RoLTE7Zj49MDtmLS0pdGhpcy5fZGlzcGxheWVkUm93cy5nZXQoZikuZGVzdHJveWVkJiZ0aGlzLl9kaXNwbGF5ZWRSb3dzLnJlbW92ZShmKTtpZih0aGlzLnJvd3MuZm9yRWFjaChmPT57dGhpcy5fZGlzcGxheWVkUm93cy5pbnNlcnQoZi5fdmlldyl9KSx0aGlzLmRldGFpbFNlcnZp''@;'; put 'put ''Y2Uuc3RhdGUmJnRoaXMuZGV0YWlsU2VydmljZS5pc09wZW4pe2NvbnN0IGY9dGhpcy5pdGVtcy5jYW5UcmFja0J5KCk/dGhpcy5yb3dzLmZpbmQoZD0+dGhpcy5pdGVtcy50cmFja0J5KGQuaXRlbSk9PT10aGlzLml0ZW1zLnRyYWNrQnkodGhpcy5kZXRhaWxTZXJ2aWNlLnN0YXRlKSk6dm9p''@;'; put 'put ''ZCAwO2Y/dGhpcy5kZXRhaWxTZXJ2aWNlLm9wZW4oZi5pdGVtLGYuZGV0YWlsQnV0dG9uLm5hdGl2ZUVsZW1lbnQpOnRoaXMuZGV0YWlsU2VydmljZS5jbG9zZSgpfX0pKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmtleU5hdmlnYXRpb24uaW5pdGlhbGl6ZUtleUdyaWQodGhpcy5lbC5uYXRp''@;'; put 'put ''dmVFbGVtZW50KSx0aGlzLnJlZnJlc2guZW1pdCh0aGlzLnN0YXRlUHJvdmlkZXIuc3RhdGUpLHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXRlUHJvdmlkZXIuY2hhbmdlLnN1YnNjcmliZShhPT50aGlzLnJlZnJlc2guZW1pdChhKSksdGhpcy5zZWxlY3Rpb24uY2hhbmdlLnN1''@;'; put 'put ''YnNjcmliZShhPT57dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PXNsLlNpbmdsZT90aGlzLnNpbmdsZVNlbGVjdGVkQ2hhbmdlZC5lbWl0KGEpOnRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1zbC5NdWx0aSYmdGhpcy5zZWxlY3RlZENoYW5nZWQuZW1pdChhKX0pLHRoaXMu''@;'; put 'put ''cGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5rZXlOYXZpZ2F0aW9uLnJlc2V0S2V5R3JpZCgpLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzfHx0aGlzLmRhdGFncmlkVGFibGUubmF0aXZlRWxlbWVudC5mb2N1cygpfSksQ3YodGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zKS5z''@;'; put 'put ''dWJzY3JpYmUoKCk9PnRoaXMua2V5TmF2aWdhdGlvbj8ucmVzZXRLZXlHcmlkKCkpLHRoaXMuZGlzcGxheU1vZGUudmlldy5zdWJzY3JpYmUoYT0+e2ZvcihsZXQgZj10aGlzLl9wcm9qZWN0ZWREaXNwbGF5Q29sdW1ucy5sZW5ndGg7Zj4wO2YtLSl0aGlzLl9wcm9qZWN0ZWREaXNwbGF5Q29s''@;'; put 'put ''dW1ucy5kZXRhY2goKTtmb3IobGV0IGY9dGhpcy5fcHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zLmxlbmd0aDtmPjA7Zi0tKXRoaXMuX3Byb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucy5kZXRhY2goKTtmb3IobGV0IGY9dGhpcy5fY2FsY3VsYXRpb25Sb3dzLmxlbmd0aDtmPjA7Zi0tKXRo''@;'; put 'put ''aXMuX2NhbGN1bGF0aW9uUm93cy5kZXRhY2goKTtmb3IobGV0IGY9dGhpcy5fZGlzcGxheWVkUm93cy5sZW5ndGg7Zj4wO2YtLSl0aGlzLl9kaXNwbGF5ZWRSb3dzLmRldGFjaCgpO2E9PT13Ny5ESVNQTEFZPyh0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVu''@;'; put 'put ''dCwiZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUiKSx0aGlzLmNvbHVtbnMuZm9yRWFjaChmPT57dGhpcy5fcHJvamVjdGVkRGlzcGxheUNvbHVtbnMuaW5zZXJ0KGYuX3ZpZXcpfSksdGhpcy5yb3dzLmZvckVhY2goZj0+e3RoaXMuX2Rpc3BsYXllZFJvd3MuaW5zZXJ0KGYuX3ZpZXcpfSkpOih0''@;'; put 'put ''aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUiKSx0aGlzLmNvbHVtbnMuZm9yRWFjaChmPT57dGhpcy5fcHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zLmluc2VydChmLl92aWV3KX0pLHRoaXMucm93cy5mb3JFYWNo''@;'; put 'put ''KGY9Pnt0aGlzLl9jYWxjdWxhdGlvblJvd3MuaW5zZXJ0KGYuX3ZpZXcpfSkpfSkpLHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh3ZCh0aGlzLmRvY3VtZW50LmJvZHksImtleWRvd24iKS5zdWJzY3JpYmUoYT0+eyJTaGlmdCI9PT1h''@;'; put 'put ''LmtleSYmKHRoaXMuc2VsZWN0aW9uLnNoaWZ0UHJlc3NlZD0hMCl9KSx3ZCh0aGlzLmRvY3VtZW50LmJvZHksImtleXVwIikuc3Vic2NyaWJlKGE9PnsiU2hpZnQiPT09YS5rZXkmJih0aGlzLnNlbGVjdGlvbi5zaGlmdFByZXNzZWQ9ITEpfSkpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJz''@;'; put 'put ''Y3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1yZXNpemUoKXt0aGlzLm9yZ2FuaXplci5yZXNpemUoKX1kYXRhQ2hhbmdlZCgpe3RoaXMuaXRlbXMucmVmcmVzaCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChYZykscnQo''@;'; put 'put ''XzQpLHJ0KHk3KSxydChDNykscnQoZzcpLHJ0KE5zZSkscnQoUVUpLHJ0KGpvKSxydChUZCkscnQoRmEpLHJ0KFZpKSxydCh5NCkscnQoVGEpLHJ0KG8zKSxydChWc2UpLHJ0KFVvKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdXSxjb250ZW50''@;'; put 'put ''UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiYoRm8oZCxfNyw1KSxGbyhkLEdVLDUpLEZvKGQsSmcsNCksRm8oZCxRZyw0KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5pdGVyYXRvcj1oLmZpcnN0KSx1aShoPWNpKCkpJiYoZi5wbGFjZWhvbGRlcj1oLmZpcnN0KSx1aShoPWNp''@;'; put 'put ''KCkpJiYoZi5jb2x1bW5zPWgpLHVpKGg9Y2koKSkmJihmLnJvd3M9aCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxmKXtpZigxJmEmJihObyhfTGUsNSxWaSksTm8od0xlLDUsZmEpLE5vKENMZSw1LGZhKSxObyhTTGUsNSxmYSksTm8oTUxlLDUsZmEpLE5vKGtMZSw1LGZhKSksMiZhKXtsZXQg''@;'; put 'put ''ZDt1aShkPWNpKCkpJiYoZi5kYXRhZ3JpZFRhYmxlPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLnNjcm9sbGFibGVDb2x1bW5zPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLl9wcm9qZWN0ZWREaXNwbGF5Q29sdW1ucz1kLmZpcnN0KSx1aShkPWNpKCkpJiYoZi5fcHJvamVjdGVkQ2FsY3VsYXRp''@;'; put 'put ''b25Db2x1bW5zPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLl9kaXNwbGF5ZWRSb3dzPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLl9jYWxjdWxhdGlvblJvd3M9ZC5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImRhdGFncmlkLWhvc3QiLCEw''@;'; put 'put ''KSgiZGF0YWdyaWQtZGV0YWlsLW9wZW4iLGYuZGV0YWlsU2VydmljZS5pc09wZW4pfSxpbnB1dHM6e2NsckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCIsY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiJjbHJEZ1NpbmdsZUFj''@;'; put 'put ''dGlvbmFibGVBcmlhTGFiZWwiLGNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWw6ImNsckRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWwiLGNsckRnRGlzYWJsZVBhZ2VGb2N1czoiY2xyRGdEaXNhYmxlUGFnZUZvY3VzIixsb2FkaW5nOlsiY2xyRGdMb2FkaW5nIiwibG9hZGluZyJdLHNlbGVj''@;'; put 'put ''dGVkOlsiY2xyRGdTZWxlY3RlZCIsInNlbGVjdGVkIl0sc2luZ2xlU2VsZWN0ZWQ6WyJjbHJEZ1NpbmdsZVNlbGVjdGVkIiwic2luZ2xlU2VsZWN0ZWQiXSxjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uOiJjbHJEZ1ByZXNlcnZlU2VsZWN0aW9uIixyb3dTZWxlY3Rpb25Nb2RlOlsiY2xyRGdSb3dT''@;'; put 'put ''ZWxlY3Rpb24iLCJyb3dTZWxlY3Rpb25Nb2RlIl0sdHJhY2tCeTpbImNsckRnSXRlbXNUcmFja0J5IiwidHJhY2tCeSJdfSxvdXRwdXRzOntzZWxlY3RlZENoYW5nZWQ6ImNsckRnU2VsZWN0ZWRDaGFuZ2UiLHNpbmdsZVNlbGVjdGVkQ2hhbmdlZDoiY2xyRGdTaW5nbGVTZWxlY3RlZENoYW5n''@;'; put 'put ''ZSIscmVmcmVzaDoiY2xyRGdSZWZyZXNoIn0sZmVhdHVyZXM6W3JpKFtDNyxjSSxpMyx5NCxfNCxYZyxnNyx5NyxnUyxUZCxOc2UsV1UsbzMsUVUsVnNlXSldLG5nQ29udGVudFNlbGVjdG9yczpSTGUsZGVjbHM6MzIsdmFyczo3LGNvbnN0czpbWzEsImRhdGFncmlkLW91dGVyLXdyYXBwZXIi''@;'; put 'put ''XSxbMSwiZGF0YWdyaWQtaW5uZXItd3JhcHBlciJdLFsxLCJkYXRhZ3JpZCJdLFsiZGF0YWdyaWQiLCIiXSxbMSwiZGF0YWdyaWQtdGFibGUtd3JhcHBlciJdLFsicm9sZSIsImdyaWQiLCJ0YWJpbmRleCIsIi0xIiwxLCJkYXRhZ3JpZC10YWJsZSJdLFsiZGF0YWdyaWRUYWJsZSIsIiJdLFsi''@;'; put 'put ''cm9sZSIsInJvd2dyb3VwIiwxLCJkYXRhZ3JpZC1oZWFkZXIiXSxbInJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXJvdyJdLFsxLCJkYXRhZ3JpZC1yb3ctbWFzdGVyIiwiZGF0YWdyaWQtcm93LWZsZXgiXSxbMSwiZGF0YWdyaWQtcm93LXN0aWNreSJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIs''@;'; put 'put ''ImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLXNlbGVjdCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiLDQsIm5nSWYiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQt''@;'; put 'put ''Zml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3Jp''@;'; put 'put ''ZC1jb2x1bW4gZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUiXSxbInByb2plY3RlZERpc3BsYXlDb2x1bW5zIiwiIl0sWyJkaXNwbGF5ZWRSb3dzIiwiIl0sWzQsIm5nSWYiXSxbImNs''@;'; put 'put ''YXNzIiwiZGF0YWdyaWQtc3Bpbm5lciIsNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSJdLFsxLCJkYXRhZ3JpZC1jYWxjdWxhdGlvbi1oZWFkZXIiXSxbInByb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucyIsIiJdLFsiY2FsY3VsYXRpb25Sb3dzIiwiIl0sWyJyb2xl''@;'; put 'put ''IiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbInR5cGUiLCJjaGVja2JveCIsInRhYmluZGV4IiwiLTEiLDMsImlk''@;'; put 'put ''IiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiLCJjbHItY29sLW51bGwiLDMsImZvciJdLFsxLCJjbHItc3Itb25seSJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1''@;'; put 'put ''bW4iLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImRhdGFncmlkLWNvbHVtbiIsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJk''@;'; put 'put ''YXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWzEsImRhdGFncmlkLXNwaW5uZXIiXSxbImNsck1lZGl1bSIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKElMZSksRHIoMCkseWUoMSwiZGl2Iiww''@;'; put 'put ''KSgyLCJkaXYiLDEpKDMsImRpdiIsMiwzKSg1LCJkaXYiLDQpKDYsImRpdiIsNSw2KSg4LCJkaXYiLDcpKDksImRpdiIsOCkoMTAsImRpdiIsOSkoMTEsImRpdiIsMTApLHR0KDEyLEVMZSw3LDUsImRpdiIsMTEpLHR0KDEzLHhMZSwyLDEsImRpdiIsMTIpLHR0KDE0LEFMZSwyLDEsImRpdiIs''@;'; put 'put ''MTMpLHR0KDE1LFRMZSwyLDEsImRpdiIsMTQpLENlKCkseWUoMTYsImRpdiIsMTUpLGVzKDE3LG51bGwsMTYpLENlKCkoKSgpKCksZXMoMTksbnVsbCwxNyksRHIoMjEsMSksdHQoMjIsT0xlLDEsMCwiY2xyLWRnLXBsYWNlaG9sZGVyIiwxOCksQ2UoKSgpKCksRHIoMjMsMiksdHQoMjQsRExl''@;'; put 'put ''LDMsMCwiZGl2IiwxOSksQ2UoKSxEcigyNSwzKSxDZSgpLHllKDI2LCJkaXYiLDIwKSgyNywiZGl2IiwyMSksZXMoMjgsbnVsbCwyMiksQ2UoKSxlcygzMCxudWxsLDIzKSxDZSgpKSwyJmEmJihTZSgzKSxScigiYXJpYS1oaWRkZW4iLCEhZi5kZXRhaWxTZXJ2aWNlLmlzT3Blbnx8bnVsbCks''@;'; put 'put ''U2UoOSksUmUoIm5nSWYiLGYuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1mLlNFTEVDVElPTl9UWVBFLk11bHRpKSxTZSgxKSxSZSgibmdJZiIsZi5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWYuU0VMRUNUSU9OX1RZUEUuU2luZ2xlKSxTZSgxKSxSZSgibmdJZiIsZi5yb3dBY3Rpb25T''@;'; put 'put ''ZXJ2aWNlLmhhc0FjdGlvbmFibGVSb3cpLFNlKDEpLFJlKCJuZ0lmIixmLmV4cGFuZGFibGVSb3dzLmhhc0V4cGFuZGFibGVSb3d8fGYuZGV0YWlsU2VydmljZS5lbmFibGVkKSxTZSg3KSxSZSgibmdJZiIsIWYucGxhY2Vob2xkZXIpLFNlKDIpLFJlKCJuZ0lmIixmLmxvYWRpbmcpKX0sZGVw''@;'; put 'put ''ZW5kZW5jaWVzOltHVSxSaCwkaSxlWixSMCxXYSx6YSxlbF0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksdFo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmNvbHVtbnNTZXJ2aWNlPWEsdGhpcy5hbGxTZWxlY3RlZD1uZXcgeHJ9Z2V0IGNsckFsbFNlbGVjdGVkKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuYWxsU2VsZWN0ZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGFsbEhpZGVhYmxlc1Zpc2libGUoKXtyZXR1cm4gMD09PXRoaXMuaGlkZWFibGVDb2x1bW5zKCkuZmlsdGVyKGE9PmEudmFsdWUuaGlkZGVuKS5sZW5ndGh9c2VsZWN0QWxsKCl7dGhpcy5oaWRlYWJsZUNvbHVtbnMoKS5mb3JF''@;'; put 'put ''YWNoKGE9PnRoaXMuY29sdW1uc1NlcnZpY2UuZW1pdFN0YXRlQ2hhbmdlKGEse2hpZGRlbjohMSxjaGFuZ2VzOlt6MC5ISURERU5dfSkpLHRoaXMuYWxsU2VsZWN0ZWQubmV4dCghMCl9aGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5maWx0ZXIo''@;'; put 'put ''YT0+YS52YWx1ZS5oaWRlYWJsZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KG8zKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4tdG9nZ2xlLWJ1dHRvbiJdXSxvdXRwdXRzOntjbHJBbGxTZWxl''@;'; put 'put ''Y3RlZDoiY2xyQWxsU2VsZWN0ZWQifSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwic3dpdGNoLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5j''@;'; put 'put ''dGlvbihhLGYpezEmYSYmKFRpKCkseWUoMCwiYnV0dG9uIiwwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuc2VsZWN0QWxsKCl9KSxEcigxKSxDZSgpKSwyJmEmJlJlKCJkaXNhYmxlZCIsZi5hbGxIaWRlYWJsZXNWaXNpYmxlKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksQnNl''@;'; put 'put ''PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uLXRvZ2dsZS10aXRsZSJdXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJz''@;'; put 'put ''OjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCk7Y29uc3QganNlPWw9Pmw7bGV0IG5aPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5faXRlbXM9YX1zZXQgdHJhY2tCeShhKXthIT09anNlJiZ0aGlzLl9p''@;'; put 'put ''dGVtcyYmKHRoaXMuX2l0ZW1zLml0ZXJhdG9yVHJhY2tCeT1hKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoXzQsOCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ0ZvclRyYWNrQnkiLCIiXV0saW5wdXRzOnt0''@;'; put 'put ''cmFja0J5OlsibmdGb3JUcmFja0J5IiwidHJhY2tCeSJdfX0pLGx9KSgpLHJaPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuY29tbW9uU3RyaW5ncz1hLHRoaXMuY29sdW1uc1NlcnZpY2U9Zix0aGlzLnBvcG92ZXJJZD1IdSgpLHRoaXMuc21hcnRQb3NpdGlvbj17YXhp''@;'; put 'put ''czpTYy5WRVJUSUNBTCxzaWRlOnhmLkJFRk9SRSxhbmNob3I6TmEuU1RBUlQsY29udGVudDpOYS5TVEFSVH0sdGhpcy50cmFja0J5Rm49anNlLHRoaXMuc3Vic2NyaXB0aW9uPWQub3BlbkNoYW5nZS5zdWJzY3JpYmUoaD0+dGhpcy5vcGVuU3RhdGU9aCl9Z2V0IGFsbENvbHVtbnNWaXNpYmxl''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX2FsbENvbHVtbnNWaXNpYmxlfXNldCBhbGxDb2x1bW5zVmlzaWJsZShhKXt0aGlzLl9hbGxDb2x1bW5zVmlzaWJsZT1hfWdldCBoaWRlYWJsZUNvbHVtblN0YXRlcygpe3JldHVybiB0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKGY9PmYudmFsdWUu''@;'; put 'put ''aGlkZWFibGUpLm1hcChmPT5mLnZhbHVlKX1nZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aC10aGlzLmhpZGVhYmxlQ29sdW1uU3RhdGVzLmxlbmd0aD09MCYmMT09PXRoaXMuaGlkZWFibGVDb2x1bW5TdGF0ZXMu''@;'; put 'put ''ZmlsdGVyKGY9PiFmLmhpZGRlbikubGVuZ3RofW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX10b2dnbGVDb2x1bW5TdGF0ZShhLGYpe2NvbnN0IGQ9dGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmZpbHRlcihoPT5oLnZhbHVlPT09YSlbMF07dGhpcy5j''@;'; put 'put ''b2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2UoZCx7aGlkZGVuOmYsY2hhbmdlczpbejAuSElEREVOXX0pfXRvZ2dsZVN3aXRjaFBhbmVsKCl7dGhpcy5vcGVuU3RhdGU9IXRoaXMub3BlblN0YXRlfWFsbENvbHVtbnNTZWxlY3RlZCgpe3RoaXMuYWxsU2VsZWN0ZWRFbGVtZW50Lm5hdGl2''@;'; put 'put ''ZUVsZW1lbnQuZm9jdXMoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVGEpLHJ0KG8zKSxydChRYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uLXRvZ2dsZSJdXSxjb250ZW50UXVlcmllczpm''@;'; put 'put ''dW5jdGlvbihhLGYsZCl7aWYoMSZhJiYoRm8oZCxCc2UsNSksRm8oZCx0Wiw1KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5jdXN0b21Ub2dnbGVUaXRsZT1oLmZpcnN0KSx1aShoPWNpKCkpJiYoZi5jdXN0b21Ub2dnbGVCdXR0b249aC5maXJzdCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24o''@;'; put 'put ''YSxmKXtpZigxJmEmJk5vKFBMZSw1LFZpKSwyJmEpe2xldCBkO3VpKGQ9Y2koKSkmJihmLmFsbFNlbGVjdGVkRWxlbWVudD1kLmZpcnN0KX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY29sdW1uLXN3aXRjaC13cmFwcGVyIiwhMCkoImFjdGl2ZSIs''@;'; put 'put ''Zi5vcGVuU3RhdGUpfSxmZWF0dXJlczpbcmkoW1EyLHQ3LFFhXSldLG5nQ29udGVudFNlbGVjdG9yczp6TGUsZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInJvbGUiLCJidXR0b24iLCJ0eXBlIiwiYnV0dG9uIiwiY2xyUG9wb3ZlckFuY2hvciIsIiIsImNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0''@;'; put 'put ''b24iLCIiLDEsImJ0biIsImJ0bi1zbSIsImNvbHVtbi10b2dnbGUtLWFjdGlvbiJdLFsiY2xhc3MiLCJjb2x1bW4tc3dpdGNoIiwicm9sZSIsImRpYWxvZyIsImNsckZvY3VzVHJhcCIsIiIsMywiaWQiLDQsImNsclBvcG92ZXJDb250ZW50IiwiY2xyUG9wb3ZlckNvbnRlbnRBdCIsImNsclBv''@;'; put 'put ''cG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSJdLFsicm9sZSIsImRpYWxvZyIsImNsckZvY3VzVHJhcCIsIiIsMSwiY29sdW1uLXN3aXRjaCIsMywiaWQiXSxbMSwic3dpdGNoLWhlYWRlciJdLFsidGFiaW5kZXgiLCItMSIs''@;'; put 'put ''MSwiY2xyLXNyLW9ubHkiXSxbImFsbFNlbGVjdGVkIiwiIl0sWzQsIm5nSWYiXSxbImNsclBvcG92ZXJDbG9zZUJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwidG9nZ2xlLXN3aXRjaC1jbG9zZS1idXR0b24iXSxbInNoYXBlIiwid2luZG93''@;'; put 'put ''LWNsb3NlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWzEsImNsci1zci1vbmx5Il0sWzEsInN3aXRjaC1jb250ZW50IiwibGlzdC11bnN0eWxlZCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMSwic3dpdGNoLWZvb3RlciJdLFszLCJjbHJBbGxTZWxlY3RlZCIsNCwi''@;'; put 'put ''bmdJZiJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLDMsImRpc2FibGVkIiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFszLCJjbHJBbGxTZWxlY3RlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKGpMZSks''@;'; put 'put ''eWUoMCwiYnV0dG9uIiwwKSxZZSgxKSxDZSgpLHR0KDIsQkxlLDE2LDEwLCJkaXYiLDEpKSwyJmEmJihScigiYXJpYS1jb250cm9scyIsZi5wb3BvdmVySWQpKCJhcmlhLW93bnMiLGYucG9wb3ZlcklkKSgiYXJpYS1leHBhbmRlZCIsZi5vcGVuU3RhdGUpLFNlKDEpLHdyKCIgIixmLmNvbW1v''@;'; put 'put ''blN0cmluZ3Mua2V5cy5waWNrQ29sdW1ucywiICIpLFNlKDEpLFJlKCJjbHJQb3BvdmVyQ29udGVudCIsZi5vcGVuU3RhdGUpKCJjbHJQb3BvdmVyQ29udGVudEF0IixmLnNtYXJ0UG9zaXRpb24pKCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCEwKSgiY2xyUG9wb3Zl''@;'; put 'put ''ckNvbnRlbnRTY3JvbGxUb0Nsb3NlIiwhMCkpfSxkZXBlbmRlbmNpZXM6W1YwLHRaLHJTLGFTLG9TLGc0LCRpLG5zZSxKYSxSYSxuWixSMCxCMCxXYSx6YSxlbCx5ZF0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksVXNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5leHBhbmRh''@;'; put 'put ''YmxlUm93c0NvdW50PWEsdGhpcy5leHBhbmRhYmxlUm93c0NvdW50JiZ0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQucmVnaXN0ZXIoKX1uZ09uRGVzdHJveSgpe3RoaXMuZXhwYW5kYWJsZVJvd3NDb3VudCYmdGhpcy5leHBhbmRhYmxlUm93c0NvdW50LnVucmVnaXN0ZXIoKX19cmV0dXJuIGwu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoeTcsOCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJJZkV4cGFuZGVkIiwiIl1dfSksbH0pKCksaEk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLnNlbGVj''@;'; put 'put ''dGlvbj1hLHRoaXMuZGV0YWlsU2VydmljZT1mLHRoaXMuY29sdW1uc1NlcnZpY2U9ZCx0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLlNFTEVDVElPTl9UWVBFPXNsfWdldCBoYXNIaWRlYWJsZUNvbHVtbnMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5oYXNIaWRlYWJsZUNvbHVtbnN9''@;'; put 'put ''fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KEM3KSxydChUZCkscnQobzMpLHJ0KFRhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1mb290ZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lm''@;'; put 'put ''KDEmYSYmRm8oZCxyWiw1KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLnRvZ2dsZT1oLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiZGF0YWdyaWQtZm9vdGVyIiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczpLTGUsZGVjbHM6Myx2YXJz''@;'; put 'put ''OjIsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIl0sWzEsImRhdGFncmlkLWZvb3Rlci1zZWxlY3QiXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwiY2hlY2tlZCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsIiJdLFsxLCJjbHItc3It''@;'; put 'put ''b25seSJdLFsxLCJkYXRhZ3JpZC1mb290ZXItZGVzY3JpcHRpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgkTGUpLHR0KDAsWUxlLDgsMiwibmctY29udGFpbmVyIiwwKSx0dCgxLEdMZSw1LDEsIm5nLWNvbnRhaW5lciIsMCksRHIoMikpLDImYSYmKFJlKCJuZ0lmIixm''@;'; put 'put ''LnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09Zi5TRUxFQ1RJT05fVFlQRS5NdWx0aSYmZi5zZWxlY3Rpb24uY3VycmVudC5sZW5ndGg+MCksU2UoMSksUmUoIm5nSWYiLCFmLmRldGFpbFNlcnZpY2UuaXNPcGVuKSl9LGRlcGVuZGVuY2llczpbVjAsclosJGksQjAsZWxdLGVuY2Fwc3VsYXRp''@;'; put 'put ''b246Mn0pLGx9KSgpO2NvbnN0IGlaPW5ldyBNaSgiQ09MVU1OX1NUQVRFIiksZU5lPXtwcm92aWRlOmlaLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gUUhlKCl7cmV0dXJuIG5ldyBPZSh7Y2hhbmdlczpbXX0pfX07bGV0IG9aPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5wYWdlPWEs''@;'; put 'put ''dGhpcy5wYWdlU2l6ZU9wdGlvbnNJZD1IdSgpfW5nT25Jbml0KCl7KCF0aGlzLnBhZ2VTaXplT3B0aW9uc3x8MD09PXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCkmJih0aGlzLnBhZ2VTaXplT3B0aW9ucz1bdGhpcy5wYWdlLnNpemVdKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCkocnQoeTQpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2Utc2l6ZSJdXSxpbnB1dHM6e3BhZ2VTaXplT3B0aW9uczpbImNsclBhZ2VTaXplT3B0aW9ucyIsInBhZ2VTaXplT3B0aW9ucyJdLHBhZ2VTaXplT3B0aW9u''@;'; put 'put ''c0lkOlsiY2xyUGFnZVNpemVPcHRpb25zSWQiLCJwYWdlU2l6ZU9wdGlvbnNJZCJdfSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwiY2xyLXNlbGVjdC13cmFwcGVyIl0sWzMsImlkIiwibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywibmdWYWx1''@;'; put 'put ''ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsIm5nVmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApLHllKDEsImRpdiIsMCkoMiwic2VsZWN0IiwxKSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYucGFnZS5zaXplPWh9KSx0dCgz''@;'; put 'put ''LHFMZSwyLDIsIm9wdGlvbiIsMiksQ2UoKSgpKSwyJmEmJihTZSgyKSxncigiY2xyLXBhZ2Utc2l6ZS1zZWxlY3QiLCEwKSxSZSgiaWQiLGYucGFnZVNpemVPcHRpb25zSWQpKCJuZ01vZGVsIixmLnBhZ2Uuc2l6ZSksU2UoMSksUmUoIm5nRm9yT2YiLGYucGFnZVNpemVPcHRpb25zKSl9LGRl''@;'; put 'put ''cGVuZGVuY2llczpbTDAsV2EsemEsUmEsUzEsTTFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLHBJPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMucGFnZT1hLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMuZGV0YWlsU2VydmljZT1kLHRoaXMuY3VycmVudENoYW5nZWQ9''@;'; put 'put ''bmV3IHhyKCExKSx0aGlzLnBhZ2UuYWN0aXZhdGVkPSEwfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLnBhZ2Uuc2l6ZX1zZXQgcGFnZVNpemUoYSl7Im51bWJlciI9PXR5cGVvZiBhJiYodGhpcy5wYWdlLnNpemU9YSl9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5wYWdlLnRvdGFs''@;'; put 'put ''SXRlbXN9c2V0IHRvdGFsSXRlbXMoYSl7Im51bWJlciI9PXR5cGVvZiBhJiYodGhpcy5wYWdlLnRvdGFsSXRlbXM9YSl9Z2V0IGxhc3RQYWdlKCl7cmV0dXJuIHRoaXMucGFnZS5sYXN0fXNldCBsYXN0UGFnZShhKXsibnVtYmVyIj09dHlwZW9mIGEmJih0aGlzLnBhZ2UubGFzdD1hKX1nZXQg''@;'; put 'put ''Y3VycmVudFBhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlLmN1cnJlbnR9c2V0IGN1cnJlbnRQYWdlKGEpeyJudW1iZXIiPT10eXBlb2YgYSYmKHRoaXMucGFnZS5jdXJyZW50PWEpfWdldCBmaXJzdEl0ZW0oKXtyZXR1cm4gdGhpcy5wYWdlLmZpcnN0SXRlbX1nZXQgbGFzdEl0ZW0oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5wYWdlLmxhc3RJdGVtfWdldCBtaWRkbGVQYWdlcygpe2NvbnN0IGE9W107cmV0dXJuIHRoaXMucGFnZS5jdXJyZW50PjEmJmEucHVzaCh0aGlzLnBhZ2UuY3VycmVudC0xKSxhLnB1c2godGhpcy5wYWdlLmN1cnJlbnQpLHRoaXMucGFnZS5jdXJyZW50PHRoaXMucGFnZS5sYXN0JiZh''@;'; put 'put ''LnB1c2godGhpcy5wYWdlLmN1cnJlbnQrMSksYX1uZ09uSW5pdCgpe3RoaXMucGFnZS5zaXplfHwodGhpcy5wYWdlLnNpemU9MTApLHRoaXMuX3BhZ2VTdWJzY3JpcHRpb249dGhpcy5wYWdlLmNoYW5nZS5zdWJzY3JpYmUoYT0+dGhpcy5jdXJyZW50Q2hhbmdlZC5lbWl0KGEpKX1uZ09uRGVz''@;'; put 'put ''dHJveSgpe3RoaXMucGFnZS5yZXNldFBhZ2VTaXplKCEwKSx0aGlzLl9wYWdlU3Vic2NyaXB0aW9uJiZ0aGlzLl9wYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9cHJldmlvdXMoKXt0aGlzLnBhZ2UucHJldmlvdXMoKX1uZXh0KCl7dGhpcy5wYWdlLm5leHQoKX11cGRhdGVDdXJyZW50''@;'; put 'put ''UGFnZShhKXtjb25zdCBmPXBhcnNlSW50KGEudGFyZ2V0LnZhbHVlLDEwKTtpc05hTihmKXx8KHRoaXMucGFnZS5jdXJyZW50PWY8MT8xOmY+dGhpcy5wYWdlLmxhc3Q/dGhpcy5wYWdlLmxhc3Q6ZiksdGhpcy5jdXJyZW50UGFnZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU9dGhpcy5w''@;'; put 'put ''YWdlLmN1cnJlbnR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHk0KSxydChUYSkscnQoVGQpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2luYXRpb24iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24o''@;'; put 'put ''YSxmLGQpe2lmKDEmYSYmRm8oZCxvWiw1KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLl9wYWdlU2l6ZUNvbXBvbmVudD1oLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oWExlLDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYuY3VycmVudFBhZ2VJbnB1''@;'; put 'put ''dFJlZj1kLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigicGFnaW5hdGlvbiIsITApfSxpbnB1dHM6e2Rpc2FibGVDdXJyZW50UGFnZUlucHV0OlsiY2xyRGdQYWdlSW5wdXREaXNhYmxlZCIsImRpc2FibGVDdXJyZW50UGFnZUlucHV0Il0s''@;'; put 'put ''cGFnZVNpemU6WyJjbHJEZ1BhZ2VTaXplIiwicGFnZVNpemUiXSx0b3RhbEl0ZW1zOlsiY2xyRGdUb3RhbEl0ZW1zIiwidG90YWxJdGVtcyJdLGxhc3RQYWdlOlsiY2xyRGdMYXN0UGFnZSIsImxhc3RQYWdlIl0sY3VycmVudFBhZ2U6WyJjbHJEZ1BhZ2UiLCJjdXJyZW50UGFnZSJdfSxvdXRw''@;'; put 'put ''dXRzOntjdXJyZW50Q2hhbmdlZDoiY2xyRGdQYWdlQ2hhbmdlIn0sbmdDb250ZW50U2VsZWN0b3JzOm9QZSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1s0LCJuZ0lmIl0sWyJjbGFzcyIsInBhZ2luYXRpb24tc2l6ZSIsNCwibmdJZiJdLFsxLCJwYWdpbmF0aW9uLWRlc2NyaXB0aW9uIl0sWyJj''@;'; put 'put ''bGFzcyIsInBhZ2luYXRpb24tbGlzdCIsNCwibmdJZiJdLFsxLCJwYWdpbmF0aW9uLXNpemUiXSxbMSwicGFnaW5hdGlvbi1saXN0Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLWZpcnN0IiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWzEsImNsci1zci1vbmx5Il0sWyJzaGFwZSIs''@;'; put 'put ''InN0ZXAtZm9yd2FyZC0yIiwiZGlyZWN0aW9uIiwiZG93biJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlvbi1wcmV2aW91cyIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbInR5cGUiLCJ0ZXh0IiwiY2xhc3MiLCJwYWdp''@;'; put 'put ''bmF0aW9uLWN1cnJlbnQgY2xyLWlucHV0IiwzLCJzaXplIiwidmFsdWUiLCJrZXlkb3duLmVudGVyIiwiYmx1ciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJyZWFkT25seSIsIiJdLFsidHlwZSIsImJ1dHRvbiIsMSwicGFnaW5hdGlvbi1uZXh0IiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJz''@;'; put 'put ''aGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tbGFzdCIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic2hhcGUiLCJzdGVwLWZvcndhcmQtMiIsImRpcmVjdGlvbiIsInVwIl0sWyJ0eXBlIiwidGV4dCIsMSwicGFnaW5hdGlv''@;'; put 'put ''bi1jdXJyZW50IiwiY2xyLWlucHV0IiwzLCJzaXplIiwidmFsdWUiLCJrZXlkb3duLmVudGVyIiwiYmx1ciJdLFsiY3VycmVudFBhZ2VJbnB1dCIsIiJdLFsxLCJwYWdpbmF0aW9uLWRlc2NyaXB0aW9uLWNvbXBhY3QiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaShpUGUpLHR0''@;'; put 'put ''KDAsblBlLDUsMiwibmctY29udGFpbmVyIiwwKSx0dCgxLHJQZSwxNCwxMCwibmctY29udGFpbmVyIiwwKSksMiZhJiYoUmUoIm5nSWYiLCFmLmRldGFpbFNlcnZpY2UuaXNPcGVuKSxTZSgxKSxSZSgibmdJZiIsZi5kZXRhaWxTZXJ2aWNlLmlzT3BlbikpfSxkZXBlbmRlbmNpZXM6WyRpLEph''@;'; put 'put ''XSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTtjb25zdCBNNz0iZGF0YWdyaWQtZml4ZWQtd2lkdGgiLG1JPSJkYXRhZ3JpZC1oaWRkZW4tY29sdW1uIjtsZXQgZTU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5lbD1hLHRoaXMucmVuZGVyZXI9Zix0aGlzLnN1YnNjcmlw''@;'; put 'put ''dGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZC5maWx0ZXJSZW5kZXJTdGVwcyhPZC5DTEVBUl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jbGVhcldpZHRoKCkpKX1zZXQgY29sdW1uU3RhdGUoYSl7dGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5zdGF0ZVN1YnNjcmlw''@;'; put 'put ''dGlvbi51bnN1YnNjcmliZSgpLHRoaXMucnVuQWxsQ2hhbmdlcz1Ic2UsdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbj1hLnN1YnNjcmliZShmPT50aGlzLnN0YXRlQ2hhbmdlcyhmKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpLHRo''@;'; put 'put ''aXMuc3RhdGVTdWJzY3JpcHRpb24mJnRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1zdGF0ZUNoYW5nZXMoYSl7dGhpcy5ydW5BbGxDaGFuZ2VzJiYoYS5jaGFuZ2VzPXRoaXMucnVuQWxsQ2hhbmdlcyxkZWxldGUgdGhpcy5ydW5BbGxDaGFuZ2VzKSxhLmNoYW5nZXMmJmEu''@;'; put 'put ''Y2hhbmdlcy5sZW5ndGgmJmEuY2hhbmdlcy5mb3JFYWNoKGY9Pntzd2l0Y2goZil7Y2FzZSB6MC5XSURUSDp0aGlzLnNldFdpZHRoKGEpO2JyZWFrO2Nhc2UgejAuSElEREVOOnRoaXMuc2V0SGlkZGVuKGEpfX0pfWNsZWFyV2lkdGgoKXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMu''@;'; put 'put ''ZWwubmF0aXZlRWxlbWVudCxNNyksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixudWxsKX1zZXRXaWR0aChhKXthLnN0cmljdFdpZHRoP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LE03KTp0aGlzLnJlbmRl''@;'; put 'put ''cmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxNNyksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixhLndpZHRoKyJweCIpfXNldEhpZGRlbihhKXthLmhpZGRlbj90aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0''@;'; put 'put ''aXZlRWxlbWVudCxtSSk6dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsbUkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChWaSkscnQoam8pLHJ0KFhnKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2Vs''@;'; put 'put ''ZWN0b3JzOltbImNsci1kZy1jZWxsIl1dfSksbH0pKCksdDU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPKXt0aGlzLmVsPWEsdGhpcy5yZW5kZXJlcj1mLHRoaXMub3JnYW5pemVyPWQsdGhpcy5kb21BZGFwdGVyPWgsdGhpcy5jb2x1bW5SZXNpemVyU2VydmljZT1t''@;'; put 'put ''LHRoaXMuY29sdW1uc1NlcnZpY2U9Xyx0aGlzLmNvbHVtblN0YXRlPU8sdGhpcy5yZXNpemVFbWl0dGVyPW5ldyB4cix0aGlzLndpZHRoU2V0PSExLHRoaXMuYXV0b1NldD0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5vcmdhbml6ZXIuZmls''@;'; put 'put ''dGVyUmVuZGVyU3RlcHMoT2QuQ0xFQVJfV0lEVEhTKS5zdWJzY3JpYmUoKCk9PnRoaXMuY2xlYXJXaWR0aCgpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goTy5zdWJzY3JpYmUoWD0+dGhpcy5zdGF0ZUNoYW5nZXMoWCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JF''@;'; put 'put ''YWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9Z2V0Q29sdW1uV2lkdGhTdGF0ZSgpe2NvbnN0IGE9dGhpcy5kZXRlY3RTdHJpY3RXaWR0aCgpO3JldHVybnt3aWR0aDp0aGlzLmNvbXB1dGVXaWR0aChhKSxzdHJpY3RXaWR0aDphfX1zZXRDb2x1bW5TdGF0ZShhKXt0aGlzLmNvbHVtbnNTZXJ2aWNl''@;'; put 'put ''LmNvbHVtbnNbYV09dGhpcy5jb2x1bW5TdGF0ZX1zdGF0ZUNoYW5nZXMoYSl7YS5jaGFuZ2VzJiZhLmNoYW5nZXMubGVuZ3RoJiZhLmNoYW5nZXMuZm9yRWFjaChmPT57c3dpdGNoKGYpe2Nhc2UgejAuV0lEVEg6dGhpcy5zZXRXaWR0aChhKTticmVhaztjYXNlIHowLkhJRERFTjp0aGlzLnNl''@;'; put 'put ''dEhpZGRlbihhKX19KX1jbGVhcldpZHRoKCl7dGhpcy53aWR0aFNldCYmIXRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5JiZ0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLG51bGwpLHRoaXMuYXV0b1NldCYmdGhpcy5yZW5kZXJl''@;'; put 'put ''ci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsTTcpfWRldGVjdFN0cmljdFdpZHRoKCl7cmV0dXJuIHRoaXMuY29sdW1uUmVzaXplclNlcnZpY2UucmVzaXplZEJ5P3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2Uud2lkdGhBZnRlclJlc2l6ZTp0aGlzLmF1dG9TZXQ/MDp0aGlz''@;'; put 'put ''LmRvbUFkYXB0ZXIudXNlckRlZmluZWRXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpfWNvbXB1dGVXaWR0aChhKXtsZXQgZj1hO3JldHVybiBmfHwoZj10aGlzLmRvbUFkYXB0ZXIuc2Nyb2xsV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50KSksZn1zZXRXaWR0aChhKXthLnN0cmljdFdp''@;'; put 'put ''ZHRoPyh0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeSYmKHRoaXMucmVzaXplRW1pdHRlci5lbWl0KGEud2lkdGgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYS53aWR0aCsicHgiKSx0aGlzLndpZHRoU2V0PSExKSx0aGlz''@;'; put 'put ''LnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxNNyksdGhpcy5hdXRvU2V0PSExKToodGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsTTcpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0''@;'; put 'put ''aCIsYS53aWR0aCsicHgiKSx0aGlzLndpZHRoU2V0PSEwLHRoaXMuYXV0b1NldD0hMCl9c2V0SGlkZGVuKGEpe2EuaGlkZGVuP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LG1JKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxl''@;'; put 'put ''bWVudCxtSSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChqbykscnQoWGcpLHJ0KHgxKSxydChZVSkscnQobzMpLHJ0KGlaKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4iXV0sb3V0''@;'; put 'put ''cHV0czp7cmVzaXplRW1pdHRlcjoiY2xyRGdDb2x1bW5SZXNpemUifSxmZWF0dXJlczpbcmkoW1lVLGVOZV0pXX0pLGx9KSgpLGlOZT0oKCk9PntjbGFzcyBse3VzZXJEZWZpbmVkV2lkdGgoYSl7cmV0dXJuIDB9c2Nyb2xsQmFyV2lkdGgoYSl7cmV0dXJuIDB9c2Nyb2xsV2lkdGgoYSl7cmV0''@;'; put 'put ''dXJuIDB9Y29tcHV0ZWRIZWlnaHQoYSl7cmV0dXJuIDB9Y2xpZW50UmVjdChhKXtyZXR1cm57dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19bWluV2lkdGgoYSl7cmV0dXJuIDB9Zm9jdXMoYSl7fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxuNT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuY29sdW1uc1NlcnZpY2U9YSx0aGlzLnN1YnNjcmlwdGlvbnM9W119bmdBZnRlckNvbnRlbnRJbml0''@;'; put 'put ''KCl7dGhpcy5zZXRDb2x1bW5TdGF0ZSgpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuY2VsbHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldENvbHVtblN0YXRlKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJl''@;'; put 'put ''KCkpfXNldENvbHVtblN0YXRlKCl7dGhpcy5jZWxscy5sZW5ndGg9PT10aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMubGVuZ3RoJiZ0aGlzLmNlbGxzLmZvckVhY2goKGEsZik9Pnt0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNbZl0mJihhLmNvbHVtblN0YXRlPXRoaXMuY29sdW1uc1Nl''@;'; put 'put ''cnZpY2UuY29sdW1uc1tmXSl9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQobzMpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXJvdyJdLFsiY2xyLWRnLXJvdy1kZXRhaWwiXV0sY29udGVudFF1ZXJpZXM6''@;'; put 'put ''ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmRm8oZCxlNSw0KSwyJmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLmNlbGxzPWgpfX19KSxsfSkoKTtjb25zdCBvTmU9bD0+SGEobCk/bmV3IHgxOm5ldyBpTmU7bGV0IGs3PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyxYLGFl''@;'; put 'put ''LHBlKXt0aGlzLm9yZ2FuaXplcj1hLHRoaXMuaXRlbXM9Zix0aGlzLnBhZ2U9ZCx0aGlzLmRvbUFkYXB0ZXI9aCx0aGlzLmVsPW0sdGhpcy5yZW5kZXJlcj1fLHRoaXMuZGV0YWlsU2VydmljZT1PLHRoaXMudGFibGVTaXplU2VydmljZT1YLHRoaXMuY29sdW1uc1NlcnZpY2U9YWUsdGhpcy5u''@;'; put 'put ''Z1pvbmU9cGUsdGhpcy5faGVpZ2h0U2V0PSExLHRoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITEsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5vcmdhbml6ZXIuZmlsdGVyUmVuZGVyU3RlcHMo''@;'; put 'put ''T2QuQ09NUFVURV9DT0xVTU5fV0lEVEhTKS5zdWJzY3JpYmUoKCk9PnRoaXMuY29tcHV0ZUhlYWRlcnNXaWR0aCgpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wYWdlLnNpemVDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5faGVpZ2h0U2V0JiZ0aGlzLnJlc2V0RGF0YWdyaWRI''@;'; put 'put ''ZWlnaHQoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGVDaGFuZ2Uuc3Vic2NyaWJlKGJlPT50aGlzLnRvZ2dsZURldGFpbFBhbmUoYmUpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5pdGVtcy5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT50''@;'; put 'put ''aGlzLnNob3VsZFN0YWJpbGl6ZUNvbHVtbnM9ITApKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldHVwQ29sdW1ucygpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaGVhZGVycy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuc2V0dXBDb2x1bW5zKCksdGhpcy5jb2x1bW5z''@;'; put 'put ''U2l6ZXNTdGFibGU9ITEsdGhpcy5zdGFiaWxpemVDb2x1bW5zKCl9KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy50YWJsZVNpemVTZXJ2aWNlLnRhYmxlPXRoaXMuZWx9bmdBZnRlclZpZXdDaGVja2VkKCl7dGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zJiZ0aGlzLnN0YWJpbGl6ZUNvbHVt''@;'; put 'put ''bnMoKSx0aGlzLnNob3VsZENvbXB1dGVIZWlnaHQoKSYmdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy5jb21wdXRlRGF0YWdyaWRIZWlnaHQoKX0pfSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVu''@;'; put 'put ''c3Vic2NyaWJlKCkpfXRvZ2dsZURldGFpbFBhbmUoYSl7dGhpcy5oZWFkZXJzJiYoYSYmIXRoaXMuY29sdW1uc1NlcnZpY2UuaGFzQ2FjaGUoKT8odGhpcy5jb2x1bW5zU2VydmljZS5jYWNoZSgpLHRoaXMuaGVhZGVycy5mb3JFYWNoKChmLGQpPT57ZD4wJiZ0aGlzLmNvbHVtbnNTZXJ2aWNl''@;'; put 'put ''LmVtaXRTdGF0ZUNoYW5nZUF0KGQse2NoYW5nZXM6W3owLkhJRERFTl0saGlkZGVuOmF9KX0pKTphfHx0aGlzLmNvbHVtbnNTZXJ2aWNlLnJlc2V0VG9MYXN0Q2FjaGUoKSl9c2V0dXBDb2x1bW5zKCl7dGhpcy5oZWFkZXJzLmZvckVhY2goKGEsZik9PmEuc2V0Q29sdW1uU3RhdGUoZikpLHRo''@;'; put 'put ''aXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5zcGxpY2UodGhpcy5oZWFkZXJzLmxlbmd0aCksdGhpcy5yb3dzLmZvckVhY2goYT0+YS5zZXRDb2x1bW5TdGF0ZSgpKX1zaG91bGRDb21wdXRlSGVpZ2h0KCl7cmV0dXJuIXRoaXMuX2hlaWdodFNldCYmdGhpcy5wYWdlLnNpemU+MCYmdGhpcy5p''@;'; put 'put ''dGVtcy5kaXNwbGF5ZWQubGVuZ3RoPT09dGhpcy5wYWdlLnNpemV9Y29tcHV0ZURhdGFncmlkSGVpZ2h0KCl7Y29uc3QgYT10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLmhlaWdodDt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZl''@;'; put 'put ''RWxlbWVudCwiaGVpZ2h0IixhKyJweCIpLHRoaXMuX2hlaWdodFNldD0hMH1yZXNldERhdGFncmlkSGVpZ2h0KCl7dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImhlaWdodCIsIiIpLHRoaXMuX2hlaWdodFNldD0hMX1jb21wdXRlSGVhZGVyc1dpZHRoKCl7''@;'; put 'put ''Y29uc3QgYT10aGlzLmhlYWRlcnMubGVuZ3RoO2xldCBmPSEwO3RoaXMuaGVhZGVycy5mb3JFYWNoKChkLGgpPT57Y29uc3QgbT17Y2hhbmdlczpbejAuV0lEVEhdLC4uLmQuZ2V0Q29sdW1uV2lkdGhTdGF0ZSgpfTttLnN0cmljdFdpZHRofHwoZj0hMSksYT09PWgrMSYmZiYmKG0uc3RyaWN0''@;'; put 'put ''V2lkdGg9MCksdGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2VBdChoLG0pfSl9c3RhYmlsaXplQ29sdW1ucygpe3RoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMSwhdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGUmJnRoaXMuaXRlbXMuZGlzcGxheWVkLmxlbmd0aD4wJiYodGhp''@;'; put 'put ''cy5vcmdhbml6ZXIucmVzaXplKCksdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChYZykscnQoXzQpLHJ0KHk0KSxydCh4MSkscnQoVmkpLHJ0KGpvKSxydChUZCkscnQoV1UpLHJ0KG8zKSxydChV''@;'; put 'put ''bykpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmKEZvKGQsdDUsNCksRm8oZCxuNSw1KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5oZWFkZXJzPWgpLHVpKGg9Y2ko''@;'; put 'put ''KSkmJihmLnJvd3M9aCl9fSxmZWF0dXJlczpbcmkoW3twcm92aWRlOngxLHVzZUZhY3Rvcnk6b05lLGRlcHM6W3FhXX1dKV19KSxsfSkoKSxhTmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKHFBZSxYQWUsTkMsSkFlLFhvZSxRQWUsSm9lLGVUZSx0VGUpfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGwsRHNlLGRjLENVLEFmLFpIZSxJc2UscHNlLGZTLGxTLE9VLEpELFdnXV19KSxsfSkoKSxac2U9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zdGFjay1jb250ZW50Il1dfSksbH0pKCksYVo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2dlbmVyYXRl''@;'; put 'put ''ZElkPW51bGwsdGhpcy5faWQ9bnVsbH1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKGEpe3RoaXMuX2lkPSJzdHJpbmciPT10eXBlb2YgYSYmIiIhPT1hP2E6dGhpcy5fZ2VuZXJhdGVkSWQrIiJ9bmdPbkluaXQoKXt0aGlzLl9nZW5lcmF0ZWRJZD0iY2xyLXN0YWNrLWxhYmVsLSIr''@;'; put 'put ''SHUoKSx0aGlzLmlkfHwodGhpcy5faWQ9dGhpcy5fZ2VuZXJhdGVkSWQrIiIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLWxhYmVsIl1dLGhvc3RWYXJzOjEsaG9z''@;'; put 'put ''dEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZScigiaWQiLGYuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxZ''@;'; put 'put ''c2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYpe3RoaXMucGFyZW50PWEsdGhpcy5jb21tb25TdHJpbmdzPWYsdGhpcy5leHBhbmRlZD0hMSx0aGlzLmV4cGFuZGFibGU9ITEsdGhpcy5leHBhbmRlZENoYW5nZT1uZXcgeHIoITEpLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnVuaXF1ZUlk''@;'; put 'put ''PUh1KCksdGhpcy5fY2hhbmdlZENoaWxkcmVuPTAsdGhpcy5fZnVsbHlJbml0aWFsaXplZD0hMSx0aGlzLl9jaGFuZ2VkPSExLGEmJmEuYWRkQ2hpbGQoKX1zZXQgc2V0Q2hhbmdlZFZhbHVlKGEpe3RoaXMuX2NoYW5nZWQ9YSx0aGlzLnBhcmVudCYmdGhpcy5fZnVsbHlJbml0aWFsaXplZCYm''@;'; put 'put ''KGE/dGhpcy5wYXJlbnQuX2NoYW5nZWRDaGlsZHJlbisrOnRoaXMucGFyZW50Ll9jaGFuZ2VkQ2hpbGRyZW4tLSl9Z2V0IGdldENoYW5nZWRWYWx1ZSgpe3JldHVybiB0aGlzLl9jaGFuZ2VkfHx0aGlzLl9jaGFuZ2VkQ2hpbGRyZW4+MCYmIXRoaXMuZXhwYW5kZWR9Z2V0IG9uU3RhY2tMYWJl''@;'; put 'put ''bEZvY3VzKCl7cmV0dXJuIHRoaXMuZXhwYW5kYWJsZSYmIXRoaXMuZXhwYW5kZWQmJnRoaXMuZm9jdXNlZH1nZXQgbGFiZWxsZWRCeUlkKCl7cmV0dXJuIHRoaXMuc3RhY2tCbG9ja1RpdGxlLmlkfWdldCBoZWFkaW5nTGV2ZWwoKXtyZXR1cm4gdGhpcy5hcmlhTGV2ZWw/dGhpcy5hcmlhTGV2''@;'; put 'put ''ZWwrIiI6dGhpcy5wYXJlbnQ/IjQiOiIzIn1nZXQgY2FyZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5leHBhbmRlZD8iZG93biI6InJpZ2h0In1nZXQgcm9sZSgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/ImJ1dHRvbiI6bnVsbH1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5leHBhbmRh''@;'; put 'put ''YmxlPyIwIjpudWxsfWdldCBhcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlP3RoaXMuZXhwYW5kZWQ/InRydWUiOiJmYWxzZSI6bnVsbH1uZ09uSW5pdCgpe3RoaXMuX2Z1bGx5SW5pdGlhbGl6ZWQ9ITB9YWRkQ2hpbGQoKXt0aGlzLmV4cGFuZGFibGU9ITB9dG9nZ2xlRXhw''@;'; put 'put ''YW5kKCl7dGhpcy5leHBhbmRhYmxlJiYodGhpcy5leHBhbmRlZD0hdGhpcy5leHBhbmRlZCx0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZCkpfWdldFN0YWNrQ2hpbGRyZW5JZCgpe3JldHVybiB0aGlzLmV4cGFuZGVkP2BjbHItc3RhY2stY2hpbGRyZW4tJHt0aGlzLnVu''@;'; put 'put ''aXF1ZUlkfWA6bnVsbH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQobCwxMikscnQoVGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLWJsb2NrIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixk''@;'; put 'put ''KXtpZigxJmEmJkZvKGQsYVosNSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5zdGFja0Jsb2NrVGl0bGU9aC5maXJzdCl9fSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJihScigicm9sZSIsImhlYWRpbmciKSgiYXJpYS1sZXZlbCIsZi5oZWFkaW5nTGV2''@;'; put 'put ''ZWwpLGdyKCJzdGFjay1ibG9jayIsITApKCJzdGFjay1ibG9jay1leHBhbmRlZCIsZi5leHBhbmRlZCkoInN0YWNrLWJsb2NrLWV4cGFuZGFibGUiLGYuZXhwYW5kYWJsZSkoInN0YWNrLWJsb2NrLWNoYW5nZWQiLGYuZ2V0Q2hhbmdlZFZhbHVlKSgib24tZm9jdXMiLGYub25TdGFja0xhYmVs''@;'; put 'put ''Rm9jdXMpKX0saW5wdXRzOntleHBhbmRlZDpbImNsclNiRXhwYW5kZWQiLCJleHBhbmRlZCJdLGV4cGFuZGFibGU6WyJjbHJTYkV4cGFuZGFibGUiLCJleHBhbmRhYmxlIl0sYXJpYUxldmVsOlsiY2xyU3RhY2tWaWV3TGV2ZWwiLCJhcmlhTGV2ZWwiXSxhcmlhU2V0c2l6ZTpbImNsclN0YWNr''@;'; put 'put ''Vmlld1NldHNpemUiLCJhcmlhU2V0c2l6ZSJdLGFyaWFQb3NpbnNldDpbImNsclN0YWNrVmlld1Bvc2luc2V0IiwiYXJpYVBvc2luc2V0Il0sc2V0Q2hhbmdlZFZhbHVlOlsiY2xyU2JOb3RpZnlDaGFuZ2UiLCJzZXRDaGFuZ2VkVmFsdWUiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNs''@;'; put 'put ''clNiRXhwYW5kZWRDaGFuZ2UifSxuZ0NvbnRlbnRTZWxlY3RvcnM6Y1BlLGRlY2xzOjksdmFyczo5LGNvbnN0czpbWzEsInN0YWNrLWJsb2NrLWxhYmVsIiwzLCJpZCIsImNsaWNrIiwia2V5dXAuZW50ZXIiLCJrZXl1cC5zcGFjZSIsImtleWRvd24uc3BhY2UiLCJmb2N1cyIsImJsdXIiXSxb''@;'; put 'put ''InNoYXBlIiwiYW5nbGUiLCJjbGFzcyIsInN0YWNrLWJsb2NrLWNhcmV0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsInN0YWNrLXZpZXcta2V5Il0sWzEsInN0YWNrLWJsb2NrLWNvbnRlbnQiXSxbMSwic3RhY2stY2hpbGRyZW4iLDMsImNsckV4cGFu''@;'; put 'put ''ZFRyaWdnZXIiXSxbInJvbGUiLCJyZWdpb24iLDMsImhlaWdodCIsNCwibmdJZiJdLFsic2hhcGUiLCJhbmdsZSIsMSwic3RhY2stYmxvY2stY2FyZXQiXSxbMSwiY2xyLXNyLW9ubHkiXSxbInJvbGUiLCJyZWdpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSh1UGUpLHll''@;'; put 'put ''KDAsImRpdiIsMCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLnRvZ2dsZUV4cGFuZCgpfSkoImtleXVwLmVudGVyIixmdW5jdGlvbigpe3JldHVybiBmLnRvZ2dsZUV4cGFuZCgpfSkoImtleXVwLnNwYWNlIixmdW5jdGlvbigpe3JldHVybiBmLnRvZ2dsZUV4cGFuZCgpfSkoImtl''@;'; put 'put ''eWRvd24uc3BhY2UiLGZ1bmN0aW9uKGgpe3JldHVybiBoLnByZXZlbnREZWZhdWx0KCl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGYuZm9jdXNlZD0hMH0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBmLmZvY3VzZWQ9ITF9KSx0dCgxLGFQZSwxLDEsImNkcy1pY29uIiwxKSx0dCgy''@;'; put 'put ''LGxQZSwyLDEsInNwYW4iLDIpLHllKDMsImRpdiIsMyksRHIoNCksQ2UoKSx5ZSg1LCJkaXYiLDQpLERyKDYsMSksQ2UoKSgpLHllKDcsImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiIsNSksdHQoOCxzUGUsMiw0LCJkaXYiLDYpLENlKCkpLDImYSYmKFJlKCJpZCIsZi51bmlxdWVJZCksUnIo''@;'; put 'put ''InJvbGUiLGYucm9sZSkoInRhYmluZGV4IixmLnRhYkluZGV4KSgiYXJpYS1leHBhbmRlZCIsZi5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixmLmdldFN0YWNrQ2hpbGRyZW5JZCgpKSxTZSgxKSxSZSgibmdJZiIsZi5leHBhbmRhYmxlKSxTZSgxKSxSZSgibmdJZiIsZi5nZXRDaGFu''@;'; put 'put ''Z2VkVmFsdWUpLFNlKDUpLFJlKCJjbHJFeHBhbmRUcmlnZ2VyIixmLmV4cGFuZGVkKSxTZSgxKSxSZSgibmdJZiIsZi5leHBhbmRlZCkpfSxkZXBlbmRlbmNpZXM6W1hELCRpLEphXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il19KSxsfSkoKSxFNz0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5zYXZlPW5ldyB4cighMSksdGhpcy5lZGl0YWJsZT0hMSx0aGlzLmVkaXRpbmdDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLl9lZGl0TW9kZT0hMX1nZXQgZWRpdGluZygpe3JldHVybiB0aGlzLmVkaXRhYmxlJiZ0aGlzLl9lZGl0TW9kZX1zZXQgZWRp''@;'; put 'put ''dGluZyhhKXt0aGlzLmVkaXRhYmxlJiYodGhpcy5fZWRpdE1vZGU9YSx0aGlzLmVkaXRpbmdDaGFuZ2UuZW1pdChhKSxhfHx0aGlzLnNhdmUuZW1pdChudWxsKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTps''@;'; put 'put ''LHNlbGVjdG9yczpbWyJjbHItc3RhY2stdmlldyJdXSxvdXRwdXRzOntzYXZlOiJjbHJTdGFja1NhdmUifSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZFBlLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsInN0YWNrLXZpZXciXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaShmUGUpLERy''@;'; put 'put ''KDApLHllKDEsImRpdiIsMCksRHIoMiwxKSxDZSgpKX0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksbH0pKCksdU5lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtqYS5hZGRJY29ucyhadil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXty''@;'; put 'put ''ZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxkYyxsbCxJc2VdXX0pLGx9KSgpLHI1PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLnNlbGVjdGFibGU9ITEsdGhpcy5lYWdlcj0hMCx0aGlzLmNoaWxk''@;'; put 'put ''cmVuRmV0Y2hlZD1uZXcgd2V9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IEdzZT17cHJvdmlkZTpyNSx1c2VGYWN0b3J5OmZ1bmN0aW9uIGNO''@;'; put 'put ''ZShsKXtyZXR1cm4gbHx8bmV3IHI1fSxkZXBzOltbbmV3IGNoLG5ldyBFMCxyNV1dfTtsZXQgJHNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLmZlYXR1cmVzU2VydmljZT1hLHRoaXMuZXhwYW5kU2VydmljZT1mLGYmJih0aGlzLnN1YnNjcmlwdGlvbj10aGlzLmV4cGFu''@;'; put 'put ''ZFNlcnZpY2UuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZShkPT57IWQmJnRoaXMucGFyZW50JiYhdGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXImJnRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbiYmdGhpcy5wYXJlbnQuY2xlYXJDaGlsZHJlbigpfSkpfXNob3VsZFJlbmRlcigpe3JldHVy''@;'; put 'put ''biB0aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24mJih0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcnx8IXRoaXMuZXhwYW5kU2VydmljZXx8dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkKX1nZXRDb250ZXh0KGEpe3JldHVybnskaW1wbGljaXQ6YS5tb2RlbCxjbHJNb2RlbDphfX1u''@;'; put 'put ''Z09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChyNSkscnQoUWMsOCkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpb''@;'; put 'put ''WyJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZScigicm9sZSIsImdyb3VwIil9LGlucHV0czp7cGFyZW50OiJwYXJlbnQiLGNoaWxkcmVuOiJjaGlsZHJlbiJ9LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQsIm5n''@;'; put 'put ''SWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmdHQoMCxDUGUsMiwxLCJuZy1jb250YWluZXIiLDApLDImYSYmUmUoIm5nSWYiLGYuc2hvdWxkUmVuZGVy''@;'; put 'put ''KCkpfSxkZXBlbmRlbmNpZXM6WyRpLFJhLHlkXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTt2YXIgX3U9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5VTlNFTEVDVEVEPTBdPSJVTlNFTEVDVEVEIixsW2wuU0VMRUNURUQ9MV09IlNFTEVDVEVEIixsW2wuSU5ERVRFUk1JTkFURT0yXT0iSU5ERVRF''@;'; put 'put ''Uk1JTkFURSIsbH0oX3V8fHt9KTtjbGFzcyBLc2V7Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRpbmckPW5ldyBPZSghMSksdGhpcy5zZWxlY3RlZD1uZXcgT2UoX3UuVU5TRUxFQ1RFRCksdGhpcy5fbG9hZGluZz0hMX1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNldCBsb2Fk''@;'; put 'put ''aW5nKGMpe3RoaXMuX2xvYWRpbmc9Yyx0aGlzLmxvYWRpbmckLm5leHQoYyl9ZGVzdHJveSgpe3RoaXMuc2VsZWN0ZWQuY29tcGxldGUoKX1zZXRTZWxlY3RlZChjLGEsZil7YyE9PXRoaXMuc2VsZWN0ZWQudmFsdWUmJih0aGlzLnNlbGVjdGVkLm5leHQoYyksZiYmYyE9PV91LklOREVURVJN''@;'; put 'put ''SU5BVEUmJnRoaXMuY2hpbGRyZW4mJnRoaXMuY2hpbGRyZW4uZm9yRWFjaChkPT5kLnNldFNlbGVjdGVkKGMsITEsITApKSxhJiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3VwZGF0ZVNlbGVjdGlvbkZyb21DaGlsZHJlbigpKX10b2dnbGVTZWxlY3Rpb24oYyl7dGhpcy5zZXRTZWxlY3Rl''@;'; put 'put ''ZCh0aGlzLnNlbGVjdGVkLnZhbHVlPT09X3UuU0VMRUNURUQ/X3UuVU5TRUxFQ1RFRDpfdS5TRUxFQ1RFRCwhMCxjKX1fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCl7Y29uc3QgYz10aGlzLmNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpO2MhPT10aGlzLnNlbGVjdGVk''@;'; put 'put ''LnZhbHVlJiYodGhpcy5zZWxlY3RlZC5uZXh0KGMpLHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5fdXBkYXRlU2VsZWN0aW9uRnJvbUNoaWxkcmVuKCkpfWNvbXB1dGVTZWxlY3Rpb25TdGF0ZUZyb21DaGlsZHJlbigpe2xldCBjPSExLGE9ITE7Zm9yKGNvbnN0IGYgb2YgdGhpcy5jaGlsZHJl''@;'; put 'put ''bilzd2l0Y2goZi5zZWxlY3RlZC52YWx1ZSl7Y2FzZSBfdS5JTkRFVEVSTUlOQVRFOnJldHVybiBfdS5JTkRFVEVSTUlOQVRFO2Nhc2UgX3UuU0VMRUNURUQ6aWYoYz0hMCxhKXJldHVybiBfdS5JTkRFVEVSTUlOQVRFO2JyZWFrO2RlZmF1bHQ6aWYoYT0hMCxjKXJldHVybiBfdS5JTkRFVEVS''@;'; put 'put ''TUlOQVRFfXJldHVybiBjP2E/X3UuVU5TRUxFQ1RFRDpfdS5TRUxFQ1RFRDpfdS5VTlNFTEVDVEVEfX1jbGFzcyBnSSBleHRlbmRzIEtzZXtjb25zdHJ1Y3RvcihjLGEsZixkKXtzdXBlcigpLHRoaXMuZ2V0Q2hpbGRyZW49Zix0aGlzLmZlYXR1cmVzU2VydmljZT1kLHRoaXMuY2hpbGRyZW5G''@;'; put 'put ''ZXRjaGVkPSExLHRoaXMuX2NoaWxkcmVuPVtdLHRoaXMubW9kZWw9Yyx0aGlzLnBhcmVudD1hfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmZldGNoQ2hpbGRyZW4oKSx0aGlzLl9jaGlsZHJlbn1zZXQgY2hpbGRyZW4oYyl7dGhpcy5fY2hpbGRyZW49Y31kZXN0cm95KCl7dGhpcy5zdWJz''@;'; put 'put ''Y3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksc3VwZXIuZGVzdHJveSgpfWNsZWFyQ2hpbGRyZW4oKXt0aGlzLl9jaGlsZHJlbi5mb3JFYWNoKGM9PmMuZGVzdHJveSgpKSxkZWxldGUgdGhpcy5fY2hpbGRyZW4sdGhpcy5jaGlsZHJlbkZldGNoZWQ9ITF9ZmV0Y2hD''@;'; put 'put ''aGlsZHJlbigpe2lmKHRoaXMuY2hpbGRyZW5GZXRjaGVkKXJldHVybjtjb25zdCBjPXRoaXMuZ2V0Q2hpbGRyZW4odGhpcy5tb2RlbCk7IWZ1bmN0aW9uIGZOZShsKXtyZXR1cm4gbCYmImZ1bmN0aW9uIj09dHlwZW9mIGwudGhlbn0oYyk/RWooYyk/KHRoaXMubG9hZGluZz0hMCx0aGlzLnN1''@;'; put 'put ''YnNjcmlwdGlvbj1jLnN1YnNjcmliZShhPT57dGhpcy5fY2hpbGRyZW49dGhpcy53cmFwQ2hpbGRyZW4oYSksdGhpcy5sb2FkaW5nPSExfSkpOnRoaXMuX2NoaWxkcmVuPWM/dGhpcy53cmFwQ2hpbGRyZW4oYyk6W106KHRoaXMubG9hZGluZz0hMCxjLnRoZW4oYT0+e3RoaXMuX2NoaWxkcmVu''@;'; put 'put ''PXRoaXMud3JhcENoaWxkcmVuKGEpLHRoaXMubG9hZGluZz0hMX0pKSx0aGlzLmNoaWxkcmVuRmV0Y2hlZD0hMCx0aGlzLmZlYXR1cmVzU2VydmljZSYmdGhpcy5mZWF0dXJlc1NlcnZpY2UuY2hpbGRyZW5GZXRjaGVkLm5leHQoKX13cmFwQ2hpbGRyZW4oYyl7cmV0dXJuIGMubWFwKGE9Pm5l''@;'; put 'put ''dyBnSShhLHRoaXMsdGhpcy5nZXRDaGlsZHJlbix0aGlzLmZlYXR1cmVzU2VydmljZSkpfX1sZXQgcXNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMudGVtcGxhdGU9YSx0aGlzLmZlYXR1cmVzU2VydmljZT1mLHRoaXMuY2RyPWR9bmdPbkNoYW5nZXMoKXtsZXQgYTth''@;'; put 'put ''PUFycmF5LmlzQXJyYXkodGhpcy5ub2Rlcyk/dGhpcy5ub2Rlcy5tYXAoZj0+bmV3IGdJKGYsbnVsbCx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKSk6W25ldyBnSSh0aGlzLm5vZGVzLG51bGwsdGhpcy5nZXRDaGlsZHJlbix0aGlzLmZlYXR1cmVzU2VydmljZSldLHRo''@;'; put 'put ''aXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbnx8KHRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbj10aGlzLmZlYXR1cmVzU2VydmljZS5jaGlsZHJlbkZldGNoZWQucGlwZShZdigwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpfSkpLHRoaXMuZmVhdHVy''@;'; put 'put ''ZXNTZXJ2aWNlLnJlY3Vyc2lvbj17dGVtcGxhdGU6dGhpcy50ZW1wbGF0ZSxyb290OmF9fW5nT25EZXN0cm95KCl7dGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9uJiZ0aGlzLmNoaWxkcmVuRmV0Y2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoemwpLHJ0KHI1KSxydChVbCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJSZWN1cnNpdmVGb3IiLCIiLCJjbHJSZWN1cnNpdmVGb3JPZiIsIiJdXSxpbnB1dHM6e25vZGVzOlsiY2xyUmVjdXJzaXZlRm9y''@;'; put 'put ''T2YiLCJub2RlcyJdLGdldENoaWxkcmVuOlsiY2xyUmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iLCJnZXRDaGlsZHJlbiJdfSxmZWF0dXJlczpbYmxdfSksbH0pKCksbFo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzUmVxdWVzdD1uZXcgd2UsdGhpcy5fZm9jdXNDaGFu''@;'; put 'put ''Z2U9bmV3IHdlfWdldCBmb2N1c1JlcXVlc3QoKXtyZXR1cm4gdGhpcy5fZm9jdXNSZXF1ZXN0LmFzT2JzZXJ2YWJsZSgpfWdldCBmb2N1c0NoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c0NoYW5nZS5hc09ic2VydmFibGUoKX1mb2N1c05vZGUoYSl7YSYmdGhpcy5fZm9jdXNSZXF1ZXN0Lm5l''@;'; put 'put ''eHQoYS5ub2RlSWQpfWJyb2FkY2FzdEZvY3VzZWROb2RlKGEpe3RoaXMuZm9jdXNlZE5vZGVJZCE9PWEmJih0aGlzLmZvY3VzZWROb2RlSWQ9YSx0aGlzLl9mb2N1c0NoYW5nZS5uZXh0KGEpKX1mb2N1c1BhcmVudChhKXthJiZ0aGlzLmZvY3VzTm9kZShhLnBhcmVudCl9Zm9jdXNGaXJzdFZp''@;'; put 'put ''c2libGVOb2RlKCl7dGhpcy5mb2N1c05vZGUodGhpcy5yb290Tm9kZU1vZGVscyYmdGhpcy5yb290Tm9kZU1vZGVsc1swXSl9Zm9jdXNMYXN0VmlzaWJsZU5vZGUoKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRMYXN0VmlzaWJsZUluVHJlZSgpKX1mb2N1c05vZGVBYm92ZShhKXt0aGlzLmZv''@;'; put 'put ''Y3VzTm9kZSh0aGlzLmZpbmROb2RlQWJvdmUoYSkpfWZvY3VzTm9kZUJlbG93KGEpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZE5vZGVCZWxvdyhhKSl9Zm9jdXNOb2RlU3RhcnRzV2l0aChhLGYpe3RoaXMuZm9jdXNOb2RlKHRoaXMuZmluZENsb3Nlc3ROb2RlU3RhcnRzV2l0aChhLGYpKX1m''@;'; put 'put ''aW5kU2libGluZ3MoYSl7cmV0dXJuIGEucGFyZW50P2EucGFyZW50LmNoaWxkcmVuOnRoaXMucm9vdE5vZGVNb2RlbHN9ZmluZExhc3RWaXNpYmxlSW5Ob2RlKGEpe2lmKCFhKXJldHVybiBudWxsO2lmKGEuZXhwYW5kZWQmJmEuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IGY9YS5jaGlsZHJl''@;'; put 'put ''bjtyZXR1cm4gdGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUoZltmLmxlbmd0aC0xXSl9cmV0dXJuIGF9ZmluZE5leHRGb2N1c2FibGUoYSl7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgZj10aGlzLmZpbmRTaWJsaW5ncyhhKSxkPWYuaW5kZXhPZihhKTtyZXR1cm4gZDxmLmxlbmd0aC0xP2Zb''@;'; put 'put ''ZCsxXTpkPT09Zi5sZW5ndGgtMT90aGlzLmZpbmROZXh0Rm9jdXNhYmxlKGEucGFyZW50KTpudWxsfWZpbmRMYXN0VmlzaWJsZUluVHJlZSgpe3JldHVybiB0aGlzLmZpbmRMYXN0VmlzaWJsZUluTm9kZSh0aGlzLnJvb3ROb2RlTW9kZWxzJiZ0aGlzLnJvb3ROb2RlTW9kZWxzLmxlbmd0aCYm''@;'; put 'put ''dGhpcy5yb290Tm9kZU1vZGVsc1t0aGlzLnJvb3ROb2RlTW9kZWxzLmxlbmd0aC0xXSl9ZmluZE5vZGVBYm92ZShhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBmPXRoaXMuZmluZFNpYmxpbmdzKGEpLGQ9Zi5pbmRleE9mKGEpO3JldHVybiAwPT09ZD9hLnBhcmVudDpkPjA/dGhpcy5maW5k''@;'; put 'put ''TGFzdFZpc2libGVJbk5vZGUoZltkLTFdKTpudWxsfWZpbmROb2RlQmVsb3coYSl7cmV0dXJuIGE/YS5leHBhbmRlZCYmYS5jaGlsZHJlbi5sZW5ndGg+MD9hLmNoaWxkcmVuWzBdOnRoaXMuZmluZE5leHRGb2N1c2FibGUoYSk6bnVsbH1maW5kRGVzY2VuZGVudE5vZGVTdGFydHNXaXRoKGEs''@;'; put 'put ''Zil7aWYoZi5leHBhbmRlZCYmZi5jaGlsZHJlbi5sZW5ndGg+MClmb3IoY29uc3QgZCBvZiBmLmNoaWxkcmVuKXtjb25zdCBoPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGEsZCk7aWYoaClyZXR1cm4gaH1yZXR1cm4gbnVsbH1maW5kU2libGluZ05vZGVTdGFydHNXaXRoKGEsZil7Y29uc3Qg''@;'; put 'put ''ZD10aGlzLmZpbmRTaWJsaW5ncyhmKTtmb3IobGV0IG09ZC5pbmRleE9mKGYpKzE7bTxkLmxlbmd0aDttKyspe2NvbnN0IE89dGhpcy5maW5kTm9kZVN0YXJ0c1dpdGgoYSxkW21dKTtpZihPKXJldHVybiBPfXJldHVybiBudWxsfWZpbmRSb290Tm9kZVN0YXJ0c1dpdGgoYSxmKXtmb3IoY29u''@;'; put 'put ''c3QgZCBvZiB0aGlzLnJvb3ROb2RlTW9kZWxzKXtpZihmLnBhcmVudCYmZi5wYXJlbnQ9PT1kKWNvbnRpbnVlO2NvbnN0IGg9dGhpcy5maW5kTm9kZVN0YXJ0c1dpdGgoYSxkKTtpZihoKXJldHVybiBofXJldHVybiBudWxsfWZpbmROb2RlU3RhcnRzV2l0aChhLGYpe3JldHVybiBmP2YudGV4''@;'; put 'put ''dENvbnRlbnQuc3RhcnRzV2l0aChhKT9mOnRoaXMuZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChhLGYpOm51bGx9ZmluZENsb3Nlc3ROb2RlU3RhcnRzV2l0aChhLGYpe2lmKCFmKXJldHVybiBudWxsO2NvbnN0IGQ9dGhpcy5maW5kRGVzY2VuZGVudE5vZGVTdGFydHNXaXRoKGEsZik7''@;'; put 'put ''aWYoZClyZXR1cm4gZDtjb25zdCBoPXRoaXMuZmluZFNpYmxpbmdOb2RlU3RhcnRzV2l0aChhLGYpO3JldHVybiBofHwodGhpcy5maW5kUm9vdE5vZGVTdGFydHNXaXRoKGEsZil8fHRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGEsZi5wYXJlbnQpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y2xhc3MgZE5lIGV4dGVuZHMgS3Nle2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy5wYXJlbnQ9YyxjJiZjLl9hZGRDaGlsZCh0aGlzKSx0aGlzLmNo''@;'; put 'put ''aWxkcmVuPVtdfWRlc3Ryb3koKXt0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuX3JlbW92ZUNoaWxkKHRoaXMpLHN1cGVyLmRlc3Ryb3koKX1fYWRkQ2hpbGQoYyl7dGhpcy5jaGlsZHJlbi5wdXNoKGMpfV9yZW1vdmVDaGlsZChjKXtjb25zdCBhPXRoaXMuY2hpbGRyZW4uaW5kZXhPZihjKTth''@;'; put 'put ''Pi0xJiZ0aGlzLmNoaWxkcmVuLnNwbGljZShhLDEpfX1sZXQgaTU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmVsPWF9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhY3RpdmUiKX1hY3RpdmF0ZSgpe3RoaXMu''@;'; put 'put ''ZWwubmF0aXZlRWxlbWVudCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrJiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVmkpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siIiw4LCJjbHItdHJlZW5vZGUtbGluayJdXX0pLGx9KSgpLExmPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyxYKXt0aGlzLnBsYXRmb3JtSWQ9YSx0aGlzLmZvclR5cGVBaGVhZFByb3ZpZGVyPWQsdGhpcy5mZWF0dXJlc1NlcnZpY2U9aCx0aGlzLmV4cGFu''@;'; put 'put ''ZFNlcnZpY2U9bSx0aGlzLmNvbW1vblN0cmluZ3M9Xyx0aGlzLmZvY3VzTWFuYWdlcj1PLHRoaXMuc2VsZWN0ZWRDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyB4cix0aGlzLlNUQVRFUz1fdSx0aGlzLmlzTW9kZWxMb2FkaW5nPSExLHRoaXMubm9kZUlkPUh1KCks''@;'; put 'put ''dGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXg9LTEsdGhpcy5za2lwRW1pdENoYW5nZT0hMSx0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcj0iIix0aGlzLnR5cGVBaGVhZEtleUV2ZW50PW5ldyB3ZSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5fbW9kZWw9dGhpcy5mZWF0dXJlc1NlcnZp''@;'; put 'put ''Y2UucmVjdXJzaW9uP1gudmlldz9YLnZpZXcuY29udGV4dC5jbHJNb2RlbDpYLl9sVmlld1s4XS5jbHJNb2RlbDpuZXcgZE5lKGY/Zi5fbW9kZWw6bnVsbCksdGhpcy5fbW9kZWwubm9kZUlkPXRoaXMubm9kZUlkfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9tb2RlbC5zZWxlY3RlZC52''@;'; put 'put ''YWx1ZX1zZXQgc2VsZWN0ZWQoYSl7dGhpcy5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZT0hMCwobnVsbD09PWF8fHR5cGVvZiBhPiJ1IikmJihhPV91LlVOU0VMRUNURUQpLCJib29sZWFuIj09dHlwZW9mIGEmJihhPWE/X3UuU0VMRUNURUQ6X3UuVU5TRUxFQ1RFRCksdGhpcy5za2lwRW1p''@;'; put 'put ''dENoYW5nZT0hMCx0aGlzLl9tb2RlbC5zZXRTZWxlY3RlZChhLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKSx0aGlzLnNraXBFbWl0Q2hhbmdlPSExfWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWR9''@;'; put 'put ''c2V0IGV4cGFuZGVkKGEpe3RoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD1hfWdldCBhcmlhU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5pc1NlbGVjdGFibGUoKT90aGlzLl9tb2RlbC5zZWxlY3RlZC52YWx1ZT09PV91LlNFTEVDVEVEOiEhdGhpcy50cmVlTm9kZUxpbms/LmFjdGl2ZXx8bnVs''@;'; put 'put ''bH1nZXQgdHJlZU5vZGVMaW5rKCl7cmV0dXJuIHRoaXMudHJlZU5vZGVMaW5rTGlzdCYmdGhpcy50cmVlTm9kZUxpbmtMaXN0LmZpcnN0fWdldCBpc1BhcmVudCgpe3JldHVybiB0aGlzLl9tb2RlbC5jaGlsZHJlbiYmdGhpcy5fbW9kZWwuY2hpbGRyZW4ubGVuZ3RoPjB9bmdPbkluaXQoKXt0''@;'; put 'put ''aGlzLl9tb2RlbC5leHBhbmRlZD10aGlzLmV4cGFuZGVkLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX21vZGVsLnNlbGVjdGVkLnBpcGUoSWwoKCk9PiF0aGlzLnNraXBFbWl0Q2hhbmdlKSkuc3Vic2NyaWJlKGE9Pnt0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoYSl9KSksdGhpcy5z''@;'; put 'put ''dWJzY3JpcHRpb25zLnB1c2godGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZENoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdChhKSx0aGlzLl9tb2RlbC5leHBhbmRlZD1hfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3Vz''@;'; put 'put ''UmVxdWVzdC5zdWJzY3JpYmUoYT0+e3RoaXMubm9kZUlkPT09YSYmdGhpcy5mb2N1c1RyZWVOb2RlKCl9KSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0NoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMuY2hlY2tUYWJJbmRleChhKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9tb2Rl''@;'; put 'put ''bC5sb2FkaW5nJC5waXBlKFl2KDApKS5zdWJzY3JpYmUoYT0+dGhpcy5pc01vZGVsTG9hZGluZz1hKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb3JUeXBlQWhlYWRQcm92aWRlciYmKHRoaXMuX21vZGVsLnRleHRDb250ZW50PXRoaXMuZm9yVHlwZUFoZWFkUHJvdmlkZXIudGV4dENv''@;'; put 'put ''bnRlbnQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50eXBlQWhlYWRLZXlFdmVudC5waXBlKFl2KDIwMCkpLnN1YnNjcmliZShhPT57dGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlU3RhcnRzV2l0aChhLHRoaXMuX21vZGVsKSx0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcj0iIn0pKSl9''@;'; put 'put ''bmdPbkRlc3Ryb3koKXt0aGlzLl9tb2RlbC5kZXN0cm95KCksdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1pc0V4cGFuZGFibGUoKXtyZXR1cm4gdHlwZW9mIHRoaXMuZXhwYW5kYWJsZTwidSI/dGhpcy5leHBhbmRhYmxlOiEhdGhpcy5leHBhbmRTZXJ2''@;'; put 'put ''aWNlLmV4cGFuZGFibGV8fHRoaXMuaXNQYXJlbnR9aXNTZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGV9Zm9jdXNUcmVlTm9kZSgpe2NvbnN0IGE9dGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7SGEodGhpcy5wbGF0Zm9ybUlkKSYm''@;'; put 'put ''ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEmJih0aGlzLnNldFRhYkluZGV4KDApLGEuZm9jdXMoKSxhLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pKX1icm9hZGNhc3RGb2N1c09uQ29udGFpbmVyKCl7dGhpcy5mb2N1c01hbmFnZXIuYnJvYWRj''@;'; put 'put ''YXN0Rm9jdXNlZE5vZGUodGhpcy5ub2RlSWQpfW9uS2V5RG93bihhKXtzd2l0Y2goYlUoYSksRWQoYS5rZXkpKXtjYXNlIE1vLkFycm93VXA6dGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQWJvdmUodGhpcy5fbW9kZWwpO2JyZWFrO2Nhc2UgTW8uQXJyb3dEb3duOnRoaXMuZm9jdXNNYW5h''@;'; put 'put ''Z2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTticmVhaztjYXNlIE1vLkFycm93UmlnaHQ6dGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpO2JyZWFrO2Nhc2UgTW8uQXJyb3dMZWZ0OnRoaXMuY29sbGFwc2VPckZvY3VzUGFyZW50KCk7YnJlYWs7Y2FzZSBNby5Ib21lOmEucHJl''@;'; put 'put ''dmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0ZpcnN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIE1vLkVuZDphLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNMYXN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIE1vLkVudGVyOnRoaXMudG9nZ2xl''@;'; put 'put ''RXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpO2JyZWFrO2Nhc2UgTW8uU3BhY2U6Y2FzZSBNby5TcGFjZWJhcjphLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7YnJlYWs7ZGVmYXVsdDppZih0aGlzLl9tb2RlbC50ZXh0Q29udGVudCYmZnVuY3Rp''@;'; put 'put ''b24gQkZlKGwpe2NvbnN0IGM9bC5rZXk7cmV0dXJuIGMudG9Mb3dlckNhc2UoKSE9PWMudG9VcHBlckNhc2UoKXx8Yz49IjAiJiZjPD0iOSJ9KGEpKXJldHVybiB0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcis9YS5rZXksdm9pZCB0aGlzLnR5cGVBaGVhZEtleUV2ZW50Lm5leHQodGhpcy50eXBl''@;'; put 'put ''QWhlYWRLZXlCdWZmZXIpfXRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifXNldFRhYkluZGV4KGEpe3RoaXMuY29udGVudENvbnRhaW5lclRhYmluZGV4PWEsdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsYSl9Y2hlY2tUYWJJbmRl''@;'; put 'put ''eChhKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLm5vZGVJZCE9PWEmJi0xIT09dGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXgmJnRoaXMuc2V0VGFiSW5kZXgoLTEpfXRvZ2dsZUV4cGFuZE9yVHJpZ2dlckRlZmF1bHQoKXt0aGlzLmlzRXhwYW5kYWJsZSgpJiYhdGhpcy5pc1NlbGVj''@;'; put 'put ''dGFibGUoKT90aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9IXRoaXMuZXhwYW5kZWQ6dGhpcy50cmlnZ2VyRGVmYXVsdEFjdGlvbigpfWV4cGFuZE9yRm9jdXNGaXJzdENoaWxkKCl7dGhpcy5leHBhbmRlZD90aGlzLmlzUGFyZW50JiZ0aGlzLmZvY3VzTWFuYWdlci5mb2N1c05vZGVCZWxv''@;'; put 'put ''dyh0aGlzLl9tb2RlbCk6dGhpcy5pc0V4cGFuZGFibGUoKSYmKHRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD0hMCl9Y29sbGFwc2VPckZvY3VzUGFyZW50KCl7dGhpcy5leHBhbmRlZD90aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9ITE6dGhpcy5mb2N1c01hbmFnZXIuZm9jdXNQYXJl''@;'; put 'put ''bnQodGhpcy5fbW9kZWwpfXRyaWdnZXJEZWZhdWx0QWN0aW9uKCl7dGhpcy50cmVlTm9kZUxpbms/dGhpcy50cmVlTm9kZUxpbmsuYWN0aXZhdGUoKTp0aGlzLmlzU2VsZWN0YWJsZSgpJiZ0aGlzLl9tb2RlbC50b2dnbGVTZWxlY3Rpb24odGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIpfX1y''@;'; put 'put ''ZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChxYSkscnQobCwxMikscnQocUZlLDEwKSxydChyNSkscnQoUWMpLHJ0KFRhKSxydChsWikscnQoQWwpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXRyZWUtbm9kZSJdXSxj''@;'; put 'put ''b250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLGk1LDQpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYudHJlZU5vZGVMaW5rTGlzdD1oKX19LHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oU1BlLDcsVmkpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYm''@;'; put 'put ''KGYuY29udGVudENvbnRhaW5lcj1kLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2xyLXRyZWUtbm9kZSIsITApfSxpbnB1dHM6e2V4cGFuZGFibGU6WyJjbHJFeHBhbmRhYmxlIiwiZXhwYW5kYWJsZSJdLHNlbGVjdGVkOlsiY2xyU2Vs''@;'; put 'put ''ZWN0ZWQiLCJzZWxlY3RlZCJdLGV4cGFuZGVkOlsiY2xyRXhwYW5kZWQiLCJleHBhbmRlZCJdfSxvdXRwdXRzOntzZWxlY3RlZENoYW5nZToiY2xyU2VsZWN0ZWRDaGFuZ2UiLGV4cGFuZGVkQ2hhbmdlOiJjbHJFeHBhbmRlZENoYW5nZSJ9LGZlYXR1cmVzOltyaShbR3NlLFFjLHtwcm92aWRl''@;'; put 'put ''OlFDLHVzZUV4aXN0aW5nOlFjfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6RFBlLGRlY2xzOjEyLHZhcnM6OSxjb25zdHM6W1sicm9sZSIsInRyZWVpdGVtIiwidGFiaW5kZXgiLCItMSIsMSwiY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciIsMywia2V5ZG93biIsImZvY3VzIl0sWyJj''@;'; put 'put ''b250ZW50Q29udGFpbmVyIiwiIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCItMSIsImNsYXNzIiwiY2xyLXRyZWVub2RlLWNhcmV0IiwzLCJjbGljayIsImZvY3VzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci10cmVlbm9kZS1zcGlubmVyLWNv''@;'; put 'put ''bnRhaW5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY2hlY2tib3gtd3JhcHBlciBjbHItdHJlZW5vZGUtY2hlY2tib3giLDQsIm5nSWYiXSxbMSwiY2xyLXRyZWVub2RlLWNvbnRlbnQiLDMsIm1vdXNlZG93biJdLFsiY2xhc3MiLCJjbHItc3Itb25seSIsNCwibmdJZiJdLFsxLCJjbHIt''@;'; put 'put ''dHJlZW5vZGUtY2hpbGRyZW4iXSxbMywicGFyZW50Il0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCItMSIsMSwiY2xyLXRyZWVub2RlLWNhcmV0IiwzLCJjbGljayIsImZvY3VzIl0sWyJzaGFwZSIsImFuZ2xlIiwxLCJjbHItdHJlZW5vZGUtY2Fy''@;'; put 'put ''ZXQtaWNvbiJdLFsxLCJjbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXIiXSxbMSwiY2xyLXRyZWVub2RlLXNwaW5uZXIiLCJzcGlubmVyIl0sWzEsImNsci1jaGVja2JveC13cmFwcGVyIiwiY2xyLXRyZWVub2RlLWNoZWNrYm94Il0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0eXBlIiwi''@;'; put 'put ''Y2hlY2tib3giLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItY2hlY2tib3giLDMsImlkIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiLCJmb2N1cyJdLFsxLCJjbHItY29udHJvbC1sYWJlbCIsMywiZm9yIl0sWzEsImNsci1zci1vbmx5Il0sWzQsIm5nSWYiXV0sdGVtcGxhdGU6''@;'; put 'put ''ZnVuY3Rpb24oYSxmKXsxJmEmJihUaShPUGUpLHllKDAsImRpdiIsMCwxKSxFdCgia2V5ZG93biIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25LZXlEb3duKGgpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBmLmJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKX0pLHR0KDIsTVBlLDIsMSwi''@;'; put 'put ''YnV0dG9uIiwyKSx0dCgzLGtQZSwyLDAsImRpdiIsMyksdHQoNCxFUGUsMyw0LCJkaXYiLDQpLHllKDUsImRpdiIsNSksRXQoIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gZi5mb2N1c1RyZWVOb2RlKCl9KSxEcig2KSx0dCg3LFRQZSwzLDIsImRpdiIsNiksQ2UoKSgpLHllKDgsImRp''@;'; put 'put ''diIsNyksRHIoOSwxKSxEcigxMCwyKSx0bigxMSwiY2xyLXJlY3Vyc2l2ZS1jaGlsZHJlbiIsOCksQ2UoKSksMiZhJiYoUnIoImFyaWEtZXhwYW5kZWQiLGYuaXNFeHBhbmRhYmxlKCk/Zi5leHBhbmRlZDpudWxsKSgiYXJpYS1zZWxlY3RlZCIsZi5hcmlhU2VsZWN0ZWQpLFNlKDIpLFJlKCJu''@;'; put 'put ''Z0lmIixmLmlzRXhwYW5kYWJsZSgpJiYhZi5pc01vZGVsTG9hZGluZyYmIWYuZXhwYW5kU2VydmljZS5sb2FkaW5nKSxTZSgxKSxSZSgibmdJZiIsZi5leHBhbmRTZXJ2aWNlLmxvYWRpbmd8fGYuaXNNb2RlbExvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixmLmZlYXR1cmVzU2VydmljZS5zZWxl''@;'; put 'put ''Y3RhYmxlKSxTZSgzKSxSZSgibmdJZiIsZi5mZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZXx8Zi5hcmlhU2VsZWN0ZWQpLFNlKDEpLFJlKCJAdG9nZ2xlQ2hpbGRyZW5BbmltIixmLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIiksUnIoInJvbGUiLGYuaXNF''@;'; put 'put ''eHBhbmRhYmxlKCkmJiFmLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24/Imdyb3VwIjpudWxsKSxTZSgzKSxSZSgicGFyZW50IixmLl9tb2RlbCkpfSxkZXBlbmRlbmNpZXM6WyRzZSwkaSxKYV0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbQzEoInRvZ2dsZUNoaWxkcmVuQW5p''@;'; put 'put ''bSIsW2J1KCJjb2xsYXBzZWQgPT4gZXhwYW5kZWQiLFtDYSh7aGVpZ2h0OjB9KSxjYygyMDAsQ2Eoe2hlaWdodDoiKiJ9KSldKSxidSgiZXhwYW5kZWQgPT4gY29sbGFwc2VkIixbQ2Eoe2hlaWdodDoiKiJ9KSxjYygyMDAsQ2Eoe2hlaWdodDowfSkpXSksQUQoImV4cGFuZGVkIixDYSh7aGVp''@;'; put 'put ''Z2h0OiIqIiwib3ZlcmZsb3cteSI6InZpc2libGUifSkpLEFEKCJjb2xsYXBzZWQiLENhKHtoZWlnaHQ6MH0pKV0pXX19KSxsfSkoKSxEZD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZix7bmF0aXZlRWxlbWVudDpkfSxoLG0pe3RoaXMuZmVhdHVyZXNTZXJ2aWNlPWEsdGhpcy5mb2N1''@;'; put 'put ''c01hbmFnZXJTZXJ2aWNlPWYsdGhpcy5zdWJzY3JpcHRpb25zPVtdO2NvbnN0IF89bS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+d2QoZCwiZm9jdXNpbiIpLnN1YnNjcmliZShPPT57Ty50YXJnZXQ9PT1kJiYodGhpcy5mb2N1c01hbmFnZXJTZXJ2aWNlLmZvY3VzRmlyc3RWaXNpYmxlTm9kZSgp''@;'; put 'put ''LGgucmVtb3ZlQXR0cmlidXRlKGQsInRhYmluZGV4IikpfSkpO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKF8pfXNldCBsYXp5KGEpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyPSFhfWdldCBpc011bHRpU2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZS5zZWxlY3Rh''@;'; put 'put ''YmxlJiZ0aGlzLnJvb3ROb2Rlcy5sZW5ndGg+MH1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldFJvb3ROb2RlcygpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucm9vdE5vZGVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5zZXRSb290Tm9kZXMoKX0pKX1uZ09uRGVzdHJv''@;'; put 'put ''eSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9c2V0Um9vdE5vZGVzKCl7dGhpcy5mb2N1c01hbmFnZXJTZXJ2aWNlLnJvb3ROb2RlTW9kZWxzPXRoaXMucm9vdE5vZGVzLm1hcChhPT5hLl9tb2RlbCkuZmlsdGVyKGE9PiFhLnBhcmVudCl9fXJldHVy''@;'; put 'put ''biBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHI1KSxydChsWikscnQoVmkpLHJ0KGpvKSxydChVbykpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdHJlZSJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZh''@;'; put 'put ''JiZGbyhkLExmLDQpLDImYSl7bGV0IGg7dWkoaD1jaSgpKSYmKGYucm9vdE5vZGVzPWgpfX0saG9zdEF0dHJzOlsidGFiaW5kZXgiLCIwIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJlJyKCJyb2xlIiwidHJlZSIpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIs''@;'; put 'put ''Zi5pc011bHRpU2VsZWN0YWJsZSl9LGlucHV0czp7bGF6eTpbImNsckxhenkiLCJsYXp5Il19LGZlYXR1cmVzOltyaShbR3NlLGxaXSldLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1szLCJjaGlsZHJlbiIsNCwibmdJZiJdLFszLCJjaGlsZHJlbiJdXSx0''@;'; put 'put ''ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCksdHQoMSxJUGUsMSwxLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIiwwKSksMiZhJiYoU2UoMSksUmUoIm5nSWYiLGYuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbikpfSxkZXBlbmRlbmNpZXM6WyRzZSwkaV0sZW5jYXBzdWxh''@;'; put 'put ''dGlvbjoyfSksbH0pKCksbU5lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtqYS5hZGRJY29ucyhadil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1ti''@;'; put 'put ''byxsbCxDVV1dfSksbH0pKCksZ05lPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2FOZSx1TmUsbU5lXX0pLGx9KSgpO2Z1bmN0aW9u''@;'; put 'put ''IFhzZShsLGMsYSl7cmV0dXJuIEJlLmNyZWF0ZShmPT57YyhmKTtjb25zdCBkPWwuc3Vic2NyaWJlKGYpO3JldHVybigpPT57ZC51bnN1YnNjcmliZSgpLGEmJmEoZil9fSl9bGV0IHNaPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0aGlzLnJlbmRlcmVyPWEsdGhpcy5w''@;'; put 'put ''YXJlbnQ9Zix0aGlzLnRvZ2dsZVNlcnZpY2U9ZCx0aGlzLmZvY3VzU2VydmljZT1oLHRoaXMucGxhdGZvcm1JZD1tLHRoaXMuaWQ9SHUoKSx0aGlzLmZvY3VzQmFja09uVHJpZ2dlcj0hMSx0aGlzLl91bmxpc3RlbkZ1bmNzPVtdLHRoaXMucmVzZXRDaGlsZHJlbigpLHRoaXMubW92ZVRvRmly''@;'; put 'put ''c3RJdGVtV2hlbk9wZW4oKSx0aGlzLnBhcmVudHx8dGhpcy5oYW5kbGVSb290Rm9jdXMoKX1nZXQgdHJpZ2dlcigpe3JldHVybiB0aGlzLl90cmlnZ2VyfXNldCB0cmlnZ2VyKGEpe3RoaXMuX3RyaWdnZXI9YSx0aGlzLnBhcmVudD90aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5k''@;'; put 'put ''ZXJlci5saXN0ZW4oYSwia2V5ZG93bi5hcnJvd3JpZ2h0IixmPT50aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGYpKSk6KHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmFycm93dXAiLGY9PnRoaXMudG9nZ2xlU2Vydmlj''@;'; put 'put ''ZS50b2dnbGVXaXRoRXZlbnQoZikpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYSwia2V5ZG93bi5hcnJvd2Rvd24iLGY9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZikpKSx0aGlzLmZvY3VzU2VydmljZS5saXN0ZW5Ub0Fycm93''@;'; put 'put ''S2V5cyhhKSl9Z2V0IGNvbnRhaW5lcigpe3JldHVybiB0aGlzLl9jb250YWluZXJ9c2V0IGNvbnRhaW5lcihhKXt0aGlzLl9jb250YWluZXI9YSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYSwia2V5ZG93bi50YWIiLGY9PnRoaXMudG9nZ2xlU2Vydmlj''@;'; put 'put ''ZS50b2dnbGVXaXRoRXZlbnQoZikpKSx0aGlzLnBhcmVudD90aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYSwia2V5ZG93bi5lc2NhcGUiLGY9Pnt0aGlzLmZvY3VzU2VydmljZS5tb3ZlKEUxLkxFRlQpLGYuc3RvcFByb3BhZ2F0aW9uKCl9KSk6KHRoaXMu''@;'; put 'put ''Zm9jdXNTZXJ2aWNlLnJlZ2lzdGVyQ29udGFpbmVyKGEpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmVzY2FwZSIsZj0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChmKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVz''@;'; put 'put ''aCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJibHVyIixmPT57dGhpcy5jaGlsZHJlbi5waXBlKEVmKDEpKS5zdWJzY3JpYmUoaD0+aC5mb3JFYWNoKG09Pm0uYmx1cigpKSk7Y29uc3QgZD1mLnJlbGF0ZWRUYXJnZXR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZCYmSGEodGhpcy5wbGF0Zm9y''@;'; put 'put ''bUlkKSYmKGEuY29udGFpbnMoZCl8fGQ9PT10aGlzLnRyaWdnZXIpfHwodGhpcy5mb2N1c0JhY2tPblRyaWdnZXI9ITEsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEpfSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3VubGlzdGVuRnVuY3MuZm9yRWFjaChhPT5hKCkpLHRoaXMuZm9jdXNTZXJ2''@;'; put 'put ''aWNlLmRldGFjaExpc3RlbmVycygpfW1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCl7Y29uc3QgYT10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoZj0+e2YmJnRoaXMudG9nZ2xlU2VydmljZS5vcmlnaW5hbEV2ZW50JiZzZXRUaW1lb3V0KCgpPT57dGhpcy5mb2N1c1Nl''@;'; put 'put ''cnZpY2UubW92ZVRvKHRoaXMpLHRoaXMuZm9jdXNTZXJ2aWNlLm1vdmUodGhpcy5wYXJlbnQ/RTEuUklHSFQ6RTEuRE9XTil9KX0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+YS51bnN1YnNjcmliZSgpKX1oYW5kbGVSb290Rm9jdXMoKXtjb25zdCBhPXRoaXMudG9nZ2xlU2Vydmlj''@;'; put 'put ''ZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShmPT57Znx8KHRoaXMuZm9jdXNTZXJ2aWNlLnJlc2V0KHRoaXMpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyJiZ0aGlzLmZvY3VzKCkpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyPWZ9KTt0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goKCk9PmEudW5zdWJz''@;'; put 'put ''Y3JpYmUoKSl9Zm9jdXMoKXt0aGlzLnRyaWdnZXImJkhhKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5mb2N1cygpfWJsdXIoKXt0aGlzLnRyaWdnZXImJkhhKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5ibHVyKCl9YWN0aXZhdGUoKXtIYSh0aGlzLnBsYXRmb3JtSWQp''@;'; put 'put ''JiZ0aGlzLnRyaWdnZXIuY2xpY2soKX1yZXNldENoaWxkcmVuKCl7dGhpcy5jaGlsZHJlbj1uZXcgeEQoMSksdGhpcy5wYXJlbnQ/dGhpcy5yaWdodD10aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUoRWUoYT0+YVswXSkpOih0aGlzLmRvd249dGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4o''@;'; put 'put ''KS5waXBlKEVlKGE9PmFbMF0pKSx0aGlzLnVwPXRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShFZShhPT5hW2EubGVuZ3RoLTFdKSkpfWFkZENoaWxkcmVuKGEpe3dVLmxpbmtWZXJ0aWNhbChhKSx0aGlzLnBhcmVudCYmd1UubGlua1BhcmVudChhLHRoaXMuY2xvc2VBbmRHZXRUaGlz''@;'; put 'put ''KCksRTEuTEVGVCksdGhpcy5jaGlsZHJlbi5uZXh0KGEpfW9wZW5BbmRHZXRDaGlsZHJlbigpe3JldHVybiBYc2UodGhpcy5jaGlsZHJlbiwoKT0+dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITApfWNsb3NlQW5kR2V0VGhpcygpe3JldHVybiBYc2UoR2kodGhpcyksKCk9PnRoaXMudG9nZ2xl''@;'; put 'put ''U2VydmljZS5vcGVuPSExKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3Ioam8pLHNyKGwsMTIpLHNyKFFhKSxzcihzUyksc3IocWEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtjb25zdCB2''@;'; put 'put ''TmU9YnNlKHNaKTtsZXQgYlM9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NoYW5nZXM9bmV3IHdlfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Y2xvc2VNZW51cygpe3RoaXMuX2NoYW5nZXMubmV4dCghMSl9fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IGJOZT17cHJvdmlkZTpiUyx1c2VGYWN0b3J5OmZ1bmN0aW9uIHlOZShsKXtyZXR1cm4gbHx8bmV3IGJTfSxkZXBzOltb''@;'; put 'put ''bmV3IGNoLG5ldyBFMCxiU11dfTtsZXQgYTM9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLnBhcmVudD1hLHRoaXMudG9nZ2xlU2VydmljZT1mLHRoaXMuY2RyPWQsdGhpcy5pc01lbnVDbG9zYWJsZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3Jp''@;'; put 'put ''cHRpb25zLnB1c2goaC5jaGFuZ2VzLnN1YnNjcmliZShtPT50aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj1tKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZi5vcGVuQ2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5jZHIubWFya0ZvckNoZWNrKCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2Ny''@;'; put 'put ''aXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGwsMTIpLHJ0KFFhKSxydChVbCkscnQoYlMpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRyb3Bkb3du''@;'; put 'put ''Il1dLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiZHJvcGRvd24iLCEwKSgib3BlbiIsZi50b2dnbGVTZXJ2aWNlLm9wZW4pfSxpbnB1dHM6e2lzTWVudUNsb3NhYmxlOlsiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCJpc01lbnVDbG9zYWJsZSJdfSxm''@;'; put 'put ''ZWF0dXJlczpbcmkoW2JOZSx7cHJvdmlkZTp1Nyx1c2VFeGlzdGluZzpWaX0sbHNlLFFhLHZOZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCk7Y29u''@;'; put 'put ''c3QgX05lPVt7cHJvdmlkZTp0SSx1c2VDbGFzczooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLmVsPWEsdGhpcy5yZW5kZXJlcj1mLHRoaXMucGxhdGZvcm1JZD1kLHRoaXMuaWQ9SHUoKSx0aGlzLmRpc2FibGVkPSExLGYuc2V0QXR0cmlidXRlKGEubmF0aXZlRWxlbWVu''@;'; put 'put ''dCwiaWQiLHRoaXMuaWQpLGYuc2V0QXR0cmlidXRlKGEubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCItMSIpfWZvY3VzKCl7SGEodGhpcy5wbGF0Zm9ybUlkKSYmKHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLCIwIiksdGhpcy5l''@;'; put 'put ''bC5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIixpbmxpbmU6Im5lYXJlc3QifSkpfWJsdXIoKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiYodGhpcy5yZW5kZXJlci5zZXRBdHRy''@;'; put 'put ''aWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsIi0xIiksdGhpcy5lbC5uYXRpdmVFbGVtZW50LmJsdXIoKSl9YWN0aXZhdGUoKXtIYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCkoc3IoVmkpLHNyKGpvKSxzcihxYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpfV07bGV0IHg3PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuZHJvcGRvd249YSx0aGlzLl9kcm9w''@;'; put 'put ''ZG93blNlcnZpY2U9Zix0aGlzLmZvY3VzYWJsZUl0ZW09ZCx0aGlzLnNldEJ5RGVwcmVjYXRlZERpc2FibGVkPSExfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uZGlzYWJsZWR9c2V0IGRpc2FibGVkKGEpe3RoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZD0hIWF8''@;'; put 'put ''fCIiPT09YX1nZXQgZGlzYWJsZWREZXByZWNhdGVkKCl7cmV0dXJuIHRoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZH1zZXQgZGlzYWJsZWREZXByZWNhdGVkKGEpe3RoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZD0hIWF8fCIiPT09YSx0aGlzLnNldEJ5RGVwcmVjYXRlZERpc2FibGVkPSEw''@;'; put 'put ''fWdldCBkcm9wZG93bkl0ZW1JZCgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uaWR9c2V0IGRyb3Bkb3duSXRlbUlkKGEpe3RoaXMuZm9jdXNhYmxlSXRlbS5pZD1hfW9uRHJvcGRvd25JdGVtQ2xpY2soKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5kcm9wZG93bi5pc01lbnVDbG9zYWJsZSYm''@;'; put 'put ''IXRoaXMuZGlzYWJsZWQmJnRoaXMuX2Ryb3Bkb3duU2VydmljZS5jbG9zZU1lbnVzKCl9KX1vblNwYWNlS2V5ZG93bihhKXt0aGlzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbklmRGlzYWJsZWQoYSl9b25FbnRlcktleWRvd24oYSl7dGhpcy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb25JZkRp''@;'; put 'put ''c2FibGVkKGEpfXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbklmRGlzYWJsZWQoYSl7dGhpcy5kaXNhYmxlZCYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQo''@;'; put 'put ''YTMpLHJ0KGJTKSxydCh0SSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJEcm9wZG93bkl0ZW0iLCIiXV0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkRyb3Bkb3du''@;'; put 'put ''SXRlbUNsaWNrKCl9KSgia2V5ZG93bi5zcGFjZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25TcGFjZUtleWRvd24oaCl9KSgia2V5ZG93bi5lbnRlciIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25FbnRlcktleWRvd24oaCl9KSwyJmEmJihScigicm9sZSIsIm1lbnVpdGVtIikoImFyaWEtZGlz''@;'; put 'put ''YWJsZWQiLGYuZGlzYWJsZWQpKCJkaXNhYmxlZCIsZi5kaXNhYmxlZCYmZi5zZXRCeURlcHJlY2F0ZWREaXNhYmxlZD8iIjpudWxsKSgiaWQiLGYuZHJvcGRvd25JdGVtSWQpLGdyKCJkaXNhYmxlZCIsZi5kaXNhYmxlZCkoImRyb3Bkb3duLWl0ZW0iLCEwKSl9LGlucHV0czp7ZGlzYWJsZWQ6''@;'; put 'put ''WyJjbHJEaXNhYmxlZCIsImRpc2FibGVkIl0sZGlzYWJsZWREZXByZWNhdGVkOlsiZGlzYWJsZWQiLCJkaXNhYmxlZERlcHJlY2F0ZWQiXSxkcm9wZG93bkl0ZW1JZDpbImlkIiwiZHJvcGRvd25JdGVtSWQiXX0sZmVhdHVyZXM6W3JpKFtfTmVdKV19KSxsfSkoKTt2YXIgS3I9ZnVuY3Rpb24o''@;'; put 'put ''bCl7cmV0dXJuIGxbbC5SSUdIVF9DRU5URVI9MF09IlJJR0hUX0NFTlRFUiIsbFtsLlJJR0hUX1RPUD0xXT0iUklHSFRfVE9QIixsW2wuUklHSFRfQk9UVE9NPTJdPSJSSUdIVF9CT1RUT00iLGxbbC5UT1BfQ0VOVEVSPTNdPSJUT1BfQ0VOVEVSIixsW2wuVE9QX1JJR0hUPTRdPSJUT1BfUklH''@;'; put 'put ''SFQiLGxbbC5UT1BfTEVGVD01XT0iVE9QX0xFRlQiLGxbbC5CT1RUT01fQ0VOVEVSPTZdPSJCT1RUT01fQ0VOVEVSIixsW2wuQk9UVE9NX1JJR0hUPTddPSJCT1RUT01fUklHSFQiLGxbbC5CT1RUT01fTEVGVD04XT0iQk9UVE9NX0xFRlQiLGxbbC5MRUZUX0NFTlRFUj05XT0iTEVGVF9DRU5U''@;'; put 'put ''RVIiLGxbbC5MRUZUX1RPUD0xMF09IkxFRlRfVE9QIixsW2wuTEVGVF9CT1RUT009MTFdPSJMRUZUX0JPVFRPTSIsbH0oS3J8fHt9KTtjbGFzcyBTTmV7Y29uc3RydWN0b3IoYyl7dGhpcy5lbGVtZW50PWMsdGhpcy5ib3VuZE9uU2Nyb2xsTGlzdGVuZXI9dGhpcy5lbWl0U2Nyb2xsRXZlbnQu''@;'; put 'put ''YmluZCh0aGlzKSx0aGlzLnNjcm9sbGFibGVFbGVtZW50cz1bXSxjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYy5zdHlsZS50b3A9MCxjLnN0eWxlLmJvdHRvbT0iYXV0byIsYy5zdHlsZS5sZWZ0PTAsYy5zdHlsZS5yaWdodD0iYXV0byJ9YW5jaG9yKGMsYSxmLHtvZmZzZXRYOmQ9MCxv''@;'; put 'put ''ZmZzZXRZOmg9MCx1c2VBbmNob3JQYXJlbnQ6bT0hMX09e30pe3RoaXMuYWRkU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoYyksbSYmKGM9Yy5wYXJlbnROb2RlKSxjLnN0eWxlLnBvc2l0aW9uPSJzdGF0aWMiO2NvbnN0IF89Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxPPXRoaXMuZWxlbWVudC5n''@;'; put 'put ''ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgWD1fLmxlZnQtTy5sZWZ0K2QsYWU9Xy50b3AtTy50b3AraDtzd2l0Y2goYSl7Y2FzZSBLci5MRUZUX1RPUDpjYXNlIEtyLlRPUF9MRUZUOmJyZWFrO2Nhc2UgS3IuVE9QX0NFTlRFUjpYKz1fLndpZHRoLzI7YnJlYWs7Y2FzZSBLci5UT1BfUklH''@;'; put 'put ''SFQ6Y2FzZSBLci5SSUdIVF9UT1A6WCs9Xy53aWR0aDticmVhaztjYXNlIEtyLkxFRlRfQk9UVE9NOmNhc2UgS3IuQk9UVE9NX0xFRlQ6YWUrPV8uaGVpZ2h0O2JyZWFrO2Nhc2UgS3IuQk9UVE9NX0NFTlRFUjphZSs9Xy5oZWlnaHQsWCs9Xy53aWR0aC8yO2JyZWFrO2Nhc2UgS3IuQk9UVE9N''@;'; put 'put ''X1JJR0hUOmNhc2UgS3IuUklHSFRfQk9UVE9NOmFlKz1fLmhlaWdodCxYKz1fLndpZHRoO2JyZWFrO2Nhc2UgS3IuTEVGVF9DRU5URVI6YWUrPV8uaGVpZ2h0LzI7YnJlYWs7Y2FzZSBLci5SSUdIVF9DRU5URVI6YWUrPV8uaGVpZ2h0LzIsWCs9Xy53aWR0aH1zd2l0Y2goZil7Y2FzZSBLci5M''@;'; put 'put ''RUZUX1RPUDpjYXNlIEtyLlRPUF9MRUZUOmJyZWFrO2Nhc2UgS3IuVE9QX0NFTlRFUjpYLT1PLndpZHRoLzI7YnJlYWs7Y2FzZSBLci5UT1BfUklHSFQ6Y2FzZSBLci5SSUdIVF9UT1A6WC09Ty53aWR0aDticmVhaztjYXNlIEtyLkxFRlRfQk9UVE9NOmNhc2UgS3IuQk9UVE9NX0xFRlQ6YWUt''@;'; put 'put ''PU8uaGVpZ2h0O2JyZWFrO2Nhc2UgS3IuQk9UVE9NX0NFTlRFUjphZS09Ty5oZWlnaHQsWC09Ty53aWR0aC8yO2JyZWFrO2Nhc2UgS3IuQk9UVE9NX1JJR0hUOmNhc2UgS3IuUklHSFRfQk9UVE9NOmFlLT1PLmhlaWdodCxYLT1PLndpZHRoO2JyZWFrO2Nhc2UgS3IuTEVGVF9DRU5URVI6YWUt''@;'; put 'put ''PU8uaGVpZ2h0LzI7YnJlYWs7Y2FzZSBLci5SSUdIVF9DRU5URVI6YWUtPU8uaGVpZ2h0LzIsWC09Ty53aWR0aH1jb25zdCBwZT1nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCksYmU9cGFyc2VJbnQocGUubWFyZ2luTGVmdCwxMCkseGU9cGFyc2VJbnQocGUubWFyZ2luUmlnaHQsMTAp''@;'; put 'put ''LFZlPXBhcnNlSW50KHBlLm1hcmdpblRvcCwxMCksWmU9cGFyc2VJbnQocGUubWFyZ2luQm90dG9tLDEwKTtzd2l0Y2goYSl7Y2FzZSBLci5MRUZUX1RPUDpjYXNlIEtyLlRPUF9MRUZUOmNhc2UgS3IuVE9QX1JJR0hUOmNhc2UgS3IuUklHSFRfVE9QOihmPT09S3IuQk9UVE9NX1JJR0hUfHxm''@;'; put 'put ''PT09S3IuUklHSFRfQk9UVE9NKSYmKGFlLT1aZSxYLT14ZSksKGY9PT1Lci5CT1RUT01fTEVGVHx8Zj09PUtyLkxFRlRfQk9UVE9NKSYmKGFlLT1WZSxYKz1iZSksKGY9PT1Lci5UT1BfTEVGVHx8Zj09PUtyLkxFRlRfVE9QKSYmKGFlKz1WZSxYKz1iZSksKGY9PT1Lci5UT1BfUklHSFR8fGY9''@;'; put 'put ''PT1Lci5SSUdIVF9UT1ApJiYoYWUrPVZlLFgtPXhlKTticmVhaztjYXNlIEtyLkxFRlRfQk9UVE9NOmNhc2UgS3IuQk9UVE9NX0xFRlQ6Y2FzZSBLci5CT1RUT01fUklHSFQ6Y2FzZSBLci5SSUdIVF9CT1RUT006KGY9PT1Lci5CT1RUT01fTEVGVHx8Zj09PUtyLkxFRlRfQk9UVE9NKSYmKGFl''@;'; put 'put ''LT1aZSxYKz1iZSksKGY9PT1Lci5CT1RUT01fUklHSFR8fGY9PT1Lci5SSUdIVF9CT1RUT00pJiYoYWUtPVplLFgtPXhlKSwoZj09PUtyLlRPUF9MRUZUfHxmPT09S3IuTEVGVF9UT1ApJiYoYWUrPVZlLFgrPWJlKSwoZj09PUtyLlRPUF9SSUdIVHx8Zj09PUtyLlJJR0hUX1RPUCkmJihhZSs9''@;'; put 'put ''VmUsWC09eGUpO2JyZWFrO2Nhc2UgS3IuVE9QX0NFTlRFUjphZS09WmUsWCs9YmUsWC09eGU7YnJlYWs7Y2FzZSBLci5CT1RUT01fQ0VOVEVSOmFlKz1WZSxYKz1iZSxYLT14ZTticmVhaztjYXNlIEtyLkxFRlRfQ0VOVEVSOmFlKz1WZSxhZS09WmUsWC09eGU7YnJlYWs7Y2FzZSBLci5SSUdI''@;'; put 'put ''VF9DRU5URVI6YWUrPVZlLGFlLT1aZSxYKz1iZX1yZXR1cm4gdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWCgke01hdGgucm91bmQoWCl9cHgpIHRyYW5zbGF0ZVkoJHtNYXRoLnJvdW5kKGFlKX1weClgLHRoaXMuX3Njcm9sbC5hc09ic2VydmFibGUoKX1yZWxlYXNl''@;'; put 'put ''KCl7dGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybT0iIix0aGlzLnJlbW92ZVNjcm9sbEV2ZW50TGlzdGVuZXJzKCl9aXNQb3NpdGlvbmVkKGMpe2NvbnN0IGE9Z2V0Q29tcHV0ZWRTdHlsZShjKS5wb3NpdGlvbjtyZXR1cm4icmVsYXRpdmUiPT09YXx8ImFic29sdXRlIj09PWF8fCJmaXhl''@;'; put 'put ''ZCI9PT1hfWVtaXRTY3JvbGxFdmVudCgpe3RoaXMuX3Njcm9sbC5uZXh0KCl9YWRkU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoYyl7dGhpcy5fc2Nyb2xsPW5ldyB3ZTtjb25zdCBhPWM7bGV0IGY9Yztmb3IoO2YmJmYhPT1kb2N1bWVudCYmKHRoaXMuc2Nyb2xscyhmKSYmKGYuYWRkRXZlbnRMaXN0''@;'; put 'put ''ZW5lcigic2Nyb2xsIix0aGlzLmJvdW5kT25TY3JvbGxMaXN0ZW5lciksdGhpcy5zY3JvbGxhYmxlRWxlbWVudHMucHVzaChmKSksZj09PWF8fCF0aGlzLmlzUG9zaXRpb25lZChmKSk7KWY9Zi5wYXJlbnROb2RlfXJlbW92ZVNjcm9sbEV2ZW50TGlzdGVuZXJzKCl7Zm9yKGNvbnN0IGMgb2Yg''@;'; put 'put ''dGhpcy5zY3JvbGxhYmxlRWxlbWVudHMpYy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuYm91bmRPblNjcm9sbExpc3RlbmVyKTt0aGlzLnNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg9MCx0aGlzLl9zY3JvbGwmJih0aGlzLl9zY3JvbGwuY29tcGxldGUoKSxkZWxldGUgdGhp''@;'; put 'put ''cy5fc2Nyb2xsKX1zY3JvbGxzKGMpe2NvbnN0IGE9Z2V0Q29tcHV0ZWRTdHlsZShjKTtyZXR1cm4ic2Nyb2xsIj09PWEub3ZlcmZsb3dYfHwiYXV0byI9PT1hLm92ZXJmbG93WHx8InNjcm9sbCI9PT1hLm92ZXJmbG93WXx8ImF1dG8iPT09YS5vdmVyZmxvd1l9fWxldCB1Wj0oKCk9PntjbGFz''@;'; put 'put ''cyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5wYXJlbnRIb3N0PWYsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrPSExLHRoaXMucG9wb3Zlck9wdGlvbnM9e30sdGhpcy51cGRhdGVBbmNob3I9ITEsdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPW51bGwsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNr''@;'; put 'put ''Q2FsbGJhY2s9ZD0+e3RoaXMuYW5jaG9yRWxlbS5jb250YWlucyhkLnRhcmdldCl8fCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9LHRoaXMuZWw9YS5nZXQoVmkpLHRoaXMudG9nZ2xlU2VydmljZT1hLmdldChRYSksdGhpcy5yZW5kZXJlcj1hLmdldChqbyksdGhpcy5uZ1pvbmU9YS5n''@;'; put 'put ''ZXQoVW8pLHRoaXMucmVmPWEuZ2V0KFVsKSx0aGlzLmFuY2hvckVsZW09Zi5uYXRpdmVFbGVtZW50LHRoaXMucG9wb3Zlckluc3RhbmNlPW5ldyBTTmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3Jp''@;'; put 'put ''YmUoZD0+e2Q/KHRoaXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpKToodGhpcy5yZWxlYXNlKCksdGhpcy5kZXRhY2hFU0NMaXN0ZW5lcigpKX0pLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYodGhpcy5hbmNob3IoKSx0aGlzLmF0dGFjaEVTQ0xpc3RlbmVyKCkpfWdldCBp''@;'; put 'put ''c09mZlNjcmVlbigpe3JldHVybiF0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnVwZGF0ZUFuY2hvciYmKHRoaXMudXBkYXRlQW5jaG9yPSExLHRoaXMucG9wb3Zlckluc3RhbmNlLmFuY2hvcih0aGlzLmFuY2hvckVsZW0sdGhpcy5hbmNob3JQb2lu''@;'; put 'put ''dCx0aGlzLnBvcG92ZXJQb2ludCx0aGlzLnBvcG92ZXJPcHRpb25zKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMX0pLHRoaXMuYXR0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbGVhc2UoKSx0aGlzLmRldGFjaEVTQ0xp''@;'; put 'put ''c3RlbmVyKCksdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1hbmNob3IoKXt0aGlzLnVwZGF0ZUFuY2hvcj0hMH1yZWxlYXNlKCl7dGhpcy5kZXRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpLHRoaXMucG9wb3Zlckluc3RhbmNlLnJlbGVhc2UoKX1hdHRhY2hFU0NMaXN0ZW5lcigp''@;'; put 'put ''e3RoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXJ8fHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsImtleWRvd24iLGE9PnthJiZhLmtleSYmRWQo''@;'; put 'put ''YS5rZXkpPT09TW8uRXNjYXBlJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKX0pfSl9KX1kZXRhY2hFU0NMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRFU0NMaXN0''@;'; put 'put ''ZW5lcigpLHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcj1udWxsKX1hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpe3RoaXMuY2xvc2VPbk91dHNpZGVDbGljayYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJmRvY3VtZW50JiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5h''@;'; put 'put ''ZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2ssITApfWRldGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCl7dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrJiZkb2N1bWVudCYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQu''@;'; put 'put ''cmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuY2xvc2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCEwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoQWwpLHJ0KFZpLDQpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxob3N0VmFyczoy''@;'; put 'put ''LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoImlzLW9mZi1zY3JlZW4iLGYuaXNPZmZTY3JlZW4pfX0pLGx9KSgpLG81PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyB1Wntjb25zdHJ1Y3RvcihhLGYsZCxoKXtpZighZil0aHJvdyBuZXcgRXJyb3IoImNsci1kcm9wZG93bi1tZW51''@;'; put 'put ''IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRyb3Bkb3duIik7c3VwZXIoYSxmKSxkPyh0aGlzLmFuY2hvclBvaW50PUtyLlJJR0hUX1RPUCx0aGlzLnBvcG92ZXJQb2ludD1Lci5MRUZUX1RPUCk6KHRoaXMuYW5jaG9yUG9pbnQ9S3IuQk9UVE9NX0xFRlQsdGhpcy5wb3Bv''@;'; put 'put ''dmVyUG9pbnQ9S3IuTEVGVF9UT1ApLHRoaXMucG9wb3Zlck9wdGlvbnMuYWxsb3dNdWx0aXBsZU9wZW49ITAsdGhpcy5wb3BvdmVyT3B0aW9ucy5pZ25vcmVHbG9iYWxFU0NMaXN0ZW5lcj0hMCx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5mb2N1c0hhbmRsZXI9aH1zZXQgcG9z''@;'; put 'put ''aXRpb24oYSl7c3dpdGNoKGEpe2Nhc2UidG9wLXJpZ2h0Ijp0aGlzLmFuY2hvclBvaW50PUtyLlRPUF9SSUdIVCx0aGlzLnBvcG92ZXJQb2ludD1Lci5SSUdIVF9CT1RUT007YnJlYWs7Y2FzZSJ0b3AtbGVmdCI6dGhpcy5hbmNob3JQb2ludD1Lci5UT1BfTEVGVCx0aGlzLnBvcG92ZXJQb2lu''@;'; put 'put ''dD1Lci5MRUZUX0JPVFRPTTticmVhaztjYXNlImJvdHRvbS1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1Lci5CT1RUT01fUklHSFQsdGhpcy5wb3BvdmVyUG9pbnQ9S3IuUklHSFRfVE9QO2JyZWFrO2Nhc2UiYm90dG9tLWxlZnQiOmRlZmF1bHQ6dGhpcy5hbmNob3JQb2ludD1Lci5CT1RUT01f''@;'; put 'put ''TEVGVCx0aGlzLnBvcG92ZXJQb2ludD1Lci5MRUZUX1RPUDticmVhaztjYXNlInJpZ2h0LXRvcCI6dGhpcy5hbmNob3JQb2ludD1Lci5SSUdIVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9S3IuTEVGVF9UT1A7YnJlYWs7Y2FzZSJyaWdodC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9S3IuUklH''@;'; put 'put ''SFRfQk9UVE9NLHRoaXMucG9wb3ZlclBvaW50PUtyLkxFRlRfQk9UVE9NO2JyZWFrO2Nhc2UibGVmdC10b3AiOnRoaXMuYW5jaG9yUG9pbnQ9S3IuTEVGVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9S3IuUklHSFRfVE9QO2JyZWFrO2Nhc2UibGVmdC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9''@;'; put 'put ''S3IuTEVGVF9CT1RUT00sdGhpcy5wb3BvdmVyUG9pbnQ9S3IuUklHSFRfQk9UVE9NfX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmZvY3VzSGFuZGxlci5jb250YWluZXI9dGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMuaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9PnRoaXMuZm9jdXNI''@;'; put 'put ''YW5kbGVyLmFkZENoaWxkcmVuKHRoaXMuaXRlbXMudG9BcnJheSgpKSksdGhpcy5pdGVtcy5ub3RpZnlPbkNoYW5nZXMoKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5mb2N1c0hhbmRsZXIucmVzZXRDaGlsZHJlbigpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChBbCkscnQodTcsOCkscnQobCwxMikscnQoc1opKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRyb3Bkb3duLW1lbnUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmRm8oZCx0SSw0KSwy''@;'; put 'put ''JmEpe2xldCBoO3VpKGg9Y2koKSkmJihmLml0ZW1zPWgpfX0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJihScigicm9sZSIsIm1lbnUiKSxncigiZHJvcGRvd24tbWVudSIsITApKX0saW5wdXRzOntwb3NpdGlvbjpbImNsclBvc2l0aW9uIiwicG9zaXRpb24i''@;'; put 'put ''XX0sZmVhdHVyZXM6W3JvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksYTU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLnRv''@;'; put 'put ''Z2dsZVNlcnZpY2U9Zix0aGlzLmlzUm9vdExldmVsVG9nZ2xlPSEwLGEucGFyZW50JiYodGhpcy5pc1Jvb3RMZXZlbFRvZ2dsZT0hMSksaC50cmlnZ2VyPWQubmF0aXZlRWxlbWVudH1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVufW9uRHJvcGRvd25UcmlnZ2Vy''@;'; put 'put ''Q2xpY2soYSl7dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoYTMpLHJ0KFFhKSxydChWaSkscnQoc1opKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwi''@;'; put 'put ''Y2xyRHJvcGRvd25UcmlnZ2VyIiwiIl0sWyIiLCJjbHJEcm9wZG93blRvZ2dsZSIsIiJdXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJjbGljayIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25Ecm9wZG93blRyaWdnZXJDbGljayhoKX0pLDImYSYmKFJy''@;'; put 'put ''KCJhcmlhLWhhc3BvcHVwIiwibWVudSIpKCJhcmlhLWV4cGFuZGVkIixmLmFjdGl2ZSksZ3IoImRyb3Bkb3duLXRvZ2dsZSIsZi5pc1Jvb3RMZXZlbFRvZ2dsZSkoImRyb3Bkb3duLWl0ZW0iLCFmLmlzUm9vdExldmVsVG9nZ2xlKSgiZXhwYW5kYWJsZSIsIWYuaXNSb290TGV2ZWxUb2dnbGUp''@;'; put 'put ''KCJhY3RpdmUiLGYuYWN0aXZlKSl9fSksbH0pKCksY1o9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvXSxBZixsbF19KSxsfSko''@;'; put 'put ''KTtjb25zdCBNTmU9WyJpbmZvIiwid2FybmluZyIsImRhbmdlciIsInN1Y2Nlc3MiXTtsZXQgZlo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLmRlZmF1bHRJY29uU2hhcGU9ImluZm8tY2lyY2xlIix0aGlzLl9hbGVydEljb25TaGFwZT0i''@;'; put 'put ''Iix0aGlzLl9hbGVydFR5cGU9ImluZm8ifWdldCBhbGVydFR5cGUoKXtyZXR1cm4gdGhpcy5fYWxlcnRUeXBlfXNldCBhbGVydFR5cGUoYSl7TU5lLmluZGV4T2YoYSk+LTEmJih0aGlzLl9hbGVydFR5cGU9YSl9Z2V0IGFsZXJ0SWNvblNoYXBlKCl7cmV0dXJuIiI9PT10aGlzLl9hbGVydElj''@;'; put 'put ''b25TaGFwZT90aGlzLmljb25JbmZvRnJvbVR5cGUodGhpcy5fYWxlcnRUeXBlKS5zaGFwZTp0aGlzLl9hbGVydEljb25TaGFwZX1zZXQgYWxlcnRJY29uU2hhcGUoYSl7YT9hIT09dGhpcy5fYWxlcnRJY29uU2hhcGUmJih0aGlzLl9hbGVydEljb25TaGFwZT1hKTp0aGlzLl9hbGVydEljb25T''@;'; put 'put ''aGFwZT0iIn1nZXQgYWxlcnRJY29uVGl0bGUoKXtyZXR1cm4gdGhpcy5pY29uSW5mb0Zyb21UeXBlKHRoaXMuX2FsZXJ0VHlwZSkudGl0bGV9aWNvbkluZm9Gcm9tVHlwZShhKXtjb25zdCBmPXtzaGFwZToiIixjc3NDbGFzczoiIix0aXRsZToiIn07c3dpdGNoKGEpe2Nhc2Uid2FybmluZyI6''@;'; put 'put ''Zi5zaGFwZT0iZXhjbGFtYXRpb24tdHJpYW5nbGUiLGYuY3NzQ2xhc3M9ImFsZXJ0LXdhcm5pbmciLGYudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMud2FybmluZzticmVhaztjYXNlImRhbmdlciI6Zi5zaGFwZT0iZXhjbGFtYXRpb24tY2lyY2xlIixmLmNzc0NsYXNzPSJhbGVydC1k''@;'; put 'put ''YW5nZXIiLGYudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGFuZ2VyO2JyZWFrO2Nhc2Uic3VjY2VzcyI6Zi5zaGFwZT0iY2hlY2stY2lyY2xlIixmLmNzc0NsYXNzPSJhbGVydC1zdWNjZXNzIixmLnRpdGxlPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnN1Y2Nlc3M7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDpmLnNoYXBlPXRoaXMuZGVmYXVsdEljb25TaGFwZSxmLmNzc0NsYXNzPSJhbGVydC1pbmZvIixmLnRpdGxlPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmluZm99cmV0dXJuIGZ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFRhKSl9LGwu''@;'; put 'put ''XHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksdkk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NoYW5nZT1uZXcgd2V9Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBjdXJyZW50KCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2N1cnJlbnR9c2V0IGN1cnJlbnQoYSl7YSE9PXRoaXMuX2N1cnJlbnQmJih0aGlzLl9jdXJyZW50PWEsdGhpcy5fY2hhbmdlLm5leHQoYSkpfWdldCBhY3RpdmVBbGVydHMoKXtyZXR1cm4gdGhpcy5hbGxBbGVydHMmJnRoaXMuYWxsQWxlcnRzLmZpbHRlcihhPT4hYS5f''@;'; put 'put ''Y2xvc2VkKX1nZXQgY3VycmVudEFsZXJ0KCl7cmV0dXJuIHRoaXMuYWN0aXZlQWxlcnRzJiZ0aGlzLmFjdGl2ZUFsZXJ0c1t0aGlzLmN1cnJlbnRdfXNldCBjdXJyZW50QWxlcnQoYSl7dGhpcy5jdXJyZW50PXRoaXMuYWN0aXZlQWxlcnRzLmluZGV4T2YoYSl9Z2V0IGNvdW50KCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuYWN0aXZlQWxlcnRzJiZ0aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGh8fDB9bWFuYWdlKGEpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuYWxsQWxlcnRzPWEsdGhpcy5jdXJyZW50PSJudW1iZXIiPT10eXBlb2YgdGhpcy5fY3Vy''@;'; put 'put ''cmVudD90aGlzLl9jdXJyZW50OjAsdGhpcy5fY2hhbmdlLm5leHQodGhpcy5jdXJyZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLmFsbEFsZXJ0cy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuY3VycmVudD49dGhpcy5hbGxBbGVydHMubGVuZ3RoJiYodGhpcy5jdXJyZW50PU1hdGgu''@;'; put 'put ''bWF4KDAsdGhpcy5hbGxBbGVydHMubGVuZ3RoLTEpKX0pfW5leHQoKXt0aGlzLl9jdXJyZW50PXRoaXMuY3VycmVudD09PXRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aC0xPzA6dGhpcy5jdXJyZW50KzEsdGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCl9cHJldmlvdXMoKXswIT09dGhp''@;'; put 'put ''cy5hY3RpdmVBbGVydHMubGVuZ3RoJiYodGhpcy5fY3VycmVudD0wPT09dGhpcy5jdXJyZW50P3RoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aC0xOnRoaXMuY3VycmVudC0xLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpKX1vcGVuKCl7MCE9PXRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0''@;'; put 'put ''aCYmKHRoaXMuY3VycmVudEFsZXJ0fHwodGhpcy5fY3VycmVudD0wKSx0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KSl9Y2xvc2UoYSl7MCE9PXRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aCYmKGEmJih0aGlzLl9jdXJyZW50PU1hdGgubWF4KDAsdGhpcy5jdXJyZW50LTEpKSx0aGlz''@;'; put 'put ''Ll9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KSl9ZGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjps''@;'; put 'put ''LGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxfUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuaWNvblNlcnZpY2U9YSx0aGlzLmNkcj1mLHRoaXMubXVsdGlBbGVydFNlcnZpY2U9ZCx0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLmlzU21hbGw9ITEsdGhpcy5j''@;'; put 'put ''bG9zYWJsZT0hMCx0aGlzLmlzQXBwTGV2ZWw9ITEsdGhpcy5jbHJDbG9zZUJ1dHRvbkFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5hbGVydENsb3NlQnV0dG9uQXJpYUxhYmVsLHRoaXMuX2Nsb3NlZENoYW5nZWQ9bmV3IHhyKCExKSx0aGlzLl9jbG9zZWQ9ITEsdGhpcy5zdWJz''@;'; put 'put ''Y3JpcHRpb25zPVtdfWdldCBhbGVydFR5cGUoKXtyZXR1cm4gdGhpcy5pY29uU2VydmljZS5hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZShhKXt0aGlzLmljb25TZXJ2aWNlLmFsZXJ0VHlwZT1hfXNldCBhbGVydEljb25TaGFwZShhKXt0aGlzLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlPWF9''@;'; put 'put ''c2V0IGNsb3NlZChhKXthJiYhdGhpcy5fY2xvc2VkP3RoaXMuY2xvc2UoKTohYSYmdGhpcy5fY2xvc2VkJiZ0aGlzLm9wZW4oKX1nZXQgYWxlcnRDbGFzcygpe3JldHVybiB0aGlzLmljb25TZXJ2aWNlLmljb25JbmZvRnJvbVR5cGUodGhpcy5pY29uU2VydmljZS5hbGVydFR5cGUpLmNzc0Ns''@;'; put 'put ''YXNzfWdldCBoaWRkZW4oKXtyZXR1cm4gdGhpcy5faGlkZGVufXNldCBoaWRkZW4oYSl7YSE9PXRoaXMuX2hpZGRlbiYmKHRoaXMuX2hpZGRlbj1hLHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSl9bmdPbkluaXQoKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlJiZ0aGlzLnN1YnNjcmlwdGlvbnMu''@;'; put 'put ''cHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5oaWRkZW49dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnQhPT10aGlzfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmli''@;'; put 'put ''ZSgpKX1vcGVuKCl7dGhpcy5fY2xvc2VkPSExLHRoaXMubXVsdGlBbGVydFNlcnZpY2UmJnRoaXMubXVsdGlBbGVydFNlcnZpY2Uub3BlbigpLHRoaXMuX2Nsb3NlZENoYW5nZWQuZW1pdCghMSl9Y2xvc2UoKXtpZighdGhpcy5jbG9zYWJsZSlyZXR1cm47Y29uc3QgYT10aGlzLm11bHRpQWxl''@;'; put 'put ''cnRTZXJ2aWNlPy5jdXJyZW50QWxlcnQ9PT10aGlzO3RoaXMuX2Nsb3NlZD0hMCx0aGlzLm11bHRpQWxlcnRTZXJ2aWNlJiZ0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNsb3NlKGEpLHRoaXMuX2Nsb3NlZENoYW5nZWQuZW1pdCghMCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXty''@;'; put 'put ''ZXR1cm4gbmV3KGF8fGwpKHJ0KGZaKSxydChVbCkscnQodkksOCkscnQoVGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFsZXJ0Il1dLGlucHV0czp7aXNTbWFsbDpbImNsckFsZXJ0U2l6ZVNtYWxsIiwiaXNTbWFsbCJdLGNsb3NhYmxlOlsiY2xyQWxlcnRD''@;'; put 'put ''bG9zYWJsZSIsImNsb3NhYmxlIl0saXNBcHBMZXZlbDpbImNsckFsZXJ0QXBwTGV2ZWwiLCJpc0FwcExldmVsIl0sY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWw6ImNsckNsb3NlQnV0dG9uQXJpYUxhYmVsIixhbGVydFR5cGU6WyJjbHJBbGVydFR5cGUiLCJhbGVydFR5cGUiXSxhbGVydEljb25T''@;'; put 'put ''aGFwZTpbImNsckFsZXJ0SWNvbiIsImFsZXJ0SWNvblNoYXBlIl0sY2xvc2VkOlsiY2xyQWxlcnRDbG9zZWQiLCJjbG9zZWQiXX0sb3V0cHV0czp7X2Nsb3NlZENoYW5nZWQ6ImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIn0sZmVhdHVyZXM6W3JpKFtmWl0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28s''@;'; put 'put ''ZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbImNsYXNzIiwiYWxlcnQiLDMsIm5nQ2xhc3MiLCJhbGVydC1oaWRkZW4iLCJhbGVydC1zbSIsImFsZXJ0LWFwcC1sZXZlbCIsNCwibmdJZiJdLFsxLCJhbGVydCIsMywibmdDbGFzcyJdLFsxLCJhbGVydC1pdGVtcyJdLFsidHlwZSIsImJ1dHRvbiIs''@;'; put 'put ''ImNsYXNzIiwiY2xvc2UiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjbG9zZSIsMywiY2xpY2siXSxbInNoYXBlIiwid2luZG93LWNsb3NlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSx0dCgwLExQZSw0LDgsImRpdiIsMCkpLDImYSYmUmUo''@;'; put 'put ''Im5nSWYiLCFmLl9jbG9zZWQpfSxkZXBlbmRlbmNpZXM6WyRpLHl1LEphXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il19KSxsfSkoKSx0dWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmljb25TZXJ2aWNlPWF9fXJldHVybiBsLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGZaKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hbGVydC1pdGVtIl1dLGhvc3RBdHRyczpbMSwiYWxlcnQtaXRlbSJdLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczozLHZhcnM6Mixjb25zdHM6''@;'; put 'put ''W1sxLCJhbGVydC1pY29uLXdyYXBwZXIiXSxbInJvbGUiLCJpbWciLDEsImFsZXJ0LWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLHllKDAsImRpdiIsMCksdG4oMSwiY2RzLWljb24iLDEpLENlKCksRHIoMikpLDImYSYmKFNlKDEpLFJyKCJzaGFwZSIsZi5pY29u''@;'; put 'put ''U2VydmljZS5hbGVydEljb25TaGFwZSkoImFyaWEtbGFiZWwiLGYuaWNvblNlcnZpY2UuYWxlcnRJY29uVGl0bGUpKX0sZGVwZW5kZW5jaWVzOltKYV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksd1M9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsOCwiYWxlcnQtdGV4dCJdXX0pLGx9KSgpLG51ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5tdWx0aUFsZXJ0U2VydmljZT1hLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMuY3Vy''@;'; put 'put ''cmVudEFsZXJ0Q2hhbmdlPW5ldyB4cighMSksdGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZT1uZXcgeHJ9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydH1zZXQgY3VycmVudEFsZXJ0KGEpe2EmJih0aGlzLm11bHRpQWxlcnRT''@;'; put 'put ''ZXJ2aWNlLmN1cnJlbnRBbGVydD1hKX1nZXQgY3VycmVudEFsZXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50fXNldCBjdXJyZW50QWxlcnRJbmRleChhKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQ9YX1nZXQgcHJldmlvdXNBbGVydEFyaWFM''@;'; put 'put ''YWJlbCgpe2NvbnN0IGE9dGhpcy5jdXJyZW50QWxlcnRJbmRleCsxO3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuYWxlcnRQcmV2aW91c0FsZXJ0QXJpYUxhYmVsLHtDVVJSRU5UOigxPT09YT90aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNv''@;'; put 'put ''dW50OmEtMSkudG9TdHJpbmcoKSxDT1VOVDp0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50LnRvU3RyaW5nKCl9KX1nZXQgbmV4dEFsZXJ0QXJpYUxhYmVsKCl7Y29uc3QgYT10aGlzLmN1cnJlbnRBbGVydEluZGV4KzE7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNv''@;'; put 'put ''bW1vblN0cmluZ3Mua2V5cy5hbGVydE5leHRBbGVydEFyaWFMYWJlbCx7Q1VSUkVOVDooYT09PXRoaXMubXVsdGlBbGVydFNlcnZpY2UuY291bnQ/MTphKzEpLnRvU3RyaW5nKCksQ09VTlQ6dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jb3VudC50b1N0cmluZygpfSl9bmdPbkluaXQoKXt0aGlz''@;'; put 'put ''Lm11bHRpQWxlcnRTZXJ2aWNlQ2hhbmdlcz10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKGE9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdlLmVtaXQoYSksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UuZW1pdCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmFjdGl2''@;'; put 'put ''ZUFsZXJ0c1thXSl9KX1uZ09uRGVzdHJveSgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2VDaGFuZ2VzLnVuc3Vic2NyaWJlKCl9cGFnZVVwKCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5uZXh0KCl9cGFnZURvd24oKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLnByZXZpb3VzKCl9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHZJKSxydChUYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzLXBhZ2VyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiYWxlcnRz''@;'; put 'put ''LXBhZ2VyIiwhMCl9LGlucHV0czp7Y3VycmVudEFsZXJ0OlsiY2xyQ3VycmVudEFsZXJ0IiwiY3VycmVudEFsZXJ0Il0sY3VycmVudEFsZXJ0SW5kZXg6WyJjbHJDdXJyZW50QWxlcnRJbmRleCIsImN1cnJlbnRBbGVydEluZGV4Il19LG91dHB1dHM6e2N1cnJlbnRBbGVydENoYW5nZToiY2xy''@;'; put 'put ''Q3VycmVudEFsZXJ0Q2hhbmdlIixjdXJyZW50QWxlcnRJbmRleENoYW5nZToiY2xyQ3VycmVudEFsZXJ0SW5kZXhDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1sxLCJhbGVydHMtcGFnZXItY29udHJvbCJdLFsxLCJhbGVydHMtcGFnZS1kb3duIl0sWyJ0eXBlIiwiYnV0dG9uIiwx''@;'; put 'put ''LCJhbGVydHMtcGFnZXItYnV0dG9uIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsImxlZnQiXSxbMSwiYWxlcnRzLXBhZ2VyLXRleHQiXSxbMSwiYWxlcnRzLXBhZ2UtdXAiXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJyaWdodCJdXSx0ZW1wbGF0ZTpm''@;'; put 'put ''dW5jdGlvbihhLGYpezEmYSYmKHllKDAsImRpdiIsMCkoMSwiZGl2IiwxKSgyLCJidXR0b24iLDIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5wYWdlRG93bigpfSksdG4oMywiY2RzLWljb24iLDMpLENlKCkoKSx5ZSg0LCJkaXYiLDQpLFllKDUpLENlKCkseWUoNiwiZGl2Iiw1''@;'; put 'put ''KSg3LCJidXR0b24iLDIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5wYWdlVXAoKX0pLHRuKDgsImNkcy1pY29uIiw2KSxDZSgpKCkoKSksMiZhJiYoU2UoMiksUnIoImFyaWEtbGFiZWwiLGYucHJldmlvdXNBbGVydEFyaWFMYWJlbCksU2UoMyksJHUoIiIsZi5tdWx0aUFsZXJ0''@;'; put 'put ''U2VydmljZS5jdXJyZW50KzEsIiAvICIsZi5tdWx0aUFsZXJ0U2VydmljZS5jb3VudCwiIiksU2UoMiksUnIoImFyaWEtbGFiZWwiLGYubmV4dEFsZXJ0QXJpYUxhYmVsKSl9LGRlcGVuZGVuY2llczpbSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLHJ1ZT0oKCk9PntjbGFzcyBse2NvbnN0''@;'; put 'put ''cnVjdG9yKGEpe3RoaXMubXVsdGlBbGVydFNlcnZpY2U9YSx0aGlzLmN1cnJlbnRBbGVydENoYW5nZT1uZXcgeHIoITEpLHRoaXMuY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U9bmV3IHhyKCExKSx0aGlzLnN1YnNjcmlwdGlvbnM9W119c2V0IGFsbEFsZXJ0cyhhKXt0aGlzLm11bHRpQWxlcnRT''@;'; put 'put ''ZXJ2aWNlLm1hbmFnZShhKX1zZXQgX2lucHV0Q3VycmVudEluZGV4KGEpe051bWJlci5pc0ludGVnZXIoYSkmJmE+PTAmJih0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQ9YSl9Z2V0IGN1cnJlbnRBbGVydEluZGV4KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVu''@;'; put 'put ''dH1zZXQgY3VycmVudEFsZXJ0SW5kZXgoYSl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50PWF9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydH1zZXQgY3VycmVudEFsZXJ0KGEpe2EmJih0aGlzLm11bHRpQWxlcnRTZXJ2''@;'; put 'put ''aWNlLmN1cnJlbnRBbGVydD1hKX1nZXQgYWxlcnRzKCl7cmV0dXJuIHRoaXMuYWxsQWxlcnRzLmZpbHRlcihhPT4hMT09PWEuaGlkZGVuKX1nZXQgY3VycmVudEFsZXJ0VHlwZSgpe3JldHVybiB0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydD90aGlzLm11bHRpQWxlcnRTZXJ2''@;'; put 'put ''aWNlLmN1cnJlbnRBbGVydC5hbGVydFR5cGU6IiJ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jaGFuZ2VzLnN1YnNjcmliZShhPT57dGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZS5uZXh0KGEpLHRoaXMuY3Vy''@;'; put 'put ''cmVudEFsZXJ0Q2hhbmdlLm5leHQodGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnQpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKSx0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmRlc3Ryb3koKX19cmV0dXJuIGwu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQodkkpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFsZXJ0cyJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiZGbyhkLF9TLDQpLDImYSl7bGV0IGg7dWkoaD1j''@;'; put 'put ''aSgpKSYmKGYuYWxsQWxlcnRzPWgpfX0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiYWxlcnRzIiwhMCkoImFsZXJ0LWRhbmdlciIsImRhbmdlciI9PWYuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LWluZm8iLCJpbmZvIj09Zi5jdXJyZW50QWxlcnRU''@;'; put 'put ''eXBlKSgiYWxlcnQtc3VjY2VzcyIsInN1Y2Nlc3MiPT1mLmN1cnJlbnRBbGVydFR5cGUpKCJhbGVydC13YXJuaW5nIiwid2FybmluZyI9PWYuY3VycmVudEFsZXJ0VHlwZSl9LGlucHV0czp7X2lucHV0Q3VycmVudEluZGV4OlsiY2xyQ3VycmVudEFsZXJ0SW5kZXgiLCJfaW5wdXRDdXJyZW50''@;'; put 'put ''SW5kZXgiXSxjdXJyZW50QWxlcnQ6WyJjbHJDdXJyZW50QWxlcnQiLCJjdXJyZW50QWxlcnQiXX0sb3V0cHV0czp7Y3VycmVudEFsZXJ0Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRDaGFuZ2UiLGN1cnJlbnRBbGVydEluZGV4Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRJbmRleENoYW5nZSJ9LGZl''@;'; put 'put ''YXR1cmVzOltyaShbdkldKV0sbmdDb250ZW50U2VsZWN0b3JzOkhQZSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1szLCJjbHJDdXJyZW50QWxlcnRJbmRleCIsNCwibmdJZiJdLFszLCJjbHJDdXJyZW50QWxlcnRJbmRleCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKEZQZSks''@;'; put 'put ''dHQoMCxQUGUsMSwxLCJjbHItYWxlcnRzLXBhZ2VyIiwwKSxEcigxKSksMiZhJiZSZSgibmdJZiIsZi5tdWx0aUFsZXJ0U2VydmljZS5jb3VudD4xKX0sZGVwZW5kZW5jaWVzOltudWUsJGldLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpibG9ja30iXX0pLGx9KSgpLGl1ZT0o''@;'; put 'put ''KCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnModzEsUW9lLF8xLG5UZSxOQyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxsbCxj''@;'; put 'put ''Wl1dfSksbH0pKCksa05lPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2l1ZV19KSxsfSkoKSx0bD0oKCk9PntjbGFzcyBse31yZXR1''@;'; put 'put ''cm4gbC5OQVZfTEVWRUxfMT0xLGwuTkFWX0xFVkVMXzI9MixsLk5BVl9DTE9TRV9BTEw9Ik5BVl9DTE9TRV9BTEwiLGwuTkFWX09QRU49Ik5BVl9PUEVOIixsLk5BVl9DTE9TRT0iTkFWX0NMT1NFIixsLk5BVl9UT0dHTEU9Ik5BVl9UT0dHTEUiLGwuTkFWX0NMQVNTX0hBTUJVUkdFUl9NRU5V''@;'; put 'put ''PSJvcGVuLWhhbWJ1cmdlci1tZW51IixsLk5BVl9DTEFTU19PVkVSRkxPV19NRU5VPSJvcGVuLW92ZXJmbG93LW1lbnUiLGwuTkFWX0NMQVNTX1RSSUdHRVJfMT0iaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyIixsLk5BVl9DTEFTU19UUklHR0VSXzI9ImhlYWRlci1vdmVyZmxvdy10cmlnZ2Vy''@;'; put 'put ''IixsLk5BVl9DTEFTU19MRVZFTF8xPSJjbHItbmF2LWxldmVsLTEiLGwuTkFWX0NMQVNTX0xFVkVMXzI9ImNsci1uYXYtbGV2ZWwtMiIsbH0pKCk7Y2xhc3Mgb3Vle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fY29udHJvbENvZGU9Yyx0aGlzLl9uYXZMZXZlbD1hfWdldCBjb250cm9sQ29kZSgp''@;'; put 'put ''e3JldHVybiB0aGlzLl9jb250cm9sQ29kZX1nZXQgbmF2TGV2ZWwoKXtyZXR1cm4gdGhpcy5fbmF2TGV2ZWx9fWxldCB5ST0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNwb25zaXZlTmF2TGlzdD1bXSx0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdD1uZXcgeEQsdGhpcy5jb250''@;'; put 'put ''cm9sTmF2U3ViamVjdD1uZXcgd2UsdGhpcy5jbG9zZUFsbE5hdnMoKX1nZXQgcmVnaXN0ZXJlZE5hdnMoKXtyZXR1cm4gdGhpcy5yZWdpc3Rlck5hdlN1YmplY3QuYXNPYnNlcnZhYmxlKCl9Z2V0IG5hdkNvbnRyb2woKXtyZXR1cm4gdGhpcy5jb250cm9sTmF2U3ViamVjdC5hc09ic2VydmFi''@;'; put 'put ''bGUoKX1yZWdpc3Rlck5hdihhKXshYXx8dGhpcy5pc05hdlJlZ2lzdGVyZWQoYSl8fCh0aGlzLnJlc3BvbnNpdmVOYXZMaXN0LnB1c2goYSksdGhpcy5yZWdpc3Rlck5hdlN1YmplY3QubmV4dCh0aGlzLnJlc3BvbnNpdmVOYXZMaXN0KSl9aXNOYXZSZWdpc3RlcmVkKGEpe3JldHVybiB0aGlz''@;'; put 'put ''LnJlc3BvbnNpdmVOYXZMaXN0LmluZGV4T2YoYSk+LTEmJihjb25zb2xlLmVycm9yKCJNdWx0aXBsZSBjbHItbmF2LWxldmVsICIrYSsiIGF0dHJpYnV0ZXMgZm91bmQuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBvbmx5IG9uZSBleGlzdHMiKSwhMCl9dW5yZWdpc3Rlck5hdihhKXtjb25zdCBm''@;'; put 'put ''PXRoaXMucmVzcG9uc2l2ZU5hdkxpc3QuaW5kZXhPZihhKTtmPi0xJiYodGhpcy5yZXNwb25zaXZlTmF2TGlzdC5zcGxpY2UoZiwxKSx0aGlzLnJlZ2lzdGVyTmF2U3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2l2ZU5hdkxpc3QpKX1zZW5kQ29udHJvbE1lc3NhZ2UoYSxmKXtjb25zdCBkPW5l''@;'; put 'put ''dyBvdWUoYSxmKTt0aGlzLmNvbnRyb2xOYXZTdWJqZWN0Lm5leHQoZCl9Y2xvc2VBbGxOYXZzKCl7Y29uc3QgYT1uZXcgb3VlKHRsLk5BVl9DTE9TRV9BTEwsLTk5OSk7dGhpcy5jb250cm9sTmF2U3ViamVjdC5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJu''@;'; put 'put ''IG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxFTmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURp''@;'; put 'put ''KHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLGxsXV19KSxsfSkoKTtmdW5jdGlvbiBsdWUobCl7Y29uc3QgYz1sLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyZXR1cm4gYy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLGMuY2xhc3NMaXN0LmFkZCgib2Zmc2NyZWVu''@;'; put 'put ''LWZvY3VzLXJlYm91bmRlciIpLGN9Y2xhc3MgTE5le2NvbnN0cnVjdG9yKGMsYSxmLGQpe3RoaXMucmVuZGVyZXI9Yyx0aGlzLmFjdGl2ZT0hMSxIYShmKSYmKHRoaXMuX2RvY3VtZW50PWEuZ2V0KEZhKSksZC5mb2N1c1RyYXBJZHx8KGQuZm9jdXNUcmFwSWQ9ZnVuY3Rpb24geUFlKGw9Il8i''@;'; put 'put ''KXtyZXR1cm5gJHtsfSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOSl9YH0oKSksdGhpcy5mb2N1c1RyYXBFbGVtZW50PWR9ZW5hYmxlRm9jdXNUcmFwKCl7Y29uc3QgYz10aGlzLmZvY3VzVHJhcEVsZW1lbnQsYT1jLnF1ZXJ5U2VsZWN0b3IoIltjZHMtZmlyc3QtZm9j''@;'; put 'put ''dXNdIiksZj10aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50O2lmKFpELmdldEN1cnJlbnQoKT09PWMpdGhyb3cgbmV3IEVycm9yKCJGb2N1cyB0cmFwIGlzIGFscmVhZHkgZW5hYmxlZCBmb3IgdGhpcyBpbnN0YW5jZS4iKTt0aGlzLmZpcnN0Rm9jdXNFbGVtZW50PWF8fHRoaXMuZm9jdXNU''@;'; put 'put ''cmFwRWxlbWVudCxmdW5jdGlvbiBJTmUobCxjKXtpZihjJiYhYy50b3BSZWJvdW5kRWxlbWVudCYmIWMuYm90dG9tUmVib3VuZEVsZW1lbnQpe2MudG9wUmVib3VuZEVsZW1lbnQ9bHVlKGwpLGMuYm90dG9tUmVib3VuZEVsZW1lbnQ9bHVlKGwpO2NvbnN0IGE9Yy5wYXJlbnRFbGVtZW50LGY9''@;'; put 'put ''Yy5uZXh0U2libGluZzthJiYoYS5pbnNlcnRCZWZvcmUoYy50b3BSZWJvdW5kRWxlbWVudCxjKSxmP2EuaW5zZXJ0QmVmb3JlKGMuYm90dG9tUmVib3VuZEVsZW1lbnQsZik6YS5hcHBlbmRDaGlsZChjLmJvdHRvbVJlYm91bmRFbGVtZW50KSl9fSh0aGlzLl9kb2N1bWVudCxjKSxmdW5jdGlv''@;'; put 'put ''biBiT2UobCl7c3dpdGNoKGwudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlImlucHV0IjpyZXR1cm4iaGlkZGVuIiE9PWwuZ2V0QXR0cmlidXRlKCJ0eXBlIikmJiFsLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSYmIWwuaGFzQXR0cmlidXRlKCJyZWFkb25seSIpO2Nhc2UiYnV0dG9uIjpj''@;'; put 'put ''YXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6cmV0dXJuIWwuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpO2Nhc2UiaWZyYW1lIjpjYXNlImVtYmVkIjpjYXNlIm9iamVjdCI6cmV0dXJuITA7Y2FzZSJhIjpjYXNlImFyZWEiOnJldHVybiBsLmhhc0F0dHJpYnV0ZSgiaHJlZiIpO2Nhc2UiYXVk''@;'; put 'put ''aW8iOmNhc2UidmlkZW8iOnJldHVybiBsLmhhc0F0dHJpYnV0ZSgiY29udHJvbHMiKTtkZWZhdWx0OnJldHVybiBsLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8InRydWUiPT09bC5nZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHwiYnV0dG9uIj09PWwuZ2V0QXR0cmlidXRlKCJy''@;'; put 'put ''b2xlIikmJiFsLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKX19KGMpfHxjLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGYmJmZ1bmN0aW9uIENPZShsKXtyZXR1cm4hIWwmJmwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0oZikmJih0aGlzLnByZXZpb3VzRm9jdXM9ZiksWkQuc2V0Q3Vy''@;'; put 'put ''cmVudChjKTtjb25zdCBkPXNldFRpbWVvdXQoKCk9Pnt0aGlzLmZpcnN0Rm9jdXNFbGVtZW50LmZvY3VzKCksY2xlYXJUaW1lb3V0KGQpfSwxMCk7dGhpcy5vbkZvY3VzSW5FdmVudD10aGlzLm9uRm9jdXNJbi5iaW5kKHRoaXMpLHRoaXMudW5saXN0ZW49dGhpcy5yZW5kZXJlci5saXN0ZW4o''@;'; put 'put ''dGhpcy5fZG9jdW1lbnQsImZvY3VzaW4iLHRoaXMub25Gb2N1c0luRXZlbnQpLHRoaXMuYWN0aXZlPSEwfXJlbW92ZUZvY3VzVHJhcCgpe3RoaXMudW5saXN0ZW4mJnRoaXMudW5saXN0ZW4oKSxmdW5jdGlvbiBSTmUobCl7aWYobCl7Y29uc3QgYz1sLnBhcmVudEVsZW1lbnQ7aWYoYyl7Y29u''@;'; put 'put ''c3QgYT1sLnRvcFJlYm91bmRFbGVtZW50LGY9bC5ib3R0b21SZWJvdW5kRWxlbWVudDthJiZjLnJlbW92ZUNoaWxkKGEpLGYmJmMucmVtb3ZlQ2hpbGQoZil9ZGVsZXRlIGwudG9wUmVib3VuZEVsZW1lbnQsZGVsZXRlIGwuYm90dG9tUmVib3VuZEVsZW1lbnR9fSh0aGlzLmZvY3VzVHJhcEVs''@;'; put 'put ''ZW1lbnQpLHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZm9jdXNUcmFwRWxlbWVudCwidGFiaW5kZXgiKSxaRC5hY3RpdmF0ZVByZXZpb3VzQ3VycmVudCgpLHRoaXMuYWN0aXZlPSExLHRoaXMucHJldmlvdXNGb2N1cyYmdGhpcy5wcmV2aW91c0ZvY3VzLmZvY3VzKCl9b25G''@;'; put 'put ''b2N1c0luKGMpeyFmdW5jdGlvbiBPTmUobCxjLGEpe2NvbnN0IGY9WkQuZ2V0Q3VycmVudCgpPT09YyxkPWZ1bmN0aW9uIEROZShsLGMpe3JldHVybiBsPT09Yy50b3BSZWJvdW5kRWxlbWVudHx8bD09PWMuYm90dG9tUmVib3VuZEVsZW1lbnR8fCEoYy5jb250YWlucyhsKXx8bnVsbCE9PWMm''@;'; put 'put ''JmMuY29udGFpbnMobCkpfShsLGMpO2YmJmQ/KGE9YXx8YykuZm9jdXMoKTpsLmZvY3VzKCl9KGMuY29tcG9zZWRQYXRoKClbMF0sdGhpcy5mb2N1c1RyYXBFbGVtZW50LHRoaXMuZmlyc3RGb2N1c0VsZW1lbnQpfX1sZXQgc3VlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBMTmV7Y29uc3RydWN0''@;'; put 'put ''b3IoYSxmLGQsaCxtKXtzdXBlcihoLG0sYSxkLm5hdGl2ZUVsZW1lbnQpLHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2U9Zix0aGlzLmVsZW1lbnRSZWY9ZCx0aGlzLl9pc09wZW49ITEsSGEoYSkmJih0aGlzLl9kb2N1bWVudD1tLmdldChGYSkpLHRoaXMuX3N1YnNjcmlwdGlvbj1mLm5hdkNv''@;'; put 'put ''bnRyb2wucGlwZShJbChfPT5fLm5hdkxldmVsPT09dGhpcy5sZXZlbCksSWwoKHtjb250cm9sQ29kZTpffSk9Pl89PT10bC5OQVZfT1BFTiYmIXRoaXMuaXNPcGVufHxfPT09dGwuTkFWX0NMT1NFJiZ0aGlzLmlzT3BlbikpLnN1YnNjcmliZSgoe2NvbnRyb2xDb2RlOl99KT0+e18hPT10bC5O''@;'; put 'put ''QVZfT1BFTj90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9KSx0aGlzLl9zdWJzY3JpcHRpb24uYWRkKGYubmF2Q29udHJvbC5waXBlKElsKCh7Y29udHJvbENvZGU6X30pPT5fPT09dGwuTkFWX0NMT1NFX0FMTCkpLnN1YnNjcmliZSgoKT0+dGhpcy5jbG9zZSgpKSl9Z2V0IGxldmVsKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2xldmVsfWdldCByZXNwb25zaXZlTmF2Q29kZXMoKXtyZXR1cm4gdGx9Z2V0IGlzT3Blbigpe3JldHVybiB0aGlzLl9pc09wZW59bmdPbkluaXQoKXt0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsfHwodGhpcy5jbG9zZUJ1dHRvbkFyaWFMYWJlbD10aGlzLl9sZXZlbD09PXRs''@;'; put 'put ''Lk5BVl9MRVZFTF8xP21VLnJlc3BvbnNpdmVOYXZUb2dnbGVDbG9zZTptVS5yZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZSksdGhpcy5sZXZlbD09PXRsLk5BVl9MRVZFTF8xfHx0aGlzLmxldmVsPT09dGwuTkFWX0xFVkVMXzI/KHRoaXMucmVzcG9uc2l2ZU5hdlNlcnZpY2UucmVnaXN0ZXJO''@;'; put 'put ''YXYodGhpcy5sZXZlbCksdGhpcy5hZGROYXZDbGFzcyh0aGlzLmxldmVsKSk6Y29uc29sZS5lcnJvcigiTmF2IExldmVsIGNhbiBvbmx5IGJlIDEgb3IgMiIpfW5nQWZ0ZXJWaWV3SW5pdCgpe2NvbnN0IGE9KChsLGMpPT57Y29uc3QgYT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj''@;'; put 'put ''ZHMtaW50ZXJuYWwtY2xvc2UtYnV0dG9uIik7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJpY29uLXNpemUiLCIzMiIpLGEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKSxhLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJidXR0b24i''@;'; put 'put ''KSxhLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwidHJ1ZSIpLGEuY2xhc3NOYW1lPSJjbHItbmF2LWNsb3NlIixhfSkoMCx0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsKTt0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJjbGljayIsdGhpcy5jbG9zZS5iaW5kKHRoaXMpKSx0aGlzLnJlbmRlcmVyLmlu''@;'; put 'put ''c2VydEJlZm9yZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxhLHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQpLHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg8OTkyJiZ0aGlzLmNsb3NlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlc3BvbnNpdmVO''@;'; put 'put ''YXZTZXJ2aWNlLnVucmVnaXN0ZXJOYXYodGhpcy5sZXZlbCksdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9b25SZXNpemUoYSl7YS50YXJnZXQuaW5uZXJXaWR0aDw5OTImJnRoaXMuaXNPcGVuP3RoaXMuY2xvc2UoKTp0aGlzLnNob3dOYXZpZ2F0aW9uKCl9b25Nb3VzZUNsaWNr''@;'; put 'put ''KGEpe2xldCBmPWE7Y29uc3QgZD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtmb3IoO2Y7KXtpZihmPT09ZClyZXR1cm47aWYoZi5jbGFzc0xpc3QuY29udGFpbnMoIm5hdi1saW5rIikmJnRoaXMuX2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg8OTkyKXJldHVybiB2b2lkIHRoaXMu''@;'; put 'put ''Y2xvc2UoKTtmPWYucGFyZW50Tm9kZX19YWRkTmF2Q2xhc3MoYSl7Y29uc3QgZj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7YT09PXRsLk5BVl9MRVZFTF8xP2YuYWRkKHRsLk5BVl9DTEFTU19MRVZFTF8xKTphPT09dGwuTkFWX0xFVkVMXzImJmYuYWRkKHRsLk5B''@;'; put 'put ''Vl9DTEFTU19MRVZFTF8yKX1vcGVuKCl7dGhpcy5faXNPcGVuPSEwLHRoaXMuc2hvd05hdmlnYXRpb24oKSx0aGlzLmVuYWJsZUZvY3VzVHJhcCgpLHRoaXMuc2hvd0Nsb3NlQnV0dG9uKCksdGhpcy5yZXNwb25zaXZlTmF2U2VydmljZS5zZW5kQ29udHJvbE1lc3NhZ2UodGwuTkFWX09QRU4s''@;'; put 'put ''dGhpcy5sZXZlbCl9Y2xvc2UoKXt0aGlzLl9pc09wZW49ITEsdGhpcy5oaWRlTmF2aWdhdGlvbigpLHRoaXMucmVtb3ZlRm9jdXNUcmFwKCksdGhpcy5oaWRlQ2xvc2VCdXR0b24oKSx0aGlzLnJlc3BvbnNpdmVOYXZTZXJ2aWNlLnNlbmRDb250cm9sTWVzc2FnZSh0bC5OQVZfQ0xPU0UsdGhp''@;'; put 'put ''cy5sZXZlbCl9aGlkZU5hdmlnYXRpb24oKXt0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImhp''@;'; put 'put ''ZGRlbiIsInRydWUiKX1zaG93TmF2aWdhdGlvbigpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJhcmlhLWhpZGRlbiIsImZhbHNlIiksdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVs''@;'; put 'put ''ZW1lbnQsImhpZGRlbiIpfWhpZGVDbG9zZUJ1dHRvbigpe3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJhcmlhLWhpZGRlbiIsInRydWUiKSx0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxl''@;'; put 'put ''bWVudC5xdWVyeVNlbGVjdG9yKCIuY2xyLW5hdi1jbG9zZSIpLCJoaWRkZW4iLCJ0cnVlIil9c2hvd0Nsb3NlQnV0dG9uKCl7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmNsci1uYXYtY2xvc2UiKSwiYXJp''@;'; put 'put ''YS1oaWRkZW4iLCJmYWxzZSIpLHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbHItbmF2LWNsb3NlIiksImhpZGRlbiIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhh''@;'; put 'put ''fHxsKShydChxYSkscnQoeUkpLHJ0KFZpKSxydChqbykscnQoQWwpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyLW5hdi1sZXZlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJyZXNpemUiLGZ1bmN0aW9uKGgpe3JldHVybiBm''@;'; put 'put ''Lm9uUmVzaXplKGgpfSwwLEc4KSgiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uTW91c2VDbGljayhoLnRhcmdldCl9KX0saW5wdXRzOntfbGV2ZWw6WyJjbHItbmF2LWxldmVsIiwiX2xldmVsIl0sY2xvc2VCdXR0b25BcmlhTGFiZWw6WyJjbG9zZUFyaWFMYWJlbCIsImNsb3NlQnV0''@;'; put 'put ''dG9uQXJpYUxhYmVsIl19LGZlYXR1cmVzOltyb119KSxsfSkoKSxGTmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLGxsLGNa''@;'; put 'put ''XV19KSxsfSkoKSx1dWU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbIm5nLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxmKXtpZigxJmEmJk5v''@;'; put 'put ''KHpsLDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYudGVtcGxhdGU9ZC5maXJzdCl9fSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLHR0KDAsQlBlLDEsMCwibmctdGVtcGxhdGUiKSl9LGVuY2Fwc3VsYXRp''@;'; put 'put ''b246Mn0pLGx9KSgpLEhOZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dXX0pLGx9KSgpLGw1PSgoKT0+e2NsYXNzIGwgZXh0''@;'; put 'put ''ZW5kcyBKdnt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGYpe3JldHVybihjfHwoYz14bChsKSkpKGZ8fGwpfX0oKSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdGFicyJdXSxmZWF0dXJlczpbcm9dfSksbH0pKCks''@;'; put 'put ''QTc9KCgpPT57Y2xhc3MgbCBleHRlbmRzIFF2e2NvbnN0cnVjdG9yKGEsZixkLGgpe2lmKCFmKXRocm93IG5ldyBFcnJvcigiY2xyVGFiTGluayBhbmQgY2xyLXRhYi1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLXRhYnMiKTtzdXBlcihhLGYpLHRoaXMuaWZB''@;'; put 'put ''Y3RpdmU9aCx0aGlzLmlkPWR9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmlmQWN0aXZlLmN1cnJlbnQ9PT10aGlzLmlkfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChVbCkscnQobDUsOCkscnQocjcpLHJ0KFlnKSl9LGwuXHUwMjc1ZGlyPVNy''@;'; put 'put ''KHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsclRhYkxpbmsiLCIiXSxbImNsci10YWItY29udGVudCJdXSxmZWF0dXJlczpbcm9dfSksbH0pKCk7dmFyIHM1PWZ1bmN0aW9uKGwpe3JldHVybiBsLkhPUklaT05UQUw9Imhvcml6b250YWwiLGwuVkVSVElDQUw9InZlcnRpY2FsIixsfShzNXx8''@;'; put 'put ''e30pO2xldCBDUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5sYXlvdXQ9czUuSE9SSVpPTlRBTCx0aGlzLl9jaGlsZHJlbj1bXX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5fY2hpbGRyZW59Z2V0IGFjdGl2ZVRhYigpe3JldHVybiB0aGlzLmNoaWxkcmVuLmZpbmQoYT0+''@;'; put 'put ''YS5hY3RpdmUpfWdldCBvdmVyZmxvd1RhYnMoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT1zNS5WRVJUSUNBTD9bXTp0aGlzLmNoaWxkcmVuLmZpbHRlcihhPT4hMD09PWEudGFiTGluay5pbk92ZXJmbG93KX1yZWdpc3RlcihhKXt0aGlzLl9jaGlsZHJlbi5wdXNoKGEpfXVucmVnaXN0ZXIoYSl7''@;'; put 'put ''Y29uc3QgZj10aGlzLmNoaWxkcmVuLmluZGV4T2YoYSk7Zj4tMSYmdGhpcy5jaGlsZHJlbi5zcGxpY2UoZiwxKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0p''@;'; put 'put ''KCksTk5lPTAsdTU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9YSx0aGlzLmlkPWYsdGhpcy50YWJzU2VydmljZT1kLHRoaXMudGFiQ29udGVudElkfHwodGhpcy50YWJDb250ZW50SWQ9ImNsci10YWItY29udGVudC0iK05OZSsrKX1nZXQg''@;'; put 'put ''YWN0aXZlKCl7cmV0dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfWdldCBhcmlhTGFiZWxsZWRCeSgpe3JldHVybiB0aGlzLnRhYnNTZXJ2aWNlLmNoaWxkcmVuLmZpbmQoYT0+YS50YWJDb250ZW50PT09dGhpcyk/LnRhYkxpbms/LnRhYkxpbmtJZH1zZXQgdGVt''@;'; put 'put ''cGxhdGVSZWYoYSl7dGhpcy52aWV3UmVmPXRoaXMudGFic1NlcnZpY2UudGFiQ29udGVudFZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGEpfW5nT25EZXN0cm95KCl7Y29uc3QgYT10aGlzLnRhYnNTZXJ2aWNlLnRhYkNvbnRlbnRWaWV3Q29udGFpbmVyLmluZGV4T2YodGhpcy52''@;'; put 'put ''aWV3UmVmKTthPi0xJiZ0aGlzLnRhYnNTZXJ2aWNlLnRhYkNvbnRlbnRWaWV3Q29udGFpbmVyLnJlbW92ZShhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoWWcpLHJ0KHI3KSxydChDUykpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVj''@;'; put 'put ''dG9yczpbWyJjbHItdGFiLWNvbnRlbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiZObyhqUGUsNyksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi50ZW1wbGF0ZVJlZj1kLmZpcnN0KX19LGlucHV0czp7dGFiQ29udGVudElkOlsiaWQiLCJ0YWJDb250ZW50SWQiXX0sbmdD''@;'; put 'put ''b250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJ0YWJDb250ZW50UHJvamVjdGVkUmVmIiwiIl0sWyJyb2xlIiwidGFicGFuZWwiLDEsInRhYi1jb250ZW50IiwzLCJpZCIsImhpZGRlbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksdHQoMCx6''@;'; put 'put ''UGUsMiw2LCJuZy10ZW1wbGF0ZSIsbnVsbCwwLEt1KSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFZOZT0wO2NvbnN0IGRaPW5ldyBNaSgiVEFCU19JRCIpLGpOZT17cHJvdmlkZTpkWix1c2VGYWN0b3J5OmZ1bmN0aW9uIEJOZSgpe3JldHVybiJjbHItdGFicy0iK1ZOZSsrfX07bGV0IHpO''@;'; put 'put ''ZT0wLGM1PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyl7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9YSx0aGlzLmlkPWYsdGhpcy5lbD1kLHRoaXMuY2ZyPWgsdGhpcy52aWV3Q29udGFpbmVyUmVmPW0sdGhpcy50YWJzU2VydmljZT1fLHRoaXMudGFic0lkPU8sdGhpcy50''@;'; put 'put ''YWJMaW5rSWR8fCh0aGlzLnRhYkxpbmtJZD0iY2xyLXRhYi1saW5rLSIrek5lKyspO2NvbnN0IFg9dGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodXVlKTt0aGlzLnRlbXBsYXRlUmVmQ29udGFpbmVyPXRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoWCx2b2lk''@;'; put 'put ''IDAsdm9pZCAwLFtbdGhpcy5lbC5uYXRpdmVFbGVtZW50XV0pLmluc3RhbmNlfWdldCBpbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMuX2luT3ZlcmZsb3cmJnRoaXMudGFic1NlcnZpY2UubGF5b3V0IT09czUuVkVSVElDQUx9c2V0IGluT3ZlcmZsb3coYSl7dGhpcy5faW5PdmVyZmxvdz1hfWdl''@;'; put 'put ''dCBhZGRMaW5rQ2xhc3Nlcygpe3JldHVybiF0aGlzLmluT3ZlcmZsb3d9Z2V0IGFyaWFDb250cm9scygpe3JldHVybiB0aGlzLnRhYnNTZXJ2aWNlLmNoaWxkcmVuLmZpbmQoYT0+YS50YWJMaW5rPT09dGhpcyk/LnRhYkNvbnRlbnQ/LnRhYkNvbnRlbnRJZH1nZXQgYWN0aXZlKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfWdldCB0YWJpbmRleCgpe3JldHVybiB0aGlzLmFjdGl2ZT8wOi0xfWFjdGl2YXRlKCl7dGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD10aGlzLmlkfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJu''@;'; put 'put ''IG5ldyhhfHxsKShydChZZykscnQocjcpLHJ0KFZpKSxydChjMSkscnQoZmEpLHJ0KENTKSxydChkWikpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJUYWJMaW5rIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJ0YWIiLCJ0eXBlIiwiYnV0dG9uIl0saG9zdFZh''@;'; put 'put ''cnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuYWN0aXZhdGUoKX0pLDImYSYmKG0xKCJpZCIsZi50YWJMaW5rSWQpLFJyKCJhcmlhLWNvbnRyb2xzIixmLmFyaWFDb250cm9scykoImFyaWEtc2VsZWN0ZWQiLGYuYWN0''@;'; put 'put ''aXZlKSgidGFiaW5kZXgiLGYudGFiaW5kZXgpLGdyKCJidG4iLCEwKSgiYnRuLWxpbmsiLGYuYWRkTGlua0NsYXNzZXMpKCJuYXYtbGluayIsZi5hZGRMaW5rQ2xhc3NlcykoImFjdGl2ZSIsZi5hY3RpdmUpKX0saW5wdXRzOnt0YWJMaW5rSWQ6WyJpZCIsInRhYkxpbmtJZCJdLGluT3ZlcmZs''@;'; put 'put ''b3c6WyJjbHJUYWJMaW5rSW5PdmVyZmxvdyIsImluT3ZlcmZsb3ciXX19KSxsfSkoKSxmNT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLmlmQWN0aXZlU2VydmljZT1hLHRoaXMuaWQ9Zix0aGlzLnRhYnNTZXJ2aWNlPWQsZC5yZWdpc3Rlcih0aGlzKX1nZXQgYWN0aXZl''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfW5nT25EZXN0cm95KCl7dGhpcy50YWJzU2VydmljZS51bnJlZ2lzdGVyKHRoaXMpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChZZykscnQocjcpLHJ0KENT''@;'; put 'put ''KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10YWIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxmLGQpe2lmKDEmYSYmKEZvKGQsYzUsNyksRm8oZCx1NSw3KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi50YWJMaW5rPWguZmlyc3QpLHVpKGg9Y2ko''@;'; put 'put ''KSkmJihmLnRhYkNvbnRlbnQ9aC5maXJzdCl9fSxmZWF0dXJlczpbcmkoW1lGZV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLERyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksaFo9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10YWItb3ZlcmZsb3ctY29udGVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3Io''@;'; put 'put ''ImRyb3Bkb3duLW1lbnUiLCEwKX0sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSxEcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFQ3PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0''@;'; put 'put ''aGlzLmlmQWN0aXZlU2VydmljZT1hLHRoaXMudG9nZ2xlU2VydmljZT1mLHRoaXMudGFic1NlcnZpY2U9ZCx0aGlzLnRhYnNJZD1oLHRoaXMuY29tbW9uU3RyaW5ncz1tLHRoaXMudGFiTGlua0VsZW1lbnRzPVtdLHRoaXMuX21vdXNlZG93bj0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhp''@;'; put 'put ''cy5fdGFiTGlua0RpcmVjdGl2ZXM9W119Z2V0IGxheW91dCgpe3JldHVybiB0aGlzLnRhYnNTZXJ2aWNlLmxheW91dH1zZXQgbGF5b3V0KGEpe09iamVjdC5rZXlzKHM1KS5tYXAoZj0+czVbZl0pLmluZGV4T2YoYSk+PTAmJih0aGlzLnRhYnNTZXJ2aWNlLmxheW91dD1hKX1nZXQgdGFiTGlu''@;'; put 'put ''a0RpcmVjdGl2ZXMoKXtyZXR1cm4gdGhpcy5fdGFiTGlua0RpcmVjdGl2ZXN9Z2V0IGFjdGl2ZVRhYkluT3ZlcmZsb3coKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5vdmVyZmxvd1RhYnMuaW5kZXhPZih0aGlzLnRhYnNTZXJ2aWNlLmFjdGl2ZVRhYik+LTF9Z2V0IGFjdGl2ZVRhYlBvc2l0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzLmZpbmRJbmRleChhPT5hLmFjdGl2ZSl9Z2V0IGlzQ3VycmVudEluT3ZlcmZsb3coKXtyZXR1cm4gdGhpcy5rZXlGb2N1cy5jdXJyZW50Pj10aGlzLm92ZXJmbG93UG9zaXRpb259Z2V0IGlzVmVydGljYWwoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5sYXlvdXQ9PT1zNS5WRVJUSUNBTH1zZXQgdGFiT3ZlcmZsb3dFbChhKXt0aGlzLl90YWJPdmVyZmxvd0VsPWEmJmEubmF0aXZlRWxlbWVudCx0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmYSYmdGhpcy5rZXlGb2N1cy5mb2N1c0N1cnJlbnQoKX1nZXQgb3ZlcmZsb3dQb3NpdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5maWx0ZXIoYT0+IWEuaW5PdmVyZmxvdykubGVuZ3RofXNldCB0YWJDb250ZW50Vmlld0NvbnRhaW5lcihhKXt0aGlzLnRhYnNTZXJ2aWNlLnRhYkNvbnRlbnRWaWV3Q29udGFpbmVyPWF9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zdWJz''@;'; put 'put ''Y3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JUYWJMaW5rQ2hhbmdlcygpKSx0eXBlb2YgdGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVudD4idSImJnRoaXMudGFiTGlua0RpcmVjdGl2ZXNbMF0mJnRoaXMudGFiTGlua0RpcmVjdGl2ZXNbMF0uYWN0aXZhdGUoKSx0aGlzLmtleUZvY3Vz''@;'; put 'put ''LmN1cnJlbnQ9dGhpcy5hY3RpdmVUYWJQb3NpdGlvbn1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PnthLnVuc3Vic2NyaWJlKCl9KX10b2dnbGVPdmVyZmxvd09uUG9zaXRpb24oYSl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49YT49dGhpcy5vdmVyZmxvd1Bv''@;'; put 'put ''c2l0aW9ufXJlc2V0S2V5Rm9jdXNDdXJyZW50VG9BY3RpdmUoYSl7IXRoaXMua2V5Rm9jdXMubmF0aXZlRWxlbWVudC5jb250YWlucyhhLnJlbGF0ZWRUYXJnZXQpJiZ0aGlzLmtleUZvY3VzLmN1cnJlbnQhPT10aGlzLmFjdGl2ZVRhYlBvc2l0aW9uJiYodGhpcy5rZXlGb2N1cy5jdXJyZW50''@;'; put 'put ''PXRoaXMuYWN0aXZlVGFiUG9zaXRpb24pfXRvZ2dsZU92ZXJmbG93T25DbGljaygpe3RoaXMua2V5Rm9jdXMubW92ZVRvKHRoaXMuaXNDdXJyZW50SW5PdmVyZmxvdyYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4/dGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTE6dGhpcy5vdmVyZmxvd1Bvc2l0aW9u''@;'; put 'put ''KSx0aGlzLl9tb3VzZWRvd249ITF9b3Blbk92ZXJmbG93T25Gb2N1cygpeyF0aGlzLl9tb3VzZWRvd24mJiF0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmdGhpcy5rZXlGb2N1cy5tb3ZlVG8odGhpcy5hY3RpdmVUYWJQb3NpdGlvbil9Y2xvc2VPbkZvY3VzT3V0KGEpeyF0aGlzLl90YWJPdmVy''@;'; put 'put ''Zmxvd0VsLmNvbnRhaW5zKGEucmVsYXRlZFRhcmdldCkmJnRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYhdGhpcy5fbW91c2Vkb3duJiYodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEsdGhpcy50YWJMaW5rRWxlbWVudHNbdGhpcy5hY3RpdmVUYWJQb3NpdGlvbl09PT1hLnJlbGF0ZWRUYXJn''@;'; put 'put ''ZXQmJih0aGlzLmtleUZvY3VzLmN1cnJlbnQ9dGhpcy5hY3RpdmVUYWJQb3NpdGlvbikpfWNsb3NlT25Fc2NhcGVLZXkoKXt0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLm92ZXJmbG93UG9zaXRpb24tMSl9Y2xvc2VPbk91dHNpZGVDbGljayhhLGYpe2EudGFyZ2V0PT09Znx8Zi5jb250YWlu''@;'; put 'put ''cyhhLnRhcmdldCl8fCF0aGlzLl90YWJPdmVyZmxvd0VsLmNvbnRhaW5zKGEudGFyZ2V0KSYmdGhpcy5pc0N1cnJlbnRJbk92ZXJmbG93JiZ0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLm92ZXJmbG93UG9zaXRpb24tMSl9bGlzdGVuRm9yVGFiTGlua0NoYW5nZXMoKXtyZXR1cm4gdGhpcy50''@;'; put 'put ''YWJzLmNoYW5nZXMucGlwZSh0NCh0aGlzLnRhYnMubWFwKGE9PmEudGFiTGluaykpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl90YWJMaW5rRGlyZWN0aXZlcz10aGlzLnRhYnMubWFwKGE9PmEudGFiTGluayksdGhpcy50YWJMaW5rRWxlbWVudHM9dGhpcy5fdGFiTGlua0RpcmVjdGl2ZXMubWFw''@;'; put 'put ''KGE9PmEuZWwubmF0aXZlRWxlbWVudCl9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoWWcpLHJ0KFFhKSxydChDUykscnQoZFopLHJ0KFRhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10YWJzIl1dLGNvbnRl''@;'; put 'put ''bnRRdWVyaWVzOmZ1bmN0aW9uKGEsZixkKXtpZigxJmEmJkZvKGQsZjUsNCksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi50YWJzPWgpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiYoTm8oczcsNyksTm8oaFosNSxWaSksTm8oVVBlLDcsZmEpKSwyJmEpe2xldCBkO3VpKGQ9''@;'; put 'put ''Y2koKSkmJihmLmtleUZvY3VzPWQuZmlyc3QpLHVpKGQ9Y2koKSkmJihmLnRhYk92ZXJmbG93RWw9ZC5maXJzdCksdWkoZD1jaSgpKSYmKGYudGFiQ29udGVudFZpZXdDb250YWluZXI9ZC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezImYSYmZ3IoInRh''@;'; put 'put ''YnMtdmVydGljYWwiLGYuaXNWZXJ0aWNhbCl9LGlucHV0czp7bGF5b3V0OlsiY2xyTGF5b3V0IiwibGF5b3V0Il19LGZlYXR1cmVzOltyaShbWWcsUWEsQ1Msak5lXSldLGRlY2xzOjUsdmFyczozLGNvbnN0czpbWyJyb2xlIiwidGFibGlzdCIsImNsckRpcmVjdGlvbiIsImJvdGgiLDEsIm5h''@;'; put 'put ''diIsMywiY2xyS2V5Rm9jdXMiLCJjbHJGb2N1c0NoYW5nZSIsImZvY3Vzb3V0Il0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFs0LCJuZ0lmIl0sWyJ0YWJDb250ZW50Vmlld0NvbnRhaW5lciIsIiJdLFsicm9sZSIsInByZXNlbnRhdGlvbiIsMSwibmF2LWl0ZW0iXSxbMywibmdUZW1wbGF0ZU91''@;'; put 'put ''dGxldCJdLFsicm9sZSIsInByZXNlbnRhdGlvbiIsMSwidGFicy1vdmVyZmxvdyIsImJvdHRvbS1yaWdodCJdLFsicm9sZSIsImFwcGxpY2F0aW9uIiwxLCJuYXYtaXRlbSJdLFsidHlwZSIsImJ1dHRvbiIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiYnRuIiwiYnRuLWxpbmsiLCJuYXYtbGlu''@;'; put 'put ''ayIsImRyb3Bkb3duLXRvZ2dsZSIsMywibW91c2Vkb3duIiwiZm9jdXMiLCJjbGljayJdLFsidGFiT3ZlcmZsb3dUcmlnZ2VyIiwiIl0sWyJzaGFwZSIsImVsbGlwc2lzLWhvcml6b250YWwiLCJzdGF0dXMiLCJ0b2dnbGVTZXJ2aWNlLm9wZW4gPyAnaW5mbycgOiBudWxsIl0sWzMsImtleWRv''@;'; put 'put ''d24uZXNjYXBlIiwiY2xpY2siLCJmb2N1c291dCIsNCwibmdJZiJdLFszLCJrZXlkb3duLmVzY2FwZSIsImNsaWNrIiwiZm9jdXNvdXQiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsInVsIiwwKSxFdCgiY2xyRm9j''@;'; put 'put ''dXNDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnRvZ2dsZU92ZXJmbG93T25Qb3NpdGlvbihoKX0pKCJmb2N1c291dCIsZnVuY3Rpb24oaCl7cmV0dXJuIGYucmVzZXRLZXlGb2N1c0N1cnJlbnRUb0FjdGl2ZShoKX0pLHR0KDEsWVBlLDIsMSwibmctY29udGFpbmVyIiwxKSx0dCgyLEtQ''@;'; put 'put ''ZSw3LDEwLCJuZy1jb250YWluZXIiLDIpLENlKCksZXMoMyxudWxsLDMpKSwyJmEmJihSZSgiY2xyS2V5Rm9jdXMiLGYudGFiTGlua0VsZW1lbnRzKSxTZSgxKSxSZSgibmdGb3JPZiIsZi50YWJMaW5rRGlyZWN0aXZlcyksU2UoMSksUmUoIm5nSWYiLGYudGFic1NlcnZpY2Uub3ZlcmZsb3dU''@;'; put 'put ''YWJzLmxlbmd0aD4wKSl9LGRlcGVuZGVuY2llczpbczcsaFosUmEsJGkseWQsSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFVOZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMocW9lKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLEFmLGxsLEhOZSxPVV0sQWZdfSksbH0pKCkscFo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubmF2R3JvdXBDb3VudD0wfXJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlzLm5h''@;'; put 'put ''dkdyb3VwQ291bnQrK311bnJlZ2lzdGVyTmF2R3JvdXAoKXt0aGlzLm5hdkdyb3VwQ291bnQtLX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksbVo9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ljb25zPTB9Z2V0IGhhc0ljb25zKCl7cmV0dXJuIHRoaXMuX2ljb25zPjB9cmVnaXN0ZXJJY29uKCl7dGhpcy5faWNvbnMrK311bnJlZ2lzdGVySWNvbigpe3RoaXMuX2ljb25zLS19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGdaPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9hbmltYXRlT25Db2xsYXBzZWQ9bmV3IHdlLHRoaXMuX2NvbGxhcHNlZENoYW5nZWQ9bmV3IHdl''@;'; put 'put ''LHRoaXMuX2NvbGxhcHNlZD0hMSx0aGlzLl9jb2xsYXBzaWJsZT0hMX1nZXQgYW5pbWF0ZU9uQ29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGVPbkNvbGxhcHNlZC5hc09ic2VydmFibGUoKX1nZXQgY29sbGFwc2VkQ2hhbmdlZCgpe3JldHVybiB0aGlzLl9jb2xsYXBzZWRDaGFuZ2Vk''@;'; put 'put ''LmFzT2JzZXJ2YWJsZSgpfWdldCBjb2xsYXBzZWQoKXtyZXR1cm4gdGhpcy5fY29sbGFwc2VkfXNldCBjb2xsYXBzZWQoYSl7YT0hIWEsdGhpcy5jb2xsYXBzaWJsZSYmdGhpcy5fY29sbGFwc2VkIT09YSYmdGhpcy51cGRhdGVDb2xsYXBzZUJlaGF2aW9yKGEpfWdldCBjb2xsYXBzaWJsZSgp''@;'; put 'put ''e3JldHVybiB0aGlzLl9jb2xsYXBzaWJsZX1zZXQgY29sbGFwc2libGUoYSl7dGhpcy5fY29sbGFwc2libGUhPT0oYT0hIWEpJiYoIWEmJnRoaXMuY29sbGFwc2VkJiZ0aGlzLnVwZGF0ZUNvbGxhcHNlQmVoYXZpb3IoITEpLHRoaXMuX2NvbGxhcHNpYmxlPWEpfXVwZGF0ZUNvbGxhcHNlQmVo''@;'; put 'put ''YXZpb3IoYSl7dGhpcy5fYW5pbWF0ZU9uQ29sbGFwc2VkLm5leHQoYSksdGhpcy5fY29sbGFwc2VkPWEsdGhpcy5fY29sbGFwc2VkQ2hhbmdlZC5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjps''@;'; put 'put ''LGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxjdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLl9uYXZTZXJ2aWNlPWEsdGhpcy5fbmF2SWNvblNlcnZpY2U9Zix0aGlzLl9uYXZHcm91cFJlZ2lzdHJhdGlvblNlcnZpY2U9ZCx0aGlzLmNvbW1vblN0cmluZ3M9''@;'; put 'put ''aCx0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkPW5ldyB4cighMCksdGhpcy5fc3ViPXRoaXMuX25hdlNlcnZpY2UuY29sbGFwc2VkQ2hhbmdlZC5zdWJzY3JpYmUobT0+e3RoaXMuX2NvbGxhcHNlZENoYW5nZWQuZW1pdChtKX0pfWdldCBjb2xsYXBzaWJsZSgpe3JldHVybiB0aGlzLl9uYXZTZXJ2''@;'; put 'put ''aWNlLmNvbGxhcHNpYmxlfXNldCBjb2xsYXBzaWJsZShhKXt0aGlzLl9uYXZTZXJ2aWNlLmNvbGxhcHNpYmxlPWF9Z2V0IGNvbGxhcHNlZCgpe3JldHVybiB0aGlzLl9uYXZTZXJ2aWNlLmNvbGxhcHNlZH1zZXQgY29sbGFwc2VkKGEpe3RoaXMuX25hdlNlcnZpY2UuY29sbGFwc2VkPWF9Z2V0''@;'; put 'put ''IGhhc05hdkdyb3Vwcygpe3JldHVybiB0aGlzLl9uYXZHcm91cFJlZ2lzdHJhdGlvblNlcnZpY2UubmF2R3JvdXBDb3VudD4wfWdldCBoYXNJY29ucygpe3JldHVybiB0aGlzLl9uYXZJY29uU2VydmljZS5oYXNJY29uc31nZXQgYXJpYUV4cGFuZGVkKCl7cmV0dXJuIHRoaXMuY29sbGFwc2li''@;'; put 'put ''bGU/dGhpcy5jb2xsYXBzZWQ/ImZhbHNlIjoidHJ1ZSI6bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuX3N1Yi51bnN1YnNjcmliZSgpfXRvZ2dsZUJ5QnV0dG9uKCl7dGhpcy5jb2xsYXBzZWQ9IXRoaXMuY29sbGFwc2VkfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5l''@;'; put 'put ''dyhhfHxsKShydChnWikscnQobVopLHJ0KHBaKSxydChUYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdmVydGljYWwtbmF2Il1dLGhvc3RBdHRyczpbMSwiY2xyLXZlcnRpY2FsLW5hdiJdLGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7''@;'; put 'put ''MiZhJiZncigiaXMtY29sbGFwc2VkIixmLmNvbGxhcHNlZCkoImhhcy1uYXYtZ3JvdXBzIixmLmhhc05hdkdyb3VwcykoImhhcy1pY29ucyIsZi5oYXNJY29ucyl9LGlucHV0czp7Y29sbGFwc2libGU6WyJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNpYmxlIiwiY29sbGFwc2libGUiXSxjb2xsYXBz''@;'; put 'put ''ZWQ6WyJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNlZCIsImNvbGxhcHNlZCJdfSxvdXRwdXRzOntfY29sbGFwc2VkQ2hhbmdlZDoiY2xyVmVydGljYWxOYXZDb2xsYXBzZWRDaGFuZ2UifSxmZWF0dXJlczpbcmkoW2daLG1aLHBaXSldLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczo0LHZhcnM6''@;'; put 'put ''Mixjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibmF2LXRyaWdnZXIiLDMsIm9uLWNvbGxhcHNlIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibmF2LWNvbnRlbnQiXSxbImNsYXNzIiwibmF2LWJ0biIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsInRhYmluZGV4IiwiLTEiLDMsImNsaWNr''@;'; put 'put ''Iiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJuYXYtdHJpZ2dlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUtZG91YmxlIiwxLCJuYXYtdHJpZ2dlci1pY29uIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0YWJpbmRleCIsIi0xIiwxLCJuYXYtYnRuIiwzLCJjbGljayJdXSx0''@;'; put 'put ''ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKCksdHQoMCxxUGUsMiw2LCJidXR0b24iLDApLHllKDEsImRpdiIsMSksRHIoMiksdHQoMyxYUGUsMSwxLCJidXR0b24iLDIpLENlKCkpLDImYSYmKFJlKCJuZ0lmIixmLmNvbGxhcHNpYmxlKSxTZSgzKSxSZSgibmdJZiIsZi5jb2xsYXBz''@;'; put 'put ''aWJsZSYmZi5jb2xsYXBzZWQpKX0sZGVwZW5kZW5jaWVzOlskaSxKYV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksdlo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2V4cGFuZENoYW5nZT1uZXcgd2V9Z2V0IGV4cGFuZENoYW5nZSgpe3JldHVybiB0aGlzLl9leHBhbmRDaGFu''@;'; put 'put ''Z2UuYXNPYnNlcnZhYmxlKCl9ZXhwYW5kKCl7dGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQoITApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxmdWU9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5kZXN0cm95JD1uZXcgd2UsZCYmd2QoYS5uYXRpdmVFbGVtZW50LCJjbGljayIpLnBpcGUoQWgodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e2QuZXhwYW5kKCksZi5tYXJrRm9yQ2hlY2soKX0pfW5nT25EZXN0cm95KCl7''@;'; put 'put ''dGhpcy5kZXN0cm95JC5uZXh0KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChVbCkscnQodlosOCkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiXV0saG9zdEF0''@;'; put 'put ''dHJzOlsxLCJuYXYtbGluayJdLGF0dHJzOmVGZSxuZ0NvbnRlbnRTZWxlY3RvcnM6bkZlLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWzEsIm5hdi10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkodEZlKSxEcigwKSx5ZSgxLCJzcGFuIiwwKSxEcigyLDEpLENlKCkpfSxl''@;'; put 'put ''bmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxHTmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKFp2LEpvZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGko''@;'; put 'put ''e2ltcG9ydHM6W1tibyxsbCxBZixXZ10sQWYsbGwsV2ddfSksbH0pKCksJE5lPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W0VOZSxG''@;'; put 'put ''TmUsVU5lLEdOZV19KSxsfSkoKSxkdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9kb2N1bWVudD1hfXN0b3BTY3JvbGxpbmcoKXt0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIm5vLXNjcm9sbGluZyIpfXJlc3VtZVNjcm9sbGluZygpe3RoaXMuX2RvY3Vt''@;'; put 'put ''ZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJuby1zY3JvbGxpbmciKSYmdGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJuby1zY3JvbGxpbmciKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoRmEpKX0sbC5cdTAyNzVw''@;'; put 'put ''cm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxNYz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5fc2Nyb2xsaW5nU2VydmljZT1hLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMubW9kYWxJZD1IdSgpLHRoaXMuX29wZW49ITEsdGhpcy5fb3Bl''@;'; put 'put ''bkNoYW5nZWQ9bmV3IHhyKCExKSx0aGlzLmNsb3NhYmxlPSEwLHRoaXMuY2xvc2VCdXR0b25BcmlhTGFiZWw9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UsdGhpcy5zdGF0aWNCYWNrZHJvcD0hMCx0aGlzLnNraXBBbmltYXRpb249ImZhbHNlIix0aGlzLmJ5cGFzc1Njcm9sbFNlcnZp''@;'; put 'put ''Y2U9ITEsdGhpcy5zdG9wQ2xvc2U9ITEsdGhpcy5hbHRDbG9zZT1uZXcgeHIoITEpLHRoaXMubGFiZWxsZWRCeT10aGlzLm1vZGFsSWR9bmdPbkNoYW5nZXMoYSl7IXRoaXMuYnlwYXNzU2Nyb2xsU2VydmljZSYmYSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIl9v''@;'; put 'put ''cGVuIikmJihhLl9vcGVuLmN1cnJlbnRWYWx1ZT90aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnN0b3BTY3JvbGxpbmcoKTp0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnJlc3VtZVNjcm9sbGluZygpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Njcm9sbGluZ1NlcnZpY2UucmVzdW1lU2Nyb2xsaW5nKCl9''@;'; put 'put ''b3Blbigpe3RoaXMuX29wZW58fCh0aGlzLl9vcGVuPSEwLHRoaXMuX29wZW5DaGFuZ2VkLmVtaXQoITApKX1jbG9zZSgpe3RoaXMuc3RvcENsb3NlP3RoaXMuYWx0Q2xvc2UuZW1pdCghMSk6IXRoaXMuY2xvc2FibGV8fCF0aGlzLl9vcGVufHwodGhpcy5fb3Blbj0hMSx0aGlzLmZvY3VzVHJh''@;'; put 'put ''cC5zZXRQcmV2aW91c0ZvY3VzKCkpfWZhZGVEb25lKGEpeyJ2b2lkIj09PWEudG9TdGF0ZSYmdGhpcy5fb3BlbkNoYW5nZWQuZW1pdCghMSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGR1ZSkscnQoVGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5''@;'; put 'put ''cGU6bCxzZWxlY3RvcnM6W1siY2xyLW1vZGFsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oZzQsNSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5mb2N1c1RyYXA9ZC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQo''@;'; put 'put ''ImtleXVwLmVzY2FwZSIsZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9zZSgpfSwwLHN3KSwyJmEmJmdyKCJvcGVuIixmLl9vcGVuKX0saW5wdXRzOntfb3BlbjpbImNsck1vZGFsT3BlbiIsIl9vcGVuIl0sY2xvc2FibGU6WyJjbHJNb2RhbENsb3NhYmxlIiwiY2xvc2FibGUiXSxjbG9zZUJ1dHRv''@;'; put 'put ''bkFyaWFMYWJlbDpbImNsck1vZGFsQ2xvc2VCdXR0b25BcmlhTGFiZWwiLCJjbG9zZUJ1dHRvbkFyaWFMYWJlbCJdLHNpemU6WyJjbHJNb2RhbFNpemUiLCJzaXplIl0sc3RhdGljQmFja2Ryb3A6WyJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwic3RhdGljQmFja2Ryb3AiXSxza2lwQW5pbWF0''@;'; put 'put ''aW9uOlsiY2xyTW9kYWxTa2lwQW5pbWF0aW9uIiwic2tpcEFuaW1hdGlvbiJdLGJ5cGFzc1Njcm9sbFNlcnZpY2U6WyJjbHJNb2RhbE92ZXJyaWRlU2Nyb2xsU2VydmljZSIsImJ5cGFzc1Njcm9sbFNlcnZpY2UiXSxzdG9wQ2xvc2U6WyJjbHJNb2RhbFByZXZlbnRDbG9zZSIsInN0b3BDbG9z''@;'; put 'put ''ZSJdLGxhYmVsbGVkQnk6WyJjbHJNb2RhbExhYmVsbGVkQnlJZCIsImxhYmVsbGVkQnkiXX0sb3V0cHV0czp7X29wZW5DaGFuZ2VkOiJjbHJNb2RhbE9wZW5DaGFuZ2UiLGFsdENsb3NlOiJjbHJNb2RhbEFsdGVybmF0ZUNsb3NlIn0sZmVhdHVyZXM6W3JpKFtdLFtkdWVdKSxibF0sbmdDb250''@;'; put 'put ''ZW50U2VsZWN0b3JzOmFGZSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1siY2xyRm9jdXNUcmFwIiwiIiwiY2xhc3MiLCJtb2RhbCIsNCwibmdJZiJdLFsiY2xyRm9jdXNUcmFwIiwiIiwxLCJtb2RhbCJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtbW9kYWwiLCJ0cnVlIiwxLCJtb2RhbC1kaWFs''@;'; put 'put ''b2ciXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwibW9kYWwtY29udGVudC13cmFwcGVyIl0sWzEsIm1vZGFsLWNvbnRlbnQiXSxbMSwibW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIl0sWyJjbHJGb2N1c09uVmlld0luaXQiLCIiLDEsIm1vZGFsLXRpdGxlLXdyYXBwZXIiLDMsImlkIl0sWyJ0eXBl''@;'; put 'put ''IiwiYnV0dG9uIiwiY2xhc3MiLCJjbG9zZSIsMywiY2xpY2siLDQsIm5nSWYiXSxbMSwibW9kYWwtYm9keS13cmFwcGVyIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWJhY2tkcm9wIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiLDMsImNsaWNrIl0sWyJz''@;'; put 'put ''aGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKFRpKG9GZSksdHQoMCxpRmUsMTcsMTQsImRpdiIsMCkpLDImYSYmUmUoIm5nSWYiLGYuX29wZW4pfSxkZXBlbmRlbmNpZXM6WyRpLGc0LGtVLEphXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rp''@;'; put 'put ''c3BsYXk6bm9uZX0ub3Blbltfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmV9Il0sZGF0YTp7YW5pbWF0aW9uOltDMSgiZmFkZURvd24iLFtidSgiKiA9PiBmYWxzZSIsW0NhKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTI1JSkifSksY2MoIjAuMnMgZWFzZS1pbi1v''@;'; put 'put ''dXQiKV0pLGJ1KCJmYWxzZSA9PiAqIixbY2MoIjAuMnMgZWFzZS1pbi1vdXQiLENhKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTI1JSkifSkpXSldKSxDMSgiZmFkZSIsW2J1KCJ2b2lkID0+ICoiLFtDYSh7b3BhY2l0eTowfSksY2MoIjAuMnMgZWFzZS1pbi1vdXQiLENh''@;'; put 'put ''KHtvcGFjaXR5Oi44NX0pKV0pLGJ1KCIqID0+IHZvaWQiLFtjYygiMC4ycyBlYXNlLWluLW91dCIsQ2Eoe29wYWNpdHk6MH0pKV0pXSldfX0pLGx9KSgpLGtjPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMucmVuZGVyZXI9YSx0aGlzLmhvc3Q9Zix0aGlzLnRhYmluZGV4''@;'; put 'put ''PSIwIix0aGlzLnVubGlzdGVuZXJzPVtdLGQucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLm9ic2VydmVyPW5ldyBSZXNpemVPYnNlcnZlcigoKT0+dGhpcy5hZGRPclJlbW92ZVRhYkluZGV4KCkpLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCksdGhp''@;'; put 'put ''cy51bmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJtb3VzZXVwIiwoKT0+e3RoaXMuYWRkT3JSZW1vdmVUYWJJbmRleCgpfSksdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIm1vdXNlZG93biIs''@;'; put 'put ''KCk9Pnt0aGlzLnJlbW92ZVRhYkluZGV4KCl9KSl9KX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy51bmxpc3RlbmVycy5sZW5ndGg7KXRoaXMudW5saXN0ZW5lcnMucG9wKCkoKTt0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLm9ic2VydmVyPW51bGx9YWRkVGFiSW5kZXgoKXt0aGlz''@;'; put 'put ''LnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwidGFiaW5kZXgiLHRoaXMudGFiaW5kZXgpfXJlbW92ZVRhYkluZGV4KCl7dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4Iil9YWRkT3JSZW1v''@;'; put 'put ''dmVUYWJJbmRleCgpe2NvbnN0IGE9dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDthJiZhLmNsaWVudEhlaWdodDxhLnNjcm9sbEhlaWdodD90aGlzLmFkZFRhYkluZGV4KCk6dGhpcy5yZW1vdmVUYWJJbmRleCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIG5ldyhhfHxsKShydChqbykscnQoVmkpLHJ0KFVvKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsOCwibW9kYWwtYm9keSJdXX0pLGx9KSgpLGh1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoTkMpfX1yZXR1cm4gbC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm8sbGwsSkQsV2ddLGxsLFdnXX0pLGx9KSgpO2NvbnN0IEtOZT17InRvcC1sZWZ0Ijp7YW5jaG9yUG9pbnQ6S3IuVE9QX0NFTlRFUixw''@;'; put 'put ''b3BvdmVyUG9pbnQ6S3IuQk9UVE9NX1JJR0hULG9mZnNldFk6LTEwLG9mZnNldFg6MH0sInRvcC1taWRkbGUiOnthbmNob3JQb2ludDpLci5UT1BfQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5CT1RUT01fQ0VOVEVSLG9mZnNldFk6LTEwLG9mZnNldFg6MH0sInRvcC1yaWdodCI6e2FuY2hvclBv''@;'; put 'put ''aW50OktyLlRPUF9DRU5URVIscG9wb3ZlclBvaW50OktyLkJPVFRPTV9MRUZULG9mZnNldFk6LTEwLG9mZnNldFg6MH0sInJpZ2h0LXRvcCI6e2FuY2hvclBvaW50OktyLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6S3IuTEVGVF9CT1RUT00sb2Zmc2V0WToyLG9mZnNldFg6MTR9LCJyaWdo''@;'; put 'put ''dC1taWRkbGUiOnthbmNob3JQb2ludDpLci5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OktyLkxFRlRfQ0VOVEVSLG9mZnNldFk6NixvZmZzZXRYOjE0fSwicmlnaHQtYm90dG9tIjp7YW5jaG9yUG9pbnQ6S3IuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5MRUZUX1RPUCxvZmZzZXRZ''@;'; put 'put ''Oi0xLG9mZnNldFg6MTR9LCJib3R0b20tcmlnaHQiOnthbmNob3JQb2ludDpLci5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5UT1BfTEVGVCxvZmZzZXRZOjksb2Zmc2V0WDotMX0sImJvdHRvbS1taWRkbGUiOnthbmNob3JQb2ludDpLci5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2lu''@;'; put 'put ''dDpLci5UT1BfQ0VOVEVSLG9mZnNldFk6OSxvZmZzZXRYOjEyfSwiYm90dG9tLWxlZnQiOnthbmNob3JQb2ludDpLci5CT1RUT01fQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5UT1BfUklHSFQsb2Zmc2V0WTo5LG9mZnNldFg6MH0sImxlZnQtYm90dG9tIjp7YW5jaG9yUG9pbnQ6S3IuTEVGVF9D''@;'; put 'put ''RU5URVIscG9wb3ZlclBvaW50OktyLlJJR0hUX1RPUCxvZmZzZXRZOjAsb2Zmc2V0WDotMTR9LCJsZWZ0LW1pZGRsZSI6e2FuY2hvclBvaW50OktyLkxFRlRfQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5SSUdIVF9DRU5URVIsb2Zmc2V0WTo0LG9mZnNldFg6LTE0fSwibGVmdC10b3AiOnthbmNo''@;'; put 'put ''b3JQb2ludDpLci5MRUZUX0NFTlRFUixwb3BvdmVyUG9pbnQ6S3IuUklHSFRfQk9UVE9NLG9mZnNldFk6MCxvZmZzZXRYOi0xNH0sZGVmYXVsdDp7YW5jaG9yUG9pbnQ6S3IuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpLci5MRUZUX0NFTlRFUixvZmZzZXRZOjYsb2Zmc2V0WDoxNH19LHFO''@;'; put 'put ''ZT1bInRvcC1sZWZ0IiwidG9wLW1pZGRsZSIsInRvcC1yaWdodCIsInJpZ2h0LXRvcCIsInJpZ2h0LW1pZGRsZSIsInJpZ2h0LWJvdHRvbSIsImJvdHRvbS1yaWdodCIsImJvdHRvbS1taWRkbGUiLCJib3R0b20tbGVmdCIsImxlZnQtYm90dG9tIiwibGVmdC1taWRkbGUiLCJsZWZ0LXRvcCJd''@;'; put 'put ''O2xldCBwdWU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIHVae2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8pe2lmKHN1cGVyKGEsZiksdGhpcy5jb21tb25TdHJpbmdzPWQsdGhpcy5zaWducG9zdElkU2VydmljZT1oLHRoaXMuc2lnbnBvc3RGb2N1c01hbmFnZXI9bSx0aGlzLnBsYXRmb3JtSWQ9''@;'; put 'put ''Xyx0aGlzLnNpZ25wb3N0Q29udGVudElkPUh1KCksIWYpdGhyb3cgbmV3IEVycm9yKCJjbHItc2lnbnBvc3QtY29udGVudCBzaG91bGQgb25seSBiZSB1c2VkIGluc2lkZSBvZiBhIGNsci1zaWducG9zdCIpO3RoaXMucG9zaXRpb249InJpZ2h0LW1pZGRsZSIsdGhpcy5jbG9zZU9uT3V0c2lk''@;'; put 'put ''ZUNsaWNrPSEwLHRoaXMuc2lnbnBvc3RJZFNlcnZpY2Uuc2V0SWQodGhpcy5zaWducG9zdENvbnRlbnRJZCksdGhpcy5kb2N1bWVudD1PfWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn1zZXQgcG9zaXRpb24oYSl7dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVs''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQsdGhpcy5wb3NpdGlvbiksdGhpcy5fcG9zaXRpb249YSYmcU5lLmluZGV4T2YoYSk+LTE/YToicmlnaHQtbWlkZGxlIix0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCx0aGlzLnBvc2l0aW9uKTtjb25zdCBmPUtOZVt0aGlzLnBvc2l0''@;'; put 'put ''aW9uXTt0aGlzLmFuY2hvclBvaW50PWYuYW5jaG9yUG9pbnQsdGhpcy5wb3BvdmVyUG9pbnQ9Zi5wb3BvdmVyUG9pbnQsdGhpcy5wb3BvdmVyT3B0aW9ucy5vZmZzZXRZPWYub2Zmc2V0WSx0aGlzLnBvcG92ZXJPcHRpb25zLm9mZnNldFg9Zi5vZmZzZXRYfWNsb3NlKCl7dGhpcy50b2dnbGVT''@;'; put 'put ''ZXJ2aWNlLm9wZW49ITF9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLEhhKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyh0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyLmZvY3VzVHJp''@;'; put 'put ''Z2dlcigpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChBbCkscnQodTcsOCkscnQoVGEpLHJ0KEtVKSxydCgkVSkscnQocWEpLHJ0KEZhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zaWducG9zdC1jb250ZW50''@;'; put 'put ''Il1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiYobTEoImlkIixmLnNpZ25wb3N0Q29udGVudElkKSxncigic2lnbnBvc3QtY29udGVudCIsITApKX0saW5wdXRzOntwb3NpdGlvbjpbImNsclBvc2l0aW9uIiwicG9zaXRpb24iXX0sZmVhdHVyZXM6W3JvXSxu''@;'; put 'put ''Z0NvbnRlbnRTZWxlY3RvcnM6T28sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwic2lnbnBvc3Qtd3JhcCJdLFsxLCJwb3BvdmVyLXBvaW50ZXIiXSxbMSwic2lnbnBvc3QtY29udGVudC1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLDEsInNpZ25wb3N0LWFjdGlvbiIsImNsb3NlIiwzLCJj''@;'; put 'put ''bGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXSxbMSwic2lnbnBvc3QtY29udGVudC1ib2R5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSx5ZSgwLCJkaXYiLDApLHRuKDEsImRpdiIsMSkseWUoMiwiZGl2IiwyKSgzLCJidXR0b24iLDMpLEV0KCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gZi5jbG9zZSgpfSksdG4oNCwiY2RzLWljb24iLDQpLENlKCkoKSx5ZSg1LCJkaXYiLDUpLERyKDYpLENlKCkoKSksMiZhJiYoU2UoMyksUnIoImFyaWEtbGFiZWwiLGYuY29tbW9uU3RyaW5ncy5rZXlzLnNpZ25wb3N0Q2xvc2UpKCJhcmlhLWNvbnRyb2xzIixmLnNp''@;'; put 'put ''Z25wb3N0Q29udGVudElkKSxTZSgxKSxScigidGl0bGUiLGYuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSl9LGRlcGVuZGVuY2llczpbSmFdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFhOZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoTkMsUW9lKX19cmV0dXJu''@;'; put 'put ''IGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLGxsLFdnXSxBZl19KSxsfSkoKSx5Wj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5faWQ9bmV3IHdlfWdl''@;'; put 'put ''dCBpZCgpe3JldHVybiB0aGlzLl9pZC5hc09ic2VydmFibGUoKX11cGRhdGVJZChhKXt0aGlzLl9pZC5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxs''@;'; put 'put ''fSkoKSxiWj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMudG9nZ2xlU2VydmljZT1hfW9uTW91c2VFbnRlclRyaWdnZXIoKXt0aGlzLm1vdXNlT3ZlclRyaWdnZXI9ITAsdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITB9b25Nb3VzZUxlYXZlVHJpZ2dlcigpe3RoaXMubW91c2VP''@;'; put 'put ''dmVyVHJpZ2dlcj0hMSx0aGlzLmhpZGVJZk1vdXNlT3V0KCl9b25Nb3VzZUVudGVyQ29udGVudCgpe3RoaXMubW91c2VPdmVyQ29udGVudD0hMH1vbk1vdXNlTGVhdmVDb250ZW50KCl7dGhpcy5tb3VzZU92ZXJDb250ZW50PSExLHRoaXMuaGlkZUlmTW91c2VPdXQoKX1oaWRlSWZNb3VzZU91''@;'; put 'put ''dCgpe3NldFRpbWVvdXQoKCk9PnshdGhpcy5tb3VzZU92ZXJUcmlnZ2VyJiYhdGhpcy5tb3VzZU92ZXJDb250ZW50JiYodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEpfSwwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoUWEpKX0sbC5cdTAy''@;'; put 'put ''NzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxNUz0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXRvb2x0aXAiXV0s''@;'; put 'put ''aG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsyJmEmJmdyKCJ0b29sdGlwIiwhMCl9LGZlYXR1cmVzOltyaShbUWEse3Byb3ZpZGU6dTcsdXNlRXhpc3Rpbmc6Vml9LHlaLGJaXSldLG5nQ29udGVudFNlbGVjdG9yczpPbyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5j''@;'; put 'put ''dGlvbihhLGYpezEmYSYmKFRpKCksRHIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTtjb25zdCBRTmU9WyJib3R0b20tbGVmdCIsImJvdHRvbS1yaWdodCIsInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwicmlnaHQiLCJsZWZ0Il0sZVZlPVsieHMiLCJzbSIsIm1kIiwibGciXTtsZXQga1M9''@;'; put 'put ''KCgpPT57Y2xhc3MgbCBleHRlbmRzIHVae2NvbnN0cnVjdG9yKGEsZixkLGgpe2lmKHN1cGVyKGEsZiksdGhpcy50b29sdGlwSWRTZXJ2aWNlPWQsdGhpcy50b29sdGlwTW91c2VTZXJ2aWNlPWgsIWYpdGhyb3cgbmV3IEVycm9yKCJjbHItdG9vbHRpcC1jb250ZW50IHNob3VsZCBvbmx5IGJl''@;'; put 'put ''IHVzZWQgaW5zaWRlIG9mIGEgY2xyLXRvb2x0aXAiKTt0aGlzLmlkPUh1KCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZChhKXtjb25zdCBmPWF8fCIiO3RoaXMuX2lkPWYsdGhpcy50b29sdGlwSWRTZXJ2aWNlLnVwZGF0ZUlkKGYpfWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9wb3NpdGlvbn1zZXQgcG9zaXRpb24oYSl7Y29uc3QgZj10aGlzLl9wb3NpdGlvbixkPVFOZS5pbmNsdWRlcyhhKT9hOiJyaWdodCI7c3dpdGNoKHRoaXMuX3Bvc2l0aW9uPWQsdGhpcy51cGRhdGVDc3NDbGFzcyh7b2xkQ2xhc3M6YHRvb2x0aXAtJHtmfWAsbmV3Q2xhc3M6YHRvb2x0aXAt''@;'; put 'put ''JHtkfWB9KSxkKXtjYXNlInRvcC1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1Lci5UT1BfQ0VOVEVSLHRoaXMucG9wb3ZlclBvaW50PUtyLkxFRlRfQk9UVE9NO2JyZWFrO2Nhc2UidG9wLWxlZnQiOnRoaXMuYW5jaG9yUG9pbnQ9S3IuVE9QX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1Lci5S''@;'; put 'put ''SUdIVF9CT1RUT007YnJlYWs7Y2FzZSJib3R0b20tcmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9S3IuQk9UVE9NX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1Lci5MRUZUX1RPUDticmVhaztjYXNlImJvdHRvbS1sZWZ0Ijp0aGlzLmFuY2hvclBvaW50PUtyLkJPVFRPTV9DRU5URVIsdGhpcy5w''@;'; put 'put ''b3BvdmVyUG9pbnQ9S3IuUklHSFRfVE9QO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9S3IuUklHSFRfQ0VOVEVSLHRoaXMucG9wb3ZlclBvaW50PUtyLkxFRlRfVE9QO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy5hbmNob3JQb2ludD1Lci5MRUZUX0NFTlRFUix0aGlzLnBvcG92''@;'; put 'put ''ZXJQb2ludD1Lci5SSUdIVF9UT1A7YnJlYWs7ZGVmYXVsdDohZnVuY3Rpb24gSk5lKGwpe3Rocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIHZhbHVlOiAke2x9YCl9KGQpfX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKGEpe2NvbnN0IGY9dGhpcy5fc2l6ZSxkPWVWZS5p''@;'; put 'put ''bmNsdWRlcyhhKT9hOiJzbSI7dGhpcy5fc2l6ZT1kLHRoaXMudXBkYXRlQ3NzQ2xhc3Moe29sZENsYXNzOmB0b29sdGlwLSR7Zn1gLG5ld0NsYXNzOmB0b29sdGlwLSR7ZH1gfSl9bmdPbkluaXQoKXt0aGlzLnNpemU9dGhpcy5zaXplfHwic20iLHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlv''@;'; put 'put ''bnx8InJpZ2h0In1vbk1vdXNlRW50ZXIoKXt0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2Uub25Nb3VzZUVudGVyQ29udGVudCgpfW9uTW91c2VMZWF2ZSgpe3RoaXMudG9vbHRpcE1vdXNlU2VydmljZS5vbk1vdXNlTGVhdmVDb250ZW50KCl9dXBkYXRlQ3NzQ2xhc3Moe29sZENsYXNzOmEsbmV3''@;'; put 'put ''Q2xhc3M6Zn0pe3RoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGEpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGYpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChBbCks''@;'; put 'put ''cnQodTcsOCkscnQoeVopLHJ0KGJaKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10b29sdGlwLWNvbnRlbnQiXV0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBmLm9u''@;'; put 'put ''TW91c2VFbnRlcigpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25Nb3VzZUxlYXZlKCl9KSwyJmEmJihtMSgiaWQiLGYuaWQpLFJyKCJyb2xlIiwidG9vbHRpcCIpLFdjKCJvcGFjaXR5IiwxKSxncigidG9vbHRpcC1jb250ZW50IiwhMCkpfSxpbnB1dHM6e2lkOiJpZCIs''@;'; put 'put ''cG9zaXRpb246WyJjbHJQb3NpdGlvbiIsInBvc2l0aW9uIl0sc2l6ZTpbImNsclNpemUiLCJzaXplIl19LGZlYXR1cmVzOltyb10sbmdDb250ZW50U2VsZWN0b3JzOk9vLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSxEcigwKSl9LGVuY2Fwc3VsYXRp''@;'; put 'put ''b246Mn0pLGx9KSgpLEVTPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMudG9nZ2xlU2VydmljZT1hLHRoaXMudG9vbHRpcElkU2VydmljZT1mLHRoaXMudG9vbHRpcE1vdXNlU2VydmljZT1kLHRoaXMuc3Vicz1bXSx0aGlzLnN1YnMucHVzaCh0aGlzLnRvb2x0aXBJZFNl''@;'; put 'put ''cnZpY2UuaWQuc3Vic2NyaWJlKGg9PnRoaXMuYXJpYURlc2NyaWJlZEJ5PWgpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vicy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9c2hvd1Rvb2x0aXAoKXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMH1oaWRlVG9vbHRpcCgpe3RoaXMudG9nZ2xl''@;'; put 'put ''U2VydmljZS5vcGVuPSExfW9uTW91c2VFbnRlcigpe3RoaXMudG9vbHRpcE1vdXNlU2VydmljZS5vbk1vdXNlRW50ZXJUcmlnZ2VyKCl9b25Nb3VzZUxlYXZlKCl7dGhpcy50b29sdGlwTW91c2VTZXJ2aWNlLm9uTW91c2VMZWF2ZVRyaWdnZXIoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUWEpLHJ0KHlaKSxydChiWikpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJUb29sdGlwVHJpZ2dlciIsIiJdXSxob3N0QXR0cnM6WyJ0YWJpbmRleCIsIjAiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5j''@;'; put 'put ''dGlvbihhLGYpezEmYSYmRXQoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBmLnNob3dUb29sdGlwKCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZi5oaWRlVG9vbHRpcCgpfSkoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25Nb3VzZUVudGVyKCl9KSgibW91c2VsZWF2''@;'; put 'put ''ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vbk1vdXNlTGVhdmUoKX0pLDImYSYmKFJyKCJhcmlhLWRlc2NyaWJlZGJ5IixmLmFyaWFEZXNjcmliZWRCeSkoInJvbGUiLCJidXR0b24iKSxncigidG9vbHRpcC10cmlnZ2VyIiwhMCkpfX0pLGx9KSgpLHRWZT0oKCk9PntjbGFzcyBse31yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dLEFmLGxsXX0pLGx9KSgpLG5WZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0''@;'; put 'put ''dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltjWixYTmUsdFZlXX0pLGx9KSgpLHJWZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9''@;'; put 'put ''RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltbYm9dXX0pLGx9KSgpLG9WZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7amEuYWRkSWNvbnMoclRlLGlUZSxlYWUsb1RlKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwu''@;'; put 'put ''XHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbW2JvLGxsLGZTXSxsbCxmU119KSxsfSkoKSxjVmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe2phLmFkZEljb25zKGVhZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3''@;'; put 'put ''KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W1tibyxodWUsaXVlXV19KSxsfSkoKSxJZD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5''@;'; put 'put ''cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltrTmUsZ05lLGxsLGh1ZSxDVSxBZixKRCxXZyxYRmUsbkhlLERzZSwkTmUsblZlLGNWZSxwc2UsVkZlLGZTLHJWZSxsUyxvVmVdfSksbH0pKCk7ZnVuY3Rpb24gZlZlKGwsYyl7MSZsJiYoeWUoMCwic3BhbiIsMTApLFllKDEsImxvYWRp''@;'; put 'put ''bmciKSxDZSgpKX1mdW5jdGlvbiBkVmUobCxjKXsxJmwmJih5ZSgwLCJzcGFuIiwxMSksWWUoMSwibG9hZGVkIiksQ2UoKSl9ZnVuY3Rpb24gaFZlKGwsYyl7MSZsJiYoeWUoMCwic3BhbiIsMTIpLFllKDEsImZhaWxlZCIpLENlKCkpfWZ1bmN0aW9uIHBWZShsLGMpe2lmKDEmbCYmKHllKDAs''@;'; put 'put ''InAiKSgxLCJjb2RlIiksWWUoMiksQ2UoKSxZZSgzLCIgXHhhMCAiKSx0dCg0LGZWZSwyLDAsInNwYW4iLDcpLHR0KDUsZFZlLDIsMCwic3BhbiIsOCksdHQoNixoVmUsMiwwLCJzcGFuIiw5KSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMiksYXIoYS5wcm9ncmFtKSxTZSgy''@;'; put 'put ''KSxSZSgibmdJZiIsYS5ydW5uaW5nKSxTZSgxKSxSZSgibmdJZiIsIWEucnVubmluZyYmYS5zdWNjZXNzZnVsKSxTZSgxKSxSZSgibmdJZiIsIWEucnVubmluZyYmIWEuc3VjY2Vzc2Z1bCl9fWZ1bmN0aW9uIG1WZShsLGMpe2lmKDEmbCYmKHllKDAsImNsci1zaWducG9zdC1jb250ZW50Iiw1''@;'; put 'put ''KSx0dCgxLHBWZSw3LDQsInAiLDYpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1JlKCJjbHJQb3NpdGlvbiIsImJvdHRvbS1taWRkbGUiKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5yZXF1ZXN0cyl9fWxldCBnVmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubG9hZGluZz0hMSx0''@;'; put 'put ''aGlzLnJlcXVlc3RzPVtdLHRoaXMuX2xvYWRpbmdTdWI9bmV3IHRlfW5nT25Jbml0KCl7fW5nT25EZXN0cm95KCl7dGhpcy5fbG9hZGluZ1N1Yi51bnN1YnNjcmliZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5''@;'; put 'put ''cGU6bCxzZWxlY3RvcnM6W1siYXBwLWxvYWRpbmctaW5kaWNhdG9yIl1dLGRlY2xzOjYsdmFyczo2LGNvbnN0czpbWzEsImxvYWRpbmctaW5kaWNhdG9yIl0sWyJjbHJTaWducG9zdFRyaWdnZXIiLCIiLDEsInNwaW5uZXIiLCJzcGlubmVyLXNtIiwic3Bpbm5lci1pbnZlcnNlIl0sWyJjbHJT''@;'; put 'put ''aWducG9zdFRyaWdnZXIiLCIiLCJzaGFwZSIsImNoZWNrIiwic2l6ZSIsIjIwIiwxLCJpcy1pbmZvIl0sWyJjbHJTaWducG9zdFRyaWdnZXIiLCIiLCJzaGFwZSIsImVycm9yIiwic2l6ZSIsIjI0IiwxLCJpcy1lcnJvciJdLFszLCJjbHJQb3NpdGlvbiIsNCwiY2xySWZPcGVuIl0sWzMsImNs''@;'; put 'put ''clBvc2l0aW9uIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJydW5uaW5nIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInN1Y2Nlc3MiLDQsIm5nSWYiXSxbImNsYXNzIiwiZmFpbCIsNCwibmdJZiJdLFsxLCJydW5uaW5nIl0sWzEsInN1Y2Nlc3MiXSxbMSwiZmFpbCJdXSx0ZW1wbGF0''@;'; put 'put ''ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsImRpdiIsMCkoMSwiY2xyLXNpZ25wb3N0IiksdG4oMiwic3BhbiIsMSkoMywiY2xyLWljb24iLDIpKDQsImNsci1pY29uIiwzKSx0dCg1LG1WZSwyLDIsImNsci1zaWducG9zdC1jb250ZW50Iiw0KSxDZSgpKCkpLDImYSYmKFNlKDIpLFdjKCJk''@;'; put 'put ''aXNwbGF5IixmLmxvYWRpbmc/ImlubGluZS1ibG9jayI6Im5vbmUiKSxTZSgxKSxXYygiZGlzcGxheSIsIWYubG9hZGluZyYmZi5yZXF1ZXN0cy5sZW5ndGg+MCYmZi5yZXF1ZXN0c1swXS5zdWNjZXNzZnVsPyJpbmxpbmUtYmxvY2siOiJub25lIiksU2UoMSksV2MoImRpc3BsYXkiLCFmLmxv''@;'; put 'put ''YWRpbmcmJmYucmVxdWVzdHMubGVuZ3RoPjAmJiFmLnJlcXVlc3RzWzBdLnN1Y2Nlc3NmdWw/ImlubGluZS1ibG9jayI6Im5vbmUiKSl9LGRlcGVuZGVuY2llczpbUmEsJGksUmwseGQscVUscHVlLGZJXSxzdHlsZXM6WyIubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde2xp''@;'; put 'put ''bmUtaGVpZ2h0OjIuNXJlbTtoZWlnaHQ6Mi41cmVtO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmxvYWRpbmctaW5k''@;'; put 'put ''aWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiM1NjU2NTY7Y3Vyc29yOmF1dG99LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1j''@;'; put 'put ''b250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250''@;'; put 'put ''ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''bWFyZ2luLWxlZnQ6MTBweH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLnJ1bm5pbmdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlOWJm''@;'; put 'put ''MDR9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjBiNTE1fS5sb2FkaW5nLWlu''@;'; put 'put ''ZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBvc3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW4uZmFpbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2M5MjEwMH0iXX0pLGx9KSgpLHZWZT0oKCk9PntjbGFzcyBs''@;'; put 'put ''e2NvbnN0cnVjdG9yKGEsZil7dGhpcy5zYXNTZXJ2aWNlPWEsdGhpcy5sb2dnZXJTZXJ2aWNlPWYsdGhpcy5fc3Vic2NyaXB0aW9uPW5ldyB0ZSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5hbGVydENsb3NlZD0hMCx0aGlzLmRhdGE9e3VzZXI6bnVsbCxwYXNzOm51bGx9fW5nT25Jbml0KCl7IlJl''@;'; put 'put ''ZGlyZWN0ZWQiIT09dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkubG9naW5NZWNoYW5pc20mJih0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLnN1YnNjcmliZShmPT57dGhpcy5pc0FjdGl2ZT1mO2xldCBkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0''@;'; put 'put ''b3IoImJvZHkiKTtkJiYoZj9kLmNsYXNzTGlzdC5hZGQoInNob3VsZC1sb2dpbiIpOmQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdWxkLWxvZ2luIikpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9c3VibWl0KCl7dGhpcy5sb2FkaW5nfHwodGhpcy5s''@;'; put 'put ''b2FkaW5nPSEwLHRoaXMuZGF0YS51c2VyJiZ0aGlzLmRhdGEucGFzcyYmdGhpcy5zYXNTZXJ2aWNlLmxvZ2luKHRoaXMuZGF0YS51c2VyLHRoaXMuZGF0YS5wYXNzKS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsYXx8KHRoaXMuZXJyb3JNc2c9IlVzZXJuYW1lIG9yIHBhc3N3b3JkIGludmFs''@;'; put 'put ''aWQiLHRoaXMuYWxlcnRDbG9zZWQ9ITEpfSxhPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyhhKSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5lcnJvck1zZz1hLHRoaXMuYWxlcnRDbG9zZWQ9ITF9KSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHBs''@;'; put 'put ''KSxydCh5MSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbG9naW4iXV0sZGVjbHM6MjAsdmFyczo5LGNvbnN0czpbWzEsImxvZ2luLXNpZGViYXItd3JhcHBlciJdLFsxLCJsb2dpbi1zaWRlYmFyIiwic2lkZUJhclByb3BzIl0sWyJzcmMiLCIvU0FTU3RvcmVk''@;'; put 'put ''UHJvY2Vzcy8/X1BST0dSQU09cFpLZDZGOTVqRUN2UlFsTjBMQ2ZkQT09L3dlYjkvaW1hZ2VzL2RhdGFjb250cm9sbGVyLXN2ZyIsImFsdCIsIiIsMSwibG9naW4tbG9nbyJdLFsxLCJsb2dpbiIsMywibmdTdWJtaXQiXSxbMSwidGl0bGUiXSxbMSwid2VsY29tZSJdLFsxLCJoaW50Il0sWzEs''@;'; put 'put ''ImxvZ2luLWdyb3VwIl0sWyJjbHJJbnB1dCIsIiIsIm5hbWUiLCJ1c2VyIiwidHlwZSIsInRleHQiLCJwbGFjZWhvbGRlciIsIlVzZXJuYW1lIiwxLCJ1c2VybmFtZSIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNscklucHV0IiwiIiwibmFtZSIsInBhc3MiLCJ0eXBlIiwicGFz''@;'; put 'put ''c3dvcmQiLCJwbGFjZWhvbGRlciIsIlBhc3N3b3JkIiwxLCJwYXNzd29yZCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJBbGVydENsb3NlZENoYW5nZSJdLFsiY2xyLWFsZXJ0LWl0ZW0iLCIiLDEsImFsZXJ0LWl0''@;'; put 'put ''ZW0iXSxbMSwiYWxlcnQtdGV4dCJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJkaXNhYmxlZCJdLFsxLCJvdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSgxLCJkaXYiLDEp''@;'; put 'put ''LHRuKDIsImltZyIsMikseWUoMywiZm9ybSIsMyksRXQoIm5nU3VibWl0IixmdW5jdGlvbigpe3JldHVybiBmLnN1Ym1pdCgpfSkseWUoNCwibGFiZWwiLDQpKDUsImgzIiw1KSxZZSg2LCJXZWxjb21lIHRvIiksQ2UoKSxZZSg3LCIgRGF0YSBDb250cm9sbGVyICIpLHllKDgsImg1Iiw2KSxZ''@;'; put 'put ''ZSg5LCJDYXB0dXJlLCBSZXZpZXcsIGFuZCBBcHByb3ZlIiksQ2UoKSgpLHllKDEwLCJkaXYiLDcpKDExLCJpbnB1dCIsOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmRhdGEudXNlcj1ofSksQ2UoKSx5ZSgxMiwiaW5wdXQiLDkpLEV0KCJuZ01vZGVsQ2hhbmdl''@;'; put 'put ''IixmdW5jdGlvbihoKXtyZXR1cm4gZi5kYXRhLnBhc3M9aH0pLENlKCkseWUoMTMsImNsci1hbGVydCIsMTApLEV0KCJjbHJBbGVydENsb3NlZENoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYuYWxlcnRDbG9zZWQ9aH0pLHllKDE0LCJkaXYiLDExKSgxNSwic3BhbiIsMTIpLFllKDE2KSxD''@;'; put 'put ''ZSgpKCkoKSx5ZSgxNywiYnV0dG9uIiwxMyksWWUoMTgsIiBMb2cgaW4gIiksQ2UoKSgpKCkoKSx0bigxOSwiZGl2IiwxNCksQ2UoKSksMiZhJiYoZ3IoImFjdGl2ZSIsZi5pc0FjdGl2ZSksU2UoMTEpLFJlKCJuZ01vZGVsIixmLmRhdGEudXNlciksU2UoMSksUmUoIm5nTW9kZWwiLGYuZGF0''@;'; put 'put ''YS5wYXNzKSxTZSgxKSxSZSgiY2xyQWxlcnRUeXBlIiwiYWxlcnQtZGFuZ2VyIikoImNsckFsZXJ0Q2xvc2VkIixmLmFsZXJ0Q2xvc2VkKSxTZSgzKSxhcihmLmVycm9yTXNnKSxTZSgxKSxSZSgiY2xyTG9hZGluZyIsZi5sb2FkaW5nKSgiZGlzYWJsZWQiLGYubG9hZGluZykpfSxkZXBlbmRl''@;'; put 'put ''bmNpZXM6W3A0LGlzLFdhLGg0LHphLENkLF9TLHdTLEpjLEloLGVsLFJmXSxzdHlsZXM6WyIuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMzMTQzNTEhaW1wb3J0YW50O2NvbG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBo''@;'; put 'put ''Mltfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlMGUwZTB9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e2JvcmRlci1jb2xvcjp3aGVhdCFpbXBvcnRhbnR9LnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTBlMGUwfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7''@;'; put 'put ''cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDoxMDAwMH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSA+ICpbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOmF1dG99LmxvZ2luLXNpZGViYXItd3Jh''@;'; put 'put ''cHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDAwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7cGFkZGluZzo0''@;'; put 'put ''MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTQwMHB4KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3otaW5kZXg6MTAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9n''@;'; put 'put ''aW5bX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MzJweDtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MzZweH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWxjb21lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjM2cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjQ4cHggMCAwfS5sb2dpbi1zaWRl''@;'; put 'put ''YmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgZm9ybS5sb2dpbltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tZ3JvdXBbX25nY29udGVudC0lQ09NUCVdID4gKltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjZw''@;'; put 'put ''eCAwIDE4cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7ei1pbmRleDoxMDF9LmxvZ2luLXNpZGViYXItd3JhcHBlci5hY3RpdmVbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xl''@;'; put 'put ''ZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2JhY2tncm91bmQ6cmdiYSgzMywzMywzMywuNSk7ei1pbmRleDoxMDB9ICAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLCAgIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdy''@;'; put 'put ''b3VwIC51c2VybmFtZSwgICAubG9naW4tc2lkZWJhci13cmFwcGVyIC5sb2dpbi1ncm91cCAucGFzc3dvcmR7d2lkdGg6MTAwJX0gIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0gIC5sb2dpbi1zaWRlYmFyLXdy''@;'; put 'put ''YXBwZXIgLmxvZ2luLWdyb3VwIGJ1dHRvbnttYXgtd2lkdGg6bm9uZX0ubG9naW4tbG9nb1tfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjIwMHB4fSJdfSksbH0pKCk7ZnVuY3Rpb24geVZlKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIpLHRuKDEsImltZyIsMTkpLENlKCkpLDImbCl7''@;'; put 'put ''Y29uc3QgYT1HZSgpO1NlKDEpLFJ1KCJzcmMiLGEuZ2V0UGljdHVyZVVybCgpLFZfKX19ZnVuY3Rpb24gYlZlKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIsMjApLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO2dyKCJoaWRkZW4iLDA9PT1hLmZhaWxlZFJlcXMubGVuZ3RoKSxTZSgx''@;'; put 'put ''KSxhcihhLmZhaWxlZFJlcXMubGVuZ3RoKX19ZnVuY3Rpb24gX1ZlKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIsMjEpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO2dyKCJoaWRkZW4iLDA9PT1hLmRlYnVnTG9ncy5sZW5ndGgpLFNlKDEpLGFyKGEuZGVidWdMb2dzLmxlbmd0aCl9''@;'; put 'put ''fWZ1bmN0aW9uIHdWZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDIyKX1mdW5jdGlvbiBDVmUobCxjKXsxJmwmJihXcigwKSx5ZSgxLCJhIiwzMykoMiwic3BhbiIsMzQpLFllKDMsIkRvY3VtZW50YXRpb24iKSxDZSgpKCksR3IoKSl9ZnVuY3Rpb24gU1ZlKGwsYyl7aWYoMSZsKXtjb25z''@;'; put 'put ''dCBhPVpuKCk7eWUoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDIzKSgxLCJkaXYiLDI0LDI1KSgzLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMjYpLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1RaSgyKTtyZXR1cm4gWnQoR2UoKS5vbkRlYnVnUm93Q2xpY2soZCxoKSl9KSx5''@;'; put 'put ''ZSg0LCJjbHItdG9nZ2xlLXdyYXBwZXIiKSg1LCJpbnB1dCIsMjcpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5zYXNqc0NvbmZpZy5kZWJ1Zz1kKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLm9u''@;'; put 'put ''RGVidWdNb2RlQ2hhbmdlKCkpfSksQ2UoKSx5ZSg2LCJsYWJlbCIpLFllKDcsIkRlYnVnIE1vZGUiKSxDZSgpKCkoKSgpLHllKDgsImEiLDI4KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub3BlblJlcXVlc3RzTW9kYWwoKSl9KSx5ZSg5LCJzcGFuIiksWWUo''@;'; put 'put ''MTAsIlNBUyBSZXF1ZXN0cyIpLENlKCkoKSx0dCgxMSxDVmUsNCwwLCJuZy1jb250YWluZXIiLDIpLHRuKDEyLCJkaXYiLDE1KSx5ZSgxMywiYSIsMjkpKDE0LCJzcGFuIiksWWUoMTUsIlN5c3RlbSIpLENlKCkoKSx5ZSgxNiwiYSIsMzApLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7cmV0dXJu''@;'; put 'put ''IFV0KGEpLFp0KEdlKCkubG9nb3V0KGQpKX0pLHllKDE3LCJzcGFuIiksWWUoMTgsIkxvZyBPdXQiKSxDZSgpLHRuKDE5LCJjbHItaWNvbiIsMzEpLENlKCkseWUoMjAsImRpdiIsMzIpKDIxLCJzcGFuIiksWWUoMjIpLENlKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDUpLFJlKCJu''@;'; put 'put ''Z01vZGVsIixhLnNhc2pzQ29uZmlnLmRlYnVnKSxTZSg2KSxSZSgibmdJZiIsIWEuaXNEZXBsb3lQYWdlKSxTZSgxMSksd3IoInYiLGEuY29tbWl0VmVyLCIiKX19Y29uc3QgTVZlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YW5kYWxvbmU6ITB9fTtsZXQga1ZlPSgoKT0+e2NsYXNzIGx7Y29uc3Ry''@;'; put 'put ''dWN0b3IoYSxmLGQsaCl7dGhpcy51c2VyU2VydmljZT1hLHRoaXMuc2FzU2VydmljZT1mLHRoaXMuZXZlbnRTZXJ2aWNlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLnVzZXJOYW1lPSJOb3QgbG9nZ2VkIGluIix0aGlzLnJlcVN1Yj1uZXcgdGUsdGhpcy51c2VyU3ViPW5ldyB0ZSx0aGlzLmFwcExv''@;'; put 'put ''Z3M9W10sdGhpcy5kZWJ1Z0xvZ3M9W10sdGhpcy5mYWlsZWRSZXFzPVtdLHRoaXMuc2FzRXJyb3JzPVtdLHRoaXMuaXNWaXlhPSExLHRoaXMuc2FzanNDb25maWc9bmV3IHYxLlNBU2pzQ29uZmlnLHRoaXMucmVxdWVzdHNDb3VudD0wLHRoaXMuY29tbWl0VmVyPSIifW5nT25Jbml0KCl7dGhp''@;'; put 'put ''cy51c2VyU3ViPXRoaXMudXNlclNlcnZpY2UudXNlckNoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMudXNlck5hbWU9YS51c2VybmFtZX0pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJU''@;'; put 'put ''eXBlJiYodGhpcy5pc1ZpeWE9ITApLHRoaXMuY29tbWl0VmVyPSJ2Ni4xLjAiLnJlcGxhY2UoInYiLCIiKSsiLmdiYmEyYTZjIn1uZ09uRGVzdHJveSgpe3RoaXMucmVxU3ViLnVuc3Vic2NyaWJlKCksdGhpcy51c2VyU3ViLnVuc3Vic2NyaWJlKCl9b3BlblJlcXVlc3RzTW9kYWwoKXt0aGlz''@;'; put 'put ''LmV2ZW50U2VydmljZS5vcGVuUmVxdWVzdHNNb2RhbCgpfW9uRGVidWdNb2RlQ2hhbmdlKGEpe3RoaXMuc2FzanNDb25maWcmJnRoaXMuc2FzU2VydmljZS5zZXREZWJ1Z1N0YXRlKHRoaXMuc2FzanNDb25maWcuZGVidWcpfW9uRGVidWdSb3dDbGljayhhLGYpe2Euc3RvcFByb3BhZ2F0aW9u''@;'; put 'put ''KCksc2V0VGltZW91dCgoKT0+e2YuY2xpY2soKX0sMzAwKX1sb2dvdXQoYSl7YS5wcmV2ZW50RGVmYXVsdCgpO3RyeXt0aGlzLnNhc1NlcnZpY2UubG9nb3V0KCl9Y2F0Y2goZil7Y29uc29sZS5lcnJvcihmKX19Z2V0UGljdHVyZVVybCgpe3JldHVybmAke3RoaXMuc2FzanNDb25maWcuc2Vy''@;'; put 'put ''dmVyVXJsfS9pZGVudGl0aWVzL3VzZXJzLyR7dGhpcy51c2VyTmFtZX0vYXZhdGFyL2NvbnRlbnRgfWdldCBpc0RlcGxveVBhZ2UoKXtyZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCkocnQoWGopLHJ0KHBsKSxydChScykscnQoTGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXVzZXItbmF2LWRyb3Bkb3duIl1dLGRlY2xzOjMyLHZhcnM6MTAsY29uc3RzOltbMSwiYXBwLW5hdi1kcm9wZG93biIsImQtbWQtYmxvY2siXSxbImNsckRyb3Bk''@;'; put 'put ''b3duVG9nZ2xlIiwiIiwxLCJuYXYtdGV4dCIsImNvbG9yLXdoaXRlIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtZGFuZ2VyIiwzLCJoaWRkZW4iLDQsIm5nSWYiXSxbImNsYXNzIiwiYmFkZ2UgYmFkZ2UtaW5mbyIsMywiaGlkZGVuIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImNh''@;'; put 'put ''cmV0IGRvd24iLDQsIm5nSWYiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Iiw0LCJjbHJJZk9wZW4iXSxbMSwiY29udGVudC1jb250YWluZXIiLCJoLWF1dG8iXSxbMSwic2lkZW5hdiIsImQtYmxvY2siLCJkLW1kLW5vbmUiLDMsImNsci1uYXYtbGV2ZWwiXSxbMSwic2lkZW5hdi1j''@;'; put 'put ''b250ZW50Il0sWyJocmVmIiwiLi4uIiwxLCJuYXYtbGluayIsImFjdGl2ZSJdLFsxLCJ0b2dnbGUtc3dpdGNoIl0sWyJpZCIsImRlYnVnLXRvZ2dsZTIiLCJ0eXBlIiwiY2hlY2tib3giLDMsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyIsIm5nTW9kZWxDaGFuZ2UiXSxbImZvciIsImRlYnVn''@;'; put 'put ''LXRvZ2dsZTIiLDEsImRlYnVnLXRvZ2dsZS1sYWJlbCIsImNvbG9yLWRhcmstZ3JheSJdLFsidGFyZ2V0IiwiX2JsYW5rIiwiaHJlZiIsImh0dHBzOi8vZG9jcy5kYXRhY29udHJvbGxlci5pbyIsMSwibmF2LWxpbmsiLCJkLWJsb2NrIl0sWzEsInNlcGFyYXRvciJdLFsicm91dGVyTGluayIs''@;'; put 'put ''Ii9zeXN0ZW0iLDEsIm5hdi1saW5rIiwiZC1ibG9jayJdLFsic2hhcGUiLCJsb2dvdXQiXSxbImhyZWYiLCIuLi4iLDEsIm5hdi1saW5rIiwiZC1ibG9jayIsMywiY2xpY2siXSxbImFsdCIsIiIsMSwiYXZhdGFyLWltZyIsMywic3JjIl0sWzEsImJhZGdlIiwiYmFkZ2UtZGFuZ2VyIl0sWzEs''@;'; put 'put ''ImJhZGdlIiwiYmFkZ2UtaW5mbyJdLFsic2hhcGUiLCJjYXJldCBkb3duIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwxLCJkZWJ1Zy1zd2l0Y2gtaXRlbSJdLFsiZHJvcGRvd25JdGVtRGVidWciLCIiXSxbMSwidG9nZ2xlLXN3aXRjaCIs''@;'; put 'put ''MywiY2xpY2siXSxbImlkIiwiZGVidWctdG9nZ2xlMSIsInR5cGUiLCJjaGVja2JveCIsImNsclRvZ2dsZSIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbImhyZWYiLCIuLi4iLCJyb3V0ZXJMaW5rIiwiL3N5c3RlbSIs''@;'; put 'put ''ImNsckRyb3Bkb3duSXRlbSIsIiJdLFsiaHJlZiIsIi4uLiIsImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siXSxbInNoYXBlIiwibG9nb3V0IiwxLCJjbHItbG9nb3V0Il0sWzEsImNvcHlSaWdodCJdLFsidGFyZ2V0IiwiX2JsYW5rIiwiaHJlZiIsImh0dHBzOi8vZG9jcy5kYXRhY29u''@;'; put 'put ''dHJvbGxlci5pbyIsImNsckRyb3Bkb3duSXRlbSIsIiJdLFsxLCJkcm9wZG93bi10ZXh0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiY2xyLWRyb3Bkb3duIiwwKSgxLCJidXR0b24iLDEpKDIsInNwYW4iKSxZZSgzKSxDZSgpLHR0KDQseVZlLDIsMSwic3BhbiIsMiks''@;'; put 'put ''dHQoNSxiVmUsMiwzLCJzcGFuIiwzKSx0dCg2LF9WZSwyLDMsInNwYW4iLDQpLHR0KDcsd1ZlLDEsMCwiY2xyLWljb24iLDUpLENlKCksdHQoOCxTVmUsMjMsMywiY2xyLWRyb3Bkb3duLW1lbnUiLDYpLENlKCkseWUoOSwiZGl2Iiw3KSgxMCwibmF2Iiw4KSgxMSwic2VjdGlvbiIsOSkoMTIs''@;'; put 'put ''ImEiLDEwKSxZZSgxMyksQ2UoKSx5ZSgxNCwiZGl2IikoMTUsImZvcm0iKSgxNiwiZGl2IiwxMSkoMTcsImlucHV0IiwxMiksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnNhc2pzQ29uZmlnLmRlYnVnPWh9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZi5vbkRlYnVnTW9kZUNoYW5nZSgpfSksQ2UoKSx5ZSgxOCwibGFiZWwiLDEzKSxZZSgxOSwiRGVidWcgTW9kZSIpLENlKCkoKSgpKCkseWUoMjAsImEiLDE0KSgyMSwic3BhbiIpLFllKDIyLCJEb2N1bWVudGF0aW9uIiksQ2UoKSgpLHRuKDIzLCJkaXYiLDE1KSx5ZSgyNCwiYSIsMTYp''@;'; put 'put ''KDI1LCJzcGFuIiksWWUoMjYsIlN5c3RlbSIpLENlKCksdG4oMjcsImNsci1pY29uIiwxNyksQ2UoKSx5ZSgyOCwiYSIsMTgpLEV0KCJjbGljayIsZnVuY3Rpb24oaCl7cmV0dXJuIGYubG9nb3V0KGgpfSkseWUoMjksInNwYW4iKSxZZSgzMCwiTG9nIE91dCIpLENlKCksdG4oMzEsImNsci1p''@;'; put 'put ''Y29uIiwxNyksQ2UoKSgpKCkoKSksMiZhJiYoU2UoMyksYXIoZi51c2VyTmFtZSksU2UoMSksUmUoIm5nSWYiLCJOb3QgbG9nZ2VkIGluIiE9PWYudXNlck5hbWUmJmYuaXNWaXlhKSxTZSgxKSxSZSgibmdJZiIsIWYuc2FzanNDb25maWcuZGVidWcpLFNlKDEpLFJlKCJuZ0lmIixmLnNhc2pz''@;'; put 'put ''Q29uZmlnLmRlYnVnKSxTZSgxKSxSZSgibmdJZiIsIWYuaXNWaXlhKSxTZSgzKSxSZSgiY2xyLW5hdi1sZXZlbCIsMiksU2UoMyksd3IoIiAiLGYudXNlck5hbWUsIiAiKSxTZSg0KSxSZSgibmdNb2RlbCIsZi5zYXNqc0NvbmZpZy5kZWJ1ZykoIm5nTW9kZWxPcHRpb25zIixYYSg5LE1WZSkp''@;'; put 'put ''KX0sZGVwZW5kZW5jaWVzOlskaSxwNCxSMCxXYSxoNCx6YSxDZCxJMCxSbCx4ZCxlbCxCMCxsNyxWMCxzdWUsYTMsbzUsYTUseDddLHN0eWxlczpbJy5jb3B5UmlnaHRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTBweH0uY29weVJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNw''@;'; put 'put ''YW5bX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEuNX0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1yaWdodDoxNXB4''@;'; put 'put ''O2xpbmUtaGVpZ2h0OjNyZW07aGVpZ2h0OjNyZW19LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdID4gYnV0dG9uLmRyb3Bkb3duLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZhZmFmYTtwb3NpdGlvbjpyZWxhdGl2ZX0uYXBwLW5hdi1kcm9wZG93bltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gPiBidXR0b24uZHJvcGRvd24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcntjb250ZW50OiIiO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtvcGFjaXR5Oi4xNTtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDo0MHB4O3RvcDox''@;'; put 'put ''MHB4fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGJ1dHRvbi5kcm9wZG93bi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLmJhZGdlLmhpZGRlbltfbmdjb250ZW50LSVDT01QJV17dmlzaWJpbGl0eTpoaWRkZW59LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM1NjU2NTY7cGFkZGluZy1ib3R0b206MH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuc2VwYXJh''@;'; put 'put ''dG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXl9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDo0NXB4O2xpbmUtaGVpZ2h0OjQwcHh9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1l''@;'; put 'put ''bnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5kcm9wZG93bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNTY1NjU2fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1t''@;'; put 'put ''ZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjE1cHg7cmlnaHQ6MjZweDttYXJnaW4tcmlnaHQ6MH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbS5kZWJ1Zy1zd2l0Y2gtaXRlbVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93''@;'; put 'put ''bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmFwcC1uYXYtZHJv''@;'; put 'put ''cGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1sb2dvdXRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjIwcHg7dG9w''@;'; put 'put ''OjE1cHh9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEw''@;'; put 'put ''MCV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgICBjbHItdG9nZ2xlLXdyYXBwZXJ7d2lkdGg6MTAwJTttYXJnaW46MDtoZWlnaHQ6''@;'; put 'put ''MTAwJTtwYWRkaW5nOjEwcHggMjBweH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAgIGlucHV0e2luc2V0OjA7d2lkdGg6MTAwJTto''@;'; put 'put ''ZWlnaHQ6MTAwJTtjdXJzb3I6cG9pbnRlcn0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItdG9nZ2xlLXdyYXBwZXIgaW5w''@;'; put 'put ''dXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0uZGVidWctdG9nZ2xlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWxlZnQ6NDJweH1AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpey5zaWRlbmF2LWNvbnRlbnRbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgYS5uYXYtbGluay5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7cGFkZGluZzoxNXB4O2JhY2tncm91bmQ6IzU2NTY1Nn19Lm5hdi1saW5rLmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5iYWRnZVtfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGV9LmF2YXRhci1pbWdbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLWxlZnQ6MTBweDtib3JkZXItcmFkaXVzOjUwcHh9J119KSxsfSkoKTtmdW5jdGlvbiBFVmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJj''@;'; put 'put ''bHItYWxlcnQiLDIpLEV0KCJjbHJBbGVydENsb3NlZENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFp0KFV0KGEpLiRpbXBsaWNpdC5jbG9zZWQ9ZCl9KSgiY2xyQWxlcnRDbG9zZWRDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLm9uQWxlcnRDbG9zZSgpKX0pLHll''@;'; put 'put ''KDEsImRpdiIsMykoMiwic3BhbiIsNCksWWUoMyksQ2UoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJjbHJBbGVydFR5cGUiLGEudHlwZSkoImNsckFsZXJ0QXBwTGV2ZWwiLCEwKSgiY2xyQWxlcnRDbG9zZWQiLGEuY2xvc2VkKSxTZSgzKSx3cigiICIsYS5tZXNzYWdl''@;'; put 'put ''LCIgIil9fWZ1bmN0aW9uIHhWZShsLGMpe2lmKDEmbCYmKHllKDAsImNsci1hbGVydHMiKSx0dCgxLEVWZSw0LDQsImNsci1hbGVydCIsMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nRm9yT2YiLGEuYWxlcnRzKX19bGV0IEFWZT0oKCk9PntjbGFzcyBse2NvbnN0cnVj''@;'; put 'put ''dG9yKGEpe3RoaXMuX2FsZXJ0c1NlcnZpY2U9YSx0aGlzLmFsZXJ0cz1bXSx0aGlzLmhhc09wZW5BbGVydD0hMSx0aGlzLmFsZXJ0c1N1Yj1uZXcgdGV9bmdPbkluaXQoKXt0aGlzLmFsZXJ0c1N1Yj10aGlzLl9hbGVydHNTZXJ2aWNlLmFsZXJ0cy5zdWJzY3JpYmUoYT0+e3RoaXMuYWxlcnRz''@;'; put 'put ''LnB1c2goYSksdGhpcy5oYXNPcGVuQWxlcnQ9ITAsYS5lcnImJmNvbnNvbGUuZXJyb3IoYS5lcnIpfSl9b25BbGVydENsb3NlKCl7dGhpcy5oYXNPcGVuQWxlcnQ9dGhpcy5hbGVydHMuc29tZShhPT4hYS5jbG9zZWQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5l''@;'; put 'put ''dyhhfHxsKShydChKaikpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtYWxlcnRzIl1dLGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXSxbMywiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIiwiY2xyQWxlcnRD''@;'; put 'put ''bG9zZWRDaGFuZ2UiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbHJBbGVydFR5cGUiLCJjbHJBbGVydEFwcExldmVsIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJBbGVydENsb3NlZENoYW5nZSJdLFsxLCJhbGVydC1pdGVtIl0sWzEsImFsZXJ0LXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24o''@;'; put 'put ''YSxmKXsxJmEmJnR0KDAseFZlLDIsMSwiY2xyLWFsZXJ0cyIsMCksMiZhJiZSZSgibmdJZiIsZi5oYXNPcGVuQWxlcnQpfSxkZXBlbmRlbmNpZXM6W1JhLCRpLF9TLHJ1ZSx3U10sc3R5bGVzOlsiY2xyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30iXX0pLGx9KSgp''@;'; put 'put ''LGJJPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmNsYXNzZXM9IiJ9bmdPbkluaXQoKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjb250YWN0LWxpbmsiXV0saW5w''@;'; put 'put ''dXRzOntjbGFzc2VzOiJjbGFzc2VzIn0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbImhyZWYiLCJtYWlsdG86c3VwcG9ydEBkYXRhY29udHJvbGxlci5pbz9zdWJqZWN0PUxpY2VuY2UiLDMsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJhIiwwKSxZZSgx''@;'; put 'put ''LCJzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksQ2UoKSksMiZhJiYoZ3IoInVuc2V0IiwiIiE9PWYuY2xhc3NlcyksUmUoIm5nQ2xhc3MiLGYuY2xhc3NlcykpfSxkZXBlbmRlbmNpZXM6W3l1XSxzdHlsZXM6WyIudW5zZXRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnVuc2V0fSJdfSks''@;'; put 'put ''bH0pKCksX0k9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlsZU92ZXI9ITEsdGhpcy5maWxlRHJvcHBlZD1uZXcgeHIsdGhpcy5maWxlRHJhZ2dlZE92ZXI9bmV3IHhyfW9uRHJhZ092ZXIoYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5j''@;'; put 'put ''b250YWluc0ZpbGVzKGEpJiYhdGhpcy5maWxlT3ZlciYmKHRoaXMuZmlsZU92ZXI9ITAsdGhpcy5maWxlRHJhZ2dlZE92ZXIuZW1pdCgpKX1vbkRyYWdMZWF2ZShhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExfW9uZHJvcChhKXthLnBy''@;'; put 'put ''ZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExO2NvbnN0IGY9YS5kYXRhVHJhbnNmZXIuZmlsZXM7Zi5sZW5ndGg+MCYmdGhpcy5maWxlRHJvcHBlZC5lbWl0KGYpfWNvbnRhaW5zRmlsZXMoYSl7aWYoYSYmYS5kYXRhVHJhbnNmZXImJmEuZGF0YVRy''@;'; put 'put ''YW5zZmVyLnR5cGVzKWZvcihsZXQgZj0wO2Y8YS5kYXRhVHJhbnNmZXIudHlwZXMubGVuZ3RoO2YrKylpZigiRmlsZXMiPT1hLmRhdGFUcmFuc2Zlci50eXBlc1tmXSlyZXR1cm4hMH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGly''@;'; put 'put ''PVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImFwcERyYWdOZHJvcCIsIiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGYpezEmYSYmRXQoImRyYWdvdmVyIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkRyYWdPdmVyKGgpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24oaCl7''@;'; put 'put ''cmV0dXJuIGYub25EcmFnTGVhdmUoaCl9KSgiZHJvcCIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25kcm9wKGgpfSksMiZhJiZncigiZmlsZW92ZXIiLGYuZmlsZU92ZXIpfSxvdXRwdXRzOntmaWxlRHJvcHBlZDoiZmlsZURyb3BwZWQiLGZpbGVEcmFnZ2VkT3ZlcjoiZmlsZURyYWdnZWRPdmVy''@;'; put 'put ''In19KSxsfSkoKTtmdW5jdGlvbiBUVmUobCxjKXsxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCJObyByZXF1ZXN0cyBtYWRlIiksQ2UoKSl9ZnVuY3Rpb24gT1ZlKGwsYyl7MSZsJiYoeWUoMCwic3BhbiIpLHRuKDEsImNsci1pY29uIiwxMyksQ2UoKSl9ZnVuY3Rpb24gRFZlKGwsYyl7MSZsJiYo''@;'; put 'put ''eWUoMCwic3BhbiIpLHRuKDEsImNsci1pY29uIiwxNCksQ2UoKSl9ZnVuY3Rpb24gSVZlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMjEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdCxtPUdlKDMpLmluZGV4O3Jl''@;'; put 'put ''dHVybiBadChHZSgyKS5nb1RvTG9nTGluZShoLCJyZXF1ZXN0XyIrbSwiZXJyb3IiKSl9KSx5ZSgxLCJidXR0b24iLDIyKSxZZSgyKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDIpLHdyKCIgIixhLCIgIil9fWNvbnN0IE91ZT1mdW5jdGlvbigpe3JldHVybltdfTtm''@;'; put 'put ''dW5jdGlvbiBSVmUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdHJlZS1ub2RlIiwxOCksdG4oMSwiY2xyLWljb24iLDE5KSxZZSgyKSx0dCgzLElWZSwzLDEsImNsci10cmVlLW5vZGUiLDIwKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMikuJGltcGxpY2l0O1NlKDIpLHdyKCIgRXJyb3JzICgi''@;'; put 'put ''LGEubG9nRXJyb3JzLmxlbmd0aCwiKSAiKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5sb2dFcnJvcnN8fFhhKDIsT3VlKSl9fWZ1bmN0aW9uIExWZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDIxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1V''@;'; put 'put ''dChhKS4kaW1wbGljaXQsbT1HZSgzKS5pbmRleDtyZXR1cm4gWnQoR2UoMikuZ29Ub0xvZ0xpbmUoaCwicmVxdWVzdF8iK20sIndhcm5pbmciKSl9KSx5ZSgxLCJidXR0b24iLDIyKSxZZSgyKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDIpLHdyKCIgIixhLCIgIil9''@;'; put 'put ''fWZ1bmN0aW9uIFBWZShsLGMpe2lmKDEmbCYmKHllKDAsImNsci10cmVlLW5vZGUiLDE4KSx0bigxLCJjbHItaWNvbiIsMjMpLFllKDIpLHR0KDMsTFZlLDMsMSwiY2xyLXRyZWUtbm9kZSIsMjApLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKS4kaW1wbGljaXQ7U2UoMiksd3IoIiBXYXJuaW5n''@;'; put 'put ''cyAoIixhLmxvZ1dhcm5pbmdzLmxlbmd0aCwiKSAiKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5sb2dXYXJuaW5nc3x8WGEoMixPdWUpKX19ZnVuY3Rpb24gRlZlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiwyNCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2Nv''@;'; put 'put ''bnN0IGQ9R2UoMikuJGltcGxpY2l0O3JldHVybiBadChHZSgyKS5kb3dubG9hZExvZyhkLmxvZ0ZpbGUpKX0pLFllKDEsIiBEb3dubG9hZCAiKSxDZSgpfX1mdW5jdGlvbiBIVmUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdGFiLWNvbnRlbnQiKSgxLCJjbHItdHJlZSIpLHR0KDIsUlZlLDQs''@;'; put 'put ''MywiY2xyLXRyZWUtbm9kZSIsMTUpLHR0KDMsUFZlLDQsMywiY2xyLXRyZWUtbm9kZSIsMTUpLENlKCksdG4oNCwiZGl2IiwxNiksdHQoNSxGVmUsMiwwLCJidXR0b24iLDE3KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMiksUmUoIm5nSWYiLGEubG9nRXJyb3JzKSxT''@;'; put 'put ''ZSgxKSxSZSgibmdJZiIsYS5sb2dXYXJuaW5ncyksU2UoMSksUmUoImlubmVySFRNTCIsYS5sb2dGaWxlLHZoKSxTZSgxKSxSZSgibmdJZiIsKG51bGw9PWEubG9nRmlsZT9udWxsOmEubG9nRmlsZS5sZW5ndGgpPjApfX1mdW5jdGlvbiBOVmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5''@;'; put 'put ''ZSgwLCJidXR0b24iLDI0KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDIpLmRvd25sb2FkU291cmNlQ29kZShkLnNvdXJjZUNvZGUpKX0pLFllKDEsIiBEb3dubG9hZCAiKSxDZSgpfX1mdW5jdGlvbiBWVmUobCxjKXtp''@;'; put 'put ''ZigxJmwmJih5ZSgwLCJjbHItdGFiLWNvbnRlbnQiKSgxLCJkaXYiLDI1KSxZZSgyKSxDZSgpLHR0KDMsTlZlLDIsMCwiYnV0dG9uIiwxNyksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1NlKDIpLGFyKGEuc291cmNlQ29kZSksU2UoMSksUmUoIm5nSWYiLChudWxsPT1hLnNv''@;'; put 'put ''dXJjZUNvZGU/bnVsbDphLnNvdXJjZUNvZGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24gQlZlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiwyNCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMikuJGltcGxpY2l0O3JldHVybiBadChHZSgyKS5k''@;'; put 'put ''b3dubG9hZEdlbmVyYXRlZENvZGUoZC5nZW5lcmF0ZWRDb2RlKSl9KSxZZSgxLCIgRG93bmxvYWQgIiksQ2UoKX19ZnVuY3Rpb24galZlKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyNSksWWUoMiksQ2UoKSx0dCgzLEJWZSwyLDAsImJ1dHRvbiIsMTcp''@;'; put 'put ''LENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdDtTZSgyKSx3cigiICIsYS5nZW5lcmF0ZWRDb2RlLCIgIiksU2UoMSksUmUoIm5nSWYiLChudWxsPT1hLmdlbmVyYXRlZENvZGU/bnVsbDphLmdlbmVyYXRlZENvZGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24gelZlKGwsYyl7aWYoMSZs''@;'; put 'put ''KXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwzMSksRXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgzKS4kaW1wbGljaXQuc2VsZWN0ZWRUYWJsZT1oLmtleSl9KSxZZSgxKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtn''@;'; put 'put ''cigic2VsZWN0ZWQiLEdlKDMpLiRpbXBsaWNpdC5zZWxlY3RlZFRhYmxlPT09YS5rZXkpLFNlKDEpLHdyKCIgIixhLmtleSwiICIpfX1mdW5jdGlvbiBVVmUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItZHJvcGRvd24tbWVudSIpLHR0KDEselZlLDIsMywiZGl2IiwzMCksd2woMiwia2V5dmFs''@;'; put 'put ''dWUiKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMikuJGltcGxpY2l0O1NlKDEpLFJlKCJuZ0Zvck9mIixKcygyLDEsYS5TQVNXT1JLKSl9fWZ1bmN0aW9uIFpWZShsLGMpe2lmKDEmbCYmKHllKDAsInAiLDM1KSgxLCJzdHJvbmciKSxZZSgyKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgzKS4k''@;'; put 'put ''aW1wbGljaXQ7U2UoMiksd3IoIiIsYS5zZWxlY3RlZFRhYmxlLCIgKGZpcnN0IDEwIHJvd3MpICIpfX1mdW5jdGlvbiBZVmUobCxjKXtpZigxJmwmJih5ZSgwLCJ0aCIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSx3cigiICIsYS5rZXksIiAiKX19ZnVuY3Rp''@;'; put 'put ''b24gV1ZlKGwsYyl7aWYoMSZsJiYoeWUoMCwidGQiKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSgpLiRpbXBsaWNpdDtTZSgxKSx3cigiICIsZlthLmtleV0sIiAiKX19ZnVuY3Rpb24gR1ZlKGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiKSx0dCgxLFdWZSwyLDEs''@;'; put 'put ''InRkIiwzNyksd2woMiwia2V5dmFsdWUiKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoNCkuJGltcGxpY2l0O1NlKDEpLFJlKCJuZ0Zvck9mIixKcygyLDEsYS5TQVNXT1JLW2Euc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3NbMF0pKX19ZnVuY3Rpb24gJFZlKGwsYyl7aWYoMSZsJiYoeWUoMCwi''@;'; put 'put ''dGFibGUiLDM2KSgxLCJ0aGVhZCIpKDIsInRyIiksdHQoMyxZVmUsMiwxLCJ0aCIsMzcpLHdsKDQsImtleXZhbHVlIiksQ2UoKSgpLHllKDUsInRib2R5IiksdHQoNixHVmUsMywzLCJ0ciIsMzcpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDMpLiRpbXBsaWNpdDtTZSgzKSxSZSgibmdGb3JP''@;'; put 'put ''ZiIsSnMoNCwyLGEuU0FTV09SS1thLnNlbGVjdGVkVGFibGVdLmZpcnN0MTByb3dzWzBdKSksU2UoMyksUmUoIm5nRm9yT2YiLGEuU0FTV09SS1thLnNlbGVjdGVkVGFibGVdLmZpcnN0MTByb3dzKX19ZnVuY3Rpb24gS1ZlKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRhYi1jb250ZW50Iiks''@;'; put 'put ''dHQoMSxaVmUsMywxLCJwIiwzMikseWUoMiwiZGl2IiwzMyksdHQoMywkVmUsNyw0LCJ0YWJsZSIsMzQpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDIpLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsYS5zZWxlY3RlZFRhYmxlKSxTZSgyKSxSZSgibmdJZiIsYS5zZWxlY3RlZFRhYmxlKX19''@;'; put 'put ''ZnVuY3Rpb24gcVZlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRhYiIpKDEsImNsci1kcm9wZG93biIsMjYpKDIsImJ1dHRvbiIsMjcpLFllKDMsIiBTQVMgV29yayBUYWJsZXMgIiksdG4oNCwiY2xyLWljb24iLDI4KSxDZSgpLHR0KDUsVVZlLDMsMywiY2xyLWRyb3Bk''@;'; put 'put ''b3duLW1lbnUiLDI5KSxDZSgpLHR0KDYsS1ZlLDQsMiwibmctdGVtcGxhdGUiLDEyKSxFdCgiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgzKS50YWJsZXNBY3RpdmU9ZCl9KSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSxSZSgiY2xy''@;'; put 'put ''Q2xvc2VNZW51T25JdGVtQ2xpY2siLCEwKSxTZSg1KSxSZSgiY2xySWZBY3RpdmUiLGEudGFibGVzQWN0aXZlKX19ZnVuY3Rpb24gWFZlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXN0YWNrLWJsb2NrIiw4KSgxLCJjbHItc3RhY2stbGFiZWwiKSxZZSgyKSx5ZSgzLCJz''@;'; put 'put ''cGFuIiw5KSx0dCg0LE9WZSwyLDAsInNwYW4iLDUpLHR0KDUsRFZlLDIsMCwic3BhbiIsNSksQ2UoKSgpLHllKDYsImNsci1zdGFjay1jb250ZW50IiksWWUoNyksQ2UoKSx5ZSg4LCJjbHItc3RhY2stYmxvY2siLDEwKSg5LCJjbHItc3RhY2stY29udGVudCIpKDEwLCJjbHItdGFicyIpKDEx''@;'; put 'put ''LCJjbHItdGFiIikoMTIsImJ1dHRvbiIsMTEpLFllKDEzLCJTQVMgTG9nIiksQ2UoKSx0dCgxNCxIVmUsNiw0LCJuZy10ZW1wbGF0ZSIsMTIpLEV0KCJjbHJJZkFjdGl2ZUNoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnNhc0xvZ0FjdGl2ZT1kKX0pLENlKCkseWUo''@;'; put 'put ''MTUsImNsci10YWIiKSgxNiwiYnV0dG9uIiwxMSksWWUoMTcsIlNBUyBTb3VyY2UgQ29kZSIpLENlKCksdHQoMTgsVlZlLDQsMiwibmctdGVtcGxhdGUiLDEyKSxFdCgiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgyKS5zYXNTb3VyY2VDb2RlQWN0''@;'; put 'put ''aXZlPWQpfSksQ2UoKSx5ZSgxOSwiY2xyLXRhYiIpKDIwLCJidXR0b24iLDExKSxZZSgyMSwiU0FTIEdlbmVyYXRlZCBDb2RlIiksQ2UoKSx0dCgyMixqVmUsNCwyLCJuZy10ZW1wbGF0ZSIsMTIpLEV0KCJjbHJJZkFjdGl2ZUNoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdl''@;'; put 'put ''KDIpLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9ZCl9KSxDZSgpLHR0KDIzLHFWZSw3LDIsImNsci10YWIiLDUpLENlKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleCxkPUdlKDIpO1JlKCJpZCIsInJlcXVlc3RfIitmKSgiY2xyU3RhY2tWaWV3TGV2ZWwiLDEp''@;'; put 'put ''KCJjbHJTdGFja1ZpZXdTZXRzaXplIiwzKSgiY2xyU3RhY2tWaWV3UG9zaW5zZXQiLDMpLFNlKDIpLHdyKCIgIixhLnNlcnZpY2VMaW5rLCIgIiksU2UoMiksUmUoIm5nSWYiLChudWxsPT1hLmxvZ1dhcm5pbmdzP251bGw6YS5sb2dXYXJuaW5ncy5sZW5ndGgpPjApLFNlKDEpLFJlKCJuZ0lm''@;'; put 'put ''IiwobnVsbD09YS5sb2dFcnJvcnM/bnVsbDphLmxvZ0Vycm9ycy5sZW5ndGgpPjApLFNlKDIpLGFyKGEucGFyc2VkVGltZXN0YW1wKSxTZSg3KSxSZSgiY2xySWZBY3RpdmUiLGQuc2FzTG9nQWN0aXZlKSxTZSg0KSxSZSgiY2xySWZBY3RpdmUiLGQuc2FzU291cmNlQ29kZUFjdGl2ZSksU2Uo''@;'; put 'put ''NCksUmUoImNscklmQWN0aXZlIixkLnNhc0dlbmVyYXRlZENvZGVBY3RpdmUpLFNlKDEpLFJlKCJuZ0lmIixhLlNBU1dPUkspfX1mdW5jdGlvbiBKVmUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItc3RhY2stdmlldyIpLHR0KDEsWFZlLDI0LDEyLCJjbHItc3RhY2stYmxvY2siLDcpLENlKCkp''@;'; put 'put ''LDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0Zvck9mIixhLnNhc2pzUmVxdWVzdHMpfX1sZXQgUVZlPSgoKT0+e2NsYXNzIGx7Z2V0IG9wZW5lZCgpe3JldHVybiB0aGlzLl9vcGVuZWR9c2V0IG9wZW5lZChhKXt0aGlzLl9vcGVuZWQ9YSxhJiZ0aGlzLm1vZGFsT3BlbmVkKCksdGhp''@;'; put 'put ''cy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLnNhc2pzUmVxdWVzdHMpfWNvbnN0cnVjdG9yKGEsZixkKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmxvZ2dlclNlcnZpY2U9Zix0aGlzLmhlbHBlclNlcnZpY2U9ZCx0aGlzLl9vcGVuZWQ9ITEsdGhpcy5vcGVuZWRDaGFuZ2U9bmV3IHhyLHRoaXMu''@;'; put 'put ''c2FzTG9nQWN0aXZlPSEwLHRoaXMuc2FzU291cmNlQ29kZUFjdGl2ZT0hMSx0aGlzLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9ITEsdGhpcy50YWJsZXNBY3RpdmU9ITEsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNhc2pzUmVxdWVzdHM9''@;'; put 'put ''W119bmdPbkluaXQoKXt9cGFyc2VMb2dUaW1lc3RhbXAoYSl7cmV0dXJuYCR7dGhpcy5mb3JtYXRUaW1lc3RhbXAoYSl9ICR7dGhpcy50aW1lc3RhbXBGcm9tTm93KGEpfWB9Y3V0QXBwTG9jKGEpe3JldHVybiBhLnJlcGxhY2UodGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MrIi8iLCIiKX1mb3Jt''@;'; put 'put ''YXRUaW1lc3RhbXAoYSl7cmV0dXJuIEtvKGEpLmZvcm1hdCgpP0tvKGEpLmZvcm1hdCgiZGRkZCwgTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGEiKTphfXRpbWVzdGFtcEZyb21Ob3coYSl7cmV0dXJuIEtvKGEpLmZvcm1hdCgpP2AgKCR7S28oYSkuZnJvbU5vdygpfSlgOiIifW1vZGFsT3BlbkNo''@;'; put 'put ''YW5nZShhKXt0aGlzLm9wZW5lZD1hLHRoaXMub3BlbmVkQ2hhbmdlLmVtaXQodGhpcy5vcGVuZWQpfW1vZGFsT3BlbmVkKCl7dGhpcy5zYXNqc1JlcXVlc3RzPXRoaXMuc2FzU2VydmljZS5nZXRTYXNSZXF1ZXN0cygpO2ZvcihsZXQgYSBvZiB0aGlzLnNhc2pzUmVxdWVzdHMpdGhpcy5wYXJz''@;'; put 'put ''ZUVycm9yc0FuZFdhcm5pbmdzKGEpLGEuc2VydmljZUxpbms9dGhpcy5jdXRBcHBMb2MoYS5zZXJ2aWNlTGluayksYS5wYXJzZWRUaW1lc3RhbXA9dGhpcy5wYXJzZUxvZ1RpbWVzdGFtcChhLnRpbWVzdGFtcCl9Z29Ub0xvZ0xpbmUoYSxmLGQpe2xldCBoPWRvY3VtZW50LnF1ZXJ5U2VsZWN0''@;'; put 'put ''b3JBbGwoYCMke2Z9IC5sb2ctd3JhcHBlci5zYXNsb2cgZm9udGApLG09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7Zn0gLmxvZy13cmFwcGVyLnNhc2xvZ2ApO2ZvcihsZXQgXyBvZiBoKV8udGV4dENvbnRlbnQuaW5jbHVkZXMoYSkmJihtLnNjcm9sbFRvcD1fLm9mZnNldFRvcC1tLm9m''@;'; put 'put ''ZnNldFRvcCxfLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIzYxYTIyMDJiIixzZXRUaW1lb3V0KCgpPT57Xy5zdHlsZT0iIn0sM2UzKSl9cGFyc2VFcnJvcnNBbmRXYXJuaW5ncyhhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtpZighYXx8IWEubG9nRmlsZXx8InN0cmluZyIh''@;'; put 'put ''PXR5cGVvZiBhLmxvZ0ZpbGV8fHZvaWQgMCE9PWEubG9nRXJyb3JzfHx2b2lkIDAhPT1hLmxvZ1dhcm5pbmdzKXJldHVybjtsZXQgZD1bXSxoPVtdLG09YS5sb2dGaWxlLnNwbGl0KCJcbiIpO2ZvcihsZXQgXz0wO188bS5sZW5ndGg7XysrKXtpZigvPC4qPkVSUk9SL2dtLnRlc3QobVtfXSkp''@;'; put 'put ''e2xldCBPPW1bX10uc3Vic3RyaW5nKG1bX10uaW5kZXhPZigiRSIpLG1bX10ubGVuZ3RoLTEpO2QucHVzaChPKX1lbHNlL15FUlJPUi9nbS50ZXN0KG1bX10pJiYoZC5wdXNoKG1bX10pLG1bX109Ijxmb250PiIrbVtfXSsiPC9mb250PiIpO2lmKC88Lio+V0FSTklORy9nbS50ZXN0KG1bX10p''@;'; put 'put ''KXtsZXQgTz1tW19dLnN1YnN0cmluZyhtW19dLmluZGV4T2YoIlciKSxtW19dLmxlbmd0aC0xKTtoLnB1c2goTyl9ZWxzZS9eV0FSTklORy9nbS50ZXN0KG1bX10pJiYoaC5wdXNoKG1bX10pLG1bX109Ijxmb250PiIrbVtfXSsiPC9mb250PiIpfWYubG9nZ2VyU2VydmljZS5sb2coaCksYS5s''@;'; put 'put ''b2dGaWxlPW0uam9pbigiXG4iKSxhLmxvZ0Vycm9ycz1kLGEubG9nV2FybmluZ3M9aH0pKCl9ZG93bmxvYWRMb2coYSl7Y29uc3QgZj0obmV3IERhdGUpLnZhbHVlT2YoKTt0aGlzLmhlbHBlclNlcnZpY2UuZG93bmxvYWRUZXh0RmlsZShgbG9nRmlsZS0ke2Z9YCxhKX1kb3dubG9hZFNvdXJj''@;'; put 'put ''ZUNvZGUoYSl7Y29uc3QgZj0obmV3IERhdGUpLnZhbHVlT2YoKTt0aGlzLmhlbHBlclNlcnZpY2UuZG93bmxvYWRUZXh0RmlsZShgc291cmNlQ29kZS0ke2Z9YCxhKX1kb3dubG9hZEdlbmVyYXRlZENvZGUoYSl7Y29uc3QgZj0obmV3IERhdGUpLnZhbHVlT2YoKTt0aGlzLmhlbHBlclNlcnZp''@;'; put 'put ''Y2UuZG93bmxvYWRUZXh0RmlsZShgZ2VuZXJhdGVkQ29kZS0ke2Z9YCxhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocGwpLHJ0KHkxKSxydChQdSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtcmVxdWVzdHMt''@;'; put 'put ''bW9kYWwiXV0saW5wdXRzOntvcGVuZWQ6Im9wZW5lZCJ9LG91dHB1dHM6e29wZW5lZENoYW5nZToib3BlbmVkQ2hhbmdlIn0sZGVjbHM6OCx2YXJzOjQsY29uc3RzOltbImNsck1vZGFsU2l6ZSIsInhsIiwxLCJyZXF1ZXN0cy1tb2RhbCIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxPcGVu''@;'; put 'put ''Q2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm10LTAiLCJkLWlubGluZS1ibG9jayJdLFsxLCJtb2RhbC1ib2R5IiwiaC03MHZoIl0sWyJjbGFzcyIsIm5vLXJlcXMiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJuby1yZXFzIl0sWzMsImlkIiwiY2xyU3RhY2tWaWV3TGV2ZWwiLCJj''@;'; put 'put ''bHJTdGFja1ZpZXdTZXRzaXplIiwiY2xyU3RhY2tWaWV3UG9zaW5zZXQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJpZCIsImNsclN0YWNrVmlld0xldmVsIiwiY2xyU3RhY2tWaWV3U2V0c2l6ZSIsImNsclN0YWNrVmlld1Bvc2luc2V0Il0sWzEsIm1sLTEwIl0sWzEsImNvbnRlbnQiXSxb''@;'; put 'put ''ImNsclRhYkxpbmsiLCIiXSxbMywiY2xySWZBY3RpdmUiLCJjbHJJZkFjdGl2ZUNoYW5nZSJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsIm1iLTUiLCJjb2xvci1ncmVlbiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi10cmlhbmdsZSIsMSwibWItNSIsImNvbG9yLXJlZCJdLFsi''@;'; put 'put ''Y2xhc3MiLCJlcnItbGlua3MiLDQsIm5nSWYiXSxbMSwibG9nLXdyYXBwZXIiLCJzYXNsb2ciLDMsImlubmVySFRNTCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1saW5rIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJlcnItbGlua3MiXSxbInNoYXBlIiwiZXhjbGFtYXRp''@;'; put 'put ''b24tdHJpYW5nbGUiLDEsImNvbG9yLXJlZCJdLFszLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNsaWNrIl0sWzEsImNsci10cmVlbm9kZS1saW5rIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwiY29sb3ItZ3JlZW4iXSxbInR5cGUiLCJidXR0b24iLDEsImJ0''@;'; put 'put ''biIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsxLCJsb2ctd3JhcHBlciJdLFsiY2xyVGFiTGluayIsIiIsMSwid29yay10YWJsZXMtZHJvcGRvd24iLDMsImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFs0''@;'; put 'put ''LCJjbHJJZk9wZW4iXSxbImNsYXNzIiwiZHJvcGRvd24taXRlbSIsImNsckRyb3Bkb3duSXRlbSIsIiIsMywic2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImRyb3Bkb3duLWl0ZW0iLDMsImNsaWNrIl0sWyJjbGFzcyIsIm10''@;'; put 'put ''LTEwIiw0LCJuZ0lmIl0sWzEsIm1pbi1oLTUwdmgiXSxbImNsYXNzIiwidGFibGUgbXQtMTAiLDQsIm5nSWYiXSxbMSwibXQtMTAiXSxbMSwidGFibGUiLCJtdC0xMCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJjbHItbW9kYWwi''@;'; put 'put ''LDApLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm1vZGFsT3BlbkNoYW5nZShoKX0pLHllKDEsImgzIiwxKSxZZSgyLCIgUmVxdWVzdCBIaXN0b3J5ICIpLHllKDMsInAiLDIpLFllKDQpLENlKCkoKSx5ZSg1LCJkaXYiLDMpLHR0KDYsVFZlLDIsMCwicCIs''@;'; put 'put ''NCksdHQoNyxKVmUsMiwxLCJjbHItc3RhY2stdmlldyIsNSksQ2UoKSgpKSwyJmEmJihSZSgiY2xyTW9kYWxPcGVuIixmLm9wZW5lZCksU2UoNCksd3IoIkFwcCBMb2NhdGlvbjogIixmLnNhc2pzQ29uZmlnLmFwcExvYywiIiksU2UoMiksUmUoIm5nSWYiLChudWxsPT1mLnNhc2pzUmVxdWVz''@;'; put 'put ''dHM/bnVsbDpmLnNhc2pzUmVxdWVzdHMubGVuZ3RoKTwxKSxTZSgxKSxSZSgibmdJZiIsZi5vcGVuZWQmJihudWxsPT1mLnNhc2pzUmVxdWVzdHM/bnVsbDpmLnNhc2pzUmVxdWVzdHMubGVuZ3RoKT4wKSl9LGRlcGVuZGVuY2llczpbUmEsJGksRTcsWXNlLGFaLFpzZSxEZCxMZixpNSxSbCxN''@;'; put 'put ''YyxrYyx1Uyx4ZCx1NSxmNSxUNyxjNSxsNSxBNyxhMyxvNSxhNSx4NyxVT10sc3R5bGVzOlsiLnJlcXVlc3RzLW1vZGFsIC5tb2RhbC1oZWFkZXIgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fSAgLnJlcXVlc3RzLW1vZGFsIC5tb2RhbC1jb250ZW50e3BhZGRpbmc6''@;'; put 'put ''MjBweCAxMHB4IDVweH0gIC53b3JrLXRhYmxlcy1kcm9wZG93biBidXR0b257Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5rLWNvbG9yLCAjOGM4YzhjKSFpbXBvcnRhbnR9ICAuc3RhY2stdmlld3toZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bWFzay1pbWFnZTpub25lIWltcG9ydGFudDstd2Via2l0''@;'; put 'put ''LW1hc2staW1hZ2U6bm9uZSFpbXBvcnRhbnR9ICAuY29udGVudCBjbHItaWNvbnttYXJnaW4tYm90dG9tOjVweH0gIC5jb250ZW50IHByZXt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDttYXgtaGVpZ2h0OmluaXRpYWw7b3ZlcmZsb3c6dmlzaWJsZTtib3JkZXI6''@;'; put 'put ''MH0gIC5jb250ZW50IC5zdGFjay1ibG9jay1sYWJlbHt3aWR0aDoxMDAlO3BhZGRpbmctbGVmdDouNnJlbSFpbXBvcnRhbnR9ICAuY29udGVudCAuc3RhY2stYmxvY2stbGFiZWwgLnN0YWNrLXZpZXcta2V5e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9ICAuZXJyLWxpbmtzIC5jbHItdHJlZW5v''@;'; put 'put ''ZGUtY2hpbGRyZW57bWF4LWhlaWdodDo1NXB4O292ZXJmbG93OmF1dG99LmRyb3Bkb3duLWl0ZW0uc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Q4ZTNlOX0ubG9nLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTBweDtwYWRkaW5nOjEwcHg7''@;'; put 'put ''bWFyZ2luLXRvcDoxMHB4O3doaXRlLXNwYWNlOnByZS13cmFwO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgI2UyZTJlMjtiYWNrZ3JvdW5kLWNvbG9yOiNmYmZiZmI7aGVpZ2h0OjQ4dmg7b3ZlcmZsb3c6YXV0b30ubm8tcmVxc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVy''@;'; put 'put ''LXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTAxOTYwNzg0Myk7cGFkZGluZy10b3A6NXB4O3RleHQtYWxpZ246Y2VudGVyfSJdfSksbH0pKCk7Y2xhc3MgZUJle2NvbnN0cnVjdG9yKCl7dGhpcy5zYXNTZXJ2aWNlPW51bGwsdGhpcy5tZXNzYWdlPSIiLHRoaXMuZGV0YWlscz1uZXcgRHVl''@;'; put 'put ''fX1jbGFzcyBEdWV7fWZ1bmN0aW9uIHRCZShsLGMpe2lmKDEmbCYmKHllKDAsInAiLDgpLFllKDEsIiBTQVMgU2VydmljZTogIikseWUoMiwic3Ryb25nIiksWWUoMyksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgzKSxhcihhLmRhdGEuc2FzU2VydmljZSl9fWZ1bmN0aW9uIG5CZShs''@;'; put 'put ''LGMpe2lmKDEmbCYmKHllKDAsImRpdiIsOSkoMSwicCIpKDIsInN0cm9uZyIpLFllKDMsIlNZU1dBUk5JTkdURVhUOiIpLENlKCksWWUoNCksQ2UoKSx5ZSg1LCJwIikoNiwic3Ryb25nIiksWWUoNywiU1lTRVJST1JURVhUOiIpLENlKCksWWUoOCksQ2UoKSx5ZSg5LCJwIikoMTAsInN0cm9u''@;'; put 'put ''ZyIpLFllKDExLCJNQUM6IiksQ2UoKSxZZSgxMiksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSg0KSx3cigiICIsYS5kYXRhLmRldGFpbHMuU1lTV0FSTklOR1RFWFQsIiIpLFNlKDQpLHdyKCIgIixhLmRhdGEuZGV0YWlscy5TWVNFUlJPUlRFWFQsIiIpLFNlKDQpLHdyKCIgIixhLmRh''@;'; put 'put ''dGEuZGV0YWlscy5NQUMsIiIpfX1mdW5jdGlvbiByQmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDEwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub3BlbkNvbmZpZ3VyYXRvcigpKX0pLFllKDEsIiBPcGVuIGNvbmZpZ3VyYXRv''@;'; put 'put ''ciAiKSxDZSgpfX1mdW5jdGlvbiBpQmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDEwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub3BlblJlcXVlc3RzTW9kYWwoKSl9KSxZZSgxLCIgT3BlbiByZXF1ZXN0cyBtb2RhbCAiKSxD''@;'; put 'put ''ZSgpfX1mdW5jdGlvbiBvQmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDEwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuZG93bmxvYWRMb2coKSl9KSxZZSgxLCIgRG93bmxvYWQgbG9nICIpLENlKCl9fWZ1bmN0aW9uIGFCZShs''@;'; put 'put ''LGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsMTApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5jbG9zZUFib3J0TW9kYWwoKSl9KSxZZSgxLCIgQ2xvc2UgIiksQ2UoKX19ZnVuY3Rpb24gbEJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpu''@;'; put 'put ''KCk7eWUoMCwiYnV0dG9uIiwxMCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnJlbG9hZCgpKX0pLFllKDEsIiBSZWxvYWQgIiksQ2UoKX19bGV0IHNCZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuaGVscGVyU2VydmljZT1hLHRo''@;'; put 'put ''aXMuZXZlbnRTZXJ2aWNlPWYsdGhpcy5zYXNTZXJ2aWNlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLm9uQ29uZmlybU1vZGFsQ2xpY2s9bmV3IHhyLHRoaXMuZGF0YT1uZXcgZUJlLHRoaXMuZm9yY2VSZWxvYWQ9ITEsdGhpcy5tb2RhbEVuYWJsZWQ9ITAsdGhpcy5kZWZhdWx0RGF0YT17bW9kYWxU''@;'; put 'put ''aXRsZToiQWJvcnQgTWVzc2FnZSIsc2FzU2VydmljZTpudWxsLG1lc3NhZ2U6IiIsZGV0YWlsczpuZXcgRHVlfX1uZ09uSW5pdCgpe2xldCBhPXsuLi50aGlzLmRlZmF1bHREYXRhLC4uLnRoaXMuZGF0YX07dGhpcy5kYXRhPWF9c2hvd0NvbmZpZ3VyYXRvckJ1dHRvbihhKXtjb25zdCBmPXRo''@;'; put 'put ''aXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpO3JldHVybiBhPy5pbmNsdWRlcygic3RhcnR1cHNlcnZpY2UiKSYmZi5zZXJ2ZXJUeXBlPT09WHUuRC5TYXM5fWNsb3NlQWJvcnRNb2RhbCgpe3RoaXMub25Db25maXJtTW9kYWxDbGljay5lbWl0KCl9b3BlbkNvbmZpZ3VyYXRvcigpe3Ro''@;'; put 'put ''aXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLHRoaXMuY2xvc2VBYm9ydE1vZGFsKCl9ZG93bmxvYWRMb2coKXt0aGlzLmhlbHBlclNlcnZpY2UuZG93bmxvYWRUZXh0RmlsZShgJHt0aGlzLmRhdGEuc2FzU2Vy''@;'; put 'put ''dmljZX0tTE9HYCx0aGlzLmRhdGEuZGV0YWlscz8uTE9HfHwiRXJyb3IgcGFyc2luZyB0aGUgbG9nIil9b3BlblJlcXVlc3RzTW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vcGVuUmVxdWVzdHNNb2RhbCgpfXJlbG9hZCgpe2xvY2F0aW9uLnJlbG9hZCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChQdSkscnQoUnMpLHJ0KHBsKSxydChMYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtaW5mby1tb2RhbCJdXSxpbnB1dHM6e2RhdGE6ImRhdGEiLGZvcmNlUmVsb2FkOiJmb3JjZVJlbG9hZCJ9LG91dHB1''@;'; put 'put ''dHM6e29uQ29uZmlybU1vZGFsQ2xpY2s6Im9uQ29uZmlybU1vZGFsQ2xpY2sifSxkZWNsczoxMyx2YXJzOjEyLGNvbnN0czpbWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNsci1hYm9ydC1tb2RhbCIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNs''@;'; put 'put ''ck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsiY2xhc3MiLCJzYXNTZXJ2aWNlIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiYWJvcnRNc2ciLDMsImlubmVySFRNTCJdLFsiY2xhc3MiLCJzeXN0ZXh0Iiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsi''@;'; put 'put ''dHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJzYXNTZXJ2aWNlIl0sWzEsInN5c3RleHQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYp''@;'; put 'put ''ezEmYSYmKHllKDAsImNsci1tb2RhbCIsMCksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYubW9kYWxFbmFibGVkPWh9KSx5ZSgxLCJoMyIsMSksWWUoMiksdHQoMyx0QmUsNCwxLCJwIiwyKSxDZSgpLHllKDQsImRpdiIsMyksdG4oNSwiZGl2Iiw0KSx0dCg2''@;'; put 'put ''LG5CZSwxMywzLCJkaXYiLDUpLENlKCkseWUoNywiZGl2Iiw2KSx0dCg4LHJCZSwyLDAsImJ1dHRvbiIsNyksdHQoOSxpQmUsMiwwLCJidXR0b24iLDcpLHR0KDEwLG9CZSwyLDAsImJ1dHRvbiIsNyksdHQoMTEsYUJlLDIsMCwiYnV0dG9uIiw3KSx0dCgxMixsQmUsMiwwLCJidXR0b24iLDcp''@;'; put 'put ''LENlKCkoKSksMiZhJiYoUmUoImNsck1vZGFsT3BlbiIsZi5tb2RhbEVuYWJsZWQpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhZi5mb3JjZVJlbG9hZCksU2UoMiksd3IoIiAiLGYuZGF0YS5tb2RhbFRpdGxlLCIgIiksU2UoMSksUmUoIm5nSWYiLGYuZGF0YS5z''@;'; put 'put ''YXNTZXJ2aWNlJiZmLmRhdGEuc2FzU2VydmljZS5sZW5ndGg+MCksU2UoMiksUmUoImlubmVySFRNTCIsZi5kYXRhLm1lc3NhZ2UsdmgpLFNlKDEpLFJlKCJuZ0lmIixudWxsIT09Zi5kYXRhLmRldGFpbHMpLFNlKDIpLFJlKCJuZ0lmIixmLnNob3dDb25maWd1cmF0b3JCdXR0b24oZi5kYXRh''@;'; put 'put ''LnNhc1NlcnZpY2UpKSxTZSgxKSxSZSgibmdJZiIsbnVsbCE9PWYuZGF0YS5kZXRhaWxzKSxTZSgxKSxSZSgibmdJZiIsKG51bGw9PWYuZGF0YS5kZXRhaWxzP251bGw6Zi5kYXRhLmRldGFpbHMuTE9HKSYmKG51bGw9PWYuZGF0YS5kZXRhaWxzfHxudWxsPT1mLmRhdGEuZGV0YWlscy5MT0c/''@;'; put 'put ''bnVsbDpmLmRhdGEuZGV0YWlscy5MT0cudHJpbSgpLmxlbmd0aCk+MCksU2UoMSksUmUoIm5nSWYiLCFmLmZvcmNlUmVsb2FkKSxTZSgxKSxSZSgibmdJZiIsZi5mb3JjZVJlbG9hZCkpfSxkZXBlbmRlbmNpZXM6WyRpLE1jLGtjLF9JXSxzdHlsZXM6WyIuY2xyLWFib3J0LW1vZGFsW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgICAgLm1vZGFsLXRpdGxlLXdyYXBwZXJ7d2lkdGg6MTAwJX0uY2xyLWFib3J0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1vZGFse3otaW5kZXg6MjA1MH0ubW9kYWwtdGl0bGVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5zYXNT''@;'; put 'put ''ZXJ2aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O21hcmdpbjowfS5tb2RhbC1mb290ZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci10b3A6MXB4IHNvbGlkICNkY2RjZGN9LnN5c3RleHRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde292ZXJmbG93OmF1dG87bWFyZ2luLXRvcDoyMHB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkICNkY2RjZGN9LnN5c3RleHRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowO3dvcmQtd3JhcDpicmVh''@;'; put 'put ''ay13b3JkfSJdfSksbH0pKCk7ZnVuY3Rpb24gdUJlKGwsYyl7MSZsJiYoV3IoMCkseWUoMSwiZGl2IiwyMCkoMiwiZGl2IiwyMSkoMywiZGl2IiwyMiksdG4oNCwiY2xyLWljb24iLDIzKSxDZSgpLHllKDUsImRpdiIsMjQpLFllKDYsIiBEYXRhIENvbnRyb2xsZXIgKEZSRUUgVGllcikgLSB0''@;'; put 'put ''byB1cGdyYWRlIGNvbnRhY3QgIiksdG4oNywiY29udGFjdC1saW5rIiwyNSksQ2UoKSgpKCkseWUoOCwiYSIsMjYpLFllKDksIlVwZGF0ZSBMaWNlbmNlIEtleSIpLENlKCksR3IoKSl9ZnVuY3Rpb24gY0JlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiZGl2IiwyMCko''@;'; put 'put ''MiwiZGl2IiwyMSkoMywiZGl2IiwyMiksdG4oNCwiY2xyLWljb24iLDIzKSxDZSgpLHllKDUsImRpdiIsMjQpLFllKDYsIiBEYXRhIENvbnRyb2xsZXIgKEZSRUUgVGllcikgLSBQcm9ibGVtIHdpdGggbGljZW5jZSAiKSxDZSgpKCkoKSx5ZSg3LCJhIiwyNyksRXQoImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe1V0KGEpO2NvbnN0IGQ9R2UoMyk7cmV0dXJuIFp0KGQubGljZW5jZVByb2JsZW1EZXRhaWxzKGQubGljZW5jZVByb2JsZW0udmFsdWUpKX0pLFllKDgsIk1vcmUgZGV0YWlscyIpLENlKCksR3IoKX19ZnVuY3Rpb24gZkJlKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwxOSksdHQoMSx1''@;'; put 'put ''QmUsMTAsMCwibmctY29udGFpbmVyIiwxKSx0dCgyLGNCZSw5LDAsIm5nLWNvbnRhaW5lciIsMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLFJlKCJuZ0lmIixudWxsPT09YS5saWNlbmNlUHJvYmxlbS52YWx1ZSksU2UoMSksUmUoIm5nSWYiLG51bGwhPT1hLmxpY2VuY2VQcm9i''@;'; put 'put ''bGVtLnZhbHVlKX19ZnVuY3Rpb24gZEJlKGwsYyl7MSZsJiYoeWUoMCwiYSIsMjYpLFllKDEsIlVwZGF0ZSBMaWNlbmNlIEtleSIpLENlKCkpfWZ1bmN0aW9uIGhCZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMjgpKDEsImRpdiIsMjApKDIsImRpdiIsMjEpKDMsImRpdiIsMjIpLHRuKDQs''@;'; put 'put ''ImNsci1pY29uIiwyMyksQ2UoKSx5ZSg1LCJkaXYiLDI0KSxZZSg2KSx0big3LCJjb250YWN0LWxpbmsiLDI1KSxZZSg4KSxDZSgpKCkoKSx0dCg5LGRCZSwyLDAsImEiLDI5KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoNiksJHUoIiBUaGlzIGxpY2Vuc2Uga2V5IHdpbGwgZXhwaXJl''@;'; put 'put ''IGluICIsYS5saWNlbnNlRXhwaXJpbmdEYXlzLCIgIiwxPT09YS5saWNlbnNlRXhwaXJpbmdEYXlzPyJkYXkiOiJkYXlzIiwiLiBQbGVhc2UgY29udGFjdCAiKSxTZSgyKSx3cigiIG9yIHlvdXIgcmVzZWxsZXIgdG8gYXJyYW5nZSBhZGRpdGlvbmFsIGxpY2VuY2UgZm9yIHNpdGUgaWQgIixh''@;'; put 'put ''LnN5c3NpdGUuZ2V0VmFsdWUoKSwiLiAiKSxTZSgxKSxSZSgibmdJZiIsIWEuZnJlZVRpZXJCYW5uZXIpfX1mdW5jdGlvbiBwQmUobCxjKXsxJmwmJih5ZSgwLCJhIiwyNiksWWUoMSwiVXBkYXRlIExpY2VuY2UgS2V5IiksQ2UoKSl9ZnVuY3Rpb24gbUJlKGwsYyl7aWYoMSZsJiYoeWUoMCwi''@;'; put 'put ''ZGl2IiwyOCkoMSwiZGl2IiwyMCkoMiwiZGl2IiwyMSkoMywiZGl2IiwyMiksdG4oNCwiY2xyLWljb24iLDIzKSxDZSgpLHllKDUsImRpdiIsMjQpLFllKDYsIiBUaGUgcmVnaXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgZXhjZWVkcyB0aGUgbGltaXQgc3BlY2lmaWVkIGZvciB5b3VyIGxpY2Vu''@;'; put 'put ''c2UuIFBsZWFzZSBjb250YWN0ICIpLHRuKDcsImNvbnRhY3QtbGluayIsMjUpLFllKDgpLENlKCkoKSgpLHR0KDkscEJlLDIsMCwiYSIsMjkpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSg4KSx3cigiIG9yIHlvdXIgcmVzZWxsZXIgdG8gYXJyYW5nZSBhZGRpdGlvbmFsIGxpY2VuY2Ug''@;'; put 'put ''Zm9yIHNpdGUgaWQgIixhLnN5c3NpdGUuZ2V0VmFsdWUoKSwiLiAiKSxTZSgxKSxSZSgibmdJZiIsIWEubGljZW5zZUV4cGlyaW5nRGF5cyYmIWEuZnJlZVRpZXJCYW5uZXIpfX1mdW5jdGlvbiBnQmUobCxjKXtpZigxJmwmJihXcigwKSx0dCgxLGZCZSwzLDIsImRpdiIsMTcpLHR0KDIsaEJl''@;'; put 'put ''LDEwLDQsImRpdiIsMTgpLHR0KDMsbUJlLDEwLDIsImRpdiIsMTgpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0lmIixhLmZyZWVUaWVyQmFubmVyJiYoIWEubGljZW5zZUV4cGlyaW5nRGF5c3x8YS5saWNlbnNlRXhwaXJpbmdEYXlzPDApKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''YS5saWNlbnNlRXhwaXJpbmdEYXlzJiYhYS5mcmVlVGllckJhbm5lciksU2UoMSksUmUoIm5nSWYiLGEuYXBwT3ZlckNhcGFjaXR5KX19ZnVuY3Rpb24gdkJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwzMCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChh''@;'; put 'put ''KSxadChHZSgpLnRvZ2dsZVNpZGViYXIoKSl9KSx0bigxLCJjbHItaWNvbiIsMzEpLENlKCl9fWNvbnN0IHlCZT1mdW5jdGlvbigpe3JldHVyblsiLyJdfTtmdW5jdGlvbiBiQmUobCxjKXsxJmwmJih5ZSgwLCJhIiwzMiksdG4oMSwiaW1nIiwzMykoMiwiaW1nIiwzNCksQ2UoKSksMiZsJiZS''@;'; put 'put ''ZSgicm91dGVyTGluayIsWGEoMSx5QmUpKX1mdW5jdGlvbiBfQmUobCxjKXsxJmwmJih5ZSgwLCJhIiksdG4oMSwic3BhbiIsMzUpLENlKCkpfWNvbnN0IEl1ZT1mdW5jdGlvbigpe3JldHVyblsiL3ZpZXciXX0sUnVlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvaG9tZSJdfSx3Wj1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVyblsiL3N1Ym1pdHRlZCJdfTtmdW5jdGlvbiB3QmUobCxjKXsxJmwmJih5ZSgwLCJjbHItZHJvcGRvd24tbWVudSIsNDMpKDEsImEiLDQ0KSxZZSgyLCJWSUVXIiksQ2UoKSx5ZSgzLCJhIiw0NCksWWUoNCwiRURJVCIpLENlKCkseWUoNSwiYSIsNDQpLFllKDYsIlJFVklFVyIpLENl''@;'; put 'put ''KCkoKSksMiZsJiYoU2UoMSksUmUoInJvdXRlckxpbmsiLFhhKDMsSXVlKSksU2UoMiksUmUoInJvdXRlckxpbmsiLFhhKDQsUnVlKSksU2UoMiksUmUoInJvdXRlckxpbmsiLFhhKDUsd1opKSl9ZnVuY3Rpb24gQ0JlKGwsYyl7aWYoMSZsJiYoV3IoMCkseWUoMSwiZGl2IiwzNikoMiwiY2xy''@;'; put 'put ''LWRyb3Bkb3duIikoMywiYnV0dG9uIiwzNyksWWUoNCwiIE1lbnUgIiksQ2UoKSx0dCg1LHdCZSw3LDYsImNsci1kcm9wZG93bi1tZW51IiwzOCksQ2UoKSgpLHllKDYsImRpdiIsMzkpKDcsImEiLDQwKSxZZSg4LCJWSUVXIiksQ2UoKSx5ZSg5LCJhIiw0MSksWWUoMTAsIkVESVQiKSxDZSgp''@;'; put 'put ''LHllKDExLCJhIiw0MiksWWUoMTIsIlJFVklFVyIpLENlKCkoKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSg3KSxSZSgicm91dGVyTGluayIsWGEoNyxJdWUpKSxTZSgyKSxncigiYWN0aXZlIixhLnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXRvciIpfHxhLnJvdXRlci51cmwuaW5jbHVk''@;'; put 'put ''ZXMoImVkaXQtcmVjb3JkIil8fGEucm91dGVyLnVybC5pbmNsdWRlcygiaG9tZSIpKSxSZSgicm91dGVyTGluayIsWGEoOCxSdWUpKSxTZSgyKSxncigiYWN0aXZlIixhLnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHxhLnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8''@;'; put 'put ''YS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0b3J5IikpLFJlKCJyb3V0ZXJMaW5rIixYYSg5LHdaKSl9fWNvbnN0IFNCZT1mdW5jdGlvbigpe3JldHVyblsiL2FwcHJvdmUiXX0sTUJlPWZ1bmN0aW9uKCl7cmV0dXJuWyIvaGlzdG9yeSJdfTtmdW5jdGlvbiBrQmUobCxjKXsxJmwmJih5ZSgw''@;'; put 'put ''LCJuYXYiLDQ1KSgxLCJ1bCIsNDYpKDIsImxpIiw0NykoMywiYSIsNDApLFllKDQsIlNVQk1JVCIpLENlKCkoKSx5ZSg1LCJsaSIsNDcpKDYsImEiLDQwKSxZZSg3LCJBUFBST1ZFIiksQ2UoKSgpLHllKDgsImxpIiw0NykoOSwiYSIsNDApLFllKDEwLCJISVNUT1JZIiksQ2UoKSgpKCkoKSks''@;'; put 'put ''MiZsJiYoU2UoMyksUmUoInJvdXRlckxpbmsiLFhhKDMsd1opKSxTZSgzKSxSZSgicm91dGVyTGluayIsWGEoNCxTQmUpKSxTZSgzKSxSZSgicm91dGVyTGluayIsWGEoNSxNQmUpKSl9ZnVuY3Rpb24gRUJlKGwsYyl7MSZsJiZ0bigwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24geEJlKGwsYyl7''@;'; put 'put ''MSZsJiZ0bigwLCJyb3V0ZXItb3V0bGV0Iil9ZnVuY3Rpb24gQUJlKGwsYyl7MSZsJiZ0bigwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24gVEJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYXBwLWluZm8tbW9kYWwiLDQ4KSxFdCgib25Db25maXJtTW9kYWxDbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoKS5jbG9zZUFib3J0TW9kYWwoaC5pZCkpfSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSgpO1JlKCJkYXRhIixhKSgiZm9yY2VSZWxvYWQiLCFmLnN0YXJ0dXBEYXRhTG9hZGVkJiYxPT09Zi5z''@;'; put 'put ''YXNqc0Fib3J0cy5sZW5ndGgpfX1mdW5jdGlvbiBPQmUobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDUyKSx0bigxLCJkaXYiLDUzKSgyLCJkaXYiLDU0KSgzLCJkaXYiLDU1KSxDZSgpKX1mdW5jdGlvbiBEQmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDQ5KSx0bigxLCJpbWciLDUwKSx0dCgy''@;'; put 'put ''LE9CZSw0LDAsImRpdiIsNTEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLFJlKCJuZ0lmIixudWxsPT09YS5hcHBBY3RpdmUpfX1sZXQgSUJlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyxYLGFlKXt0aGlzLmFwcFNlcnZpY2U9YSx0aGlzLmxpY2VuY2VT''@;'; put 'put ''ZXJ2aWNlPWYsdGhpcy5yb3V0ZXI9ZCx0aGlzLnJvdXRlPWgsdGhpcy5sb2NhdGlvbj1tLHRoaXMuZXZlbnRTZXJ2aWNlPV8sdGhpcy5hcHBTdG9yZVNlcnZpY2U9Tyx0aGlzLmNkcj1YLHRoaXMuZWxlbWVudFJlZj1hZSx0aGlzLmxpY2Vuc2VFeHBpcmluZ0RheXM9bnVsbCx0aGlzLnNhc2pz''@;'; put 'put ''QWJvcnRzPVtdLHRoaXMuZWRpdG9yQWN0aXZlPSExLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSx0aGlzLmZyZWVUaWVyQmFubmVyPXRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllci52YWx1ZSx0aGlzLmxpY2VuY2VQcm9ibGVtPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVByb2Js''@;'; put 'put ''ZW0sdGhpcy5hcHBPdmVyQ2FwYWNpdHk9ITEsdGhpcy5hcHBBY3RpdmU9bnVsbCx0aGlzLnJlcXVlc3RzTW9kYWw9ITEsdGhpcy5zaG93UmVnaXN0cmF0aW9uPSEwLHRoaXMuc3RhcnR1cERhdGFMb2FkZWQ9ITEsdGhpcy5kZW1vTGltaXROb3RpY2U9e29wZW46ITEsZmVhdHVyZU5hbWU6IiJ9''@;'; put 'put ''LHRoaXMuc3lzc2l0ZT10aGlzLmFwcFNlcnZpY2Uuc3lzc2l0ZSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLnBhcnNlRGNBZGFwdGVyU2V0dGluZ3MoKSx3aW5kb3cuYXBwaW5mbz0oKT0+e2NvbnN0IHBlPXRoaXMubGljZW5jZVNlcnZp''@;'; put 'put ''Y2UuZ2V0TGljZW5zZUtleURhdGEoKTtpZihwZSl7Y29uc3QgYmU9S28ocGUudmFsaWRfdW50aWwsIllZWVktTU0tREQiKS5zdGFydE9mKCJkYXkiKSx4ZT1LbygpLnN0YXJ0T2YoImRheSIpLFZlPWJlLmRpZmYoeGUsImRheXMiKTtwZS52YWxpZF91bnRpbCs9YCAoJHtWZX0gJHsxPT09VmU/''@;'; put 'put ''ImRheSI6ImRheXMifSByZW1haW5pbmcpYCxpc05hTihWZSkmJihwZS52YWxpZF91bnRpbD0iVW5saW1pdGVkIil9Y29uc29sZS50YWJsZSh7IkFkYXB0ZXIgdmVyc2lvbiI6IjQuMy42IiwiQXBwIHZlcnNpb24iOiJ2Ni4xLjAiLnJlcGxhY2UoInYiLCIiKSwiQnVpbGQgdGltZXN0YW1wIjpL''@;'; put 'put ''byhwYXJzZUludCgiMTY5MDI5ODExNzU0OSIpKS5mb3JtYXQoIkRELU1NTS1ZWVlZIEhIOk1NIiksIi4uLiI6Ii4uLiJ9KX0sdGhpcy5zdWJzY3JpYmVUb0xpY2Vuc2VFdmVudHMoKSx0aGlzLmNvbW1pdFZlcj0idjYuMS4wIi5yZXBsYWNlKCJ2IiwiIikrIi5nYmJhMmE2YyIsZC5ldmVudHMu''@;'; put 'put ''c3Vic2NyaWJlKHBlPT57aWYodGhpcy5yb3V0ZVVybD10aGlzLnJvdXRlci51cmwsdHlwZW9mIHRoaXMucm91dGVVcmw8InUiJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD40KXtsZXQgYmU9dGhpcy5yb3V0ZVVybC5zcGxpdCgiLyIpWzFdOyJlZGl0b3IiPT09YmU/KHRoaXMuZXJyVG9wPSEwLHRo''@;'; put 'put ''aXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6ImhvbWUiPT09YmU/KHRoaXMuZXJyVG9wPSExLHRoaXMuZWRpdG9yQWN0aXZlPSEwLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSk6KHRoaXMuZXJyVG9wPSEwLHRoaXMuZWRpdG9yQWN0aXZlPSExKSxKbi5yb290UGFyYW09''@;'; put 'put ''YmV9dHlwZW9mIHRoaXMucm91dGVVcmw8InUiJiZ0aGlzLnJvdXRlVXJsLmxlbmd0aD42JiYodGhpcy5hcHByb3ZlQWN0aXZlPSEhdGhpcy5yb3V0ZVVybC5pbmNsdWRlcygiYXBwcm92ZURldCIpfHwhIXRoaXMucm91dGVVcmwuaW5jbHVkZXMoInRvYXBwcm92ZSIpKX0pLHRoaXMuc3Vic2Ny''@;'; put 'put ''aWJlVG9TaG93QWJvcnRNb2RhbCgpLHRoaXMuc3Vic2NyaWJlVG9SZXF1ZXN0c01vZGFsKCksdGhpcy5zdWJzY3JpYmVUb1N0YXJ0dXBEYXRhKCksdGhpcy5zdWJzY3JpYmVUb0FwcEFjdGl2ZSgpLHRoaXMuc3Vic2NyaWJlVG9EZW1vTGltaXRNb2RhbCgpLHdpbmRvdy5mcmFtZUVsZW1lbnQm''@;'; put 'put ''Jih3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFsbG93ZnVsbHNjcmVlbiIsIiIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0''@;'; put 'put ''QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWFyZ2luaGVpZ2h0IiwiMCIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXJnaW53aWR0aCIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0''@;'; put 'put ''ZSgic2Nyb2xsaW5nIiwiYXV0byIpLHdpbmRvdy5mb2N1cygpKX1wYXJzZURjQWRhcHRlclNldHRpbmdzKCl7Y29uc3QgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzYXNqcyIpO2lmKCFhKXJldHVybiB0aGlzLmxpY2VuY2VTZXJ2aWNlLmRlYWN0aXZhdGVBcHAoKSx2b2lkIHNldFRpbWVv''@;'; put 'put ''dXQoKCk9Pnt0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJQbGVhc2UgbWFrZSBzdXJlICdTQVNKUycgdGFnIHdpdGggY29uZmlnIGF0dHJpYnV0ZXMgaXMgYWRkZWQgdG8gaW5kZXguaHRtbCIsbnVsbCwiU0FTanMgQ29uZmlnIG5vdCBmb3VuZCIpfSk7Y29uc3QgZj1o''@;'; put 'put ''PT5hLmdldEF0dHJpYnV0ZShoKXx8dm9pZCAwLGQ9e3NlcnZlclVybDpmKCJzZXJ2ZXJVcmwiKXx8IiIsYXBwTG9jOmYoImFwcExvYyIpfHwiIixzZXJ2ZXJUeXBlOmYoInNlcnZlclR5cGUiKSxsb2dpbk1lY2hhbmlzbTpmKCJsb2dpbk1lY2hhbmlzbSIpfHwiIixhZG1pbkdyb3VwOmYoImFk''@;'; put 'put ''bWluR3JvdXAiKXx8IiIsZGNQYXRoOmYoImRjUGF0aCIpfHwiIixkZWJ1ZzoidHJ1ZSI9PT1mKCJkZWJ1ZyIpfHwhMSx1c2VDb21wdXRlQXBpOnRoaXMucGFyc2VDb21wdXRlQXBpKGYoInVzZUNvbXB1dGVBcGkiKSksY29udGV4dE5hbWU6ZigiY29udGV4dE5hbWUiKXx8IiIsaG90TGljZW5j''@;'; put 'put ''ZUtleTpmKCJob3RMaWNlbmNlS2V5Iil8fCIifTt0aGlzLmRjQWRhcHRlclNldHRpbmdzPWQsdGhpcy5hcHBTdG9yZVNlcnZpY2Uuc2V0RGNBZGFwdGVyU2V0dGluZ3MoZCksdGhpcy5hcHBTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9bGljZW5jZVByb2JsZW1EZXRhaWxzKGEpe3RoaXMucm91''@;'; put 'put ''dGVyLm5hdmlnYXRlQnlVcmwoYSl9cGFyc2VDb21wdXRlQXBpKGEpe3JldHVybiB2b2lkIDA9PT1hfHwidW5kZWZpbmVkIj09PWF8fCJudWxsIj09PWE/bnVsbDoidHJ1ZSI9PT1hfHwhMX1zdWJzY3JpYmVUb0RlbW9MaW1pdE1vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25EZW1vTGltaXRN''@;'; put 'put ''b2RhbFNob3cuc3Vic2NyaWJlKGE9Pnt0aGlzLmRlbW9MaW1pdE5vdGljZT17b3BlbjohMCxmZWF0dXJlTmFtZTphfX0pfXN1YnNjcmliZVRvTGljZW5zZUV2ZW50cygpe3RoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllci5zdWJzY3JpYmUoYT0+e3RoaXMuZnJlZVRpZXJCYW5uZXI9''@;'; put 'put ''YX0pLHRoaXMubGljZW5jZVNlcnZpY2UubGljZW5zZUV4cGlyZXNJbkRheXMuc3Vic2NyaWJlKGE9PnthJiZhPD0xNCYmKHRoaXMubGljZW5zZUV4cGlyaW5nRGF5cz1hKX0pLHRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBPdmVyQ2FwYWNpdHkuc3Vic2NyaWJlKGE9Pnt0aGlzLmFwcE92ZXJD''@;'; put 'put ''YXBhY2l0eT1hfSl9c3Vic2NyaWJlVG9BcHBBY3RpdmUoKXt0aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnN1YnNjcmliZShhPT57dGhpcy5hcHBBY3RpdmU9YX0pfXN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vblNob3dBYm9ydE1vZGFs''@;'; put 'put ''LnN1YnNjcmliZShhPT57YS5pZD10aGlzLnNhc2pzQWJvcnRzLmxlbmd0aCsxLHRoaXMuc2FzanNBYm9ydHMucHVzaChhKSx0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCl9KX1zdWJzY3JpYmVUb1N0YXJ0dXBEYXRhKCl7dGhpcy5ldmVudFNlcnZpY2Uub25TdGFydHVwRGF0YUxvYWRlZC5zdWJz''@;'; put 'put ''Y3JpYmUoKCk9Pnt0aGlzLnN0YXJ0dXBEYXRhTG9hZGVkPSEwfSl9c3Vic2NyaWJlVG9SZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25SZXF1ZXN0c01vZGFsT3Blbi5zdWJzY3JpYmUoYT0+e3RoaXMucmVxdWVzdHNNb2RhbD0hMH0pfWNsb3NlQWJvcnRNb2RhbChhKXtsZXQg''@;'; put 'put ''Zj10aGlzLnNhc2pzQWJvcnRzLmZpbmRJbmRleChkPT5kLmlkPT09YSk7dGhpcy5zYXNqc0Fib3J0cy5zcGxpY2UoZiwxKX10b2dnbGVTaWRlYmFyKCl7dGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlU2lkZWJhcigpfWlzTWFpblJvdXRlKGEpe3JldHVybiB0aGlzLnJvdXRlci51cmwuaW5jbHVk''@;'; put 'put ''ZXMoYSl9b3BlbkxpY2VuY2luZ1BhZ2UoKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvbGljZW5zaW5nL3VwZGF0ZSIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh3RCkscnQoYjEpLHJ0KExhKSxydCh0dSkscnQoZ2QpLHJ0KFJzKSxy''@;'; put 'put ''dChJdikscnQoVWwpLHJ0KFZpKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbIm15LWFwcCJdXSxkZWNsczoyOSx2YXJzOjE3LGNvbnN0czpbWzEsIm1haW4tY29udGFpbmVyIl0sWzQsIm5nSWYiXSxbMSwiYXBwLWhlYWRlciJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNz''@;'; put 'put ''IiwiY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgbWwtMTAgZC1mbGV4IGNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImxvZ28iLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJocmVm''@;'; put 'put ''IiwiIyIsImNsYXNzIiwibmF2LWxpbmsiLDMsInJvdXRlckxpbmsiLDQsIm5nSWYiXSxbMSwiaGVhZGVyLWFjdGlvbnMiXSxbMSwibmF2LXRleHQiXSxbMSwiZHJvcGRvd24iXSxbImNsYXNzIiwic3VibmF2Iiw0LCJuZ0lmIl0sWzMsIm9wZW5lZCIsIm9wZW5lZENoYW5nZSJdLFszLCJkYXRh''@;'; put 'put ''IiwiZm9yY2VSZWxvYWQiLCJvbkNvbmZpcm1Nb2RhbENsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImFwcERyYWdOZHJvcCIsIiIsMSwicG9zaXRpb24tcmVsYXRpdmUiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbE9wZW5D''@;'; put 'put ''aGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbInNpemUiLCIyMCIsInNoYXBlIiwibG9jayJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjbGFzcyIsImFwcC1sb2FkaW5nIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFsZXJ0IGFsZXJ0LWFwcC1sZXZlbCBhbGVydC13YXJuaW5nIiwiaWQiLCJkZW1vLWJh''@;'; put 'put ''bm5lciIsInJvbGUiLCJhbGVydCIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbGVydCBhbGVydC1hcHAtbGV2ZWwgYWxlcnQtZGFuZ2VyIiwiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsNCwibmdJZiJdLFsiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsMSwiYWxlcnQi''@;'; put 'put ''LCJhbGVydC1hcHAtbGV2ZWwiLCJhbGVydC13YXJuaW5nIl0sWzEsImFsZXJ0LWl0ZW1zIl0sWzEsImFsZXJ0LWl0ZW0iLCJzdGF0aWMiXSxbMSwiYWxlcnQtaWNvbi13cmFwcGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLDEsIm10LTIiXSxbMSwiYWxlcnQtdGV4dCJdLFsiY2xh''@;'; put 'put ''c3NlcyIsImNvbG9yLXdoaXRlIl0sWyJyb3V0ZXJMaW5rIiwiL2xpY2Vuc2luZy91cGRhdGUiLDEsInVwZGF0ZS1rZXkiXSxbMSwidXBkYXRlLWtleSIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsiaWQiLCJkZW1vLWJhbm5lciIsInJvbGUiLCJhbGVydCIsMSwiYWxlcnQiLCJhbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwiLCJhbGVydC1kYW5nZXIiXSxbInJvdXRlckxpbmsiLCIvbGljZW5zaW5nL3VwZGF0ZSIsImNsYXNzIiwidXBkYXRlLWtleSIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY3Vyc29yLXBvaW50ZXIiLCJzZWxlY3Qtbm9uZSIsIm1sLTEwIiwiZC1mbGV4IiwiY2xy''@;'; put 'put ''LWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayJdLFsic2l6ZSIsIjI0Iiwic2hhcGUiLCJ0cmVlLXZpZXciXSxbImhyZWYiLCIjIiwxLCJuYXYtbGluayIsMywicm91dGVyTGluayJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19Q''@;'; put 'put ''Uk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYy1sb2dvLXN2ZyIsMSwid2l0aG91dC10ZXh0IiwiZC1ibG9jayIsImQtbWQtbm9uZSJdLFsic3JjIiwiL1NBU1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2lt''@;'; put 'put ''YWdlcy9kYXRhY29udHJvbGxlci1zdmciLDEsIndpdGgtdGV4dCIsImQtbm9uZSIsImQtbWQtYmxvY2siXSxbMSwiY2xyLWljb24iLCJoZWFkZXItbG9nbyIsIm1sLTEwIl0sWzEsImhlYWRlci1uYXYiLCJkLWZsZXgiLCJkLXNtLW5vbmUiXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsImFy''@;'; put 'put ''aWEtbGFiZWwiLCJ0b2dnbGUgc2V0dGluZ3MgbWVudSIsMSwibmF2LWljb24iLCJjb2xvci13aGl0ZS1pIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0Iiw0LCJjbHJJZk9wZW4iXSxbMSwiaGVhZGVyLW5hdiIsImQtbm9uZSIsImQtc20tZmxleCJdLFsicm91dGVyTGlua0FjdGl2ZSIs''@;'; put 'put ''ImFjdGl2ZSIsMSwibmF2LWxpbmsiLCJuYXYtdGV4dCIsMywicm91dGVyTGluayJdLFsxLCJuYXYtbGluayIsIm5hdi10ZXh0IiwzLCJyb3V0ZXJMaW5rIl0sWzEsIm5hdi1saW5rIiwibmF2LXRleHQiLCJjdXJzb3ItcG9pbnRlciIsMywicm91dGVyTGluayJdLFsiY2xyUG9zaXRpb24iLCJi''@;'; put 'put ''b3R0b20tbGVmdCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInN1Ym5hdiJdLFsxLCJuYXYiXSxbMSwibmF2LWl0ZW0iXSxbMywiZGF0YSIsImZvcmNlUmVsb2FkIiwib25Db25maXJtTW9kYWxDbGljayJdLFsxLCJhcHAtbG9hZGluZyJdLFsic3JjIiwiL1NB''@;'; put 'put ''U1N0b3JlZFByb2Nlc3MvP19QUk9HUkFNPXBaS2Q2Rjk1akVDdlJRbE4wTENmZEE9PS93ZWI5L2ltYWdlcy9kYXRhY29udHJvbGxlci1zdmciLDEsImxvYWRpbmctbG9nbyJdLFsiY2xhc3MiLCJzbGlkZXIiLDQsIm5nSWYiXSxbMSwic2xpZGVyIl0sWzEsImxpbmUiXSxbMSwic3VibGluZSIs''@;'; put 'put ''ImluYyJdLFsxLCJzdWJsaW5lIiwiZGVjIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSx0dCgxLGdCZSw0LDMsIm5nLWNvbnRhaW5lciIsMSkseWUoMiwiaGVhZGVyIiwyKSx0dCgzLHZCZSwyLDAsImRpdiIsMykseWUoNCwiZGl2Iiw0KSx0dCg1LGJCZSwz''@;'; put 'put ''LDIsImEiLDUpLHR0KDYsX0JlLDIsMCwiYSIsMSksQ2UoKSx0dCg3LENCZSwxMywxMCwibmctY29udGFpbmVyIiwxKSx5ZSg4LCJkaXYiLDYpKDksImRpdiIsNyksdG4oMTAsImFwcC1sb2FkaW5nLWluZGljYXRvciIpLENlKCkseWUoMTEsImRpdiIsOCksdG4oMTIsImFwcC11c2VyLW5hdi1k''@;'; put 'put ''cm9wZG93biIpLENlKCkoKSgpLHR0KDEzLGtCZSwxMSw2LCJuYXYiLDkpLHR0KDE0LEVCZSwxLDAsImFwcC1hbGVydHMiLDEpLHllKDE1LCJhcHAtcmVxdWVzdHMtbW9kYWwiLDEwKSxFdCgib3BlbmVkQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5yZXF1ZXN0c01vZGFsPWh9KSxDZSgp''@;'; put 'put ''LHR0KDE2LHhCZSwxLDAsInJvdXRlci1vdXRsZXQiLDEpLHRuKDE3LCJhcHAtbG9naW4iKSx0dCgxOCxBQmUsMSwwLCJhcHAtYWxlcnRzIiwxKSx0dCgxOSxUQmUsMSwyLCJhcHAtaW5mby1tb2RhbCIsMTEpLHllKDIwLCJjbHItbW9kYWwiLDEyKSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihoKXtyZXR1cm4gZi5kZW1vTGltaXROb3RpY2Uub3Blbj1ofSkseWUoMjEsImgzIiwxMyksWWUoMjIpLHRuKDIzLCJjbHItaWNvbiIsMTQpLENlKCkseWUoMjQsImRpdiIsMTUpLFllKDI1LCIgQ29udGFjdCAiKSx0bigyNiwiY29udGFjdC1saW5rIiksWWUoMjcpLENlKCkoKSgp''@;'; put 'put ''LHR0KDI4LERCZSwzLDEsImRpdiIsMTYpKSwyJmEmJihTZSgxKSxSZSgibmdJZiIsIWYucm91dGVyLnVybC5pbmNsdWRlcygibGljZW5zaW5nIikpLFNlKDIpLFJlKCJuZ0lmIixmLmlzTWFpblJvdXRlKCJ2aWV3Iil8fGYuaXNNYWluUm91dGUoImhvbWUiKSYmIWYucm91dGVyLnVybC5pbmNs''@;'; put 'put ''dWRlcygibGljZW5zaW5nIikpLFNlKDIpLFJlKCJuZ0lmIiwhZi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKSksU2UoMSksUmUoIm5nSWYiLGYucm91dGVyLnVybC5pbmNsdWRlcygiZGVwbG95IikpLFNlKDEpLFJlKCJuZ0lmIiwhZi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3ki''@;'; put 'put ''KSYmIWYucm91dGVyLnVybC5pbmNsdWRlcygibGljZW5zaW5nIikpLFNlKDYpLFJlKCJuZ0lmIixmLnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHxmLnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8Zi5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0b3J5IikpLFNlKDEp''@;'; put 'put ''LFJlKCJuZ0lmIiwhZi5lcnJUb3ApLFNlKDEpLFJlKCJvcGVuZWQiLGYucmVxdWVzdHNNb2RhbCksU2UoMSksUmUoIm5nSWYiLGYuc3RhcnR1cERhdGFMb2FkZWQpLFNlKDIpLFJlKCJuZ0lmIixmLmVyclRvcCksU2UoMSksUmUoIm5nRm9yT2YiLGYuc2FzanNBYm9ydHMpLFNlKDEpLFJlKCJj''@;'; put 'put ''bHJNb2RhbE9wZW4iLGYuZGVtb0xpbWl0Tm90aWNlLm9wZW4pKCJjbHJNb2RhbENsb3NhYmxlIiwhMCkoImNsck1vZGFsU2l6ZSIsImxnIiksU2UoMiksd3IoIiBMb2NrZWQgRmVhdHVyZSAoIixmLmRlbW9MaW1pdE5vdGljZS5mZWF0dXJlTmFtZSwiKSAiKSxTZSg1KSx3cigiIHdpdGggeW91''@;'; put 'put ''ciBzaXRlIGlkICgiLGYuc3lzc2l0ZS52YWx1ZSwiKSB0byBhY3RpdmF0ZSEgIiksU2UoMSksUmUoIm5nSWYiLCFmLnN0YXJ0dXBEYXRhTG9hZGVkKSl9LGRlcGVuZGVuY2llczpbUmEsJGkseHYsSTAsVEMsZ1ZlLHZWZSxrVmUsQVZlLGJJLHdTLFJsLE1jLGtjLHhkLGEzLG81LGE1LHg3LF9J''@;'; put 'put ''LFFWZSxzQmVdLHN0eWxlczpbImFwcC1yZXF1ZXN0cy1tb2RhbFtfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDoxMDAwMH1oZWFkZXIuYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudDtjb2xvcjojZmZmfS5sb2dvW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIGltZy53aXRob3V0LXRleHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHh9LmxvZ29bX25nY29udGVudC0lQ09NUCVdICAgaW1nLndpdGgtdGV4dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjEwcHh9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO21hcmdpbi1sZWZ0OjEwcHh9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRl''@;'; put 'put ''cjtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7aGVpZ2h0OjEwMHZoIWltcG9ydGFudDt3aWR0aDoxMDB2dyFpbXBvcnRhbnQ7ei1pbmRleDoxMDU7YmFja2dyb3VuZDpyZ2JhKDMzLDMzLDMzLC41KX0uZGVtby1leHBpcmVkLW5vdGljZVtfbmdjb250ZW50LSVDT01QJV0gICAuZXhwaXJl''@;'; put 'put ''ZC1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MzBweDt6LWluZGV4OjExMDtiYWNrZ3JvdW5kOiMzMTQzNTF9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQt''@;'; put 'put ''ZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlMGUwZTA7Zm9udC1zaXplOjE2cHh9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtZGV0YWlsc1tfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAuZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLm1haWx0b1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzhkYzUzZX0ubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnVwZGF0ZS1rZXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMTBweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjE0OTAxOTYwNzgpfS5hbGVydC1pY29uLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm5hdi10ZXh0W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXttYXJnaW4tcmlnaHQ6MjBweH0uc2lkZWJhci10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1sZWZ0OjEwcHh9LnNpZGViYXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1p''@;'; put 'put ''Y29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjt3aWR0aDozMHB4O2hlaWdodDozMHB4fWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyLWFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjp1''@;'; put 'put ''bnNldH1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmYWZhZmE7b3BhY2l0eTouOTtsaW5lLWhlaWdodDoxLjQ1cmVtfWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubmF2''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjJzIGVhc2UtaW59aGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntjb2xvcjojZmFmYWZhO29wYWNpdHk6MX1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm5hdltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmsuYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXtiYWNrZ3JvdW5kOiM2MTcxN0Q7b3BhY2l0eToxO2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IHRyYW5zcGFyZW50fWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtaXRlbVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjFy''@;'; put 'put ''ZW19Lm5vdGZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzE2YTU3YTtjb2xvcjojZmZmY2ZjO2ZvbnQtc2l6ZToxMnB4fS5idG4uYnRuLXN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjJhNDIwO2JhY2tncm91bmQtY29sb3I6IzE2YTU3YSFpbXBvcnRh''@;'; put 'put ''bnQ7Y29sb3I6I2ZmZn0uYnRuLmJ0bi1zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyYWRkMzk7Y29sb3I6I2ZmZn0udG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiM2MTcxN2Q7YmFja2dyb3VuZC1jb2xvcjojNjE3MTdkO3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9''@;'; put 'put ''Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjEwMHZoIWltcG9ydGFudH0ubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50LWFyZWFbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3BhZGRpbmc6MHJlbSAxcmVtIDFyZW19LmNvbnRlbnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt6LWluZGV4OjAhaW1wb3J0YW50fS5uYXZCYXJSZXNwW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNrZ3JvdW5k''@;'; put 'put ''OiM0OTVBNjc7Y29sb3I6I2ZmZn1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7Lm5hdkJhclJlc3BbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOiM0OTVBNjc7Y29sb3I6I2ZmZn0ubWFpbi1j''@;'; put 'put ''b250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYtbGV2ZWwt''@;'; put 'put ''MVtfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250ZW50LSVDT01QJV0gICAubmF2''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIC41cmVtIDAgMXJlbTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6LjEyNXJlbSAwIDAg''@;'; put 'put ''LjEyNXJlbTtjb2xvcjojOTVjODRifS5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNhcmQtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMCAwfS5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudC1j''@;'; put 'put ''b250YWluZXJbX25nY29udGVudC1jMF1bX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowcmVtfX0gIC5odEludmFsaWR7YmFja2dyb3VuZDpibGFjayFpbXBvcnRhbnR9QG1lZGlhIHNjcmVlbiBhbmQg''@;'; put 'put ''KG1heC13aWR0aDogNDgwcHgpeyAgaDJ7Zm9udC1zaXplOi43cmVtIWltcG9ydGFudH0gIGgze2ZvbnQtc2l6ZTouN3JlbX19ICAubmF2LWxpbmt7cGFkZGluZzowcmVtIDFyZW19ICAuYnRuLXByaW1hcnkgLmJ0biwgICAuYnRuLmJ0bi1wcmltYXJ5e2JvcmRlci1jb2xvcjojMzE0MzUxO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6IzMxNDM1MTtjb2xvcjojZmZmfSAgLmJ0bntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2JvcmRlcjoxcHggc29saWQ7bWluLXdpZHRoOjNyZW07''@;'; put 'put ''bWF4LXdpZHRoOjE1cmVtO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuNXJlbTtsZXR0ZXIt''@;'; put 'put ''c3BhY2luZzouMTJlbTtmb250LXNpemU6LjVyZW07Zm9udC13ZWlnaHQ6NTAwO2hlaWdodDoxLjVyZW07cGFkZGluZzowIC41cmVtO2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzMxNDM1MX0gIC5idG4uYnRuLW91dGxpbmV7Ym9yZGVy''@;'; put 'put ''LWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzE0MzUxfSAgLmJ0bi5idG4tb3V0bGluZTpob3Zlcntib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiM0OTVhNjc7Y29sb3I6I2ZmZn0gIC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGlu''@;'; put 'put ''ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWE3MWY7Y29sb3I6I2ZmZjdmNztib3JkZXItY29sb3I6IzlhOTY5Nn0gIC5odE1vYmlsZUVkaXRvckNvbnRhaW5lciAuaW5wdXRzIHRleHRhcmVhe2ZvbnQtc2l6ZToxM3B0O2JvcmRlcjoycHggc29saWQgIzQ4NTk2Nztib3JkZXItcmFkaXVz''@;'; put 'put ''OjRweDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtib3gtc2hhZG93Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCAwIDAgMTRweDtwYWRkaW5nOjdwdDt3aWR0aDoyOTBweH0gIC5odE1vYmlsZUVkaXRvckNvbnRhaW5lciAucG9zaXRpb25Db250cm9sc3t3aWR0aDozMzNweDtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZTtyaWdodDo1cHQ7dG9wOjUwcHg7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9ICAuaHRNb2JpbGVFZGl0b3JDb250YWluZXIuYWN0aXZle2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEyMHB4O3dpZHRoOjM1MHB4fSAgLmhhbmRzb250YWJs''@;'; put 'put ''ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czozcHh9ICAuaGFuZHNvbnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0gIC5odF9jbG9uZV9sZWZ0IHRoe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjYztib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30gIC5o''@;'; put 'put ''dF9jbG9uZV90b3AgdGh7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY30gIC5odF9jbG9uZV90b3BfbGVmdF9jb3JuZXIgdGh7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjfSAgLmh0X21h''@;'; put 'put ''c3RlciB0cjpudGgtb2YtdHlwZShvZGQpPnRke2JhY2tncm91bmQtY29sb3I6I2YzZjNmMztib3JkZXI6MXB4IHNvbGlkIHJnYigxOTcsMTk3LDE5Nyk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiKDIzNiwyMzUsMjM1KX0gIC5odF9tYXN0ZXIgdHI6bnRoLW9mLXR5cGUoZXZlbik+dGR7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiKDE5NywxOTcsMTk3KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2IoMjM2LDIzNSwyMzUpfSAgLnd0Qm9yZGVye2JhY2tncm91bmQtY29sb3I6IzQ5NWE2NyFpbXBvcnRhbnR9ICAuaGFuZHNvbnRhYmxlIC5oYW5k''@;'; put 'put ''c29udGFibGUuaHRfY2xvbmVfdG9wIC53dEhpZGVye3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjA7Ym9yZGVyLWJvdHRvbTozcHggc29saWQgI2Q2ZDNkM30gIC5jb250ZW50LWNvbnRhaW5lcntiYWNrZ3JvdW5kOiNGNUY2RkZ9ICAuY2FyZHtib3gtc2hhZG93OjAgLjEyNXJlbSAjZDdk''@;'; put 'put ''N2Q3O2JvcmRlci1yYWRpdXM6MHJlbTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fSAgLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVu''@;'; put 'put ''dDtib3JkZXItcmFkaXVzOi4xMjVyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM1NjU2NTY7bWFyZ2luOjA7bWFyZ2luLXRvcDoxcmVtO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCU7cGFkZGluZzoxNXB4IDE1cHggNTBweH0gIC5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1m''@;'; put 'put ''b290LCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290e2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbTtsaW5lLWhlaWdodDpjYWxjKDEuNXJlbSAtIDNweCk7Zm9udC1zaXplOi40NTgzM3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNm''@;'; put 'put ''ZmY7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjB9ICAuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290ZXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTVweDt0b3A6MnB4fSAgLmRhdGFn''@;'; put 'put ''cmlkLWNvbXBhY3QgLmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY30gIC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29s''@;'; put 'put ''dXRlO3RvcDoxMDAlO2xlZnQ6MDttYXJnaW4tdG9wOi4wODMzMzNyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNmNWY2ZmY7cGFkZGluZzouNXJlbSAwO2JvcmRlcjoxcHggc29saWQgI2NjYztib3gtc2hhZG93OjAgMXB4IC4xMjVyZW0gIzczNzM3''@;'; put 'put ''MzQwO21pbi13aWR0aDo1cmVtO21heC13aWR0aDoxNXJlbTtib3JkZXItcmFkaXVzOi4xMjVyZW07dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoxMDAwfSAgLnRhYmxle2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzU2NTY1NjttYXJnaW46MDttYXJnaW4tdG9wOjFyZW07bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX0gIC50YWJsZSB0aHtmb250LXNpemU6LjQ1ODMzcmVtO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDNlbTtiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOiNmZmY7dmVydGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfSAgLm1vZGFsLWhlYWRlcntib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTRlNGU0O3BhZGRpbmc6MCAwIC41cmVtO21hcmdpbi1i''@;'; put 'put ''b3R0b206MXJlbX0gIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXJ7bWluLWhlaWdodDowcHg7cG9zaXRpb246cmVsYXRpdmV9LmFwcC1sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2FkaW5nLWxvZ29bX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDo0MDBweDt3''@;'; put 'put ''aWR0aDoxMDAlfSJdfSksbH0pKCk7ZnVuY3Rpb24gTHVlKGwpe3JldHVybiBuZXcgSXIoM2UzLCExKX1mdW5jdGlvbiBTNChsKXtzd2l0Y2gobC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IGpDO2Nhc2UgMTpyZXR1cm4gbFswXTtkZWZhdWx0OnJldHVybiBuZXcgb2FlKGwpfX1mdW5jdGlv''@;'; put 'put ''biBQdWUobCxjLGE9bmV3IE1hcCxmPW5ldyBNYXApe2NvbnN0IGQ9W10saD1bXTtsZXQgbT0tMSxfPW51bGw7aWYoYy5mb3JFYWNoKE89Pntjb25zdCBYPU8uZ2V0KCJvZmZzZXQiKSxhZT1YPT1tLHBlPWFlJiZffHxuZXcgTWFwO08uZm9yRWFjaCgoYmUseGUpPT57bGV0IFZlPXhlLFplPWJl''@;'; put 'put ''O2lmKCJvZmZzZXQiIT09eGUpc3dpdGNoKFZlPWwubm9ybWFsaXplUHJvcGVydHlOYW1lKFZlLGQpLFplKXtjYXNlIiEiOlplPWEuZ2V0KHhlKTticmVhaztjYXNlIHEyOlplPWYuZ2V0KHhlKTticmVhaztkZWZhdWx0OlplPWwubm9ybWFsaXplU3R5bGVWYWx1ZSh4ZSxWZSxaZSxkKX1wZS5z''@;'; put 'put ''ZXQoVmUsWmUpfSksYWV8fGgucHVzaChwZSksXz1wZSxtPVh9KSxkLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiB0amUobCl7cmV0dXJuIG5ldyBJcigzNTAyLCExKX0oKTtyZXR1cm4gaH1mdW5jdGlvbiBDWihsLGMsYSxmKXtzd2l0Y2goYyl7Y2FzZSJzdGFydCI6bC5vblN0YXJ0KCgpPT5mKGEm''@;'; put 'put ''JlNaKGEsInN0YXJ0IixsKSkpO2JyZWFrO2Nhc2UiZG9uZSI6bC5vbkRvbmUoKCk9PmYoYSYmU1ooYSwiZG9uZSIsbCkpKTticmVhaztjYXNlImRlc3Ryb3kiOmwub25EZXN0cm95KCgpPT5mKGEmJlNaKGEsImRlc3Ryb3kiLGwpKSl9fWZ1bmN0aW9uIFNaKGwsYyxhKXtjb25zdCBoPU1aKGwu''@;'; put 'put ''ZWxlbWVudCxsLnRyaWdnZXJOYW1lLGwuZnJvbVN0YXRlLGwudG9TdGF0ZSxjfHxsLnBoYXNlTmFtZSxhLnRvdGFsVGltZT8/bC50b3RhbFRpbWUsISFhLmRpc2FibGVkKSxtPWwuX2RhdGE7cmV0dXJuIG51bGwhPW0mJihoLl9kYXRhPW0pLGh9ZnVuY3Rpb24gTVoobCxjLGEsZixkPSIiLGg9''@;'; put 'put ''MCxtKXtyZXR1cm57ZWxlbWVudDpsLHRyaWdnZXJOYW1lOmMsZnJvbVN0YXRlOmEsdG9TdGF0ZTpmLHBoYXNlTmFtZTpkLHRvdGFsVGltZTpoLGRpc2FibGVkOiEhbX19ZnVuY3Rpb24gVDEobCxjLGEpe2xldCBmPWwuZ2V0KGMpO3JldHVybiBmfHxsLnNldChjLGY9YSksZn1mdW5jdGlvbiBG''@;'; put 'put ''dWUobCl7Y29uc3QgYz1sLmluZGV4T2YoIjoiKTtyZXR1cm5bbC5zdWJzdHJpbmcoMSxjKSxsLnNsaWNlKGMrMSldfWNvbnN0IGhqZT0oKCk9PnR5cGVvZiBkb2N1bWVudD4idSI/bnVsbDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKCk7ZnVuY3Rpb24ga1oobCl7Y29uc3QgYz1sLnBhcmVu''@;'; put 'put ''dE5vZGV8fGwuaG9zdHx8bnVsbDtyZXR1cm4gYz09PWhqZT9udWxsOmN9bGV0IGQ1PW51bGwsSHVlPSExO2Z1bmN0aW9uIE51ZShsLGMpe2Zvcig7Yzspe2lmKGM9PT1sKXJldHVybiEwO2M9a1ooYyl9cmV0dXJuITF9ZnVuY3Rpb24gVnVlKGwsYyxhKXtpZihhKXJldHVybiBBcnJheS5mcm9t''@;'; put 'put ''KGwucXVlcnlTZWxlY3RvckFsbChjKSk7Y29uc3QgZj1sLnF1ZXJ5U2VsZWN0b3IoYyk7cmV0dXJuIGY/W2ZdOltdfWxldCBCdWU9KCgpPT57Y2xhc3MgbHt2YWxpZGF0ZVN0eWxlUHJvcGVydHkoYSl7cmV0dXJuIGZ1bmN0aW9uIG1qZShsKXtkNXx8KGQ1PWZ1bmN0aW9uIGdqZSgpe3JldHVy''@;'; put 'put ''biB0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50LmJvZHk6bnVsbH0oKXx8e30sSHVlPSEhZDUuc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIGQ1LnN0eWxlKTtsZXQgYz0hMDtyZXR1cm4gZDUuc3R5bGUmJiFmdW5jdGlvbiBwamUobCl7cmV0dXJuImVia2l0Ij09bC5zdWJzdHJpbmco''@;'; put 'put ''MSw2KX0obCkmJihjPWwgaW4gZDUuc3R5bGUsIWMmJkh1ZSYmKGM9IldlYmtpdCIrbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStsLnNsaWNlKDEpaW4gZDUuc3R5bGUpKSxjfShhKX1tYXRjaGVzRWxlbWVudChhLGYpe3JldHVybiExfWNvbnRhaW5zRWxlbWVudChhLGYpe3JldHVybiBOdWUo''@;'; put 'put ''YSxmKX1nZXRQYXJlbnRFbGVtZW50KGEpe3JldHVybiBrWihhKX1xdWVyeShhLGYsZCl7cmV0dXJuIFZ1ZShhLGYsZCl9Y29tcHV0ZVN0eWxlKGEsZixkKXtyZXR1cm4gZHx8IiJ9YW5pbWF0ZShhLGYsZCxoLG0sXz1bXSxPKXtyZXR1cm4gbmV3IGpDKGQsaCl9fXJldHVybiBsLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLEVaPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLk5PT1A9bmV3IEJ1ZSxsfSkoKTtjb25zdCB2amU9MWUzLHhaPSJuZy1lbnRlciIsd0k9Im5n''@;'; put 'put ''LWxlYXZlIixDST0ibmctdHJpZ2dlciIsU0k9Ii5uZy10cmlnZ2VyIix6dWU9Im5nLWFuaW1hdGluZyIsQVo9Ii5uZy1hbmltYXRpbmciO2Z1bmN0aW9uIHMzKGwpe2lmKCJudW1iZXIiPT10eXBlb2YgbClyZXR1cm4gbDtjb25zdCBjPWwubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0''@;'; put 'put ''dXJuIWN8fGMubGVuZ3RoPDI/MDpUWihwYXJzZUZsb2F0KGNbMV0pLGNbMl0pfWZ1bmN0aW9uIFRaKGwsYyl7cmV0dXJuInMiPT09Yz9sKnZqZTpsfWZ1bmN0aW9uIE1JKGwsYyxhKXtyZXR1cm4gbC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKT9sOmZ1bmN0aW9uIGJqZShsLGMsYSl7bGV0''@;'; put 'put ''IGQsaD0wLG09IiI7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBfPWwubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpKD86XHMrKC0/W1wuXGRdKykobT9zKSk/KD86XHMrKFstYS16XSsoPzpcKC4rP1wpKT8pKT8kL2kpO2lmKG51bGw9PT1fKXJldHVybiBjLnB1c2goTHVlKCkpLHtkdXJh''@;'; put 'put ''dGlvbjowLGRlbGF5OjAsZWFzaW5nOiIifTtkPVRaKHBhcnNlRmxvYXQoX1sxXSksX1syXSk7Y29uc3QgTz1fWzNdO251bGwhPU8mJihoPVRaKHBhcnNlRmxvYXQoTyksX1s0XSkpO2NvbnN0IFg9X1s1XTtYJiYobT1YKX1lbHNlIGQ9bDtpZighYSl7bGV0IF89ITEsTz1jLmxlbmd0aDtkPDAm''@;'; put 'put ''JihjLnB1c2goZnVuY3Rpb24gUkJlKCl7cmV0dXJuIG5ldyBJcigzMTAwLCExKX0oKSksXz0hMCksaDwwJiYoYy5wdXNoKGZ1bmN0aW9uIExCZSgpe3JldHVybiBuZXcgSXIoMzEwMSwhMSl9KCkpLF89ITApLF8mJmMuc3BsaWNlKE8sMCxMdWUoKSl9cmV0dXJue2R1cmF0aW9uOmQsZGVsYXk6''@;'; put 'put ''aCxlYXNpbmc6bX19KGwsYyxhKX1mdW5jdGlvbiBBUyhsLGM9e30pe3JldHVybiBPYmplY3Qua2V5cyhsKS5mb3JFYWNoKGE9PntjW2FdPWxbYV19KSxjfWZ1bmN0aW9uIFV1ZShsKXtjb25zdCBjPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKGwpLmZvckVhY2goYT0+e2Muc2V0KGEsbFth''@;'; put 'put ''XSl9KSxjfWZ1bmN0aW9uIE00KGwsYz1uZXcgTWFwLGEpe2lmKGEpZm9yKGxldFtmLGRdb2YgYSljLnNldChmLGQpO2ZvcihsZXRbZixkXW9mIGwpYy5zZXQoZixkKTtyZXR1cm4gY31mdW5jdGlvbiBMaChsLGMsYSl7Yy5mb3JFYWNoKChmLGQpPT57Y29uc3QgaD1EWihkKTthJiYhYS5oYXMo''@;'; put 'put ''ZCkmJmEuc2V0KGQsbC5zdHlsZVtoXSksbC5zdHlsZVtoXT1mfSl9ZnVuY3Rpb24gaDUobCxjKXtjLmZvckVhY2goKGEsZik9Pntjb25zdCBkPURaKGYpO2wuc3R5bGVbZF09IiJ9KX1mdW5jdGlvbiBUUyhsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKT8xPT1sLmxlbmd0aD9sWzBdOmlhZShs''@;'; put 'put ''KTpsfWNvbnN0IE9aPW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIFl1ZShsKXtsZXQgYz1bXTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2xldCBhO2Zvcig7YT1PWi5leGVjKGwpOyljLnB1c2goYVsxXSk7T1oubGFzdEluZGV4PTB9cmV0dXJuIGN9ZnVuY3Rp''@;'; put 'put ''b24gT1MobCxjLGEpe2NvbnN0IGY9bC50b1N0cmluZygpLGQ9Zi5yZXBsYWNlKE9aLChoLG0pPT57bGV0IF89Y1ttXTtyZXR1cm4gbnVsbD09XyYmKGEucHVzaChmdW5jdGlvbiBGQmUobCl7cmV0dXJuIG5ldyBJcigzMDAzLCExKX0oKSksXz0iIiksXy50b1N0cmluZygpfSk7cmV0dXJuIGQ9''@;'; put 'put ''PWY/bDpkfWZ1bmN0aW9uIGtJKGwpe2NvbnN0IGM9W107bGV0IGE9bC5uZXh0KCk7Zm9yKDshYS5kb25lOyljLnB1c2goYS52YWx1ZSksYT1sLm5leHQoKTtyZXR1cm4gY31jb25zdCBDamU9Ly0rKFthLXowLTldKS9nO2Z1bmN0aW9uIERaKGwpe3JldHVybiBsLnJlcGxhY2UoQ2plLCguLi5j''@;'; put 'put ''KT0+Y1sxXS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBPMShsLGMsYSl7c3dpdGNoKGMudHlwZSl7Y2FzZSA3OnJldHVybiBsLnZpc2l0VHJpZ2dlcihjLGEpO2Nhc2UgMDpyZXR1cm4gbC52aXNpdFN0YXRlKGMsYSk7Y2FzZSAxOnJldHVybiBsLnZpc2l0VHJhbnNpdGlvbihjLGEpO2Nhc2Ug''@;'; put 'put ''MjpyZXR1cm4gbC52aXNpdFNlcXVlbmNlKGMsYSk7Y2FzZSAzOnJldHVybiBsLnZpc2l0R3JvdXAoYyxhKTtjYXNlIDQ6cmV0dXJuIGwudmlzaXRBbmltYXRlKGMsYSk7Y2FzZSA1OnJldHVybiBsLnZpc2l0S2V5ZnJhbWVzKGMsYSk7Y2FzZSA2OnJldHVybiBsLnZpc2l0U3R5bGUoYyxhKTtj''@;'; put 'put ''YXNlIDg6cmV0dXJuIGwudmlzaXRSZWZlcmVuY2UoYyxhKTtjYXNlIDk6cmV0dXJuIGwudmlzaXRBbmltYXRlQ2hpbGQoYyxhKTtjYXNlIDEwOnJldHVybiBsLnZpc2l0QW5pbWF0ZVJlZihjLGEpO2Nhc2UgMTE6cmV0dXJuIGwudmlzaXRRdWVyeShjLGEpO2Nhc2UgMTI6cmV0dXJuIGwudmlz''@;'; put 'put ''aXRTdGFnZ2VyKGMsYSk7ZGVmYXVsdDp0aHJvdyBmdW5jdGlvbiBIQmUobCl7cmV0dXJuIG5ldyBJcigzMDA0LCExKX0oKX19ZnVuY3Rpb24gV3VlKGwsYyl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGwpW2NdfWNvbnN0IEVJPSIqIjtmdW5jdGlvbiBramUobCxjKXtjb25zdCBh''@;'; put 'put ''PVtdO3JldHVybiJzdHJpbmciPT10eXBlb2YgbD9sLnNwbGl0KC9ccyosXHMqLykuZm9yRWFjaChmPT5mdW5jdGlvbiBFamUobCxjLGEpe2lmKCI6Ij09bFswXSl7Y29uc3QgTz1mdW5jdGlvbiB4amUobCxjKXtzd2l0Y2gobCl7Y2FzZSI6ZW50ZXIiOnJldHVybiJ2b2lkID0+ICoiO2Nhc2Ui''@;'; put 'put ''OmxlYXZlIjpyZXR1cm4iKiA9PiB2b2lkIjtjYXNlIjppbmNyZW1lbnQiOnJldHVybihhLGYpPT5wYXJzZUZsb2F0KGYpPnBhcnNlRmxvYXQoYSk7Y2FzZSI6ZGVjcmVtZW50IjpyZXR1cm4oYSxmKT0+cGFyc2VGbG9hdChmKTxwYXJzZUZsb2F0KGEpO2RlZmF1bHQ6cmV0dXJuIGMucHVzaChm''@;'; put 'put ''dW5jdGlvbiBYQmUobCl7cmV0dXJuIG5ldyBJcigzMDE2LCExKX0oKSksIiogPT4gKiJ9fShsLGEpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBPKXJldHVybiB2b2lkIGMucHVzaChPKTtsPU99Y29uc3QgZj1sLm1hdGNoKC9eKFwqfFstXHddKylccyooPD9bPS1dPilccyooXCp8Wy1cd10rKSQv''@;'; put 'put ''KTtpZihudWxsPT1mfHxmLmxlbmd0aDw0KXJldHVybiBhLnB1c2goZnVuY3Rpb24gcUJlKGwpe3JldHVybiBuZXcgSXIoMzAxNSwhMSl9KCkpLGM7Y29uc3QgZD1mWzFdLGg9ZlsyXSxtPWZbM107Yy5wdXNoKEd1ZShkLG0pKTsiPCI9PWhbMF0mJiEoZD09RUkmJm09PUVJKSYmYy5wdXNoKEd1''@;'; put 'put ''ZShtLGQpKX0oZixhLGMpKTphLnB1c2gobCksYX1jb25zdCB4ST1uZXcgU2V0KFsidHJ1ZSIsIjEiXSksQUk9bmV3IFNldChbImZhbHNlIiwiMCJdKTtmdW5jdGlvbiBHdWUobCxjKXtjb25zdCBhPXhJLmhhcyhsKXx8QUkuaGFzKGwpLGY9eEkuaGFzKGMpfHxBSS5oYXMoYyk7cmV0dXJuKGQs''@;'; put 'put ''aCk9PntsZXQgbT1sPT1FSXx8bD09ZCxfPWM9PUVJfHxjPT1oO3JldHVybiFtJiZhJiYiYm9vbGVhbiI9PXR5cGVvZiBkJiYobT1kP3hJLmhhcyhsKTpBSS5oYXMobCkpLCFfJiZmJiYiYm9vbGVhbiI9PXR5cGVvZiBoJiYoXz1oP3hJLmhhcyhjKTpBSS5oYXMoYykpLG0mJl99fWNvbnN0IEFq''@;'; put 'put ''ZT1uZXcgUmVnRXhwKCJzKjpzZWxmcyosPyIsImciKTtmdW5jdGlvbiBJWihsLGMsYSxmKXtyZXR1cm4gbmV3IFRqZShsKS5idWlsZChjLGEsZil9Y2xhc3MgVGple2NvbnN0cnVjdG9yKGMpe3RoaXMuX2RyaXZlcj1jfWJ1aWxkKGMsYSxmKXtjb25zdCBkPW5ldyBJamUoYSk7cmV0dXJuIHRo''@;'; put 'put ''aXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoZCksTzEodGhpcyxUUyhjKSxkKX1fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShjKXtjLmN1cnJlbnRRdWVyeVNlbGVjdG9yPSIiLGMuY29sbGVjdGVkU3R5bGVzPW5ldyBNYXAsYy5jb2xsZWN0ZWRTdHlsZXMuc2V0KCIiLG5l''@;'; put 'put ''dyBNYXApLGMuY3VycmVudFRpbWU9MH12aXNpdFRyaWdnZXIoYyxhKXtsZXQgZj1hLnF1ZXJ5Q291bnQ9MCxkPWEuZGVwQ291bnQ9MDtjb25zdCBoPVtdLG09W107cmV0dXJuIkAiPT1jLm5hbWUuY2hhckF0KDApJiZhLmVycm9ycy5wdXNoKGZ1bmN0aW9uIFZCZSgpe3JldHVybiBuZXcgSXIo''@;'; put 'put ''MzAwNiwhMSl9KCkpLGMuZGVmaW5pdGlvbnMuZm9yRWFjaChfPT57aWYodGhpcy5fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShhKSwwPT1fLnR5cGUpe2NvbnN0IE89XyxYPU8ubmFtZTtYLnRvU3RyaW5nKCkuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKGFlPT57Ty5uYW1lPWFlLGgu''@;'; put 'put ''cHVzaCh0aGlzLnZpc2l0U3RhdGUoTyxhKSl9KSxPLm5hbWU9WH1lbHNlIGlmKDE9PV8udHlwZSl7Y29uc3QgTz10aGlzLnZpc2l0VHJhbnNpdGlvbihfLGEpO2YrPU8ucXVlcnlDb3VudCxkKz1PLmRlcENvdW50LG0ucHVzaChPKX1lbHNlIGEuZXJyb3JzLnB1c2goZnVuY3Rpb24gQkJlKCl7''@;'; put 'put ''cmV0dXJuIG5ldyBJcigzMDA3LCExKX0oKSl9KSx7dHlwZTo3LG5hbWU6Yy5uYW1lLHN0YXRlczpoLHRyYW5zaXRpb25zOm0scXVlcnlDb3VudDpmLGRlcENvdW50OmQsb3B0aW9uczpudWxsfX12aXNpdFN0YXRlKGMsYSl7Y29uc3QgZj10aGlzLnZpc2l0U3R5bGUoYy5zdHlsZXMsYSksZD1j''@;'; put 'put ''Lm9wdGlvbnMmJmMub3B0aW9ucy5wYXJhbXN8fG51bGw7aWYoZi5jb250YWluc0R5bmFtaWNTdHlsZXMpe2NvbnN0IGg9bmV3IFNldCxtPWR8fHt9O2Yuc3R5bGVzLmZvckVhY2goXz0+e18gaW5zdGFuY2VvZiBNYXAmJl8uZm9yRWFjaChPPT57WXVlKE8pLmZvckVhY2goWD0+e20uaGFzT3du''@;'; put 'put ''UHJvcGVydHkoWCl8fGguYWRkKFgpfSl9KX0pLGguc2l6ZSYmKGtJKGgudmFsdWVzKCkpLGEuZXJyb3JzLnB1c2goZnVuY3Rpb24gakJlKGwsYyl7cmV0dXJuIG5ldyBJcigzMDA4LCExKX0oKSkpfXJldHVybnt0eXBlOjAsbmFtZTpjLm5hbWUsc3R5bGU6ZixvcHRpb25zOmQ/e3BhcmFtczpk''@;'; put 'put ''fTpudWxsfX12aXNpdFRyYW5zaXRpb24oYyxhKXthLnF1ZXJ5Q291bnQ9MCxhLmRlcENvdW50PTA7Y29uc3QgZj1PMSh0aGlzLFRTKGMuYW5pbWF0aW9uKSxhKTtyZXR1cm57dHlwZToxLG1hdGNoZXJzOmtqZShjLmV4cHIsYS5lcnJvcnMpLGFuaW1hdGlvbjpmLHF1ZXJ5Q291bnQ6YS5xdWVy''@;'; put 'put ''eUNvdW50LGRlcENvdW50OmEuZGVwQ291bnQsb3B0aW9uczpwNShjLm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKGMsYSl7cmV0dXJue3R5cGU6MixzdGVwczpjLnN0ZXBzLm1hcChmPT5PMSh0aGlzLGYsYSkpLG9wdGlvbnM6cDUoYy5vcHRpb25zKX19dmlzaXRHcm91cChjLGEpe2NvbnN0IGY9''@;'; put 'put ''YS5jdXJyZW50VGltZTtsZXQgZD0wO2NvbnN0IGg9Yy5zdGVwcy5tYXAobT0+e2EuY3VycmVudFRpbWU9Zjtjb25zdCBfPU8xKHRoaXMsbSxhKTtyZXR1cm4gZD1NYXRoLm1heChkLGEuY3VycmVudFRpbWUpLF99KTtyZXR1cm4gYS5jdXJyZW50VGltZT1kLHt0eXBlOjMsc3RlcHM6aCxvcHRp''@;'; put 'put ''b25zOnA1KGMub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZShjLGEpe2NvbnN0IGY9ZnVuY3Rpb24gTGplKGwsYyl7aWYobC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKSlyZXR1cm4gbDtpZigibnVtYmVyIj09dHlwZW9mIGwpcmV0dXJuIFJaKE1JKGwsYykuZHVyYXRpb24sMCwiIik7Y29uc3Qg''@;'; put 'put ''YT1sO2lmKGEuc3BsaXQoL1xzKy8pLnNvbWUoaD0+InsiPT1oLmNoYXJBdCgwKSYmInsiPT1oLmNoYXJBdCgxKSkpe2NvbnN0IGg9UlooMCwwLCIiKTtyZXR1cm4gaC5keW5hbWljPSEwLGguc3RyVmFsdWU9YSxofWNvbnN0IGQ9TUkoYSxjKTtyZXR1cm4gUlooZC5kdXJhdGlvbixkLmRlbGF5''@;'; put 'put ''LGQuZWFzaW5nKX0oYy50aW1pbmdzLGEuZXJyb3JzKTthLmN1cnJlbnRBbmltYXRlVGltaW5ncz1mO2xldCBkLGg9Yy5zdHlsZXM/Yy5zdHlsZXM6Q2Eoe30pO2lmKDU9PWgudHlwZSlkPXRoaXMudmlzaXRLZXlmcmFtZXMoaCxhKTtlbHNle2xldCBtPWMuc3R5bGVzLF89ITE7aWYoIW0pe189''@;'; put 'put ''ITA7Y29uc3QgWD17fTtmLmVhc2luZyYmKFguZWFzaW5nPWYuZWFzaW5nKSxtPUNhKFgpfWEuY3VycmVudFRpbWUrPWYuZHVyYXRpb24rZi5kZWxheTtjb25zdCBPPXRoaXMudmlzaXRTdHlsZShtLGEpO08uaXNFbXB0eVN0ZXA9XyxkPU99cmV0dXJuIGEuY3VycmVudEFuaW1hdGVUaW1pbmdz''@;'; put 'put ''PW51bGwse3R5cGU6NCx0aW1pbmdzOmYsc3R5bGU6ZCxvcHRpb25zOm51bGx9fXZpc2l0U3R5bGUoYyxhKXtjb25zdCBmPXRoaXMuX21ha2VTdHlsZUFzdChjLGEpO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KGYsYSksZn1fbWFrZVN0eWxlQXN0KGMsYSl7Y29uc3QgZj1bXSxkPUFy''@;'; put 'put ''cmF5LmlzQXJyYXkoYy5zdHlsZXMpP2Muc3R5bGVzOltjLnN0eWxlc107Zm9yKGxldCBfIG9mIGQpInN0cmluZyI9PXR5cGVvZiBfP189PT1xMj9mLnB1c2goXyk6YS5lcnJvcnMucHVzaChuZXcgSXIoMzAwMiwhMSkpOmYucHVzaChVdWUoXykpO2xldCBoPSExLG09bnVsbDtyZXR1cm4gZi5m''@;'; put 'put ''b3JFYWNoKF89PntpZihfIGluc3RhbmNlb2YgTWFwJiYoXy5oYXMoImVhc2luZyIpJiYobT1fLmdldCgiZWFzaW5nIiksXy5kZWxldGUoImVhc2luZyIpKSwhaCkpZm9yKGxldCBPIG9mIF8udmFsdWVzKCkpaWYoTy50b1N0cmluZygpLmluZGV4T2YoInt7Iik+PTApe2g9ITA7YnJlYWt9fSks''@;'; put 'put ''e3R5cGU6NixzdHlsZXM6ZixlYXNpbmc6bSxvZmZzZXQ6Yy5vZmZzZXQsY29udGFpbnNEeW5hbWljU3R5bGVzOmgsb3B0aW9uczpudWxsfX1fdmFsaWRhdGVTdHlsZUFzdChjLGEpe2NvbnN0IGY9YS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7bGV0IGQ9YS5jdXJyZW50VGltZSxoPWEuY3VycmVu''@;'; put 'put ''dFRpbWU7ZiYmaD4wJiYoaC09Zi5kdXJhdGlvbitmLmRlbGF5KSxjLnN0eWxlcy5mb3JFYWNoKG09Pnsic3RyaW5nIiE9dHlwZW9mIG0mJm0uZm9yRWFjaCgoXyxPKT0+e2NvbnN0IFg9YS5jb2xsZWN0ZWRTdHlsZXMuZ2V0KGEuY3VycmVudFF1ZXJ5U2VsZWN0b3IpLGFlPVguZ2V0KE8pO2xl''@;'; put 'put ''dCBwZT0hMDthZSYmKGghPWQmJmg+PWFlLnN0YXJ0VGltZSYmZDw9YWUuZW5kVGltZSYmKGEuZXJyb3JzLnB1c2goZnVuY3Rpb24gVUJlKGwsYyxhLGYsZCl7cmV0dXJuIG5ldyBJcigzMDEwLCExKX0oKSkscGU9ITEpLGg9YWUuc3RhcnRUaW1lKSxwZSYmWC5zZXQoTyx7c3RhcnRUaW1lOmgs''@;'; put 'put ''ZW5kVGltZTpkfSksYS5vcHRpb25zJiZmdW5jdGlvbiB3amUobCxjLGEpe2NvbnN0IGY9Yy5wYXJhbXN8fHt9LGQ9WXVlKGwpO2QubGVuZ3RoJiZkLmZvckVhY2goaD0+e2YuaGFzT3duUHJvcGVydHkoaCl8fGEucHVzaChmdW5jdGlvbiBQQmUobCl7cmV0dXJuIG5ldyBJcigzMDAxLCExKX0o''@;'; put 'put ''KSl9KX0oXyxhLm9wdGlvbnMsYS5lcnJvcnMpfSl9KX12aXNpdEtleWZyYW1lcyhjLGEpe2NvbnN0IGY9e3R5cGU6NSxzdHlsZXM6W10sb3B0aW9uczpudWxsfTtpZighYS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MpcmV0dXJuIGEuZXJyb3JzLnB1c2goZnVuY3Rpb24gWkJlKCl7cmV0dXJuIG5l''@;'; put 'put ''dyBJcigzMDExLCExKX0oKSksZjtsZXQgaD0wO2NvbnN0IG09W107bGV0IF89ITEsTz0hMSxYPTA7Y29uc3QgYWU9Yy5zdGVwcy5tYXAoZHQ9Pntjb25zdCBndD10aGlzLl9tYWtlU3R5bGVBc3QoZHQsYSk7bGV0IGp0PW51bGwhPWd0Lm9mZnNldD9ndC5vZmZzZXQ6ZnVuY3Rpb24gUmplKGwp''@;'; put 'put ''e2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gbnVsbDtsZXQgYz1udWxsO2lmKEFycmF5LmlzQXJyYXkobCkpbC5mb3JFYWNoKGE9PntpZihhIGluc3RhbmNlb2YgTWFwJiZhLmhhcygib2Zmc2V0Iikpe2NvbnN0IGY9YTtjPXBhcnNlRmxvYXQoZi5nZXQoIm9mZnNldCIpKSxmLmRlbGV0''@;'; put 'put ''ZSgib2Zmc2V0Iil9fSk7ZWxzZSBpZihsIGluc3RhbmNlb2YgTWFwJiZsLmhhcygib2Zmc2V0Iikpe2NvbnN0IGE9bDtjPXBhcnNlRmxvYXQoYS5nZXQoIm9mZnNldCIpKSxhLmRlbGV0ZSgib2Zmc2V0Iil9cmV0dXJuIGN9KGd0LnN0eWxlcykscm49MDtyZXR1cm4gbnVsbCE9anQmJihoKyss''@;'; put 'put ''cm49Z3Qub2Zmc2V0PWp0KSxPPU98fHJuPDB8fHJuPjEsXz1ffHxybjxYLFg9cm4sbS5wdXNoKHJuKSxndH0pO08mJmEuZXJyb3JzLnB1c2goZnVuY3Rpb24gWUJlKCl7cmV0dXJuIG5ldyBJcigzMDEyLCExKX0oKSksXyYmYS5lcnJvcnMucHVzaChmdW5jdGlvbiBXQmUoKXtyZXR1cm4gbmV3''@;'; put 'put ''IElyKDMyMDAsITEpfSgpKTtjb25zdCBwZT1jLnN0ZXBzLmxlbmd0aDtsZXQgYmU9MDtoPjAmJmg8cGU/YS5lcnJvcnMucHVzaChmdW5jdGlvbiBHQmUoKXtyZXR1cm4gbmV3IElyKDMyMDIsITEpfSgpKTowPT1oJiYoYmU9MS8ocGUtMSkpO2NvbnN0IHhlPXBlLTEsVmU9YS5jdXJyZW50VGlt''@;'; put 'put ''ZSxaZT1hLmN1cnJlbnRBbmltYXRlVGltaW5ncyxsdD1aZS5kdXJhdGlvbjtyZXR1cm4gYWUuZm9yRWFjaCgoZHQsZ3QpPT57Y29uc3QganQ9YmU+MD9ndD09eGU/MTpiZSpndDptW2d0XSxybj1qdCpsdDthLmN1cnJlbnRUaW1lPVZlK1plLmRlbGF5K3JuLFplLmR1cmF0aW9uPXJuLHRoaXMu''@;'; put 'put ''X3ZhbGlkYXRlU3R5bGVBc3QoZHQsYSksZHQub2Zmc2V0PWp0LGYuc3R5bGVzLnB1c2goZHQpfSksZn12aXNpdFJlZmVyZW5jZShjLGEpe3JldHVybnt0eXBlOjgsYW5pbWF0aW9uOk8xKHRoaXMsVFMoYy5hbmltYXRpb24pLGEpLG9wdGlvbnM6cDUoYy5vcHRpb25zKX19dmlzaXRBbmltYXRl''@;'; put 'put ''Q2hpbGQoYyxhKXtyZXR1cm4gYS5kZXBDb3VudCsrLHt0eXBlOjksb3B0aW9uczpwNShjLm9wdGlvbnMpfX12aXNpdEFuaW1hdGVSZWYoYyxhKXtyZXR1cm57dHlwZToxMCxhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZShjLmFuaW1hdGlvbixhKSxvcHRpb25zOnA1KGMub3B0aW9ucyl9''@;'; put 'put ''fXZpc2l0UXVlcnkoYyxhKXtjb25zdCBmPWEuY3VycmVudFF1ZXJ5U2VsZWN0b3IsZD1jLm9wdGlvbnN8fHt9O2EucXVlcnlDb3VudCsrLGEuY3VycmVudFF1ZXJ5PWM7Y29uc3RbaCxtXT1mdW5jdGlvbiBPamUobCl7Y29uc3QgYz0hIWwuc3BsaXQoL1xzKixccyovKS5maW5kKGE9PiI6c2Vs''@;'; put 'put ''ZiI9PWEpO3JldHVybiBjJiYobD1sLnJlcGxhY2UoQWplLCIiKSksbD1sLnJlcGxhY2UoL0BcKi9nLFNJKS5yZXBsYWNlKC9AXHcrL2csYT0+U0krIi0iK2Euc2xpY2UoMSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxBWiksW2wsY119KGMuc2VsZWN0b3IpO2EuY3VycmVudFF1ZXJ5U2VsZWN0''@;'; put 'put ''b3I9Zi5sZW5ndGg/ZisiICIraDpoLFQxKGEuY29sbGVjdGVkU3R5bGVzLGEuY3VycmVudFF1ZXJ5U2VsZWN0b3IsbmV3IE1hcCk7Y29uc3QgXz1PMSh0aGlzLFRTKGMuYW5pbWF0aW9uKSxhKTtyZXR1cm4gYS5jdXJyZW50UXVlcnk9bnVsbCxhLmN1cnJlbnRRdWVyeVNlbGVjdG9yPWYse3R5''@;'; put 'put ''cGU6MTEsc2VsZWN0b3I6aCxsaW1pdDpkLmxpbWl0fHwwLG9wdGlvbmFsOiEhZC5vcHRpb25hbCxpbmNsdWRlU2VsZjptLGFuaW1hdGlvbjpfLG9yaWdpbmFsU2VsZWN0b3I6Yy5zZWxlY3RvcixvcHRpb25zOnA1KGMub3B0aW9ucyl9fXZpc2l0U3RhZ2dlcihjLGEpe2EuY3VycmVudFF1ZXJ5''@;'; put 'put ''fHxhLmVycm9ycy5wdXNoKGZ1bmN0aW9uICRCZSgpe3JldHVybiBuZXcgSXIoMzAxMywhMSl9KCkpO2NvbnN0IGY9ImZ1bGwiPT09Yy50aW1pbmdzP3tkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiJmdWxsIn06TUkoYy50aW1pbmdzLGEuZXJyb3JzLCEwKTtyZXR1cm57dHlwZToxMixhbmlt''@;'; put 'put ''YXRpb246TzEodGhpcyxUUyhjLmFuaW1hdGlvbiksYSksdGltaW5nczpmLG9wdGlvbnM6bnVsbH19fWNsYXNzIElqZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmVycm9ycz1jLHRoaXMucXVlcnlDb3VudD0wLHRoaXMuZGVwQ291bnQ9MCx0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPW51bGwsdGhpcy5j''@;'; put 'put ''dXJyZW50UXVlcnk9bnVsbCx0aGlzLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLmN1cnJlbnRUaW1lPTAsdGhpcy5jb2xsZWN0ZWRTdHlsZXM9bmV3IE1hcCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLnVuc3VwcG9ydGVkQ1NT''@;'; put 'put ''UHJvcGVydGllc0ZvdW5kPW5ldyBTZXR9fWZ1bmN0aW9uIHA1KGwpe3JldHVybiBsPyhsPUFTKGwpKS5wYXJhbXMmJihsLnBhcmFtcz1mdW5jdGlvbiBEamUobCl7cmV0dXJuIGw/QVMobCk6bnVsbH0obC5wYXJhbXMpKTpsPXt9LGx9ZnVuY3Rpb24gUloobCxjLGEpe3JldHVybntkdXJhdGlv''@;'; put 'put ''bjpsLGRlbGF5OmMsZWFzaW5nOmF9fWZ1bmN0aW9uIExaKGwsYyxhLGYsZCxoLG09bnVsbCxfPSExKXtyZXR1cm57dHlwZToxLGVsZW1lbnQ6bCxrZXlmcmFtZXM6YyxwcmVTdHlsZVByb3BzOmEscG9zdFN0eWxlUHJvcHM6ZixkdXJhdGlvbjpkLGRlbGF5OmgsdG90YWxUaW1lOmQraCxlYXNp''@;'; put 'put ''bmc6bSxzdWJUaW1lbGluZTpffX1jbGFzcyBUSXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldChjKXtyZXR1cm4gdGhpcy5fbWFwLmdldChjKXx8W119YXBwZW5kKGMsYSl7bGV0IGY9dGhpcy5fbWFwLmdldChjKTtmfHx0aGlzLl9tYXAuc2V0KGMsZj1bXSksZi5wdXNoKC4u''@;'; put 'put ''LmEpfWhhcyhjKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhjKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfX1jb25zdCBIamU9bmV3IFJlZ0V4cCgiOmVudGVyIiwiZyIpLFZqZT1uZXcgUmVnRXhwKCI6bGVhdmUiLCJnIik7ZnVuY3Rpb24gUFoobCxjLGEsZixkLGg9bmV3IE1hcCxtPW5ldyBN''@;'; put 'put ''YXAsXyxPLFg9W10pe3JldHVybihuZXcgQmplKS5idWlsZEtleWZyYW1lcyhsLGMsYSxmLGQsaCxtLF8sTyxYKX1jbGFzcyBCamV7YnVpbGRLZXlmcmFtZXMoYyxhLGYsZCxoLG0sXyxPLFgsYWU9W10pe1g9WHx8bmV3IFRJO2NvbnN0IHBlPW5ldyBGWihjLGEsWCxkLGgsYWUsW10pO3BlLm9w''@;'; put 'put ''dGlvbnM9Tztjb25zdCBiZT1PLmRlbGF5P3MzKE8uZGVsYXkpOjA7cGUuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAoYmUpLHBlLmN1cnJlbnRUaW1lbGluZS5zZXRTdHlsZXMoW21dLG51bGwscGUuZXJyb3JzLE8pLE8xKHRoaXMsZixwZSk7Y29uc3QgeGU9cGUudGltZWxpbmVzLmZp''@;'; put 'put ''bHRlcihWZT0+VmUuY29udGFpbnNBbmltYXRpb24oKSk7aWYoeGUubGVuZ3RoJiZfLnNpemUpe2xldCBWZTtmb3IobGV0IFplPXhlLmxlbmd0aC0xO1plPj0wO1plLS0pe2NvbnN0IGx0PXhlW1plXTtpZihsdC5lbGVtZW50PT09YSl7VmU9bHQ7YnJlYWt9fVZlJiYhVmUuYWxsb3dPbmx5VGlt''@;'; put 'put ''ZWxpbmVTdHlsZXMoKSYmVmUuc2V0U3R5bGVzKFtfXSxudWxsLHBlLmVycm9ycyxPKX1yZXR1cm4geGUubGVuZ3RoP3hlLm1hcChWZT0+VmUuYnVpbGRLZXlmcmFtZXMoKSk6W0xaKGEsW10sW10sW10sMCxiZSwiIiwhMSldfXZpc2l0VHJpZ2dlcihjLGEpe312aXNpdFN0YXRlKGMsYSl7fXZp''@;'; put 'put ''c2l0VHJhbnNpdGlvbihjLGEpe312aXNpdEFuaW1hdGVDaGlsZChjLGEpe2NvbnN0IGY9YS5zdWJJbnN0cnVjdGlvbnMuZ2V0KGEuZWxlbWVudCk7aWYoZil7Y29uc3QgZD1hLmNyZWF0ZVN1YkNvbnRleHQoYy5vcHRpb25zKSxoPWEuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLG09dGhp''@;'; put 'put ''cy5fdmlzaXRTdWJJbnN0cnVjdGlvbnMoZixkLGQub3B0aW9ucyk7aCE9bSYmYS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobSl9YS5wcmV2aW91c05vZGU9Y312aXNpdEFuaW1hdGVSZWYoYyxhKXtjb25zdCBmPWEuY3JlYXRlU3ViQ29udGV4dChjLm9wdGlvbnMpO2YudHJhbnNmb3JtSW50''@;'; put 'put ''b05ld1RpbWVsaW5lKCksdGhpcy5fYXBwbHlBbmltYXRpb25SZWZEZWxheXMoW2Mub3B0aW9ucyxjLmFuaW1hdGlvbi5vcHRpb25zXSxhLGYpLHRoaXMudmlzaXRSZWZlcmVuY2UoYy5hbmltYXRpb24sZiksYS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoZi5jdXJyZW50VGltZWxpbmUuY3Vy''@;'; put 'put ''cmVudFRpbWUpLGEucHJldmlvdXNOb2RlPWN9X2FwcGx5QW5pbWF0aW9uUmVmRGVsYXlzKGMsYSxmKXtmb3IoY29uc3QgZCBvZiBjKXtjb25zdCBoPWQ/LmRlbGF5O2lmKGgpe2NvbnN0IG09Im51bWJlciI9PXR5cGVvZiBoP2g6czMoT1MoaCxkPy5wYXJhbXM/P3t9LGEuZXJyb3JzKSk7Zi5k''@;'; put 'put ''ZWxheU5leHRTdGVwKG0pfX19X3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKGMsYSxmKXtsZXQgaD1hLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtjb25zdCBtPW51bGwhPWYuZHVyYXRpb24/czMoZi5kdXJhdGlvbik6bnVsbCxfPW51bGwhPWYuZGVsYXk/czMoZi5kZWxheSk6bnVsbDtyZXR1''@;'; put 'put ''cm4gMCE9PW0mJmMuZm9yRWFjaChPPT57Y29uc3QgWD1hLmFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZShPLG0sXyk7aD1NYXRoLm1heChoLFguZHVyYXRpb24rWC5kZWxheSl9KSxofXZpc2l0UmVmZXJlbmNlKGMsYSl7YS51cGRhdGVPcHRpb25zKGMub3B0aW9ucywhMCksTzEodGhpcyxj''@;'; put 'put ''LmFuaW1hdGlvbixhKSxhLnByZXZpb3VzTm9kZT1jfXZpc2l0U2VxdWVuY2UoYyxhKXtjb25zdCBmPWEuc3ViQ29udGV4dENvdW50O2xldCBkPWE7Y29uc3QgaD1jLm9wdGlvbnM7aWYoaCYmKGgucGFyYW1zfHxoLmRlbGF5KSYmKGQ9YS5jcmVhdGVTdWJDb250ZXh0KGgpLGQudHJhbnNmb3Jt''@;'; put 'put ''SW50b05ld1RpbWVsaW5lKCksbnVsbCE9aC5kZWxheSkpezY9PWQucHJldmlvdXNOb2RlLnR5cGUmJihkLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxkLnByZXZpb3VzTm9kZT1PSSk7Y29uc3QgbT1zMyhoLmRlbGF5KTtkLmRlbGF5TmV4dFN0ZXAobSl9Yy5zdGVw''@;'; put 'put ''cy5sZW5ndGgmJihjLnN0ZXBzLmZvckVhY2gobT0+TzEodGhpcyxtLGQpKSxkLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxkLnN1YkNvbnRleHRDb3VudD5mJiZkLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpKSxhLnByZXZpb3VzTm9kZT1jfXZpc2l0R3JvdXAo''@;'; put 'put ''YyxhKXtjb25zdCBmPVtdO2xldCBkPWEuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IGg9Yy5vcHRpb25zJiZjLm9wdGlvbnMuZGVsYXk/czMoYy5vcHRpb25zLmRlbGF5KTowO2Muc3RlcHMuZm9yRWFjaChtPT57Y29uc3QgXz1hLmNyZWF0ZVN1YkNvbnRleHQoYy5vcHRpb25z''@;'; put 'put ''KTtoJiZfLmRlbGF5TmV4dFN0ZXAoaCksTzEodGhpcyxtLF8pLGQ9TWF0aC5tYXgoZCxfLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSksZi5wdXNoKF8uY3VycmVudFRpbWVsaW5lKX0pLGYuZm9yRWFjaChtPT5hLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5''@;'; put 'put ''bGVzKG0pKSxhLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShkKSxhLnByZXZpb3VzTm9kZT1jfV92aXNpdFRpbWluZyhjLGEpe2lmKGMuZHluYW1pYyl7Y29uc3QgZj1jLnN0clZhbHVlO3JldHVybiBNSShhLnBhcmFtcz9PUyhmLGEucGFyYW1zLGEuZXJyb3JzKTpmLGEuZXJyb3JzKX1yZXR1''@;'; put 'put ''cm57ZHVyYXRpb246Yy5kdXJhdGlvbixkZWxheTpjLmRlbGF5LGVhc2luZzpjLmVhc2luZ319dmlzaXRBbmltYXRlKGMsYSl7Y29uc3QgZj1hLmN1cnJlbnRBbmltYXRlVGltaW5ncz10aGlzLl92aXNpdFRpbWluZyhjLnRpbWluZ3MsYSksZD1hLmN1cnJlbnRUaW1lbGluZTtmLmRlbGF5JiYo''@;'; put 'put ''YS5pbmNyZW1lbnRUaW1lKGYuZGVsYXkpLGQuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpO2NvbnN0IGg9Yy5zdHlsZTs1PT1oLnR5cGU/dGhpcy52aXNpdEtleWZyYW1lcyhoLGEpOihhLmluY3JlbWVudFRpbWUoZi5kdXJhdGlvbiksdGhpcy52aXNpdFN0eWxlKGgsYSksZC5hcHBseVN0eWxl''@;'; put 'put ''c1RvS2V5ZnJhbWUoKSksYS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCxhLnByZXZpb3VzTm9kZT1jfXZpc2l0U3R5bGUoYyxhKXtjb25zdCBmPWEuY3VycmVudFRpbWVsaW5lLGQ9YS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7IWQmJmYuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpJiZm''@;'; put 'put ''LmZvcndhcmRGcmFtZSgpO2NvbnN0IGg9ZCYmZC5lYXNpbmd8fGMuZWFzaW5nO2MuaXNFbXB0eVN0ZXA/Zi5hcHBseUVtcHR5U3RlcChoKTpmLnNldFN0eWxlcyhjLnN0eWxlcyxoLGEuZXJyb3JzLGEub3B0aW9ucyksYS5wcmV2aW91c05vZGU9Y312aXNpdEtleWZyYW1lcyhjLGEpe2NvbnN0''@;'; put 'put ''IGY9YS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsZD1hLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbixoPWYuZHVyYXRpb24sXz1hLmNyZWF0ZVN1YkNvbnRleHQoKS5jdXJyZW50VGltZWxpbmU7Xy5lYXNpbmc9Zi5lYXNpbmcsYy5zdHlsZXMuZm9yRWFjaChPPT57Xy5mb3J3YXJkVGltZSgoTy5v''@;'; put 'put ''ZmZzZXR8fDApKmgpLF8uc2V0U3R5bGVzKE8uc3R5bGVzLE8uZWFzaW5nLGEuZXJyb3JzLGEub3B0aW9ucyksXy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKX0pLGEuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMoXyksYS50cmFuc2Zvcm1JbnRvTmV3VGltZWxp''@;'; put 'put ''bmUoZCtoKSxhLnByZXZpb3VzTm9kZT1jfXZpc2l0UXVlcnkoYyxhKXtjb25zdCBmPWEuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLGQ9Yy5vcHRpb25zfHx7fSxoPWQuZGVsYXk/czMoZC5kZWxheSk6MDtoJiYoNj09PWEucHJldmlvdXNOb2RlLnR5cGV8fDA9PWYmJmEuY3VycmVudFRp''@;'; put 'put ''bWVsaW5lLmhhc0N1cnJlbnRTdHlsZVByb3BlcnRpZXMoKSkmJihhLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxhLnByZXZpb3VzTm9kZT1PSSk7bGV0IG09Zjtjb25zdCBfPWEuaW52b2tlUXVlcnkoYy5zZWxlY3RvcixjLm9yaWdpbmFsU2VsZWN0b3IsYy5saW1p''@;'; put 'put ''dCxjLmluY2x1ZGVTZWxmLCEhZC5vcHRpb25hbCxhLmVycm9ycyk7YS5jdXJyZW50UXVlcnlUb3RhbD1fLmxlbmd0aDtsZXQgTz1udWxsO18uZm9yRWFjaCgoWCxhZSk9PnthLmN1cnJlbnRRdWVyeUluZGV4PWFlO2NvbnN0IHBlPWEuY3JlYXRlU3ViQ29udGV4dChjLm9wdGlvbnMsWCk7aCYm''@;'; put 'put ''cGUuZGVsYXlOZXh0U3RlcChoKSxYPT09YS5lbGVtZW50JiYoTz1wZS5jdXJyZW50VGltZWxpbmUpLE8xKHRoaXMsYy5hbmltYXRpb24scGUpLHBlLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxtPU1hdGgubWF4KG0scGUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRU''@;'; put 'put ''aW1lKX0pLGEuY3VycmVudFF1ZXJ5SW5kZXg9MCxhLmN1cnJlbnRRdWVyeVRvdGFsPTAsYS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobSksTyYmKGEuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMoTyksYS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJy''@;'; put 'put ''ZW50U3R5bGVzKCkpLGEucHJldmlvdXNOb2RlPWN9dmlzaXRTdGFnZ2VyKGMsYSl7Y29uc3QgZj1hLnBhcmVudENvbnRleHQsZD1hLmN1cnJlbnRUaW1lbGluZSxoPWMudGltaW5ncyxtPU1hdGguYWJzKGguZHVyYXRpb24pLF89bSooYS5jdXJyZW50UXVlcnlUb3RhbC0xKTtsZXQgTz1tKmEu''@;'; put 'put ''Y3VycmVudFF1ZXJ5SW5kZXg7c3dpdGNoKGguZHVyYXRpb248MD8icmV2ZXJzZSI6aC5lYXNpbmcpe2Nhc2UicmV2ZXJzZSI6Tz1fLU87YnJlYWs7Y2FzZSJmdWxsIjpPPWYuY3VycmVudFN0YWdnZXJUaW1lfWNvbnN0IGFlPWEuY3VycmVudFRpbWVsaW5lO08mJmFlLmRlbGF5TmV4dFN0ZXAo''@;'; put 'put ''Tyk7Y29uc3QgcGU9YWUuY3VycmVudFRpbWU7TzEodGhpcyxjLmFuaW1hdGlvbixhKSxhLnByZXZpb3VzTm9kZT1jLGYuY3VycmVudFN0YWdnZXJUaW1lPWQuY3VycmVudFRpbWUtcGUrKGQuc3RhcnRUaW1lLWYuY3VycmVudFRpbWVsaW5lLnN0YXJ0VGltZSl9fWNvbnN0IE9JPXt9O2NsYXNz''@;'; put 'put ''IEZae2NvbnN0cnVjdG9yKGMsYSxmLGQsaCxtLF8sTyl7dGhpcy5fZHJpdmVyPWMsdGhpcy5lbGVtZW50PWEsdGhpcy5zdWJJbnN0cnVjdGlvbnM9Zix0aGlzLl9lbnRlckNsYXNzTmFtZT1kLHRoaXMuX2xlYXZlQ2xhc3NOYW1lPWgsdGhpcy5lcnJvcnM9bSx0aGlzLnRpbWVsaW5lcz1fLHRo''@;'; put 'put ''aXMucGFyZW50Q29udGV4dD1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5wcmV2aW91c05vZGU9T0ksdGhpcy5zdWJDb250ZXh0Q291bnQ9MCx0aGlzLm9wdGlvbnM9e30sdGhpcy5jdXJyZW50UXVlcnlJbmRleD0wLHRoaXMuY3VycmVudFF1ZXJ5VG90YWw9MCx0''@;'; put 'put ''aGlzLmN1cnJlbnRTdGFnZ2VyVGltZT0wLHRoaXMuY3VycmVudFRpbWVsaW5lPU98fG5ldyBESSh0aGlzLl9kcml2ZXIsYSwwKSxfLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc311cGRhdGVPcHRpb25zKGMsYSl7aWYo''@;'; put 'put ''IWMpcmV0dXJuO2NvbnN0IGY9YztsZXQgZD10aGlzLm9wdGlvbnM7bnVsbCE9Zi5kdXJhdGlvbiYmKGQuZHVyYXRpb249czMoZi5kdXJhdGlvbikpLG51bGwhPWYuZGVsYXkmJihkLmRlbGF5PXMzKGYuZGVsYXkpKTtjb25zdCBoPWYucGFyYW1zO2lmKGgpe2xldCBtPWQucGFyYW1zO218fCht''@;'; put 'put ''PXRoaXMub3B0aW9ucy5wYXJhbXM9e30pLE9iamVjdC5rZXlzKGgpLmZvckVhY2goXz0+eyghYXx8IW0uaGFzT3duUHJvcGVydHkoXykpJiYobVtfXT1PUyhoW19dLG0sdGhpcy5lcnJvcnMpKX0pfX1fY29weU9wdGlvbnMoKXtjb25zdCBjPXt9O2lmKHRoaXMub3B0aW9ucyl7Y29uc3QgYT10''@;'; put 'put ''aGlzLm9wdGlvbnMucGFyYW1zO2lmKGEpe2NvbnN0IGY9Yy5wYXJhbXM9e307T2JqZWN0LmtleXMoYSkuZm9yRWFjaChkPT57ZltkXT1hW2RdfSl9fXJldHVybiBjfWNyZWF0ZVN1YkNvbnRleHQoYz1udWxsLGEsZil7Y29uc3QgZD1hfHx0aGlzLmVsZW1lbnQsaD1uZXcgRloodGhpcy5fZHJp''@;'; put 'put ''dmVyLGQsdGhpcy5zdWJJbnN0cnVjdGlvbnMsdGhpcy5fZW50ZXJDbGFzc05hbWUsdGhpcy5fbGVhdmVDbGFzc05hbWUsdGhpcy5lcnJvcnMsdGhpcy50aW1lbGluZXMsdGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayhkLGZ8fDApKTtyZXR1cm4gaC5wcmV2aW91c05vZGU9dGhpcy5wcmV2aW91''@;'; put 'put ''c05vZGUsaC5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsaC5vcHRpb25zPXRoaXMuX2NvcHlPcHRpb25zKCksaC51cGRhdGVPcHRpb25zKGMpLGguY3VycmVudFF1ZXJ5SW5kZXg9dGhpcy5jdXJyZW50UXVlcnlJbmRleCxoLmN1cnJlbnRRdWVyeVRv''@;'; put 'put ''dGFsPXRoaXMuY3VycmVudFF1ZXJ5VG90YWwsaC5wYXJlbnRDb250ZXh0PXRoaXMsdGhpcy5zdWJDb250ZXh0Q291bnQrKyxofXRyYW5zZm9ybUludG9OZXdUaW1lbGluZShjKXtyZXR1cm4gdGhpcy5wcmV2aW91c05vZGU9T0ksdGhpcy5jdXJyZW50VGltZWxpbmU9dGhpcy5jdXJyZW50VGlt''@;'; put 'put ''ZWxpbmUuZm9yayh0aGlzLmVsZW1lbnQsYyksdGhpcy50aW1lbGluZXMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSksdGhpcy5jdXJyZW50VGltZWxpbmV9YXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKGMsYSxmKXtjb25zdCBkPXtkdXJhdGlvbjphPz9jLmR1cmF0aW9uLGRlbGF5OnRo''@;'; put 'put ''aXMuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKyhmPz8wKStjLmRlbGF5LGVhc2luZzoiIn0saD1uZXcgamplKHRoaXMuX2RyaXZlcixjLmVsZW1lbnQsYy5rZXlmcmFtZXMsYy5wcmVTdHlsZVByb3BzLGMucG9zdFN0eWxlUHJvcHMsZCxjLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lKTty''@;'; put 'put ''ZXR1cm4gdGhpcy50aW1lbGluZXMucHVzaChoKSxkfWluY3JlbWVudFRpbWUoYyl7dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24rYyl9ZGVsYXlOZXh0U3RlcChjKXtjPjAmJnRoaXMuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4''@;'; put 'put ''dFN0ZXAoYyl9aW52b2tlUXVlcnkoYyxhLGYsZCxoLG0pe2xldCBfPVtdO2lmKGQmJl8ucHVzaCh0aGlzLmVsZW1lbnQpLGMubGVuZ3RoPjApe2M9KGM9Yy5yZXBsYWNlKEhqZSwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUpKS5yZXBsYWNlKFZqZSwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUp''@;'; put 'put ''O2xldCBYPXRoaXMuX2RyaXZlci5xdWVyeSh0aGlzLmVsZW1lbnQsYywxIT1mKTswIT09ZiYmKFg9ZjwwP1guc2xpY2UoWC5sZW5ndGgrZixYLmxlbmd0aCk6WC5zbGljZSgwLGYpKSxfLnB1c2goLi4uWCl9cmV0dXJuIWgmJjA9PV8ubGVuZ3RoJiZtLnB1c2goZnVuY3Rpb24gS0JlKGwpe3Jl''@;'; put 'put ''dHVybiBuZXcgSXIoMzAxNCwhMSl9KCkpLF99fWNsYXNzIERJe2NvbnN0cnVjdG9yKGMsYSxmLGQpe3RoaXMuX2RyaXZlcj1jLHRoaXMuZWxlbWVudD1hLHRoaXMuc3RhcnRUaW1lPWYsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPWQsdGhpcy5kdXJhdGlvbj0wLHRoaXMuZWFz''@;'; put 'put ''aW5nPW51bGwsdGhpcy5fcHJldmlvdXNLZXlmcmFtZT1uZXcgTWFwLHRoaXMuX2N1cnJlbnRLZXlmcmFtZT1uZXcgTWFwLHRoaXMuX2tleWZyYW1lcz1uZXcgTWFwLHRoaXMuX3N0eWxlU3VtbWFyeT1uZXcgTWFwLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXM9bmV3IE1hcCx0aGlzLl9wZW5k''@;'; put 'put ''aW5nU3R5bGVzPW5ldyBNYXAsdGhpcy5fYmFja0ZpbGw9bmV3IE1hcCx0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9bnVsbCx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXB8fCh0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXA9bmV3IE1hcCksdGhpcy5fZ2xv''@;'; put 'put ''YmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwLmdldChhKSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc3x8KHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5''@;'; put 'put ''bGVzTG9va3VwLnNldChhLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpKSx0aGlzLl9sb2FkS2V5ZnJhbWUoKX1jb250YWluc0FuaW1hdGlvbigpe3N3aXRjaCh0aGlzLl9rZXlmcmFtZXMuc2l6ZSl7Y2FzZSAwOnJldHVybiExO2Nhc2UgMTpyZXR1cm4gdGhpcy5oYXNDdXJyZW50U3R5bGVQ''@;'; put 'put ''cm9wZXJ0aWVzKCk7ZGVmYXVsdDpyZXR1cm4hMH19aGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpe3JldHVybiB0aGlzLl9jdXJyZW50S2V5ZnJhbWUuc2l6ZT4wfWdldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLnN0YXJ0VGltZSt0aGlzLmR1cmF0aW9ufWRlbGF5TmV4dFN0ZXAoYyl7''@;'; put 'put ''Y29uc3QgYT0xPT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJnRoaXMuX3BlbmRpbmdTdHlsZXMuc2l6ZTt0aGlzLmR1cmF0aW9ufHxhPyh0aGlzLmZvcndhcmRUaW1lKHRoaXMuY3VycmVudFRpbWUrYyksYSYmdGhpcy5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk6dGhpcy5zdGFydFRpbWUrPWN9''@;'; put 'put ''Zm9yayhjLGEpe3JldHVybiB0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLG5ldyBESSh0aGlzLl9kcml2ZXIsYyxhfHx0aGlzLmN1cnJlbnRUaW1lLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cCl9X2xvYWRLZXlmcmFtZSgpe3RoaXMuX2N1cnJlbnRLZXlmcmFtZSYmKHRo''@;'; put 'put ''aXMuX3ByZXZpb3VzS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWU9dGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWV8fCh0aGlzLl9jdXJyZW50S2V5ZnJhbWU9bmV3IE1hcCx0aGlzLl9rZXlm''@;'; put 'put ''cmFtZXMuc2V0KHRoaXMuZHVyYXRpb24sdGhpcy5fY3VycmVudEtleWZyYW1lKSl9Zm9yd2FyZEZyYW1lKCl7dGhpcy5kdXJhdGlvbis9MSx0aGlzLl9sb2FkS2V5ZnJhbWUoKX1mb3J3YXJkVGltZShjKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLHRoaXMuZHVyYXRpb249Yyx0aGlz''@;'; put 'put ''Ll9sb2FkS2V5ZnJhbWUoKX1fdXBkYXRlU3R5bGUoYyxhKXt0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLnNldChjLGEpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzLnNldChjLGEpLHRoaXMuX3N0eWxlU3VtbWFyeS5zZXQoYyx7dGltZTp0aGlzLmN1cnJlbnRUaW1lLHZhbHVlOmF9KX1h''@;'; put 'put ''bGxvd09ubHlUaW1lbGluZVN0eWxlcygpe3JldHVybiB0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWUhPT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9YXBwbHlFbXB0eVN0ZXAoYyl7YyYmdGhpcy5fcHJldmlvdXNLZXlmcmFtZS5zZXQoImVhc2luZyIsYyk7Zm9yKGxldFthLGZdb2YgdGhp''@;'; put 'put ''cy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMpdGhpcy5fYmFja0ZpbGwuc2V0KGEsZnx8cTIpLHRoaXMuX2N1cnJlbnRLZXlmcmFtZS5zZXQoYSxxMik7dGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1zZXRTdHlsZXMoYyxhLGYsZCl7YSYmdGhpcy5f''@;'; put 'put ''cHJldmlvdXNLZXlmcmFtZS5zZXQoImVhc2luZyIsYSk7Y29uc3QgaD1kJiZkLnBhcmFtc3x8e30sbT1mdW5jdGlvbiB6amUobCxjKXtjb25zdCBhPW5ldyBNYXA7bGV0IGY7cmV0dXJuIGwuZm9yRWFjaChkPT57aWYoIioiPT09ZCl7Zj1mfHxjLmtleXMoKTtmb3IobGV0IGggb2YgZilhLnNl''@;'; put 'put ''dChoLHEyKX1lbHNlIE00KGQsYSl9KSxhfShjLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKTtmb3IobGV0W18sT11vZiBtKXtjb25zdCBYPU9TKE8saCxmKTt0aGlzLl9wZW5kaW5nU3R5bGVzLnNldChfLFgpLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuaGFzKF8pfHx0aGlzLl9iYWNr''@;'; put 'put ''RmlsbC5zZXQoXyx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5nZXQoXyk/P3EyKSx0aGlzLl91cGRhdGVTdHlsZShfLFgpfX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXswIT10aGlzLl9wZW5kaW5nU3R5bGVzLnNpemUmJih0aGlzLl9wZW5kaW5nU3R5bGVzLmZvckVhY2goKGMsYSk9Pnt0''@;'; put 'put ''aGlzLl9jdXJyZW50S2V5ZnJhbWUuc2V0KGEsYyl9KSx0aGlzLl9wZW5kaW5nU3R5bGVzLmNsZWFyKCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcy5mb3JFYWNoKChjLGEpPT57dGhpcy5fY3VycmVudEtleWZyYW1lLmhhcyhhKXx8dGhpcy5fY3VycmVudEtleWZyYW1lLnNldChhLGMpfSkp''@;'; put 'put ''fXNuYXBzaG90Q3VycmVudFN0eWxlcygpe2ZvcihsZXRbYyxhXW9mIHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpdGhpcy5fcGVuZGluZ1N0eWxlcy5zZXQoYyxhKSx0aGlzLl91cGRhdGVTdHlsZShjLGEpfWdldEZpbmFsS2V5ZnJhbWUoKXtyZXR1cm4gdGhpcy5fa2V5ZnJhbWVzLmdldCh0''@;'; put 'put ''aGlzLmR1cmF0aW9uKX1nZXQgcHJvcGVydGllcygpe2NvbnN0IGM9W107Zm9yKGxldCBhIGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSljLnB1c2goYSk7cmV0dXJuIGN9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhjKXtjLl9zdHlsZVN1bW1hcnkuZm9yRWFjaCgoYSxmKT0+e2NvbnN0''@;'; put 'put ''IGQ9dGhpcy5fc3R5bGVTdW1tYXJ5LmdldChmKTsoIWR8fGEudGltZT5kLnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZShmLGEudmFsdWUpfSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IGM9bmV3IFNldCxhPW5ldyBTZXQsZj0xPT09dGhpcy5f''@;'; put 'put ''a2V5ZnJhbWVzLnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCBkPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKChfLE8pPT57Y29uc3QgWD1NNChfLG5ldyBNYXAsdGhpcy5fYmFja0ZpbGwpO1guZm9yRWFjaCgoYWUscGUpPT57IiEiPT09YWU/Yy5hZGQocGUpOmFlPT09cTImJmEuYWRk''@;'; put 'put ''KHBlKX0pLGZ8fFguc2V0KCJvZmZzZXQiLE8vdGhpcy5kdXJhdGlvbiksZC5wdXNoKFgpfSk7Y29uc3QgaD1jLnNpemU/a0koYy52YWx1ZXMoKSk6W10sbT1hLnNpemU/a0koYS52YWx1ZXMoKSk6W107aWYoZil7Y29uc3QgXz1kWzBdLE89bmV3IE1hcChfKTtfLnNldCgib2Zmc2V0IiwwKSxP''@;'; put 'put ''LnNldCgib2Zmc2V0IiwxKSxkPVtfLE9dfXJldHVybiBMWih0aGlzLmVsZW1lbnQsZCxoLG0sdGhpcy5kdXJhdGlvbix0aGlzLnN0YXJ0VGltZSx0aGlzLmVhc2luZywhMSl9fWNsYXNzIGpqZSBleHRlbmRzIERJe2NvbnN0cnVjdG9yKGMsYSxmLGQsaCxtLF89ITEpe3N1cGVyKGMsYSxtLmRl''@;'; put 'put ''bGF5KSx0aGlzLmtleWZyYW1lcz1mLHRoaXMucHJlU3R5bGVQcm9wcz1kLHRoaXMucG9zdFN0eWxlUHJvcHM9aCx0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT1fLHRoaXMudGltaW5ncz17ZHVyYXRpb246bS5kdXJhdGlvbixkZWxheTptLmRlbGF5LGVhc2luZzptLmVhc2luZ319Y29u''@;'; put 'put ''dGFpbnNBbmltYXRpb24oKXtyZXR1cm4gdGhpcy5rZXlmcmFtZXMubGVuZ3RoPjF9YnVpbGRLZXlmcmFtZXMoKXtsZXQgYz10aGlzLmtleWZyYW1lcyx7ZGVsYXk6YSxkdXJhdGlvbjpmLGVhc2luZzpkfT10aGlzLnRpbWluZ3M7aWYodGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUmJmEp''@;'; put 'put ''e2NvbnN0IGg9W10sbT1mK2EsXz1hL20sTz1NNChjWzBdKTtPLnNldCgib2Zmc2V0IiwwKSxoLnB1c2goTyk7Y29uc3QgWD1NNChjWzBdKTtYLnNldCgib2Zmc2V0IixxdWUoXykpLGgucHVzaChYKTtjb25zdCBhZT1jLmxlbmd0aC0xO2ZvcihsZXQgcGU9MTtwZTw9YWU7cGUrKyl7bGV0IGJl''@;'; put 'put ''PU00KGNbcGVdKTtjb25zdCB4ZT1iZS5nZXQoIm9mZnNldCIpO2JlLnNldCgib2Zmc2V0IixxdWUoKGEreGUqZikvbSkpLGgucHVzaChiZSl9Zj1tLGE9MCxkPSIiLGM9aH1yZXR1cm4gTFoodGhpcy5lbGVtZW50LGMsdGhpcy5wcmVTdHlsZVByb3BzLHRoaXMucG9zdFN0eWxlUHJvcHMsZixh''@;'; put 'put ''LGQsITApfX1mdW5jdGlvbiBxdWUobCxjPTMpe2NvbnN0IGE9TWF0aC5wb3coMTAsYy0xKTtyZXR1cm4gTWF0aC5yb3VuZChsKmEpL2F9Y2xhc3MgSFp7fWNvbnN0IFVqZT1uZXcgU2V0KFsid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVp''@;'; put 'put ''Z2h0IiwibGVmdCIsInRvcCIsImJvdHRvbSIsInJpZ2h0IiwiZm9udFNpemUiLCJvdXRsaW5lV2lkdGgiLCJvdXRsaW5lT2Zmc2V0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdSaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkxlZnQiLCJtYXJn''@;'; put 'put ''aW5Cb3R0b20iLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsImJvcmRlcldpZHRoIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJ0ZXh0SW5kZW50IiwicGVyc3BlY3RpdmUiXSk7Y2xhc3MgWmpl''@;'; put 'put ''IGV4dGVuZHMgSFp7bm9ybWFsaXplUHJvcGVydHlOYW1lKGMsYSl7cmV0dXJuIERaKGMpfW5vcm1hbGl6ZVN0eWxlVmFsdWUoYyxhLGYsZCl7bGV0IGg9IiI7Y29uc3QgbT1mLnRvU3RyaW5nKCkudHJpbSgpO2lmKFVqZS5oYXMoYSkmJjAhPT1mJiYiMCIhPT1mKWlmKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgZiloPSJweCI7ZWxzZXtjb25zdCBfPWYubWF0Y2goL15bKy1dP1tcZFwuXSsoW2Etel0qKSQvKTtfJiYwPT1fWzFdLmxlbmd0aCYmZC5wdXNoKGZ1bmN0aW9uIE5CZShsLGMpe3JldHVybiBuZXcgSXIoMzAwNSwhMSl9KCkpfXJldHVybiBtK2h9fWZ1bmN0aW9uIFh1ZShsLGMsYSxmLGQs''@;'; put 'put ''aCxtLF8sTyxYLGFlLHBlLGJlKXtyZXR1cm57dHlwZTowLGVsZW1lbnQ6bCx0cmlnZ2VyTmFtZTpjLGlzUmVtb3ZhbFRyYW5zaXRpb246ZCxmcm9tU3RhdGU6YSxmcm9tU3R5bGVzOmgsdG9TdGF0ZTpmLHRvU3R5bGVzOm0sdGltZWxpbmVzOl8scXVlcmllZEVsZW1lbnRzOk8scHJlU3R5bGVQ''@;'; put 'put ''cm9wczpYLHBvc3RTdHlsZVByb3BzOmFlLHRvdGFsVGltZTpwZSxlcnJvcnM6YmV9fWNvbnN0IE5aPXt9O2NsYXNzIEp1ZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5fdHJpZ2dlck5hbWU9Yyx0aGlzLmFzdD1hLHRoaXMuX3N0YXRlU3R5bGVzPWZ9bWF0Y2goYyxhLGYsZCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIFlqZShsLGMsYSxmLGQpe3JldHVybiBsLnNvbWUoaD0+aChjLGEsZixkKSl9KHRoaXMuYXN0Lm1hdGNoZXJzLGMsYSxmLGQpfWJ1aWxkU3R5bGVzKGMsYSxmKXtsZXQgZD10aGlzLl9zdGF0ZVN0eWxlcy5nZXQoIioiKTtyZXR1cm4gdm9pZCAwIT09YyYmKGQ9dGhpcy5fc3RhdGVT''@;'; put 'put ''dHlsZXMuZ2V0KGM/LnRvU3RyaW5nKCkpfHxkKSxkP2QuYnVpbGRTdHlsZXMoYSxmKTpuZXcgTWFwfWJ1aWxkKGMsYSxmLGQsaCxtLF8sTyxYLGFlKXtjb25zdCBwZT1bXSxiZT10aGlzLmFzdC5vcHRpb25zJiZ0aGlzLmFzdC5vcHRpb25zLnBhcmFtc3x8TlosVmU9dGhpcy5idWlsZFN0eWxl''@;'; put 'put ''cyhmLF8mJl8ucGFyYW1zfHxOWixwZSksWmU9TyYmTy5wYXJhbXN8fE5aLGx0PXRoaXMuYnVpbGRTdHlsZXMoZCxaZSxwZSksZHQ9bmV3IFNldCxndD1uZXcgTWFwLGp0PW5ldyBNYXAscm49InZvaWQiPT09ZCxYdD17cGFyYW1zOldqZShaZSxiZSksZGVsYXk6dGhpcy5hc3Qub3B0aW9ucz8u''@;'; put 'put ''ZGVsYXl9LHluPWFlP1tdOlBaKGMsYSx0aGlzLmFzdC5hbmltYXRpb24saCxtLFZlLGx0LFh0LFgscGUpO2xldCBRbj0wO2lmKHluLmZvckVhY2goVnI9PntRbj1NYXRoLm1heChWci5kdXJhdGlvbitWci5kZWxheSxRbil9KSxwZS5sZW5ndGgpcmV0dXJuIFh1ZShhLHRoaXMuX3RyaWdnZXJO''@;'; put 'put ''YW1lLGYsZCxybixWZSxsdCxbXSxbXSxndCxqdCxRbixwZSk7eW4uZm9yRWFjaChWcj0+e2NvbnN0IFpyPVZyLmVsZW1lbnQsaXI9VDEoZ3QsWnIsbmV3IFNldCk7VnIucHJlU3R5bGVQcm9wcy5mb3JFYWNoKEFyPT5pci5hZGQoQXIpKTtjb25zdCBzaT1UMShqdCxacixuZXcgU2V0KTtWci5w''@;'; put 'put ''b3N0U3R5bGVQcm9wcy5mb3JFYWNoKEFyPT5zaS5hZGQoQXIpKSxaciE9PWEmJmR0LmFkZChacil9KTtjb25zdCBPcj1rSShkdC52YWx1ZXMoKSk7cmV0dXJuIFh1ZShhLHRoaXMuX3RyaWdnZXJOYW1lLGYsZCxybixWZSxsdCx5bixPcixndCxqdCxRbil9fWZ1bmN0aW9uIFdqZShsLGMpe2Nv''@;'; put 'put ''bnN0IGE9QVMoYyk7Zm9yKGNvbnN0IGYgaW4gbClsLmhhc093blByb3BlcnR5KGYpJiZudWxsIT1sW2ZdJiYoYVtmXT1sW2ZdKTtyZXR1cm4gYX1jbGFzcyBHamV7Y29uc3RydWN0b3IoYyxhLGYpe3RoaXMuc3R5bGVzPWMsdGhpcy5kZWZhdWx0UGFyYW1zPWEsdGhpcy5ub3JtYWxpemVyPWZ9''@;'; put 'put ''YnVpbGRTdHlsZXMoYyxhKXtjb25zdCBmPW5ldyBNYXAsZD1BUyh0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGg9Pntjb25zdCBtPWNbaF07bnVsbCE9PW0mJihkW2hdPW0pfSksdGhpcy5zdHlsZXMuc3R5bGVzLmZvckVhY2goaD0+eyJzdHJpbmci''@;'; put 'put ''IT10eXBlb2YgaCYmaC5mb3JFYWNoKChtLF8pPT57bSYmKG09T1MobSxkLGEpKTtjb25zdCBPPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVQcm9wZXJ0eU5hbWUoXyxhKTttPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVTdHlsZVZhbHVlKF8sTyxtLGEpLGYuc2V0KF8sbSl9KX0pLGZ9fWNs''@;'; put 'put ''YXNzIEtqZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5uYW1lPWMsdGhpcy5hc3Q9YSx0aGlzLl9ub3JtYWxpemVyPWYsdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzPVtdLHRoaXMuc3RhdGVzPW5ldyBNYXAsYS5zdGF0ZXMuZm9yRWFjaChkPT57dGhpcy5zdGF0ZXMuc2V0KGQubmFtZSxuZXcg''@;'; put 'put ''R2plKGQuc3R5bGUsZC5vcHRpb25zJiZkLm9wdGlvbnMucGFyYW1zfHx7fSxmKSl9KSxRdWUodGhpcy5zdGF0ZXMsInRydWUiLCIxIiksUXVlKHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxhLnRyYW5zaXRpb25zLmZvckVhY2goZD0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5l''@;'; put 'put ''dyBKdWUoYyxkLHRoaXMuc3RhdGVzKSl9KSx0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbj1mdW5jdGlvbiBxamUobCxjLGEpe3JldHVybiBuZXcgSnVlKGwse3R5cGU6MSxhbmltYXRpb246e3R5cGU6MixzdGVwczpbXSxvcHRpb25zOm51bGx9LG1hdGNoZXJzOlsobSxfKT0+ITBdLG9wdGlvbnM6''@;'; put 'put ''bnVsbCxxdWVyeUNvdW50OjAsZGVwQ291bnQ6MH0sYyl9KGMsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbihjLGEsZixkKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQobT0+''@;'; put 'put ''bS5tYXRjaChjLGEsZixkKSl8fG51bGx9bWF0Y2hTdHlsZXMoYyxhLGYpe3JldHVybiB0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbi5idWlsZFN0eWxlcyhjLGEsZil9fWZ1bmN0aW9uIFF1ZShsLGMsYSl7bC5oYXMoYyk/bC5oYXMoYSl8fGwuc2V0KGEsbC5nZXQoYykpOmwuaGFzKGEpJiZsLnNl''@;'; put 'put ''dChjLGwuZ2V0KGEpKX1jb25zdCBYamU9bmV3IFRJO2NsYXNzIEpqZXtjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5ib2R5Tm9kZT1jLHRoaXMuX2RyaXZlcj1hLHRoaXMuX25vcm1hbGl6ZXI9Zix0aGlzLl9hbmltYXRpb25zPW5ldyBNYXAsdGhpcy5fcGxheWVyc0J5SWQ9bmV3IE1hcCx0aGlz''@;'; put 'put ''LnBsYXllcnM9W119cmVnaXN0ZXIoYyxhKXtjb25zdCBmPVtdLGg9SVoodGhpcy5fZHJpdmVyLGEsZixbXSk7aWYoZi5sZW5ndGgpdGhyb3cgZnVuY3Rpb24gbmplKGwpe3JldHVybiBuZXcgSXIoMzUwMywhMSl9KCk7dGhpcy5fYW5pbWF0aW9ucy5zZXQoYyxoKX1fYnVpbGRQbGF5ZXIoYyxh''@;'; put 'put ''LGYpe2NvbnN0IGQ9Yy5lbGVtZW50LGg9UHVlKHRoaXMuX25vcm1hbGl6ZXIsYy5rZXlmcmFtZXMsYSxmKTtyZXR1cm4gdGhpcy5fZHJpdmVyLmFuaW1hdGUoZCxoLGMuZHVyYXRpb24sYy5kZWxheSxjLmVhc2luZyxbXSwhMCl9Y3JlYXRlKGMsYSxmPXt9KXtjb25zdCBkPVtdLGg9dGhpcy5f''@;'; put 'put ''YW5pbWF0aW9ucy5nZXQoYyk7bGV0IG07Y29uc3QgXz1uZXcgTWFwO2lmKGg/KG09UFoodGhpcy5fZHJpdmVyLGEsaCx4Wix3SSxuZXcgTWFwLG5ldyBNYXAsZixYamUsZCksbS5mb3JFYWNoKGFlPT57Y29uc3QgcGU9VDEoXyxhZS5lbGVtZW50LG5ldyBNYXApO2FlLnBvc3RTdHlsZVByb3Bz''@;'; put 'put ''LmZvckVhY2goYmU9PnBlLnNldChiZSxudWxsKSl9KSk6KGQucHVzaChmdW5jdGlvbiByamUoKXtyZXR1cm4gbmV3IElyKDMzMDAsITEpfSgpKSxtPVtdKSxkLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiBpamUobCl7cmV0dXJuIG5ldyBJcigzNTA0LCExKX0oKTtfLmZvckVhY2goKGFlLHBlKT0+''@;'; put 'put ''e2FlLmZvckVhY2goKGJlLHhlKT0+e2FlLnNldCh4ZSx0aGlzLl9kcml2ZXIuY29tcHV0ZVN0eWxlKHBlLHhlLHEyKSl9KX0pO2NvbnN0IFg9UzQobS5tYXAoYWU9Pntjb25zdCBwZT1fLmdldChhZS5lbGVtZW50KTtyZXR1cm4gdGhpcy5fYnVpbGRQbGF5ZXIoYWUsbmV3IE1hcCxwZSl9KSk7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3BsYXllcnNCeUlkLnNldChjLFgpLFgub25EZXN0cm95KCgpPT50aGlzLmRlc3Ryb3koYykpLHRoaXMucGxheWVycy5wdXNoKFgpLFh9ZGVzdHJveShjKXtjb25zdCBhPXRoaXMuX2dldFBsYXllcihjKTthLmRlc3Ryb3koKSx0aGlzLl9wbGF5ZXJzQnlJZC5kZWxldGUo''@;'; put 'put ''Yyk7Y29uc3QgZj10aGlzLnBsYXllcnMuaW5kZXhPZihhKTtmPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKGYsMSl9X2dldFBsYXllcihjKXtjb25zdCBhPXRoaXMuX3BsYXllcnNCeUlkLmdldChjKTtpZighYSl0aHJvdyBmdW5jdGlvbiBvamUobCl7cmV0dXJuIG5ldyBJcigzMzAxLCExKX0o''@;'; put 'put ''KTtyZXR1cm4gYX1saXN0ZW4oYyxhLGYsZCl7Y29uc3QgaD1NWihhLCIiLCIiLCIiKTtyZXR1cm4gQ1oodGhpcy5fZ2V0UGxheWVyKGMpLGYsaCxkKSwoKT0+e319Y29tbWFuZChjLGEsZixkKXtpZigicmVnaXN0ZXIiPT1mKXJldHVybiB2b2lkIHRoaXMucmVnaXN0ZXIoYyxkWzBdKTtpZigi''@;'; put 'put ''Y3JlYXRlIj09ZilyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZShjLGEsZFswXXx8e30pO2NvbnN0IGg9dGhpcy5fZ2V0UGxheWVyKGMpO3N3aXRjaChmKXtjYXNlInBsYXkiOmgucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOmgucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjpoLnJlc2V0KCk7YnJl''@;'; put 'put ''YWs7Y2FzZSJyZXN0YXJ0IjpoLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6aC5maW5pc2goKTticmVhaztjYXNlImluaXQiOmguaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOmguc2V0UG9zaXRpb24ocGFyc2VGbG9hdChkWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlz''@;'; put 'put ''LmRlc3Ryb3koYyl9fX1jb25zdCBlY2U9Im5nLWFuaW1hdGUtcXVldWVkIixWWj0ibmctYW5pbWF0ZS1kaXNhYmxlZCIscnplPVtdLHRjZT17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDoh''@;'; put 'put ''MX0saXplPXtuYW1lc3BhY2VJZDoiIixzZXRGb3JNb3ZlOiExLHNldEZvclJlbW92YWw6ITEsaGFzQW5pbWF0aW9uOiExLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiEwfSxSZD0iX19uZ19yZW1vdmVkIjtjbGFzcyBCWntnZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9Y29u''@;'; put 'put ''c3RydWN0b3IoYyxhPSIiKXt0aGlzLm5hbWVzcGFjZUlkPWE7Y29uc3QgZj1jJiZjLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpO2lmKHRoaXMudmFsdWU9ZnVuY3Rpb24gc3plKGwpe3JldHVybiBsPz9udWxsfShmP2MudmFsdWU6YyksZil7Y29uc3QgaD1BUyhjKTtkZWxldGUgaC52YWx1ZSx0''@;'; put 'put ''aGlzLm9wdGlvbnM9aH1lbHNlIHRoaXMub3B0aW9ucz17fTt0aGlzLm9wdGlvbnMucGFyYW1zfHwodGhpcy5vcHRpb25zLnBhcmFtcz17fSl9YWJzb3JiT3B0aW9ucyhjKXtjb25zdCBhPWMucGFyYW1zO2lmKGEpe2NvbnN0IGY9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyhhKS5m''@;'; put 'put ''b3JFYWNoKGQ9PntudWxsPT1mW2RdJiYoZltkXT1hW2RdKX0pfX19Y29uc3QgRFM9InZvaWQiLGpaPW5ldyBCWihEUyk7Y2xhc3Mgb3ple2NvbnN0cnVjdG9yKGMsYSxmKXt0aGlzLmlkPWMsdGhpcy5ob3N0RWxlbWVudD1hLHRoaXMuX2VuZ2luZT1mLHRoaXMucGxheWVycz1bXSx0aGlzLl90''@;'; put 'put ''cmlnZ2Vycz1uZXcgTWFwLHRoaXMuX3F1ZXVlPVtdLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnM9bmV3IE1hcCx0aGlzLl9ob3N0Q2xhc3NOYW1lPSJuZy10bnMtIitjLFBmKGEsdGhpcy5faG9zdENsYXNzTmFtZSl9bGlzdGVuKGMsYSxmLGQpe2lmKCF0aGlzLl90cmlnZ2Vycy5oYXMoYSkpdGhy''@;'; put 'put ''b3cgZnVuY3Rpb24gYWplKGwsYyl7cmV0dXJuIG5ldyBJcigzMzAyLCExKX0oKTtpZihudWxsPT1mfHwwPT1mLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiBsamUobCl7cmV0dXJuIG5ldyBJcigzMzAzLCExKX0oKTtpZighZnVuY3Rpb24gdXplKGwpe3JldHVybiJzdGFydCI9PWx8fCJkb25lIj09''@;'; put 'put ''bH0oZikpdGhyb3cgZnVuY3Rpb24gc2plKGwsYyl7cmV0dXJuIG5ldyBJcigzNDAwLCExKX0oKTtjb25zdCBoPVQxKHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMsYyxbXSksbT17bmFtZTphLHBoYXNlOmYsY2FsbGJhY2s6ZH07aC5wdXNoKG0pO2NvbnN0IF89VDEodGhpcy5fZW5naW5lLnN0YXRl''@;'; put 'put ''c0J5RWxlbWVudCxjLG5ldyBNYXApO3JldHVybiBfLmhhcyhhKXx8KFBmKGMsQ0kpLFBmKGMsQ0krIi0iK2EpLF8uc2V0KGEsalopKSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57Y29uc3QgTz1oLmluZGV4T2YobSk7Tz49MCYmaC5zcGxpY2UoTywxKSx0aGlzLl90cmlnZ2Vy''@;'; put 'put ''cy5oYXMoYSl8fF8uZGVsZXRlKGEpfSl9fXJlZ2lzdGVyKGMsYSl7cmV0dXJuIXRoaXMuX3RyaWdnZXJzLmhhcyhjKSYmKHRoaXMuX3RyaWdnZXJzLnNldChjLGEpLCEwKX1fZ2V0VHJpZ2dlcihjKXtjb25zdCBhPXRoaXMuX3RyaWdnZXJzLmdldChjKTtpZighYSl0aHJvdyBmdW5jdGlvbiB1''@;'; put 'put ''amUobCl7cmV0dXJuIG5ldyBJcigzNDAxLCExKX0oKTtyZXR1cm4gYX10cmlnZ2VyKGMsYSxmLGQ9ITApe2NvbnN0IGg9dGhpcy5fZ2V0VHJpZ2dlcihhKSxtPW5ldyB6Wih0aGlzLmlkLGEsYyk7bGV0IF89dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQoYyk7X3x8KFBmKGMsQ0kp''@;'; put 'put ''LFBmKGMsQ0krIi0iK2EpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuc2V0KGMsXz1uZXcgTWFwKSk7bGV0IE89Xy5nZXQoYSk7Y29uc3QgWD1uZXcgQlooZix0aGlzLmlkKTtpZighKGYmJmYuaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZPJiZYLmFic29yYk9wdGlvbnMoTy5vcHRp''@;'; put 'put ''b25zKSxfLnNldChhLFgpLE98fChPPWpaKSxYLnZhbHVlIT09RFMmJk8udmFsdWU9PT1YLnZhbHVlKXtpZighZnVuY3Rpb24gZHplKGwsYyl7Y29uc3QgYT1PYmplY3Qua2V5cyhsKSxmPU9iamVjdC5rZXlzKGMpO2lmKGEubGVuZ3RoIT1mLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGQ9MDtk''@;'; put 'put ''PGEubGVuZ3RoO2QrKyl7Y29uc3QgaD1hW2RdO2lmKCFjLmhhc093blByb3BlcnR5KGgpfHxsW2hdIT09Y1toXSlyZXR1cm4hMX1yZXR1cm4hMH0oTy5wYXJhbXMsWC5wYXJhbXMpKXtjb25zdCBaZT1bXSxsdD1oLm1hdGNoU3R5bGVzKE8udmFsdWUsTy5wYXJhbXMsWmUpLGR0PWgubWF0Y2hT''@;'; put 'put ''dHlsZXMoWC52YWx1ZSxYLnBhcmFtcyxaZSk7WmUubGVuZ3RoP3RoaXMuX2VuZ2luZS5yZXBvcnRFcnJvcihaZSk6dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCk9PntoNShjLGx0KSxMaChjLGR0KX0pfXJldHVybn1jb25zdCBiZT1UMSh0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudCxj''@;'; put 'put ''LFtdKTtiZS5mb3JFYWNoKFplPT57WmUubmFtZXNwYWNlSWQ9PXRoaXMuaWQmJlplLnRyaWdnZXJOYW1lPT1hJiZaZS5xdWV1ZWQmJlplLmRlc3Ryb3koKX0pO2xldCB4ZT1oLm1hdGNoVHJhbnNpdGlvbihPLnZhbHVlLFgudmFsdWUsYyxYLnBhcmFtcyksVmU9ITE7aWYoIXhlKXtpZighZCly''@;'; put 'put ''ZXR1cm47eGU9aC5mYWxsYmFja1RyYW5zaXRpb24sVmU9ITB9cmV0dXJuIHRoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OmMsdHJpZ2dlck5hbWU6YSx0cmFuc2l0aW9uOnhlLGZyb21TdGF0ZTpPLHRvU3RhdGU6WCxwbGF5ZXI6bSxp''@;'; put 'put ''c0ZhbGxiYWNrVHJhbnNpdGlvbjpWZX0pLFZlfHwoUGYoYyxlY2UpLG0ub25TdGFydCgoKT0+e0k3KGMsZWNlKX0pKSxtLm9uRG9uZSgoKT0+e2xldCBaZT10aGlzLnBsYXllcnMuaW5kZXhPZihtKTtaZT49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShaZSwxKTtjb25zdCBsdD10aGlzLl9lbmdp''@;'; put 'put ''bmUucGxheWVyc0J5RWxlbWVudC5nZXQoYyk7aWYobHQpe2xldCBkdD1sdC5pbmRleE9mKG0pO2R0Pj0wJiZsdC5zcGxpY2UoZHQsMSl9fSksdGhpcy5wbGF5ZXJzLnB1c2gobSksYmUucHVzaChtKSxtfWRlcmVnaXN0ZXIoYyl7dGhpcy5fdHJpZ2dlcnMuZGVsZXRlKGMpLHRoaXMuX2VuZ2lu''@;'; put 'put ''ZS5zdGF0ZXNCeUVsZW1lbnQuZm9yRWFjaChhPT5hLmRlbGV0ZShjKSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKChhLGYpPT57dGhpcy5fZWxlbWVudExpc3RlbmVycy5zZXQoZixhLmZpbHRlcihkPT5kLm5hbWUhPWMpKX0pfWNsZWFyRWxlbWVudENhY2hlKGMpe3RoaXMuX2Vu''@;'; put 'put ''Z2luZS5zdGF0ZXNCeUVsZW1lbnQuZGVsZXRlKGMpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZGVsZXRlKGMpO2NvbnN0IGE9dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGMpO2EmJihhLmZvckVhY2goZj0+Zi5kZXN0cm95KCkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVt''@;'; put 'put ''ZW50LmRlbGV0ZShjKSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGMsYSl7Y29uc3QgZj10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KGMsU0ksITApO2YuZm9yRWFjaChkPT57aWYoZFtSZF0pcmV0dXJuO2NvbnN0IGg9dGhpcy5fZW5naW5lLmZldGNoTmFtZXNwYWNlc0J5RWxl''@;'; put 'put ''bWVudChkKTtoLnNpemU/aC5mb3JFYWNoKG09Pm0udHJpZ2dlckxlYXZlQW5pbWF0aW9uKGQsYSwhMSwhMCkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoZCl9KSx0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT5mLmZvckVhY2goZD0+dGhpcy5jbGVhckVsZW1lbnRD''@;'; put 'put ''YWNoZShkKSkpfXRyaWdnZXJMZWF2ZUFuaW1hdGlvbihjLGEsZixkKXtjb25zdCBoPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KGMpLG09bmV3IE1hcDtpZihoKXtjb25zdCBfPVtdO2lmKGguZm9yRWFjaCgoTyxYKT0+e2lmKG0uc2V0KFgsTy52YWx1ZSksdGhpcy5fdHJpZ2dl''@;'; put 'put ''cnMuaGFzKFgpKXtjb25zdCBhZT10aGlzLnRyaWdnZXIoYyxYLERTLGQpO2FlJiZfLnB1c2goYWUpfX0pLF8ubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCxjLCEwLGEsbSksZiYmUzQoXykub25Eb25lKCgpPT50aGlzLl9lbmdpbmUucHJv''@;'; put 'put ''Y2Vzc0xlYXZlTm9kZShjKSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKGMpe2NvbnN0IGE9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQoYyksZj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChjKTtpZihhJiZmKXtjb25zdCBkPW5ldyBTZXQ7''@;'; put 'put ''YS5mb3JFYWNoKGg9Pntjb25zdCBtPWgubmFtZTtpZihkLmhhcyhtKSlyZXR1cm47ZC5hZGQobSk7Y29uc3QgTz10aGlzLl90cmlnZ2Vycy5nZXQobSkuZmFsbGJhY2tUcmFuc2l0aW9uLFg9Zi5nZXQobSl8fGpaLGFlPW5ldyBCWihEUykscGU9bmV3IHpaKHRoaXMuaWQsbSxjKTt0aGlzLl9l''@;'; put 'put ''bmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDpjLHRyaWdnZXJOYW1lOm0sdHJhbnNpdGlvbjpPLGZyb21TdGF0ZTpYLHRvU3RhdGU6YWUscGxheWVyOnBlLGlzRmFsbGJhY2tUcmFuc2l0aW9uOiEwfSl9KX19cmVtb3ZlTm9kZShjLGEpe2NvbnN0''@;'; put 'put ''IGY9dGhpcy5fZW5naW5lO2lmKGMuY2hpbGRFbGVtZW50Q291bnQmJnRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGMsYSksdGhpcy50cmlnZ2VyTGVhdmVBbmltYXRpb24oYyxhLCEwKSlyZXR1cm47bGV0IGQ9ITE7aWYoZi50b3RhbEFuaW1hdGlvbnMpe2NvbnN0IGg9Zi5w''@;'; put 'put ''bGF5ZXJzLmxlbmd0aD9mLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldChjKTpbXTtpZihoJiZoLmxlbmd0aClkPSEwO2Vsc2V7bGV0IG09Yztmb3IoO209bS5wYXJlbnROb2RlOylpZihmLnN0YXRlc0J5RWxlbWVudC5nZXQobSkpe2Q9ITA7YnJlYWt9fX1pZih0aGlzLnByZXBhcmVMZWF2''@;'; put 'put ''ZUFuaW1hdGlvbkxpc3RlbmVycyhjKSxkKWYubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCxjLCExLGEpO2Vsc2V7Y29uc3QgaD1jW1JkXTsoIWh8fGg9PT10Y2UpJiYoZi5hZnRlckZsdXNoKCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKGMpKSxmLmRlc3Ryb3lJbm5lckFuaW1hdGlv''@;'; put 'put ''bnMoYyksZi5fb25SZW1vdmFsQ29tcGxldGUoYyxhKSl9fWluc2VydE5vZGUoYyxhKXtQZihjLHRoaXMuX2hvc3RDbGFzc05hbWUpfWRyYWluUXVldWVkVHJhbnNpdGlvbnMoYyl7Y29uc3QgYT1bXTtyZXR1cm4gdGhpcy5fcXVldWUuZm9yRWFjaChmPT57Y29uc3QgZD1mLnBsYXllcjtpZihk''@;'; put 'put ''LmRlc3Ryb3llZClyZXR1cm47Y29uc3QgaD1mLmVsZW1lbnQsbT10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChoKTttJiZtLmZvckVhY2goXz0+e2lmKF8ubmFtZT09Zi50cmlnZ2VyTmFtZSl7Y29uc3QgTz1NWihoLGYudHJpZ2dlck5hbWUsZi5mcm9tU3RhdGUudmFsdWUsZi50b1N0YXRl''@;'; put 'put ''LnZhbHVlKTtPLl9kYXRhPWMsQ1ooZi5wbGF5ZXIsXy5waGFzZSxPLF8uY2FsbGJhY2spfX0pLGQubWFya2VkRm9yRGVzdHJveT90aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKT0+e2QuZGVzdHJveSgpfSk6YS5wdXNoKGYpfSksdGhpcy5fcXVldWU9W10sYS5zb3J0KChmLGQpPT57Y29uc3Qg''@;'; put 'put ''aD1mLnRyYW5zaXRpb24uYXN0LmRlcENvdW50LG09ZC50cmFuc2l0aW9uLmFzdC5kZXBDb3VudDtyZXR1cm4gMD09aHx8MD09bT9oLW06dGhpcy5fZW5naW5lLmRyaXZlci5jb250YWluc0VsZW1lbnQoZi5lbGVtZW50LGQuZWxlbWVudCk/MTotMX0pfWRlc3Ryb3koYyl7dGhpcy5wbGF5ZXJz''@;'; put 'put ''LmZvckVhY2goYT0+YS5kZXN0cm95KCkpLHRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHRoaXMuaG9zdEVsZW1lbnQsYyl9fWNsYXNzIGF6ZXtfb25SZW1vdmFsQ29tcGxldGUoYyxhKXt0aGlzLm9uUmVtb3ZhbENvbXBsZXRlKGMsYSl9Y29uc3RydWN0b3IoYyxhLGYpe3Ro''@;'; put 'put ''aXMuYm9keU5vZGU9Yyx0aGlzLmRyaXZlcj1hLHRoaXMuX25vcm1hbGl6ZXI9Zix0aGlzLnBsYXllcnM9W10sdGhpcy5uZXdIb3N0RWxlbWVudHM9bmV3IE1hcCx0aGlzLnBsYXllcnNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50PW5ldyBNYXAsdGhpcy5z''@;'; put 'put ''dGF0ZXNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLmRpc2FibGVkTm9kZXM9bmV3IFNldCx0aGlzLnRvdGFsQW5pbWF0aW9ucz0wLHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzPTAsdGhpcy5fbmFtZXNwYWNlTG9va3VwPXt9LHRoaXMuX25hbWVzcGFjZUxpc3Q9W10sdGhpcy5fZmx1c2hGbnM9W10s''@;'; put 'put ''dGhpcy5fd2hlblF1aWV0Rm5zPVtdLHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQ9bmV3IE1hcCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHM9W10sdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzPVtdLHRoaXMub25SZW1vdmFsQ29tcGxldGU9KGQsaCk9Pnt9fWdldCBxdWV1ZWRQ''@;'; put 'put ''bGF5ZXJzKCl7Y29uc3QgYz1bXTtyZXR1cm4gdGhpcy5fbmFtZXNwYWNlTGlzdC5mb3JFYWNoKGE9PnthLnBsYXllcnMuZm9yRWFjaChmPT57Zi5xdWV1ZWQmJmMucHVzaChmKX0pfSksY31jcmVhdGVOYW1lc3BhY2UoYyxhKXtjb25zdCBmPW5ldyBvemUoYyxhLHRoaXMpO3JldHVybiB0aGlz''@;'; put 'put ''LmJvZHlOb2RlJiZ0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQodGhpcy5ib2R5Tm9kZSxhKT90aGlzLl9iYWxhbmNlTmFtZXNwYWNlTGlzdChmLGEpOih0aGlzLm5ld0hvc3RFbGVtZW50cy5zZXQoYSxmKSx0aGlzLmNvbGxlY3RFbnRlckVsZW1lbnQoYSkpLHRoaXMuX25hbWVzcGFjZUxv''@;'; put 'put ''b2t1cFtjXT1mfV9iYWxhbmNlTmFtZXNwYWNlTGlzdChjLGEpe2NvbnN0IGY9dGhpcy5fbmFtZXNwYWNlTGlzdCxkPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQ7aWYoZi5sZW5ndGgtMT49MCl7bGV0IG09ITEsXz10aGlzLmRyaXZlci5nZXRQYXJlbnRFbGVtZW50KGEpO2Zvcig7Xzsp''@;'; put 'put ''e2NvbnN0IE89ZC5nZXQoXyk7aWYoTyl7Y29uc3QgWD1mLmluZGV4T2YoTyk7Zi5zcGxpY2UoWCsxLDAsYyksbT0hMDticmVha31fPXRoaXMuZHJpdmVyLmdldFBhcmVudEVsZW1lbnQoXyl9bXx8Zi51bnNoaWZ0KGMpfWVsc2UgZi5wdXNoKGMpO3JldHVybiBkLnNldChhLGMpLGN9cmVnaXN0''@;'; put 'put ''ZXIoYyxhKXtsZXQgZj10aGlzLl9uYW1lc3BhY2VMb29rdXBbY107cmV0dXJuIGZ8fChmPXRoaXMuY3JlYXRlTmFtZXNwYWNlKGMsYSkpLGZ9cmVnaXN0ZXJUcmlnZ2VyKGMsYSxmKXtsZXQgZD10aGlzLl9uYW1lc3BhY2VMb29rdXBbY107ZCYmZC5yZWdpc3RlcihhLGYpJiZ0aGlzLnRvdGFs''@;'; put 'put ''QW5pbWF0aW9ucysrfWRlc3Ryb3koYyxhKXtjJiYodGhpcy5hZnRlckZsdXNoKCgpPT57fSksdGhpcy5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCk9Pntjb25zdCBmPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGMpO3RoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZGVsZXRlKGYuaG9zdEVs''@;'; put 'put ''ZW1lbnQpO2NvbnN0IGQ9dGhpcy5fbmFtZXNwYWNlTGlzdC5pbmRleE9mKGYpO2Q+PTAmJnRoaXMuX25hbWVzcGFjZUxpc3Quc3BsaWNlKGQsMSksZi5kZXN0cm95KGEpLGRlbGV0ZSB0aGlzLl9uYW1lc3BhY2VMb29rdXBbY119KSl9X2ZldGNoTmFtZXNwYWNlKGMpe3JldHVybiB0aGlzLl9u''@;'; put 'put ''YW1lc3BhY2VMb29rdXBbY119ZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KGMpe2NvbnN0IGE9bmV3IFNldCxmPXRoaXMuc3RhdGVzQnlFbGVtZW50LmdldChjKTtpZihmKWZvcihsZXQgZCBvZiBmLnZhbHVlcygpKWlmKGQubmFtZXNwYWNlSWQpe2NvbnN0IGg9dGhpcy5fZmV0Y2hOYW1lc3Bh''@;'; put 'put ''Y2UoZC5uYW1lc3BhY2VJZCk7aCYmYS5hZGQoaCl9cmV0dXJuIGF9dHJpZ2dlcihjLGEsZixkKXtpZihJSShhKSl7Y29uc3QgaD10aGlzLl9mZXRjaE5hbWVzcGFjZShjKTtpZihoKXJldHVybiBoLnRyaWdnZXIoYSxmLGQpLCEwfXJldHVybiExfWluc2VydE5vZGUoYyxhLGYsZCl7aWYoIUlJ''@;'; put 'put ''KGEpKXJldHVybjtjb25zdCBoPWFbUmRdO2lmKGgmJmguc2V0Rm9yUmVtb3ZhbCl7aC5zZXRGb3JSZW1vdmFsPSExLGguc2V0Rm9yTW92ZT0hMDtjb25zdCBtPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5pbmRleE9mKGEpO20+PTAmJnRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5z''@;'; put 'put ''cGxpY2UobSwxKX1pZihjKXtjb25zdCBtPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGMpO20mJm0uaW5zZXJ0Tm9kZShhLGYpfWQmJnRoaXMuY29sbGVjdEVudGVyRWxlbWVudChhKX1jb2xsZWN0RW50ZXJFbGVtZW50KGMpe3RoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5wdXNoKGMpfW1hcmtF''@;'; put 'put ''bGVtZW50QXNEaXNhYmxlZChjLGEpe2E/dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyhjKXx8KHRoaXMuZGlzYWJsZWROb2Rlcy5hZGQoYyksUGYoYyxWWikpOnRoaXMuZGlzYWJsZWROb2Rlcy5oYXMoYykmJih0aGlzLmRpc2FibGVkTm9kZXMuZGVsZXRlKGMpLEk3KGMsVlopKX1yZW1vdmVOb2Rl''@;'; put 'put ''KGMsYSxmKXtpZihJSShhKSl7Y29uc3QgZD1jP3RoaXMuX2ZldGNoTmFtZXNwYWNlKGMpOm51bGw7ZD9kLnJlbW92ZU5vZGUoYSxmKTp0aGlzLm1hcmtFbGVtZW50QXNSZW1vdmVkKGMsYSwhMSxmKTtjb25zdCBoPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZ2V0KGEpO2gmJmguaWQh''@;'; put 'put ''PT1jJiZoLnJlbW92ZU5vZGUoYSxmKX1lbHNlIHRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKGEsZil9bWFya0VsZW1lbnRBc1JlbW92ZWQoYyxhLGYsZCxoKXt0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMucHVzaChhKSxhW1JkXT17bmFtZXNwYWNlSWQ6YyxzZXRGb3JSZW1vdmFsOmQsaGFz''@;'; put 'put ''QW5pbWF0aW9uOmYscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITEscHJldmlvdXNUcmlnZ2Vyc1ZhbHVlczpofX1saXN0ZW4oYyxhLGYsZCxoKXtyZXR1cm4gSUkoYSk/dGhpcy5fZmV0Y2hOYW1lc3BhY2UoYykubGlzdGVuKGEsZixkLGgpOigpPT57fX1fYnVpbGRJbnN0cnVjdGlvbihjLGEsZixk''@;'; put 'put ''LGgpe3JldHVybiBjLnRyYW5zaXRpb24uYnVpbGQodGhpcy5kcml2ZXIsYy5lbGVtZW50LGMuZnJvbVN0YXRlLnZhbHVlLGMudG9TdGF0ZS52YWx1ZSxmLGQsYy5mcm9tU3RhdGUub3B0aW9ucyxjLnRvU3RhdGUub3B0aW9ucyxhLGgpfWRlc3Ryb3lJbm5lckFuaW1hdGlvbnMoYyl7bGV0IGE9''@;'; put 'put ''dGhpcy5kcml2ZXIucXVlcnkoYyxTSSwhMCk7YS5mb3JFYWNoKGY9PnRoaXMuZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KGYpKSwwIT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LnNpemUmJihhPXRoaXMuZHJpdmVyLnF1ZXJ5KGMsQVosITApLGEuZm9yRWFjaChmPT50''@;'; put 'put ''aGlzLmZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQoZikpKX1kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoYyl7Y29uc3QgYT10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGMpO2EmJmEuZm9yRWFjaChmPT57Zi5xdWV1ZWQ/Zi5tYXJrZWRGb3JEZXN0cm95''@;'; put 'put ''PSEwOmYuZGVzdHJveSgpfSl9ZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudChjKXtjb25zdCBhPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KGMpO2EmJmEuZm9yRWFjaChmPT5mLmZpbmlzaCgpKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiBuZXcgUHJv''@;'; put 'put ''bWlzZShjPT57aWYodGhpcy5wbGF5ZXJzLmxlbmd0aClyZXR1cm4gUzQodGhpcy5wbGF5ZXJzKS5vbkRvbmUoKCk9PmMoKSk7YygpfSl9cHJvY2Vzc0xlYXZlTm9kZShjKXtjb25zdCBhPWNbUmRdO2lmKGEmJmEuc2V0Rm9yUmVtb3ZhbCl7aWYoY1tSZF09dGNlLGEubmFtZXNwYWNlSWQpe3Ro''@;'; put 'put ''aXMuZGVzdHJveUlubmVyQW5pbWF0aW9ucyhjKTtjb25zdCBmPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGEubmFtZXNwYWNlSWQpO2YmJmYuY2xlYXJFbGVtZW50Q2FjaGUoYyl9dGhpcy5fb25SZW1vdmFsQ29tcGxldGUoYyxhLnNldEZvclJlbW92YWwpfWMuY2xhc3NMaXN0Py5jb250YWlucyhW''@;'; put 'put ''WikmJnRoaXMubWFya0VsZW1lbnRBc0Rpc2FibGVkKGMsITEpLHRoaXMuZHJpdmVyLnF1ZXJ5KGMsIi5uZy1hbmltYXRlLWRpc2FibGVkIiwhMCkuZm9yRWFjaChmPT57dGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQoZiwhMSl9KX1mbHVzaChjPS0xKXtsZXQgYT1bXTtpZih0aGlzLm5ld0hv''@;'; put 'put ''c3RFbGVtZW50cy5zaXplJiYodGhpcy5uZXdIb3N0RWxlbWVudHMuZm9yRWFjaCgoZixkKT0+dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QoZixkKSksdGhpcy5uZXdIb3N0RWxlbWVudHMuY2xlYXIoKSksdGhpcy50b3RhbEFuaW1hdGlvbnMmJnRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50''@;'; put 'put ''cy5sZW5ndGgpZm9yKGxldCBmPTA7Zjx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoO2YrKylQZih0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHNbZl0sIm5nLXN0YXItaW5zZXJ0ZWQiKTtpZih0aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aCYmKHRoaXMudG90YWxRdWV1ZWRQ''@;'; put 'put ''bGF5ZXJzfHx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoKSl7Y29uc3QgZj1bXTt0cnl7YT10aGlzLl9mbHVzaEFuaW1hdGlvbnMoZixjKX1maW5hbGx5e2ZvcihsZXQgZD0wO2Q8Zi5sZW5ndGg7ZCsrKWZbZF0oKX19ZWxzZSBmb3IobGV0IGY9MDtmPHRoaXMuY29sbGVjdGVk''@;'; put 'put ''TGVhdmVFbGVtZW50cy5sZW5ndGg7ZisrKXRoaXMucHJvY2Vzc0xlYXZlTm9kZSh0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHNbZl0pO2lmKHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzPTAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuY29sbGVjdGVkTGVhdmVF''@;'; put 'put ''bGVtZW50cy5sZW5ndGg9MCx0aGlzLl9mbHVzaEZucy5mb3JFYWNoKGY9PmYoKSksdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zLmxlbmd0aCl7Y29uc3QgZj10aGlzLl93aGVuUXVpZXRGbnM7dGhpcy5fd2hlblF1aWV0Rm5zPVtdLGEubGVuZ3RoP1M0KGEpLm9uRG9uZSgo''@;'; put 'put ''KT0+e2YuZm9yRWFjaChkPT5kKCkpfSk6Zi5mb3JFYWNoKGQ9PmQoKSl9fXJlcG9ydEVycm9yKGMpe3Rocm93IGZ1bmN0aW9uIGNqZShsKXtyZXR1cm4gbmV3IElyKDM0MDIsITEpfSgpfV9mbHVzaEFuaW1hdGlvbnMoYyxhKXtjb25zdCBmPW5ldyBUSSxkPVtdLGg9bmV3IE1hcCxtPVtdLF89''@;'; put 'put ''bmV3IE1hcCxPPW5ldyBNYXAsWD1uZXcgTWFwLGFlPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goVm49PnthZS5hZGQoVm4pO2NvbnN0IGNyPXRoaXMuZHJpdmVyLnF1ZXJ5KFZuLCIubmctYW5pbWF0ZS1xdWV1ZWQiLCEwKTtmb3IobGV0IENyPTA7Q3I8Y3IubGVuZ3RoO0Ny''@;'; put 'put ''KyspYWUuYWRkKGNyW0NyXSl9KTtjb25zdCBwZT10aGlzLmJvZHlOb2RlLGJlPUFycmF5LmZyb20odGhpcy5zdGF0ZXNCeUVsZW1lbnQua2V5cygpKSx4ZT1pY2UoYmUsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSxWZT1uZXcgTWFwO2xldCBaZT0wO3hlLmZvckVhY2goKFZuLGNyKT0+''@;'; put 'put ''e2NvbnN0IENyPXhaK1plKys7VmUuc2V0KGNyLENyKSxWbi5mb3JFYWNoKFlyPT5QZihZcixDcikpfSk7Y29uc3QgbHQ9W10sZHQ9bmV3IFNldCxndD1uZXcgU2V0O2ZvcihsZXQgVm49MDtWbjx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO1ZuKyspe2NvbnN0IGNyPXRoaXMu''@;'; put 'put ''Y29sbGVjdGVkTGVhdmVFbGVtZW50c1tWbl0sQ3I9Y3JbUmRdO0NyJiZDci5zZXRGb3JSZW1vdmFsJiYobHQucHVzaChjciksZHQuYWRkKGNyKSxDci5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkoY3IsIi5uZy1zdGFyLWluc2VydGVkIiwhMCkuZm9yRWFjaChZcj0+ZHQuYWRkKFly''@;'; put 'put ''KSk6Z3QuYWRkKGNyKSl9Y29uc3QganQ9bmV3IE1hcCxybj1pY2UoYmUsQXJyYXkuZnJvbShkdCkpO3JuLmZvckVhY2goKFZuLGNyKT0+e2NvbnN0IENyPXdJK1plKys7anQuc2V0KGNyLENyKSxWbi5mb3JFYWNoKFlyPT5QZihZcixDcikpfSksYy5wdXNoKCgpPT57eGUuZm9yRWFjaCgoVm4s''@;'; put 'put ''Y3IpPT57Y29uc3QgQ3I9VmUuZ2V0KGNyKTtWbi5mb3JFYWNoKFlyPT5JNyhZcixDcikpfSkscm4uZm9yRWFjaCgoVm4sY3IpPT57Y29uc3QgQ3I9anQuZ2V0KGNyKTtWbi5mb3JFYWNoKFlyPT5JNyhZcixDcikpfSksbHQuZm9yRWFjaChWbj0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZShWbil9''@;'; put 'put ''KX0pO2NvbnN0IFh0PVtdLHluPVtdO2ZvcihsZXQgVm49dGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgtMTtWbj49MDtWbi0tKXRoaXMuX25hbWVzcGFjZUxpc3RbVm5dLmRyYWluUXVldWVkVHJhbnNpdGlvbnMoYSkuZm9yRWFjaChDcj0+e2NvbnN0IFlyPUNyLnBsYXllcixTdD1Dci5lbGVt''@;'; put 'put ''ZW50O2lmKFh0LnB1c2goWXIpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2NvbnN0IExyPVN0W1JkXTtpZihMciYmTHIuc2V0Rm9yTW92ZSl7aWYoTHIucHJldmlvdXNUcmlnZ2Vyc1ZhbHVlcyYmTHIucHJldmlvdXNUcmlnZ2Vyc1ZhbHVlcy5oYXMoQ3IudHJpZ2dlck5h''@;'; put 'put ''bWUpKXtjb25zdCBOcj1Mci5wcmV2aW91c1RyaWdnZXJzVmFsdWVzLmdldChDci50cmlnZ2VyTmFtZSksZGk9dGhpcy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KENyLmVsZW1lbnQpO2lmKGRpJiZkaS5oYXMoQ3IudHJpZ2dlck5hbWUpKXtjb25zdCBxcj1kaS5nZXQoQ3IudHJpZ2dlck5hbWUpO3Fy''@;'; put 'put ''LnZhbHVlPU5yLGRpLnNldChDci50cmlnZ2VyTmFtZSxxcil9fXJldHVybiB2b2lkIFlyLmRlc3Ryb3koKX19Y29uc3QgRnQ9IXBlfHwhdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHBlLFN0KSxXdD1qdC5nZXQoU3QpLHduPVZlLmdldChTdCksU249dGhpcy5fYnVpbGRJbnN0cnVjdGlv''@;'; put 'put ''bihDcixmLHduLFd0LEZ0KTtpZihTbi5lcnJvcnMmJlNuLmVycm9ycy5sZW5ndGgpcmV0dXJuIHZvaWQgeW4ucHVzaChTbik7aWYoRnQpcmV0dXJuIFlyLm9uU3RhcnQoKCk9Pmg1KFN0LFNuLmZyb21TdHlsZXMpKSxZci5vbkRlc3Ryb3koKCk9PkxoKFN0LFNuLnRvU3R5bGVzKSksdm9pZCBk''@;'; put 'put ''LnB1c2goWXIpO2lmKENyLmlzRmFsbGJhY2tUcmFuc2l0aW9uKXJldHVybiBZci5vblN0YXJ0KCgpPT5oNShTdCxTbi5mcm9tU3R5bGVzKSksWXIub25EZXN0cm95KCgpPT5MaChTdCxTbi50b1N0eWxlcykpLHZvaWQgZC5wdXNoKFlyKTtjb25zdCBicj1bXTtTbi50aW1lbGluZXMuZm9yRWFj''@;'; put 'put ''aChMcj0+e0xyLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lPSEwLHRoaXMuZGlzYWJsZWROb2Rlcy5oYXMoTHIuZWxlbWVudCl8fGJyLnB1c2goTHIpfSksU24udGltZWxpbmVzPWJyLGYuYXBwZW5kKFN0LFNuLnRpbWVsaW5lcyksbS5wdXNoKHtpbnN0cnVjdGlvbjpTbixwbGF5ZXI6WXIsZWxl''@;'; put 'put ''bWVudDpTdH0pLFNuLnF1ZXJpZWRFbGVtZW50cy5mb3JFYWNoKExyPT5UMShfLExyLFtdKS5wdXNoKFlyKSksU24ucHJlU3R5bGVQcm9wcy5mb3JFYWNoKChMcixOcik9PntpZihMci5zaXplKXtsZXQgZGk9Ty5nZXQoTnIpO2RpfHxPLnNldChOcixkaT1uZXcgU2V0KSxMci5mb3JFYWNoKChx''@;'; put 'put ''cixSaSk9PmRpLmFkZChSaSkpfX0pLFNuLnBvc3RTdHlsZVByb3BzLmZvckVhY2goKExyLE5yKT0+e2xldCBkaT1YLmdldChOcik7ZGl8fFguc2V0KE5yLGRpPW5ldyBTZXQpLExyLmZvckVhY2goKHFyLFJpKT0+ZGkuYWRkKFJpKSl9KX0pO2lmKHluLmxlbmd0aCl7Y29uc3QgVm49W107eW4u''@;'; put 'put ''Zm9yRWFjaChjcj0+e1ZuLnB1c2goZnVuY3Rpb24gZmplKGwsYyl7cmV0dXJuIG5ldyBJcigzNTA1LCExKX0oKSl9KSxYdC5mb3JFYWNoKGNyPT5jci5kZXN0cm95KCkpLHRoaXMucmVwb3J0RXJyb3IoVm4pfWNvbnN0IFFuPW5ldyBNYXAsT3I9bmV3IE1hcDttLmZvckVhY2goVm49Pntjb25z''@;'; put 'put ''dCBjcj1Wbi5lbGVtZW50O2YuaGFzKGNyKSYmKE9yLnNldChjcixjciksdGhpcy5fYmVmb3JlQW5pbWF0aW9uQnVpbGQoVm4ucGxheWVyLm5hbWVzcGFjZUlkLFZuLmluc3RydWN0aW9uLFFuKSl9KSxkLmZvckVhY2goVm49Pntjb25zdCBjcj1Wbi5lbGVtZW50O3RoaXMuX2dldFByZXZpb3Vz''@;'; put 'put ''UGxheWVycyhjciwhMSxWbi5uYW1lc3BhY2VJZCxWbi50cmlnZ2VyTmFtZSxudWxsKS5mb3JFYWNoKFlyPT57VDEoUW4sY3IsW10pLnB1c2goWXIpLFlyLmRlc3Ryb3koKX0pfSk7Y29uc3QgVnI9bHQuZmlsdGVyKFZuPT5hY2UoVm4sTyxYKSksWnI9bmV3IE1hcDtyY2UoWnIsdGhpcy5kcml2''@;'; put 'put ''ZXIsZ3QsWCxxMikuZm9yRWFjaChWbj0+e2FjZShWbixPLFgpJiZWci5wdXNoKFZuKX0pO2NvbnN0IHNpPW5ldyBNYXA7eGUuZm9yRWFjaCgoVm4sY3IpPT57cmNlKHNpLHRoaXMuZHJpdmVyLG5ldyBTZXQoVm4pLE8sIiEiKX0pLFZyLmZvckVhY2goVm49Pntjb25zdCBjcj1aci5nZXQoVm4p''@;'; put 'put ''LENyPXNpLmdldChWbik7WnIuc2V0KFZuLG5ldyBNYXAoWy4uLmNyPy5lbnRyaWVzKCk/P1tdLC4uLkNyPy5lbnRyaWVzKCk/P1tdXSkpfSk7Y29uc3QgQXI9W10sRW49W10sVHI9e307bS5mb3JFYWNoKFZuPT57Y29uc3R7ZWxlbWVudDpjcixwbGF5ZXI6Q3IsaW5zdHJ1Y3Rpb246WXJ9PVZu''@;'; put 'put ''O2lmKGYuaGFzKGNyKSl7aWYoYWUuaGFzKGNyKSlyZXR1cm4gQ3Iub25EZXN0cm95KCgpPT5MaChjcixZci50b1N0eWxlcykpLENyLmRpc2FibGVkPSEwLENyLm92ZXJyaWRlVG90YWxUaW1lKFlyLnRvdGFsVGltZSksdm9pZCBkLnB1c2goQ3IpO2xldCBTdD1UcjtpZihPci5zaXplPjEpe2xl''@;'; put 'put ''dCBXdD1jcjtjb25zdCB3bj1bXTtmb3IoO1d0PVd0LnBhcmVudE5vZGU7KXtjb25zdCBTbj1Pci5nZXQoV3QpO2lmKFNuKXtTdD1TbjticmVha313bi5wdXNoKFd0KX13bi5mb3JFYWNoKFNuPT5Pci5zZXQoU24sU3QpKX1jb25zdCBGdD10aGlzLl9idWlsZEFuaW1hdGlvbihDci5uYW1lc3Bh''@;'; put 'put ''Y2VJZCxZcixRbixoLHNpLFpyKTtpZihDci5zZXRSZWFsUGxheWVyKEZ0KSxTdD09PVRyKUFyLnB1c2goQ3IpO2Vsc2V7Y29uc3QgV3Q9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldChTdCk7V3QmJld0Lmxlbmd0aCYmKENyLnBhcmVudFBsYXllcj1TNChXdCkpLGQucHVzaChDcil9fWVsc2Ug''@;'; put 'put ''aDUoY3IsWXIuZnJvbVN0eWxlcyksQ3Iub25EZXN0cm95KCgpPT5MaChjcixZci50b1N0eWxlcykpLEVuLnB1c2goQ3IpLGFlLmhhcyhjcikmJmQucHVzaChDcil9KSxFbi5mb3JFYWNoKFZuPT57Y29uc3QgY3I9aC5nZXQoVm4uZWxlbWVudCk7aWYoY3ImJmNyLmxlbmd0aCl7Y29uc3QgQ3I9''@;'; put 'put ''UzQoY3IpO1ZuLnNldFJlYWxQbGF5ZXIoQ3IpfX0pLGQuZm9yRWFjaChWbj0+e1ZuLnBhcmVudFBsYXllcj9Wbi5zeW5jUGxheWVyRXZlbnRzKFZuLnBhcmVudFBsYXllcik6Vm4uZGVzdHJveSgpfSk7Zm9yKGxldCBWbj0wO1ZuPGx0Lmxlbmd0aDtWbisrKXtjb25zdCBjcj1sdFtWbl0sQ3I9''@;'; put 'put ''Y3JbUmRdO2lmKEk3KGNyLHdJKSxDciYmQ3IuaGFzQW5pbWF0aW9uKWNvbnRpbnVlO2xldCBZcj1bXTtpZihfLnNpemUpe2xldCBGdD1fLmdldChjcik7RnQmJkZ0Lmxlbmd0aCYmWXIucHVzaCguLi5GdCk7bGV0IFd0PXRoaXMuZHJpdmVyLnF1ZXJ5KGNyLEFaLCEwKTtmb3IobGV0IHduPTA7''@;'; put 'put ''d248V3QubGVuZ3RoO3duKyspe2xldCBTbj1fLmdldChXdFt3bl0pO1NuJiZTbi5sZW5ndGgmJllyLnB1c2goLi4uU24pfX1jb25zdCBTdD1Zci5maWx0ZXIoRnQ9PiFGdC5kZXN0cm95ZWQpO1N0Lmxlbmd0aD9jemUodGhpcyxjcixTdCk6dGhpcy5wcm9jZXNzTGVhdmVOb2RlKGNyKX1yZXR1''@;'; put 'put ''cm4gbHQubGVuZ3RoPTAsQXIuZm9yRWFjaChWbj0+e3RoaXMucGxheWVycy5wdXNoKFZuKSxWbi5vbkRvbmUoKCk9PntWbi5kZXN0cm95KCk7Y29uc3QgY3I9dGhpcy5wbGF5ZXJzLmluZGV4T2YoVm4pO3RoaXMucGxheWVycy5zcGxpY2UoY3IsMSl9KSxWbi5wbGF5KCl9KSxBcn1hZnRlckZs''@;'; put 'put ''dXNoKGMpe3RoaXMuX2ZsdXNoRm5zLnB1c2goYyl9YWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKGMpe3RoaXMuX3doZW5RdWlldEZucy5wdXNoKGMpfV9nZXRQcmV2aW91c1BsYXllcnMoYyxhLGYsZCxoKXtsZXQgbT1bXTtpZihhKXtjb25zdCBfPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1l''@;'; put 'put ''bnQuZ2V0KGMpO18mJihtPV8pfWVsc2V7Y29uc3QgXz10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGMpO2lmKF8pe2NvbnN0IE89IWh8fGg9PURTO18uZm9yRWFjaChYPT57WC5xdWV1ZWR8fCFPJiZYLnRyaWdnZXJOYW1lIT1kfHxtLnB1c2goWCl9KX19cmV0dXJuKGZ8fGQpJiYobT1tLmZp''@;'; put 'put ''bHRlcihfPT4hKGYmJmYhPV8ubmFtZXNwYWNlSWR8fGQmJmQhPV8udHJpZ2dlck5hbWUpKSksbX1fYmVmb3JlQW5pbWF0aW9uQnVpbGQoYyxhLGYpe2NvbnN0IGg9YS5lbGVtZW50LG09YS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDpjLF89YS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQg''@;'; put 'put ''MDphLnRyaWdnZXJOYW1lO2Zvcihjb25zdCBPIG9mIGEudGltZWxpbmVzKXtjb25zdCBYPU8uZWxlbWVudCxhZT1YIT09aCxwZT1UMShmLFgsW10pO3RoaXMuX2dldFByZXZpb3VzUGxheWVycyhYLGFlLG0sXyxhLnRvU3RhdGUpLmZvckVhY2goeGU9Pntjb25zdCBWZT14ZS5nZXRSZWFsUGxh''@;'; put 'put ''eWVyKCk7VmUuYmVmb3JlRGVzdHJveSYmVmUuYmVmb3JlRGVzdHJveSgpLHhlLmRlc3Ryb3koKSxwZS5wdXNoKHhlKX0pfWg1KGgsYS5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24oYyxhLGYsZCxoLG0pe2NvbnN0IF89YS50cmlnZ2VyTmFtZSxPPWEuZWxlbWVudCxYPVtdLGFlPW5ldyBT''@;'; put 'put ''ZXQscGU9bmV3IFNldCxiZT1hLnRpbWVsaW5lcy5tYXAoVmU9Pntjb25zdCBaZT1WZS5lbGVtZW50O2FlLmFkZChaZSk7Y29uc3QgbHQ9WmVbUmRdO2lmKGx0JiZsdC5yZW1vdmVkQmVmb3JlUXVlcmllZClyZXR1cm4gbmV3IGpDKFZlLmR1cmF0aW9uLFZlLmRlbGF5KTtjb25zdCBkdD1aZSE9''@;'; put 'put ''PU8sZ3Q9ZnVuY3Rpb24gZnplKGwpe2NvbnN0IGM9W107cmV0dXJuIG9jZShsLGMpLGN9KChmLmdldChaZSl8fHJ6ZSkubWFwKFFuPT5Rbi5nZXRSZWFsUGxheWVyKCkpKS5maWx0ZXIoUW49PiEhUW4uZWxlbWVudCYmUW4uZWxlbWVudD09PVplKSxqdD1oLmdldChaZSkscm49bS5nZXQoWmUp''@;'; put 'put ''LFh0PVB1ZSh0aGlzLl9ub3JtYWxpemVyLFZlLmtleWZyYW1lcyxqdCxybikseW49dGhpcy5fYnVpbGRQbGF5ZXIoVmUsWHQsZ3QpO2lmKFZlLnN1YlRpbWVsaW5lJiZkJiZwZS5hZGQoWmUpLGR0KXtjb25zdCBRbj1uZXcgelooYyxfLFplKTtRbi5zZXRSZWFsUGxheWVyKHluKSxYLnB1c2go''@;'; put 'put ''UW4pfXJldHVybiB5bn0pO1guZm9yRWFjaChWZT0+e1QxKHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsVmUuZWxlbWVudCxbXSkucHVzaChWZSksVmUub25Eb25lKCgpPT5mdW5jdGlvbiBsemUobCxjLGEpe2xldCBmPWwuZ2V0KGMpO2lmKGYpe2lmKGYubGVuZ3RoKXtjb25zdCBkPWYu''@;'; put 'put ''aW5kZXhPZihhKTtmLnNwbGljZShkLDEpfTA9PWYubGVuZ3RoJiZsLmRlbGV0ZShjKX1yZXR1cm4gZn0odGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCxWZS5lbGVtZW50LFZlKSl9KSxhZS5mb3JFYWNoKFZlPT5QZihWZSx6dWUpKTtjb25zdCB4ZT1TNChiZSk7cmV0dXJuIHhlLm9uRGVz''@;'; put 'put ''dHJveSgoKT0+e2FlLmZvckVhY2goVmU9Pkk3KFZlLHp1ZSkpLExoKE8sYS50b1N0eWxlcyl9KSxwZS5mb3JFYWNoKFZlPT57VDEoZCxWZSxbXSkucHVzaCh4ZSl9KSx4ZX1fYnVpbGRQbGF5ZXIoYyxhLGYpe3JldHVybiBhLmxlbmd0aD4wP3RoaXMuZHJpdmVyLmFuaW1hdGUoYy5lbGVtZW50''@;'; put 'put ''LGEsYy5kdXJhdGlvbixjLmRlbGF5LGMuZWFzaW5nLGYpOm5ldyBqQyhjLmR1cmF0aW9uLGMuZGVsYXkpfX1jbGFzcyB6Wntjb25zdHJ1Y3RvcihjLGEsZil7dGhpcy5uYW1lc3BhY2VJZD1jLHRoaXMudHJpZ2dlck5hbWU9YSx0aGlzLmVsZW1lbnQ9Zix0aGlzLl9wbGF5ZXI9bmV3IGpDLHRo''@;'; put 'put ''aXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMSx0aGlzLl9xdWV1ZWRDYWxsYmFja3M9bmV3IE1hcCx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMubWFya2VkRm9yRGVzdHJveT0hMSx0aGlzLmRpc2FibGVkPSExLHRoaXMucXVldWVkPSEwLHRoaXMudG90YWxU''@;'; put 'put ''aW1lPTB9c2V0UmVhbFBsYXllcihjKXt0aGlzLl9jb250YWluc1JlYWxQbGF5ZXJ8fCh0aGlzLl9wbGF5ZXI9Yyx0aGlzLl9xdWV1ZWRDYWxsYmFja3MuZm9yRWFjaCgoYSxmKT0+e2EuZm9yRWFjaChkPT5DWihjLGYsdm9pZCAwLGQpKX0pLHRoaXMuX3F1ZXVlZENhbGxiYWNrcy5jbGVhcigp''@;'; put 'put ''LHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMCx0aGlzLm92ZXJyaWRlVG90YWxUaW1lKGMudG90YWxUaW1lKSx0aGlzLnF1ZXVlZD0hMSl9Z2V0UmVhbFBsYXllcigpe3JldHVybiB0aGlzLl9wbGF5ZXJ9b3ZlcnJpZGVUb3RhbFRpbWUoYyl7dGhpcy50b3RhbFRpbWU9Y31zeW5jUGxheWVy''@;'; put 'put ''RXZlbnRzKGMpe2NvbnN0IGE9dGhpcy5fcGxheWVyO2EudHJpZ2dlckNhbGxiYWNrJiZjLm9uU3RhcnQoKCk9PmEudHJpZ2dlckNhbGxiYWNrKCJzdGFydCIpKSxjLm9uRG9uZSgoKT0+dGhpcy5maW5pc2goKSksYy5vbkRlc3Ryb3koKCk9PnRoaXMuZGVzdHJveSgpKX1fcXVldWVFdmVudChj''@;'; put 'put ''LGEpe1QxKHRoaXMuX3F1ZXVlZENhbGxiYWNrcyxjLFtdKS5wdXNoKGEpfW9uRG9uZShjKXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZG9uZSIsYyksdGhpcy5fcGxheWVyLm9uRG9uZShjKX1vblN0YXJ0KGMpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJzdGFydCIs''@;'; put 'put ''YyksdGhpcy5fcGxheWVyLm9uU3RhcnQoYyl9b25EZXN0cm95KGMpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkZXN0cm95IixjKSx0aGlzLl9wbGF5ZXIub25EZXN0cm95KGMpfWluaXQoKXt0aGlzLl9wbGF5ZXIuaW5pdCgpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4hdGhpcy5xdWV1''@;'; put 'put ''ZWQmJnRoaXMuX3BsYXllci5oYXNTdGFydGVkKCl9cGxheSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBsYXkoKX1wYXVzZSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBhdXNlKCl9cmVzdGFydCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc3RhcnQoKX1maW5p''@;'; put 'put ''c2goKXt0aGlzLl9wbGF5ZXIuZmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuX3BsYXllci5kZXN0cm95KCl9cmVzZXQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXNldCgpfXNldFBvc2l0aW9uKGMpe3RoaXMucXVldWVkfHx0aGlzLl9wbGF5ZXIuc2V0''@;'; put 'put ''UG9zaXRpb24oYyl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5xdWV1ZWQ/MDp0aGlzLl9wbGF5ZXIuZ2V0UG9zaXRpb24oKX10cmlnZ2VyQ2FsbGJhY2soYyl7Y29uc3QgYT10aGlzLl9wbGF5ZXI7YS50cmlnZ2VyQ2FsbGJhY2smJmEudHJpZ2dlckNhbGxiYWNrKGMpfX1mdW5jdGlvbiBJ''@;'; put 'put ''SShsKXtyZXR1cm4gbCYmMT09PWwubm9kZVR5cGV9ZnVuY3Rpb24gbmNlKGwsYyl7Y29uc3QgYT1sLnN0eWxlLmRpc3BsYXk7cmV0dXJuIGwuc3R5bGUuZGlzcGxheT1jPz8ibm9uZSIsYX1mdW5jdGlvbiByY2UobCxjLGEsZixkKXtjb25zdCBoPVtdO2EuZm9yRWFjaChPPT5oLnB1c2gobmNl''@;'; put 'put ''KE8pKSk7Y29uc3QgbT1bXTtmLmZvckVhY2goKE8sWCk9Pntjb25zdCBhZT1uZXcgTWFwO08uZm9yRWFjaChwZT0+e2NvbnN0IGJlPWMuY29tcHV0ZVN0eWxlKFgscGUsZCk7YWUuc2V0KHBlLGJlKSwoIWJlfHwwPT1iZS5sZW5ndGgpJiYoWFtSZF09aXplLG0ucHVzaChYKSl9KSxsLnNldChY''@;'; put 'put ''LGFlKX0pO2xldCBfPTA7cmV0dXJuIGEuZm9yRWFjaChPPT5uY2UoTyxoW18rK10pKSxtfWZ1bmN0aW9uIGljZShsLGMpe2NvbnN0IGE9bmV3IE1hcDtpZihsLmZvckVhY2goXz0+YS5zZXQoXyxbXSkpLDA9PWMubGVuZ3RoKXJldHVybiBhO2NvbnN0IGQ9bmV3IFNldChjKSxoPW5ldyBNYXA7''@;'; put 'put ''ZnVuY3Rpb24gbShfKXtpZighXylyZXR1cm4gMTtsZXQgTz1oLmdldChfKTtpZihPKXJldHVybiBPO2NvbnN0IFg9Xy5wYXJlbnROb2RlO3JldHVybiBPPWEuaGFzKFgpP1g6ZC5oYXMoWCk/MTptKFgpLGguc2V0KF8sTyksT31yZXR1cm4gYy5mb3JFYWNoKF89Pntjb25zdCBPPW0oXyk7MSE9''@;'; put 'put ''PU8mJmEuZ2V0KE8pLnB1c2goXyl9KSxhfWZ1bmN0aW9uIFBmKGwsYyl7bC5jbGFzc0xpc3Q/LmFkZChjKX1mdW5jdGlvbiBJNyhsLGMpe2wuY2xhc3NMaXN0Py5yZW1vdmUoYyl9ZnVuY3Rpb24gY3plKGwsYyxhKXtTNChhKS5vbkRvbmUoKCk9PmwucHJvY2Vzc0xlYXZlTm9kZShjKSl9ZnVu''@;'; put 'put ''Y3Rpb24gb2NlKGwsYyl7Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDthKyspe2NvbnN0IGY9bFthXTtmIGluc3RhbmNlb2Ygb2FlP29jZShmLnBsYXllcnMsYyk6Yy5wdXNoKGYpfX1mdW5jdGlvbiBhY2UobCxjLGEpe2NvbnN0IGY9YS5nZXQobCk7aWYoIWYpcmV0dXJuITE7bGV0IGQ9Yy5nZXQo''@;'; put 'put ''bCk7cmV0dXJuIGQ/Zi5mb3JFYWNoKGg9PmQuYWRkKGgpKTpjLnNldChsLGYpLGEuZGVsZXRlKGwpLCEwfWNsYXNzIFJJe2NvbnN0cnVjdG9yKGMsYSxmKXt0aGlzLmJvZHlOb2RlPWMsdGhpcy5fZHJpdmVyPWEsdGhpcy5fbm9ybWFsaXplcj1mLHRoaXMuX3RyaWdnZXJDYWNoZT17fSx0aGlz''@;'; put 'put ''Lm9uUmVtb3ZhbENvbXBsZXRlPShkLGgpPT57fSx0aGlzLl90cmFuc2l0aW9uRW5naW5lPW5ldyBhemUoYyxhLGYpLHRoaXMuX3RpbWVsaW5lRW5naW5lPW5ldyBKamUoYyxhLGYpLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KGQsaCk9PnRoaXMub25SZW1vdmFs''@;'; put 'put ''Q29tcGxldGUoZCxoKX1yZWdpc3RlclRyaWdnZXIoYyxhLGYsZCxoKXtjb25zdCBtPWMrIi0iK2Q7bGV0IF89dGhpcy5fdHJpZ2dlckNhY2hlW21dO2lmKCFfKXtjb25zdCBPPVtdLGFlPUlaKHRoaXMuX2RyaXZlcixoLE8sW10pO2lmKE8ubGVuZ3RoKXRocm93IGZ1bmN0aW9uIGVqZShsLGMp''@;'; put 'put ''e3JldHVybiBuZXcgSXIoMzQwNCwhMSl9KCk7Xz1mdW5jdGlvbiAkamUobCxjLGEpe3JldHVybiBuZXcgS2plKGwsYyxhKX0oZCxhZSx0aGlzLl9ub3JtYWxpemVyKSx0aGlzLl90cmlnZ2VyQ2FjaGVbbV09X310aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihhLGQsXyl9''@;'; put 'put ''cmVnaXN0ZXIoYyxhKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyKGMsYSl9ZGVzdHJveShjLGEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZGVzdHJveShjLGEpfW9uSW5zZXJ0KGMsYSxmLGQpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuaW5zZXJ0Tm9kZShjLGEsZixkKX1vblJl''@;'; put 'put ''bW92ZShjLGEsZil7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZW1vdmVOb2RlKGMsYSxmKX1kaXNhYmxlQW5pbWF0aW9ucyhjLGEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUubWFya0VsZW1lbnRBc0Rpc2FibGVkKGMsYSl9cHJvY2VzcyhjLGEsZixkKXtpZigiQCI9PWYuY2hhckF0KDApKXtj''@;'; put 'put ''b25zdFtoLG1dPUZ1ZShmKTt0aGlzLl90aW1lbGluZUVuZ2luZS5jb21tYW5kKGgsYSxtLGQpfWVsc2UgdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS50cmlnZ2VyKGMsYSxmLGQpfWxpc3RlbihjLGEsZixkLGgpe2lmKCJAIj09Zi5jaGFyQXQoMCkpe2NvbnN0W20sX109RnVlKGYpO3JldHVybiB0''@;'; put 'put ''aGlzLl90aW1lbGluZUVuZ2luZS5saXN0ZW4obSxhLF8saCl9cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUubGlzdGVuKGMsYSxmLGQsaCl9Zmx1c2goYz0tMSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5mbHVzaChjKX1nZXQgcGxheWVycygpe3JldHVyblsuLi50aGlzLl90cmFuc2l0''@;'; put 'put ''aW9uRW5naW5lLnBsYXllcnMsLi4udGhpcy5fdGltZWxpbmVFbmdpbmUucGxheWVyc119d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfWFmdGVyRmx1c2hBbmltYXRpb25zRG9uZShjKXt0aGlzLl90cmFuc2l0aW9u''@;'; put 'put ''RW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZShjKX19bGV0IHB6ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLl9lbGVtZW50PWEsdGhpcy5fc3RhcnRTdHlsZXM9Zix0aGlzLl9lbmRTdHlsZXM9ZCx0aGlzLl9zdGF0ZT0wO2xldCBoPWwuaW5pdGlhbFN0eWxl''@;'; put 'put ''c0J5RWxlbWVudC5nZXQoYSk7aHx8bC5pbml0aWFsU3R5bGVzQnlFbGVtZW50LnNldChhLGg9bmV3IE1hcCksdGhpcy5faW5pdGlhbFN0eWxlcz1ofXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiZMaCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRo''@;'; put 'put ''aXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEpfWZpbmlzaCgpe3RoaXMuc3RhcnQoKSx0aGlzLl9zdGF0ZTwyJiYoTGgodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJihMaCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhp''@;'; put 'put ''cy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmZpbmlzaCgpLHRoaXMuX3N0YXRlPDMmJihsLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZGVsZXRlKHRoaXMuX2VsZW1lbnQpLHRoaXMuX3N0YXJ0U3R5bGVzJiYoaDUodGhpcy5fZWxlbWVudCx0aGlzLl9z''@;'; put 'put ''dGFydFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX2VuZFN0eWxlcyYmKGg1KHRoaXMuX2VsZW1lbnQsdGhpcy5fZW5kU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksTGgodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0zKX19cmV0''@;'; put 'put ''dXJuIGwuaW5pdGlhbFN0eWxlc0J5RWxlbWVudD1uZXcgV2Vha01hcCxsfSkoKTtmdW5jdGlvbiBVWihsKXtsZXQgYz1udWxsO3JldHVybiBsLmZvckVhY2goKGEsZik9PnsoZnVuY3Rpb24gbXplKGwpe3JldHVybiJkaXNwbGF5Ij09PWx8fCJwb3NpdGlvbiI9PT1sfSkoZikmJihjPWN8fG5l''@;'; put 'put ''dyBNYXAsYy5zZXQoZixhKSl9KSxjfWNsYXNzIGxjZXtjb25zdHJ1Y3RvcihjLGEsZixkKXt0aGlzLmVsZW1lbnQ9Yyx0aGlzLmtleWZyYW1lcz1hLHRoaXMub3B0aW9ucz1mLHRoaXMuX3NwZWNpYWxTdHlsZXM9ZCx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlz''@;'; put 'put ''Ll9vbkRlc3Ryb3lGbnM9W10sdGhpcy5faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb3JpZ2luYWxPbkRvbmVGbnM9W10sdGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zPVtdLHRoaXMudGltZT0wLHRoaXMu''@;'; put 'put ''cGFyZW50UGxheWVyPW51bGwsdGhpcy5jdXJyZW50U25hcHNob3Q9bmV3IE1hcCx0aGlzLl9kdXJhdGlvbj1mLmR1cmF0aW9uLHRoaXMuX2RlbGF5PWYuZGVsYXl8fDAsdGhpcy50aW1lPXRoaXMuX2R1cmF0aW9uK3RoaXMuX2RlbGF5fV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhp''@;'; put 'put ''cy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goYz0+YygpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuX3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpfV9idWlsZFBsYXllcigpe2lmKHRoaXMuX2luaXRpYWxpemVkKXJl''@;'; put 'put ''dHVybjt0aGlzLl9pbml0aWFsaXplZD0hMDtjb25zdCBjPXRoaXMua2V5ZnJhbWVzO3RoaXMuZG9tUGxheWVyPXRoaXMuX3RyaWdnZXJXZWJBbmltYXRpb24odGhpcy5lbGVtZW50LGMsdGhpcy5vcHRpb25zKSx0aGlzLl9maW5hbEtleWZyYW1lPWMubGVuZ3RoP2NbYy5sZW5ndGgtMV06bmV3''@;'; put 'put ''IE1hcCx0aGlzLmRvbVBsYXllci5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2giLCgpPT50aGlzLl9vbkZpbmlzaCgpKX1fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl7dGhpcy5fZGVsYXk/dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpOnRoaXMuZG9tUGxheWVyLnBhdXNlKCl9X2NvbnZl''@;'; put 'put ''cnRLZXlmcmFtZXNUb09iamVjdChjKXtjb25zdCBhPVtdO3JldHVybiBjLmZvckVhY2goZj0+e2EucHVzaChPYmplY3QuZnJvbUVudHJpZXMoZikpfSksYX1fdHJpZ2dlcldlYkFuaW1hdGlvbihjLGEsZil7cmV0dXJuIGMuYW5pbWF0ZSh0aGlzLl9jb252ZXJ0S2V5ZnJhbWVzVG9PYmplY3Qo''@;'; put 'put ''YSksZil9b25TdGFydChjKXt0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMucHVzaChjKSx0aGlzLl9vblN0YXJ0Rm5zLnB1c2goYyl9b25Eb25lKGMpe3RoaXMuX29yaWdpbmFsT25Eb25lRm5zLnB1c2goYyksdGhpcy5fb25Eb25lRm5zLnB1c2goYyl9b25EZXN0cm95KGMpe3RoaXMuX29uRGVz''@;'; put 'put ''dHJveUZucy5wdXNoKGMpfXBsYXkoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSEwLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNp''@;'; put 'put ''YWxTdHlsZXMuc3RhcnQoKSksdGhpcy5kb21QbGF5ZXIucGxheSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIucGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX29uRmlu''@;'; put 'put ''aXNoKCksdGhpcy5kb21QbGF5ZXIuZmluaXNoKCl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fb25TdGFydEZucz10aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMsdGhp''@;'; put 'put ''cy5fb25Eb25lRm5zPXRoaXMuX29yaWdpbmFsT25Eb25lRm5zfV9yZXNldERvbVBsYXllclN0YXRlKCl7dGhpcy5kb21QbGF5ZXImJnRoaXMuZG9tUGxheWVyLmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFy''@;'; put 'put ''dGVkfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5z''@;'; put 'put ''LmZvckVhY2goYz0+YygpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXNldFBvc2l0aW9uKGMpe3ZvaWQgMD09PXRoaXMuZG9tUGxheWVyJiZ0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZT1jKnRoaXMudGltZX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLmRvbVBsYXll''@;'; put 'put ''ci5jdXJyZW50VGltZS90aGlzLnRpbWV9Z2V0IHRvdGFsVGltZSgpe3JldHVybiB0aGlzLl9kZWxheSt0aGlzLl9kdXJhdGlvbn1iZWZvcmVEZXN0cm95KCl7Y29uc3QgYz1uZXcgTWFwO3RoaXMuaGFzU3RhcnRlZCgpJiZ0aGlzLl9maW5hbEtleWZyYW1lLmZvckVhY2goKGYsZCk9Pnsib2Zm''@;'; put 'put ''c2V0IiE9PWQmJmMuc2V0KGQsdGhpcy5fZmluaXNoZWQ/ZjpXdWUodGhpcy5lbGVtZW50LGQpKX0pLHRoaXMuY3VycmVudFNuYXBzaG90PWN9dHJpZ2dlckNhbGxiYWNrKGMpe2NvbnN0IGE9InN0YXJ0Ij09PWM/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7YS5mb3JFYWNoKGY9''@;'; put 'put ''PmYoKSksYS5sZW5ndGg9MH19Y2xhc3MgZ3ple3ZhbGlkYXRlU3R5bGVQcm9wZXJ0eShjKXtyZXR1cm4hMH12YWxpZGF0ZUFuaW1hdGFibGVTdHlsZVByb3BlcnR5KGMpe3JldHVybiEwfW1hdGNoZXNFbGVtZW50KGMsYSl7cmV0dXJuITF9Y29udGFpbnNFbGVtZW50KGMsYSl7cmV0dXJuIE51''@;'; put 'put ''ZShjLGEpfWdldFBhcmVudEVsZW1lbnQoYyl7cmV0dXJuIGtaKGMpfXF1ZXJ5KGMsYSxmKXtyZXR1cm4gVnVlKGMsYSxmKX1jb21wdXRlU3R5bGUoYyxhLGYpe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjKVthXX1hbmltYXRlKGMsYSxmLGQsaCxtPVtdKXtjb25zdCBPPXtkdXJh''@;'; put 'put ''dGlvbjpmLGRlbGF5OmQsZmlsbDowPT1kPyJib3RoIjoiZm9yd2FyZHMifTtoJiYoTy5lYXNpbmc9aCk7Y29uc3QgWD1uZXcgTWFwLGFlPW0uZmlsdGVyKHhlPT54ZSBpbnN0YW5jZW9mIGxjZSk7KGZ1bmN0aW9uIFNqZShsLGMpe3JldHVybiAwPT09bHx8MD09PWN9KShmLGQpJiZhZS5mb3JF''@;'; put 'put ''YWNoKHhlPT57eGUuY3VycmVudFNuYXBzaG90LmZvckVhY2goKFZlLFplKT0+WC5zZXQoWmUsVmUpKX0pO2xldCBwZT1mdW5jdGlvbiBfamUobCl7cmV0dXJuIGwubGVuZ3RoP2xbMF1pbnN0YW5jZW9mIE1hcD9sOmwubWFwKGM9PlV1ZShjKSk6W119KGEpLm1hcCh4ZT0+TTQoeGUpKTtwZT1m''@;'; put 'put ''dW5jdGlvbiBNamUobCxjLGEpe2lmKGEuc2l6ZSYmYy5sZW5ndGgpe2xldCBmPWNbMF0sZD1bXTtpZihhLmZvckVhY2goKGgsbSk9PntmLmhhcyhtKXx8ZC5wdXNoKG0pLGYuc2V0KG0saCl9KSxkLmxlbmd0aClmb3IobGV0IGg9MTtoPGMubGVuZ3RoO2grKyl7bGV0IG09Y1toXTtkLmZvckVh''@;'; put 'put ''Y2goXz0+bS5zZXQoXyxXdWUobCxfKSkpfX1yZXR1cm4gY30oYyxwZSxYKTtjb25zdCBiZT1mdW5jdGlvbiBoemUobCxjKXtsZXQgYT1udWxsLGY9bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheShjKSYmYy5sZW5ndGg/KGE9VVooY1swXSksYy5sZW5ndGg+MSYmKGY9VVooY1tjLmxlbmd0aC0x''@;'; put 'put ''XSkpKTpjIGluc3RhbmNlb2YgTWFwJiYoYT1VWihjKSksYXx8Zj9uZXcgcHplKGwsYSxmKTpudWxsfShjLHBlKTtyZXR1cm4gbmV3IGxjZShjLHBlLE8sYmUpfX1sZXQgdnplPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyByYWV7Y29uc3RydWN0b3IoYSxmKXtzdXBlcigpLHRoaXMuX25leHRBbmlt''@;'; put 'put ''YXRpb25JZD0wLHRoaXMuX3JlbmRlcmVyPWEuY3JlYXRlUmVuZGVyZXIoZi5ib2R5LHtpZDoiMCIsZW5jYXBzdWxhdGlvbjpqdS5Ob25lLHN0eWxlczpbXSxkYXRhOnthbmltYXRpb246W119fSl9YnVpbGQoYSl7Y29uc3QgZj10aGlzLl9uZXh0QW5pbWF0aW9uSWQudG9TdHJpbmcoKTt0aGlz''@;'; put 'put ''Ll9uZXh0QW5pbWF0aW9uSWQrKztjb25zdCBkPUFycmF5LmlzQXJyYXkoYSk/aWFlKGEpOmE7cmV0dXJuIHNjZSh0aGlzLl9yZW5kZXJlcixudWxsLGYsInJlZ2lzdGVyIixbZF0pLG5ldyB5emUoZix0aGlzLl9yZW5kZXJlcil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gbmV3KGF8fGwpKHNyKEhwKSxzcihGYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NsYXNzIHl6ZSBleHRlbmRzIHlUZXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKCksdGhpcy5faWQ9Yyx0aGlzLl9yZW5kZXJlcj1hfWNyZWF0ZShj''@;'; put 'put ''LGEpe3JldHVybiBuZXcgYnplKHRoaXMuX2lkLGMsYXx8e30sdGhpcy5fcmVuZGVyZXIpfX1jbGFzcyBiemV7Y29uc3RydWN0b3IoYyxhLGYsZCl7dGhpcy5pZD1jLHRoaXMuZWxlbWVudD1hLHRoaXMuX3JlbmRlcmVyPWQsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLl9zdGFydGVkPSEx''@;'; put 'put ''LHRoaXMudG90YWxUaW1lPTAsdGhpcy5fY29tbWFuZCgiY3JlYXRlIixmKX1fbGlzdGVuKGMsYSl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQsYEBAJHt0aGlzLmlkfToke2N9YCxhKX1fY29tbWFuZChjLC4uLmEpe3JldHVybiBzY2UodGhpcy5fcmVuZGVyZXIs''@;'; put 'put ''dGhpcy5lbGVtZW50LHRoaXMuaWQsYyxhKX1vbkRvbmUoYyl7dGhpcy5fbGlzdGVuKCJkb25lIixjKX1vblN0YXJ0KGMpe3RoaXMuX2xpc3Rlbigic3RhcnQiLGMpfW9uRGVzdHJveShjKXt0aGlzLl9saXN0ZW4oImRlc3Ryb3kiLGMpfWluaXQoKXt0aGlzLl9jb21tYW5kKCJpbml0Iil9aGFz''@;'; put 'put ''U3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLl9jb21tYW5kKCJwbGF5IiksdGhpcy5fc3RhcnRlZD0hMH1wYXVzZSgpe3RoaXMuX2NvbW1hbmQoInBhdXNlIil9cmVzdGFydCgpe3RoaXMuX2NvbW1hbmQoInJlc3RhcnQiKX1maW5pc2goKXt0aGlzLl9jb21tYW5k''@;'; put 'put ''KCJmaW5pc2giKX1kZXN0cm95KCl7dGhpcy5fY29tbWFuZCgiZGVzdHJveSIpfXJlc2V0KCl7dGhpcy5fY29tbWFuZCgicmVzZXQiKSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKGMpe3RoaXMuX2NvbW1hbmQoInNldFBvc2l0aW9uIixjKX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9yZW5kZXJlci5lbmdpbmUucGxheWVyc1srdGhpcy5pZF0/LmdldFBvc2l0aW9uKCk/PzB9fWZ1bmN0aW9uIHNjZShsLGMsYSxmLGQpe3JldHVybiBsLnNldFByb3BlcnR5KGMsYEBAJHthfToke2Z9YCxkKX1jb25zdCB1Y2U9IkAuZGlzYWJsZWQiO2xldCBfemU9KCgpPT57Y2xhc3MgbHtj''@;'; put 'put ''b25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5kZWxlZ2F0ZT1hLHRoaXMuZW5naW5lPWYsdGhpcy5fem9uZT1kLHRoaXMuX2N1cnJlbnRJZD0wLHRoaXMuX21pY3JvdGFza0lkPTEsdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdLHRoaXMuX3JlbmRlcmVyQ2FjaGU9bmV3IE1hcCx0aGlz''@;'; put 'put ''Ll9jZFJlY3VyRGVwdGg9MCxmLm9uUmVtb3ZhbENvbXBsZXRlPShoLG0pPT57Y29uc3QgXz1tPy5wYXJlbnROb2RlKGgpO18mJm0ucmVtb3ZlQ2hpbGQoXyxoKX19Y3JlYXRlUmVuZGVyZXIoYSxmKXtjb25zdCBoPXRoaXMuZGVsZWdhdGUuY3JlYXRlUmVuZGVyZXIoYSxmKTtpZighKGEmJmYm''@;'; put 'put ''JmYuZGF0YSYmZi5kYXRhLmFuaW1hdGlvbikpe2xldCBhZT10aGlzLl9yZW5kZXJlckNhY2hlLmdldChoKTtyZXR1cm4gYWV8fChhZT1uZXcgY2NlKCIiLGgsdGhpcy5lbmdpbmUsKCk9PnRoaXMuX3JlbmRlcmVyQ2FjaGUuZGVsZXRlKGgpKSx0aGlzLl9yZW5kZXJlckNhY2hlLnNldChoLGFl''@;'; put 'put ''KSksYWV9Y29uc3QgbT1mLmlkLF89Zi5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJlZ2lzdGVyKF8sYSk7Y29uc3QgTz1hZT0+e0FycmF5LmlzQXJyYXkoYWUpP2FlLmZvckVhY2goTyk6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKG0s''@;'; put 'put ''XyxhLGFlLm5hbWUsYWUpfTtyZXR1cm4gZi5kYXRhLmFuaW1hdGlvbi5mb3JFYWNoKE8pLG5ldyB3emUodGhpcyxfLGgsdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNv''@;'; put 'put ''dW50VGFzaygpe3F1ZXVlTWljcm90YXNrKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pfXNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayhhLGYsZCl7YT49MCYmYTx0aGlzLl9taWNyb3Rhc2tJZD90aGlzLl96b25lLnJ1bigoKT0+ZihkKSk6KDA9PXRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1''@;'; put 'put ''ZmZlci5sZW5ndGgmJnF1ZXVlTWljcm90YXNrKCgpPT57dGhpcy5fem9uZS5ydW4oKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaChoPT57Y29uc3RbbSxfXT1oO20oXyl9KSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W119KX0pLHRoaXMuX2FuaW1h''@;'; put 'put ''dGlvbkNhbGxiYWNrc0J1ZmZlci5wdXNoKFtmLGRdKSl9ZW5kKCl7dGhpcy5fY2RSZWN1ckRlcHRoLS0sMD09dGhpcy5fY2RSZWN1ckRlcHRoJiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc2NoZWR1bGVDb3VudFRhc2soKSx0aGlzLmVuZ2luZS5mbHVzaCh0aGlz''@;'; put 'put ''Ll9taWNyb3Rhc2tJZCl9KSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxlZ2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShz''@;'; put 'put ''cihIcCksc3IoUkkpLHNyKFVvKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y2xhc3MgY2Nle2NvbnN0cnVjdG9yKGMsYSxmLGQpe3RoaXMubmFtZXNwYWNlSWQ9Yyx0aGlzLmRlbGVnYXRlPWEsdGhpcy5lbmdpbmU9Zix0aGlzLl9vbkRl''@;'; put 'put ''c3Ryb3k9ZH1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveU5vZGUoYyl7dGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZT8uKGMpfWRlc3Ryb3koKXt0aGlzLmVuZ2luZS5kZXN0cm95KHRoaXMubmFtZXNwYWNlSWQsdGhpcy5kZWxlZ2F0ZSksdGhpcy5lbmdpbmUu''@;'; put 'put ''YWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT57cXVldWVNaWNyb3Rhc2soKCk9Pnt0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX0pfSksdGhpcy5fb25EZXN0cm95Py4oKX1jcmVhdGVFbGVtZW50KGMsYSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChjLGEpfWNyZWF0ZUNv''@;'; put 'put ''bW1lbnQoYyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudChjKX1jcmVhdGVUZXh0KGMpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoYyl9YXBwZW5kQ2hpbGQoYyxhKXt0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKGMsYSksdGhpcy5lbmdpbmUub25JbnNlcnQo''@;'; put 'put ''dGhpcy5uYW1lc3BhY2VJZCxhLGMsITEpfWluc2VydEJlZm9yZShjLGEsZixkPSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShjLGEsZiksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxhLGMsZCl9cmVtb3ZlQ2hpbGQoYyxhLGYpe3RoaXMuZW5naW5lLm9uUmVt''@;'; put 'put ''b3ZlKHRoaXMubmFtZXNwYWNlSWQsYSx0aGlzLmRlbGVnYXRlKX1zZWxlY3RSb290RWxlbWVudChjLGEpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KGMsYSl9cGFyZW50Tm9kZShjKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKGMpfW5leHRTaWJsaW5n''@;'; put 'put ''KGMpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKGMpfXNldEF0dHJpYnV0ZShjLGEsZixkKXt0aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZShjLGEsZixkKX1yZW1vdmVBdHRyaWJ1dGUoYyxhLGYpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKGMsYSxmKX1hZGRDbGFz''@;'; put 'put ''cyhjLGEpe3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3MoYyxhKX1yZW1vdmVDbGFzcyhjLGEpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3MoYyxhKX1zZXRTdHlsZShjLGEsZixkKXt0aGlzLmRlbGVnYXRlLnNldFN0eWxlKGMsYSxmLGQpfXJlbW92ZVN0eWxlKGMsYSxmKXt0aGlzLmRlbGVnYXRl''@;'; put 'put ''LnJlbW92ZVN0eWxlKGMsYSxmKX1zZXRQcm9wZXJ0eShjLGEsZil7IkAiPT1hLmNoYXJBdCgwKSYmYT09dWNlP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnMoYywhIWYpOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkoYyxhLGYpfXNldFZhbHVlKGMsYSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZShj''@;'; put 'put ''LGEpfWxpc3RlbihjLGEsZil7cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKGMsYSxmKX1kaXNhYmxlQW5pbWF0aW9ucyhjLGEpe3RoaXMuZW5naW5lLmRpc2FibGVBbmltYXRpb25zKGMsYSl9fWNsYXNzIHd6ZSBleHRlbmRzIGNjZXtjb25zdHJ1Y3RvcihjLGEsZixkLGgpe3N1cGVyKGEs''@;'; put 'put ''ZixkLGgpLHRoaXMuZmFjdG9yeT1jLHRoaXMubmFtZXNwYWNlSWQ9YX1zZXRQcm9wZXJ0eShjLGEsZil7IkAiPT1hLmNoYXJBdCgwKT8iLiI9PWEuY2hhckF0KDEpJiZhPT11Y2U/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyhjLGY9dm9pZCAwPT09Znx8ISFmKTp0aGlzLmVuZ2luZS5wcm9jZXNz''@;'; put 'put ''KHRoaXMubmFtZXNwYWNlSWQsYyxhLnNsaWNlKDEpLGYpOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkoYyxhLGYpfWxpc3RlbihjLGEsZil7aWYoIkAiPT1hLmNoYXJBdCgwKSl7Y29uc3QgZD1mdW5jdGlvbiBDemUobCl7c3dpdGNoKGwpe2Nhc2UiYm9keSI6cmV0dXJuIGRvY3VtZW50LmJv''@;'; put 'put ''ZHk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIGRvY3VtZW50O2Nhc2Uid2luZG93IjpyZXR1cm4gd2luZG93O2RlZmF1bHQ6cmV0dXJuIGx9fShjKTtsZXQgaD1hLnNsaWNlKDEpLG09IiI7cmV0dXJuIkAiIT1oLmNoYXJBdCgwKSYmKFtoLG1dPWZ1bmN0aW9uIFN6ZShsKXtjb25zdCBjPWwuaW5k''@;'; put 'put ''ZXhPZigiLiIpO3JldHVybltsLnN1YnN0cmluZygwLGMpLGwuc2xpY2UoYysxKV19KGgpKSx0aGlzLmVuZ2luZS5saXN0ZW4odGhpcy5uYW1lc3BhY2VJZCxkLGgsbSxfPT57dGhpcy5mYWN0b3J5LnNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayhfLl9kYXRhfHwtMSxmLF8pfSl9cmV0dXJuIHRo''@;'; put 'put ''aXMuZGVsZWdhdGUubGlzdGVuKGMsYSxmKX19bGV0IE16ZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgUkl7Y29uc3RydWN0b3IoYSxmLGQsaCl7c3VwZXIoYS5ib2R5LGYsZCl9bmdPbkRlc3Ryb3koKXt0aGlzLmZsdXNoKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpKHNyKEZhKSxzcihFWiksc3IoSFopLHNyKENnKSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y29uc3QgZmNlPVt7cHJvdmlkZTpyYWUsdXNlQ2xhc3M6dnplfSx7cHJvdmlkZTpIWix1c2VGYWN0b3J5OmZ1bmN0aW9uIGt6''@;'; put 'put ''ZSgpe3JldHVybiBuZXcgWmplfX0se3Byb3ZpZGU6UkksdXNlQ2xhc3M6TXplfSx7cHJvdmlkZTpIcCx1c2VGYWN0b3J5OmZ1bmN0aW9uIEV6ZShsLGMsYSl7cmV0dXJuIG5ldyBfemUobCxjLGEpfSxkZXBzOlt3aixSSSxVb119XSxaWj1be3Byb3ZpZGU6RVosdXNlRmFjdG9yeTooKT0+bmV3''@;'; put 'put ''IGd6ZX0se3Byb3ZpZGU6UkEsdXNlVmFsdWU6IkJyb3dzZXJBbmltYXRpb25zIn0sLi4uZmNlXSxkY2U9W3twcm92aWRlOkVaLHVzZUNsYXNzOkJ1ZX0se3Byb3ZpZGU6UkEsdXNlVmFsdWU6Ik5vb3BBbmltYXRpb25zIn0sLi4uZmNlXTtsZXQgeHplPSgoKT0+e2NsYXNzIGx7c3RhdGljIHdp''@;'; put 'put ''dGhDb25maWcoYSl7cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJzOmEuZGlzYWJsZUFuaW1hdGlvbnM/ZGNlOlpafX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7cHJvdmlk''@;'; put 'put ''ZXJzOlpaLGltcG9ydHM6W1duZV19KSxsfSkoKTtjb25zdCBBemU9WyJzaWRlYmFyTmF2Il07ZnVuY3Rpb24gVHplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYSIsMTkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMykubmF2aWdhdGVUb1ZpZXdl''@;'; put 'put ''cigpKX0pLFllKDEsIkRhdGEiKSxDZSgpfX1mdW5jdGlvbiBPemUobCxjKXsxJmwmJih5ZSgwLCJhIiwyMCksWWUoMSwiQVBJIEV4cGxvcmVyIiksQ2UoKSl9ZnVuY3Rpb24gRHplKGwsYyl7MSZsJiYoeWUoMCwiYSIsMjEpLFllKDEsIkxpbmVhZ2UiKSxDZSgpKX1mdW5jdGlvbiBJemUobCxj''@;'; put 'put ''KXsxJmwmJih5ZSgwLCJhIiwyMiksWWUoMSwiTWV0YWRhdGEiKSxDZSgpKX1mdW5jdGlvbiBSemUobCxjKXsxJmwmJih5ZSgwLCJhIiwyMyksWWUoMSwiIFVzZXJzIiksQ2UoKSl9ZnVuY3Rpb24gTHplKGwsYyl7MSZsJiYoeWUoMCwiYSIsMjQpLFllKDEsIlN1Ym1pdHRlZCIpLENlKCkpfWZ1''@;'; put 'put ''bmN0aW9uIFB6ZShsLGMpezEmbCYmKHllKDAsImEiLDI1KSxZZSgxLCJUbyBBcHByb3ZlIiksQ2UoKSl9ZnVuY3Rpb24gRnplKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLWRyb3Bkb3duLW1lbnUiKSx0dCgxLFR6ZSwyLDAsImEiLDEyKSx0dCgyLE96ZSwyLDAsImEiLDEzKSx0dCgzLER6ZSwy''@;'; put 'put ''LDAsImEiLDE0KSx0dCg0LEl6ZSwyLDAsImEiLDE1KSx0dCg1LFJ6ZSwyLDAsImEiLDE2KSx0dCg2LEx6ZSwyLDAsImEiLDE3KSx0dCg3LFB6ZSwyLDAsImEiLDE4KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoInZpZXciKSksU2UoMSks''@;'; put 'put ''UmUoIm5nSWYiLGEuaXNNYWluUm91dGUoInZpZXciKSYmIlNBU1ZJWUEiPT09YS5zZXJ2ZXJUeXBlKSxTZSgxKSxSZSgibmdJZiIsYS5pc01haW5Sb3V0ZSgidmlldyIpJiYiU0FTOSI9PT1hLnNlcnZlclR5cGUpLFNlKDEpLFJlKCJuZ0lmIixhLmlzTWFpblJvdXRlKCJ2aWV3IikmJiJTQVM5''@;'; put 'put ''Ij09PWEuc2VydmVyVHlwZSksU2UoMSksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoInZpZXciKSksU2UoMSksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoImFwcHJvdmUiKSksU2UoMSksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoImFwcHJvdmUiKSl9fWZ1bmN0aW9uIEh6ZShsLGMpe2lmKDEm''@;'; put 'put ''bCYmKHllKDAsImRpdiIsOCkoMSwiY2xyLWRyb3Bkb3duIikoMiwiYnV0dG9uIiw5KSxZZSgzKSx0big0LCJjbHItaWNvbiIsMTApLENlKCksdHQoNSxGemUsOCw3LCJjbHItZHJvcGRvd24tbWVudSIsMTEpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMyksd3IoIiAiLGEuZ2V0U3Vi''@;'; put 'put ''UGFnZSgpLCIgIil9fWZ1bmN0aW9uIE56ZShsLGMpezEmbCYmdG4oMCwiY2xyLXRhYi1jb250ZW50Iil9ZnVuY3Rpb24gVnplKGwsYyl7MSZsJiZ0bigwLCJjbHItdGFiLWNvbnRlbnQiKX1jb25zdCBCemU9ZnVuY3Rpb24oKXtyZXR1cm5bIi92aWV3L3VzZXJuYXYvcm9sZXMiXX07ZnVuY3Rp''@;'; put 'put ''b24ganplKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRhYiIpKDEsImJ1dHRvbiIsMjcpKDIsInAiLDI4KSx0bigzLCJjbHItaWNvbiIsMzMpLFllKDQsIiBSb2xlcyAiKSxDZSgpKCksdHQoNSxWemUsMSwwLCJjbHItdGFiLWNvbnRlbnQiLDMxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7''@;'; put 'put ''U2UoMSksUmUoInJvdXRlckxpbmsiLFhhKDIsQnplKSksU2UoNCksUmUoImNscklmQWN0aXZlIixhLmlzTWFpblJvdXRlKCIvdmlldy91c2VybmF2L3JvbGVzIikpfX1jb25zdCB6emU9ZnVuY3Rpb24oKXtyZXR1cm5bIi92aWV3L3VzZXJuYXYvdXNlcnMiXX0sVXplPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuWyIvdmlldy91c2VybmF2L2dyb3VwcyJdfTtmdW5jdGlvbiBaemUobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdGFicyIsMjYpKDEsImNsci10YWIiKSgyLCJidXR0b24iLDI3KSgzLCJwIiwyOCksdG4oNCwiY2xyLWljb24iLDI5KSxZZSg1LCIgVXNlcnMiKSxDZSgpKCksdG4oNiwiY2xy''@;'; put 'put ''LXRhYi1jb250ZW50IiksQ2UoKSx5ZSg3LCJjbHItdGFiIikoOCwiYnV0dG9uIiwyNykoOSwicCIsMjgpLHRuKDEwLCJjbHItaWNvbiIsMzApLFllKDExLCIgR3JvdXBzIiksQ2UoKSgpLHR0KDEyLE56ZSwxLDAsImNsci10YWItY29udGVudCIsMzEpLENlKCksdHQoMTMsanplLDYsMywiY2xy''@;'; put 'put ''LXRhYiIsMzIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLFJlKCJyb3V0ZXJMaW5rIixYYSg0LHp6ZSkpLFNlKDYpLFJlKCJyb3V0ZXJMaW5rIixYYSg1LFV6ZSkpLFNlKDQpLFJlKCJjbHJJZkFjdGl2ZSIsYS5pc01haW5Sb3V0ZSgiL3ZpZXcvdXNlcm5hdi9ncm91cHMiKSksU2Uo''@;'; put 'put ''MSksUmUoIm5nSWYiLCJTQVM5Ij09PWEuc2VydmVyVHlwZSl9fWZ1bmN0aW9uIFl6ZShsLGMpezEmbCYmKHllKDAsInAiLDM0KSxZZSgxLCJFZGl0IiksQ2UoKSl9Y29uc3QgV3plPVsiKiJdO2xldCBrND0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLl9yb3V0ZXI9YSx0''@;'; put 'put ''aGlzLmV2ZW50U2VydmljZT1mLHRoaXMuX3Nhc1NlcnZpY2U9ZCx0aGlzLnNjcm9sbGVkVG9Cb3R0b209bmV3IHhyLHRoaXMuc2lkZWJhck9wZW49ITAsdGhpcy5zaWRlYmFyV2lkdGg9bnVsbCx0aGlzLnNpZGViYXJNYXhXaWR0aD1udWxsLHRoaXMucmVzaXppbmc9ITEsdGhpcy5zYXNqc0Nv''@;'; put 'put ''bmZpZz1uZXcgdjEuU0FTanNDb25maWcsdGhpcy5zYXNqc0NvbmZpZz10aGlzLl9zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuX3Nhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpfW5nT25Jbml0KCl7dGhpcy5ldmVudFNlcnZpY2Uub25TaWRlYmFyVG9n''@;'; put 'put ''Z2xlLnN1YnNjcmliZShhPT57dGhpcy5zaWRlYmFyT3Blbj1hP2Eub3BlbjohdGhpcy5zaWRlYmFyT3Blbix0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pfW9uVHJlZVNjcm9sbChhKXtsZXQgZj1hLnRhcmdldDtmLnNjcm9sbFRvcD49Zi5zY3JvbGxIZWlnaHQt''@;'; put 'put ''Zi5vZmZzZXRIZWlnaHQtMTAmJnRoaXMuc2Nyb2xsZWRUb0JvdHRvbS5lbWl0KCl9aXNNYWluUm91dGUoYSl7cmV0dXJuIHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMoYSl9Z2V0U3ViUGFnZSgpe3JldHVybiB0aGlzLl9yb3V0ZXIudXJsLnNwbGl0KCIvIilbMl19bmF2aWdhdGVUb1ZpZXdl''@;'; put 'put ''cigpe0puLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSIiLHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhIil9cmVzaXplU3RhcnQoKXt0aGlzLnJlc2l6aW5nPSEwLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0uc3R5bGUuY3NzVGV4dD0idXNl''@;'; put 'put ''ci1zZWxlY3Q6IG5vbmUifXJlc2l6ZUVuZCgpe3RoaXMucmVzaXppbmc9ITEsZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXS5zdHlsZS5jc3NUZXh0PSIifW9uTW91c2VNb3ZlKGEpe2lmKHRoaXMucmVzaXppbmcpe3RoaXMuc2lkZWJhcldpZHRoPWEuY2xpZW50WDts''@;'; put 'put ''ZXQgZj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJuYXYtdHJlZSIpWzBdO3RoaXMuc2lkZWJhcldpZHRoJiZ0aGlzLmlzT3ZlcmZsb3duKGYpJiYodGhpcy5zaWRlYmFyTWF4V2lkdGg9dGhpcy5zaWRlYmFyV2lkdGg+PTM3NT90aGlzLnNpZGViYXJXaWR0aCsxMDp0aGlzLnNp''@;'; put 'put ''ZGViYXJNYXhXaWR0aCl9fW9uTW91c2VVcChhKXt0aGlzLnJlc2l6aW5nJiZ0aGlzLnJlc2l6ZUVuZCgpfWlzT3ZlcmZsb3duKGEpe3JldHVybiBhLnNjcm9sbFdpZHRoPmEuY2xpZW50V2lkdGh9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KExh''@;'; put 'put ''KSxydChScykscnQocGwpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXNpZGViYXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiZObyhBemUsNSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5zaWRlYmFyTmF2PWQuZmlyc3QpfX0saG9zdEJp''@;'; put 'put ''bmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgibW91c2Vtb3ZlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbk1vdXNlTW92ZShoKX0sMCxMMikoIm1vdXNldXAiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uTW91c2VVcChoKX0sITEsTDIpfSxvdXRwdXRzOntzY3JvbGxlZFRvQm90dG9tOiJz''@;'; put 'put ''Y3JvbGxlZFRvQm90dG9tIn0sbmdDb250ZW50U2VsZWN0b3JzOld6ZSxkZWNsczo5LHZhcnM6MTMsY29uc3RzOltbImlkIiwic2lkZWJhck5hdiJdLFsic2lkZWJhck5hdiIsIiJdLFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBzdWItZHJvcGRvd24iLDQsIm5nSWYi''@;'; put 'put ''XSxbImNsYXNzIiwicC0xMCIsNCwibmdJZiJdLFsiY2xhc3MiLCJwYWdlLXRpdGxlIiw0LCJuZ0lmIl0sWzEsIm5hdi1kaXZpZGVyIl0sWzEsIm5hdi10cmVlIiwzLCJzY3JvbGwiXSxbMSwicmVzaXplLWhhbmRsZSIsMywibW91c2Vkb3duIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVu''@;'; put 'put ''dC1jZW50ZXIiLCJzdWItZHJvcGRvd24iXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsMSwiZHJvcGRvd24tdG9nZ2xlIiwiYnRuIiwiYnRuLWxpbmsiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFs0LCJjbHJJZk9wZW4iXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmtB''@;'; put 'put ''Y3RpdmUiLCJhY3RpdmUiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdml5YS1hcGktZXhwbG9yZXIiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJy''@;'; put 'put ''b3V0ZXJMaW5rIiwiL3ZpZXcvbGluZWFnZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy9tZXRhZGF0YSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZl''@;'; put 'put ''cnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2Iiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsNCwibmdJZiJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9hcHByb3ZlL3N1Ym1pdHRlZCIsInJvdXRlckxpbmtBY3RpdmUiLCJh''@;'; put 'put ''Y3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvYXBwcm92ZS90b2FwcHJvdmUiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZl''@;'; put 'put ''IiwzLCJjbGljayJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L3ZpeWEtYXBpLWV4cGxvcmVyIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi92aWV3L2xpbmVhZ2UiLCJyb3V0''@;'; put 'put ''ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbWV0YWRhdGEiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdiIsInJv''@;'; put 'put ''dXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvYXBwcm92ZS9zdWJtaXR0ZWQiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2FwcHJvdmUvdG9h''@;'; put 'put ''cHByb3ZlIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsxLCJwLTEwIl0sWyJjbHJUYWJMaW5rIiwiIiwxLCJ1c2VyLW5hdi1idG4iLDMsInJvdXRlckxpbmsiXSxbMSwiemVyby1tYXJnaW4iXSxbInNoYXBlIiwidXNlciJdLFsic2hhcGUiLCJ1c2VycyJdLFs0LCJjbHJJZkFjdGl2''@;'; put 'put ''ZSJdLFs0LCJuZ0lmIl0sWyJzaGFwZSIsImJsb2Nrcy1ncm91cCJdLFsxLCJwYWdlLXRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoVGkoKSx5ZSgwLCJjbHItdmVydGljYWwtbmF2IiwwLDEpLHR0KDIsSHplLDYsMSwiZGl2IiwyKSx0dCgzLFp6ZSwxNCw2LCJjbHItdGFi''@;'; put 'put ''cyIsMyksdHQoNCxZemUsMiwwLCJwIiw0KSx0big1LCJkaXYiLDUpLHllKDYsImRpdiIsNiksRXQoInNjcm9sbCIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25UcmVlU2Nyb2xsKGgpfSksRHIoNyksQ2UoKSx5ZSg4LCJzcGFuIiw3KSxFdCgibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiBm''@;'; put 'put ''LnJlc2l6ZVN0YXJ0KCl9KSxDZSgpKCkpLDImYSYmKFdjKCJ3aWR0aCIsZi5zaWRlYmFyV2lkdGgsInB4IikoIm1heC13aWR0aCIsZi5zaWRlYmFyTWF4V2lkdGgsInB4IiksZ3IoImNsb3NlZCIsIWYuc2lkZWJhck9wZW4pKCJyZXNpemluZyIsZi5yZXNpemluZyksU2UoMiksUmUoIm5nSWYi''@;'; put 'put ''LGYuaXNNYWluUm91dGUoInZpZXciKSksU2UoMSksUmUoIm5nSWYiLGYuaXNNYWluUm91dGUoInZpZXcvdXNlcm5hdiIpKSxTZSgxKSxSZSgibmdJZiIsZi5pc01haW5Sb3V0ZSgiaG9tZSIpKSxTZSg0KSxncigicmVzaXppbmciLGYucmVzaXppbmcpKX0sZGVwZW5kZW5jaWVzOlskaSxSbCx1''@;'; put 'put ''Uyx4ZCx1NSxmNSxUNyxjNSxsNSxBNyxjdWUsZnVlLGEzLG81LGE1LEkwLFRDXSxzdHlsZXM6WyJjbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyNzJweDttaW4td2lkdGg6MjcycHg7aGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjM3NXB4O3Bvc2l0aW9uOnJlbGF0aXZl''@;'; put 'put ''O2JveC1zaGFkb3c6MCAwIDVweCAjMDAwMDAwMWY7YmFja2dyb3VuZC1jb2xvcjojZmZmIWltcG9ydGFudH1jbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdW4tZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6MzZweH1jbHItdmVydGljYWwtbmF2''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtdHJlZVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7b3ZlcmZsb3cteTphdXRvfWNsci12ZXJ0aWNhbC1uYXYuY2xvc2VkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDotMjcycHh9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAucmVzaXplLWhhbmRsZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6LTNweDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkICM4MGI0NDE7Y3Vyc29yOmNvbC1yZXNpemU7b3BhY2l0eTowO3RyYW5zaXRpb246YWxs''@;'; put 'put ''IC4xcyBlYXNlLWluLW91dH1jbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZXNpemUtaGFuZGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41fWNsci12ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2l6ZS1oYW5kbGUucmVzaXpp''@;'; put 'put ''bmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1jbHItdmVydGljYWwtbmF2LnJlc2l6aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5uYXYtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQg''@;'; put 'put ''I2QzZDNkMzttYXJnaW4tYm90dG9tOjB9LnBhZ2UtdGl0bGVbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowO2ZvbnQtc2l6ZToxOHB4O3RleHQtYWxpZ246Y2VudGVyfS56ZXJvLW1hcmdpbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjB9LnVzZXItbmF2LWJ0bltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17cGFkZGluZzowIDJweH0jc2lkZWJhck5hdltfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDoyMDB9QG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KXsjc2lkZWJhck5hdltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7dG9wOjB9fSJdfSksbH0pKCks''@;'; put 'put ''Ujc9KCgpPT57Y2xhc3MgbHtzZXQgbmdWYXIoYSl7dGhpcy5jb250ZXh0LiRpbXBsaWNpdD10aGlzLmNvbnRleHQubmdWYXI9YSx0aGlzLmhhc1ZpZXd8fCh0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLHRoaXMuY29udGV4dCksdGhpcy5oYXNWaWV3PSEw''@;'; put 'put ''KX1jb25zdHJ1Y3RvcihhLGYpe3RoaXMudGVtcGxhdGVSZWY9YSx0aGlzLnZjUmVmPWYsdGhpcy5jb250ZXh0PXskaW1wbGljaXQ6bnVsbCxuZ1ZhcjpudWxsfSx0aGlzLmhhc1ZpZXc9ITF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHpsKSxy''@;'; put 'put ''dChmYSkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ1ZhciIsIiJdXSxpbnB1dHM6e25nVmFyOiJuZ1ZhciJ9fSksbH0pKCk7ZnVuY3Rpb24gR3plKGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uICR6ZShsLGMpe2lmKDEmbCl7Y29uc3Qg''@;'; put 'put ''YT1abigpO3llKDAsImNsci1pY29uIiwxMyksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMik7cmV0dXJuIGQubGlicmFyaWVzU2VhcmNoPSIiLFp0KGQubGlicmFyeU9uRmlsdGVyKCkpfSksQ2UoKX19ZnVuY3Rpb24gS3plKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpu''@;'; put 'put ''KCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsOCw5KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubGlicmFyaWVzU2VhcmNoPWQpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgp''@;'; put 'put ''LmxpYnJhcnlPbkZpbHRlcigpKX0pLENlKCksdHQoNCxHemUsMSwwLCJjbHItaWNvbiIsMTApLHR0KDUsJHplLDEsMCwiY2xyLWljb24iLDExKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoKTtTZSgyKSxSZSgibmdNb2RlbCIsZi5saWJyYXJpZXNTZWFyY2gpLFNlKDIpLFJl''@;'; put 'put ''KCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxTZSgxKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIHF6ZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDEyKX1mdW5jdGlvbiBYemUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTMpLEV0''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKSxHZSgpO2NvbnN0IGQ9UWkoMyksaD1HZSgyKS4kaW1wbGljaXQsbT1HZSgpO3JldHVybiBkLnZhbHVlPSIiLGguc2VhcmNoU3RyaW5nPSIiLFp0KG0udHJlZU9uRmlsdGVyKGgsInRhYmxlcyIpKX0pLENlKCl9fWZ1bmN0aW9uIEp6ZShsLGMpe2lm''@;'; put 'put ''KDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDE4LDE5KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLiRpbXBsaWNpdC5zZWFyY2hTdHJpbmc9ZCl9KSgia2V5dXAiLGZ1bmN0''@;'; put 'put ''aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkudHJlZU9uRmlsdGVyKGQsInRhYmxlcyIpKX0pLENlKCksdHQoNCxxemUsMSwwLCJjbHItaWNvbiIsMTApLHR0KDUsWHplLDEsMCwiY2xyLWljb24iLDExKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFp''@;'; put 'put ''KDMpLGY9R2UoMikuJGltcGxpY2l0O1NlKDIpLFJlKCJuZ01vZGVsIixmLnNlYXJjaFN0cmluZyksU2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gUXplKGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIs''@;'; put 'put ''MjYpfWZ1bmN0aW9uIGVVZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDI3KX1mdW5jdGlvbiB0VWUobCxjKXsxJmwmJih5ZSgwLCJzcGFuIiksWWUoMSwiIFRvIHVubG9jayBhbGwgdGFibGVzLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIiksQ2UoKSl9ZnVuY3Rpb24g''@;'; put 'put ''blVlKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMjgpLHR0KDEsdFVlLDIsMCwic3BhbiIsMjkpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLm5nVmFyO1NlKDEpLFJlKCJuZ0lmIixhKX19ZnVuY3Rpb24gclVlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUo''@;'; put 'put ''MCwiY2xyLXRvb2x0aXAiKSgxLCJidXR0b24iLDIxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS5uZ1ZhcixtPUdlKCkuJGltcGxpY2l0LF89R2UoMikuJGltcGxpY2l0LE89R2UoKTtyZXR1cm4gWnQoaD8iIjpPLm9uVGFibGVDbGljayhtLF8pKX0pLFdyKDIsMjIpLHR0''@;'; put 'put ''KDMsUXplLDEsMCwiY2xyLWljb24iLDIzKSx0dCg0LGVVZSwxLDAsImNsci1pY29uIiwyNCksR3IoKSxZZSg1KSxDZSgpLHR0KDYsblVlLDIsMSwiY2xyLXRvb2x0aXAtY29udGVudCIsMjUpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMubmdWYXIsZj1HZSgpLiRpbXBsaWNpdCxkPUdlKDIpLiRp''@;'; put 'put ''bXBsaWNpdCxoPUdlKCk7U2UoMSksZ3IoImRjLWxvY2tlZC1jb250cm9sIixhKSgidGFibGUtYWN0aXZlIixoLmxpYlRhYkFjdGl2ZShkLkxJQlJBUllSRUYsZikpLFNlKDEpLFJlKCJuZ1N3aXRjaCIsZi5pbmNsdWRlcygiLUZDIikpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCEwKSxTZSgx''@;'; put 'put ''KSxSZSgibmdTd2l0Y2hDYXNlIiwhMSksU2UoMSksd3IoIiAiLGYucmVwbGFjZSgiLUZDIiwiIiksIiAiKX19ZnVuY3Rpb24gaVVlKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRyZWUtbm9kZSIpLHR0KDEsclVlLDcsOCwiY2xyLXRvb2x0aXAiLDIwKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy5p''@;'; put 'put ''bmRleCxmPUdlKDMpO1NlKDEpLFJlKCJuZ1ZhciIsYSsxPmYubGljZW5jZVN0YXRlLnZhbHVlLnRhYmxlc19pbl9saWJyYXJ5X2xpbWl0KX19ZnVuY3Rpb24gb1VlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLEV0KCJjbGljayIsZnVuY3Rpb24o''@;'; put 'put ''ZCl7VXQoYSk7Y29uc3QgaD1HZSgpLiRpbXBsaWNpdCxtPUdlKCk7cmV0dXJuIG0udHJlZU5vZGVDbGlja2VkKGQsaCksWnQobS5saWI9aC5MSUJSQVJZUkVGKX0pKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuJGltcGxpY2l0LmV4cGFuZGVk''@;'; put 'put ''PWQpfSkseWUoMSwicCIsMTYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCkuJGltcGxpY2l0LGg9R2UoKTtyZXR1cm4gaC5saWI9ZC5MSUJSQVJZUkVGLFp0KGgubGlicmFyeU9uQ2xpY2soZC5MSUJSQVJZUkVGLGQpKX0pLHRuKDIsImNsci1pY29uIiwxNyksWWUo''@;'; put 'put ''MyksQ2UoKSx0dCg0LEp6ZSw2LDMsImNsci10cmVlLW5vZGUiLDApLHR0KDUsaVVlLDIsMSwiY2xyLXRyZWUtbm9kZSIsMSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7Z3IoImNsci1leHBhbmRlZCIsYS5leHBhbmRlZCksUmUoImNsckV4cGFuZGVkIixhLmV4cGFuZGVk''@;'; put 'put ''KSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nVGFibGVzJiYhYS50YWJsZXMpLFNlKDMpLHdyKCIgIixhLkxJQlJBUllSRUYsIiAiKSxTZSgxKSxSZSgibmdJZiIsYS50YWJsZXMpLFNlKDEpLFJlKCJuZ0Zvck9mIixhLnRhYmxlcyl9fWZ1bmN0aW9uIGFVZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0''@;'; put 'put ''KDEsb1VlLDYsNywiY2xyLXRyZWUtbm9kZSIsMTQpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsIWEuaGlkZGVuKX19ZnVuY3Rpb24gbFVlKGwsYyl7MSZsJiYoeWUoMCwiZGl2IiwzMCkoMSwiZGl2IiwzMSkoMiwic3BhbiIsMzIpLFllKDMsIiBMb2Fk''@;'; put 'put ''aW5nLi4uICIpLENlKCkoKSgpKX1mdW5jdGlvbiBzVWUobCxjKXsxJmwmJih5ZSgwLCJoMyIsMzYpLFllKDEsIiBQbGVhc2Ugc2VsZWN0IGEgdGFibGUgIiksQ2UoKSl9ZnVuY3Rpb24gdVVlKGwsYyl7MSZsJiYoeWUoMCwiaDMiLDM2KSxZZSgxLCIgTm8gRWRpdGFibGUgVGFibGVzIENvbmZp''@;'; put 'put ''Z3VyZWQgIiksQ2UoKSl9ZnVuY3Rpb24gY1VlKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwzMyksdG4oMSwiY2xyLWljb24iLDM0KSx0dCgyLHNVZSwyLDAsImgzIiwzNSksdHQoMyx1VWUsMiwwLCJoMyIsMzUpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLFJlKCJuZ0lmIiwobnVs''@;'; put 'put ''bD09YS50cmVlTm9kZUxpYnJhcmllcz9udWxsOmEudHJlZU5vZGVMaWJyYXJpZXMubGVuZ3RoKT4wKSxTZSgxKSxSZSgibmdJZiIsKG51bGw9PWEudHJlZU5vZGVMaWJyYXJpZXM/bnVsbDphLnRyZWVOb2RlTGlicmFyaWVzLmxlbmd0aCk8MSl9fWxldCBmVWU9KCgpPT57Y2xhc3MgbHtjb25z''@;'; put 'put ''dHJ1Y3RvcihhLGYsZCxoLG0sXyl7dGhpcy5yb3V0ZT1hLHRoaXMucm91dGVyPWYsdGhpcy5saWNlbmNlU2VydmljZT1kLHRoaXMuaGVscGVyU2VydmljZT1oLHRoaXMuZXZlbnRTZXJ2aWNlPW0sdGhpcy5zYXNTZXJ2aWNlPV8sdGhpcy50cmVlTm9kZUxpYnJhcmllcz1udWxsLHRoaXMubGli''@;'; put 'put ''cmFyaWVzU2VhcmNoPSIiLHRoaXMubGliPSIiLHRoaXMudGFibGU9IiIsdGhpcy5lbmNvZGluZz0iVVRGLTgiLHRoaXMubG9hZGluZz0hMCx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZX1jb2xsYXBzZUxpYnJhcnlJdGVtcyhhLGYpe2EuZm9yRWFj''@;'; put 'put ''aChkPT57ZC5MSUJSQVJZSUQhPT1mLkxJQlJBUllJRCYmKGQuZXhwYW5kZWQ9ITEpfSl9dHJlZU5vZGVDbGlja2VkKGEsZil7IkNvbGxhcHNlIj09PWEudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlTGlicmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLGYpfWxpYnJhcnlPbkNsaWNrKGEsZil7''@;'; put 'put ''Zi5leHBhbmRlZD0hZi5leHBhbmRlZCxmLmV4cGFuZGVkJiYhdGhpcy50YWJsZSYmdGhpcy5zZWxlY3RMaWJyYXJ5KGEsITEsZiksdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyxmKX1zZWxlY3RMaWJyYXJ5KGEsZixkKXtkLmxvYWRpbmdUYWJsZXM9ITA7bGV0IGgs''@;'; put 'put ''bT1bXTtpZih0aGlzLmxpYnNBbmRUYWJsZXMmJihoPXRoaXMubGlic0FuZFRhYmxlc1thXSx0aGlzLnRhYmxlPXZvaWQgMCwiUGxlYXNlIHNlbGVjdCBsaWJyYXJ5IiE9PWEpKXtsZXQgXz1oLmZpbHRlcihmdW5jdGlvbihPKXtyZXR1cm4tMT09PW0uaW5kZXhPZihPKSYmKG0ucHVzaChPKSwh''@;'; put 'put ''MCl9KTt0aGlzLnRhYmxlcz1fLEpuLmVkaXRvci5saWJyYXJpZXM9dGhpcy5saWJyYXJpZXN9Sm4uZWRpdG9yLmxpYnJhcnk9YSxmfHx0aGlzLmNsZWFyR2xvYmFsc0ZpbHRlcigpLGQubG9hZGluZ1RhYmxlcz0hMSxkLmV4cGFuZGVkPSEwfXNlbGVjdFRhYmxlKGEsZil7dmFyIGQ9dGhpczty''@;'; put 'put ''ZXR1cm4geWkoZnVuY3Rpb24qKCl7ZC5saWJUYWI9ZC5saWIrIi4iK2QudGFibGUsZC5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksSm4uZWRpdG9yLnRhYmxlPWEsZnx8ZC5jbGVhckdsb2JhbHNGaWx0ZXIoKX0pKCl9Y2xlYXJHbG9iYWxzRmlsdGVyKCl7Sm4uZWRpdG9yLmZpbHRlci5s''@;'; put 'put ''aWJkcz0iIixKbi5lZGl0b3IuZmlsdGVyLndoZXJlQ2xhdXNlPSIiLEpuLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYz0iIixKbi5lZGl0b3IuZmlsdGVyLmNsYXVzZXM9W10sSm4uZWRpdG9yLmZpbHRlci52YWxzPVtdLEpuLmVkaXRvci5maWx0ZXIuY29scz1bXX1saWJUYWJBY3RpdmUoYSxm''@;'; put 'put ''KXtyZXR1cm4hKCF0aGlzLmxpYnx8IXRoaXMudGFibGUpJiZhPT09dGhpcy5saWImJmY9PT10aGlzLnRhYmxlfXRyZWVPbkZpbHRlcihhLGYpe3RoaXMuaGVscGVyU2VydmljZS50cmVlT25GaWx0ZXIoYSxmKX1saWJyYXJ5T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9u''@;'; put 'put ''RmlsdGVyKHRoaXMudHJlZU5vZGVMaWJyYXJpZXMsdGhpcy5saWJyYXJpZXNTZWFyY2gsIkxJQlJBUllSRUYiKSxKbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH1vblRhYmxlQ2xpY2soYSxmKXt0aGlzLnRhYmxlPWEsdGhpcy5saWI9Zi5MSUJSQVJZUkVG''@;'; put 'put ''LHRoaXMuc2VsZWN0VGFibGUoYSksdGhpcy5lZGl0VGFibGUoKX1lZGl0VGFibGUoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYisiLiIrdGhpcy50YWJsZSl9Z2V0TGlicmFyeVRhYmxlU3RhdGUoKXtpZihudWxsIT09Sm4uZWRpdG9yLnRyZWVOb2RlTGli''@;'; put 'put ''cmFyaWVzJiYodGhpcy50cmVlTm9kZUxpYnJhcmllcz1Kbi5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXMpLCIiIT09Sm4uZWRpdG9yLmxpYnJhcnkpe3RoaXMubGliPUpuLmVkaXRvci5saWJyYXJ5O2xldCBhPW51bGw7dGhpcy50cmVlTm9kZUxpYnJhcmllcyYmKGE9dGhpcy50cmVlTm9kZUxp''@;'; put 'put ''YnJhcmllcy5maW5kKGY9PmYuTElCUkFSWVJFRj09PXRoaXMubGliKSksdGhpcy5zZWxlY3RMaWJyYXJ5KEpuLmVkaXRvci5saWJyYXJ5LCEwLGEpfX1nZXRGcm9tR2xvYmFscygpe3RoaXMubGlic0FuZFRhYmxlcz1Kbi5lZGl0b3IubGlic0FuZFRhYmxlcyx0aGlzLmxpYnJhcmllcz1Kbi5l''@;'; put 'put ''ZGl0b3IubGlicmFyaWVzLHRoaXMuZ2V0TGlicmFyeVRhYmxlU3RhdGUoKSx0aGlzLmxvYWRpbmc9ITF9bmdBZnRlckNvbnRlbnRJbml0KCl7Sm4uZWRpdG9yLnN0YXJ0dXBTZXQ/dGhpcy5nZXRGcm9tR2xvYmFscygpOnRoaXMuZXZlbnRTZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vi''@;'; put 'put ''c2NyaWJlKCgpPT57dGhpcy5nZXRGcm9tR2xvYmFscygpfSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KExhKSxydCh0dSkscnQoYjEpLHJ0KFB1KSxydChScykscnQocGwpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1si''@;'; put 'put ''aG9tZS1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjgsdmFyczo0LGNvbnN0czpbWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZC1ibG9jayJd''@;'; put 'put ''LFsiY2xhc3MiLCJzcGlubmVyLXdyYXBwZXItZnVsbHBhZ2UiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkxpYnJh''@;'; put 'put ''cmllcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5n''@;'; put 'put ''SWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIs''@;'; put 'put ''ImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwz''@;'; put 'put ''LCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hUcmVlSW5wdXQiLCIiXSxbNCwibmdWYXIiXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwxLCJjbHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbMywibmdTd2l0Y2giXSxbInNoYXBlIiwiYm9sdCIsNCwibmdT''@;'; put 'put ''d2l0Y2hDYXNlIl0sWyJzaGFwZSIsInRhYmxlIiw0LCJuZ1N3aXRjaENhc2UiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IiwiY2xyU2l6ZSIsImxnIiw0LCJjbHJJZk9wZW4iXSxbInNoYXBlIiwiYm9sdCJdLFsic2hhcGUiLCJ0YWJsZSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20t''@;'; put 'put ''cmlnaHQiLCJjbHJTaXplIiwibGciXSxbNCwibmdJZiJdLFsxLCJzcGlubmVyLXdyYXBwZXItZnVsbHBhZ2UiXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwx''@;'; put 'put ''LCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWyJjbGFzcyIsInRleHQtY2VudGVyIGNvbG9yLWdyYXkiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiYXBwLXNpZGViYXIiKSgxLCJjbHItdHJlZSIp''@;'; put 'put ''LHR0KDIsS3plLDYsMywiY2xyLXRyZWUtbm9kZSIsMCksdHQoMyxhVWUsMiwxLCJuZy1jb250YWluZXIiLDEpLENlKCkoKSx5ZSg0LCJkaXYiLDIpKDUsImRpdiIsMyksdHQoNixsVWUsNCwwLCJkaXYiLDQpLHR0KDcsY1VlLDQsMiwiZGl2Iiw1KSxDZSgpKCkpLDImYSYmKFNlKDIpLFJlKCJu''@;'; put 'put ''Z0lmIiwobnVsbD09Zi50cmVlTm9kZUxpYnJhcmllcz9udWxsOmYudHJlZU5vZGVMaWJyYXJpZXMubGVuZ3RoKT4wKSxTZSgxKSxSZSgibmdGb3JPZiIsZi50cmVlTm9kZUxpYnJhcmllcyksU2UoMyksUmUoIm5nSWYiLGYubG9hZGluZyksU2UoMSksUmUoIm5nSWYiLCFmLmxvYWRpbmcpKX0s''@;'; put 'put ''ZGVwZW5kZW5jaWVzOltpcyxXYSx6YSxEZCxMZixpNSxSbCxKYyx4ZCxSZixNUyxFUyxrUyxrNCxSYSwkaSxrZixDaCxSN10sc3R5bGVzOlsiY2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0uY2Fy''@;'; put 'put ''ZC1ibG9ja1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7cGFkZGluZzowfS5uby10YWJsZS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjEwMCV9ICBjbHItaWNvbi5pcy1ibHVlLCAgIGNsci1pY29uLmlzLWluZm97ZmlsbDojNmE5''@;'; put 'put ''MjM1fS5zcGlubmVyLXdyYXBwZXItZnVsbHBhZ2VbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfSJdfSksbH0pKCk7dmFyIHUzPVQoMTIwNzApO2NvbnN0IFlaPWZ1''@;'; put 'put ''bmN0aW9uIGhVZShsKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGx8fEJ2KGwpJiYiW29iamVjdCBTeW1ib2xdIj09RnYobCl9O3ZhciBwVWU9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sbVVlPS9eXHcqJC87ZnVuY3Rpb24gV1oobCxjKXtpZigi''@;'; put 'put ''ZnVuY3Rpb24iIT10eXBlb2YgbHx8bnVsbCE9YyYmImZ1bmN0aW9uIiE9dHlwZW9mIGMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGY9YXJndW1lbnRzLGQ9Yz9jLmFwcGx5KHRoaXMsZik6ZlswXSxoPWEuY2FjaGU7aWYo''@;'; put 'put ''aC5oYXMoZCkpcmV0dXJuIGguZ2V0KGQpO3ZhciBtPWwuYXBwbHkodGhpcyxmKTtyZXR1cm4gYS5jYWNoZT1oLnNldChkLG0pfHxoLG19O3JldHVybiBhLmNhY2hlPW5ldyhXWi5DYWNoZXx8b3opLGF9V1ouQ2FjaGU9b3o7Y29uc3QgYlVlPVdaO3ZhciBTVWU9L1teLltcXV0rfFxbKD86KC0/''@;'; put 'put ''XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csTVVlPS9cXChcXCk/L2csa1VlPWZ1bmN0aW9uIHdVZShsKXt2YXIgYz1iVWUobCxmdW5jdGlvbihmKXtyZXR1cm4gNTAwPT09YS5zaXplJiZhLmNs''@;'; put 'put ''ZWFyKCksZn0pLGE9Yy5jYWNoZTtyZXR1cm4gY30oZnVuY3Rpb24obCl7dmFyIGM9W107cmV0dXJuIDQ2PT09bC5jaGFyQ29kZUF0KDApJiZjLnB1c2goIiIpLGwucmVwbGFjZShTVWUsZnVuY3Rpb24oYSxmLGQsaCl7Yy5wdXNoKGQ/aC5yZXBsYWNlKE1VZSwiJDEiKTpmfHxhKX0pLGN9KTtj''@;'; put 'put ''b25zdCBFVWU9a1VlO3ZhciBoY2U9czQ/czQucHJvdG90eXBlOnZvaWQgMCxwY2U9aGNlP2hjZS50b1N0cmluZzp2b2lkIDA7Y29uc3QgT1VlPWZ1bmN0aW9uIG1jZShsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGw7aWYoanYobCkpcmV0dXJuIGZ1bmN0aW9uIHhVZShsLGMpe2Zv''@;'; put 'put ''cih2YXIgYT0tMSxmPW51bGw9PWw/MDpsLmxlbmd0aCxkPUFycmF5KGYpOysrYTxmOylkW2FdPWMobFthXSxhLGwpO3JldHVybiBkfShsLG1jZSkrIiI7aWYoWVoobCkpcmV0dXJuIHBjZT9wY2UuY2FsbChsKToiIjt2YXIgYz1sKyIiO3JldHVybiIwIj09YyYmMS9sPT0tMS8wPyItMCI6Y30s''@;'; put 'put ''TFVlPWZ1bmN0aW9uIFJVZShsLGMpe3JldHVybiBqdihsKT9sOmZ1bmN0aW9uIGdVZShsLGMpe2lmKGp2KGwpKXJldHVybiExO3ZhciBhPXR5cGVvZiBsO3JldHVybiEoIm51bWJlciIhPWEmJiJzeW1ib2wiIT1hJiYiYm9vbGVhbiIhPWEmJm51bGwhPWwmJiFZWihsKSl8fG1VZS50ZXN0KGwp''@;'; put 'put ''fHwhcFVlLnRlc3QobCl8fG51bGwhPWMmJmwgaW4gT2JqZWN0KGMpfShsLGMpP1tsXTpFVWUoZnVuY3Rpb24gRFVlKGwpe3JldHVybiBudWxsPT1sPyIiOk9VZShsKX0obCkpfSxIVWU9ZnVuY3Rpb24gRlVlKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbHx8WVoobCkpcmV0dXJuIGw7dmFyIGM9''@;'; put 'put ''bCsiIjtyZXR1cm4iMCI9PWMmJjEvbD09LTEvMD8iLTAiOmN9LG9zPWZ1bmN0aW9uIEJVZShsLGMsYSl7dmFyIGY9bnVsbD09bD92b2lkIDA6ZnVuY3Rpb24gTlVlKGwsYyl7Zm9yKHZhciBhPTAsZj0oYz1MVWUoYyxsKSkubGVuZ3RoO251bGwhPWwmJmE8ZjspbD1sW0hVZShjW2ErK10pXTty''@;'; put 'put ''ZXR1cm4gYSYmYT09Zj9sOnZvaWQgMH0obCxjKTtyZXR1cm4gdm9pZCAwPT09Zj9hOmZ9O2xldCBMZD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9Zix0aGlzLmxvZ2dlclNlcnZpY2U9ZCx0aGlzLnJlc3BvbnNl''@;'; put 'put ''PW5ldyB3ZSx0aGlzLmNoYW5nZWRUYWJsZT1uZXcgd2UsdGhpcy5kZXRhaWxzPW5ldyB3ZSx0aGlzLmRpZmZzPW5ldyB3ZSx0aGlzLmNvbHVtbnM9bmV3IHdlLHRoaXMudmFsdWVzPW5ldyB3ZSx0aGlzLmZpbHRlcj1uZXcgd2UsdGhpcy5xdWVyeT1uZXcgd2UsdGhpcy5zdWJtaXR0RGV0YWls''@;'; put 'put ''PW5ldyB3ZSx0aGlzLnJlbW92ZVF1ZXJ5PW5ldyB3ZSx0aGlzLnNldFN1Ym1pdD1uZXcgd2UsdGhpcy5zZXRTdWJtaXRMaXN0PW5ldyB3ZX1jYWxsU2VydmljZShhLGYsZCxoKXt2YXIgbT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXttLmxpYmRzPWg7bGV0IF89e307cmV0dXJuIF9bZl09''@;'; put 'put ''W2FdLHtkYXRhOnlpZWxkIG0uc2FzU2VydmljZS5yZXF1ZXN0KGQsXyksbGliZHM6bS5saWJkc319KSgpfXVwZGF0ZVRhYmxlKGEsZixkLGgsbSl7dmFyIF89dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7bGV0IE89e2pzZGF0YTpmfTtpZihtKXtsZXQgYWU9Xy5wYXJzZUZvcm1hdHMobSk7''@;'; put 'put ''Ty4kanNkYXRhPXtmb3JtYXRzOmFlfX1yZXR1cm4gT1tkXT1bYV0seWllbGQgXy5zYXNTZXJ2aWNlLnJlcXVlc3QoaCxPKX0pKCl9Z2V0QXBwcm92YWxzKGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgbT17fTtyZXR1cm4gbVtmXT1bYV0seWllbGQgaC5zYXNT''@;'; put 'put ''ZXJ2aWNlLnJlcXVlc3QoZCxtKX0pKCl9c2VuZERldGFpbHMoYSxmLGQpe3ZhciBoPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBtPU9iamVjdC5hc3NpZ24oe3N1YjohMH0sYSk7aC5zdWJtaXR0RGV0YWlsLm5leHQoe2RhdGE6ZFtmXSx2aWV3RGF0YTptfSl9KSgpfWdldFN1Ym1p''@;'; put 'put ''dHRzKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7cmV0dXJuIHlpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KCJlZGl0b3JzL2dldHN1Ym1pdHMiLG51bGwpfSkoKX12aWV3TGlicygpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3JldHVybiBhLnNhc1NlcnZp''@;'; put 'put ''Y2UucmVxdWVzdCgicHVibGljL3ZpZXdsaWJzIixudWxsKX0pKCl9cmVmcmVzaExpYkluZm8oYSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7cmV0dXJuIGYuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvcmVmcmVzaGxpYmluZm8iLHtsaWIycmVmcmVzaDpbe2xpYnJlZjph''@;'; put 'put ''fV19KX0pKCl9dmVyc2lvbkhpc3RvcnkoYSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7Y29uc3QgZD17aXdhbnQ6W3tMSUJEUzphfV19O3JldHVybiB5aWVsZCBmLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL2dldHZlcnNpb25oaXN0b3J5IixkKX0pKCl9dmlld1RhYmxl''@;'; put 'put ''cyhhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgZD17U0FTQ29udHJvbFRhYmxlOlt7TVBMSUI6YX1dfTtyZXR1cm4geWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3dGFibGVzIixkKX0pKCl9dmlld0RhdGEoYSxmKXt2YXIgZD10aGlzO3JldHVy''@;'; put 'put ''biB5aShmdW5jdGlvbiooKXtsZXQgaD17U0FTQ29udHJvbFRhYmxlOlt7TElCRFM6YSxGSUxURVJfUks6Zn1dfTtyZXR1cm4geWllbGQgZC5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3ZGF0YSIsaCl9KSgpfXZpZXdEYXRhU2VhcmNoKGEsZj0hMSxkLGgpe3ZhciBtPXRoaXM7cmV0''@;'; put 'put ''dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBPPXtTQVNDb250cm9sVGFibGU6W3tTRUFSQ0hUWVBFOmEubGVuZ3RoPjA/Zj8iTlVNIjoiQ0hBUiI6Ik5PTkUiLFNFQVJDSFZBTDphLExJQkRTOmQsRklMVEVSX1JLOmh9XX07cmV0dXJuIHlpZWxkIG0uc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMv''@;'; put 'put ''dmlld2RhdGEiLE8pfSkoKX1nZXREZXRhaWxzKGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgbT17fTtyZXR1cm4gbVtmXT1bYV0seWllbGQgaC5zYXNTZXJ2aWNlLnJlcXVlc3QoZCxtKX0pKCl9c2hvd0RpZmZzKGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5''@;'; put 'put ''aShmdW5jdGlvbiooKXtsZXQgbT17fTtyZXR1cm4gbVtmXT1bYV0seWllbGQgaC5zYXNTZXJ2aWNlLnJlcXVlc3QoZCxtLHt1c2VDb21wdXRlQXBpOiExfSl9KSgpfXJlamVjdGluZyhhLGYsZCl7dmFyIGg9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7bGV0IG09e307cmV0dXJuIG1bZl09''@;'; put 'put ''W2FdLHlpZWxkIGguc2FzU2VydmljZS5yZXF1ZXN0KGQsbSx7dXNlQ29tcHV0ZUFwaTohMX0pfSkoKX1hcHByb3ZlVGFibGUoYSxmLGQpe3ZhciBoPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBtPXt9O3JldHVybiBtW2ZdPVthXSx5aWVsZCBoLnNhc1NlcnZpY2UucmVxdWVzdChk''@;'; put 'put ''LG0pfSkoKX1nZXRIaXN0b3J5KGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgbT17fTtyZXR1cm4gbVtmXT1bYV0seWllbGQgaC5zYXNTZXJ2aWNlLnJlcXVlc3QoZCxtKX0pKCl9c2V0UXVlcnlWYXJpYWJsZXMoYSxmKXt0aGlzLmNvbHVtbnMubmV4dCh7ZGF0''@;'; put 'put ''YTp7Y29sczpmfSxsaWJkczphfSl9Z2V0Q2hhbmdlSW5mbyhhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgaD17U0FTQ29udHJvbFRhYmxlOlt7VEFCTEU6YX1dfTtyZXR1cm4geWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXRjaGFuZ2VpbmZvIixo''@;'; put 'put ''KX0pKCl9Z2V0UXVlcnlWYWx1ZXMoYSxmLGQsaCxtKXt2YXIgXz10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgTz17aXdhbnQ6W3tsaWJkczpmLGNvbDphLC4uLmgmJntTVEFSVFJPVzpofSwuLi5tJiZ7Uk9XUzptfX1dfTtyZXR1cm4gZC5sZW5ndGg+MCYmKE8uRklMVEVSUVVFUlk9''@;'; put 'put ''ZCkseWllbGQgXy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXRjb2x2YWxzIixPKS5jYXRjaChhZT0+e3Rocm93IGFlfSl9KSgpfXNhdmVRdWVyeShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBoPXtpd2FudDpbe2ZpbHRlcl90YWJsZTphfV0sZmlsdGVy''@;'; put 'put ''cXVlcnk6Zn0sbT15aWVsZCBkLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3ZhbGlkYXRlZmlsdGVyIixoKTtyZXR1cm4gZC5maWx0ZXIubmV4dChtKSxtfSkoKX1vcGVuVGFibGUoYSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7bGV0IGQ9e2l3YW50Olt7dGFibGVfaWQ6''@;'; put 'put ''YX1dfTtyZXR1cm4geWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoImF1ZGl0b3JzL2dldHN0YWdldGFibGUiLGQpfSkoKX1jaGVja09wZXJhdG9yKGEsZixkKXtsZXQgaDtzd2l0Y2goYSl7Y2FzZSJCRVRXRUVOIjpmIGluc3RhbmNlb2YgQXJyYXkmJigiIiE9PWZbMF0mJiIiIT09ZlsxXT9o''@;'; put 'put ''PWZbMF0rIiBBTkQgIitmWzFdOiIiIT09ZlswXSYmIiI9PT1mWzFdPyhmWzFdPSIuIixoPWZbMF0rIiBBTkQgIitmWzFdKToiIj09PWZbMF0mJiIiIT09ZlsxXT8oZlswXT0iLiIsaD1mWzBdKyIgQU5EICIrZlsxXSk6KGZbMF09Ii4iLGZbMV09Ii4iLGg9ZlswXSsiIEFORCAiK2ZbMV0pKTti''@;'; put 'put ''cmVhaztjYXNlIklOIjpjYXNlIk5PVCBJTiI6bGV0IF89W107aWYodHlwZW9mIGY8InUiKWZvcihsZXQgTz0wO088Zi5sZW5ndGg7TysrKSEwPT09ZltPXS5jaGVja2VkJiYoImNoYXIiPT09ZD8oInN0cmluZyI9PXR5cGVvZiBmW09dLnZhbCYmKGZbT10udmFsPWZbT10udmFsLnJlcGxhY2Uo''@;'; put 'put ''IiciLCInJyIpKSxfLnB1c2goIiciK2ZbT10udmFsKyInIikpOihudWxsPT09ZltPXS52YWwmJihmW09dLnZhbD0iLiIpLF8ucHVzaChmW09dLnZhbCkpKTtmPSIoIitfKyIpIjticmVhaztjYXNlIkNPTlRBSU5TIjphPSI/IjticmVhaztjYXNlIk5PVCBFUVVBTCI6YT0ibmUifXJldHVybiJu''@;'; put 'put ''dW0iPT09ZCYmbnVsbD09PWYmJihmPSIuIiksIlBsZWFzZSBzZWxlY3QgdmFsdWUiPT09ZiYmKGY9IiIpLC0xIT09WyI9IiwiPiIsIjwiLCI8PSIsIj49IiwibmUiXS5pbmRleE9mKGEpJiYibnVtIj09PWQmJiIiPT09ZiYmKGY9Ii4iKSwiQkVUV0VFTiI9PT1hP3t2YWx1ZTpoLG9wZXJhdG9y''@;'; put 'put ''OmF9Ont2YWx1ZTpmLG9wZXJhdG9yOmF9fXdoZXJlQ2xhdXNlQ3JlYXRvcihhLGYsZCl7bGV0IE8scGUsaD0iIixYPSIiLGFlPVtdO2ZvcihsZXQgeGU9MDt4ZTxhLnF1ZXJ5T2JqLmxlbmd0aDt4ZSsrKXtsZXQgVmU9IiIsWmU9YS5xdWVyeU9ialt4ZV07Zm9yKGxldCBsdD0wO2x0PFplLmVs''@;'; put 'put ''ZW1lbnRzLmxlbmd0aDtsdCsrKXtsZXQgZ3QsZHQ9WmUuZWxlbWVudHNbbHRdO089bHQ8WmUuZWxlbWVudHMubGVuZ3RoLTE/WmUuY2xhdXNlTG9naWM6IiI7Zm9yKGxldCBRbj0wO1FuPGR0LnZhbHVlcy5sZW5ndGg7UW4rKyl7aWYoInN0cmluZyI9PXR5cGVvZiBkdC52YWx1ZSYmIm51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBkdC52YWx1ZXNbUW5dLmZvcm1hdHRlZClkdC52YWx1ZT09PUpTT04uc3RyaW5naWZ5KGR0LnZhbHVlc1tRbl0uZm9ybWF0dGVkKSYmKGd0PWR0LnZhbHVlc1tRbl0udW5mb3JtYXR0ZWQpO2Vsc2V7bGV0IFZyPSJudW1iZXIiIT10eXBlb2YgZHQudmFsdWVzW1FuXS5mb3Jt''@;'; put 'put ''YXR0ZWQmJm51bGwhPT1kdC52YWx1ZXNbUW5dLmZvcm1hdHRlZD9kdC52YWx1ZXNbUW5dLmZvcm1hdHRlZC50cmltKCk6ZHQudmFsdWVzW1FuXS5mb3JtYXR0ZWQ7ZHQudmFsdWU9PT1WciYmKGd0PWR0LnZhbHVlc1tRbl0udW5mb3JtYXR0ZWQpfSJQbGVhc2Ugc2VsZWN0IHZhbHVlIj09PWR0''@;'; put 'put ''LnZhbHVlJiYtMSE9PVsiPSIsIj4iLCI8IiwiPD0iLCI+PSIsIm5lIl0uaW5kZXhPZihkdC5vcGVyYXRvcikmJihndD0iIiksKCJDT05UQUlOUyI9PT1kdC5vcGVyYXRvcnx8IkxJS0UiPT09ZHQub3BlcmF0b3J8fCJCRUdJTlNfV0lUSCI9PT1kdC5vcGVyYXRvcikmJihndD1kdC52YWx1ZSl9''@;'; put 'put ''aWYoZ3R8fChndD1kdC52YWx1ZSksZHQudmFsdWUgaW5zdGFuY2VvZiBBcnJheSYmIkJFVFdFRU4iPT09ZHQub3BlcmF0b3Ipe2d0PVtdLGd0LnB1c2goZHQudmFsdWVbMF0pLGd0LnB1c2goZHQudmFsdWVbMV0pO2ZvcihsZXQgUW49MDtRbjxkdC52YWx1ZXMubGVuZ3RoO1FuKyspZ3RbMF09''@;'; put 'put ''PT1kdC52YWx1ZXNbUW5dLmZvcm1hdHRlZCYmKGd0WzBdPWR0LnZhbHVlc1tRbl0udW5mb3JtYXR0ZWQpLGd0WzFdPT09ZHQudmFsdWVzW1FuXS5mb3JtYXR0ZWQmJihndFsxXT1kdC52YWx1ZXNbUW5dLnVuZm9ybWF0dGVkKX1pZihkdC52YWx1ZSBpbnN0YW5jZW9mIEFycmF5JiYoIklOIj09''@;'; put 'put ''PWR0Lm9wZXJhdG9yfHwiTk9UIElOIj09PWR0Lm9wZXJhdG9yKSl7Z3Q9W10sZ3Q9ZHQudmFsdWU7Zm9yKGxldCBRbj0wO1FuPGR0LnZhbHVlcy5sZW5ndGg7UW4rKylndFtRbl0mJmd0W1FuXS52YWw9PT1kdC52YWx1ZXNbUW5dLmZvcm1hdHRlZCYmKGd0W1FuXS52YWw9ZHQudmFsdWVzW1Fu''@;'; put 'put ''XS51bmZvcm1hdHRlZCl9bGV0IHluLGp0PWR0LnR5cGUscm49bnVsbD09PWR0LnZhcmlhYmxlPyIiOmR0LnZhcmlhYmxlLFh0PW51bGw9PT1kdC5vcGVyYXRvcj8iIjpkdC5vcGVyYXRvcjt5bj10aGlzLmNoZWNrT3BlcmF0b3IoWHQsZ3QsanQpLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgeW4m''@;'; put 'put ''JiIoIiE9PXluWzBdJiYoeW49eW4ucmVwbGFjZSgiJyIsIicnIikpLFh0PXRoaXMuY2hlY2tPcGVyYXRvcihYdCx5bixqdCkub3BlcmF0b3IsImNoYXIiPT09anQmJiJJTiIhPT1YdCYmIk5PVCBJTiIhPT1YdD8odHlwZW9mIHluPiJ1IiYmKHluPSIiKSx5bj0iICciK3luKyInICIsVmU9VmUr''@;'; put 'put ''IiAiK3JuKyIgIitYdCt5bitPKTooIm51bSI9PT1qdCYmdHlwZW9mIHluPiJ1IiYmKHluPSIuIikseW49dHlwZW9mIHluPiJ1Ij8iIjoiICIreW4rIiAiLFZlPVZlKyIgIitybisiICIrWHQreW4rTyl9YWUucHVzaChWZSl9WD0iIjtmb3IobGV0IHhlPTA7eGU8YWUubGVuZ3RoO3hlKyspcGU9''@;'; put 'put ''eGU8YWUubGVuZ3RoLTE/ZjoiIixYPTE9PT1hZS5sZW5ndGg/YWVbMF06WCsiICgiK2FlW3hlXSsiKSAiK3BlO3JldHVybiBoPVguc3Vic3RyKDEpLnNsaWNlKDAsLTEpLFg9IldIRVJFIitYKyI7Iix0aGlzLnF1ZXJ5Lm5leHQoe3doZXJlQ2xhdXNlOlgsc3RyaW5nOmgsb2JqOmEsbGliZHM6''@;'; put 'put ''ZH0pLHt3aGVyZUNsYXVzZTpYLHN0cmluZzpofX1jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKGEpe2NvbnN0IGY9W107cmV0dXJuIGEuZmlsdGVyR3JvdXBzLmZvckVhY2goKGQsaCk9PntkLmZpbHRlckNsYXVzZXMuZm9yRWFjaChtPT57bGV0IF89IiI7IkJFVFdFRU4iPT09bS5vcGVyYXRvcj9f''@;'; put 'put ''PWAke20udmFsdWVbMF19IEFORCAke20udmFsdWVbMV19YDoiSU4iPT09bS5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1tLm9wZXJhdG9yPyhtLnZhbHVlLmZvckVhY2goTz0+e2lmKE8uY2hlY2tlZCl7Y29uc3QgWD1PLnZhbDsic3RyaW5nIiE9dHlwZW9mIFh8fCgwLHUzLmlzU3BlY2lhbE1pc3Np''@;'; put 'put ''bmcpKFgpJiYiY2hhciIhPT1tLnR5cGU/Xy5sZW5ndGg+MD9fKz1gLCR7WH1gOl89YCgke1h9YDpfLmxlbmd0aD4wP18rPWAsJyR7WC5yZXBsYWNlKC8nL2csIicnIil9J2A6Xz1gKCcke1gucmVwbGFjZSgvJy9nLCInJyIpfSdgfX0pLF8ubGVuZ3RoPjAmJihfKz0iKSIpKToiIj09PW0udmFs''@;'; put 'put ''dWU/Xz0iY2hhciI9PT1tLnR5cGU/IicgJyI6Ii4iOiJjaGFyIj09PW0udHlwZSYmKF89YCcke20udmFsdWUucmVwbGFjZSgvJy9nLCInJyIpfSdgKSxmLnB1c2goe0dST1VQX0xPR0lDOmEuZ3JvdXBMb2dpYyxTVUJHUk9VUF9MT0dJQzpkLmNsYXVzZUxvZ2ljfHwiQU5EIixTVUJHUk9VUF9J''@;'; put 'put ''RDpoLFZBUklBQkxFX05NOm0udmFyaWFibGUsT1BFUkFUT1JfTk06bS5vcGVyYXRvcixSQVdfVkFMVUU6X3x8bS52YWx1ZX0pfSl9KSxmfWluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoYSxmKXtjb25zdCBkPXtxdWVyeU9iajpbXSxjbGF1c2VMb2dpYzpbXSxncm91cExvZ2ljOm9zKEpu''@;'; put 'put ''LGEpLmZpbHRlci5xdWVyeVswXS5HUk9VUF9MT0dJQ307b3MoSm4sYSkuZmlsdGVyLmNsYXVzZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShkKSxvcyhKbixhKS5maWx0ZXIuZ3JvdXBMb2dpYz1vcyhKbixhKS5maWx0ZXIucXVlcnlbMF0uR1JPVVBfTE9HSUM7bGV0IGg9IiIsbT17''@;'; put 'put ''ZWxlbWVudHM6W119LF89MDtvcyhKbixhKS5maWx0ZXIucXVlcnkuZm9yRWFjaChPPT57Y29uc3QgWD17fTtmb3IobGV0IGFlPTA7YWU8Zi5sZW5ndGg7YWUrKylpZihmW2FlXS5OQU1FPT09Ty5WQVJJQUJMRV9OTSl7aWYoaD1PLlNVQkdST1VQX0xPR0lDLFguZGR0eXBlPWZbYWVdLkREVFlQ''@;'; put 'put ''RSxYLnR5cGU9ZlthZV0uVFlQRSxYLm9wZXJhdG9ycz0ibnVtIj09PWZbYWVdLlRZUEU/Sm4ub3BlcmF0b3JzLm51bU9wZXJhdG9yczpKbi5vcGVyYXRvcnMuY2hhck9wZXJhdG9ycyxYLmxvZ2ljPW51bGwsWC5vcGVyYXRvcj1PLk9QRVJBVE9SX05NLFgudmFyaWFibGU9Ty5WQVJJQUJMRV9O''@;'; put 'put ''TSwiY2hhciI9PT1mW2FlXS5UWVBFKWlmKCJJTiI9PT1PLk9QRVJBVE9SX05NfHwiTk9UIElOIj09PU8uT1BFUkFUT1JfTk0pe2NvbnN0IHBlPVtdLHhlPU8uUkFXX1ZBTFVFLnNsaWNlKDEsLTEpLnNwbGl0KCInLCciKTsxPT09eGUubGVuZ3RoP3BlLnB1c2goe2NoZWNrZWQ6ITAsdmFsOnhl''@;'; put 'put ''WzBdLnNsaWNlKDEsLTEpLnJlcGxhY2UoLycnL2csIiciKX0pOnhlLmZvckVhY2goKFZlLFplKT0+e3BlLnB1c2goMD09PVplP3tjaGVja2VkOiEwLHZhbDpWZS5zbGljZSgxKS5yZXBsYWNlKC8nJy9nLCInIil9OlplPT09eGUubGVuZ3RoLTE/e2NoZWNrZWQ6ITAsdmFsOlZlLnNsaWNlKDAs''@;'; put 'put ''LTEpLnJlcGxhY2UoLycnL2csIiciKX06e2NoZWNrZWQ6ITAsdmFsOlZlLnJlcGxhY2UoLycnL2csIiciKX0pfSksWC52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHBlKX1lbHNlIFgudmFsdWU9Ty5SQVdfVkFMVUUuc2xpY2UoMSwtMSkucmVwbGFjZSgvJycvZywiJyIpO2Vs''@;'; put 'put ''c2UgaWYoIklOIj09PU8uT1BFUkFUT1JfTk18fCJOT1QgSU4iPT09Ty5PUEVSQVRPUl9OTSl7Y29uc3QgcGU9W107Ty5SQVdfVkFMVUUuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5mb3JFYWNoKChWZSxaZSk9PntwZS5wdXNoKHtjaGVja2VkOiEwLHZhbDpWZX0pfSksWC52YWx1ZT10aGlzLmhl''@;'; put 'put ''bHBlclNlcnZpY2UuZGVlcENsb25lKHBlKX1lbHNlIGlmKCJCRVRXRUVOIj09PU8uT1BFUkFUT1JfTk0pe2NvbnN0IHBlPU8uUkFXX1ZBTFVFLnNwbGl0KCIgQU5EICIpO1gudmFsdWU9cGV9ZWxzZSBYLnZhbHVlPU8uUkFXX1ZBTFVFO1gudmFsdWVzPVtdLF89PT1PLlNVQkdST1VQX0lEfHwo''@;'; put 'put ''b3MoSm4sYSkuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKG0pKSxvcyhKbixhKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialtfXS5jbGF1c2VMb2dpYz1oLG9zKEpuLGEpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW19dLmludmFsaWRD''@;'; put 'put ''bGF1c2U9ITEsXysrLG0uZWxlbWVudHM9W10pLG0uZWxlbWVudHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFgpKTticmVha319KSxtLmVsZW1lbnRzLmxlbmd0aD4wJiYob3MoSm4sYSkuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2Uu''@;'; put 'put ''ZGVlcENsb25lKG0pKSxvcyhKbixhKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialtfXS5jbGF1c2VMb2dpYz1oLG9zKEpuLGEpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW19dLmludmFsaWRDbGF1c2U9ITEpLG9zKEpuLGEpLmZpbHRlci5xdWVyeT1bXX1yZW1vdmVDbGF1c2UoKXt2YXIgYT10''@;'; put 'put ''aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtyZXR1cm4gYS5yZW1vdmVRdWVyeS5uZXh0KCEwKSwhMH0pKCl9c3BlY0NvbnZlcnNpb24oYSl7bGV0IGY9e30sZD1bXTtpZihkPWEubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBoLk5BTUUudG9VcHBlckNhc2UoKX0pLGEgaW5zdGFuY2VvZiBBcnJh''@;'; put 'put ''eSlmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKylmW2RbaF1dPTE9PT1hW2hdLlRZUEU/e2NvbFR5cGU6Im51bSIsY29sTGVuZ3RoOmFbaF0uTEVOR1RIfTp7Y29sVHlwZToic3RyaW5nIixjb2xMZW5ndGg6YVtoXS5MRU5HVEh9O3JldHVybiBmfXNldFN1Ym1pdFJlYWR5KCl7dGhpcy5zZXRT''@;'; put 'put ''dWJtaXQubmV4dCghMCl9cGFyc2VGb3JtYXRzKGEpe2NvbnN0IGY9e30sZD1hLnZhcnM7Zm9yKGxldCBoIG9mIE9iamVjdC5rZXlzKGQpKXtjb25zdCBtPWRbaF0udHlwZSxfPWRbaF0ubGVuZ3RoOyJudW0iPT09bT9mW2hdPSJiZXN0LiI6ImNoYXIiPT09bSYmKGZbaF09YCRjaGFyJHtffS5g''@;'; put 'put ''KX1yZXR1cm4gZn19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IocGwpLHNyKFB1KSxzcih5MSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2Z1bmN0aW9uIGpVZShsLGMpezEmbCYmKHllKDAs''@;'; put 'put ''ImRpdiIsOSkoMSwiZGl2IiwxMCksdG4oMiwiY2xyLWljb24iLDExKSx5ZSgzLCJoMyIsMTIpLFllKDQsIlRoZXJlIGFyZSBubyBhcHByb3ZhbHMgcmVtYWluaW5nIiksQ2UoKSgpKCkpfWZ1bmN0aW9uIHpVZShsLGMpezEmbCYmKHllKDAsImgzIiwxMyksWWUoMSwiIFJFVklFVyAiKSxDZSgp''@;'; put 'put ''KX1mdW5jdGlvbiBVVWUobCxjKXtpZigxJmwmJih5ZSgwLCJwIiwxNCksWWUoMSwiIFlvdSBoYXZlICIpLHllKDIsInNwYW4iKSxZZSgzKSxDZSgpLFllKDQsImFwcHJvdmFscyByZW1haW5pbmcgIiksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMyksd3IoIiIsYS5yZW1haW5lZCwiICIp''@;'; put 'put ''fX1mdW5jdGlvbiBaVWUobCxjKXsxJmwmJih5ZSgwLCJzcGFuIiwxNyksWWUoMSwiIExvYWRpbmcuLi4gIiksQ2UoKSl9ZnVuY3Rpb24gWVVlKGwsYyl7MSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyLCJMb2FkaW5nIGFwcHJvdmFscyBsaXN0IiksQ2UoKSgpKX1mdW5jdGlvbiBXVWUo''@;'; put 'put ''bCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDE1KSx0dCgxLFpVZSwyLDAsInNwYW4iLDE2KSx0dCgyLFlVZSwzLDAsImRpdiIsOCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCl9fWZ1bmN0aW9uIEdV''@;'; put 'put ''ZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDM4KX1mdW5jdGlvbiAkVWUobCxjKXsxJmwmJnRuKDAsImNsci1zcGlubmVyIiwzOSksMiZsJiZSZSgiY2xyU21hbGwiLCEwKX1mdW5jdGlvbiBLVWUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItZGctcm93IikoMSwiY2xy''@;'; put 'put ''LWRnLWNlbGwiKSxZZSgyKSxDZSgpLHllKDMsImNsci1kZy1jZWxsIiksWWUoNCksQ2UoKSx5ZSg1LCJjbHItZGctY2VsbCIpLFllKDYpLENlKCkseWUoNywiY2xyLWRnLWNlbGwiKSxZZSg4KSxDZSgpLHllKDksImNsci1kZy1jZWxsIikoMTAsImRpdiIsMjYpKDExLCJhIiwyNyksRXQoImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuaW5kZXg7cmV0dXJuIFp0KEdlKDIpLmdldENsaWNrZWQoaCkpfSksdG4oMTIsImNsci1pY29uIiwyOCkseWUoMTMsInNwYW4iLDI5KSxZZSgxNCwiR28gdG8gcmV2aWV3IHBhZ2Ugc2NyZWVuIiksQ2UoKSgpLHllKDE1LCJhIiwzMCksRXQo''@;'; put 'put ''ImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGQ9VXQoYSksaD1kLiRpbXBsaWNpdCxtPWQuaW5kZXgsXz1HZSgyKTtyZXR1cm4gWnQoaC5yZWplY3RMb2FkaW5nPyIiOl8ucmVqZWN0aW5nKG0pKX0pLHR0KDE2LEdVZSwxLDAsImNsci1pY29uIiwzMSksdHQoMTcsJFVlLDEsMSwiY2xyLXNwaW5u''@;'; put 'put ''ZXIiLDMyKSx5ZSgxOCwic3BhbiIsMjkpLFllKDE5LCJSZWplY3QiKSxDZSgpKCkseWUoMjAsImEiLDMzKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDIpLmdldFRhYmxlKGgudGFibGVJZCkpfSksdG4oMjEsImNsci1pY29uIiwz''@;'; put 'put ''NCkseWUoMjIsInNwYW4iLDI5KSxZZSgyMywiR28gdG8gc3RhZ2VkIGRhdGEgc2NyZWVuIiksQ2UoKSgpKCkoKSx5ZSgyNCwiY2xyLWRnLWNlbGwiLDM1KSgyNSwiYnV0dG9uIiwzNiksRXQoImNsaWNrIixmdW5jdGlvbihkKXtjb25zdCBtPVV0KGEpLiRpbXBsaWNpdDtyZXR1cm4gR2UoMiku''@;'; put 'put ''ZG93bmxvYWQobS50YWJsZUlkKSxadChkLnN0b3BQcm9wYWdhdGlvbigpKX0pLHRuKDI2LCJjbHItaWNvbiIsMzcpLENlKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgyKSxhcihhLnN1Ym1pdHRlciksU2UoMiksYXIoYS5iYXNlVGFibGUpLFNlKDIpLGFyKGEuc3VibWl0''@;'; put 'put ''dGVkKSxTZSgyKSxhcihhLnN1Ym1pdFJlYXNvbiksU2UoOCksUmUoIm5nSWYiLCFhLnJlamVjdExvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixhLnJlamVjdExvYWRpbmcpLFNlKDgpLFJlKCJpZCIsYS50YWJsZUlkKX19ZnVuY3Rpb24gcVVlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUo''@;'; put 'put ''MCwiZGl2IikoMSwiY2xyLWRhdGFncmlkIiwxOCkoMiwiY2xyLWRnLWNvbHVtbiIsMTkpLFllKDMsIlNVQk1JVFRFUiIpLENlKCkseWUoNCwiY2xyLWRnLWNvbHVtbiIsMTkpLFllKDUsIkJBU0UgVEFCTEUiKSxDZSgpLHllKDYsImNsci1kZy1jb2x1bW4iLDE5KSxZZSg3LCJTVUJNSVRURUQi''@;'; put 'put ''KSxDZSgpLHllKDgsImNsci1kZy1jb2x1bW4iLDE5KSxZZSg5LCJTVUJNSVQgUkVBU09OIiksQ2UoKSx5ZSgxMCwiY2xyLWRnLWNvbHVtbiIpLFllKDExLCJBQ1RJT04iKSxDZSgpLHllKDEyLCJjbHItZGctY29sdW1uIiksWWUoMTMsIkRPV05MT0FEIiksQ2UoKSx0dCgxNCxLVWUsMjcsNywi''@;'; put 'put ''Y2xyLWRnLXJvdyIsMjApLHllKDE1LCJjbHItZGctZm9vdGVyIiwyMSkoMTYsInNwYW4iKSxZZSgxNywiaXRlbXMgcGVyIHBhZ2UiKSxDZSgpLHllKDE4LCJzZWxlY3QiLDIyKSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuaXRlbXNOdW09ZCl9''@;'; put 'put ''KSx5ZSgxOSwib3B0aW9uIiwyMyksWWUoMjAsIjMiKSxDZSgpLHllKDIxLCJvcHRpb24iLDIzKSxZZSgyMiwiNSIpLENlKCkseWUoMjMsIm9wdGlvbiIsMjMpLFllKDI0LCIxMCIpLENlKCkseWUoMjUsIm9wdGlvbiIsMjMpLFllKDI2LCIxNSIpLENlKCkoKSx5ZSgyNywiY2xyLWRnLXBhZ2lu''@;'; put 'put ''YXRpb24iLDI0LDI1KSxZZSgyOSksQ2UoKSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMjgpLGY9R2UoKTtTZSgyKSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlciIpLFNlKDIpLFJlKCJjbHJEZ0ZpZWxkIiwiYmFzZVRhYmxlIiksU2UoMiksUmUoImNsckRnRmllbGQiLCJzdWJtaXR0ZWQi''@;'; put 'put ''KSxTZSgyKSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1pdFJlYXNvbiIpLFNlKDYpLFJlKCJjbHJEZ0l0ZW1zT2YiLGYuYXBwcm92ZUxpc3QpLFNlKDQpLFJlKCJuZ01vZGVsIixmLml0ZW1zTnVtKSxTZSgxKSxSZSgibmdWYWx1ZSIsMyksU2UoMiksUmUoIm5nVmFsdWUiLDUpLFNlKDIpLFJlKCJu''@;'; put 'put ''Z1ZhbHVlIiwxMCksU2UoMiksUmUoIm5nVmFsdWUiLDE1KSxTZSgyKSxSZSgiY2xyRGdQYWdlU2l6ZSIsZi5pdGVtc051bSksU2UoMiksTzAoIiAiLGEuZmlyc3RJdGVtKzEsIiAtICIsYS5sYXN0SXRlbSsxLCIgb2YgIixhLnRvdGFsSXRlbXMsIiBhcHByb3ZhbHMgIil9fWNvbnN0IFhVZT1m''@;'; put 'put ''dW5jdGlvbihsKXtyZXR1cm57bm9Cb3JkZXI6bH19O2xldCBnY2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9Zix0aGlzLnJvdXRlPWQsdGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5jZHI9bSx0aGlz''@;'; put 'put ''LmxvYWRlZD0hMSx0aGlzLml0ZW1zTnVtPTEwfWdldFRhYmxlKGEpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrYSl9Z2V0Q2xpY2tlZChhKXt2b2lkIDAhPT10aGlzLmFwcHJvdmVMaXN0JiYodGhpcy50YWJsZUlkPXRoaXMuYXBwcm92ZUxpc3RbYV0udGFibGVJZCx0aGlz''@;'; put 'put ''LnJvdXRlLm5hdmlnYXRlQnlVcmwoImFwcHJvdmUvYXBwcm92ZURldC8iK3RoaXMuYXBwcm92ZUxpc3RbYV0udGFibGVJZCkpfXJlamVjdGluZyhhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXt2b2lkIDAhPT1mLmFwcHJvdmVMaXN0JiYoZi50YWJsZUlkPWYuYXBwcm92ZUxp''@;'; put 'put ''c3RbYV0udGFibGVJZCk7bGV0IGQ9e1NUUF9BQ1RJT046IlJFSkVDVF9UQUJMRSIsVEFCTEU6Zi50YWJsZUlkLFNUUF9SRUFTT046InF1aWNrIHJlamVjdGlvbiJ9O3RyeXsoZi5hcHByb3ZlTGlzdHx8W10pW2FdLnJlamVjdExvYWRpbmc9ITAsKHlpZWxkIGYuc2FzU3RvcmVTZXJ2aWNlLnJl''@;'; put 'put ''amVjdGluZyhkLCJCcm93c2VyUGFyYW1zIiwiYXBwcm92ZXJzL3JlamVjdGlvbiIpKS5mcm9tc2FzWzBdLlJFU1BPTlNFLmluY2x1ZGVzKCJTVUNDRVNTIikmJigoZi5hcHByb3ZlTGlzdHx8W10pW2FdLnJlamVjdExvYWRpbmc9ITEsZi5hcHByb3ZlTGlzdD8uc3BsaWNlKGEsMSksZi5yZW1h''@;'; put 'put ''aW5lZC0tLGYuY2RyLmRldGVjdENoYW5nZXMoKSl9Y2F0Y2goaCl7Zi5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhcHByb3ZlcnMvcmVqZWN0aW9uIixoKX19KSgpfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5mZXRjaEFwcHJvdmFscygp''@;'; put 'put ''fSkoKX1mZXRjaEFwcHJvdmFscygpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2EuaXRlbXNOdW09MTA7bGV0IGY9e1NUUF9BQ1RJT046Ik9QRU5fQVBQUk9WQUxTIn07dHJ5e2xldCBkPXlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLmdldEFwcHJvdmFscyhmLCJCcm93c2VyUGFy''@;'; put 'put ''YW1zIiwiYXBwcm92ZXJzL2dldGFwcHJvdmFscyIpO2EucmVtYWluZWQ9ZC5mcm9tc2FzLmxlbmd0aDtsZXQgaD1kLmZyb21zYXMubWFwKGZ1bmN0aW9uKG0pe3JldHVybnt0YWJsZUlkOm0uVEFCTEVfSUQsc3VibWl0dGVyOm0uU1VCTUlUVEVEX0JZX05NLHN1Ym1pdHRlZDptLlNVQk1JVFRF''@;'; put 'put ''RF9PTl9EVFRNLGJhc2VUYWJsZTptLkJBU0VfVEFCTEUsc3VibWl0UmVhc29uOm0uU1VCTUlUVEVEX1JFQVNPTl9UWFR9fSk7YS5hcHByb3ZlTGlzdD1oLGEubG9hZGVkPSEwfWNhdGNoKGQpe2EuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiYXBwcm92ZXJzL2dldGFwcHJvdmFs''@;'; put 'put ''cyIsZCl9fSkoKX1kb3dubG9hZChhKXtsZXQgZj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSxkPWYuc2VydmVyVXJsLGg9Zi5hcHBMb2MsbT10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVuKGQrbSsiLz9fcHJvZ3JhbT0iK2grIi9zZXJ2aWNl''@;'; put 'put ''cy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IithKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoTGQpLHJ0KFJzKSxydChMYSkscnQocGwpLHJ0KFVsKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1hcHBy''@;'; put 'put ''b3ZlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo5LHZhcnM6OCxjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsMywi''@;'; put 'put ''bmdDbGFzcyJdLFsiY2xhc3MiLCJjZW50ZXIgY2xyLWNvbC1tZC0xMiB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXdlaWdodC03MDAgY29sb3ItZGFyay1ncmF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFwcHJvdmFscy1saXN0LXdyYXBwZXIiLDQs''@;'; put 'put ''Im5nSWYiXSxbIm5nLWlmIiwibG9hZGVkIiwxLCJjbHItY29sLW1kLTEyIl0sWzQsIm5nSWYiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJjYXJkLWJsb2NrIiwibm9hcHByb3ZhbHMtaW5mby13cmFwcGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQi''@;'; put 'put ''LCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImNlbnRlciIsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtd2VpZ2h0LTcwMCIsImNvbG9yLWRhcmstZ3Jh''@;'; put 'put ''eSJdLFsxLCJhcHByb3ZhbHMtbGlzdC13cmFwcGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsxLCJkYXRhZ3JpZC1jb21wYWN0IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0''@;'; put 'put ''ZW1zT2YiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LXN0YXJ0Il0sWzMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsIm5nVmFsdWUiXSxbMSwiY2VudGVyIiwzLCJjbHJEZ1BhZ2VTaXplIl0sWyJwYWdpbmF0aW9uIiwiIl0sWyJyb2xlIiwidG9vbHRpcCIsMSwiZC1mbGV4''@;'; put 'put ''IiwianVzdGlmeS1jb250ZW50LWFyb3VuZCJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJjb2xvci1ncmVlbiIsMywiY2xpY2siXSxbInNoYXBlIiwiY2hlY2siLCJzaXplIiwiMjQiXSxbMSwidG9vbHRp''@;'; put 'put ''cC1jb250ZW50Il0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLXJlZCIsMywiY2xpY2siXSxbInNoYXBlIiwiYmFuIiwic2l6ZSIsIjIyIiw0LCJuZ0lmIl0sWzMsImNsclNtYWxsIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWJsdWUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNvZGUiLCJzaXplIiwiMjgiXSxbMSwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNl''@;'; put 'put ''bnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiaWQiLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsic2hhcGUiLCJiYW4iLCJzaXplIiwiMjIiXSxbMywiY2xyU21hbGwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApKDEsImRpdiIsMSks''@;'; put 'put ''dHQoMixqVWUsNSwwLCJkaXYiLDIpLHllKDMsImRpdiIsMyksdHQoNCx6VWUsMiwwLCJoMyIsNCksdHQoNSxVVWUsNSwxLCJwIiw1KSxDZSgpLHR0KDYsV1VlLDMsMiwiZGl2Iiw2KSx5ZSg3LCJkaXYiLDcpLHR0KDgscVVlLDMwLDE0LCJkaXYiLDgpLENlKCkoKSgpKSwyJmEmJihTZSgyKSxS''@;'; put 'put ''ZSgibmdJZiIsMD09PWYucmVtYWluZWQpLFNlKDEpLFJlKCJuZ0NsYXNzIixfaCg2LFhVZSwhZi5sb2FkZWQpKSxTZSgxKSxSZSgibmdJZiIsZi5sb2FkZWQmJjAhPT1mLnJlbWFpbmVkKSxTZSgxKSxSZSgibmdJZiIsZi5sb2FkZWQmJjAhPT1mLnJlbWFpbmVkKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''IWYubG9hZGVkKSxTZSgyKSxSZSgibmdJZiIsZi5hcHByb3ZlTGlzdCYmMCE9PWYucmVtYWluZWQpKX0sZGVwZW5kZW5jaWVzOlt5dSwkaSxTMSxNMSxMMCxXYSx6YSxTNyx3NCxKZyxoSSxfNyxwSSxRZyxlNSx0NSxrNyxuNSx2NyxiNCxiNyxSbCxSaF0sc3R5bGVzOlsiLmNvbHVtbi1jZW50''@;'; put 'put ''ZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhZ3JpZC1jb2x1bW5bX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgLmRhdGFncmlkLWNvbHVtbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpub25lIWltcG9ydGFudH0ubGlua3NbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzMxNDM1MSFpbXBvcnRhbnR9LnRv''@;'; put 'put ''b2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmUsIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgIzMxNDM1MTtib3JkZXItYm90dG9tOi4yMDgzM3JlbSBzb2xpZCAjMzE0MzUxfS5ub0JvcmRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50''@;'; put 'put ''fS5hcHByb3ZhbHMtbGlzdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzB2aDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5ub2FwcHJvdmFscy1pbmZvLXdyYXBwZXJbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmNhbGMoMTAwdmggLSAyMDBweCl9Il19KSxsfSkoKTtmdW5jdGlvbiBKVWUobCxjKXtpZigxJmwmJih5ZSgwLCJ0ZCIs''@;'; put 'put ''MTkpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdCxmPUdlKCk7UmUoInJvdXRlckxpbmsiLCIvc3RhZ2UvIitmLmpzUGFyYW1zW2FdKSxTZSgxKSx3cigiICIsZi5qc1BhcmFtc1thXSwiICIpfX1mdW5jdGlvbiBRVWUobCxjKXtpZigxJmwmJih5ZSgwLCJ0ZCIsNCks''@;'; put 'put ''WWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0LGY9R2UoKTtTZSgxKSx3cigiICIsZi5qc1BhcmFtc1thXSwiICIpfX1mdW5jdGlvbiBlWmUobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiw0KSxZZSgyKSxDZSgpLHR0KDMsSlVlLDIsMiwidGQiLDE3KSx0dCg0''@;'; put 'put ''LFFVZSwyLDEsInRkIiwxOCksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDIpLGFyKGEpLFNlKDEpLFJlKCJuZ0lmIixhLmluY2x1ZGVzKCJUQUJMRV9JRCIpKSxTZSgxKSxSZSgibmdJZiIsIWEuaW5jbHVkZXMoIlRBQkxFX0lEIikpfX1mdW5jdGlvbiB0WmUobCxjKXtpZigx''@;'; put 'put ''JmwmJih5ZSgwLCJ0ciIpKDEsInRkIiw0KSxZZSgyKSxDZSgpLHllKDMsInRkIiw0KSxZZSg0KSxDZSgpKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDMpO1NlKDIpLGFyKGEpLFNlKDIpLGFyKGYuc3VibWl0RGV0YWlsc1thXSl9fWZ1bmN0aW9uIG5aZShsLGMpe2lmKDEmbCYm''@;'; put 'put ''KHllKDAsImNsci10YWItY29udGVudCIpKDEsImRpdiIsMjIpKDIsInRhYmxlIiwzKSgzLCJ0aGVhZCIpKDQsInRyIikoNSwidGgiLDQpLFllKDYsIk5hbWUiKSxDZSgpLHllKDcsInRoIiw0KSxZZSg4LCJWYWx1ZSIpLENlKCkoKSgpLHllKDksInRib2R5IiksdHQoMTAsdFplLDUsMiwidHIi''@;'; put 'put ''LDUpLENlKCkoKSgpKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxMCksUmUoIm5nRm9yT2YiLGEuc3VibWl0QXJyKX19ZnVuY3Rpb24gclplKGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiKSgxLCJ0ZCIsNCksWWUoMiksQ2UoKSx5ZSgzLCJ0ZCIsNCksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0''@;'; put 'put ''IGE9Yy4kaW1wbGljaXQsZj1HZSgyKTtTZSgyKSxhcihhKSxTZSgyKSxhcihmLmpzUGFyYW1zW2FdKX19ZnVuY3Rpb24gaVplKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRhYnMiKSgxLCJjbHItdGFiIikoMiwiYnV0dG9uIiwyMCksWWUoMywiU3VibWl0dGVkIFRhYmxlIERldGFpbHMiKSxD''@;'; put 'put ''ZSgpLHR0KDQsblplLDExLDEsImNsci10YWItY29udGVudCIsMjEpLENlKCkseWUoNSwiY2xyLXRhYiIpKDYsImJ1dHRvbiIsMjApLFllKDcsIkJhc2UgVGFibGUgRGV0YWlscyIpLENlKCkseWUoOCwiY2xyLXRhYi1jb250ZW50IikoOSwiZGl2IiwyMikoMTAsInRhYmxlIiwzKSgxMSwidGhl''@;'; put 'put ''YWQiKSgxMiwidHIiKSgxMywidGgiLDQpLFllKDE0LCJOYW1lIiksQ2UoKSx5ZSgxNSwidGgiLDQpLFllKDE2LCJWYWx1ZSIpLENlKCkoKSgpLHllKDE3LCJ0Ym9keSIpLHR0KDE4LHJaZSw1LDIsInRyIiw1KSxDZSgpKCkoKSgpKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoNCksUmUoImNs''@;'; put 'put ''cklmQWN0aXZlIiwhMCksU2UoMTQpLFJlKCJuZ0Zvck9mIixhLmtleXNBcnJheSl9fWZ1bmN0aW9uIG9aZShsLGMpezEmbCYmKHllKDAsInAiLDc0KSxZZSgxLCIgVGhlcmUgYXJlIG5vIGRldGFpbHMgdG8gc2hvdyAiKSxDZSgpKX1mdW5jdGlvbiBhWmUobCxjKXtpZigxJmwmJihXcigwKSx5''@;'; put 'put ''ZSgxLCJkaXYiLDc1KSgyLCJzcGFuIiksWWUoMywiVGFibGUgSWQ6IiksQ2UoKSx5ZSg0LCJzdHJvbmciLDc2KSxZZSg1KSxDZSgpKCkseWUoNiwiZGl2IikoNywic3BhbiIpLFllKDgsIlN1Ym1pdHRlcjoiKSxDZSgpLHllKDksInNwYW4iLDc3KSxZZSgxMCksQ2UoKSgpLHllKDExLCJkaXYi''@;'; put 'put ''KSgxMiwic3BhbiIpLFllKDEzLCJTdWJtaXR0ZWQgb246IiksQ2UoKSx5ZSgxNCwic3BhbiIsNzcpLFllKDE1KSxDZSgpKCkseWUoMTYsImRpdiIpKDE3LCJzcGFuIiksWWUoMTgsIlN1Ym1pdHRlZCBSZWFzb246IiksQ2UoKSx5ZSgxOSwic3BhbiIsNzcpLFllKDIwKSxDZSgpKCksR3IoKSks''@;'; put 'put ''MiZsKXtjb25zdCBhPUdlKDUpO1NlKDQpLFJlKCJyb3V0ZXJMaW5rIiwiL3N0YWdlLyIrKG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuVEFCTEVfSUQpKSxTZSgxKSx3cigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5UQUJMRV9J''@;'; put 'put ''RCwiICIpLFNlKDUpLHdyKCIgIixudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9CWV9OTSwiICIpLFNlKDUpLHdyKCIgIixudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9PTl9EVFRNLCIgIiksU2UoNSks''@;'; put 'put ''d3IoIiAiLG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuU1VCTUlUVEVEX1JFQVNPTl9UWFQsIiAiKX19ZnVuY3Rpb24gbFplKGwsYyl7MSZsJiYoeWUoMCwic3BhbiIsNzgpLHRuKDEsImNsci1pY29uIiw3OSksWWUoMiwiIE9ubHkgdGhlIGZpcnN0IDEwMCBpbnNl''@;'; put 'put ''cnRzLCB1cGRhdGVzIG9yIGRlbGV0ZXMgYXJlIGRpc3BsYXllZCAiKSxDZSgpKX1mdW5jdGlvbiBzWmUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDQ5KSgxLCJkaXYiLDUwKSgyLCJkaXYiLDUxKSx0dCgzLG9aZSwyLDAsInAiLDQ1KSx0dCg0LGFaZSwyMSw1LCJuZy1j''@;'; put 'put ''b250YWluZXIiLDgpLENlKCkseWUoNSwiZGl2Iiw1MikoNiwiZGl2Iiw1MykoNywiZGl2Iiw1NCkoOCwiZGl2Iiw1NSkoOSwiYnV0dG9uIiw1NiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoNCk7cmV0dXJuIFp0KGQuZ29Ub0Jhc2UobnVsbD09ZC5qc1BhcmFtcz9u''@;'; put 'put ''dWxsOmQuanNQYXJhbXMuVEFCTEVfTk0pKX0pLFllKDEwLCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksQ2UoKSx5ZSgxMSwiYnV0dG9uIiw1NyksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoNCk7cmV0dXJuIFp0KGQuZ2V0VGFibGUoZC50YWJsZUlkKSl9KSxZ''@;'; put 'put ''ZSgxMiwiIEdvIHRvIGVkaXRlZCBzY3JlZW4gIiksQ2UoKSx5ZSgxMywiYnV0dG9uIiw1OCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoNCk7cmV0dXJuIFp0KGQuZ29CYWNrKG51bGw9PWQuanNQYXJhbXM/bnVsbDpkLmpzUGFyYW1zLlRBQkxFX05NKSl9KSxZZSgx''@;'; put 'put ''NCwiIEdvIGJhY2sgdG8gZWRpdG9yICIpLENlKCkoKSgpKCkseWUoMTUsImRpdiIsNTkpKDE2LCJidXR0b24iLDYwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLmFwcHJvdmVUYWJsZSgpKX0pLFllKDE3LCIgQUNDRVBUICIpLENlKCkseWUoMTgsImJ1dHRv''@;'; put 'put ''biIsNjEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoNCkucmVqZWN0T3Blbj0hMCl9KSxZZSgxOSwiIFJFSkVDVCAiKSxDZSgpLHllKDIwLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsNjIpKDIxLCJjbHItdG9nZ2xlLXdyYXBwZXIiKSgyMiwiaW5wdXQiLDYzKSxF''@;'; put 'put ''dCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLmZvcm1hdHRlZFZhbHVlcz1kKX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLmZvcm1hdHRpbmdDaGFuZ2VkKCkpfSksQ2UoKSx5ZSgyMywibGFiZWwiLDY0KSxZZSgy''@;'; put 'put ''NCksQ2UoKSgpKCkoKSx5ZSgyNSwiZGl2Iiw2NSksdHQoMjYsbFplLDMsMCwic3BhbiIsNjYpLHllKDI3LCJkaXYiLDMxKSgyOCwiZGl2Iiw2NykoMjksInNwYW4iLDY4KSxZZSgzMCwiIENoYW5nZWQgUm93cyAiKSx5ZSgzMSwic3BhbiIsNjkpLFllKDMyKSxDZSgpKCkseWUoMzMsInNwYW4i''@;'; put 'put ''LDcwKSxZZSgzNCwiIEFkZGVkIFJvd3MgIikseWUoMzUsInNwYW4iLDcxKSxZZSgzNiksQ2UoKSgpLHllKDM3LCJzcGFuIiw3MiksWWUoMzgsIiBEZWxldGVkIFJvd3MgIikseWUoMzksInNwYW4iLDczKSxZZSg0MCksQ2UoKSgpKCkoKSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSg0KTtT''@;'; put 'put ''ZSgzKSxSZSgibmdJZiIsIWEudGFibGVEZXRhaWxzKSxTZSgxKSxSZSgibmdJZiIsYS50YWJsZURldGFpbHMpLFNlKDEyKSxSZSgiY2xyTG9hZGluZyIsYS5hY2NlcHRMb2FkaW5nKSgiZGlzYWJsZWQiLCFhLmxvYWRpbmdUYWJsZXx8Ik5PIj09PShudWxsPT1hLnBhcmFtcz9udWxsOmEucGFy''@;'; put 'put ''YW1zLklTQVBQUk9WRVIpfHxhLm5vQ2hhbmdlcyksU2UoMiksUmUoImRpc2FibGVkIiwhYS5sb2FkaW5nVGFibGV8fCJOTyI9PT0obnVsbD09YS5wYXJhbXM/bnVsbDphLnBhcmFtcy5JU0FQUFJPVkVSKXx8YS5ub0NoYW5nZXMpLFNlKDQpLFJlKCJuZ01vZGVsIixhLmZvcm1hdHRlZFZhbHVl''@;'; put 'put ''cyksU2UoMiksYXIoYS5mb3JtYXR0ZWRWYWx1ZXM/IkZvcm1hdHRlZCI6IlVuZm9ybWF0dGVkIiksU2UoMiksUmUoIm5nSWYiLGEuZGlmZnNMaW1pdCksU2UoNiksYXIoYS5sZW5zLnVwZGF0ZWQpLFNlKDQpLGFyKGEubGVucy5uZXcpLFNlKDQpLGFyKGEubGVucy5kZWxldGVkKX19ZnVuY3Rp''@;'; put 'put ''b24gdVplKGwsYyl7MSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyLCJMb2FkaW5nIHRhYmxlIiksQ2UoKSgpKX1mdW5jdGlvbiBjWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDgwKSgxLCJzcGFuIiw4MSksWWUoMiwiIExvYWRpbmcuLi4gIiksQ2UoKSx0dCgzLHVaZSwzLDAsImRp''@;'; put 'put ''diIsOCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDQpO1NlKDMpLFJlKCJuZ0lmIiwhYS5sb2FkaW5nVGFibGUpfX1mdW5jdGlvbiBmWmUobCxjKXsxJmwmJih5ZSgwLCJwIiw3NCksWWUoMSwiIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHNob3cgIiksQ2UoKSl9ZnVuY3Rpb24gZFplKGwsYyl7''@;'; put 'put ''aWYoMSZsJiYoeWUoMCwidGgiLDQpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxhcihhKX19ZnVuY3Rpb24gaFplKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIsODYpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLmluZGV4LGY9R2UoMikuaW5kZXgs''@;'; put 'put ''ZD1HZSg0KTtTZSgxKSx3cigiT3JpZ2luYWwgdmFsdWUgaXM6ICIsZC5hcnJPZkNoYW5nZXNbZl1bYV0sIiIpfX1jb25zdCB2Y2U9ZnVuY3Rpb24obCl7cmV0dXJueyJjaCB0b29sdGlwIHRvb2x0aXAtbWQgdG9vbHRpcC10b3AtcmlnaHQiOmx9fTtmdW5jdGlvbiBwWmUobCxjKXtpZigxJmwm''@;'; put 'put ''Jih5ZSgwLCJ0ZCIsODQpLFllKDEpLHR0KDIsaFplLDIsMSwic3BhbiIsODUpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPWMuaW5kZXgsZD1HZSgyKS5pbmRleCxoPUdlKDQpO1JlKCJuZ0NsYXNzIixfaCgzLHZjZSwxPT1oLmFyckNoYW5nZWRbZF1bZl0mJiJ1cGRhdGVkIj09''@;'; put 'put ''aC5jaEFycltkXSkpLFNlKDEpLHdyKCIgIixoLmRpZmZUYWJsZS5kYXRhW2RdW2FdLCIgIiksU2UoMSksUmUoIm5nSWYiLDE9PWguYXJyQ2hhbmdlZFtkXVtmXSYmInVwZGF0ZWQiPT1oLmNoQXJyW2RdKX19ZnVuY3Rpb24gbVplKGwsYyl7aWYoMSZsJiYoV3IoMCksdHQoMSxwWmUsMyw1LCJ0''@;'; put 'put ''ZCIsODMpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgpLmluZGV4LGY9R2UoNCk7U2UoMSksUmUoIm5nRm9yT2YiLGYucm93S2V5c1thXSl9fWZ1bmN0aW9uIGdaZShsLGMpe2lmKDEmbCYmKHllKDAsInRkIiw0KSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSgyKS5p''@;'; put 'put ''bmRleCxkPUdlKDQpO1NlKDEpLHdyKCIgIixkLmRpZmZUYWJsZS5kYXRhW2ZdW2FdLCIgIil9fWZ1bmN0aW9uIHZaZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsZ1plLDIsMSwidGQiLDQ3KSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKS5pbmRleCxmPUdlKDQpO1NlKDEpLFJlKCJuZ0Zvck9m''@;'; put 'put ''IixmLnJvd0tleXNbYV0pfX1jb25zdCB5Y2U9ZnVuY3Rpb24obCxjLGEpe3JldHVybnthZGRlZFJvdzpsLGRlbGV0ZWRSb3c6Yyx1cGRhdGVkUm93OmF9fTtmdW5jdGlvbiB5WmUobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIsODIpLHR0KDEsbVplLDIsMSwibmctY29udGFpbmVyIiw4KSx0dCgy''@;'; put 'put ''LHZaZSwyLDEsIm5nLWNvbnRhaW5lciIsOCksQ2UoKSksMiZsKXtjb25zdCBhPWMuaW5kZXgsZj1HZSg0KTtSZSgibmdDbGFzcyIsbkMoMyx5Y2UsImFkZGVkIj09Zi5jaEFyclthXSwiZGVsZXRlZCI9PWYuY2hBcnJbYV0sInVwZGF0ZWQiPT1mLmNoQXJyW2FdKSksU2UoMSksUmUoIm5nSWYi''@;'; put 'put ''LCJ1cGRhdGVkIj09PWYuY2hBcnJbYV0pLFNlKDEpLFJlKCJuZ0lmIiwidXBkYXRlZCIhPT1mLmNoQXJyW2FdKX19ZnVuY3Rpb24gYlplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwyOSkoMSwiZGl2IiwzMCkoMiwiZGl2IiwzMSkoMywiZGl2IiwzMikoNCwic3BhbiIs''@;'; put 'put ''MzMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMykuZ29Ub0FwcHJvdmFsc0xpc3QoKSl9KSx0big1LCJjbHItaWNvbiIsMzQpLFllKDYsIkJhY2sgdG8gYXBwcm92YWxzIGxpc3QgIiksQ2UoKSgpLHllKDcsImRpdiIsMzUpKDgsImgzIiwzNiksWWUoOSksQ2Uo''@;'; put 'put ''KSgpLHllKDEwLCJkaXYiLDM3KSgxMSwiYSIsMzgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMykuZ2V0RGV0YWlscygpKX0pLHRuKDEyLCJjbHItaWNvbiIsMzkpLENlKCkoKSgpLHllKDEzLCJwIiw0MCksWWUoMTQpLENlKCkoKSx5ZSgxNSwiZGl2Iiw0MSks''@;'; put 'put ''dHQoMTYsc1plLDQxLDExLCJkaXYiLDQyKSxDZSgpLHR0KDE3LGNaZSw0LDEsImRpdiIsNDMpLHllKDE4LCJkaXYiLDQ0KSx0dCgxOSxmWmUsMiwwLCJwIiw0NSkseWUoMjAsInRhYmxlIiwzKSgyMSwidGhlYWQiKSgyMiwidHIiLDQ2KSx0dCgyMyxkWmUsMiwxLCJ0aCIsNDcpLENlKCkoKSx5''@;'; put 'put ''ZSgyNCwidGJvZHkiKSx0dCgyNSx5WmUsMyw3LCJ0ciIsNDgpLENlKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDMpO1NlKDkpLHdyKCIgIixudWxsPT1hLmpzUGFyYW1zP251bGw6YS5qc1BhcmFtcy5UQUJMRV9OTSwiICIpLFNlKDUpLHdyKCIgIixudWxsPT1hLmpzUGFyYW1zP251bGw6''@;'; put 'put ''YS5qc1BhcmFtcy5UQUJMRV9ERVNDLCIgIiksU2UoMiksUmUoIm5nSWYiLGEubG9hZGVkKSxTZSgxKSxSZSgibmdJZiIsIWEubG9hZGluZ1RhYmxlKSxTZSgyKSxSZSgibmdJZiIsYS5sb2FkaW5nVGFibGUmJmEubm9DaGFuZ2VzKSxTZSg0KSxSZSgibmdGb3JPZiIsYS5yb3dIZWFkZXIpLFNl''@;'; put 'put ''KDIpLFJlKCJuZ0Zvck9mIixhLnJvd0tleXMpfX1mdW5jdGlvbiBfWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDI3KSx0dCgxLGJaZSwyNiw3LCJkaXYiLDI4KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLGEubG9hZGVkKX19ZnVuY3Rpb24gd1plKGwsYyl7''@;'; put 'put ''MSZsJiYoeWUoMCwic3BhbiIsODEpLFllKDEsIiBMb2FkaW5nLi4uICIpLENlKCkpfWZ1bmN0aW9uIENaZShsLGMpezEmbCYmKHllKDAsImRpdiIpKDEsImgzIiksWWUoMiwiTG9hZGluZyBwcmV2aWV3IiksQ2UoKSgpKX1mdW5jdGlvbiBTWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDg3''@;'; put 'put ''KSx0dCgxLHdaZSwyLDAsInNwYW4iLDg4KSx0dCgyLENaZSwzLDAsImRpdiIsOCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpLFNlKDEpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiBNWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYi''@;'; put 'put ''LDIzKSx0dCgxLF9aZSwyLDEsImRpdiIsMjQpLHllKDIsImRpdiIsMjUpLHR0KDMsU1plLDMsMiwiZGl2IiwyNiksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgibmdJZiIsYS5sb2FkZWQpLFNlKDIpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiBrWmUobCxjKXsx''@;'; put 'put ''JmwmJih5ZSgwLCJzcGFuIiw3OCksdG4oMSwiY2xyLWljb24iLDc5KSxZZSgyLCIgT25seSB0aGUgZmlyc3QgMTAwIGluc2VydHMsIHVwZGF0ZXMgb3IgZGVsZXRlcyBhcmUgZGlzcGxheWVkICIpLENlKCkpfWZ1bmN0aW9uIEVaZShsLGMpezEmbCYmdG4oMCwiZGl2Iiw0OSl9ZnVuY3Rpb24g''@;'; put 'put ''eFplKGwsYyl7MSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyLCJMb2FkaW5nIHRhYmxlIiksQ2UoKSgpKX1mdW5jdGlvbiBBWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDEwMykoMSwic3BhbiIsODEpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCksdHQoMyx4WmUsMywwLCJkaXYi''@;'; put 'put ''LDgpLENlKCkpLDImbCl7Y29uc3QgYT1HZSg0KTtTZSgzKSxSZSgibmdJZiIsIWEubG9hZGluZ1RhYmxlKX19ZnVuY3Rpb24gVFplKGwsYyl7aWYoMSZsJiYoeWUoMCwidGgiLDQpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxhcihhKX19ZnVuY3Rpb24gT1pl''@;'; put 'put ''KGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIsODYpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLmluZGV4LGY9R2UoMikuaW5kZXgsZD1HZSg0KTtTZSgxKSx3cigiT3JpZ2luYWwgdmFsdWUgaXM6ICIsZC5hcnJPZkNoYW5nZXNbZl1bYV0sIiIpfX1mdW5jdGlvbiBEWmUobCxjKXtp''@;'; put 'put ''ZigxJmwmJih5ZSgwLCJ0ZCIsODQpLFllKDEpLHR0KDIsT1plLDIsMSwic3BhbiIsODUpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPWMuaW5kZXgsZD1HZSgyKS5pbmRleCxoPUdlKDQpO1JlKCJuZ0NsYXNzIixfaCgzLHZjZSwxPT1oLmFyckNoYW5nZWRbZF1bZl0mJiJ1cGRh''@;'; put 'put ''dGVkIj09aC5jaEFycltkXSkpLFNlKDEpLHdyKCIgIixoLmRpZmZUYWJsZS5kYXRhW2RdW2FdLCIgIiksU2UoMSksUmUoIm5nSWYiLDE9PWguYXJyQ2hhbmdlZFtkXVtmXSYmInVwZGF0ZWQiPT1oLmNoQXJyW2RdKX19ZnVuY3Rpb24gSVplKGwsYyl7aWYoMSZsJiYoV3IoMCksdHQoMSxEWmUs''@;'; put 'put ''Myw1LCJ0ZCIsODMpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgpLmluZGV4LGY9R2UoNCk7U2UoMSksUmUoIm5nRm9yT2YiLGYucm93S2V5c1thXSl9fWZ1bmN0aW9uIFJaZShsLGMpe2lmKDEmbCYmKHllKDAsInRkIiw0KSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1H''@;'; put 'put ''ZSgyKS5pbmRleCxkPUdlKDQpO1NlKDEpLHdyKCIgIixkLmRpZmZUYWJsZS5kYXRhW2ZdW2FdLCIgIil9fWZ1bmN0aW9uIExaZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsUlplLDIsMSwidGQiLDQ3KSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKS5pbmRleCxmPUdlKDQpO1NlKDEpLFJlKCJu''@;'; put 'put ''Z0Zvck9mIixmLnJvd0tleXNbYV0pfX1mdW5jdGlvbiBQWmUobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIsODIpLHR0KDEsSVplLDIsMSwibmctY29udGFpbmVyIiw4KSx0dCgyLExaZSwyLDEsIm5nLWNvbnRhaW5lciIsOCksQ2UoKSksMiZsKXtjb25zdCBhPWMuaW5kZXgsZj1HZSg0KTtSZSgi''@;'; put 'put ''bmdDbGFzcyIsbkMoMyx5Y2UsImFkZGVkIj09Zi5jaEFyclthXSwiZGVsZXRlZCI9PWYuY2hBcnJbYV0sInVwZGF0ZWQiPT1mLmNoQXJyW2FdKSksU2UoMSksUmUoIm5nSWYiLCJ1cGRhdGVkIj09PWYuY2hBcnJbYV0pLFNlKDEpLFJlKCJuZ0lmIiwidXBkYXRlZCIhPT1mLmNoQXJyW2FdKX19''@;'; put 'put ''ZnVuY3Rpb24gRlplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw5MykoMSwiZGl2Iiw5NCkoMiwiZGl2IiwzMSkoMywiZGl2IiwzMikoNCwic3BhbiIsOTUpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMykuZ29Ub1N1Ym1pdExpc3QoKSl9''@;'; put 'put ''KSx0big1LCJjbHItaWNvbiIsMzQpLFllKDYsIkJhY2sgdG8gc3VibWl0dGVkIGxpc3QgIiksQ2UoKSgpLHllKDcsImRpdiIsOTYpKDgsImgzIiw5NyksWWUoOSksQ2UoKSgpLHllKDEwLCJkaXYiLDM3KSgxMSwiYSIsMzgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQo''@;'; put 'put ''R2UoMykudGFibGVGbGFnPSEwKX0pLHRuKDEyLCJjbHItaWNvbiIsMzkpLENlKCkoKSgpLHllKDEzLCJwIiw5OCksWWUoMTQpLENlKCkoKSx5ZSgxNSwiZGl2Iiw1MCkoMTYsImRpdiIsNTEpKDE3LCJkaXYiLDc1KSgxOCwic3BhbiIpLFllKDE5LCJUYWJsZSBJZDoiKSxDZSgpLHllKDIwLCJz''@;'; put 'put ''dHJvbmciLDc2KSgyMSwic3BhbiIpLFllKDIyKSxDZSgpKCkoKSx5ZSgyMywiZGl2IikoMjQsInNwYW4iKSxZZSgyNSwiU3VibWl0dGVkIG9uOiIpLENlKCkseWUoMjYsInNwYW4iLDc3KSxZZSgyNyksQ2UoKSgpLHllKDI4LCJkaXYiKSgyOSwic3BhbiIpLFllKDMwLCJTdWJtaXQgTWVzc2Fn''@;'; put 'put ''ZToiKSxDZSgpLHllKDMxLCJzcGFuIiksWWUoMzIpLENlKCkoKSgpLHllKDMzLCJkaXYiLDUyKSgzNCwiZGl2Iiw1MykoMzUsImRpdiIsNTQpKDM2LCJkaXYiLDU1KSgzNywiYnV0dG9uIiw1NiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMyk7cmV0dXJuIFp0KGQu''@;'; put 'put ''Z29Ub0Jhc2UoZC5zdWJPYmouYmFzZSkpfSksWWUoMzgsIiBHbyB0byBiYXNlIHRhYmxlIHNjcmVlbiAiKSxDZSgpLHllKDM5LCJidXR0b24iLDU3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgzKTtyZXR1cm4gWnQoZC5nZXRUYWJsZShkLnN1Yk9iai50YWJsZUlk''@;'; put 'put ''KSl9KSxZZSg0MCwiIEdvIHRvIGVkaXRlZCBzY3JlZW4gIiksQ2UoKSx5ZSg0MSwiYnV0dG9uIiw1OCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMyk7cmV0dXJuIFp0KGQuZ29CYWNrKGQuc3ViT2JqLmJhc2UpKX0pLFllKDQyLCIgR28gYmFjayB0byBlZGl0b3Ig''@;'; put 'put ''IiksQ2UoKSgpKCkoKSx5ZSg0MywiZGl2Iiw2NSksdHQoNDQsa1plLDMsMCwic3BhbiIsNjYpLHllKDQ1LCJkaXYiLDMxKSg0NiwiZGl2Iiw2NykoNDcsInNwYW4iLDY4KSxZZSg0OCwiIENoYW5nZWQgUm93cyAiKSx5ZSg0OSwic3BhbiIsNjkpLFllKDUwKSxDZSgpKCkseWUoNTEsInNwYW4i''@;'; put 'put ''LDcwKSxZZSg1MiwiIEFkZGVkIFJvd3MgIikseWUoNTMsInNwYW4iLDcxKSxZZSg1NCksQ2UoKSgpLHllKDU1LCJzcGFuIiw3MiksWWUoNTYsIiBEZWxldGVkIFJvd3MgIikseWUoNTcsInNwYW4iLDczKSxZZSg1OCksQ2UoKSgpKCkoKSgpLHllKDU5LCJkaXYiLDUzKSg2MCwiY2xyLXRvZ2ds''@;'; put 'put ''ZS1jb250YWluZXIiLDk5KSg2MSwiY2xyLXRvZ2dsZS13cmFwcGVyIikoNjIsImlucHV0Iiw2MyksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgzKS5mb3JtYXR0ZWRWYWx1ZXM9ZCl9KSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxa''@;'; put 'put ''dChHZSgzKS5mb3JtYXR0aW5nQ2hhbmdlZCgpKX0pLENlKCkseWUoNjMsImxhYmVsIiksWWUoNjQpLENlKCkoKSgpKCkoKSgpLHllKDY1LCJkaXYiLDEwMCksdHQoNjYsRVplLDEsMCwiZGl2Iiw0MiksQ2UoKSx0dCg2NyxBWmUsNCwxLCJkaXYiLDEwMSkseWUoNjgsImRpdiIsMTAyKSg2OSwi''@;'; put 'put ''dGFibGUiLDMpKDcwLCJ0aGVhZCIpKDcxLCJ0ciIsNDYpLHR0KDcyLFRaZSwyLDEsInRoIiw0NyksQ2UoKSgpLHllKDczLCJ0Ym9keSIpLHR0KDc0LFBaZSwzLDcsInRyIiw0OCksQ2UoKSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoMyk7U2UoOSksd3IoIiAiLGEuc3ViT2JqLmJhc2UsIiAi''@;'; put 'put ''KSxTZSg1KSx3cigiICIsYS50YWJsZURlc2NyaXB0aW9uLCIgIiksU2UoNiksUmUoInJvdXRlckxpbmsiLCIvc3RhZ2UvIithLnN1Yk9iai50YWJsZUlkKSxTZSgyKSx3cigiICIsYS5zdWJPYmoudGFibGVJZCwiIiksU2UoNSksd3IoIiAiLGEuc3ViT2JqLnN1Ym1pdHRlZCwiICIpLFNlKDUp''@;'; put 'put ''LHdyKCIgIixhLnN1Yk9iai5zdWJtaXRSZWFzb24sIiAiKSxTZSgxMiksUmUoIm5nSWYiLGEuZGlmZnNMaW1pdCksU2UoNiksYXIoYS5sZW5zLnVwZGF0ZWQpLFNlKDQpLGFyKGEubGVucy5uZXcpLFNlKDQpLGFyKGEubGVucy5kZWxldGVkKSxTZSg0KSxSZSgibmdNb2RlbCIsYS5mb3JtYXR0''@;'; put 'put ''ZWRWYWx1ZXMpLFNlKDIpLGFyKGEuZm9ybWF0dGVkVmFsdWVzPyJGb3JtYXR0ZWQiOiJVbmZvcm1hdHRlZCIpLFNlKDIpLFJlKCJuZ0lmIixhLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLCFhLmxvYWRpbmdUYWJsZSksU2UoNSksUmUoIm5nRm9yT2YiLGEucm93SGVhZGVyKSxTZSgyKSxSZSgi''@;'; put 'put ''bmdGb3JPZiIsYS5yb3dLZXlzKX19ZnVuY3Rpb24gSFplKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw5MSksdHQoMSxGWmUsNzUsMTYsImRpdiIsOTIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSxSZSgibmdJZiIsYS5sb2FkZWQpfX1mdW5jdGlvbiBOWmUobCxjKXsxJmwmJih5''@;'; put 'put ''ZSgwLCJkaXYiKSgxLCJoMyIpLFllKDIsIkxvYWRpbmcgc3VibWl0dGVkIHRhYmxlIiksQ2UoKSgpKX1mdW5jdGlvbiBWWmUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDEwNCkoMSwiZGl2IiwxMDUpKDIsInNwYW4iLDgxKSxZZSgzLCIgTG9hZGluZy4uLiAiKSxDZSgpLHR0KDQsTlplLDMs''@;'; put 'put ''MCwiZGl2Iiw4KSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSg0KSxSZSgibmdJZiIsIWEubG9hZGVkKX19ZnVuY3Rpb24gQlplKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiksdHQoMSxIWmUsMiwxLCJkaXYiLDg5KSx0dCgyLFZaZSw1LDEsImRpdiIsOTApLENlKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0lmIixhLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCl9fWNvbnN0IGpaZT1mdW5jdGlvbigpe3JldHVybntzdGFuZGFsb25lOiEwfX07bGV0IGJjZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuc2FzU3RvcmVT''@;'; put 'put ''ZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9Zix0aGlzLnJvdXRlcj1kLHRoaXMucm91dGU9aCx0aGlzLmRldGFpbHNPcGVuPSExLHRoaXMucmVqZWN0T3Blbj0hMSx0aGlzLmxlbnM9e25ldzowLHVwZGF0ZWQ6MCxkZWxldGVkOjB9LHRoaXMubG9hZGVkPSExLHRoaXMubG9hZGluZ1RhYmxl''@;'; put 'put ''PSExLHRoaXMuc3VibWl0UmVhc29uPSIiLHRoaXMuaW5zdGFuY2U9ImhvdEluc3RhbmNlIix0aGlzLmFjY2VwdExvYWRpbmc9ITEsdGhpcy5yZWplY3RMb2FkaW5nPSExLHRoaXMuc3VibWl0dGVkPSExLHRoaXMudGFibGVGbGFnPSExLHRoaXMucm93S2V5cz1bXSx0aGlzLmNoQXJyPVtdLHRo''@;'; put 'put ''aXMuc2Vjb25kT3Blbj0hMSx0aGlzLmZvcm1hdHRlZFZhbHVlcz0hMCx0aGlzLmNoYW5nZXNBcnI9W10sdGhpcy5kaWZmVGFibGU9e2RhdGE6W119LHRoaXMuZGlmZnNMaW1pdD0hMSx0aGlzLnJlY29yZHNMaW1pdD0xMDB9Z2V0IG5vQ2hhbmdlcygpe3JldHVybiAwPT09dGhpcy5sZW5zLm5l''@;'; put 'put ''dyYmMD09PXRoaXMubGVucy51cGRhdGVkJiYwPT09dGhpcy5sZW5zLmRlbGV0ZWR9Z29Ub0Jhc2UoYSl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrYSl9Z29Ub0FwcHJvdmFsc0xpc3QoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlIil9Z2V0VGFi''@;'; put 'put ''bGUoYSl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIithKX1nb0JhY2soYSl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIrYSl9Z29Ub1ZpZXdlcigpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXNob3dEZXRhaWxzU2VsZWN0KGEp''@;'; put 'put ''e2EucHJldmVudERlZmF1bHQoKSx0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9Z2V0RGV0YWlscygpe3RoaXMuZGV0YWlsc09wZW49ITB9b25Ib3RTZWxlY3Rpb24oYSl7dGhpcy5ob3RTZWxlY3Rpb249YS5zbGljZSgwLDQpfW9uSG90RGVzZWxlY3QoKXtzZXRUaW1lb3V0KCgpPT57''@;'; put 'put ''dGhpcy5ob3RTZWxlY3Rpb249bnVsbH0sMTAwKX1yZWplY3RpbmcoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXthLnJlamVjdExvYWRpbmc9ITAsYS5zdWJtaXRSZWFzb249YS5zdWJtaXRSZWFzb24ucmVwbGFjZSgvXG4vZywiLiAiKTtsZXQgZj17U1RQX0FDVElPTjoiUkVK''@;'; put 'put ''RUNUX1RBQkxFIixUQUJMRTphLnRhYmxlSWQsU1RQX1JFQVNPTjphLnN1Ym1pdFJlYXNvbn07eWllbGQgYS5zYXNTdG9yZVNlcnZpY2UucmVqZWN0aW5nKGYsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvcmVqZWN0aW9uIikudGhlbihkPT57YS5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvaGlz''@;'; put 'put ''dG9yeSIpfSkuY2F0Y2goZD0+e2EuYWNjZXB0TG9hZGluZz0hMSxhLnJlamVjdExvYWRpbmc9ITF9KX0pKCl9YXBwcm92ZVRhYmxlKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5hY2NlcHRMb2FkaW5nPSEwO2xldCBmPXtBQ1RJT046IkFQUFJPVkVfVEFCTEUiLFRBQkxF''@;'; put 'put ''OmEudGFibGVJZCxESUZGVElNRTphLnBhcmFtcz8uRElGRlRJTUUsTElCRFM6YS5wYXJhbXM/LkxJQkRTfTt5aWVsZCBhLnNhc1N0b3JlU2VydmljZS5hcHByb3ZlVGFibGUoZiwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKGQ9PnthLnJvdXRlLm5hdmlnYXRl''@;'; put 'put ''QnlVcmwoIi9oaXN0b3J5Iil9KS5jYXRjaChkPT57YS5hY2NlcHRMb2FkaW5nPSExfSl9KSgpfWdvVG9TdWJtaXRMaXN0KCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3VibWl0dGVkIil9Y2FsbENoYW5nZXNJbmZvKGEpe3ZhciBmPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3lp''@;'; put 'put ''ZWxkIGYuc2FzU3RvcmVTZXJ2aWNlLmdldENoYW5nZUluZm8oYSkudGhlbihkPT57Zi50YWJsZURldGFpbHM9ZC5qc3BhcmFtc1swXSxmLmpzUGFyYW1zPWQuanNwYXJhbXNbMF07bGV0IGg9W107Zm9yKGNvbnN0IG0gaW4gZi5qc1BhcmFtcylmLmpzUGFyYW1zLmhhc093blByb3BlcnR5KG0p''@;'; put 'put ''JiZoLnB1c2gobSk7Zi5rZXlzQXJyYXk9aH0pLmNhdGNoKGQ9PntmLmFjY2VwdExvYWRpbmc9ITF9KS5maW5hbGx5KCgpPT57Zi5sb2FkZWQ9ITB9KX0pKCl9Zm9ybWF0dGluZ0NoYW5nZWQoKXt0aGlzLmNhbGNEaWZmKCl9Y2FsY0RpZmYoKXtpZighdGhpcy5yZXNwb25zZSlyZXR1cm47bGV0''@;'; put 'put ''IGE9dGhpcy5yZXNwb25zZS5uZXcsZj10aGlzLnJlc3BvbnNlLnVwZGF0ZXMsZD10aGlzLnJlc3BvbnNlLmRlbGV0ZWQsaD10aGlzLnJlc3BvbnNlLm9yaWdpbmFsczt0aGlzLmZvcm1hdHRlZFZhbHVlcyYmKGE9dGhpcy5yZXNwb25zZS5mbXRfbmV3LGY9dGhpcy5yZXNwb25zZS5mbXRfdXBk''@;'; put 'put ''YXRlcyxkPXRoaXMucmVzcG9uc2UuZm10X2RlbGV0ZWQsaD10aGlzLnJlc3BvbnNlLmZtdF9vcmlnaW5hbHMpLHRoaXMub3JpZ2luYWxzPWgsdGhpcy5yb3dLZXlzPVtdO2ZvcihsZXQgZ3Q9MDtndDxmLmxlbmd0aDtndCsrKXtsZXQganQ9T2JqZWN0LmtleXMoZltndF0pO2ZvcihsZXQgcm49''@;'; put 'put ''MDtybjxqdC5sZW5ndGg7cm4rKylmW2d0XVtqdFtybl1dIT09aFtndF1banRbcm5dXSYmdGhpcy5jaGFuZ2VzQXJyLnB1c2goe2luZDpndCxmaWVsZDpqdFtybl0scHJvcDpmW2d0XVtqdFtybl1dLG9yaWdpbmFsOmhbZ3RdW2p0W3JuXV19KX10aGlzLmxlbnM9e25ldzp0aGlzLnBhcmFtcz8u''@;'; put 'put ''TlVNX0FEREVEfHwwLHVwZGF0ZWQ6dGhpcy5wYXJhbXM/Lk5VTV9VUERBVEVEfHwwLGRlbGV0ZWQ6dGhpcy5wYXJhbXM/Lk5VTV9ERUxFVEVEfHwwfTtsZXQgWD1bXSxhZT1mLmNvbmNhdChhLGQpO2ZvcihsZXQgZ3Q9MDtndDx0aGlzLnJlc3BvbnNlLmNvbHMubGVuZ3RoO2d0KyspWC5wdXNo''@;'; put 'put ''KHRoaXMucmVzcG9uc2UuY29sc1tndF0uTkFNRSk7bGV0IHBlPXRoaXMubGVucy5uZXc+dGhpcy5yZWNvcmRzTGltaXQ/dGhpcy5yZWNvcmRzTGltaXQ6dGhpcy5sZW5zLm5ldyxiZT10aGlzLmxlbnMudXBkYXRlZD50aGlzLnJlY29yZHNMaW1pdD90aGlzLnJlY29yZHNMaW1pdDp0aGlzLmxl''@;'; put 'put ''bnMudXBkYXRlZDt0aGlzLmRpZmZzTGltaXQ9dGhpcy5sZW5zLm5ldz50aGlzLnJlY29yZHNMaW1pdHx8dGhpcy5sZW5zLnVwZGF0ZWQ+dGhpcy5yZWNvcmRzTGltaXR8fHRoaXMubGVucy5kZWxldGVkPnRoaXMucmVjb3Jkc0xpbWl0LHRoaXMuYWRkQ291bnQ9cGU7bGV0IFZlPVtdLFplPVtd''@;'; put 'put ''O2ZvcihsZXQgZ3Q9MDtndDxYLmxlbmd0aDtndCsrKVplLnB1c2goe2RhdGE6WFtndF0scmVhZE9ubHk6ITB9KTt0aGlzLmRpZmZUYWJsZS5kYXRhPWFlO2ZvcihsZXQgZ3Q9MDtndDxhZS5sZW5ndGg7Z3QrKyl7bGV0IHJuPU9iamVjdC5rZXlzKGFlW2d0XSk7dGhpcy5yb3dLZXlzLnB1c2go''@;'; put 'put ''cm4pfWxldCBsdD1bXSxkdD1bXTtmb3IobGV0IGd0PTA7Z3Q8dGhpcy5kaWZmVGFibGUuZGF0YS5sZW5ndGg7Z3QrKyl7aWYoZ3Q8YmUmJjAhPT1iZSl7bHQucHVzaChbXSksZHQucHVzaChbXSksVmUucHVzaCgidXBkYXRlZCIpO2xldCBqdD1PYmplY3Qua2V5cyh0aGlzLmRpZmZUYWJsZS5k''@;'; put 'put ''YXRhW2d0XSk7Zm9yKGxldCBybj0wO3JuPGp0Lmxlbmd0aDtybisrKXtsZXQgWHQ9anRbcm5dO2hbZ3RdW1h0XSE9PWZbZ3RdW1h0XT8obHRbZ3RdLnB1c2goITApLGR0W2d0XS5wdXNoKGhbZ3RdW1h0XSkpOihsdFtndF0ucHVzaCghMSksZHRbZ3RdLnB1c2gobnVsbCkpfXRoaXMuYXJyQ2hh''@;'; put 'put ''bmdlZD1sdCx0aGlzLmFyck9mQ2hhbmdlcz1kdH1ndD49YmUmJmd0PGJlK3BlJiZWZS5wdXNoKCJhZGRlZCIpLGd0PnBlK2JlLTEmJlZlLnB1c2goImRlbGV0ZWQiKX10aGlzLmNoQXJyPVZlLHRoaXMucm93SGVhZGVyPXRoaXMucm93S2V5c1swXSx0aGlzLmRpZmZUYWJsZS5kYXRhPWFlfW5n''@;'; put 'put ''QWZ0ZXJWaWV3SW5pdCgpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2lmKGEuX2RldGFpbHNTdWI9YS5zYXNTdG9yZVNlcnZpY2Uuc3VibWl0dERldGFpbC5zdWJzY3JpYmUoZnVuY3Rpb24oKXt2YXIgZD15aShmdW5jdGlvbiooaCl7YS5zdWJPYmo9aC52aWV3RGF0YSxhLnRh''@;'; put 'put ''YmxlSWQ9aC52aWV3RGF0YS50YWJsZUlkLGEuc3VibWl0dGVkPWgudmlld0RhdGEuc3ViLGEuc3VibWl0RGV0YWlscz1oLmRhdGEsYS5zdWJtaXRBcnI9W107Zm9yKGxldCBfIGluIGEuc3VibWl0RGV0YWlscykic3ViIiE9PV8mJmEuc3VibWl0QXJyLnB1c2goXyk7bGV0IG09e0FDVElPTjoi''@;'; put 'put ''U0hPV19ESUZGUyIsVEFCTEU6YS50YWJsZUlkLERJRkZUSU1FOihuZXcgRGF0ZSkudG9VVENTdHJpbmcoKX07YS5zYXNTdG9yZVNlcnZpY2Uuc2hvd0RpZmZzKG0sIlNBU0NvbnRyb2xUYWJsZSIsImF1ZGl0b3JzL3Bvc3RkYXRhIikudGhlbihfPT57YS5wYXJhbXM9Xy5wYXJhbXNbMF0sYS5y''@;'; put 'put ''ZXNwb25zZT1fLGEuY2FsY0RpZmYoKX0pLmNhdGNoKF89Pl8pLmZpbmFsbHkoKCk9PnthLmxvYWRpbmdUYWJsZT0hMH0pLGEuY2FsbENoYW5nZXNJbmZvKGEudGFibGVJZCl9KTtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSksdHlwZW9mIGEu''@;'; put 'put ''cm91dGVyLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkPiJ1IilyZXR1cm47YS50YWJsZUlkPWEucm91dGVyLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO2xldCBmPXtBQ1RJT046IlNIT1dfRElGRlMiLFRBQkxFOmEudGFibGVJZCxESUZGVElNRToobmV3IERhdGUpLnRvVVRDU3RyaW5nKCl9O2Eu''@;'; put 'put ''c2FzU3RvcmVTZXJ2aWNlLnNob3dEaWZmcyhmLCJTQVNDb250cm9sVGFibGUiLCJhdWRpdG9ycy9wb3N0ZGF0YSIpLnRoZW4oZD0+e2EucGFyYW1zPWQucGFyYW1zWzBdLGEucmVzcG9uc2U9ZCxhLmNhbGNEaWZmKCl9KS5jYXRjaChkPT57YS5hY2NlcHRMb2FkaW5nPSExfSkuZmluYWxseSgo''@;'; put 'put ''KT0+e2EubG9hZGluZ1RhYmxlPSEwLGEuc2V0Rm9jdXMoKX0pLGEuY2FsbENoYW5nZXNJbmZvKGEudGFibGVJZCl9KSgpfW5nT25EZXN0cm95KCl7dGhpcy5fZGV0YWlsc1N1YiYmdGhpcy5fZGV0YWlsc1N1Yi51bnN1YnNjcmliZSgpfXNldEZvY3VzKCl7c2V0VGltZW91dCgoKT0+e2xldCBh''@;'; put 'put ''PXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNjZXB0QnRuIik7YSYmYS5mb2N1cygpfSwyMDApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChMZCkscnQoUnMpLHJ0KHR1KSxydChMYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTps''@;'; put 'put ''LHNlbGVjdG9yczpbWyJhcHAtYXBwcm92ZS1kZXRhaWxzIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo0Mix2YXJzOjEyLGNvbnN0czpbWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1i''@;'; put 'put ''b2R5Il0sWzEsInRhYmxlIl0sWzEsImxlZnQiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzQsIm5nSWYiXSxbMSwiZm9ybS1ibG9jayJdLFsxLCJmb3Jt''@;'; put 'put ''LWdyb3VwIl0sWyJmb3IiLCJmb3JtRmllbGRzXzgiXSxbImlkIiwiZm9ybUZpZWxkc184Iiwicm93cyIsIjUiLDEsInctMTAwIiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJpbm5lckhUTUwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0''@;'; put 'put ''bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJsZWZ0IGxpbmstaXQiLDMsInJvdXRl''@;'; put 'put ''ckxpbmsiLDQsIm5nSWYiXSxbImNsYXNzIiwibGVmdCIsNCwibmdJZiJdLFsxLCJsZWZ0IiwibGluay1pdCIsMywicm91dGVyTGluayJdLFsiY2xyVGFiTGluayIsIiJdLFs0LCJjbHJJZkFjdGl2ZSJdLFsxLCJvdmVyZmxvdy1hdXRvIl0sWzEsImNhcmQiXSxbImNsYXNzIiwiY2FyZC1oZWFk''@;'; put 'put ''ZXIgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwib3ZlcmZsb3ctYXV0byIsIm1yLTEyIl0sWyJjbGFzcyIsImgtNzB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIiLDQs''@;'; put 'put ''Im5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiY2FyZCIsImNsYXNzIiwibXQtMCIsNCwibmdJZiJdLFsxLCJtdC0wIl0sWzEsImNhcmQtaGVhZGVyIiwicC0wIl0sWzEsImNsci1yb3ciXSxb''@;'; put 'put ''MSwiY2xyLWNvbC1tZC00IiwiYXBwcm92YWxCYWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwibS0wIiwzLCJjbGljayJdLFsic2hhcGUiLCJjYXJldCIsImRpciIsImxlZnQiLCJzaXplIiwiMjAiXSxbMSwiY2xyLWNvbC1tZC00IiwiZC1mbGV4IiwianVzdGlmeS1jb250''@;'; put 'put ''ZW50LWNlbnRlciJdLFsxLCJtdC0wIiwiZm9udC13ZWlnaHQtMzAwIl0sWzEsImNsci1jb2wtbWQtNCIsImFwcHJvdmFsSW5mbyJdLFsxLCJ0b29sdGlwIiwidG9vbHRpcC1zbSIsInRvb2x0aXAtdG9wLWxlZnQiLDMsImNsaWNrIl0sWyJzaGFwZSIsImluZm8tc3RhbmRhcmQiLCJzaXplIiwi''@;'; put 'put ''MjgiXSxbMSwidGV4dC1jZW50ZXIiLCJtdC0xMCJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIl0sWyJjbGFzcyIsImNhcmQtdGV4dCIsNCwibmdJZiJdLFsiY2xhc3MiLCJoLTI0dmggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIiw0''@;'; put 'put ''LCJuZ0lmIl0sWzEsInRhYmxlQ29udCIsIm10LTAiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC1zaXplLTE4Iiw0LCJuZ0lmIl0sWzEsImQtZmxleCJdLFsiY2xhc3MiLCJsZWZ0Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiZC1mbGV4IiwzLCJuZ0NsYXNzIiw0LCJuZ0Zv''@;'; put 'put ''ciIsIm5nRm9yT2YiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImNsci1yb3ciLCJmb250LXNpemUtMTUiXSxbMSwiY2xyLWNvbC1tZC01Il0sWzEsImNsci1jb2wtbWQtNyJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJkLWZsZXgiLCJqdXN0''@;'; put 'put ''aWZ5LWNvbnRlbnQtY2VudGVyIiwibXQtMCJdLFsxLCJjbHItcm93IiwiY2xyLWdhcC01IiwiY2xyLWdhcC1zbS0wIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1v''@;'; put 'put ''dXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1m''@;'; put 'put ''bGV4LWNvbHVtbiIsImNsci1nYXAtNSIsImNsci1mbGV4LXNtLXJvdyIsImNsci1nYXAtc20tMCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiYWNjZXB0QnRuIiwidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMsImNsckxvYWRpbmciLCJk''@;'; put 'put ''aXNhYmxlZCIsImNsaWNrIl0sWyJpZCIsInJlamVjdEJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuIiwiYnRuLWRhbmdlciIsIm1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwibS0wIiwibWwtMjBpIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLCJjaGVja2VkIiwi''@;'; put 'put ''IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFsxLCJmb3JtYXR0ZWQtdmFsdWVzLXRvZ2dsZSJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiJdLFsiY2xhc3MiLCJyb3dzLW5vdGljZSIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZ2FwLTUiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItZ2FwLXNtLTAiXSxbMSwibGFiZWwiLCJsYWJlbC13YXJuaW5nIl0sWzEsImJhZGdlIiwiYmFkZ2Utd2FybmluZyJdLFsxLCJsYWJlbCIsImxhYmVsLXN1Y2Nlc3Mi''@;'; put 'put ''XSxbMSwiYmFkZ2UiLCJiYWRnZS1zdWNjZXNzIl0sWzEsImxhYmVsIiwibGFiZWwtZGFuZ2VyIl0sWzEsImJhZGdlIiwiYmFkZ2UtZGFuZ2VyIl0sWzEsInRleHQtY2VudGVyIiwiZm9udC1zaXplLTE4Il0sWzEsIm10LTE1Il0sWzEsImxpbmstaXQiLDMsInJvdXRlckxpbmsiXSxbMSwibXQt''@;'; put 'put ''MTAiXSxbMSwicm93cy1ub3RpY2UiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tdHJpYW5nbGUiLDEsIm1iLTUiLCJjb2xvci1vcmFuZ2UiXSxbMSwiaC0yNHZoIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEs''@;'; put 'put ''InNwaW5uZXIiXSxbMSwiZC1mbGV4IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsImxlZnQiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJsZWZ0IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsInRvb2x0aXAtY29udGVudCIsNCwibmdJZiJdLFsxLCJ0b29sdGlwLWNvbnRlbnQi''@;'; put 'put ''XSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIi''@;'; put 'put ''LDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZC1ibG9jayIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiY2FyZCBtLTAiLDQsIm5nSWYiXSxbMSwiY2FyZCIsIm0tMCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJi''@;'; put 'put ''dG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC00Il0sWzEsIm10LTAiLCJmb250LXdlaWdodC0zMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtLTAiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm0tMCIsIm1sLTIwLWkiXSxb''@;'; put 'put ''MSwiY2FyZC1ibG9jayIsInAtMCIsIm92ZXJmbG93LWF1dG8iLCJtci0xMiJdLFsiY2xhc3MiLCJoLTI1dmggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzEsInRhYmxlQ29udCJdLFsxLCJoLTI1dmgiLCJk''@;'; put 'put ''LWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJsb2FkZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJjbHItbW9kYWwiLDApLEV0KCJjbHJNb2RhbE9wZW5D''@;'; put 'put ''aGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmRldGFpbHNPcGVuPWh9KSx5ZSgxLCJoMyIsMSksWWUoMiwiQXBwcm92YWwgRGV0YWlscyIpLENlKCkseWUoMywiZGl2IiwyKSg0LCJ0YWJsZSIsMykoNSwidGhlYWQiKSg2LCJ0ciIpKDcsInRoIiw0KSxZZSg4LCJOYW1lIiksQ2UoKSx5ZSg5''@;'; put 'put ''LCJ0aCIsNCksWWUoMTAsIlZhbHVlIiksQ2UoKSgpKCkseWUoMTEsInRib2R5IiksdHQoMTIsZVplLDUsMywidHIiLDUpLENlKCkoKSgpLHllKDEzLCJkaXYiLDYpKDE0LCJidXR0b24iLDcpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5kZXRhaWxzT3Blbj0hMX0pLFllKDE1LCIg''@;'; put 'put ''T2sgIiksQ2UoKSgpKCkseWUoMTYsImNsci1tb2RhbCIsMCksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYudGFibGVGbGFnPWh9KSx5ZSgxNywiaDMiLDEpLFllKDE4LCJBbGwgRGV0YWlscyIpLENlKCkseWUoMTksImRpdiIsMiksdHQoMjAsaVplLDE5LDIs''@;'; put 'put ''ImNsci10YWJzIiw4KSxDZSgpLHllKDIxLCJkaXYiLDYpKDIyLCJidXR0b24iLDcpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi50YWJsZUZsYWc9ITF9KSxZZSgyMywiIE9rICIpLENlKCkoKSgpLHllKDI0LCJjbHItbW9kYWwiLDApLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybiBmLnJlamVjdE9wZW49aH0pLHllKDI1LCJoMyIsMSksWWUoMjYsIlJlYXNvbiBNZXNzYWdlIiksQ2UoKSx5ZSgyNywiZGl2IiwyKSgyOCwiZm9ybSIpKDI5LCJzZWN0aW9uIiw5KSgzMCwiZGl2IiwxMCkoMzEsImxhYmVsIiwxMSksWWUoMzIsIlJlYXNvbiBmb3Ig''@;'; put 'put ''cmVqZWN0aW5nPyIpLENlKCkseWUoMzMsInRleHRhcmVhIiwxMiksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnN1Ym1pdFJlYXNvbj1ofSksQ2UoKSgpKCkoKSgpLHllKDM0LCJkaXYiLDYpKDM1LCJidXR0b24iLDEzKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIGYucmVqZWN0T3Blbj0hMX0pLFllKDM2LCIgQ2FuY2VsICIpLENlKCkseWUoMzcsImJ1dHRvbiIsMTQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5yZWplY3RpbmcoKX0pLFllKDM4LCIgT0sgIiksQ2UoKSgpKCkseWUoMzksImRpdiIsMTUpLHR0KDQwLE1aZSw0LDIsImRp''@;'; put 'put ''diIsMTYpLHR0KDQxLEJaZSwzLDIsImRpdiIsOCksQ2UoKSksMiZhJiYoUmUoImNsck1vZGFsT3BlbiIsZi5kZXRhaWxzT3BlbiksU2UoMTIpLFJlKCJuZ0Zvck9mIixmLmtleXNBcnJheSksU2UoNCksUmUoImNsck1vZGFsT3BlbiIsZi50YWJsZUZsYWcpLFNlKDQpLFJlKCJuZ0lmIixmLnRh''@;'; put 'put ''YmxlRmxhZyksU2UoNCksUmUoImNsck1vZGFsT3BlbiIsZi5yZWplY3RPcGVuKSxTZSg5KSxSZSgibmdNb2RlbCIsZi5zdWJtaXRSZWFzb24pKCJuZ01vZGVsT3B0aW9ucyIsWGEoMTEsalplKSkoImlubmVySFRNTCIsZi5zdWJtaXRSZWFzb24sdmgpLFNlKDQpLFJlKCJjbHJMb2FkaW5nIixm''@;'; put 'put ''LnJlamVjdExvYWRpbmcpLFNlKDMpLFJlKCJuZ0lmIiwhZi5zdWJtaXR0ZWQpLFNlKDEpLFJlKCJuZ0lmIixmLnN1Ym1pdHRlZCkpfSxkZXBlbmRlbmNpZXM6W3l1LFJhLCRpLHA0LGlzLFIwLFdhLGg0LHphLENkLEkwLFJsLE1jLGtjLEpjLHVTLEloLGVsLEIwLGw3LFYwLHU1LGY1LFQ3LGM1''@;'; put 'put ''LGw1LEE3XSxzdHlsZXM6WycubG9hZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6NzV2aDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tb2RhbExhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXXt3''@;'; put 'put ''aWR0aDo1MHJlbSFpbXBvcnRhbnR9LmFkZGVkUm93W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYigxNDYsMjA4LDE1NCk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDksNzcsMTE3LC4yKTtib3JkZXItcmFkaXVzOjVweH0uZGVsZXRlZFJvd1tfbmdjb250ZW50LSVDT01QJV17YmFj''@;'; put 'put ''a2dyb3VuZDpyZ2IoMjMwLDE3OSwxNzkpO2JvcmRlcjoxcHggc29saWQgcmdiYSg3MCw3MSw3MCwuMik7Ym9yZGVyLXJhZGl1czo1cHh9LnVwZGF0ZWRSb3dbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZhZmRhODtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOSwxMTcsOSwuMik7Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czo1cHh9LmNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEpO2JvcmRlcjoxcHggc29saWQgcmdiYSgxMDQsMTAwLDAsLjQpO2JvcmRlci1yYWRpdXM6NXB4fS5jaFtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1''@;'; put 'put ''MiwxMzUsMTIwLC40KX0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouNTQxNjdyZW07Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kOiMzMTQzNTE7Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czouMTI1cmVtO2NvbG9yOiNmMGYxZWM7bGluZS1oZWlnaHQ6Ljc1cmVtO21hcmdpbjowO3BhZGRpbmc6LjM3NXJlbSAuNXJlbTt3aWR0aDoyMzVweDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIGF1dG8gMTAwJSAxMnB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6''@;'; put 'put ''MDttYXJnaW4tYm90dG9tOi42NjY2N3JlbX0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmUsIC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSA+''@;'; put 'put ''IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotLjM3NXJlbTtsZWZ0OjA7dG9wOmF1''@;'; put 'put ''dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1sZWZ0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci10b3A6LjIwODMzcmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yMDgzM3JlbSBzb2xpZCB0cmFu''@;'; put 'put ''c3BhcmVudH0udGFibGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHggc29saWR9LnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1bX25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtfbmdjb250ZW50LSVDT01QJV06YmVm''@;'; put 'put ''b3Jle2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0udGFibGVDb250W19uZ2NvbnRlbnQtJUNPTVAlXXtv''@;'; put 'put ''dmVyZmxvdzphdXRvO21hcmdpbjoxNXB4IDEwcHggMTBweH0udGFibGVDb250W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LmFwcHJvdmFsSW5mb1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpmbGV4LWVuZH0uYXBwcm92YWxCYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5hcHByb3ZhbEluZm9bX25nY29udGVudC0lQ09NUCVde2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MTVweH0uYXBwcm92YWxCYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tYm90dG9tOjE1cHh9LmNhcmRbX25nY29udGVudC0lQ09NUCVde21hcmdp''@;'; put 'put ''bi10b3A6MHJlbSFpbXBvcnRhbnQ7bWluLWhlaWdodDpjYWxjKDEwMHZoICsgLTBweCkhaW1wb3J0YW50fS50YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0ZC5sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoLmxlZnRbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3RleHQtYWxpZ246bGVmdDt3aWR0aDoxNTBweCFpbXBvcnRhbnQ7ZmxleDowfX0udGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGQubGVmdFtfbmdjb250ZW50LSVDT01QJV0sIC50YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aC5sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXXt0''@;'; put 'put ''ZXh0LWFsaWduOmxlZnQ7ZmxleDoxO3dpZHRoOjMwMHB4IWltcG9ydGFudH0udG9vbGxbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2U2YjNiMztjb2xvcjojMzE0MzUxO3RvcDowO2hlaWdodDozNnB4O3dpZHRoOjEwMCU7bGVmdDowO2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0jYWNjZXB0QnRuW19uZ2NvbnRlbnQtJUNPTVAlXSwgI3JlamVjdEJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTc1cHh9LmZvcm1hdHRlZC12YWx1ZXMtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtt''@;'; put 'put ''aW4td2lkdGg6NzVweH1jbHItbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtYm9keS13cmFwcGVye292ZXJmbG93OmF1dG99LnJvd3Mtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1yaWdodDoxMHB4O2Nv''@;'; put 'put ''bG9yOiM2YTZhNmE7Zm9udC1zaXplOjE1cHh9LnJvd3Mtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MH0nXX0pLGx9KSgpLHpaZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5yb3V0ZT1hLHRoaXMucm91''@;'; put 'put ''dGVyPWZ9c3VibWl0dGVkVGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIit0aGlzLmRzaWQpfWFwcHJvdmVUYWJsZVNjcmVlbigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlL2FwcHJvdmVEZXQvIit0aGlzLmRzaWQpfXZpZXdlclRh''@;'; put 'put ''YmxlU2NyZWVuKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3RoaXMubGliZHMpfWdvQmFjaygpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYmRzKX1uZ09uSW5pdCgpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigp''@;'; put 'put ''e2EuZHNpZD1hLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kc2lkLGEubGliZHM9YS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliZHN9KSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3NldFRpbWVvdXQoKCk9PntsZXQgYT13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsQnRuIik7''@;'; put 'put ''YSYmYS5mb2N1cygpfSw3MDApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh0dSkscnQoTGEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWFjdGlvbnMiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5l''@;'; put 'put ''ciJdLGRlY2xzOjE5LHZhcnM6MSxjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxleCIsImZsZXgtY29sdW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsxLCJjb2xvci1ibHVlIiwiZm9udC13''@;'; put 'put ''ZWlnaHQtNzAwIl0sWzEsInJvdyIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJtdC0yMCJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsiaWQiLCJhcHByb3ZhbEJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1''@;'; put 'put ''Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsxLCJidG4iLCJidG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImRpdiIs''@;'; put 'put ''MikoMywiaDMiLDMpLFllKDQsIiBZb3Ugc3VjY2VzZnVsbHkgZWRpdGVkIHRhYmxlICIpLHllKDUsInNwYW4iLDQpLFllKDYpLENlKCkoKSx5ZSg3LCJwIiwzKSg4LCJiIiksWWUoOSwiUGxlYXNlIGNob29zZSBmcm9tIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyIpLENlKCkoKSx5ZSgxMCwiZGl2''@;'; put 'put ''Iiw1KSgxMSwiYnV0dG9uIiw2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuc3VibWl0dGVkVGFibGVTY3JlZW4oKX0pLFllKDEyLCIgR28gdG8gc3VibWl0dGVkIHRhYmxlIHNjcmVlbiAiKSxDZSgpLHllKDEzLCJidXR0b24iLDYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZi52aWV3ZXJUYWJsZVNjcmVlbigpfSksWWUoMTQsIiBHbyB0byBiYXNlIHRhYmxlIHNjcmVlbiAiKSxDZSgpLHllKDE1LCJidXR0b24iLDcpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5hcHByb3ZlVGFibGVTY3JlZW4oKX0pLFllKDE2LCIgR28gdG8gYXBwcm92YWxzIHNj''@;'; put 'put ''cmVlbiAiKSxDZSgpLHllKDE3LCJidXR0b24iLDgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5nb0JhY2soKX0pLFllKDE4LCIgR28gYmFjayB0byBlZGl0b3IgIiksQ2UoKSgpKCkoKSgpKSwyJmEmJihTZSg2KSxhcihmLmxpYmRzKSl9fSksbH0pKCk7ZnVuY3Rpb24gVVplKGws''@;'; put 'put ''Yyl7MSZsJiYoeWUoMCwiZGl2IiwxMiksdG4oMSwiY2xyLWljb24iLDEzKSx5ZSgyLCJoMyIsMTQpLFllKDMsIlRoZXJlIGlzIG5vIGhpc3RvcnkgdG8gc2hvdyIpLENlKCkoKSl9ZnVuY3Rpb24gWlplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYSIsMTcpLEV0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCkuJGltcGxpY2l0LGg9R2UoKTtyZXR1cm4gWnQoaC5nZXRUYWJsZShoLmFwcHJvdmVEYXRhW2RdKSl9KSxZZSgxKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdCxmPUdlKCk7U2UoMSksYXIoZi5hcHByb3ZlRGF0YVthXSl9''@;'; put 'put ''fWZ1bmN0aW9uIFlaZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIpKDEsImEiLDE3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdCxoPUdlKCk7cmV0dXJuIFp0KGguZ2V0QmFzZVRhYmxlKGguYXBwcm92ZURhdGFbZF0pKX0p''@;'; put 'put ''LFllKDIsIlZJRVciKSxDZSgpLHllKDMsInNwYW4iKSxZZSg0LCIgLyAiKSxDZSgpLHllKDUsImEiLDE3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdCxoPUdlKCk7cmV0dXJuIFp0KGguZ2V0RWRpdFRhYmxlKGguYXBwcm92ZURhdGFbZF0pKX0p''@;'; put 'put ''LFllKDYsIkVESVQiKSxDZSgpKCl9fWZ1bmN0aW9uIFdaZShsLGMpe2lmKDEmbCYmKHllKDAsInNwYW4iKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQsZj1HZSgpO1NlKDEpLGFyKGYuYXBwcm92ZURhdGFbYV0pfX1mdW5jdGlvbiBHWmUobCxjKXtpZigxJmwmJih5''@;'; put 'put ''ZSgwLCJ0ciIpKDEsInRkIiw2KSxZZSgyKSxDZSgpLHllKDMsInRkIiw2KSx0dCg0LFpaZSwyLDEsImEiLDE1KSx0dCg1LFlaZSw3LDAsImRpdiIsMTYpLHR0KDYsV1plLDIsMSwic3BhbiIsMTYpLENlKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleDtTZSgyKSxhcihh''@;'; put 'put ''KSxTZSgyKSxSZSgibmdJZiIsZjwxKSxTZSgxKSxSZSgibmdJZiIsZjwyJiZmPj0xKSxTZSgxKSxSZSgibmdJZiIsZj49Mil9fWZ1bmN0aW9uICRaZShsLGMpezEmbCYmKHllKDAsInNwYW4iLDIwKSxZZSgxLCIgTG9hZGluZy4uLiAiKSxDZSgpKX1mdW5jdGlvbiBLWmUobCxjKXsxJmwmJih5''@;'; put 'put ''ZSgwLCJkaXYiKSgxLCJoMyIpLFllKDIsIkxvYWRpbmcgaGlzdG9yeSIpLENlKCkoKSl9ZnVuY3Rpb24gcVplKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwxOCksdHQoMSwkWmUsMiwwLCJzcGFuIiwxOSksdHQoMixLWmUsMywwLCJkaXYiLDE2KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtT''@;'; put 'put ''ZSgxKSxSZSgibmdJZiIsIWEubG9hZGVkKSxTZSgxKSxSZSgibmdJZiIsIWEubG9hZGVkKX19ZnVuY3Rpb24gWFplKGwsYyl7MSZsJiYoeWUoMCwiaDMiLDI4KSxZZSgxLCJISVNUT1JZIiksQ2UoKSl9ZnVuY3Rpb24gSlplKGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsMjkpLFllKDEpLENlKCkp''@;'; put 'put ''LDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSx3cigiIFRvIHVubG9jayBtb3JlIHRoYW4gIixhLmxpY2VuY2VTdGF0ZS52YWx1ZS5oaXN0b3J5X3Jvd3NfYWxsb3dlZCwiIHJlY29yZHMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKX19Y29uc3QgUVplPWZ1bmN0aW9uKGws''@;'; put 'put ''Yyl7cmV0dXJue3JlamVjdGVkOmwsYWNjZXB0ZWQ6Y319O2Z1bmN0aW9uIGVZZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1kZy1yb3ciLDMzKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDMpLmdldEFwcHJJ''@;'; put 'put ''bmRleChoKSl9KSx5ZSgxLCJjbHItZGctY2VsbCIsMzQpKDIsImEiLDM1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDMpLmdldEJhc2VUYWJsZShoLmJhc2V0YWJsZSkpfSksWWUoMyksQ2UoKSgpLHllKDQsImNsci1kZy1jZWxs''@;'; put 'put ''IiwzNiksWWUoNSksQ2UoKSx5ZSg2LCJjbHItZGctY2VsbCIsMzQpLFllKDcpLENlKCkseWUoOCwiY2xyLWRnLWNlbGwiLDM0KSxZZSg5KSxDZSgpLHllKDEwLCJjbHItZGctY2VsbCIsMzQpLFllKDExKSxDZSgpLHllKDEyLCJjbHItZGctY2VsbCIsMzQpLFllKDEzKSxDZSgpLHllKDE0LCJj''@;'; put 'put ''bHItZGctY2VsbCIsMzcpKDE1LCJidXR0b24iLDM4KSxFdCgiY2xpY2siLGZ1bmN0aW9uKGQpe2NvbnN0IG09VXQoYSkuJGltcGxpY2l0O3JldHVybiBHZSgzKS5kb3dubG9hZChtLnRhYmxlSWQpLFp0KGQuc3RvcFByb3BhZ2F0aW9uKCkpfSksdG4oMTYsImNsci1pY29uIiwzOSksQ2UoKSgp''@;'; put 'put ''KCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDMpLGFyKGEuYmFzZXRhYmxlKSxTZSgxKSxSZSgibmdDbGFzcyIsd2goNyxRWmUsIlJFSkVDVEVEIj09PWEuc3RhdHVzLCJBUFBST1ZFRCI9PT1hLnN0YXR1cykpLFNlKDEpLGFyKGEuc3RhdHVzKSxTZSgyKSxhcihhLnN1Ym1pdHRl''@;'; put 'put ''ciksU2UoMiksYXIoYS5zdWJtaXR0ZWRSZWFzb24pLFNlKDIpLGFyKGEuc3VibWl0dGVkKSxTZSgyKSxhcihhLnJldmlld2VkKX19ZnVuY3Rpb24gdFllKGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLWRhdGFncmlkIiwzMCkoMSwiY2xyLWRnLWNvbHVtbiIsMzEpLFllKDIsIkJBU0VfVEFCTEUi''@;'; put 'put ''KSxDZSgpLHllKDMsImNsci1kZy1jb2x1bW4iLDMxKSxZZSg0LCJTVEFUVVMiKSxDZSgpLHllKDUsImNsci1kZy1jb2x1bW4iLDMxKSxZZSg2LCJTVUJNSVRURVIiKSxDZSgpLHllKDcsImNsci1kZy1jb2x1bW4iLDMxKSxZZSg4LCJTVUJNSVQgUkVBU09OIiksQ2UoKSx5ZSg5LCJjbHItZGct''@;'; put 'put ''Y29sdW1uIiwzMSksWWUoMTAsIlNVQk1JVFRFRCIpLENlKCkseWUoMTEsImNsci1kZy1jb2x1bW4iLDMxKSxZZSgxMiwiQVBQUk9WRUQgLyBSRUpFQ1RFRCIpLENlKCkseWUoMTMsImNsci1kZy1jb2x1bW4iKSxZZSgxNCwiRE9XTkxPQUQiKSxDZSgpLHR0KDE1LGVZZSwxNywxMCwiY2xyLWRn''@;'; put 'put ''LXJvdyIsMzIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSxSZSgiY2xyRGdGaWVsZCIsImJhc2V0YWJsZSIpLFNlKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3RhdHVzIiksU2UoMiksUmUoImNsckRnRmllbGQiLCJzdWJtaXR0ZXIiKSxTZSgyKSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1p''@;'; put 'put ''dHRlZFJlYXNvbiIpLFNlKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVkIiksU2UoMiksUmUoImNsckRnRmllbGQiLCJyZXZpZXdlZCIpLFNlKDQpLFJlKCJjbHJEZ0l0ZW1zT2YiLGEuaGlzdG9yeSl9fWZ1bmN0aW9uIG5ZZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1''@;'; put 'put ''dHRvbiIsNDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikubG9hZERhdGEoKSl9KSxZZSgxKSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtSZSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nTW9yZSksU2UoMSksd3IoIiBMb2FkICIsYS5yb3dzTGVmdFRvTG9h''@;'; put 'put ''ZCwiIG1vcmUgIil9fWZ1bmN0aW9uIHJZZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMjEpKDEsImRpdiIsMjIpLHR0KDIsWFplLDIsMCwiaDMiLDIzKSx0dCgzLEpaZSwyLDEsInAiLDI0KSxDZSgpLHR0KDQsdFllLDE2LDcsImNsci1kYXRhZ3JpZCIsMjUpLHllKDUsImRpdiIsMjYpLHR0''@;'; put 'put ''KDYsblllLDIsMiwiYnV0dG9uIiwyNyksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgyKSxSZSgibmdJZiIsYS5sb2FkZWQpLFNlKDEpLFJlKCJuZ0lmIixhLmxpY2VuY2VTdGF0ZS52YWx1ZS5oaXN0b3J5X3Jvd3NfYWxsb3dlZCE9PWEuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixh''@;'; put 'put ''LmxvYWRlZCksU2UoMiksUmUoIm5nSWYiLGEubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkPT09YS5JbmZpbml0eSYmYS5yb3dzTGVmdFRvTG9hZD4wKX19bGV0IGlZZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSl7dGhpcy5saWNlbmNlU2Vydmlj''@;'; put 'put ''ZT1hLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPWYsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLnJvdXRlcj1oLHRoaXMuc2FzU2VydmljZT1tLHRoaXMuaGlzdG9yeT1bXSx0aGlzLnRhYmxlVGl0bGVzPVtdLHRoaXMuaGlzdG9yeUFycj1bXSx0aGlzLmxvYWRlZD0hMSx0aGlzLml0ZW1zTnVtPTEw''@;'; put 'put ''LHRoaXMub3Blbk1vZGFsPSExLHRoaXMubm9EYXRhPSExLHRoaXMuYXBwcm92ZURhdGE9e30sdGhpcy5zYXNqc0NvbmZpZz1uZXcgdjEuU0FTanNDb25maWcsdGhpcy5oaXN0UGFyYW1zPXtISVNUOjAsU1RBUlRST1c6MSxOT0JTOi0xfSx0aGlzLmxvYWRpbmdNb3JlPSExLHRoaXMubGljZW5j''@;'; put 'put ''ZVN0YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCl9Z2V0VGFibGUoYSl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrYSl9Z2V0QmFz''@;'; put 'put ''ZVRhYmxlKGEpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEvIithKX1nZXRFZGl0VGFibGUoYSl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK2EpfWdldEFwcHJJbmRleChhKXtjb25zdCBmPXRoaXMuaGlzdG9yeUFyci5maW5kSW5kZXgoZD0+ZC5U''@;'; put 'put ''QUJMRV9JRD09PWEudGFibGVJZCk7Zj4tMSYmKHRoaXMuYXBwcm92ZURhdGE9dGhpcy5oaXN0b3J5QXJyW2ZdLHRoaXMub3Blbk1vZGFsPSEwKX1nZXQgcm93c0xlZnRUb0xvYWQoKXtjb25zdCBhPXRoaXMuaGlzdFBhcmFtcy5OT0JTLXRoaXMuaGlzdG9yeS5sZW5ndGgsZj10aGlzLmhpc3RQ''@;'; put 'put ''YXJhbXMuSElTVDtyZXR1cm4gYTw9MD8wOmE+Zj9mOmF9ZG93bmxvYWQoYSl7bGV0IGY9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksZD1mLnNlcnZlclVybCxoPWYuYXBwTG9jLG09dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihkK20rIi8/''@;'; put 'put ''X3Byb2dyYW09IitoKyIvc2VydmljZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrYSsiJl9jb250ZXh0bmFtZT0iK3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUpfWxvYWREYXRhKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7bGV0IGY9e1NUQVJUUk9XOmEu''@;'; put 'put ''aGlzdFBhcmFtcy5ISVNUK2EuaGlzdFBhcmFtcy5TVEFSVFJPV307YS5sb2FkaW5nTW9yZT0hMDt0cnl7bGV0IGgsZD15aWVsZCBhLnNhc1N0b3JlU2VydmljZS5nZXRIaXN0b3J5KGYsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvZ2V0aGlzdG9yeSIpO2EubG9hZGluZ01vcmU9ITEsYS5o''@;'; put 'put ''aXN0UGFyYW1zPWQuaGlzdHBhcmFtc1swXTtjb25zdCBtPWQuZnJvbXNhcy5zbGljZSgwLGEubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkKTtpZihtLmxlbmd0aD4wKXtjb25zdCBfPW07YS5oaXN0b3J5QXJyPW0saD1PYmplY3Qua2V5cyhfWzBdKSxhLnRhYmxlVGl0''@;'; put 'put ''bGVzPWg7bGV0IE89bS5tYXAoZnVuY3Rpb24oWCl7cmV0dXJue3RhYmxlSWQ6WC5UQUJMRV9JRCxzdWJtaXR0ZXI6WC5TVUJNSVRURVIsc3VibWl0dGVkUmVhc29uOlguU1VCTUlUVEVEX1JFQVNPTl9UWFQsc3VibWl0dGVkOlguU1VCTUlUVEVELHN0YXR1czpYLlNUQVRVUyxyZXZpZXdSZWFz''@;'; put 'put ''b246WC5SRVZJRVdfUkVBU09OX1RYVCxyZXZpZXdlcjpYLlJFVklFV0VSLHJldmlld2VkOlguUkVWSUVXRUQsbnVtT2ZBcHByb3ZhbHM6WC5OVU1fT0ZfQVBQUk9WQUxTX1JFUVVJUkVELGJhc2V0YWJsZTpYLkJBU0VfVEFCTEV9fSk7YS5oaXN0b3J5LnB1c2goLi4uTyksYS5sb2FkZWQ9ITB9''@;'; put 'put ''ZWxzZSBhLmxvYWRlZD0hMCwwPT09YS5oaXN0b3J5Lmxlbmd0aCYmKGEubm9EYXRhPSEwKX1jYXRjaChkKXthLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRoaXN0b3J5IixkKSxhLmxvYWRpbmdNb3JlPSExfX0pKCl9bmdPbkluaXQoKXt2YXIgYT10aGlz''@;'; put 'put ''O3JldHVybiB5aShmdW5jdGlvbiooKXthLmxvYWREYXRhKCl9KSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChiMSkscnQoTGQpLHJ0KFJzKSxydChMYSkscnQocGwpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBw''@;'; put 'put ''LWhpc3RvcnkiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjIwLHZhcnM6Nixjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbImlkIiwibm9EYXRhQ29udGFpbmVyIiwiY2xhc3MiLCJjYXJkLWJsb2NrIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZs''@;'; put 'put ''ZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJ0YWJsZSJdLFsxLCJsZWZ0Il0sWzQsIm5nRm9yIiwi''@;'; put 'put ''bmdGb3JPZiJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsiY2xhc3MiLCJoLTcwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lm''@;'; put 'put ''Il0sWyJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxbImlkIiwibm9EYXRhQ29udGFpbmVyIiwxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQi''@;'; put 'put ''LCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWyJjbGFzcyIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsxLCJoLTcwdmgiLCJkLWZsZXgi''@;'; put 'put ''LCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFsxLCJzcGlubmVyIl0sWzEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIg''@;'; put 'put ''dGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC13ZWlnaHQtNzAwIGNvbG9yLWRhcmstZ3JheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1oaXN0b3J5IGRhdGFncmlkLWN1c3RvbS1mb290ZXIiLDQsIm5nSWYiXSxbMSwibG9hZC1tb3JlIiwi''@;'; put 'put ''ZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsImJ0biBidG4tc3VjY2VzcyIsMywiY2xyTG9hZGluZyIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImNlbnRlciIsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciJd''@;'; put 'put ''LFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtd2VpZ2h0LTcwMCIsImNvbG9yLWRhcmstZ3JheSJdLFsxLCJkYXRhZ3JpZC1oaXN0b3J5IiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciJdLFszLCJjbHJEZ0ZpZWxkIl0sWzMsImNsaWNrIiw0LCJjbHJEZ0l0ZW1zIiwiY2xyRGdJdGVtc09mIl0sWzMs''@;'; put 'put ''ImNsaWNrIl0sWzEsInZlckNlbnRlciJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsIm0tMCIsMywiY2xpY2siXSxbMSwidmVyQ2VudGVyIiwzLCJuZ0NsYXNzIl0sWzEsInZlckNlbnRlciIsInAtMCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiYnRuIiwi''@;'; put 'put ''YnRuLXN1Y2Nlc3MiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl0sWzEsImJ0biIsImJ0bi1zdWNjZXNzIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApLHR0KDEsVVplLDQsMCwiZGl2IiwxKSx5ZSgyLCJj''@;'; put 'put ''bHItbW9kYWwiLDIpLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9wZW5Nb2RhbD1ofSkseWUoMywiaDQiLDMpLFllKDQsIkFwcHJvdmFsIGRldGFpbHMiKSxDZSgpLHllKDUsImRpdiIsNCkoNiwidGFibGUiLDUpKDcsInRoZWFkIikoOCwidHIiKSg5LCJ0''@;'; put 'put ''aCIsNiksWWUoMTAsIk5hbWUiKSxDZSgpLHllKDExLCJ0aCIsNiksWWUoMTIsIlZhbHVlIiksQ2UoKSgpKCkseWUoMTMsInRib2R5IiksdHQoMTQsR1plLDcsNCwidHIiLDcpLENlKCkoKSgpLHllKDE1LCJkaXYiLDgpKDE2LCJidXR0b24iLDkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZi5vcGVuTW9kYWw9ITF9KSxZZSgxNywiIE9LICIpLENlKCkoKSgpLHR0KDE4LHFaZSwzLDIsImRpdiIsMTApLHR0KDE5LHJZZSw3LDQsImRpdiIsMTEpLENlKCkpLDImYSYmKFNlKDEpLFJlKCJuZ0lmIixmLm5vRGF0YSksU2UoMSksUmUoImNsck1vZGFsT3BlbiIsZi5vcGVuTW9kYWwp''@;'; put 'put ''KCJjbHJNb2RhbFNpemUiLCJ4bCIpLFNlKDEyKSxSZSgibmdGb3JPZiIsZi50YWJsZVRpdGxlcyksU2UoNCksUmUoIm5nSWYiLCFmLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLCFmLm5vRGF0YSYmZi5sb2FkZWQpKX0sZGVwZW5kZW5jaWVzOlt5dSxSYSwkaSxTNyx3NCxKZyxfNyxRZyxlNSx0''@;'; put 'put ''NSxrNyxuNSx2NyxiNCxiNyxSbCxNYyxrYyxKYyxJaF0sc3R5bGVzOlsiLnJlamVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjgzMTI2O2ZvbnQtd2VpZ2h0OjcwMH0uYWNjZXB0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMzZmM0MjQ7Zm9udC13ZWlnaHQ6NzAwfS5oc0Nl''@;'; put 'put ''bGxbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O3BhZGRpbmc6N3B4fS5idENlbGxbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LnZlckNlbnRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3b3JkLWJyZWFrOmJyZWFrLWFsbH0ubG9hZC1tb3JlW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo5MHB4fSNub0RhdGFDb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfSJdfSksbH0pKCksb1llPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt9bmdP''@;'; put 'put ''bkluaXQoKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbm90LWZvdW5kIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczozLHZhcnM6MCxjb25z''@;'; put 'put ''dHM6W1sxLCJjb250ZW50LWFyZWEiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApKDEsInAiKSxZZSgyLCI0MDQgLSBOb3QgRm91bmQiKSxDZSgpKCkpfX0pLGx9KSgpO2Z1bmN0aW9uIGFZZShsLGMpezEmbCYmKHllKDAsImRpdiIsMTIpKDEsImRpdiIsMTMp''@;'; put 'put ''LHRuKDIsImNsci1pY29uIiwxNCkseWUoMywiaDMiLDE1KSxZZSg0LCIgWW91IGhhdmUgbm90IHN1Ym1pdHRlZCBhbnkgdGFibGVzICIpLENlKCkoKSgpKX1mdW5jdGlvbiBsWWUobCxjKXsxJmwmJih5ZSgwLCJoMyIsMTYpLFllKDEsIiBTVUJNSVQgUVVFVUUgIiksQ2UoKSl9ZnVuY3Rpb24g''@;'; put 'put ''c1llKGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsMTcpLFllKDEsIiBZb3UgaGF2ZSAiKSx5ZSgyLCJzcGFuIiksWWUoMyksQ2UoKSxZZSg0LCJzdWJtaXNzaW9ucyB3YWl0aW5nIHRvIGJlIGFwcHJvdmVkICIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgzKSx3cigiIixhLnJlbWFpbmVk''@;'; put 'put ''LCIgIil9fWZ1bmN0aW9uIHVZZShsLGMpezEmbCYmKHllKDAsInNwYW4iLDIwKSxZZSgxLCIgTG9hZGluZy4uLiAiKSxDZSgpKX1mdW5jdGlvbiBjWWUobCxjKXsxJmwmJih5ZSgwLCJkaXYiKSgxLCJoMyIpLFllKDIsIkxvYWRpbmcgc3VibWl0dGVkIGxpc3QiKSxDZSgpKCkpfWZ1bmN0aW9u''@;'; put 'put ''IGZZZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTgpLHR0KDEsdVllLDIsMCwic3BhbiIsMTkpLHR0KDIsY1llLDMsMCwiZGl2IiwyKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCl9fWZ1bmN0''@;'; put 'put ''aW9uIGRZZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1kZy1yb3ciLDMwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDUpLmdvVG9EZXRhaWxzKGgudGFibGVJZCkpfSkseWUoMSwiY2xyLWRnLWNlbGwiKSxZ''@;'; put 'put ''ZSgyKSxDZSgpLHllKDMsImNsci1kZy1jZWxsIiksWWUoNCksQ2UoKSx5ZSg1LCJjbHItZGctY2VsbCIpLFllKDYpLENlKCkseWUoNywiY2xyLWRnLWNlbGwiKSg4LCJkaXYiLDMxKSg5LCJhIiwzMiksRXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVy''@;'; put 'put ''biBadChHZSg1KS5nb1RvU3RhZ2UoaC50YWJsZUlkKSl9KSx0bigxMCwiY2xyLWljb24iLDMzKSx5ZSgxMSwic3BhbiIsMzQpLFllKDEyLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iKSxDZSgpKCkoKSgpLHllKDEzLCJjbHItZGctY2VsbCIsMzUpKDE0LCJidXR0b24iLDM2KSxFdCgiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKGQpe2NvbnN0IG09VXQoYSkuJGltcGxpY2l0O3JldHVybiBHZSg1KS5kb3dubG9hZChtLnRhYmxlSWQpLFp0KGQuc3RvcFByb3BhZ2F0aW9uKCkpfSksdG4oMTUsImNsci1pY29uIiwzNyksQ2UoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDIpLGFy''@;'; put 'put ''KGEuYmFzZSksU2UoMiksYXIoYS5zdWJtaXR0ZWQpLFNlKDIpLGFyKGEuc3VibWl0UmVhc29uKX19ZnVuY3Rpb24gaFllKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IikoMSwiY2xyLWRhdGFncmlkIiwyMikoMiwiY2xyLWRnLWNvbHVtbiIpLFllKDMsIkJBU0UgVEFCTEUi''@;'; put 'put ''KSxDZSgpLHllKDQsImNsci1kZy1jb2x1bW4iLDIzKSxZZSg1LCJTVUJNSVRURUQiKSxDZSgpLHllKDYsImNsci1kZy1jb2x1bW4iLDIzKSxZZSg3LCJTVUJNSVQgUkVBU09OIiksQ2UoKSx5ZSg4LCJjbHItZGctY29sdW1uIiwxMiksWWUoOSwiQUNUSU9OIiksQ2UoKSx5ZSgxMCwiY2xyLWRn''@;'; put 'put ''LWNvbHVtbiIsMTIpLFllKDExLCJET1dOTE9BRCIpLENlKCksdHQoMTIsZFllLDE2LDMsImNsci1kZy1yb3ciLDI0KSx5ZSgxMywiY2xyLWRnLWZvb3RlciIsMjUpKDE0LCJzcGFuIiksWWUoMTUsIml0ZW1zIHBlciBwYWdlIiksQ2UoKSx5ZSgxNiwic2VsZWN0IiwyNiksRXQoIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSg0KS5pdGVtc051bT1kKX0pLHllKDE3LCJvcHRpb24iLDI3KSxZZSgxOCwiMyIpLENlKCkseWUoMTksIm9wdGlvbiIsMjcpLFllKDIwLCI1IiksQ2UoKSx5ZSgyMSwib3B0aW9uIiwyNyksWWUoMjIsIjEwIiksQ2UoKSx5ZSgy''@;'; put 'put ''Mywib3B0aW9uIiwyNyksWWUoMjQsIjE1IiksQ2UoKSgpLHllKDI1LCJjbHItZGctcGFnaW5hdGlvbiIsMjgsMjkpLFllKDI3KSxDZSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1RaSgyNiksZj1HZSg0KTtTZSg0KSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZCIpLFNlKDIpLFJlKCJjbHJE''@;'; put 'put ''Z0ZpZWxkIiwic3VibWl0UmVhc29uIiksU2UoNiksUmUoImNsckRnSXRlbXNPZiIsZi5zdWJtaXR0ZXJMaXN0KSxTZSg0KSxSZSgibmdNb2RlbCIsZi5pdGVtc051bSksU2UoMSksUmUoIm5nVmFsdWUiLDMpLFNlKDIpLFJlKCJuZ1ZhbHVlIiw1KSxTZSgyKSxSZSgibmdWYWx1ZSIsMTApLFNl''@;'; put 'put ''KDIpLFJlKCJuZ1ZhbHVlIiwxNSksU2UoMiksUmUoImNsckRnUGFnZVNpemUiLGYuaXRlbXNOdW0pLFNlKDIpLE8wKCIgIixhLmZpcnN0SXRlbSsxLCIgLSAiLGEubGFzdEl0ZW0rMSwiIG9mICIsYS50b3RhbEl0ZW1zLCIgc3VibWlzc2lvbnMgIil9fWZ1bmN0aW9uIHBZZShsLGMpe2lmKDEm''@;'; put 'put ''bCYmKHllKDAsImRpdiIsMjEpLHR0KDEsaFllLDI4LDEyLCJkaXYiLDIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSxSZSgibmdJZiIsYS5zdWJtaXR0ZXJMaXN0JiYwIT09YS5yZW1haW5lZCl9fWNvbnN0IG1ZZT1mdW5jdGlvbihsKXtyZXR1cm57bm9Cb3JkZXI6bH19O2Z1bmN0''@;'; put 'put ''aW9uIGdZZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsNSksdHQoMSxhWWUsNSwwLCJkaXYiLDYpLHllKDIsImRpdiIsNyksdHQoMyxsWWUsMiwwLCJoMyIsOCksdHQoNCxzWWUsNSwxLCJwIiw5KSxDZSgpLHR0KDUsZlllLDMsMiwiZGl2IiwxMCksdHQoNixwWWUsMiwxLCJkaXYiLDExKSxD''@;'; put 'put ''ZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLDA9PT1hLnJlbWFpbmVkJiZhLmxvYWRlZCksU2UoMSksUmUoIm5nQ2xhc3MiLF9oKDYsbVllLCFhLmxvYWRlZCkpLFNlKDEpLFJlKCJuZ0lmIiwwIT09YS5yZW1haW5lZCksU2UoMSksUmUoIm5nSWYiLGEubG9hZGVkJiYw''@;'; put 'put ''IT09YS5yZW1haW5lZCksU2UoMSksUmUoIm5nSWYiLCFhLmxvYWRlZCksU2UoMSksUmUoIm5nSWYiLGEubG9hZGVkKX19ZnVuY3Rpb24gdlllKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwzKSx0dCgxLGdZZSw3LDgsImRpdiIsNCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUo''@;'; put 'put ''Im5nSWYiLCFhLnN1YlJlYWR5KX19ZnVuY3Rpb24geVllKGwsYyl7MSZsJiYoeWUoMCwiZGl2IiksdG4oMSwiYXBwLWFwcHJvdmUtZGV0YWlscyIpLENlKCkpfWxldCBHWj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9YSx0aGlzLmV2''@;'; put 'put ''ZW50U2VydmljZT1mLHRoaXMucm91dGVyPWQsdGhpcy5yb3V0ZT1oLHRoaXMuc2FzU2VydmljZT1tLHRoaXMucmVtYWluZWQ9MCx0aGlzLmxvYWRlZD0hMSx0aGlzLnN1YlJlYWR5PSExLHRoaXMuZGV0YWlsc09wZW49ITF9Z29Ub1N0YWdlKGEpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwo''@;'; put 'put ''Ii9zdGFnZS8iK2EpfWdvVG9EZXRhaWxzKGEpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdWJtaXR0ZWQvIithKX1nZXREZXRhaWxzKGEsZil7dGhpcy5zdWJSZWFkeT0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2VuZERldGFpbHMoYSxmLHRoaXMuc3Vi''@;'; put 'put ''bWl0RGF0YSl9LDApfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7Y29uc3QgZj1hLnJvdXRlLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO2EuaXRlbXNOdW09MTA7dHJ5e2xldCBkPXlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLmdldFN1Ym1pdHRzKCk7aWYoYS5y''@;'; put 'put ''ZW1haW5lZD1kLmZyb21zYXMubGVuZ3RoLGEucmVtYWluZWQ+MCl7YS5zdWJtaXR0ZXI9ZC5mcm9tc2FzWzBdLlNVQk1JVFRFRF9CWV9OTTtsZXQgaD1kLmZyb21zYXMubWFwKGZ1bmN0aW9uKG0pe3JldHVybnt0YWJsZUlkOm0uVEFCTEVfSUQsYmFzZTptLkJBU0VfVEFCTEUsc3VibWl0dGVk''@;'; put 'put ''Om0uU1VCTUlUVEVEX09OX0RUVE0sc3VibWl0dGVyOm0uU1VCTUlUVEVEX0JZX05NLHN1Ym1pdFJlYXNvbjptLlNVQk1JVFRFRF9SRUFTT05fVFhUfX0pO2lmKGEuc3VibWl0dGVyTGlzdD1oLGEuc3VibWl0RGF0YT1kLmZyb21zYXMsdHlwZW9mIGY8InUiKXtjb25zdCBtPWEuc3VibWl0dGVy''@;'; put 'put ''TGlzdC5maW5kSW5kZXgoXz0+Xy50YWJsZUlkPT09Zik7bT4tMSYmYS5nZXREZXRhaWxzKGEuc3VibWl0dGVyTGlzdFttXSxtKX19YS5sb2FkZWQ9ITB9Y2F0Y2goZCl7YS5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJlZGl0b3JzL2dldHN1Ym1pdHMiLGQpfX0pKCl9bmdBZnRl''@;'; put 'put ''clZpZXdJbml0KCl7dGhpcy5fcmVhZHlTdWI9dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0U3VibWl0LnN1YnNjcmliZShhPT57dGhpcy5zdWJSZWFkeT1hfSksdGhpcy5fYmFja1RvU3ViPXRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFN1Ym1pdExpc3Quc3Vic2NyaWJlKGE9Pnt0aGlzLnN1YlJl''@;'; put 'put ''YWR5PSF0aGlzLnN1YlJlYWR5LHRoaXMuZGV0YWlsc09wZW49ITF9KX1kb3dubG9hZChhKXtsZXQgZj10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSxkPWYuc2VydmVyVXJsLGg9Zi5hcHBMb2MsbT10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVu''@;'; put 'put ''KGQrbSsiLz9fcHJvZ3JhbT0iK2grIi9zZXJ2aWNlcy9hdWRpdG9ycy9nZXRhdWRpdGZpbGUmdGFibGU9IithKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoTGQpLHJ0KFJzKSxydChMYSkscnQodHUpLHJ0KHBsKSl9LGwuXHUwMjc1Y21wPWty''@;'; put 'put ''KHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1zdWJtaXR0ZXIiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWzEsInctMTAwIl0sWyJjbGFzcyIsImNvbnRlbnQtYXJlYSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsImNvbnRlbnQt''@;'; put 'put ''YXJlYSJdLFsiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzEsImNhcmQiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIgdGV4dC1jZW50''@;'; put 'put ''ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC13ZWlnaHQtNzAwIGNvbG9yLWRhcmstZ3JheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoLTcwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lm''@;'; put 'put ''Il0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJuby1zdWJtaXR0ZWQtdGFibGVzIiwiY2FyZC1ibG9jayIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFs''@;'; put 'put ''aWduLWl0ZW1zLWNlbnRlciJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJjZW50ZXIiLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJm''@;'; put 'put ''b250LXdlaWdodC03MDAiLCJjb2xvci1kYXJrLWdyYXkiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsxLCJj''@;'; put 'put ''bHItY29sLW1kLTEyIl0sWzEsImRhdGFncmlkLWNvbXBhY3QiLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzMsImNsckRnRmllbGQiXSxbImNsYXNzIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIiw0LCJjbHJEZ0l0ZW1zIiwiY2xyRGdJdGVtc09mIl0sWzEsImQtZmxleCIsImp1c3Rp''@;'; put 'put ''ZnktY29udGVudC1zdGFydCJdLFszLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFszLCJuZ1ZhbHVlIl0sWzEsImNlbnRlciIsMywiY2xyRGdQYWdlU2l6ZSJdLFsicGFnaW5hdGlvbiIsIiJdLFsxLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInJvbGUiLCJ0b29sdGlwIiwxLCJy''@;'; put 'put ''b3ciLCJqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIl0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWJsdWUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNvZGUiLCJzaXplIiwiMjgiXSxbMSwidG9vbHRp''@;'; put 'put ''cC1jb250ZW50Il0sWzEsInAtMCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSx0dCgxLHZZZSwy''@;'; put 'put ''LDEsImRpdiIsMSksdHQoMix5WWUsMiwwLCJkaXYiLDIpLENlKCkpLDImYSYmKFNlKDEpLFJlKCJuZ0lmIiwhZi5zdWJSZWFkeSksU2UoMSksUmUoIm5nSWYiLGYuc3ViUmVhZHkpKX0sZGVwZW5kZW5jaWVzOlt5dSwkaSxTMSxNMSxMMCxXYSx6YSxTNyx3NCxKZyxoSSxfNyxwSSxRZyxlNSx0''@;'; put 'put ''NSxrNyxuNSx2NyxiNCxiNyxSbCxiY2VdLHN0eWxlczpbIi5ub0JvcmRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0''@;'; put 'put ''aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudH0udG9vbHRpcC50b29sdGlwLWJv''@;'; put 'put ''dHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZv''@;'; put 'put ''cmV7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci1ib3R0b206LjIwODMzcmVtIHNvbGlkICMzMTQzNTF9Lm5vLXN1Ym1pdHRlZC10YWJsZXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDpjYWxjKDEwMHZoIC0gMjAwcHgpfSJdfSksbH0pKCksYlllPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGx7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtYXBwcm92ZS1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29u''@;'; put 'put ''dGFpbmVyIl0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJnRuKDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOlt4dl19KSxsfSkoKSxfY2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe31kb3dubG9hZEZpbGUoYSxmLGQ9InR4dCIpe2xldCBo''@;'; put 'put ''PW5ldyBCbG9iKFthXSx7dHlwZToidGV4dC9wbGFpbiJ9KTtpZihuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihoLGAke2Z9LiR7ZH1gKTtlbHNle2xldCBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo''@;'; put 'put ''ImEiKTttLmhyZWY9ImRhdGE6dGV4dC9wbGFpbiwiK2VuY29kZVVSSUNvbXBvbmVudChhKSxtLmRvd25sb2FkPWAke2Z9LiR7ZH1gLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobSksbS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobSl9fXJlYWRGaWxlKGEpe3JldHVybiBu''@;'; put 'put ''ZXcgUHJvbWlzZSgoZixkKT0+e2xldCBoPW5ldyBGaWxlUmVhZGVyO2gub25sb2FkPSgpPT57aC5yZXN1bHQmJmYoSlNPTi5wYXJzZShoLnJlc3VsdC50b1N0cmluZygpKSl9LGgucmVhZEFzVGV4dChhKX0pfWNsZWFyVXBsb2FkSW5wdXQoYSl7YS50YXJnZXQudmFsdWU9IiJ9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2Z1bmN0aW9uIF9ZZShsLGMpezEmbCYmKHllKDAsImRpdiIsNikoMSwicCIsNyksWWUoMiwi''@;'; put 'put ''UGxlYXNlIGxvZyBpbiBmaXJzdCIpLENlKCkseWUoMywibGFiZWwiLDgpLFllKDQsIlVzZXJuYW1lIiksQ2UoKSx5ZSg1LCJkaXYiLDkpKDYsImRpdiIsMTApLHRuKDcsImlucHV0IiwxMSksQ2UoKSgpLHllKDgsImxhYmVsIiwxMiksWWUoOSwiUGFzc3dvcmQiKSxDZSgpLHllKDEwLCJkaXYi''@;'; put 'put ''LDkpKDExLCJkaXYiLDEwKSx0bigxMiwiaW5wdXQiLDEzKSxDZSgpKCkseWUoMTMsImJ1dHRvbiIsMTQpLFllKDE0LCJMb2cgaW4iKSxDZSgpKCkpfWZ1bmN0aW9uIHdZZShsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsMzYpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNp''@;'; put 'put ''dDtSZSgidmFsdWUiLGEuaWQpLFNlKDEpLHdyKCIgIixhLm5hbWUsIiAiKX19ZnVuY3Rpb24gQ1llKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdDtTZSgxKSx3cigiKCAiLGEuYXR0cmlidXRlcy5zeXNVc2VySWQsIiAp''@;'; put 'put ''Iil9fWZ1bmN0aW9uIFNZZShsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsMzYpLFllKDEpLHR0KDIsQ1llLDIsMSwic3BhbiIsNSksd2woMywianNvbiIpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgidmFsdWUiLGEubmFtZSksU2UoMSksd3IoIiAiLGEubmFtZSwiICIp''@;'; put 'put ''LFNlKDEpLFJlKCJuZ0lmIiwie30iIT1KcygzLDMsYS5hdHRyaWJ1dGVzKSl9fWZ1bmN0aW9uIE1ZZShsLGMpezEmbCYmKHllKDAsInNwYW4iKSxZZSgxLCJKU09OIFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHkiKSxDZSgpKX1mdW5jdGlvbiBrWWUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5''@;'; put 'put ''ZSgwLCJidXR0b24iLDM3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmRvd25sb2FkU2FzUHJlY29kZUZpbGUoKSl9KSx0bigxLCJjbHItaWNvbiIsMzgpLENlKCl9fWZ1bmN0aW9uIEVZZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEs''@;'; put 'put ''InAiLDM5KSxZZSgyLCJGaWxlIGV4ZWN1dGUgY29tcGxldGVkIiksQ2UoKSx0bigzLCJociIpLHllKDQsImRpdiIpKDUsImJ1dHRvbiIsNDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBadChkLmRvd25sb2FkRmlsZShkLmpvYkxvZywiZXhlY3V0''@;'; put 'put ''ZS1zY3JpcHQtbG9nIiwidHh0IikpfSksWWUoNiwiIERvd25sb2FkIGxvZyAiKSxDZSgpKCksR3IoKX19ZnVuY3Rpb24geFllKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw0NCksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEpLHdyKCIgIixhLm1ha2VEYXRhUmVzcG9uc2Us''@;'; put 'put ''IiAiKX19ZnVuY3Rpb24gQVllKGwsYyl7MSZsJiYoV3IoMCkseWUoMSwic3BhbiIsMjUpLFllKDIsIiBWYWxpZGF0aW5nIGRlcGxveS4uLiAiKSxDZSgpLHllKDMsInNwYW4iKSxZZSg0LCIgVmFsaWRhdGluZyBkZXBsb3kuLi4gIiksQ2UoKSxHcigpKX1mdW5jdGlvbiBUWWUobCxjKXsxJmwm''@;'; put 'put ''JihXcigwKSx0bigxLCJjbHItaWNvbiIsNDYpLHllKDIsInNwYW4iKSxZZSgzLCIgVmFsaWRhdGlvbiBmYWlsZWQgIiksQ2UoKSxHcigpKX1mdW5jdGlvbiBPWWUobCxjKXsxJmwmJihXcigwKSx0bigxLCJjbHItaWNvbiIsNDcpLHllKDIsInNwYW4iKSxZZSgzLCIgVmFsaWRhdGlvbiBzdWNj''@;'; put 'put ''ZWVkZWQgIiksQ2UoKSxHcigpKX1mdW5jdGlvbiBEWWUobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDQ1KSx0dCgxLEFZZSw1LDAsIm5nLWNvbnRhaW5lciIsNSksdHQoMixUWWUsNCwwLCJuZy1jb250YWluZXIiLDUpLHR0KDMsT1llLDQsMCwibmctY29udGFpbmVyIiw1KSxDZSgpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9R2UoMyk7U2UoMSksUmUoIm5nSWYiLGEuaXNWYWxpZGF0aW5nKSxTZSgxKSxSZSgibmdJZiIsIWEuaXNWYWxpZGF0aW5nJiYiZXJyb3IiPT09YS52YWxpZGF0aW9uU3RhdGUpLFNlKDEpLFJlKCJuZ0lmIiwhYS5pc1ZhbGlkYXRpbmcmJiJzdWNjZXNzIj09PWEudmFsaWRhdGlv''@;'; put 'put ''blN0YXRlKX19ZnVuY3Rpb24gSVllKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwicCIsMzkpLFllKDIsIkNyZWF0ZSBEYXRhYmFzZSBDb21wbGV0ZWQiKSxDZSgpLHRuKDMsImhyIiksdHQoNCx4WWUsMiwxLCJkaXYiLDQxKSx5ZSg1LCJidXR0b24iLDQyKSxFdCgiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLm5hdmlnYXRlVG9Ib21lKCkpfSksWWUoNiwiIExldCdzIGdldCBzdGFydGVkICIpLENlKCkseWUoNywiYnV0dG9uIiw0MiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMik7cmV0dXJuIFp0KGQuZG93''@;'; put 'put ''bmxvYWRGaWxlKGQubWFrZURhdGFSZXNwb25zZSwiY3JlYXRlLWRhdGFiYXNlLWxvZyIsInR4dCIpKX0pLFllKDgsIiBEb3dubG9hZCBsb2cgIiksQ2UoKSx5ZSg5LCJidXR0b24iLDQyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnZhbGlkYXRlRGVwbG95''@;'; put 'put ''KCkpfSksWWUoMTAsIiBWYWxpZGF0ZSAiKSxDZSgpLHR0KDExLERZZSw0LDMsImRpdiIsNDMpLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDQpLFJlKCJuZ0lmIixhLm1ha2VEYXRhUmVzcG9uc2UubGVuZ3RoPjApLFNlKDcpLFJlKCJuZ0lmIiwibm9uZSIhPT1hLnZhbGlkYXRpb25T''@;'; put 'put ''dGF0ZXx8YS5pc1ZhbGlkYXRpbmcpfX1jb25zdCAkWj1mdW5jdGlvbigpe3JldHVybntzdGFuZGFsb25lOiEwfX07ZnVuY3Rpb24gUlllKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiZm9ybSIpKDIsImRpdiIsMTUpKDMsImxhYmVsIiwxNiksWWUoNCwiQWRtaW4gZ3Jv''@;'; put 'put ''dXAiKSxDZSgpLHllKDUsImRpdiIsMTcpKDYsImRpdiIsMTgpKDcsInNlbGVjdCIsMTkpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5zZWxlY3RlZEFkbWluR3JvdXA9ZCl9KSx0dCg4LHdZZSwyLDIsIm9wdGlvbiIsMjApLENlKCkoKSgpKCks''@;'; put 'put ''eWUoOSwiZGl2IiwxNSkoMTAsImRpdiIpKDExLCJsYWJlbCIsMTYpLFllKDEyLCJDb250ZXh0IiksQ2UoKSx5ZSgxMywiZGl2IiwxNykoMTQsImRpdiIsMTgpKDE1LCJzZWxlY3QiLDIxKSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuc2VsZWN0''@;'; put 'put ''ZWRDb250ZXh0PWQpfSksdHQoMTYsU1llLDQsNSwib3B0aW9uIiwyMCksQ2UoKSgpKCkseWUoMTcsImJ1dHRvbiIsMjIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5leGVjdXRhYmxlQ29udGV4dCgpKX0pLHRuKDE4LCJjbHItaWNvbiIsMjMpLENlKCkoKSx5''@;'; put 'put ''ZSgxOSwiZGl2IiwyNCkoMjAsInNwYW4iLDI1KSxZZSgyMSwiIExvYWRpbmcgY29udGV4dHMuLi4gIiksQ2UoKSx5ZSgyMiwic3BhbiIpLFllKDIzLCIgTG9hZGluZyBjb250ZXh0cy4uLiAiKSxDZSgpKCkseWUoMjQsImxhYmVsIiwyNiksWWUoMjUsIkRDIExvYyIpLENlKCkseWUoMjYsImRp''@;'; put 'put ''diIsOSkoMjcsImRpdiIsMTApKDI4LCJpbnB1dCIsMjcpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5kY1BhdGg9ZCl9KSgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuc2F2ZURjUGF0aCgpKX0pLENlKCkoKSgp''@;'; put 'put ''LHllKDI5LCJwIiwyOCksWWUoMzAsIiBTZWxlY3QgSlNPTiBmaWxlIHRvIHVwbG9hZCAoanNvbiBidWlsZCBmaWxlIHByZWxvYWRlZCk6ICIpLENlKCkseWUoMzEsImRpdiIsMjkpKDMyLCJpbnB1dCIsMzApLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuY2xl''@;'; put 'put ''YXJVcGxvYWRJbnB1dChkKSl9KSgiY2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbkpzb25GaWxlQ2hhbmdlKGQpKX0pLENlKCkoKSx5ZSgzMywiZGl2IiwzMSkoMzQsImJ1dHRvbiIsMzIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2Uo''@;'; put 'put ''KS5leGVjdXRlSnNvbigpKX0pLFllKDM1LCIgU1VCTUlUIEpTT04gIiksQ2UoKSx0dCgzNixNWWUsMiwwLCJzcGFuIiw1KSxDZSgpLHllKDM3LCJwIiwyOCksWWUoMzgsIlNlbGVjdCBTQVMgZmlsZSB0byB1cGxvYWQ6IiksQ2UoKSx5ZSgzOSwiZGl2IiwyOSkoNDAsImlucHV0IiwzMCksRXQo''@;'; put 'put ''ImNsaWNrIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5jbGVhclVwbG9hZElucHV0KGQpKX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKTtyZXR1cm4gaC5vblNhc0ZpbGVDaGFuZ2UoZCksWnQoaC5kb3dubG9hZEZpbGVCdG49ITApfSksQ2UoKSx0''@;'; put 'put ''dCg0MSxrWWUsMiwwLCJidXR0b24iLDMzKSxDZSgpLHllKDQyLCJkaXYiLDMxKSg0MywiYnV0dG9uIiwzNCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmV4ZWN1dGVTQVMoKSl9KSxZZSg0NCwiIFNVQk1JVCAiKSxDZSgpKCkoKSx0dCg0NSxFWWUsNywwLCJu''@;'; put 'put ''Zy1jb250YWluZXIiLDUpLHllKDQ2LCJidXR0b24iLDM1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuY3JlYXRlRGF0YWJhc2UoKSl9KSxZZSg0NywiIENyZWF0ZSBEYXRhYmFzZSAiKSxDZSgpLHR0KDQ4LElZZSwxMiwyLCJuZy1jb250YWluZXIiLDUpLENl''@;'; put 'put ''KCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtTZSg3KSxSZSgibmdNb2RlbCIsYS5zZWxlY3RlZEFkbWluR3JvdXApKCJuZ01vZGVsT3B0aW9ucyIsWGEoMTksJFopKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5hZG1pbkdyb3VwcyksU2UoMiksZ3IoImhpZGRlbiIsYS5jb250ZXh0c0xvYWRp''@;'; put 'put ''bmcpLFNlKDUpLFJlKCJuZ01vZGVsIixhLnNlbGVjdGVkQ29udGV4dCkoIm5nTW9kZWxPcHRpb25zIixYYSgyMCwkWikpLFNlKDEpLFJlKCJuZ0Zvck9mIixhLmFsbENvbnRleHRzKSxTZSgzKSxncigiaGlkZGVuIiwhYS5jb250ZXh0c0xvYWRpbmcpLFNlKDkpLFJlKCJuZ01vZGVsIixhLmRj''@;'; put 'put ''UGF0aCkoIm5nTW9kZWxPcHRpb25zIixYYSgyMSwkWikpLFNlKDYpLFJlKCJjbHJMb2FkaW5nIixhLmlzU3VibWl0dGluZ0pzb24pLFNlKDIpLFJlKCJuZ0lmIixhLmlzSnNvblN1Ym1pdHRlZCksU2UoNSksUmUoIm5nSWYiLGEuZG93bmxvYWRGaWxlQnRuKSxTZSgyKSxSZSgiY2xyTG9hZGlu''@;'; put 'put ''ZyIsYS5leGVjdXRpbmdTY3JpcHQpLFNlKDIpLFJlKCJuZ0lmIixhLmpvYkxvZy5sZW5ndGg+MCksU2UoMSksUmUoImNsckxvYWRpbmciLGEuY3JlYXRlRGF0YWJhc2VMb2FkaW5nKSxTZSgyKSxSZSgibmdJZiIsYS5tYWtlRGF0YVJlc3BvbnNlLmxlbmd0aD4wKX19bGV0IExZZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuc2FzU2VydmljZT1hLHRoaXMuZXZlbnRTZXJ2aWNlPWYsdGhpcy5sb2dnZXJTZXJ2aWNlPWQsdGhpcy5kZXBsb3lTZXJ2aWNlPWgsdGhpcy5zYXNKc0NvbmZpZz1uZXcgdjEuU0FTanNDb25maWcsdGhpcy5vbk5hdmlnYXRlVG9Ib21l''@;'; put 'put ''PW5ldyB4cix0aGlzLm5lZWRzTG9naW49ITEsdGhpcy5hZG1pbkdyb3Vwcz1bXSx0aGlzLmFsbENvbnRleHRzPVtdLHRoaXMuYXBwTG9jPSIiLHRoaXMuZGNQYXRoPSIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSIiLHRoaXMuc2VsZWN0ZWRDb250ZXh0PSIiLHRoaXMuam9iTG9nPSIiLHRo''@;'; put 'put ''aXMubWFrZURhdGFSZXNwb25zZT0iIix0aGlzLmxpbmVzT2ZDb2RlPVtdLHRoaXMuZmlsZU5hbWU9IiIsdGhpcy5wcmVsb2FkZWRGaWxlPSEwLHRoaXMuZXhlY3V0ZVNBU0VuYWJsZWQ9ITEsdGhpcy5jb250ZXh0c0xvYWRpbmc9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhp''@;'; put 'put ''cy5leGVjdXRpbmdTY3JpcHQ9ITEsdGhpcy5kb3dubG9hZEZpbGVCdG49ITEsdGhpcy5pc1ZhbGlkYXRpbmc9ITEsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMSx0aGlzLnZhbGlkYXRpb25TdGF0ZT0ibm9uZSJ9bmdP''@;'; put 'put ''bkluaXQoKXt9ZXhlY3V0YWJsZUNvbnRleHQoKXtyZXR1cm4geWkoZnVuY3Rpb24qKCl7fSkoKX1jbGVhclVwbG9hZElucHV0KGEpe3RoaXMuZGVwbG95U2VydmljZS5jbGVhclVwbG9hZElucHV0KGEpfW9uU2FzRmlsZUNoYW5nZShhKXt0aGlzLnByZWxvYWRlZEZpbGU9ITE7bGV0IGY9YS50''@;'; put 'put ''YXJnZXQuZmlsZXNbMF07dGhpcy5maWxlTmFtZT1mLm5hbWU7bGV0IGQ9bmV3IEZpbGVSZWFkZXI7ZC5vbmxvYWQ9KCk9PntkLnJlc3VsdCYmKHRoaXMubGluZXNPZkNvZGU9ZC5yZXN1bHQuc3BsaXQoIlxuIiksdGhpcy5saW5lc09mQ29kZT10aGlzLmxpbmVzT2ZDb2RlLmZpbHRlcihoPT4i''@;'; put 'put ''IiE9PWgmJm51bGwhPT1oKSx0aGlzLmV4ZWN1dGVTQVNFbmFibGVkPSEwLHRoaXMuYWRkUHJlY29kZUxpbmVzKCkpfSxkLnJlYWRBc1RleHQoZil9b25Kc29uRmlsZUNoYW5nZShhKXt2YXIgZj10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtsZXQgZD1hLnRhcmdldC5maWxlc1swXTtmLmpz''@;'; put 'put ''b25GaWxlPXlpZWxkIGYuZGVwbG95U2VydmljZS5yZWFkRmlsZShkKX0pKCl9YWRkUHJlY29kZUxpbmVzKCl7dGhpcy5saW5lc09mQ29kZS51bnNoaWZ0KGAlbGV0IGNvbnRleHQ9JHt0aGlzLnNlbGVjdGVkQ29udGV4dH07YCxgJWxldCBhcHBMb2M9JHt0aGlzLmFwcExvY307YCxgJWxldCBh''@;'; put 'put ''ZG1pbj0ke3RoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwfTtgLGAlbGV0IGRjcGF0aD0ke3RoaXMuZGNQYXRofTtgKX1kb3dubG9hZFNhc1ByZWNvZGVGaWxlKCl7bGV0IGE9dGhpcy5saW5lc09mQ29kZS5qb2luKCJcbiIpLGY9dGhpcy5maWxlTmFtZS5zcGxpdCgiLiIpWzBdO3RoaXMuZG93bmxv''@;'; put 'put ''YWRGaWxlKGEsZiwic2FzIil9ZG93bmxvYWRGaWxlKGEsZixkPSJ0eHQiKXt0aGlzLmRlcGxveVNlcnZpY2UuZG93bmxvYWRGaWxlKGEsZixkKX1zYXZlRGNQYXRoKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oImRlcGxveV9kY19sb2MiLHRoaXMuZGNQYXRoKX1leGVjdXRlSnNvbigpe3ZhciBh''@;'; put 'put ''PXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2EuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgYS5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayhhLmpzb25GaWxlLGEuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvY3x8IiIsdm9pZCAwLHZvaWQgMCwhMCksYS5pc0pzb25TdWJtaXR0ZWQ9''@;'; put 'put ''ITB9Y2F0Y2goZil7bGV0IGQ9IiI7cmV0dXJuIGQ9InN0cmluZyIhPXR5cGVvZiBmLm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkoZikucmVwbGFjZSgvXFwvZ20sIiIpOmYubWVzc2FnZSx2b2lkIGEuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkRlcGxveSBlcnJvciIsYEV4Y2VwdGlvbjog''@;'; put 'put ''XG4gJHsiIiE9PWQ/ZDpmfWApfWEuaXNTdWJtaXR0aW5nSnNvbj0hMX0pKCl9ZXhlY3V0ZVNBUygpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2EuZXhlY3V0aW5nU2NyaXB0PSEwLGEuam9iTG9nPSIiLGEubWFrZURhdGFSZXNwb25zZT0iIjt0cnl7bGV0IGY9eWllbGQgYS5z''@;'; put 'put ''YXNKcy5leGVjdXRlU2NyaXB0KHtmaWxlTmFtZTphLmZpbGVOYW1lLGxpbmVzT2ZDb2RlOmEubGluZXNPZkNvZGUsY29udGV4dE5hbWU6YS5zZWxlY3RlZENvbnRleHR9KTthLmxvZ2dlclNlcnZpY2UubG9nKGYpLCJzdHJpbmciPT10eXBlb2YgZi5sb2cmJihmLmxvZz1KU09OLnBhcnNlKGYu''@;'; put 'put ''bG9nKSksImVycm9yIj09PWYuam9iU3RhdHVzP2FsZXJ0KCJFcnJvciEiKTphLmpvYkxvZz1mLmxvZy5pdGVtcz9mLmxvZy5pdGVtcy5tYXAoZD0+ZC5saW5lKS5qb2luKCJcbiIpOkpTT04uc3RyaW5naWZ5KGYubG9nKSxhLmV4ZWN1dGluZ1NjcmlwdD0hMX1jYXRjaHthLmV4ZWN1dGluZ1Nj''@;'; put 'put ''cmlwdD0hMX19KSgpfWNyZWF0ZURhdGFiYXNlKGE9ITApe2lmKGEpe2xldCBoPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLnNlcnZlclVybCsiL1NBU0pvYkV4ZWN1dGlvbi8/X3Byb2dyYW09Iit0aGlzLmRjQWRhcHRlclNldHRpbmdzPy5hcHBMb2N8fCIvYWRtaW4vbWFrZWRh''@;'; put 'put ''dGEmQURNSU49Iit0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cCsiJkRDUEFUSD0iK3RoaXMuZGNQYXRoKyImX2RlYnVnPTEzMSI7d2luZG93Lm9wZW4oaCwiX2JsYW5rIil9ZWxzZSB0aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMCx0aGlzLnNhc0pzLnJlcXVlc3QoInNlcnZpY2VzL2FkbWlu''@;'; put 'put ''L21ha2VkYXRhIix7ZnJvbWpzOlt7QURNSU46dGhpcy5zZWxlY3RlZEFkbWluR3JvdXAsRENQQVRIOnRoaXMuZGNQYXRofV19LHt1c2VDb21wdXRlQXBpOiExLGNvbnRleHROYW1lOnRoaXMuc2FzSnNDb25maWcuY29udGV4dE5hbWUsZGVidWc6ITB9LCgpPT57dGhpcy5zYXNTZXJ2aWNlLnNo''@;'; put 'put ''b3VsZExvZ2luLm5leHQoITApfSkudGhlbihoPT57dHJ5e3RoaXMubWFrZURhdGFSZXNwb25zZT1KU09OLnN0cmluZ2lmeShoKX1jYXRjaHt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9aH10aGlzLmNyZWF0ZURhdGFiYXNlTG9hZGluZz0hMX0pLmNhdGNoKGg9Pnt0aGlzLmNyZWF0ZURhdGFiYXNl''@;'; put 'put ''TG9hZGluZz0hMTt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGgpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1ofX0pfW5hdmlnYXRlVG9Ib21lKCl7dGhpcy5vbk5hdmlnYXRlVG9Ib21lLmVtaXQoKX12YWxpZGF0ZURlcGxveSgpe3RoaXMuaXNWYWxpZGF0''@;'; put 'put ''aW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvc3RhcnR1cHNlcnZpY2UiLG51bGwpLnRoZW4oYT0+e3RoaXMubG9nZ2VyU2VydmljZS5sb2coYSksdGhpcy52YWxpZGF0aW9uU3RhdGU9YS5zYXNsaWJzPyJzdWNjZXNzIjoiZXJyb3IiLHRoaXMuaXNWYWxpZGF0aW5nPSEx''@;'; put 'put ''fSkuY2F0Y2goYT0+e3RoaXMuaXNWYWxpZGF0aW5nPSExLHRoaXMudmFsaWRhdGlvblN0YXRlPSJlcnJvciJ9KX1kZWxldGVLZXlzKCl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImRlcGxveV9kY19sb2MiKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCkocnQocGwpLHJ0KFJzKSxydCh5MSkscnQoX2NlKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1tYW51YWwtZGVwbG95Il1dLGlucHV0czp7c2FzSnM6InNhc0pzIixzYXNKc0NvbmZpZzoic2FzSnNDb25maWciLGRjQWRhcHRlclNldHRpbmdzOiJkY0FkYXB0''@;'; put 'put ''ZXJTZXR0aW5ncyJ9LG91dHB1dHM6e29uTmF2aWdhdGVUb0hvbWU6Im9uTmF2aWdhdGVUb0hvbWUifSxkZWNsczo5LHZhcnM6Myxjb25zdHM6W1sxLCJjYXJkLWhlYWRlciIsInBvc2l0aW9uLXJlbGF0aXZlIl0sWzEsImQtaW5saW5lLWJsb2NrIiwibWwtMTAiLCJtYi0xMCIsIm10LTAiXSxb''@;'; put 'put ''MSwiYnRuIiwiYnRuLXByaW1hcnkiLCJjbGVhci1tZW1vcnktYnV0dG9uIiwicG9zaXRpb24tYWJzb2x1dGUiLDMsImNsaWNrIl0sWzEsImNhcmQtYmxvY2siXSxbImlkIiwibG9naW5Gb3JtIiwiY2xhc3MiLCJkLW5vbmUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsiaWQiLCJsb2dpbkZvcm0i''@;'; put 'put ''LDEsImQtbm9uZSJdLFsxLCJtYi0xMCJdLFsiZm9yIiwidXNlcm5hbWUiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWzEsIm1iLTEwIiwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWyJ0eXBlIiwidGV4dCIsImlkIiwidXNlcm5hbWUiLDEsImNsci1p''@;'; put 'put ''bnB1dCJdLFsiZm9yIiwicGFzc3dvcmQiLDEsImNsci1jb250cm9sLWxhYmVsIl0sWyJ0eXBlIiwicGFzc3dvcmQiLCJpZCIsInBhc3N3b3JkIiwxLCJjbHItaW5wdXQiXSxbImlkIiwibG9naW5CdG4iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwiZC1ub25lIl0sWzEsImNsci1mb3JtLWNvbnRy''@;'; put 'put ''b2wiXSxbImZvciIsInNlbGVjdC1mdWxsIiwxLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLXNlbGVjdC13cmFwcGVyIl0sWyJuYW1lIiwic2VsZWN0ZWRBZG1pbkdyb3VwIiwiaWQiLCJhZG1pbkdyb3Vwc1NlbGVjdCIsMSwiY2xyLXNl''@;'; put 'put ''bGVjdCIsMywibmdNb2RlbCIsIm5nTW9kZWxPcHRpb25zIiwibmdNb2RlbENoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJuYW1lIiwic2VsZWN0ZWRDb250ZXh0IiwxLCJjbHItc2VsZWN0IiwzLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJuZ01vZGVsQ2hh''@;'; put 'put ''bmdlIl0sWyJ0eXBlIiwiYnV0dG9uIiwiaWQiLCJjb250ZXh0cy1idG4iLDEsImJ0biIsImJ0bi1pY29uIiwzLCJjbGljayJdLFsic2hhcGUiLCJwbGF5Il0sWzEsImQtZmxleCJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiLCJtci0xMCJdLFsiZm9yIiwiZGNsb2MiLDEsIm10LTIw''@;'; put 'put ''IiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbIm5hbWUiLCJkY1BhdGgiLCJ0eXBlIiwidGV4dCIsImlkIiwiZGNsb2MiLDEsImNsci1pbnB1dCIsMywibmdNb2RlbCIsIm5nTW9kZWxPcHRpb25zIiwibmdNb2RlbENoYW5nZSIsImZvY3Vzb3V0Il0sWzEsIm10LTEwIl0sWzEsImQtZmxleCIsImZs''@;'; put 'put ''ZXgtY29sdW1uIl0sWyJ0eXBlIiwiZmlsZSIsMywiY2xpY2siLCJjaGFuZ2UiXSxbMSwibXQtMjAiLCJkLWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiIiwxLCJtdC0wIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxbImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4taWNvbiBtaW4t''@;'; put 'put ''dy0wIHctNDAiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJpZCIsImRlcGxveSIsMSwibXQtMCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMTAiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFszLCJ2YWx1ZSJdLFsxLCJidG4iLCJidG4tc20iLCJi''@;'; put 'put ''dG4taWNvbiIsIm1pbi13LTAiLCJ3LTQwIiwzLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsxLCJtYi0wIiwibXQtMTAiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0wIiwibXItMjAiLDMsImNsaWNrIl0sWyJjbGFzcyIsImxvZy13cmFwcGVyIiw0LCJuZ0lmIl0sWzEsImJ0''@;'; put 'put ''biIsImJ0bi1wcmltYXJ5IiwibXQtMTUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInZhbGlkYXRpb24tYmFyIiw0LCJuZ0lmIl0sWzEsImxvZy13cmFwcGVyIl0sWzEsInZhbGlkYXRpb24tYmFyIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwiaXMtZXJyb3IiXSxbInNoYXBlIiwi''@;'; put 'put ''Y2hlY2stY2lyY2xlIiwxLCJpcy1zdWNjZXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSxZZSgxLCIgQ29uZmlndXJhdG9yICIpLHllKDIsInAiLDEpLFllKDMpLENlKCkseWUoNCwiYnV0dG9uIiwyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGYuZGVsZXRlS2V5cygpfSksWWUoNSwiIENsZWFyIG1lbW9yeSAiKSxDZSgpKCkseWUoNiwiZGl2IiwzKSx0dCg3LF9ZZSwxNSwwLCJkaXYiLDQpLHR0KDgsUlllLDQ5LDIyLCJuZy1jb250YWluZXIiLDUpLENlKCkpLDImYSYmKFNlKDMpLHdyKCJBcHAgTG9jYXRpb246ICIsZi5hcHBMb2Ms''@;'; put 'put ''IiIpLFNlKDQpLFJlKCJuZ0lmIixmLm5lZWRzTG9naW4pLFNlKDEpLFJlKCJuZ0lmIiwhZi5uZWVkc0xvZ2luKSl9LGRlcGVuZGVuY2llczpbUmEsJGkscDQsUzEsTTEsaXMsTDAsV2EsaDQsemEsQ2QsUmwsSmMsSWgsZWwsTW5lXSxzdHlsZXM6WyIuY2xlYXItbWVtb3J5LWJ1dHRvbltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17cmlnaHQ6MTBweDt0b3A6MnB4fSJdfSksbH0pKCk7ZnVuY3Rpb24gUFllKGwsYyl7MSZsJiYoV3IoMCkseWUoMSwic3BhbiIsMTkpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkseWUoMywicCIpLFllKDQsIkRlcGxveWluZy4uLiIpLENlKCksR3IoKSl9ZnVuY3Rp''@;'; put 'put ''b24gRlllKGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsMzApfWZ1bmN0aW9uIEhZZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDMxKX1mdW5jdGlvbiBOWWUobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwzMCl9ZnVuY3Rpb24gVlllKGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsMzEp''@;'; put 'put ''fWZ1bmN0aW9uIEJZZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMjIpLHR0KDEsTlllLDEsMCwiY2xyLWljb24iLDIzKSx0dCgyLFZZZSwxLDAsImNsci1pY29uIiwyNCkseWUoMywicCIpLFllKDQsIkNyZWF0ZSBkYXRhYmFzZSIpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEp''@;'; put 'put ''LFJlKCJuZ0lmIixhLmF1dG9EZXBsb3lTdGF0dXMucnVuTWFrZURhdGEpLFNlKDEpLFJlKCJuZ0lmIiwhMT09PWEuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSl9fWZ1bmN0aW9uIGpZZShsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDMxKX1mdW5jdGlvbiB6WWUobCxjKXtpZigxJmwp''@;'; put 'put ''e2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJwIiwyMCksWWUoMiwiRG9uZSIpLENlKCksdG4oMywiaHIiLDIxKSx5ZSg0LCJkaXYiLDIyKSx0dCg1LEZZZSwxLDAsImNsci1pY29uIiwyMyksdHQoNixIWWUsMSwwLCJjbHItaWNvbiIsMjQpLHllKDcsInAiKSxZZSg4LCJEZXBsb3kgU0FTIEpv''@;'; put 'put ''YnMiKSxDZSgpKCksdHQoOSxCWWUsNSwyLCJkaXYiLDI1KSx0bigxMCwiaHIiLDIxKSx5ZSgxMSwiZGl2IiwyNikoMTIsImJ1dHRvbiIsMjcpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikubmF2aWdhdGVUb0hvbWUoKSl9KSx0dCgxMyxqWWUsMSwwLCJjbHIt''@;'; put 'put ''aWNvbiIsMjQpLFllKDE0LCIgTEFVTkNIIC8gQ09ORklHVVJFICIpLENlKCkseWUoMTUsImJ1dHRvbiIsMjgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBadChkLmRvd25sb2FkRmlsZShkLm1ha2VEYXRhUmVzcG9uc2UsImNyZWF0ZS1kYXRhYmFz''@;'; put 'put ''ZS1sb2ciLCJ0eHQiKSl9KSxZZSgxNiwiIERvd25sb2FkIGxvZyAiKSxDZSgpKCksdG4oMTcsImhyIiwyMSkseWUoMTgsImRpdiIsMjYpKDE5LCJidXR0b24iLDI5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5hdXRvZGVwbG95aW5nPSExLFp0''@;'; put 'put ''KGQuYXV0b2RlcGxveURvbmU9ITEpfSksWWUoMjAsIiBDbG9zZSAiKSxDZSgpLHllKDIxLCJidXR0b24iLDI5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLm9wZW5TYXNSZXF1ZXN0c01vZGFsKCkpfSksWWUoMjIsIiBTQVMgUmVxdWVzdHMgIiksQ2UoKSgp''@;'; put 'put ''LEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDUpLFJlKCJuZ0lmIixhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2spLFNlKDEpLFJlKCJuZ0lmIiwhYS5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrKSxTZSgzKSxSZSgibmdJZiIsbnVsbCE9PWEuYXV0''@;'; put 'put ''b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSksU2UoNCksUmUoIm5nSWYiLCExPT09YS5hdXRvRGVwbG95U3RhdHVzLmRlcGxveVNlcnZpY2VQYWNrfHwhMT09PWEuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSl9fWZ1bmN0aW9uIFVZZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTYp''@;'; put 'put ''KDEsImRpdiIsMTcpLHR0KDIsUFllLDUsMCwibmctY29udGFpbmVyIiwxOCksdHQoMyx6WWUsMjMsNCwibmctY29udGFpbmVyIiwxOCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgyKSxSZSgibmdJZiIsIWEuYXV0b2RlcGxveURvbmUpLFNlKDEpLFJlKCJuZ0lmIixhLmF1dG9kZXBs''@;'; put 'put ''b3lEb25lKX19bGV0IFpZZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgpe3RoaXMuZXZlbnRTZXJ2aWNlPWEsdGhpcy5kZXBsb3lTZXJ2aWNlPWYsdGhpcy5zYXNTZXJ2aWNlPWQsdGhpcy5sb2dnZXJTZXJ2aWNlPWgsdGhpcy5zYXNKc0NvbmZpZz1uZXcgdjEuU0FTanNDb25m''@;'; put 'put ''aWcsdGhpcy5hcHBMb2M9IiIsdGhpcy5kY1BhdGg9IiIsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IiIsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyB4cix0aGlzLm1ha2VEYXRhUmVzcG9uc2U9IiIsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuYXV0b2RlcGxveWluZz0hMSx0aGlzLmF1dG9k''@;'; put 'put ''ZXBsb3lEb25lPSExLHRoaXMucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSExLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMSx0aGlzLnJlY3JlYXRlRGF0YWJhc2U9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhpcy5hdXRvRGVwbG95U3Rh''@;'; put 'put ''dHVzPXtkZXBsb3lTZXJ2aWNlUGFjazpudWxsLHJ1bk1ha2VEYXRhOm51bGx9fW5nT25Jbml0KCl7fWV4ZWN1dGVKc29uKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5hdXRvZGVwbG95aW5nPSEwLGEuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgYS5zYXNKcy5k''@;'; put 'put ''ZXBsb3lTZXJ2aWNlUGFjayhhLmpzb25GaWxlLGEuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvYyx2b2lkIDAsdm9pZCAwLCEwKSxhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITAsYS5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2goZil7bGV0IGQ9IiI7cmV0dXJuIGQ9InN0''@;'; put 'put ''cmluZyIhPXR5cGVvZiBmLm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkoZikucmVwbGFjZSgvXFwvZ20sIiIpOmYubWVzc2FnZSxhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITEsYS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9u''@;'; put 'put ''OiBcbiAkeyIiIT09ZD9kOmZ9YCksYS5hdXRvZGVwbG95aW5nPSExLHZvaWQoYS5hdXRvZGVwbG95RG9uZT0hMSl9YS5pc1N1Ym1pdHRpbmdKc29uPSExLGEucmVjcmVhdGVEYXRhYmFzZT9hLmNyZWF0ZURhdGFiYXNlKCk6YS5hdXRvZGVwbG95RG9uZT0hMH0pKCl9Y3JlYXRlRGF0YWJhc2Uo''@;'; put 'put ''KXt0aGlzLnNhc0pzLnJlcXVlc3QoInNlcnZpY2VzL2FkbWluL21ha2VkYXRhIix7ZnJvbWpzOlt7QURNSU46dGhpcy5zZWxlY3RlZEFkbWluR3JvdXAsRENQQVRIOnRoaXMuZGNQYXRofV19LHt1c2VDb21wdXRlQXBpOiExLGNvbnRleHROYW1lOnRoaXMuc2FzSnNDb25maWcuY29udGV4dE5h''@;'; put 'put ''bWUsZGVidWc6ITB9LCgpPT57dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihkPT57dGhpcy5hdXRvZGVwbG95RG9uZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGQpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1kfXRo''@;'; put 'put ''aXMuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT0hIShkLnJlc3VsdCYmZC5yZXN1bHQubGVuZ3RoPjApfSkuY2F0Y2goZD0+e3RoaXMuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT0hMSx0aGlzLmF1dG9kZXBsb3lEb25lPSEwO3RyeXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9SlNP''@;'; put 'put ''Ti5zdHJpbmdpZnkoZCl9Y2F0Y2h7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPWR9fSl9ZG93bmxvYWRGaWxlKGEsZixkPSJ0eHQiKXt0aGlzLmRlcGxveVNlcnZpY2UuZG93bmxvYWRGaWxlKGEsZixkKX1vbkpzb25GaWxlQ2hhbmdlKGEpe3ZhciBmPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigp''@;'; put 'put ''e2xldCBkPWEudGFyZ2V0LmZpbGVzWzBdO2YuanNvbkZpbGU9eWllbGQgZi5kZXBsb3lTZXJ2aWNlLnJlYWRGaWxlKGQpfSkoKX1yZWNyZWF0ZURhdGFiYXNlQ2xpY2tlZChhKXshMD09PWEudGFyZ2V0LmNoZWNrZWQmJih0aGlzLnJlY3JlYXRlRGF0YWJhc2VNb2RhbD0hMCl9Y2xlYXJVcGxv''@;'; put 'put ''YWRJbnB1dChhKXt0aGlzLmRlcGxveVNlcnZpY2UuY2xlYXJVcGxvYWRJbnB1dChhKX1vcGVuU2FzUmVxdWVzdHNNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9wZW5SZXF1ZXN0c01vZGFsKCl9bmF2aWdhdGVUb0hvbWUoKXt0aGlzLm9uTmF2aWdhdGVUb0hvbWUuZW1pdCgpfX1yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChScykscnQoX2NlKSxydChwbCkscnQoeTEpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWF1dG9tYXRpYy1kZXBsb3kiXV0saW5wdXRzOntzYXNKczoic2FzSnMiLHNhc0pzQ29uZmln''@;'; put 'put ''OiJzYXNKc0NvbmZpZyIsZGNBZGFwdGVyU2V0dGluZ3M6ImRjQWRhcHRlclNldHRpbmdzIixhcHBMb2M6ImFwcExvYyIsZGNQYXRoOiJkY1BhdGgiLHNlbGVjdGVkQWRtaW5Hcm91cDoic2VsZWN0ZWRBZG1pbkdyb3VwIn0sb3V0cHV0czp7b25OYXZpZ2F0ZVRvSG9tZToib25OYXZpZ2F0ZVRv''@;'; put 'put ''SG9tZSJ9LGRlY2xzOjQ2LHZhcnM6MTAsY29uc3RzOltbImNsYXNzIiwiYXV0by1kZXBsb3kiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJteS0xNSJdLFsiZm9yIiwiZGNsb2MiLDEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250''@;'; put 'put ''YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbMSwibXQtMCJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNsaWNrIl0sWzEsImJ0bi1hdXRvZGVwbG95IiwiYnRuIiwiYnRuLXByaW1h''@;'; put 'put ''cnkiLCJkLWlubGluZS1ibG9jayIsIm1yLTEwIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWzEsImJ0bi1hdXRvZGVwbG95IiwiYnRuIiwiYnRuLXByaW1hcnkiLCJkLWlubGluZS1ibG9jayIsIm1yLTEwIiwzLCJjbGljayJdLFsidHlwZSIsImZpbGUiLCJoaWRkZW4iLCIiLDMsImNsaWNrIiwi''@;'; put 'put ''Y2hhbmdlIl0sWyJ1cGxvYWRKc29uQXV0byIsIiJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJi''@;'; put 'put ''dG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwiYXV0by1kZXBsb3kiXSxbMSwic3Bpbm5lci1ib3giXSxbNCwibmdJZiJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1tZCJdLFsxLCJtLTAiLCJhbGlnbi1zZWxmLXN0YXJ0Il0sWzEsInctMTAwIl0sWzEsImRlcGxveS1z''@;'; put 'put ''dGF0dXMtcm93Il0sWyJjbGFzcyIsImRlcGxveS1zdWNjZXNzIiwic2hhcGUiLCJzdWNjZXNzLXN0YW5kYXJkIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRlcGxveS1lcnJvciIsInNoYXBlIiwidGltZXMtY2lyY2xlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRlcGxveS1zdGF0dXMtcm93Iiw0LCJu''@;'; put 'put ''Z0lmIl0sWzEsImJ1dHRvbnMiXSxbMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtdC0xNSIsIm1yLTAiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5LW91dGxpbmUiLCJtdC0xNSIsIm1yLTAiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5LW91dGxpbmUiLCJtdC0xNSIs''@;'; put 'put ''Im1yLTAiLCJhbGlnbi1zZWxmLWVuZCIsMywiY2xpY2siXSxbInNoYXBlIiwic3VjY2Vzcy1zdGFuZGFyZCIsMSwiZGVwbG95LXN1Y2Nlc3MiXSxbInNoYXBlIiwidGltZXMtY2lyY2xlIiwxLCJkZXBsb3ktZXJyb3IiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXtpZigxJmEpe2NvbnN0IGQ9''@;'; put 'put ''Wm4oKTt0dCgwLFVZZSw0LDIsImRpdiIsMCkseWUoMSwiaDQiLDEpLFllKDIsIlZpeWEgRGVwbG95IiksQ2UoKSx0bigzLCJociIpLHllKDQsImxhYmVsIiwyKSxZZSg1LCJBcHAgTG9jIiksQ2UoKSx5ZSg2LCJkaXYiLDMpKDcsImRpdiIsNCkoOCwicCIsNSksWWUoOSksQ2UoKSgpKCkseWUo''@;'; put 'put ''MTAsImxhYmVsIiwyKSxZZSgxMSwiREMgTG9jIiksQ2UoKSx5ZSgxMiwiZGl2IiwzKSgxMywiZGl2Iiw0KSgxNCwicCIsNSksWWUoMTUpLENlKCkoKSgpLHllKDE2LCJsYWJlbCIsMiksWWUoMTcsIlNBUyBBZG1pbiBncm91cCIpLENlKCkseWUoMTgsImRpdiIsMykoMTksImRpdiIsNCkoMjAs''@;'; put 'put ''InAiLDUpLFllKDIxKSxDZSgpKCkoKSx5ZSgyMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgyMywiaW5wdXQiLDYpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5yZWNyZWF0ZURhdGFiYXNlPW19KSgiY2xpY2siLGZ1bmN0aW9uKG0pe3JldHVybiBmLnJlY3JlYXRl''@;'; put 'put ''RGF0YWJhc2VDbGlja2VkKG0pfSksQ2UoKSx5ZSgyNCwibGFiZWwiKSxZZSgyNSwiUmVjcmVhdGUgZGF0YWJhc2UiKSxDZSgpKCksdG4oMjYsImhyIikseWUoMjcsImJ1dHRvbiIsNyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmV4ZWN1dGVKc29uKCl9KSxZZSgyOCksQ2UoKSx5''@;'; put 'put ''ZSgyOSwiYnV0dG9uIiw4KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGQpLFp0KFFpKDMyKS5jbGljaygpKX0pLFllKDMwLCIgVXBsb2FkIGRpZmZlcmVudCBmaWxlIHRvIGRlcGxveVxuIiksQ2UoKSx5ZSgzMSwiaW5wdXQiLDksMTApLEV0KCJjbGljayIsZnVuY3Rpb24obSl7''@;'; put 'put ''cmV0dXJuIGYuY2xlYXJVcGxvYWRJbnB1dChtKX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKG0pe3JldHVybiBmLm9uSnNvbkZpbGVDaGFuZ2UobSl9KSxDZSgpLHllKDMzLCJjbHItbW9kYWwiLDExKSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5yZWNyZWF0ZURh''@;'; put 'put ''dGFiYXNlTW9kYWw9bX0pLHllKDM0LCJoMyIsMTIpLFllKDM1LCJXYXJuaW5nIiksQ2UoKSx5ZSgzNiwiZGl2IiwxMyksWWUoMzcsIiBUaGlzIGFjdGlvbiB3aWxsIHJlY3JlYXRlIHRoZSBkYXRhYmFzZSAoaWYgaXQgZXhpc3RzKS4gRm9yIGFuIGluaXRpYWwgZGVwbG95bWVudCwgdGhpcyBp''@;'; put 'put ''cyBleHBlY3RlZC4gSWYgdGhpcyBpcyBhIHJlLWRlcGxveW1lbnQsIHlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIHRhYmxlcyBpbiAiKSx5ZSgzOCwic3Ryb25nIiksWWUoMzkpLENlKCksWWUoNDAsIi4gIiksQ2UoKSx5ZSg0MSwiZGl2IiwxNCkoNDIsImJ1dHRvbiIsMTUpLEV0KCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9ITEsZi5yZWNyZWF0ZURhdGFiYXNlPSExfSksWWUoNDMsIiBDYW5jZWwgIiksQ2UoKSx5ZSg0NCwiYnV0dG9uIiwxNSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLnJlY3JlYXRlRGF0YWJhc2VNb2Rh''@;'; put 'put ''bD0hMSxmLnJlY3JlYXRlRGF0YWJhc2U9ITB9KSxZZSg0NSwiIE9rICIpLENlKCkoKSgpfTImYSYmKFJlKCJuZ0lmIixmLmF1dG9kZXBsb3lpbmcpLFNlKDkpLGFyKGYuYXBwTG9jKSxTZSg2KSxhcihmLmRjUGF0aCksU2UoNiksYXIoZi5zZWxlY3RlZEFkbWluR3JvdXApLFNlKDIpLFJlKCJu''@;'; put 'put ''Z01vZGVsIixmLnJlY3JlYXRlRGF0YWJhc2UpLFNlKDQpLFJlKCJkaXNhYmxlZCIsIWYuanNvbkZpbGUpLFNlKDEpLHdyKCIgRGVwbG95ICIsZi5qc29uRmlsZT8iIjoiKGpzb24gZmlsZSBpcyBub3QgYXZhaWxhYmxlKSIsIlxuIiksU2UoNSksUmUoImNsck1vZGFsT3BlbiIsZi5yZWNyZWF0''@;'; put 'put ''ZURhdGFiYXNlTW9kYWwpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoNiksYXIoZi5kY1BhdGgpKX0sZGVwZW5kZW5jaWVzOlskaSxSMCxXYSx6YSxSbCxNYyxrYyxlbCxCMCxWMF0sc3R5bGVzOlsiLmF1dG8tZGVwbG95W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjQpO3otaW5kZXg6MTAwfS5zcGlubmVyLWJveFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NDAwcHg7cGFkZGluZzoyMHB4O2JvcmRlci1yYWRp''@;'; put 'put ''dXM6M3B4O2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaGFkb3c6MXB4IDFweCA4cHggIzAwMDAwMDgyfS5zcGlubmVyLWJveFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3dpZHRoOjEwMCV9LmRlcGxveS1zdGF0dXMtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLXNlbGY6''@;'; put 'put ''ZmxleC1zdGFydH0uZGVwbG95LXN0YXR1cy1yb3dbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAwIDEwcHh9LmRlcGxveS1zdWNjZXNzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNmVjZjQ0fS5kZXBsb3ktZXJyb3JbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde2NvbG9yOiNlNzRjM2N9LmRlcGxveS11bmRldGVybWluYXRlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2NhY2FjYX1ocltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMjcwNTg4MjM1Myl9Il19KSxsfSko''@;'; put 'put ''KTtmdW5jdGlvbiBZWWUobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDE1KSx0bigxLCJwcm9ncmVzcyIpLENlKCkpfWZ1bmN0aW9uIFdZZShsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsMTYpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgidmFsdWUiLGEuR1JPVVBO''@;'; put 'put ''QU1FKSxTZSgxKSwkdSgiICIsYS5HUk9VUE5BTUUsIiAtICIsYS5HUk9VUERFU0MsIiAiKX19bGV0IEdZZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLnNhc2pzU2VydmljZT1mLHRoaXMubG9jYXRpb249ZCx0aGlzLnNhc0pzQ29uZmln''@;'; put 'put ''PW5ldyB2MS5TQVNqc0NvbmZpZyx0aGlzLm9uTmF2aWdhdGVUb0hvbWU9bmV3IHhyLHRoaXMuZGNEaXJlY3Rvcnk9IiIsdGhpcy5kY0FkbWluR3JvdXA9IkRDREVGQVVMVCIsdGhpcy5NRVRBUEVSU09OPSJuL2EiLHRoaXMuTUVUQVVTRVI9Im4vYSIsdGhpcy5TWVNVU0VSSUQ9Im4vYSIsdGhp''@;'; put 'put ''cy5TWVNIT1NUTkFNRT0ibi9hIix0aGlzLlNZU1ZMT05HPSJuL2EiLHRoaXMuZGNBZG1pbkdyb3VwTGlzdD1bXSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5zaG93TG9nb3V0PSExLHRoaXMudG1wRGlyZWN0b3JpZXM9e2xpbnV4OiIvdG1wL0RhdGFDb250cm9sbGVyIix3aW5kb3dzOiJDOlxcRGF0''@;'; put 'put ''YUNvbnRyb2xsZXIifX1uZ09uSW5pdCgpe3RoaXMuZ2V0VXNlckdyb3VwcygpLHRoaXMuZ2V0U2VydmVySW5mbygpfWdldFNlcnZlckluZm8oKXt0aGlzLnNhc2pzU2VydmljZS5nZXRTZXJ2ZXJJbmZvKCkuc3Vic2NyaWJlKGE9PnsiZGVza3RvcCIhPT1hLm1vZGUmJih0aGlzLnNob3dMb2dv''@;'; put 'put ''dXQ9ITApfSl9Z2V0VXNlckdyb3Vwcygpe3RoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VyZ3JvdXBzYnltZW1iZXIiLG51bGwpLnRoZW4oYT0+e3RoaXMuTUVUQVBFUlNPTj1hLk1GX0dFVFVTRVIsdGhpcy5TWVNVU0VSSUQ9YS5TWVNVU0VSSUQs''@;'; put 'put ''dGhpcy5TWVNIT1NUTkFNRT1hLlNZU0hPU1ROQU1FLHRoaXMuU1lTVkxPTkc9YS5TWVNWTE9ORyx0aGlzLmRjRGlyZWN0b3J5PXRoaXMudG1wRGlyZWN0b3JpZXNbWyJMIiwiSCIsIkEiLCJTIl0uaW5jbHVkZXMoYS5TWVNTQ1BMLnN1YnN0cmluZygwLDEpKT8ibGludXgiOiJ3aW5kb3dzIl0s''@;'; put 'put ''dGhpcy5kY0FkbWluR3JvdXBMaXN0PWEuZ3JvdXBzLHRoaXMuZGNBZG1pbkdyb3VwPXRoaXMuZGNBZG1pbkdyb3VwTGlzdFswXS5HUk9VUE5BTUUsdGhpcy5sb2FkaW5nPSExfSxhPT57dGhpcy5sb2FkaW5nPSExfSl9bWFrZURhdGEoKXtsZXQgZj10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0''@;'; put 'put ''aW9uUGF0aCgpO2NvbnN0IGQ9dGhpcy5zYXNKc0NvbmZpZy5hcHBMb2M7bGV0IGg9dGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJVcmwsbT10aGlzLmRjRGlyZWN0b3J5O3RoaXMuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PVh1LkQuU2FzanM/dGhpcy5zYXNTZXJ2aWNlLnNhc2pzTWFrZWRhdGFD''@;'; put 'put ''aGVja2luZygpLnRoZW4oTz0+e08mJih0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSgiLyIpLGxvY2F0aW9uLnJlbG9hZCgpKX0pOnRoaXMuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PVh1LkQuU2FzOSYmKGg9IiIsZj13aW5kb3cubG9jYXRpb24ub3JpZ2luK2YrIi8iLG09ZW5jb2RlVVJJ''@;'; put 'put ''Q29tcG9uZW50KHRoaXMuZGNEaXJlY3RvcnkpKSx3aW5kb3cub3BlbihgJHtofHwiIn0ke2Z9P19wcm9ncmFtPSR7ZH0vc2VydmljZXMvYWRtaW4vbWFrZWRhdGEmYWRtaW49JHt0aGlzLmRjQWRtaW5Hcm91cH0mcGF0aD0ke219IGAsIl9ibGFuayIpfWxvZ291dCgpe3RoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZS5sb2dvdXQoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocGwpLHJ0KE1pZSkscnQoZ2QpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXNhc2pzLWNvbmZpZ3VyYXRvciJdXSxpbnB1dHM6e3Nhc0pzOiJzYXNK''@;'; put 'put ''cyIsc2FzSnNDb25maWc6InNhc0pzQ29uZmlnIixkY0FkYXB0ZXJTZXR0aW5nczoiZGNBZGFwdGVyU2V0dGluZ3MifSxvdXRwdXRzOntvbk5hdmlnYXRlVG9Ib21lOiJvbk5hdmlnYXRlVG9Ib21lIn0sZGVjbHM6NDEsdmFyczo5LGNvbnN0czpbWyJjbGFzcyIsInRoaW5Qcm9ncmVzcyBwcm9n''@;'; put 'put ''cmVzU3RhdGljIHByb2dyZXNzIGxvb3AiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJteS0xNSJdLFsxLCJsaWdodCJdLFsxLCJtLTAiXSxbMSwibS0wIiwibXQtMTAiXSxbMSwibXQtMjAiLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJtYi0xMCIsImNsci1jb250cm9sLWNvbnRhaW5l''@;'; put 'put ''ciJdLFsxLCJjbHItaW5wdXQtd3JhcHBlciJdLFsicGxhY2Vob2xkZXIiLCJUeXBlIGluIGRpcmVjdG9yeSIsMSwiY2xyLWlucHV0IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFsxLCJtYi0xMCIsIm10LTAiLCJ3LTUwdnciXSxbImNsclNlbGVjdCIsIiIsMywibmdNb2RlbCIsIm5n''@;'; put 'put ''TW9kZWxDaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjbHItZmxleCJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsIm10LTE1IiwidGV4dC1jZW50ZXIiLDMsImNsaWNrIl0sWzEsImNhcmQtdGV4dCIsInBiLTEwIl0sWzEsInRoaW5Qcm9ncmVzcyIsInByb2dy''@;'; put 'put ''ZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbMywidmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih0dCgwLFlZZSwyLDAsImRpdiIsMCkseWUoMSwiaDQiLDEpLFllKDIsIlNhc2pzIERlcGxveSIpLENlKCksdG4oMywiaHIiLDIpLHllKDQsInAiLDMpLFllKDUsIiBU''@;'; put 'put ''byBjb25maWd1cmUgRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5LCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRldGFpbHM6XG4iKSxDZSgpLHllKDYsInAiLDQpLFllKDcsIiBQbGVhc2Ugc3BlY2lmeSBhIHBoeXNpY2FsIGRpcmVjdG9yeSBiZWxvdywgdG8gd2hpY2ggdXNlciAi''@;'; put 'put ''KSx5ZSg4LCJzdHJvbmciKSxZZSg5KSxDZSgpLFllKDEwLCIgY2FuIHdyaXRlLCBvbiBiZWhhbGYgb2YgRGF0YSBDb250cm9sbGVyOlxuIiksQ2UoKSx5ZSgxMSwibGFiZWwiLDUpLFllKDEyLCJEQyBEaXJlY3RvcnkiKSxDZSgpLHllKDEzLCJkaXYiLDYpKDE0LCJkaXYiLDcpKDE1LCJpbnB1''@;'; put 'put ''dCIsOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmRjRGlyZWN0b3J5PWh9KSxDZSgpKCkoKSx5ZSgxNiwicCIsNCksWWUoMTcsIiBCZWxvdyBhcmUgdGhlIGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIHlvdSBiZWxvbmcuIFRoZSBncm91cCB5b3Ugc2VsZWN0IHdp''@;'; put 'put ''bGwgYmVjb21lIHRoZSBEYXRhIENvbnRyb2xsZXIgQWRtaW4gR3JvdXAsIGFuZCBldmVyeW9uZSBpbiBpdCB3aWxsIGhhdmUgdW5yZXN0cmljdGVkIGFjY2VzcyB0byBEYXRhIENvbnRyb2xsZXIuXG4iKSxDZSgpLHllKDE4LCJsYWJlbCIsNSksWWUoMTksIkRhdGEgQ29udHJvbGxlciBBZG1p''@;'; put 'put ''biBncm91cCIpLENlKCkseWUoMjAsImNsci1zZWxlY3QtY29udGFpbmVyIiw5KSgyMSwic2VsZWN0IiwxMCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmRjQWRtaW5Hcm91cD1ofSksdHQoMjIsV1llLDIsMywib3B0aW9uIiwxMSksQ2UoKSgpLHllKDIzLCJwIiw0''@;'; put 'put ''KSxZZSgyNCwiIE5vdywgY3JlYXRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFuZCBkZXBsb3kgdGhlIGNvbnRyb2wgbGlicmFyeSB1c2luZyB0aGUgYWRtaW4gZ3JvdXAgc2VsZWN0ZWQgYWJvdmU6XG4iKSxDZSgpLHllKDI1LCJkaXYiLDEyKSgyNiwiYnV0dG9uIiwxMyksRXQoImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBmLm1ha2VEYXRhKCl9KSxZZSgyNywiIFNVQk1JVCAiKSxDZSgpKCksdG4oMjgsImhyIiwyKSx5ZSgyOSwiZGl2IiwxNCkoMzAsInAiKSxZZSgzMSwiWW91IGFyZSBjb25uZWN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNyZWRlbnRpYWxzOiIpLENlKCkseWUoMzIs''@;'; put 'put ''InVsIikoMzMsImxpIiksWWUoMzQpLENlKCkseWUoMzUsImxpIiksWWUoMzYpLENlKCkseWUoMzcsImxpIiksWWUoMzgpLENlKCkseWUoMzksImxpIiksWWUoNDApLENlKCkoKSgpKSwyJmEmJihSZSgibmdJZiIsZi5sb2FkaW5nKSxTZSg5KSxhcihmLlNZU1VTRVJJRCksU2UoNiksUmUoIm5n''@;'; put 'put ''TW9kZWwiLGYuZGNEaXJlY3RvcnkpLFNlKDYpLFJlKCJuZ01vZGVsIixmLmRjQWRtaW5Hcm91cCksU2UoMSksUmUoIm5nRm9yT2YiLGYuZGNBZG1pbkdyb3VwTGlzdCksU2UoMTIpLHdyKCJNRVRBUEVSU09OOiAiLGYuTUVUQVBFUlNPTiwiIiksU2UoMiksd3IoIlNZU1VTRVJJRDogIixmLlNZ''@;'; put 'put ''U1VTRVJJRCwiIiksU2UoMiksd3IoIlNZU0hPU1ROQU1FOiAiLGYuU1lTSE9TVE5BTUUsIiIpLFNlKDIpLHdyKCJTWVNWTE9ORzogIixmLlNZU1ZMT05HLCIiKSl9LGRlcGVuZGVuY2llczpbUmEsJGksUzEsTTEsaXMsTDAsV2EsemEsZWwsbTcscDddLHN0eWxlczpbIi5jbHItY29udHJvbC1j''@;'; put 'put ''b250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjUwdnd9LmNsci1pbnB1dC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNsci1pbnB1dC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS50aGluUHJvZ3Jl''@;'; put 'put ''c3NbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MDtyaWdodDowO3dpZHRoOnVuc2V0O2hlaWdodDoxcHg7bWFyZ2luLXRvcDowIWltcG9ydGFudH0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcnt0b3A6MH0iXX0pLGx9KSgpO2Z1bmN0aW9uICRZZShsLGMpe2lmKDEmbCl7''@;'; put 'put ''Y29uc3QgYT1abigpO3llKDAsImRpdiIsNCkoMSwiZGl2Iiw1KSxZZSgyLCJUZXJtcyBhbmQgQ29uZGl0aW9ucyIpLENlKCkseWUoMywiZGl2Iiw2KSg0LCJkaXYiLDcpKDUsInAiKSxZZSg2LCIgVGhlIERlbW8gdmVyc2lvbiBvZiBEYXRhIENvbnRyb2xsZXIgaXMgZnJlZSBmb3IgRVZBTFVB''@;'; put 'put ''VElPTiBwdXJwb3NlcyBvbmx5LiBCZWZvcmUgcHJvY2VlZGluZyB3aXRoIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBjb25maXJtIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwgYW5kIGFncmVlZCB0byB0aGUgIikseWUoNywiYSIsOCksWWUoOCwiRGF0YSBDb250cm9sbGVyIGZvciBT''@;'; put 'put ''QVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50IiksQ2UoKSxZZSg5LCIuICIpLENlKCkoKSx0bigxMCwiaHIiLDkpLHllKDExLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDEyLCJpbnB1dCIsMTApLEV0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkudGVybXNBZ3Jl''@;'; put 'put ''ZUNoYW5nZSgpKX0pLENlKCkseWUoMTMsImxhYmVsIiksWWUoMTQsIkkgaGF2ZSByZWFkIGFuZCBhZ3JlZSB0byB0aGUgdGVybXMgb2YgdGhlICIpLHllKDE1LCJhIiw4KSxZZSgxNiwiRGF0YSBDb250cm9sbGVyIGZvciBTQVNceGE5IEV2YWx1YXRpb24gQWdyZWVtZW50IiksQ2UoKSgpKCko''@;'; put 'put ''KSgpfX1mdW5jdGlvbiBLWWUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDE1KSgxLCJhcHAtYXV0b21hdGljLWRlcGxveSIsMTYpLEV0KCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgzKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSks''@;'; put 'put ''Q2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSxSZSgic2FzSnMiLGEuc2FzSnMpKCJzYXNKc0NvbmZpZyIsYS5zYXNKc0NvbmZpZykoImRjQWRhcHRlclNldHRpbmdzIixhLmRjQWRhcHRlclNldHRpbmdzKSgiYXBwTG9jIixhLmFwcExvYykoImRjUGF0aCIsYS5kY1BhdGgpKCJz''@;'; put 'put ''ZWxlY3RlZEFkbWluR3JvdXAiLGEuc2VsZWN0ZWRBZG1pbkdyb3VwKX19ZnVuY3Rpb24gcVllKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwxNykoMSwiYXBwLW1hbnVhbC1kZXBsb3kiLDE4KSxFdCgib25OYXZpZ2F0ZVRvSG9tZSIsZnVuY3Rpb24oKXtyZXR1cm4gVXQo''@;'; put 'put ''YSksWnQoR2UoMykub25OYXZpZ2F0ZVRvSG9tZSgpKX0pLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMSksUmUoInNhc0pzIixhLnNhc0pzKSgic2FzSnNDb25maWciLGEuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsYS5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0''@;'; put 'put ''aW9uIFhZZShsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsS1llLDIsNiwiZGl2IiwxMyksdHQoMixxWWUsMiwzLCJkaXYiLDE0KSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLGEuYXV0b2RlcGxveSksU2UoMSksUmUoIm5nSWYiLCFhLmF1dG9kZXBsb3kpfX1mdW5j''@;'; put 'put ''dGlvbiBKWWUobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJkaXYiLDE1KSgyLCJhcHAtc2FzanMtY29uZmlndXJhdG9yIiwxOCksRXQoIm9uTmF2aWdhdGVUb0hvbWUiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxD''@;'; put 'put ''ZSgpKCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoMik7U2UoMiksUmUoInNhc0pzIixhLnNhc0pzKSgic2FzSnNDb25maWciLGEuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsYS5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIFFZZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1a''@;'; put 'put ''bigpO1dyKDApLHllKDEsImRpdiIsMTUpKDIsImFwcC1zYXNqcy1jb25maWd1cmF0b3IiLDE4KSxFdCgib25OYXZpZ2F0ZVRvSG9tZSIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikub25OYXZpZ2F0ZVRvSG9tZSgpKX0pLENlKCkoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgy''@;'; put 'put ''KTtTZSgyKSxSZSgic2FzSnMiLGEuc2FzSnMpKCJzYXNKc0NvbmZpZyIsYS5zYXNKc0NvbmZpZykoImRjQWRhcHRlclNldHRpbmdzIixhLmRjQWRhcHRlclNldHRpbmdzKX19ZnVuY3Rpb24gZVdlKGwsYyl7aWYoMSZsJiYoV3IoMCwxMSksdHQoMSxYWWUsMywyLCJuZy1jb250YWluZXIiLDEy''@;'; put 'put ''KSx0dCgyLEpZZSwzLDMsIm5nLWNvbnRhaW5lciIsMTIpLHR0KDMsUVllLDMsMywibmctY29udGFpbmVyIiwxMiksR3IoKSksMiZsKXtjb25zdCBhPUdlKCk7UmUoIm5nU3dpdGNoIiwhMCksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsYS5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09YS5TZXJ2''@;'; put 'put ''ZXJUeXBlLlNhc1ZpeWEpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLGEuc2FzSnNDb25maWcuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXNqcyksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsYS5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpfX1sZXQgd2Nl''@;'; put 'put ''PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5hcHBTdG9yZVNlcnZpY2U9YSx0aGlzLnNhc1NlcnZpY2U9Zix0aGlzLmxvZ2dlclNlcnZpY2U9ZCx0aGlzLnJvdXRlcj1oLHRoaXMuc3RlcD0wLHRoaXMuYWRtaW5Hcm91cHM9W10sdGhpcy5jbGllbnRfaWQ9IiIsdGhp''@;'; put 'put ''cy5jbGllbnRfc2VjcmV0PSIiLHRoaXMuYXBwTG9jPSIiLHRoaXMuZGNQYXRoPSIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSIiLHRoaXMuYXV0b2RlcGxveT0hMCx0aGlzLmpzb25GaWxlPW51bGwsdGhpcy5zYXNKc0NvbmZpZz1uZXcgdjEuU0FTanNDb25maWcsdGhpcy5TZXJ2ZXJUeXBl''@;'; put 'put ''PVh1LkQsdGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpLHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygibWFudWFsZGVwbG95IikmJih0aGlzLmF1dG9kZXBsb3k9ITEpLHRoaXMuc2FzSnM9dGhpcy5zYXNTZXJ2aWNlLmdl''@;'; put 'put ''dFNhc2pzSW5zdGFuY2UoKSx0aGlzLnNhc0pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLHRoaXMuYXBwTG9jPXRoaXMuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvY3x8IiIsdGhpcy5jbGllbnRfaWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImRlcGxveV9jbGllbnRf''@;'; put 'put ''aWQiKXx8IiIsdGhpcy5jbGllbnRfc2VjcmV0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJkZXBsb3lfc2VjcmV0X2tleSIpfHwiIix0aGlzLmRjUGF0aD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGVwbG95X2RjX2xvYyIpfHwiIn1uZ09uSW5pdCgpe3RoaXMuc2FzSnNDb25maWcuc2VydmVyVHlw''@;'; put 'put ''ZT09PVh1LkQuU2FzVml5YSYmZmV0Y2goInNhc2J1aWxkL3ZpeWEuanNvbiIpLnRoZW4oYT0+YS50ZXh0KCkpLnRoZW4oYT0+e2xldCBmPW51bGw7dHJ5e2Y9SlNPTi5wYXJzZShhKX1jYXRjaChkKXtjb25zb2xlLmVycm9yKGQpfWYmJih0aGlzLmpzb25GaWxlPWYsdGhpcy5sb2dnZXJTZXJ2''@;'; put 'put ''aWNlLmxvZyh0aGlzLmpzb25GaWxlKSl9KSx0aGlzLnNldERlcGxveURlZmF1bHRzKCl9c2V0RGVwbG95RGVmYXVsdHMoKXt0aGlzLmRjUGF0aD10aGlzLmRjQWRhcHRlclNldHRpbmdzPy5kY1BhdGh8fCIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPXRoaXMuZGNBZGFwdGVyU2V0dGluZ3M/''@;'; put 'put ''LmFkbWluR3JvdXB8fCIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwfHwodGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9IlNBU0FkbWluaXN0cmF0b3JzIil9dGVybXNBZ3JlZUNoYW5nZSgpe3RoaXMuYXV0b2RlcGxveXx8dGhpcy5nZXRBZG1pbkdyb3VwcygpLHRoaXMuc3RlcCsrfWdldEFkbWlu''@;'; put 'put ''R3JvdXBzKCl7ZmV0Y2godGhpcy5zYXNKc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcz9zb3J0Qnk9bmFtZSZsaW1pdD01MDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGE9PmEudGV4dCgpKS50aGVuKGE9PntsZXQgZjt0cnl7Zj1K''@;'; put 'put ''U09OLnBhcnNlKGEpfWNhdGNoKGQpe2NvbnNvbGUuZXJyb3IoZCl9ZiYmKHRoaXMuYWRtaW5Hcm91cHM9Zi5pdGVtcyx0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cD10aGlzLmFkbWluR3JvdXBzWzBdLmlkKX0pfW9uTmF2aWdhdGVUb0hvbWUoKXt3aW5kb3cub3Blbihsb2NhdGlvbi5ocmVmLnNw''@;'; put 'put ''bGl0KCIjIilbMF0sIl9ibGFuayIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChJdikscnQocGwpLHJ0KHkxKSxydChMYSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtZGVwbG95Il1dLGhvc3RBdHRyczpbMSwi''@;'; put 'put ''Y29udGVudC1jb250YWluZXIiXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiLCJwb3NpdGlvbi1yZWxhdGl2ZSJdLFsxLCJjbHItcm93Il0sWyJpZCIsIlRDUyIsImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFszLCJuZ1N3aXRjaCIsNCwibmdJZiJdLFsiaWQiLCJU''@;'; put 'put ''Q1MiLDEsImNhcmQiXSxbMSwiY2FyZC1oZWFkZXIiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJjYXJkLXRleHQiXSxbImhyZWYiLCJodHRwczovL2RvY3MuZGF0YWNvbnRyb2xsZXIuaW8vZXZhbHVhdGlvbi1saWNlbmNlLWFncmVlbWVudCIsInRhcmdldCIsIl9ibGFuayJdLFsxLCJsaWdodCJd''@;'; put 'put ''LFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLDMsImNoYW5nZSJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiYXV0b2RlcGxveS1zZWN0aW9uIGNhcmQiLDQsIm5nSWYiXSxbImlkIiwibWFpbmJvZHkiLCJjbGFzcyIsImNhcmQiLDQsIm5n''@;'; put 'put ''SWYiXSxbMSwiYXV0b2RlcGxveS1zZWN0aW9uIiwiY2FyZCJdLFszLCJzYXNKcyIsInNhc0pzQ29uZmlnIiwiZGNBZGFwdGVyU2V0dGluZ3MiLCJhcHBMb2MiLCJkY1BhdGgiLCJzZWxlY3RlZEFkbWluR3JvdXAiLCJvbk5hdmlnYXRlVG9Ib21lIl0sWyJpZCIsIm1haW5ib2R5IiwxLCJjYXJk''@;'; put 'put ''Il0sWzMsInNhc0pzIiwic2FzSnNDb25maWciLCJkY0FkYXB0ZXJTZXR0aW5ncyIsIm9uTmF2aWdhdGVUb0hvbWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApKDEsImRpdiIsMSksdHQoMiwkWWUsMTcsMCwiZGl2IiwyKSxDZSgpLHR0KDMsZVdlLDQsNCwi''@;'; put 'put ''bmctY29udGFpbmVyIiwzKSxDZSgpKSwyJmEmJihTZSgyKSxSZSgibmdJZiIsMD09PWYuc3RlcCksU2UoMSksUmUoIm5nSWYiLGYuc3RlcD4wKSl9LGRlcGVuZGVuY2llczpbJGksa2YsQ2gsZWwsQjAsVjAsTFllLFpZZSxHWWVdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtt''@;'; put 'put ''YXJnaW4tdG9wOjB9LmJ0bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxMHB4fS5sb2ctd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiNmMGYwZjA7Ym9yZGVyOjFweCBzb2xpZCAjYzljOWM5O3BhZGRpbmc6MTBweDtvdmVyZmxvdzphdXRv''@;'; put 'put ''O3doaXRlLXNwYWNlOnByZS13cmFwfSNjb250ZXh0cy1idG5bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6M3B4IDAgMDttaW4td2lkdGg6MzBweDttYXJnaW4tbGVmdDoxMHB4O2hlaWdodDozMHB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1p''@;'; put 'put ''dGVtczpjZW50ZXJ9LnZhbGlkYXRpb24tYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7bWFyZ2luLXRvcDoyMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn0udmFsaWRhdGlvbi1iYXJbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdp''@;'; put 'put ''bi1yaWdodDo1cHh9LmF1dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIDE1cHh9LmF1dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNoZWNrYm94LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoyMHB4IDB9LmF1''@;'; put 'put ''dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAuYnRuLWF1dG9kZXBsb3lbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjE1cHggMH0iXX0pLGx9KSgpO2Z1bmN0aW9uIENjZShsLGMpeyhmdW5jdGlvbiB0V2UobCxjKXtpZihjLmhhcyhsKSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX1mdW5jdGlvbiBLWihsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBn''@;'; put 'put ''ZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gYX1mdW5jdGlvbiBJUyhsKXtyZXR1cm4oSVM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlv''@;'; put 'put ''bihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBVMChsLGMsYSl7cmV0dXJuKGM9ZnVuY3Rpb24gcldlKGwpe3ZhciBjPWZ1bmN0''@;'; put 'put ''aW9uIG5XZShsLGMpe2lmKCJvYmplY3QiIT09SVMobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09SVMoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUlTKGMpP2M6U3RyaW5nKGMpfShjKSlpbiBsP09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1sZXQgRTQ9e2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIi''@;'; put 'put ''LGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2Vuczpu''@;'; put 'put ''dWxsLHhodG1sOiExfTtmdW5jdGlvbiBTY2UobCl7RTQ9bH1jb25zdCBNY2U9L1smPD4iJ10vLGlXZT1uZXcgUmVnRXhwKE1jZS5zb3VyY2UsImciKSxrY2U9L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvLG9XZT1uZXcgUmVnRXhwKGtjZS5zb3Vy''@;'; put 'put ''Y2UsImciKSxhV2U9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LEVjZT1sPT5hV2VbbF07ZnVuY3Rpb24gRWMobCxjKXtpZihjKXtpZihNY2UudGVzdChsKSlyZXR1cm4gbC5yZXBsYWNlKGlXZSxFY2UpfWVsc2UgaWYoa2NlLnRl''@;'; put 'put ''c3QobCkpcmV0dXJuIGwucmVwbGFjZShvV2UsRWNlKTtyZXR1cm4gbH1jb25zdCBsV2U9LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/Olx3KykpOz8vZ2k7ZnVuY3Rpb24geGNlKGwpe3JldHVybiBsLnJlcGxhY2UobFdlLChjLGEpPT4iY29sb24iPT09KGE9YS50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpKT8iOiI6IiMiPT09YS5jaGFyQXQoMCk/IngiPT09YS5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhLnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK2Euc3Vic3RyaW5nKDEpKToiIil9Y29uc3Qgc1dlPS8oXnxbXlxbXSlcXi9nO2Z1bmN0''@;'; put 'put ''aW9uIG1sKGwsYyl7bD0ic3RyaW5nIj09dHlwZW9mIGw/bDpsLnNvdXJjZSxjPWN8fCIiO2NvbnN0IGE9e3JlcGxhY2U6KGYsZCk9PihkPShkPWQuc291cmNlfHxkKS5yZXBsYWNlKHNXZSwiJDEiKSxsPWwucmVwbGFjZShmLGQpLGEpLGdldFJlZ2V4OigpPT5uZXcgUmVnRXhwKGwsYyl9O3Jl''@;'; put 'put ''dHVybiBhfWNvbnN0IHVXZT0vW15cdzpdL2csY1dlPS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gQWNlKGwsYyxhKXtpZihsKXtsZXQgZjt0cnl7Zj1kZWNvZGVVUklDb21wb25lbnQoeGNlKGEpKS5yZXBsYWNlKHVXZSwiIikudG9Mb3dlckNhc2UoKX1jYXRjaHty''@;'; put 'put ''ZXR1cm4gbnVsbH1pZigwPT09Zi5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09Zi5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PWYuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH1jJiYhY1dlLnRlc3QoYSkmJihhPWZ1bmN0aW9uIHBXZShsLGMpe1BJWyIgIitsXXx8KFBJWyIgIits''@;'; put 'put ''XT1mV2UudGVzdChsKT9sKyIvIjpISShsLCIvIiwhMCkpO2NvbnN0IGE9LTE9PT0obD1QSVsiICIrbF0pLmluZGV4T2YoIjoiKTtyZXR1cm4iLy8iPT09Yy5zdWJzdHJpbmcoMCwyKT9hP2M6bC5yZXBsYWNlKGRXZSwiJDEiKStjOiIvIj09PWMuY2hhckF0KDApP2E/YzpsLnJlcGxhY2UoaFdl''@;'; put 'put ''LCIkMSIpK2M6bCtjfShjLGEpKTt0cnl7YT1lbmNvZGVVUkkoYSkucmVwbGFjZSgvJTI1L2csIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gYX1jb25zdCBQST17fSxmV2U9L15bXjpdKzpcLypbXi9dKiQvLGRXZT0vXihbXjpdKzopW1xzXFNdKiQvLGhXZT0vXihbXjpdKzpcLypbXi9d''@;'; put 'put ''KilbXHNcU10qJC8sRkk9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBUY2UobCxjKXtjb25zdCBmPWwucmVwbGFjZSgvXHwvZywoaCxtLF8pPT57bGV0IE89ITEsWD1tO2Zvcig7LS1YPj0wJiYiXFwiPT09X1tYXTspTz0hTztyZXR1cm4gTz8ifCI6IiB8In0pLnNwbGl0KC8gXHwvKTts''@;'; put 'put ''ZXQgZD0wO2lmKGZbMF0udHJpbSgpfHxmLnNoaWZ0KCksZi5sZW5ndGg+MCYmIWZbZi5sZW5ndGgtMV0udHJpbSgpJiZmLnBvcCgpLGYubGVuZ3RoPmMpZi5zcGxpY2UoYyk7ZWxzZSBmb3IoO2YubGVuZ3RoPGM7KWYucHVzaCgiIik7Zm9yKDtkPGYubGVuZ3RoO2QrKylmW2RdPWZbZF0udHJp''@;'; put 'put ''bSgpLnJlcGxhY2UoL1xcXHwvZywifCIpO3JldHVybiBmfWZ1bmN0aW9uIEhJKGwsYyxhKXtjb25zdCBmPWwubGVuZ3RoO2lmKDA9PT1mKXJldHVybiIiO2xldCBkPTA7Zm9yKDtkPGY7KXtjb25zdCBoPWwuY2hhckF0KGYtZC0xKTtpZihoIT09Y3x8YSl7aWYoaD09PWN8fCFhKWJyZWFrO2Qr''@;'; put 'put ''K31lbHNlIGQrK31yZXR1cm4gbC5zbGljZSgwLGYtZCl9ZnVuY3Rpb24gT2NlKGwsYyxhLGYpe2NvbnN0IGQ9Yy5ocmVmLGg9Yy50aXRsZT9FYyhjLnRpdGxlKTpudWxsLG09bFsxXS5yZXBsYWNlKC9cXChbXFtcXV0pL2csIiQxIik7aWYoIiEiIT09bFswXS5jaGFyQXQoMCkpe2Yuc3RhdGUu''@;'; put 'put ''aW5MaW5rPSEwO2NvbnN0IF89e3R5cGU6ImxpbmsiLHJhdzphLGhyZWY6ZCx0aXRsZTpoLHRleHQ6bSx0b2tlbnM6Zi5pbmxpbmVUb2tlbnMobSl9O3JldHVybiBmLnN0YXRlLmluTGluaz0hMSxffXJldHVybnt0eXBlOiJpbWFnZSIscmF3OmEsaHJlZjpkLHRpdGxlOmgsdGV4dDpFYyhtKX19''@;'; put 'put ''Y2xhc3MgTkl7Y29uc3RydWN0b3IoYyl7dGhpcy5vcHRpb25zPWN8fEU0fXNwYWNlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoYyk7aWYoYSYmYVswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzphWzBdfX1jb2RlKGMpe2NvbnN0IGE9dGhpcy5y''@;'; put 'put ''dWxlcy5ibG9jay5jb2RlLmV4ZWMoYyk7aWYoYSl7Y29uc3QgZj1hWzBdLnJlcGxhY2UoL14gezEsNH0vZ20sIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6YVswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP2Y6SEkoZiwiXG4iKX19fWZl''@;'; put 'put ''bmNlcyhjKXtjb25zdCBhPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoYyk7aWYoYSl7Y29uc3QgZj1hWzBdLGQ9ZnVuY3Rpb24gdldlKGwsYyl7Y29uc3QgYT1sLm1hdGNoKC9eKFxzKykoPzpgYGApLyk7aWYobnVsbD09PWEpcmV0dXJuIGM7Y29uc3QgZj1hWzFdO3JldHVybiBjLnNw''@;'; put 'put ''bGl0KCJcbiIpLm1hcChkPT57Y29uc3QgaD1kLm1hdGNoKC9eXHMrLyk7aWYobnVsbD09PWgpcmV0dXJuIGQ7Y29uc3RbbV09aDtyZXR1cm4gbS5sZW5ndGg+PWYubGVuZ3RoP2Quc2xpY2UoZi5sZW5ndGgpOmR9KS5qb2luKCJcbiIpfShmLGFbM118fCIiKTtyZXR1cm57dHlwZToiY29kZSIs''@;'; put 'put ''cmF3OmYsbGFuZzphWzJdP2FbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6YVsyXSx0ZXh0OmR9fX1oZWFkaW5nKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5oZWFkaW5nLmV4ZWMoYyk7aWYoYSl7bGV0IGY9YVsyXS50cmltKCk7aWYoLyMk''@;'; put 'put ''Ly50ZXN0KGYpKXtjb25zdCBkPUhJKGYsIiMiKTsodGhpcy5vcHRpb25zLnBlZGFudGljfHwhZHx8LyAkLy50ZXN0KGQpKSYmKGY9ZC50cmltKCkpfXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6YVswXSxkZXB0aDphWzFdLmxlbmd0aCx0ZXh0OmYsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5l''@;'; put 'put ''KGYpfX19aHIoYyl7Y29uc3QgYT10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWMoYyk7aWYoYSlyZXR1cm57dHlwZToiaHIiLHJhdzphWzBdfX1ibG9ja3F1b3RlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5ibG9ja3F1b3RlLmV4ZWMoYyk7aWYoYSl7Y29uc3QgZj1hWzBdLnJlcGxhY2Uo''@;'; put 'put ''L14gKj5bIFx0XT8vZ20sIiIpLGQ9dGhpcy5sZXhlci5zdGF0ZS50b3A7dGhpcy5sZXhlci5zdGF0ZS50b3A9ITA7Y29uc3QgaD10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGYpO3JldHVybiB0aGlzLmxleGVyLnN0YXRlLnRvcD1kLHt0eXBlOiJibG9ja3F1b3RlIixyYXc6YVswXSx0b2tlbnM6''@;'; put 'put ''aCx0ZXh0OmZ9fX1saXN0KGMpe2xldCBhPXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGMpO2lmKGEpe2xldCBmLGQsaCxtLF8sTyxYLGFlLHBlLGJlLHhlLFZlLFplPWFbMV0udHJpbSgpO2NvbnN0IGx0PVplLmxlbmd0aD4xLGR0PXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpsdCxz''@;'; put 'put ''dGFydDpsdD8rWmUuc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O1plPWx0P2BcXGR7MSw5fVxcJHtaZS5zbGljZSgtMSl9YDpgXFwke1plfWAsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoWmU9bHQ/WmU6IlsqKy1dIik7Y29uc3QgZ3Q9bmV3IFJlZ0V4cChgXiggezAsM30ke1pl''@;'; put 'put ''fSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCk7Zm9yKDtjJiYoVmU9ITEsKGE9Z3QuZXhlYyhjKSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QoYykpOyl7aWYoZj1hWzBdLGM9Yy5zdWJzdHJpbmcoZi5sZW5ndGgpLGFlPWFbMl0uc3BsaXQoIlxuIiwxKVswXS5yZXBsYWNlKC9e''@;'; put 'put ''XHQrLyxybj0+IiAiLnJlcGVhdCgzKnJuLmxlbmd0aCkpLHBlPWMuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KG09Mix4ZT1hZS50cmltTGVmdCgpKToobT1hWzJdLnNlYXJjaCgvW14gXS8pLG09bT40PzE6bSx4ZT1hZS5zbGljZShtKSxtKz1hWzFdLmxlbmd0aCks''@;'; put 'put ''Tz0hMSwhYWUmJi9eICokLy50ZXN0KHBlKSYmKGYrPXBlKyJcbiIsYz1jLnN1YnN0cmluZyhwZS5sZW5ndGgrMSksVmU9ITApLCFWZSl7Y29uc3Qgcm49bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbS0xKX19KD86WyorLV18XFxkezEsOX1bLildKSgoPzpbIFx0XVteXFxuXSopPyg/''@;'; put 'put ''OlxcbnwkKSlgKSxYdD1uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxtLTEpfX0oKD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpYCkseW49bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsbS0xKX19KD86XGBcYFxgfH5+filgKSxRbj1uZXcg''@;'; put 'put ''UmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyxtLTEpfX0jYCk7Zm9yKDtjJiYoYmU9Yy5zcGxpdCgiXG4iLDEpWzBdLHBlPWJlLHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKHBlPXBlLnJlcGxhY2UoL14gezEsNH0oPz0oIHs0fSkqW14gXSkvZywiICAiKSksISh5bi50ZXN0KHBlKXx8UW4udGVz''@;'; put 'put ''dChwZSl8fHJuLnRlc3QocGUpfHxYdC50ZXN0KGMpKSk7KXtpZihwZS5zZWFyY2goL1teIF0vKT49bXx8IXBlLnRyaW0oKSl4ZSs9IlxuIitwZS5zbGljZShtKTtlbHNle2lmKE98fGFlLnNlYXJjaCgvW14gXS8pPj00fHx5bi50ZXN0KGFlKXx8UW4udGVzdChhZSl8fFh0LnRlc3QoYWUpKWJy''@;'; put 'put ''ZWFrO3hlKz0iXG4iK3BlfSFPJiYhcGUudHJpbSgpJiYoTz0hMCksZis9YmUrIlxuIixjPWMuc3Vic3RyaW5nKGJlLmxlbmd0aCsxKSxhZT1wZS5zbGljZShtKX19ZHQubG9vc2V8fChYP2R0Lmxvb3NlPSEwOi9cbiAqXG4gKiQvLnRlc3QoZikmJihYPSEwKSksdGhpcy5vcHRpb25zLmdmbSYm''@;'; put 'put ''KGQ9L15cW1sgeFhdXF0gLy5leGVjKHhlKSxkJiYoaD0iWyBdICIhPT1kWzBdLHhlPXhlLnJlcGxhY2UoL15cW1sgeFhdXF0gKy8sIiIpKSksZHQuaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6Zix0YXNrOiEhZCxjaGVja2VkOmgsbG9vc2U6ITEsdGV4dDp4ZX0pLGR0LnJhdys9''@;'; put 'put ''Zn1kdC5pdGVtc1tkdC5pdGVtcy5sZW5ndGgtMV0ucmF3PWYudHJpbVJpZ2h0KCksZHQuaXRlbXNbZHQuaXRlbXMubGVuZ3RoLTFdLnRleHQ9eGUudHJpbVJpZ2h0KCksZHQucmF3PWR0LnJhdy50cmltUmlnaHQoKTtjb25zdCBqdD1kdC5pdGVtcy5sZW5ndGg7Zm9yKF89MDtfPGp0O18rKylp''@;'; put 'put ''Zih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxkdC5pdGVtc1tfXS50b2tlbnM9dGhpcy5sZXhlci5ibG9ja1Rva2VucyhkdC5pdGVtc1tfXS50ZXh0LFtdKSwhZHQubG9vc2Upe2NvbnN0IHJuPWR0Lml0ZW1zW19dLnRva2Vucy5maWx0ZXIoeW49PiJzcGFjZSI9PT15bi50eXBlKSxYdD1ybi5s''@;'; put 'put ''ZW5ndGg+MCYmcm4uc29tZSh5bj0+L1xuLipcbi8udGVzdCh5bi5yYXcpKTtkdC5sb29zZT1YdH1pZihkdC5sb29zZSlmb3IoXz0wO188anQ7XysrKWR0Lml0ZW1zW19dLmxvb3NlPSEwO3JldHVybiBkdH19aHRtbChjKXtjb25zdCBhPXRoaXMucnVsZXMuYmxvY2suaHRtbC5leGVjKGMpO2lm''@;'; put 'put ''KGEpe2NvbnN0IGY9e3R5cGU6Imh0bWwiLGJsb2NrOiEwLHJhdzphWzBdLHByZTohdGhpcy5vcHRpb25zLnNhbml0aXplciYmKCJwcmUiPT09YVsxXXx8InNjcmlwdCI9PT1hWzFdfHwic3R5bGUiPT09YVsxXSksdGV4dDphWzBdfTtpZih0aGlzLm9wdGlvbnMuc2FuaXRpemUpe2NvbnN0IGQ9''@;'; put 'put ''dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKGFbMF0pOkVjKGFbMF0pO2YudHlwZT0icGFyYWdyYXBoIixmLnRleHQ9ZCxmLnRva2Vucz10aGlzLmxleGVyLmlubGluZShkKX1yZXR1cm4gZn19ZGVmKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5kZWYu''@;'; put 'put ''ZXhlYyhjKTtpZihhKXtjb25zdCBmPWFbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiICIpLGQ9YVsyXT9hWzJdLnJlcGxhY2UoL148KC4qKT4kLywiJDEiKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpOiIiLGg9YVszXT9hWzNdLnN1YnN0cmluZygx''@;'; put 'put ''LGFbM10ubGVuZ3RoLTEpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6YVszXTtyZXR1cm57dHlwZToiZGVmIix0YWc6ZixyYXc6YVswXSxocmVmOmQsdGl0bGU6aH19fXRhYmxlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay50YWJsZS5leGVjKGMpO2lmKGEp''@;'; put 'put ''e2NvbnN0IGY9e3R5cGU6InRhYmxlIixoZWFkZXI6VGNlKGFbMV0pLm1hcChkPT4oe3RleHQ6ZH0pKSxhbGlnbjphWzJdLnJlcGxhY2UoL14gKnxcfCAqJC9nLCIiKS5zcGxpdCgvICpcfCAqLykscm93czphWzNdJiZhWzNdLnRyaW0oKT9hWzNdLnJlcGxhY2UoL1xuWyBcdF0qJC8sIiIpLnNw''@;'; put 'put ''bGl0KCJcbiIpOltdfTtpZihmLmhlYWRlci5sZW5ndGg9PT1mLmFsaWduLmxlbmd0aCl7Zi5yYXc9YVswXTtsZXQgaCxtLF8sTyxkPWYuYWxpZ24ubGVuZ3RoO2ZvcihoPTA7aDxkO2grKylmLmFsaWduW2hdPS9eICotKzogKiQvLnRlc3QoZi5hbGlnbltoXSk/InJpZ2h0IjovXiAqOi0rOiAq''@;'; put 'put ''JC8udGVzdChmLmFsaWduW2hdKT8iY2VudGVyIjovXiAqOi0rICokLy50ZXN0KGYuYWxpZ25baF0pPyJsZWZ0IjpudWxsO2ZvcihkPWYucm93cy5sZW5ndGgsaD0wO2g8ZDtoKyspZi5yb3dzW2hdPVRjZShmLnJvd3NbaF0sZi5oZWFkZXIubGVuZ3RoKS5tYXAoWD0+KHt0ZXh0Olh9KSk7Zm9y''@;'; put 'put ''KGQ9Zi5oZWFkZXIubGVuZ3RoLG09MDttPGQ7bSsrKWYuaGVhZGVyW21dLnRva2Vucz10aGlzLmxleGVyLmlubGluZShmLmhlYWRlclttXS50ZXh0KTtmb3IoZD1mLnJvd3MubGVuZ3RoLG09MDttPGQ7bSsrKWZvcihPPWYucm93c1ttXSxfPTA7XzxPLmxlbmd0aDtfKyspT1tfXS50b2tlbnM9''@;'; put 'put ''dGhpcy5sZXhlci5pbmxpbmUoT1tfXS50ZXh0KTtyZXR1cm4gZn19fWxoZWFkaW5nKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5saGVhZGluZy5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImhlYWRpbmciLHJhdzphWzBdLGRlcHRoOiI9Ij09PWFbMl0uY2hhckF0KDApPzE6Mix0ZXh0''@;'; put 'put ''OmFbMV0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKGFbMV0pfX1wYXJhZ3JhcGgoYyl7Y29uc3QgYT10aGlzLnJ1bGVzLmJsb2NrLnBhcmFncmFwaC5leGVjKGMpO2lmKGEpe2NvbnN0IGY9IlxuIj09PWFbMV0uY2hhckF0KGFbMV0ubGVuZ3RoLTEpP2FbMV0uc2xpY2UoMCwtMSk6YVsxXTty''@;'; put 'put ''ZXR1cm57dHlwZToicGFyYWdyYXBoIixyYXc6YVswXSx0ZXh0OmYsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKGYpfX19dGV4dChjKXtjb25zdCBhPXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6InRleHQiLHJhdzphWzBdLHRleHQ6YVswXSx0b2tlbnM6''@;'; put 'put ''dGhpcy5sZXhlci5pbmxpbmUoYVswXSl9fWVzY2FwZShjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5lLmVzY2FwZS5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImVzY2FwZSIscmF3OmFbMF0sdGV4dDpFYyhhWzFdKX19dGFnKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5pbmxpbmUudGFnLmV4''@;'; put 'put ''ZWMoYyk7aWYoYSlyZXR1cm4hdGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePGEgL2kudGVzdChhWzBdKT90aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148XC9hPi9pLnRlc3QoYVswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMSks''@;'; put 'put ''IXRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmL148KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdChhWzBdKT90aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITA6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+''@;'; put 'put ''KS9pLnRlc3QoYVswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITEpLHt0eXBlOnRoaXMub3B0aW9ucy5zYW5pdGl6ZT8idGV4dCI6Imh0bWwiLHJhdzphWzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdC''@;'; put 'put ''bG9jayxibG9jazohMSx0ZXh0OnRoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoYVswXSk6RWMoYVswXSk6YVswXX19bGluayhjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5lLmxpbmsuZXhlYyhjKTtpZihhKXtjb25z''@;'; put 'put ''dCBmPWFbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJi9ePC8udGVzdChmKSl7aWYoIS8+JC8udGVzdChmKSlyZXR1cm47Y29uc3QgbT1ISShmLnNsaWNlKDAsLTEpLCJcXCIpO2lmKChmLmxlbmd0aC1tLmxlbmd0aCklMj09MClyZXR1cm59ZWxzZXtjb25zdCBtPWZ1bmN0''@;'; put 'put ''aW9uIG1XZShsLGMpe2lmKC0xPT09bC5pbmRleE9mKGNbMV0pKXJldHVybi0xO2NvbnN0IGE9bC5sZW5ndGg7bGV0IGY9MCxkPTA7Zm9yKDtkPGE7ZCsrKWlmKCJcXCI9PT1sW2RdKWQrKztlbHNlIGlmKGxbZF09PT1jWzBdKWYrKztlbHNlIGlmKGxbZF09PT1jWzFdJiYoZi0tLGY8MCkpcmV0''@;'; put 'put ''dXJuIGQ7cmV0dXJuLTF9KGFbMl0sIigpIik7aWYobT4tMSl7Y29uc3QgTz0oMD09PWFbMF0uaW5kZXhPZigiISIpPzU6NCkrYVsxXS5sZW5ndGgrbTthWzJdPWFbMl0uc3Vic3RyaW5nKDAsbSksYVswXT1hWzBdLnN1YnN0cmluZygwLE8pLnRyaW0oKSxhWzNdPSIifX1sZXQgZD1hWzJdLGg9''@;'; put 'put ''IiI7aWYodGhpcy5vcHRpb25zLnBlZGFudGljKXtjb25zdCBtPS9eKFteJyJdKlteXHNdKVxzKyhbJyJdKSguKilcMi8uZXhlYyhkKTttJiYoZD1tWzFdLGg9bVszXSl9ZWxzZSBoPWFbM10/YVszXS5zbGljZSgxLC0xKToiIjtyZXR1cm4gZD1kLnRyaW0oKSwvXjwvLnRlc3QoZCkmJihkPXRo''@;'; put 'put ''aXMub3B0aW9ucy5wZWRhbnRpYyYmIS8+JC8udGVzdChmKT9kLnNsaWNlKDEpOmQuc2xpY2UoMSwtMSkpLE9jZShhLHtocmVmOmQmJmQucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0aXRsZTpoJiZoLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMs''@;'; put 'put ''IiQxIil9LGFbMF0sdGhpcy5sZXhlcil9fXJlZmxpbmsoYyxhKXtsZXQgZjtpZigoZj10aGlzLnJ1bGVzLmlubGluZS5yZWZsaW5rLmV4ZWMoYykpfHwoZj10aGlzLnJ1bGVzLmlubGluZS5ub2xpbmsuZXhlYyhjKSkpe2xldCBkPShmWzJdfHxmWzFdKS5yZXBsYWNlKC9ccysvZywiICIpO2lm''@;'; put 'put ''KGQ9YVtkLnRvTG93ZXJDYXNlKCldLCFkKXtjb25zdCBoPWZbMF0uY2hhckF0KDApO3JldHVybnt0eXBlOiJ0ZXh0IixyYXc6aCx0ZXh0Omh9fXJldHVybiBPY2UoZixkLGZbMF0sdGhpcy5sZXhlcil9fWVtU3Ryb25nKGMsYSxmPSIiKXtsZXQgZD10aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9u''@;'; put 'put ''Zy5sRGVsaW0uZXhlYyhjKTtpZighKCFkfHxkWzNdJiZmLm1hdGNoKC9bXHB7TH1ccHtOfV0vdSkpJiYoIWRbMV0mJiFkWzJdfHwhZnx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyhmKSkpe2NvbnN0IG09ZFswXS5sZW5ndGgtMTtsZXQgXyxPLFg9bSxhZT0wO2NvbnN0IHBl''@;'; put 'put ''PSIqIj09PWRbMF1bMF0/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nLnJEZWxpbVVuZDtmb3IocGUubGFzdEluZGV4PTAsYT1hLnNsaWNlKC0xKmMubGVuZ3RoK20pO251bGwhPShkPXBlLmV4ZWMoYSkpOyl7aWYoXz1kWzFd''@;'; put 'put ''fHxkWzJdfHxkWzNdfHxkWzRdfHxkWzVdfHxkWzZdLCFfKWNvbnRpbnVlO2lmKE89Xy5sZW5ndGgsZFszXXx8ZFs0XSl7WCs9Tztjb250aW51ZX1pZigoZFs1XXx8ZFs2XSkmJm0lMyYmISgobStPKSUzKSl7YWUrPU87Y29udGludWV9aWYoWC09TyxYPjApY29udGludWU7Tz1NYXRoLm1pbihP''@;'; put 'put ''LE8rWCthZSk7Y29uc3QgYmU9Yy5zbGljZSgwLG0rZC5pbmRleCtPKzEpO2lmKE1hdGgubWluKG0sTyklMil7Y29uc3QgVmU9YmUuc2xpY2UoMSwtMSk7cmV0dXJue3R5cGU6ImVtIixyYXc6YmUsdGV4dDpWZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoVmUpfX1jb25zdCB4ZT1i''@;'; put 'put ''ZS5zbGljZSgyLC0yKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6YmUsdGV4dDp4ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoeGUpfX19fWNvZGVzcGFuKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5pbmxpbmUuY29kZS5leGVjKGMpO2lmKGEpe2xldCBmPWFbMl0ucmVwbGFjZSgv''@;'; put 'put ''XG4vZywiICIpO2NvbnN0IGQ9L1teIF0vLnRlc3QoZiksaD0vXiAvLnRlc3QoZikmJi8gJC8udGVzdChmKTtyZXR1cm4gZCYmaCYmKGY9Zi5zdWJzdHJpbmcoMSxmLmxlbmd0aC0xKSksZj1FYyhmLCEwKSx7dHlwZToiY29kZXNwYW4iLHJhdzphWzBdLHRleHQ6Zn19fWJyKGMpe2NvbnN0IGE9''@;'; put 'put ''dGhpcy5ydWxlcy5pbmxpbmUuYnIuZXhlYyhjKTtpZihhKXJldHVybnt0eXBlOiJiciIscmF3OmFbMF19fWRlbChjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5lLmRlbC5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImRlbCIscmF3OmFbMF0sdGV4dDphWzJdLHRva2Vuczp0aGlzLmxleGVy''@;'; put 'put ''LmlubGluZVRva2VucyhhWzJdKX19YXV0b2xpbmsoYyxhKXtjb25zdCBmPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMoYyk7aWYoZil7bGV0IGQsaDtyZXR1cm4iQCI9PT1mWzJdPyhkPUVjKHRoaXMub3B0aW9ucy5tYW5nbGU/YShmWzFdKTpmWzFdKSxoPSJtYWlsdG86IitkKToo''@;'; put 'put ''ZD1FYyhmWzFdKSxoPWQpLHt0eXBlOiJsaW5rIixyYXc6ZlswXSx0ZXh0OmQsaHJlZjpoLHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzpkLHRleHQ6ZH1dfX19dXJsKGMsYSl7bGV0IGY7aWYoZj10aGlzLnJ1bGVzLmlubGluZS51cmwuZXhlYyhjKSl7bGV0IGQsaDtpZigiQCI9PT1mWzJdKWQ9''@;'; put 'put ''RWModGhpcy5vcHRpb25zLm1hbmdsZT9hKGZbMF0pOmZbMF0pLGg9Im1haWx0bzoiK2Q7ZWxzZXtsZXQgbTtkb3ttPWZbMF0sZlswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoZlswXSlbMF19d2hpbGUobSE9PWZbMF0pO2Q9RWMoZlswXSksaD0id3d3LiI9PT1mWzFdPyJo''@;'; put 'put ''dHRwOi8vIitmWzBdOmZbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzpmWzBdLHRleHQ6ZCxocmVmOmgsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmQsdGV4dDpkfV19fX1pbmxpbmVUZXh0KGMsYSl7Y29uc3QgZj10aGlzLnJ1bGVzLmlubGluZS50ZXh0LmV4ZWMoYyk7aWYoZil7bGV0IGQ7''@;'; put 'put ''cmV0dXJuIGQ9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrP3RoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoZlswXSk6RWMoZlswXSk6ZlswXTpFYyh0aGlzLm9wdGlvbnMuc21hcnR5cGFudHM/YShmWzBdKTpmWzBd''@;'; put 'put ''KSx7dHlwZToidGV4dCIscmF3OmZbMF0sdGV4dDpkfX19fWNvbnN0IExvPXtuZXdsaW5lOi9eKD86ICooPzpcbnwkKSkrLyxjb2RlOi9eKCB7NH1bXlxuXSsoPzpcbig/OiAqKD86XG58JCkpKik/KSsvLGZlbmNlczovXiB7MCwzfShgezMsfSg/PVteYFxuXSooPzpcbnwkKSl8fnszLH0pKFte''@;'; put 'put ''XG5dKikoPzpcbnwkKSg/OnwoW1xzXFNdKj8pKD86XG58JCkpKD86IHswLDN9XDFbfmBdKiAqKD89XG58JCl8JCkvLGhyOi9eIHswLDN9KCg/Oi1bXHQgXSopezMsfXwoPzpfWyBcdF0qKXszLH18KD86XCpbIFx0XSopezMsfSkoPzpcbit8JCkvLGhlYWRpbmc6L14gezAsM30oI3sxLDZ9KSg/''@;'; put 'put ''PVxzfCQpKC4qKSg/OlxuK3wkKS8sYmxvY2txdW90ZTovXiggezAsM30+ID8ocGFyYWdyYXBofFteXG5dKikoPzpcbnwkKSkrLyxsaXN0Oi9eKCB7MCwzfWJ1bGwpKFsgXHRdW15cbl0rPyk/KD86XG58JCkvLGh0bWw6Il4gezAsM30oPzo8KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW1xc''@;'; put 'put ''cz5dW1xcc1xcU10qPyg/OjwvXFwxPlteXFxuXSpcXG4rfCQpfGNvbW1lbnRbXlxcbl0qKFxcbit8JCl8PFxcP1tcXHNcXFNdKj8oPzpcXD8+XFxuKnwkKXw8IVtBLVpdW1xcc1xcU10qPyg/Oj5cXG4qfCQpfDwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/KD86XFxdXFxdPlxcbip8JCl8PC8/KHRh''@;'; put 'put ''ZykoPzogK3xcXG58Lz8+KVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXHctXSopKD86YXR0cmlidXRlKSo/ICovPz4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpfDwvKD8h''@;'; put 'put ''c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCkpIixkZWY6L14gezAsM31cWyhsYWJlbClcXTogKig/OlxuICopPyhbXjxcc11bXlxzXSp8PC4qPz4pKD86KD86ICsoPzpcbiAq''@;'; put 'put ''KT98ICpcbiAqKSh0aXRsZSkpPyAqKD86XG4rfCQpLyx0YWJsZTpGSSxsaGVhZGluZzovXigoPzooPyFeYnVsbCApLnxcbig/IVxufGJ1bGwgKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxuXSsoPzpcbig/IWhyfGhlYWRpbmd8bGhlYWRpbmd8Ymxv''@;'; put 'put ''Y2txdW90ZXxmZW5jZXN8bGlzdHxodG1sfHRhYmxlfCArXG4pW15cbl0rKSopLyx0ZXh0Oi9eW15cbl0rLyxfbGFiZWw6Lyg/IVxzKlxdKSg/OlxcLnxbXlxbXF1cXF0pKy8sX3RpdGxlOi8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8XChbXigpXSpc''@;'; put 'put ''KSkvfTtMby5kZWY9bWwoTG8uZGVmKS5yZXBsYWNlKCJsYWJlbCIsTG8uX2xhYmVsKS5yZXBsYWNlKCJ0aXRsZSIsTG8uX3RpdGxlKS5nZXRSZWdleCgpLExvLmJ1bGxldD0vKD86WyorLV18XGR7MSw5fVsuKV0pLyxMby5saXN0SXRlbVN0YXJ0PW1sKC9eKCAqKShidWxsKSAqLykucmVwbGFj''@;'; put 'put ''ZSgiYnVsbCIsTG8uYnVsbGV0KS5nZXRSZWdleCgpLExvLmxpc3Q9bWwoTG8ubGlzdCkucmVwbGFjZSgvYnVsbC9nLExvLmJ1bGxldCkucmVwbGFjZSgiaHIiLCJcXG4rKD89XFwxPyg/Oig/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKSkiKS5yZXBsYWNl''@;'; put 'put ''KCJkZWYiLCJcXG4rKD89IitMby5kZWYuc291cmNlKyIpIikuZ2V0UmVnZXgoKSxMby5fdGFnPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8''@;'; put 'put ''ZHR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxw''@;'; put 'put ''YXJhbXxzZWN0aW9ufHNvdXJjZXxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixMby5fY29tbWVudD0vPCEtLSg/IS0/PilbXHNcU10qPyg/Oi0tPnwkKS8sTG8uaHRtbD1tbChMby5odG1sLCJpIikucmVwbGFjZSgiY29tbWVudCIsTG8u''@;'; put 'put ''X2NvbW1lbnQpLnJlcGxhY2UoInRhZyIsTG8uX3RhZykucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxMby5saGVhZGluZz1tbChMby5saGVhZGlu''@;'; put 'put ''ZykucmVwbGFjZSgvYnVsbC9nLExvLmJ1bGxldCkuZ2V0UmVnZXgoKSxMby5wYXJhZ3JhcGg9bWwoTG8uX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLExvLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJlcGxhY2UoInx0YWJs''@;'; put 'put ''ZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4pXSkgIikucmVwbGFjZSgiaHRtbCIsIjwv''@;'; put 'put ''Pyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixMby5fdGFnKS5nZXRSZWdleCgpLExvLmJsb2NrcXVvdGU9bWwoTG8uYmxvY2txdW90ZSkucmVwbGFjZSgicGFyYWdyYXBoIixMby5wYXJhZ3JhcGgpLmdldFJl''@;'; put 'put ''Z2V4KCksTG8ubm9ybWFsPXsuLi5Mb30sTG8uZ2ZtPXsuLi5Mby5ub3JtYWwsdGFibGU6Il4gKihbXlxcbiBdLipcXHwuKilcXG4gezAsM30oPzpcXHwgKik/KDo/LSs6PyAqKD86XFx8ICo6Py0rOj8gKikqKSg/OlxcfCAqKT8oPzpcXG4oKD86KD8hICpcXG58aHJ8aGVhZGluZ3xibG9ja3F1''@;'; put 'put ''b3RlfGNvZGV8ZmVuY2VzfGxpc3R8aHRtbCkuKig/OlxcbnwkKSkqKVxcbip8JCkifSxMby5nZm0udGFibGU9bWwoTG8uZ2ZtLnRhYmxlKS5yZXBsYWNlKCJociIsTG8uaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4i''@;'; put 'put ''KS5yZXBsYWNlKCJjb2RlIiwiIHs0fVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcp''@;'; put 'put ''KD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsTG8uX3RhZykuZ2V0UmVnZXgoKSxMby5nZm0ucGFyYWdyYXBoPW1sKExvLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixMby5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwz''@;'; put 'put ''fSN7MSw2fSAiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ0YWJsZSIsTG8uZ2ZtLnRhYmxlKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5y''@;'; put 'put ''ZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsTG8uX3RhZykuZ2V0UmVnZXgoKSxMby5wZWRhbnRpYz17''@;'; put 'put ''Li4uTG8ubm9ybWFsLGh0bWw6bWwoIl4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4gKig/OlxcbnsyLH18XFxzKiQpKSIpLnJl''@;'; put 'put ''cGxhY2UoImNvbW1lbnQiLExvLl9jb21tZW50KS5yZXBsYWNlKC90YWcvZywiKD8hKD86YXxlbXxzdHJvbmd8c21hbGx8c3xjaXRlfHF8ZGZufGFiYnJ8ZGF0YXx0aW1lfGNvZGV8dmFyfHNhbXB8a2JkfHN1YnxzdXB8aXxifHV8bWFya3xydWJ5fHJ0fHJwfGJkaXxiZG98c3Bhbnxicnx3YnJ8''@;'; put 'put ''aW5zfGRlbHxpbWcpXFxiKVxcdysoPyE6fFteXFx3XFxzQF0qQClcXGIiKS5nZXRSZWdleCgpLGRlZjovXiAqXFsoW15cXV0rKVxdOiAqPD8oW15ccz5dKyk+Pyg/OiArKFsiKF1bXlxuXStbIildKSk/ICooPzpcbit8JCkvLGhlYWRpbmc6L14oI3sxLDZ9KSguKikoPzpcbit8JCkvLGZlbmNl''@;'; put 'put ''czpGSSxsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLHBhcmFncmFwaDptbChMby5ub3JtYWwuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLExvLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLExvLmxo''@;'; put 'put ''ZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgoKX07Y29uc3QgZW89e2VzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1c''@;'; put 'put ''XF5fYHt8fX5dKS8sYXV0b2xpbms6L148KHNjaGVtZTpbXlxzXHgwMC1ceDFmPD5dKnxlbWFpbCk+Lyx1cmw6RkksdGFnOiJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMqLz8+fF48XFw/W1xcc1xcU10qP1xcPz58''@;'; put 'put ''XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIsbGluazovXiE/XFsobGFiZWwpXF1cKFxzKihocmVmKSg/OlxzKyh0aXRsZSkpP1xzKlwpLyxyZWZsaW5rOi9eIT9cWyhsYWJlbClcXVxbKHJlZilcXS8sbm9saW5rOi9eIT9cWyhyZWYp''@;'; put 'put ''XF0oPzpcW1xdKT8vLHJlZmxpbmtTZWFyY2g6InJlZmxpbmt8bm9saW5rKD8hXFwoKSIsZW1TdHJvbmc6e2xEZWxpbTovXig/OlwqKyg/OigoPyFcKilbcHVuY3RdKXxbXlxzKl0pKXxeXysoPzooKD8hXylbcHVuY3RdKXwoW15cc19dKSkvLHJEZWxpbUFzdDovXlteXypdKj9fX1teXypdKj9c''@;'; put 'put ''KlteXypdKj8oPz1fXyl8W14qXSsoPz1bXipdKXwoPyFcKilbcHVuY3RdKFwqKykoPz1bXHNdfCQpfFtecHVuY3Rcc10oXCorKSg/IVwqKSg/PVtwdW5jdFxzXXwkKXwoPyFcKilbcHVuY3Rcc10oXCorKSg/PVtecHVuY3Rcc10pfFtcc10oXCorKSg/IVwqKSg/PVtwdW5jdF0pfCg/IVwqKVtw''@;'; put 'put ''dW5jdF0oXCorKSg/IVwqKSg/PVtwdW5jdF0pfFtecHVuY3Rcc10oXCorKSg/PVtecHVuY3Rcc10pLyxyRGVsaW1VbmQ6L15bXl8qXSo/XCpcKlteXypdKj9fW15fKl0qPyg/PVwqXCopfFteX10rKD89W15fXSl8KD8hXylbcHVuY3RdKF8rKSg/PVtcc118JCl8W15wdW5jdFxzXShfKykoPyFf''@;'; put 'put ''KSg/PVtwdW5jdFxzXXwkKXwoPyFfKVtwdW5jdFxzXShfKykoPz1bXnB1bmN0XHNdKXxbXHNdKF8rKSg/IV8pKD89W3B1bmN0XSl8KD8hXylbcHVuY3RdKF8rKSg/IV8pKD89W3B1bmN0XSkvfSxjb2RlOi9eKGArKShbXmBdfFteYF1bXHNcU10qP1teYF0pXDEoPyFgKS8sYnI6L14oIHsyLH18''@;'; put 'put ''XFwpXG4oPyFccyokKS8sZGVsOkZJLHRleHQ6L14oYCt8W15gXSkoPzooPz0gezIsfVxuKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKl9dfFxiX3wkKXxbXiBdKD89IHsyLH1cbikpKS8scHVuY3R1YXRpb246L14oKD8hWypfXSlbXHNwdW5jdHVhdGlvbl0pL307ZnVuY3Rpb24geVdlKGwpe3Jl''@;'; put 'put ''dHVybiBsLnJlcGxhY2UoLy0tLS9nLCJcdTIwMTQiKS5yZXBsYWNlKC8tLS9nLCJcdTIwMTMiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7IlxzXSknL2csIiQxXHUyMDE4IikucmVwbGFjZSgvJy9nLCJcdTIwMTkiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7XHUyMDE4XHNdKSIvZywi''@;'; put 'put ''JDFcdTIwMWMiKS5yZXBsYWNlKC8iL2csIlx1MjAxZCIpLnJlcGxhY2UoL1wuezN9L2csIlx1MjAyNiIpfWZ1bmN0aW9uIERjZShsKXtsZXQgYSxmLGM9IiI7Y29uc3QgZD1sLmxlbmd0aDtmb3IoYT0wO2E8ZDthKyspZj1sLmNoYXJDb2RlQXQoYSksTWF0aC5yYW5kb20oKT4uNSYmKGY9Ingi''@;'; put 'put ''K2YudG9TdHJpbmcoMTYpKSxjKz0iJiMiK2YrIjsiO3JldHVybiBjfWVvLl9wdW5jdHVhdGlvbj0iXFxwe1B9JCs8PT5gXnx+Iixlby5wdW5jdHVhdGlvbj1tbChlby5wdW5jdHVhdGlvbiwidSIpLnJlcGxhY2UoL3B1bmN0dWF0aW9uL2csZW8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLGVv''@;'; put 'put ''LmJsb2NrU2tpcD0vXFtbXltcXV0qP1xdXChbXlwoXCldKj9cKXxgW15gXSo/YHw8W148Pl0qPz4vZyxlby5hbnlQdW5jdHVhdGlvbj0vXFxbcHVuY3RdL2csZW8uX2VzY2FwZXM9L1xcKFtwdW5jdF0pL2csZW8uX2NvbW1lbnQ9bWwoTG8uX2NvbW1lbnQpLnJlcGxhY2UoIig/Oi0tXHgzZXwk''@;'; put 'put ''KSIsIi0tXHgzZSIpLmdldFJlZ2V4KCksZW8uZW1TdHJvbmcubERlbGltPW1sKGVvLmVtU3Ryb25nLmxEZWxpbSwidSIpLnJlcGxhY2UoL3B1bmN0L2csZW8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLGVvLmVtU3Ryb25nLnJEZWxpbUFzdD1tbChlby5lbVN0cm9uZy5yRGVsaW1Bc3QsImd1''@;'; put 'put ''IikucmVwbGFjZSgvcHVuY3QvZyxlby5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksZW8uZW1TdHJvbmcuckRlbGltVW5kPW1sKGVvLmVtU3Ryb25nLnJEZWxpbVVuZCwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLGVvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxlby5hbnlQdW5jdHVhdGlvbj1t''@;'; put 'put ''bChlby5hbnlQdW5jdHVhdGlvbiwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLGVvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxlby5fZXNjYXBlcz1tbChlby5fZXNjYXBlcywiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLGVvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxlby5fc2NoZW1lPS9bYS16''@;'; put 'put ''QS1aXVthLXpBLVowLTkrLi1dezEsMzF9Lyxlby5fZW1haWw9L1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTld''@;'; put 'put ''KT8pKyg/IVstX10pLyxlby5hdXRvbGluaz1tbChlby5hdXRvbGluaykucmVwbGFjZSgic2NoZW1lIixlby5fc2NoZW1lKS5yZXBsYWNlKCJlbWFpbCIsZW8uX2VtYWlsKS5nZXRSZWdleCgpLGVvLl9hdHRyaWJ1dGU9L1xzK1thLXpBLVo6X11bXHcuOi1dKig/OlxzKj1ccyoiW14iXSoifFxz''@;'; put 'put ''Kj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8sZW8udGFnPW1sKGVvLnRhZykucmVwbGFjZSgiY29tbWVudCIsZW8uX2NvbW1lbnQpLnJlcGxhY2UoImF0dHJpYnV0ZSIsZW8uX2F0dHJpYnV0ZSkuZ2V0UmVnZXgoKSxlby5fbGFiZWw9Lyg/OlxbKD86XFwufFteXFtcXVxcXSkq''@;'; put 'put ''XF18XFwufGBbXmBdKmB8W15cW1xdXFxgXSkqPy8sZW8uX2hyZWY9LzwoPzpcXC58W15cbjw+XFxdKSs+fFteXHNceDAwLVx4MWZdKi8sZW8uX3RpdGxlPS8iKD86XFwiP3xbXiJcXF0pKiJ8Jyg/OlxcJz98W14nXFxdKSonfFwoKD86XFxcKT98W14pXFxdKSpcKS8sZW8ubGluaz1tbChlby5s''@;'; put 'put ''aW5rKS5yZXBsYWNlKCJsYWJlbCIsZW8uX2xhYmVsKS5yZXBsYWNlKCJocmVmIixlby5faHJlZikucmVwbGFjZSgidGl0bGUiLGVvLl90aXRsZSkuZ2V0UmVnZXgoKSxlby5yZWZsaW5rPW1sKGVvLnJlZmxpbmspLnJlcGxhY2UoImxhYmVsIixlby5fbGFiZWwpLnJlcGxhY2UoInJlZiIsTG8u''@;'; put 'put ''X2xhYmVsKS5nZXRSZWdleCgpLGVvLm5vbGluaz1tbChlby5ub2xpbmspLnJlcGxhY2UoInJlZiIsTG8uX2xhYmVsKS5nZXRSZWdleCgpLGVvLnJlZmxpbmtTZWFyY2g9bWwoZW8ucmVmbGlua1NlYXJjaCwiZyIpLnJlcGxhY2UoInJlZmxpbmsiLGVvLnJlZmxpbmspLnJlcGxhY2UoIm5vbGlu''@;'; put 'put ''ayIsZW8ubm9saW5rKS5nZXRSZWdleCgpLGVvLm5vcm1hbD17Li4uZW99LGVvLnBlZGFudGljPXsuLi5lby5ub3JtYWwsc3Ryb25nOntzdGFydDovXl9ffFwqXCovLG1pZGRsZTovXl9fKD89XFMpKFtcc1xTXSo/XFMpX18oPyFfKXxeXCpcKig/PVxTKShbXHNcU10qP1xTKVwqXCooPyFcKikv''@;'; put 'put ''LGVuZEFzdDovXCpcKig/IVwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFwqLyxtaWRkbGU6L14oKVwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKil8Xl8oPz1cUykoW1xzXFNdKj9cUylfKD8hXykvLGVuZEFzdDovXCooPyFcKikvZyxlbmRVbmQ6L18oPyFfKS9nfSxs''@;'; put 'put ''aW5rOm1sKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixlby5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazptbCgvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsZW8uX2xhYmVsKS5nZXRSZWdleCgpfSxlby5nZm09ey4u''@;'; put 'put ''LmVvLm5vcm1hbCxlc2NhcGU6bWwoZW8uZXNjYXBlKS5yZXBsYWNlKCJdKSIsIn58XSkiKS5nZXRSZWdleCgpLF9leHRlbmRlZF9lbWFpbDovW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5bYS16QS1aMC05LV9dKlthLXpBLVowLTldKSsoPyFbLV9dKS8sdXJsOi9eKCg/''@;'; put 'put ''OmZ0cHxodHRwcz8pOlwvXC98d3d3XC4pKD86W2EtekEtWjAtOVwtXStcLj8pK1teXHM8XSp8XmVtYWlsLyxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypfJyJ+KCkmXSt8XChbXildKlwpfCYoPyFbYS16QS1aMC05XSs7JCl8Wz8hLiw6OypfJyJ+KV0rKD8hJCkpKy8sZGVsOi9eKH5+PykoPz1b''@;'; put 'put ''Xlxzfl0pKFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3''@;'; put 'put ''XC58JCl8W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSxlby5nZm0udXJsPW1sKGVvLmdmbS51cmwsImkiKS5yZXBsYWNlKCJlbWFpbCIsZW8uZ2ZtLl9leHRlbmRlZF9lbWFp''@;'; put 'put ''bCkuZ2V0UmVnZXgoKSxlby5icmVha3M9ey4uLmVvLmdmbSxicjptbChlby5icikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6bWwoZW8uZ2ZtLnRleHQpLnJlcGxhY2UoIlxcYl8iLCJcXGJffCB7Mix9XFxuIikucmVwbGFjZSgvXHsyLFx9L2csIioiKS5nZXRSZWdleCgp''@;'; put 'put ''fTtjbGFzcyBQaHtjb25zdHJ1Y3RvcihjKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2Vucy5saW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucz1jfHxFNCx0aGlzLm9wdGlvbnMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6ZXJ8fG5ldyBOSSx0aGlzLnRva2VuaXpl''@;'; put 'put ''cj10aGlzLm9wdGlvbnMudG9rZW5pemVyLHRoaXMudG9rZW5pemVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnN0YXRlPXtpbkxpbms6ITEsaW5SYXdCbG9jazohMSx0b3A6ITB9O2NvbnN0IGE9e2Jsb2Nr''@;'; put 'put ''OkxvLm5vcm1hbCxpbmxpbmU6ZW8ubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KGEuYmxvY2s9TG8ucGVkYW50aWMsYS5pbmxpbmU9ZW8ucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihhLmJsb2NrPUxvLmdmbSxhLmlubGluZT10aGlzLm9wdGlvbnMuYnJlYWtzP2VvLmJyZWFr''@;'; put 'put ''czplby5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWF9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9jazpMbyxpbmxpbmU6ZW99fXN0YXRpYyBsZXgoYyxhKXtyZXR1cm4gbmV3IFBoKGEpLmxleChjKX1zdGF0aWMgbGV4SW5saW5lKGMsYSl7cmV0dXJuIG5ldyBQaChhKS5pbmxpbmVU''@;'; put 'put ''b2tlbnMoYyl9bGV4KGMpe2xldCBhO2ZvcihjPWMucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxvY2tUb2tlbnMoYyx0aGlzLnRva2Vucyk7YT10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKGEuc3JjLGEudG9rZW5zKTtyZXR1cm4gdGhpcy50b2tl''@;'; put 'put ''bnN9YmxvY2tUb2tlbnMoYyxhPVtdKXtsZXQgZixkLGgsbTtmb3IoYz10aGlzLm9wdGlvbnMucGVkYW50aWM/Yy5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFjZSgvXiArJC9nbSwiIik6Yy5yZXBsYWNlKC9eKCAqKShcdCspL2dtLChfLE8sWCk9Pk8rIiAgICAiLnJlcGVhdChYLmxlbmd0''@;'; put 'put ''aCkpO2M7KWlmKCEodGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5ibG9jay5zb21lKF89PiEhKGY9Xy5jYWxsKHtsZXhlcjp0aGlzfSxjLGEpKSYmKGM9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3Ro''@;'; put 'put ''KSxhLnB1c2goZiksITApKSkpe2lmKGY9dGhpcy50b2tlbml6ZXIuc3BhY2UoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSwxPT09Zi5yYXcubGVuZ3RoJiZhLmxlbmd0aD4wP2FbYS5sZW5ndGgtMV0ucmF3Kz0iXG4iOmEucHVzaChmKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5p''@;'; put 'put ''emVyLmNvZGUoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxkPWFbYS5sZW5ndGgtMV0sIWR8fCJwYXJhZ3JhcGgiIT09ZC50eXBlJiYidGV4dCIhPT1kLnR5cGU/YS5wdXNoKGYpOihkLnJhdys9IlxuIitmLnJhdyxkLnRleHQrPSJcbiIrZi50ZXh0LHRoaXMuaW5saW5lUXVldWVb''@;'; put 'put ''dGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPWQudGV4dCk7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5mZW5jZXMoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5oZWFkaW5nKGMpKXtjPWMuc3Vi''@;'; put 'put ''c3RyaW5nKGYucmF3Lmxlbmd0aCksYS5wdXNoKGYpO2NvbnRpbnVlfWlmKGY9dGhpcy50b2tlbml6ZXIuaHIoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5ibG9ja3F1b3RlKGMpKXtjPWMuc3Vic3RyaW5nKGYu''@;'; put 'put ''cmF3Lmxlbmd0aCksYS5wdXNoKGYpO2NvbnRpbnVlfWlmKGY9dGhpcy50b2tlbml6ZXIubGlzdChjKSl7Yz1jLnN1YnN0cmluZyhmLnJhdy5sZW5ndGgpLGEucHVzaChmKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5pemVyLmh0bWwoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxh''@;'; put 'put ''LnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5kZWYoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxkPWFbYS5sZW5ndGgtMV0sIWR8fCJwYXJhZ3JhcGgiIT09ZC50eXBlJiYidGV4dCIhPT1kLnR5cGU/dGhpcy50b2tlbnMubGlua3NbZi50YWddfHwodGhpcy50''@;'; put 'put ''b2tlbnMubGlua3NbZi50YWddPXtocmVmOmYuaHJlZix0aXRsZTpmLnRpdGxlfSk6KGQucmF3Kz0iXG4iK2YucmF3LGQudGV4dCs9IlxuIitmLnJhdyx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1kLnRleHQpO2NvbnRpbnVlfWlmKGY9dGhpcy50b2tl''@;'; put 'put ''bml6ZXIudGFibGUoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5saGVhZGluZyhjKSl7Yz1jLnN1YnN0cmluZyhmLnJhdy5sZW5ndGgpLGEucHVzaChmKTtjb250aW51ZX1pZihoPWMsdGhpcy5vcHRpb25zLmV4''@;'; put 'put ''dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0QmxvY2spe2xldCBfPTEvMDtjb25zdCBPPWMuc2xpY2UoMSk7bGV0IFg7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGZ1bmN0aW9uKGFlKXtYPWFlLmNhbGwoe2xleGVyOnRoaXN9LE8pLCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgWCYmWD49MCYmKF89TWF0aC5taW4oXyxYKSl9KSxfPDEvMCYmXz49MCYmKGg9Yy5zdWJzdHJpbmcoMCxfKzEpKX1pZih0aGlzLnN0YXRlLnRvcCYmKGY9dGhpcy50b2tlbml6ZXIucGFyYWdyYXBoKGgpKSl7ZD1hW2EubGVuZ3RoLTFdLG0mJiJwYXJhZ3JhcGgiPT09''@;'; put 'put ''ZC50eXBlPyhkLnJhdys9IlxuIitmLnJhdyxkLnRleHQrPSJcbiIrZi50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9ZC50ZXh0KTphLnB1c2goZiksbT1oLmxlbmd0aCE9PWMubGVuZ3RoLGM9Yy5zdWJz''@;'; put 'put ''dHJpbmcoZi5yYXcubGVuZ3RoKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5pemVyLnRleHQoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxkPWFbYS5sZW5ndGgtMV0sZCYmInRleHQiPT09ZC50eXBlPyhkLnJhdys9IlxuIitmLnJhdyxkLnRleHQrPSJcbiIrZi50ZXh0LHRoaXMu''@;'; put 'put ''aW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9ZC50ZXh0KTphLnB1c2goZik7Y29udGludWV9aWYoYyl7Y29uc3QgXz0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2MuY2hhckNvZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMu''@;'; put 'put ''c2lsZW50KXtjb25zb2xlLmVycm9yKF8pO2JyZWFrfXRocm93IG5ldyBFcnJvcihfKX19cmV0dXJuIHRoaXMuc3RhdGUudG9wPSEwLGF9aW5saW5lKGMsYT1bXSl7cmV0dXJuIHRoaXMuaW5saW5lUXVldWUucHVzaCh7c3JjOmMsdG9rZW5zOmF9KSxhfWlubGluZVRva2VucyhjLGE9W10pe2xl''@;'; put 'put ''dCBmLGQsaCxfLE8sWCxtPWM7aWYodGhpcy50b2tlbnMubGlua3Mpe2NvbnN0IGFlPU9iamVjdC5rZXlzKHRoaXMudG9rZW5zLmxpbmtzKTtpZihhZS5sZW5ndGg+MClmb3IoO251bGwhPShfPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZsaW5rU2VhcmNoLmV4ZWMobSkpOylhZS5p''@;'; put 'put ''bmNsdWRlcyhfWzBdLnNsaWNlKF9bMF0ubGFzdEluZGV4T2YoIlsiKSsxLC0xKSkmJihtPW0uc2xpY2UoMCxfLmluZGV4KSsiWyIrImEiLnJlcGVhdChfWzBdLmxlbmd0aC0yKSsiXSIrbS5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUucmVmbGlua1NlYXJjaC5sYXN0SW5kZXgp''@;'; put 'put ''KX1mb3IoO251bGwhPShfPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAuZXhlYyhtKSk7KW09bS5zbGljZSgwLF8uaW5kZXgpKyJbIisiYSIucmVwZWF0KF9bMF0ubGVuZ3RoLTIpKyJdIittLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAu''@;'; put 'put ''bGFzdEluZGV4KTtmb3IoO251bGwhPShfPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbi5leGVjKG0pKTspbT1tLnNsaWNlKDAsXy5pbmRleCkrIisrIittLnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbi5sYXN0SW5kZXgp''@;'; put 'put ''O2Zvcig7YzspaWYoT3x8KFg9IiIpLE89ITEsISh0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUuc29tZShhZT0+ISEoZj1hZS5jYWxsKHtsZXhlcjp0aGlzfSxjLGEpKSYmKGM9Yy5z''@;'; put 'put ''dWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZiksITApKSkpe2lmKGY9dGhpcy50b2tlbml6ZXIuZXNjYXBlKGMpKXtjPWMuc3Vic3RyaW5nKGYucmF3Lmxlbmd0aCksYS5wdXNoKGYpO2NvbnRpbnVlfWlmKGY9dGhpcy50b2tlbml6ZXIudGFnKGMpKXtjPWMuc3Vic3RyaW5nKGYucmF3''@;'; put 'put ''Lmxlbmd0aCksZD1hW2EubGVuZ3RoLTFdLGQmJiJ0ZXh0Ij09PWYudHlwZSYmInRleHQiPT09ZC50eXBlPyhkLnJhdys9Zi5yYXcsZC50ZXh0Kz1mLnRleHQpOmEucHVzaChmKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5pemVyLmxpbmsoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3Ro''@;'; put 'put ''KSxhLnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5yZWZsaW5rKGMsdGhpcy50b2tlbnMubGlua3MpKXtjPWMuc3Vic3RyaW5nKGYucmF3Lmxlbmd0aCksZD1hW2EubGVuZ3RoLTFdLGQmJiJ0ZXh0Ij09PWYudHlwZSYmInRleHQiPT09ZC50eXBlPyhkLnJhdys9Zi5yYXcs''@;'; put 'put ''ZC50ZXh0Kz1mLnRleHQpOmEucHVzaChmKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5pemVyLmVtU3Ryb25nKGMsbSxYKSl7Yz1jLnN1YnN0cmluZyhmLnJhdy5sZW5ndGgpLGEucHVzaChmKTtjb250aW51ZX1pZihmPXRoaXMudG9rZW5pemVyLmNvZGVzcGFuKGMpKXtjPWMuc3Vic3RyaW5n''@;'; put 'put ''KGYucmF3Lmxlbmd0aCksYS5wdXNoKGYpO2NvbnRpbnVlfWlmKGY9dGhpcy50b2tlbml6ZXIuYnIoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5kZWwoYykpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxh''@;'; put 'put ''LnB1c2goZik7Y29udGludWV9aWYoZj10aGlzLnRva2VuaXplci5hdXRvbGluayhjLERjZSkpe2M9Yy5zdWJzdHJpbmcoZi5yYXcubGVuZ3RoKSxhLnB1c2goZik7Y29udGludWV9aWYoIXRoaXMuc3RhdGUuaW5MaW5rJiYoZj10aGlzLnRva2VuaXplci51cmwoYyxEY2UpKSl7Yz1jLnN1YnN0''@;'; put 'put ''cmluZyhmLnJhdy5sZW5ndGgpLGEucHVzaChmKTtjb250aW51ZX1pZihoPWMsdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0SW5saW5lKXtsZXQgYWU9MS8wO2NvbnN0IHBlPWMuc2xpY2UoMSk7bGV0IGJlO3RoaXMub3B0aW9ucy5leHRlbnNp''@;'; put 'put ''b25zLnN0YXJ0SW5saW5lLmZvckVhY2goZnVuY3Rpb24oeGUpe2JlPXhlLmNhbGwoe2xleGVyOnRoaXN9LHBlKSwibnVtYmVyIj09dHlwZW9mIGJlJiZiZT49MCYmKGFlPU1hdGgubWluKGFlLGJlKSl9KSxhZTwxLzAmJmFlPj0wJiYoaD1jLnN1YnN0cmluZygwLGFlKzEpKX1pZihmPXRoaXMu''@;'; put 'put ''dG9rZW5pemVyLmlubGluZVRleHQoaCx5V2UpKXtjPWMuc3Vic3RyaW5nKGYucmF3Lmxlbmd0aCksIl8iIT09Zi5yYXcuc2xpY2UoLTEpJiYoWD1mLnJhdy5zbGljZSgtMSkpLE89ITAsZD1hW2EubGVuZ3RoLTFdLGQmJiJ0ZXh0Ij09PWQudHlwZT8oZC5yYXcrPWYucmF3LGQudGV4dCs9Zi50''@;'; put 'put ''ZXh0KTphLnB1c2goZik7Y29udGludWV9aWYoYyl7Y29uc3QgYWU9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitjLmNoYXJDb2RlQXQoMCk7aWYodGhpcy5vcHRpb25zLnNpbGVudCl7Y29uc29sZS5lcnJvcihhZSk7YnJlYWt9dGhyb3cgbmV3IEVycm9yKGFlKX19cmV0dXJuIGF9fWNsYXNz''@;'; put 'put ''IFZJe2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHxFNH1jb2RlKGMsYSxmKXtjb25zdCBkPShhfHwiIikubWF0Y2goL1xTKi8pWzBdO2lmKHRoaXMub3B0aW9ucy5oaWdobGlnaHQpe2NvbnN0IGg9dGhpcy5vcHRpb25zLmhpZ2hsaWdodChjLGQpO251bGwhPWgmJmghPT1jJiYoZj0h''@;'; put 'put ''MCxjPWgpfXJldHVybiBjPWMucmVwbGFjZSgvXG4kLywiIikrIlxuIixkPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K0VjKGQpKyciPicrKGY/YzpFYyhjLCEwKSkrIjwvY29kZT48L3ByZT5cbiI6IjxwcmU+PGNvZGU+IisoZj9jOkVjKGMsITApKSsiPC9j''@;'; put 'put ''b2RlPjwvcHJlPlxuIn1ibG9ja3F1b3RlKGMpe3JldHVybmA8YmxvY2txdW90ZT5cbiR7Y308L2Jsb2NrcXVvdGU+XG5gfWh0bWwoYyxhKXtyZXR1cm4gY31oZWFkaW5nKGMsYSxmLGQpe3JldHVybiB0aGlzLm9wdGlvbnMuaGVhZGVySWRzP2A8aCR7YX0gaWQ9IiR7dGhpcy5vcHRpb25zLmhl''@;'; put 'put ''YWRlclByZWZpeCtkLnNsdWcoZil9Ij4ke2N9PC9oJHthfT5cbmA6YDxoJHthfT4ke2N9PC9oJHthfT5cbmB9aHIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8aHIvPlxuIjoiPGhyPlxuIn1saXN0KGMsYSxmKXtjb25zdCBkPWE/Im9sIjoidWwiO3JldHVybiI8IitkKyhhJiYxIT09''@;'; put 'put ''Zj8nIHN0YXJ0PSInK2YrJyInOiIiKSsiPlxuIitjKyI8LyIrZCsiPlxuIn1saXN0aXRlbShjKXtyZXR1cm5gPGxpPiR7Y308L2xpPlxuYH1jaGVja2JveChjKXtyZXR1cm4iPGlucHV0ICIrKGM/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94IicrKHRoaXMu''@;'; put 'put ''b3B0aW9ucy54aHRtbD8iIC8iOiIiKSsiPiAifXBhcmFncmFwaChjKXtyZXR1cm5gPHA+JHtjfTwvcD5cbmB9dGFibGUoYyxhKXtyZXR1cm4gYSYmKGE9YDx0Ym9keT4ke2F9PC90Ym9keT5gKSwiPHRhYmxlPlxuPHRoZWFkPlxuIitjKyI8L3RoZWFkPlxuIithKyI8L3RhYmxlPlxuIn10YWJs''@;'; put 'put ''ZXJvdyhjKXtyZXR1cm5gPHRyPlxuJHtjfTwvdHI+XG5gfXRhYmxlY2VsbChjLGEpe2NvbnN0IGY9YS5oZWFkZXI/InRoIjoidGQiO3JldHVybihhLmFsaWduP2A8JHtmfSBhbGlnbj0iJHthLmFsaWdufSI+YDpgPCR7Zn0+YCkrYytgPC8ke2Z9PlxuYH1zdHJvbmcoYyl7cmV0dXJuYDxzdHJv''@;'; put 'put ''bmc+JHtjfTwvc3Ryb25nPmB9ZW0oYyl7cmV0dXJuYDxlbT4ke2N9PC9lbT5gfWNvZGVzcGFuKGMpe3JldHVybmA8Y29kZT4ke2N9PC9jb2RlPmB9YnIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8YnIvPiI6Ijxicj4ifWRlbChjKXtyZXR1cm5gPGRlbD4ke2N9PC9kZWw+YH1saW5r''@;'; put 'put ''KGMsYSxmKXtpZihudWxsPT09KGM9QWNlKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCxjKSkpcmV0dXJuIGY7bGV0IGQ9JzxhIGhyZWY9IicrYysnIic7cmV0dXJuIGEmJihkKz0nIHRpdGxlPSInK2ErJyInKSxkKz0iPiIrZisiPC9hPiIsZH1pbWFnZShjLGEs''@;'; put 'put ''Zil7aWYobnVsbD09PShjPUFjZSh0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRpb25zLmJhc2VVcmwsYykpKXJldHVybiBmO2xldCBkPWA8aW1nIHNyYz0iJHtjfSIgYWx0PSIke2Z9ImA7cmV0dXJuIGEmJihkKz1gIHRpdGxlPSIke2F9ImApLGQrPXRoaXMub3B0aW9ucy54aHRtbD8i''@;'; put 'put ''Lz4iOiI+IixkfXRleHQoYyl7cmV0dXJuIGN9fWNsYXNzIFhae3N0cm9uZyhjKXtyZXR1cm4gY31lbShjKXtyZXR1cm4gY31jb2Rlc3BhbihjKXtyZXR1cm4gY31kZWwoYyl7cmV0dXJuIGN9aHRtbChjKXtyZXR1cm4gY310ZXh0KGMpe3JldHVybiBjfWxpbmsoYyxhLGYpe3JldHVybiIiK2Z9''@;'; put 'put ''aW1hZ2UoYyxhLGYpe3JldHVybiIiK2Z9YnIoKXtyZXR1cm4iIn19Y2xhc3MgSlp7Y29uc3RydWN0b3IoKXt0aGlzLnNlZW49e319c2VyaWFsaXplKGMpe3JldHVybiBjLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoLzxbIVwvYS16XS4qPz4vZ2ksIiIpLnJlcGxhY2UoL1tcdTIwMDAt''@;'; put 'put ''XHUyMDZGXHUyRTAwLVx1MkU3RlxcJyEiIyQlJigpKissLi86Ozw9Pj9AW1xdXmB7fH1+XS9nLCIiKS5yZXBsYWNlKC9ccy9nLCItIil9Z2V0TmV4dFNhZmVTbHVnKGMsYSl7bGV0IGY9YyxkPTA7aWYodGhpcy5zZWVuLmhhc093blByb3BlcnR5KGYpKXtkPXRoaXMuc2VlbltjXTtkb3tkKyss''@;'; put 'put ''Zj1jKyItIitkfXdoaWxlKHRoaXMuc2Vlbi5oYXNPd25Qcm9wZXJ0eShmKSl9cmV0dXJuIGF8fCh0aGlzLnNlZW5bY109ZCx0aGlzLnNlZW5bZl09MCksZn1zbHVnKGMsYT17fSl7Y29uc3QgZj10aGlzLnNlcmlhbGl6ZShjKTtyZXR1cm4gdGhpcy5nZXROZXh0U2FmZVNsdWcoZixhLmRyeXJ1''@;'; put 'put ''bil9fWNsYXNzIEZoe2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHxFNCx0aGlzLm9wdGlvbnMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyfHxuZXcgVkksdGhpcy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXIsdGhpcy5yZW5kZXJlci5vcHRpb25zPXRoaXMub3B0''@;'; put 'put ''aW9ucyx0aGlzLnRleHRSZW5kZXJlcj1uZXcgWFosdGhpcy5zbHVnZ2VyPW5ldyBKWn1zdGF0aWMgcGFyc2UoYyxhKXtyZXR1cm4gbmV3IEZoKGEpLnBhcnNlKGMpfXN0YXRpYyBwYXJzZUlubGluZShjLGEpe3JldHVybiBuZXcgRmgoYSkucGFyc2VJbmxpbmUoYyl9cGFyc2UoYyxhPSEwKXts''@;'; put 'put ''ZXQgZCxoLG0sXyxPLFgsYWUscGUsYmUseGUsVmUsWmUsbHQsZHQsZ3QsanQscm4sWHQseW4sZj0iIjtjb25zdCBRbj1jLmxlbmd0aDtmb3IoZD0wO2Q8UW47ZCsrKWlmKHhlPWNbZF0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVycyYm''@;'; put 'put ''dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3hlLnR5cGVdJiYoeW49dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW3hlLnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSx4ZSksITEhPT15bnx8IVsic3BhY2UiLCJociIsImhlYWRpbmciLCJjb2RlIiwidGFibGUiLCJi''@;'; put 'put ''bG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoeGUudHlwZSkpKWYrPXlufHwiIjtlbHNlIHN3aXRjaCh4ZS50eXBlKXtjYXNlInNwYWNlIjpjb250aW51ZTtjYXNlImhyIjpmKz10aGlzLnJlbmRlcmVyLmhyKCk7Y29udGludWU7Y2FzZSJoZWFk''@;'; put 'put ''aW5nIjpmKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZSh4ZS50b2tlbnMpLHhlLmRlcHRoLHhjZSh0aGlzLnBhcnNlSW5saW5lKHhlLnRva2Vucyx0aGlzLnRleHRSZW5kZXJlcikpLHRoaXMuc2x1Z2dlcik7Y29udGludWU7Y2FzZSJjb2RlIjpmKz10aGlzLnJlbmRl''@;'; put 'put ''cmVyLmNvZGUoeGUudGV4dCx4ZS5sYW5nLHhlLmVzY2FwZWQpO2NvbnRpbnVlO2Nhc2UidGFibGUiOmZvcihwZT0iIixhZT0iIixfPXhlLmhlYWRlci5sZW5ndGgsaD0wO2g8XztoKyspYWUrPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUoeGUuaGVhZGVyW2hdLnRv''@;'; put 'put ''a2Vucykse2hlYWRlcjohMCxhbGlnbjp4ZS5hbGlnbltoXX0pO2ZvcihwZSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhhZSksYmU9IiIsXz14ZS5yb3dzLmxlbmd0aCxoPTA7aDxfO2grKyl7Zm9yKFg9eGUucm93c1toXSxhZT0iIixPPVgubGVuZ3RoLG09MDttPE87bSsrKWFlKz10aGlzLnJl''@;'; put 'put ''bmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKFhbbV0udG9rZW5zKSx7aGVhZGVyOiExLGFsaWduOnhlLmFsaWduW21dfSk7YmUrPXRoaXMucmVuZGVyZXIudGFibGVyb3coYWUpfWYrPXRoaXMucmVuZGVyZXIudGFibGUocGUsYmUpO2NvbnRpbnVlO2Nhc2UiYmxvY2txdW90ZSI6''@;'; put 'put ''YmU9dGhpcy5wYXJzZSh4ZS50b2tlbnMpLGYrPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShiZSk7Y29udGludWU7Y2FzZSJsaXN0Ijpmb3IoVmU9eGUub3JkZXJlZCxaZT14ZS5zdGFydCxsdD14ZS5sb29zZSxfPXhlLml0ZW1zLmxlbmd0aCxiZT0iIixoPTA7aDxfO2grKylndD14ZS5pdGVt''@;'; put 'put ''c1toXSxqdD1ndC5jaGVja2VkLHJuPWd0LnRhc2ssZHQ9IiIsZ3QudGFzayYmKFh0PXRoaXMucmVuZGVyZXIuY2hlY2tib3goanQpLGx0P2d0LnRva2Vucy5sZW5ndGg+MCYmInBhcmFncmFwaCI9PT1ndC50b2tlbnNbMF0udHlwZT8oZ3QudG9rZW5zWzBdLnRleHQ9WHQrIiAiK2d0LnRva2Vu''@;'; put 'put ''c1swXS50ZXh0LGd0LnRva2Vuc1swXS50b2tlbnMmJmd0LnRva2Vuc1swXS50b2tlbnMubGVuZ3RoPjAmJiJ0ZXh0Ij09PWd0LnRva2Vuc1swXS50b2tlbnNbMF0udHlwZSYmKGd0LnRva2Vuc1swXS50b2tlbnNbMF0udGV4dD1YdCsiICIrZ3QudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6''@;'; put 'put ''Z3QudG9rZW5zLnVuc2hpZnQoe3R5cGU6InRleHQiLHRleHQ6WHR9KTpkdCs9WHQpLGR0Kz10aGlzLnBhcnNlKGd0LnRva2VucyxsdCksYmUrPXRoaXMucmVuZGVyZXIubGlzdGl0ZW0oZHQscm4sanQpO2YrPXRoaXMucmVuZGVyZXIubGlzdChiZSxWZSxaZSk7Y29udGludWU7Y2FzZSJodG1s''@;'; put 'put ''IjpmKz10aGlzLnJlbmRlcmVyLmh0bWwoeGUudGV4dCx4ZS5ibG9jayk7Y29udGludWU7Y2FzZSJwYXJhZ3JhcGgiOmYrPXRoaXMucmVuZGVyZXIucGFyYWdyYXBoKHRoaXMucGFyc2VJbmxpbmUoeGUudG9rZW5zKSk7Y29udGludWU7Y2FzZSJ0ZXh0Ijpmb3IoYmU9eGUudG9rZW5zP3RoaXMu''@;'; put 'put ''cGFyc2VJbmxpbmUoeGUudG9rZW5zKTp4ZS50ZXh0O2QrMTxRbiYmInRleHQiPT09Y1tkKzFdLnR5cGU7KXhlPWNbKytkXSxiZSs9IlxuIisoeGUudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoeGUudG9rZW5zKTp4ZS50ZXh0KTtmKz1hP3RoaXMucmVuZGVyZXIucGFyYWdyYXBoKGJlKTpiZTtj''@;'; put 'put ''b250aW51ZTtkZWZhdWx0Ontjb25zdCBPcj0nVG9rZW4gd2l0aCAiJyt4ZS50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihPcik7dGhyb3cgbmV3IEVycm9yKE9yKX19cmV0dXJuIGZ9cGFyc2VJbmxp''@;'; put 'put ''bmUoYyxhKXthPWF8fHRoaXMucmVuZGVyZXI7bGV0IGQsaCxtLGY9IiI7Y29uc3QgXz1jLmxlbmd0aDtmb3IoZD0wO2Q8XztkKyspaWYoaD1jW2RdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNp''@;'; put 'put ''b25zLnJlbmRlcmVyc1toLnR5cGVdJiYobT10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbaC50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30saCksITEhPT1tfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVs''@;'; put 'put ''IiwidGV4dCJdLmluY2x1ZGVzKGgudHlwZSkpKWYrPW18fCIiO2Vsc2Ugc3dpdGNoKGgudHlwZSl7Y2FzZSJlc2NhcGUiOmNhc2UidGV4dCI6Zis9YS50ZXh0KGgudGV4dCk7YnJlYWs7Y2FzZSJodG1sIjpmKz1hLmh0bWwoaC50ZXh0KTticmVhaztjYXNlImxpbmsiOmYrPWEubGluayhoLmhy''@;'; put 'put ''ZWYsaC50aXRsZSx0aGlzLnBhcnNlSW5saW5lKGgudG9rZW5zLGEpKTticmVhaztjYXNlImltYWdlIjpmKz1hLmltYWdlKGguaHJlZixoLnRpdGxlLGgudGV4dCk7YnJlYWs7Y2FzZSJzdHJvbmciOmYrPWEuc3Ryb25nKHRoaXMucGFyc2VJbmxpbmUoaC50b2tlbnMsYSkpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''ZW0iOmYrPWEuZW0odGhpcy5wYXJzZUlubGluZShoLnRva2VucyxhKSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6Zis9YS5jb2Rlc3BhbihoLnRleHQpO2JyZWFrO2Nhc2UiYnIiOmYrPWEuYnIoKTticmVhaztjYXNlImRlbCI6Zis9YS5kZWwodGhpcy5wYXJzZUlubGluZShoLnRva2VucyxhKSk7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDp7Y29uc3QgTz0nVG9rZW4gd2l0aCAiJytoLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKE8pO3Rocm93IG5ldyBFcnJvcihPKX19cmV0dXJuIGZ9fWNsYXNzIFJTe2NvbnN0''@;'; put 'put ''cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHxFNH1wcmVwcm9jZXNzKGMpe3JldHVybiBjfXBvc3Rwcm9jZXNzKGMpe3JldHVybiBjfX1VMChSUywicGFzc1Rocm91Z2hIb29rcyIsbmV3IFNldChbInByZXByb2Nlc3MiLCJwb3N0cHJvY2VzcyJdKSk7dmFyIFFaPW5ldyBXZWFrU2V0LEljZT1u''@;'; put 'put ''ZXcgV2Vha1NldDtmdW5jdGlvbiBSY2UobCxjKXtyZXR1cm4oYSxmLGQpPT57ImZ1bmN0aW9uIj09dHlwZW9mIGYmJihkPWYsZj1udWxsKTtjb25zdCBoPXsuLi5mfTtmPXsuLi50aGlzLmRlZmF1bHRzLC4uLmh9O2NvbnN0IG09S1oodGhpcyxJY2UsX1dlKS5jYWxsKHRoaXMsZi5zaWxlbnQs''@;'; put 'put ''Zi5hc3luYyxkKTtpZih0eXBlb2YgYT4idSJ8fG51bGw9PT1hKXJldHVybiBtKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpKTtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG0obmV3IEVycm9yKCJtYXJrZWQoKTogaW5wdXQg''@;'; put 'put ''cGFyYW1ldGVyIGlzIG9mIHR5cGUgIitPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkrIiwgc3RyaW5nIGV4cGVjdGVkIikpO2lmKGZ1bmN0aW9uIGdXZShsLGMpeyFsfHxsLnNpbGVudHx8KGMmJmNvbnNvbGUud2FybigibWFya2VkKCk6IGNhbGxiYWNrIGlzIGRlcHJlY2F0ZWQg''@;'; put 'put ''c2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8vbWFya2VkLmpzLm9yZy91c2luZ19wcm8jYXN5bmMiKSwobC5zYW5pdGl6ZXx8bC5zYW5pdGl6ZXIpJiZjb25zb2xl''@;'; put 'put ''Lndhcm4oIm1hcmtlZCgpOiBzYW5pdGl6ZSBhbmQgc2FuaXRpemVyIHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjcuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gUmVhZCBtb3JlIGhlcmU6IGh0dHBzOi8v''@;'; put 'put ''bWFya2VkLmpzLm9yZy8jL1VTSU5HX0FEVkFOQ0VELm1kI29wdGlvbnMiKSwobC5oaWdobGlnaHR8fCJsYW5ndWFnZS0iIT09bC5sYW5nUHJlZml4KSYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogaGlnaGxpZ2h0IGFuZCBsYW5nUHJlZml4IHBhcmFtZXRlcnMgYXJlIGRlcHJlY2F0ZWQgc2lu''@;'; put 'put ''Y2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLWhpZ2hsaWdodC4iKSxsLm1hbmdsZSYmY29uc29sZS53YXJuKCJtYXJrZWQo''@;'; put 'put ''KTogbWFuZ2xlIHBhcmFtZXRlciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gVG8gY2xlYXIgdGhpcyB3YXJuaW5nLCBpbnN0YWxsIGh0dHBzOi8vd3d3Lm5wbWpz''@;'; put 'put ''LmNvbS9wYWNrYWdlL21hcmtlZC1tYW5nbGUsIG9yIGRpc2FibGUgYnkgc2V0dGluZyBge21hbmdsZTogZmFsc2V9YC4iKSxsLmJhc2VVcmwmJmNvbnNvbGUud2FybigibWFya2VkKCk6IGJhc2VVcmwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxk''@;'; put 'put ''IG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLWJhc2UtdXJsLiIpLGwuc21hcnR5cGFudHMmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNtYXJ0eXBhbnRzIHBhcmFt''@;'; put 'put ''ZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1zbWFydHlwYW50cy4iKSxsLnhodG1s''@;'; put 'put ''JiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiB4aHRtbCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20v''@;'; put 'put ''cGFja2FnZS9tYXJrZWQteGh0bWwuIiksKGwuaGVhZGVySWRzfHxsLmhlYWRlclByZWZpeCkmJmNvbnNvbGUud2FybigibWFya2VkKCk6IGhlYWRlcklkcyBhbmQgaGVhZGVyUHJlZml4IHBhcmFtZXRlcnMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVy''@;'; put 'put ''c2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdhcm5pbmcsIGluc3RhbGwgIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1nZm0taGVhZGluZy1pZCwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7aGVhZGVySWRz''@;'; put 'put ''OiBmYWxzZX1gLiIpKX0oZixkKSxmLmhvb2tzJiYoZi5ob29rcy5vcHRpb25zPWYpLGQpe2NvbnN0IF89Zi5oaWdobGlnaHQ7bGV0IE87dHJ5e2YuaG9va3MmJihhPWYuaG9va3MucHJlcHJvY2VzcyhhKSksTz1sKGEsZil9Y2F0Y2gocGUpe3JldHVybiBtKHBlKX1jb25zdCBYPXBlPT57bGV0''@;'; put 'put ''IGJlO2lmKCFwZSl0cnl7Zi53YWxrVG9rZW5zJiZ0aGlzLndhbGtUb2tlbnMoTyxmLndhbGtUb2tlbnMpLGJlPWMoTyxmKSxmLmhvb2tzJiYoYmU9Zi5ob29rcy5wb3N0cHJvY2VzcyhiZSkpfWNhdGNoKHhlKXtwZT14ZX1yZXR1cm4gZi5oaWdobGlnaHQ9XyxwZT9tKHBlKTpkKG51bGwsYmUp''@;'; put 'put ''fTtpZighX3x8Xy5sZW5ndGg8M3x8KGRlbGV0ZSBmLmhpZ2hsaWdodCwhTy5sZW5ndGgpKXJldHVybiBYKCk7bGV0IGFlPTA7cmV0dXJuIHRoaXMud2Fsa1Rva2VucyhPLHBlPT57ImNvZGUiPT09cGUudHlwZSYmKGFlKyssc2V0VGltZW91dCgoKT0+e18ocGUudGV4dCxwZS5sYW5nLChiZSx4''@;'; put 'put ''ZSk9PntpZihiZSlyZXR1cm4gWChiZSk7bnVsbCE9eGUmJnhlIT09cGUudGV4dCYmKHBlLnRleHQ9eGUscGUuZXNjYXBlZD0hMCksYWUtLSwwPT09YWUmJlgoKX0pfSwwKSl9KSx2b2lkKDA9PT1hZSYmWCgpKX1pZihmLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoZi5ob29rcz9mLmhv''@;'; put 'put ''b2tzLnByZXByb2Nlc3MoYSk6YSkudGhlbihfPT5sKF8sZikpLnRoZW4oXz0+Zi53YWxrVG9rZW5zP1Byb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhfLGYud2Fsa1Rva2VucykpLnRoZW4oKCk9Pl8pOl8pLnRoZW4oXz0+YyhfLGYpKS50aGVuKF89PmYuaG9va3M/Zi5ob29rcy5wb3N0cHJv''@;'; put 'put ''Y2VzcyhfKTpfKS5jYXRjaChtKTt0cnl7Zi5ob29rcyYmKGE9Zi5ob29rcy5wcmVwcm9jZXNzKGEpKTtjb25zdCBfPWwoYSxmKTtmLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhfLGYud2Fsa1Rva2Vucyk7bGV0IE89YyhfLGYpO3JldHVybiBmLmhvb2tzJiYoTz1mLmhvb2tzLnBvc3Rw''@;'; put 'put ''cm9jZXNzKE8pKSxPfWNhdGNoKF8pe3JldHVybiBtKF8pfX19ZnVuY3Rpb24gX1dlKGwsYyxhKXtyZXR1cm4gZj0+e2lmKGYubWVzc2FnZSs9IlxuUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZWRqcy9tYXJrZWQuIixsKXtjb25zdCBkPSI8cD5BbiBlcnJv''@;'; put 'put ''ciBvY2N1cnJlZDo8L3A+PHByZT4iK0VjKGYubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiI7cmV0dXJuIGM/UHJvbWlzZS5yZXNvbHZlKGQpOmE/dm9pZCBhKG51bGwsZCk6ZH1pZihjKXJldHVybiBQcm9taXNlLnJlamVjdChmKTtpZighYSl0aHJvdyBmO2EoZil9fWNvbnN0IG01PW5ldyBjbGFz''@;'; put 'put ''cyBiV2V7Y29uc3RydWN0b3IoLi4uYyl7Q2NlKHRoaXMsSWNlKSxDY2UodGhpcyxRWiksVTAodGhpcywiZGVmYXVsdHMiLHthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDoiIixoaWdobGlnaHQ6''@;'; put 'put ''bnVsbCxob29rczpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbCx4aHRtbDoh''@;'; put 'put ''MX0pLFUwKHRoaXMsIm9wdGlvbnMiLHRoaXMuc2V0T3B0aW9ucyksVTAodGhpcywicGFyc2UiLEtaKHRoaXMsUVosUmNlKS5jYWxsKHRoaXMsUGgubGV4LEZoLnBhcnNlKSksVTAodGhpcywicGFyc2VJbmxpbmUiLEtaKHRoaXMsUVosUmNlKS5jYWxsKHRoaXMsUGgubGV4SW5saW5lLEZoLnBh''@;'; put 'put ''cnNlSW5saW5lKSksVTAodGhpcywiUGFyc2VyIixGaCksVTAodGhpcywicGFyc2VyIixGaC5wYXJzZSksVTAodGhpcywiUmVuZGVyZXIiLFZJKSxVMCh0aGlzLCJUZXh0UmVuZGVyZXIiLFhaKSxVMCh0aGlzLCJMZXhlciIsUGgpLFUwKHRoaXMsImxleGVyIixQaC5sZXgpLFUwKHRoaXMsIlRv''@;'; put 'put ''a2VuaXplciIsTkkpLFUwKHRoaXMsIlNsdWdnZXIiLEpaKSxVMCh0aGlzLCJIb29rcyIsUlMpLHRoaXMudXNlKC4uLmMpfXdhbGtUb2tlbnMoYyxhKXtsZXQgZj1bXTtmb3IoY29uc3QgZCBvZiBjKXN3aXRjaChmPWYuY29uY2F0KGEuY2FsbCh0aGlzLGQpKSxkLnR5cGUpe2Nhc2UidGFibGUi''@;'; put 'put ''OmZvcihjb25zdCBoIG9mIGQuaGVhZGVyKWY9Zi5jb25jYXQodGhpcy53YWxrVG9rZW5zKGgudG9rZW5zLGEpKTtmb3IoY29uc3QgaCBvZiBkLnJvd3MpZm9yKGNvbnN0IG0gb2YgaClmPWYuY29uY2F0KHRoaXMud2Fsa1Rva2VucyhtLnRva2VucyxhKSk7YnJlYWs7Y2FzZSJsaXN0IjpmPWYu''@;'; put 'put ''Y29uY2F0KHRoaXMud2Fsa1Rva2VucyhkLml0ZW1zLGEpKTticmVhaztkZWZhdWx0OnRoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucyYmdGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zJiZ0aGlzLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbZC50eXBlXT90aGlzLmRl''@;'; put 'put ''ZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnNbZC50eXBlXS5mb3JFYWNoKGg9PntmPWYuY29uY2F0KHRoaXMud2Fsa1Rva2VucyhkW2hdLGEpKX0pOmQudG9rZW5zJiYoZj1mLmNvbmNhdCh0aGlzLndhbGtUb2tlbnMoZC50b2tlbnMsYSkpKX1yZXR1cm4gZn11c2UoLi4uYyl7Y29uc3Qg''@;'; put 'put ''YT10aGlzLmRlZmF1bHRzLmV4dGVuc2lvbnN8fHtyZW5kZXJlcnM6e30sY2hpbGRUb2tlbnM6e319O3JldHVybiBjLmZvckVhY2goZj0+e2NvbnN0IGQ9ey4uLmZ9O2lmKGQuYXN5bmM9dGhpcy5kZWZhdWx0cy5hc3luY3x8ZC5hc3luY3x8ITEsZi5leHRlbnNpb25zJiYoZi5leHRlbnNpb25z''@;'; put 'put ''LmZvckVhY2goaD0+e2lmKCFoLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbmFtZSByZXF1aXJlZCIpO2lmKGgucmVuZGVyZXIpe2NvbnN0IG09YS5yZW5kZXJlcnNbaC5uYW1lXTthLnJlbmRlcmVyc1toLm5hbWVdPW0/ZnVuY3Rpb24oLi4uXyl7bGV0IE89aC5yZW5kZXJlci5h''@;'; put 'put ''cHBseSh0aGlzLF8pO3JldHVybiExPT09TyYmKE89bS5hcHBseSh0aGlzLF8pKSxPfTpoLnJlbmRlcmVyfWlmKGgudG9rZW5pemVyKXtpZighaC5sZXZlbHx8ImJsb2NrIiE9PWgubGV2ZWwmJiJpbmxpbmUiIT09aC5sZXZlbCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0''@;'; put 'put ''IGJlICdibG9jaycgb3IgJ2lubGluZSciKTthW2gubGV2ZWxdP2FbaC5sZXZlbF0udW5zaGlmdChoLnRva2VuaXplcik6YVtoLmxldmVsXT1baC50b2tlbml6ZXJdLGguc3RhcnQmJigiYmxvY2siPT09aC5sZXZlbD9hLnN0YXJ0QmxvY2s/YS5zdGFydEJsb2NrLnB1c2goaC5zdGFydCk6YS5z''@;'; put 'put ''dGFydEJsb2NrPVtoLnN0YXJ0XToiaW5saW5lIj09PWgubGV2ZWwmJihhLnN0YXJ0SW5saW5lP2Euc3RhcnRJbmxpbmUucHVzaChoLnN0YXJ0KTphLnN0YXJ0SW5saW5lPVtoLnN0YXJ0XSkpfWguY2hpbGRUb2tlbnMmJihhLmNoaWxkVG9rZW5zW2gubmFtZV09aC5jaGlsZFRva2Vucyl9KSxk''@;'; put 'put ''LmV4dGVuc2lvbnM9YSksZi5yZW5kZXJlcil7Y29uc3QgaD10aGlzLmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgVkkodGhpcy5kZWZhdWx0cyk7Zm9yKGNvbnN0IG0gaW4gZi5yZW5kZXJlcil7Y29uc3QgXz1oW21dO2hbbV09KC4uLk8pPT57bGV0IFg9Zi5yZW5kZXJlclttXS5hcHBseShoLE8p''@;'; put 'put ''O3JldHVybiExPT09WCYmKFg9Xy5hcHBseShoLE8pKSxYfX1kLnJlbmRlcmVyPWh9aWYoZi50b2tlbml6ZXIpe2NvbnN0IGg9dGhpcy5kZWZhdWx0cy50b2tlbml6ZXJ8fG5ldyBOSSh0aGlzLmRlZmF1bHRzKTtmb3IoY29uc3QgbSBpbiBmLnRva2VuaXplcil7Y29uc3QgXz1oW21dO2hbbV09''@;'; put 'put ''KC4uLk8pPT57bGV0IFg9Zi50b2tlbml6ZXJbbV0uYXBwbHkoaCxPKTtyZXR1cm4hMT09PVgmJihYPV8uYXBwbHkoaCxPKSksWH19ZC50b2tlbml6ZXI9aH1pZihmLmhvb2tzKXtjb25zdCBoPXRoaXMuZGVmYXVsdHMuaG9va3N8fG5ldyBSUztmb3IoY29uc3QgbSBpbiBmLmhvb2tzKXtjb25z''@;'; put 'put ''dCBfPWhbbV07aFttXT1SUy5wYXNzVGhyb3VnaEhvb2tzLmhhcyhtKT9PPT57aWYodGhpcy5kZWZhdWx0cy5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYuaG9va3NbbV0uY2FsbChoLE8pKS50aGVuKGFlPT5fLmNhbGwoaCxhZSkpO2NvbnN0IFg9Zi5ob29rc1ttXS5jYWxsKGgsTyk7''@;'; put 'put ''cmV0dXJuIF8uY2FsbChoLFgpfTooLi4uTyk9PntsZXQgWD1mLmhvb2tzW21dLmFwcGx5KGgsTyk7cmV0dXJuITE9PT1YJiYoWD1fLmFwcGx5KGgsTykpLFh9fWQuaG9va3M9aH1pZihmLndhbGtUb2tlbnMpe2NvbnN0IGg9dGhpcy5kZWZhdWx0cy53YWxrVG9rZW5zO2Qud2Fsa1Rva2Vucz1m''@;'; put 'put ''dW5jdGlvbihtKXtsZXQgXz1bXTtyZXR1cm4gXy5wdXNoKGYud2Fsa1Rva2Vucy5jYWxsKHRoaXMsbSkpLGgmJihfPV8uY29uY2F0KGguY2FsbCh0aGlzLG0pKSksX319dGhpcy5kZWZhdWx0cz17Li4udGhpcy5kZWZhdWx0cywuLi5kfX0pLHRoaXN9c2V0T3B0aW9ucyhjKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kZWZhdWx0cz17Li4udGhpcy5kZWZhdWx0cywuLi5jfSx0aGlzfX0oRTQpO2Z1bmN0aW9uIGdsKGwsYyxhKXtyZXR1cm4gbTUucGFyc2UobCxjLGEpfWdsLm9wdGlvbnM9Z2wuc2V0T3B0aW9ucz1mdW5jdGlvbihsKXtyZXR1cm4gbTUuc2V0T3B0aW9ucyhsKSxTY2UoZ2wuZGVmYXVsdHM9''@;'; put 'put ''bTUuZGVmYXVsdHMpLGdsfSxnbC5nZXREZWZhdWx0cz1mdW5jdGlvbiBxWigpe3JldHVybnthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDoiIixoaWdobGlnaHQ6bnVsbCxob29rczpudWxsLGxh''@;'; put 'put ''bmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6bnVsbCx4aHRtbDohMX19LGdsLmRlZmF1bHRzPUU0''@;'; put 'put ''LGdsLnVzZT1mdW5jdGlvbiguLi5sKXtyZXR1cm4gbTUudXNlKC4uLmwpLFNjZShnbC5kZWZhdWx0cz1tNS5kZWZhdWx0cyksZ2x9LGdsLndhbGtUb2tlbnM9ZnVuY3Rpb24obCxjKXtyZXR1cm4gbTUud2Fsa1Rva2VucyhsLGMpfSxnbC5wYXJzZUlubGluZT1tNS5wYXJzZUlubGluZSxnbC5Q''@;'; put 'put ''YXJzZXI9RmgsZ2wucGFyc2VyPUZoLnBhcnNlLGdsLlJlbmRlcmVyPVZJLGdsLlRleHRSZW5kZXJlcj1YWixnbC5MZXhlcj1QaCxnbC5sZXhlcj1QaC5sZXgsZ2wuVG9rZW5pemVyPU5JLGdsLlNsdWdnZXI9SlosZ2wuSG9va3M9UlMsZ2wucGFyc2U9Z2w7Y29uc3QgQ1dlPVsibWFya2Rvd25D''@;'; put 'put ''YXJkIl07ZnVuY3Rpb24gU1dlKGwsYyl7MSZsJiZ0bigwLCJjbHItc3Bpbm5lciIsOCl9bGV0IE1XZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuc2FzU2VydmljZT1hLHRoaXMuYWdyZWVDaGVja2VkPSExLHRoaXMuYWdyZWVCb3hMb2NrZWQ9ITAsdGhpcy5hZ3JlZUNsaWNr''@;'; put 'put ''ZWQ9ITEsdGhpcy5ldWxhX21hcmtkb3duPSdcbkxpY2VuY2UgQWdyZWVtZW50IGZvciBEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YWVcbj09PT09PT09PT09PT09PT09PT09XG5cbkNvcHlyaWdodCAoYykgQm93ZSBJTyBMdGRcblxuRGF0YSBDb250cm9sbGVyIHNvZnR3YXJlIGlzIGRpc3Ry''@;'; put 'put ''aWJ1dGVkIGJ5IDRHTCBBcHBzLCBhIGJyYW5kIG93bmVkIGJ5IEJvd2UgSU8gTHRkLCBhIFVLIExpbWl0ZWQgQ29tcGFueSBoZWFkcXVhcnRlZCBpbiAyOSBPbGRmaWVsZCBSZCwgQ3VtYnJpYSwgcmVnaXN0ZXJlZCBhdCBDb21wYW5pZXMgSG91c2Ugd2l0aCBjb21wYW55IG51bWJlciAwODc3''@;'; put 'put ''NzE3MSwgVkFUIG51bWJlcjogMjAzOTE0MjQwXG5cblRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IGFwcGxpY2FibGUgY29weXJpZ2h0IGxhd3MsIGluY2x1ZGluZyBpbnRlcm5hdGlvbmFsIHRyZWF0aWVzLCBhbmQgZHVhbC1saWNlbnNlZCBcdTIwMTMgZGVwZW5kaW5nIG9uIHdoZXRo''@;'; put 'put ''ZXIgeW91ciB1c2UgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMsIG1lYW5pbmcgaW50ZW5kZWQgZm9yIG9yIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC5cblxuSWYgeW91ciB1c2UgaXMgc3RyaWN0bHkgcGVyc29uYWwg''@;'; put 'put ''b3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZyB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1l''@;'; put 'put ''bnQsIHlvdSBhZ3JlZSB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJsaWNlbmNlLW5vbi1jb21tZXJjaWFsLWRhdGFjb250cm9sbGVyLm1kIiBmaWxlIGF2YWlsYWJsZSBoZXJlOiAgaHR0cHM6Ly9naXQuZGF0YWNvbnRyb2xsZXIuaW8vZGMvZGMvc3JjL2JyYW5j''@;'; put 'put ''aC9tYWluL2xpY2VuY2Utbm9uLWNvbW1lcmNpYWwtZGF0YWNvbnRyb2xsZXIubWRcblxuWW91ciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcyBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBpbmNsdWRlZCBpbiBhbiBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVt''@;'; put 'put ''ZW50LlxuXG5JbiBhbnkgY2FzZSwgeW91IG11c3Qgbm90IG1ha2UgYW55IHN1Y2ggdXNlIG9mIHRoaXMgc29mdHdhcmUgYXMgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB3aGljaCBtYXkgYmUgY29uc2lkZXJlZCBjb21wZXRpdGl2ZSB3aXRoIHRoaXMgc29mdHdhcmUuXG5cblVOTEVTUyBFWFBSRVNT''@;'; put 'put ''TFkgQUdSRUVEIE9USEVSV0lTRSwgNEdMIEFQUFMgUFJPVklERVMgVEhJUyBTT0ZUV0FSRSBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgQU5EIElOIE5PIEVWRU5UIEFORCBVTkRFUiBOTyBMRUdBTCBUSEVPUlksIFNI''@;'; put 'put ''QUxMIDRHTCBBUFBTIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBDSEFSQUNURVIgQVJJU0lORyBGUk9NIFVTRSBPUiBJTkFCSUxJ''@;'; put 'put ''VFkgVE8gVVNFIFRISVMgU09GVFdBUkUuXG5cblxuJ31uZ09uSW5pdCgpe2NvbnN0IGE9Z2wuc2V0T3B0aW9ucyh7fSk7dGhpcy5ldWxhX21hcmtkb3duPWEucGFyc2UodGhpcy5ldWxhX21hcmtkb3duKX1uZ0FmdGVyVmlld0luaXQoKXtzZXRUaW1lb3V0KCgpPT57dGhpcy5tYXJrZG93bkNh''@;'; put 'put ''cmQmJnRoaXMubWFya2Rvd25DYXJkLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInNjcm9sbCIpKX0pfXRlcm1zQWdyZWVDaGFuZ2UoKXt0aGlzLmFncmVlQ2hlY2tlZCYmKHRoaXMuYWdyZWVCb3hMb2NrZWQ9ITAsdGhpcy5hZ3JlZUNsaWNrZWQ9ITAsdGhp''@;'; put 'put ''cy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9yZWdpc3RlcnVzZXIiLHtTQVNDb250cm9sVGFibGU6W3tBQ0NFUFRFRDoieWVzIn1dfSkudGhlbihmPT57Zi5yZXR1cm4mJmYucmV0dXJuWzBdJiYiU1VDQ0VTUyI9PT1mLnJldHVyblswXS5NU0cmJmxvY2F0aW9uLnJlbG9hZCgpfSkuY2F0''@;'; put 'put ''Y2goZj0+ZikuZmluYWxseSgoKT0+e3NldFRpbWVvdXQoKCk9Pnt0aGlzLmFncmVlQm94TG9ja2VkPSExLHRoaXMuYWdyZWVDbGlja2VkPSExLHRoaXMuYWdyZWVDaGVja2VkPSExfSwxZTMpfSkpfW9uQ2FyZEJsb2NrU2Nyb2xsKGEpe2lmKCF0aGlzLmFncmVlQ2xpY2tlZCl7bGV0IGY9YS50''@;'; put 'put ''YXJnZXQ7ZiYmKHRoaXMuYWdyZWVCb3hMb2NrZWQ9IShmLnNjcm9sbFRvcCtmLm9mZnNldEhlaWdodD49Zi5zY3JvbGxIZWlnaHQtMjApKX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KHBsKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2Vs''@;'; put 'put ''ZWN0b3JzOltbImFwcC10ZXJtcyJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxmKXtpZigxJmEmJk5vKENXZSw1KSwyJmEpe2xldCBkO3VpKGQ9Y2koKSkmJihmLm1hcmtkb3duQ2FyZD1kLmZpcnN0KX19LGRlY2xzOjEzLHZhcnM6Nixjb25zdHM6W1sxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVy''@;'; put 'put ''Il0sWzEsImNhcmQtYmxvY2siLDMsImlubmVySFRNTCIsInNjcm9sbCJdLFsibWFya2Rvd25DYXJkIiwiIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwiYWNjZXB0LWNoZWNrYm94Il0sWyJjbHJDaGVja2JveCIsIiIsInR5cGUiLCJjaGVja2JveCIsMywibmdN''@;'; put 'put ''b2RlbCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFsiY2xySW5saW5lIiwic21hbGwiLDQsIm5nSWYiXSxbImNscklubGluZSIsInNtYWxsIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSgxLCJkaXYiLDEpLFllKDIsIiBFbmQgVXNl''@;'; put 'put ''ciBMaWNlbnNlIEFncmVlbWVudCAiKSx5ZSgzLCJwIiksWWUoNCwiIFdlbGNvbWUgdG8gRGF0YSBDb250cm9sbGVyIGZvciBTQVMhIFBsZWFzZSByZXZpZXcgYW5kIGFjY2VwdCBhZ3JlZW1lbnQgYmVsb3cgaW4gb3JkZXIgdG8gcHJvY2VlZC4gIiksQ2UoKSgpLHllKDUsImRpdiIsMiwzKSxF''@;'; put 'put ''dCgic2Nyb2xsIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkNhcmRCbG9ja1Njcm9sbChoKX0pLENlKCkseWUoNywiZGl2Iiw0KSg4LCJjbHItY2hlY2tib3gtd3JhcHBlciIsNSkoOSwiaW5wdXQiLDYpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5hZ3JlZUNoZWNr''@;'; put 'put ''ZWQ9aH0pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGYudGVybXNBZ3JlZUNoYW5nZSgpfSksQ2UoKSx5ZSgxMCwibGFiZWwiKSxZZSgxMSwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSB0ZXJtcyBvZiBhYm92ZS4iKSxDZSgpKCksdHQoMTIsU1dlLDEsMCwiY2xyLXNwaW5uZXIi''@;'; put 'put ''LDcpLENlKCkoKSksMiZhJiYoU2UoNSksUmUoImlubmVySFRNTCIsZi5ldWxhX21hcmtkb3duLHZoKSxTZSgzKSxncigiZGlzYWJsZWQiLGYuYWdyZWVCb3hMb2NrZWQpLFNlKDEpLFJlKCJuZ01vZGVsIixmLmFncmVlQ2hlY2tlZCkoImRpc2FibGVkIixmLmFncmVlQm94TG9ja2VkKSxTZSgz''@;'; put 'put ''KSxSZSgibmdJZiIsZi5hZ3JlZUJveExvY2tlZCYmZi5hZ3JlZUNsaWNrZWQpKX0sZGVwZW5kZW5jaWVzOlskaSxSMCxXYSx6YSxlbCxCMCxWMCxSaF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiNmNWY2ZmZ9LmNsci1jaGVja2JveC13cmFwcGVy''@;'; put 'put ''LmRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi41fS5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21hcmdpbi10b3A6MH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZC1ibG9ja1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17ZmxleDoxO292ZXJmbG93OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0fS5hY2NlcHQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MTBweCAxNXB4fSJdfSksbH0pKCksTGNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhp''@;'; put 'put ''cy5maWxlT3Zlcj1uZXcgeHIsdGhpcy5maWxlRHJvcD1uZXcgeHIsdGhpcy5lbGVtZW50PWF9b25Ecm9wKGEpe3RoaXMuX3ByZXZlbnRBbmRTdG9wKGEpO2NvbnN0IGY9YS5kYXRhVHJhbnNmZXI/LmZpbGVzLGQ9W107aWYoZilmb3IobGV0IGg9MDtoPGYubGVuZ3RoO2grKylkLnB1c2goZlto''@;'; put 'put ''XSk7dGhpcy51cGxvYWRlcj8uYWRkVG9RdWV1ZShkKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpLHRoaXMuZmlsZURyb3AuZW1pdChkKX1vbkRyYWdPdmVyKGEpe3RoaXMuX3ByZXZlbnRBbmRTdG9wKGEpO2NvbnN0IGY9YS5kYXRhVHJhbnNmZXI7aWYoZil7aWYoLTE9PT1mLnR5cGVzLmluZGV4''@;'; put 'put ''T2YoIkZpbGVzIikpcmV0dXJuO2YuZHJvcEVmZmVjdD0iY29weSJ9dGhpcy5maWxlT3Zlci5lbWl0KCEwKX1vbkRyYWdMZWF2ZShhKXt0aGlzLl9wcmV2ZW50QW5kU3RvcChhKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpfV9wcmV2ZW50QW5kU3RvcChhKXthLnByZXZlbnREZWZhdWx0KCksYS5z''@;'; put 'put ''dG9wUHJvcGFnYXRpb24oKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoVmkpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiYXBwRmlsZURyb3AiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZF''@;'; put 'put ''dCgiZHJvcCIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25Ecm9wKGgpfSkoImRyYWdvdmVyIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbkRyYWdPdmVyKGgpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25EcmFnTGVhdmUoaCl9KX0saW5wdXRzOnt1cGxvYWRlcjoidXBsb2Fk''@;'; put 'put ''ZXIifSxvdXRwdXRzOntmaWxlT3ZlcjoiZmlsZU92ZXIiLGZpbGVEcm9wOiJmaWxlRHJvcCJ9fSksbH0pKCk7ZnVuY3Rpb24ga1dlKGwsYyl7MSZsJiYoeWUoMCwicCIsMjcpLFllKDEsIiBMaWNlbmNlIGtleSBpcyBpbnZhbGlkLiBXZSBjYW4ndCBwcm92aWRlIHlvdSBtb3JlIGRldGFpbHMg''@;'; put 'put ''YXQgdGhlIG1vbWVudCAiKSxDZSgpKX1mdW5jdGlvbiBFV2UobCxjKXtpZigxJmwmJnRuKDAsInAiLDI4KSwyJmwpe2NvbnN0IGE9R2UoMyk7UmUoImlubmVySFRNTCIsYS5saWNlbnNlRXJyb3JzW2Eua2V5RXJyb3JdLHZoKX19ZnVuY3Rpb24geFdlKGwsYyl7aWYoMSZsJiYoeWUoMCwicCIp''@;'; put 'put ''KDEsInN0cm9uZyIpLFllKDIsIkRldGFpbHM6IiksQ2UoKSxZZSgzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMyksd3IoIiAiLGEuZXJyb3JEZXRhaWxzLCIiKX19ZnVuY3Rpb24gQVdlKGwsYyl7aWYoMSZsJiYoV3IoMCksdHQoMSxrV2UsMiwwLCJwIiwyNSksdHQoMixFV2UsMSwx''@;'; put 'put ''LCJwIiwyNiksdHQoMyx4V2UsNCwxLCJwIiwxKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLCFhLmtleUVycm9yKSxTZSgxKSxSZSgibmdJZiIsYS5rZXlFcnJvciksU2UoMSksUmUoIm5nSWYiLGEuZXJyb3JEZXRhaWxzKX19ZnVuY3Rpb24gVFdlKGwsYyl7MSZs''@;'; put 'put ''JiYoV3IoMCkseWUoMSwicCIsMjcpLFllKDIsIiBUaGUgcmVnaXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgcmVhY2hlZCB0aGUgbGltaXQgc3BlY2lmaWVkIGZvciB5b3VyIGxpY2VuY2UuIFBsZWFzZSBjb250YWN0ICIpLHRuKDMsImNvbnRhY3QtbGluayIsMjkpLFllKDQsIiBvciB5b3VyIHJl''@;'; put 'put ''c2VsbGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlcyBmb3IgdGhpcyBwcm9kdWN0LiAiKSxDZSgpLEdyKCkpfWZ1bmN0aW9uIE9XZShsLGMpezEmbCYmKFdyKDApLHllKDEsInAiLDI3KSxZZSgyLCIgVXBkYXRlIHRoZSBsaWNlbnNlIGtleSBieSB1cGxvYWRpbmcgdGhlIGxpY2Vu''@;'; put 'put ''Y2UgZmlsZSBvciBieSBwYXN0aW5nIGEgbGljZW5zZSBrZXkgYW5kIGFjdGl2YXRpb24ga2V5IGluIHRoZSBpbnB1dHMgYmVsb3cuICIpLENlKCksR3IoKSl9ZnVuY3Rpb24gRFdlKGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNp''@;'; put 'put ''dCxmPWMuaW5kZXgsZD1HZSgyKTtncigibWlzc2tleSIsZC5taXNzbWF0Y2hlZEtleSYmZC5taXNzbWF0Y2hlZEtleT09PWEpLFNlKDEpLCR1KCIgIixhLCIiLGY9PT0obnVsbD09ZC5zeXNzaXRlLnZhbHVlP251bGw6ZC5zeXNzaXRlLnZhbHVlLmxlbmd0aCktMT8iIjoiLCIsIiAiKX19ZnVu''@;'; put 'put ''Y3Rpb24gSVdlKGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsMzApKDEsInN0cm9uZyIpLFllKDIsIkFsbG93ZWQgdXNlcnM6IiksQ2UoKSxZZSgzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMyksd3IoIiAiLGEubGljZW5zZUtleURhdGEudXNlcnNfYWxsb3dlZCwiICIpfX1mdW5jdGlv''@;'; put 'put ''biBSV2UobCxjKXsxJmwmJnRuKDAsImNsci1zcGlubmVyIiwzMSl9ZnVuY3Rpb24gTFdlKGwsYyl7MSZsJiYoeWUoMCwiZGl2IiksWWUoMSwiIERyb3AgLyBCcm93c2UgbGljZW5jZSBmaWxlICIpLENlKCkpfWZ1bmN0aW9uIFBXZShsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIpLFllKDEsIiBT''@;'; put 'put ''ZWxlY3RlZCBmaWxlOiAiKSx5ZSgyLCJzdHJvbmciKSxZZSgzKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgzKSxhcihhLmxpY2VuY2VmaWxlLmZpbGVuYW1lKX19ZnVuY3Rpb24gRldlKGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IikoMSwic3Ryb25nIiksWWUoMiksQ2UoKSgpKSwy''@;'; put 'put ''Jmwpe2NvbnN0IGE9R2UoMyk7U2UoMiksYXIoYS5saWNlbmNlRmlsZUVycm9yKX19ZnVuY3Rpb24gSFdlKGwsYyl7aWYoMSZsJiYoV3IoMCksdHQoMSxMV2UsMiwwLCJkaXYiLDEpLHR0KDIsUFdlLDQsMSwiZGl2IiwxKSx0dCgzLEZXZSwzLDEsImRpdiIsMSksR3IoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PUdlKDIpO1NlKDEpLFJlKCJuZ0lmIiwiIj09PWEubGljZW5jZWZpbGUuZmlsZW5hbWUpLFNlKDEpLFJlKCJuZ0lmIiwiIiE9PWEubGljZW5jZWZpbGUuZmlsZW5hbWUpLFNlKDEpLFJlKCJuZ0lmIixhLmxpY2VuY2VGaWxlRXJyb3IpfX1mdW5jdGlvbiBOV2UobCxjKXsxJmwmJih5ZSgwLCJi''@;'; put 'put ''dXR0b24iLDMyKSxZZSgxLCIgQ29udGludWUgd2l0aCBmcmVlIHRpZXIgIiksQ2UoKSl9ZnVuY3Rpb24gVldlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwyKSgxLCJkaXYiLDMpLFllKDIsIkxpY2VuY2luZyIpLENlKCkseWUoMywiZGl2Iiw0KSx0dCg0LEFXZSw0LDMs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsNSksdHQoNSxUV2UsNSwwLCJuZy1jb250YWluZXIiLDUpLHR0KDYsT1dlLDMsMCwibmctY29udGFpbmVyIiw1KSx5ZSg3LCJwIikoOCwic3Ryb25nIiksWWUoOSwiU1lTU0lURToiKSxDZSgpLHR0KDEwLERXZSwyLDQsInNwYW4iLDYpLHllKDExLCJhIiw3KSxFdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1RaSgxMyksaD1RaSgxNSksbT1HZSgpO3JldHVybiBadChtLmNvcHlTeXNzaXRlKGQsaCxtLnN5c3NpdGUudmFsdWV8fFtdKSl9KSx0bigxMiwiY2xyLWljb24iLDgsOSkseWUoMTQsInNwYW4iLDEwLDExKSxZZSgxNiwiQ29weSB0byBj''@;'; put 'put ''bGlwYm9hcmQiKSxDZSgpKCkoKSx0dCgxNyxJV2UsNCwxLCJwIiwxMikseWUoMTgsImNsci10YWJzIikoMTksImNsci10YWIiKSgyMCwiYnV0dG9uIiwxMyksWWUoMjEsIlVwbG9hZCBsaWNlbmNlIiksQ2UoKSx5ZSgyMiwiY2xyLXRhYi1jb250ZW50IikoMjMsImlucHV0IiwxNCwxNSksRXQo''@;'; put 'put ''ImNoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub25GaWxlQ2FwdHVyZShkKSl9KSxDZSgpLHllKDI1LCJkaXYiLDE2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KFFpKDI0KS5jbGljaygpKX0pKCJmaWxlRHJvcCIsZnVuY3Rpb24oZCl7cmV0''@;'; put 'put ''dXJuIFV0KGEpLFp0KEdlKCkub25GaWxlQ2FwdHVyZShkLCEwKSl9KSx0dCgyNixSV2UsMSwwLCJjbHItc3Bpbm5lciIsMTcpLHR0KDI3LEhXZSw0LDMsIm5nLWNvbnRhaW5lciIsMSksQ2UoKSgpKCkseWUoMjgsImNsci10YWIiKSgyOSwiYnV0dG9uIiwxMyksWWUoMzAsIlBhc3RlIGxpY2Vu''@;'; put 'put ''Y2UiKSxDZSgpLHllKDMxLCJjbHItdGFiLWNvbnRlbnQiKSgzMiwiZm9ybSIsMTgpKDMzLCJwIiksWWUoMzQsIkxpY2VuY2Uga2V5OiIpLENlKCkseWUoMzUsImRpdiIsMTkpKDM2LCJ0ZXh0YXJlYSIsMjApLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQo''@;'; put 'put ''R2UoKS5saWNlbmNlS2V5VmFsdWU9ZCl9KSgibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS50cmltS2V5cygpKX0pLENlKCkoKSgpLHllKDM3LCJmb3JtIiwyMSkoMzgsInAiKSxZZSgzOSwiQWN0aXZhdGlvbiBrZXk6IiksQ2UoKSx5ZSg0MCwiZGl2IiwxOSko''@;'; put 'put ''NDEsInRleHRhcmVhIiwyMiksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmFjdGl2YXRpb25LZXlWYWx1ZT1kKX0pKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnRyaW1LZXlzKCkpfSksQ2UoKSgpKCkoKSgp''@;'; put 'put ''KCkseWUoNDIsImJ1dHRvbiIsMjMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5hcHBseUtleXMoKSl9KSxZZSg0MywiIEFwcGx5IGxpY2VuY2Uga2V5cyAiKSxDZSgpLHR0KDQ0LE5XZSwyLDAsImJ1dHRvbiIsMjQpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9''@;'; put 'put ''R2UoKTtTZSgzKSxSZSgibmdTd2l0Y2giLGEuYWN0aW9uKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIiwia2V5IiksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsImxpbWl0IiksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsInVwZGF0ZSIpLFNlKDQpLFJlKCJuZ0Zvck9mIixhLnN5c3NpdGUudmFs''@;'; put 'put ''dWUpLFNlKDcpLFJlKCJuZ0lmIixhLmxpY2Vuc2VLZXlEYXRhJiZhLnVzZXJDb3VudExpbWl0YXRpb24pLFNlKDkpLFJlKCJuZ0lmIixhLmxpY2VuY2VGaWxlTG9hZGluZyksU2UoMSksUmUoIm5nSWYiLCFhLmxpY2VuY2VGaWxlTG9hZGluZyksU2UoOSksUmUoIm5nTW9kZWwiLGEubGljZW5j''@;'; put 'put ''ZUtleVZhbHVlKSxTZSg1KSxSZSgibmdNb2RlbCIsYS5hY3RpdmF0aW9uS2V5VmFsdWUpLFNlKDEpLFJlKCJjbHJMb2FkaW5nIixhLmFwcGx5aW5nS2V5cykoImRpc2FibGVkIixhLmRpc2FibGVBcHBseUJ1dHRvbiksU2UoMiksUmUoIm5nSWYiLGEuaXNBcHBGcmVlVGllci52YWx1ZSl9fWZ1''@;'; put 'put ''bmN0aW9uIEJXZShsLGMpezEmbCYmdG4oMCwiYXBwLXRlcm1zIil9dmFyIFBjZT1mdW5jdGlvbihsKXtyZXR1cm4gbC5rZXk9ImtleSIsbC5yZWdpc3Rlcj0icmVnaXN0ZXIiLGwubGltaXQ9ImxpbWl0IixsLnVwZGF0ZT0idXBkYXRlIixsfShQY2V8fHt9KTtsZXQgaldlPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5yb3V0ZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9Zix0aGlzLnNhc1NlcnZpY2U9ZCx0aGlzLmFwcFNlcnZpY2U9aCx0aGlzLmFjdGlvbj1udWxsLHRoaXMubGljZW5zZUVycm9ycz17bWlzc2luZzonTGljZW5jZSBrZXkgaXMgbWlzc2luZyAt''@;'; put 'put ''IHBsZWFzZSBjb250YWN0IDxhIGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvPC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy4nLGV4cGlyZWQ6J0xpY2VuY2Uga2V5IGlzIGV4''@;'; put 'put ''cGlyZWQgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3VwcG9ydEBkYXRhY29udHJvbGxlci5pbzwvYT4gYW5kIGVudGVyIHZhbGlkIGtleXMgYmVsb3cuJyxpbnZhbGlkOidMaWNlbmNlIGtl''@;'; put 'put ''eSBpcyBpbnZhbGlkIC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW88L2E+IGFuZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93LicsbWlzc21hdGNoOidZ''@;'; put 'put ''b3VyIFNZU1NJVEUgKGJlbG93KSBpcyBub3QgZm91bmQgaW4gdGhlIGxpY2VuY2Uga2V5IC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW88L2E+IGFu''@;'; put 'put ''ZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93Lid9LHRoaXMubGljZW5jZUtleVZhbHVlPSIiLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPSIiLHRoaXMuYXBwbHlpbmdLZXlzPSExLHRoaXMuc3lzc2l0ZT10aGlzLmFwcFNlcnZpY2Uuc3lzc2l0ZSx0aGlzLmN1cnJlbnRMaWNlbmNlS2V5PXRoaXMu''@;'; put 'put ''bGljZW5jZVNlcnZpY2UubGljZW5jZUtleSx0aGlzLmN1cnJlbnRBY3RpdmF0aW9uS2V5PXRoaXMubGljZW5jZVNlcnZpY2UuYWN0aXZhdGlvbktleSx0aGlzLmlzQXBwRnJlZVRpZXI9dGhpcy5saWNlbmNlU2VydmljZS5pc0FwcEZyZWVUaWVyLHRoaXMudXNlckNvdW50TGltaXRhdGlvbj10''@;'; put 'put ''aGlzLmxpY2VuY2VTZXJ2aWNlLnVzZXJDb3VudExpbWl0YXRpb24sdGhpcy5saWNlbnNlS2V5RGF0YT1udWxsLHRoaXMuaW5wdXRUeXBlPSJmaWxlIix0aGlzLmxpY2VuY2VGaWxlTG9hZGluZz0hMSx0aGlzLmxpY2VuY2VmaWxlPXtmaWxlbmFtZToiIn19bmdPbkluaXQoKXt0aGlzLmxpY2Vu''@;'; put 'put ''Y2VLZXlWYWx1ZT10aGlzLmN1cnJlbnRMaWNlbmNlS2V5fHwiIix0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT10aGlzLmN1cnJlbnRBY3RpdmF0aW9uS2V5fHwiIix0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShhPT57dGhpcy5rZXlFcnJvcj1hLmVycm9yLHRoaXMubWlzc21hdGNo''@;'; put 'put ''ZWRLZXk9YS5taXNzbWF0Y2hJZCxhLmRldGFpbHMmJih0aGlzLmVycm9yRGV0YWlscz1hdG9iKGEuZGV0YWlscykpfSksdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGE9PntsZXQgZj1hLmFjdGlvbjtmJiZPYmplY3QudmFsdWVzKFBjZSkuaW5jbHVkZXMoZikmJih0aGlzLmFjdGlvbj1m''@;'; put 'put ''KX0pLHRoaXMubGljZW5zZUtleURhdGE9dGhpcy5saWNlbmNlU2VydmljZS5nZXRMaWNlbnNlS2V5RGF0YSgpfXRyaW1LZXlzKCl7dGhpcy5saWNlbmNlS2V5VmFsdWU9dGhpcy5saWNlbmNlS2V5VmFsdWUudHJpbSgpLHRoaXMuYWN0aXZhdGlvbktleVZhbHVlPXRoaXMuYWN0aXZhdGlvbktl''@;'; put 'put ''eVZhbHVlLnRyaW0oKX1jb3B5U3lzc2l0ZShhLGYsZCl7Y29uc3QgaD1kLmpvaW4oIlxuIik7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoaCkudGhlbigoKT0+e2Euc2V0QXR0cmlidXRlKCJzaGFwZSIsImNoZWNrIiksYS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiaXMtc3VjY2VzcyIp''@;'; put 'put ''LGYuaW5uZXJUZXh0PSJDb3BpZWQhIixzZXRUaW1lb3V0KCgpPT57YS5zZXRBdHRyaWJ1dGUoInNoYXBlIiwiY29weSIpLGEucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpLGYuaW5uZXJUZXh0PSJDb3B5IHRvIGNsaXBib2FyZCJ9LDFlMyl9KX1hcHBseUtleXMoKXt0aGlzLmFwcGx5aW5nS2V5''@;'; put 'put ''cz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiYWRtaW4vcmVnaXN0ZXJrZXkiLHtrZXl1cGxvYWQ6W3tBQ1RJVkFUSU9OX0tFWTp0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZSxMSUNFTkNFX0tFWTp0aGlzLmxpY2VuY2VLZXlWYWx1ZX1dfSkudGhlbihmPT57Zi5yZXR1cm4mJmYucmV0dXJu''@;'; put 'put ''WzBdJiYiU1VDQ0VTUyI9PT1mLnJldHVyblswXS5NU0cmJmxvY2F0aW9uLnJlcGxhY2UobG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKX0pLmZpbmFsbHkoKCk9Pnt0aGlzLmFwcGx5aW5nS2V5cz0hMX0pfW9uRmlsZUNhcHR1cmUoYSxmPSExKXtsZXQgZD1mP2FbMF06YS50YXJnZXQuZmls''@;'; put 'put ''ZXNbMF07aWYodGhpcy5saWNlbmNlZmlsZS5maWxlbmFtZT1kLm5hbWUsIWQpcmV0dXJuO3RoaXMubGljZW5jZUZpbGVMb2FkaW5nPSEwO2NvbnN0IGg9bmV3IEZpbGVSZWFkZXI7aC5vbmxvYWQ9bT0+e2lmKHRoaXMubGljZW5jZUZpbGVFcnJvcj0iRXJyb3IgcmVhZGluZyBmaWxlLiIsIW18''@;'; put 'put ''fCFtLnRhcmdldHx8MiE9bS50YXJnZXQucmVhZHlTdGF0ZXx8bS50YXJnZXQuZXJyb3J8fCFtLnRhcmdldC5yZXN1bHQpcmV0dXJuO3RoaXMubGljZW5jZUZpbGVMb2FkaW5nPSExLHRoaXMubGljZW5jZUZpbGVFcnJvcj12b2lkIDA7Y29uc3QgXz1tLnRhcmdldC5yZXN1bHQudG9TdHJpbmco''@;'; put 'put ''KS5zcGxpdCgiXG4iKTt0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT1fWzFdLHRoaXMubGljZW5jZUtleVZhbHVlPV9bMF19LGgucmVhZEFzVGV4dChkKX1zd2l0Y2hUeXBlKGEpe3RoaXMuaW5wdXRUeXBlPWF9Z2V0IGRpc2FibGVBcHBseUJ1dHRvbigpe3JldHVybiB0aGlzLmxpY2VuY2VLZXlW''@;'; put 'put ''YWx1ZS5sZW5ndGg8MXx8dGhpcy5hY3RpdmF0aW9uS2V5VmFsdWUubGVuZ3RoPDF8fHRoaXMubGljZW5jZUtleVZhbHVlPT09dGhpcy5jdXJyZW50TGljZW5jZUtleSYmdGhpcy5hY3RpdmF0aW9uS2V5VmFsdWU9PT10aGlzLmN1cnJlbnRBY3RpdmF0aW9uS2V5fX1yZXR1cm4gbC5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydCh0dSkscnQoYjEpLHJ0KHBsKSxydCh3RCkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbGljZW5zaW5nIl1dLGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsImNhcmQiLDQsIm5nSWYiXSxb''@;'; put 'put ''NCwibmdJZiJdLFsxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFszLCJtaXNza2V5Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLXRvcC1yaWdo''@;'; put 'put ''dCIsMywiY2xpY2siXSxbInNoYXBlIiwiY29weSIsInNpemUiLCIxNSIsMSwiY3Vyc29yLXBvaW50ZXIiXSxbImNvcHlJY29uIiwiIl0sWzEsInRvb2x0aXAtY29udGVudCJdLFsiY29weVRvb2x0aXAiLCIiXSxbImNsYXNzIiwibS0wIiw0LCJuZ0lmIl0sWyJjbHJUYWJMaW5rIiwiIl0sWyJ0''@;'; put 'put ''eXBlIiwiZmlsZSIsImhpZGRlbiIsIiIsMywiY2hhbmdlIl0sWyJsaWNlbmNlRmlsZSIsIiJdLFsiYXBwRmlsZURyb3AiLCIiLDEsImRyb3AtYXJlYSIsMywiY2xpY2siLCJmaWxlRHJvcCJdLFsiY2xhc3MiLCJzcGlubmVyLXNtIiw0LCJuZ0lmIl0sWzEsImNsci1mb3JtIiwibGljZW5zZS1r''@;'; put 'put ''ZXktZm9ybSJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbIm5hbWUiLCJsaWNlbnNlLWtleS1hcmVhIiwicGxhY2Vob2xkZXIiLCJQYXN0ZSBsaWNlbmNlIGtleSBoZXJlIiwxLCJjbHItdGV4dGFyZWEiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwibW91c2VsZWF2ZSJdLFsx''@;'; put 'put ''LCJjbHItZm9ybSIsImFjdGl2YXRpb24ta2V5LWZvcm0iXSxbIm5hbWUiLCJhY3RpdmF0aW9uLWtleS1hcmVhIiwicGxhY2Vob2xkZXIiLCJQYXN0ZSBhY3RpdmF0aW9uIGtleSBoZXJlIiwxLCJjbHItdGV4dGFyZWEiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwibW91c2VsZWF2ZSJd''@;'; put 'put ''LFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImFwcGx5LWtleXMiLDMsImNsckxvYWRpbmciLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJyb3V0ZXJMaW5rIiwiLyIsImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4tbGluayIsNCwibmdJZiJdLFsiY2xhc3MiLCJrZXktZXJyb3IiLDQsIm5nSWYiXSxbImNs''@;'; put 'put ''YXNzIiwia2V5LWVycm9yIiwzLCJpbm5lckhUTUwiLDQsIm5nSWYiXSxbMSwia2V5LWVycm9yIl0sWzEsImtleS1lcnJvciIsMywiaW5uZXJIVE1MIl0sWyJjbGFzc2VzIiwiY29sb3ItZ3JlZW4iXSxbMSwibS0wIl0sWzEsInNwaW5uZXItc20iXSxbInJvdXRlckxpbmsiLCIvIiwxLCJidG4i''@;'; put 'put ''LCJidG4tc20iLCJidG4tbGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHR0KDAsVldlLDQ1LDEzLCJkaXYiLDApLHR0KDEsQldlLDEsMCwiYXBwLXRlcm1zIiwxKSksMiZhJiYoUmUoIm5nSWYiLCJyZWdpc3RlciIhPT1mLmFjdGlvbiksU2UoMSksUmUoIm5nSWYiLCJyZWdp''@;'; put 'put ''c3RlciI9PT1mLmFjdGlvbikpfSxkZXBlbmRlbmNpZXM6W1JhLCRpLGtmLENoLHA0LGlzLFdhLGg0LHphLENkLEkwLE1XZSxiSSxSbCxKYyxJaCx1NSxmNSxUNyxjNSxsNSxBNyxSaCxMY2VdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17aGVpZ2h0OmNhbGMoMTAwJSAtIDk2cHgpO3BhZGRp''@;'; put 'put ''bmc6MjBweH0uY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowfS5rZXktZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5taXNza2V5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTc0YzNjfS5saWNlbnNlLWtleS1mb3JtW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MH0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubGljZW5zZS1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSwgLmFjdGl2YXRpb24ta2V5LWZvcm1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1jb250cm9sLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0YXJlYVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtoZWlnaHQ6MTcwcHg7bWF4LWhlaWdodDox''@;'; put 'put ''NzBweDttaW4taGVpZ2h0OjE3MHB4O3Jlc2l6ZTpub25lfS5hcHBseS1rZXlzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDBweDt3aWR0aDoyMDBweH0uZHJvcC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVt''@;'; put 'put ''czpjZW50ZXI7cGFkZGluZzoxNXB4O2JvcmRlcjoycHggZGFzaGVkICNiMmIyYjI7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjEwcHggMH1jbHItdGFic1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9u''@;'; put 'put ''ZSFpbXBvcnRhbnR9Il19KSxsfSkoKSxlWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5saWNlbmNlU2VydmljZT1hLHRoaXMucm91dGVyPWZ9Y2FuQWN0aXZhdGUoYSxmKXtyZXR1cm4hISh2b2lkIDAhPT1mPy5yb290LnF1ZXJ5UGFyYW1zLmZvcmNlfHxmPy51cmwuaW5j''@;'; put 'put ''bHVkZXMoImxpY2Vuc2luZy91cGRhdGUiKSYmdGhpcy5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZHx8bnVsbCE9PXRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWUmJiExPT09dGhpcy5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC52YWx1ZSl8fCh0aGlz''@;'; put 'put ''LnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvaG9tZSIpLCExKX1jYW5EZWFjdGl2YXRlKGEsZixkLGgpe3JldHVybiEoZD8udXJsLmluY2x1ZGVzKCJsaWNlbnNpbmcvcmVnaXN0ZXIiKXx8dGhpcy5saWNlbmNlU2VydmljZS5hcHBMb2NrZWQudmFsdWUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihiMSksc3IoTGEpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTt2YXIgclksTDcsUFM7ZnVuY3Rpb24gdFkobCl7cmV0dXJuKHRZPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBjfSkobCl9ZnVuY3Rpb24gQkkobCl7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobCl9ZnVuY3Rpb24gRmNlKCl7cmV0dXJuISFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0fWZ1bmN0aW9uIEhjZSgpe3JldHVybiEhZG9jdW1lbnQuY3JlYXRlVGV4dE5v''@;'; put 'put ''ZGUoInRlc3QiKS50ZXh0Q29udGVudH1mdW5jdGlvbiBOY2UoKXtyZXR1cm4hIXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlfWZ1bmN0aW9uIExTKGwpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShsKX1mdW5jdGlvbiBuWSgpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gd2luZG93fWZ1bmN0''@;'; put 'put ''aW9uIGlZKCl7cmV0dXJuIHZvaWQgMD09PXJZJiZmdW5jdGlvbiB6V2UoKXt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUQUJMRSIpO2wuc3R5bGUuYm9yZGVyU3BhY2luZz0iMCIsbC5zdHlsZS5ib3JkZXJXaWR0aD0iMCIsbC5zdHlsZS5wYWRkaW5nPSIwIjt2YXIgYz1kb2N1bWVu''@;'; put 'put ''dC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpO2wuYXBwZW5kQ2hpbGQoYyksYy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJUUiIpKSxjLmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiVEQiKSksYy5maXJzdENoaWxkLmZpcnN0Q2hpbGQu''@;'; put 'put ''aW5uZXJIVE1MPSI8dHI+PHRkPnQ8YnI+dDwvdGQ+PC90cj4iO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkNBUFRJT04iKTthLmlubmVySFRNTD0iYzxicj5jPGJyPmM8YnI+YyIsYS5zdHlsZS5wYWRkaW5nPSIwIixhLnN0eWxlLm1hcmdpbj0iMCIsbC5pbnNlcnRCZWZvcmUoYSxj''@;'; put 'put ''KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGwpLHJZPWwub2Zmc2V0SGVpZ2h0PDIqbC5sYXN0Q2hpbGQub2Zmc2V0SGVpZ2h0LGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobCl9KCkscll9ZnVuY3Rpb24gVmNlKGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gTDd8fChMNz0ib2JqZWN0Ij09PSh0eXBlb2YgSW50bD4idSI/InVuZGVmaW5lZCI6dFkoSW50bCkpP25ldyBJbnRsLkNvbGxhdG9yKGwsYykuY29tcGFyZToiZnVuY3Rpb24iPT10eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVD''@;'; put 'put ''b21wYXJlP2Z1bmN0aW9uKGYsZCl7cmV0dXJuIiIuY29uY2F0KGYpLmxvY2FsZUNvbXBhcmUoZCl9OmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGY9PT1kPzA6Zj5kPy0xOjF9KX1mdW5jdGlvbiBCY2UoKXtpZih2b2lkIDAhPT1QUylyZXR1cm4gUFM7dHJ5e3ZhciBsPXtnZXQgcGFzc2l2ZSgpe1BT''@;'; put 'put ''PSEwfX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLGwsbCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLGwsbCl9Y2F0Y2h7UFM9ITF9cmV0dXJuIFBTfWZ1bmN0aW9uIGpjZShsKXtmb3IodmFyIGM9bC5sZW5ndGgsYT0wO2E8YzspbFthXT1bbFthXV0sYSs9MX1m''@;'; put 'put ''dW5jdGlvbiBvWShsLGMpe2Zvcih2YXIgYT1jLmxlbmd0aCxmPTA7ZjxhOylsLnB1c2goY1tmXSksZis9MX1mdW5jdGlvbiBGUyhsKXt2YXIgYz1bXTtpZighbHx8MD09PWwubGVuZ3RofHwhbFswXXx8MD09PWxbMF0ubGVuZ3RoKXJldHVybiBjO2Zvcih2YXIgYT1sLmxlbmd0aCxmPWxbMF0u''@;'; put 'put ''bGVuZ3RoLGQ9MDtkPGE7ZCsrKWZvcih2YXIgaD0wO2g8ZjtoKyspY1toXXx8KGNbaF09W10pLGNbaF1bZF09bFtkXVtoXTtyZXR1cm4gY31mdW5jdGlvbiBQcyhsLGMsYSxmKXt2YXIgZD0tMSxoPWwsbT1hO0FycmF5LmlzQXJyYXkobCl8fChoPUFycmF5LmZyb20obCkpO3ZhciBfPWgubGVu''@;'; put 'put ''Z3RoO2ZvcihmJiZfJiYobT1oW2QrPTFdKSxkKz0xO2Q8XzspbT1jKG0saFtkXSxkLGgpLGQrPTE7cmV0dXJuIG19ZnVuY3Rpb24gRDEobCxjKXt2YXIgYT0wLGY9bDtBcnJheS5pc0FycmF5KGwpfHwoZj1BcnJheS5mcm9tKGwpKTtmb3IodmFyIGQ9Zi5sZW5ndGgsaD1bXSxtPS0xO2E8ZDsp''@;'; put 'put ''e3ZhciBfPWZbYV07YyhfLGEsZikmJihoW20rPTFdPV8pLGErPTF9cmV0dXJuIGh9ZnVuY3Rpb24gaGEobCxjKXt2YXIgYT0wLGY9bDtBcnJheS5pc0FycmF5KGwpfHwoZj1BcnJheS5mcm9tKGwpKTtmb3IodmFyIGQ9Zi5sZW5ndGgsaD1bXSxtPS0xO2E8ZDspaFttKz0xXT1jKGZbYV0sYSxm''@;'; put 'put ''KSxhKz0xO3JldHVybiBofWZ1bmN0aW9uIFJuKGwsYyl7dmFyIGE9MCxmPWw7QXJyYXkuaXNBcnJheShsKXx8KGY9QXJyYXkuZnJvbShsKSk7Zm9yKHZhciBkPWYubGVuZ3RoO2E8ZCYmITEhPT1jKGZbYV0sYSxmKTspYSs9MTtyZXR1cm4gbH1mdW5jdGlvbiB6Y2UobCl7cmV0dXJuIFBzKGws''@;'; put 'put ''ZnVuY3Rpb24oYyxhKXtyZXR1cm4gYythfSwwKX1mdW5jdGlvbiBVV2UobCl7cmV0dXJuIFBzKGwsZnVuY3Rpb24oYyxhKXtyZXR1cm4gYz5hP2M6YX0sQXJyYXkuaXNBcnJheShsKT9sWzBdOnZvaWQgMCl9ZnVuY3Rpb24gWldlKGwpe3JldHVybiBQcyhsLGZ1bmN0aW9uKGMsYSl7cmV0dXJu''@;'; put 'put ''IGM8YT9jOmF9LEFycmF5LmlzQXJyYXkobCk/bFswXTp2b2lkIDApfWZ1bmN0aW9uIFlXZShsKXtyZXR1cm4gbC5sZW5ndGg/emNlKGwpL2wubGVuZ3RoOjB9ZnVuY3Rpb24gVWNlKGwpe3JldHVybiBQcyhsLGZ1bmN0aW9uKGMsYSl7cmV0dXJuIGMuY29uY2F0KEFycmF5LmlzQXJyYXkoYSk/''@;'; put 'put ''VWNlKGEpOmEpfSxbXSl9ZnVuY3Rpb24gYVkobCl7dmFyIGM9W107cmV0dXJuIFJuKGwsZnVuY3Rpb24oYSl7LTE9PT1jLmluZGV4T2YoYSkmJmMucHVzaChhKX0pLGN9ZnVuY3Rpb24gbFkoKXtmb3IodmFyIGw9YXJndW1lbnRzLmxlbmd0aCxjPW5ldyBBcnJheShsKSxhPTA7YTxsO2ErKylj''@;'; put 'put ''W2FdPWFyZ3VtZW50c1thXTt2YXIgZj1bXS5jb25jYXQoYyksZD1mWzBdLGg9Zi5zbGljZSgxKSxtPWQ7cmV0dXJuIFJuKGgsZnVuY3Rpb24oXyl7bT1tLmZpbHRlcihmdW5jdGlvbihPKXtyZXR1cm4hXy5pbmNsdWRlcyhPKX0pfSksbX1mdW5jdGlvbiBXV2UoKXtmb3IodmFyIGw9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aCxjPW5ldyBBcnJheShsKSxhPTA7YTxsO2ErKyljW2FdPWFyZ3VtZW50c1thXTt2YXIgZj1bXS5jb25jYXQoYyksZD1mWzBdLGg9Zi5zbGljZSgxKSxtPWQ7cmV0dXJuIFJuKGgsZnVuY3Rpb24oXyl7bT1tLmZpbHRlcihmdW5jdGlvbihPKXtyZXR1cm4gXy5pbmNsdWRlcyhP''@;'; put 'put ''KX0pfSksbX1mdW5jdGlvbiBHV2UoKXtmb3IodmFyIGw9YXJndW1lbnRzLmxlbmd0aCxjPW5ldyBBcnJheShsKSxhPTA7YTxsO2ErKyljW2FdPWFyZ3VtZW50c1thXTt2YXIgZj1bXS5jb25jYXQoYyksZD1mWzBdLGg9Zi5zbGljZSgxKSxtPW5ldyBTZXQoZCk7cmV0dXJuIFJuKGgsZnVuY3Rp''@;'; put 'put ''b24oXyl7Um4oXyxmdW5jdGlvbihPKXttLmhhcyhPKXx8bS5hZGQoTyl9KX0pLEFycmF5LmZyb20obSl9ZnVuY3Rpb24gc1kobCl7cmV0dXJuIGwuc3BsaXQoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiIgIil9ZnVuY3Rpb24gWmNlKGws''@;'; put 'put ''YyxhKXtyZXR1cm4gYz1mdW5jdGlvbiAkV2UobCl7dmFyIGM9ZnVuY3Rpb24gS1dlKGwsYyl7aWYoIm9iamVjdCIhPT1jMyhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1jMyhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09''@;'; put 'put ''YzMoYyk/YzpTdHJpbmcoYyl9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gYzMobCl7cmV0dXJuKGMzPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1i''@;'; put 'put ''b2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gUDcobCl7dmFyIGM7cmV0dXJuIEFycmF5LmlzQXJyYXkobCk/Yz1sLmxlbmd0aD9uZXcgQXJyYXkobC5sZW5ndGgpLmZpbGwobnVsbCk6W106KGM9e30sbWEobCxmdW5jdGlvbihhLGYpeyJfX2NoaWxkcmVuIiE9PWYmJihjW2ZdPWEmJiJvYmpl''@;'; put 'put ''Y3QiPT09YzMoYSkmJiFBcnJheS5pc0FycmF5KGEpP1A3KGEpOkFycmF5LmlzQXJyYXkoYSk/YS5sZW5ndGgmJiJvYmplY3QiPT09YzMoYVswXSkmJiFBcnJheS5pc0FycmF5KGFbMF0pP1tQNyhhWzBdKV06W106bnVsbCl9KSksY31mdW5jdGlvbiBmMyhsLGMpe3JldHVybiBjLnByb3RvdHlw''@;'; put 'put ''ZS5jb25zdHJ1Y3Rvcj1jLGwucHJvdG90eXBlPW5ldyBjLGwucHJvdG90eXBlLmNvbnN0cnVjdG9yPWwsbH1mdW5jdGlvbiBydShsLGMsYSl7dmFyIGY9QXJyYXkuaXNBcnJheShhKTtyZXR1cm4gbWEoYyxmdW5jdGlvbihkLGgpeyghMT09PWZ8fGEuaW5jbHVkZXMoaCkpJiYobFtoXT1kKX0p''@;'; put 'put ''LGx9ZnVuY3Rpb24gSFMobCxjKXttYShjLGZ1bmN0aW9uKGEsZil7Y1tmXSYmIm9iamVjdCI9PT1jMyhjW2ZdKT8obFtmXXx8KGxbZl09QXJyYXkuaXNBcnJheShjW2ZdKT9bXToiW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY1tmXSk/Y1tmXTp7fSks''@;'; put 'put ''SFMobFtmXSxjW2ZdKSk6bFtmXT1jW2ZdfSl9ZnVuY3Rpb24geGMobCl7cmV0dXJuIm9iamVjdCI9PT1jMyhsKT9KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGwpKTpsfWZ1bmN0aW9uIGUwKGwpe3ZhciBjPXt9O3JldHVybiBtYShsLGZ1bmN0aW9uKGEsZil7Y1tmXT1hfSksY31mdW5jdGlv''@;'; put 'put ''biBUbChsKXtsLk1JWElOU3x8KGwuTUlYSU5TPVtdKTtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7ZisrKWFbZi0xXT1hcmd1bWVudHNbZl07cmV0dXJuIFJuKGEsZnVuY3Rpb24oZCl7bC5NSVhJTlMucHVzaChkLk1JWElOX05BTUUp''@;'; put 'put ''LG1hKGQsZnVuY3Rpb24oaCxtKXtpZih2b2lkIDAhPT1sLnByb3RvdHlwZVttXSl0aHJvdyBuZXcgRXJyb3IoIk1peGluIGNvbmZsaWN0LiBQcm9wZXJ0eSAnIi5jb25jYXQobSwiJyBhbHJlYWR5IGV4aXN0IGFuZCBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4uIikpO3ZhciBhZSxwZSxiZTsiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgaD9sLnByb3RvdHlwZVttXT1oOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLnByb3RvdHlwZSxtLHtnZXQ6KGFlPW0scGU9aCxiZT0iXyIuY29uY2F0KGFlKSxmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzW2JlXSYmKHRoaXNbYmVdPShsdD1wZSwoQXJyYXku''@;'; put 'put ''aXNBcnJheShsdCl8fHBhKGx0KSkmJihsdD14YyhsdCkpLGx0KSksdGhpc1tiZV07dmFyIGx0fSksc2V0OmZ1bmN0aW9uKGFlKXt2YXIgcGU9Il8iLmNvbmNhdChhZSk7cmV0dXJuIGZ1bmN0aW9uKGJlKXt0aGlzW3BlXT1iZX19KG0pLGNvbmZpZ3VyYWJsZTohMH0pfSl9KSxsfWZ1bmN0aW9u''@;'; put 'put ''IGpJKGwsYyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGwpPT09SlNPTi5zdHJpbmdpZnkoYyl9ZnVuY3Rpb24gcGEobCl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCl9ZnVuY3Rpb24gSGgobCxjLGEsZil7Zi52YWx1ZT1hLGYud3Jp''@;'; put 'put ''dGFibGU9ITEhPT1mLndyaXRhYmxlLGYuZW51bWVyYWJsZT0hMSE9PWYuZW51bWVyYWJsZSxmLmNvbmZpZ3VyYWJsZT0hMSE9PWYuY29uZmlndXJhYmxlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMsZil9ZnVuY3Rpb24gbWEobCxjKXtmb3IodmFyIGEgaW4gbClpZigoIWwuaGFzT3duUHJv''@;'; put 'put ''cGVydHl8fGwuaGFzT3duUHJvcGVydHkmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGEpKSYmITE9PT1jKGxbYV0sYSxsKSlicmVhaztyZXR1cm4gbH1mdW5jdGlvbiBZY2UobCxjKXt2YXIgYT1jLnNwbGl0KCIuIiksZj1sO3JldHVybiBtYShhLGZ1bmN0aW9uKGQp''@;'; put 'put ''e2lmKHZvaWQgMD09PShmPWZbZF0pKXJldHVybiBmPXZvaWQgMCwhMX0pLGZ9ZnVuY3Rpb24gekkobCxjLGEpe3ZhciBmPWMuc3BsaXQoIi4iKSxkPWw7Zi5mb3JFYWNoKGZ1bmN0aW9uKGgsbSl7bSE9PWYubGVuZ3RoLTE/KFNzKGQsaCl8fChkW2hdPXt9KSxkPWRbaF0pOmRbaF09YX0pfWZ1''@;'; put 'put ''bmN0aW9uIFVJKGwpe3JldHVybiBwYShsKT9mdW5jdGlvbiBhKGYpe3ZhciBkPTA7cmV0dXJuIHBhKGYpP21hKGYsZnVuY3Rpb24oaCxtKXsiX19jaGlsZHJlbiIhPT1tJiYoZCs9YShoKSl9KTpkKz0xLGR9KGwpOjB9ZnVuY3Rpb24gZzUobCl7dmFyIGMsYT1hcmd1bWVudHMubGVuZ3RoPjEm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InZhbHVlIixmPSJfIi5jb25jYXQoYSksZD0oWmNlKGM9e190b3VjaGVkOiExfSxmLGwpLFpjZShjLCJpc1RvdWNoZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RvdWNoZWR9KSxjKTtyZXR1cm4gT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGQsYSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbZl19LHNldDpmdW5jdGlvbihtKXt0aGlzLl90b3VjaGVkPSEwLHRoaXNbZl09bX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxkfWZ1bmN0aW9uIFNzKGwsYyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHkuY2FsbChsLGMpfVQoNTc5NDMpLFQoMjA2NDcpLFQoMTgzMjMpLFQoNTM5NTApLFQoNTgyNzIpLFQoMTM0MDApLFQoMTMyNzgpLFQoNTIzMTMpLFQoNzA4NjQpLFQoNjQ5NTIpLFQoOTcwODcpLFQoMzExMjMpLFQoMjQ4MCksVCg4MzAyOCksVCg0Mjc2MCksVCgxMDQxNCks''@;'; put 'put ''VCgzNDc3MCksVCg2OTEwKSxUKDYzOTY3KSxUKDgzNTkwKSxUKDU4NTk0KSxUKDU4MzI0KSxUKDkxOTQ1KSxUKDk2NjQpLFQoMjY1NyksVCg4NjQyNyksVCgzMzU4MyksVCgzMDU3MSksVCgxODE1OCksVCgyODc2NCksVCg0NTEzNSksVCgxNjgyNSksVCg3Njc0OSksVCg4MzYyMCksVCg5NjI1''@;'; put 'put ''MSksVCg0MDA2MSksVCgyNDU2OSksVCg2NDQxOCk7dmFyIFowPWZ1bmN0aW9uKGMpe3ZhciBhPXt2YWx1ZTohMSx0ZXN0OmZ1bmN0aW9uKGYsZCl7YS52YWx1ZT1jKGYsZCl9fTtyZXR1cm4gYX0sSTE9e2Nocm9tZTpaMChmdW5jdGlvbihsLGMpe3JldHVybi9DaHJvbWUvLnRlc3QobCkmJi9H''@;'; put 'put ''b29nbGUvLnRlc3QoYyl9KSxjaHJvbWVXZWJLaXQ6WjAoZnVuY3Rpb24obCl7cmV0dXJuL0NyaU9TLy50ZXN0KGwpfSksZWRnZTpaMChmdW5jdGlvbihsKXtyZXR1cm4vRWRnZS8udGVzdChsKX0pLGVkZ2VXZWJLaXQ6WjAoZnVuY3Rpb24obCl7cmV0dXJuL0VkZ2lPUy8udGVzdChsKX0pLGZp''@;'; put 'put ''cmVmb3g6WjAoZnVuY3Rpb24obCl7cmV0dXJuL0ZpcmVmb3gvLnRlc3QobCl9KSxmaXJlZm94V2ViS2l0OlowKGZ1bmN0aW9uKGwpe3JldHVybi9GeGlPUy8udGVzdChsKX0pLGllOlowKGZ1bmN0aW9uKGwpe3JldHVybi9UcmlkZW50Ly50ZXN0KGwpfSksaWU5OlowKGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuISFkb2N1bWVudC5kb2N1bWVudE1vZGV9KSxtb2JpbGU6WjAoZnVuY3Rpb24obCl7cmV0dXJuL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KGwpfSksc2FmYXJpOlowKGZ1bmN0aW9uKGwsYyl7cmV0dXJuL1Nh''@;'; put 'put ''ZmFyaS8udGVzdChsKSYmL0FwcGxlIENvbXB1dGVyLy50ZXN0KGMpfSl9LEY3PXttYWM6WjAoZnVuY3Rpb24obCl7cmV0dXJuL15NYWMvLnRlc3QobCl9KSx3aW46WjAoZnVuY3Rpb24obCl7cmV0dXJuL15XaW4vLnRlc3QobCl9KSxsaW51eDpaMChmdW5jdGlvbihsKXtyZXR1cm4vXkxpbnV4''@;'; put 'put ''Ly50ZXN0KGwpfSksaW9zOlowKGZ1bmN0aW9uKGwpe3JldHVybi9pUGhvbmV8aVBhZHxpUG9kL2kudGVzdChsKX0pfTtmdW5jdGlvbiBXY2UoKXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sYz1sLnVzZXJBZ2VudCxhPXZv''@;'; put 'put ''aWQgMD09PWM/bmF2aWdhdG9yLnVzZXJBZ2VudDpjLGY9bC52ZW5kb3IsZD12b2lkIDA9PT1mP25hdmlnYXRvci52ZW5kb3I6ZjttYShJMSxmdW5jdGlvbihoKXsoMCxoLnRlc3QpKGEsZCl9KX1mdW5jdGlvbiBHY2UoKXt2YXIgYz0oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9KS5wbGF0Zm9ybSxhPXZvaWQgMD09PWM/bmF2aWdhdG9yLnBsYXRmb3JtOmM7bWEoRjcsZnVuY3Rpb24oZil7KDAsZi50ZXN0KShhKX0pfWZ1bmN0aW9uIHVZKCl7cmV0dXJuIEkxLmNocm9tZS52YWx1ZX1mdW5jdGlvbiAkY2UoKXtyZXR1cm4gSTEu''@;'; put 'put ''Y2hyb21lV2ViS2l0LnZhbHVlfWZ1bmN0aW9uIFpJKCl7cmV0dXJuIEkxLmZpcmVmb3gudmFsdWV9ZnVuY3Rpb24gS2NlKCl7cmV0dXJuIEkxLmZpcmVmb3hXZWJLaXQudmFsdWV9ZnVuY3Rpb24gcWNlKCl7cmV0dXJuIEkxLnNhZmFyaS52YWx1ZX1mdW5jdGlvbiBYY2UoKXtyZXR1cm4gSTEu''@;'; put 'put ''ZWRnZS52YWx1ZX1mdW5jdGlvbiBxV2UoKXtyZXR1cm4gSTEuZWRnZVdlYktpdC52YWx1ZX1mdW5jdGlvbiBKY2UoKXtyZXR1cm4gSTEuaWUudmFsdWV9ZnVuY3Rpb24gUWNlKCl7cmV0dXJuIEkxLmllOS52YWx1ZX1mdW5jdGlvbiBYV2UoKXtyZXR1cm4gSTEuaWUudmFsdWV8fEkxLmVkZ2Uu''@;'; put 'put ''dmFsdWV9ZnVuY3Rpb24gUGQoKXtyZXR1cm4gSTEubW9iaWxlLnZhbHVlfWZ1bmN0aW9uIGNZKCl7cmV0dXJuIEY3Lmlvcy52YWx1ZX1mdW5jdGlvbiBmWSgpe3JldHVybihhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bmF2aWdhdG9yKS5t''@;'; put 'put ''YXhUb3VjaFBvaW50cz4yJiZGNy5tYWMudmFsdWV9ZnVuY3Rpb24gZFkoKXtyZXR1cm4gRjcud2luLnZhbHVlfWZ1bmN0aW9uIFlJKCl7cmV0dXJuIEY3Lm1hYy52YWx1ZX1mdW5jdGlvbiBKV2UoKXtyZXR1cm4gRjcubGludXgudmFsdWV9V2NlKCksR2NlKCk7dmFyIGUwZSx0MGUsbjBlLHIw''@;'; put 'put ''ZSxpMGUsbzBlLFFXZT1UKDcwODk2KTtmdW5jdGlvbiBPbChsKXtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7ZisrKWFbZi0xXT1hcmd1bWVudHNbZl07cmV0dXJuIFBzKGwsZnVuY3Rpb24oaCxtLF8pe3JldHVybiBoK20ucmVwbGFj''@;'; put 'put ''ZSgvXHI/XG5ccyovZywiIikrKGFbX10/YVtfXToiIil9LCIiKS50cmltKCl9ZnVuY3Rpb24gSDcobCxjKXtyZXR1cm4gY3x8KGM9bC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoYyl9fSkpfWZ1bmN0''@;'; put 'put ''aW9uIGhZKGwpe3JldHVybihoWT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0''@;'; put 'put ''cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIE1zKGwpe3ZhciBjO3N3aXRjaChoWShsKSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpjPSIiLmNvbmNhdChsKTticmVhaztjYXNlIm9iamVjdCI6Yz1udWxsPT09''@;'; put 'put ''bD8iIjpsLnRvU3RyaW5nKCk7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmM9IiI7YnJlYWs7ZGVmYXVsdDpjPWwudG9TdHJpbmcoKX1yZXR1cm4gY31mdW5jdGlvbiBpbyhsKXtyZXR1cm4gdHlwZW9mIGw8InUifWZ1bmN0aW9uIExsKGwpe3JldHVybiB0eXBlb2YgbD4idSJ9ZnVuY3Rpb24gd3Uo''@;'; put 'put ''bCl7cmV0dXJuIG51bGw9PT1sfHwiIj09PWx8fExsKGwpfWZ1bmN0aW9uIGEwZShsKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKX1UKDgyNzU2KSxUKDE2NjYxKSxUKDc4MjQ2KTt2YXIgX1ksd1ksQ1ksTlM9Imxlbmd0aCIsVlM9''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIHBhcnNlSW50KGMsMTYpfSxsMGU9ZnVuY3Rpb24oYyl7cmV0dXJuIHBhcnNlSW50KGMsMTApfSxXST1mdW5jdGlvbihjLGEsZil7cmV0dXJuIGMuc3Vic3RyKGEsZil9LEJTPWZ1bmN0aW9uKGMpe3JldHVybiBjLmNvZGVQb2ludEF0KDApLTY1fSxwWT1mdW5j''@;'; put 'put ''dGlvbihjKXtyZXR1cm4iIi5jb25jYXQoYykucmVwbGFjZSgvXC0vZywiIil9LGVHZT1mdW5jdGlvbihjKXtyZXR1cm4gVlMoV0kocFkoYyksVlMoIjEyIiksQlMoIkYiKSkpLyhWUyhXSShwWShjKSxCUygiQiIpLH5+IVtdW05TXSkpfHw5KX0sdEdlPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVv''@;'; put 'put ''ZiBsb2NhdGlvbjwidSImJi9eKFthLXowLTlcLV0rXC4pP1x4NjhceDYxXHg2RVx4NjRceDczXHg2Rlx4NkVceDc0XHg2MVx4NjJceDZDXHg2NVx4MkVceDYzXHg2Rlx4NkQkL2kudGVzdChsb2NhdGlvbi5ob3N0KX0sczBlPSExLHUwZT17aW52YWxpZDpmdW5jdGlvbigpe3JldHVybiBPbChl''@;'; put 'put ''MGV8fChlMGU9SDcoWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBpbnZhbGlkLiBcbiAgICBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhh''@;'; put 'put ''bmRzb250YWJsZSBpcyBpbnZhbGlkLlxceDIwXG4gICAgSWYgeW91IG5lZWQgYW55IGhlbHAsIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLiJdKSkpfSxleHBpcmVkOmZ1bmN0aW9uKGMpe3ZhciBhPWMua2V5VmFsaWRpdHlEYXRlLGY9Yy5ob3RWZXJzaW9uO3JldHVy''@;'; put 'put ''biBPbCh0MGV8fCh0MGU9SDcoWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZCBcbiAgICB2ZXJzaW9uICIsIi4gUmVuZXcgeW91ciBsaWNlbnNlIGtleSBhdCBoYW5kc29udGFi''@;'; put 'put ''bGUuY29tIG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3IgXG4gICAgdG8gIiwiLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzYWxlc0BoYW5kc29udGFibGUuY29tLiJdLFsiXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUg''@;'; put 'put ''ZXhwaXJlZCBvbiAiLCIsIGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWRcXHgyMFxuICAgIHZlcnNpb24gIiwiLiBSZW5ldyB5b3VyIGxpY2Vuc2Uga2V5IGF0IGhhbmRzb250YWJsZS5jb20gb3IgZG93bmdyYWRlIHRvIGEgdmVyc2lvbiByZWxlYXNlZCBwcmlvclxceDIwXG4g''@;'; put 'put ''ICAgdG8gIiwiLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzYWxlc0BoYW5kc29udGFibGUuY29tLiJdKSksYSxmLGEpfSxtaXNzaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIE9sKG4wZXx8KG4wZT1INyhbIlxuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxl''@;'; put 'put ''IGlzIG1pc3NpbmcuIFVzZSB5b3VyIHB1cmNoYXNlZCBrZXkgdG8gYWN0aXZhdGUgdGhlIHByb2R1Y3QuIFxuICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnkgXG4gICAgcGFzc2luZyB0''@;'; put 'put ''aGUga2V5OiAnbm9uLWNvbW1lcmNpYWwtYW5kLWV2YWx1YXRpb24nLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCBcbiAgICB1cyBhdCBzdXBwb3J0QGhhbmRzb250YWJsZS5jb20uIl0sWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBV''@;'; put 'put ''c2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LlxceDIwXG4gICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhY3RpdmF0ZSBIYW5kc29udGFibGUgdG8gdXNlIGZvciBub24tY29tbWVyY2lhbCBwdXJwb3NlcyBieVxceDIwXG4gICAgcGFzc2luZyB0aGUga2V5''@;'; put 'put ''OiAnbm9uLWNvbW1lcmNpYWwtYW5kLWV2YWx1YXRpb24nLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdFxceDIwXG4gICAgdXMgYXQgc3VwcG9ydEBoYW5kc29udGFibGUuY29tLiJdKSkpfSxub25fY29tbWVyY2lhbDpmdW5jdGlvbigpe3JldHVybiIifX0sYzBlPXtpbnZhbGlkOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIE9sKHIwZXx8KHIwZT1INyhbJ1xuICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQuIFxuICAgIDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNvbnRhYmxlLmNvbS9kb2NzL3R1dG9yaWFsLWxpY2Vuc2Uta2V5Lmh0bWwiIHRhcmdldD0i''@;'; put 'put ''X2JsYW5rIj5SZWFkIG1vcmU8L2E+IG9uIGhvdyB0byBcbiAgICBpbnN0YWxsIGl0IHByb3Blcmx5IG9yIGNvbnRhY3QgdXMgYXQgPGEgaHJlZj0ibWFpbHRvOnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbSI+c3VwcG9ydEBoYW5kc29udGFibGUuY29tPC9hPi4nXSxbJ1xuICAgIFRoZSBsaWNl''@;'; put 'put ''bnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQuXFx4MjBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVhZCBtb3JlPC9hPiBvbiBob3cgdG9cXHgyMFxuICAgIGlu''@;'; put 'put ''c3RhbGwgaXQgcHJvcGVybHkgb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBoYW5kc29udGFibGUuY29tIj5zdXBwb3J0QGhhbmRzb250YWJsZS5jb208L2E+LiddKSkpfSxleHBpcmVkOmZ1bmN0aW9uKGMpe3ZhciBhPWMua2V5VmFsaWRpdHlEYXRlLGY9Yy5ob3RW''@;'; put 'put ''ZXJzaW9uO3JldHVybiBPbChpMGV8fChpMGU9SDcoWyJcbiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBleHBpcmVkIG9uICIsIiwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3RhbGxlZCBcbiAgICB2ZXJzaW9uICIsJy4gPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29u''@;'; put 'put ''dGFibGUuY29tL3ByaWNpbmciIHRhcmdldD0iX2JsYW5rIj5SZW5ldzwvYT4geW91ciBcbiAgICBsaWNlbnNlIGtleSBvciBkb3duZ3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yIHRvICcsJy4gSWYgeW91IG5lZWQgYW55IFxuICAgIGhlbHAsIGNvbnRhY3QgdXMgYXQgPGEgaHJl''@;'; put 'put ''Zj0ibWFpbHRvOnNhbGVzQGhhbmRzb250YWJsZS5jb20iPnNhbGVzQGhhbmRzb250YWJsZS5jb208L2E+LiddLFsiXG4gICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgZXhwaXJlZCBvbiAiLCIsIGFuZCBpcyBub3QgdmFsaWQgZm9yIHRoZSBpbnN0YWxsZWRcXHgyMFxuICAg''@;'; put 'put ''IHZlcnNpb24gIiwnLiA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vcHJpY2luZyIgdGFyZ2V0PSJfYmxhbmsiPlJlbmV3PC9hPiB5b3VyXFx4MjBcbiAgICBsaWNlbnNlIGtleSBvciBkb3duZ3JhZGUgdG8gYSB2ZXJzaW9uIHJlbGVhc2VkIHByaW9yIHRvICcsJy4gSWYgeW91''@;'; put 'put ''IG5lZWQgYW55XFx4MjBcbiAgICBoZWxwLCBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzYWxlc0BoYW5kc29udGFibGUuY29tIj5zYWxlc0BoYW5kc29udGFibGUuY29tPC9hPi4nXSkpLGEsZixhKX0sbWlzc2luZzpmdW5jdGlvbigpe3JldHVybiBPbChvMGV8fChvMGU9SDcoWydc''@;'; put 'put ''biAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LiBcbiAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFjdGl2YXRlIEhhbmRzb250YWJsZSB0byB1c2UgZm9yIG5vbi1j''@;'; put 'put ''b21tZXJjaWFsIHB1cnBvc2VzIGJ5IFxuICAgIHBhc3NpbmcgdGhlIGtleTogXCdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvblwnLiBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFu''@;'; put 'put ''ayI+UmVhZCBtb3JlPC9hPiBhYm91dCBpdCBpbiBcbiAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uJ10sWydcbiAgICBUaGUgbGljZW5zZSBr''@;'; put 'put ''ZXkgZm9yIEhhbmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0LlxceDIwXG4gICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhY3RpdmF0ZSBIYW5kc29udGFibGUgdG8gdXNlIGZvciBub24tY29tbWVyY2lhbCBwdXJw''@;'; put 'put ''b3NlcyBieVxceDIwXG4gICAgcGFzc2luZyB0aGUga2V5OiBcJ25vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uXCcuXFx4MjBcbiAgICA8YSBocmVmPSJodHRwczovL2hhbmRzb250YWJsZS5jb20vZG9jcy90dXRvcmlhbC1saWNlbnNlLWtleS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+UmVh''@;'; put 'put ''ZCBtb3JlPC9hPiBhYm91dCBpdCBpblxceDIwXG4gICAgdGhlIGRvY3VtZW50YXRpb24gb3IgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c3VwcG9ydEBoYW5kc29udGFibGUuY29tIj5zdXBwb3J0QGhhbmRzb250YWJsZS5jb208L2E+LiddKSkpfSxub25fY29tbWVyY2lhbDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiIifX07ZnVuY3Rpb24gZjBlKGwsYyl7dmFyIGgsYT0hd3UobCksZj0ic3RyaW5nIj09dHlwZW9mIGwmJiJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbiI9PT1sLnRvTG93ZXJDYXNlKCksZD0iMTMuMC4wIixtPSJpbnZhbGlkIixfPSJpbnZhbGlkIixPPWZ1bmN0''@;'; put 'put ''aW9uIG5HZShsKXt2YXIgYz1bXVtOU10sYT1jO2lmKGxbTlNdIT09QlMoIloiKSlyZXR1cm4hMTtmb3IodmFyIGY9IiIsZD0iQjxINFArIi5zcGxpdCgiIiksaD1CUyhkLnNoaWZ0KCkpO2g7aD1CUyhkLnNoaWZ0KCl8fCJBIikpLS1oPCIiW05TXT9hfD0obDBlKCIiLmNvbmNhdChsMGUoVlMo''@;'; put 'put ''ZikrKFZTKFdJKGwsTWF0aC5hYnMoaCksMikpK1tdKS5wYWRTdGFydCgyLCIwIikpKSklOTd8fDIpPj4xOmY9V0kobCxoLGg/MT09PWRbTlNdPzk6ODo2KTtyZXR1cm4gYT09PWN9KGw9cFkobHx8IiIpKTtpZihhfHxmfHxPKWlmKE8pe3ZhciBYPUtvKCIyMi8wNi8yMDIzIiwiREQvTU0vWVlZ''@;'; put 'put ''WSIpLGFlPU1hdGguZmxvb3IoWC50b0RhdGUoKS5nZXRUaW1lKCkvODY0ZTUpLHBlPWVHZShsKTtoPUtvKDg2NGU1KihwZSsxKSwieCIpLmZvcm1hdCgiTU1NTSBERCwgWVlZWSIpLGFlPnBlPyhtPSJleHBpcmVkIixfPSJleHBpcmVkIik6KG09InZhbGlkIixfPSJ2YWxpZCIpfWVsc2UgZj8o''@;'; put 'put ''bT0ibm9uX2NvbW1lcmNpYWwiLF89InZhbGlkIik6KG09ImludmFsaWQiLF89ImludmFsaWQiKTtlbHNlIG09Im1pc3NpbmciLF89Im1pc3NpbmciO2lmKHRHZSgpJiYobT0idmFsaWQiLF89InZhbGlkIiksczBlfHwidmFsaWQiPT09bXx8KHUwZVttXSh7a2V5VmFsaWRpdHlEYXRlOmgsaG90''@;'; put 'put ''VmVyc2lvbjpkfSkmJmNvbnNvbGVbIm5vbl9jb21tZXJjaWFsIj09PW0/ImluZm8iOiJ3YXJuIl0odTBlW21dKHtrZXlWYWxpZGl0eURhdGU6aCxob3RWZXJzaW9uOmR9KSksczBlPSEwKSwidmFsaWQiIT09XyYmYy5wYXJlbnROb2RlJiZjMGVbX10oe2tleVZhbGlkaXR5RGF0ZTpoLGhvdFZl''@;'; put 'put ''cnNpb246ZH0pKXt2YXIgVmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7VmUuY2xhc3NOYW1lPSJob3QtZGlzcGxheS1saWNlbnNlLWluZm8iLFZlLmlubmVySFRNTD1jMGVbX10oe2tleVZhbGlkaXR5RGF0ZTpoLGhvdFZlcnNpb246ZH0pLGMucGFyZW50Tm9kZS5pbnNlcnRCZWZv''@;'; put 'put ''cmUoVmUsYy5uZXh0U2libGluZyl9fWZ1bmN0aW9uIEFjKGwpe3JldHVybiBsWzBdLnRvVXBwZXJDYXNlKCkrbC5zdWJzdHIoMSl9ZnVuY3Rpb24gckdlKCl7Zm9yKHZhciBsPVtdLGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjKSxmPTA7ZjxjO2YrKylhW2ZdPWFyZ3VtZW50c1tm''@;'; put 'put ''XTtmb3IodmFyIGQ9YS5sZW5ndGg7ZDspe3ZhciBoPU1zKGFbZC09MV0pLnRvTG93ZXJDYXNlKCk7LTE9PT1sLmluZGV4T2YoaCkmJmwucHVzaChoKX1yZXR1cm4gMT09PWwubGVuZ3RofWZ1bmN0aW9uIG1ZKCl7ZnVuY3Rpb24gbCgpe3JldHVybiBNYXRoLmZsb29yKDY1NTM2KigxK01hdGgu''@;'; put 'put ''cmFuZG9tKCkpKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpfXJldHVybiBsKCkrbCgpK2woKStsKCl9ZnVuY3Rpb24gZ1kobCl7cmV0dXJuL14oWzAtOV1bMC05XT8lJCl8KF4xMDAlJCkvLnRlc3QobCl9ZnVuY3Rpb24gdlkobCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3JldHVybiIiLmNvbmNhdChsKS5yZXBsYWNlKC8oPzpcXCk/XFsoW15bXF1dKyldL2csZnVuY3Rpb24oYSxmKXtyZXR1cm4iXFwiPT09YS5jaGFyQXQoMCk/YS5zdWJzdHIoMSxhLmxlbmd0aC0xKTp2b2lkIDA9PT1jW2ZdPyIiOmNbZl19''@;'; put 'put ''KX1mdW5jdGlvbiB5WShsKXtyZXR1cm4gR0koIiIuY29uY2F0KGwpLHtBTExPV0VEX1RBR1M6W119KX1mdW5jdGlvbiBHSShsLGMpe3JldHVybiBRV2Uuc2FuaXRpemUobCxjKX1mdW5jdGlvbiBkMGUobCl7cmV0dXJuIGZ1bmN0aW9uIGxHZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVy''@;'; put 'put ''biBiWShsKX0obCl8fGZ1bmN0aW9uIGFHZShsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBvR2UobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGwpcmV0dXJuIGJZKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJv''@;'; put 'put ''bShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBiWShsLGMpfX0obCl8fGZ1bmN0aW9uIGlHZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0''@;'; put 'put ''ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGJZKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gaDBlKGwpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxhPS0xLGY9bnVsbCxkPWw7bnVsbCE9PWQ7KXtpZihhPT09''@;'; put 'put ''Yyl7Zj1kO2JyZWFrfWQuaG9zdCYmZC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9kPWQuaG9zdDooYSs9MSxkPWQucGFyZW50Tm9kZSl9cmV0dXJuIGZ9ZnVuY3Rpb24gcDBlKGwpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobC5wYXJlbnQpJiZsLmZyYW1l''@;'; put 'put ''RWxlbWVudH1mdW5jdGlvbiBqUyhsKXtyZXR1cm4gcDBlKGwpJiZsLnBhcmVudH1mdW5jdGlvbiBzR2UobCl7cmV0dXJuISFPYmplY3QuZ2V0UHJvdG90eXBlT2YobC5wYXJlbnQpfWZ1bmN0aW9uIHg0KGwpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1sxXT9hcmd1bWVudHNbMV06W10sYT1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxmPU5vZGUsZD1mLkVMRU1FTlRfTk9ERSxoPWYuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSxtPWw7bnVsbCE9bSYmbSE9PWE7KXt2YXIgTz1tLm5vZGVUeXBlO2lmKE89PT1kJiYoYy5p''@;'; put 'put ''bmNsdWRlcyhtLm5vZGVOYW1lKXx8Yy5pbmNsdWRlcyhtKSkpcmV0dXJuIG07dmFyIHBlPW0uaG9zdDttPXBlJiZPPT09aD9wZTptLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gelMobCxjLGEpe2Zvcih2YXIgZj1bXSxkPWw7ZCYmKGQ9eDQoZCxjLGEpKSYmKCFhfHxhLmNvbnRh''@;'; put 'put ''aW5zKGQpKTspZi5wdXNoKGQpLGQ9ZC5ob3N0JiZkLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP2QuaG9zdDpkLnBhcmVudE5vZGU7dmFyIGg9Zi5sZW5ndGg7cmV0dXJuIGg/ZltoLTFdOm51bGx9ZnVuY3Rpb24gQTQobCxjKXt2YXIgYT1sLnBhcmVudE5vZGUsZj1b''@;'; put 'put ''XTtmb3IoInN0cmluZyI9PXR5cGVvZiBjP2Y9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobC5kZWZhdWx0Vmlldz9sLnF1ZXJ5U2VsZWN0b3JBbGwoYyk6bC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYyksMCk6Zi5wdXNoKGMpO251bGwhPT1hOyl7aWYoZi5pbmRleE9mKGEp''@;'; put 'put ''Pi0xKXJldHVybiEwO2E9YS5wYXJlbnROb2RlfXJldHVybiExfWZ1bmN0aW9uIG0wZShsKXt2YXIgYz0wLGE9bDtpZihhLnByZXZpb3VzU2libGluZylmb3IoO2E9YS5wcmV2aW91c1NpYmxpbmc7KWMrPTE7cmV0dXJuIGN9ZnVuY3Rpb24gVDQobCxjLGEpe3ZhciBmPWEucGFyZW50RWxlbWVu''@;'; put 'put ''dC5xdWVyeVNlbGVjdG9yKCIuaHRfY2xvbmVfIi5jb25jYXQobCkpO3JldHVybiBmP2YuY29udGFpbnMoYyk6bnVsbH1mdW5jdGlvbiAkSShsKXtyZXR1cm4gbCYmbC5sZW5ndGg/bC5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuISFjfSk6W119aWYoRmNlKCkpe3ZhciBnMGU9ZnVuY3Rpb24o''@;'; put 'put ''Yyl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gYS5jbGFzc0xpc3QuYWRkKCJ0ZXN0IiwidGVzdDIiKSxhLmNsYXNzTGlzdC5jb250YWlucygidGVzdDIiKX07X1k9ZnVuY3Rpb24oYyxhKXtyZXR1cm4gdm9pZCAwIT09Yy5jbGFzc0xpc3QmJiJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''YSYmIiIhPT1hJiZjLmNsYXNzTGlzdC5jb250YWlucyhhKX0sd1k9ZnVuY3Rpb24oYyxhKXt2YXIgZj1jLm93bmVyRG9jdW1lbnQsZD1hO2lmKCJzdHJpbmciPT10eXBlb2YgZCYmKGQ9ZC5zcGxpdCgiICIpKSwoZD0kSShkKSkubGVuZ3RoPjApaWYoZzBlKGYpKXt2YXIgaDsoaD1jLmNsYXNz''@;'; put 'put ''TGlzdCkuYWRkLmFwcGx5KGgsZDBlKGQpKX1lbHNlIGZvcih2YXIgbT0wO2RbbV07KWMuY2xhc3NMaXN0LmFkZChkW21dKSxtKz0xfSxDWT1mdW5jdGlvbihjLGEpe3ZhciBmPWMub3duZXJEb2N1bWVudCxkPWE7aWYoInN0cmluZyI9PXR5cGVvZiBkJiYoZD1kLnNwbGl0KCIgIikpLChkPSRJ''@;'; put 'put ''KGQpKS5sZW5ndGg+MClpZihnMGUoZikpe3ZhciBoOyhoPWMuY2xhc3NMaXN0KS5yZW1vdmUuYXBwbHkoaCxkMGUoZCkpfWVsc2UgZm9yKHZhciBtPTA7ZFttXTspYy5jbGFzc0xpc3QucmVtb3ZlKGRbbV0pLG0rPTF9fWVsc2V7dmFyIFNZPWZ1bmN0aW9uKGMpe3JldHVybiBuZXcgUmVnRXhw''@;'; put 'put ''KCIoXFxzfF4pIi5jb25jYXQoYywiKFxcc3wkKSIpKX07X1k9ZnVuY3Rpb24oYyxhKXtyZXR1cm4gdm9pZCAwIT09Yy5jbGFzc05hbWUmJlNZKGEpLnRlc3QoYy5jbGFzc05hbWUpfSx3WT1mdW5jdGlvbihjLGEpe3ZhciBmPWMuY2xhc3NOYW1lLGQ9YTtpZigic3RyaW5nIj09dHlwZW9mIGQm''@;'; put 'put ''JihkPWQuc3BsaXQoIiAiKSksZD0kSShkKSwiIj09PWYpZj1kLmpvaW4oIiAiKTtlbHNlIGZvcih2YXIgaD0wO2g8ZC5sZW5ndGg7aCsrKWRbaF0mJiFTWShkW2hdKS50ZXN0KGYpJiYoZis9IiAiLmNvbmNhdChkW2hdKSk7Yy5jbGFzc05hbWU9Zn0sQ1k9ZnVuY3Rpb24oYyxhKXt2YXIgZj0w''@;'; put 'put ''LGQ9Yy5jbGFzc05hbWUsaD1hO2Zvcigic3RyaW5nIj09dHlwZW9mIGgmJihoPWguc3BsaXQoIiAiKSksaD0kSShoKTtoW2ZdOylkPWQucmVwbGFjZShTWShoW2ZdKSwiICIpLnRyaW0oKSxmKz0xO2MuY2xhc3NOYW1lIT09ZCYmKGMuY2xhc3NOYW1lPWQpfX1mdW5jdGlvbiBZbyhsLGMpe3Jl''@;'; put 'put ''dHVybiBfWShsLGMpfWZ1bmN0aW9uIGdpKGwsYyl7d1kobCxjKX1mdW5jdGlvbiBKbyhsLGMpe0NZKGwsYyl9ZnVuY3Rpb24gTVkobCl7aWYoMz09PWwubm9kZVR5cGUpbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGwpO2Vsc2UgaWYoWyJUQUJMRSIsIlRIRUFEIiwiVEJPRFkiLCJURk9PVCIs''@;'; put 'put ''IlRSIl0uaW5kZXhPZihsLm5vZGVOYW1lKT4tMSlmb3IodmFyIGM9bC5jaGlsZE5vZGVzLGE9Yy5sZW5ndGgtMTthPj0wO2EtLSlNWShjW2FdKX1mdW5jdGlvbiBGZChsKXtmb3IodmFyIGM7Yz1sLmxhc3RDaGlsZDspbC5yZW1vdmVDaGlsZChjKX12YXIgeFksdjBlPS8oPCguKik+fCYoLiop''@;'; put 'put ''OykvO2Z1bmN0aW9uIHY1KGwsYyl7dmFyIGE9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTt2MGUudGVzdChjKT9sLmlubmVySFRNTD1hP0dJKGMpOmM6TzQobCxjKX1mdW5jdGlvbiBPNChsLGMpe3ZhciBhPWwuZmlyc3RDaGlsZDth''@;'; put 'put ''JiYzPT09YS5ub2RlVHlwZSYmbnVsbD09PWEubmV4dFNpYmxpbmc/SGNlP2EudGV4dENvbnRlbnQ9YzphLmRhdGE9YzooRmQobCksbC5hcHBlbmRDaGlsZChsLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYykpKX1mdW5jdGlvbiBONyhsKXtmb3IodmFyIGM9bC5vd25lckRvY3VtZW50''@;'; put 'put ''LmRvY3VtZW50RWxlbWVudCxhPWw7YSE9PWM7KXtpZihudWxsPT09YSlyZXR1cm4hMTtpZihhLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXtpZihhLmhvc3Qpe2lmKGEuaG9zdC5pbXBsKXJldHVybiBONyhhLmhvc3QuaW1wbCk7aWYoYS5ob3N0KXJldHVybiBONyhh''@;'; put 'put ''Lmhvc3QpO3Rocm93IG5ldyBFcnJvcigiTG9zdCBpbiBXZWIgQ29tcG9uZW50cyB3b3JsZCIpfXJldHVybiExfWlmKGEuc3R5bGUmJiJub25lIj09PWEuc3R5bGUuZGlzcGxheSlyZXR1cm4hMTthPWEucGFyZW50Tm9kZX1yZXR1cm4hMH1mdW5jdGlvbiBpdShsKXt2YXIgaCxtLF8sTyxjPWwu''@;'; put 'put ''b3duZXJEb2N1bWVudCxhPWMuZGVmYXVsdFZpZXcsZj1jLmRvY3VtZW50RWxlbWVudCxkPWw7aWYoaVkoKSYmZC5maXJzdENoaWxkJiYiQ0FQVElPTiI9PT1kLmZpcnN0Q2hpbGQubm9kZU5hbWUpcmV0dXJue3RvcDooTz1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS50b3ArKGEucGFnZVlP''@;'; put 'put ''ZmZzZXR8fGYuc2Nyb2xsVG9wKS0oZi5jbGllbnRUb3B8fDApLGxlZnQ6Ty5sZWZ0KyhhLnBhZ2VYT2Zmc2V0fHxmLnNjcm9sbExlZnQpLShmLmNsaWVudExlZnR8fDApfTtmb3IoaD1kLm9mZnNldExlZnQsbT1kLm9mZnNldFRvcCxfPWQ7KGQ9ZC5vZmZzZXRQYXJlbnQpJiZkIT09Yy5ib2R5''@;'; put 'put ''OyloKz1kLm9mZnNldExlZnQsbSs9ZC5vZmZzZXRUb3AsXz1kO3JldHVybiBfJiYiZml4ZWQiPT09Xy5zdHlsZS5wb3NpdGlvbiYmKGgrPWEucGFnZVhPZmZzZXR8fGYuc2Nyb2xsTGVmdCxtKz1hLnBhZ2VZT2Zmc2V0fHxmLnNjcm9sbFRvcCkse2xlZnQ6aCx0b3A6bX19ZnVuY3Rpb24gVjco''@;'; put 'put ''KXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LGM9bC5zY3JvbGxZO3JldHVybiB2b2lkIDA9PT1jJiYoYz1sLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApLGN9ZnVuY3Rpb24geTUoKXt2YXIgbD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LGM9bC5zY3JvbGxYO3JldHVybiB2b2lkIDA9PT1jJiYoYz1sLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0KSxjfWZ1bmN0aW9uIFVTKGwpe3ZhciBjPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGw9PT1jP1Y3KGMpOmwuc2Nyb2xsVG9wfWZ1bmN0aW9uIEtJKGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5k''@;'; put 'put ''b3c7cmV0dXJuIGw9PT1jP3k1KGMpOmwuc2Nyb2xsTGVmdH1mdW5jdGlvbiBaUyhsKXt2YXIgYz1sLm93bmVyRG9jdW1lbnQsYT1jP2MuZGVmYXVsdFZpZXc6dm9pZCAwO2N8fChhPShjPWwuZG9jdW1lbnQ/bC5kb2N1bWVudDpsKS5kZWZhdWx0Vmlldyk7Zm9yKHZhciBmPVsiYXV0byIsInNj''@;'; put 'put ''cm9sbCJdLGQ9TmNlKCksaD1sLnBhcmVudE5vZGU7aCYmaC5zdHlsZSYmYy5ib2R5IT09aDspe3ZhciBtPWguc3R5bGUsXz1tLm92ZXJmbG93LE89bS5vdmVyZmxvd1gsWD1tLm92ZXJmbG93WTtpZihbXyxPLFhdLmluY2x1ZGVzKCJzY3JvbGwiKSlyZXR1cm4gaDtpZihkKXt2YXIgYWU9YS5n''@;'; put 'put ''ZXRDb21wdXRlZFN0eWxlKGgpO2lmKE89YWUub3ZlcmZsb3dYLFg9YWUub3ZlcmZsb3dZLGYuaW5jbHVkZXMoXz1hZS5vdmVyZmxvdyl8fGYuaW5jbHVkZXMoTyl8fGYuaW5jbHVkZXMoWCkpcmV0dXJuIGh9aWYoaC5jbGllbnRIZWlnaHQ8PWguc2Nyb2xsSGVpZ2h0KzEmJihmLmluY2x1ZGVz''@;'; put 'put ''KFgpfHxmLmluY2x1ZGVzKF8pKXx8aC5jbGllbnRXaWR0aDw9aC5zY3JvbGxXaWR0aCsxJiYoZi5pbmNsdWRlcyhPKXx8Zi5pbmNsdWRlcyhfKSkpcmV0dXJuIGg7aD1oLnBhcmVudE5vZGV9cmV0dXJuIGF9ZnVuY3Rpb24gYjUobCl7Zm9yKHZhciBjPWwub3duZXJEb2N1bWVudCxhPWMuZGVm''@;'; put 'put ''YXVsdFZpZXcsZj1sLnBhcmVudE5vZGU7ZiYmZi5zdHlsZSYmYy5ib2R5IT09Zjspe2lmKCJ2aXNpYmxlIiE9PWYuc3R5bGUub3ZlcmZsb3cmJiIiIT09Zi5zdHlsZS5vdmVyZmxvdylyZXR1cm4gZjt2YXIgZD1ENChmLGEpLGg9WyJzY3JvbGwiLCJoaWRkZW4iLCJhdXRvIl0sbT1kLmdldFBy''@;'; put 'put ''b3BlcnR5VmFsdWUoIm92ZXJmbG93IiksXz1kLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93LXkiKSxPPWQuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3cteCIpO2lmKGguaW5jbHVkZXMobSl8fGguaW5jbHVkZXMoXyl8fGguaW5jbHVkZXMoTykpcmV0dXJuIGY7Zj1mLnBhcmVudE5vZGV9''@;'; put 'put ''cmV0dXJuIGF9ZnVuY3Rpb24gQjcobCxjKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06d2luZG93O2lmKGwpe2lmKGw9PT1hKXJldHVybiJ3aWR0aCI9PT1jPyIiLmNvbmNhdChhLmlubmVyV2lkdGgsInB4Iik6ImhlaWdodCI9''@;'; put 'put ''PT1jPyIiLmNvbmNhdChhLmlubmVySGVpZ2h0LCJweCIpOnZvaWQgMDt2YXIgZj1sLnN0eWxlW2NdO2lmKCIiIT09ZiYmdm9pZCAwIT09ZilyZXR1cm4gZjt2YXIgZD1ENChsLGEpO3JldHVybiIiIT09ZFtjXSYmdm9pZCAwIT09ZFtjXT9kW2NdOnZvaWQgMH19ZnVuY3Rpb24gdUdlKGwsYyl7''@;'; put 'put ''dmFyIGE9Yy5zZWxlY3RvclRleHQsZj0hMTtyZXR1cm4gYy50eXBlPT09Q1NTUnVsZS5TVFlMRV9SVUxFJiZhJiYobC5tc01hdGNoZXNTZWxlY3Rvcj9mPWwubXNNYXRjaGVzU2VsZWN0b3IoYSk6bC5tYXRjaGVzJiYoZj1sLm1hdGNoZXMoYSkpKSxmfWZ1bmN0aW9uIEQ0KGwpe3ZhciBjPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGwuY3VycmVudFN0eWxlfHxjLmdldENvbXB1dGVkU3R5bGUobCl9ZnVuY3Rpb24gU2wobCl7cmV0dXJuIGwub2Zmc2V0V2lkdGh9ZnVuY3Rpb24gY3MobCl7cmV0dXJuIGlZ''@;'; put 'put ''KCkmJmwuZmlyc3RDaGlsZCYmIkNBUFRJT04iPT09bC5maXJzdENoaWxkLm5vZGVOYW1lP2wub2Zmc2V0SGVpZ2h0K2wuZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQ6bC5vZmZzZXRIZWlnaHR9ZnVuY3Rpb24gZDMobCl7cmV0dXJuIGwuY2xpZW50SGVpZ2h0fHxsLmlubmVySGVpZ2h0fWZ1bmN0''@;'; put 'put ''aW9uIFlTKGwpe3JldHVybiBsLmNsaWVudFdpZHRofHxsLmlubmVyV2lkdGh9ZnVuY3Rpb24gY0dlKGwsYyxhKXtsLmFkZEV2ZW50TGlzdGVuZXIoYyxhLCExKX1mdW5jdGlvbiBmR2UobCxjLGEpe2wucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGEsITEpfWZ1bmN0aW9uIGtZKGwpe3ZhciBjPWwu''@;'; put 'put ''b3duZXJEb2N1bWVudDtpZihsLnNlbGVjdGlvblN0YXJ0KXJldHVybiBsLnNlbGVjdGlvblN0YXJ0O2lmKGMuc2VsZWN0aW9uKXtsLmZvY3VzKCk7dmFyIGE9Yy5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtpZihudWxsPT09YSlyZXR1cm4gMDt2YXIgZj1sLmNyZWF0ZVRleHRSYW5nZSgpLGQ9''@;'; put 'put ''Zi5kdXBsaWNhdGUoKTtyZXR1cm4gZi5tb3ZlVG9Cb29rbWFyayhhLmdldEJvb2ttYXJrKCkpLGQuc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLGYpLGQudGV4dC5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24geTBlKGwpe3ZhciBjPWwub3duZXJEb2N1bWVudDtpZihsLnNlbGVjdGlvbkVuZCly''@;'; put 'put ''ZXR1cm4gbC5zZWxlY3Rpb25FbmQ7aWYoYy5zZWxlY3Rpb24pe3ZhciBhPWMuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG51bGw9PT1hPzA6bC5jcmVhdGVUZXh0UmFuZ2UoKS50ZXh0LmluZGV4T2YoYS50ZXh0KSthLnRleHQubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGIwZSgp''@;'; put 'put ''e3ZhciBsPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3csYz1sLmRvY3VtZW50LGE9IiI7cmV0dXJuIGwuZ2V0U2VsZWN0aW9uP2E9bC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOmMuc2VsZWN0aW9uJiYiQ29udHJvbCIhPT1j''@;'; put 'put ''LnNlbGVjdGlvbi50eXBlJiYoYT1jLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQpLGF9ZnVuY3Rpb24gRVkoKXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LGM9bC5kb2N1bWVudDtsLmdldFNlbGVjdGlvbj9s''@;'; put 'put ''LmdldFNlbGVjdGlvbigpLmVtcHR5P2wuZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTpsLmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcyYmbC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTpjLnNlbGVjdGlvbiYmYy5zZWxlY3Rpb24uZW1wdHkoKX1mdW5jdGlvbiBXUyhsLGMs''@;'; put 'put ''YSl7aWYodm9pZCAwPT09YSYmKGE9YyksbC5zZXRTZWxlY3Rpb25SYW5nZSl7bC5mb2N1cygpO3RyeXtsLnNldFNlbGVjdGlvblJhbmdlKGMsYSl9Y2F0Y2h7dmFyIGY9bC5wYXJlbnROb2RlLGQ9Zi5zdHlsZS5kaXNwbGF5O2Yuc3R5bGUuZGlzcGxheT0iYmxvY2siLGwuc2V0U2VsZWN0aW9u''@;'; put 'put ''UmFuZ2UoYyxhKSxmLnN0eWxlLmRpc3BsYXk9ZH19fWZ1bmN0aW9uIE51KCl7dmFyIGw9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOmRvY3VtZW50O3JldHVybiB2b2lkIDA9PT14WSYmKHhZPWZ1bmN0aW9uIGRHZSgpe3ZhciBsPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpkb2N1bWVudCxjPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5zdHlsZS5oZWlnaHQ9IjIwMHB4IixjLnN0eWxlLndpZHRoPSIxMDAlIjt2YXIgYT1sLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc3R5bGUu''@;'; put 'put ''Ym94U2l6aW5nPSJjb250ZW50LWJveCIsYS5zdHlsZS5oZWlnaHQ9IjE1MHB4IixhLnN0eWxlLmxlZnQ9IjBweCIsYS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixhLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYS5zdHlsZS50b3A9IjBweCIsYS5zdHlsZS53aWR0aD0iMjAwcHgiLGEuc3R5''@;'; put 'put ''bGUudmlzaWJpbGl0eT0iaGlkZGVuIixhLmFwcGVuZENoaWxkKGMpLChsLmJvZHl8fGwuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChhKTt2YXIgZj1jLm9mZnNldFdpZHRoO2Euc3R5bGUub3ZlcmZsb3c9InNjcm9sbCI7dmFyIGQ9Yy5vZmZzZXRXaWR0aDtyZXR1cm4gZj09PWQmJihk''@;'; put 'put ''PWEuY2xpZW50V2lkdGgpLChsLmJvZHl8fGwuZG9jdW1lbnRFbGVtZW50KS5yZW1vdmVDaGlsZChhKSxmLWR9KGwpKSx4WX1mdW5jdGlvbiBfMGUobCl7cmV0dXJuIGwub2Zmc2V0V2lkdGghPT1sLmNsaWVudFdpZHRofWZ1bmN0aW9uIHcwZShsKXtyZXR1cm4gbC5vZmZzZXRIZWlnaHQhPT1s''@;'; put 'put ''LmNsaWVudEhlaWdodH1mdW5jdGlvbiBxSShsLGMsYSl7UWNlKCk/KGwuc3R5bGUudG9wPWEsbC5zdHlsZS5sZWZ0PWMpOnFjZSgpP2wuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl09InRyYW5zbGF0ZTNkKCIuY29uY2F0KGMsIiwiKS5jb25jYXQoYSwiLDApIik6bC5zdHlsZS50cmFuc2Zv''@;'; put 'put ''cm09InRyYW5zbGF0ZTNkKCIuY29uY2F0KGMsIiwiKS5jb25jYXQoYSwiLDApIil9ZnVuY3Rpb24gaEdlKGwpe3ZhciBjO3JldHVybiBsLnN0eWxlLnRyYW5zZm9ybSYmIiIhPT0oYz1sLnN0eWxlLnRyYW5zZm9ybSk/WyJ0cmFuc2Zvcm0iLGNdOmwuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3Jt''@;'; put 'put ''Il0mJiIiIT09KGM9bC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXSk/WyItd2Via2l0LXRyYW5zZm9ybSIsY106LTF9ZnVuY3Rpb24gR1MobCl7bC5zdHlsZS50cmFuc2Zvcm0mJiIiIT09bC5zdHlsZS50cmFuc2Zvcm0/bC5zdHlsZS50cmFuc2Zvcm09IiI6bC5zdHlsZVsiLXdlYmtpdC10''@;'; put 'put ''cmFuc2Zvcm0iXSYmIiIhPT1sLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdJiYobC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXT0iIil9ZnVuY3Rpb24gJFMobCl7cmV0dXJuIGwmJihbIklOUFVUIiwiU0VMRUNUIiwiVEVYVEFSRUEiXS5pbmRleE9mKGwubm9kZU5hbWUpPi0xfHwidHJ1''@;'; put 'put ''ZSI9PT1sLmNvbnRlbnRFZGl0YWJsZSl9ZnVuY3Rpb24gWEkobCl7cmV0dXJuICRTKGwpJiYhMT09PWwuaGFzQXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIpfWZ1bmN0aW9uIEMwZShsKXtYSShsLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fGwuc2VsZWN0KCl9ZnVuY3Rpb24gQVko''@;'; put 'put ''bCl7cmV0dXJuIWwucGFyZW50Tm9kZX1mdW5jdGlvbiBTMGUobCxjKXtuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZixkKXtmLmZvckVhY2goZnVuY3Rpb24oaCl7aC5pc0ludGVyc2VjdGluZyYmbnVsbCE9PWwub2Zmc2V0UGFyZW50JiYoYygpLGQudW5vYnNlcnZlKGwpKX0p''@;'; put 'put ''fSx7cm9vdDpsLm93bmVyRG9jdW1lbnQuYm9keX0pLm9ic2VydmUobCl9ZnVuY3Rpb24gUGwobCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGx9ZnVuY3Rpb24gTTBlKGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyMDAs''@;'; put 'put ''YT0wLGY9e2xhc3RDYWxsVGhyb3R0bGVkOiEwfSxkPW51bGw7cmV0dXJuIGZ1bmN0aW9uIGgoKXtmb3IodmFyIG09dGhpcyxfPWFyZ3VtZW50cy5sZW5ndGgsTz1uZXcgQXJyYXkoXyksWD0wO1g8XztYKyspT1tYXT1hcmd1bWVudHNbWF07dmFyIGFlPURhdGUubm93KCkscGU9ITE7Zi5sYXN0''@;'; put 'put ''Q2FsbFRocm90dGxlZD0hMCxhfHwoYT1hZSxwZT0hMCk7dmFyIGJlPWMtKGFlLWEpO3JldHVybiBwZT8oZi5sYXN0Q2FsbFRocm90dGxlZD0hMSxsLmFwcGx5KHRoaXMsTykpOihkJiZjbGVhclRpbWVvdXQoZCksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5sYXN0Q2FsbFRocm90dGxlZD0h''@;'; put 'put ''MSxsLmFwcGx5KG0sTyksYT0wLGQ9dm9pZCAwfSxiZSkpLGZ9fWZ1bmN0aW9uIHBHZShsKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsZj1NMGUobCxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sx''@;'; put 'put ''XT9hcmd1bWVudHNbMV06MjAwKSxkPWE7ZnVuY3Rpb24gbSgpe2Zvcih2YXIgXz1hcmd1bWVudHMubGVuZ3RoLE89bmV3IEFycmF5KF8pLFg9MDtYPF87WCsrKU9bWF09YXJndW1lbnRzW1hdO3JldHVybiBkPyhkLT0xLGwuYXBwbHkodGhpcyxPKSk6Zi5hcHBseSh0aGlzLE8pfXJldHVybiBt''@;'; put 'put ''LmNsZWFySGl0cz1mdW5jdGlvbiBoKCl7ZD1hfSxtfWZ1bmN0aW9uIFRZKGwpe3ZhciBmLGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjIwMCxhPW51bGw7cmV0dXJuIGZ1bmN0aW9uIGQoKXtmb3IodmFyIGg9dGhpcyxtPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGgsXz1uZXcgQXJyYXkobSksTz0wO088bTtPKyspX1tPXT1hcmd1bWVudHNbT107cmV0dXJuIGEmJmNsZWFyVGltZW91dChhKSxhPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmPWwuYXBwbHkoaCxfKX0sYyksZn19ZnVuY3Rpb24gbUdlKCl7Zm9yKHZhciBsPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGgsYz1uZXcgQXJyYXkobCksYT0wO2E8bDthKyspY1thXT1hcmd1bWVudHNbYV07dmFyIGY9Y1swXSxkPWMuc2xpY2UoMSk7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBtPWFyZ3VtZW50cy5sZW5ndGgsXz1uZXcgQXJyYXkobSksTz0wO088bTtPKyspX1tPXT1hcmd1bWVudHNbT107cmV0''@;'; put 'put ''dXJuIFBzKGQsZnVuY3Rpb24oWCxhZSl7cmV0dXJuIGFlKFgpfSxmLmFwcGx5KHRoaXMsXykpfX1mdW5jdGlvbiBPWShsKXtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjPjE/Yy0xOjApLGY9MTtmPGM7ZisrKWFbZi0xXT1hcmd1bWVudHNbZl07cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGgsbT1uZXcgQXJyYXkoaCksXz0wO188aDtfKyspbVtfXT1hcmd1bWVudHNbX107cmV0dXJuIGwuYXBwbHkodGhpcyxhLmNvbmNhdChtKSl9fWZ1bmN0aW9uIGswZShsKXt2YXIgYz1sLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gYShmKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxtPW5ldyBBcnJheShoKSxfPTA7XzxoO18rKyltW19dPWFyZ3VtZW50c1tfXTt2YXIgTz1mLmNvbmNhdChtKTtyZXR1cm4gTy5sZW5ndGg+PWM/bC5hcHBseSh0aGlzLE8pOmEoTyl9fShbXSl9ZnVuY3Rpb24gZ0dl''@;'; put 'put ''KGwpe3ZhciBjPWwubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBhKGYpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLG09bmV3IEFycmF5KGgpLF89MDtfPGg7XysrKW1bX109YXJndW1lbnRzW19dO3ZhciBPPWYuY29uY2F0KG0ucmV2ZXJzZSgpKTtyZXR1cm4g''@;'; put 'put ''Ty5sZW5ndGg+PWM/bC5hcHBseSh0aGlzLE8pOmEoTyl9fShbXSl9ZnVuY3Rpb24gSkkobCxjLGEsZixkLGgsbSxfKXtyZXR1cm4gaW8oXyk/bC5jYWxsKGMsYSxmLGQsaCxtLF8pOmlvKG0pP2wuY2FsbChjLGEsZixkLGgsbSk6aW8oaCk/bC5jYWxsKGMsYSxmLGQsaCk6aW8oZCk/bC5jYWxs''@;'; put 'put ''KGMsYSxmLGQpOmlvKGYpP2wuY2FsbChjLGEsZik6aW8oYSk/bC5jYWxsKGMsYSk6bC5jYWxsKGMpfVQoNjUxMjUpO3ZhciBBMGUsaG89e0FMVDoxOCxBUlJPV19ET1dOOjQwLEFSUk9XX0xFRlQ6MzcsQVJST1dfUklHSFQ6MzksQVJST1dfVVA6MzgsQVVESU9fRE9XTjpaSSgpPzE4MjoxNzQs''@;'; put 'put ''QVVESU9fTVVURTpaSSgpPzE4MToxNzMsQVVESU9fVVA6WkkoKT8xODM6MTc1LEJBQ0tTUEFDRTo4LENBUFNfTE9DSzoyMCxDT01NQToxODgsQ09NTUFORF9MRUZUOjkxLENPTU1BTkRfUklHSFQ6OTMsQ09NTUFORF9GSVJFRk9YOjIyNCxDT05UUk9MOjE3LERFTEVURTo0NixFTkQ6MzUsRU5U''@;'; put 'put ''RVI6MTMsRVNDQVBFOjI3LEYxOjExMixGMjoxMTMsRjM6MTE0LEY0OjExNSxGNToxMTYsRjY6MTE3LEY3OjExOCxGODoxMTksRjk6MTIwLEYxMDoxMjEsRjExOjEyMixGMTI6MTIzLEYxMzoxMjQsRjE0OjEyNSxGMTU6MTI2LEYxNjoxMjcsRjE3OjEyOCxGMTg6MTI5LEYxOToxMzAsSE9NRToz''@;'; put 'put ''NixJTlNFUlQ6NDUsTUVESUFfTkVYVDoxNzYsTUVESUFfUExBWV9QQVVTRToxNzksTUVESUFfUFJFVjoxNzcsTUVESUFfU1RPUDoxNzgsTlVMTDowLE5VTV9MT0NLOjE0NCxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQQVVTRToxOSxQRVJJT0Q6MTkwLFNDUk9MTF9MT0NLOjE0NSxTSElGVDox''@;'; put 'put ''NixTUEFDRTozMixUQUI6OSxBOjY1LEM6NjcsRDo2OCxGOjcwLEw6NzYsTzo3OSxQOjgwLFM6ODMsVjo4NixYOjg4LFk6ODksWjo5MH0sdkdlPVtoby5BTFQsaG8uQVJST1dfRE9XTixoby5BUlJPV19MRUZULGhvLkFSUk9XX1JJR0hULGhvLkFSUk9XX1VQLGhvLkFVRElPX0RPV04saG8uQVVE''@;'; put 'put ''SU9fTVVURSxoby5BVURJT19VUCxoby5CQUNLU1BBQ0UsaG8uQ0FQU19MT0NLLGhvLkRFTEVURSxoby5FTkQsaG8uRU5URVIsaG8uRVNDQVBFLGhvLkYxLGhvLkYyLGhvLkYzLGhvLkY0LGhvLkY1LGhvLkY2LGhvLkY3LGhvLkY4LGhvLkY5LGhvLkYxMCxoby5GMTEsaG8uRjEyLGhvLkYxMyxo''@;'; put 'put ''by5GMTQsaG8uRjE1LGhvLkYxNixoby5GMTcsaG8uRjE4LGhvLkYxOSxoby5IT01FLGhvLklOU0VSVCxoby5NRURJQV9ORVhULGhvLk1FRElBX1BMQVlfUEFVU0UsaG8uTUVESUFfUFJFVixoby5NRURJQV9TVE9QLGhvLk5VTEwsaG8uTlVNX0xPQ0ssaG8uUEFHRV9ET1dOLGhvLlBBR0VfVVAs''@;'; put 'put ''aG8uUEFVU0UsaG8uU0NST0xMX0xPQ0ssaG8uU0hJRlQsaG8uVEFCXTtmdW5jdGlvbiBFMGUobCl7cmV0dXJuIDMyPT09bHx8bD49NDgmJmw8PTU3fHxsPj05NiYmbDw9MTExfHxsPj0xODYmJmw8PTE5Mnx8bD49MjE5JiZsPD0yMjJ8fGw+PTIyNnx8bD49NjUmJmw8PTkwfWZ1bmN0aW9uIERZ''@;'; put 'put ''KGwpe3JldHVybiB2R2UuaW5jbHVkZXMobCl9ZnVuY3Rpb24geUdlKGwpe3ZhciBjPVtdO3JldHVybiBZSSgpP2MucHVzaChoby5DT01NQU5EX0xFRlQsaG8uQ09NTUFORF9SSUdIVCxoby5DT01NQU5EX0ZJUkVGT1gpOmMucHVzaChoby5DT05UUk9MKSxjLmluY2x1ZGVzKGwpfWZ1bmN0aW9u''@;'; put 'put ''IHgwZShsKXtyZXR1cm5baG8uQ09OVFJPTCxoby5DT01NQU5EX0xFRlQsaG8uQ09NTUFORF9SSUdIVCxoby5DT01NQU5EX0ZJUkVGT1hdLmluY2x1ZGVzKGwpfWZ1bmN0aW9uIGo3KGwsYyl7dmFyIGE9Yy5zcGxpdCgifCIpLGY9ITE7cmV0dXJuIFJuKGEsZnVuY3Rpb24oZCl7aWYobD09PWhv''@;'; put 'put ''W2RdKXJldHVybiBmPSEwLCExfSksZn1mdW5jdGlvbiBIZChsKXtsLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25FbmFibGVkPSExLGwuY2FuY2VsQnViYmxlPSEwfWZ1bmN0aW9uIF81KGwpe3JldHVybiExPT09bC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uRW5hYmxlZH1mdW5jdGlvbiBJNChsKXty''@;'; put 'put ''ZXR1cm4gMj09PWwuYnV0dG9ufWZ1bmN0aW9uIFFJKGwpe3JldHVybiAwPT09bC5idXR0b259ZnVuY3Rpb24gV2woKXt2YXIgbDtpbyhjb25zb2xlKSYmKGw9Y29uc29sZSkud2Fybi5hcHBseShsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSVkoKXt2YXIgbDtpbyhjb25zb2xlKSYmKGw9Y29uc29s''@;'; put 'put ''ZSkuZXJyb3IuYXBwbHkobCxhcmd1bWVudHMpfWZ1bmN0aW9uIEtTKGwpe3JldHVybihLUz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFQwZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1m''@;'; put 'put ''LmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsd0dlKGYua2V5KSxmKX19ZnVuY3Rpb24gd0dlKGwpe3ZhciBjPWZ1bmN0aW9uIENHZShsLGMpe2lmKCJvYmplY3QiIT09S1MobCl8fG51''@;'; put 'put ''bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09S1MoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBh''@;'; put 'put ''IHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUtTKGMpP2M6U3RyaW5nKGMpfXZhciB6Nz1bImFmdGVyQ2VsbE1ldGFSZXNldCIsImFmdGVyQ2hhbmdlIiwiYWZ0ZXJDb250ZXh0TWVu''@;'; put 'put ''dURlZmF1bHRPcHRpb25zIiwiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLCJiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsImFmdGVyQ29udGV4dE1lbnVIaWRlIiwiYmVmb3JlQ29udGV4dE1lbnVTaG93IiwiYWZ0ZXJDb250''@;'; put 'put ''ZXh0TWVudVNob3ciLCJhZnRlckNvcHlMaW1pdCIsImJlZm9yZUNyZWF0ZUNvbCIsImFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2UiLCJhZnRlckNyZWF0ZUNvbCIsImJlZm9yZUNyZWF0ZVJvdyIsImFmdGVyQ3JlYXRlUm93IiwiYWZ0ZXJEZXNlbGVjdCIsImFmdGVyRGVzdHJveSIsImFmdGVy''@;'; put 'put ''RG9jdW1lbnRLZXlEb3duIiwiYWZ0ZXJEcmF3U2VsZWN0aW9uIiwiYmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXMiLCJhZnRlckdldENlbGxNZXRhIiwiYWZ0ZXJHZXRDb2xIZWFkZXIiLCJhZnRlckdldFJvd0hlYWRlciIsImFmdGVySW5pdCIsImFmdGVyTG9hZERhdGEiLCJhZnRlclVwZGF0''@;'; put 'put ''ZURhdGEiLCJhZnRlck1vbWVudHVtU2Nyb2xsIiwiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLCJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIiwiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLCJhZnRlck9uQ2VsbE1vdXNlVXAiLCJhZnRlck9uQ2VsbENvbnRleHRNZW51IiwiYWZ0ZXJPbkNl''@;'; put 'put ''bGxNb3VzZU92ZXIiLCJhZnRlck9uQ2VsbE1vdXNlT3V0IiwiYWZ0ZXJSZW1vdmVDb2wiLCJhZnRlclJlbW92ZVJvdyIsImJlZm9yZVJlbmRlcmVyIiwiYWZ0ZXJSZW5kZXJlciIsImFmdGVyUm93U2VxdWVuY2VDaGFuZ2UiLCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsImFmdGVyU2Nyb2xs''@;'; put 'put ''VmVydGljYWxseSIsImFmdGVyU2VsZWN0aW9uIiwiYWZ0ZXJTZWxlY3Rpb25CeVByb3AiLCJhZnRlclNlbGVjdGlvbkVuZCIsImFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wIiwiYWZ0ZXJTZXRDZWxsTWV0YSIsImFmdGVyUmVtb3ZlQ2VsbE1ldGEiLCJhZnRlclNldERhdGFBdENlbGwiLCJhZnRl''@;'; put 'put ''clNldERhdGFBdFJvd1Byb3AiLCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLCJhZnRlclVwZGF0ZVNldHRpbmdzIiwiYWZ0ZXJWYWxpZGF0ZSIsImJlZm9yZUxhbmd1YWdlQ2hhbmdlIiwiYWZ0ZXJMYW5ndWFnZUNoYW5nZSIsImJlZm9yZUF1dG9maWxsIiwiYWZ0ZXJBdXRvZmlsbCIsImJl''@;'; put 'put ''Zm9yZUNlbGxBbGlnbm1lbnQiLCJiZWZvcmVDaGFuZ2UiLCJiZWZvcmVDaGFuZ2VSZW5kZXIiLCJiZWZvcmVEcmF3Qm9yZGVycyIsImJlZm9yZUdldENlbGxNZXRhIiwiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLCJiZWZvcmVJbml0IiwiYmVmb3JlSW5pdFdhbGtvbnRhYmxlIiwiYmVmb3JlTG9h''@;'; put 'put ''ZERhdGEiLCJiZWZvcmVVcGRhdGVEYXRhIiwiYmVmb3JlS2V5RG93biIsImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsImJlZm9yZU9uQ2VsbE1vdXNlVXAiLCJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsImJlZm9yZU9uQ2VsbE1vdXNlT3V0IiwiYmVm''@;'; put 'put ''b3JlUmVtb3ZlQ29sIiwiYmVmb3JlUmVtb3ZlUm93IiwiYmVmb3JlVmlld1JlbmRlciIsImFmdGVyVmlld1JlbmRlciIsImJlZm9yZVJlbmRlciIsImFmdGVyUmVuZGVyIiwiYmVmb3JlU2V0Q2VsbE1ldGEiLCJiZWZvcmVTZXRSYW5nZVN0YXJ0T25seSIsImJlZm9yZVNldFJhbmdlU3RhcnQi''@;'; put 'put ''LCJiZWZvcmVTZXRSYW5nZUVuZCIsImJlZm9yZVRvdWNoU2Nyb2xsIiwiYmVmb3JlVmFsaWRhdGUiLCJiZWZvcmVWYWx1ZVJlbmRlciIsImNvbnN0cnVjdCIsImluaXQiLCJtb2RpZnlDb2xIZWFkZXIiLCJtb2RpZnlDb2xXaWR0aCIsIm1vZGlmeVJvd0hlYWRlciIsIm1vZGlmeVJvd0hlaWdo''@;'; put 'put ''dCIsIm1vZGlmeURhdGEiLCJtb2RpZnlTb3VyY2VEYXRhIiwibW9kaWZ5Um93RGF0YSIsIm1vZGlmeUdldENlbGxDb29yZHMiLCJiZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXIiLCJiZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLCJwZXJzaXN0ZW50U3RhdGVMb2FkIiwicGVyc2lz''@;'; put 'put ''dGVudFN0YXRlUmVzZXQiLCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwiYmVmb3JlQ29sdW1uU29ydCIsImFmdGVyQ29sdW1uU29ydCIsIm1vZGlmeUF1dG9maWxsUmFuZ2UiLCJtb2RpZnlDb3B5YWJsZVJhbmdlIiwiYmVmb3JlQ3V0IiwiYWZ0ZXJDdXQiLCJiZWZvcmVDb3B5IiwiYWZ0ZXJDb3B5''@;'; put 'put ''IiwiYmVmb3JlUGFzdGUiLCJhZnRlclBhc3RlIiwiYmVmb3JlQ29sdW1uRnJlZXplIiwiYWZ0ZXJDb2x1bW5GcmVlemUiLCJiZWZvcmVDb2x1bW5Nb3ZlIiwiYWZ0ZXJDb2x1bW5Nb3ZlIiwiYmVmb3JlQ29sdW1uVW5mcmVlemUiLCJhZnRlckNvbHVtblVuZnJlZXplIiwiYmVmb3JlUm93TW92''@;'; put 'put ''ZSIsImFmdGVyUm93TW92ZSIsImJlZm9yZUNvbHVtblJlc2l6ZSIsImFmdGVyQ29sdW1uUmVzaXplIiwiYmVmb3JlUm93UmVzaXplIiwiYWZ0ZXJSb3dSZXNpemUiLCJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsImFmdGVyR2V0Um93SGVhZGVyUmVuZGVyZXJzIiwiYmVmb3JlU3Ry''@;'; put 'put ''ZXRjaGluZ0NvbHVtbldpZHRoIiwiYmVmb3JlRmlsdGVyIiwiYWZ0ZXJGaWx0ZXIiLCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIiwiYWZ0ZXJOYW1lZEV4cHJlc3Npb25BZGRlZCIsImFmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsImFmdGVyU2hlZXRBZGRlZCIsImFmdGVyU2hlZXRS''@;'; put 'put ''ZW5hbWVkIiwiYWZ0ZXJTaGVldFJlbW92ZWQiLCJtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQiLCJtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZSIsImJlZm9yZVVuZG8iLCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLCJhZnRlclVuZG8iLCJhZnRlclVuZG9TdGFja0NoYW5nZSIsImJlZm9yZVJlZG8i''@;'; put 'put ''LCJiZWZvcmVSZWRvU3RhY2tDaGFuZ2UiLCJhZnRlclJlZG8iLCJhZnRlclJlZG9TdGFja0NoYW5nZSIsIm1vZGlmeVJvd0hlYWRlcldpZHRoIiwibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLCJtb2RpZnlUcmFuc2Zvcm1FbmQiLCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwiYWZ0ZXJNb2Rp''@;'; put 'put ''ZnlUcmFuc2Zvcm1FbmQiLCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIiwiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIiwiYmVmb3JlSGlkZVJvd3MiLCJhZnRlckhpZGVSb3dzIiwiYmVmb3JlVW5oaWRl''@;'; put 'put ''Um93cyIsImFmdGVyVW5oaWRlUm93cyIsImJlZm9yZUhpZGVDb2x1bW5zIiwiYWZ0ZXJIaWRlQ29sdW1ucyIsImJlZm9yZVVuaGlkZUNvbHVtbnMiLCJhZnRlclVuaGlkZUNvbHVtbnMiLCJiZWZvcmVUcmltUm93IiwiYWZ0ZXJUcmltUm93IiwiYmVmb3JlVW50cmltUm93IiwiYWZ0ZXJVbnRy''@;'; put 'put ''aW1Sb3ciLCJiZWZvcmVEcm9wZG93bk1lbnVTaG93IiwiYWZ0ZXJEcm9wZG93bk1lbnVTaG93IiwiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiwiYmVmb3JlQWRkQ2hpbGQiLCJhZnRlckFkZENoaWxkIiwiYmVmb3JlRGV0YWNoQ2hpbGQiLCJhZnRlckRldGFjaENoaWxkIiwiYWZ0ZXJCZWdpbkVk''@;'; put 'put ''aXRpbmciLCJiZWZvcmVNZXJnZUNlbGxzIiwiYWZ0ZXJNZXJnZUNlbGxzIiwiYmVmb3JlVW5tZXJnZUNlbGxzIiwiYWZ0ZXJVbm1lcmdlQ2VsbHMiLCJhZnRlckxpc3RlbiIsImFmdGVyVW5saXN0ZW4iLCJhZnRlclJlZnJlc2hEaW1lbnNpb25zIiwiYmVmb3JlUmVmcmVzaERpbWVuc2lvbnMi''@;'; put 'put ''LCJiZWZvcmVDb2x1bW5Db2xsYXBzZSIsImFmdGVyQ29sdW1uQ29sbGFwc2UiLCJiZWZvcmVDb2x1bW5FeHBhbmQiLCJhZnRlckNvbHVtbkV4cGFuZCIsIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCJdLE1HZT1PbChBMGV8fChBMGU9ZnVuY3Rpb24gU0dlKGwsYyl7cmV0dXJuIGN8fChjPWwu''@;'; put 'put ''c2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWydUaGUgcGx1Z2luIGhvb2sgIltob29rTmFtZV0iIHdhcyByZW1vdmVkIGluIEhhbmRzb250YWJsZSBbcmVtb3ZlZEluVmVyc2lvbl0uIFxu''@;'; put 'put ''ICBQbGVhc2UgY29uc3VsdCByZWxlYXNlIG5vdGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5kc29udGFibGUvaGFuZHNvbnRhYmxlL3JlbGVhc2VzL3RhZy9bcmVtb3ZlZEluVmVyc2lvbl0gdG8gXG4gIGxlYXJuIGFib3V0IHRoZSBtaWdyYXRpb24gcGF0aC4nXSxbJ1RoZSBwbHVnaW4gaG9v''@;'; put 'put ''ayAiW2hvb2tOYW1lXSIgd2FzIHJlbW92ZWQgaW4gSGFuZHNvbnRhYmxlIFtyZW1vdmVkSW5WZXJzaW9uXS5cXHgyMFxuICBQbGVhc2UgY29uc3VsdCByZWxlYXNlIG5vdGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5kc29udGFibGUvaGFuZHNvbnRhYmxlL3JlbGVhc2VzL3RhZy9bcmVtb3Zl''@;'; put 'put ''ZEluVmVyc2lvbl0gdG9cXHgyMFxuICBsZWFybiBhYm91dCB0aGUgbWlncmF0aW9uIHBhdGguJ10pKSksUlk9bmV3IE1hcChbWyJtb2RpZnlSb3ciLCI4LjAuMCJdLFsibW9kaWZ5Q29sIiwiOC4wLjAiXSxbInVubW9kaWZ5Um93IiwiOC4wLjAiXSxbInVubW9kaWZ5Q29sIiwiOC4wLjAiXSxb''@;'; put 'put ''InNraXBMZW5ndGhDYWNoZSIsIjguMC4wIl0sWyJoaWRkZW5Db2x1bW4iLCI4LjAuMCJdLFsiaGlkZGVuUm93IiwiOC4wLjAiXV0pLExZPW5ldyBNYXAoW10pLE8wZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXsoZnVuY3Rpb24gYkdlKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuZ2xvYmFsQnVja2V0PXRoaXMuY3JlYXRlRW1wdHlCdWNrZXQoKX1yZXR1cm4gZnVuY3Rpb24gX0dlKGwsYyxhKXtjJiZUMGUobC5wcm90b3R5cGUsYyksYSYmVDBlKGwsYSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImNyZWF0ZUVtcHR5QnVja2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIFJuKHo3LGZ1bmN0aW9uKGYpe3JldHVybiBhW2ZdPVtdfSks''@;'; put 'put ''YX19LHtrZXk6ImdldEJ1Y2tldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gYT8oYS5wbHVnaW5Ib29rQnVja2V0fHwoYS5wbHVnaW5Ib29rQnVja2V0PXRoaXMuY3JlYXRl''@;'; put 'put ''RW1wdHlCdWNrZXQoKSksYS5wbHVnaW5Ib29rQnVja2V0KTp0aGlzLmdsb2JhbEJ1Y2tldH19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLGg9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShmKSlSbihmLGZ1bmN0aW9uKE8pe3JldHVybiBkLmFkZChhLE8saCl9KTtlbHNle1JZLmhhcyhhKSYmV2wodlkoTUdlLHtob29rTmFtZTphLHJlbW92ZWRJblZlcnNpb246UlkuZ2V0KGEpfSkpLExZLmhhcyhhKSYmV2woTFkuZ2V0KGEpKTt2YXIgbT10aGlzLmdldEJ1Y2tl''@;'; put 'put ''dChoKTtpZih0eXBlb2YgbVthXT4idSImJih0aGlzLnJlZ2lzdGVyKGEpLG1bYV09W10pLGYuc2tpcD0hMSwtMT09PW1bYV0uaW5kZXhPZihmKSl7dmFyIF89ITE7Zi5pbml0aWFsSG9vayYmUm4obVthXSxmdW5jdGlvbihPLFgpe2lmKE8uaW5pdGlhbEhvb2spcmV0dXJuIG1bYV1bWF09Zixf''@;'; put 'put ''PSEwLCExfSksX3x8bVthXS5wdXNoKGYpfX1yZXR1cm4gdGhpc319LHtrZXk6Im9uY2UiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dGhpcyxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO0FycmF5LmlzQXJyYXkoZik/Um4o''@;'; put 'put ''ZixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbmNlKGEsbSxoKX0pOihmLnJ1bk9uY2U9ITAsdGhpcy5hZGQoYSxmLGgpKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgaD10aGlzLmdldEJ1Y2tldChhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1sy''@;'; put 'put ''XT9hcmd1bWVudHNbMl06bnVsbCk7cmV0dXJuIHR5cGVvZiBoW2FdPCJ1IiYmaFthXS5pbmRleE9mKGYpPj0wJiYoZi5za2lwPSEwLCEwKX19LHtrZXk6ImhhcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5nZXRCdWNrZXQoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwpO3JldHVybiEodm9pZCAwPT09ZFthXXx8IWRbYV0ubGVuZ3RoKX19LHtrZXk6InJ1biIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCxtLF8sTyxYKXt2YXIgYWU9dGhpcy5nbG9iYWxCdWNrZXRbZl0scGU9YWU/YWUubGVuZ3RoOjAsYmU9MDtpZihw''@;'; put 'put ''ZSlmb3IoO2JlPHBlOylpZihhZVtiZV0mJiFhZVtiZV0uc2tpcCl7dmFyIHhlPUpJKGFlW2JlXSxhLGQsaCxtLF8sTyxYKTt2b2lkIDAhPT14ZSYmKGQ9eGUpLGFlW2JlXSYmYWVbYmVdLnJ1bk9uY2UmJnRoaXMucmVtb3ZlKGYsYWVbYmVdKSxiZSs9MX1lbHNlIGJlKz0xO3ZhciBWZT10aGlz''@;'; put 'put ''LmdldEJ1Y2tldChhKVtmXSxaZT1WZT9WZS5sZW5ndGg6MCxsdD0wO2lmKFplKWZvcig7bHQ8WmU7KWlmKFZlW2x0XSYmIVZlW2x0XS5za2lwKXt2YXIgZHQ9SkkoVmVbbHRdLGEsZCxoLG0sXyxPLFgpO3ZvaWQgMCE9PWR0JiYoZD1kdCksVmVbbHRdJiZWZVtsdF0ucnVuT25jZSYmdGhpcy5y''@;'; put 'put ''ZW1vdmUoZixWZVtsdF0sYSksbHQrPTF9ZWxzZSBsdCs9MTtyZXR1cm4gZH19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7bWEodGhpcy5nZXRCdWNrZXQoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwpLGZ1bmN0aW9u''@;'; put 'put ''KGYsZCxoKXtyZXR1cm4gaFtkXS5sZW5ndGg9MH0pfX0se2tleToicmVnaXN0ZXIiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuaXNSZWdpc3RlcmVkKGEpfHx6Ny5wdXNoKGEpfX0se2tleToiZGVyZWdpc3RlciIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5pc1JlZ2lzdGVyZWQoYSkmJno3LnNw''@;'; put 'put ''bGljZSh6Ny5pbmRleE9mKGEpLDEpfX0se2tleToiaXNEZXByZWNhdGVkIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gTFkuaGFzKGEpfHxSWS5oYXMoYSl9fSx7a2V5OiJpc1JlZ2lzdGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB6Ny5pbmRleE9mKGEpPj0wfX0se2tleToiZ2V0''@;'; put 'put ''UmVnaXN0ZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gejd9fV0sW3trZXk6ImdldFNpbmdsZXRvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gRUdlKCl7cmV0dXJuIGtHZX0oKX19XSksbH0oKSxrR2U9bmV3IE8wZTtjb25zdCB1bz1PMGU7ZnVuY3Rpb24gRDBlKGwp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbiBPR2UobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gUFkobCl9KGwpfHxmdW5jdGlvbiBUR2UobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9t''@;'; put 'put ''KGwpfShsKXx8ZnVuY3Rpb24gQUdlKGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBQWShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gUFkobCxjKX19KGwpfHxmdW5jdGlvbiB4R2UoKXt0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBQ''@;'; put 'put ''WShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfXZhciBGWT1uZXcgTWFwO2Z1bmN0aW9uIEZmKCl7dmFyIGw9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0/YXJndW1lbnRzWzBdOiJjb21tb24iO0ZZLmhhcyhsKXx8Rlkuc2V0KGwsbmV3IE1hcCk7dmFyIGM9RlkuZ2V0KGwpO3JldHVybntyZWdpc3RlcjpmdW5jdGlvbiBhKF8sTyl7Yy5zZXQoXyxPKX0sZ2V0SXRlbTpmdW5jdGlvbiBmKF8pe3JldHVybiBjLmdldChfKX0saGFzSXRl''@;'; put 'put ''bTpmdW5jdGlvbiBkKF8pe3JldHVybiBjLmhhcyhfKX0sZ2V0TmFtZXM6ZnVuY3Rpb24gaCgpe3JldHVybiBEMGUoYy5rZXlzKCkpfSxnZXRWYWx1ZXM6ZnVuY3Rpb24gbSgpe3JldHVybiBEMGUoYy52YWx1ZXMoKSl9fX12YXIgSFk9bmV3IFdlYWtNYXAscVM9RmYoImVkaXRvcnMiKSxER2U9''@;'; put 'put ''cVMucmVnaXN0ZXIsSTBlPXFTLmdldEl0ZW0sUjBlPXFTLmhhc0l0ZW0sSUdlPXFTLmdldE5hbWVzO2Z1bmN0aW9uIFJHZShsKXt2YXIgYz17fSxhPWw7dGhpcy5nZXRDb25zdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBsfSx0aGlzLmdldEluc3RhbmNlPWZ1bmN0aW9uKGYpe3JldHVybiBm''@;'; put 'put ''Lmd1aWQgaW4gY3x8KGNbZi5ndWlkXT1uZXcgYShmKSksY1tmLmd1aWRdfSx1by5nZXRTaW5nbGV0b24oKS5hZGQoImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXtjW3RoaXMuZ3VpZF09bnVsbH0pfWZ1bmN0aW9uIEwwZShsLGMpe3ZhciBhO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsKUhZLmdl''@;'; put 'put ''dChsKXx8WTAobnVsbCxsKSxhPUhZLmdldChsKTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgbCl0aHJvdyBFcnJvcignT25seSBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgY2FuIGJlIHBhc3NlZCBhcyAiZWRpdG9yIiBwYXJhbWV0ZXInKTthPUkwZShsKX1pZighYSl0aHJvdyBFcnJvcignTm8g''@;'; put 'put ''ZWRpdG9yIHJlZ2lzdGVyZWQgdW5kZXIgbmFtZSAiJy5jb25jYXQobCwnIicpKTtyZXR1cm4gYS5nZXRJbnN0YW5jZShjKX1mdW5jdGlvbiBlUihsKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbClyZXR1cm4gbDtpZighUjBlKGwpKXRocm93IEVycm9yKCdObyByZWdpc3RlcmVkIGVkaXRvciBm''@;'; put 'put ''b3VuZCB1bmRlciAiJy5jb25jYXQobCwnIiBuYW1lJykpO3JldHVybiBJMGUobCkuZ2V0Q29uc3RydWN0b3IoKX1mdW5jdGlvbiBZMChsLGMpe2wmJiJzdHJpbmciIT10eXBlb2YgbCYmKGw9KGM9bCkuRURJVE9SX1RZUEUpO3ZhciBhPW5ldyBSR2UoYyk7InN0cmluZyI9PXR5cGVvZiBsJiZE''@;'; put 'put ''R2UobCxhKSxIWS5zZXQoYyxhKX1mdW5jdGlvbiBYUyhsKXtyZXR1cm4oWFM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBQMGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJh''@;'; put 'put ''YmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEZHZShmLmtleSksZil9fWZ1bmN0aW9uIEZHZShsKXt2YXIgYz1mdW5jdGlvbiBIR2UobCxjKXtpZigib2JqZWN0IiE9PVhTKGwpfHxudWxsPT09bCly''@;'; put 'put ''ZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVhTKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRp''@;'; put 'put ''dmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1YUyhjKT9jOlN0cmluZyhjKX12YXIgdFI9MCxOR2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7KGZ1bmN0aW9uIExHZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmNvbnRleHQ9Y3x8dGhpcyx0''@;'; put 'put ''aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnN8fCh0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnM9W10pfXJldHVybiBmdW5jdGlvbiBQR2UobCxjLGEpe2MmJlAwZShsLnByb3RvdHlwZSxjKSxhJiZQMGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFi''@;'; put 'put ''bGU6ITF9KX0obCxbe2tleToiYWRkRXZlbnRMaXN0ZW5lciIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXMsbT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2Z1bmN0aW9uIF8oTyl7ZC5jYWxsKHRoaXMsZnVuY3Rpb24gVkdl''@;'; put 'put ''KGwpe3ZhciBjPWwuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO3JldHVybiBsLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj1mdW5jdGlvbigpe2MuYXBwbHkodGhpcyksSGQodGhpcyl9LGx9KE8pKX1yZXR1cm4iYm9vbGVhbiIhPXR5cGVvZiBtJiYhQmNlKCkmJihtPSExKSx0aGlzLmNvbnRl''@;'; put 'put ''eHQuZXZlbnRMaXN0ZW5lcnMucHVzaCh7ZWxlbWVudDphLGV2ZW50OmYsY2FsbGJhY2s6ZCxjYWxsYmFja1Byb3h5Ol8sb3B0aW9uczptLGV2ZW50TWFuYWdlcjp0aGlzfSksYS5hZGRFdmVudExpc3RlbmVyKGYsXyxtKSx0Uis9MSxmdW5jdGlvbigpe2gucmVtb3ZlRXZlbnRMaXN0ZW5lcihh''@;'; put 'put ''LGYsZCl9fX0se2tleToicmVtb3ZlRXZlbnRMaXN0ZW5lciIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe2Zvcih2YXIgXyxoPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sbT10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMubGVuZ3RoO207''@;'; put 'put ''KWlmKChfPXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc1ttLT0xXSkuZXZlbnQ9PT1mJiZfLmVsZW1lbnQ9PT1hKXtpZihkJiZkIT09Xy5jYWxsYmFja3x8aCYmXy5ldmVudE1hbmFnZXIhPT10aGlzKWNvbnRpbnVlO3RoaXMuY29udGV4dC5ldmVudExpc3RlbmVycy5zcGxpY2UobSwxKSxf''@;'; put 'put ''LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihfLmV2ZW50LF8uY2FsbGJhY2tQcm94eSxfLm9wdGlvbnMpLHRSLT0xfX19LHtrZXk6ImNsZWFyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVu''@;'; put 'put ''dHNbMF07aWYodGhpcy5jb250ZXh0KWZvcih2YXIgZj10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMubGVuZ3RoO2Y7KXt2YXIgZD10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnNbZi09MV07YSYmZC5ldmVudE1hbmFnZXIhPT10aGlzfHwodGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJz''@;'; put 'put ''LnNwbGljZShmLDEpLGQuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGQuZXZlbnQsZC5jYWxsYmFja1Byb3h5LGQub3B0aW9ucyksdFItPTEpfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJFdmVudHMoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dGhpcy5jbGVhckV2ZW50cygpLHRoaXMuY29udGV4dD1udWxsfX0se2tleToiZGVzdHJveVdpdGhPd25FdmVudHNPbmx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xlYXJFdmVudHMoITApLHRoaXMuY29udGV4dD1udWxsfX0se2tleToiZmlyZUV2ZW50Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihhLGYpe3ZhciBkPWEuZG9jdW1lbnQsaD1hO2R8fChoPShkPWEub3duZXJEb2N1bWVudD9hLm93bmVyRG9jdW1lbnQ6YSkuZGVmYXVsdFZpZXcpO3ZhciBfLG09e2J1YmJsZXM6ITAsY2FuY2VsYWJsZToibW91c2Vtb3ZlIiE9PWYsdmlldzpoLGRldGFpbDowLHNjcmVlblg6MCxzY3JlZW5Z''@;'; put 'put ''OjAsY2xpZW50WDoxLGNsaWVudFk6MSxjdHJsS2V5OiExLGFsdEtleTohMSxzaGlmdEtleTohMSxtZXRhS2V5OiExLGJ1dHRvbjowLHJlbGF0ZWRUYXJnZXQ6dm9pZCAwfTtkLmNyZWF0ZUV2ZW50PyhfPWQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIikpLmluaXRNb3VzZUV2ZW50KGYsbS5i''@;'; put 'put ''dWJibGVzLG0uY2FuY2VsYWJsZSxtLnZpZXcsbS5kZXRhaWwsbS5zY3JlZW5YLG0uc2NyZWVuWSxtLmNsaWVudFgsbS5jbGllbnRZLG0uY3RybEtleSxtLmFsdEtleSxtLnNoaWZ0S2V5LG0ubWV0YUtleSxtLmJ1dHRvbixtLnJlbGF0ZWRUYXJnZXR8fGQuYm9keS5wYXJlbnROb2RlKTpfPWQu''@;'; put 'put ''Y3JlYXRlRXZlbnRPYmplY3QoKSxhLmRpc3BhdGNoRXZlbnQ/YS5kaXNwYXRjaEV2ZW50KF8pOmEuZmlyZUV2ZW50KCJvbiIuY29uY2F0KGYpLF8pfX1dKSxsfSgpO2NvbnN0IGZzPU5HZTtmdW5jdGlvbiBKUyhsKXtyZXR1cm4oSlM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGN9KShsKX1mdW5jdGlvbiBGMGUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBIMGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFy''@;'; put 'put ''IGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCRHZShmLmtleSksZil9fWZ1bmN0aW9uICRHZShsKXt2YXIgYz1mdW5jdGlvbiBLR2UobCxjKXtp''@;'; put 'put ''Zigib2JqZWN0IiE9PUpTKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUpTKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Q''@;'; put 'put ''cmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1KUyhjKT9jOlN0cmluZyhjKX12YXIgblI9ImVkaXRvck1hbmFnZXIubmF2aWdhdGlvbiIsUVM9''@;'; put 'put ''ImVkaXRvck1hbmFnZXIuaGFuZGxpbmdFZGl0b3IiLE5ZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEsZil7dmFyIGQ9dGhpczsoZnVuY3Rpb24gV0dlKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0''@;'; put 'put ''aW9uIil9KSh0aGlzLGwpLHRoaXMuaW5zdGFuY2U9Yyx0aGlzLnRhYmxlTWV0YT1hLHRoaXMuc2VsZWN0aW9uPWYsdGhpcy5ldmVudE1hbmFnZXI9bmV3IGZzKGMpLHRoaXMuZGVzdHJveWVkPSExLHRoaXMubG9jaz0hMSx0aGlzLmFjdGl2ZUVkaXRvcj12b2lkIDAsdGhpcy5jZWxsUHJvcGVy''@;'; put 'put ''dGllcz12b2lkIDAsdGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5hZGRDb250ZXh0KCJlZGl0b3IiKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5pbnN0YW5jZS5hZGRIb29rKCJhZnRlckRvY3VtZW50S2V5RG93biIsZnVuY3Rpb24obSl7cmV0dXJuIGQub25BZnRl''@;'; put 'put ''ckRvY3VtZW50S2V5RG93bihtKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5pbnN0YW5jZS5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbihtKXshZC5kZXN0cm95ZWQmJmQuaW5zdGFuY2UuaXNMaXN0ZW5p''@;'; put 'put ''bmcoKSYmZC5vcGVuRWRpdG9yKCIiLG0pfSksdGhpcy5pbnN0YW5jZS52aWV3Ll93dC51cGRhdGUoIm9uQ2VsbERibENsaWNrIixmdW5jdGlvbihtLF8sTyl7cmV0dXJuIGQub25DZWxsRGJsQ2xpY2sobSxfLE8pfSl9cmV0dXJuIGZ1bmN0aW9uIEdHZShsLGMsYSl7YyYmSDBlKGwucHJvdG90''@;'; put 'put ''eXBlLGMpLGEmJkgwZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKSxk''@;'; put 'put ''PWYuZ2V0Q29udGV4dCgiZ3JpZCIpLGg9Zi5nZXRDb250ZXh0KCJlZGl0b3IiKSxtPXtncm91cDpRU307aC5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkVudGVyIl0sWyJFbnRlciIsIlNoaWZ0Il0sWyJFbnRlciIsIkNvbnRyb2wvTWV0YSJdLFsiRW50ZXIiLCJDb250cm9sL01ldGEiLCJTaGlm''@;'; put 'put ''dCJdXSxjYWxsYmFjazpmdW5jdGlvbihPLFgpe2EuY2xvc2VFZGl0b3JBbmRTYXZlQ2hhbmdlcyhmLmlzQ3RybFByZXNzZWQoKSksYS5tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcihYLmluY2x1ZGVzKCJzaGlmdCIpKX19LHtrZXlzOltbIkVzY2FwZSJdLFsiRXNjYXBlIiwiQ29udHJvbC9NZXRh''@;'; put 'put ''Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7YS5jbG9zZUVkaXRvckFuZFJlc3RvcmVPcmlnaW5hbFZhbHVlKGYuaXNDdHJsUHJlc3NlZCgpKSxhLmFjdGl2ZUVkaXRvci5mb2N1cygpfX1dLG0pLGQuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJGMiJdXSxjYWxsYmFjazpmdW5jdGlvbihPKXthLm9w''@;'; put 'put ''ZW5FZGl0b3IobnVsbCxPLCEwKX19LHtrZXlzOltbIkJhY2tzcGFjZSJdLFsiRGVsZXRlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7YS5pbnN0YW5jZS5lbXB0eVNlbGVjdGVkQ2VsbHMoKSxhLnByZXBhcmVFZGl0b3IoKX19LHtrZXlzOltbIkVudGVyIl0sWyJFbnRlciIsIlNoaWZ0Il1dLGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKE8sWCl7YS5pbnN0YW5jZS5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZz9hLmNlbGxQcm9wZXJ0aWVzLnJlYWRPbmx5P2EubW92ZVNlbGVjdGlvbkFmdGVyRW50ZXIoKTphLm9wZW5FZGl0b3IobnVsbCxPLCEwKTphLm1vdmVTZWxlY3Rpb25BZnRlckVu''@;'; put 'put ''dGVyKFguaW5jbHVkZXMoInNoaWZ0IikpLEhkKE8pfX1dLG0pfX0se2tleToibG9ja0VkaXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxvY2s9ITB9fSx7a2V5OiJ1bmxvY2tFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5sb2NrPSExfX0se2tleToiZGVzdHJveUVkaXRvciIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oYSl7dGhpcy5sb2NrfHx0aGlzLmNsb3NlRWRpdG9yKGEpfX0se2tleToiZ2V0QWN0aXZlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZUVkaXRvcn19LHtrZXk6InByZXBhcmVFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztp''@;'; put 'put ''ZighdGhpcy5sb2NrKXtpZih0aGlzLmFjdGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVFZGl0b3IuaXNXYWl0aW5nKCkpcmV0dXJuIHZvaWQgdGhpcy5jbG9zZUVkaXRvcighMSwhMSxmdW5jdGlvbihaZSl7WmUmJmEucHJlcGFyZUVkaXRvcigpfSk7dmFyIGY9dGhpcy5pbnN0YW5jZS5nZXRTZWxl''@;'; put 'put ''Y3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodCxkPWYucm93LGg9Zi5jb2wsbT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixkLGgpLF89ZCxPPWg7aWYoQXJyYXkuaXNBcnJheShtKSl7dmFyIFg9ZnVuY3Rpb24gakdlKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFlH''@;'; put 'put ''ZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gWkdlKGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAs''@;'; put 'put ''WD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9Zmlu''@;'; put 'put ''YWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBVR2UobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIEYwZShs''@;'; put 'put ''LGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50''@;'; put 'put ''cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gRjBlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiB6R2UoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGlu''@;'; put 'put ''c3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShtLDIpO189WFswXSxPPVhbMV19dGhpcy5jZWxsUHJvcGVydGllcz10aGlzLmluc3RhbmNlLmdldENlbGxNZXRhKF8s''@;'; put 'put ''Tyk7dmFyIGFlPXRoaXMuaW5zdGFuY2Uucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYoYWUmJlhJKGFlKSYmYWUuYmx1cigpLCF0aGlzLmlzQ2VsbEVkaXRhYmxlKCkpcmV0dXJuIHZvaWQgdGhpcy5jbGVhckFjdGl2ZUVkaXRvcigpO3ZhciBwZT10aGlzLmluc3RhbmNlLmdldENlbGwo''@;'; put 'put ''ZCxoLCEwKTtpZihwZSl7dmFyIGJlPXRoaXMuaW5zdGFuY2UuZ2V0Q2VsbEVkaXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKSx4ZT10aGlzLmluc3RhbmNlLmNvbFRvUHJvcChPKSxWZT10aGlzLmluc3RhbmNlLmdldFNvdXJjZURhdGFBdENlbGwodGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsUm93''@;'; put 'put ''KF8pLE8pO3RoaXMuYWN0aXZlRWRpdG9yPUwwZShiZSx0aGlzLmluc3RhbmNlKSx0aGlzLmFjdGl2ZUVkaXRvci5wcmVwYXJlKGQsaCx4ZSxwZSxWZSx0aGlzLmNlbGxQcm9wZXJ0aWVzKX19fX0se2tleToiaXNFZGl0b3JPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0''@;'; put 'put ''aXZlRWRpdG9yJiZ0aGlzLmFjdGl2ZUVkaXRvci5pc09wZW5lZCgpfX0se2tleToib3BlbkVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2lmKHRoaXMuaXNDZWxsRWRpdGFibGUo''@;'; put 'put ''KSl7aWYoIXRoaXMuYWN0aXZlRWRpdG9yKXt2YXIgaD10aGlzLmluc3RhbmNlLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LF89aC5jb2wsTz10aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaC5yb3cpLFg9dGhpcy5pbnN0''@;'; put 'put ''YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KF8pO3RoaXMuaW5zdGFuY2Uudmlldy5zY3JvbGxWaWV3cG9ydCh0aGlzLmluc3RhbmNlLl9jcmVhdGVDZWxsQ29vcmRzKE8sWCkpLHRoaXMuaW5zdGFuY2Uudmlldy5yZW5kZXIoKSx0aGlzLnByZXBh''@;'; put 'put ''cmVFZGl0b3IoKX10aGlzLmFjdGl2ZUVkaXRvciYmKGQmJnRoaXMuYWN0aXZlRWRpdG9yLmVuYWJsZUZ1bGxFZGl0TW9kZSgpLHRoaXMuYWN0aXZlRWRpdG9yLmJlZ2luRWRpdGluZyhhLGYpKX1lbHNlIHRoaXMuY2xlYXJBY3RpdmVFZGl0b3IoKX19LHtrZXk6ImNsb3NlRWRpdG9yIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihhLGYsZCl7dGhpcy5hY3RpdmVFZGl0b3I/dGhpcy5hY3RpdmVFZGl0b3IuZmluaXNoRWRpdGluZyhhLGYsZCk6ZCYmZCghMSl9fSx7a2V5OiJjbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2VzIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmNsb3NlRWRpdG9yKCExLGEpfX0se2tl''@;'; put 'put ''eToiY2xvc2VFZGl0b3JBbmRSZXN0b3JlT3JpZ2luYWxWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5jbG9zZUVkaXRvcighMCxhKX19LHtrZXk6ImNsZWFyQWN0aXZlRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYWN0aXZlRWRpdG9yPXZvaWQgMH19LHtrZXk6ImlzQ2VsbEVk''@;'; put 'put ''aXRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5zdGFuY2UuZ2V0Q2VsbEVkaXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKSxmPXRoaXMuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQsaD1mLmNvbCxtPXRoaXMuaW5zdGFuY2UsTz1tLmNvbHVtbklu''@;'; put 'put ''ZGV4TWFwcGVyLFg9bS5yb3dJbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3coZi5yb3cpKXx8Ty5pc0hpZGRlbih0aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxDb2x1bW4oaCkpO3JldHVybiEodGhpcy5jZWxsUHJvcGVydGllcy5yZWFkT25seXx8IWF8fFgp''@;'; put 'put ''fX0se2tleToibW92ZVNlbGVjdGlvbkFmdGVyRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnRhYmxlTWV0YS5lbnRlck1vdmVzP3RoaXMudGFibGVNZXRhLmVudGVyTW92ZXMoZXZlbnQpOnRoaXMudGFibGVNZXRhLmVudGVyTW92ZXM7YT90''@;'; put 'put ''aGlzLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtZi5yb3csLWYuY29sKTp0aGlzLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydChmLnJvdyxmLmNvbCwhMCl9fSx7a2V5OiJvbkFmdGVyRG9jdW1lbnRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzO2lmKHRoaXMuaW5zdGFu''@;'; put 'put ''Y2UuaXNMaXN0ZW5pbmcoKSl7dmFyIGQ9YS5rZXlDb2RlO2lmKHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKSl7dmFyIGg9KGEuY3RybEtleXx8YS5tZXRhS2V5KSYmIWEuYWx0S2V5O3RoaXMuYWN0aXZlRWRpdG9yJiYoIXRoaXMuYWN0aXZlRWRpdG9yfHx0aGlzLmFjdGl2ZUVkaXRvci5p''@;'; put 'put ''c1dhaXRpbmcoKSl8fERZKGQpfHx4MGUoZCl8fGh8fHRoaXMuaXNFZGl0b3JPcGVuZWQoKXx8KHRoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIikuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7''@;'; put 'put ''Zi5pbnN0YW5jZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLTEsMCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtmLmluc3RhbmNlLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0''@;'; put 'put ''aW9uKCl7Zi5pbnN0YW5jZS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMCwtMSpmLmluc3RhbmNlLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93UmlnaHQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtmLmluc3RhbmNlLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLGYu''@;'; put 'put ''aW5zdGFuY2UuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX1dLHtydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gaW8oZi5pbnN0YW5jZS5nZXRTZWxlY3RlZCgpKX0sZ3JvdXA6blJ9KSx0aGlzLm9wZW5FZGl0b3IoIiIsYSkpfX19fSx7a2V5OiJvbkNlbGxEYmxDbGljayIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oYSxmLGQpeyJURCI9PT1kLm5vZGVOYW1lJiZ0aGlzLm9wZW5FZGl0b3IobnVsbCxhLCEwKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1dKSxsfSgpLE4wZT1uZXcgV2Vha01hcDtOWS5n''@;'; put 'put ''ZXRJbnN0YW5jZT1mdW5jdGlvbihsLGMsYSl7dmFyIGY9TjBlLmdldChsKTtyZXR1cm4gZnx8KGY9bmV3IE5ZKGwsYyxhKSxOMGUuc2V0KGwsZikpLGZ9O2NvbnN0IHFHZT1OWTtmdW5jdGlvbiBWWShsKXtyZXR1cm4gZnVuY3Rpb24gZSRlKGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJu''@;'; put 'put ''IEJZKGwpfShsKXx8ZnVuY3Rpb24gUUdlKGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIEpHZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgbClyZXR1cm4gQlkobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9t''@;'; put 'put ''KGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEJZKGwsYyl9fShsKXx8ZnVuY3Rpb24gWEdlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gQlkobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFy''@;'; put 'put ''IGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1UKDkwMjAyKSxUKDI3NjIpLFQoNTgwKSxUKDcxNzcyKSxUKDM1ODEwKTt2YXIgVjBlPXsiJm5ic3A7IjoiICIsIiZhbXA7IjoiJiIsIiZsdDsiOiI8IiwiJmd0OyI6Ij4ifSx0JGU9bmV3IFJlZ0V4cChPYmpl''@;'; put 'put ''Y3Qua2V5cyhWMGUpLm1hcChmdW5jdGlvbihsKXtyZXR1cm4iKCIuY29uY2F0KGwsIikiKX0pLmpvaW4oInwiKSwiZ2kiKTtmdW5jdGlvbiBqWShsKXtmb3IodmFyIGM9bC5oYXNDb2xIZWFkZXJzKCksYT1sLmhhc1Jvd0hlYWRlcnMoKSxmPVtjPy0xOjAsYT8tMTowLGwuY291bnRSb3dzKCkt''@;'; put 'put ''MSxsLmNvdW50Q29scygpLTFdLGQ9bC5nZXREYXRhLmFwcGx5KGwsZiksaD1kLmxlbmd0aCxtPWg+MD9kWzBdLmxlbmd0aDowLF89WyI8dGFibGU+IiwiPC90YWJsZT4iXSxPPWM/WyI8dGhlYWQ+IiwiPC90aGVhZD4iXTpbXSxYPVsiPHRib2R5PiIsIjwvdGJvZHk+Il0sYWU9YT8xOjAscGU9''@;'; put 'put ''Yz8xOjAsYmU9MDtiZTxoO2JlKz0xKXtmb3IodmFyIHhlPWMmJjA9PT1iZSxWZT1bXSxaZT0wO1plPG07WmUrPTEpe3ZhciBsdD0heGUmJmEmJjA9PT1aZSxkdD0iIjtpZih4ZSlkdD0iPHRoPiIuY29uY2F0KGwuZ2V0Q29sSGVhZGVyKFplLWFlKSwiPC90aD4iKTtlbHNlIGlmKGx0KWR0PSI8''@;'; put 'put ''dGg+Ii5jb25jYXQobC5nZXRSb3dIZWFkZXIoYmUtcGUpLCI8L3RoPiIpO2Vsc2V7dmFyIGd0PWRbYmVdW1plXSxqdD1sLmdldENlbGxNZXRhKGJlLXBlLFplLWFlKSxYdD1qdC5yb3dzcGFuLHluPWp0LmNvbHNwYW47aWYoIWp0LmhpZGRlbil7dmFyIFFuPVtdO2lmKFh0JiZRbi5wdXNoKCdy''@;'; put 'put ''b3dzcGFuPSInLmNvbmNhdChYdCwnIicpKSx5biYmUW4ucHVzaCgnY29sc3Bhbj0iJy5jb25jYXQoeW4sJyInKSksd3UoZ3QpKWR0PSI8dGQgIi5jb25jYXQoUW4uam9pbigiICIpLCI+PC90ZD4iKTtlbHNle3ZhciBPcj1ndC50b1N0cmluZygpLnJlcGxhY2UoIjwiLCImbHQ7IikucmVwbGFj''@;'; put 'put ''ZSgiPiIsIiZndDsiKS5yZXBsYWNlKC8oPGJyKFxzKnxcLyk+KFxyXG58XG4pP3xcclxufFxuKS9nLCI8YnI+XHJcbiIpLnJlcGxhY2UoL1x4MjAvZ2ksIiZuYnNwOyIpLnJlcGxhY2UoL1x0L2dpLCImIzk7Iik7ZHQ9Ijx0ZCAiLmNvbmNhdChRbi5qb2luKCIgIiksIj4iKS5jb25jYXQoT3Is''@;'; put 'put ''IjwvdGQ+Iil9fX1WZS5wdXNoKGR0KX12YXIgVnI9WyI8dHI+Il0uY29uY2F0KFZlLFsiPC90cj4iXSkuam9pbigiIik7eGU/Ty5zcGxpY2UoMSwwLFZyKTpYLnNwbGljZSgtMSwwLFZyKX1yZXR1cm4gXy5zcGxpY2UoMSwwLE8uam9pbigiIiksWC5qb2luKCIiKSksXy5qb2luKCIiKX1mdW5j''@;'; put 'put ''dGlvbiB6WShsKXtmb3IodmFyIGM9bC5sZW5ndGgsYT1bIjx0YWJsZT4iXSxmPTA7ZjxjO2YrPTEpe3ZhciBkPWxbZl0saD1kLmxlbmd0aCxtPVtdOzA9PT1mJiZhLnB1c2goIjx0Ym9keT4iKTtmb3IodmFyIF89MDtfPGg7Xys9MSl7dmFyIE89ZFtfXSxYPXd1KE8pPyIiOk8udG9TdHJpbmco''@;'; put 'put ''KS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8oPGJyKFxzKnxcLyk+KFxyXG58XG4pP3xcclxufFxuKS9nLCI8YnI+XHJcbiIpLnJlcGxhY2UoL1x4MjB7Mix9L2dpLGZ1bmN0aW9uKGFlKXtyZXR1cm4nPHNwYW4gc3R5bGU9Im1zby1zcGFjZXJ1''@;'; put 'put ''bjogeWVzIj4nLmNvbmNhdCgiJm5ic3A7Ii5yZXBlYXQoYWUubGVuZ3RoLTEpLCIgPC9zcGFuPiIpfSkucmVwbGFjZSgvXHQvZ2ksIiYjOTsiKTttLnB1c2goIjx0ZD4iLmNvbmNhdChYLCI8L3RkPiIpKX1hLnB1c2guYXBwbHkoYSxbIjx0cj4iXS5jb25jYXQobSxbIjwvdHI+Il0pKSxmKzE9''@;'; put 'put ''PT1jJiZhLnB1c2goIjwvdGJvZHk+Iil9cmV0dXJuIGEucHVzaCgiPC90YWJsZT4iKSxhLmpvaW4oIiIpfWZ1bmN0aW9uIEIwZShsKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZG9jdW1lbnQsYT17fSxmPWMuY3JlYXRlRG9j''@;'; put 'put ''dW1lbnRGcmFnbWVudCgpLGQ9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTtmLmFwcGVuZENoaWxkKGQpO3ZhciBoPWw7aWYoInN0cmluZyI9PXR5cGVvZiBoKXt2YXIgbT1oLnJlcGxhY2UoLzx0ZFxiW14+XSo/PihbXHNcU10qPyk8XC9ccyp0ZD4vZyxmdW5jdGlvbihXdCl7dmFyIHduPVd0Lm1h''@;'; put 'put ''dGNoKC88dGRcYltePl0qPz4vZylbMF0sU249V3Quc3Vic3RyaW5nKHduLmxlbmd0aCxXdC5sYXN0SW5kZXhPZigiPCIpKS5yZXBsYWNlKC8oPCg/IWJyKShbXj5dKyk+KS9naSwiIik7cmV0dXJuIiIuY29uY2F0KHduKS5jb25jYXQoU24pLmNvbmNhdCgiPC90ZD4iKX0pO2QuaW5zZXJ0QWRq''@;'; put 'put ''YWNlbnRIVE1MKCJhZnRlcmJlZ2luIiwiIi5jb25jYXQobSkpLGg9ZC5xdWVyeVNlbGVjdG9yKCJ0YWJsZSIpfWlmKGgmJmZ1bmN0aW9uIG4kZShsKXtyZXR1cm4iVEFCTEUiPT09KGwmJmwubm9kZU5hbWV8fCIiKX0oaCkpe3ZhciBaZSxfPWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lJD0i''@;'; put 'put ''ZW5lcmF0b3IiXScpLE89bnVsbCE9PWgucXVlcnlTZWxlY3RvcigidGJvZHkgdGgiKSxYPWgucXVlcnlTZWxlY3RvcigidHIiKSxhZT1YP0FycmF5LmZyb20oWC5jZWxscykucmVkdWNlKGZ1bmN0aW9uKFd0LHduKXtyZXR1cm4gV3Qrd24uY29sU3Bhbn0sMCktKE8/MTowKTowLHBlPWgudEZv''@;'; put 'put ''b3QmJkFycmF5LmZyb20oaC50Rm9vdC5yb3dzKXx8W10sYmU9W10seGU9ITEsVmU9MDtpZihoLnRIZWFkKXt2YXIgbHQ9QXJyYXkuZnJvbShoLnRIZWFkLnJvd3MpLmZpbHRlcihmdW5jdGlvbihXdCl7dmFyIHduPW51bGwhPT1XdC5xdWVyeVNlbGVjdG9yKCJ0ZCIpO3JldHVybiB3biYmYmUu''@;'; put 'put ''cHVzaChXdCksIXdufSk7eGU9KFZlPWx0Lmxlbmd0aCk+MCxWZT4xP2EubmVzdGVkSGVhZGVycz1BcnJheS5mcm9tKGx0KS5yZWR1Y2UoZnVuY3Rpb24oV3Qsd24pe3ZhciBTbj1BcnJheS5mcm9tKHduLmNlbGxzKS5yZWR1Y2UoZnVuY3Rpb24oYnIsZHIsTHIpe2lmKE8mJjA9PT1McilyZXR1''@;'; put 'put ''cm4gYnI7dmFyIE5yPWRyLmNvbFNwYW4sZGk9ZHIuaW5uZXJIVE1MO3JldHVybiBici5wdXNoKE5yPjE/e2xhYmVsOmRpLGNvbHNwYW46TnJ9OmRpKSxicn0sW10pO3JldHVybiBXdC5wdXNoKFNuKSxXdH0sW10pOnhlJiYoYS5jb2xIZWFkZXJzPUFycmF5LmZyb20obHRbMF0uY2hpbGRyZW4p''@;'; put 'put ''LnJlZHVjZShmdW5jdGlvbihXdCx3bixTbil7cmV0dXJuIE8mJjA9PT1Tbnx8V3QucHVzaCh3bi5pbm5lckhUTUwpLFd0fSxbXSkpfWJlLmxlbmd0aCYmKGEuZml4ZWRSb3dzVG9wPWJlLmxlbmd0aCkscGUubGVuZ3RoJiYoYS5maXhlZFJvd3NCb3R0b209cGUubGVuZ3RoKTt2YXIgZHQ9W10u''@;'; put 'put ''Y29uY2F0KGJlLFZZKEFycmF5LmZyb20oaC50Qm9kaWVzKS5yZWR1Y2UoZnVuY3Rpb24oV3Qsd24pe3JldHVybiBXdC5wdXNoLmFwcGx5KFd0LFZZKEFycmF5LmZyb20od24ucm93cykpKSxXdH0sW10pKSxWWShwZSkpO1plPWR0Lmxlbmd0aDtmb3IodmFyIGd0PW5ldyBBcnJheShaZSksanQ9''@;'; put 'put ''MDtqdDxaZTtqdCsrKWd0W2p0XT1uZXcgQXJyYXkoYWUpO2Zvcih2YXIgcm49W10sWHQ9W10seW49MDt5bjxaZTt5bisrKWZvcih2YXIgT3I9QXJyYXkuZnJvbShkdFt5bl0uY2VsbHMpLFZyPU9yLmxlbmd0aCxacj0wO1pyPFZyO1pyKyspe3ZhciBpcj1Pcltacl0sc2k9aXIubm9kZU5hbWUs''@;'; put 'put ''QXI9aXIuaW5uZXJIVE1MLEVuPWlyLnJvd1NwYW4sVHI9aXIuY29sU3BhbixWbj1ndFt5bl0uZmluZEluZGV4KGZ1bmN0aW9uKFd0KXtyZXR1cm4gdm9pZCAwPT09V3R9KTtpZigiVEQiPT09c2kpe2lmKEVuPjF8fFRyPjEpe2Zvcih2YXIgY3I9eW47Y3I8eW4rRW47Y3IrKylpZihjcjxaZSlm''@;'; put 'put ''b3IodmFyIENyPVZuO0NyPFZuK1RyO0NyKyspZ3RbY3JdW0NyXT1udWxsO3ZhciBZcj1pci5nZXRBdHRyaWJ1dGUoInN0eWxlIik7WXImJllyLmluY2x1ZGVzKCJtc28taWdub3JlOmNvbHNwYW4iKXx8cm4ucHVzaCh7Y29sOlZuLHJvdzp5bixyb3dzcGFuOkVuLGNvbHNwYW46VHJ9KX12YXIg''@;'; put 'put ''RnQ9IiI7RnQ9XyYmL2V4Y2VsL2dpLnRlc3QoXy5jb250ZW50KT9Bci5yZXBsYWNlKC9bXHJcbl1bXHgyMF17MCwyfS9nLCIgIikucmVwbGFjZSgvPGJyKFxzKnxcLyk+W1xyXG5dP1tceDIwXXswLDN9L2dpbSwiXHJcbiIpOkFyLnJlcGxhY2UoLzxicihccyp8XC8pPltcclxuXT8vZ2ltLCJc''@;'; put 'put ''clxuIiksZ3RbeW5dW1ZuXT1GdC5yZXBsYWNlKHQkZSxmdW5jdGlvbihXdCl7cmV0dXJuIFYwZVtXdF19KX1lbHNlIFh0LnB1c2goQXIpfXJldHVybiBybi5sZW5ndGgmJihhLm1lcmdlQ2VsbHM9cm4pLFh0Lmxlbmd0aCYmKGEucm93SGVhZGVycz1YdCksZ3QubGVuZ3RoJiYoYS5kYXRhPWd0''@;'; put 'put ''KSxhfX1mdW5jdGlvbiBVWShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIFpZKGwpe3JldHVybihaWT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi''@;'; put 'put ''c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0''@;'; put 'put ''eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHQwKGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxhPVpZKGwpO2lmKCJudW1iZXIiPT09YSlyZXR1cm4haXNOYU4obCkmJmlzRmluaXRlKGwpO2lmKCJzdHJpbmciPT09YSl7aWYo''@;'; put 'put ''MD09PWwubGVuZ3RoKXJldHVybiExO2lmKDE9PT1sLmxlbmd0aClyZXR1cm4vXGQvLnRlc3QobCk7dmFyIGY9QXJyYXkuZnJvbShuZXcgU2V0KFsiLiJdLmNvbmNhdChmdW5jdGlvbiByJGUobCl7cmV0dXJuIGZ1bmN0aW9uIGwkZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBVWShs''@;'; put 'put ''KX0obCl8fGZ1bmN0aW9uIGEkZShsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBvJGUobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwp''@;'; put 'put ''cmV0dXJuIFVZKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtp''@;'; put 'put ''ZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBVWShsLGMpfX0obCl8fGZ1bmN0aW9uIGkkZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxl''@;'; put 'put ''IGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShjKSkpKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIlxcIi5jb25jYXQoZCl9KS5qb2luKCJ8Iik7cmV0dXJuIG5l''@;'; put 'put ''dyBSZWdFeHAoIl5bKy1dP1xccyooKCgiLmNvbmNhdChmLCIpP1xcZCsoKCIpLmNvbmNhdChmLCIpXFxkKyk/KGVbKy1dP1xcZCspPyl8KDB4W2EtZlxcZF0rKSkkIiksImkiKS50ZXN0KGwudHJpbSgpKX1yZXR1cm4ib2JqZWN0Ij09PWEmJiEoIWx8fCJudW1iZXIiIT10eXBlb2YgbC52YWx1''@;'; put 'put ''ZU9mKCl8fGwgaW5zdGFuY2VvZiBEYXRlKX1mdW5jdGlvbiBqMGUobCl7cmV0dXJuIHQwKGwsWyIsIl0pfWZ1bmN0aW9uIF9vKGwsYyxhKXt2YXIgZj0tMTtmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGM/KGE9YyxjPWwpOmY9bC0xOysrZjw9YyYmITEhPT1hKGYpOyk7fWZ1bmN0aW9uIHJSKGws''@;'; put 'put ''YyxhKXt2YXIgZj1sKzE7Zm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBjJiYoYT1jLGM9MCk7LS1mPj1jJiYhMSE9PWEoZik7KTt9ZnVuY3Rpb24gWVkobCxjKXtyZXR1cm4gYz1wYXJzZUludChjLnRvU3RyaW5nKCkucmVwbGFjZSgiJSIsIiIpLDEwKSxjPWlzTmFOKGMpPzA6YyxwYXJzZUludChs''@;'; put 'put ''KmMvMTAwLDEwKX1mdW5jdGlvbiB6MGUobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIFdZKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25z''@;'; put 'put ''dHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBXWShsLGMpfX1mdW5jdGlvbiBXWShsLGMpeyhudWxs''@;'; put 'put ''PT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfXZhciBVMGU9bmV3IE1hcChbWyJhc2MiLFstMSwxXV0sWyJkZXNjIixbMSwtMV1dXSksdiRlPWZ1bmN0aW9uKGMpe3JldHVybiJUaGUgcHJp''@;'; put 'put ''b3JpdHkgJyIuY29uY2F0KGMsIicgaXMgYWxyZWFkeSBkZWNsYXJlZCBpbiBhIG1hcC4iKX0seSRlPWZ1bmN0aW9uKGMpe3JldHVybiJUaGUgcHJpb3JpdHkgJyIuY29uY2F0KGMsIicgaXMgbm90IGEgbnVtYmVyLiIpfTtmdW5jdGlvbiBaMGUobCxjKXtyZXR1cm4gZnVuY3Rpb24gRSRlKGwp''@;'; put 'put ''e2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBrJGUobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSEx''@;'; put 'put ''O3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5''@;'; put 'put ''e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fFkwZShsLGMpfHxmdW5jdGlvbiBNJGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQg''@;'; put 'put ''dG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFkwZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgbClyZXR1cm4gJFkobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5m''@;'; put 'put ''cm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuICRZKGwsYyl9fWZ1bmN0aW9uICRZKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcg''@;'; put 'put ''QXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9VCg1NDY3OSk7dmFyIHgkZT1mdW5jdGlvbihjKXtyZXR1cm4iVGhlIGlkICciLmNvbmNhdChjLCInIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuIil9O2Z1bmN0aW9uIGlSKCl7dmFyIGM9KGFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSkuZXJyb3JJZEV4aXN0cyxhPW5ldyBNYXA7ZnVuY3Rpb24gTygpe3JldHVybiBmdW5jdGlvbiBfJGUobCl7cmV0dXJuIGZ1bmN0aW9uIFMkZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiAkWShsKX0obCl8fGZ1''@;'; put 'put ''bmN0aW9uIEMkZShsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxZMGUobCl8fGZ1bmN0aW9uIHckZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0''@;'; put 'put ''ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShhKX1mdW5jdGlvbiBYKGFlKXtyZXR1cm4gYS5oYXMoYWUpfXJl''@;'; put 'put ''dHVybiBjPVBsKGMpP2M6eCRlLHthZGRJdGVtOmZ1bmN0aW9uIGYoYWUscGUpe2lmKFgoYWUpKXRocm93IG5ldyBFcnJvcihjKGFlKSk7YS5zZXQoYWUscGUpfSxjbGVhcjpmdW5jdGlvbiBoKCl7YS5jbGVhcigpfSxnZXRJZDpmdW5jdGlvbiBtKGFlKXt2YXIgcGU9TygpLmZpbmQoZnVuY3Rp''@;'; put 'put ''b24oVmUpe3ZhciBaZT1aMGUoVmUsMik7cmV0dXJuIGFlPT09WmVbMV0mJlplWzBdfSl8fFtudWxsXTtyZXR1cm4gWjBlKHBlLDEpWzBdfSxnZXRJdGVtOmZ1bmN0aW9uIF8oYWUpe3JldHVybiBhLmdldChhZSl9LGdldEl0ZW1zOk8saGFzSXRlbTpYLHJlbW92ZUl0ZW06ZnVuY3Rpb24gZChh''@;'; put 'put ''ZSl7cmV0dXJuIGEuZGVsZXRlKGFlKX19fWZ1bmN0aW9uIEtZKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9dmFyIFIkZT1mdW5jdGlvbihjKXtyZXR1cm4iJyIuY29u''@;'; put 'put ''Y2F0KGMsIicgdmFsdWUgaXMgYWxyZWFkeSBkZWNsYXJlZCBpbiBhIHVuaXF1ZSBzZXQuIil9O2Z1bmN0aW9uIFcwZShsKXtyZXR1cm4gZnVuY3Rpb24gaiRlKGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIHFZKGwpfShsKXx8ZnVuY3Rpb24gQiRlKGwpe2lmKHR5cGVvZiBTeW1ib2w8''@;'; put 'put ''InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fEcwZShsKXx8ZnVuY3Rpb24gViRlKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5z''@;'; put 'put ''dGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRzBlKGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBxWShsLGMpO3ZhciBhPU9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/''@;'; put 'put ''OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gcVkobCxjKX19ZnVuY3Rpb24gcVkobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1''@;'; put 'put ''cm4gZn12YXIgWFk9ZnVuY3Rpb24oYyl7cmV0dXJuJ1RoZXJlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCAiJy5jb25jYXQoYywnIiBwbHVnaW4uJyl9LCQwZT1mdW5jdGlvbiBiJGUoKXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06''@;'; put 'put ''e30sYz1sLmVycm9yUHJpb3JpdHlFeGlzdHMsYT1sLmVycm9yUHJpb3JpdHlOYU4sZj1uZXcgTWFwO3JldHVybiBjPVBsKGMpP2M6diRlLGE9UGwoYSk/YTp5JGUse2FkZEl0ZW06ZnVuY3Rpb24gZChtLF8pe2lmKCF0MChtKSl0aHJvdyBuZXcgRXJyb3IoYShtKSk7aWYoZi5oYXMobSkpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKGMobSkpO2Yuc2V0KG0sXyl9LGdldEl0ZW1zOmZ1bmN0aW9uIGgoKXt2YXIgTz1mdW5jdGlvbiBkJGUobCxjKXtyZXR1cm4gZnVuY3Rpb24gbSRlKGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBwJGUobCxjKXt2YXIgYT1udWxsPT1s''@;'; put 'put ''P251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1l''@;'; put 'put ''bHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZp''@;'; put 'put ''bmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fHowZShsLGMpfHxmdW5jdGlvbiBoJGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5v''@;'; put 'put ''bi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShVMGUuZ2V0KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiYXNjIil8fFUwZS5nZXQoImFzYyIpLDIpLFg9T1swXSxhZT1PWzFd''@;'; put 'put ''O3JldHVybiBmdW5jdGlvbiBzJGUobCl7cmV0dXJuIGZ1bmN0aW9uIGYkZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBXWShsKX0obCl8fGZ1bmN0aW9uIGMkZShsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJh''@;'; put 'put ''dG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHx6MGUobCl8fGZ1bmN0aW9uIHUkZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmpl''@;'; put 'put ''Y3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShmKS5zb3J0KGZ1bmN0aW9uKHBlLGJlKXtyZXR1cm4gcGVbMF08YmVbMF0/WDphZX0pLm1hcChmdW5jdGlvbihwZSl7cmV0dXJuIHBlWzFdfSl9fX0oe2Vycm9yUHJpb3JpdHlFeGlzdHM6ZnVuY3Rpb24o''@;'; put 'put ''Yyl7cmV0dXJuJ1RoZXJlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBwbHVnaW4gb24gcHJpb3JpdHkgIicuY29uY2F0KGMsJyIuJyl9LGVycm9yUHJpb3JpdHlOYU46ZnVuY3Rpb24oYyl7cmV0dXJuJ1RoZSBwcmlvcml0eSAiJy5jb25jYXQoYywnIiBpcyBub3QgYSBudW1iZXIuJyl9fSksSzBl''@;'; put 'put ''PWZ1bmN0aW9uIEwkZSgpe3ZhciBjPShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30pLmVycm9ySXRlbUV4aXN0cyxhPW5ldyBTZXQ7cmV0dXJuIGM9UGwoYyk/YzpSJGUse2FkZEl0ZW06ZnVuY3Rpb24gZihtKXtpZihhLmhhcyhtKSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoYyhtKSk7YS5hZGQobSl9LGNsZWFyOmZ1bmN0aW9uIGgoKXthLmNsZWFyKCl9LGdldEl0ZW1zOmZ1bmN0aW9uIGQoKXtyZXR1cm4gZnVuY3Rpb24gQSRlKGwpe3JldHVybiBmdW5jdGlvbiBJJGUobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gS1kobCl9KGwp''@;'; put 'put ''fHxmdW5jdGlvbiBEJGUobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gTyRlKGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVy''@;'; put 'put ''biBLWShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFy''@;'; put 'put ''Z3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gS1kobCxjKX19KGwpfHxmdW5jdGlvbiBUJGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0''@;'; put 'put ''YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYSl9fX0oe2Vycm9ySXRlbUV4aXN0czpYWX0pLEpZPWlSKHtlcnJvcklkRXhpc3RzOlhZfSk7ZnVuY3Rpb24gUVkoKXty''@;'; put 'put ''ZXR1cm5bXS5jb25jYXQoVzBlKCQwZS5nZXRJdGVtcygpKSxXMGUoSzBlLmdldEl0ZW1zKCkpKX1mdW5jdGlvbiBlTShsKXt2YXIgYz1BYyhsKTtyZXR1cm4gSlkuZ2V0SXRlbShjKX1mdW5jdGlvbiBVYShsLGMsYSl7dmFyIGY9ZnVuY3Rpb24gVyRlKGwsYyxhKXtyZXR1cm4iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgbCYmKGw9KGM9bCkuUExVR0lOX0tFWSxhPWMuUExVR0lOX1BSSU9SSVRZKSxbbCxjLGFdfShsLGMsYSksZD1mdW5jdGlvbiBQJGUobCxjKXtyZXR1cm4gZnVuY3Rpb24gTiRlKGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBIJGUobCxjKXt2''@;'; put 'put ''YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSly''@;'; put 'put ''ZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09''@;'; put 'put ''bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fEcwZShsLGMpfHxmdW5jdGlvbiBGJGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUg''@;'; put 'put ''aXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShmLDMpO2M9ZFsxXSxhPWRbMl0sdm9pZCAwPT09ZU0obD1kWzBdKSYmZnVuY3Rpb24gWSRlKGwsYyxhKXt2YXIgZj1BYyhsKTtpZihKWS5oYXNJdGVtKGYpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcihYWShmKSk7dm9pZCAwPT09YT9LMGUuYWRkSXRlbShmKTokMGUuYWRkSXRlbShhLGYpLEpZLmFkZEl0ZW0oZixjKX0obCxjLGEpfXZhciB0TT1GZigicmVuZGVyZXJzIiksRyRlPXRNLnJlZ2lzdGVyLCQkZT10TS5nZXRJdGVtLHEwZT10TS5oYXNJdGVtLEskZT10TS5n''@;'; put 'put ''ZXROYW1lcztmdW5jdGlvbiBvUihsKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbClyZXR1cm4gbDtpZighcTBlKGwpKXRocm93IEVycm9yKCdObyByZWdpc3RlcmVkIHJlbmRlcmVyIGZvdW5kIHVuZGVyICInLmNvbmNhdChsLCciIG5hbWUnKSk7cmV0dXJuICQkZShsKX1mdW5jdGlvbiBOaChs''@;'; put 'put ''LGMpeyJzdHJpbmciIT10eXBlb2YgbCYmKGw9KGM9bCkuUkVOREVSRVJfVFlQRSksRyRlKGwsYyl9dmFyIG5NPUZmKCJ2YWxpZGF0b3JzIikscSRlPW5NLnJlZ2lzdGVyLFgkZT1uTS5nZXRJdGVtLFgwZT1uTS5oYXNJdGVtLEokZT1uTS5nZXROYW1lcztmdW5jdGlvbiBlVyhsKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgbClyZXR1cm4gbDtpZighWDBlKGwpKXRocm93IEVycm9yKCdObyByZWdpc3RlcmVkIHZhbGlkYXRvciBmb3VuZCB1bmRlciAiJy5jb25jYXQobCwnIiBuYW1lJykpO3JldHVybiBYJGUobCl9ZnVuY3Rpb24gVTcobCxjKXsic3RyaW5nIiE9dHlwZW9mIGwmJihsPShj''@;'; put 'put ''PWwpLlZBTElEQVRPUl9UWVBFKSxxJGUobCxjKX1mdW5jdGlvbiByTShsKXtyZXR1cm4ock09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYm''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBKMGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9''@;'; put 'put ''Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHRLZShmLmtleSksZil9fWZ1bmN0aW9uIHRLZShsKXt2YXIgYz1mdW5jdGlvbiBuS2UobCxjKXtpZigib2JqZWN0IiE9PXJNKGwpfHxu''@;'; put 'put ''dWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXJNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4g''@;'; put 'put ''YSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1yTShjKT9jOlN0cmluZyhjKX1UKDE2MTYxKSxUKDkxNjgzKTt2YXIgWjc9bmV3IFdlYWtNYXAscktlPWZ1bmN0aW9uKCl7ZnVuY3Rp''@;'; put 'put ''b24gbChjLGEsZixkLGgsbSl7dmFyIF89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGw7KGZ1bmN0aW9uIFEkZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg''@;'; put 'put ''YXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLnd0U2V0dGluZ3M9Zix0aGlzLmRvbUJpbmRpbmdzPWEsdGhpcy53dFRhYmxlPWgsdGhpcy5zZWxlY3Rpb25zPW0sdGhpcy5wYXJlbnQ9Xyx0aGlzLmV2ZW50TWFuYWdlcj1kLHRoaXMuZmFjYWRlR2V0dGVyPWMsWjcuc2V0KHRoaXMse3Nl''@;'; put 'put ''bGVjdGVkQ2VsbEJlZm9yZVRvdWNoRW5kOnZvaWQgMCxkYmxDbGlja1RpbWVvdXQ6W251bGwsbnVsbF0sZGJsQ2xpY2tPcmlnaW46W251bGwsbnVsbF19KSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCl9cmV0dXJuIGZ1bmN0aW9uIGVLZShsLGMsYSl7YyYmSjBlKGwucHJvdG90eXBlLGMpLGEmJkow''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLmhvbGRl''@;'; put 'put ''ciwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKGgpe3JldHVybiBhLm9uQ29udGV4dE1lbnUoaCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMud3RUYWJsZS5UQUJMRSwibW91c2VvdmVyIixmdW5jdGlvbihoKXtyZXR1cm4gYS5vbk1vdXNlT3ZlcihoKX0pLHRoaXMu''@;'; put 'put ''ZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLlRBQkxFLCJtb3VzZW91dCIsZnVuY3Rpb24oaCl7cmV0dXJuIGEub25Nb3VzZU91dChoKX0pO3ZhciBmPWZ1bmN0aW9uKCl7YS5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLnd0VGFibGUuaG9sZGVyLCJ0''@;'; put 'put ''b3VjaHN0YXJ0IixmdW5jdGlvbihtKXtyZXR1cm4gYS5vblRvdWNoU3RhcnQobSl9KSxhLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEud3RUYWJsZS5ob2xkZXIsInRvdWNoZW5kIixmdW5jdGlvbihtKXtyZXR1cm4gYS5vblRvdWNoRW5kKG0pfSksYS5tb21lbnR1bVNjcm9sbGlu''@;'; put 'put ''Z3x8KGEubW9tZW50dW1TY3JvbGxpbmc9e30pLGEuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYS53dFRhYmxlLmhvbGRlciwic2Nyb2xsIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLm1vbWVudHVtU2Nyb2xsaW5nLl90aW1lb3V0KSxhLm1vbWVudHVtU2Nyb2xsaW5nLm9uZ29p''@;'; put 'put ''bmd8fGEud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkJlZm9yZVRvdWNoU2Nyb2xsIiksYS5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSEwLGEubW9tZW50dW1TY3JvbGxpbmcuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2EudG91Y2hBcHBsaWVkfHwoYS5tb21lbnR1bVNjcm9s''@;'; put 'put ''bGluZy5vbmdvaW5nPSExLGEud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkFmdGVyTW9tZW50dW1TY3JvbGwiKSl9LDIwMCl9KX07UGQoKT9mKCk6KG5ZKCkmJmYoKSxhLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEud3RUYWJsZS5ob2xkZXIsIm1vdXNldXAiLGZ1bmN0aW9uKG0p''@;'; put 'put ''e3JldHVybiBhLm9uTW91c2VVcChtKX0pLGEuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYS53dFRhYmxlLmhvbGRlciwibW91c2Vkb3duIixmdW5jdGlvbihtKXtyZXR1cm4gYS5vbk1vdXNlRG93bihtKX0pKX19LHtrZXk6InNlbGVjdGVkQ2VsbFdhc1RvdWNoZWQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGEpe3ZhciBmPVo3LmdldCh0aGlzKSxoPXRoaXMucGFyZW50Q2VsbChhKS5jb29yZHM7aWYoZi5zZWxlY3RlZENlbGxCZWZvcmVUb3VjaEVuZCYmaCl7dmFyIG09W2gucm93LGYuc2VsZWN0ZWRDZWxsQmVmb3JlVG91Y2hFbmQuZnJvbS5yb3ddLFg9W2guY29sLGYuc2VsZWN0ZWRD''@;'; put 'put ''ZWxsQmVmb3JlVG91Y2hFbmQuZnJvbS5jb2xdO3JldHVybiBtWzBdPT09bVsxXSYmWFswXT09PVhbMV19cmV0dXJuITF9fSx7a2V5OiJwYXJlbnRDZWxsIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj17fSxoPXpTKGEsWyJURCIsIlRIIl0sdGhpcy53dFRhYmxlLlRBQkxFKTtyZXR1cm4gaD8o''@;'; put 'put ''Zi5jb29yZHM9dGhpcy53dFRhYmxlLmdldENvb3JkcyhoKSxmLlREPWgpOllvKGEsInd0Qm9yZGVyIikmJllvKGEsImN1cnJlbnQiKT8oZi5jb29yZHM9dGhpcy5zZWxlY3Rpb25zLmdldENlbGwoKS5jZWxsUmFuZ2UuaGlnaGxpZ2h0LGYuVEQ9dGhpcy53dFRhYmxlLmdldENlbGwoZi5jb29y''@;'; put 'put ''ZHMpKTpZbyhhLCJ3dEJvcmRlciIpJiZZbyhhLCJhcmVhIikmJnRoaXMuc2VsZWN0aW9ucy5jcmVhdGVPckdldEFyZWEoKS5jZWxsUmFuZ2UmJihmLmNvb3Jkcz10aGlzLnNlbGVjdGlvbnMuY3JlYXRlT3JHZXRBcmVhKCkuY2VsbFJhbmdlLnRvLGYuVEQ9dGhpcy53dFRhYmxlLmdldENlbGwo''@;'; put 'put ''Zi5jb29yZHMpKSxmfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPVo3LmdldCh0aGlzKSxkPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmFjdGl2ZUVsZW1lbnQsaD1PWShoMGUsYS50YXJnZXQpLG09YS50YXJnZXQ7aWYobSE9PWQmJmgoMCkhPT1k''@;'; put 'put ''JiZoKDEpIT09ZCl7dmFyIF89dGhpcy5wYXJlbnRDZWxsKG0pO1lvKG0sImNvcm5lciIpP3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkNlbGxDb3JuZXJNb3VzZURvd24iLGEsbSk6Xy5URCYmdGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsTW91c2VEb3duIikmJnRoaXMuY2FsbExp''@;'; put 'put ''c3RlbmVyKCJvbkNlbGxNb3VzZURvd24iLGEsXy5jb29yZHMsXy5URCksKDA9PT1hLmJ1dHRvbnx8dGhpcy50b3VjaEFwcGxpZWQpJiZfLlREJiYoZi5kYmxDbGlja09yaWdpblswXT1fLlRELGNsZWFyVGltZW91dChmLmRibENsaWNrVGltZW91dFswXSksZi5kYmxDbGlja1RpbWVvdXRbMF09''@;'; put 'put ''c2V0VGltZW91dChmdW5jdGlvbigpe2YuZGJsQ2xpY2tPcmlnaW5bMF09bnVsbH0sMWUzKSl9fX0se2tleToib25Db250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYodGhpcy53dFNldHRpbmdzLmhhcygib25DZWxsQ29udGV4dE1lbnUiKSl7dmFyIGY9dGhpcy5wYXJlbnRDZWxsKGEu''@;'; put 'put ''dGFyZ2V0KTtmLlREJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsQ29udGV4dE1lbnUiLGEsZi5jb29yZHMsZi5URCl9fX0se2tleToib25Nb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKHRoaXMud3RTZXR0aW5ncy5oYXMoIm9uQ2VsbE1vdXNlT3ZlciIpKXt2YXIgZj10aGlzLnd0''@;'; put 'put ''VGFibGUuVEFCTEUsZD16UyhhLnRhcmdldCxbIlREIiwiVEgiXSxmKSxoPXRoaXMucGFyZW50fHx0aGlzO2QmJmQhPT1oLmxhc3RNb3VzZU92ZXImJkE0KGQsZikmJihoLmxhc3RNb3VzZU92ZXI9ZCx0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdmVyIixhLHRoaXMud3RUYWJsZS5n''@;'; put 'put ''ZXRDb29yZHMoZCksZCkpfX19LHtrZXk6Im9uTW91c2VPdXQiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKHRoaXMud3RTZXR0aW5ncy5oYXMoIm9uQ2VsbE1vdXNlT3V0Iikpe3ZhciBmPXRoaXMud3RUYWJsZS5UQUJMRSxkPXpTKGEudGFyZ2V0LFsiVEQiLCJUSCJdLGYpLGg9elMoYS5yZWxhdGVk''@;'; put 'put ''VGFyZ2V0LFsiVEQiLCJUSCJdLGYpLG09dGhpcy5wYXJlbnR8fHRoaXM7ZCYmZCE9PWgmJkE0KGQsZikmJih0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdXQiLGEsdGhpcy53dFRhYmxlLmdldENvb3JkcyhkKSxkKSxudWxsPT09aCYmKG0ubGFzdE1vdXNlT3Zlcj1udWxsKSl9fX0s''@;'; put 'put ''e2tleToib25Nb3VzZVVwIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1aNy5nZXQodGhpcyksZD10aGlzLnBhcmVudENlbGwoYS50YXJnZXQpO2QuVEQmJnRoaXMud3RTZXR0aW5ncy5oYXMoIm9uQ2VsbE1vdXNlVXAiKSYmdGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbE1vdXNlVXAiLGEsZC5j''@;'; put 'put ''b29yZHMsZC5URCksKDA9PT1hLmJ1dHRvbnx8dGhpcy50b3VjaEFwcGxpZWQpJiYoZC5URD09PWYuZGJsQ2xpY2tPcmlnaW5bMF0mJmQuVEQ9PT1mLmRibENsaWNrT3JpZ2luWzFdPyhZbyhhLnRhcmdldCwiY29ybmVyIik/dGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbENvcm5lckRibENsaWNr''@;'; put 'put ''IixhLGQuY29vcmRzLGQuVEQpOnRoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxEYmxDbGljayIsYSxkLmNvb3JkcyxkLlREKSxmLmRibENsaWNrT3JpZ2luWzBdPW51bGwsZi5kYmxDbGlja09yaWdpblsxXT1udWxsKTpkLlREPT09Zi5kYmxDbGlja09yaWdpblswXSYmKGYuZGJsQ2xpY2tPcmln''@;'; put 'put ''aW5bMV09ZC5URCxjbGVhclRpbWVvdXQoZi5kYmxDbGlja1RpbWVvdXRbMV0pLGYuZGJsQ2xpY2tUaW1lb3V0WzFdPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmLmRibENsaWNrT3JpZ2luWzFdPW51bGx9LDUwMCkpKX19LHtrZXk6Im9uVG91Y2hTdGFydCIsdmFsdWU6ZnVuY3Rpb24oYSl7Wjcu''@;'; put 'put ''Z2V0KHRoaXMpLnNlbGVjdGVkQ2VsbEJlZm9yZVRvdWNoRW5kPXRoaXMuc2VsZWN0aW9ucy5nZXRDZWxsKCkuY2VsbFJhbmdlLHRoaXMudG91Y2hBcHBsaWVkPSEwLHRoaXMub25Nb3VzZURvd24oYSl9fSx7a2V5OiJvblRvdWNoRW5kIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZixkPWEudGFy''@;'; put 'put ''Z2V0LGg9bnVsbD09PShmPXRoaXMucGFyZW50Q2VsbChkKSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuY29vcmRzLG09aW8oaCkmJmgucm93Pj0wJiZoLmNvbD49MDthLmNhbmNlbGFibGUmJm0mJnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJpc0RhdGFWaWV3SW5zdGFuY2UiKSYmKGNZKCkm''@;'; put 'put ''JigkY2UoKXx8S2NlKCkpJiZ0aGlzLnNlbGVjdGVkQ2VsbFdhc1RvdWNoZWQoZCkmJiFbIkEiLCJCVVRUT04iLCJJTlBVVCJdLmluY2x1ZGVzKGQudGFnTmFtZSk/YS5wcmV2ZW50RGVmYXVsdCgpOnRoaXMuc2VsZWN0ZWRDZWxsV2FzVG91Y2hlZChkKXx8YS5wcmV2ZW50RGVmYXVsdCgpKSx0''@;'; put 'put ''aGlzLm9uTW91c2VVcChhKSx0aGlzLnRvdWNoQXBwbGllZD0hMX19LHtrZXk6ImNhbGxMaXN0ZW5lciIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCl7dmFyIG09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKGEpO20mJm0oZixkLGgsdGhpcy5mYWNhZGVHZXR0ZXIoKSl9fSx7a2V5OiJk''@;'; put 'put ''ZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPVo3LmdldCh0aGlzKTtjbGVhclRpbWVvdXQoYS5kYmxDbGlja1RpbWVvdXRbMF0pLGNsZWFyVGltZW91dChhLmRibENsaWNrVGltZW91dFsxXSksdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1dKSxsfSgpO2NvbnN0IFEwZT1yS2U7''@;'; put 'put ''ZnVuY3Rpb24gaU0obCl7cmV0dXJuKGlNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMu''@;'; put 'put ''Y29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gZTFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFi''@;'; put 'put ''bGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxhS2UoZi5rZXkpLGYpfX1mdW5jdGlvbiBhS2UobCl7dmFyIGM9ZnVuY3Rpb24gbEtlKGwsYyl7aWYoIm9iamVjdCIhPT1pTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1i''@;'; put 'put ''b2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1pTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigi''@;'; put 'put ''c3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09aU0oYyk/YzpTdHJpbmcoYyl9dmFyIHNLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyxhLGYpeyhmdW5jdGlvbiBpS2UobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5vZmZzZXQ9Yyx0aGlzLnRvdGFsPWEsdGhpcy5jb3VudFRIPWZ9cmV0dXJuIGZ1bmN0aW9uIG9LZShsLGMsYSl7YyYmZTFlKGwucHJvdG90eXBlLGMpLGEmJmUxZShsLGEpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJvZmZzZXR0ZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhK3RoaXMub2Zmc2V0fX0se2tleToidW5PZmZzZXR0ZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhLXRoaXMub2Zmc2V0''@;'; put 'put ''fX0se2tleToicmVuZGVyZWRUb1NvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub2Zmc2V0dGVkKGEpfX0se2tleToic291cmNlVG9SZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudW5PZmZzZXR0ZWQoYSl9fSx7a2V5OiJvZmZzZXR0ZWRUSCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEtdGhpcy5jb3VudFRIfX0se2tleToidW5PZmZzZXR0ZWRUSCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGErdGhpcy5jb3VudFRIfX0se2tleToidmlzaWJsZVJvd0hlYWRlZENvbHVtblRvU291cmNlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihhKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5yZW5kZXJlZFRvU291cmNlKHRoaXMub2Zmc2V0dGVkVEgoYSkpfX0se2tleToic291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZFRIKHRoaXMuc291cmNlVG9SZW5kZXJlZChhKSl9''@;'; put 'put ''fV0pLGx9KCk7Y29uc3QgdUtlPXNLZTtmdW5jdGlvbiBvTShsKXtyZXR1cm4ob009ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB0MWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGRLZShmLmtleSksZil9fWZ1bmN0aW9uIGRLZShsKXt2YXIgYz1mdW5jdGlvbiBoS2UobCxjKXtpZigib2JqZWN0IiE9PW9NKGwpfHxudWxsPT09''@;'; put 'put ''bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PW9NKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmlt''@;'; put 'put ''aXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1vTShjKT9jOlN0cmluZyhjKX12YXIgcEtlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEsZil7KGZ1bmN0aW9uIGNLZShsLGMpe2lmKCEobCBp''@;'; put 'put ''bnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLm9mZnNldD1jLHRoaXMudG90YWw9YSx0aGlzLmNvdW50VEg9Zn1yZXR1cm4gZnVuY3Rpb24gZktlKGwsYyxhKXtjJiZ0MWUobC5wcm90b3R5''@;'; put 'put ''cGUsYyksYSYmdDFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6Im9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGErdGhpcy5vZmZzZXR9fSx7a2V5OiJ1bk9mZnNldHRlZCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSl7cmV0dXJuIGEtdGhpcy5vZmZzZXR9fSx7a2V5OiJyZW5kZXJlZFRvU291cmNlIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vZmZzZXR0ZWQoYSl9fSx7a2V5OiJzb3VyY2VUb1JlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZChhKX19''@;'; put 'put ''LHtrZXk6Im9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gYS10aGlzLmNvdW50VEh9fSx7a2V5OiJ1bk9mZnNldHRlZFRIIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gYSt0aGlzLmNvdW50VEh9fSx7a2V5OiJ2aXNpYmxlQ29sSGVhZGVkUm93VG9Tb3VyY2VSb3ciLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbmRlcmVkVG9Tb3VyY2UodGhpcy5vZmZzZXR0ZWRUSChhKSl9fSx7a2V5OiJzb3VyY2VSb3dUb1Zpc2libGVDb2xIZWFkZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkVEgodGhpcy5zb3VyY2VUb1Jl''@;'; put 'put ''bmRlcmVkKGEpKX19XSksbH0oKTtjb25zdCBtS2U9cEtlO2Z1bmN0aW9uIGFNKGwpe3JldHVybihhTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVy''@;'; put 'put ''biBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIG4xZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVy''@;'; put 'put ''YWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYktlKGYua2V5KSxmKX19ZnVuY3Rpb24gYktlKGwpe3ZhciBjPWZ1bmN0aW9uIF9LZShsLGMpe2lmKCJvYmplY3QiIT09YU0o''@;'; put 'put ''bCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09YU0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJl''@;'; put 'put ''dHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWFNKGMpP2M6U3RyaW5nKGMpfXZhciByMWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7KGZ1bmN0aW9uIHZLZShsLGMpe2lm''@;'; put 'put ''KCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmN1cnJlbnRTaXplPTAsdGhpcy5uZXh0U2l6ZT0wLHRoaXMuY3VycmVudE9mZnNldD0wLHRoaXMubmV4dE9mZnNldD0wfXJldHVy''@;'; put 'put ''biBmdW5jdGlvbiB5S2UobCxjLGEpe2MmJm4xZShsLnByb3RvdHlwZSxjKSxhJiZuMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50U2l6ZT10aGlz''@;'; put 'put ''Lm5leHRTaXplLHRoaXMubmV4dFNpemU9YX19LHtrZXk6InNldE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50T2Zmc2V0PXRoaXMubmV4dE9mZnNldCx0aGlzLm5leHRPZmZzZXQ9YX19XSksbH0oKTtmdW5jdGlvbiBsTShsKXtyZXR1cm4obE09ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5''@;'; put 'put ''cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBpMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShsLFNLZShmLmtleSksZil9fWZ1bmN0aW9uIFNLZShsKXt2YXIgYz1mdW5jdGlvbiBNS2UobCxjKXtpZigib2JqZWN0IiE9PWxNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5j''@;'; put 'put ''YWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWxNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5n''@;'; put 'put ''Iik7cmV0dXJuInN5bWJvbCI9PT1sTShjKT9jOlN0cmluZyhjKX12YXIga0tlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpeyhmdW5jdGlvbiB3S2UobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i''@;'; put 'put ''KX0pKHRoaXMsbCksdGhpcy5zaXplPW5ldyByMWUsdGhpcy53b3JraW5nU3BhY2U9MCx0aGlzLnNoYXJlZFNpemU9bnVsbH1yZXR1cm4gZnVuY3Rpb24gQ0tlKGwsYyxhKXtjJiZpMWUobC5wcm90b3R5cGUsYyksYSYmaTFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlw''@;'; put 'put ''ZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuc2l6ZS5zZXRTaXplKGEpfX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnNpemUuc2V0T2Zmc2V0KGEpfX0se2tleToiZ2V0Vmlld1NpemUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX19LHtrZXk6ImlzU2hhcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZFNpemUgaW5zdGFuY2VvZiByMWV9fSx7a2V5OiJpc1BsYWNlT24iLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLndvcmtpbmdTcGFjZT09PWF9''@;'; put 'put ''fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMud29ya2luZ1NwYWNlPTEsYS53b3JraW5nU3BhY2U9Mix0aGlzLnNoYXJlZFNpemU9YS5nZXRWaWV3U2l6ZSgpfX0se2tleToicHJlcGVuZCIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy53b3JraW5nU3BhY2U9MixhLndvcmtp''@;'; put 'put ''bmdTcGFjZT0xLHRoaXMuc2hhcmVkU2l6ZT1hLmdldFZpZXdTaXplKCl9fV0pLGx9KCk7ZnVuY3Rpb24gc00obCl7cmV0dXJuKHNNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gbzFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3Zh''@;'; put 'put ''ciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxBS2UoZi5rZXkpLGYpfX1mdW5jdGlvbiBBS2UobCl7dmFyIGM9ZnVuY3Rpb24gVEtlKGwsYyl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1zTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1zTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRv''@;'; put 'put ''UHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09c00oYyk/YzpTdHJpbmcoYyl9dmFyIGExZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyxhLGYp''@;'; put 'put ''eyhmdW5jdGlvbiBFS2UobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5yb290Tm9kZT1jLHRoaXMubm9kZXNQb29sPWEsdGhpcy5zaXplU2V0PW5ldyBrS2UsdGhp''@;'; put 'put ''cy5jaGlsZE5vZGVUeXBlPWYudG9VcHBlckNhc2UoKSx0aGlzLnZpc3VhbEluZGV4PTAsdGhpcy5jb2xsZWN0ZWROb2Rlcz1bXX1yZXR1cm4gZnVuY3Rpb24geEtlKGwsYyxhKXtjJiZvMWUobC5wcm90b3R5cGUsYyksYSYmbzFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNpemVTZXQuc2V0U2l6ZShhKSx0aGlzfX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zaXplU2V0LnNldE9mZnNldChhKSx0''@;'; put 'put ''aGlzfX0se2tleToiaXNTaGFyZWRWaWV3U2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemVTZXQuaXNTaGFyZWQoKX19LHtrZXk6ImdldE5vZGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhPHRoaXMuY29sbGVjdGVkTm9kZXMubGVuZ3RoP3RoaXMuY29sbGVjdGVkTm9k''@;'; put 'put ''ZXNbYV06bnVsbH19LHtrZXk6ImdldEN1cnJlbnROb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29sbGVjdGVkTm9kZXMubGVuZ3RoO3JldHVybiBhPjA/dGhpcy5jb2xsZWN0ZWROb2Rlc1thLTFdOm51bGx9fSx7a2V5OiJnZXRSZW5kZXJlZENoaWxkQ291bnQiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGE9dGhpcy5yb290Tm9kZSxmPXRoaXMuc2l6ZVNldCxkPTA7aWYodGhpcy5pc1NoYXJlZFZpZXdTZXQoKSlmb3IodmFyIGg9YS5maXJzdEVsZW1lbnRDaGlsZDtoOyl7aWYoaC50YWdOYW1lPT09dGhpcy5jaGlsZE5vZGVUeXBlKWQrPTE7ZWxzZSBpZihmLmlzUGxhY2VP''@;'; put 'put ''bigxKSlicmVhaztoPWgubmV4dEVsZW1lbnRTaWJsaW5nfWVsc2UgZD1hLmNoaWxkRWxlbWVudENvdW50O3JldHVybiBkfX0se2tleToic3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg9MCx0aGlzLnZpc3VhbEluZGV4PTA7Zm9yKHZhciBhPXRoaXMu''@;'; put 'put ''cm9vdE5vZGUsZj10aGlzLnNpemVTZXQsZD10aGlzLmlzU2hhcmVkVmlld1NldCgpLG09Zi5nZXRWaWV3U2l6ZSgpLm5leHRTaXplLF89dGhpcy5nZXRSZW5kZXJlZENoaWxkQ291bnQoKTtfPG07KXt2YXIgTz10aGlzLm5vZGVzUG9vbCgpOyFkfHxkJiZmLmlzUGxhY2VPbigyKT9hLmFwcGVu''@;'; put 'put ''ZENoaWxkKE8pOmEuaW5zZXJ0QmVmb3JlKE8sYS5maXJzdENoaWxkKSxfKz0xfWZvcih2YXIgWD1kJiZmLmlzUGxhY2VPbigxKTtfPm07KWEucmVtb3ZlQ2hpbGQoWD9hLmZpcnN0Q2hpbGQ6YS5sYXN0Q2hpbGQpLF8tPTF9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9''@;'; put 'put ''dGhpcy5yb290Tm9kZSxmPXRoaXMuc2l6ZVNldCxkPXRoaXMudmlzdWFsSW5kZXg7dGhpcy5pc1NoYXJlZFZpZXdTZXQoKSYmZi5pc1BsYWNlT24oMikmJihkKz1mLnNoYXJlZFNpemUubmV4dFNpemUpO3ZhciBoPWEuY2hpbGROb2Rlc1tkXTtpZihoLnRhZ05hbWUhPT10aGlzLmNoaWxkTm9k''@;'; put 'put ''ZVR5cGUpe3ZhciBtPXRoaXMubm9kZXNQb29sKCk7YS5yZXBsYWNlQ2hpbGQobSxoKSxoPW19dGhpcy5jb2xsZWN0ZWROb2Rlcy5wdXNoKGgpLHRoaXMudmlzdWFsSW5kZXgrPTF9fSx7a2V5OiJlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSxsfSgpO2Z1bmN0aW9uIFk3KGwpe3JldHVybihZ''@;'; put 'put ''Nz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZj''@;'; put 'put ''IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGwxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53''@;'; put 'put ''cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSUtlKGYua2V5KSxmKX19ZnVuY3Rpb24gSUtlKGwpe3ZhciBjPWZ1bmN0aW9uIFJLZShsLGMpe2lmKCJvYmplY3QiIT09WTcobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lk''@;'; put 'put ''IDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09WTcoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1i''@;'; put 'put ''ZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVk3KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHRXKGwsYyl7cmV0dXJuKHRXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19f''@;'; put 'put ''PWQsZn0pKGwsYyl9ZnVuY3Rpb24gc1IobCl7cmV0dXJuKHNSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHMxZT1mdW5jdGlv''@;'; put 'put ''bihsKXshZnVuY3Rpb24gTEtlKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnBy''@;'; put 'put ''b3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnRXKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gUEtlKGwpe3ZhciBjPWZ1bmN0aW9u''@;'; put 'put ''IE5LZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXNSKGwpO2lmKGMpe3ZhciBoPXNSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxz''@;'; put 'put ''ZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBGS2UobCxjKXtpZihjJiYoIm9iamVjdCI9PT1ZNyhjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMg''@;'; put 'put ''bWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gSEtlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1''@;'; put 'put ''cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIE9LZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfXJldHVybiBmdW5jdGlvbiBES2UobCxjLGEpe2MmJmwxZShsLnByb3RvdHlwZSxjKSxhJiZsMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToicHJlcGVuZFZpZXciLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVy''@;'; put 'put ''biB0aGlzLnNpemVTZXQucHJlcGVuZChkLnNpemVTZXQpLGQuc2l6ZVNldC5hcHBlbmQodGhpcy5zaXplU2V0KSx0aGlzfX0se2tleToiYXBwZW5kVmlldyIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuc2l6ZVNldC5hcHBlbmQoZC5zaXplU2V0KSxkLnNpemVTZXQucHJlcGVuZCh0''@;'; put 'put ''aGlzLnNpemVTZXQpLHRoaXN9fV0pLGF9KGExZSk7ZnVuY3Rpb24gdU0obCl7cmV0dXJuKHVNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMm''@;'; put 'put ''JiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gdTFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxl''@;'; put 'put ''PWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxqS2UoZi5rZXkpLGYpfX1mdW5jdGlvbiBqS2UobCl7dmFyIGM9ZnVuY3Rpb24gektlKGwsYyl7aWYoIm9iamVjdCIhPT11TShsKXx8''@;'; put 'put ''bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT11TShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJu''@;'; put 'put ''IGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dU0oYyk/YzpTdHJpbmcoYyl9dmFyIFVLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIFZLZShsLGMpe2lmKCEo''@;'; put 'put ''bCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLm5vZGVUeXBlPWMudG9VcHBlckNhc2UoKX1yZXR1cm4gZnVuY3Rpb24gQktlKGwsYyxhKXtjJiZ1MWUobC5wcm90b3R5cGUsYyksYSYm''@;'; put 'put ''dTFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldFJvb3REb2N1bWVudCIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5yb290RG9jdW1lbnQ9YX19LHtrZXk6Im9idGFpbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm5vZGVUeXBlKX19XSksbH0oKTtmdW5jdGlvbiBjTShsKXtyZXR1cm4oY009ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVv''@;'; put 'put ''ZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBjMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2Er''@;'; put 'put ''Kyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFdLZShmLmtleSksZil9fWZ1bmN0aW9uIFdLZShsKXt2YXIgYz1mdW5jdGlvbiBHS2Uo''@;'; put 'put ''bCxjKXtpZigib2JqZWN0IiE9PWNNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWNNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1jTShjKT9jOlN0cmluZyhjKX12YXIgZk09ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMs''@;'; put 'put ''YSl7KGZ1bmN0aW9uIFpLZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLm5vZGVzUG9vbD0ic3RyaW5nIj09dHlwZW9mIGM/bmV3IFVLZShjKTpudWxsLHRoaXMu''@;'; put 'put ''bm9kZVR5cGU9Yyx0aGlzLnJvb3ROb2RlPWEsdGhpcy50YWJsZT1udWxsLHRoaXMucmVuZGVyZWROb2Rlcz0wfXJldHVybiBmdW5jdGlvbiBZS2UobCxjLGEpe2MmJmMxZShsLnByb3RvdHlwZSxjKSxhJiZjMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3Jp''@;'; put 'put ''dGFibGU6ITF9KX0obCxbe2tleToic2V0VGFibGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMubm9kZXNQb29sJiZ0aGlzLm5vZGVzUG9vbC5zZXRSb290RG9jdW1lbnQoYS5yb290RG9jdW1lbnQpLHRoaXMudGFibGU9YX19LHtrZXk6ImFkanVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5''@;'; put 'put ''OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSxsfSgpO2Z1bmN0aW9uIFc3KGwpe3JldHVybihXNz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGYxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51''@;'; put 'put ''bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwscUtlKGYua2V5KSxmKX19ZnVuY3Rpb24gcUtlKGwpe3ZhciBjPWZ1bmN0aW9uIFhLZShsLGMpe2lmKCJvYmplY3QiIT09''@;'; put 'put ''VzcobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09VzcoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0''@;'; put 'put ''IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVc3KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIG5XKGwsYyl7cmV0dXJuKG5XPU9iamVjdC5zZXRQcm90b3R5cGVPZj9P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gdVIobCl7cmV0dXJuKHVSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHJxZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gSktlKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRo''@;'; put 'put ''ZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pLGMmJm5XKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gUUtlKGwpe3ZhciBjPWZ1bmN0aW9uIG5xZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQ''@;'; put 'put ''cm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXVSKGwpO2lmKGMpe3ZhciBo''@;'; put 'put ''PXVSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBlcWUobCxjKXtpZihjJiYoIm9iamVjdCI9PT1XNyhjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVy''@;'; put 'put ''biBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gdHFlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlz''@;'; put 'put ''IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7cmV0dXJuIGZ1bmN0aW9uICRLZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChmPWMuY2FsbCh0aGlzLCJUSCIpKS5vcmRlclZpZXdzPW5ldyBXZWFrTWFwLGYuc291cmNlUm93SW5kZXg9MCxmfXJldHVybiBmdW5jdGlvbiBLS2UobCxjLGEpe2MmJmYxZShsLnByb3RvdHlwZSxjKSxh''@;'; put 'put ''JiZmMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToib2J0YWluT3JkZXJWaWV3Iix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgbSxoPXRoaXM7cmV0dXJuIHRoaXMub3JkZXJWaWV3cy5oYXMoZCk/bT10aGlzLm9yZGVyVmll''@;'; put 'put ''d3MuZ2V0KGQpOihtPW5ldyBzMWUoZCxmdW5jdGlvbihfKXtyZXR1cm4gaC5ub2Rlc1Bvb2wub2J0YWluKGguc291cmNlUm93SW5kZXgsXyl9LHRoaXMubm9kZVR5cGUpLHRoaXMub3JkZXJWaWV3cy5zZXQoZCxtKSksbX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFy''@;'; put 'put ''IGQ9dGhpcy50YWJsZSxoPWQucm93c1RvUmVuZGVyLG09ZC5yb3dIZWFkZXJGdW5jdGlvbnMsXz1kLnJvd0hlYWRlcnNDb3VudCxPPWQucm93cyxYPWQuY2VsbHMsYWU9MDthZTxoO2FlKyspe3ZhciBwZT10aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoYWUpLGJlPU8uZ2V0UmVuZGVy''@;'; put 'put ''ZWROb2RlKGFlKTt0aGlzLnNvdXJjZVJvd0luZGV4PXBlO3ZhciB4ZT10aGlzLm9idGFpbk9yZGVyVmlldyhiZSksVmU9WC5vYnRhaW5PcmRlclZpZXcoYmUpO3hlLmFwcGVuZFZpZXcoVmUpLnNldFNpemUoXykuc2V0T2Zmc2V0KHRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZSgw''@;'; put 'put ''KSkuc3RhcnQoKTtmb3IodmFyIFplPTA7WmU8XztaZSsrKXt4ZS5yZW5kZXIoKTt2YXIgbHQ9eGUuZ2V0Q3VycmVudE5vZGUoKTtsdC5jbGFzc05hbWU9IiIsbHQucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLG1bWmVdKHBlLGx0LFplKX14ZS5lbmQoKX19fV0pLGF9KGZNKTtmdW5jdGlvbiBH''@;'; put 'put ''NyhsKXtyZXR1cm4oRzc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rv''@;'; put 'put ''cj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBkMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFs''@;'; put 'put ''dWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGFxZShmLmtleSksZil9fWZ1bmN0aW9uIGFxZShsKXt2YXIgYz1mdW5jdGlvbiBscWUobCxjKXtpZigib2JqZWN0IiE9PUc3KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1p''@;'; put 'put ''dGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUc3KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09''@;'; put 'put ''Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1HNyhjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiByVyhsLGMpe3JldHVybihyVz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVy''@;'; put 'put ''biBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGNSKGwpe3JldHVybihjUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZh''@;'; put 'put ''ciBocWU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHNxZShsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5j''@;'; put 'put ''cmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZyVyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHVxZShsKXt2''@;'; put 'put ''YXIgYz1mdW5jdGlvbiBkcWUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1''@;'; put 'put ''ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1jUihsKTtpZihjKXt2YXIgaD1jUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJn''@;'; put 'put ''dW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gY3FlKGwsYyl7aWYoYyYmKCJvYmplY3QiPT09RzcoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGZxZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4g''@;'; put 'put ''Y2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXtyZXR1cm4gZnVuY3Rpb24gaXFlKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5j''@;'; put 'put ''YWxsKHRoaXMsbnVsbCxmKX1yZXR1cm4gZnVuY3Rpb24gb3FlKGwsYyxhKXtjJiZkMWUobC5wcm90b3R5cGUsYyksYSYmZDFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImFkanVzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZD10aGlzLnRhYmxlLGg9ZC5jb2x1bW5IZWFkZXJzQ291bnQsXz10aGlzLnJvb3ROb2RlLmZpcnN0Q2hpbGQ7aWYoaCl7Zm9yKHZhciBYPXRoaXMudGFibGUuY29sdW1uc1RvUmVuZGVyK2Qucm93SGVhZGVyc0NvdW50LGFlPTAscGU9aDthZTxwZTthZSsrKXtmb3IoKF89dGhpcy5yb290''@;'; put 'put ''Tm9kZS5jaGlsZE5vZGVzW2FlXSl8fChfPXRoaXMudGFibGUucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksdGhpcy5yb290Tm9kZS5hcHBlbmRDaGlsZChfKSksdGhpcy5yZW5kZXJlZE5vZGVzPV8uY2hpbGROb2Rlcy5sZW5ndGg7dGhpcy5yZW5kZXJlZE5vZGVzPFg7KV8uYXBw''@;'; put 'put ''ZW5kQ2hpbGQodGhpcy50YWJsZS5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSksdGhpcy5yZW5kZXJlZE5vZGVzKz0xO2Zvcig7dGhpcy5yZW5kZXJlZE5vZGVzPlg7KV8ucmVtb3ZlQ2hpbGQoXy5sYXN0Q2hpbGQpLHRoaXMucmVuZGVyZWROb2Rlcy09MX12YXIgYmU9dGhpcy5y''@;'; put 'put ''b290Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtpZihiZT5oKWZvcih2YXIgeGU9aDt4ZTxiZTt4ZSsrKXRoaXMucm9vdE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5yb290Tm9kZS5sYXN0Q2hpbGQpfWVsc2UgXyYmRmQoXyl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBk''@;'; put 'put ''PXRoaXMudGFibGUuY29sdW1uSGVhZGVyc0NvdW50LGg9MDtoPGQ7aCs9MSlmb3IodmFyIG09dGhpcy50YWJsZSxfPW0uY29sdW1uSGVhZGVyRnVuY3Rpb25zLE89bS5jb2x1bW5zVG9SZW5kZXIsWD1tLnJvd0hlYWRlcnNDb3VudCxhZT10aGlzLnJvb3ROb2RlLmNoaWxkTm9kZXNbaF0scGU9''@;'; put 'put ''LTEqWDtwZTxPO3BlKz0xKXt2YXIgYmU9dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKHBlKSx4ZT1hZS5jaGlsZE5vZGVzW3BlK1hdO3hlLmNsYXNzTmFtZT0iIix4ZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksX1toXShiZSx4ZSxoKX19fV0pLGF9KGZNKTtmdW5jdGlvbiAk''@;'; put 'put ''NyhsKXtyZXR1cm4oJDc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rv''@;'; put 'put ''cj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBoMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFs''@;'; put 'put ''dWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGdxZShmLmtleSksZil9fWZ1bmN0aW9uIGdxZShsKXt2YXIgYz1mdW5jdGlvbiB2cWUobCxjKXtpZigib2JqZWN0IiE9PSQ3KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1p''@;'; put 'put ''dGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PSQ3KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09''@;'; put 'put ''Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT0kNyhjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBpVyhsLGMpe3JldHVybihpVz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVy''@;'; put 'put ''biBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGZSKGwpe3JldHVybihmUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZh''@;'; put 'put ''ciBwMWUsU3FlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB5cWUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmpl''@;'; put 'put ''Y3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmaVcobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBicWUo''@;'; put 'put ''bCl7dmFyIGM9ZnVuY3Rpb24gQ3FlKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9ZlIobCk7aWYoYyl7dmFyIGg9ZlIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChm''@;'; put 'put ''LGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIF9xZShsLGMpe2lmKGMmJigib2JqZWN0Ij09PSQ3KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJp''@;'; put 'put ''dmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiB3cWUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi''@;'; put 'put ''ZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7cmV0dXJuIGZ1bmN0aW9uIHBxZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEp''@;'; put 'put ''LGMuY2FsbCh0aGlzLG51bGwsZil9cmV0dXJuIGZ1bmN0aW9uIG1xZShsLGMsYSl7YyYmaDFlKGwucHJvdG90eXBlLGMpLGEmJmgxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJhZGp1c3QiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7Zm9yKHZhciBkPXRoaXMudGFibGUsXz1kLmNvbHVtbnNUb1JlbmRlcitkLnJvd0hlYWRlcnNDb3VudDt0aGlzLnJlbmRlcmVkTm9kZXM8XzspdGhpcy5yb290Tm9kZS5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2wiKSksdGhpcy5yZW5k''@;'; put 'put ''ZXJlZE5vZGVzKz0xO2Zvcig7dGhpcy5yZW5kZXJlZE5vZGVzPl87KXRoaXMucm9vdE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5yb290Tm9kZS5sYXN0Q2hpbGQpLHRoaXMucmVuZGVyZWROb2Rlcy09MX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFkanVzdCgpO2Zvcih2''@;'; put 'put ''YXIgZD10aGlzLnRhYmxlLGg9ZC5jb2x1bW5zVG9SZW5kZXIsbT1kLnJvd0hlYWRlcnNDb3VudCxfPTA7XzxtO18rKyl7dmFyIE89dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKF8pLFg9dGhpcy50YWJsZS5jb2x1bW5VdGlscy5nZXRIZWFkZXJXaWR0aChPKTt0aGlzLnJvb3RO''@;'; put 'put ''b2RlLmNoaWxkTm9kZXNbX10uc3R5bGUud2lkdGg9IiIuY29uY2F0KFgsInB4Iil9Zm9yKHZhciBhZT0wO2FlPGg7YWUrKyl7dmFyIHBlPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShhZSksYmU9dGhpcy50YWJsZS5jb2x1bW5VdGlscy5nZXRTdHJldGNoZWRDb2x1bW5XaWR0''@;'; put 'put ''aChwZSk7dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzW2FlK21dLnN0eWxlLndpZHRoPSIiLmNvbmNhdChiZSwicHgiKX12YXIgeGU9dGhpcy5yb290Tm9kZS5maXJzdENoaWxkO3hlJiZnaSh4ZSwicm93SGVhZGVyIil9fV0pLGF9KGZNKTtmdW5jdGlvbiBLNyhsKXtyZXR1cm4oSzc9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJv''@;'; put 'put ''bC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBtMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9''@;'; put 'put ''ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHhxZShmLmtleSksZil9fWZ1bmN0aW9uIHhxZShsKXt2YXIgYz1mdW5jdGlvbiBBcWUobCxjKXtpZigib2JqZWN0IiE9PUs3KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7''@;'; put 'put ''dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUs3KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0o''@;'; put 'put ''bCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1LNyhjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBvVyhsLGMpe3JldHVybihvVz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShs''@;'; put 'put ''LGMpfWZ1bmN0aW9uIGRSKGwpe3JldHVybihkUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBnMWU9ITEsTHFlPWZ1bmN0aW9u''@;'; put 'put ''KGwpeyFmdW5jdGlvbiBUcWUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJv''@;'; put 'put ''dG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmb1cobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBPcWUobCl7dmFyIGM9ZnVuY3Rpb24g''@;'; put 'put ''UnFlKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9ZFIobCk7aWYoYyl7dmFyIGg9ZFIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNl''@;'; put 'put ''IGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIERxZShsLGMpe2lmKGMmJigib2JqZWN0Ij09PUs3KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBt''@;'; put 'put ''YXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBJcWUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVy''@;'; put 'put ''biBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIGtxZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChkPWMuY2FsbCh0''@;'; put 'put ''aGlzLCJUUiIsZikpLm9yZGVyVmlldz1uZXcgYTFlKGYsZnVuY3Rpb24oaCl7cmV0dXJuIGQubm9kZXNQb29sLm9idGFpbihoKX0sZC5ub2RlVHlwZSksZH1yZXR1cm4gZnVuY3Rpb24gRXFlKGwsYyxhKXtjJiZtMWUobC5wcm90b3R5cGUsYyksYSYmbTFlKGwsYSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImdldFJlbmRlcmVkTm9kZSIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMub3JkZXJWaWV3LmdldE5vZGUoZCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy50YWJsZS5y''@;'; put 'put ''b3dzVG9SZW5kZXI7IWcxZSYmZD4xZTMmJihnMWU9ITAsV2woT2wocDFlfHwocDFlPWZ1bmN0aW9uIE1xZShsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShjKX19KSl9''@;'; put 'put ''KFsnUGVyZm9ybWFuY2UgdGlwOiBIYW5kc29udGFibGUgcmVuZGVyZWQgbW9yZSB0aGFuIDEwMDAgdmlzaWJsZSByb3dzLiBDb25zaWRlciBsaW1pdGluZyBcbiAgICAgICAgdGhlIG51bWJlciBvZiByZW5kZXJlZCByb3dzIGJ5IHNwZWNpZnlpbmcgdGhlIHRhYmxlIGhlaWdodCBhbmQvb3Ig''@;'; put 'put ''dHVybmluZyBvZmYgdGhlICJyZW5kZXJBbGxSb3dzIiBvcHRpb24uJ10sWydQZXJmb3JtYW5jZSB0aXA6IEhhbmRzb250YWJsZSByZW5kZXJlZCBtb3JlIHRoYW4gMTAwMCB2aXNpYmxlIHJvd3MuIENvbnNpZGVyIGxpbWl0aW5nXFx4MjBcbiAgICAgICAgdGhlIG51bWJlciBvZiByZW5kZXJl''@;'; put 'put ''ZCByb3dzIGJ5IHNwZWNpZnlpbmcgdGhlIHRhYmxlIGhlaWdodCBhbmQvb3IgdHVybmluZyBvZmYgdGhlICJyZW5kZXJBbGxSb3dzIiBvcHRpb24uJ10pKSkpKSx0aGlzLm9yZGVyVmlldy5zZXRTaXplKGQpLnNldE9mZnNldCh0aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoMCkpLnN0''@;'; put 'put ''YXJ0KCk7Zm9yKHZhciBoPTA7aDxkO2grKyl0aGlzLm9yZGVyVmlldy5yZW5kZXIoKTt0aGlzLm9yZGVyVmlldy5lbmQoKX19XSksYX0oZk0pO2Z1bmN0aW9uIHE3KGwpe3JldHVybihxNz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRv''@;'; put 'put ''cj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHYxZShsLGMp''@;'; put 'put ''e2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSHFlKGYua2V5KSxmKX19ZnVuY3Rpb24g''@;'; put 'put ''SHFlKGwpe3ZhciBjPWZ1bmN0aW9uIE5xZShsLGMpe2lmKCJvYmplY3QiIT09cTcobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cTcoZikpcmV0''@;'; put 'put ''dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXE3KGMpP2M6U3RyaW5nKGMpfWZ1bmN0''@;'; put 'put ''aW9uIGFXKGwsYyl7cmV0dXJuKGFXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gaFIobCl7cmV0dXJuKGhSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9P''@;'; put 'put ''YmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIFpxZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gVnFlKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmFXKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gQnFlKGwpe3ZhciBjPWZ1bmN0aW9uIFVxZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0o''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPWhSKGwpO2lmKGMpe3ZhciBoPWhSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBqcWUobCxjKXtpZihjJiYo''@;'; put 'put ''Im9iamVjdCI9PT1xNyhjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24genFlKGwp''@;'; put 'put ''e2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7cmV0dXJuIGZ1bmN0aW9uIFBx''@;'; put 'put ''ZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChmPWMuY2FsbCh0aGlzLCJURCIpKS5vcmRlclZpZXdzPW5ldyBXZWFrTWFwLGYuc291cmNlUm93SW5kZXg9MCxmfXJldHVy''@;'; put 'put ''biBmdW5jdGlvbiBGcWUobCxjLGEpe2MmJnYxZShsLnByb3RvdHlwZSxjKSxhJiZ2MWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToib2J0YWluT3JkZXJWaWV3Iix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgbSxoPXRoaXM7''@;'; put 'put ''cmV0dXJuIHRoaXMub3JkZXJWaWV3cy5oYXMoZCk/bT10aGlzLm9yZGVyVmlld3MuZ2V0KGQpOihtPW5ldyBzMWUoZCxmdW5jdGlvbihfKXtyZXR1cm4gaC5ub2Rlc1Bvb2wub2J0YWluKGguc291cmNlUm93SW5kZXgsXyl9LHRoaXMubm9kZVR5cGUpLHRoaXMub3JkZXJWaWV3cy5zZXQoZCxt''@;'; put 'put ''KSksbX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9dGhpcy50YWJsZSxoPWQucm93c1RvUmVuZGVyLG09ZC5jb2x1bW5zVG9SZW5kZXIsXz1kLnJvd3MsTz1kLnJvd0hlYWRlcnMsWD0wO1g8aDtYKyspe3ZhciBhZT10aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9T''@;'; put 'put ''b3VyY2UoWCkscGU9Xy5nZXRSZW5kZXJlZE5vZGUoWCk7dGhpcy5zb3VyY2VSb3dJbmRleD1hZTt2YXIgYmU9dGhpcy5vYnRhaW5PcmRlclZpZXcocGUpLHhlPU8ub2J0YWluT3JkZXJWaWV3KHBlKTtiZS5wcmVwZW5kVmlldyh4ZSkuc2V0U2l6ZShtKS5zZXRPZmZzZXQodGhpcy50YWJsZS5y''@;'; put 'put ''ZW5kZXJlZENvbHVtblRvU291cmNlKDApKS5zdGFydCgpO2Zvcih2YXIgVmU9MDtWZTxtO1ZlKyspe2JlLnJlbmRlcigpO3ZhciBaZT1iZS5nZXRDdXJyZW50Tm9kZSgpLGx0PXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShWZSk7WW8oWmUsImhpZGUiKXx8KFplLmNsYXNzTmFt''@;'; put 'put ''ZT0iIiksWmUucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLFplLnJlbW92ZUF0dHJpYnV0ZSgiZGlyIiksdGhpcy50YWJsZS5jZWxsUmVuZGVyZXIoYWUsbHQsWmUpfWJlLmVuZCgpfX19XSksYX0oZk0pO2Z1bmN0aW9uIGRNKGwpe3JldHVybihkTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHkxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsR3FlKGYua2V5KSxmKX19ZnVuY3Rpb24gR3FlKGwpe3ZhciBjPWZ1bmN0aW9uICRxZShsLGMpe2lmKCJvYmplY3QiIT09ZE0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09ZE0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4i''@;'; put 'put ''c3ltYm9sIj09PWRNKGMpP2M6U3RyaW5nKGMpfXZhciBLcWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBmPShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30pLmNlbGxSZW5kZXJlcjsoZnVuY3Rpb24gWXFlKGwsYyl7aWYoIShs''@;'; put 'put ''IGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMucm9vdE5vZGU9Yyx0aGlzLnJvb3REb2N1bWVudD10aGlzLnJvb3ROb2RlLm93bmVyRG9jdW1lbnQsdGhpcy5yb3dIZWFkZXJzPW51bGws''@;'; put 'put ''dGhpcy5jb2x1bW5IZWFkZXJzPW51bGwsdGhpcy5jb2xHcm91cD1udWxsLHRoaXMucm93cz1udWxsLHRoaXMuY2VsbHM9bnVsbCx0aGlzLnJvd0ZpbHRlcj1udWxsLHRoaXMuY29sdW1uRmlsdGVyPW51bGwsdGhpcy5yb3dVdGlscz1udWxsLHRoaXMuY29sdW1uVXRpbHM9bnVsbCx0aGlzLnJv''@;'; put 'put ''d3NUb1JlbmRlcj0wLHRoaXMuY29sdW1uc1RvUmVuZGVyPTAsdGhpcy5yb3dIZWFkZXJGdW5jdGlvbnM9W10sdGhpcy5yb3dIZWFkZXJzQ291bnQ9MCx0aGlzLmNvbHVtbkhlYWRlckZ1bmN0aW9ucz1bXSx0aGlzLmNvbHVtbkhlYWRlcnNDb3VudD0wLHRoaXMuY2VsbFJlbmRlcmVyPWZ9cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIFdxZShsLGMsYSl7YyYmeTFlKGwucHJvdG90eXBlLGMpLGEmJnkxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzZXRBeGlzVXRpbHMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhpcy5yb3dVdGls''@;'; put 'put ''cz1hLHRoaXMuY29sdW1uVXRpbHM9Zn19LHtrZXk6InNldFZpZXdwb3J0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0aGlzLnJvd3NUb1JlbmRlcj1hLHRoaXMuY29sdW1uc1RvUmVuZGVyPWZ9fSx7a2V5OiJzZXRGaWx0ZXJzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3RoaXMucm93RmlsdGVy''@;'; put 'put ''PWEsdGhpcy5jb2x1bW5GaWx0ZXI9Zn19LHtrZXk6InNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhpcy5yb3dIZWFkZXJGdW5jdGlvbnM9YSx0aGlzLnJvd0hlYWRlcnNDb3VudD1hLmxlbmd0aCx0aGlzLmNvbHVtbkhlYWRlckZ1bmN0aW9ucz1mLHRo''@;'; put 'put ''aXMuY29sdW1uSGVhZGVyc0NvdW50PWYubGVuZ3RofX0se2tleToic2V0UmVuZGVyZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxmPWEucm93SGVhZGVycyxkPWEuY29sdW1uSGVhZGVy''@;'; put 'put ''cyxoPWEuY29sR3JvdXAsbT1hLnJvd3MsXz1hLmNlbGxzO2Yuc2V0VGFibGUodGhpcyksZC5zZXRUYWJsZSh0aGlzKSxoLnNldFRhYmxlKHRoaXMpLG0uc2V0VGFibGUodGhpcyksXy5zZXRUYWJsZSh0aGlzKSx0aGlzLnJvd0hlYWRlcnM9Zix0aGlzLmNvbHVtbkhlYWRlcnM9ZCx0aGlzLmNv''@;'; put 'put ''bEdyb3VwPWgsdGhpcy5yb3dzPW0sdGhpcy5jZWxscz1ffX0se2tleToicmVuZGVyZWRSb3dUb1NvdXJjZSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoYSl9fSx7a2V5OiJyZW5kZXJlZENvbHVtblRvU291cmNlIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShhKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbEdyb3VwLmFkanVzdCgpLHRoaXMuY29sdW1uSGVhZGVycy5hZGp1c3QoKSx0aGlzLnJvd3MuYWRqdXN0KCksdGhpcy5yb3dI''@;'; put 'put ''ZWFkZXJzLmFkanVzdCgpLHRoaXMuY29sdW1uSGVhZGVycy5yZW5kZXIoKSx0aGlzLnJvd3MucmVuZGVyKCksdGhpcy5yb3dIZWFkZXJzLnJlbmRlcigpLHRoaXMuY2VsbHMucmVuZGVyKCksdGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLmNvbEdyb3VwLnJlbmRlcigp''@;'; put 'put ''O2Zvcih2YXIgYT10aGlzLnJvd3NUb1JlbmRlcixmPXRoaXMucm93cyxkPTA7ZDxhO2QrKyl7dmFyIGg9Zi5nZXRSZW5kZXJlZE5vZGUoZCk7aWYoaC5maXJzdENoaWxkKXt2YXIgbT10aGlzLnJlbmRlcmVkUm93VG9Tb3VyY2UoZCksXz10aGlzLnJvd1V0aWxzLmdldEhlaWdodChtKTtoLmZp''@;'; put 'put ''cnN0Q2hpbGQuc3R5bGUuaGVpZ2h0PV8/IiIuY29uY2F0KF8tMSwicHgiKToiIn19fX1dKSxsfSgpO2Z1bmN0aW9uIGhNKGwpe3JldHVybihoTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlw''@;'; put 'put ''ZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGIxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7''@;'; put 'put ''YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSnFlKGYua2V5KSxmKX19ZnVuY3Rpb24gSnFlKGwpe3ZhciBjPWZ1bmN0aW9uIFFx''@;'; put 'put ''ZShsLGMpe2lmKCJvYmplY3QiIT09aE0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09aE0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWhNKGMpP2M6U3RyaW5nKGMpfXZhciBlWGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBs''@;'; put 'put ''KCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGE9Yy5UQUJMRSxmPWMuVEhFQUQsZD1jLkNPTEdST1VQLGg9Yy5UQk9EWSxtPWMucm93VXRpbHMsXz1jLmNvbHVtblV0aWxzLE89Yy5jZWxsUmVuZGVyZXI7KGZ1bmN0aW9u''@;'; put 'put ''IHFxZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLnJlbmRlcmVyPW5ldyBLcWUoYSx7Y2VsbFJlbmRlcmVyOk99KSx0aGlzLnJlbmRlcmVyLnNldFJlbmRlcmVy''@;'; put 'put ''cyh7cm93SGVhZGVyczpuZXcgcnFlLGNvbHVtbkhlYWRlcnM6bmV3IGhxZShmKSxjb2xHcm91cDpuZXcgU3FlKGQpLHJvd3M6bmV3IExxZShoKSxjZWxsczpuZXcgWnFlfSksdGhpcy5yZW5kZXJlci5zZXRBeGlzVXRpbHMobSxfKX1yZXR1cm4gZnVuY3Rpb24gWHFlKGwsYyxhKXtjJiZiMWUo''@;'; put 'put ''bC5wcm90b3R5cGUsYyksYSYmYjFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldEZpbHRlcnMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0RmlsdGVycyhhLGYpLHRoaXN9fSx7''@;'; put 'put ''a2V5OiJzZXRWaWV3cG9ydFNpemUiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0Vmlld3BvcnRTaXplKGEsZiksdGhpc319LHtrZXk6InNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIHRoaXMucmVuZGVyZXIu''@;'; put 'put ''c2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhhLGYpLHRoaXN9fSx7a2V5OiJhZGp1c3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5hZGp1c3QoKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnJlbmRlcigpfX1dKSxsfSgpO2Z1bmN0aW9u''@;'; put 'put ''IHBNKGwpe3JldHVybihwTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVj''@;'; put 'put ''dG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIF8xZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2''@;'; put 'put ''YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsclhlKGYua2V5KSxmKX19ZnVuY3Rpb24gclhlKGwpe3ZhciBjPWZ1bmN0aW9uIGlYZShsLGMpe2lmKCJvYmplY3QiIT09cE0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJp''@;'; put 'put ''bWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cE0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9''@;'; put 'put ''PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXBNKGMpP2M6U3RyaW5nKGMpfXZhciBvWGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIHRYZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Yyx0aGlzLnd0U2V0dGluZ3M9YSx0aGlzLmhlYWRlcldpZHRocz1uZXcgTWFwfXJldHVybiBmdW5jdGlvbiBuWGUobCxjLGEpe2MmJl8xZShsLnByb3RvdHlwZSxjKSxh''@;'; put 'put ''JiZfMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ2V0V2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uV2lkdGgiLGEpfHx0aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3MuZ2V0U2V0dGluZygiZGVmYXVsdENvbHVtbldpZHRoIil9fSx7a2V5OiJnZXRTdHJldGNoZWRDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3IsZD10aGlzLmdldFdpZHRo''@;'; put 'put ''KGEpO2lmKGYpe3ZhciBoPWYuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoYSxkKTtoJiYoZD1oKX1yZXR1cm4gZH19LHtrZXk6ImdldEhlYWRlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSxkPXRo''@;'; put 'put ''aXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbYV07cmV0dXJuIHZvaWQgMCE9PWQmJihmPWY/TWF0aC5tYXgoZixkKTpkKSxmfX0se2tleToiZ2V0SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmhlYWRlcldpZHRo''@;'; put 'put ''cy5nZXQodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuY29sdW1uRmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoYSkpfX0se2tleToiY2FsY3VsYXRlV2lkdGhzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMud3RTZXR0aW5ncyxmPXRoaXMuZGF0YUFjY2Vzc09iamVjdCxoPWYud3RW''@;'; put 'put ''aWV3cG9ydCxtPWYuY2xvbmVTb3VyY2UsXz1tP20ud3RUYWJsZS5ob2xkZXI6Zi53dFRhYmxlLmhvbGRlcixPPV8ub2Zmc2V0SGVpZ2h0PF8uc2Nyb2xsSGVpZ2h0P051KCk6MCxYPWEuZ2V0U2V0dGluZygicm93SGVhZGVyV2lkdGgiKTtpZihoLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnJl''@;'; put 'put ''ZnJlc2hTdHJldGNoaW5nKGguZ2V0Vmlld3BvcnRXaWR0aCgpLU8pLG51bGwhPShYPWEuZ2V0U2V0dGluZygib25Nb2RpZnlSb3dIZWFkZXJXaWR0aCIsWCkpKWZvcih2YXIgYWU9YS5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoLHBlPWEuZ2V0U2V0dGluZygiZGVmYXVsdENvbHVt''@;'; put 'put ''bldpZHRoIiksYmU9MDtiZTxhZTtiZSsrKXt2YXIgeGU9QXJyYXkuaXNBcnJheShYKT9YW2JlXTpYO3RoaXMuaGVhZGVyV2lkdGhzLnNldChiZSx4ZT14ZT8/cGUpfX19XSksbH0oKTtmdW5jdGlvbiBtTShsKXtyZXR1cm4obU09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9''@;'; put 'put ''KShsKX1mdW5jdGlvbiB3MWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHNY''@;'; put 'put ''ZShmLmtleSksZil9fWZ1bmN0aW9uIHNYZShsKXt2YXIgYz1mdW5jdGlvbiB1WGUobCxjKXtpZigib2JqZWN0IiE9PW1NKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtp''@;'; put 'put ''Zigib2JqZWN0IiE9PW1NKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1t''@;'; put 'put ''TShjKT9jOlN0cmluZyhjKX12YXIgY1hlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBhWGUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5k''@;'; put 'put ''YXRhQWNjZXNzT2JqZWN0PWMsdGhpcy53dFNldHRpbmdzPWF9cmV0dXJuIGZ1bmN0aW9uIGxYZShsLGMsYSl7YyYmdzFlKGwucHJvdG90eXBlLGMpLGEmJncxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJnZXRIZWln''@;'; put 'put ''aHQiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWlnaHQiLGEpLGQ9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkUm93c1thXTtyZXR1cm4gdm9pZCAwIT09ZCYmKGY9dm9pZCAwPT09Zj9kOk1hdGgubWF4''@;'; put 'put ''KGYsZCkpLGZ9fV0pLGx9KCksdzU9InRvcCIsVmg9ImJvdHRvbSIsQzU9ImlubGluZV9zdGFydCIsUzU9InRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIixSND0iYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiLGZYZT1bdzUsVmgsQzUsUzUsUjRdLGRYZT1uZXcgTWFwKFtbdzUsImh0X2Nsb25l''@;'; put 'put ''XyIuY29uY2F0KHc1KV0sW1ZoLCJodF9jbG9uZV8iLmNvbmNhdChWaCldLFtDNSwiaHRfY2xvbmVfIi5jb25jYXQoQzUsIiBodF9jbG9uZV9sZWZ0IildLFtTNSwiaHRfY2xvbmVfIi5jb25jYXQoUzUsIiBodF9jbG9uZV90b3BfbGVmdF9jb3JuZXIiKV0sW1I0LCJodF9jbG9uZV8iLmNvbmNh''@;'; put 'put ''dChSNCwiIGh0X2Nsb25lX2JvdHRvbV9sZWZ0X2Nvcm5lciIpXV0pO2Z1bmN0aW9uIGdNKGwpe3JldHVybihnTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMp''@;'; put 'put ''e3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEMxZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gbFcobCxj''@;'; put 'put ''KTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMi''@;'; put 'put ''PT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIGxXKGwsYyl9fWZ1bmN0aW9uIGxXKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2Fd''@;'; put 'put ''PWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gUzFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCxNMWUoZi5rZXkpLGYpfX1mdW5jdGlvbiBCaChsLGMsYSl7cmV0dXJuKGM9TTFlKGMpKWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIE0xZShs''@;'; put 'put ''KXt2YXIgYz1mdW5jdGlvbiBTWGUobCxjKXtpZigib2JqZWN0IiE9PWdNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWdNKGYpKXJldHVybiBm''@;'; put 'put ''O3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1nTShjKT9jOlN0cmluZyhjKX12YXIgTVhlPWZ1''@;'; put 'put ''bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEsZixkLGgpe3ZhciBtPXRoaXM7KGZ1bmN0aW9uIHdYZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxCaCh0aGlzLCJ3dFNldHRp''@;'; put 'put ''bmdzIixudWxsKSxCaCh0aGlzLCJkb21CaW5kaW5ncyIsdm9pZCAwKSxCaCh0aGlzLCJUQk9EWSIsbnVsbCksQmgodGhpcywiVEhFQUQiLG51bGwpLEJoKHRoaXMsIkNPTEdST1VQIixudWxsKSxCaCh0aGlzLCJoYXNUYWJsZUhlaWdodCIsITApLEJoKHRoaXMsImhhc1RhYmxlV2lkdGgiLCEw''@;'; put 'put ''KSxCaCh0aGlzLCJpc1RhYmxlVmlzaWJsZSIsITEpLEJoKHRoaXMsInRhYmxlT2Zmc2V0IiwwKSxCaCh0aGlzLCJob2xkZXJPZmZzZXQiLDApLHRoaXMuZG9tQmluZGluZ3M9Zix0aGlzLmlzTWFzdGVyPSJtYXN0ZXIiPT09aCx0aGlzLm5hbWU9aCx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Yyx0''@;'; put 'put ''aGlzLmZhY2FkZUdldHRlcj1hLHRoaXMud3RTZXR0aW5ncz1kLHRoaXMuaW5zdGFuY2U9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LndvdCx0aGlzLndvdD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud290LHRoaXMuVEFCTEU9Zi5yb290VGFibGUsTVkodGhpcy5UQUJMRSksdGhpcy5zcHJlYWRlcj10''@;'; put 'put ''aGlzLmNyZWF0ZVNwcmVhZGVyKHRoaXMuVEFCTEUpLHRoaXMuaGlkZXI9dGhpcy5jcmVhdGVIaWRlcih0aGlzLnNwcmVhZGVyKSx0aGlzLmhvbGRlcj10aGlzLmNyZWF0ZUhvbGRlcih0aGlzLmhpZGVyKSx0aGlzLnd0Um9vdEVsZW1lbnQ9dGhpcy5ob2xkZXIucGFyZW50Tm9kZSx0aGlzLmlz''@;'; put 'put ''TWFzdGVyJiZ0aGlzLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKSx0aGlzLmZpeFRhYmxlRG9tVHJlZSgpLHRoaXMucm93RmlsdGVyPW51bGwsdGhpcy5jb2x1bW5GaWx0ZXI9bnVsbCx0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aD0hMTt2YXIgXz10aGlzLnd0U2V0dGluZ3Mu''@;'; put 'put ''Z2V0U2V0dGluZ1B1cmUoInJvd0hlYWRlcldpZHRoIik7dGhpcy53dFNldHRpbmdzLnVwZGF0ZSgicm93SGVhZGVyV2lkdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIG0uX21vZGlmeVJvd0hlYWRlcldpZHRoKF8pfSksdGhpcy5yb3dVdGlscz1uZXcgY1hlKHRoaXMuZGF0YUFjY2Vzc09iamVjdCx0''@;'; put 'put ''aGlzLnd0U2V0dGluZ3MpLHRoaXMuY29sdW1uVXRpbHM9bmV3IG9YZSh0aGlzLmRhdGFBY2Nlc3NPYmplY3QsdGhpcy53dFNldHRpbmdzKSx0aGlzLnRhYmxlUmVuZGVyZXI9bmV3IGVYZSh7VEFCTEU6dGhpcy5UQUJMRSxUSEVBRDp0aGlzLlRIRUFELENPTEdST1VQOnRoaXMuQ09MR1JPVVAs''@;'; put 'put ''VEJPRFk6dGhpcy5UQk9EWSxyb3dVdGlsczp0aGlzLnJvd1V0aWxzLGNvbHVtblV0aWxzOnRoaXMuY29sdW1uVXRpbHMsY2VsbFJlbmRlcmVyOnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nUHVyZSgiY2VsbFJlbmRlcmVyIil9KX1yZXR1cm4gZnVuY3Rpb24gQ1hlKGwsYyxhKXtjJiZTMWUo''@;'; put 'put ''bC5wcm90b3R5cGUsYyksYSYmUzFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImlzIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5uYW1lPT09YX19LHtrZXk6ImZpeFRhYmxlRG9tVHJlZSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgYT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudDt0aGlzLlRCT0RZPXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvcigidGJvZHkiKSx0aGlzLlRCT0RZfHwodGhpcy5UQk9EWT1hLmNyZWF0ZUVsZW1lbnQoInRib2R5IiksdGhpcy5UQUJMRS5hcHBlbmRDaGlsZCh0aGlz''@;'; put 'put ''LlRCT0RZKSksdGhpcy5USEVBRD10aGlzLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoInRoZWFkIiksdGhpcy5USEVBRHx8KHRoaXMuVEhFQUQ9YS5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpLHRoaXMuVEFCTEUuaW5zZXJ0QmVmb3JlKHRoaXMuVEhFQUQsdGhpcy5UQk9EWSkpLHRoaXMuQ09MR1JPVVA9''@;'; put 'put ''dGhpcy5UQUJMRS5xdWVyeVNlbGVjdG9yKCJjb2xncm91cCIpLHRoaXMuQ09MR1JPVVB8fCh0aGlzLkNPTEdST1VQPWEuY3JlYXRlRWxlbWVudCgiY29sZ3JvdXAiKSx0aGlzLlRBQkxFLmluc2VydEJlZm9yZSh0aGlzLkNPTEdST1VQLHRoaXMuVEhFQUQpKX19LHtrZXk6ImNyZWF0ZVNwcmVh''@;'; put 'put ''ZGVyIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZCxmPWEucGFyZW50Tm9kZTtyZXR1cm4oIWZ8fGYubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8IVlvKGYsInd0SG9sZGVyIikpJiYoKGQ9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNs''@;'; put 'put ''YXNzTmFtZT0id3RTcHJlYWRlciIsZiYmZi5pbnNlcnRCZWZvcmUoZCxhKSxkLmFwcGVuZENoaWxkKGEpKSxkLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsZH19LHtrZXk6ImNyZWF0ZUhpZGVyIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZCxmPWEucGFyZW50Tm9kZTtyZXR1cm4oIWZ8fGYu''@;'; put 'put ''bm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8IVlvKGYsInd0SG9sZGVyIikpJiYoKGQ9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0id3RIaWRlciIsZiYmZi5pbnNlcnRCZWZvcmUoZCxhKSxkLmFwcGVuZENoaWxkKGEp''@;'; put 'put ''KSxkfX0se2tleToiY3JlYXRlSG9sZGVyIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZCxmPWEucGFyZW50Tm9kZTtyZXR1cm4oIWZ8fGYubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8IVlvKGYsInd0SG9sZGVyIikpJiYoKGQ9dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiZGl2IikpLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsZC5jbGFzc05hbWU9Ind0SG9sZGVyIixmJiZmLmluc2VydEJlZm9yZShkLGEpLHRoaXMuaXNNYXN0ZXImJihkLnBhcmVudE5vZGUuY2xhc3NOYW1lKz0iaHRfbWFzdGVyIGhhbmRzb250YWJsZSIsZC5wYXJlbnRO''@;'; put 'put ''b2RlLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZ1B1cmUoInJ0bE1vZGUiKT8icnRsIjoibHRyIikpLGQuYXBwZW5kQ2hpbGQoYSkpLGR9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sZj10aGlzLnd0U2V0dGluZ3MsZD10aGlzLmRhdGFBY2Nlc3NPYmplY3QsaD1kLnd0T3ZlcmxheXMsbT1kLnd0Vmlld3BvcnQsXz1mLmdldFNldHRpbmcoInRvdGFsUm93cyIpLE89Zi5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSxYPWYuZ2V0''@;'; put 'put ''U2V0dGluZygicm93SGVhZGVycyIpLGFlPVgubGVuZ3RoLHBlPWYuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLGJlPXBlLmxlbmd0aCx4ZT0hMSxWZT1hO2lmKHRoaXMuaXNNYXN0ZXImJih0aGlzLmhvbGRlck9mZnNldD1pdSh0aGlzLmhvbGRlciksVmU9bS5jcmVhdGVSZW5kZXJDYWxj''@;'; put 'put ''dWxhdG9ycyhWZSksYWUmJiFmLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IikpKXt2YXIgWmU9aC5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSxsdD10aGlzLmNvcnJlY3RIZWFkZXJXaWR0aDt0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aD0wIT09WmUsbHQhPT10''@;'; put 'put ''aGlzLmNvcnJlY3RIZWFkZXJXaWR0aCYmKFZlPSExKX1pZih0aGlzLmlzTWFzdGVyJiYoeGU9aC51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCkpLFZlKXRoaXMuaXNNYXN0ZXImJm0uY3JlYXRlVmlzaWJsZUNhbGN1bGF0b3JzKCksaCYmaC5yZWZyZXNoKCEwKTtlbHNle3RoaXMudGFibGVPZmZz''@;'; put 'put ''ZXQ9dGhpcy5pc01hc3Rlcj9pdSh0aGlzLlRBQkxFKTp0aGlzLmRhdGFBY2Nlc3NPYmplY3QucGFyZW50VGFibGVPZmZzZXQ7dmFyIGR0PV8+MD90aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKTowLGd0PU8+MD90aGlzLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKTowO3RoaXMucm93RmlsdGVy''@;'; put 'put ''PW5ldyBtS2UoZHQsXyxiZSksdGhpcy5jb2x1bW5GaWx0ZXI9bmV3IHVLZShndCxPLGFlKTt2YXIgWHQsanQ9ITA7aWYodGhpcy5pc01hc3Rlcil7dGhpcy5hbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVyKCk7dmFyIHJuPXt9O3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJi''@;'; put 'put ''ZWZvcmVEcmF3IiwhMCxybiksanQ9ITAhPT1ybi5za2lwUmVuZGVyfWlmKGp0KWlmKHRoaXMudGFibGVSZW5kZXJlci5zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKFgscGUpLCh0aGlzLmlzKFZoKXx8dGhpcy5pcyhSNCkpJiZ0aGlzLnRhYmxlUmVuZGVyZXIuc2V0SGVhZGVyQ29udGVudFJl''@;'; put 'put ''bmRlcmVycyhYLFtdKSx0aGlzLnJlc2V0T3ZlcnNpemVkUm93cygpLHRoaXMudGFibGVSZW5kZXJlci5zZXRWaWV3cG9ydFNpemUodGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKSkuc2V0RmlsdGVycyh0aGlzLnJvd0ZpbHRlcix0aGlz''@;'; put 'put ''LmNvbHVtbkZpbHRlcikucmVuZGVyKCksdGhpcy5pc01hc3RlciYmKFh0PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53b3Jrc3BhY2VXaWR0aCx0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5jb250YWluZXJXaWR0aD1udWxsLHRoaXMubWFya092ZXJzaXplZENvbHVtbkhlYWRlcnMo''@;'; put 'put ''KSksdGhpcy5hZGp1c3RDb2x1bW5IZWFkZXJIZWlnaHRzKCksKHRoaXMuaXNNYXN0ZXJ8fHRoaXMuaXMoVmgpKSYmdGhpcy5tYXJrT3ZlcnNpemVkUm93cygpLHRoaXMuaXNNYXN0ZXIpe3RoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycygp''@;'; put 'put ''LHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dE92ZXJsYXlzLnJlZnJlc2goITEpLHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dE92ZXJsYXlzLmFwcGx5VG9ET00oKTt2YXIgeW49U2wodGhpcy5oaWRlciksUW49U2wodGhpcy5UQUJMRSk7MCE9PXluJiZRbiE9PXluJiYodGhpcy5jb2x1bW5VdGls''@;'; put 'put ''cy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLnRhYmxlUmVuZGVyZXIucmVuZGVyZXIuY29sR3JvdXAucmVuZGVyKCkpLFh0IT09dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQuZ2V0V29ya3NwYWNlV2lkdGgoKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0LmNvbnRh''@;'; put 'put ''aW5lcldpZHRoPW51bGwsdGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLnRhYmxlUmVuZGVyZXIucmVuZGVyZXIuY29sR3JvdXAucmVuZGVyKCkpLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkRyYXciLCEwKX1lbHNlIHRoaXMuaXMoVmgpJiZ0aGlzLmRhdGFB''@;'; put 'put ''Y2Nlc3NPYmplY3QuY2xvbmVTb3VyY2Uud3RPdmVybGF5cy5hZGp1c3RFbGVtZW50c1NpemUoKX12YXIgT3I9ITE7cmV0dXJuIHRoaXMuaXNNYXN0ZXImJihPcj1oLnRvcE92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCksaC5ib3R0b21PdmVybGF5LmNsb25lJiYoT3I9aC5ib3R0b21PdmVy''@;'; put 'put ''bGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpfHxPciksT3I9aC5pbmxpbmVTdGFydE92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCl8fE9yLGgudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5JiZoLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKSxoLmJv''@;'; put 'put ''dHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmaC5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJmguYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpKSxPcj8oaC5yZWZyZXNoQWxsKCksaC5hZGp1c3RFbGVtZW50c1NpemUo''@;'; put 'put ''KSk6dGhpcy5yZWZyZXNoU2VsZWN0aW9ucyhWZSkseGUmJmguc3luY1Njcm9sbFdpdGhNYXN0ZXIoKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3QuZHJhd249ITAsdGhpc319LHtrZXk6Im1hcmtJZk92ZXJzaXplZENvbHVtbkhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBtLF8sTyxm''@;'; put 'put ''PXRoaXMuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoYSksZD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aCxoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IiksWD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0''@;'; put 'put ''dGluZygiY29sdW1uSGVhZGVySGVpZ2h0Iil8fFtdO2Q7KW09dGhpcy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoZC09MSksKF89dGhpcy5nZXRDb2x1bW5IZWFkZXIoZixkKSkmJihPPWQzKF8pLCghbSYmaDxPfHxtPE8pJiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNp''@;'; put 'put ''emVkQ29sdW1uSGVhZGVyc1tkXT1PKSxBcnJheS5pc0FycmF5KFgpP251bGwhPVhbZF0mJih0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW2RdPVhbZF0pOmlzTmFOKFgpfHwodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3Zl''@;'; put 'put ''cnNpemVkQ29sdW1uSGVhZGVyc1tkXT1YKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW2RdPChYW2RdfHxYKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbZF09WFtkXXx8WCkp''@;'; put 'put ''fX0se2tleToiYWRqdXN0Q29sdW1uSGVhZGVySGVpZ2h0cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGY9dGhpcy5USEVBRC5jaGlsZE5vZGVzLGQ9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVycyxtPTAsXz10aGlzLnd0U2V0dGluZ3Mu''@;'; put 'put ''Z2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDttPF87bSsrKWlmKGRbbV0pe2lmKCFmW21dfHwwPT09ZlttXS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm47ZlttXS5jaGlsZE5vZGVzWzBdLnN0eWxlLmhlaWdodD0iIi5jb25jYXQoZFttXSwicHgiKX19fSx7a2V5OiJyZXNldE92''@;'; put 'put ''ZXJzaXplZFJvd3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy53dFNldHRpbmdzLGY9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQ7aWYoKHRoaXMuaXNNYXN0ZXJ8fHRoaXMuaXMoVmgpKSYmIWEuZ2V0U2V0dGluZygiZXh0ZXJuYWxSb3dDYWxjdWxhdG9yIikpZm9yKHZh''@;'; put 'put ''ciBkPXRoaXMuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKSxoPTA7aDxkO2grKyl7dmFyIG09dGhpcy5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShoKTtmLm92ZXJzaXplZFJvd3MmJmYub3ZlcnNpemVkUm93c1ttXSYmKGYub3ZlcnNpemVkUm93c1ttXT12b2lkIDApfX19LHtrZXk6InJlbW92''@;'; put 'put ''ZUNsYXNzRnJvbUNlbGxzIix2YWx1ZTpmdW5jdGlvbihhKXtmb3IodmFyIGY9dGhpcy5UQUJMRS5xdWVyeVNlbGVjdG9yQWxsKCIuIi5jb25jYXQoYSkpLGQ9MCxoPWYubGVuZ3RoO2Q8aDtkKyspSm8oZltkXSxhKX19LHtrZXk6InJlZnJlc2hTZWxlY3Rpb25zIix2YWx1ZTpmdW5jdGlvbihh''@;'; put 'put ''KXt2YXIgZj10aGlzLnd0U2V0dGluZ3MsZD10aGlzLmRhdGFBY2Nlc3NPYmplY3Quc2VsZWN0aW9ucztpZihkKXt2YXIgaD1BcnJheS5mcm9tKGQpLG09aC5sZW5ndGg7aWYoYSl7Zm9yKHZhciBfPVtdLE89MDtPPG07TysrKXtmb3IodmFyIFg9aFtPXS5zZXR0aW5ncyxhZT1YLmhpZ2hsaWdo''@;'; put 'put ''dEhlYWRlckNsYXNzTmFtZSxwZT1YLmhpZ2hsaWdodFJvd0NsYXNzTmFtZSxiZT1YLmhpZ2hsaWdodENvbHVtbkNsYXNzTmFtZSx4ZT1oW09dLmNsYXNzTmFtZXMsVmU9eGUubGVuZ3RoLFplPTA7WmU8VmU7WmUrKylfLmluY2x1ZGVzKHhlW1plXSl8fF8ucHVzaCh4ZVtaZV0pO2FlJiYhXy5p''@;'; put 'put ''bmNsdWRlcyhhZSkmJl8ucHVzaChhZSkscGUmJiFfLmluY2x1ZGVzKHBlKSYmXy5wdXNoKHBlKSxiZSYmIV8uaW5jbHVkZXMoYmUpJiZfLnB1c2goYmUpfXZhciBsdD1mLmdldFNldHRpbmcoIm9uQmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXMiKTtpZihBcnJheS5pc0FycmF5KGx0KSlmb3Io''@;'; put 'put ''dmFyIGR0PTA7ZHQ8bHQubGVuZ3RoO2R0KyspXy5wdXNoKGx0W2R0XSk7Zm9yKHZhciBndD1fLmxlbmd0aCxqdD0wO2p0PGd0O2p0KyspdGhpcy5yZW1vdmVDbGFzc0Zyb21DZWxscyhfW2p0XSl9Zm9yKHZhciBybj0wO3JuPG07cm4rKyloW3JuXS5kcmF3KHRoaXMuZmFjYWRlR2V0dGVyKCks''@;'; put 'put ''YSl9fX0se2tleToiZ2V0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9YS5yb3csZD1hLmNvbCxoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbk1vZGlmeUdldENlbGxDb29yZHMiLGYsZCk7aWYoaCYmQXJyYXkuaXNBcnJheShoKSl7dmFyIG09ZnVuY3Rpb24gdlhlKGwsYyl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIF9YZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gYlhlKGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIg''@;'; put 'put ''ZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNo''@;'; put 'put ''KGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxDMWUobCxjKXx8ZnVuY3Rpb24geVhlKCl7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oaCwyKTtmPW1bMF0sZD1t''@;'; put 'put ''WzFdfWlmKHRoaXMuaXNSb3dCZWZvcmVSZW5kZXJlZFJvd3MoZikpcmV0dXJuLTE7aWYodGhpcy5pc1Jvd0FmdGVyUmVuZGVyZWRSb3dzKGYpKXJldHVybi0yO2lmKHRoaXMuaXNDb2x1bW5CZWZvcmVSZW5kZXJlZENvbHVtbnMoZCkpcmV0dXJuLTM7aWYodGhpcy5pc0NvbHVtbkFmdGVyUmVu''@;'; put 'put ''ZGVyZWRDb2x1bW5zKGQpKXJldHVybi00O3ZhciBfPXRoaXMuZ2V0Um93KGYpO2lmKCFfJiZmPj0wKXRocm93IG5ldyBFcnJvcigiVFIgd2FzIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIGJ1dCBpcyBub3QiKTt2YXIgTz1fLmNoaWxkTm9kZXNbdGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29s''@;'; put 'put ''dW1uVG9WaXNpYmxlUm93SGVhZGVkQ29sdW1uKGQpXTtpZighTyYmZD49MCl0aHJvdyBuZXcgRXJyb3IoIlREIG9yIFRIIHdhcyBleHBlY3RlZCB0byBiZSByZW5kZXJlZCBidXQgaXMgbm90Iik7cmV0dXJuIE99fSx7a2V5OiJnZXRSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBoLG0sZj1u''@;'; put 'put ''dWxsLGQ9bnVsbDtyZXR1cm4gYTwwPyhmPW51bGw9PT0oaD10aGlzLnJvd0ZpbHRlcil8fHZvaWQgMD09PWg/dm9pZCAwOmguc291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGEpLGQ9dGhpcy5USEVBRCk6KGY9bnVsbD09PShtPXRoaXMucm93RmlsdGVyKXx8dm9pZCAwPT09bT92b2lk''@;'; put 'put ''IDA6bS5zb3VyY2VUb1JlbmRlcmVkKGEpLGQ9dGhpcy5UQk9EWSksdm9pZCAwIT09ZiYmdm9pZCAwIT09ZCYmIShkLmNoaWxkTm9kZXMubGVuZ3RoPGYrMSkmJmQuY2hpbGROb2Rlc1tmXX19LHtrZXk6ImdldENvbHVtbkhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5USEVB''@;'; put 'put ''RC5jaGlsZE5vZGVzW2FyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowXTtyZXR1cm4gZD8uY2hpbGROb2Rlc1t0aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4oYSldfX0se2tleToiZ2V0Q29s''@;'; put 'put ''dW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9W10sZD10aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4oYSk7cmV0dXJuIHRoaXMuVEhFQUQuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3ZhciBtPWguY2hpbGROb2Rl''@;'; put 'put ''c1tkXTttJiZmLnB1c2gobSl9KSxmfX0se2tleToiZ2V0Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtpZigwIT09dGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9W''@;'; put 'put ''aXNpYmxlUm93SGVhZGVkQ29sdW1uKDApJiYhKGY+PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoKSl7dmFyIGg9dGhpcy5UQk9EWS5jaGlsZE5vZGVzW3RoaXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoYSldO3JldHVybiBoPy5jaGlsZE5vZGVz''@;'; put 'put ''W2ZdfX19LHtrZXk6ImdldFJvd0hlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKDA9PT10aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4oMCkpcmV0dXJuW107Zm9yKHZhciBmPVtdLGQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJv''@;'; put 'put ''d0hlYWRlcnMiKS5sZW5ndGgsaD0wO2g8ZDtoKyspe3ZhciBtPXRoaXMuVEJPRFkuY2hpbGROb2Rlc1t0aGlzLnJvd0ZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGEpXSxfPW0/LmNoaWxkTm9kZXNbaF07XyYmZi5wdXNoKF8pfXJldHVybiBmfX0se2tleToiZ2V0Q29vcmRzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhKXt2YXIgZj1hO2lmKCJURCIhPT1mLm5vZGVOYW1lJiYiVEgiIT09Zi5ub2RlTmFtZSYmKGY9eDQoZixbIlREIiwiVEgiXSkpLG51bGw9PT1mKXJldHVybiBudWxsO3ZhciBkPWYucGFyZW50Tm9kZSxoPWQucGFyZW50Tm9kZSxtPW0wZShkKSxfPWYuY2VsbEluZGV4O3JldHVybiBU''@;'; put 'put ''NChTNSxmLHRoaXMud3RSb290RWxlbWVudCl8fFQ0KHc1LGYsdGhpcy53dFJvb3RFbGVtZW50KT8iVEhFQUQiPT09aC5ub2RlTmFtZSYmKG0tPWguY2hpbGROb2Rlcy5sZW5ndGgpOm09VDQoUjQsZix0aGlzLnd0Um9vdEVsZW1lbnQpfHxUNChWaCxmLHRoaXMud3RSb290RWxlbWVudCk/dGhp''@;'; put 'put ''cy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLWguY2hpbGROb2Rlcy5sZW5ndGgrbTpoPT09dGhpcy5USEVBRD90aGlzLnJvd0ZpbHRlci52aXNpYmxlQ29sSGVhZGVkUm93VG9Tb3VyY2VSb3cobSk6dGhpcy5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShtKSxfPVQ0KFM1''@;'; put 'put ''LGYsdGhpcy53dFJvb3RFbGVtZW50KXx8VDQoQzUsZix0aGlzLnd0Um9vdEVsZW1lbnQpfHxUNChSNCxmLHRoaXMud3RSb290RWxlbWVudCk/dGhpcy5jb2x1bW5GaWx0ZXIub2Zmc2V0dGVkVEgoXyk6dGhpcy5jb2x1bW5GaWx0ZXIudmlzaWJsZVJvd0hlYWRlZENvbHVtblRvU291cmNlQ29s''@;'; put 'put ''dW1uKF8pLHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHMobSxfKX19LHtrZXk6Im1hcmtPdmVyc2l6ZWRSb3dzIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZXh0ZXJuYWxSb3dDYWxjdWxhdG9yIikpe3ZhciBoLG0sXyxPLFgsYT10aGlzLlRCT0RZ''@;'; put 'put ''LmNoaWxkTm9kZXMubGVuZ3RoO2lmKGEqdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSE9ZDModGhpcy5UQk9EWSktMXx8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpKWZvcig7YTspXz10aGlzLnJvd0ZpbHRlci5yZW5k''@;'; put 'put ''ZXJlZFRvU291cmNlKGEtPTEpLGg9dGhpcy5nZXRSb3dIZWlnaHQoXyksbT0oWD0oTz10aGlzLmdldFRyRm9yUm93KF8pKS5xdWVyeVNlbGVjdG9yKCJ0aCIpKT9kMyhYKTpkMyhPKS0xLCghaCYmdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKTxtfHxoPG0p''@;'; put 'put ''JiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkUm93c1tfXT1tKz0xKX19fSx7a2V5OiJnZXRUckZvclJvdyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuVEJPRFkuY2hpbGROb2Rlc1t0aGlzLnJvd0ZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGEpXX19''@;'; put 'put ''LHtrZXk6ImlzQ29sdW1uSGVhZGVyUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKGE+PTApcmV0dXJuITE7dmFyIGQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGg7cmV0dXJuIE1hdGguYWJzKGEpPD1kfX0se2tleToiaXNSb3dIZWFkZXJSZW5k''@;'; put 'put ''ZXJlZCIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoYT49MClyZXR1cm4hMTt2YXIgZD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDtyZXR1cm4gTWF0aC5hYnMoYSk8PWR9fSx7a2V5OiJpc1Jvd0JlZm9yZVJlbmRlcmVkUm93cyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oYSl7dmFyIGY9dGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCk7cmV0dXJuIGE8MCYmZjw9MD8hdGhpcy5pc1Jvd0hlYWRlclJlbmRlcmVkKGEpOmE8Zn19LHtrZXk6ImlzUm93QWZ0ZXJSZW5kZXJlZFJvd3MiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhPnRoaXMuZ2V0TGFzdFJlbmRl''@;'; put 'put ''cmVkUm93KCl9fSx7a2V5OiJpc0NvbHVtbkJlZm9yZVJlbmRlcmVkQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCk7cmV0dXJuIGE8MCYmZjw9MD8hdGhpcy5pc0NvbHVtbkhlYWRlclJlbmRlcmVkKGEpOmE8Zn19LHtrZXk6Imlz''@;'; put 'put ''Q29sdW1uQWZ0ZXJSZW5kZXJlZENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbHVtbkZpbHRlciYmYT50aGlzLmdldExhc3RSZW5kZXJlZENvbHVtbigpfX0se2tleToiaXNDb2x1bW5BZnRlclZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''b2x1bW5GaWx0ZXImJmE+dGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpfX0se2tleToiaXNSb3dBZnRlclZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3dGaWx0ZXImJmE+dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpfX0se2tleToiaXNDb2x1bW5CZWZvcmVWaWV3''@;'; put 'put ''cG9ydCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29sdW1uRmlsdGVyJiZ0aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGEpPDAmJmE+PTB9fSx7a2V5OiJpc0xhc3RSb3dGdWxseVZpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFZp''@;'; put 'put ''c2libGVSb3coKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9fSx7a2V5OiJpc0xhc3RDb2x1bW5GdWxseVZpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9fSx7a2V5OiJh''@;'; put 'put ''bGxSb3dzSW5WaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpPT09dGhpcy5nZXRWaXNpYmxlUm93c0NvdW50KCl9fSx7a2V5OiJhbGxDb2x1bW5zSW5WaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpPT09dGhpcy5nZXRWaXNpYmxlQ29sdW1uc0NvdW50KCl9fSx7a2V5OiJnZXRSb3dIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJvd1V0aWxzLmdldEhlaWdodChhKX19LHtrZXk6ImdldENvbHVt''@;'; put 'put ''bkhlYWRlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29sdW1uVXRpbHMuZ2V0SGVhZGVySGVpZ2h0KGEpfX0se2tleToiZ2V0Q29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbHVtblV0aWxzLmdldFdpZHRoKGEpfX0se2tleToiZ2V0''@;'; put 'put ''U3RyZXRjaGVkQ29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbHVtblV0aWxzLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGEpfX0se2tleToiaGFzRGVmaW5lZFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzVGFibGVIZWlnaHQmJnRoaXMu''@;'; put 'put ''aGFzVGFibGVXaWR0aH19LHtrZXk6ImdldFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTbCh0aGlzLlRBQkxFKX19LHtrZXk6ImdldEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gY3ModGhpcy5UQUJMRSl9fSx7a2V5OiJnZXRUb3RhbFdpZHRoIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBhPVNsKHRoaXMuaGlkZXIpO3JldHVybiAwIT09YT9hOnRoaXMuZ2V0V2lkdGgoKX19LHtrZXk6ImdldFRvdGFsSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWNzKHRoaXMuaGlkZXIpO3JldHVybiAwIT09YT9hOnRoaXMuZ2V0SGVpZ2h0KCl9fSx7a2V5OiJpc1Zpc2li''@;'; put 'put ''bGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE43KHRoaXMuVEFCTEUpfX0se2tleToiX21vZGlmeVJvd0hlYWRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1QbChhKT9hKCk6bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheShmKT8oZj1mdW5jdGlvbiBoWGUobCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIGdYZShsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsVyhsKX0obCl8fGZ1bmN0aW9uIG1YZShsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxD''@;'; put 'put ''MWUobCl8fGZ1bmN0aW9uIHBYZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''KCkgbWV0aG9kLiIpfSgpfShmKSlbZi5sZW5ndGgtMV09dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKGZbZi5sZW5ndGgtMV0pOmY9dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKGYpLGZ9fSx7a2V5OiJfY29ycmVjdFJvd0hlYWRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIg''@;'; put 'put ''Zj1hO3JldHVybiJudW1iZXIiIT10eXBlb2YgYSYmKGY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpKSx0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aCYmKGYrPTEpLGZ9fV0pLGx9KCk7Y29uc3QgWDc9TVhlO3ZhciBrMWU9e2dldEZpcnN0UmVuZGVyZWRS''@;'; put 'put ''b3c6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8tMTowfSxnZXRGaXJzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCl9LGdldExhc3RSZW5kZXJlZFJvdzpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCktMX0sZ2V0TGFzdFZpc2libGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0UmVuZGVyZWRSb3dzQ291bnQ6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGlu''@;'; put 'put ''ZygidG90YWxSb3dzIik7cmV0dXJuIE1hdGgubWluKHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSxjKX0sZ2V0VmlzaWJsZVJvd3NDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCl9fTtIaChrMWUsIk1JWElOX05BTUUi''@;'; put 'put ''LCJzdGlja3lSb3dzVG9wIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IEUxZT1rMWU7dmFyIHgxZT17Z2V0Rmlyc3RSZW5kZXJlZENvbHVtbjpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblJlbmRlcmVkO3JldHVybiBudWxsPT09''@;'; put 'put ''Yz8tMTpjfSxnZXRGaXJzdFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmRhdGFBY2Nlc3NPYmplY3Quc3RhcnRDb2x1bW5WaXNpYmxlO3JldHVybiBudWxsPT09Yz8tMTpjfSxnZXRMYXN0UmVuZGVyZWRDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmRhdGFBY2Nlc3NP''@;'; put 'put ''YmplY3QuZW5kQ29sdW1uUmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1jPy0xOmN9LGdldExhc3RWaXNpYmxlQ29sdW1uOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZENvbHVtblZpc2libGU7cmV0dXJuIG51bGw9PT1jPy0xOmN9LGdldFJlbmRlcmVkQ29sdW1uc0Nv''@;'; put 'put ''dW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudENvbHVtbnNSZW5kZXJlZH0sZ2V0VmlzaWJsZUNvbHVtbnNDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRDb2x1bW5zVmlzaWJsZX19O0hoKHgxZSwiTUlYSU5f''@;'; put 'put ''TkFNRSIsImNhbGN1bGF0ZWRDb2x1bW5zIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IHNXPXgxZTtmdW5jdGlvbiBKNyhsKXtyZXR1cm4oSjc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7''@;'; put 'put ''cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBBMWUobCxjKXtmb3IodmFyIGE9MDth''@;'; put 'put ''PGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEFYZShmLmtleSksZil9fWZ1bmN0aW9uIEFYZShsKXt2YXIgYz1m''@;'; put 'put ''dW5jdGlvbiBUWGUobCxjKXtpZigib2JqZWN0IiE9PUo3KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUo3KGYpKXJldHVybiBmO3Rocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1KNyhjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB1VyhsLGMpe3Jl''@;'; put 'put ''dHVybih1Vz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIHBSKGwpe3JldHVybihwUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3Rv''@;'; put 'put ''dHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBjVz1mdW5jdGlvbihsKXshZnVuY3Rpb24gRFhlKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnVXKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gSVhlKGwpe3ZhciBjPWZ1bmN0aW9uIFBYZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJl''@;'; put 'put ''dHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgZCxmPXBSKGwpO2lmKGMpe3ZhciBoPXBSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBSWGUobCxjKXtpZihjJiYoIm9iamVjdCI9PT1KNyhj''@;'; put 'put ''KXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gTFhlKGwpe2lmKHZvaWQgMD09PWwp''@;'; put 'put ''dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYsZCxoLG0pe3JldHVybiBmdW5jdGlvbiBPWGUobCxjKXtpZighKGwg''@;'; put 'put ''aW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmNhbGwodGhpcyxmLGQsaCxtLHc1KX1yZXR1cm4gZnVuY3Rpb24geFhlKGwsYyxhKXtyZXR1cm4gYyYmQTFlKGwucHJvdG90eXBlLGMpLGEmJkEx''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGx9KGEpfShYNyk7VGwoY1csRTFlKSxUbChjVyxzVyk7Y29uc3QgRlhlPWNXO2Z1bmN0aW9uIHZNKGwpe3JldHVybih2TT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30p''@;'; put 'put ''KGwpfWZ1bmN0aW9uIFQxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsTzFl''@;'; put 'put ''KGYua2V5KSxmKX19ZnVuY3Rpb24gZlcobCxjLGEpe3JldHVybihjPU8xZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBPMWUobCl7dmFyIGM9ZnVu''@;'; put 'put ''Y3Rpb24gVlhlKGwsYyl7aWYoIm9iamVjdCIhPT12TShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT12TShmKSlyZXR1cm4gZjt0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dk0oYyk/YzpTdHJpbmcoYyl9dmFyIEJYZT1mdW5jdGlvbigpe2Z1''@;'; put 'put ''bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIEhYZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxmVyh0aGlzLCJkYXRhQWNjZXNzT2JqZWN0Iix2b2lkIDApLGZXKHRoaXMsImxh''@;'; put 'put ''c3RTY3JvbGxlZENvbHVtblBvcyIsLTEpLGZXKHRoaXMsImxhc3RTY3JvbGxlZFJvd1BvcyIsLTEpLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1jfXJldHVybiBmdW5jdGlvbiBOWGUobCxjLGEpe2MmJlQxZShsLnByb3RvdHlwZSxjKSxhJiZUMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgsbSl7dmFyIF89dGhpcy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShhLmNvbCxkLG0pLE89dGhpcy5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoYS5y''@;'; put 'put ''b3csZixoKTtyZXR1cm4gX3x8T319LHtrZXk6InNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LF89aC50b3RhbENvbHVtbnM7aWYoIWguZHJhd258fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDB8fGE+''@;'; put 'put ''XylyZXR1cm4hMTt2YXIgTz10aGlzLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpLFg9dGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpLGFlPXZvaWQgMD09PWYmJnZvaWQgMD09PWQscGU9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LHhlPXBlLmlubGluZVN0YXJ0T3ZlcmxheTtpZihhZSYmYTxwZS5m''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydClyZXR1cm4hMTt2YXIgVmU9ITE7cmV0dXJuLTE9PT1PP1ZlPXhlLnNjcm9sbFRvKGEsYWU/YT50aGlzLmxhc3RTY3JvbGxlZENvbHVtblBvczpmKTooYWUmJihhPE98fGE+WCl8fCFhZSkmJihWZT14ZS5zY3JvbGxUbyhhLGFlP2E+WDpmKSksVmUmJih0aGlzLmxh''@;'; put 'put ''c3RTY3JvbGxlZENvbHVtblBvcz1hKSxWZX19LHtrZXk6InNjcm9sbFZpZXdwb3J0VmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXMuZGF0YUFjY2Vzc09iamVjdCxfPWgudG90YWxSb3dzO2lmKCFoLmRyYXdufHwhTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxh''@;'; put 'put ''Pl8pcmV0dXJuITE7dmFyIE89dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSxYPXRoaXMuZ2V0TGFzdFZpc2libGVSb3coKSxhZT12b2lkIDA9PT1mJiZ2b2lkIDA9PT1kLHBlPXRoaXMuZGF0YUFjY2Vzc09iamVjdCxWZT1wZS50b3BPdmVybGF5O2lmKGFlJiYoYTxwZS5maXhlZFJvd3NUb3B8''@;'; put 'put ''fGE+Xy1wZS5maXhlZFJvd3NCb3R0b20tMSkpcmV0dXJuITE7dmFyIFplPSExO3JldHVybi0xPT09Tz9aZT1WZS5zY3JvbGxUbyhhLGFlP2E+dGhpcy5sYXN0U2Nyb2xsZWRSb3dQb3M6ZCk6KGFlJiYoYTxPfHxhPlgpfHwhYWUpJiYoWmU9VmUuc2Nyb2xsVG8oYSxhZT9hPlg6ZCkpLFplJiYo''@;'; put 'put ''dGhpcy5sYXN0U2Nyb2xsZWRSb3dQb3M9YSksWmV9fSx7a2V5OiJnZXRGaXJzdFZpc2libGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LGY9YS50b3BPdmVybGF5LGQ9YS53dFRhYmxlLGg9YS53dFZpZXdwb3J0LG09YS50b3RhbFJvd3MsXz1hLmZp''@;'; put 'put ''eGVkUm93c1RvcCxPPWEucm9vdFdpbmRvdyxYPWQuZ2V0Rmlyc3RWaXNpYmxlUm93KCk7aWYoZi5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PU8pe3ZhciBhZT1pdShkLnd0Um9vdEVsZW1lbnQpLHBlPWQzKGQuaGlkZXIpLGJlPWQzKE8pLHhlPVVTKE8sTyk7aWYoYWUudG9wK3BlLWJl''@;'; put 'put ''PD14ZSl7dmFyIFZlPWguZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk7VmUrPWYuc3VtQ2VsbFNpemVzKDAsXyk7Zm9yKHZhciBaZT1tO1plPjA7WmUtLSlpZihWZSs9Zi5zdW1DZWxsU2l6ZXMoWmUtMSxaZSksYWUudG9wK3BlLVZlPD14ZSl7WD1aZTticmVha319fXJldHVybiBYfX0se2tleToi''@;'; put 'put ''Z2V0TGFzdFZpc2libGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LGY9YS50b3BPdmVybGF5LGQ9YS53dFRhYmxlLGg9YS53dFZpZXdwb3J0LG09YS50b3RhbFJvd3MsXz1hLnJvb3RXaW5kb3csTz1kLmdldExhc3RWaXNpYmxlUm93KCk7aWYoZi5t''@;'; put 'put ''YWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PV8pe3ZhciBYPWl1KGQud3RSb290RWxlbWVudCksYWU9VVMoXyxfKTtpZihYLnRvcD5hZSlmb3IodmFyIHBlPWQzKF8pLGJlPWguZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCkseGU9MTt4ZTw9bTt4ZSsrKWlmKGJlKz1mLnN1bUNlbGxTaXplcyh4''@;'; put 'put ''ZS0xLHhlKSxYLnRvcCtiZS1hZT49cGUpe089eGUtMjticmVha319cmV0dXJuIE99fSx7a2V5OiJnZXRGaXJzdFZpc2libGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LGY9YS5pbmxpbmVTdGFydE92ZXJsYXksZD1hLnd0VGFibGUsaD1hLnd0''@;'; put 'put ''Vmlld3BvcnQsbT1hLnRvdGFsQ29sdW1ucyxfPWEucm9vdFdpbmRvdyxPPWQuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCk7aWYoZi5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PV8pe3ZhciBYPWl1KGQud3RSb290RWxlbWVudCksYWU9WVMoZC5oaWRlcikscGU9WVMoXyksYmU9TWF0aC5h''@;'; put 'put ''YnMoS0koXyxfKSk7aWYoWC5sZWZ0K2FlLXBlPD1iZSlmb3IodmFyIHhlPWguZ2V0Um93SGVhZGVyV2lkdGgoKSxWZT1tO1ZlPjA7VmUtLSlpZih4ZSs9Zi5zdW1DZWxsU2l6ZXMoVmUtMSxWZSksWC5sZWZ0K2FlLXhlPD1iZSl7Tz1WZTticmVha319cmV0dXJuIE99fSx7a2V5OiJnZXRMYXN0''@;'; put 'put ''VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGFBY2Nlc3NPYmplY3QsZj1hLnd0U2V0dGluZ3MsZD1hLmlubGluZVN0YXJ0T3ZlcmxheSxoPWEud3RUYWJsZSxtPWEud3RWaWV3cG9ydCxfPWEudG90YWxDb2x1bW5zLE89YS5yb290V2luZG93LFg9aC5nZXRM''@;'; put 'put ''YXN0VmlzaWJsZUNvbHVtbigpO2lmKGQubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT1PKXt2YXIgcGU9bnVsbDtpZihmLmdldFNldHRpbmcoInJ0bE1vZGUiKSl7dmFyIGJlPWguVEFCTEUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cGU9TWF0aC5hYnMoYmUucmlnaHQtdGhpcy5kYXRh''@;'; put 'put ''QWNjZXNzT2JqZWN0LnJvb3RXaW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoKX1lbHNlIHBlPWl1KGgud3RSb290RWxlbWVudCkubGVmdDt2YXIgbHQ9TWF0aC5hYnMoS0koTyxPKSk7aWYocGU+bHQpZm9yKHZhciBkdD1ZUyhPKSxndD1tLmdldFJvd0hlYWRlcldp''@;'; put 'put ''ZHRoKCksanQ9MTtqdDw9XztqdCsrKWlmKHBlKyhndCs9ZC5zdW1DZWxsU2l6ZXMoanQtMSxqdCkpLWx0Pj1kdCl7WD1qdC0yO2JyZWFrfX1yZXR1cm4gWH19XSksbH0oKTtjb25zdCBqWGU9QlhlO2Z1bmN0aW9uIHlNKGwpe3JldHVybih5TT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi''@;'; put 'put ''c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0''@;'; put 'put ''eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEQxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsUjFlKGYua2V5KSxmKX19ZnVuY3Rpb24gSTFlKGwsYyxhKXtyZXR1cm4oYz1SMWUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gUjFlKGwp''@;'; put 'put ''e3ZhciBjPWZ1bmN0aW9uIFdYZShsLGMpe2lmKCJvYmplY3QiIT09eU0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09eU0oZikpcmV0dXJuIGY7''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXlNKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGJN''@;'; put 'put ''KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIEdYZShsLGMpe3JldHVybiBjLmdldD9jLmdldC5jYWxsKGwpOmMudmFsdWV9KGwsTDFlKGwsYywiZ2V0IikpfWZ1bmN0aW9uIEwxZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRl''@;'; put 'put ''IGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIgTTU9bmV3IFdlYWtNYXAscVhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07KGZ1bmN0aW9uIHpY''@;'; put 'put ''ZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxJMWUodGhpcywicm93IixudWxsKSxJMWUodGhpcywiY29sIixudWxsKSxmdW5jdGlvbiBaWGUobCxjLGEpeyhmdW5jdGlv''@;'; put 'put ''biBZWGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfSh0aGlzLE01LHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLGZ1bmN0''@;'; put 'put ''aW9uICRYZShsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uIEtYZShsLGMsYSl7aWYoYy5zZXQpYy5zZXQuY2FsbChsLGEpO2Vsc2V7aWYoIWMud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2MudmFsdWU9YX19KGws''@;'; put 'put ''TDFlKGwsYywic2V0IiksYSksYX0odGhpcyxNNSxmKSx0eXBlb2YgYzwidSImJnR5cGVvZiBhPCJ1IiYmKHRoaXMucm93PWMsdGhpcy5jb2w9YSl9cmV0dXJuIGZ1bmN0aW9uIFVYZShsLGMsYSl7YyYmRDFlKGwucHJvdG90eXBlLGMpLGEmJkQxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJpc1ZhbGlkIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4hKHRoaXMucm93PDB8fHRoaXMuY29sPDB8fHRoaXMucm93Pj1hLmdldFNldHRpbmcoInRvdGFsUm93cyIpfHx0aGlzLmNvbD49YS5nZXRTZXR0aW5nKCJ0b3Rh''@;'; put 'put ''bENvbHVtbnMiKSl9fSx7a2V5OiJpc0VxdWFsIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PXRoaXN8fHRoaXMucm93PT09YS5yb3cmJnRoaXMuY29sPT09YS5jb2x9fSx7a2V5OiJpc1NvdXRoRWFzdE9mIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3c+PWEucm93JiYo''@;'; put 'put ''Yk0odGhpcyxNNSk/dGhpcy5jb2w8PWEuY29sOnRoaXMuY29sPj1hLmNvbCl9fSx7a2V5OiJpc05vcnRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3c8PWEucm93JiYoYk0odGhpcyxNNSk/dGhpcy5jb2w+PWEuY29sOnRoaXMuY29sPD1hLmNvbCl9fSx7a2V5OiJp''@;'; put 'put ''c1NvdXRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3c+PWEucm93JiYoYk0odGhpcyxNNSk/dGhpcy5jb2w+PWEuY29sOnRoaXMuY29sPD1hLmNvbCl9fSx7a2V5OiJpc05vcnRoRWFzdE9mIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3c8PWEucm93''@;'; put 'put ''JiYoYk0odGhpcyxNNSk/dGhpcy5jb2w8PWEuY29sOnRoaXMuY29sPj1hLmNvbCl9fSx7a2V5OiJub3JtYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93PW51bGw9PT10aGlzLnJvdz90aGlzLnJvdzpNYXRoLm1heCh0aGlzLnJvdywwKSx0aGlzLmNvbD1udWxsPT09dGhp''@;'; put 'put ''cy5jb2w/dGhpcy5jb2w6TWF0aC5tYXgodGhpcy5jb2wsMCksdGhpc319LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgbCh0aGlzLnJvdyx0aGlzLmNvbCxiTSh0aGlzLE01KSl9fSx7a2V5OiJ0b09iamVjdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57cm93OnRo''@;'; put 'put ''aXMucm93LGNvbDp0aGlzLmNvbH19fV0pLGx9KCk7Y29uc3QgbVI9cVhlO2Z1bmN0aW9uIF9NKGwpe3JldHVybihfTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9u''@;'; put 'put ''KGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFAxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2Fd''@;'; put 'put ''O2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsRjFlKGYua2V5KSxmKX19ZnVuY3Rpb24gZFcobCxjLGEpe3JldHVybihjPUYxZShjKSlpbiBsP09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBGMWUobCl7dmFyIGM9ZnVuY3Rpb24gdEplKGwsYyl7aWYoIm9iamVjdCIhPT1fTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9''@;'; put 'put ''bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1fTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJl''@;'; put 'put ''dHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09X00oYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gamgobCxjKXtyZXR1cm4gZnVuY3Rpb24gbkplKGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxI''@;'; put 'put ''MWUobCxjLCJnZXQiKSl9ZnVuY3Rpb24gSDFlKGwsYyxhKXtpZighYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXZhciBIZj1uZXcgV2Vha01hcCxvSmU9ZnVuY3Rp''@;'; put 'put ''b24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpjLGY9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmMsZD1hcmd1bWVudHMubGVuZ3RoPjMmJnZv''@;'; put 'put ''aWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdOyhmdW5jdGlvbiBYWGUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksZFcodGhpcywiaGlnaGxpZ2h0IixudWxs''@;'; put 'put ''KSxkVyh0aGlzLCJmcm9tIixudWxsKSxkVyh0aGlzLCJ0byIsbnVsbCksZnVuY3Rpb24gUVhlKGwsYyxhKXsoZnVuY3Rpb24gZUplKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBv''@;'; put 'put ''biBhbiBvYmplY3QiKX0pKGwsYyksYy5zZXQobCxhKX0odGhpcyxIZix7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSx0aGlzLmhpZ2hsaWdodD1jLmNsb25lKCkubm9ybWFsaXplKCksdGhpcy5mcm9tPWEuY2xvbmUoKSx0aGlzLnRvPWYuY2xvbmUoKSxmdW5jdGlvbiBySmUobCxjLGEpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBpSmUobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFjLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLEgxZShsLGMsInNldCIpLGEpLGF9''@;'; put 'put ''KHRoaXMsSGYsZCl9cmV0dXJuIGZ1bmN0aW9uIEpYZShsLGMsYSl7YyYmUDFlKGwucHJvdG90eXBlLGMpLGEmJlAxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzZXRIaWdobGlnaHQiLHZhbHVlOmZ1bmN0aW9uKGEp''@;'; put 'put ''e3JldHVybiB0aGlzLmhpZ2hsaWdodD1hLmNsb25lKCkubm9ybWFsaXplKCksdGhpc319LHtrZXk6InNldEZyb20iLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZyb209YS5jbG9uZSgpLHRoaXN9fSx7a2V5OiJzZXRUbyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudG89''@;'; put 'put ''YS5jbG9uZSgpLHRoaXN9fSx7a2V5OiJpc1ZhbGlkIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5mcm9tLmlzVmFsaWQoYSkmJnRoaXMudG8uaXNWYWxpZChhKX19LHtrZXk6ImlzU2luZ2xlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyb20ucm93Pj0wJiZ0aGlzLmZy''@;'; put 'put ''b20ucm93PT09dGhpcy50by5yb3cmJnRoaXMuZnJvbS5jb2w+PTAmJnRoaXMuZnJvbS5jb2w9PT10aGlzLnRvLmNvbH19LHtrZXk6ImdldE91dGVySGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KS1NYXRoLm1pbih0aGlz''@;'; put 'put ''LmZyb20ucm93LHRoaXMudG8ucm93KSsxfX0se2tleToiZ2V0T3V0ZXJXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCktTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkrMX19LHtrZXk6ImdldEhlaWdodCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmZyb20ucm93PDAmJnRoaXMudG8ucm93PDApcmV0dXJuIDA7dmFyIGE9TWF0aC5tYXgodGhpcy5mcm9tLnJvdywwKSxmPU1hdGgubWF4KHRoaXMudG8ucm93LDApO3JldHVybiBNYXRoLm1heChhLGYpLU1hdGgubWluKGEsZikrMX19LHtrZXk6Imdl''@;'; put 'put ''dFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZnJvbS5jb2w8MCYmdGhpcy50by5jb2w8MClyZXR1cm4gMDt2YXIgYT1NYXRoLm1heCh0aGlzLmZyb20uY29sLDApLGY9TWF0aC5tYXgodGhpcy50by5jb2wsMCk7cmV0dXJuIE1hdGgubWF4KGEsZiktTWF0aC5taW4oYSxmKSsxfX0s''@;'; put 'put ''e2tleToiZ2V0Q2VsbHNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRXaWR0aCgpKnRoaXMuZ2V0SGVpZ2h0KCl9fSx7a2V5OiJpbmNsdWRlcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9YS5yb3csZD1hLmNvbCxoPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigp''@;'; put 'put ''LG09dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpO3JldHVybiBoLnJvdzw9ZiYmbS5yb3c+PWYmJmguY29sPD1kJiZtLmNvbD49ZH19LHtrZXk6ImluY2x1ZGVzUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmluY2x1ZGVzKGEuZ2V0T3V0ZXJUb3BTdGFydENvcm5l''@;'; put 'put ''cigpKSYmdGhpcy5pbmNsdWRlcyhhLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkpfX0se2tleToiaXNFcXVhbCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5taW4oYS5mcm9tLnJvdyxhLnRvLnJvdykmJk1hdGgu''@;'; put 'put ''bWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5tYXgoYS5mcm9tLnJvdyxhLnRvLnJvdykmJk1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpPT09TWF0aC5taW4oYS5mcm9tLmNvbCxhLnRvLmNvbCkmJk1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5j''@;'; put 'put ''b2wpPT09TWF0aC5tYXgoYS5mcm9tLmNvbCxhLnRvLmNvbCl9fSx7a2V5OiJvdmVybGFwcyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaXNTb3V0aEVhc3RPZih0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpKSYmYS5pc05vcnRoV2VzdE9mKHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdo''@;'; put 'put ''dENvcm5lcigpKX19LHtrZXk6ImlzU291dGhFYXN0T2YiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmlzU291dGhFYXN0T2YoYSl8fHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLmlzU291dGhFYXN0T2YoYSl9fSx7a2V5OiJp''@;'; put 'put ''c05vcnRoV2VzdE9mIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGEpfHx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGEpfX0se2tleToiaXNPdmVybGFwcGluZ0hvcml6b250''@;'; put 'put ''YWxseSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbD49YS5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5jb2wmJnRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbDw9YS5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkuY29sfHx0''@;'; put 'put ''aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmNvbDw9YS5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkuY29sJiZ0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmNvbD49YS5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5jb2x9fSx7a2V5OiJpc092ZXJsYXBwaW5nVmVydGljYWxseSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLnJvdz49YS5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93JiZ0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3c8PWEuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLnJvd3x8''@;'; put 'put ''dGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93PD1hLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5yb3cmJnRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvdz49YS5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkucm93fX0se2tleToiZXhwYW5kIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihhKXt2YXIgZj10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxkPXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtyZXR1cm4oYS5yb3c8Zi5yb3d8fGEuY29sPGYuY29sfHxhLnJvdz5kLnJvd3x8YS5jb2w+ZC5jb2wpJiYodGhpcy5mcm9tPXRoaXMuX2NyZWF0ZUNlbGxDb29y''@;'; put 'put ''ZHMoTWF0aC5taW4oZi5yb3csYS5yb3cpLE1hdGgubWluKGYuY29sLGEuY29sKSksdGhpcy50bz10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KGQucm93LGEucm93KSxNYXRoLm1heChkLmNvbCxhLmNvbCkpLCEwKX19LHtrZXk6ImV4cGFuZEJ5UmFuZ2UiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGEpe2lmKHRoaXMuaW5jbHVkZXNSYW5nZShhKXx8IXRoaXMub3ZlcmxhcHMoYSkpcmV0dXJuITE7dmFyIGY9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksZD10aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCksaD10aGlzLmdldERpcmVjdGlvbigpLG09YS5nZXRPdXRlclRvcFN0''@;'; put 'put ''YXJ0Q29ybmVyKCksXz1hLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCksTz1NYXRoLm1pbihmLnJvdyxtLnJvdyksWD1NYXRoLm1pbihmLmNvbCxtLmNvbCksYWU9TWF0aC5tYXgoZC5yb3csXy5yb3cpLHBlPU1hdGgubWF4KGQuY29sLF8uY29sKSxiZT10aGlzLl9jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''KE8sWCkseGU9dGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhhZSxwZSk7cmV0dXJuIHRoaXMuZnJvbT1iZSx0aGlzLnRvPXhlLHRoaXMuc2V0RGlyZWN0aW9uKGgpLHRoaXMuaGlnaGxpZ2h0LnJvdz09PXRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLnJvdyYmIk4tUyI9PT10aGlzLmdl''@;'; put 'put ''dFZlcnRpY2FsRGlyZWN0aW9uKCkmJnRoaXMuZmxpcERpcmVjdGlvblZlcnRpY2FsbHkoKSx0aGlzLmhpZ2hsaWdodC5jb2w9PT10aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5jb2wmJiJXLUUiPT09dGhpcy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJnRoaXMuZmxpcERpcmVjdGlv''@;'; put 'put ''bkhvcml6b250YWxseSgpLCEwfX0se2tleToiZ2V0RGlyZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyb20uaXNOb3J0aFdlc3RPZih0aGlzLnRvKT8iTlctU0UiOnRoaXMuZnJvbS5pc05vcnRoRWFzdE9mKHRoaXMudG8pPyJORS1TVyI6dGhpcy5mcm9tLmlzU291dGhF''@;'; put 'put ''YXN0T2YodGhpcy50byk/IlNFLU5XIjp0aGlzLmZyb20uaXNTb3V0aFdlc3RPZih0aGlzLnRvKT8iU1ctTkUiOnZvaWQgMH19LHtrZXk6InNldERpcmVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UiTlctU0UiOnZhciBmPVt0aGlzLmdldE91dGVyVG9wTGVmdENvcm5l''@;'; put 'put ''cigpLHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpXTt0aGlzLmZyb209ZlswXSx0aGlzLnRvPWZbMV07YnJlYWs7Y2FzZSJORS1TVyI6dmFyIGQ9W3RoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLHRoaXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCldO3RoaXMuZnJvbT1k''@;'; put 'put ''WzBdLHRoaXMudG89ZFsxXTticmVhaztjYXNlIlNFLU5XIjp2YXIgaD1bdGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCksdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKV07dGhpcy5mcm9tPWhbMF0sdGhpcy50bz1oWzFdO2JyZWFrO2Nhc2UiU1ctTkUiOnZhciBtPVt0aGlzLmdl''@;'; put 'put ''dE91dGVyQm90dG9tTGVmdENvcm5lcigpLHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpXTt0aGlzLmZyb209bVswXSx0aGlzLnRvPW1bMV19fX0se2tleToiZ2V0VmVydGljYWxEaXJlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuWyJORS1TVyIsIk5XLVNFIl0uaW5kZXhPZih0''@;'; put 'put ''aGlzLmdldERpcmVjdGlvbigpKT4tMT8iTi1TIjoiUy1OIn19LHtrZXk6ImdldEhvcml6b250YWxEaXJlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuWyJOVy1TRSIsIlNXLU5FIl0uaW5kZXhPZih0aGlzLmdldERpcmVjdGlvbigpKT4tMT8iVy1FIjoiRS1XIn19LHtrZXk6ImZsaXBE''@;'; put 'put ''aXJlY3Rpb25WZXJ0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmdldERpcmVjdGlvbigpKXtjYXNlIk5XLVNFIjp0aGlzLnNldERpcmVjdGlvbigiU1ctTkUiKTticmVhaztjYXNlIk5FLVNXIjp0aGlzLnNldERpcmVjdGlvbigiU0UtTlciKTticmVhaztjYXNlIlNFLU5X''@;'; put 'put ''Ijp0aGlzLnNldERpcmVjdGlvbigiTkUtU1ciKTticmVhaztjYXNlIlNXLU5FIjp0aGlzLnNldERpcmVjdGlvbigiTlctU0UiKX19fSx7a2V5OiJmbGlwRGlyZWN0aW9uSG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmdldERpcmVjdGlvbigpKXtjYXNlIk5XLVNF''@;'; put 'put ''Ijp0aGlzLnNldERpcmVjdGlvbigiTkUtU1ciKTticmVhaztjYXNlIk5FLVNXIjp0aGlzLnNldERpcmVjdGlvbigiTlctU0UiKTticmVhaztjYXNlIlNFLU5XIjp0aGlzLnNldERpcmVjdGlvbigiU1ctTkUiKTticmVhaztjYXNlIlNXLU5FIjp0aGlzLnNldERpcmVjdGlvbigiU0UtTlciKX19''@;'; put 'put ''fSx7a2V5OiJnZXRUb3BTdGFydENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSkubm9ybWFsaXplKCl9fSx7a2V5''@;'; put 'put ''OiJnZXRUb3BMZWZ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBqaCh0aGlzLEhmKT90aGlzLmdldFRvcEVuZENvcm5lcigpOnRoaXMuZ2V0VG9wU3RhcnRDb3JuZXIoKX19LHtrZXk6ImdldEJvdHRvbUVuZENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Jl''@;'; put 'put ''YXRlQ2VsbENvb3JkcyhNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1heCh0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSkubm9ybWFsaXplKCl9fSx7a2V5OiJnZXRCb3R0b21SaWdodENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gamgodGhpcyxIZik/''@;'; put 'put ''dGhpcy5nZXRCb3R0b21TdGFydENvcm5lcigpOnRoaXMuZ2V0Qm90dG9tRW5kQ29ybmVyKCl9fSx7a2V5OiJnZXRUb3BFbmRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0''@;'; put 'put ''aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6ZSgpfX0se2tleToiZ2V0VG9wUmlnaHRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGpoKHRoaXMsSGYpP3RoaXMuZ2V0VG9wU3RhcnRDb3JuZXIoKTp0aGlzLmdldFRvcEVuZENvcm5lcigpfX0se2tleToi''@;'; put 'put ''Z2V0Qm90dG9tU3RhcnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6ZSgpfX0se2tleToiZ2V0''@;'; put 'put ''Qm90dG9tTGVmdENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gamgodGhpcyxIZik/dGhpcy5nZXRCb3R0b21FbmRDb3JuZXIoKTp0aGlzLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCl9fSx7a2V5OiJnZXRPdXRlclRvcFN0YXJ0Q29ybmVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKX19LHtrZXk6ImdldE91dGVyVG9wTGVmdENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gamgodGhpcyxIZik/dGhp''@;'; put 'put ''cy5nZXRPdXRlclRvcEVuZENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpfX0se2tleToiZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRv''@;'; put 'put ''LnJvdyksTWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpfX0se2tleToiZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gamgodGhpcyxIZik/dGhpcy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCk6dGhpcy5nZXRPdXRlckJvdHRv''@;'; put 'put ''bUVuZENvcm5lcigpfX0se2tleToiZ2V0T3V0ZXJUb3BFbmRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpfX0s''@;'; put 'put ''e2tleToiZ2V0T3V0ZXJUb3BSaWdodENvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gamgodGhpcyxIZik/dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCk6dGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpfX0se2tleToiZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lciIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heCh0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8uY29sKSl9fSx7a2V5OiJnZXRPdXRlckJvdHRvbUxlZnRDb3JuZXIiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGpoKHRoaXMsSGYpP3RoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTp0aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKX19LHtrZXk6ImlzQ29ybmVyIix2YWx1ZTpmdW5jdGlvbihhLGYpe3JldHVybiEhKGYmJmYuaW5jbHVkZXMoYSkmJih0aGlzLmdldE91dGVyVG9w''@;'; put 'put ''TGVmdENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhmLmZyb20ucm93LGYuZnJvbS5jb2wpKXx8dGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCkuaXNFcXVhbCh0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKGYuZnJvbS5yb3csZi50by5jb2wpKXx8dGhpcy5nZXRPdXRl''@;'; put 'put ''ckJvdHRvbUxlZnRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoZi50by5yb3csZi5mcm9tLmNvbCkpfHx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoZi50by5yb3csZi50by5jb2wpKSkpfHxhLmlz''@;'; put 'put ''RXF1YWwodGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKSl8fGEuaXNFcXVhbCh0aGlzLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKSl8fGEuaXNFcXVhbCh0aGlzLmdldE91dGVyQm90dG9tTGVmdENvcm5lcigpKXx8YS5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigp''@;'; put 'put ''KX19LHtrZXk6ImdldE9wcG9zaXRlQ29ybmVyIix2YWx1ZTpmdW5jdGlvbihhLGYpe2lmKCEoYSBpbnN0YW5jZW9mIG1SKSlyZXR1cm4hMTtpZihmKXt2YXIgZD1mLmZyb20saD1mLnRvO2lmKGYuaW5jbHVkZXMoYSkpe2lmKHRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLmlzRXF1YWwo''@;'; put 'put ''dGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhkLnJvdyxkLmNvbCkpKXJldHVybiB0aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7aWYodGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpLmlzRXF1YWwodGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhkLnJvdyxoLmNvbCkpKXJldHVybiB0aGlzLmdl''@;'; put 'put ''dE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTtpZih0aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaC5yb3csZC5jb2wpKSlyZXR1cm4gdGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpO2lmKHRoaXMuZ2V0T3V0ZXJCb3R0b21F''@;'; put 'put ''bmRDb3JuZXIoKS5pc0VxdWFsKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaC5yb3csaC5jb2wpKSlyZXR1cm4gdGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCl9fXJldHVybiBhLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpKT90aGlzLmdldE91dGVyVG9wU3RhcnRD''@;'; put 'put ''b3JuZXIoKTphLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTphLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpKT90aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTphLmlzRXF1YWwodGhp''@;'; put 'put ''cy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKTp2b2lkIDB9fSx7a2V5OiJnZXRCb3JkZXJzU2hhcmVkV2l0aCIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuaW5jbHVkZXNSYW5nZShhKSlyZXR1cm5bXTt2YXIgZl90b3A9TWF0aC5t''@;'; put 'put ''aW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksZl9ib3R0b209TWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksZl9sZWZ0PU1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpLGZfcmlnaHQ9TWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCksZF90''@;'; put 'put ''b3A9TWF0aC5taW4oYS5mcm9tLnJvdyxhLnRvLnJvdyksZF9ib3R0b209TWF0aC5tYXgoYS5mcm9tLnJvdyxhLnRvLnJvdyksZF9sZWZ0PU1hdGgubWluKGEuZnJvbS5jb2wsYS50by5jb2wpLGRfcmlnaHQ9TWF0aC5tYXgoYS5mcm9tLmNvbCxhLnRvLmNvbCksaD1bXTtyZXR1cm4gZl90b3A9''@;'; put 'put ''PT1kX3RvcCYmaC5wdXNoKCJ0b3AiKSxmX3JpZ2h0PT09ZF9yaWdodCYmaC5wdXNoKCJyaWdodCIpLGZfYm90dG9tPT09ZF9ib3R0b20mJmgucHVzaCgiYm90dG9tIiksZl9sZWZ0PT09ZF9sZWZ0JiZoLnB1c2goImxlZnQiKSxofX0se2tleToiZ2V0SW5uZXIiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''Zm9yKHZhciBhPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGY9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLGQ9W10saD1hLnJvdztoPD1mLnJvdztoKyspZm9yKHZhciBtPWEuY29sO208PWYuY29sO20rKykodGhpcy5mcm9tLnJvdyE9PWh8fHRoaXMuZnJvbS5jb2whPT1t''@;'; put 'put ''KSYmKHRoaXMudG8ucm93IT09aHx8dGhpcy50by5jb2whPT1tKSYmZC5wdXNoKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaCxtKSk7cmV0dXJuIGR9fSx7a2V5OiJnZXRBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGY9dGhpcy5n''@;'; put 'put ''ZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLGQ9W10saD1hLnJvdztoPD1mLnJvdztoKyspZm9yKHZhciBtPWEuY29sO208PWYuY29sO20rKylkLnB1c2goYS5yb3c9PT1oJiZhLmNvbD09PW0/YTpmLnJvdz09PWgmJmYuY29sPT09bT9mOnRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaCxtKSk7cmV0''@;'; put 'put ''dXJuIGR9fSx7a2V5OiJmb3JBbGwiLHZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZj10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxkPXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKSxoPWYucm93O2g8PWQucm93O2grKylmb3IodmFyIG09Zi5jb2w7bTw9ZC5jb2w7bSsrKWlm''@;'; put 'put ''KCExPT09YShoLG0pKXJldHVybn19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgbCh0aGlzLmhpZ2hsaWdodCx0aGlzLmZyb20sdGhpcy50byxqaCh0aGlzLEhmKSl9fSx7a2V5OiJ0b09iamVjdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZnJvbTp0aGlzLmZy''@;'; put 'put ''b20udG9PYmplY3QoKSx0bzp0aGlzLnRvLnRvT2JqZWN0KCl9fX0se2tleToiX2NyZWF0ZUNlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIG5ldyBtUihhLGYsamgodGhpcyxIZikpfX1dKSxsfSgpO2NvbnN0IGhXPW9KZTtmdW5jdGlvbiB3TShsKXtyZXR1cm4od009ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBOMWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFi''@;'; put 'put ''bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFYxZShmLmtleSksZil9fWZ1bmN0aW9uIE5kKGwsYyxhKXtyZXR1cm4oYz1WMWUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6''@;'; put 'put ''bFtjXT1hLGx9ZnVuY3Rpb24gVjFlKGwpe3ZhciBjPWZ1bmN0aW9uIHNKZShsLGMpe2lmKCJvYmplY3QiIT09d00obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJv''@;'; put 'put ''YmplY3QiIT09d00oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXdNKGMp''@;'; put 'put ''P2M6U3RyaW5nKGMpfXZhciBwVz1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyxhKXsoZnVuY3Rpb24gYUplKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLE5kKHRoaXMsInd0''@;'; put 'put ''VGFibGUiLHZvaWQgMCksTmQodGhpcywid3RTY3JvbGwiLHZvaWQgMCksTmQodGhpcywid3RWaWV3cG9ydCIsdm9pZCAwKSxOZCh0aGlzLCJ3dE92ZXJsYXlzIix2b2lkIDApLE5kKHRoaXMsInNlbGVjdGlvbnMiLHZvaWQgMCksTmQodGhpcywid3RFdmVudCIsdm9pZCAwKSxOZCh0aGlzLCJn''@;'; put 'put ''dWlkIiwid3RfIi5jb25jYXQobVkoKSkpLE5kKHRoaXMsImRyYXdJbnRlcnJ1cHRlZCIsITEpLE5kKHRoaXMsImRyYXduIiwhMSksTmQodGhpcywiZG9tQmluZGluZ3MiLHZvaWQgMCksTmQodGhpcywid3RTZXR0aW5ncyIsdm9pZCAwKSx0aGlzLmRvbUJpbmRpbmdzPXtyb290VGFibGU6Yyxy''@;'; put 'put ''b290RG9jdW1lbnQ6Yy5vd25lckRvY3VtZW50LHJvb3RXaW5kb3c6Yy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fSx0aGlzLnd0U2V0dGluZ3M9YSx0aGlzLnd0U2Nyb2xsPW5ldyBqWGUodGhpcy5jcmVhdGVTY3JvbGxEYW8oKSl9cmV0dXJuIGZ1bmN0aW9uIGxKZShsLGMsYSl7YyYmTjFl''@;'; put 'put ''KGwucHJvdG90eXBlLGMpLGEmJk4xZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJldmVudE1hbmFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiBuZXcgZnModGhpcyl9fSx7a2V5OiJmaW5kT3JpZ2luYWxIZWFkZXJz''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPVtdO2lmKHRoaXMud3RUYWJsZS5USEVBRC5jaGlsZE5vZGVzLmxlbmd0aCYmdGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgpe2Zvcih2YXIgZj0wLGQ9dGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNb''@;'; put 'put ''MF0uY2hpbGROb2Rlcy5sZW5ndGg7ZjxkO2YrKylhLnB1c2godGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1tmXS5pbm5lckhUTUwpO3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RofHx0aGlzLnd0U2V0dGluZ3MudXBk''@;'; put 'put ''YXRlKCJjb2x1bW5IZWFkZXJzIixbZnVuY3Rpb24oaCxtKXtPNChtLGFbaF0pfV0pfX19LHtrZXk6ImNyZWF0ZUNlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIG5ldyBtUihhLGYsdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKSl9fSx7a2V5OiJjcmVh''@;'; put 'put ''dGVDZWxsUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXtyZXR1cm4gbmV3IGhXKGEsZixkLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIikpfX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRyYXdJbnRlcnJ1cHRlZD0hMSxhfHx0aGlzLnd0VGFibGUuaXNWaXNpYmxlKCk/dGhpcy53dFRhYmxlLmRyYXcoYSk6dGhpcy5kcmF3SW50ZXJydXB0ZWQ9ITAsdGhpc319LHtrZXk6ImdldENlbGwiLHZhbHVlOmZ1bmN0aW9uKGEp''@;'; put 'put ''e2lmKCEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSkpcmV0dXJuIHRoaXMud3RUYWJsZS5nZXRDZWxsKGEpO3ZhciBkPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSxoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0''@;'; put 'put ''aW5nKCJmaXhlZFJvd3NUb3AiKSxtPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxfPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO2lmKGEucm93PGgmJmEuY29sPF8pcmV0dXJuIHRoaXMud3RPdmVybGF5cy50b3BJ''@;'; put 'put ''bmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGEpO2lmKGEucm93PGgpcmV0dXJuIHRoaXMud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuZ2V0Q2VsbChhKTtpZihhLmNvbDxfJiZhLnJvdz49ZC1tKXtpZih0aGlzLnd0T3ZlcmxheXMuYm90''@;'; put 'put ''dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5JiZ0aGlzLnd0T3ZlcmxheXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lKXJldHVybiB0aGlzLnd0T3ZlcmxheXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lLnd0VGFibGUuZ2V0Q2VsbChhKX1lbHNl''@;'; put 'put ''e2lmKGEuY29sPF8pcmV0dXJuIHRoaXMud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGEpO2lmKGEucm93PGQmJmEucm93Pj1kLW0mJnRoaXMud3RPdmVybGF5cy5ib3R0b21PdmVybGF5JiZ0aGlzLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheS5j''@;'; put 'put ''bG9uZSlyZXR1cm4gdGhpcy53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGEpfXJldHVybiB0aGlzLnd0VGFibGUuZ2V0Q2VsbChhKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoLG0pe3JldHVybiEoYS5jb2w8MHx8''@;'; put 'put ''YS5yb3c8MCkmJnRoaXMud3RTY3JvbGwuc2Nyb2xsVmlld3BvcnQoYSxmLGQsaCxtKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7cmV0dXJuIShhPDApJiZ0aGlzLnd0U2Nyb2xsLnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGEs''@;'; put 'put ''ZixkKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0VmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3JldHVybiEoYTwwKSYmdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoYSxmLGQpfX0se2tleToiZ2V0Vmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''W3RoaXMud3RUYWJsZS5nZXRGaXJzdFZpc2libGVSb3coKSx0aGlzLnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCksdGhpcy53dFRhYmxlLmdldExhc3RWaXNpYmxlUm93KCksdGhpcy53dFRhYmxlLmdldExhc3RWaXNpYmxlQ29sdW1uKCldfX0se2tleToiZGVzdHJveSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt0aGlzLnd0T3ZlcmxheXMuZGVzdHJveSgpLHRoaXMud3RFdmVudC5kZXN0cm95KCl9fSx7a2V5OiJjcmVhdGVTY3JvbGxEYW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm57Z2V0IGRyYXduKCl7cmV0dXJuIGEuZHJhd259LGdldCB0b3BPdmVybGF5KCl7''@;'; put 'put ''cmV0dXJuIGEud3RPdmVybGF5cy50b3BPdmVybGF5fSxnZXQgaW5saW5lU3RhcnRPdmVybGF5KCl7cmV0dXJuIGEud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXl9LGdldCB3dFRhYmxlKCl7cmV0dXJuIGEud3RUYWJsZX0sZ2V0IHd0Vmlld3BvcnQoKXtyZXR1cm4gYS53dFZpZXdwb3J0''@;'; put 'put ''fSxnZXQgd3RTZXR0aW5ncygpe3JldHVybiBhLnd0U2V0dGluZ3N9LGdldCByb290V2luZG93KCl7cmV0dXJuIGEuZG9tQmluZGluZ3Mucm9vdFdpbmRvd30sZ2V0IHRvdGFsUm93cygpe3JldHVybiBhLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIil9LGdldCB0b3RhbENvbHVt''@;'; put 'put ''bnMoKXtyZXR1cm4gYS53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpfSxnZXQgZml4ZWRSb3dzVG9wKCl7cmV0dXJuIGEud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKX0sZ2V0IGZpeGVkUm93c0JvdHRvbSgpe3JldHVybiBhLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIil9LGdldCBmaXhlZENvbHVtbnNTdGFydCgpe3JldHVybiBhLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKX19fX0se2tleToiZ2V0VGFibGVEYW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm57Z2V0''@;'; put 'put ''IHdvdCgpe3JldHVybiBhfSxnZXQgcGFyZW50VGFibGVPZmZzZXQoKXtyZXR1cm4gYS5jbG9uZVNvdXJjZS53dFRhYmxlLnRhYmxlT2Zmc2V0fSxnZXQgY2xvbmVTb3VyY2UoKXtyZXR1cm4gYS5jbG9uZVNvdXJjZX0sZ2V0IHdvcmtzcGFjZVdpZHRoKCl7cmV0dXJuIGEud3RWaWV3cG9ydC5n''@;'; put 'put ''ZXRXb3Jrc3BhY2VXaWR0aCgpfSxnZXQgd3RWaWV3cG9ydCgpe3JldHVybiBhLnd0Vmlld3BvcnR9LGdldCB3dE92ZXJsYXlzKCl7cmV0dXJuIGEud3RPdmVybGF5c30sZ2V0IHNlbGVjdGlvbnMoKXtyZXR1cm4gYS5zZWxlY3Rpb25zfSxnZXQgZHJhd24oKXtyZXR1cm4gYS5kcmF3bn0sc2V0''@;'; put 'put ''IGRyYXduKGYpe2EuZHJhd249Zn0sZ2V0IHd0VGFibGUoKXtyZXR1cm4gYS53dFRhYmxlfSxnZXQgc3RhcnRDb2x1bW5SZW5kZXJlZCgpe3JldHVybiBhLnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRDb2x1bW59LGdldCBzdGFydENvbHVtblZpc2libGUoKXtyZXR1''@;'; put 'put ''cm4gYS53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvci5zdGFydENvbHVtbn0sZ2V0IGVuZENvbHVtblJlbmRlcmVkKCl7cmV0dXJuIGEud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5lbmRDb2x1bW59LGdldCBlbmRDb2x1bW5WaXNpYmxlKCl7cmV0dXJuIGEu''@;'; put 'put ''d3RWaWV3cG9ydC5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IuZW5kQ29sdW1ufSxnZXQgY291bnRDb2x1bW5zUmVuZGVyZWQoKXtyZXR1cm4gYS53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLmNvdW50fSxnZXQgY291bnRDb2x1bW5zVmlzaWJsZSgpe3JldHVybiBhLnd0Vmll''@;'; put 'put ''d3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fSxnZXQgc3RhcnRSb3dSZW5kZXJlZCgpe3JldHVybiBhLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRSb3d9LGdldCBzdGFydFJvd1Zpc2libGUoKXtyZXR1cm4gYS53dFZpZXdwb3J0LnJvd3NWaXNpYmxl''@;'; put 'put ''Q2FsY3VsYXRvci5zdGFydFJvd30sZ2V0IGVuZFJvd1JlbmRlcmVkKCl7cmV0dXJuIGEud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5lbmRSb3d9LGdldCBlbmRSb3dWaXNpYmxlKCl7cmV0dXJuIGEud3RWaWV3cG9ydC5yb3dzVmlzaWJsZUNhbGN1bGF0b3IuZW5kUm93fSxnZXQg''@;'; put 'put ''Y291bnRSb3dzUmVuZGVyZWQoKXtyZXR1cm4gYS53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLmNvdW50fSxnZXQgY291bnRSb3dzVmlzaWJsZSgpe3JldHVybiBhLnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fX19fV0pLGx9KCk7ZnVuY3Rpb24gUTcobCl7''@;'; put 'put ''cmV0dXJuKFE3PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1T''@;'; put 'put ''eW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQjFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImlu''@;'; put 'put ''IGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx6MWUoZi5rZXkpLGYpfX1mdW5jdGlvbiBtVyhsLGMpe3JldHVybihtVz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJv''@;'; put 'put ''dG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGdSKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiB2UihsKXtyZXR1cm4odlI9''@;'; put 'put ''T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX1mdW5jdGlvbiBqMWUobCxjLGEpe3JldHVybihjPXoxZShjKSlpbiBsP09iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiB6MWUobCl7dmFyIGM9ZnVuY3Rpb24gbUplKGwsYyl7aWYoIm9iamVjdCIhPT1RNyhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtT''@;'; put 'put ''eW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1RNyhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVy''@;'; put 'put ''bigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09UTcoYyk/YzpTdHJpbmcoYyl9dmFyIGdKZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gZkplKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJm1XKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gZEplKGwpe3ZhciBjPWZ1bmN0aW9uIHBKZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5z''@;'; put 'put ''aGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgZCxmPXZSKGwpO2lmKGMpe3ZhciBoPXZSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBoSmUobCxjKXtpZihjJiYoIm9iamVjdCI9''@;'; put 'put ''PT1RNyhjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZ1IobCl9KHRoaXMsZCl9fShhKTtmdW5j''@;'; put 'put ''dGlvbiBhKGYsZCxoKXt2YXIgbTsoZnVuY3Rpb24gY0plKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGEpLGoxZShnUihtPWMuY2FsbCh0aGlzLGYsZCkpLCJjbG9uZVNvdXJj''@;'; put 'put ''ZSIsdm9pZCAwKSxqMWUoZ1IobSksImNsb25lT3ZlcmxheSIsdm9pZCAwKTt2YXIgXz1tLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZmFjYWRlIixnUihtKSk7cmV0dXJuIG0uY2xvbmVTb3VyY2U9aC5zb3VyY2UsbS5jbG9uZU92ZXJsYXk9aC5vdmVybGF5LG0ud3RUYWJsZT1tLmNsb25lT3Zl''@;'; put 'put ''cmxheS5jcmVhdGVUYWJsZShtLmdldFRhYmxlRGFvKCksXyxtLmRvbUJpbmRpbmdzLG0ud3RTZXR0aW5ncyksbS53dFZpZXdwb3J0PWgudmlld3BvcnQsbS5zZWxlY3Rpb25zPWguc2VsZWN0aW9ucyxtLnd0RXZlbnQ9bmV3IFEwZShfLG0uZG9tQmluZGluZ3MsbS53dFNldHRpbmdzLG0uZXZl''@;'; put 'put ''bnRNYW5hZ2VyLG0ud3RUYWJsZSxtLnNlbGVjdGlvbnMsaC5ldmVudCksbS5maW5kT3JpZ2luYWxIZWFkZXJzKCksbX1yZXR1cm4gZnVuY3Rpb24gdUplKGwsYyxhKXtyZXR1cm4gYyYmQjFlKGwucHJvdG90eXBlLGMpLGEmJkIxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90''@;'; put 'put ''b3R5cGUiLHt3cml0YWJsZTohMX0pLGx9KGEpfShwVyk7ZnVuY3Rpb24gQ00obCl7cmV0dXJuKENNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJu''@;'; put 'put ''IGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gVTFlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJh''@;'; put 'put ''YmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxaMWUoZi5rZXkpLGYpfX1mdW5jdGlvbiBaMWUobCl7dmFyIGM9ZnVuY3Rpb24gX0plKGwsYyl7aWYoIm9iamVjdCIhPT1DTShs''@;'; put 'put ''KXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1DTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0''@;'; put 'put ''dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Q00oYyk/YzpTdHJpbmcoYyl9dmFyIFNNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEsZixkLGgpeyhmdW5jdGlvbiB2SmUo''@;'; put 'put ''bCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksZnVuY3Rpb24gYkplKGwsYyxhKXsoYz1aMWUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVu''@;'; put 'put ''dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hfSh0aGlzLCJ3dFNldHRpbmdzIixudWxsKSxIaCh0aGlzLCJ3b3QiLGMse3dyaXRhYmxlOiExfSksdGhpcy5kb21CaW5kaW5ncz1oLHRoaXMuZmFjYWRlR2V0dGVyPWEsdGhpcy53dFNldHRpbmdzPWQ7dmFy''@;'; put 'put ''IG09dGhpcy53b3Qud3RUYWJsZSxfPW0uVEFCTEUsTz1tLmhpZGVyLFg9bS5zcHJlYWRlcixhZT1tLmhvbGRlcixwZT1tLnd0Um9vdEVsZW1lbnQ7dGhpcy5pbnN0YW5jZT10aGlzLndvdCx0aGlzLnR5cGU9Zix0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PW51bGwsdGhpcy5UQUJM''@;'; put 'put ''RT1fLHRoaXMuaGlkZXI9Tyx0aGlzLnNwcmVhZGVyPVgsdGhpcy5ob2xkZXI9YWUsdGhpcy53dFJvb3RFbGVtZW50PXBlLHRoaXMudHJpbW1pbmdDb250YWluZXI9YjUodGhpcy5oaWRlci5wYXJlbnROb2RlLnBhcmVudE5vZGUpLHRoaXMudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpLHRoaXMu''@;'; put 'put ''Y2xvbmU9dGhpcy5tYWtlQ2xvbmUoKX1yZXR1cm4gZnVuY3Rpb24geUplKGwsYyxhKXtjJiZVMWUobC5wcm90b3R5cGUsYyksYSYmVTFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InVwZGF0ZVN0YXRlT2ZSZW5kZXJp''@;'; put 'put ''bmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uZWVkRnVsbFJlbmRlcjt0aGlzLm5lZWRGdWxsUmVuZGVyPXRoaXMuc2hvdWxkQmVSZW5kZXJlZCgpO3ZhciBmPWEhPT10aGlzLm5lZWRGdWxsUmVuZGVyO3JldHVybiBmJiYhdGhpcy5uZWVkRnVsbFJlbmRlciYmdGhpcy5yZXNldCgp''@;'; put 'put ''LGZ9fSx7a2V5OiJzaG91bGRCZVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleToidXBkYXRlVHJpbW1pbmdDb250YWluZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50cmltbWluZ0NvbnRhaW5lcj1iNSh0aGlzLmhpZGVyLnBhcmVudE5vZGUucGFyZW50Tm9kZSl9''@;'; put 'put ''fSx7a2V5OiJ1cGRhdGVNYWluU2Nyb2xsYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy53b3Qud3RUYWJsZTt0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PSJoaWRkZW4iPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUo''@;'; put 'put ''YS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik/dGhpcy53b3Qud3RUYWJsZS5ob2xkZXI6WlMoYS5UQUJMRSl9fSx7a2V5OiJnZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe2lmKCExIT09dGhpcy5jbG9u''@;'; put 'put ''ZS53dFRhYmxlLmhvbGRlci5jb250YWlucyhhKSl7dmFyIGg9dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxtPWQ8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IiksXz1mPHRoaXMud3RTZXR0''@;'; put 'put ''aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSxPPWY+PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksWD10aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIsYWU9e3N0YXJ0OnRo''@;'; put 'put ''aXMuZ2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKFgpLHRvcDpYLm9mZnNldFRvcH0scGU9e3N0YXJ0OnRoaXMuZ2V0UmVsYXRpdmVTdGFydFBvc2l0aW9uKGEpLHRvcDphLm9mZnNldFRvcH07cmV0dXJuIGg/dGhpcy5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbldpbmRvdyhfLG0scGUs''@;'; put 'put ''YWUpOnRoaXMuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb25XaXRoaW5Ib2xkZXIoXyxPLG0scGUsYWUpfVdsKCJUaGUgcHJvdmlkZWQgZWxlbWVudCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgIi5jb25jYXQodGhpcy50eXBlLCIgb3ZlcmxheSIpKX19LHtrZXk6ImdldFJlbGF0aXZlU3RhcnRQb3Np''@;'; put 'put ''dGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNSdGwoKT9hLm9mZnNldFBhcmVudC5vZmZzZXRXaWR0aC1hLm9mZnNldExlZnQtYS5vZmZzZXRXaWR0aDphLm9mZnNldExlZnR9fSx7a2V5OiJnZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbldpbmRvdyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oYSxmLGQsaCl7dmFyIG09dGhpcy53b3Qud3RUYWJsZS53dFJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLF89MCxPPTA7aWYoZil7dmFyIFg9bS5sZWZ0O3RoaXMuaXNSdGwoKSYmKFg9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LmlubmVyV2lkdGgtKG0ubGVm''@;'; put 'put ''dCttLndpZHRoK051KCkpKSxfPVg8PTA/LTEqWDowfWVsc2UgXz1oLnN0YXJ0O3JldHVybiBPPWE/dGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC1tLnRvcDpoLnRvcCx7c3RhcnQ6ZC5zdGFydCtfLHRvcDpkLnRvcCtPfX19LHtrZXk6ImdldFJl''@;'; put 'put ''bGF0aXZlQ2VsbFBvc2l0aW9uV2l0aGluSG9sZGVyIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoLG0pe3ZhciBfX2hvcml6b250YWw9dGhpcy53b3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSxfX3ZlcnRpY2FsPXRoaXMud290Lnd0T3ZlcmxheXMu''@;'; put 'put ''dG9wT3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLE89MCxYPTA7aWYoZHx8KE89X19ob3Jpem9udGFsLW0uc3RhcnQpLGYpe3ZhciBhZT10aGlzLndvdC53dFRhYmxlLnd0Um9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7WD0tMSp0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUu''@;'; put 'put ''Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK2FlLnRvcH1lbHNlIGF8fChYPV9fdmVydGljYWwtbS50b3ApO3JldHVybntzdGFydDpoLnN0YXJ0LU8sdG9wOmgudG9wLVh9fX0se2tleToibWFrZUNsb25lIix2YWx1ZTpmdW5jdGlvbigpe2lmKC0xPT09ZlhlLmluZGV4T2YodGhpcy50eXBl''@;'; put 'put ''KSl0aHJvdyBuZXcgRXJyb3IoJ0Nsb25lIHR5cGUgIicuY29uY2F0KHRoaXMudHlwZSwnIiBpcyBub3Qgc3VwcG9ydGVkLicpKTt2YXIgYT10aGlzLndvdC53dFRhYmxlLGY9dGhpcy5kb21CaW5kaW5ncyxkPWYucm9vdERvY3VtZW50LGg9Zi5yb290V2luZG93LG09ZC5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJESVYiKSxfPWQuY3JlYXRlRWxlbWVudCgiVEFCTEUiKSxPPWEud3RSb290RWxlbWVudC5wYXJlbnROb2RlO20uY2xhc3NOYW1lPSIiLmNvbmNhdChkWGUuZ2V0KHRoaXMudHlwZSksIiBoYW5kc29udGFibGUiKSxtLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLmlzUnRsKCk/InJ0bCI6Imx0''@;'; put 'put ''ciIpLG0uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixtLnN0eWxlLnRvcD0wLG0uc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHRoaXMuaXNSdGwoKT9tLnN0eWxlLnJpZ2h0PTA6bS5zdHlsZS5sZWZ0PTAsXy5jbGFzc05hbWU9YS5UQUJMRS5jbGFzc05hbWUsbS5hcHBlbmRDaGlsZChfKSxP''@;'; put 'put ''LmFwcGVuZENoaWxkKG0pO3ZhciBYPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD0hMD09PVh8fCJob3Jpem9udGFsIj09PVgmJnRoaXMudHlwZT09PXc1fHwidmVydGljYWwiPT09WCYm''@;'; put 'put ''dGhpcy50eXBlPT09QzU/aDoiaGlkZGVuIj09PWguZ2V0Q29tcHV0ZWRTdHlsZShPKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpP2EuaG9sZGVyOlpTKGEuVEFCTEUpLG5ldyBnSmUoXyx0aGlzLnd0U2V0dGluZ3Mse3NvdXJjZTp0aGlzLndvdCxvdmVybGF5OnRoaXMsdmlld3BvcnQ6''@;'; put 'put ''dGhpcy53b3Qud3RWaWV3cG9ydCxldmVudDp0aGlzLndvdC53dEV2ZW50LHNlbGVjdGlvbnM6dGhpcy53b3Quc2VsZWN0aW9uc30pfX0se2tleToicmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1l''@;'; put 'put ''bnRzWzBdLGY9dGhpcy5zaG91bGRCZVJlbmRlcmVkKCk7dGhpcy5jbG9uZSYmKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fGYpJiZ0aGlzLmNsb25lLmRyYXcoYSksdGhpcy5uZWVkRnVsbFJlbmRlcj1mfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5jbG9uZSl7dmFyIGE9''@;'; put 'put ''dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlcjtSbihbYS5zdHlsZSx0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUsYS5wYXJlbnROb2RlLnN0eWxlXSxmdW5jdGlvbihfKXtfLndpZHRoPSIiLF8uaGVpZ2h0PSIifSl9fX0se2tleToiaXNSdGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2xvbmUuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKX19XSksbH0oKTtmdW5jdGlvbiBlOShsKXtyZXR1cm4oZTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJv''@;'; put 'put ''bCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB5UihsLGMsYSl7cmV0dXJuKHlSPUcxZSgpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbihkLGgsbSl7dmFyIF89W251bGxdO18ucHVzaC5hcHBseShfLGgpO3ZhciBYPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGQsXykpO3JldHVy''@;'; put 'put ''biBtJiZiUihYLG0ucHJvdG90eXBlKSxYfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIFkxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBm''@;'; put 'put ''JiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsJDFlKGYua2V5KSxmKX19ZnVuY3Rpb24gYlIobCxjKXtyZXR1cm4oYlI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3Rv''@;'; put 'put ''X189ZCxmfSkobCxjKX1mdW5jdGlvbiBXMWUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIEcxZSgpe2lmKHR5cGVvZiBS''@;'; put 'put ''ZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29s''@;'; put 'put ''ZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBfUihsKXtyZXR1cm4oX1I9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YoYSl9KShsKX1mdW5jdGlvbiAkMWUobCl7dmFyIGM9ZnVuY3Rpb24geEplKGwsYyl7aWYoIm9iamVjdCIhPT1lOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1lOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09''@;'; put 'put ''ZTkoYyk/YzpTdHJpbmcoYyl9dmFyIEFKZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gU0plKGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7''@;'; put 'put ''bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmJSKGwsYyl9KGEsbCk7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gTUplKGwpe3ZhciBjPUcxZSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9X1IobCk7aWYoYyl7dmFyIGg9X1IodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIGtKZShsLGMpe2lmKGMmJigib2JqZWN0Ij09PWU5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVm''@;'; put 'put ''aW5lZCIpO3JldHVybiBXMWUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYsZCxoLG0pe3ZhciBfO3JldHVybiBmdW5jdGlvbiB3SmUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0o''@;'; put 'put ''dGhpcyxhKSxmdW5jdGlvbiBFSmUobCxjLGEpeyhjPSQxZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWF9KFcxZShfPWMuY2FsbCh0aGlzLGYsZCx3NSxoLG0pKSwiY2Fj''@;'; put 'put ''aGVkRml4ZWRSb3dzVG9wIiwtMSksXy5jYWNoZWRGaXhlZFJvd3NUb3A9Xy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLF99cmV0dXJuIGZ1bmN0aW9uIENKZShsLGMsYSl7YyYmWTFlKGwucHJvdG90eXBlLGMpLGEmJlkxZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJjcmVhdGVUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4geVIoRlhlLGgpfX0se2tl''@;'; put 'put ''eToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKX19LHtrZXk6InJlc2V0Rml4ZWRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5uZWVkRnVsbFJlbmRl''@;'; put 'put ''cnx8IXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuITE7dmFyIGQ9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLGg9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LG09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxv''@;'; put 'put ''dyIpLF89MCxPPSExO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXIhPT1ofHxtJiYidmVydGljYWwiPT09bSlfPXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKSxHUyhkKTtlbHNle3ZhciBhZT10aGlzLndvdC53dFRhYmxlLmhpZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO089TWF0aC5jZWls''@;'; put 'put ''KGFlLmJvdHRvbSk9PT1kLm9mZnNldEhlaWdodCxfPXRoaXMuZ2V0T3ZlcmxheU9mZnNldCgpLHFJKGQsIjBweCIsIiIuY29uY2F0KF8sInB4IikpfXZhciB4ZT10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbihfLE8pO3JldHVybiB0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpLHhl''@;'; put 'put ''fX0se2tleToic2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxtPSExO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09aCYmaC5zY3JvbGxZIT09ZD8oaC5zY3JvbGxUbyh5NShoKSxkKSxt''@;'; put 'put ''PSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcCE9PWQmJih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcD1kLG09ITApLG19fSx7a2V5OiJvblNjcm9sbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGlu''@;'; put 'put ''Zygib25TY3JvbGxIb3Jpem9udGFsbHkiKX19LHtrZXk6InN1bUNlbGxTaXplcyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSxfPWQsTz0wO188aDspe3ZhciBYPXRoaXMud290Lnd0VGFibGUuZ2V0''@;'; put 'put ''Um93SGVpZ2h0KF8pO08rPXZvaWQgMD09PVg/bTpYLF8rPTF9cmV0dXJuIE99fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnVwZGF0ZVRy''@;'; put 'put ''aW1taW5nQ29udGFpbmVyKCksKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fGQpJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9fSx7a2V5OiJhZGp1c3RSb290RWxlbWVudFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy53''@;'; put 'put ''b3Qud3RUYWJsZSxoPXRoaXMuZG9tQmluZGluZ3MsXz1oLnJvb3RXaW5kb3csTz1OdShoLnJvb3REb2N1bWVudCksYWU9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLnN0eWxlLHBlPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0''@;'; put 'put ''aGlzLnRyaW1taW5nQ29udGFpbmVyIT09X3x8Imhvcml6b250YWwiPT09cGUpe3ZhciBiZT10aGlzLndvdC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCk7dGhpcy53b3Qud3RPdmVybGF5cy5oYXNTY3JvbGxiYXJSaWdodCYmKGJlLT1PKSxiZT1NYXRoLm1pbihiZSxkLnd0Um9vdEVs''@;'; put 'put ''ZW1lbnQuc2Nyb2xsV2lkdGgpLGFlLndpZHRoPSIiLmNvbmNhdChiZSwicHgiKX1lbHNlIGFlLndpZHRoPSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5bGUud2lkdGg9YWUud2lkdGg7dmFyIHhlPWNzKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7dGhpcy53b3Qud3RUYWJsZS5o''@;'; put 'put ''YXNEZWZpbmVkU2l6ZSgpfHwoeGU9MCksYWUuaGVpZ2h0PSIiLmNvbmNhdCh4ZSwicHgiKX19LHtrZXk6ImFkanVzdFJvb3RDaGlsZHJlblNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQsaD10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLG09dGhpcy53b3Quc2VsZWN0aW9ucyxfPXRoaXMu''@;'; put 'put ''ZmFjYWRlR2V0dGVyKCksTz1NYXRoLmFicyhudWxsIT09KGQ9bT8uZ2V0Q2VsbCgpLmdldEJvcmRlcihfKS5jb3JuZXJDZW50ZXJQb2ludE9mZnNldCkmJnZvaWQgMCE9PWQ/ZDowKTt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUud2lkdGg9dGhpcy5oaWRlci5zdHlsZS53aWR0aCxo''@;'; put 'put ''LnN0eWxlLndpZHRoPWgucGFyZW50Tm9kZS5zdHlsZS53aWR0aCxoLnN0eWxlLmhlaWdodD0iIi5jb25jYXQocGFyc2VJbnQoaC5wYXJlbnROb2RlLnN0eWxlLmhlaWdodCwxMCkrTywicHgiKX19LHtrZXk6ImFwcGx5VG9ET00iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy53dFNldHRp''@;'; put 'put ''bmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpO2lmKCJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uKXRoaXMuc3ByZWFkZXIuc3R5bGUudG9wPSIiLmNvbmNhdCh0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5k''@;'; put 'put ''ZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sInB4Iik7ZWxzZXtpZigwIT09ZCl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB2YWx1ZSBvZiB0aGUgcm93c1JlbmRlckNhbGN1bGF0b3IiKTt0aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD0iMCJ9dGhpcy5zcHJlYWRlci5zdHlsZS5ib3R0b209''@;'; put 'put ''IiIsdGhpcy5uZWVkRnVsbFJlbmRlciYmdGhpcy5zeW5jT3ZlcmxheU9mZnNldCgpfX0se2tleToic3luY092ZXJsYXlPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiO3RoaXMuY2xvbmUud3RUYWJsZS5zcHJlYWRlci5zdHlsZVtkXT0i''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbj8iIi5jb25jYXQodGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLCJweCIpOiIifX0se2tleToic2Nyb2xs''@;'; put 'put ''VG8iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy53b3QsXz10aGlzLnd0U2V0dGluZ3MsWD0obS5jbG9uZVNvdXJjZT9tLmNsb25lU291cmNlOm0pLnd0VGFibGUuaG9sZGVyLGFlPXRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKSxwZT0wO2lmKGgmJnRoaXMud290Lnd0VGFibGUu''@;'; put 'put ''Z2V0Um93SGVpZ2h0KGQpPnRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRIZWlnaHQoKSYmKGg9ITEpLGgmJlgub2Zmc2V0SGVpZ2h0IT09WC5jbGllbnRIZWlnaHQmJihwZT1OdSh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLGgpe3ZhciBWZT1fLmdldFNldHRpbmcoImZp''@;'; put 'put ''eGVkUm93c0JvdHRvbSIpLFplPV8uZ2V0U2V0dGluZygidG90YWxSb3dzIik7YWUrPXRoaXMuc3VtQ2VsbFNpemVzKDAsZCsxKSxhZS09bS53dFZpZXdwb3J0LmdldFZpZXdwb3J0SGVpZ2h0KCktdGhpcy5zdW1DZWxsU2l6ZXMoWmUtVmUsWmUpLGFlKz0xfWVsc2UgYWUrPXRoaXMuc3VtQ2Vs''@;'; put 'put ''bFNpemVzKF8uZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksZCk7cmV0dXJuIHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24oYWUrPXBlKX19LHtrZXk6ImdldFRhYmxlUGFyZW50T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09''@;'; put 'put ''dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P3RoaXMud290Lnd0VGFibGUuaG9sZGVyT2Zmc2V0LnRvcDowfX0se2tleToiZ2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFVTKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdGhpcy5kb21CaW5kaW5n''@;'; put 'put ''cy5yb290V2luZG93KX19LHtrZXk6ImdldE92ZXJsYXlPZmZzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpLG09MDtpZih0aGlzLnRyaW1taW5nQ29udGFp''@;'; put 'put ''bmVyPT09ZCYmKCFofHwidmVydGljYWwiIT09aCkpe3ZhciBYPXRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKS10aGlzLmNsb25lLnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKTsobT1NYXRoLm1heCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVudE9m''@;'; put 'put ''ZnNldCgpLDApKT5YJiYobT0wKX1yZXR1cm4gbX19LHtrZXk6ImFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxtPXRoaXMud290Lnd0VGFibGUu''@;'; put 'put ''aG9sZGVyLnBhcmVudE5vZGU7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpP0pvKG0sImVtcHR5Q29sdW1ucyIpOmdpKG0sImVtcHR5Q29sdW1ucyIpO3ZhciBPPSExO2lmKCFoKXt2YXIgWD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9w''@;'; put 'put ''IiksYWU9dGhpcy5jYWNoZWRGaXhlZFJvd3NUb3AhPT1YLHBlPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIik7aWYoKGFlfHwwPT09WCkmJnBlLmxlbmd0aD4wKXt2YXIgYmU9WW8obSwiaW5uZXJCb3JkZXJUb3AiKTt0aGlzLmNhY2hlZEZpeGVkUm93c1RvcD10''@;'; put 'put ''aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksZHx8MD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8oZ2kobSwiaW5uZXJCb3JkZXJUb3AiKSxPPSFiZSk6KEpvKG0sImlubmVyQm9yZGVyVG9wIiksTz1iZSl9fXJldHVybiBPfX1dKSxh''@;'; put 'put ''fShTTSksSzFlPXtnZXRGaXJzdFJlbmRlcmVkUm93OmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGY9Yy1hO3JldHVybiAwPT09Y3x8MD09PWE/LTE6''@;'; put 'put ''ZjwwPzA6Zn0sZ2V0Rmlyc3RWaXNpYmxlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpfSxnZXRMYXN0UmVuZGVyZWRSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLTF9LGdldExhc3RWaXNp''@;'; put 'put ''YmxlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9LGdldFJlbmRlcmVkUm93c0NvdW50OmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpO3JldHVybiBNYXRoLm1pbih0aGlzLnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksYyl9LGdldFZpc2libGVSb3dzQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpfX07SGgoSzFlLCJNSVhJTl9OQU1FIiwic3RpY2t5Um93c0JvdHRvbSIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9''@;'; put 'put ''KTtjb25zdCBxMWU9SzFlO2Z1bmN0aW9uIHQ5KGwpe3JldHVybih0OT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFgxZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8''@;'; put 'put ''fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsREplKGYua2V5KSxmKX19ZnVuY3Rpb24gREplKGwpe3ZhciBjPWZ1bmN0aW9uIElKZShsLGMpe2lmKCJvYmplY3QiIT09dDkobCl8fG51bGw9PT1sKXJldHVy''@;'; put 'put ''biBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dDkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2''@;'; put 'put ''YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXQ5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGdXKGwsYyl7cmV0dXJuKGdXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Yu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gd1IobCl7cmV0dXJuKHdSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0''@;'; put 'put ''LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHZXPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBMSmUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rp''@;'; put 'put ''b24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZ1cobCxjKX0oYSxs''@;'; put 'put ''KTt2YXIgYz1mdW5jdGlvbiBQSmUobCl7dmFyIGM9ZnVuY3Rpb24gTkplKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1''@;'; put 'put ''cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9d1IobCk7aWYoYyl7dmFyIGg9d1IodGhpcykuY29uc3RydWN0b3I7''@;'; put 'put ''ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIEZKZShsLGMpe2lmKGMmJigib2JqZWN0Ij09PXQ5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBISmUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlz''@;'; put 'put ''ZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZixkLGgsbSl7cmV0dXJuIGZ1bmN0aW9uIFJKZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh''@;'; put 'put ''c3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuY2FsbCh0aGlzLGYsZCxoLG0sVmgpfXJldHVybiBmdW5jdGlvbiBPSmUobCxjLGEpe3JldHVybiBjJiZYMWUobC5wcm90b3R5cGUsYyksYSYmWDFlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxl''@;'; put 'put ''OiExfSksbH0oYSl9KFg3KTtUbCh2VyxxMWUpLFRsKHZXLHNXKTtjb25zdCBWSmU9dlc7ZnVuY3Rpb24gbjkobCl7cmV0dXJuKG45PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQ1IobCxjLGEpe3JldHVybihDUj1lZmUoKT9SZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdC5iaW5kKCk6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPVtudWxsXTtfLnB1c2guYXBwbHkoXyxoKTt2YXIgWD1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShkLF8pKTtyZXR1cm4gbSYmU1IoWCxtLnByb3RvdHlwZSksWH0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBKMWUobCxj''@;'; put 'put ''KXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHRmZShmLmtleSksZil9fWZ1bmN0aW9u''@;'; put 'put ''IFNSKGwsYyl7cmV0dXJuKFNSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gUTFlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVy''@;'; put 'put ''cm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBlZmUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtp''@;'; put 'put ''ZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gTVIobCl7cmV0dXJuKE1S''@;'; put 'put ''PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gdGZlKGwpe3ZhciBjPWZ1bmN0aW9uIFdKZShsLGMpe2lmKCJvYmplY3Qi''@;'; put 'put ''IT09bjkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09bjkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBt''@;'; put 'put ''dXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PW45KGMpP2M6U3RyaW5nKGMpfXZhciBHSmU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHpKZShsLGMpe2lmKCJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdy''@;'; put 'put ''aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZTUihsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIFVKZShsKXt2YXIgYz1lZmUoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPU1SKGwpO2lm''@;'; put 'put ''KGMpe3ZhciBoPU1SKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBaSmUobCxjKXtpZihjJiYoIm9iamVjdCI9PT1uOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gUTFlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQsaCxtKXt2YXIgXztyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gQkplKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksZnVuY3Rpb24gWUplKGwsYyxhKXsoYz10ZmUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hfShRMWUoXz1jLmNhbGwodGhpcyxmLGQsVmgsaCxtKSksImNhY2hlZEZpeGVkUm93c0JvdHRvbSIsLTEpLF8uY2FjaGVkRml4ZWRSb3dzQm90dG9tPV8ud3RTZXR0aW5ncy5nZXRT''@;'; put 'put ''ZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxffXJldHVybiBmdW5jdGlvbiBqSmUobCxjLGEpe2MmJkoxZShsLnByb3RvdHlwZSxjKSxhJiZKMWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiY3JlYXRlVGFibGUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksbT0wO208ZDttKyspaFttXT1hcmd1bWVudHNbbV07cmV0dXJuIENSKFZKZSxoKX19LHtrZXk6InNob3VsZEJlUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0''@;'; put 'put ''aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3ZhciBk''@;'; put 'put ''PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxoPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZTtoLnN0eWxlLnRvcD0iIjt2YXIgbT0wLF89dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO3RoaXMudHJpbW1pbmdDb250YWluZXIhPT1k''@;'; put 'put ''fHxfJiYidmVydGljYWwiPT09Xz8obT10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksdGhpcy5yZXBvc2l0aW9uT3ZlcmxheSgpKToobT10aGlzLmdldE92ZXJsYXlPZmZzZXQoKSxoLnN0eWxlLmJvdHRvbT0iIi5jb25jYXQobSwicHgiKSk7dmFyIE89dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJz''@;'; put 'put ''UG9zaXRpb24obSk7cmV0dXJuIHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCksT319LHtrZXk6InJlcG9zaXRpb25PdmVybGF5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMud290LGg9ZC53dFRhYmxlLG09ZC53dFZpZXdwb3J0LF89dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQs''@;'; put 'put ''Tz10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsWD0wO20uaGFzVmVydGljYWxTY3JvbGwoKXx8KFgrPW0uZ2V0V29ya3NwYWNlSGVpZ2h0KCktaC5nZXRUb3RhbEhlaWdodCgpKSxtLmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJm0uaGFzSG9yaXpvbnRhbFNjcm9sbCgpJiYoWCs9''@;'; put 'put ''TnUoXykpLE8uc3R5bGUuYm90dG9tPSIiLmNvbmNhdChYLCJweCIpfX0se2tleToic2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxtPSExO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09''@;'; put 'put ''aD8oaC5zY3JvbGxUbyh5NShoKSxkKSxtPSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcCE9PWQmJih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcD1kLG09ITApLG19fSx7a2V5OiJvblNjcm9sbCIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25TY3JvbGxIb3Jpem9udGFsbHkiKX19LHtrZXk6InN1bUNlbGxTaXplcyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy53b3QsXz1tLnd0VGFibGUsWD1tLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZGVmYXVsdFJvd0hlaWdo''@;'; put 'put ''dCIpLGFlPWQscGU9MDthZTxoOyl7dmFyIGJlPV8uZ2V0Um93SGVpZ2h0KGFlKTtwZSs9dm9pZCAwPT09YmU/WDpiZSxhZSs9MX1yZXR1cm4gcGV9fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fGQpJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9fSx7a2V5OiJhZGp1c3RSb290RWxl''@;'; put 'put ''bWVudFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy53b3QsaD1kLnd0VGFibGUsbT1kLnd0Vmlld3BvcnQsXz10aGlzLmRvbUJpbmRpbmdzLFg9Xy5yb290V2luZG93LGFlPU51KF8ucm9vdERvY3VtZW50KSxiZT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUu''@;'; put 'put ''c3R5bGUseGU9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXIhPT1YfHwiaG9yaXpvbnRhbCI9PT14ZSl7dmFyIFZlPW0uZ2V0V29ya3NwYWNlV2lkdGgoKTt0aGlzLndvdC53dE92ZXJsYXlzLmhhc1Njcm9sbGJh''@;'; put 'put ''clJpZ2h0JiYoVmUtPWFlKSxWZT1NYXRoLm1pbihWZSxoLnd0Um9vdEVsZW1lbnQuc2Nyb2xsV2lkdGgpLGJlLndpZHRoPSIiLmNvbmNhdChWZSwicHgiKX1lbHNlIGJlLndpZHRoPSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5bGUud2lkdGg9YmUud2lkdGg7dmFyIFplPWNzKHRo''@;'; put 'put ''aXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7dGhpcy53b3Qud3RUYWJsZS5oYXNEZWZpbmVkU2l6ZSgpfHwoWmU9MCksYmUuaGVpZ2h0PSIiLmNvbmNhdChaZSwicHgiKX19LHtrZXk6ImFkanVzdFJvb3RDaGlsZHJlblNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jbG9uZS53dFRh''@;'; put 'put ''YmxlLmhvbGRlcjt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUud2lkdGg9dGhpcy5oaWRlci5zdHlsZS53aWR0aCxkLnN0eWxlLndpZHRoPWQucGFyZW50Tm9kZS5zdHlsZS53aWR0aCxkLnN0eWxlLmhlaWdodD1kLnBhcmVudE5vZGUuc3R5bGUuaGVpZ2h0fX0se2tleToiYXBwbHlU''@;'; put 'put ''b0RPTSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24pdGhpcy5zcHJlYWRlci5zdHlsZS50''@;'; put 'put ''b3A9IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKTtlbHNle2lmKDAhPT1kKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSByb3dzUmVuZGVyQ2FsY3VsYXRvciIpO3RoaXMuc3ByZWFkZXIu''@;'; put 'put ''c3R5bGUudG9wPSIwIn10aGlzLnNwcmVhZGVyLnN0eWxlLmJvdHRvbT0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9fSx7a2V5OiJzeW5jT3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmlzUnRsKCk/InJpZ2h0IjoibGVm''@;'; put 'put ''dCI7dGhpcy5jbG9uZS53dFRhYmxlLnNwcmVhZGVyLnN0eWxlW2RdPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uPyIiLmNvbmNhdCh0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxh''@;'; put 'put ''dG9yLnN0YXJ0UG9zaXRpb24sInB4Iik6IiJ9fSx7a2V5OiJzY3JvbGxUbyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksTz0odGhpcy53b3QuY2xvbmVTb3VyY2U/dGhpcy53b3QuY2xvbmVTb3VyY2U6dGhpcy53b3QpLnd0VGFibGUuaG9s''@;'; put 'put ''ZGVyLFg9MDtoJiZPLm9mZnNldEhlaWdodCE9PU8uY2xpZW50SGVpZ2h0JiYoWD1OdSh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLGg/KG0rPXRoaXMuc3VtQ2VsbFNpemVzKDAsZCsxKSxtLT10aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0SGVpZ2h0KCksbSs9MSk6bSs9''@;'; put 'put ''dGhpcy5zdW1DZWxsU2l6ZXModGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGQpLHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24obSs9WCl9fSx7a2V5OiJnZXRUYWJsZVBhcmVudE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYWluVGFibGVT''@;'; put 'put ''Y3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz90aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC50b3A6MH19LHtrZXk6ImdldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBVUyh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVt''@;'; put 'put ''ZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl9fSx7a2V5OiJnZXRPdmVybGF5T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxtPTA7aWYo''@;'; put 'put ''dGhpcy50cmltbWluZ0NvbnRhaW5lcj09PWQmJighaHx8InZlcnRpY2FsIiE9PWgpKXt2YXIgXz10aGlzLndvdC53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCksWD1fLXRoaXMuY2xvbmUud3RUYWJsZS5nZXRUb3RhbEhlaWdodCgpLGFlPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmRv''@;'; put 'put ''Y3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7KG09TWF0aC5tYXgodGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS1hZStfLDApKT5YJiYobT0wKX1yZXR1cm4gbX19LHtrZXk6ImFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbiIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oZCl7dmFyIGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLG09dGhpcy5jYWNoZWRGaXhlZFJvd3NCb3R0b20hPT1oLF89dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKSxPPSExO2lmKChtfHwwPT09aCkmJl8ubGVu''@;'; put 'put ''Z3RoPjApe3ZhciBYPXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsYWU9WW8oWCwiaW5uZXJCb3JkZXJCb3R0b20iKTt0aGlzLmNhY2hlZEZpeGVkUm93c0JvdHRvbT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksZHx8MD09PXRoaXMud3RT''@;'; put 'put ''ZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8oZ2koWCwiaW5uZXJCb3JkZXJCb3R0b20iKSxPPSFhZSk6KEpvKFgsImlubmVyQm9yZGVyQm90dG9tIiksTz1hZSl9cmV0dXJuIE99fV0pLGF9KFNNKSxuZmU9e2dldEZpcnN0UmVuZGVyZWRSb3c6ZnVuY3Rpb24oKXt2YXIgYz10aGlz''@;'; put 'put ''LmRhdGFBY2Nlc3NPYmplY3Quc3RhcnRSb3dSZW5kZXJlZDtyZXR1cm4gbnVsbD09PWM/LTE6Y30sZ2V0Rmlyc3RWaXNpYmxlUm93OmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Um93VmlzaWJsZTtyZXR1cm4gbnVsbD09PWM/LTE6Y30sZ2V0TGFzdFJlbmRl''@;'; put 'put ''cmVkUm93OmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZFJvd1JlbmRlcmVkO3JldHVybiBudWxsPT09Yz8tMTpjfSxnZXRMYXN0VmlzaWJsZVJvdzpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRSb3dWaXNpYmxlO3JldHVybiBudWxs''@;'; put 'put ''PT09Yz8tMTpjfSxnZXRSZW5kZXJlZFJvd3NDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRSb3dzUmVuZGVyZWR9LGdldFZpc2libGVSb3dzQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Um93c1Zpc2li''@;'; put 'put ''bGV9fTtIaChuZmUsIk1JWElOX05BTUUiLCJjYWxjdWxhdGVkUm93cyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCByZmU9bmZlO3ZhciBpZmU9e2dldEZpcnN0UmVuZGVyZWRDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5n''@;'; put 'put ''KCJ0b3RhbENvbHVtbnMiKT8tMTowfSxnZXRGaXJzdFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCl9LGdldExhc3RSZW5kZXJlZENvbHVtbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCkt''@;'; put 'put ''MX0sZ2V0TGFzdFZpc2libGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX0sZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQ6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIik7cmV0dXJuIE1h''@;'; put 'put ''dGgubWluKHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGMpfSxnZXRWaXNpYmxlQ29sdW1uc0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKX19O0hoKGlmZSwiTUlYSU5fTkFNRSIsInN0aWNreUNvbHVt''@;'; put 'put ''bnNTdGFydCIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCB5Vz1pZmU7ZnVuY3Rpb24gcjkobCl7cmV0dXJuKHI5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gb2ZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3Zh''@;'; put 'put ''ciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxYSmUoZi5rZXkpLGYpfX1mdW5jdGlvbiBYSmUobCl7dmFyIGM9ZnVuY3Rpb24gSkplKGwsYyl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1yOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1yOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRv''@;'; put 'put ''UHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09cjkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gYlcobCxjKXtyZXR1cm4oYlc9T2JqZWN0LnNl''@;'; put 'put ''dFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBrUihsKXtyZXR1cm4oa1I9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgX1c9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGVRZShsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz''@;'; put 'put ''aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90''@;'; put 'put ''eXBlIix7d3JpdGFibGU6ITF9KSxjJiZiVyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHRRZShsKXt2YXIgYz1mdW5jdGlvbiBpUWUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1rUihs''@;'; put 'put ''KTtpZihjKXt2YXIgaD1rUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gblFlKGwsYyl7aWYoYyYmKCJvYmplY3QiPT09cjkoYyl8fCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIHJRZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVu''@;'; put 'put ''Y2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQsaCxtKXtyZXR1cm4gZnVuY3Rpb24gUUplKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5jYWxsKHRoaXMsZixkLGgsbSxDNSl9cmV0dXJuIGZ1bmN0aW9uIHFKZShsLGMsYSl7cmV0dXJuIGMmJm9mZShsLnByb3RvdHlwZSxjKSxhJiZvZmUobCxhKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxsfShhKX0oWDcpO1RsKF9XLHJmZSksVGwoX1cseVcpO2NvbnN0IG9RZT1fVztmdW5jdGlvbiBpOShsKXtyZXR1cm4oaTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBFUihs''@;'; put 'put ''LGMsYSl7cmV0dXJuKEVSPWxmZSgpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbihkLGgsbSl7dmFyIF89W251bGxdO18ucHVzaC5hcHBseShfLGgpO3ZhciBYPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGQsXykpO3JldHVybiBtJiZ4UihYLG0ucHJvdG90eXBlKSxYfSkuYXBw''@;'; put 'put ''bHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGFmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGwsc1FlKGYua2V5KSxmKX19ZnVuY3Rpb24gc1FlKGwpe3ZhciBjPWZ1bmN0aW9uIHVRZShsLGMpe2lmKCJvYmplY3QiIT09aTkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxj''@;'; put 'put ''fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09aTkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1''@;'; put 'put ''cm4ic3ltYm9sIj09PWk5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHhSKGwsYyl7cmV0dXJuKHhSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gbGZl''@;'; put 'put ''KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEFSKGwpe3JldHVybihBUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9i''@;'; put 'put ''amVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBwUWU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGNRZShsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm''@;'; put 'put ''dW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZ4UihsLGMp''@;'; put 'put ''fShhLGwpO3ZhciBjPWZ1bmN0aW9uIGZRZShsKXt2YXIgYz1sZmUoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUFSKGwpO2lmKGMpe3ZhciBoPUFSKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpO3JldHVybiBmdW5jdGlvbiBkUWUobCxjKXtpZihjJiYoIm9iamVjdCI9PT1pOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVj''@;'; put 'put ''dCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gaFFlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShh''@;'; put 'put ''KTtmdW5jdGlvbiBhKGYsZCxoLG0pe3JldHVybiBmdW5jdGlvbiBhUWUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmNhbGwodGhpcyxmLGQsQzUsaCxtKX1yZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gbFFlKGwsYyxhKXtjJiZhZmUobC5wcm90b3R5cGUsYyksYSYmYWZlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3JldHVybiBFUihvUWUsaCl9fSx7a2V5OiJzaG91bGRCZVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5l''@;'; put 'put ''U3RhcnRPdmVybGF5Iil9fSx7a2V5OiJyZXNldEZpeGVkUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLndvdC53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKXJldHVybiExO3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxt''@;'; put 'put ''PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxfPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxPPTA7dGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWh8fF8mJiJob3Jpem9udGFsIj09PV8/KE89dGhpcy5nZXRTY3JvbGxQb3NpdGlvbigp''@;'; put 'put ''LEdTKG0pKTooTz10aGlzLmdldE92ZXJsYXlPZmZzZXQoKSoodGhpcy5pc1J0bCgpPy0xOjEpLHFJKG0sIiIuY29uY2F0KE8sInB4IiksIjBweCIpKTt2YXIgWD10aGlzLmFkanVzdEhlYWRlckJvcmRlcnNQb3NpdGlvbihPKTtyZXR1cm4gdGhpcy5hZGp1c3RFbGVtZW50c1NpemUoKSxYfX0s''@;'; put 'put ''e2tleToic2V0U2Nyb2xsUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxtPSExO3JldHVybiB0aGlzLmlzUnRsKCkmJihkPS1kKSx0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09aCYmaC5zY3JvbGxYIT09ZD8oaC5z''@;'; put 'put ''Y3JvbGxUbyhkLFY3KGgpKSxtPSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQhPT1kJiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0PWQsbT0hMCksbX19LHtrZXk6Im9uU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''d3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbFZlcnRpY2FsbHkiKX19LHtrZXk6InN1bUNlbGxTaXplcyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpLF89ZCxPPTA7XzxoOylPKz10aGlz''@;'; put 'put ''LndvdC53dFRhYmxlLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKF8pfHxtLF8rPTE7cmV0dXJuIE99fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0''@;'; put 'put ''aGlzLnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksKHRoaXMubmVlZEZ1bGxSZW5kZXJ8fGQpJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9fSx7a2V5OiJhZGp1c3RSb290RWxlbWVudFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIGQ9dGhpcy53b3Qud3RUYWJsZSxoPXRoaXMuZG9tQmluZGluZ3MsXz1oLnJvb3RXaW5kb3csTz1OdShoLnJvb3REb2N1bWVudCksYWU9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlLnN0eWxlLHBlPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3Zl''@;'; put 'put ''cmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09X3x8InZlcnRpY2FsIj09PXBlKXt2YXIgYmU9dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKTt0aGlzLndvdC53dE92ZXJsYXlzLmhhc1Njcm9sbGJhckJvdHRvbSYmKGJlLT1PKSxiZT1NYXRoLm1pbihi''@;'; put 'put ''ZSxkLnd0Um9vdEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KSxhZS5oZWlnaHQ9IiIuY29uY2F0KGJlLCJweCIpfWVsc2UgYWUuaGVpZ2h0PSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5bGUuaGVpZ2h0PWFlLmhlaWdodDt2YXIgeGU9U2wodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTth''@;'; put 'put ''ZS53aWR0aD0iIi5jb25jYXQoeGUsInB4Iil9fSx7a2V5OiJhZGp1c3RSb290Q2hpbGRyZW5TaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkLGg9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlcixtPXRoaXMud290LnNlbGVjdGlvbnMsXz10aGlzLmZhY2FkZUdldHRlcigpLE89TWF0aC5hYnMo''@;'; put 'put ''bnVsbCE9PShkPW0/LmdldENlbGwoKS5nZXRCb3JkZXIoXykuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQpJiZ2b2lkIDAhPT1kP2Q6MCk7dGhpcy5jbG9uZS53dFRhYmxlLmhpZGVyLnN0eWxlLmhlaWdodD10aGlzLmhpZGVyLnN0eWxlLmhlaWdodCxoLnN0eWxlLmhlaWdodD1oLnBhcmVudE5v''@;'; put 'put ''ZGUuc3R5bGUuaGVpZ2h0LGguc3R5bGUud2lkdGg9IiIuY29uY2F0KHBhcnNlSW50KGgucGFyZW50Tm9kZS5zdHlsZS53aWR0aCwxMCkrTywicHgiKX19LHtrZXk6ImFwcGx5VG9ET00iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29s''@;'; put 'put ''dW1ucyIpLGg9dGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiO2lmKCJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uKXRoaXMuc3ByZWFkZXIuc3R5bGVbaF09IiIuY29uY2F0KHRoaXMud290Lnd0Vmlld3Bv''@;'; put 'put ''cnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbiwicHgiKTtlbHNle2lmKDAhPT1kKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSBjb2x1bW5zUmVuZGVyQ2FsY3VsYXRvciIpO3RoaXMuc3ByZWFkZXIuc3R5bGVbaF09IjAifXRoaXMuaXNSdGwo''@;'; put 'put ''KT90aGlzLnNwcmVhZGVyLnN0eWxlLmxlZnQ9IiI6dGhpcy5zcHJlYWRlci5zdHlsZS5yaWdodD0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9fSx7a2V5OiJzeW5jT3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb25lLnd0VGFi''@;'; put 'put ''bGUuc3ByZWFkZXIuc3R5bGUudG9wPSJudW1iZXIiPT10eXBlb2YgdGhpcy53b3Qud3RWaWV3cG9ydC5yb3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uPyIiLmNvbmNhdCh0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sInB4Iik6''@;'; put 'put ''IiJ9fSx7a2V5OiJzY3JvbGxUbyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCksTz0odGhpcy53b3QuY2xvbmVTb3VyY2U/dGhpcy53b3QuY2xvbmVTb3VyY2U6dGhpcy53b3QpLnd0VGFibGUuaG9sZGVyLFg9MDtyZXR1cm4gaCYmdGhpcy53''@;'; put 'put ''b3Qud3RUYWJsZS5nZXRDb2x1bW5XaWR0aChkKT50aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0V2lkdGgoKSYmKGg9ITEpLGgmJk8ub2Zmc2V0V2lkdGghPT1PLmNsaWVudFdpZHRoJiYoWD1OdSh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLGg/KG0rPXRoaXMuc3VtQ2Vs''@;'; put 'put ''bFNpemVzKDAsZCsxKSxtLT10aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0V2lkdGgoKSk6bSs9dGhpcy5zdW1DZWxsU2l6ZXModGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IiksZCksdGhpcy5zZXRTY3JvbGxQb3NpdGlvbihtKz1YKX19LHtrZXk6''@;'; put 'put ''ImdldFRhYmxlUGFyZW50T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoPTA7cmV0dXJuIXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSYmdGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyYmKGg9dGhpcy53''@;'; put 'put ''b3Qud3RUYWJsZS5ob2xkZXJPZmZzZXQubGVmdCksaH19LHtrZXk6ImdldFNjcm9sbFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyhLSSh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdykpfX0se2tleToi''@;'; put 'put ''Z2V0T3ZlcmxheU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csaD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93IiksbT0wO3JldHVybiB0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09ZHx8aCYmImhvcml6''@;'; put 'put ''b250YWwiPT09aHx8KG09dGhpcy5pc1J0bCgpP01hdGguYWJzKE1hdGgubWluKHRoaXMuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKS10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksMCkpOk1hdGgubWF4KHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCks''@;'; put 'put ''MCkpPnRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxXaWR0aCgpLXRoaXMuY2xvbmUud3RUYWJsZS5nZXRUb3RhbFdpZHRoKCkmJihtPTApLG19fSx7a2V5OiJhZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMud290Lnd0VGFibGUuaG9sZGVy''@;'; put 'put ''LnBhcmVudE5vZGUsbT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLF89dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpP0pvKGgsImVtcHR5Um93cyIpOmdp''@;'; put 'put ''KGgsImVtcHR5Um93cyIpO3ZhciBYPSExO2lmKF8mJiFtLmxlbmd0aClnaShoLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpO2Vsc2UgaWYoIV8mJm0ubGVuZ3RoKXt2YXIgYWU9WW8oaCwiaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpO2Q/KGdpKGgsImlubmVyQm9y''@;'; put 'put ''ZGVyTGVmdCBpbm5lckJvcmRlcklubGluZVN0YXJ0IiksWD0hYWUpOihKbyhoLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpLFg9YWUpfXJldHVybiBYfX1dKSxhfShTTSk7ZnVuY3Rpb24gbzkobCl7cmV0dXJuKG85PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wi''@;'; put 'put ''OnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gc2ZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCxnUWUoZi5rZXkpLGYpfX1mdW5jdGlvbiBnUWUobCl7dmFyIGM9ZnVuY3Rpb24gdlFlKGwsYyl7aWYoIm9iamVjdCIhPT1vOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJk''@;'; put 'put ''ZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1vOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJz''@;'; put 'put ''eW1ib2wiPT09bzkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gd1cobCxjKXtyZXR1cm4od1c9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBUUihsKXty''@;'; put 'put ''ZXR1cm4oVFI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgQ1c9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGJRZShsLGMpe2lmKCJm''@;'; put 'put ''dW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTps''@;'; put 'put ''LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZ3VyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIF9RZShsKXt2YXIgYz1mdW5jdGlvbiBTUWUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8''@;'; put 'put ''fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5j''@;'; put 'put ''dGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1UUihsKTtpZihjKXt2YXIgaD1UUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gd1FlKGwsYyl7aWYoYyYmKCJvYmplY3QiPT09bzkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5k''@;'; put 'put ''ZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIENRZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rp''@;'; put 'put ''b24gYShmLGQsaCxtKXtyZXR1cm4gZnVuY3Rpb24geVFlKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5jYWxsKHRoaXMsZixkLGgsbSxTNSl9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IG1RZShsLGMsYSl7cmV0dXJuIGMmJnNmZShsLnByb3RvdHlwZSxjKSxhJiZzZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxsfShhKX0oWDcpO1RsKENXLEUxZSksVGwoQ1cseVcpO2NvbnN0IE1RZT1DVztmdW5jdGlvbiBhOShsKXty''@;'; put 'put ''ZXR1cm4oYTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5''@;'; put 'put ''bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBPUihsLGMsYSl7cmV0dXJuKE9SPWNmZSgpP1JlZmxlY3QuY29uc3RydWN0LmJpbmQoKTpmdW5jdGlvbihkLGgsbSl7dmFyIF89W251bGxdO18ucHVzaC5hcHBseShfLGgpO3ZhciBYPW5l''@;'; put 'put ''dyhGdW5jdGlvbi5iaW5kLmFwcGx5KGQsXykpO3JldHVybiBtJiZEUihYLG0ucHJvdG90eXBlKSxYfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHVmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8''@;'; put 'put ''fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZGZlKGYua2V5KSxmKX19ZnVuY3Rpb24gRFIobCxjKXtyZXR1cm4oRFI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBTVyhsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0''@;'; put 'put ''dXJuIGx9ZnVuY3Rpb24gY2ZlKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFs''@;'; put 'put ''dWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIElSKGwpe3JldHVybihJUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfWZ1bmN0aW9uIGZmZShsLGMsYSl7cmV0dXJuKGM9ZGZlKGMpKWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0p''@;'; put 'put ''OmxbY109YSxsfWZ1bmN0aW9uIGRmZShsKXt2YXIgYz1mdW5jdGlvbiBPUWUobCxjKXtpZigib2JqZWN0IiE9PWE5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigi''@;'; put 'put ''b2JqZWN0IiE9PWE5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1hOShj''@;'; put 'put ''KT9jOlN0cmluZyhjKX12YXIgRFFlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB4UWUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnBy''@;'; put 'put ''b3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmRFIobCxjKX0oYSxsKTt2YXIgYz1m''@;'; put 'put ''dW5jdGlvbiBBUWUobCl7dmFyIGM9Y2ZlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1JUihsKTtpZihjKXt2YXIgaD1JUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gVFFlKGwsYyl7aWYoYyYmKCJvYmplY3QiPT09YTkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVk''@;'; put 'put ''Iik7cmV0dXJuIFNXKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQsaCxtLF8sTyl7dmFyIFg7cmV0dXJuIGZ1bmN0aW9uIGtRZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0''@;'; put 'put ''aGlzLGEpLGZmZShTVyhYPWMuY2FsbCh0aGlzLGYsZCxTNSxoLG0pKSwidG9wT3ZlcmxheSIsdm9pZCAwKSxmZmUoU1coWCksImlubGluZVN0YXJ0T3ZlcmxheSIsdm9pZCAwKSxYLnRvcE92ZXJsYXk9XyxYLmlubGluZVN0YXJ0T3ZlcmxheT1PLFh9cmV0dXJuIGZ1bmN0aW9uIEVRZShsLGMs''@;'; put 'put ''YSl7YyYmdWZlKGwucHJvdG90eXBlLGMpLGEmJnVmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJjcmVhdGVUYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJh''@;'; put 'put ''eShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gT1IoTVFlLGgpfX0se2tleToic2hvdWxkQmVSZW5kZXJlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKSYmdGhpcy53dFNl''@;'; put 'put ''dHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfX0se2tleToicmVzZXRGaXhlZFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9k''@;'; put 'put ''ZSlyZXR1cm4hMTt2YXIgZD10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGU7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl7dmFyIGg9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpKih0aGlz''@;'; put 'put ''LmlzUnRsKCk/LTE6MSksbT10aGlzLnRvcE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpO3FJKGQsIiIuY29uY2F0KGgsInB4IiksIiIuY29uY2F0KG0sInB4IikpfWVsc2UgR1MoZCk7dmFyIF89Y3ModGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKSxPPVNsKHRoaXMuY2xvbmUud3RUYWJsZS5U''@;'; put 'put ''QUJMRSk7cmV0dXJuIHRoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KF89MCksZC5zdHlsZS5oZWlnaHQ9IiIuY29uY2F0KF8sInB4IiksZC5zdHlsZS53aWR0aD0iIi5jb25jYXQoTywicHgiKSwhMX19XSksYX0oU00pO2Z1bmN0aW9uIGw5KGwpe3JldHVybihsOT0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGhmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsUlFlKGYua2V5KSxmKX19ZnVuY3Rpb24gUlFlKGwpe3ZhciBjPWZ1bmN0aW9uIExRZShsLGMpe2lmKCJvYmplY3QiIT09bDkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2''@;'; put 'put ''YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09bDkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShs''@;'; put 'put ''LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWw5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIE1XKGwsYyl7cmV0dXJuKE1XPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGws''@;'; put 'put ''Yyl9ZnVuY3Rpb24gUlIobCl7cmV0dXJuKFJSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIGtXPWZ1bmN0aW9uKGwpeyFmdW5j''@;'; put 'put ''dGlvbiBGUWUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtj''@;'; put 'put ''b25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmTVcobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBIUWUobCl7dmFyIGM9ZnVuY3Rpb24gQlFlKCl7aWYo''@;'; put 'put ''dHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9UlIobCk7aWYoYyl7dmFyIGg9UlIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIE5RZShsLGMpe2lmKGMmJigib2JqZWN0Ij09PWw5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSBy''@;'; put 'put ''ZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBWUWUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0o''@;'; put 'put ''dGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZixkLGgsbSl7cmV0dXJuIGZ1bmN0aW9uIFBRZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuY2FsbCh0aGlzLGYsZCxoLG0s''@;'; put 'put ''UjQpfXJldHVybiBmdW5jdGlvbiBJUWUobCxjLGEpe3JldHVybiBjJiZoZmUobC5wcm90b3R5cGUsYyksYSYmaGZlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH0oYSl9KFg3KTtUbChrVyxxMWUpLFRsKGtXLHlXKTtjb25zdCBqUWU9''@;'; put 'put ''a1c7ZnVuY3Rpb24gczkobCl7cmV0dXJuKHM5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gTFIobCxjLGEpe3JldHVybihMUj1tZmUoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPVtudWxsXTtfLnB1c2gu''@;'; put 'put ''YXBwbHkoXyxoKTt2YXIgWD1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShkLF8pKTtyZXR1cm4gbSYmUFIoWCxtLnByb3RvdHlwZSksWH0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBwZmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1l''@;'; put 'put ''cmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFpRZShmLmtleSksZil9fWZ1bmN0aW9uIFpRZShsKXt2YXIgYz1mdW5jdGlvbiBZUWUobCxjKXtpZigib2JqZWN0IiE9PXM5''@;'; put 'put ''KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXM5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCBy''@;'; put 'put ''ZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1zOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBQUihsLGMpe3JldHVybihQUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2Jq''@;'; put 'put ''ZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIG1mZSgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBGUihsKXtyZXR1cm4oRlI9T2Jq''@;'; put 'put ''ZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgcVFlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBXUWUobCxjKXtpZigiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZToh''@;'; put 'put ''MCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmUFIobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBHUWUobCl7dmFyIGM9bWZlKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1GUihsKTtpZihjKXt2YXIg''@;'; put 'put ''aD1GUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gJFFlKGwsYyl7aWYoYyYmKCJvYmplY3QiPT09czkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1''@;'; put 'put ''cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEtRZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhp''@;'; put 'put ''cyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQsaCxtLF8sTyl7dmFyIFg7cmV0dXJuIGZ1bmN0aW9uIHpRZShsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChYPWMuY2FsbCh0aGlzLGYsZCxSNCxoLG0pKS5ib3R0b21PdmVybGF5PV8sWC5pbmxpbmVTdGFydE92ZXJsYXk9TyxYfXJldHVybiBmdW5jdGlvbiBVUWUobCxjLGEpe2MmJnBmZShs''@;'; put 'put ''LnByb3RvdHlwZSxjKSxhJiZwZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiY3JlYXRlVGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksbT0wO208''@;'; put 'put ''ZDttKyspaFttXT1hcmd1bWVudHNbbV07cmV0dXJuIExSKGpRZSxoKX19LHtrZXk6InNob3VsZEJlUmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5IikmJnRoaXMud3RTZXR0aW5ncy5n''@;'; put 'put ''ZXRTZXR0aW5nKCJzaG91bGRSZW5kZXJJbmxpbmVTdGFydE92ZXJsYXkiKX19LHtrZXk6InJlc2V0Rml4ZWRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLndvdDtpZih0aGlzLnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksIWQud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9k''@;'; put 'put ''ZSlyZXR1cm4hMTt2YXIgaD10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGU7aWYoaC5zdHlsZS50b3A9IiIsdGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl7dmFyIG09dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3Zlcmxh''@;'; put 'put ''eU9mZnNldCgpLF89dGhpcy5ib3R0b21PdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKTtoLnN0eWxlW3RoaXMuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09IiIuY29uY2F0KG0sInB4IiksaC5zdHlsZS5ib3R0b209IiIuY29uY2F0KF8sInB4Iil9ZWxzZSBHUyhoKSx0aGlzLnJlcG9zaXRpb25P''@;'; put 'put ''dmVybGF5KCk7dmFyIE89Y3ModGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKSxYPVNsKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7cmV0dXJuIHRoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KE89MCksaC5zdHlsZS5oZWlnaHQ9IiIuY29uY2F0KE8sInB4IiksaC5zdHlsZS53''@;'; put 'put ''aWR0aD0iIi5jb25jYXQoWCwicHgiKSwhMX19LHtrZXk6InJlcG9zaXRpb25PdmVybGF5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMud290LGg9ZC53dFRhYmxlLG09ZC53dFZpZXdwb3J0LF89dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQsTz10aGlzLmNsb25lLnd0VGFibGUu''@;'; put 'put ''aG9sZGVyLnBhcmVudE5vZGUsWD0wO20uaGFzVmVydGljYWxTY3JvbGwoKXx8KFgrPW0uZ2V0V29ya3NwYWNlSGVpZ2h0KCktaC5nZXRUb3RhbEhlaWdodCgpKSxtLmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJm0uaGFzSG9yaXpvbnRhbFNjcm9sbCgpJiYoWCs9TnUoXykpLE8uc3R5bGUuYm90dG9t''@;'; put 'put ''PSIiLmNvbmNhdChYLCJweCIpfX1dKSxhfShTTSk7ZnVuY3Rpb24gTU0obCl7cmV0dXJuKE1NPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMm''@;'; put 'put ''JiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gTDQobCxjLGEpe3JldHVybihMND1mdW5jdGlvbiBYUWUoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFS''@;'; put 'put ''ZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlv''@;'; put 'put ''bigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz1bbnVsbF07Xy5wdXNoLmFwcGx5KF8saCk7dmFyIFg9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoZCxfKSk7cmV0dXJuIG0mJkVXKFgsbS5wcm90b3R5cGUp''@;'; put 'put ''LFh9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gRVcobCxjKXtyZXR1cm4oRVc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBnZmUobCxj''@;'; put 'put ''KXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHZmZShmLmtleSksZil9fWZ1bmN0aW9u''@;'; put 'put ''IGgzKGwsYyxhKXtyZXR1cm4oYz12ZmUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gdmZlKGwpe3ZhciBjPWZ1bmN0aW9uIGVldChsLGMpe2lmKCJv''@;'; put 'put ''YmplY3QiIT09TU0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09TU0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1p''@;'; put 'put ''dGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU1NKGMpP2M6U3RyaW5nKGMpfXZhciB0ZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSxmLGQsaCxt''@;'; put 'put ''KXt2YXIgXz10aGlzOyhmdW5jdGlvbiBKUWUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksaDModGhpcywid290IixudWxsKSxoMyh0aGlzLCJ0b3BPdmVybGF5IixudWxs''@;'; put 'put ''KSxoMyh0aGlzLCJib3R0b21PdmVybGF5IixudWxsKSxoMyh0aGlzLCJpbmxpbmVTdGFydE92ZXJsYXkiLG51bGwpLGgzKHRoaXMsInRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSIsbnVsbCksaDModGhpcywiYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5IixudWxsKSxoMyh0aGlz''@;'; put 'put ''LCJicm93c2VyTGluZUhlaWdodCIsdm9pZCAwKSxoMyh0aGlzLCJ3dFNldHRpbmdzIixudWxsKSxoMyh0aGlzLCJyZXNpemVPYnNlcnZlciIsbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uKGJlKXtCSShmdW5jdGlvbigpeyFBcnJheS5pc0FycmF5KGJlKXx8IWJlLmxlbmd0aHx8Xy53dFNl''@;'; put 'put ''dHRpbmdzLmdldFNldHRpbmcoIm9uQ29udGFpbmVyRWxlbWVudFJlc2l6ZSIpfSl9KSksdGhpcy53b3Q9Yyx0aGlzLnd0U2V0dGluZ3M9ZCx0aGlzLmRvbUJpbmRpbmdzPWYsdGhpcy5mYWNhZGVHZXR0ZXI9YSx0aGlzLnd0VGFibGU9bTt2YXIgTz10aGlzLmRvbUJpbmRpbmdzLFg9Ty5yb290''@;'; put 'put ''RG9jdW1lbnQsYWU9Ty5yb290V2luZG93O3RoaXMuaW5zdGFuY2U9dGhpcy53b3QsdGhpcy5ldmVudE1hbmFnZXI9aCx0aGlzLnNjcm9sbGJhclNpemU9TnUoWCk7dmFyIHBlPSJoaWRkZW4iPT09YWUuZ2V0Q29tcHV0ZWRTdHlsZShtLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSkuZ2V0UHJv''@;'; put 'put ''cGVydHlWYWx1ZSgib3ZlcmZsb3ciKTt0aGlzLnNjcm9sbGFibGVFbGVtZW50PXBlP20uaG9sZGVyOlpTKG0uVEFCTEUpLHRoaXMuaW5pdE92ZXJsYXlzKCksdGhpcy5oYXNTY3JvbGxiYXJCb3R0b209ITEsdGhpcy5oYXNTY3JvbGxiYXJSaWdodD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlz''@;'; put 'put ''LmtleVByZXNzZWQ9ITEsdGhpcy5zcHJlYWRlckxhc3RTaXplPXt3aWR0aDpudWxsLGhlaWdodDpudWxsfSx0aGlzLnZlcnRpY2FsU2Nyb2xsaW5nPSExLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz0hMSx0aGlzLmluaXRCcm93c2VyTGluZUhlaWdodCgpLHRoaXMucmVnaXN0ZXJMaXN0ZW5l''@;'; put 'put ''cnMoKSx0aGlzLmxhc3RTY3JvbGxYPWFlLnNjcm9sbFgsdGhpcy5sYXN0U2Nyb2xsWT1hZS5zY3JvbGxZfXJldHVybiBmdW5jdGlvbiBRUWUobCxjLGEpe2MmJmdmZShsLnByb3RvdHlwZSxjKSxhJiZnZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFi''@;'; put 'put ''bGU6ITF9KX0obCxbe2tleToiZ2V0T3ZlcmxheXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGY9W3RoaXMudG9wT3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSx0aGlzLmJvdHRvbU92ZXJsYXksdGhpcy5ib3R0b21JbmxpbmVT''@;'; put 'put ''dGFydENvcm5lck92ZXJsYXldO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdJiZmLnB1c2godGhpcy53dFRhYmxlKSxmfX0se2tleToiaW5pdEJyb3dzZXJMaW5lSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMu''@;'; put 'put ''ZG9tQmluZGluZ3MsaD1hLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLnJvb3REb2N1bWVudC5ib2R5KSxtPXBhcnNlSW50KGgubGluZUhlaWdodCwxMCksXz0xLjIqcGFyc2VJbnQoaC5mb250U2l6ZSwxMCk7dGhpcy5icm93c2VyTGluZUhlaWdodD1tfHxffX0se2tleToiaW5pdE92''@;'; put 'put ''ZXJsYXlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPVt0aGlzLndvdCx0aGlzLmZhY2FkZUdldHRlcix0aGlzLnd0U2V0dGluZ3MsdGhpcy5kb21CaW5kaW5nc107dGhpcy50b3BPdmVybGF5PUw0KEFKZSxhKSx0aGlzLmJvdHRvbU92ZXJsYXk9TDQoR0plLGEpLHRoaXMuaW5saW5lU3RhcnRP''@;'; put 'put ''dmVybGF5PUw0KHBRZSxhKSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT1MNChEUWUsYS5jb25jYXQoW3RoaXMudG9wT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheV0pKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT1MNChxUWUsYS5jb25jYXQoW3Ro''@;'; put 'put ''aXMuYm90dG9tT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheV0pKX19LHtrZXk6InVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50b3BPdmVybGF5LnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoKTtyZXR1cm4gYT10aGlzLmJvdHRvbU92ZXJs''@;'; put 'put ''YXkudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpfHxhLGE9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpfHxhLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiYodGhpcy50b3BPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiYoYT10aGlz''@;'; put 'put ''LnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCl8fGEpLHRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKGE9dGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkudXBkYXRlU3RhdGVPZlJlbmRlcmluZygpfHxhKSksYX19''@;'; put 'put ''LHtrZXk6InJlZnJlc2hBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53b3QuZHJhd24pe2lmKCF0aGlzLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuIHZvaWQgdGhpcy5kZXN0cm95KCk7dGhpcy53b3QuZHJhdyghMCksdGhpcy52ZXJ0aWNhbFNjcm9sbGluZyYmdGhpcy5p''@;'; put 'put ''bmxpbmVTdGFydE92ZXJsYXkub25TY3JvbGwoKSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmcmJnRoaXMudG9wT3ZlcmxheS5vblNjcm9sbCgpLHRoaXMudmVydGljYWxTY3JvbGxpbmc9ITEsdGhpcy5ob3Jpem9udGFsU2Nyb2xsaW5nPSExfX19LHtrZXk6InJlZ2lzdGVyTGlzdGVuZXJzIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj10aGlzLmRvbUJpbmRpbmdzLGQ9Zi5yb290RG9jdW1lbnQsaD1mLnJvb3RXaW5kb3csbT10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsXz10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5tYWluVGFibGVTY3JvbGxh''@;'; put 'put ''YmxlRWxlbWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGQuZG9jdW1lbnRFbGVtZW50LCJrZXlkb3duIixmdW5jdGlvbihWZSl7cmV0dXJuIGEub25LZXlEb3duKFZlKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZC5kb2N1bWVudEVsZW1lbnQs''@;'; put 'put ''ImtleXVwIixmdW5jdGlvbigpe3JldHVybiBhLm9uS2V5VXAoKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZCwidmlzaWJpbGl0eWNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gYS5vbktleVVwKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0s''@;'; put 'put ''InNjcm9sbCIsZnVuY3Rpb24oVmUpe3JldHVybiBhLm9uVGFibGVTY3JvbGwoVmUpfSx7cGFzc2l2ZTohMH0pLG0hPT1fJiZ0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKF8sInNjcm9sbCIsZnVuY3Rpb24oVmUpe3JldHVybiBhLm9uVGFibGVTY3JvbGwoVmUpfSx7cGFzc2l2''@;'; put 'put ''ZTohMH0pO3ZhciB4ZSxPPWguZGV2aWNlUGl4ZWxSYXRpbyYmaC5kZXZpY2VQaXhlbFJhdGlvPjEsWD10aGlzLnNjcm9sbGFibGVFbGVtZW50PT09aCxhZT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudFdoZWVsIikscGU9e3Bhc3NpdmU6WH07KGFlfHxPfHwhdVkoKSkmJnRo''@;'; put 'put ''aXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQsIndoZWVsIixmdW5jdGlvbihWZSl7cmV0dXJuIGEub25DbG9uZVdoZWVsKFZlLGFlKX0scGUpLFt0aGlzLnRvcE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMuaW5saW5lU3Rh''@;'; put 'put ''cnRPdmVybGF5LHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XS5mb3JFYWNoKGZ1bmN0aW9uKFZlKXtWZSYmVmUubmVlZEZ1bGxSZW5kZXImJmEuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoVmUuY2xvbmUu''@;'; put 'put ''d3RUYWJsZS5ob2xkZXIsIndoZWVsIixmdW5jdGlvbihsdCl7cmV0dXJuIGEub25DbG9uZVdoZWVsKGx0LGFlKX0scGUpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJyZXNpemUiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHhlKSx4ZT1zZXRUaW1lb3V0KGZ1bmN0''@;'; put 'put ''aW9uKCl7YS53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uV2luZG93UmVzaXplIil9LDIwMCl9KSxYfHx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50RWxlbWVudCl9fSx7a2V5OiJkZXJlZ2lzdGVyTGlzdGVuZXJzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyRXZlbnRzKCEwKX19LHtrZXk6Im9uVGFibGVTY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxkPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVF''@;'; put 'put ''bGVtZW50LGg9dGhpcy50b3BPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LG09YS50YXJnZXQ7dGhpcy5rZXlQcmVzc2VkJiYoaCE9PWYmJm0hPT1mJiYhYS50YXJnZXQuY29udGFpbnMoaCl8fGQhPT1mJiZtIT09ZiYmIWEudGFyZ2V0LmNvbnRhaW5zKGQpKXx8dGhpcy5zeW5j''@;'; put 'put ''U2Nyb2xsUG9zaXRpb25zKGEpfX0se2tleToib25DbG9uZVdoZWVsIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxoPXRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LG09dGhpcy50b3BPdmVybGF5''@;'; put 'put ''Lm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LF89YS50YXJnZXQsTz1tIT09ZCYmXyE9PWQmJiFfLmNvbnRhaW5zKG0pLFg9aCE9PWQmJl8hPT1kJiYhXy5jb250YWlucyhoKTtpZighdGhpcy5rZXlQcmVzc2VkfHwhTyYmIVgpe3ZhciBhZT10aGlzLnRyYW5zbGF0ZU1vdXNlV2hlZWxUb1Nj''@;'; put 'put ''cm9sbChhKTsoZnx8dGhpcy5zY3JvbGxhYmxlRWxlbWVudCE9PWQmJmFlKSYmYS5wcmV2ZW50RGVmYXVsdCgpfX19LHtrZXk6Im9uS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5rZXlQcmVzc2VkPWo3KGEua2V5Q29kZSwiQVJST1dfVVB8QVJST1dfUklHSFR8QVJST1dfRE9XTnxB''@;'; put 'put ''UlJPV19MRUZUIil9fSx7a2V5OiJvbktleVVwIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMua2V5UHJlc3NlZD0hMX19LHtrZXk6InRyYW5zbGF0ZU1vdXNlV2hlZWxUb1Njcm9sbCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9aXNOYU4oYS5kZWx0YVkpPy0xKmEud2hlZWxEZWx0YVk6YS5kZWx0''@;'; put 'put ''YVksZD1pc05hTihhLmRlbHRhWCk/LTEqYS53aGVlbERlbHRhWDphLmRlbHRhWDsxPT09YS5kZWx0YU1vZGUmJihkKz1kKnRoaXMuYnJvd3NlckxpbmVIZWlnaHQsZis9Zip0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0KTt2YXIgaD10aGlzLnNjcm9sbFZlcnRpY2FsbHkoZiksbT10aGlzLnNjcm9s''@;'; put 'put ''bEhvcml6b250YWxseShkKTtyZXR1cm4gaHx8bX19LHtrZXk6InNjcm9sbFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wO3JldHVybiB0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcCs9YSxmIT09dGhpcy5z''@;'; put 'put ''Y3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3B9fSx7a2V5OiJzY3JvbGxIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdDtyZXR1cm4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0Kz1hLGYhPT10aGlz''@;'; put 'put ''LnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnR9fSx7a2V5OiJzeW5jU2Nyb2xsUG9zaXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmRlc3Ryb3llZCl7dmFyIGE9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LGY9dGhpcy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuaG9s''@;'; put 'put ''ZGVyLGQ9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIsaD1bdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0LHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wXSxtPWhbMF0sXz1oWzFdO2lmKHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz1m''@;'; put 'put ''LnNjcm9sbExlZnQhPT1tfHx0aGlzLmxhc3RTY3JvbGxYIT09YS5zY3JvbGxYLHRoaXMudmVydGljYWxTY3JvbGxpbmc9ZC5zY3JvbGxUb3AhPT1ffHx0aGlzLmxhc3RTY3JvbGxZIT09YS5zY3JvbGxZLHRoaXMubGFzdFNjcm9sbFg9YS5zY3JvbGxYLHRoaXMubGFzdFNjcm9sbFk9YS5zY3Jv''@;'; put 'put ''bGxZLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZyl7Zi5zY3JvbGxMZWZ0PW07dmFyIE89dGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyP3RoaXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlcjpudWxsO08mJihPLnNjcm9sbExlZnQ9bSl9dGhpcy52ZXJ0aWNhbFNj''@;'; put 'put ''cm9sbGluZyYmKGQuc2Nyb2xsVG9wPV8pLHRoaXMucmVmcmVzaEFsbCgpfX19LHtrZXk6InN5bmNTY3JvbGxXaXRoTWFzdGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMudG9wT3ZlcmxheS5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCxmPWEuc2Nyb2xsTGVmdCxkPWEuc2Nyb2xs''@;'; put 'put ''VG9wO3RoaXMudG9wT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMudG9wT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxMZWZ0PWYpLHRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5z''@;'; put 'put ''Y3JvbGxMZWZ0PWYpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiYodGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsVG9wPWQpfX0se2tleToidXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLmRlcmVnaXN0ZXJMaXN0ZW5lcnMoKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS51cGRhdGVNYWluU2Nyb2xsYWJsZUVsZW1lbnQoKSx0aGlzLnRvcE92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0''@;'; put 'put ''aGlzLmJvdHRvbU92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCk7dmFyIGE9dGhpcy53dFRhYmxlO3RoaXMuc2Nyb2xsYWJsZUVsZW1lbnQ9ImhpZGRlbiI9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhLnd0Um9vdEVsZW1lbnQucGFy''@;'; put 'put ''ZW50Tm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ciKT9hLmhvbGRlcjpaUyhhLlRBQkxFKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuZXZlbnRNYW5h''@;'; put 'put ''Z2VyLmRlc3Ryb3koKSx0aGlzLnRvcE92ZXJsYXkuZGVzdHJveSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhpcy5ib3R0b21PdmVybGF5LmRlc3Ryb3koKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5kZXN0cm95KCksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRo''@;'; put 'put ''aXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSYmdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3ko''@;'; put 'put ''KSx0aGlzLmRlc3Ryb3llZD0hMH19LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnVwZGF0ZUxhc3RTcHJlYWRlclNpemUoKSYmdGhpcy5hZGp1c3RFbGVtZW50''@;'; put 'put ''c1NpemUoKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3ZlcmxheS5yZWZyZXNoKGEpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LnJlZnJlc2goYSksdGhpcy50b3BPdmVybGF5LnJlZnJlc2goYSksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMu''@;'; put 'put ''dG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlZnJlc2goYSksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZWZyZXNoKGEp''@;'; put 'put ''fX0se2tleToidXBkYXRlTGFzdFNwcmVhZGVyU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnd0VGFibGUuc3ByZWFkZXIsZj1hLmNsaWVudFdpZHRoLGQ9YS5jbGllbnRIZWlnaHQsaD1mIT09dGhpcy5zcHJlYWRlckxhc3RTaXplLndpZHRofHxkIT09dGhpcy5zcHJlYWRlckxh''@;'; put 'put ''c3RTaXplLmhlaWdodDtyZXR1cm4gaCYmKHRoaXMuc3ByZWFkZXJMYXN0U2l6ZS53aWR0aD1mLHRoaXMuc3ByZWFkZXJMYXN0U2l6ZS5oZWlnaHQ9ZCksaH19LHtrZXk6ImFkanVzdEVsZW1lbnRzU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGY9dGhpcy53b3Qud3RWaWV3cG9ydCxkPXRoaXMud3RUYWJsZSxoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSxtPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSxfPWYuZ2V0Um93''@;'; put 'put ''SGVhZGVyV2lkdGgoKSxPPWYuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCksWD1kLmhpZGVyLnN0eWxlO2lmKFgud2lkdGg9IiIuY29uY2F0KF8rdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuc3VtQ2VsbFNpemVzKDAsaCksInB4IiksWC5oZWlnaHQ9IiIuY29uY2F0KE8rdGhpcy50b3BPdmVybGF5''@;'; put 'put ''LnN1bUNlbGxTaXplcygwLG0pKzEsInB4IiksdGhpcy5zY3JvbGxiYXJTaXplPjApe3ZhciBhZT1kLnd0Um9vdEVsZW1lbnQscGU9YWUuc2Nyb2xsSGVpZ2h0LGJlPWFlLnNjcm9sbFdpZHRoLHhlPWQuaG9sZGVyLFplPXhlLnNjcm9sbFdpZHRoO3RoaXMuaGFzU2Nyb2xsYmFyUmlnaHQ9cGU8''@;'; put 'put ''eGUuc2Nyb2xsSGVpZ2h0LHRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPWJlPFplLHRoaXMuaGFzU2Nyb2xsYmFyUmlnaHQmJmQuaGlkZXIuc2Nyb2xsV2lkdGgrdGhpcy5zY3JvbGxiYXJTaXplPmJlP3RoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPSEwOnRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tJiZk''@;'; put 'put ''LmhpZGVyLnNjcm9sbEhlaWdodCt0aGlzLnNjcm9sbGJhclNpemU+cGUmJih0aGlzLmhhc1Njcm9sbGJhclJpZ2h0PSEwKX10aGlzLnRvcE92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKGEpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LmFkanVzdEVsZW1lbnRzU2l6ZShhKSx0aGlzLmJvdHRv''@;'; put 'put ''bU92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKGEpfX0se2tleToiYXBwbHlUb0RPTSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnd0VGFibGUuaXNWaXNpYmxlKCkmJih0aGlzLnRvcE92ZXJsYXkuYXBwbHlUb0RPTSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhpcy5ib3R0b21PdmVy''@;'; put 'put ''bGF5LmFwcGx5VG9ET00oKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5hcHBseVRvRE9NKCkpfX0se2tleToiZ2V0UGFyZW50T3ZlcmxheSIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7dmFyIGQ9bnVsbDtyZXR1cm4gUm4oW3RoaXMudG9wT3ZlcmxheSx0aGlzLmlubGlu''@;'; put 'put ''ZVN0YXJ0T3ZlcmxheSx0aGlzLmJvdHRvbU92ZXJsYXksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXldLGZ1bmN0aW9uKGgpe2gmJmguY2xvbmUmJmguY2xvbmUud3RUYWJsZS5UQUJMRS5jb250YWlucyhhKSYmKGQ9''@;'; put 'put ''aC5jbG9uZSl9KSxkfX0se2tleToic3luY092ZXJsYXlUYWJsZUNsYXNzTmFtZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy53dFRhYmxlLlRBQkxFO1JuKFt0aGlzLnRvcE92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMudG9wSW5s''@;'; put 'put ''aW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XSxmdW5jdGlvbihkKXtkJiYoZC5jbG9uZS53dFRhYmxlLlRBQkxFLmNsYXNzTmFtZT1hLmNsYXNzTmFtZSl9KX19XSksbH0oKTtjb25zdCBuZXQ9dGV0O2Z1bmN0aW9uIGtNKGwpe3JldHVy''@;'; put 'put ''bihrTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9s''@;'; put 'put ''JiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHlmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYo''@;'; put 'put ''Zi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsX2ZlKGYua2V5KSxmKX19ZnVuY3Rpb24gYmZlKGwsYyxhKXtyZXR1cm4oYz1fZmUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRh''@;'; put 'put ''YmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gX2ZlKGwpe3ZhciBjPWZ1bmN0aW9uIG9ldChsLGMpe2lmKCJvYmplY3QiIT09a00obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVs''@;'; put 'put ''dCIpO2lmKCJvYmplY3QiIT09a00oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9s''@;'; put 'put ''Ij09PWtNKGMpP2M6U3RyaW5nKGMpfXZhciBhZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPXRoaXM7KGZ1bmN0aW9uIHJldChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSko''@;'; put 'put ''dGhpcyxsKSxiZmUodGhpcywic2V0dGluZ3MiLHt9KSxiZmUodGhpcywiZGVmYXVsdHMiLE9iamVjdC5mcmVlemUodGhpcy5nZXREZWZhdWx0cygpKSksbWEodGhpcy5kZWZhdWx0cyxmdW5jdGlvbihmLGQpe2lmKHZvaWQgMCE9PWNbZF0pYS5zZXR0aW5nc1tkXT1jW2RdO2Vsc2V7aWYodm9p''@;'; put 'put ''ZCAwPT09Zil0aHJvdyBuZXcgRXJyb3IoJ0EgcmVxdWlyZWQgc2V0dGluZyAiJy5jb25jYXQoZCwnIiB3YXMgbm90IHByb3ZpZGVkJykpO2Euc2V0dGluZ3NbZF09Zn19KX1yZXR1cm4gZnVuY3Rpb24gaWV0KGwsYyxhKXtjJiZ5ZmUobC5wcm90b3R5cGUsYyksYSYmeWZlKGwsYSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImdldERlZmF1bHRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJue2ZhY2FkZTp2b2lkIDAsdGFibGU6dm9pZCAwLGlzRGF0YVZpZXdJbnN0YW5jZTohMCxleHRlcm5hbFJvd0Nh''@;'; put 'put ''bGN1bGF0b3I6ITEsc3RyZXRjaEg6Im5vbmUiLGN1cnJlbnRSb3dDbGFzc05hbWU6bnVsbCxjdXJyZW50Q29sdW1uQ2xhc3NOYW1lOm51bGwscHJldmVudE92ZXJmbG93OmZ1bmN0aW9uKCl7cmV0dXJuITF9LHByZXZlbnRXaGVlbDohMSxkYXRhOnZvaWQgMCxmcmVlemVPdmVybGF5czohMSxm''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydDowLGZpeGVkUm93c1RvcDowLGZpeGVkUm93c0JvdHRvbTowLHNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBhLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik+MHx8YS5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIiku''@;'; put 'put ''bGVuZ3RoPjB9LHNob3VsZFJlbmRlclRvcE92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKT4wfHxhLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg+MH0sc2hvdWxkUmVuZGVyQm90dG9tT3ZlcmxheTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBhLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpPjB9LG1pblNwYXJlUm93czowLHJvd0hlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sY29sdW1uSGVhZGVyczpmdW5jdGlvbigpe3JldHVybltdfSx0b3RhbFJvd3M6dm9pZCAwLHRvdGFsQ29sdW1uczp2b2lkIDAsY2VsbFJlbmRl''@;'; put 'put ''cmVyOmZ1bmN0aW9uKGQsaCxtKXtPNChtLGEuZ2V0U2V0dGluZygiZGF0YSIsZCxoKT8/IiIpfSxjb2x1bW5XaWR0aDpmdW5jdGlvbigpe30scm93SGVpZ2h0OmZ1bmN0aW9uKCl7fSxkZWZhdWx0Um93SGVpZ2h0OjIzLGRlZmF1bHRDb2x1bW5XaWR0aDo1MCxzZWxlY3Rpb25zOm51bGwsaGlk''@;'; put 'put ''ZUJvcmRlck9uTW91c2VEb3duT3ZlcjohMSx2aWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZTpudWxsLHZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOm51bGwsb25DZWxsTW91c2VEb3duOm51bGwsb25DZWxsQ29udGV4dE1lbnU6bnVsbCxvbkNlbGxNb3VzZU92ZXI6bnVsbCxv''@;'; put 'put ''bkNlbGxNb3VzZU91dDpudWxsLG9uQ2VsbE1vdXNlVXA6bnVsbCxvbkNlbGxEYmxDbGljazpudWxsLG9uQ2VsbENvcm5lck1vdXNlRG93bjpudWxsLG9uQ2VsbENvcm5lckRibENsaWNrOm51bGwsYmVmb3JlRHJhdzpudWxsLG9uRHJhdzpudWxsLG9uQmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFt''@;'; put 'put ''ZXM6bnVsbCxvbkFmdGVyRHJhd1NlbGVjdGlvbjpudWxsLG9uQmVmb3JlRHJhd0JvcmRlcnM6bnVsbCxvblNjcm9sbFZlcnRpY2FsbHk6bnVsbCxvblNjcm9sbEhvcml6b250YWxseTpudWxsLG9uQmVmb3JlVG91Y2hTY3JvbGw6bnVsbCxvbkFmdGVyTW9tZW50dW1TY3JvbGw6bnVsbCxvbkJl''@;'; put 'put ''Zm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aDpmdW5jdGlvbihkKXtyZXR1cm4gZH0sb25Nb2RpZnlSb3dIZWFkZXJXaWR0aDpudWxsLG9uTW9kaWZ5R2V0Q2VsbENvb3JkczpudWxsLG9uQmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyOmZ1bmN0aW9uKGQpe3JldHVybiBkfSxvbkJlZm9yZUhp''@;'; put 'put ''Z2hsaWdodGluZ0NvbHVtbkhlYWRlcjpmdW5jdGlvbihkKXtyZXR1cm4gZH0sb25XaW5kb3dSZXNpemU6bnVsbCxvbkNvbnRhaW5lckVsZW1lbnRSZXNpemU6bnVsbCxyZW5kZXJBbGxSb3dzOiExLGdyb3VwczohMSxyb3dIZWFkZXJXaWR0aDpudWxsLGNvbHVtbkhlYWRlckhlaWdodDpudWxs''@;'; put 'put ''LGhlYWRlckNsYXNzTmFtZTpudWxsLHJ0bE1vZGU6ITF9fX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHZvaWQgMD09PWY/bWEoYSxmdW5jdGlvbihoLG0pe2Quc2V0dGluZ3NbbV09aH0pOnRoaXMuc2V0dGluZ3NbYV09Zix0aGlzfX0se2tl''@;'; put 'put ''eToiZ2V0U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCxtKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zZXR0aW5nc1thXT90aGlzLnNldHRpbmdzW2FdKGYsZCxoLG0pOnZvaWQgMCE9PWYmJkFycmF5LmlzQXJyYXkodGhpcy5zZXR0aW5nc1thXSk/dGhpcy5zZXR0aW5n''@;'; put 'put ''c1thXVtmXTp0aGlzLnNldHRpbmdzW2FdfX0se2tleToiZ2V0U2V0dGluZ1B1cmUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNldHRpbmdzW2FdfX0se2tleToiaGFzIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMuc2V0dGluZ3NbYV19fV0pLGx9KCk7ZnVuY3Rpb24g''@;'; put 'put ''dTkobCl7cmV0dXJuKHU5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0''@;'; put 'put ''b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gd2ZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZh''@;'; put 'put ''bHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxjZXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBjZXQobCl7dmFyIGM9ZnVuY3Rpb24gZmV0KGwsYyl7aWYoIm9iamVjdCIhPT11OShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9Qcmlt''@;'; put 'put ''aXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT11OShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09''@;'; put 'put ''PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dTkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24geFcobCxjKXtyZXR1cm4oeFc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1''@;'; put 'put ''cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBIUihsKXtyZXR1cm4oSFI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12''@;'; put 'put ''YXIgQVc9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGRldChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5j''@;'; put 'put ''cmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZ4VyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIGhldChsKXt2''@;'; put 'put ''YXIgYz1mdW5jdGlvbiBnZXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1''@;'; put 'put ''ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1IUihsKTtpZihjKXt2YXIgaD1IUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJn''@;'; put 'put ''dW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gcGV0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09dTkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQg''@;'; put 'put ''Y29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIG1ldChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4g''@;'; put 'put ''Y2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQsaCxtKXtyZXR1cm4gZnVuY3Rpb24gc2V0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMs''@;'; put 'put ''YSksYy5jYWxsKHRoaXMsZixkLGgsbSwibWFzdGVyIil9cmV0dXJuIGZ1bmN0aW9uIHVldChsLGMsYSl7YyYmd2ZlKGwucHJvdG90eXBlLGMpLGEmJndmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJhbGlnbk92ZXJs''@;'; put 'put ''YXlzV2l0aFRyaW1taW5nQ29udGFpbmVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPWI1KHRoaXMud3RSb290RWxlbWVudCksaD10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3c7aWYoZD09PWgpdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpfHwodGhpcy5o''@;'; put 'put ''b2xkZXIuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHRoaXMud3RSb290RWxlbWVudC5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIpO2Vsc2V7dmFyIF89ZC5wYXJlbnRFbGVtZW50LE89QjcoZCwiaGVpZ2h0IixoKSxYPUI3KGQsIm92ZXJmbG93IixoKSxhZT10aGlzLmhvbGRlci5zdHlsZSxw''@;'; put 'put ''ZT1kLnNjcm9sbFdpZHRoLGJlPWQuc2Nyb2xsSGVpZ2h0LHhlPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVmU9eGUud2lkdGgsWmU9eGUuaGVpZ2h0O2lmKF8mJlsiYXV0byIsImhpZGRlbiIsInNjcm9sbCJdLmluY2x1ZGVzKFgpKXt2YXIgZHQ9ZC5jbG9uZU5vZGUoITEpO2R0LnN0eWxl''@;'; put 'put ''Lm92ZXJmbG93PSJhdXRvIixkdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGQubmV4dEVsZW1lbnRTaWJsaW5nP18uaW5zZXJ0QmVmb3JlKGR0LGQubmV4dEVsZW1lbnRTaWJsaW5nKTpfLmFwcGVuZENoaWxkKGR0KTt2YXIgZ3Q9cGFyc2VJbnQoRDQoZHQsaCkuaGVpZ2h0LDEwKTtfLnJl''@;'; put 'put ''bW92ZUNoaWxkKGR0KSwwPT09Z3QmJihaZT0wKX1aZT1NYXRoLm1pbihaZSxiZSksYWUuaGVpZ2h0PSJhdXRvIj09PU8/ImF1dG8iOiIiLmNvbmNhdChaZSwicHgiKSxWZT1NYXRoLm1pbihWZSxwZSksYWUud2lkdGg9IiIuY29uY2F0KFZlLCJweCIpLGFlLm92ZXJmbG93PSIiLHRoaXMuaGFz''@;'; put 'put ''VGFibGVIZWlnaHQ9ImF1dG8iPT09YWUuaGVpZ2h0fHxaZT4wLHRoaXMuaGFzVGFibGVXaWR0aD1WZT4wfXRoaXMuaXNUYWJsZVZpc2libGU9TjcodGhpcy5UQUJMRSl9fSx7a2V5OiJtYXJrT3ZlcnNpemVkQ29sdW1uSGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnd0U2V0''@;'; put 'put ''dGluZ3MsaD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydCxtPSJtYXN0ZXIiLE89ZC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2lmKE8mJiFoLmhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWRbbV0pe2Zvcih2YXIgYWU9ZC5nZXRTZXR0aW5nKCJyb3dI''@;'; put 'put ''ZWFkZXJzIikubGVuZ3RoLHBlPXRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKSxiZT0wO2JlPE87YmUrKylmb3IodmFyIHhlPS0xKmFlO3hlPHBlO3hlKyspdGhpcy5tYXJrSWZPdmVyc2l6ZWRDb2x1bW5IZWFkZXIoeGUpO2guaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZFtt''@;'; put 'put ''XT0hMH19fV0pLGF9KFg3KTtUbChBVyxyZmUpLFRsKEFXLHNXKTtjb25zdCB2ZXQ9QVc7ZnVuY3Rpb24gRU0obCl7cmV0dXJuKEVNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQ2ZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3Zh''@;'; put 'put ''ciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxfZXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBfZXQobCl7dmFyIGM9ZnVuY3Rpb24gd2V0KGwsYyl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1FTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1FTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRv''@;'; put 'put ''UHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09RU0oYyk/YzpTdHJpbmcoYyl9dmFyIFNmZT1uZXcgV2Vha01hcCxDZXQ9ZnVuY3Rpb24oKXtm''@;'; put 'put ''dW5jdGlvbiBsKCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGE9Yy52aWV3cG9ydFNpemUsZj1jLnNjcm9sbE9mZnNldCxkPWMudG90YWxJdGVtcyxoPWMuaXRlbVNpemVGbixtPWMub3ZlcnJpZGVGbixfPWMuY2FsY3Vs''@;'; put 'put ''YXRpb25UeXBlLE89Yy5zY3JvbGxiYXJIZWlnaHQ7KGZ1bmN0aW9uIHlldChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxTZmUuc2V0KHRoaXMse3ZpZXdwb3J0SGVpZ2h0''@;'; put 'put ''OmEsc2Nyb2xsT2Zmc2V0OmYsdG90YWxSb3dzOmQscm93SGVpZ2h0Rm46aCxvdmVycmlkZUZuOm0sY2FsY3VsYXRpb25UeXBlOl8saG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodDpPfSksdGhpcy5jb3VudD0wLHRoaXMuc3RhcnRSb3c9bnVsbCx0aGlzLmVuZFJvdz1udWxsLHRoaXMuc3RhcnRQ''@;'; put 'put ''b3NpdGlvbj1udWxsLHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hMSx0aGlzLmNhbGN1bGF0ZSgpfXJldHVybiBmdW5jdGlvbiBiZXQobCxjLGEpe2MmJkNmZShsLnByb3RvdHlwZSxjKSxhJiZDZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7''@;'; put 'put ''d3JpdGFibGU6ITF9KX0obCxbe2tleToiY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgVmUsYT1TZmUuZ2V0KHRoaXMpLGY9YS5jYWxjdWxhdGlvblR5cGUsZD1hLm92ZXJyaWRlRm4saD1hLnJvd0hlaWdodEZuLG09YS5zY3JvbGxPZmZzZXQsXz1NYXRoLm1heChhLnNjcm9s''@;'; put 'put ''bE9mZnNldCwwKSxPPWEudG90YWxSb3dzLFg9YS52aWV3cG9ydEhlaWdodCxhZT1hLmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHR8fDAscGU9MCxiZT0hMCx4ZT1bXSxaZT0wLGx0PTAsZHQ9MDtkdDxPO2R0KyspaWYoVmU9aChkdCksaXNOYU4oVmUpJiYoVmU9bC5ERUZBVUxUX0hFSUdIVCks''@;'; put 'put ''cGU8PV8mJjIhPT1mJiYodGhpcy5zdGFydFJvdz1kdCxaZT1WZSkscGU+PV8mJnBlKygyPT09Zj9WZTowKTw9XytYLWFlJiYobnVsbD09PXRoaXMuc3RhcnRSb3cmJih0aGlzLnN0YXJ0Um93PWR0LFplPVZlKSx0aGlzLmVuZFJvdz1kdCkseGUucHVzaChwZSkscGUrPVZlLGx0PVZlLDIhPT1m''@;'; put 'put ''JiYodGhpcy5lbmRSb3c9ZHQpLHBlPj1fK1gtYWUpe2JlPSExO2JyZWFrfXZhciBybj0yPT09Zj8wOmx0O2lmKHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hKG0rWC1hZTwoMj09PWY/WmU6MCl8fG0+eGUuYXQoLTEpK3JuKSx0aGlzLmVuZFJvdz09PU8tMSYmYmUpZm9yKHRo''@;'; put 'put ''aXMuc3RhcnRSb3c9dGhpcy5lbmRSb3c7dGhpcy5zdGFydFJvdz4wOyl7dmFyIFh0PXhlW3RoaXMuZW5kUm93XStWZS14ZVt0aGlzLnN0YXJ0Um93LTFdO2lmKChYdDw9WC1hZXx8MiE9PWYpJiYodGhpcy5zdGFydFJvdy09MSksWHQ+PVgtYWUpYnJlYWt9MT09PWYmJm51bGwhPT10aGlzLnN0''@;'; put 'put ''YXJ0Um93JiZkJiZkKHRoaXMpLHRoaXMuc3RhcnRQb3NpdGlvbj14ZVt0aGlzLnN0YXJ0Um93XSx2b2lkIDA9PT10aGlzLnN0YXJ0UG9zaXRpb24mJih0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCksTzx0aGlzLmVuZFJvdyYmKHRoaXMuZW5kUm93PU8tMSksbnVsbCE9PXRoaXMuc3RhcnRSb3cm''@;'; put 'put ''Jih0aGlzLmNvdW50PXRoaXMuZW5kUm93LXRoaXMuc3RhcnRSb3crMSl9fV0sW3trZXk6IkRFRkFVTFRfSEVJR0hUIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjN9fV0pLGx9KCk7Y29uc3QgTWZlPUNldDtmdW5jdGlvbiB4TShsKXtyZXR1cm4oeE09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJv''@;'; put 'put ''bCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBrZmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLEVldChmLmtleSksZil9fWZ1bmN0aW9uIEVldChsKXt2YXIgYz1mdW5jdGlvbiB4ZXQobCxjKXtpZigib2JqZWN0IiE9PXhNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8''@;'; put 'put ''ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXhNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJu''@;'; put 'put ''InN5bWJvbCI9PT14TShjKT9jOlN0cmluZyhjKX12YXIgYzk9bmV3IFdlYWtNYXAsQWV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxhPWMudmlld3BvcnRTaXplLGY9Yy5zY3Jv''@;'; put 'put ''bGxPZmZzZXQsZD1jLnRvdGFsSXRlbXMsaD1jLml0ZW1TaXplRm4sbT1jLm92ZXJyaWRlRm4sXz1jLmNhbGN1bGF0aW9uVHlwZSxPPWMuc3RyZXRjaE1vZGUsWD1jLnN0cmV0Y2hpbmdJdGVtV2lkdGhGbixhZT12b2lkIDA9PT1YP2Z1bmN0aW9uKGJlKXtyZXR1cm4gYmV9OlgscGU9Yy5pbmxp''@;'; put 'put ''bmVTdGFydE9mZnNldDsoZnVuY3Rpb24gTWV0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLGM5LnNldCh0aGlzLHt2aWV3cG9ydFdpZHRoOmEsc2Nyb2xsT2Zmc2V0OmYs''@;'; put 'put ''dG90YWxDb2x1bW5zOmQsY29sdW1uV2lkdGhGbjpoLG92ZXJyaWRlRm46bSxjYWxjdWxhdGlvblR5cGU6XyxzdHJldGNoaW5nQ29sdW1uV2lkdGhGbjphZSxpbmxpbmVTdGFydE9mZnNldDpwZX0pLHRoaXMuY291bnQ9MCx0aGlzLnN0YXJ0Q29sdW1uPW51bGwsdGhpcy5lbmRDb2x1bW49bnVs''@;'; put 'put ''bCx0aGlzLnN0YXJ0UG9zaXRpb249bnVsbCx0aGlzLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXI9ITEsdGhpcy5zdHJldGNoQWxsUmF0aW89MCx0aGlzLnN0cmV0Y2hMYXN0V2lkdGg9MCx0aGlzLnN0cmV0Y2g9Tyx0aGlzLnRvdGFsVGFyZ2V0V2lkdGg9MCx0aGlzLm5lZWRWZXJpZnlM''@;'; put 'put ''YXN0Q29sdW1uV2lkdGg9ITAsdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoPVtdLHRoaXMuY2FsY3VsYXRlKCl9cmV0dXJuIGZ1bmN0aW9uIGtldChsLGMsYSl7YyYma2ZlKGwucHJvdG90eXBlLGMpLGEmJmtmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3''@;'; put 'put ''cml0YWJsZTohMX0pfShsLFt7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBoLGE9MCxmPSEwLGQ9W10sbT0wLF89MCxPPWM5LmdldCh0aGlzKSxYPU8uY2FsY3VsYXRpb25UeXBlLGFlPU8ub3ZlcnJpZGVGbixwZT1PLnNjcm9sbE9mZnNldCxiZT1NYXRoLm1heChP''@;'; put 'put ''LnNjcm9sbE9mZnNldCwwKSx4ZT1PLnRvdGFsQ29sdW1ucyxWZT1PLnZpZXdwb3J0V2lkdGgsWmU9YmU+MD9WZSsxOlZlLGx0PTA7bHQ8eGU7bHQrKylpZihoPXRoaXMuX2dldENvbHVtbldpZHRoKGx0KSxhPD1iZSYmMiE9PVgmJih0aGlzLnN0YXJ0Q29sdW1uPWx0LG09aCksYT49YmUmJmEr''@;'; put 'put ''KDI9PT1YP2g6MCk8PWJlK1plJiYobnVsbD09dGhpcy5zdGFydENvbHVtbiYmKHRoaXMuc3RhcnRDb2x1bW49bHQsbT1oKSx0aGlzLmVuZENvbHVtbj1sdCksZC5wdXNoKGEpLGErPWgsXz1oLDIhPT1YJiYodGhpcy5lbmRDb2x1bW49bHQpLGE+PWJlK1ZlKXtmPSExO2JyZWFrfXZhciBndD0y''@;'; put 'put ''PT09WD8wOl8sanQ9Mj09PVg/bTowO2lmKHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hKHBlK1ZlLVplPC0xKk8uaW5saW5lU3RhcnRPZmZzZXR8fHBlPmQuYXQoLTEpK2d0fHwtMSpPLnNjcm9sbE9mZnNldC1PLnZpZXdwb3J0V2lkdGg+LTEqanQpLHRoaXMuZW5kQ29sdW1u''@;'; put 'put ''PT09eGUtMSYmZilmb3IodGhpcy5zdGFydENvbHVtbj10aGlzLmVuZENvbHVtbjt0aGlzLnN0YXJ0Q29sdW1uPjA7KXt2YXIgcm49ZFt0aGlzLmVuZENvbHVtbl0raC1kW3RoaXMuc3RhcnRDb2x1bW4tMV07aWYoKHJuPD1WZXx8MiE9PVgpJiYodGhpcy5zdGFydENvbHVtbi09MSkscm4+VmUp''@;'; put 'put ''YnJlYWt9MT09PVgmJm51bGwhPT10aGlzLnN0YXJ0Q29sdW1uJiZhZSYmYWUodGhpcyksdGhpcy5zdGFydFBvc2l0aW9uPWRbdGhpcy5zdGFydENvbHVtbl0sdm9pZCAwPT09dGhpcy5zdGFydFBvc2l0aW9uJiYodGhpcy5zdGFydFBvc2l0aW9uPW51bGwpLHhlPHRoaXMuZW5kQ29sdW1uJiYo''@;'; put 'put ''dGhpcy5lbmRDb2x1bW49eGUtMSksbnVsbCE9PXRoaXMuc3RhcnRDb2x1bW4mJih0aGlzLmNvdW50PXRoaXMuZW5kQ29sdW1uLXRoaXMuc3RhcnRDb2x1bW4rMSl9fSx7a2V5OiJyZWZyZXNoU3RyZXRjaGluZyIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoIm5vbmUiIT09dGhpcy5zdHJldGNoKXt2''@;'; put 'put ''YXIgZj1hO3RoaXMudG90YWxUYXJnZXRXaWR0aD1mO2Zvcih2YXIgZD1jOS5nZXQodGhpcyksaD1kLnRvdGFsQ29sdW1ucyxtPTAsXz0wO188aDtfKyspe3ZhciBPPXRoaXMuX2dldENvbHVtbldpZHRoKF8pLFg9ZC5zdHJldGNoaW5nQ29sdW1uV2lkdGhGbih2b2lkIDAsXyk7Im51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBYP2YtPVg6bSs9T312YXIgYWU9Zi1tO2lmKCJhbGwiPT09dGhpcy5zdHJldGNoJiZhZT4wKXRoaXMuc3RyZXRjaEFsbFJhdGlvPWYvbSx0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGg9W10sdGhpcy5uZWVkVmVyaWZ5TGFzdENvbHVtbldpZHRoPSEwO2Vsc2UgaWYoImxhc3Qi''@;'; put 'put ''PT09dGhpcy5zdHJldGNoJiZmIT09MS8wKXt2YXIgcGU9dGhpcy5fZ2V0Q29sdW1uV2lkdGgoaC0xKSxiZT1hZStwZTt0aGlzLnN0cmV0Y2hMYXN0V2lkdGg9YmU+PTA/YmU6cGV9fX19LHtrZXk6ImdldFN0cmV0Y2hlZENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPW51''@;'; put 'put ''bGw7cmV0dXJuImFsbCI9PT10aGlzLnN0cmV0Y2gmJjAhPT10aGlzLnN0cmV0Y2hBbGxSYXRpbz9kPXRoaXMuX2dldFN0cmV0Y2hlZEFsbENvbHVtbldpZHRoKGEsZik6Imxhc3QiPT09dGhpcy5zdHJldGNoJiYwIT09dGhpcy5zdHJldGNoTGFzdFdpZHRoJiYoZD10aGlzLl9nZXRTdHJldGNo''@;'; put 'put ''ZWRMYXN0Q29sdW1uV2lkdGgoYSkpLGR9fSx7a2V5OiJfZ2V0U3RyZXRjaGVkQWxsQ29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9MCxoPWM5LmdldCh0aGlzKSxtPWgudG90YWxDb2x1bW5zO2lmKCF0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbYV0pe3ZhciBfPU1h''@;'; put 'put ''dGgucm91bmQoZip0aGlzLnN0cmV0Y2hBbGxSYXRpbyksTz1oLnN0cmV0Y2hpbmdDb2x1bW5XaWR0aEZuKF8sYSk7dGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoW2FdPXZvaWQgMD09PU8/Xzppc05hTihPKT90aGlzLl9nZXRDb2x1bW5XaWR0aChhKTpPfWlmKHRoaXMuc3RyZXRjaEFsbENv''@;'; put 'put ''bHVtbnNXaWR0aC5sZW5ndGg9PT1tJiZ0aGlzLm5lZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGgpe3RoaXMubmVlZFZlcmlmeUxhc3RDb2x1bW5XaWR0aD0hMTtmb3IodmFyIFg9MDtYPHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGg7WCsrKWQrPXRoaXMuc3RyZXRjaEFsbENvbHVt''@;'; put 'put ''bnNXaWR0aFtYXTtkIT09dGhpcy50b3RhbFRhcmdldFdpZHRoJiYodGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoW3RoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGgtMV0rPXRoaXMudG90YWxUYXJnZXRXaWR0aC1kKX1yZXR1cm4gdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRo''@;'; put 'put ''W2FdfX0se2tleToiX2dldFN0cmV0Y2hlZExhc3RDb2x1bW5XaWR0aCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1jOS5nZXQodGhpcykudG90YWxDb2x1bW5zLTE/dGhpcy5zdHJldGNoTGFzdFdpZHRoOm51bGx9fSx7a2V5OiJfZ2V0Q29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGEpe3ZhciBmPWM5LmdldCh0aGlzKS5jb2x1bW5XaWR0aEZuKGEpO3JldHVybiBpc05hTihmKSYmKGY9bC5ERUZBVUxUX1dJRFRIKSxmfX1dLFt7a2V5OiJERUZBVUxUX1dJRFRIIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTB9fV0pLGx9KCk7Y29uc3QgVFc9QWV0O2Z1bmN0aW9uIEFNKGwp''@;'; put 'put ''e3JldHVybihBTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEVmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsRGV0KGYua2V5KSxmKX19ZnVuY3Rpb24gRGV0KGwpe3ZhciBjPWZ1bmN0aW9uIElldChsLGMpe2lmKCJvYmplY3QiIT09QU0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZl''@;'; put 'put ''XTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09QU0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0''@;'; put 'put ''cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUFNKGMpP2M6U3RyaW5nKGMpfXZhciBSZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSxmLGQsaCl7dmFyIG09dGhpczsoZnVuY3Rpb24gVGV0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1jLHRoaXMud290PWMud290LHRoaXMuaW5zdGFuY2U9dGhpcy53b3QsdGhpcy5kb21CaW5kaW5ncz1hLHRoaXMud3RTZXR0aW5ncz1mLHRoaXMud3RU''@;'; put 'put ''YWJsZT1oLHRoaXMub3ZlcnNpemVkUm93cz1bXSx0aGlzLm92ZXJzaXplZENvbHVtbkhlYWRlcnM9W10sdGhpcy5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkPXt9LHRoaXMuY2xpZW50SGVpZ2h0PTAsdGhpcy5jb250YWluZXJXaWR0aD1OYU4sdGhpcy5yb3dIZWFkZXJXaWR0aD1O''@;'; put 'put ''YU4sdGhpcy5yb3dzVmlzaWJsZUNhbGN1bGF0b3I9bnVsbCx0aGlzLmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcj1udWxsLHRoaXMuZXZlbnRNYW5hZ2VyPWQsdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3csInJlc2l6ZSIsZnVu''@;'; put 'put ''Y3Rpb24oKXttLmNsaWVudEhlaWdodD1tLmdldFdvcmtzcGFjZUhlaWdodCgpfSl9cmV0dXJuIGZ1bmN0aW9uIE9ldChsLGMsYSl7YyYmRWZlKGwucHJvdG90eXBlLGMpLGEmJkVmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7''@;'; put 'put ''a2V5OiJnZXRXb3Jrc3BhY2VIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcjtyZXR1cm4gZj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdz90aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVu''@;'; put 'put ''dC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OmNzKGYpPjAmJmYuY2xpZW50SGVpZ2h0PjA/Zi5jbGllbnRIZWlnaHQ6MS8wfX0se2tleToiZ2V0V29ya3NwYWNlV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIFZlLFplLGE9dGhpcy53dFNldHRpbmdzLGY9dGhpcy5kb21CaW5kaW5n''@;'; put 'put ''cyxkPWYucm9vdERvY3VtZW50LGg9Zi5yb290V2luZG93LG09dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0T3ZlcmxheVRyaW1taW5nQ29udGFpbmVyLF89ZC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsTz1hLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLFg9YS5nZXRT''@;'; put 'put ''ZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSxhZT1hLmdldFNldHRpbmcoInJ0bE1vZGUiKSxwZT10aGlzLnd0VGFibGUuVEFCTEUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseGU9Xy0oYWU/cGUucmlnaHQtXzpwZS5sZWZ0KTtpZihYKXJldHVybiBTbCh0aGlzLnd0VGFibGUud3RSb290RWxl''@;'; put 'put ''bWVudCk7aWYoVmU9YS5nZXRTZXR0aW5nKCJmcmVlemVPdmVybGF5cyIpP01hdGgubWluKHhlLF8pOk1hdGgubWluKHRoaXMuZ2V0Q29udGFpbmVyRmlsbFdpZHRoKCkseGUsXyksbT09PWgmJk8+MCYmdGhpcy5zdW1Db2x1bW5XaWR0aHMoMCxPLTEpPlZlKXJldHVybiBkLmRvY3VtZW50RWxl''@;'; put 'put ''bWVudC5jbGllbnRXaWR0aDtpZihtIT09aCYmKCJzY3JvbGwiPT09KFplPUI3KHRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lciwib3ZlcmZsb3ciLGgpKXx8ImhpZGRlbiI9PT1aZXx8ImF1dG8iPT09WmUpKXJldHVybiBNYXRoLm1heChW''@;'; put 'put ''ZSxtLmNsaWVudFdpZHRoKTt2YXIgbHQ9YS5nZXRTZXR0aW5nKCJzdHJldGNoSCIpO3JldHVybiJub25lIiE9PWx0JiZsdD9WZTpNYXRoLm1heChWZSxTbCh0aGlzLnd0VGFibGUuVEFCTEUpKX19LHtrZXk6Imhhc1ZlcnRpY2FsU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''Lnd0VGFibGUuaGlkZXIub2Zmc2V0SGVpZ2h0PnRoaXMuZ2V0V29ya3NwYWNlSGVpZ2h0KCl9fSx7a2V5OiJoYXNIb3Jpem9udGFsU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd0VGFibGUuaGlkZXIub2Zmc2V0V2lkdGg+dGhpcy5nZXRXb3Jrc3BhY2VXaWR0aCgpfX0s''@;'; put 'put ''e2tleToic3VtQ29sdW1uV2lkdGhzIix2YWx1ZTpmdW5jdGlvbihhLGYpe2Zvcih2YXIgZD0wLGg9YTtoPGY7KWQrPXRoaXMud3RUYWJsZS5nZXRDb2x1bW5XaWR0aChoKSxoKz0xO3JldHVybiBkfX0se2tleToiZ2V0Q29udGFpbmVyRmlsbFdpZHRoIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRo''@;'; put 'put ''aXMuY29udGFpbmVyV2lkdGgpcmV0dXJuIHRoaXMuY29udGFpbmVyV2lkdGg7dmFyIGE9dGhpcy53dFRhYmxlLmhvbGRlcixmPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Yuc3R5bGUud2lkdGg9IjEwMCUiLGYuc3R5bGUuaGVpZ2h0PSIxcHgi''@;'; put 'put ''LGEuYXBwZW5kQ2hpbGQoZik7dmFyIGQ9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdGhpcy5jb250YWluZXJXaWR0aD1kLGEucmVtb3ZlQ2hpbGQoZiksZH19LHtrZXk6ImdldFdvcmtzcGFjZU9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gaXUodGhpcy53dFRhYmxlLlRBQkxFKX19LHtr''@;'; put 'put ''ZXk6ImdldENvbHVtbkhlYWRlckhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg/aXNOYU4odGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQpJiYodGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9Y3ModGhp''@;'; put 'put ''cy53dFRhYmxlLlRIRUFEKSk6dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9MCx0aGlzLmNvbHVtbkhlYWRlckhlaWdodH19LHtrZXk6ImdldFZpZXdwb3J0SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0V29ya3NwYWNlSGVpZ2h0KCk7aWYoYT09PTEvMClyZXR1cm4gYTt2''@;'; put 'put ''YXIgZj10aGlzLmdldENvbHVtbkhlYWRlckhlaWdodCgpO3JldHVybiBmPjAmJihhLT1mKSxhfX0se2tleToiZ2V0Um93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcldpZHRoIiksZj10aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpO2lmKGEpe3RoaXMucm93SGVhZGVyV2lkdGg9MDtmb3IodmFyIGQ9MCxoPWYubGVuZ3RoO2Q8aDtkKyspdGhpcy5yb3dIZWFkZXJXaWR0aCs9YVtkXXx8YX1pZihpc05hTih0aGlzLnJvd0hlYWRlcldpZHRoKSlpZihmLmxlbmd0aCl7dmFyIG09''@;'; put 'put ''dGhpcy53dFRhYmxlLlRBQkxFLnF1ZXJ5U2VsZWN0b3IoIlRIIik7dGhpcy5yb3dIZWFkZXJXaWR0aD0wO2Zvcih2YXIgXz0wLE89Zi5sZW5ndGg7XzxPO18rKyltPyh0aGlzLnJvd0hlYWRlcldpZHRoKz1TbChtKSxtPW0ubmV4dFNpYmxpbmcpOnRoaXMucm93SGVhZGVyV2lkdGgrPTUwfWVs''@;'; put 'put ''c2UgdGhpcy5yb3dIZWFkZXJXaWR0aD0wO3JldHVybiB0aGlzLnJvd0hlYWRlcldpZHRoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbk1vZGlmeVJvd0hlYWRlcldpZHRoIix0aGlzLnJvd0hlYWRlcldpZHRoKXx8dGhpcy5yb3dIZWFkZXJXaWR0aCx0aGlzLnJvd0hlYWRlcldpZHRo''@;'; put 'put ''fX0se2tleToiZ2V0Vmlld3BvcnRXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFdvcmtzcGFjZVdpZHRoKCk7aWYoYT09PTEvMClyZXR1cm4gYTt2YXIgZj10aGlzLmdldFJvd0hlYWRlcldpZHRoKCk7cmV0dXJuIGY+MD9hLWY6YX19LHtrZXk6ImNyZWF0ZVJvd3NDYWxj''@;'; put 'put ''dWxhdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBoLG0sXyxhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxLGY9dGhpcy53dFNldHRpbmdzLGQ9dGhpcy53dFRhYmxlO3RoaXMucm93SGVhZGVyV2lkdGg9TmFOLGg9Zi5nZXRTZXR0aW5n''@;'; put 'put ''KCJyZW5kZXJBbGxSb3dzIikmJjE9PT1hPzEvMDp0aGlzLmdldFZpZXdwb3J0SGVpZ2h0KCk7dmFyIE89dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcFNjcm9sbFBvc2l0aW9uLXRoaXMuZGF0YUFjY2Vzc09iamVjdC50b3BQYXJlbnRPZmZzZXQsWD1mLmdldFNldHRpbmcoImZpeGVkUm93c1Rv''@;'; put 'put ''cCIpLGFlPWYuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIikscGU9Zi5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtyZXR1cm4gWCYmTz49MCYmKE8rPV89dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcE92ZXJsYXkuc3VtQ2VsbFNpemVzKDAsWCksaC09XyksYWUmJnRoaXMuZGF0YUFjY2Vz''@;'; put 'put ''c09iamVjdC5ib3R0b21PdmVybGF5LmNsb25lJiYoaC09Xz10aGlzLmRhdGFBY2Nlc3NPYmplY3QuYm90dG9tT3ZlcmxheS5zdW1DZWxsU2l6ZXMocGUtYWUscGUpKSxtPWQuaG9sZGVyLmNsaWVudEhlaWdodD09PWQuaG9sZGVyLm9mZnNldEhlaWdodD8wOk51KHRoaXMuZG9tQmluZGluZ3Mu''@;'; put 'put ''cm9vdERvY3VtZW50KSxuZXcgTWZlKHt2aWV3cG9ydFNpemU6aCxzY3JvbGxPZmZzZXQ6Tyx0b3RhbEl0ZW1zOmYuZ2V0U2V0dGluZygidG90YWxSb3dzIiksaXRlbVNpemVGbjpmdW5jdGlvbih4ZSl7cmV0dXJuIGQuZ2V0Um93SGVpZ2h0KHhlKX0sb3ZlcnJpZGVGbjpmLmdldFNldHRpbmdQ''@;'; put 'put ''dXJlKCJ2aWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIpLGNhbGN1bGF0aW9uVHlwZTphLHNjcm9sbGJhckhlaWdodDptfSl9fSx7a2V5OiJjcmVhdGVDb2x1bW5zQ2FsY3VsYXRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1swXT9hcmd1bWVudHNbMF06MSxmPXRoaXMud3RTZXR0aW5ncyxkPXRoaXMud3RUYWJsZSxoPXRoaXMuZ2V0Vmlld3BvcnRXaWR0aCgpLG09TWF0aC5hYnModGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24pLXRoaXMuZGF0YUFjY2Vzc09iamVjdC5p''@;'; put 'put ''bmxpbmVTdGFydFBhcmVudE9mZnNldDt0aGlzLmNvbHVtbkhlYWRlckhlaWdodD1OYU47dmFyIF89Zi5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO2lmKF8mJm0+PTApe3ZhciBPPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydE92ZXJsYXkuc3VtQ2VsbFNpemVzKDAs''@;'; put 'put ''Xyk7bSs9TyxoLT1PfXJldHVybiBkLmhvbGRlci5jbGllbnRXaWR0aCE9PWQuaG9sZGVyLm9mZnNldFdpZHRoJiYoaC09TnUodGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxuZXcgVFcoe3ZpZXdwb3J0U2l6ZTpoLHNjcm9sbE9mZnNldDptLHRvdGFsSXRlbXM6Zi5nZXRTZXR0aW5n''@;'; put 'put ''KCJ0b3RhbENvbHVtbnMiKSxpdGVtU2l6ZUZuOmZ1bmN0aW9uKGFlKXtyZXR1cm4gZC5nZXRDb2x1bW5XaWR0aChhZSl9LG92ZXJyaWRlRm46Zi5nZXRTZXR0aW5nUHVyZSgidmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiKSxjYWxjdWxhdGlvblR5cGU6YSxzdHJldGNoTW9kZTpm''@;'; put 'put ''LmdldFNldHRpbmcoInN0cmV0Y2hIIiksc3RyZXRjaGluZ0l0ZW1XaWR0aEZuOmZ1bmN0aW9uKGFlLHBlKXtyZXR1cm4gZi5nZXRTZXR0aW5nKCJvbkJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsYWUscGUpfSxpbmxpbmVTdGFydE9mZnNldDp0aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5s''@;'; put 'put ''aW5lU3RhcnRQYXJlbnRPZmZzZXR9KX19LHtrZXk6ImNyZWF0ZVJlbmRlckNhbGN1bGF0b3JzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoZil7dmFyIGQ9dGhpcy5jcmVhdGVSb3dzQ2Fs''@;'; put 'put ''Y3VsYXRvcigyKSxoPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoMik7dGhpcy5hcmVBbGxQcm9wb3NlZFZpc2libGVSb3dzQWxyZWFkeVJlbmRlcmVkKGQpJiZ0aGlzLmFyZUFsbFByb3Bvc2VkVmlzaWJsZUNvbHVtbnNBbHJlYWR5UmVuZGVyZWQoaCl8fChmPSExKX1yZXR1cm4gZnx8''@;'; put 'put ''KHRoaXMucm93c1JlbmRlckNhbGN1bGF0b3I9dGhpcy5jcmVhdGVSb3dzQ2FsY3VsYXRvcigxKSx0aGlzLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoMSkpLHRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdGhpcy5jb2x1bW5zVmlz''@;'; put 'put ''aWJsZUNhbGN1bGF0b3I9bnVsbCxmfX0se2tleToiY3JlYXRlVmlzaWJsZUNhbGN1bGF0b3JzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPXRoaXMuY3JlYXRlUm93c0NhbGN1bGF0b3IoMiksdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9dGhpcy5j''@;'; put 'put ''cmVhdGVDb2x1bW5zQ2FsY3VsYXRvcigyKX19LHtrZXk6ImFyZUFsbFByb3Bvc2VkVmlzaWJsZVJvd3NBbHJlYWR5UmVuZGVyZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLnJvd3NWaXNpYmxlQ2FsY3VsYXRvcilyZXR1cm4hMTt2YXIgZj1hLnN0YXJ0Um93LGQ9YS5lbmRSb3c7aWYo''@;'; put 'put ''bnVsbD09PWYmJm51bGw9PT1kKXJldHVybiFhLmlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXI7dmFyIG09dGhpcy5yb3dzUmVuZGVyQ2FsY3VsYXRvcixfPW0uc3RhcnRSb3csTz1tLmVuZFJvdztyZXR1cm4hKGY8X3x8Zj09PV8mJmY+MHx8ZD5PfHxkPT09TyYmZDx0aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktMSl9fSx7a2V5OiJhcmVBbGxQcm9wb3NlZFZpc2libGVDb2x1bW5zQWxyZWFkeVJlbmRlcmVkIix2YWx1ZTpmdW5jdGlvbihhKXtpZighdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IpcmV0dXJuITE7dmFyIGY9YS5zdGFydENvbHVtbixk''@;'; put 'put ''PWEuZW5kQ29sdW1uO2lmKG51bGw9PT1mJiZudWxsPT09ZClyZXR1cm4hYS5pc1Zpc2libGVJblRyaW1taW5nQ29udGFpbmVyO3ZhciBtPXRoaXMuY29sdW1uc1JlbmRlckNhbGN1bGF0b3IsXz1tLnN0YXJ0Q29sdW1uLE89bS5lbmRDb2x1bW47cmV0dXJuIShmPF98fGY9PT1fJiZmPjB8fGQ+''@;'; put 'put ''T3x8ZD09PU8mJmQ8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLTEpfX0se2tleToicmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkIix2YWx1ZTpmdW5jdGlvbigpe21hKHRoaXMuaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZCxmdW5j''@;'; put 'put ''dGlvbihhLGYsZCl7ZFtmXT12b2lkIDB9KX19XSksbH0oKTtjb25zdCBMZXQ9UmV0O2Z1bmN0aW9uIGY5KGwpe3JldHVybihmOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1''@;'; put 'put ''bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHhmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIg''@;'; put 'put ''Zj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSGV0KGYua2V5KSxmKX19ZnVuY3Rpb24gSGV0KGwpe3ZhciBjPWZ1bmN0aW9uIE5ldChsLGMpe2lm''@;'; put 'put ''KCJvYmplY3QiIT09ZjkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09ZjkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1By''@;'; put 'put ''aW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWY5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIE9XKGwsYyl7cmV0dXJuKE9XPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gRFcobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlz''@;'; put 'put ''ZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIE5SKGwpe3JldHVybihOUj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90''@;'; put 'put ''b3R5cGVPZihhKX0pKGwpfXZhciBVZXQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIFZldChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wu''@;'; put 'put ''cHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZPVyhsLGMpfShhLGwpO3ZhciBj''@;'; put 'put ''PWZ1bmN0aW9uIEJldChsKXt2YXIgYz1mdW5jdGlvbiB6ZXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29s''@;'; put 'put ''ZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1OUihsKTtpZihjKXt2YXIgaD1OUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxl''@;'; put 'put ''Y3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gamV0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09ZjkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIERXKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoOyFmdW5jdGlvbiBQZXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKTt2YXIgbT0oaD1jLmNhbGwodGhpcyxmLG5ldyBhZXQoZCkpKS53dFNldHRpbmdzLmdldFNldHRpbmcoImZhY2FkZSIsRFcoaCkpO3JldHVybiBoLnd0VGFibGU9bmV3IHZldChoLmdldFRh''@;'; put 'put ''YmxlRGFvKCksbSxoLmRvbUJpbmRpbmdzLGgud3RTZXR0aW5ncyksaC53dFZpZXdwb3J0PW5ldyBMZXQoaC5nZXRWaWV3cG9ydERhbygpLGguZG9tQmluZGluZ3MsaC53dFNldHRpbmdzLGguZXZlbnRNYW5hZ2VyLGgud3RUYWJsZSksaC5zZWxlY3Rpb25zPWgud3RTZXR0aW5ncy5nZXRTZXR0''@;'; put 'put ''aW5nKCJzZWxlY3Rpb25zIiksaC53dEV2ZW50PW5ldyBRMGUobSxoLmRvbUJpbmRpbmdzLGgud3RTZXR0aW5ncyxoLmV2ZW50TWFuYWdlcixoLnd0VGFibGUsaC5zZWxlY3Rpb25zKSxoLnd0T3ZlcmxheXM9bmV3IG5ldChEVyhoKSxtLGguZG9tQmluZGluZ3MsaC53dFNldHRpbmdzLGguZXZl''@;'; put 'put ''bnRNYW5hZ2VyLGgud3RUYWJsZSksaC5leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygpLGguZmluZE9yaWdpbmFsSGVhZGVycygpLGh9cmV0dXJuIGZ1bmN0aW9uIEZldChsLGMsYSl7YyYmeGZlKGwucHJvdG90eXBlLGMpLGEmJnhmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJw''@;'; put 'put ''cm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJleHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLG09W10sXz1bXTttYSh7cm93SGVhZGVyczoiaHRSb3dIZWFkZXJzIixjb2x1bW5IZWFkZXJzOiJodENvbHVtbkhlYWRlcnMifSxm''@;'; put 'put ''dW5jdGlvbihPLFgpe2Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKFgpLmxlbmd0aCYmXy5wdXNoKE8pLG0ucHVzaChPKX0pLEpvKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUsbSksZ2kodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSxfKX19LHtrZXk6''@;'; put 'put ''ImdldFZpZXdwb3J0RGFvIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJue2dldCB3b3QoKXtyZXR1cm4gZH0sZ2V0IHRvcE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcigpe3JldHVybiBkLnd0T3ZlcmxheXMudG9wT3ZlcmxheS50cmltbWluZ0NvbnRhaW5lcn0sZ2V0IGlubGlu''@;'; put 'put ''ZVN0YXJ0T3ZlcmxheVRyaW1taW5nQ29udGFpbmVyKCl7cmV0dXJuIGQud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkudHJpbW1pbmdDb250YWluZXJ9LGdldCB0b3BTY3JvbGxQb3NpdGlvbigpe3JldHVybiBkLnd0T3ZlcmxheXMudG9wT3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigp''@;'; put 'put ''fSxnZXQgdG9wUGFyZW50T2Zmc2V0KCl7cmV0dXJuIGQud3RPdmVybGF5cy50b3BPdmVybGF5LmdldFRhYmxlUGFyZW50T2Zmc2V0KCl9LGdldCBpbmxpbmVTdGFydFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIGQud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRp''@;'; put 'put ''b24oKX0sZ2V0IGlubGluZVN0YXJ0UGFyZW50T2Zmc2V0KCl7cmV0dXJuIGQud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKX0sZ2V0IHRvcE92ZXJsYXkoKXtyZXR1cm4gZC53dE92ZXJsYXlzLnRvcE92ZXJsYXl9LGdldCBpbmxpbmVTdGFydE92''@;'; put 'put ''ZXJsYXkoKXtyZXR1cm4gZC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheX0sZ2V0IGJvdHRvbU92ZXJsYXkoKXtyZXR1cm4gZC53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXl9fX19XSksYX0ocFcpO2Z1bmN0aW9uIFRNKGwpe3JldHVybihUTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEFmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsV2V0KGYua2V5KSxmKX19ZnVuY3Rpb24gV2V0KGwpe3ZhciBjPWZ1bmN0aW9uIEdldChsLGMpe2lmKCJvYmplY3QiIT09VE0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09VE0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4i''@;'; put 'put ''c3ltYm9sIj09PVRNKGMpP2M6U3RyaW5nKGMpfXZhciAkZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyhmdW5jdGlvbiBaZXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMs''@;'; put 'put ''bCksYyBpbnN0YW5jZW9mIHBXP3RoaXMuX3dvdD1jOnRoaXMuX2luaXRGcm9tU2V0dGluZ3MoYyl9cmV0dXJuIGZ1bmN0aW9uIFlldChsLGMsYSl7YyYmQWZlKGwucHJvdG90eXBlLGMpLGEmJkFmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pfShsLFt7a2V5OiJfaW5pdEZyb21TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oYSl7YS5mYWNhZGU9ZnVuY3Rpb24oZil7dmFyIGQ9bmV3IGwoZik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGR9fSx0aGlzLl93b3Q9bmV3IFVldChhLnRhYmxlLGEpfX0se2tleToiZ3VpZCIsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5ndWlkfX0se2tleToicm9vdERvY3VtZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudH19LHtrZXk6InJvb3RXaW5kb3ciLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZG9t''@;'; put 'put ''QmluZGluZ3Mucm9vdFdpbmRvd319LHtrZXk6Ind0U2V0dGluZ3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5nc319LHtrZXk6ImNsb25lU291cmNlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmNsb25lU291cmNlfX0se2tleToiY2xvbmVPdmVy''@;'; put 'put ''bGF5IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmNsb25lT3ZlcmxheX19LHtrZXk6InNlbGVjdGlvbnMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Quc2VsZWN0aW9uc319LHtrZXk6Ind0Vmlld3BvcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qu''@;'; put 'put ''d3RWaWV3cG9ydH19LHtrZXk6Ind0T3ZlcmxheXMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RPdmVybGF5c319LHtrZXk6Ind0VGFibGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3Qud3RUYWJsZX19LHtrZXk6Ind0RXZlbnQiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl93b3Qud3RFdmVudH19LHtrZXk6Ind0U2Nyb2xsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lnd0U2Nyb2xsfX0se2tleToiZHJhd24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZHJhd259LHNldDpmdW5jdGlvbihhKXt0aGlzLl93b3QuZHJh''@;'; put 'put ''d249YX19LHtrZXk6ImRyYXdJbnRlcnJ1cHRlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5kcmF3SW50ZXJydXB0ZWR9LHNldDpmdW5jdGlvbihhKXt0aGlzLl93b3QuZHJhd0ludGVycnVwdGVkPWF9fSx7a2V5OiJsYXN0TW91c2VPdmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fd290Lmxhc3RNb3VzZU92ZXJ9LHNldDpmdW5jdGlvbihhKXt0aGlzLl93b3QubGFzdE1vdXNlT3Zlcj1hfX0se2tleToibW9tZW50dW1TY3JvbGxpbmciLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QubW9tZW50dW1TY3JvbGxpbmd9LHNldDpmdW5jdGlvbihhKXt0''@;'; put 'put ''aGlzLl93b3QubW9tZW50dW1TY3JvbGxpbmc9YX19LHtrZXk6InRvdWNoQXBwbGllZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC50b3VjaEFwcGxpZWR9LHNldDpmdW5jdGlvbihhKXt0aGlzLl93b3QudG91Y2hBcHBsaWVkPWF9fSx7a2V5OiJkb21CaW5kaW5ncyIsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5kb21CaW5kaW5nc319LHtrZXk6ImV2ZW50TGlzdGVuZXJzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmV2ZW50TGlzdGVuZXJzfSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5fd290LmV2ZW50TGlzdGVuZXJzPWF9fSx7a2V5OiJldmVu''@;'; put 'put ''dE1hbmFnZXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93b3QuZXZlbnRNYW5hZ2VyfX0se2tleToiY3JlYXRlQ2VsbENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5fd290LmNyZWF0ZUNlbGxDb29yZHMoYSxmKX19LHtrZXk6ImNyZWF0ZUNlbGxSYW5nZSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3JldHVybiB0aGlzLl93b3QuY3JlYXRlQ2VsbFJhbmdlKGEsZixkKX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dvdC5kcmF3KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVu''@;'; put 'put ''dHNbMF0pLHRoaXN9fSx7a2V5OiJnZXRDZWxsIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd290LmdldENlbGwoYSxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhLGYsZCxoLG0pe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnQoYSxmLGQsaCxtKX19LHtrZXk6InNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7cmV0dXJuIHRoaXMuX3dvdC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShhLGYs''@;'; put 'put ''ZCl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXtyZXR1cm4gdGhpcy5fd290LnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShhLGYsZCl9fSx7a2V5OiJnZXRWaWV3cG9ydCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290Lmdl''@;'; put 'put ''dFZpZXdwb3J0KCl9fSx7a2V5OiJnZXRPdmVybGF5TmFtZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmNsb25lT3ZlcmxheT90aGlzLl93b3QuY2xvbmVPdmVybGF5LnR5cGU6Im1hc3RlciJ9fSx7a2V5OiJleHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcyIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5fd290LmV4cG9ydFNldHRpbmdzQXNDbGFzc05hbWVzKCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzLnVwZGF0ZShhLGYpLHRoaXN9fSx7a2V5OiJnZXRTZXR0aW5nIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhLGYsZCxoLG0pe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKGEsZixkLGgsbSl9fSx7a2V5OiJoYXNTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd290Lnd0U2V0dGluZ3MuaGFzU2V0dGluZyhhKX19LHtrZXk6ImRlc3Ryb3kiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dGhpcy5fd290LmRlc3Ryb3koKX19XSksbH0oKTtmdW5jdGlvbiBUZmUobCl7dmFyIGM9bC5pc1NoaWZ0S2V5LGE9bC5pc0xlZnRDbGljayxmPWwuaXNSaWdodENsaWNrLGQ9bC5jb29yZHMsaD1sLnNlbGVjdGlvbixtPWwuY29udHJvbGxlcixfPWwuY2VsbENvb3Jk''@;'; put 'put ''c0ZhY3RvcnksTz1oLmlzU2VsZWN0ZWQoKT9oLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJyZW50KCk6bnVsbCxYPWguaXNTZWxlY3RlZEJ5Q29ybmVyKCksYWU9aC5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKTtpZihjJiZPKWQucm93Pj0wJiZkLmNvbD49MCYmIW0uY2VsbD9oLnNldFJhbmdlRW5k''@;'; put 'put ''KGQpOihYfHxhZSkmJmQucm93Pj0wJiZkLmNvbD49MCYmIW0uY2VsbD9oLnNldFJhbmdlRW5kKF8oZC5yb3csZC5jb2wpKTpYJiZkLnJvdzwwJiYhbS5jb2x1bW4/aC5zZXRSYW5nZUVuZChfKE8udG8ucm93LGQuY29sKSk6YWUmJmQuY29sPDAmJiFtLnJvdz9oLnNldFJhbmdlRW5kKF8oZC5y''@;'; put 'put ''b3csTy50by5jb2wpKTooIVgmJiFhZSYmZC5jb2w8MHx8WCYmZC5jb2w8MCkmJiFtLnJvdz9oLnNlbGVjdFJvd3MoTWF0aC5tYXgoTy5mcm9tLnJvdywwKSxkLnJvdyxkLmNvbCk6KCFYJiYhYWUmJmQucm93PDB8fGFlJiZkLnJvdzwwKSYmIW0uY29sdW1uJiZoLnNlbGVjdENvbHVtbnMoTWF0''@;'; put 'put ''aC5tYXgoTy5mcm9tLmNvbCwwKSxkLmNvbCxkLnJvdyk7ZWxzZXt2YXIgcGU9IWguaW5JblNlbGVjdGlvbihkKSxiZT1hfHxmJiZwZTtkLnJvdzwwJiZkLmNvbD49MCYmIW0uY29sdW1uP2JlJiZoLnNlbGVjdENvbHVtbnMoZC5jb2wsZC5jb2wsZC5yb3cpOmQuY29sPDAmJmQucm93Pj0wJiYh''@;'; put 'put ''bS5yb3c/YmUmJmguc2VsZWN0Um93cyhkLnJvdyxkLnJvdyxkLmNvbCk6ZC5jb2w+PTAmJmQucm93Pj0wJiYhbS5jZWxsP2JlJiZoLnNldFJhbmdlU3RhcnQoZCk6ZC5jb2w8MCYmZC5yb3c8MCYmaC5zZWxlY3RBbGwoITAsITApfX12YXIgcWV0PW5ldyBNYXAoW1sibW91c2Vkb3duIixUZmVd''@;'; put 'put ''LFsibW91c2VvdmVyIixmdW5jdGlvbiBLZXQobCl7dmFyIGE9bC5jb29yZHMsZj1sLnNlbGVjdGlvbixkPWwuY29udHJvbGxlcixoPWwuY2VsbENvb3Jkc0ZhY3Rvcnk7aWYobC5pc0xlZnRDbGljayl7dmFyIG09Zi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSxfPWYuaXNTZWxlY3RlZEJ5Q29s''@;'; put 'put ''dW1uSGVhZGVyKCksTz1mLnRhYmxlUHJvcHMuY291bnRDb2xzKCksWD1mLnRhYmxlUHJvcHMuY291bnRSb3dzKCk7XyYmIWQuY29sdW1uP2Yuc2V0UmFuZ2VFbmQoaChYLTEsYS5jb2wpKTptJiYhZC5yb3c/Zi5zZXRSYW5nZUVuZChoKGEucm93LE8tMSkpOmQuY2VsbHx8Zi5zZXRSYW5nZUVu''@;'; put 'put ''ZChhKX19XSxbInRvdWNoc3RhcnQiLFRmZV1dKTtmdW5jdGlvbiBPZmUobCxjKXt2YXIgYT1jLmNvb3JkcyxmPWMuc2VsZWN0aW9uLGQ9Yy5jb250cm9sbGVyLGg9Yy5jZWxsQ29vcmRzRmFjdG9yeTtxZXQuZ2V0KGwudHlwZSkoe2Nvb3JkczphLHNlbGVjdGlvbjpmLGNvbnRyb2xsZXI6ZCxj''@;'; put 'put ''ZWxsQ29vcmRzRmFjdG9yeTpoLGlzU2hpZnRLZXk6bC5zaGlmdEtleSxpc0xlZnRDbGljazpRSShsKXx8InRvdWNoc3RhcnQiPT09bC50eXBlLGlzUmlnaHRDbGljazpJNChsKX0pfXZhciBEZmU9bmV3IFdlYWtNYXAsSVc9U3ltYm9sKCJyb290SW5zdGFuY2UiKTtmdW5jdGlvbiBSVyhsKXty''@;'; put 'put ''ZXR1cm4gRGZlLmhhcyhsKX1mdW5jdGlvbiBPTShsKXtyZXR1cm4oT009ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBETShsLGMpe3JldHVybiBmdW5jdGlvbiB0dHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9u''@;'; put 'put ''IGV0dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmpl''@;'; put 'put ''Y3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxP''@;'; put 'put ''YmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8UmZlKGwsYyl8fGZ1bmN0aW9uIFFldCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSWZlKGwpe3JldHVybiBmdW5jdGlvbiBpdHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gTFcobCl9KGwpfHxmdW5j''@;'; put 'put ''dGlvbiBydHQobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8UmZlKGwpfHxmdW5jdGlvbiBudHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVt''@;'; put 'put ''cHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBSZmUobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGwpcmV0dXJuIExXKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJv''@;'; put 'put ''bShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBMVyhsLGMpfX1mdW5jdGlvbiBMVyhsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFy''@;'; put 'put ''cmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIExmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsRmZlKGYua2V5KSxmKX19ZnVuY3Rpb24gUGZlKGwsYyxhKXsoZnVuY3Rpb24gbHR0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBv''@;'; put 'put ''biBhbiBvYmplY3QiKX0pKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBQNChsLGMsYSl7cmV0dXJuKGM9RmZlKGMpKWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0''@;'; put 'put ''aW9uIEZmZShsKXt2YXIgYz1mdW5jdGlvbiBzdHQobCxjKXtpZigib2JqZWN0IiE9PU9NKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PU9NKGYp''@;'; put 'put ''KXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1PTShjKT9jOlN0cmluZyhjKX1m''@;'; put 'put ''dW5jdGlvbiBIZmUobCxjKXtyZXR1cm4gZnVuY3Rpb24gdXR0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxWZmUobCxjLCJnZXQiKSl9ZnVuY3Rpb24gTmZlKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gY3R0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGws''@;'; put 'put ''YSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCxWZmUobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIFZmZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIgRTU9bmV3IFdlYWtNYXAsUFc9bmV3IFdlYWtNYXAsRlc9bmV3IFdlYWtNYXAsZnR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24g''@;'; put 'put ''b3R0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLFA0KHRoaXMsImluc3RhbmNlIix2b2lkIDApLFA0KHRoaXMsImV2ZW50TWFuYWdlciIsdm9pZCAwKSxQNCh0aGlzLCJz''@;'; put 'put ''ZXR0aW5ncyIsdm9pZCAwKSxQNCh0aGlzLCJUSEVBRCIsdm9pZCAwKSxQNCh0aGlzLCJUQk9EWSIsdm9pZCAwKSxQNCh0aGlzLCJfd3QiLHZvaWQgMCksUDQodGhpcywiYWN0aXZlV3QiLHZvaWQgMCksUGZlKHRoaXMsUFcse3dyaXRhYmxlOiEwLHZhbHVlOjB9KSxQZmUodGhpcyxGVyx7d3Jp''@;'; put 'put ''dGFibGU6ITAsdmFsdWU6MH0pLFA0KHRoaXMsInBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6ZSIsITEpLHRoaXMuaW5zdGFuY2U9Yyx0aGlzLmV2ZW50TWFuYWdlcj1uZXcgZnModGhpcy5pbnN0YW5jZSksdGhpcy5zZXR0aW5ncz10aGlzLmluc3RhbmNlLmdldFNldHRpbmdzKCksRTUuc2V0''@;'; put 'put ''KHRoaXMse3NlbGVjdGlvbk1vdXNlRG93bjohMSxtb3VzZURvd246dm9pZCAwLHRhYmxlOnZvaWQgMCxsYXN0V2lkdGg6MCxsYXN0SGVpZ2h0OjB9KSx0aGlzLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLHRoaXMuaW5pdGlhbGl6ZVdhbGtvbnRhYmxlKCl9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIGF0dChsLGMsYSl7YyYmTGZlKGwucHJvdG90eXBlLGMpLGEmJkxmZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZS5pc1JlbmRlclN1''@;'; put 'put ''c3BlbmRlZCgpfHwodGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVuZGVyIix0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlciksdGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemUmJih0aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1lbnRzU2l6ZT0hMSx0aGlzLmFkanVzdEVs''@;'; put 'put ''ZW1lbnRzU2l6ZSghMCkpLHRoaXMuX3d0LmRyYXcoIXRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlbmRlciIsdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXIpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSExLHRo''@;'; put 'put ''aXMuaW5zdGFuY2UucmVuZGVyQ2FsbD0hMSl9fSx7a2V5OiJhZGp1c3RFbGVtZW50c1NpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLmluc3RhbmNlLmlzUmVuZGVyU3VzcGVuZGVk''@;'; put 'put ''KCk/dGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemU9ITA6dGhpcy5fd3Qud3RPdmVybGF5cy5hZGp1c3RFbGVtZW50c1NpemUoYSl9fSx7a2V5OiJnZXRDZWxsQXRDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dGhpcy5fd3QuZ2V0Q2VsbChhLGYpO3JldHVybiBkPDA/''@;'; put 'put ''bnVsbDpkfX0se2tleToic2Nyb2xsVmlld3BvcnQiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgsbSl7cmV0dXJuIHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0KGEsZixkLGgsbSl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydEhvcml6b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3JldHVybiB0''@;'; put 'put ''aGlzLl93dC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShhLGYsZCl9fSx7a2V5OiJzY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXtyZXR1cm4gdGhpcy5fd3Quc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KGEsZixkKX19LHtrZXk6ImNyZWF0ZUVsZW1l''@;'; put 'put ''bnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPUU1LmdldCh0aGlzKSxmPXRoaXMuaW5zdGFuY2UsZD1mLnJvb3RFbGVtZW50LGg9Zi5yb290RG9jdW1lbnQsbT1kLmdldEF0dHJpYnV0ZSgic3R5bGUiKTttJiZkLnNldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbHN0eWxlIixtKSxnaShkLCJo''@;'; put 'put ''YW5kc29udGFibGUiKSxhLnRhYmxlPWguY3JlYXRlRWxlbWVudCgiVEFCTEUiKSxnaShhLnRhYmxlLCJodENvcmUiKSx0aGlzLmluc3RhbmNlLmdldFNldHRpbmdzKCkudGFibGVDbGFzc05hbWUmJmdpKGEudGFibGUsdGhpcy5pbnN0YW5jZS5nZXRTZXR0aW5ncygpLnRhYmxlQ2xhc3NOYW1l''@;'; put 'put ''KSx0aGlzLlRIRUFEPWguY3JlYXRlRWxlbWVudCgiVEhFQUQiKSxhLnRhYmxlLmFwcGVuZENoaWxkKHRoaXMuVEhFQUQpLHRoaXMuVEJPRFk9aC5jcmVhdGVFbGVtZW50KCJUQk9EWSIpLGEudGFibGUuYXBwZW5kQ2hpbGQodGhpcy5UQk9EWSksdGhpcy5pbnN0YW5jZS50YWJsZT1hLnRhYmxl''@;'; put 'put ''LHRoaXMuaW5zdGFuY2UuY29udGFpbmVyLmluc2VydEJlZm9yZShhLnRhYmxlLHRoaXMuaW5zdGFuY2UuY29udGFpbmVyLmZpcnN0Q2hpbGQpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPUU1LmdldCh0aGlzKSxkPXRoaXMuaW5zdGFuY2Us''@;'; put 'put ''aD1kLnJvb3RFbGVtZW50LG09ZC5yb290RG9jdW1lbnQsXz1kLnNlbGVjdGlvbixPPW0uZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaCwibW91c2Vkb3duIixmdW5jdGlvbihYKXtpZihmLnNlbGVjdGlvbk1vdXNlRG93bj0hMCwhYS5pc1RleHRT''@;'; put 'put ''ZWxlY3Rpb25BbGxvd2VkKFgudGFyZ2V0KSl7dmFyIGFlPWEuaW5zdGFuY2Uucm9vdFdpbmRvdztFWShhZSksWC5wcmV2ZW50RGVmYXVsdCgpLGFlLmZvY3VzKCl9fSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZXVwIixmdW5jdGlvbigpe2Yuc2VsZWN0aW9u''@;'; put 'put ''TW91c2VEb3duPSExfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZW1vdmUiLGZ1bmN0aW9uKFgpe2Yuc2VsZWN0aW9uTW91c2VEb3duJiYhYS5pc1RleHRTZWxlY3Rpb25BbGxvd2VkKFgudGFyZ2V0KSYmKGEuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24m''@;'; put 'put ''JkVZKGEuaW5zdGFuY2Uucm9vdFdpbmRvdyksWC5wcmV2ZW50RGVmYXVsdCgpKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoTywia2V5dXAiLGZ1bmN0aW9uKFgpe18uaXNJblByb2dyZXNzKCkmJiFYLnNoaWZ0S2V5JiZfLmZpbmlzaCgpfSksdGhpcy5ldmVudE1hbmFn''@;'; put 'put ''ZXIuYWRkRXZlbnRMaXN0ZW5lcihPLCJtb3VzZXVwIixmdW5jdGlvbihYKXtfLmlzSW5Qcm9ncmVzcygpJiZRSShYKSYmXy5maW5pc2goKSxmLm1vdXNlRG93bj0hMSwoWEkobS5hY3RpdmVFbGVtZW50KXx8IV8uaXNTZWxlY3RlZCgpJiYhXy5pc1NlbGVjdGVkQnlBbnlIZWFkZXIoKSYmIWgu''@;'; put 'put ''Y29udGFpbnMoWC50YXJnZXQpJiYhSTQoWCkpJiZhLmluc3RhbmNlLnVubGlzdGVuKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKE8sImNvbnRleHRtZW51IixmdW5jdGlvbihYKXtfLmlzSW5Qcm9ncmVzcygpJiZJNChYKSYmKF8uZmluaXNoKCksZi5tb3VzZURvd249''@;'; put 'put ''ITEpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihPLCJ0b3VjaGVuZCIsZnVuY3Rpb24oKXtfLmlzSW5Qcm9ncmVzcygpJiZfLmZpbmlzaCgpLGYubW91c2VEb3duPSExfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihPLCJtb3VzZWRvd24iLGZ1bmN0''@;'; put 'put ''aW9uKFgpe3ZhciBhZT1YLnRhcmdldCxwZT1YLnh8fFguY2xpZW50WCxiZT1YLnl8fFguY2xpZW50WSx4ZT1YLnRhcmdldDtpZighZi5tb3VzZURvd24mJmgmJmEuaW5zdGFuY2Uudmlldyl7dmFyIFZlPWEuaW5zdGFuY2Uudmlldy5fd3Qud3RUYWJsZS5ob2xkZXI7aWYoeGU9PT1WZSl7dmFy''@;'; put 'put ''IFplPU51KG0pO2lmKG0uZWxlbWVudEZyb21Qb2ludChwZStaZSxiZSkhPT1WZXx8bS5lbGVtZW50RnJvbVBvaW50KHBlLGJlK1plKSE9PVZlKXJldHVybn1lbHNlIGZvcig7eGUhPT1POyl7aWYobnVsbD09PXhlKXtpZihYLmlzVGFyZ2V0V2ViQ29tcG9uZW50KWJyZWFrO3JldHVybn1pZih4''@;'; put 'put ''ZT09PWgpcmV0dXJuO3hlPXhlLnBhcmVudE5vZGV9KCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm91dHNpZGVDbGlja0Rlc2VsZWN0cz9hLnNldHRpbmdzLm91dHNpZGVDbGlja0Rlc2VsZWN0cyhhZSk6YS5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMpP2EuaW5zdGFuY2Uu''@;'; put 'put ''ZGVzZWxlY3RDZWxsKCk6YS5pbnN0YW5jZS5kZXN0cm95RWRpdG9yKCExLCExKX19KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGYudGFibGUsInNlbGVjdHN0YXJ0IixmdW5jdGlvbihYKXthLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufHwkUyhYLnRhcmdldCl8fFgu''@;'; put 'put ''cHJldmVudERlZmF1bHQoKX0pfX0se2tleToidHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY7cmV0dXJuKGY9dGhpcy5pbnN0YW5jZSkuX2NyZWF0ZUNlbGxDb29yZHMuYXBwbHkoZixJZmUodGhpcy50cmFuc2xhdGVGcm9tUmVu''@;'; put 'put ''ZGVyYWJsZVRvVmlzdWFsSW5kZXgoYS5yb3csYS5jb2wpKSl9fSx7a2V5OiJ0cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9YT49MD90aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxl''@;'; put 'put ''SW5kZXgoYSk6YSxoPWY+PTA/dGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpOmY7cmV0dXJuIG51bGw9PT1kJiYoZD1hKSxudWxsPT09aCYmKGg9ZiksW2QsaF19fSx7a2V5OiJjb3VudFJlbmRlcmFibGVJbmRleGVzIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihhLGYpe3ZhciBkPU1hdGgubWluKGEuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxmKSxoPWEuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQtMSwtMSk7cmV0dXJuIG51bGw9PT1oPzA6YS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGgpKzF9fSx7a2V5OiJj''@;'; put 'put ''b3VudFJlbmRlcmFibGVDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvdW50UmVuZGVyYWJsZUluZGV4ZXModGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlcix0aGlzLnNldHRpbmdzLm1heENvbHMpfX0se2tleToiY291bnRSZW5kZXJhYmxlUm93cyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb3VudFJlbmRlcmFibGVJbmRleGVzKHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsdGhpcy5zZXR0aW5ncy5tYXhSb3dzKX19LHtrZXk6ImNvdW50Tm90SGlkZGVuUm93SW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''b3VudE5vdEhpZGRlbkluZGV4ZXMoYSxmLHRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIsdGhpcy5jb3VudFJlbmRlcmFibGVSb3dzKCkpfX0se2tleToiY291bnROb3RIaWRkZW5Db2x1bW5JbmRleGVzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVu''@;'; put 'put ''SW5kZXhlcyhhLGYsdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlcix0aGlzLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSl9fSx7a2V5OiJjb3VudE5vdEhpZGRlbkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgpe2lmKGlzTmFOKGEpfHxhPDApcmV0dXJuIDA7dmFyIG09ZC5n''@;'; put 'put ''ZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYSxmKSxfPWQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChtKTtpZighTnVtYmVyLmlzSW50ZWdlcihfKSlyZXR1cm4gMDt2YXIgTz0wO3JldHVybiBmPDA/Tz1fKzE6Zj4wJiYoTz1oLV8pLE99fSx7a2V5OiJjb3VudE5vdEhpZGRlbkZpeGVk''@;'; put 'put ''Q29sdW1uc1N0YXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCksZj1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSxhKS0xO3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuQ29sdW1uSW5kZXhlcyhm''@;'; put 'put ''LC0xKX19LHtrZXk6ImNvdW50Tm90SGlkZGVuRml4ZWRSb3dzVG9wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5zdGFuY2UuY291bnRSb3dzKCksZj1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c1RvcCwxMCksYSktMTtyZXR1cm4gdGhpcy5jb3VudE5v''@;'; put 'put ''dEhpZGRlblJvd0luZGV4ZXMoZiwtMSl9fSx7a2V5OiJjb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmluc3RhbmNlLmNvdW50Um93cygpLGY9TWF0aC5tYXgoYS1wYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c0JvdHRvbSwx''@;'; put 'put ''MCksMCk7cmV0dXJuIHRoaXMuY291bnROb3RIaWRkZW5Sb3dJbmRleGVzKGYsMSl9fSx7a2V5OiJpc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkUm93c1RvcCgpK3RoaXMuY291bnROb3RI''@;'; put 'put ''aWRkZW5GaXhlZFJvd3NCb3R0b20oKSxmPXRoaXMuY291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNTdGFydCgpO3JldHVybiB0aGlzLmluc3RhbmNlLmNvdW50UmVuZGVyZWRSb3dzKCk+YSYmdGhpcy5pbnN0YW5jZS5jb3VudFJlbmRlcmVkQ29scygpPmZ9fSx7a2V5OiJpbml0aWFsaXplV2Fs''@;'; put 'put ''a29udGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPUU1LmdldCh0aGlzKSxkPXtydGxNb2RlOnRoaXMuaW5zdGFuY2UuaXNSdGwoKSxleHRlcm5hbFJvd0NhbGN1bGF0b3I6dGhpcy5pbnN0YW5jZS5nZXRQbHVnaW4oImF1dG9Sb3dTaXplIikmJnRoaXMuaW5zdGFuY2UuZ2V0''@;'; put 'put ''UGx1Z2luKCJhdXRvUm93U2l6ZSIpLmlzRW5hYmxlZCgpLHRhYmxlOmYudGFibGUsaXNEYXRhVmlld0luc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIFJXKGEuaW5zdGFuY2UpfSxwcmV2ZW50T3ZlcmZsb3c6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZXR0aW5ncy5wcmV2ZW50T3ZlcmZsb3d9LHBy''@;'; put 'put ''ZXZlbnRXaGVlbDpmdW5jdGlvbigpe3JldHVybiBhLnNldHRpbmdzLnByZXZlbnRXaGVlbH0sc3RyZXRjaEg6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZXR0aW5ncy5zdHJldGNoSH0sZGF0YTpmdW5jdGlvbihhZSxwZSl7dmFyIGJlO3JldHVybihiZT1hLmluc3RhbmNlKS5nZXREYXRhQXRDZWxs''@;'; put 'put ''LmFwcGx5KGJlLElmZShhLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChhZSxwZSkpKX0sdG90YWxSb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIGEuY291bnRSZW5kZXJhYmxlUm93cygpfSx0b3RhbENvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gYS5jb3VudFJlbmRlcmFibGVD''@;'; put 'put ''b2x1bW5zKCl9LGZpeGVkQ29sdW1uc1N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuY291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNTdGFydCgpfSxmaXhlZFJvd3NUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gYS5jb3VudE5vdEhpZGRlbkZpeGVkUm93c1RvcCgpfSxmaXhlZFJvd3NCb3R0b206ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gYS5jb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSgpfSxzaG91bGRSZW5kZXJJbmxpbmVTdGFydE92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydD4wfHxkLnJvd0hlYWRlcnMoKS5sZW5ndGg+MH0sc2hvdWxkUmVu''@;'; put 'put ''ZGVyVG9wT3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBhLnNldHRpbmdzLmZpeGVkUm93c1RvcD4wfHxkLmNvbHVtbkhlYWRlcnMoKS5sZW5ndGg+MH0sc2hvdWxkUmVuZGVyQm90dG9tT3ZlcmxheTpmdW5jdGlvbigpe3JldHVybiBhLnNldHRpbmdzLmZpeGVkUm93c0JvdHRvbT4wfSxtaW5T''@;'; put 'put ''cGFyZVJvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZXR0aW5ncy5taW5TcGFyZVJvd3N9LHJlbmRlckFsbFJvd3M6dGhpcy5zZXR0aW5ncy5yZW5kZXJBbGxSb3dzLHJvd0hlYWRlcnM6ZnVuY3Rpb24oKXt2YXIgYWU9W107cmV0dXJuIGEuaW5zdGFuY2UuaGFzUm93SGVhZGVycygpJiZhZS5w''@;'; put 'put ''dXNoKGZ1bmN0aW9uKHBlLGJlKXt2YXIgeGU9cGU+PTA/YS5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHBlKTpwZTthLmFwcGVuZFJvd0hlYWRlcih4ZSxiZSl9KSxhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlckdldFJvd0hlYWRlclJlbmRl''@;'; put 'put ''cmVycyIsYWUpLE5mZShhLEZXLGFlLmxlbmd0aCksYWV9LGNvbHVtbkhlYWRlcnM6ZnVuY3Rpb24oKXt2YXIgYWU9W107cmV0dXJuIGEuaW5zdGFuY2UuaGFzQ29sSGVhZGVycygpJiZhZS5wdXNoKGZ1bmN0aW9uKHBlLGJlKXt2YXIgeGU9cGU+PTA/YS5pbnN0YW5jZS5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHBlKTpwZTthLmFwcGVuZENvbEhlYWRlcih4ZSxiZSl9KSxhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsYWUpLE5mZShhLFBXLGFlLmxlbmd0aCksYWV9LGNvbHVtbldpZHRoOmZ1bmN0''@;'; put 'put ''aW9uKGFlKXt2YXIgcGU9YS5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGFlKTtyZXR1cm4gYS5pbnN0YW5jZS5nZXRDb2xXaWR0aChudWxsPT09cGU/YWU6cGUpfSxyb3dIZWlnaHQ6ZnVuY3Rpb24oYWUpe3ZhciBwZT1hLmluc3RhbmNl''@;'; put 'put ''LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYWUpO3JldHVybiBhLmluc3RhbmNlLmdldFJvd0hlaWdodChudWxsPT09cGU/YWU6cGUpfSxjZWxsUmVuZGVyZXI6ZnVuY3Rpb24oYWUscGUsYmUpe3ZhciBWZT1ETShhLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxl''@;'; put 'put ''VG9WaXN1YWxJbmRleChhZSxwZSksMiksWmU9VmVbMF0sbHQ9VmVbMV0sZHQ9YS5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsWmUsbHQpLGd0PVplLGp0PWx0O2lmKEFycmF5LmlzQXJyYXkoZHQpKXt2YXIgcm49RE0oZHQsMik7Z3Q9cm5bMF0sanQ9cm5bMV19dmFy''@;'; put 'put ''IFh0PWEuaW5zdGFuY2UuZ2V0Q2VsbE1ldGEoZ3QsanQpLHluPWEuaW5zdGFuY2UuY29sVG9Qcm9wKGp0KSxRbj1hLmluc3RhbmNlLmdldERhdGFBdFJvd1Byb3AoZ3QseW4pO2EuaW5zdGFuY2UuaGFzSG9vaygiYmVmb3JlVmFsdWVSZW5kZXIiKSYmKFFuPWEuaW5zdGFuY2UucnVuSG9va3Mo''@;'; put 'put ''ImJlZm9yZVZhbHVlUmVuZGVyIixRbixYdCkpLGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlbmRlcmVyIixiZSxaZSxsdCx5bixRbixYdCksYS5pbnN0YW5jZS5nZXRDZWxsUmVuZGVyZXIoWHQpKGEuaW5zdGFuY2UsYmUsWmUsbHQseW4sUW4sWHQpLGEuaW5zdGFuY2UucnVuSG9va3Mo''@;'; put 'put ''ImFmdGVyUmVuZGVyZXIiLGJlLFplLGx0LHluLFFuLFh0KX0sc2VsZWN0aW9uczp0aGlzLmluc3RhbmNlLnNlbGVjdGlvbi5oaWdobGlnaHQsaGlkZUJvcmRlck9uTW91c2VEb3duT3ZlcjpmdW5jdGlvbigpe3JldHVybiBhLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufSxvbldpbmRvd1Jl''@;'; put 'put ''c2l6ZTpmdW5jdGlvbigpe2EuaW5zdGFuY2UmJiFhLmluc3RhbmNlLmlzRGVzdHJveWVkJiZhLmluc3RhbmNlLnJlZnJlc2hEaW1lbnNpb25zKCl9LG9uQ29udGFpbmVyRWxlbWVudFJlc2l6ZTpmdW5jdGlvbigpe2EuaW5zdGFuY2UmJiFhLmluc3RhbmNlLmlzRGVzdHJveWVkJiZhLmluc3Rh''@;'; put 'put ''bmNlLnJlZnJlc2hEaW1lbnNpb25zKCl9LG9uQ2VsbE1vdXNlRG93bjpmdW5jdGlvbihhZSxwZSxiZSx4ZSl7dmFyIFZlPWEudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhwZSksWmU9e3JvdzohMSxjb2x1bW46ITEsY2VsbDohMX07YS5pbnN0YW5jZS5saXN0ZW4oKSxh''@;'; put 'put ''LmFjdGl2ZVd0PXhlLGYubW91c2VEb3duPSEwLGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsYWUsVmUsYmUsWmUpLCFfNShhZSkmJihPZmUoYWUse2Nvb3JkczpWZSxzZWxlY3Rpb246YS5pbnN0YW5jZS5zZWxlY3Rpb24sY29udHJvbGxlcjpaZSxjZWxsQ29v''@;'; put 'put ''cmRzRmFjdG9yeTpmdW5jdGlvbihkdCxndCl7cmV0dXJuIGEuaW5zdGFuY2UuX2NyZWF0ZUNlbGxDb29yZHMoZHQsZ3QpfX0pLGEuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VEb3duIixhZSxWZSxiZSksYS5hY3RpdmVXdD1hLl93dCl9LG9uQ2VsbENvbnRleHRNZW51OmZ1''@;'; put 'put ''bmN0aW9uKGFlLHBlLGJlLHhlKXt2YXIgVmU9YS50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHBlKTthLmFjdGl2ZVd0PXhlLGYubW91c2VEb3duPSExLGEuaW5zdGFuY2Uuc2VsZWN0aW9uLmlzSW5Qcm9ncmVzcygpJiZhLmluc3RhbmNlLnNlbGVjdGlvbi5maW5pc2go''@;'; put 'put ''KSxhLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsYWUsVmUsYmUpLCFfNShhZSkmJihhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixhZSxWZSxiZSksYS5hY3RpdmVXdD1hLl93dCl9LG9uQ2VsbE1vdXNlT3V0OmZ1bmN0aW9u''@;'; put 'put ''KGFlLHBlLGJlLHhlKXt2YXIgVmU9YS50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHBlKTthLmFjdGl2ZVd0PXhlLGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3V0IixhZSxWZSxiZSksIV81KGFlKSYmKGEuaW5zdGFuY2UucnVuSG9va3MoImFm''@;'; put 'put ''dGVyT25DZWxsTW91c2VPdXQiLGFlLFZlLGJlKSxhLmFjdGl2ZVd0PWEuX3d0KX0sb25DZWxsTW91c2VPdmVyOmZ1bmN0aW9uKGFlLHBlLGJlLHhlKXt2YXIgVmU9YS50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHBlKSxaZT17cm93OiExLGNvbHVtbjohMSxjZWxsOiEx''@;'; put 'put ''fTthLmFjdGl2ZVd0PXhlLGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsYWUsVmUsYmUsWmUpLCFfNShhZSkmJihmLm1vdXNlRG93biYmT2ZlKGFlLHtjb29yZHM6VmUsc2VsZWN0aW9uOmEuaW5zdGFuY2Uuc2VsZWN0aW9uLGNvbnRyb2xsZXI6WmUsY2VsbENv''@;'; put 'put ''b3Jkc0ZhY3Rvcnk6ZnVuY3Rpb24oZHQsZ3Qpe3JldHVybiBhLmluc3RhbmNlLl9jcmVhdGVDZWxsQ29vcmRzKGR0LGd0KX19KSxhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3ZlciIsYWUsVmUsYmUpLGEuYWN0aXZlV3Q9YS5fd3QpfSxvbkNlbGxNb3VzZVVwOmZ1bmN0''@;'; put 'put ''aW9uKGFlLHBlLGJlLHhlKXt2YXIgVmU9YS50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHBlKTthLmFjdGl2ZVd0PXhlLGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlVXAiLGFlLFZlLGJlKSwhXzUoYWUpJiYhYS5pbnN0YW5jZS5pc0Rlc3Ryb3ll''@;'; put 'put ''ZCYmKGEuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VVcCIsYWUsVmUsYmUpLGEuYWN0aXZlV3Q9YS5fd3QpfSxvbkNlbGxDb3JuZXJNb3VzZURvd246ZnVuY3Rpb24oYWUpe2FlLnByZXZlbnREZWZhdWx0KCksYS5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb3Ju''@;'; put 'put ''ZXJNb3VzZURvd24iLGFlKX0sb25DZWxsQ29ybmVyRGJsQ2xpY2s6ZnVuY3Rpb24oYWUpe2FlLnByZXZlbnREZWZhdWx0KCksYS5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljayIsYWUpfSxiZWZvcmVEcmF3OmZ1bmN0aW9uKGFlLHBlKXtyZXR1cm4gYS5iZWZv''@;'; put 'put ''cmVSZW5kZXIoYWUscGUpfSxvbkRyYXc6ZnVuY3Rpb24oYWUpe3JldHVybiBhLmFmdGVyUmVuZGVyKGFlKX0sb25TY3JvbGxWZXJ0aWNhbGx5OmZ1bmN0aW9uKCl7cmV0dXJuIGEuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyU2Nyb2xsVmVydGljYWxseSIpfSxvblNjcm9sbEhvcml6b250YWxs''@;'; put 'put ''eTpmdW5jdGlvbigpe3JldHVybiBhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIpfSxvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIil9''@;'; put 'put ''LG9uQmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyOmZ1bmN0aW9uKGFlLHBlLGJlKXt2YXIgeGU9YS5pbnN0YW5jZS5yb3dJbmRleE1hcHBlcixWZT14ZS5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGFlKSxaZT1hLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVIaWdobGlnaHRpbmdS''@;'; put 'put ''b3dIZWFkZXIiLFZlLHBlLGJlKTtyZXR1cm4geGUuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh4ZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWmUsMSkpfSxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjpmdW5jdGlvbihhZSxwZSxiZSl7dmFyIHhlPWEuaW5zdGFuY2Uu''@;'; put 'put ''Y29sdW1uSW5kZXhNYXBwZXIsVmU9eGUuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChhZSksWmU9YS5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixWZSxwZSxiZSk7cmV0dXJuIHhlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoeGUu''@;'; put 'put ''Z2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFplLDEpKX0sb25BZnRlckRyYXdTZWxlY3Rpb246ZnVuY3Rpb24oYWUscGUsYmUpe3ZhciB4ZSxaZT1ETShhLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChhZSxwZSksMiksbHQ9WmVbMF0sZHQ9WmVbMV0sZ3Q9YS5pbnN0YW5j''@;'; put 'put ''ZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLGp0PWd0LnNpemUoKTtpZihqdD4wKXt2YXIgWHQ9Z3QucGVla0J5SW5kZXgoKGJlPz8wKSsxLWp0KTt4ZT1bWHQuZnJvbS5yb3csWHQuZnJvbS5jb2wsWHQudG8ucm93LFh0LnRvLmNvbF19cmV0dXJuIGEuaW5zdGFuY2UucnVuSG9va3Mo''@;'; put 'put ''ImFmdGVyRHJhd1NlbGVjdGlvbiIsbHQsZHQseGUsYmUpfSxvbkJlZm9yZURyYXdCb3JkZXJzOmZ1bmN0aW9uKGFlLHBlKXt2YXIgYmU9RE0oYWUsNCksVmU9YmVbMV0sWmU9YmVbMl0sbHQ9YmVbM10sZHQ9W2EuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFi''@;'; put 'put ''bGVJbmRleChiZVswXSksYS5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFZlKSxhLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoWmUpLGEuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIu''@;'; put 'put ''Z2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChsdCldO3JldHVybiBhLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVEcmF3Qm9yZGVycyIsZHQscGUpfSxvbkJlZm9yZVRvdWNoU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIGEuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVRvdWNoU2Nyb2xs''@;'; put 'put ''Iil9LG9uQWZ0ZXJNb21lbnR1bVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiBhLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlck1vbWVudHVtU2Nyb2xsIil9LG9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoOmZ1bmN0aW9uKGFlLHBlKXt2YXIgYmU9YS5pbnN0YW5jZS5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHBlKTtyZXR1cm4gYS5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixhZSxiZSl9LG9uTW9kaWZ5Um93SGVhZGVyV2lkdGg6ZnVuY3Rpb24oYWUpe3JldHVybiBhLmluc3RhbmNlLnJ1bkhvb2tz''@;'; put 'put ''KCJtb2RpZnlSb3dIZWFkZXJXaWR0aCIsYWUpfSxvbk1vZGlmeUdldENlbGxDb29yZHM6ZnVuY3Rpb24oYWUscGUsYmUpe3ZhciB4ZT1hLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLFZlPWEuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIsWmU9cGU+PTA/VmUuZ2V0VmlzdWFsRnJvbVJlbmRl''@;'; put 'put ''cmFibGVJbmRleChwZSk6cGUsbHQ9YWU+PTA/eGUuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChhZSk6YWUsZHQ9YS5pbnN0YW5jZS5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsbHQsWmUsYmUpO2lmKEFycmF5LmlzQXJyYXkoZHQpKXt2YXIgZ3Q9RE0oZHQsNCksanQ9Z3Rb''@;'; put 'put ''MF0scm49Z3RbMV0sWHQ9Z3RbMl0seW49Z3RbM107cmV0dXJuW2p0Pj0wP3hlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoeGUuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGp0LDEpKTpqdCxybj49MD9WZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFZlLmdldE5lYXJlc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleChybiwxKSk6cm4sWHQ+PTA/eGUuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh4ZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWHQsLTEpKTpYdCx5bj49MD9WZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFZlLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRl''@;'; put 'put ''eCh5biwtMSkpOnluXX19LHZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlOmZ1bmN0aW9uKGFlKXt2YXIgcGU9YS5zZXR0aW5ncy52aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDtpZigiYXV0byI9PT1wZSYmYS5zZXR0aW5ncy5maXhlZFJvd3NUb3AmJihwZT0xMCkscGU+MHx8ImF1dG8i''@;'; put 'put ''PT09cGUpe3ZhciBiZT1hLmNvdW50UmVuZGVyYWJsZVJvd3MoKSx4ZT1hZS5zdGFydFJvdyxWZT1hZS5lbmRSb3c7aWYoIm51bWJlciI9PXR5cGVvZiBwZSlhZS5zdGFydFJvdz1NYXRoLm1heCh4ZS1wZSwwKSxhZS5lbmRSb3c9TWF0aC5taW4oVmUrcGUsYmUtMSk7ZWxzZSBpZigiYXV0byI9''@;'; put 'put ''PT1wZSl7dmFyIFplPU1hdGguY2VpbChWZS9iZSoxMik7YWUuc3RhcnRSb3c9TWF0aC5tYXgoeGUtWmUsMCksYWUuZW5kUm93PU1hdGgubWluKFZlK1plLGJlLTEpfX1hLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIixhZSl9LHZpZXdwb3J0''@;'; put 'put ''Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOmZ1bmN0aW9uKGFlKXt2YXIgcGU9YS5zZXR0aW5ncy52aWV3cG9ydENvbHVtblJlbmRlcmluZ09mZnNldDtpZigiYXV0byI9PT1wZSYmYS5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydCYmKHBlPTEwKSxwZT4wfHwiYXV0byI9PT1wZSl7dmFyIGJl''@;'; put 'put ''PWEuY291bnRSZW5kZXJhYmxlQ29sdW1ucygpLHhlPWFlLnN0YXJ0Q29sdW1uLFZlPWFlLmVuZENvbHVtbjtpZigibnVtYmVyIj09dHlwZW9mIHBlJiYoYWUuc3RhcnRDb2x1bW49TWF0aC5tYXgoeGUtcGUsMCksYWUuZW5kQ29sdW1uPU1hdGgubWluKFZlK3BlLGJlLTEpKSwiYXV0byI9PT1w''@;'; put 'put ''ZSl7dmFyIFplPU1hdGguY2VpbChWZS9iZSo2KTthZS5zdGFydENvbHVtbj1NYXRoLm1heCh4ZS1aZSwwKSxhZS5lbmRDb2x1bW49TWF0aC5taW4oVmUrWmUsYmUtMSl9fWEuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLGFlKX0scm93''@;'; put 'put ''SGVhZGVyV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZXR0aW5ncy5yb3dIZWFkZXJXaWR0aH0sY29sdW1uSGVhZGVySGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGFlPWEuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeUNvbHVtbkhlYWRlckhlaWdodCIpO3JldHVybiBhLnNldHRpbmdzLmNvbHVt''@;'; put 'put ''bkhlYWRlckhlaWdodHx8YWV9fTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVJbml0V2Fsa29udGFibGUiLGQpLHRoaXMuX3d0PW5ldyAkZXQoZCksdGhpcy5hY3RpdmVXdD10aGlzLl93dDt2YXIgaD10aGlzLl93dC53dFRhYmxlLnNwcmVhZGVyLG09dGhpcy5pbnN0YW5jZS5yb290''@;'; put 'put ''RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLnNldExhc3RTaXplKG0ud2lkdGgsbS5oZWlnaHQpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaCwibW91c2Vkb3duIixmdW5jdGlvbihYKXtYLnRhcmdldD09PWgmJjM9PT1YLndoaWNoJiZYLnN0b3BQcm9w''@;'; put 'put ''YWdhdGlvbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJjb250ZXh0bWVudSIsZnVuY3Rpb24oWCl7WC50YXJnZXQ9PT1oJiYzPT09WC53aGljaCYmWC5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5p''@;'; put 'put ''bnN0YW5jZS5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJjbGljayIsZnVuY3Rpb24oKXthLnNldHRpbmdzLm9ic2VydmVET01WaXNpYmlsaXR5JiZhLl93dC5kcmF3SW50ZXJydXB0ZWQmJihhLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcj0hMCxhLnJlbmRlcigpKX0pfX0se2tleToi''@;'; put 'put ''aXNUZXh0U2VsZWN0aW9uQWxsb3dlZCIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoJFMoYSkpcmV0dXJuITA7dmFyIGY9QTQoYSx0aGlzLmluc3RhbmNlLnZpZXcuX3d0Lnd0VGFibGUuc3ByZWFkZXIpO3JldHVybiEhKCEwPT09dGhpcy5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbiYmZnx8ImNl''@;'; put 'put ''bGwiPT09dGhpcy5zZXR0aW5ncy5mcmFnbWVudFNlbGVjdGlvbiYmdGhpcy5pc1NlbGVjdGVkT25seUNlbGwoKSYmZnx8IXRoaXMuc2V0dGluZ3MuZnJhZ21lbnRTZWxlY3Rpb24mJnRoaXMuaXNDZWxsRWRpdGVkKCkmJnRoaXMuaXNTZWxlY3RlZE9ubHlDZWxsKCkpfX0se2tleToiaXNNb3Vz''@;'; put 'put ''ZURvd24iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEU1LmdldCh0aGlzKS5tb3VzZURvd259fSx7a2V5OiJpc1NlbGVjdGVkT25seUNlbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGEsZjtyZXR1cm4gbnVsbCE9PShhPW51bGw9PT0oZj10aGlzLmluc3RhbmNlLmdldFNlbGVjdGVkUmFuZ2VM''@;'; put 'put ''YXN0KCkpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLmlzU2luZ2xlKCkpJiZ2b2lkIDAhPT1hJiZhfX0se2tleToiaXNDZWxsRWRpdGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5zdGFuY2UuZ2V0QWN0aXZlRWRpdG9yKCk7cmV0dXJuIGEmJmEuaXNPcGVuZWQoKX19LHtrZXk6ImJl''@;'; put 'put ''Zm9yZVJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oYSxmKXthJiZ0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVWaWV3UmVuZGVyIix0aGlzLmluc3RhbmNlLmZvcmNlRnVsbFJlbmRlcixmKX19LHtrZXk6ImFmdGVyUmVuZGVyIix2YWx1ZTpmdW5jdGlvbihhKXthJiZ0aGlzLmluc3RhbmNl''@;'; put 'put ''LnJ1bkhvb2tzKCJhZnRlclZpZXdSZW5kZXIiLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyKX19LHtrZXk6ImFwcGVuZFJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtpZihmLmZpcnN0Q2hpbGQpe3ZhciBkPWYuZmlyc3RDaGlsZDtpZighWW8oZCwicmVsYXRpdmUiKSlyZXR1''@;'; put 'put ''cm4gRmQoZiksdm9pZCB0aGlzLmFwcGVuZFJvd0hlYWRlcihhLGYpO3RoaXMudXBkYXRlQ2VsbEhlYWRlcihkLnF1ZXJ5U2VsZWN0b3IoIi5yb3dIZWFkZXIiKSxhLHRoaXMuaW5zdGFuY2UuZ2V0Um93SGVhZGVyKX1lbHNle3ZhciBoPXRoaXMuaW5zdGFuY2UsbT1oLnJvb3REb2N1bWVudCxf''@;'; put 'put ''PWguZ2V0Um93SGVhZGVyLE89bS5jcmVhdGVFbGVtZW50KCJkaXYiKSxYPW0uY3JlYXRlRWxlbWVudCgic3BhbiIpO08uY2xhc3NOYW1lPSJyZWxhdGl2ZSIsWC5jbGFzc05hbWU9InJvd0hlYWRlciIsdGhpcy51cGRhdGVDZWxsSGVhZGVyKFgsYSxfKSxPLmFwcGVuZENoaWxkKFgpLGYuYXBw''@;'; put 'put ''ZW5kQ2hpbGQoTyl9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJHZXRSb3dIZWFkZXIiLGEsZil9fSx7a2V5OiJhcHBlbmRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJd''@;'; put 'put ''OnRoaXMuaW5zdGFuY2UuZ2V0Q29sSGVhZGVyLGg9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjA7aWYoZi5maXJzdENoaWxkKXt2YXIgbT1mLmZpcnN0Q2hpbGQ7WW8obSwicmVsYXRpdmUiKT90aGlzLnVwZGF0ZUNlbGxIZWFkZXIobS5x''@;'; put 'put ''dWVyeVNlbGVjdG9yKCIuY29sSGVhZGVyIiksYSxkLGgpOihGZChmKSx0aGlzLmFwcGVuZENvbEhlYWRlcihhLGYsZCxoKSl9ZWxzZXt2YXIgXz10aGlzLmluc3RhbmNlLnJvb3REb2N1bWVudCxPPV8uY3JlYXRlRWxlbWVudCgiZGl2IiksWD1fLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtPLmNs''@;'; put 'put ''YXNzTmFtZT0icmVsYXRpdmUiLFguY2xhc3NOYW1lPSJjb2xIZWFkZXIiLHRoaXMudXBkYXRlQ2VsbEhlYWRlcihYLGEsZCxoKSxPLmFwcGVuZENoaWxkKFgpLGYuYXBwZW5kQ2hpbGQoTyl9dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGEsZixoKX19LHtrZXk6''@;'; put 'put ''InVwZGF0ZUNlbGxIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxtPWYsXz10aGlzLl93dC53dE92ZXJsYXlzLmdldFBhcmVudE92ZXJsYXkoYSl8fHRoaXMuX3d0O2EucGFy''@;'; put 'put ''ZW50Tm9kZSYmKFlvKGEsImNvbEhlYWRlciIpP209Xy53dFRhYmxlLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGYpOllvKGEsInJvd0hlYWRlciIpJiYobT1fLnd0VGFibGUucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoZikpKSxtPi0xP3Y1KGEsZChmLGgpKTooTzQoYSxTdHJp''@;'; put 'put ''bmcuZnJvbUNoYXJDb2RlKDE2MCkpLGdpKGEsImNvcm5lckhlYWRlciIpKX19LHtrZXk6Im1heGltdW1WaXNpYmxlRWxlbWVudFdpZHRoIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZD10aGlzLl93dC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCktYTtyZXR1cm4gZD4wP2Q6MH19LHtr''@;'; put 'put ''ZXk6Im1heGltdW1WaXNpYmxlRWxlbWVudEhlaWdodCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5fd3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1hO3JldHVybiBkPjA/ZDowfX0se2tleToic2V0TGFzdFNpemUiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9RTUu''@;'; put 'put ''Z2V0KHRoaXMpLGg9W2EsZl07ZC5sYXN0V2lkdGg9aFswXSxkLmxhc3RIZWlnaHQ9aFsxXX19LHtrZXk6ImdldExhc3RTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPUU1LmdldCh0aGlzKTtyZXR1cm57d2lkdGg6YS5sYXN0V2lkdGgsaGVpZ2h0OmEubGFzdEhlaWdodH19fSx7a2V5OiJn''@;'; put 'put ''ZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0Rmlyc3RWaXNpYmxlUm93KCkpfX0se2tl''@;'; put 'put ''eToiZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0TGFzdFZpc2libGVSb3coKSl9fSx7''@;'; put 'put ''a2V5OiJnZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0Rmlyc3RWaXNpYmxl''@;'; put 'put ''Q29sdW1uKCkpfX0se2tleToiZ2V0TGFzdEZ1bGx5VmlzaWJsZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaW5zdGFuY2Uudmlldy5fd3Qud3RTY3JvbGwuZ2V0''@;'; put 'put ''TGFzdFZpc2libGVDb2x1bW4oKSl9fSx7a2V5OiJnZXRDb2x1bW5IZWFkZXJzQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEhmZSh0aGlzLFBXKX19LHtrZXk6ImdldFJvd0hlYWRlcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSGZlKHRoaXMsRlcpfX0se2tleToiZGVz''@;'; put 'put ''dHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl93dC5kZXN0cm95KCksdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1dKSxsfSgpO2NvbnN0IGR0dD1mdHQ7ZnVuY3Rpb24gSFcobCl7cmV0dXJuKEhXPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIEJm''@;'; put 'put ''ZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLE5XPUJmZS5sZW5ndGg7ZnVuY3Rpb24gVlIobCl7Zm9yKHZhciBmLGM9bCsxLGE9IiI7Yz4wOylmPShjLTEpJU5XLGE9U3RyaW5nLmZyb21DaGFyQ29kZSg2NStmKSthLGM9cGFyc2VJbnQoKGMtZikvTlcsMTApO3JldHVybiBhfWZ1bmN0''@;'; put 'put ''aW9uIGh0dChsKXt2YXIgYz0wO2lmKGwpZm9yKHZhciBhPTAsZj1sLmxlbmd0aC0xO2E8bC5sZW5ndGg7YSs9MSxmLT0xKWMrPU1hdGgucG93KE5XLGYpKihCZmUuaW5kZXhPZihsW2FdKSsxKTtyZXR1cm4gYy0xfWZ1bmN0aW9uIHB0dCgpe3ZhciBmLGQsbD1hcmd1bWVudHMubGVuZ3RoPjAm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTAwLGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjQsYT1bXTtmb3IoZj0wO2Y8bDtmKyspe3ZhciBoPVtdO2ZvcihkPTA7ZDxjO2QrKyloLnB1c2goVlIoZCkrKGYrMSkp''@;'; put 'put ''O2EucHVzaChoKX1yZXR1cm4gYX1mdW5jdGlvbiBtdHQoKXt2YXIgZixkLGw9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjEwMCxjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0LGE9''@;'; put 'put ''W107Zm9yKGY9MDtmPGw7ZisrKXt2YXIgaD17fTtmb3IoZD0wO2Q8YztkKyspaFsicHJvcCIuY29uY2F0KGQpXT1WUihkKSsoZisxKTthLnB1c2goaCl9cmV0dXJuIGF9ZnVuY3Rpb24gZ3R0KGwsYyl7Zm9yKHZhciBmLGE9W10sZD0wO2Q8bDtkKyspe2Y9W107Zm9yKHZhciBoPTA7aDxjO2gr''@;'; put 'put ''KylmLnB1c2goIiIpO2EucHVzaChmKX1yZXR1cm4gYX1mdW5jdGlvbiBWVyhsKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxhPWwsZj1bXTtyZXR1cm4oIUFycmF5LmlzQXJyYXkobCl8fCFBcnJheS5pc0FycmF5KGxbMF0p''@;'; put 'put ''KSYmKGE9W2xdKSxhLmZvckVhY2goZnVuY3Rpb24oZCxoKXtBcnJheS5pc0FycmF5KGQpP2QuZm9yRWFjaChmdW5jdGlvbihtLF8pe2YucHVzaChbaCtjLF8sbV0pfSk6T2JqZWN0LmtleXMoZCkuZm9yRWFjaChmdW5jdGlvbihtKXtmLnB1c2goW2grYyxtLGRbbV1dKX0pfSksZn1mdW5jdGlv''@;'; put 'put ''biBCVyhsKXt2YXIgYz0wO3JldHVybiBBcnJheS5pc0FycmF5KGwpJiYobFswXSYmQXJyYXkuaXNBcnJheShsWzBdKT9jPWxbMF0ubGVuZ3RoOmxbMF0mJnBhKGxbMF0pJiYoYz1VSShsWzBdKSkpLGN9ZnVuY3Rpb24gamZlKGwpe3JldHVybiEhKEFycmF5LmlzQXJyYXkobCkmJmwubGVuZ3Ro''@;'; put 'put ''JiZsLmV2ZXJ5KGZ1bmN0aW9uKGMpe3JldHVybiBBcnJheS5pc0FycmF5KGMpfSkpfWZ1bmN0aW9uIHpmZShsKXtyZXR1cm4hIShBcnJheS5pc0FycmF5KGwpJiZsLmxlbmd0aCYmbC5ldmVyeShmdW5jdGlvbihjKXtyZXR1cm4ib2JqZWN0Ij09PUhXKGMpJiYhQXJyYXkuaXNBcnJheShjKSYm''@;'; put 'put ''bnVsbCE9PWN9KSl9ZnVuY3Rpb24gSU0obCl7cmV0dXJuKElNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gVWZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEs''@;'; put 'put ''Zi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxidHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBidHQobCl7dmFyIGM9ZnVuY3Rpb24gX3R0KGwsYyl7aWYoIm9iamVjdCIhPT1JTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7''@;'; put 'put ''dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1JTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVl''@;'; put 'put ''LiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09SU0oYyk/YzpTdHJpbmcoYyl9dmFyIHd0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMV0/YXJndW1lbnRzWzFdOltdOyhmdW5jdGlvbiB2dHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0aGlzLmRhdGE9YSx0aGlzLmRhdGFUeXBl''@;'; put 'put ''PSJhcnJheSIsdGhpcy5jb2xUb1Byb3A9ZnVuY3Rpb24oKXt9LHRoaXMucHJvcFRvQ29sPWZ1bmN0aW9uKCl7fX1yZXR1cm4gZnVuY3Rpb24geXR0KGwsYyxhKXtjJiZVZmUobC5wcm90b3R5cGUsYyksYSYmVWZlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dy''@;'; put 'put ''aXRhYmxlOiExfSl9KGwsW3trZXk6Im1vZGlmeVJvd0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmO3JldHVybiB0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlSb3dEYXRhIikmJihmPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlSb3dEYXRhIixhKSksdm9pZCAwPT09Znx8TnVtYmVyLmlz''@;'; put 'put ''SW50ZWdlcihmKT90aGlzLmRhdGFbYV06Zn19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YSYmMCE9PXRoaXMuZGF0YS5sZW5ndGg/dGhpcy5nZXRCeVJhbmdlKG51bGwsbnVsbCxhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1sw''@;'; put 'put ''XSYmYXJndW1lbnRzWzBdKTp0aGlzLmRhdGF9fSx7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmRhdGE9YX19LHtrZXk6ImdldEF0Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9W107cmV0dXJuIFJuKHRoaXMuZGF0YSxmdW5jdGlvbihoLG0pe3Zh''@;'; put 'put ''ciBfPWYuZ2V0QXRDZWxsKG0sYSk7ZC5wdXNoKF8pfSksZH19LHtrZXk6ImdldEF0Um93Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9dGhpcyxtPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sXz12b2lkIDA9PT1mJiZ2b2lkIDA9''@;'; put 'put ''PT1kLE89bnVsbCxYPW51bGw7aWYoTz10aGlzLm1vZGlmeVJvd0RhdGEoYSksQXJyYXkuaXNBcnJheShPKSlYPVtdLF8/Ty5mb3JFYWNoKGZ1bmN0aW9uKGJlLHhlKXtYW3hlXT1oLmdldEF0UGh5c2ljYWxDZWxsKGEseGUsTyl9KTpfbyhmLGQsZnVuY3Rpb24oYmUpe1hbYmUtZl09aC5nZXRB''@;'; put 'put ''dFBoeXNpY2FsQ2VsbChhLGJlLE8pfSk7ZWxzZSBpZihwYShPKXx8UGwoTykpaWYoWD1tP1tdOnt9LCFffHxtKXt2YXIgcGU9dGhpcy5jb3VudEZpcnN0Um93S2V5cygpLTE7X28oMCxwZSxmdW5jdGlvbihiZSl7dmFyIHhlPWguY29sVG9Qcm9wKGJlKTtpZihiZT49KGZ8fDApJiZiZTw9KGR8''@;'; put 'put ''fHBlKSYmIU51bWJlci5pc0ludGVnZXIoeGUpKXt2YXIgVmU9aC5nZXRBdFBoeXNpY2FsQ2VsbChhLHhlLE8pO20/WC5wdXNoKFZlKTp6SShYLHhlLFZlKX19KX1lbHNlIG1hKE8sZnVuY3Rpb24oYmUseGUpe3pJKFgseGUsaC5nZXRBdFBoeXNpY2FsQ2VsbChhLHhlLE8pKX0pO3JldHVybiBY''@;'; put 'put ''fX0se2tleToic2V0QXRDZWxsIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7aWYoIShhPj10aGlzLmNvdW50Um93cygpfHxmPj10aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCkpKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIikpe3ZhciBoPWc1KGQpO3RoaXMuaG90LnJ1bkhv''@;'; put 'put ''b2tzKCJtb2RpZnlTb3VyY2VEYXRhIixhLGYsaCwic2V0IiksaC5pc1RvdWNoZWQoKSYmKGQ9aC52YWx1ZSl9TnVtYmVyLmlzSW50ZWdlcihmKT90aGlzLmRhdGFbYV1bZl09ZDp6SSh0aGlzLmRhdGFbYV0sZixkKX19fSx7a2V5OiJnZXRBdFBoeXNpY2FsQ2VsbCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSxmLGQpe3ZhciBoPW51bGw7aWYoZCYmKGg9InN0cmluZyI9PXR5cGVvZiBmP1ljZShkLGYpOiJmdW5jdGlvbiI9PXR5cGVvZiBmP2YoZCk6ZFtmXSksdGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5U291cmNlRGF0YSIpKXt2YXIgbT1nNShoKTt0aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5U291''@;'; put 'put ''cmNlRGF0YSIsYSxmLG0sImdldCIpLG0uaXNUb3VjaGVkKCkmJihoPW0udmFsdWUpfXJldHVybiBofX0se2tleToiZ2V0QXRDZWxsIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMubW9kaWZ5Um93RGF0YShhKTtyZXR1cm4gdGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChhLHRoaXMuY29s''@;'; put 'put ''VG9Qcm9wKGYpLGQpfX0se2tleToiZ2V0QnlSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sx''@;'; put 'put ''XT9hcmd1bWVudHNbMV06bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sbT0hMSxfPW51bGwsTz1udWxsLFg9bnVsbCxhZT1udWxsO251bGw9PT1mfHxudWxsPT09ZD8obT0hMCxfPTAsWD10aGlzLmNvdW50Um93cygpLTEpOihf''@;'; put 'put ''PU1hdGgubWluKGYucm93LGQucm93KSxPPU1hdGgubWluKGYuY29sLGQuY29sKSxYPU1hdGgubWF4KGYucm93LGQucm93KSxhZT1NYXRoLm1heChmLmNvbCxkLmNvbCkpO3ZhciBwZT1bXTtyZXR1cm4gX28oXyxYLGZ1bmN0aW9uKGJlKXtwZS5wdXNoKG0/YS5nZXRBdFJvdyhiZSx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGgpOmEuZ2V0QXRSb3coYmUsTyxhZSxoKSl9KSxwZX19LHtrZXk6ImNvdW50Um93cyIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VMZW5ndGgiKSl7dmFyIGE9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZUxlbmd0aCIpO2lm''@;'; put 'put ''KE51bWJlci5pc0ludGVnZXIoYSkpcmV0dXJuIGF9cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGh9fSx7a2V5OiJjb3VudEZpcnN0Um93S2V5cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQlcodGhpcy5kYXRhKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhPW51''@;'; put 'put ''bGwsdGhpcy5ob3Q9bnVsbH19XSksbH0oKTtjb25zdCBDdHQ9d3R0O1QoMjAyNzMpLFQoNTQ3NDApO3ZhciBaZmU9e19sb2NhbEhvb2tzOk9iamVjdC5jcmVhdGUobnVsbCksYWRkTG9jYWxIb29rOmZ1bmN0aW9uKGMsYSl7cmV0dXJuIHRoaXMuX2xvY2FsSG9va3NbY118fCh0aGlzLl9sb2Nh''@;'; put 'put ''bEhvb2tzW2NdPVtdKSx0aGlzLl9sb2NhbEhvb2tzW2NdLnB1c2goYSksdGhpc30scnVuTG9jYWxIb29rczpmdW5jdGlvbihjLGEsZixkLGgsbSxfKXtpZih0aGlzLl9sb2NhbEhvb2tzW2NdKWZvcih2YXIgTz10aGlzLl9sb2NhbEhvb2tzW2NdLmxlbmd0aCxYPTA7WDxPO1grKylKSSh0aGlz''@;'; put 'put ''Ll9sb2NhbEhvb2tzW2NdW1hdLHRoaXMsYSxmLGQsaCxtLF8pfSxjbGVhckxvY2FsSG9va3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYWxIb29rcz17fSx0aGlzfX07SGgoWmZlLCJNSVhJTl9OQU1FIiwibG9jYWxIb29rcyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25z''@;'; put 'put ''dCBXMD1aZmU7ZnVuY3Rpb24gUk0obCl7cmV0dXJuKFJNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gWWZlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5j''@;'; put 'put ''b25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxFdHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBFdHQobCl7dmFyIGM9ZnVuY3Rpb24geHR0KGwsYyl7aWYoIm9iamVjdCIhPT1STShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFy''@;'; put 'put ''IGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1STShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIp''@;'; put 'put ''fXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Uk0oYyk/YzpTdHJpbmcoYyl9dmFyIHg1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBd''@;'; put 'put ''P2FyZ3VtZW50c1swXTpudWxsOyhmdW5jdGlvbiBNdHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5pbmRleGVkVmFsdWVzPVtdLHRoaXMuaW5pdFZhbHVlT3JG''@;'; put 'put ''bj1jfXJldHVybiBmdW5jdGlvbiBrdHQobCxjLGEpe2MmJllmZShsLnByb3RvdHlwZSxjKSxhJiZZZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmluZGV4ZWRWYWx1ZXN9fSx7a2V5OiJnZXRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuaW5kZXhlZFZhbHVlcztpZihhPGYubGVuZ3RoKXJldHVybiBmW2FdfX0se2tleToic2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmluZGV4ZWRWYWx1ZXM9''@;'; put 'put ''YS5zbGljZSgpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9fSx7a2V5OiJzZXRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIGE8dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aCYmKHRoaXMuaW5kZXhlZFZhbHVlc1thXT1mLHRoaXMucnVuTG9jYWxIb29rcygi''@;'; put 'put ''Y2hhbmdlIiksITApfX0se2tleToiY2xlYXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0VmFsdWVzKCl9fSx7a2V5OiJnZXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVzKCkubGVuZ3RofX0se2tleToic2V0RGVmYXVsdFZhbHVlcyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGg7dGhpcy5pbmRleGVkVmFsdWVzLmxlbmd0aD0wLFBsKHRoaXMuaW5pdFZhbHVlT3JGbik/X28oZi0x''@;'; put 'put ''LGZ1bmN0aW9uKGQpe3JldHVybiBhLmluZGV4ZWRWYWx1ZXMucHVzaChhLmluaXRWYWx1ZU9yRm4oZCkpfSk6X28oZi0xLGZ1bmN0aW9uKCl7cmV0dXJuIGEuaW5kZXhlZFZhbHVlcy5wdXNoKGEuaW5pdFZhbHVlT3JGbil9KSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpfX0se2tleToi''@;'; put 'put ''aW5pdCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RGVmYXVsdFZhbHVlcyhhKSx0aGlzLnJ1bkxvY2FsSG9va3MoImluaXQiKSx0aGlzfX0se2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9fSx7a2V5OiJyZW1vdmUi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmluZGV4ZWRWYWx1ZXM9bnVsbCx0aGlzLmluaXRWYWx1ZU9yRm49bnVsbH19XSksbH0oKTtmdW5j''@;'; put 'put ''dGlvbiBqVyhsKXtyZXR1cm4gZnVuY3Rpb24gRHR0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIHpXKGwpfShsKXx8ZnVuY3Rpb24gT3R0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4g''@;'; put 'put ''QXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIFR0dChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gelcobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYo''@;'; put 'put ''YT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIHpXKGwsYyl9fShsKXx8ZnVuY3Rpb24g''@;'; put 'put ''QXR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9''@;'; put 'put ''ZnVuY3Rpb24gelcobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBVVyhsLGMsYSl7cmV0dXJuW10uY29uY2F0KGpXKGwuc2xpY2UoMCxjKSksalcoYSks''@;'; put 'put ''alcobC5zbGljZShjKSkpfWZ1bmN0aW9uIExNKGwsYyl7cmV0dXJuIEQxKGwsZnVuY3Rpb24oYSl7cmV0dXJuITE9PT1jLmluY2x1ZGVzKGEpfSl9ZnVuY3Rpb24gWlcobCxjKXtyZXR1cm4gaGEobCxmdW5jdGlvbihhKXtyZXR1cm4gYS1jLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZjxh''@;'; put 'put ''fSkubGVuZ3RofSl9ZnVuY3Rpb24gWVcobCxjKXt2YXIgYT1jWzBdLGY9Yy5sZW5ndGg7cmV0dXJuIGhhKGwsZnVuY3Rpb24oZCl7cmV0dXJuIGQ+PWE/ZCtmOmR9KX1mdW5jdGlvbiBkOShsKXtyZXR1cm4oZDk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5j''@;'; put 'put ''dGlvbiBXZmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEx0dChmLmtleSks''@;'; put 'put ''Zil9fWZ1bmN0aW9uIEx0dChsKXt2YXIgYz1mdW5jdGlvbiBQdHQobCxjKXtpZigib2JqZWN0IiE9PWQ5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0''@;'; put 'put ''IiE9PWQ5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1kOShjKT9jOlN0''@;'; put 'put ''cmluZyhjKX1mdW5jdGlvbiBQTSgpe3JldHVybiBQTT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gRnR0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs''@;'; put 'put ''KGwsYykmJm51bGwhPT0obD1BNShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LFBNLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKX1mdW5jdGlvbiBXVyhsLGMpe3JldHVybihXVz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEE1KGwpe3JldHVybihBNT1PYmplY3Quc2V0''@;'; put 'put ''UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfVRsKHg1LFcwKTt2YXIgR2ZlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBIdHQobCxjKXtpZigiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJs''@;'; put 'put ''ZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmV1cobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBOdHQobCl7dmFyIGM9ZnVuY3Rpb24ganR0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9''@;'; put 'put ''KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9QTUobCk7aWYoYyl7dmFyIGg9QTUodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIFZ0dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PWQ5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIp''@;'; put 'put ''O3JldHVybiBmdW5jdGlvbiBCdHQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gSXR0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5jYWxsKHRoaXMsZnVuY3Rpb24oZil7cmV0dXJuIGZ9KX1yZXR1cm4gZnVuY3Rpb24gUnR0''@;'; put 'put ''KGwsYyxhKXtjJiZXZmUobC5wcm90b3R5cGUsYyksYSYmV2ZlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT1ZVyh0aGlzLmluZGV4ZWRWYWx1ZXMsaCk7dGhp''@;'; put 'put ''cy5pbmRleGVkVmFsdWVzPVVXKG0sZCxoKSxQTShBNShhLnByb3RvdHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLGQsaCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPUxNKHRoaXMuaW5kZXhlZFZhbHVlcyxkKTt0aGlzLmluZGV4ZWRWYWx1ZXM9WlcoaCxk''@;'; put 'put ''KSxQTShBNShhLnByb3RvdHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlzLGQpfX1dKSxhfSh4NSk7ZnVuY3Rpb24gR1cobCl7cmV0dXJuIGZ1bmN0aW9uIFl0dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiAkVyhsKX0obCl8fGZ1bmN0aW9uIFp0dChsKXtpZih0eXBlb2YgU3lt''@;'; put 'put ''Ym9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBVdHQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuICRXKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8''@;'; put 'put ''MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiAkVyhsLGMpfX0obCl8fGZ1bmN0aW9uIHp0dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUs''@;'; put 'put ''IG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uICRXKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0''@;'; put 'put ''dXJuIGZ9ZnVuY3Rpb24gS1cobCxjLGEsZil7dmFyIGQ9YS5sZW5ndGg/YVswXTp2b2lkIDA7cmV0dXJuW10uY29uY2F0KEdXKGwuc2xpY2UoMCxkKSksR1coYS5tYXAoZnVuY3Rpb24oaCxtKXtyZXR1cm4gUGwoZik/ZihoLG0pOmZ9KSksR1codm9pZCAwPT09ZD9bXTpsLnNsaWNlKGQpKSl9''@;'; put 'put ''ZnVuY3Rpb24gcVcobCxjKXtyZXR1cm4gRDEobCxmdW5jdGlvbihhLGYpe3JldHVybiExPT09Yy5pbmNsdWRlcyhmKX0pfWZ1bmN0aW9uIGg5KGwpe3JldHVybihoOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihj''@;'; put 'put ''KXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uICRmZShsLGMpe2Zvcih2YXIgYT0w''@;'; put 'put ''O2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsJHR0KGYua2V5KSxmKX19ZnVuY3Rpb24gJHR0KGwpe3ZhciBj''@;'; put 'put ''PWZ1bmN0aW9uIEt0dChsLGMpe2lmKCJvYmplY3QiIT09aDkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09aDkoZikpcmV0dXJuIGY7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWg5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIEZNKCl7cmV0''@;'; put 'put ''dXJuIEZNPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBxdHQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPVQ1KGwpKTsp''@;'; put 'put ''O3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sRk0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFhXKGwsYyl7''@;'; put 'put ''cmV0dXJuKFhXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gVDUobCl7cmV0dXJuKFQ1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJv''@;'; put 'put ''dG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIEY0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBYdHQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmWFcobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBKdHQobCl7dmFyIGM9ZnVuY3Rpb24gdG50KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0p''@;'; put 'put ''cmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBkLGY9VDUobCk7aWYoYyl7dmFyIGg9VDUodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIFF0dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PWg5''@;'; put 'put ''KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBlbnQobCl7aWYodm9pZCAwPT09''@;'; put 'put ''bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZnVuY3Rpb24gV3R0KGwsYyl7aWYoIShsIGluc3Rh''@;'; put 'put ''bmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIEd0dChsLGMsYSl7YyYmJGZlKGwucHJvdG90eXBlLGMpLGEmJiRmZShsLGEpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpbnNlcnQiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dGhpcy5pbmRleGVkVmFsdWVzPUtXKHRoaXMuaW5kZXhlZFZhbHVlcywwLGgsdGhpcy5pbml0VmFsdWVPckZuKSxGTShUNShhLnByb3RvdHlw''@;'; put 'put ''ZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLGQsaCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMuaW5kZXhlZFZhbHVlcz1xVyh0aGlzLmluZGV4ZWRWYWx1ZXMsZCksRk0oVDUoYS5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyxkKX19XSksYX0o''@;'; put 'put ''eDUpO2Z1bmN0aW9uIHA5KGwpe3JldHVybihwOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEtmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmln''@;'; put 'put ''dXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsaW50KGYua2V5KSxmKX19ZnVuY3Rpb24gaW50KGwpe3ZhciBjPWZ1bmN0aW9uIG9udChsLGMpe2lmKCJvYmplY3QiIT09cDkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxb''@;'; put 'put ''U3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cDkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1''@;'; put 'put ''cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXA5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIEpXKGwsYyl7cmV0dXJuKEpXPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0''@;'; put 'put ''aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gQlIobCl7cmV0dXJuKEJSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlw''@;'; put 'put ''ZU9mKGEpfSkobCl9dmFyIGpSPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBhbnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3Rv''@;'; put 'put ''dHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmSlcobCxjKX0oYSxsKTt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBsbnQobCl7dmFyIGM9ZnVuY3Rpb24gY250KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5w''@;'; put 'put ''cm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9QlIobCk7aWYoYyl7dmFyIGg9QlIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHNudChsLGMpe2lmKGMmJigib2JqZWN0Ij09PXA5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiB1bnQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigp''@;'; put 'put ''IGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiBmdW5jdGlvbiBubnQobCxjKXtpZighKGwgaW5zdGFuY2Vv''@;'; put 'put ''ZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmNhbGwodGhpcyxmKX1yZXR1cm4gZnVuY3Rpb24gcm50KGwsYyxhKXtjJiZLZmUobC5wcm90b3R5cGUsYyksYSYmS2ZlKGwsYSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImdldEhpZGRlbkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFBzKHRoaXMuZ2V0VmFsdWVzKCksZnVuY3Rpb24oZCxoLG0pe3JldHVybiBoJiZkLnB1c2gobSksZH0sW10pfX1dKSxhfShGNCk7ZnVuY3Rp''@;'; put 'put ''b24gbTkobCl7cmV0dXJuKG05PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3Ry''@;'; put 'put ''dWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gUVcobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4g''@;'; put 'put ''Zn1mdW5jdGlvbiBxZmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEpmZShm''@;'; put 'put ''LmtleSksZil9fWZ1bmN0aW9uIHAzKCl7cmV0dXJuIHAzPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiB5bnQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh''@;'; put 'put ''bGwobCxjKSYmbnVsbCE9PShsPVZkKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0scDMuYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpfWZ1bmN0aW9uIGVHKGwsYyl7cmV0dXJuKGVHPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gWGZlKGwpe2lmKHZvaWQgMD09PWwpdGhy''@;'; put 'put ''b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBWZChsKXtyZXR1cm4oVmQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX1mdW5jdGlvbiBKZmUobCl7dmFyIGM9ZnVuY3Rpb24gTW50KGwsYyl7aWYoIm9iamVjdCIhPT1tOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9Qcmlt''@;'; put 'put ''aXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1tOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09''@;'; put 'put ''PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09bTkoYyk/YzpTdHJpbmcoYyl9dmFyIHpSPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBibnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3Vw''@;'; put 'put ''ZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZUcobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBfbnQobCl7dmFyIGM9ZnVuY3Rpb24gQ250KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7''@;'; put 'put ''aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBkLGY9VmQobCk7aWYoYyl7dmFyIGg9VmQodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHdudChsLGMpe2lmKGMmJigib2JqZWN0Ij09PW05KGMpfHwiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBYZmUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFy''@;'; put 'put ''IGY7IWZ1bmN0aW9uIGdudChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhb''@;'; put 'put ''bV09YXJndW1lbnRzW21dO3JldHVybiBmdW5jdGlvbiBTbnQobCxjLGEpeyhjPUpmZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWF9KFhmZShmPWMuY2FsbC5hcHBseShj''@;'; put 'put ''LFt0aGlzXS5jb25jYXQoaCkpKSwib3JkZXJPZkluZGV4ZXMiLFtdKSxmfXJldHVybiBmdW5jdGlvbiB2bnQobCxjLGEpe2MmJnFmZShsLnByb3RvdHlwZSxjKSxhJiZxZmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToi''@;'; put 'put ''Z2V0VmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJuIHRoaXMub3JkZXJPZkluZGV4ZXMubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBkLmluZGV4ZWRWYWx1ZXNbaF19KX19LHtrZXk6InNldFZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5vcmRlck9mSW5kZXhl''@;'; put 'put ''cz1mdW5jdGlvbiBmbnQobCl7cmV0dXJuIGZ1bmN0aW9uIG1udChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBRVyhsKX0obCl8fGZ1bmN0aW9uIHBudChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0p''@;'; put 'put ''cmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBobnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIFFXKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1''@;'; put 'put ''Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBRVyhsLGMpfX0obCl8fGZ1''@;'; put 'put ''bmN0aW9uIGRudCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9k''@;'; put 'put ''LiIpfSgpfShBcnJheShkLmxlbmd0aCkua2V5cygpKSxwMyhWZChhLnByb3RvdHlwZSksInNldFZhbHVlcyIsdGhpcykuY2FsbCh0aGlzLGQpfX0se2tleToic2V0VmFsdWVBdEluZGV4Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aDtyZXR1cm4gZDx0aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoJiYodGhpcy5pbmRleGVkVmFsdWVzW2RdPWgsITE9PT10aGlzLm9yZGVyT2ZJbmRleGVzLmluY2x1ZGVzKGQpJiZ0aGlzLm9yZGVyT2ZJbmRl''@;'; put 'put ''eGVzLnNwbGljZShtLDAsZCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKSwhMCl9fSx7a2V5OiJjbGVhclZhbHVlIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLm9yZGVyT2ZJbmRleGVzPUxNKHRoaXMub3JkZXJPZkluZGV4ZXMsW2RdKSxQbCh0aGlzLmluaXRWYWx1ZU9yRm4pP3AzKFZk''@;'; put 'put ''KGEucHJvdG90eXBlKSwic2V0VmFsdWVBdEluZGV4Iix0aGlzKS5jYWxsKHRoaXMsZCx0aGlzLmluaXRWYWx1ZU9yRm4oZCkpOnAzKFZkKGEucHJvdG90eXBlKSwic2V0VmFsdWVBdEluZGV4Iix0aGlzKS5jYWxsKHRoaXMsZCx0aGlzLmluaXRWYWx1ZU9yRm4pfX0se2tleToiZ2V0TGVuZ3Ro''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aH19LHtrZXk6InNldERlZmF1bHRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuaW5k''@;'; put 'put ''ZXhlZFZhbHVlcy5sZW5ndGg7dGhpcy5vcmRlck9mSW5kZXhlcy5sZW5ndGg9MCxwMyhWZChhLnByb3RvdHlwZSksInNldERlZmF1bHRWYWx1ZXMiLHRoaXMpLmNhbGwodGhpcyxkKX19LHtrZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt0aGlzLmluZGV4ZWRWYWx1ZXM9S1codGhp''@;'; put 'put ''cy5pbmRleGVkVmFsdWVzLDAsaCx0aGlzLmluaXRWYWx1ZU9yRm4pLHRoaXMub3JkZXJPZkluZGV4ZXM9WVcodGhpcy5vcmRlck9mSW5kZXhlcyxoKSxwMyhWZChhLnByb3RvdHlwZSksImluc2VydCIsdGhpcykuY2FsbCh0aGlzLGQsaCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGQpe3RoaXMuaW5kZXhlZFZhbHVlcz1xVyh0aGlzLmluZGV4ZWRWYWx1ZXMsZCksdGhpcy5vcmRlck9mSW5kZXhlcz1MTSh0aGlzLm9yZGVyT2ZJbmRleGVzLGQpLHRoaXMub3JkZXJPZkluZGV4ZXM9WlcodGhpcy5vcmRlck9mSW5kZXhlcyxkKSxwMyhWZChhLnByb3RvdHlwZSksInJlbW92''@;'; put 'put ''ZSIsdGhpcykuY2FsbCh0aGlzLGQpfX0se2tleToiZ2V0RW50cmllcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3JldHVybiB0aGlzLm9yZGVyT2ZJbmRleGVzLm1hcChmdW5jdGlvbihoKXtyZXR1cm5baCxkLmdldFZhbHVlQXRJbmRleChoKV19KX19XSksYX0oeDUpO2Z1bmN0aW9u''@;'; put 'put ''IGc5KGwpe3JldHVybihnOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVj''@;'; put 'put ''dG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFFmZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2''@;'; put 'put ''YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwseG50KGYua2V5KSxmKX19ZnVuY3Rpb24geG50KGwpe3ZhciBjPWZ1bmN0aW9uIEFudChsLGMpe2lmKCJvYmplY3QiIT09ZzkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJp''@;'; put 'put ''bWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09ZzkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9''@;'; put 'put ''PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWc5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHRHKGwsYyl7cmV0dXJuKHRHPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0''@;'; put 'put ''dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gVVIobCl7cmV0dXJuKFVSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9''@;'; put 'put ''dmFyIEhNPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBUbnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3Qu''@;'; put 'put ''Y3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmdEcobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBPbnQobCl7''@;'; put 'put ''dmFyIGM9ZnVuY3Rpb24gUm50KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFs''@;'; put 'put ''dWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9VVIobCk7aWYoYyl7dmFyIGg9VVIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFy''@;'; put 'put ''Z3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIERudChsLGMpe2lmKGMmJigib2JqZWN0Ij09PWc5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVk''@;'; put 'put ''IGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBJbnQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu''@;'; put 'put ''IGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiBmdW5jdGlvbiBrbnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmNhbGwodGhpcyxmKX1yZXR1cm4gZnVuY3Rpb24gRW50KGwsYyxhKXtjJiZRZmUobC5wcm90b3R5cGUsYyksYSYmUWZlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3Rv''@;'; put 'put ''dHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImdldFRyaW1tZWRJbmRleGVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBQcyh0aGlzLmdldFZhbHVlcygpLGZ1bmN0aW9uKGQsaCxtKXtyZXR1cm4gaCYmZC5wdXNoKG0pLGR9LFtdKX19XSksYX0oRjQpLGVkZT1uZXcgTWFwKFtbImhp''@;'; put 'put ''ZGluZyIsalJdLFsiaW5kZXgiLHg1XSxbImxpbmtlZFBoeXNpY2FsSW5kZXhUb1ZhbHVlIix6Ul0sWyJwaHlzaWNhbEluZGV4VG9WYWx1ZSIsRjRdLFsidHJpbW1pbmciLEhNXV0pO2Z1bmN0aW9uIE5NKGwpe3JldHVybihOTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30p''@;'; put 'put ''KGwpfWZ1bmN0aW9uIHRkZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSG50''@;'; put 'put ''KGYua2V5KSxmKX19ZnVuY3Rpb24gSG50KGwpe3ZhciBjPWZ1bmN0aW9uIE5udChsLGMpe2lmKCJvYmplY3QiIT09Tk0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lm''@;'; put 'put ''KCJvYmplY3QiIT09Tk0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU5N''@;'; put 'put ''KGMpP2M6U3RyaW5nKGMpfXZhciBuRz0wLHJHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpeyhmdW5jdGlvbiBQbnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5j''@;'; put 'put ''b2xsZWN0aW9uPW5ldyBNYXB9cmV0dXJuIGZ1bmN0aW9uIEZudChsLGMsYSl7YyYmdGRlKGwucHJvdG90eXBlLGMpLGEmJnRkZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZWdpc3RlciIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSxmKXt2YXIgZD10aGlzOyExPT09dGhpcy5jb2xsZWN0aW9uLmhhcyhhKSYmKHRoaXMuY29sbGVjdGlvbi5zZXQoYSxmKSxmLmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBkLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsZil9KSxuRys9MSl9fSx7a2V5OiJ1bnJlZ2lz''@;'; put 'put ''dGVyIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLmNvbGxlY3Rpb24uZ2V0KGEpO2lvKGYpJiYoZi5kZXN0cm95KCksdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZShhKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsZiksbkctPTEpfX0se2tleToidW5yZWdpc3RlckFsbCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKGYsZCl7cmV0dXJuIGEudW5yZWdpc3RlcihkKX0pLHRoaXMuY29sbGVjdGlvbi5jbGVhcigpfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gTGwoYSk/QXJyYXkuZnJvbSh0''@;'; put 'put ''aGlzLmNvbGxlY3Rpb24udmFsdWVzKCkpOnRoaXMuY29sbGVjdGlvbi5nZXQoYSl9fSx7a2V5OiJnZXRMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sbGVjdGlvbi5zaXplfX0se2tleToicmVtb3ZlRnJvbUV2ZXJ5Iix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmNvbGxl''@;'; put 'put ''Y3Rpb24uZm9yRWFjaChmdW5jdGlvbihmKXtmLnJlbW92ZShhKX0pfX0se2tleToiaW5zZXJ0VG9FdmVyeSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbihkKXtkLmluc2VydChhLGYpfSl9fSx7a2V5OiJpbml0RXZlcnkiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGEpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuaW5pdChhKX0pfX1dKSxsfSgpO2Z1bmN0aW9uIHY5KGwpe3JldHVybih2OT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1''@;'; put 'put ''cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIG5kZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5s''@;'; put 'put ''ZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsem50KGYua2V5KSxmKX19ZnVuY3Rpb24gem50KGwpe3ZhciBjPWZ1bmN0''@;'; put 'put ''aW9uIFVudChsLGMpe2lmKCJvYmplY3QiIT09djkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09djkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXY5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGlHKGwsYyl7cmV0dXJu''@;'; put 'put ''KGlHPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gWlIobCl7cmV0dXJuKFpSPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBl''@;'; put 'put ''T2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9VGwockcsVzApO3ZhciByZGU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIFpudChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZpRyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIFludChsKXt2YXIgYz1mdW5jdGlvbiAkbnQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Qu''@;'; put 'put ''c2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKCl7dmFyIGQsZj1aUihsKTtpZihjKXt2YXIgaD1aUih0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gV250KGwsYyl7aWYoYyYmKCJvYmplY3Qi''@;'; put 'put ''PT09djkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEdudChsKXtpZih2b2lk''@;'; put 'put ''IDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBCbnQobCxj''@;'; put 'put ''KXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoaD1jLmNhbGwodGhpcykpLm1lcmdlZFZhbHVlc0NhY2hlPVtdLGguYWdncmVnYXRpb25GdW5jdGlvbj1mLGguZmFsbGJhY2tWYWx1''@;'; put 'put ''ZT1kLGh9cmV0dXJuIGZ1bmN0aW9uIGpudChsLGMsYSl7YyYmbmRlKGwucHJvdG90eXBlLGMpLGEmJm5kZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJnZXRNZXJnZWRWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7aWYo''@;'; put 'put ''ITA9PT0oIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSkpcmV0dXJuIHRoaXMubWVyZ2VkVmFsdWVzQ2FjaGU7aWYoMD09PXRoaXMuZ2V0TGVuZ3RoKCkpcmV0dXJuW107Zm9yKHZhciBoPWhhKHRoaXMuZ2V0KCksZnVuY3Rpb24ocGUp''@;'; put 'put ''e3JldHVybiBwZS5nZXRWYWx1ZXMoKX0pLG09W10sXz1pbyhoWzBdKSYmaFswXS5sZW5ndGh8fDAsTz0wO088XztPKz0xKXtmb3IodmFyIFg9W10sYWU9MDthZTx0aGlzLmdldExlbmd0aCgpO2FlKz0xKVgucHVzaChoW2FlXVtPXSk7bS5wdXNoKFgpfXJldHVybiBoYShtLHRoaXMuYWdncmVn''@;'; put 'put ''YXRpb25GdW5jdGlvbil9fSx7a2V5OiJnZXRNZXJnZWRWYWx1ZUF0SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5nZXRNZXJnZWRWYWx1ZXMoaClbZF07cmV0dXJuIGlvKG0pP206dGhpcy5mYWxsYmFja1ZhbHVlfX0se2tleToidXBkYXRlQ2FjaGUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dGhpcy5tZXJnZWRWYWx1ZXNDYWNoZT10aGlzLmdldE1lcmdlZFZhbHVlcyghMSl9fV0pLGF9KHJHKTtmdW5jdGlvbiBWTShsKXtyZXR1cm4oVk09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBpZGUobCxjKXtmb3IodmFyIGE9MDthPGMu''@;'; put 'put ''bGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFhudChmLmtleSksZil9fWZ1bmN0aW9uIFhudChsKXt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBKbnQobCxjKXtpZigib2JqZWN0IiE9PVZNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVZNKGYpKXJldHVybiBmO3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1WTShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBvZGUobCxjLGEpe2lm''@;'; put 'put ''KCFjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIithKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gYy5nZXQobCl9dmFyIG9HPW5ldyBXZWFrTWFwLGFkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXsoZnVuY3Rpb24gS250KGwsYyl7''@;'; put 'put ''aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLGZ1bmN0aW9uIFFudChsLGMsYSl7KGZ1bmN0aW9uIGVydChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9KHRoaXMsb0cse3dyaXRhYmxlOiEwLHZhbHVlOltdfSl9cmV0dXJuIGZ1bmN0aW9uIHFudChsLGMsYSl7YyYmaWRlKGwucHJvdG90eXBlLGMpLGEmJmlk''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzdWJzY3JpYmUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZExvY2FsSG9vaygiY2hhbmdlIixhKSx0aGlzLl93cml0ZShmdW5jdGlvbiBycnQobCxjKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gaXJ0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxvZGUobCxjLCJnZXQiKSl9KHRoaXMsb0cpKSx0aGlzfX0se2tleToidW5zdWJzY3JpYmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygidW5zdWJz''@;'; put 'put ''Y3JpYmUiKSx0aGlzLmNsZWFyTG9jYWxIb29rcygpLHRoaXN9fSx7a2V5OiJfd3JpdGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aD4wJiZ0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsYSksdGhpc319LHtrZXk6Il93cml0ZUluaXRpYWxDaGFuZ2VzIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhKXshZnVuY3Rpb24gdHJ0KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gbnJ0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7''@;'; put 'put ''Yy52YWx1ZT1hfX0obCxvZGUobCxjLCJzZXQiKSxhKSxhfSh0aGlzLG9HLGEpfX1dKSxsfSgpO2Z1bmN0aW9uIGxkZShsLGMpe2Zvcih2YXIgYT1bXSxmPTAsZD0wO2Y8bC5sZW5ndGgmJmQ8Yy5sZW5ndGg7ZisrLGQrKylsW2ZdIT09Y1tkXSYmYS5wdXNoKHtvcDoicmVwbGFjZSIsaW5kZXg6''@;'; put 'put ''ZCxvbGRWYWx1ZTpsW2ZdLG5ld1ZhbHVlOmNbZF19KTtmb3IoO2Y8Yy5sZW5ndGg7ZisrKWEucHVzaCh7b3A6Imluc2VydCIsaW5kZXg6ZixvbGRWYWx1ZTp2b2lkIDAsbmV3VmFsdWU6Y1tmXX0pO2Zvcig7ZDxsLmxlbmd0aDtkKyspYS5wdXNoKHtvcDoicmVtb3ZlIixpbmRleDpkLG9sZFZh''@;'; put 'put ''bHVlOmxbZF0sbmV3VmFsdWU6dm9pZCAwfSk7cmV0dXJuIGF9ZnVuY3Rpb24gQk0obCl7cmV0dXJuKEJNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0''@;'; put 'put ''dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gc2RlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVt''@;'; put 'put ''ZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxscnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBscnQobCl7dmFyIGM9ZnVuY3Rpb24gc3J0KGwsYyl7aWYoIm9iamVjdCIhPT1C''@;'; put 'put ''TShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1CTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3Qg''@;'; put 'put ''cmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Qk0oYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gak0obCxjLGEpeyhmdW5jdGlvbiB1cnQobCxjKXtpZihjLmhhcyhsKSl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIE5mKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGNydChsLGMpe3JldHVybiBjLmdldD9jLmdldC5j''@;'; put 'put ''YWxsKGwpOmMudmFsdWV9KGwsdWRlKGwsYywiZ2V0IikpfWZ1bmN0aW9uIFlSKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gZnJ0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJl''@;'; put 'put ''YWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCx1ZGUobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIHVkZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3Jl''@;'; put 'put ''dHVybiBjLmdldChsKX1UbChhZGUsVzApO3ZhciBXUj1uZXcgV2Vha01hcCx6TT1uZXcgV2Vha01hcCxHUj1uZXcgV2Vha01hcCwkUj1uZXcgV2Vha01hcCxLUj1uZXcgV2Vha01hcCxkcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7dmFyIGE9KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSkuaW5pdGlhbEluZGV4VmFsdWU7KGZ1bmN0aW9uIG9ydChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxqTSh0aGlz''@;'; put 'put ''LFdSLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgU2V0fSksak0odGhpcyx6TSx7d3JpdGFibGU6ITAsdmFsdWU6W119KSxqTSh0aGlzLEdSLHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLGpNKHRoaXMsJFIse3dyaXRhYmxlOiEwLHZhbHVlOiExfSksak0odGhpcyxLUix7d3JpdGFibGU6ITAsdmFs''@;'; put 'put ''dWU6ITF9KSxZUih0aGlzLEtSLGE/PyExKX1yZXR1cm4gZnVuY3Rpb24gYXJ0KGwsYyxhKXtjJiZzZGUobC5wcm90b3R5cGUsYyksYSYmc2RlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImNyZWF0ZU9ic2VydmVyIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj1uZXcgYWRlO3JldHVybiBOZih0aGlzLFdSKS5hZGQoZiksZi5hZGRMb2NhbEhvb2soInVuc3Vic2NyaWJlIixmdW5jdGlvbigpe05mKGEsV1IpLmRlbGV0ZShmKX0pLGYuX3dyaXRlSW5pdGlhbENoYW5nZXMobGRlKE5mKHRoaXMsek0pLE5m''@;'; put 'put ''KHRoaXMsR1IpKSksZn19LHtrZXk6ImVtaXQiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPU5mKHRoaXMsR1IpOyghTmYodGhpcywkUil8fE5mKHRoaXMsek0pLmxlbmd0aCE9PWEubGVuZ3RoKSYmKDA9PT1hLmxlbmd0aD9hPW5ldyBBcnJheShmLmxlbmd0aCkuZmlsbChOZih0aGlzLEtSKSk6''@;'; put 'put ''WVIodGhpcyx6TSxuZXcgQXJyYXkoYS5sZW5ndGgpLmZpbGwoTmYodGhpcyxLUikpKSxOZih0aGlzLCRSKXx8KFlSKHRoaXMsJFIsITApLGY9TmYodGhpcyx6TSkpKTt2YXIgZD1sZGUoZixhKTtOZih0aGlzLFdSKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBoLl93cml0ZShkKX0pLFlS''@;'; put 'put ''KHRoaXMsR1IsYSl9fV0pLGx9KCk7ZnVuY3Rpb24gVU0obCl7cmV0dXJuKFVNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gYUcobCl7cmV0dXJuIGZ1bmN0aW9uIGdydChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsRyhsKX0obCl8fGZ1''@;'; put 'put ''bmN0aW9uIG1ydChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBwcnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGxH''@;'; put 'put ''KGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1l''@;'; put 'put ''bnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBsRyhsLGMpfX0obCl8fGZ1bmN0aW9uIGhydCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNl''@;'; put 'put ''LlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGxHKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJy''@;'; put 'put ''YXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gY2RlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEw''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxicnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBicnQobCl7dmFyIGM9ZnVuY3Rpb24gX3J0KGwsYyl7aWYoIm9iamVjdCIhPT1VTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3Zh''@;'; put 'put ''ciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1VTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGws''@;'; put 'put ''InN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09VU0oYyk/YzpTdHJpbmcoYyl9dmFyIGZkZSxzRz1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXt2YXIgYz10aGlzOyhmdW5jdGlvbiB2cnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh''@;'; put 'put ''IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5pbmRleGVzU2VxdWVuY2U9bmV3IEdmZSx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb249bmV3IHJkZShmdW5jdGlvbihhKXtyZXR1cm4gYS5zb21lKGZ1bmN0aW9uKGYpe3JldHVybiEwPT09Zn0pfSwhMSksdGhpcy5oaWRp''@;'; put 'put ''bmdNYXBzQ29sbGVjdGlvbj1uZXcgcmRlKGZ1bmN0aW9uKGEpe3JldHVybiBhLnNvbWUoZnVuY3Rpb24oZil7cmV0dXJuITA9PT1mfSl9LCExKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbj1uZXcgckcsdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZT1uZXcgZHJ0KHtpbml0aWFsSW5k''@;'; put 'put ''ZXhWYWx1ZTohMX0pLHRoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZT1bXSx0aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZT1bXSx0aGlzLmlzQmF0Y2hlZD0hMSx0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITEsdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMCx0aGlzLnRyaW1t''@;'; put 'put ''ZWRJbmRleGVzQ2hhbmdlZD0hMSx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSExLHRoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlPVtdLHRoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGU9bmV3IE1hcCx0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRl''@;'; put 'put ''eGVzQ2FjaGU9bmV3IE1hcCx0aGlzLmluZGV4ZXNTZXF1ZW5jZS5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oKXtjLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITAsYy51cGRhdGVDYWNoZSgpLGMucnVuTG9jYWxIb29rcygiaW5kZXhlc1NlcXVlbmNlQ2hhbmdlIixjLmluZGV4ZXND''@;'; put 'put ''aGFuZ2VTb3VyY2UpLGMucnVuTG9jYWxIb29rcygiY2hhbmdlIixjLmluZGV4ZXNTZXF1ZW5jZSxudWxsKX0pLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImNoYW5nZSIsZnVuY3Rpb24oYSl7Yy50cmltbWVkSW5kZXhlc0NoYW5nZWQ9ITAsYy51cGRhdGVDYWNo''@;'; put 'put ''ZSgpLGMucnVuTG9jYWxIb29rcygiY2hhbmdlIixhLGMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbil9KSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihhKXtjLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSEwLGMudXBkYXRlQ2FjaGUoKSxjLnJ1''@;'; put 'put ''bkxvY2FsSG9va3MoImNoYW5nZSIsYSxjLmhpZGluZ01hcHNDb2xsZWN0aW9uKX0pLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmFkZExvY2FsSG9vaygiY2hhbmdlIixmdW5jdGlvbihhKXtjLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsYSxjLnZhcmlvdXNNYXBzQ29sbGVjdGlvbil9KX1y''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24geXJ0KGwsYyxhKXtjJiZjZGUobC5wcm90b3R5cGUsYyksYSYmY2RlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InN1c3BlbmRPcGVyYXRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNC''@;'; put 'put ''YXRjaGVkPSEwfX0se2tleToicmVzdW1lT3BlcmF0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQmF0Y2hlZD0hMSx0aGlzLnVwZGF0ZUNhY2hlKCl9fSx7a2V5OiJjcmVhdGVDaGFuZ2VzT2JzZXJ2ZXIiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCJoaWRpbmciIT09YSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoJ1Vuc3VwcG9ydGVkIGluZGV4IG1hcCB0eXBlICInLmNvbmNhdChhLCciLicpKTtyZXR1cm4gdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZS5jcmVhdGVPYnNlcnZlcigpfX0se2tleToiY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3Jl''@;'; put 'put ''dHVybiB0aGlzLnJlZ2lzdGVyTWFwKGEsZnVuY3Rpb24gTG50KGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2lmKCFlZGUuaGFzKGwpKXRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIG1hcCB0eXBlICgiJy5j''@;'; put 'put ''b25jYXQobCwnIikgZG9lcyBub3QgZXhpc3QuJykpO3JldHVybiBuZXcoZWRlLmdldChsKSkoYyl9KGYsZCkpfX0se2tleToicmVnaXN0ZXJNYXAiLHZhbHVlOmZ1bmN0aW9uKGEsZil7aWYodGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLmdldChhKXx8dGhpcy5oaWRpbmdNYXBzQ29sbGVj''@;'; put 'put ''dGlvbi5nZXQoYSl8fHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmdldChhKSl0aHJvdyBFcnJvcignTWFwIHdpdGggbmFtZSAiJy5jb25jYXQoYSwnIiBoYXMgYmVlbiBhbHJlYWR5IHJlZ2lzdGVyZWQuJykpO2YgaW5zdGFuY2VvZiBITT90aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24u''@;'; put 'put ''cmVnaXN0ZXIoYSxmKTpmIGluc3RhbmNlb2YgalI/dGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5yZWdpc3RlcihhLGYpOnRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLnJlZ2lzdGVyKGEsZik7dmFyIGQ9dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKTtyZXR1cm4gZD4wJiZmLmluaXQoZCks''@;'; put 'put ''Zn19LHtrZXk6InVucmVnaXN0ZXJNYXAiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyKGEpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlcihhKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyKGEp''@;'; put 'put ''fX0se2tleToidW5yZWdpc3RlckFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXJB''@;'; put 'put ''bGwoKX19LHtrZXk6ImdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGVbYV07cmV0dXJuIGlvKGYpP2Y6bnVsbH19LHtrZXk6ImdldFBoeXNpY2FsRnJvbVJlbmRlcmFibGVJbmRleCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oYSl7dmFyIGY9dGhpcy5yZW5kZXJhYmxlUGh5c2ljYWxJbmRleGVzQ2FjaGVbYV07cmV0dXJuIGlvKGYpP2Y6bnVsbH19LHtrZXk6ImdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLmZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhl''@;'; put 'put ''c0NhY2hlLmdldChhKTtyZXR1cm4gaW8oZik/ZjpudWxsfX0se2tleToiZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgodGhpcy5nZXRQaHlzaWNhbEZyb21SZW5kZXJhYmxlSW5kZXgo''@;'; put 'put ''YSkpfX0se2tleToiZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLmdldChhKTtyZXR1cm4gaW8oZik/ZjpudWxsfX0se2tleToiZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07aWYobnVsbD09PXRoaXMuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoYSkpcmV0dXJuIG51bGw7aWYodGhpcy5mcm9tVmlzdWFsVG9SZW5k''@;'; put 'put ''ZXJhYmxlSW5kZXhlc0NhY2hlLmhhcyhhKSlyZXR1cm4gYTt2YXIgXyxtPUFycmF5LmZyb20odGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLmtleXMoKSk7cmV0dXJuLTE9PT0oXz1mPjA/bS5maW5kSW5kZXgoZnVuY3Rpb24oTyl7cmV0dXJuIE8+YX0pOm0ucmV2ZXJz''@;'; put 'put ''ZSgpLmZpbmRJbmRleChmdW5jdGlvbihPKXtyZXR1cm4gTzxhfSkpP2Q/dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYSwtZiwhMSk6bnVsbDptW19dfX0se2tleToiaW5pdFRvTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09''@;'; put 'put ''YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldE51bWJlck9mSW5kZXhlcygpO3RoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZT1hRyhuZXcgQXJyYXkoYSkua2V5cygpKSx0aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZT1hRyhuZXcgQXJyYXkoYSkua2V5cygpKSx0aGlzLnN1c3Bl''@;'; put 'put ''bmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPSJpbml0Iix0aGlzLmluZGV4ZXNTZXF1ZW5jZS5pbml0KGEpLHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT12b2lkIDAsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLmluaXRFdmVyeShhKSx0aGlzLnJlc3VtZU9wZXJh''@;'; put 'put ''dGlvbnMoKSx0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5pbml0RXZlcnkoYSksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24uaW5pdEV2ZXJ5KGEpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpLHRoaXMucnVuTG9jYWxIb29rcygiaW5pdCIpfX0s''@;'; put 'put ''e2tleToiZml0VG9MZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7aWYoYTxmKXt2YXIgZD1hRyhBcnJheSh0aGlzLmdldE51bWJlck9mSW5kZXhlcygpLWEpLmtleXMoKSkubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBoK2F9KTt0aGlzLnJl''@;'; put 'put ''bW92ZUluZGV4ZXMoZCl9ZWxzZSB0aGlzLmluc2VydEluZGV4ZXMoZixhLWYpfX0se2tleToiZ2V0SW5kZXhlc1NlcXVlbmNlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4ZXNTZXF1ZW5jZS5nZXRWYWx1ZXMoKX19LHtrZXk6InNldEluZGV4ZXNTZXF1ZW5jZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oYSl7dm9pZCAwPT09dGhpcy5pbmRleGVzQ2hhbmdlU291cmNlJiYodGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPSJ1cGRhdGUiKSx0aGlzLmluZGV4ZXNTZXF1ZW5jZS5zZXRWYWx1ZXMoYSksInVwZGF0ZSI9PT10aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2UmJih0aGlzLmluZGV4''@;'; put 'put ''ZXNDaGFuZ2VTb3VyY2U9dm9pZCAwKX19LHtrZXk6ImdldE5vdFRyaW1tZWRJbmRleGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuITA9PT0oIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSk/dGhpcy5ub3RUcmlt''@;'; put 'put ''bWVkSW5kZXhlc0NhY2hlOnRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiExPT09YS5pc1RyaW1tZWQoaCl9KX19LHtrZXk6ImdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE5vdFRyaW1t''@;'; put 'put ''ZWRJbmRleGVzKCkubGVuZ3RofX0se2tleToiZ2V0Tm90SGlkZGVuSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiEwPT09KCEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0pP3RoaXMubm90SGlkZGVuSW5k''@;'; put 'put ''ZXhlc0NhY2hlOnRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiExPT09YS5pc0hpZGRlbihoKX0pfX0se2tleToiZ2V0Tm90SGlkZGVuSW5kZXhlc0xlbmd0aCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXROb3RIaWRkZW5JbmRleGVz''@;'; put 'put ''KCkubGVuZ3RofX0se2tleToiZ2V0UmVuZGVyYWJsZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm4hMD09PSghKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdKT90aGlzLnJlbmRlcmFibGVQaHlzaWNhbElu''@;'; put 'put ''ZGV4ZXNDYWNoZTp0aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzKCkuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiExPT09YS5pc0hpZGRlbihoKX0pfX0se2tleToiZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyYWJsZUlu''@;'; put 'put ''ZGV4ZXMoKS5sZW5ndGh9fSx7a2V5OiJnZXROdW1iZXJPZkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkubGVuZ3RofX0se2tleToibW92ZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dGhpczsibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIGEmJihhPVthXSk7dmFyIGg9aGEoYSxmdW5jdGlvbihwZSl7cmV0dXJuIGQuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgocGUpfSksbT10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCksXz1hLmxlbmd0aCxPPUxNKHRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCksaCksWD1t''@;'; put 'put ''LV87aWYoZitfPG0pe3ZhciBhZT1PLmZpbHRlcihmdW5jdGlvbihwZSl7cmV0dXJuITE9PT1kLmlzVHJpbW1lZChwZSl9KVtmXTtYPU8uaW5kZXhPZihhZSl9dGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPSJtb3ZlIix0aGlzLnNldEluZGV4ZXNTZXF1ZW5jZShVVyhPLFgsaCkpLHRoaXMuaW5k''@;'; put 'put ''ZXhlc0NoYW5nZVNvdXJjZT12b2lkIDB9fSx7a2V5OiJpc1RyaW1tZWQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVBdEluZGV4KGEpfX0se2tleToiaXNIaWRkZW4iLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0''@;'; put 'put ''aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmdldE1lcmdlZFZhbHVlQXRJbmRleChhKX19LHtrZXk6Imluc2VydEluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcygpW2FdLGg9aW8oZCk/ZDp0aGlzLmdldE51bWJlck9mSW5kZXhlcygp''@;'; put 'put ''LG09dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5pbmNsdWRlcyhkKT90aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLmluZGV4T2YoZCk6dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKSxfPWhhKG5ldyBBcnJheShmKS5maWxsKGgpLGZ1bmN0aW9uKE8sWCl7cmV0dXJuIE8rWH0pO3RoaXMuc3Vz''@;'; put 'put ''cGVuZE9wZXJhdGlvbnMoKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9Imluc2VydCIsdGhpcy5pbmRleGVzU2VxdWVuY2UuaW5zZXJ0KG0sXyksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMCx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uaW5zZXJ0VG9FdmVyeShtLF8pLHRo''@;'; put 'put ''aXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uaW5zZXJ0VG9FdmVyeShtLF8pLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmluc2VydFRvRXZlcnkobSxfKSx0aGlzLnJlc3VtZU9wZXJhdGlvbnMoKX19LHtrZXk6InJlbW92ZUluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuc3VzcGVu''@;'; put 'put ''ZE9wZXJhdGlvbnMoKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9InJlbW92ZSIsdGhpcy5pbmRleGVzU2VxdWVuY2UucmVtb3ZlKGEpLHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT12b2lkIDAsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnJlbW92ZUZyb21FdmVyeShhKSx0aGlzLmhp''@;'; put 'put ''ZGluZ01hcHNDb2xsZWN0aW9uLnJlbW92ZUZyb21FdmVyeShhKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoYSksdGhpcy5yZXN1bWVPcGVyYXRpb25zKCl9fSx7a2V5OiJ1cGRhdGVDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXsoITA9PT0oYXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSl8fCExPT09dGhpcy5pc0JhdGNoZWQmJiEwPT09KHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2hhbmdlZHx8dGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWR8fHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQpKSYmKHRoaXMu''@;'; put 'put ''dHJpbW1pbmdNYXBzQ29sbGVjdGlvbi51cGRhdGVDYWNoZSgpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24udXBkYXRlQ2FjaGUoKSx0aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU9dGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcyghMSksdGhpcy5ub3RIaWRkZW5JbmRleGVzQ2FjaGU9dGhp''@;'; put 'put ''cy5nZXROb3RIaWRkZW5JbmRleGVzKCExKSx0aGlzLnJlbmRlcmFibGVQaHlzaWNhbEluZGV4ZXNDYWNoZT10aGlzLmdldFJlbmRlcmFibGVJbmRleGVzKCExKSx0aGlzLmNhY2hlRnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzKCksdGhpcy5jYWNoZUZyb21WaXN1YWxUb1JlbmRlcmFibGVJ''@;'; put 'put ''bmRleGVzKCksdGhpcy5oaWRkZW5JbmRleGVzQ2hhbmdlZCYmdGhpcy5oaWRpbmdDaGFuZ2VzT2JzZXJ2YWJsZS5lbWl0KHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVzKCkpLHRoaXMucnVuTG9jYWxIb29rcygiY2FjaGVVcGRhdGVkIix7aW5kZXhlc1NlcXVlbmNl''@;'; put 'put ''Q2hhbmdlZDp0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQsdHJpbW1lZEluZGV4ZXNDaGFuZ2VkOnRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkLGhpZGRlbkluZGV4ZXNDaGFuZ2VkOnRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWR9KSx0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWQ9ITEs''@;'; put 'put ''dGhpcy50cmltbWVkSW5kZXhlc0NoYW5nZWQ9ITEsdGhpcy5oaWRkZW5JbmRleGVzQ2hhbmdlZD0hMSl9fSx7a2V5OiJjYWNoZUZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCk7dGhpcy5m''@;'; put 'put ''cm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNoZS5jbGVhcigpO2Zvcih2YXIgZj0wO2Y8YTtmKz0xKXt2YXIgZD10aGlzLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KGYpO3RoaXMuZnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzQ2FjaGUuc2V0KGQsZil9fX0se2tleToiY2FjaGVG''@;'; put 'put ''cm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCk7dGhpcy5mcm9tVmlzdWFsVG9SZW5kZXJhYmxlSW5kZXhlc0NhY2hlLmNsZWFyKCk7Zm9yKHZhciBmPTA7ZjxhO2YrPTEpe3ZhciBkPXRo''@;'; put 'put ''aXMuZ2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpLGg9dGhpcy5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChkKTt0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuc2V0KGgsZil9fX1dKSxsfSgpO2Z1bmN0aW9uIGRkZShsKXt2YXIgYT0vXihbYS16QS1a''@;'; put 'put ''XXsyfSktKFthLXpBLVpdezJ9KSQvLmV4ZWMobCk7cmV0dXJuIGE/IiIuY29uY2F0KGFbMV0udG9Mb3dlckNhc2UoKSwiLSIpLmNvbmNhdChhWzJdLnRvVXBwZXJDYXNlKCkpOmx9ZnVuY3Rpb24gaGRlKGwpe2lvKGwpJiZJWShPbChmZGV8fChmZGU9ZnVuY3Rpb24gd3J0KGwsYyl7cmV0dXJu''@;'; put 'put ''IGN8fChjPWwuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWydMYW5ndWFnZSB3aXRoIGNvZGUgIicsJyIgd2FzIG5vdCBmb3VuZC4gWW91IHNob3VsZCByZWdpc3RlciBwYXJ0aWN1bGFy''@;'; put 'put ''IGxhbmd1YWdlIFxuICAgIGJlZm9yZSB1c2luZyBpdC4gUmVhZCBtb3JlIGFib3V0IHRoaXMgaXNzdWUgYXQ6IGh0dHBzOi8vZG9jcy5oYW5kc29udGFibGUuY29tL2kxOG4vbWlzc2luZy1sYW5ndWFnZS1jb2RlLiddLFsnTGFuZ3VhZ2Ugd2l0aCBjb2RlICInLCciIHdhcyBub3QgZm91bmQu''@;'; put 'put ''IFlvdSBzaG91bGQgcmVnaXN0ZXIgcGFydGljdWxhciBsYW5ndWFnZVxceDIwXG4gICAgYmVmb3JlIHVzaW5nIGl0LiBSZWFkIG1vcmUgYWJvdXQgdGhpcyBpc3N1ZSBhdDogaHR0cHM6Ly9kb2NzLmhhbmRzb250YWJsZS5jb20vaTE4bi9taXNzaW5nLWxhbmd1YWdlLWNvZGUuJ10pKSxsKSl9''@;'; put 'put ''VGwoc0csVzApO3ZhciBwZGU9RmYoInBocmFzZUZvcm1hdHRlcnMiKSxNcnQ9cGRlLnJlZ2lzdGVyLGtydD1wZGUuZ2V0VmFsdWVzOyFmdW5jdGlvbiBFcnQobCxjKXtNcnQobCxjKX0oInBsdXJhbGl6ZSIsZnVuY3Rpb24gU3J0KGwsYyl7cmV0dXJuIEFycmF5LmlzQXJyYXkobCkmJk51bWJl''@;'; put 'put ''ci5pc0ludGVnZXIoYyk/bFtjXTpsfSk7dmFyIFppLG1kZT0iQ29udGV4dE1lbnU6aXRlbXMiLGlhPW1kZSx1Rz0iIi5jb25jYXQoaWEsIi5ub0l0ZW1zIiksY0c9IiIuY29uY2F0KGlhLCIuaW5zZXJ0Um93QWJvdmUiKSxmRz0iIi5jb25jYXQoaWEsIi5pbnNlcnRSb3dCZWxvdyIpLGRHPSIi''@;'; put 'put ''LmNvbmNhdChpYSwiLmluc2VydENvbHVtbk9uVGhlTGVmdCIpLGhHPSIiLmNvbmNhdChpYSwiLmluc2VydENvbHVtbk9uVGhlUmlnaHQiKSxwRz0iIi5jb25jYXQoaWEsIi5yZW1vdmVSb3ciKSxtRz0iIi5jb25jYXQoaWEsIi5yZW1vdmVDb2x1bW4iKSxnRz0iIi5jb25jYXQoaWEsIi51bmRv''@;'; put 'put ''Iiksdkc9IiIuY29uY2F0KGlhLCIucmVkbyIpLHlHPSIiLmNvbmNhdChpYSwiLnJlYWRPbmx5IiksYkc9IiIuY29uY2F0KGlhLCIuY2xlYXJDb2x1bW4iKSxfRz0iIi5jb25jYXQoaWEsIi5jb3B5Iiksd0c9IiIuY29uY2F0KGlhLCIuY29weVdpdGhIZWFkZXJzIiksQ0c9IiIuY29uY2F0KGlh''@;'; put 'put ''LCIuY29weVdpdGhHcm91cEhlYWRlcnMiKSxTRz0iIi5jb25jYXQoaWEsIi5jb3B5SGVhZGVyc09ubHkiKSxNRz0iIi5jb25jYXQoaWEsIi5jdXQiKSxrRz0iIi5jb25jYXQoaWEsIi5mcmVlemVDb2x1bW4iKSxFRz0iIi5jb25jYXQoaWEsIi51bmZyZWV6ZUNvbHVtbiIpLHhHPSIiLmNvbmNh''@;'; put 'put ''dChpYSwiLm1lcmdlQ2VsbHMiKSxBRz0iIi5jb25jYXQoaWEsIi51bm1lcmdlQ2VsbHMiKSxURz0iIi5jb25jYXQoaWEsIi5hZGRDb21tZW50IiksT0c9IiIuY29uY2F0KGlhLCIuZWRpdENvbW1lbnQiKSxERz0iIi5jb25jYXQoaWEsIi5yZW1vdmVDb21tZW50IiksSUc9IiIuY29uY2F0KGlh''@;'; put 'put ''LCIucmVhZE9ubHlDb21tZW50IiksUkc9IiIuY29uY2F0KGlhLCIuYWxpZ24iKSxMRz0iIi5jb25jYXQoaWEsIi5hbGlnbi5sZWZ0IiksUEc9IiIuY29uY2F0KGlhLCIuYWxpZ24uY2VudGVyIiksRkc9IiIuY29uY2F0KGlhLCIuYWxpZ24ucmlnaHQiKSxIRz0iIi5jb25jYXQoaWEsIi5hbGln''@;'; put 'put ''bi5qdXN0aWZ5IiksTkc9IiIuY29uY2F0KGlhLCIuYWxpZ24udG9wIiksVkc9IiIuY29uY2F0KGlhLCIuYWxpZ24ubWlkZGxlIiksQkc9IiIuY29uY2F0KGlhLCIuYWxpZ24uYm90dG9tIiksakc9IiIuY29uY2F0KGlhLCIuYm9yZGVycyIpLHpHPSIiLmNvbmNhdChpYSwiLmJvcmRlcnMudG9w''@;'; put 'put ''IiksVUc9IiIuY29uY2F0KGlhLCIuYm9yZGVycy5yaWdodCIpLFpHPSIiLmNvbmNhdChpYSwiLmJvcmRlcnMuYm90dG9tIiksWUc9IiIuY29uY2F0KGlhLCIuYm9yZGVycy5sZWZ0IiksV0c9IiIuY29uY2F0KGlhLCIuYm9yZGVycy5yZW1vdmUiKSxHRz0iIi5jb25jYXQoaWEsIi5uZXN0ZWRI''@;'; put 'put ''ZWFkZXJzLmluc2VydENoaWxkUm93IiksJEc9IiIuY29uY2F0KGlhLCIubmVzdGVkSGVhZGVycy5kZXRhY2hGcm9tUGFyZW50IiksS0c9IiIuY29uY2F0KGlhLCIuaGlkZUNvbHVtbiIpLHFHPSIiLmNvbmNhdChpYSwiLnNob3dDb2x1bW4iKSxYRz0iIi5jb25jYXQoaWEsIi5oaWRlUm93Iiks''@;'; put 'put ''Skc9IiIuY29uY2F0KGlhLCIuc2hvd1JvdyIpLG4wPSJGaWx0ZXJzOiIsa3M9IiIuY29uY2F0KG4wLCJjb25kaXRpb25zIikscVI9IiIuY29uY2F0KGtzLCIubm9uZSIpLFFHPSIiLmNvbmNhdChrcywiLmlzRW1wdHkiKSxlJD0iIi5jb25jYXQoa3MsIi5pc05vdEVtcHR5IiksdCQ9IiIuY29u''@;'; put 'put ''Y2F0KGtzLCIuaXNFcXVhbFRvIiksbiQ9IiIuY29uY2F0KGtzLCIuaXNOb3RFcXVhbFRvIiksciQ9IiIuY29uY2F0KGtzLCIuYmVnaW5zV2l0aCIpLGkkPSIiLmNvbmNhdChrcywiLmVuZHNXaXRoIiksbyQ9IiIuY29uY2F0KGtzLCIuY29udGFpbnMiKSxhJD0iIi5jb25jYXQoa3MsIi5kb2Vz''@;'; put 'put ''Tm90Q29udGFpbiIpLEFydD0iIi5jb25jYXQoa3MsIi5ieVZhbHVlIiksbCQ9IiIuY29uY2F0KGtzLCIuZ3JlYXRlclRoYW4iKSxzJD0iIi5jb25jYXQoa3MsIi5ncmVhdGVyVGhhbk9yRXF1YWxUbyIpLHUkPSIiLmNvbmNhdChrcywiLmxlc3NUaGFuIiksYyQ9IiIuY29uY2F0KGtzLCIubGVz''@;'; put 'put ''c1RoYW5PckVxdWFsVG8iKSxmJD0iIi5jb25jYXQoa3MsIi5pc0JldHdlZW4iKSxkJD0iIi5jb25jYXQoa3MsIi5pc05vdEJldHdlZW4iKSxoJD0iIi5jb25jYXQoa3MsIi5hZnRlciIpLHAkPSIiLmNvbmNhdChrcywiLmJlZm9yZSIpLG0kPSIiLmNvbmNhdChrcywiLnRvZGF5IiksZyQ9IiIu''@;'; put 'put ''Y29uY2F0KGtzLCIudG9tb3Jyb3ciKSx2JD0iIi5jb25jYXQoa3MsIi55ZXN0ZXJkYXkiKSx5JD0iIi5jb25jYXQobjAsImxhYmVscy5maWx0ZXJCeUNvbmRpdGlvbiIpLGIkPSIiLmNvbmNhdChuMCwibGFiZWxzLmZpbHRlckJ5VmFsdWUiKSxfJD0iIi5jb25jYXQobjAsImxhYmVscy5jb25q''@;'; put 'put ''dW5jdGlvbiIpLFhSPSIiLmNvbmNhdChuMCwibGFiZWxzLmRpc2p1bmN0aW9uIiksSlI9IiIuY29uY2F0KG4wLCJ2YWx1ZXMuYmxhbmtDZWxscyIpLHckPSIiLmNvbmNhdChuMCwiYnV0dG9ucy5zZWxlY3RBbGwiKSxDJD0iIi5jb25jYXQobjAsImJ1dHRvbnMuY2xlYXIiKSxTJD0iIi5jb25j''@;'; put 'put ''YXQobjAsImJ1dHRvbnMub2siKSxNJD0iIi5jb25jYXQobjAsImJ1dHRvbnMuY2FuY2VsIiksayQ9IiIuY29uY2F0KG4wLCJidXR0b25zLnBsYWNlaG9sZGVyLnNlYXJjaCIpLEUkPSIiLmNvbmNhdChuMCwiYnV0dG9ucy5wbGFjZWhvbGRlci52YWx1ZSIpLHgkPSIiLmNvbmNhdChuMCwiYnV0''@;'; put 'put ''dG9ucy5wbGFjZWhvbGRlci5zZWNvbmRWYWx1ZSIpO2Z1bmN0aW9uIFpNKGwpe3JldHVybihaTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBj''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEtpKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBUcnQobCl7dmFyIGM9ZnVuY3Rpb24gT3J0KGwsYyl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1aTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1aTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRv''@;'; put 'put ''UHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Wk0oYyk/YzpTdHJpbmcoYyl9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxj''@;'; put 'put ''LHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgZ2RlPShLaShaaT17bGFuZ3VhZ2VDb2RlOiJlbi1VUyJ9LHVHLCJObyBhdmFpbGFibGUgb3B0aW9ucyIpLEtpKFppLGNHLCJJbnNlcnQgcm93IGFib3ZlIiksS2koWmks''@;'; put 'put ''ZkcsIkluc2VydCByb3cgYmVsb3ciKSxLaShaaSxkRywiSW5zZXJ0IGNvbHVtbiBsZWZ0IiksS2koWmksaEcsIkluc2VydCBjb2x1bW4gcmlnaHQiKSxLaShaaSxwRyxbIlJlbW92ZSByb3ciLCJSZW1vdmUgcm93cyJdKSxLaShaaSxtRyxbIlJlbW92ZSBjb2x1bW4iLCJSZW1vdmUgY29sdW1u''@;'; put 'put ''cyJdKSxLaShaaSxnRywiVW5kbyIpLEtpKFppLHZHLCJSZWRvIiksS2koWmkseUcsIlJlYWQgb25seSIpLEtpKFppLGJHLCJDbGVhciBjb2x1bW4iKSxLaShaaSxSRywiQWxpZ25tZW50IiksS2koWmksTEcsIkxlZnQiKSxLaShaaSxQRywiQ2VudGVyIiksS2koWmksRkcsIlJpZ2h0IiksS2ko''@;'; put 'put ''WmksSEcsIkp1c3RpZnkiKSxLaShaaSxORywiVG9wIiksS2koWmksVkcsIk1pZGRsZSIpLEtpKFppLEJHLCJCb3R0b20iKSxLaShaaSxrRywiRnJlZXplIGNvbHVtbiIpLEtpKFppLEVHLCJVbmZyZWV6ZSBjb2x1bW4iKSxLaShaaSxqRywiQm9yZGVycyIpLEtpKFppLHpHLCJUb3AiKSxLaSha''@;'; put 'put ''aSxVRywiUmlnaHQiKSxLaShaaSxaRywiQm90dG9tIiksS2koWmksWUcsIkxlZnQiKSxLaShaaSxXRywiUmVtb3ZlIGJvcmRlcihzKSIpLEtpKFppLFRHLCJBZGQgY29tbWVudCIpLEtpKFppLE9HLCJFZGl0IGNvbW1lbnQiKSxLaShaaSxERywiRGVsZXRlIGNvbW1lbnQiKSxLaShaaSxJRywi''@;'; put 'put ''UmVhZC1vbmx5IGNvbW1lbnQiKSxLaShaaSx4RywiTWVyZ2UgY2VsbHMiKSxLaShaaSxBRywiVW5tZXJnZSBjZWxscyIpLEtpKFppLF9HLCJDb3B5IiksS2koWmksd0csWyJDb3B5IHdpdGggaGVhZGVyIiwiQ29weSB3aXRoIGhlYWRlcnMiXSksS2koWmksQ0csWyJDb3B5IHdpdGggZ3JvdXAg''@;'; put 'put ''aGVhZGVyIiwiQ29weSB3aXRoIGdyb3VwIGhlYWRlcnMiXSksS2koWmksU0csWyJDb3B5IGhlYWRlciBvbmx5IiwiQ29weSBoZWFkZXJzIG9ubHkiXSksS2koWmksTUcsIkN1dCIpLEtpKFppLEdHLCJJbnNlcnQgY2hpbGQgcm93IiksS2koWmksJEcsIkRldGFjaCBmcm9tIHBhcmVudCIpLEtp''@;'; put 'put ''KFppLEtHLFsiSGlkZSBjb2x1bW4iLCJIaWRlIGNvbHVtbnMiXSksS2koWmkscUcsWyJTaG93IGNvbHVtbiIsIlNob3cgY29sdW1ucyJdKSxLaShaaSxYRyxbIkhpZGUgcm93IiwiSGlkZSByb3dzIl0pLEtpKFppLEpHLFsiU2hvdyByb3ciLCJTaG93IHJvd3MiXSksS2koWmkscVIsIk5vbmUi''@;'; put 'put ''KSxLaShaaSxRRywiSXMgZW1wdHkiKSxLaShaaSxlJCwiSXMgbm90IGVtcHR5IiksS2koWmksdCQsIklzIGVxdWFsIHRvIiksS2koWmksbiQsIklzIG5vdCBlcXVhbCB0byIpLEtpKFppLHIkLCJCZWdpbnMgd2l0aCIpLEtpKFppLGkkLCJFbmRzIHdpdGgiKSxLaShaaSxvJCwiQ29udGFpbnMi''@;'; put 'put ''KSxLaShaaSxhJCwiRG9lcyBub3QgY29udGFpbiIpLEtpKFppLGwkLCJHcmVhdGVyIHRoYW4iKSxLaShaaSxzJCwiR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIiksS2koWmksdSQsIkxlc3MgdGhhbiIpLEtpKFppLGMkLCJMZXNzIHRoYW4gb3IgZXF1YWwgdG8iKSxLaShaaSxmJCwiSXMgYmV0''@;'; put 'put ''d2VlbiIpLEtpKFppLGQkLCJJcyBub3QgYmV0d2VlbiIpLEtpKFppLGgkLCJBZnRlciIpLEtpKFppLHAkLCJCZWZvcmUiKSxLaShaaSxtJCwiVG9kYXkiKSxLaShaaSxnJCwiVG9tb3Jyb3ciKSxLaShaaSx2JCwiWWVzdGVyZGF5IiksS2koWmksSlIsIkJsYW5rIGNlbGxzIiksS2koWmkseSQs''@;'; put 'put ''IkZpbHRlciBieSBjb25kaXRpb24iKSxLaShaaSxiJCwiRmlsdGVyIGJ5IHZhbHVlIiksS2koWmksXyQsIkFuZCIpLEtpKFppLFhSLCJPciIpLEtpKFppLHckLCJTZWxlY3QgYWxsIiksS2koWmksQyQsIkNsZWFyIiksS2koWmksUyQsIk9LIiksS2koWmksTSQsIkNhbmNlbCIpLEtpKFppLGsk''@;'; put 'put ''LCJTZWFyY2giKSxLaShaaSxFJCwiVmFsdWUiKSxLaShaaSx4JCwiU2Vjb25kIHZhbHVlIiksWmkpO3ZhciBBJD1nZGUubGFuZ3VhZ2VDb2RlLFFSPUZmKCJsYW5ndWFnZXNEaWN0aW9uYXJpZXMiKSxJcnQ9UVIucmVnaXN0ZXIsdmRlPVFSLmdldEl0ZW0sUnJ0PVFSLmhhc0l0ZW0sTHJ0PVFS''@;'; put 'put ''LmdldFZhbHVlcztmdW5jdGlvbiB5ZGUobCxjKXt2YXIgYT1sLGY9YztyZXR1cm4gcGEobCkmJihhPShmPWwpLmxhbmd1YWdlQ29kZSksZnVuY3Rpb24gUHJ0KGwsYyl7bCE9PUEkJiZmdW5jdGlvbiBDcnQobCxjKXttYShjLGZ1bmN0aW9uKGEsZil7TGwobFtmXSkmJihsW2ZdPWEpfSl9KGMs''@;'; put 'put ''dmRlKEEkKSl9KGEsZiksSXJ0KGEseGMoZikpLHhjKGYpfWZ1bmN0aW9uIGJkZShsKXtyZXR1cm4gVCQobCk/eGModmRlKGwpKTpudWxsfWZ1bmN0aW9uIFQkKGwpe3JldHVybiBScnQobCl9ZnVuY3Rpb24gX2RlKGwsYyxhKXt2YXIgZj1iZGUobCk7aWYobnVsbD09PWYpcmV0dXJuIG51bGw7''@;'; put 'put ''dmFyIGQ9ZltjXTtpZihMbChkKSlyZXR1cm4gbnVsbDt2YXIgaD1mdW5jdGlvbiBIcnQobCxjKXt2YXIgYT1sO3JldHVybiBSbihmdW5jdGlvbiB4cnQoKXtyZXR1cm4ga3J0KCl9KCksZnVuY3Rpb24oZil7YT1mKGwsYyl9KSxhfShkLGEpO3JldHVybiBBcnJheS5pc0FycmF5KGgpP2hbMF06''@;'; put 'put ''aH15ZGUoZ2RlKSxUKDU1NjE1KTt2YXIgZUw9ImFjdGl2ZS1oZWFkZXIiLHRMPSJhcmVhIixZTT0iY2VsbCIsTyQ9ImZpbGwiLFdNPSJoZWFkZXIiLEQkPSJjdXN0b20tc2VsZWN0aW9uIjtmdW5jdGlvbiBHTShsKXtyZXR1cm4oR009ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGN9KShsKX1mdW5jdGlvbiBJJChsLGMpe3JldHVybiBmdW5jdGlvbiB6cnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIGpydChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0''@;'; put 'put ''ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxf''@;'; put 'put ''Lmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gQnJ0KGws''@;'; put 'put ''Yyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiB3ZGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8''@;'; put 'put ''IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIHdkZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gVnJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52''@;'; put 'put ''YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB3ZGUobCxjKXsobnVsbD09''@;'; put 'put ''Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBDZGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxl''@;'; put 'put ''fHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFlydChmLmtleSksZil9fWZ1bmN0aW9uIFlydChsKXt2YXIgYz1mdW5jdGlvbiBXcnQobCxjKXtpZigib2JqZWN0IiE9PUdNKGwpfHxudWxsPT09bClyZXR1''@;'; put 'put ''cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUdNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUg''@;'; put 'put ''dmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1HTShjKT9jOlN0cmluZyhjKX1UKDgzODU3KTt2YXIgR3J0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBVcnQobCxjKXtpZighKGwg''@;'; put 'put ''aW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksYSYmKHRoaXMuZXZlbnRNYW5hZ2VyPWMuZXZlbnRNYW5hZ2VyLHRoaXMuaW5zdGFuY2U9Yyx0aGlzLndvdD1jLHRoaXMuc2V0dGluZ3M9YSx0aGlz''@;'; put 'put ''Lm1vdXNlRG93bj0hMSx0aGlzLm1haW49bnVsbCx0aGlzLnRvcD1udWxsLHRoaXMuYm90dG9tPW51bGwsdGhpcy5zdGFydD1udWxsLHRoaXMuZW5kPW51bGwsdGhpcy50b3BTdHlsZT1udWxsLHRoaXMuYm90dG9tU3R5bGU9bnVsbCx0aGlzLnN0YXJ0U3R5bGU9bnVsbCx0aGlzLmVuZFN0eWxl''@;'; put 'put ''PW51bGwsdGhpcy5jb3JuZXJEZWZhdWx0U3R5bGU9e3dpZHRoOiI2cHgiLGhlaWdodDoiNnB4Iixib3JkZXJXaWR0aDoiMXB4Iixib3JkZXJTdHlsZToic29saWQiLGJvcmRlckNvbG9yOiIjRkZGIn0sdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldD0tcGFyc2VJbnQodGhpcy5jb3JuZXJE''@;'; put 'put ''ZWZhdWx0U3R5bGUud2lkdGgsMTApLzIsdGhpcy5jb3JuZXI9bnVsbCx0aGlzLmNvcm5lclN0eWxlPW51bGwsdGhpcy5jcmVhdGVCb3JkZXJzKGEpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSl9cmV0dXJuIGZ1bmN0aW9uIFpydChsLGMsYSl7YyYmQ2RlKGwucHJvdG90eXBlLGMpLGEmJkNk''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9dGhpcy53b3Qucm9vdERvY3VtZW50LmJvZHk7dGhpcy5ldmVudE1hbmFnZXIuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcihmLCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGEub25Nb3VzZURvd24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZiwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gYS5vbk1vdXNlVXAoKX0pO2Zvcih2YXIgZD1mdW5jdGlvbihP''@;'; put 'put ''KXthLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEubWFpbi5jaGlsZE5vZGVzW09dLCJtb3VzZWVudGVyIixmdW5jdGlvbihhZSl7cmV0dXJuIGEub25Nb3VzZUVudGVyKGFlLGEubWFpbi5jaGlsZE5vZGVzW09dKX0pfSxoPTAsbT10aGlzLm1haW4uY2hpbGROb2Rlcy5sZW5ndGg7''@;'; put 'put ''aDxtO2grKylkKGgpfX0se2tleToib25Nb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZURvd249ITB9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZURvd249ITF9fSx7a2V5OiJvbk1vdXNlRW50ZXIiLHZhbHVlOmZ1bmN0aW9uKGEsZil7''@;'; put 'put ''aWYodGhpcy5tb3VzZURvd24mJnRoaXMud290LmdldFNldHRpbmcoImhpZGVCb3JkZXJPbk1vdXNlRG93bk92ZXIiKSl7YS5wcmV2ZW50RGVmYXVsdCgpLEhkKGEpO3ZhciBkPXRoaXMsaD10aGlzLndvdC5yb290RG9jdW1lbnQuYm9keSxtPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zi5z''@;'; put 'put ''dHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgsIm1vdXNlbW92ZSIsZnVuY3Rpb24gTyhYKXsoZnVuY3Rpb24gXyhYKXtpZihYLmNsaWVudFk8TWF0aC5mbG9vcihtLnRvcCl8fFguY2xpZW50WT5NYXRoLmNlaWwobS50b3ArbS5oZWlnaHQp''@;'; put 'put ''fHxYLmNsaWVudFg8TWF0aC5mbG9vcihtLmxlZnQpfHxYLmNsaWVudFg+TWF0aC5jZWlsKG0ubGVmdCttLndpZHRoKSlyZXR1cm4hMH0pKFgpJiYoZC5ldmVudE1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihoLCJtb3VzZW1vdmUiLE8pLGYuc3R5bGUuZGlzcGxheT0iYmxvY2siKX0pfX19''@;'; put 'put ''LHtrZXk6ImNyZWF0ZUJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMud290LnJvb3REb2N1bWVudDt0aGlzLm1haW49Zi5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgZD1bInRvcCIsInN0YXJ0IiwiYm90dG9tIiwiZW5kIiwiY29ybmVyIl0saD10aGlzLm1haW4uc3R5bGU7''@;'; put 'put ''aC5wb3NpdGlvbj0iYWJzb2x1dGUiLGgudG9wPTAsaC5sZWZ0PTA7Zm9yKHZhciBtPTA7bTw1O20rKyl7dmFyIF89ZFttXSxPPWYuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ty5jbGFzc05hbWU9Ind0Qm9yZGVyICIuY29uY2F0KHRoaXMuc2V0dGluZ3MuY2xhc3NOYW1lfHwiIiksdGhpcy5zZXR0''@;'; put 'put ''aW5nc1tfXSYmdGhpcy5zZXR0aW5nc1tfXS5oaWRlJiYoTy5jbGFzc05hbWUrPSIgaGlkZGVuIiksKGg9Ty5zdHlsZSkuYmFja2dyb3VuZENvbG9yPXRoaXMuc2V0dGluZ3NbX10mJnRoaXMuc2V0dGluZ3NbX10uY29sb3I/dGhpcy5zZXR0aW5nc1tfXS5jb2xvcjphLmJvcmRlci5jb2xvcixo''@;'; put 'put ''LmhlaWdodD0iIi5jb25jYXQodGhpcy5zZXR0aW5nc1tfXSYmdGhpcy5zZXR0aW5nc1tfXS53aWR0aD90aGlzLnNldHRpbmdzW19dLndpZHRoOmEuYm9yZGVyLndpZHRoLCJweCIpLGgud2lkdGg9IiIuY29uY2F0KHRoaXMuc2V0dGluZ3NbX10mJnRoaXMuc2V0dGluZ3NbX10ud2lkdGg/dGhp''@;'; put 'put ''cy5zZXR0aW5nc1tfXS53aWR0aDphLmJvcmRlci53aWR0aCwicHgiKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQoTyl9dGhpcy50b3A9dGhpcy5tYWluLmNoaWxkTm9kZXNbMF0sdGhpcy5zdGFydD10aGlzLm1haW4uY2hpbGROb2Rlc1sxXSx0aGlzLmJvdHRvbT10aGlzLm1haW4uY2hpbGROb2Rl''@;'; put 'put ''c1syXSx0aGlzLmVuZD10aGlzLm1haW4uY2hpbGROb2Rlc1szXSx0aGlzLnRvcFN0eWxlPXRoaXMudG9wLnN0eWxlLHRoaXMuc3RhcnRTdHlsZT10aGlzLnN0YXJ0LnN0eWxlLHRoaXMuYm90dG9tU3R5bGU9dGhpcy5ib3R0b20uc3R5bGUsdGhpcy5lbmRTdHlsZT10aGlzLmVuZC5zdHlsZSx0''@;'; put 'put ''aGlzLmNvcm5lcj10aGlzLm1haW4uY2hpbGROb2Rlc1s0XSx0aGlzLmNvcm5lci5jbGFzc05hbWUrPSIgY29ybmVyIix0aGlzLmNvcm5lclN0eWxlPXRoaXMuY29ybmVyLnN0eWxlLHRoaXMuY29ybmVyU3R5bGUud2lkdGg9dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsdGhpcy5jb3Ju''@;'; put 'put ''ZXJTdHlsZS5oZWlnaHQ9dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUuaGVpZ2h0LHRoaXMuY29ybmVyU3R5bGUuYm9yZGVyPVt0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3JkZXJXaWR0aCx0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5ib3JkZXJTdHlsZSx0aGlzLmNvcm5lckRlZmF1bHRTdHls''@;'; put 'put ''ZS5ib3JkZXJDb2xvcl0uam9pbigiICIpLFBkKCkmJnRoaXMuY3JlYXRlTXVsdGlwbGVTZWxlY3RvckhhbmRsZXMoKSx0aGlzLmRpc2FwcGVhcigpO3ZhciBYPXRoaXMud290Lnd0VGFibGUsYWU9WC5ib3JkZXJzSG9sZGVyO2FlfHwoKGFlPWYuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNz''@;'; put 'put ''TmFtZT0iaHRCb3JkZXJzIixYLmJvcmRlcnNIb2xkZXI9YWUsWC5zcHJlYWRlci5hcHBlbmRDaGlsZChhZSkpLGFlLmFwcGVuZENoaWxkKHRoaXMubWFpbil9fSx7a2V5OiJjcmVhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9dGhpcy53''@;'; put 'put ''b3Qucm9vdERvY3VtZW50O3RoaXMuc2VsZWN0aW9uSGFuZGxlcz17dG9wOmYuY3JlYXRlRWxlbWVudCgiRElWIiksdG9wSGl0QXJlYTpmLmNyZWF0ZUVsZW1lbnQoIkRJViIpLGJvdHRvbTpmLmNyZWF0ZUVsZW1lbnQoIkRJViIpLGJvdHRvbUhpdEFyZWE6Zi5jcmVhdGVFbGVtZW50KCJESVYi''@;'; put 'put ''KX0sdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcC5jbGFzc05hbWU9InRvcFNlbGVjdGlvbkhhbmRsZSB0b3BMZWZ0U2VsZWN0aW9uSGFuZGxlIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wSGl0QXJlYS5jbGFzc05hbWU9InRvcFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIHRvcExlZnRTZWxl''@;'; put 'put ''Y3Rpb25IYW5kbGUtSGl0QXJlYSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbS5jbGFzc05hbWU9ImJvdHRvbVNlbGVjdGlvbkhhbmRsZSBib3R0b21SaWdodFNlbGVjdGlvbkhhbmRsZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEuY2xhc3NOYW1lPSJib3R0b21T''@;'; put 'put ''ZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSBib3R0b21SaWdodFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzPXt0b3A6dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcC5zdHlsZSx0b3BIaXRBcmVhOnRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3BIaXRB''@;'; put 'put ''cmVhLnN0eWxlLGJvdHRvbTp0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tLnN0eWxlLGJvdHRvbUhpdEFyZWE6dGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEuc3R5bGV9LG1hKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGhlaWdodDoiIi5jb25jYXQoNDAsInB4Iiksd2lkdGg6''@;'; put 'put ''IiIuY29uY2F0KDQwLCJweCIpLCJib3JkZXItcmFkaXVzIjoiIi5jb25jYXQocGFyc2VJbnQoNDAvMS41LDEwKSwicHgiKX0sZnVuY3Rpb24oTyxYKXthLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbUhpdEFyZWFbWF09TyxhLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFy''@;'; put 'put ''ZWFbWF09T30pLG1hKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGhlaWdodDoiIi5jb25jYXQoMTAsInB4Iiksd2lkdGg6IiIuY29uY2F0KDEwLCJweCIpLCJib3JkZXItcmFkaXVzIjoiIi5jb25jYXQocGFyc2VJbnQoMTAvMS41LDEwKSwicHgiKSxiYWNrZ3JvdW5kOiIjRjVGNUZGIixib3JkZXI6''@;'; put 'put ''IjFweCBzb2xpZCAjNDI4NWM4In0sZnVuY3Rpb24oTyxYKXthLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLmJvdHRvbVtYXT1PLGEuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wW1hdPU99KSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcCksdGhpcy5t''@;'; put 'put ''YWluLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b20pLHRoaXMubWFpbi5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wSGl0QXJlYSksdGhpcy5tYWluLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b21IaXRBcmVhKX19LHtr''@;'; put 'put ''ZXk6ImlzUGFydFJhbmdlIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMud290LnNlbGVjdGlvbnMuY3JlYXRlT3JHZXRBcmVhKCk7cmV0dXJuISghZC5jZWxsUmFuZ2V8fGE9PT1kLmNlbGxSYW5nZS50by5yb3cmJmY9PT1kLmNlbGxSYW5nZS50by5jb2wpfX0se2tleToidXBkYXRl''@;'; put 'put ''TXVsdGlwbGVTZWxlY3Rpb25IYW5kbGVzUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgsbSxfKXt2YXIgWD10aGlzLndvdC53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKT8icmlnaHQiOiJsZWZ0IixhZT10aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLHBlPWFlLnRv''@;'; put 'put ''cCxiZT1hZS50b3BIaXRBcmVhLHhlPWFlLmJvdHRvbSxWZT1hZS5ib3R0b21IaXRBcmVhLFplPXBhcnNlSW50KHBlLmJvcmRlcldpZHRoLDEwKSxsdD1wYXJzZUludChwZS53aWR0aCwxMCksZHQ9cGFyc2VJbnQoYmUud2lkdGgsMTApLGd0PXRoaXMud290Lnd0VGFibGUuZ2V0V2lkdGgoKSxq''@;'; put 'put ''dD10aGlzLndvdC53dFRhYmxlLmdldEhlaWdodCgpO3BlLnRvcD0iIi5jb25jYXQocGFyc2VJbnQoZC1sdC0xLDEwKSwicHgiKSxwZVtYXT0iIi5jb25jYXQocGFyc2VJbnQoaC1sdC0xLDEwKSwicHgiKSxiZS50b3A9IiIuY29uY2F0KHBhcnNlSW50KGQtZHQvNCozLDEwKSwicHgiKSxiZVtY''@;'; put 'put ''XT0iIi5jb25jYXQocGFyc2VJbnQoaC1kdC80KjMsMTApLCJweCIpO3ZhciBybj1NYXRoLm1pbihwYXJzZUludChoK20sMTApLGd0LWx0LTIqWmUpLFh0PU1hdGgubWluKHBhcnNlSW50KGgrbS1kdC80LDEwKSxndC1kdC0yKlplKTt4ZVtYXT0iIi5jb25jYXQocm4sInB4IiksVmVbWF09IiIu''@;'; put 'put ''Y29uY2F0KFh0LCJweCIpO3ZhciB5bj1NYXRoLm1pbihwYXJzZUludChkK18sMTApLGp0LWx0LTIqWmUpLFFuPU1hdGgubWluKHBhcnNlSW50KGQrXy1kdC80LDEwKSxqdC1kdC0yKlplKTt4ZS50b3A9IiIuY29uY2F0KHluLCJweCIpLFZlLnRvcD0iIi5jb25jYXQoUW4sInB4IiksdGhpcy5z''@;'; put 'put ''ZXR0aW5ncy5ib3JkZXIuY29ybmVyVmlzaWJsZSYmdGhpcy5zZXR0aW5ncy5ib3JkZXIuY29ybmVyVmlzaWJsZSgpPyhwZS5kaXNwbGF5PSJibG9jayIsYmUuZGlzcGxheT0iYmxvY2siLHRoaXMuaXNQYXJ0UmFuZ2UoYSxmKT8oeGUuZGlzcGxheT0ibm9uZSIsVmUuZGlzcGxheT0ibm9uZSIp''@;'; put 'put ''Oih4ZS5kaXNwbGF5PSJibG9jayIsVmUuZGlzcGxheT0iYmxvY2siKSk6KHBlLmRpc3BsYXk9Im5vbmUiLHhlLmRpc3BsYXk9Im5vbmUiLGJlLmRpc3BsYXk9Im5vbmUiLFZlLmRpc3BsYXk9Im5vbmUiKSxhPT09dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3Ai''@;'; put 'put ''KXx8Zj09PXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKT8ocGUuekluZGV4PSI5OTk5IixiZS56SW5kZXg9Ijk5OTkiKToocGUuekluZGV4PSIiLGJlLnpJbmRleD0iIil9fSx7a2V5OiJhcHBlYXIiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCF0aGlz''@;'; put 'put ''LmRpc2FibGVkKXtmb3IodmFyIF8sTyxYLGFlLHBlLGJlLGY9dGhpcy53b3QsZD1mLnd0VGFibGUsaD1mLnJvb3REb2N1bWVudCxtPWYucm9vdFdpbmRvdyx4ZT1kLmdldFJlbmRlcmVkUm93c0NvdW50KCksVmU9MDtWZTx4ZTtWZSs9MSl7dmFyIFplPWQucm93RmlsdGVyLnJlbmRlcmVkVG9T''@;'; put 'put ''b3VyY2UoVmUpO2lmKFplPj1hWzBdJiZaZTw9YVsyXSl7Xz1aZSxwZT1hWzBdO2JyZWFrfX1mb3IodmFyIGx0PXhlLTE7bHQ+PTA7bHQtPTEpe3ZhciBkdD1kLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKGx0KTtpZihkdD49YVswXSYmZHQ8PWFbMl0pe089ZHQ7YnJlYWt9fWZvcih2YXIg''@;'; put 'put ''Z3Q9ZC5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpLGp0PTA7anQ8Z3Q7anQrPTEpe3ZhciBybj1kLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKGp0KTtpZihybj49YVsxXSYmcm48PWFbM10pe1g9cm4sYmU9YVsxXTticmVha319Zm9yKHZhciBYdD1ndC0xO1h0Pj0wO1h0LT0xKXt2''@;'; put 'put ''YXIgeW49ZC5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShYdCk7aWYoeW4+PWFbMV0mJnluPD1hWzNdKXthZT15bjticmVha319aWYodm9pZCAwPT09X3x8dm9pZCAwPT09WClyZXR1cm4gdm9pZCB0aGlzLmRpc2FwcGVhcigpO3ZhciBRbj1kLmdldENlbGwodGhpcy53b3QuY3JlYXRl''@;'; put 'put ''Q2VsbENvb3JkcyhfLFgpKSxPcj1fIT09T3x8WCE9PWFlLFZyPU9yP2QuZ2V0Q2VsbCh0aGlzLndvdC5jcmVhdGVDZWxsQ29vcmRzKE8sYWUpKTpRbixacj1pdShRbiksaXI9T3I/aXUoVnIpOlpyLHNpPWl1KGQuVEFCTEUpLEFyPVNsKGQuVEFCTEUpLEVuPVpyLnRvcCxUcj1aci5sZWZ0LFZu''@;'; put 'put ''PXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicnRsTW9kZSIpLGNyPTAsQ3I9MDtpZihWbil7dmFyIFlyPVNsKFFuKTtDcj1UcitZci1pci5sZWZ0LGNyPW0uaW5uZXJXaWR0aC1Uci1Zci0obS5pbm5lcldpZHRoLXNpLmxlZnQtQXIpLTF9ZWxzZSBDcj1pci5sZWZ0K1NsKFZyKS1U''@;'; put 'put ''cixjcj1Uci1zaS5sZWZ0LTE7aWYodGhpcy5pc0VudGlyZUNvbHVtblNlbGVjdGVkKF8sTykpe3ZhciBGdD10aGlzLmdldERpbWVuc2lvbnNGcm9tSGVhZGVyKCJjb2x1bW5zIixYLGFlLHBlLHNpKSxXdD1udWxsO2lmKEZ0KXt2YXIgd249SSQoRnQsMyk7V3Q9d25bMF0sY3I9d25bMV0sQ3I9''@;'; put 'put ''d25bMl19V3QmJihRbj1XdCl9dmFyIFNuPUVuLXNpLnRvcC0xLGJyPWlyLnRvcCtjcyhWciktRW47aWYodGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKFgsYWUpKXt2YXIgZHI9dGhpcy5nZXREaW1lbnNpb25zRnJvbUhlYWRlcigicm93cyIsXyxPLGJlLHNpKSxMcj1udWxsO2lmKGRyKXt2YXIg''@;'; put 'put ''TnI9SSQoZHIsMyk7THI9TnJbMF0sU249TnJbMV0sYnI9TnJbMl19THImJihRbj1Mcil9dmFyIGRpPUQ0KFFuLG0pO3BhcnNlSW50KGRpLmJvcmRlclRvcFdpZHRoLDEwKT4wJiYoU24rPTEsYnI9YnI+MD9ici0xOjApLHBhcnNlSW50KGRpW1ZuPyJib3JkZXJSaWdodFdpZHRoIjoiYm9yZGVy''@;'; put 'put ''TGVmdFdpZHRoIl0sMTApPjAmJihjcis9MSxDcj1Dcj4wP0NyLTE6MCk7dmFyIHFyPVZuPyJyaWdodCI6ImxlZnQiO3RoaXMudG9wU3R5bGUudG9wPSIiLmNvbmNhdChTbiwicHgiKSx0aGlzLnRvcFN0eWxlW3FyXT0iIi5jb25jYXQoY3IsInB4IiksdGhpcy50b3BTdHlsZS53aWR0aD0iIi5j''@;'; put 'put ''b25jYXQoQ3IsInB4IiksdGhpcy50b3BTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5zdGFydFN0eWxlLnRvcD0iIi5jb25jYXQoU24sInB4IiksdGhpcy5zdGFydFN0eWxlW3FyXT0iIi5jb25jYXQoY3IsInB4IiksdGhpcy5zdGFydFN0eWxlLmhlaWdodD0iIi5jb25jYXQoYnIsInB4Iiks''@;'; put 'put ''dGhpcy5zdGFydFN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgUmk9TWF0aC5mbG9vcih0aGlzLnNldHRpbmdzLmJvcmRlci53aWR0aC8yKTt0aGlzLmJvdHRvbVN0eWxlLnRvcD0iIi5jb25jYXQoU24rYnItUmksInB4IiksdGhpcy5ib3R0b21TdHlsZVtxcl09IiIuY29uY2F0KGNyLCJweCIp''@;'; put 'put ''LHRoaXMuYm90dG9tU3R5bGUud2lkdGg9IiIuY29uY2F0KENyLCJweCIpLHRoaXMuYm90dG9tU3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZW5kU3R5bGUudG9wPSIiLmNvbmNhdChTbiwicHgiKSx0aGlzLmVuZFN0eWxlW3FyXT0iIi5jb25jYXQoY3IrQ3ItUmksInB4IiksdGhpcy5lbmRT''@;'; put 'put ''dHlsZS5oZWlnaHQ9IiIuY29uY2F0KGJyKzEsInB4IiksdGhpcy5lbmRTdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIERvPXRoaXMuc2V0dGluZ3MuYm9yZGVyLmNvcm5lclZpc2libGU7RG89ImZ1bmN0aW9uIj09dHlwZW9mIERvP0RvKHRoaXMuc2V0dGluZ3MubGF5ZXJMZXZlbCk6RG87dmFy''@;'; put 'put ''IG9hPXRoaXMud290LmdldFNldHRpbmcoIm9uTW9kaWZ5R2V0Q2VsbENvb3JkcyIsTyxhZSksa289TyxxaT1hZTtpZihvYSYmQXJyYXkuaXNBcnJheShvYSkpe3ZhciB4dD1JJChvYSw0KTtrbz14dFsyXSxxaT14dFszXX1pZihQZCgpfHwhRG98fHRoaXMuaXNQYXJ0UmFuZ2Uoa28scWkpKXRo''@;'; put 'put ''aXMuY29ybmVyU3R5bGUuZGlzcGxheT0ibm9uZSI7ZWxzZXt0aGlzLmNvcm5lclN0eWxlLnRvcD0iIi5jb25jYXQoU24rYnIrdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldC0xLCJweCIpLHRoaXMuY29ybmVyU3R5bGVbcXJdPSIiLmNvbmNhdChjcitDcit0aGlzLmNvcm5lckNlbnRlclBv''@;'; put 'put ''aW50T2Zmc2V0LTEsInB4IiksdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJSaWdodFdpZHRoPXRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRoLHRoaXMuY29ybmVyU3R5bGUud2lkdGg9dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5''@;'; put 'put ''PSJub25lIjt2YXIgTGk9YjUoZC5UQUJMRSksWmE9TGk9PT1tO1phJiYoTGk9aC5kb2N1bWVudEVsZW1lbnQpO3ZhciBkcz1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMix2bD1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS5oZWlnaHQsMTApLzI7''@;'; put 'put ''aWYoYWU9PT10aGlzLndvdC5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKS0xKXt2YXIgaHM9WmE/VnIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDpWci5vZmZzZXRMZWZ0OyhWbj9ocy1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMjwwOmhzK1NsKFZy''@;'; put 'put ''KStwYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMj49WVMoTGkpKSYmKHRoaXMuY29ybmVyU3R5bGVbcXJdPSIiLmNvbmNhdChNYXRoLmZsb29yKGNyK0NyK3RoaXMuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQtZHMpLCJweCIpLHRoaXMuY29ybmVyU3R5bGVbVm4/''@;'; put 'put ''ImJvcmRlckxlZnRXaWR0aCI6ImJvcmRlclJpZ2h0V2lkdGgiXT0wKX1PPT09dGhpcy53b3QuZ2V0U2V0dGluZygidG90YWxSb3dzIiktMSYmKFphP1ZyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDpWci5vZmZzZXRUb3ApK2NzKFZyKStwYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRT''@;'; put 'put ''dHlsZS5oZWlnaHQsMTApLzI+PWQzKExpKSYmKHRoaXMuY29ybmVyU3R5bGUudG9wPSIiLmNvbmNhdChNYXRoLmZsb29yKFNuK2JyK3RoaXMuY29ybmVyQ2VudGVyUG9pbnRPZmZzZXQtdmwpLCJweCIpLHRoaXMuY29ybmVyU3R5bGUuYm9yZGVyQm90dG9tV2lkdGg9MCksdGhpcy5jb3JuZXJT''@;'; put 'put ''dHlsZS5kaXNwbGF5PSJibG9jayJ9UGQoKSYmdGhpcy51cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkhhbmRsZXNQb3NpdGlvbihPLGFlLFNuLGNyLENyLGJyKX19fSx7a2V5OiJpc0VudGlyZUNvbHVtblNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbihhLGYpe3JldHVybiBhPT09dGhpcy53b3Qud3RU''@;'; put 'put ''YWJsZS5nZXRGaXJzdFJlbmRlcmVkUm93KCkmJmY9PT10aGlzLndvdC53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpfX0se2tleToiaXNFbnRpcmVSb3dTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gYT09PXRoaXMud290Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENv''@;'; put 'put ''bHVtbigpJiZmPT09dGhpcy53b3Qud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX19LHtrZXk6ImdldERpbWVuc2lvbnNGcm9tSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoLG0pe3ZhciBfPXRoaXMud290Lnd0VGFibGUsTz1fLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSxY''@;'; put 'put ''PW51bGwsYWU9bnVsbCxwZT1udWxsLGJlPW51bGwseGU9bnVsbCxWZT1udWxsLFplPW51bGwsbHQ9bnVsbDtzd2l0Y2goYSl7Y2FzZSJyb3dzIjpYPWZ1bmN0aW9uKCl7cmV0dXJuIF8uZ2V0Um93SGVhZGVyLmFwcGx5KF8sYXJndW1lbnRzKX0sYWU9ZnVuY3Rpb24oKXtyZXR1cm4gY3MuYXBw''@;'; put 'put ''bHkodm9pZCAwLGFyZ3VtZW50cyl9LHBlPSJodF9fc2VsZWN0aW9uLS1yb3dzIixWZT0idG9wIjticmVhaztjYXNlImNvbHVtbnMiOlg9ZnVuY3Rpb24oKXtyZXR1cm4gXy5nZXRDb2x1bW5IZWFkZXIuYXBwbHkoXyxhcmd1bWVudHMpfSxhZT1mdW5jdGlvbigpe3JldHVybiBTbC5hcHBseSh2''@;'; put 'put ''b2lkIDAsYXJndW1lbnRzKX0scGU9Imh0X19zZWxlY3Rpb24tLWNvbHVtbnMiLFZlPSJsZWZ0In1pZihPLmNsYXNzTGlzdC5jb250YWlucyhwZSkpe3ZhciBkdD10aGlzLndvdC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2lmKFplPVgoZixkdC1oKSxsdD1YKGQsZHQtaCks''@;'; put 'put ''IVplfHwhbHQpcmV0dXJuITE7dmFyIGd0PWl1KFplKSxqdD1pdShsdCk7cmV0dXJuIFplJiZsdCYmKGJlPWd0W1ZlXS1tW1ZlXS0xLHhlPWp0W1ZlXSthZShsdCktZ3RbVmVdKSxbWmUsYmUseGVdfXJldHVybiExfX0se2tleToiY2hhbmdlQm9yZGVyU3R5bGUiLHZhbHVlOmZ1bmN0aW9uKGEs''@;'; put 'put ''Zil7dmFyIGQ9dGhpc1thXS5zdHlsZSxoPWZbYV07IWh8fGguaGlkZT9naSh0aGlzW2FdLCJoaWRkZW4iKTooWW8odGhpc1thXSwiaGlkZGVuIikmJkpvKHRoaXNbYV0sImhpZGRlbiIpLGQuYmFja2dyb3VuZENvbG9yPWguY29sb3IsKCJ0b3AiPT09YXx8ImJvdHRvbSI9PT1hKSYmKGQuaGVp''@;'; put 'put ''Z2h0PSIiLmNvbmNhdChoLndpZHRoLCJweCIpKSwoInN0YXJ0Ij09PWF8fCJlbmQiPT09YSkmJihkLndpZHRoPSIiLmNvbmNhdChoLndpZHRoLCJweCIpKSl9fSx7a2V5OiJjaGFuZ2VCb3JkZXJUb0RlZmF1bHRTdHlsZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpc1thXS5zdHlsZTtk''@;'; put 'put ''LmJhY2tncm91bmRDb2xvcj0iIzAwMCIsZC53aWR0aD0iIi5jb25jYXQoMSwicHgiKSxkLmhlaWdodD0iIi5jb25jYXQoMSwicHgiKX19LHtrZXk6InRvZ2dsZUhpZGRlbkNsYXNzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3RoaXMuY2hhbmdlQm9yZGVyVG9EZWZhdWx0U3R5bGUoYSksZj9naSh0''@;'; put 'put ''aGlzW2FdLCJoaWRkZW4iKTpKbyh0aGlzW2FdLCJoaWRkZW4iKX19LHtrZXk6ImRpc2FwcGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRvcFN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuYm90dG9tU3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zdGFydFN0eWxlLmRpc3BsYXk9Im5vbmUi''@;'; put 'put ''LHRoaXMuZW5kU3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJub25lIixQZCgpJiYodGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3AuZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BIaXRBcmVhLmRpc3BsYXk9''@;'; put 'put ''Im5vbmUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tLmRpc3BsYXk9Im5vbmUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYS5kaXNwbGF5PSJub25lIil9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5h''@;'; put 'put ''Z2VyLmRlc3Ryb3lXaXRoT3duRXZlbnRzT25seSgpLHRoaXMubWFpbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMubWFpbil9fV0pLGx9KCk7Y29uc3QgJHJ0PUdydDtmdW5jdGlvbiBTZGUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxm''@;'; put 'put ''PW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiB5OShsKXtyZXR1cm4oeTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihj''@;'; put 'put ''KXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBNZGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtm''@;'; put 'put ''LmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLG5pdChmLmtleSksZil9fWZ1bmN0aW9uIG5pdChsKXt2YXIgYz1mdW5jdGlvbiByaXQobCxjKXtpZigib2JqZWN0''@;'; put 'put ''IiE9PXk5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXk5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUg''@;'; put 'put ''bXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT15OShjKT9jOlN0cmluZyhjKX12YXIgaWl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBl''@;'; put 'put ''aXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5zZXR0aW5ncz1jLHRoaXMuY2VsbFJhbmdlPWF8fG51bGwsdGhpcy5pbnN0YW5jZUJvcmRlcnM9e30sdGhpcy5j''@;'; put 'put ''bGFzc05hbWVzPVt0aGlzLnNldHRpbmdzLmNsYXNzTmFtZV0sdGhpcy5jbGFzc05hbWVHZW5lcmF0b3I9dGhpcy5saW5lYXJDbGFzc05hbWVHZW5lcmF0b3IodGhpcy5zZXR0aW5ncy5jbGFzc05hbWUsdGhpcy5zZXR0aW5ncy5sYXllckxldmVsKX1yZXR1cm4gZnVuY3Rpb24gdGl0KGwsYyxh''@;'; put 'put ''KXtjJiZNZGUobC5wcm90b3R5cGUsYyksYSYmTWRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImdldEJvcmRlciIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaW5zdGFuY2VCb3JkZXJzW2EuZ3VpZF18fCh0''@;'; put 'put ''aGlzLmluc3RhbmNlQm9yZGVyc1thLmd1aWRdPW5ldyAkcnQoYSx0aGlzLnNldHRpbmdzKSksdGhpcy5pbnN0YW5jZUJvcmRlcnNbYS5ndWlkXX19LHtrZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10aGlzLmNlbGxSYW5nZX19LHtrZXk6ImFkZCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3RoaXMuY2VsbFJhbmdlPXRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKGEpOnRoaXMuY2VsbFJhbmdlLmV4cGFuZChhKSx0aGlzfX0se2tleToicmVwbGFjZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtpZighdGhpcy5pc0VtcHR5''@;'; put 'put ''KCkpe2lmKHRoaXMuY2VsbFJhbmdlLmZyb20uaXNFcXVhbChhKSlyZXR1cm4gdGhpcy5jZWxsUmFuZ2UuZnJvbT1mLCEwO2lmKHRoaXMuY2VsbFJhbmdlLnRvLmlzRXF1YWwoYSkpcmV0dXJuIHRoaXMuY2VsbFJhbmdlLnRvPWYsITB9cmV0dXJuITF9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5jZWxsUmFuZ2U9bnVsbCx0aGlzfX0se2tleToiZ2V0Q29ybmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNlbGxSYW5nZS5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksZj10aGlzLmNlbGxSYW5nZS5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigp''@;'; put 'put ''O3JldHVyblthLnJvdyxhLmNvbCxmLnJvdyxmLmNvbF19fSx7a2V5OiJhZGRDbGFzc0F0Q29vcmRzIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoKXt2YXIgbT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLF89YS53dFRhYmxlLmdldENlbGwo''@;'; put 'put ''dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsQ29vcmRzKGYsZCkpO2lmKCJvYmplY3QiPT09eTkoXykpe3ZhciBPPWg7bSYmKE89dGhpcy5jbGFzc05hbWVHZW5lcmF0b3IoXyksdGhpcy5jbGFzc05hbWVzLmluY2x1ZGVzKE8pfHx0aGlzLmNsYXNzTmFtZXMucHVzaChPKSksZ2koXyxPKX1yZXR1''@;'; put 'put ''cm4gdGhpc319LHtrZXk6ImxpbmVhckNsYXNzTmFtZUdlbmVyYXRvciIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gZnVuY3Rpb24gZChoKXt2YXIgbT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LTE7aWYoMD09PWZ8fDA9PT1tKXJl''@;'; put 'put ''dHVybiBhO3ZhciBfPW0+PTA/bTpmLE89YTtpZihZbyhoLDA9PShfLT0xKT9hOiIiLmNvbmNhdChhLCItIikuY29uY2F0KF8pKSl7dmFyIGFlPV8rMTtPPSIiLmNvbmNhdChhLCItIikuY29uY2F0KGFlKX1lbHNlIE89ZChoLF8pO3JldHVybiBPfX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGEpe2lmKHRoaXMuaXNFbXB0eSgpKXRoaXMuc2V0dGluZ3MuYm9yZGVyJiZ0aGlzLmdldEJvcmRlcihhKS5kaXNhcHBlYXIoKTtlbHNle3ZhciBmPWEud3RUYWJsZS5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLGQ9YS53dFRhYmxlLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCksaD10aGlz''@;'; put 'put ''LmdldENvcm5lcnMoKSxtPWZ1bmN0aW9uIEtydChsLGMpe3JldHVybiBmdW5jdGlvbiBRcnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIEpydChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''fHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChm''@;'; put 'put ''LnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rp''@;'; put 'put ''b24gWHJ0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBTZGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJN''@;'; put 'put ''YXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFNkZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gcXJ0KCl7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oaCw0KSxfPW1bMF0sTz1t''@;'; put 'put ''WzFdLFg9bVsyXSxhZT1tWzNdLHBlPXRoaXMuc2V0dGluZ3MsYmU9cGUuaGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lLHhlPXBlLmhpZ2hsaWdodENvbHVtbkNsYXNzTmFtZSxWZT1wZS5oaWdobGlnaHRSb3dDbGFzc05hbWUsWmU9cGUuaGlnaGxpZ2h0T25seUNsb3Nlc3RIZWFkZXIsbHQ9cGUu''@;'; put 'put ''c2VsZWN0aW9uVHlwZSxkdD12b2lkIDA9PT1sdHx8WyJhY3RpdmUtaGVhZGVyIiwiaGVhZGVyIl0uaW5jbHVkZXMobHQpO2lmKGR0JiZudWxsIT09TyYmbnVsbCE9PWFlKWZvcih2YXIgZ3Q9MCxqdD0wO2p0PGQ7anQrPTEpe3ZhciBybj1hLnd0VGFibGUuY29sdW1uRmlsdGVyLnJlbmRlcmVk''@;'; put 'put ''VG9Tb3VyY2UoanQpO2lmKHJuPj1PJiZybjw9YWUpe3ZhciBYdD1hLnd0VGFibGUuZ2V0Q29sdW1uSGVhZGVycyhybikseW49WHQubGVuZ3RoLTE7WmUmJlh0Lmxlbmd0aD4xJiYoWHQ9W1h0W3luXV0pO2Zvcih2YXIgUW49MDtRbjxYdC5sZW5ndGg7UW4rPTEpe3ZhciBPcj1bXSxWcj1YdFtR''@;'; put 'put ''bl07YmUmJk9yLnB1c2goYmUpLHhlJiZPci5wdXNoKHhlKTt2YXIgWnI9YS5nZXRTZXR0aW5nKCJvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlciIscm4sUW49WmU/eW46UW4se3NlbGVjdGlvblR5cGU6bHQsY29sdW1uQ3Vyc29yOmd0LHNlbGVjdGlvbldpZHRoOmFlLU8rMSxjbGFz''@;'; put 'put ''c05hbWVzOk9yfSk7WnIhPT1ybiYmKFZyPWEud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXIoWnIsUW4pKSxnaShWcixPcil9Z3QrPTF9fWlmKG51bGwhPT1fJiZudWxsIT09WClmb3IodmFyIGlyPTAsc2k9MDtzaTxmO3NpKz0xKXt2YXIgQXI9YS53dFRhYmxlLnJvd0ZpbHRlci5yZW5kZXJlZFRv''@;'; put 'put ''U291cmNlKHNpKTtpZihkdCYmQXI+PV8mJkFyPD1YKXt2YXIgRW49YS53dFRhYmxlLmdldFJvd0hlYWRlcnMoQXIpLFRyPUVuLmxlbmd0aC0xO1plJiZFbi5sZW5ndGg+MSYmKEVuPVtFbltUcl1dKTtmb3IodmFyIFZuPTA7Vm48RW4ubGVuZ3RoO1ZuKz0xKXt2YXIgY3I9W10sQ3I9RW5bVm5d''@;'; put 'put ''O2JlJiZjci5wdXNoKGJlKSxWZSYmY3IucHVzaChWZSk7dmFyIFlyPWEuZ2V0U2V0dGluZygib25CZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXIiLEFyLFZuPVplP1RyOlZuLHtzZWxlY3Rpb25UeXBlOmx0LHJvd0N1cnNvcjppcixzZWxlY3Rpb25IZWlnaHQ6WC1fKzEsY2xhc3NOYW1lczpj''@;'; put 'put ''cn0pO1lyIT09QXImJihDcj1hLnd0VGFibGUuZ2V0Um93SGVhZGVyKFlyLFZuKSksZ2koQ3IsY3IpfWlyKz0xfWlmKG51bGwhPT1PJiZudWxsIT09YWUpZm9yKHZhciBTdD0wO1N0PGQ7U3QrPTEpe3ZhciBGdD1hLnd0VGFibGUuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoU3QpO0Fy''@;'; put 'put ''Pj1fJiZBcjw9WCYmRnQ+PU8mJkZ0PD1hZT90aGlzLnNldHRpbmdzLmNsYXNzTmFtZSYmdGhpcy5hZGRDbGFzc0F0Q29vcmRzKGEsQXIsRnQsdGhpcy5zZXR0aW5ncy5jbGFzc05hbWUsdGhpcy5zZXR0aW5ncy5tYXJrSW50ZXJzZWN0aW9ucyk6QXI+PV8mJkFyPD1YP1ZlJiZ0aGlzLmFkZENs''@;'; put 'put ''YXNzQXRDb29yZHMoYSxBcixGdCxWZSk6RnQ+PU8mJkZ0PD1hZSYmeGUmJnRoaXMuYWRkQ2xhc3NBdENvb3JkcyhhLEFyLEZ0LHhlKTt2YXIgV3Q9YS5nZXRTZXR0aW5nKCJvbkFmdGVyRHJhd1NlbGVjdGlvbiIsQXIsRnQsdGhpcy5zZXR0aW5ncy5sYXllckxldmVsKTsic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIFd0JiZ0aGlzLmFkZENsYXNzQXRDb29yZHMoYSxBcixGdCxXdCl9fWEuZ2V0U2V0dGluZygib25CZWZvcmVEcmF3Qm9yZGVycyIsaCx0aGlzLnNldHRpbmdzLmNsYXNzTmFtZSksdGhpcy5zZXR0aW5ncy5ib3JkZXImJnRoaXMuZ2V0Qm9yZGVyKGEpLmFwcGVhcihoKX19fSx7a2V5OiJk''@;'; put 'put ''ZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe09iamVjdC52YWx1ZXModGhpcy5pbnN0YW5jZUJvcmRlcnMpLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGVzdHJveSgpfSl9fV0pLGx9KCk7ZnVuY3Rpb24gYjkobCl7cmV0dXJuKGI5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJz''@;'; put 'put ''eW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5''@;'; put 'put ''cGVvZiBjfSkobCl9ZnVuY3Rpb24ga2RlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkobCx4ZGUoZi5rZXkpLGYpfX1mdW5jdGlvbiBuTCgpe3JldHVybiBuTD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gc2l0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1fOShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LG5MLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBSJChsLGMpe3JldHVybihSJD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEVkZShsKXtpZih2b2lk''@;'; put 'put ''IDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gXzkobCl7cmV0dXJuKF85PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24geGRlKGwpe3ZhciBjPWZ1bmN0aW9uIHBpdChsLGMpe2lmKCJvYmplY3QiIT09YjkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3lt''@;'; put 'put ''Ym9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09YjkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4o''@;'; put 'put ''InN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWI5KGMpP2M6U3RyaW5nKGMpfXZhciBtaXQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHVpdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZSJChsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIGNpdChsKXt2YXIgYz1mdW5jdGlvbiBkaXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hh''@;'; put 'put ''bSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGQsZj1fOShsKTtpZihjKXt2YXIgaD1fOSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gZml0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09''@;'; put 'put ''YjkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEVkZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0''@;'; put 'put ''aW9uIGEoZixkKXt2YXIgaDtyZXR1cm4gZnVuY3Rpb24gYWl0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksZnVuY3Rpb24gaGl0KGwsYyxhKXsoYz14ZGUoYykpaW4gbD9P''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hfShFZGUoaD1jLmNhbGwodGhpcyxmLG51bGwpKSwidmlzdWFsQ2VsbFJhbmdlIixudWxsKSxoLnZpc3VhbENlbGxSYW5nZT1kfHxudWxsLGgu''@;'; put 'put ''Y29tbWl0KCksaH1yZXR1cm4gZnVuY3Rpb24gbGl0KGwsYyxhKXtjJiZrZGUobC5wcm90b3R5cGUsYyksYSYma2RlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIG51''@;'; put 'put ''bGw9PT10aGlzLnZpc3VhbENlbGxSYW5nZT90aGlzLnZpc3VhbENlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZShkKTp0aGlzLnZpc3VhbENlbGxSYW5nZS5leHBhbmQoZCksdGhpc319LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpc3Vh''@;'; put 'put ''bENlbGxSYW5nZT1udWxsLG5MKF85KGEucHJvdG90eXBlKSwiY2xlYXIiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJ0cmltVG9WaXNpYmxlQ2VsbHNSYW5nZU9ubHkiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWQuZnJvbSxtPWQudG8sXz10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5Db29y''@;'; put 'put ''ZHMoaCwxKSxPPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkNvb3JkcyhtLC0xKTtpZihudWxsPT09X3x8bnVsbD09PU8pcmV0dXJuIG51bGw7aWYoXy5yb3c+Ty5yb3d8fF8uY29sPk8uY29sKXtpZigiaGVhZGVyIiE9PXRoaXMuc2V0dGluZ3MudHlwZSYmImFjdGl2ZS1oZWFkZXIiIT09dGhp''@;'; put 'put ''cy5zZXR0aW5ncy50eXBlKXJldHVybiBudWxsO189aCxPPW19cmV0dXJuIHRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKF8sXyxPKX19LHtrZXk6ImdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmgsXz10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh0aGlzLnNldHRpbmdzLnJvd0luZGV4TWFwcGVyKCksZC5yb3csaCk7aWYobnVsbD09PV8pcmV0dXJuIG51bGw7dmFyIE89dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgo''@;'; put 'put ''dGhpcy5zZXR0aW5ncy5jb2x1bW5JbmRleE1hcHBlcigpLGQuY29sLG0pO3JldHVybiBudWxsPT09Tz9udWxsOnRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhfLE8pfX0se2tleToiZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4Iix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7aWYoaDwwKXJl''@;'; put 'put ''dHVybiBoO3ZhciBfPWQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGgsbSk7cmV0dXJuImhlYWRlciIhPT10aGlzLnNldHRpbmdzLnR5cGUmJiJhY3RpdmUtaGVhZGVyIiE9PXRoaXMuc2V0dGluZ3MudHlwZXx8bnVsbCE9PV8/XzotMX19LHtrZXk6ImNvbW1pdCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtpZihudWxsPT09dGhpcy52aXN1YWxDZWxsUmFuZ2UpcmV0dXJuIHRoaXM7dmFyIGQ9dGhpcy50cmltVG9WaXNpYmxlQ2VsbHNSYW5nZU9ubHkodGhpcy52aXN1YWxDZWxsUmFuZ2UpO3JldHVybiB0aGlzLmNlbGxSYW5nZT1udWxsPT09ZD9udWxsOnRoaXMuY3JlYXRlUmVuZGVyYWJsZUNl''@;'; put 'put ''bGxSYW5nZShkLmZyb20sZC50byksdGhpc319LHtrZXk6InN5bmNXaXRoIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD0iTi1TIj09PWQuZ2V0VmVydGljYWxEaXJlY3Rpb24oKT8xOi0xLG09IlctRSI9PT1kLmdldEhvcml6b250YWxEaXJlY3Rpb24oKT8xOi0xLF89dGhpcy5nZXROZWFyZXN0''@;'; put 'put ''Tm90SGlkZGVuQ29vcmRzKGQuZnJvbS5jbG9uZSgpLm5vcm1hbGl6ZSgpLGgsbSk7aWYobnVsbCE9PV8mJmQub3ZlcmxhcHMoXykpe2lmKG51bGw9PT10aGlzLmNlbGxSYW5nZSl7dmFyIE89dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoXyk7dGhpcy5jZWxsUmFuZ2U9''@;'; put 'put ''dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoTyl9cmV0dXJuIGQuc2V0SGlnaGxpZ2h0KF8pLHRoaXN9cmV0dXJuIGQuc2V0SGlnaGxpZ2h0KGQuZnJvbSksdGhpc319LHtrZXk6ImdldENvcm5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jZWxsUmFuZ2UsaD1kLmZyb20s''@;'; put 'put ''bT1kLnRvLF89bnVsbD09PWgucm93fHxudWxsPT09bS5yb3csTz1udWxsPT09aC5jb2x8fG51bGw9PT1tLmNvbCxYPXRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhfP251bGw6TWF0aC5taW4oaC5yb3csbS5yb3cpLE8/bnVsbDpNYXRoLm1pbihoLmNvbCxtLmNvbCkpLGFlPXRoaXMu''@;'; put 'put ''c2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhfP251bGw6TWF0aC5tYXgoaC5yb3csbS5yb3cpLE8/bnVsbDpNYXRoLm1heChoLmNvbCxtLmNvbCkpO3JldHVybltYLnJvdyxYLmNvbCxhZS5yb3csYWUuY29sXX19LHtrZXk6ImdldFZpc3VhbENvcm5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGQ9dGhpcy5zZXR0aW5ncy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHModGhpcy5jZWxsUmFuZ2UuZ2V0VG9wU3RhcnRDb3JuZXIoKSksaD10aGlzLnNldHRpbmdzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3Jkcyh0aGlzLmNlbGxSYW5nZS5nZXRCb3R0b21FbmRDb3JuZXIoKSk7cmV0dXJuW2Qu''@;'; put 'put ''cm93LGQuY29sLGgucm93LGguY29sXX19LHtrZXk6ImNyZWF0ZVJlbmRlcmFibGVDZWxsUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoZCksXz10aGlzLnNldHRpbmdzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3Jk''@;'; put 'put ''cyhoKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UobSxtLF8pfX1dKSxhfShpaXQpO2NvbnN0IHc5PW1pdDtmdW5jdGlvbiAkTShsKXtyZXR1cm4oJE09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rp''@;'; put 'put ''b24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX12YXIgZ2l0PVsiYWN0aXZlSGVhZGVyQ2xh''@;'; put 'put ''c3NOYW1lIl07ZnVuY3Rpb24gQWRlKGwsYyl7dmFyIGE9T2JqZWN0LmtleXMobCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtjJiYoZj1mLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gT2JqZWN0LmdldE93''@;'; put 'put ''blByb3BlcnR5RGVzY3JpcHRvcihsLGQpLmVudW1lcmFibGV9KSksYS5wdXNoLmFwcGx5KGEsZil9cmV0dXJuIGF9ZnVuY3Rpb24gVGRlKGwpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBhPW51bGwhPWFyZ3VtZW50c1tjXT9hcmd1bWVudHNbY106e307YyUyP0Fk''@;'; put 'put ''ZShPYmplY3QoYSksITApLmZvckVhY2goZnVuY3Rpb24oZil7dml0KGwsZixhW2ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOkFkZShPYmplY3QoYSkpLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oZil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZikpfSl9cmV0dXJuIGx9ZnVuY3Rpb24gdml0KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiB5aXQobCl7dmFyIGM9ZnVuY3Rpb24gYml0KGwsYyl7aWYo''@;'; put 'put ''Im9iamVjdCIhPT0kTShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT0kTShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJp''@;'; put 'put ''bWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09JE0oYyk/YzpTdHJpbmcoYyl9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2''@;'; put 'put ''YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gS00obCl7cmV0dXJuKEtNPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0''@;'; put 'put ''eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIE1pdD1bImxheWVyTGV2ZWwiLCJhcmVhQ29ybmVyVmlzaWJs''@;'; put 'put ''ZSJdO2Z1bmN0aW9uIE9kZShsLGMpe3ZhciBhPU9iamVjdC5rZXlzKGwpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7YyYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3IobCxkKS5lbnVtZXJhYmxlfSkpLGEucHVzaC5hcHBseShhLGYpfXJldHVybiBhfWZ1bmN0aW9uIERkZShsKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj9PZGUoT2Jq''@;'; put 'put ''ZWN0KGEpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2tpdChsLGYsYVtmXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKTpPZGUoT2JqZWN0KGEpKS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKGYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGYpKX0pfXJldHVybiBsfWZ1bmN0aW9uIGtpdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gRWl0KGwpe3ZhciBjPWZ1bmN0aW9uIHhpdChsLGMpe2lmKCJvYmpl''@;'; put 'put ''Y3QiIT09S00obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09S00oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2''@;'; put 'put ''ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUtNKGMpP2M6U3RyaW5nKGMpfShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6''@;'; put 'put ''YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIHFNKGwpe3JldHVybihxTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfXZhciBJaXQ9WyJjZWxsQ29ybmVyVmlzaWJsZSJdO2Z1bmN0aW9uIElkZShs''@;'; put 'put ''LGMpe3ZhciBhPU9iamVjdC5rZXlzKGwpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7YyYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobCxk''@;'; put 'put ''KS5lbnVtZXJhYmxlfSkpLGEucHVzaC5hcHBseShhLGYpfXJldHVybiBhfWZ1bmN0aW9uIFJkZShsKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj9JZGUoT2JqZWN0KGEpLCEwKS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKGYpe1JpdChsLGYsYVtmXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKTpJZGUoT2JqZWN0KGEpKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShsLGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGYpKX0pfXJldHVybiBsfWZ1bmN0aW9uIFJpdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gTGl0KGwpe3ZhciBjPWZ1bmN0aW9uIFBpdChsLGMpe2lmKCJvYmplY3QiIT09cU0obCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cU0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXFNKGMpP2M6U3RyaW5nKGMpfShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIFhNKGwpe3JldHVybihYTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfXZhciBCaXQ9WyJib3JkZXIiLCJ2aXN1YWxDZWxsUmFuZ2UiXTtmdW5jdGlvbiBMZGUobCxjKXt2YXIgYT1P''@;'; put 'put ''YmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJs''@;'; put 'put ''ZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiBMJChsKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj9MZGUoT2JqZWN0KGEpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGYp''@;'; put 'put ''e2ppdChsLGYsYVtmXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKTpMZGUoT2JqZWN0KGEpKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShsLGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGYpKX0pfXJldHVybiBsfWZ1bmN0aW9uIGppdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24geml0KGwpe3ZhciBjPWZ1bmN0aW9uIFVpdChsLGMpe2lmKCJvYmplY3QiIT09WE0obCl8fG51bGw9PT1sKXJldHVybiBs''@;'; put 'put ''O3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09WE0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1''@;'; put 'put ''ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVhNKGMpP2M6U3RyaW5nKGMpfShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIEpNKGwpe3JldHVybihKTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFBkZShsLGMpe3ZhciBhPU9iamVjdC5rZXlzKGwpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3Zh''@;'; put 'put ''ciBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7YyYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobCxkKS5lbnVtZXJhYmxlfSkpLGEucHVzaC5hcHBseShhLGYpfXJldHVybiBhfWZ1bmN0aW9uIEZkZShsKXtm''@;'; put 'put ''b3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj9QZGUoT2JqZWN0KGEpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGYpeyRpdChsLGYsYVtmXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y''@;'; put 'put ''cz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKTpQZGUoT2JqZWN0KGEpKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGYpKX0p''@;'; put 'put ''fXJldHVybiBsfWZ1bmN0aW9uICRpdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gS2l0KGwpe3ZhciBjPWZ1bmN0aW9uIHFpdChsLGMpe2lmKCJvYmplY3QiIT09Sk0obCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIg''@;'; put 'put ''Zj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09Sk0oZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJz''@;'; put 'put ''dHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUpNKGMpP2M6U3RyaW5nKGMpfShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfVQoMzM0NzApO2Z1bmN0aW9uIFFNKGwp''@;'; put 'put ''e3JldHVybihRTT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfXZhciBlb3Q9WyJoZWFkZXJDbGFzc05hbWUiLCJyb3dDbGFzc05hbWUiLCJjb2x1bW5DbGFzc05hbWUiXTtmdW5jdGlvbiBIZGUobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0''@;'; put 'put ''T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1''@;'; put 'put ''cm4gYX1mdW5jdGlvbiBOZGUobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/SGRlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXt0b3QobCxmLGFbZl0pfSk6T2JqZWN0Lmdl''@;'; put 'put ''dE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6SGRlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiB0b3QobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIG5vdChsKXt2YXIgYz1mdW5jdGlvbiByb3QobCxjKXtpZigib2JqZWN0IiE9PVFNKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2''@;'; put 'put ''ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVFNKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9T''@;'; put 'put ''dHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1RTShjKT9jOlN0cmluZyhjKX0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1m''@;'; put 'put ''dW5jdGlvbiBlayhsKXtyZXR1cm4oZWs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5j''@;'; put 'put ''b25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBWZGUobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlT''@;'; put 'put ''eW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiB1b3QobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGNvdChs''@;'; put 'put ''KXt2YXIgYz1mdW5jdGlvbiBmb3QobCxjKXtpZigib2JqZWN0IiE9PWVrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWVrKGYpKXJldHVybiBm''@;'; put 'put ''O3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1layhjKT9jOlN0cmluZyhjKX0oYyksYyBpbiBs''@;'; put 'put ''P09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH12YXIgQmRlPUZmKCJoaWdobGlnaHQvdHlwZXMiKSxDOT1CZGUucmVnaXN0ZXIsZG90PUJkZS5nZXRJdGVtO2Z1bmN0aW9uIFM5KGws''@;'; put 'put ''Yyl7cmV0dXJuIGRvdChsKShmdW5jdGlvbiBzb3QobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/VmRlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXt1b3QobCxmLGFbZl0p''@;'; put 'put ''fSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6VmRlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVj''@;'; put 'put ''dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH0oe3R5cGU6bH0sYykpfWZ1bmN0aW9uIHRrKGwpe3JldHVybih0az0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlw''@;'; put 'put ''ZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEg0KGwpe3JldHVybiBmdW5jdGlvbiBnb3QobCl7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheShsKSlyZXR1cm4gUCQobCl9KGwpfHxmdW5jdGlvbiBtb3QobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gcG90KGwsYyl7''@;'; put 'put ''aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBQJChsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0''@;'; put 'put ''Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gUCQobCxjKX19KGwpfHxmdW5jdGlvbiBob3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0''@;'; put 'put ''dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBQJChsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3Ro''@;'; put 'put ''KSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIGpkZShsLGMpe3ZhciBhPU9iamVjdC5rZXlzKGwpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBmPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eVN5bWJvbHMobCk7YyYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobCxkKS5lbnVtZXJhYmxlfSkpLGEucHVzaC5hcHBseShhLGYpfXJldHVybiBhfWZ1bmN0aW9uIG5rKGwpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aDtjKyspe3ZhciBhPW51bGwhPWFyZ3VtZW50c1tjXT9hcmd1bWVudHNbY106e307YyUyP2pkZShPYmplY3QoYSksITApLmZvckVhY2goZnVuY3Rpb24oZil7dm90KGwsZixhW2ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''aWVzKGwsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOmpkZShPYmplY3QoYSkpLmZvckVhY2goZnVuY3Rpb24oZil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZikpfSl9cmV0dXJuIGx9ZnVuY3Rpb24gdm90''@;'; put 'put ''KGwsYyxhKXtyZXR1cm4oYz1VZGUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gemRlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3Zh''@;'; put 'put ''ciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxVZGUoZi5rZXkpLGYpfX1mdW5jdGlvbiBVZGUobCl7dmFyIGM9ZnVuY3Rpb24gX290KGwsYyl7''@;'; put 'put ''aWYoIm9iamVjdCIhPT10ayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT10ayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRv''@;'; put 'put ''UHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dGsoYyk/YzpTdHJpbmcoYyl9QzkoZUwsZnVuY3Rpb24gQ2l0KGwpe3ZhciBjPWwuYWN0aXZl''@;'; put 'put ''SGVhZGVyQ2xhc3NOYW1lLGE9ZnVuY3Rpb24gX2l0KGwsYyl7aWYobnVsbD09bClyZXR1cm57fTt2YXIgZixkLGE9ZnVuY3Rpb24gd2l0KGwsYyl7aWYobnVsbD09bClyZXR1cm57fTt2YXIgZCxoLGE9e30sZj1PYmplY3Qua2V5cyhsKTtmb3IoaD0wO2g8Zi5sZW5ndGg7aCsrKSEoYy5pbmRl''@;'; put 'put ''eE9mKGQ9ZltoXSk+PTApJiYoYVtkXT1sW2RdKTtyZXR1cm4gYX0obCxjKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2ZvcihkPTA7ZDxoLmxlbmd0aDtkKyspIShjLmluZGV4T2YoZj1oW2RdKT49MCkmJk9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChsLGYpJiYoYVtmXT1sW2ZdKX1yZXR1cm4gYX0obCxnaXQpO3JldHVybiBuZXcgdzkoVGRlKFRkZSh7aGlnaGxpZ2h0SGVhZGVyQ2xhc3NOYW1lOmN9LGEpLHt9LHtzZWxlY3Rpb25UeXBlOmVMfSkpfSksQzkodEwsZnVu''@;'; put 'put ''Y3Rpb24gT2l0KGwpe3ZhciBjPWwubGF5ZXJMZXZlbCxhPWwuYXJlYUNvcm5lclZpc2libGUsZj1mdW5jdGlvbiBBaXQobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBmLGQsYT1mdW5jdGlvbiBUaXQobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBkLGgsYT17fSxmPU9iamVjdC5r''@;'; put 'put ''ZXlzKGwpO2ZvcihoPTA7aDxmLmxlbmd0aDtoKyspIShjLmluZGV4T2YoZD1mW2hdKT49MCkmJihhW2RdPWxbZF0pO3JldHVybiBhfShsLGMpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7Zm9yKGQ9MDtkPGgu''@;'; put 'put ''bGVuZ3RoO2QrKykhKGMuaW5kZXhPZihmPWhbZF0pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGwsZikmJihhW2ZdPWxbZl0pfXJldHVybiBhfShsLE1pdCk7cmV0dXJuIG5ldyB3OShEZGUoRGRlKHtjbGFzc05hbWU6ImFyZWEiLG1hcmtJbnRlcnNl''@;'; put 'put ''Y3Rpb25zOiEwLGxheWVyTGV2ZWw6TWF0aC5taW4oYyw3KSxib3JkZXI6e3dpZHRoOjEsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2libGU6YX19LGYpLHt9LHtzZWxlY3Rpb25UeXBlOnRMfSkpfSksQzkoWU0sZnVuY3Rpb24gTml0KGwpe3ZhciBjPWwuY2VsbENvcm5lclZpc2libGUsYT1m''@;'; put 'put ''dW5jdGlvbiBGaXQobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBmLGQsYT1mdW5jdGlvbiBIaXQobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBkLGgsYT17fSxmPU9iamVjdC5rZXlzKGwpO2ZvcihoPTA7aDxmLmxlbmd0aDtoKyspIShjLmluZGV4T2YoZD1mW2hdKT49MCkmJihh''@;'; put 'put ''W2RdPWxbZF0pO3JldHVybiBhfShsLGMpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7Zm9yKGQ9MDtkPGgubGVuZ3RoO2QrKykhKGMuaW5kZXhPZihmPWhbZF0pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9w''@;'; put 'put ''ZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGwsZikmJihhW2ZdPWxbZl0pfXJldHVybiBhfShsLElpdCk7cmV0dXJuIG5ldyB3OShSZGUoUmRlKHtjbGFzc05hbWU6ImN1cnJlbnQiLGJvcmRlcjp7d2lkdGg6Mixjb2xvcjoiIzRiODlmZiIsY29ybmVyVmlzaWJsZTpjfX0sYSkse30se3NlbGVjdGlv''@;'; put 'put ''blR5cGU6WU19KSl9KSxDOShEJCxmdW5jdGlvbiBXaXQobCl7dmFyIGM9bC5ib3JkZXIsYT1sLnZpc3VhbENlbGxSYW5nZSxmPWZ1bmN0aW9uIFppdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGYsZCxhPWZ1bmN0aW9uIFlpdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGQs''@;'; put 'put ''aCxhPXt9LGY9T2JqZWN0LmtleXMobCk7Zm9yKGg9MDtoPGYubGVuZ3RoO2grKykhKGMuaW5kZXhPZihkPWZbaF0pPj0wKSYmKGFbZF09bFtkXSk7cmV0dXJuIGF9KGwsYyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s''@;'; put 'put ''cyhsKTtmb3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKSEoYy5pbmRleE9mKGY9aFtkXSk+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobCxmKSYmKGFbZl09bFtmXSl9cmV0dXJuIGF9KGwsQml0KTtyZXR1cm4gbmV3IHc5KEwkKEwkKEwkKHt9LGMpLGYpLHt9''@;'; put 'put ''LHtzZWxlY3Rpb25UeXBlOkQkfSksYSl9KSxDOShPJCxmdW5jdGlvbiBKaXQobCl7dmFyIGM9T2JqZWN0LmFzc2lnbih7fSwoZnVuY3Rpb24gWGl0KGwpe2lmKG51bGw9PWwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGRlc3RydWN0dXJlICIrbCl9KGwpLGwpKTtyZXR1cm4gbmV3IHc5''@;'; put 'put ''KEZkZShGZGUoe2NsYXNzTmFtZToiZmlsbCIsYm9yZGVyOnt3aWR0aDoxLGNvbG9yOiIjZmYwMDAwIn19LGMpLHt9LHtzZWxlY3Rpb25UeXBlOk8kfSkpfSksQzkoV00sZnVuY3Rpb24gYW90KGwpe3ZhciBjPWwuaGVhZGVyQ2xhc3NOYW1lLGE9bC5yb3dDbGFzc05hbWUsZj1sLmNvbHVtbkNs''@;'; put 'put ''YXNzTmFtZSxkPWZ1bmN0aW9uIGlvdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGYsZCxhPWZ1bmN0aW9uIG9vdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGQsaCxhPXt9LGY9T2JqZWN0LmtleXMobCk7Zm9yKGg9MDtoPGYubGVuZ3RoO2grKykhKGMuaW5kZXhPZihkPWZb''@;'; put 'put ''aF0pPj0wKSYmKGFbZF09bFtkXSk7cmV0dXJuIGF9KGwsYyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtmb3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKSEoYy5pbmRleE9mKGY9aFtkXSk+PTApJiZPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobCxmKSYmKGFbZl09bFtmXSl9cmV0dXJuIGF9KGwsZW90KTtyZXR1cm4gbmV3IHc5KE5kZShOZGUoe2NsYXNzTmFtZToiaGlnaGxpZ2h0IixoaWdobGlnaHRIZWFkZXJDbGFzc05hbWU6YyxoaWdobGlnaHRSb3dDbGFzc05hbWU6YSxo''@;'; put 'put ''aWdobGlnaHRDb2x1bW5DbGFzc05hbWU6Zn0sZCkse30se2hpZ2hsaWdodE9ubHlDbG9zZXN0SGVhZGVyOiEwLHNlbGVjdGlvblR5cGU6V019KSl9KTt2YXIgd290PWZ1bmN0aW9uKGwpe2Z1bmN0aW9uIGMoYSl7KGZ1bmN0aW9uIHlvdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxjKSx0aGlzLm9wdGlvbnM9YSx0aGlzLmxheWVyTGV2ZWw9MCx0aGlzLmNlbGw9UzkoWU0sYSksdGhpcy5maWxsPVM5KE8kLGEpLHRoaXMuYXJlYXM9bmV3IE1hcCx0aGlzLmhlYWRlcnM9''@;'; put 'put ''bmV3IE1hcCx0aGlzLmFjdGl2ZUhlYWRlcnM9bmV3IE1hcCx0aGlzLmN1c3RvbVNlbGVjdGlvbnM9W119cmV0dXJuIGZ1bmN0aW9uIGJvdChsLGMsYSl7YyYmemRlKGwucHJvdG90eXBlLGMpLGEmJnpkZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pfShjLFt7a2V5OiJpc0VuYWJsZWRGb3IiLHZhbHVlOmZ1bmN0aW9uKGYsZCl7dmFyIGg9ZjtmPT09WU0mJihoPSJjdXJyZW50Iik7dmFyIG09dGhpcy5vcHRpb25zLmRpc2FibGVkQ2VsbFNlbGVjdGlvbihkLnJvdyxkLmNvbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBtJiYobT1b''@;'; put 'put ''bV0pLCExPT09bXx8QXJyYXkuaXNBcnJheShtKSYmIW0uaW5jbHVkZXMoaCl9fSx7a2V5OiJ1c2VMYXllckxldmVsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxheWVyTGV2ZWw9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjAs''@;'; put 'put ''dGhpc319LHtrZXk6ImdldENlbGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VsbH19LHtrZXk6ImdldEZpbGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbH19LHtrZXk6ImNyZWF0ZU9yR2V0QXJlYSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZCxmPXRoaXMubGF5''@;'; put 'put ''ZXJMZXZlbDtyZXR1cm4gdGhpcy5hcmVhcy5oYXMoZik/ZD10aGlzLmFyZWFzLmdldChmKTooZD1TOSh0TCxuayh7bGF5ZXJMZXZlbDpmfSx0aGlzLm9wdGlvbnMpKSx0aGlzLmFyZWFzLnNldChmLGQpKSxkfX0se2tleToiZ2V0QXJlYXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEg0KHRo''@;'; put 'put ''aXMuYXJlYXMudmFsdWVzKCkpfX0se2tleToiY3JlYXRlT3JHZXRIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQsZj10aGlzLmxheWVyTGV2ZWw7cmV0dXJuIHRoaXMuaGVhZGVycy5oYXMoZik/ZD10aGlzLmhlYWRlcnMuZ2V0KGYpOihkPVM5KFdNLG5rKHt9LHRoaXMub3B0aW9ucykp''@;'; put 'put ''LHRoaXMuaGVhZGVycy5zZXQoZixkKSksZH19LHtrZXk6ImdldEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEg0KHRoaXMuaGVhZGVycy52YWx1ZXMoKSl9fSx7a2V5OiJjcmVhdGVPckdldEFjdGl2ZUhlYWRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZCxmPXRoaXMubGF5ZXJM''@;'; put 'put ''ZXZlbDtyZXR1cm4gdGhpcy5hY3RpdmVIZWFkZXJzLmhhcyhmKT9kPXRoaXMuYWN0aXZlSGVhZGVycy5nZXQoZik6KGQ9UzkoZUwsbmsoe30sdGhpcy5vcHRpb25zKSksdGhpcy5hY3RpdmVIZWFkZXJzLnNldChmLGQpKSxkfX0se2tleToiZ2V0QWN0aXZlSGVhZGVycyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gSDQodGhpcy5hY3RpdmVIZWFkZXJzLnZhbHVlcygpKX19LHtrZXk6ImdldEN1c3RvbVNlbGVjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEg0KHRoaXMuY3VzdG9tU2VsZWN0aW9ucy52YWx1ZXMoKSl9fSx7a2V5OiJhZGRDdXN0b21TZWxlY3Rpb24iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGYpe3RoaXMuY3VzdG9tU2VsZWN0aW9ucy5wdXNoKFM5KEQkLG5rKG5rKHt9LHRoaXMub3B0aW9ucyksZikpKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2VsbC5jbGVhcigpLHRoaXMuZmlsbC5jbGVhcigpLFJuKHRoaXMuYXJlYXMudmFsdWVzKCks''@;'; put 'put ''ZnVuY3Rpb24oZil7Zi5jbGVhcigpfSksUm4odGhpcy5oZWFkZXJzLnZhbHVlcygpLGZ1bmN0aW9uKGYpe2YuY2xlYXIoKX0pLFJuKHRoaXMuYWN0aXZlSGVhZGVycy52YWx1ZXMoKSxmdW5jdGlvbihmKXtmLmNsZWFyKCl9KX19LHtrZXk6U3ltYm9sLml0ZXJhdG9yLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuW3RoaXMuY2VsbCx0aGlzLmZpbGxdLmNvbmNhdChINCh0aGlzLmFyZWFzLnZhbHVlcygpKSxINCh0aGlzLmhlYWRlcnMudmFsdWVzKCkpLEg0KHRoaXMuYWN0aXZlSGVhZGVycy52YWx1ZXMoKSksSDQodGhpcy5jdXN0b21TZWxlY3Rpb25zKSlbU3ltYm9sLml0ZXJhdG9yXSgp''@;'; put 'put ''fX1dKSxjfSgpO2NvbnN0IENvdD13b3Q7ZnVuY3Rpb24gcmsobCl7cmV0dXJuKHJrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gWmRlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51''@;'; put 'put ''bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxrb3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBrb3QobCl7dmFyIGM9ZnVuY3Rpb24gRW90KGwsYyl7aWYoIm9iamVjdCIhPT1yayhsKXx8bnVsbD09''@;'; put 'put ''PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1yayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJp''@;'; put 'put ''bWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09cmsoYyk/YzpTdHJpbmcoYyl9dmFyIHhvdD1mdW5jdGlvbihsKXtmdW5jdGlvbiBjKGEpeyhmdW5jdGlvbiBTb3QobCxjKXtpZighKGwgaW5z''@;'; put 'put ''dGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsYyksdGhpcy5yYW5nZXM9W10sdGhpcy5jcmVhdGVDZWxsUmFuZ2U9YX1yZXR1cm4gZnVuY3Rpb24gTW90KGwsYyxhKXtjJiZaZGUobC5wcm90b3R5cGUsYyks''@;'; put 'put ''YSYmWmRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGMsW3trZXk6ImlzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnNpemUoKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y2xlYXIoKSx0aGlzLnJhbmdlcy5wdXNoKHRoaXMuY3JlYXRlQ2VsbFJhbmdlKGYpKSx0aGlzfX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5yYW5nZXMucHVzaCh0aGlzLmNyZWF0ZUNlbGxSYW5nZShmKSksdGhpc319LHtrZXk6InBvcCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5yYW5nZXMucG9wKCksdGhpc319LHtrZXk6ImN1cnJlbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVla0J5SW5kZXgoMCl9fSx7a2V5OiJwcmV2aW91cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrQnlJbmRleCgtMSl9fSx7a2V5''@;'; put 'put ''OiJpbmNsdWRlcyIsdmFsdWU6ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMucmFuZ2VzLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW5jbHVkZXMoZil9KX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlcy5sZW5ndGg9MCx0aGlzfX0se2tleToic2l6''@;'; put 'put ''ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZXMubGVuZ3RofX0se2tleToicGVla0J5SW5kZXgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGgsZj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxkPXRoaXMuc2l6ZSgpK2Yt''@;'; put 'put ''MTtyZXR1cm4gZD49MCYmKGg9dGhpcy5yYW5nZXNbZF0pLGh9fSx7a2V5OlN5bWJvbC5pdGVyYXRvcix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlc1tTeW1ib2wuaXRlcmF0b3JdKCl9fV0pLGN9KCk7Y29uc3QgQW90PXhvdDtmdW5jdGlvbiBpayhsKXtyZXR1cm4oaWs9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBZZGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFi''@;'; put 'put ''bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLERvdChmLmtleSksZil9fWZ1bmN0aW9uIERvdChsKXt2YXIgYz1mdW5jdGlvbiBJb3QobCxjKXtpZigib2JqZWN0IiE9PWlrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09''@;'; put 'put ''YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWlrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShs''@;'; put 'put ''KX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1payhjKT9jOlN0cmluZyhjKX12YXIgV2RlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBUb3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz''@;'; put 'put ''IGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5yYW5nZT1jLHRoaXMub3B0aW9ucz1hfXJldHVybiBmdW5jdGlvbiBPb3QobCxjLGEpe2MmJllkZShsLnByb3RvdHlwZSxjKSxhJiZZZGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9''@;'; put 'put ''KX0obCxbe2tleToidHJhbnNmb3JtU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxoPXRoaXMub3B0aW9ucy5jcmVhdGVDZWxsQ29vcmRzKGEsZiksbT10aGlzLnJhbmdlLmN1cnJl''@;'; put 'put ''bnQoKS5oaWdobGlnaHQsXz10aGlzLm9wdGlvbnMudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKG0pLE89Xy5yb3csWD1fLmNvbCxhZT1tLHBlPTAsYmU9MDtpZih0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVRyYW5zZm9ybVN0YXJ0IixoKSxudWxsIT09TyYmbnVsbCE9PVgpe3ZhciB4ZT10''@;'; put 'put ''aGlzLm9wdGlvbnMuY291bnRSb3dzKCksVmU9dGhpcy5vcHRpb25zLmNvdW50Q29scygpLFplPXRoaXMub3B0aW9ucy5maXhlZFJvd3NCb3R0b20oKSxsdD10aGlzLm9wdGlvbnMubWluU3BhcmVSb3dzKCksZHQ9dGhpcy5vcHRpb25zLm1pblNwYXJlQ29scygpLGd0PXRoaXMub3B0aW9ucy5h''@;'; put 'put ''dXRvV3JhcFJvdygpLGp0PXRoaXMub3B0aW9ucy5hdXRvV3JhcENvbCgpO08rYT54ZS0xP2QmJmx0PjAmJiEoWmUmJk8+PXhlLVplLTEpPyh0aGlzLnJ1bkxvY2FsSG9va3MoImluc2VydFJvd1JlcXVpcmUiLHhlKSx4ZT10aGlzLm9wdGlvbnMuY291bnRSb3dzKCkpOmp0JiYoaC5yb3c9MS14''@;'; put 'put ''ZSxoLmNvbD1YK2guY29sPT09VmUtMT8xLVZlOjEpOmp0JiZPK2gucm93PDAmJlgraC5jb2w+PTAmJihoLnJvdz14ZS0xLGguY29sPVgraC5jb2w9PT0wP1ZlLTE6LTEpLFgraC5jb2w+VmUtMT9kJiZkdD4wPyh0aGlzLnJ1bkxvY2FsSG9va3MoImluc2VydENvbFJlcXVpcmUiLFZlKSxWZT10''@;'; put 'put ''aGlzLm9wdGlvbnMuY291bnRDb2xzKCkpOmd0JiYoaC5yb3c9TytoLnJvdz09PXhlLTE/MS14ZToxLGguY29sPTEtVmUpOmd0JiZYK2guY29sPDAmJk8raC5yb3c+PTAmJihoLnJvdz1PK2gucm93PT09MD94ZS0xOi0xLGguY29sPVZlLTEpO3ZhciBybj10aGlzLm9wdGlvbnMuY3JlYXRlQ2Vs''@;'; put 'put ''bENvb3JkcyhPK2gucm93LFgraC5jb2wpO3BlPTAsYmU9MCxybi5yb3c8MD8ocGU9LTEscm4ucm93PTApOnJuLnJvdz4wJiZybi5yb3c+PXhlJiYocGU9MSxybi5yb3c9eGUtMSkscm4uY29sPDA/KGJlPS0xLHJuLmNvbD0wKTpybi5jb2w+MCYmcm4uY29sPj1WZSYmKGJlPTEscm4uY29sPVZl''@;'; put 'put ''LTEpLGFlPXRoaXMub3B0aW9ucy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMocm4pfXJldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyVHJhbnNmb3JtU3RhcnQiLGFlLHBlLGJlKSxhZX19LHtrZXk6InRyYW5zZm9ybUVuZCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLm9w''@;'; put 'put ''dGlvbnMuY3JlYXRlQ2VsbENvb3JkcyhhLGYpLGg9dGhpcy5yYW5nZS5jdXJyZW50KCksbT1oLnRvLF89MCxPPTA7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVUcmFuc2Zvcm1FbmQiLGQpO3ZhciBYPXRoaXMub3B0aW9ucy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoaC5oaWdobGlnaHQp''@;'; put 'put ''O2lmKG51bGwhPT1YLnJvdyYmbnVsbCE9PVguY29sKXt2YXIgYmU9dGhpcy5vcHRpb25zLmNvdW50Um93cygpLHhlPXRoaXMub3B0aW9ucy5jb3VudENvbHMoKSxWZT10aGlzLm9wdGlvbnMudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKGgudG8pLGR0PXRoaXMub3B0aW9ucy5jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKFZlLnJvdytkLnJvdyxWZS5jb2wrZC5jb2wpO189MCxPPTAsZHQucm93PDA/KF89LTEsZHQucm93PTApOmR0LnJvdz4wJiZkdC5yb3c+PWJlJiYoXz0xLGR0LnJvdz1iZS0xKSxkdC5jb2w8MD8oTz0tMSxkdC5jb2w9MCk6ZHQuY29sPjAmJmR0LmNvbD49eGUmJihPPTEsZHQuY29s''@;'; put 'put ''PXhlLTEpLG09dGhpcy5vcHRpb25zLnJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhkdCl9cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJUcmFuc2Zvcm1FbmQiLG0sXyxPKSxtfX1dKSxsfSgpO1RsKFdkZSxXMCk7Y29uc3QgUm90PVdkZTtmdW5jdGlvbiBHZGUobCxjKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gSG90KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBGb3QobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxt''@;'; put 'put ''LF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9''@;'; put 'put ''ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIFBvdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbCly''@;'; put 'put ''ZXR1cm4gJGRlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtp''@;'; put 'put ''ZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiAkZGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIExvdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24t''@;'; put 'put ''aXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gJGRlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gRiQobCl7cmV0dXJuKEYkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306''@;'; put 'put ''ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIFhkZSxOb3Q9WzMsMl0sVm90PVtbIm51bWJlciJdLFsibnVtYmVyIiwic3Ry''@;'; put 'put ''aW5nIl0sWyJudW1iZXIiLCJ1bmRlZmluZWQiXSxbIm51bWJlciIsInN0cmluZyIsInVuZGVmaW5lZCJdXSxOJD1TeW1ib2woInJvb3QiKSxxZGU9U3ltYm9sKCJjaGlsZCIpO2Z1bmN0aW9uIE05KGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2Fy''@;'; put 'put ''Z3VtZW50c1sxXTpOJDtpZihjIT09TiQmJmMhPT1xZGUpdGhyb3cgbmV3IEVycm9yKCJUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHVzZWQgaW50ZXJuYWxseSBvbmx5IGFuZCBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4uIik7dmFyIGE9QXJyYXkuaXNBcnJheShsKSxmPWM9PT1OJCxkPTA7aWYoYSl7''@;'; put 'put ''dmFyIGg9bFswXTswPT09bC5sZW5ndGg/ZD0xOmYmJmggaW5zdGFuY2VvZiBoVz9kPTM6ZiYmQXJyYXkuaXNBcnJheShoKT9kPU05KGgscWRlKTpsLmxlbmd0aD49MiYmbC5sZW5ndGg8PTQmJiFsLnNvbWUoZnVuY3Rpb24oXyxPKXtyZXR1cm4hVm90W09dLmluY2x1ZGVzKEYkKF8pKX0pJiYo''@;'; put 'put ''ZD0yKX1yZXR1cm4gZH1mdW5jdGlvbiBvayhsKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sYT1jLmtlZXBEaXJlY3Rpb24sZj12b2lkIDAhPT1hJiZhLGQ9Yy5wcm9wVG9Db2w7aWYoIU5vdC5pbmNsdWRlcyhsKSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHNlbGVjdGlvbiByYW5nZXMgc2NoZW1hIHR5cGUgd2FzIHByb3ZpZGVkLiIpO3JldHVybiBmdW5jdGlvbihoKXt2YXIgbT0zPT09bCxfPW0/aC5mcm9tLnJvdzpoWzBdLE89bT9oLmZyb20uY29sOmhbMV0sWD1tP2gudG8ucm93OmhbMl0sYWU9bT9o''@;'; put 'put ''LnRvLmNvbDpoWzNdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkJiYoInN0cmluZyI9PXR5cGVvZiBPJiYoTz1kKE8pKSwic3RyaW5nIj09dHlwZW9mIGFlJiYoYWU9ZChhZSkpKSxMbChYKSYmKFg9XyksTGwoYWUpJiYoYWU9TyksIWYpe3ZhciBwZT1fLGJlPU8seGU9WCxWZT1hZTtfPU1hdGgu''@;'; put 'put ''bWluKHBlLHhlKSxPPU1hdGgubWluKGJlLFZlKSxYPU1hdGgubWF4KHBlLHhlKSxhZT1NYXRoLm1heChiZSxWZSl9cmV0dXJuW18sTyxYLGFlXX19ZnVuY3Rpb24gTjQobCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBsJiZsPj0wJiZsPChhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXT9hcmd1bWVudHNbMV06MS8wKX1mdW5jdGlvbiBhayhsKXtyZXR1cm4oYWs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYm''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBKZGUobCxjKXtyZXR1cm4gZnVuY3Rpb24gWW90KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9''@;'; put 'put ''KGwpfHxmdW5jdGlvbiBab3QobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCww''@;'; put 'put ''PT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJiht''@;'; put 'put ''PWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIFVvdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gUWRlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu''@;'; put 'put ''Zy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86''@;'; put 'put ''Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBRZGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIHpvdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwg''@;'; put 'put ''bm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gUWRlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0''@;'; put 'put ''dXJuIGZ9ZnVuY3Rpb24gZWhlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxL''@;'; put 'put ''b3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBLb3QobCl7dmFyIGM9ZnVuY3Rpb24gcW90KGwsYyl7aWYoIm9iamVjdCIhPT1hayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7''@;'; put 'put ''aWYoIm9iamVjdCIhPT1hayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09''@;'; put 'put ''YWsoYyk/YzpTdHJpbmcoYyl9dmFyIHRoZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyxhKXt2YXIgZj10aGlzOyhmdW5jdGlvbiBHb3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRo''@;'; put 'put ''aXMsbCksdGhpcy5zZXR0aW5ncz1jLHRoaXMudGFibGVQcm9wcz1hLHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLnNlbGVjdGVkQnlDb3JuZXI9ITEsdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyPW5ldyBTZXQsdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyPW5ldyBTZXQsdGhpcy5zZWxlY3Rl''@;'; put 'put ''ZFJhbmdlPW5ldyBBb3QoZnVuY3Rpb24oZCxoLG0pe3JldHVybiBmLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKGQsaCxtKX0pLHRoaXMuaGlnaGxpZ2h0PW5ldyBDb3Qoe2hlYWRlckNsYXNzTmFtZTpjLmN1cnJlbnRIZWFkZXJDbGFzc05hbWUsYWN0aXZlSGVhZGVyQ2xhc3NOYW1lOmMu''@;'; put 'put ''YWN0aXZlSGVhZGVyQ2xhc3NOYW1lLHJvd0NsYXNzTmFtZTpjLmN1cnJlbnRSb3dDbGFzc05hbWUsY29sdW1uQ2xhc3NOYW1lOmMuY3VycmVudENvbENsYXNzTmFtZSxkaXNhYmxlZENlbGxTZWxlY3Rpb246ZnVuY3Rpb24oaCxtKXtyZXR1cm4gZi50YWJsZVByb3BzLmlzRGlzYWJsZWRDZWxs''@;'; put 'put ''U2VsZWN0aW9uKGgsbSl9LGNlbGxDb3JuZXJWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuaXNDZWxsQ29ybmVyVmlzaWJsZS5hcHBseShmLGFyZ3VtZW50cyl9LGFyZWFDb3JuZXJWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuaXNBcmVhQ29ybmVyVmlzaWJsZS5hcHBseShmLGFyZ3Vt''@;'; put 'put ''ZW50cyl9LHZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkczpmdW5jdGlvbihoKXtyZXR1cm4gZi50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhoKX0scmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzOmZ1bmN0aW9uKGgpe3JldHVybiBmLnRhYmxlUHJvcHMucmVuZGVyYWJsZVRvVmlz''@;'; put 'put ''dWFsQ29vcmRzKGgpfSxjcmVhdGVDZWxsQ29vcmRzOmZ1bmN0aW9uKGgsbSl7cmV0dXJuIGYudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGgsbSl9LGNyZWF0ZUNlbGxSYW5nZTpmdW5jdGlvbihoLG0sXyl7cmV0dXJuIGYudGFibGVQcm9wcy5jcmVhdGVDZWxsUmFuZ2UoaCxtLF8pfSxy''@;'; put 'put ''b3dJbmRleE1hcHBlcjpmdW5jdGlvbigpe3JldHVybiBmLnRhYmxlUHJvcHMucm93SW5kZXhNYXBwZXIoKX0sY29sdW1uSW5kZXhNYXBwZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZi50YWJsZVByb3BzLmNvbHVtbkluZGV4TWFwcGVyKCl9fSksdGhpcy50cmFuc2Zvcm1hdGlvbj1uZXcgUm90KHRo''@;'; put 'put ''aXMuc2VsZWN0ZWRSYW5nZSx7Y291bnRSb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIGYudGFibGVQcm9wcy5jb3VudFJvd3NUcmFuc2xhdGVkKCl9LGNvdW50Q29sczpmdW5jdGlvbigpe3JldHVybiBmLnRhYmxlUHJvcHMuY291bnRDb2xzVHJhbnNsYXRlZCgpfSx2aXN1YWxUb1JlbmRlcmFibGVD''@;'; put 'put ''b29yZHM6ZnVuY3Rpb24oaCl7cmV0dXJuIGYudGFibGVQcm9wcy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoaCl9LHJlbmRlcmFibGVUb1Zpc3VhbENvb3JkczpmdW5jdGlvbihoKXtyZXR1cm4gZi50YWJsZVByb3BzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhoKX0sY3JlYXRlQ2VsbENv''@;'; put 'put ''b3JkczpmdW5jdGlvbihoLG0pe3JldHVybiBmLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhoLG0pfSxmaXhlZFJvd3NCb3R0b206ZnVuY3Rpb24oKXtyZXR1cm4gYy5maXhlZFJvd3NCb3R0b219LG1pblNwYXJlUm93czpmdW5jdGlvbigpe3JldHVybiBjLm1pblNwYXJlUm93c30sbWlu''@;'; put 'put ''U3BhcmVDb2xzOmZ1bmN0aW9uKCl7cmV0dXJuIGMubWluU3BhcmVDb2xzfSxhdXRvV3JhcFJvdzpmdW5jdGlvbigpe3JldHVybiBjLmF1dG9XcmFwUm93fSxhdXRvV3JhcENvbDpmdW5jdGlvbigpe3JldHVybiBjLmF1dG9XcmFwQ29sfX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxI''@;'; put 'put ''b29rKCJiZWZvcmVUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gZi5ydW5Mb2NhbEhvb2tzLmFwcGx5KGYsWyJiZWZvcmVNb2RpZnlUcmFuc2Zvcm1T''@;'; put 'put ''dGFydCJdLmNvbmNhdChoKSl9KSx0aGlzLnRyYW5zZm9ybWF0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4g''@;'; put 'put ''Zi5ydW5Mb2NhbEhvb2tzLmFwcGx5KGYsWyJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0Il0uY29uY2F0KGgpKX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVUcmFuc2Zvcm1FbmQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcg''@;'; put 'put ''QXJyYXkoZCksbT0wO208ZDttKyspaFttXT1hcmd1bWVudHNbbV07cmV0dXJuIGYucnVuTG9jYWxIb29rcy5hcHBseShmLFsiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRW5kIl0uY29uY2F0KGgpKX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxIb29rKCJhZnRlclRyYW5zZm9ybUVuZCIs''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gZi5ydW5Mb2NhbEhvb2tzLmFwcGx5KGYsWyJhZnRlck1vZGlmeVRyYW5zZm9ybUVuZCJdLmNvbmNhdChoKSl9KSx0aGlzLnRyYW5z''@;'; put 'put ''Zm9ybWF0aW9uLmFkZExvY2FsSG9vaygiaW5zZXJ0Um93UmVxdWlyZSIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gZi5ydW5Mb2NhbEhvb2tzLmFwcGx5KGYsWyJpbnNlcnRS''@;'; put 'put ''b3dSZXF1aXJlIl0uY29uY2F0KGgpKX0pLHRoaXMudHJhbnNmb3JtYXRpb24uYWRkTG9jYWxIb29rKCJpbnNlcnRDb2xSZXF1aXJlIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3JldHVy''@;'; put 'put ''biBmLnJ1bkxvY2FsSG9va3MuYXBwbHkoZixbImluc2VydENvbFJlcXVpcmUiXS5jb25jYXQoaCkpfSl9cmV0dXJuIGZ1bmN0aW9uICRvdChsLGMsYSl7YyYmZWhlKGwucHJvdG90eXBlLGMpLGEmJmVoZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pfShsLFt7a2V5OiJnZXRTZWxlY3RlZFJhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVkUmFuZ2V9fSx7a2V5OiJiZWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmluUHJvZ3Jlc3M9ITB9fSx7a2V5OiJmaW5pc2giLHZhbHVlOmZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNlbGVjdGlvbkZpbmlzaGVkIixBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSYW5nZSkpLHRoaXMuaW5Qcm9ncmVzcz0hMX19LHtrZXk6ImlzSW5Qcm9ncmVzcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pblByb2dyZXNzfX0se2tleToic2V0''@;'; put 'put ''UmFuZ2VTdGFydCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGg9Im11bHRpcGxlIj09PXRoaXMuc2V0dGluZ3Muc2VsZWN0aW9uTW9kZSxtPUxsKGYpP3RoaXMudGFibGVQcm9wcy5nZXRT''@;'; put 'put ''aG9ydGN1dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCk6ZixfPWEucm93PDAsTz1hLmNvbDwwLFg9XyYmTyxhZT1hLmNsb25lKCk7dGhpcy5zZWxlY3RlZEJ5Q29ybmVyPVgsdGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZXRSYW5nZVN0YXJ0Ii5jb25jYXQoZD8iT25seSI6IiIpLGFlKSwo''@;'; put 'put ''IWh8fGgmJiFtJiZMbChmKSkmJnRoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuc2VsZWN0ZWRSYW5nZS5hZGQoYWUpLDA9PT10aGlzLmdldExheWVyTGV2ZWwoKSYmKHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5jbGVhcigpLHRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5jbGVh''@;'; put 'put ''cigpKSwhWCYmTyYmdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSksIVgmJl8mJnRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLGR8fHRoaXMuc2V0UmFuZ2VFbmQoYSl9fSx7a2V5OiJzZXRSYW5nZVN0''@;'; put 'put ''YXJ0T25seSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0aGlzLnNldFJhbmdlU3RhcnQoYSxmLCEwKX19LHtrZXk6InNldFJhbmdlRW5kIix2YWx1ZTpmdW5jdGlvbihhKXtpZighdGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKSl7dmFyIGY9YS5jbG9uZSgpO3RoaXMucnVuTG9jYWxIb29rcygi''@;'; put 'put ''YmVmb3JlU2V0UmFuZ2VFbmQiLGYpLHRoaXMuYmVnaW4oKTt2YXIgZD10aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpOyJzaW5nbGUiIT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlJiZkLnNldFRvKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGYucm93LGYuY29sKSks''@;'; put 'put ''dGhpcy5oaWdobGlnaHQuZ2V0Q2VsbCgpLmNsZWFyKCksdGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKFlNLGQuaGlnaGxpZ2h0KSYmdGhpcy5oaWdobGlnaHQuZ2V0Q2VsbCgpLmFkZCh0aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLmhpZ2hsaWdodCkuY29tbWl0KCkuc3luY1dpdGgo''@;'; put 'put ''ZCk7dmFyIGg9dGhpcy5nZXRMYXllckxldmVsKCk7aDx0aGlzLmhpZ2hsaWdodC5sYXllckxldmVsJiYoUm4odGhpcy5oaWdobGlnaHQuZ2V0QXJlYXMoKSxmdW5jdGlvbihaZSl7WmUuY2xlYXIoKX0pLFJuKHRoaXMuaGlnaGxpZ2h0LmdldEhlYWRlcnMoKSxmdW5jdGlvbihaZSl7WmUuY2xl''@;'; put 'put ''YXIoKX0pLFJuKHRoaXMuaGlnaGxpZ2h0LmdldEFjdGl2ZUhlYWRlcnMoKSxmdW5jdGlvbihaZSl7WmUuY2xlYXIoKX0pKSx0aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKGgpO3ZhciBtPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QXJlYSgpLF89dGhpcy5oaWdobGlnaHQuY3JlYXRl''@;'; put 'put ''T3JHZXRIZWFkZXIoKSxPPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QWN0aXZlSGVhZGVyKCk7aWYobS5jbGVhcigpLF8uY2xlYXIoKSxPLmNsZWFyKCksdGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKHRMLGQuaGlnaGxpZ2h0KSYmKHRoaXMuaXNNdWx0aXBsZSgpfHxoPj0xKSYmKG0u''@;'; put 'put ''YWRkKGQuZnJvbSkuYWRkKGQudG8pLmNvbW1pdCgpLDE9PT1oKSl7dmFyIFg9dGhpcy5zZWxlY3RlZFJhbmdlLnByZXZpb3VzKCk7dGhpcy5oaWdobGlnaHQudXNlTGF5ZXJMZXZlbChoLTEpLmNyZWF0ZU9yR2V0QXJlYSgpLmFkZChYLmZyb20pLmNvbW1pdCgpLnN5bmNXaXRoKFgpLHRoaXMu''@;'; put 'put ''aGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoaCl9aWYodGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKFdNLGQuaGlnaGxpZ2h0KSl7dmFyIGFlPTA9PT10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzVHJhbnNsYXRlZCgpLHBlPTA9PT10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzVHJhbnNsYXRl''@;'; put 'put ''ZCgpLGJlPWQ7KGFlfHxwZSkmJihiZT1kLmNsb25lKCkpLGFlJiYoYmUuZnJvbS5yb3c9LTEpLHBlJiYoYmUuZnJvbS5jb2w9LTEpLCJzaW5nbGUiPT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlPyh0aGlzLmlzU2VsZWN0ZWRCeUFueUhlYWRlcigpJiZiZS5mcm9tLm5vcm1hbGl6ZSgp''@;'; put 'put ''LF8uYWRkKGJlLmZyb20pLmNvbW1pdCgpKTpfLmFkZChiZS5mcm9tKS5hZGQoYmUudG8pLmNvbW1pdCgpLHRoaXMuaXNFbnRpcmVSb3dTZWxlY3RlZCgpJiZ0aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCk9PT1kLmdldFdpZHRoKCkmJk8uYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKGQuZnJvbS5yb3csLTEpKS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoZC50by5yb3csLTEpKS5jb21taXQoKSx0aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoKSYmdGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpPT09ZC5nZXRIZWlnaHQoKSYmTy5hZGQo''@;'; put 'put ''dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLTEsZC5mcm9tLmNvbCkpLmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcygtMSxkLnRvLmNvbCkpLmNvbW1pdCgpfXRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJTZXRSYW5nZUVuZCIsYSl9fX0se2tleToiaXNNdWx0''@;'; put 'put ''aXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1nNSghdGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKS5pc1NpbmdsZSgpKTtyZXR1cm4gdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24iLGEpLGEudmFsdWV9fSx7a2V5OiJ0cmFuc2Zvcm1TdGFydCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oYSxmKXt0aGlzLnNldFJhbmdlU3RhcnQodGhpcy50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm1TdGFydChhLGYsYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSkpfX0se2tleToidHJhbnNmb3JtRW5kIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhLGYpe3RoaXMuc2V0UmFuZ2VFbmQodGhpcy50cmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm1FbmQoYSxmKSl9fSx7a2V5OiJnZXRMYXllckxldmVsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVkUmFuZ2Uuc2l6ZSgpLTF9fSx7a2V5OiJpc1NlbGVjdGVkIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnNlbGVjdGVkUmFuZ2UuaXNFbXB0eSgpfX0se2tleToiaXNTZWxlY3RlZEJ5Um93SGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdl''@;'; put 'put ''dExheWVyTGV2ZWwoKTtyZXR1cm4hdGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIoYSkmJnRoaXMuaXNFbnRpcmVSb3dTZWxlY3RlZChhKX19LHtrZXk6ImlzRW50aXJlUm93U2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TGF5ZXJMZXZlbCgpO3JldHVybi0xPT09YT90aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuc2l6ZT4wOnRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5oYXMoYSl9fSx7a2V5OiJpc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TGF5ZXJMZXZlbCgpO3JldHVybiF0aGlzLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiZ0aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoYSl9fSx7a2V5OiJpc0VudGly''@;'; put 'put ''ZUNvbHVtblNlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtyZXR1cm4tMT09PWE/dGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLnNpemU+MDp0''@;'; put 'put ''aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuaGFzKGEpfX0se2tleToiaXNTZWxlY3RlZEJ5QW55SGVhZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigtMSl8fHRoaXMuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKC0xKXx8dGhpcy5pc1Nl''@;'; put 'put ''bGVjdGVkQnlDb3JuZXIoKX19LHtrZXk6ImlzU2VsZWN0ZWRCeUNvcm5lciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZEJ5Q29ybmVyfX0se2tleToiaW5JblNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRSYW5nZS5pbmNsdWRl''@;'; put 'put ''cyhhKX19LHtrZXk6ImlzQ2VsbENvcm5lclZpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYmIXRoaXMudGFibGVQcm9wcy5pc0VkaXRvck9wZW5lZCgpJiYhdGhpcy5pc011bHRpcGxlKCl9fSx7a2V5OiJpc0FyZWFDb3JuZXJWaXNpYmxl''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4oIU51bWJlci5pc0ludGVnZXIoYSl8fGE9PT10aGlzLmdldExheWVyTGV2ZWwoKSkmJnRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYmIXRoaXMudGFibGVQcm9wcy5pc0VkaXRvck9wZW5lZCgpJiZ0aGlzLmlzTXVsdGlwbGUoKX19LHtrZXk6ImNs''@;'; put 'put ''ZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuaGlnaGxpZ2h0LmNsZWFyKCl9fSx7a2V5OiJkZXNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzU2VsZWN0ZWQoKSYmKHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmNsZWFyKCksdGhpcy5y''@;'; put 'put ''dW5Mb2NhbEhvb2tzKCJhZnRlckRlc2VsZWN0IikpfX0se2tleToic2VsZWN0QWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sZj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1sxXSYmYXJndW1lbnRzWzFdLGQ9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLGg9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpO2lmKGF8fGZ8fDAhPT1kJiYwIT09aCl7dmFyIG09dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoZj8tMTowLGE/LTE6MCksXz10aGlz''@;'; put 'put ''LnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhkLTEsaC0xKTt0aGlzLmNsZWFyKCksdGhpcy5zZXRSYW5nZVN0YXJ0T25seShtKSx0aGlzLnNlbGVjdGVkQnlSb3dIZWFkZXIuYWRkKHRoaXMuZ2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKHRoaXMu''@;'; put 'put ''Z2V0TGF5ZXJMZXZlbCgpKSx0aGlzLnNldFJhbmdlRW5kKF8pLHRoaXMuZmluaXNoKCl9fX0se2tleToic2VsZWN0Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZD1NOShhKTtpZigxPT09ZClyZXR1cm4hMTtpZigwPT09ZCl0aHJvdyBuZXcgRXJyb3IoT2woWGRlfHwoWGRl''@;'; put 'put ''PWZ1bmN0aW9uIFdvdChsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShjKX19KSl9KFsiVW5zdXBwb3J0ZWQgZm9ybWF0IG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2VzIHdh''@;'; put 'put ''cyBwYXNzZWQuIFRvIHNlbGVjdCBjZWxscyBwYXNzIFxuICAgICAgICB0aGUgY29vcmRpbmF0ZXMgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIChbW3Jvd1N0YXJ0LCBjb2x1bW5TdGFydC9jb2x1bW5Qcm9wU3RhcnQsIHJvd0VuZCwgXG4gICAgICAgIGNvbHVtbkVuZC9jb2x1bW5Qcm9wRW5kXV0p''@;'; put 'put ''IG9yIGFzIGFuIGFycmF5IG9mIENlbGxSYW5nZSBvYmplY3RzLiJdLFsiVW5zdXBwb3J0ZWQgZm9ybWF0IG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2VzIHdhcyBwYXNzZWQuIFRvIHNlbGVjdCBjZWxscyBwYXNzXFx4MjBcbiAgICAgICAgdGhlIGNvb3JkaW5hdGVzIGFzIGFuIGFycmF5IG9mIGFy''@;'; put 'put ''cmF5cyAoW1tyb3dTdGFydCwgY29sdW1uU3RhcnQvY29sdW1uUHJvcFN0YXJ0LCByb3dFbmQsXFx4MjBcbiAgICAgICAgY29sdW1uRW5kL2NvbHVtblByb3BFbmRdXSkgb3IgYXMgYW4gYXJyYXkgb2YgQ2VsbFJhbmdlIG9iamVjdHMuIl0pKSkpO3ZhciBoPW9rKGQse3Byb3BUb0NvbDpmdW5j''@;'; put 'put ''dGlvbihhZSl7cmV0dXJuIGYudGFibGVQcm9wcy5wcm9wVG9Db2woYWUpfSxrZWVwRGlyZWN0aW9uOiEwfSksbT10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksXz10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksTz0hYS5zb21lKGZ1bmN0aW9uKFgpe3ZhciBwZT1KZGUoaChYKSw0KSx4''@;'; put 'put ''ZT1wZVsxXSxWZT1wZVsyXSxaZT1wZVszXTtyZXR1cm4hKE40KHBlWzBdLG0pJiZONCh4ZSxfKSYmTjQoVmUsbSkmJk40KFplLF8pKX0pO3JldHVybiBPJiYodGhpcy5jbGVhcigpLFJuKGEsZnVuY3Rpb24oWCl7dmFyIHBlPUpkZShoKFgpLDQpLFZlPXBlWzJdLFplPXBlWzNdO2Yuc2V0UmFu''@;'; put 'put ''Z2VTdGFydE9ubHkoZi50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMocGVbMF0scGVbMV0pLCExKSxmLnNldFJhbmdlRW5kKGYudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKFZlLFplKSksZi5maW5pc2goKX0pKSxPfX0se2tleToic2VsZWN0Q29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmEsZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LTEsaD0ic3RyaW5nIj09dHlwZW9mIGE/dGhpcy50YWJsZVByb3BzLnBy''@;'; put 'put ''b3BUb0NvbChhKTphLG09InN0cmluZyI9PXR5cGVvZiBmP3RoaXMudGFibGVQcm9wcy5wcm9wVG9Db2woZik6ZixfPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKSxPPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSxYPU40KGgsXykmJk40KG0sXyk7cmV0dXJuIFgmJih0aGlzLnNldFJh''@;'; put 'put ''bmdlU3RhcnRPbmx5KHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGQsaCkpLHRoaXMuc2V0UmFuZ2VFbmQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoTy0xLG0pKSx0aGlzLmZpbmlzaCgpKSxYfX0se2tleToic2VsZWN0Um93cyIsdmFsdWU6ZnVuY3Rpb24oYSl7''@;'; put 'put ''dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmEsZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LTEsaD10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksbT10aGlzLnRhYmxl''@;'; put 'put ''UHJvcHMuY291bnRDb2xzKCksXz1ONChhLGgpJiZONChmLGgpO3JldHVybiBfJiYodGhpcy5zZXRSYW5nZVN0YXJ0T25seSh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhhLGQpKSx0aGlzLnNldFJhbmdlRW5kKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGYsbS0x''@;'; put 'put ''KSksdGhpcy5maW5pc2goKSksX319LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5oaWdobGlnaHQuZ2V0Q3VzdG9tU2VsZWN0aW9ucygpLmZvckVhY2goZnVuY3Rpb24oWCl7WC5jb21taXQoKX0pLHRoaXMuaXNTZWxlY3RlZCgpKXt2YXIgZj10aGlzLmhpZ2hsaWdo''@;'; put 'put ''dC5nZXRDZWxsKCksZD10aGlzLmdldExheWVyTGV2ZWwoKTtmLmNvbW1pdCgpLnN5bmNXaXRoKHRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkpO2Zvcih2YXIgaD0wO2g8dGhpcy5zZWxlY3RlZFJhbmdlLnNpemUoKTtoKz0xKXt0aGlzLmhpZ2hsaWdodC51c2VMYXllckxldmVsKGgpO3Zh''@;'; put 'put ''ciBtPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QXJlYSgpLF89dGhpcy5oaWdobGlnaHQuY3JlYXRlT3JHZXRIZWFkZXIoKSxPPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZU9yR2V0QWN0aXZlSGVhZGVyKCk7bS5jb21taXQoKSxfLmNvbW1pdCgpLE8uY29tbWl0KCl9dGhpcy5oaWdobGlnaHQu''@;'; put 'put ''dXNlTGF5ZXJMZXZlbChkKX19fV0pLGx9KCk7VGwodGhlLFcwKTtjb25zdCBYb3Q9dGhlO3ZhciBsaz1GZigiY2VsbFR5cGVzIiksSm90PWxrLnJlZ2lzdGVyLFFvdD1say5nZXRJdGVtLG5oZT1say5oYXNJdGVtLGVhdD1say5nZXROYW1lcztmdW5jdGlvbiBWJChsKXtpZighbmhlKGwpKXRo''@;'; put 'put ''cm93IEVycm9yKCdZb3UgZGVjbGFyZWQgY2VsbCB0eXBlICInLmNvbmNhdChsLCciIGFzIGEgc3RyaW5nIHRoYXQgaXMgbm90IG1hcHBlZCB0byBhIGtub3duIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgQ2VsbCB0eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIG1hcHBlZCB0''@;'; put 'put ''byBhbiBvYmplY3QgcmVnaXN0ZXJlZCBieVxuICAgICAgICAgICAgICAgICAiSGFuZHNvbnRhYmxlLmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlIiBtZXRob2QnKSk7cmV0dXJuIFFvdChsKX1mdW5jdGlvbiBCZChsLGMpeyJzdHJpbmciIT10eXBlb2YgbCYmKGw9KGM9bCkuQ0VMTF9UWVBF''@;'; put 'put ''KTt2YXIgZj1jLmVkaXRvcixkPWMucmVuZGVyZXIsaD1jLnZhbGlkYXRvcjtmJiZZMChsLGYpLGQmJk5oKGwsZCksaCYmVTcobCxoKSxKb3QobCxjKX1mdW5jdGlvbiBvTChsLGMpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTps''@;'; put 'put ''LGY9InN0cmluZyI9PXR5cGVvZiBjLnR5cGU/ViQoYy50eXBlKTpjLnR5cGU7aWYobC5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzJiZtYShjLGZ1bmN0aW9uKGgsbSl7bC5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzLmRlbGV0ZShtKX0pLHBhKGYpKXthPT09bCYmIWwu''@;'; put 'put ''X2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcyYmKGwuX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcz1uZXcgU2V0KTt2YXIgZD17fTttYShmLGZ1bmN0aW9uKGgsbSl7dmFyIF87KGZ1bmN0aW9uIHRhdChsLGMpe3ZhciBhO3JldHVybiJDRUxMX1RZUEUiIT09bCYmKChudWxs''@;'; put 'put ''PT09KGE9Yy5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzKXx8dm9pZCAwPT09YT92b2lkIDA6YS5oYXMobCkpfHwhU3MoYyxsKSl9KShtLGEpJiYoZFttXT1oLG51bGw9PT0oXz1sLl9hdXRvbWF0aWNhbGx5QXNzaWduZWRNZXRhUHJvcHMpfHx2b2lkIDA9PT1ffHxfLmFkZChtKSl9''@;'; put 'put ''KSxydShsLGQpfX1mdW5jdGlvbiBhTChsKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihsKSYmbD49MH1mdW5jdGlvbiBsTChsLGMpe2lmKCFsKCkpdGhyb3cgbmV3IEVycm9yKCJBc3NlcnRpb24gZmFpbGVkOiAiLmNvbmNhdChjKSl9ZnVuY3Rpb24gc0wobCl7cmV0dXJuIG51bGw9PWx9ZnVu''@;'; put 'put ''Y3Rpb24gQiQobCl7cmV0dXJuKEIkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29u''@;'; put 'put ''c3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9Y29uc3QgcmhlPWZ1bmN0aW9uKCl7cmV0dXJue19hdXRvbWF0aWNhbGx5QXNzaWduZWRNZXRhUHJvcHM6dm9pZCAwLGFjdGl2ZUhlYWRlckNsYXNzTmFtZToiaHRfX2FjdGl2ZV9o''@;'; put 'put ''aWdobGlnaHQiLGFsbG93RW1wdHk6ITAsYWxsb3dIdG1sOiExLGFsbG93SW5zZXJ0Q29sdW1uOiEwLGFsbG93SW5zZXJ0Um93OiEwLGFsbG93SW52YWxpZDohMCxhbGxvd1JlbW92ZUNvbHVtbjohMCxhbGxvd1JlbW92ZVJvdzohMCxhdXRvQ29sdW1uU2l6ZTp2b2lkIDAsYXV0b1Jvd1NpemU6''@;'; put 'put ''dm9pZCAwLGF1dG9XcmFwQ29sOiExLGF1dG9XcmFwUm93OiExLGJpbmRSb3dzV2l0aEhlYWRlcnM6dm9pZCAwLGNlbGw6W10sY2VsbHM6dm9pZCAwLGNoZWNrZWRUZW1wbGF0ZTp2b2lkIDAsY2xhc3NOYW1lOnZvaWQgMCxjb2xIZWFkZXJzOm51bGwsY29sbGFwc2libGVDb2x1bW5zOnZvaWQg''@;'; put 'put ''MCxjb2x1bW5IZWFkZXJIZWlnaHQ6dm9pZCAwLGNvbHVtbnM6dm9pZCAwLGNvbHVtblNvcnRpbmc6dm9pZCAwLGNvbHVtblN1bW1hcnk6dm9pZCAwLGNvbFdpZHRoczp2b2lkIDAsY29tbWVudGVkQ2VsbENsYXNzTmFtZToiaHRDb21tZW50Q2VsbCIsY29tbWVudHM6ITEsY29udGV4dE1lbnU6''@;'; put 'put ''dm9pZCAwLGNvcHlhYmxlOiEwLGNvcHlQYXN0ZTohMCxjb3JyZWN0Rm9ybWF0OiExLGN1cnJlbnRDb2xDbGFzc05hbWU6dm9pZCAwLGN1cnJlbnRIZWFkZXJDbGFzc05hbWU6Imh0X19oaWdobGlnaHQiLGN1cnJlbnRSb3dDbGFzc05hbWU6dm9pZCAwLGN1c3RvbUJvcmRlcnM6ITEsZGF0YTp2''@;'; put 'put ''b2lkIDAsZGF0YVNjaGVtYTp2b2lkIDAsZGF0ZUZvcm1hdDoiREQvTU0vWVlZWSIsZGF0ZVBpY2tlckNvbmZpZzp2b2lkIDAsZGVmYXVsdERhdGU6dm9pZCAwLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ITEsZHJhZ1RvU2Nyb2xsOiEwLGRyb3Bkb3duTWVudTp2b2lkIDAsZWRpdG9yOnZvaWQg''@;'; put 'put ''MCxlbnRlckJlZ2luc0VkaXRpbmc6ITAsZW50ZXJNb3Zlczp7Y29sOjAscm93OjF9LGZpbGxIYW5kbGU6e2F1dG9JbnNlcnRSb3c6ITF9LGZpbHRlcjohMCxmaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlOiExLGZpbHRlcnM6dm9pZCAwLGZpeGVkQ29sdW1uc0xlZnQ6MCxmaXhlZENvbHVtbnNTdGFy''@;'; put 'put ''dDowLGZpeGVkUm93c0JvdHRvbTowLGZpeGVkUm93c1RvcDowLGZvcm11bGFzOnZvaWQgMCxmcmFnbWVudFNlbGVjdGlvbjohMSxoZWlnaHQ6dm9pZCAwLGhpZGRlbkNvbHVtbnM6dm9pZCAwLGhpZGRlblJvd3M6dm9pZCAwLGludmFsaWRDZWxsQ2xhc3NOYW1lOiJodEludmFsaWQiLGlzRW1w''@;'; put 'put ''dHlDb2w6ZnVuY3Rpb24oYyl7dmFyIGEsZjtmb3IoYT0wLGY9dGhpcy5jb3VudFJvd3MoKTthPGY7YSsrKWlmKCExPT09d3UodGhpcy5nZXREYXRhQXRDZWxsKGEsYykpKXJldHVybiExO3JldHVybiEwfSxpc0VtcHR5Um93OmZ1bmN0aW9uKGMpe3ZhciBhLGYsZCxoO2ZvcihhPTAsZj10aGlz''@;'; put 'put ''LmNvdW50Q29scygpO2E8ZjthKyspaWYoITE9PT13dShkPXRoaXMuZ2V0RGF0YUF0Q2VsbChjLGEpKSlyZXR1cm4ib2JqZWN0Ij09PUIkKGQpJiYoaD10aGlzLmdldENlbGxNZXRhKGMsYSksakkodGhpcy5nZXRTY2hlbWEoKVtoLnByb3BdLGQpKTtyZXR1cm4hMH0sbGFiZWw6dm9pZCAwLGxh''@;'; put 'put ''bmd1YWdlOiJlbi1VUyIsbGF5b3V0RGlyZWN0aW9uOiJpbmhlcml0IixsaWNlbnNlS2V5OnZvaWQgMCxsb2NhbGU6ImVuLVVTIixtYW51YWxDb2x1bW5GcmVlemU6dm9pZCAwLG1hbnVhbENvbHVtbk1vdmU6dm9pZCAwLG1hbnVhbENvbHVtblJlc2l6ZTp2b2lkIDAsbWFudWFsUm93TW92ZTp2''@;'; put 'put ''b2lkIDAsbWFudWFsUm93UmVzaXplOnZvaWQgMCxtYXhDb2xzOjEvMCxtYXhSb3dzOjEvMCxtZXJnZUNlbGxzOiExLG1pbkNvbHM6MCxtaW5Sb3dzOjAsbWluU3BhcmVDb2xzOjAsbWluU3BhcmVSb3dzOjAsbXVsdGlDb2x1bW5Tb3J0aW5nOnZvaWQgMCxuZXN0ZWRIZWFkZXJzOnZvaWQgMCxu''@;'; put 'put ''ZXN0ZWRSb3dzOnZvaWQgMCxub1dvcmRXcmFwQ2xhc3NOYW1lOiJodE5vV3JhcCIsbnVtZXJpY0Zvcm1hdDp2b2lkIDAsb2JzZXJ2ZURPTVZpc2liaWxpdHk6ITAsb3V0c2lkZUNsaWNrRGVzZWxlY3RzOiEwLHBlcnNpc3RlbnRTdGF0ZTp2b2lkIDAscGxhY2Vob2xkZXI6dm9pZCAwLHBsYWNl''@;'; put 'put ''aG9sZGVyQ2VsbENsYXNzTmFtZToiaHRQbGFjZWhvbGRlciIscHJldmVudE92ZXJmbG93OiExLHByZXZlbnRXaGVlbDohMSxyZWFkT25seTohMSxyZWFkT25seUNlbGxDbGFzc05hbWU6Imh0RGltbWVkIixyZW5kZXJBbGxSb3dzOnZvaWQgMCxyZW5kZXJlcjp2b2lkIDAscm93SGVhZGVyczp2''@;'; put 'put ''b2lkIDAscm93SGVhZGVyV2lkdGg6dm9pZCAwLHJvd0hlaWdodHM6dm9pZCAwLHNlYXJjaDohMSxzZWxlY3Rpb25Nb2RlOiJtdWx0aXBsZSIsc2VsZWN0T3B0aW9uczp2b2lkIDAsc2tpcENvbHVtbk9uUGFzdGU6ITEsc2tpcFJvd09uUGFzdGU6ITEsc29ydEJ5UmVsZXZhbmNlOiEwLHNvdXJj''@;'; put 'put ''ZTp2b2lkIDAsc3RhcnRDb2xzOjUsc3RhcnRSb3dzOjUsc3RyZXRjaEg6Im5vbmUiLHN0cmljdDp2b2lkIDAsdGFibGVDbGFzc05hbWU6dm9pZCAwLHRhYk1vdmVzOntyb3c6MCxjb2w6MX0sdGl0bGU6dm9pZCAwLHRyaW1Ecm9wZG93bjohMCx0cmltUm93czp2b2lkIDAsdHJpbVdoaXRlc3Bh''@;'; put 'put ''Y2U6ITAsdHlwZToidGV4dCIsdW5jaGVja2VkVGVtcGxhdGU6dm9pZCAwLHVuZG86dm9pZCAwLHZhbGlkYXRvcjp2b2lkIDAsdmlld3BvcnRDb2x1bW5SZW5kZXJpbmdPZmZzZXQ6ImF1dG8iLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OiJhdXRvIix2aXNpYmxlUm93czoxMCx3aWR0aDp2''@;'; put 'put ''b2lkIDAsd29yZFdyYXA6ITB9fTtmdW5jdGlvbiBzayhsKXtyZXR1cm4oc2s9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBpaGUobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1P''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiBvaGUobCl7Zm9yKHZh''@;'; put 'put ''ciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/aWhlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXtyYXQobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6aWhlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1''@;'; put 'put ''cm4gbH1mdW5jdGlvbiByYXQobCxjLGEpe3JldHVybihjPXNoZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBhaGUobCxjKXtmb3IodmFyIGE9MDth''@;'; put 'put ''PGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHNoZShmLmtleSksZil9fWZ1bmN0aW9uIGxoZShsLGMsYSl7cmV0''@;'; put 'put ''dXJuIGMmJmFoZShsLnByb3RvdHlwZSxjKSxhJiZhaGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxsfWZ1bmN0aW9uIHNoZShsKXt2YXIgYz1mdW5jdGlvbiBpYXQobCxjKXtpZigib2JqZWN0IiE9PXNrKGwpfHxudWxsPT09bClyZXR1''@;'; put 'put ''cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXNrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUg''@;'; put 'put ''dmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1zayhjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB1aGUobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs''@;'; put 'put ''bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgYWF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXt1aGUodGhpcyxsKSx0aGlzLm1ldGFDdG9yPWZ1bmN0aW9uIG9hdCgpe3JldHVybiBsaGUoZnVuY3Rpb24gbCgpe3VoZSh0aGlzLGwpfSl9KCksdGhpcy5tZXRhPXRoaXMubWV0YUN0b3Iu''@;'; put 'put ''cHJvdG90eXBlLHJ1KHRoaXMubWV0YSxyaGUoKSksdGhpcy5tZXRhLmluc3RhbmNlPWN9cmV0dXJuIGxoZShsLFt7a2V5OiJnZXRNZXRhQ29uc3RydWN0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YUN0b3J9fSx7a2V5OiJnZXRNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLm1ldGF9fSx7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZjtydSh0aGlzLm1ldGEsYSksb0wodGhpcy5tZXRhLG9oZShvaGUoe30sYSkse30se3R5cGU6bnVsbCE9PShmPWEudHlwZSkmJnZvaWQgMCE9PWY/Zjp0aGlzLm1ldGEudHlwZX0pLGEpfX1d''@;'; put 'put ''KSxsfSgpO2Z1bmN0aW9uIHVrKGwpe3JldHVybih1az0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGNoZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsdWF0KGYua2V5KSxmKX19ZnVuY3Rpb24gdWF0KGwpe3ZhciBjPWZ1bmN0aW9uIGNhdChsLGMpe2lmKCJvYmplY3QiIT09dWsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBh''@;'; put 'put ''PWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dWsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1y''@;'; put 'put ''ZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXVrKGMpP2M6U3RyaW5nKGMpfXZhciBmYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyFmdW5jdGlvbiBsYXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxsKTt2YXIgYT1jLmdldE1ldGFDb25zdHJ1Y3RvcigpO3RoaXMubWV0YT1uZXcgYX1yZXR1cm4gZnVuY3Rpb24gc2F0KGwsYyxhKXtjJiZjaGUobC5wcm90b3R5cGUsYyksYSYmY2hlKGwsYSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImdldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YX19LHtrZXk6InVwZGF0ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGEpe3J1KHRoaXMubWV0YSxhKSxvTCh0aGlz''@;'; put 'put ''Lm1ldGEsYSxhKX19XSksbH0oKTtmdW5jdGlvbiBjayhsKXtyZXR1cm4oY2s9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBmaGUobCl7cmV0dXJuIGZ1bmN0aW9uIG1hdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBqJChsKX0obCl8fGZ1''@;'; put 'put ''bmN0aW9uIHBhdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBoYXQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGok''@;'; put 'put ''KGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1l''@;'; put 'put ''bnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBqJChsLGMpfX0obCl8fGZ1bmN0aW9uIGRhdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNl''@;'; put 'put ''LlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGokKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJy''@;'; put 'put ''YXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gZGhlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEw''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx5YXQoZi5rZXkpLGYpfX1mdW5jdGlvbiB5YXQobCl7dmFyIGM9ZnVuY3Rpb24gYmF0KGwsYyl7aWYoIm9iamVjdCIhPT1jayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3Zh''@;'; put 'put ''ciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1jayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGws''@;'; put 'put ''InN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Y2soYyk/YzpTdHJpbmcoYyl9dmFyIHokPWZ1bmN0aW9uKGwpe2Z1bmN0aW9uIGMoYSl7KGZ1bmN0aW9uIGdhdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm''@;'; put 'put ''dW5jdGlvbiIpfSkodGhpcyxjKSx0aGlzLnZhbHVlRmFjdG9yeT1hLHRoaXMuZGF0YT1bXSx0aGlzLmluZGV4PVtdLHRoaXMuaG9sZXM9bmV3IFNldH1yZXR1cm4gZnVuY3Rpb24gdmF0KGwsYyxhKXtjJiZkaGUobC5wcm90b3R5cGUsYyksYSYmZGhlKGwsYSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGMsW3trZXk6Im9idGFpbiIsdmFsdWU6ZnVuY3Rpb24oZil7bEwoZnVuY3Rpb24oKXtyZXR1cm4gYUwoZil9LCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyLiIpO3ZhciBoLGQ9dGhpcy5fZ2V0U3RvcmFnZUluZGV4QnlLZXko''@;'; put 'put ''Zik7aWYoZD49MCl2b2lkIDA9PT0oaD10aGlzLmRhdGFbZF0pJiYoaD10aGlzLnZhbHVlRmFjdG9yeShmKSx0aGlzLmRhdGFbZF09aCk7ZWxzZSBpZihoPXRoaXMudmFsdWVGYWN0b3J5KGYpLHRoaXMuaG9sZXMuc2l6ZT4wKXt2YXIgbT10aGlzLmhvbGVzLnZhbHVlcygpLm5leHQoKS52YWx1''@;'; put 'put ''ZTt0aGlzLmhvbGVzLmRlbGV0ZShtKSx0aGlzLmRhdGFbbV09aCx0aGlzLmluZGV4W2ZdPW19ZWxzZSB0aGlzLmRhdGEucHVzaChoKSx0aGlzLmluZGV4W2ZdPXRoaXMuZGF0YS5sZW5ndGgtMTtyZXR1cm4gaH19LHtrZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oZil7dmFyIGQ9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7bEwoZnVuY3Rpb24oKXtyZXR1cm4gYUwoZil8fHNMKGYpfSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlciBvciBudWxsL3VuZGVmaW5lZCBhcmd1bWVudC4iKTtmb3IodmFyIGg9W10sbT10aGlz''@;'; put 'put ''LmRhdGEubGVuZ3RoLF89MDtfPGQ7XysrKWgucHVzaChtK18pLHRoaXMuZGF0YS5wdXNoKHZvaWQgMCk7dmFyIE89c0woZik/dGhpcy5pbmRleC5sZW5ndGg6Zjt0aGlzLmluZGV4PVtdLmNvbmNhdChmaGUodGhpcy5pbmRleC5zbGljZSgwLE8pKSxoLGZoZSh0aGlzLmluZGV4LnNsaWNlKE8p''@;'; put 'put ''KSl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKGYpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO2xMKGZ1bmN0aW9uKCl7cmV0dXJuIGFMKGYpfHxzTChmKX0sIkV4cGVjdGluZyBhbiB1bnNpZ25lZCBudW1iZXIg''@;'; put 'put ''b3IgbnVsbC91bmRlZmluZWQgYXJndW1lbnQuIik7Zm9yKHZhciBoPXRoaXMuaW5kZXguc3BsaWNlKHNMKGYpP3RoaXMuaW5kZXgubGVuZ3RoLWQ6ZixkKSxtPTA7bTxoLmxlbmd0aDttKyspe3ZhciBfPWhbbV07Im51bWJlciI9PXR5cGVvZiBfJiZ0aGlzLmhvbGVzLmFkZChfKX19fSx7a2V5''@;'; put 'put ''OiJzaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEubGVuZ3RoLXRoaXMuaG9sZXMuc2l6ZX19LHtrZXk6InZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZj10aGlzO3JldHVybiBEMSh0aGlzLmRhdGEsZnVuY3Rpb24oZCxoKXtyZXR1cm4hZi5ob2xlcy5oYXMoaCl9''@;'; put 'put ''KVtTeW1ib2wuaXRlcmF0b3JdKCl9fSx7a2V5OiJlbnRyaWVzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZj1bXSxkPTA7ZDx0aGlzLmRhdGEubGVuZ3RoO2QrKyl7dmFyIGg9dGhpcy5fZ2V0S2V5QnlTdG9yYWdlSW5kZXgoZCk7LTEhPT1oJiZmLnB1c2goW2gsdGhpcy5kYXRhW2RdXSl9''@;'; put 'put ''dmFyIG09MDtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2lmKG08Zi5sZW5ndGgpe3ZhciBPPWZbbV07cmV0dXJuIG0rPTEse3ZhbHVlOk8sZG9uZTohMX19cmV0dXJue2RvbmU6ITB9fX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRhdGE9W10sdGhpcy5pbmRleD1bXSx0''@;'; put 'put ''aGlzLmhvbGVzLmNsZWFyKCl9fSx7a2V5OiJfZ2V0U3RvcmFnZUluZGV4QnlLZXkiLHZhbHVlOmZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmluZGV4Lmxlbmd0aD5mP3RoaXMuaW5kZXhbZl06LTF9fSx7a2V5OiJfZ2V0S2V5QnlTdG9yYWdlSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGYpe3JldHVy''@;'; put 'put ''biB0aGlzLmluZGV4LmluZGV4T2YoZil9fSx7a2V5OlN5bWJvbC5pdGVyYXRvcix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVudHJpZXMoKX19XSksY30oKTtmdW5jdGlvbiBmayhsKXtyZXR1cm4oZms9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5j''@;'; put 'put ''dGlvbiBoaGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLENhdChmLmtleSks''@;'; put 'put ''Zil9fWZ1bmN0aW9uIENhdChsKXt2YXIgYz1mdW5jdGlvbiBTYXQobCxjKXtpZigib2JqZWN0IiE9PWZrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0''@;'; put 'put ''IiE9PWZrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1mayhjKT9jOlN0''@;'; put 'put ''cmluZyhjKX12YXIgTWF0PVsiZGF0YSIsIndpZHRoIl0sa2F0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXt2YXIgYT10aGlzOyhmdW5jdGlvbiBfYXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp''@;'; put 'put ''b24iKX0pKHRoaXMsbCksdGhpcy5nbG9iYWxNZXRhPWMsdGhpcy5tZXRhcz1uZXcgeiQoZnVuY3Rpb24oKXtyZXR1cm4gYS5fY3JlYXRlTWV0YSgpfSl9cmV0dXJuIGZ1bmN0aW9uIHdhdChsLGMsYSl7YyYmaGhlKGwucHJvdG90eXBlLGMpLGEmJmhoZShsLGEpLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMuZ2V0TWV0YShhKTtydShkLGYpLG9MKGQsZil9fSx7a2V5OiJjcmVhdGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhpcy5tZXRh''@;'; put 'put ''cy5pbnNlcnQoYSxmKX19LHtrZXk6InJlbW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0aGlzLm1ldGFzLnJlbW92ZShhLGYpfX0se2tleToiZ2V0TWV0YSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWV0YXMub2J0YWluKGEpfX0se2tleToiZ2V0TWV0YUNvbnN0cnVj''@;'; put 'put ''dG9yIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tZXRhcy5vYnRhaW4oYSkuY29uc3RydWN0b3J9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWV0YXMuY2xlYXIoKX19LHtrZXk6Il9jcmVhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiBuYXQobCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO2Z1bmN0aW9uIGEoKXt9ZjMoYSxsKTtmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKylhLnByb3RvdHlwZVtjW2ZdXT12b2lkIDA7cmV0dXJuIGF9KHRo''@;'; put 'put ''aXMuZ2xvYmFsTWV0YS5nZXRNZXRhQ29uc3RydWN0b3IoKSxNYXQpLnByb3RvdHlwZX19XSksbH0oKTtmdW5jdGlvbiBkayhsKXtyZXR1cm4oZGs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5''@;'; put 'put ''cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBFYXQobCl7cmV0dXJuIGZ1bmN0aW9uIE9hdChsKXtp''@;'; put 'put ''ZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBVJChsKX0obCl8fGZ1bmN0aW9uIFRhdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBBYXQobCxj''@;'; put 'put ''KXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIFUkKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJT''@;'; put 'put ''ZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBVJChsLGMpfX0obCl8fGZ1bmN0aW9uIHhhdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQg''@;'; put 'put ''YXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFUkKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5n''@;'; put 'put ''dGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gcGhlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25m''@;'; put 'put ''aWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxSYXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBSYXQobCl7dmFyIGM9ZnVuY3Rpb24gTGF0KGwsYyl7aWYoIm9iamVjdCIhPT1kayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9''@;'; put 'put ''bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1kayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJl''@;'; put 'put ''dHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09ZGsoYyk/YzpTdHJpbmcoYyl9dmFyIFBhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7dmFyIGE9dGhpczsoZnVuY3Rpb24gRGF0KGwsYyl7aWYoIShsIGluc3RhbmNlb2Yg''@;'; put 'put ''YykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuY29sdW1uTWV0YT1jLHRoaXMubWV0YXM9bmV3IHokKGZ1bmN0aW9uKCl7cmV0dXJuIGEuX2NyZWF0ZVJvdygpfSl9cmV0dXJuIGZ1bmN0aW9uIElhdChsLGMs''@;'; put 'put ''YSl7YyYmcGhlKGwucHJvdG90eXBlLGMpLGEmJnBoZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJ1cGRhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9dGhpcy5nZXRNZXRhKGEsZik7cnUoaCxkKSxv''@;'; put 'put ''TChoLGQpfX0se2tleToiY3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihhLGYpe3RoaXMubWV0YXMuaW5zZXJ0KGEsZil9fSx7a2V5OiJjcmVhdGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGEsZil7Zm9yKHZhciBkPTA7ZDx0aGlzLm1ldGFzLnNpemUoKTtkKyspdGhpcy5tZXRhcy5vYnRhaW4o''@;'; put 'put ''ZCkuaW5zZXJ0KGEsZil9fSx7a2V5OiJyZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhpcy5tZXRhcy5yZW1vdmUoYSxmKX19LHtrZXk6InJlbW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtmb3IodmFyIGQ9MDtkPHRoaXMubWV0YXMuc2l6ZSgpO2QrKyl0aGlzLm1ldGFz''@;'; put 'put ''Lm9idGFpbihkKS5yZW1vdmUoYSxmKX19LHtrZXk6ImdldE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD10aGlzLm1ldGFzLm9idGFpbihhKS5vYnRhaW4oZik7cmV0dXJuIHZvaWQgMD09PWQ/aDpoW2RdfX0se2tleToic2V0TWV0YSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCl7''@;'; put 'put ''dmFyIG0sXz10aGlzLm1ldGFzLm9idGFpbihhKS5vYnRhaW4oZik7bnVsbD09PShtPV8uX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcyl8fHZvaWQgMD09PW18fG0uZGVsZXRlKGQpLF9bZF09aH19LHtrZXk6InJlbW92ZU1ldGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXtkZWxldGUg''@;'; put 'put ''dGhpcy5tZXRhcy5vYnRhaW4oYSkub2J0YWluKGYpW2RdfX0se2tleToiZ2V0TWV0YXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGY9QXJyYXkuZnJvbSh0aGlzLm1ldGFzLnZhbHVlcygpKSxkPTA7ZDxmLmxlbmd0aDtkKyspYS5wdXNoLmFwcGx5KGEsRWF0KGZbZF0udmFsdWVz''@;'; put 'put ''KCkpKTtyZXR1cm4gYX19LHtrZXk6ImdldE1ldGFzQXRSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe2xMKGZ1bmN0aW9uKCl7cmV0dXJuIGFMKGEpfSwiRXhwZWN0aW5nIGFuIHVuc2lnbmVkIG51bWJlci4iKTt2YXIgZj1uZXcgTWFwKHRoaXMubWV0YXMpO3JldHVybiBmLmhhcyhhKT9BcnJheS5m''@;'; put 'put ''cm9tKGYuZ2V0KGEpLnZhbHVlcygpKTpbXX19LHtrZXk6ImNsZWFyQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZXRhcy5jbGVhcigpfX0se2tleToiX2NyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBuZXcgeiQoZnVuY3Rpb24oZil7cmV0dXJuIGEu''@;'; put 'put ''X2NyZWF0ZU1ldGEoZil9KX19LHtrZXk6Il9jcmVhdGVNZXRhIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3KHRoaXMuY29sdW1uTWV0YS5nZXRNZXRhQ29uc3RydWN0b3IoYSkpfX1dKSxsfSgpO2Z1bmN0aW9uIGhrKGwpe3JldHVybihoaz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIG1oZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsTmF0KGYua2V5KSxmKX19ZnVuY3Rpb24gTmF0KGwpe3ZhciBjPWZ1bmN0aW9uIFZhdChsLGMpe2lmKCJvYmplY3QiIT09aGsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09aGsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4i''@;'; put 'put ''c3ltYm9sIj09PWhrKGMpP2M6U3RyaW5nKGMpfXZhciBnaGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPXRoaXMsZj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1syXT9hcmd1bWVudHNbMl06W107KGZ1bmN0aW9uIEZhdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmhvdD1jLHRoaXMuZ2xvYmFsTWV0YT1uZXcg''@;'; put 'put ''YWF0KGMpLHRoaXMudGFibGVNZXRhPW5ldyBmYXQodGhpcy5nbG9iYWxNZXRhKSx0aGlzLmNvbHVtbk1ldGE9bmV3IGthdCh0aGlzLmdsb2JhbE1ldGEpLHRoaXMuY2VsbE1ldGE9bmV3IFBhdCh0aGlzLmNvbHVtbk1ldGEpLGQuZm9yRWFjaChmdW5jdGlvbihoKXtyZXR1cm4gbmV3IGgoYSl9''@;'; put 'put ''KSx0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YShmKX1yZXR1cm4gZnVuY3Rpb24gSGF0KGwsYyxhKXtjJiZtaGUobC5wcm90b3R5cGUsYyksYSYmbWhlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImdldEdsb2JhbE1l''@;'; put 'put ''dGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2xvYmFsTWV0YS5nZXRNZXRhKCl9fSx7a2V5OiJ1cGRhdGVHbG9iYWxNZXRhIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YShhKX19LHtrZXk6ImdldFRhYmxlTWV0YSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50YWJsZU1ldGEuZ2V0TWV0YSgpfX0se2tleToidXBkYXRlVGFibGVNZXRhIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnRhYmxlTWV0YS51cGRhdGVNZXRhKGEpfX0se2tleToiZ2V0Q29sdW1uTWV0YSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29sdW1u''@;'; put 'put ''TWV0YS5nZXRNZXRhKGEpfX0se2tleToidXBkYXRlQ29sdW1uTWV0YSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0aGlzLmNvbHVtbk1ldGEudXBkYXRlTWV0YShhLGYpfX0se2tleToiZ2V0Q2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD1kLnZpc3VhbFJvdyxtPWQudmlzdWFs''@;'; put 'put ''Q29sdW1uLF89dGhpcy5jZWxsTWV0YS5nZXRNZXRhKGEsZik7cmV0dXJuIF8udmlzdWFsUm93PWgsXy52aXN1YWxDb2w9bSxfLnJvdz1hLF8uY29sPWYsdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckdldENlbGxNZXRhIixfKSxffX0se2tleToiZ2V0Q2VsbE1ldGFLZXlWYWx1ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oYSxmLGQpe2lmKCJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXNzZWQgY2VsbCBtZXRhIG9iamVjdCBrZXkgaXMgbm90IGEgc3RyaW5nIik7cmV0dXJuIHRoaXMuY2VsbE1ldGEuZ2V0TWV0YShhLGYsZCl9fSx7a2V5OiJzZXRDZWxsTWV0YSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oYSxmLGQsaCl7dGhpcy5jZWxsTWV0YS5zZXRNZXRhKGEsZixkLGgpfX0se2tleToidXBkYXRlQ2VsbE1ldGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt0aGlzLmNlbGxNZXRhLnVwZGF0ZU1ldGEoYSxmLGQpfX0se2tleToicmVtb3ZlQ2VsbE1ldGEiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGEsZixkKXt0aGlzLmNlbGxNZXRhLnJlbW92ZU1ldGEoYSxmLGQpfX0se2tleToiZ2V0Q2VsbHNNZXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbGxNZXRhLmdldE1ldGFzKCl9fSx7a2V5OiJnZXRDZWxsc01ldGFBdFJvdyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2VsbE1ldGEuZ2V0TWV0YXNBdFJvdyhhKX19LHtrZXk6ImNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5jZWxsTWV0YS5jcmVhdGVSb3coYSxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSl9fSx7a2V5OiJyZW1v''@;'; put 'put ''dmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuY2VsbE1ldGEucmVtb3ZlUm93KGEsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEpfX0se2tleToiY3JlYXRlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNlbGxNZXRhLmNyZWF0ZUNvbHVtbihhLGYpLHRoaXMuY29sdW1uTWV0YS5jcmVhdGVDb2x1bW4oYSxmKX19LHtrZXk6InJlbW92ZUNvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjE7dGhpcy5jZWxsTWV0YS5yZW1vdmVDb2x1bW4oYSxmKSx0aGlzLmNvbHVtbk1ldGEucmVtb3ZlQ29sdW1uKGEsZil9fSx7a2V5OiJjbGVhckNlbGxzQ2FjaGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5j''@;'; put 'put ''ZWxsTWV0YS5jbGVhckNhY2hlKCl9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY2VsbE1ldGEuY2xlYXJDYWNoZSgpLHRoaXMuY29sdW1uTWV0YS5jbGVhckNhY2hlKCl9fV0pLGx9KCk7ZnVuY3Rpb24gcGsobCl7cmV0dXJuKHBrPSJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBl''@;'; put 'put ''PyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gdmhlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobCx6YXQoZi5rZXkpLGYpfX1mdW5jdGlvbiB6YXQobCl7dmFyIGM9ZnVuY3Rpb24gVWF0KGwsYyl7aWYoIm9iamVjdCIhPT1wayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2Fs''@;'; put 'put ''bChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1wayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIp''@;'; put 'put ''O3JldHVybiJzeW1ib2wiPT09cGsoYyk/YzpTdHJpbmcoYyl9VGwoZ2hlLFcwKTt2YXIgWmF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXt2YXIgYT10aGlzOyhmdW5jdGlvbiBCYXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBh''@;'; put 'put ''IGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5tZXRhTWFuYWdlcj1jLHRoaXMubWV0YVN5bmNNZW1vPW5ldyBNYXAsYy5hZGRMb2NhbEhvb2soImFmdGVyR2V0Q2VsbE1ldGEiLGZ1bmN0aW9uKGYpe3JldHVybiBhLmV4dGVuZENlbGxNZXRhKGYpfSksdW8uZ2V0U2luZ2xl''@;'; put 'put ''dG9uKCkuYWRkKCJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKGYpe2YmJmEubWV0YVN5bmNNZW1vLmNsZWFyKCl9LHRoaXMubWV0YU1hbmFnZXIuaG90KX1yZXR1cm4gZnVuY3Rpb24gamF0KGwsYyxhKXtjJiZ2aGUobC5wcm90b3R5cGUsYyksYSYmdmhlKGwsYSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImV4dGVuZENlbGxNZXRhIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZixkPWEucm93LGg9YS5jb2w7aWYobnVsbD09PShmPXRoaXMubWV0YVN5bmNNZW1vLmdldChkKSl8fHZvaWQgMD09PWZ8fCFmLmhhcyhoKSl7dmFy''@;'; put 'put ''IG09YS52aXN1YWxSb3csXz1hLnZpc3VhbENvbCxPPXRoaXMubWV0YU1hbmFnZXIuaG90LFg9Ty5jb2xUb1Byb3AoXyk7YS5wcm9wPVgsTy5ydW5Ib29rcygiYmVmb3JlR2V0Q2VsbE1ldGEiLG0sXyxhKTt2YXIgYWU9U3MoYSwidHlwZSIpP2EudHlwZTpudWxsLHBlPVBsKGEuY2VsbHMpP2Eu''@;'; put 'put ''Y2VsbHMoZCxoLFgpOm51bGw7aWYoYWUpaWYocGUpe3ZhciBiZTtwZS50eXBlPW51bGwhPT0oYmU9cGUudHlwZSkmJnZvaWQgMCE9PWJlP2JlOmFlfWVsc2UgcGU9e3R5cGU6YWV9O3BlJiZ0aGlzLm1ldGFNYW5hZ2VyLnVwZGF0ZUNlbGxNZXRhKGQsaCxwZSksTy5ydW5Ib29rcygiYWZ0ZXJH''@;'; put 'put ''ZXRDZWxsTWV0YSIsbSxfLGEpLHRoaXMubWV0YVN5bmNNZW1vLmhhcyhkKXx8dGhpcy5tZXRhU3luY01lbW8uc2V0KGQsbmV3IFNldCksdGhpcy5tZXRhU3luY01lbW8uZ2V0KGQpLmFkZChoKX19fV0pLGx9KCk7ZnVuY3Rpb24gbWsobCl7cmV0dXJuKG1rPSJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJz''@;'; put 'put ''eW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24geWhlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkobCxHYXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBHYXQobCl7dmFyIGM9ZnVuY3Rpb24gJGF0KGwsYyl7aWYoIm9iamVjdCIhPT1tayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChs''@;'; put 'put ''LGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1tayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3Jl''@;'; put 'put ''dHVybiJzeW1ib2wiPT09bWsoYyk/YzpTdHJpbmcoYyl9dmFyIEthdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIFlhdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSko''@;'; put 'put ''dGhpcyxsKSx0aGlzLm1ldGFNYW5hZ2VyPWMsdGhpcy51c2FnZVRyYWNrZXI9bmV3IFNldCx0aGlzLnByb3BEZXNjcmlwdG9ycz1uZXcgTWFwKFtbImZpeGVkQ29sdW1uc0xlZnQiLHt0YXJnZXQ6ImZpeGVkQ29sdW1uc1N0YXJ0IixvbkNoYW5nZTpmdW5jdGlvbihmKXtpZih0aGlzLm1ldGFN''@;'; put 'put ''YW5hZ2VyLmhvdC5pc1J0bCgpJiYiZml4ZWRDb2x1bW5zTGVmdCI9PT1mKXRocm93IG5ldyBFcnJvcigiVGhlIGBmaXhlZENvbHVtbnNMZWZ0YCBpcyBub3Qgc3VwcG9ydGVkIGZvciBSVEwuIFBsZWFzZSB1c2Ugb3B0aW9uIGBmaXhlZENvbHVtbnNTdGFydGAuIik7aWYodGhpcy51c2FnZVRy''@;'; put 'put ''YWNrZXIuaGFzKCJmaXhlZENvbHVtbnNMZWZ0IikmJnRoaXMudXNhZ2VUcmFja2VyLmhhcygiZml4ZWRDb2x1bW5zU3RhcnQiKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgZml4ZWRDb2x1bW5zTGVmdGAgYW5kIGBmaXhlZENvbHVtbnNTdGFydGAgc2hvdWxkIG5vdCBiZSB1c2VkIHRvZ2V0aGVy''@;'; put 'put ''LiBQbGVhc2UgdXNlIG9ubHkgdGhlIG9wdGlvbiBgZml4ZWRDb2x1bW5zU3RhcnRgLiIpfX1dLFsibGF5b3V0RGlyZWN0aW9uIix7b25DaGFuZ2U6ZnVuY3Rpb24oZixkLGgpe2lmKCFoKXRocm93IG5ldyBFcnJvcigiVGhlIGAiLmNvbmNhdChmLCJgIG9wdGlvbiBjYW4gbm90IGJlIHVwZGF0''@;'; put 'put ''ZWQgYWZ0ZXIgdGhlIEhhbmRzb250YWJsZSBpcyBpbml0aWFsaXplZC4iKSl9fV1dKSx0aGlzLmV4dGVuZE1ldGFQcm9wcygpfXJldHVybiBmdW5jdGlvbiBXYXQobCxjLGEpe2MmJnloZShsLnByb3RvdHlwZSxjKSxhJiZ5aGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90''@;'; put 'put ''eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZXh0ZW5kTWV0YVByb3BzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5wcm9wRGVzY3JpcHRvcnMuZm9yRWFjaChmdW5jdGlvbihmLGQpe3ZhciBoPWYudGFyZ2V0LG09Zi5vbkNoYW5nZSxfPXZvaWQgMD09PW0/ZnVuY3Rp''@;'; put 'put ''b24oKXt9Om0sTz0ic3RyaW5nIj09dHlwZW9mIGgsWD1PP2g6ZCxhZT0iXyIuY29uY2F0KFgpO2EubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5tZXRhW2FlXT1hLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVtYXSxhLmluc3RhbGxQcm9wV2F0Y2hlcihkLGFlLF8pLE8mJmEuaW5zdGFsbFBy''@;'; put 'put ''b3BXYXRjaGVyKGgsYWUsXyl9KX19LHtrZXk6Imluc3RhbGxQcm9wV2F0Y2hlciIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5tZXRhLGEse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''W2ZdfSxzZXQ6ZnVuY3Rpb24oXyl7dmFyIE89IWgudXNhZ2VUcmFja2VyLmhhcyhhKTtoLnVzYWdlVHJhY2tlci5hZGQoYSksZC5jYWxsKGgsYSxfLE8pLHRoaXNbZl09X30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19XSksbH0oKSxiaGU9KFQoODU3MzUpLC9eKFxyXG58XG5c''@;'; put 'put ''cnxccnxcbikvKSxxYXQ9L15bXlx0XHJcbl0rLyxfaGU9L15cdC87ZnVuY3Rpb24gZ2sobCl7dmFyIGMsYSxmLGQsbSxoPSIiO2ZvcihjPTAsYT1sLmxlbmd0aDtjPGE7Yys9MSl7Zm9yKGQ9bFtjXS5sZW5ndGgsZj0wO2Y8ZDtmKz0xKWY+MCYmKGgrPSJcdCIpLCJzdHJpbmciPT10eXBlb2Yo''@;'; put 'put ''bT1sW2NdW2ZdKT9tLmluZGV4T2YoIlxuIik+LTE/aCs9JyInLmNvbmNhdChtLnJlcGxhY2UoLyIvZywnIiInKSwnIicpOmgrPW06aCs9bnVsbD09bT8iIjptO2MhPT1hLTEmJihoKz0iXG4iKX1yZXR1cm4gaH1mdW5jdGlvbiBaJChsKXtyZXR1cm4gZnVuY3Rpb24gdGx0KGwpe2lmKEFycmF5''@;'; put 'put ''LmlzQXJyYXkobCkpcmV0dXJuIFkkKGwpfShsKXx8ZnVuY3Rpb24gZWx0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIFFhdChsLGMpe2lmKGwp''@;'; put 'put ''e2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gWSQobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1h''@;'; put 'put ''KXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFkkKGwsYyl9fShsKXx8ZnVuY3Rpb24gSmF0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0''@;'; put 'put ''IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gWSQobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihj''@;'; put 'put ''PWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBrOShsKXtyZXR1cm4oazk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB3aGUobCxjKXtmb3IodmFyIGE9MDthPGMu''@;'; put 'put ''bGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGlsdChmLmtleSksZil9fWZ1bmN0aW9uIGlsdChsKXt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBvbHQobCxjKXtpZigib2JqZWN0IiE9PWs5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWs5KGYpKXJldHVybiBmO3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1rOShjKT9jOlN0cmluZyhjKX12YXIgYWx0PWZ1bmN0aW9uKCl7ZnVu''@;'; put 'put ''Y3Rpb24gbChjLGEsZil7KGZ1bmN0aW9uIG5sdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmluc3RhbmNlPWMsdGhpcy5tZXRhTWFuYWdlcj1mLHRoaXMudGFi''@;'; put 'put ''bGVNZXRhPWYuZ2V0VGFibGVNZXRhKCksdGhpcy5kYXRhU291cmNlPWEsdGhpcy5kdWNrU2NoZW1hPXRoaXMuY3JlYXRlRHVja1NjaGVtYSgpLHRoaXMuY29sVG9Qcm9wQ2FjaGU9dm9pZCAwLHRoaXMucHJvcFRvQ29sQ2FjaGU9dm9pZCAwLHRoaXMuY3JlYXRlTWFwKCl9cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIHJsdChsLGMsYSl7YyYmd2hlKGwucHJvdG90eXBlLGMpLGEmJndoZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJjcmVhdGVNYXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTY2hlbWEoKTtpZih0''@;'; put 'put ''eXBlb2YgYT4idSIpdGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gY3JlYXRlIGBjb2x1bW5zYCBkZWZpbml0aW9uIGJ1dCB5b3UgZGlkbid0IHByb3ZpZGUgYHNjaGVtYWAgbm9yIGBkYXRhYCIpO3ZhciBkLGY9dGhpcy50YWJsZU1ldGEuY29sdW1ucztpZih0aGlzLmNvbFRvUHJvcENhY2hl''@;'; put 'put ''PVtdLHRoaXMucHJvcFRvQ29sQ2FjaGU9bmV3IE1hcCxmKXt2YXIgaD0wLG09MCxfPSExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBmKXt2YXIgTz1VSShhKTtoPU8+MD9POnRoaXMuY291bnRGaXJzdFJvd0tleXMoKSxfPSEwfWVsc2UgaD1NYXRoLm1pbih0aGlzLnRhYmxlTWV0YS5tYXhDb2xz''@;'; put 'put ''LGYubGVuZ3RoKTtmb3IoZD0wO2Q8aDtkKyspe3ZhciBhZT1fP2YoZCk6ZltkXTtpZihwYShhZSkpe2lmKHR5cGVvZiBhZS5kYXRhPCJ1Iil7dmFyIHBlPV8/bTpkO3RoaXMuY29sVG9Qcm9wQ2FjaGVbcGVdPWFlLmRhdGEsdGhpcy5wcm9wVG9Db2xDYWNoZS5zZXQoYWUuZGF0YSxwZSl9bSs9''@;'; put 'put ''MX19fWVsc2UgdGhpcy5yZWN1cnNpdmVEdWNrQ29sdW1ucyhhKX19LHtrZXk6ImNvdW50Rmlyc3RSb3dLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBCVyh0aGlzLmRhdGFTb3VyY2UpfX0se2tleToicmVjdXJzaXZlRHVja0NvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIg''@;'; put 'put ''TyxoPXRoaXMsbT1mLF89ZDtyZXR1cm4gdHlwZW9mIG0+InUiJiYobT0wLF89IiIpLCJvYmplY3QiPT09azkoYSkmJiFBcnJheS5pc0FycmF5KGEpJiZtYShhLGZ1bmN0aW9uKFgsYWUpe251bGw9PT1YPyhoLmNvbFRvUHJvcENhY2hlLnB1c2goTz1fK2FlKSxoLnByb3BUb0NvbENhY2hlLnNl''@;'; put 'put ''dChPLG0pLG0rPTEpOm09aC5yZWN1cnNpdmVEdWNrQ29sdW1ucyhYLG0sIiIuY29uY2F0KGFlLCIuIikpfSksbX19LHtrZXk6ImNvbFRvUHJvcCIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoITE9PT1OdW1iZXIuaXNJbnRlZ2VyKGEpKXJldHVybiBhO3ZhciBmPXRoaXMuaW5zdGFuY2UudG9QaHlz''@;'; put 'put ''aWNhbENvbHVtbihhKTtyZXR1cm4gbnVsbD09PWY/YTp0aGlzLmNvbFRvUHJvcENhY2hlJiZpbyh0aGlzLmNvbFRvUHJvcENhY2hlW2ZdKT90aGlzLmNvbFRvUHJvcENhY2hlW2ZdOmZ9fSx7a2V5OiJwcm9wVG9Db2wiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMucHJvcFRvQ29sQ2Fj''@;'; put 'put ''aGUuZ2V0KGEpO2lmKGlvKGYpKXJldHVybiB0aGlzLmluc3RhbmNlLnRvVmlzdWFsQ29sdW1uKGYpO3ZhciBkPXRoaXMuaW5zdGFuY2UudG9WaXN1YWxDb2x1bW4oYSk7cmV0dXJuIG51bGw9PT1kP2E6ZH19LHtrZXk6ImdldFNjaGVtYSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRh''@;'; put 'put ''YmxlTWV0YS5kYXRhU2NoZW1hO3JldHVybiBhPyJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphOnRoaXMuZHVja1NjaGVtYX19LHtrZXk6ImNyZWF0ZUR1Y2tTY2hlbWEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZSYmdGhpcy5kYXRhU291cmNlWzBdP1A3KHRoaXMu''@;'; put 'put ''ZGF0YVNvdXJjZVswXSk6e319fSx7a2V5OiJyZWZyZXNoRHVja1NjaGVtYSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmR1Y2tTY2hlbWE9dGhpcy5jcmVhdGVEdWNrU2NoZW1hKCl9fSx7a2V5OiJjcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZD1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxtPWguc291cmNlLF89aC5tb2RlLE89dm9pZCAwPT09Xz8iYWJvdmUiOl8sWD10aGlzLmluc3RhbmNlLmNv''@;'; put 'put ''dW50U291cmNlUm93cygpLGFlPVgscGU9MCxiZT1hO2lmKCgibnVtYmVyIiE9dHlwZW9mIGJlfHxiZT49WCkmJihiZT1YKSxiZTx0aGlzLmluc3RhbmNlLmNvdW50Um93cygpJiYoYWU9dGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsUm93KGJlKSksITE9PT10aGlzLmluc3RhbmNlLnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVDcmVhdGVSb3ciLGJlLGQsbSl8fG51bGw9PT1hZSlyZXR1cm57ZGVsdGE6MH07Zm9yKHZhciBWZT10aGlzLnRhYmxlTWV0YS5tYXhSb3dzLFplPXRoaXMuZ2V0U2NoZW1hKCkubGVuZ3RoLGx0PVtdLGR0PWZ1bmN0aW9uKCl7dmFyIHJuPW51bGw7ImFycmF5Ij09PWYuaW5zdGFu''@;'; put 'put ''Y2UuZGF0YVR5cGU/Zi50YWJsZU1ldGEuZGF0YVNjaGVtYT9ybj14YyhmLmdldFNjaGVtYSgpKToocm49W10sX28oWmUtMSxmdW5jdGlvbigpe3JldHVybiBybi5wdXNoKG51bGwpfSkpOiJmdW5jdGlvbiI9PT1mLmluc3RhbmNlLmRhdGFUeXBlP3JuPWYudGFibGVNZXRhLmRhdGFTY2hlbWEo''@;'; put 'put ''YmUrcGUpOkhTKHJuPXt9LGYuZ2V0U2NoZW1hKCkpLGx0LnB1c2gocm4pLHBlKz0xfTtwZTxkJiZYK3BlPFZlOylkdCgpO3RoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhiZSxwZSksImJlbG93Ij09PU8mJihhZT1NYXRoLm1pbihhZSsxLFgpKSx0aGlzLnNwbGlj''@;'; put 'put ''ZURhdGEoYWUsMCxsdCk7dmFyIGd0PXRoaXMuaW5zdGFuY2UudG9WaXN1YWxSb3coYWUpO3JldHVybiB0aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpPT09bHQubGVuZ3RoJiZ0aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLmluaXRUb0xlbmd0aCh0aGlzLmluc3RhbmNlLmdl''@;'; put 'put ''dEluaXRpYWxDb2x1bW5Db3VudCgpKSxwZT4wJiYobnVsbD09YT90aGlzLm1ldGFNYW5hZ2VyLmNyZWF0ZVJvdyhudWxsLHBlKToiYXV0byIhPT1tJiZ0aGlzLm1ldGFNYW5hZ2VyLmNyZWF0ZVJvdyhhZSxkKSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLGd0LHBl''@;'; put 'put ''LG0pLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLHtkZWx0YTpwZSxzdGFydFBoeXNpY2FsSW5kZXg6YWV9fX0se2tleToiY3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNb''@;'; put 'put ''MV06MSxkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxoPWQuc291cmNlLG09ZC5tb2RlLF89dm9pZCAwPT09bT8ic3RhcnQiOm07aWYoIXRoaXMuaW5zdGFuY2UuaXNDb2x1bW5Nb2RpZmljYXRpb25BbGxvd2VkKCkpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJDYW5ub3QgY3JlYXRlIG5ldyBjb2x1bW4uIFdoZW4gZGF0YSBzb3VyY2UgaW4gYW4gb2JqZWN0LCB5b3UgY2FuIG9ubHkgaGF2ZSBhcyBtdWNoIGNvbHVtbnMgYXMgZGVmaW5lZCBpbiBmaXJzdCBkYXRhIHJvdywgZGF0YSBzY2hlbWEgb3IgaW4gdGhlICdjb2x1bW5zJyBzZXR0''@;'; put 'put ''aW5nLklmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gYWRkIG5ldyBjb2x1bW5zLCB5b3UgaGF2ZSB0byB1c2UgYXJyYXkgZGF0YXNvdXJjZS4iKTt2YXIgTz10aGlzLmRhdGFTb3VyY2UsWD10aGlzLnRhYmxlTWV0YS5tYXhDb2xzLGFlPXRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VDb2xzKCks''@;'; put 'put ''cGU9YTtpZigoIm51bWJlciIhPXR5cGVvZiBwZXx8cGU+PWFlKSYmKHBlPWFlKSwhMT09PXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZUNyZWF0ZUNvbCIscGUsZixoKSlyZXR1cm57ZGVsdGE6MH07dmFyIHhlPWFlO3BlPHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCkmJih4ZT10aGlz''@;'; put 'put ''Lmluc3RhbmNlLnRvUGh5c2ljYWxDb2x1bW4ocGUpKTt2YXIgVmU9dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKSxaZT10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLGx0PTAsZHQ9eGU7ImVuZCI9PT1fJiYoZHQ9TWF0aC5taW4oZHQrMSxhZSkpO2Zvcih2YXIgZ3Q9ZHQ7bHQ8ZiYm''@;'; put 'put ''WmU8WDspe2lmKCJudW1iZXIiIT10eXBlb2YgcGV8fHBlPj1aZSlpZihWZT4wKWZvcih2YXIganQ9MDtqdDxWZTtqdCs9MSl0eXBlb2YgT1tqdF0+InUiJiYoT1tqdF09W10pLE9banRdLnB1c2gobnVsbCk7ZWxzZSBPLnB1c2goW251bGxdKTtlbHNlIGZvcih2YXIgcm49MDtybjxWZTtybisr''@;'; put 'put ''KU9bcm5dLnNwbGljZShkdCwwLG51bGwpO2x0Kz0xLGR0Kz0xLFplKz0xfXRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhwZSxsdCksbHQ+MCYmKG51bGw9PWE/dGhpcy5tZXRhTWFuYWdlci5jcmVhdGVDb2x1bW4obnVsbCxsdCk6ImF1dG8iIT09aCYmdGhp''@;'; put 'put ''cy5tZXRhTWFuYWdlci5jcmVhdGVDb2x1bW4oZ3QsZikpO3ZhciBYdD10aGlzLmluc3RhbmNlLnRvVmlzdWFsQ29sdW1uKGd0KTtyZXR1cm4gdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVDb2wiLFh0LGx0LGgpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLHRo''@;'; put 'put ''aXMucmVmcmVzaER1Y2tTY2hlbWEoKSx7ZGVsdGE6bHQsc3RhcnRQaHlzaWNhbEluZGV4Omd0fX19LHtrZXk6InJlbW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxkPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxLGg9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbT1OdW1iZXIuaXNJbnRlZ2VyKGEpP2E6LWQsXz10aGlzLnZpc3VhbFJvd3NUb1BoeXNpY2FsKG0sZCksTz10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpO2lmKCExPT09dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygi''@;'; put 'put ''YmVmb3JlUmVtb3ZlUm93IixtPShPK20pJU8sXy5sZW5ndGgsXyxoKSlyZXR1cm4hMTt2YXIgYWU9Xy5sZW5ndGg7aWYodGhpcy5maWx0ZXJEYXRhKG0sYWUsXyksbTx0aGlzLmluc3RhbmNlLmNvdW50Um93cygpKXt0aGlzLmluc3RhbmNlLnJvd0luZGV4TWFwcGVyLnJlbW92ZUluZGV4ZXMo''@;'; put 'put ''Xyk7dmFyIHBlPWlvKHRoaXMudGFibGVNZXRhLmNvbHVtbnMpfHxpbyh0aGlzLnRhYmxlTWV0YS5kYXRhU2NoZW1hKTswPT09dGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpJiYhMT09PXBlJiZ0aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4''@;'; put 'put ''TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShbXSl9cmV0dXJuIF8uc2xpY2UoMCkuc29ydChmdW5jdGlvbih4ZSxWZSl7cmV0dXJuIFZlLXhlfSkuZm9yRWFjaChmdW5jdGlvbih4ZSl7Zi5tZXRhTWFuYWdlci5yZW1vdmVSb3coeGUsMSl9KSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRl''@;'; put 'put ''clJlbW92ZVJvdyIsbSxhZSxfLGgpLHRoaXMuaW5zdGFuY2UuZm9yY2VGdWxsUmVuZGVyPSEwLCEwfX0se2tleToicmVtb3ZlQ29sIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxkPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJvYmplY3QiPT09dGhpcy5pbnN0YW5jZS5kYXRhVHlwZXx8dGhpcy50YWJsZU1ldGEuY29sdW1ucyl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCByZW1vdmUgY29sdW1uIHdpdGggb2JqZWN0IGRhdGEgc291cmNlIG9yIGNvbHVt''@;'; put 'put ''bnMgb3B0aW9uIHNwZWNpZmllZCIpO3ZhciBoPSJudW1iZXIiIT10eXBlb2YgYT8tZjphO2g9KHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCkraCkldGhpcy5pbnN0YW5jZS5jb3VudENvbHMoKTt2YXIgbT10aGlzLnZpc3VhbENvbHVtbnNUb1BoeXNpY2FsKGgsZiksXz1tLnNsaWNlKDApLnNv''@;'; put 'put ''cnQoZnVuY3Rpb24oZ3QsanQpe3JldHVybiBqdC1ndH0pO2lmKCExPT09dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlQ29sIixoLGYsbSxkKSlyZXR1cm4hMTtmb3IodmFyIFg9ITAsYWU9Xy5sZW5ndGgscGU9dGhpcy5kYXRhU291cmNlLGJlPTA7YmU8YWU7YmUrKylYJiZt''@;'; put 'put ''WzBdIT09bVtiZV0tYmUmJihYPSExKTtpZihYKWZvcih2YXIgeGU9MCxWZT10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpO3hlPFZlO3hlKyspcGVbeGVdLnNwbGljZShtWzBdLGYpLDA9PT14ZSYmdGhpcy5tZXRhTWFuYWdlci5yZW1vdmVDb2x1bW4obVswXSxmKTtlbHNlIGZvcih2''@;'; put 'put ''YXIgWmU9MCxsdD10aGlzLmluc3RhbmNlLmNvdW50U291cmNlUm93cygpO1plPGx0O1plKyspZm9yKHZhciBkdD0wO2R0PGFlO2R0KyspcGVbWmVdLnNwbGljZShfW2R0XSwxKSwwPT09WmUmJnRoaXMubWV0YU1hbmFnZXIucmVtb3ZlQ29sdW1uKF9bZHRdLDEpO3JldHVybiBoPHRoaXMuaW5z''@;'; put 'put ''dGFuY2UuY291bnRDb2xzKCkmJih0aGlzLmluc3RhbmNlLmNvbHVtbkluZGV4TWFwcGVyLnJlbW92ZUluZGV4ZXMobSksMD09PXRoaXMuaW5zdGFuY2UuY29sdW1uSW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSYmdGhpcy5pbnN0YW5jZS5yb3dJbmRleE1hcHBlci5z''@;'; put 'put ''ZXRJbmRleGVzU2VxdWVuY2UoW10pKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlbW92ZUNvbCIsaCxmLG0sZCksdGhpcy5pbnN0YW5jZS5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5yZWZyZXNoRHVja1NjaGVtYSgpLCEwfX0se2tleToic3BsaWNlQ29sIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihhLGYsZCl7Zm9yKHZhciBoPXRoaXMuaW5zdGFuY2UuZ2V0RGF0YUF0Q29sKGEpLG09aC5zbGljZShmLGYrZCksXz1oLnNsaWNlKGYrZCksTz1hcmd1bWVudHMubGVuZ3RoLFg9bmV3IEFycmF5KE8+Mz9PLTM6MCksYWU9MzthZTxPO2FlKyspWFthZS0zXT1hcmd1bWVudHNbYWVdO29ZKFgs''@;'; put 'put ''Xyk7Zm9yKHZhciBwZT0wO3BlPGQ7KVgucHVzaChudWxsKSxwZSs9MTtyZXR1cm4gamNlKFgpLHRoaXMuaW5zdGFuY2UucG9wdWxhdGVGcm9tQXJyYXkoZixhLFgsbnVsbCxudWxsLCJzcGxpY2VDb2wiKSxtfX0se2tleToic3BsaWNlUm93Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7Zm9yKHZh''@;'; put 'put ''ciBoPXRoaXMuaW5zdGFuY2UuZ2V0U291cmNlRGF0YUF0Um93KGEpLG09aC5zbGljZShmLGYrZCksXz1oLnNsaWNlKGYrZCksTz1hcmd1bWVudHMubGVuZ3RoLFg9bmV3IEFycmF5KE8+Mz9PLTM6MCksYWU9MzthZTxPO2FlKyspWFthZS0zXT1hcmd1bWVudHNbYWVdO29ZKFgsXyk7Zm9yKHZh''@;'; put 'put ''ciBwZT0wO3BlPGQ7KVgucHVzaChudWxsKSxwZSs9MTtyZXR1cm4gdGhpcy5pbnN0YW5jZS5wb3B1bGF0ZUZyb21BcnJheShhLGYsW1hdLG51bGwsbnVsbCwic3BsaWNlUm93IiksbX19LHtrZXk6InNwbGljZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD10aGlzO2lmKCExIT09''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlRGF0YVNwbGljZSIsYSxmLGQpKXt2YXIgXz1bXS5jb25jYXQoWiQodGhpcy5kYXRhU291cmNlLnNsaWNlKDAsYSkpLFokKGQpLFokKHRoaXMuZGF0YVNvdXJjZS5zbGljZShhKSkpO3RoaXMuZGF0YVNvdXJjZS5sZW5ndGg9MCxfLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oTyl7cmV0dXJuIGguZGF0YVNvdXJjZS5wdXNoKE8pfSl9fX0se2tleToiZmlsdGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImZpbHRlckRhdGEiLGEsZixkKTshMT09PUFycmF5LmlzQXJyYXkoaCkmJihoPXRo''@;'; put 'put ''aXMuZGF0YVNvdXJjZS5maWx0ZXIoZnVuY3Rpb24obSxfKXtyZXR1cm4tMT09PWQuaW5kZXhPZihfKX0pKSx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoPTAsQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5kYXRhU291cmNlLGgpfX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihhLGYp''@;'; put 'put ''e3ZhciBkPXRoaXMuaW5zdGFuY2UudG9QaHlzaWNhbFJvdyhhKSxoPXRoaXMuZGF0YVNvdXJjZVtkXSxtPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeVJvd0RhdGEiLGQpLF89bnVsbDtpZigoaD1pc05hTihtKT9tOmgpJiZoLmhhc093blByb3BlcnR5JiZTcyhoLGYpKV89aFtmXTtl''@;'; put 'put ''bHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZiYmZi5pbmRleE9mKCIuIik+LTEpe3ZhciBPPWYuc3BsaXQoIi4iKSxYPWg7aWYoIVgpcmV0dXJuIG51bGw7Zm9yKHZhciBhZT0wLHBlPU8ubGVuZ3RoO2FlPHBlO2FlKyspaWYodHlwZW9mKFg9WFtPW2FlXV0pPiJ1IilyZXR1cm4gbnVsbDtfPVh9''@;'; put 'put ''ZWxzZSJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoXz1mKHRoaXMuZGF0YVNvdXJjZS5zbGljZShkLGQrMSlbMF0pKTtpZih0aGlzLmluc3RhbmNlLmhhc0hvb2soIm1vZGlmeURhdGEiKSl7dmFyIGJlPWc1KF8pO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeURhdGEiLGQsdGhpcy5wcm9w''@;'; put 'put ''VG9Db2woZiksYmUsImdldCIpLGJlLmlzVG91Y2hlZCgpJiYoXz1iZS52YWx1ZSl9cmV0dXJuIF99fSx7a2V5OiJnZXRDb3B5YWJsZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5pbnN0YW5jZS5nZXRDZWxsTWV0YShhLHRoaXMucHJvcFRvQ29sKGYpKS5jb3B5YWJsZT90aGlz''@;'; put 'put ''LmdldChhLGYpOiIifX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9dGhpcy5pbnN0YW5jZS50b1BoeXNpY2FsUm93KGEpLG09ZCxfPXRoaXMuZGF0YVNvdXJjZVtoXSxPPXRoaXMuaW5zdGFuY2UucnVuSG9va3MoIm1vZGlmeVJvd0RhdGEiLGgpO2lmKF89aXNOYU4o''@;'; put 'put ''Tyk/TzpfLHRoaXMuaW5zdGFuY2UuaGFzSG9vaygibW9kaWZ5RGF0YSIpKXt2YXIgWD1nNShtKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJtb2RpZnlEYXRhIixoLHRoaXMucHJvcFRvQ29sKGYpLFgsInNldCIpLFguaXNUb3VjaGVkKCkmJihtPVgudmFsdWUpfWlmKF8mJl8uaGFzT3duUHJv''@;'; put 'put ''cGVydHkmJlNzKF8sZikpX1tmXT1tO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBmJiZmLmluZGV4T2YoIi4iKT4tMSl7dmFyIHhlLGFlPWYuc3BsaXQoIi4iKSxwZT1fLGJlPTA7Zm9yKGJlPTAseGU9YWUubGVuZ3RoLTE7YmU8eGU7YmUrKyl0eXBlb2YgcGVbYWVbYmVdXT4idSImJihwZVth''@;'; put 'put ''ZVtiZV1dPXt9KSxwZT1wZVthZVtiZV1dO3BlW2FlW2JlXV09bX1lbHNlImZ1bmN0aW9uIj09dHlwZW9mIGY/Zih0aGlzLmRhdGFTb3VyY2Uuc2xpY2UoaCxoKzEpWzBdLG0pOl9bZl09bX19LHtrZXk6InZpc3VhbFJvd3NUb1BoeXNpY2FsIix2YWx1ZTpmdW5jdGlvbihhLGYpe2Zvcih2YXIg''@;'; put 'put ''TyxkPXRoaXMuaW5zdGFuY2UuY291bnRTb3VyY2VSb3dzKCksaD1bXSxtPShkK2EpJWQsXz1mO208ZCYmXzspTz10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxSb3cobSksaC5wdXNoKE8pLF8tPTEsbSs9MTtyZXR1cm4gaH19LHtrZXk6InZpc3VhbENvbHVtbnNUb1BoeXNpY2FsIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihhLGYpe2Zvcih2YXIgZD10aGlzLmluc3RhbmNlLmNvdW50Q29scygpLGg9W10sbT0oZCthKSVkLF89ZjttPGQmJl87KXt2YXIgTz10aGlzLmluc3RhbmNlLnRvUGh5c2ljYWxDb2x1bW4obSk7aC5wdXNoKE8pLF8tPTEsbSs9MX1yZXR1cm4gaH19LHtrZXk6ImNsZWFyIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5pbnN0YW5jZS5jb3VudFNvdXJjZVJvd3MoKTthKyspZm9yKHZhciBmPTA7Zjx0aGlzLmluc3RhbmNlLmNvdW50Q29scygpO2YrKyl0aGlzLnNldChhLHRoaXMuY29sVG9Qcm9wKGYpLCIiKX19LHtrZXk6ImdldExlbmd0aCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgZixhPXRoaXMudGFibGVNZXRhLm1heFJvd3M7Zj1hPDB8fDA9PT1hPzA6YXx8MS8wO3ZhciBkPXRoaXMuaW5zdGFuY2Uucm93SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKTtyZXR1cm4gTWF0aC5taW4oZCxmKX19LHtrZXk6ImdldEFsbCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT17cm93OjAsY29sOjB9LGY9e3JvdzpNYXRoLm1heCh0aGlzLmluc3RhbmNlLmNvdW50Um93cygpLTEsMCksY29sOk1hdGgubWF4KHRoaXMuaW5zdGFuY2UuY291bnRDb2xzKCktMSwwKX07cmV0dXJuIGEucm93LWYucm93IT0wfHx0aGlzLmluc3RhbmNl''@;'; put 'put ''LmNvdW50U291cmNlUm93cygpP3RoaXMuZ2V0UmFuZ2UoYSxmLGwuREVTVElOQVRJT05fUkVOREVSRVIpOltdfX0se2tleToiY291bnRDYWNoZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbFRvUHJvcENhY2hlLmxlbmd0aH19LHtrZXk6ImdldFJhbmdlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihhLGYsZCl7dmFyIG0sXyxPLGg9W10sWD10aGlzLnRhYmxlTWV0YS5tYXhSb3dzLGFlPXRoaXMudGFibGVNZXRhLm1heENvbHM7aWYoMD09PVh8fDA9PT1hZSlyZXR1cm5bXTt2YXIgcGU9ZD09PWwuREVTVElOQVRJT05fQ0xJUEJPQVJEX0dFTkVSQVRPUj90aGlzLmdldENv''@;'; put 'put ''cHlhYmxlOnRoaXMuZ2V0LGJlPU1hdGgubWluKE1hdGgubWF4KFgtMSwwKSxNYXRoLm1heChhLnJvdyxmLnJvdykpLHhlPU1hdGgubWluKE1hdGgubWF4KGFlLTEsMCksTWF0aC5tYXgoYS5jb2wsZi5jb2wpKTtmb3IobT1NYXRoLm1pbihhLnJvdyxmLnJvdyk7bTw9YmU7bSsrKXtPPVtdO3Zh''@;'; put 'put ''ciBWZT1tPj0wP3RoaXMuaW5zdGFuY2UudG9QaHlzaWNhbFJvdyhtKTptO2ZvcihfPU1hdGgubWluKGEuY29sLGYuY29sKTtfPD14ZSYmbnVsbCE9PVZlO18rKylPLnB1c2gocGUuY2FsbCh0aGlzLG0sdGhpcy5jb2xUb1Byb3AoXykpKTtudWxsIT09VmUmJmgucHVzaChPKX1yZXR1cm4gaH19''@;'; put 'put ''LHtrZXk6ImdldFRleHQiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIGdrKHRoaXMuZ2V0UmFuZ2UoYSxmLGwuREVTVElOQVRJT05fUkVOREVSRVIpKX19LHtrZXk6ImdldENvcHlhYmxlVGV4dCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gZ2sodGhpcy5nZXRSYW5nZShhLGYsbC5E''@;'; put 'put ''RVNUSU5BVElPTl9DTElQQk9BUkRfR0VORVJBVE9SKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5zdGFuY2U9bnVsbCx0aGlzLm1ldGFNYW5hZ2VyPW51bGwsdGhpcy5kYXRhU291cmNlPW51bGwsdGhpcy5kdWNrU2NoZW1hPW51bGwsdGhpcy5jb2xUb1Byb3BD''@;'; put 'put ''YWNoZS5sZW5ndGg9MCx0aGlzLnByb3BUb0NvbENhY2hlLmNsZWFyKCksdGhpcy5wcm9wVG9Db2xDYWNoZT12b2lkIDB9fV0sW3trZXk6IkRFU1RJTkFUSU9OX1JFTkRFUkVSIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMX19LHtrZXk6IkRFU1RJTkFUSU9OX0NMSVBCT0FSRF9HRU5FUkFUT1Ii''@;'; put 'put ''LGdldDpmdW5jdGlvbigpe3JldHVybiAyfX1dKSxsfSgpO2NvbnN0IGxsdD1hbHQ7ZnVuY3Rpb24gdUwobCl7cmV0dXJuKHVMPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVu''@;'; put 'put ''Y3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQ2hlKGwsYyxhLGYpe3ZhciBkPWYuaG90SW5zdGFuY2UsaD1mLmRhdGFN''@;'; put 'put ''YXAsbT1mLmRhdGFTb3VyY2UsXz1mLmludGVybmFsU291cmNlLE89Zi5zb3VyY2UsWD1mLm1ldGFNYW5hZ2VyLGFlPWYuZmlyc3RSdW4scGU9QWMoXyksYmU9ZC5nZXRTZXR0aW5ncygpO2QuZGF0YVR5cGU9QXJyYXkuaXNBcnJheShiZS5kYXRhU2NoZW1hKT8iYXJyYXkiOlBsKGJlLmRhdGFT''@;'; put 'put ''Y2hlbWEpPyJmdW5jdGlvbiI6Im9iamVjdCIsaCYmaC5kZXN0cm95KCksbD1kLnJ1bkhvb2tzKCJiZWZvcmUiLmNvbmNhdChwZSksbCxhZSxPKTt2YXIgeGU9bmV3IGxsdChkLGwsWCk7aWYoYyh4ZSksIm9iamVjdCI9PT11TChsKSYmbnVsbCE9PWwpbC5wdXNoJiZsLnNwbGljZXx8KGw9W2xd''@;'; put 'put ''KTtlbHNle2lmKG51bGwhPT1sKXRocm93IG5ldyBFcnJvcigiIi5jb25jYXQoXywiIG9ubHkgYWNjZXB0cyBhcnJheSBvZiBvYmplY3RzIG9yIGFycmF5IG9mIGFycmF5cyAoIikuY29uY2F0KHVMKGwpLCIgZ2l2ZW4pIikpO3ZhciBWZT14ZS5nZXRTY2hlbWEoKTtsPVtdO3ZhciBaZSxkdCxs''@;'; put 'put ''dD0wO2ZvcihsdD0wLGR0PWJlLnN0YXJ0Um93cztsdDxkdDtsdCsrKWlmKCJvYmplY3QiIT09ZC5kYXRhVHlwZSYmImZ1bmN0aW9uIiE9PWQuZGF0YVR5cGV8fCFiZS5kYXRhU2NoZW1hKWlmKCJhcnJheSI9PT1kLmRhdGFUeXBlKVplPXhjKFZlWzBdKSxsLnB1c2goWmUpO2Vsc2V7WmU9W107''@;'; put 'put ''Zm9yKHZhciBndD0wLGp0PWJlLnN0YXJ0Q29scztndDxqdDtndCsrKVplLnB1c2gobnVsbCk7bC5wdXNoKFplKX1lbHNlIFplPXhjKFZlKSxsLnB1c2goWmUpfUFycmF5LmlzQXJyYXkobFswXSkmJihkLmRhdGFUeXBlPSJhcnJheSIpLGJlLmRhdGE9bCx4ZS5kYXRhU291cmNlPWwsbS5kYXRh''@;'; put 'put ''PWwsbS5kYXRhVHlwZT1kLmRhdGFUeXBlLG0uY29sVG9Qcm9wPXhlLmNvbFRvUHJvcC5iaW5kKHhlKSxtLnByb3BUb0NvbD14ZS5wcm9wVG9Db2wuYmluZCh4ZSksbS5jb3VudENhY2hlZENvbHVtbnM9eGUuY291bnRDYWNoZWRDb2x1bW5zLmJpbmQoeGUpLGEoeGUpLGQucnVuSG9va3MoImFm''@;'; put 'put ''dGVyIi5jb25jYXQocGUpLGwsYWUsTyksYWV8fChkLnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsbnVsbCxfKSxkLnJlbmRlcigpKX12YXIga2hlLFNoZT1uZXcgTWFwKFtbIiAiLCJzcGFjZSJdLFsic3BhY2ViYXIiLCJzcGFjZSJdLFsic2Nyb2xsIiwic2Nyb2xsbG9jayJdLFsiZGVsIiwiZGVs''@;'; put 'put ''ZXRlIl0sWyJlc2MiLCJlc2NhcGUiXSxbIm1lZGlhbmV4dHRyYWNrIiwibWVkaWF0cmFja25leHQiXSxbIm1lZGlhcHJldmlvdXN0cmFjayIsIm1lZGlhdHJhY2twcmV2aW91cyJdLFsidm9sdW1ldXAiLCJhdWRpb3ZvbHVtZXVwIl0sWyJ2b2x1bWVkb3duIiwiYXVkaW92b2x1bWVkb3duIl0s''@;'; put 'put ''WyJ2b2x1bWVtdXRlIiwiYXVkaW92b2x1bWVtdXRlIl0sWyJtdWx0aXBseSIsIioiXSxbImFkZCIsIisiXSxbImRpdmlkZSIsIi8iXSxbInN1YnRyYWN0IiwiLSJdLFsibGVmdCIsImFycm93bGVmdCJdLFsicmlnaHQiLCJhcnJvd3JpZ2h0Il0sWyJ1cCIsImFycm93dXAiXSxbImRvd24iLCJh''@;'; put 'put ''cnJvd2Rvd24iXV0pLGNMPWZ1bmN0aW9uKGMpe3JldHVybiBjLm1hcChmdW5jdGlvbihhKXt2YXIgZj1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIFNoZS5oYXMoZik/U2hlLmdldChmKTpmfSkuc29ydCgpLmpvaW4oIisiKX0sTWhlPWZ1bmN0aW9uKGMpe3JldHVybiBjLnRvTG93ZXJDYXNlKCl9''@;'; put 'put ''O2Z1bmN0aW9uIEVoZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gVyQobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5h''@;'; put 'put ''bWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFckKGwsYyl9fWZ1bmN0aW9uIFckKGwsYyl7KG51bGw9PWN8fGM+bC5s''@;'; put 'put ''ZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9dmFyIHlsdD1mdW5jdGlvbihjKXt2YXIgYT1pUih7ZXJyb3JJZEV4aXN0czpmdW5jdGlvbihhZSl7cmV0dXJuJ1RoZSAiJy5jb25jYXQoYWUsJyIgc2hvcnRj''@;'; put 'put ''dXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGluIHRoZSAiJykuY29uY2F0KGMsJyIgY29udGV4dC4nKX19KSxmPWZ1bmN0aW9uKCl7dmFyIGFlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxwZT1hZS5rZXlzLGJlPWFlLmNhbGxiYWNr''@;'; put 'put ''LHhlPWFlLmdyb3VwLFZlPWFlLnJ1bk9ubHlJZixaZT12b2lkIDA9PT1WZT9mdW5jdGlvbigpe3JldHVybiEwfTpWZSxsdD1hZS5jYXB0dXJlQ3RybCxkdD12b2lkIDAhPT1sdCYmbHQsZ3Q9YWUucHJldmVudERlZmF1bHQsanQ9dm9pZCAwPT09Z3R8fGd0LHJuPWFlLnN0b3BQcm9wYWdhdGlv''@;'; put 'put ''bixYdD12b2lkIDAhPT1ybiYmcm4seW49YWUucmVsYXRpdmVUb0dyb3VwLFFuPWFlLnBvc2l0aW9uO2lmKExsKHhlKSl0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIGRlZmluZSB0aGUgc2hvcnRjdXQncyBncm91cC4iKTtpZighMT09PVBsKGJlKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBz''@;'; put 'put ''aG9ydGN1dCdzIGNhbGxiYWNrIG5lZWRzIHRvIGJlIGEgZnVuY3Rpb24uIik7aWYoITE9PT1BcnJheS5pc0FycmF5KHBlKSl0aHJvdyBuZXcgRXJyb3IoT2woa2hlfHwoa2hlPWZ1bmN0aW9uIHZsdChsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShjKX19KSl9KFsiUGFzcyB0aGUgc2hvcnRjdXQncyBrZXlzIGFzIGFuIGFycmF5IG9mIGFycmF5cywgXG4gICAgICB1c2luZyB0aGUgS2V5Ym9hcmRFdmVudC5rZXkgcHJvcGVydGllczogXG4gICAgICBodHRwczov''@;'; put 'put ''L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcy4iXSxbIlBhc3MgdGhlIHNob3J0Y3V0XFwncyBrZXlzIGFzIGFuIGFycmF5IG9mIGFycmF5cyxcXHgyMFxuICAgICAgdXNpbmcgdGhlIEtleWJvYXJkRXZlbnQua2V5''@;'; put 'put ''IHByb3BlcnRpZXM6XFx4MjBcbiAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzLiJdKSkpKTt2YXIgT3I9e2NhbGxiYWNrOmJlLGdyb3VwOnhlLHJ1bk9ubHlJZjpaZSxjYXB0dXJlQ3RybDpk''@;'; put 'put ''dCxwcmV2ZW50RGVmYXVsdDpqdCxzdG9wUHJvcGFnYXRpb246WHR9O2lmKGlvKHluKSl7dmFyIFZyPVt5bixRbl07T3IucmVsYXRpdmVUb0dyb3VwPVZyWzBdLE9yLnBvc2l0aW9uPVZyWzFdfXBlLmZvckVhY2goZnVuY3Rpb24oWnIpe3ZhciBpcj1jTChacik7aWYoYS5oYXNJdGVtKGlyKSl7''@;'; put 'put ''dmFyIEFyPWEuZ2V0SXRlbShpciksRW49QXIuZmluZEluZGV4KGZ1bmN0aW9uKFRyKXtyZXR1cm4gVHIuZ3JvdXA9PT15bn0pOy0xIT09RW4/ImJlZm9yZSI9PT1Rbj9Fbi09MTpFbis9MTpFbj1Bci5sZW5ndGgsQXIuc3BsaWNlKEVuLDAsT3IpfWVsc2UgYS5hZGRJdGVtKGlyLFtPcl0pfSl9''@;'; put 'put ''LGg9ZnVuY3Rpb24oYWUpe3ZhciBwZT1jTChhZSk7YS5yZW1vdmVJdGVtKHBlKX07cmV0dXJue2FkZFNob3J0Y3V0OmYsYWRkU2hvcnRjdXRzOmZ1bmN0aW9uKGFlKXt2YXIgcGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2FlLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oYmUpe21hKHBlLGZ1bmN0aW9uKHhlLFZlKXshMT09PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiZSxWZSkmJihiZVtWZV09cGVbVmVdKX0pLGYoYmUpfSl9LGdldFNob3J0Y3V0czpmdW5jdGlvbihhZSl7dmFyIHBlPWNMKGFlKSxiZT1hLmdl''@;'; put 'put ''dEl0ZW0ocGUpO3JldHVybiBpbyhiZSk/YmUuc2xpY2UoKTpbXX0saGFzU2hvcnRjdXQ6ZnVuY3Rpb24oYWUpe3ZhciBwZT1jTChhZSk7cmV0dXJuIGEuaGFzSXRlbShwZSl9LHJlbW92ZVNob3J0Y3V0c0J5S2V5czpoLHJlbW92ZVNob3J0Y3V0c0J5R3JvdXA6ZnVuY3Rpb24oYWUpe2EuZ2V0''@;'; put 'put ''SXRlbXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXt2YXIgeGU9ZnVuY3Rpb24gaGx0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGdsdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gbWx0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUi''@;'; put 'put ''JiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwo''@;'; put 'put ''YSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0''@;'; put 'put ''dXJuIF99fShsLGMpfHxFaGUobCxjKXx8ZnVuY3Rpb24gcGx0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhh''@;'; put 'put ''dmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYmUsMiksVmU9eGVbMF0sWmU9eGVbMV0sbHQ9WmUuZmlsdGVyKGZ1bmN0aW9uKGR0KXtyZXR1cm4gZHQuZ3JvdXAhPT1hZX0pOzA9PT1sdC5sZW5ndGg/aChmdW5jdGlvbihjKXtyZXR1cm4gYy5zcGxpdCgiKyIpfShWZSkp''@;'; put 'put ''OihaZS5sZW5ndGg9MCxaZS5wdXNoLmFwcGx5KFplLGZ1bmN0aW9uIHVsdChsKXtyZXR1cm4gZnVuY3Rpb24gZGx0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIFckKGwpfShsKXx8ZnVuY3Rpb24gZmx0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fEVoZShsKXx8ZnVuY3Rpb24gY2x0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBp''@;'; put 'put ''dGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGx0KSkpfSl9fX0sX2x0PVsibWV0YSIsImFsdCIsInNoaWZ0IiwiY29udHJvbCJdLHZrPWZ1bmN0aW9uIGJsdCgpe3ZhciBsPW5ldyBTZXQ7cmV0dXJue3ByZXNz''@;'; put 'put ''OmZ1bmN0aW9uKGEpe2wuYWRkKGEpfSxyZWxlYXNlOmZ1bmN0aW9uKGEpe2wuZGVsZXRlKGEpfSxyZWxlYXNlQWxsOmZ1bmN0aW9uKCl7bC5jbGVhcigpfSxpc1ByZXNzZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGwuaGFzKGEpfX19KCksQ2x0PWZ1bmN0aW9uKGMpe3ZhciBhPWMub3duZXJXaW5k''@;'; put 'put ''b3csZj1jLmhhbmRsZUV2ZW50LGQ9Yy5iZWZvcmVLZXlEb3duLGg9Yy5hZnRlcktleURvd24sbT1pUih7ZXJyb3JJZEV4aXN0czpmdW5jdGlvbihaZSl7cmV0dXJuJ1RoZSAiJy5jb25jYXQoWmUsJyIgY29udGV4dCBuYW1lIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4nKX19KSxfPSJncmlkIixY''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIF99LGFlPWZ1bmN0aW9uKFplKXtyZXR1cm4gbS5nZXRJdGVtKFplKX0sYmU9ITEseGU9ZnVuY3Rpb24gd2x0KGwsYyxhLGYsZCl7dmFyIGg9ZnVuY3Rpb24oeGUpe3JldHVybiBfbHQuaW5jbHVkZXMoeGUpfSxtPWZ1bmN0aW9uKHhlKXt2YXIgVmU9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxaZT1bXTtyZXR1cm4geGUuYWx0S2V5JiZaZS5wdXNoKCJhbHQiKSxWZSYmKHhlLmN0cmxLZXl8fHhlLm1ldGFLZXkpP1plLnB1c2goImNvbnRyb2wvbWV0YSIpOih4ZS5jdHJsS2V5JiZaZS5wdXNoKCJj''@;'; put 'put ''b250cm9sIikseGUubWV0YUtleSYmWmUucHVzaCgibWV0YSIpKSx4ZS5zaGlmdEtleSYmWmUucHVzaCgic2hpZnQiKSxaZX0sXz1mdW5jdGlvbih4ZSl7aWYoITEhPT1jKHhlKSl7dmFyIFZlPWEoeGUpO2lmKDIyOSE9PXhlLmtleUNvZGUmJiExIT09VmUmJiFfNSh4ZSkpe3ZhciBaZT1NaGUo''@;'; put 'put ''eGUua2V5KSxsdD1bXTtoKFplKT92ay5wcmVzcyhaZSk6bHQ9bSh4ZSk7dmFyIGR0PVtaZV0uY29uY2F0KGx0KTshZCh4ZSxkdCkmJihZSSgpJiZsdC5pbmNsdWRlcygibWV0YSIpfHwhWUkoKSYmbHQuaW5jbHVkZXMoImNvbnRyb2wiKSkmJmQoeGUsW1plXS5jb25jYXQobSh4ZSwhMCkpKSxm''@;'; put 'put ''KHhlKX19fSxPPWZ1bmN0aW9uKHhlKXtpZighMSE9PWMoeGUpKXt2YXIgVmU9TWhlKHhlLmtleSk7ITEhPT1oKFZlKSYmdmsucmVsZWFzZShWZSl9fSxYPWZ1bmN0aW9uKCl7dmsucmVsZWFzZUFsbCgpfTtyZXR1cm57bW91bnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHhlPWw7eGU7KXhlLmRvY3Vt''@;'; put 'put ''ZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixfKSx4ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLE8pLHhlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIixYKSx4ZT1q''@;'; put 'put ''Uyh4ZSl9LHVubW91bnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHhlPWw7eGU7KXhlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixfKSx4ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLE8pLHhl''@;'; put 'put ''LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixYKSx4ZT1qUyh4ZSl9LGlzUHJlc3NlZDpmdW5jdGlvbih4ZSl7cmV0dXJuIHZrLmlzUHJlc3NlZCh4ZSl9LHJlbGVhc2VQcmVzc2VkS2V5czpmdW5jdGlvbigpe3JldHVybiB2ay5yZWxlYXNlQWxs''@;'; put 'put ''KCl9fX0oYSxmLGQsaCxmdW5jdGlvbihWZSxaZSl7dmFyIGx0PWFlKFgoKSksZHQ9ITE7aWYoIWx0Lmhhc1Nob3J0Y3V0KFplKSlyZXR1cm4gZHQ7Zm9yKHZhciBndD1sdC5nZXRTaG9ydGN1dHMoWmUpLGp0PTA7anQ8Z3QubGVuZ3RoO2p0Kyspe3ZhciBybj1ndFtqdF0sWHQ9cm4uY2FsbGJh''@;'; put 'put ''Y2ssUW49cm4ucHJldmVudERlZmF1bHQsT3I9cm4uc3RvcFByb3BhZ2F0aW9uLFZyPXJuLmNhcHR1cmVDdHJsO2lmKCExIT09KDAscm4ucnVuT25seUlmKShWZSkmJihiZT1WcixkdD0hMT09PVh0KFZlLFplKSxiZT0hMSxRbiYmVmUucHJldmVudERlZmF1bHQoKSxPciYmVmUuc3RvcFByb3Bh''@;'; put 'put ''Z2F0aW9uKCksZHQpKWJyZWFrfXJldHVybiBkdH0pO3JldHVybiB4ZS5tb3VudCgpLHthZGRDb250ZXh0OmZ1bmN0aW9uKFplKXt2YXIgbHQ9eWx0KFplKTtyZXR1cm4gbS5hZGRJdGVtKFplLGx0KSxsdH0sZ2V0QWN0aXZlQ29udGV4dE5hbWU6WCxnZXRDb250ZXh0OmFlLHNldEFjdGl2ZUNv''@;'; put 'put ''bnRleHROYW1lOmZ1bmN0aW9uKFplKXtfPVplfSxpc0N0cmxQcmVzc2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWJlJiYoeGUuaXNQcmVzc2VkKCJjb250cm9sIil8fHhlLmlzUHJlc3NlZCgibWV0YSIpKX0scmVsZWFzZVByZXNzZWRLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHhlLnJlbGVhc2VQcmVz''@;'; put 'put ''c2VkS2V5cygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHhlLnVubW91bnQoKX19fTtmdW5jdGlvbiBHMChsKXtyZXR1cm4oRzA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBj''@;'; put 'put ''fTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB6aChsLGMpe3JldHVybiBmdW5jdGlvbiBrbHQobCl7aWYoQXJy''@;'; put 'put ''YXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIE1sdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lm''@;'; put 'put ''KGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lm''@;'; put 'put ''KCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8eGhlKGwsYyl8fGZ1bmN0aW9uIFNsdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0''@;'; put 'put ''cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRTkobCl7cmV0dXJuIGZ1bmN0aW9uIEFsdChsKXtpZihBcnJh''@;'; put 'put ''eS5pc0FycmF5KGwpKXJldHVybiBHJChsKX0obCl8fGZ1bmN0aW9uIHhsdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHx4aGUobCl8fGZ1bmN0aW9uIEVsdCgp''@;'; put 'put ''e3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0''@;'; put 'put ''aW9uIHhoZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gRyQobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJN''@;'; put 'put ''YXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEckKGwsYyl9fWZ1bmN0aW9uIEckKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgp''@;'; put 'put ''JiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9dmFyIFRsdD0iZ3JpZERlZmF1bHQiLCQkPW51bGw7ZnVuY3Rpb24gSyQobCxjKXt2YXIgYSxPLFgsYWUscGUsZj10aGlzLGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxoPSExLG09dGhpcyxfPW5ldyBmcyhtKSxiZT0hMDsoZnVuY3Rpb24gSmV0KGwpe3JldHVybiBsPT09SVd9KShkKSYmZnVuY3Rpb24gWGV0KGwpe0RmZS5zZXQobCwhMCl9KHRoaXMpLHRoaXMucm9vdEVsZW1lbnQ9bCx0aGlzLnJvb3RE''@;'; put 'put ''b2N1bWVudD1sLm93bmVyRG9jdW1lbnQsdGhpcy5yb290V2luZG93PXRoaXMucm9vdERvY3VtZW50LmRlZmF1bHRWaWV3LHRoaXMuaXNEZXN0cm95ZWQ9ITEsdGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPTAsdGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyPTA7dmFyIHhlPW51bGwh''@;'; put 'put ''PT0oYT1jPy5sYXlvdXREaXJlY3Rpb24pJiZ2b2lkIDAhPT1hP2E6ImluaGVyaXQiLFZlPVsicnRsIiwibHRyIl0uaW5jbHVkZXMoeGUpP3hlOnRoaXMucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQpLmRpcmVjdGlvbjt0aGlzLnJvb3RFbGVtZW50LnNldEF0''@;'; put 'put ''dHJpYnV0ZSgiZGlyIixWZSksdGhpcy5pc1J0bD1mdW5jdGlvbigpe3JldHVybiJydGwiPT09VmV9LHRoaXMuaXNMdHI9ZnVuY3Rpb24oKXtyZXR1cm4hbS5pc1J0bCgpfSx0aGlzLmdldERpcmVjdGlvbkZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBtLmlzTHRyKCk/MTotMX0sYy5sYW5ndWFn''@;'; put 'put ''ZT1mdW5jdGlvbiBOcnQobCl7dmFyIGM9ZGRlKGwpO3JldHVybiBUJChjKXx8KGM9QSQsaGRlKGwpKSxjfShjLmxhbmd1YWdlKTt2YXIgWmU9bmV3IGdoZShtLGMsW1phdCxLYXRdKSxsdD1aZS5nZXRUYWJsZU1ldGEoKSxkdD1aZS5nZXRHbG9iYWxNZXRhKCksZ3Q9aVIoKTt0aGlzLmNvbnRh''@;'; put 'put ''aW5lcj10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnJlbmRlckNhbGw9ITEsbC5pbnNlcnRCZWZvcmUodGhpcy5jb250YWluZXIsbC5maXJzdENoaWxkKSxSVyh0aGlzKSYmZjBlKGMubGljZW5zZUtleSxsKSx0aGlzLmd1aWQ9Imh0XyIuY29uY2F0KG1ZKCkp''@;'; put 'put ''LHRoaXMuY29sdW1uSW5kZXhNYXBwZXI9bmV3IHNHLHRoaXMucm93SW5kZXhNYXBwZXI9bmV3IHNHLHRoaXMuY29sdW1uSW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJpbmRleGVzU2VxdWVuY2VDaGFuZ2UiLGZ1bmN0aW9uKFN0KXttLnJ1bkhvb2tzKCJhZnRlckNvbHVtblNlcXVlbmNlQ2hh''@;'; put 'put ''bmdlIixTdCl9KSx0aGlzLnJvd0luZGV4TWFwcGVyLmFkZExvY2FsSG9vaygiaW5kZXhlc1NlcXVlbmNlQ2hhbmdlIixmdW5jdGlvbihTdCl7bS5ydW5Ib29rcygiYWZ0ZXJSb3dTZXF1ZW5jZUNoYW5nZSIsU3QpfSksWD1uZXcgQ3R0KG0pLCghdGhpcy5yb290RWxlbWVudC5pZHx8Imh0XyI9''@;'; put 'put ''PT10aGlzLnJvb3RFbGVtZW50LmlkLnN1YnN0cmluZygwLDMpKSYmKHRoaXMucm9vdEVsZW1lbnQuaWQ9dGhpcy5ndWlkKTt2YXIganQ9ZnVuY3Rpb24oRnQpe3ZhciBXdD1GdC5yb3csd249RnQuY29sO3JldHVybiBtLl9jcmVhdGVDZWxsQ29vcmRzKFd0Pj0wP20ucm93SW5kZXhNYXBwZXIu''@;'; put 'put ''Z2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChXdCk6V3Qsd24+PTA/bS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHduKTp3bil9LFh0PW5ldyBYb3QobHQse3Jvd0luZGV4TWFwcGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG0ucm93SW5kZXhNYXBwZXJ9''@;'; put 'put ''LGNvbHVtbkluZGV4TWFwcGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG0uY29sdW1uSW5kZXhNYXBwZXJ9LGNvdW50Q29sczpmdW5jdGlvbigpe3JldHVybiBtLmNvdW50Q29scygpfSxjb3VudFJvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gbS5jb3VudFJvd3MoKX0scHJvcFRvQ29sOmZ1bmN0aW9uKEZ0''@;'; put 'put ''KXtyZXR1cm4gTy5wcm9wVG9Db2woRnQpfSxpc0VkaXRvck9wZW5lZDpmdW5jdGlvbigpe3JldHVybiEhbS5nZXRBY3RpdmVFZGl0b3IoKSYmbS5nZXRBY3RpdmVFZGl0b3IoKS5pc09wZW5lZCgpfSxjb3VudENvbHNUcmFuc2xhdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGYudmlldy5jb3VudFJl''@;'; put 'put ''bmRlcmFibGVDb2x1bW5zKCl9LGNvdW50Um93c1RyYW5zbGF0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZi52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3MoKX0sZ2V0U2hvcnRjdXRNYW5hZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIG0uZ2V0U2hvcnRjdXRNYW5hZ2VyKCl9LGNyZWF0ZUNlbGxDb29yZHM6''@;'; put 'put ''ZnVuY3Rpb24oRnQsV3Qpe3JldHVybiBtLl9jcmVhdGVDZWxsQ29vcmRzKEZ0LFd0KX0sY3JlYXRlQ2VsbFJhbmdlOmZ1bmN0aW9uKEZ0LFd0LHduKXtyZXR1cm4gbS5fY3JlYXRlQ2VsbFJhbmdlKEZ0LFd0LHduKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOmp0LHJlbmRlcmFibGVUb1Zp''@;'; put 'put ''c3VhbENvb3JkczpmdW5jdGlvbihGdCl7dmFyIFd0PUZ0LnJvdyx3bj1GdC5jb2w7cmV0dXJuIG0uX2NyZWF0ZUNlbGxDb29yZHMoV3Q+PTA/bS5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFd0KTpXdCx3bj49MD9tLmNvbHVtbkluZGV4TWFwcGVyLmdldFZp''@;'; put 'put ''c3VhbEZyb21SZW5kZXJhYmxlSW5kZXgod24pOnduKX0saXNEaXNhYmxlZENlbGxTZWxlY3Rpb246ZnVuY3Rpb24oRnQsV3Qpe3JldHVybiBtLmdldENlbGxNZXRhKEZ0LFd0KS5kaXNhYmxlVmlzdWFsU2VsZWN0aW9ufX0pO3RoaXMuc2VsZWN0aW9uPVh0O3ZhciB5bj1mdW5jdGlvbihGdCl7''@;'; put 'put ''RnQuaGlkZGVuSW5kZXhlc0NoYW5nZWQmJmYuc2VsZWN0aW9uLnJlZnJlc2goKX07ZnVuY3Rpb24gUW4oU3Qpe3ZhciBGdD1kZGUoU3QpO1QkKEZ0KT8obS5ydW5Ib29rcygiYmVmb3JlTGFuZ3VhZ2VDaGFuZ2UiLEZ0KSxkdC5sYW5ndWFnZT1GdCxtLnJ1bkhvb2tzKCJhZnRlckxhbmd1YWdl''@;'; put 'put ''Q2hhbmdlIixGdCkpOmhkZShTdCl9ZnVuY3Rpb24gT3IoU3QsRnQpe3ZhciBXdD0iY2xhc3NOYW1lIj09PVN0P20ucm9vdEVsZW1lbnQ6bS50YWJsZTtpZihiZSlnaShXdCxGdCk7ZWxzZXt2YXIgd249W10sU249W107ZHRbU3RdJiYod249QXJyYXkuaXNBcnJheShkdFtTdF0pP2R0W1N0XTpz''@;'; put 'put ''WShkdFtTdF0pKSxGdCYmKFNuPUFycmF5LmlzQXJyYXkoRnQpP0Z0OnNZKEZ0KSk7dmFyIGJyPWxZKHduLFNuKSxkcj1sWShTbix3bik7YnIubGVuZ3RoJiZKbyhXdCxiciksZHIubGVuZ3RoJiZnaShXdCxkcil9ZHRbU3RdPUZ0fWZ1bmN0aW9uIFZyKCl7dmFyIFN0PSExO3JldHVybnt2YWxp''@;'; put 'put ''ZGF0b3JzSW5RdWV1ZTowLHZhbGlkOiEwLGFkZFZhbGlkYXRvclRvUXVldWU6ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcnNJblF1ZXVlKz0xLFN0PSExfSxyZW1vdmVWYWxpZGF0b3JGb3JtUXVldWU6ZnVuY3Rpb24oKXt0aGlzLnZhbGlkYXRvcnNJblF1ZXVlPXRoaXMudmFsaWRhdG9yc0lu''@;'; put 'put ''UXVldWUtMTwwPzA6dGhpcy52YWxpZGF0b3JzSW5RdWV1ZS0xLHRoaXMuY2hlY2tJZlF1ZXVlSXNFbXB0eSgpfSxvblF1ZXVlRW1wdHk6ZnVuY3Rpb24oKXt9LGNoZWNrSWZRdWV1ZUlzRW1wdHk6ZnVuY3Rpb24oKXswPT09dGhpcy52YWxpZGF0b3JzSW5RdWV1ZSYmITE9PT1TdCYmKFN0PSEw''@;'; put 'put ''LHRoaXMub25RdWV1ZUVtcHR5KHRoaXMudmFsaWQpKX19fWZ1bmN0aW9uIFpyKFN0KXt2YXIgRnQ9U3QucmVwbGFjZSgiLCIsIi4iKTtyZXR1cm4hMT09PWlzTmFOKHBhcnNlRmxvYXQoRnQpKT9wYXJzZUZsb2F0KEZ0KTpTdH1mdW5jdGlvbiBpcihTdCxGdCxXdCl7aWYoU3QubGVuZ3RoKXt2''@;'; put 'put ''YXIgd249bS5nZXRBY3RpdmVFZGl0b3IoKSxTbj1uZXcgVnIsYnI9ITA7U24ub25RdWV1ZUVtcHR5PWZ1bmN0aW9uKG9hKXt3biYmYnImJnduLmNhbmNlbENoYW5nZXMoKSxXdChvYSl9O2Zvcih2YXIgZHI9U3QubGVuZ3RoLTE7ZHI+PTA7ZHItLSl7dmFyIExyPXpoKFN0W2RyXSw0KSxOcj1M''@;'; put 'put ''clswXSxxcj1MclszXSxSaT1PLnByb3BUb0NvbChMclsxXSksRG89bS5nZXRDZWxsTWV0YShOcixSaSk7Im51bWVyaWMiPT09RG8udHlwZSYmInN0cmluZyI9PXR5cGVvZiBxciYmajBlKHFyKSYmKFN0W2RyXVszXT1acihxcikpLG0uZ2V0Q2VsbFZhbGlkYXRvcihEbykmJihTbi5hZGRWYWxp''@;'; put 'put ''ZGF0b3JUb1F1ZXVlKCksbS52YWxpZGF0ZUNlbGwoU3RbZHJdWzNdLERvLGZ1bmN0aW9uKG9hLGtvKXtyZXR1cm4gZnVuY3Rpb24ocWkpe2lmKCJib29sZWFuIiE9dHlwZW9mIHFpKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBlcnJvcjogcmVzdWx0IGlzIG5vdCBib29sZWFuIik7aWYo''@;'; put 'put ''ITE9PT1xaSYmITE9PT1rby5hbGxvd0ludmFsaWQpe2JyPSExLFN0LnNwbGljZShvYSwxKSxrby52YWxpZD0hMDt2YXIgeHQ9bS5nZXRDZWxsKGtvLnZpc3VhbFJvdyxrby52aXN1YWxDb2wpO251bGwhPT14dCYmSm8oeHQsbHQuaW52YWxpZENlbGxDbGFzc05hbWUpfVNuLnJlbW92ZVZhbGlk''@;'; put 'put ''YXRvckZvcm1RdWV1ZSgpfX0oZHIsRG8pLEZ0KSl9U24uY2hlY2tJZlF1ZXVlSXNFbXB0eSgpfX1mdW5jdGlvbiBzaShTdCxGdCl7dmFyIFd0PVN0Lmxlbmd0aC0xO2lmKCEoV3Q8MCkpe2Zvcig7V3Q+PTA7V3QtLSl7dmFyIHduPSExO2lmKG51bGwhPT1TdFtXdF0pe2lmKG51bGwhPVN0W1d0''@;'; put 'put ''XVsyXXx8bnVsbCE9U3RbV3RdWzNdKXtpZihsdC5hbGxvd0luc2VydFJvdylmb3IoO1N0W1d0XVswXT5tLmNvdW50Um93cygpLTE7KWlmKDA9PT1PLmNyZWF0ZVJvdyh2b2lkIDAsdm9pZCAwLHtzb3VyY2U6RnR9KS5kZWx0YSl7d249ITA7YnJlYWt9aWYoImFycmF5Ij09PW0uZGF0YVR5cGUm''@;'; put 'put ''JighbHQuY29sdW1uc3x8MD09PWx0LmNvbHVtbnMubGVuZ3RoKSYmbHQuYWxsb3dJbnNlcnRDb2x1bW4pZm9yKDtPLnByb3BUb0NvbChTdFtXdF1bMV0pPm0uY291bnRDb2xzKCktMTspaWYoMD09PU8uY3JlYXRlQ29sKHZvaWQgMCx2b2lkIDAse3NvdXJjZTpGdH0pLmRlbHRhKXt3bj0hMDti''@;'; put 'put ''cmVha313bnx8Ty5zZXQoU3RbV3RdWzBdLFN0W1d0XVsxXSxTdFtXdF1bM10pfX1lbHNlIFN0LnNwbGljZShXdCwxKX1tLmZvcmNlRnVsbFJlbmRlcj0hMCxhZS5hZGp1c3RSb3dzQW5kQ29scygpLG0ucnVuSG9va3MoImJlZm9yZUNoYW5nZVJlbmRlciIsU3QsRnQpLHBlLmxvY2tFZGl0b3Io''@;'; put 'put ''KSxtLl9yZWZyZXNoQm9yZGVycyhudWxsKSxwZS51bmxvY2tFZGl0b3IoKSxtLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksbS5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2UiLFN0LEZ0fHwiZWRpdCIpO3ZhciBOcj1tLmdldEFjdGl2ZUVkaXRvcigpO05yJiZpbyhOci5yZWZyZXNoVmFsdWUpJiZO''@;'; put 'put ''ci5yZWZyZXNoVmFsdWUoKX19ZnVuY3Rpb24gQXIoU3QsRnQsV3Qpe3JldHVybiBBcnJheS5pc0FycmF5KFN0KT9TdDpbW1N0LEZ0LFd0XV19ZnVuY3Rpb24gRW4oU3QsRnQpe3ZhciBXdD1tLmdldEFjdGl2ZUVkaXRvcigpLHduPW0ucnVuSG9va3MoImJlZm9yZUNoYW5nZSIsU3QsRnR8fCJl''@;'; put 'put ''ZGl0IiksU249U3QuZmlsdGVyKGZ1bmN0aW9uKGJyKXtyZXR1cm4gbnVsbCE9PWJyfSk7cmV0dXJuITE9PT13bnx8MD09PVNuLmxlbmd0aD8oV3QmJld0LmNhbmNlbENoYW5nZXMoKSxbXSk6U259dGhpcy5jb2x1bW5JbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIseW4p''@;'; put 'put ''LHRoaXMucm93SW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLHluKSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnQiLGZ1bmN0aW9uKFN0KXtmLnJ1bkhvb2tzKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IixTdCl9KSx0aGlzLnNlbGVj''@;'; put 'put ''dGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IixmdW5jdGlvbihTdCl7Zi5ydW5Ib29rcygiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLFN0KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlU2V0UmFuZ2VFbmQiLGZ1bmN0aW9uKFN0KXtmLnJ1''@;'; put 'put ''bkhvb2tzKCJiZWZvcmVTZXRSYW5nZUVuZCIsU3QpLFN0LnJvdzwwJiYoU3Qucm93PWYudmlldy5fd3Qud3RUYWJsZS5nZXRGaXJzdFZpc2libGVSb3coKSksU3QuY29sPDAmJihTdC5jb2w9Zi52aWV3Ll93dC53dFRhYmxlLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpKX0pLHRoaXMuc2VsZWN0''@;'; put 'put ''aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZXRSYW5nZUVuZCIsZnVuY3Rpb24oU3Qpe3ZhciBGdD1nNSghMSksV3Q9Zi5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLHduPVd0LmN1cnJlbnQoKSxTbj13bi5mcm9tLGJyPXduLnRvLGRyPVd0LnNpemUoKS0xO2YucnVuSG9va3MoImFmdGVy''@;'; put 'put ''U2VsZWN0aW9uIixTbi5yb3csU24uY29sLGJyLnJvdyxici5jb2wsRnQsZHIpLGYucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uQnlQcm9wIixTbi5yb3csbS5jb2xUb1Byb3AoU24uY29sKSxici5yb3csbS5jb2xUb1Byb3AoYnIuY29sKSxGdCxkcik7dmFyIExyPWYuc2VsZWN0aW9uLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUFueUhlYWRlcigpLE5yPWYuc2VsZWN0aW9uLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLGRpPSEwO2gmJihkaT0hMSksRnQuaXNUb3VjaGVkKCkmJihkaT0hRnQudmFsdWUpO3ZhciBxcj1mLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSxSaT1mLnNlbGVjdGlvbi5p''@;'; put 'put ''c1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKTshMSE9PWRpJiYoTHI/cXI/Zi52aWV3LnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShtLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoU3Qucm93KSk6UmkmJmYudmlldy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxs''@;'; put 'put ''eShtLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoU3QuY29sKSk6TnImJiFmLnNlbGVjdGlvbi5pc011bHRpcGxlKCk/Zi52aWV3LnNjcm9sbFZpZXdwb3J0KGp0KE5yLmZyb20pKTpmLnZpZXcuc2Nyb2xsVmlld3BvcnQoanQoU3QpKSkscXImJlJpP2dp''@;'; put 'put ''KGYucm9vdEVsZW1lbnQsWyJodF9fc2VsZWN0aW9uLS1yb3dzIiwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyJdKTpxcj8oSm8oZi5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyIpLGdpKGYucm9vdEVsZW1lbnQsImh0X19zZWxlY3Rpb24tLXJvd3MiKSk6Umk/KEpvKGYucm9v''@;'; put 'put ''dEVsZW1lbnQsImh0X19zZWxlY3Rpb24tLXJvd3MiKSxnaShmLnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIikpOkpvKGYucm9vdEVsZW1lbnQsWyJodF9fc2VsZWN0aW9uLS1yb3dzIiwiaHRfX3NlbGVjdGlvbi0tY29sdW1ucyJdKSxmLl9yZWZyZXNoQm9yZGVycyhudWxs''@;'; put 'put ''KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25GaW5pc2hlZCIsZnVuY3Rpb24oU3Qpe3ZhciBGdD1TdC5sZW5ndGgtMSxXdD1TdFtGdF0sd249V3QuZnJvbSxTbj1XdC50bztmLnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkVuZCIsd24ucm93LHduLmNvbCxT''@;'; put 'put ''bi5yb3csU24uY29sLEZ0KSxmLnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcCIsd24ucm93LG0uY29sVG9Qcm9wKHduLmNvbCksU24ucm93LG0uY29sVG9Qcm9wKFNuLmNvbCksRnQpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rp''@;'; put 'put ''b24iLGZ1bmN0aW9uKFN0KXt2YXIgRnQ9Zi5ydW5Ib29rcygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIixTdC52YWx1ZSk7U3QudmFsdWUmJihTdC52YWx1ZT1GdCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZU1vZGlmeVRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbihT''@;'; put 'put ''dCl7Zi5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLFN0KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oU3QsRnQsV3Qpe2YucnVuSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLFN0LEZ0LFd0''@;'; put 'put ''KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbihTdCl7Zi5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtRW5kIixTdCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIixm''@;'; put 'put ''dW5jdGlvbihTdCxGdCxXdCl7Zi5ydW5Ib29rcygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQiLFN0LEZ0LFd0KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJEZXNlbGVjdCIsZnVuY3Rpb24oKXtwZS5kZXN0cm95RWRpdG9yKCksZi5fcmVmcmVzaEJvcmRlcnMoKSxKbyhm''@;'; put 'put ''LnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiXSksZi5ydW5Ib29rcygiYWZ0ZXJEZXNlbGVjdCIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJpbnNlcnRSb3dSZXF1aXJlIixmdW5jdGlvbihTdCl7Zi5hbHRlcigiaW5z''@;'; put 'put ''ZXJ0X3Jvd19hYm92ZSIsU3QsMSwiYXV0byIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJpbnNlcnRDb2xSZXF1aXJlIixmdW5jdGlvbihTdCl7Zi5hbHRlcigiaW5zZXJ0X2NvbF9zdGFydCIsU3QsMSwiYXV0byIpfSksYWU9e2FsdGVyOmZ1bmN0aW9uKEZ0LFd0KXt2YXIgd24s''@;'; put 'put ''U24sYnI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEsZHI9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAsTHI9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAsTnI9ZnVuY3Rpb24ocHMpe2lm''@;'; put 'put ''KDA9PT1wcy5sZW5ndGgpcmV0dXJuW107dmFyIHVsPUU5KHBzKTtyZXR1cm4gdWwuc29ydChmdW5jdGlvbihUcyxHbCl7dmFyIGxzPXpoKFRzLDEpWzBdLFZzPXpoKEdsLDEpWzBdO3JldHVybiBscz09PVZzPzA6bHM+VnM/MTotMX0pLFBzKHVsLGZ1bmN0aW9uKFRzLEdsKXt2YXIgTnM9emgo''@;'; put 'put ''R2wsMiksbHM9TnNbMF0sU3U9TnNbMV0sVnM9VHNbVHMubGVuZ3RoLTFdLFcxPXpoKFZzLDIpLHNtPVcxWzBdK1cxWzFdO2lmKGxzPD1zbSl7dmFyICRkPU1hdGgubWF4KFN1LShzbS1scyksMCk7VnNbMV0rPSRkfWVsc2UgVHMucHVzaChbbHMsU3VdKTtyZXR1cm4gVHN9LFt1bFswXV0pfTtz''@;'; put 'put ''d2l0Y2goRnQpe2Nhc2UiaW5zZXJ0X3Jvd19iZWxvdyI6Y2FzZSJpbnNlcnRfcm93X2Fib3ZlIjp2YXIgZGk9bS5jb3VudFNvdXJjZVJvd3MoKTtpZihsdC5tYXhSb3dzPT09ZGkpcmV0dXJuO3ZhciBxcj0iaW5zZXJ0X3Jvd19iZWxvdyI9PT1GdD8iYmVsb3ciOiJhYm92ZSI7V3Q9bnVsbCE9''@;'; put 'put ''PSh3bj1XdCkmJnZvaWQgMCE9PXduP3duOiJiZWxvdyI9PT1xcj9kaTowO3ZhciBSaT1PLmNyZWF0ZVJvdyhXdCxicix7c291cmNlOmRyLG1vZGU6cXJ9KSxEbz1SaS5kZWx0YSxvYT1SaS5zdGFydFBoeXNpY2FsSW5kZXg7aWYoRG8pe3ZhciBrbz1YdC5zZWxlY3RlZFJhbmdlLmN1cnJlbnQo''@;'; put 'put ''KSxxaT1rbz8uZnJvbSx4dD1xaT8ucm93LExpPW0udG9WaXN1YWxSb3cob2EpO2lmKFh0LmlzU2VsZWN0ZWRCeUNvcm5lcigpKW0uc2VsZWN0QWxsKCk7ZWxzZSBpZihpbyh4dCkmJnh0Pj1MaSl7dmFyIFphPWtvLnRvLGRzPVphLnJvdyx2bD1aYS5jb2wsaHM9cWkuY29sO1h0LmlzU2VsZWN0''@;'; put 'put ''ZWRCeVJvd0hlYWRlcigpJiYoaHM9LTEpLFh0LmdldFNlbGVjdGVkUmFuZ2UoKS5wb3AoKSxYdC5zZXRSYW5nZVN0YXJ0T25seShtLl9jcmVhdGVDZWxsQ29vcmRzKHh0K0RvLGhzKSwhMCksWHQuc2V0UmFuZ2VFbmQobS5fY3JlYXRlQ2VsbENvb3JkcyhkcytEbyx2bCkpfWVsc2UgbS5fcmVm''@;'; put 'put ''cmVzaEJvcmRlcnMoKX1icmVhaztjYXNlImluc2VydF9jb2xfc3RhcnQiOmNhc2UiaW5zZXJ0X2NvbF9lbmQiOnZhciBIcz0iaW5zZXJ0X2NvbF9lbmQiPT09RnQ/ImVuZCI6InN0YXJ0IjtXdD1udWxsIT09KFNuPVd0KSYmdm9pZCAwIT09U24/U246ImVuZCI9PT1Icz9tLmNvdW50U291cmNl''@;'; put 'put ''Q29scygpOjA7dmFyIGMwPU8uY3JlYXRlQ29sKFd0LGJyLHtzb3VyY2U6ZHIsbW9kZTpIc30pLERjPWMwLmRlbHRhLHN1PWMwLnN0YXJ0UGh5c2ljYWxJbmRleDtpZihEYyl7aWYoQXJyYXkuaXNBcnJheShsdC5jb2xIZWFkZXJzKSl7dmFyIEIxPVttLnRvVmlzdWFsQ29sdW1uKHN1KSwwXTtC''@;'; put 'put ''MS5sZW5ndGgrPURjLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkobHQuY29sSGVhZGVycyxCMSl9dmFyIGoxPVh0LnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLEljPWoxPy5mcm9tLHRjPUljPy5jb2wsUmM9bS50b1Zpc3VhbENvbHVtbihzdSk7aWYoWHQuaXNTZWxlY3RlZEJ5Q29ybmVy''@;'; put 'put ''KCkpbS5zZWxlY3RBbGwoKTtlbHNlIGlmKGlvKHRjKSYmdGM+PVJjKXt2YXIgejE9ajEudG8sVTE9ejEucm93LFoxPXoxLmNvbCxHZD1JYy5yb3c7WHQuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJihHZD0tMSksWHQuZ2V0U2VsZWN0ZWRSYW5nZSgpLnBvcCgpLFh0LnNldFJhbmdlU3Rh''@;'; put 'put ''cnRPbmx5KG0uX2NyZWF0ZUNlbGxDb29yZHMoR2QsdGMrRGMpLCEwKSxYdC5zZXRSYW5nZUVuZChtLl9jcmVhdGVDZWxsQ29vcmRzKFUxLFoxK0RjKSl9ZWxzZSBtLl9yZWZyZXNoQm9yZGVycygpfWJyZWFrO2Nhc2UicmVtb3ZlX3JvdyI6dmFyIHpmPWZ1bmN0aW9uKHBzKXt2YXIgdWw9MDtS''@;'; put 'put ''bihwcyxmdW5jdGlvbihxMCl7dmFyIFRzPXpoKHEwLDIpLEdsPVRzWzBdLE5zPVRzWzFdLGxzPXd1KEdsKT9tLmNvdW50Um93cygpLTE6TWF0aC5tYXgoR2wtdWwsMCk7aWYoTnVtYmVyLmlzSW50ZWdlcihHbCkmJihHbD1NYXRoLm1heChHbC11bCwwKSksTy5yZW1vdmVSb3coR2wsTnMsZHIp''@;'; put 'put ''KXt2YXIgVnM9bS5jb3VudFJvd3MoKSxXMT1sdC5maXhlZFJvd3NUb3A7VzE+PWxzKzEmJihsdC5maXhlZFJvd3NUb3AtPU1hdGgubWluKE5zLFcxLWxzKSk7dmFyIFgzPWx0LmZpeGVkUm93c0JvdHRvbTtYMyYmbHM+PVZzLVgzJiYobHQuZml4ZWRSb3dzQm90dG9tLT1NYXRoLm1pbihOcyxY''@;'; put 'put ''MykpLHVsKz1Oc319KX07QXJyYXkuaXNBcnJheShXdCk/emYoTnIoV3QpKTp6ZihbW1d0LGJyXV0pLGFlLmFkanVzdFJvd3NBbmRDb2xzKCksbS5fcmVmcmVzaEJvcmRlcnMoKTticmVhaztjYXNlInJlbW92ZV9jb2wiOnZhciBoYz1mdW5jdGlvbihwcyl7dmFyIHVsPTA7Um4ocHMsZnVuY3Rp''@;'; put 'put ''b24ocTApe3ZhciBUcz16aChxMCwyKSxHbD1Uc1swXSxOcz1Uc1sxXSxscz13dShHbCk/bS5jb3VudENvbHMoKS0xOk1hdGgubWF4KEdsLXVsLDApLFN1PW0udG9QaHlzaWNhbENvbHVtbihscyk7aWYoTnVtYmVyLmlzSW50ZWdlcihHbCkmJihHbD1NYXRoLm1heChHbC11bCwwKSksTy5yZW1v''@;'; put 'put ''dmVDb2woR2wsTnMsZHIpKXt2YXIgVzE9bHQuZml4ZWRDb2x1bW5zU3RhcnQ7VzE+PWxzKzEmJihsdC5maXhlZENvbHVtbnNTdGFydC09TWF0aC5taW4oTnMsVzEtbHMpKSxBcnJheS5pc0FycmF5KGx0LmNvbEhlYWRlcnMpJiYodHlwZW9mIFN1PiJ1IiYmKFN1PS0xKSxsdC5jb2xIZWFkZXJz''@;'; put 'put ''LnNwbGljZShTdSxOcykpLHVsKz1Oc319KX07QXJyYXkuaXNBcnJheShXdCk/aGMoTnIoV3QpKTpoYyhbW1d0LGJyXV0pLGFlLmFkanVzdFJvd3NBbmRDb2xzKCksbS5fcmVmcmVzaEJvcmRlcnMoKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gc3VjaCBhY3Rp''@;'; put 'put ''b24gIicuY29uY2F0KEZ0LCciJykpfUxyfHxhZS5hZGp1c3RSb3dzQW5kQ29scygpfSxhZGp1c3RSb3dzQW5kQ29sczpmdW5jdGlvbigpe3ZhciBkaSxGdD1sdC5taW5Sb3dzLFd0PWx0Lm1pblNwYXJlUm93cyx3bj1sdC5taW5Db2xzLFNuPWx0Lm1pblNwYXJlQ29scztpZigwPT09bS5jb3Vu''@;'; put 'put ''dFJvd3MoKSYmMD09PW0uY291bnRDb2xzKCkmJlh0LmRlc2VsZWN0KCksRnQpe3ZhciBicj1tLmNvdW50Um93cygpO2JyPEZ0JiZPLmNyZWF0ZVJvdyhicixGdC1icix7c291cmNlOiJhdXRvIn0pfWlmKFd0KXt2YXIgZHI9bS5jb3VudEVtcHR5Um93cyghMCk7aWYoZHI8V3Qpe3ZhciBOcj1N''@;'; put 'put ''YXRoLm1pbihXdC1kcixsdC5tYXhSb3dzLW0uY291bnRTb3VyY2VSb3dzKCkpO08uY3JlYXRlUm93KG0uY291bnRSb3dzKCksTnIse3NvdXJjZToiYXV0byJ9KX19KHdufHxTbikmJihkaT1tLmNvdW50RW1wdHlDb2xzKCEwKSk7dmFyIHFyPW0uY291bnRDb2xzKCk7aWYod24mJiFsdC5jb2x1''@;'; put 'put ''bW5zJiZxcjx3bil7dmFyIFJpPXduLXFyO2RpKz1SaSxPLmNyZWF0ZUNvbChxcixSaSx7c291cmNlOiJhdXRvIn0pfWlmKFNuJiYhbHQuY29sdW1ucyYmImFycmF5Ij09PW0uZGF0YVR5cGUmJmRpPFNuKXtxcj1tLmNvdW50Q29scygpO3ZhciBvYT1NYXRoLm1pbihTbi1kaSxsdC5tYXhDb2xz''@;'; put 'put ''LXFyKTtPLmNyZWF0ZUNvbChxcixvYSx7c291cmNlOiJhdXRvIn0pfWlmKFh0LmlzU2VsZWN0ZWQoKSl7dmFyIGtvPW0uY291bnRSb3dzKCkscWk9bS5jb3VudENvbHMoKTtSbihYdC5zZWxlY3RlZFJhbmdlLGZ1bmN0aW9uKHh0KXt2YXIgTGk9ITEsWmE9eHQuZnJvbS5yb3csZHM9eHQuZnJv''@;'; put 'put ''bS5jb2wsdmw9eHQudG8ucm93LGhzPXh0LnRvLmNvbDtaYT5rby0xPyhMaT0hMCx2bD4oWmE9a28tMSkmJih2bD1aYSkpOnZsPmtvLTEmJihMaT0hMCxaYT4odmw9a28tMSkmJihaYT12bCkpLGRzPnFpLTE/KExpPSEwLGhzPihkcz1xaS0xKSYmKGhzPWRzKSk6aHM+cWktMSYmKExpPSEwLGRz''@;'; put 'put ''Pihocz1xaS0xKSYmKGRzPWhzKSksTGkmJm0uc2VsZWN0Q2VsbChaYSxkcyx2bCxocyl9KX1tLnZpZXcmJm0udmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX0scG9wdWxhdGVGcm9tQXJyYXk6ZnVuY3Rpb24oRnQsV3Qsd24sU24sYnIpe3ZhciBkcixMcixOcixkaSxxcj1bXSxSaT17fSxEbz1b''@;'; put 'put ''XSxvYT1GdC5yb3csa289RnQuY29sO2lmKDA9PT0oTHI9V3QubGVuZ3RoKSlyZXR1cm4hMTt2YXIgcWk9MCx4dD0wO3N3aXRjaChwYSh3bikmJihxaT13bi5jb2wta28rMSx4dD13bi5yb3ctb2ErMSksYnIpe2Nhc2Uic2hpZnRfZG93biI6dmFyIExpPUZTKFd0KSxaYT1MaS5sZW5ndGgsZHM9''@;'; put 'put ''TWF0aC5tYXgoWmEscWkpLHZsPW0uZ2V0RGF0YSgpLnNsaWNlKG9hKSxocz1GUyh2bCkuc2xpY2Uoa28sa28rZHMpO2ZvcihOcj0wO05yPGRzO05yKz0xKWlmKE5yPFphKXtmb3IoZHI9MCxMcj1MaVtOcl0ubGVuZ3RoO2RyPHh0LUxyO2RyKz0xKUxpW05yXS5wdXNoKExpW05yXVtkciVMcl0p''@;'; put 'put ''O0RvLnB1c2goTGlbTnJdLmNvbmNhdChOcjxocy5sZW5ndGg/aHNbTnJdOm5ldyBBcnJheSh2bC5sZW5ndGgpLmZpbGwobnVsbCkpKX1lbHNlIERvLnB1c2goTGlbTnIlWmFdLmNvbmNhdChoc1tOcl0pKTttLnBvcHVsYXRlRnJvbUFycmF5KG9hLGtvLEZTKERvKSk7YnJlYWs7Y2FzZSJzaGlm''@;'; put 'put ''dF9yaWdodCI6dmFyIEhzPVd0Lmxlbmd0aCxjMD1NYXRoLm1heChIcyx4dCksRGM9bS5nZXREYXRhKCkuc2xpY2Uob2EpLm1hcChmdW5jdGlvbihHbCl7cmV0dXJuIEdsLnNsaWNlKGtvKX0pO2Zvcihkcj0wO2RyPGMwO2RyKz0xKWlmKGRyPEhzKXtmb3IoTnI9MCxkaT1XdFtkcl0ubGVuZ3Ro''@;'; put 'put ''O05yPHFpLWRpO05yKz0xKVd0W2RyXS5wdXNoKFd0W2RyXVtOciVkaV0pO3ZhciBCMTtpZihkcjxEYy5sZW5ndGgpZm9yKHZhciBzdT0wO3N1PERjW2RyXS5sZW5ndGg7c3UrPTEpV3RbZHJdLnB1c2goRGNbZHJdW3N1XSk7ZWxzZShCMT1XdFtkcl0pLnB1c2guYXBwbHkoQjEsRTkobmV3IEFy''@;'; put 'put ''cmF5KERjWzBdLmxlbmd0aCkuZmlsbChudWxsKSkpfWVsc2UgV3QucHVzaChXdFtkciVMcl0uc2xpY2UoMCxjMCkuY29uY2F0KERjW2RyXSkpO20ucG9wdWxhdGVGcm9tQXJyYXkob2Esa28sV3QpO2JyZWFrO2RlZmF1bHQ6Umkucm93PUZ0LnJvdyxSaS5jb2w9RnQuY29sO3ZhciBSYyxqMT0w''@;'; put 'put ''LEljPTAsdGM9ITAsejE9ZnVuY3Rpb24oTnMpe3ZhciBscz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxTdT1XdFtOcyVXdC5sZW5ndGhdO3JldHVybiBudWxsIT09bHM/U3VbbHMlU3UubGVuZ3RoXTpTdX0sVTE9V3QubGVuZ3Ro''@;'; put 'put ''LFoxPXduP3duLnJvdy1GdC5yb3crMTowO2ZvcihMcj13bj9aMTpNYXRoLm1heChVMSxaMSksZHI9MDtkcjxMciYmISh3biYmUmkucm93PnduLnJvdyYmWjE+VTF8fCFsdC5hbGxvd0luc2VydFJvdyYmUmkucm93Pm0uY291bnRSb3dzKCktMXx8Umkucm93Pj1sdC5tYXhSb3dzKTtkcisrKXt2''@;'; put 'put ''YXIgR2Q9ZHItajEsemY9ejEoR2QpLmxlbmd0aCxoYz13bj93bi5jb2wtRnQuY29sKzE6MDtpZihkaT13bj9oYzpNYXRoLm1heCh6ZixoYyksUmkuY29sPUZ0LmNvbCxSYz1tLmdldENlbGxNZXRhKFJpLnJvdyxSaS5jb2wpLCJDb3B5UGFzdGUucGFzdGUiIT09U24mJiJBdXRvZmlsbC5maWxs''@;'; put 'put ''IiE9PVNufHwhUmMuc2tpcFJvd09uUGFzdGUpe2ZvcihJYz0wLE5yPTA7TnI8ZGkmJiEod24mJlJpLmNvbD53bi5jb2wmJmhjPnpmfHwhbHQuYWxsb3dJbnNlcnRDb2x1bW4mJlJpLmNvbD5tLmNvdW50Q29scygpLTF8fFJpLmNvbD49bHQubWF4Q29scyk7TnIrKylpZihSYz1tLmdldENlbGxN''@;'; put 'put ''ZXRhKFJpLnJvdyxSaS5jb2wpLCJDb3B5UGFzdGUucGFzdGUiIT09U24mJiJBdXRvZmlsbC5maWxsIiE9PVNufHwhUmMuc2tpcENvbHVtbk9uUGFzdGUpaWYoUmMucmVhZE9ubHkmJiJVbmRvUmVkby51bmRvIiE9PVNuKVJpLmNvbCs9MTtlbHNle3ZhciBwcz16MShHZCxOci1JYyksdWw9bS5n''@;'; put 'put ''ZXREYXRhQXRDZWxsKFJpLnJvdyxSaS5jb2wpO2lmKG51bGwhPT1wcyYmIm9iamVjdCI9PT1HMChwcykpaWYoQXJyYXkuaXNBcnJheShwcykmJm51bGw9PT11bCYmKHVsPVtdKSxudWxsPT09dWx8fCJvYmplY3QiIT09RzAodWwpKXRjPSExO2Vsc2V7dmFyIHEwPVA3KEFycmF5LmlzQXJyYXko''@;'; put 'put ''dWwpP3VsOnVsWzBdfHx1bCksVHM9UDcoQXJyYXkuaXNBcnJheShwcyk/cHM6cHNbMF18fHBzKTtqSShxMCxUcyl8fEFycmF5LmlzQXJyYXkocTApJiZBcnJheS5pc0FycmF5KFRzKT9wcz14Yyhwcyk6dGM9ITF9ZWxzZSBudWxsIT09dWwmJiJvYmplY3QiPT09RzAodWwpJiYodGM9ITEpO3Rj''@;'; put 'put ''JiZxci5wdXNoKFtSaS5yb3csUmkuY29sLHBzXSksdGM9ITAsUmkuY29sKz0xfWVsc2UgSWMrPTEsUmkuY29sKz0xLGRpKz0xO1JpLnJvdys9MX1lbHNlIGoxKz0xLFJpLnJvdys9MSxMcis9MX1tLnNldERhdGFBdENlbGwocXIsbnVsbCxudWxsLFNufHwicG9wdWxhdGVGcm9tQXJyYXkiKX19''@;'; put 'put ''fSx0aGlzLmluaXQ9ZnVuY3Rpb24oKXtYLnNldERhdGEobHQuZGF0YSksbS5ydW5Ib29rcygiYmVmb3JlSW5pdCIpLChQZCgpfHxmWSgpKSYmZ2kobS5yb290RWxlbWVudCwibW9iaWxlIiksdGhpcy51cGRhdGVTZXR0aW5ncyhsdCwhMCksdGhpcy52aWV3PW5ldyBkdHQodGhpcykscGU9cUdl''@;'; put 'put ''LmdldEluc3RhbmNlKG0sbHQsWHQpLG0ucnVuSG9va3MoImluaXQiKSx0aGlzLmZvcmNlRnVsbFJlbmRlcj0hMCx0aGlzLnZpZXcucmVuZGVyKCksYmUmJm51bGw9PT1tLnJvb3RFbGVtZW50Lm9mZnNldFBhcmVudCYmUzBlKG0ucm9vdEVsZW1lbnQsZnVuY3Rpb24oKXttLnZpZXcuX3d0Lnd0''@;'; put 'put ''T3ZlcmxheXMudXBkYXRlTGFzdFNwcmVhZGVyU2l6ZSgpLG0ucmVuZGVyKCksbS52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSksIm9iamVjdCI9PT1HMChiZSkmJihtLnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsYmVbMF0sYmVbMV0pLGJlPSExKSxtLnJ1bkhvb2tzKCJhZnRlckluaXQiKX0s''@;'; put 'put ''dGhpcy5fY3JlYXRlQ2VsbENvb3Jkcz1mdW5jdGlvbihTdCxGdCl7cmV0dXJuIG0udmlldy5fd3QuY3JlYXRlQ2VsbENvb3JkcyhTdCxGdCl9LHRoaXMuX2NyZWF0ZUNlbGxSYW5nZT1mdW5jdGlvbihTdCxGdCxXdCl7cmV0dXJuIG0udmlldy5fd3QuY3JlYXRlQ2VsbFJhbmdlKFN0LEZ0LFd0''@;'; put 'put ''KX0sdGhpcy52YWxpZGF0ZUNlbGw9ZnVuY3Rpb24oU3QsRnQsV3Qsd24pe3ZhciBkcixTbj1tLmdldENlbGxWYWxpZGF0b3IoRnQpO2Z1bmN0aW9uIGJyKGRyKXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmIWFyZ3VtZW50c1sxXXx8ITA9PT1GdC5oaWRk''@;'; put 'put ''ZW4pV3QoZHIpO2Vsc2V7dmFyIE5yPUZ0LnZpc3VhbENvbCxkaT1GdC52aXN1YWxSb3cscXI9bS5nZXRDZWxsKGRpLE5yLCEwKTtpZihxciYmIlRIIiE9PXFyLm5vZGVOYW1lKXt2YXIgUmk9bS5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGRpKSxEbz1tLmNv''@;'; put 'put ''bHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoTnIpO20udmlldy5fd3QuZ2V0U2V0dGluZygiY2VsbFJlbmRlcmVyIixSaSxEbyxxcil9V3QoZHIpfX1hMGUoU24pJiYoZHI9U24sU249ZnVuY3Rpb24oTHIsTnIpe05yKGRyLnRlc3QoTHIpKX0pLFBsKFNuKT8o''@;'; put 'put ''U3Q9bS5ydW5Ib29rcygiYmVmb3JlVmFsaWRhdGUiLFN0LEZ0LnZpc3VhbFJvdyxGdC5wcm9wLHduKSxtLl9yZWdpc3RlckltbWVkaWF0ZShmdW5jdGlvbigpe1NuLmNhbGwoRnQsU3QsZnVuY3Rpb24oZHIpe20mJihkcj1tLnJ1bkhvb2tzKCJhZnRlclZhbGlkYXRlIixkcixTdCxGdC52aXN1''@;'; put 'put ''YWxSb3csRnQucHJvcCx3biksRnQudmFsaWQ9ZHIsYnIoZHIpLG0ucnVuSG9va3MoInBvc3RBZnRlclZhbGlkYXRlIixkcixTdCxGdC52aXN1YWxSb3csRnQucHJvcCx3bikpfSl9KSk6bS5fcmVnaXN0ZXJJbW1lZGlhdGUoZnVuY3Rpb24oKXtGdC52YWxpZD0hMCxicihGdC52YWxpZCwhMSl9''@;'; put 'put ''KX0sdGhpcy5zZXREYXRhQXRDZWxsPWZ1bmN0aW9uKFN0LEZ0LFd0LHduKXt2YXIgTHIsTnIsZGksU249QXIoU3QsRnQsV3QpLGJyPVtdLGRyPXduO2ZvcihMcj0wLE5yPVNuLmxlbmd0aDtMcjxOcjtMcisrKXtpZigib2JqZWN0IiE9PUcwKFNuW0xyXSkpdGhyb3cgbmV3IEVycm9yKCJNZXRo''@;'; put 'put ''b2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IG51bWJlciBvciBjaGFuZ2VzIGFycmF5IG9mIGFycmF5cyBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyIik7aWYoIm51bWJlciIhPXR5cGVvZiBTbltMcl1bMV0pdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2Vw''@;'; put 'put ''dHMgcm93IGFuZCBjb2x1bW4gbnVtYmVyIGFzIGl0cyBwYXJhbWV0ZXJzLiBJZiB5b3Ugd2FudCB0byB1c2Ugb2JqZWN0IHByb3BlcnR5IG5hbWUsIHVzZSBtZXRob2QgYHNldERhdGFBdFJvd1Byb3BgIik7ZGk9U25bTHJdWzFdPj10aGlzLmNvdW50Q29scygpP1NuW0xyXVsxXTpPLmNvbFRv''@;'; put 'put ''UHJvcChTbltMcl1bMV0pLGJyLnB1c2goW1NuW0xyXVswXSxkaSxYLmdldEF0Q2VsbCh0aGlzLnRvUGh5c2ljYWxSb3coU25bTHJdWzBdKSxTbltMcl1bMV0pLFNuW0xyXVsyXV0pfSFkciYmIm9iamVjdCI9PT1HMChTdCkmJihkcj1GdCk7dmFyIHFyPUVuKGJyLHduKTttLnJ1bkhvb2tzKCJh''@;'; put 'put ''ZnRlclNldERhdGFBdENlbGwiLHFyLGRyKSxpcihxcixkcixmdW5jdGlvbigpe3NpKHFyLGRyKX0pfSx0aGlzLnNldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24oU3QsRnQsV3Qsd24pe3ZhciBMcixOcixTbj1BcihTdCxGdCxXdCksYnI9W10sZHI9d247Zm9yKExyPTAsTnI9U24ubGVuZ3RoO0xy''@;'; put 'put ''PE5yO0xyKyspYnIucHVzaChbU25bTHJdWzBdLFNuW0xyXVsxXSxYLmdldEF0Q2VsbCh0aGlzLnRvUGh5c2ljYWxSb3coU25bTHJdWzBdKSxTbltMcl1bMV0pLFNuW0xyXVsyXV0pOyFkciYmIm9iamVjdCI9PT1HMChTdCkmJihkcj1GdCk7dmFyIGRpPUVuKGJyLHduKTttLnJ1bkhvb2tzKCJh''@;'; put 'put ''ZnRlclNldERhdGFBdFJvd1Byb3AiLGRpLGRyKSxpcihkaSxkcixmdW5jdGlvbigpe3NpKGRpLGRyKX0pfSx0aGlzLmxpc3Rlbj1mdW5jdGlvbigpe20mJiFtLmlzTGlzdGVuaW5nKCkmJigkJD1tLmd1aWQsbS5ydW5Ib29rcygiYWZ0ZXJMaXN0ZW4iKSl9LHRoaXMudW5saXN0ZW49ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmlzTGlzdGVuaW5nKCkmJigkJD1udWxsLG0ucnVuSG9va3MoImFmdGVyVW5saXN0ZW4iKSl9LHRoaXMuaXNMaXN0ZW5pbmc9ZnVuY3Rpb24oKXtyZXR1cm4gJCQ9PT1tLmd1aWR9LHRoaXMuZGVzdHJveUVkaXRvcj1mdW5jdGlvbigpe20uX3JlZnJlc2hCb3JkZXJzKGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sIShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSl9LHRoaXMucG9wdWxhdGVGcm9tQXJyYXk9ZnVuY3Rpb24oU3QsRnQsV3Qsd24sU24sYnIsZHIp''@;'; put 'put ''e2lmKCJvYmplY3QiIT09RzAoV3QpfHwib2JqZWN0IiE9PUcwKFd0WzBdKSl0aHJvdyBuZXcgRXJyb3IoInBvcHVsYXRlRnJvbUFycmF5IHBhcmFtZXRlciBgaW5wdXRgIG11c3QgYmUgYW4gYXJyYXkgb2YgYXJyYXlzIik7dmFyIExyPSJudW1iZXIiPT10eXBlb2Ygd24/bS5fY3JlYXRlQ2Vs''@;'; put 'put ''bENvb3Jkcyh3bixTbik6bnVsbDtyZXR1cm4gYWUucG9wdWxhdGVGcm9tQXJyYXkobS5fY3JlYXRlQ2VsbENvb3JkcyhTdCxGdCksV3QsTHIsYnIsZHIpfSx0aGlzLnNwbGljZUNvbD1mdW5jdGlvbihTdCxGdCxXdCl7Zm9yKHZhciB3bixTbj1hcmd1bWVudHMubGVuZ3RoLGJyPW5ldyBBcnJh''@;'; put 'put ''eShTbj4zP1NuLTM6MCksZHI9MztkcjxTbjtkcisrKWJyW2RyLTNdPWFyZ3VtZW50c1tkcl07cmV0dXJuKHduPU8pLnNwbGljZUNvbC5hcHBseSh3bixbU3QsRnQsV3RdLmNvbmNhdChicikpfSx0aGlzLnNwbGljZVJvdz1mdW5jdGlvbihTdCxGdCxXdCl7Zm9yKHZhciB3bixTbj1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoLGJyPW5ldyBBcnJheShTbj4zP1NuLTM6MCksZHI9MztkcjxTbjtkcisrKWJyW2RyLTNdPWFyZ3VtZW50c1tkcl07cmV0dXJuKHduPU8pLnNwbGljZVJvdy5hcHBseSh3bixbU3QsRnQsV3RdLmNvbmNhdChicikpfSx0aGlzLmdldFNlbGVjdGVkPWZ1bmN0aW9uKCl7aWYoWHQu''@;'; put 'put ''aXNTZWxlY3RlZCgpKXJldHVybiBoYShYdC5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oU3Qpe3ZhciBGdD1TdC5mcm9tLFd0PVN0LnRvO3JldHVybltGdC5yb3csRnQuY29sLFd0LnJvdyxXdC5jb2xdfSl9LHRoaXMuZ2V0U2VsZWN0ZWRMYXN0PWZ1bmN0aW9uKCl7dmFyIEZ0LFN0PXRo''@;'; put 'put ''aXMuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4gU3QmJlN0Lmxlbmd0aD4wJiYoRnQ9U3RbU3QubGVuZ3RoLTFdKSxGdH0sdGhpcy5nZXRTZWxlY3RlZFJhbmdlPWZ1bmN0aW9uKCl7aWYoWHQuaXNTZWxlY3RlZCgpKXJldHVybiBBcnJheS5mcm9tKFh0LmdldFNlbGVjdGVkUmFuZ2UoKSl9LHRoaXMu''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZUxhc3Q9ZnVuY3Rpb24oKXt2YXIgRnQsU3Q9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCk7cmV0dXJuIFN0JiZTdC5sZW5ndGg+MCYmKEZ0PVN0W1N0Lmxlbmd0aC0xXSksRnR9LHRoaXMuZW1wdHlTZWxlY3RlZENlbGxzPWZ1bmN0aW9uKFN0KXt2YXIgRnQ9dGhpcztp''@;'; put 'put ''ZihYdC5pc1NlbGVjdGVkKCkmJjAhPT10aGlzLmNvdW50Um93cygpJiYwIT09dGhpcy5jb3VudENvbHMoKSl7dmFyIFd0PVtdO1JuKFh0LmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbih3bil7dmFyIFNuPXduLmdldFRvcFN0YXJ0Q29ybmVyKCksYnI9d24uZ2V0Qm90dG9tRW5kQ29ybmVy''@;'; put 'put ''KCk7X28oU24ucm93LGJyLnJvdyxmdW5jdGlvbihkcil7X28oU24uY29sLGJyLmNvbCxmdW5jdGlvbihMcil7RnQuZ2V0Q2VsbE1ldGEoZHIsTHIpLnJlYWRPbmx5fHxXdC5wdXNoKFtkcixMcixudWxsXSl9KX0pfSksV3QubGVuZ3RoPjAmJnRoaXMuc2V0RGF0YUF0Q2VsbChXdCxTdCl9fSx0''@;'; put 'put ''aGlzLmlzUmVuZGVyU3VzcGVuZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcj4wfSx0aGlzLnN1c3BlbmRSZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXIrPTF9LHRoaXMucmVzdW1lUmVuZGVyPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IFN0PXRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlci0xO3RoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcj1NYXRoLm1heChTdCwwKSwhdGhpcy5pc1JlbmRlclN1c3BlbmRlZCgpJiZTdD09PXRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlciYmKHRoaXMucmVuZGVyQ2FsbD90aGlzLnJlbmRl''@;'; put 'put ''cigpOnRoaXMuX3JlZnJlc2hCb3JkZXJzKG51bGwpKX0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJih0aGlzLnJlbmRlckNhbGw9ITAsdGhpcy5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5pc1JlbmRlclN1c3BlbmRlZCgpfHwocGUubG9ja0VkaXRvcigpLHRoaXMuX3JlZnJl''@;'; put 'put ''c2hCb3JkZXJzKG51bGwpLHBlLnVubG9ja0VkaXRvcigpKSl9LHRoaXMuYmF0Y2hSZW5kZXI9ZnVuY3Rpb24oU3Qpe3RoaXMuc3VzcGVuZFJlbmRlcigpO3ZhciBGdD1TdCgpO3JldHVybiB0aGlzLnJlc3VtZVJlbmRlcigpLEZ0fSx0aGlzLmlzRXhlY3V0aW9uU3VzcGVuZGVkPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291bnRlcj4wfSx0aGlzLnN1c3BlbmRFeGVjdXRpb249ZnVuY3Rpb24oKXt0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXIrPTEsdGhpcy5jb2x1bW5JbmRleE1hcHBlci5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMucm93SW5k''@;'; put 'put ''ZXhNYXBwZXIuc3VzcGVuZE9wZXJhdGlvbnMoKX0sdGhpcy5yZXN1bWVFeGVjdXRpb249ZnVuY3Rpb24oKXt2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxGdD10aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXItMTt0aGlz''@;'; put 'put ''LmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXI9TWF0aC5tYXgoRnQsMCksKCF0aGlzLmlzRXhlY3V0aW9uU3VzcGVuZGVkKCkmJkZ0PT09dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyfHxTdCkmJih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMoKSx0aGlzLnJv''@;'; put 'put ''d0luZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMoKSl9LHRoaXMuYmF0Y2hFeGVjdXRpb249ZnVuY3Rpb24oU3Qpe3ZhciBGdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3RoaXMuc3VzcGVuZEV4ZWN1dGlvbigpO3ZhciBXdD1TdCgp''@;'; put 'put ''O3JldHVybiB0aGlzLnJlc3VtZUV4ZWN1dGlvbihGdCksV3R9LHRoaXMuYmF0Y2g9ZnVuY3Rpb24oU3Qpe3RoaXMuc3VzcGVuZFJlbmRlcigpLHRoaXMuc3VzcGVuZEV4ZWN1dGlvbigpO3ZhciBGdD1TdCgpO3JldHVybiB0aGlzLnJlc3VtZUV4ZWN1dGlvbigpLHRoaXMucmVzdW1lUmVuZGVy''@;'; put 'put ''KCksRnR9LHRoaXMucmVmcmVzaERpbWVuc2lvbnM9ZnVuY3Rpb24oKXtpZihtLnZpZXcpe3ZhciBTdD1tLnZpZXcuZ2V0TGFzdFNpemUoKSxGdD1TdC53aWR0aCxXdD1TdC5oZWlnaHQsd249bS5yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxTbj13bi53aWR0aCxicj13bi5o''@;'; put 'put ''ZWlnaHQsZHI9U24hPT1GdHx8YnIhPT1XdDshMT09PW0ucnVuSG9va3MoImJlZm9yZVJlZnJlc2hEaW1lbnNpb25zIix7d2lkdGg6RnQsaGVpZ2h0Old0fSx7d2lkdGg6U24saGVpZ2h0OmJyfSxkcil8fCgoZHJ8fG0udmlldy5fd3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudD09PW0u''@;'; put 'put ''cm9vdFdpbmRvdykmJihtLnZpZXcuc2V0TGFzdFNpemUoU24sYnIpLG0ucmVuZGVyKCkpLG0ucnVuSG9va3MoImFmdGVyUmVmcmVzaERpbWVuc2lvbnMiLHt3aWR0aDpGdCxoZWlnaHQ6V3R9LHt3aWR0aDpTbixoZWlnaHQ6YnJ9LGRyKSl9fSx0aGlzLnVwZGF0ZURhdGE9ZnVuY3Rpb24oU3Qs''@;'; put 'put ''RnQpe3ZhciBXdD10aGlzO0NoZShTdCxmdW5jdGlvbih3bil7Tz13bn0sZnVuY3Rpb24od24pe089d24sbS5jb2x1bW5JbmRleE1hcHBlci5maXRUb0xlbmd0aChXdC5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksbS5yb3dJbmRleE1hcHBlci5maXRUb0xlbmd0aChXdC5jb3VudFNvdXJjZVJv''@;'; put 'put ''d3MoKSksYWUuYWRqdXN0Um93c0FuZENvbHMoKX0se2hvdEluc3RhbmNlOm0sZGF0YU1hcDpPLGRhdGFTb3VyY2U6WCxpbnRlcm5hbFNvdXJjZToidXBkYXRlRGF0YSIsc291cmNlOkZ0LG1ldGFNYW5hZ2VyOlplLGZpcnN0UnVuOmJlfSl9LHRoaXMubG9hZERhdGE9ZnVuY3Rpb24oU3QsRnQp''@;'; put 'put ''e0NoZShTdCxmdW5jdGlvbihXdCl7Tz1XdH0sZnVuY3Rpb24oKXtaZS5jbGVhckNlbGxzQ2FjaGUoKSxtLmluaXRJbmRleE1hcHBlcnMoKSxhZS5hZGp1c3RSb3dzQW5kQ29scygpLGJlJiYoYmU9W251bGwsImxvYWREYXRhIl0pfSx7aG90SW5zdGFuY2U6bSxkYXRhTWFwOk8sZGF0YVNvdXJj''@;'; put 'put ''ZTpYLGludGVybmFsU291cmNlOiJsb2FkRGF0YSIsc291cmNlOkZ0LG1ldGFNYW5hZ2VyOlplLGZpcnN0UnVuOmJlfSl9LHRoaXMuZ2V0SW5pdGlhbENvbHVtbkNvdW50PWZ1bmN0aW9uKCl7dmFyIFN0PWx0LmNvbHVtbnMsRnQ9MDtpZihBcnJheS5pc0FycmF5KFN0KSlGdD1TdC5sZW5ndGg7''@;'; put 'put ''ZWxzZSBpZihQbChTdCkpaWYoImFycmF5Ij09PW0uZGF0YVR5cGUpZm9yKHZhciBXdD10aGlzLmNvdW50U291cmNlQ29scygpLHduPTA7d248V3Q7d24rPTEpU3Qod24pJiYoRnQrPTEpO2Vsc2UoIm9iamVjdCI9PT1tLmRhdGFUeXBlfHwiZnVuY3Rpb24iPT09bS5kYXRhVHlwZSkmJihGdD1P''@;'; put 'put ''LmNvbFRvUHJvcENhY2hlLmxlbmd0aCk7ZWxzZSBpZihpbyhsdC5kYXRhU2NoZW1hKSl7dmFyIFNuPU8uZ2V0U2NoZW1hKCk7RnQ9QXJyYXkuaXNBcnJheShTbik/U24ubGVuZ3RoOlVJKFNuKX1lbHNlIEZ0PXRoaXMuY291bnRTb3VyY2VDb2xzKCk7cmV0dXJuIEZ0fSx0aGlzLmluaXRJbmRl''@;'; put 'put ''eE1hcHBlcnM9ZnVuY3Rpb24oKXt0aGlzLmNvbHVtbkluZGV4TWFwcGVyLmluaXRUb0xlbmd0aCh0aGlzLmdldEluaXRpYWxDb2x1bW5Db3VudCgpKSx0aGlzLnJvd0luZGV4TWFwcGVyLmluaXRUb0xlbmd0aCh0aGlzLmNvdW50U291cmNlUm93cygpKX0sdGhpcy5nZXREYXRhPWZ1bmN0aW9u''@;'; put 'put ''KFN0LEZ0LFd0LHduKXtyZXR1cm4gTGwoU3QpP08uZ2V0QWxsKCk6Ty5nZXRSYW5nZShtLl9jcmVhdGVDZWxsQ29vcmRzKFN0LEZ0KSxtLl9jcmVhdGVDZWxsQ29vcmRzKFd0LHduKSxPLkRFU1RJTkFUSU9OX1JFTkRFUkVSKX0sdGhpcy5nZXRDb3B5YWJsZVRleHQ9ZnVuY3Rpb24oU3QsRnQs''@;'; put 'put ''V3Qsd24pe3JldHVybiBPLmdldENvcHlhYmxlVGV4dChtLl9jcmVhdGVDZWxsQ29vcmRzKFN0LEZ0KSxtLl9jcmVhdGVDZWxsQ29vcmRzKFd0LHduKSl9LHRoaXMuZ2V0Q29weWFibGVEYXRhPWZ1bmN0aW9uKFN0LEZ0KXtyZXR1cm4gTy5nZXRDb3B5YWJsZShTdCxPLmNvbFRvUHJvcChGdCkp''@;'; put 'put ''fSx0aGlzLmdldFNjaGVtYT1mdW5jdGlvbigpe3JldHVybiBPLmdldFNjaGVtYSgpfSx0aGlzLnVwZGF0ZVNldHRpbmdzPWZ1bmN0aW9uKFN0KXt2YXIgU24sYnIsRnQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxXdD0oYmU/bS5sb2Fk''@;'; put 'put ''RGF0YTptLnVwZGF0ZURhdGEpLmJpbmQodGhpcyksd249ITE7aWYoaW8oU3Qucm93cykpdGhyb3cgbmV3IEVycm9yKCdUaGUgInJvd3MiIHNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gRG8geW91IG1lYW4gc3RhcnRSb3dzLCBtaW5Sb3dzIG9yIG1heFJvd3M/Jyk7aWYoaW8oU3Qu''@;'; put 'put ''Y29scykpdGhyb3cgbmV3IEVycm9yKCdUaGUgImNvbHMiIHNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gRG8geW91IG1lYW4gc3RhcnRDb2xzLCBtaW5Db2xzIG9yIG1heENvbHM/Jyk7aWYoaW8oU3QuZ2FudHRDaGFydCkpdGhyb3cgbmV3IEVycm9yKCdTaW5jZSA4LjAuMCB0aGUg''@;'; put 'put ''ImdhbnR0Q2hhcnQiIHNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nKTtmb3IoU24gaW4gU3QpImRhdGEiPT09U258fCgibGFuZ3VhZ2UiPT09U24/UW4oU3QubGFuZ3VhZ2UpOiJjbGFzc05hbWUiPT09U24/T3IoImNsYXNzTmFtZSIsU3QuY2xhc3NOYW1lKToidGFibGVDbGFzc05h''@;'; put 'put ''bWUiPT09U24mJm0udGFibGU/KE9yKCJ0YWJsZUNsYXNzTmFtZSIsU3QudGFibGVDbGFzc05hbWUpLG0udmlldy5fd3Qud3RPdmVybGF5cy5zeW5jT3ZlcmxheVRhYmxlQ2xhc3NOYW1lcygpKTp1by5nZXRTaW5nbGV0b24oKS5pc1JlZ2lzdGVyZWQoU24pfHx1by5nZXRTaW5nbGV0b24oKS5p''@;'; put 'put ''c0RlcHJlY2F0ZWQoU24pPyhQbChTdFtTbl0pfHxBcnJheS5pc0FycmF5KFN0W1NuXSkpJiYoU3RbU25dLmluaXRpYWxIb29rPSEwLG0uYWRkSG9vayhTbixTdFtTbl0pKTohRnQmJlNzKFN0LFNuKSYmKGR0W1NuXT1TdFtTbl0pKTt2b2lkIDA9PT1TdC5kYXRhJiZ2b2lkIDA9PT1sdC5kYXRh''@;'; put 'put ''P1d0KG51bGwsInVwZGF0ZVNldHRpbmdzIik6dm9pZCAwIT09U3QuZGF0YT9XdChTdC5kYXRhLCJ1cGRhdGVTZXR0aW5ncyIpOnZvaWQgMCE9PVN0LmNvbHVtbnMmJihPLmNyZWF0ZU1hcCgpLG0uaW5pdEluZGV4TWFwcGVycygpKTt2YXIgZHI9bS5jb3VudENvbHMoKSxMcj1sdC5jb2x1bW5z''@;'; put 'put ''O2lmKExyJiZQbChMcikmJih3bj0hMCksKHZvaWQgMCE9PVN0LmNlbGx8fHZvaWQgMCE9PVN0LmNlbGxzfHx2b2lkIDAhPT1TdC5jb2x1bW5zKSYmWmUuY2xlYXJDYWNoZSgpLGRyPjApZm9yKFNuPTAsYnI9MDtTbjxkcjtTbisrKXtpZihMcil7dmFyIE5yPXduP0xyKFNuKTpMclticl07TnIm''@;'; put 'put ''JlplLnVwZGF0ZUNvbHVtbk1ldGEoYnIsTnIpfWJyKz0xfWlvKFN0LmNlbGwpJiZtYShTdC5jZWxsLGZ1bmN0aW9uKGtvKXttLnNldENlbGxNZXRhT2JqZWN0KGtvLnJvdyxrby5jb2wsa28pfSksbS5ydW5Ib29rcygiYWZ0ZXJDZWxsTWV0YVJlc2V0Iik7dmFyIGRpPW0ucm9vdEVsZW1lbnQu''@;'; put 'put ''c3R5bGUuaGVpZ2h0OyIiIT09ZGkmJihkaT1wYXJzZUludChtLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodCwxMCkpO3ZhciBxcj1TdC5oZWlnaHQ7aWYoUGwocXIpJiYocXI9cXIoKSksRnQmJm0ucm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpJiZtLnJvb3RFbGVtZW50LnNldEF0''@;'; put 'put ''dHJpYnV0ZSgiZGF0YS1pbml0aWFsc3R5bGUiLG0ucm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxudWxsPT09cXIpe3ZhciBEbz1tLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1pbml0aWFsc3R5bGUiKTtEbyYmKERvLmluZGV4T2YoImhlaWdodCIpPi0xfHxEby5p''@;'; put 'put ''bmRleE9mKCJvdmVyZmxvdyIpPi0xKT9tLnJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLERvKToobS5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQ9IiIsbS5yb290RWxlbWVudC5zdHlsZS5vdmVyZmxvdz0iIil9ZWxzZSB2b2lkIDAhPT1xciYmKG0ucm9vdEVsZW1lbnQuc3R5bGUu''@;'; put 'put ''aGVpZ2h0PWlzTmFOKHFyKT8iIi5jb25jYXQocXIpOiIiLmNvbmNhdChxciwicHgiKSxtLnJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKTtpZih0eXBlb2YgU3Qud2lkdGg8InUiKXt2YXIgb2E9U3Qud2lkdGg7UGwob2EpJiYob2E9b2EoKSksbS5yb290RWxlbWVudC5zdHls''@;'; put 'put ''ZS53aWR0aD1pc05hTihvYSk/IiIuY29uY2F0KG9hKToiIi5jb25jYXQob2EsInB4Iil9RnR8fChtLnZpZXcmJihtLnZpZXcuX3d0Lnd0Vmlld3BvcnQucmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkKCksbS52aWV3Ll93dC5leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygp''@;'; put 'put ''KSxtLnJ1bkhvb2tzKCJhZnRlclVwZGF0ZVNldHRpbmdzIixTdCkpLGFlLmFkanVzdFJvd3NBbmRDb2xzKCksbS52aWV3JiYhYmUmJihtLmZvcmNlRnVsbFJlbmRlcj0hMCxwZS5sb2NrRWRpdG9yKCksbS5fcmVmcmVzaEJvcmRlcnMobnVsbCksbS52aWV3Ll93dC53dE92ZXJsYXlzLmFkanVz''@;'; put 'put ''dEVsZW1lbnRzU2l6ZSgpLHBlLnVubG9ja0VkaXRvcigpKSwhRnQmJm0udmlldyYmKCIiPT09ZGl8fCIiPT09cXJ8fHZvaWQgMD09PXFyKSYmZGkhPT1xciYmbS52aWV3Ll93dC53dE92ZXJsYXlzLnVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudHMoKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBTdD1tLmdldFNlbGVjdGVkTGFzdCgpO2lmKGx0LmdldFZhbHVlKXtpZihQbChsdC5nZXRWYWx1ZSkpcmV0dXJuIGx0LmdldFZhbHVlLmNhbGwobSk7aWYoU3QpcmV0dXJuIG0uZ2V0RGF0YSgpW1N0WzBdWzBdXVtsdC5nZXRWYWx1ZV19ZWxzZSBpZihTdClyZXR1cm4gbS5nZXRE''@;'; put 'put ''YXRhQXRDZWxsKFN0WzBdLFN0WzFdKX0sdGhpcy5nZXRTZXR0aW5ncz1mdW5jdGlvbigpe3JldHVybiBsdH0sdGhpcy5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0QWxsKCksdGhpcy5lbXB0eVNlbGVjdGVkQ2VsbHMoKX0sdGhpcy5hbHRlcj1mdW5jdGlvbihTdCxGdCxXdCx3bixTbil7''@;'; put 'put ''YWUuYWx0ZXIoU3QsRnQsV3Qsd24sU24pfSx0aGlzLmdldENlbGw9ZnVuY3Rpb24oU3QsRnQpe3ZhciBXdD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLHduPUZ0LFNuPVN0O2lmKEZ0Pj0wKXtpZih0aGlzLmNvbHVtbkluZGV4TWFwcGVy''@;'; put 'put ''LmlzSGlkZGVuKHRoaXMudG9QaHlzaWNhbENvbHVtbihGdCkpKXJldHVybiBudWxsO3duPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChGdCl9aWYoU3Q+PTApe2lmKHRoaXMucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy50b1BoeXNpY2Fs''@;'; put 'put ''Um93KFN0KSkpcmV0dXJuIG51bGw7U249dGhpcy5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFN0KX1yZXR1cm4gbnVsbD09PVNufHxudWxsPT09d24/bnVsbDptLnZpZXcuZ2V0Q2VsbEF0Q29vcmRzKG0uX2NyZWF0ZUNlbGxDb29yZHMoU24sd24pLFd0KX0s''@;'; put 'put ''dGhpcy5nZXRDb29yZHM9ZnVuY3Rpb24oU3Qpe3ZhciBGdD10aGlzLnZpZXcuX3d0Lnd0VGFibGUuZ2V0Q29vcmRzKFN0KTtpZihudWxsPT09RnQpcmV0dXJuIG51bGw7dmFyIFd0PUZ0LnJvdyx3bj1GdC5jb2wsU249V3QsYnI9d247cmV0dXJuIFd0Pj0wJiYoU249dGhpcy5yb3dJbmRleE1h''@;'; put 'put ''cHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFd0KSksd24+PTAmJihicj10aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgod24pKSxtLl9jcmVhdGVDZWxsQ29vcmRzKFNuLGJyKX0sdGhpcy5jb2xUb1Byb3A9ZnVuY3Rpb24oU3Qpe3Jl''@;'; put 'put ''dHVybiBPLmNvbFRvUHJvcChTdCl9LHRoaXMucHJvcFRvQ29sPWZ1bmN0aW9uKFN0KXtyZXR1cm4gTy5wcm9wVG9Db2woU3QpfSx0aGlzLnRvVmlzdWFsUm93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gZi5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChTdCl9LHRoaXMu''@;'; put 'put ''dG9WaXN1YWxDb2x1bW49ZnVuY3Rpb24oU3Qpe3JldHVybiBmLmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21QaHlzaWNhbEluZGV4KFN0KX0sdGhpcy50b1BoeXNpY2FsUm93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gZi5yb3dJbmRleE1hcHBlci5nZXRQaHlzaWNhbEZyb21WaXN1YWxJ''@;'; put 'put ''bmRleChTdCl9LHRoaXMudG9QaHlzaWNhbENvbHVtbj1mdW5jdGlvbihTdCl7cmV0dXJuIGYuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoU3QpfSx0aGlzLmdldERhdGFBdENlbGw9ZnVuY3Rpb24oU3QsRnQpe3JldHVybiBPLmdldChTdCxPLmNvbFRvUHJv''@;'; put 'put ''cChGdCkpfSx0aGlzLmdldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24oU3QsRnQpe3JldHVybiBPLmdldChTdCxGdCl9LHRoaXMuZ2V0RGF0YUF0Q29sPWZ1bmN0aW9uKFN0KXtmb3IodmFyIEZ0PVtdLFd0PU8uZ2V0UmFuZ2UobS5fY3JlYXRlQ2VsbENvb3JkcygwLFN0KSxtLl9jcmVhdGVDZWxs''@;'; put 'put ''Q29vcmRzKGx0LmRhdGEubGVuZ3RoLTEsU3QpLE8uREVTVElOQVRJT05fUkVOREVSRVIpLHduPTA7d248V3QubGVuZ3RoO3duKz0xKWZvcih2YXIgU249MDtTbjxXdFt3bl0ubGVuZ3RoO1NuKz0xKUZ0LnB1c2goV3Rbd25dW1NuXSk7cmV0dXJuIEZ0fSx0aGlzLmdldERhdGFBdFByb3A9ZnVu''@;'; put 'put ''Y3Rpb24oU3Qpe2Zvcih2YXIgRnQ9W10sV3Q9Ty5nZXRSYW5nZShtLl9jcmVhdGVDZWxsQ29vcmRzKDAsTy5wcm9wVG9Db2woU3QpKSxtLl9jcmVhdGVDZWxsQ29vcmRzKGx0LmRhdGEubGVuZ3RoLTEsTy5wcm9wVG9Db2woU3QpKSxPLkRFU1RJTkFUSU9OX1JFTkRFUkVSKSx3bj0wO3duPFd0''@;'; put 'put ''Lmxlbmd0aDt3bis9MSlmb3IodmFyIFNuPTA7U248V3Rbd25dLmxlbmd0aDtTbis9MSlGdC5wdXNoKFd0W3duXVtTbl0pO3JldHVybiBGdH0sdGhpcy5nZXRTb3VyY2VEYXRhPWZ1bmN0aW9uKFN0LEZ0LFd0LHduKXtyZXR1cm4gdm9pZCAwPT09U3Q/WC5nZXREYXRhKCk6WC5nZXRCeVJhbmdl''@;'; put 'put ''KG0uX2NyZWF0ZUNlbGxDb29yZHMoU3QsRnQpLG0uX2NyZWF0ZUNlbGxDb29yZHMoV3Qsd24pKX0sdGhpcy5nZXRTb3VyY2VEYXRhQXJyYXk9ZnVuY3Rpb24oU3QsRnQsV3Qsd24pe3JldHVybiB2b2lkIDA9PT1TdD9YLmdldERhdGEoITApOlguZ2V0QnlSYW5nZShtLl9jcmVhdGVDZWxsQ29v''@;'; put 'put ''cmRzKFN0LEZ0KSxtLl9jcmVhdGVDZWxsQ29vcmRzKFd0LHduKSwhMCl9LHRoaXMuZ2V0U291cmNlRGF0YUF0Q29sPWZ1bmN0aW9uKFN0KXtyZXR1cm4gWC5nZXRBdENvbHVtbihTdCl9LHRoaXMuc2V0U291cmNlRGF0YUF0Q2VsbD1mdW5jdGlvbihTdCxGdCxXdCx3bil7dmFyIFNuPUFyKFN0''@;'; put 'put ''LEZ0LFd0KSxicj10aGlzLmhhc0hvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIpLGRyPVtdO2JyJiZSbihTbixmdW5jdGlvbihOcil7dmFyIGRpPXpoKE5yLDMpLHFyPWRpWzBdLFJpPWRpWzFdLERvPWRpWzJdO2RyLnB1c2goW3FyLFJpLFguZ2V0QXRDZWxsKHFyLFJpKSxEb10pfSks''@;'; put 'put ''Um4oU24sZnVuY3Rpb24oTnIpe3ZhciBkaT16aChOciwzKTtYLnNldEF0Q2VsbChkaVswXSxkaVsxXSxkaVsyXSl9KSxiciYmdGhpcy5ydW5Ib29rcygiYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIixkcix3biksdGhpcy5yZW5kZXIoKTt2YXIgTHI9bS5nZXRBY3RpdmVFZGl0b3IoKTtMciYm''@;'; put 'put ''aW8oTHIucmVmcmVzaFZhbHVlKSYmTHIucmVmcmVzaFZhbHVlKCl9LHRoaXMuZ2V0U291cmNlRGF0YUF0Um93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gWC5nZXRBdFJvdyhTdCl9LHRoaXMuZ2V0U291cmNlRGF0YUF0Q2VsbD1mdW5jdGlvbihTdCxGdCl7cmV0dXJuIFguZ2V0QXRDZWxsKFN0LEZ0''@;'; put 'put ''KX0sdGhpcy5nZXREYXRhQXRSb3c9ZnVuY3Rpb24oU3Qpe3JldHVybiBPLmdldFJhbmdlKG0uX2NyZWF0ZUNlbGxDb29yZHMoU3QsMCksbS5fY3JlYXRlQ2VsbENvb3JkcyhTdCx0aGlzLmNvdW50Q29scygpLTEpLE8uREVTVElOQVRJT05fUkVOREVSRVIpWzBdfHxbXX0sdGhpcy5nZXREYXRh''@;'; put 'put ''VHlwZT1mdW5jdGlvbihTdCxGdCxXdCx3bil7dmFyIFNuPXRoaXMsYnI9dm9pZCAwPT09U3Q/WzAsMCx0aGlzLmNvdW50Um93cygpLHRoaXMuY291bnRDb2xzKCldOltTdCxGdCxXdCx3bl0sZHI9YnJbMF0sTHI9YnJbMV0sTnI9YnJbMl0sZGk9YnJbM10scXI9bnVsbCxSaT1udWxsO3ZvaWQg''@;'; put 'put ''MD09PU5yJiYoTnI9ZHIpLHZvaWQgMD09PWRpJiYoZGk9THIpO3ZhciBEbz0ibWl4ZWQiO3JldHVybiBfbyhNYXRoLm1heChNYXRoLm1pbihkcixOciksMCksTWF0aC5tYXgoZHIsTnIpLGZ1bmN0aW9uKG9hKXt2YXIga289ITA7cmV0dXJuIF9vKE1hdGgubWF4KE1hdGgubWluKExyLGRpKSww''@;'; put 'put ''KSxNYXRoLm1heChMcixkaSksZnVuY3Rpb24ocWkpe3ZhciB4dD1Tbi5nZXRDZWxsTWV0YShvYSxxaSk7cmV0dXJuIFJpPXh0LnR5cGUscXI/a289cXI9PT1SaTpxcj1SaSxrb30pLERvPWtvP1JpOiJtaXhlZCIsa299KSxEb30sdGhpcy5yZW1vdmVDZWxsTWV0YT1mdW5jdGlvbihTdCxGdCxX''@;'; put 'put ''dCl7dmFyIHduPVt0aGlzLnRvUGh5c2ljYWxSb3coU3QpLHRoaXMudG9QaHlzaWNhbENvbHVtbihGdCldLFNuPXduWzBdLGJyPXduWzFdLGRyPVplLmdldENlbGxNZXRhS2V5VmFsdWUoU24sYnIsV3QpOyExIT09bS5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLFN0LEZ0LFd0LGRy''@;'; put 'put ''KSYmKFplLnJlbW92ZUNlbGxNZXRhKFNuLGJyLFd0KSxtLnJ1bkhvb2tzKCJhZnRlclJlbW92ZUNlbGxNZXRhIixTdCxGdCxXdCxkcikpLGRyPW51bGx9LHRoaXMuc3BsaWNlQ2VsbHNNZXRhPWZ1bmN0aW9uKFN0KXtmb3IodmFyIEZ0PXRoaXMsV3Q9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsd249YXJndW1lbnRzLmxlbmd0aCxTbj1uZXcgQXJyYXkod24+Mj93bi0yOjApLGJyPTI7YnI8d247YnIrKylTbltici0yXT1hcmd1bWVudHNbYnJdO2lmKFNuLmxlbmd0aD4wJiYhQXJyYXkuaXNBcnJheShTblswXSkpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJUaGUgM3JkIGFyZ3VtZW50IChjZWxsTWV0YVJvd3MpIGhhcyB0byBiZSBwYXNzZWQgYXMgYW4gYXJyYXkgb2YgY2VsbCBtZXRhIG9iamVjdHMgYXJyYXkuIik7V3Q+MCYmWmUucmVtb3ZlUm93KHRoaXMudG9QaHlzaWNhbFJvdyhTdCksV3QpLFNuLmxlbmd0aD4wJiZSbihTbi5y''@;'; put 'put ''ZXZlcnNlKCksZnVuY3Rpb24oZHIpe1plLmNyZWF0ZVJvdyhGdC50b1BoeXNpY2FsUm93KFN0KSksUm4oZHIsZnVuY3Rpb24oTHIsTnIpe3JldHVybiBGdC5zZXRDZWxsTWV0YU9iamVjdChTdCxOcixMcil9KX0pLG0ucmVuZGVyKCl9LHRoaXMuc2V0Q2VsbE1ldGFPYmplY3Q9ZnVuY3Rpb24o''@;'; put 'put ''U3QsRnQsV3Qpe3ZhciB3bj10aGlzOyJvYmplY3QiPT09RzAoV3QpJiZtYShXdCxmdW5jdGlvbihTbixicil7d24uc2V0Q2VsbE1ldGEoU3QsRnQsYnIsU24pfSl9LHRoaXMuc2V0Q2VsbE1ldGE9ZnVuY3Rpb24oU3QsRnQsV3Qsd24pe2lmKCExIT09bS5ydW5Ib29rcygiYmVmb3JlU2V0Q2Vs''@;'; put 'put ''bE1ldGEiLFN0LEZ0LFd0LHduKSl7dmFyIGJyPVN0LGRyPUZ0O1N0PHRoaXMuY291bnRSb3dzKCkmJihicj10aGlzLnRvUGh5c2ljYWxSb3coU3QpKSxGdDx0aGlzLmNvdW50Q29scygpJiYoZHI9dGhpcy50b1BoeXNpY2FsQ29sdW1uKEZ0KSksWmUuc2V0Q2VsbE1ldGEoYnIsZHIsV3Qsd24p''@;'; put 'put ''LG0ucnVuSG9va3MoImFmdGVyU2V0Q2VsbE1ldGEiLFN0LEZ0LFd0LHduKX19LHRoaXMuZ2V0Q2VsbHNNZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIFplLmdldENlbGxzTWV0YSgpfSx0aGlzLmdldENlbGxNZXRhPWZ1bmN0aW9uKFN0LEZ0KXt2YXIgV3Q9dGhpcy50b1BoeXNpY2FsUm93KFN0KSx3''@;'; put 'put ''bj10aGlzLnRvUGh5c2ljYWxDb2x1bW4oRnQpO3JldHVybiBudWxsPT09V3QmJihXdD1TdCksbnVsbD09PXduJiYod249RnQpLFplLmdldENlbGxNZXRhKFd0LHduLHt2aXN1YWxSb3c6U3QsdmlzdWFsQ29sdW1uOkZ0fSl9LHRoaXMuZ2V0Q2VsbE1ldGFBdFJvdz1mdW5jdGlvbihTdCl7cmV0''@;'; put 'put ''dXJuIFplLmdldENlbGxzTWV0YUF0Um93KFN0KX0sdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hKCJvYmplY3QiPT09bS5kYXRhVHlwZXx8bHQuY29sdW1ucyl9LHRoaXMuZ2V0Q2VsbFJlbmRlcmVyPWZ1bmN0aW9uKFN0LEZ0KXt2YXIgV3Q9Im51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBTdD9tLmdldENlbGxNZXRhKFN0LEZ0KS5yZW5kZXJlcjpTdC5yZW5kZXJlcjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFd0P29SKFd0KTpMbChXdCk/b1IoInRleHQiKTpXdH0sdGhpcy5nZXRDZWxsRWRpdG9yPWZ1bmN0aW9uKFN0LEZ0KXt2YXIgV3Q9Im51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBTdD9tLmdldENlbGxNZXRhKFN0LEZ0KS5lZGl0b3I6U3QuZWRpdG9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgV3Q/ZVIoV3QpOkxsKFd0KT9lUigidGV4dCIpOld0fSx0aGlzLmdldENlbGxWYWxpZGF0b3I9ZnVuY3Rpb24oU3QsRnQpe3ZhciBXdD0ibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IFN0P20uZ2V0Q2VsbE1ldGEoU3QsRnQpLnZhbGlkYXRvcjpTdC52YWxpZGF0b3I7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBXdD9lVyhXdCk6V3R9LHRoaXMudmFsaWRhdGVDZWxscz1mdW5jdGlvbihTdCl7dGhpcy5fdmFsaWRhdGVDZWxscyhTdCl9LHRoaXMudmFsaWRhdGVSb3dzPWZ1bmN0''@;'; put 'put ''aW9uKFN0LEZ0KXtpZighQXJyYXkuaXNBcnJheShTdCkpdGhyb3cgbmV3IEVycm9yKCJ2YWxpZGF0ZVJvd3MgcGFyYW1ldGVyIGByb3dzYCBtdXN0IGJlIGFuIGFycmF5Iik7dGhpcy5fdmFsaWRhdGVDZWxscyhGdCxTdCl9LHRoaXMudmFsaWRhdGVDb2x1bW5zPWZ1bmN0aW9uKFN0LEZ0KXtp''@;'; put 'put ''ZighQXJyYXkuaXNBcnJheShTdCkpdGhyb3cgbmV3IEVycm9yKCJ2YWxpZGF0ZUNvbHVtbnMgcGFyYW1ldGVyIGBjb2x1bW5zYCBtdXN0IGJlIGFuIGFycmF5Iik7dGhpcy5fdmFsaWRhdGVDZWxscyhGdCx2b2lkIDAsU3QpfSx0aGlzLl92YWxpZGF0ZUNlbGxzPWZ1bmN0aW9uKFN0LEZ0LFd0''@;'; put 'put ''KXt2YXIgd249bmV3IFZyO1N0JiYod24ub25RdWV1ZUVtcHR5PVN0KTtmb3IodmFyIFNuPW0uY291bnRSb3dzKCktMTtTbj49MDspaWYodm9pZCAwPT09RnR8fC0xIT09RnQuaW5kZXhPZihTbikpe2Zvcih2YXIgYnI9bS5jb3VudENvbHMoKS0xO2JyPj0wOyl2b2lkIDA9PT1XdHx8LTEhPT1X''@;'; put 'put ''dC5pbmRleE9mKGJyKT8od24uYWRkVmFsaWRhdG9yVG9RdWV1ZSgpLG0udmFsaWRhdGVDZWxsKG0uZ2V0RGF0YUF0Q2VsbChTbixiciksbS5nZXRDZWxsTWV0YShTbixiciksZnVuY3Rpb24oZHIpe2lmKCJib29sZWFuIiE9dHlwZW9mIGRyKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBl''@;'; put 'put ''cnJvcjogcmVzdWx0IGlzIG5vdCBib29sZWFuIik7ITE9PT1kciYmKHduLnZhbGlkPSExKSx3bi5yZW1vdmVWYWxpZGF0b3JGb3JtUXVldWUoKX0sInZhbGlkYXRlQ2VsbHMiKSxici09MSk6YnItPTE7U24tPTF9ZWxzZSBTbi09MTt3bi5jaGVja0lmUXVldWVJc0VtcHR5KCl9LHRoaXMuZ2V0''@;'; put 'put ''Um93SGVhZGVyPWZ1bmN0aW9uKFN0KXt2YXIgRnQ9bHQucm93SGVhZGVycyxXdD1TdDtyZXR1cm4gdm9pZCAwIT09V3QmJihXdD1tLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWFkZXIiLFd0KSksdm9pZCAwPT09V3Q/KEZ0PVtdLF9vKG0uY291bnRSb3dzKCktMSxmdW5jdGlvbih3bil7RnQucHVz''@;'; put 'put ''aChtLmdldFJvd0hlYWRlcih3bikpfSkpOkFycmF5LmlzQXJyYXkoRnQpJiZ2b2lkIDAhPT1GdFtXdF0/RnQ9RnRbV3RdOlBsKEZ0KT9GdD1GdChXdCk6RnQmJiJzdHJpbmciIT10eXBlb2YgRnQmJiJudW1iZXIiIT10eXBlb2YgRnQmJihGdD1XdCsxKSxGdH0sdGhpcy5oYXNSb3dIZWFkZXJz''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuISFsdC5yb3dIZWFkZXJzfSx0aGlzLmhhc0NvbEhlYWRlcnM9ZnVuY3Rpb24oKXtpZihudWxsIT1sdC5jb2xIZWFkZXJzKXJldHVybiEhbHQuY29sSGVhZGVycztmb3IodmFyIFN0PTAsRnQ9bS5jb3VudENvbHMoKTtTdDxGdDtTdCsrKWlmKG0uZ2V0Q29sSGVh''@;'; put 'put ''ZGVyKFN0KSlyZXR1cm4hMDtyZXR1cm4hMX0sdGhpcy5nZXRDb2xIZWFkZXI9ZnVuY3Rpb24oU3Qpe3ZhciBGdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LTEsV3Q9bS5ydW5Ib29rcygibW9kaWZ5Q29sSGVhZGVyIixTdCk7aWYodm9p''@;'; put 'put ''ZCAwPT09V3Qpe2Zvcih2YXIgd249W10sU249bS5jb3VudENvbHMoKSxicj0wO2JyPFNuO2JyKyspd24ucHVzaChtLmdldENvbEhlYWRlcihicikpO3JldHVybiB3bn12YXIgZHI9bHQuY29sSGVhZGVycyxOcj1tLnRvUGh5c2ljYWxDb2x1bW4oV3QpLGRpPWZ1bmN0aW9uKFJpKXtmb3IodmFy''@;'; put 'put ''IERvPVtdLG9hPW0uY291bnRDb2xzKCksa289MDtrbzxvYTtrbysrKVBsKGx0LmNvbHVtbnMpJiZsdC5jb2x1bW5zKGtvKSYmRG8ucHVzaChrbyk7cmV0dXJuIERvW1JpXX0oTnIpO3JldHVybiExPT09bHQuY29sSGVhZGVycz9kcj1udWxsOmx0LmNvbHVtbnMmJlBsKGx0LmNvbHVtbnMpJiZs''@;'; put 'put ''dC5jb2x1bW5zKGRpKSYmbHQuY29sdW1ucyhkaSkudGl0bGU/ZHI9bHQuY29sdW1ucyhkaSkudGl0bGU6bHQuY29sdW1ucyYmbHQuY29sdW1uc1tOcl0mJmx0LmNvbHVtbnNbTnJdLnRpdGxlP2RyPWx0LmNvbHVtbnNbTnJdLnRpdGxlOkFycmF5LmlzQXJyYXkobHQuY29sSGVhZGVycykmJnZv''@;'; put 'put ''aWQgMCE9PWx0LmNvbEhlYWRlcnNbTnJdP2RyPWx0LmNvbEhlYWRlcnNbTnJdOlBsKGx0LmNvbEhlYWRlcnMpP2RyPWx0LmNvbEhlYWRlcnMoTnIpOmx0LmNvbEhlYWRlcnMmJiJzdHJpbmciIT10eXBlb2YgbHQuY29sSGVhZGVycyYmIm51bWJlciIhPXR5cGVvZiBsdC5jb2xIZWFkZXJzJiYo''@;'; put 'put ''ZHI9VlIoV3QpKSxtLnJ1bkhvb2tzKCJtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZSIsZHIsU3QsRnQpfSx0aGlzLl9nZXRDb2xXaWR0aEZyb21TZXR0aW5ncz1mdW5jdGlvbihTdCl7dmFyIEZ0O2lmKFN0Pj0wJiYoRnQ9bS5nZXRDZWxsTWV0YSgwLFN0KS53aWR0aCksKHZvaWQgMD09PUZ0fHxG''@;'; put 'put ''dD09PWx0LndpZHRoKSYmKEZ0PWx0LmNvbFdpZHRocyksbnVsbCE9RnQpe3N3aXRjaChHMChGdCkpe2Nhc2Uib2JqZWN0IjpGdD1GdFtTdF07YnJlYWs7Y2FzZSJmdW5jdGlvbiI6RnQ9RnQoU3QpfSJzdHJpbmciPT10eXBlb2YgRnQmJihGdD1wYXJzZUludChGdCwxMCkpfXJldHVybiBGdH0s''@;'; put 'put ''dGhpcy5nZXRDb2xXaWR0aD1mdW5jdGlvbihTdCl7dmFyIEZ0PW0uX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKFN0KTtyZXR1cm4gdm9pZCAwPT09KEZ0PW0ucnVuSG9va3MoIm1vZGlmeUNvbFdpZHRoIixGdCxTdCkpJiYoRnQ9VFcuREVGQVVMVF9XSURUSCksRnR9LHRoaXMuX2dldFJvd0hl''@;'; put 'put ''aWdodEZyb21TZXR0aW5ncz1mdW5jdGlvbihTdCl7dmFyIEZ0PWx0LnJvd0hlaWdodHM7aWYobnVsbCE9RnQpe3N3aXRjaChHMChGdCkpe2Nhc2Uib2JqZWN0IjpGdD1GdFtTdF07YnJlYWs7Y2FzZSJmdW5jdGlvbiI6RnQ9RnQoU3QpfSJzdHJpbmciPT10eXBlb2YgRnQmJihGdD1wYXJzZUlu''@;'; put 'put ''dChGdCwxMCkpfXJldHVybiBGdH0sdGhpcy5nZXRSb3dIZWlnaHQ9ZnVuY3Rpb24oU3Qpe3ZhciBGdD1tLl9nZXRSb3dIZWlnaHRGcm9tU2V0dGluZ3MoU3QpO3JldHVybiBtLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWlnaHQiLEZ0LFN0KX0sdGhpcy5jb3VudFNvdXJjZVJvd3M9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gWC5jb3VudFJvd3MoKX0sdGhpcy5jb3VudFNvdXJjZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gWC5jb3VudEZpcnN0Um93S2V5cygpfSx0aGlzLmNvdW50Um93cz1mdW5jdGlvbigpe3JldHVybiBPLmdldExlbmd0aCgpfSx0aGlzLmNvdW50Q29scz1mdW5jdGlvbigpe3ZhciBT''@;'; put 'put ''dD1sdC5tYXhDb2xzLEZ0PXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKTtyZXR1cm4gTWF0aC5taW4oU3QsRnQpfSx0aGlzLmNvdW50UmVuZGVyZWRSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIG0udmlldy5fd3QuZHJhd24/bS52aWV3Ll93dC53dFRh''@;'; put 'put ''YmxlLmdldFJlbmRlcmVkUm93c0NvdW50KCk6LTF9LHRoaXMuY291bnRWaXNpYmxlUm93cz1mdW5jdGlvbigpe3JldHVybiBtLnZpZXcuX3d0LmRyYXduP20udmlldy5fd3Qud3RUYWJsZS5nZXRWaXNpYmxlUm93c0NvdW50KCk6LTF9LHRoaXMuY291bnRSZW5kZXJlZENvbHM9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gbS52aWV3Ll93dC5kcmF3bj9tLnZpZXcuX3d0Lnd0VGFibGUuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKTotMX0sdGhpcy5jb3VudFZpc2libGVDb2xzPWZ1bmN0aW9uKCl7cmV0dXJuIG0udmlldy5fd3QuZHJhd24/bS52aWV3Ll93dC53dFRhYmxlLmdldFZpc2libGVDb2x1''@;'; put 'put ''bW5zQ291bnQoKTotMX0sdGhpcy5jb3VudEVtcHR5Um93cz1mdW5jdGlvbigpe3ZhciBTdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEZ0PTA7cmV0dXJuIHJSKG0uY291bnRSb3dzKCktMSxmdW5jdGlvbihXdCl7aWYobS5pc0VtcHR5''@;'; put 'put ''Um93KFd0KSlGdCs9MTtlbHNlIGlmKCEwPT09U3QpcmV0dXJuITF9KSxGdH0sdGhpcy5jb3VudEVtcHR5Q29scz1mdW5jdGlvbigpe3ZhciBTdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEZ0PTA7cmV0dXJuIHJSKG0uY291bnRDb2xz''@;'; put 'put ''KCktMSxmdW5jdGlvbihXdCl7aWYobS5pc0VtcHR5Q29sKFd0KSlGdCs9MTtlbHNlIGlmKCEwPT09U3QpcmV0dXJuITF9KSxGdH0sdGhpcy5pc0VtcHR5Um93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gbHQuaXNFbXB0eVJvdy5jYWxsKG0sU3QpfSx0aGlzLmlzRW1wdHlDb2w9ZnVuY3Rpb24oU3Qp''@;'; put 'put ''e3JldHVybiBsdC5pc0VtcHR5Q29sLmNhbGwobSxTdCl9LHRoaXMuc2VsZWN0Q2VsbD1mdW5jdGlvbihTdCxGdCxXdCx3bil7dmFyIFNuPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sYnI9IShhcmd1bWVudHMubGVuZ3RoPjUmJnZv''@;'; put 'put ''aWQgMCE9PWFyZ3VtZW50c1s1XSl8fGFyZ3VtZW50c1s1XTtyZXR1cm4hTGwoU3QpJiYhTGwoRnQpJiZ0aGlzLnNlbGVjdENlbGxzKFtbU3QsRnQsV3Qsd25dXSxTbixicil9LHRoaXMuc2VsZWN0Q2VsbHM9ZnVuY3Rpb24oKXt2YXIgV3Q9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTshMT09PSghKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdKSYmKGg9ITApO3ZhciB3bj1YdC5zZWxlY3RDZWxscyhhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1sw''@;'; put 'put ''XT9hcmd1bWVudHNbMF06W1tdXSk7cmV0dXJuIHduJiZXdCYmbS5saXN0ZW4oKSxoPSExLHdufSx0aGlzLnNlbGVjdENvbHVtbnM9ZnVuY3Rpb24oU3Qpe3JldHVybiBYdC5zZWxlY3RDb2x1bW5zKFN0LGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50''@;'; put 'put ''c1sxXTpTdCl9LHRoaXMuc2VsZWN0Um93cz1mdW5jdGlvbihTdCl7cmV0dXJuIFh0LnNlbGVjdFJvd3MoU3QsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlN0KX0sdGhpcy5kZXNlbGVjdENlbGw9ZnVuY3Rpb24oKXtYdC5kZXNlbGVjdCgp''@;'; put 'put ''fSx0aGlzLnNlbGVjdEFsbD1mdW5jdGlvbigpe3ZhciBTdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLEZ0PVN0JiZ0aGlzLmhhc1Jvd0hlYWRlcnMoKSxXdD1TdCYmdGhpcy5oYXNDb2xIZWFkZXJzKCk7aD0hMCxYdC5zZWxlY3RB''@;'; put 'put ''bGwoRnQsV3QpLGg9ITF9O3ZhciBUcj1mdW5jdGlvbihGdCxXdCl7cmV0dXJuIEZ0LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChXdCwxLCEwKX07dGhpcy5zY3JvbGxWaWV3cG9ydFRvPWZ1bmN0aW9uKFN0LEZ0KXt2YXIgV3Q9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMl0mJmFyZ3VtZW50c1syXSx3bj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGJyPSFXdCxkcj0hd24sTHI9U3QsTnI9RnQ7aWYoIShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0''@;'; put 'put ''XSl7dmFyIGRpPU51bWJlci5pc0ludGVnZXIoU3QpLHFyPU51bWJlci5pc0ludGVnZXIoRnQpLFJpPWRpP1RyKHRoaXMucm93SW5kZXhNYXBwZXIsU3QpOnZvaWQgMCxEbz1xcj9Ucih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLEZ0KTp2b2lkIDA7aWYobnVsbD09PVJpfHxudWxsPT09RG8pcmV0''@;'; put 'put ''dXJuITE7THI9ZGk/bS5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFJpKTp2b2lkIDAsTnI9cXI/bS5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KERvKTp2b2lkIDB9dmFyIG9hPU51bWJlci5pc0ludGVnZXIoTHIpLGtv''@;'; put 'put ''PU51bWJlci5pc0ludGVnZXIoTnIpO3JldHVybiBvYSYma28/bS52aWV3LnNjcm9sbFZpZXdwb3J0KG0uX2NyZWF0ZUNlbGxDb29yZHMoTHIsTnIpLGJyLHduLFd0LGRyKTpvYSYmITE9PT1rbz9tLnZpZXcuc2Nyb2xsVmlld3BvcnRWZXJ0aWNhbGx5KExyLGJyLFd0KTohKCFrb3x8ITEhPT1v''@;'; put 'put ''YSkmJm0udmlldy5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShOcix3bixkcil9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2lmKG0uX2NsZWFyVGltZW91dHMoKSxtLl9jbGVhckltbWVkaWF0ZXMoKSxtLnZpZXcmJm0udmlldy5kZXN0cm95KCksWCYmWC5kZXN0cm95KCksWD1udWxsLHRo''@;'; put 'put ''aXMuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZGVzdHJveSgpLFplLmNsZWFyQ2FjaGUoKSxSVyhtKSl7dmFyIFN0PXRoaXMucm9vdERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5ob3QtZGlzcGxheS1saWNlbnNlLWluZm8iKTtTdCYmU3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChTdCl9RmQobS5y''@;'; put 'put ''b290RWxlbWVudCksXy5kZXN0cm95KCkscGUmJnBlLmRlc3Ryb3koKSxtLmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7bS5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyQWxsKCksbS5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyQWxsKCksZ3QuZ2V0SXRlbXMoKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKEZ0KXt6aChGdCwyKVsxXS5kZXN0cm95KCl9KSxndC5jbGVhcigpLG0ucnVuSG9va3MoImFmdGVyRGVzdHJveSIpfSwhMCksdW8uZ2V0U2luZ2xldG9uKCkuZGVzdHJveShtKSxtYShtLGZ1bmN0aW9uKEZ0LFd0LHduKXtQbChGdCk/d25bV3RdPWZ1bmN0aW9uIFZuKFN0KXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiJy5jb25jYXQoU3QsJyIgbWV0aG9kIGNhbm5vdCBiZSBjYWxsZWQgYmVjYXVzZSB0aGlzIEhhbmRzb250YWJsZSBpbnN0YW5jZSBoYXMgYmVlbiBkZXN0cm95ZWQnKSl9fShXdCk6Imd1aWQiIT09V3QmJih3bltXdF09bnVsbCl9KSxt''@;'; put 'put ''LmlzRGVzdHJveWVkPSEwLE8mJk8uZGVzdHJveSgpLE89bnVsbCxhZT1udWxsLFh0PW51bGwscGU9bnVsbCxtPW51bGx9LHRoaXMuZ2V0QWN0aXZlRWRpdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHBlLmdldEFjdGl2ZUVkaXRvcigpfSx0aGlzLmdldFBsdWdpbj1mdW5jdGlvbihTdCl7dmFyIEZ0''@;'; put 'put ''PUFjKFN0KTtyZXR1cm4iVW5kb1JlZG8iPT09RnQ/dGhpcy51bmRvUmVkbzpndC5nZXRJdGVtKEZ0KX0sdGhpcy5nZXRQbHVnaW5OYW1lPWZ1bmN0aW9uKFN0KXtyZXR1cm4gU3Q9PT10aGlzLnVuZG9SZWRvP3RoaXMudW5kb1JlZG8uY29uc3RydWN0b3IuUExVR0lOX0tFWTpndC5nZXRJZChT''@;'; put 'put ''dCl9LHRoaXMuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gbX0sdGhpcy5hZGRIb29rPWZ1bmN0aW9uKFN0LEZ0KXt1by5nZXRTaW5nbGV0b24oKS5hZGQoU3QsRnQsbSl9LHRoaXMuaGFzSG9vaz1mdW5jdGlvbihTdCl7cmV0dXJuIHVvLmdldFNpbmdsZXRvbigpLmhhcyhTdCxtKXx8''@;'; put 'put ''dW8uZ2V0U2luZ2xldG9uKCkuaGFzKFN0KX0sdGhpcy5hZGRIb29rT25jZT1mdW5jdGlvbihTdCxGdCl7dW8uZ2V0U2luZ2xldG9uKCkub25jZShTdCxGdCxtKX0sdGhpcy5yZW1vdmVIb29rPWZ1bmN0aW9uKFN0LEZ0KXt1by5nZXRTaW5nbGV0b24oKS5yZW1vdmUoU3QsRnQsbSl9LHRoaXMu''@;'; put 'put ''cnVuSG9va3M9ZnVuY3Rpb24oU3QsRnQsV3Qsd24sU24sYnIsZHIpe3JldHVybiB1by5nZXRTaW5nbGV0b24oKS5ydW4obSxTdCxGdCxXdCx3bixTbixicixkcil9LHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZT1mdW5jdGlvbihTdCxGdCl7cmV0dXJuIF9kZShsdC5sYW5ndWFnZSxTdCxGdCl9''@;'; put 'put ''LHRoaXMudG9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIGpZKGYpfSx0aGlzLnRvVGFibGVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIFN0PWYucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBTdC5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGpZKGYpKSxTdC5m''@;'; put 'put ''aXJzdEVsZW1lbnRDaGlsZH0sdGhpcy50aW1lb3V0cz1bXSx0aGlzLl9yZWdpc3RlclRpbWVvdXQ9ZnVuY3Rpb24oU3Qpe3ZhciBXdD1TdDsiZnVuY3Rpb24iPT10eXBlb2YgV3QmJihXdD1zZXRUaW1lb3V0KFd0LGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2Fy''@;'; put 'put ''Z3VtZW50c1sxXTowKSksdGhpcy50aW1lb3V0cy5wdXNoKFd0KX0sdGhpcy5fY2xlYXJUaW1lb3V0cz1mdW5jdGlvbigpe1JuKHRoaXMudGltZW91dHMsZnVuY3Rpb24oU3Qpe2NsZWFyVGltZW91dChTdCl9KX0sdGhpcy5pbW1lZGlhdGVzPVtdLHRoaXMuX3JlZ2lzdGVySW1tZWRpYXRlPWZ1''@;'; put 'put ''bmN0aW9uKFN0KXt0aGlzLmltbWVkaWF0ZXMucHVzaChzZXRJbW1lZGlhdGUoU3QpKX0sdGhpcy5fY2xlYXJJbW1lZGlhdGVzPWZ1bmN0aW9uKCl7Um4odGhpcy5pbW1lZGlhdGVzLGZ1bmN0aW9uKFN0KXtjbGVhckltbWVkaWF0ZShTdCl9KX0sdGhpcy5fcmVmcmVzaEJvcmRlcnM9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgRnQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtwZS5kZXN0cm95RWRpdG9yKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLG0udmlldy5yZW5kZXIoKSxGdCYm''@;'; put 'put ''WHQuaXNTZWxlY3RlZCgpJiZwZS5wcmVwYXJlRWRpdG9yKCl9LHRoaXMuaXNSdGw9ZnVuY3Rpb24oKXtyZXR1cm4icnRsIj09PW0ucm9vdFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG0ucm9vdEVsZW1lbnQpLmRpcmVjdGlvbn0sdGhpcy5pc0x0cj1mdW5jdGlvbigpe3JldHVybiFtLmlzUnRs''@;'; put 'put ''KCl9LHRoaXMuZ2V0RGlyZWN0aW9uRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG0uaXNMdHIoKT8xOi0xfTt2YXIgY3I9Q2x0KHtoYW5kbGVFdmVudDpmdW5jdGlvbihGdCl7cmV0dXJuIG0uaXNMaXN0ZW5pbmcoKSYmdm9pZCAwIT09RnQ/LmtleX0sYmVmb3JlS2V5RG93bjpmdW5jdGlvbihG''@;'; put 'put ''dCl7cmV0dXJuIGYucnVuSG9va3MoImJlZm9yZUtleURvd24iLEZ0KX0sYWZ0ZXJLZXlEb3duOmZ1bmN0aW9uKEZ0KXtmLmlzRGVzdHJveWVkfHxtLnJ1bkhvb2tzKCJhZnRlckRvY3VtZW50S2V5RG93biIsRnQpfSxvd25lcldpbmRvdzp0aGlzLnJvb3RXaW5kb3d9KTt0aGlzLmFkZEhvb2so''@;'; put 'put ''ImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oU3QpeyExPT09U3QuY3RybEtleSYmITE9PT1TdC5tZXRhS2V5JiZjci5yZWxlYXNlUHJlc3NlZEtleXMoKX0pLHRoaXMuZ2V0U2hvcnRjdXRNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIGNyfTt2YXIgQ3I9Y3IuYWRkQ29udGV4dCgi''@;'; put 'put ''Z3JpZCIpLFlyPXtydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gaW8obS5nZXRTZWxlY3RlZCgpKSYmbS5jb3VudFJlbmRlcmVkUm93cygpPjAmJm0uY291bnRSZW5kZXJlZENvbHMoKT4wfSxncm91cDpUbHR9O2NyLnNldEFjdGl2ZUNvbnRleHROYW1lKCJncmlkIiksQ3IuYWRkU2hvcnRj''@;'; put 'put ''dXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJBIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7bS5zZWxlY3RBbGwoKX19LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBGdD1tLmdldFNlbGVjdGVkUmFuZ2UoKSxXdD1GdFtGdC5s''@;'; put 'put ''ZW5ndGgtMV0uaGlnaGxpZ2h0LHduPVd0LnJvdyxTbj1XdC5jb2wsYnI9bS5nZXREYXRhQXRDZWxsKHduLFNuKSxkcj1uZXcgTWFwLExyPTA7THI8RnQubGVuZ3RoO0xyKyspRnRbTHJdLmZvckFsbChmdW5jdGlvbihOcixkaSl7TnI+PTAmJmRpPj0wJiYoTnIhPT13bnx8ZGkhPT1TbikmJiht''@;'; put 'put ''LmdldENlbGxNZXRhKE5yLGRpKS5yZWFkT25seXx8ZHIuc2V0KCIiLmNvbmNhdChOciwieCIpLmNvbmNhdChkaSksW05yLGRpLGJyXSkpfSk7bS5zZXREYXRhQXRDZWxsKEFycmF5LmZyb20oZHIudmFsdWVzKCkpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIG0uZ2V0U2VsZWN0ZWRS''@;'; put 'put ''YW5nZUxhc3QoKS5nZXRDZWxsc0NvdW50KCk+MX19LHtrZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtYdC50cmFuc2Zvcm1TdGFydCgtMSwwKX19LHtrZXlzOltbIkFycm93VXAiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24o''@;'; put 'put ''KXtYdC5zZXRSYW5nZVN0YXJ0KG0uX2NyZWF0ZUNlbGxDb29yZHMobS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoMCwxKSxtLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LmNvbCkpfX0se2tleXM6W1siQXJyb3dVcCIsIlNoaWZ0Il1dLGNhbGxiYWNr''@;'; put 'put ''OmZ1bmN0aW9uKCl7WHQudHJhbnNmb3JtRW5kKC0xLDApfX0se2tleXM6W1siQXJyb3dVcCIsIlNoaWZ0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIEZ0PW0uZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxXdD1GdC5mcm9tLHduPUZ0LnRv''@;'; put 'put ''LFNuPW0ucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSk7WHQuc2V0UmFuZ2VTdGFydChXdC5jbG9uZSgpKSxYdC5zZXRSYW5nZUVuZChtLl9jcmVhdGVDZWxsQ29vcmRzKFNuLHduLmNvbCkpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4hKG0uc2VsZWN0''@;'; put 'put ''aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHxtLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSl9fSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtYdC50cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dEb3duIiwiQ29udHJvbC9N''@;'; put 'put ''ZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7WHQuc2V0UmFuZ2VTdGFydChtLl9jcmVhdGVDZWxsQ29vcmRzKG0ucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG0uY291bnRSb3dzKCktMSwtMSksbS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgp''@;'; put 'put ''LmhpZ2hsaWdodC5jb2wpKX19LHtrZXlzOltbIkFycm93RG93biIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7WHQudHJhbnNmb3JtRW5kKDEsMCl9fSx7a2V5czpbWyJBcnJvd0Rvd24iLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBGdD1tLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksV3Q9RnQuZnJvbSx3bj1GdC50byxTbj1tLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChtLmNvdW50Um93cygpLTEsLTEpO1h0LnNldFJhbmdlU3RhcnQoV3QuY2xvbmUoKSksWHQuc2V0UmFuZ2VF''@;'; put 'put ''bmQobS5fY3JlYXRlQ2VsbENvb3JkcyhTbix3bi5jb2wpKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIShtLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8bS5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKCl7WHQudHJhbnNmb3JtU3RhcnQoMCwtMSptLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93TGVmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBGdCxXdD1tLmdldFNlbGVjdGVkUmFu''@;'; put 'put ''Z2VMYXN0KCkuaGlnaGxpZ2h0LnJvdyx3bj0oRnQ9bS5jb2x1bW5JbmRleE1hcHBlcikuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4LmFwcGx5KEZ0LEU5KG0uaXNSdGwoKT9bbS5jb3VudENvbHMoKS0xLC0xXTpbMCwxXSkpO1h0LnNldFJhbmdlU3RhcnQobS5fY3JlYXRlQ2VsbENvb3JkcyhX''@;'; put 'put ''dCx3bikpfX0se2tleXM6W1siQXJyb3dMZWZ0IiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtYdC50cmFuc2Zvcm1FbmQoMCwtMSptLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93TGVmdCIsIlNoaWZ0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEw''@;'; put 'put ''LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIEZ0LFd0PW0uZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx3bj1XdC5mcm9tLFNuPVd0LnRvLGJyPShGdD1tLmNvbHVtbkluZGV4TWFwcGVyKS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXguYXBwbHkoRnQsRTkobS5pc1J0bCgpP1ttLmNvdW50Q29scygp''@;'; put 'put ''LTEsLTFdOlswLDFdKSk7WHQuc2V0UmFuZ2VTdGFydCh3bi5jbG9uZSgpKSxYdC5zZXRSYW5nZUVuZChtLl9jcmVhdGVDZWxsQ29vcmRzKFNuLnJvdyxicikpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4hKG0uc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHxtLnNlbGVjdGlv''@;'; put 'put ''bi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7WHQudHJhbnNmb3JtU3RhcnQoMCxtLmdldERpcmVjdGlvbkZhY3RvcigpKX19LHtrZXlzOltbIkFycm93UmlnaHQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0''@;'; put 'put ''cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgRnQsV3Q9bS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csd249KEZ0PW0uY29sdW1uSW5kZXhNYXBwZXIpLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleC5hcHBseShGdCxFOShtLmlzUnRsKCk/WzAsMV06W20uY291bnRD''@;'; put 'put ''b2xzKCktMSwtMV0pKTtYdC5zZXRSYW5nZVN0YXJ0KG0uX2NyZWF0ZUNlbGxDb29yZHMoV3Qsd24pKX19LHtrZXlzOltbIkFycm93UmlnaHQiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe1h0LnRyYW5zZm9ybUVuZCgwLG0uZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0se2tleXM6W1si''@;'; put 'put ''QXJyb3dSaWdodCIsIlNoaWZ0IiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIEZ0LFd0PW0uZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx3bj1XdC5mcm9tLFNuPVd0LnRvLGJyPShGdD1tLmNvbHVtbkluZGV4TWFwcGVyKS5nZXROZWFyZXN0''@;'; put 'put ''Tm90SGlkZGVuSW5kZXguYXBwbHkoRnQsRTkobS5pc1J0bCgpP1swLDFdOlttLmNvdW50Q29scygpLTEsLTFdKSk7WHQuc2V0UmFuZ2VTdGFydCh3bi5jbG9uZSgpKSxYdC5zZXRSYW5nZUVuZChtLl9jcmVhdGVDZWxsQ29vcmRzKFNuLnJvdyxicikpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4hKG0uc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHxtLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSl9fSx7a2V5czpbWyJIb21lIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIEZ0PXBhcnNlSW50KG0uZ2V0U2V0dGluZ3MoKS5m''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydCwxMCksV3Q9bS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csd249bS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoRnQsMSk7WHQuc2V0UmFuZ2VTdGFydChtLl9jcmVhdGVDZWxsQ29vcmRzKFd0LHduKSl9LHJ1''@;'; put 'put ''bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBtLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJIb21lIiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtYdC5zZXRSYW5nZUVuZChtLl9jcmVhdGVDZWxsQ29vcmRzKFh0LnNlbGVjdGVk''@;'; put 'put ''UmFuZ2UuY3VycmVudCgpLmZyb20ucm93LG0uY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSkpKX19LHtrZXlzOltbIkhvbWUiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgRnQ9cGFyc2VJbnQobS5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLmZpeGVkUm93c1RvcCwxMCksV3Q9cGFyc2VJbnQobS5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSx3bj1tLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChGdCwxKSxTbj1tLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleChXdCwxKTtYdC5zZXRSYW5nZVN0YXJ0KG0uX2NyZWF0ZUNlbGxDb29yZHMod24sU24pKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIG0udmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX19LHtrZXlzOltbIkVuZCJdXSxjYXB0dXJl''@;'; put 'put ''Q3RybDohMCxjYWxsYmFjazpmdW5jdGlvbigpe1h0LnNldFJhbmdlU3RhcnQobS5fY3JlYXRlQ2VsbENvb3JkcyhtLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LnJvdyxtLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChtLmNvdW50Q29scygpLTEs''@;'; put 'put ''LTEpKSl9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiBtLnZpZXcuaXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9fSx7a2V5czpbWyJFbmQiLCJTaGlmdCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe1h0LnNldFJhbmdlRW5kKG0uX2NyZWF0ZUNlbGxDb29yZHMoWHQu''@;'; put 'put ''c2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkuZnJvbS5yb3csbS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobS5jb3VudENvbHMoKS0xLC0xKSkpfX0se2tleXM6W1siRW5kIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIEZ0PXBhcnNlSW50KG0uZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20sMTApLFd0PW0ucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG0uY291bnRSb3dzKCktRnQtMSwtMSksd249bS5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVu''@;'; put 'put ''SW5kZXgobS5jb3VudENvbHMoKS0xLC0xKTtYdC5zZXRSYW5nZVN0YXJ0KG0uX2NyZWF0ZUNlbGxDb29yZHMoV3Qsd24pKX0scnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIG0udmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX19LHtrZXlzOltbIlBhZ2VVcCJd''@;'; put 'put ''XSxjYWxsYmFjazpmdW5jdGlvbigpe1h0LnRyYW5zZm9ybVN0YXJ0KC1tLmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIlBhZ2VVcCIsIlNoaWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFd0PW0uZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50byx3bj1NYXRoLm1heChXdC5y''@;'; put 'put ''b3ctbS5jb3VudFZpc2libGVSb3dzKCksMCksU249bS5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgod24sMSk7aWYobnVsbCE9PVNuKXt2YXIgYnI9bS5fY3JlYXRlQ2VsbENvb3JkcyhTbixXdC5jb2wpLGRyPVd0LnJvdy1tLnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2li''@;'; put 'put ''bGVSb3coKSxMcj1NYXRoLm1heChici5yb3ctZHIsMCk7WHQuc2V0UmFuZ2VFbmQoYnIpLG0uc2Nyb2xsVmlld3BvcnRUbyhMcil9fX0se2tleXM6W1siUGFnZURvd24iXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtYdC50cmFuc2Zvcm1TdGFydChtLmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtr''@;'; put 'put ''ZXlzOltbIlBhZ2VEb3duIiwiU2hpZnQiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgV3Q9bS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLnRvLHduPU1hdGgubWluKFd0LnJvdyttLmNvdW50VmlzaWJsZVJvd3MoKSxtLmNvdW50Um93cygpLTEpLFNuPW0ucm93SW5kZXhNYXBwZXIuZ2V0TmVh''@;'; put 'put ''cmVzdE5vdEhpZGRlbkluZGV4KHduLC0xKTtpZihudWxsIT09U24pe3ZhciBicj1tLl9jcmVhdGVDZWxsQ29vcmRzKFNuLFd0LmNvbCksZHI9V3Qucm93LW0udmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLExyPU1hdGgubWluKGJyLnJvdy1kcixtLmNvdW50Um93cygpLTEpO1h0LnNl''@;'; put 'put ''dFJhbmdlRW5kKGJyKSxtLnNjcm9sbFZpZXdwb3J0VG8oTHIpfX19LHtrZXlzOltbIlRhYiJdXSxjYWxsYmFjazpmdW5jdGlvbihGdCl7dmFyIFd0PSJmdW5jdGlvbiI9PXR5cGVvZiBsdC50YWJNb3Zlcz9sdC50YWJNb3ZlcyhGdCk6bHQudGFiTW92ZXM7WHQudHJhbnNmb3JtU3RhcnQoV3Qu''@;'; put 'put ''cm93LFd0LmNvbCwhMCl9fSx7a2V5czpbWyJTaGlmdCIsIlRhYiJdXSxjYWxsYmFjazpmdW5jdGlvbihGdCl7dmFyIFd0PSJmdW5jdGlvbiI9PXR5cGVvZiBsdC50YWJNb3Zlcz9sdC50YWJNb3ZlcyhGdCk6bHQudGFiTW92ZXM7WHQudHJhbnNmb3JtU3RhcnQoLVd0LnJvdywtV3QuY29sKX19''@;'; put 'put ''XSxZciksUVkoKS5mb3JFYWNoKGZ1bmN0aW9uKFN0KXt2YXIgRnQ9ZU0oU3QpO2d0LmFkZEl0ZW0oU3QsbmV3IEZ0KGYpKX0pLHVvLmdldFNpbmdsZXRvbigpLnJ1bihtLCJjb25zdHJ1Y3QiKX12YXIgQWhlPXtfaG9va3NTdG9yYWdlOk9iamVjdC5jcmVhdGUobnVsbCksYWRkSG9vazpmdW5j''@;'; put 'put ''dGlvbihjLGEpe3JldHVybiB0aGlzLl9ob29rc1N0b3JhZ2VbY118fCh0aGlzLl9ob29rc1N0b3JhZ2VbY109W10pLHRoaXMuaG90LmFkZEhvb2soYyxhKSx0aGlzLl9ob29rc1N0b3JhZ2VbY10ucHVzaChhKSx0aGlzfSxyZW1vdmVIb29rc0J5S2V5OmZ1bmN0aW9uKGMpe3ZhciBhPXRoaXM7''@;'; put 'put ''Um4odGhpcy5faG9va3NTdG9yYWdlW2NdfHxbXSxmdW5jdGlvbihmKXthLmhvdC5yZW1vdmVIb29rKGMsZil9KX0sY2xlYXJIb29rczpmdW5jdGlvbigpe3ZhciBjPXRoaXM7bWEodGhpcy5faG9va3NTdG9yYWdlLGZ1bmN0aW9uKGEsZil7cmV0dXJuIGMucmVtb3ZlSG9va3NCeUtleShmKX0p''@;'; put 'put ''LHRoaXMuX2hvb2tzU3RvcmFnZT17fX19O0hoKEFoZSwiTUlYSU5fTkFNRSIsImhvb2tzUmVmUmVnaXN0ZXJlciIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCBEbHQ9QWhlO2Z1bmN0aW9uIHg5KGwpe3JldHVybih4OT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBl''@;'; put 'put ''b2YgY30pKGwpfWZ1bmN0aW9uIFRoZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIHEkKGwsYyl7cmV0dXJuKHEkPU9iamVjdC5zZXRQcm90b3R5cGVP''@;'; put 'put ''Zj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gZkwobCl7cmV0dXJuKGZMPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3Jl''@;'; put 'put ''dHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gT2hlKGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gRGhlKGwsYyl7Zm9y''@;'; put 'put ''KHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx6bHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBJaGUo''@;'; put 'put ''bCxjLGEpe3JldHVybiBjJiZEaGUobC5wcm90b3R5cGUsYyksYSYmRGhlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH1mdW5jdGlvbiB6bHQobCl7dmFyIGM9ZnVuY3Rpb24gVWx0KGwsYyl7aWYoIm9iamVjdCIhPT14OShsKXx8bnVs''@;'; put 'put ''bD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT14OShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEg''@;'; put 'put ''cHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09eDkoYyk/YzpTdHJpbmcoYyl9dmFyIFF1PU9iamVjdC5mcmVlemUoe1ZJUkdJTjoiU1RBVEVfVklSR0lOIixFRElUSU5HOiJTVEFURV9F''@;'; put 'put ''RElUSU5HIixXQUlUSU5HOiJTVEFURV9XQUlUSU5HIixGSU5JU0hFRDoiU1RBVEVfRklOSVNIRUQifSksWCQ9ImJhc2VFZGl0b3IiLEE5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXtPaGUodGhpcyxsKSx0aGlzLmhvdD1jLHRoaXMuaW5zdGFuY2U9Yyx0aGlzLnN0YXRlPVF1LlZJUkdJTix0''@;'; put 'put ''aGlzLl9vcGVuZWQ9ITEsdGhpcy5fZnVsbEVkaXRNb2RlPSExLHRoaXMuX2Nsb3NlQ2FsbGJhY2s9bnVsbCx0aGlzLlREPW51bGwsdGhpcy5yb3c9bnVsbCx0aGlzLmNvbD1udWxsLHRoaXMucHJvcD1udWxsLHRoaXMub3JpZ2luYWxWYWx1ZT1udWxsLHRoaXMuY2VsbFByb3BlcnRpZXM9bnVs''@;'; put 'put ''bCx0aGlzLmluaXQoKX1yZXR1cm4gSWhlKGwsW3trZXk6Il9maXJlQ2FsbGJhY2tzIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLl9jbG9zZUNhbGxiYWNrJiYodGhpcy5fY2xvc2VDYWxsYmFjayhhKSx0aGlzLl9jbG9zZUNhbGxiYWNrPW51bGwpfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiRWRpdG9yIGdldFZhbHVlKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IEVycm9yKCJFZGl0b3Igc2V0VmFsdWUoKSBtZXRo''@;'; put 'put ''b2QgdW5pbXBsZW1lbnRlZCIpfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiRWRpdG9yIG9wZW4oKSBtZXRob2QgdW5pbXBsZW1lbnRlZCIpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIkVkaXRvciBjbG9zZSgpIG1ldGhv''@;'; put 'put ''ZCB1bmltcGxlbWVudGVkIil9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoLG0sXyl7dGhpcy5URD1oLHRoaXMucm93PWEsdGhpcy5jb2w9Zix0aGlzLnByb3A9ZCx0aGlzLm9yaWdpbmFsVmFsdWU9bSx0aGlzLmNlbGxQcm9wZXJ0aWVzPV8sdGhpcy5zdGF0ZT1RdS5W''@;'; put 'put ''SVJHSU59fSx7a2V5OiJleHRlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGEpeyFmdW5jdGlvbiBIbHQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBu''@;'; put 'put ''dWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSks''@;'; put 'put ''YyYmcSQobCxjKX0oZCxhKTt2YXIgZj1mdW5jdGlvbiBObHQobCl7dmFyIGM9ZnVuY3Rpb24gamx0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJl''@;'; put 'put ''dHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9ZkwobCk7aWYoYyl7dmFyIGg9ZkwodGhp''@;'; put 'put ''cykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIFZsdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PXg5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYo''@;'; put 'put ''dm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBCbHQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0''@;'; put 'put ''IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGQpO2Z1bmN0aW9uIGQoKXtyZXR1cm4gT2hlKHRoaXMsZCksZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIEloZShkKX0odGhpcy5jb25zdHJ1Y3Rvcil9''@;'; put 'put ''fSx7a2V5OiJzYXZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGgsbSxfLE8sZD10aGlzO2lmKGYpe3ZhciBYPXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpO2g9TWF0aC5tYXgoTWF0aC5taW4oWFswXSxYWzJdKSwwKSxtPU1hdGgubWF4KE1hdGgubWluKFhbMV0sWFszXSksMCks''@;'; put 'put ''Xz1NYXRoLm1heChYWzBdLFhbMl0pLE89TWF0aC5tYXgoWFsxXSxYWzNdKX1lbHNle3ZhciBhZT1bdGhpcy5yb3csdGhpcy5jb2wsbnVsbCxudWxsXTtoPWFlWzBdLG09YWVbMV0sXz1hZVsyXSxPPWFlWzNdfXZhciBwZT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIs''@;'; put 'put ''aCxtKTtpZihBcnJheS5pc0FycmF5KHBlKSl7dmFyIGJlPWZ1bmN0aW9uIElsdChsLGMpe3JldHVybiBmdW5jdGlvbiBGbHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIFBsdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYm''@;'; put 'put ''bFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEp''@;'; put 'put ''KS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVy''@;'; put 'put ''biBffX0obCxjKXx8ZnVuY3Rpb24gTGx0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBUaGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNv''@;'; put 'put ''bnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFRoZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gUmx0''@;'; put 'put ''KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0o''@;'; put 'put ''KX0ocGUsMik7aD1iZVswXSxtPWJlWzFdfXZhciBWZT10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKSxaZT17cnVuT25seUlmOmZ1bmN0aW9uKCl7cmV0dXJuIGlvKGQuaG90LmdldFNlbGVjdGVkKCkpfSxncm91cDpYJH07dGhpcy5pc0luRnVsbEVk''@;'; put 'put ''aXRNb2RlKCkmJlZlLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2QuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgtMSwwKX19LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe2QuaG90LnNlbGVjdGlvbi50''@;'; put 'put ''cmFuc2Zvcm1TdGFydCgxLDApfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KDAsLTEqZC5ob3QuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0se2tleXM6W1siQXJyb3dSaWdodCJdXSxjYWxsYmFjazpmdW5j''@;'; put 'put ''dGlvbigpe2QuaG90LnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLGQuaG90LmdldERpcmVjdGlvbkZhY3RvcigpKX19XSxaZSksdGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkoaCxtLGEsXyxPLCJlZGl0Iil9fSx7a2V5OiJiZWdpbkVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKGEsZil7aWYo''@;'; put 'put ''dGhpcy5zdGF0ZT09PVF1LlZJUkdJTil7dmFyIGQ9dGhpcy5ob3QsaD1kLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5yb3cpLG09ZC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMuY29sKTtpZihkLnZp''@;'; put 'put ''ZXcuc2Nyb2xsVmlld3BvcnQoZC5fY3JlYXRlQ2VsbENvb3JkcyhoLG0pKSx0aGlzLnN0YXRlPVF1LkVESVRJTkcsdGhpcy5pc0luRnVsbEVkaXRNb2RlKCkpe3ZhciBfPSJzdHJpbmciPT10eXBlb2YgYT9hOk1zKHRoaXMub3JpZ2luYWxWYWx1ZSk7dGhpcy5zZXRWYWx1ZShfKX10aGlzLm9w''@;'; put 'put ''ZW4oZiksdGhpcy5fb3BlbmVkPSEwLHRoaXMuZm9jdXMoKSxkLnZpZXcucmVuZGVyKCksZC5ydW5Ib29rcygiYWZ0ZXJCZWdpbkVkaXRpbmciLHRoaXMucm93LHRoaXMuY29sKX19fSx7a2V5OiJmaW5pc2hFZGl0aW5nIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIG0saD10aGlzO2lmKGQp''@;'; put 'put ''e3ZhciBfPXRoaXMuX2Nsb3NlQ2FsbGJhY2s7dGhpcy5fY2xvc2VDYWxsYmFjaz1mdW5jdGlvbihwZSl7XyYmXyhwZSksZChwZSksaC5ob3Qudmlldy5yZW5kZXIoKX19aWYoIXRoaXMuaXNXYWl0aW5nKCkpe3ZhciBYPXRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQo''@;'; put 'put ''ImVkaXRvciIpO2lmKFgucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChYJCksWC5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKG5SKSx0aGlzLnN0YXRlPT09UXUuVklSR0lOKXJldHVybiB2b2lkIHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXtoLl9maXJlQ2FsbGJhY2tzKCEwKX0p''@;'; put 'put ''O2lmKHRoaXMuc3RhdGU9PT1RdS5FRElUSU5HKXtpZihhKXJldHVybiB0aGlzLmNhbmNlbENoYW5nZXMoKSx2b2lkIHRoaXMuaG90LnZpZXcucmVuZGVyKCk7dmFyIGFlPXRoaXMuZ2V0VmFsdWUoKTttPXRoaXMuY2VsbFByb3BlcnRpZXMudHJpbVdoaXRlc3BhY2U/W1sic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGFlP1N0cmluZy5wcm90b3R5cGUudHJpbS5jYWxsKGFlfHwiIik6YWVdXTpbW2FlXV0sdGhpcy5zdGF0ZT1RdS5XQUlUSU5HLHRoaXMuc2F2ZVZhbHVlKG0sZiksdGhpcy5ob3QuZ2V0Q2VsbFZhbGlkYXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKT90aGlzLmhvdC5hZGRIb29rT25jZSgi''@;'; put 'put ''cG9zdEFmdGVyVmFsaWRhdGUiLGZ1bmN0aW9uKHBlKXtoLnN0YXRlPVF1LkZJTklTSEVELGguZGlzY2FyZEVkaXRvcihwZSl9KToodGhpcy5zdGF0ZT1RdS5GSU5JU0hFRCx0aGlzLmRpc2NhcmRFZGl0b3IoITApKX19fX0se2tleToiY2FuY2VsQ2hhbmdlcyIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLnN0YXRlPVF1LkZJTklTSEVELHRoaXMuZGlzY2FyZEVkaXRvcigpfX0se2tleToiZGlzY2FyZEVkaXRvciIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5zdGF0ZT09PVF1LkZJTklTSEVEJiYoITE9PT1hJiYhMCE9PXRoaXMuY2VsbFByb3BlcnRpZXMuYWxsb3dJbnZhbGlkPyh0aGlzLmhv''@;'; put 'put ''dC5zZWxlY3RDZWxsKHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmZvY3VzKCksdGhpcy5zdGF0ZT1RdS5FRElUSU5HLHRoaXMuX2ZpcmVDYWxsYmFja3MoITEpKToodGhpcy5jbG9zZSgpLHRoaXMuX29wZW5lZD0hMSx0aGlzLl9mdWxsRWRpdE1vZGU9ITEsdGhpcy5zdGF0ZT1RdS5WSVJHSU4s''@;'; put 'put ''dGhpcy5fZmlyZUNhbGxiYWNrcyghMCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuc2V0QWN0aXZlQ29udGV4dE5hbWUoImdyaWQiKSkpfX0se2tleToiZW5hYmxlRnVsbEVkaXRNb2RlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2Z1bGxFZGl0TW9kZT0hMH19LHtrZXk6ImlzSW5G''@;'; put 'put ''dWxsRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxFZGl0TW9kZX19LHtrZXk6ImlzT3BlbmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcGVuZWR9fSx7a2V5OiJpc1dhaXRpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU9''@;'; put 'put ''PT1RdS5XQUlUSU5HfX0se2tleToiZ2V0RWRpdGVkQ2VsbFJlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGEsZj10aGlzLmdldEVkaXRlZENlbGwoKTtpZihmKXt2YXIgZD10aGlzLmhvdC52aWV3Ll93dCxoPWQud3RPdmVybGF5cyxtPWQud3RWaWV3cG9ydCxfPXRoaXMuaG90LnJvb3RXaW5k''@;'; put 'put ''b3csTz1pdShmKSxYPVNsKGYpLGFlPWl1KHRoaXMuaG90LnJvb3RFbGVtZW50KSxwZT1TbCh0aGlzLmhvdC5yb290RWxlbWVudCksYmU9aC50b3BPdmVybGF5LmhvbGRlcix4ZT1oLmlubGluZVN0YXJ0T3ZlcmxheS5ob2xkZXIsVmU9YmUhPT1fP2JlLnNjcm9sbFRvcDowLFplPXhlIT09Xz94''@;'; put 'put ''ZS5zY3JvbGxMZWZ0OjAsbHQ9Xy5pbm5lcldpZHRoLWFlLmxlZnQtcGUsZ3Q9KG51bGwhPT0oYT1oLmdldFBhcmVudE92ZXJsYXkoZikpJiZ2b2lkIDAhPT1hP2E6dGhpcy5ob3Qudmlldy5fd3QpLnd0VGFibGUsanQ9Z3QubmFtZSxybj1bIm1hc3RlciIsImlubGluZV9zdGFydCJdLmluY2x1''@;'; put 'put ''ZGVzKGp0KT9WZTowLFh0PVsibWFzdGVyIiwidG9wIiwiYm90dG9tIl0uaW5jbHVkZXMoanQpP1plOjAsUW49Ty50b3AtYWUudG9wLShPLnRvcD09PWFlLnRvcD8wOjEpLXJuLE9yPTA7T3I9dGhpcy5ob3QuaXNSdGwoKT9fLmlubmVyV2lkdGgtTy5sZWZ0LVgtbHQtMStYdDpPLmxlZnQtYWUu''@;'; put 'put ''bGVmdC0xLVh0LFsidG9wIiwidG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhqdCkmJihRbis9aC50b3BPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKSksWyJpbmxpbmVfc3RhcnQiLCJ0b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciJdLmluY2x1ZGVzKGp0KSYmKE9yKz1NYXRoLmFi''@;'; put 'put ''cyhoLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCkpKTt2YXIgVnI9dGhpcy5ob3QuaGFzQ29sSGVhZGVycygpLFpyPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5yb3cpLGlyPXRoaXMuaG90LmNvbHVtbkluZGV4''@;'; put 'put ''TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodGhpcy5jb2wpLEFyPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCktdGhpcy5ob3Qudmlldy5fd3QuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIik7KFZyJiZacjw9MHx8WnI9''@;'; put 'put ''PT1BcikmJihRbis9MSksaXI8PTAmJihPcis9MSk7dmFyIEVuPW0ucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbixUcj1tLmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sVm49TWF0aC5hYnMoaC5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRp''@;'; put 'put ''b24oKSksY3I9aC50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksQ3I9TnUodGhpcy5ob3Qucm9vdERvY3VtZW50KSxZcj1mLm9mZnNldFRvcCtFbi1jcixTdD0wO2lmKHRoaXMuaG90LmlzUnRsKCkpe3ZhciBGdD1mLm9mZnNldExlZnQ7U3Q9RnQ+PTA/Z3QuZ2V0V2lkdGgoKS1mLm9m''@;'; put 'put ''ZnNldExlZnQ6TWF0aC5hYnMoRnQpLFN0Kz1Uci1Wbi1YfWVsc2UgU3Q9Zi5vZmZzZXRMZWZ0K1RyLVZuO3ZhciBXdD1ENCh0aGlzLlRELHRoaXMuaG90LnJvb3RXaW5kb3cpLHduPXRoaXMuaG90LmlzUnRsKCk/ImJvcmRlclJpZ2h0V2lkdGgiOiJib3JkZXJMZWZ0V2lkdGgiLFNuPXBhcnNl''@;'; put 'put ''SW50KFd0W3duXSwxMCk+MD8wOjEsYnI9cGFyc2VJbnQoV3QuYm9yZGVyVG9wV2lkdGgsMTApPjA/MDoxLGRyPVNsKGYpK1NuLExyPWNzKGYpK2JyLE5yPV8wZShiZSk/Q3I6MCxkaT13MGUoeGUpP0NyOjAscXI9dGhpcy5ob3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRXaWR0aChTdCkt''@;'; put 'put ''TnIrU247cmV0dXJue3RvcDpRbixzdGFydDpPcixoZWlnaHQ6THIsbWF4SGVpZ2h0Ok1hdGgubWF4KHRoaXMuaG90LnZpZXcubWF4aW11bVZpc2libGVFbGVtZW50SGVpZ2h0KFlyKS1kaSticiwyMyksd2lkdGg6ZHIsbWF4V2lkdGg6cXJ9fX19LHtrZXk6ImdldEVkaXRlZENlbGxzTGF5ZXJD''@;'; put 'put ''bGFzcyIsdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jaGVja0VkaXRvclNlY3Rpb24oKSl7Y2FzZSJpbmxpbmUtc3RhcnQiOnJldHVybiJodF9jbG9uZV9sZWZ0IGh0X2Nsb25lX2lubGluZV9zdGFydCI7Y2FzZSJib3R0b20iOnJldHVybiJodF9jbG9uZV9ib3R0b20iO2Nhc2UiYm90''@;'; put 'put ''dG9tLWlubGluZS1zdGFydC1jb3JuZXIiOnJldHVybiJodF9jbG9uZV9ib3R0b21fbGVmdF9jb3JuZXIgaHRfY2xvbmVfYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiO2Nhc2UidG9wIjpyZXR1cm4iaHRfY2xvbmVfdG9wIjtjYXNlInRvcC1pbmxpbmUtc3RhcnQtY29ybmVyIjpyZXR1cm4i''@;'; put 'put ''aHRfY2xvbmVfdG9wX2xlZnRfY29ybmVyIGh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIjtkZWZhdWx0OnJldHVybiJodF9jbG9uZV9tYXN0ZXIifX19LHtrZXk6ImdldEVkaXRlZENlbGwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG90LmdldENlbGwodGhpcy5yb3cs''@;'; put 'put ''dGhpcy5jb2wsITApfX0se2tleToiY2hlY2tFZGl0b3JTZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaG90LmNvdW50Um93cygpLGY9IiI7cmV0dXJuIHRoaXMucm93PHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wP2Y9dGhpcy5jb2w8dGhpcy5ob3QuZ2V0''@;'; put 'put ''U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydD8idG9wLWlubGluZS1zdGFydC1jb3JuZXIiOiJ0b3AiOnRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzQm90dG9tJiZ0aGlzLnJvdz49YS10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbT9mPXRoaXMuY29sPHRo''@;'; put 'put ''aXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQ/ImJvdHRvbS1pbmxpbmUtc3RhcnQtY29ybmVyIjoiYm90dG9tIjp0aGlzLmNvbDx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0JiYoZj0iaW5saW5lLXN0YXJ0IiksZn19XSxbe2tleToiRURJVE9S''@;'; put 'put ''X1RZUEUiLGdldDpmdW5jdGlvbigpe3JldHVybiJiYXNlIn19XSksbH0oKTtmdW5jdGlvbiBZbHQoKXt2YXIgYyxsPXttaW5IZWlnaHQ6MjAwLG1heEhlaWdodDozMDAsbWluV2lkdGg6MTAwLG1heFdpZHRoOjMwMH0sYT1kb2N1bWVudC5ib2R5LGY9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo''@;'; put 'put ''IiIpLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU1BBTiIpLGg9ZnVuY3Rpb24oeGUsVmUsWmUpe3hlLmFkZEV2ZW50TGlzdGVuZXIoVmUsWmUsITEpfSxtPWZ1bmN0aW9uKHhlLFZlLFplKXt4ZS5yZW1vdmVFdmVudExpc3RlbmVyKFZlLFplLCExKX0sXz1mdW5jdGlvbih4ZSl7dmFyIFZl''@;'; put 'put ''LFplO3hlPy9eW2EtekEtWiBcLixcXFwvXHwwLTldJC8udGVzdCh4ZSl8fCh4ZT0iLiIpOnhlPSIiLHZvaWQgMCE9PWYudGV4dENvbnRlbnQ/Zi50ZXh0Q29udGVudD1jLnZhbHVlK3hlOmYuZGF0YT1jLnZhbHVlK3hlLGQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixkLnN0eWxlLmZvbnRT''@;'; put 'put ''aXplPXBlKGMpLmZvbnRTaXplLGQuc3R5bGUuZm9udEZhbWlseT1wZShjKS5mb250RmFtaWx5LGQuc3R5bGUud2hpdGVTcGFjZT0icHJlIixhLmFwcGVuZENoaWxkKGQpLFZlPWQuY2xpZW50V2lkdGgrMixhLnJlbW92ZUNoaWxkKGQpLGMuc3R5bGUuaGVpZ2h0PWwubWluSGVpZ2h0KyJweCIs''@;'; put 'put ''Yy5zdHlsZS53aWR0aD1sLm1pbldpZHRoPlZlP2wubWluV2lkdGgrInB4IjpWZT5sLm1heFdpZHRoP2wubWF4V2lkdGgrInB4IjpWZSsicHgiLGwubWluSGVpZ2h0PihaZT1jLnNjcm9sbEhlaWdodD9jLnNjcm9sbEhlaWdodC0xOjApP2Muc3R5bGUuaGVpZ2h0PWwubWluSGVpZ2h0KyJweCI6''@;'; put 'put ''bC5tYXhIZWlnaHQ8WmU/KGMuc3R5bGUuaGVpZ2h0PWwubWF4SGVpZ2h0KyJweCIsYy5zdHlsZS5vdmVyZmxvd1k9InZpc2libGUiKTpjLnN0eWxlLmhlaWdodD1aZSsicHgifSxPPWZ1bmN0aW9uKCl7d2luZG93LnNldFRpbWVvdXQoXywwKX07ZnVuY3Rpb24gcGUoYmUpe3JldHVybiBiZS5j''@;'; put 'put ''dXJyZW50U3R5bGV8fGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYmUpfXJldHVybntpbml0OmZ1bmN0aW9uKHhlLFZlLFplKXshZnVuY3Rpb24oeGUsVmUsWmUpe2M9eGUsZnVuY3Rpb24oeGUpe2lmKHhlJiZ4ZS5taW5IZWlnaHQpaWYoImluaGVyaXQiPT14ZS5taW5I''@;'; put 'put ''ZWlnaHQpbC5taW5IZWlnaHQ9Yy5jbGllbnRIZWlnaHQ7ZWxzZXt2YXIgVmU9cGFyc2VJbnQoeGUubWluSGVpZ2h0KTtpc05hTihWZSl8fChsLm1pbkhlaWdodD1WZSl9aWYoeGUmJnhlLm1heEhlaWdodClpZigiaW5oZXJpdCI9PXhlLm1heEhlaWdodClsLm1heEhlaWdodD1jLmNsaWVudEhl''@;'; put 'put ''aWdodDtlbHNle3ZhciBaZT1wYXJzZUludCh4ZS5tYXhIZWlnaHQpO2lzTmFOKFplKXx8KGwubWF4SGVpZ2h0PVplKX1pZih4ZSYmeGUubWluV2lkdGgpaWYoImluaGVyaXQiPT14ZS5taW5XaWR0aClsLm1pbldpZHRoPWMuY2xpZW50V2lkdGg7ZWxzZXt2YXIgbHQ9cGFyc2VJbnQoeGUubWlu''@;'; put 'put ''V2lkdGgpO2lzTmFOKGx0KXx8KGwubWluV2lkdGg9bHQpfWlmKHhlJiZ4ZS5tYXhXaWR0aClpZigiaW5oZXJpdCI9PXhlLm1heFdpZHRoKWwubWF4V2lkdGg9Yy5jbGllbnRXaWR0aDtlbHNle3ZhciBkdD1wYXJzZUludCh4ZS5tYXhXaWR0aCk7aXNOYU4oZHQpfHwobC5tYXhXaWR0aD1kdCl9''@;'; put 'put ''ZC5maXJzdENoaWxkfHwoZC5jbGFzc05hbWU9ImF1dG9SZXNpemUiLGQuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIixkLmFwcGVuZENoaWxkKGYpKX0oVmUpLCJURVhUQVJFQSI9PWMubm9kZU5hbWUmJihjLnN0eWxlLnJlc2l6ZT0ibm9uZSIsYy5zdHlsZS5vdmVyZmxvd1k9IiIsYy5z''@;'; put 'put ''dHlsZS5oZWlnaHQ9bC5taW5IZWlnaHQrInB4IixjLnN0eWxlLm1pbldpZHRoPWwubWluV2lkdGgrInB4IixjLnN0eWxlLm1heFdpZHRoPWwubWF4V2lkdGgrInB4IixjLnN0eWxlLm92ZXJmbG93WT0iaGlkZGVuIiksWmUmJihoKGMsImNoYW5nZSIsXyksaChjLCJjdXQiLE8pLGgoYywicGFz''@;'; put 'put ''dGUiLE8pLGgoYywiZHJvcCIsTyksaChjLCJrZXlkb3duIixPKSxoKGMsImZvY3VzIixfKSxoKGMsImNvbXBvc2l0aW9uc3RhcnQiLE8pLGgoYywiY29tcG9zaXRpb251cGRhdGUiLE8pLGgoYywiY29tcG9zaXRpb25lbmQiLE8pKSxfKCl9KHhlLFZlLFplKX0sdW5PYnNlcnZlOmZ1bmN0aW9u''@;'; put 'put ''KCl7bShjLCJjaGFuZ2UiLF8pLG0oYywiY3V0IixPKSxtKGMsInBhc3RlIixPKSxtKGMsImRyb3AiLE8pLG0oYywia2V5ZG93biIsTyksbShjLCJmb2N1cyIsXyksbShjLCJjb21wb3NpdGlvbnN0YXJ0IixPKSxtKGMsImNvbXBvc2l0aW9udXBkYXRlIixPKSxtKGMsImNvbXBvc2l0aW9uZW5k''@;'; put 'put ''IixPKX0scmVzaXplOl99fWZ1bmN0aW9uIFJoZShsLGMpe2Zvcih2YXIgYT1rWShjKSxmPWMudmFsdWUuc3BsaXQoIlxuIiksZD1hLGg9MCxtPTA7bTxmLmxlbmd0aDttKyspezAhPT1tJiYoaCs9ZlttLTFdLmxlbmd0aCsxKTt2YXIgTz1oK2ZbbV0ubGVuZ3RoO2lmKCJob21lIj09PWw/ZD1o''@;'; put 'put ''OiJlbmQiPT09bCYmKGQ9TyksYTw9TylicmVha31XUyhjLGQpfWZ1bmN0aW9uIFQ5KGwpe3JldHVybihUOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIExoZShsLGMpe3JldHVybiBmdW5jdGlvbiBLbHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSly''@;'; put 'put ''ZXR1cm4gbH0obCl8fGZ1bmN0aW9uICRsdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwp''@;'; put 'put ''KS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJl''@;'; put 'put ''dHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gR2x0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBQaGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBl''@;'; put 'put ''LnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwx''@;'; put 'put ''NnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFBoZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gV2x0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0''@;'; put 'put ''ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBQaGUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09''@;'; put 'put ''bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBGaGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShsLEpsdChmLmtleSksZil9fWZ1bmN0aW9uIEpsdChsKXt2YXIgYz1mdW5jdGlvbiBRbHQobCxjKXtpZigib2JqZWN0IiE9PVQ5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRl''@;'; put 'put ''ZmF1bHQiKTtpZigib2JqZWN0IiE9PVQ5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5''@;'; put 'put ''bWJvbCI9PT1UOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB5aygpe3JldHVybiB5az10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gZXN0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1PNShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19''@;'; put 'put ''LHlrLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBKJChsLGMpe3JldHVybihKJD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEhoZShsKXtp''@;'; put 'put ''Zih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gTzUobCl7cmV0dXJuKE81PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9VGwoQTksRGx0KTt2YXIgZEw9Imh0X2VkaXRvcl9oaWRkZW4iLE5oZT0idGV4dEVkaXRvciIsRDU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHRzdChs''@;'; put 'put ''LGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9y''@;'; put 'put ''Ont2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZKJChsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIG5zdChsKXt2YXIgYz1mdW5jdGlvbiBpc3QoKXtpZih0eXBlb2YgUmVm''@;'; put 'put ''bGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVh''@;'; put 'put ''bixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1PNShsKTtpZihjKXt2YXIgaD1PNSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gcnN0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09VDkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmpl''@;'; put 'put ''Y3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEhoZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIHFsdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv''@;'; put 'put ''biIpfSh0aGlzLGEpLChkPWMuY2FsbCh0aGlzLGYpKS5ldmVudE1hbmFnZXI9bmV3IGZzKEhoZShkKSksZC5hdXRvUmVzaXplPVlsdCgpLGQuVEVYVEFSRUE9dm9pZCAwLGQudGV4dGFyZWFTdHlsZT12b2lkIDAsZC5URVhUQVJFQV9QQVJFTlQ9dm9pZCAwLGQudGV4dGFyZWFQYXJlbnRTdHls''@;'; put 'put ''ZT12b2lkIDAsZC5sYXllckNsYXNzPXZvaWQgMCxkLmNyZWF0ZUVsZW1lbnRzKCksZC5iaW5kRXZlbnRzKCksZC5ob3QuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5kZXN0cm95KCl9KSxkfXJldHVybiBmdW5jdGlvbiBYbHQobCxjLGEpe2MmJkZoZShs''@;'; put 'put ''LnByb3RvdHlwZSxjKSxhJiZGaGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVEVYVEFSRUEudmFsdWV9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oZCl7dGhpcy5URVhUQVJFQS52YWx1ZT1kfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMucmVmcmVzaERpbWVuc2lvbnMoKSx0aGlzLnNob3dFZGl0YWJsZUVsZW1lbnQoKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3Rp''@;'; put 'put ''dmVDb250ZXh0TmFtZSgiZWRpdG9yIiksdGhpcy5hZGRIb29rKCJhZnRlckRvY3VtZW50S2V5RG93biIsZnVuY3Rpb24obSl7cmV0dXJuIGQub25BZnRlckRvY3VtZW50S2V5RG93bihtKX0pLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuYXV0b1Jlc2l6ZS51bk9ic2VydmUoKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuVEVYVEFSRUEmJnRoaXMuaG90Lmxpc3RlbigpLHRoaXMuaGlkZUVkaXRhYmxlRWxlbWVudCgpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMucmVtb3Zl''@;'; put 'put ''SG9va3NCeUtleSgiYWZ0ZXJEb2N1bWVudEtleURvd24iKX19LHtrZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8sTyxYKXt2YXIgYWU9dGhpcy5zdGF0ZTtpZih5ayhPNShhLnByb3RvdHlwZSksInByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyxkLGgsbSxfLE8sWCksIVgucmVh''@;'; put 'put ''ZE9ubHkpe3RoaXMucmVmcmVzaERpbWVuc2lvbnMoITApO3ZhciBiZT1YLmZyYWdtZW50U2VsZWN0aW9uO1guYWxsb3dJbnZhbGlkJiYodGhpcy5URVhUQVJFQS52YWx1ZT0iIiksYWUhPT1RdS5GSU5JU0hFRCYmdGhpcy5oaWRlRWRpdGFibGVFbGVtZW50KCksIWJlJiYhUGQoKSYmdGhpcy5m''@;'; put 'put ''b2N1cygpfX19LHtrZXk6ImJlZ2luRWRpdGluZyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt0aGlzLnN0YXRlPT09UXUuVklSR0lOJiYodGhpcy5URVhUQVJFQS52YWx1ZT0iIix5ayhPNShhLnByb3RvdHlwZSksImJlZ2luRWRpdGluZyIsdGhpcykuY2FsbCh0aGlzLGQsaCkpfX0se2tleToiZm9j''@;'; put 'put ''dXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5URVhUQVJFQS5zZWxlY3QoKSxXUyh0aGlzLlRFWFRBUkVBLHRoaXMuVEVYVEFSRUEudmFsdWUubGVuZ3RoKX19LHtrZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LnJvb3REb2N1bWVudDt0aGlzLlRF''@;'; put 'put ''WFRBUkVBPWQuY3JlYXRlRWxlbWVudCgiVEVYVEFSRUEiKSx0aGlzLlRFWFRBUkVBLnNldEF0dHJpYnV0ZSgiZGF0YS1ob3QtaW5wdXQiLCIiKSx0aGlzLlRFWFRBUkVBLnRhYkluZGV4PS0xLGdpKHRoaXMuVEVYVEFSRUEsImhhbmRzb250YWJsZUlucHV0IiksdGhpcy50ZXh0YXJlYVN0eWxl''@;'; put 'put ''PXRoaXMuVEVYVEFSRUEuc3R5bGUsdGhpcy50ZXh0YXJlYVN0eWxlLndpZHRoPTAsdGhpcy50ZXh0YXJlYVN0eWxlLmhlaWdodD0wLHRoaXMudGV4dGFyZWFTdHlsZS5vdmVyZmxvd1k9InZpc2libGUiLHRoaXMuVEVYVEFSRUFfUEFSRU5UPWQuY3JlYXRlRWxlbWVudCgiRElWIiksZ2kodGhp''@;'; put 'put ''cy5URVhUQVJFQV9QQVJFTlQsImhhbmRzb250YWJsZUlucHV0SG9sZGVyIiksWW8odGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXllckNsYXNzKSYmSm8odGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXllckNsYXNzKSxnaSh0aGlzLlRFWFRBUkVBX1BBUkVOVCxkTCksdGhpcy50ZXh0''@;'; put 'put ''YXJlYVBhcmVudFN0eWxlPXRoaXMuVEVYVEFSRUFfUEFSRU5ULnN0eWxlLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUEpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUFfUEFSRU5UKX19LHtrZXk6ImhpZGVFZGl0YWJs''@;'; put 'put ''ZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7KEpjZSgpfHxYY2UoKSkmJih0aGlzLnRleHRhcmVhU3R5bGUudGV4dEluZGVudD0iLTk5OTk5cHgiKSx0aGlzLnRleHRhcmVhU3R5bGUub3ZlcmZsb3dZPSJ2aXNpYmxlIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3BhY2l0eT0iMCIsdGhp''@;'; put 'put ''cy50ZXh0YXJlYVBhcmVudFN0eWxlLmhlaWdodD0iMXB4IixKbyh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpLGdpKHRoaXMuVEVYVEFSRUFfUEFSRU5ULGRMKX19LHtrZXk6InNob3dFZGl0YWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50ZXh0YXJlYVBh''@;'; put 'put ''cmVudFN0eWxlLmhlaWdodD0iIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3ZlcmZsb3c9IiIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLnBvc2l0aW9uPSIiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJsZWZ0IjoicmlnaHQiXT0iYXV0byIsdGhpcy50''@;'; put 'put ''ZXh0YXJlYVBhcmVudFN0eWxlLm9wYWNpdHk9IjEiLHRoaXMudGV4dGFyZWFTdHlsZS50ZXh0SW5kZW50PSIiLHRoaXMudGV4dGFyZWFTdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiI7dmFyIGQ9dGhpcy5URVhUQVJFQV9QQVJFTlQuY2hpbGROb2RlcyxoPSExO19vKGQubGVuZ3RoLTEsZnVuY3Rp''@;'; put 'put ''b24obSl7aWYoWW8oZFttXSwiaGFuZHNvbnRhYmxlRWRpdG9yIikpcmV0dXJuIGg9ITAsITF9KSxZbyh0aGlzLlRFWFRBUkVBX1BBUkVOVCxkTCkmJkpvKHRoaXMuVEVYVEFSRUFfUEFSRU5ULGRMKSxoPyh0aGlzLmxheWVyQ2xhc3M9Imh0X2VkaXRvcl92aXNpYmxlIixnaSh0aGlzLlRFWFRB''@;'; put 'put ''UkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpKToodGhpcy5sYXllckNsYXNzPXRoaXMuZ2V0RWRpdGVkQ2VsbHNMYXllckNsYXNzKCksZ2kodGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXllckNsYXNzKSl9fSx7a2V5OiJyZWZyZXNoVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9''@;'; put 'put ''dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh0aGlzLnJvdyksaD10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGQsdGhpcy5jb2wpO3RoaXMub3JpZ2luYWxWYWx1ZT1oLHRoaXMuc2V0VmFsdWUoaCksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfX0se2tleToicmVmcmVzaERpbWVuc2lvbnMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZih0aGlzLnN0YXRlPT09UXUuRURJVElOR3x8ZCl7aWYodGhpcy5URD10aGlzLmdldEVkaXRlZENlbGwoKSwhdGhpcy5URClyZXR1cm4gdm9pZChk''@;'; put 'put ''fHx0aGlzLmNsb3NlKCkpO3ZhciBoPXRoaXMuZ2V0RWRpdGVkQ2VsbFJlY3QoKSxfPWguc3RhcnQsTz1oLndpZHRoLFg9aC5tYXhXaWR0aCxhZT1oLmhlaWdodCxwZT1oLm1heEhlaWdodDt0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUudG9wPSIiLmNvbmNhdChoLnRvcCwicHgiKSx0aGlzLnRl''@;'; put 'put ''eHRhcmVhUGFyZW50U3R5bGVbdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Il09IiIuY29uY2F0KF8sInB4IiksdGhpcy5zaG93RWRpdGFibGVFbGVtZW50KCk7dmFyIGJlPUQ0KHRoaXMuVEQsdGhpcy5ob3Qucm9vdFdpbmRvdyk7dGhpcy5URVhUQVJFQS5zdHlsZS5mb250U2l6ZT1i''@;'; put 'put ''ZS5mb250U2l6ZSx0aGlzLlRFWFRBUkVBLnN0eWxlLmZvbnRGYW1pbHk9YmUuZm9udEZhbWlseSx0aGlzLlRFWFRBUkVBLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLlRELnN0eWxlLmJhY2tncm91bmRDb2xvcjt2YXIgeGU9RDQodGhpcy5URVhUQVJFQSksVmU9cGFyc2VJbnQoeGUucGFk''@;'; put 'put ''ZGluZ0xlZnQsMTApK3BhcnNlSW50KHhlLnBhZGRpbmdSaWdodCwxMCksWmU9cGFyc2VJbnQoeGUucGFkZGluZ1RvcCwxMCkrcGFyc2VJbnQoeGUucGFkZGluZ0JvdHRvbSwxMCksZHQ9YWUtWmUsZ3Q9WC1WZSxqdD1wZS1aZTt0aGlzLmF1dG9SZXNpemUuaW5pdCh0aGlzLlRFWFRBUkVBLHtt''@;'; put 'put ''aW5XaWR0aDpNYXRoLm1pbihPLVZlLGd0KSxtaW5IZWlnaHQ6TWF0aC5taW4oZHQsanQpLG1heFdpZHRoOmd0LG1heEhlaWdodDpqdH0sITApfX19LHtrZXk6ImJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVy''@;'; put 'put ''KHRoaXMuVEVYVEFSRUEsImN1dCIsZnVuY3Rpb24oaCl7cmV0dXJuIGguc3RvcFByb3BhZ2F0aW9uKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuVEVYVEFSRUEsInBhc3RlIixmdW5jdGlvbihoKXtyZXR1cm4gaC5zdG9wUHJvcGFnYXRpb24oKX0pLGNZKCkm''@;'; put 'put ''JnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5URVhUQVJFQSwiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQuZmluaXNoRWRpdGluZyghMSl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe3JldHVybiBkLnJlZnJl''@;'; put 'put ''c2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5yZWZyZXNoRGltZW5zaW9ucygpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oKXtkLnJlZnJlc2hEaW1lbnNpb25zKCksZC5m''@;'; put 'put ''b2N1cygpfSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsZnVuY3Rpb24oKXtkLnJlZnJlc2hEaW1lbnNpb25zKCksZC5mb2N1cygpfSl9fSx7a2V5OiJhbGxvd0tleUV2ZW50UHJvcGFnYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95KCksdGhpcy5jbGVhckhvb2tzKCl9fSx7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLG09dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksTz1mdW5j''@;'; put 'put ''dGlvbigpe2QuaG90LnJvb3REb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsITEsIlxuIil9O20uYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJUYWIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oYWUpe3ZhciBwZT1kLmhvdC5nZXRTZXR0aW5ncygpLGJlPSJmdW5jdGlvbiI9PXR5cGVvZiBw''@;'; put 'put ''ZS50YWJNb3Zlcz9wZS50YWJNb3ZlcyhhZSk6cGUudGFiTW92ZXM7ZC5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KGJlLnJvdyxiZS5jb2wsITApfX0se2tleXM6W1siU2hpZnQiLCJUYWIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oYWUpe3ZhciBwZT1kLmhvdC5nZXRTZXR0aW5ncygpLGJl''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBwZS50YWJNb3Zlcz9wZS50YWJNb3ZlcyhhZSk6cGUudGFiTW92ZXM7ZC5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC1iZS5yb3csLWJlLmNvbCl9fSx7a2V5czpbWyJDb250cm9sIiwiRW50ZXIiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''TygpLCExfSxydW5Pbmx5SWY6ZnVuY3Rpb24oYWUpe3JldHVybiFkLmhvdC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpJiYhYWUuYWx0S2V5fSxyZWxhdGl2ZVRvR3JvdXA6UVMscG9zaXRpb246ImJlZm9yZSJ9LHtrZXlzOltbIk1ldGEiLCJFbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBPKCksITF9LHJ1bk9ubHlJZjpmdW5jdGlvbigpe3JldHVybiFkLmhvdC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpfSxyZWxhdGl2ZVRvR3JvdXA6UVMscG9zaXRpb246ImJlZm9yZSJ9LHtrZXlzOltbIkFsdCIsIkVudGVyIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIE8oKSwh''@;'; put 'put ''MX0scmVsYXRpdmVUb0dyb3VwOlFTLHBvc2l0aW9uOiJiZWZvcmUifSx7a2V5czpbWyJQYWdlVXAiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtkLmhvdC5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLWQuaG90LmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIlBhZ2VEb3duIl1dLGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKCl7ZC5ob3Quc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KGQuaG90LmNvdW50VmlzaWJsZVJvd3MoKSwwKX19LHtrZXlzOltbIkhvbWUiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oYWUscGUpe1JoZShMaGUocGUsMSlbMF0sZC5URVhUQVJFQSl9fSx7a2V5czpbWyJFbmQi''@;'; put 'put ''XV0sY2FsbGJhY2s6ZnVuY3Rpb24oYWUscGUpe1JoZShMaGUocGUsMSlbMF0sZC5URVhUQVJFQSl9fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJaIl1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe2QuYXV0''@;'; put 'put ''b1Jlc2l6ZS5yZXNpemUoKX0sMTApfX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiU2hpZnQiLCJaIl1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe2QuYXV0b1Jlc2l6ZS5yZXNpemUoKX0sMTApfX1dLHty''@;'; put 'put ''dW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gaW8oZC5ob3QuZ2V0U2VsZWN0ZWQoKSl9LGdyb3VwOk5oZX0pfX0se2tleToidW5yZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3Ii''@;'; put 'put ''KTtoLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoblIpLGgucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChOaGUpLGgucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChYJCl9fSx7a2V5OiJvbkFmdGVyRG9jdW1lbnRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihkKXstMT09PVtoby5BUlJPV19VUCxoby5BUlJP''@;'; put 'put ''V19SSUdIVCxoby5BUlJPV19ET1dOLGhvLkFSUk9XX0xFRlRdLmluZGV4T2YoZC5rZXlDb2RlKSYmdGhpcy5hdXRvUmVzaXplLnJlc2l6ZShTdHJpbmcuZnJvbUNoYXJDb2RlKGQua2V5Q29kZSkpfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInRleHQifX1d''@;'; put 'put ''KSxhfShBOSk7ZnVuY3Rpb24gYmsobCxjLGEsZixkLGgsbSl7dmFyIF89W10sTz1bXTttLmNsYXNzTmFtZSYmZ2koYyxtLmNsYXNzTmFtZSksbS5yZWFkT25seSYmXy5wdXNoKG0ucmVhZE9ubHlDZWxsQ2xhc3NOYW1lKSwhMT09PW0udmFsaWQmJm0uaW52YWxpZENlbGxDbGFzc05hbWU/Xy5w''@;'; put 'put ''dXNoKG0uaW52YWxpZENlbGxDbGFzc05hbWUpOk8ucHVzaChtLmludmFsaWRDZWxsQ2xhc3NOYW1lKSwhMT09PW0ud29yZFdyYXAmJm0ubm9Xb3JkV3JhcENsYXNzTmFtZSYmXy5wdXNoKG0ubm9Xb3JkV3JhcENsYXNzTmFtZSksIWgmJm0ucGxhY2Vob2xkZXImJl8ucHVzaChtLnBsYWNlaG9s''@;'; put 'put ''ZGVyQ2VsbENsYXNzTmFtZSksSm8oYyxPKSxnaShjLF8pfWZ1bmN0aW9uIFY0KGwsYyxhLGYsZCxoLG0pe2JrLmFwcGx5KHRoaXMsW2wsYyxhLGYsZCxoLG1dKTt2YXIgXz1oO2lmKCFfJiZtLnBsYWNlaG9sZGVyJiYoXz1tLnBsYWNlaG9sZGVyKSxfPU1zKF8pLG0udHJpbVdoaXRlc3BhY2Um''@;'; put 'put ''JihfPV8udHJpbSgpKSxtLnJlbmRlcmVyVGVtcGxhdGUpe0ZkKGMpO3ZhciBPPWwucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlRFTVBMQVRFIik7Ty5zZXRBdHRyaWJ1dGUoImJpbmQiLCJ7e319IiksTy5pbm5lckhUTUw9bS5yZW5kZXJlclRlbXBsYXRlLEhUTUxUZW1wbGF0ZUVsZW1l''@;'; put 'put ''bnQuZGVjb3JhdGUoTyksTy5tb2RlbD1sLmdldFNvdXJjZURhdGFBdFJvdyhhKSxjLmFwcGVuZENoaWxkKE8pfWVsc2UgTzQoYyxfKX1iay5SRU5ERVJFUl9UWVBFPSJiYXNlIixWNC5SRU5ERVJFUl9UWVBFPSJ0ZXh0Ijt2YXIgVmhlPXtDRUxMX1RZUEU6InRleHQiLGVkaXRvcjpENSxyZW5k''@;'; put 'put ''ZXJlcjpWNH07ZnVuY3Rpb24gamQobCxjKXt2YXIgYT1uZXcgSyQobCxjfHx7fSxJVyk7cmV0dXJuIGEuaW5pdCgpLGF9QmQoVmhlKSxqZC5lZGl0b3JzPXtCYXNlRWRpdG9yOkE5fSxqZC5Db3JlPWZ1bmN0aW9uKGwpe3JldHVybiBuZXcgSyQobCxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sSVcpfSxqZC5EZWZhdWx0U2V0dGluZ3M9cmhlKCksamQuaG9va3M9dW8uZ2V0U2luZ2xldG9uKCksamQuQ2VsbENvb3Jkcz1tUixqZC5DZWxsUmFuZ2U9aFcsamQucGFja2FnZU5hbWU9ImhhbmRzb250YWJsZSIsamQuYnVpbGREYXRl''@;'; put 'put ''PSIyMi8wNi8yMDIzIDEyOjUxOjA4IixqZC52ZXJzaW9uPSIxMy4wLjAiLGpkLmxhbmd1YWdlcz17ZGljdGlvbmFyeUtleXM6aixnZXRMYW5ndWFnZURpY3Rpb25hcnk6YmRlLGdldExhbmd1YWdlc0RpY3Rpb25hcmllczpmdW5jdGlvbiBGcnQoKXtyZXR1cm4gTHJ0KCl9LHJlZ2lzdGVyTGFu''@;'; put 'put ''Z3VhZ2VEaWN0aW9uYXJ5OnlkZSxnZXRUcmFuc2xhdGVkUGhyYXNlOl9kZX07Y29uc3QgX2E9amQsY3N0PVsiY29udGFpbmVyIl0sUSQ9bmV3IE1hcCxCaGU9IlRoZSBIYW5kc29udGFibGUgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBhbmQgY2Fubm90''@;'; put 'put ''IGJlIHVzZWQgcHJvcGVybHkuIjtsZXQgSTU9KCgpPT57Y2xhc3MgbHtnZXRJbnN0YW5jZShhKXtjb25zdCBmPVEkLmdldChhKTtyZXR1cm4gZi5pc0Rlc3Ryb3llZD8oY29uc29sZS53YXJuKEJoZSksbnVsbCk6Zn1yZWdpc3Rlckluc3RhbmNlKGEsZil7cmV0dXJuIFEkLnNldChhLGYpfXJl''@;'; put 'put ''bW92ZUluc3RhbmNlKGEpe3JldHVybiBRJC5kZWxldGUoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IGZzdD1PYmplY3Qua2V5cyhfYS5E''@;'; put 'put ''ZWZhdWx0U2V0dGluZ3MpLGpoZT1fYS5ob29rcy5nZXRSZWdpc3RlcmVkKCk7bGV0IHpoZT0oKCk9PntjbGFzcyBse21lcmdlU2V0dGluZ3MoYSl7Y29uc3QgZj0ic2V0dGluZ3MiaW4gYSYmIm9iamVjdCI9PXR5cGVvZiBhLnNldHRpbmdzLGQ9Zj9hLnNldHRpbmdzOnt9O3JldHVybiBqaGUu''@;'; put 'put ''Y29uY2F0KGZzdCkuZm9yRWFjaChtPT57Y29uc3QgXz1qaGUuaW5kZXhPZihtKT4tMTtsZXQgTztmJiZfJiYoTz1hLnNldHRpbmdzW21dKSx2b2lkIDAhPT1hW21dJiYoTz1hW21dKSx2b2lkIDAhPT1PJiYoZFttXT0ibmdab25lImluIGEmJiJmdW5jdGlvbiI9PXR5cGVvZiBPJiZfP2Z1bmN0''@;'; put 'put ''aW9uKC4uLlgpe3JldHVybiBhLm5nWm9uZS5ydW4oKCk9Pk8uYXBwbHkodGhpcyxYKSl9Ok8pfSksZH1wcmVwYXJlQ2hhbmdlcyhhKXtjb25zdCBmPXt9O3JldHVybiBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGg9PnthLmhhc093blByb3BlcnR5KGgpJiYoZltoXT1hW2hdLmN1cnJlbnRWYWx1''@;'; put 'put ''ZSl9KSxmfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxoTD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLl9ob3RUYWJsZVJlZ2lz''@;'; put 'put ''dGVyZXI9YSx0aGlzLl9ob3RTZXR0aW5nc1Jlc29sdmVyPWYsdGhpcy5uZ1pvbmU9ZCx0aGlzLl9faG90SW5zdGFuY2U9bnVsbCx0aGlzLmNvbHVtbnNDb21wb25lbnRzPVtdLHRoaXMuaG90SWQ9IiJ9Z2V0IGhvdEluc3RhbmNlKCl7cmV0dXJuIXRoaXMuX19ob3RJbnN0YW5jZXx8dGhpcy5f''@;'; put 'put ''X2hvdEluc3RhbmNlJiYhdGhpcy5fX2hvdEluc3RhbmNlLmlzRGVzdHJveWVkP3RoaXMuX19ob3RJbnN0YW5jZToodGhpcy5faG90VGFibGVSZWdpc3RlcmVyLnJlbW92ZUluc3RhbmNlKHRoaXMuaG90SWQpLGNvbnNvbGUud2FybihCaGUpLG51bGwpfXNldCBob3RJbnN0YW5jZShhKXt0aGlz''@;'; put 'put ''Ll9faG90SW5zdGFuY2U9YX1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCBhPXRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh0aGlzKTtpZih0aGlzLmNvbHVtbnNDb21wb25lbnRzLmxlbmd0aD4wKXtjb25zdCBmPVtdO3RoaXMuY29sdW1uc0NvbXBvbmVudHMuZm9yRWFj''@;'; put 'put ''aChkPT57Zi5wdXNoKHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyhkKSl9KSxhLmNvbHVtbnM9Zn10aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2U9bmV3IF9hLkNvcmUodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCxh''@;'; put 'put ''KSx0aGlzLmhvdElkJiZ0aGlzLl9ob3RUYWJsZVJlZ2lzdGVyZXIucmVnaXN0ZXJJbnN0YW5jZSh0aGlzLmhvdElkLHRoaXMuaG90SW5zdGFuY2UpLHRoaXMuaG90SW5zdGFuY2UuaW5pdCgpfSl9bmdPbkNoYW5nZXMoYSl7aWYobnVsbD09PXRoaXMuaG90SW5zdGFuY2UpcmV0dXJuO2NvbnN0''@;'; put 'put ''IGY9dGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5wcmVwYXJlQ2hhbmdlcyhhKTt0aGlzLnVwZGF0ZUhvdFRhYmxlKGYpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLmhvdEluc3RhbmNlJiZ0aGlzLmhvdEluc3RhbmNlLmRlc3Ryb3koKX0p''@;'; put 'put ''LHRoaXMuaG90SWQmJnRoaXMuX2hvdFRhYmxlUmVnaXN0ZXJlci5yZW1vdmVJbnN0YW5jZSh0aGlzLmhvdElkKX11cGRhdGVIb3RUYWJsZShhKXt0aGlzLmhvdEluc3RhbmNlJiZ0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGlu''@;'; put 'put ''Z3MoYSwhMSl9KX1vbkFmdGVyQ29sdW1uc0NoYW5nZSgpe2lmKHZvaWQgMCE9PXRoaXMuY29sdW1uc0NvbXBvbmVudHMmJnRoaXMuY29sdW1uc0NvbXBvbmVudHMubGVuZ3RoPjApe2NvbnN0IGE9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5mb3JFYWNoKGQ9PnthLnB1c2godGhpcy5faG90''@;'; put 'put ''U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKGQpKX0pLHRoaXMudXBkYXRlSG90VGFibGUoe2NvbHVtbnM6YX0pfX1vbkFmdGVyQ29sdW1uc051bWJlckNoYW5nZSgpe2NvbnN0IGE9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50cy5sZW5ndGg+MCYmdGhpcy5jb2x1bW5zQ29tcG9uZW50''@;'; put 'put ''cy5mb3JFYWNoKGY9PnthLnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKGYpKX0pLHRoaXMudXBkYXRlSG90VGFibGUoe2NvbHVtbnM6YX0pfWFkZENvbHVtbihhKXt0aGlzLmNvbHVtbnNDb21wb25lbnRzLnB1c2goYSksdGhpcy5vbkFmdGVyQ29sdW1uc051''@;'; put 'put ''bWJlckNoYW5nZSgpfXJlbW92ZUNvbHVtbihhKXtjb25zdCBmPXRoaXMuY29sdW1uc0NvbXBvbmVudHMuaW5kZXhPZihhKTt0aGlzLmNvbHVtbnNDb21wb25lbnRzLnNwbGljZShmLDEpLHRoaXMub25BZnRlckNvbHVtbnNOdW1iZXJDaGFuZ2UoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoSTUpLHJ0KHpoZSkscnQoVW8pKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siaG90LXRhYmxlIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oY3N0LDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYu''@;'; put 'put ''Y29udGFpbmVyPWQuZmlyc3QpfX0saW5wdXRzOntzZXR0aW5nczoic2V0dGluZ3MiLGhvdElkOiJob3RJZCIsYWN0aXZlSGVhZGVyQ2xhc3NOYW1lOiJhY3RpdmVIZWFkZXJDbGFzc05hbWUiLGFsbG93RW1wdHk6ImFsbG93RW1wdHkiLGFsbG93SHRtbDoiYWxsb3dIdG1sIixhbGxvd0luc2Vy''@;'; put 'put ''dENvbHVtbjoiYWxsb3dJbnNlcnRDb2x1bW4iLGFsbG93SW5zZXJ0Um93OiJhbGxvd0luc2VydFJvdyIsYWxsb3dJbnZhbGlkOiJhbGxvd0ludmFsaWQiLGFsbG93UmVtb3ZlQ29sdW1uOiJhbGxvd1JlbW92ZUNvbHVtbiIsYWxsb3dSZW1vdmVSb3c6ImFsbG93UmVtb3ZlUm93IixhdXRvQ29s''@;'; put 'put ''dW1uU2l6ZToiYXV0b0NvbHVtblNpemUiLGF1dG9Sb3dTaXplOiJhdXRvUm93U2l6ZSIsYXV0b1dyYXBDb2w6ImF1dG9XcmFwQ29sIixhdXRvV3JhcFJvdzoiYXV0b1dyYXBSb3ciLGJpbmRSb3dzV2l0aEhlYWRlcnM6ImJpbmRSb3dzV2l0aEhlYWRlcnMiLGNlbGw6ImNlbGwiLGNlbGxzOiJj''@;'; put 'put ''ZWxscyIsY2hlY2tlZFRlbXBsYXRlOiJjaGVja2VkVGVtcGxhdGUiLGNsYXNzTmFtZToiY2xhc3NOYW1lIixjb2xIZWFkZXJzOiJjb2xIZWFkZXJzIixjb2xsYXBzaWJsZUNvbHVtbnM6ImNvbGxhcHNpYmxlQ29sdW1ucyIsY29sdW1uSGVhZGVySGVpZ2h0OiJjb2x1bW5IZWFkZXJIZWlnaHQi''@;'; put 'put ''LGNvbHVtbnM6ImNvbHVtbnMiLGNvbHVtblNvcnRpbmc6ImNvbHVtblNvcnRpbmciLGNvbHVtblN1bW1hcnk6ImNvbHVtblN1bW1hcnkiLGNvbFdpZHRoczoiY29sV2lkdGhzIixjb21tZW50ZWRDZWxsQ2xhc3NOYW1lOiJjb21tZW50ZWRDZWxsQ2xhc3NOYW1lIixjb21tZW50czoiY29tbWVu''@;'; put 'put ''dHMiLGNvbnRleHRNZW51OiJjb250ZXh0TWVudSIsY29weWFibGU6ImNvcHlhYmxlIixjb3B5UGFzdGU6ImNvcHlQYXN0ZSIsY29ycmVjdEZvcm1hdDoiY29ycmVjdEZvcm1hdCIsY3VycmVudENvbENsYXNzTmFtZToiY3VycmVudENvbENsYXNzTmFtZSIsY3VycmVudEhlYWRlckNsYXNzTmFt''@;'; put 'put ''ZToiY3VycmVudEhlYWRlckNsYXNzTmFtZSIsY3VycmVudFJvd0NsYXNzTmFtZToiY3VycmVudFJvd0NsYXNzTmFtZSIsY3VzdG9tQm9yZGVyczoiY3VzdG9tQm9yZGVycyIsZGF0YToiZGF0YSIsZGF0YVNjaGVtYToiZGF0YVNjaGVtYSIsZGF0ZUZvcm1hdDoiZGF0ZUZvcm1hdCIsZGF0ZVBp''@;'; put 'put ''Y2tlckNvbmZpZzoiZGF0ZVBpY2tlckNvbmZpZyIsZGVmYXVsdERhdGU6ImRlZmF1bHREYXRlIixkaXNhYmxlVmlzdWFsU2VsZWN0aW9uOiJkaXNhYmxlVmlzdWFsU2VsZWN0aW9uIixkcmFnVG9TY3JvbGw6ImRyYWdUb1Njcm9sbCIsZHJvcGRvd25NZW51OiJkcm9wZG93bk1lbnUiLGVkaXRv''@;'; put 'put ''cjoiZWRpdG9yIixlbnRlckJlZ2luc0VkaXRpbmc6ImVudGVyQmVnaW5zRWRpdGluZyIsZW50ZXJNb3ZlczoiZW50ZXJNb3ZlcyIsZmlsbEhhbmRsZToiZmlsbEhhbmRsZSIsZmlsdGVyOiJmaWx0ZXIiLGZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6ImZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLGZp''@;'; put 'put ''bHRlcnM6ImZpbHRlcnMiLGZpeGVkQ29sdW1uc0xlZnQ6ImZpeGVkQ29sdW1uc0xlZnQiLGZpeGVkQ29sdW1uc1N0YXJ0OiJmaXhlZENvbHVtbnNTdGFydCIsZml4ZWRSb3dzQm90dG9tOiJmaXhlZFJvd3NCb3R0b20iLGZpeGVkUm93c1RvcDoiZml4ZWRSb3dzVG9wIixmb3JtdWxhczoiZm9y''@;'; put 'put ''bXVsYXMiLGZyYWdtZW50U2VsZWN0aW9uOiJmcmFnbWVudFNlbGVjdGlvbiIsaGVpZ2h0OiJoZWlnaHQiLGhpZGRlbkNvbHVtbnM6ImhpZGRlbkNvbHVtbnMiLGhpZGRlblJvd3M6ImhpZGRlblJvd3MiLGludmFsaWRDZWxsQ2xhc3NOYW1lOiJpbnZhbGlkQ2VsbENsYXNzTmFtZSIsbGFiZWw6''@;'; put 'put ''ImxhYmVsIixsYW5ndWFnZToibGFuZ3VhZ2UiLGxheW91dERpcmVjdGlvbjoibGF5b3V0RGlyZWN0aW9uIixsaWNlbnNlS2V5OiJsaWNlbnNlS2V5Iixsb2NhbGU6ImxvY2FsZSIsbWFudWFsQ29sdW1uRnJlZXplOiJtYW51YWxDb2x1bW5GcmVlemUiLG1hbnVhbENvbHVtbk1vdmU6Im1hbnVh''@;'; put 'put ''bENvbHVtbk1vdmUiLG1hbnVhbENvbHVtblJlc2l6ZToibWFudWFsQ29sdW1uUmVzaXplIixtYW51YWxSb3dNb3ZlOiJtYW51YWxSb3dNb3ZlIixtYW51YWxSb3dSZXNpemU6Im1hbnVhbFJvd1Jlc2l6ZSIsbWF4Q29sczoibWF4Q29scyIsbWF4Um93czoibWF4Um93cyIsbWVyZ2VDZWxsczoi''@;'; put 'put ''bWVyZ2VDZWxscyIsbWluQ29sczoibWluQ29scyIsbWluUm93czoibWluUm93cyIsbWluU3BhcmVDb2xzOiJtaW5TcGFyZUNvbHMiLG1pblNwYXJlUm93czoibWluU3BhcmVSb3dzIixtdWx0aUNvbHVtblNvcnRpbmc6Im11bHRpQ29sdW1uU29ydGluZyIsbmVzdGVkSGVhZGVyczoibmVzdGVk''@;'; put 'put ''SGVhZGVycyIsbmVzdGVkUm93czoibmVzdGVkUm93cyIsbm9Xb3JkV3JhcENsYXNzTmFtZToibm9Xb3JkV3JhcENsYXNzTmFtZSIsbnVtZXJpY0Zvcm1hdDoibnVtZXJpY0Zvcm1hdCIsb2JzZXJ2ZURPTVZpc2liaWxpdHk6Im9ic2VydmVET01WaXNpYmlsaXR5IixvdXRzaWRlQ2xpY2tEZXNl''@;'; put 'put ''bGVjdHM6Im91dHNpZGVDbGlja0Rlc2VsZWN0cyIscGVyc2lzdGVudFN0YXRlOiJwZXJzaXN0ZW50U3RhdGUiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIscGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lOiJwbGFjZWhvbGRlckNlbGxDbGFzc05hbWUiLHByZXZlbnRPdmVyZmxvdzoicHJldmVu''@;'; put 'put ''dE92ZXJmbG93IixwcmV2ZW50V2hlZWw6InByZXZlbnRXaGVlbCIscmVhZE9ubHk6InJlYWRPbmx5IixyZWFkT25seUNlbGxDbGFzc05hbWU6InJlYWRPbmx5Q2VsbENsYXNzTmFtZSIscmVuZGVyQWxsUm93czoicmVuZGVyQWxsUm93cyIscmVuZGVyZXI6InJlbmRlcmVyIixyb3dIZWFkZXJz''@;'; put 'put ''OiJyb3dIZWFkZXJzIixyb3dIZWFkZXJXaWR0aDoicm93SGVhZGVyV2lkdGgiLHJvd0hlaWdodHM6InJvd0hlaWdodHMiLHNlYXJjaDoic2VhcmNoIixzZWxlY3Rpb25Nb2RlOiJzZWxlY3Rpb25Nb2RlIixzZWxlY3RPcHRpb25zOiJzZWxlY3RPcHRpb25zIixza2lwQ29sdW1uT25QYXN0ZToi''@;'; put 'put ''c2tpcENvbHVtbk9uUGFzdGUiLHNraXBSb3dPblBhc3RlOiJza2lwUm93T25QYXN0ZSIsc29ydEJ5UmVsZXZhbmNlOiJzb3J0QnlSZWxldmFuY2UiLHNvdXJjZToic291cmNlIixzdGFydENvbHM6InN0YXJ0Q29scyIsc3RhcnRSb3dzOiJzdGFydFJvd3MiLHN0cmV0Y2hIOiJzdHJldGNoSCIs''@;'; put 'put ''c3RyaWN0OiJzdHJpY3QiLHRhYmxlQ2xhc3NOYW1lOiJ0YWJsZUNsYXNzTmFtZSIsdGFiTW92ZXM6InRhYk1vdmVzIix0aXRsZToidGl0bGUiLHRyaW1Ecm9wZG93bjoidHJpbURyb3Bkb3duIix0cmltUm93czoidHJpbVJvd3MiLHRyaW1XaGl0ZXNwYWNlOiJ0cmltV2hpdGVzcGFjZSIsdHlw''@;'; put 'put ''ZToidHlwZSIsdW5jaGVja2VkVGVtcGxhdGU6InVuY2hlY2tlZFRlbXBsYXRlIix1bmRvOiJ1bmRvIix2YWxpZGF0b3I6InZhbGlkYXRvciIsdmlld3BvcnRDb2x1bW5SZW5kZXJpbmdPZmZzZXQ6InZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0Iix2aWV3cG9ydFJvd1JlbmRlcmluZ09m''@;'; put 'put ''ZnNldDoidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLHZpc2libGVSb3dzOiJ2aXNpYmxlUm93cyIsd2lkdGg6IndpZHRoIix3b3JkV3JhcDoid29yZFdyYXAiLGFmdGVyQWRkQ2hpbGQ6ImFmdGVyQWRkQ2hpbGQiLGFmdGVyQXV0b2ZpbGw6ImFmdGVyQXV0b2ZpbGwiLGFmdGVyQmVnaW5F''@;'; put 'put ''ZGl0aW5nOiJhZnRlckJlZ2luRWRpdGluZyIsYWZ0ZXJDZWxsTWV0YVJlc2V0OiJhZnRlckNlbGxNZXRhUmVzZXQiLGFmdGVyQ2hhbmdlOiJhZnRlckNoYW5nZSIsYWZ0ZXJDaGFuZ2VzT2JzZXJ2ZWQ6ImFmdGVyQ2hhbmdlc09ic2VydmVkIixhZnRlckNvbHVtbkNvbGxhcHNlOiJhZnRlckNv''@;'; put 'put ''bHVtbkNvbGxhcHNlIixhZnRlckNvbHVtbkV4cGFuZDoiYWZ0ZXJDb2x1bW5FeHBhbmQiLGFmdGVyQ29sdW1uRnJlZXplOiJhZnRlckNvbHVtbkZyZWV6ZSIsYWZ0ZXJDb2x1bW5Nb3ZlOiJhZnRlckNvbHVtbk1vdmUiLGFmdGVyQ29sdW1uUmVzaXplOiJhZnRlckNvbHVtblJlc2l6ZSIsYWZ0''@;'; put 'put ''ZXJDb2x1bW5TZXF1ZW5jZUNoYW5nZToiYWZ0ZXJDb2x1bW5TZXF1ZW5jZUNoYW5nZSIsYWZ0ZXJDb2x1bW5Tb3J0OiJhZnRlckNvbHVtblNvcnQiLGFmdGVyQ29sdW1uVW5mcmVlemU6ImFmdGVyQ29sdW1uVW5mcmVlemUiLGFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9uczoiYWZ0ZXJD''@;'; put 'put ''b250ZXh0TWVudURlZmF1bHRPcHRpb25zIixhZnRlckNvbnRleHRNZW51SGlkZToiYWZ0ZXJDb250ZXh0TWVudUhpZGUiLGFmdGVyQ29udGV4dE1lbnVTaG93OiJhZnRlckNvbnRleHRNZW51U2hvdyIsYWZ0ZXJDb3B5OiJhZnRlckNvcHkiLGFmdGVyQ29weUxpbWl0OiJhZnRlckNvcHlMaW1p''@;'; put 'put ''dCIsYWZ0ZXJDcmVhdGVDb2w6ImFmdGVyQ3JlYXRlQ29sIixhZnRlckNyZWF0ZVJvdzoiYWZ0ZXJDcmVhdGVSb3ciLGFmdGVyQ3V0OiJhZnRlckN1dCIsYWZ0ZXJEZXNlbGVjdDoiYWZ0ZXJEZXNlbGVjdCIsYWZ0ZXJEZXN0cm95OiJhZnRlckRlc3Ryb3kiLGFmdGVyRGV0YWNoQ2hpbGQ6ImFm''@;'; put 'put ''dGVyRGV0YWNoQ2hpbGQiLGFmdGVyRG9jdW1lbnRLZXlEb3duOiJhZnRlckRvY3VtZW50S2V5RG93biIsYWZ0ZXJEcmF3U2VsZWN0aW9uOiJhZnRlckRyYXdTZWxlY3Rpb24iLGFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnM6ImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMi''@;'; put 'put ''LGFmdGVyRHJvcGRvd25NZW51SGlkZToiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIixhZnRlckRyb3Bkb3duTWVudVNob3c6ImFmdGVyRHJvcGRvd25NZW51U2hvdyIsYWZ0ZXJGaWx0ZXI6ImFmdGVyRmlsdGVyIixhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlOiJhZnRlckZvcm11bGFzVmFsdWVz''@;'; put 'put ''VXBkYXRlIixhZnRlckdldENlbGxNZXRhOiJhZnRlckdldENlbGxNZXRhIixhZnRlckdldENvbEhlYWRlcjoiYWZ0ZXJHZXRDb2xIZWFkZXIiLGFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzOiJhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsYWZ0ZXJHZXRSb3dIZWFkZXI6ImFm''@;'; put 'put ''dGVyR2V0Um93SGVhZGVyIixhZnRlckdldFJvd0hlYWRlclJlbmRlcmVyczoiYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnMiLGFmdGVySGlkZUNvbHVtbnM6ImFmdGVySGlkZUNvbHVtbnMiLGFmdGVySGlkZVJvd3M6ImFmdGVySGlkZVJvd3MiLGFmdGVySW5pdDoiYWZ0ZXJJbml0IixhZnRl''@;'; put 'put ''ckxhbmd1YWdlQ2hhbmdlOiJhZnRlckxhbmd1YWdlQ2hhbmdlIixhZnRlckxpc3RlbjoiYWZ0ZXJMaXN0ZW4iLGFmdGVyTG9hZERhdGE6ImFmdGVyTG9hZERhdGEiLGFmdGVyTWVyZ2VDZWxsczoiYWZ0ZXJNZXJnZUNlbGxzIixhZnRlck1vZGlmeVRyYW5zZm9ybUVuZDoiYWZ0ZXJNb2RpZnlU''@;'; put 'put ''cmFuc2Zvcm1FbmQiLGFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQ6ImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGFmdGVyTW9tZW50dW1TY3JvbGw6ImFmdGVyTW9tZW50dW1TY3JvbGwiLGFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQ6ImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiLGFm''@;'; put 'put ''dGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZDoiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIixhZnRlck9uQ2VsbENvbnRleHRNZW51OiJhZnRlck9uQ2VsbENvbnRleHRNZW51IixhZnRlck9uQ2VsbENvcm5lckRibENsaWNrOiJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIixhZnRlck9u''@;'; put 'put ''Q2VsbENvcm5lck1vdXNlRG93bjoiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLGFmdGVyT25DZWxsTW91c2VEb3duOiJhZnRlck9uQ2VsbE1vdXNlRG93biIsYWZ0ZXJPbkNlbGxNb3VzZU91dDoiYWZ0ZXJPbkNlbGxNb3VzZU91dCIsYWZ0ZXJPbkNlbGxNb3VzZU92ZXI6ImFmdGVyT25D''@;'; put 'put ''ZWxsTW91c2VPdmVyIixhZnRlck9uQ2VsbE1vdXNlVXA6ImFmdGVyT25DZWxsTW91c2VVcCIsYWZ0ZXJQYXN0ZToiYWZ0ZXJQYXN0ZSIsYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQ6ImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIixhZnRlclJlZG86ImFmdGVyUmVkbyIsYWZ0ZXJSZWRvU3RhY2tD''@;'; put 'put ''aGFuZ2U6ImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixhZnRlclJlZnJlc2hEaW1lbnNpb25zOiJhZnRlclJlZnJlc2hEaW1lbnNpb25zIixhZnRlclJlbW92ZUNlbGxNZXRhOiJhZnRlclJlbW92ZUNlbGxNZXRhIixhZnRlclJlbW92ZUNvbDoiYWZ0ZXJSZW1vdmVDb2wiLGFmdGVyUmVtb3ZlUm93''@;'; put 'put ''OiJhZnRlclJlbW92ZVJvdyIsYWZ0ZXJSZW5kZXI6ImFmdGVyUmVuZGVyIixhZnRlclJlbmRlcmVyOiJhZnRlclJlbmRlcmVyIixhZnRlclJvd01vdmU6ImFmdGVyUm93TW92ZSIsYWZ0ZXJSb3dSZXNpemU6ImFmdGVyUm93UmVzaXplIixhZnRlclJvd1NlcXVlbmNlQ2hhbmdlOiJhZnRlclJv''@;'; put 'put ''d1NlcXVlbmNlQ2hhbmdlIixhZnRlclNjcm9sbEhvcml6b250YWxseToiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLGFmdGVyU2Nyb2xsVmVydGljYWxseToiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IixhZnRlclNlbGVjdGlvbjoiYWZ0ZXJTZWxlY3Rpb24iLGFmdGVyU2VsZWN0aW9uQnlQcm9w''@;'; put 'put ''OiJhZnRlclNlbGVjdGlvbkJ5UHJvcCIsYWZ0ZXJTZWxlY3Rpb25FbmQ6ImFmdGVyU2VsZWN0aW9uRW5kIixhZnRlclNlbGVjdGlvbkVuZEJ5UHJvcDoiYWZ0ZXJTZWxlY3Rpb25FbmRCeVByb3AiLGFmdGVyU2V0Q2VsbE1ldGE6ImFmdGVyU2V0Q2VsbE1ldGEiLGFmdGVyU2V0RGF0YUF0Q2Vs''@;'; put 'put ''bDoiYWZ0ZXJTZXREYXRhQXRDZWxsIixhZnRlclNldERhdGFBdFJvd1Byb3A6ImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsYWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsOiJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLGFmdGVyU2hlZXRBZGRlZDoiYWZ0ZXJTaGVldEFkZGVkIixhZnRlclNoZWV0''@;'; put 'put ''UmVuYW1lZDoiYWZ0ZXJTaGVldFJlbmFtZWQiLGFmdGVyU2hlZXRSZW1vdmVkOiJhZnRlclNoZWV0UmVtb3ZlZCIsYWZ0ZXJUcmltUm93OiJhZnRlclRyaW1Sb3ciLGFmdGVyVW5kbzoiYWZ0ZXJVbmRvIixhZnRlclVuZG9TdGFja0NoYW5nZToiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLGFmdGVy''@;'; put 'put ''VW5oaWRlQ29sdW1uczoiYWZ0ZXJVbmhpZGVDb2x1bW5zIixhZnRlclVuaGlkZVJvd3M6ImFmdGVyVW5oaWRlUm93cyIsYWZ0ZXJVbmxpc3RlbjoiYWZ0ZXJVbmxpc3RlbiIsYWZ0ZXJVbm1lcmdlQ2VsbHM6ImFmdGVyVW5tZXJnZUNlbGxzIixhZnRlclVudHJpbVJvdzoiYWZ0ZXJVbnRyaW1S''@;'; put 'put ''b3ciLGFmdGVyVXBkYXRlRGF0YToiYWZ0ZXJVcGRhdGVEYXRhIixhZnRlclVwZGF0ZVNldHRpbmdzOiJhZnRlclVwZGF0ZVNldHRpbmdzIixhZnRlclZhbGlkYXRlOiJhZnRlclZhbGlkYXRlIixhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOiJhZnRlclZpZXdwb3J0Q29s''@;'; put 'put ''dW1uQ2FsY3VsYXRvck92ZXJyaWRlIixhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlOiJhZnRlclZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIixhZnRlclZpZXdSZW5kZXI6ImFmdGVyVmlld1JlbmRlciIsYmVmb3JlQWRkQ2hpbGQ6ImJlZm9yZUFkZENoaWxkIixiZWZv''@;'; put 'put ''cmVBdXRvZmlsbDoiYmVmb3JlQXV0b2ZpbGwiLGJlZm9yZUNlbGxBbGlnbm1lbnQ6ImJlZm9yZUNlbGxBbGlnbm1lbnQiLGJlZm9yZUNoYW5nZToiYmVmb3JlQ2hhbmdlIixiZWZvcmVDaGFuZ2VSZW5kZXI6ImJlZm9yZUNoYW5nZVJlbmRlciIsYmVmb3JlQ29sdW1uQ29sbGFwc2U6ImJlZm9y''@;'; put 'put ''ZUNvbHVtbkNvbGxhcHNlIixiZWZvcmVDb2x1bW5FeHBhbmQ6ImJlZm9yZUNvbHVtbkV4cGFuZCIsYmVmb3JlQ29sdW1uRnJlZXplOiJiZWZvcmVDb2x1bW5GcmVlemUiLGJlZm9yZUNvbHVtbk1vdmU6ImJlZm9yZUNvbHVtbk1vdmUiLGJlZm9yZUNvbHVtblJlc2l6ZToiYmVmb3JlQ29sdW1u''@;'; put 'put ''UmVzaXplIixiZWZvcmVDb2x1bW5Tb3J0OiJiZWZvcmVDb2x1bW5Tb3J0IixiZWZvcmVDb2x1bW5VbmZyZWV6ZToiYmVmb3JlQ29sdW1uVW5mcmVlemUiLGJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXM6ImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLGJlZm9yZUNvbnRleHRNZW51U2hvdzoi''@;'; put 'put ''YmVmb3JlQ29udGV4dE1lbnVTaG93IixiZWZvcmVDb3B5OiJiZWZvcmVDb3B5IixiZWZvcmVDcmVhdGVDb2w6ImJlZm9yZUNyZWF0ZUNvbCIsYmVmb3JlQ3JlYXRlUm93OiJiZWZvcmVDcmVhdGVSb3ciLGJlZm9yZUN1dDoiYmVmb3JlQ3V0IixiZWZvcmVEZXRhY2hDaGlsZDoiYmVmb3JlRGV0''@;'; put 'put ''YWNoQ2hpbGQiLGJlZm9yZURyYXdCb3JkZXJzOiJiZWZvcmVEcmF3Qm9yZGVycyIsYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXM6ImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixiZWZvcmVEcm9wZG93bk1lbnVTaG93OiJiZWZvcmVEcm9wZG93bk1lbnVTaG93IixiZWZvcmVGaWx0ZXI6''@;'; put 'put ''ImJlZm9yZUZpbHRlciIsYmVmb3JlR2V0Q2VsbE1ldGE6ImJlZm9yZUdldENlbGxNZXRhIixiZWZvcmVIaWRlQ29sdW1uczoiYmVmb3JlSGlkZUNvbHVtbnMiLGJlZm9yZUhpZGVSb3dzOiJiZWZvcmVIaWRlUm93cyIsYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyOiJiZWZvcmVIaWdo''@;'; put 'put ''bGlnaHRpbmdDb2x1bW5IZWFkZXIiLGJlZm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlcjoiYmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyIixiZWZvcmVJbml0OiJiZWZvcmVJbml0IixiZWZvcmVJbml0V2Fsa29udGFibGU6ImJlZm9yZUluaXRXYWxrb250YWJsZSIsYmVmb3JlS2V5RG93bjoi''@;'; put 'put ''YmVmb3JlS2V5RG93biIsYmVmb3JlTGFuZ3VhZ2VDaGFuZ2U6ImJlZm9yZUxhbmd1YWdlQ2hhbmdlIixiZWZvcmVMb2FkRGF0YToiYmVmb3JlTG9hZERhdGEiLGJlZm9yZU1lcmdlQ2VsbHM6ImJlZm9yZU1lcmdlQ2VsbHMiLGJlZm9yZU9uQ2VsbENvbnRleHRNZW51OiJiZWZvcmVPbkNlbGxD''@;'; put 'put ''b250ZXh0TWVudSIsYmVmb3JlT25DZWxsTW91c2VEb3duOiJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGJlZm9yZU9uQ2VsbE1vdXNlT3V0OiJiZWZvcmVPbkNlbGxNb3VzZU91dCIsYmVmb3JlT25DZWxsTW91c2VPdmVyOiJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGJlZm9yZU9uQ2VsbE1vdXNl''@;'; put 'put ''VXA6ImJlZm9yZU9uQ2VsbE1vdXNlVXAiLGJlZm9yZVBhc3RlOiJiZWZvcmVQYXN0ZSIsYmVmb3JlUmVkbzoiYmVmb3JlUmVkbyIsYmVmb3JlUmVkb1N0YWNrQ2hhbmdlOiJiZWZvcmVSZWRvU3RhY2tDaGFuZ2UiLGJlZm9yZVJlZnJlc2hEaW1lbnNpb25zOiJiZWZvcmVSZWZyZXNoRGltZW5z''@;'; put 'put ''aW9ucyIsYmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXM6ImJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIixiZWZvcmVSZW1vdmVDZWxsTWV0YToiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLGJlZm9yZVJlbW92ZUNvbDoiYmVmb3JlUmVtb3ZlQ29sIixiZWZvcmVSZW1vdmVSb3c6ImJlZm9yZVJl''@;'; put 'put ''bW92ZVJvdyIsYmVmb3JlUmVuZGVyOiJiZWZvcmVSZW5kZXIiLGJlZm9yZVJlbmRlcmVyOiJiZWZvcmVSZW5kZXJlciIsYmVmb3JlUm93TW92ZToiYmVmb3JlUm93TW92ZSIsYmVmb3JlUm93UmVzaXplOiJiZWZvcmVSb3dSZXNpemUiLGJlZm9yZVNldENlbGxNZXRhOiJiZWZvcmVTZXRDZWxs''@;'; put 'put ''TWV0YSIsYmVmb3JlU2V0UmFuZ2VFbmQ6ImJlZm9yZVNldFJhbmdlRW5kIixiZWZvcmVTZXRSYW5nZVN0YXJ0OiJiZWZvcmVTZXRSYW5nZVN0YXJ0IixiZWZvcmVTZXRSYW5nZVN0YXJ0T25seToiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLGJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aDoi''@;'; put 'put ''YmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixiZWZvcmVUb3VjaFNjcm9sbDoiYmVmb3JlVG91Y2hTY3JvbGwiLGJlZm9yZVRyaW1Sb3c6ImJlZm9yZVRyaW1Sb3ciLGJlZm9yZVVuZG86ImJlZm9yZVVuZG8iLGJlZm9yZVVuZG9TdGFja0NoYW5nZToiYmVmb3JlVW5kb1N0YWNrQ2hhbmdl''@;'; put 'put ''IixiZWZvcmVVbmhpZGVDb2x1bW5zOiJiZWZvcmVVbmhpZGVDb2x1bW5zIixiZWZvcmVVbmhpZGVSb3dzOiJiZWZvcmVVbmhpZGVSb3dzIixiZWZvcmVVbm1lcmdlQ2VsbHM6ImJlZm9yZVVubWVyZ2VDZWxscyIsYmVmb3JlVW50cmltUm93OiJiZWZvcmVVbnRyaW1Sb3ciLGJlZm9yZVVwZGF0''@;'; put 'put ''ZURhdGE6ImJlZm9yZVVwZGF0ZURhdGEiLGJlZm9yZVZhbGlkYXRlOiJiZWZvcmVWYWxpZGF0ZSIsYmVmb3JlVmFsdWVSZW5kZXI6ImJlZm9yZVZhbHVlUmVuZGVyIixiZWZvcmVWaWV3UmVuZGVyOiJiZWZvcmVWaWV3UmVuZGVyIixjb25zdHJ1Y3Q6ImNvbnN0cnVjdCIsaW5pdDoiaW5pdCIs''@;'; put 'put ''bW9kaWZ5QXV0b0NvbHVtblNpemVTZWVkOiJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiLG1vZGlmeUF1dG9maWxsUmFuZ2U6Im1vZGlmeUF1dG9maWxsUmFuZ2UiLG1vZGlmeUNvbEhlYWRlcjoibW9kaWZ5Q29sSGVhZGVyIixtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQ6Im1vZGlmeUNvbHVt''@;'; put 'put ''bkhlYWRlckhlaWdodCIsbW9kaWZ5Q29sdW1uSGVhZGVyVmFsdWU6Im1vZGlmeUNvbHVtbkhlYWRlclZhbHVlIixtb2RpZnlDb2xXaWR0aDoibW9kaWZ5Q29sV2lkdGgiLG1vZGlmeUNvcHlhYmxlUmFuZ2U6Im1vZGlmeUNvcHlhYmxlUmFuZ2UiLG1vZGlmeURhdGE6Im1vZGlmeURhdGEiLG1v''@;'; put 'put ''ZGlmeUdldENlbGxDb29yZHM6Im1vZGlmeUdldENlbGxDb29yZHMiLG1vZGlmeVJvd0RhdGE6Im1vZGlmeVJvd0RhdGEiLG1vZGlmeVJvd0hlYWRlcjoibW9kaWZ5Um93SGVhZGVyIixtb2RpZnlSb3dIZWFkZXJXaWR0aDoibW9kaWZ5Um93SGVhZGVyV2lkdGgiLG1vZGlmeVJvd0hlaWdodDoi''@;'; put 'put ''bW9kaWZ5Um93SGVpZ2h0Iixtb2RpZnlTb3VyY2VEYXRhOiJtb2RpZnlTb3VyY2VEYXRhIixtb2RpZnlUcmFuc2Zvcm1FbmQ6Im1vZGlmeVRyYW5zZm9ybUVuZCIsbW9kaWZ5VHJhbnNmb3JtU3RhcnQ6Im1vZGlmeVRyYW5zZm9ybVN0YXJ0IixwZXJzaXN0ZW50U3RhdGVMb2FkOiJwZXJzaXN0''@;'; put 'put ''ZW50U3RhdGVMb2FkIixwZXJzaXN0ZW50U3RhdGVSZXNldDoicGVyc2lzdGVudFN0YXRlUmVzZXQiLHBlcnNpc3RlbnRTdGF0ZVNhdmU6InBlcnNpc3RlbnRTdGF0ZVNhdmUifSxmZWF0dXJlczpbcmkoW0k1LHpoZV0pLGJsXSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1szLCJpZCJdLFsiY29u''@;'; put 'put ''dGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiZ0bigwLCJkaXYiLDAsMSksMiZhJiZSZSgiaWQiLGYuaG90SWQpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxwTD0oKCk9PntjbGFzcyBse3N0YXRpYyBmb3JSb290KCl7cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJz''@;'; put 'put ''OltJNV19fX1yZXR1cm4gbC52ZXJzaW9uPSIxMy4wLjAiLGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7fSksbH0pKCk7ZnVuY3Rpb24gZHN0KGwsYyl7MSZsJiYoeWUoMCwic3BhbiIsNiks''@;'; put 'put ''WWUoMSwiIExvYWRpbmcuLi4gIiksQ2UoKSl9ZnVuY3Rpb24gaHN0KGwsYyl7MSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyLCJMb2FkaW5nIHN1Ym1pdHRlZCB0YWJsZSIpLENlKCkoKSl9ZnVuY3Rpb24gcHN0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw0KSx0dCgxLGRzdCwyLDAs''@;'; put 'put ''InNwYW4iLDUpLHR0KDIsaHN0LDMsMCwiZGl2IiwzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgibmdJZiIsIWEubG9hZGVkKSxTZSgxKSxSZSgibmdJZiIsIWEubG9hZGVkKX19Y29uc3QgbXN0PWZ1bmN0aW9uKGwsYyl7cmV0dXJue3JlamVjdGVkOmwsYWNjZXB0ZWQ6Y319''@;'; put 'put ''O2Z1bmN0aW9uIGdzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIpKDEsImRpdiIsNykoMiwiZGl2Iiw4KSgzLCJoNCIsOSksWWUoNCwiU3RhZ2VkIERhdGEiKSxDZSgpKCkoKSx5ZSg1LCJkaXYiLDEwKSg2LCJkaXYiLDExKSg3LCJkaXYiLDEyKSg4LCJkaXYiLDgpLFll''@;'; put 'put ''KDksIkJhc2ljIFN1Ym1pdHRlZCBEZXRhaWxzIiksQ2UoKSgpLHllKDEwLCJkaXYiKSgxMSwic3BhbiIpLFllKDEyLCJUYWJsZSBJZDoiKSxDZSgpLHllKDEzLCJzdHJvbmciKSgxNCwic3BhbiIpLFllKDE1KSxDZSgpKCkoKSx5ZSgxNiwiZGl2IikoMTcsInNwYW4iKSxZZSgxOCwiQmFzZSBU''@;'; put 'put ''YWJsZToiKSxDZSgpLHllKDE5LCJhIiwxMyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnZpZXdlclRhYmxlU2NyZWVuKCkpfSksWWUoMjApLENlKCkoKSx5ZSgyMSwiZGl2IikoMjIsInNwYW4iKSxZZSgyMywiU3VibWl0IERhdGU6IiksQ2UoKSx5ZSgyNCwi''@;'; put 'put ''c3BhbiIsMTQpLFllKDI1KSxDZSgpKCkseWUoMjYsImRpdiIpKDI3LCJzcGFuIiksWWUoMjgsIlJldmlldyBTdGF0dXM6IiksQ2UoKSx5ZSgyOSwic3BhbiIsMTUpLFllKDMwKSxDZSgpKCkoKSx5ZSgzMSwiZGl2IiwxNikoMzIsImRpdiIsMTIpKDMzLCJkaXYiLDgpLFllKDM0LCJBY3Rpb25z''@;'; put 'put ''IiksQ2UoKSgpLHllKDM1LCJkaXYiLDE3KSgzNiwiZGl2IiwxOCkoMzcsImJ1dHRvbiIsMTkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS52aWV3ZXJUYWJsZVNjcmVlbigpKX0pLFllKDM4LCIgR28gdG8gYmFzZSB0YWJsZSBzY3JlZW4gIiksQ2UoKSx5ZSgz''@;'; put 'put ''OSwiYnV0dG9uIiwyMCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmFwcHJvdmVUYWJsZVNjcmVlbigpKX0pLFllKDQwLCIgR28gdG8gYXBwcm92YWxzIHNjcmVlbiAiKSxDZSgpLHllKDQxLCJidXR0b24iLDIxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFV0KGEpLFp0KEdlKCkuZ29CYWNrKCkpfSksWWUoNDIsIiBHbyBiYWNrIHRvIGVkaXRvciAiKSxDZSgpLHllKDQzLCJidXR0b24iLDIyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpO3JldHVybiBadChkLmRvd25sb2FkKG51bGw9PWQudGFibGVEZXRhaWxz''@;'; put 'put ''P251bGw6ZC50YWJsZURldGFpbHMuVEFCTEVfSUQpKX0pLHRuKDQ0LCJjbHItaWNvbiIsMjMpLENlKCkoKSgpKCkoKSx5ZSg0NSwiZGl2IiwyNCksdG4oNDYsImhvdC10YWJsZSIsMjUpLENlKCksdG4oNDcsImRpdiIsMjYpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7U2UoMTUpLHdyKCIg''@;'; put 'put ''IixudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlRBQkxFX0lELCIiKSxTZSg1KSx3cigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5CQVNFX1RBQkxFLCIgIiksU2UoNSksd3IoIiAiLG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6''@;'; put 'put ''YS50YWJsZURldGFpbHMuU1VCTUlUVEVEX09OX0RUVE0sIiAiKSxTZSg0KSxSZSgibmdDbGFzcyIsd2goMTMsbXN0LCJSRUpFQ1RFRCI9PT0obnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSwiQVBQUk9WRUQiPT09KG51bGw9PWEudGFi''@;'; put 'put ''bGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCkpKSxTZSgxKSx3cigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lELCIgIiksU2UoOSksUmUoImRpc2FibGVkIiwiQVBQUk9WRUQiPT09KG51bGw9''@;'; put 'put ''PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCl8fCJSRUpFQ1RFRCI9PT0obnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5SRVZJRVdfU1RBVFVTX0lEKSksU2UoNyksUmUoImRhdGEiLGEuaG90VGFibGUuZGF0YSkoImNv''@;'; put 'put ''bEhlYWRlcnMiLGEuaG90VGFibGUuY29sSGVhZGVycykoImNvbHVtbnMiLGEuaG90VGFibGUuY29sdW1ucykoIm1heFJvd3MiLGEuaG90VGFibGUubWF4Um93cykoImhlaWdodCIsYS5ob3RUYWJsZS5oZWlnaHQpKCJsaWNlbnNlS2V5IixhLmhvdFRhYmxlLmxpY2Vuc2VLZXkpKCJjZWxscyIs''@;'; put 'put ''YS5ob3RUYWJsZS5jZWxscyl9fWNvbnN0IHZzdD1be3BhdGg6Ijp0YWJsZUlkIixjb21wb25lbnQ6KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyl7dGhpcy5saWNlbmNlU2VydmljZT1hLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPWYsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlz''@;'; put 'put ''LnJvdXRlPWgsdGhpcy5yb3V0ZXI9bSx0aGlzLnNhc1NlcnZpY2U9Xyx0aGlzLmxvYWRlZD0hMSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6NTAw''@;'; put 'put ''LHNldHRpbmdzOnt9LGxpY2Vuc2VLZXk6dm9pZCAwLG1heFJvd3M6dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3RhZ2Vfcm93c19hbGxvd2VkfHwxLzB9fXN1Ym1pdHRlZFRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIit0aGlzLnRhYmxlX2lkKX1hcHBy''@;'; put 'put ''b3ZlVGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9hcHByb3ZlL2FwcHJvdmVEZXQvIit0aGlzLnRhYmxlX2lkKX12aWV3ZXJUYWJsZVNjcmVlbigpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YS8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFC''@;'; put 'put ''TEUpfWdvQmFjaygpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpfWRvd25sb2FkKGEpe2xldCBmPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGQ9Zi5zZXJ2ZXJVcmwsaD1mLmFwcExvYyxtPXRoaXMuc2Fz''@;'; put 'put ''U2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oZCttKyIvP19wcm9ncmFtPSIraCsiL3NlcnZpY2VzL2F1ZGl0b3JzL2dldGF1ZGl0ZmlsZSZ0YWJsZT0iK2EpfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7aWYoYS5saWNlbmNlU2Vydmlj''@;'; put 'put ''ZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGY9PnthLmhvdFRhYmxlLmxpY2Vuc2VLZXk9Zn0pLHR5cGVvZiBhLnJvdXRlci5zbmFwc2hvdC5wYXJhbXMudGFibGVJZDwidSIpe2EudGFibGVfaWQ9YS5yb3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ7dHJ5e2xldCBmPXlpZWxkIGEu''@;'; put 'put ''c2FzU3RvcmVTZXJ2aWNlLmdldENoYW5nZUluZm8oYS50YWJsZV9pZCk7aWYoIWZ8fCFmLmpzcGFyYW1zKXRocm93IG5ldyBFcnJvcigianNwYXJhbXMgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHJlc3BvbnNlLiIpO2EudGFibGVEZXRhaWxzPWYuanNwYXJhbXNbMF19Y2F0Y2goZil7bGV0''@;'; put 'put ''IGQ9e307Zi5NRVNTQUdFP2Q9ZjpkLk1FU1NBR0U9ZixhLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjaGFuZ2VpbmZvIixkKX10cnl7bGV0IGY9eWllbGQgYS5zYXNTdG9yZVNlcnZpY2Uub3BlblRhYmxlKGEudGFibGVfaWQpO2lmKCFmfHwhZi5zdGFnZXRh''@;'; put 'put ''YmxlKXRocm93IG5ldyBFcnJvcigiU3RhZ2V0YWJsZSBwcm9wZXJ0eSBpcyBtaXNzaW5nIGZyb20gcmVzcG9uc2UuIik7bGV0IGQ9Zi5zdGFnZXRhYmxlWzBdLGg9W10sbT1bXTtmb3IobGV0IE8gaW4gZClkJiZoLnB1c2goTyk7Zm9yKGxldCBPPTA7TzxoLmxlbmd0aDtPKyspbS5wdXNoKHtk''@;'; put 'put ''YXRhOmhbT119KTtsZXQgXz1mdW5jdGlvbigpe3JldHVybntyZWFkT25seTohMH19O2EuaG90VGFibGUuZGF0YT1mLnN0YWdldGFibGUsYS5ob3RUYWJsZS5jb2xIZWFkZXJzPWgsYS5ob3RUYWJsZS5jb2x1bW5zPW0sYS5ob3RUYWJsZS5jZWxscz1fLGEubG9hZGVkPSEwLGEuc2V0Rm9jdXMo''@;'; put 'put ''KX1jYXRjaChmKXtsZXQgZD17fTtmLk1FU1NBR0V8fChkLk1FU1NBR0U9ZiksYS5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhdWRpdG9ycy9nZXRzdGFnZXRhYmxlIixkKSxhLmxvYWRlZD0hMX19fSkoKX1zZXRGb2N1cygpe3NldFRpbWVvdXQoKCk9PntsZXQgYT13aW5kb3cu''@;'; put 'put ''ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsLWJ0biIpO2EmJmEuZm9jdXMoKX0sMjAwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoYjEpLHJ0KExkKSxydChScykscnQoTGEpLHJ0KHR1KSxydChwbCkpfSxsLlx1MDI3NWNtcD1r''@;'; put 'put ''cih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtc3RhZ2UiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjbHItY29sLW1kLTEyIiwiY2FyZCJdLFsiY2xhc3MiLCJoLTgwdmggZC1mbGV4IGp1''@;'; put 'put ''c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiaC04MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIs''@;'; put 'put ''InNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsibmctaWYiLCJsb2FkZWQiLDEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtdGl0bGUiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtdC0wIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLXJvdyJdLFsxLCJjYXJkLWJsb2NrIiwiY2xyLWNv''@;'; put 'put ''bC1tZC02Il0sWzEsImNhcmQtaGVhZGVyIiwicHktNSJdLFsxLCJiYXNlVGFibGVMaW5rIiwzLCJjbGljayJdLFsxLCJtdC0xMCJdLFsxLCJtdC0xMCIsMywibmdDbGFzcyJdLFsxLCJjbHItY29sLW1kLTYiLCJjYXJkLWJsb2NrIl0sWzEsIm10LTIwIl0sWzEsInJvdyJdLFsxLCJidG4iLCJi''@;'; put 'put ''dG4tc20iLCJidG4tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImNsaWNrIl0sWyJpZCIsImFwcHJvdmFsLWJ0biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwiYnRu''@;'; put 'put ''IiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtMjAiLDMsImNsaWNrIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwidGV4dC1jZW50ZXIiLCJtdC0yMCIsIm1pbi13LTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImRvd25sb2FkIl0sWzEsImNh''@;'; put 'put ''cmQtYmxvY2siXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIsImhvdFRhYmxlIiwic3RyZXRjaEgiLCJhbGwiLDMsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsIm1heFJvd3MiLCJoZWlnaHQiLCJsaWNlbnNlS2V5IiwiY2VsbHMiXSxbMSwiY2FyZC1mb290ZXIiLCJkLWZsZXgi''@;'; put 'put ''LCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiwwKSgxLCJkaXYiLDEpLHR0KDIscHN0LDMsMiwiZGl2IiwyKSx0dCgzLGdzdCw0OCwxNiwiZGl2IiwzKSxDZSgpKCkpLDImYSYmKFNlKDIpLFJlKCJuZ0lmIiwhZi5sb2Fk''@;'; put 'put ''ZWQpLFNlKDEpLFJlKCJuZ0lmIixmLmxvYWRlZCkpfSxkZXBlbmRlbmNpZXM6W3l1LCRpLFJsLGhMXSxzdHlsZXM6WyIucmVqZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmODMxMjY7Zm9udC13ZWlnaHQ6NzAwfS5hY2NlcHRlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzNm''@;'; put 'put ''YzQyNDtmb250LXdlaWdodDo3MDB9LmJhc2VUYWJsZUxpbmtbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi10b3A6MTBweDtjb2xvcjojMDA3Y2JifSJdfSksbH0pKCl9XTtsZXQgeXN0PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2JvLElkLG80LmZvckNoaWxkKHZzdCkscEwuZm9yUm9vdCgpXX0pLGx9KSgpO2Z1bmN0aW9uIE85KGwpe3JldHVybihPOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFVoZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsd3N0KGYua2V5KSxmKX19ZnVuY3Rpb24gd3N0KGwpe3ZhciBjPWZ1bmN0aW9uIENzdChsLGMpe2lmKCJvYmplY3QiIT09TzkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09TzkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4i''@;'; put 'put ''c3ltYm9sIj09PU85KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIHpkPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBTc3QobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBl''@;'; put 'put ''Lmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPVIxKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVl''@;'; put 'put ''fX0semQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGVLKGwsYyl7cmV0dXJuKGVLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gUjEobCl7''@;'; put 'put ''cmV0dXJuKFIxPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIFpoZT0iaGFuZHNvbnRhYmxlRWRpdG9yIix0Sz1mdW5jdGlvbihs''@;'; put 'put ''KXshZnVuY3Rpb24gTXN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3Rv''@;'; put 'put ''dHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmVLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24ga3N0KGwpe3ZhciBjPWZ1bmN0aW9uIEFz''@;'; put 'put ''dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0''@;'; put 'put ''LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPVIxKGwpO2lmKGMpe3ZhciBoPVIxKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBk''@;'; put 'put ''PWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBFc3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1POShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5''@;'; put 'put ''IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24geHN0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4g''@;'; put 'put ''bH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIGJzdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfXJldHVybiBmdW5jdGlvbiBfc3QobCxjLGEpe2MmJlVoZShsLnByb3RvdHlwZSxjKSxhJiZVaGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt6ZChSMShhLnByb3RvdHlw''@;'; put 'put ''ZSksIm9wZW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5kZXN0cm95KCksIm5vbmUiPT09dGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5JiYodGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSIiKSx0aGlzLmh0RWRpdG9yPW5ldyB0aGlz''@;'; put 'put ''LmhvdC5jb25zdHJ1Y3Rvcih0aGlzLmh0Q29udGFpbmVyLHRoaXMuaHRPcHRpb25zKSx0aGlzLmh0RWRpdG9yLmluaXQoKSx0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5jZWxsUHJvcGVydGllcy5zdHJpY3Q/dGhpcy5odEVkaXRvci5zZWxlY3RDZWxs''@;'; put 'put ''KDAsMCk6dGhpcy5odEVkaXRvci5kZXNlbGVjdENlbGwoKSxXUyh0aGlzLlRFWFRBUkVBLDAsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgpLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaHRFZGl0b3ImJih0aGlzLmh0RWRp''@;'; put 'put ''dG9yLnJvb3RFbGVtZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSx6ZChSMShhLnByb3RvdHlwZSksImNsb3NlIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyxPLFgp''@;'; put 'put ''e3pkKFIxKGEucHJvdG90eXBlKSwicHJlcGFyZSIsdGhpcykuY2FsbCh0aGlzLGQsaCxtLF8sTyxYKTt2YXIgYWU9dGhpcyxwZT17c3RhcnRSb3dzOjAsc3RhcnRDb2xzOjAsbWluUm93czowLG1pbkNvbHM6MCxjbGFzc05hbWU6Imxpc3Rib3giLGNvcHlQYXN0ZTohMSxhdXRvQ29sdW1uU2l6''@;'; put 'put ''ZTohMSxhdXRvUm93U2l6ZTohMSxyZWFkT25seTohMCxmaWxsSGFuZGxlOiExLGF1dG9XcmFwQ29sOiExLGF1dG9XcmFwUm93OiExLGFmdGVyT25DZWxsTW91c2VEb3duOmZ1bmN0aW9uKHhlLFZlKXt2YXIgWmU9dGhpcy5nZXRTb3VyY2VEYXRhKFZlLnJvdyxWZS5jb2wpO3ZvaWQgMCE9PVpl''@;'; put 'put ''JiZhZS5zZXRWYWx1ZShaZSksYWUuaW5zdGFuY2UuZGVzdHJveUVkaXRvcigpfSxwcmV2ZW50V2hlZWw6ITAsbGF5b3V0RGlyZWN0aW9uOnRoaXMuaG90LmlzUnRsKCk/InJ0bCI6Imx0ciJ9O3RoaXMuY2VsbFByb3BlcnRpZXMuaGFuZHNvbnRhYmxlJiZydShwZSxYLmhhbmRzb250YWJsZSks''@;'; put 'put ''dGhpcy5odE9wdGlvbnM9cGV9fSx7a2V5OiJiZWdpbkVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vbkJlZ2luRWRpdGluZzttJiYhMT09PW0oKXx8emQoUjEoYS5wcm90b3R5cGUpLCJiZWdpbkVkaXRpbmciLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyxkLGgpfX0se2tleToiY3JlYXRlRWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7emQoUjEoYS5wcm90b3R5cGUpLCJjcmVhdGVFbGVtZW50cyIsdGhpcykuY2FsbCh0aGlzKTt2YXIgZD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7ZC5jbGFzc05hbWU9Imhh''@;'; put 'put ''bmRzb250YWJsZUVkaXRvciIsdGhpcy5URVhUQVJFQV9QQVJFTlQuYXBwZW5kQ2hpbGQoZCksdGhpcy5odENvbnRhaW5lcj1kLHRoaXMuYXNzaWduSG9va3MoKX19LHtrZXk6ImZpbmlzaEVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXtpZih0aGlzLmh0RWRpdG9yJiZ0aGlzLmh0RWRp''@;'; put 'put ''dG9yLmlzTGlzdGVuaW5nKCkmJnRoaXMuaG90Lmxpc3RlbigpLHRoaXMuaHRFZGl0b3ImJnRoaXMuaHRFZGl0b3IuZ2V0U2VsZWN0ZWRMYXN0KCkpe3ZhciBfPXRoaXMuaHRFZGl0b3IuZ2V0SW5zdGFuY2UoKS5nZXRWYWx1ZSgpO3ZvaWQgMCE9PV8mJnRoaXMuc2V0VmFsdWUoXyl9emQoUjEo''@;'; put 'put ''YS5wcm90b3R5cGUpLCJmaW5pc2hFZGl0aW5nIix0aGlzKS5jYWxsKHRoaXMsZCxoLG0pfX0se2tleToiYXNzaWduSG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmhvdC5hZGRIb29rKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7ZC5odEVkaXRvciYmZC5odEVkaXRv''@;'; put 'put ''ci5kZXN0cm95KCl9KX19LHtrZXk6InJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsbT10aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKTt6ZChSMShhLnByb3RvdHlwZSksInJlZ2lzdGVyU2hvcnRjdXRzIix0aGlz''@;'; put 'put ''KS5jYWxsKHRoaXMpO3ZhciBPPWZ1bmN0aW9uKGFlLHBlKXt2YXIgYmU9ZC5odEVkaXRvci5nZXRJbnN0YW5jZSgpO2lmKHZvaWQgMCE9PWFlJiYoYWU8MHx8YmUuZmxpcHBlZCYmYWU+YmUuY291bnRSb3dzKCktMT9iZS5kZXNlbGVjdENlbGwoKTpiZS5zZWxlY3RDZWxsKGFlLDApLGJlLmdl''@;'; put 'put ''dERhdGEoKS5sZW5ndGgpKXJldHVybiBwZS5wcmV2ZW50RGVmYXVsdCgpLEhkKHBlKSxkLmhvdC5saXN0ZW4oKSxkLlRFWFRBUkVBLmZvY3VzKCksITF9O20uYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKGFlKXt2YXIgYmUseGUscGU9ZC5odEVk''@;'; put 'put ''aXRvci5nZXRJbnN0YW5jZSgpO3JldHVybiFwZS5nZXRTZWxlY3RlZExhc3QoKSYmcGUuZmxpcHBlZD9iZT1wZS5jb3VudFJvd3MoKS0xOnBlLmdldFNlbGVjdGVkTGFzdCgpJiYocGUuZmxpcHBlZD8oeGU9cGUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0sYmU9TWF0aC5tYXgoMCx4ZS0xKSk6YmU9''@;'; put 'put ''KHhlPXBlLmdldFNlbGVjdGVkTGFzdCgpWzBdKS0xKSxPKGJlLGFlKX0scHJldmVudERlZmF1bHQ6ITF9LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbihhZSl7dmFyIGJlLHhlLHBlPWQuaHRFZGl0b3IuZ2V0SW5zdGFuY2UoKTtpZihwZS5nZXRTZWxlY3RlZExhc3Qo''@;'; put 'put ''KXx8cGUuZmxpcHBlZCl7aWYocGUuZ2V0U2VsZWN0ZWRMYXN0KCkpaWYocGUuZmxpcHBlZCliZT1wZS5nZXRTZWxlY3RlZExhc3QoKVswXSsxO2Vsc2UgaWYoIXBlLmZsaXBwZWQpe3ZhciBWZT1wZS5jb3VudFJvd3MoKS0xO3hlPXBlLmdldFNlbGVjdGVkTGFzdCgpWzBdLGJlPU1hdGgubWlu''@;'; put 'put ''KFZlLHhlKzEpfX1lbHNlIGJlPTA7cmV0dXJuIE8oYmUsYWUpfSxwcmV2ZW50RGVmYXVsdDohMX1dLHtncm91cDpaaGUscmVsYXRpdmVUb0dyb3VwOm5SLHBvc2l0aW9uOiJiZWZvcmUifSl9fSx7a2V5OiJ1bnJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3pkKFIxKGEucHJv''@;'; put 'put ''dG90eXBlKSwidW5yZWdpc3RlclNob3J0Y3V0cyIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKFpoZSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4iaGFuZHNvbnRhYmxlIn19XSksYX0oRDUpO2Z1bmN0aW9uIEQ5KGwpe3JldHVybihEOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBj''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFloZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJs''@;'; put 'put ''ZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsV2hlKGYua2V5KSxmKX19ZnVuY3Rpb24gUjUoKXtyZXR1cm4gUjU9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZs''@;'; put 'put ''ZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIElzdChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9bTMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxSNS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbksobCxjKXtyZXR1cm4obks9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBySyhsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl''@;'; put 'put ''ZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gbTMobCl7cmV0dXJuKG0zPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rp''@;'; put 'put ''b24gV2hlKGwpe3ZhciBjPWZ1bmN0aW9uIE5zdChsLGMpe2lmKCJvYmplY3QiIT09RDkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09RDkoZikp''@;'; put 'put ''cmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUQ5KGMpP2M6U3RyaW5nKGMpfXZh''@;'; put 'put ''ciBpSz1uZXcgV2Vha01hcCxvSz1mdW5jdGlvbihsKXshZnVuY3Rpb24gUnN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90''@;'; put 'put ''b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJm5LKGwsYyl9KGEsbCk7dmFyIGM9ZnVu''@;'; put 'put ''Y3Rpb24gTHN0KGwpe3ZhciBjPWZ1bmN0aW9uIEZzdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4u''@;'; put 'put ''cHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPW0zKGwpO2lmKGMpe3ZhciBoPW0zKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5j''@;'; put 'put ''b25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBQc3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1EOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gcksobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBPc3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxmdW5jdGlvbiBIc3QobCxjLGEpeyhjPVdoZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFi''@;'; put 'put ''bGU6ITB9KTpsW2NdPWF9KHJLKGQ9Yy5jYWxsKHRoaXMsZikpLCJzb3J0QnlSZWxldmFuY2UiLGZ1bmN0aW9uKGgsbSxfKXt2YXIgeGUsVmUsWmUsTz1bXSxYPVtdLGFlPWgubGVuZ3RoLHBlPW0ubGVuZ3RoO2lmKDA9PT1hZSl7Zm9yKFZlPTA7VmU8cGU7VmUrKylYLnB1c2goVmUpO3JldHVy''@;'; put 'put ''biBYfWZvcihWZT0wO1ZlPHBlO1ZlKyspe2lmKHhlPXlZKE1zKG1bVmVdKSksXylaZT14ZS5pbmRleE9mKGgpO2Vsc2V7dmFyIGx0PXRoaXMuY2VsbFByb3BlcnRpZXMubG9jYWxlO1plPXhlLnRvTG9jYWxlTG93ZXJDYXNlKGx0KS5pbmRleE9mKGgudG9Mb2NhbGVMb3dlckNhc2UobHQpKX0t''@;'; put 'put ''MSE9PVplJiZPLnB1c2goe2Jhc2VJbmRleDpWZSxpbmRleDpaZSxjaGFyc0xlZnQ6eGUubGVuZ3RoLVplLWFlLHZhbHVlOnhlfSl9Zm9yKE8uc29ydChmdW5jdGlvbihkdCxndCl7aWYoLTE9PT1ndC5pbmRleClyZXR1cm4tMTtpZigtMT09PWR0LmluZGV4KXJldHVybiAxO2lmKGR0LmluZGV4''@;'; put 'put ''PGd0LmluZGV4KXJldHVybi0xO2lmKGd0LmluZGV4PGR0LmluZGV4KXJldHVybiAxO2lmKGR0LmluZGV4PT09Z3QuaW5kZXgpe2lmKGR0LmNoYXJzTGVmdDxndC5jaGFyc0xlZnQpcmV0dXJuLTE7aWYoZHQuY2hhcnNMZWZ0Pmd0LmNoYXJzTGVmdClyZXR1cm4gMX1yZXR1cm4gMH0pLFZlPTAs''@;'; put 'put ''cGU9Ty5sZW5ndGg7VmU8cGU7VmUrKylYLnB1c2goT1tWZV0uYmFzZUluZGV4KTtyZXR1cm4gWH0pLGQucXVlcnk9bnVsbCxkLnN0cmlwcGVkQ2hvaWNlcz1bXSxkLnJhd0Nob2ljZXM9W10saUsuc2V0KHJLKGQpLHtza2lwT25lOiExLGlzTWFjT1M6ZC5ob3Qucm9vdFdpbmRvdy5uYXZpZ2F0''@;'; put 'put ''b3IucGxhdGZvcm0uaW5kZXhPZigiTWFjIik+LTF9KSxkfXJldHVybiBmdW5jdGlvbiBEc3QobCxjLGEpe2MmJlloZShsLnByb3RvdHlwZSxjKSxhJiZZaGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiZ2V0VmFsdWUi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMucmF3Q2hvaWNlcy5maW5kKGZ1bmN0aW9uKG0pe3JldHVybiBkLnN0cmlwVmFsdWVJZk5lZWRlZChtKT09PWQuVEVYVEFSRUEudmFsdWV9KTtyZXR1cm4gaW8oaCk/aDp0aGlzLlRFWFRBUkVBLnZhbHVlfX0se2tleToiY3JlYXRl''@;'; put 'put ''RWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7UjUobTMoYS5wcm90b3R5cGUpLCJjcmVhdGVFbGVtZW50cyIsdGhpcykuY2FsbCh0aGlzKSxnaSh0aGlzLmh0Q29udGFpbmVyLCJhdXRvY29tcGxldGVFZGl0b3IiKSxnaSh0aGlzLmh0Q29udGFpbmVyLC0xPT09dGhpcy5ob3Qucm9vdFdpbmRv''@;'; put 'put ''dy5uYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTWFjIik/IiI6Imh0TWFjU2Nyb2xsIil9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD1pSy5nZXQodGhpcyk7UjUobTMoYS5wcm90b3R5cGUpLCJvcGVuIix0aGlzKS5jYWxsKHRoaXMpO3ZhciBtPXRoaXMu''@;'; put 'put ''aHRFZGl0b3IuZ2V0SW5zdGFuY2UoKSxfPXZvaWQgMD09PXRoaXMuY2VsbFByb3BlcnRpZXMudHJpbURyb3Bkb3dufHx0aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1Ecm9wZG93bjt0aGlzLnNob3dFZGl0YWJsZUVsZW1lbnQoKSx0aGlzLmZvY3VzKCk7dmFyIE89TnUoKTswPT09TyYmaC5pc01h''@;'; put 'put ''Y09TJiYoTys9MTUpLHRoaXMuYWRkSG9vaygiYmVmb3JlS2V5RG93biIsZnVuY3Rpb24oWCl7cmV0dXJuIGQub25CZWZvcmVLZXlEb3duKFgpfSksbS51cGRhdGVTZXR0aW5ncyh7Y29sV2lkdGhzOl8/W1NsKHRoaXMuVEVYVEFSRUEpLTJdOnZvaWQgMCx3aWR0aDpfP1NsKHRoaXMuVEVYVEFS''@;'; put 'put ''RUEpK086dm9pZCAwLHJlbmRlcmVyOmZ1bmN0aW9uKGFlLHBlLGJlLHhlLFZlLFplLGx0KXtWNChhZSxwZSxiZSx4ZSxWZSxaZSxsdCk7dmFyIFFuLE9yLGR0PWQuY2VsbFByb3BlcnRpZXMsZ3Q9ZHQuZmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZSxqdD1kdC5hbGxvd0h0bWwscm49ZHQubG9jYWxl''@;'; put 'put ''LFh0PWQucXVlcnkseW49TXMoWmUpO3luJiYhanQmJi0xIT09KFFuPSEwPT09Z3Q/eW4uaW5kZXhPZihYdCk6eW4udG9Mb2NhbGVMb3dlckNhc2Uocm4pLmluZGV4T2YoWHQudG9Mb2NhbGVMb3dlckNhc2Uocm4pKSkmJihPcj15bi5zdWJzdHIoUW4sWHQubGVuZ3RoKSx5bj15bi5yZXBsYWNl''@;'; put 'put ''KE9yLCI8c3Ryb25nPiIuY29uY2F0KE9yLCI8L3N0cm9uZz4iKSkpLHBlLmlubmVySFRNTD15bn0sYXV0b0NvbHVtblNpemU6ITB9KSxoLnNraXBPbmUmJihoLnNraXBPbmU9ITEpLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoZnVuY3Rpb24oKXtkLnF1ZXJ5Q2hvaWNlcyhkLlRFWFRBUkVB''@;'; put 'put ''LnZhbHVlKX0pfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVIb29rc0J5S2V5KCJiZWZvcmVLZXlEb3duIiksUjUobTMoYS5wcm90b3R5cGUpLCJjbG9zZSIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2NhcmRFZGl0b3IiLHZhbHVlOmZ1bmN0aW9uKGQp''@;'; put 'put ''e1I1KG0zKGEucHJvdG90eXBlKSwiZGlzY2FyZEVkaXRvciIsdGhpcykuY2FsbCh0aGlzLGQpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9fSx7a2V5OiJxdWVyeUNob2ljZXMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT10aGlzLmNlbGxQcm9wZXJ0aWVzLnNvdXJjZTt0aGlzLnF1''@;'; put 'put ''ZXJ5PWQsImZ1bmN0aW9uIj09dHlwZW9mIG0/bS5jYWxsKHRoaXMuY2VsbFByb3BlcnRpZXMsZCxmdW5jdGlvbihfKXtoLnJhd0Nob2ljZXM9XyxoLnVwZGF0ZUNob2ljZXNMaXN0KGguc3RyaXBWYWx1ZXNJZk5lZWRlZChfKSl9KTpBcnJheS5pc0FycmF5KG0pPyh0aGlzLnJhd0Nob2ljZXM9''@;'; put 'put ''bSx0aGlzLnVwZGF0ZUNob2ljZXNMaXN0KHRoaXMuc3RyaXBWYWx1ZXNJZk5lZWRlZChtKSkpOnRoaXMudXBkYXRlQ2hvaWNlc0xpc3QoW10pfX0se2tleToidXBkYXRlQ2hvaWNlc0xpc3QiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWtZKHRoaXMuVEVYVEFSRUEpLG09eTBlKHRoaXMuVEVY''@;'; put 'put ''VEFSRUEpLF89dGhpcy5jZWxsUHJvcGVydGllcy5zb3J0QnlSZWxldmFuY2UsTz10aGlzLmNlbGxQcm9wZXJ0aWVzLmZpbHRlcixYPW51bGwsYWU9bnVsbCxwZT1kO18mJihYPXRoaXMuc29ydEJ5UmVsZXZhbmNlKHRoaXMuc3RyaXBWYWx1ZUlmTmVlZGVkKHRoaXMuZ2V0VmFsdWUoKSkscGUs''@;'; put 'put ''dGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXJpbmdDYXNlU2Vuc2l0aXZlKSk7dmFyIGJlPUFycmF5LmlzQXJyYXkoWCk/WC5sZW5ndGg6MDtpZighMT09PU8pYmUmJihhZT1YWzBdKTtlbHNle2Zvcih2YXIgeGU9W10sVmU9MCxaZT1wZS5sZW5ndGg7VmU8WmUmJiEoXyYmYmU8PVZlKTtWZSsr''@;'; put 'put ''KXhlLnB1c2goYmU/cGVbWFtWZV1dOnBlW1ZlXSk7YWU9MCxwZT14ZX10aGlzLnN0cmlwcGVkQ2hvaWNlcz1wZSx0aGlzLmh0RWRpdG9yLmxvYWREYXRhKEZTKFtwZV0pKSx0aGlzLnVwZGF0ZURyb3Bkb3duSGVpZ2h0KCksdGhpcy5mbGlwRHJvcGRvd25JZk5lZWRlZCgpLCEwPT09dGhpcy5j''@;'; put 'put ''ZWxsUHJvcGVydGllcy5zdHJpY3QmJnRoaXMuaGlnaGxpZ2h0QmVzdE1hdGNoaW5nQ2hvaWNlKGFlKSx0aGlzLmhvdC5saXN0ZW4oKSxXUyh0aGlzLlRFWFRBUkVBLGgsaD09PW0/dm9pZCAwOm0pfX0se2tleToiZmxpcERyb3Bkb3duSWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9''@;'; put 'put ''YjUodGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5UQUJMRSksaD1kPT09dGhpcy5ob3Qucm9vdFdpbmRvdyxtPXRoaXMuY2VsbFByb3BlcnRpZXMucHJldmVudE92ZXJmbG93O2lmKGh8fCFoJiYobXx8Imhvcml6b250YWwiPT09bSkpcmV0dXJuITE7dmFyIF89aXUodGhpcy5URVhUQVJFQSks''@;'; put 'put ''Tz1jcyh0aGlzLlRFWFRBUkVBKSxYPXRoaXMuZ2V0RHJvcGRvd25IZWlnaHQoKSxhZT1kLnNjcm9sbFRvcCxwZT1jcyh0aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRIRUFEKSxiZT1pdShkKSx4ZT1fLnRvcC1iZS50b3AtcGUrYWUsVmU9ZC5zY3JvbGxIZWlnaHQteGUtcGUtTyxaZT1YPlZl''@;'; put 'put ''JiZ4ZT5WZTtyZXR1cm4gWmU/dGhpcy5mbGlwRHJvcGRvd24oWCk6dGhpcy51bmZsaXBEcm9wZG93bigpLHRoaXMubGltaXREcm9wZG93bklmTmVlZGVkKFplP3hlOlZlLFgpLFplfX0se2tleToibGltaXREcm9wZG93bklmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbihkLGgpe2lmKGg+ZCl7dmFy''@;'; put 'put ''IFgsbT0wLF89MCxPPTA7ZG97bSs9Tz10aGlzLmh0RWRpdG9yLmdldFJvd0hlaWdodChfKXx8dGhpcy5odEVkaXRvci52aWV3Ll93dC5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0IiksXys9MX13aGlsZShtPGQpO1g9bS1PLHRoaXMuaHRFZGl0b3IuZmxpcHBlZCYmKHRoaXMuaHRFZGl0''@;'; put 'put ''b3Iucm9vdEVsZW1lbnQuc3R5bGUudG9wPSIiLmNvbmNhdChwYXJzZUludCh0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcCwxMCkraC1YLCJweCIpKSx0aGlzLnNldERyb3Bkb3duSGVpZ2h0KG0tTyl9fX0se2tleToiZmxpcERyb3Bkb3duIix2YWx1ZTpmdW5jdGlvbihkKXt2''@;'; put 'put ''YXIgaD10aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlO2gucG9zaXRpb249ImFic29sdXRlIixoLnRvcD0iIi5jb25jYXQoLWQsInB4IiksdGhpcy5odEVkaXRvci5mbGlwcGVkPSEwfX0se2tleToidW5mbGlwRHJvcGRvd24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5odEVk''@;'; put 'put ''aXRvci5yb290RWxlbWVudC5zdHlsZTtkLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZC50b3A9IiIsdGhpcy5odEVkaXRvci5mbGlwcGVkPXZvaWQgMH19LHtrZXk6InVwZGF0ZURyb3Bkb3duSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaHRFZGl0b3IuZ2V0Q29sV2lkdGgoMCkr''@;'; put 'put ''TnUodGhpcy5ob3Qucm9vdERvY3VtZW50KSsyLGg9dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd247dGhpcy5odEVkaXRvci51cGRhdGVTZXR0aW5ncyh7aGVpZ2h0OnRoaXMuZ2V0RHJvcGRvd25IZWlnaHQoKSx3aWR0aDpoP3ZvaWQgMDpkfSksdGhpcy5odEVkaXRvci52aWV3Ll93''@;'; put 'put ''dC53dFRhYmxlLmFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKX19LHtrZXk6InNldERyb3Bkb3duSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLmh0RWRpdG9yLnVwZGF0ZVNldHRpbmdzKHtoZWlnaHQ6ZH0pfX0se2tleToiaGlnaGxpZ2h0QmVzdE1hdGNoaW5nQ2hv''@;'; put 'put ''aWNlIix2YWx1ZTpmdW5jdGlvbihkKXsibnVtYmVyIj09dHlwZW9mIGQ/dGhpcy5odEVkaXRvci5zZWxlY3RDZWxsKGQsMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCwhMSk6dGhpcy5odEVkaXRvci5kZXNlbGVjdENlbGwoKX19LHtrZXk6ImdldERyb3Bkb3duSGVpZ2h0Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBkPXRoaXMuaHRFZGl0b3IuZ2V0SW5zdGFuY2UoKS5nZXRSb3dIZWlnaHQoMCl8fDIzLGg9dGhpcy5jZWxsUHJvcGVydGllcy52aXNpYmxlUm93cztyZXR1cm4gdGhpcy5zdHJpcHBlZENob2ljZXMubGVuZ3RoPj1oP2gqZDp0aGlzLnN0cmlwcGVkQ2hvaWNlcy5sZW5ndGgqZCs4''@;'; put 'put ''fX0se2tleToic3RyaXBWYWx1ZUlmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKFtkXSlbMF19fSx7a2V5OiJzdHJpcFZhbHVlc0lmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmNlbGxQcm9wZXJ0aWVzLmFsbG93''@;'; put 'put ''SHRtbCxtPWhhKGQsZnVuY3Rpb24oTyl7cmV0dXJuIE1zKE8pfSk7cmV0dXJuIGhhKG0sZnVuY3Rpb24oTyl7cmV0dXJuIGg/Tzp5WShPKX0pfX0se2tleToiYWxsb3dLZXlFdmVudFByb3BhZ2F0aW9uIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmh0RWRpdG9yLmdldFNlbGVjdGVk''@;'; put 'put ''UmFuZ2VMYXN0KCksbV9yb3c9aD9oLmZyb20ucm93Oi0xLF89ITE7cmV0dXJuIGQ9PT1oby5BUlJPV19ET1dOJiZtX3Jvdz4wJiZtX3Jvdzx0aGlzLmh0RWRpdG9yLmNvdW50Um93cygpLTEmJihfPSEwKSxkPT09aG8uQVJST1dfVVAmJm1fcm93Pi0xJiYoXz0hMCksX319LHtrZXk6Im9uQmVm''@;'; put 'put ''b3JlS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPWlLLmdldCh0aGlzKTtpZihtLnNraXBPbmU9ITEsRTBlKGQua2V5Q29kZSl8fGQua2V5Q29kZT09PWhvLkJBQ0tTUEFDRXx8ZC5rZXlDb2RlPT09aG8uREVMRVRFfHxkLmtleUNvZGU9PT1oby5JTlNFUlQpe3ZhciBf''@;'; put 'put ''PTEwO2lmKGQua2V5Q29kZT09PWhvLkMmJihkLmN0cmxLZXl8fGQubWV0YUtleSkpcmV0dXJuO3RoaXMuaXNPcGVuZWQoKXx8KF8rPTEwKSx0aGlzLmh0RWRpdG9yJiZ0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KGZ1bmN0aW9uKCl7aC5xdWVyeUNob2ljZXMoaC5URVhUQVJFQS52YWx1ZSks''@;'; put 'put ''bS5za2lwT25lPSEwfSxfKX19fV0sW3trZXk6IkVESVRPUl9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iYXV0b2NvbXBsZXRlIn19XSksYX0odEspO2Z1bmN0aW9uIEk5KGwpe3JldHVybihJOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p''@;'; put 'put ''dGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEdo''@;'; put 'put ''ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsenN0KGYua2V5KSxmKX19ZnVu''@;'; put 'put ''Y3Rpb24genN0KGwpe3ZhciBjPWZ1bmN0aW9uIFVzdChsLGMpe2lmKCJvYmplY3QiIT09STkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09STko''@;'; put 'put ''ZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUk5KGMpP2M6U3RyaW5nKGMp''@;'; put 'put ''fWZ1bmN0aW9uIGFLKGwsYyl7cmV0dXJuKGFLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gbUwobCl7cmV0dXJuKG1MPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyICRoZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gWnN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwh''@;'; put 'put ''PT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxl''@;'; put 'put ''OiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmFLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gWXN0KGwpe3ZhciBjPWZ1bmN0aW9uICRzdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVy''@;'; put 'put ''biExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPW1MKGwpO2lmKGMpe3ZhciBoPW1MKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBXc3QobCxjKXtp''@;'; put 'put ''ZihjJiYoIm9iamVjdCI9PT1JOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''R3N0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIEJz''@;'; put 'put ''dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBqc3QobCxjLGEpe2MmJkdoZShsLnByb3RvdHlwZSxj''@;'; put 'put ''KSxhJiZHaGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiYmVnaW5FZGl0aW5nIix2YWx1ZTpmdW5jdGlvbihkLGgpe2lmKGgmJiJtb3VzZXVwIj09PWgudHlwZSl7dmFyIG09dGhpcy5URC5xdWVyeVNlbGVjdG9yKCdp''@;'; put 'put ''bnB1dFt0eXBlPSJjaGVja2JveCJdJyk7WW8obSwiaHRCYWRWYWx1ZSIpfHxtLmNsaWNrKCl9fX0se2tleToiZmluaXNoRWRpdGluZyIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6Im9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tl''@;'; put 'put ''eToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuImNoZWNrYm94In19XSksYX0oQTkpLEtoZT1UKDE3NDgwKTtmdW5jdGlvbiBSOShsKXtyZXR1cm4oUjk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5j''@;'; put 'put ''dGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBxaGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9''@;'; put 'put ''Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEpzdChmLmtleSksZil9fWZ1bmN0aW9uIEpzdChsKXt2YXIgYz1mdW5jdGlvbiBRc3QobCxjKXtpZigi''@;'; put 'put ''b2JqZWN0IiE9PVI5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVI5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Qcmlt''@;'; put 'put ''aXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1SOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBnMygpe3JldHVybiBnMz10eXBlb2YgUmVmbGVjdDwi''@;'; put 'put ''dSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gZXV0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1VZChsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2''@;'; put 'put ''YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LGczLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBsSyhsLGMpe3JldHVybihsSz1PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIFVkKGwpe3JldHVybihVZD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBYaGU9ImRhdGUiLEpoZT0iZGF0ZUVkaXRvciIsUWhlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB0dXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmbEsobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBudXQobCl7dmFyIGM9ZnVuY3Rpb24gb3V0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVy''@;'; put 'put ''biBmdW5jdGlvbigpe3ZhciBkLGY9VWQobCk7aWYoYyl7dmFyIGg9VWQodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHJ1dChsLGMpe2lmKGMmJigib2JqZWN0''@;'; put 'put ''Ij09PVI5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBpdXQobCl7aWYodm9p''@;'; put 'put ''ZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIHFzdChsLGMp''@;'; put 'put ''e2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChkPWMuY2FsbCh0aGlzLGYpKS5kZWZhdWx0RGF0ZUZvcm1hdD0iREQvTU0vWVlZWSIsZC5pc0NlbGxFZGl0ZWQ9ITEsZC5wYXJlbnRE''@;'; put 'put ''ZXN0cm95ZWQ9ITEsZC4kZGF0ZVBpY2tlcj1udWxsLGR9cmV0dXJuIGZ1bmN0aW9uIFhzdChsLGMsYSl7YyYmcWhlKGwucHJvdG90eXBlLGMpLGEmJnFoZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpbml0Iix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEtvKXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gaW5jbHVkZSBtb21lbnQuanMgdG8geW91ciBwcm9qZWN0LiIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBLaGUpdGhyb3cgbmV3IEVycm9yKCJZb3UgbmVl''@;'; put 'put ''ZCB0byBpbmNsdWRlIFBpa2FkYXkgdG8geW91ciBwcm9qZWN0LiIpO2czKFVkKGEucHJvdG90eXBlKSwiaW5pdCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmluc3RhbmNlLmFkZEhvb2soImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXtkLnBhcmVudERlc3Ryb3llZD0hMCxkLmRlc3Ryb3lFbGVt''@;'; put 'put ''ZW50cygpfSl9fSx7a2V5OiJjcmVhdGVFbGVtZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtnMyhVZChhLnByb3RvdHlwZSksImNyZWF0ZUVsZW1lbnRzIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuZGF0ZVBpY2tlcj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdGhp''@;'; put 'put ''cy5kYXRlUGlja2VyU3R5bGU9dGhpcy5kYXRlUGlja2VyLnN0eWxlLHRoaXMuZGF0ZVBpY2tlclN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5kYXRlUGlja2VyU3R5bGUudG9wPTAsdGhpcy5kYXRlUGlja2VyU3R5bGUubGVmdD0wLHRoaXMuZGF0ZVBpY2tlclN0eWxlLnpJbmRleD05''@;'; put 'put ''OTk5LHRoaXMuZGF0ZVBpY2tlci5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5ob3QuaXNSdGwoKT8icnRsIjoibHRyIiksZ2kodGhpcy5kYXRlUGlja2VyLCJodERhdGVwaWNrZXJIb2xkZXIiKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmRhdGVQaWNrZXIp''@;'; put 'put ''LG5ldyBmcyh0aGlzKS5hZGRFdmVudExpc3RlbmVyKHRoaXMuZGF0ZVBpY2tlciwibW91c2Vkb3duIixmdW5jdGlvbihoKXtyZXR1cm4gaC5zdG9wUHJvcGFnYXRpb24oKX0pfX0se2tleToiZGVzdHJveUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZGF0ZVBpY2tlci5w''@;'; put 'put ''YXJlbnROb2RlO3RoaXMuJGRhdGVQaWNrZXImJnRoaXMuJGRhdGVQaWNrZXIuZGVzdHJveSgpLGQmJmQucmVtb3ZlQ2hpbGQodGhpcy5kYXRlUGlja2VyKX19LHtrZXk6InByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8sTyxYKXtnMyhVZChhLnByb3RvdHlwZSksInByZXBhcmUiLHRo''@;'; put 'put ''aXMpLmNhbGwodGhpcyxkLGgsbSxfLE8sWCl9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLG09dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4''@;'; put 'put ''dCgiZWRpdG9yIik7ZzMoVWQoYS5wcm90b3R5cGUpLCJvcGVuIix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuc2hvd0RhdGVwaWNrZXIoZCksbS5hZGRTaG9ydGN1dCh7a2V5czpbWyJFbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbihPKXtPLnN0b3BQcm9wYWdhdGlvbigpfSxncm91cDpKaGV9KX19''@;'; put 'put ''LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkLGg9dGhpczt0aGlzLl9vcGVuZWQ9ITEsbnVsbCE9PShkPXRoaXMuJGRhdGVQaWNrZXIpJiZ2b2lkIDAhPT1kJiZkLmRlc3Ryb3kmJnRoaXMuJGRhdGVQaWNrZXIuZGVzdHJveSgpLHRoaXMuaW5zdGFuY2UuX3JlZ2lzdGVyVGlt''@;'; put 'put ''ZW91dChmdW5jdGlvbigpe2guaW5zdGFuY2UuX3JlZnJlc2hCb3JkZXJzKCl9KSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKEpoZSksZzMoVWQoYS5wcm90b3R5cGUpLCJjbG9zZSIsdGhpcykuY2FsbCh0''@;'; put 'put ''aGlzKX19LHtrZXk6ImZpbmlzaEVkaXRpbmciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07''@;'; put 'put ''aWYoZCl7dmFyIG09dGhpcy5vcmlnaW5hbFZhbHVlO3ZvaWQgMCE9PW0mJnRoaXMuc2V0VmFsdWUobSl9ZzMoVWQoYS5wcm90b3R5cGUpLCJmaW5pc2hFZGl0aW5nIix0aGlzKS5jYWxsKHRoaXMsZCxoKX19LHtrZXk6InNob3dEYXRlcGlja2VyIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgWCxo''@;'; put 'put ''PXRoaXMuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbT10aGlzLmNlbGxQcm9wZXJ0aWVzLmRhdGVGb3JtYXR8fHRoaXMuZGVmYXVsdERhdGVGb3JtYXQsXz10aGlzLmluc3RhbmNlLnZpZXcuaXNNb3VzZURvd24oKSxPPSEhZCYmRFkoZC5rZXlDb2RlKTt0aGlzLmRhdGVQaWNrZXIuc3R5''@;'; put 'put ''bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuJGRhdGVQaWNrZXI9bmV3IEtoZSh0aGlzLmdldERhdGVQaWNrZXJDb25maWcoKSksdGhpcy4kZGF0ZVBpY2tlci5fb25JbnB1dEZvY3VzPWZ1bmN0aW9uKCl7fSx0aGlzLmRhdGVQaWNrZXJTdHlsZS50b3A9IiIuY29uY2F0KHRoaXMuaG90LnJvb3RX''@;'; put 'put ''aW5kb3cucGFnZVlPZmZzZXQraC50b3ArY3ModGhpcy5URCksInB4Iik7dmFyIGFlO2FlPXRoaXMuaG90LmlzUnRsKCk/aC5yaWdodC1TbCh0aGlzLmRhdGVQaWNrZXIpOmgubGVmdCx0aGlzLmRhdGVQaWNrZXJTdHlsZS5sZWZ0PSIiLmNvbmNhdChhZSwicHgiKSx0aGlzLm9yaWdpbmFsVmFs''@;'; put 'put ''dWU/KEtvKFg9dGhpcy5vcmlnaW5hbFZhbHVlLG0sITApLmlzVmFsaWQoKSYmdGhpcy4kZGF0ZVBpY2tlci5zZXRNb21lbnQoS28oWCxtKSwhMCksdGhpcy5nZXRWYWx1ZSgpIT09dGhpcy5vcmlnaW5hbFZhbHVlJiZ0aGlzLnNldFZhbHVlKHRoaXMub3JpZ2luYWxWYWx1ZSksIU8mJiFfJiZ0''@;'; put 'put ''aGlzLnNldFZhbHVlKCIiKSk6dGhpcy5jZWxsUHJvcGVydGllcy5kZWZhdWx0RGF0ZT8oS28oWD10aGlzLmNlbGxQcm9wZXJ0aWVzLmRlZmF1bHREYXRlLG0sITApLmlzVmFsaWQoKSYmdGhpcy4kZGF0ZVBpY2tlci5zZXRNb21lbnQoS28oWCxtKSwhMCksIU8mJiFfJiZ0aGlzLnNldFZhbHVl''@;'; put 'put ''KCIiKSk6dGhpcy4kZGF0ZVBpY2tlci5nb3RvVG9kYXkoKX19LHtrZXk6ImhpZGVEYXRlcGlja2VyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGF0ZVBpY2tlclN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGRhdGVQaWNrZXIuaGlkZSgpfX0se2tleToiZ2V0RGF0ZVBpY2tlckNvbmZpZyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9dGhpcy5URVhUQVJFQSxtPXt9O3RoaXMuY2VsbFByb3BlcnRpZXMmJnRoaXMuY2VsbFByb3BlcnRpZXMuZGF0ZVBpY2tlckNvbmZpZyYmSFMobSx0aGlzLmNlbGxQcm9wZXJ0aWVzLmRhdGVQaWNrZXJDb25maWcpO3ZhciBfPW0ub25TZWxl''@;'; put 'put ''Y3QsTz1tLm9uQ2xvc2U7cmV0dXJuIG0uZmllbGQ9aCxtLnRyaWdnZXI9aCxtLmNvbnRhaW5lcj10aGlzLmRhdGVQaWNrZXIsbS5ib3VuZD0hMSxtLmZvcm1hdD1tLmZvcm1hdHx8dGhpcy5kZWZhdWx0RGF0ZUZvcm1hdCxtLnJlcG9zaXRpb249bS5yZXBvc2l0aW9ufHwhMSxtLmlzUlRMPSEx''@;'; put 'put ''LG0ub25TZWxlY3Q9ZnVuY3Rpb24oWCl7dmFyIGFlPVg7aXNOYU4oYWUuZ2V0VGltZSgpKXx8KGFlPUtvKGFlKS5mb3JtYXQoZC5jZWxsUHJvcGVydGllcy5kYXRlRm9ybWF0fHxkLmRlZmF1bHREYXRlRm9ybWF0KSksZC5zZXRWYWx1ZShhZSksZC5oaWRlRGF0ZXBpY2tlcigpLF8mJl8oKX0s''@;'; put 'put ''bS5vbkNsb3NlPWZ1bmN0aW9uKCl7ZC5wYXJlbnREZXN0cm95ZWR8fGQuZmluaXNoRWRpdGluZyghMSksTyYmTygpfSxtfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFhoZX19XSksYX0oRDUpO2Z1bmN0aW9uIEw5KGwpe3JldHVybihMOT0iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnBy''@;'; put 'put ''b3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGUyZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsc3V0KGYua2V5KSxmKX19ZnVuY3Rpb24gc3V0KGwpe3ZhciBjPWZ1bmN0aW9uIHV1dChsLGMpe2lmKCJvYmplY3QiIT09TDkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIg''@;'; put 'put ''Zj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09TDkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJz''@;'; put 'put ''dHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUw5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGdMKCl7cmV0dXJuIGdMPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBjdXQobCxjKXtmb3IoOyFP''@;'; put 'put ''YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPVA5KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PDM/YzpmKTpoLnZhbHVlfX0sZ0wuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHNLKGwsYyl7cmV0dXJuKHNLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9''@;'; put 'put ''ZnVuY3Rpb24gUDkobCl7cmV0dXJuKFA5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHVLPWZ1bmN0aW9uKGwpeyFmdW5jdGlv''@;'; put 'put ''biBmdXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25z''@;'; put 'put ''dHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmc0sobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBkdXQobCl7dmFyIGM9ZnVuY3Rpb24gbXV0KCl7aWYodHlw''@;'; put 'put ''ZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9UDkobCk7aWYoYyl7dmFyIGg9UDkodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGh1dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PUw5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1''@;'; put 'put ''cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBwdXQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhp''@;'; put 'put ''cyxkKX19KGEpO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZnVuY3Rpb24gYXV0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIGx1dChsLGMsYSl7YyYmZTJlKGwucHJvdG90eXBlLGMpLGEmJmUyZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfLE8sWCl7Z0woUDkoYS5wcm90''@;'; put 'put ''b3R5cGUpLCJwcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMsZCxoLG0sXyxPLFgpLHRoaXMuY2VsbFByb3BlcnRpZXMuZmlsdGVyPSExLHRoaXMuY2VsbFByb3BlcnRpZXMuc3RyaWN0PSEwfX1dLFt7a2V5OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImRyb3Bkb3duIn19XSks''@;'; put 'put ''YX0ob0spO2Z1bmN0aW9uIEY5KGwpe3JldHVybihGOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHQyZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29u''@;'; put 'put ''ZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYnV0KGYua2V5KSxmKX19ZnVuY3Rpb24gYnV0KGwpe3ZhciBjPWZ1bmN0aW9uIF91dChsLGMpe2lmKCJvYmplY3QiIT09RjkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBh''@;'; put 'put ''PWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09RjkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1y''@;'; put 'put ''ZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUY5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGNLKGwsYyl7cmV0dXJuKGNLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1''@;'; put 'put ''bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gdkwobCl7cmV0dXJuKHZMPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3Rv''@;'; put 'put ''dHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkuYWRkKCJiZWZvcmVWYWxpZGF0ZSIsZnVuY3Rpb24obCxjLGEpe3ZhciBmPXRoaXMuZ2V0Q2VsbE1ldGEoYyx0aGlzLnByb3BUb0NvbChhKSk7Zi5lZGl0b3I9PT11SyYmdm9pZCAwPT09Zi5zdHJpY3QmJihmLmZpbHRlcj0hMSxmLnN0''@;'; put 'put ''cmljdD0hMCl9KTt2YXIgbjJlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB3dXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3Rv''@;'; put 'put ''dHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmY0sobCxjKX0oYSxsKTt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBDdXQobCl7dmFyIGM9ZnVuY3Rpb24ga3V0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5w''@;'; put 'put ''cm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9dkwobCk7aWYoYyl7dmFyIGg9dkwodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIFN1dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PUY5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBNdXQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigp''@;'; put 'put ''IGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZnVuY3Rpb24gdnV0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KHRoaXMsYSksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGZ1bmN0aW9uIHl1dChsLGMsYSl7YyYmdDJlKGwucHJvdG90eXBlLGMpLGEmJnQyZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLG51bGwsW3trZXk6IkVESVRP''@;'; put 'put ''Ul9UWVBFIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtZXJpYyJ9fV0pLGF9KEQ1KTtmdW5jdGlvbiBIOShsKXtyZXR1cm4oSDk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpm''@;'; put 'put ''dW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiByMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFy''@;'; put 'put ''IGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFR1dChmLmtleSksZil9fWZ1bmN0aW9uIFR1dChsKXt2YXIgYz1mdW5jdGlvbiBPdXQobCxjKXtp''@;'; put 'put ''Zigib2JqZWN0IiE9PUg5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUg5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Q''@;'; put 'put ''cmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1IOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB5TCgpe3JldHVybiB5TD10eXBlb2YgUmVmbGVj''@;'; put 'put ''dDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gRHV0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1OOShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihk''@;'; put 'put ''KXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LHlMLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBmSyhsLGMpe3JldHVybihmSz1PYmplY3Quc2V0''@;'; put 'put ''UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIE45KGwpe3JldHVybihOOT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBpMmU9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIEl1dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz''@;'; put 'put ''aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90''@;'; put 'put ''eXBlIix7d3JpdGFibGU6ITF9KSxjJiZmSyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIFJ1dChsKXt2YXIgYz1mdW5jdGlvbiBGdXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1OOShs''@;'; put 'put ''KTtpZihjKXt2YXIgaD1OOSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gTHV0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09SDkoYyl8fCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFB1dChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVu''@;'; put 'put ''Y2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3JldHVybiBmdW5jdGlvbiB4dXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gQXV0KGwsYyxhKXtjJiZyMmUobC5wcm90b3R5cGUsYyksYSYmcjJlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImNyZWF0ZUVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3lMKE45KGEucHJvdG90eXBlKSwiY3JlYXRlRWxlbWVudHMiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5URVhUQVJFQT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRl''@;'; put 'put ''RWxlbWVudCgiaW5wdXQiKSx0aGlzLlRFWFRBUkVBLnNldEF0dHJpYnV0ZSgidHlwZSIsInBhc3N3b3JkIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwiIiksdGhpcy5URVhUQVJFQS5jbGFzc05hbWU9ImhhbmRzb250YWJsZUlucHV0Iix0aGlzLnRleHRh''@;'; put 'put ''cmVhU3R5bGU9dGhpcy5URVhUQVJFQS5zdHlsZSx0aGlzLnRleHRhcmVhU3R5bGUud2lkdGg9MCx0aGlzLnRleHRhcmVhU3R5bGUuaGVpZ2h0PTAsRmQodGhpcy5URVhUQVJFQV9QQVJFTlQpLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUEpfX1dLFt7a2V5''@;'; put 'put ''OiJFRElUT1JfVFlQRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInBhc3N3b3JkIn19XSksYX0oRDUpO2Z1bmN0aW9uIEw1KGwpe3JldHVybihMNT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlw''@;'; put 'put ''ZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIG8yZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7''@;'; put 'put ''YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsQnV0KGYua2V5KSxmKX19ZnVuY3Rpb24gQnV0KGwpe3ZhciBjPWZ1bmN0aW9uIGp1''@;'; put 'put ''dChsLGMpe2lmKCJvYmplY3QiIT09TDUobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09TDUoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUw1KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGJMKCl7cmV0dXJuIGJMPXR5cGVv''@;'; put 'put ''ZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiB6dXQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPVY5KGwpKTspO3JldHVybiBsfShj''@;'; put 'put ''LGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sYkwuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGRLKGwsYyl7cmV0dXJuKGRLPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gVjkobCl7cmV0dXJuKFY5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIGhLPSJodF9lZGl0b3JfdmlzaWJsZSIsYTJlPSJzZWxlY3RFZGl0b3IiLEt1dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gVXV0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlw''@;'; put 'put ''ZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAs''@;'; put 'put ''Y29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmRLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gWnV0KGwpe3ZhciBjPWZ1bmN0aW9uIEd1dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEw''@;'; put 'put ''fWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPVY5KGwpO2lmKGMpe3ZhciBoPVY5KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlv''@;'; put 'put ''biBZdXQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1MNShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gV3V0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIE51dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBWdXQobCxjLGEpe2MmJm8yZShs''@;'; put 'put ''LnByb3RvdHlwZSxjKSxhJiZvMmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU0VMRUNU''@;'; put 'put ''IiksZ2kodGhpcy5zZWxlY3QsImh0U2VsZWN0RWRpdG9yIiksdGhpcy5zZWxlY3Quc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3QpLHRoaXMucmVnaXN0ZXJIb29rcygpfX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0LnZhbHVlfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMuc2VsZWN0LnZhbHVlPWR9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX29wZW5lZD0hMCx0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCksdGhpcy5z''@;'; put 'put ''ZWxlY3Quc3R5bGUuZGlzcGxheT0iIix0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZWRpdG9yIiksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fb3BlbmVkPSExLHRoaXMuc2Vs''@;'; put 'put ''ZWN0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLFlvKHRoaXMuc2VsZWN0LGhLKSYmSm8odGhpcy5zZWxlY3QsaEspLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuY2xlYXJIb29rcygpfX0se2tleToiZm9jdXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3QuZm9jdXMoKX19LHtr''@;'; put 'put ''ZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe3JldHVybiBkLnJlZnJlc2hEaW1lbnNpb25zKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZC5yZWZyZXNoRGltZW5zaW9ucygpfSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5yZWZyZXNoRGltZW5zaW9ucygpfSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''ZC5yZWZyZXNoRGltZW5zaW9ucygpfSl9fSx7a2V5OiJwcmVwYXJlIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfLE8sWCl7dmFyIGFlPXRoaXM7YkwoVjkoYS5wcm90b3R5cGUpLCJwcmVwYXJlIix0aGlzKS5jYWxsKHRoaXMsZCxoLG0sXyxPLFgpO3ZhciBiZSxwZT10aGlzLmNlbGxQcm9wZXJ0''@;'; put 'put ''aWVzLnNlbGVjdE9wdGlvbnM7YmU9dGhpcy5wcmVwYXJlT3B0aW9ucygiZnVuY3Rpb24iPT10eXBlb2YgcGU/cGUodGhpcy5yb3csdGhpcy5jb2wsdGhpcy5wcm9wKTpwZSksRmQodGhpcy5zZWxlY3QpLG1hKGJlLGZ1bmN0aW9uKHhlLFZlKXt2YXIgWmU9YWUuaG90LnJvb3REb2N1bWVudC5j''@;'; put 'put ''cmVhdGVFbGVtZW50KCJPUFRJT04iKTtaZS52YWx1ZT1WZSx2NShaZSx4ZSksYWUuc2VsZWN0LmFwcGVuZENoaWxkKFplKX0pfX0se2tleToicHJlcGFyZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXt9O2lmKEFycmF5LmlzQXJyYXkoZCkpZm9yKHZhciBtPTAsXz1kLmxlbmd0''@;'; put 'put ''aDttPF87bSsrKWhbZFttXV09ZFttXTtlbHNlIm9iamVjdCI9PT1MNShkKSYmKGg9ZCk7cmV0dXJuIGh9fSx7a2V5OiJyZWZyZXNoVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLnJvdyx0aGlzLnByb3ApO3RoaXMub3JpZ2lu''@;'; put 'put ''YWxWYWx1ZT1kLHRoaXMuc2V0VmFsdWUoZCksdGhpcy5yZWZyZXNoRGltZW5zaW9ucygpfX0se2tleToicmVmcmVzaERpbWVuc2lvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5zdGF0ZT09PVF1LkVESVRJTkcpe2lmKHRoaXMuVEQ9dGhpcy5nZXRFZGl0ZWRDZWxsKCksIXRoaXMuVEQp''@;'; put 'put ''cmV0dXJuIHZvaWQgdGhpcy5jbG9zZSgpO3ZhciBkPXRoaXMuZ2V0RWRpdGVkQ2VsbFJlY3QoKSxoPWQudG9wLG09ZC5zdGFydCxfPWQud2lkdGgsWD10aGlzLnNlbGVjdC5zdHlsZTtYLmhlaWdodD0iIi5jb25jYXQoZC5oZWlnaHQsInB4IiksWC53aWR0aD0iIi5jb25jYXQoXywicHgiKSxY''@;'; put 'put ''LnRvcD0iIi5jb25jYXQoaCwicHgiKSxYW3RoaXMuaG90LmlzUnRsKCk/InJpZ2h0IjoibGVmdCJdPSIiLmNvbmNhdChtLCJweCIpLFgubWFyZ2luPSIwcHgiLGdpKHRoaXMuc2VsZWN0LGhLKX19fSx7a2V5OiJyZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlz''@;'; put 'put ''LG09dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksXz17Z3JvdXA6YTJlfTshMSE9PXRoaXMuaXNJbkZ1bGxFZGl0TW9kZSgpJiZtLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBYPWQuc2Vs''@;'; put 'put ''ZWN0LnNlbGVjdGVkSW5kZXgtMTtYPj0wJiYoZC5zZWxlY3RbWF0uc2VsZWN0ZWQ9ITApfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFg9ZC5zZWxlY3Quc2VsZWN0ZWRJbmRleCsxO1g8PWQuc2VsZWN0Lmxlbmd0aC0xJiYoZC5zZWxlY3RbWF0uc2Vs''@;'; put 'put ''ZWN0ZWQ9ITApfX1dLF8pfX0se2tleToidW5yZWdpc3RlclNob3J0Y3V0cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKGEyZSl9fV0sW3trZXk6IkVESVRPUl9UWVBFIixn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ic2VsZWN0In19XSksYX0oQTkpO2Z1bmN0aW9uIEI5KGwpe3JldHVybihCOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMp''@;'; put 'put ''e3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGwyZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2Yu''@;'; put 'put ''ZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSnV0KGYua2V5KSxmKX19ZnVuY3Rpb24gSnV0KGwpe3ZhciBjPWZ1bmN0aW9uIFF1dChsLGMpe2lmKCJvYmplY3Qi''@;'; put 'put ''IT09QjkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09QjkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBt''@;'; put 'put ''dXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUI5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIF9MKCl7cmV0dXJuIF9MPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVm''@;'; put 'put ''bGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBlY3QobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPWo5KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9i''@;'; put 'put ''amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sX0wuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHBLKGwsYyl7cmV0dXJuKHBLPU9iamVjdC5zZXRQcm90b3R5cGVP''@;'; put 'put ''Zj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gajkobCl7cmV0dXJuKGo5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3Jl''@;'; put 'put ''dHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHMyZT1mdW5jdGlvbihsKXshZnVuY3Rpb24gdGN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBl''@;'; put 'put ''aXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0''@;'; put 'put ''YWJsZTohMX0pLGMmJnBLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gbmN0KGwpe3ZhciBjPWZ1bmN0aW9uIG9jdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPWo5KGwpO2lmKGMpe3Zh''@;'; put 'put ''ciBoPWo5KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiByY3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1COShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJl''@;'; put 'put ''dHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gaWN0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0''@;'; put 'put ''aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIHF1dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBYdXQobCxjLGEpe2MmJmwyZShsLnByb3RvdHlwZSxjKSxhJiZsMmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBl''@;'; put 'put ''Iix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToicHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyxPLFgpe19MKGo5KGEucHJvdG90eXBlKSwicHJlcGFyZSIsdGhpcykuY2FsbCh0aGlzLGQsaCxtLF8sTyxYKSx0aGlzLlRFWFRBUkVBLmRpcj0ibHRyIn19XSxbe2tleToiRURJVE9SX1RZ''@;'; put 'put ''UEUiLGdldDpmdW5jdGlvbigpe3JldHVybiJ0aW1lIn19XSksYX0oRDUpO2Z1bmN0aW9uIG1LKGwsYyxhLGYsZCxoLG0pe2JrLmFwcGx5KHRoaXMsW2wsYyxhLGYsZCxoLG1dKSx2NShjLGg/PyIiLCExKX1mdW5jdGlvbiB6OShsLGMsYSxmLGQsaCxtKXt2YXIgXz1sLnJvb3REb2N1bWVudCxP''@;'; put 'put ''PW0uYWxsb3dIdG1sP21LOlY0LFg9Xy5jcmVhdGVFbGVtZW50KCJESVYiKTtpZihYLmNsYXNzTmFtZT0iaHRBdXRvY29tcGxldGVBcnJvdyIsWC5hcHBlbmRDaGlsZChfLmNyZWF0ZVRleHROb2RlKFN0cmluZy5mcm9tQ2hhckNvZGUoOTY2MCkpKSxPLmFwcGx5KHRoaXMsW2wsYyxhLGYsZCxo''@;'; put 'put ''LG1dKSxjLmZpcnN0Q2hpbGR8fGMuYXBwZW5kQ2hpbGQoXy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcuZnJvbUNoYXJDb2RlKDE2MCkpKSxjLmluc2VydEJlZm9yZShYLGMuZmlyc3RDaGlsZCksZ2koYywiaHRBdXRvY29tcGxldGUiKSwhbC5hY0Fycm93TGlzdGVuZXIpe3ZhciBhZT1uZXcgZnMo''@;'; put 'put ''bCk7bC5hY0Fycm93TGlzdGVuZXI9ZnVuY3Rpb24ocGUpe1lvKHBlLnRhcmdldCwiaHRBdXRvY29tcGxldGVBcnJvdyIpJiZsLnZpZXcuX3d0LmdldFNldHRpbmcoIm9uQ2VsbERibENsaWNrIixudWxsLGwuX2NyZWF0ZUNlbGxDb29yZHMoYSxmKSxjKX0sYWUuYWRkRXZlbnRMaXN0ZW5lcihs''@;'; put 'put ''LnJvb3RFbGVtZW50LCJtb3VzZWRvd24iLGwuYWNBcnJvd0xpc3RlbmVyKSxsLmFkZEhvb2tPbmNlKCJhZnRlckRlc3Ryb3kiLGZ1bmN0aW9uKCl7YWUuZGVzdHJveSgpfSl9fW1LLlJFTkRFUkVSX1RZUEU9Imh0bWwiLHo5LlJFTkRFUkVSX1RZUEU9ImF1dG9jb21wbGV0ZSI7dmFyIHUyZT1u''@;'; put 'put ''ZXcgV2Vha01hcCxjMmU9bmV3IFdlYWtNYXAsY2N0PSJodEJhZFZhbHVlIixVOT0iZGF0YS1yb3ciLFo5PSJkYXRhLWNvbCIsZmN0PSJjaGVja2JveFJlbmRlcmVyIjtmdW5jdGlvbiBnSyhsLGMsYSxmLGQsaCxtKXt2YXIgXz1sLnJvb3REb2N1bWVudDtiay5hcHBseSh0aGlzLFtsLGMsYSxm''@;'; put 'put ''LGQsaCxtXSksZnVuY3Rpb24gZGN0KGwpe3ZhciBjPWMyZS5nZXQobCk7aWYoIWMpe3ZhciBhPWwucm9vdEVsZW1lbnQ7KGM9bmV3IGZzKGwpKS5hZGRFdmVudExpc3RlbmVyKGEsImNsaWNrIixmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24gZ2N0KGwsYyl7dmFyIGE9bC50YXJnZXQ7aWYo''@;'; put 'put ''dksoYSkmJmEuaGFzQXR0cmlidXRlKFU5KSYmYS5oYXNBdHRyaWJ1dGUoWjkpKXt2YXIgZj1wYXJzZUludChhLmdldEF0dHJpYnV0ZShVOSksMTApLGQ9cGFyc2VJbnQoYS5nZXRBdHRyaWJ1dGUoWjkpLDEwKTtjLmdldENlbGxNZXRhKGYsZCkucmVhZE9ubHkmJmwucHJldmVudERlZmF1bHQo''@;'; put 'put ''KX19KGYsbCl9KSxjLmFkZEV2ZW50TGlzdGVuZXIoYSwibW91c2V1cCIsZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uIG1jdChsLGMpe3ZhciBhPWwudGFyZ2V0O3ZLKGEpJiYoIWEuaGFzQXR0cmlidXRlKFU5KXx8IWEuaGFzQXR0cmlidXRlKFo5KXx8c2V0VGltZW91dChjLmxpc3Rlbiwx''@;'; put 'put ''MCkpfShmLGwpfSksYy5hZGRFdmVudExpc3RlbmVyKGEsImNoYW5nZSIsZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uIHZjdChsLGMpe3ZhciBhPWwudGFyZ2V0O2lmKHZLKGEpJiZhLmhhc0F0dHJpYnV0ZShVOSkmJmEuaGFzQXR0cmlidXRlKFo5KSl7dmFyIGY9cGFyc2VJbnQoYS5nZXRB''@;'; put 'put ''dHRyaWJ1dGUoVTkpLDEwKSxkPXBhcnNlSW50KGEuZ2V0QXR0cmlidXRlKFo5KSwxMCksaD1jLmdldENlbGxNZXRhKGYsZCk7aC5yZWFkT25seXx8Yy5zZXREYXRhQXRDZWxsKGYsZCxsLnRhcmdldC5jaGVja2VkP3ZvaWQgMD09PWgudW5jaGVja2VkVGVtcGxhdGV8fGguY2hlY2tlZFRlbXBs''@;'; put 'put ''YXRlOnZvaWQgMCE9PWgudW5jaGVja2VkVGVtcGxhdGUmJmgudW5jaGVja2VkVGVtcGxhdGUpfX0oZixsKX0pLGMyZS5zZXQobCxjKX19KGwpO3ZhciBPPWZ1bmN0aW9uIGhjdChsKXt2YXIgYz1sLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7cmV0dXJuIGMuY2xhc3NOYW1lPSJodENoZWNrYm94''@;'; put 'put ''UmVuZGVyZXJJbnB1dCIsYy50eXBlPSJjaGVja2JveCIsYy5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsIm9mZiIpLGMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksYy5jbG9uZU5vZGUoITEpfShfKSxYPW0ubGFiZWwsYWU9ITE7aWYodHlwZW9mIG0uY2hlY2tlZFRlbXBsYXRl''@;'; put 'put ''PiJ1IiYmKG0uY2hlY2tlZFRlbXBsYXRlPSEwKSx0eXBlb2YgbS51bmNoZWNrZWRUZW1wbGF0ZT4idSImJihtLnVuY2hlY2tlZFRlbXBsYXRlPSExKSxGZChjKSxoPT09bS5jaGVja2VkVGVtcGxhdGV8fE1zKGgpLnRvTG9jYWxlTG93ZXJDYXNlKG0ubG9jYWxlKT09PU1zKG0uY2hlY2tlZFRl''@;'; put 'put ''bXBsYXRlKS50b0xvY2FsZUxvd2VyQ2FzZShtLmxvY2FsZSk/Ty5jaGVja2VkPSEwOmg9PT1tLnVuY2hlY2tlZFRlbXBsYXRlfHxNcyhoKS50b0xvY2FsZUxvd2VyQ2FzZShtLmxvY2FsZSk9PT1NcyhtLnVuY2hlY2tlZFRlbXBsYXRlKS50b0xvY2FsZUxvd2VyQ2FzZShtLmxvY2FsZSk/Ty5j''@;'; put 'put ''aGVja2VkPSExOnd1KGgpP2dpKE8sIm5vVmFsdWUiKTooTy5zdHlsZS5kaXNwbGF5PSJub25lIixnaShPLGNjdCksYWU9ITApLE8uc2V0QXR0cmlidXRlKFU5LGEpLE8uc2V0QXR0cmlidXRlKFo5LGYpLCFhZSYmWCl7dmFyIHBlPSIiO2lmKFgudmFsdWUpcGU9ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFgudmFsdWU/WC52YWx1ZS5jYWxsKHRoaXMsYSxmLGQsaCk6WC52YWx1ZTtlbHNlIGlmKFgucHJvcGVydHkpe3ZhciBiZT1sLmdldERhdGFBdFJvd1Byb3AoYSxYLnByb3BlcnR5KTtwZT1udWxsIT09YmU/YmU6IiJ9dmFyIHhlPWZ1bmN0aW9uIHBjdChsLGMsYSl7dmFyIGY9bC5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJsYWJlbCIpO3JldHVybiBmLmNsYXNzTmFtZT0iaHRDaGVja2JveFJlbmRlcmVyTGFiZWwgIi5jb25jYXQoYT8iZnVsbFdpZHRoIjoiIiksZi5hcHBlbmRDaGlsZChsLmNyZWF0ZVRleHROb2RlKGMpKSxmLmNsb25lTm9kZSghMCl9KF8scGUsITAhPT1YLnNlcGFyYXRlZCk7ImJl''@;'; put 'put ''Zm9yZSI9PT1YLnBvc2l0aW9uP1guc2VwYXJhdGVkPyhjLmFwcGVuZENoaWxkKHhlKSxjLmFwcGVuZENoaWxkKE8pKTooeGUuYXBwZW5kQ2hpbGQoTyksTz14ZSk6KCFYLnBvc2l0aW9ufHwiYWZ0ZXIiPT09WC5wb3NpdGlvbikmJihYLnNlcGFyYXRlZD8oYy5hcHBlbmRDaGlsZChPKSxjLmFw''@;'; put 'put ''cGVuZENoaWxkKHhlKSk6KHhlLmluc2VydEJlZm9yZShPLHhlLmZpcnN0Q2hpbGQpLE89eGUpKX1mdW5jdGlvbiBaZSgpe3ZhciBkdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGd0PWwuZ2V0U2VsZWN0ZWRSYW5nZSgpO2lmKGd0KWZv''@;'; put 'put ''cih2YXIganQ9MDtqdDxndC5sZW5ndGg7anQrKyl7Zm9yKHZhciBybj1ndFtqdF0uZ2V0VG9wU3RhcnRDb3JuZXIoKSxYdD1ybi5yb3cseW49cm4uY29sLFFuPWd0W2p0XS5nZXRCb3R0b21FbmRDb3JuZXIoKSxPcj1Rbi5yb3csVnI9UW4uY29sLFpyPVtdLGlyPVh0O2lyPD1Pcjtpcis9MSlm''@;'; put 'put ''b3IodmFyIHNpPXluO3NpPD1WcjtzaSs9MSl7dmFyIEFyPWwuZ2V0Q2VsbE1ldGEoaXIsc2kpO2lmKCJjaGVja2JveCIhPT1Bci50eXBlKXJldHVybjtpZighMCE9PUFyLnJlYWRPbmx5KXt0eXBlb2YgQXIuY2hlY2tlZFRlbXBsYXRlPiJ1IiYmKEFyLmNoZWNrZWRUZW1wbGF0ZT0hMCksdHlw''@;'; put 'put ''ZW9mIEFyLnVuY2hlY2tlZFRlbXBsYXRlPiJ1IiYmKEFyLnVuY2hlY2tlZFRlbXBsYXRlPSExKTt2YXIgRW49bC5nZXREYXRhQXRDZWxsKGlyLHNpKTshMT09PWR0P1tBci5jaGVja2VkVGVtcGxhdGUsQXIuY2hlY2tlZFRlbXBsYXRlLnRvU3RyaW5nKCldLmluY2x1ZGVzKEVuKT9aci5wdXNo''@;'; put 'put ''KFtpcixzaSxBci51bmNoZWNrZWRUZW1wbGF0ZV0pOltBci51bmNoZWNrZWRUZW1wbGF0ZSxBci51bmNoZWNrZWRUZW1wbGF0ZS50b1N0cmluZygpLG51bGwsdm9pZCAwXS5pbmNsdWRlcyhFbikmJlpyLnB1c2goW2lyLHNpLEFyLmNoZWNrZWRUZW1wbGF0ZV0pOlpyLnB1c2goW2lyLHNpLEFy''@;'; put 'put ''LnVuY2hlY2tlZFRlbXBsYXRlXSl9fVpyLmxlbmd0aD4wJiZsLnNldERhdGFBdENlbGwoWnIpfX1mdW5jdGlvbiBsdCgpe3ZhciBkdD1sLmdldFNlbGVjdGVkUmFuZ2UoKTtpZihkdCl7Zm9yKHZhciBndD0wO2d0PGR0Lmxlbmd0aDtndCsrKWZvcih2YXIganQ9ZHRbZ3RdLmdldFRvcFN0YXJ0''@;'; put 'put ''Q29ybmVyKCkscm49ZHRbZ3RdLmdldEJvdHRvbUVuZENvcm5lcigpLFh0PWp0LnJvdztYdDw9cm4ucm93O1h0KyspZm9yKHZhciB5bj1qdC5jb2w7eW48PXJuLmNvbDt5bisrKXt2YXIgUW49bC5nZXRDZWxsTWV0YShYdCx5bik7aWYoImNoZWNrYm94IiE9PVFuLnR5cGUpcmV0dXJuITE7dmFy''@;'; put 'put ''IE9yPWwuZ2V0Q2VsbChYdCx5bik7aWYobnVsbD09T3IpcmV0dXJuITA7aWYoT3IucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbdHlwZT1jaGVja2JveF0iKS5sZW5ndGg+MCYmIVFuLnJlYWRPbmx5KXJldHVybiEwfXJldHVybiExfX0oIVh8fFgmJiFYLnNlcGFyYXRlZCkmJmMuYXBwZW5kQ2hp''@;'; put 'put ''bGQoTyksYWUmJmMuYXBwZW5kQ2hpbGQoXy5jcmVhdGVUZXh0Tm9kZSgiI2JhZC12YWx1ZSMiKSksdTJlLmhhcyhsKXx8KHUyZS5zZXQobCwhMCksZnVuY3Rpb24gVmUoKXtsLmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5hZGRTaG9ydGN1dHMoW3trZXlzOltbInNw''@;'; put 'put ''YWNlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIFplKCksIWx0KCl9fSx7a2V5czpbWyJlbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBaZSgpLCFsdCgpfSxydW5Pbmx5SWY6ZnVuY3Rpb24oKXtyZXR1cm4gbC5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGlu''@;'; put 'put ''Z319LHtrZXlzOltbImRlbGV0ZSJdLFsiYmFja3NwYWNlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIFplKCEwKSwhbHQoKX0scmVsYXRpdmVUb0dyb3VwOlFTLHBvc2l0aW9uOiJiZWZvcmUifV0se2dyb3VwOmZjdH0pfSgpKX1mdW5jdGlvbiB2SyhsKXtyZXR1cm4iSU5QVVQiPT09''@;'; put 'put ''bC50YWdOYW1lJiYiY2hlY2tib3giPT09bC5nZXRBdHRyaWJ1dGUoInR5cGUiKX11by5nZXRTaW5nbGV0b24oKS5hZGQoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIsZnVuY3Rpb24obCxjLGEpe3ZhciBmPWMubGFiZWwsaD1jLnJvdztpZigiY2hlY2tib3giPT09Yy50eXBlKXtpZihmKXt2''@;'; put 'put ''YXIgTz1mLnZhbHVlLFg9Zi5wcm9wZXJ0eSxhZT1hO2lmKE8pYWU9ImZ1bmN0aW9uIj09dHlwZW9mIE8/TyhoLGMuY29sdW1uLGMucHJvcCxhKTpPO2Vsc2UgaWYoWCl7dmFyIHBlPXRoaXMuZ2V0RGF0YUF0Um93UHJvcChoLFgpO2FlPW51bGwhPT1wZT9wZTphfWw9YWV9cmV0dXJuIGx9fSks''@;'; put 'put ''Z0suUkVOREVSRVJfVFlQRT0iY2hlY2tib3giO3ZhciBQNT1UKDQ1OTk2KTtmdW5jdGlvbiB5SyhsLGMsYSxmLGQsaCxtKXt2YXIgXz1oO2lmKHQwKF8pKXt2YXIgTz1tLm51bWVyaWNGb3JtYXQsWD1PJiZPLmN1bHR1cmV8fCItIixhZT1PJiZPLnBhdHRlcm4scGU9bS5jbGFzc05hbWV8fCIi''@;'; put 'put ''LGJlPXBlLmxlbmd0aD9wZS5zcGxpdCgiICIpOltdO2lmKHR5cGVvZiBYPCJ1IiYmIVA1Lmxhbmd1YWdlcygpW1hdKXt2YXIgeGU9WC5yZXBsYWNlKCItIiwiIiksVmU9UDUuYWxsTGFuZ3VhZ2VzP1A1LmFsbExhbmd1YWdlc1tYXTpQNVt4ZV07VmUmJlA1LnJlZ2lzdGVyTGFuZ3VhZ2UoVmUp''@;'; put 'put ''fVA1LnNldExhbmd1YWdlKFgpLF89UDUoXykuZm9ybWF0KGFlfHwiMCIpLGJlLmluZGV4T2YoImh0TGVmdCIpPDAmJmJlLmluZGV4T2YoImh0Q2VudGVyIik8MCYmYmUuaW5kZXhPZigiaHRSaWdodCIpPDAmJmJlLmluZGV4T2YoImh0SnVzdGlmeSIpPDAmJmJlLnB1c2goImh0UmlnaHQiKSxi''@;'; put 'put ''ZS5pbmRleE9mKCJodE51bWVyaWMiKTwwJiZiZS5wdXNoKCJodE51bWVyaWMiKSxtLmNsYXNzTmFtZT1iZS5qb2luKCIgIiksYy5kaXI9Imx0ciJ9VjQobCxjLGEsZixkLF8sbSl9ZnVuY3Rpb24gYksobCxjLGEsZixkLGgsbSl7VjQuYXBwbHkodGhpcyxbbCxjLGEsZixkLGgsbV0pO3ZhciBP''@;'; put 'put ''PW0uaGFzaFN5bWJvbHx8IioiLFg9IiI7X28oKG0uaGFzaExlbmd0aHx8Yy5pbm5lckhUTUwubGVuZ3RoKS0xLGZ1bmN0aW9uKCl7WCs9T30pLHY1KGMsWCl9ZnVuY3Rpb24gX0sobCxjLGEsZixkLGgsbSl7VjQuYXBwbHkodGhpcyxbbCxjLGEsZixkLGgsbV0pLGMuZGlyPSJsdHIifWZ1bmN0''@;'; put 'put ''aW9uIF9rKGwsYyl7dmFyIGE9bDtudWxsPT1hJiYoYT0iIiksdGhpcy5hbGxvd0VtcHR5JiYiIj09PWE/YyghMCk6dGhpcy5zdHJpY3QmJnRoaXMuc291cmNlPyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNvdXJjZT90aGlzLnNvdXJjZShhLGQyZShhLGMpKTpkMmUoYSxjKSh0aGlzLnNvdXJj''@;'; put 'put ''ZSk6YyghMCl9ZnVuY3Rpb24gZDJlKGwsYyl7dmFyIGE9bDtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBkPSExLGg9MCxtPWYubGVuZ3RoO2g8bTtoKyspaWYoYT09PWZbaF0pe2Q9ITA7YnJlYWt9YyhkKX19ZnVuY3Rpb24gaDJlKGwpe3ZhciBjPW5ldyBEYXRlKGwpO3JldHVybiBpc05h''@;'; put 'put ''TihuZXcgRGF0ZSgiIi5jb25jYXQobCwiVDAwOjAwIikpLmdldERhdGUoKSk/YzpuZXcgRGF0ZShjLmdldFRpbWUoKSs2ZTQqYy5nZXRUaW1lem9uZU9mZnNldCgpKX1mdW5jdGlvbiB3TChsLGMpe3ZhciBhPUwwZShYaGUsdGhpcy5pbnN0YW5jZSksZj1sLGQ9ITA7bnVsbD09ZiYmKGY9IiIp''@;'; put 'put ''O3ZhciBoPUtvKGYsdGhpcy5kYXRlRm9ybWF0fHxhLmRlZmF1bHREYXRlRm9ybWF0LCEwKS5pc1ZhbGlkKCksbT1LbyhuZXcgRGF0ZShmKSkuaXNWYWxpZCgpfHxoO2lmKHRoaXMuYWxsb3dFbXB0eSYmIiI9PT1mJiYobT0hMCxoPSEwKSxtfHwoZD0hMSksIW0mJmgmJihkPSEwKSxtJiYhaClp''@;'; put 'put ''ZighMD09PXRoaXMuY29ycmVjdEZvcm1hdCl7dmFyIF89ZnVuY3Rpb24gTWN0KGwsYyl7dmFyIGE9S28oaDJlKGwpKSxmPUtvKGwsYyksZD1sLnNlYXJjaCgvW0Etel0vZyk+LTE7cmV0dXJuKGEuaXNWYWxpZCgpJiZhLmZvcm1hdCgieCIpPT09Zi5mb3JtYXQoIngiKXx8IWYuaXNWYWxpZCgp''@;'; put 'put ''fHxkP2E6ZikuZm9ybWF0KGMpfShmLHRoaXMuZGF0ZUZvcm1hdCksTz10aGlzLmluc3RhbmNlLnRvVmlzdWFsUm93KHRoaXMucm93KSxYPXRoaXMuaW5zdGFuY2UudG9WaXN1YWxDb2x1bW4odGhpcy5jb2wpO3RoaXMuaW5zdGFuY2Uuc2V0RGF0YUF0Q2VsbChPLFgsXywiZGF0ZVZhbGlkYXRv''@;'; put 'put ''ciIpLGQ9ITB9ZWxzZSBkPSExO2MoZCl9ZnVuY3Rpb24gd0sobCxjKXt2YXIgYT1sO251bGw9PWEmJihhPSIiKSxjKCEoIXRoaXMuYWxsb3dFbXB0eXx8IiIhPT1hKXx8IiIhPT1hJiZ0MChsKSl9eUsuUkVOREVSRVJfVFlQRT0ibnVtZXJpYyIsYksuUkVOREVSRVJfVFlQRT0icGFzc3dvcmQi''@;'; put 'put ''LF9LLlJFTkRFUkVSX1RZUEU9InRpbWUiLF9rLlZBTElEQVRPUl9UWVBFPSJhdXRvY29tcGxldGUiLFQoNzc5NCksd0wuVkFMSURBVE9SX1RZUEU9ImRhdGUiLHdLLlZBTElEQVRPUl9UWVBFPSJudW1lcmljIjt2YXIgRWN0PVsiWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaIiwiWCIsIngiXTtm''@;'; put 'put ''dW5jdGlvbiBDTChsLGMpe3ZhciBhPXRoaXMudGltZUZvcm1hdHx8Img6bW06c3MgYSIsZj0hMCxkPWw7bnVsbD09PWQmJihkPSIiKSxkPS9eXGR7Myx9JC8udGVzdChkKT9wYXJzZUludChkLDEwKTpkO3ZhciBoPS9eXGR7MSwyfSQvLnRlc3QoZCk7aCYmKGQrPSI6MDAiKTt2YXIgbT1Lbyhk''@;'; put 'put ''LEVjdCwhMCkuaXNWYWxpZCgpP0tvKGQpOktvKGQsYSksXz1tLmlzVmFsaWQoKSxPPUtvKGQsYSwhMCkuaXNWYWxpZCgpJiYhaDtpZih0aGlzLmFsbG93RW1wdHkmJiIiPT09ZCYmKF89ITAsTz0hMCksX3x8KGY9ITEpLCFfJiZPJiYoZj0hMCksXyYmIU8paWYoITA9PT10aGlzLmNvcnJlY3RG''@;'; put 'put ''b3JtYXQpe3ZhciBYPW0uZm9ybWF0KGEpLGFlPXRoaXMuaW5zdGFuY2UudG9WaXN1YWxSb3codGhpcy5yb3cpLHBlPXRoaXMuaW5zdGFuY2UudG9WaXN1YWxDb2x1bW4odGhpcy5jb2wpO3RoaXMuaW5zdGFuY2Uuc2V0RGF0YUF0Q2VsbChhZSxwZSxYLCJ0aW1lVmFsaWRhdG9yIiksZj0hMH1l''@;'; put 'put ''bHNlIGY9ITE7YyhmKX1DTC5WQUxJREFUT1JfVFlQRT0idGltZSI7dmFyIE9jdD17Q0VMTF9UWVBFOiJhdXRvY29tcGxldGUiLGVkaXRvcjpvSyxyZW5kZXJlcjp6OSx2YWxpZGF0b3I6X2t9LEljdD17Q0VMTF9UWVBFOiJjaGVja2JveCIsZWRpdG9yOiRoZSxyZW5kZXJlcjpnS30sTGN0PXtD''@;'; put 'put ''RUxMX1RZUEU6ImRhdGUiLGVkaXRvcjpRaGUscmVuZGVyZXI6ejksdmFsaWRhdG9yOndMfSxGY3Q9e0NFTExfVFlQRToiZHJvcGRvd24iLGVkaXRvcjp1SyxyZW5kZXJlcjp6OSx2YWxpZGF0b3I6X2t9LE5jdD17Q0VMTF9UWVBFOiJoYW5kc29udGFibGUiLGVkaXRvcjp0SyxyZW5kZXJlcjp6''@;'; put 'put ''OX0sQmN0PXtDRUxMX1RZUEU6Im51bWVyaWMiLGVkaXRvcjpuMmUscmVuZGVyZXI6eUssdmFsaWRhdG9yOndLLGRhdGFUeXBlOiJudW1iZXIifSx6Y3Q9e0NFTExfVFlQRToicGFzc3dvcmQiLGVkaXRvcjppMmUscmVuZGVyZXI6YkssY29weWFibGU6ITF9LFpjdD17Q0VMTF9UWVBFOiJ0aW1l''@;'; put 'put ''IixlZGl0b3I6czJlLHJlbmRlcmVyOl9LLHZhbGlkYXRvcjpDTH07ZnVuY3Rpb24gd2sobCl7cmV0dXJuKHdrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7''@;'; put 'put ''cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gcDJlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gbTJlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYm''@;'; put 'put ''JihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxRY3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBRY3QobCl7dmFyIGM9ZnVuY3Rpb24gZTB0KGwsYyl7aWYoIm9iamVjdCIhPT13ayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lm''@;'; put 'put ''KHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT13ayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5n''@;'; put 'put ''Ok51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09d2soYyk/YzpTdHJpbmcoYyl9VCgzODE4Myk7dmFyIGcyZT1uZXcgTWFwKFtbInBsdWdpbiIsZnVuY3Rpb24gWiRlKGwpe3JldHVybiEhZU0obCl9XSxbImNlbGwtdHlwZSIsbmhlXSxbImVkaXRvciIsUjBlXSxbInJl''@;'; put 'put ''bmRlcmVyIixxMGVdLFsidmFsaWRhdG9yIixYMGVdXSksRjU9bmV3IFdlYWtNYXAsQ0s9W10sVWg9bnVsbCx2MmU9bmV3IFdlYWtTZXQsR2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPXRoaXM7KGZ1bmN0aW9uIFhjdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxmdW5jdGlvbiB0MHQobCxjKXsoZnVuY3Rpb24gbjB0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBl''@;'; put 'put ''bGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5hZGQobCl9KHRoaXMsdjJlKSxIaCh0aGlzLCJob3QiLGMse3dyaXRhYmxlOiExfSksRjUuc2V0KHRoaXMse2hvb2tzOnt9fSksVWg9bnVsbCx0aGlzLnBsdWdpbk5hbWU9bnVsbCx0aGlzLnBsdWdpbnNJbml0aWFsaXplZENh''@;'; put 'put ''bGxiYWNrcz1bXSx0aGlzLmlzUGx1Z2luc1JlYWR5PSExLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIixmdW5jdGlvbigpe3JldHVybiBhLm9uQWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQoKX0pLHRo''@;'; put 'put ''aXMuaG90LmFkZEhvb2soImFmdGVyVXBkYXRlU2V0dGluZ3MiLGZ1bmN0aW9uKGYpe3JldHVybiBhLm9uVXBkYXRlU2V0dGluZ3MoZil9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVJbml0IixmdW5jdGlvbigpe3JldHVybiBhLmluaXQoKX0pfXJldHVybiBmdW5jdGlvbiBKY3QobCxjLGEp''@;'; put 'put ''e2MmJm0yZShsLnByb3RvdHlwZSxjKSxhJiZtMmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMucGx1Z2luTmFtZT10aGlzLmhvdC5nZXRQbHVnaW5O''@;'; put 'put ''YW1lKHRoaXMpO3ZhciBmPXRoaXMuY29uc3RydWN0b3IuUExVR0lOX0RFUFMsZD1BcnJheS5pc0FycmF5KGYpP2Y6W107aWYoZC5sZW5ndGg+MCl7dmFyIGg9W107aWYoZC5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciBwZT1mdW5jdGlvbiBXY3QobCxjKXtyZXR1cm4gZnVuY3Rpb24gcWN0KGwp''@;'; put 'put ''e2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBLY3QobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSEx''@;'; put 'put ''O3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5''@;'; put 'put ''e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uICRjdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gcDJlKGwsYyk7''@;'; put 'put ''dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09''@;'; put 'put ''PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBwMmUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIEdjdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFu''@;'; put 'put ''Y2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KFguc3BsaXQoIjoiKSwyKSxiZT1wZVswXSx4ZT1wZVsxXTtpZighZzJlLmhhcyhiZSkpdGhyb3cgbmV3IEVycm9yKCdVbmtu''@;'; put 'put ''b3duIHBsdWdpbiBkZXBlbmRlbmN5IHR5cGUgIicuY29uY2F0KGJlLCciIHdhcyBmb3VuZC4nKSk7ZzJlLmdldChiZSkoeGUpfHxoLnB1c2goIiAtICIuY29uY2F0KHhlLCIgKCIpLmNvbmNhdChiZSwiKSIpKX0pLGgubGVuZ3RoPjApe3ZhciBtPVsiVGhlICIuY29uY2F0KHRoaXMucGx1Z2lu''@;'; put 'put ''TmFtZSwiIHBsdWdpbiByZXF1aXJlcyB0aGUgZm9sbG93aW5nIG1vZHVsZXM6XG4iKSwiIi5jb25jYXQoaC5qb2luKCJcbiIpLCJcbiIpXS5qb2luKCIiKTtDSy5wdXNoKG0pfX1pZihVaHx8KFVoPVFZKCkpLFVoLmluZGV4T2YoIlVuZG9SZWRvIik+PTAmJlVoLnNwbGljZShVaC5pbmRleE9m''@;'; put 'put ''KCJVbmRvUmVkbyIpLDEpLFVoLmluZGV4T2YodGhpcy5wbHVnaW5OYW1lKT49MCYmVWguc3BsaWNlKFVoLmluZGV4T2YodGhpcy5wbHVnaW5OYW1lKSwxKSx0aGlzLmhvdC5hZGRIb29rT25jZSgiYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiLGZ1bmN0aW9uKCl7YS5pc0VuYWJsZWQmJmEuaXNF''@;'; put 'put ''bmFibGVkKCkmJmEuZW5hYmxlUGx1Z2luKCl9KSwwPT09VWgubGVuZ3RoKXtpZihDSy5sZW5ndGg+MCl7dmFyIE89WyIiLmNvbmNhdChDSy5qb2luKCJcbiIpLCJcbiIpLCJZb3UgaGF2ZSB0byBpbXBvcnQgYW5kIHJlZ2lzdGVyIHRoZW0gbWFudWFsbHkuIl0uam9pbigiIik7dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKE8pfXRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIpfXRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmV2ZW50TWFuYWdlciYmdGhpcy5ldmVudE1hbmFnZXIuY2xlYXIoKSx0aGlzLmNsZWFySG9va3MoKSx0aGlzLmVuYWJsZWQ9ITF9fSx7a2V5OiJhZGRIb29rIix2YWx1ZTpmdW5jdGlvbihhLGYpe0Y1LmdldCh0aGlzKS5ob29rc1thXT1GNS5nZXQodGhpcykuaG9va3NbYV18''@;'; put 'put ''fFtdO3ZhciBkPUY1LmdldCh0aGlzKS5ob29rc1thXTt0aGlzLmhvdC5hZGRIb29rKGEsZiksZC5wdXNoKGYpLEY1LmdldCh0aGlzKS5ob29rc1thXT1kfX0se2tleToicmVtb3ZlSG9va3MiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXM7Um4oRjUuZ2V0KHRoaXMpLmhvb2tzW2FdfHxb''@;'; put 'put ''XSxmdW5jdGlvbihkKXtmLmhvdC5yZW1vdmVIb29rKGEsZCl9KX19LHtrZXk6ImNsZWFySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPUY1LmdldCh0aGlzKS5ob29rczttYShmLGZ1bmN0aW9uKGQsaCl7cmV0dXJuIGEucmVtb3ZlSG9va3MoaCl9KSxmLmxlbmd0aD0wfX0s''@;'; put 'put ''e2tleToiY2FsbE9uUGx1Z2luc1JlYWR5Iix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLmlzUGx1Z2luc1JlYWR5P2EoKTp0aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcy5wdXNoKGEpfX0se2tleToib25BZnRlclBsdWdpbnNJbml0aWFsaXplZCIsdmFsdWU6ZnVuY3Rpb24oKXtSbih0''@;'; put 'put ''aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcyxmdW5jdGlvbihhKXtyZXR1cm4gYSgpfSksdGhpcy5wbHVnaW5zSW5pdGlhbGl6ZWRDYWxsYmFja3MubGVuZ3RoPTAsdGhpcy5pc1BsdWdpbnNSZWFkeT0hMH19LHtrZXk6Im9uVXBkYXRlU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGEp''@;'; put 'put ''e3ZhciBmPWZ1bmN0aW9uIHIwdChsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gYX0odGhpcyx2MmUsbzB0KS5jYWxsKHRoaXMsYSk7dGhpcy5pc0VuYWJsZWQmJih0''@;'; put 'put ''aGlzLmVuYWJsZWQmJiF0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmRpc2FibGVQbHVnaW4oKSwhdGhpcy5lbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlZCYmdGhpcy5pc0VuYWJsZWQoKSYmZiYmdGhpcy51cGRhdGVQbHVnaW4oYSkpfX0s''@;'; put 'put ''e2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmV2ZW50TWFuYWdlciYmdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLHRoaXMuY2xlYXJIb29rcygpLG1hKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''ZixkKXsiaG90IiE9PWQmJihhW2RdPW51bGwpfSksZGVsZXRlIHRoaXMudCxkZWxldGUgdGhpcy5ob3R9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJiYXNlIn19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuUExVR0lO''@;'; put 'put ''X0tFWV19fV0pLGx9KCk7ZnVuY3Rpb24gbzB0KGwpe2lmKCFsKXJldHVybiExO3ZhciBjPXRoaXMuY29uc3RydWN0b3IuU0VUVElOR19LRVlTO2lmKCJib29sZWFuIj09dHlwZW9mIGMpcmV0dXJuIGM7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspaWYodm9pZCAwIT09bFtjW2FdXSlyZXR1''@;'; put 'put ''cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBDayhsKXtyZXR1cm4oQ2s9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB5MmUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7''@;'; put 'put ''YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBiMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLGgwdChmLmtleSksZil9fWZ1bmN0aW9uIGgwdChsKXt2YXIgYz1mdW5jdGlvbiBwMHQobCxjKXtpZigib2JqZWN0IiE9PUNrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxs''@;'; put 'put ''KGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUNrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7''@;'; put 'put ''cmV0dXJuInN5bWJvbCI9PT1DayhjKT9jOlN0cmluZyhjKX12YXIgbTB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24gZjB0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9''@;'; put 'put ''KSh0aGlzLGwpLHRoaXMuaG90PWMsdGhpcy5jb250YWluZXI9bnVsbCx0aGlzLmluamVjdGVkPSExLHRoaXMucm93cz1bXSx0aGlzLmNvbHVtbnM9W10sdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5zZXR0aW5ncz17dXNlSGVhZGVyczohMH19cmV0dXJuIGZ1bmN0aW9uIGQwdChsLGMsYSl7YyYm''@;'; put 'put ''YjJlKGwucHJvdG90eXBlLGMpLGEmJmIyZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJhZGRSb3ciLHZhbHVlOmZ1bmN0aW9uKGEsZil7aWYodGhpcy5jb2x1bW5zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkRvZXNu''@;'; put 'put ''J3Qgc3VwcG9ydCBtdWx0aS1kaW1lbnNpb25hbCB0YWJsZSIpO3RoaXMucm93cy5sZW5ndGh8fCh0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5lcih0aGlzLmhvdC5yb290RWxlbWVudC5jbGFzc05hbWUpKTt2YXIgZD17cm93OmF9O3RoaXMucm93cy5wdXNoKGQpLHRoaXMuc2Ft''@;'; put 'put ''cGxlcz1mLHRoaXMudGFibGU9dGhpcy5jcmVhdGVUYWJsZSh0aGlzLmhvdC50YWJsZS5jbGFzc05hbWUpLHRoaXMudGFibGUuY29sR3JvdXAuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDb2xHcm91cHNDb2woKSksdGhpcy50YWJsZS50ci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVJvdyhhKSks''@;'; put 'put ''dGhpcy5jb250YWluZXIuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMudGFibGUuZnJhZ21lbnQpLGQudGFibGU9dGhpcy50YWJsZS50YWJsZX19LHtrZXk6ImFkZENvbHVtbkhlYWRlcnNSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKG51bGwhPXRoaXMuaG90LmdldENvbEhlYWRlcigwKSl7''@;'; put 'put ''dmFyIGQ9e3JvdzotMX07dGhpcy5yb3dzLnB1c2goZCksdGhpcy5jb250YWluZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSx0aGlzLnNhbXBsZXM9YSx0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NO''@;'; put 'put ''YW1lKSx0aGlzLnRhYmxlLmNvbEdyb3VwLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sR3JvdXBzQ29sKCkpLHRoaXMuYXBwZW5kQ29sdW1uSGVhZGVyc1JvdygpLHRoaXMuY29udGFpbmVyLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlLmZyYWdtZW50KSxkLnRhYmxlPXRoaXMu''@;'; put 'put ''dGFibGUudGFibGV9fX0se2tleToiYWRkQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihhLGYpe2lmKHRoaXMucm93cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJEb2Vzbid0IHN1cHBvcnQgbXVsdGktZGltZW5zaW9uYWwgdGFibGUiKTt0aGlzLmNvbHVtbnMubGVuZ3RofHwodGhpcy5jb250YWlu''@;'; put 'put ''ZXI9dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQuY2xhc3NOYW1lKSk7dmFyIGQ9e2NvbDphfTt0aGlzLmNvbHVtbnMucHVzaChkKSx0aGlzLnNhbXBsZXM9Zix0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlz''@;'; put 'put ''LmdldFNldHRpbmcoInVzZUhlYWRlcnMiKSYmbnVsbCE9PXRoaXMuaG90LmdldENvbEhlYWRlcihhKSYmdGhpcy5ob3Qudmlldy5hcHBlbmRDb2xIZWFkZXIoYSx0aGlzLnRhYmxlLnRoKSx0aGlzLnRhYmxlLnRCb2R5LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sKGEpKSx0aGlzLmNvbnRh''@;'; put 'put ''aW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCksZC50YWJsZT10aGlzLnRhYmxlLnRhYmxlfX0se2tleToiZ2V0SGVpZ2h0cyIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5pbmplY3RlZHx8dGhpcy5pbmplY3RUYWJsZSgpLFJuKHRoaXMucm93cyxmdW5jdGlv''@;'; put 'put ''bihmKXthKGYucm93LGNzKGYudGFibGUpLTEpfSl9fSx7a2V5OiJnZXRXaWR0aHMiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuaW5qZWN0ZWR8fHRoaXMuaW5qZWN0VGFibGUoKSxSbih0aGlzLmNvbHVtbnMsZnVuY3Rpb24oZil7dmFyIGQ9Zi50YWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo''@;'; put 'put ''KTthKGYuY29sLE1hdGguY2VpbChkLndpZHRoKSl9KX19LHtrZXk6InNldFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnNldHRpbmdzPWF9fSx7a2V5OiJzZXRTZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihhLGYpe3RoaXMuc2V0dGluZ3N8fCh0aGlzLnNldHRpbmdzPXt9KSx0aGlz''@;'; put 'put ''LnNldHRpbmdzW2FdPWZ9fSx7a2V5OiJnZXRTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc319LHtrZXk6ImdldFNldHRpbmciLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNldHRpbmdzP3RoaXMuc2V0dGluZ3NbYV06bnVsbH19LHtrZXk6ImNy''@;'; put 'put ''ZWF0ZUNvbEdyb3Vwc0NvbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdGhpcy5ob3QuaGFzUm93SGVhZGVycygpJiZmLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sRWxlbWVudCgt''@;'; put 'put ''MSkpLHRoaXMuc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe1JuKGQuc3RyaW5ncyxmdW5jdGlvbihoKXtmLmFwcGVuZENoaWxkKGEuY3JlYXRlQ29sRWxlbWVudChoLmNvbCkpfSl9KSxmfX0se2tleToiY3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9dGhpcy5o''@;'; put 'put ''b3Qucm9vdERvY3VtZW50LGg9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbT1kLmNyZWF0ZUVsZW1lbnQoInRoIik7cmV0dXJuIHRoaXMuaG90Lmhhc1Jvd0hlYWRlcnMoKSYmKHRoaXMuaG90LnZpZXcuYXBwZW5kUm93SGVhZGVyKGEsbSksaC5hcHBlbmRDaGlsZChtKSksdGhpcy5zYW1w''@;'; put 'put ''bGVzLmZvckVhY2goZnVuY3Rpb24oXyl7Um4oXy5zdHJpbmdzLGZ1bmN0aW9uKE8pe3ZhciBYPU8uY29sLGFlPWYuaG90LmdldENlbGxNZXRhKGEsWCk7YWUuY29sPVgsYWUucm93PWE7dmFyIHBlPWYuaG90LmdldENlbGxSZW5kZXJlcihhZSksYmU9ZC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2Jl''@;'; put 'put ''LnNldEF0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiLDEpLHBlKGYuaG90LGJlLGEsWCxmLmhvdC5jb2xUb1Byb3AoWCksTy52YWx1ZSxhZSksaC5hcHBlbmRDaGlsZChiZSl9KX0pLGh9fSx7a2V5OiJhcHBlbmRDb2x1bW5IZWFkZXJzUm93Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj10''@;'; put 'put ''aGlzLmhvdC5yb290RG9jdW1lbnQsZD1mLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxoPVtdO2lmKHRoaXMuaG90Lmhhc1Jvd0hlYWRlcnMoKSl7dmFyIG09Zi5jcmVhdGVFbGVtZW50KCJ0aCIpO2gucHVzaChbLTEsbV0pLGQuYXBwZW5kQ2hpbGQobSl9dGhpcy5zYW1wbGVzLmZvckVhY2go''@;'; put 'put ''ZnVuY3Rpb24oXyl7Um4oXy5zdHJpbmdzLGZ1bmN0aW9uKE8pe3ZhciBYPU8uY29sLGFlPWYuY3JlYXRlRWxlbWVudCgidGgiKTtoLnB1c2goW1gsYWVdKSxkLmFwcGVuZENoaWxkKGFlKX0pfSksdGhpcy50YWJsZS50SGVhZC5hcHBlbmRDaGlsZChkKSxSbihoLGZ1bmN0aW9uKF8pe3ZhciBP''@;'; put 'put ''PWZ1bmN0aW9uIGEwdChsLGMpe3JldHVybiBmdW5jdGlvbiBjMHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIHUwdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9y''@;'; put 'put ''Il07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0''@;'; put 'put ''aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gczB0KGwsYyl7aWYo''@;'; put 'put ''bCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiB5MmUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9''@;'; put 'put ''PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIHkyZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gbDB0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBh''@;'; put 'put ''dHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oXywyKTthLmhvdC52aWV3LmFwcGVuZENvbEhlYWRl''@;'; put 'put ''cihPWzBdLE9bMV0pfSl9fSx7a2V5OiJjcmVhdGVDb2wiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZD10aGlzLmhvdC5yb290RG9jdW1lbnQsaD1kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdGhpcy5zYW1wbGVzLmZvckVhY2goZnVuY3Rpb24obSl7Um4obS5zdHJp''@;'; put 'put ''bmdzLGZ1bmN0aW9uKF8pe3ZhciBPPV8ucm93LFg9Zi5ob3QuZ2V0Q2VsbE1ldGEoTyxhKTtYLmNvbD1hLFgucm93PU87dmFyIGFlPWYuaG90LmdldENlbGxSZW5kZXJlcihYKSxwZT1kLmNyZWF0ZUVsZW1lbnQoInRkIiksYmU9ZC5jcmVhdGVFbGVtZW50KCJ0ciIpO3BlLnNldEF0dHJpYnV0''@;'; put 'put ''ZSgiZ2hvc3QtdGFibGUiLDEpLGFlKGYuaG90LHBlLE8sYSxmLmhvdC5jb2xUb1Byb3AoYSksXy52YWx1ZSxYKSxiZS5hcHBlbmRDaGlsZChwZSksaC5hcHBlbmRDaGlsZChiZSl9KX0pLGh9fSx7a2V5OiJjbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJvd3MubGVuZ3RoPTAsdGhpcy5y''@;'; put 'put ''b3dzWy0xXT12b2lkIDAsdGhpcy5jb2x1bW5zLmxlbmd0aD0wLHRoaXMuc2FtcGxlcyYmdGhpcy5zYW1wbGVzLmNsZWFyKCksdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5yZW1vdmVUYWJsZSgpfX0se2tleToiaW5qZWN0VGFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pbmplY3RlZHx8KCgo''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwpfHx0aGlzLmhvdC5yb290RWxlbWVudCkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIuZnJhZ21lbnQpLHRoaXMuaW5qZWN0ZWQ9ITApfX0se2tleToicmVtb3ZlVGFibGUiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7dGhpcy5pbmplY3RlZCYmdGhpcy5jb250YWluZXIuY29udGFpbmVyLnBhcmVudE5vZGUmJih0aGlzLmNvbnRhaW5lci5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lci5jb250YWluZXIpLHRoaXMuY29udGFpbmVyPW51bGwsdGhpcy5p''@;'; put 'put ''bmplY3RlZD0hMSl9fSx7a2V5OiJjcmVhdGVDb2xFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sIik7cmV0dXJuIGYuc3R5bGUud2lkdGg9IiIuY29uY2F0KHRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuZ2V0''@;'; put 'put ''U3RyZXRjaGVkQ29sdW1uV2lkdGgoYSksInB4IiksZn19LHtrZXk6ImNyZWF0ZVRhYmxlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIixmPXRoaXMuaG90LnJvb3REb2N1bWVudCxkPWYuY3Jl''@;'; put 'put ''YXRlRG9jdW1lbnRGcmFnbWVudCgpLGg9Zi5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLG09Zi5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpLF89Zi5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpLE89Zi5jcmVhdGVFbGVtZW50KCJjb2xncm91cCIpLFg9Zi5jcmVhdGVFbGVtZW50KCJ0ciIpLGFlPWYuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgidGgiKTtyZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkmJmguYXBwZW5kQ2hpbGQoTyksdGhpcy5pc0hvcml6b250YWwoKSYmKFguYXBwZW5kQ2hpbGQoYWUpLG0uYXBwZW5kQ2hpbGQoWCksaC5zdHlsZS50YWJsZUxheW91dD0iYXV0byIsaC5zdHlsZS53aWR0aD0iYXV0byIp''@;'; put 'put ''LGguYXBwZW5kQ2hpbGQobSksdGhpcy5pc1ZlcnRpY2FsKCkmJl8uYXBwZW5kQ2hpbGQoWCksaC5hcHBlbmRDaGlsZChfKSxnaShoLGEpLGQuYXBwZW5kQ2hpbGQoaCkse2ZyYWdtZW50OmQsdGFibGU6aCx0SGVhZDptLHRCb2R5Ol8sY29sR3JvdXA6Tyx0cjpYLHRoOmFlfX19LHtrZXk6ImNy''@;'; put 'put ''ZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsZj10aGlzLmhvdC5yb290RG9jdW1lbnQsZD1mLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxoPWYuY3JlYXRlRWxlbWVu''@;'; put 'put ''dCgiZGl2Iik7cmV0dXJuIGdpKGgsImh0R2hvc3RUYWJsZSBodEF1dG9TaXplICIuY29uY2F0KGEudHJpbSgpKSksZC5hcHBlbmRDaGlsZChoKSx7ZnJhZ21lbnQ6ZCxjb250YWluZXI6aH19fSx7a2V5OiJpc1ZlcnRpY2FsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMucm93cy5s''@;'; put 'put ''ZW5ndGh8fHRoaXMuY29sdW1ucy5sZW5ndGgpfX0se2tleToiaXNIb3Jpem9udGFsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuY29sdW1ucy5sZW5ndGh8fHRoaXMucm93cy5sZW5ndGgpfX1dKSxsfSgpO2NvbnN0IFNLPW0wdDtmdW5jdGlvbiBTayhsKXtyZXR1cm4oU2s9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBfMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFi''@;'; put 'put ''bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHcyZShmLmtleSksZil9fWZ1bmN0aW9uIHcyZShsKXt2YXIgYz1mdW5jdGlvbiBiMHQobCxjKXtpZigib2JqZWN0IiE9PVNrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09''@;'; put 'put ''YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVNrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShs''@;'; put 'put ''KX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1TayhjKT9jOlN0cmluZyhjKX12YXIgXzB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24gdjB0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuc2FtcGxlcz1udWxsLHRoaXMuZGF0YUZhY3Rvcnk9Yyx0aGlzLmN1c3RvbVNhbXBsZUNvdW50PW51bGwsdGhpcy5hbGxvd0R1cGxpY2F0ZXM9ITF9cmV0dXJuIGZ1bmN0aW9uIHkwdChsLGMsYSl7YyYmXzJlKGwucHJvdG90eXBlLGMpLGEm''@;'; put 'put ''Jl8yZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJnZXRTYW1wbGVDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXN0b21TYW1wbGVDb3VudD90aGlzLmN1c3RvbVNhbXBsZUNvdW50OmwuU0FNUExF''@;'; put 'put ''X0NPVU5UfX0se2tleToic2V0U2FtcGxlQ291bnQiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuY3VzdG9tU2FtcGxlQ291bnQ9YX19LHtrZXk6InNldEFsbG93RHVwbGljYXRlcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5hbGxvd0R1cGxpY2F0ZXM9YX19LHtrZXk6ImdlbmVyYXRlUm93U2Ft''@;'; put 'put ''cGxlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5nZW5lcmF0ZVNhbXBsZXMoInJvdyIsZixhKX19LHtrZXk6ImdlbmVyYXRlQ29sdW1uU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5nZW5lcmF0ZVNhbXBsZXMoImNvbCIsZixhKX19LHtrZXk6Imdl''@;'; put 'put ''bmVyYXRlU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXMsbT1uZXcgTWFwLF89Im51bWJlciI9PXR5cGVvZiBkP3tmcm9tOmQsdG86ZH06ZDtyZXR1cm4gX28oXy5mcm9tLF8udG8sZnVuY3Rpb24oYWUpe3ZhciBwZT1oLmdlbmVyYXRlU2FtcGxlKGEsZixhZSk7bS5z''@;'; put 'put ''ZXQoYWUscGUpfSksbX19LHtrZXk6ImdlbmVyYXRlU2FtcGxlIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9dGhpcztpZigicm93IiE9PWEmJiJjb2wiIT09YSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHNhbXBsZSB0eXBlIik7dmFyIG09bmV3IE1hcCxfPSJyb3ciPT09YT8i''@;'; put 'put ''Y29sIjoicm93IixPPVtdO3JldHVybiBfbyhmLmZyb20sZi50byxmdW5jdGlvbihYKXt2YXIgVmUsYWU9InJvdyI9PT1hP2guZGF0YUZhY3RvcnkoZCxYKTpoLmRhdGFGYWN0b3J5KFgsZCkscGU9YWUudmFsdWUsYmU9YWUuYnVuZGxlU2VlZCx4ZT0ic3RyaW5nIj09dHlwZW9mIGJlJiZiZS5s''@;'; put 'put ''ZW5ndGg+MDtWZT14ZT9iZTpwYShwZSk/IiIuY29uY2F0KE9iamVjdC5rZXlzKHBlKS5sZW5ndGgpOkFycmF5LmlzQXJyYXkocGUpPyIiLmNvbmNhdChwZS5sZW5ndGgpOiIiLmNvbmNhdChNcyhwZSkubGVuZ3RoKSxtLmhhcyhWZSl8fG0uc2V0KFZlLHtuZWVkZWQ6aC5nZXRTYW1wbGVDb3Vu''@;'; put 'put ''dCgpLHN0cmluZ3M6W119KTt2YXIgWmU9bS5nZXQoVmUpO1plLm5lZWRlZCYmKCEoTy5pbmRleE9mKHBlKT4tMSl8fGguYWxsb3dEdXBsaWNhdGVzfHx4ZSkmJihaZS5zdHJpbmdzLnB1c2goZnVuY3Rpb24gZzB0KGwsYyxhKXtyZXR1cm4oYz13MmUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KHt2YWx1ZTpwZX0sXyxYKSksTy5wdXNoKHBlKSxaZS5uZWVkZWQtPTEpfSksbX19XSxbe2tleToiU0FNUExFX0NPVU5UIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''M319XSksbH0oKTtjb25zdCBDMmU9XzB0O2Z1bmN0aW9uIFk5KGwpe3JldHVybihZOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFMyZShsLGMpe3JldHVybiBmdW5jdGlvbiBNMHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8''@;'; put 'put ''fGZ1bmN0aW9uIFMwdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1j''@;'; put 'put ''KXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5y''@;'; put 'put ''ZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gQzB0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBNMmUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh''@;'; put 'put ''bGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFt''@;'; put 'put ''cGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIE0yZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gdzB0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24t''@;'; put 'put ''YXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBNMmUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4g''@;'; put 'put ''Zn1mdW5jdGlvbiBrMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHgwdChm''@;'; put 'put ''LmtleSksZil9fWZ1bmN0aW9uIHgwdChsKXt2YXIgYz1mdW5jdGlvbiBBMHQobCxjKXtpZigib2JqZWN0IiE9PVk5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigi''@;'; put 'put ''b2JqZWN0IiE9PVk5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1ZOShj''@;'; put 'put ''KT9jOlN0cmluZyhjKX1mdW5jdGlvbiBINSgpe3JldHVybiBINT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gVDB0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eS5jYWxsKGwsYykmJm51bGwhPT0obD12MyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LEg1LmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNSyhsLGMpe3JldHVybihNSz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEUyZShsKXtpZih2b2lkIDA9PT1s''@;'; put 'put ''KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gdjMobCl7cmV0dXJuKHYzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Yu''@;'; put 'put ''YmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIpO3ZhciBNaz0iYXV0b0NvbHVtblNpemUiLGtLPW5ldyBXZWFrTWFwLEYw''@;'; put 'put ''dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gTzB0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0''@;'; put 'put ''ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJk1LKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gRDB0KGwpe3ZhciBj''@;'; put 'put ''PWZ1bmN0aW9uIFIwdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2Yu''@;'; put 'put ''Y2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXYzKGwpO2lmKGMpe3ZhciBoPXYzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVu''@;'; put 'put ''dHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBJMHQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1ZOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gRTJlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVuY3Rpb24gazB0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksZD1jLmNhbGwodGhpcyxmKSxrSy5zZXQoRTJlKGQpLHtjYWNoZWRDb2x1bW5IZWFkZXJzOltdfSksZC5naG9zdFRhYmxlPW5ldyBTSyhkLmhvdCksZC5zYW1wbGVzR2VuZXJhdG9yPW5ldyBDMmUoZnVuY3Rpb24oaCxt''@;'; put 'put ''KXt2YXIgXz1kLmhvdC5nZXRDZWxsTWV0YShoLG0pLE89IiI7Xy5zcGFubmVkfHwoTz1kLmhvdC5nZXREYXRhQXRDZWxsKGgsbSkpO3ZhciBYPSIiO3JldHVybiBkLmhvdC5oYXNIb29rKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiKSYmKFg9ZC5ob3QucnVuSG9va3MoIm1vZGlmeUF1dG9D''@;'; put 'put ''b2x1bW5TaXplU2VlZCIsWCxfLE8pKSx7dmFsdWU6TyxidW5kbGVTZWVkOlh9fSksZC5maXJzdENhbGN1bGF0aW9uPSEwLGQuaW5Qcm9ncmVzcz0hMSxkLm1lYXN1cmVkQ29sdW1ucz0wLGQuY29sdW1uV2lkdGhzTWFwPW5ldyBGNCxkLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1h''@;'; put 'put ''cCgiYXV0b0NvbHVtblNpemUiLGQuY29sdW1uV2lkdGhzTWFwKSxkLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsZnVuY3Rpb24oaCxtLF8pe3JldHVybiBkLm9uQmVmb3JlQ29sdW1uUmVzaXplKGgsbSxfKX0pLGR9cmV0dXJuIGZ1bmN0aW9uIEUwdChsLGMsYSl7YyYmazJlKGwucHJv''@;'; put 'put ''dG90eXBlLGMpLGEmJmsyZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITEhPT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW01rXSYmIXRoaXMuaG90LmdldFNl''@;'; put 'put ''dHRpbmdzKCkuY29sV2lkdGhzfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtNa107aCYmbnVsbCE9aC51c2VIZWFkZXJzJiZ0aGlzLmdob3N0VGFibGUuc2V0U2V0''@;'; put 'put ''dGluZygidXNlSGVhZGVycyIsaC51c2VIZWFkZXJzKSx0aGlzLnNldFNhbXBsaW5nT3B0aW9ucygpLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyTG9hZERhdGEuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVD''@;'; put 'put ''aGFuZ2VSZW5kZXIiLGZ1bmN0aW9uKG0pe3JldHVybiBkLm9uQmVmb3JlQ2hhbmdlKG0pfSksdGhpcy5hZGRIb29rKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbkFmdGVyRm9ybXVsYXNWYWx1ZXNVcGRhdGUobSl9KSx0aGlzLmFkZEhvb2soImJl''@;'; put 'put ''Zm9yZVZpZXdSZW5kZXIiLGZ1bmN0aW9uKG0pe3JldHVybiBkLm9uQmVmb3JlVmlld1JlbmRlcihtKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29sV2lkdGgiLGZ1bmN0aW9uKG0sXyl7cmV0dXJuIGQuZ2V0Q29sdW1uV2lkdGgoXyxtKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBkLm9uQWZ0ZXJJbml0KCl9KSxINSh2MyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5maW5kQ29sdW1uc1doZXJlSGVhZGVyV2FzQ2hhbmdl''@;'; put 'put ''ZCgpO2QubGVuZ3RoJiYodGhpcy5jbGVhckNhY2hlKGQpLHRoaXMuY2FsY3VsYXRlVmlzaWJsZUNvbHVtbnNXaWR0aCgpKSxINSh2MyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGQ9dGhpcztINSh2MyhhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5hZGRIb29rKCJiZWZvcmVDb2x1bW5SZXNpemUiLGZ1bmN0aW9uKGgsbSxfKXtyZXR1cm4gZC5vbkJlZm9yZUNvbHVtblJlc2l6ZShoLG0sXyl9KX19LHtrZXk6ImNhbGN1bGF0''@;'; put 'put ''ZVZpc2libGVDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5ob3QuY291bnRSb3dzKCkpe3ZhciBoPXRoaXMuaG90LnJlbmRlckNhbGwsbT10aGlzLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpLF89dGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpOy0xPT09bXx8LTE9PT1f''@;'; put 'put ''fHx0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aCh7ZnJvbTptLHRvOl99LHZvaWQgMCxoKX19fSx7a2V5OiJjYWxjdWxhdGVDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50''@;'; put 'put ''c1swXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Q29scygpLTF9LG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sXz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1syXSYmYXJndW1lbnRzWzJdLE89Im51bWJlciI9PXR5cGVvZiBoP3tmcm9tOmgsdG86aH06aCxYPSJudW1iZXIiPT10eXBlb2YgbT97ZnJvbTptLHRvOm19Om07X28oTy5mcm9tLE8udG8sZnVuY3Rpb24oYWUpe3ZhciBwZT1kLmhvdC50b1BoeXNpY2FsQ29sdW1uKGFlKTtudWxs''@;'; put 'put ''PT09cGUmJihwZT1hZSksKF98fG51bGw9PT1kLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgocGUpJiYhZC5ob3QuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKHBlKSkmJlJuKGQuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZUNvbHVtblNhbXBsZXMoYWUsWCksZnVuY3Rpb24oeGUp''@;'; put 'put ''e3ZhciBWZT1TMmUoeGUsMik7cmV0dXJuIGQuZ2hvc3RUYWJsZS5hZGRDb2x1bW4oVmVbMF0sVmVbMV0pfSl9KSx0aGlzLmdob3N0VGFibGUuY29sdW1ucy5sZW5ndGgmJih0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe2QuZ2hvc3RUYWJsZS5nZXRXaWR0aHMoZnVuY3Rpb24o''@;'; put 'put ''YWUscGUpe3ZhciBiZT1kLmhvdC50b1BoeXNpY2FsQ29sdW1uKGFlKTtkLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoYmUscGUpfSl9LCEwKSx0aGlzLm1lYXN1cmVkQ29sdW1ucz1PLnRvKzEsdGhpcy5naG9zdFRhYmxlLmNsZWFuKCkpfX0se2tleToiY2FsY3VsYXRlQWxsQ29s''@;'; put 'put ''dW1uc1dpZHRoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudFJvd3MoKS0xfSxtPTAsXz10aGlzLmhvdC5jb3VudENvbHMoKS0xLE89bnVs''@;'; put 'put ''bDt0aGlzLmluUHJvZ3Jlc3M9ITA7dmFyIGFlPXRoaXMuZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQoKTt0aGlzLmZpcnN0Q2FsY3VsYXRpb24mJmFlPj0wJiYodGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206MCx0bzphZX0saCksdGhpcy5maXJzdENhbGN1bGF0aW9uPSExLG09YWUr''@;'; put 'put ''MSksbTxfP2Z1bmN0aW9uIHBlKCl7aWYoIWQuaG90KXJldHVybiBMUyhPKSx2b2lkKGQuaW5Qcm9ncmVzcz0hMSk7ZC5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206bSx0bzpNYXRoLm1pbihtK2EuQ0FMQ1VMQVRJT05fU1RFUCxfKX0saCksKG09bSthLkNBTENVTEFUSU9OX1NURVArMSk8''@;'; put 'put ''Xz9PPUJJKHBlKTooTFMoTyksZC5pblByb2dyZXNzPSExLGQuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCkpfSgpOnRoaXMuaW5Qcm9ncmVzcz0hMX19LHtrZXk6InNldFNhbXBsaW5nT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW01r''@;'; put 'put ''XSxoPWQmJlNzKGQsInNhbXBsaW5nUmF0aW8iKT9kLnNhbXBsaW5nUmF0aW86dm9pZCAwLG09ZCYmU3MoZCwiYWxsb3dTYW1wbGVEdXBsaWNhdGVzIik/ZC5hbGxvd1NhbXBsZUR1cGxpY2F0ZXM6dm9pZCAwO2gmJiFpc05hTihoKSYmdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldFNhbXBsZUNv''@;'; put 'put ''dW50KHBhcnNlSW50KGgsMTApKSxtJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0QWxsb3dEdXBsaWNhdGVzKG0pfX0se2tleToicmVjYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QudmlldyYmdGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5pc1Zp''@;'; put 'put ''c2libGUoKSYmKHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCkpfX0se2tleToiZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtNa10saD1hLlNZTkNfQ0FMQ1VMQVRJT05f''@;'; put 'put ''TElNSVQsbT10aGlzLmhvdC5jb3VudENvbHMoKS0xO3JldHVybiBwYShkKSYmKGdZKGg9ZC5zeW5jTGltaXQpP2g9WVkobSxoKTpoPj49MCksTWF0aC5taW4oaCxtKX19LHtrZXk6ImdldENvbHVtbldpZHRoIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgbT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLF89YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gdm9pZCAwPT09XyYmKF89dGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMu''@;'; put 'put ''aG90LnRvUGh5c2ljYWxDb2x1bW4oZCkpLG0mJiJudW1iZXIiPT10eXBlb2YgXyYmKF89TWF0aC5tYXgoXyxUVy5ERUZBVUxUX1dJRFRIKSkpLF99fSx7a2V5OiJnZXRGaXJzdFZpc2libGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3Qudmlldy5fd3Q7aWYoZC53dFZp''@;'; put 'put ''ZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcil7dmFyIGg9ZC53dFRhYmxlLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpO2lmKC0xIT09aClyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChoKX1pZihkLnd0Vmlld3BvcnQu''@;'; put 'put ''Y29sdW1uc1JlbmRlckNhbGN1bGF0b3Ipe3ZhciBtPWQud3RUYWJsZS5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCk7aWYoLTEhPT1tKXJldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KG0pfXJldHVybi0xfX0se2tleToiZ2V0TGFz''@;'; put 'put ''dFZpc2libGVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3Qudmlldy5fd3Q7aWYoZC53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcil7dmFyIGg9ZC53dFRhYmxlLmdldExhc3RWaXNpYmxlQ29sdW1uKCk7aWYoLTEhPT1oKXJldHVybiB0aGlzLmhvdC5j''@;'; put 'put ''b2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGgpfWlmKGQud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcil7dmFyIG09ZC53dFRhYmxlLmdldExhc3RSZW5kZXJlZENvbHVtbigpO2lmKC0xIT09bSlyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChtKX1yZXR1cm4tMX19LHtrZXk6ImZpbmRDb2x1bW5zV2hlcmVIZWFkZXJXYXNDaGFuZ2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LmdldENvbEhlYWRlcigpLG09a0suZ2V0KHRoaXMpLmNhY2hlZENvbHVt''@;'; put 'put ''bkhlYWRlcnM7cmV0dXJuIFBzKGQsZnVuY3Rpb24oTyxYLGFlKXt2YXIgcGU9bS5sZW5ndGg7cmV0dXJuKHBlLTE8YWV8fG1bYWVdIT09WCkmJk8ucHVzaChhZSkscGUtMTxhZT9tLnB1c2goWCk6bVthZV09WCxPfSxbXSl9fSx7a2V5OiJjbGVhckNhY2hlIix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBkPXRoaXMsaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W107aC5sZW5ndGg/dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtSbihoLGZ1bmN0aW9uKG0pe2QuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleCht''@;'; put 'put ''LG51bGwpfSl9LCEwKTp0aGlzLmNvbHVtbldpZHRoc01hcC5jbGVhcigpfX0se2tleToiaXNOZWVkUmVjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISFEMSh0aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZXMoKS5zbGljZSgwLHRoaXMubWVhc3VyZWRDb2x1bW5zKSxmdW5j''@;'; put 'put ''dGlvbihkKXtyZXR1cm4gbnVsbD09PWR9KS5sZW5ndGh9fSx7a2V5OiJvbkJlZm9yZVZpZXdSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jYWxjdWxhdGVWaXNpYmxlQ29sdW1uc1dpZHRoKCksdGhpcy5pc05lZWRSZWNhbGN1bGF0ZSgpJiYhdGhpcy5pblByb2dyZXNzJiZ0aGlzLmNh''@;'; put 'put ''bGN1bGF0ZUFsbENvbHVtbnNXaWR0aCgpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5ob3Qudmlldz90aGlzLnJlY2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCk6c2V0VGltZW91dChmdW5jdGlvbigpe2QuaG90JiZkLnJlY2FsY3Vs''@;'; put 'put ''YXRlQWxsQ29sdW1uc1dpZHRoKCl9LDApfX0se2tleToib25CZWZvcmVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT1oYShkLGZ1bmN0aW9uKF8pe3ZhciBPPVMyZShfLDIpO3JldHVybiBoLmhvdC50b1BoeXNpY2FsQ29sdW1uKGguaG90LnByb3BUb0NvbChPWzFdKSl9''@;'; put 'put ''KTt0aGlzLmNsZWFyQ2FjaGUoQXJyYXkuZnJvbShuZXcgU2V0KG0pKSl9fSx7a2V5OiJvbkJlZm9yZUNvbHVtblJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPWQ7cmV0dXJuIG0mJih0aGlzLmNhbGN1bGF0ZUNvbHVtbnNXaWR0aChoLHZvaWQgMCwhMCksXz10aGlzLmdldENv''@;'; put 'put ''bHVtbldpZHRoKGgsdm9pZCAwLCExKSksX319LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe2tLLmdldCh0aGlzKS5jYWNoZWRDb2x1bW5IZWFkZXJzPXRoaXMuaG90LmdldENvbEhlYWRlcigpfX0se2tleToib25BZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihkKXt2YXIgbT1oYShEMShkLGZ1bmN0aW9uKF8pe3ZhciBPO3JldHVybiBpbyhudWxsPT09KE89Xy5hZGRyZXNzKXx8dm9pZCAwPT09Tz92b2lkIDA6Ty5jb2wpfSksZnVuY3Rpb24oXyl7cmV0dXJuIF8uYWRkcmVzcy5jb2x9KTt0aGlzLmNsZWFyQ2FjaGUoQXJyYXkuZnJvbShu''@;'; put 'put ''ZXcgU2V0KG0pKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ2hvc3RUYWJsZS5jbGVhbigpLEg1KHYzKGEucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1rfX0s''@;'; put 'put ''e2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTB9fSx7a2V5OiJTRVRUSU5HX0tFWVMiLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleToiQ0FMQ1VMQVRJT05fU1RFUCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDUwfX0se2tleToiU1lOQ19DQUxDVUxB''@;'; put 'put ''VElPTl9MSU1JVCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDUwfX1dKSxhfShHYSksTjU9e2hvcml6b250YWw6Imhvcml6b250YWwiLHZlcnRpY2FsOiJ2ZXJ0aWNhbCJ9O2Z1bmN0aW9uIFc5KGwpe3JldHVybihXOT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1''@;'; put 'put ''bmN0aW9uIHgyZShsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gRUsobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUp''@;'; put 'put ''LCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEVLKGwsYyl9fWZ1bmN0aW9uIEVLKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5n''@;'; put 'put ''dGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gQTJlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25m''@;'; put 'put ''aWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxLMHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBLMHQobCl7dmFyIGM9ZnVuY3Rpb24gcTB0KGwsYyl7aWYoIm9iamVjdCIhPT1XOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9''@;'; put 'put ''bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1XOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJl''@;'; put 'put ''dHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09VzkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gVjUoKXtyZXR1cm4gVjU9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rp''@;'; put 'put ''b24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIFgwdChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9eTMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEp''@;'; put 'put ''O3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxWNS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geEsobCxjKXtyZXR1cm4oeEs9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVu''@;'; put 'put ''Y3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBUMmUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBs''@;'; put 'put ''fWZ1bmN0aW9uIHkzKGwpe3JldHVybih5Mz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVy''@;'; put 'put ''KCJtb2RpZnlBdXRvZmlsbFJhbmdlIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUF1dG9maWxsIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQXV0b2ZpbGwiKTt2YXIgTzJlPSJhdXRvZmlsbCIscjF0PVsiZmlsbEhhbmRsZSJdLGExdD1mdW5jdGlvbihs''@;'; put 'put ''KXshZnVuY3Rpb24gSjB0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3Rv''@;'; put 'put ''dHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnhLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gUTB0KGwpe3ZhciBjPWZ1bmN0aW9uIHQx''@;'; put 'put ''dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0''@;'; put 'put ''LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXkzKGwpO2lmKGMpe3ZhciBoPXkzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBk''@;'; put 'put ''PWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBlMXQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1XOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5''@;'; put 'put ''IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gVDJlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVuY3Rpb24gRzB0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj''@;'; put 'put ''bGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikpLmV2ZW50TWFuYWdlcj1uZXcgZnMoVDJlKGQpKSxkLmFkZGluZ1N0YXJ0ZWQ9ITEsZC5tb3VzZURvd25PbkNlbGxDb3JuZXI9ITEsZC5tb3VzZURyYWdPdXRzaWRlPSExLGQuaGFuZGxlRHJhZ2dlZENlbGxz''@;'; put 'put ''PTAsZC5kaXJlY3Rpb25zPVtdLGQuYXV0b0luc2VydFJvdz0hMSxkfXJldHVybiBmdW5jdGlvbiAkMHQobCxjLGEpe2MmJkEyZShsLnByb3RvdHlwZSxjKSxhJiZBMmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNF''@;'; put 'put ''bmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpbGxIYW5kbGV9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLm1hcFNldHRpbmdzKCksdGhpcy5yZWdpc3RlckV2''@;'; put 'put ''ZW50cygpLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uQWZ0ZXJDZWxsQ29ybmVyTW91c2VEb3duKGgpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gZC5v''@;'; put 'put ''bkNlbGxDb3JuZXJEYmxDbGljayhoKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5jdGlvbihoLG0pe3JldHVybiBkLm9uQmVmb3JlQ2VsbE1vdXNlT3ZlcihtKX0pLFY1KHkzKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19''@;'; put 'put ''LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLFY1KHkzKGEucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmNsZWFyTWFwcGVkU2V0dGluZ3MoKSxWNSh5MyhhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJnZXRTZWxlY3Rpb25EYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdl''@;'; put 'put ''TGFzdCgpLG09aC5nZXRUb3BTdGFydENvcm5lcigpLF89bS5yb3csTz1tLmNvbCxYPWguZ2V0Qm90dG9tRW5kQ29ybmVyKCksYmU9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLFt7c3RhcnRSb3c6XyxzdGFydENvbDpPLGVuZFJvdzpYLnJvdyxlbmRDb2w6WC5jb2x9''@;'; put 'put ''XSkseGU9W10sVmU9W10sWmU9W107cmV0dXJuIFJuKGJlLGZ1bmN0aW9uKGx0KXtmb3IodmFyIGR0PWx0LnN0YXJ0Um93O2R0PD1sdC5lbmRSb3c7ZHQrPTEpLTE9PT14ZS5pbmRleE9mKGR0KSYmeGUucHVzaChkdCk7Zm9yKHZhciBndD1sdC5zdGFydENvbDtndDw9bHQuZW5kQ29sO2d0Kz0x''@;'; put 'put ''KS0xPT09VmUuaW5kZXhPZihndCkmJlZlLnB1c2goZ3QpfSksUm4oeGUsZnVuY3Rpb24obHQpe3ZhciBkdD1bXTtSbihWZSxmdW5jdGlvbihndCl7ZHQucHVzaChkLmhvdC5nZXRDb3B5YWJsZURhdGEobHQsZ3QpKX0pLFplLnB1c2goZHQpfSksWmV9fSx7a2V5OiJmaWxsSW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGQ9dGhpcztpZih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5pc0VtcHR5KCkpcmV0dXJuITE7dmFyIG09ZnVuY3Rpb24gVTB0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFcwdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVu''@;'; put 'put ''Y3Rpb24gWTB0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lm''@;'; put 'put ''KE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVy''@;'; put 'put ''bigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHx4MmUobCxjKXx8ZnVuY3Rpb24gWjB0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5c''@;'; put 'put ''bkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLDQpLF89bVswXSxPPW1bMV0s''@;'; put 'put ''WD1tWzJdLGFlPW1bM10scGU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxiZT1wZS5nZXRUb3BTdGFydENvcm5lcigpLHhlPXBlLmdldEJvdHRvbUVuZENvcm5lcigpO3RoaXMucmVzZXRTZWxlY3Rpb25PZkRyYWdnZWRBcmVhKCk7dmFyIFZlPVtiZS5yb3csYmUuY29sLHhlLnJv''@;'; put 'put ''dyx4ZS5jb2xdLFplPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlBdXRvZmlsbFJhbmdlIixbTWF0aC5taW4oYmUucm93LF8pLE1hdGgubWluKGJlLmNvbCxPKSxNYXRoLm1heCh4ZS5yb3csWCksTWF0aC5tYXgoeGUuY29sLGFlKV0sVmUpLGx0PWZ1bmN0aW9uIEgwdChsLGMsYSl7dmFyIGYs''@;'; put 'put ''ZCxoO3JldHVybiBjWzBdPT09bFswXSYmY1sxXTxsWzFdPyhoPSJsZWZ0IixmPWEoY1swXSxjWzFdKSxkPWEoY1syXSxsWzFdLTEpKTpjWzJdPT09bFsyXSYmY1swXT09PWxbMF0mJmNbM10+bFszXT8oaD0icmlnaHQiLGY9YShjWzBdLGxbM10rMSksZD1hKGNbMl0sY1szXSkpOmNbMF08bFsw''@;'; put 'put ''XSYmY1sxXT09PWxbMV0/KGg9InVwIixmPWEoY1swXSxjWzFdKSxkPWEobFswXS0xLGNbM10pKTpjWzJdPmxbMl0mJmNbMV09PT1sWzFdJiYoaD0iZG93biIsZj1hKGxbMl0rMSxjWzFdKSxkPWEoY1syXSxjWzNdKSksZiYmZi5ub3JtYWxpemUoKSxkJiZkLm5vcm1hbGl6ZSgpLHtkaXJlY3Rp''@;'; put 'put ''b25PZkRyYWc6aCxzdGFydE9mRHJhZ0Nvb3JkczpmLGVuZE9mRHJhZ0Nvb3JkczpkfX0oVmUsWmUsZnVuY3Rpb24oY3IsQ3Ipe3JldHVybiBkLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjcixDcil9KSxkdD1sdC5kaXJlY3Rpb25PZkRyYWcsZ3Q9bHQuc3RhcnRPZkRyYWdDb29yZHMsanQ9bHQu''@;'; put 'put ''ZW5kT2ZEcmFnQ29vcmRzO2lmKGd0JiZndC5yb3c+LTEmJmd0LmNvbD4tMSl7dmFyIHJuPXRoaXMuZ2V0U2VsZWN0aW9uRGF0YSgpLFh0PXBlLmNsb25lKCkseW49dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShndCxndCxqdCksUW49dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUF1dG9maWxs''@;'; put 'put ''IixybixYdCx5bixkdCk7aWYoITE9PT1RbilyZXR1cm4gdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuY2xlYXIoKSx0aGlzLmhvdC5yZW5kZXIoKSwhMTt2YXIgT3I9UW4sVnI9UW47aWYoWyJ1cCIsImxlZnQiXS5pbmRleE9mKGR0KT4tMSYmKDEhPT1Wci5sZW5ndGh8''@;'; put 'put ''fDAhPT1WclswXS5sZW5ndGgpKWlmKE9yPVtdLCJ1cCI9PT1kdClmb3IodmFyIFpyPWp0LnJvdy1ndC5yb3crMSxpcj1aciVWci5sZW5ndGgsc2k9MDtzaTxacjtzaSsrKU9yLnB1c2goVnJbKHNpKyhWci5sZW5ndGgtaXIpKSVWci5sZW5ndGhdKTtlbHNlIGZvcih2YXIgQXI9anQuY29sLWd0''@;'; put 'put ''LmNvbCsxLEVuPUFyJVZyWzBdLmxlbmd0aCxUcj0wO1RyPFZyLmxlbmd0aDtUcisrKXtPci5wdXNoKFtdKTtmb3IodmFyIFZuPTA7Vm48QXI7Vm4rKylPcltUcl0ucHVzaChWcltUcl1bKFZuKyhWcltUcl0ubGVuZ3RoLUVuKSklVnJbVHJdLmxlbmd0aF0pfXRoaXMuaG90LnBvcHVsYXRlRnJv''@;'; put 'put ''bUFycmF5KGd0LnJvdyxndC5jb2wsT3IsanQucm93LGp0LmNvbCwiIi5jb25jYXQodGhpcy5wbHVnaW5OYW1lLCIuZmlsbCIpLG51bGwpLHRoaXMuc2V0U2VsZWN0aW9uKFplKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJBdXRvZmlsbCIsT3IsWHQseW4sZHQpLHRoaXMuaG90LnJlbmRlcigp''@;'; put 'put ''fWVsc2UgdGhpcy5ob3QuX3JlZnJlc2hCb3JkZXJzKCk7cmV0dXJuITB9fSx7a2V5OiJyZWR1Y2VTZWxlY3Rpb25BcmVhSWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiBkLnJvdzwwJiYoZC5yb3c9MCksZC5jb2w8MCYmKGQuY29sPTApLGR9fSx7a2V5OiJnZXRDb29yZHNPZkRy''@;'; put 'put ''YWdBbmREcm9wQm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxtPWguZ2V0Qm90dG9tRW5kQ29ybmVyKCksXz1kO2lmKHRoaXMuZGlyZWN0aW9ucy5pbmNsdWRlcyhONS52ZXJ0aWNhbCkmJnRoaXMuZGlyZWN0aW9ucy5pbmNs''@;'; put 'put ''dWRlcyhONS5ob3Jpem9udGFsKSl7dmFyIE89aC5nZXRUb3BTdGFydENvcm5lcigpOyhtLmNvbDw9ZC5jb2x8fE8uY29sPj1kLmNvbCkmJihfPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG0ucm93LGQuY29sKSksKG0ucm93PGQucm93fHxPLnJvdz5kLnJvdykmJihfPXRoaXMuaG90Ll9j''@;'; put 'put ''cmVhdGVDZWxsQ29vcmRzKGQucm93LG0uY29sKSl9ZWxzZSBpZih0aGlzLmRpcmVjdGlvbnMuaW5jbHVkZXMoTjUudmVydGljYWwpKV89dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZC5yb3csbS5jb2wpO2Vsc2V7aWYoIXRoaXMuZGlyZWN0aW9ucy5pbmNsdWRlcyhONS5ob3Jpem9udGFs''@;'; put 'put ''KSlyZXR1cm47Xz10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhtLnJvdyxkLmNvbCl9cmV0dXJuIHRoaXMucmVkdWNlU2VsZWN0aW9uQXJlYUlmTmVlZGVkKF8pfX0se2tleToic2hvd0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5nZXRDb29yZHNPZkRyYWdBbmREcm9w''@;'; put 'put ''Qm9yZGVycyhkKTtoJiZ0aGlzLnJlZHJhd0JvcmRlcnMoaCl9fSx7a2V5OiJhZGRSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5ob3QuYWx0ZXIoImluc2VydF9yb3dfYmVsb3ciLHZvaWQgMCwxLCIiLmNvbmNh''@;'; put 'put ''dChkLnBsdWdpbk5hbWUsIi5maWxsIikpLGQuYWRkaW5nU3RhcnRlZD0hMX0sMjAwKX19LHtrZXk6ImFkZE5ld1Jvd0lmTmVlZGVkIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5pc0VtcHR5KCkmJiExPT09dGhpcy5hZGRpbmdT''@;'; put 'put ''dGFydGVkJiZ0aGlzLmF1dG9JbnNlcnRSb3cpe3ZhciBkPXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpLGg9dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLG09dGhpcy5ob3QuY291bnRSb3dzKCk7ZFsyXTxtLTEmJmhbMl09PT1tLTEm''@;'; put 'put ''Jih0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITAsdGhpcy5hZGRSb3coKSl9fX0se2tleToiZ2V0SW5kZXhPZkxhc3RBZGphY2VudEZpbGxlZEluUm93Iix2YWx1ZTpmdW5jdGlvbihkKXtmb3IodmFyIF8saD10aGlzLmhvdC5nZXREYXRhKCksbT10aGlzLmhvdC5jb3VudFJvd3MoKSxPPWRbMl0rMTtP''@;'; put 'put ''PG07TysrKXtmb3IodmFyIFg9ZFsxXTtYPD1kWzNdO1grKylpZihoW09dW1hdKXJldHVybi0xOyhoW09dW2RbMV0tMV18fGhbT11bZFszXSsxXSkmJihfPU8pfXJldHVybiBffX0se2tleToiYWRkU2VsZWN0aW9uRnJvbVN0YXJ0QXJlYVRvU3BlY2lmaWNSb3dJbmRleCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oZCxoKXt0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpLmFkZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhkWzBdLGRbMV0pKS5hZGQodGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaCxkWzNdKSkuY29tbWl0KCl9fSx7a2V5OiJzZXRTZWxlY3Rp''@;'; put 'put ''b24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoOyhoPXRoaXMuaG90KS5zZWxlY3RDZWxsLmFwcGx5KGgsZnVuY3Rpb24gVjB0KGwpe3JldHVybiBmdW5jdGlvbiB6MHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gRUsobCl9KGwpfHxmdW5jdGlvbiBqMHQobCl7aWYodHlwZW9mIFN5''@;'; put 'put ''bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8eDJlKGwpfHxmdW5jdGlvbiBCMHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJs''@;'; put 'put ''ZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oaGEoZCxmdW5jdGlvbihtKXtyZXR1cm4gTWF0aC5tYXgobSwwKX0pKS5jb25jYXQoWyExLCExXSkpfX0se2tl''@;'; put 'put ''eToic2VsZWN0QWRqYWNlbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCksaD10aGlzLmdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJblJvdyhkKTtyZXR1cm4tMSE9PWgmJnZvaWQgMCE9PWgmJih0aGlzLmFkZFNlbGVjdGlvbkZyb21TdGFy''@;'; put 'put ''dEFyZWFUb1NwZWNpZmljUm93SW5kZXgoZCxoKSwhMCl9fSx7a2V5OiJyZXNldFNlbGVjdGlvbk9mRHJhZ2dlZEFyZWEiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpfX0se2tl''@;'; put 'put ''eToicmVkcmF3Qm9yZGVycyIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuY2xlYXIoKS5hZGQodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5mcm9tKS5hZGQodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50byku''@;'; put 'put ''YWRkKGQpLmNvbW1pdCgpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9fSx7a2V5OiJnZXRJZk1vdXNlV2FzRHJhZ2dlZE91dHNpZGUiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbT1pdSh0aGlzLmhvdC50YWJsZSkudG9wLSh0''@;'; put 'put ''aGlzLmhvdC5yb290V2luZG93LnBhZ2VZT2Zmc2V0fHxoLnNjcm9sbFRvcCkrY3ModGhpcy5ob3QudGFibGUpLF89aXUodGhpcy5ob3QudGFibGUpLmxlZnQtKHRoaXMuaG90LnJvb3RXaW5kb3cucGFnZVhPZmZzZXR8fGguc2Nyb2xsTGVmdCkrU2wodGhpcy5ob3QudGFibGUpO3JldHVybiBk''@;'; put 'put ''LmNsaWVudFk+bSYmZC5jbGllbnRYPD1ffX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZXVwIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBkLm9uTW91c2VVcCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZW1vdmUiLGZ1bmN0aW9uKG0pe3JldHVybiBkLm9uTW91c2VNb3ZlKG0pfSl9fSx7a2V5OiJvbkNlbGxDb3JuZXJEYmxDbGljayIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLnNlbGVjdEFkamFjZW50KCkmJnRoaXMuZmlsbEluKCl9fSx7a2V5OiJvbkFmdGVyQ2VsbENvcm5lck1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscz0xLHRoaXMubW91c2VEb3duT25DZWxsQ29ybmVyPSEwfX0se2tleToib25CZWZvcmVD''@;'; put 'put ''ZWxsTW91c2VPdmVyIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lciYmIXRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKSYmdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHMmJih0aGlzLmhhbmRsZURyYWdnZWRDZWxscys9MSx0aGlzLnNob3dCb3JkZXIoZCksdGhp''@;'; put 'put ''cy5hZGROZXdSb3dJZk5lZWRlZCgpKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscyYmKHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjEmJnRoaXMuZmlsbEluKCksdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLm1vdXNlRG93''@;'; put 'put ''bk9uQ2VsbENvcm5lcj0hMSl9fSx7a2V5OiJvbk1vdXNlTW92ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5nZXRJZk1vdXNlV2FzRHJhZ2dlZE91dHNpZGUoZCk7ITE9PT10aGlzLmFkZGluZ1N0YXJ0ZWQmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjAmJmg/KHRoaXMubW91c2VE''@;'; put 'put ''cmFnT3V0c2lkZT0hMCx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITApOnRoaXMubW91c2VEcmFnT3V0c2lkZT0hMSx0aGlzLm1vdXNlRHJhZ091dHNpZGUmJnRoaXMuYXV0b0luc2VydFJvdyYmdGhpcy5hZGRSb3coKX19LHtrZXk6ImNsZWFyTWFwcGVkU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7''@;'; put 'put ''dGhpcy5kaXJlY3Rpb25zLmxlbmd0aD0wLHRoaXMuYXV0b0luc2VydFJvdz0hMX19LHtrZXk6Im1hcFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPWZ1bmN0aW9uIE4wdChsKXt2YXIgYz17fTtyZXR1cm4hMD09PWw/KGMuZGlyZWN0aW9ucz1PYmplY3Qua2V5cyhONSksYy5hdXRv''@;'; put 'put ''SW5zZXJ0Um93PSEwKTpwYShsKT8oYy5hdXRvSW5zZXJ0Um93PSEhaW8obC5hdXRvSW5zZXJ0Um93KSYmbC5kaXJlY3Rpb24hPT1ONS5ob3Jpem9udGFsJiZsLmF1dG9JbnNlcnRSb3csYy5kaXJlY3Rpb25zPWlvKGwuZGlyZWN0aW9uKT9bbC5kaXJlY3Rpb25dOk9iamVjdC5rZXlzKE41KSk6''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBsPyhjLmRpcmVjdGlvbnM9W2xdLGMuYXV0b0luc2VydFJvdz0hMCk6KGMuZGlyZWN0aW9ucz1bXSxjLmF1dG9JbnNlcnRSb3c9ITEpLGN9KHRoaXMuaG90LmdldFNldHRpbmdzKCkuZmlsbEhhbmRsZSk7dGhpcy5kaXJlY3Rpb25zPWQuZGlyZWN0aW9ucyx0aGlz''@;'; put 'put ''LmF1dG9JbnNlcnRSb3c9ZC5hdXRvSW5zZXJ0Um93fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtWNSh5MyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBPMmV9fSx7a2V5''@;'; put 'put ''OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMH19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW08yZV0uY29uY2F0KHIxdCl9fV0pLGF9KEdhKTtmdW5jdGlvbiBHOShsKXtyZXR1cm4oRzk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJv''@;'; put 'put ''bCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBEMmUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBJMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3Ro''@;'; put 'put ''O2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHAxdChmLmtleSksZil9fWZ1bmN0aW9uIHAxdChsKXt2YXIgYz1mdW5jdGlvbiBt''@;'; put 'put ''MXQobCxjKXtpZigib2JqZWN0IiE9PUc5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUc5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1HOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiAkOSgpe3JldHVybiAkOT10eXBl''@;'; put 'put ''b2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gZzF0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1CNChsKSk7KTtyZXR1cm4gbH0o''@;'; put 'put ''YyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LCQ5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBBSyhsLGMpe3JldHVybihBSz1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEI0KGwpe3JldHVybihCND1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBTTD0iYXV0b1Jvd1NpemUiLE0xdD1mdW5jdGlvbihsKXshZnVuY3Rpb24gdjF0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJkFLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24geTF0KGwpe3ZhciBjPWZ1bmN0aW9uIHcxdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVj''@;'; put 'put ''dC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUI0KGwpO2lmKGMpe3ZhciBoPUI0KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBiMXQobCxjKXtpZihjJiYoIm9iamVj''@;'; put 'put ''dCI9PT1HOShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gXzF0KGwpe2lmKHZv''@;'; put 'put ''aWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBkMXQobCxj''@;'; put 'put ''KXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkucm93SGVpZ2h0c01hcD12b2lkIDAsZC5oZWFkZXJIZWlnaHQ9bnVsbCxkLmdob3N0VGFibGU9bmV3''@;'; put 'put ''IFNLKGQuaG90KSxkLnNhbXBsZXNHZW5lcmF0b3I9bmV3IEMyZShmdW5jdGlvbihoLG0pe3ZhciBfO3JldHVybiBoPj0wP189ZC5ob3QuZ2V0RGF0YUF0Q2VsbChoLG0pOi0xPT09aCYmKF89ZC5ob3QuZ2V0Q29sSGVhZGVyKG0pKSx7dmFsdWU6X319KSxkLmZpcnN0Q2FsY3VsYXRpb249ITAs''@;'; put 'put ''ZC5pblByb2dyZXNzPSExLGQubWVhc3VyZWRSb3dzPTAsZC5yb3dIZWlnaHRzTWFwPW5ldyBGNCxkLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgiYXV0b1Jvd1NpemUiLGQucm93SGVpZ2h0c01hcCksZC5hZGRIb29rKCJiZWZvcmVSb3dSZXNpemUiLGZ1bmN0aW9uKGgsbSxfKXty''@;'; put 'put ''ZXR1cm4gZC5vbkJlZm9yZVJvd1Jlc2l6ZShoLG0sXyl9KSxkfXJldHVybiBmdW5jdGlvbiBoMXQobCxjLGEpe2MmJkkyZShsLnByb3RvdHlwZSxjKSxhJiZJMmUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFi''@;'; put 'put ''bGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LmdldFNldHRpbmdzKClbU0xdO3JldHVybiEwPT09ZHx8cGEoZCl9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnNldFNhbXBsaW5nT3B0aW9ucygp''@;'; put 'put ''LHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyTG9hZERhdGEuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDaGFuZ2VSZW5kZXIiLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uQmVmb3JlQ2hhbmdlKGgpfSksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJiZWZvcmVDb2x1bW5SZXNpemUiLGZ1bmN0aW9uKCl7cmV0dXJuIGQucmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVZpZXdSZW5kZXIiLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uQmVmb3JlVmlld1JlbmRlcihoKX0pLHRoaXMuYWRk''@;'; put 'put ''SG9vaygibW9kaWZ5Um93SGVpZ2h0IixmdW5jdGlvbihoLG0pe3JldHVybiBkLmdldFJvd0hlaWdodChtLGgpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCl9KSwkOShCNChhLnByb3Rv''@;'; put 'put ''dHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5oZWFkZXJIZWlnaHQ9bnVsbCwkOShCNChhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJiZWZvcmVSb3dSZXNpemUiLGZ1bmN0aW9uKGgsbSxfKXtyZXR1cm4gZC5vbkJlZm9yZVJvd1Jlc2l6ZShoLG0sXyl9KX19LHtrZXk6ImNhbGN1bGF0ZVJvd3NIZWlnaHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Um93cygpLTF9LG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRDb2xzKCktMX0sXz1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLE89Im51bWJlciI9PXR5cGVvZiBoP3tmcm9tOmgsdG86aH06aCxYPSJudW1iZXIiPT10eXBlb2YgbT97ZnJvbTptLHRvOm19Om07aWYobnVsbCE9PXRoaXMuaG90LmdldENvbEhlYWRlcigwKSl7dmFy''@;'; put 'put ''IGFlPXRoaXMuc2FtcGxlc0dlbmVyYXRvci5nZW5lcmF0ZVJvd1NhbXBsZXMoLTEsWCk7dGhpcy5naG9zdFRhYmxlLmFkZENvbHVtbkhlYWRlcnNSb3coYWUuZ2V0KC0xKSl9X28oTy5mcm9tLE8udG8sZnVuY3Rpb24ocGUpeyhffHxudWxsPT09ZC5yb3dIZWlnaHRzTWFwLmdldFZhbHVlQXRJ''@;'; put 'put ''bmRleChwZSkpJiZSbihkLnNhbXBsZXNHZW5lcmF0b3IuZ2VuZXJhdGVSb3dTYW1wbGVzKHBlLFgpLGZ1bmN0aW9uKHhlKXt2YXIgVmU9ZnVuY3Rpb24gbDF0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGYxdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gYzF0''@;'; put 'put ''KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChh''@;'; put 'put ''KSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVj''@;'; put 'put ''dChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiB1MXQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIEQyZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4''@;'; put 'put ''LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8u''@;'; put 'put ''dGVzdChhKSlyZXR1cm4gRDJlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBzMXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3Rz''@;'; put 'put ''IG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh4ZSwyKTtyZXR1cm4gZC5naG9zdFRhYmxlLmFkZFJvdyhWZVswXSxWZVsxXSl9KX0pLHRoaXMuZ2hvc3RUYWJsZS5yb3dzLmxlbmd0aCYmKHRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7ZC5n''@;'; put 'put ''aG9zdFRhYmxlLmdldEhlaWdodHMoZnVuY3Rpb24ocGUsYmUpe3BlPDA/ZC5oZWFkZXJIZWlnaHQ9YmU6ZC5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleChkLmhvdC50b1BoeXNpY2FsUm93KHBlKSxiZSl9KX0sITApLHRoaXMubWVhc3VyZWRSb3dzPU8udG8rMSx0aGlzLmdob3N0VGFi''@;'; put 'put ''bGUuY2xlYW4oKSl9fSx7a2V5OiJjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSxt''@;'; put 'put ''PTAsXz10aGlzLmhvdC5jb3VudFJvd3MoKS0xLE89bnVsbDt0aGlzLmluUHJvZ3Jlc3M9ITA7dmFyIGFlPXRoaXMuZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQoKTt0aGlzLmZpcnN0Q2FsY3VsYXRpb24mJmFlPj0wJiYodGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KHtmcm9tOjAsdG86YWV9LGgp''@;'; put 'put ''LHRoaXMuZmlyc3RDYWxjdWxhdGlvbj0hMSxtPWFlKzEpLG08Xz9mdW5jdGlvbiBwZSgpe2lmKCFkLmhvdClyZXR1cm4gTFMoTyksdm9pZChkLmluUHJvZ3Jlc3M9ITEpO2QuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTptLHRvOk1hdGgubWluKG0rYS5DQUxDVUxBVElPTl9TVEVQLF8pfSxo''@;'; put 'put ''KSwobT1tK2EuQ0FMQ1VMQVRJT05fU1RFUCsxKTxfP089QkkocGUpOihMUyhPKSxkLmluUHJvZ3Jlc3M9ITEsZC5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApLGQuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZkLmhvdC52''@;'; put 'put ''aWV3Ll93dC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS5kcmF3KCkpfSgpOih0aGlzLmluUHJvZ3Jlc3M9ITEsdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITEpKX19LHtrZXk6InNldFNhbXBsaW5nT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpW1NMXSxoPWQmJlNzKGQsInNhbXBsaW5nUmF0aW8iKT9kLnNhbXBsaW5nUmF0aW86dm9pZCAwLG09ZCYmU3MoZCwiYWxsb3dTYW1wbGVEdXBsaWNhdGVzIik/ZC5hbGxvd1NhbXBsZUR1cGxpY2F0ZXM6dm9pZCAwO2gmJiFpc05hTihoKSYmdGhpcy5zYW1w''@;'; put 'put ''bGVzR2VuZXJhdG9yLnNldFNhbXBsZUNvdW50KHBhcnNlSW50KGgsMTApKSxtJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0QWxsb3dEdXBsaWNhdGVzKG0pfX0se2tleToicmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe043KHRoaXMuaG90LnZpZXcuX3d0Lnd0''@;'; put 'put ''VGFibGUuVEFCTEUpJiYodGhpcy5jbGVhckNhY2hlKCksdGhpcy5jYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCkpfX0se2tleToiZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtTTF0saD1hLlNZTkNfQ0FMQ1VMQVRJ''@;'; put 'put ''T05fTElNSVQsbT10aGlzLmhvdC5jb3VudFJvd3MoKS0xO3JldHVybiBwYShkKSYmKGdZKGg9ZC5zeW5jTGltaXQpP2g9WVkobSxoKTpoPj49MCksTWF0aC5taW4oaCxtKX19LHtrZXk6ImdldFJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2''@;'; put 'put ''b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMCxtPWQ8MD90aGlzLmhlYWRlckhlaWdodDp0aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxSb3coZCkpLF89aDtyZXR1cm4gbnVsbCE9PW0mJm0+KGh8fDApJiYoXz1tKSxf''@;'; put 'put ''fX0se2tleToiZ2V0Q29sdW1uSGVhZGVySGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWRlckhlaWdodH19LHtrZXk6ImdldEZpcnN0VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC52aWV3Ll93dDtyZXR1cm4gZC53dFZpZXdwb3J0LnJv''@;'; put 'put ''d3NWaXNpYmxlQ2FsY3VsYXRvcj9kLnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlUm93KCk6ZC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yP2Qud3RUYWJsZS5nZXRGaXJzdFJlbmRlcmVkUm93KCk6LTF9fSx7a2V5OiJnZXRMYXN0VmlzaWJsZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZD10aGlzLmhvdC52aWV3Ll93dDtyZXR1cm4gZC53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvcj9kLnd0VGFibGUuZ2V0TGFzdFZpc2libGVSb3coKTpkLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/ZC53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpOi0xfX0s''@;'; put 'put ''e2tleToiY2xlYXJDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlckhlaWdodD1udWxsLHRoaXMucm93SGVpZ2h0c01hcC5pbml0KCl9fSx7a2V5OiJjbGVhckNhY2hlQnlSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPSJudW1iZXIiPT10eXBlb2YgZD97ZnJv''@;'; put 'put ''bTpkLHRvOmR9OmQsXz1tLmZyb20sTz1tLnRvO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7X28oTWF0aC5taW4oXyxPKSxNYXRoLm1heChfLE8pLGZ1bmN0aW9uKFgpe2gucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5kZXgoWCxudWxsKX0pfSwhMCl9fSx7a2V5OiJpc05l''@;'; put 'put ''ZWRSZWNhbGN1bGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIUQxKHRoaXMucm93SGVpZ2h0c01hcC5nZXRWYWx1ZXMoKS5zbGljZSgwLHRoaXMubWVhc3VyZWRSb3dzKSxmdW5jdGlvbihkKXtyZXR1cm4gbnVsbD09PWR9KS5sZW5ndGh9fSx7a2V5OiJvbkJlZm9yZVZpZXdSZW5kZXIi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QucmVuZGVyQ2FsbCxoPXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzQm90dG9tLG09dGhpcy5nZXRGaXJzdFZpc2libGVSb3coKSxfPXRoaXMuZ2V0TGFzdFZpc2libGVSb3coKTtpZigtMSE9PW0mJi0xIT09Xyl7aWYodGhp''@;'; put 'put ''cy5jYWxjdWxhdGVSb3dzSGVpZ2h0KHtmcm9tOm0sdG86X30sdm9pZCAwLGQpLGgpe3ZhciBPPXRoaXMuaG90LmNvdW50Um93cygpLTE7dGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KHtmcm9tOk8taCx0bzpPfSl9dGhpcy5pc05lZWRSZWNhbGN1bGF0ZSgpJiYhdGhpcy5pblByb2dyZXNzJiZ0''@;'; put 'put ''aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKX19fSx7a2V5OiJvbkJlZm9yZVJvd01vdmUiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dGhpcy5jbGVhckNhY2hlQnlSYW5nZSh7ZnJvbTpkLHRvOmh9KSx0aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKX19LHtrZXk6Im9uQmVmb3JlUm93UmVz''@;'; put 'put ''aXplIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF89ZDtyZXR1cm4gbSYmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodChoLHZvaWQgMCwhMCksXz10aGlzLmdldFJvd0hlaWdodChoKSksX319LHtrZXk6Im9uQWZ0ZXJMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3Ro''@;'; put 'put ''aXMuaG90LnZpZXc/dGhpcy5yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5ob3QmJmQucmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl9LDApfX0se2tleToib25CZWZvcmVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPW51bGw7MT09PWQu''@;'; put 'put ''bGVuZ3RoP2g9ZFswXVswXTpkLmxlbmd0aD4xJiYoaD17ZnJvbTpkWzBdWzBdLHRvOmRbZC5sZW5ndGgtMV1bMF19KSxudWxsIT09aCYmdGhpcy5jbGVhckNhY2hlQnlSYW5nZShoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5naG9zdFRhYmxlLmNsZWFuKCksJDko''@;'; put 'put ''QjQoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU0x9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA0MH19LHtrZXk6IlNFVFRJTkdfS0VZUyIsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OiJDQUxDVUxBVElPTl9TVEVQIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTB9fSx7a2V5OiJTWU5DX0NBTENVTEFUSU9OX0xJTUlUIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNTAwfX1dKSxhfShHYSksUjJlPW5ldyBNYXAoW1siaW5kZXhlc1Nl''@;'; put 'put ''cXVlbmNlIix7Z2V0TGlzdFdpdGhJbnNlcnRlZEl0ZW1zOlVXLGdldExpc3RXaXRoUmVtb3ZlZEl0ZW1zOkxNfV0sWyJwaHlzaWNhbGx5SW5kZXhlZCIse2dldExpc3RXaXRoSW5zZXJ0ZWRJdGVtczpLVyxnZXRMaXN0V2l0aFJlbW92ZWRJdGVtczpxV31dXSksTDJlPWZ1bmN0aW9uKGMpe2lm''@;'; put 'put ''KCExPT09UjJlLmhhcyhjKSl0aHJvdyBuZXcgRXJyb3IoIkFsdGVyIHN0cmF0ZWd5IHdpdGggSUQgJyIuY29uY2F0KGMsIicgZG9lcyBub3QgZXhpc3QuIikpO3JldHVybiBSMmUuZ2V0KGMpfTtmdW5jdGlvbiBLOShsKXtyZXR1cm4oSzk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIGN9KShsKX1mdW5jdGlvbiBQMmUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLHgxdChmLmtleSksZil9fWZ1bmN0aW9uIHgxdChsKXt2YXIgYz1mdW5jdGlvbiBBMXQobCxjKXtpZigib2JqZWN0IiE9PUs5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1''@;'; put 'put ''bHQiKTtpZigib2JqZWN0IiE9PUs5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJv''@;'; put 'put ''bCI9PT1LOShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBraygpe3JldHVybiBraz10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gVDF0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNP''@;'; put 'put ''d25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1CNShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LGtr''@;'; put 'put ''LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBUSyhsLGMpe3JldHVybihUSz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEI1KGwpe3JldHVy''@;'; put 'put ''bihCNT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBGMmU9TDJlKCJwaHlzaWNhbGx5SW5kZXhlZCIpLFAxdD1GMmUuZ2V0TGlz''@;'; put 'put ''dFdpdGhJbnNlcnRlZEl0ZW1zLEYxdD1GMmUuZ2V0TGlzdFdpdGhSZW1vdmVkSXRlbXMsSDF0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBPMXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp''@;'; put 'put ''dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRh''@;'; put 'put ''YmxlOiExfSksYyYmVEsobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBEMXQobCl7dmFyIGM9ZnVuY3Rpb24gTDF0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9QjUobCk7aWYoYyl7dmFy''@;'; put 'put ''IGg9QjUodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIEkxdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PUs5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0''@;'; put 'put ''dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBSMXQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRo''@;'; put 'put ''aXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZnVuY3Rpb24gazF0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksYy5jYWxsKHRoaXMsZnVuY3Rpb24oZil7cmV0dXJuIGZ9KX1yZXR1cm4gZnVuY3Rpb24gRTF0KGwsYyxhKXtjJiZQMmUobC5wcm90b3R5cGUsYyksYSYmUDJlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6Imluc2VydCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT1ZVyh0aGlzLmluZGV4ZWRWYWx1ZXMsaCk7dGhpcy5pbmRleGVkVmFsdWVzPVAxdChtLGQsaCx0aGlzLmluaXRWYWx1ZU9yRm4pLGtrKEI1KGEucHJvdG90eXBlKSwi''@;'; put 'put ''aW5zZXJ0Iix0aGlzKS5jYWxsKHRoaXMsZCxoKX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9RjF0KHRoaXMuaW5kZXhlZFZhbHVlcyxkKTt0aGlzLmluZGV4ZWRWYWx1ZXM9WlcoaCxkKSxrayhCNShhLnByb3RvdHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlz''@;'; put 'put ''LGQpfX1dKSxhfSh4NSk7Y29uc3QgTjF0PUgxdDtmdW5jdGlvbiBxOShsKXtyZXR1cm4ocTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYm''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBPSyhsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3''@;'; put 'put ''IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIEgyZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJs''@;'; put 'put ''ZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsVzF0KGYua2V5KSxmKX19ZnVuY3Rpb24gVzF0KGwpe3ZhciBjPWZ1bmN0aW9uIEcxdChsLGMpe2lmKCJvYmplY3QiIT09cTkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1h''@;'; put 'put ''KXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cTkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwp''@;'; put 'put ''fShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXE5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIEVrKCl7cmV0dXJuIEVrPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiAkMXQobCxjKXtm''@;'; put 'put ''b3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPWo1KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sRWsuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIERLKGwsYyl7cmV0dXJuKERLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0p''@;'; put 'put ''KGwsYyl9ZnVuY3Rpb24gajUobCl7cmV0dXJuKGo1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIE4yZT1MMmUoInBoeXNpY2Fs''@;'; put 'put ''bHlJbmRleGVkIiksZWZ0PU4yZS5nZXRMaXN0V2l0aEluc2VydGVkSXRlbXMsdGZ0PU4yZS5nZXRMaXN0V2l0aFJlbW92ZWRJdGVtcyxuZnQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIEsxdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZESyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHExdChsKXt2YXIgYz1mdW5jdGlvbiBRMXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1''@;'; put 'put ''cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGQsZj1qNShsKTtpZihjKXt2YXIgaD1qNSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gWDF0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09cTkoYyl8''@;'; put 'put ''fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEoxdChsKXtpZih2b2lkIDA9PT1sKXRo''@;'; put 'put ''cm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3JldHVybiBmdW5jdGlvbiBaMXQobCxjKXtpZighKGwgaW5zdGFuY2Vv''@;'; put 'put ''ZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmNhbGwodGhpcyxmdW5jdGlvbihmKXtyZXR1cm4gZn0pfXJldHVybiBmdW5jdGlvbiBZMXQobCxjLGEpe2MmJkgyZShsLnByb3RvdHlwZSxjKSxhJiZIMmUobCxh''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaW5zZXJ0Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXM7dGhpcy5pbmRleGVkVmFsdWVzPWVmdCh0aGlzLmluZGV4ZWRWYWx1ZXMsZCxoLGZ1bmN0aW9uKF8sTyl7cmV0''@;'; put 'put ''dXJuIG0uZ2V0TmV4dFZhbHVlKE8pfSksRWsoajUoYS5wcm90b3R5cGUpLCJpbnNlcnQiLHRoaXMpLmNhbGwodGhpcyxkLGgpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLmluZGV4ZWRWYWx1ZXM9dGZ0KHRoaXMuaW5kZXhlZFZhbHVlcyxkKSxFayhqNShhLnByb3Rv''@;'; put 'put ''dHlwZSksInJlbW92ZSIsdGhpcykuY2FsbCh0aGlzLGQpfX0se2tleToiZ2V0TmV4dFZhbHVlIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gTWF0aC5tYXguYXBwbHkoTWF0aCxmdW5jdGlvbiBWMXQobCl7cmV0dXJuIGZ1bmN0aW9uIFUxdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVy''@;'; put 'put ''biBPSyhsKX0obCl8fGZ1bmN0aW9uIHoxdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBqMXQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGwpcmV0dXJuIE9LKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJv''@;'; put 'put ''bShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBPSyhsLGMpfX0obCl8fGZ1bmN0aW9uIEIxdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0''@;'; put 'put ''ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfSh0aGlzLmdldFZhbHVlcygpKSkrMStkfX1dKSxhfSh4NSk7ZnVuY3Rpb24gWDkobCl7cmV0dXJuKFg5''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMh''@;'; put 'put ''PT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gVjJlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndy''@;'; put 'put ''aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxhZnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBhZnQobCl7dmFyIGM9ZnVuY3Rpb24gbGZ0KGwsYyl7aWYoIm9iamVjdCIhPT1YOShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQg''@;'; put 'put ''MCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1YOShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJl''@;'; put 'put ''cikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09WDkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gSjkoKXtyZXR1cm4gSjk9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIHNmdChs''@;'; put 'put ''LGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9ajQobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxKOS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSUsobCxjKXtyZXR1cm4oSUs9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189''@;'; put 'put ''ZCxmfSkobCxjKX1mdW5jdGlvbiBqNChsKXtyZXR1cm4oajQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgUks9ImJpbmRSb3dz''@;'; put 'put ''V2l0aEhlYWRlcnMiLGdmdD1uZXcgTWFwKFtbImxvb3NlIixOMXRdLFsic3RyaWN0IixuZnRdXSksdmZ0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB1ZnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBt''@;'; put 'put ''dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIs''@;'; put 'put ''e3dyaXRhYmxlOiExfSksYyYmSUsobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBjZnQobCl7dmFyIGM9ZnVuY3Rpb24gaGZ0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9ajQobCk7aWYo''@;'; put 'put ''Yyl7dmFyIGg9ajQodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGZmdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PVg5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''YykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBkZnQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJy''@;'; put 'put ''b3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIGlmdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChkPWMuY2FsbCh0aGlzLGYpKS5oZWFkZXJJbmRleGVzPW51bGwsZH1yZXR1cm4gZnVuY3Rpb24gb2Z0KGwsYyxhKXtjJiZWMmUobC5wcm90b3R5cGUsYyksYSYmVjJlKGwsYSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbUktdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRo''@;'; put 'put ''aXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtSS107InN0cmluZyIhPXR5cGVvZiBoJiYoaD0ibG9vc2UiKTt2YXIgbT1nZnQuZ2V0KGgpO3RoaXMuaGVhZGVySW5kZXhlcz10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgiYmluZFJv''@;'; put 'put ''d3NXaXRoSGVhZGVycyIsbmV3IG0pLHRoaXMuYWRkSG9vaygibW9kaWZ5Um93SGVhZGVyIixmdW5jdGlvbihfKXtyZXR1cm4gZC5vbk1vZGlmeVJvd0hlYWRlcihfKX0pLEo5KGo0KGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6ImRpc2FibGVQ''@;'; put 'put ''bHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCgiYmluZFJvd3NXaXRoSGVhZGVycyIpLEo5KGo0KGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9uTW9kaWZ5Um93SGVhZGVyIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5oZWFkZXJJbmRleGVzLmdldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsUm93KGQpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7SjkoajQoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMp''@;'; put 'put ''fX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUkt9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMTB9fV0pLGF9KEdhKTtmdW5jdGlvbiBROShsKXtyZXR1cm4oUTk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIGN9KShsKX1mdW5jdGlvbiBCMmUobCl7cmV0dXJuIGZ1bmN0aW9uIHdmdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBMSyhsKX0obCl8fGZ1bmN0aW9uIF9mdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0''@;'; put 'put ''ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBiZnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIExLKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYm''@;'; put 'put ''bC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBMSyhsLGMp''@;'; put 'put ''fX0obCl8fGZ1bmN0aW9uIHlmdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''KCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIExLKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gajJlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDth''@;'; put 'put ''Kyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx6MmUoZi5rZXkpLGYpfX1mdW5jdGlvbiB6NSgpe3JldHVybiB6NT10eXBlb2YgUmVm''@;'; put 'put ''bGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gTWZ0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1iMyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtp''@;'; put 'put ''ZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LHo1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBQSyhsLGMpe3JldHVybihQSz1PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGV5KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRp''@;'; put 'put ''YWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBiMyhsKXtyZXR1cm4oYjM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YoYSl9KShsKX1mdW5jdGlvbiBGSyhsLGMsYSl7cmV0dXJuKGM9ejJlKGMpKWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIHoyZShsKXt2''@;'; put 'put ''YXIgYz1mdW5jdGlvbiBEZnQobCxjKXtpZigib2JqZWN0IiE9PVE5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVE5KGYpKXJldHVybiBmO3Ro''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1ROShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBVMmUo''@;'; put 'put ''bCxjKXtyZXR1cm4gZnVuY3Rpb24gSWZ0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxaMmUobCxjLCJnZXQiKSl9ZnVuY3Rpb24gSEsobCxjLGEpe3JldHVybiBmdW5jdGlvbiBSZnQobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFj''@;'; put 'put ''LndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLFoyZShsLGMsInNldCIpLGEpLGF9ZnVuY3Rpb24gWjJlKGwsYyxhKXtpZighYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0''@;'; put 'put ''ZW1wdGVkIHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXZhciBOSz0iY29sbGFwc2libGVDb2x1bW5zIixQZnQ9WyJuZXN0ZWRIZWFkZXJzIl0sdHk9ImNvbGxhcHNpYmxlSW5kaWNhdG9yIixZMmU9bmV3IE1hcChbWyJjb2xsYXBzZSIs''@;'; put 'put ''e2hpZGVDb2x1bW46ITAsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLGFmdGVySG9vazoiYWZ0ZXJDb2x1bW5Db2xsYXBzZSJ9XSxbImV4cGFuZCIse2hpZGVDb2x1bW46ITEsYmVmb3JlSG9vazoiYmVmb3JlQ29sdW1uRXhwYW5kIixhZnRlckhvb2s6ImFmdGVyQ29sdW1uRXhw''@;'; put 'put ''YW5kIn1dXSksbnk9bmV3IFdlYWtNYXAsRmZ0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBrZnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24i''@;'; put 'put ''KTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmUEsobCxjKX0oYSxsKTt2''@;'; put 'put ''YXIgYz1mdW5jdGlvbiBFZnQobCl7dmFyIGM9ZnVuY3Rpb24gQWZ0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4g''@;'; put 'put ''Qm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9YjMobCk7aWYoYyl7dmFyIGg9YjModGhpcykuY29uc3RydWN0b3I7ZD1S''@;'; put 'put ''ZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHhmdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PVE5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBleShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoKXt2YXIgZjshZnVuY3Rpb24gQ2Z0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSk7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksbT0wO208ZDttKyspaFttXT1hcmd1bWVudHNbbV07cmV0dXJuIEZLKGV5KGY9Yy5jYWxsLmFwcGx5KGMsW3Ro''@;'; put 'put ''aXNdLmNvbmNhdChoKSkpLCJuZXN0ZWRIZWFkZXJzUGx1Z2luIixudWxsKSxGSyhleShmKSwiZXZlbnRNYW5hZ2VyIixuZXcgZnMoZXkoZikpKSxGSyhleShmKSwiaGVhZGVyU3RhdGVNYW5hZ2VyIixudWxsKSxmdW5jdGlvbiBUZnQobCxjLGEpeyhmdW5jdGlvbiBPZnQobCxjKXtpZihjLmhh''@;'; put 'put ''cyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfShleShmKSxueSx7d3JpdGFibGU6ITAsdmFsdWU6bnVsbH0pLGZ9cmV0dXJuIGZ1bmN0aW9uIFNm''@;'; put 'put ''dChsLGMsYSl7YyYmajJlKGwucHJvdG90eXBlLGMpLGEmJmoyZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW05L''@;'; put 'put ''XX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuaG90LmdldFNldHRpbmdzKCkubmVzdGVkSGVhZGVyc3x8V2woIllvdSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIGluIG9yZGVy''@;'; put 'put ''IHRvIHVzZSBjb2xsYXBzaWJsZSBoZWFkZXJzLiIpLEhLKHRoaXMsbnksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCh0aGlzLnBsdWdpbk5hbWUsImhpZGluZyIpKSx0aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW49dGhpcy5ob3QuZ2V0UGx1Z2lu''@;'; put 'put ''KCJuZXN0ZWRIZWFkZXJzIiksdGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXI9dGhpcy5uZXN0ZWRIZWFkZXJzUGx1Z2luLmdldFN0YXRlTWFuYWdlcigpLHRoaXMuYWRkSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkluaXQoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyTG9hZERhdGEuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyR2V0Q29sSGVhZGVyLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygi''@;'; put 'put ''YmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbihfLE8sWCl7cmV0dXJuIGQub25CZWZvcmVPbkNlbGxNb3VzZURvd24oXyxPLFgpfSksejUoYjMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy51cGRhdGVQbHVnaW4oKSl9fSx7a2V5OiJ1cGRh''@;'; put 'put ''dGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5ob3Qudmlldyl7aWYoIXRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbi5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzKXt2YXIgaD10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmNvbGxhcHNpYmxlQ29sdW1uczsiYm9vbGVhbiI9PXR5cGVv''@;'; put 'put ''ZiBoP3RoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcFN0YXRlKGZ1bmN0aW9uKG0pe3JldHVybntjb2xsYXBzaWJsZTptLm9yaWdDb2xzcGFuPjF9fSk6QXJyYXkuaXNBcnJheShoKSYmKHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcFN0YXRlKGZ1bmN0aW9uKCl7cmV0dXJue2NvbGxhcHNp''@;'; put 'put ''YmxlOiExfX0pLHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1lcmdlU3RhdGVXaXRoKGgpKX16NShiMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LmNvbHVtbkluZGV4''@;'; put 'put ''TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lKSxISyh0aGlzLG55LG51bGwpLHRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbj1udWxsLHRoaXMuY2xlYXJCdXR0b25zKCksejUoYjMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToi''@;'; put 'put ''Y2xlYXJCdXR0b25zIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaG90LnZpZXcpe3ZhciBkPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGgsaD10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRIRUFELG09dGhpcy5ob3Qudmlldy5fd3Qud3RP''@;'; put 'put ''dmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuVEhFQUQsXz10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT90aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRh''@;'; put 'put ''YmxlLlRIRUFEOm51bGwsTz1mdW5jdGlvbihhZSl7YWUmJmFlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWUpfTtfbygwLGQtMSxmdW5jdGlvbihYKXt2YXIgYWU9aC5jaGlsZE5vZGVzW1hdLHBlPW0uY2hpbGROb2Rlc1tYXSxiZT1fP18uY2hpbGROb2Rlc1tYXTpudWxsO19vKDAsYWUuY2hp''@;'; put 'put ''bGROb2Rlcy5sZW5ndGgtMSxmdW5jdGlvbih4ZSl7dmFyIFZlPWFlLmNoaWxkTm9kZXNbeGVdLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdCh0eSkpO08oVmUpLHBlJiZwZS5jaGlsZE5vZGVzW3hlXSYmKFZlPXBlLmNoaWxkTm9kZXNbeGVdLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdCh0eSkp''@;'; put 'put ''LE8oVmUpKSxfJiZiZSYmYmUuY2hpbGROb2Rlc1t4ZV0mJihWZT1iZS5jaGlsZE5vZGVzW3hlXS5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQodHkpKSxPKFZlKSl9KX0pfX19LHtrZXk6ImV4cGFuZFNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0''@;'; put 'put ''aW9uKFtkXSwiZXhwYW5kIil9fSx7a2V5OiJjb2xsYXBzZVNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtkXSwiY29sbGFwc2UiKX19LHtrZXk6InRvZ2dsZUFsbENvbGxhcHNpYmxlU2VjdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGQpe3Zh''@;'; put 'put ''ciBoPXRoaXMsbT10aGlzLmhlYWRlclN0YXRlTWFuYWdlci5tYXBOb2RlcyhmdW5jdGlvbihfKXt2YXIgcGU9Xy5jb2x1bW5JbmRleCxiZT1fLmlzQ29sbGFwc2VkO2lmKCEwPT09Xy5jb2xsYXBzaWJsZSYmXy5vcmlnQ29sc3Bhbj4xJiYoYmUmJiJleHBhbmQiPT09ZHx8IWJlJiYiY29sbGFw''@;'; put 'put ''c2UiPT09ZCkpcmV0dXJue3JvdzpoLmhlYWRlclN0YXRlTWFuYWdlci5sZXZlbFRvUm93Q29vcmRzKF8uaGVhZGVyTGV2ZWwpLGNvbDpwZX19KTt0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihtLGQpfX0se2tleToiY29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50b2dn''@;'; put 'put ''bGVBbGxDb2xsYXBzaWJsZVNlY3Rpb25zKCJjb2xsYXBzZSIpfX0se2tleToiZXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQWxsQ29sbGFwc2libGVTZWN0aW9ucygiZXhwYW5kIil9fSx7a2V5OiJ0b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGQsaCl7dmFyIG09dGhpcztpZighWTJlLmhhcyhoKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGFjdGlvbiBpcyBwYXNzZWQgKCIuY29uY2F0KGgsIikuIikpO2lmKEFycmF5LmlzQXJyYXkoZCkpe3ZhciBfPUQxKGQsZnVuY3Rpb24obHQpe3JldHVybiBsdC5yb3c8MH0pLE89Xy5s''@;'; put 'put ''ZW5ndGg+MDtSbihfLGZ1bmN0aW9uKGx0KXt2YXIgZHQscm49bnVsbCE9PShkdD1tLmhlYWRlclN0YXRlTWFuYWdlci5nZXRIZWFkZXJTZXR0aW5ncyhsdC5yb3csbHQuY29sKSkmJnZvaWQgMCE9PWR0P2R0Ont9LHluPXJuLmlzQ29sbGFwc2VkO2lmKCFybi5jb2xsYXBzaWJsZXx8eW4mJiJj''@;'; put 'put ''b2xsYXBzZSI9PT1ofHwheW4mJiJleHBhbmQiPT09aClyZXR1cm4gTz0hMSwhMX0pO3ZhciBYPVtdLGFlPVtdO08mJlJuKF8sZnVuY3Rpb24obHQpe3ZhciBqdD1tLmhlYWRlclN0YXRlTWFuYWdlci50cmlnZ2VyTm9kZU1vZGlmaWNhdGlvbihoLGx0LnJvdyxsdC5jb2wpLHluPWp0LnJvbGxi''@;'; put 'put ''YWNrTW9kaWZpY2F0aW9uO2p0LmNvbHNwYW5Db21wZW5zYXRpb24+MCYmKGFlLnB1c2guYXBwbHkoYWUsQjJlKGp0LmFmZmVjdGVkQ29sdW1ucykpLFgucHVzaCh5bikpfSk7dmFyIHBlPXRoaXMuZ2V0Q29sbGFwc2VkQ29sdW1ucygpLGJlPVtdOyJjb2xsYXBzZSI9PT1oP2JlPWFZKFtdLmNv''@;'; put 'put ''bmNhdChCMmUocGUpLGFlKSk6ImV4cGFuZCI9PT1oJiYoYmU9RDEocGUsZnVuY3Rpb24obHQpe3JldHVybiFhZS5pbmNsdWRlcyhsdCl9KSk7dmFyIHhlPVkyZS5nZXQoaCk7aWYoITE9PT10aGlzLmhvdC5ydW5Ib29rcyh4ZS5iZWZvcmVIb29rLHBlLGJlLE8pKXJldHVybiB2b2lkIFJuKFgs''@;'; put 'put ''ZnVuY3Rpb24obHQpe2x0KCl9KTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe1JuKGFlLGZ1bmN0aW9uKGx0KXtVMmUobSxueSkuc2V0VmFsdWVBdEluZGV4KG0uaG90LnRvUGh5c2ljYWxDb2x1bW4obHQpLHhlLmhpZGVDb2x1bW4pfSl9LCEwKTt2YXIgWmU9dGhpcy5nZXRD''@;'; put 'put ''b2xsYXBzZWRDb2x1bW5zKCkubGVuZ3RoIT09cGUubGVuZ3RoO3RoaXMuaG90LnJ1bkhvb2tzKHhlLmFmdGVySG9vayxwZSxiZSxPLFplKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9fX0se2tleToiZ2V0Q29sbGFwc2VkQ29sdW1ucyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gVTJlKHRoaXMsbnkpLmdldEhpZGRlbkluZGV4ZXMoKX19LHtrZXk6Im9uQWZ0ZXJHZXRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXyxWZSxPPW51bGwhPT0oXz10aGlzLmhlYWRlclN0YXRlTWFuYWdlci5nZXRIZWFkZXJTZXR0''@;'; put 'put ''aW5ncyhtLGQpKSYmdm9pZCAwIT09Xz9fOnt9LHBlPU8uaXNDb2xsYXBzZWQsYmU9Ty5jb2xsYXBzaWJsZSYmTy5vcmlnQ29sc3Bhbj4xJiZkPj10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LHhlPWgucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KHR5KSk7YmU/KHhl''@;'; put 'put ''fHwoZ2koeGU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHR5KSxoLnF1ZXJ5U2VsZWN0b3IoImRpdjpmaXJzdC1jaGlsZCIpLmFwcGVuZENoaWxkKHhlKSksSm8oeGUsWyJjb2xsYXBzZWQiLCJleHBhbmRlZCJdKSxwZT8oZ2koeGUsImNvbGxhcHNlZCIpLE80''@;'; put 'put ''KHhlLCIrIikpOihnaSh4ZSwiZXhwYW5kZWQiKSxPNCh4ZSwiLSIpKSk6bnVsbD09PShWZT14ZSl8fHZvaWQgMD09PVZlfHxWZS5yZW1vdmUoKX19LHtrZXk6Im9uQmVmb3JlT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihkLGgpe1lvKGQudGFyZ2V0LHR5KSYmKFlvKGQudGFyZ2V0''@;'; put 'put ''LCJleHBhbmRlZCIpPyh0aGlzLmV2ZW50TWFuYWdlci5maXJlRXZlbnQoZC50YXJnZXQsIm1vdXNldXAiKSx0aGlzLnRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlvbihbaF0sImNvbGxhcHNlIikpOllvKGQudGFyZ2V0LCJjb2xsYXBzZWQiKSYmKHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChk''@;'; put 'put ''LnRhcmdldCwibW91c2V1cCIpLHRoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtoXSwiZXhwYW5kIikpLEhkKGQpKX19LHtrZXk6Im9uSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVBsdWdpbigpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbihk''@;'; put 'put ''LGgpe2h8fHRoaXMudXBkYXRlUGx1Z2luKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe0hLKHRoaXMsbnksbnVsbCksejUoYjMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gTkt9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyOTB9fSx7a2V5OiJQTFVHSU5fREVQUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuWyJwbHVnaW46TmVzdGVkSGVhZGVycyJdfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm5bTktdLmNvbmNhdChQZnQpfX1dKSxhfShHYSk7ZnVuY3Rpb24geGsobCl7cmV0dXJuKHhrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMm''@;'; put 'put ''JiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gVzJlKGwsYyl7dmFyIGE9T2JqZWN0LmtleXMobCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s''@;'; put 'put ''cyl7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtjJiYoZj1mLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLGQpLmVudW1lcmFibGV9KSksYS5wdXNoLmFwcGx5KGEsZil9cmV0dXJuIGF9ZnVuY3Rpb24gTmZ0''@;'; put 'put ''KGwsYyxhKXtyZXR1cm4oYz1xMmUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gRzJlKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIHpmdChsKXtpZihBcnJh''@;'; put 'put ''eS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gamZ0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYo''@;'; put 'put ''aD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYo''@;'; put 'put ''IU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBCZnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuICQyZShsLGMpO3ZhciBhPU9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/''@;'; put 'put ''OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gJDJlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBWZnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4g''@;'; put 'put ''b3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uICQyZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMp''@;'; put 'put ''O2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIEsyZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGwscTJlKGYua2V5KSxmKX19ZnVuY3Rpb24gcTJlKGwpe3ZhciBjPWZ1bmN0aW9uIFlmdChsLGMpe2lmKCJvYmplY3QiIT09eGsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1h''@;'; put 'put ''LmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09eGsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJp''@;'; put 'put ''bmciKTtyZXR1cm4ic3ltYm9sIj09PXhrKGMpP2M6U3RyaW5nKGMpfXZhciBXZnQ9WyJzb3J0RW1wdHlDZWxscyIsImluZGljYXRvciIsImhlYWRlckFjdGlvbiIsImNvbXBhcmVGdW5jdGlvbkZhY3RvcnkiXSxxZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIFVmdChs''@;'; put 'put ''LGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmhvdD1jLHRoaXMuc29ydGluZ1N0YXRlcz1uZXcgelIsdGhpcy5zb3J0RW1wdHlDZWxscz0hMSx0aGlzLmluZGljYXRv''@;'; put 'put ''cj0hMCx0aGlzLmhlYWRlckFjdGlvbj0hMCx0aGlzLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk9dm9pZCAwLHRoaXMubWFwTmFtZT1hLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKGEsdGhpcy5zb3J0aW5nU3RhdGVzKX1yZXR1cm4gZnVuY3Rpb24gWmZ0KGwsYyxhKXtj''@;'; put 'put ''JiZLMmUobC5wcm90b3R5cGUsYyksYSYmSzJlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InVwZGF0ZUFsbENvbHVtbnNQcm9wZXJ0aWVzIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzO3BhKGEpJiZtYShhLGZ1''@;'; put 'put ''bmN0aW9uKGQsaCl7V2Z0LmluY2x1ZGVzKGgpJiYoZltoXT1kKX0pfX0se2tleToiZ2V0QWxsQ29sdW1uc1Byb3BlcnRpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9e3NvcnRFbXB0eUNlbGxzOnRoaXMuc29ydEVtcHR5Q2VsbHMsaW5kaWNhdG9yOnRoaXMuaW5kaWNhdG9yLGhlYWRlckFj''@;'; put 'put ''dGlvbjp0aGlzLmhlYWRlckFjdGlvbn07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSYmKGEuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT10aGlzLmNvbXBhcmVGdW5jdGlvbkZhY3RvcnkpLGF9fSx7a2V5OiJnZXRTb3J0T3JkZXJPZkNvbHVtbiIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY7cmV0dXJuIG51bGw9PT0oZj10aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYSkpKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5zb3J0T3JkZXJ9fSx7a2V5OiJnZXRJbmRleE9mQ29sdW1uSW5T''@;'; put 'put ''b3J0UXVldWUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYSksdGhpcy5zb3J0aW5nU3RhdGVzLmdldEVudHJpZXMoKS5maW5kSW5kZXgoZnVuY3Rpb24oZil7cmV0dXJuIEcyZShmLDEpWzBdPT09YX0pfX0se2tleToiZ2V0TnVtYmVyT2ZT''@;'; put 'put ''b3J0ZWRDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0TGVuZ3RoKCl9fSx7a2V5OiJpc0xpc3RPZlNvcnRlZENvbHVtbnNFbXB0eSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZ2V0TnVtYmVyT2ZTb3J0ZWRDb2x1bW5zKCl9''@;'; put 'put ''fSx7a2V5OiJpc0NvbHVtblNvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHBhKHRoaXMuc29ydGluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihhKSkpfX0se2tleToiZ2V0U29ydFN0YXRlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10''@;'; put 'put ''aGlzO3JldHVybiBudWxsPT09dGhpcy5zb3J0aW5nU3RhdGVzP1tdOnRoaXMuc29ydGluZ1N0YXRlcy5nZXRFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKGQpe3ZhciBoPUcyZShkLDIpLF89aFsxXTtyZXR1cm4gZnVuY3Rpb24gSGZ0KGwpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtj''@;'; put 'put ''Kyspe3ZhciBhPW51bGwhPWFyZ3VtZW50c1tjXT9hcmd1bWVudHNbY106e307YyUyP1cyZShPYmplY3QoYSksITApLmZvckVhY2goZnVuY3Rpb24oZil7TmZ0KGwsZixhW2ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsT2Jq''@;'; put 'put ''ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOlcyZShPYmplY3QoYSkpLmZvckVhY2goZnVuY3Rpb24oZil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZikpfSl9cmV0dXJuIGx9KHtjb2x1bW46YS5ob3QudG9WaXN1''@;'; put 'put ''YWxDb2x1bW4oaFswXSl9LF8pfSl9fSx7a2V5OiJnZXRDb2x1bW5Tb3J0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZ2V0U29ydE9yZGVyT2ZDb2x1bW4oYSk7aWYoaW8oZikpcmV0dXJue2NvbHVtbjphLHNvcnRPcmRlcjpmfX19LHtrZXk6InNldFNvcnRTdGF0ZXMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGEpe3RoaXMuc29ydGluZ1N0YXRlcy5jbGVhcigpO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7Zis9MSl0aGlzLnNvcnRpbmdTdGF0ZXMuc2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYVtmXS5jb2x1bW4pLHtzb3J0T3JkZXI6YVtmXS5zb3J0''@;'; put 'put ''T3JkZXJ9KX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLm1hcE5hbWUpLHRoaXMuc29ydGluZ1N0YXRlcz1udWxsfX1dKSxsfSgpLE1MPSJhc2MiLGtMPSJkZXNjIjtmdW5jdGlvbiBYMmUobCl7''@;'; put 'put ''aWYobCE9PWtMKXJldHVybiBsPT09TUw/a0w6TUx9ZnVuY3Rpb24gSjJlKGwpe3JldHVybiBsLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdCgiY29sSGVhZGVyIikpfWZ1bmN0aW9uIFEyZShsLGMpe2lmKGw8MHx8IWMucGFyZW50Tm9kZSlyZXR1cm4hMTt2YXIgYT1jLnBhcmVudE5vZGUucGFy''@;'; put 'put ''ZW50Tm9kZS5jaGlsZE5vZGVzO3JldHVybi0xPT1BcnJheS5mcm9tKGEpLmluZGV4T2YoYy5wYXJlbnROb2RlKS1hLmxlbmd0aH1mdW5jdGlvbiBWSyhsLGMsYSl7cmV0dXJuLTE9PT1sJiZjPj0wJiYhMT09PUk0KGEpfXZhciBlM2U9ImluZGljYXRvckRpc2FibGVkIix0M2U9ImNvbHVtblNv''@;'; put 'put ''cnRpbmciLG4zZT0ic29ydEFjdGlvbiIscjNlPW5ldyBNYXAoW1tNTCwiYXNjZW5kaW5nIl0sW2tMLCJkZXNjZW5kaW5nIl1dKTtmdW5jdGlvbiBuZHQobCxjLGEsZil7dmFyIGQ9W3QzZV07aWYoZiYmZC5wdXNoKG4zZSksITE9PT1hKXJldHVybiBkLnB1c2goZTNlKSxkO3ZhciBoPWwuZ2V0''@;'; put 'put ''U29ydE9yZGVyT2ZDb2x1bW4oYyk7cmV0dXJuIGlvKGgpJiZkLnB1c2gocjNlLmdldChoKSksZH1mdW5jdGlvbiBpM2UobCxjLGEpe3ZhciBmPWMubG9jYWxlO3JldHVybiBmdW5jdGlvbihkLGgpe3ZhciBtPWEuc29ydEVtcHR5Q2VsbHM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkJiYoZD1k''@;'; put 'put ''LnRvTG9jYWxlTG93ZXJDYXNlKGYpKSwic3RyaW5nIj09dHlwZW9mIGgmJihoPWgudG9Mb2NhbGVMb3dlckNhc2UoZikpLGQ9PT1oPzA6d3UoZCk/d3UoaCk/MDptJiYiYXNjIj09PWw/LTE6MTp3dShoKT9tJiYiYXNjIj09PWw/MTotMTppc05hTihkKSYmIWlzTmFOKGgpPyJhc2MiPT09bD8x''@;'; put 'put ''Oi0xOiFpc05hTihkKSYmaXNOYU4oaCl8fChpc05hTihkKXx8aXNOYU4oaCl8fChkPXBhcnNlRmxvYXQoZCksaD1wYXJzZUZsb2F0KGgpKSxkPGgpPyJhc2MiPT09bD8tMToxOmQ+aD8iYXNjIj09PWw/MTotMTowfX12YXIgQks9RmYoInNvcnRpbmcuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSIp''@;'; put 'put ''LEVMPUJLLnJlZ2lzdGVyLGEzZT1CSy5nZXRJdGVtLGZkdD1CSy5oYXNJdGVtLGwzZT1GZigic29ydGluZy5tYWluU29ydENvbXBhcmF0b3IiKSxzM2U9bDNlLnJlZ2lzdGVyLGRkdD1sM2UuZ2V0SXRlbTtmdW5jdGlvbiB1M2UobCl7cmV0dXJuIGZkdChsKT9hM2UobCk6YTNlKCJkZWZhdWx0''@;'; put 'put ''Iil9ZnVuY3Rpb24gYzNlKGwpe3JldHVybiBmdW5jdGlvbiBnZHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIG1kdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0''@;'; put 'put ''dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBwZHQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGYzZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0''@;'; put 'put ''b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gZjNlKGwsYyl9fShsKXx8ZnVu''@;'; put 'put ''Y3Rpb24gaGR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1l''@;'; put 'put ''dGhvZC4iKX0oKX1mdW5jdGlvbiBmM2UobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiByeShsKXtyZXR1cm4ocnk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5''@;'; put 'put ''bWJvbCI6dHlwZW9mIGN9KShsKX1FTCgibnVtZXJpYyIsZnVuY3Rpb24gb2R0KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24oZixkKXt2YXIgaD1wYXJzZUZsb2F0KGYpLG09cGFyc2VGbG9hdChkKSxfPWEuc29ydEVtcHR5Q2VsbHM7aWYoaD09PW18fGlzTmFOKGgpJiZpc05hTihtKSlyZXR1cm4g''@;'; put 'put ''MDtpZihfKXtpZih3dShmKSlyZXR1cm4iYXNjIj09PWw/LTE6MTtpZih3dShkKSlyZXR1cm4iYXNjIj09PWw/MTotMX1yZXR1cm4gaXNOYU4oaCk/MTppc05hTihtKT8tMTpoPG0/ImFzYyI9PT1sPy0xOjE6aD5tPyJhc2MiPT09bD8xOi0xOjB9fSksRUwoImNoZWNrYm94IixmdW5jdGlvbiBs''@;'; put 'put ''ZHQobCxjLGEpe3ZhciBmPWMuY2hlY2tlZFRlbXBsYXRlLGQ9Yy51bmNoZWNrZWRUZW1wbGF0ZSxoPWEuc29ydEVtcHR5Q2VsbHM7cmV0dXJuIGZ1bmN0aW9uKG0sXyl7dmFyIE89d3UobSksWD13dShfKSxhZT1PP2Q6bSxwZT1YP2Q6XyxiZT1hZT09PWR8fGFlPT09Zix4ZT1wZT09PWR8fHBl''@;'; put 'put ''PT09ZjtpZighMT09PWgpe2lmKE8mJiExPT09WClyZXR1cm4gMTtpZighMT09PU8mJlgpcmV0dXJuLTF9cmV0dXJuITE9PT1iZSYmeGU/ImFzYyI9PT1sPy0xOjE6YmUmJiExPT09eGU/ImFzYyI9PT1sPzE6LTE6ITE9PT1iZSYmITE9PT14ZT9pM2UobCxjLGEpKG0sXyk6YWU9PT1kJiZwZT09''@;'; put 'put ''PWY/ImFzYyI9PT1sPy0xOjE6YWU9PT1mJiZwZT09PWQ/ImFzYyI9PT1sPzE6LTE6MH19KSxFTCgiZGF0ZSIsZnVuY3Rpb24gdWR0KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24oZixkKXt2YXIgaD1hLnNvcnRFbXB0eUNlbGxzO2lmKGY9PT1kKXJldHVybiAwO2lmKHd1KGYpKXJldHVybiB3dShk''@;'; put 'put ''KT8wOmgmJiJhc2MiPT09bD8tMToxO2lmKHd1KGQpKXJldHVybiBoJiYiYXNjIj09PWw/MTotMTt2YXIgbT1jLmRhdGVGb3JtYXQsXz1LbyhmLG0pLE89S28oZCxtKTtyZXR1cm4gXy5pc1ZhbGlkKCk/Ty5pc1ZhbGlkKCk/Ty5pc0FmdGVyKF8pPyJhc2MiPT09bD8tMToxOk8uaXNCZWZvcmUo''@;'; put 'put ''Xyk/ImFzYyI9PT1sPzE6LTE6MDotMToxfX0pLEVMKCJkZWZhdWx0IixpM2UpO3ZhciB5ZHQ9WyJjb2x1bW4iXSxiZHQ9WyJjb2x1bW4iXTtmdW5jdGlvbiBpeShsKXtyZXR1cm4gZnVuY3Rpb24gU2R0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGpLKGwpfShsKXx8ZnVuY3Rpb24g''@;'; put 'put ''Q2R0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIHdkdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gaksobCxjKTt2''@;'; put 'put ''YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09''@;'; put 'put ''YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIGpLKGwsYyl9fShsKXx8ZnVuY3Rpb24gX2R0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBv''@;'; put 'put ''cmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaksobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTth''@;'; put 'put ''PGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBkM2UobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3Jl''@;'; put 'put ''dHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiBoM2UobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3Vt''@;'; put 'put ''ZW50c1tjXTp7fTtjJTI/ZDNlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXtNZHQobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6''@;'; put 'put ''ZDNlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiBNZHQobCxjLGEpe3JldHVybihjPWczZShjKSlpbiBsP09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBwM2UobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBmLGQsYT1mdW5jdGlvbiBrZHQobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBk''@;'; put 'put ''LGgsYT17fSxmPU9iamVjdC5rZXlzKGwpO2ZvcihoPTA7aDxmLmxlbmd0aDtoKyspIShjLmluZGV4T2YoZD1mW2hdKT49MCkmJihhW2RdPWxbZF0pO3JldHVybiBhfShsLGMpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv''@;'; put 'put ''bHMobCk7Zm9yKGQ9MDtkPGgubGVuZ3RoO2QrKykhKGMuaW5kZXhPZihmPWhbZF0pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGwsZikmJihhW2ZdPWxbZl0pfXJldHVybiBhfWZ1bmN0aW9uIG0zZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7''@;'; put 'put ''YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZzNlKGYua2V5KSxmKX19ZnVuY3Rpb24gZzNlKGwpe3ZhciBjPWZ1bmN0aW9uIEFk''@;'; put 'put ''dChsLGMpe2lmKCJvYmplY3QiIT09cnkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cnkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXJ5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIFU1KCl7cmV0dXJuIFU1PXR5cGVv''@;'; put 'put ''ZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBUZHQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPV8zKGwpKTspO3JldHVybiBsfShj''@;'; put 'put ''LGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sVTUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHpLKGwsYyl7cmV0dXJuKHpLPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gXzMobCl7cmV0dXJuKF8zPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIFVLPSJjb2x1bW5Tb3J0aW5nIjtzM2UoVUssZnVuY3Rpb24gdmR0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEsZil7dmFyIGFlLHBlLGJlLHhlLFZlLGg9YzNlKGEpLnNs''@;'; put 'put ''aWNlKDEpLF89YzNlKGYpLnNsaWNlKDEpO3JldHVybiBhZT1sWzBdLGJlPWhbMF0seGU9X1swXSwoKFZlPShwZT1jWzBdKS5jb2x1bW5Tb3J0aW5nKS5jb21wYXJlRnVuY3Rpb25GYWN0b3J5P1ZlLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk6dTNlKHBlLnR5cGUpKShhZSxwZSxWZSkoYmUseGUp''@;'; put 'put ''fX0pLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5Tb3J0IiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29sdW1uU29ydCIpO3ZhciB5M2U9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIE9kdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxs''@;'; put 'put ''IT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZ6SyhsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIERkdChsKXt2YXIgYz1mdW5jdGlvbiBMZHQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVm''@;'; put 'put ''bGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1''@;'; put 'put ''cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1fMyhsKTtpZihjKXt2YXIgaD1fMyh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gSWR0KGwsYyl7''@;'; put 'put ''aWYoYyYmKCJvYmplY3QiPT09cnkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IFJkdChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gRWR0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikpLmNvbHVtblN0YXRlc01hbmFnZXI9bnVsbCxkLmNvbHVtbk1ldGFDYWNoZT1u''@;'; put 'put ''dWxsLGQucGx1Z2luS2V5PVVLLGQuaW5kZXhlc1NlcXVlbmNlQ2FjaGU9bnVsbCxkfXJldHVybiBmdW5jdGlvbiB4ZHQobCxjLGEpe2MmJm0zZShsLnByb3RvdHlwZSxjKSxhJiZtM2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxb''@;'; put 'put ''e2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbHVtblN0YXRlc01h''@;'; put 'put ''bmFnZXI9bmV3IHFmdCh0aGlzLmhvdCwiIi5jb25jYXQodGhpcy5wbHVnaW5LZXksIi5zb3J0aW5nU3RhdGVzIikpLHRoaXMuY29sdW1uTWV0YUNhY2hlPW5ldyBGNChmdW5jdGlvbihoKXt2YXIgbT1kLmhvdC50b1Zpc3VhbENvbHVtbihoKTtyZXR1cm4gbnVsbD09PW0mJihtPWgpLGQuZ2V0''@;'; put 'put ''TWVyZ2VkUGx1Z2luU2V0dGluZ3MobSl9KSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCgiIi5jb25jYXQodGhpcy5wbHVnaW5LZXksIi5jb2x1bW5NZXRhIiksdGhpcy5jb2x1bW5NZXRhQ2FjaGUpLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0''@;'; put 'put ''aW9uKGgsbSl7cmV0dXJuIGQub25BZnRlckdldENvbEhlYWRlcihoLG0pfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRl''@;'; put 'put ''ck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oaCxtKXtyZXR1cm4gZC5vbkFmdGVyT25DZWxsTW91c2VEb3duKGgsbSl9KSx0aGlzLmFkZEhvb2soImFmdGVySW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5sb2FkT3JTb3J0QnlTZXR0aW5ncygpfSksdGhpcy5hZGRIb29rKCJhZnRlckxvYWRE''@;'; put 'put ''YXRhIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJMb2FkRGF0YS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmhvdC52aWV3JiZ0aGlzLmxvYWRPclNvcnRCeVNldHRpbmdzKCksVTUoXzMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToi''@;'; put 'put ''ZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9ZnVuY3Rpb24oXyxPKXt2YXIgWD1KMmUoTyk7ITE9PT1RMmUoXyxPKXx8bnVsbD09PVh8fGQudXBkYXRlSGVhZGVyQ2xhc3NlcyhYKX07dGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGgpLHRo''@;'; put 'put ''aXMuaG90LmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGZ1bmN0aW9uKCl7ZC5ob3QucmVtb3ZlSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGgpfSksdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtudWxsIT09ZC5pbmRleGVzU2VxdWVuY2VDYWNoZSYmKGQuaG90LnJv''@;'; put 'put ''d0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShkLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLmdldFZhbHVlcygpKSxkLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKGQucGx1Z2luS2V5KSl9LCEwKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKCIi''@;'; put 'put ''LmNvbmNhdCh0aGlzLnBsdWdpbktleSwiLmNvbHVtbk1ldGEiKSksdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLmNvbHVtbk1ldGFDYWNoZT1udWxsLHRoaXMuY29sdW1uU3RhdGVzTWFuYWdlcj1udWxsLFU1KF8zKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InNvcnQiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuZ2V0U29ydENvbmZpZygpLG09dGhpcy5nZXROb3JtYWxpemVkU29ydENvbmZpZ3MoZCksXz10aGlzLmFyZVZhbGlkU29ydENvbmZpZ3MobSk7ITEhPT10aGlzLmhvdC5ydW5Ib29rcygi''@;'; put 'put ''YmVmb3JlQ29sdW1uU29ydCIsaCxtLF8pJiYoMD09PWgubGVuZ3RoJiZudWxsPT09dGhpcy5pbmRleGVzU2VxdWVuY2VDYWNoZSYmKHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGU9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5LZXksbmV3IEdmZSksdGhp''@;'; put 'put ''cy5pbmRleGVzU2VxdWVuY2VDYWNoZS5zZXRWYWx1ZXModGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpKSxfJiYodGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnNldFNvcnRTdGF0ZXMobSksdGhpcy5zb3J0QnlQcmVzZXRTb3J0U3RhdGVzKG0pLHRoaXMuc2F2''@;'; put 'put ''ZUFsbFNvcnRTZXR0aW5ncyhtKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uU29ydCIsaCxfP206aCxfKSxfJiYodGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSExLHRoaXMuaG90LnZpZXcucmVuZGVyKCkpKX19LHtrZXk6ImNsZWFyU29ydCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLnNvcnQoW10pfX0se2tleToiaXNTb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5pc0xpc3RPZlNvcnRlZENvbHVtbnNFbXB0eSgpfX0se2tleToiZ2V0U29ydENvbmZpZyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oZCl7cmV0dXJuIGlvKGQpP3RoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRDb2x1bW5Tb3J0U3RhdGUoZCk6dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldFNvcnRTdGF0ZXMoKX19LHtrZXk6InNldFNvcnRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRo''@;'; put 'put ''aXMuZ2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKGQpO3RoaXMuYXJlVmFsaWRTb3J0Q29uZmlncyhoKSYmdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnNldFNvcnRTdGF0ZXMoaCl9fSx7a2V5OiJnZXROb3JtYWxpemVkU29ydENvbmZpZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3JldHVybiBBcnJheS5pc0FycmF5KGQpP2Quc2xpY2UoMCwxKTpbZF19fSx7a2V5OiJhcmVWYWxpZFNvcnRDb25maWdzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmhvdC5jb3VudENvbHMo''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24gUWZ0KGwpe2lmKGwuc29tZShmdW5jdGlvbihhKXtyZXR1cm4hMT09PWZ1bmN0aW9uIEpmdChsKXtpZighMT09PXBhKGwpKXJldHVybiExO3ZhciBhPWwuc29ydE9yZGVyO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGwuY29sdW1uKSYmW01MLGtMXS5pbmNsdWRl''@;'; put 'put ''cyhhKX0oYSl9KSlyZXR1cm4hMTt2YXIgYz1sLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5jb2x1bW59KTtyZXR1cm4gbmV3IFNldChjKS5zaXplPT09Yy5sZW5ndGh9KGQpJiZkLmV2ZXJ5KGZ1bmN0aW9uKG0pe3ZhciBfPW0uY29sdW1uO3JldHVybiBfPD1oJiZfPj0wfSl9fSx7a2V5OiJz''@;'; put 'put ''YXZlQWxsU29ydFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEFsbENvbHVtbnNQcm9wZXJ0aWVzKCk7bS5pbml0aWFsQ29uZmlnPWhhKGQsZnVuY3Rpb24oWCl7dmFyIGFlPVguY29sdW1uLHBlPXAzZShYLHlkdCk7''@;'; put 'put ''cmV0dXJuIGgzZSh7Y29sdW1uOmguaG90LnRvUGh5c2ljYWxDb2x1bW4oYWUpfSxwZSl9KSx0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlU2F2ZSIsImNvbHVtblNvcnRpbmciLG0pfX0se2tleToiZ2V0QWxsU2F2ZWRTb3J0U2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGQ9dGhpcyxoPXt9O3RoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiwiY29sdW1uU29ydGluZyIsaCk7dmFyIG09aC52YWx1ZTtyZXR1cm4gaW8obSkmJkFycmF5LmlzQXJyYXkobS5pbml0aWFsQ29uZmlnKSYmKG0uaW5pdGlhbENvbmZpZz1oYShtLmluaXRpYWxDb25m''@;'; put 'put ''aWcsZnVuY3Rpb24oWCl7dmFyIGFlPVguY29sdW1uLHBlPXAzZShYLGJkdCk7cmV0dXJuIGgzZSh7Y29sdW1uOmQuaG90LnRvVmlzdWFsQ29sdW1uKGFlKX0scGUpfSkpLG19fSx7a2V5OiJnZXRDb2x1bW5OZXh0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmNvbHVtblN0''@;'; put 'put ''YXRlc01hbmFnZXIuZ2V0U29ydE9yZGVyT2ZDb2x1bW4oZCk7aWYoaW8oaCkpe3ZhciBtPVgyZShoKTtyZXR1cm4gaW8obSk/e2NvbHVtbjpkLHNvcnRPcmRlcjptfTp2b2lkIDB9dmFyIF89dGhpcy5ob3QuY291bnRDb2xzKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihkKSYmZD49MCYmZDxfKXJl''@;'; put 'put ''dHVybntjb2x1bW46ZCxzb3J0T3JkZXI6WDJlKCl9fX0se2tleToiZ2V0TmV4dFNvcnRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYXBwZW5kIixtPXRoaXMuY29sdW1uU3RhdGVz''@;'; put 'put ''TWFuYWdlci5nZXRJbmRleE9mQ29sdW1uSW5Tb3J0UXVldWUoZCksXz0tMSE9PW0sTz10aGlzLmdldFNvcnRDb25maWcoKSxYPXRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyhkKTtpZihfKXtpZihMbChYKSlyZXR1cm5bXS5jb25jYXQoaXkoTy5zbGljZSgwLG0pKSxpeShPLnNsaWNlKG0rMSkp''@;'; put 'put ''KTtpZigiYXBwZW5kIj09PWgpcmV0dXJuW10uY29uY2F0KGl5KE8uc2xpY2UoMCxtKSksaXkoTy5zbGljZShtKzEpKSxbWF0pO2lmKCJyZXBsYWNlIj09PWgpcmV0dXJuW10uY29uY2F0KGl5KE8uc2xpY2UoMCxtKSksW1hdLGl5KE8uc2xpY2UobSsxKSkpfXJldHVybiBpbyhYKT9PLmNvbmNh''@;'; put 'put ''dChYKTpPfX0se2tleToiZ2V0UGx1Z2luQ29sdW1uQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihkKXtpZihwYShkKSl7dmFyIGg9ZFt0aGlzLnBsdWdpbktleV07aWYocGEoaCkpcmV0dXJuIGh9cmV0dXJue319fSx7a2V5OiJnZXRNZXJnZWRQbHVnaW5TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''ZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV0sbT10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0QWxsQ29sdW1uc1Byb3BlcnRpZXMoKSxfPXRoaXMuaG90LmdldENlbGxNZXRhKDAsZCksTz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoXyk7cmV0dXJuIEFy''@;'; put 'put ''cmF5LmlzQXJyYXkoTy5jb2x1bW5zKT9PYmplY3QuYXNzaWduKG0saCx0aGlzLmdldFBsdWdpbkNvbHVtbkNvbmZpZyhPLmNvbHVtbnNbZF0pKTpQbChPLmNvbHVtbnMpP09iamVjdC5hc3NpZ24obSxoLHRoaXMuZ2V0UGx1Z2luQ29sdW1uQ29uZmlnKE8uY29sdW1ucyhkKSkpOk9iamVjdC5h''@;'; put 'put ''c3NpZ24obSxoKX19LHtrZXk6ImdldEZpcnN0Q2VsbFNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGQpLG09T2JqZWN0LmNyZWF0ZShoKTtyZXR1cm4gbVt0aGlzLnBsdWdpbktleV09dGhpcy5jb2x1bW5NZXRhQ2FjaGUuZ2V0VmFsdWVB''@;'; put 'put ''dEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZCkpLG19fSx7a2V5OiJnZXROdW1iZXJPZlJvd3NUb1NvcnQiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuaG90LmdldFNldHRpbmdzKCk7cmV0dXJuIGgubWF4Um93czw9ZD9oLm1heFJvd3M6ZC1oLm1pblNwYXJlUm93c319''@;'; put 'put ''LHtrZXk6InNvcnRCeVByZXNldFNvcnRTdGF0ZXMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXM7aWYoMCE9PWQubGVuZ3RoKXtmb3IodmFyIG09W10sXz10aGlzLmhvdC5jb3VudFJvd3MoKSxPPWZ1bmN0aW9uKGx0KXtyZXR1cm4gaGEoZCxmdW5jdGlvbihkdCl7cmV0dXJuIGguaG90''@;'; put 'put ''LmdldERhdGFBdENlbGwobHQsZHQuY29sdW1uKX0pfSxYPTA7WDx0aGlzLmdldE51bWJlck9mUm93c1RvU29ydChfKTtYKz0xKW0ucHVzaChbdGhpcy5ob3QudG9QaHlzaWNhbFJvdyhYKV0uY29uY2F0KE8oWCkpKTt2YXIgYWU9aGEobSxmdW5jdGlvbihaZSl7cmV0dXJuIFplWzBdfSk7IWZ1''@;'; put 'put ''bmN0aW9uIGlkdChsLGMpe2Zvcih2YXIgYT1kZHQoYyksZj1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGY+Mj9mLTI6MCksaD0yO2g8ZjtoKyspZFtoLTJdPWFyZ3VtZW50c1toXTtsLnNvcnQoYS5hcHBseSh2b2lkIDAsZCkpfShtLHRoaXMucGx1Z2luS2V5LGhhKGQsZnVuY3Rpb24o''@;'; put 'put ''WmUpe3JldHVybiBaZS5zb3J0T3JkZXJ9KSxoYShkLGZ1bmN0aW9uKFplKXtyZXR1cm4gaC5nZXRGaXJzdENlbGxTZXR0aW5ncyhaZS5jb2x1bW4pfSkpO2Zvcih2YXIgcGU9bS5sZW5ndGg7cGU8XztwZSs9MSltLnB1c2goW3BlXS5jb25jYXQoTyhwZSkpKTt2YXIgYmU9aGEobSxmdW5jdGlv''@;'; put 'put ''bihaZSl7cmV0dXJuIFplWzBdfSkseGU9bmV3IE1hcChoYShhZSxmdW5jdGlvbihaZSxsdCl7cmV0dXJuW1plLGJlW2x0XV19KSksVmU9aGEodGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksZnVuY3Rpb24oWmUpe3JldHVybiB4ZS5oYXMoWmUpP3hlLmdldCha''@;'; put 'put ''ZSk6WmV9KTt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoVmUpfWVsc2UgdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGUuZ2V0VmFsdWVzKCkpfX0se2tleToibG9hZE9yU29ydEJ5U2V0''@;'; put 'put ''dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5nZXRBbGxTYXZlZFNvcnRTZXR0aW5ncygpO2lmKHBhKGQpKXRoaXMuc29ydEJ5U2V0dGluZ3MoZCk7ZWxzZXt2YXIgaD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XTt0aGlzLnNvcnRCeVNldHRpbmdzKGgp''@;'; put 'put ''fX19LHtrZXk6InNvcnRCeVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihkKXtpZihwYShkKSl7dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnVwZGF0ZUFsbENvbHVtbnNQcm9wZXJ0aWVzKGQpO3ZhciBoPWQuaW5pdGlhbENvbmZpZzsoQXJyYXkuaXNBcnJheShoKXx8cGEoaCkpJiZ0aGlzLnNv''@;'; put 'put ''cnQoaCl9ZWxzZSB0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6Im9uQWZ0ZXJHZXRDb2xIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09SjJlKGgpO2lmKCExIT09UTJlKGQsaCkmJm51bGwhPT1tKXt2YXIgXz10aGlzLmdldEZpcnN0Q2VsbFNldHRpbmdzKGQpW3RoaXMucGx1Z2lu''@;'; put 'put ''S2V5XTt0aGlzLnVwZGF0ZUhlYWRlckNsYXNzZXMobSx0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIsZCxfLmluZGljYXRvcixfLmhlYWRlckFjdGlvbil9fX0se2tleToidXBkYXRlSGVhZGVyQ2xhc3NlcyIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYoSm8oZCxmdW5jdGlvbiByZHQoKXtyZXR1cm4g''@;'; put 'put ''QXJyYXkuZnJvbShyM2UudmFsdWVzKCkpLmNvbmNhdChuM2UsZTNlLHQzZSl9KCkpLCExIT09dGhpcy5lbmFibGVkKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxtPW5ldyBBcnJheShoPjE/aC0xOjApLF89MTtfPGg7XysrKW1bXy0xXT1hcmd1bWVudHNbX107Z2koZCxuZHQuYXBwbHko''@;'; put 'put ''dm9pZCAwLG0pKX19fSx7a2V5OiJvblVwZGF0ZVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihkKXtVNShfMyhhLnByb3RvdHlwZSksIm9uVXBkYXRlU2V0dGluZ3MiLHRoaXMpLmNhbGwodGhpcyksbnVsbCE9PXRoaXMuY29sdW1uTWV0YUNhY2hlJiZ0aGlzLmNvbHVtbk1ldGFDYWNoZS5pbml0''@;'; put 'put ''KHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE51bWJlck9mSW5kZXhlcygpKSxpbyhkW3RoaXMucGx1Z2luS2V5XSkmJnRoaXMuc29ydEJ5U2V0dGluZ3MoZFt0aGlzLnBsdWdpbktleV0pfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbihkKXshMD09PWQmJnRo''@;'; put 'put ''aXMuaG90LnZpZXcmJnRoaXMubG9hZE9yU29ydEJ5U2V0dGluZ3MoKX19LHtrZXk6Indhc0NsaWNrYWJsZUhlYWRlckNsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RDZWxsU2V0dGluZ3MoaClbdGhpcy5wbHVnaW5LZXldLmhlYWRlckFjdGlvbiYmIlNQ''@;'; put 'put ''QU4iPT09ZC50YXJnZXQubm9kZU5hbWV9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyl7ITEhPT1WSyhoLnJvdyxoLmNvbCxkKSYmdGhpcy53YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKGQsaC5jb2wpJiZ0aGlzLmhvdC5nZXRTaG9ydGN1''@;'; put 'put ''dE1hbmFnZXIoKS5pc0N0cmxQcmVzc2VkKCkmJihfLmNvbHVtbj0hMCl9fSx7a2V5OiJvbkFmdGVyT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihkLGgpeyExIT09VksoaC5yb3csaC5jb2wsZCkmJnRoaXMud2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZChkLGguY29sKSYmKHRoaXMu''@;'; put 'put ''aG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKSYmKHRoaXMuaG90LmRlc2VsZWN0Q2VsbCgpLHRoaXMuaG90LnNlbGVjdENvbHVtbnMoaC5jb2wpKSx0aGlzLnNvcnQodGhpcy5nZXRDb2x1bW5OZXh0Q29uZmlnKGguY29sKSkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgZDtudWxsPT09KGQ9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyKXx8dm9pZCAwPT09ZHx8ZC5kZXN0cm95KCksVTUoXzMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVUt9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA1MH19XSksYX0oR2EpO2Z1bmN0aW9uIEFrKGwpe3JldHVybihBaz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXty''@;'; put 'put ''ZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGIzZShsLGMpe2Zvcih2YXIgYT0wO2E8''@;'; put 'put ''Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsVmR0KGYua2V5KSxmKX19ZnVuY3Rpb24gVmR0KGwpe3ZhciBjPWZ1''@;'; put 'put ''bmN0aW9uIEJkdChsLGMpe2lmKCJvYmplY3QiIT09QWsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09QWsoZikpcmV0dXJuIGY7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUFrKGMpP2M6U3RyaW5nKGMpfVQoNDIxNDApO3ZhciBqZHQ9ZnVu''@;'; put 'put ''Y3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIEhkdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLnBsdWdpbj1jLHRoaXMuaG90PXRoaXMucGx1Z2lu''@;'; put 'put ''LmhvdCx0aGlzLmVuZHBvaW50cz1bXSx0aGlzLnNldHRpbmdzPWEsdGhpcy5zZXR0aW5nc1R5cGU9ImFycmF5Iix0aGlzLmN1cnJlbnRFbmRwb2ludD1udWxsLHRoaXMuY2VsbHNUb1NldENhY2hlPVtdfXJldHVybiBmdW5jdGlvbiBOZHQobCxjLGEpe2MmJmIzZShsLnByb3RvdHlwZSxjKSxh''@;'; put 'put ''JiZiM2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ2V0RW5kcG9pbnQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9pbnRE''@;'; put 'put ''YXRhKHRoaXMuc2V0dGluZ3MpW2FdOnRoaXMuZW5kcG9pbnRzW2FdfX0se2tleToiZ2V0QWxsRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9pbnREYXRhKHRoaXMuc2V0dGluZ3MpOnRo''@;'; put 'put ''aXMuZW5kcG9pbnRzfX0se2tleToiZmlsbE1pc3NpbmdFbmRwb2ludERhdGEiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcnNlU2V0dGluZ3MoYS5jYWxsKHRoaXMpKX19LHtrZXk6InBhcnNlU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZD1bXSxoPWE7''@;'; put 'put ''aWYoaHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuc2V0dGluZ3MpcmV0dXJuIGh8fChoPXRoaXMuc2V0dGluZ3MpLFJuKGgsZnVuY3Rpb24obSl7dmFyIF89e307Zi5hc3NpZ25TZXR0aW5nKG0sXywicmFuZ2VzIixbWzAsZi5ob3QuY291bnRSb3dzKCktMV1dKSxmLmFzc2lnblNldHRpbmco''@;'; put 'put ''bSxfLCJyZXZlcnNlZFJvd0Nvb3JkcyIsITEpLGYuYXNzaWduU2V0dGluZyhtLF8sImRlc3RpbmF0aW9uUm93IixuZXcgRXJyb3IoIlxuICAgICAgICBZb3UgbXVzdCBwcm92aWRlIGEgZGVzdGluYXRpb24gcm93IGZvciB0aGUgQ29sdW1uIFN1bW1hcnkgcGx1Z2luIGluIG9yZGVyIHRvIHdv''@;'; put 'put ''cmsgcHJvcGVybHkhXG4gICAgICAiKSksZi5hc3NpZ25TZXR0aW5nKG0sXywiZGVzdGluYXRpb25Db2x1bW4iLG5ldyBFcnJvcigiXG4gICAgICAgIFlvdSBtdXN0IHByb3ZpZGUgYSBkZXN0aW5hdGlvbiBjb2x1bW4gZm9yIHRoZSBDb2x1bW4gU3VtbWFyeSBwbHVnaW4gaW4gb3JkZXIgdG8g''@;'; put 'put ''d29yayBwcm9wZXJseSFcbiAgICAgICIpKSxmLmFzc2lnblNldHRpbmcobSxfLCJzb3VyY2VDb2x1bW4iLG0uZGVzdGluYXRpb25Db2x1bW4pLGYuYXNzaWduU2V0dGluZyhtLF8sInR5cGUiLCJzdW0iKSxmLmFzc2lnblNldHRpbmcobSxfLCJmb3JjZU51bWVyaWMiLCExKSxmLmFzc2lnblNl''@;'; put 'put ''dHRpbmcobSxfLCJzdXBwcmVzc0RhdGFUeXBlRXJyb3JzIiwhMCksZi5hc3NpZ25TZXR0aW5nKG0sXywic3VwcHJlc3NEYXRhVHlwZUVycm9ycyIsITApLGYuYXNzaWduU2V0dGluZyhtLF8sImN1c3RvbUZ1bmN0aW9uIixudWxsKSxmLmFzc2lnblNldHRpbmcobSxfLCJyZWFkT25seSIsITAp''@;'; put 'put ''LGYuYXNzaWduU2V0dGluZyhtLF8sInJvdW5kRmxvYXQiLCExKSxkLnB1c2goXyl9KSxkO3RoaXMuc2V0dGluZ3NUeXBlPSJmdW5jdGlvbiJ9fSx7a2V5OiJhc3NpZ25TZXR0aW5nIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoKXtpZigicmFuZ2VzIiE9PWR8fHZvaWQgMCE9PWFbZF0pe2lmKCJy''@;'; put 'put ''YW5nZXMiIT09ZHx8MCE9PWFbZF0ubGVuZ3RoKWlmKHZvaWQgMD09PWFbZF0pe2lmKGggaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBoO2ZbZF09aH1lbHNlIGZbZF09ImRlc3RpbmF0aW9uUm93Ij09PWQmJmYucmV2ZXJzZWRSb3dDb29yZHM/dGhpcy5ob3QuY291bnRSb3dzKCktYVtkXS0xOmFb''@;'; put 'put ''ZF19ZWxzZSBmW2RdPWh9fSx7a2V5OiJyZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe2lmKCJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZSl7dmFyIGg9YS5pbmRleE9mKCJyb3ciKT4tMT8icm93IjoiY29sIixtPXRoaXMuZ2V0''@;'; put 'put ''QWxsRW5kcG9pbnRzKCk7Um4obSxmdW5jdGlvbihfKXsicm93Ij09PWgmJl8uZGVzdGluYXRpb25Sb3c+PWYmJigiaW5zZXJ0X3JvdyI9PT1hP18uYWx0ZXJSb3dPZmZzZXQ9ZDoicmVtb3ZlX3JvdyI9PT1hJiYoXy5hbHRlclJvd09mZnNldD0tMSpkKSksImNvbCI9PT1oJiZfLmRlc3RpbmF0''@;'; put 'put ''aW9uQ29sdW1uPj1mJiYoImluc2VydF9jb2wiPT09YT9fLmFsdGVyQ29sdW1uT2Zmc2V0PWQ6InJlbW92ZV9jb2wiPT09YSYmKF8uYWx0ZXJDb2x1bW5PZmZzZXQ9LTEqZCkpfSksdGhpcy5yZXNldEFsbEVuZHBvaW50cyhtLCExKX19fSx7a2V5OiJyZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVB''@;'; put 'put ''bHRlcmF0aW9uIix2YWx1ZTpmdW5jdGlvbihhLGYsZCxoLG0pe3ZhciBfPXRoaXMsTz0hKGFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdKXx8YXJndW1lbnRzWzVdO2lmKCJmdW5jdGlvbiIhPT10aGlzLnNldHRpbmdzVHlwZSl7dmFyIGFlPWEuaW5kZXhPZigicm93''@;'; put 'put ''Iik+LTE/InJvdyI6ImNvbCIscGU9YS5pbmRleE9mKCJyZW1vdmUiKT4tMT8tMToxLGJlPXRoaXMuZ2V0QWxsRW5kcG9pbnRzKCkseGU9MD09PWEuaW5kZXhPZigibW92ZV9yb3ciKSxWZT1mO1JuKGJlLGZ1bmN0aW9uKFplKXsicm93Ij09PWFlJiZaZS5kZXN0aW5hdGlvblJvdz49VmUmJiha''@;'; put 'put ''ZS5hbHRlclJvd09mZnNldD1wZSpkKSwiY29sIj09PWFlJiZaZS5kZXN0aW5hdGlvbkNvbHVtbj49VmUmJihaZS5hbHRlckNvbHVtbk9mZnNldD1wZSpkKX0pLHRoaXMucmVzZXRBbGxFbmRwb2ludHMoYmUsIXhlKSxSbihiZSx4ZT9mdW5jdGlvbihaZSl7Xy5leHRlbmRFbmRwb2ludFJhbmdl''@;'; put 'put ''cyhaZSxWZSxoWzBdLGgubGVuZ3RoKSxfLnJlY3JlYXRlUGh5c2ljYWxSYW5nZXMoWmUpLF8uY2xlYXJPZmZzZXRJbmZvcm1hdGlvbihaZSl9OmZ1bmN0aW9uKFplKXtfLnNoaWZ0RW5kcG9pbnRDb29yZGluYXRlcyhaZSxWZSl9KSxPJiZ0aGlzLnJlZnJlc2hBbGxFbmRwb2ludHMoKX1lbHNl''@;'; put 'put ''IHRoaXMuaG90LmFkZEhvb2tPbmNlKCJiZWZvcmVWaWV3UmVuZGVyIixmdW5jdGlvbiBaZSgpe3JldHVybiBfLmhvdC5yZW1vdmVIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixaZSksXy5yZWZyZXNoQWxsRW5kcG9pbnRzKCl9KX19LHtrZXk6ImNsZWFyT2Zmc2V0SW5mb3JtYXRpb24iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGEpe2EuYWx0ZXJSb3dPZmZzZXQ9dm9pZCAwLGEuYWx0ZXJDb2x1bW5PZmZzZXQ9dm9pZCAwfX0se2tleToiZXh0ZW5kRW5kcG9pbnRSYW5nZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgpe1JuKGEucmFuZ2VzLGZ1bmN0aW9uKG0pe21bMV0mJihmPj1tWzBdJiZmPD1tWzFd''@;'; put 'put ''P2Q+bVsxXT9tWzFdKz1oOmQ8bVswXSYmKG1bMF0tPWgpOmQ+PW1bMF0mJmQ8PW1bMV0mJihtWzFdLT1oLGY8PW1bMF0mJihtWzBdKz0xLG1bMV0rPTEpKSl9KX19LHtrZXk6InJlY3JlYXRlUGh5c2ljYWxSYW5nZXMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsaD1bXSxtPVtdO1Ju''@;'; put 'put ''KGEucmFuZ2VzLGZ1bmN0aW9uKF8pe3ZhciBPPVtdO2lmKF9bMV0pZm9yKHZhciBYPV9bMF07WDw9X1sxXTtYKyspTy5wdXNoKGYuaG90LnRvUGh5c2ljYWxSb3coWCkpO2Vsc2UgTy5wdXNoKGYuaG90LnRvUGh5c2ljYWxSb3coX1swXSkpO20ucHVzaChPKX0pLFJuKG0sZnVuY3Rpb24oXyl7''@;'; put 'put ''dmFyIE89W107Um4oXyxmdW5jdGlvbihYLGFlKXswPT09YWU/Ty5wdXNoKFgpOl9bYWVdIT09X1thZS0xXSsxJiYoTy5wdXNoKF9bYWUtMV0pLGgucHVzaChPKSwoTz1bXSkucHVzaChYKSksYWU9PT1fLmxlbmd0aC0xJiYoTy5wdXNoKFgpLGgucHVzaChPKSl9KX0pLGEucmFuZ2VzPWh9fSx7''@;'; put 'put ''a2V5OiJzaGlmdEVuZHBvaW50Q29vcmRpbmF0ZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7YS5hbHRlclJvd09mZnNldCYmMCE9PWEuYWx0ZXJSb3dPZmZzZXQ/KGEuZGVzdGluYXRpb25Sb3crPWEuYWx0ZXJSb3dPZmZzZXR8fDAsUm4oYS5yYW5nZXMsZnVuY3Rpb24oZCl7Um4oZCxmdW5jdGlv''@;'; put 'put ''bihoLG0pe2g+PWYmJihkW21dKz1hLmFsdGVyUm93T2Zmc2V0fHwwKX0pfSkpOmEuYWx0ZXJDb2x1bW5PZmZzZXQmJjAhPT1hLmFsdGVyQ29sdW1uT2Zmc2V0JiYoYS5kZXN0aW5hdGlvbkNvbHVtbis9YS5hbHRlckNvbHVtbk9mZnNldHx8MCxhLnNvdXJjZUNvbHVtbis9YS5hbHRlckNvbHVt''@;'; put 'put ''bk9mZnNldHx8MCl9fSx7a2V5OiJyZXNldEFsbEVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksZD0hKGFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2Yuc29tZShmdW5jdGlvbihtKXt2YXIgTz1tLmFsdGVyQ29sdW1uT2Zmc2V0fHwwO3JldHVybiBtLmRlc3RpbmF0aW9uUm93KyhtLmFsdGVyUm93T2Zmc2V0fHwwKT49YS5ob3QuY291bnRSb3dzKCl8fG0uZGVzdGlu''@;'; put 'put ''YXRpb25Db2x1bW4rTz49YS5ob3QuY291bnRDb2xzKCl9KXx8KHRoaXMuY2VsbHNUb1NldENhY2hlPVtdLFJuKGYsZnVuY3Rpb24obSl7YS5yZXNldEVuZHBvaW50VmFsdWUobSxkKX0pLHRoaXMuaG90LnNldERhdGFBdENlbGwodGhpcy5jZWxsc1RvU2V0Q2FjaGUsIkNvbHVtblN1bW1hcnku''@;'; put 'put ''cmVzZXQiKSx0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSl9fSx7a2V5OiJyZWZyZXNoQWxsRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10sUm4odGhpcy5nZXRBbGxFbmRwb2ludHMoKSxmdW5jdGlvbihmKXthLmN1cnJlbnRFbmRw''@;'; put 'put ''b2ludD1mLGEucGx1Z2luLmNhbGN1bGF0ZShmKSxhLnNldEVuZHBvaW50VmFsdWUoZiwiaW5pdCIpfSksdGhpcy5jdXJyZW50RW5kcG9pbnQ9bnVsbCx0aGlzLmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1Rv''@;'; put 'put ''U2V0Q2FjaGU9W119fSx7a2V5OiJyZWZyZXNoQ2hhbmdlZEVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxkPVtdO3RoaXMuY2VsbHNUb1NldENhY2hlPVtdLFJuKGEsZnVuY3Rpb24oaCxtLF8peyIiLmNvbmNhdChoWzJdfHwiIikhPT0iIi5jb25jYXQoaFszXSkmJlJu''@;'; put 'put ''KGYuZ2V0QWxsRW5kcG9pbnRzKCksZnVuY3Rpb24oTyxYKXtmLmhvdC5wcm9wVG9Db2woX1ttXVsxXSk9PT1PLnNvdXJjZUNvbHVtbiYmLTE9PT1kLmluZGV4T2YoWCkmJmQucHVzaChYKX0pfSksUm4oZCxmdW5jdGlvbihoKXtmLnJlZnJlc2hFbmRwb2ludChmLmdldEVuZHBvaW50KGgpKX0p''@;'; put 'put ''LHRoaXMuaG90LnNldERhdGFBdENlbGwodGhpcy5jZWxsc1RvU2V0Q2FjaGUsIkNvbHVtblN1bW1hcnkucmVzZXQiKSx0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXX19LHtrZXk6InJlZnJlc2hFbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50RW5kcG9pbnQ9YSx0aGlzLnBs''@;'; put 'put ''dWdpbi5jYWxjdWxhdGUoYSksdGhpcy5zZXRFbmRwb2ludFZhbHVlKGEpLHRoaXMuY3VycmVudEVuZHBvaW50PW51bGx9fSx7a2V5OiJyZXNldEVuZHBvaW50VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0p''@;'; put 'put ''fHxhcmd1bWVudHNbMV0saD1hLmFsdGVyQ29sdW1uT2Zmc2V0fHwwO3RoaXMuY2VsbHNUb1NldENhY2hlLnB1c2goW3RoaXMuaG90LnRvVmlzdWFsUm93KGEuZGVzdGluYXRpb25Sb3crKGYmJmEuYWx0ZXJSb3dPZmZzZXR8fDApKSx0aGlzLmhvdC50b1Zpc3VhbENvbHVtbihhLmRlc3RpbmF0''@;'; put 'put ''aW9uQ29sdW1uKyhmP2g6MCkpLCIiXSl9fSx7a2V5OiJzZXRFbmRwb2ludFZhbHVlIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saD10aGlzLmhvdC50b1Zpc3VhbFJvdyhhLmRlc3RpbmF0''@;'; put 'put ''aW9uUm93KTtpZihhLmRlc3RpbmF0aW9uUm93Pj10aGlzLmhvdC5jb3VudFJvd3MoKXx8YS5kZXN0aW5hdGlvbkNvbHVtbj49dGhpcy5ob3QuY291bnRDb2xzKCkpdGhpcy50aHJvd091dE9mQm91bmRzV2FybmluZygpO2Vsc2V7dmFyIG09dGhpcy5ob3QudG9WaXN1YWxSb3coYS5kZXN0aW5h''@;'; put 'put ''dGlvblJvdyk7aWYobnVsbCE9PW0pe3ZhciBfPXRoaXMuaG90LmdldENlbGxNZXRhKG0sYS5kZXN0aW5hdGlvbkNvbHVtbik7KCJpbml0Ij09PWZ8fF8ucmVhZE9ubHkhPT1hLnJlYWRPbmx5KSYmKF8ucmVhZE9ubHk9YS5yZWFkT25seSxfLmNsYXNzTmFtZT0iY29sdW1uU3VtbWFyeVJlc3Vs''@;'; put 'put ''dCIpfWEucm91bmRGbG9hdCYmIWlzTmFOKGEucmVzdWx0KSYmKGEucmVzdWx0PWEucmVzdWx0LnRvRml4ZWQoYS5yb3VuZEZsb2F0KSksZD90aGlzLmhvdC5zZXREYXRhQXRDZWxsKGgsYS5kZXN0aW5hdGlvbkNvbHVtbixhLnJlc3VsdCwiQ29sdW1uU3VtbWFyeS5zZXQiKTp0aGlzLmNlbGxz''@;'; put 'put ''VG9TZXRDYWNoZS5wdXNoKFtoLGEuZGVzdGluYXRpb25Db2x1bW4sYS5yZXN1bHRdKSxhLmFsdGVyUm93T2Zmc2V0PXZvaWQgMCxhLmFsdGVyQ29sdW1uT2Zmc2V0PXZvaWQgMH19fSx7a2V5OiJ0aHJvd091dE9mQm91bmRzV2FybmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtXbCgiT25lIG9mIHRo''@;'; put 'put ''ZSBDb2x1bW4gU3VtbWFyeSBwbHVnaW5zJyBkZXN0aW5hdGlvbiBwb2ludHMgeW91IHByb3ZpZGVkIGlzIGJleW9uZCB0aGUgdGFibGUgYm91bmRhcmllcyEiKX19XSksbH0oKTtjb25zdCB6ZHQ9amR0O2Z1bmN0aW9uIFpLKGwpe3JldHVybiBudWxsPT1sfHxpc05hTihsKX1mdW5jdGlvbiBv''@;'; put 'put ''eShsKXtyZXR1cm4ob3k9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rv''@;'; put 'put ''cj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX12YXIgXzNlO2Z1bmN0aW9uIHczZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxl''@;'; put 'put ''PSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsV2R0KGYua2V5KSxmKX19ZnVuY3Rpb24gV2R0KGwpe3ZhciBjPWZ1bmN0aW9uIEdkdChsLGMpe2lmKCJvYmplY3QiIT09b3kobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9s''@;'; put 'put ''LnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09b3koZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0''@;'; put 'put ''cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PW95KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHhMKCl7cmV0dXJuIHhMPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxm''@;'; put 'put ''KXt2YXIgZD1mdW5jdGlvbiAkZHQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPWF5KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4g''@;'; put 'put ''aC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0seEwuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFlLKGwsYyl7cmV0dXJuKFlLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYs''@;'; put 'put ''ZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gYXkobCl7cmV0dXJuKGF5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEp''@;'; put 'put ''fSkobCl9dmFyIFdLPSJjb2x1bW5TdW1tYXJ5Iix0aHQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIEtkdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j''@;'; put 'put ''dGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZZSyhsLGMpfShh''@;'; put 'put ''LGwpO3ZhciBjPWZ1bmN0aW9uIHFkdChsKXt2YXIgYz1mdW5jdGlvbiBRZHQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3Jl''@;'; put 'put ''dHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1heShsKTtpZihjKXt2YXIgaD1heSh0aGlzKS5jb25zdHJ1Y3Rv''@;'; put 'put ''cjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gWGR0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09b3koYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIEpkdChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFs''@;'; put 'put ''aXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVuY3Rpb24gWmR0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBj''@;'; put 'put ''bGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikpLmVuZHBvaW50cz1udWxsLGR9cmV0dXJuIGZ1bmN0aW9uIFlkdChsLGMsYSl7YyYmdzNlKGwucHJvdG90eXBlLGMpLGEmJnczZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3''@;'; put 'put ''cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1dLXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuc2V0dGluZ3M9''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtXS10sdGhpcy5lbmRwb2ludHM9bmV3IHpkdCh0aGlzLHRoaXMuc2V0dGluZ3MpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJJbml0LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0''@;'; put 'put ''ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckNoYW5nZS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsZnVuY3Rpb24oaCxtLF8pe3JldHVybiBkLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlv''@;'; put 'put ''bigiaW5zZXJ0X3JvdyIsaCxtLG51bGwsXyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oaCxtLF8pe3JldHVybiBkLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbigiaW5zZXJ0X2NvbCIsaCxtLG51bGwsXyl9KSx0aGlzLmFk''@;'; put 'put ''ZEhvb2soImJlZm9yZVJlbW92ZVJvdyIsZnVuY3Rpb24oKXtmb3IodmFyIGgsbT1hcmd1bWVudHMubGVuZ3RoLF89bmV3IEFycmF5KG0pLE89MDtPPG07TysrKV9bT109YXJndW1lbnRzW09dO3JldHVybihoPWQuZW5kcG9pbnRzKS5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlv''@;'; put 'put ''bi5hcHBseShoLFsicmVtb3ZlX3JvdyJdLmNvbmNhdChfKSl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsZnVuY3Rpb24oKXtmb3IodmFyIGgsbT1hcmd1bWVudHMubGVuZ3RoLF89bmV3IEFycmF5KG0pLE89MDtPPG07TysrKV9bT109YXJndW1lbnRzW09dO3JldHVybihoPWQu''@;'; put 'put ''ZW5kcG9pbnRzKS5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbi5hcHBseShoLFsicmVtb3ZlX2NvbCJdLmNvbmNhdChfKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbihoLG0sXyl7cmV0dXJuIGQuZW5kcG9pbnRzLnJlc2V0U2V0dXBBZnRlclN0''@;'; put 'put ''cnVjdHVyZUFsdGVyYXRpb24oImluc2VydF9yb3ciLGgsbSxudWxsLF8pfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oaCxtLF8pe3JldHVybiBkLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfY29sIixoLG0sbnVs''@;'; put 'put ''bCxfKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBoLG09YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheShtKSxPPTA7TzxtO08rKylfW09dPWFyZ3VtZW50c1tPXTtyZXR1cm4oaD1kLmVuZHBvaW50cykucmVzZXRTZXR1cEFmdGVyU3RydWN0''@;'; put 'put ''dXJlQWx0ZXJhdGlvbi5hcHBseShoLFsicmVtb3ZlX3JvdyJdLmNvbmNhdChfKSl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgaCxtPWFyZ3VtZW50cy5sZW5ndGgsXz1uZXcgQXJyYXkobSksTz0wO088bTtPKyspX1tPXT1hcmd1bWVudHNbT107''@;'; put 'put ''cmV0dXJuKGg9ZC5lbmRwb2ludHMpLnJlc2V0U2V0dXBBZnRlclN0cnVjdHVyZUFsdGVyYXRpb24uYXBwbHkoaCxbInJlbW92ZV9jb2wiXS5jb25jYXQoXykpfSksdGhpcy5hZGRIb29rKCJhZnRlclJvd01vdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlclJvd01vdmUuYXBwbHkoZCxh''@;'; put 'put ''cmd1bWVudHMpfSkseEwoYXkoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVuZHBvaW50cz1udWxsLHRoaXMuc2V0dGluZ3M9bnVsbCx0aGlzLmN1cnJlbnRFbmRwb2ludD1u''@;'; put 'put ''dWxsfX0se2tleToiY2FsY3VsYXRlIix2YWx1ZTpmdW5jdGlvbihkKXtzd2l0Y2goZC50eXBlLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic3VtIjpkLnJlc3VsdD10aGlzLmNhbGN1bGF0ZVN1bShkKTticmVhaztjYXNlIm1pbiI6Y2FzZSJtYXgiOmQucmVzdWx0PXRoaXMuY2FsY3VsYXRlTWluTWF4''@;'; put 'put ''KGQsZC50eXBlKTticmVhaztjYXNlImNvdW50IjpkLnJlc3VsdD10aGlzLmNvdW50RW50cmllcyhkKTticmVhaztjYXNlImF2ZXJhZ2UiOmQucmVzdWx0PXRoaXMuY2FsY3VsYXRlQXZlcmFnZShkKTticmVhaztjYXNlImN1c3RvbSI6ZC5yZXN1bHQ9ZC5jdXN0b21GdW5jdGlvbi5jYWxsKHRo''@;'; put 'put ''aXMsZCl9fX0se2tleToiY2FsY3VsYXRlU3VtIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09MDtyZXR1cm4gbWEoZC5yYW5nZXMsZnVuY3Rpb24oXyl7bSs9aC5nZXRQYXJ0aWFsU3VtKF8sZC5zb3VyY2VDb2x1bW4pfSksbX19LHtrZXk6ImdldFBhcnRpYWxTdW0iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGQsaCl7dmFyIG09MCxfPWRbMV18fGRbMF0sTz1udWxsLFg9MDtkb3tpZihudWxsIT09KE89WksoTz10aGlzLmdldENlbGxWYWx1ZShfLGgpKT9udWxsOk8pKXt2YXIgYWU9KCIiLmNvbmNhdChPKS5zcGxpdCgiLiIpWzFdfHxbXSkubGVuZ3RofHwxO2FlPlgmJihYPWFlKX1tKz1P''@;'; put 'put ''fHwwLF8tPTF9d2hpbGUoXz49ZFswXSk7cmV0dXJuIE1hdGgucm91bmQobSpNYXRoLnBvdygxMCxYKSkvTWF0aC5wb3coMTAsWCl9fSx7a2V5OiJjYWxjdWxhdGVNaW5NYXgiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcyxfPW51bGw7cmV0dXJuIG1hKGQucmFuZ2VzLGZ1bmN0aW9u''@;'; put 'put ''KE8pe3ZhciBYPW0uZ2V0UGFydGlhbE1pbk1heChPLGQuc291cmNlQ29sdW1uLGgpO2lmKG51bGw9PT1fJiZudWxsIT09WCYmKF89WCksbnVsbCE9PVgpc3dpdGNoKGgpe2Nhc2UibWluIjpfPU1hdGgubWluKF8sWCk7YnJlYWs7Y2FzZSJtYXgiOl89TWF0aC5tYXgoXyxYKX19KSxudWxsPT09''@;'; put 'put ''Xz8iTm90IGVub3VnaCBkYXRhIjpffX0se2tleToiZ2V0UGFydGlhbE1pbk1heCIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBYLF89bnVsbCxPPWRbMV18fGRbMF07ZG97aWYoWD1aSyhYPXRoaXMuZ2V0Q2VsbFZhbHVlKE8saCkpP251bGw6WCxudWxsPT09XylfPVg7ZWxzZSBpZihudWxs''@;'; put 'put ''IT09WClzd2l0Y2gobSl7Y2FzZSJtaW4iOl89TWF0aC5taW4oXyxYKTticmVhaztjYXNlIm1heCI6Xz1NYXRoLm1heChfLFgpfU8tPTF9d2hpbGUoTz49ZFswXSk7cmV0dXJuIF99fSx7a2V5OiJjb3VudEVtcHR5Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtLF89MCxPPWRbMV18fGRbMF07''@;'; put 'put ''ZG97bnVsbD09PShtPVpLKG09dGhpcy5nZXRDZWxsVmFsdWUoTyxoKSk/bnVsbDptKSYmKF8rPTEpLE8tPTF9d2hpbGUoTz49ZFswXSk7cmV0dXJuIF99fSx7a2V5OiJjb3VudEVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT0wO3JldHVybiBtYShkLnJhbmdlcyxmdW5j''@;'; put 'put ''dGlvbihPKXt2YXIgWD12b2lkIDA9PT1PWzFdPzE6T1sxXS1PWzBdKzEsYWU9aC5jb3VudEVtcHR5KE8sZC5zb3VyY2VDb2x1bW4pO20rPVgsbS09YWV9KSxtfX0se2tleToiY2FsY3VsYXRlQXZlcmFnZSIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuY2FsY3VsYXRlU3VtKGQpL3Ro''@;'; put 'put ''aXMuY291bnRFbnRyaWVzKGQpfX0se2tleToiZ2V0Q2VsbFZhbHVlIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXMuaG90LnRvVmlzdWFsUm93KGQpLF89dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oaCksTz10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGQsaCksWD0iIjtpZihu''@;'; put 'put ''dWxsIT09bSYmbnVsbCE9PV8mJihYPXRoaXMuaG90LmdldENlbGxNZXRhKG0sXykuY2xhc3NOYW1lfHwiIiksWC5pbmRleE9mKCJjb2x1bW5TdW1tYXJ5UmVzdWx0Iik+LTEpcmV0dXJuIG51bGw7aWYodGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LmZvcmNlTnVtZXJpYyYmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgTyYmKE89Ty5yZXBsYWNlKC8sLywiLiIpKSxPPXBhcnNlRmxvYXQoTykpLGlzTmFOKE8pJiYhdGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LnN1cHByZXNzRGF0YVR5cGVFcnJvcnMpdGhyb3cgbmV3IEVycm9yKE9sKF8zZXx8KF8zZT1mdW5jdGlvbiBVZHQobCxj''@;'; put 'put ''KXtyZXR1cm4gY3x8KGM9bC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoYyl9fSkpfShbIkNvbHVtblN1bW1hcnkgcGx1Z2luOiBjZWxsIGF0ICgiLCIsICIsIikgaXMgbm90IGluIGEgXG4gICAgICAg''@;'; put 'put ''ICAgbnVtZXJpYyBmb3JtYXQuIENhbm5vdCBkbyB0aGUgY2FsY3VsYXRpb24uIl0sWyJDb2x1bW5TdW1tYXJ5IHBsdWdpbjogY2VsbCBhdCAoIiwiLCAiLCIpIGlzIG5vdCBpbiBhXFx4MjBcbiAgICAgICAgICBudW1lcmljIGZvcm1hdC4gQ2Fubm90IGRvIHRoZSBjYWxjdWxhdGlvbi4iXSkp''@;'; put 'put ''LGQsaCkpO3JldHVybiBPfX0se2tleToib25BZnRlckluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbmRwb2ludHMuZW5kcG9pbnRzPXRoaXMuZW5kcG9pbnRzLnBhcnNlU2V0dGluZ3MoKSx0aGlzLmVuZHBvaW50cy5yZWZyZXNoQWxsRW5kcG9pbnRzKCEwKX19LHtrZXk6Im9uQWZ0ZXJD''@;'; put 'put ''aGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7ZCYmIkNvbHVtblN1bW1hcnkucmVzZXQiIT09aCYmIkNvbHVtblN1bW1hcnkuc2V0IiE9PWgmJiJsb2FkRGF0YSIhPT1oJiZ0aGlzLmVuZHBvaW50cy5yZWZyZXNoQ2hhbmdlZEVuZHBvaW50cyhkKX19LHtrZXk6Im9uQWZ0ZXJSb3dNb3ZlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJtb3ZlX3JvdyIsZFswXSxkLmxlbmd0aCxkLHRoaXMucGx1Z2luTmFtZSksdGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbigi''@;'; put 'put ''bW92ZV9yb3ciLGgsZC5sZW5ndGgsZCx0aGlzLnBsdWdpbk5hbWUpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gV0t9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMjB9fV0pLGF9KEdhKTtmdW5jdGlvbiBUayhsKXty''@;'; put 'put ''ZXR1cm4oVGs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5''@;'; put 'put ''bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBDM2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g''@;'; put 'put ''ZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGlodChmLmtleSksZil9fWZ1bmN0aW9uIGlodChsKXt2YXIgYz1mdW5jdGlvbiBvaHQobCxjKXtpZigib2JqZWN0IiE9PVRrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07''@;'; put 'put ''aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVRrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJp''@;'; put 'put ''bmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1UayhjKT9jOlN0cmluZyhjKX12YXIgYWh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBuaHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg''@;'; put 'put ''Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5yb290RG9jdW1lbnQ9Yyx0aGlzLmlzUnRsPWEsdGhpcy5jb250YWluZXI9bnVsbCx0aGlzLmVkaXRvcj10aGlzLmNyZWF0ZUVkaXRvcigpLHRoaXMuZWRpdG9yU3R5bGU9dGhpcy5lZGl0b3Iuc3R5bGUsdGhpcy5o''@;'; put 'put ''aWRkZW49ITAsdGhpcy5oaWRlKCl9cmV0dXJuIGZ1bmN0aW9uIHJodChsLGMsYSl7YyYmQzNlKGwucHJvdG90eXBlLGMpLGEmJkMzZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzZXRQb3NpdGlvbiIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oYSxmKXt0aGlzLmVkaXRvclN0eWxlLmxlZnQ9IiIuY29uY2F0KGEsInB4IiksdGhpcy5lZGl0b3JTdHlsZS50b3A9IiIuY29uY2F0KGYsInB4Iil9fSx7a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5jdGlvbihhLGYpe2lmKGEmJmYpe3ZhciBkPXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7''@;'; put 'put ''ZC5zdHlsZS53aWR0aD0iIi5jb25jYXQoYSwicHgiKSxkLnN0eWxlLmhlaWdodD0iIi5jb25jYXQoZiwicHgiKX19fSx7a2V5OiJnZXRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt3aWR0aDpTbCh0aGlzLmdldElucHV0RWxlbWVudCgpKSxoZWlnaHQ6Y3ModGhpcy5nZXRJbnB1dEVs''@;'; put 'put ''ZW1lbnQoKSl9fX0se2tleToicmVzZXRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7YS5zdHlsZS53aWR0aD0iIixhLnN0eWxlLmhlaWdodD0iIn19LHtrZXk6InNldFJlYWRPbmx5U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuZ2V0SW5w''@;'; put 'put ''dXRFbGVtZW50KCkucmVhZE9ubHk9YX19LHtrZXk6InNob3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5oaWRkZW49ITF9fSx7a2V5OiJoaWRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGlkZGVufHwodGhpcy5lZGl0b3JTdHlsZS5k''@;'; put 'put ''aXNwbGF5PSJub25lIiksdGhpcy5oaWRkZW49ITB9fSx7a2V5OiJpc1Zpc2libGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuImJsb2NrIj09PXRoaXMuZWRpdG9yU3R5bGUuZGlzcGxheX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBmPShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIpfHwiIjt0aGlzLmdldElucHV0RWxlbWVudCgpLnZhbHVlPWZ9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS52YWx1ZX19LHtrZXk6ImlzRm9jdXNl''@;'; put 'put ''ZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuZ2V0SW5wdXRFbGVtZW50KCl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdldElucHV0RWxlbWVudCgpLmZvY3VzKCl9fSx7a2V5OiJjcmVhdGVFZGl0''@;'; put 'put ''b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZj10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3JldHVybiBhLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuY29udGFpbmVyPXRoaXMucm9v''@;'; put 'put ''dERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLmlzUnRsPyJydGwiOiJsdHIiKSxnaSh0aGlzLmNvbnRhaW5lcixsLkNMQVNTX0VESVRPUl9DT05UQUlORVIpLHRoaXMucm9vdERvY3VtZW50LmJvZHkuYXBwZW5kQ2hp''@;'; put 'put ''bGQodGhpcy5jb250YWluZXIpLGdpKGEsbC5DTEFTU19FRElUT1IpLGdpKGYsbC5DTEFTU19JTlBVVCksYS5hcHBlbmRDaGlsZChmKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChhKSxhfX0se2tleToiZ2V0SW5wdXRFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVk''@;'; put 'put ''aXRvci5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQobC5DTEFTU19JTlBVVCkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRhaW5lcj90aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlOm51bGw7dGhpcy5lZGl0b3IucGFyZW50Tm9kZS5yZW1vdmVDaGls''@;'; put 'put ''ZCh0aGlzLmVkaXRvciksdGhpcy5lZGl0b3I9bnVsbCx0aGlzLmVkaXRvclN0eWxlPW51bGwsYSYmYS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lcil9fV0sW3trZXk6IkNMQVNTX0VESVRPUl9DT05UQUlORVIiLGdldDpmdW5jdGlvbigpe3JldHVybiJodENvbW1lbnRzQ29udGFpbmVyIn19''@;'; put 'put ''LHtrZXk6IkNMQVNTX0VESVRPUiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImh0Q29tbWVudHMifX0se2tleToiQ0xBU1NfSU5QVVQiLGdldDpmdW5jdGlvbigpe3JldHVybiJodENvbW1lbnRUZXh0QXJlYSJ9fSx7a2V5OiJDTEFTU19DRUxMIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iaHRDb21t''@;'; put 'put ''ZW50Q2VsbCJ9fV0pLGx9KCk7Y29uc3QgbGh0PWFodDt2YXIgYmE9Ii0tLS0tLS0tLSI7ZnVuY3Rpb24gQUwobCl7cmV0dXJuIFlvKGwsImh0U2VwYXJhdG9yIil9ZnVuY3Rpb24gVEwobCl7cmV0dXJuIFlvKGwsImh0RGlzYWJsZWQiKX1mdW5jdGlvbiBPTChsKXtyZXR1cm4gWW8obCwiaHRT''@;'; put 'put ''ZWxlY3Rpb25EaXNhYmxlZCIpfWZ1bmN0aW9uIFo1KGwpe3ZhciBjPWwuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4hY3x8Y1swXTwwP251bGw6Y31mdW5jdGlvbiBZNShsLGMpe3ZhciBhPXt9O3JldHVybiBSbihsLGZ1bmN0aW9uKGYpe2YuZm9yQWxsKGZ1bmN0aW9uKGQsaCl7ZD49MCYmaD49MCYm''@;'; put 'put ''KGFbZF18fChhW2RdPVtdKSxhW2RdW2hdPWMoZCxoKSl9KX0pLGF9ZnVuY3Rpb24gejQobCxjLGEsZixkKXtSbihsLGZ1bmN0aW9uKGgpe2guZm9yQWxsKGZ1bmN0aW9uKG0sXyl7bT49MCYmXz49MCYmZnVuY3Rpb24gaGh0KGwsYyxhLGYsZCxoKXt2YXIgbT1kKGwsYyksXz1mO20uY2xhc3NO''@;'; put 'put ''YW1lJiYoXz0idmVydGljYWwiPT09YT9mdW5jdGlvbiBmaHQobCxjKXtpZigtMSE9PWwuaW5kZXhPZihjKSlyZXR1cm4gbDt2YXIgYT1sLnJlcGxhY2UoImh0VG9wIiwiIikucmVwbGFjZSgiaHRNaWRkbGUiLCIiKS5yZXBsYWNlKCJodEJvdHRvbSIsIiIpLnJlcGxhY2UoIiAgIiwiIik7cmV0''@;'; put 'put ''dXJuIiIuY29uY2F0KGEsIiAiKS5jb25jYXQoYyl9KG0uY2xhc3NOYW1lLGYpOmZ1bmN0aW9uIGRodChsLGMpe2lmKC0xIT09bC5pbmRleE9mKGMpKXJldHVybiBsO3ZhciBhPWwucmVwbGFjZSgiaHRMZWZ0IiwiIikucmVwbGFjZSgiaHRDZW50ZXIiLCIiKS5yZXBsYWNlKCJodFJpZ2h0Iiwi''@;'; put 'put ''IikucmVwbGFjZSgiaHRKdXN0aWZ5IiwiIikucmVwbGFjZSgiICAiLCIiKTtyZXR1cm4iIi5jb25jYXQoYSwiICIpLmNvbmNhdChjKX0obS5jbGFzc05hbWUsZikpLGgobCxjLCJjbGFzc05hbWUiLF8pfShtLF8sYyxhLGYsZCl9KX0pfWZ1bmN0aW9uIFloKGwsYyl7dmFyIGE9ITE7cmV0dXJu''@;'; put 'put ''IEFycmF5LmlzQXJyYXkobCkmJlJuKGwsZnVuY3Rpb24oZil7cmV0dXJuIGYuZm9yQWxsKGZ1bmN0aW9uKGQsaCl7aWYoZD49MCYmaD49MCYmYyhkLGgpKXJldHVybiBhPSEwLCExfSksYX0pLGF9ZnVuY3Rpb24gdzMobCl7cmV0dXJuJzxzcGFuIGNsYXNzPSJzZWxlY3RlZCI+Jy5jb25jYXQo''@;'; put 'put ''U3RyaW5nLmZyb21DaGFyQ29kZSgxMDAwMyksIjwvc3Bhbj4iKS5jb25jYXQobCl9ZnVuY3Rpb24gUzNlKGwsYyl7Zm9yKHZhciBhPWwuc2xpY2UoMCk7MDxhLmxlbmd0aCYmYVswXS5uYW1lPT09YzspYS5zaGlmdCgpO3JldHVybiBhfWZ1bmN0aW9uIE9rKGwpe3JldHVybihPaz0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIE0zZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsX2h0KGYua2V5KSxmKX19ZnVuY3Rpb24gX2h0KGwpe3ZhciBjPWZ1bmN0aW9uIHdodChsLGMpe2lmKCJvYmplY3QiIT09T2sobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2''@;'; put 'put ''YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09T2soZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShs''@;'; put 'put ''LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU9rKGMpP2M6U3RyaW5nKGMpfXZhciBrM2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyhmdW5jdGlvbiB5aHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg''@;'; put 'put ''ZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy53YXNMYXN0QWN0aW9uU2hvdz0hMCx0aGlzLnNob3dEZWJvdW5jZWQ9bnVsbCx0aGlzLmhpZGluZ1RpbWVyPW51bGwsdGhpcy51cGRhdGVEZWxheShjKX1yZXR1cm4gZnVuY3Rpb24gYmh0KGwsYyxhKXtjJiZNM2UobC5wcm90b3R5cGUsYyksYSYm''@;'; put 'put ''TTNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImhpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSExLHRoaXMuaGlkaW5nVGltZXI9c2V0VGltZW91dChmdW5jdGlv''@;'; put 'put ''bigpeyExPT09YS53YXNMYXN0QWN0aW9uU2hvdyYmYS5ydW5Mb2NhbEhvb2tzKCJoaWRlIil9LDI1MCl9fSx7a2V5OiJzaG93Iix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLHRoaXMuc2hvd0RlYm91bmNlZChhKX19LHtrZXk6ImNhbmNlbEhpZGluZyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLndhc0xhc3RBY3Rpb25TaG93PSEwLGNsZWFyVGltZW91dCh0aGlzLmhpZGluZ1RpbWVyKSx0aGlzLmhpZGluZ1RpbWVyPW51bGx9fSx7a2V5OiJ1cGRhdGVEZWxheSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuc2hvd0RlYm91bmNlZD1UWShm''@;'; put 'put ''dW5jdGlvbihkKXthLndhc0xhc3RBY3Rpb25TaG93JiZhLnJ1bkxvY2FsSG9va3MoInNob3ciLGQuZnJvbS5yb3csZC5mcm9tLmNvbCl9LGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToyNTApfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLmNsZWFyTG9jYWxIb29rcygpfX1dKSxsfSgpO1RsKGszZSxXMCk7Y29uc3QgTWh0PWszZTtmdW5jdGlvbiBseShsKXtyZXR1cm4obHk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBHSyhsLGMsYSl7cmV0dXJuKGM9eDNlKGMp''@;'; put 'put ''KWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIEUzZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1m''@;'; put 'put ''LmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwseDNlKGYua2V5KSxmKX19ZnVuY3Rpb24geDNlKGwpe3ZhciBjPWZ1bmN0aW9uIHhodChsLGMpe2lmKCJvYmplY3QiIT09bHkobCl8fG51''@;'; put 'put ''bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09bHkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBh''@;'; put 'put ''IHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWx5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIFc1KCl7cmV0dXJuIFc1PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVm''@;'; put 'put ''bGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBBaHQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPUMzKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sVzUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uICRLKGwsYyl7cmV0dXJuKCRLPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0''@;'; put 'put ''UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gQTNlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg''@;'; put 'put ''YmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBDMyhsKXtyZXR1cm4oQzM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIg''@;'; put 'put ''S0s9ImNvbW1lbnRzIixETD1uZXcgV2Vha01hcCxXaD0iY29tbWVudCIsc3k9InZhbHVlIixJTD0icmVhZE9ubHkiLExodD1mdW5jdGlvbihsKXshZnVuY3Rpb24gVGh0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4''@;'; put 'put ''cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJw''@;'; put 'put ''cm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJiRLKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gT2h0KGwpe3ZhciBjPWZ1bmN0aW9uIElodCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxm''@;'; put 'put ''PUMzKGwpO2lmKGMpe3ZhciBoPUMzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBEaHQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1seShjKXx8ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gQTNlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24ga2h0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikpLmVkaXRvcj1udWxsLGQuZGlzcGxheVN3aXRjaD1udWxsLGQu''@;'; put 'put ''ZXZlbnRNYW5hZ2VyPW51bGwsZC5yYW5nZT17fSxkLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoPSExLERMLnNldChBM2UoZCkse3RlbXBFZGl0b3JEaW1lbnNpb25zOnt9LGNlbGxCZWxvd0N1cnNvcjpudWxsfSksZH1yZXR1cm4gZnVuY3Rpb24gRWh0KGwsYyxhKXtjJiZFM2UobC5wcm90b3R5''@;'; put 'put ''cGUsYyksYSYmRTNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbS0tdfX0se2tleToiZW5hYmxlUGx1Z2luIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5lZGl0b3J8fCh0aGlzLmVkaXRvcj1uZXcgbGh0KHRoaXMuaG90LnJvb3REb2N1bWVudCx0aGlzLmhvdC5pc1J0bCgpKSksdGhpcy5ldmVudE1hbmFnZXJ8fCh0aGlzLmV2ZW50TWFuYWdlcj1uZXcgZnModGhp''@;'; put 'put ''cykpLHRoaXMuZGlzcGxheVN3aXRjaHx8KHRoaXMuZGlzcGxheVN3aXRjaD1uZXcgTWh0KHRoaXMuZ2V0RGlzcGxheURlbGF5U2V0dGluZygpKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKGgpe3JldHVybiBkLmFkZFRvQ29udGV4dE1l''@;'; put 'put ''bnUoaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLGZ1bmN0aW9uKGgsbSxfLE8sWCxhZSl7cmV0dXJuIGQub25BZnRlclJlbmRlcmVyKGgsYWUpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5oaWRlKCl9KSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5oaWRlKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQmVnaW5FZGl0aW5nIixmdW5jdGlvbigpe3JldHVybiBkLmhpZGUoKX0pLHRoaXMuZGlzcGxheVN3aXRjaC5hZGRMb2NhbEhvb2soImhpZGUiLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGQuaGlkZSgpfSksdGhpcy5kaXNwbGF5U3dpdGNoLmFkZExvY2FsSG9vaygic2hvdyIsZnVuY3Rpb24oaCxtKXtyZXR1cm4gZC5zaG93QXRDZWxsKGgsbSl9KSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCksVzUoQzMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4i''@;'; put 'put ''LHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksVzUoQzMoYS5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5kaXNwbGF5U3dp''@;'; put 'put ''dGNoLnVwZGF0ZURlbGF5KHRoaXMuZ2V0RGlzcGxheURlbGF5U2V0dGluZygpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7VzUoQzMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToicmVnaXN0ZXJMaXN0ZW5lcnMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LnJvb3REb2N1bWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgsIm1vdXNlb3ZlciIsZnVuY3Rpb24obSl7cmV0dXJuIGQub25Nb3VzZU92ZXIobSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVu''@;'; put 'put ''dExpc3RlbmVyKGgsIm1vdXNlZG93biIsZnVuY3Rpb24obSl7cmV0dXJuIGQub25Nb3VzZURvd24obSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGgsIm1vdXNldXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb3VzZVVwKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRF''@;'; put 'put ''dmVudExpc3RlbmVyKHRoaXMuZWRpdG9yLmdldElucHV0RWxlbWVudCgpLCJibHVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uRWRpdG9yQmx1cigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmVkaXRvci5nZXRJbnB1dEVsZW1lbnQoKSwibW91c2Vkb3duIixm''@;'; put 'put ''dW5jdGlvbihtKXtyZXR1cm4gZC5vbkVkaXRvck1vdXNlRG93bihtKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5lZGl0b3IuZ2V0SW5wdXRFbGVtZW50KCksIm1vdXNldXAiLGZ1bmN0aW9uKG0pe3JldHVybiBkLm9uRWRpdG9yTW91c2VVcChtKX0pfX0se2tl''@;'; put 'put ''eToic2V0UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMucmFuZ2U9ZH19LHtrZXk6ImNsZWFyUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yYW5nZT17fX19LHtrZXk6InRhcmdldElzQ2VsbFdpdGhDb21tZW50Iix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD14NChkLnRhcmdldCwi''@;'; put 'put ''VEQiLCJUQk9EWSIpO3JldHVybiEhKGgmJllvKGgsImh0Q29tbWVudENlbGwiKSYmeDQoaCxbdGhpcy5ob3Qucm9vdEVsZW1lbnRdKSl9fSx7a2V5OiJ0YXJnZXRJc0NvbW1lbnRUZXh0QXJlYSIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuZWRpdG9yLmdldElucHV0RWxlbWVudCgp''@;'; put 'put ''PT09ZC50YXJnZXR9fSx7a2V5OiJzZXRDb21tZW50Iix2YWx1ZTpmdW5jdGlvbihkKXtpZighdGhpcy5yYW5nZS5mcm9tKXRocm93IG5ldyBFcnJvcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9kLCBmaXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJh''@;'; put 'put ''bmdlKCkpJyk7dmFyIGg9dGhpcy5lZGl0b3IuZ2V0VmFsdWUoKSxtPSIiO251bGwhPWQ/bT1kOm51bGwhPWgmJihtPWgpLHRoaXMudXBkYXRlQ29tbWVudE1ldGEodGhpcy5yYW5nZS5mcm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sLEdLKHt9LHN5LG0pKSx0aGlzLmhvdC5yZW5kZXIoKX19''@;'; put 'put ''LHtrZXk6InNldENvbW1lbnRBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt0aGlzLnNldFJhbmdlKHtmcm9tOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGQsaCl9KSx0aGlzLnNldENvbW1lbnQobSl9fSx7a2V5OiJyZW1vdmVDb21tZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBk''@;'; put 'put ''PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07aWYoIXRoaXMucmFuZ2UuZnJvbSl0aHJvdyBuZXcgRXJyb3IoJ0JlZm9yZSB1c2luZyB0aGlzIG1ldGhvZCwgZmlyc3Qgc2V0IGNlbGwgcmFuZ2UgKGhvdC5nZXRQbHVnaW4oImNvbW1l''@;'; put 'put ''bnQiKS5zZXRSYW5nZSgpKScpO3RoaXMuaG90LnNldENlbGxNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5yYW5nZS5mcm9tLmNvbCxXaCksZCYmdGhpcy5ob3QucmVuZGVyKCksdGhpcy5oaWRlKCl9fSx7a2V5OiJyZW1vdmVDb21tZW50QXRDZWxsIix2YWx1ZTpmdW5jdGlvbihkLGgp''@;'; put 'put ''e3ZhciBtPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhkLGgpfSksdGhpcy5yZW1vdmVDb21tZW50KG0pfX0se2tleToiZ2V0Q29tbWVudCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YSh0aGlzLnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wsc3kpfX0se2tleToiZ2V0Q29tbWVudEF0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtyZXR1cm4gdGhpcy5nZXRDb21tZW50TWV0YShkLGgsc3kp''@;'; put 'put ''fX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5yYW5nZS5mcm9tKXRocm93IG5ldyBFcnJvcignQmVmb3JlIHVzaW5nIHRoaXMgbWV0aG9kLCBmaXJzdCBzZXQgY2VsbCByYW5nZSAoaG90LmdldFBsdWdpbigiY29tbWVudCIpLnNldFJhbmdlKCkpJyk7dmFyIGQ9dGhp''@;'; put 'put ''cy5yYW5nZS5mcm9tLGg9ZC5yb3csbT1kLmNvbDtpZihoPDB8fGg+dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCktMXx8bTwwfHxtPnRoaXMuaG90LmNvdW50U291cmNlQ29scygpLTEpcmV0dXJuITE7dmFyIF89dGhpcy5ob3QuZ2V0Q2VsbE1ldGEodGhpcy5yYW5nZS5mcm9tLnJvdyx0aGlz''@;'; put 'put ''LnJhbmdlLmZyb20uY29sKTtyZXR1cm4gdGhpcy5lZGl0b3Iuc2V0VmFsdWUoX1tXaF0/X1tXaF1bc3ldOiIiKSx0aGlzLmVkaXRvci5zaG93KCksdGhpcy5yZWZyZXNoRWRpdG9yKCEwKSwhMH19LHtrZXk6InNob3dBdENlbGwiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7cmV0dXJuIHRoaXMuc2V0''@;'; put 'put ''UmFuZ2Uoe2Zyb206dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZCxoKX0pLHRoaXMuc2hvdygpfX0se2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVkaXRvci5oaWRlKCl9fSx7a2V5OiJyZWZyZXNoRWRpdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkLGg7aWYoYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXXx8dGhpcy5yYW5nZS5mcm9tJiZ0aGlzLmVkaXRvci5pc1Zpc2libGUoKSl7dmFyIF89dGhpcy5ob3QsTz1fLnJvd0luZGV4TWFwcGVyLFg9Xy5jb2x1bW5JbmRleE1hcHBlcixhZT10aGlzLnJhbmdlLmZy''@;'; put 'put ''b20scGU9YWUucm93LGJlPWFlLmNvbCx4ZT1PLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgocGUpLFZlPVguZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChiZSksWmU9bnVsbD09PXhlO3RoaXMuZWRpdG9yLnNldFBvc2l0aW9uKDAsMCksbnVsbD09PXhlJiYoeGU9Ty5nZXRSZW5k''@;'; put 'put ''ZXJhYmxlRnJvbVZpc3VhbEluZGV4KE8uZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHBlLC0xKSkpLG51bGw9PT1WZSYmKFZlPVguZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChYLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChiZSwtMSkpKTt2YXIgbHQ9bnVsbD09PXhlLGR0PW51bGw9''@;'; put 'put ''PT1WZTt4ZT1udWxsIT09KGQ9eGUpJiZ2b2lkIDAhPT1kP2Q6MCxWZT1udWxsIT09KGg9VmUpJiZ2b2lkIDAhPT1oP2g6MDt2YXIgZ3Q9dGhpcy5ob3QsanQ9Z3Qucm9vdFdpbmRvdyxybj1ndC52aWV3Ll93dCxYdD1ybi53dFRhYmxlLHluPXJuLmdldENlbGwoe3Jvdzp4ZSxjb2w6VmV9LCEw''@;'; put 'put ''KSxRbj10aGlzLmdldENvbW1lbnRNZXRhKHBlLGJlLCJzdHlsZSIpO1FuP3RoaXMuZWRpdG9yLnNldFNpemUoUW4ud2lkdGgsUW4uaGVpZ2h0KTp0aGlzLmVkaXRvci5yZXNldFNpemUoKTt2YXIgT3I9ZHQ/MDpYdC5nZXRTdHJldGNoZWRDb2x1bW5XaWR0aChWZSksVnI9WmUmJiFsdD9jcyh5''@;'; put 'put ''bik6MCxacj15bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpcj1aci5sZWZ0LHNpPVpyLnRvcCxBcj1aci53aWR0aCxFbj1aci5oZWlnaHQsVHI9dGhpcy5lZGl0b3IuZ2V0U2l6ZSgpLFZuPVRyLndpZHRoLGNyPVRyLmhlaWdodCxDcj10aGlzLmhvdC5yb290V2luZG93LFlyPUNyLmlubmVy''@;'; put 'put ''V2lkdGgsU3Q9Q3IuaW5uZXJIZWlnaHQsRnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudCxXdD1pcitqdC5zY3JvbGxYK09yLHduPXNpK2p0LnNjcm9sbFkrVnI7dGhpcy5ob3QuaXNSdGwoKSYmKFd0LT1WbitPciksdGhpcy5ob3QuaXNMdHIoKSYmaXIrQXIrVm4+WXI/''@;'; put 'put ''V3Q9aXIranQuc2Nyb2xsWC1Wbi0xOnRoaXMuaG90LmlzUnRsKCkmJld0PC0oRnQuc2Nyb2xsV2lkdGgtRnQuY2xpZW50V2lkdGgpJiYoV3Q9aXIranQuc2Nyb2xsWCtPcisxKSxzaStjcj5TdCYmKHduLT1jci1FbisxKSx0aGlzLmVkaXRvci5zZXRQb3NpdGlvbihXdCx3biksdGhpcy5lZGl0''@;'; put 'put ''b3Iuc2V0UmVhZE9ubHlTdGF0ZSh0aGlzLmdldENvbW1lbnRNZXRhKHBlLGJlLElMKSl9fX0se2tleToiY2hlY2tTZWxlY3Rpb25Db21tZW50c0NvbnNpc3RlbmN5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWQpcmV0dXJuITE7''@;'; put 'put ''dmFyIGg9ITEsbT1kLmdldFRvcFN0YXJ0Q29ybmVyKCk7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEobS5yb3csbS5jb2wsc3kpJiYoaD0hMCksaH19LHtrZXk6InVwZGF0ZUNvbW1lbnRNZXRhIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIE8sXz10aGlzLmhvdC5nZXRDZWxsTWV0YShk''@;'; put 'put ''LGgpW1doXTtfP0hTKE89eGMoXyksbSk6Tz1tLHRoaXMuaG90LnNldENlbGxNZXRhKGQsaCxXaCxPKX19LHtrZXk6ImdldENvbW1lbnRNZXRhIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF89dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoZCxoKTtpZihfW1doXSlyZXR1cm4gX1tXaF1bbV19fSx7''@;'; put 'put ''a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYodGhpcy5ob3QudmlldyYmdGhpcy5ob3Qudmlldy5fd3QmJiF0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNoJiYhdGhpcy50YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShkKSl7dmFyIGg9eDQoZC50YXJnZXQsIlREIiwiVEJP''@;'; put 'put ''RFkiKSxtPW51bGw7aCYmKG09dGhpcy5ob3QuZ2V0Q29vcmRzKGgpKSwoIWh8fHRoaXMucmFuZ2UuZnJvbSYmbSYmKHRoaXMucmFuZ2UuZnJvbS5yb3chPT1tLnJvd3x8dGhpcy5yYW5nZS5mcm9tLmNvbCE9PW0uY29sKSkmJnRoaXMuaGlkZSgpfX19LHtrZXk6Im9uTW91c2VPdmVyIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihkKXt2YXIgaD1ETC5nZXQodGhpcyksbT10aGlzLmhvdC5yb290RG9jdW1lbnQ7aWYoISh0aGlzLnByZXZlbnRFZGl0b3JBdXRvU3dpdGNofHx0aGlzLmVkaXRvci5pc0ZvY3VzZWQoKXx8WW8oZC50YXJnZXQsInd0Qm9yZGVyIil8fGguY2VsbEJlbG93Q3Vyc29yPT09ZC50''@;'; put 'put ''YXJnZXQpJiZ0aGlzLmVkaXRvcilpZihoLmNlbGxCZWxvd0N1cnNvcj1tLmVsZW1lbnRGcm9tUG9pbnQoZC5jbGllbnRYLGQuY2xpZW50WSksdGhpcy50YXJnZXRJc0NlbGxXaXRoQ29tbWVudChkKSl7dmFyIF89dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh0aGlzLmhvdC5nZXRDb29yZHMo''@;'; put 'put ''ZC50YXJnZXQpKTt0aGlzLmRpc3BsYXlTd2l0Y2guc2hvdyhfKX1lbHNlIEE0KGQudGFyZ2V0LG0pJiYhdGhpcy50YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShkKSYmdGhpcy5kaXNwbGF5U3dpdGNoLmhpZGUoKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByZXZl''@;'; put 'put ''bnRFZGl0b3JBdXRvU3dpdGNoPSExfX0se2tleToib25BZnRlclJlbmRlcmVyIix2YWx1ZTpmdW5jdGlvbihkLGgpe2hbV2hdJiZoW1doXVtzeV0mJmdpKGQsaC5jb21tZW50ZWRDZWxsQ2xhc3NOYW1lKX19LHtrZXk6Im9uRWRpdG9yQmx1ciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldENv''@;'; put 'put ''bW1lbnQoKX19LHtrZXk6Im9uRWRpdG9yTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihkKXtETC5nZXQodGhpcykudGVtcEVkaXRvckRpbWVuc2lvbnM9e3dpZHRoOlNsKGQudGFyZ2V0KSxoZWlnaHQ6Y3MoZC50YXJnZXQpfX19LHtrZXk6Im9uRWRpdG9yTW91c2VVcCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oZCl7dmFyIGg9REwuZ2V0KHRoaXMpLG09U2woZC50YXJnZXQpLF89Y3MoZC50YXJnZXQpOyhtIT09aC50ZW1wRWRpdG9yRGltZW5zaW9ucy53aWR0aCsxfHxfIT09aC50ZW1wRWRpdG9yRGltZW5zaW9ucy5oZWlnaHQrMikmJnRoaXMudXBkYXRlQ29tbWVudE1ldGEodGhpcy5yYW5nZS5m''@;'; put 'put ''cm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sLEdLKHt9LCJzdHlsZSIse3dpZHRoOm0saGVpZ2h0Ol99KSl9fSx7a2V5OiJvbkNvbnRleHRNZW51QWRkQ29tbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO3RoaXMucHJldmVudEVk''@;'; put 'put ''aXRvckF1dG9Td2l0Y2g9ITAsdGhpcy5kaXNwbGF5U3dpdGNoLmNhbmNlbEhpZGluZygpLHRoaXMuc2V0UmFuZ2Uoe2Zyb206ZC5oaWdobGlnaHR9KSx0aGlzLnNob3coKSx0aGlzLmhvdC5kZXNlbGVjdENlbGwoKSx0aGlzLmVkaXRvci5mb2N1cygpfX0se2tleToib25Db250ZXh0TWVudVJl''@;'; put 'put ''bW92ZUNvbW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7dGhpcy5wcmV2ZW50RWRpdG9yQXV0b1N3aXRjaD0hMCxoLmZvckFsbChmdW5jdGlvbihtLF8pe20+PTAmJl8+PTAmJmQucmVtb3ZlQ29tbWVudEF0Q2VsbCht''@;'; put 'put ''LF8sITEpfSksdGhpcy5ob3QucmVuZGVyKCl9fSx7a2V5OiJvbkNvbnRleHRNZW51TWFrZVJlYWRPbmx5Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO3RoaXMucHJldmVudEVkaXRvckF1dG9Td2l0Y2g9ITAsaC5mb3JBbGwo''@;'; put 'put ''ZnVuY3Rpb24obSxfKXtpZihtPj0wJiZfPj0wKXt2YXIgTz0hIWQuZ2V0Q29tbWVudE1ldGEobSxfLElMKTtkLnVwZGF0ZUNvbW1lbnRNZXRhKG0sXyxHSyh7fSxJTCwhTykpfX0pfX0se2tleToiYWRkVG9Db250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGguaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCk+MCYmaC5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKT4wfTtkLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LHtrZXk6ImNvbW1l''@;'; put 'put ''bnRzQWRkRWRpdCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiBoLmNoZWNrU2VsZWN0aW9uQ29tbWVudHNDb25zaXN0ZW5jeSgpP2guaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoT0cpOmguaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoVEcpfSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBoLm9u''@;'; put 'put ''Q29udGV4dE1lbnVBZGRDb21tZW50KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIW0oKXx8IShoLmhvdC5nZXRTZWxlY3RlZExhc3QoKSYmIWguaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9fSx7a2V5OiJjb21tZW50c1JlbW92ZSIsbmFtZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoREcpfSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBoLm9uQ29udGV4dE1lbnVSZW1vdmVDb21tZW50KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIW0oKXx8IShoLmhvdC5nZXRTZWxlY3RlZExhc3QoKSYmIWguaG90LnNlbGVj''@;'; put 'put ''dGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSl9fSx7a2V5OiJjb21tZW50c1JlYWRPbmx5IixuYW1lOmZ1bmN0aW9uKCl7dmFyIE89dGhpcyxYPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShJRyk7cmV0dXJuIFloKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxmdW5jdGlvbihwZSxiZSl7''@;'; put 'put ''dmFyIHhlPU8uZ2V0Q2VsbE1ldGEocGUsYmUpW1doXTtpZih4ZSYmKHhlPXhlW0lMXSkseGUpcmV0dXJuITB9KSYmKFg9dzMoWCkpLFh9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGgub25Db250ZXh0TWVudU1ha2VSZWFkT25seSgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFt''@;'; put 'put ''KCl8fCEoaC5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCkmJiFoLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJmguY2hlY2tTZWxlY3Rpb25Db21tZW50c0NvbnNpc3RlbmN5KCkpfX0pfX0se2tleToiZ2V0RGlzcGxheURlbGF5U2V0dGluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ZD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0tLXTtpZihwYShkKSlyZXR1cm4gZC5kaXNwbGF5RGVsYXl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5kZXN0cm95KCksdGhpcy5kaXNwbGF5U3dpdGNoJiZ0aGlzLmRpc3BsYXlTd2l0''@;'; put 'put ''Y2guZGVzdHJveSgpLFc1KEMzKGEucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtLfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNjB9fV0pLGF9KEdh''@;'; put 'put ''KTtmdW5jdGlvbiBEayhsKXtyZXR1cm4oRGs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''Yy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBPM2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3Vy''@;'; put 'put ''YWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEhodChmLmtleSksZil9fWZ1bmN0aW9uIEhodChsKXt2YXIgYz1mdW5jdGlvbiBOaHQobCxjKXtpZigib2JqZWN0IiE9PURrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5''@;'; put 'put ''bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PURrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJu''@;'; put 'put ''KCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1EayhjKT9jOlN0cmluZyhjKX12YXIgVmh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24gUGh0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuaG90PWMsdGhpcy5jb21tYW5kcz17fSx0aGlzLmNvbW1vbkNhbGxiYWNrPW51bGx9cmV0dXJuIGZ1bmN0aW9uIEZodChsLGMsYSl7YyYmTzNlKGwucHJvdG90eXBlLGMpLGEmJk8zZShs''@;'; put 'put ''LGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJyZWdpc3RlckNvbW1hbmQiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhpcy5jb21tYW5kc1thXT1mfX0se2tleToic2V0Q29tbW9uQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGEp''@;'; put 'put ''e3RoaXMuY29tbW9uQ2FsbGJhY2s9YX19LHtrZXk6ImV4ZWN1dGUiLHZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZj10aGlzLGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkPjE/ZC0xOjApLG09MTttPGQ7bSsrKWhbbS0xXT1hcmd1bWVudHNbbV07dmFyIF89YS5zcGxpdCgiOiIp''@;'; put 'put ''LE89X1swXSxYPTI9PT1fLmxlbmd0aD9fWzFdOm51bGwsYWU9dGhpcy5jb21tYW5kc1tPXTtpZighYWUpdGhyb3cgbmV3IEVycm9yKCJNZW51IGNvbW1hbmQgJyIuY29uY2F0KE8sIicgbm90IGV4aXN0cy4iKSk7aWYoWCYmYWUuc3VibWVudSYmKGFlPWZ1bmN0aW9uIEJodChsLGMpe3ZhciBh''@;'; put 'put ''O3JldHVybiBSbihjLGZ1bmN0aW9uKGYpe3ZhciBkPWYua2V5P2Yua2V5LnNwbGl0KCI6Iik6bnVsbDtpZihBcnJheS5pc0FycmF5KGQpJiZkWzFdPT09bClyZXR1cm4gYT1mLCExfSksYX0oWCxhZS5zdWJtZW51Lml0ZW1zKSksITAhPT1hZS5kaXNhYmxlZCYmKCJmdW5jdGlvbiIhPXR5cGVv''@;'; put 'put ''ZiBhZS5kaXNhYmxlZHx8ITAhPT1hZS5kaXNhYmxlZC5jYWxsKHRoaXMuaG90KSkmJiFTcyhhZSwic3VibWVudSIpKXt2YXIgcGU9W107ImZ1bmN0aW9uIj09dHlwZW9mIGFlLmNhbGxiYWNrJiZwZS5wdXNoKGFlLmNhbGxiYWNrKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb21tb25DYWxs''@;'; put 'put ''YmFjayYmcGUucHVzaCh0aGlzLmNvbW1vbkNhbGxiYWNrKSxoLnVuc2hpZnQoXy5qb2luKCI6IikpLFJuKHBlLGZ1bmN0aW9uKGJlKXtyZXR1cm4gYmUuYXBwbHkoZi5ob3QsaCl9KX19fV0pLGx9KCk7Y29uc3QgRDNlPVZodDt2YXIgVmY9ImFsaWdubWVudCIsUkw9ImNsZWFyX2NvbHVtbiIs''@;'; put 'put ''SWs9ImNvbF9sZWZ0IixSaz0iY29sX3JpZ2h0IixMaz0ibWFrZV9yZWFkX29ubHkiLExMPSJyZWRvIjtmdW5jdGlvbiBJM2UobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4g''@;'; put 'put ''Zn12YXIgUGs9InJlbW92ZV9jb2wiO2Z1bmN0aW9uIFIzZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfXZhciByMCxQTD0icmVtb3ZlX3JvdyIsRkw9InJvd19hYm92''@;'; put 'put ''ZSIsSEw9InJvd19iZWxvdyIsRms9Im5vX2l0ZW1zIixOTD0idW5kbyI7ZnVuY3Rpb24gSGsobCl7cmV0dXJuKEhrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24o''@;'; put 'put ''Yyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gTDEobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHUydChsKXt2YXIgYz1mdW5jdGlv''@;'; put 'put ''biBjMnQobCxjKXtpZigib2JqZWN0IiE9PUhrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUhrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1IayhjKT9jOlN0cmluZyhjKX0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH12YXIgTDNlPVtGTCxITCxJayxSayxSTCxQTCxQayxOTCxMTCxMayxWZixiYSxGa10sUDNlPShMMShyMD17fSxiYSxmdW5jdGlvbiBzaHQoKXtyZXR1cm57bmFt''@;'; put 'put ''ZTpiYX19KSxMMShyMCxGayxmdW5jdGlvbiBsMnQoKXtyZXR1cm57a2V5OkZrLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHVHKX0sZGlzYWJsZWQ6ITAsaXNDb21tYW5kOiExfX0pLEwxKHIwLEZMLGZ1bmN0aW9uIG8ydCgpe3JldHVybntrZXk6Rkws''@;'; put 'put ''bmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoY0cpfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5nZXRUb3BMZWZ0Q29ybmVyKCk7dGhpcy5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsYy5yb3csMSwi''@;'; put 'put ''Q29udGV4dE1lbnUucm93QWJvdmUiKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hWjUodGhpcyl8fCh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09dGhpcy5jb3VudFJvd3MoKTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhp''@;'; put 'put ''cy5jb3VudFJvd3MoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heFJvd3MpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Um93fX19KSxMMShyMCxITCxmdW5jdGlvbiBhMnQoKXtyZXR1cm57a2V5OkhMLG5hbWU6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGZHKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZ2V0Qm90dG9tUmlnaHRDb3JuZXIoKTt0aGlzLmFsdGVyKCJpbnNlcnRfcm93X2JlbG93IixjLnJvdywxLCJDb250ZXh0TWVudS5yb3dC''@;'; put 'put ''ZWxvdyIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFaNSh0aGlzKXx8IXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiYodGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuY291bnRSb3dzKCk+PXRoaXMuZ2V0U2V0dGluZ3MoKS5t''@;'; put 'put ''YXhSb3dzKX0saGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd0luc2VydFJvd319fSksTDEocjAsSWssZnVuY3Rpb24gVWh0KCl7cmV0dXJue2tleTpJayxuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShkRyl9LGNh''@;'; put 'put ''bGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmdldFRvcExlZnRDb3JuZXIoKSxhPXRoaXMuaXNSdGwoKT8iaW5zZXJ0X2NvbF9lbmQiOiJpbnNlcnRfY29sX3N0YXJ0Ijt0aGlzLmFsdGVyKGEsYy5jb2wsMSwiQ29udGV4dE1lbnUuY29sdW1uTGVm''@;'; put 'put ''dCIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpfHwhWjUodGhpcyl8fCh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09dGhpcy5jb3VudENvbHMoKTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlS''@;'; put 'put ''b3dIZWFkZXIoKXx8dGhpcy5jb3VudENvbHMoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHMpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Q29sdW1ufX19KSxMMShyMCxSayxmdW5jdGlvbiBaaHQoKXtyZXR1cm57a2V5OlJrLG5h''@;'; put 'put ''bWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGhHKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZ2V0VG9wUmlnaHRDb3JuZXIoKSxhPXRoaXMuaXNSdGwoKT8iaW5zZXJ0X2NvbF9zdGFydCI6Imluc2Vy''@;'; put 'put ''dF9jb2xfZW5kIjt0aGlzLmFsdGVyKGEsYy5jb2wsMSwiQ29udGV4dE1lbnUuY29sdW1uUmlnaHQiKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKXx8IVo1KHRoaXMpfHwhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29y''@;'; put 'put ''bmVyKCkmJih0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8dGhpcy5jb3VudENvbHMoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHMpfSxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Q29sdW1ufX19KSxMMShy''@;'; put 'put ''MCxSTCxmdW5jdGlvbiB6aHQoKXtyZXR1cm57a2V5OlJMLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGJHKX0sY2FsbGJhY2s6ZnVuY3Rpb24oYyxhKXt2YXIgZj1hWzBdLnN0YXJ0LmNvbCxkPWFbMF0uZW5kLmNvbDt0aGlzLmNvdW50Um93cygpJiZ0''@;'; put 'put ''aGlzLnBvcHVsYXRlRnJvbUFycmF5KDAsZixbW251bGxdXSxNYXRoLm1heChhWzBdLnN0YXJ0LnJvdyxhWzBdLmVuZC5yb3cpLGQsIkNvbnRleHRNZW51LmNsZWFyQ29sdW1uIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIVo1KHRoaXMpfHwhdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3Rl''@;'; put 'put ''ZEJ5Q29sdW1uSGVhZGVyKCl9fX0pLEwxKHIwLFBMLGZ1bmN0aW9uIGkydCgpe3JldHVybntrZXk6UEwsbmFtZTpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZ2V0U2VsZWN0ZWQoKSxhPTA7aWYoYylpZihjLmxlbmd0aD4xKWE9MTtlbHNle3ZhciBmPWZ1bmN0aW9uIFFodChsLGMpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiByMnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIG4ydChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0s''@;'; put 'put ''Xz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0h''@;'; put 'put ''MCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gdDJ0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJl''@;'; put 'put ''dHVybiBSM2UobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lm''@;'; put 'put ''KCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFIzZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gZTJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1p''@;'; put 'put ''dGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oY1swXSwzKTtmWzBdLWZbMl0hPTAmJihhPTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJh''@;'; put 'put ''c2UocEcsYSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5hbHRlcigicmVtb3ZlX3JvdyIsZnVuY3Rpb24gam90KGwpe3ZhciBjPU05KGwpO2lmKDA9PT1jfHwxPT09YylyZXR1cm5bXTt2YXIgYT1vayhjKSxmPW5ldyBTZXQ7cmV0dXJuIFJuKGwsZnVuY3Rpb24obSl7dmFyIE89R2RlKGEo''@;'; put 'put ''bSksMyksYWU9T1syXSxwZT1NYXRoLm1heChPWzBdLDApO1JuKEFycmF5LmZyb20obmV3IEFycmF5KGFlLXBlKzEpLGZ1bmN0aW9uKHhlLFZlKXtyZXR1cm4gcGUrVmV9KSxmdW5jdGlvbih4ZSl7Zi5oYXMoeGUpfHxmLmFkZCh4ZSl9KX0pLFBzKEFycmF5LmZyb20oZikuc29ydChmdW5jdGlv''@;'; put 'put ''bihtLF8pe3JldHVybiBtLV99KSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gMCE9PU8mJl89PT1YW08tMV0rMT9tW20ubGVuZ3RoLTFdWzFdKz0xOm0ucHVzaChbXywxXSksbX0sW10pfSh0aGlzLmdldFNlbGVjdGVkKCkpLDEsIkNvbnRleHRNZW51LnJlbW92ZVJvdyIpfSxkaXNhYmxlZDpm''@;'; put 'put ''dW5jdGlvbigpe2lmKCFaNSh0aGlzKSlyZXR1cm4hMDt2YXIgYT10aGlzLmNvdW50Um93cygpO3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09YTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8MD09PWF9LGhpZGRlbjpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dSZW1vdmVSb3d9fX0pLEwxKHIwLFBrLGZ1bmN0aW9uIEpodCgpe3JldHVybntrZXk6UGssbmFtZTpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZ2V0U2VsZWN0ZWQoKSxhPTA7aWYoYylpZihjLmxlbmd0aD4xKWE9MTtlbHNle3Zh''@;'; put 'put ''ciBmPWZ1bmN0aW9uIEdodChsLGMpe3JldHVybiBmdW5jdGlvbiBYaHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIHFodChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJh''@;'; put 'put ''dG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxl''@;'; put 'put ''bmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gS2h0KGwsYyl7''@;'; put 'put ''aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBJM2UobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNl''@;'; put 'put ''dCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEkzZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gJGh0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxp''@;'; put 'put ''ZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oY1swXSw0KTtmWzFdLWZbM10hPTAmJihhPTEp''@;'; put 'put ''fXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobUcsYSl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5hbHRlcigicmVtb3ZlX2NvbCIsZnVuY3Rpb24gQm90KGwpe3ZhciBjPU05KGwpO2lmKDA9PT1jfHwxPT09YylyZXR1cm5bXTt2YXIgYT1vayhjKSxmPW5ldyBTZXQ7cmV0dXJu''@;'; put 'put ''IFJuKGwsZnVuY3Rpb24obSl7dmFyIE89R2RlKGEobSksNCksYWU9T1szXSxwZT1NYXRoLm1heChPWzFdLDApO1JuKEFycmF5LmZyb20obmV3IEFycmF5KGFlLXBlKzEpLGZ1bmN0aW9uKHhlLFZlKXtyZXR1cm4gcGUrVmV9KSxmdW5jdGlvbih4ZSl7Zi5oYXMoeGUpfHxmLmFkZCh4ZSl9KX0p''@;'; put 'put ''LFBzKEFycmF5LmZyb20oZikuc29ydChmdW5jdGlvbihtLF8pe3JldHVybiBtLV99KSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gMCE9PU8mJl89PT1YW08tMV0rMT9tW20ubGVuZ3RoLTFdWzFdKz0xOm0ucHVzaChbXywxXSksbX0sW10pfSh0aGlzLmdldFNlbGVjdGVkKCkpLG51bGwsIkNv''@;'; put 'put ''bnRleHRNZW51LnJlbW92ZUNvbHVtbiIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe2lmKCF0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXJldHVybiEwO2lmKCFaNSh0aGlzKSlyZXR1cm4hMDt2YXIgYT10aGlzLmNvdW50Q29scygpO3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc1Nl''@;'; put 'put ''bGVjdGVkQnlDb3JuZXIoKT8wPT09YTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8MD09PWF9LGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dSZW1vdmVDb2x1bW59fX0pLEwxKHIwLE5MLGZ1bmN0aW9uIHMydCgpe3JldHVy''@;'; put 'put ''bntrZXk6TkwsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZ0cpfSxjYWxsYmFjazpmdW5jdGlvbigpe3RoaXMudW5kbygpfSxoaWRkZW46ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKTtyZXR1cm4hY3x8IWMuaXNFbmFi''@;'; put 'put ''bGVkKCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpLmlzVW5kb0F2YWlsYWJsZSgpfX19KSxMMShyMCxMTCxmdW5jdGlvbiBXaHQoKXtyZXR1cm57a2V5OkxMLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhy''@;'; put 'put ''YXNlKHZHKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLnJlZG8oKX0saGlkZGVuOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIik7cmV0dXJuIWN8fCFjLmlzRW5hYmxlZCgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmdldFBsdWdpbigidW5k''@;'; put 'put ''b1JlZG8iKS5pc1JlZG9BdmFpbGFibGUoKX19fSksTDEocjAsTGssZnVuY3Rpb24gWWh0KCl7cmV0dXJue2tleTpMayxuYW1lOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh5Ryk7cmV0dXJuIFloKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0''@;'; put 'put ''aW9uKGQsaCl7cmV0dXJuIGMuZ2V0Q2VsbE1ldGEoZCxoKS5yZWFkT25seX0pJiYoYT13MyhhKSksYX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZj1ZaChhLGZ1bmN0aW9uKGQsaCl7cmV0dXJuIGMuZ2V0Q2VsbE1ldGEoZCxoKS5y''@;'; put 'put ''ZWFkT25seX0pO1JuKGEsZnVuY3Rpb24oZCl7ZC5mb3JBbGwoZnVuY3Rpb24oaCxtKXtoPj0wJiZtPj0wJiZjLnNldENlbGxNZXRhKGgsbSwicmVhZE9ubHkiLCFmKX0pfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLnNlbGVjdGlvbi5pc1NlbGVj''@;'; put 'put ''dGVkQnlDb3JuZXIoKSYmMCE9PXRoaXMuY291bnRSb3dzKCkmJjAhPT10aGlzLmNvdW50Q29scygpJiZ0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSYmMCE9PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLmxlbmd0aCl9fX0pLEwxKHIwLFZmLGZ1bmN0aW9uIGpodCgpe3JldHVybntrZXk6VmYsbmFt''@;'; put 'put ''ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoUkcpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5jb3VudFJvd3MoKXx8MD09PXRoaXMuY291bnRDb2xzKCl8fCEodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCkmJiF0aGlzLnNlbGVjdGlvbi5p''@;'; put 'put ''c1NlbGVjdGVkQnlDb3JuZXIoKSl9LHN1Ym1lbnU6e2l0ZW1zOlt7a2V5OiIiLmNvbmNhdChWZiwiOmxlZnQiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShMRyk7cmV0dXJuIFloKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9u''@;'; put 'put ''KGQsaCl7dmFyIG09Yy5nZXRDZWxsTWV0YShkLGgpLmNsYXNzTmFtZTtpZihtJiYtMSE9PW0uaW5kZXhPZigiaHRMZWZ0IikpcmV0dXJuITB9KSYmKGE9dzMoYSkpLGF9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9WTUoYSxmdW5j''@;'; put 'put ''dGlvbihtLF8pe3JldHVybiBjLmdldENlbGxNZXRhKG0sXykuY2xhc3NOYW1lfSksZD0iaG9yaXpvbnRhbCIsaD0iaHRMZWZ0Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixmLGEsZCxoKSx6NChhLGQsaCxmdW5jdGlvbihtLF8pe3JldHVybiBjLmdldENlbGxNZXRhKG0s''@;'; put 'put ''Xyl9LGZ1bmN0aW9uKG0sXyxPLFgpe3JldHVybiBjLnNldENlbGxNZXRhKG0sXyxPLFgpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6IiIuY29uY2F0KFZmLCI6Y2VudGVyIiksbmFtZTpmdW5jdGlvbigpe3ZhciBjPXRoaXMsYT10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2Uo''@;'; put 'put ''UEcpO3JldHVybiBZaCh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbihkLGgpe3ZhciBtPWMuZ2V0Q2VsbE1ldGEoZCxoKS5jbGFzc05hbWU7aWYobSYmLTEhPT1tLmluZGV4T2YoImh0Q2VudGVyIikpcmV0dXJuITB9KSYmKGE9dzMoYSkpLGF9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIGM9dGhpcyxhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9WTUoYSxmdW5jdGlvbihtLF8pe3JldHVybiBjLmdldENlbGxNZXRhKG0sXykuY2xhc3NOYW1lfSksZD0iaG9yaXpvbnRhbCIsaD0iaHRDZW50ZXIiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLGYsYSxk''@;'; put 'put ''LGgpLHo0KGEsZCxoLGZ1bmN0aW9uKG0sXyl7cmV0dXJuIGMuZ2V0Q2VsbE1ldGEobSxfKX0sZnVuY3Rpb24obSxfLE8sWCl7cmV0dXJuIGMuc2V0Q2VsbE1ldGEobSxfLE8sWCl9KSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleToiIi5jb25jYXQoVmYsIjpyaWdodCIpLG5hbWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEZHKTtyZXR1cm4gWWgodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oZCxoKXt2YXIgbT1jLmdldENlbGxNZXRhKGQsaCkuY2xhc3NOYW1lO2lmKG0mJi0xIT09bS5pbmRleE9mKCJodFJpZ2h0''@;'; put 'put ''IikpcmV0dXJuITB9KSYmKGE9dzMoYSkpLGF9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9WTUoYSxmdW5jdGlvbihtLF8pe3JldHVybiBjLmdldENlbGxNZXRhKG0sXykuY2xhc3NOYW1lfSksZD0iaG9yaXpvbnRhbCIsaD0iaHRS''@;'; put 'put ''aWdodCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZixhLGQsaCksejQoYSxkLGgsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pfSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gYy5zZXRDZWxsTWV0YShtLF8sTyxYKX0pLHRoaXMucmVuZGVyKCl9''@;'; put 'put ''LGRpc2FibGVkOiExfSx7a2V5OiIiLmNvbmNhdChWZiwiOmp1c3RpZnkiKSxuYW1lOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShIRyk7cmV0dXJuIFloKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKGQsaCl7dmFyIG09Yy5nZXRDZWxs''@;'; put 'put ''TWV0YShkLGgpLmNsYXNzTmFtZTtpZihtJiYtMSE9PW0uaW5kZXhPZigiaHRKdXN0aWZ5IikpcmV0dXJuITB9KSYmKGE9dzMoYSkpLGF9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9WTUoYSxmdW5jdGlvbihtLF8pe3JldHVybiBj''@;'; put 'put ''LmdldENlbGxNZXRhKG0sXykuY2xhc3NOYW1lfSksZD0iaG9yaXpvbnRhbCIsaD0iaHRKdXN0aWZ5Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixmLGEsZCxoKSx6NChhLGQsaCxmdW5jdGlvbihtLF8pe3JldHVybiBjLmdldENlbGxNZXRhKG0sXyl9LGZ1bmN0aW9uKG0s''@;'; put 'put ''XyxPLFgpe3JldHVybiBjLnNldENlbGxNZXRhKG0sXyxPLFgpfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtuYW1lOmJhfSx7a2V5OiIiLmNvbmNhdChWZiwiOnRvcCIpLG5hbWU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKE5HKTtyZXR1''@;'; put 'put ''cm4gWWgodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oZCxoKXt2YXIgbT1jLmdldENlbGxNZXRhKGQsaCkuY2xhc3NOYW1lO2lmKG0mJi0xIT09bS5pbmRleE9mKCJodFRvcCIpKXJldHVybiEwfSkmJihhPXczKGEpKSxhfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjPXRoaXMs''@;'; put 'put ''YT10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmPVk1KGEsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pLmNsYXNzTmFtZX0pLGQ9InZlcnRpY2FsIixoPSJodFRvcCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZixhLGQsaCksejQoYSxkLGgsZnVu''@;'; put 'put ''Y3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pfSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gYy5zZXRDZWxsTWV0YShtLF8sTyxYKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OiIiLmNvbmNhdChWZiwiOm1pZGRsZSIpLG5hbWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''Yz10aGlzLGE9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFZHKTtyZXR1cm4gWWgodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oZCxoKXt2YXIgbT1jLmdldENlbGxNZXRhKGQsaCkuY2xhc3NOYW1lO2lmKG0mJi0xIT09bS5pbmRleE9mKCJodE1pZGRsZSIpKXJldHVybiEwfSkm''@;'; put 'put ''JihhPXczKGEpKSxhfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjPXRoaXMsYT10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmPVk1KGEsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pLmNsYXNzTmFtZX0pLGQ9InZlcnRpY2FsIixoPSJodE1pZGRsZSI7dGhpcy5ydW5I''@;'; put 'put ''b29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZixhLGQsaCksejQoYSxkLGgsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pfSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gYy5zZXRDZWxsTWV0YShtLF8sTyxYKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7''@;'; put 'put ''a2V5OiIiLmNvbmNhdChWZiwiOmJvdHRvbSIpLG5hbWU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEJHKTtyZXR1cm4gWWgodGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksZnVuY3Rpb24oZCxoKXt2YXIgbT1jLmdldENlbGxNZXRhKGQsaCkuY2xhc3NO''@;'; put 'put ''YW1lO2lmKG0mJi0xIT09bS5pbmRleE9mKCJodEJvdHRvbSIpKXJldHVybiEwfSkmJihhPXczKGEpKSxhfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjPXRoaXMsYT10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxmPVk1KGEsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8p''@;'; put 'put ''LmNsYXNzTmFtZX0pLGQ9InZlcnRpY2FsIixoPSJodEJvdHRvbSI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsZixhLGQsaCksejQoYSxkLGgsZnVuY3Rpb24obSxfKXtyZXR1cm4gYy5nZXRDZWxsTWV0YShtLF8pfSxmdW5jdGlvbihtLF8sTyxYKXtyZXR1cm4gYy5zZXRD''@;'; put 'put ''ZWxsTWV0YShtLF8sTyxYKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfV19fX0pLHIwKTtmdW5jdGlvbiBGM2UoKXt2YXIgbD17fTtyZXR1cm4gbWEoUDNlLGZ1bmN0aW9uKGMsYSl7bFthXT1jKCl9KSxsfWZ1bmN0aW9uIE5rKGwpe3JldHVybihOaz0iZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8i''@;'; put 'put ''c3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEgzZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsaDJ0KGYua2V5KSxmKX19ZnVuY3Rpb24gaDJ0KGwpe3ZhciBjPWZ1bmN0aW9uIHAydChsLGMpe2lmKCJvYmplY3QiIT09TmsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwo''@;'; put 'put ''bCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09TmsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTty''@;'; put 'put ''ZXR1cm4ic3ltYm9sIj09PU5rKGMpP2M6U3RyaW5nKGMpfXZhciBtMnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsOyhmdW5jdGlvbiBmMnQobCxjKXtpZighKGwgaW5zdGFu''@;'; put 'put ''Y2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0aGlzLnByZWRlZmluZWRJdGVtcz1GM2UoKSx0aGlzLmRlZmF1bHRPcmRlclBhdHRlcm49YX1yZXR1cm4gZnVuY3Rpb24gZDJ0KGwsYyxh''@;'; put 'put ''KXtjJiZIM2UobC5wcm90b3R5cGUsYyksYSYmSDNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldFByZWRlZmluZWRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxkPXt9O3RoaXMuZGVmYXVsdE9y''@;'; put 'put ''ZGVyUGF0dGVybi5sZW5ndGg9MCxtYShhLGZ1bmN0aW9uKGgsbSl7dmFyIF89IiI7aC5uYW1lPT09YmE/KGRbYmFdPWgsXz1iYSk6aXNOYU4ocGFyc2VJbnQobSwxMCkpPyhoLmtleT12b2lkIDA9PT1oLmtleT9tOmgua2V5LGRbbV09aCxfPWgua2V5KTooZFtoLmtleV09aCxfPWgua2V5KSxm''@;'; put 'put ''LmRlZmF1bHRPcmRlclBhdHRlcm4ucHVzaChfKX0pLHRoaXMucHJlZGVmaW5lZEl0ZW1zPWR9fSx7a2V5OiJnZXRJdGVtcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZzJ0KCl7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1l''@;'; put 'put ''bnRzWzFdOltdLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LGY9W10sZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZCYmZC5pdGVtcz9kPWQuaXRlbXM6''@;'; put 'put ''QXJyYXkuaXNBcnJheShkKXx8KGQ9YykscGEoZCk/bWEoZCxmdW5jdGlvbihoLG0pe3ZhciBfPWFbInN0cmluZyI9PXR5cGVvZiBoP2g6bV07X3x8KF89aCkscGEoaCk/cnUoXyxoKToic3RyaW5nIj09dHlwZW9mIF8mJihfPXtuYW1lOl99KSx2b2lkIDA9PT1fLmtleSYmKF8ua2V5PW0pLGYu''@;'; put 'put ''cHVzaChfKX0pOlJuKGQsZnVuY3Rpb24oaCxtKXt2YXIgXz1hW2hdOyFfJiZMM2UuaW5kZXhPZihoKT49MHx8KF98fChfPXtuYW1lOmgsa2V5OiIiLmNvbmNhdChtKX0pLHBhKGgpJiZydShfLGgpLHZvaWQgMD09PV8ua2V5JiYoXy5rZXk9bSksZi5wdXNoKF8pKX0pLGZ9KGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHRoaXMuZGVmYXVsdE9yZGVyUGF0dGVybix0aGlzLnByZWRlZmluZWRJdGVtcyl9fV0pLGx9KCk7Y29uc3QgTjNlPW0ydDtmdW5jdGlvbiBWayhsKXtyZXR1cm4oVms9ImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5''@;'; put 'put ''bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBWM2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShsLGIydChmLmtleSksZil9fWZ1bmN0aW9uIGIydChsKXt2YXIgYz1mdW5jdGlvbiBfMnQobCxjKXtpZigib2JqZWN0IiE9PVZrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGws''@;'; put 'put ''Y3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVZrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0''@;'; put 'put ''dXJuInN5bWJvbCI9PT1WayhjKT9jOlN0cmluZyhjKX12YXIgdzJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyFmdW5jdGlvbiB2MnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0o''@;'; put 'put ''dGhpcyxsKTt2YXIgaCxtLF8sTyxYLGFlLGY9VjcoYSksZD15NShhKTt0aGlzLnJvb3RXaW5kb3c9YSx0aGlzLnR5cGU9dGhpcy5nZXRTb3VyY2VUeXBlKGMpLCJsaXRlcmFsIj09PXRoaXMudHlwZT8oaD1wYXJzZUludChjLnRvcCwxMCksXz1wYXJzZUludChjLmxlZnQsMTApLFg9Yy5oZWln''@;'; put 'put ''aHR8fDAsYWU9Yy53aWR0aHx8MCxtPWgsTz1fLGgrPWYsXys9ZCk6ImV2ZW50Ij09PXRoaXMudHlwZSYmKGg9cGFyc2VJbnQoYy5wYWdlWSwxMCksXz1wYXJzZUludChjLnBhZ2VYLDEwKSxYPWMudGFyZ2V0LmNsaWVudEhlaWdodCxhZT1jLnRhcmdldC5jbGllbnRXaWR0aCxtPWgtZixPPV8t''@;'; put 'put ''ZCksdGhpcy50b3A9aCx0aGlzLnRvcFJlbGF0aXZlPW0sdGhpcy5sZWZ0PV8sdGhpcy5sZWZ0UmVsYXRpdmU9Tyx0aGlzLnNjcm9sbFRvcD1mLHRoaXMuc2Nyb2xsTGVmdD1kLHRoaXMuY2VsbEhlaWdodD1YLHRoaXMuY2VsbFdpZHRoPWFlfXJldHVybiBmdW5jdGlvbiB5MnQobCxjLGEpe2Mm''@;'; put 'put ''JlYzZShsLnByb3RvdHlwZSxjKSxhJiZWM2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ2V0U291cmNlVHlwZSIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9ImxpdGVyYWwiO3JldHVybiBhIGluc3RhbmNlb2YgRXZl''@;'; put 'put ''bnQmJihmPSJldmVudCIpLGZ9fSx7a2V5OiJmaXRzQWJvdmUiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRvcFJlbGF0aXZlPj1hLm9mZnNldEhlaWdodH19LHtrZXk6ImZpdHNCZWxvdyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudG9wUmVsYXRpdmUrYS5vZmZzZXRI''@;'; put 'put ''ZWlnaHQ8PShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5yb290V2luZG93LmlubmVySGVpZ2h0KX19LHtrZXk6ImZpdHNPblJpZ2h0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sZWZ0UmVsYXRpdmUrdGhpcy5jZWxs''@;'; put 'put ''V2lkdGgrYS5vZmZzZXRXaWR0aDw9KGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnJvb3RXaW5kb3cuaW5uZXJXaWR0aCl9fSx7a2V5OiJmaXRzT25MZWZ0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sZWZ0UmVsYXRp''@;'; put 'put ''dmU+PWEub2Zmc2V0V2lkdGh9fV0pLGx9KCk7Y29uc3QgQzJ0PXcydDtmdW5jdGlvbiBCayhsKXtyZXR1cm4oQms9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihj''@;'; put 'put ''KXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBCM2UobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1m''@;'; put 'put ''dW5jdGlvbiBqM2UobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/QjNlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXtTMnQobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6QjNlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl''@;'; put 'put ''c2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiBTMnQobCxjLGEpe3JldHVybihjPVUzZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiB6''@;'; put 'put ''M2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFUzZShmLmtleSksZil9fWZ1''@;'; put 'put ''bmN0aW9uIFUzZShsKXt2YXIgYz1mdW5jdGlvbiBFMnQobCxjKXtpZigib2JqZWN0IiE9PUJrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUJr''@;'; put 'put ''KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1CayhjKT9jOlN0cmluZyhj''@;'; put 'put ''KX12YXIgVzNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBNMnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0aGlzLm9wdGlv''@;'; put 'put ''bnM9YXx8e3BhcmVudDpudWxsLG5hbWU6bnVsbCxjbGFzc05hbWU6IiIsa2VlcEluVmlld3BvcnQ6ITAsc3RhbmRhbG9uZTohMSxtaW5XaWR0aDoyMTUsY29udGFpbmVyOnRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyBmcyh0aGlz''@;'; put 'put ''KSx0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5lcih0aGlzLm9wdGlvbnMubmFtZSksdGhpcy5ob3RNZW51PW51bGwsdGhpcy5ob3RTdWJNZW51cz17fSx0aGlzLnBhcmVudE1lbnU9dGhpcy5vcHRpb25zLnBhcmVudHx8bnVsbCx0aGlzLm1lbnVJdGVtcz1udWxsLHRoaXMub3Jp''@;'; put 'put ''Z091dHNpZGVDbGlja0Rlc2VsZWN0cz1udWxsLHRoaXMua2V5RXZlbnQ9ITEsdGhpcy5vZmZzZXQ9e2Fib3ZlOjAsYmVsb3c6MCxsZWZ0OjAscmlnaHQ6MH0sdGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFjaz1udWxsLHRoaXMucmVnaXN0ZXJFdmVudHMoKX1yZXR1cm4gZnVuY3Rpb24gazJ0KGws''@;'; put 'put ''YyxhKXtjJiZ6M2UobC5wcm90b3R5cGUsYyksYSYmejNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGY9dGhpcy5ob3Qucm9vdFdp''@;'; put 'put ''bmRvdztmOyl0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGYuZG9jdW1lbnQsIm1vdXNlZG93biIsZnVuY3Rpb24oZCl7cmV0dXJuIGEub25Eb2N1bWVudE1vdXNlRG93bihkKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZi5kb2N1bWVudCwiY29udGV4''@;'; put 'put ''dG1lbnUiLGZ1bmN0aW9uKGQpe3JldHVybiBhLm9uRG9jdW1lbnRDb250ZXh0TWVudShkKX0pLGY9alMoZil9fSx7a2V5OiJzZXRNZW51SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMubWVudUl0ZW1zPWF9fSx7a2V5OiJnZXRTZWxlY3RlZEl0ZW0iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKCk/dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyh0aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KClbMF0pOm51bGx9fSx7a2V5OiJoYXNTZWxlY3RlZEl0ZW0iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhp''@;'; put 'put ''cy5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpKX19LHtrZXk6InNldE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5vZmZzZXRbYV09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjB9fSx7a2V5OiJpc1N1Yk1lbnUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLnBhcmVudE1lbnV9fSx7a2V5OiJvcGVuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVPcGVuIiksdGhpcy5jb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLHRoaXMuY29udGFp''@;'; put 'put ''bmVyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt2YXIgZj1UWShmdW5jdGlvbih4ZSl7cmV0dXJuIGEub3BlblN1Yk1lbnUoeGUpfSwzMDApLGQ9dGhpcy5vcHRpb25zLm1pbldpZHRofHwyMTUsaD0hMSxtPUQxKHRoaXMubWVudUl0ZW1zLGZ1bmN0aW9uKHhlKXtyZXR1cm4geGUua2V5PT09Rmsm''@;'; put 'put ''JihoPSEwKSxmdW5jdGlvbiBwaHQobCxjKXtyZXR1cm4hbC5oaWRkZW58fCEoImZ1bmN0aW9uIj09dHlwZW9mIGwuaGlkZGVuJiZsLmhpZGRlbi5jYWxsKGMpKX0oeGUsYS5ob3QpfSk7aWYobS5sZW5ndGg8MSYmIWgpbS5wdXNoKEYzZSgpW0ZrXSk7ZWxzZSBpZigwPT09bS5sZW5ndGgpcmV0''@;'; put 'put ''dXJuO209ZnVuY3Rpb24gdmh0KGwpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpiYSxhPWwuc2xpY2UoMCk7cmV0dXJuIGE9ZnVuY3Rpb24gbWh0KGwsYyl7dmFyIGE9bC5zbGljZSgwKTtyZXR1cm4gYS5yZXZlcnNlKCksKGE9''@;'; put 'put ''UzNlKGEsYykpLnJldmVyc2UoKSxhfShhPVMzZShhLGMpLGMpLGE9ZnVuY3Rpb24gZ2h0KGwpe3ZhciBjPVtdO3JldHVybiBSbihsLGZ1bmN0aW9uKGEsZil7Zj4wP2NbYy5sZW5ndGgtMV0ubmFtZSE9PWEubmFtZSYmYy5wdXNoKGEpOmMucHVzaChhKX0pLGN9KGEpLGF9KG0sYmEpO3ZhciBf''@;'; put 'put ''PSExLE89e2RhdGE6bSxjb2xIZWFkZXJzOiExLGF1dG9Db2x1bW5TaXplOiEwLGF1dG9XcmFwUm93OiExLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKFZlKXtyZXR1cm4gaW8oVmUpJiZWZTxkP2Q6VmV9LGF1dG9Sb3dTaXplOiExLHJlYWRPbmx5OiEwLGVkaXRvcjohMSxjb3B5UGFzdGU6ITEs''@;'; put 'put ''bWF4Q29sczoxLGNvbHVtbnM6W3tkYXRhOiJuYW1lIixyZW5kZXJlcjpmdW5jdGlvbihWZSxaZSxsdCxkdCxndCxqdCl7cmV0dXJuIGEubWVudUl0ZW1SZW5kZXJlcihWZSxaZSxsdCxkdCxndCxqdCl9fV0scmVuZGVyQWxsUm93czohMCxmcmFnbWVudFNlbGVjdGlvbjohMSxvdXRzaWRlQ2xp''@;'; put 'put ''Y2tEZXNlbGVjdHM6ITEsZGlzYWJsZVZpc3VhbFNlbGVjdGlvbjoiYXJlYSIsbGF5b3V0RGlyZWN0aW9uOnRoaXMuaG90LmlzUnRsKCk/InJ0bCI6Imx0ciIsYWZ0ZXJPbkNlbGxNb3VzZU92ZXI6ZnVuY3Rpb24oVmUsWmUpe2EuaXNBbGxTdWJNZW51c0Nsb3NlZCgpP2YoWmUucm93KTphLm9w''@;'; put 'put ''ZW5TdWJNZW51KFplLnJvdyl9LHJvd0hlaWdodHM6ZnVuY3Rpb24oVmUpe3JldHVybiBtW1ZlXS5uYW1lPT09YmE/MToyM30sYWZ0ZXJPbkNlbGxDb250ZXh0TWVudTpmdW5jdGlvbihWZSl7VmUucHJldmVudERlZmF1bHQoKSxkWSgpJiZfJiZhLmhhc1NlbGVjdGVkSXRlbSgpJiZhLmNsb3Nl''@;'; put 'put ''KCEwKX0sYmVmb3JlT25DZWxsTW91c2VVcDpmdW5jdGlvbihWZSl7YS5oYXNTZWxlY3RlZEl0ZW0oKSYmKF89IWEuaXNDb21tYW5kUGFzc2l2ZShhLmdldFNlbGVjdGVkSXRlbSgpKSxhLmV4ZWN1dGVDb21tYW5kKFZlKSl9LGFmdGVyT25DZWxsTW91c2VVcDpmdW5jdGlvbihWZSl7KCFkWSgp''@;'; put 'put ''fHwhSTQoVmUpKSYmXyYmYS5oYXNTZWxlY3RlZEl0ZW0oKSYmKFBkKCl8fGZZKCk/c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBhLmNsb3NlKCEwKX0sMzI1KTphLmNsb3NlKCEwKSl9LGFmdGVyVW5saXN0ZW46ZnVuY3Rpb24oKXshYS5oYXNTZWxlY3RlZEl0ZW0oKSYmYS5pc09wZW5l''@;'; put 'put ''ZCgpJiZhLmhvdE1lbnUubGlzdGVuKCl9fTt0aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM9ITEsdGhpcy5ob3RNZW51PW5l''@;'; put 'put ''dyBLJCh0aGlzLmNvbnRhaW5lcixPKSx0aGlzLmhvdE1lbnUuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiBhLm9uQWZ0ZXJJbml0KCl9KSx0aGlzLmhvdE1lbnUuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIGEub25BZnRlclNlbGVjdGlv''@;'; put 'put ''bi5hcHBseShhLGFyZ3VtZW50cyl9KSx0aGlzLmhvdE1lbnUuaW5pdCgpLHRoaXMuaG90TWVudS5saXN0ZW4oKTt2YXIgWD10aGlzLmhvdE1lbnUuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksYWU9WC5hZGRDb250ZXh0KCJtZW51IiksYmU9ajNlKGozZSh7fSx7Z3JvdXA6Im1lbnUifSkse30se3J1''@;'; put 'put ''bk9ubHlJZjpmdW5jdGlvbihWZSl7cmV0dXJuITE9PT0kUyhWZS50YXJnZXQpfHwhMT09PWEuY29udGFpbmVyLmNvbnRhaW5zKFZlLnRhcmdldCl9fSk7WC5zZXRBY3RpdmVDb250ZXh0TmFtZSgibWVudSIpLGFlLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siRXNjYXBlIl1dLGNhbGxiYWNrOmZ1''@;'; put 'put ''bmN0aW9uKCl7YS5rZXlFdmVudD0hMCxhLmNsb3NlKCksYS5rZXlFdmVudD0hMX19LHtrZXlzOltbIkFycm93RG93biJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBWZT1hLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7YS5rZXlFdmVudD0hMCxWZT9hLnNlbGVjdE5leHRDZWxsKFZlWzBd''@;'; put 'put ''LFZlWzFdKTphLnNlbGVjdEZpcnN0Q2VsbCgpLGEua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFZlPWEuaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKTthLmtleUV2ZW50PSEwLFZlP2Euc2VsZWN0UHJldkNlbGwoVmVbMF0sVmVbMV0p''@;'; put 'put ''OmEuc2VsZWN0TGFzdENlbGwoKSxhLmtleUV2ZW50PSExfX0se2tleXM6W1siQXJyb3dSaWdodCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBWZT1hLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7aWYoYS5rZXlFdmVudD0hMCxWZSl7dmFyIFplPWEub3BlblN1Yk1lbnUoVmVbMF0pO1pl''@;'; put 'put ''JiZaZS5zZWxlY3RGaXJzdENlbGwoKX1hLmtleUV2ZW50PSExfX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFZlPWEuaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKTthLmtleUV2ZW50PSEwLFZlJiZhLmlzU3ViTWVudSgpJiYoYS5jbG9zZSgpLGEucGFy''@;'; put 'put ''ZW50TWVudSYmYS5wYXJlbnRNZW51LmhvdE1lbnUubGlzdGVuKCkpLGEua2V5RXZlbnQ9ITF9fSx7a2V5czpbWyJFbnRlciJdXSxjYWxsYmFjazpmdW5jdGlvbihWZSl7dmFyIFplPWEuaG90TWVudS5nZXRTZWxlY3RlZExhc3QoKTthLmtleUV2ZW50PSEwLGEuaG90TWVudS5nZXRTb3VyY2VE''@;'; put 'put ''YXRhQXRSb3coWmVbMF0pLnN1Ym1lbnV8fChhLmV4ZWN1dGVDb21tYW5kKFZlKSxhLmNsb3NlKCEwKSksYS5rZXlFdmVudD0hMX19LHtrZXlzOltbIlBhZ2VVcCJdXSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBWZT1hLmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7YS5rZXlFdmVudD0hMCxW''@;'; put 'put ''ZT9hLmhvdE1lbnUuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC1hLmhvdE1lbnUuY291bnRWaXNpYmxlUm93cygpLDApOmEuc2VsZWN0Rmlyc3RDZWxsKCksYS5rZXlFdmVudD0hMX19LHtrZXlzOltbIlBhZ2VEb3duIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIFZlPWEuaG90TWVudS5n''@;'; put 'put ''ZXRTZWxlY3RlZExhc3QoKTthLmtleUV2ZW50PSEwLFZlP2EuaG90TWVudS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoYS5ob3RNZW51LmNvdW50VmlzaWJsZVJvd3MoKSwwKTphLnNlbGVjdExhc3RDZWxsKCksYS5rZXlFdmVudD0hMX19XSxiZSksdGhpcy5ibG9ja01haW5UYWJsZUNhbGxi''@;'; put 'put ''YWNrcygpLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJPcGVuIil9fSx7a2V5OiJjbG9zZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3RoaXMuaXNPcGVuZWQoKSYmKGEmJnRoaXMucGFyZW50''@;'; put 'put ''TWVudT90aGlzLnBhcmVudE1lbnUuY2xvc2UoKToodGhpcy5jbG9zZUFsbFN1Yk1lbnVzKCksdGhpcy5jb250YWluZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5yZWxlYXNlTWFpblRhYmxlQ2FsbGJhY2tzKCksdGhpcy5ob3RNZW51LmRlc3Ryb3koKSx0aGlzLmhvdE1lbnU9bnVsbCx0''@;'; put 'put ''aGlzLmhvdC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cz10aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHMsdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsb3NlIiksdGhpcy5wYXJlbnRNZW51JiZ0aGlzLnBhcmVudE1lbnUuaG90TWVudS5saXN0ZW4oKSkpfX0se2tl''@;'; put 'put ''eToib3BlblN1Yk1lbnUiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLmhvdE1lbnUpcmV0dXJuITE7dmFyIGY9dGhpcy5ob3RNZW51LmdldENlbGwoYSwwKTtpZih0aGlzLmNsb3NlQWxsU3ViTWVudXMoKSwhZnx8IWZ1bmN0aW9uIGNodChsKXtyZXR1cm4gWW8obCwiaHRTdWJtZW51Iil9''@;'; put 'put ''KGYpKXJldHVybiExO3ZhciBkPXRoaXMuaG90TWVudS5nZXRTb3VyY2VEYXRhQXRSb3coYSksaD1uZXcgbCh0aGlzLmhvdCx7cGFyZW50OnRoaXMsbmFtZTpkLm5hbWUsY2xhc3NOYW1lOnRoaXMub3B0aW9ucy5jbGFzc05hbWUsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOnRoaXMub3B0''@;'; put 'put ''aW9ucy5jb250YWluZXJ9KTtyZXR1cm4gaC5zZXRNZW51SXRlbXMoZC5zdWJtZW51Lml0ZW1zKSxoLm9wZW4oKSxoLnNldFBvc2l0aW9uKGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHRoaXMuaG90U3ViTWVudXNbZC5rZXldPWgsaH19LHtrZXk6ImNsb3NlU3ViTWVudSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oYSl7dmFyIGY9dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyhhKSxkPXRoaXMuaG90U3ViTWVudXNbZi5rZXldO2QmJihkLmRlc3Ryb3koKSxkZWxldGUgdGhpcy5ob3RTdWJNZW51c1tmLmtleV0pfX0se2tleToiY2xvc2VBbGxTdWJNZW51cyIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgYT10aGlzO1JuKHRoaXMuaG90TWVudS5nZXREYXRhKCksZnVuY3Rpb24oZixkKXtyZXR1cm4gYS5jbG9zZVN1Yk1lbnUoZCl9KX19LHtrZXk6ImlzQWxsU3ViTWVudXNDbG9zZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1PYmplY3Qua2V5cyh0aGlzLmhvdFN1Yk1lbnVz''@;'; put 'put ''KS5sZW5ndGh9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29udGFpbmVyLnBhcmVudE5vZGU7dGhpcy5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNsb3NlKCksdGhpcy5wYXJlbnRNZW51PW51bGwsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLGEmJmEu''@;'; put 'put ''cmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpfX0se2tleToiaXNPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLmhvdE1lbnV9fSx7a2V5OiJleGVjdXRlQ29tbWFuZCIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYodGhpcy5pc09wZW5lZCgpJiZ0aGlzLmhhc1NlbGVj''@;'; put 'put ''dGVkSXRlbSgpKXt2YXIgZj10aGlzLmdldFNlbGVjdGVkSXRlbSgpO2lmKHRoaXMucnVuTG9jYWxIb29rcygic2VsZWN0IixmLGEpLCF0aGlzLmlzQ29tbWFuZFBhc3NpdmUoZikpe3ZhciBkPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2UoKSxoPWQ/ZnVuY3Rpb24gdWh0KGwpe3JldHVybiBo''@;'; put 'put ''YShsLGZ1bmN0aW9uKGMpe3JldHVybntzdGFydDpjLmdldFRvcFN0YXJ0Q29ybmVyKCksZW5kOmMuZ2V0Qm90dG9tRW5kQ29ybmVyKCl9fSl9KGQpOltdO3RoaXMucnVuTG9jYWxIb29rcygiZXhlY3V0ZUNvbW1hbmQiLGYua2V5LGgsYSksdGhpcy5pc1N1Yk1lbnUoKSYmdGhpcy5wYXJlbnRN''@;'; put 'put ''ZW51LnJ1bkxvY2FsSG9va3MoImV4ZWN1dGVDb21tYW5kIixmLmtleSxoLGEpfX19fSx7a2V5OiJpc0NvbW1hbmRQYXNzaXZlIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hLmlzQ29tbWFuZCxkPWEubmFtZSxoPWEuZGlzYWJsZWQsbT1hLnN1Ym1lbnUsXz0hMD09PWh8fCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBoJiYhMD09PWguY2FsbCh0aGlzLmhvdCk7cmV0dXJuITE9PT1mfHxkPT09YmF8fCEwPT09X3x8bX19LHtrZXk6InNldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1uZXcgQzJ0KGEsdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyk7dGhp''@;'; put 'put ''cy5vcHRpb25zLmtlZXBJblZpZXdwb3J0PyhmLmZpdHNCZWxvdyh0aGlzLmNvbnRhaW5lcik/dGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKGYpOmYuZml0c0Fib3ZlKHRoaXMuY29udGFpbmVyKT90aGlzLnNldFBvc2l0aW9uQWJvdmVDdXJzb3IoZik6dGhpcy5zZXRQb3NpdGlvbkJlbG93''@;'; put 'put ''Q3Vyc29yKGYpLHRoaXMuaG90LmlzTHRyKCk/dGhpcy5zZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JMdHIoZik6dGhpcy5zZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JSdGwoZikpOih0aGlzLnNldFBvc2l0aW9uQmVsb3dDdXJzb3IoZiksdGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvcihm''@;'; put 'put ''KSl9fSx7a2V5OiJzZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JSdGwiLHZhbHVlOmZ1bmN0aW9uKGEpe2EuZml0c09uTGVmdCh0aGlzLmNvbnRhaW5lcik/dGhpcy5zZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yKGEpOnRoaXMuc2V0UG9zaXRpb25PblJpZ2h0T2ZDdXJzb3IoYSl9fSx7a2V5OiJz''@;'; put 'put ''ZXRIb3Jpem9udGFsUG9zaXRpb25Gb3JMdHIiLHZhbHVlOmZ1bmN0aW9uKGEpe2EuZml0c09uUmlnaHQodGhpcy5jb250YWluZXIpP3RoaXMuc2V0UG9zaXRpb25PblJpZ2h0T2ZDdXJzb3IoYSk6dGhpcy5zZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yKGEpfX0se2tleToic2V0UG9zaXRpb25B''@;'; put 'put ''Ym92ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5vZmZzZXQuYWJvdmUrYS50b3AtdGhpcy5jb250YWluZXIub2Zmc2V0SGVpZ2h0O3RoaXMuaXNTdWJNZW51KCkmJihmPWEudG9wK2EuY2VsbEhlaWdodC10aGlzLmNvbnRhaW5lci5vZmZzZXRIZWlnaHQrMyksdGhpcy5j''@;'; put 'put ''b250YWluZXIuc3R5bGUudG9wPSIiLmNvbmNhdChmLCJweCIpfX0se2tleToic2V0UG9zaXRpb25CZWxvd0N1cnNvciIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5vZmZzZXQuYmVsb3crYS50b3ArMTt0aGlzLmlzU3ViTWVudSgpJiYoZj1hLnRvcC0xKSx0aGlzLmNvbnRhaW5lci5z''@;'; put 'put ''dHlsZS50b3A9IiIuY29uY2F0KGYsInB4Iil9fSx7a2V5OiJzZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9YS5sZWZ0O2lmKHRoaXMuaXNTdWJNZW51KCkpe3ZhciBkPXRoaXMucGFyZW50TWVudS5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRS''@;'; put 'put ''ZWN0KCk7Zis9YS5jZWxsV2lkdGgrZC5yaWdodC0oYS5sZWZ0K2EuY2VsbFdpZHRoKX1lbHNlIGYrPXRoaXMub2Zmc2V0LnJpZ2h0O3RoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQ9IiIuY29uY2F0KGYsInB4Iil9fSx7a2V5OiJzZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhKXt2YXIgZj10aGlzLm9mZnNldC5sZWZ0K2EubGVmdC10aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0aDtpZih0aGlzLmlzU3ViTWVudSgpKXt2YXIgZD10aGlzLnBhcmVudE1lbnUuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2YtPWEubGVmdC1kLmxlZnR9dGhpcy5j''@;'; put 'put ''b250YWluZXIuc3R5bGUubGVmdD0iIi5jb25jYXQoZiwicHgiKX19LHtrZXk6InNlbGVjdEZpcnN0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhvdE1lbnUuZ2V0Q2VsbCgwLDApO0FMKGEpfHxUTChhKXx8T0woYSk/dGhpcy5zZWxlY3ROZXh0Q2VsbCgwLDApOnRoaXMuaG90''@;'; put 'put ''TWVudS5zZWxlY3RDZWxsKDAsMCl9fSx7a2V5OiJzZWxlY3RMYXN0Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhvdE1lbnUuY291bnRSb3dzKCktMSxmPXRoaXMuaG90TWVudS5nZXRDZWxsKGEsMCk7QUwoZil8fFRMKGYpfHxPTChmKT90aGlzLnNlbGVjdFByZXZDZWxsKGEs''@;'; put 'put ''MCk6KHRoaXMuaG90TWVudS5zZWxlY3RDZWxsKGEsMCx2b2lkIDAsdm9pZCAwLCExKSx0aGlzLmhvdE1lbnUuc2Nyb2xsVmlld3BvcnRUbyhhLDAsITAsITEpKX19LHtrZXk6InNlbGVjdE5leHRDZWxsIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPWErMSxoPWQ8dGhpcy5ob3RNZW51LmNv''@;'; put 'put ''dW50Um93cygpP3RoaXMuaG90TWVudS5nZXRDZWxsKGQsZik6bnVsbDtoJiYoQUwoaCl8fFRMKGgpfHxPTChoKT90aGlzLnNlbGVjdE5leHRDZWxsKGQsZik6dGhpcy5ob3RNZW51LnNlbGVjdENlbGwoZCxmKSl9fSx7a2V5OiJzZWxlY3RQcmV2Q2VsbCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2''@;'; put 'put ''YXIgZD1hLTEsaD1kPj0wP3RoaXMuaG90TWVudS5nZXRDZWxsKGQsZik6bnVsbDtoJiYoQUwoaCl8fFRMKGgpfHxPTChoKT90aGlzLnNlbGVjdFByZXZDZWxsKGQsZik6dGhpcy5ob3RNZW51LnNlbGVjdENlbGwoZCxmKSl9fSx7a2V5OiJtZW51SXRlbVJlbmRlcmVyIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bihhLGYsZCxoLG0sXyl7dmFyIGR0LE89dGhpcyxYPWEuZ2V0U291cmNlRGF0YUF0Um93KGQpLGFlPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxWZT1mdW5jdGlvbihkdCl7cmV0dXJuIGR0LmRpc2FibGVTZWxlY3Rpb259LFplPV87ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFplJiYoWmU9WmUuY2FsbCh0aGlzLmhvdCkpLEZkKGYpLGdpKGFlLCJodEl0ZW1XcmFwcGVyIiksZi5hcHBlbmRDaGlsZChhZSksZHQ9WCxuZXcgUmVnRXhwKGJhLCJpIikudGVzdChkdC5uYW1lKT9naShmLCJodFNlcGFyYXRvciIpOiJmdW5jdGlvbiI9PXR5cGVvZiBYLnJlbmRlcmVy''@;'; put 'put ''PyhnaShmLCJodEN1c3RvbU1lbnVSZW5kZXJlciIpLGYuYXBwZW5kQ2hpbGQoWC5yZW5kZXJlcihhLGFlLGQsaCxtLFplKSkpOnY1KGFlLFplKSxmdW5jdGlvbihkdCl7cmV0dXJuITA9PT1kdC5kaXNhYmxlZHx8ImZ1bmN0aW9uIj09dHlwZW9mIGR0LmRpc2FibGVkJiYhMD09PWR0LmRpc2Fi''@;'; put 'put ''bGVkLmNhbGwoTy5ob3QpfShYKT8oZ2koZiwiaHREaXNhYmxlZCIpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gYS5kZXNlbGVjdENlbGwoKX0pKTpWZShYKT8oZ2koZiwiaHRTZWxlY3Rpb25EaXNhYmxlZCIpLHRo''@;'; put 'put ''aXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gYS5kZXNlbGVjdENlbGwoKX0pKTpmdW5jdGlvbihkdCl7cmV0dXJuIFNzKGR0LCJzdWJtZW51Iil9KFgpPyhnaShmLCJodFN1Ym1lbnUiKSxWZShYKT90aGlzLmV2ZW50TWFu''@;'; put 'put ''YWdlci5hZGRFdmVudExpc3RlbmVyKGYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVzZWxlY3RDZWxsKCl9KTp0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGYsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuc2VsZWN0Q2VsbChkLGgsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCwhMSwhMSl9KSk6KEpvKGYsWyJodFN1Ym1lbnUiLCJodERpc2FibGVkIl0pLFZlKFgpP3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoZiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gYS5kZXNlbGVjdENlbGwoKX0pOnRoaXMuZXZlbnRNYW5hZ2VyLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIoZiwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtyZXR1cm4gYS5zZWxlY3RDZWxsKGQsaCx2b2lkIDAsdm9pZCAwLCExLCExKX0pKX19LHtrZXk6ImNyZWF0ZUNvbnRhaW5lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgaCxmPXRoaXMub3B0aW9ucy5jb250YWluZXIub3du''@;'; put 'put ''ZXJEb2N1bWVudCxkPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBkJiYoUGwoZCkmJihkPW51bGw9PT0oZD1kLmNhbGwodGhpcy5ob3QpKXx8TGwoZCk/IiI6ZC50b1N0cmluZygpKSxkPWQucmVwbGFjZSgvW15BLXow''@;'; put 'put ''LTldL2csIl8iKSxkPSIiLmNvbmNhdCh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lLCJTdWJfIikuY29uY2F0KGQpLGg9Zi5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQodGhpcy5vcHRpb25zLmNsYXNzTmFtZSwiLiIpLmNvbmNhdChkKSkpLGh8fChnaShoPWYuY3JlYXRlRWxlbWVudCgiZGl2Iiks''@;'; put 'put ''Imh0TWVudSAiLmNvbmNhdCh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSksZCYmZ2koaCxkKSx0aGlzLm9wdGlvbnMuY29udGFpbmVyLmFwcGVuZENoaWxkKGgpKSxofX0se2tleToiYmxvY2tNYWluVGFibGVDYWxsYmFja3MiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fYWZ0ZXJTY3JvbGxDYWxs''@;'; put 'put ''YmFjaz1mdW5jdGlvbigpe30sdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5Iix0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlclNjcm9sbEhvcml6b250YWxseSIsdGhpcy5fYWZ0ZXJTY3JvbGxDYWxsYmFjayl9fSx7a2V5OiJy''@;'; put 'put ''ZWxlYXNlTWFpblRhYmxlQ2FsbGJhY2tzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2smJih0aGlzLmhvdC5yZW1vdmVIb29rKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLHRoaXMuX2FmdGVyU2Nyb2xsQ2FsbGJhY2spLHRoaXMuaG90LnJlbW92ZUhvb2soImFm''@;'; put 'put ''dGVyU2Nyb2xsSG9yaXpvbnRhbGx5Iix0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrKSx0aGlzLl9hZnRlclNjcm9sbENhbGxiYWNrPW51bGwpfX0se2tleToib25BZnRlckluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ob3RNZW51LnZpZXcuX3d0Lnd0VGFibGUsZj10aGlzLmhv''@;'; put 'put ''dE1lbnUuZ2V0U2V0dGluZ3MoKS5kYXRhLGQ9YS5oaWRlci5zdHlsZSxoPWEuaG9sZGVyLnN0eWxlLG09cGFyc2VJbnQoZC53aWR0aCwxMCksXz1QcyhmLGZ1bmN0aW9uKE8sWCl7cmV0dXJuIE8rKFgubmFtZT09PWJhPzE6MjYpfSwwKTtoLndpZHRoPSIiLmNvbmNhdChtKzMsInB4IiksaC5o''@;'; put 'put ''ZWlnaHQ9IiIuY29uY2F0KF8rMywicHgiKSxkLmhlaWdodD1oLmhlaWdodH19LHtrZXk6Im9uQWZ0ZXJTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgsbSl7ITE9PT10aGlzLmtleUV2ZW50JiYobS52YWx1ZT0hMCl9fSx7a2V5OiJvbkRvY3VtZW50TW91c2VEb3duIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihhKXt0aGlzLmlzT3BlbmVkKCkmJih0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSYmdGhpcy5ob3RNZW51JiYhQTQoYS50YXJnZXQsdGhpcy5ob3RNZW51LnJvb3RFbGVtZW50KXx8KHRoaXMuaXNBbGxTdWJNZW51c0Nsb3NlZCgpfHx0aGlzLmlzU3ViTWVudSgpKSYmIUE0KGEudGFy''@;'; put 'put ''Z2V0LCIuaHRNZW51IikpJiZ0aGlzLmNsb3NlKCEwKX19LHtrZXk6Im9uRG9jdW1lbnRDb250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5pc09wZW5lZCgpJiZZbyhhLnRhcmdldCwiaHRDb3JlIikmJkE0KGEudGFyZ2V0LHRoaXMuaG90TWVudS5yb290RWxlbWVudCkmJmEucHJl''@;'; put 'put ''dmVudERlZmF1bHQoKX19XSksbH0oKTtUbChXM2UsVzApO2NvbnN0IHFLPVczZTtmdW5jdGlvbiB1eShsKXtyZXR1cm4odXk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5j''@;'; put 'put ''dGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBHM2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9''@;'; put 'put ''Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLE8ydChmLmtleSksZil9fWZ1bmN0aW9uIE8ydChsKXt2YXIgYz1mdW5jdGlvbiBEMnQobCxjKXtpZigi''@;'; put 'put ''b2JqZWN0IiE9PXV5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXV5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Qcmlt''@;'; put 'put ''aXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT11eShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBHNSgpe3JldHVybiBHNT10eXBlb2YgUmVmbGVjdDwi''@;'; put 'put ''dSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gSTJ0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1TMyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2''@;'; put 'put ''YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LEc1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBYSyhsLGMpe3JldHVybihYSz1PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uICQzZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNl''@;'; put 'put ''ZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gUzMobCl7cmV0dXJuKFMzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3Rv''@;'; put 'put ''dHlwZU9mKGEpfSkobCl9dmFyIFZMPSJjb250ZXh0TWVudSI7dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb250ZXh0TWVudVNob3ciKSx1by5nZXRTaW5nbGV0b24o''@;'; put 'put ''KS5yZWdpc3RlcigiYWZ0ZXJDb250ZXh0TWVudVNob3ciKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb250ZXh0TWVudUhpZGUiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb250ZXh0TWVudUV4ZWN1dGUiKTt2YXIgSzNlPWZ1bmN0aW9uKGwpeyFmdW5j''@;'; put 'put ''dGlvbiBSMnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtj''@;'; put 'put ''b25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmWEsobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBMMnQobCl7dmFyIGM9ZnVuY3Rpb24gRjJ0KCl7aWYo''@;'; put 'put ''dHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9UzMobCk7aWYoYyl7dmFyIGg9UzModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIFAydChsLGMpe2lmKGMmJigib2JqZWN0Ij09PXV5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSBy''@;'; put 'put ''ZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiAkM2UobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBBMnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFz''@;'; put 'put ''IGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkuZXZlbnRNYW5hZ2VyPW5ldyBmcygkM2UoZCkpLGQuY29tbWFuZEV4ZWN1dG9yPW5ldyBEM2UoZC5ob3QpLGQuaXRlbXNGYWN0b3J5PW51bGwsZC5tZW51PW51bGwsZH1yZXR1cm4gZnVuY3Rpb24gVDJ0KGwsYyxhKXtj''@;'; put 'put ''JiZHM2UobC5wcm90b3R5cGUsYyksYSYmRzNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbVkxdfX0se2tleToi''@;'; put 'put ''ZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtWTF07ImZ1bmN0aW9uIj09dHlwZW9mIGguY2FsbGJhY2smJnRoaXMuY29tbWFuZEV4ZWN1dG9yLnNldENvbW1vbkNhbGxiYWNrKGgu''@;'; put 'put ''Y2FsbGJhY2spLHRoaXMubWVudT1uZXcgcUsodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRDb250ZXh0TWVudSIsa2VlcEluVmlld3BvcnQ6ITAsY29udGFpbmVyOmgudWlDb250YWluZXJ8fHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5fSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYmVmb3Jl''@;'; put 'put ''T3BlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1lbnVCZWZvcmVPcGVuKCl9KSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlck9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25NZW51QWZ0ZXJPcGVuKCl9KSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBkLm9uTWVudUFmdGVyQ2xvc2UoKX0pLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImV4ZWN1dGVDb21tYW5kIixmdW5jdGlvbigpe2Zvcih2YXIgbSxfPWFyZ3VtZW50cy5sZW5ndGgsTz1uZXcgQXJyYXkoXyksWD0wO1g8XztYKyspT1tYXT1hcmd1bWVudHNbWF07cmV0dXJu''@;'; put 'put ''KG09ZC5leGVjdXRlQ29tbWFuZCkuY2FsbC5hcHBseShtLFtkXS5jb25jYXQoTykpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbkFmdGVyT25DZWxsQ29udGV4dE1lbnUobSl9KSxHNShTMyhhLnByb3RvdHlwZSksImVuYWJs''@;'; put 'put ''ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxHNShTMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6''@;'; put 'put ''ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpLEc1KFMzKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9wZW4iLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGQpe2lmKHRoaXMubWVudSYmKHRoaXMucHJlcGFyZU1lbnVJdGVtcygpLHRoaXMubWVudS5vcGVuKCksdGhpcy5tZW51LmlzT3BlbmVkKCkpKXt2YXIgaD0wLG09MDtpZih0aGlzLmhvdC5yb290RG9jdW1lbnQhPT10aGlzLm1lbnUuY29udGFpbmVyLm93bmVyRG9jdW1lbnQp''@;'; put 'put ''e3ZhciBPPXRoaXMuaG90LnJvb3RXaW5kb3cuZnJhbWVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGFlPU8ubGVmdDtoPU8udG9wLVY3KGQudmlldyksbT1hZS15NShkLnZpZXcpfWVsc2UgaD0tMSpWNyh0aGlzLm1lbnUuaG90TWVudS5yb290V2luZG93KSxtPS0xKnk1KHRoaXMu''@;'; put 'put ''bWVudS5ob3RNZW51LnJvb3RXaW5kb3cpO3RoaXMubWVudS5zZXRQb3NpdGlvbih7dG9wOnBhcnNlSW50KGQucGFnZVksMTApK2gsbGVmdDpwYXJzZUludChkLnBhZ2VYLDEwKSttfSl9fX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZW51JiYodGhpcy5tZW51LmNsb3Nl''@;'; put 'put ''KCksdGhpcy5pdGVtc0ZhY3Rvcnk9bnVsbCl9fSx7a2V5OiJleGVjdXRlQ29tbWFuZCIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg7bnVsbD09PXRoaXMuaXRlbXNGYWN0b3J5JiZ0aGlzLnByZXBhcmVNZW51SXRlbXMoKTtmb3IodmFyIG09YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheSht''@;'; put 'put ''PjE/bS0xOjApLE89MTtPPG07TysrKV9bTy0xXT1hcmd1bWVudHNbT107KGg9dGhpcy5jb21tYW5kRXhlY3V0b3IpLmV4ZWN1dGUuYXBwbHkoaCxbZF0uY29uY2F0KF8pKX19LHtrZXk6InByZXBhcmVNZW51SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLml0ZW1zRmFj''@;'; put 'put ''dG9yeT1uZXcgTjNlKHRoaXMuaG90LGEuREVGQVVMVF9JVEVNUyk7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtWTF0sbT17aXRlbXM6dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoaCl9O3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLG0p''@;'; put 'put ''LHRoaXMuaXRlbXNGYWN0b3J5LnNldFByZWRlZmluZWRJdGVtcyhtLml0ZW1zKTt2YXIgXz10aGlzLml0ZW1zRmFjdG9yeS5nZXRJdGVtcyhoKTt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsXyksdGhpcy5tZW51LnNldE1lbnVJdGVtcyhfKSxSbihfLGZ1''@;'; put 'put ''bmN0aW9uKE8pe3JldHVybiBkLmNvbW1hbmRFeGVjdXRvci5yZWdpc3RlckNvbW1hbmQoTy5rZXksTyl9KX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxDb250ZXh0TWVudSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxtPWgucm93SGVhZGVycyxfPWguY29s''@;'; put 'put ''SGVhZGVycyxYPWQudGFyZ2V0O3RoaXMuY2xvc2UoKSwhWW8oWCwiaGFuZHNvbnRhYmxlSW5wdXQiKSYmKGQucHJldmVudERlZmF1bHQoKSxkLnN0b3BQcm9wYWdhdGlvbigpLChtfHxffHxmdW5jdGlvbiBPKGFlKXtyZXR1cm4iVEQiPT09YWUubm9kZU5hbWV8fCJURCI9PT1hZS5wYXJlbnRO''@;'; put 'put ''b2RlLm5vZGVOYW1lfShYKXx8WW8oWCwiY3VycmVudCIpJiZZbyhYLCJ3dEJvcmRlciIpKSYmdGhpcy5vcGVuKGQpKX19LHtrZXk6Im9uTWVudUJlZm9yZU9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbnRleHRNZW51U2hvdyIsdGhpcyl9fSx7a2V5''@;'; put 'put ''OiJvbk1lbnVBZnRlck9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29udGV4dE1lbnVTaG93Iix0aGlzKX19LHtrZXk6Im9uTWVudUFmdGVyQ2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QubGlzdGVuKCksdGhpcy5ob3QucnVuSG9va3MoImFm''@;'; put 'put ''dGVyQ29udGV4dE1lbnVIaWRlIix0aGlzKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmdGhpcy5tZW51LmRlc3Ryb3koKSxHNShTMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJ''@;'; put 'put ''Tl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBWTH19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDcwfX0se2tleToiUExVR0lOX0RFUFMiLGdldDpmdW5jdGlvbigpe3JldHVyblsicGx1Z2luOkF1dG9Db2x1bW5TaXplIl19fSx7a2V5OiJERUZBVUxU''@;'; put 'put ''X0lURU1TIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bRkwsSEwsYmEsSWssUmssYmEsUEwsUGssYmEsTkwsTEwsYmEsTGssYmEsVmZdfX1dKSxhfShHYSk7ZnVuY3Rpb24gamsobCl7cmV0dXJuKGprPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0''@;'; put 'put ''ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gcTNl''@;'; put 'put ''KGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxZMnQoZi5rZXkpLGYpfX1mdW5j''@;'; put 'put ''dGlvbiBZMnQobCl7dmFyIGM9ZnVuY3Rpb24gVzJ0KGwsYyl7aWYoIm9iamVjdCIhPT1qayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1qayhm''@;'; put 'put ''KSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09amsoYyk/YzpTdHJpbmcoYyl9''@;'; put 'put ''SzNlLlNFUEFSQVRPUj17bmFtZTpiYX07dmFyIEcydD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXsoZnVuY3Rpb24gVTJ0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRo''@;'; put 'put ''aXMuZGF0YT17fX1yZXR1cm4gZnVuY3Rpb24gWjJ0KGwsYyxhKXtjJiZxM2UobC5wcm90b3R5cGUsYyksYSYmcTNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dGhp''@;'; put 'put ''cy5kYXRhW2FdPWZ9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhW2FdfHx2b2lkIDB9fV0pLGx9KCk7ZnVuY3Rpb24gemsobCl7cmV0dXJuKHprPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gWDNlKGws''@;'; put 'put ''Yyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxLMnQoZi5rZXkpLGYpfX1mdW5jdGlv''@;'; put 'put ''biAkMnQobCxjLGEpe3JldHVybiBjJiZYM2UobC5wcm90b3R5cGUsYyksYSYmWDNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH1mdW5jdGlvbiBLMnQobCl7dmFyIGM9ZnVuY3Rpb24gcTJ0KGwsYyl7aWYoIm9iamVjdCIhPT16ayhs''@;'; put 'put ''KXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT16ayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0''@;'; put 'put ''dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09emsoYyk/YzpTdHJpbmcoYyl9dmFyIEoydD0kMnQoZnVuY3Rpb24gbCgpeyhmdW5jdGlvbiBYMnQobCxjKXtpZighKGwgaW5z''@;'; put 'put ''dGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5jbGlwYm9hcmREYXRhPW5ldyBHMnR9KTtmdW5jdGlvbiBVayhsKXtyZXR1cm4oVWs9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGN9KShsKX1mdW5jdGlvbiBKM2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShs''@;'; put 'put ''LHQzdChmLmtleSksZil9fWZ1bmN0aW9uIHQzdChsKXt2YXIgYz1mdW5jdGlvbiBuM3QobCxjKXtpZigib2JqZWN0IiE9PVVrKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQi''@;'; put 'put ''KTtpZigib2JqZWN0IiE9PVVrKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9''@;'; put 'put ''PT1VayhjKT9jOlN0cmluZyhjKX12YXIgSks9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyhmdW5jdGlvbiBRMnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5y''@;'; put 'put ''b290RG9jdW1lbnQ9Yy5kZWZhdWx0Vmlldz9jOmMub3duZXJEb2N1bWVudCx0aGlzLm1haW5FbGVtZW50PW51bGwsdGhpcy5ldmVudE1hbmFnZXI9bmV3IGZzKHRoaXMpLHRoaXMubGlzdGVuZXJzQ291bnQ9bmV3IFdlYWtTZXQsdGhpcy5jb250YWluZXI9Y31yZXR1cm4gZnVuY3Rpb24gZTN0''@;'; put 'put ''KGwsYyxhKXtjJiZKM2UobC5wcm90b3R5cGUsYyksYSYmSjNlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InVzZVNlY29uZGFyeUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24gbzN0KGwpe3Zh''@;'; put 'put ''ciBjPWpMLmdldChsKTtpZihjKXJldHVybiBjLnBhcmVudEVsZW1lbnR8fGwuYXBwZW5kQ2hpbGQoYyksYzt2YXIgZj0obC5kZWZhdWx0Vmlldz9sOmwub3duZXJEb2N1bWVudCkuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gakwuc2V0KGwsZiksZi5zZXRBdHRyaWJ1dGUoImRh''@;'; put 'put ''dGEtaG90LWlucHV0IiwiIiksZi5jbGFzc05hbWU9IkhhbmRzb250YWJsZUNvcHlQYXN0ZSIsZi50YWJJbmRleD0tMSxmLmF1dG9jb21wbGV0ZT0ib2ZmIixmLndyYXA9ImhhcmQiLGYudmFsdWU9IiAiLGwuYXBwZW5kQ2hpbGQoZiksZn0odGhpcy5jb250YWluZXIpO3RoaXMubGlzdGVuZXJz''@;'; put 'put ''Q291bnQuaGFzKGEpfHwodGhpcy5saXN0ZW5lcnNDb3VudC5hZGQoYSksUTNlKHRoaXMuZXZlbnRNYW5hZ2VyLGEsdGhpcykpLHRoaXMubWFpbkVsZW1lbnQ9YX19LHtrZXk6InNldEZvY3VzYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMubGlzdGVuZXJzQ291bnQuaGFzKGEp''@;'; put 'put ''fHwodGhpcy5saXN0ZW5lcnNDb3VudC5hZGQoYSksUTNlKHRoaXMuZXZlbnRNYW5hZ2VyLGEsdGhpcykpLHRoaXMubWFpbkVsZW1lbnQ9YX19LHtrZXk6ImdldEZvY3VzYWJsZUVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFpbkVsZW1lbnR9fSx7a2V5OiJmb2N1cyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1haW5FbGVtZW50LnZhbHVlPSIgIixQZCgpfHxDMGUodGhpcy5tYWluRWxlbWVudCl9fV0pLGx9KCk7VGwoSkssVzApO3ZhciBCTD1uZXcgV2Vha01hcCxRSz1mdW5jdGlvbihjLGEpe3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gYS5ydW5Mb2NhbEhv''@;'; put 'put ''b2tzKGMsZil9fTtmdW5jdGlvbiBRM2UobCxjLGEpe2wuYWRkRXZlbnRMaXN0ZW5lcihjLCJjb3B5IixRSygiY29weSIsYSkpLGwuYWRkRXZlbnRMaXN0ZW5lcihjLCJjdXQiLFFLKCJjdXQiLGEpKSxsLmFkZEV2ZW50TGlzdGVuZXIoYywicGFzdGUiLFFLKCJwYXN0ZSIsYSkpfXZhciBqTD1u''@;'; put 'put ''ZXcgV2Vha01hcDtmdW5jdGlvbiBlcGUobCl7aWYobCBpbnN0YW5jZW9mIEpLKXt2YXIgYz1CTC5nZXQobC5jb250YWluZXIpO2lmKChjPWlzTmFOKGMpPzA6Yyk+MCYmKGMtPTEpLGZ1bmN0aW9uIGkzdChsKXtsLmV2ZW50TWFuYWdlci5jbGVhcigpfShsKSxjPD0wKXtjPTA7dmFyIGE9akwu''@;'; put 'put ''Z2V0KGwuY29udGFpbmVyKTthJiZhLnBhcmVudE5vZGUmJihhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSksakwuZGVsZXRlKGwuY29udGFpbmVyKSksbC5tYWluRWxlbWVudD1udWxsfUJMLnNldChsLmNvbnRhaW5lcixjKX19ZnVuY3Rpb24gWmsobCl7cmV0dXJuKFprPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJv''@;'; put 'put ''dG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gdHBlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobCxzM3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBzM3QobCl7dmFyIGM9ZnVuY3Rpb24gdTN0KGwsYyl7aWYoIm9iamVjdCIhPT1aayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBm''@;'; put 'put ''PWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1aayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0''@;'; put 'put ''cmluZyIpO3JldHVybiJzeW1ib2wiPT09WmsoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gbnBlKGwsYyl7cnBlKGwsYyksYy5hZGQobCl9ZnVuY3Rpb24gY3kobCxjLGEpe3JwZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gcnBlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiB6TChsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFu''@;'; put 'put ''Y2UiKTtyZXR1cm4gYX1mdW5jdGlvbiBvMChsLGMpe3JldHVybiBmdW5jdGlvbiBjM3QobCxjKXtyZXR1cm4gYy5nZXQ/Yy5nZXQuY2FsbChsKTpjLnZhbHVlfShsLGlwZShsLGMsImdldCIpKX1mdW5jdGlvbiBmeShsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uIGYzdChsLGMsYSl7aWYoYy5zZXQp''@;'; put 'put ''Yy5zZXQuY2FsbChsLGEpO2Vsc2V7aWYoIWMud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2MudmFsdWU9YX19KGwsaXBlKGwsYywic2V0IiksYSksYX1mdW5jdGlvbiBpcGUobCxjLGEpe2lmKCFjLmhhcyhs''@;'; put 'put ''KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIithKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gYy5nZXQobCl9dmFyIFU0PW5ldyBXZWFrTWFwLGVxPW5ldyBXZWFrTWFwLFlrPW5ldyBXZWFrTWFwLHRxPW5ldyBXZWFrTWFwLG5xPW5ldyBXZWFr''@;'; put 'put ''TWFwLFdrPW5ldyBXZWFrTWFwLFVMPW5ldyBXZWFrU2V0LG9wZT1uZXcgV2Vha1NldCxkM3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpe3ZhciBhPWMuY291bnRSb3dzLGY9Yy5jb3VudENvbHVtbnMsZD1jLnJvd3NMaW1pdCxoPWMuY29sdW1uc0xpbWl0LG09Yy5jb3VudENvbHVtbkhlYWRl''@;'; put 'put ''cnM7KGZ1bmN0aW9uIGEzdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxucGUodGhpcyxvcGUpLG5wZSh0aGlzLFVMKSxjeSh0aGlzLFU0LHt3cml0YWJsZTohMCx2YWx1''@;'; put 'put ''ZTp2b2lkIDB9KSxjeSh0aGlzLGVxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjeSh0aGlzLFlrLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjeSh0aGlzLHRxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxjeSh0aGlzLG5xLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9''@;'; put 'put ''KSxjeSh0aGlzLFdrLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxmeSh0aGlzLGVxLGEpLGZ5KHRoaXMsWWssZiksZnkodGhpcyx0cSxkKSxmeSh0aGlzLG5xLGgpLGZ5KHRoaXMsV2ssbSl9cmV0dXJuIGZ1bmN0aW9uIGwzdChsLGMsYSl7YyYmdHBlKGwucHJvdG90eXBlLGMpLGEmJnRw''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzZXRTZWxlY3RlZFJhbmdlIix2YWx1ZTpmdW5jdGlvbihhKXtmeSh0aGlzLFU0LGEpfX0se2tleToiZ2V0Q2VsbHNSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwPT09''@;'; put 'put ''bzAodGhpcyxlcSkuY2FsbCh0aGlzKXx8MD09PW8wKHRoaXMsWWspLmNhbGwodGhpcykpcmV0dXJuIG51bGw7dmFyIGE9bzAodGhpcyxVNCkuZ2V0VG9wU3RhcnRDb3JuZXIoKSxmPWEucm93LGQ9YS5jb2wsaD1vMCh0aGlzLFU0KS5nZXRCb3R0b21FbmRDb3JuZXIoKSxtPWgucm93LF89aC5j''@;'; put 'put ''b2wsTz16TCh0aGlzLG9wZSxoM3QpLmNhbGwodGhpcyxmLG0pLFg9ekwodGhpcyxVTCxycSkuY2FsbCh0aGlzLGQsXyk7cmV0dXJue2lzUmFuZ2VUcmltbWVkOm0hPT1PfHxfIT09WCxzdGFydFJvdzpmLHN0YXJ0Q29sOmQsZW5kUm93Ok8sZW5kQ29sOlh9fX0se2tleToiZ2V0TW9zdEJvdHRv''@;'; put 'put ''bUNvbHVtbkhlYWRlcnNSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwPT09bzAodGhpcyxZaykuY2FsbCh0aGlzKXx8MD09PW8wKHRoaXMsV2spLmNhbGwodGhpcykpcmV0dXJuIG51bGw7dmFyIGY9bzAodGhpcyxVNCkuZ2V0VG9wU3RhcnRDb3JuZXIoKS5jb2wsaD1vMCh0aGlzLFU0KS5n''@;'; put 'put ''ZXRCb3R0b21FbmRDb3JuZXIoKS5jb2wsbT16TCh0aGlzLFVMLHJxKS5jYWxsKHRoaXMsZixoKTtyZXR1cm57aXNSYW5nZVRyaW1tZWQ6aCE9PW0sc3RhcnRSb3c6LTEsc3RhcnRDb2w6ZixlbmRSb3c6LTEsZW5kQ29sOm19fX0se2tleToiZ2V0QWxsQ29sdW1uSGVhZGVyc1JhbmdlIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe2lmKDA9PT1vMCh0aGlzLFlrKS5jYWxsKHRoaXMpfHwwPT09bzAodGhpcyxXaykuY2FsbCh0aGlzKSlyZXR1cm4gbnVsbDt2YXIgZj1vMCh0aGlzLFU0KS5nZXRUb3BTdGFydENvcm5lcigpLmNvbCxoPW8wKHRoaXMsVTQpLmdldEJvdHRvbUVuZENvcm5lcigpLmNvbCxt''@;'; put 'put ''PXpMKHRoaXMsVUwscnEpLmNhbGwodGhpcyxmLGgpO3JldHVybntpc1JhbmdlVHJpbW1lZDpoIT09bSxzdGFydFJvdzotbzAodGhpcyxXaykuY2FsbCh0aGlzKSxzdGFydENvbDpmLGVuZFJvdzotMSxlbmRDb2w6bX19fV0pLGx9KCk7ZnVuY3Rpb24gcnEobCxjKXtyZXR1cm4gTWF0aC5taW4o''@;'; put 'put ''YyxNYXRoLm1heChsK28wKHRoaXMsbnEpLmNhbGwodGhpcyktMSxsKSl9ZnVuY3Rpb24gaDN0KGwsYyl7cmV0dXJuIE1hdGgubWluKGMsTWF0aC5tYXgobCtvMCh0aGlzLHRxKS5jYWxsKHRoaXMpLTEsbCkpfWZ1bmN0aW9uIGFwZShsKXt2YXIgYz1bXSxhPVtdO3JldHVybiBSbihsLGZ1bmN0''@;'; put 'put ''aW9uKGYpe19vKE1hdGgubWluKGYuc3RhcnRSb3csZi5lbmRSb3cpLE1hdGgubWF4KGYuc3RhcnRSb3csZi5lbmRSb3cpLGZ1bmN0aW9uKE8pey0xPT09Yy5pbmRleE9mKE8pJiZjLnB1c2goTyl9KSxfbyhNYXRoLm1pbihmLnN0YXJ0Q29sLGYuZW5kQ29sKSxNYXRoLm1heChmLnN0YXJ0Q29s''@;'; put 'put ''LGYuZW5kQ29sKSxmdW5jdGlvbihPKXstMT09PWEuaW5kZXhPZihPKSYmYS5wdXNoKE8pfSl9KSx7cm93czpjLGNvbHVtbnM6YX19ZnVuY3Rpb24gbHBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylm''@;'; put 'put ''W2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gJDUobCl7cmV0dXJuKCQ1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gc3BlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJs''@;'; put 'put ''ZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxjcGUoZi5rZXkpLGYpfX1mdW5jdGlvbiBLNSgpe3JldHVybiBLNT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQo''@;'; put 'put ''KTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gdzN0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1NMyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LEs1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBpcShsLGMpe3JldHVybihpcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGEwKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTty''@;'; put 'put ''ZXR1cm4gbH1mdW5jdGlvbiBNMyhsKXtyZXR1cm4oTTM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX1mdW5jdGlvbiBxNShsLGMsYSl7''@;'; put 'put ''dXBlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiB1cGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGR5KGwsYyxhKXtyZXR1cm4oYz1j''@;'; put 'put ''cGUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gY3BlKGwpe3ZhciBjPWZ1bmN0aW9uIHgzdChsLGMpe2lmKCJvYmplY3QiIT09JDUobCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09JDUoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PSQ1KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIFAxKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFQzdChsLGMpe3JldHVybiBjLmdldD9jLmdldC5j''@;'; put 'put ''YWxsKGwpOmMudmFsdWV9KGwsZnBlKGwsYywiZ2V0IikpfWZ1bmN0aW9uIGszKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gTzN0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJl''@;'; put 'put ''YWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCxmcGUobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIGZwZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3Jl''@;'; put 'put ''dHVybiBjLmdldChsKX11by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJDb3B5TGltaXQiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigibW9kaWZ5Q29weWFibGVSYW5nZSIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDdXQiKSx1by5nZXRTaW5nbGV0b24o''@;'; put 'put ''KS5yZWdpc3RlcigiYWZ0ZXJDdXQiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlUGFzdGUiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJQYXN0ZSIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb3B5IiksdW8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImFmdGVyQ29weSIpO3ZhciBaTD0iY29weVBhc3RlIixJM3Q9WyJmcmFnbWVudFNlbGVjdGlvbiJdLGRwZT1bJzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iSGFuZHNvbnRhYmxlIi8+JywnPHN0eWxlIHR5cGU9InRleHQvY3NzIj50ZHt3aGl0ZS1zcGFjZTpub3Jt''@;'; put 'put ''YWx9YnJ7bXNvLWRhdGEtcGxhY2VtZW50OnNhbWUtY2VsbH08L3N0eWxlPiddLmpvaW4oIiIpLG9xPW5ldyBXZWFrTWFwLGFxPW5ldyBXZWFrTWFwLGxxPW5ldyBXZWFrTWFwLGh5PW5ldyBXZWFrTWFwLFlMPW5ldyBXZWFrTWFwLFdMPW5ldyBXZWFrTWFwLHB5PW5ldyBXZWFrTWFwLGhwZT1u''@;'; put 'put ''ZXcgV2Vha1NldCxSM3Q9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIEMzdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBl''@;'; put 'put ''PU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZpcShsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9u''@;'; put 'put ''IFMzdChsKXt2YXIgYz1mdW5jdGlvbiBrM3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3Rv''@;'; put 'put ''dHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1NMyhsKTtpZihjKXt2YXIgaD1NMyh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3Ry''@;'; put 'put ''dWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gTTN0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09JDUoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGEwKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3ZhciBmOyFmdW5jdGlvbiBiM3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKTtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gZnVuY3Rpb24gRTN0KGwsYyl7dXBlKGwsYyksYy5hZGQobCl9KGEw''@;'; put 'put ''KGY9Yy5jYWxsLmFwcGx5KGMsW3RoaXNdLmNvbmNhdChoKSkpLGhwZSksZHkoYTAoZiksImNvbHVtbnNMaW1pdCIsMS8wKSxkeShhMChmKSwicm93c0xpbWl0IiwxLzApLGR5KGEwKGYpLCJwYXN0ZU1vZGUiLCJvdmVyd3JpdGUiKSxkeShhMChmKSwidWlDb250YWluZXIiLGYuaG90LnJvb3RE''@;'; put 'put ''b2N1bWVudC5ib2R5KSxxNShhMChmKSxvcSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxxNShhMChmKSxhcSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxxNShhMChmKSxscSx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxxNShhMChmKSxoeSx7d3JpdGFibGU6ITAsdmFsdWU6ImNlbGxzLW9ubHki''@;'; put 'put ''fSkscTUoYTAoZiksWUwse3dyaXRhYmxlOiEwLHZhbHVlOiExfSkscTUoYTAoZiksV0wse3dyaXRhYmxlOiEwLHZhbHVlOiExfSkscTUoYTAoZikscHkse3dyaXRhYmxlOiEwLHZhbHVlOm5ldyBkM3Qoe2NvdW50Um93czpmdW5jdGlvbigpe3JldHVybiBmLmhvdC5jb3VudFJvd3MoKX0sY291''@;'; put 'put ''bnRDb2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIGYuaG90LmNvdW50Q29scygpfSxyb3dzTGltaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZi5yb3dzTGltaXR9LGNvbHVtbnNMaW1pdDpmdW5jdGlvbigpe3JldHVybiBmLmNvbHVtbnNMaW1pdH0sY291bnRDb2x1bW5IZWFkZXJzOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGYuaG90LnZpZXcuZ2V0Q29sdW1uSGVhZGVyc0NvdW50KCl9fSl9KSxkeShhMChmKSwiY29weWFibGVSYW5nZXMiLFtdKSxkeShhMChmKSwiZm9jdXNhYmxlRWxlbWVudCIsdm9pZCAwKSxmfXJldHVybiBmdW5jdGlvbiBfM3QobCxjLGEpe2MmJnNwZShsLnByb3RvdHlwZSxjKSxh''@;'; put 'put ''JiZzcGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtaTF19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGQ9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgXyxPLG09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtaTF07Im9iamVjdCI9PT0kNShtKSYmKHRoaXMucGFzdGVNb2RlPW51bGwhPT0oXz1tLnBhc3RlTW9kZSkmJnZvaWQgMCE9PV8/Xzp0aGlzLnBhc3RlTW9kZSx0aGlz''@;'; put 'put ''LnJvd3NMaW1pdD1pc05hTihtLnJvd3NMaW1pdCk/dGhpcy5yb3dzTGltaXQ6bS5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQ9aXNOYU4obS5jb2x1bW5zTGltaXQpP3RoaXMuY29sdW1uc0xpbWl0Om0uY29sdW1uc0xpbWl0LGszKHRoaXMsb3EsISFtLmNvcHlDb2x1bW5IZWFkZXJzKSxr''@;'; put 'put ''Myh0aGlzLGFxLCEhbS5jb3B5Q29sdW1uR3JvdXBIZWFkZXJzKSxrMyh0aGlzLGxxLCEhbS5jb3B5Q29sdW1uSGVhZGVyc09ubHkpLHRoaXMudWlDb250YWluZXI9bnVsbCE9PShPPW0udWlDb250YWluZXIpJiZ2b2lkIDAhPT1PP086dGhpcy51aUNvbnRhaW5lciksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKFgpe3JldHVybiBkLm9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zKFgpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlVXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlck9uQ2VsbE1vdXNlVXAo''@;'; put 'put ''KX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25FbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlclNlbGVjdGlvbkVuZCgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVLZXlEb3duIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlS2V5RG93bigpfSksdGhpcy5mb2N1c2FibGVF''@;'; put 'put ''bGVtZW50PWZ1bmN0aW9uIHIzdChsKXt2YXIgYz1uZXcgSksobCksYT1CTC5nZXQobCk7cmV0dXJuIGE9aXNOYU4oYSk/MDphLEJMLnNldChsLGErMSksY30odGhpcy51aUNvbnRhaW5lciksdGhpcy5mb2N1c2FibGVFbGVtZW50LmFkZExvY2FsSG9vaygiY29weSIsZnVuY3Rpb24oWCl7cmV0''@;'; put 'put ''dXJuIGQub25Db3B5KFgpfSkuYWRkTG9jYWxIb29rKCJjdXQiLGZ1bmN0aW9uKFgpe3JldHVybiBkLm9uQ3V0KFgpfSkuYWRkTG9jYWxIb29rKCJwYXN0ZSIsZnVuY3Rpb24oWCl7cmV0dXJuIGQub25QYXN0ZShYKX0pLEs1KE0zKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5j''@;'; put 'put ''YWxsKHRoaXMpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksSzUoTTMoYS5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMp''@;'; put 'put ''LmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZm9jdXNhYmxlRWxlbWVudCYmZXBlKHRoaXMuZm9jdXNhYmxlRWxlbWVudCksSzUoTTMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiY29w''@;'; put 'put ''eSIsdmFsdWU6ZnVuY3Rpb24oKXtrMyh0aGlzLGh5LGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiY2VsbHMtb25seSIpLGszKHRoaXMsWUwsITApLHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdGhpcy5mb2N1c2FibGVF''@;'; put 'put ''bGVtZW50LmZvY3VzKCksdGhpcy5ob3Qucm9vdERvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iil9fSx7a2V5OiJjb3B5Q2VsbHNPbmx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29weSgiY2VsbHMtb25seSIpfX0se2tleToiY29weUNvbHVtbkhlYWRlcnNPbmx5Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMuY29weSgiY29sdW1uLWhlYWRlcnMtb25seSIpfX0se2tleToiY29weVdpdGhBbGxDb2x1bW5IZWFkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29weSgid2l0aC1jb2x1bW4tZ3JvdXAtaGVhZGVycyIpfX0se2tleToiY29weVdpdGhDb2x1bW5IZWFkZXJzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuY29weSgid2l0aC1jb2x1bW4taGVhZGVycyIpfX0se2tleToiY3V0Iix2YWx1ZTpmdW5jdGlvbigpe2szKHRoaXMsV0wsITApLHRoaXMuZ2V0T3JDcmVhdGVGb2N1c2FibGVFbGVtZW50KCksdGhpcy5mb2N1c2FibGVFbGVtZW50LmZvY3VzKCksdGhpcy5ob3Qucm9v''@;'; put 'put ''dERvY3VtZW50LmV4ZWNDb21tYW5kKCJjdXQiKX19LHtrZXk6ImdldFJhbmdlZENvcHlhYmxlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIGdrKHRoaXMuZ2V0UmFuZ2VkRGF0YShkKSl9fSx7a2V5OiJnZXRSYW5nZWREYXRhIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09''@;'; put 'put ''W10sXz1hcGUoZCksWD1fLmNvbHVtbnM7cmV0dXJuIFJuKF8ucm93cyxmdW5jdGlvbihhZSl7dmFyIHBlPVtdO1JuKFgsZnVuY3Rpb24oYmUpe3BlLnB1c2goYWU8MD9oLmhvdC5nZXRDb2xIZWFkZXIoYmUsYWUpOmguaG90LmdldENvcHlhYmxlRGF0YShhZSxiZSkpfSksbS5wdXNoKHBlKX0p''@;'; put 'put ''LG19fSx7a2V5OiJwYXN0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsaD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZDtpZihkfHxo''@;'; put 'put ''KXt2YXIgbT1uZXcgSjJ0O2QmJm0uY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIixkKSxoJiZtLmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9odG1sIixoKSx0aGlzLmdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCgpLHRoaXMub25QYXN0ZShtKX19fSx7a2V5OiJzZXRD''@;'; put 'put ''b3B5YWJsZVRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZihkKXtQMSh0aGlzLHB5KS5zZXRTZWxlY3RlZFJhbmdlKGQpO3ZhciBoPW5ldyBNYXAoW1siaGVhZGVycyIsbnVsbF0sWyJjZWxscyIsbnVsbF1dKTsiY29sdW1uLWhl''@;'; put 'put ''YWRlcnMtb25seSI9PT1QMSh0aGlzLGh5KT9oLnNldCgiaGVhZGVycyIsUDEodGhpcyxweSkuZ2V0TW9zdEJvdHRvbUNvbHVtbkhlYWRlcnNSYW5nZSgpKTooIndpdGgtY29sdW1uLWhlYWRlcnMiPT09UDEodGhpcyxoeSk/aC5zZXQoImhlYWRlcnMiLFAxKHRoaXMscHkpLmdldE1vc3RCb3R0''@;'; put 'put ''b21Db2x1bW5IZWFkZXJzUmFuZ2UoKSk6IndpdGgtY29sdW1uLWdyb3VwLWhlYWRlcnMiPT09UDEodGhpcyxoeSkmJmguc2V0KCJoZWFkZXJzIixQMSh0aGlzLHB5KS5nZXRBbGxDb2x1bW5IZWFkZXJzUmFuZ2UoKSksaC5zZXQoImNlbGxzIixQMSh0aGlzLHB5KS5nZXRDZWxsc1JhbmdlKCkp''@;'; put 'put ''KSx0aGlzLmNvcHlhYmxlUmFuZ2VzPUFycmF5LmZyb20oaC52YWx1ZXMoKSkuZmlsdGVyKGZ1bmN0aW9uKHBlKXtyZXR1cm4gbnVsbCE9PXBlfSkubWFwKGZ1bmN0aW9uKHBlKXtyZXR1cm57c3RhcnRSb3c6cGUuc3RhcnRSb3csc3RhcnRDb2w6cGUuc3RhcnRDb2wsZW5kUm93OnBlLmVuZFJv''@;'; put 'put ''dyxlbmRDb2w6cGUuZW5kQ29sfX0pLHRoaXMuY29weWFibGVSYW5nZXM9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiLHRoaXMuY29weWFibGVSYW5nZXMpO3ZhciBtPWguZ2V0KCJjZWxscyIpO251bGwhPT1tJiZtLmlzUmFuZ2VUcmltbWVkJiZ0aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYWZ0ZXJDb3B5TGltaXQiLG0uZW5kUm93LW0uc3RhcnRSb3crMSxtLmVuZENvbC1tLnN0YXJ0Q29sKzEsdGhpcy5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQpfX19LHtrZXk6ImdldE9yQ3JlYXRlRm9jdXNhYmxlRWxlbWVudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZCxoPW51''@;'; put 'put ''bGw9PT0oZD10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKSl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuVEVYVEFSRUE7aD90aGlzLmZvY3VzYWJsZUVsZW1lbnQuc2V0Rm9jdXNhYmxlRWxlbWVudChoKTp0aGlzLmZvY3VzYWJsZUVsZW1lbnQudXNlU2Vjb25kYXJ5RWxlbWVudCgpfX0se2tleToi''@;'; put 'put ''aXNFZGl0b3JPcGVuZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ7cmV0dXJuIG51bGw9PT0oZD10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKSl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuaXNPcGVuZWQoKX19LHtrZXk6InBvcHVsYXRlVmFsdWVzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZihkLmxlbmd0aCl7Zm9yKHZhciBtPWQubGVuZ3RoLF89ZFswXS5sZW5ndGgsTz1bXSxYPWguZ2V0VG9wU3RhcnRDb3JuZXIoKSxhZT1Y''@;'; put 'put ''LnJvdyxwZT1YLmNvbCxiZT1oLmdldEJvdHRvbUVuZENvcm5lcigpLHhlPWJlLnJvdyxWZT1iZS5jb2wsWmU9YWUsbHQ9cGUsZHQ9YWUsZ3Q9cGU7Ty5sZW5ndGg8bXx8WmU8PXhlOyl7dmFyIGp0PXRoaXMuaG90LmdldENlbGxNZXRhKFplLHBlKSxYdD1qdC52aXN1YWxSb3c7aWYoWmU9WHQr''@;'; put 'put ''MSwhMCE9PWp0LnNraXBSb3dPblBhc3RlKXtkdD1YdCxsdD1wZTtmb3IodmFyIHluPVtdLFFuPU8ubGVuZ3RoJW07eW4ubGVuZ3RoPF98fGx0PD1WZTspe3ZhciBPcj10aGlzLmhvdC5nZXRDZWxsTWV0YShhZSxsdCksWnI9T3IudmlzdWFsQ29sO2x0PVpyKzEsITAhPT1Pci5za2lwQ29sdW1u''@;'; put 'put ''T25QYXN0ZSYmKGd0PVpyLHluLnB1c2goZFtRbl1beW4ubGVuZ3RoJV9dKSl9Ty5wdXNoKHluKX19cmV0dXJuIHRoaXMuaG90LnBvcHVsYXRlRnJvbUFycmF5KGFlLHBlLE8sdm9pZCAwLHZvaWQgMCwiQ29weVBhc3RlLnBhc3RlIix0aGlzLnBhc3RlTW9kZSksW2FlLHBlLGR0LGd0XX19fSx7''@;'; put 'put ''a2V5OiJvbkNvcHkiLHZhbHVlOmZ1bmN0aW9uKGQpe2lmKCh0aGlzLmhvdC5pc0xpc3RlbmluZygpfHxQMSh0aGlzLFlMKSkmJiF0aGlzLmlzRWRpdG9yT3BlbmVkKCkpe3RoaXMuc2V0Q29weWFibGVUZXh0KCksazModGhpcyxZTCwhMSk7dmFyIGg9dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMu''@;'; put 'put ''Y29weWFibGVSYW5nZXMpLG09ZnVuY3Rpb24gQTN0KGwsYyxhKXtpZighYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBhfSh0aGlzLGhwZSxMM3QpLmNhbGwodGhpcyx0aGlzLmNvcHlh''@;'; put 'put ''YmxlUmFuZ2VzKTtpZih0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29weSIsaCx0aGlzLmNvcHlhYmxlUmFuZ2VzLG0pKXt2YXIgTz1nayhoKTtpZihkJiZkLmNsaXBib2FyZERhdGEpe3ZhciBYPXpZKGgpO2QuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIixPKSxkLmNsaXBi''@;'; put 'put ''b2FyZERhdGEuc2V0RGF0YSgidGV4dC9odG1sIixbZHBlLFhdLmpvaW4oIiIpKX1lbHNlIHR5cGVvZiBDbGlwYm9hcmRFdmVudD4idSImJnRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJUZXh0IixPKTt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb3B5IixoLHRo''@;'; put 'put ''aXMuY29weWFibGVSYW5nZXMsbSl9azModGhpcyxoeSwiY2VsbHMtb25seSIpLGQucHJldmVudERlZmF1bHQoKX19fSx7a2V5OiJvbkN1dCIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYoKHRoaXMuaG90LmlzTGlzdGVuaW5nKCl8fFAxKHRoaXMsV0wpKSYmIXRoaXMuaXNFZGl0b3JPcGVuZWQoKSl7''@;'; put 'put ''dGhpcy5zZXRDb3B5YWJsZVRleHQoKSxrMyh0aGlzLFdMLCExKTt2YXIgaD10aGlzLmdldFJhbmdlZERhdGEodGhpcy5jb3B5YWJsZVJhbmdlcyk7aWYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUN1dCIsaCx0aGlzLmNvcHlhYmxlUmFuZ2VzKSl7dmFyIF89Z2soaCk7aWYoZCYmZC5jbGlw''@;'; put 'put ''Ym9hcmREYXRhKXt2YXIgTz16WShoKTtkLmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9wbGFpbiIsXyksZC5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsW2RwZSxPXS5qb2luKCIiKSl9ZWxzZSB0eXBlb2YgQ2xpcGJvYXJkRXZlbnQ+InUiJiZ0aGlzLmhvdC5yb290V2lu''@;'; put 'put ''ZG93LmNsaXBib2FyZERhdGEuc2V0RGF0YSgiVGV4dCIsXyk7dGhpcy5ob3QuZW1wdHlTZWxlY3RlZENlbGxzKCJDb3B5UGFzdGUuY3V0IiksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3V0IixoLHRoaXMuY29weWFibGVSYW5nZXMpfWQucHJldmVudERlZmF1bHQoKX19fSx7a2V5OiJvblBh''@;'; put 'put ''c3RlIix2YWx1ZTpmdW5jdGlvbihkKXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpJiYhdGhpcy5pc0VkaXRvck9wZW5lZCgpKXt2YXIgaDtpZihkJiZkLnByZXZlbnREZWZhdWx0JiZkLnByZXZlbnREZWZhdWx0KCksZCYmdHlwZW9mIGQuY2xpcGJvYXJkRGF0YTwidSIpe3ZhciBtPUdJKGQu''@;'; put 'put ''Y2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0L2h0bWwiKSx7QUREX1RBR1M6WyJtZXRhIl0sQUREX0FUVFI6WyJjb250ZW50Il0sRk9SQ0VfQk9EWTohMH0pO2g9bSYmLyg8dGFibGUpfCg8VEFCTEUpL2cudGVzdChtKT9CMGUobSx0aGlzLmhvdC5yb290RG9jdW1lbnQpLmRhdGE6ZC5jbGlw''@;'; put 'put ''Ym9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKX1lbHNlIHR5cGVvZiBDbGlwYm9hcmRFdmVudD4idSImJnR5cGVvZiB0aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGE8InUiJiYoaD10aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgiVGV4dCIpKTtp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIGgmJihoPWZ1bmN0aW9uIFhhdChsKXt2YXIgYz1bWyIiXV07aWYoMD09PWwubGVuZ3RoKXJldHVybiBjO2Zvcih2YXIgZCxhPTAsZj0wO2wubGVuZ3RoPjAmJmQhPT1sLmxlbmd0aDspaWYoZD1sLmxlbmd0aCxsLm1hdGNoKF9oZSkpbD1sLnJlcGxhY2UoX2hl''@;'; put 'put ''LCIiKSxjW2ZdW2ErPTFdPSIiO2Vsc2UgaWYobC5tYXRjaChiaGUpKWw9bC5yZXBsYWNlKGJoZSwiIiksYT0wLGNbZis9MV09WyIiXTtlbHNle3ZhciBoPSIiO2lmKGwuc3RhcnRzV2l0aCgnIicpKXtmb3IodmFyIG09MCxfPSEwO187KXt2YXIgTz1sLnNsaWNlKDAsMSk7JyInPT09TyYmKG0r''@;'; put 'put ''PTEpLGgrPU8sKDA9PT0obD1sLnNsaWNlKDEpKS5sZW5ndGh8fGwubWF0Y2goL15bXHRcclxuXS8pJiZtJTI9PTApJiYoXz0hMSl9aD1oLnJlcGxhY2UoL14iLywiIikucmVwbGFjZSgvIiQvLCIiKS5yZXBsYWNlKC9bIl0qL2csZnVuY3Rpb24oYWUpe3JldHVybiBuZXcgQXJyYXkoTWF0aC5m''@;'; put 'put ''bG9vcihhZS5sZW5ndGgvMikpLmZpbGwoJyInKS5qb2luKCIiKX0pfWVsc2V7dmFyIFg9bC5tYXRjaChxYXQpO2w9bC5zbGljZSgoaD1YP1hbMF06IiIpLmxlbmd0aCl9Y1tmXVthXT1ofXJldHVybiBjfShoKSksKCFofHwwIT09aC5sZW5ndGgpJiYhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJi''@;'; put 'put ''ZWZvcmVQYXN0ZSIsaCx0aGlzLmNvcHlhYmxlUmFuZ2VzKSl7dmFyIFg9ZnVuY3Rpb24gcDN0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIHkzdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gdjN0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1i''@;'; put 'put ''b2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1o''@;'; put 'put ''LmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cg''@;'; put 'put ''ZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBnM3QobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGxwZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3Im''@;'; put 'put ''JihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gbHBlKGwsYyl9fShsLGMpfHxmdW5j''@;'; put 'put ''dGlvbiBtM3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0''@;'; put 'put ''aG9kLiIpfSgpfSh0aGlzLnBvcHVsYXRlVmFsdWVzKGgpLDQpLGJlPVhbMl0seGU9WFszXTt0aGlzLmhvdC5zZWxlY3RDZWxsKFhbMF0sWFsxXSxNYXRoLm1pbih0aGlzLmhvdC5jb3VudFJvd3MoKS0xLGJlKSxNYXRoLm1pbih0aGlzLmhvdC5jb3VudENvbHMoKS0xLHhlKSksdGhpcy5ob3Qu''@;'; put 'put ''cnVuSG9va3MoImFmdGVyUGFzdGUiLGgsdGhpcy5jb3B5YWJsZVJhbmdlcyl9fX19LHtrZXk6Im9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbihkKXtkLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIE4ydChsKXtyZXR1cm57a2V5''@;'; put 'put ''OiJjb3B5IixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShfRyl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7bC5jb3B5Q2VsbHNPbmx5KCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10aGlzLmNvdW50Q29scygp''@;'; put 'put ''KXJldHVybiEwO3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4hYXx8YS5sZW5ndGg+MX0saGlkZGVuOiExfX0odGhpcykpLFAxKHRoaXMsb3EpJiZkLml0ZW1zLnB1c2goZnVuY3Rpb24gajJ0KGwpe3JldHVybntrZXk6ImNvcHlfd2l0aF9jb2x1bW5faGVhZGVycyIsbmFtZTpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxmPWE/TWF0aC5taW4oYS5nZXRXaWR0aCgpLTEsMSk6MDtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHdHLGYpfSxjYWxsYmFjazpmdW5jdGlvbigpe2wuY29weVdpdGhDb2x1bW5IZWFkZXJzKCl9LGRpc2Fi''@;'; put 'put ''bGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaGFzQ29sSGVhZGVycygpKXJldHVybiEwO3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWQoKTtyZXR1cm4hYXx8YS5sZW5ndGg+MX0saGlkZGVuOiExfX0odGhpcykpLFAxKHRoaXMsYXEpJiZkLml0ZW1zLnB1c2goZnVuY3Rpb24gQjJ0KGwpe3JldHVybntr''@;'; put 'put ''ZXk6ImNvcHlfd2l0aF9jb2x1bW5fZ3JvdXBfaGVhZGVycyIsbmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxmPWE/TWF0aC5taW4oYS5nZXRXaWR0aCgpLTEsMSk6MDtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKENHLGYpfSxjYWxsYmFj''@;'; put 'put ''azpmdW5jdGlvbigpe2wuY29weVdpdGhBbGxDb2x1bW5IZWFkZXJzKCl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaGFzQ29sSGVhZGVycygpfHwhdGhpcy5nZXRTZXR0aW5ncygpLm5lc3RlZEhlYWRlcnMpcmV0dXJuITA7dmFyIGE9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiFh''@;'; put 'put ''fHxhLmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSksUDEodGhpcyxscSkmJmQuaXRlbXMucHVzaChmdW5jdGlvbiBWMnQobCl7cmV0dXJue2tleToiY29weV9jb2x1bW5faGVhZGVyc19vbmx5IixuYW1lOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGY9''@;'; put 'put ''YT9NYXRoLm1pbihhLmdldFdpZHRoKCktMSwxKTowO3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoU0csZil9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7bC5jb3B5Q29sdW1uSGVhZGVyc09ubHkoKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5oYXNDb2xIZWFkZXJzKCkpcmV0''@;'; put 'put ''dXJuITA7dmFyIGE9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiFhfHxhLmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSksZC5pdGVtcy5wdXNoKGZ1bmN0aW9uIHoydChsKXtyZXR1cm57a2V5OiJjdXQiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNl''@;'; put 'put ''KE1HKX0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtsLmN1dCgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe2lmKDA9PT10aGlzLmNvdW50Um93cygpfHwwPT09dGhpcy5jb3VudENvbHMoKSlyZXR1cm4hMDt2YXIgYT10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWF8fGEubGVuZ3RoPjF9LGhpZGRlbjoh''@;'; put 'put ''MX19KHRoaXMpKX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZVVwIix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmhvdC5pc0xpc3RlbmluZygpfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fHRoaXMuaG90LmdldFNldHRpbmdzKCkuZnJhZ21lbnRTZWxlY3Rpb258fCh0aGlzLmdldE9yQ3JlYXRl''@;'; put 'put ''Rm9jdXNhYmxlRWxlbWVudCgpLHRoaXMuZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpKX19LHtrZXk6Im9uQWZ0ZXJTZWxlY3Rpb25FbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0VkaXRvck9wZW5lZCgpfHwodGhpcy5nZXRPckNyZWF0ZUZvY3VzYWJsZUVsZW1lbnQoKSwoIXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKCkuZnJhZ21lbnRTZWxlY3Rpb258fHRoaXMuZm9jdXNhYmxlRWxlbWVudC5nZXRGb2N1c2FibGVFbGVtZW50KCk9PT10aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudHx8IWIwZSgpKSYmKHRoaXMuc2V0Q29weWFibGVUZXh0KCksdGhpcy5mb2N1c2FibGVF''@;'; put 'put ''bGVtZW50LmZvY3VzKCkpKX19LHtrZXk6Im9uQmVmb3JlS2V5RG93biIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpJiYhdGhpcy5pc0VkaXRvck9wZW5lZCgpKXt2YXIgZD10aGlzLmhvdC5yb290RG9jdW1lbnQuYWN0aXZlRWxlbWVudCxoPXRoaXMuaG90Lmdl''@;'; put 'put ''dEFjdGl2ZUVkaXRvcigpOyFofHxkIT09dGhpcy5mb2N1c2FibGVFbGVtZW50LmdldEZvY3VzYWJsZUVsZW1lbnQoKSYmZCE9PWguc2VsZWN0fHwodGhpcy5nZXRPckNyZWF0ZUZvY3VzYWJsZUVsZW1lbnQoKSx0aGlzLmZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKSl9fX0se2tleToiZGVzdHJv''@;'; put 'put ''eSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzYWJsZUVsZW1lbnQmJihlcGUodGhpcy5mb2N1c2FibGVFbGVtZW50KSx0aGlzLmZvY3VzYWJsZUVsZW1lbnQ9bnVsbCksSzUoTTMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZ''@;'; put 'put ''IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWkx9fSx7a2V5OiJTRVRUSU5HX0tFWVMiLGdldDpmdW5jdGlvbigpe3JldHVybltaTF0uY29uY2F0KEkzdCl9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiA4MH19XSksYX0oR2EpO2Z1bmN0aW9uIEwzdChsKXtm''@;'; put 'put ''b3IodmFyIGE9YXBlKGwpLnJvd3MsZj0wLGQ9MDtkPGEubGVuZ3RoJiYhKGFbZF0+PTApO2QrKylmKz0xO3JldHVybntjb2x1bW5IZWFkZXJzQ291bnQ6Zn19ZnVuY3Rpb24gcHBlKGwsYyl7cmV0dXJuImJvcmRlcl9yb3ciLmNvbmNhdChsLCJjb2wiKS5jb25jYXQoYyl9ZnVuY3Rpb24gc3Eo''@;'; put 'put ''bCl7dmFyIGMsYTtyZXR1cm4oaW8obC5zdGFydCl8fGlvKGwubGVmdCkpJiYobC5zdGFydD1udWxsIT09KGM9bC5zdGFydCkmJnZvaWQgMCE9PWM/YzpsLmxlZnQpLChpbyhsLmVuZCl8fGlvKGwucmlnaHQpKSYmKGwuZW5kPW51bGwhPT0oYT1sLmVuZCkmJnZvaWQgMCE9PWE/YTpsLnJpZ2h0''@;'; put 'put ''KSxkZWxldGUgbC5sZWZ0LGRlbGV0ZSBsLnJpZ2h0LGx9ZnVuY3Rpb24gJGsobCl7cmV0dXJuIGlvKGwuc3RhcnQpJiYobC5sZWZ0PWwuc3RhcnQpLGlvKGwuZW5kKSYmKGwucmlnaHQ9bC5lbmQpLGx9ZnVuY3Rpb24gdXEobCxjKXtyZXR1cm57aWQ6cHBlKGwsYyksYm9yZGVyOnt3aWR0aDox''@;'; put 'put ''LGNvbG9yOiIjMDAwIixjb3JuZXJWaXNpYmxlOiExfSxyb3c6bCxjb2w6Yyx0b3A6e2hpZGU6ITB9LGJvdHRvbTp7aGlkZTohMH0sc3RhcnQ6e2hpZGU6ITB9LGVuZDp7aGlkZTohMH19fWZ1bmN0aW9uIHgzKGwsYyl7dmFyIGE9ITE7cmV0dXJuIFJuKGwuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1''@;'; put 'put ''bmN0aW9uKGYpe2YuZm9yQWxsKGZ1bmN0aW9uKGQsaCl7aWYoIShkPDB8fGg8MCkpe3ZhciBtPWwuZ2V0Q2VsbE1ldGEoZCxoKS5ib3JkZXJzO2lmKG0pe2lmKCFjKXJldHVybiBhPSEwLCExO2lmKCFTcyhtW2NdLCJoaWRlIil8fCExPT09bVtjXS5oaWRlKXJldHVybiBhPSEwLCExfX19KX0p''@;'; put 'put ''LGF9ZnVuY3Rpb24gR0wobCl7cmV0dXJuJzxzcGFuIGNsYXNzPSJzZWxlY3RlZCI+Jy5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZSgxMDAwMyksIjwvc3Bhbj4iKS5jb25jYXQobCl9dmFyIFYzdD1uZXcgTWFwKFtbImxlZnQiLCJzdGFydCJdLFsicmlnaHQiLCJlbmQiXV0pO2Z1bmN0aW9u''@;'; put 'put ''IGozdChsKXtyZXR1cm57a2V5OiJib3JkZXJzOnRvcCIsbmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh6Ryk7cmV0dXJuIHgzKHRoaXMsInRvcCIpJiYoYT1HTChhKSksYX0sY2FsbGJhY2s6ZnVuY3Rpb24oYSxmKXt2YXIgZD14Myh0aGlzLCJ0b3AiKTts''@;'; put 'put ''LnByZXBhcmVCb3JkZXIoZiwidG9wIixkKX19fWZ1bmN0aW9uIHozdChsKXt2YXIgYz1sLmhvdC5pc1J0bCgpPyJzdGFydCI6ImVuZCI7cmV0dXJue2tleToiYm9yZGVyczpyaWdodCIsbmFtZTpmdW5jdGlvbigpe3ZhciBmPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShVRyk7cmV0dXJuIHgz''@;'; put 'put ''KHRoaXMsYykmJihmPUdMKGYpKSxmfSxjYWxsYmFjazpmdW5jdGlvbihmLGQpe3ZhciBoPXgzKHRoaXMsYyk7bC5wcmVwYXJlQm9yZGVyKGQsYyxoKX19fWZ1bmN0aW9uIFUzdChsKXtyZXR1cm57a2V5OiJib3JkZXJzOmJvdHRvbSIsbmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0VHJh''@;'; put 'put ''bnNsYXRlZFBocmFzZShaRyk7cmV0dXJuIHgzKHRoaXMsImJvdHRvbSIpJiYoYT1HTChhKSksYX0sY2FsbGJhY2s6ZnVuY3Rpb24oYSxmKXt2YXIgZD14Myh0aGlzLCJib3R0b20iKTtsLnByZXBhcmVCb3JkZXIoZiwiYm90dG9tIixkKX19fWZ1bmN0aW9uIFozdChsKXt2YXIgYz1sLmhvdC5p''@;'; put 'put ''c1J0bCgpPyJlbmQiOiJzdGFydCI7cmV0dXJue2tleToiYm9yZGVyczpsZWZ0IixuYW1lOmZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFlHKTtyZXR1cm4geDModGhpcyxjKSYmKGY9R0woZikpLGZ9LGNhbGxiYWNrOmZ1bmN0aW9uKGYsZCl7dmFyIGg9eDModGhp''@;'; put 'put ''cyxjKTtsLnByZXBhcmVCb3JkZXIoZCxjLGgpfX19ZnVuY3Rpb24gWTN0KGwpe3JldHVybntrZXk6ImJvcmRlcnM6bm9fYm9yZGVycyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoV0cpfSxjYWxsYmFjazpmdW5jdGlvbihhLGYpe2wucHJlcGFyZUJv''@;'; put 'put ''cmRlcihmLCJub0JvcmRlcnMiKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4heDModGhpcyl9fX1mdW5jdGlvbiBteShsKXtyZXR1cm4obXk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5''@;'; put 'put ''cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBtcGUobCxjKXtyZXR1cm4gZnVuY3Rpb24gSzN0KGwp''@;'; put 'put ''e2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiAkM3QobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSEx''@;'; put 'put ''O3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5''@;'; put 'put ''e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIEczdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gZ3BlKGwsYyk7''@;'; put 'put ''dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09''@;'; put 'put ''PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBncGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIFczdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFu''@;'; put 'put ''Y2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gZ3BlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcg''@;'; put 'put ''QXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gdnBlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxl''@;'; put 'put ''PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxicGUoZi5rZXkpLGYpfX1mdW5jdGlvbiBYNSgpe3JldHVybiBYNT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gSjN0KGwsYyl7Zm9yKDsh''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1BMyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aDwzP2M6Zik6aC52YWx1ZX19LFg1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBjcShsLGMpe3JldHVybihjcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMp''@;'; put 'put ''fWZ1bmN0aW9uIHlwZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gQTMobCl7cmV0dXJuKEEzPU9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gYnBlKGwpe3ZhciBjPWZ1bmN0aW9uIGlwdChsLGMpe2lmKCJvYmplY3QiIT09bXkobCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09bXkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PW15KGMpP2M6U3RyaW5nKGMpfXZhciAkTD0iY3VzdG9tQm9yZGVycyIsYXB0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBRM3QobCxjKXtpZigi''@;'; put 'put ''ZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6''@;'; put 'put ''bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmY3EobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBlcHQobCl7dmFyIGM9ZnVuY3Rpb24gbnB0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUi''@;'; put 'put ''fHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVu''@;'; put 'put ''Y3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9QTMobCk7aWYoYyl7dmFyIGg9QTModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIHRwdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PW15KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVu''@;'; put 'put ''ZGVmaW5lZCIpO3JldHVybiB5cGUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7IWZ1bmN0aW9uIHEzdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO2Zv''@;'; put 'put ''cih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3JldHVybiBmdW5jdGlvbiBycHQobCxjLGEpeyhjPWJwZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25m''@;'; put 'put ''aWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWF9KHlwZShmPWMuY2FsbC5hcHBseShjLFt0aGlzXS5jb25jYXQoaCkpKSwic2F2ZWRCb3JkZXJzIixbXSksZn1yZXR1cm4gZnVuY3Rpb24gWDN0KGwsYyxhKXtjJiZ2cGUobC5wcm90b3R5cGUsYyksYSYmdnBlKGwsYSksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbJExdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7''@;'; put 'put ''dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uQWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zKGgpfSksdGhpcy5hZGRIb29rKCJpbml0IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0''@;'; put 'put ''ZXJJbml0KCl9KSxYNShBMyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGlkZUJvcmRlcnMoKSxYNShBMyhhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLmNoYW5nZUJvcmRlclNldHRpbmdzKCksWDUoQTMoYS5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhp''@;'; put 'put ''cyl9fSx7a2V5OiJzZXRCb3JkZXJzIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXMsXz1bInRvcCIsImJvdHRvbSIsInN0YXJ0IiwiZW5kIl0sTz1udWxsO2gmJih0aGlzLmNoZWNrU2V0dGluZ3NDb2hlc2lvbihbaF0pLF89T2JqZWN0LmtleXMoaCksTz1zcShoKSk7dmFyIGFlPW9r''@;'; put 'put ''KE05KGQpKTtSbihkLGZ1bmN0aW9uKHBlKXtmb3IodmFyIHhlPW1wZShhZShwZSksNCksWmU9eGVbMV0sbHQ9eGVbMl0sZHQ9eGVbM10sZ3Q9ZnVuY3Rpb24oWHQpe2Zvcih2YXIgeW49ZnVuY3Rpb24oVnIpe1JuKF8sZnVuY3Rpb24oWnIpe20ucHJlcGFyZUJvcmRlckZyb21DdXN0b21BZGRl''@;'; put 'put ''ZChYdCxWcixPLGZ1bmN0aW9uIEIzdChsKXt2YXIgYztyZXR1cm4gbnVsbCE9PShjPVYzdC5nZXQobCkpJiZ2b2lkIDAhPT1jP2M6bH0oWnIpKX0pfSxRbj1aZTtRbjw9ZHQ7UW4rPTEpeW4oUW4pfSxqdD14ZVswXTtqdDw9bHQ7anQrPTEpZ3QoanQpfSksdGhpcy5ob3Qudmlldy5yZW5kZXIo''@;'; put 'put ''KX19LHtrZXk6ImdldEJvcmRlcnMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXM7aWYoIUFycmF5LmlzQXJyYXkoZCkpcmV0dXJuIHRoaXMuc2F2ZWRCb3JkZXJzO3ZhciBfPW9rKE05KGQpKSxPPVtdO3JldHVybiBSbihkLGZ1bmN0aW9uKFgpe2Zvcih2YXIgcGU9bXBlKF8oWCksNCks''@;'; put 'put ''eGU9cGVbMV0sVmU9cGVbMl0sWmU9cGVbM10sbHQ9ZnVuY3Rpb24oanQpe2Zvcih2YXIgcm49ZnVuY3Rpb24oUW4pe1JuKGguc2F2ZWRCb3JkZXJzLGZ1bmN0aW9uKE9yKXtPci5yb3c9PT1qdCYmT3IuY29sPT09UW4mJk8ucHVzaCgkayhPcikpfSl9LFh0PXhlO1h0PD1aZTtYdCs9MSlybihY''@;'; put 'put ''dCl9LGR0PXBlWzBdO2R0PD1WZTtkdCs9MSlsdChkdCl9KSxPfX0se2tleToiY2xlYXJCb3JkZXJzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO2Q/dGhpcy5zZXRCb3JkZXJzKGQpOihSbih0aGlzLnNhdmVkQm9yZGVycyxmdW5jdGlvbihtKXtoLmNsZWFyQm9yZGVyc0Zyb21TZWxl''@;'; put 'put ''Y3Rpb25TZXR0aW5ncyhtLmlkKSxoLmNsZWFyTnVsbENlbGxSYW5nZSgpLGguaG90LnJlbW92ZUNlbGxNZXRhKG0ucm93LG0uY29sLCJib3JkZXJzIil9KSx0aGlzLnNhdmVkQm9yZGVycy5sZW5ndGg9MCl9fSx7a2V5OiJpbnNlcnRCb3JkZXJJbnRvU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGQsaCl7dGhpcy5jaGVja1NhdmVkQm9yZGVycyhkKXx8dGhpcy5zYXZlZEJvcmRlcnMucHVzaChkKTt2YXIgXz10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGQucm93LGQuY29sKSk7dGhpcy5jaGVja0N1c3RvbVNlbGVjdGlvbnMoZCxfLGgp''@;'; put 'put ''fHx0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmFkZEN1c3RvbVNlbGVjdGlvbih7Ym9yZGVyOmQsdmlzdWFsQ2VsbFJhbmdlOl99KX19LHtrZXk6InByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBPPXRoaXMuaG90LmNvdW50Um93''@;'; put 'put ''cygpLFg9dGhpcy5ob3QuY291bnRDb2xzKCk7aWYoIShkPj1PfHxoPj1YKSl7dmFyIGFlPXVxKGQsaCk7bSYmKGFlPWZ1bmN0aW9uIEYzdChsLGMpe3JldHVybiBTcyhjLCJib3JkZXIiKSYmYy5ib3JkZXImJihsLmJvcmRlcj1jLmJvcmRlciksU3MoYywidG9wIikmJmlvKGMudG9wKSYmKGMu''@;'; put 'put ''dG9wPyhwYShjLnRvcCl8fChjLnRvcD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxsLnRvcD1jLnRvcCk6KGMudG9wPXtoaWRlOiEwfSxsLnRvcD1jLnRvcCkpLFNzKGMsImJvdHRvbSIpJiZpbyhjLmJvdHRvbSkmJihjLmJvdHRvbT8ocGEoYy5ib3R0b20pfHwoYy5ib3R0b209e3dpZHRoOjEs''@;'; put 'put ''Y29sb3I6IiMwMDAifSksbC5ib3R0b209Yy5ib3R0b20pOihjLmJvdHRvbT17aGlkZTohMH0sbC5ib3R0b209Yy5ib3R0b20pKSxTcyhjLCJzdGFydCIpJiZpbyhjLnN0YXJ0KSYmKGMuc3RhcnQ/KHBhKGMuc3RhcnQpfHwoYy5zdGFydD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxsLnN0YXJ0''@;'; put 'put ''PWMuc3RhcnQpOihjLnN0YXJ0PXtoaWRlOiEwfSxsLnN0YXJ0PWMuc3RhcnQpKSxTcyhjLCJlbmQiKSYmaW8oYy5lbmQpJiYoYy5lbmQ/KHBhKGMuZW5kKXx8KGMuZW5kPXt3aWR0aDoxLGNvbG9yOiIjMDAwIn0pLGwuZW5kPWMuZW5kKTooYy5lbmQ9e2hpZGU6ITB9LGwuZW5kPWMuZW5kKSks''@;'; put 'put ''bH0oYWUsbSksUm4odGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLGZ1bmN0aW9uKHBlKXtpZihhZS5pZD09PXBlLnNldHRpbmdzLmlkKXJldHVybiBPYmplY3QuYXNzaWduKHBlLnNldHRpbmdzLG0pLGFlLmlkPXBlLnNldHRpbmdzLmlkLGFlLnRvcD1wZS5z''@;'; put 'put ''ZXR0aW5ncy50b3AsYWUuYm90dG9tPXBlLnNldHRpbmdzLmJvdHRvbSxhZS5zdGFydD1wZS5zZXR0aW5ncy5zdGFydCxhZS5lbmQ9cGUuc2V0dGluZ3MuZW5kLCExfSkpLHRoaXMuaG90LnNldENlbGxNZXRhKGQsaCwiYm9yZGVycyIsJGsoYWUpKSx0aGlzLmluc2VydEJvcmRlckludG9TZXR0''@;'; put 'put ''aW5ncyhhZSxfKX19fSx7a2V5OiJwcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcyxfPU1hdGgubWluKGQudG8ucm93LHRoaXMuaG90LmNvdW50Um93cygpLTEpLE89TWF0aC5taW4oZC50by5jb2wsdGhpcy5ob3QuY291bnRD''@;'; put 'put ''b2xzKCktMSk7X28oZC5mcm9tLnJvdyxfLGZ1bmN0aW9uKFgpe19vKGQuZnJvbS5jb2wsTyxmdW5jdGlvbihhZSl7dmFyIHBlPXVxKFgsYWUpLGJlPTA7WD09PWQuZnJvbS5yb3cmJlNzKGgsInRvcCIpJiYoYmUrPTEscGUudG9wPWgudG9wKSxYPT09ZC50by5yb3cmJlNzKGgsImJvdHRvbSIp''@;'; put 'put ''JiYoYmUrPTEscGUuYm90dG9tPWguYm90dG9tKSxhZT09PWQuZnJvbS5jb2wmJlNzKGgsInN0YXJ0IikmJihiZSs9MSxwZS5zdGFydD1oLnN0YXJ0KSxhZT09PWQudG8uY29sJiZTcyhoLCJlbmQiKSYmKGJlKz0xLHBlLmVuZD1oLmVuZCksYmU+MCYmKG0uaG90LnNldENlbGxNZXRhKFgsYWUs''@;'; put 'put ''ImJvcmRlcnMiLCRrKHBlKSksbS5pbnNlcnRCb3JkZXJJbnRvU2V0dGluZ3MocGUpKX0pfSl9fSx7a2V5OiJyZW1vdmVBbGxCb3JkZXJzIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXBwZShkLGgpO3RoaXMuc3BsaWNlQm9yZGVyKG0pLHRoaXMuY2xlYXJCb3JkZXJzRnJvbVNlbGVjdGlv''@;'; put 'put ''blNldHRpbmdzKG0pLHRoaXMuY2xlYXJOdWxsQ2VsbFJhbmdlKCksdGhpcy5ob3QucmVtb3ZlQ2VsbE1ldGEoZCxoLCJib3JkZXJzIil9fSx7a2V5OiJzZXRCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBPPXRoaXMuaG90LmdldENlbGxNZXRhKGQsaCkuYm9yZGVycztPPU8m''@;'; put 'put ''JnZvaWQgMCE9PU8uYm9yZGVyP3NxKE8pOnVxKGQsaCksXz8oT1ttXT17aGlkZTohMH0sND09PXRoaXMuY291bnRIaWRlKE8pP3RoaXMucmVtb3ZlQWxsQm9yZGVycyhkLGgpOih0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudShPLG0sXyl8fHRoaXMuaW5zZXJ0Qm9y''@;'; put 'put ''ZGVySW50b1NldHRpbmdzKE8pLHRoaXMuaG90LnNldENlbGxNZXRhKGQsaCwiYm9yZGVycyIsJGsoTykpKSk6KE9bbV09e3dpZHRoOjEsY29sb3I6IiMwMDAifSx0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudShPLG0sXyl8fHRoaXMuaW5zZXJ0Qm9yZGVySW50b1Nl''@;'; put 'put ''dHRpbmdzKE8pLHRoaXMuaG90LnNldENlbGxNZXRhKGQsaCwiYm9yZGVycyIsJGsoTykpKX19LHtrZXk6InByZXBhcmVCb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz10aGlzO1JuKGQsZnVuY3Rpb24oTyl7dmFyIFg9Ty5zdGFydCxhZT1PLmVuZDtpZihYLnJvdz09PWFlLnJv''@;'; put 'put ''dyYmWC5jb2w9PT1hZS5jb2wpIm5vQm9yZGVycyI9PT1oP18ucmVtb3ZlQWxsQm9yZGVycyhYLnJvdyxYLmNvbCk6Xy5zZXRCb3JkZXIoWC5yb3csWC5jb2wsaCxtKTtlbHNlIHN3aXRjaChoKXtjYXNlIm5vQm9yZGVycyI6X28oWC5jb2wsYWUuY29sLGZ1bmN0aW9uKHBlKXtfbyhYLnJvdyxh''@;'; put 'put ''ZS5yb3csZnVuY3Rpb24oYmUpe18ucmVtb3ZlQWxsQm9yZGVycyhiZSxwZSl9KX0pO2JyZWFrO2Nhc2UidG9wIjpfbyhYLmNvbCxhZS5jb2wsZnVuY3Rpb24ocGUpe18uc2V0Qm9yZGVyKFgucm93LHBlLGgsbSl9KTticmVhaztjYXNlImJvdHRvbSI6X28oWC5jb2wsYWUuY29sLGZ1bmN0aW9u''@;'; put 'put ''KHBlKXtfLnNldEJvcmRlcihhZS5yb3cscGUsaCxtKX0pO2JyZWFrO2Nhc2Uic3RhcnQiOl9vKFgucm93LGFlLnJvdyxmdW5jdGlvbihwZSl7Xy5zZXRCb3JkZXIocGUsWC5jb2wsaCxtKX0pO2JyZWFrO2Nhc2UiZW5kIjpfbyhYLnJvdyxhZS5yb3csZnVuY3Rpb24ocGUpe18uc2V0Qm9yZGVy''@;'; put 'put ''KHBlLGFlLmNvbCxoLG0pfSl9fSl9fSx7a2V5OiJjcmVhdGVDdXN0b21Cb3JkZXJzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO1JuKGQsZnVuY3Rpb24obSl7dmFyIF89c3EobSk7bS5yYW5nZT9oLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWRSYW5nZShtLnJhbmdlLF8pOmgu''@;'; put 'put ''cHJlcGFyZUJvcmRlckZyb21DdXN0b21BZGRlZChtLnJvdyxtLmNvbCxfKX0pfX0se2tleToiY291bnRIaWRlIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gUHMoW2QudG9wLGQuYm90dG9tLGQuc3RhcnQsZC5lbmRdLGZ1bmN0aW9uKGFlLHBlKXt2YXIgYmU9YWU7cmV0dXJuIHBlJiZwZS5o''@;'; put 'put ''aWRlJiYoYmUrPTEpLGJlfSwwKX19LHtrZXk6ImNsZWFyQm9yZGVyc0Zyb21TZWxlY3Rpb25TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9aGEodGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLGZ1bmN0aW9uKG0pe3JldHVybiBtLnNldHRpbmdz''@;'; put 'put ''LmlkfSkuaW5kZXhPZihkKTtoPi0xJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnNbaF0uY2xlYXIoKX19LHtrZXk6ImNsZWFyTnVsbENlbGxSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO1JuKHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGln''@;'; put 'put ''aHQuY3VzdG9tU2VsZWN0aW9ucyxmdW5jdGlvbihoLG0pe2lmKG51bGw9PT1oLmNlbGxSYW5nZSlyZXR1cm4gZC5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zW21dLmRlc3Ryb3koKSxkLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMuc3Bs''@;'; put 'put ''aWNlKG0sMSksITF9KX19LHtrZXk6ImhpZGVCb3JkZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7Um4odGhpcy5zYXZlZEJvcmRlcnMsZnVuY3Rpb24oaCl7ZC5jbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MoaC5pZCksZC5jbGVhck51bGxDZWxsUmFuZ2UoKX0pfX0s''@;'; put 'put ''e2tleToic3BsaWNlQm9yZGVyIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD1oYSh0aGlzLnNhdmVkQm9yZGVycyxmdW5jdGlvbihtKXtyZXR1cm4gbS5pZH0pLmluZGV4T2YoZCk7aD4tMSYmdGhpcy5zYXZlZEJvcmRlcnMuc3BsaWNlKGgsMSl9fSx7a2V5OiJjaGVja1NhdmVkQm9yZGVycyIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPSExO3JldHVybiA0PT09dGhpcy5jb3VudEhpZGUoZCk/KHRoaXMuc3BsaWNlQm9yZGVyKGQuaWQpLG09ITApOlJuKHRoaXMuc2F2ZWRCb3JkZXJzLGZ1bmN0aW9uKE8sWCl7aWYoZC5pZD09PU8uaWQpcmV0dXJuIGguc2F2ZWRCb3JkZXJz''@;'; put 'put ''W1hdPWQsbT0hMCwhMX0pLG19fSx7a2V5OiJjaGVja0N1c3RvbVNlbGVjdGlvbnNGcm9tQ29udGV4dE1lbnUiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz0hMTtyZXR1cm4gUm4odGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLGZ1bmN0aW9uKE8pe2lm''@;'; put 'put ''KGQuaWQ9PT1PLnNldHRpbmdzLmlkKXJldHVybiBtYShPLmluc3RhbmNlQm9yZGVycyxmdW5jdGlvbihYKXtYLnRvZ2dsZUhpZGRlbkNsYXNzKGgsbSl9KSxfPSEwLCExfSksX319LHtrZXk6ImNoZWNrQ3VzdG9tU2VsZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPXRoaXMu''@;'; put 'put ''Y291bnRIaWRlKGQpLE89ITE7cmV0dXJuIDQ9PT1fPyh0aGlzLnJlbW92ZUFsbEJvcmRlcnMoZC5yb3csZC5jb2wpLE89ITApOlJuKHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9ucyxmdW5jdGlvbihYKXtpZihkLmlkPT09WC5zZXR0aW5ncy5pZClyZXR1cm4g''@;'; put 'put ''WC52aXN1YWxDZWxsUmFuZ2U9aCxYLmNvbW1pdCgpLG0mJm1hKFguaW5zdGFuY2VCb3JkZXJzLGZ1bmN0aW9uKGFlKXthZS5jaGFuZ2VCb3JkZXJTdHlsZShtLGQpfSksTz0hMCwhMX0pLE99fSx7a2V5OiJjaGFuZ2VCb3JkZXJTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpWyRMXTtpZihBcnJheS5pc0FycmF5KGQpKXt2YXIgaD14YyhkKTt0aGlzLmNoZWNrU2V0dGluZ3NDb2hlc2lvbihoKSxoLmxlbmd0aHx8KHRoaXMuc2F2ZWRCb3JkZXJzPWgpLHRoaXMuY3JlYXRlQ3VzdG9tQm9yZGVycyhoKX1lbHNlIHZvaWQgMCE9PWQmJnRo''@;'; put 'put ''aXMuY3JlYXRlQ3VzdG9tQm9yZGVycyh0aGlzLnNhdmVkQm9yZGVycyl9fSx7a2V5OiJjaGVja1NldHRpbmdzQ29oZXNpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWZ1bmN0aW9uIEgzdChsKXtyZXR1cm4gbC5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiBpbyhjLmxlZnQpfHxpbyhjLnJp''@;'; put 'put ''Z2h0KX0pfShkKSxtPWZ1bmN0aW9uIE4zdChsKXtyZXR1cm4gbC5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiBpbyhjLnN0YXJ0KXx8aW8oYy5lbmQpfSl9KGQpO2lmKGgmJm0pdGhyb3cgbmV3IEVycm9yKCdUaGUgImxlZnQiLyJyaWdodCIgYW5kICJzdGFydCIvImVuZCIgb3B0aW9ucyBzaG91''@;'; put 'put ''bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2Ugb25seSB0aGUgb3B0aW9uICJzdGFydCIvImVuZCIuJyk7aWYodGhpcy5ob3QuaXNSdGwoKSYmaCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAibGVmdCIvInJpZ2h0IiBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBSVEwu''@;'; put 'put ''IFBsZWFzZSB1c2Ugb3B0aW9uICJzdGFydCIvImVuZCIuJyl9fSx7a2V5OiJvbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVskTF0mJmQuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0se2tleToiYm9y''@;'; put 'put ''ZGVycyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoakcpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKX0sc3VibWVudTp7aXRlbXM6W2ozdCh0aGlzKSx6M3QodGhpcyksVTN0KHRo''@;'; put 'put ''aXMpLFozdCh0aGlzKSxZM3QodGhpcyldfX0pfX0se2tleToib25BZnRlckluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jaGFuZ2VCb3JkZXJTZXR0aW5ncygpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtYNShBMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNh''@;'; put 'put ''bGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiAkTH19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDkwfX1dKSxhfShHYSk7ZnVuY3Rpb24gZ3kobCl7cmV0dXJuKGd5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1i''@;'; put 'put ''b2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gX3BlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkobCx1cHQoZi5rZXkpLGYpfX1mdW5jdGlvbiB1cHQobCl7dmFyIGM9ZnVuY3Rpb24gY3B0KGwsYyl7aWYoIm9iamVjdCIhPT1neShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8''@;'; put 'put ''fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1neShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVy''@;'; put 'put ''biJzeW1ib2wiPT09Z3koYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gSjUoKXtyZXR1cm4gSjU9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIGZwdChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9VDMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFs''@;'; put 'put ''dWV9fSxKNS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZnEobCxjKXtyZXR1cm4oZnE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiB3cGUo''@;'; put 'put ''bCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIFQzKGwpe3JldHVybihUMz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0''@;'; put 'put ''LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBDcGU9ImRyYWdUb1Njcm9sbCIsdnB0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBkcHQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg''@;'; put 'put ''YyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25m''@;'; put 'put ''aWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZnEobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBocHQobCl7dmFyIGM9ZnVuY3Rpb24gbXB0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1''@;'; put 'put ''Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0''@;'; put 'put ''Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9VDMobCk7aWYoYyl7dmFyIGg9VDModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHBw''@;'; put 'put ''dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PWd5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB3''@;'; put 'put ''cGUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBscHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhp''@;'; put 'put ''cyxmKSkuZXZlbnRNYW5hZ2VyPW5ldyBmcyh3cGUoZCkpLGQuYm91bmRhcmllcz1udWxsLGQuY2FsbGJhY2s9bnVsbCxkLmxpc3RlbmluZz0hMSxkfXJldHVybiBmdW5jdGlvbiBzcHQobCxjLGEpe2MmJl9wZShsLnByb3RvdHlwZSxjKSxhJiZfcGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtDcGVdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5lbmFi''@;'; put 'put ''bGVkfHwodGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oaCl7cmV0dXJuIGQuc2V0dXBMaXN0ZW5pbmcoaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixmdW5jdGlvbihoKXtyZXR1cm4gZC5zZXR1cExpc3RlbmluZyhoKX0p''@;'; put 'put ''LHRoaXMucmVnaXN0ZXJFdmVudHMoKSxKNShUMyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxKNShUMyhhLnBy''@;'; put 'put ''b3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51bnJlZ2lzdGVyRXZlbnRzKCksSjUoVDMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToi''@;'; put 'put ''c2V0Qm91bmRhcmllcyIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5ib3VuZGFyaWVzPWR9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5jYWxsYmFjaz1kfX0se2tleToiY2hlY2siLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09MCxfPTA7aDx0aGlzLmJvdW5k''@;'; put 'put ''YXJpZXMudG9wP189aC10aGlzLmJvdW5kYXJpZXMudG9wOmg+dGhpcy5ib3VuZGFyaWVzLmJvdHRvbSYmKF89aC10aGlzLmJvdW5kYXJpZXMuYm90dG9tKSxkPHRoaXMuYm91bmRhcmllcy5sZWZ0P209ZC10aGlzLmJvdW5kYXJpZXMubGVmdDpkPnRoaXMuYm91bmRhcmllcy5yaWdodCYmKG09''@;'; put 'put ''ZC10aGlzLmJvdW5kYXJpZXMucmlnaHQpLHRoaXMuY2FsbGJhY2sobSxfKX19LHtrZXk6Imxpc3RlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmluZz0hMH19LHtrZXk6InVubGlzdGVuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubGlzdGVuaW5nPSExfX0se2tleToiaXNMaXN0ZW5p''@;'; put 'put ''bmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGlzdGVuaW5nfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkPXRoaXMsbT10aGlzLmhvdC5yb290V2luZG93O207KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIobS5kb2N1''@;'; put 'put ''bWVudCwiY29udGV4dG1lbnUiLGZ1bmN0aW9uKCl7cmV0dXJuIGQudW5saXN0ZW4oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIobS5kb2N1bWVudCwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gZC51bmxpc3RlbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcihtLmRvY3VtZW50LCJtb3VzZW1vdmUiLGZ1bmN0aW9uKF8pe3JldHVybiBkLm9uTW91c2VNb3ZlKF8pfSksbT1qUyhtKX19LHtrZXk6InVucmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ldmVudE1hbmFnZXIuY2xlYXIoKX19LHtrZXk6InNldHVwTGlz''@;'; put 'put ''dGVuaW5nIix2YWx1ZTpmdW5jdGlvbihkKXtpZighSTQoZCkpe3ZhciBoPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuaG9sZGVyO2ghPT10aGlzLmhvdC5yb290V2luZG93JiYodGhpcy5zZXRCb3VuZGFyaWVzKGguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHRoaXMuc2V0Q2FsbGJhY2so''@;'; put 'put ''ZnVuY3Rpb24obSxfKXttPDA/aC5zY3JvbGxMZWZ0LT01MDptPjAmJihoLnNjcm9sbExlZnQrPTUwKSxfPDA/aC5zY3JvbGxUb3AtPTIwOl8+MCYmKGguc2Nyb2xsVG9wKz0yMCl9KSx0aGlzLmxpc3RlbigpKX19fSx7a2V5OiJvbk1vdXNlTW92ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5p''@;'; put 'put ''c0xpc3RlbmluZygpJiZ0aGlzLmNoZWNrKGQuY2xpZW50WCxkLmNsaWVudFkpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtKNShUMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBDcGV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxMDB9fV0pLGF9KEdhKTtmdW5jdGlvbiB2eShsKXtyZXR1cm4odnk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24o''@;'; put 'put ''Yyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBTcGUobCxjKXtmb3IodmFyIGE9''@;'; put 'put ''MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLF9wdChmLmtleSksZil9fWZ1bmN0aW9uIF9wdChsKXt2YXIg''@;'; put 'put ''Yz1mdW5jdGlvbiB3cHQobCxjKXtpZigib2JqZWN0IiE9PXZ5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXZ5KGYpKXJldHVybiBmO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT12eShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBRNSgpe3Jl''@;'; put 'put ''dHVybiBRNT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gQ3B0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1PMyhsKSk7''@;'; put 'put ''KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LFE1LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBkcShsLGMp''@;'; put 'put ''e3JldHVybihkcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIE1wZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhp''@;'; put 'put ''cyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gTzMobCl7cmV0dXJuKE8zPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9f''@;'; put 'put ''cHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIpLHVvLmdldFNpbmds''@;'; put 'put ''ZXRvbigpLnJlZ2lzdGVyKCJhZnRlckRyb3Bkb3duTWVudVNob3ciKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51RXhlY3V0ZSIpO3ZhciBocT0iZHJvcGRvd25N''@;'; put 'put ''ZW51IixwcT0iY2hhbmdlVHlwZSIsa3BlPWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBTcHQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTts''@;'; put 'put ''LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZHEobCxjKX0oYSxsKTt2YXIg''@;'; put 'put ''Yz1mdW5jdGlvbiBNcHQobCl7dmFyIGM9ZnVuY3Rpb24gRXB0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9v''@;'; put 'put ''bGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9TzMobCk7aWYoYyl7dmFyIGg9TzModGhpcykuY29uc3RydWN0b3I7ZD1SZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGtwdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PXZ5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBNcGUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiB5cHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkuZXZlbnRNYW5hZ2VyPW5ldyBmcyhNcGUoZCkpLGQuY29tbWFuZEV4ZWN1dG9yPW5ldyBEM2UoZC5ob3QpLGQuaXRlbXNGYWN0b3J5PW51bGws''@;'; put 'put ''ZC5tZW51PW51bGwsZC5ob3QuYWRkSG9vaygiYWZ0ZXJHZXRDb2xIZWFkZXIiLGZ1bmN0aW9uKGgsbSl7cmV0dXJuIGQub25BZnRlckdldENvbEhlYWRlcihoLG0pfSksZH1yZXR1cm4gZnVuY3Rpb24gYnB0KGwsYyxhKXtjJiZTcGUobC5wcm90b3R5cGUsYyksYSYmU3BlKGwsYSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtocV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhp''@;'; put 'put ''cztpZighdGhpcy5lbmFibGVkKXt0aGlzLml0ZW1zRmFjdG9yeT1uZXcgTjNlKHRoaXMuaG90LGEuREVGQVVMVF9JVEVNUyk7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtocV0sbT17aXRlbXM6dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoaCl9O3RoaXMucmVnaXN0ZXJFdmVudHMo''@;'; put 'put ''KSwiZnVuY3Rpb24iPT10eXBlb2YgaC5jYWxsYmFjayYmdGhpcy5jb21tYW5kRXhlY3V0b3Iuc2V0Q29tbW9uQ2FsbGJhY2soaC5jYWxsYmFjayksUTUoTzMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyksdGhpcy5jYWxsT25QbHVnaW5zUmVhZHkoZnVuY3Rp''@;'; put 'put ''b24oKXtkLmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0aW9ucyIsbSksZC5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKG0uaXRlbXMpO3ZhciBfPWQuaXRlbXNGYWN0b3J5LmdldEl0ZW1zKGgpO2QubWVudSYmZC5tZW51LmRlc3Ryb3koKSxkLm1lbnU9''@;'; put 'put ''bmV3IHFLKGQuaG90LHtjbGFzc05hbWU6Imh0RHJvcGRvd25NZW51IixrZWVwSW5WaWV3cG9ydDohMCxjb250YWluZXI6aC51aUNvbnRhaW5lcnx8ZC5ob3Qucm9vdERvY3VtZW50LmJvZHl9KSxkLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2V0SXRlbXMiLF8pLGQubWVudS5z''@;'; put 'put ''ZXRNZW51SXRlbXMoXyksZC5tZW51LmFkZExvY2FsSG9vaygiYmVmb3JlT3BlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1lbnVCZWZvcmVPcGVuKCl9KSxkLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlck9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25NZW51QWZ0ZXJPcGVuKCl9KSxkLm1l''@;'; put 'put ''bnUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIixmdW5jdGlvbigpe3JldHVybiBkLm9uTWVudUFmdGVyQ2xvc2UoKX0pLGQubWVudS5hZGRMb2NhbEhvb2soImV4ZWN1dGVDb21tYW5kIixmdW5jdGlvbigpe2Zvcih2YXIgTyxYPWFyZ3VtZW50cy5sZW5ndGgsYWU9bmV3IEFycmF5KFgpLHBl''@;'; put 'put ''PTA7cGU8WDtwZSsrKWFlW3BlXT1hcmd1bWVudHNbcGVdO3JldHVybihPPWQuZXhlY3V0ZUNvbW1hbmQpLmNhbGwuYXBwbHkoTyxbZF0uY29uY2F0KGFlKSl9KSxSbihfLGZ1bmN0aW9uKE8pe3JldHVybiBkLmNvbW1hbmRFeGVjdXRvci5yZWdpc3RlckNvbW1hbmQoTy5rZXksTyl9KX0pfX19''@;'; put 'put ''LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLFE1KE8zKGEucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLFE1KE8zKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5ldmVudE1h''@;'; put 'put ''bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RWxlbWVudCwiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uVGFibGVDbGljayhoKX0pfX0se2tleToib3BlbiIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5tZW51JiYodGhpcy5tZW51Lm9wZW4oKSxkLndpZHRoJiZ0aGlz''@;'; put 'put ''Lm1lbnUuc2V0T2Zmc2V0KCJsZWZ0IixkLndpZHRoKSx0aGlzLm1lbnUuc2V0UG9zaXRpb24oZCkpfX0se2tleToiY2xvc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tZW51JiZ0aGlzLm1lbnUuY2xvc2UoKX19LHtrZXk6ImV4ZWN1dGVDb21tYW5kIix2YWx1ZTpmdW5jdGlvbihkKXtmb3Io''@;'; put 'put ''dmFyIGgsbT1hcmd1bWVudHMubGVuZ3RoLF89bmV3IEFycmF5KG0+MT9tLTE6MCksTz0xO088bTtPKyspX1tPLTFdPWFyZ3VtZW50c1tPXTsoaD10aGlzLmNvbW1hbmRFeGVjdXRvcikuZXhlY3V0ZS5hcHBseShoLFtkXS5jb25jYXQoXykpfX0se2tleToic2V0TGlzdGVuaW5nIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBkPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07dGhpcy5tZW51LmlzT3BlbmVkKCkmJihkP3RoaXMubWVudS5ob3RNZW51Lmxpc3RlbigpOnRoaXMubWVudS5ob3RNZW51LnVubGlzdGVuKCkpfX0se2tleToi''@;'; put 'put ''b25UYWJsZUNsaWNrIix2YWx1ZTpmdW5jdGlvbihkKXtpZihkLnN0b3BQcm9wYWdhdGlvbigpLFlvKGQudGFyZ2V0LHBxKSYmIXRoaXMubWVudS5pc09wZW5lZCgpKXt2YXIgaD0wLG09MDtpZih0aGlzLmhvdC5yb290RG9jdW1lbnQhPT10aGlzLm1lbnUuY29udGFpbmVyLm93bmVyRG9jdW1l''@;'; put 'put ''bnQpe3ZhciBPPXRoaXMuaG90LnJvb3RXaW5kb3cuZnJhbWVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2g9Ty50b3AsbT1PLmxlZnR9dmFyIHBlPWQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMub3Blbih7bGVmdDpwZS5sZWZ0K20sdG9wOnBlLnRvcCtkLnRh''@;'; put 'put ''cmdldC5vZmZzZXRIZWlnaHQrMytoLHdpZHRoOnBlLndpZHRoLGhlaWdodDpwZS5oZWlnaHR9KX19fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPWgucGFyZW50Tm9kZTtpZihtKXt2YXIgXz1tLnBhcmVudE5vZGUuY2hpbGROb2RlcyxPPUFy''@;'; put 'put ''cmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoXyxtKTtpZighKGQ8MHx8TyE9PV8ubGVuZ3RoLTEpKXt2YXIgWD1oLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChwcSkpO2lmKCF0aGlzLmVuYWJsZWR8fCFYKXtpZighdGhpcy5lbmFibGVkKXJldHVybiB2b2lkKFgmJlgucGFyZW50Tm9kZS5y''@;'; put 'put ''ZW1vdmVDaGlsZChYKSk7dmFyIGFlPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTthZS5jbGFzc05hbWU9cHEsYWUudHlwZT0iYnV0dG9uIixhZS5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGguZmlyc3RDaGlsZC5pbnNlcnRCZWZvcmUoYWUsaC5m''@;'; put 'put ''aXJzdENoaWxkLmZpcnN0Q2hpbGQpfX19fX0se2tleToib25NZW51QmVmb3JlT3BlbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlck9wZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5o''@;'; put 'put ''b3QucnVuSG9va3MoImFmdGVyRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9fSx7a2V5OiJvbk1lbnVBZnRlckNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90Lmxpc3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiLHRoaXMpfX0se2tleToiZGVzdHJv''@;'; put 'put ''eSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLFE1KE8zKGEucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhxfX0se2tleToi''@;'; put 'put ''UExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjMwfX0se2tleToiUExVR0lOX0RFUFMiLGdldDpmdW5jdGlvbigpe3JldHVyblsicGx1Z2luOkF1dG9Db2x1bW5TaXplIl19fSx7a2V5OiJERUZBVUxUX0lURU1TIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bSWssUmssYmEs''@;'; put 'put ''UGssYmEsUkwsYmEsTGssYmEsVmZdfX1dKSxhfShHYSk7ZnVuY3Rpb24gS2sobCl7cmV0dXJuKEtrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJu''@;'; put 'put ''IGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gRXBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAs''@;'; put 'put ''Zj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24geHBlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndy''@;'; put 'put ''aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxQcHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBQcHQobCl7dmFyIGM9ZnVuY3Rpb24gRnB0KGwsYyl7aWYoIm9iamVjdCIhPT1LayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQg''@;'; put 'put ''MCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1LayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJl''@;'; put 'put ''cikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09S2soYyk/YzpTdHJpbmcoYyl9a3BlLlNFUEFSQVRPUj17bmFtZTpiYX07dmFyIEhwdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIFJwdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmhvdD1jLHRoaXMub3B0aW9ucz17fX1yZXR1cm4gZnVuY3Rpb24gTHB0KGwsYyxhKXtjJiZ4cGUobC5wcm90b3R5cGUsYyksYSYmeHBlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''InByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucz1hfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9dGhpcy5fZ2V0RGF0YVJhbmdlKCksaD1mLnN0YXJ0Q29sLF89''@;'; put 'put ''Zi5lbmRDb2wsTz10aGlzLm9wdGlvbnMsWD1bXTtyZXR1cm4gX28oZi5zdGFydFJvdyxmLmVuZFJvdyxmdW5jdGlvbihhZSl7dmFyIHBlPVtdOyFPLmV4cG9ydEhpZGRlblJvd3MmJmEuX2lzSGlkZGVuUm93KGFlKXx8KF9vKGgsXyxmdW5jdGlvbihiZSl7IU8uZXhwb3J0SGlkZGVuQ29sdW1u''@;'; put 'put ''cyYmYS5faXNIaWRkZW5Db2x1bW4oYmUpfHxwZS5wdXNoKGEuaG90LmdldERhdGFBdENlbGwoYWUsYmUpKX0pLFgucHVzaChwZSkpfSksWH19LHtrZXk6ImdldFJvd0hlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPVtdO2lmKHRoaXMub3B0aW9ucy5yb3dIZWFkZXJzKXt2''@;'; put 'put ''YXIgZD10aGlzLl9nZXREYXRhUmFuZ2UoKSxoPWQuc3RhcnRSb3csbT1kLmVuZFJvdyxfPXRoaXMuaG90LmdldFJvd0hlYWRlcigpO19vKGgsbSxmdW5jdGlvbihPKXshYS5vcHRpb25zLmV4cG9ydEhpZGRlblJvd3MmJmEuX2lzSGlkZGVuUm93KE8pfHxmLnB1c2goX1tPXSl9KX1yZXR1cm4g''@;'; put 'put ''Zn19LHtrZXk6ImdldENvbHVtbkhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPVtdO2lmKHRoaXMub3B0aW9ucy5jb2x1bW5IZWFkZXJzKXt2YXIgZD10aGlzLl9nZXREYXRhUmFuZ2UoKSxoPWQuc3RhcnRDb2wsbT1kLmVuZENvbCxfPXRoaXMuaG90LmdldENvbEhlYWRl''@;'; put 'put ''cigpO19vKGgsbSxmdW5jdGlvbihPKXshYS5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMmJmEuX2lzSGlkZGVuQ29sdW1uKE8pfHxmLnB1c2goX1tPXSl9KX1yZXR1cm4gZn19LHtrZXk6Il9nZXREYXRhUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ob3QuY291bnRDb2xz''@;'; put 'put ''KCktMSxmPXRoaXMuaG90LmNvdW50Um93cygpLTEsZD1mdW5jdGlvbiBBcHQobCxjKXtyZXR1cm4gZnVuY3Rpb24gSXB0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBEcHQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSku''@;'; put 'put ''ZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4g''@;'; put 'put ''X319KGwsYyl8fGZ1bmN0aW9uIE9wdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gRXBlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25z''@;'; put 'put ''dHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBFcGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIFRwdCgp''@;'; put 'put ''e3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9''@;'; put 'put ''KHRoaXMub3B0aW9ucy5yYW5nZSw0KSxoPWRbMF0sbT12b2lkIDA9PT1oPzA6aCxfPWRbMV0sTz12b2lkIDA9PT1fPzA6XyxYPWRbMl0sYWU9dm9pZCAwPT09WD9mOlgscGU9ZFszXSxiZT12b2lkIDA9PT1wZT9hOnBlO3JldHVybntzdGFydFJvdzptPU1hdGgubWF4KG0sMCksc3RhcnRDb2w6''@;'; put 'put ''Tz1NYXRoLm1heChPLDApLGVuZFJvdzphZT1NYXRoLm1pbihhZSxmKSxlbmRDb2w6YmU9TWF0aC5taW4oYmUsYSl9fX0se2tleToiX2lzSGlkZGVuUm93Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy5ob3QudG9QaHlzaWNh''@;'; put 'put ''bFJvdyhhKSl9fSx7a2V5OiJfaXNIaWRkZW5Db2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbih0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGEpKX19XSksbH0oKTtjb25zdCBOcHQ9SHB0O2Z1bmN0aW9uIHFrKGwpe3Jl''@;'; put 'put ''dHVybihxaz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3lt''@;'; put 'put ''Ym9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIEFwZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBm''@;'; put 'put ''JiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsanB0KGYua2V5KSxmKX19ZnVuY3Rpb24ganB0KGwpe3ZhciBjPWZ1bmN0aW9uIHpwdChsLGMpe2lmKCJvYmplY3QiIT09cWsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtp''@;'; put 'put ''Zih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cWsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmlu''@;'; put 'put ''ZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXFrKGMpP2M6U3RyaW5nKGMpfXZhciBVcHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIFZwdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBj''@;'; put 'put ''YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmRhdGFQcm92aWRlcj1jLHRoaXMub3B0aW9ucz10aGlzLl9tZXJnZU9wdGlvbnMoYSksdGhpcy5kYXRhUHJvdmlkZXIuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMpfXJldHVybiBmdW5jdGlvbiBCcHQobCxjLGEpe2Mm''@;'; put 'put ''JkFwZShsLnByb3RvdHlwZSxjKSxhJiZBcGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiX21lcmdlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9ZTAodGhpcy5jb25zdHJ1Y3Rvci5ERUZBVUxUX09QVElP''@;'; put 'put ''TlMpLGQ9bmV3IERhdGU7cmV0dXJuIGY9cnUoZTAobC5ERUZBVUxUX09QVElPTlMpLGYpLChmPXJ1KGYsYSkpLmZpbGVuYW1lPXZZKGYuZmlsZW5hbWUse1lZWVk6ZC5nZXRGdWxsWWVhcigpLE1NOiIiLmNvbmNhdChkLmdldE1vbnRoKCkrMSkucGFkU3RhcnQoMiwiMCIpLEREOiIiLmNvbmNh''@;'; put 'put ''dChkLmdldERhdGUoKSkucGFkU3RhcnQoMiwiMCIpfSksZn19XSxbe2tleToiREVGQVVMVF9PUFRJT05TIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57bWltZVR5cGU6InRleHQvcGxhaW4iLGZpbGVFeHRlbnNpb246InR4dCIsZmlsZW5hbWU6IkhhbmRzb250YWJsZSBbWVlZWV0tW01NXS1bRERd''@;'; put 'put ''IixlbmNvZGluZzoidXRmLTgiLGJvbTohMSxjb2x1bW5IZWFkZXJzOiExLHJvd0hlYWRlcnM6ITEsZXhwb3J0SGlkZGVuQ29sdW1uczohMSxleHBvcnRIaWRkZW5Sb3dzOiExLHJhbmdlOltdfX19XSksbH0oKTtjb25zdCBacHQ9VXB0O2Z1bmN0aW9uIHl5KGwpe3JldHVybih5eT0iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9s''@;'; put 'put ''LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFRwZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0h''@;'; put 'put ''MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsR3B0KGYua2V5KSxmKX19ZnVuY3Rpb24gR3B0KGwpe3ZhciBjPWZ1bmN0aW9uICRwdChsLGMpe2lmKCJvYmplY3QiIT09eXkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2''@;'; put 'put ''YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09eXkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShs''@;'; put 'put ''LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXl5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIG1xKGwsYyl7cmV0dXJuKG1xPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGws''@;'; put 'put ''Yyl9ZnVuY3Rpb24gS0wobCl7cmV0dXJuKEtMPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIGU0dD1TdHJpbmcuZnJvbUNoYXJD''@;'; put 'put ''b2RlKDEzKSx0NHQ9U3RyaW5nLmZyb21DaGFyQ29kZSgzNCksbjR0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTApLHI0dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gS3B0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl''@;'; put 'put ''c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90''@;'; put 'put ''b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJm1xKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gcXB0KGwpe3ZhciBjPWZ1bmN0aW9uIFFwdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUtM''@;'; put 'put ''KGwpO2lmKGMpe3ZhciBoPUtMKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBYcHQobCxjKXtpZihjJiYoIm9iamVjdCI9PT15eShjKXx8ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gSnB0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVy''@;'; put 'put ''ZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIFlwdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBXcHQobCxjLGEpe2MmJlRwZShsLnByb3RvdHlwZSxjKSxhJiZUcGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiZXhwb3J0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD10aGlzLm9wdGlvbnMsbT10aGlzLmRhdGFQcm92aWRlci5nZXREYXRhKCksXz10aGlzLmRhdGFQcm92aWRlci5nZXRDb2x1bW5IZWFkZXJzKCksTz1fLmxl''@;'; put 'put ''bmd0aD4wLFg9dGhpcy5kYXRhUHJvdmlkZXIuZ2V0Um93SGVhZGVycygpLGFlPVgubGVuZ3RoPjAscGU9aC5ib20/U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSk6IiI7cmV0dXJuIE8mJihfPWhhKF8sZnVuY3Rpb24oYmUpe3JldHVybiBkLl9lc2NhcGVDZWxsKGJlLCEwKX0pLGFlJiYocGUr''@;'; put 'put ''PWguY29sdW1uRGVsaW1pdGVyKSxwZSs9Xy5qb2luKGguY29sdW1uRGVsaW1pdGVyKSxwZSs9aC5yb3dEZWxpbWl0ZXIpLFJuKG0sZnVuY3Rpb24oYmUseGUpe3hlPjAmJihwZSs9aC5yb3dEZWxpbWl0ZXIpLGFlJiYocGUrPWQuX2VzY2FwZUNlbGwoWFt4ZV0pK2guY29sdW1uRGVsaW1pdGVy''@;'; put 'put ''KSxwZSs9YmUubWFwKGZ1bmN0aW9uKFZlKXtyZXR1cm4gZC5fZXNjYXBlQ2VsbChWZSl9KS5qb2luKGguY29sdW1uRGVsaW1pdGVyKX0pLHBlfX0se2tleToiX2VzY2FwZUNlbGwiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRz''@;'; put 'put ''WzFdJiZhcmd1bWVudHNbMV0sbT1NcyhkKTtyZXR1cm4iIiE9PW0mJihofHxtLmluZGV4T2YoZTR0KT49MHx8bS5pbmRleE9mKHQ0dCk+PTB8fG0uaW5kZXhPZihuNHQpPj0wfHxtLmluZGV4T2YodGhpcy5vcHRpb25zLmNvbHVtbkRlbGltaXRlcik+PTApJiYobT1tLnJlcGxhY2UobmV3IFJl''@;'; put 'put ''Z0V4cCgnIicsImciKSwnIiInKSxtPSciJy5jb25jYXQobSwnIicpKSxtfX1dLFt7a2V5OiJERUZBVUxUX09QVElPTlMiLGdldDpmdW5jdGlvbigpe3JldHVybnttaW1lVHlwZToidGV4dC9jc3YiLGZpbGVFeHRlbnNpb246ImNzdiIsYm9tOiEwLGNvbHVtbkRlbGltaXRlcjoiLCIscm93RGVs''@;'; put 'put ''aW1pdGVyOiJcclxuIn19fV0pLGF9KFpwdCk7ZnVuY3Rpb24gWGsobCl7cmV0dXJuKFhrPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIGdxPWZ1bmN0aW9uIG80dChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gYTR0KGwpe3ZhciBjPWZ1bmN0aW9uIGw0dChs''@;'; put 'put ''LGMpe2lmKCJvYmplY3QiIT09WGsobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09WGsoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''QEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVhrKGMpP2M6U3RyaW5nKGMpfShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh7fSwiY3N2IixyNHQpO2Z1bmN0aW9uIGJ5KGwpe3JldHVybihieT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRv''@;'; put 'put ''cj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIE9wZShsLGMp''@;'; put 'put ''e2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZDR0KGYua2V5KSxmKX19ZnVuY3Rpb24g''@;'; put 'put ''ZDR0KGwpe3ZhciBjPWZ1bmN0aW9uIGg0dChsLGMpe2lmKCJvYmplY3QiIT09YnkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09YnkoZikpcmV0''@;'; put 'put ''dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWJ5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0''@;'; put 'put ''aW9uIHZxKGwsYyl7cmV0dXJuKHZxPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gcUwobCl7cmV0dXJuKHFMPU9iamVjdC5zZXRQcm90b3R5cGVPZj9P''@;'; put 'put ''YmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHc0dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gcDR0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnZxKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gbTR0KGwpe3ZhciBjPWZ1bmN0aW9uIHk0dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0o''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXFMKGwpO2lmKGMpe3ZhciBoPXFMKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBnNHQobCxjKXtpZihjJiYo''@;'; put 'put ''Im9iamVjdCI9PT1ieShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gdjR0KGwp''@;'; put 'put ''e2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIGM0dChsLGMp''@;'; put 'put ''e2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBmNHQobCxjLGEpe2MmJk9wZShsLnByb3RvdHlwZSxjKSxhJiZP''@;'; put 'put ''cGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEwfX0se2tleToiZXhwb3J0QXNTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLl9jcmVh''@;'; put 'put ''dGVUeXBlRm9ybWF0dGVyKGQsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5leHBvcnQoKX19LHtrZXk6ImV4cG9ydEFzQmxvYiIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUJsb2IodGhpcy5fY3JlYXRlVHlw''@;'; put 'put ''ZUZvcm1hdHRlcihkLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSkpfX0se2tleToiZG93bmxvYWRGaWxlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgbT10aGlzLmhvdCxfPW0ucm9vdERvY3VtZW50LE89bS5yb290V2luZG93LFg9dGhp''@;'; put 'put ''cy5fY3JlYXRlVHlwZUZvcm1hdHRlcihkLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSksYWU9dGhpcy5fY3JlYXRlQmxvYihYKSxwZT1PLlVSTHx8Ty53ZWJraXRVUkwsYmU9Xy5jcmVhdGVFbGVtZW50KCJhIikseGU9IiIuY29uY2F0''@;'; put 'put ''KFgub3B0aW9ucy5maWxlbmFtZSwiLiIpLmNvbmNhdChYLm9wdGlvbnMuZmlsZUV4dGVuc2lvbik7aWYodm9pZCAwIT09YmUuZG93bmxvYWQpe3ZhciBWZT1wZS5jcmVhdGVPYmplY3RVUkwoYWUpO2JlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGJlLnNldEF0dHJpYnV0ZSgiaHJlZiIsVmUpLGJl''@;'; put 'put ''LnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLHhlKSxfLmJvZHkuYXBwZW5kQ2hpbGQoYmUpLGJlLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoImNsaWNrIikpLF8uYm9keS5yZW1vdmVDaGlsZChiZSksc2V0VGltZW91dChmdW5jdGlvbigpe3BlLnJldm9rZU9iamVjdFVSTChWZSl9LDEw''@;'; put 'put ''MCl9ZWxzZSBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYiYmbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYWUseGUpfX0se2tleToiX2NyZWF0ZVR5cGVGb3JtYXR0ZXIiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''P2FyZ3VtZW50c1sxXTp7fTtpZighZ3FbZF0pdGhyb3cgbmV3IEVycm9yKCdFeHBvcnQgZm9ybWF0IHR5cGUgIicuY29uY2F0KGQsJyIgaXMgbm90IHN1cHBvcnRlZC4nKSk7cmV0dXJuIGZ1bmN0aW9uIHU0dChsLGMsYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGdxW2xdP25ldyBncVts''@;'; put 'put ''XShjLGEpOm51bGx9KGQsbmV3IE5wdCh0aGlzLmhvdCksaCl9fSx7a2V5OiJfY3JlYXRlQmxvYiIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9bnVsbDtyZXR1cm4gdHlwZW9mIEJsb2I8InUiJiYoaD1uZXcgQmxvYihbZC5leHBvcnQoKV0se3R5cGU6IiIuY29uY2F0KGQub3B0aW9ucy5taW1l''@;'; put 'put ''VHlwZSwiO2NoYXJzZXQ9IikuY29uY2F0KGQub3B0aW9ucy5lbmNvZGluZyl9KSksaH19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuImV4cG9ydEZpbGUifX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjQwfX1dKSxhfShH''@;'; put 'put ''YSk7ZnVuY3Rpb24gSmsobCl7cmV0dXJuKEprPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gRHBlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1''@;'; put 'put ''cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxNNHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBNNHQobCl7dmFyIGM9ZnVuY3Rpb24gazR0KGwsYyl7aWYoIm9iamVjdCIhPT1KayhsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtT''@;'; put 'put ''eW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1KayhmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVy''@;'; put 'put ''bigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09SmsoYyk/YzpTdHJpbmcoYyl9dmFyIElwZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyxhKXt2YXIgZj1hLmlkLGQ9YS5zdGF0ZWxlc3MsaD12b2lkIDA9PT1kfHxkOyhmdW5jdGlv''@;'; put 'put ''biBDNHQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0aGlzLmlkPWYsdGhpcy5lbGVtZW50cz1bXSx0aGlzLmhpZGRlbj0hMSx0aGlzLnN0YXRlSWQ9''@;'; put 'put ''IkZpbHRlcnMuY29tcG9uZW50LiIuY29uY2F0KHRoaXMuaWQpLHRoaXMuc3RhdGU9aD9udWxsOnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCxuZXcgelIpfXJldHVybiBmdW5jdGlvbiBTNHQobCxjLGEpe2MmJkRwZShsLnByb3RvdHlwZSxjKSxh''@;'; put 'put ''JiZEcGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7Um4odGhpcy5lbGVtZW50cyxmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXNldCgpfSl9fSx7a2V5OiJoaWRlIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuaGlkZGVuPSEwfX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhpZGRlbj0hMX19LHtrZXk6ImlzSGlkZGVuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5ob3R8fHRoaXMuaGlkZGVufX0se2tleToicmVzdG9yZVN0YXRlIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnN0YXRlJiZ0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGUuZ2V0VmFsdWVBdEluZGV4KGEpKX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiVGhlIHN0YXRlIHNldHRpbmcgbG9naWMgaXMgbm90IGltcGxlbWVu''@;'; put 'put ''dGVkIil9fSx7a2V5OiJzYXZlU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuc3RhdGUmJnRoaXMuc3RhdGUuc2V0VmFsdWVBdEluZGV4KGEsdGhpcy5nZXRTdGF0ZSgpKX19LHtrZXk6ImdldFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiVGhlIHN0YXRlIGdh''@;'; put 'put ''dGhlcmluZyBsb2dpYyBpcyBub3QgaW1wbGVtZW50ZWQiKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnN0YXRlSWQpLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCksUm4odGhpcy5lbGVtZW50cyxm''@;'; put 'put ''dW5jdGlvbihhKXtyZXR1cm4gYS5kZXN0cm95KCl9KSx0aGlzLnN0YXRlPW51bGwsdGhpcy5lbGVtZW50cz1udWxsLHRoaXMuaG90PW51bGx9fV0pLGx9KCk7VGwoSXBlLFcwKTtjb25zdCBYTD1JcGU7dmFyIFFrPXt9O2Z1bmN0aW9uIFo0KGwsYyl7aWYoIVFrW2xdKXRocm93IEVycm9yKCdG''@;'; put 'put ''aWx0ZXIgY29uZGl0aW9uICInLmNvbmNhdChsLCciIGRvZXMgbm90IGV4aXN0LicpKTt2YXIgYT1Ra1tsXSxmPWEuY29uZGl0aW9uLGQ9YS5kZXNjcmlwdG9yLGg9YztyZXR1cm4gZC5pbnB1dFZhbHVlc0RlY29yYXRvciYmKGg9ZC5pbnB1dFZhbHVlc0RlY29yYXRvcihoKSksZnVuY3Rpb24o''@;'; put 'put ''bSl7cmV0dXJuIGYuYXBwbHkobS5tZXRhLmluc3RhbmNlLFtdLmNvbmNhdChbbV0sW2hdKSl9fWZ1bmN0aW9uIGU2KGwpe2lmKCFRa1tsXSl0aHJvdyBFcnJvcignRmlsdGVyIGNvbmRpdGlvbiAiJy5jb25jYXQobCwnIiBkb2VzIG5vdCBleGlzdC4nKSk7cmV0dXJuIFFrW2xdLmRlc2NyaXB0''@;'; put 'put ''b3J9ZnVuY3Rpb24gb3UobCxjLGEpe2Eua2V5PWwsUWtbbF09e2NvbmRpdGlvbjpjLGRlc2NyaXB0b3I6YX19dmFyIGVjPSJub25lIjtvdShlYyxmdW5jdGlvbiBFNHQoKXtyZXR1cm4hMH0se25hbWU6cVIsaW5wdXRzQ291bnQ6MCxzaG93T3BlcmF0b3JzOiExfSk7dmFyIGVFPSJlbXB0eSI7''@;'; put 'put ''b3UoZUUsZnVuY3Rpb24geDR0KGwpe3JldHVybiB3dShsLnZhbHVlKX0se25hbWU6UUcsaW5wdXRzQ291bnQ6MCxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIEpMPSJub3RfZW1wdHkiO2Z1bmN0aW9uIFJwZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''YT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfW91KEpMLGZ1bmN0aW9uIEE0dChsLGMpe3JldHVybiFaNChlRSxjKShsKX0se25hbWU6ZSQsaW5wdXRzQ291bnQ6MCxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIHRFPSJlcSI7b3UodEUsZnVuY3Rpb24gTDR0KGws''@;'; put 'put ''Yyl7dmFyIGY9ZnVuY3Rpb24gVDR0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFI0dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gSTR0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBA''@;'; put 'put ''aXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUp''@;'; put 'put ''LF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBENHQo''@;'; put 'put ''bCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIFJwZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1h''@;'; put 'put ''fHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gUnBlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBPNHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJ''@;'; put 'put ''bnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShjLDEpWzBdO3JldHVybiBNcyhsLnZh''@;'; put 'put ''bHVlKS50b0xvY2FsZUxvd2VyQ2FzZShsLm1ldGEubG9jYWxlKT09PU1zKGYpfSx7bmFtZTp0JCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgUUw9Im5lcSI7ZnVuY3Rpb24gTHBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBh''@;'; put 'put ''PTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gRnBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gTnBl''@;'; put 'put ''KGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gQnBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1u''@;'; put 'put ''ZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24genBlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9b3UoUUwsZnVuY3Rpb24gUDR0''@;'; put 'put ''KGwsYyl7cmV0dXJuIVo0KHRFLGMpKGwpfSx7bmFtZTpuJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxvdSgiZ3QiLGZ1bmN0aW9uIGo0dChsLGMpe3ZhciBkPWZ1bmN0aW9uIEY0dChsLGMpe3JldHVybiBmdW5jdGlvbiBCNHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1''@;'; put 'put ''cm4gbH0obCl8fGZ1bmN0aW9uIFY0dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5u''@;'; put 'put ''ZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVy''@;'; put 'put ''biYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gTjR0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBMcGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRv''@;'; put 'put ''U3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwz''@;'; put 'put ''MikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIExwZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gSDR0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJh''@;'; put 'put ''YmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYywxKVswXTtyZXR1cm4ibnVtZXJpYyI9PT1sLm1ldGEudHlwZSYmKGQ9cGFyc2VGbG9hdChkLDEwKSksbC52YWx1ZT5kfSx7bmFtZTpsJCxpbnB1dHNDb3VudDoxLHNo''@;'; put 'put ''b3dPcGVyYXRvcnM6ITB9KSxvdSgiZ3RlIixmdW5jdGlvbiBHNHQobCxjKXt2YXIgZD1mdW5jdGlvbiB6NHQobCxjKXtyZXR1cm4gZnVuY3Rpb24gVzR0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBZNHQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlw''@;'; put 'put ''ZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7''@;'; put 'put ''IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYo''@;'; put 'put ''WCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIFo0dChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gRnBlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25z''@;'; put 'put ''dHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBGcGUobCxjKX19KGws''@;'; put 'put ''Yyl8fGZ1bmN0aW9uIFU0dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl0oKSBtZXRob2QuIil9KCl9KGMsMSlbMF07cmV0dXJuIm51bWVyaWMiPT09bC5tZXRhLnR5cGUmJihkPXBhcnNlRmxvYXQoZCwxMCkpLGwudmFsdWU+PWR9LHtuYW1lOnMkLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLG91KCJsdCIsZnVuY3Rpb24gUTR0KGwsYyl7dmFyIGQ9''@;'; put 'put ''ZnVuY3Rpb24gJDR0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIEo0dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gWDR0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3Ii''@;'; put 'put ''XTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3Ro''@;'; put 'put ''IT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBxNHQobCxjKXtpZihs''@;'; put 'put ''KXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIE5wZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09''@;'; put 'put ''PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gTnBlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBLNHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0''@;'; put 'put ''dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShjLDEpWzBdO3JldHVybiJudW1lcmljIj09PWwubWV0''@;'; put 'put ''YS50eXBlJiYoZD1wYXJzZUZsb2F0KGQsMTApKSxsLnZhbHVlPGR9LHtuYW1lOnUkLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLG91KCJsdGUiLGZ1bmN0aW9uIG9tdChsLGMpe3ZhciBkPWZ1bmN0aW9uIGVtdChsLGMpe3JldHVybiBmdW5jdGlvbiBpbXQobCl7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIHJtdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9''@;'; put 'put ''KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFP''@;'; put 'put ''JiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gbm10KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBCcGUobCxjKTt2YXIgYT1PYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpV''@;'; put 'put ''aXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEJwZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gdG10KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9y''@;'; put 'put ''ZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYywxKVswXTtyZXR1cm4ibnVtZXJpYyI9PT1sLm1ldGEudHlwZSYmKGQ9cGFyc2VGbG9hdChkLDEwKSksbC52YWx1ZTw9ZH0se25hbWU6YyQs''@;'; put 'put ''aW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIHlxPSJkYXRlX2FmdGVyIjtmdW5jdGlvbiBVcGUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1vdSh5''@;'; put 'put ''cSxmdW5jdGlvbiBmbXQobCxjKXt2YXIgZj1mdW5jdGlvbiBhbXQobCxjKXtyZXR1cm4gZnVuY3Rpb24gY210KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiB1bXQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9s''@;'; put 'put ''Lml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkm''@;'; put 'put ''JihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGws''@;'; put 'put ''Yyl8fGZ1bmN0aW9uIHNtdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4genBlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rv''@;'; put 'put ''ci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiB6cGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIGxtdCgpe3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGMsMSlb''@;'; put 'put ''MF0sZD1LbyhsLnZhbHVlLGwubWV0YS5kYXRlRm9ybWF0KSxoPUtvKGYsbC5tZXRhLmRhdGVGb3JtYXQpO3JldHVybiEoIWQuaXNWYWxpZCgpfHwhaC5pc1ZhbGlkKCkpJiZkLmRpZmYoaCk+PTB9LHtuYW1lOmgkLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO3ZhciBicT0iZGF0''@;'; put 'put ''ZV9iZWZvcmUiO2Z1bmN0aW9uIFpwZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfW91KGJxLGZ1bmN0aW9uIHZtdChsLGMpe3ZhciBmPWZ1bmN0aW9uIGRtdChsLGMp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbiBnbXQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIG1tdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFy''@;'; put 'put ''IGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRj''@;'; put 'put ''aChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gcG10KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBsKXJldHVybiBVcGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5m''@;'; put 'put ''cm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFVwZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gaG10KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0''@;'; put 'put ''dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYywxKVswXSxkPUtvKGwudmFsdWUsbC5tZXRhLmRhdGVGb3JtYXQpLGg9S28oZixs''@;'; put 'put ''Lm1ldGEuZGF0ZUZvcm1hdCk7cmV0dXJuISghZC5pc1ZhbGlkKCl8fCFoLmlzVmFsaWQoKSkmJmQuZGlmZihoKTw9MH0se25hbWU6cCQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIGVQPSJiZXR3ZWVuIjtvdShlUCxmdW5jdGlvbiBTbXQobCxjKXt2YXIgYT1mdW5jdGlv''@;'; put 'put ''biB5bXQobCxjKXtyZXR1cm4gZnVuY3Rpb24gQ210KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiB3bXQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51''@;'; put 'put ''bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtP''@;'; put 'put ''PSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIF9tdChsLGMpe2lmKGwpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgbClyZXR1cm4gWnBlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1''@;'; put 'put ''cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBacGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIGJtdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0''@;'; put 'put ''byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGMsMiksaD1hWzBdLG09YVsxXTtpZigibnVtZXJpYyI9PT1sLm1l''@;'; put 'put ''dGEudHlwZSl7dmFyIF89cGFyc2VGbG9hdChoLDEwKSxPPXBhcnNlRmxvYXQobSwxMCk7aD1NYXRoLm1pbihfLE8pLG09TWF0aC5tYXgoXyxPKX1lbHNlIGlmKCJkYXRlIj09PWwubWV0YS50eXBlKXt2YXIgWD1aNChicSxbbV0pLGFlPVo0KHlxLFtoXSk7cmV0dXJuIFgobCkmJmFlKGwpfXJl''@;'; put 'put ''dHVybiBsLnZhbHVlPj1oJiZsLnZhbHVlPD1tfSx7bmFtZTpmJCxpbnB1dHNDb3VudDoyLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgWXBlPSJub3RfYmV0d2VlbiI7ZnVuY3Rpb24gV3BlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcg''@;'; put 'put ''QXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9b3UoWXBlLGZ1bmN0aW9uIE1tdChsLGMpe3JldHVybiFaNChlUCxjKShsKX0se25hbWU6ZCQsaW5wdXRzQ291bnQ6MixzaG93T3BlcmF0b3JzOiEwfSk7dmFyIEdwZT0iYmVnaW5zX3dpdGgiO2Z1bmN0aW9uICRwZShsLGMpeyhu''@;'; put 'put ''dWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIHFwZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5''@;'; put 'put ''KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfW91KEdwZSxmdW5jdGlvbiBPbXQobCxjKXt2YXIgZj1mdW5jdGlvbiBrbXQobCxjKXtyZXR1cm4gZnVuY3Rpb24gVG10KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBBbXQobCxjKXt2YXIgYT1udWxs''@;'; put 'put ''PT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0h''@;'; put 'put ''MX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJu''@;'; put 'put ''fWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIHhtdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gV3BlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3Qi''@;'; put 'put ''PT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBX''@;'; put 'put ''cGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIEVtdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGMsMSlbMF07cmV0dXJuIE1zKGwudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGwubWV0YS5sb2NhbGUpLnN0YXJ0c1dpdGgoTXMoZikpfSx7bmFtZTpyJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxUKDM3NDk5KSxvdSgi''@;'; put 'put ''ZW5kc193aXRoIixmdW5jdGlvbiBGbXQobCxjKXt2YXIgZj1mdW5jdGlvbiBEbXQobCxjKXtyZXR1cm4gZnVuY3Rpb24gUG10KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBMbXQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSIm''@;'; put 'put ''JmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChh''@;'; put 'put ''KSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1''@;'; put 'put ''cm4gX319KGwsYyl8fGZ1bmN0aW9uIFJtdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gJHBlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5j''@;'; put 'put ''b25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiAkcGUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIElt''@;'; put 'put ''dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9''@;'; put 'put ''KCl9KGMsMSlbMF07cmV0dXJuIE1zKGwudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGwubWV0YS5sb2NhbGUpLmVuZHNXaXRoKE1zKGYpKX0se25hbWU6aSQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIF9xPSJjb250YWlucyI7b3UoX3EsZnVuY3Rpb24gem10KGwsYyl7''@;'; put 'put ''dmFyIGY9ZnVuY3Rpb24gSG10KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGptdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gQm10KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRl''@;'; put 'put ''cmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8u''@;'; put 'put ''bGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBWbXQobCxj''@;'; put 'put ''KXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIHFwZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwi''@;'; put 'put ''U2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gcXBlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBObXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZh''@;'; put 'put ''bGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShjLDEpWzBdO3JldHVybiBNcyhsLnZhbHVl''@;'; put 'put ''KS50b0xvY2FsZUxvd2VyQ2FzZShsLm1ldGEubG9jYWxlKS5pbmRleE9mKE1zKGYpKT49MH0se25hbWU6byQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7dmFyIFhwZT0ibm90X2NvbnRhaW5zIjtvdShYcGUsZnVuY3Rpb24gVW10KGwsYyl7cmV0dXJuIVo0KF9xLGMpKGwpfSx7''@;'; put 'put ''bmFtZTphJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTt2YXIgSnBlPSJkYXRlX3RvbW9ycm93IjtvdShKcGUsZnVuY3Rpb24gWm10KGwpe3ZhciBjPUtvKGwudmFsdWUsbC5tZXRhLmRhdGVGb3JtYXQpO3JldHVybiEhYy5pc1ZhbGlkKCkmJmMuaXNTYW1lKEtvKCkuc3VidHJh''@;'; put 'put ''Y3QoLTEsImRheXMiKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTpnJCxpbnB1dHNDb3VudDowfSk7dmFyIFFwZT0iZGF0ZV90b2RheSI7b3UoUXBlLGZ1bmN0aW9uIFltdChsKXt2YXIgYz1LbyhsLnZhbHVlLGwubWV0YS5kYXRlRm9ybWF0KTtyZXR1cm4hIWMuaXNWYWxpZCgpJiZjLmlz''@;'; put 'put ''U2FtZShLbygpLnN0YXJ0T2YoImRheSIpLCJkIil9LHtuYW1lOm0kLGlucHV0c0NvdW50OjB9KTt2YXIgckUsZTRlPSJkYXRlX3llc3RlcmRheSI7ZnVuY3Rpb24gbkUobCl7cmV0dXJuKG5FPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gd3EobCxj''@;'; put 'put ''LGEpe3JldHVybiBjPWZ1bmN0aW9uIEdtdChsKXt2YXIgYz1mdW5jdGlvbiAkbXQobCxjKXtpZigib2JqZWN0IiE9PW5FKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtp''@;'; put 'put ''Zigib2JqZWN0IiE9PW5FKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1u''@;'; put 'put ''RShjKT9jOlN0cmluZyhjKX0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1vdShlNGUsZnVuY3Rpb24gV210KGwpe3ZhciBjPUtvKGwudmFsdWUsbC5tZXRhLmRh''@;'; put 'put ''dGVGb3JtYXQpO3JldHVybiEhYy5pc1ZhbGlkKCkmJmMuaXNTYW1lKEtvKCkuc3VidHJhY3QoMSwiZGF5cyIpLnN0YXJ0T2YoImRheSIpLCJkIil9LHtuYW1lOnYkLGlucHV0c0NvdW50OjB9KTt2YXIgbjRlPSh3cShyRT17fSwibnVtZXJpYyIsW2VjLGJhLGVFLEpMLGJhLHRFLFFMLGJhLCJn''@;'; put 'put ''dCIsImd0ZSIsImx0IiwibHRlIixlUCxZcGVdKSx3cShyRSwidGV4dCIsW2VjLGJhLGVFLEpMLGJhLHRFLFFMLGJhLEdwZSwiZW5kc193aXRoIixiYSxfcSxYcGVdKSx3cShyRSwiZGF0ZSIsW2VjLGJhLGVFLEpMLGJhLHRFLFFMLGJhLGJxLHlxLGVQLGJhLEpwZSxRcGUsZTRlXSksckUpO2Z1''@;'; put 'put ''bmN0aW9uIGlFKGwpe3JldHVybihpRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNv''@;'; put 'put ''bnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHI0ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxl''@;'; put 'put ''PSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZWd0KGYua2V5KSxmKX19ZnVuY3Rpb24gZWd0KGwpe3ZhciBjPWZ1bmN0aW9uIHRndChsLGMpe2lmKCJvYmplY3QiIT09aUUobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9s''@;'; put 'put ''LnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09aUUoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0''@;'; put 'put ''cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWlFKGMpP2M6U3RyaW5nKGMpfXZhciBDcT0iYnVpbHQiLFNxPSJidWlsZGluZyIsaTRlPVsiY2xpY2siLCJpbnB1dCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwiZm9jdXMiLCJi''@;'; put 'put ''bHVyIiwiY2hhbmdlIl0sbzRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBKbXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlcj1uZXcgZnModGhpcyksdGhpcy5vcHRpb25zPXJ1KGwuREVGQVVMVFMsYSksdGhpcy5fZWxlbWVudD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMud3JhcEl0PyJkaXYiOnRoaXMub3B0aW9ucy50YWdOYW1lKSx0aGlzLmJ1''@;'; put 'put ''aWxkU3RhdGU9bnVsbH1yZXR1cm4gZnVuY3Rpb24gUW10KGwsYyxhKXtjJiZyNGUobC5wcm90b3R5cGUsYyksYSYmcjRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihhKXt0''@;'; put 'put ''aGlzLm9wdGlvbnMudmFsdWU9YSx0aGlzLnVwZGF0ZSgpfX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZX19LHtrZXk6ImVsZW1lbnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1aWxkU3RhdGU9PT1TcT90aGlzLl9lbGVt''@;'; put 'put ''ZW50OnRoaXMuYnVpbGRTdGF0ZT09PUNxPyh0aGlzLnVwZGF0ZSgpLHRoaXMuX2VsZW1lbnQpOih0aGlzLmJ1aWxkU3RhdGU9U3EsdGhpcy5idWlsZCgpLHRoaXMuYnVpbGRTdGF0ZT1DcSx0aGlzLl9lbGVtZW50KX19LHtrZXk6ImlzQnVpbHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuYnVpbGRTdGF0ZT09PUNxfX0se2tleToidHJhbnNsYXRlSWZQb3NzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhJiZhLnN0YXJ0c1dpdGgobjApP3RoaXMuaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoYSk6YX19LHtrZXk6ImJ1aWxkIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBhPXRoaXMsZj1mdW5jdGlvbihtLF8pe2EuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIobSxfLGZ1bmN0aW9uKE8pe3JldHVybiBhLnJ1bkxvY2FsSG9va3MoXyxPLGEpfSl9O2lmKHRoaXMuYnVpbGRTdGF0ZXx8KHRoaXMuYnVpbGRTdGF0ZT1TcSksdGhpcy5v''@;'; put 'put ''cHRpb25zLmNsYXNzTmFtZSYmZ2kodGhpcy5fZWxlbWVudCx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSx0aGlzLm9wdGlvbnMuY2hpbGRyZW4ubGVuZ3RoKVJuKHRoaXMub3B0aW9ucy5jaGlsZHJlbixmdW5jdGlvbihoKXtyZXR1cm4gYS5fZWxlbWVudC5hcHBlbmRDaGlsZChoLmVsZW1lbnQp''@;'; put 'put ''fSk7ZWxzZSBpZih0aGlzLm9wdGlvbnMud3JhcEl0KXt2YXIgZD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMudGFnTmFtZSk7bWEodGhpcy5vcHRpb25zLGZ1bmN0aW9uKGgsbSl7dm9pZCAwIT09ZFttXSYmImNsYXNzTmFtZSIhPT1tJiYidGFnTmFt''@;'; put 'put ''ZSIhPT1tJiYiY2hpbGRyZW4iIT09bSYmKGRbbV09YS50cmFuc2xhdGVJZlBvc3NpYmxlKGgpKX0pLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZCksUm4oaTRlLGZ1bmN0aW9uKGgpe3JldHVybiBmKGQsaCl9KX1lbHNlIFJuKGk0ZSxmdW5jdGlvbihoKXtyZXR1cm4gZihhLl9lbGVtZW50''@;'; put 'put ''LGgpfSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnZhbHVlPSIiLHRoaXMudXBkYXRlKCl9fSx7a2V5OiJzaG93Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5zdHlsZS5kaXNwbGF5''@;'; put 'put ''PSIifX0se2tleToiaGlkZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSJ9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlcj1udWxsLHRoaXMuaG90PW51bGwsdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiZ0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudD1udWxsfX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIGUwKHtjbGFzc05hbWU6IiIsdmFsdWU6IiIsdGFnTmFtZToiZGl2IixjaGlsZHJlbjpbXSx3cmFwSXQ6ITB9KX19XSksbH0oKTtUbChvNGUsVzApO2NvbnN0IFk0PW80ZTtmdW5jdGlvbiBfeShsKXtyZXR1cm4oX3k9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IGN9KShsKX1mdW5jdGlvbiBhNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShs''@;'; put 'put ''LGlndChmLmtleSksZil9fWZ1bmN0aW9uIGlndChsKXt2YXIgYz1mdW5jdGlvbiBvZ3QobCxjKXtpZigib2JqZWN0IiE9PV95KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQi''@;'; put 'put ''KTtpZigib2JqZWN0IiE9PV95KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9''@;'; put 'put ''PT1feShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB0UCgpe3JldHVybiB0UD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gYWd0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD13eShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LHRQLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNcShsLGMpe3JldHVybihNcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGw0ZShsKXtpZih2b2lk''@;'; put 'put ''IDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gd3kobCl7cmV0dXJuKHd5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIG5QPW5ldyBXZWFrTWFwLGZndD1mdW5jdGlvbihsKXshZnVuY3Rpb24gbGd0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0p''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJk1xKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gc2d0KGwpe3ZhciBjPWZ1bmN0aW9uIGNndCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNv''@;'; put 'put ''bnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0o''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXd5KGwpO2lmKGMpe3ZhciBoPXd5KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiB1Z3QobCxjKXtpZihjJiYo''@;'; put 'put ''Im9iamVjdCI9PT1feShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gbDRlKGwpfSh0aGlzLGQp''@;'; put 'put ''fX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBuZ3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxoPWMuY2FsbCh0aGlzLGYscnUoYS5ERUZB''@;'; put 'put ''VUxUUyxkKSksblAuc2V0KGw0ZShoKSx7fSksaC5yZWdpc3Rlckhvb2tzKCksaH1yZXR1cm4gZnVuY3Rpb24gcmd0KGwsYyxhKXtjJiZhNGUobC5wcm90b3R5cGUsYyksYSYmYTRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3tr''@;'; put 'put ''ZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmFkZExvY2FsSG9vaygiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25DbGljaygpfSksdGhpcy5hZGRMb2NhbEhvb2soImtleXVwIixmdW5jdGlvbihoKXtyZXR1cm4gZC5vbktleXVwKGgpfSl9''@;'; put 'put ''fSx7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt0UCh3eShhLnByb3RvdHlwZSksImJ1aWxkIix0aGlzKS5jYWxsKHRoaXMpO3ZhciBkPW5QLmdldCh0aGlzKSxoPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmlucHV0PXRoaXMuX2VsZW1lbnQuZmly''@;'; put 'put ''c3RDaGlsZCxnaSh0aGlzLl9lbGVtZW50LCJodFVJSW5wdXQiKSxnaShoLCJodFVJSW5wdXRJY29uIiksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChoKSx0aGlzLnVwZGF0ZSgpfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuaXNCdWlsdCgpKXt2YXIgZD1uUC5n''@;'; put 'put ''ZXQodGhpcykuaW5wdXQ7ZC50eXBlPXRoaXMub3B0aW9ucy50eXBlLGQucGxhY2Vob2xkZXI9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlciksZC52YWx1ZT10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLnZhbHVlKX19fSx7a2V5''@;'; put 'put ''OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQnVpbHQoKSYmblAuZ2V0KHRoaXMpLmlucHV0LmZvY3VzKCl9fSx7a2V5OiJvbkNsaWNrIix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6Im9uS2V5dXAiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMub3B0aW9ucy52YWx1ZT1kLnRhcmdl''@;'; put 'put ''dC52YWx1ZX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBlMCh7cGxhY2Vob2xkZXI6IiIsdHlwZToidGV4dCIsdGFnTmFtZToiaW5wdXQifSl9fV0pLGF9KFk0KTtjb25zdCBDeT1mZ3Q7ZnVuY3Rpb24gU3kobCl7cmV0dXJuKFN5PSJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBl''@;'; put 'put ''PyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gczRlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobCxwZ3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBwZ3QobCl7dmFyIGM9ZnVuY3Rpb24gbWd0KGwsYyl7aWYoIm9iamVjdCIhPT1TeShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2Fs''@;'; put 'put ''bChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1TeShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIp''@;'; put 'put ''O3JldHVybiJzeW1ib2wiPT09U3koYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gTXkoKXtyZXR1cm4gTXk9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIGdndChsLGMpe2Zvcig7IU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9VzQobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYp''@;'; put 'put ''OmgudmFsdWV9fSxNeS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga3EobCxjKXtyZXR1cm4oa3E9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlv''@;'; put 'put ''biB1NGUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIFc0KGwpe3JldHVybihXND1PYmplY3Quc2V0UHJvdG90eXBlT2Y/''@;'; put 'put ''T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciByUD1uZXcgV2Vha01hcCx3Z3Q9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHZndChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVv''@;'; put 'put ''ZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZrcShsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHlndChsKXt2YXIgYz1mdW5jdGlvbiBfZ3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0''@;'; put 'put ''cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1j''@;'; put 'put ''YXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1XNChsKTtpZihjKXt2YXIgaD1XNCh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''Ymd0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09U3koYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJu''@;'; put 'put ''IHU0ZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZixkKXt2YXIgaDtyZXR1cm4gZnVuY3Rpb24gZGd0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksaD1jLmNhbGwo''@;'; put 'put ''dGhpcyxmLHJ1KGEuREVGQVVMVFMsZCkpLHJQLnNldCh1NGUoaCkse30pLGgubWVudT1udWxsLGguaXRlbXM9W10saC5yZWdpc3Rlckhvb2tzKCksaH1yZXR1cm4gZnVuY3Rpb24gaGd0KGwsYyxhKXtjJiZzNGUobC5wcm90b3R5cGUsYyksYSYmczRlKGwsYSksT2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmFkZExvY2FsSG9vaygiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25DbGljaygpfSl9fSx7a2V5OiJzZXRJdGVtcyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oZCl7dGhpcy5pdGVtcz10aGlzLnRyYW5zbGF0ZU5hbWVzKGQpLHRoaXMubWVudSYmdGhpcy5tZW51LnNldE1lbnVJdGVtcyh0aGlzLml0ZW1zKX19LHtrZXk6InRyYW5zbGF0ZU5hbWVzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO3JldHVybiBSbihkLGZ1bmN0''@;'; put 'put ''aW9uKG0pe20ubmFtZT1oLnRyYW5zbGF0ZUlmUG9zc2libGUobS5uYW1lKX0pLGR9fSx7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO015KFc0KGEucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksdGhpcy5tZW51PW5ldyBxSyh0aGlzLmhvdCx7Y2xh''@;'; put 'put ''c3NOYW1lOiJodFNlbGVjdFVJIGh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IixrZWVwSW5WaWV3cG9ydDohMSxzdGFuZGFsb25lOiEwLGNvbnRhaW5lcjp0aGlzLm9wdGlvbnMubWVudUNvbnRhaW5lcn0pLHRoaXMubWVudS5zZXRNZW51SXRlbXModGhpcy5pdGVtcyk7dmFyIGg9bmV3IFk0KHRo''@;'; put 'put ''aXMuaG90LHtjbGFzc05hbWU6Imh0VUlTZWxlY3RDYXB0aW9uIn0pLG09bmV3IFk0KHRoaXMuaG90LHtjbGFzc05hbWU6Imh0VUlTZWxlY3REcm9wZG93biJ9KSxfPXJQLmdldCh0aGlzKTtfLmNhcHRpb249aCxfLmNhcHRpb25FbGVtZW50PWguZWxlbWVudCxfLmRyb3Bkb3duPW0sUm4oW2gs''@;'; put 'put ''bV0sZnVuY3Rpb24oTyl7cmV0dXJuIGQuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoTy5lbGVtZW50KX0pLHRoaXMubWVudS5hZGRMb2NhbEhvb2soInNlbGVjdCIsZnVuY3Rpb24oTyl7cmV0dXJuIGQub25NZW51U2VsZWN0KE8pfSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1lbnVDbG9zZWQoKX0pLHRoaXMudXBkYXRlKCl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ7dGhpcy5pc0J1aWx0KCkmJihkPXRoaXMub3B0aW9ucy52YWx1ZT90aGlzLm9wdGlvbnMudmFsdWUubmFtZTp0aGlzLm1lbnUuaG90''@;'; put 'put ''LmdldFRyYW5zbGF0ZWRQaHJhc2UocVIpLHJQLmdldCh0aGlzKS5jYXB0aW9uRWxlbWVudC50ZXh0Q29udGVudD1kLE15KFc0KGEucHJvdG90eXBlKSwidXBkYXRlIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6Im9wZW5PcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZWxl''@;'; put 'put ''bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLm1lbnUmJih0aGlzLm1lbnUub3BlbigpLHRoaXMubWVudS5zZXRQb3NpdGlvbih7bGVmdDp0aGlzLmhvdC5pc0x0cigpP2QubGVmdC01OmQubGVmdC0zMSx0b3A6ZC50b3AtMSx3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodH0p''@;'; put 'put ''KX19LHtrZXk6ImNsb3NlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1lbnUmJnRoaXMubWVudS5jbG9zZSgpfX0se2tleToib25NZW51U2VsZWN0Iix2YWx1ZTpmdW5jdGlvbihkKXtkLm5hbWUhPT1iYSYmKHRoaXMub3B0aW9ucy52YWx1ZT1kLHRoaXMudXBkYXRlKCksdGhpcy5y''@;'; put 'put ''dW5Mb2NhbEhvb2tzKCJzZWxlY3QiLHRoaXMub3B0aW9ucy52YWx1ZSkpfX0se2tleToib25NZW51Q2xvc2VkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJDbG9zZSIpfX0se2tleToib25DbGljayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5PcHRpb25z''@;'; put 'put ''KCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpO3ZhciBkPXJQLmdldCh0aGlzKSxoPWQuY2FwdGlvbixtPWQuZHJvcGRvd247aCYmaC5kZXN0cm95KCksbSYmbS5kZXN0cm95KCksTXkoVzQo''@;'; put 'put ''YS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJERUZBVUxUUyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUwKHtjbGFzc05hbWU6Imh0VUlTZWxlY3QiLHdyYXBJdDohMX0pfX1dKSxhfShZNCk7Y29uc3QgYzRlPXdndDtmdW5jdGlvbiBreShsKXtyZXR1''@;'; put 'put ''cm4oa3k9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJv''@;'; put 'put ''bCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBmNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYm''@;'; put 'put ''KGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLE1ndChmLmtleSksZil9fWZ1bmN0aW9uIE1ndChsKXt2YXIgYz1mdW5jdGlvbiBrZ3QobCxjKXtpZigib2JqZWN0IiE9PWt5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYo''@;'; put 'put ''dm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWt5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6''@;'; put 'put ''TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1reShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBpUCgpe3JldHVybiBpUD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24g''@;'; put 'put ''RWd0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1FeShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwo''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LGlQLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBFcShsLGMpe3JldHVybihFcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJv''@;'; put 'put ''dG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEV5KGwpe3JldHVybihFeT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBJZ3Q9ZnVu''@;'; put 'put ''Y3Rpb24obCl7IWZ1bmN0aW9uIHhndChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYm''@;'; put 'put ''Yy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZFcShsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIEFndChsKXt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBEZ3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwo''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1FeShsKTtpZihjKXt2YXIgaD1FeSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgp''@;'; put 'put ''fWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gVGd0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09a3koYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0''@;'; put 'put ''b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIE9ndChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7''@;'; put 'put ''cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBDZ3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoaD1j''@;'; put 'put ''LmNhbGwodGhpcyxmLHtpZDpkLmlkLHN0YXRlbGVzczohMX0pKS5uYW1lPWQubmFtZSxoLmFkZFNlcGFyYXRvcj1kLmFkZFNlcGFyYXRvcixoLmVsZW1lbnRzLnB1c2gobmV3IGM0ZShoLmhvdCx7bWVudUNvbnRhaW5lcjpkLm1lbnVDb250YWluZXJ9KSksaC5lbGVtZW50cy5wdXNoKG5ldyBD''@;'; put 'put ''eShoLmhvdCx7cGxhY2Vob2xkZXI6RSR9KSksaC5lbGVtZW50cy5wdXNoKG5ldyBDeShoLmhvdCx7cGxhY2Vob2xkZXI6eCR9KSksaC5yZWdpc3Rlckhvb2tzKCksaH1yZXR1cm4gZnVuY3Rpb24gU2d0KGwsYyxhKXtjJiZmNGUobC5wcm90b3R5cGUsYyksYSYmZjRlKGwsYSksT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soInNlbGVjdCIsZnVuY3Rpb24oaCl7cmV0dXJuIGQub25D''@;'; put 'put ''b25kaXRpb25TZWxlY3QoaCl9KSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25TZWxlY3RVSUNsb3NlZCgpfSksUm4odGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksZnVuY3Rpb24oaCl7aC5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImtleWRvd24iLGZ1bmN0aW9uKG0pe3JldHVybiBkLm9uSW5wdXRLZXlEb3duKG0pfSl9KX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO2lmKHRoaXMucmVzZXQoKSxkKXt2YXIgbT1lMChkLmNvbW1hbmQpO20ubmFtZS5zdGFydHNXaXRoKGtzKSYmKG0u''@;'; put 'put ''bmFtZT10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKG0ubmFtZSkpLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKG0pLFJuKGQuYXJncyxmdW5jdGlvbihfLE8pe2lmKE8+bS5pbnB1dHNDb3VudC0xKXJldHVybiExO3ZhciBYPWguZ2V0SW5wdXRFbGVtZW50KE8pO1guc2V0''@;'; put 'put ''VmFsdWUoXyksWFttLmlucHV0c0NvdW50Pk8/InNob3ciOiJoaWRlIl0oKSxPfHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIFguZm9jdXMoKX0sMTApfSl9fX0se2tleToiZ2V0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5nZXRTZWxlY3RFbGVtZW50KCkuZ2V0VmFs''@;'; put 'put ''dWUoKXx8ZTYoZWMpLGg9W107cmV0dXJuIFJuKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKG0sXyl7ZC5pbnB1dHNDb3VudD5fJiZoLnB1c2gobS5nZXRWYWx1ZSgpKX0pLHtjb21tYW5kOmQsYXJnczpofX19LHtrZXk6InVwZGF0ZVN0YXRlIix2YWx1ZTpmdW5jdGlvbihkLGgp''@;'; put 'put ''e3ZhciBtPWU2KGQ/ZC5uYW1lOmVjKTt0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChoLHtjb21tYW5kOm0sYXJnczpkP2QuYXJnczpbXX0pLGR8fFJuKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKF8pe3JldHVybiBfLnNldFZhbHVlKG51bGwpfSl9fSx7a2V5OiJnZXRTZWxl''@;'; put 'put ''Y3RFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZCBpbnN0YW5jZW9mIGM0ZX0pWzBdfX0se2tleToiZ2V0SW5wdXRFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPWFyZ3VtZW50cy5sZW5ndGg+MCYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudHMoKVtkXX19LHtrZXk6ImdldElucHV0RWxlbWVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBkIGlu''@;'; put 'put ''c3RhbmNlb2YgQ3l9KX19LHtrZXk6ImdldE1lbnVJdGVtRGVzY3JpcHRvciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3JldHVybntrZXk6dGhpcy5pZCxuYW1lOnRoaXMubmFtZSxpc0NvbW1hbmQ6ITEsZGlzYWJsZVNlbGVjdGlvbjohMCxoaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''ZC5pc0hpZGRlbigpfSxyZW5kZXJlcjpmdW5jdGlvbihtLF8sTyxYLGFlLHBlKXtnaShfLnBhcmVudE5vZGUsImh0RmlsdGVyc01lbnVDb25kaXRpb24iKSxkLmFkZFNlcGFyYXRvciYmZ2koXy5wYXJlbnROb2RlLCJib3JkZXIiKTt2YXIgYmU9ZC5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVs''@;'; put 'put ''ZW1lbnQoImRpdiIpO3JldHVybiBnaShiZSwiaHRGaWx0ZXJzTWVudUxhYmVsIiksYmUudGV4dENvbnRlbnQ9cGUsXy5hcHBlbmRDaGlsZChiZSksXy5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8Um4oZC5lbGVtZW50cyxmdW5jdGlvbih4ZSl7cmV0dXJuIF8uYXBw''@;'; put 'put ''ZW5kQ2hpbGQoeGUuZWxlbWVudCl9KSxffX19fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRQbHVnaW4oImZpbHRlcnMiKS5nZXRTZWxlY3RlZENvbHVtbigpLGg9W2U2KGVjKV07aWYobnVsbCE9PWQpe3ZhciBtPWQudmlzdWFsSW5kZXg7aD1mdW5j''@;'; put 'put ''dGlvbiBYbXQobCl7dmFyIGM9W10sYT1sO3JldHVybiBuNGVbYV18fChhPSJ0ZXh0IiksUm4objRlW2FdLGZ1bmN0aW9uKGYpe3ZhciBkO2Q9Zj09PWJhP3tuYW1lOmJhfTplMChlNihmKSksYy5wdXNoKGQpfSksY30odGhpcy5ob3QuZ2V0RGF0YVR5cGUoMCxtLHRoaXMuaG90LmNvdW50Um93''@;'; put 'put ''cygpLG0pKX1Sbih0aGlzLmdldElucHV0RWxlbWVudHMoKSxmdW5jdGlvbihfKXtyZXR1cm4gXy5oaWRlKCl9KSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5zZXRJdGVtcyhoKSxpUChFeShhLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuZ2V0U2VsZWN0RWxlbWVu''@;'; put 'put ''dCgpLnNldFZhbHVlKGhbMF0pfX0se2tleToib25Db25kaXRpb25TZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKGQpe1JuKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLGZ1bmN0aW9uKGgsbSl7aFtkLmlucHV0c0NvdW50Pm0/InNob3ciOiJoaWRlIl0oKSwwPT09bSYmc2V0VGltZW91dChmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBoLmZvY3VzKCl9LDEwKX0pLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixkKX19LHtrZXk6Im9uU2VsZWN0VUlDbG9zZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckNsb3NlIil9fSx7a2V5OiJvbklucHV0S2V5RG93biIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oZCl7ajcoZC5rZXlDb2RlLCJFTlRFUiIpPyh0aGlzLnJ1bkxvY2FsSG9va3MoImFjY2VwdCIpLEhkKGQpKTpqNyhkLmtleUNvZGUsIkVTQ0FQRSIpJiYodGhpcy5ydW5Mb2NhbEhvb2tzKCJjYW5jZWwiKSxIZChkKSl9fV0pLGF9KFhMKTtjb25zdCB4cT1JZ3Q7dmFyIG9FPXt9''@;'; put 'put ''O2Z1bmN0aW9uIExndChsKXtyZXR1cm4gb0VbbF0ubmFtZX1mdW5jdGlvbiBBcShsLGMsYSl7b0VbbF09e25hbWU6YyxmdW5jOmF9fXZhciBHND0iY29uanVuY3Rpb24iO0FxKEc0LF8kLGZ1bmN0aW9uIEZndChsLGMpe3JldHVybiBsLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVybiBhLmZ1bmMo''@;'; put 'put ''Yyl9KX0pO3ZhciBvUD0iZGlzanVuY3Rpb24iO0FxKG9QLFhSLGZ1bmN0aW9uIE5ndChsLGMpe3JldHVybiBsLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZnVuYyhjKX0pfSk7dmFyIFRxPSJkaXNqdW5jdGlvbldpdGhFeHRyYUNvbmRpdGlvbiI7ZnVuY3Rpb24geHkobCl7cmV0dXJuKHh5''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMh''@;'; put 'put ''PT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gZDRlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndy''@;'; put 'put ''aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxVZ3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBVZ3QobCl7dmFyIGM9ZnVuY3Rpb24gWmd0KGwsYyl7aWYoIm9iamVjdCIhPT14eShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQg''@;'; put 'put ''MCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT14eShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJl''@;'; put 'put ''cikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09eHkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gYVAoKXtyZXR1cm4gYVA9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIFlndChs''@;'; put 'put ''LGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9QXkobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxhUC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gT3EobCxjKXtyZXR1cm4oT3E9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189''@;'; put 'put ''ZCxmfSkobCxjKX1mdW5jdGlvbiBoNGUobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIEF5KGwpe3JldHVybihBeT1PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfUFxKFRxLFhSLGZ1bmN0aW9uIEJndChsLGMpe2lmKGwubGVuZ3RoPDMpdGhyb3cgRXJyb3IoIk9w''@;'; put 'put ''ZXJhdGlvbiBkb2Vzbid0IHdvcmsgb24gbGVzcyB0aGVuIHRocmVlIGNvbmRpdGlvbnMuIik7cmV0dXJuIGwuc2xpY2UoMCxsLmxlbmd0aC0xKS5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBhLmZ1bmMoYyl9KSYmbFtsLmxlbmd0aC0xXS5mdW5jKGMpfSk7dmFyIGxQPW5ldyBXZWFrTWFwLHFn''@;'; put 'put ''dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gV2d0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0''@;'; put 'put ''ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJk9xKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gR2d0KGwpe3ZhciBj''@;'; put 'put ''PWZ1bmN0aW9uIEtndCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2Yu''@;'; put 'put ''Y2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUF5KGwpO2lmKGMpe3ZhciBoPUF5KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVu''@;'; put 'put ''dHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiAkZ3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT14eShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25z''@;'; put 'put ''dHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gaDRlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBqZ3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxoPWMuY2FsbCh0aGlzLGYscnUoYS5ERUZBVUxUUyxkKSksbFAuc2V0KGg0ZShoKSx7fSksaH1yZXR1cm4gZnVuY3Rpb24gemd0KGwsYyxhKXtjJiZkNGUobC5wcm90b3R5cGUsYyksYSYmZDRlKGwsYSksT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe2FQKEF5KGEucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIGQ9bFAuZ2V0KHRoaXMpO2QuaW5wdXQ9dGhpcy5fZWxlbWVudC5m''@;'; put 'put ''aXJzdENoaWxkO3ZhciBoPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO2gudGV4dENvbnRlbnQ9dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKHRoaXMub3B0aW9ucy5sYWJlbC50ZXh0Q29udGVudCksaC5odG1sRm9yPXRoaXMudHJhbnNsYXRlSWZQb3NzaWJs''@;'; put 'put ''ZSh0aGlzLm9wdGlvbnMubGFiZWwuaHRtbEZvciksZC5sYWJlbD1oLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoaCksdGhpcy51cGRhdGUoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQnVpbHQoKSl7dmFyIGQ9bFAuZ2V0KHRoaXMpO2QuaW5wdXQuY2hl''@;'; put 'put ''Y2tlZD10aGlzLm9wdGlvbnMuY2hlY2tlZCxkLmxhYmVsLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMubGFiZWwudGV4dENvbnRlbnQpfX19LHtrZXk6ImlzQ2hlY2tlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmNoZWNr''@;'; put 'put ''ZWR9fSx7a2V5OiJzZXRDaGVja2VkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5jaGVja2VkPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdGhpcy51cGRhdGUoKX19LHtrZXk6ImZvY3VzIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuaXNCdWlsdCgpJiZsUC5nZXQodGhpcykuaW5wdXQuZm9jdXMoKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBlMCh7dHlwZToicmFkaW8iLHRhZ05hbWU6ImlucHV0IixjbGFzc05hbWU6Imh0VUlSYWRpbyIsbGFiZWw6e319KX19XSksYX0oWTQpO2Nv''@;'; put 'put ''bnN0IHA0ZT1xZ3Q7ZnVuY3Rpb24gVHkobCl7cmV0dXJuKFR5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIG00ZTtmdW5jdGlvbiBnNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJh''@;'; put 'put ''YmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGU1dChmLmtleSksZil9fWZ1bmN0aW9uIGU1dChsKXt2YXIgYz1mdW5jdGlvbiB0NXQobCxjKXtpZigib2JqZWN0IiE9PVR5KGwpfHxudWxsPT09bCly''@;'; put 'put ''ZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVR5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRp''@;'; put 'put ''dmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1UeShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBEcShsLGMpe3JldHVybihEcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlw''@;'; put 'put ''ZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIHNQKGwpe3JldHVybihzUD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9i''@;'; put 'put ''amVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBsNXQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIG41dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm''@;'; put 'put ''dW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZEcShsLGMp''@;'; put 'put ''fShhLGwpO3ZhciBjPWZ1bmN0aW9uIHI1dChsKXt2YXIgYz1mdW5jdGlvbiBhNXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5''@;'; put 'put ''e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1zUChsKTtpZihjKXt2YXIgaD1zUCh0aGlzKS5jb25zdHJ1''@;'; put 'put ''Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gaTV0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09VHkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1j''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIG81dChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0''@;'; put 'put ''aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBKZ3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs''@;'; put 'put ''bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoaD1jLmNhbGwodGhpcyxmLHtpZDpkLmlkLHN0YXRlbGVzczohMX0pKS5uYW1lPWQubmFtZSxoLmJ1aWxkT3BlcmF0b3JzRWxlbWVudCgpLGh9cmV0dXJuIGZ1bmN0aW9uIFFndChsLGMsYSl7YyYmZzRlKGwucHJvdG90eXBlLGMp''@;'; put 'put ''LGEmJmc0ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21t''@;'; put 'put ''YW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIGQuaXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24obSxfKXtyZXR1cm4gZ2koXy5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51T3BlcmF0b3JzIiksXy5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgi''@;'; put 'put ''Z2hvc3QtdGFibGUiKXx8Um4oZC5lbGVtZW50cyxmdW5jdGlvbihPKXtyZXR1cm4gXy5hcHBlbmRDaGlsZChPLmVsZW1lbnQpfSksX319fX0se2tleToiYnVpbGRPcGVyYXRvcnNFbGVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD1bRzQsb1BdO1JuKGgsZnVuY3Rpb24obSl7''@;'; put 'put ''dmFyIF89bmV3IHA0ZShkLmhvdCx7bmFtZToib3BlcmF0b3IiLGxhYmVsOntodG1sRm9yOm0sdGV4dENvbnRlbnQ6TGd0KG0pfSx2YWx1ZTptLGNoZWNrZWQ6bT09PWhbMF0saWQ6bX0pO18uYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKE8pe3JldHVybiBkLm9uUmFkaW9JbnB1dENo''@;'; put 'put ''YW5nZShPKX0pLGQuZWxlbWVudHMucHVzaChfKX0pfX0se2tleToic2V0Q2hlY2tlZCIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYodGhpcy5lbGVtZW50cy5sZW5ndGg8ZCl0aHJvdyBFcnJvcihPbChtNGV8fChtNGU9ZnVuY3Rpb24gWGd0KGwsYyl7cmV0dXJuIGN8fChjPWwuc2xpY2UoMCkpLE9i''@;'; put 'put ''amVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWyJSYWRpbyBidXR0b24gd2l0aCBpbmRleCAiLCIgZG9lc24ndCBleGlzdC4iXSkpLGQpKTtSbih0aGlzLmVsZW1lbnRzLGZ1bmN0aW9uKGgsbSl7aC5zZXRDaGVj''@;'; put 'put ''a2VkKG09PT1kKX0pfX0se2tleToiZ2V0QWN0aXZlT3BlcmF0aW9uSWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5lbGVtZW50cy5maW5kKGZ1bmN0aW9uKGgpe3JldHVybiBoIGluc3RhbmNlb2YgcDRlJiZoLmlzQ2hlY2tlZCgpfSk7cmV0dXJuIGQ/ZC5nZXRWYWx1ZSgpOkc0fX0s''@;'; put 'put ''e2tleToiZ2V0U3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3BlcmF0aW9uSWQoKX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLnJlc2V0KCksZCYmdGhpcy5nZXRBY3RpdmVPcGVyYXRpb25JZCgpIT09ZCYmUm4odGhpcy5lbGVt''@;'; put 'put ''ZW50cyxmdW5jdGlvbihoKXtoLnNldENoZWNrZWQoaC5nZXRWYWx1ZSgpPT09ZCl9KX19LHtrZXk6InVwZGF0ZVN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBtPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpHNDttPT09VHEmJihtPW9Q''@;'; put 'put ''KSx0aGlzLnN0YXRlLnNldFZhbHVlQXRJbmRleChhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxtKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0Q2hlY2tlZCgwKX19LHtrZXk6Im9uUmFkaW9JbnB1dENoYW5nZSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''ZCl7dGhpcy5zZXRTdGF0ZShkLnRhcmdldC52YWx1ZSl9fV0pLGF9KFhMKTtjb25zdCBzNXQ9bDV0O2Z1bmN0aW9uIGM1dChsLGMpe3ZhciBhPWw7cmV0dXJuIiI9PT1hJiYoYT0iKCIuY29uY2F0KGMsIikiKSksYX1WY2UoKTt2YXIgSXE9bmV3IFNldChbMV0pLmhhcygxKSxmNXQ9SXEmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBBcnJheS5mcm9tO2Z1bmN0aW9uIGFFKGwpe3ZhciBjPWw7cmV0dXJuIElxJiYoYz1uZXcgU2V0KGMpKSxmdW5jdGlvbihhKXtyZXR1cm4gSXE/Yy5oYXMoYSk6ISF+Yy5pbmRleE9mKGEpfX1mdW5jdGlvbiB5NGUobCl7cmV0dXJuIGw/PyIifWZ1bmN0aW9uIFJx''@;'; put 'put ''KGwpe3ZhciBjPWw7cmV0dXJuKGM9ZjV0P0FycmF5LmZyb20obmV3IFNldChjKSk6YVkoYykpLnNvcnQoZnVuY3Rpb24oYSxmKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgZj9hLWY6YT09PWY/MDphPmY/MTotMX0pfWZ1bmN0aW9uIGI0ZShsLGMsYSxmKXt2''@;'; put 'put ''YXIgbSxkPVtdLGg9bD09PWM7cmV0dXJuIGh8fChtPWFFKGMpKSxSbihsLGZ1bmN0aW9uKF8pe3ZhciBPPSExOyhofHxtKF8pKSYmKE89ITApO3ZhciBYPXtjaGVja2VkOk8sdmFsdWU6Xyx2aXN1YWxWYWx1ZTpjNXQoXyxhKX07ZiYmZihYKSxkLnB1c2goWCl9KSxkfWZ1bmN0aW9uIE95KGwp''@;'; put 'put ''e3JldHVybihPeT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIF80ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwscDV0KGYua2V5KSxmKX19ZnVuY3Rpb24gcDV0KGwpe3ZhciBjPWZ1bmN0aW9uIG01dChsLGMpe2lmKCJvYmplY3QiIT09T3kobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZl''@;'; put 'put ''XTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09T3koZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0''@;'; put 'put ''cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU95KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHVQKCl7cmV0dXJuIHVQPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5j''@;'; put 'put ''dGlvbiBnNXQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPUR5KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQu''@;'; put 'put ''Y2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sdVAuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIExxKGwsYyl7cmV0dXJuKExxPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYu''@;'; put 'put ''X19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gdzRlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBEeShsKXtyZXR1''@;'; put 'put ''cm4oRHk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX1UKDQ5Mjk1KTt2YXIgUHE9bmV3IFdlYWtNYXAsdzV0PWZ1bmN0aW9uKGwpeyFm''@;'; put 'put ''dW5jdGlvbiB2NXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBl''@;'; put 'put ''LHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmTHEobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiB5NXQobCl7dmFyIGM9ZnVuY3Rpb24gXzV0KCl7''@;'; put 'put ''aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9RHkobCk7aWYoYyl7dmFyIGg9RHkodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGI1dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PU95KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25s''@;'; put 'put ''eSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB3NGUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYsZCl7dmFyIGg7cmV0dXJuIGZ1bmN0aW9uIGQ1dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh''@;'; put 'put ''c3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGg9Yy5jYWxsKHRoaXMsZixydShhLkRFRkFVTFRTLGQpKSxQcS5zZXQodzRlKGgpLHt9KSxofXJldHVybiBmdW5jdGlvbiBoNXQobCxjLGEpe2MmJl80ZShsLnByb3RvdHlwZSxjKSxhJiZfNGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dVAoRHkoYS5wcm90b3R5cGUpLCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxQcS5nZXQodGhpcykubGluaz10aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGR9fSx7a2V5OiJ1cGRhdGUi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0J1aWx0KCkmJihQcS5nZXQodGhpcykubGluay50ZXh0Q29udGVudD10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLnRleHRDb250ZW50KSl9fV0sW3trZXk6IkRFRkFVTFRTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZTAoe2hy''@;'; put 'put ''ZWY6IiMiLHRhZ05hbWU6ImEifSl9fV0pLGF9KFk0KTtjb25zdCBDNGU9dzV0O2Z1bmN0aW9uIEl5KGwpe3JldHVybihJeT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0''@;'; put 'put ''aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFM0ZShsKXtyZXR1cm4gZnVuY3Rpb24gazV0KGwpe2lmKEFycmF5LmlzQXJy''@;'; put 'put ''YXkobCkpcmV0dXJuIEZxKGwpfShsKXx8ZnVuY3Rpb24gTTV0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIFM1dChsLGMpe2lmKGwpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgbClyZXR1cm4gRnEobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVy''@;'; put 'put ''biBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEZxKGwsYyl9fShsKXx8ZnVuY3Rpb24gQzV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNw''@;'; put 'put ''cmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gRnEobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVu''@;'; put 'put ''Z3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBNNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwi''@;'; put 'put ''dmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEE1dChmLmtleSksZil9fWZ1bmN0aW9uIEE1dChsKXt2YXIgYz1mdW5jdGlvbiBUNXQobCxjKXtpZigib2JqZWN0IiE9PUl5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1By''@;'; put 'put ''aW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUl5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmci''@;'; put 'put ''PT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1JeShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBSeSgpe3JldHVybiBSeT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFy''@;'; put 'put ''IGQ9ZnVuY3Rpb24gTzV0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD0kNChsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0''@;'; put 'put ''P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LFJ5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBIcShsLGMpe3JldHVybihIcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3Jl''@;'; put 'put ''dHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGs0ZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gJDQo''@;'; put 'put ''bCl7cmV0dXJuKCQ0PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIFA1dD1uZXcgV2Vha01hcCxINXQ9ZnVuY3Rpb24obCl7IWZ1''@;'; put 'put ''bmN0aW9uIEQ1dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUs''@;'; put 'put ''e2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZIcShsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIEk1dChsKXt2YXIgYz1mdW5jdGlvbiBMNXQoKXtp''@;'; put 'put ''Zih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25z''@;'; put 'put ''dHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj0kNChsKTtpZihjKXt2YXIgaD0kNCh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gUjV0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09SXkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5''@;'; put 'put ''IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGs0ZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZixkKXt2YXIgaDtyZXR1cm4gZnVuY3Rpb24gRTV0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz''@;'; put 'put ''cyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksaD1jLmNhbGwodGhpcyxmLHJ1KGEuREVGQVVMVFMsZCkpLFA1dC5zZXQoazRlKGgpLHt9KSxoLnNlYXJjaElucHV0PW5ldyBDeShoLmhvdCx7cGxhY2Vob2xkZXI6ayQsY2xhc3NOYW1lOiJodFVJTXVsdGlwbGVTZWxlY3RTZWFyY2gifSksaC5z''@;'; put 'put ''ZWxlY3RBbGxVST1uZXcgQzRlKGguaG90LHt0ZXh0Q29udGVudDp3JCxjbGFzc05hbWU6Imh0VUlTZWxlY3RBbGwifSksaC5jbGVhckFsbFVJPW5ldyBDNGUoaC5ob3Qse3RleHRDb250ZW50OkMkLGNsYXNzTmFtZToiaHRVSUNsZWFyQWxsIn0pLGguaXRlbXM9W10saC5pdGVtc0JveD1udWxs''@;'; put 'put ''LGgucmVnaXN0ZXJIb29rcygpLGh9cmV0dXJuIGZ1bmN0aW9uIHg1dChsLGMsYSl7YyYmTTRlKGwucHJvdG90eXBlLGMpLGEmJk00ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJyZWdpc3Rlckhvb2tzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5zZWFyY2hJbnB1dC5hZGRMb2NhbEhvb2soImtleWRvd24iLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uSW5wdXRLZXlEb3duKGgpfSksdGhpcy5zZWFyY2hJbnB1dC5hZGRMb2NhbEhvb2soImlucHV0IixmdW5jdGlvbihoKXtyZXR1cm4gZC5vbklu''@;'; put 'put ''cHV0KGgpfSksdGhpcy5zZWxlY3RBbGxVSS5hZGRMb2NhbEhvb2soImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gZC5vblNlbGVjdEFsbENsaWNrKGgpfSksdGhpcy5jbGVhckFsbFVJLmFkZExvY2FsSG9vaygiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBkLm9uQ2xlYXJBbGxDbGljayho''@;'; put 'put ''KX0pfX0se2tleToic2V0SXRlbXMiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMuaXRlbXM9ZCx0aGlzLml0ZW1zQm94JiZ0aGlzLml0ZW1zQm94LmxvYWREYXRhKHRoaXMuaXRlbXMpfX0se2tleToic2V0TG9jYWxlIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLmxvY2FsZT1kfX0se2tleToiZ2V0''@;'; put 'put ''TG9jYWxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZX19LHtrZXk6ImdldEl0ZW1zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTNGUodGhpcy5pdGVtcyl9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gVjV0KGwpe3ZhciBj''@;'; put 'put ''PVtdO3JldHVybiBSbihsLGZ1bmN0aW9uKGEpe2EuY2hlY2tlZCYmYy5wdXNoKGEudmFsdWUpfSksY30odGhpcy5pdGVtcyl9fSx7a2V5OiJpc1NlbGVjdGVkQWxsVmFsdWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zLmxlbmd0aD09PXRoaXMuZ2V0VmFsdWUoKS5sZW5n''@;'; put 'put ''dGh9fSx7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO1J5KCQ0KGEucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyk7dmFyIGg9dGhpcy5ob3Qucm9vdERvY3VtZW50LG09aC5jcmVhdGVFbGVtZW50KCJkaXYiKSxfPW5ldyBZNCh0aGlzLmhvdCx7Y2xh''@;'; put 'put ''c3NOYW1lOiJodFVJU2VsZWN0aW9uQ29udHJvbHMiLGNoaWxkcmVuOlt0aGlzLnNlbGVjdEFsbFVJLHRoaXMuY2xlYXJBbGxVSV19KTt0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VhcmNoSW5wdXQuZWxlbWVudCksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChfLmVsZW1lbnQp''@;'; put 'put ''LHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobSk7dmFyIE89ZnVuY3Rpb24oYWUpe2QuX2VsZW1lbnQmJihkLml0ZW1zQm94JiZkLml0ZW1zQm94LmRlc3Ryb3koKSxnaShhZSwiaHRVSU11bHRpcGxlU2VsZWN0SG90IiksZC5pdGVtc0JveD1uZXcgZC5ob3QuY29uc3RydWN0b3IoYWUse2Rh''@;'; put 'put ''dGE6ZC5pdGVtcyxjb2x1bW5zOlt7ZGF0YToiY2hlY2tlZCIsdHlwZToiY2hlY2tib3giLGxhYmVsOntwcm9wZXJ0eToidmlzdWFsVmFsdWUiLHBvc2l0aW9uOiJhZnRlciJ9fV0sYmVmb3JlUmVuZGVyZXI6ZnVuY3Rpb24oVmUsWmUsbHQsZHQsZ3QsanQpe1ZlLnRpdGxlPWp0Lmluc3RhbmNl''@;'; put 'put ''LmdldERhdGFBdFJvd1Byb3AoWmUsanQubGFiZWwucHJvcGVydHkpfSxtYXhDb2xzOjEsYXV0b1dyYXBDb2w6ITAsaGVpZ2h0OjExMCxjb2xXaWR0aHM6ZnVuY3Rpb24oKXtyZXR1cm4gZC5pdGVtc0JveC5jb250YWluZXIuc2Nyb2xsV2lkdGgtTnUoaCl9LGNvcHlQYXN0ZTohMSxkaXNhYmxl''@;'; put 'put ''VmlzdWFsU2VsZWN0aW9uOiJhcmVhIixmaWxsSGFuZGxlOiExLGZyYWdtZW50U2VsZWN0aW9uOiJjZWxsIix0YWJNb3Zlczp7cm93OjEsY29sOjB9LGxheW91dERpcmVjdGlvbjpkLmhvdC5pc1J0bCgpPyJydGwiOiJsdHIifSksZC5pdGVtc0JveC5pbml0KCksZC5pdGVtc0JveC5nZXRTaG9y''@;'; put 'put ''dGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXQoe2tleXM6W1siRXNjYXBlIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKFZlKXtkLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLFZlLGQpfSxncm91cDoibXVsdGlwbGVTZWxlY3QuaXRlbUJveCJ9KSl9O08obSksc2V0VGlt''@;'; put 'put ''ZW91dChmdW5jdGlvbigpe3JldHVybiBPKG0pfSwxMDApfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpLHRoaXMuc2VsZWN0QWxsVUkucmVzZXQoKSx0aGlzLmNsZWFyQWxsVUkucmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLmlzQnVpbHQoKSYmKHRoaXMuaXRlbXNCb3gubG9hZERhdGEoZnVuY3Rpb24gTjV0KGwsYyl7dmFyIGE9YUUoYyk7cmV0dXJuIGhhKGwsZnVuY3Rpb24oZil7cmV0dXJuIGYuY2hlY2tlZD1hKGYudmFsdWUpLGZ9KX0odGhpcy5pdGVtcyx0aGlzLm9wdGlvbnMudmFsdWUp''@;'; put 'put ''KSxSeSgkNChhLnByb3RvdHlwZSksInVwZGF0ZSIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXRlbXNCb3gmJnRoaXMuaXRlbXNCb3guZGVzdHJveSgpLHRoaXMuc2VhcmNoSW5wdXQuZGVzdHJveSgpLHRoaXMuY2xlYXJBbGxVSS5k''@;'; put 'put ''ZXN0cm95KCksdGhpcy5zZWxlY3RBbGxVSS5kZXN0cm95KCksdGhpcy5zZWFyY2hJbnB1dD1udWxsLHRoaXMuY2xlYXJBbGxVST1udWxsLHRoaXMuc2VsZWN0QWxsVUk9bnVsbCx0aGlzLml0ZW1zQm94PW51bGwsdGhpcy5pdGVtcz1udWxsLFJ5KCQ0KGEucHJvdG90eXBlKSwiZGVzdHJveSIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9uSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBfLGg9dGhpcyxtPWQudGFyZ2V0LnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZ2V0TG9jYWxlKCkpO189IiI9PT1tP1M0ZSh0aGlzLml0ZW1zKTpEMSh0aGlzLml0ZW1zLGZ1bmN0aW9u''@;'; put 'put ''KE8pe3JldHVybiIiLmNvbmNhdChPLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZShoLmdldExvY2FsZSgpKS5pbmRleE9mKG0pPj0wfSksdGhpcy5pdGVtc0JveC5sb2FkRGF0YShfKX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLnJ1bkxvY2FsSG9va3Mo''@;'; put 'put ''ImtleWRvd24iLGQsdGhpcyksT1koajcsZC5rZXlDb2RlKSgiQVJST1dfRE9XTnxUQUIiKSYmIXRoaXMuaXRlbXNCb3guaXNMaXN0ZW5pbmcoKSYmKEhkKGQpLHRoaXMuaXRlbXNCb3gubGlzdGVuKCksdGhpcy5pdGVtc0JveC5zZWxlY3RDZWxsKDAsMCkpfX0se2tleToib25TZWxlY3RBbGxD''@;'; put 'put ''bGljayIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9W107ZC5wcmV2ZW50RGVmYXVsdCgpLFJuKHRoaXMuaXRlbXNCb3guZ2V0U291cmNlRGF0YSgpLGZ1bmN0aW9uKG0sXyl7bS5jaGVja2VkPSEwLGgucHVzaChWVyhtLF8pWzBdKX0pLHRoaXMuaXRlbXNCb3guc2V0U291cmNlRGF0YUF0Q2Vs''@;'; put 'put ''bChoKX19LHtrZXk6Im9uQ2xlYXJBbGxDbGljayIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9W107ZC5wcmV2ZW50RGVmYXVsdCgpLFJuKHRoaXMuaXRlbXNCb3guZ2V0U291cmNlRGF0YSgpLGZ1bmN0aW9uKG0sXyl7bS5jaGVja2VkPSExLGgucHVzaChWVyhtLF8pWzBdKX0pLHRoaXMuaXRl''@;'; put 'put ''bXNCb3guc2V0U291cmNlRGF0YUF0Q2VsbChoKX19XSxbe2tleToiREVGQVVMVFMiLGdldDpmdW5jdGlvbigpe3JldHVybiBlMCh7Y2xhc3NOYW1lOiJodFVJTXVsdGlwbGVTZWxlY3QiLHZhbHVlOltdfSl9fV0pLGF9KFk0KTtjb25zdCBFNGU9SDV0O2Z1bmN0aW9uIHg0ZShsLGMpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbiBVNXQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIHo1dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxo''@;'; put 'put ''LG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7''@;'; put 'put ''WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gajV0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBs''@;'; put 'put ''KXJldHVybiBBNGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwp''@;'; put 'put ''O2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIEE0ZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gQjV0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5v''@;'; put 'put ''bi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBBNGUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtm''@;'; put 'put ''b3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn12YXIgdDY9ImJ5X3ZhbHVlIjtmdW5jdGlvbiBMeShsKXtyZXR1cm4oTHk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24o''@;'; put 'put ''Yyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBUNGUobCxjKXsobnVsbD09Y3x8''@;'; put 'put ''Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBPNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwh''@;'; put 'put ''MSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEo1dChmLmtleSksZil9fWZ1bmN0aW9uIEo1dChsKXt2YXIgYz1mdW5jdGlvbiBRNXQobCxjKXtpZigib2JqZWN0IiE9PUx5KGwpfHxudWxsPT09bClyZXR1cm4g''@;'; put 'put ''bDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUx5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFs''@;'; put 'put ''dWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1MeShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBjUCgpe3JldHVybiBjUD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQo''@;'; put 'put ''KTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gZTZ0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1QeShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LGNQLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBOcShsLGMpe3JldHVybihOcT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIFB5KGwpe3JldHVybihQeT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5n''@;'; put 'put ''ZXRQcm90b3R5cGVPZihhKX0pKGwpfW91KHQ2LGZ1bmN0aW9uIFo1dChsLGMpe3JldHVybigwLHg0ZShjLDEpWzBdKShsLnZhbHVlKX0se25hbWU6IkJ5IHZhbHVlIixpbnB1dHNDb3VudDowLGlucHV0VmFsdWVzRGVjb3JhdG9yOmZ1bmN0aW9uKGMpe3JldHVyblthRSh4NGUoYywxKVswXSld''@;'; put 'put ''fSxzaG93T3BlcmF0b3JzOiExfSk7dmFyIGE2dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gdDZ0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u''@;'; put 'put ''Iik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJk5xKGwsYyl9KGEsbCk7''@;'; put 'put ''dmFyIGM9ZnVuY3Rpb24gbjZ0KGwpe3ZhciBjPWZ1bmN0aW9uIG82dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJu''@;'; put 'put ''IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPVB5KGwpO2lmKGMpe3ZhciBoPVB5KHRoaXMpLmNvbnN0cnVjdG9yO2Q9''@;'; put 'put ''UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiByNnQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1MeShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gaTZ0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk''@;'; put 'put ''IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYsZCl7dmFyIGg7cmV0dXJuIGZ1bmN0aW9uIHE1dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh''@;'; put 'put ''c3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChoPWMuY2FsbCh0aGlzLGYse2lkOmQuaWQsc3RhdGVsZXNzOiExfSkpLm5hbWU9ZC5uYW1lLGguZWxlbWVudHMucHVzaChuZXcgRTRlKGguaG90KSksaC5yZWdpc3Rlckhvb2tzKCksaH1yZXR1cm4gZnVuY3Rpb24gWDV0KGwsYyxhKXtjJiZP''@;'; put 'put ''NGUobC5wcm90b3R5cGUsYyksYSYmTzRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgp''@;'; put 'put ''LmFkZExvY2FsSG9vaygia2V5ZG93biIsZnVuY3Rpb24oaCl7cmV0dXJuIGQub25JbnB1dEtleURvd24oaCl9KX19LHtrZXk6InNldFN0YXRlIix2YWx1ZTpmdW5jdGlvbihkKXtpZih0aGlzLnJlc2V0KCksZCYmZC5jb21tYW5kLmtleT09PXQ2KXt2YXIgaD10aGlzLmdldE11bHRpcGxlU2Vs''@;'; put 'put ''ZWN0RWxlbWVudCgpO2guc2V0SXRlbXMoZC5pdGVtc1NuYXBzaG90KSxoLnNldFZhbHVlKGQuYXJnc1swXSksaC5zZXRMb2NhbGUoZC5sb2NhbGUpfX19LHtrZXk6ImdldFN0YXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCksaD1kLmdl''@;'; put 'put ''dEl0ZW1zKCk7cmV0dXJue2NvbW1hbmQ6e2tleTpkLmlzU2VsZWN0ZWRBbGxWYWx1ZXMoKXx8IWgubGVuZ3RoP2VjOnQ2fSxhcmdzOltkLmdldFZhbHVlKCldLGl0ZW1zU25hcHNob3Q6aH19fSx7a2V5OiJ1cGRhdGVTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPWZ1bmN0''@;'; put 'put ''aW9uKE8sWCxhZSxwZSxiZSl7dmFyIFplPWZ1bmN0aW9uIFk1dChsLGMpe3JldHVybiBmdW5jdGlvbiBLNXQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uICQ1dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wu''@;'; put 'put ''aXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYm''@;'; put 'put ''KF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxj''@;'; put 'put ''KXx8ZnVuY3Rpb24gRzV0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBUNGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9y''@;'; put 'put ''Lm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFQ0ZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gVzV0KCl7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oRDEoWCxm''@;'; put 'put ''dW5jdGlvbih5bil7cmV0dXJuIHluLm5hbWU9PT10Nn0pLDEpWzBdLGx0PXt9LGR0PWguaG90LmdldFRyYW5zbGF0ZWRQaHJhc2UoSlIpO2lmKFplKXt2YXIgZ3Q9UnEoaGEocGUoTyxiZSksZnVuY3Rpb24oeW4pe3JldHVybiB5bi52YWx1ZX0pKTthZSYmKFplLmFyZ3NbMF09YWUpO3ZhciBq''@;'; put 'put ''dD1bXSxybj1iNGUoZ3QsWmUuYXJnc1swXSxkdCxmdW5jdGlvbih5bil7eW4uY2hlY2tlZCYmanQucHVzaCh5bi52YWx1ZSl9KTtsdC5sb2NhbGU9aC5ob3QuZ2V0Q2VsbE1ldGEoMCxkLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbikubG9jYWxlLGx0LmFyZ3M9W2p0XSxsdC5jb21tYW5k''@;'; put 'put ''PWU2KHQ2KSxsdC5pdGVtc1NuYXBzaG90PXJufWVsc2UgbHQuYXJncz1bXSxsdC5jb21tYW5kPWU2KGVjKTtoLnN0YXRlLnNldFZhbHVlQXRJbmRleChPLGx0KX07bShkLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbixkLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbmRpdGlvbnMsZC5jb25k''@;'; put 'put ''aXRpb25BcmdzQ2hhbmdlLGQuZmlsdGVyZWRSb3dzRmFjdG9yeSksZC5kZXBlbmRlbnRDb25kaXRpb25TdGFja3MubGVuZ3RoJiZtKGQuZGVwZW5kZW50Q29uZGl0aW9uU3RhY2tzWzBdLmNvbHVtbixkLmRlcGVuZGVudENvbmRpdGlvblN0YWNrc1swXS5jb25kaXRpb25zLGQuY29uZGl0aW9u''@;'; put 'put ''QXJnc0NoYW5nZSxkLmZpbHRlcmVkUm93c0ZhY3RvcnksZC5lZGl0ZWRDb25kaXRpb25TdGFjayl9fSx7a2V5OiJnZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBkIGluc3RhbmNl''@;'; put 'put ''b2YgRTRlfSlbMF19fSx7a2V5OiJnZXRNZW51SXRlbURlc2NyaXB0b3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztyZXR1cm57a2V5OnRoaXMuaWQsbmFtZTp0aGlzLm5hbWUsaXNDb21tYW5kOiExLGRpc2FibGVTZWxlY3Rpb246ITAsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIGQu''@;'; put 'put ''aXNIaWRkZW4oKX0scmVuZGVyZXI6ZnVuY3Rpb24obSxfLE8sWCxhZSxwZSl7Z2koXy5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51VmFsdWUiKTt2YXIgYmU9ZC5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBnaShiZSwiaHRGaWx0ZXJzTWVudUxhYmVsIiks''@;'; put 'put ''YmUudGV4dENvbnRlbnQ9cGUsXy5hcHBlbmRDaGlsZChiZSksXy5wYXJlbnROb2RlLmhhc0F0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiKXx8Um4oZC5lbGVtZW50cyxmdW5jdGlvbih4ZSl7cmV0dXJuIF8uYXBwZW5kQ2hpbGQoeGUuZWxlbWVudCl9KSxffX19fSx7a2V5OiJyZXNldCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEpSKSxoPVJxKHRoaXMuX2dldENvbHVtblZpc2libGVWYWx1ZXMoKSksbT1iNGUoaCxoLGQpO3RoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCkuc2V0SXRlbXMobSksY1AoUHkoYS5wcm90b3R5cGUpLCJy''@;'; put 'put ''ZXNldCIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKGgpO3ZhciBfPXRoaXMuaG90LmdldFBsdWdpbigiZmlsdGVycyIpLmdldFNlbGVjdGVkQ29sdW1uKCk7bnVsbCE9PV8mJnRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCku''@;'; put 'put ''c2V0TG9jYWxlKHRoaXMuaG90LmdldENlbGxNZXRhKDAsXy52aXN1YWxJbmRleCkubG9jYWxlKX19LHtrZXk6Im9uSW5wdXRLZXlEb3duIix2YWx1ZTpmdW5jdGlvbihkKXtqNyhkLmtleUNvZGUsIkVTQ0FQRSIpJiYodGhpcy5ydW5Mb2NhbEhvb2tzKCJjYW5jZWwiKSxIZChkKSl9fSx7a2V5''@;'; put 'put ''OiJfZ2V0Q29sdW1uVmlzaWJsZVZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRQbHVnaW4oImZpbHRlcnMiKS5nZXRTZWxlY3RlZENvbHVtbigpO3JldHVybiBudWxsPT09ZD9bXTpoYSh0aGlzLmhvdC5nZXREYXRhQXRDb2woZC52aXN1YWxJbmRleCksZnVuY3Rp''@;'; put 'put ''b24oaCl7cmV0dXJuIHk0ZShoKX0pfX1dKSxhfShYTCk7Y29uc3QgbDZ0PWE2dDtmdW5jdGlvbiBGeShsKXtyZXR1cm4oRnk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5j''@;'; put 'put ''dGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBENGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9''@;'; put 'put ''Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGM2dChmLmtleSksZil9fWZ1bmN0aW9uIGM2dChsKXt2YXIgYz1mdW5jdGlvbiBmNnQobCxjKXtpZigi''@;'; put 'put ''b2JqZWN0IiE9PUZ5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUZ5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Qcmlt''@;'; put 'put ''aXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1GeShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBWcShsLGMpe3JldHVybihWcT1PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGZQKGwpe3JldHVybihmUD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciB2NnQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGQ2dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9u''@;'; put 'put ''IG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBl''@;'; put 'put ''Iix7d3JpdGFibGU6ITF9KSxjJiZWcShsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIGg2dChsKXt2YXIgYz1mdW5jdGlvbiBnNnQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1mUChsKTtp''@;'; put 'put ''ZihjKXt2YXIgaD1mUCh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gcDZ0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09RnkoYyl8fCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIG02dChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VF''@;'; put 'put ''cnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiBzNnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoaD1jLmNhbGwodGhpcyxmLHtpZDpkLmlkLHN0YXRlbGVzczohMH0pKS5uYW1lPWQubmFtZSxoLmVsZW1lbnRzLnB1c2gobmV3IEN5KGguaG90LHt0eXBlOiJidXR0b24iLHZhbHVl''@;'; put 'put ''OlMkLGNsYXNzTmFtZToiaHRVSUJ1dHRvbiBodFVJQnV0dG9uT0siLGlkZW50aWZpZXI6YS5CVVRUT05fT0t9KSksaC5lbGVtZW50cy5wdXNoKG5ldyBDeShoLmhvdCx7dHlwZToiYnV0dG9uIix2YWx1ZTpNJCxjbGFzc05hbWU6Imh0VUlCdXR0b24gaHRVSUJ1dHRvbkNhbmNlbCIsaWRlbnRp''@;'; put 'put ''ZmllcjphLkJVVFRPTl9DQU5DRUx9KSksaC5yZWdpc3Rlckhvb2tzKCksaH1yZXR1cm4gZnVuY3Rpb24gdTZ0KGwsYyxhKXtjJiZENGUobC5wcm90b3R5cGUsYyksYSYmRDRlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6''@;'; put 'put ''InJlZ2lzdGVySG9va3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztSbih0aGlzLmVsZW1lbnRzLGZ1bmN0aW9uKGgpe2guYWRkTG9jYWxIb29rKCJjbGljayIsZnVuY3Rpb24obSxfKXtyZXR1cm4gZC5vbkJ1dHRvbkNsaWNrKG0sXyl9KX0pfX0se2tleToiZ2V0TWVudUl0ZW1EZXNj''@;'; put 'put ''cmlwdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxlU2VsZWN0aW9uOiEwLGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiBkLmlzSGlkZGVuKCl9LHJlbmRlcmVyOmZ1bmN0aW9uKG0sXyl7''@;'; put 'put ''cmV0dXJuIGdpKF8ucGFyZW50Tm9kZSwiaHRGaWx0ZXJzTWVudUFjdGlvbkJhciIpLF8ucGFyZW50Tm9kZS5oYXNBdHRyaWJ1dGUoImdob3N0LXRhYmxlIil8fFJuKGQuZWxlbWVudHMsZnVuY3Rpb24oTyl7cmV0dXJuIF8uYXBwZW5kQ2hpbGQoTy5lbGVtZW50KX0pLF99fX19LHtrZXk6ImFj''@;'; put 'put ''Y2VwdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImFjY2VwdCIpfX0se2tleToiY2FuY2VsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIil9fSx7a2V5OiJvbkJ1dHRvbkNsaWNrIix2YWx1ZTpmdW5jdGlvbihkLGgpe2gub3B0aW9u''@;'; put 'put ''cy5pZGVudGlmaWVyPT09YS5CVVRUT05fT0s/dGhpcy5hY2NlcHQoKTp0aGlzLmNhbmNlbCgpfX1dLFt7a2V5OiJCVVRUT05fT0siLGdldDpmdW5jdGlvbigpe3JldHVybiJvayJ9fSx7a2V5OiJCVVRUT05fQ0FOQ0VMIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iY2FuY2VsIn19XSksYX0oWEwp''@;'; put 'put ''O2NvbnN0IHk2dD12NnQ7ZnVuY3Rpb24gbEUobCl7cmV0dXJuKGxFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIEk0ZSxSNGU7ZnVuY3Rpb24gTDRlKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIEM2dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShs''@;'; put 'put ''KXx8ZnVuY3Rpb24gdzZ0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09''@;'; put 'put ''PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1h''@;'; put 'put ''LnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBfNnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIFA0ZShsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu''@;'; put 'put ''Y2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNs''@;'; put 'put ''YW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gUDRlKGwsYyl9fShsLGMpfHxmdW5jdGlvbiBiNnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5v''@;'; put 'put ''bi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFA0ZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVy''@;'; put 'put ''biBmfWZ1bmN0aW9uIEY0ZShsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShjKX19KSl9ZnVuY3Rpb24gSDRlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKysp''@;'; put 'put ''e3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxrNnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBrNnQobCl7dmFyIGM9ZnVuY3Rpb24gRTZ0KGws''@;'; put 'put ''Yyl7aWYoIm9iamVjdCIhPT1sRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1sRShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJA''@;'; put 'put ''QHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09bEUoYyk/YzpTdHJpbmcoYyl9dmFyIE40ZT0iQ29uZGl0aW9uQ29sbGVjdGlvbi5maWx0''@;'; put 'put ''ZXJpbmdTdGF0ZXMiLFY0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7dmFyIGE9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTsoZnVuY3Rpb24gUzZ0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuaG90PWMsdGhpcy5pc01hcFJlZ2lzdHJhYmxlPWEsdGhpcy5maWx0ZXJpbmdTdGF0ZXM9bmV3IHpSLCEwPT09dGhpcy5pc01hcFJlZ2lzdHJhYmxlP3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVy''@;'; put 'put ''LnJlZ2lzdGVyTWFwKE40ZSx0aGlzLmZpbHRlcmluZ1N0YXRlcyk6dGhpcy5maWx0ZXJpbmdTdGF0ZXMuaW5pdCh0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSl9cmV0dXJuIGZ1bmN0aW9uIE02dChsLGMsYSl7YyYmSDRlKGwucHJvdG90eXBlLGMpLGEm''@;'; put 'put ''Jkg0ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJpc0VtcHR5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5nZXRGaWx0ZXJlZENvbHVtbnMoKS5sZW5ndGh9fSx7a2V5OiJpc01hdGNoIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihhLGYpe3ZhciBkLGg9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KGYpLG09bnVsbCE9PShkPWg/LmNvbmRpdGlvbnMpJiZ2b2lkIDAhPT1kP2Q6W10sXz1oPy5vcGVyYXRpb247cmV0dXJuIHRoaXMuaXNNYXRjaEluQ29uZGl0aW9ucyhtLGEsXyl9fSx7a2V5''@;'; put 'put ''OiJpc01hdGNoSW5Db25kaXRpb25zIix2YWx1ZTpmdW5jdGlvbihhLGYpe3JldHVybiFhLmxlbmd0aHx8ZnVuY3Rpb24gUmd0KGwpe2lmKCFvRVtsXSl0aHJvdyBFcnJvcignT3BlcmF0aW9uIHdpdGggaWQgIicuY29uY2F0KGwsJyIgZG9lcyBub3QgZXhpc3QuJykpO3ZhciBjPW9FW2xdLmZ1''@;'; put 'put ''bmM7cmV0dXJuIGZ1bmN0aW9uKGEsZil7cmV0dXJuIGMoYSxmKX19KGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpHNCkoYSxmKX19LHtrZXk6ImFkZENvbmRpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06RzQsaD1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxtPXRoaXMuaG90LmdldENlbGxNZXRhKDAsYSkubG9jYWxlLF89aGEoZi5hcmdzLGZ1bmN0aW9uKHBlKXtyZXR1cm4ic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIHBlP3BlLnRvTG9jYWxlTG93ZXJDYXNlKG0pOnBlfSksTz1mLm5hbWV8fGYuY29tbWFuZC5rZXk7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVBZGQiLGEpO3ZhciBYPXRoaXMuZ2V0T3BlcmF0aW9uKGEpO2lmKFgpe2lmKFghPT1kKXRocm93IEVycm9yKE9sKEk0ZXx8KEk0ZT1GNGUo''@;'; put 'put ''WyJUaGUgY29sdW1uIG9mIGluZGV4ICIsIiBoYXMgYmVlbiBhbHJlYWR5IGFwcGxpZWQgd2l0aCBhIGAiLCJgIFxuICAgICAgICBmaWx0ZXIgb3BlcmF0aW9uLiBVc2UgYHJlbW92ZUNvbmRpdGlvbnNgIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvbmRpdGlvbnMgYW5kIHRoZW4gYWRkIG5ldyBv''@;'; put 'put ''bmVzLiBcbiAgICAgICAgTWluZCB0aGF0IHlvdSBjYW5ub3QgbWl4IGRpZmZlcmVudCB0eXBlcyBvZiBvcGVyYXRpb25zIChmb3IgaW5zdGFuY2UsIGlmIHlvdSB1c2UgYGNvbmp1bmN0aW9uYCwgXG4gICAgICAgIHVzZSBpdCBjb25zZXF1ZW50bHkgZm9yIGEgcGFydGljdWxhciBjb2x1bW4p''@;'; put 'put ''LiJdLFsiVGhlIGNvbHVtbiBvZiBpbmRleCAiLCIgaGFzIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHdpdGggYSBcXGAiLCJcXGBcXHgyMFxuICAgICAgICBmaWx0ZXIgb3BlcmF0aW9uLiBVc2UgXFxgcmVtb3ZlQ29uZGl0aW9uc1xcYCB0byBjbGVhciB0aGUgY3VycmVudCBjb25kaXRpb25zIGFu''@;'; put 'put ''ZCB0aGVuIGFkZCBuZXcgb25lcy5cXHgyMFxuICAgICAgICBNaW5kIHRoYXQgeW91IGNhbm5vdCBtaXggZGlmZmVyZW50IHR5cGVzIG9mIG9wZXJhdGlvbnMgKGZvciBpbnN0YW5jZSwgaWYgeW91IHVzZSBcXGBjb25qdW5jdGlvblxcYCxcXHgyMFxuICAgICAgICB1c2UgaXQgY29uc2VxdWVu''@;'; put 'put ''dGx5IGZvciBhIHBhcnRpY3VsYXIgY29sdW1uKS4iXSkpLGEsWCkpfWVsc2UgaWYoTGwob0VbZF0pKXRocm93IG5ldyBFcnJvcihPbChSNGV8fChSNGU9RjRlKFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgYCIsImAuIFBvc3NpYmxlIG9uZXMgYXJlIFxuICAgICAgICBgZGlzanVuY3Rp''@;'; put 'put ''b25gIGFuZCBgY29uanVuY3Rpb25gLiJdLFsiVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgXFxgIiwiXFxgLiBQb3NzaWJsZSBvbmVzIGFyZVxceDIwXG4gICAgICAgIFxcYGRpc2p1bmN0aW9uXFxgIGFuZCBcXGBjb25qdW5jdGlvblxcYC4iXSkpLGQpKTt2YXIgYWU9dGhpcy5nZXRDb25k''@;'; put 'put ''aXRpb25zKGEpOzA9PT1hZS5sZW5ndGg/dGhpcy5maWx0ZXJpbmdTdGF0ZXMuc2V0VmFsdWVBdEluZGV4KGEse29wZXJhdGlvbjpkLGNvbmRpdGlvbnM6W3tuYW1lOk8sYXJnczpfLGZ1bmM6WjQoTyxfKX1dfSxoKTphZS5wdXNoKHtuYW1lOk8sYXJnczpfLGZ1bmM6WjQoTyxfKX0pLHRoaXMu''@;'; put 'put ''cnVuTG9jYWxIb29rcygiYWZ0ZXJBZGQiLGEpfX0se2tleToiZ2V0Q29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGYsZDtyZXR1cm4gbnVsbCE9PShmPW51bGw9PT0oZD10aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgoYSkpfHx2b2lkIDA9PT1kP3ZvaWQgMDpk''@;'; put 'put ''LmNvbmRpdGlvbnMpJiZ2b2lkIDAhPT1mP2Y6W119fSx7a2V5OiJnZXRPcGVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmO3JldHVybiBudWxsPT09KGY9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KGEpKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5vcGVyYXRpb259''@;'; put 'put ''fSx7a2V5OiJnZXRGaWx0ZXJlZENvbHVtbnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldEVudHJpZXMoKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEw0ZShhLDEpWzBdfSl9fSx7a2V5OiJnZXRDb2x1bW5TdGFja1Bvc2l0aW9uIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gdGhpcy5nZXRGaWx0ZXJlZENvbHVtbnMoKS5pbmRleE9mKGEpfX0se2tleToiZXhwb3J0QWxsQ29uZGl0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUHModGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0RW50cmllcygpLGZ1bmN0aW9uKGEsZil7dmFyIGQ9TDRl''@;'; put 'put ''KGYsMiksbT1kWzFdO3JldHVybiBhLnB1c2goe2NvbHVtbjpkWzBdLG9wZXJhdGlvbjptLm9wZXJhdGlvbixjb25kaXRpb25zOmhhKG0uY29uZGl0aW9ucyxmdW5jdGlvbihYKXtyZXR1cm57bmFtZTpYLm5hbWUsYXJnczpYLmFyZ3N9fSl9KSxhfSxbXSl9fSx7a2V5OiJpbXBvcnRBbGxDb25k''@;'; put 'put ''aXRpb25zIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzO3RoaXMuY2xlYW4oKSxSbihhLGZ1bmN0aW9uKGQpe1JuKGQuY29uZGl0aW9ucyxmdW5jdGlvbihoKXtyZXR1cm4gZi5hZGRDb25kaXRpb24oZC5jb2x1bW4saCl9KX0pfX0se2tleToicmVtb3ZlQ29uZGl0aW9ucyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oYSl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVSZW1vdmUiLGEpLHRoaXMuZmlsdGVyaW5nU3RhdGVzLmNsZWFyVmFsdWUoYSksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclJlbW92ZSIsYSl9fSx7a2V5OiJjbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJ1bkxvY2Fs''@;'; put 'put ''SG9va3MoImJlZm9yZUNsZWFuIiksdGhpcy5maWx0ZXJpbmdTdGF0ZXMuY2xlYXIoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xlYW4iKX19LHtrZXk6Imhhc0NvbmRpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dGhpcy5nZXRDb25kaXRpb25zKGEpO3JldHVybiBmP2Qu''@;'; put 'put ''c29tZShmdW5jdGlvbihoKXtyZXR1cm4gaC5uYW1lPT09Zn0pOmQubGVuZ3RoPjB9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaXNNYXBSZWdpc3RyYWJsZSYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcChONGUpLHRoaXMuZmlsdGVyaW5n''@;'; put 'put ''U3RhdGVzPW51bGwsdGhpcy5jbGVhckxvY2FsSG9va3MoKX19XSksbH0oKTtUbChWNGUsVzApO2NvbnN0IEI0ZT1WNGU7ZnVuY3Rpb24gc0UobCl7cmV0dXJuKHNFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMp''@;'; put 'put ''e3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gajRlKGwsYyl7Zm9yKHZhciBhPTA7''@;'; put 'put ''YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxUNnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBUNnQobCl7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gTzZ0KGwsYyl7aWYoIm9iamVjdCIhPT1zRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1zRShmKSlyZXR1cm4gZjt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09c0UoYyk/YzpTdHJpbmcoYyl9dmFyIEQ2dD1mdW5jdGlvbigp''@;'; put 'put ''e2Z1bmN0aW9uIGwoYyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmZ1bmN0aW9uKCl7cmV0dXJuW119OyhmdW5jdGlvbiB4NnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg''@;'; put 'put ''Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPWMsdGhpcy5jb2x1bW5EYXRhRmFjdG9yeT1hfXJldHVybiBmdW5jdGlvbiBBNnQobCxjLGEpe2MmJmo0ZShsLnByb3RvdHlwZSxjKSxhJiZqNGUobCxhKSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZmlsdGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj1bXTtyZXR1cm4gUm4odGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldEZpbHRlcmVkQ29sdW1ucygpLGZ1bmN0aW9uKGQsaCl7dmFyIG09''@;'; put 'put ''YS5jb2x1bW5EYXRhRmFjdG9yeShkKTtoJiYobT1hLl9nZXRJbnRlcnNlY3REYXRhKG0sZikpLGY9YS5maWx0ZXJCeUNvbHVtbihkLG0pfSksZn19LHtrZXk6ImZpbHRlckJ5Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGg9W107cmV0dXJuIFJuKGFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxmdW5jdGlvbihtKXt2b2lkIDAhPT1tJiZmLmNvbmRpdGlvbkNvbGxlY3Rpb24uaXNNYXRjaChtLGEpJiZoLnB1c2gobSl9KSxofX0se2tleToiX2dldEludGVyc2VjdERhdGEiLHZhbHVlOmZ1bmN0aW9uKGEsZil7''@;'; put 'put ''dmFyIGQ9W107cmV0dXJuIFJuKGYsZnVuY3Rpb24oaCl7dmFyIG09aC5tZXRhLnZpc3VhbFJvdzt2b2lkIDAhPT1hW21dJiYoZFttXT1hW21dKX0pLGR9fV0pLGx9KCk7Y29uc3QgejRlPUQ2dDtmdW5jdGlvbiB1RShsKXtyZXR1cm4odUU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIGN9KShsKX1mdW5jdGlvbiBVNGUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLEw2dChmLmtleSksZil9fWZ1bmN0aW9uIEw2dChsKXt2YXIgYz1mdW5jdGlvbiBQNnQobCxjKXtpZigib2JqZWN0IiE9PXVFKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1''@;'; put 'put ''bHQiKTtpZigib2JqZWN0IiE9PXVFKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJv''@;'; put 'put ''bCI9PT11RShjKT9jOlN0cmluZyhjKX12YXIgWjRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEpe3ZhciBmPXRoaXMsZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06ZnVuY3Rpb24oKXtyZXR1cm5bXX07KGZ1bmN0aW9uIEk2dChsLGMp''@;'; put 'put ''e2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmhvdD1jLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj1hLHRoaXMuY29sdW1uRGF0YUZhY3Rvcnk9ZCx0aGlzLmNoYW5nZXM9''@;'; put 'put ''W10sdGhpcy5ncm91cGluZz0hMSx0aGlzLmxhdGVzdEVkaXRlZENvbHVtblBvc2l0aW9uPS0xLHRoaXMubGF0ZXN0T3JkZXJTdGFjaz1bXSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVSZW1vdmUiLGZ1bmN0aW9uKGgpe3JldHVybiBmLl9vbkNvbmRpdGlv''@;'; put 'put ''bkJlZm9yZU1vZGlmeShoKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyUmVtb3ZlIixmdW5jdGlvbihoKXtyZXR1cm4gZi51cGRhdGVTdGF0ZXNBdENvbHVtbihoKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyQWRk''@;'; put 'put ''IixmdW5jdGlvbihoKXtyZXR1cm4gZi51cGRhdGVTdGF0ZXNBdENvbHVtbihoKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImJlZm9yZUNsZWFuIixmdW5jdGlvbigpe3JldHVybiBmLl9vbkNvbmRpdGlvbkJlZm9yZUNsZWFuKCl9KSx0aGlzLmNvbmRpdGlvbkNv''@;'; put 'put ''bGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlckNsZWFuIixmdW5jdGlvbigpe3JldHVybiBmLl9vbkNvbmRpdGlvbkFmdGVyQ2xlYW4oKX0pfXJldHVybiBmdW5jdGlvbiBSNnQobCxjLGEpe2MmJlU0ZShsLnByb3RvdHlwZSxjKSxhJiZVNGUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ3JvdXBDaGFuZ2VzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ3JvdXBpbmc9ITB9fSx7a2V5OiJmbHVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZ3JvdXBpbmc9ITEsUm4odGhpcy5jaGFuZ2VzLGZ1''@;'; put 'put ''bmN0aW9uKGYpe2EudXBkYXRlU3RhdGVzQXRDb2x1bW4oZil9KSx0aGlzLmNoYW5nZXMubGVuZ3RoPTB9fSx7a2V5OiJfb25Db25kaXRpb25CZWZvcmVNb2RpZnkiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMubGF0ZXN0RWRpdGVkQ29sdW1uUG9zaXRpb249dGhpcy5jb25kaXRpb25Db2xsZWN0''@;'; put 'put ''aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24oYSl9fSx7a2V5OiJ1cGRhdGVTdGF0ZXNBdENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzO2lmKHRoaXMuZ3JvdXBpbmcpLTE9PT10aGlzLmNoYW5nZXMuaW5kZXhPZihhKSYmdGhpcy5jaGFuZ2VzLnB1c2goYSk7ZWxzZXt2''@;'; put 'put ''YXIgaD10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZXhwb3J0QWxsQ29uZGl0aW9ucygpLG09dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24oYSk7LTE9PT1tJiYobT10aGlzLmxhdGVzdEVkaXRlZENvbHVtblBvc2l0aW9uKTt2YXIgXz1oLnNsaWNlKDAs''@;'; put 'put ''bSksTz1oLnNsaWNlKG0pO08ubGVuZ3RoJiZPWzBdLmNvbHVtbj09PWEmJk8uc2hpZnQoKTt2YXIgWD1rMGUoZnVuY3Rpb24ocGUsYmUpe3ZhciB4ZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W10sVmU9bmV3IEI0ZShkLmhvdCwhMSks''@;'; put 'put ''WmU9W10uY29uY2F0KHBlLHhlKTtWZS5pbXBvcnRBbGxDb25kaXRpb25zKFplKTt2YXIgbHQ9ZC5jb2x1bW5EYXRhRmFjdG9yeShiZSksZ3Q9YUUoaGEoVmUuaXNFbXB0eSgpP2x0Om5ldyB6NGUoVmUsZnVuY3Rpb24oanQpe3JldHVybiBkLmNvbHVtbkRhdGFGYWN0b3J5KGp0KX0pLmZpbHRl''@;'; put 'put ''cigpLGZ1bmN0aW9uKGp0KXtyZXR1cm4ganQubWV0YS52aXN1YWxSb3d9KSk7cmV0dXJuIFZlLmRlc3Ryb3koKSxEMShsdCxmdW5jdGlvbihqdCl7cmV0dXJuIGd0KGp0Lm1ldGEudmlzdWFsUm93KX0pfSkoXyksYWU9W10uY29uY2F0KHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRDb25k''@;'; put 'put ''aXRpb25zKGEpKTt0aGlzLnJ1bkxvY2FsSG9va3MoInVwZGF0ZSIse2VkaXRlZENvbmRpdGlvblN0YWNrOntjb2x1bW46YSxjb25kaXRpb25zOmFlfSxkZXBlbmRlbnRDb25kaXRpb25TdGFja3M6TyxmaWx0ZXJlZFJvd3NGYWN0b3J5OlgsY29uZGl0aW9uQXJnc0NoYW5nZTpmfSl9fX0se2tl''@;'; put 'put ''eToiX29uQ29uZGl0aW9uQmVmb3JlQ2xlYW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5sYXRlc3RPcmRlclN0YWNrPXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5nZXRGaWx0ZXJlZENvbHVtbnMoKX19LHtrZXk6Il9vbkNvbmRpdGlvbkFmdGVyQ2xlYW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGE9dGhpcztSbih0aGlzLmxhdGVzdE9yZGVyU3RhY2ssZnVuY3Rpb24oZil7YS51cGRhdGVTdGF0ZXNBdENvbHVtbihmKX0pfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuY2xlYXJMb2NhbEhvb2tzKCksbWEodGhpcyxmdW5jdGlvbihmLGQpe2Fb''@;'; put 'put ''ZF09bnVsbH0pfX1dKSxsfSgpO1RsKFo0ZSxXMCk7Y29uc3QgRjZ0PVo0ZTtmdW5jdGlvbiBIeShsKXtyZXR1cm4oSHk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlv''@;'; put 'put ''bihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX12YXIgWTRlO2Z1bmN0aW9uIFc0ZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5s''@;'; put 'put ''ZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIEc0ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEw''@;'; put 'put ''LCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsWTZ0KGYua2V5KSxmKX19ZnVuY3Rpb24gWTZ0KGwpe3ZhciBjPWZ1bmN0aW9uIFc2dChsLGMpe2lmKCJvYmplY3QiIT09SHkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRv''@;'; put 'put ''UHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09SHkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmlu''@;'; put 'put ''ZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUh5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIE55KCl7cmV0dXJuIE55PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2''@;'; put 'put ''YXIgZD1mdW5jdGlvbiBHNnQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPUs0KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5n''@;'; put 'put ''ZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sTnkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEJxKGwsYyl7cmV0dXJuKEJxPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7''@;'; put 'put ''cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gJDRlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBL''@;'; put 'put ''NChsKXtyZXR1cm4oSzQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgUTZ0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiAkNnQobCxj''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7''@;'; put 'put ''dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmQnEobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBLNnQobCl7dmFyIGM9ZnVuY3Rpb24gWDZ0KCl7aWYodHlwZW9mIFJlZmxl''@;'; put 'put ''Y3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4s''@;'; put 'put ''W10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9SzQobCk7aWYoYyl7dmFyIGg9SzQodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHE2dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PUh5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0''@;'; put 'put ''IG9yIHVuZGVmaW5lZCIpO3JldHVybiAkNGUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBVNnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24i''@;'; put 'put ''KX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkuZXZlbnRNYW5hZ2VyPW5ldyBmcygkNGUoZCkpLGQuZHJvcGRvd25NZW51UGx1Z2luPW51bGwsZC5jb25kaXRpb25Db2xsZWN0aW9uPW51bGwsZC5jb25kaXRpb25VcGRhdGVPYnNlcnZlcj1udWxsLGQuY29tcG9uZW50cz1uZXcgTWFwKFtb''@;'; put 'put ''ImZpbHRlcl9ieV9jb25kaXRpb24iLG51bGxdLFsiZmlsdGVyX29wZXJhdG9ycyIsbnVsbF0sWyJmaWx0ZXJfYnlfY29uZGl0aW9uMiIsbnVsbF0sWyJmaWx0ZXJfYnlfdmFsdWUiLG51bGxdLFsiZmlsdGVyX2FjdGlvbl9iYXIiLG51bGxdXSksZC5maWx0ZXJzUm93c01hcD1udWxsLGQuaG90''@;'; put 'put ''LmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIixmdW5jdGlvbihoLG0pe3JldHVybiBkLm9uQWZ0ZXJHZXRDb2xIZWFkZXIoaCxtKX0pLGR9cmV0dXJuIGZ1bmN0aW9uIFo2dChsLGMsYSl7YyYmRzRlKGwucHJvdG90eXBlLGMpLGEmJkc0ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShs''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpbHRlcnN9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztpZighdGhpcy5l''@;'; put 'put ''bmFibGVkKXt0aGlzLmZpbHRlcnNSb3dzTWFwPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSxuZXcgSE0pLHRoaXMuZHJvcGRvd25NZW51UGx1Z2luPXRoaXMuaG90LmdldFBsdWdpbigiZHJvcGRvd25NZW51Iik7dmFyIGg9dGhpcy5ob3QuZ2V0''@;'; put 'put ''U2V0dGluZ3MoKS5kcm9wZG93bk1lbnUsbT1oJiZoLnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSxfPWZ1bmN0aW9uKHhlKXtyZXR1cm4geGUuYWRkTG9jYWxIb29rKCJhY2NlcHQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BY3Rpb25CYXJTdWJtaXQoImFjY2VwdCIp''@;'; put 'put ''fSkseGUuYWRkTG9jYWxIb29rKCJjYW5jZWwiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BY3Rpb25CYXJTdWJtaXQoImNhbmNlbCIpfSkseGUuYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGZ1bmN0aW9uKFZlKXtyZXR1cm4gZC5vbkNvbXBvbmVudENoYW5nZSh4ZSxWZSl9KSx4ZX07aWYoIXRoaXMu''@;'; put 'put ''Y29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24iKSl7dmFyIGFlPW5ldyB4cSh0aGlzLmhvdCx7aWQ6ImZpbHRlcl9ieV9jb25kaXRpb24iLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4iIi5jb25jYXQoZC5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZSh5JCksIjoiKX0sYWRkU2VwYXJh''@;'; put 'put ''dG9yOiExLG1lbnVDb250YWluZXI6bX0pO2FlLmFkZExvY2FsSG9vaygiYWZ0ZXJDbG9zZSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vblNlbGVjdFVJQ2xvc2VkKCl9KSx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIixfKGFlKSl9aWYodGhpcy5jb21wb25lbnRzLmdl''@;'; put 'put ''dCgiZmlsdGVyX29wZXJhdG9ycyIpfHx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfb3BlcmF0b3JzIixuZXcgczV0KHRoaXMuaG90LHtpZDoiZmlsdGVyX29wZXJhdG9ycyIsbmFtZToiT3BlcmF0b3JzIn0pKSwhdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIi''@;'; put 'put ''KSl7dmFyIHBlPW5ldyB4cSh0aGlzLmhvdCx7aWQ6ImZpbHRlcl9ieV9jb25kaXRpb24yIixuYW1lOiIiLGFkZFNlcGFyYXRvcjohMCxtZW51Q29udGFpbmVyOm19KTtwZS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25TZWxlY3RVSUNsb3NlZCgpfSks''@;'; put 'put ''dGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiLF8ocGUpKX10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfdmFsdWUiKXx8dGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2J5X3ZhbHVlIixfKG5ldyBsNnQodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfdmFs''@;'; put 'put ''dWUiLG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4iIi5jb25jYXQoZC5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShiJCksIjoiKX19KSkpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9hY3Rpb25fYmFyIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9hY3Rpb25fYmFyIixfKG5ldyB5''@;'; put 'put ''NnQodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYWN0aW9uX2JhciIsbmFtZToiQWN0aW9uIGJhciJ9KSkpLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbnx8KHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj1uZXcgQjRlKHRoaXMuaG90KSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlcnx8KHRoaXMu''@;'; put 'put ''Y29uZGl0aW9uVXBkYXRlT2JzZXJ2ZXI9bmV3IEY2dCh0aGlzLmhvdCx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24sZnVuY3Rpb24oYmUpe3JldHVybiBkLmdldERhdGFNYXBBdENvbHVtbihiZSl9KSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyLmFkZExvY2FsSG9vaygidXBkYXRlIixm''@;'; put 'put ''dW5jdGlvbihiZSl7cmV0dXJuIGQudXBkYXRlQ29tcG9uZW50cyhiZSl9KSksdGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24oYmUpe3JldHVybiBiZS5zaG93KCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIixmdW5jdGlvbihiZSl7cmV0dXJuIGQu''@;'; put 'put ''b25CZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyhiZSl9KSx0aGlzLmFkZEhvb2soImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKGJlKXtyZXR1cm4gZC5vbkFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMoYmUpfSksdGhpcy5hZGRIb29rKCJhZnRlckRy''@;'; put 'put ''b3Bkb3duTWVudVNob3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckRyb3Bkb3duTWVudVNob3coKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJEcm9wZG93bk1lbnVIaWRlKCl9KSx0aGlzLmFkZEhvb2soImFm''@;'; put 'put ''dGVyQ2hhbmdlIixmdW5jdGlvbihiZSl7cmV0dXJuIGQub25BZnRlckNoYW5nZShiZSl9KSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJih0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5kaXNhYmxlUGx1Z2luKCksdGhpcy5kcm9w''@;'; put 'put ''ZG93bk1lbnVQbHVnaW4uZW5hYmxlUGx1Z2luKCkpLE55KEs0KGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGgsZD10aGlzO3RoaXMuZW5hYmxlZCYmKG51bGwhPT0oaD10aGlz''@;'; put 'put ''LmRyb3Bkb3duTWVudVBsdWdpbikmJnZvaWQgMCE9PWgmJmguZW5hYmxlZCYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4ubWVudS5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbihtLF8pe20uZGVzdHJveSgpLGQuY29tcG9uZW50cy5zZXQoXyxudWxs''@;'; put 'put ''KX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPW51bGwsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpKSxOeShLNChhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMp''@;'; put 'put ''LmNhbGwodGhpcyl9fSx7a2V5OiJhZGRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106RzQsTz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGQpO3RoaXMuY29uZGl0aW9u''@;'; put 'put ''Q29sbGVjdGlvbi5hZGRDb25kaXRpb24oTyx7Y29tbWFuZDp7a2V5Omh9LGFyZ3M6bX0sXyl9fSx7a2V5OiJyZW1vdmVDb25kaXRpb25zIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGQpO3RoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5yZW1vdmVD''@;'; put 'put ''b25kaXRpb25zKGgpfX0se2tleToiY2xlYXJDb25kaXRpb25zIix2YWx1ZTpmdW5jdGlvbihkKXtpZih2b2lkIDA9PT1kKXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5jbGVhbigpO2Vsc2V7dmFyIGg9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihkKTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rp''@;'; put 'put ''b24ucmVtb3ZlQ29uZGl0aW9ucyhoKX19fSx7a2V5OiJmaWx0ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuX2NyZWF0ZURhdGFGaWx0ZXIoKSxtPSF0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uaXNFbXB0eSgpLF89W10sTz10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24u''@;'; put 'put ''ZXhwb3J0QWxsQ29uZGl0aW9ucygpO2lmKCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUZpbHRlciIsTykpaWYobSl7dmFyIGFlPVtdO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7ZC5maWx0ZXJzUm93c01hcC5jbGVhcigpO3ZhciBwZT1hRShfPWhhKGguZmlsdGVy''@;'; put 'put ''KCksZnVuY3Rpb24oYmUpe3JldHVybiBiZS5tZXRhLnZpc3VhbFJvd30pKTtfbyhkLmhvdC5jb3VudFNvdXJjZVJvd3MoKS0xLGZ1bmN0aW9uKGJlKXtwZShiZSl8fGFlLnB1c2goYmUpfSksUm4oYWUsZnVuY3Rpb24oYmUpe2QuZmlsdGVyc1Jvd3NNYXAuc2V0VmFsdWVBdEluZGV4KGJlLCEw''@;'; put 'put ''KX0pfSwhMCksXy5sZW5ndGh8fHRoaXMuaG90LmRlc2VsZWN0Q2VsbCgpfWVsc2UgdGhpcy5maWx0ZXJzUm93c01hcC5jbGVhcigpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZpbHRlciIsTyksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApLHRoaXMuaG90LnJlbmRlcigp''@;'; put 'put ''LHRoaXMuY2xlYXJDb2x1bW5TZWxlY3Rpb24oKX19LHtrZXk6ImdldFNlbGVjdGVkQ29sdW1uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkLGg9bnVsbD09PShkPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLmhpZ2hsaWdodDtyZXR1cm4gaD97''@;'; put 'put ''dmlzdWFsSW5kZXg6aC5jb2wscGh5c2ljYWxJbmRleDp0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGguY29sKX06bnVsbH19LHtrZXk6ImNsZWFyQ29sdW1uU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuZ2V0U2VsZWN0ZWRDb2x1bW4oKTtudWxsIT09ZCYmdGhpcy5o''@;'; put 'put ''b3Quc2VsZWN0Q2VsbCgwLGQudmlzdWFsSW5kZXgpfX0se2tleToiZ2V0RGF0YU1hcEF0Q29sdW1uIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZCksXz1bXTtyZXR1cm4gUm4odGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q29sKG0pLGZ1''@;'; put 'put ''bmN0aW9uKE8sWCl7dmFyIGFlLHBlPWguaG90LmdldENlbGxNZXRhKFgsbSksYmU9cGUucm93LHhlPXBlLmNvbCxWZT1wZS52aXN1YWxDb2wsWmU9cGUudmlzdWFsUm93LGx0PXBlLnR5cGUsZHQ9cGUuaW5zdGFuY2UsZ3Q9cGUuZGF0ZUZvcm1hdCxqdD1wZS5sb2NhbGUscm49bnVsbCE9PShh''@;'; put 'put ''ZT1oLmhvdC5nZXREYXRhQXRDZWxsKGguaG90LnRvVmlzdWFsUm93KFgpLG0pKSYmdm9pZCAwIT09YWU/YWU6TztfLnB1c2goe21ldGE6e3JvdzpiZSxjb2w6eGUsdmlzdWFsQ29sOlZlLHZpc3VhbFJvdzpaZSx0eXBlOmx0LGluc3RhbmNlOmR0LGRhdGVGb3JtYXQ6Z3QsbG9jYWxlOmp0fSx2''@;'; put 'put ''YWx1ZTp5NGUocm4pfSl9KSxffX0se2tleToib25BZnRlckNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztkJiZSbihkLGZ1bmN0aW9uKG0pe3ZhciBfPWZ1bmN0aW9uIE42dChsLGMpe3JldHVybiBmdW5jdGlvbiB6NnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4g''@;'; put 'put ''bH0obCl8fGZ1bmN0aW9uIGo2dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0''@;'; put 'put ''LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYm''@;'; put 'put ''KG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gQjZ0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBXNGUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMiko''@;'; put 'put ''PzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFc0ZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gVjZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxl''@;'; put 'put ''LCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0obSwyKSxYPWguaG90LnByb3BUb0NvbChfWzFdKTtoLmNvbmRpdGlvbkNvbGxlY3Rpb24uaGFzQ29uZGl0aW9ucyhYKSYmaC51cGRhdGVWYWx1ZUNvbXBvbmVudENvbmRpdGlv''@;'; put 'put ''bihYKX0pfX0se2tleToidXBkYXRlVmFsdWVDb21wb25lbnRDb25kaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBtPVJxKHRoaXMuaG90LmdldERhdGFBdENvbChkKSk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci51cGRhdGVTdGF0ZXNBdENvbHVtbihkLG0pfX0se2tleToicmVz''@;'; put 'put ''dG9yZUNvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoLG09bnVsbD09PShoPXRoaXMuZ2V0U2VsZWN0ZWRDb2x1bW4oKSl8fHZvaWQgMD09PWg/dm9pZCAwOmgucGh5c2ljYWxJbmRleDtkLmZvckVhY2goZnVuY3Rpb24oXyl7Xy5pc0hpZGRlbigpfHxfLnJlc3RvcmVTdGF0ZSht''@;'; put 'put ''KX0pLHRoaXMudXBkYXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkoKX19LHtrZXk6Im9uQWZ0ZXJEcm9wZG93bk1lbnVTaG93Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucmVzdG9yZUNvbXBvbmVudHMoQXJyYXkuZnJvbSh0aGlzLmNvbXBvbmVudHMudmFsdWVzKCkpKX19LHtrZXk6''@;'; put 'put ''Im9uQWZ0ZXJEcm9wZG93bk1lbnVIaWRlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24iKS5nZXRTZWxlY3RFbGVtZW50KCkuY2xvc2VPcHRpb25zKCksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKS5n''@;'; put 'put ''ZXRTZWxlY3RFbGVtZW50KCkuY2xvc2VPcHRpb25zKCl9fSx7a2V5OiJvbkJlZm9yZURyb3Bkb3duTWVudVNldEl0ZW1zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUuYWRkTG9jYWxIb29r''@;'; put 'put ''KCJhZnRlck9wZW4iLGZ1bmN0aW9uKCl7ZC5kcm9wZG93bk1lbnVQbHVnaW4ubWVudS5ob3RNZW51LnVwZGF0ZVNldHRpbmdzKHtoaWRkZW5Sb3dzOiEwfSl9KX19LHtrZXk6Im9uQWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZCl7ZC5pdGVtcy5wdXNo''@;'; put 'put ''KHtuYW1lOmJhfSksdGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24oaCl7ZC5pdGVtcy5wdXNoKGguZ2V0TWVudUl0ZW1EZXNjcmlwdG9yKCkpfSl9fSx7a2V5OiJnZXRPcGVyYXRpb25CYXNlZE9uQXJndW1lbnRzIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXt2YXIgTz1kO3JldHVy''@;'; put 'put ''biBPPT09b1AmJmguY29tbWFuZC5rZXkhPT1lYyYmbS5jb21tYW5kLmtleSE9PWVjJiZfLmNvbW1hbmQua2V5IT09ZWM/Tz1UcTpfLmNvbW1hbmQua2V5IT09ZWMmJihoLmNvbW1hbmQua2V5PT09ZWN8fG0uY29tbWFuZC5rZXk9PT1lYykmJihPPUc0KSxPfX0se2tleToib25BY3Rpb25CYXJT''@;'; put 'put ''dWJtaXQiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoO2lmKCJhY2NlcHQiPT09ZCl7dmFyIF8sbT10aGlzLmdldFNlbGVjdGVkQ29sdW1uKCk7aWYobnVsbD09PW0pcmV0dXJuIHZvaWQobnVsbD09PShfPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXx8dm9pZCAwPT09X3x8Xy5jbG9zZSgpKTt2''@;'; put 'put ''YXIgTz1tLnBoeXNpY2FsSW5kZXgsWD10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuZ2V0U3RhdGUoKSxhZT10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLmdldFN0YXRlKCkscGU9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVy''@;'; put 'put ''X2J5X3ZhbHVlIikuZ2V0U3RhdGUoKSxiZT10aGlzLmdldE9wZXJhdGlvbkJhc2VkT25Bcmd1bWVudHModGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpLmdldEFjdGl2ZU9wZXJhdGlvbklkKCksWCxhZSxwZSk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5ncm91''@;'; put 'put ''cENoYW5nZXMoKTt2YXIgeGU9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24oTyk7LTE9PT14ZSYmKHhlPXZvaWQgMCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoTyksWC5jb21tYW5kLmtleSE9PWVjJiYodGhpcy5jb25k''@;'; put 'put ''aXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihPLFgsYmUseGUpLGFlLmNvbW1hbmQua2V5IT09ZWMmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oTyxhZSxiZSx4ZSkpLHBlLmNvbW1hbmQua2V5IT09ZWMmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25k''@;'; put 'put ''aXRpb24oTyxwZSxiZSx4ZSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5mbHVzaCgpLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKFZlKXtyZXR1cm4gVmUuc2F2ZVN0YXRlKE8pfSksdGhpcy5maWx0ZXJzUm93c01hcC5jbGVhcigpLHRoaXMuZmlsdGVyKCl9bnVsbD09''@;'; put 'put ''PShoPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXx8dm9pZCAwPT09aHx8aC5jbG9zZSgpfX0se2tleToib25Db21wb25lbnRDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dGhpcy51cGRhdGVEZXBlbmRlbnRDb21wb25lbnRzVmlzaWJpbGl0eSgpLGQuY29uc3RydWN0b3I9PT14cSYmIWgu''@;'; put 'put ''aW5wdXRzQ291bnQmJnRoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJvblNlbGVjdFVJQ2xvc2VkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9fSx7a2V5OiJzZXRMaXN0ZW5pbmdEcm9wZG93bk1lbnUiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLnNldExpc3RlbmluZygpfX0se2tleToidXBkYXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIG09dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVy''@;'; put 'put ''X2J5X2NvbmRpdGlvbiIpLmdldFN0YXRlKCkuY29tbWFuZCxfPVt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9vcGVyYXRvcnMiKV07bS5zaG93T3BlcmF0b3JzP3RoaXMuc2hvd0NvbXBvbmVudHMuYXBwbHko''@;'; put 'put ''dGhpcyxfKTp0aGlzLmhpZGVDb21wb25lbnRzLmFwcGx5KHRoaXMsXyl9fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZCk7dGhpcy5lbmFibGVkJiZ0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24u''@;'; put 'put ''aGFzQ29uZGl0aW9ucyhtKT9naShoLCJodEZpbHRlcnNBY3RpdmUiKTpKbyhoLCJodEZpbHRlcnNBY3RpdmUiKX19LHtrZXk6Il9jcmVhdGVEYXRhRmlsdGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJuIG5ldyB6NGUoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1h''@;'; put 'put ''cmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbixmdW5jdGlvbihtKXtyZXR1cm4gZC5nZXREYXRhTWFwQXRDb2x1bW4obSl9KX19LHtrZXk6InVwZGF0ZUNvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoO2lmKG51bGwhPT0oaD10aGlzLmRy''@;'; put 'put ''b3Bkb3duTWVudVBsdWdpbikmJnZvaWQgMCE9PWgmJmguZW5hYmxlZCl7dmFyIG09ZC5lZGl0ZWRDb25kaXRpb25TdGFjayxfPW0uY29uZGl0aW9ucyxPPW0uY29sdW1uLFg9Xy5maWx0ZXIoZnVuY3Rpb24oYmUpe3JldHVybiBiZS5uYW1lPT09dDZ9KSxhZT1fLmZpbHRlcihmdW5jdGlvbihi''@;'; put 'put ''ZSl7cmV0dXJuIGJlLm5hbWUhPT10Nn0pO2lmKFgubGVuZ3RoPj0yfHxhZS5sZW5ndGg+PTMpV2woT2woWTRlfHwoWTRlPWZ1bmN0aW9uIEg2dChsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6''@;'; put 'put ''T2JqZWN0LmZyZWV6ZShjKX19KSl9KFsiVGhlIGZpbHRlciBjb25kaXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkIHByb3Blcmx5LCBidXQgY291bGRuXHUyMDE5dCBiZSBkaXNwbGF5ZWQgdmlzdWFsbHkuIFxuICAgICAgICBUaGUgb3ZlcmFsbCBhbW91bnQgb2YgY29uZGl0aW9ucyBleGNlZWQg''@;'; put 'put ''dGhlIGNhcGFiaWxpdHkgb2YgdGhlIGRyb3Bkb3duIG1lbnUuIFxuICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4iXSxbIlRoZSBmaWx0ZXIgY29uZGl0aW9ucyBoYXZlIGJlZW4gYXBwbGllZCBwcm9wZXJseSwgYnV0IGNvdWxkblx1MjAxOXQgYmUgZGlz''@;'; put 'put ''cGxheWVkIHZpc3VhbGx5LlxceDIwXG4gICAgICAgIFRoZSBvdmVyYWxsIGFtb3VudCBvZiBjb25kaXRpb25zIGV4Y2VlZCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gbWVudS5cXHgyMFxuICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4iXSkp''@;'; put 'put ''KSk7ZWxzZXt2YXIgcGU9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldE9wZXJhdGlvbihPKTt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikudXBkYXRlU3RhdGUoYWVbMF0sTyksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKS51''@;'; put 'put ''cGRhdGVTdGF0ZShhZVsxXSxPKSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfb3BlcmF0b3JzIikudXBkYXRlU3RhdGUocGUsTyksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikudXBkYXRlU3RhdGUoZCl9fX19LHtrZXk6ImdldEluZGV4ZXNPZkNvbXBvbmVudHMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9W107aWYoIXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXJldHVybiBkO2Zvcih2YXIgaD10aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51LG09YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheShtKSxPPTA7TzxtO08rKylfW09dPWFyZ3VtZW50c1tP''@;'; put 'put ''XTtyZXR1cm4gUm4oXyxmdW5jdGlvbihYKXtSbihoLm1lbnVJdGVtcyxmdW5jdGlvbihhZSxwZSl7YWUua2V5PT09WC5nZXRNZW51SXRlbURlc2NyaXB0b3IoKS5rZXkmJmQucHVzaChwZSl9KX0pLGR9fSx7a2V5OiJjaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eSIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgZD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKHRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXtmb3IodmFyIG09dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4ubWVudS5ob3RNZW51LF89bS5nZXRQbHVnaW4oImhpZGRlblJv''@;'; put 'put ''d3MiKSxPPWFyZ3VtZW50cy5sZW5ndGgsWD1uZXcgQXJyYXkoTz4xP08tMTowKSxhZT0xO2FlPE87YWUrKylYW2FlLTFdPWFyZ3VtZW50c1thZV07dmFyIHBlPXRoaXMuZ2V0SW5kZXhlc09mQ29tcG9uZW50cy5hcHBseSh0aGlzLFgpO2Q/Xy5zaG93Um93cyhwZSk6Xy5oaWRlUm93cyhwZSks''@;'; put 'put ''bS5yZW5kZXIoKX19fSx7a2V5OiJoaWRlQ29tcG9uZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTt0aGlzLmNoYW5nZUNvbXBvbmVudHNWaXNpYmlsaXR5LmFwcGx5KHRo''@;'; put 'put ''aXMsWyExXS5jb25jYXQoaCkpfX0se2tleToic2hvd0NvbXBvbmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksbT0wO208ZDttKyspaFttXT1hcmd1bWVudHNbbV07dGhpcy5jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eS5h''@;'; put 'put ''cHBseSh0aGlzLFshMF0uY29uY2F0KGgpKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWQmJih0aGlzLmNvbXBvbmVudHMuZm9yRWFjaChmdW5jdGlvbihoLG0pe251bGwhPT1oJiYoaC5kZXN0cm95KCksZC5jb21wb25lbnRzLnNldCht''@;'; put 'put ''LG51bGwpKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5kZXN0cm95KCksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpKSxOeShLNChhLnByb3RvdHlwZSksImRlc3Ry''@;'; put 'put ''b3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJmaWx0ZXJzIn19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDI1MH19LHtrZXk6IlBMVUdJTl9ERVBTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm5bInBsdWdpbjpEcm9wZG93bk1lbnUiLCJwbHVnaW46SGlkZGVuUm93cyIsImNlbGwtdHlwZTpjaGVja2JveCJdfX1dKSxhfShHYSk7ZnVuY3Rpb24gY0UobCl7cmV0dXJuKGNFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1''@;'; put 'put ''bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gcTRlKGwsYyl7dmFy''@;'; put 'put ''IGE9T2JqZWN0LmtleXMobCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtjJiYoZj1mLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLGQpLmVudW1l''@;'; put 'put ''cmFibGV9KSksYS5wdXNoLmFwcGx5KGEsZil9cmV0dXJuIGF9ZnVuY3Rpb24gZkUobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/cTRlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bihmKXtlOHQobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6cTRlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiBlOHQobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHQ4dChsKXt2YXIgYz1mdW5jdGlvbiBuOHQobCxjKXtpZigib2JqZWN0IiE9PWNFKGwpfHxudWxsPT09bClyZXR1''@;'; put 'put ''cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWNFKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUg''@;'; put 'put ''dmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1jRShjKT9jOlN0cmluZyhjKX0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH12YXIgZW1lLFg0ZT0iaW50ZXJuYWwtdXNlLWluLWhhbmRzb250YWJsZSIsanE9e2xpY2Vuc2VLZXk6WDRlLHVzZUFycmF5QXJpdGhtZXRpYzohMCx1c2VDb2x1bW5JbmRleDohMSx1c2VTdGF0czohMSxldmFsdWF0ZU51bGxUb1plcm86ITAs''@;'; put 'put ''cHJlY2lzaW9uRXBzaWxvbjoxZS0xMyxwcmVjaXNpb25Sb3VuZGluZzoxNCxzbWFydFJvdW5kaW5nOiEwLGxlYXBZZWFyMTkwMDohMSxudWxsRGF0ZTp7eWVhcjoxODk5LG1vbnRoOjEyLGRheTozMH0sbnVsbFllYXI6MzAsZGF0ZUZvcm1hdHM6WyJERC9NTS9ZWVlZIiwiREQvTU0vWVkiXSx0''@;'; put 'put ''aW1lRm9ybWF0czpbImhoOm1tIiwiaGg6bW06c3Muc3NzIl0sbWF0Y2hXaG9sZUNlbGw6ITAsdXNlUmVndWxhckV4cHJlc3Npb25zOiExLHVzZVdpbGRjYXJkczohMCxmdW5jdGlvbkFyZ1NlcGFyYXRvcjoiLCIsdGhvdXNhbmRTZXBhcmF0b3I6IiIsZGVjaW1hbFNlcGFyYXRvcjoiLiIsbGFu''@;'; put 'put ''Z3VhZ2U6ImVuR0IifTtmdW5jdGlvbiBKNGUobCl7dmFyIGMsYTtyZXR1cm57bWF4Q29sdW1uczpsLm1heENvbHVtbnMsbWF4Um93czpsLm1heFJvd3MsbGFuZ3VhZ2U6bnVsbD09PShjPWxbT2NdKXx8dm9pZCAwPT09Y3x8bnVsbD09PShhPWMubGFuZ3VhZ2UpfHx2b2lkIDA9PT1hP3ZvaWQg''@;'; put 'put ''MDphLmxhbmdDb2RlfX1mdW5jdGlvbiBRNGUobCl7cmV0dXJuIE9iamVjdC5rZXlzKGwpLnJlZHVjZShmdW5jdGlvbihjLGEpe3JldHVybiJoeXBlcmZvcm11bGEiIT09YSYmKGNbYV09bFthXSksY30se30pfWZ1bmN0aW9uIHpxKGwpe3JldHVybih6cT0iZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3lt''@;'; put 'put ''Ym9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIGRQKCl7dmFyIGw9ImVuZ2luZV9yZWxhdGlvbnNoaXAiLGM9RmYoT2MpO3JldHVybiBjLmhhc0l0ZW0obCl8fGMucmVnaXN0ZXIobCxuZXcgTWFwKSxjLmdldEl0ZW0obCl9ZnVuY3Rpb24gVXEoKXt2YXIgbD0ic2hhcmVkX2VuZ2luZV91c2Fn''@;'; put 'put ''ZSIsYz1GZihPYyk7cmV0dXJuIGMuaGFzSXRlbShsKXx8Yy5yZWdpc3RlcihsLG5ldyBNYXApLGMuZ2V0SXRlbShsKX1mdW5jdGlvbiB0bWUobCl7dmFyIGMsYT1kUCgpLGY9MD09PWEuc2l6ZT9bXTpBcnJheS5mcm9tKG51bGwhPT0oYz1hLmdldChsKSkmJnZvaWQgMCE9PWM/YzpbXSk7cmV0''@;'; put 'put ''dXJuIG5ldyBNYXAoZi5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuW2QuZ2V0UGx1Z2luKCJmb3JtdWxhcyIpLnNoZWV0SWQsZF19KSl9ZnVuY3Rpb24gbm1lKGwsYyl7aWYobCl7dmFyIGE9ZFAoKSxmPWEuZ2V0KGwpLGQ9VXEoKSxoPWQuZ2V0KGwpO2YmJmYuaW5jbHVkZXMoYykmJihmLnNwbGlj''@;'; put 'put ''ZShmLmluZGV4T2YoYyksMSksMD09PWYubGVuZ3RoJiZhLmRlbGV0ZShsKSksaCYmaC5pbmNsdWRlcyhjLmd1aWQpJiYoaC5zcGxpY2UoaC5pbmRleE9mKGMuZ3VpZCksMSksMD09PWgubGVuZ3RoJiYoZC5kZWxldGUobCksbC5kZXN0cm95KCkpKX19dmFyIHJtZT0iREQvTU0vWVlZWSI7ZnVu''@;'; put 'put ''Y3Rpb24gaW1lKGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgbCYmIiciPT09bC5jaGFyQXQoMCkmJiI9Ij09PWwuY2hhckF0KDEpfWZ1bmN0aW9uIFpxKGwsYyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsJiYiZGF0ZSI9PT1jfWZ1bmN0aW9uIG9tZShsLGMpe3JldHVybiBLbyhsLGMsITAp''@;'; put 'put ''LmlzVmFsaWQoKX1mdW5jdGlvbiBhbWUobCxjKXtyZXR1cm4gS28obCxjLCEwKS5mb3JtYXQocm1lKX1mdW5jdGlvbiBtOHQobCxjKXtyZXR1cm4gS28obCxybWUsITApLmZvcm1hdChjKX1mdW5jdGlvbiBsbWUobCxjKXt2YXIgZj1uZXcgRGF0ZShEYXRlLlVUQygwLDAsbCstMSkpO3JldHVy''@;'; put 'put ''biBLbyhmKS5mb3JtYXQoYyl9ZnVuY3Rpb24gZEUobCl7cmV0dXJuKGRFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gc21lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJs''@;'; put 'put ''ZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCx5OHQoZi5rZXkpLGYpfX1mdW5jdGlvbiB5OHQobCl7dmFyIGM9ZnVuY3Rpb24gYjh0KGwsYyl7aWYoIm9iamVjdCIhPT1kRShsKXx8bnVsbD09PWwpcmV0''@;'; put 'put ''dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1kRShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZl''@;'; put 'put ''IHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09ZEUoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gbjYobCxjLGEpeyhmdW5jdGlvbiBfOHQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIGFzKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIHc4dChsLGMpe3JldHVybiBjLmdldD9jLmdldC5jYWxsKGwpOmMudmFsdWV9KGws''@;'; put 'put ''dW1lKGwsYywiZ2V0IikpfWZ1bmN0aW9uIHE0KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gQzh0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZp''@;'; put 'put ''ZWxkIik7Yy52YWx1ZT1hfX0obCx1bWUobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIHVtZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIg''@;'; put 'put ''aEU9bmV3IFdlYWtNYXAsWDQ9bmV3IFdlYWtNYXAsRjE9bmV3IFdlYWtNYXAsaFA9bmV3IFdlYWtNYXAsWXE9bmV3IFdlYWtNYXAsV3E9bmV3IFdlYWtNYXAscFA9bmV3IFdlYWtNYXAsUzh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjLGEsZil7KGZ1bmN0aW9uIGc4dChsLGMpe2lmKCEobCBp''@;'; put 'put ''bnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxuNih0aGlzLGhFLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuNih0aGlzLFg0LHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuNih0aGlz''@;'; put 'put ''LEYxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuNih0aGlzLGhQLHt3cml0YWJsZTohMCx2YWx1ZTpbXX0pLG42KHRoaXMsWXEse3dyaXRhYmxlOiEwLHZhbHVlOltdfSksbjYodGhpcyxXcSx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksbjYodGhpcyxwUCx7d3JpdGFibGU6ITAs''@;'; put 'put ''dmFsdWU6W119KSxxNCh0aGlzLGhFLGMpLHE0KHRoaXMsWDQsYSkscTQodGhpcyxGMSxmKX1yZXR1cm4gZnVuY3Rpb24gdjh0KGwsYyxhKXtjJiZzbWUobC5wcm90b3R5cGUsYyksYSYmc21lKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9''@;'; put 'put ''KGwsW3trZXk6InNldFJlbW92ZWRIZkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXM7cmV0dXJuIHE0KHRoaXMscFAsYS5tYXAoZnVuY3Rpb24oZCl7dmFyIGg9YXMoZixYNCkuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoZCk7cmV0dXJuIGYuZ2V0SGZJbmRleEZyb21W''@;'; put 'put ''aXN1YWxJbmRleChoKX0pKSxhcyh0aGlzLHBQKX19LHtrZXk6ImdldFJlbW92ZWRIZkluZGV4ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGFzKHRoaXMscFApfX0se2tleToiZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9YXModGhpcyxYNCku''@;'; put 'put ''Z2V0SW5kZXhlc1NlcXVlbmNlKCksZD1hcyh0aGlzLFg0KS5nZXROb3RUcmltbWVkSW5kZXhlcygpO3JldHVybiBmLmluZGV4T2YoZFthXSl9fSx7a2V5OiJzeW5jTW92ZXMiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsaD0ibW92ZSIuY29uY2F0KEFjKGFzKHRoaXMsaEUpKSwicyIp''@;'; put 'put ''O2FzKHRoaXMsRjEpLmdldEVuZ2luZSgpLmJhdGNoKGZ1bmN0aW9uKCl7YS5mb3JFYWNoKGZ1bmN0aW9uKG0pe20uZnJvbSE9PW0udG8mJm0uZnJvbSsxIT09bS50byYmYXMoZixGMSkuZ2V0RW5naW5lKClbaF0oYXMoZixGMSkuZ2V0U2hlZXRJZCgpLG0uZnJvbSwxLG0udG8pfSl9KX19LHtr''@;'; put 'put ''ZXk6InN0b3JlTW92ZXNJbmZvcm1hdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXM7ITEhPT1kJiYocTQodGhpcyxZcSxhLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gaC5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KG0pfSkpLHE0KHRoaXMsV3EsdGhpcy5nZXRIZkluZGV4''@;'; put 'put ''RnJvbVZpc3VhbEluZGV4KGYpKSl9fSx7a2V5OiJnZXRNb3ZlTGluZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgbSxkPWFzKHRoaXMsWDQpLmdldE51bWJlck9mSW5kZXhlcygpLGg9QXJyYXkuZnJvbShBcnJheShkKS5rZXlzKCkpLmZpbHRlcihmdW5jdGlvbihfKXtyZXR1cm4hMT09PWEu''@;'; put 'put ''aW5jbHVkZXMoXyl9KTtyZXR1cm4gMD09PWY/bnVsbCE9PShtPWhbZl0pJiZ2b2lkIDAhPT1tP206MDpoW2YtMV0rMX19LHtrZXk6ImdldEluaXRpYWxseUNhbGN1bGF0ZWRNb3ZlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLmdldE1vdmVMaW5lKGEsZiksaD1bXTtyZXR1cm4g''@;'; put 'put ''YS5mb3JFYWNoKGZ1bmN0aW9uKG0pe3ZhciBfPXtmcm9tOm0sdG86ZH07aC5mb3JFYWNoKGZ1bmN0aW9uKE8pe08uZnJvbT5fLmZyb20mJk8udG88PV8uZnJvbSYmTy5mcm9tPk8udG8mJihfLmZyb20rPTEpfSksXy5mcm9tPj1kJiYoZCs9MSksaC5wdXNoKF8pfSksaH19LHtrZXk6ImFkanVz''@;'; put 'put ''dGVkQ2FsY3VsYXRlZE1vdmVzIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGYsZCl7YS5zbGljZShkKzEpLmZvckVhY2goZnVuY3Rpb24obSl7bS5mcm9tPmYuZnJvbSYmbS5mcm9tPG0udG8mJihtLmZyb20tPTEpfSl9KSxhfX0se2tleToiY2FsY3VsYXRl''@;'; put 'put ''QW5kU3luY01vdmVzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXM7aWYoIWFzKHRoaXMsRjEpLmlzUGVyZm9ybWluZ1VuZG9SZWRvKCkmJiExIT09YSYmITEhPT1mKXt2YXIgaD10aGlzLmFkanVzdGVkQ2FsY3VsYXRlZE1vdmVzKHRoaXMuZ2V0SW5pdGlhbGx5Q2FsY3VsYXRlZE1v''@;'; put 'put ''dmVzKGFzKHRoaXMsWXEpLGFzKHRoaXMsV3EpKSk7bnVsbD09PWFzKHRoaXMsRjEpLmdldFNoZWV0SWQoKT9hcyh0aGlzLEYxKS5nZXRQb3N0cG9uZUFjdGlvbihmdW5jdGlvbigpe3JldHVybiBkLnN5bmNNb3ZlcyhoKX0pOnRoaXMuc3luY01vdmVzKGgpfX19LHtrZXk6ImdldEluZGV4ZXND''@;'; put 'put ''aGFuZ2VTeW5jTWV0aG9kIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj0ic2V0Ii5jb25jYXQoQWMoYXModGhpcyxoRSkpLCJPcmRlciIpO3JldHVybiBmdW5jdGlvbihkKXtpZighYXMoYSxGMSkuaXNQZXJmb3JtaW5nVW5kb1JlZG8oKSl7dmFyIGg9YXMoYSxYNCkuZ2V0SW5kZXhl''@;'; put 'put ''c1NlcXVlbmNlKCk7aWYoInVwZGF0ZSI9PT1kKXt2YXIgTyxtPWFzKGEsaFApLm1hcChmdW5jdGlvbihwZSl7cmV0dXJuIGguaW5kZXhPZihwZSl9KSxfPWFzKGEsRjEpLmdldEVuZ2luZSgpLmdldFNoZWV0RGltZW5zaW9ucyhhcyhhLEYxKS5nZXRTaGVldElkKCkpO089InJvdyI9PT1hcyhh''@;'; put 'put ''LGhFKT9fLmhlaWdodDpfLndpZHRoO2Zvcih2YXIgYWU9bS5sZW5ndGg7YWU8TzthZSs9MSltLnB1c2goYWUpO2FzKGEsRjEpLmdldEVuZ2luZSgpW2ZdKGFzKGEsRjEpLmdldFNoZWV0SWQoKSxtKX1xNChhLGhQLGgpfX19fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3E0KHRoaXMs''@;'; put 'put ''aFAsYXModGhpcyxYNCkuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX1dKSxsfSgpO2NvbnN0IGNtZT1TOHQ7ZnVuY3Rpb24gcEUobCl7cmV0dXJuKHBFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0''@;'; put 'put ''eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gZm1lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0''@;'; put 'put ''aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxFOHQoZi5rZXkpLGYpfX1mdW5jdGlvbiBFOHQobCl7dmFyIGM9ZnVuY3Rpb24g''@;'; put 'put ''eDh0KGwsYyl7aWYoIm9iamVjdCIhPT1wRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1wRShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09cEUoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gcjYobCxjLGEpeyhmdW5jdGlv''@;'; put 'put ''biBBOHQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIEQzKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFQ4dChs''@;'; put 'put ''LGMpe3JldHVybiBjLmdldD9jLmdldC5jYWxsKGwpOmMudmFsdWV9KGwsZG1lKGwsYywiZ2V0IikpfWZ1bmN0aW9uIG82KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gTzh0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCxkbWUobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIGRtZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZp''@;'; put 'put ''ZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIgbVA9bmV3IFdlYWtNYXAsZ1A9bmV3IFdlYWtNYXAsR3E9bmV3IFdlYWtNYXAsJHE9bmV3IFdlYWtNYXAsS3E9bmV3IFdlYWtNYXAscXE9bmV3IFdlYWtNYXAsWHE9bmV3IFdlYWtNYXAsRDh0PWZ1bmN0aW9uKCl7ZnVu''@;'; put 'put ''Y3Rpb24gbChjLGEsZil7KGZ1bmN0aW9uIE04dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxyNih0aGlzLG1QLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyNih0''@;'; put 'put ''aGlzLGdQLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyNih0aGlzLEdxLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxyNih0aGlzLCRxLHt3cml0YWJsZTohMCx2YWx1ZTohMX0pLHI2KHRoaXMsS3Ese3dyaXRhYmxlOiEwLHZhbHVlOiExfSkscjYodGhpcyxxcSx7d3JpdGFibGU6''@;'; put 'put ''ITAsdmFsdWU6bnVsbH0pLHI2KHRoaXMsWHEse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSxvNih0aGlzLG1QLG5ldyBjbWUoInJvdyIsYyx0aGlzKSksbzYodGhpcyxnUCxuZXcgY21lKCJjb2x1bW4iLGEsdGhpcykpLG82KHRoaXMsR3EsZil9cmV0dXJuIGZ1bmN0aW9uIGs4dChsLGMsYSl7''@;'; put 'put ''YyYmZm1lKGwucHJvdG90eXBlLGMpLGEmJmZtZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJnZXRGb3JBeGlzIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gRDModGhpcywicm93Ij09PWE/bVA6Z1ApfX0se2tleToi''@;'; put 'put ''c2V0UGVyZm9ybVVuZG8iLHZhbHVlOmZ1bmN0aW9uKGEpe282KHRoaXMsJHEsYSl9fSx7a2V5OiJzZXRQZXJmb3JtUmVkbyIsdmFsdWU6ZnVuY3Rpb24oYSl7bzYodGhpcyxLcSxhKX19LHtrZXk6ImlzUGVyZm9ybWluZ1VuZG9SZWRvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBEMyh0aGlz''@;'; put 'put ''LCRxKXx8RDModGhpcyxLcSl9fSx7a2V5OiJnZXRTaGVldElkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBEMyh0aGlzLFhxKX19LHtrZXk6ImdldEVuZ2luZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRDModGhpcyxxcSl9fSx7a2V5OiJnZXRQb3N0cG9uZUFjdGlvbiIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gRDModGhpcyxHcSl9fSx7a2V5OiJzZXR1cFN5bmNFbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtvNih0aGlzLHFxLGEpLG82KHRoaXMsWHEsZiksRDModGhpcyxtUCkuaW5pdCgpLEQzKHRoaXMsZ1ApLmluaXQoKX19XSksbH0oKTtjb25zdCBJOHQ9RDh0O2Z1''@;'; put 'put ''bmN0aW9uIEo0KGwpe3JldHVybihKND0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNv''@;'; put 'put ''bnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFZ5KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFY4dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gTjh0KGwsYyl7dmFyIGE9bnVs''@;'; put 'put ''bD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089''@;'; put 'put ''ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVy''@;'; put 'put ''bn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxobWUobCxjKXx8ZnVuY3Rpb24gSDh0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxl''@;'; put 'put ''LCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBobWUobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIEpxKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwp''@;'; put 'put ''LnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/''@;'; put 'put ''QXJyYXkkLy50ZXN0KGEpKXJldHVybiBKcShsLGMpfX1mdW5jdGlvbiBKcShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIHBtZShsLGMpe2Zvcih2YXIg''@;'; put 'put ''YT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsbW1lKGYua2V5KSxmKX19ZnVuY3Rpb24gYTYoKXtyZXR1''@;'; put 'put ''cm4gYTY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIHo4dChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9STMobCkpOyk7''@;'; put 'put ''cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxhNi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUXEobCxjKXty''@;'; put 'put ''ZXR1cm4oUXE9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBHaChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBo''@;'; put 'put ''YXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gSTMobCl7cmV0dXJuKEkzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJv''@;'; put 'put ''dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gQnkobCxjLGEpe3JldHVybihjPW1tZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1m''@;'; put 'put ''dW5jdGlvbiBtbWUobCl7dmFyIGM9ZnVuY3Rpb24gRzh0KGwsYyl7aWYoIm9iamVjdCIhPT1KNChsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1K''@;'; put 'put ''NChmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09SjQoYyk/YzpTdHJpbmco''@;'; put 'put ''Yyl9ZnVuY3Rpb24gZVgobCxjLGEpeyhmdW5jdGlvbiAkOHQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9u''@;'; put 'put ''IFE0KGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gSzh0KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCxnbWUo''@;'; put 'put ''bCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIGp5KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIHE4dChsLGMpe3JldHVybiBjLmdldD9jLmdldC5jYWxsKGwpOmMudmFsdWV9KGwsZ21lKGwsYywiZ2V0IikpfWZ1bmN0aW9uIGdtZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''ImF0dGVtcHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIgT2M9ImZvcm11bGFzIixYOHQ9WyJtYXhSb3dzIiwibWF4Q29sdW1ucyIsImxhbmd1YWdlIl07dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyTmFtZWRF''@;'; put 'put ''eHByZXNzaW9uQWRkZWQiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyU2hlZXRBZGRlZCIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVtb3Zl''@;'; put 'put ''ZCIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVuYW1lZCIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIik7dmFyIHp5PWZ1bmN0aW9uKGMpe3JldHVybiJVbmRvUmVkby51bmRvIj09PWN8fCJVbmRvUmVkby5y''@;'; put 'put ''ZWRvIj09PWN8fCJhdXRvIj09PWN9LFIzPW5ldyBXZWFrTWFwLHRYPW5ldyBXZWFrTWFwLG1FPW5ldyBXZWFrTWFwLFE4dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gVTh0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4''@;'; put 'put ''cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJw''@;'; put 'put ''cm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJlFxKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gWjh0KGwpe3ZhciBjPWZ1bmN0aW9uIFc4dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxm''@;'; put 'put ''PUkzKGwpO2lmKGMpe3ZhciBoPUkzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBZOHQobCxjKXtpZihjJiYoIm9iamVjdCI9PT1KNChjKXx8ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gR2gobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7IWZ1''@;'; put 'put ''bmN0aW9uIEI4dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJn''@;'; put 'put ''dW1lbnRzW21dO3JldHVybiBlWChHaChmPWMuY2FsbC5hcHBseShjLFt0aGlzXS5jb25jYXQoaCkpKSxSMyx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxlWChHaChmKSx0WCx7d3JpdGFibGU6ITAsdmFsdWU6ITF9KSxlWChHaChmKSxtRSx7d3JpdGFibGU6ITAsdmFsdWU6W1sidmFsdWVzVXBk''@;'; put 'put ''YXRlZCIsZnVuY3Rpb24oKXt2YXIgXztyZXR1cm4oXz1mKS5vbkVuZ2luZVZhbHVlc1VwZGF0ZWQuYXBwbHkoXyxhcmd1bWVudHMpfV0sWyJuYW1lZEV4cHJlc3Npb25BZGRlZCIsZnVuY3Rpb24oKXt2YXIgXztyZXR1cm4oXz1mKS5vbkVuZ2luZU5hbWVkRXhwcmVzc2lvbnNBZGRlZC5hcHBs''@;'; put 'put ''eShfLGFyZ3VtZW50cyl9XSxbIm5hbWVkRXhwcmVzc2lvblJlbW92ZWQiLGZ1bmN0aW9uKCl7dmFyIF87cmV0dXJuKF89Zikub25FbmdpbmVOYW1lZEV4cHJlc3Npb25zUmVtb3ZlZC5hcHBseShfLGFyZ3VtZW50cyl9XSxbInNoZWV0QWRkZWQiLGZ1bmN0aW9uKCl7dmFyIF87cmV0dXJuKF89''@;'; put 'put ''Zikub25FbmdpbmVTaGVldEFkZGVkLmFwcGx5KF8sYXJndW1lbnRzKX1dLFsic2hlZXRSZW5hbWVkIixmdW5jdGlvbigpe3ZhciBfO3JldHVybihfPWYpLm9uRW5naW5lU2hlZXRSZW5hbWVkLmFwcGx5KF8sYXJndW1lbnRzKX1dLFsic2hlZXRSZW1vdmVkIixmdW5jdGlvbigpe3ZhciBfO3Jl''@;'; put 'put ''dHVybihfPWYpLm9uRW5naW5lU2hlZXRSZW1vdmVkLmFwcGx5KF8sYXJndW1lbnRzKX1dXX0pLEJ5KEdoKGYpLCJzdGF0aWNSZWdpc3RlciIsRmYoImZvcm11bGFzIikpLEJ5KEdoKGYpLCJlbmdpbmUiLG51bGwpLEJ5KEdoKGYpLCJzaGVldE5hbWUiLG51bGwpLEJ5KEdoKGYpLCJpbmRleFN5''@;'; put 'put ''bmNlciIsbnVsbCksQnkoR2goZiksInJvd0F4aXNTeW5jZXIiLG51bGwpLEJ5KEdoKGYpLCJjb2x1bW5BeGlzU3luY2VyIixudWxsKSxmfXJldHVybiBmdW5jdGlvbiBqOHQobCxjLGEpe2MmJnBtZShsLnByb3RvdHlwZSxjKSxhJiZwbWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToic2hlZXRJZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10aGlzLnNoZWV0TmFtZT9udWxsOnRoaXMuZW5naW5lLmdldFNoZWV0SWQodGhpcy5zaGVldE5hbWUpfX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtPY119fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQsaD10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe2lmKHRoaXMuZW5naW5lPW51bGwhPT0oZD1mdW5jdGlvbiBsOHQobCl7dmFyIGQsYz1sLmdldFNl''@;'; put 'put ''dHRpbmdzKCksYT1jW09jXSxmPWE/LmVuZ2luZTtpZighMD09PWF8fExsKGYpKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBmLmh5cGVyZm9ybXVsYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGYpcmV0dXJuIGZ1bmN0aW9uIHM4dChsLGMsYSl7dmFyIGY9Y1tPY10sZD1mdW5jdGlv''@;'; put 'put ''biByOHQobCl7dmFyIGMsYT1sW09jXSxmPVE0ZShudWxsIT1hJiZudWxsIT09KGM9YS5lbmdpbmUpJiZ2b2lkIDAhPT1jJiZjLmh5cGVyZm9ybXVsYT9hLmVuZ2luZTp7fSksZD1KNGUobCk7cmV0dXJuIGZFKGZFKGZFKHt9LGpxKSxmKSxkKX0oYyksaD1kUCgpLG09VXEoKTsoZnVuY3Rpb24g''@;'; put 'put ''dTh0KGwsYyl7YyYmYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBmPWEubmFtZSxkPWEucGx1Z2luLGg9YS50cmFuc2xhdGlvbnM7dHJ5e2wucmVnaXN0ZXJGdW5jdGlvbihmLGQsaCl9Y2F0Y2gobSl7V2wobS5tZXNzYWdlKX19KX0pKGwsZi5mdW5jdGlvbnMpLGZ1bmN0aW9uIGM4dChsLGMp''@;'; put 'put ''e2lmKGMpe3ZhciBhPWMubGFuZ0NvZGU7dHJ5e2wucmVnaXN0ZXJMYW5ndWFnZShhLGMpfWNhdGNoKGYpe1dsKGYubWVzc2FnZSl9fX0obCxmLmxhbmd1YWdlKTt2YXIgXz1sLmJ1aWxkRW1wdHkoZCk7cmV0dXJuIGguc2V0KF8sW2FdKSxtLnNldChfLFthLmd1aWRdKSxmdW5jdGlvbiBmOHQo''@;'; put 'put ''bCxjKXtjJiYobC5zdXNwZW5kRXZhbHVhdGlvbigpLGMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZj1hLm5hbWUsZD1hLmV4cHJlc3Npb24saD1hLnNjb3BlLG09YS5vcHRpb25zO3RyeXtsLmFkZE5hbWVkRXhwcmVzc2lvbihmLGQsaCxtKX1jYXRjaChfKXtXbChfLm1lc3NhZ2UpfX0pLGwu''@;'; put 'put ''cmVzdW1lRXZhbHVhdGlvbigpKX0oXyxmLm5hbWVkRXhwcmVzc2lvbnMpLF8ub24oInNoZWV0QWRkZWQiLGZ1bmN0aW9uKCl7Xy5yZWJ1aWxkQW5kUmVjYWxjdWxhdGUoKX0pLF8ub24oInNoZWV0UmVtb3ZlZCIsZnVuY3Rpb24oKXtfLnJlYnVpbGRBbmRSZWNhbGN1bGF0ZSgpfSksX30obnVs''@;'; put 'put ''bCE9PShkPWYuaHlwZXJmb3JtdWxhKSYmdm9pZCAwIT09ZD9kOmYsYyxsKTtpZigib2JqZWN0Ij09PXpxKGYpJiZMbChmLmh5cGVyZm9ybXVsYSkpe3ZhciBoPWRQKCksbT1VcSgpLmdldChmKTtyZXR1cm4gaC5oYXMoZil8fGguc2V0KGYsW10pLGguZ2V0KGYpLnB1c2gobCksbSYmbS5wdXNo''@;'; put 'put ''KGwuZ3VpZCksZi5nZXRDb25maWcoKS5saWNlbnNlS2V5fHxmLnVwZGF0ZUNvbmZpZyh7bGljZW5zZUtleTpYNGV9KSwoZi5nZXRDb25maWcoKS5sZWFwWWVhcjE5MDAhPT1qcS5sZWFwWWVhcjE5MDB8fCExPT09akkoZi5nZXRDb25maWcoKS5udWxsRGF0ZSxqcS5udWxsRGF0ZSkpJiZXbChP''@;'; put 'put ''bChlbWV8fChlbWU9ZnVuY3Rpb24gYTh0KGwsYyl7cmV0dXJuIGN8fChjPWwuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWyJJZiB5b3UgdXNlIEh5cGVyRm9ybXVsYSB3aXRoIEhhbmRz''@;'; put 'put ''b250YWJsZSwga2VlcCB0aGUgZGVmYXVsdCBgbGVhcFllYXIxOTAwYCBhbmQgYG51bGxEYXRlYCBcbiAgICAgIHNldHRpbmdzLiBPdGhlcndpc2UsIEh5cGVyRm9ybXVsYSdzIGRhdGVzIG1heSBub3Qgc3luYyBjb3JyZWN0bHkgd2l0aCBIYW5kc29udGFibGUncyBkYXRlcy4iXSxbIklmIHlv''@;'; put 'put ''dSB1c2UgSHlwZXJGb3JtdWxhIHdpdGggSGFuZHNvbnRhYmxlLCBrZWVwIHRoZSBkZWZhdWx0IFxcYGxlYXBZZWFyMTkwMFxcYCBhbmQgXFxgbnVsbERhdGVcXGAgXG4gICAgICBzZXR0aW5ncy4gT3RoZXJ3aXNlLCBIeXBlckZvcm11bGEncyBkYXRlcyBtYXkgbm90IHN5bmMgY29ycmVjdGx5''@;'; put 'put ''IHdpdGggSGFuZHNvbnRhYmxlJ3MgZGF0ZXMuIl0pKSkpLGZ9cmV0dXJuIG51bGx9KHRoaXMuaG90KSkmJnZvaWQgMCE9PWQ/ZDp0aGlzLmVuZ2luZSwhdGhpcy5lbmdpbmUpcmV0dXJuIHZvaWQgV2woIk1pc3NpbmcgdGhlIHJlcXVpcmVkIGBlbmdpbmVgIGtleSBpbiB0aGUgRm9ybXVsYXMg''@;'; put 'put ''c2V0dGluZ3MuIFBsZWFzZSBmaWxsIGl0IHdpdGggZWl0aGVyIGFuIGVuZ2luZSBjbGFzcyBvciBhbiBlbmdpbmUgaW5zdGFuY2UuIik7aWYobnVsbCE9PXRoaXMuc2hlZXROYW1lJiYhdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QodGhpcy5zaGVldE5hbWUpKXt2YXIgbT10aGlzLmFkZFNo''@;'; put 'put ''ZWV0KHRoaXMuc2hlZXROYW1lLHRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheSgpKTshMSE9PW0mJih0aGlzLnNoZWV0TmFtZT1tKX10aGlzLmFkZEhvb2soImJlZm9yZUxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiBoLm9uQmVmb3JlTG9hZERhdGEuYXBwbHkoaCxhcmd1bWVudHMpfSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiBoLm9uQWZ0ZXJMb2FkRGF0YS5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVVwZGF0ZURhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25CZWZvcmVMb2FkRGF0YS5hcHBseShoLGFy''@;'; put 'put ''Z3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyVXBkYXRlRGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyTG9hZERhdGEuYXBwbHkoaCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlEYXRhIixmdW5jdGlvbigpe3JldHVybiBoLm9uTW9kaWZ5RGF0YS5hcHBseSho''@;'; put 'put ''LGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVNvdXJjZURhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25Nb2RpZnlTb3VyY2VEYXRhLmFwcGx5KGgsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlVmFsaWRhdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25CZWZvcmVW''@;'; put 'put ''YWxpZGF0ZS5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbC5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0''@;'; put 'put ''Q2VsbCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyU2V0RGF0YUF0Q2VsbC5hcHBseShoLGFyZ3VtZW50cyl9''@;'; put 'put ''KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkJlZm9yZUNyZWF0ZVJvdy5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkJlZm9yZUNyZWF0ZUNvbC5hcHBs''@;'; put 'put ''eShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbigpe3JldHVybiBoLm9uQWZ0ZXJDcmVhdGVSb3cuYXBwbHkoaCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vbkFmdGVyQ3Jl''@;'; put 'put ''YXRlQ29sLmFwcGx5KGgsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlUm93IixmdW5jdGlvbigpe3JldHVybiBoLm9uQmVmb3JlUmVtb3ZlUm93LmFwcGx5KGgsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBoLm9uQmVmb3JlUmVtb3ZlQ29sLmFwcGx5KGgsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25BZnRlclJlbW92ZVJvdy5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBoLm9uQWZ0ZXJSZW1vdmVDb2wuYXBwbHkoaCxhcmd1bWVudHMpfSksdGhpcy5pbmRleFN5bmNlcj1uZXcgSTh0KHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGZ1bmN0aW9uKF8pe2guaG90LmFkZEhvb2tPbmNlKCJpbml0''@;'; put 'put ''IixmdW5jdGlvbigpe18oKX0pfSksdGhpcy5yb3dBeGlzU3luY2VyPXRoaXMuaW5kZXhTeW5jZXIuZ2V0Rm9yQXhpcygicm93IiksdGhpcy5jb2x1bW5BeGlzU3luY2VyPXRoaXMuaW5kZXhTeW5jZXIuZ2V0Rm9yQXhpcygiY29sdW1uIiksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJSb3dTZXF1''@;'; put 'put ''ZW5jZUNoYW5nZSIsdGhpcy5yb3dBeGlzU3luY2VyLmdldEluZGV4ZXNDaGFuZ2VTeW5jTWV0aG9kKCkpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2UiLHRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRJbmRleGVzQ2hhbmdlU3luY01ldGhvZCgpKSx0aGlzLmhv''@;'; put 'put ''dC5hZGRIb29rKCJiZWZvcmVSb3dNb3ZlIixmdW5jdGlvbihfLE8sWCxhZSl7aC5yb3dBeGlzU3luY2VyLnN0b3JlTW92ZXNJbmZvcm1hdGlvbihfLE8sYWUpfSksdGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlQ29sdW1uTW92ZSIsZnVuY3Rpb24oXyxPLFgsYWUpe2guY29sdW1uQXhpc1N5bmNl''@;'; put 'put ''ci5zdG9yZU1vdmVzSW5mb3JtYXRpb24oXyxPLGFlKX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUm93TW92ZSIsZnVuY3Rpb24oXyxPLFgsYWUscGUpe2gucm93QXhpc1N5bmNlci5jYWxjdWxhdGVBbmRTeW5jTW92ZXMoYWUscGUpfSksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJDb2x1bW5N''@;'; put 'put ''b3ZlIixmdW5jdGlvbihfLE8sWCxhZSxwZSl7aC5jb2x1bW5BeGlzU3luY2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3ZlcyhhZSxwZSl9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVDb2x1bW5GcmVlemUiLGZ1bmN0aW9uKF8sTyl7aC5jb2x1bW5BeGlzU3luY2VyLnN0b3JlTW92ZXNJbmZvcm1h''@;'; put 'put ''dGlvbihbX10saC5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCxPKX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyQ29sdW1uRnJlZXplIixmdW5jdGlvbihfLE8pe2guY29sdW1uQXhpc1N5bmNlci5jYWxjdWxhdGVBbmRTeW5jTW92ZXMoTyxPKX0pLHRoaXMuaG90LmFkZEhv''@;'; put 'put ''b2soImJlZm9yZUNvbHVtblVuZnJlZXplIixmdW5jdGlvbihfLE8pe2guY29sdW1uQXhpc1N5bmNlci5zdG9yZU1vdmVzSW5mb3JtYXRpb24oW19dLGguaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQtMSxPKX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyQ29sdW1uVW5mcmVl''@;'; put 'put ''emUiLGZ1bmN0aW9uKF8sTyl7aC5jb2x1bW5BeGlzU3luY2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3ZlcyhPLE8pfSksdGhpcy5hZGRIb29rKCJhZnRlckNlbGxNZXRhUmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25BZnRlckNlbGxNZXRhUmVzZXQuYXBwbHkoaCxhcmd1bWVudHMpfSksdGhp''@;'; put 'put ''cy5hZGRIb29rKCJiZWZvcmVVbmRvIixmdW5jdGlvbigpe2guaW5kZXhTeW5jZXIuc2V0UGVyZm9ybVVuZG8oITApLGguZW5naW5lLnVuZG8oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVkbyIsZnVuY3Rpb24oKXtoLmluZGV4U3luY2VyLnNldFBlcmZvcm1SZWRvKCEwKSxoLmVuZ2luZS5y''@;'; put 'put ''ZWRvKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyVW5kbyIsZnVuY3Rpb24oKXtoLmluZGV4U3luY2VyLnNldFBlcmZvcm1VbmRvKCExKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJVbmRvIixmdW5jdGlvbigpe2guaW5kZXhTeW5jZXIuc2V0UGVyZm9ybVJlZG8oITEpfSksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckRldGFjaENoaWxkIixmdW5jdGlvbigpe3JldHVybiBoLm9uQWZ0ZXJEZXRhY2hDaGlsZC5hcHBseShoLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUF1dG9maWxsIixmdW5jdGlvbigpe3JldHVybiBoLm9uQmVmb3JlQXV0b2ZpbGwuYXBwbHkoaCxhcmd1bWVudHMpfSks''@;'; put 'put ''ankodGhpcyxtRSkuZm9yRWFjaChmdW5jdGlvbihfKXt2YXIgTz1WeShfLDIpO3JldHVybiBoLmVuZ2luZS5vbihPWzBdLE9bMV0pfSksYTYoSTMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgZD10aGlzO2p5KHRoaXMsbUUpLmZvckVhY2goZnVuY3Rpb24oaCl7dmFyIG09VnkoaCwyKTtyZXR1cm4gZC5lbmdpbmUub2ZmKG1bMF0sbVsxXSl9KSxubWUodGhpcy5lbmdpbmUsdGhpcy5ob3QpLHRoaXMuZW5naW5lPW51bGwsYTYoSTMoYS5wcm90b3R5cGUpLCJkaXNhYmxl''@;'; put 'put ''UGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD1mdW5jdGlvbiBpOHQobCl7dmFyIGMsYT1sW09jXSxmPVE0ZShudWxsIT1hJiZudWxsIT09KGM9YS5lbmdpbmUpJiZ2b2lkIDAhPT1jJiZjLmh5cGVyZm9ybXVsYT9h''@;'; put 'put ''LmVuZ2luZTp7fSksZD1KNGUobCk7cmV0dXJuIGZFKGZFKHt9LGYpLGQpfSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpKTsoZnVuY3Rpb24gbzh0KGwsYyl7cmV0dXJuIE9iamVjdC5rZXlzKGMpLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMCE9PWNbYV0mJmNbYV0hPT1sW2FdfSl9KSh0''@;'; put 'put ''aGlzLmVuZ2luZS5nZXRDb25maWcoKSxoKSYmdGhpcy5lbmdpbmUudXBkYXRlQ29uZmlnKGgpO3ZhciBtPXRoaXMuaG90LmdldFNldHRpbmdzKClbT2NdO2lmKGlvKG0pJiZpbyhtLnNoZWV0TmFtZSkmJm0uc2hlZXROYW1lIT09dGhpcy5zaGVldE5hbWUmJnRoaXMuc3dpdGNoU2hlZXQobS5z''@;'; put 'put ''aGVldE5hbWUpLCFkLmRhdGEmJm51bGw9PT10aGlzLnNoZWV0TmFtZSl7dmFyIF89dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtPY10uc2hlZXROYW1lO18mJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KF8pP3RoaXMuc3dpdGNoU2hlZXQodGhpcy5zaGVldE5hbWUpOnRoaXMuc2hlZXROYW1l''@;'; put 'put ''PXRoaXMuYWRkU2hlZXQoXz8/dm9pZCAwLHRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheSgpKX1hNihJMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzLGQpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO2p5KHRoaXMsbUUp''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oaCl7dmFyIG0sXz1WeShoLDIpO3JldHVybiBudWxsPT09KG09ZC5lbmdpbmUpfHx2b2lkIDA9PT1tP3ZvaWQgMDptLm9mZihfWzBdLF9bMV0pfSksUTQodGhpcyxtRSxudWxsKSxubWUodGhpcy5lbmdpbmUsdGhpcy5ob3QpLHRoaXMuZW5naW5lPW51bGwsYTYo''@;'; put 'put ''STMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiYWRkU2hlZXQiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7aWYoaW8oaCkmJiFqZmUoaCkpcmV0dXJuIFdsKCJUaGUgcHJvdmlkZWQgZGF0YSBzaG91bGQgYmUgYW4gYXJyYXkgb2YgYXJyYXlzLiIpLCExO2lm''@;'; put 'put ''KG51bGwhPWQmJnRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KGQpKXJldHVybiBXbCgiU2hlZXQgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSBhbHJlYWR5IGV4aXN0cy4iKSwhMTt0cnl7dmFyIG09dGhpcy5lbmdpbmUuYWRkU2hlZXQoZD8/dm9pZCAwKTtyZXR1cm4gaCYmdGhpcy5lbmdpbmUu''@;'; put 'put ''c2V0U2hlZXRDb250ZW50KHRoaXMuZW5naW5lLmdldFNoZWV0SWQobSksaCksbX1jYXRjaChfKXtyZXR1cm4gV2woXy5tZXNzYWdlKSwhMX19fSx7a2V5OiJzd2l0Y2hTaGVldCIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYodGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QoZCkpe3RoaXMuc2hlZXRO''@;'; put 'put ''YW1lPWQ7dmFyIGg9dGhpcy5lbmdpbmUuZ2V0U2hlZXRTZXJpYWxpemVkKHRoaXMuc2hlZXRJZCk7aC5sZW5ndGg+MCYmdGhpcy5ob3QubG9hZERhdGEoaCwiIi5jb25jYXQoQWMoT2MpLCIuc3dpdGNoU2hlZXQiKSl9ZWxzZSBJWSgiVGhlIHNoZWV0IG5hbWVkIGAiLmNvbmNhdChkLCJgIGRv''@;'; put 'put ''ZXMgbm90IGV4aXN0LCBzd2l0Y2ggYWJvcnRlZC4iKSl9fSx7a2V5OiJnZXRDZWxsVHlwZSIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5zaGVldElkLF89dGhpcy5ob3QudG9QaHlz''@;'; put 'put ''aWNhbFJvdyhkKSxPPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaCk7cmV0dXJuIG51bGwhPT1fJiZudWxsIT09Tz90aGlzLmVuZ2luZS5nZXRDZWxsVHlwZSh7c2hlZXQ6bSxyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZCksY29sOnRoaXMuY29s''@;'; put 'put ''dW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGgpfSk6IkVNUFRZIn19LHtrZXk6ImlzRm9ybXVsYUNlbGxUeXBlIix2YWx1ZTpmdW5jdGlvbihkLGgpe3JldHVybiB0aGlzLmVuZ2luZS5kb2VzQ2VsbEhhdmVGb3JtdWxhKHtzaGVldDphcmd1bWVudHMubGVuZ3RoPjIm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5zaGVldElkLHJvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChkKSxjb2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoaCl9KX19LHtrZXk6''@;'; put 'put ''InJlbmRlckRlcGVuZGVudFNoZWV0cyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sXz1uZXcgU2V0O2QuZm9yRWFjaChmdW5jdGlvbihPKXt2YXIgWCxhZT1udWxsPT1PfHxudWxs''@;'; put 'put ''PT09KFg9Ty5hZGRyZXNzKXx8dm9pZCAwPT09WD92b2lkIDA6WC5zaGVldDt2b2lkIDAhPT1hZSYmKF8uaGFzKGFlKXx8Xy5hZGQoYWUpKX0pLHRtZSh0aGlzLmVuZ2luZSkuZm9yRWFjaChmdW5jdGlvbihPLFgpe3ZhciBhZTsobXx8WCE9PWguc2hlZXRJZCkmJl8uaGFzKFgpJiYoTy5yZW5k''@;'; put 'put ''ZXIoKSxudWxsPT09KGFlPU8udmlldyl8fHZvaWQgMD09PWFlfHxhZS5hZGp1c3RFbGVtZW50c1NpemUoKSl9KX19LHtrZXk6InZhbGlkYXRlRGVwZW5kZW50Q2VsbHMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsXz1mdW5jdGlvbihhZSl7dmFyIHBlLGJlPW51bGwhPT0ocGU9YWU/''@;'; put 'put ''LmFkZHJlc3MpJiZ2b2lkIDAhPT1wZT9wZTp7fSx4ZT1iZS5yb3csVmU9YmUuY29sLFplPWJlLnNoZWV0O3JldHVybiBpbyhaZSk/IiIuY29uY2F0KFplLCI6IikuY29uY2F0KHhlLCJ4IikuY29uY2F0KFZlKToiIn0sTz1uZXcgU2V0KChhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10pLm1hcChmdW5jdGlvbihYKXtyZXR1cm4gXyhYKX0pKTtkLmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIGFlLHBlLGJlPW51bGwhPT0oYWU9WC5hZGRyZXNzKSYmdm9pZCAwIT09YWU/YWU6e30seGU9YmUucm93LFZlPWJlLmNvbDtpZighKCExPT09''@;'; put 'put ''aW8oeGUpfHwhMT09PWlvKFZlKXx8eGU+PWguaG90LmNvdW50Um93cygpfHxWZT49aC5ob3QuY291bnRDb2xzKCkpKXt2YXIgWmU9bnVsbD09WHx8bnVsbD09PShwZT1YLmFkZHJlc3MpfHx2b2lkIDA9PT1wZT92b2lkIDA6cGUuc2hlZXQsbHQ9XyhYKTtpZih2b2lkIDAhPT1aZSYmIU8uaGFz''@;'; put 'put ''KGx0KSl7dmFyIGR0PXRtZShoLmVuZ2luZSkuZ2V0KFplKTtpZighZHQpcmV0dXJuO2R0LnZhbGlkYXRlQ2VsbChkdC5nZXREYXRhQXRDZWxsKHhlLFZlKSxkdC5nZXRDZWxsTWV0YSh4ZSxWZSksZnVuY3Rpb24oKXt9KX19fSl9fSx7a2V5OiJzeW5jQ2hhbmdlV2l0aEVuZ2luZSIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZCksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGgpLHNoZWV0OnRoaXMuc2hlZXRJZH07aWYodGhpcy5lbmdpbmUu''@;'; put 'put ''aXNJdFBvc3NpYmxlVG9TZXRDZWxsQ29udGVudHMoXykpe3ZhciBPPXRoaXMuaG90LmdldENlbGxNZXRhKGQsaCk7cmV0dXJuIFpxKG0sTy50eXBlKSYmKG9tZShtLE8uZGF0ZUZvcm1hdCk/bT1hbWUobSxPLmRhdGVGb3JtYXQpOiExPT09ZnVuY3Rpb24gcDh0KGwpe3JldHVybiJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgbCYmbC5zdGFydHNXaXRoKCI9Iil9KG0pJiYobT0iJyIuY29uY2F0KG0pKSksdGhpcy5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKF8sbSl9V2woIk5vdCBwb3NzaWJsZSB0byBzZXQgY2VsbCBkYXRhIGF0ICIuY29uY2F0KEpTT04uc3RyaW5naWZ5KF8pKSl9fSx7a2V5OiJvbkJl''@;'; put 'put ''Zm9yZVZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF89dGhpcy5ob3QucHJvcFRvQ29sKG0pO2lmKHRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUoaCxfKSl7dmFyIE89e3Jvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChoKSxjb2w6dGhpcy5j''@;'; put 'put ''b2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoXyksc2hlZXQ6dGhpcy5zaGVldElkfSxYPXRoaXMuaG90LmdldENlbGxNZXRhKGgsXyksYWU9dGhpcy5lbmdpbmUuZ2V0Q2VsbFZhbHVlKE8pO3JldHVybiJkYXRlIj09PVgudHlwZSYmdDAoYWUpJiYoYWU9bG1lKGFl''@;'; put 'put ''LFguZGF0ZUZvcm1hdCkpLCJvYmplY3QiPT09SjQoYWUpJiZudWxsIT09YWU/YWUudmFsdWU6YWV9cmV0dXJuIGR9fSx7a2V5OiJvbkJlZm9yZUF1dG9maWxsIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF89aC5nZXRUb3BTdGFydENvcm5lcigpLE89Xy5yb3csWD1fLmNvbCxhZT1oLmdl''@;'; put 'put ''dEJvdHRvbUVuZENvcm5lcigpLHBlPWFlLnJvdyxiZT1hZS5jb2wseGU9bS5nZXRUb3BTdGFydENvcm5lcigpLFZlPXhlLnJvdyxaZT14ZS5jb2wsbHQ9bS5nZXRCb3R0b21FbmRDb3JuZXIoKSxkdD1sdC5yb3csZ3Q9bHQuY29sLGp0PXtzdGFydDp7cm93OnRoaXMucm93QXhpc1N5bmNlci5n''@;'; put 'put ''ZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KE8pLGNvbDp0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChYKSxzaGVldDp0aGlzLnNoZWV0SWR9LGVuZDp7cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHBlKSxjb2w6''@;'; put 'put ''dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYmUpLHNoZWV0OnRoaXMuc2hlZXRJZH19LHJuPXtzdGFydDp7cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KFZlKSxjb2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdl''@;'; put 'put ''dEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoWmUpLHNoZWV0OnRoaXMuc2hlZXRJZH0sZW5kOntyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZHQpLGNvbDp0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChndCksc2hl''@;'; put 'put ''ZXQ6dGhpcy5zaGVldElkfX07aWYoITE9PT10aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhybikpcmV0dXJuITE7Zm9yKHZhciBYdD10aGlzLmVuZ2luZS5nZXRGaWxsUmFuZ2VEYXRhKGp0LHJuKSx5bj1qdC5zdGFydCxWcj1qdC5lbmQsc2k9VnIucm93LXluLnJv''@;'; put 'put ''dysxLEFyPVZyLmNvbC15bi5jb2wrMSxFbj0wO0VuPFh0Lmxlbmd0aDtFbis9MSlmb3IodmFyIFRyPTA7VHI8WHRbRW5dLmxlbmd0aDtUcis9MSl7dmFyIFZuPVh0W0VuXVtUcl0sY3I9RW4lc2ksQ3I9VHIlQXIsWXI9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoY3IsQ3IpO1pxKFZuLFlyLnR5cGUp''@;'; put 'put ''JiYoVm4uc3RhcnRzV2l0aCgiJyIpP1h0W0VuXVtUcl09Vm4uc2xpY2UoMSk6ITE9PT10aGlzLmlzRm9ybXVsYUNlbGxUeXBlKGNyLENyLHRoaXMuc2hlZXRJZCkmJihYdFtFbl1bVHJdPW04dChWbixZci5kYXRlRm9ybWF0KSkpfXJldHVybiBYdH19LHtrZXk6Im9uQmVmb3JlTG9hZERhdGEi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGQsaCl7KGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiIikuaW5jbHVkZXMoQWMoT2MpKXx8UTQodGhpcyx0WCxMbCh0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRhdGEpKX19LHtrZXk6Im9uQWZ0ZXJDZWxsTWV0''@;'; put 'put ''YVJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKSxtPSExO2guZm9yRWFjaChmdW5jdGlvbihfLE8pe18uZm9yRWFjaChmdW5jdGlvbihYLGFlKXt2YXIgcGU9ZC5ob3QuZ2V0Q2VsbE1ldGEoTyxhZSksYmU9cGUuZGF0ZUZv''@;'; put 'put ''cm1hdDtacShYLHBlLnR5cGUpJiYobT0hMCxvbWUoWCxiZSk/aFtPXVthZV09YW1lKFgsYmUpOiExPT09ZC5pc0Zvcm11bGFDZWxsVHlwZShPLGFlKSYmKGhbT11bYWVdPSInIi5jb25jYXQoWCkpKX0pfSksITA9PT1tJiYoUTQodGhpcyxSMywhMCksdGhpcy5lbmdpbmUuc2V0U2hlZXRDb250''@;'; put 'put ''ZW50KHRoaXMuc2hlZXRJZCxoKSxRNCh0aGlzLFIzLCExKSl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7aWYoIShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIpLmluY2x1ZGVzKEFjKE9jKSkpaWYo''@;'; put 'put ''dGhpcy5zaGVldE5hbWU9ZnVuY3Rpb24gZDh0KGwsYyl7cmV0dXJuKExsKGMpfHwhbC5kb2VzU2hlZXRFeGlzdChjKSkmJihjPWwuYWRkU2hlZXQoYykpLGN9KHRoaXMuZW5naW5lLHRoaXMuaG90LmdldFNldHRpbmdzKClbT2NdLnNoZWV0TmFtZSksankodGhpcyx0WCkpdGhpcy5zd2l0Y2hT''@;'; put 'put ''aGVldCh0aGlzLnNoZWV0TmFtZSk7ZWxzZXt2YXIgXz10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXJyYXkoKTtpZih0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlcGxhY2VTaGVldENvbnRlbnQodGhpcy5zaGVldElkLF8pKXtRNCh0aGlzLFIzLCEwKTt2YXIgTz10aGlzLmVuZ2luZS5zZXRT''@;'; put 'put ''aGVldENvbnRlbnQodGhpcy5zaGVldElkLF8pO3RoaXMuaW5kZXhTeW5jZXIuc2V0dXBTeW5jRW5kcG9pbnQodGhpcy5lbmdpbmUsdGhpcy5zaGVldElkKSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhPKSxRNCh0aGlzLFIzLCExKX19fX0se2tleToib25Nb2RpZnlEYXRhIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihkLGgsbSxfKXtpZigiZ2V0Ij09PV8mJiFqeSh0aGlzLFIzKSYmbnVsbCE9PXRoaXMuc2hlZXROYW1lJiZ0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSkpe3ZhciBPPXRoaXMuaG90LnRvVmlzdWFsUm93KGQpO2lmKG51bGwhPT1PJiZudWxsIT09aCl7''@;'; put 'put ''aWYoIXRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUoTyxoKSYmIkFSUkFZIiE9PXRoaXMuZ2V0Q2VsbFR5cGUoTyxoKSlyZXR1cm4gdm9pZChpbWUobS52YWx1ZSkmJihtLnZhbHVlPWZ1bmN0aW9uIGg4dChsKXtyZXR1cm4gaW1lKGwpP2wuc3Vic3RyKDEpOmx9KG0udmFsdWUpKSk7dmFyIHBlPXty''@;'; put 'put ''b3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoTyksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGgpLHNoZWV0OnRoaXMuc2hlZXRJZH0sYmU9dGhpcy5lbmdpbmUuZ2V0Q2VsbFZhbHVlKHBlKSx4ZT10aGlz''@;'; put 'put ''LmhvdC5nZXRDZWxsTWV0YShPLGgpOyJkYXRlIj09PXhlLnR5cGUmJnQwKGJlKSYmKGJlPWxtZShiZSx4ZS5kYXRlRm9ybWF0KSk7dmFyIFZlPSJvYmplY3QiPT09SjQoYmUpJiZudWxsIT09YmU/YmUudmFsdWU6YmU7bS52YWx1ZT1WZX19fX0se2tleToib25Nb2RpZnlTb3VyY2VEYXRhIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXtpZigiZ2V0Ij09PV8mJiFqeSh0aGlzLFIzKSYmbnVsbCE9PXRoaXMuc2hlZXROYW1lJiZ0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSkpe3ZhciBPPXRoaXMuaG90LnRvVmlzdWFsUm93KGQpLFg9dGhpcy5ob3QucHJvcFRv''@;'; put 'put ''Q29sKGgpO2lmKG51bGwhPT1PJiZudWxsIT09WCl7aWYoIXRoaXMuaXNGb3JtdWxhQ2VsbFR5cGUoTyxYKSYmIkFSUkFZIiE9PXRoaXMuZ2V0Q2VsbFR5cGUoTyxYKSlyZXR1cm47dmFyIGJlPXRoaXMuZW5naW5lLmdldFNoZWV0RGltZW5zaW9ucyh0aGlzLmVuZ2luZS5nZXRTaGVldElkKHRo''@;'; put 'put ''aXMuc2hlZXROYW1lKSk7aWYoMCE9PWJlLndpZHRofHwwIT09YmUuaGVpZ2h0KXt2YXIgeGU9e3Jvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChPKSxjb2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoWCksc2hl''@;'; put 'put ''ZXQ6dGhpcy5zaGVldElkfTttLnZhbHVlPXRoaXMuZW5naW5lLmdldENlbGxTZXJpYWxpemVkKHhlKX19fX19LHtrZXk6Im9uQWZ0ZXJTZXREYXRhQXRDZWxsIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXM7aWYoIXp5KGgpKXt2YXIgXz1bXSxPPVtdLFg9dGhpcy5lbmdpbmUuYmF0''@;'; put 'put ''Y2goZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24oYWUpe3ZhciBwZT1WeShhZSw0KSxiZT1wZVswXSxWZT1wZVszXSxaZT1tLmhvdC5wcm9wVG9Db2wocGVbMV0pLGx0PW0uaG90LnRvUGh5c2ljYWxSb3coYmUpLGR0PW0uaG90LnRvUGh5c2ljYWxDb2x1bW4oWmUpLGd0PXtyb3c6bS5y''@;'; put 'put ''b3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYmUpLGNvbDptLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChaZSksc2hlZXQ6bS5zaGVldElkfTtudWxsIT09bHQmJm51bGwhPT1kdD9tLnN5bmNDaGFuZ2VXaXRoRW5naW5lKGJlLFplLFZl''@;'; put 'put ''KTpfLnB1c2goW2JlLFplLFZlXSksTy5wdXNoKHthZGRyZXNzOmd0fSl9KX0pO18ubGVuZ3RoJiZ0aGlzLmhvdC5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGFlPW0uZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7Xy5mb3JFYWNoKGZ1bmN0aW9uKHBlKXt2YXIgYmU9''@;'; put 'put ''VnkocGUsMyk7bS5zeW5jQ2hhbmdlV2l0aEVuZ2luZShiZVswXSxiZVsxXSxiZVsyXSl9KX0pO20ucmVuZGVyRGVwZW5kZW50U2hlZXRzKGFlLCEwKX0pLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKFgpLHRoaXMudmFsaWRhdGVEZXBlbmRlbnRDZWxscyhYLE8pfX19LHtrZXk6Im9uQWZ0''@;'; put 'put ''ZXJTZXRTb3VyY2VEYXRhQXRDZWxsIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXM7aWYoIXp5KGgpKXt2YXIgXz1bXSxPPVtdO2QuZm9yRWFjaChmdW5jdGlvbihYKXt2YXIgYWU9VnkoWCw0KSxwZT1hZVswXSx4ZT1hZVszXSxWZT1tLmhvdC5wcm9wVG9Db2woYWVbMV0pO2lmKHQw''@;'; put 'put ''KFZlKSl7dmFyIFplPXtyb3c6bS5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgocGUpLGNvbDptLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChWZSksc2hlZXQ6bS5zaGVldElkfTtpZighbS5lbmdpbmUuaXNJdFBvc3NpYmxlVG9TZXRD''@;'; put 'put ''ZWxsQ29udGVudHMoWmUpKXJldHVybiB2b2lkIFdsKCJOb3QgcG9zc2libGUgdG8gc2V0IHNvdXJjZSBjZWxsIGRhdGEgYXQgIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoWmUpKSk7Ty5wdXNoKHthZGRyZXNzOlplfSksXy5wdXNoLmFwcGx5KF8sZnVuY3Rpb24gUjh0KGwpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBGOHQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gSnEobCl9KGwpfHxmdW5jdGlvbiBQOHQobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8aG1l''@;'; put 'put ''KGwpfHxmdW5jdGlvbiBMOHQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgp''@;'; put 'put ''IG1ldGhvZC4iKX0oKX0obS5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKFplLHhlKSkpfX0pLHRoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKF8pLHRoaXMudmFsaWRhdGVEZXBlbmRlbnRDZWxscyhfLE8pfX19LHtrZXk6Im9uQmVmb3JlQ3JlYXRlUm93Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3Zh''@;'; put 'put ''ciBtPXRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGQpO2lmKGQ+PXRoaXMuaG90LmNvdW50Um93cygpJiYobT1kKSxudWxsPT09dGhpcy5zaGVldElkfHwhdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QodGhpcy5zaGVldE5hbWUpfHwhdGhpcy5lbmdpbmUu''@;'; put 'put ''aXNJdFBvc3NpYmxlVG9BZGRSb3dzKHRoaXMuc2hlZXRJZCxbbSxoXSkpcmV0dXJuITF9fSx7a2V5OiJvbkJlZm9yZUNyZWF0ZUNvbCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChkKTtpZihkPj10aGlz''@;'; put 'put ''LmhvdC5jb3VudENvbHMoKSYmKG09ZCksbnVsbD09PXRoaXMuc2hlZXRJZHx8IXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKXx8IXRoaXMuZW5naW5lLmlzSXRQb3NzaWJsZVRvQWRkQ29sdW1ucyh0aGlzLnNoZWV0SWQsW20saF0pKXJldHVybiExfX0se2tleToi''@;'; put 'put ''b25CZWZvcmVSZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz10aGlzO3JldHVybiExIT09dGhpcy5yb3dBeGlzU3luY2VyLnNldFJlbW92ZWRIZkluZGV4ZXMobSkuZXZlcnkoZnVuY3Rpb24oYWUpe3JldHVybiBfLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlbW92ZVJvd3Mo''@;'; put 'put ''Xy5zaGVldElkLFthZSwxXSl9KSYmdm9pZCAwfX0se2tleToib25CZWZvcmVSZW1vdmVDb2wiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz10aGlzO3JldHVybiExIT09dGhpcy5jb2x1bW5BeGlzU3luY2VyLnNldFJlbW92ZWRIZkluZGV4ZXMobSkuZXZlcnkoZnVuY3Rpb24oYWUpe3Jl''@;'; put 'put ''dHVybiBfLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnMoXy5zaGVldElkLFthZSwxXSl9KSYmdm9pZCAwfX0se2tleToib25BZnRlckNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe2lmKCF6eShtKSl7dmFyIF89dGhpcy5lbmdpbmUuYWRkUm93cyh0aGlzLnNoZWV0''@;'; put 'put ''SWQsW3RoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGQpLGhdKTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhfKX19fSx7a2V5OiJvbkFmdGVyQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7aWYoIXp5KG0pKXt2YXIgXz10aGlzLmVuZ2luZS5h''@;'; put 'put ''ZGRDb2x1bW5zKHRoaXMuc2hlZXRJZCxbdGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZCksaF0pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKF8pfX19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBP''@;'; put 'put ''PXRoaXM7aWYoIXp5KF8pKXt2YXIgWD10aGlzLnJvd0F4aXNTeW5jZXIuZ2V0UmVtb3ZlZEhmSW5kZXhlcygpLnNvcnQoKS5yZXZlcnNlKCksYWU9dGhpcy5lbmdpbmUuYmF0Y2goZnVuY3Rpb24oKXtYLmZvckVhY2goZnVuY3Rpb24ocGUpe08uZW5naW5lLnJlbW92ZVJvd3MoTy5zaGVldElk''@;'; put 'put ''LFtwZSwxXSl9KX0pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGFlKX19fSx7a2V5OiJvbkFmdGVyUmVtb3ZlQ29sIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXt2YXIgTz10aGlzO2lmKCF6eShfKSl7dmFyIFg9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldFJlbW92ZWRIZkluZGV4ZXMo''@;'; put 'put ''KS5zb3J0KCkucmV2ZXJzZSgpLGFlPXRoaXMuZW5naW5lLmJhdGNoKGZ1bmN0aW9uKCl7WC5mb3JFYWNoKGZ1bmN0aW9uKHBlKXtPLmVuZ2luZS5yZW1vdmVDb2x1bW5zKE8uc2hlZXRJZCxbcGUsMV0pfSl9KTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhhZSl9fX0se2tleToib25BZnRl''@;'; put 'put ''ckRldGFjaENoaWxkIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF8sTz10aGlzO1E0KHRoaXMsUjMsITApO3ZhciBYPXRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheShtLDAsbSsoKG51bGw9PT0oXz1oLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT1fP3ZvaWQgMDpfLmxlbmd0aCl8fDApLHRo''@;'; put 'put ''aXMuaG90LmNvdW50U291cmNlQ29scygpKTtRNCh0aGlzLFIzLCExKSxYLmZvckVhY2goZnVuY3Rpb24oYWUscGUpe2FlLmZvckVhY2goZnVuY3Rpb24oYmUseGUpe08uZW5naW5lLnNldENlbGxDb250ZW50cyh7Y29sOnhlLHJvdzptK3BlLHNoZWV0Ok8uc2hlZXRJZH0sW1tiZV1dKX0pfSl9''@;'; put 'put ''fSx7a2V5OiJvbkVuZ2luZVZhbHVlc1VwZGF0ZWQiLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIixkKX19LHtrZXk6Im9uRW5naW5lTmFtZWRFeHByZXNzaW9uc0FkZGVkIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuaG90''@;'; put 'put ''LnJ1bkhvb2tzKCJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIixkLGgpfX0se2tleToib25FbmdpbmVOYW1lZEV4cHJlc3Npb25zUmVtb3ZlZCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIixkLGgpfX0se2tleToi''@;'; put 'put ''b25FbmdpbmVTaGVldEFkZGVkIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTaGVldEFkZGVkIixkKX19LHtrZXk6Im9uRW5naW5lU2hlZXRSZW5hbWVkIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVuYW1lZCIs''@;'; put 'put ''ZCxoKX19LHtrZXk6Im9uRW5naW5lU2hlZXRSZW1vdmVkIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNoZWV0UmVtb3ZlZCIsZCxoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9jfX0se2tleToiUExVR0lOX1BSSU9S''@;'; put 'put ''SVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjYwfX0se2tleToiU0VUVElOR19LRVlTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bT2NdLmNvbmNhdChYOHQpfX1dKSxhfShHYSk7ZnVuY3Rpb24gdm1lKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBh''@;'; put 'put ''PTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gdlAobCl7cmV0dXJuIGZ1bmN0aW9uIHV2dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBuWChsKX0obCl8fGZ1bmN0aW9uIHN2dChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9''@;'; put 'put ''bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBsdnQobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIG5YKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs''@;'; put 'put ''KGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBl''@;'; put 'put ''ZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBuWChsLGMpfX0obCl8fGZ1bmN0aW9uIGF2dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmpl''@;'; put 'put ''Y3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG5YKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24g''@;'; put 'put ''VXkobCl7cmV0dXJuKFV5PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0''@;'; put 'put ''b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24geW1lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZh''@;'; put 'put ''bHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxodnQoZi5rZXkpLGYpfX1mdW5jdGlvbiBodnQobCl7dmFyIGM9ZnVuY3Rpb24gcHZ0KGwsYyl7aWYoIm9iamVjdCIhPT1VeShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9Qcmlt''@;'; put 'put ''aXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1VeShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09''@;'; put 'put ''PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09VXkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gbDYoKXtyZXR1cm4gbDY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBk''@;'; put 'put ''PWZ1bmN0aW9uIG12dChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9TDMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9o''@;'; put 'put ''LmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxsNi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gclgobCxjKXtyZXR1cm4oclg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1''@;'; put 'put ''cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBpWChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gTDMobCl7''@;'; put 'put ''cmV0dXJuKEwzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gYm1lKGwsYyxhKXsoZnVuY3Rpb24gX3Z0KGwsYyl7aWYo''@;'; put 'put ''Yy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBIMShsLGMpe3JldHVybiBmdW5jdGlvbiB3dnQobCxjKXtyZXR1cm4gYy5n''@;'; put 'put ''ZXQ/Yy5nZXQuY2FsbChsKTpjLnZhbHVlfShsLF9tZShsLGMsImdldCIpKX1mdW5jdGlvbiBnRShsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uIEN2dChsLGMsYSl7aWYoYy5zZXQpYy5zZXQuY2FsbChsLGEpO2Vsc2V7aWYoIWMud3JpdGFibGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVk''@;'; put 'put ''IHRvIHNldCByZWFkIG9ubHkgcHJpdmF0ZSBmaWVsZCIpO2MudmFsdWU9YX19KGwsX21lKGwsYywic2V0IiksYSksYX1mdW5jdGlvbiBfbWUobCxjLGEpe2lmKCFjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gIithKyIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5z''@;'; put 'put ''dGFuY2UiKTtyZXR1cm4gYy5nZXQobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUhpZGVDb2x1bW5zIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVySGlkZUNvbHVtbnMiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlVW5oaWRlQ29sdW1u''@;'; put 'put ''cyIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclVuaGlkZUNvbHVtbnMiKTt2YXIgb1g9ImhpZGRlbkNvbHVtbnMiLCRoPW5ldyBXZWFrTWFwLEtoPW5ldyBXZWFrTWFwLE12dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gZ3Z0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMm''@;'; put 'put ''Jm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmln''@;'; put 'put ''dXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnJYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gdnZ0KGwpe3ZhciBjPWZ1bmN0aW9uIGJ2dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0''@;'; put 'put ''fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNo''@;'; put 'put ''e3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUwzKGwpO2lmKGMpe3ZhciBoPUwzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiB5dnQo''@;'; put 'put ''bCxjKXtpZihjJiYoIm9iamVjdCI9PT1VeShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gaVgo''@;'; put 'put ''bCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7IWZ1bmN0aW9uIGZ2dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO2Zvcih2YXIgZD1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3JldHVybiBibWUoaVgoZj1jLmNhbGwuYXBwbHkoYyxbdGhpc10uY29uY2F0KGgpKSksJGgse3dyaXRhYmxlOiEwLHZhbHVlOnt9fSksYm1lKGlYKGYpLEtoLHt3cml0YWJsZTohMCx2YWx1ZTpudWxsfSks''@;'; put 'put ''Zn1yZXR1cm4gZnVuY3Rpb24gZHZ0KGwsYyxhKXtjJiZ5bWUobC5wcm90b3R5cGUsYyksYSYmeW1lKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMu''@;'; put 'put ''aG90LmdldFNldHRpbmdzKClbb1hdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7dmFyIGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtvWF07cGEoaCkmJihnRSh0aGlzLCRoLGgpLExsKGguY29weVBhc3RlRW5hYmxl''@;'; put 'put ''ZCkmJihoLmNvcHlQYXN0ZUVuYWJsZWQ9ITApKSxnRSh0aGlzLEtoLG5ldyBqUiksSDEodGhpcyxLaCkuYWRkTG9jYWxIb29rKCJpbml0IixmdW5jdGlvbigpe3JldHVybiBkLm9uTWFwSW5pdCgpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5O''@;'; put 'put ''YW1lLEgxKHRoaXMsS2gpKSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucy5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q2VsbE1l''@;'; put 'put ''dGEiLGZ1bmN0aW9uKG0sXyxPKXtyZXR1cm4gZC5vbkFmdGVyR2V0Q2VsbE1ldGEobSxfLE8pfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsZnVuY3Rpb24obSxfKXtyZXR1cm4gZC5vbk1vZGlmeUNvbFdpZHRoKG0sXyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVy''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJHZXRDb2xIZWFkZXIuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb3B5YWJsZVJhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbk1vZGlmeUNvcHlhYmxlUmFuZ2UobSl9KSxsNihMMyhhLnByb3RvdHlwZSks''@;'; put 'put ''ImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxsNihMMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19''@;'; put 'put ''LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpLGdFKHRoaXMsJGgse30pLGw2KEwzKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSx0''@;'; put 'put ''aGlzLnJlc2V0Q2VsbHNNZXRhKCl9fSx7a2V5OiJzaG93Q29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPXRoaXMuZ2V0SGlkZGVuQ29sdW1ucygpLF89dGhpcy5pc1ZhbGlkQ29uZmlnKGQpLE89bSxYPUgxKHRoaXMsS2gpLmdldFZhbHVlcygpLnNsaWNlKCksYWU9ZC5s''@;'; put 'put ''ZW5ndGg+MDtfJiZhZSYmKFJuKGQubWFwKGZ1bmN0aW9uKHhlKXtyZXR1cm4gaC5ob3QudG9QaHlzaWNhbENvbHVtbih4ZSl9KSxmdW5jdGlvbih4ZSl7WFt4ZV09ITF9KSxPPVBzKFgsZnVuY3Rpb24oeGUsVmUsWmUpe3JldHVybiBWZSYmeGUucHVzaChoLmhvdC50b1Zpc3VhbENvbHVtbiha''@;'; put 'put ''ZSkpLHhlfSxbXSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVuaGlkZUNvbHVtbnMiLG0sTyxfJiZhZSkmJihfJiZhZSYmSDEodGhpcyxLaCkuc2V0VmFsdWVzKFgpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVW5o''@;'; put 'put ''aWRlQ29sdW1ucyIsbSxPLF8mJmFlLF8mJk8ubGVuZ3RoPG0ubGVuZ3RoKSl9fSx7a2V5OiJzaG93Q29sdW1uIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3RoaXMuc2hvd0Nv''@;'; put 'put ''bHVtbnMoaCl9fSx7a2V5OiJoaWRlQ29sdW1ucyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPXRoaXMuZ2V0SGlkZGVuQ29sdW1ucygpLF89dGhpcy5pc1ZhbGlkQ29uZmlnKGQpLE89bTtfJiYoTz1BcnJheS5mcm9tKG5ldyBTZXQobS5jb25jYXQoZCkpKSksITEhPT10aGlzLmhv''@;'; put 'put ''dC5ydW5Ib29rcygiYmVmb3JlSGlkZUNvbHVtbnMiLG0sTyxfKSYmKF8mJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Um4oZCxmdW5jdGlvbihhZSl7SDEoaCxLaCkuc2V0VmFsdWVBdEluZGV4KGguaG90LnRvUGh5c2ljYWxDb2x1bW4oYWUpLCEwKX0pfSwhMCksdGhpcy5o''@;'; put 'put ''b3QucnVuSG9va3MoImFmdGVySGlkZUNvbHVtbnMiLG0sTyxfLF8mJk8ubGVuZ3RoPm0ubGVuZ3RoKSl9fSx7a2V5OiJoaWRlQ29sdW1uIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRz''@;'; put 'put ''W21dO3RoaXMuaGlkZUNvbHVtbnMoaCl9fSx7a2V5OiJnZXRIaWRkZW5Db2x1bW5zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJuIGhhKEgxKHRoaXMsS2gpLmdldEhpZGRlbkluZGV4ZXMoKSxmdW5jdGlvbihoKXtyZXR1cm4gZC5ob3QudG9WaXN1YWxDb2x1bW4oaCl9KX19''@;'; put 'put ''LHtrZXk6ImlzSGlkZGVuIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gSDEodGhpcyxLaCkuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZCkpfHwhMX19LHtrZXk6ImlzVmFsaWRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuaG90LmNvdW50''@;'; put 'put ''Q29scygpO3JldHVybiEhKEFycmF5LmlzQXJyYXkoZCkmJmQubGVuZ3RoPjApJiZkLmV2ZXJ5KGZ1bmN0aW9uKG0pe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG0pJiZtPj0wJiZtPGh9KX19LHtrZXk6InJlc2V0Q2VsbHNNZXRhIix2YWx1ZTpmdW5jdGlvbigpe1JuKHRoaXMuaG90LmdldENl''@;'; put 'put ''bGxzTWV0YSgpLGZ1bmN0aW9uKGQpe2QmJihkLnNraXBDb2x1bW5PblBhc3RlPSExKX0pfX0se2tleToib25Nb2RpZnlDb2xXaWR0aCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtyZXR1cm4gdGhpcy5pc0hpZGRlbihoKT8wOkgxKHRoaXMsJGgpLmluZGljYXRvcnMmJih0aGlzLmlzSGlkZGVuKGgr''@;'; put 'put ''MSl8fHRoaXMuaXNIaWRkZW4oaC0xKSkmJiJudW1iZXIiPT10eXBlb2YgZCYmdGhpcy5ob3QuaGFzQ29sSGVhZGVycygpP2QrMTU6dm9pZCAwfX0se2tleToib25BZnRlckdldENlbGxNZXRhIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7aWYoITE9PT1IMSh0aGlzLCRoKS5jb3B5UGFzdGVFbmFi''@;'; put 'put ''bGVkJiZ0aGlzLmlzSGlkZGVuKGgpJiYobS5za2lwQ29sdW1uT25QYXN0ZT0hMCksdGhpcy5pc0hpZGRlbihoLTEpKW0uY2xhc3NOYW1lPW0uY2xhc3NOYW1lfHwiIiwtMT09PW0uY2xhc3NOYW1lLmluZGV4T2YoImFmdGVySGlkZGVuQ29sdW1uIikmJihtLmNsYXNzTmFtZSs9IiBhZnRlckhp''@;'; put 'put ''ZGRlbkNvbHVtbiIpO2Vsc2UgaWYobS5jbGFzc05hbWUpe3ZhciBfPW0uY2xhc3NOYW1lLnNwbGl0KCIgIik7aWYoXy5sZW5ndGg+MCl7dmFyIE89Xy5pbmRleE9mKCJhZnRlckhpZGRlbkNvbHVtbiIpO08+LTEmJl8uc3BsaWNlKE8sMSksbS5jbGFzc05hbWU9Xy5qb2luKCIgIil9fX19LHtr''@;'; put 'put ''ZXk6Im9uTW9kaWZ5Q29weWFibGVSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztpZihIMSh0aGlzLCRoKS5jb3B5UGFzdGVFbmFibGVkKXJldHVybiBkO3ZhciBtPVtdLF89ZnVuY3Rpb24oWCxhZSxwZSxiZSl7bS5wdXNoKHtzdGFydFJvdzpYLGVuZFJvdzphZSxzdGFydENv''@;'; put 'put ''bDpwZSxlbmRDb2w6YmV9KX07cmV0dXJuIFJuKGQsZnVuY3Rpb24oTyl7dmFyIFg9ITAsYWU9MDtfbyhPLnN0YXJ0Q29sLE8uZW5kQ29sLGZ1bmN0aW9uKHBlKXtoLmlzSGlkZGVuKHBlKT8oWHx8XyhPLnN0YXJ0Um93LE8uZW5kUm93LGFlLHBlLTEpLFg9ITApOihYJiYoYWU9cGUpLHBlPT09''@;'; put 'put ''Ty5lbmRDb2wmJl8oTy5zdGFydFJvdyxPLmVuZFJvdyxhZSxwZSksWD0hMSl9KX0pLG19fSx7a2V5OiJvbkFmdGVyR2V0Q29sSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihkLGgpe2lmKEgxKHRoaXMsJGgpLmluZGljYXRvcnMmJiEoZDwwKSl7dmFyIG09W107ZD49MSYmdGhpcy5pc0hpZGRlbihk''@;'; put 'put ''LTEpJiZtLnB1c2goImFmdGVySGlkZGVuQ29sdW1uIiksZDx0aGlzLmhvdC5jb3VudENvbHMoKS0xJiZ0aGlzLmlzSGlkZGVuKGQrMSkmJm0ucHVzaCgiYmVmb3JlSGlkZGVuQ29sdW1uIiksZ2koaCxtKX19fSx7a2V5OiJvbkFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oZCl7ZC5pdGVtcy5wdXNoKHtuYW1lOmJhfSxmdW5jdGlvbiBvdnQobCl7cmV0dXJue2tleToiaGlkZGVuX2NvbHVtbnNfaGlkZSIsbmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWRMYXN0KCksZj0wO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBkPWZ1bmN0''@;'; put 'put ''aW9uIGV2dChsLGMpe3JldHVybiBmdW5jdGlvbiBpdnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIHJ2dChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYo''@;'; put 'put ''bnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1bXSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMp''@;'; put 'put ''O089ITApO31jYXRjaChhZSl7WD0hMCxkPWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24gbnZ0KGwsYyl7aWYobCl7aWYo''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBsKXJldHVybiB2bWUobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJl''@;'; put 'put ''dHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIHZtZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gdHZ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0''@;'; put 'put ''IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oYSw0KTtkWzFdLWRbM10hPTAmJihmPTEpfXJldHVybiB0aGlz''@;'; put 'put ''LmdldFRyYW5zbGF0ZWRQaHJhc2UoS0csZil9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxmPWEuZnJvbSxkPWEudG8saD1NYXRoLm1heChNYXRoLm1pbihmLmNvbCxkLmNvbCksMCksbT1NYXRoLm1heChmLmNvbCxkLmNvbCksXz1b''@;'; put 'put ''XSxPPWg7Tzw9bTtPKz0xKV8ucHVzaChPKTtsLmhpZGVDb2x1bW5zKF8pO3ZhciBhZT10aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChfW18ubGVuZ3RoLTFdLDEsITApO051bWJlci5pc0ludGVnZXIoYWUpJiZhZT49MD90aGlzLnNlbGVjdENvbHVtbnMo''@;'; put 'put ''YWUpOnRoaXMuZGVzZWxlY3RDZWxsKCksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKX0sZGlzYWJsZWQ6ITEsaGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5zZWxlY3Rp''@;'; put 'put ''b24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkpfX19KHRoaXMpLGZ1bmN0aW9uIGN2dChsKXt2YXIgYz1bXTtyZXR1cm57a2V5OiJoaWRkZW5fY29sdW1uc19zaG93IixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShxRyxjLmxlbmd0aD4xPzE6MCl9LGNhbGxi''@;'; put 'put ''YWNrOmZ1bmN0aW9uKCl7dmFyIGYsZDtpZigwIT09Yy5sZW5ndGgpe3ZhciBoPWNbMF0sbT1jW2MubGVuZ3RoLTFdO2g9bnVsbCE9PShmPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGgtMSwtMSkpJiZ2b2lkIDAhPT1mP2Y6MCxtPW51bGwhPT0oZD10''@;'; put 'put ''aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChtKzEsMSkpJiZ2b2lkIDAhPT1kP2Q6dGhpcy5jb3VudENvbHMoKS0xLGwuc2hvd0NvbHVtbnMoYyksdGhpcy5yZW5kZXIoKSx0aGlzLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCEwKSxtLWgrMT09PXRoaXMu''@;'; put 'put ''Y291bnRDb2xzKCl8fHRoaXMuc2VsZWN0Q29sdW1ucyhoLG0pfX0sZGlzYWJsZWQ6ITEsaGlkZGVuOmZ1bmN0aW9uKCl7dmFyIGY9dGhpcyxkPWhhKGwuZ2V0SGlkZGVuQ29sdW1ucygpLGZ1bmN0aW9uKGd0KXtyZXR1cm4gZi50b1BoeXNpY2FsQ29sdW1uKGd0KX0pO2lmKCF0aGlzLnNlbGVj''@;'; put 'put ''dGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSYmIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHxkLmxlbmd0aDwxKXJldHVybiEwO2MubGVuZ3RoPTA7dmFyIGg9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLG09aC5nZXRUb3BTdGFydENvcm5lcigpLmNvbCxf''@;'; put 'put ''PWguZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sLE89dGhpcy5jb2x1bW5JbmRleE1hcHBlcixYPU8uZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChtKSxhZT1PLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoXykscGU9Ty5nZXROb3RUcmltbWVkSW5kZXhlcygpLGJlPVtdO2lmKG0h''@;'; put 'put ''PT1fKXtpZihfLW0rMT5hZS1YKzEpe3ZhciBaZT1wZS5zbGljZShtLF8rMSk7YmUucHVzaC5hcHBseShiZSx2UChaZS5maWx0ZXIoZnVuY3Rpb24oZ3Qpe3JldHVybiBkLmluY2x1ZGVzKGd0KX0pKSl9fWVsc2UgaWYoMD09PVgmJlg8bSliZS5wdXNoLmFwcGx5KGJlLHZQKHBlLnNsaWNlKDAs''@;'; put 'put ''bSkpKTtlbHNlIGlmKG51bGw9PT1YKWJlLnB1c2guYXBwbHkoYmUsdlAocGUuc2xpY2UoMCx0aGlzLmNvdW50Q29scygpKSkpO2Vsc2V7dmFyIGx0PXRoaXMuY291bnRDb2xzKCktMTthZT09PU8uZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChPLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRl''@;'; put 'put ''eChsdCwtMSkpJiZsdD5fJiZiZS5wdXNoLmFwcGx5KGJlLHZQKHBlLnNsaWNlKF8rMSkpKX1yZXR1cm4gUm4oYmUsZnVuY3Rpb24oZ3Qpe2MucHVzaChmLnRvVmlzdWFsQ29sdW1uKGd0KSl9KSwwPT09Yy5sZW5ndGh9fX0odGhpcykpfX0se2tleToib25NYXBJbml0Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe0FycmF5LmlzQXJyYXkoSDEodGhpcywkaCkuY29sdW1ucykmJnRoaXMuaGlkZUNvbHVtbnMoSDEodGhpcywkaCkuY29sdW1ucyl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2dFKHRoaXMsJGgsbnVsbCksZ0UodGhpcyxLaCxudWxsKSxsNihMMyhhLnByb3RvdHlwZSks''@;'; put 'put ''ImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBvWH19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMxMH19XSksYX0oR2EpO2Z1bmN0aW9uIHdtZShsLGMpeyhudWxsPT1jfHxj''@;'; put 'put ''PmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIHlQKGwpe3JldHVybiBmdW5jdGlvbiBMdnQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gYVgobCl9KGwpfHxmdW5jdGlvbiBS''@;'; put 'put ''dnQobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gSXZ0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBhWChsLGMpO3Zh''@;'; put 'put ''ciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1h''@;'; put 'put ''fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gYVgobCxjKX19KGwpfHxmdW5jdGlvbiBEdnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9y''@;'; put 'put ''ZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBhWChsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8''@;'; put 'put ''YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIFp5KGwpe3JldHVybihaeT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIENtZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVu''@;'; put 'put ''dW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsTnZ0KGYua2V5KSxmKX19ZnVuY3Rpb24gTnZ0KGwpe3ZhciBjPWZ1bmN0aW9uIFZ2dChsLGMpe2lmKCJvYmplY3QiIT09WnkobCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09WnkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVp5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHM2KCl7cmV0dXJuIHM2PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVj''@;'; put 'put ''dC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBCdnQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPVAzKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sczYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGxYKGwsYyl7cmV0dXJuKGxYPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gc1gobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu''@;'; put 'put ''IGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIFAzKGwpe3JldHVybihQMz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfWZ1bmN0aW9u''@;'; put 'put ''IFNtZShsLGMsYSl7KGZ1bmN0aW9uIFl2dChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gQmYobCxjKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gV3Z0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxNbWUobCxjLCJnZXQiKSl9ZnVuY3Rpb24gdkUobCxjLGEpe3JldHVybiBmdW5jdGlvbiBHdnQobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFjLndyaXRh''@;'; put 'put ''YmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLE1tZShsLGMsInNldCIpLGEpLGF9ZnVuY3Rpb24gTW1lKGwsYyxhKXtpZighYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVk''@;'; put 'put ''IHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVIaWRlUm93cyIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckhpZGVSb3dzIiksdW8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImJlZm9yZVVuaGlkZVJvd3MiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJVbmhpZGVSb3dzIik7dmFyIHVYPSJoaWRkZW5Sb3dzIixGMz1uZXcgV2Vha01hcCxxaD1uZXcgV2Vha01hcCxLdnQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGp2dChsLGMpe2lmKCJm''@;'; put 'put ''dW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTps''@;'; put 'put ''LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZsWChsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHp2dChsKXt2YXIgYz1mdW5jdGlvbiBadnQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8''@;'; put 'put ''fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5j''@;'; put 'put ''dGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1QMyhsKTtpZihjKXt2YXIgaD1QMyh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gVXZ0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09WnkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5k''@;'; put 'put ''ZWZpbmVkIik7cmV0dXJuIHNYKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3ZhciBmOyFmdW5jdGlvbiBGdnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKTtmb3Io''@;'; put 'put ''dmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gU21lKHNYKGY9Yy5jYWxsLmFwcGx5KGMsW3RoaXNdLmNvbmNhdChoKSkpLEYzLHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLFNtZShzWChmKSxxaCx7d3JpdGFi''@;'; put 'put ''bGU6ITAsdmFsdWU6bnVsbH0pLGZ9cmV0dXJuIGZ1bmN0aW9uIEh2dChsLGMsYSl7YyYmQ21lKGwucHJvdG90eXBlLGMpLGEmJkNtZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3VYXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBoPXRoaXMuaG90LmdldFNldHRpbmdzKClbdVhdO3BhKGgpJiYodkUodGhpcyxGMyxoKSxM''@;'; put 'put ''bChoLmNvcHlQYXN0ZUVuYWJsZWQpJiYoaC5jb3B5UGFzdGVFbmFibGVkPSEwKSksdkUodGhpcyxxaCxuZXcgalIpLEJmKHRoaXMscWgpLmFkZExvY2FsSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1hcEluaXQoKX0pLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVy''@;'; put 'put ''TWFwKHRoaXMucGx1Z2luTmFtZSxCZih0aGlzLHFoKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29r''@;'; put 'put ''KCJhZnRlckdldENlbGxNZXRhIixmdW5jdGlvbihtLF8sTyl7cmV0dXJuIGQub25BZnRlckdldENlbGxNZXRhKG0sXyxPKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5Um93SGVpZ2h0IixmdW5jdGlvbihtLF8pe3JldHVybiBkLm9uTW9kaWZ5Um93SGVpZ2h0KG0sXyl9KSx0aGlzLmFkZEhvb2so''@;'; put 'put ''ImFmdGVyR2V0Um93SGVhZGVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJHZXRSb3dIZWFkZXIuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb3B5YWJsZVJhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbk1vZGlmeUNvcHlhYmxlUmFuZ2UobSl9KSxz''@;'; put 'put ''NihQMyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzNihQMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIs''@;'; put 'put ''dGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpLHZFKHRoaXMsRjMse30pLHM2KFAzKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhp''@;'; put 'put ''cykuY2FsbCh0aGlzKSx0aGlzLnJlc2V0Q2VsbHNNZXRhKCl9fSx7a2V5OiJzaG93Um93cyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPXRoaXMuZ2V0SGlkZGVuUm93cygpLF89dGhpcy5pc1ZhbGlkQ29uZmlnKGQpLE89bSxYPUJmKHRoaXMscWgpLmdldFZhbHVlcygpLnNsaWNl''@;'; put 'put ''KCksYWU9ZC5sZW5ndGg+MDtfJiZhZSYmKFJuKGQubWFwKGZ1bmN0aW9uKHhlKXtyZXR1cm4gaC5ob3QudG9QaHlzaWNhbFJvdyh4ZSl9KSxmdW5jdGlvbih4ZSl7WFt4ZV09ITF9KSxPPVBzKFgsZnVuY3Rpb24oeGUsVmUsWmUpe3JldHVybiBWZSYmeGUucHVzaChoLmhvdC50b1Zpc3VhbFJv''@;'; put 'put ''dyhaZSkpLHhlfSxbXSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVuaGlkZVJvd3MiLG0sTyxfJiZhZSkmJihfJiZhZSYmQmYodGhpcyxxaCkuc2V0VmFsdWVzKFgpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclVuaGlkZVJvd3MiLG0sTyxfJiZhZSxfJiZPLmxlbmd0aDxtLmxl''@;'; put 'put ''bmd0aCkpfX0se2tleToic2hvd1JvdyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTt0aGlzLnNob3dSb3dzKGgpfX0se2tleToiaGlkZVJvd3MiLHZhbHVlOmZ1bmN0aW9uKGQp''@;'; put 'put ''e3ZhciBoPXRoaXMsbT10aGlzLmdldEhpZGRlblJvd3MoKSxfPXRoaXMuaXNWYWxpZENvbmZpZyhkKSxPPW07XyYmKE89QXJyYXkuZnJvbShuZXcgU2V0KG0uY29uY2F0KGQpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZGVSb3dzIixtLE8sXykmJihfJiZ0aGlzLmhvdC5i''@;'; put 'put ''YXRjaEV4ZWN1dGlvbihmdW5jdGlvbigpe1JuKGQsZnVuY3Rpb24oYWUpe0JmKGgscWgpLnNldFZhbHVlQXRJbmRleChoLmhvdC50b1BoeXNpY2FsUm93KGFlKSwhMCl9KX0sITApLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckhpZGVSb3dzIixtLE8sXyxfJiZPLmxlbmd0aD5tLmxlbmd0aCkp''@;'; put 'put ''fX0se2tleToiaGlkZVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3VtZW50c1ttXTt0aGlzLmhpZGVSb3dzKGgpfX0se2tleToiZ2V0SGlkZGVuUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZD10aGlzO3JldHVybiBoYShCZih0aGlzLHFoKS5nZXRIaWRkZW5JbmRleGVzKCksZnVuY3Rpb24oaCl7cmV0dXJuIGQuaG90LnRvVmlzdWFsUm93KGgpfSl9fSx7a2V5OiJpc0hpZGRlbiIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIEJmKHRoaXMscWgpLmdldFZhbHVlQXRJbmRleCh0''@;'; put 'put ''aGlzLmhvdC50b1BoeXNpY2FsUm93KGQpKXx8ITF9fSx7a2V5OiJpc1ZhbGlkQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLmhvdC5jb3VudFJvd3MoKTtyZXR1cm4hIShBcnJheS5pc0FycmF5KGQpJiZkLmxlbmd0aD4wKSYmZC5ldmVyeShmdW5jdGlvbihtKXtyZXR1cm4g''@;'; put 'put ''TnVtYmVyLmlzSW50ZWdlcihtKSYmbT49MCYmbTxofSl9fSx7a2V5OiJyZXNldENlbGxzTWV0YSIsdmFsdWU6ZnVuY3Rpb24oKXtSbih0aGlzLmhvdC5nZXRDZWxsc01ldGEoKSxmdW5jdGlvbihkKXtkJiYoZC5za2lwUm93T25QYXN0ZT0hMSl9KX19LHtrZXk6Im9uTW9kaWZ5Um93SGVpZ2h0''@;'; put 'put ''Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3JldHVybiB0aGlzLmlzSGlkZGVuKGgpPzA6ZH19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe2lmKCExPT09QmYodGhpcyxGMykuY29weVBhc3RlRW5hYmxlZCYmdGhpcy5pc0hpZGRlbihkKSYmKG0uc2tpcFJv''@;'; put 'put ''d09uUGFzdGU9ITApLHRoaXMuaXNIaWRkZW4oZC0xKSltLmNsYXNzTmFtZT1tLmNsYXNzTmFtZXx8IiIsLTE9PT1tLmNsYXNzTmFtZS5pbmRleE9mKCJhZnRlckhpZGRlblJvdyIpJiYobS5jbGFzc05hbWUrPSIgYWZ0ZXJIaWRkZW5Sb3ciKTtlbHNlIGlmKG0uY2xhc3NOYW1lKXt2YXIgXz1t''@;'; put 'put ''LmNsYXNzTmFtZS5zcGxpdCgiICIpO2lmKF8ubGVuZ3RoPjApe3ZhciBPPV8uaW5kZXhPZigiYWZ0ZXJIaWRkZW5Sb3ciKTtPPi0xJiZfLnNwbGljZShPLDEpLG0uY2xhc3NOYW1lPV8uam9pbigiICIpfX19fSx7a2V5OiJvbk1vZGlmeUNvcHlhYmxlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGQp''@;'; put 'put ''e3ZhciBoPXRoaXM7aWYoQmYodGhpcyxGMykuY29weVBhc3RlRW5hYmxlZClyZXR1cm4gZDt2YXIgbT1bXSxfPWZ1bmN0aW9uKFgsYWUscGUsYmUpe20ucHVzaCh7c3RhcnRSb3c6WCxlbmRSb3c6YWUsc3RhcnRDb2w6cGUsZW5kQ29sOmJlfSl9O3JldHVybiBSbihkLGZ1bmN0aW9uKE8pe3Zh''@;'; put 'put ''ciBYPSEwLGFlPTA7X28oTy5zdGFydFJvdyxPLmVuZFJvdyxmdW5jdGlvbihwZSl7aC5pc0hpZGRlbihwZSk/KFh8fF8oYWUscGUtMSxPLnN0YXJ0Q29sLE8uZW5kQ29sKSxYPSEwKTooWCYmKGFlPXBlKSxwZT09PU8uZW5kUm93JiZfKGFlLHBlLE8uc3RhcnRDb2wsTy5lbmRDb2wpLFg9ITEp''@;'; put 'put ''fSl9KSxtfX0se2tleToib25BZnRlckdldFJvd0hlYWRlciIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtpZihCZih0aGlzLEYzKS5pbmRpY2F0b3JzJiYhKGQ8MCkpe3ZhciBtPVtdO2Q+PTEmJnRoaXMuaXNIaWRkZW4oZC0xKSYmbS5wdXNoKCJhZnRlckhpZGRlblJvdyIpLGQ8dGhpcy5ob3QuY291''@;'; put 'put ''bnRSb3dzKCktMSYmdGhpcy5pc0hpZGRlbihkKzEpJiZtLnB1c2goImJlZm9yZUhpZGRlblJvdyIpLGdpKGgsbSl9fX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGQpe2QuaXRlbXMucHVzaCh7bmFtZTpiYX0sZnVuY3Rpb24gT3Z0KGwp''@;'; put 'put ''e3JldHVybntrZXk6ImhpZGRlbl9yb3dzX2hpZGUiLG5hbWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFNlbGVjdGVkTGFzdCgpLGY9MDtpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgZD1mdW5jdGlvbiBrdnQobCxjKXtyZXR1cm4gZnVuY3Rpb24gVHZ0KGwpe2lmKEFycmF5LmlzQXJyYXko''@;'; put 'put ''bCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBBdnQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2Fs''@;'; put 'put ''bChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9''@;'; put 'put ''YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIHh2dChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gd21lKGwsYyk7dmFyIGE9T2JqZWN0LnByb3Rv''@;'; put 'put ''dHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/''@;'; put 'put ''Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiB3bWUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIEV2dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBi''@;'; put 'put ''ZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGEsMyk7ZFswXS1kWzJdIT0wJiYoZj0xKX1yZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFhHLGYpfSxjYWxsYmFjazpmdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgYT10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksZj1hLmZyb20sZD1hLnRvLGg9TWF0aC5tYXgoTWF0aC5taW4oZi5yb3csZC5yb3cpLDApLG09TWF0aC5tYXgoZi5yb3csZC5yb3cpLF89W10sTz1oO088PW07Tys9MSlfLnB1c2goTyk7bC5oaWRlUm93cyhfKTt2YXIgYWU9dGhpcy5y''@;'; put 'put ''b3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoX1tfLmxlbmd0aC0xXSwxLCEwKTtOdW1iZXIuaXNJbnRlZ2VyKGFlKSYmYWU+PTA/dGhpcy5zZWxlY3RSb3dzKGFlKTp0aGlzLmRlc2VsZWN0Q2VsbCgpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRz''@;'; put 'put ''U2l6ZSghMCl9LGRpc2FibGVkOiExLGhpZGRlbjpmdW5jdGlvbigpe3JldHVybiEodGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCl8fHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpKX19fSh0aGlzKSxmdW5jdGlvbiBQdnQobCl7dmFyIGM9W107cmV0dXJu''@;'; put 'put ''e2tleToiaGlkZGVuX3Jvd3Nfc2hvdyIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoSkcsYy5sZW5ndGg+MT8xOjApfSxjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBmLGQ7aWYoMCE9PWMubGVuZ3RoKXt2YXIgaD1jWzBdLG09Y1tjLmxlbmd0aC0xXTto''@;'; put 'put ''PW51bGwhPT0oZj10aGlzLnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChoLTEsLTEpKSYmdm9pZCAwIT09Zj9mOjAsbT1udWxsIT09KGQ9dGhpcy5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobSsxLDEpKSYmdm9pZCAwIT09ZD9kOnRoaXMu''@;'; put 'put ''Y291bnRSb3dzKCktMSxsLnNob3dSb3dzKGMpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCksbS1oKzE9PT10aGlzLmNvdW50Um93cygpfHx0aGlzLnNlbGVjdFJvd3MoaCxtKX19LGRpc2FibGVkOiExLGhpZGRlbjpmdW5jdGlvbigpe3ZhciBmPXRoaXMs''@;'; put 'put ''ZD1oYShsLmdldEhpZGRlblJvd3MoKSxmdW5jdGlvbihndCl7cmV0dXJuIGYudG9QaHlzaWNhbFJvdyhndCl9KTtpZighdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8ZC5sZW5ndGg8MSlyZXR1cm4h''@;'; put 'put ''MDtjLmxlbmd0aD0wO3ZhciBoPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxtPWguZ2V0VG9wU3RhcnRDb3JuZXIoKS5yb3csXz1oLmdldEJvdHRvbUVuZENvcm5lcigpLnJvdyxPPXRoaXMucm93SW5kZXhNYXBwZXIsWD1PLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobSksYWU9''@;'; put 'put ''Ty5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KF8pLHBlPU8uZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxiZT1bXTtpZihtIT09Xyl7aWYoXy1tKzE+YWUtWCsxKXt2YXIgWmU9cGUuc2xpY2UobSxfKzEpO2JlLnB1c2guYXBwbHkoYmUseVAoWmUuZmlsdGVyKGZ1bmN0aW9uKGd0KXtyZXR1''@;'; put 'put ''cm4gZC5pbmNsdWRlcyhndCl9KSkpfX1lbHNlIGlmKDA9PT1YJiZYPG0pYmUucHVzaC5hcHBseShiZSx5UChwZS5zbGljZSgwLG0pKSk7ZWxzZSBpZihudWxsPT09WCliZS5wdXNoLmFwcGx5KGJlLHlQKHBlLnNsaWNlKDAsdGhpcy5jb3VudFJvd3MoKSkpKTtlbHNle3ZhciBsdD10aGlzLmNv''@;'; put 'put ''dW50Um93cygpLTE7YWU9PT1PLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoTy5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobHQsLTEpKSYmbHQ+XyYmYmUucHVzaC5hcHBseShiZSx5UChwZS5zbGljZShfKzEpKSl9cmV0dXJuIFJuKGJlLGZ1bmN0aW9uKGd0KXtjLnB1c2goZi50b1Zp''@;'; put 'put ''c3VhbFJvdyhndCkpfSksMD09PWMubGVuZ3RofX19KHRoaXMpKX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXtBcnJheS5pc0FycmF5KEJmKHRoaXMsRjMpLnJvd3MpJiZ0aGlzLmhpZGVSb3dzKEJmKHRoaXMsRjMpLnJvd3MpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2RSh0aGlzLEYzLG51bGwpLHZFKHRoaXMscWgsbnVsbCksczYoUDMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdVh9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiAzMjB9fV0pLGF9KEdhKTtmdW5jdGlvbiBrbWUobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBFbWUobCxjKXsobnVsbD09''@;'; put 'put ''Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBZeShsKXtyZXR1cm4oWXk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiB4bWUobCxj''@;'; put 'put ''KXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGM3dChmLmtleSksZil9fWZ1bmN0aW9u''@;'; put 'put ''IGM3dChsKXt2YXIgYz1mdW5jdGlvbiBmN3QobCxjKXtpZigib2JqZWN0IiE9PVl5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVl5KGYpKXJl''@;'; put 'put ''dHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1ZeShjKT9jOlN0cmluZyhjKX1mdW5j''@;'; put 'put ''dGlvbiBXeSgpe3JldHVybiBXeT10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gZDd0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwh''@;'; put 'put ''PT0obD1lbShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LFd5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5j''@;'; put 'put ''dGlvbiBjWChsLGMpe3JldHVybihjWD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEFtZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVu''@;'; put 'put ''Y2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gZW0obCl7cmV0dXJuKGVtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEp''@;'; put 'put ''e3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbHVtbkZyZWV6ZSIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbHVtbkZyZWV6ZSIpLHVvLmdldFNpbmdsZXRvbigp''@;'; put 'put ''LnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbHVtblVuZnJlZXplIik7dmFyIFRtZT0ibWFudWFsQ29sdW1uRnJlZXplIix5RT1uZXcgV2Vha01hcCx5N3Q9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGg3dChsLGMpe2lm''@;'; put 'put ''KCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1''@;'; put 'put ''ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZjWChsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHA3dChsKXt2YXIgYz1mdW5jdGlvbiBnN3QoKXtpZih0eXBlb2YgUmVmbGVjdD4i''@;'; put 'put ''dSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxm''@;'; put 'put ''dW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1lbShsKTtpZihjKXt2YXIgaD1lbSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRz''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24gbTd0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09WXkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3Ig''@;'; put 'put ''dW5kZWZpbmVkIik7cmV0dXJuIEFtZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIHM3dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0''@;'; put 'put ''aGlzLGEpLGQ9Yy5jYWxsKHRoaXMsZikseUUuc2V0KEFtZShkKSx7YWZ0ZXJGaXJzdFVzZTohMX0pLGR9cmV0dXJuIGZ1bmN0aW9uIHU3dChsLGMsYSl7YyYmeG1lKGwucHJvdG90eXBlLGMpLGEmJnhtZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJs''@;'; put 'put ''ZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1RtZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImFmdGVy''@;'; put 'put ''Q29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oaCl7cmV0dXJuIGQuYWRkQ29udGV4dE1lbnVFbnRyeShoKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uTW92ZSIsZnVuY3Rpb24oaCxtKXtyZXR1cm4gZC5vbkJlZm9yZUNvbHVtbk1vdmUoaCxtKX0pLFd5KGVtKGEucHJv''@;'; put 'put ''dG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7eUUuZ2V0KHRoaXMpLmFmdGVyRmlyc3RVc2U9ITEsV3koZW0oYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0s''@;'; put 'put ''e2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksV3koZW0oYS5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJmcmVlemVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGQpe3ZhciBoPXlFLmdldCh0aGlzKSxtPXRoaXMuaG90LmdldFNldHRpbmdzKCksXz1tLmZpeGVkQ29sdW1uc1N0YXJ0PHRoaXMuaG90LmNvdW50Q29scygpJiZkPm0uZml4ZWRDb2x1bW5zU3RhcnQtMTtoLmFmdGVyRmlyc3RVc2V8fChoLmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5o''@;'; put 'put ''b3QucnVuSG9va3MoImJlZm9yZUNvbHVtbkZyZWV6ZSIsZCxfKSYmKF8mJih0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyhkLG0uZml4ZWRDb2x1bW5zU3RhcnQpLG0uX2ZpeGVkQ29sdW1uc1N0YXJ0Kz0xKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5GcmVl''@;'; put 'put ''emUiLGQsXykpfX0se2tleToidW5mcmVlemVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXlFLmdldCh0aGlzKSxtPXRoaXMuaG90LmdldFNldHRpbmdzKCksXz1tLmZpeGVkQ29sdW1uc1N0YXJ0PjAmJmQ8PW0uZml4ZWRDb2x1bW5zU3RhcnQtMTtoLmFmdGVyRmlyc3RVc2V8fCho''@;'; put 'put ''LmFmdGVyRmlyc3RVc2U9ITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtblVuZnJlZXplIixkLF8pJiYoXyYmKG0uX2ZpeGVkQ29sdW1uc1N0YXJ0LT0xLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKGQsbS5maXhlZENvbHVtbnNTdGFydCkpLHRo''@;'; put 'put ''aXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblVuZnJlZXplIixkLF8pKX19LHtrZXk6ImFkZENvbnRleHRNZW51RW50cnkiLHZhbHVlOmZ1bmN0aW9uKGQpe2QuaXRlbXMucHVzaCh7bmFtZToiLS0tLS0tLS0tIn0sZnVuY3Rpb24gdDd0KGwpe3JldHVybntrZXk6ImZyZWV6ZV9jb2x1bW4i''@;'; put 'put ''LG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGtHKX0sY2FsbGJhY2s6ZnVuY3Rpb24oYSxmKXt2YXIgZD1mdW5jdGlvbiBxdnQobCxjKXtyZXR1cm4gZnVuY3Rpb24gZTd0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlv''@;'; put 'put ''biBRdnQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2Jq''@;'; put 'put ''ZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCks''@;'; put 'put ''T2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIEp2dChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4ga21lKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNs''@;'; put 'put ''aWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJy''@;'; put 'put ''YXkkLy50ZXN0KGEpKXJldHVybiBrbWUobCxjKX19KGwsYyl8fGZ1bmN0aW9uIFh2dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9i''@;'; put 'put ''amVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9KGYsMSk7bC5mcmVlemVDb2x1bW4oZFswXS5zdGFydC5jb2wpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LGhpZGRlbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMu''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZSgpLGY9ITE7cmV0dXJuKHZvaWQgMD09PWF8fGEubGVuZ3RoPjF8fGFbMF0uZnJvbS5jb2whPT1hWzBdLnRvLmNvbHx8YVswXS5mcm9tLmNvbDw9dGhpcy5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LTEpJiYoZj0hMCksZn19fSh0aGlzKSxmdW5jdGlv''@;'; put 'put ''biBsN3QobCl7cmV0dXJue2tleToidW5mcmVlemVfY29sdW1uIixuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShFRyl9LGNhbGxiYWNrOmZ1bmN0aW9uKGEsZil7dmFyIGQ9ZnVuY3Rpb24gbjd0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIGE3dChsKXtpZihB''@;'; put 'put ''cnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gbzd0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJvbC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7''@;'; put 'put ''aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUpJiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7''@;'; put 'put ''aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShsLGMpfHxmdW5jdGlvbiBpN3QobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIEVtZShsLGMpO3ZhciBh''@;'; put 'put ''PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwv''@;'; put 'put ''Xig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gRW1lKGwsYyl9fShsLGMpfHxmdW5jdGlvbiByN3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxu''@;'; put 'put ''SW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShmLDEpO2wudW5mcmVlemVDb2x1bW4oZFswXS5zdGFydC5jb2wpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRz''@;'; put 'put ''U2l6ZSghMCl9LGhpZGRlbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9ITE7cmV0dXJuKHZvaWQgMD09PWF8fGEubGVuZ3RoPjF8fGFbMF0uZnJvbS5jb2whPT1hWzBdLnRvLmNvbHx8YVswXS5mcm9tLmNvbD49dGhpcy5nZXRTZXR0aW5ncygpLmZpeGVkQ29s''@;'; put 'put ''dW1uc1N0YXJ0KSYmKGY9ITApLGZ9fX0odGhpcykpfX0se2tleToib25CZWZvcmVDb2x1bW5Nb3ZlIix2YWx1ZTpmdW5jdGlvbihkLGgpe2lmKHlFLmdldCh0aGlzKS5hZnRlckZpcnN0VXNlKXt2YXIgXz10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0O2lmKGg8X3x8''@;'; put 'put ''ZC5zb21lKGZ1bmN0aW9uKE8pe3JldHVybiBPPF99KSlyZXR1cm4hMX19fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBUbWV9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxMTB9fV0pLGF9KEdhKTtmdW5jdGlvbiBiRShs''@;'; put 'put ''KXtyZXR1cm4oYkU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09''@;'; put 'put ''PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBPbWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUi''@;'; put 'put ''aW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHc3dChmLmtleSksZil9fWZ1bmN0aW9uIHc3dChsKXt2YXIgYz1mdW5jdGlvbiBDN3QobCxjKXtpZigib2JqZWN0IiE9PWJFKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2''@;'; put 'put ''ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWJFKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9T''@;'; put 'put ''dHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1iRShjKT9jOlN0cmluZyhjKX12YXIgR3k9InB4IixTN3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyhmdW5jdGlvbiBiN3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9Yyx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wLHRoaXMuaW5saW5lUHJvcGVydHk9Yy5pc1J0bCgpPyJyaWdodCI6ImxlZnQifXJldHVybiBmdW5jdGlvbiBfN3QobCxjLGEpe2Mm''@;'; put 'put ''Jk9tZShsLnByb3RvdHlwZSxjKSxhJiZPbWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKGEpe2EuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5zdGF0ZT0yfX0s''@;'; put 'put ''e2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7MD09PXRoaXMuc3RhdGUmJih0aGlzLl9lbGVtZW50PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnN0YXRlPTEpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmlzQXBwZW5k''@;'; put 'put ''ZWQoKSYmdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9fSx7a2V5OiJpc0FwcGVuZGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAyPT09dGhpcy5zdGF0ZX19LHtrZXk6ImlzQnVp''@;'; put 'put ''bHQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU+PTF9fSx7a2V5OiJzZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0MChhKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wPWErR3kpLHQwKGYpJiYodGhpcy5fZWxlbWVudC5zdHlsZVt0aGlzLmlubGluZVByb3Bl''@;'; put 'put ''cnR5XT1mK0d5KX19LHtrZXk6ImdldFBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VsZW1lbnQuc3R5bGU7cmV0dXJue3RvcDphLnRvcD9wYXJzZUludChhLnRvcCwxMCk6MCxzdGFydDphW3RoaXMuaW5saW5lUHJvcGVydHldP3BhcnNlSW50KGFbdGhpcy5pbmxpbmVQ''@;'; put 'put ''cm9wZXJ0eV0sMTApOjB9fX0se2tleToic2V0U2l6ZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt0MChhKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg9YStHeSksdDAoZikmJih0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD1mK0d5KX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tl''@;'; put 'put ''eToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihhLGYpe3QwKGEpJiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A9YStHeSksdDAoZikmJih0aGlzLl9lbGVtZW50LnN0eWxlWyJtYXJnaW4iLmNvbmNhdChBYyh0aGlzLmlubGluZVByb3BlcnR5KSldPWYrR3kpfX0se2tleToiZ2V0''@;'; put 'put ''T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VsZW1lbnQuc3R5bGUsZj0ibWFyZ2luIi5jb25jYXQoQWModGhpcy5pbmxpbmVQcm9wZXJ0eSkpO3JldHVybnt0b3A6YS5tYXJnaW5Ub3A/cGFyc2VJbnQoYS5tYXJnaW5Ub3AsMTApOjAsc3RhcnQ6YVtmXT9wYXJzZUludChh''@;'; put 'put ''W2ZdLDEwKTowfX19XSksbH0oKTtjb25zdCBSbWU9Uzd0O2Z1bmN0aW9uICR5KGwpe3JldHVybigkeT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVy''@;'; put 'put ''biBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIExtZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVy''@;'; put 'put ''YWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsRTd0KGYua2V5KSxmKX19ZnVuY3Rpb24gRTd0KGwpe3ZhciBjPWZ1bmN0aW9uIHg3dChsLGMpe2lmKCJvYmplY3QiIT09JHko''@;'; put 'put ''bCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09JHkoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJl''@;'; put 'put ''dHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PSR5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGJQKCl7cmV0dXJuIGJQPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5n''@;'; put 'put ''ZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBBN3QobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPUt5KGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5n''@;'; put 'put ''ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sYlAuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGRYKGwsYyl7cmV0dXJuKGRYPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gS3kobCl7cmV0dXJuKEt5PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBh''@;'; put 'put ''Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIFA3dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gVDd0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg''@;'; put 'put ''YmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZToh''@;'; put 'put ''MX0pLGMmJmRYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gTzd0KGwpe3ZhciBjPWZ1bmN0aW9uIFI3dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94''@;'; put 'put ''eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUt5KGwpO2lmKGMpe3ZhciBoPUt5''@;'; put 'put ''KHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBEN3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT0keShjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBj''@;'; put 'put ''O2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gSTd0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhh''@;'; put 'put ''c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIE03dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBrN3QobCxjLGEpe2MmJkxtZShsLnByb3RvdHlwZSxjKSxhJiZMbWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3Jp''@;'; put 'put ''dGFibGU6ITF9KX0oYSxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7YlAoS3koYS5wcm90b3R5cGUpLCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxnaSh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0Iil9fV0pLGF9KFJtZSk7Y29uc3QgRjd0PVA3''@;'; put 'put ''dDtmdW5jdGlvbiBxeShsKXtyZXR1cm4ocXk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''Yy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBQbWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3Vy''@;'; put 'put ''YWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFY3dChmLmtleSksZil9fWZ1bmN0aW9uIFY3dChsKXt2YXIgYz1mdW5jdGlvbiBCN3QobCxjKXtpZigib2JqZWN0IiE9PXF5KGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5''@;'; put 'put ''bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXF5KGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJu''@;'; put 'put ''KCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1xeShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBfUCgpe3JldHVybiBfUD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihj''@;'; put 'put ''LGEsZil7dmFyIGQ9ZnVuY3Rpb24gajd0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1YeShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0''@;'; put 'put ''dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LF9QLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBoWChsLGMpe3JldHVybihoWD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlv''@;'; put 'put ''bihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIFh5KGwpe3JldHVybihYeT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVP''@;'; put 'put ''ZihhKX0pKGwpfXZhciAkN3Q9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIHo3dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90''@;'; put 'put ''eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZoWChsLGMpfShhLGwpO3ZhciBjPWZ1bmN0''@;'; put 'put ''aW9uIFU3dChsKXt2YXIgYz1mdW5jdGlvbiBXN3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnBy''@;'; put 'put ''b3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1YeShsKTtpZihjKXt2YXIgaD1YeSh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29u''@;'; put 'put ''c3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gWjd0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09cXkoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFk3dChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg''@;'; put 'put ''aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3JldHVybiBmdW5jdGlvbiBIN3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0o''@;'; put 'put ''dGhpcyxhKSxjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gTjd0KGwsYyxhKXtjJiZQbWUobC5wcm90b3R5cGUsYyksYSYmUG1lKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImJ1aWxkIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe19QKFh5KGEucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksZ2kodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZSIpfX1dKSxhfShSbWUpO2NvbnN0IEs3dD0kN3Q7ZnVuY3Rpb24gSnkobCl7cmV0dXJuKEp5PSJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1i''@;'; put 'put ''b2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gRm1lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxl''@;'; put 'put ''PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxKN3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBKN3QobCl7dmFyIGM9ZnVuY3Rpb24gUTd0KGwsYyl7aWYoIm9iamVjdCIhPT1KeShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEp''@;'; put 'put ''e3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1KeShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9''@;'; put 'put ''KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09SnkoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gdTYoKXtyZXR1cm4gdTY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIGU5dChsLGMpe2Zv''@;'; put 'put ''cig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9SDMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSx1Ni5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcFgobCxjKXtyZXR1cm4ocFg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSko''@;'; put 'put ''bCxjKX1mdW5jdGlvbiBtWChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gSDMobCl7cmV0dXJuKEgzPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbHVtbk1vdmUiKSx1by5nZXRTaW5nbGV0b24o''@;'; put 'put ''KS5yZWdpc3RlcigiYWZ0ZXJDb2x1bW5Nb3ZlIik7dmFyIGdYPSJtYW51YWxDb2x1bW5Nb3ZlIix0bT1uZXcgV2Vha01hcCxIbWU9Imh0X19tYW51YWxDb2x1bW5Nb3ZlIix3UD0ic2hvdy11aSIsdlg9Im9uLW1vdmluZy0tY29sdW1ucyIseVg9ImFmdGVyLXNlbGVjdGlvbi0tY29sdW1ucyIs''@;'; put 'put ''YTl0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB0OXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3Jl''@;'; put 'put ''YXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmcFgobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBuOXQobCl7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gaTl0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVP''@;'; put 'put ''Zi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9SDMobCk7aWYoYyl7dmFyIGg9SDModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3Vt''@;'; put 'put ''ZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHI5dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PUp5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNv''@;'; put 'put ''bnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBtWChsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIHE3dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh''@;'; put 'put ''bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGQ9Yy5jYWxsKHRoaXMsZiksdG0uc2V0KG1YKGQpLHtjb2x1bW5zVG9Nb3ZlOltdLGNvdW50Q29sczowLGZpeGVkQ29sdW1uczowLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWDp2b2lkIDAsY29vcmRz''@;'; put 'put ''OnZvaWQgMCxURDp2b2lkIDAsY29sOnZvaWQgMH0sY2FjaGVkRHJvcEluZGV4OnZvaWQgMH0pLGQuZXZlbnRNYW5hZ2VyPW5ldyBmcyhtWChkKSksZC5iYWNrbGlnaHQ9bmV3IEY3dChmKSxkLmd1aWRlbGluZT1uZXcgSzd0KGYpLGR9cmV0dXJuIGZ1bmN0aW9uIFg3dChsLGMsYSl7YyYmRm1l''@;'; put 'put ''KGwucHJvdG90eXBlLGMpLGEmJkZtZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2dYXX19LHtrZXk6ImVuYWJs''@;'; put 'put ''ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlT25DZWxsTW91c2VEb3duLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9v''@;'; put 'put ''aygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlT25DZWxsTW91c2VPdmVyLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJTY3JvbGxWZXJ0''@;'; put 'put ''aWNhbGx5KCl9KSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckxvYWREYXRhLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYnVpbGRQbHVnaW5VSSgpLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxnaSh0aGlzLmhvdC5yb290RWxlbWVudCxI''@;'; put 'put ''bWUpLHU2KEgzKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKSx1''@;'; put 'put ''NihIMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7Sm8odGhpcy5ob3Qucm9vdEVsZW1lbnQsSG1lKSx0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSx0aGlzLmJhY2tsaWdodC5kZXN0cm95''@;'; put 'put ''KCksdGhpcy5ndWlkZWxpbmUuZGVzdHJveSgpLHU2KEgzKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im1vdmVDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7cmV0dXJuIHRoaXMubW92ZUNvbHVtbnMoW2RdLGgpfX0se2tleToibW92ZUNv''@;'; put 'put ''bHVtbnMiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dG0uZ2V0KHRoaXMpLF89bS5jYWNoZWREcm9wSW5kZXgsTz10aGlzLmlzTW92ZVBvc3NpYmxlKGQsaCksWD10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uTW92ZSIsZCxoLF8sTyk7aWYobS5jYWNoZWREcm9wSW5kZXg9dm9p''@;'; put 'put ''ZCAwLCExIT09WCl7TyYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIubW92ZUluZGV4ZXMoZCxoKTt2YXIgYWU9TyYmdGhpcy5pc0NvbHVtbk9yZGVyQ2hhbmdlZChkLGgpO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5Nb3ZlIixkLGgsXyxPLGFlKSxhZX19fSx7a2V5''@;'; put 'put ''OiJkcmFnQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihkLGgpe3JldHVybiB0aGlzLmRyYWdDb2x1bW5zKFtkXSxoKX19LHtrZXk6ImRyYWdDb2x1bW5zIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXMuY291bnRGaW5hbEluZGV4KGQsaCk7cmV0dXJuIHRtLmdldCh0aGlzKS5jYWNoZWRE''@;'; put 'put ''cm9wSW5kZXg9aCx0aGlzLm1vdmVDb2x1bW5zKGQsbSl9fSx7a2V5OiJpc01vdmVQb3NzaWJsZSIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpLF89ZC5sZW5ndGgraD5tLE89aDwwLFg9ZC5z''@;'; put 'put ''b21lKGZ1bmN0aW9uKHBlKXtyZXR1cm4gcGU8MH0pLGFlPWQuc29tZShmdW5jdGlvbihwZSl7cmV0dXJuIHBlPj1tfSk7cmV0dXJuIShffHxPfHxYfHxhZSl9fSx7a2V5OiJpc0NvbHVtbk9yZGVyQ2hhbmdlZCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtyZXR1cm4gZC5zb21lKGZ1bmN0aW9uKG0s''@;'; put 'put ''Xyl7cmV0dXJuIG0tXyE9PWh9KX19LHtrZXk6ImNvdW50RmluYWxJbmRleCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT1QcyhkLGZ1bmN0aW9uKF8sTyl7cmV0dXJuIE88aCYmKF8rPTEpLF99LDApO3JldHVybiBoLW19fSx7a2V5OiJnZXRDb2x1bW5zV2lkdGgiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGQsaCl7Zm9yKHZhciBtPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLF89MCxPPWQ7Tzw9aDtPKz0xKXt2YXIgWD1tLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoTyk7TzwwP18rPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgoKXx8MDpudWxs''@;'; put 'put ''IT09WCYmKF8rPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoWCl8fDApfXJldHVybiBffX0se2tleToibW92ZUJ5U2V0dGluZ3NPckxvYWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtnWF07aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShkKSl0aGlzLm1vdmVDb2x1bW5zKGQsMCk7ZWxzZSBpZih2b2lkIDAhPT1kKXt2YXIgaD10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTtoLmxlbmd0aCYmdGhpcy5tb3ZlQ29sdW1ucyhoLDApfX19LHtrZXk6ImlzRml4ZWRDb2x1bW5zU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGQp''@;'; put 'put ''e3JldHVybiBkPHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnR9fSx7a2V5OiJwZXJzaXN0ZW50U3RhdGVTYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwibWFudWFsQ29sdW1uTW92ZSIsdGhpcy5ob3Qu''@;'; put 'put ''Y29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX0se2tleToicGVyc2lzdGVudFN0YXRlTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD17fTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZUxvYWQiLCJtYW51YWxDb2x1bW5Nb3ZlIixkKSxk''@;'; put 'put ''LnZhbHVlP2QudmFsdWU6W119fSx7a2V5OiJwcmVwYXJlQ29sdW1uc1RvTW92aW5nIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPVtdO3JldHVybiBfbyhkLGgsZnVuY3Rpb24oXyl7bS5wdXNoKF8pfSksbX19LHtrZXk6InJlZnJlc2hQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGQ9dG0uZ2V0KHRoaXMpLGg9dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpO3RoaXMuaXNGaXhlZENvbHVtbnNTdGFydChkLmhvdmVyZWRDb2x1bW4pJiZoPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odm9pZCAwLHRoaXMuaG90LmNvbHVtbkluZGV4TWFw''@;'; put 'put ''cGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChoLTEsLTEpKTt2YXIgbT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLF89dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudCxPPSJudW1iZXIiPT10eXBlb2YgXy5zY3JvbGxYP18uc2Nyb2xsWDpfLnNjcm9s''@;'; put 'put ''bExlZnQsWD10aGlzLmhvdC52aWV3LlRIRUFELm9mZnNldExlZnQrdGhpcy5nZXRDb2x1bW5zV2lkdGgoMCxkLmhvdmVyZWRDb2x1bW4tMSksYWU9bS5oaWRlci5vZmZzZXRXaWR0aCxwZT1tLlRCT0RZLm9mZnNldExlZnQsYmU9dGhpcy5iYWNrbGlnaHQuZ2V0T2Zmc2V0KCkuc3RhcnQseGU9''@;'; put 'put ''dGhpcy5iYWNrbGlnaHQuZ2V0U2l6ZSgpLndpZHRoLFZlPTAsWmU9MDtpZih0aGlzLmhvdC5pc1J0bCgpKXt2YXIgbHQ9dGhpcy5ob3Qucm9vdFdpbmRvdyxkdD1TbCh0aGlzLmhvdC5yb290RWxlbWVudCk7WmU9bHQuaW5uZXJXaWR0aC1kLnRhcmdldC5ldmVudFBhZ2VYLShsdC5pbm5lcldp''@;'; put 'put ''ZHRoLWQucm9vdEVsZW1lbnRPZmZzZXQtZHQpLSh2b2lkIDA9PT1fLnNjcm9sbFg/TzowKX1lbHNlIFplPWQudGFyZ2V0LmV2ZW50UGFnZVgtKGQucm9vdEVsZW1lbnRPZmZzZXQtKHZvaWQgMD09PV8uc2Nyb2xsWD9POjApKTtkLmhhc1Jvd0hlYWRlcnMmJihWZT10aGlzLmhvdC52aWV3Ll93''@;'; put 'put ''dC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENvbHVtbkhlYWRlcigtMSkub2Zmc2V0V2lkdGgpLHRoaXMuaXNGaXhlZENvbHVtbnNTdGFydChkLmhvdmVyZWRDb2x1bW4pJiYoWCs9TyksWCs9VmUsZC5ob3ZlcmVkQ29sdW1uPDA/ZC50YXJnZXQuY29s''@;'; put 'put ''PWQuZml4ZWRDb2x1bW5zU3RhcnQ+MD8wOmg+MD9oLTE6aDpkLnRhcmdldC5URC5vZmZzZXRXaWR0aC8yK1g8PVplPyhkLnRhcmdldC5jb2w9KGQuaG92ZXJlZENvbHVtbj49ZC5jb3VudENvbHM/ZC5jb3VudENvbHMtMTpkLmhvdmVyZWRDb2x1bW4pKzEsWCs9ZC50YXJnZXQuVEQub2Zmc2V0''@;'; put 'put ''V2lkdGgpOmQudGFyZ2V0LmNvbD1kLmhvdmVyZWRDb2x1bW47dmFyIHJuPVplLFh0PVg7WmUreGUrYmU+PWFlP3JuPWFlLXhlLWJlOlplK2JlPHBlK1ZlJiYocm49cGUrVmUrTWF0aC5hYnMoYmUpKSxYPj1hZS0xP1h0PWFlLTE6MD09PVh0P1h0PTE6dm9pZCAwIT09Xy5zY3JvbGxYJiZkLmhv''@;'; put 'put ''dmVyZWRDb2x1bW48ZC5maXhlZENvbHVtbnNTdGFydCYmKFh0LT1kLnJvb3RFbGVtZW50T2Zmc2V0PD1fLnNjcm9sbFg/ZC5yb290RWxlbWVudE9mZnNldDowKSx0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihudWxsLHJuKSx0aGlzLmd1aWRlbGluZS5zZXRQb3NpdGlvbihudWxsLFh0KX19''@;'; put 'put ''LHtrZXk6InJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMsaD10aGlzLmhvdC5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaCwibW91c2Vtb3ZlIixmdW5jdGlvbihtKXtyZXR1cm4gZC5vbk1v''@;'; put 'put ''dXNlTW92ZShtKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaCwibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1vdXNlVXAoKX0pfX0se2tleToidW5yZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmV2ZW50TWFuYWdlci5jbGVhcigpfX0s''@;'; put 'put ''e2tleToib25CZWZvcmVPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBPPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsWD10aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCksYWU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxh''@;'; put 'put ''c3QoKSxwZT10bS5nZXQodGhpcyksYmU9WW8oZC50YXJnZXQsInNvcnRBY3Rpb24iKTtpZighYWV8fCFYfHxwZS5wcmVzc2VkfHwwIT09ZC5idXR0b258fGJlKXJldHVybiBwZS5wcmVzc2VkPSExLHBlLmNvbHVtbnNUb01vdmUubGVuZ3RoPTAsdm9pZCBKbyh0aGlzLmhvdC5yb290RWxlbWVu''@;'; put 'put ''dCxbdlgsd1BdKTt2YXIgeGU9dGhpcy5ndWlkZWxpbmUuaXNCdWlsdCgpJiYhdGhpcy5ndWlkZWxpbmUuaXNBcHBlbmRlZCgpLFZlPXRoaXMuYmFja2xpZ2h0LmlzQnVpbHQoKSYmIXRoaXMuYmFja2xpZ2h0LmlzQXBwZW5kZWQoKTt4ZSYmVmUmJih0aGlzLmd1aWRlbGluZS5hcHBlbmRUbyhP''@;'; put 'put ''LmhpZGVyKSx0aGlzLmJhY2tsaWdodC5hcHBlbmRUbyhPLmhpZGVyKSk7dmFyIFplPWFlLmZyb20sbHQ9YWUudG8sZHQ9TWF0aC5taW4oWmUuY29sLGx0LmNvbCksZ3Q9TWF0aC5tYXgoWmUuY29sLGx0LmNvbCk7aWYoaC5yb3c8MCYmaC5jb2w+PWR0JiZoLmNvbDw9Z3Qpe18uY29sdW1uPSEw''@;'; put 'put ''LHBlLnByZXNzZWQ9ITAscGUudGFyZ2V0LmV2ZW50UGFnZVg9ZC5wYWdlWCxwZS50YXJnZXQuZXZlbnRPZmZzZXRYPWQub2Zmc2V0WCxwZS5ob3ZlcmVkQ29sdW1uPWguY29sLHBlLnRhcmdldC5URD1tLHBlLnRhcmdldC5jb2w9aC5jb2wscGUuY29sdW1uc1RvTW92ZT10aGlzLnByZXBhcmVD''@;'; put 'put ''b2x1bW5zVG9Nb3ZpbmcoZHQsZ3QpLHBlLmhhc1Jvd0hlYWRlcnM9ISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLnJvd0hlYWRlcnMscGUuY291bnRDb2xzPXRoaXMuaG90LmNvdW50Q29scygpLHBlLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5z''@;'; put 'put ''U3RhcnQscGUucm9vdEVsZW1lbnRPZmZzZXQ9aXUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLmxlZnQ7dmFyIGp0PXBlLmhhc1Jvd0hlYWRlcnM/LTE6MCxybj1PLmhvbGRlci5zY3JvbGxUb3ArTy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoMCkrMSxYdD1oLmNvbDxwZS5maXhlZENvbHVtbnNTdGFy''@;'; put 'put ''dCx5bj1NYXRoLmFicyh0aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpKSxRbj1NYXRoLmFicyhkLm9mZnNldFgtKHRoaXMuaG90LmlzUnRsKCk/ZC50YXJnZXQub2Zmc2V0V2lkdGg6MCkpLE9yPXRoaXMuZ2V0Q29sdW1u''@;'; put 'put ''c1dpZHRoKGR0LGguY29sLTEpK1FuLFZyPXRoaXMuZ2V0Q29sdW1uc1dpZHRoKGp0LGR0LTEpKyhYdD95bjowKStPcjt0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihybixWciksdGhpcy5iYWNrbGlnaHQuc2V0U2l6ZSh0aGlzLmdldENvbHVtbnNXaWR0aChkdCxndCksTy5oaWRlci5vZmZz''@;'; put 'put ''ZXRIZWlnaHQtcm4pLHRoaXMuYmFja2xpZ2h0LnNldE9mZnNldChudWxsLC1PciksZ2kodGhpcy5ob3Qucm9vdEVsZW1lbnQsdlgpfWVsc2UgSm8odGhpcy5ob3Qucm9vdEVsZW1lbnQseVgpLHBlLnByZXNzZWQ9ITEscGUuY29sdW1uc1RvTW92ZS5sZW5ndGg9MH19LHtrZXk6Im9uTW91c2VN''@;'; put 'put ''b3ZlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10bS5nZXQodGhpcyk7aWYoaC5wcmVzc2VkKXtpZihkLnRhcmdldD09PXRoaXMuYmFja2xpZ2h0LmVsZW1lbnQpe3ZhciBtPXRoaXMuYmFja2xpZ2h0LmdldFNpemUoKS53aWR0aDt0aGlzLmJhY2tsaWdodC5zZXRTaXplKDApLHNldFRpbWVv''@;'; put 'put ''dXQoZnVuY3Rpb24oKXt0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihtKX0pfWgudGFyZ2V0LmV2ZW50UGFnZVg9ZC5wYWdlWCx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX19fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyl7dmFyIE89dGhp''@;'; put 'put ''cy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxYPXRtLmdldCh0aGlzKTshT3x8IVgucHJlc3NlZHx8KFguY29sdW1uc1RvTW92ZS5pbmRleE9mKGguY29sKT4tMT9Kbyh0aGlzLmhvdC5yb290RWxlbWVudCx3UCk6Z2kodGhpcy5ob3Qucm9vdEVsZW1lbnQsd1ApLF8ucm93PSEwLF8uY29s''@;'; put 'put ''dW1uPSEwLF8uY2VsbD0hMCxYLmhvdmVyZWRDb2x1bW49aC5jb2wsWC50YXJnZXQuVEQ9bSl9fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dG0uZ2V0KHRoaXMpLGg9ZC50YXJnZXQuY29sLG09ZC5jb2x1bW5zVG9Nb3ZlLmxlbmd0aDtpZihkLmhvdmVyZWRDb2x1''@;'; put 'put ''bW49dm9pZCAwLGQucHJlc3NlZD0hMSxkLmJhY2tsaWdodFdpZHRoPTAsSm8odGhpcy5ob3Qucm9vdEVsZW1lbnQsW3ZYLHdQLHlYXSksdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiZnaSh0aGlzLmhvdC5yb290RWxlbWVudCx5WCksIShtPDF8fHZvaWQg''@;'; put 'put ''MD09PWgpKXt2YXIgTz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGQuY29sdW1uc1RvTW92ZVswXSksWD10aGlzLmRyYWdDb2x1bW5zKGQuY29sdW1uc1RvTW92ZSxoKTtpZihkLmNvbHVtbnNUb01vdmUubGVuZ3RoPTAsITA9PT1YKXt0aGlzLnBlcnNpc3RlbnRTdGF0ZVNhdmUoKSx0aGlz''@;'; put 'put ''LmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCk7dmFyIGFlPXRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKE8pO3RoaXMuaG90LnNlbGVjdENvbHVtbnMoYWUsYWUrbS0xKX19fX0se2tleToib25BZnRlclNjcm9sbFZlcnRpY2FsbHkiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGQ9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxfPWQuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KDApKzErZC5ob2xkZXIuc2Nyb2xsVG9wO3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKF8pLHRoaXMuYmFja2xpZ2h0LnNldFNpemUobnVsbCxkLmhpZGVyLm9mZnNldEhlaWdo''@;'; put 'put ''dC1fKX19LHtrZXk6ImJ1aWxkUGx1Z2luVUkiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5iYWNrbGlnaHQuYnVpbGQoKSx0aGlzLmd1aWRlbGluZS5idWlsZCgpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKX19LHtr''@;'; put 'put ''ZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5iYWNrbGlnaHQuZGVzdHJveSgpLHRoaXMuZ3VpZGVsaW5lLmRlc3Ryb3koKSx1NihIMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBnWH19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEyMH19XSksYX0oR2EpO2Z1bmN0aW9uIFF5KGwpe3JldHVybihReT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihj''@;'; put 'put ''KXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIE5tZShsLGMpe2Zvcih2YXIgYT0w''@;'; put 'put ''O2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsdTl0KGYua2V5KSxmKX19ZnVuY3Rpb24gdTl0KGwpe3ZhciBj''@;'; put 'put ''PWZ1bmN0aW9uIGM5dChsLGMpe2lmKCJvYmplY3QiIT09UXkobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09UXkoZikpcmV0dXJuIGY7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PVF5KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIGM2KCl7cmV0''@;'; put 'put ''dXJuIGM2PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBmOXQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPU4zKGwpKTsp''@;'; put 'put ''O3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sYzYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGJYKGwsYyl7''@;'; put 'put ''cmV0dXJuKGJYPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gX1gobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMg''@;'; put 'put ''aGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfWZ1bmN0aW9uIE4zKGwpe3JldHVybihOMz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3By''@;'; put 'put ''b3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBDUD0ibWFudWFsQ29sdW1uUmVzaXplIixWbWU9Im1hbnVhbENvbHVtbldpZHRocyIsd1g9bmV3IFdlYWtNYXAsdjl0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBkOXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYm''@;'; put 'put ''bnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmYlgobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBoOXQobCl7dmFyIGM9ZnVuY3Rpb24gbTl0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8''@;'; put 'put ''fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7''@;'; put 'put ''cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9TjMobCk7aWYoYyl7dmFyIGg9TjModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIHA5dChs''@;'; put 'put ''LGMpe2lmKGMmJigib2JqZWN0Ij09PVF5KGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBfWChs''@;'; put 'put ''KX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7IWZ1bmN0aW9uIGw5dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO3ZhciBoPShkPWMuY2FsbCh0aGlzLGYp''@;'; put 'put ''KS5ob3Qucm9vdERvY3VtZW50O3JldHVybiBkLmN1cnJlbnRUSD1udWxsLGQuY3VycmVudENvbD1udWxsLGQuc2VsZWN0ZWRDb2xzPVtdLGQuY3VycmVudFdpZHRoPW51bGwsZC5uZXdTaXplPW51bGwsZC5zdGFydFk9bnVsbCxkLnN0YXJ0V2lkdGg9bnVsbCxkLnN0YXJ0T2Zmc2V0PW51bGws''@;'; put 'put ''ZC5oYW5kbGU9aC5jcmVhdGVFbGVtZW50KCJESVYiKSxkLmd1aWRlPWguY3JlYXRlRWxlbWVudCgiRElWIiksZC5ldmVudE1hbmFnZXI9bmV3IGZzKF9YKGQpKSxkLnByZXNzZWQ9bnVsbCxkLmRibGNsaWNrPTAsZC5hdXRvcmVzaXplVGltZW91dD1udWxsLGQuY29sdW1uV2lkdGhzTWFwPXZv''@;'; put 'put ''aWQgMCx3WC5zZXQoX1goZCkse2NvbmZpZzp2b2lkIDB9KSxnaShkLmhhbmRsZSwibWFudWFsQ29sdW1uUmVzaXplciIpLGdpKGQuZ3VpZGUsIm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZSIpLGR9cmV0dXJuIGZ1bmN0aW9uIHM5dChsLGMsYSl7YyYmTm1lKGwucHJvdG90eXBlLGMpLGEmJk5t''@;'; put 'put ''ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpbmxpbmVEaXIiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifX0se2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0NQXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuY29sdW1uV2lkdGhzTWFwPW5ldyBGNCx0aGlzLmNvbHVtbldpZHRoc01hcC5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25NYXBJbml0KCl9KSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUsdGhpcy5jb2x1bW5XaWR0aHNNYXApLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29sV2lkdGgiLGZ1bmN0aW9uKGgsbSl7cmV0''@;'; put 'put ''dXJuIGQub25Nb2RpZnlDb2xXaWR0aChoLG0pfSksdGhpcy5hZGRIb29rKCJiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLGZ1bmN0aW9uKGgsbSl7cmV0dXJuIGQub25CZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgoaCxtKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uUmVzaXpl''@;'; put 'put ''IixmdW5jdGlvbihoLG0sXyl7cmV0dXJuIGQub25CZWZvcmVDb2x1bW5SZXNpemUoaCxtLF8pfSksdGhpcy5iaW5kRXZlbnRzKCksYzYoTjMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksYzYoTjMoYS5wcm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3dYLmdldCh0aGlzKS5jb25maWc9dGhpcy5jb2x1bW5X''@;'; put 'put ''aWR0aHNNYXAuZ2V0VmFsdWVzKCksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpLGM2KE4zKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InNhdmVNYW51YWxDb2x1bW5XaWR0aHMiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLFZtZSx0aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZXMoKSl9fSx7a2V5OiJsb2FkTWFudWFsQ29sdW1uV2lkdGhzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXt9O3JldHVybiB0aGlzLmhv''@;'; put 'put ''dC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlTG9hZCIsVm1lLGQpLGQudmFsdWV9fSx7a2V5OiJzZXRNYW51YWxTaXplIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPU1hdGgubWF4KGgsMjApLF89dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihkKTtyZXR1cm4gdGhpcy5jb2x1bW5XaWR0''@;'; put 'put ''aHNNYXAuc2V0VmFsdWVBdEluZGV4KF8sbSksbX19LHtrZXk6ImNsZWFyTWFudWFsU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihkKTt0aGlzLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoaCxudWxsKX19LHtrZXk6Im9uTWFw''@;'; put 'put ''SW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9d1guZ2V0KHRoaXMpLG09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtDUF0sXz10aGlzLmxvYWRNYW51YWxDb2x1bW5XaWR0aHMoKTt0eXBlb2YgXzwidSI/dGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtfLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oTyxYKXtkLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1ZUF0SW5kZXgoWCxPKX0pfSwhMCk6QXJyYXkuaXNBcnJheShtKT8odGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXttLmZvckVhY2goZnVuY3Rpb24oTyxYKXtkLmNvbHVtbldpZHRoc01hcC5zZXRWYWx1''@;'; put 'put ''ZUF0SW5kZXgoWCxPKX0pfSwhMCksaC5jb25maWc9bSk6ITA9PT1tJiZBcnJheS5pc0FycmF5KGguY29uZmlnKSYmdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtoLmNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uKE8sWCl7ZC5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4''@;'; put 'put ''KFgsTyl9KX0sITApfX0se2tleToic2V0dXBIYW5kbGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztpZihkLnBhcmVudE5vZGUpe3RoaXMuY3VycmVudFRIPWQ7dmFyIG09dGhpcy5ob3Qudmlldy5fd3QsXz1tLnd0VGFibGUuZ2V0Q29vcmRzKHRoaXMuY3VycmVudFRI''@;'; put 'put ''KSxPPV8uY29sO2lmKCEoTzwwKSl7dmFyIGJlLFg9Y3ModGhpcy5jdXJyZW50VEgpLGFlPXRoaXMuY3VycmVudFRILmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO088bS5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpJiYoYmU9bS53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVy''@;'; put 'put ''T3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCxfLnJvdyxfLmNvbCkpLGJlfHwoYmU9bS53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24odGhpcy5jdXJyZW50VEgsXy5yb3csXy5jb2wpKSx0aGlzLmN1cnJlbnRDb2w9dGhp''@;'; put 'put ''cy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChPKSx0aGlzLnNlbGVjdGVkQ29scz1bXTt2YXIgeGU9dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpfHx0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVh''@;'; put 'put ''ZGVyKCk7dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKSYmeGUmJlJuKHRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2UoKSxmdW5jdGlvbihaZSl7X28oWmUuZ2V0VG9wU3RhcnRDb3JuZXIoKS5jb2wsWmUuZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sLGZ1bmN0aW9uKGd0KXtoLnNlbGVj''@;'; put 'put ''dGVkQ29scy5pbmNsdWRlcyhndCl8fGguc2VsZWN0ZWRDb2xzLnB1c2goZ3QpfSl9KSx0aGlzLnNlbGVjdGVkQ29scy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRDb2wpfHwodGhpcy5zZWxlY3RlZENvbHM9W3RoaXMuY3VycmVudENvbF0pLHRoaXMuc3RhcnRPZmZzZXQ9YmUuc3RhcnQtNix0aGlz''@;'; put 'put ''LnN0YXJ0V2lkdGg9cGFyc2VJbnQoYWUud2lkdGgsMTApLHRoaXMuaGFuZGxlLnN0eWxlLnRvcD0iIi5jb25jYXQoYmUudG9wLCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5lRGlyXT0iIi5jb25jYXQodGhpcy5zdGFydE9mZnNldCt0aGlzLnN0YXJ0V2lkdGgsInB4IiksdGhp''@;'; put 'put ''cy5oYW5kbGUuc3R5bGUuaGVpZ2h0PSIiLmNvbmNhdChYLCJweCIpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGFuZGxlKX19fX0se2tleToicmVmcmVzaEhhbmRsZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5l''@;'; put 'put ''RGlyXT0iIi5jb25jYXQodGhpcy5zdGFydE9mZnNldCt0aGlzLmN1cnJlbnRXaWR0aCwicHgiKX19LHtrZXk6InNldHVwR3VpZGVQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD1wYXJzZUludChjcyh0aGlzLmhhbmRsZSksMTApLGg9cGFyc2VJbnQodGhpcy5oYW5kbGUuc3R5bGUu''@;'; put 'put ''dG9wLDEwKStkLG09cGFyc2VJbnQodGhpcy5ob3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRIZWlnaHQoMCksMTApO2dpKHRoaXMuaGFuZGxlLCJhY3RpdmUiKSxnaSh0aGlzLmd1aWRlLCJhY3RpdmUiKSx0aGlzLmd1aWRlLnN0eWxlLnRvcD0iIi5jb25jYXQoaCwicHgiKSx0aGlzLnJl''@;'; put 'put ''ZnJlc2hHdWlkZVBvc2l0aW9uKCksdGhpcy5ndWlkZS5zdHlsZS5oZWlnaHQ9IiIuY29uY2F0KG0tZCwicHgiKSx0aGlzLmhvdC5yb290RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmd1aWRlKX19LHtrZXk6InJlZnJlc2hHdWlkZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ3Vp''@;'; put 'put ''ZGUuc3R5bGVbdGhpcy5pbmxpbmVEaXJdPXRoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5lRGlyXX19LHtrZXk6ImhpZGVIYW5kbGVBbmRHdWlkZSIsdmFsdWU6ZnVuY3Rpb24oKXtKbyh0aGlzLmhhbmRsZSwiYWN0aXZlIiksSm8odGhpcy5ndWlkZSwiYWN0aXZlIil9fSx7a2V5OiJjaGVj''@;'; put 'put ''a0lmQ29sdW1uSGVhZGVyIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4hIXg0KGQsWyJUSEVBRCJdLHRoaXMuaG90LnJvb3RFbGVtZW50KX19LHtrZXk6ImdldENsb3Nlc3RUSFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIlRBQkxFIiE9PWQudGFnTmFtZT8iVEgiPT09ZC50YWdO''@;'; put 'put ''YW1lP2Q6dGhpcy5nZXRDbG9zZXN0VEhQYXJlbnQoZC5wYXJlbnROb2RlKTpudWxsfX0se2tleToib25Nb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKGQpe2lmKCFBWShkLnRhcmdldCkmJnRoaXMuY2hlY2tJZkNvbHVtbkhlYWRlcihkLnRhcmdldCkpe3ZhciBoPXRoaXMuZ2V0Q2xvc2VzdFRI''@;'; put 'put ''UGFyZW50KGQudGFyZ2V0KTtpZighaClyZXR1cm47dmFyIG09aC5nZXRBdHRyaWJ1dGUoImNvbHNwYW4iKTtoJiYobnVsbD09PW18fCIxIj09PW0pJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oaCkpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9ZnVuY3Rpb24oKXtkLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAsZC5ob3Qudmlldy5yZW5kZXIoKSxkLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LG09ZnVuY3Rpb24oWCxhZSl7dmFyIHBlPWQuaG90LnJ1bkhvb2tzKCJiZWZvcmVD''@;'; put 'put ''b2x1bW5SZXNpemUiLGQubmV3U2l6ZSxYLCEwKTt2b2lkIDAhPT1wZSYmKGQubmV3U2l6ZT1wZSksImFsbCI9PT1kLmhvdC5nZXRTZXR0aW5ncygpLnN0cmV0Y2hIP2QuY2xlYXJNYW51YWxTaXplKFgpOmQuc2V0TWFudWFsU2l6ZShYLGQubmV3U2l6ZSksZC5zYXZlTWFudWFsQ29sdW1uV2lk''@;'; put 'put ''dGhzKCksZC5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uUmVzaXplIixkLm5ld1NpemUsWCwhMCksYWUmJmgoKX07dGhpcy5kYmxjbGljaz49MiYmKHRoaXMuc2VsZWN0ZWRDb2xzLmxlbmd0aD4xPyhSbih0aGlzLnNlbGVjdGVkQ29scyxmdW5jdGlvbihPKXttKE8pfSksaCgpKTpSbih0aGlz''@;'; put 'put ''LnNlbGVjdGVkQ29scyxmdW5jdGlvbihPKXttKE8sITApfSkpLHRoaXMuZGJsY2xpY2s9MCx0aGlzLmF1dG9yZXNpemVUaW1lb3V0PW51bGx9fSx7a2V5OiJvbk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztZbyhkLnRhcmdldCwibWFudWFsQ29sdW1uUmVzaXplciIp''@;'; put 'put ''JiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSx0aGlzLnNldHVwR3VpZGVQb3NpdGlvbigpLHRoaXMucHJlc3NlZD0hMCxudWxsPT09dGhpcy5hdXRvcmVzaXplVGltZW91dCYmKHRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBoLmFmdGVyTW91c2VEb3duVGltZW91dCgpfSw1MDApLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQodGhpcy5hdXRvcmVzaXplVGltZW91dCkpLHRoaXMuZGJsY2xpY2srPTEsdGhpcy5zdGFydFg9ZC5wYWdlWCx0aGlzLm5ld1NpemU9dGhpcy5zdGFydFdpZHRoKX19LHtrZXk6Im9u''@;'; put 'put ''TW91c2VNb3ZlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO2lmKHRoaXMucHJlc3NlZCl7dmFyIG09KGQucGFnZVgtdGhpcy5zdGFydFgpKnRoaXMuaG90LmdldERpcmVjdGlvbkZhY3RvcigpO3RoaXMuY3VycmVudFdpZHRoPXRoaXMuc3RhcnRXaWR0aCttLFJuKHRoaXMuc2VsZWN0''@;'; put 'put ''ZWRDb2xzLGZ1bmN0aW9uKF8pe2gubmV3U2l6ZT1oLnNldE1hbnVhbFNpemUoXyxoLmN1cnJlbnRXaWR0aCl9KSx0aGlzLnJlZnJlc2hIYW5kbGVQb3NpdGlvbigpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKX19fSx7a2V5OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9''@;'; put 'put ''dGhpcyxoPWZ1bmN0aW9uKCl7ZC5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLGQuaG90LnZpZXcucmVuZGVyKCksZC5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxtPWZ1bmN0aW9uKFgsYWUpe2QuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb2x1bW5SZXNpemUiLGQubmV3U2l6ZSxYLCEx''@;'; put 'put ''KSxhZSYmaCgpLGQuc2F2ZU1hbnVhbENvbHVtbldpZHRocygpLGQuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblJlc2l6ZSIsZC5uZXdTaXplLFgsITEpfTt0aGlzLnByZXNzZWQmJih0aGlzLmhpZGVIYW5kbGVBbmRHdWlkZSgpLHRoaXMucHJlc3NlZD0hMSx0aGlzLm5ld1NpemUhPT10aGlz''@;'; put 'put ''LnN0YXJ0V2lkdGgmJih0aGlzLnNlbGVjdGVkQ29scy5sZW5ndGg+MT8oUm4odGhpcy5zZWxlY3RlZENvbHMsZnVuY3Rpb24oTyl7bShPKX0pLGgoKSk6Um4odGhpcy5zZWxlY3RlZENvbHMsZnVuY3Rpb24oTyl7bShPLCEwKX0pKSx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24odGhpcy5jdXJy''@;'; put 'put ''ZW50VEgpKX19LHtrZXk6ImJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LG09aC5yb290V2luZG93LF89aC5yb290RWxlbWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKF8sIm1vdXNlb3ZlciIsZnVuY3Rpb24oTyl7cmV0dXJu''@;'; put 'put ''IGQub25Nb3VzZU92ZXIoTyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKF8sIm1vdXNlZG93biIsZnVuY3Rpb24oTyl7cmV0dXJuIGQub25Nb3VzZURvd24oTyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0sIm1vdXNlbW92ZSIsZnVuY3Rpb24o''@;'; put 'put ''Tyl7cmV0dXJuIGQub25Nb3VzZU1vdmUoTyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0sIm1vdXNldXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb3VzZVVwKCl9KX19LHtrZXk6Im9uTW9kaWZ5Q29sV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09ZDtp''@;'; put 'put ''Zih0aGlzLmVuYWJsZWQpe3ZhciBfPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaCksTz10aGlzLmNvbHVtbldpZHRoc01hcC5nZXRWYWx1ZUF0SW5kZXgoXyk7dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtDUF0mJk8mJihtPU8pfXJldHVybiBtfX0se2tleToib25CZWZvcmVTdHJldGNoaW5n''@;'; put 'put ''Q29sdW1uV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KGgpO3JldHVybiBudWxsPT09bSYmKG09ZCksbX19LHtrZXk6Im9uQmVmb3JlQ29sdW1uUmVzaXplIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnZpZXcu''@;'; put 'put ''X3d0Lnd0Vmlld3BvcnQucmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkKCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2M2KE4zKGEucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIENQfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTMwfX1dKSxhfShHYSk7ZnVuY3Rpb24gX0UobCl7cmV0dXJuKF9FPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1''@;'; put 'put ''bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQm1lKGwsYyl7Zm9y''@;'; put 'put ''KHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxfOXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBfOXQo''@;'; put 'put ''bCl7dmFyIGM9ZnVuY3Rpb24gdzl0KGwsYyl7aWYoIm9iamVjdCIhPT1fRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1fRShmKSlyZXR1cm4g''@;'; put 'put ''Zjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09X0UoYyk/YzpTdHJpbmcoYyl9dmFyIGViPSJw''@;'; put 'put ''eCIsQzl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24geTl0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMuaG90PWMsdGhpcy5fZWxlbWVudD1u''@;'; put 'put ''dWxsLHRoaXMuc3RhdGU9MH1yZXR1cm4gZnVuY3Rpb24gYjl0KGwsYyxhKXtjJiZCbWUobC5wcm90b3R5cGUsYyksYSYmQm1lKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGwsW3trZXk6ImFwcGVuZFRvIix2YWx1ZTpmdW5jdGlvbihh''@;'; put 'put ''KXthLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuc3RhdGU9Mn19LHtrZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpezA9PT10aGlzLnN0YXRlJiYodGhpcy5fZWxlbWVudD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zdGF0ZT0xKX19''@;'; put 'put ''LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0FwcGVuZGVkKCkmJnRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5zdGF0ZT0wfX0se2tleToiaXNBcHBlbmRlZCIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXRoaXMuc3RhdGV9fSx7a2V5OiJpc0J1aWx0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlPj0xfX0se2tleToic2V0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKGEsZil7dm9pZCAwIT09YSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUudG9w''@;'; put 'put ''PWErZWIpLHZvaWQgMCE9PWYmJih0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQ9ZitlYil9fSx7a2V5OiJnZXRQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57dG9wOnRoaXMuX2VsZW1lbnQuc3R5bGUudG9wP3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wLDEwKTowLGxl''@;'; put 'put ''ZnQ6dGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0P3BhcnNlSW50KHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdCwxMCk6MH19fSx7a2V5OiJzZXRTaXplIix2YWx1ZTpmdW5jdGlvbihhLGYpe2EmJih0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoPWErZWIpLGYmJih0aGlzLl9lbGVtZW50LnN0eWxl''@;'; put 'put ''LmhlaWdodD1mK2ViKX19LHtrZXk6ImdldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOnRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aCwxMCk6MCxoZWlnaHQ6dGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQ/cGFy''@;'; put 'put ''c2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQsMTApOjB9fX0se2tleToic2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbihhLGYpe2EmJih0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpblRvcD1hK2ViKSxmJiYodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0PWYrZWIpfX0se2tl''@;'; put 'put ''eToiZ2V0T2Zmc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0b3A6dGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3A/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AsMTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ/cGFyc2VJbnQodGhp''@;'; put 'put ''cy5fZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0LDEwKTowfX19XSksbH0oKTtjb25zdCBVbWU9Qzl0O2Z1bmN0aW9uIHRiKGwpe3JldHVybih0Yj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlw''@;'; put 'put ''ZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIFptZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7''@;'; put 'put ''YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsazl0KGYua2V5KSxmKX19ZnVuY3Rpb24gazl0KGwpe3ZhciBjPWZ1bmN0aW9uIEU5''@;'; put 'put ''dChsLGMpe2lmKCJvYmplY3QiIT09dGIobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dGIoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXRiKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIFNQKCl7cmV0dXJuIFNQPXR5cGVv''@;'; put 'put ''ZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiB4OXQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPW5iKGwpKTspO3JldHVybiBsfShj''@;'; put 'put ''LGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sU1AuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFNYKGwsYyl7cmV0dXJuKFNYPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gbmIobCl7cmV0dXJuKG5iPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIEw5dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gQTl0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVy''@;'; put 'put ''IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShs''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJlNYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gVDl0KGwpe3ZhciBjPWZ1bmN0aW9uIEk5dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lm''@;'; put 'put ''KCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ZCxmPW5iKGwpO2lmKGMpe3ZhciBoPW5iKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBPOXQobCxjKXtpZihjJiYoIm9iamVjdCI9PT10YihjKXx8ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRDl0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3''@;'; put 'put ''IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7cmV0dXJuIGZ1bmN0aW9uIFM5dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmdW5jdGlvbiBNOXQobCxjLGEpe2MmJlptZShsLnByb3RvdHlwZSxjKSxhJiZabWUobCxhKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7U1AobmIoYS5wcm90b3R5cGUpLCJidWlsZCIsdGhpcykuY2FsbCh0aGlzKSxnaSh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0Iil9fV0p''@;'; put 'put ''LGF9KFVtZSk7Y29uc3QgUDl0PUw5dDtmdW5jdGlvbiByYihsKXtyZXR1cm4ocmI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBZbWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVt''@;'; put 'put ''ZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLE45dChmLmtleSksZil9fWZ1bmN0aW9uIE45dChsKXt2YXIgYz1mdW5jdGlvbiBWOXQobCxjKXtpZigib2JqZWN0IiE9PXJiKGwpfHxudWxsPT09''@;'; put 'put ''bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXJiKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmlt''@;'; put 'put ''aXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1yYihjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBNUCgpe3JldHVybiBNUD10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3Qu''@;'; put 'put ''Z2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gQjl0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1pYihsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LE1QLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNWChsLGMpe3JldHVybihNWD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIGliKGwpe3JldHVybihpYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3Byb3RvX198''@;'; put 'put ''fE9iamVjdC5nZXRQcm90b3R5cGVPZihhKX0pKGwpfXZhciBHOXQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uIGo5dChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3Ig''@;'; put 'put ''YSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZNWChs''@;'; put 'put ''LGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIHo5dChsKXt2YXIgYz1mdW5jdGlvbiBZOXQoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7''@;'; put 'put ''dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1pYihsKTtpZihjKXt2YXIgaD1pYih0aGlzKS5jb25z''@;'; put 'put ''dHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gVTl0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09cmIoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAh''@;'; put 'put ''PT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFo5dChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp''@;'; put 'put ''bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYSgpe3JldHVybiBmdW5jdGlvbiBGOXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs''@;'; put 'put ''YXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZnVuY3Rpb24gSDl0KGwsYyxhKXtjJiZZbWUobC5wcm90b3R5cGUsYyksYSYmWW1lKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9''@;'; put 'put ''KGEsW3trZXk6ImJ1aWxkIix2YWx1ZTpmdW5jdGlvbigpe01QKGliKGEucHJvdG90eXBlKSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyksZ2kodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZSIpfX1dKSxhfShVbWUpO2NvbnN0ICQ5dD1HOXQ7ZnVuY3Rpb24gb2Io''@;'; put 'put ''bCl7cmV0dXJuKG9iPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9''@;'; put 'put ''PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gV21lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVl''@;'; put 'put ''ImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxYOXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBYOXQobCl7dmFyIGM9ZnVuY3Rpb24gSjl0KGwsYyl7aWYoIm9iamVjdCIhPT1vYihsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRp''@;'; put 'put ''dmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1vYihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/''@;'; put 'put ''U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09b2IoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gZjYoKXtyZXR1cm4gZjY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1''@;'; put 'put ''bmN0aW9uIFE5dChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9VjMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdl''@;'; put 'put ''dC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxmNi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga1gobCxjKXtyZXR1cm4oa1g9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4g''@;'; put 'put ''Zi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBFWChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gVjMobCl7cmV0''@;'; put 'put ''dXJuKFYzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVJvd01vdmUiKSx1''@;'; put 'put ''by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJSb3dNb3ZlIik7dmFyIHhYPSJtYW51YWxSb3dNb3ZlIixubT1uZXcgV2Vha01hcCxHbWU9Imh0X19tYW51YWxSb3dNb3ZlIixrUD0ic2hvdy11aSIsQVg9Im9uLW1vdmluZy0tcm93cyIsVFg9ImFmdGVyLXNlbGVjdGlvbi0tcm93cyIs''@;'; put 'put ''b3l0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBleXQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3Jl''@;'; put 'put ''YXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYma1gobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiB0eXQobCl7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gcnl0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVP''@;'; put 'put ''Zi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9VjMobCk7aWYoYyl7dmFyIGg9VjModGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3Vt''@;'; put 'put ''ZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIG55dChsLGMpe2lmKGMmJigib2JqZWN0Ij09PW9iKGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNv''@;'; put 'put ''bnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBFWChsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIEs5dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh''@;'; put 'put ''bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLGQ9Yy5jYWxsKHRoaXMsZiksbm0uc2V0KEVYKGQpLHtyb3dzVG9Nb3ZlOltdLHByZXNzZWQ6dm9pZCAwLHRhcmdldDp7ZXZlbnRQYWdlWTp2b2lkIDAsY29vcmRzOnZvaWQgMCxURDp2b2lkIDAscm93OnZvaWQgMH0s''@;'; put 'put ''Y2FjaGVkRHJvcEluZGV4OnZvaWQgMH0pLGQuZXZlbnRNYW5hZ2VyPW5ldyBmcyhFWChkKSksZC5iYWNrbGlnaHQ9bmV3IFA5dChmKSxkLmd1aWRlbGluZT1uZXcgJDl0KGYpLGR9cmV0dXJuIGZ1bmN0aW9uIHE5dChsLGMsYSl7YyYmV21lKGwucHJvdG90eXBlLGMpLGEmJldtZShsLGEpLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3hYXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ZD10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlT25DZWxsTW91c2VEb3duLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBkLm9uQmVmb3JlT25DZWxsTW91c2VPdmVyLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlclNjcm9sbEhvcml6b250YWxseSgpfSksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckxvYWREYXRhIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJMb2FkRGF0YS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmJ1aWxkUGx1Z2luVUkoKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksZ2kodGhpcy5ob3Qucm9vdEVsZW1lbnQsR21lKSxmNihWMyhhLnByb3RvdHlwZSksImVu''@;'; put 'put ''YWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLm1vdmVCeVNldHRpbmdzT3JMb2FkKCksZjYoVjMoYS5wcm90b3R5cGUpLCJ1cGRhdGVQ''@;'; put 'put ''bHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe0pvKHRoaXMuaG90LnJvb3RFbGVtZW50LEdtZSksdGhpcy51bnJlZ2lzdGVyRXZlbnRzKCksdGhpcy5iYWNrbGlnaHQuZGVzdHJveSgpLHRoaXMuZ3VpZGVsaW5lLmRlc3Ryb3ko''@;'; put 'put ''KSxmNihWMyhhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3JldHVybiB0aGlzLm1vdmVSb3dzKFtkXSxoKX19LHtrZXk6Im1vdmVSb3dzIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPW5t''@;'; put 'put ''LmdldCh0aGlzKSxfPW0uY2FjaGVkRHJvcEluZGV4LE89dGhpcy5pc01vdmVQb3NzaWJsZShkLGgpLFg9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJvd01vdmUiLGQsaCxfLE8pO2lmKG0uY2FjaGVkRHJvcEluZGV4PXZvaWQgMCwhMSE9PVgpe08mJnRoaXMuaG90LnJvd0luZGV4TWFwcGVy''@;'; put 'put ''Lm1vdmVJbmRleGVzKGQsaCk7dmFyIGFlPU8mJnRoaXMuaXNSb3dPcmRlckNoYW5nZWQoZCxoKTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsZCxoLF8sTyxhZSksYWV9fX0se2tleToiZHJhZ1JvdyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtyZXR1cm4gdGhpcy5kcmFn''@;'; put 'put ''Um93cyhbZF0saCl9fSx7a2V5OiJkcmFnUm93cyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmNvdW50RmluYWxJbmRleChkLGgpO3JldHVybiBubS5nZXQodGhpcykuY2FjaGVkRHJvcEluZGV4PWgsdGhpcy5tb3ZlUm93cyhkLG0pfX0se2tleToiaXNNb3ZlUG9zc2libGUiLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxfPWQubGVuZ3RoK2g+bSxPPWg8MCxYPWQuc29tZShmdW5jdGlvbihwZSl7cmV0dXJuIHBlPDB9KSxhZT1kLnNvbWUoZnVuY3Rpb24ocGUpe3JldHVybiBw''@;'; put 'put ''ZT49bX0pO3JldHVybiEoX3x8T3x8WHx8YWUpfX0se2tleToiaXNSb3dPcmRlckNoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7cmV0dXJuIGQuc29tZShmdW5jdGlvbihtLF8pe3JldHVybiBtLV8hPT1ofSl9fSx7a2V5OiJjb3VudEZpbmFsSW5kZXgiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7''@;'; put 'put ''dmFyIG09UHMoZCxmdW5jdGlvbihfLE8pe3JldHVybiBPPGgmJihfKz0xKSxffSwwKTtyZXR1cm4gaC1tfX0se2tleToiZ2V0Um93c0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsXz0wLE89ZDtPPD1oO08rKyl7dmFyIFg9bS5n''@;'; put 'put ''ZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KE8pO251bGwhPT1YJiYoXys9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5nZXRSb3dIZWlnaHQoWCl8fDIzKX1yZXR1cm4gX319LHtrZXk6Im1vdmVCeVNldHRpbmdzT3JMb2FkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90Lmdl''@;'; put 'put ''dFNldHRpbmdzKClbeFhdO2lmKEFycmF5LmlzQXJyYXkoZCkpdGhpcy5tb3ZlUm93cyhkLDApO2Vsc2UgaWYodm9pZCAwIT09ZCl7dmFyIGg9dGhpcy5wZXJzaXN0ZW50U3RhdGVMb2FkKCk7aC5sZW5ndGgmJnRoaXMubW92ZVJvd3MoaCwwKX19fSx7a2V5OiJpc0ZpeGVkUm93VG9wIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihkKXtyZXR1cm4gZDx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c1RvcH19LHtrZXk6ImlzRml4ZWRSb3dCb3R0b20iLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiBkPnRoaXMuaG90LmNvdW50Um93cygpLTEtdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJv''@;'; put 'put ''d3NCb3R0b219fSx7a2V5OiJwZXJzaXN0ZW50U3RhdGVTYXZlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwibWFudWFsUm93TW92ZSIsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX0se2tleToi''@;'; put 'put ''cGVyc2lzdGVudFN0YXRlTG9hZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD17fTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZUxvYWQiLCJtYW51YWxSb3dNb3ZlIixkKSxkLnZhbHVlP2QudmFsdWU6W119fSx7a2V5OiJwcmVwYXJlUm93c1RvTW92aW5nIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaD1bXTtpZighZClyZXR1cm4gaDt2YXIgbT1kLmZyb20sXz1kLnRvO3JldHVybiBfbyhNYXRoLm1pbihtLnJvdyxfLnJvdyksTWF0aC5tYXgobS5yb3csXy5yb3cpLGZ1bmN0aW9uKGFlKXtoLnB1c2go''@;'; put 'put ''YWUpfSksaH19LHtrZXk6InJlZnJlc2hQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9bm0uZ2V0KHRoaXMpLGg9ZC50YXJnZXQuY29vcmRzLG09dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLF89dGhpcy5ob3Qudmlldy5nZXRMYXN0RnVsbHlWaXNpYmxl''@;'; put 'put ''Um93KCksTz10aGlzLmhvdC5jb3VudFJvd3MoKTt0aGlzLmlzRml4ZWRSb3dUb3AoaC5yb3cpJiZtPjAmJnRoaXMuaG90LnNjcm9sbFZpZXdwb3J0VG8odGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KG0tMSwtMSkpLHRoaXMuaXNGaXhlZFJvd0JvdHRv''@;'; put 'put ''bShoLnJvdykmJl88TyYmdGhpcy5ob3Quc2Nyb2xsVmlld3BvcnRUbyh0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoXysxLDEpLHZvaWQgMCwhMCk7dmFyIFg9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxhZT1kLnRhcmdldC5URCxwZT10aGlzLmhv''@;'; put 'put ''dC5yb290RWxlbWVudCxiZT1pdShwZSkseGU9YjUocGUpLGR0PWQudGFyZ2V0LmV2ZW50UGFnZVktKGJlLnRvcC0odGhpcy5ob3Qucm9vdFdpbmRvdz09PXhlP3hlLnNjcm9sbFk6eGUuc2Nyb2xsVG9wKSkrWC5ob2xkZXIuc2Nyb2xsVG9wLGd0PVguaGlkZXIub2Zmc2V0SGVpZ2h0LGp0PVgu''@;'; put 'put ''VEJPRFkub2Zmc2V0VG9wLHJuPXRoaXMuYmFja2xpZ2h0LmdldE9mZnNldCgpLnRvcCxYdD10aGlzLmJhY2tsaWdodC5nZXRTaXplKCkuaGVpZ2h0LHluPWFlLm9mZnNldEhlaWdodC8yLFFuPWFlLm9mZnNldEhlaWdodCxPcj10aGlzLmhvdC52aWV3LlRIRUFELm9mZnNldEhlaWdodCt0aGlz''@;'; put 'put ''LmdldFJvd3NIZWlnaHQoMCxoLnJvdy0xKSxWcj1kdD49T3IreW47dGhpcy5pc0ZpeGVkUm93VG9wKGgucm93KSYmKE9yKz1YLmhvbGRlci5zY3JvbGxUb3ApLGgucm93PDA/ZC50YXJnZXQucm93PW0+MD9tLTE6bTpWcj8oZC50YXJnZXQucm93PWgucm93KzEsT3IrPTA9PT1oLnJvdz9Rbi0x''@;'; put 'put ''OlFuKTpkLnRhcmdldC5yb3c9aC5yb3c7dmFyIFpyPWR0LGlyPU9yO2R0K1h0K3JuPj1ndD9acj1ndC1YdC1ybjpkdCtybjxqdCYmKFpyPWp0K01hdGguYWJzKHJuKSksT3I+PWd0LTEmJihpcj1ndC0xKSx0aGlzLmJhY2tsaWdodC5zZXRQb3NpdGlvbihaciksdGhpcy5ndWlkZWxpbmUuc2V0''@;'; put 'put ''UG9zaXRpb24oaXIpfX0se2tleToicmVnaXN0ZXJFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZW1vdmUiLGZ1bmN0aW9uKG0p''@;'; put 'put ''e3JldHVybiBkLm9uTW91c2VNb3ZlKG0pfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiBkLm9uTW91c2VVcCgpfSl9fSx7a2V5OiJ1bnJlZ2lzdGVyRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnRNYW5h''@;'; put 'put ''Z2VyLmNsZWFyKCl9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyl7dmFyIE89dGhpcy5ob3Qudmlldy5fd3QsWD1PLnd0VGFibGUsYWU9Ty53dFZpZXdwb3J0LHBlPXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIo''@;'; put 'put ''KSxiZT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLHhlPW5tLmdldCh0aGlzKTtpZighYmV8fCFwZXx8eGUucHJlc3NlZHx8MCE9PWQuYnV0dG9uKXJldHVybiB4ZS5wcmVzc2VkPSExLHhlLnJvd3NUb01vdmUubGVuZ3RoPTAsdm9pZCBKbyh0aGlzLmhvdC5yb290RWxlbWVudCxb''@;'; put 'put ''QVgsa1BdKTt2YXIgVmU9dGhpcy5ndWlkZWxpbmUuaXNCdWlsdCgpJiYhdGhpcy5ndWlkZWxpbmUuaXNBcHBlbmRlZCgpLFplPXRoaXMuYmFja2xpZ2h0LmlzQnVpbHQoKSYmIXRoaXMuYmFja2xpZ2h0LmlzQXBwZW5kZWQoKTtWZSYmWmUmJih0aGlzLmd1aWRlbGluZS5hcHBlbmRUbyhYLmhp''@;'; put 'put ''ZGVyKSx0aGlzLmJhY2tsaWdodC5hcHBlbmRUbyhYLmhpZGVyKSk7dmFyIGx0PWJlLmZyb20sZHQ9YmUudG8sZ3Q9TWF0aC5taW4obHQucm93LGR0LnJvdyksanQ9TWF0aC5tYXgobHQucm93LGR0LnJvdyk7aWYoaC5jb2w8MCYmaC5yb3c+PWd0JiZoLnJvdzw9anQpe18ucm93PSEwLHhlLnBy''@;'; put 'put ''ZXNzZWQ9ITAseGUudGFyZ2V0LmV2ZW50UGFnZVk9ZC5wYWdlWSx4ZS50YXJnZXQuY29vcmRzPWgseGUudGFyZ2V0LlREPW0seGUucm93c1RvTW92ZT10aGlzLnByZXBhcmVSb3dzVG9Nb3ZpbmcoKTt2YXIgcm49WC5ob2xkZXIuc2Nyb2xsTGVmdCthZS5nZXRSb3dIZWFkZXJXaWR0aCgpO3Ro''@;'; put 'put ''aXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwscm4pLHRoaXMuYmFja2xpZ2h0LnNldFNpemUoWC5oaWRlci5vZmZzZXRXaWR0aC1ybix0aGlzLmdldFJvd3NIZWlnaHQoZ3QsanQpKSx0aGlzLmJhY2tsaWdodC5zZXRPZmZzZXQoLTEqKHRoaXMuZ2V0Um93c0hlaWdodChndCxoLnJvdy0x''@;'; put 'put ''KStkLm9mZnNldFkpLG51bGwpLGdpKHRoaXMuaG90LnJvb3RFbGVtZW50LEFYKSx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX1lbHNlIEpvKHRoaXMuaG90LnJvb3RFbGVtZW50LFRYKSx4ZS5wcmVzc2VkPSExLHhlLnJvd3NUb01vdmUubGVuZ3RoPTB9fSx7a2V5OiJvbk1vdXNlTW92ZSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oZCl7dmFyIGg9bm0uZ2V0KHRoaXMpO2lmKGgucHJlc3NlZCl7aWYoZC50YXJnZXQ9PT10aGlzLmJhY2tsaWdodC5lbGVtZW50KXt2YXIgbT10aGlzLmJhY2tsaWdodC5nZXRTaXplKCkuaGVpZ2h0O3RoaXMuYmFja2xpZ2h0LnNldFNpemUobnVsbCwwKSxzZXRUaW1lb3V0''@;'; put 'put ''KGZ1bmN0aW9uKCl7dGhpcy5iYWNrbGlnaHQuc2V0UG9zaXRpb24obnVsbCxtKX0pfWgudGFyZ2V0LmV2ZW50UGFnZVk9ZC5wYWdlWSx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX19fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyl7dmFyIE89''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxYPW5tLmdldCh0aGlzKTshT3x8IVgucHJlc3NlZHx8KFgucm93c1RvTW92ZS5pbmRleE9mKGgucm93KT4tMT9Kbyh0aGlzLmhvdC5yb290RWxlbWVudCxrUCk6Z2kodGhpcy5ob3Qucm9vdEVsZW1lbnQsa1ApLF8ucm93PSEwLF8uY29s''@;'; put 'put ''dW1uPSEwLF8uY2VsbD0hMCxYLnRhcmdldC5jb29yZHM9aCxYLnRhcmdldC5URD1tKX19LHtrZXk6Im9uTW91c2VVcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD1ubS5nZXQodGhpcyksaD1kLnRhcmdldC5yb3csbT1kLnJvd3NUb01vdmUubGVuZ3RoO2lmKGQucHJlc3NlZD0hMSxkLmJhY2ts''@;'; put 'put ''aWdodEhlaWdodD0wLEpvKHRoaXMuaG90LnJvb3RFbGVtZW50LFtBWCxrUCxUWF0pLHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSYmZ2kodGhpcy5ob3Qucm9vdEVsZW1lbnQsVFgpLCEobTwxfHx2b2lkIDA9PT1oKSl7dmFyIE89dGhpcy5ob3QudG9QaHlzaWNh''@;'; put 'put ''bFJvdyhkLnJvd3NUb01vdmVbMF0pLFg9dGhpcy5kcmFnUm93cyhkLnJvd3NUb01vdmUsaCk7aWYoZC5yb3dzVG9Nb3ZlLmxlbmd0aD0wLCEwPT09WCl7dGhpcy5wZXJzaXN0ZW50U3RhdGVTYXZlKCksdGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUo''@;'; put 'put ''ITApO3ZhciBhZT10aGlzLmhvdC50b1Zpc3VhbFJvdyhPKTt0aGlzLmhvdC5zZWxlY3RSb3dzKGFlLGFlK20tMSl9fX19LHtrZXk6Im9uQWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxfPXRoaXMuaG90LnZp''@;'; put 'put ''ZXcuX3d0Lnd0Vmlld3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgoKStkLmhvbGRlci5zY3JvbGxMZWZ0O3RoaXMuYmFja2xpZ2h0LnNldFBvc2l0aW9uKG51bGwsXyksdGhpcy5iYWNrbGlnaHQuc2V0U2l6ZShkLmhpZGVyLm9mZnNldFdpZHRoLV8pfX0se2tleToiYnVpbGRQbHVnaW5VSSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt0aGlzLmJhY2tsaWdodC5idWlsZCgpLHRoaXMuZ3VpZGVsaW5lLmJ1aWxkKCl9fSx7a2V5OiJvbkFmdGVyTG9hZERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLmJhY2tsaWdodC5kZXN0cm95KCksdGhpcy5ndWlkZWxpbmUuZGVzdHJveSgpLGY2KFYzKGEucHJvdG90eXBlKSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHhYfX0se2tleToiUExVR0lOX1BSSU9SSVRZ''@;'; put 'put ''IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTQwfX1dKSxhfShHYSk7ZnVuY3Rpb24gYWIobCl7cmV0dXJuKGFiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7''@;'; put 'put ''cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gJG1lKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5l''@;'; put 'put ''bnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxzeXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBzeXQobCl7dmFyIGM9ZnVuY3Rpb24gdXl0KGwsYyl7aWYoIm9iamVjdCIh''@;'; put 'put ''PT1hYihsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1hYihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11''@;'; put 'put ''c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09YWIoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gZDYoKXtyZXR1cm4gZDY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZs''@;'; put 'put ''ZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIGN5dChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9QjMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2Jq''@;'; put 'put ''ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxkNi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gT1gobCxjKXtyZXR1cm4oT1g9T2JqZWN0LnNldFByb3RvdHlwZU9m''@;'; put 'put ''P09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBEWChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy''@;'; put 'put ''KCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gQjMobCl7cmV0dXJuKEIzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEp''@;'; put 'put ''fSkobCl9dmFyIHFtZSxYbWUsSm1lLFFtZSxFUD0ibWFudWFsUm93UmVzaXplIixLbWU9Im1hbnVhbFJvd0hlaWdodHMiLElYPW5ldyBXZWFrTWFwLGd5dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gZnl0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJk9YKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gZHl0KGwpe3ZhciBjPWZ1bmN0aW9uIHB5dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5z''@;'; put 'put ''aGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgZCxmPUIzKGwpO2lmKGMpe3ZhciBoPUIzKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBoeXQobCxjKXtpZihjJiYoIm9iamVjdCI9''@;'; put 'put ''PT1hYihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gRFgobCl9KHRoaXMsZCl9fShhKTtmdW5j''@;'; put 'put ''dGlvbiBhKGYpe3ZhciBkOyFmdW5jdGlvbiBheXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKTt2YXIgaD0oZD1jLmNhbGwodGhpcyxmKSkuaG90LnJvb3REb2N1bWVudDty''@;'; put 'put ''ZXR1cm4gZC5jdXJyZW50VEg9bnVsbCxkLmN1cnJlbnRSb3c9bnVsbCxkLnNlbGVjdGVkUm93cz1bXSxkLmN1cnJlbnRIZWlnaHQ9bnVsbCxkLm5ld1NpemU9bnVsbCxkLnN0YXJ0WT1udWxsLGQuc3RhcnRIZWlnaHQ9bnVsbCxkLnN0YXJ0T2Zmc2V0PW51bGwsZC5oYW5kbGU9aC5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJESVYiKSxkLmd1aWRlPWguY3JlYXRlRWxlbWVudCgiRElWIiksZC5ldmVudE1hbmFnZXI9bmV3IGZzKERYKGQpKSxkLnByZXNzZWQ9bnVsbCxkLmRibGNsaWNrPTAsZC5hdXRvcmVzaXplVGltZW91dD1udWxsLGQucm93SGVpZ2h0c01hcD12b2lkIDAsSVguc2V0KERYKGQpLHtj''@;'; put 'put ''b25maWc6dm9pZCAwfSksZ2koZC5oYW5kbGUsIm1hbnVhbFJvd1Jlc2l6ZXIiKSxnaShkLmd1aWRlLCJtYW51YWxSb3dSZXNpemVyR3VpZGUiKSxkfXJldHVybiBmdW5jdGlvbiBseXQobCxjLGEpe2MmJiRtZShsLnByb3RvdHlwZSxjKSxhJiYkbWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaW5saW5lRGlyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3QuaXNSdGwoKT8icmlnaHQiOiJsZWZ0In19LHtrZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVtFUF19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnJvd0hlaWdodHNNYXA9bmV3IEY0LHRoaXMucm93SGVpZ2h0c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25N''@;'; put 'put ''YXBJbml0KCl9KSx0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUsdGhpcy5yb3dIZWlnaHRzTWFwKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsZnVuY3Rpb24oaCxtKXtyZXR1cm4gZC5vbk1vZGlmeVJvd0hlaWdodChoLG0pfSksdGhp''@;'; put 'put ''cy5iaW5kRXZlbnRzKCksZDYoQjMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksZDYoQjMoYS5wcm90b3R5cGUp''@;'; put 'put ''LCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe0lYLmdldCh0aGlzKS5jb25maWc9dGhpcy5yb3dIZWlnaHRzTWFwLmdldFZhbHVlcygpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhp''@;'; put 'put ''cy5wbHVnaW5OYW1lKSxkNihCMyhhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJzYXZlTWFudWFsUm93SGVpZ2h0cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlU2F2ZSIsS21lLHRoaXMucm93''@;'; put 'put ''SGVpZ2h0c01hcC5nZXRWYWx1ZXMoKSl9fSx7a2V5OiJsb2FkTWFudWFsUm93SGVpZ2h0cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD17fTtyZXR1cm4gdGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZUxvYWQiLEttZSxkKSxkLnZhbHVlfX0se2tleToic2V0TWFudWFsU2l6ZSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT10aGlzLmhvdC50b1BoeXNpY2FsUm93KGQpLF89TWF0aC5tYXgoaCxNZmUuREVGQVVMVF9IRUlHSFQpO3JldHVybiB0aGlzLnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KG0sXyksX319LHtrZXk6InNldHVwSGFuZGxlUG9zaXRpb24iLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXM7dGhpcy5jdXJyZW50VEg9ZDt2YXIgbT10aGlzLmhvdC52aWV3LF89bS5fd3QsTz1fLnd0VGFibGUuZ2V0Q29vcmRzKHRoaXMuY3VycmVudFRIKSxYPU8ucm93O2lmKCEoWDwwKSl7dmFyIFZlLGFlPVNsKHRoaXMuY3VycmVudFRIKSxwZT10aGlz''@;'; put 'put ''LmN1cnJlbnRUSC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxiZT1YPF8uZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIikseGU9WD49bS5jb3VudE5vdEhpZGRlblJvd0luZGV4ZXMoMCwxKS1fLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpO2JlP1ZlPV8ud3RPdmVybGF5cy50b3BJbmxp''@;'; put 'put ''bmVTdGFydENvcm5lck92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24odGhpcy5jdXJyZW50VEgsTy5yb3csTy5jb2wpOnhlJiYoVmU9Xy53dE92ZXJsYXlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCxP''@;'; put 'put ''LnJvdyxPLmNvbCkpLFZlfHwoVmU9Xy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbih0aGlzLmN1cnJlbnRUSCxPLnJvdyxPLmNvbCkpLHRoaXMuY3VycmVudFJvdz10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVy''@;'; put 'put ''YWJsZUluZGV4KFgpLHRoaXMuc2VsZWN0ZWRSb3dzPVtdO3ZhciBaZT10aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKTt0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZCgpJiZaZSYmUm4o''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpLGZ1bmN0aW9uKGR0KXtfbyhkdC5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxkdC5nZXRCb3R0b21TdGFydENvcm5lcigpLnJvdyxmdW5jdGlvbihybil7aC5zZWxlY3RlZFJvd3MuaW5jbHVkZXMocm4pfHxoLnNlbGVjdGVkUm93cy5wdXNoKHJu''@;'; put 'put ''KX0pfSksdGhpcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXModGhpcy5jdXJyZW50Um93KXx8KHRoaXMuc2VsZWN0ZWRSb3dzPVt0aGlzLmN1cnJlbnRSb3ddKSx0aGlzLnN0YXJ0T2Zmc2V0PVZlLnRvcC02LHRoaXMuc3RhcnRIZWlnaHQ9cGFyc2VJbnQocGUuaGVpZ2h0LDEwKSx0aGlzLmhhbmRs''@;'; put 'put ''ZS5zdHlsZS50b3A9IiIuY29uY2F0KHRoaXMuc3RhcnRPZmZzZXQrdGhpcy5zdGFydEhlaWdodCwicHgiKSx0aGlzLmhhbmRsZS5zdHlsZVt0aGlzLmlubGluZURpcl09IiIuY29uY2F0KFZlLnN0YXJ0LCJweCIpLHRoaXMuaGFuZGxlLnN0eWxlLndpZHRoPSIiLmNvbmNhdChhZSwicHgiKSx0''@;'; put 'put ''aGlzLmhvdC5yb290RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhhbmRsZSl9fX0se2tleToicmVmcmVzaEhhbmRsZVBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlLnN0eWxlLnRvcD0iIi5jb25jYXQodGhpcy5zdGFydE9mZnNldCt0aGlzLmN1cnJlbnRIZWlnaHQsInB4''@;'; put 'put ''Iil9fSx7a2V5OiJzZXR1cEd1aWRlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9cGFyc2VJbnQoU2wodGhpcy5oYW5kbGUpLDEwKSxoPXBhcnNlSW50KHRoaXMuaGFuZGxlLnN0eWxlW3RoaXMuaW5saW5lRGlyXSwxMCkrZCxtPXBhcnNlSW50KHRoaXMuaG90LnZpZXcubWF4aW11''@;'; put 'put ''bVZpc2libGVFbGVtZW50V2lkdGgoMCksMTApO2dpKHRoaXMuaGFuZGxlLCJhY3RpdmUiKSxnaSh0aGlzLmd1aWRlLCJhY3RpdmUiKSx0aGlzLmd1aWRlLnN0eWxlLnRvcD10aGlzLmhhbmRsZS5zdHlsZS50b3AsdGhpcy5ndWlkZS5zdHlsZVt0aGlzLmlubGluZURpcl09IiIuY29uY2F0KGgs''@;'; put 'put ''InB4IiksdGhpcy5ndWlkZS5zdHlsZS53aWR0aD0iIi5jb25jYXQobS1kLCJweCIpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ3VpZGUpfX0se2tleToicmVmcmVzaEd1aWRlUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ndWlkZS5zdHlsZS50b3A9dGhp''@;'; put 'put ''cy5oYW5kbGUuc3R5bGUudG9wfX0se2tleToiaGlkZUhhbmRsZUFuZEd1aWRlIix2YWx1ZTpmdW5jdGlvbigpe0pvKHRoaXMuaGFuZGxlLCJhY3RpdmUiKSxKbyh0aGlzLmd1aWRlLCJhY3RpdmUiKX19LHtrZXk6ImNoZWNrSWZSb3dIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoLG07''@;'; put 'put ''cmV0dXJuIHg0KGQsWyJUSCJdLHRoaXMuaG90LnJvb3RFbGVtZW50KSYmIlRCT0RZIj09PShudWxsPT09KGg9ZC5wYXJlbnROb2RlKXx8dm9pZCAwPT09aHx8bnVsbD09PShtPWgucGFyZW50Tm9kZSl8fHZvaWQgMD09PW0/dm9pZCAwOm0udGFnTmFtZSl9fSx7a2V5OiJnZXRDbG9zZXN0VEhQ''@;'; put 'put ''YXJlbnQiLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiJUQUJMRSIhPT1kLnRhZ05hbWU/IlRIIj09PWQudGFnTmFtZT9kOnRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KGQucGFyZW50Tm9kZSk6bnVsbH19LHtrZXk6ImdldEFjdHVhbFJvd0hlaWdodCIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9''@;'; put 'put ''dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5nZXRSb3dIZWlnaHQoZCk7cmV0dXJuIHZvaWQgMCE9PWgmJnRoaXMubmV3U2l6ZTxoP2g6dGhpcy5uZXdTaXplfX0se2tleToib25Nb3VzZU92ZXIiLHZhbHVlOmZ1bmN0aW9uKGQpe2lmKCFBWShkLnRhcmdldCkmJnRoaXMuY2hlY2tJZlJvd0hl''@;'; put 'put ''YWRlcihkLnRhcmdldCkpe3ZhciBoPXRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KGQudGFyZ2V0KTtoJiYodGhpcy5wcmVzc2VkfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oaCkpfX19LHtrZXk6ImFmdGVyTW91c2VEb3duVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9''@;'; put 'put ''ZnVuY3Rpb24oKXtkLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAsZC5ob3Qudmlldy5yZW5kZXIoKSxkLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSghMCl9LG09ZnVuY3Rpb24oWCxhZSl7dmFyIHBlPWQuaG90LnJ1bkhvb2tzKCJiZWZvcmVSb3dSZXNpemUiLGQuZ2V0QWN0dWFsUm93SGVp''@;'; put 'put ''Z2h0KFgpLFgsITApO3ZvaWQgMCE9PXBlJiYoZC5uZXdTaXplPXBlKSxkLnNldE1hbnVhbFNpemUoWCxkLm5ld1NpemUpLGQuaG90LnJ1bkhvb2tzKCJhZnRlclJvd1Jlc2l6ZSIsZC5nZXRBY3R1YWxSb3dIZWlnaHQoWCksWCwhMCksYWUmJmgoKX07dGhpcy5kYmxjbGljaz49MiYmKHRoaXMu''@;'; put 'put ''c2VsZWN0ZWRSb3dzLmxlbmd0aD4xPyhSbih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbihPKXttKE8pfSksaCgpKTpSbih0aGlzLnNlbGVjdGVkUm93cyxmdW5jdGlvbihPKXttKE8sITApfSkpLHRoaXMuZGJsY2xpY2s9MCx0aGlzLmF1dG9yZXNpemVUaW1lb3V0PW51bGx9fSx7a2V5OiJv''@;'; put 'put ''bk1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztZbyhkLnRhcmdldCwibWFudWFsUm93UmVzaXplciIpJiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKHRoaXMuY3VycmVudFRIKSx0aGlzLnNldHVwR3VpZGVQb3NpdGlvbigpLHRoaXMucHJlc3NlZD0hMCxudWxsPT09''@;'; put 'put ''dGhpcy5hdXRvcmVzaXplVGltZW91dCYmKHRoaXMuYXV0b3Jlc2l6ZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBoLmFmdGVyTW91c2VEb3duVGltZW91dCgpfSw1MDApLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQodGhpcy5hdXRvcmVzaXplVGltZW91dCkpLHRoaXMu''@;'; put 'put ''ZGJsY2xpY2srPTEsdGhpcy5zdGFydFk9ZC5wYWdlWSx0aGlzLm5ld1NpemU9dGhpcy5zdGFydEhlaWdodCl9fSx7a2V5OiJvbk1vdXNlTW92ZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpczt0aGlzLnByZXNzZWQmJih0aGlzLmN1cnJlbnRIZWlnaHQ9dGhpcy5zdGFydEhlaWdodCso''@;'; put 'put ''ZC5wYWdlWS10aGlzLnN0YXJ0WSksUm4odGhpcy5zZWxlY3RlZFJvd3MsZnVuY3Rpb24obSl7aC5uZXdTaXplPWguc2V0TWFudWFsU2l6ZShtLGguY3VycmVudEhlaWdodCl9KSx0aGlzLnJlZnJlc2hIYW5kbGVQb3NpdGlvbigpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKSl9fSx7a2V5''@;'; put 'put ''OiJvbk1vdXNlVXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPWZ1bmN0aW9uKCl7ZC5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLGQuaG90LnZpZXcucmVuZGVyKCksZC5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoITApfSxtPWZ1bmN0aW9uKFgsYWUpe2QuaG90LnJ1bkhvb2tz''@;'; put 'put ''KCJiZWZvcmVSb3dSZXNpemUiLGQuZ2V0QWN0dWFsUm93SGVpZ2h0KFgpLFgsITEpLGFlJiZoKCksZC5zYXZlTWFudWFsUm93SGVpZ2h0cygpLGQuaG90LnJ1bkhvb2tzKCJhZnRlclJvd1Jlc2l6ZSIsZC5nZXRBY3R1YWxSb3dIZWlnaHQoWCksWCwhMSl9O3RoaXMucHJlc3NlZCYmKHRoaXMu''@;'; put 'put ''aGlkZUhhbmRsZUFuZEd1aWRlKCksdGhpcy5wcmVzc2VkPSExLHRoaXMubmV3U2l6ZSE9PXRoaXMuc3RhcnRIZWlnaHQmJih0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGg+MT8oUm4odGhpcy5zZWxlY3RlZFJvd3MsZnVuY3Rpb24oTyl7bShPKX0pLGgoKSk6Um4odGhpcy5zZWxlY3RlZFJvd3Ms''@;'; put 'put ''ZnVuY3Rpb24oTyl7bShPLCEwKX0pKSx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24odGhpcy5jdXJyZW50VEgpKX19LHtrZXk6ImJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LG09aC5yb290RWxlbWVudCxfPWgucm9vdFdpbmRvdzt0aGlzLmV2ZW50''@;'; put 'put ''TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0sIm1vdXNlb3ZlciIsZnVuY3Rpb24oTyl7cmV0dXJuIGQub25Nb3VzZU92ZXIoTyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0sIm1vdXNlZG93biIsZnVuY3Rpb24oTyl7cmV0dXJuIGQub25Nb3VzZURvd24oTyl9KSx0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKF8sIm1vdXNlbW92ZSIsZnVuY3Rpb24oTyl7cmV0dXJuIGQub25Nb3VzZU1vdmUoTyl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKF8sIm1vdXNldXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb3VzZVVwKCl9''@;'; put 'put ''KX19LHtrZXk6Im9uTW9kaWZ5Um93SGVpZ2h0Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPWQ7aWYodGhpcy5lbmFibGVkKXt2YXIgXz10aGlzLmhvdC50b1BoeXNpY2FsUm93KGgpLE89dGhpcy5yb3dIZWlnaHRzTWFwLmdldFZhbHVlQXRJbmRleChfKTt0aGlzLmhvdC5nZXRTZXR0aW5n''@;'; put 'put ''cygpW0VQXSYmTyYmKG09Tyl9cmV0dXJuIG19fSx7a2V5OiJvbk1hcEluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPUlYLmdldCh0aGlzKSxtPXRoaXMuaG90LmdldFNldHRpbmdzKClbRVBdLF89dGhpcy5sb2FkTWFudWFsUm93SGVpZ2h0cygpO3RoaXMuaG90LmJhdGNoRXhl''@;'; put 'put ''Y3V0aW9uKGZ1bmN0aW9uKCl7dHlwZW9mIF88InUiP18uZm9yRWFjaChmdW5jdGlvbihPLFgpe2Qucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5kZXgoWCxPKX0pOkFycmF5LmlzQXJyYXkobSk/KG0uZm9yRWFjaChmdW5jdGlvbihPLFgpe2Qucm93SGVpZ2h0c01hcC5zZXRWYWx1ZUF0SW5k''@;'; put 'put ''ZXgoWCxPKX0pLGguY29uZmlnPW0pOiEwPT09bSYmQXJyYXkuaXNBcnJheShoLmNvbmZpZykmJmguY29uZmlnLmZvckVhY2goZnVuY3Rpb24oTyxYKXtkLnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KFgsTyl9KX0sITApfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtk''@;'; put 'put ''NihCMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiBFUH19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDMwfX1dKSxhfShHYSk7ZnVuY3Rpb24gd0Uo''@;'; put 'put ''bCl7cmV0dXJuKHdFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9''@;'; put 'put ''PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24geFAobCxjKXtyZXR1cm4gY3x8KGM9bC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoYyl9''@;'; put 'put ''fSkpfWZ1bmN0aW9uIGVnZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYnl0''@;'; put 'put ''KGYua2V5KSxmKX19ZnVuY3Rpb24gYnl0KGwpe3ZhciBjPWZ1bmN0aW9uIF95dChsLGMpe2lmKCJvYmplY3QiIT09d0UobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lm''@;'; put 'put ''KCJvYmplY3QiIT09d0UoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXdF''@;'; put 'put ''KGMpP2M6U3RyaW5nKGMpfXZhciB3eXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSxmLGQsaCxtKXsoZnVuY3Rpb24gdnl0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwp''@;'; put 'put ''LHRoaXMucm93PWMsdGhpcy5jb2w9YSx0aGlzLnJvd3NwYW49Zix0aGlzLmNvbHNwYW49ZCx0aGlzLnJlbW92ZWQ9ITEsdGhpcy5jZWxsQ29vcmRzRmFjdG9yeT1oLHRoaXMuY2VsbFJhbmdlRmFjdG9yeT1tfXJldHVybiBmdW5jdGlvbiB5eXQobCxjLGEpe2MmJmVnZShsLnByb3RvdHlwZSxj''@;'; put 'put ''KSxhJiZlZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToibm9ybWFsaXplIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj1hLmNvdW50Um93cygpLGQ9YS5jb3VudENvbHMoKTt0aGlzLnJvdzwwP3RoaXMucm93PTA6dGhp''@;'; put 'put ''cy5yb3c+Zi0xJiYodGhpcy5yb3c9Zi0xKSx0aGlzLmNvbDwwP3RoaXMuY29sPTA6dGhpcy5jb2w+ZC0xJiYodGhpcy5jb2w9ZC0xKSx0aGlzLnJvdyt0aGlzLnJvd3NwYW4+Zi0xJiYodGhpcy5yb3dzcGFuPWYtdGhpcy5yb3cpLHRoaXMuY29sK3RoaXMuY29sc3Bhbj5kLTEmJih0aGlzLmNv''@;'; put 'put ''bHNwYW49ZC10aGlzLmNvbCl9fSx7a2V5OiJpbmNsdWRlcyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5yb3c8PWEmJnRoaXMuY29sPD1mJiZ0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMT49YSYmdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE+PWZ9fSx7a2V5OiJpbmNsdWRlc0hvcml6''@;'; put 'put ''b250YWxseSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY29sPD1hJiZ0aGlzLmNvbCt0aGlzLmNvbHNwYW4tMT49YX19LHtrZXk6ImluY2x1ZGVzVmVydGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm93PD1hJiZ0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMT49''@;'; put 'put ''YX19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPWFbMF18fGFbMV0saD1mK01hdGguYWJzKGFbMF18fGFbMV0pLTEsbT1hWzBdPyJjb2xzcGFuIjoicm93c3BhbiIsXz1hWzBdPyJjb2wiOiJyb3ciLE89TWF0aC5taW4oZixoKSxYPU1hdGgubWF4KGYsaCksYWU9dGhp''@;'; put 'put ''c1tfXSxwZT10aGlzW19dK3RoaXNbbV0tMTtpZihhZT49ZiYmKHRoaXNbX10rPWQpLGQ+MClmPD1wZSYmZj5hZSYmKHRoaXNbbV0rPWQpO2Vsc2UgaWYoZDwwKXtpZihPPD1hZSYmWD49cGUpcmV0dXJuIHRoaXMucmVtb3ZlZD0hMCwhMTtpZihhZT49TyYmYWU8PVgpe3ZhciBiZT1YLWFlKzEs''@;'; put 'put ''eGU9TWF0aC5hYnMoZCktYmU7dGhpc1tfXS09eGUrZCx0aGlzW21dLT1iZX1lbHNlIGFlPD1PJiZwZT49WD90aGlzW21dKz1kOmFlPD1PJiZwZT49TyYmcGU8WCYmKHRoaXNbbV0tPXBlLU8rMSl9cmV0dXJuITB9fSx7a2V5OiJpc0ZhcnRoZXIiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJu''@;'; put 'put ''IWF8fCgiZG93biI9PT1mP2Eucm93K2Eucm93c3Bhbi0xPHRoaXMucm93K3RoaXMucm93c3Bhbi0xOiJ1cCI9PT1mP2Eucm93PnRoaXMucm93OiJyaWdodCI9PT1mP2EuY29sK2EuY29sc3Bhbi0xPHRoaXMuY29sK3RoaXMuY29sc3Bhbi0xOiJsZWZ0Ij09PWY/YS5jb2w+dGhpcy5jb2w6bnVs''@;'; put 'put ''bCl9fSx7a2V5OiJnZXRMYXN0Um93Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMX19LHtrZXk6ImdldExhc3RDb2x1bW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sK3RoaXMuY29sc3Bhbi0xfX0se2tleToiZ2V0UmFuZ2UiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2VsbFJhbmdlRmFjdG9yeSh0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMucm93LHRoaXMuY29sKSx0aGlzLmNlbGxDb29yZHNGYWN0b3J5KHRoaXMuZ2V0TGFzdFJvdygp''@;'; put 'put ''LHRoaXMuZ2V0TGFzdENvbHVtbigpKSl9fV0sW3trZXk6Ik5FR0FUSVZFX1ZBTFVFU19XQVJOSU5HIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gT2wocW1lfHwocW1lPXhQKFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogIiwiLCBjb2w6ICIsIiwgXG4gICAgICByb3dz''@;'; put 'put ''cGFuOiAiLCIsIGNvbHNwYW46ICIsIn0gY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLCB3aGljaCBpcyBcbiAgICAgIG5vdCBzdXBwb3J0ZWQuIEl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIHdpdGgge3JvdzogIiwi''@;'; put 'put ''LCBjb2w6ICIsIixcXHgyMFxuICAgICAgcm93c3BhbjogIiwiLCBjb2xzcGFuOiAiLCJ9IGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcywgd2hpY2ggaXNcXHgyMFxuICAgICAgbm90IHN1cHBvcnRlZC4gSXQgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uIl0pKSxhLnJvdyxh''@;'; put 'put ''LmNvbCxhLnJvd3NwYW4sYS5jb2xzcGFuKX19LHtrZXk6IklTX09VVF9PRl9CT1VORFNfV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIE9sKFhtZXx8KFhtZT14UChbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwiLCAiLCJdIGlzIHBvc2l0aW9uZWQgXG4gICAgICAo''@;'; put 'put ''b3IgcG9zaXRpb25lZCBwYXJ0aWFsbHkpIG91dHNpZGUgb2YgdGhlIHRhYmxlIHJhbmdlLiBJdCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlIGZpeCB5b3VyIHNldHVwLiJdLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFsiLCIsICIsIl0gaXMgcG9zaXRpb25lZFxc''@;'; put 'put ''eDIwXG4gICAgICAob3IgcG9zaXRpb25lZCBwYXJ0aWFsbHkpIG91dHNpZGUgb2YgdGhlIHRhYmxlIHJhbmdlLiBJdCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlIGZpeCB5b3VyIHNldHVwLiJdKSksYS5yb3csYS5jb2wpfX0se2tleToiSVNfU0lOR0xFX0NFTEwiLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGEpe3JldHVybiBPbChKbWV8fChKbWU9eFAoWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwnXSBoYXMgYm90aCAicm93c3BhbiIgXG4gICAgICBhbmQgImNvbHNwYW4iIGRlY2xhcmVkIGFzICIxIiwgd2hpY2ggbWFrZXMgaXQgYSBzaW5nbGUgY2VsbC4g''@;'; put 'put ''SXQgY2Fubm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLiddLFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFsiLCIsICIsJ10gaGFzIGJvdGggInJvd3NwYW4iXFx4MjBcbiAgICAgIGFuZCAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjEiLCB3aGljaCBtYWtlcyBpdCBhIHNpbmds''@;'; put 'put ''ZSBjZWxsLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10pKSxhLnJvdyxhLmNvbCl9fSx7a2V5OiJaRVJPX1NQQU5fV0FSTklORyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIE9sKFFtZXx8KFFtZT14UChbIlRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbIiwi''@;'; put 'put ''LCAiLCddIGhhcyAicm93c3BhbiIgXG4gICAgICBvciAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjAiLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uJ10sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwnXSBo''@;'; put 'put ''YXMgInJvd3NwYW4iXFx4MjBcbiAgICAgIG9yICJjb2xzcGFuIiBkZWNsYXJlZCBhcyAiMCIsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIEl0IGNhbm5vdCBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi4nXSkpLGEucm93LGEuY29sKX19LHtrZXk6ImNvbnRhaW5zTmVnYXRpdmVWYWx1ZXMi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJvdzwwfHxhLmNvbDwwfHxhLnJvd3NwYW48MHx8YS5jb2xzcGFuPDB9fSx7a2V5OiJpc1NpbmdsZUNlbGwiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5jb2xzcGFuJiYxPT09YS5yb3dzcGFufX0se2tleToiY29udGFpbnNaZXJv''@;'; put 'put ''U3BhbiIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hLmNvbHNwYW58fDA9PT1hLnJvd3NwYW59fSx7a2V5OiJpc091dE9mQm91bmRzIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7cmV0dXJuIGEucm93PDB8fGEuY29sPDB8fGEucm93Pj1mfHxhLnJvdythLnJvd3NwYW4tMT49Znx8YS5j''@;'; put 'put ''b2w+PWR8fGEuY29sK2EuY29sc3Bhbi0xPj1kfX1dKSxsfSgpO2NvbnN0IFhoPXd5dDtmdW5jdGlvbiBSWChsLGMsYSxmKXtjP2Mucm93PT09YSYmYy5jb2w9PT1mPyhsLnNldEF0dHJpYnV0ZSgicm93c3BhbiIsYy5yb3dzcGFuLnRvU3RyaW5nKCkpLGwuc2V0QXR0cmlidXRlKCJjb2xzcGFu''@;'; put 'put ''IixjLmNvbHNwYW4udG9TdHJpbmcoKSkpOihsLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGwucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksbC5zdHlsZS5kaXNwbGF5PSJub25lIik6KGwucmVtb3ZlQXR0cmlidXRlKCJyb3dzcGFuIiksbC5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4i''@;'; put 'put ''KSxsLnN0eWxlLmRpc3BsYXk9IiIpfWZ1bmN0aW9uIENFKGwpe3JldHVybihDRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfXZhciB0Z2U7ZnVuY3Rpb24gbmdlKGwpe3JldHVybiBmdW5jdGlvbiBFeXQobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gTFgo''@;'; put 'put ''bCl9KGwpfHxmdW5jdGlvbiBreXQobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gTXl0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBs''@;'; put 'put ''KXJldHVybiBMWChsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7''@;'; put 'put ''aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gTFgobCxjKX19KGwpfHxmdW5jdGlvbiBTeXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJs''@;'; put 'put ''ZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBMWChsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0w''@;'; put 'put ''LGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIHJnZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53''@;'; put 'put ''cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsVHl0KGYua2V5KSxmKX19ZnVuY3Rpb24gVHl0KGwpe3ZhciBjPWZ1bmN0aW9uIE95dChsLGMpe2lmKCJvYmplY3QiIT09Q0UobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lk''@;'; put 'put ''IDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09Q0UoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1i''@;'; put 'put ''ZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUNFKGMpP2M6U3RyaW5nKGMpfXZhciBEeXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMpeyhmdW5jdGlvbiB4eXQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNs''@;'; put 'put ''YXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5wbHVnaW49Yyx0aGlzLm1lcmdlZENlbGxzPVtdLHRoaXMuaG90PWMuaG90fXJldHVybiBmdW5jdGlvbiBBeXQobCxjLGEpe2MmJnJnZShsLnByb3RvdHlwZSxjKSxhJiZyZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBoPSExO3JldHVybiBSbih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKG0pe3JldHVybiEobS5yb3c8PWEmJm0ucm93K20ucm93c3Bhbi0xPj1hJiZtLmNvbDw9ZiYmbS5jb2wr''@;'; put 'put ''bS5jb2xzcGFuLTE+PWYmJihoPW0sMSkpfSksaH19LHtrZXk6ImdldEJ5UmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBkPSExO3JldHVybiBSbih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKGgpe3JldHVybiEoaC5yb3c8PWEuZnJvbS5yb3cmJmgucm93K2gucm93c3Bhbi0xPj1hLnRv''@;'; put 'put ''LnJvdyYmaC5jb2w8PWEuZnJvbS5jb2wmJmguY29sK2guY29sc3Bhbi0xPj1hLnRvLmNvbCl8fChkPWgpfSksZH19LHtrZXk6ImdldFdpdGhpblJhbmdlIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFy''@;'; put 'put ''Z3VtZW50c1sxXSxoPXRoaXMubWVyZ2VkQ2VsbHMsbT1bXSxfPWE7aWYoIV8uaW5jbHVkZXNSYW5nZSl7dmFyIE89dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoXy5mcm9tLnJvdyxfLmZyb20uY29sKSxYPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKF8udG8ucm93LF8udG8uY29sKTtf''@;'; put 'put ''PXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UoTyxPLFgpfXJldHVybiBSbihoLGZ1bmN0aW9uKGFlKXt2YXIgcGU9Zi5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYWUucm93LGFlLmNvbCksYmU9Zi5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYWUucm93K2FlLnJvd3NwYW4tMSxhZS5jb2wrYWUuY29s''@;'; put 'put ''c3Bhbi0xKSx4ZT1mLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHBlLHBlLGJlKTtkP18ub3ZlcmxhcHMoeGUpJiZtLnB1c2goYWUpOl8uaW5jbHVkZXNSYW5nZSh4ZSkmJm0ucHVzaChhZSl9KSwhIW0ubGVuZ3RoJiZtfX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLm1l''@;'; put 'put ''cmdlZENlbGxzLGQ9YS5yb3csaD1hLmNvbCxPPW5ldyBYaChkLGgsYS5yb3dzcGFuLGEuY29sc3Bhbix0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcyx0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKSxYPXRoaXMuZ2V0KGQsaCksYWU9dGhpcy5pc092ZXJsYXBwaW5nKE8pO3JldHVybiBYfHxh''@;'; put 'put ''ZT8oV2wobC5JU19PVkVSTEFQUElOR19XQVJOSU5HKE8pKSwhMSk6KHRoaXMuaG90JiZPLm5vcm1hbGl6ZSh0aGlzLmhvdCksZi5wdXNoKE8pLE8pfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMubWVyZ2VkQ2VsbHMsaD10aGlzLmdldChhLGYpLG09aD90''@;'; put 'put ''aGlzLm1lcmdlZENlbGxzLmluZGV4T2YoaCk6LTE7cmV0dXJuISghaHx8LTE9PT1tKSYmKGQuc3BsaWNlKG0sMSksaCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGQ9W10saD1bXTtSbih0aGlzLm1lcmdlZENlbGxzLGZ1bmN0aW9uKG0pe3ZhciBfPWEuaG90''@;'; put 'put ''LmdldENlbGwobS5yb3csbS5jb2wpO18mJmQucHVzaChbXyxhLmdldChtLnJvdyxtLmNvbCksbS5yb3csbS5jb2xdKX0pLHRoaXMubWVyZ2VkQ2VsbHMubGVuZ3RoPTAsUm4oZCxmdW5jdGlvbihtLF8pe19vKDAsbS5yb3dzcGFuLTEsZnVuY3Rpb24oTyl7X28oMCxtLmNvbHNwYW4tMSxmdW5j''@;'; put 'put ''dGlvbihYKXtpZigwIT09WHx8MCE9PU8pe3ZhciBhZT1hLmhvdC5nZXRDZWxsKG0ucm93K08sbS5jb2wrWCk7YWUmJmgucHVzaChbYWUsbnVsbCxudWxsLG51bGxdKX19KX0pLGRbX11bMV09bnVsbH0pLFJuKGQsZnVuY3Rpb24obSl7UlguYXBwbHkodm9pZCAwLG5nZShtKSl9KSxSbihoLGZ1''@;'; put 'put ''bmN0aW9uKG0pe1JYLmFwcGx5KHZvaWQgMCxuZ2UobSkpfSl9fSx7a2V5OiJpc092ZXJsYXBwaW5nIix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcygwLDApLHRoaXMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsQ29vcmRzKGEucm93LGEuY29sKSx0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdythLnJvd3NwYW4tMSxhLmNvbCthLmNvbHNwYW4tMSkpLGg9ITE7cmV0dXJuIFJuKHRoaXMubWVyZ2VkQ2VsbHMsZnVuY3Rpb24obSl7cmV0dXJuIWYuaG90Ll9jcmVhdGVDZWxsUmFuZ2UoZi5o''@;'; put 'put ''b3QuX2NyZWF0ZUNlbGxDb29yZHMoMCwwKSxmLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhtLnJvdyxtLmNvbCksZi5ob3QuX2NyZWF0ZUNlbGxDb29yZHMobS5yb3crbS5yb3dzcGFuLTEsbS5jb2wrbS5jb2xzcGFuLTEpKS5vdmVybGFwcyhkKXx8KGg9ITAsITEpfSksaH19LHtrZXk6ImlzRmly''@;'; put 'put ''c3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLmdldChhLGYpO3JldHVybiBkJiZ0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZC5yb3csMSk9PT1hJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5n''@;'; put 'put ''ZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZC5jb2wsMSk9PT1mfX0se2tleToiZ2V0Rmlyc3RSZW5kZXJhYmxlQ29vcmRzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMuZ2V0KGEsZik7aWYoIWR8fHRoaXMuaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsKGEsZikpcmV0dXJuIHRo''@;'; put 'put ''aXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGEsZik7dmFyIGg9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQucm93LDEpLG09dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQuY29sLDEpO3JldHVybiB0''@;'; put 'put ''aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLG0pfX0se2tleToic2hpZnRDb2xsZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXMsbT1bMCwwXTtzd2l0Y2goYSl7Y2FzZSJyaWdodCI6bVswXSs9ZDticmVhaztjYXNlImxlZnQiOm1bMF0tPWQ7YnJlYWs7Y2FzZSJk''@;'; put 'put ''b3duIjptWzFdKz1kO2JyZWFrO2Nhc2UidXAiOm1bMV0tPWR9Um4odGhpcy5tZXJnZWRDZWxscyxmdW5jdGlvbihfKXtfLnNoaWZ0KG0sZil9KSxyUih0aGlzLm1lcmdlZENlbGxzLmxlbmd0aC0xLDAsZnVuY3Rpb24oXyl7dmFyIE89aC5tZXJnZWRDZWxsc1tfXTtPJiZPLnJlbW92ZWQmJmgu''@;'; put 'put ''bWVyZ2VkQ2VsbHMuc3BsaWNlKGgubWVyZ2VkQ2VsbHMuaW5kZXhPZihPKSwxKX0pfX1dLFt7a2V5OiJJU19PVkVSTEFQUElOR19XQVJOSU5HIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gT2wodGdlfHwodGdlPWZ1bmN0aW9uIEN5dChsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxP''@;'; put 'put ''YmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZShjKX19KSl9KFsiVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFsiLCIsICIsIl0sIG92ZXJsYXBzIFxuICAgICAgd2l0aCB0aGUgb3RoZXIgZGVjbGFyZWQgbWVyZ2VkIGNl''@;'; put 'put ''bGwuIFRoZSBvdmVybGFwcGluZyBtZXJnZWQgY2VsbCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlIFxuICAgICAgZml4IHlvdXIgc2V0dXAuIl0sWyJUaGUgbWVyZ2VkIGNlbGwgZGVjbGFyZWQgYXQgWyIsIiwgIiwiXSwgb3ZlcmxhcHNcXHgyMFxuICAgICAgd2l0aCB0aGUg''@;'; put 'put ''b3RoZXIgZGVjbGFyZWQgbWVyZ2VkIGNlbGwuIFRoZSBvdmVybGFwcGluZyBtZXJnZWQgY2VsbCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlXFx4MjBcbiAgICAgIGZpeCB5b3VyIHNldHVwLiJdKSksYS5yb3csYS5jb2wpfX1dKSxsfSgpO2NvbnN0IEl5dD1EeXQ7ZnVuY3Rp''@;'; put 'put ''b24gU0UobCl7cmV0dXJuKFNFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3Ry''@;'; put 'put ''dWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gaDYobCxjKXtyZXR1cm4gZnVuY3Rpb24gRnl0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBQeXQobCxjKXt2YXIgYT1udWxsPT1s''@;'; put 'put ''P251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1l''@;'; put 'put ''bHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAsZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZp''@;'; put 'put ''bmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fGZ1bmN0aW9uIEx5dChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gaWdlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09''@;'; put 'put ''YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBpZ2Uo''@;'; put 'put ''bCxjKX19KGwsYyl8fGZ1bmN0aW9uIFJ5dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJv''@;'; put 'put ''bC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gaWdlKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gb2dlKGwsYyl7Zm9yKHZhciBhPTA7''@;'; put 'put ''YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxWeXQoZi5rZXkpLGYpfX1mdW5jdGlvbiBWeXQobCl7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gQnl0KGwsYyl7aWYoIm9iamVjdCIhPT1TRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1TRShmKSlyZXR1cm4gZjt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09U0UoYyk/YzpTdHJpbmcoYyl9dmFyIGp5dD1mdW5jdGlvbigp''@;'; put 'put ''e2Z1bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIEh5dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLnBsdWdpbj1jLHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uPXRo''@;'; put 'put ''aXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbix0aGlzLmN1cnJlbnRGaWxsRGF0YT1udWxsfXJldHVybiBmdW5jdGlvbiBOeXQobCxjLGEpe2MmJm9nZShsLnByb3RvdHlwZSxjKSxhJiZvZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6''@;'; put 'put ''ITF9KX0obCxbe2tleToiY29ycmVjdFNlbGVjdGlvbkFyZWFTaXplIix2YWx1ZTpmdW5jdGlvbihhKXtpZihhWzBdPT09YVsyXSYmYVsxXT09PWFbM10pe3ZhciBmPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChhWzBdLGFbMV0pO2YmJihhWzJdPWFbMF0rZi5yb3dzcGFuLTEsYVsz''@;'; put 'put ''XT1hWzFdK2YuY29sc3Bhbi0xKX19fSx7a2V5OiJnZXREaXJlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIGZbMF09PT1hWzBdJiZmWzFdPT09YVsxXSYmZlszXT09PWFbM10/ImRvd24iOmZbMl09PT1hWzJdJiZmWzFdPT09YVsxXSYmZlszXT09PWFbM10/InVwIjpmWzFdPT09''@;'; put 'put ''YVsxXSYmZlsyXT09PWFbMl0/InJpZ2h0IjoibGVmdCJ9fSx7a2V5OiJzbmFwRHJhZ0FyZWEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgpe3ZhciBtPWYuc2xpY2UoMCksXz10aGlzLmdldEF1dG9maWxsU2l6ZShhLGYsZCksTz1oNihhLDQpLFg9T1swXSxhZT1PWzFdLHBlPU9bMl0sYmU9T1sz''@;'; put 'put ''XSxWZT1bInVwIiwiZG93biJdLmluZGV4T2YoZCk+LTE/cGUtWCsxOmJlLWFlKzEsbHQ9Xy1NYXRoLmZsb29yKF8vVmUpKlZlLGR0PXRoaXMuZ2V0RmFydGhlc3RDb2xsZWN0aW9uKGEsZixkLGgpO2lmKGR0KWlmKCJkb3duIj09PWQpe3ZhciBndD1kdC5yb3crZHQucm93c3Bhbi1YLWx0O21b''@;'; put 'put ''Ml0rZ3Q+PXRoaXMucGx1Z2luLmhvdC5jb3VudFJvd3MoKT9tWzJdLT1sdDptWzJdKz1sdD9ndDowfWVsc2UgaWYoInJpZ2h0Ij09PWQpe3ZhciBybj1kdC5jb2wrZHQuY29sc3Bhbi1hZS1sdDttWzNdK3JuPj10aGlzLnBsdWdpbi5ob3QuY291bnRDb2xzKCk/bVszXS09bHQ6bVszXSs9bHQ/''@;'; put 'put ''cm46MH1lbHNlIGlmKCJ1cCI9PT1kKXt2YXIgeW49cGUtbHQtZHQucm93KzE7bVswXSt5bjwwP21bMF0rPWx0Om1bMF0tPWx0P3luOjB9ZWxzZSBpZigibGVmdCI9PT1kKXt2YXIgT3I9YmUtbHQtZHQuY29sKzE7bVsxXStPcjwwP21bMV0rPWx0Om1bMV0tPWx0P09yOjB9cmV0dXJuIHRoaXMu''@;'; put 'put ''dXBkYXRlQ3VycmVudEZpbGxDYWNoZSh7YmFzZUFyZWE6YSxkcmFnRGlyZWN0aW9uOmQsZm91bmRNZXJnZWRDZWxsczpoLGZpbGxTaXplOl8sZHJhZ0FyZWE6bSxjeWNsZUxlbmd0aDpWZX0pLG19fSx7a2V5OiJ1cGRhdGVDdXJyZW50RmlsbENhY2hlIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlz''@;'; put 'put ''LmN1cnJlbnRGaWxsRGF0YXx8KHRoaXMuY3VycmVudEZpbGxEYXRhPXt9KSxydSh0aGlzLmN1cnJlbnRGaWxsRGF0YSxhKX19LHtrZXk6ImdldEF1dG9maWxsU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPWg2KGEsNCksbT1oWzBdLF89aFsxXSxPPWhbMl0sWD1oWzNdLGFlPWg2''@;'; put 'put ''KGYsNCkscGU9YWVbMF0sYmU9YWVbMV0seGU9YWVbMl0sVmU9YWVbM107c3dpdGNoKGQpe2Nhc2UidXAiOnJldHVybiBtLXBlO2Nhc2UiZG93biI6cmV0dXJuIHhlLU87Y2FzZSJsZWZ0IjpyZXR1cm4gXy1iZTtjYXNlInJpZ2h0IjpyZXR1cm4gVmUtWDtkZWZhdWx0OnJldHVybiBudWxsfX19''@;'; put 'put ''LHtrZXk6ImdldERyYWdBcmVhIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9aDYoYSw0KSxtPWhbMF0sXz1oWzFdLE89aFsyXSxYPWhbM10sYWU9aDYoZiw0KSxwZT1hZVswXSxiZT1hZVsxXSx4ZT1hZVsyXSxWZT1hZVszXTtzd2l0Y2goZCl7Y2FzZSJ1cCI6cmV0dXJuW3BlLGJlLG0t''@;'; put 'put ''MSxYXTtjYXNlImRvd24iOnJldHVybltPKzEsXyx4ZSxYXTtjYXNlImxlZnQiOnJldHVybltwZSxiZSxPLF8tMV07Y2FzZSJyaWdodCI6cmV0dXJuW20sWCsxLHhlLFZlXTtkZWZhdWx0OnJldHVybiBudWxsfX19LHtrZXk6ImdldEZhcnRoZXN0Q29sbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSxmLGQsaCl7dmFyIG09aDYoYSw0KSxfPW1bMF0sTz1tWzFdLFg9bVsyXSxhZT1tWzNdLHBlPVsidXAiLCJkb3duIl0uaW5kZXhPZihkKT4tMSxiZT1wZT9YOmFlLHhlPXBlP186TyxWZT10aGlzLmdldEF1dG9maWxsU2l6ZShhLGYsZCksWmU9cGU/WC1fKzE6YWUtTysxLGR0PVZlLU1hdGgu''@;'; put 'put ''Zmxvb3IoVmUvWmUpKlplLGd0PW51bGwsanQ9bnVsbCxybj1udWxsO3N3aXRjaChkKXtjYXNlInVwIjpndD0iaW5jbHVkZXNWZXJ0aWNhbGx5Iixybj1iZS1kdCsxO2JyZWFrO2Nhc2UibGVmdCI6Z3Q9ImluY2x1ZGVzSG9yaXpvbnRhbGx5Iixybj1iZS1kdCsxO2JyZWFrO2Nhc2UiZG93biI6''@;'; put 'put ''Z3Q9ImluY2x1ZGVzVmVydGljYWxseSIscm49eGUrZHQtMTticmVhaztjYXNlInJpZ2h0IjpndD0iaW5jbHVkZXNIb3Jpem9udGFsbHkiLHJuPXhlK2R0LTF9cmV0dXJuIFJuKGgsZnVuY3Rpb24oWHQpe1h0W2d0XShybikmJlh0LmlzRmFydGhlcihqdCxkKSYmKGp0PVh0KX0pLGp0fX0se2tl''@;'; put 'put ''eToicmVjcmVhdGVBZnRlckRhdGFQb3B1bGF0aW9uIix2YWx1ZTpmdW5jdGlvbihhKXtpZih0aGlzLmN1cnJlbnRGaWxsRGF0YSl7dmFyIGY9dGhpcy5nZXRSYW5nZUZyb21DaGFuZ2VzKGEpLGQ9dGhpcy5jdXJyZW50RmlsbERhdGEuZm91bmRNZXJnZWRDZWxscyxoPXRoaXMuY3VycmVudEZp''@;'; put 'put ''bGxEYXRhLmRyYWdEaXJlY3Rpb24sbT1mdW5jdGlvbihiZSx4ZSl7c3dpdGNoKGgpe2Nhc2UidXAiOnJldHVybiBiZS5yb3cteGU+PWYuZnJvbS5yb3c7Y2FzZSJkb3duIjpyZXR1cm4gYmUucm93K2JlLnJvd3NwYW4tMSt4ZTw9Zi50by5yb3c7Y2FzZSJsZWZ0IjpyZXR1cm4gYmUuY29sLXhl''@;'; put 'put ''Pj1mLmZyb20uY29sdW1uO2Nhc2UicmlnaHQiOnJldHVybiBiZS5jb2wrYmUuY29sc3Bhbi0xK3hlPD1mLnRvLmNvbHVtbjtkZWZhdWx0OnJldHVybiBudWxsfX0sXz0wLE89bnVsbCxYPTE7ZG97Zm9yKHZhciBhZT0wO2FlPGQubGVuZ3RoO2FlKz0xKXtpZihtKE89ZFthZV0sXz1YKnRoaXMu''@;'; put 'put ''Y3VycmVudEZpbGxEYXRhLmN5Y2xlTGVuZ3RoKSlzd2l0Y2goaCl7Y2FzZSJ1cCI6dGhpcy5wbHVnaW4ubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZCh7cm93Ok8ucm93LV8scm93c3BhbjpPLnJvd3NwYW4sY29sOk8uY29sLGNvbHNwYW46Ty5jb2xzcGFufSk7YnJlYWs7Y2FzZSJkb3duIjp0''@;'; put 'put ''aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uYWRkKHtyb3c6Ty5yb3crXyxyb3dzcGFuOk8ucm93c3Bhbixjb2w6Ty5jb2wsY29sc3BhbjpPLmNvbHNwYW59KTticmVhaztjYXNlImxlZnQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpPLnJvdyxy''@;'; put 'put ''b3dzcGFuOk8ucm93c3Bhbixjb2w6Ty5jb2wtXyxjb2xzcGFuOk8uY29sc3Bhbn0pO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpPLnJvdyxyb3dzcGFuOk8ucm93c3Bhbixjb2w6Ty5jb2wrXyxjb2xzcGFuOk8uY29sc3Bhbn0p''@;'; put 'put ''fWFlPT09ZC5sZW5ndGgtMSYmKFgrPTEpfX13aGlsZShtKE8sXykpO3RoaXMuY3VycmVudEZpbGxEYXRhPW51bGwsdGhpcy5wbHVnaW4uaG90LnJlbmRlcigpLGQubGVuZ3RoPjAmJnRoaXMucGx1Z2luLmlmQ2hyb21lRm9yY2VSZXBhaW50KCl9fX0se2tleToiZ2V0UmFuZ2VGcm9tQ2hhbmdl''@;'; put 'put ''cyIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxkPXttaW46bnVsbCxtYXg6bnVsbH0saD17bWluOm51bGwsbWF4Om51bGx9O3JldHVybiBSbihhLGZ1bmN0aW9uKG0pe3ZhciBfPW1bMF0sTz1mLnBsdWdpbi5ob3QucHJvcFRvQ29sKG1bMV0pOyhudWxsPT09ZC5taW58fF88ZC5taW4p''@;'; put 'put ''JiYoZC5taW49XyksKG51bGw9PT1kLm1heHx8Xz5kLm1heCkmJihkLm1heD1fKSwobnVsbD09PWgubWlufHxPPGgubWluKSYmKGgubWluPU8pLChudWxsPT09aC5tYXh8fE8+aC5tYXgpJiYoaC5tYXg9Tyl9KSx7ZnJvbTp7cm93OmQubWluLGNvbHVtbjpoLm1pbn0sdG86e3JvdzpkLm1heCxj''@;'; put 'put ''b2x1bW46aC5tYXh9fX19LHtrZXk6ImRyYWdBcmVhT3ZlcmxhcHNDb2xsZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBtPWg2KHRoaXMuZ2V0RHJhZ0FyZWEoYSxmLGQpLDQpLFg9bVsyXSxhZT1tWzNdLHBlPXRoaXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhtWzBd''@;'; put 'put ''LG1bMV0pLGJlPXRoaXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhYLGFlKSx4ZT10aGlzLnBsdWdpbi5ob3QuX2NyZWF0ZUNlbGxSYW5nZShwZSxwZSxiZSk7cmV0dXJuISF0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRoaW5SYW5nZSh4ZSwhMCl9fV0pLGx9KCk7Y29u''@;'; put 'put ''c3Qgenl0PWp5dDtmdW5jdGlvbiBNRShsKXtyZXR1cm4oTUU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBhZ2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxm''@;'; put 'put ''LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLFl5dChmLmtleSksZil9fWZ1bmN0aW9uIFl5dChsKXt2YXIgYz1mdW5jdGlvbiBXeXQobCxjKXtpZigib2JqZWN0IiE9PU1FKGwpfHxudWxsPT09bClyZXR1cm4gbDt2''@;'; put 'put ''YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PU1FKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUu''@;'; put 'put ''Iil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1NRShjKT9jOlN0cmluZyhjKX12YXIgR3l0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24gVXl0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMucGx1Z2luPWMsdGhpcy5ob3Q9Yy5ob3QsdGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZT0iZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwifXJldHVybiBm''@;'; put 'put ''dW5jdGlvbiBaeXQobCxjLGEpe2MmJmFnZShsLnByb3RvdHlwZSxjKSxhJiZhZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToic25hcERlbHRhIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIGg9Zi50byxfPWguY29s''@;'; put 'put ''K2EuY29sO2Eucm93P3RoaXMuanVtcE92ZXJNZXJnZWRDZWxsKGEsZCxoLnJvdythLnJvdyk6YS5jb2wmJnRoaXMuanVtcE92ZXJNZXJnZWRDZWxsKGEsZCxfKX19LHtrZXk6Imp1bXBPdmVyTWVyZ2VkQ2VsbCIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPWEucm93fHxhLmNvbCxtPW51''@;'; put 'put ''bGwsXz1udWxsLE89bnVsbDthLnJvdz8obT1mLmluY2x1ZGVzVmVydGljYWxseShkKSxfPWYucm93LE89Zi5nZXRMYXN0Um93KCkpOmEuY29sJiYobT1mLmluY2x1ZGVzSG9yaXpvbnRhbGx5KGQpLF89Zi5jb2wsTz1mLmdldExhc3RDb2x1bW4oKSksMCE9PWgmJihoPjA/bSYmZCE9PV8mJiho''@;'; put 'put ''Kz1PLWQrMSk6bSYmZCE9PU8mJihoLT1kLV8rMSksYS5yb3c/YS5yb3c9aDphLmNvbCYmKGEuY29sPWgpKX19LHtrZXk6ImdldFVwZGF0ZWRTZWxlY3Rpb25SYW5nZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShhLmhpZ2hsaWdodCxhLmZy''@;'; put 'put ''b20sdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYS50by5yb3crZi5yb3csYS50by5jb2wrZi5jb2wpKX19LHtrZXk6ImdldFNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCl7dmFyIG09TWF0aC5taW4oZFswXSxkWzJdKSxfPU1hdGgubWluKGRb''@;'; put 'put ''MV0sZFszXSksTz1NYXRoLm1heChkWzBdLGRbMl0pLFg9TWF0aC5tYXgoZFsxXSxkWzNdKTtpZih2b2lkIDAhPT1oJiZ0aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsKGEsZikpe3ZhciBwZT10aGlzLnBsdWdpbi5tZXJnZWRDZWxs''@;'; put 'put ''c0NvbGxlY3Rpb24uZ2V0KGEsZik7aWYocGUpe3ZhciBiZT1wZS5nZXRMYXN0Um93KCkseGU9cGUuZ2V0TGFzdENvbHVtbigpO2lmKG08PXBlLnJvdyYmXzw9cGUuY29sJiZPPj1iZSYmWD49eGUpcmV0dXJuIiIuY29uY2F0KHRoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUs''@;'; put 'put ''Ii0iKS5jb25jYXQoaCk7aWYodGhpcy5wbHVnaW4uc2VsZWN0aW9uQ2FsY3VsYXRpb25zLmlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZChwZSx0aGlzLnBsdWdpbi5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpKSlyZXR1cm4iIi5jb25jYXQodGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNz''@;'; put 'put ''TmFtZSwiLW11bHRpcGxlIil9fX19LHtrZXk6ImlzTWVyZ2VDZWxsRnVsbHlTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1bXTtpZighZnx8IWEpcmV0dXJuITE7Zm9yKHZhciBoPTA7aDxhLnJvd3NwYW47aCs9MSlmb3IodmFyIG09MDttPGEuY29sc3BhbjttKz0xKWQucHVz''@;'; put 'put ''aCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdytoLGEuY29sK20pKTtmb3IodmFyIF89MDtfPGQubGVuZ3RoO18rPTEpe2Zvcih2YXIgTz1bXSxYPTA7WDxmLmxlbmd0aDtYKz0xKU9bWF09ZltYXS5pbmNsdWRlcyhkW19dKTtpZighTy5pbmNsdWRlcyghMCkpcmV0dXJuITF9cmV0''@;'; put 'put ''dXJuITB9fSx7a2V5OiJnZXRTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWVUb1JlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sZj0wO2Y8PTc7Zis9MSlhLnB1c2goIiIuY29uY2F0KHRoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUsIi0iKS5jb25jYXQo''@;'; put 'put ''ZikpO3JldHVybiBhLnB1c2goIiIuY29uY2F0KHRoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUsIi1tdWx0aXBsZSIpKSxhfX1dKSxsfSgpO2NvbnN0ICR5dD1HeXQ7ZnVuY3Rpb24gbGIobCl7cmV0dXJuKGxiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wi''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBj''@;'; put 'put ''fSkobCl9ZnVuY3Rpb24gbGdlKGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBQWChsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0''@;'; put 'put ''b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gUFgobCxjKX19ZnVuY3Rpb24gUFgobCxjKXsobnVsbD09Y3x8''@;'; put 'put ''Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBzZ2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwh''@;'; put 'put ''MSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGFidChmLmtleSksZil9fWZ1bmN0aW9uIGFidChsKXt2YXIgYz1mdW5jdGlvbiBsYnQobCxjKXtpZigib2JqZWN0IiE9PWxiKGwpfHxudWxsPT09bClyZXR1cm4g''@;'; put 'put ''bDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWxiKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFs''@;'; put 'put ''dWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1sYihjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBzYigpe3JldHVybiBzYj10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQo''@;'; put 'put ''KTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rpb24gc2J0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1ybShsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw''@;'; put 'put ''dG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LHNiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBGWChsLGMpe3JldHVybihGWD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJp''@;'; put 'put ''bmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIHVnZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7''@;'; put 'put ''cmV0dXJuIGx9ZnVuY3Rpb24gcm0obCl7cmV0dXJuKHJtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dW8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImJlZm9yZU1lcmdlQ2VsbHMiKSx1by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJNZXJnZUNlbGxzIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVubWVyZ2VDZWxscyIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclVubWVyZ2VD''@;'; put 'put ''ZWxscyIpO3ZhciBwZ2Usa0U9Im1lcmdlQ2VsbHMiLGNnZT1uZXcgV2Vha01hcCxmZ2U9a0UscGJ0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiB1YnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0''@;'; put 'put ''IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dy''@;'; put 'put ''aXRhYmxlOiExfSksYyYmRlgobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiBjYnQobCl7dmFyIGM9ZnVuY3Rpb24gZGJ0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9cm0obCk7aWYoYyl7''@;'; put 'put ''dmFyIGg9cm0odGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGZidChsLGMpe2lmKGMmJigib2JqZWN0Ij09PWxiKGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykp''@;'; put 'put ''cmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiB1Z2UobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlv''@;'; put 'put ''biBpYnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxkPWMuY2FsbCh0aGlzLGYpLGNnZS5zZXQodWdlKGQpLHtsYXN0RGVzaXJlZENvb3JkczpudWxsfSksZC5tZXJnZWRD''@;'; put 'put ''ZWxsc0NvbGxlY3Rpb249bnVsbCxkLmF1dG9maWxsQ2FsY3VsYXRpb25zPW51bGwsZC5zZWxlY3Rpb25DYWxjdWxhdGlvbnM9bnVsbCxkfXJldHVybiBmdW5jdGlvbiBvYnQobCxjLGEpe2MmJnNnZShsLnByb3RvdHlwZSxjKSxhJiZzZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwi''@;'; put 'put ''cHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtrRV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0''@;'; put 'put ''aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbj1uZXcgSXl0KHRoaXMpLHRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnM9bmV3IHp5dCh0aGlzKSx0aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucz1uZXcgJHl0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3JldHVybiBk''@;'; put 'put ''Lm9uQWZ0ZXJJbml0LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb2RpZnlUcmFuc2Zvcm1TdGFydC5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyTW9kaWZ5VHJhbnNm''@;'; put 'put ''b3JtU3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe3JldHVybiBkLm9uTW9kaWZ5VHJhbnNmb3JtRW5kLmFwcGx5KGQsYXJn''@;'; put 'put ''dW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1vZGlmeUdldENlbGxDb29yZHMuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IixmdW5jdGlvbigpe3JldHVybiBkLm9u''@;'; put 'put ''QmVmb3JlU2V0UmFuZ2VTdGFydC5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVNldFJhbmdlU3RhcnRPbmx5IixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlU2V0UmFuZ2VTdGFydC5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVNl''@;'; put 'put ''dFJhbmdlRW5kIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlU2V0UmFuZ2VFbmQuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24uYXBwbHko''@;'; put 'put ''ZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclJlbmRlcmVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJSZW5kZXJlci5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''ZC5hZGRNZXJnZUFjdGlvbnNUb0NvbnRleHRNZW51LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDZWxsTWV0YSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyR2V0Q2VsbE1ldGEuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclZp''@;'; put 'put ''ZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGQub25BZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1vZGlmeUF1dG9maWxsUmFuZ2UuYXBwbHkoZCxhcmd1''@;'; put 'put ''bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyQ3JlYXRlQ29sLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVDb2wiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlclJlbW92ZUNvbC5h''@;'; put 'put ''cHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJDcmVhdGVSb3cuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclJlbW92ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVy''@;'; put 'put ''UmVtb3ZlUm93LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckNoYW5nZS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZURyYXdCb3JkZXJzIixmdW5jdGlvbigpe3JldHVybiBk''@;'; put 'put ''Lm9uQmVmb3JlRHJhd0FyZWFCb3JkZXJzLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcmF3U2VsZWN0aW9uIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJEcmF3U2VsZWN0aW9uLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVt''@;'; put 'put ''b3ZlQ2VsbENsYXNzTmFtZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcy5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsZnVuY3Rpb24oaCxtKXtpZigiTWVyZ2VDZWxscyI9PT1tKXJldHVy''@;'; put 'put ''biExfSksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLHNiKHJtKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpKX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhckNvbGxlY3Rpb25zKCksdGhpcy51bnJlZ2lzdGVyU2hv''@;'; put 'put ''cnRjdXRzKCksdGhpcy5ob3QucmVuZGVyKCksc2Iocm0oYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuaG90LmdldFNldHRpbmdzKClba0VdO3RoaXMuZGlzYWJsZVBs''@;'; put 'put ''dWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5nZW5lcmF0ZUZyb21TZXR0aW5ncyhkKSxzYihybShhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImlmQ2hyb21lRm9yY2VSZXBhaW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7''@;'; put 'put ''aWYodVkoKSl7dmFyIGg9W10sbT1bXTt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscy5mb3JFYWNoKGZ1bmN0aW9uKF8pe2Zvcih2YXIgTz1fLnJvdyxYPV8ucm93c3BhbixhZT1PKzE7YWU8TytYO2FlKyspbS5wdXNoKGFlKX0pLChtPWZ1bmN0aW9uIGVidChsKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gcmJ0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIFBYKGwpfShsKXx8ZnVuY3Rpb24gbmJ0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0o''@;'; put 'put ''bCl8fGxnZShsKXx8ZnVuY3Rpb24gdGJ0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl0oKSBtZXRob2QuIil9KCl9KG5ldyBTZXQobSkpKS5mb3JFYWNoKGZ1bmN0aW9uKF8pe3ZhciBPPWQuaG90LnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoXyk7ZC5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5nZXRPdmVybGF5cyghMCkubWFwKGZ1bmN0''@;'; put 'put ''aW9uKFgpe3JldHVybiJtYXN0ZXIiPT09WD8ubmFtZT9YOlguY2xvbmUud3RUYWJsZX0pLmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIGFlPVguZ2V0Um93KE8pO2FlJiYoYWUuc3R5bGUuYmFja2dyb3VuZD1CNyhhZSwiYmFja2dyb3VuZENvbG9yIikucmVwbGFjZSgiKSIsIiwgMC45OSkiKSxo''@;'; put 'put ''LnB1c2goYWUpKX0pfSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChmdW5jdGlvbigpe2guZm9yRWFjaChmdW5jdGlvbihfKXtfLnN0eWxlLmJhY2tncm91bmQ9QjcoXywiYmFja2dyb3VuZENvbG9yIikucmVwbGFjZSgiLCAwLjk5KSIsIikiKX0pfSwxKX19fSx7a2V5OiJ2YWxpZGF0ZVNl''@;'; put 'put ''dHRpbmciLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPSEwO3JldHVybiEhZCYmKFhoLmNvbnRhaW5zTmVnYXRpdmVWYWx1ZXMoZCk/KFdsKFhoLk5FR0FUSVZFX1ZBTFVFU19XQVJOSU5HKGQpKSxoPSExKTpYaC5pc091dE9mQm91bmRzKGQsdGhpcy5ob3QuY291bnRSb3dzKCksdGhpcy5ob3Qu''@;'; put 'put ''Y291bnRDb2xzKCkpPyhXbChYaC5JU19PVVRfT0ZfQk9VTkRTX1dBUk5JTkcoZCkpLGg9ITEpOlhoLmlzU2luZ2xlQ2VsbChkKT8oV2woWGguSVNfU0lOR0xFX0NFTEwoZCkpLGg9ITEpOlhoLmNvbnRhaW5zWmVyb1NwYW4oZCkmJihXbChYaC5aRVJPX1NQQU5fV0FSTklORyhkKSksaD0hMSks''@;'; put 'put ''aCl9fSx7a2V5OiJnZW5lcmF0ZUZyb21TZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcztpZihBcnJheS5pc0FycmF5KGQpKXt2YXIgbT1bXTtpZihSbihkLGZ1bmN0aW9uKF8pe2lmKGgudmFsaWRhdGVTZXR0aW5nKF8pKXt2YXIgTz1oLmhvdC5fY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyhfLnJvdyxfLmNvbCksWD1oLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhfLnJvdytfLnJvd3NwYW4tMSxfLmNvbCtfLmNvbHNwYW4tMSksYWU9aC5ob3QuX2NyZWF0ZUNlbGxSYW5nZShPLE8sWCk7aC5tZXJnZVJhbmdlKGFlLCEwLCEwKSxfbyhfLnJvdyxfLnJvdytfLnJvd3NwYW4tMSxmdW5j''@;'; put 'put ''dGlvbihwZSl7X28oXy5jb2wsXy5jb2wrXy5jb2xzcGFuLTEsZnVuY3Rpb24oYmUpe3BlPT09Xy5yb3cmJmJlPT09Xy5jb2x8fG0ucHVzaChbcGUsYmUsbnVsbF0pfSl9KX19KSwwPT09bS5sZW5ndGgpcmV0dXJuO3RoaXMuaG90LnNldERhdGFBdENlbGwobSl9fX0se2tleToiY2xlYXJDb2xs''@;'; put 'put ''ZWN0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5jbGVhcigpfX0se2tleToiY2FuTWVyZ2VSYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuISEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sx''@;'; put 'put ''XSl8fHRoaXMudmFsaWRhdGVTZXR0aW5nKGQpfX0se2tleToidG9nZ2xlTWVyZ2VPblNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKGQpe2Quc2V0RGlyZWN0aW9uKHRoaXMuaG90LmlzUnRsKCk/Ik5FLVNXIjoiTlct''@;'; put 'put ''U0UiKTt2YXIgaD1kLmZyb20sbT1kLnRvO3RoaXMudG9nZ2xlTWVyZ2UoZCksdGhpcy5ob3Quc2VsZWN0Q2VsbChoLnJvdyxoLmNvbCxtLnJvdyxtLmNvbCwhMSl9fX0se2tleToibWVyZ2VTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoZCl7ZC5zZXREaXJlY3Rpb24odGhpcy5ob3QuaXNSdGwoKT8iTkUtU1ciOiJOVy1TRSIpO3ZhciBoPWQuZnJvbSxtPWQudG87dGhpcy51bm1lcmdlUmFuZ2UoZCwhMCksdGhp''@;'; put 'put ''cy5tZXJnZVJhbmdlKGQpLHRoaXMuaG90LnNlbGVjdENlbGwoaC5yb3csaC5jb2wsbS5yb3csbS5jb2wsITEpfX19LHtrZXk6InVubWVyZ2VTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRz''@;'; put 'put ''WzBdOnRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoZCl7dmFyIGg9ZC5mcm9tLG09ZC50bzt0aGlzLnVubWVyZ2VSYW5nZShkLCEwKSx0aGlzLmhvdC5zZWxlY3RDZWxsKGgucm93LGguY29sLG0ucm93LG0uY29sLCExKX19fSx7a2V5OiJtZXJnZVJhbmdlIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihkKXt2YXIgaD10aGlzLG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxfPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sTz1kLmdldFRvcFN0YXJ0Q29ybmVyKCksWD1kLmdl''@;'; put 'put ''dEJvdHRvbUVuZENvcm5lcigpLGFlPXtyb3c6Ty5yb3csY29sOk8uY29sLHJvd3NwYW46WC5yb3ctTy5yb3crMSxjb2xzcGFuOlguY29sLU8uY29sKzF9LHBlPVtdLGJlPW51bGw7cmV0dXJuISF0aGlzLmNhbk1lcmdlUmFuZ2UoYWUsbSkmJih0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlTWVy''@;'; put 'put ''Z2VDZWxscyIsZCxtKSxfbygwLGFlLnJvd3NwYW4tMSxmdW5jdGlvbihWZSl7X28oMCxhZS5jb2xzcGFuLTEsZnVuY3Rpb24oWmUpe3ZhciBsdD1udWxsO3BlW1ZlXXx8KHBlW1ZlXT1bXSksMD09PVZlJiYwPT09WmU/bHQ9aC5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbChoLmhvdC50b1BoeXNp''@;'; put 'put ''Y2FsUm93KGFlLnJvdyksaC5ob3QudG9QaHlzaWNhbENvbHVtbihhZS5jb2wpKTpoLmhvdC5zZXRDZWxsTWV0YShhZS5yb3crVmUsYWUuY29sK1plLCJoaWRkZW4iLCEwKSxwZVtWZV1bWmVdPWx0fSl9KSx0aGlzLmhvdC5zZXRDZWxsTWV0YShhZS5yb3csYWUuY29sLCJzcGFubmVkIiwhMCks''@;'; put 'put ''IXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZChhZSl8fChfP2JlPVthZS5yb3csYWUuY29sLHBlXTp0aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheShhZS5yb3csYWUuY29sLHBlLHZvaWQgMCx2b2lkIDAsdGhpcy5wbHVnaW5OYW1lKSxtfHx0aGlzLmlmQ2hyb21lRm9yY2VSZXBhaW50''@;'; put 'put ''KCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyTWVyZ2VDZWxscyIsZCxhZSxtKSxiZSkpfX0se2tleToidW5tZXJnZVJhbmdlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxfPXRo''@;'; put 'put ''aXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKGQpO18mJih0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW5tZXJnZUNlbGxzIixkLG0pLFJuKF8sZnVuY3Rpb24oTyl7aC5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ucmVtb3ZlKE8ucm93LE8uY29sKSxfbygwLE8ucm93c3Bh''@;'; put 'put ''bi0xLGZ1bmN0aW9uKFgpe19vKDAsTy5jb2xzcGFuLTEsZnVuY3Rpb24oYWUpe2guaG90LnJlbW92ZUNlbGxNZXRhKE8ucm93K1gsTy5jb2wrYWUsImhpZGRlbiIpfSl9KSxoLmhvdC5yZW1vdmVDZWxsTWV0YShPLnJvdyxPLmNvbCwic3Bhbm5lZCIpfSksdGhpcy5ob3QucnVuSG9va3MoImFm''@;'; put 'put ''dGVyVW5tZXJnZUNlbGxzIixkLG0pLHRoaXMuaG90LnJlbmRlcigpKX19LHtrZXk6InRvZ2dsZU1lcmdlIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoZC5mcm9tLnJvdyxkLmZyb20uY29sKTtoLnJvdz09PWQuZnJvbS5yb3cmJmguY29s''@;'; put 'put ''PT09ZC5mcm9tLmNvbCYmaC5yb3craC5yb3dzcGFuLTE9PT1kLnRvLnJvdyYmaC5jb2wraC5jb2xzcGFuLTE9PT1kLnRvLmNvbD90aGlzLnVubWVyZ2VSYW5nZShkKTp0aGlzLm1lcmdlU2VsZWN0aW9uKGQpfX0se2tleToibWVyZ2UiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBPPXRo''@;'; put 'put ''aXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGQsaCksWD10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhtLF8pO3RoaXMubWVyZ2VSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKE8sTyxYKSl9fSx7a2V5OiJ1bm1lcmdlIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXt2YXIgTz10aGlz''@;'; put 'put ''LmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhkLGgpLFg9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMobSxfKTt0aGlzLnVubWVyZ2VSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKE8sTyxYKSl9fSx7a2V5OiJvbkFmdGVySW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmdlbmVyYXRl''@;'; put 'put ''RnJvbVNldHRpbmdzKHRoaXMuaG90LmdldFNldHRpbmdzKClba0VdKSx0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6InJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFk''@;'; put 'put ''ZFNob3J0Y3V0KHtrZXlzOltbIkNvbnRyb2wiLCJtIl1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7ZC50b2dnbGVNZXJnZShkLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKSxkLmhvdC5yZW5kZXIoKX0scnVuT25seUlmOmZ1bmN0aW9uKE8pe3JldHVybiFPLmFsdEtleX0sZ3JvdXA6ZmdlfSl9''@;'; put 'put ''fSx7a2V5OiJ1bnJlZ2lzdGVyU2hvcnRjdXRzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKGZnZSl9fSx7a2V5OiJvbkFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsdmFsdWU6''@;'; put 'put ''ZnVuY3Rpb24oZCl7aWYoZClmb3IodmFyIGg9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ubWVyZ2VkQ2VsbHMsbT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLF89MDtfPGgubGVuZ3RoO18rPTEpaWYobS5mcm9tLnJvdz09PWhbX10ucm93JiZtLmZyb20uY29sPT09aFtfXS5j''@;'; put 'put ''b2wmJm0udG8ucm93PT09aFtfXS5yb3craFtfXS5yb3dzcGFuLTEmJm0udG8uY29sPT09aFtfXS5jb2wraFtfXS5jb2xzcGFuLTEpcmV0dXJuITE7cmV0dXJuIGR9fSx7a2V5OiJvbk1vZGlmeVRyYW5zZm9ybVN0YXJ0Iix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgTyxoPWNnZS5nZXQodGhpcyks''@;'; put 'put ''bT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLF89e3JvdzpkLnJvdyxjb2w6ZC5jb2x9LFg9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMobS5oaWdobGlnaHQucm93LG0uaGlnaGxpZ2h0LmNvbCksYWU9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KFgucm93LFguY29s''@;'; put 'put ''KTtpZihoLmxhc3REZXNpcmVkQ29vcmRzfHwoaC5sYXN0RGVzaXJlZENvb3Jkcz10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhudWxsLG51bGwpKSxhZSl7dmFyIHBlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGFlLnJvdyxhZS5jb2wpLGJlPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29v''@;'; put 'put ''cmRzKGFlLnJvdythZS5yb3dzcGFuLTEsYWUuY29sK2FlLmNvbHNwYW4tMSk7dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShwZSxwZSxiZSkuaW5jbHVkZXMoaC5sYXN0RGVzaXJlZENvb3Jkcyl8fChoLmxhc3REZXNpcmVkQ29vcmRzPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG51bGws''@;'; put 'put ''bnVsbCkpLF8ucm93PWgubGFzdERlc2lyZWRDb29yZHMucm93P2gubGFzdERlc2lyZWRDb29yZHMucm93LVgucm93Ol8ucm93LF8uY29sPWgubGFzdERlc2lyZWRDb29yZHMuY29sP2gubGFzdERlc2lyZWRDb29yZHMuY29sLVguY29sOl8uY29sLGQucm93PjA/Xy5yb3c9YWUucm93K2FlLnJv''@;'; put 'put ''d3NwYW4tMS1YLnJvdytkLnJvdzpkLnJvdzwwJiYoXy5yb3c9WC5yb3ctYWUucm93K2Qucm93KSxkLmNvbD4wP18uY29sPWFlLmNvbCthZS5jb2xzcGFuLTEtWC5jb2wrZC5jb2w6ZC5jb2w8MCYmKF8uY29sPVguY29sLWFlLmNvbCtkLmNvbCl9Tz10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyhtLmhpZ2hsaWdodC5yb3crXy5yb3csbS5oaWdobGlnaHQuY29sK18uY29sKTt2YXIgVmU9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KE8ucm93LE8uY29sKTtpZihWZSl7dmFyIFplPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldEZpcnN0UmVuZGVyYWJsZUNvb3JkcyhW''@;'; put 'put ''ZS5yb3csVmUuY29sKTtoLmxhc3REZXNpcmVkQ29vcmRzPU8sXz17cm93OlplLnJvdy1YLnJvdyxjb2w6WmUuY29sLVguY29sfX0wIT09Xy5yb3cmJihkLnJvdz1fLnJvdyksMCE9PV8uY29sJiYoZC5jb2w9Xy5jb2wpfX0se2tleToib25Nb2RpZnlUcmFuc2Zvcm1FbmQiLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGQpe3ZhciBoPXRoaXMsbT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLF89ZTAoZCksTz10aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5nZXRVcGRhdGVkU2VsZWN0aW9uUmFuZ2UobSxkKSxYPWUwKF8pLGFlPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhp''@;'; put 'put ''blJhbmdlKE8sITApO2Rve1g9ZTAoXyksdGhpcy5zZWxlY3Rpb25DYWxjdWxhdGlvbnMuZ2V0VXBkYXRlZFNlbGVjdGlvblJhbmdlKG0sXyksUm4oYWUsZnVuY3Rpb24ocGUpe2guc2VsZWN0aW9uQ2FsY3VsYXRpb25zLnNuYXBEZWx0YShfLG0scGUpfSl9d2hpbGUoXy5yb3chPT1YLnJvd3x8''@;'; put 'put ''Xy5jb2whPT1YLmNvbCk7ZC5yb3c9Xy5yb3csZC5jb2w9Xy5jb2x9fSx7a2V5OiJvbk1vZGlmeUdldENlbGxDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7aWYoIShkPDB8fGg8MCkpe3ZhciBtPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChkLGgpO2lmKG0pe3ZhciBfPW0ucm93''@;'; put 'put ''LE89bS5jb2w7cmV0dXJuW18sTyxfK20ucm93c3Bhbi0xLE8rbS5jb2xzcGFuLTFdfX19fSx7a2V5OiJhZGRNZXJnZUFjdGlvbnNUb0NvbnRleHRNZW51Iix2YWx1ZTpmdW5jdGlvbihkKXtkLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIEt5dChsKXtyZXR1cm57a2V5''@;'; put 'put ''OiJtZXJnZUNlbGxzIixuYW1lOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRTZWxlY3RlZExhc3QoKTtpZihhKXt2YXIgZj1sLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoYVswXSxhWzFdKTtpZihmLnJvdz09PWFbMF0mJmYuY29sPT09YVsxXSYmZi5yb3crZi5yb3dzcGFuLTE9PT1hWzJd''@;'; put 'put ''JiZmLmNvbCtmLmNvbHNwYW4tMT09PWFbM10pcmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShBRyl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh4Ryl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7bC50b2dnbGVNZXJnZU9uU2VsZWN0aW9uKCl9LGRpc2FibGVkOmZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGE9dGhpcy5nZXRTZWxlY3RlZExhc3QoKTtyZXR1cm4hYXx8WGguaXNTaW5nbGVDZWxsKHtyb3c6YVswXSxjb2w6YVsxXSxyb3dzcGFuOmFbMl0tYVswXSsxLGNvbHNwYW46YVszXS1hWzFdKzF9KXx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl9LGhpZGRlbjoh''@;'; put 'put ''MX19KHRoaXMpKX19LHtrZXk6Im9uQWZ0ZXJSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChoLG0pLE89cGEoXyk/ZTAoXyk6dm9pZCAwO2lmKHBhKE8pKXt2YXIgWD10aGlzLmhvdCxhZT1YLnJvd0luZGV4TWFwcGVy''@;'; put 'put ''LHBlPVguY29sdW1uSW5kZXhNYXBwZXIsZHQ9ZnVuY3Rpb24gcXl0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFF5dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gSnl0KGwsYyl7dmFyIGE9bnVsbD09bD9udWxsOnR5cGVvZiBTeW1ib2w8InUiJiZsW1N5bWJv''@;'; put 'put ''bC5pdGVyYXRvcl18fGxbIkBAaXRlcmF0b3IiXTtpZihudWxsIT1hKXt2YXIgZixkLGgsbSxfPVtdLE89ITAsWD0hMTt0cnl7aWYoaD0oYT1hLmNhbGwobCkpLm5leHQsMD09PWMpe2lmKE9iamVjdChhKSE9PWEpcmV0dXJuO089ITF9ZWxzZSBmb3IoOyEoTz0oZj1oLmNhbGwoYSkpLmRvbmUp''@;'; put 'put ''JiYoXy5wdXNoKGYudmFsdWUpLF8ubGVuZ3RoIT09Yyk7Tz0hMCk7fWNhdGNoKGFlKXtYPSEwLGQ9YWV9ZmluYWxseXt0cnl7aWYoIU8mJm51bGwhPWEucmV0dXJuJiYobT1hLnJldHVybigpLE9iamVjdChtKSE9PW0pKXJldHVybn1maW5hbGx5e2lmKFgpdGhyb3cgZH19cmV0dXJuIF99fShs''@;'; put 'put ''LGMpfHxsZ2UobCxjKXx8ZnVuY3Rpb24gWHl0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0odGhpcy50cmFuc2xhdGVNZXJnZWRDZWxsVG9SZW5kZXJhYmxlKE8ucm93LE8ucm93c3BhbixPLmNvbCxPLmNvbHNwYW4pLDIpLGp0PWR0WzFdLHluPWR0WzBdLWFlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaCkrMSxRbj1qdC1w''@;'; put 'put ''ZS5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KG0pKzE7Ty5yb3c9YWUuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KE8ucm93LDEpLE8uY29sPXBlLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChPLmNvbCwxKSxPLnJvd3NwYW49TWF0aC5taW4oTy5yb3dzcGFuLHluKSxPLmNvbHNwYW49''@;'; put 'put ''TWF0aC5taW4oTy5jb2xzcGFuLFFuKX1SWChkLE8saCxtKX19LHtrZXk6Im9uQmVmb3JlU2V0UmFuZ2VTdGFydCIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYodGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsKGQucm93LGQuY29sKSl7dmFyIGg9dGhp''@;'; put 'put ''cy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGQucm93LGQuY29sKSxtPVtoLnJvdyxoLmNvbF07ZC5yb3c9bVswXSxkLmNvbD1tWzFdfX19LHtrZXk6Im9uQmVmb3JlU2V0UmFuZ2VFbmQiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7''@;'; put 'put ''aC5oaWdobGlnaHQ9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaC5oaWdobGlnaHQucm93LGguaGlnaGxpZ2h0LmNvbCksaC50bz1kO3ZhciBtPSExO2lmKCF0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJiF0aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxl''@;'; put 'put ''Y3RlZEJ5Um93SGVhZGVyKCkpZG97bT0hMTtmb3IodmFyIF89MDtfPHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLmxlbmd0aDtfKz0xKXt2YXIgWD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxsc1tfXS5nZXRSYW5nZSgpO2guZXhwYW5kQnlSYW5n''@;'; put 'put ''ZShYKSYmKGQucm93PWgudG8ucm93LGQuY29sPWgudG8uY29sLG09ITApfX13aGlsZShtKX19LHtrZXk6Im9uQWZ0ZXJHZXRDZWxsTWV0YSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChkLGgpO18mJihfLnJvdyE9PWR8fF8uY29s''@;'; put 'put ''IT09aD9tLmNvcHlhYmxlPSExOihtLnJvd3NwYW49Xy5yb3dzcGFuLG0uY29sc3Bhbj1fLmNvbHNwYW4pKX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5ob3QuY291bnRDb2xzKCk7dGhpcy5tb2RpZnlW''@;'; put 'put ''aWV3cG9ydFJvd1N0YXJ0KGQsaCksdGhpcy5tb2RpZnlWaWV3cG9ydFJvd0VuZChkLGgpfX0se2tleToibW9kaWZ5Vmlld3BvcnRSb3dTdGFydCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsXz1tLmdldFZpc3VhbEZyb21SZW5kZXJhYmxl''@;'; put 'put ''SW5kZXgoZC5zdGFydFJvdyksTz0wO088aDtPKz0xKXt2YXIgWD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoXyxPKTtpZihwYShYKSl7dmFyIGFlPW0uZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChtLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChYLnJvdywxKSk7aWYoYWU8''@;'; put 'put ''ZC5zdGFydFJvdylyZXR1cm4gZC5zdGFydFJvdz1hZSx2b2lkIHRoaXMubW9kaWZ5Vmlld3BvcnRSb3dTdGFydChkLGgpfX19fSx7a2V5OiJtb2RpZnlWaWV3cG9ydFJvd0VuZCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsXz1tLmdldFZp''@;'; put 'put ''c3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZC5lbmRSb3cpLE89MDtPPGg7Tys9MSl7dmFyIFg9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KF8sTyk7aWYocGEoWCkpe3ZhciBwZT1tLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgo''@;'; put 'put ''WC5yb3crWC5yb3dzcGFuLTEsLTEpKTtpZihwZT5kLmVuZFJvdylyZXR1cm4gZC5lbmRSb3c9cGUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93RW5kKGQsaCl9fX19LHtrZXk6Im9uQWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFy''@;'; put 'put ''IGg9dGhpcy5ob3QuY291bnRSb3dzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtblN0YXJ0KGQsaCksdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZChkLGgpfX0se2tleToibW9kaWZ5Vmlld3BvcnRDb2x1bW5TdGFydCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy5o''@;'; put 'put ''b3QuY29sdW1uSW5kZXhNYXBwZXIsXz1tLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZC5zdGFydENvbHVtbiksTz0wO088aDtPKz0xKXt2YXIgWD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoTyxfKTtpZihwYShYKSl7dmFyIGFlPW0uZ2V0UmVuZGVyYWJsZUZyb21WaXN1''@;'; put 'put ''YWxJbmRleChtLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChYLmNvbCwxKSk7aWYoYWU8ZC5zdGFydENvbHVtbilyZXR1cm4gZC5zdGFydENvbHVtbj1hZSx2b2lkIHRoaXMubW9kaWZ5Vmlld3BvcnRDb2x1bW5TdGFydChkLGgpfX19fSx7a2V5OiJtb2RpZnlWaWV3cG9ydENvbHVtbkVuZCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oZCxoKXtmb3IodmFyIG09dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsXz1tLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZC5lbmRDb2x1bW4pLE89MDtPPGg7Tys9MSl7dmFyIFg9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KE8sXyk7aWYocGEo''@;'; put 'put ''WCkpe3ZhciBwZT1tLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgobS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoWC5jb2wrWC5jb2xzcGFuLTEsLTEpKTtpZihwZT5kLmVuZENvbHVtbilyZXR1cm4gZC5lbmRDb2x1bW49cGUsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Q29sdW1uRW5k''@;'; put 'put ''KGQsaCl9fX19LHtrZXk6InRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBwZSxiZSxPPXRoaXMuaG90LFg9Ty5yb3dJbmRleE1hcHBlcixhZT1PLmNvbHVtbkluZGV4TWFwcGVyO3JldHVybiBwZT0wPT09aD9YLmdldE5lYXJlc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleChkLDEpOlguZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQraC0xLC0xKSxiZT0wPT09Xz9hZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobSwxKTphZS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobStfLTEsLTEpLFtkPj0wP1guZ2V0UmVuZGVyYWJsZUZyb21WaXN1''@;'; put 'put ''YWxJbmRleChwZSk6ZCxtPj0wP2FlLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoYmUpOm1dfX0se2tleToib25Nb2RpZnlBdXRvZmlsbFJhbmdlIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuY29ycmVjdFNlbGVjdGlvbkFyZWFTaXplKGgpO3Zh''@;'; put 'put ''ciBtPXRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuZ2V0RGlyZWN0aW9uKGgsZCksXz1kO2lmKHRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuZHJhZ0FyZWFPdmVybGFwc0NvbGxlY3Rpb25zKGgsXyxtKSlyZXR1cm4gaDt2YXIgTz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRo''@;'; put 'put ''aW5SYW5nZSh7ZnJvbTp7cm93OmhbMF0sY29sOmhbMV19LHRvOntyb3c6aFsyXSxjb2w6aFszXX19KTtyZXR1cm4gTyYmKF89dGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5zbmFwRHJhZ0FyZWEoaCxfLG0sTykpLF99fSx7a2V5OiJvbkFmdGVyQ3JlYXRlQ29sIix2YWx1ZTpmdW5jdGlvbihk''@;'; put 'put ''LGgpe3RoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnNoaWZ0Q29sbGVjdGlvbnMoInJpZ2h0IixkLGgpfX0se2tleToib25BZnRlclJlbW92ZUNvbCIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5zaGlmdENvbGxlY3Rpb25zKCJsZWZ0IixkLGgpfX0s''@;'; put 'put ''e2tleToib25BZnRlckNyZWF0ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0peyJhdXRvIiE9PW0mJnRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnNoaWZ0Q29sbGVjdGlvbnMoImRvd24iLGQsaCl9fSx7a2V5OiJvbkFmdGVyUmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMu''@;'; put 'put ''bWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLnNoaWZ0Q29sbGVjdGlvbnMoInVwIixkLGgpfX0se2tleToib25BZnRlckNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZCxoKXsiQXV0b2ZpbGwuZmlsbCI9PT1oJiZ0aGlzLmF1dG9maWxsQ2FsY3VsYXRpb25zLnJlY3JlYXRlQWZ0ZXJEYXRhUG9wdWxhdGlv''@;'; put 'put ''bihkKX19LHtrZXk6Im9uQmVmb3JlRHJhd0FyZWFCb3JkZXJzIix2YWx1ZTpmdW5jdGlvbihkLGgpe2lmKGgmJiJhcmVhIj09PWgpe3ZhciBtPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7Um4odGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0V2l0aGluUmFuZ2UobSksZnVu''@;'; put 'put ''Y3Rpb24oTyl7bS5nZXRCb3R0b21FbmRDb3JuZXIoKS5yb3c9PT1PLmdldExhc3RSb3coKSYmbS5nZXRCb3R0b21FbmRDb3JuZXIoKS5jb2w9PT1PLmdldExhc3RDb2x1bW4oKSYmKGRbMl09Ty5yb3csZFszXT1PLmNvbCl9KX19fSx7a2V5OiJvbkFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXtpZih0aGlzLmVuYWJsZWQpe3ZhciBfPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChkLnJvdyxkLmNvbCk7aWYoXyl7dmFyIE89aD4wLFg9aDwwLGFlPW08MCxwZT1tPjAsYmU9Xy5yb3crXy5yb3dzcGFuLTE9PXRoaXMuaG90LmNvdW50Um93''@;'; put 'put ''cygpLTEseGU9MD09PV8ucm93LFZlPV8uY29sK18uY29sc3Bhbi0xPT10aGlzLmhvdC5jb3VudENvbHMoKS0xOyhPJiZiZXx8WCYmeGV8fHBlJiZWZXx8YWUmJjA9PT1fLmNvbCkmJihkLnJvdz1fLnJvdyxkLmNvbD1fLmNvbCl9fX19LHtrZXk6Im9uQWZ0ZXJEcmF3U2VsZWN0aW9uIix2YWx1''@;'; put 'put ''ZTpmdW5jdGlvbihkLGgsbSxfKXtpZihtKXJldHVybiB0aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5nZXRTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUoZCxoLG0sXyl9fSx7a2V5OiJvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5nZXRTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWVUb1JlbW92ZSgpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga0V9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxNTB9fV0p''@;'; put 'put ''LGF9KEdhKTtmdW5jdGlvbiBkZ2UobCl7cmV0dXJuIGZ1bmN0aW9uIHlidChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsfShsKXx8ZnVuY3Rpb24gdmJ0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3Ii''@;'; put 'put ''XSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIGdidChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gaGdlKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25z''@;'; put 'put ''dHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBoZ2UobCxjKX19KGwp''@;'; put 'put ''fHxmdW5jdGlvbiBtYnQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''KCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGhnZShsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIG1nZSgpe1dsKE9sKHBnZXx8KHBnZT1mdW5jdGlvbiBf''@;'; put 'put ''YnQobCxjKXtyZXR1cm4gY3x8KGM9bC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoYyl9fSkpfShbIlBsdWdpbnMgYGNvbHVtblNvcnRpbmdgIGFuZCBgbXVsdGlDb2x1bW5Tb3J0aW5nYCBzaG91bGQg''@;'; put 'put ''bm90IGJlIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuIFxuICAgIE9ubHkgYG11bHRpQ29sdW1uU29ydGluZ2Agd2lsbCB3b3JrLiJdLFsiUGx1Z2lucyBcXGBjb2x1bW5Tb3J0aW5nXFxgIGFuZCBcXGBtdWx0aUNvbHVtblNvcnRpbmdcXGAgc2hvdWxkIG5vdCBiZSBlbmFibGVkIHNpbXVsdGFu''@;'; put 'put ''ZW91c2x5LiBcbiAgICBPbmx5IFxcYG11bHRpQ29sdW1uU29ydGluZ1xcYCB3aWxsIHdvcmsuIl0pKSkpfWZ1bmN0aW9uIHdidChsLGMsYSl7dmFyIGY9W107cmV0dXJuITE9PT1hfHxsLmlzQ29sdW1uU29ydGVkKGMpJiZsLmdldE51bWJlck9mU29ydGVkQ29sdW1ucygpPjEmJmYucHVzaCgi''@;'; put 'put ''Ii5jb25jYXQoInNvcnQiLCItIikuY29uY2F0KGwuZ2V0SW5kZXhPZkNvbHVtbkluU29ydFF1ZXVlKGMpKzEpKSxmfWZ1bmN0aW9uIHViKGwpe3JldHVybih1Yj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXty''@;'; put 'put ''ZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHZnZShsLGMpe2Zvcih2YXIgYT0wO2E8''@;'; put 'put ''Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsa2J0KGYua2V5KSxmKX19ZnVuY3Rpb24ga2J0KGwpe3ZhciBjPWZ1''@;'; put 'put ''bmN0aW9uIEVidChsLGMpe2lmKCJvYmplY3QiIT09dWIobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dWIoZikpcmV0dXJuIGY7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXViKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIE4xKCl7cmV0dXJu''@;'; put 'put ''IE4xPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiB4YnQobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPWwwKGwpKTspO3Jl''@;'; put 'put ''dHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sTjEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEhYKGwsYyl7cmV0''@;'; put 'put ''dXJuKEhYPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gbDAobCl7cmV0dXJuKGwwPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90''@;'; put 'put ''eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIE5YPSJtdWx0aUNvbHVtblNvcnRpbmciLHlnZT0iY29sdW1uU29ydGluZyI7czNlKE5YLGZ1bmN0aW9uIGJidChsLGMpe3JldHVybiBmdW5jdGlvbihh''@;'; put 'put ''LGYpe3ZhciBoPWRnZShhKS5zbGljZSgxKSxfPWRnZShmKS5zbGljZSgxKTtyZXR1cm4gZnVuY3Rpb24gTyhYKXt2YXIgYWU9bFtYXSxwZT1jW1hdLGJlPWhbWF0seGU9X1tYXSxWZT1wZS5tdWx0aUNvbHVtblNvcnRpbmcsbHQ9KFZlLmNvbXBhcmVGdW5jdGlvbkZhY3Rvcnk/VmUuY29tcGFy''@;'; put 'put ''ZUZ1bmN0aW9uRmFjdG9yeTp1M2UocGUudHlwZSkpKGFlLHBlLFZlKShiZSx4ZSk7aWYoMD09PWx0KXt2YXIgZHQ9WCsxO2lmKHR5cGVvZiBjW2R0XTwidSIpcmV0dXJuIE8oZHQpfXJldHVybiBsdH0oMCl9fSk7dmFyIFBidD1mdW5jdGlvbihsKXshZnVuY3Rpb24gQWJ0KGwsYyl7aWYoImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmws''@;'; put 'put ''d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJkhYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gVGJ0KGwpe3ZhciBjPWZ1bmN0aW9uIElidCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8''@;'; put 'put ''IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0''@;'; put 'put ''aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPWwwKGwpO2lmKGMpe3ZhciBoPWwwKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbiBPYnQobCxjKXtpZihjJiYoIm9iamVjdCI9PT11YihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRl''@;'; put 'put ''ZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gRGJ0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlv''@;'; put 'put ''biBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBTYnQobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkucGx1Z2luS2V5PU5YLGR9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIE1idChsLGMsYSl7YyYmdmdlKGwucHJvdG90eXBlLGMpLGEmJnZnZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE4xKGwwKGEucHJvdG90''@;'; put 'put ''eXBlKSwiaXNFbmFibGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpeyF0aGlzLmVuYWJsZWQmJnRoaXMuaG90LmdldFNldHRpbmdzKClbdGhpcy5wbHVnaW5LZXldJiZ0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3lnZV0mJm1nZSgpLE4x''@;'; put 'put ''KGwwKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtOMShsMChhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJzb3J0Iix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihkKXtOMShsMChhLnByb3RvdHlwZSksInNvcnQiLHRoaXMpLmNhbGwodGhpcyxkKX19LHtrZXk6ImNsZWFyU29ydCIsdmFsdWU6ZnVuY3Rpb24oKXtOMShsMChhLnByb3RvdHlwZSksImNsZWFyU29ydCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImlzU29ydGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBOMShsMChhLnByb3RvdHlwZSksImlzU29ydGVkIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZ2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIE4xKGwwKGEucHJvdG90eXBlKSwiZ2V0U29ydENvbmZpZyIsdGhpcykuY2FsbCh0aGlzLGQpfX0s''@;'; put 'put ''e2tleToic2V0U29ydENvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZCl7TjEobDAoYS5wcm90b3R5cGUpLCJzZXRTb3J0Q29uZmlnIix0aGlzKS5jYWxsKHRoaXMsZCl9fSx7a2V5OiJnZXROb3JtYWxpemVkU29ydENvbmZpZ3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3JldHVybiBBcnJheS5pc0FycmF5KGQpP2Q6W2RdfX0se2tleToidXBkYXRlSGVhZGVyQ2xhc3NlcyIsdmFsdWU6ZnVuY3Rpb24oZCl7Zm9yKHZhciBoLG09YXJndW1lbnRzLmxlbmd0aCxfPW5ldyBBcnJheShtPjE/''@;'; put 'put ''bS0xOjApLE89MTtPPG07TysrKV9bTy0xXT1hcmd1bWVudHNbT107KGg9TjEobDAoYS5wcm90b3R5cGUpLCJ1cGRhdGVIZWFkZXJDbGFzc2VzIix0aGlzKSkuY2FsbC5hcHBseShoLFt0aGlzLGRdLmNvbmNhdChfKSksSm8oZCxmdW5jdGlvbiBDYnQobCl7dmFyIGM9bC5jbGFzc05hbWUuc3Bs''@;'; put 'put ''aXQoIiAiKSxhPW5ldyBSZWdFeHAoIl4iLmNvbmNhdCgic29ydCIsIi1bMC05XXsxLDJ9JCIpKTtyZXR1cm4gYy5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGEudGVzdChmKX0pfShkKSksITEhPT10aGlzLmVuYWJsZWQmJmdpKGQsd2J0LmFwcGx5KHZvaWQgMCxfKSl9fSx7a2V5OiJvblVw''@;'; put 'put ''ZGF0ZVNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihkKXt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3RoaXMucGx1Z2luS2V5XSYmdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt5Z2VdJiZtZ2UoKSxOMShsMChhLnByb3RvdHlwZSksIm9uVXBkYXRlU2V0dGluZ3MiLHRoaXMpLmNhbGwodGhpcyxkKX19''@;'; put 'put ''LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7ITEhPT1WSyhoLnJvdyxoLmNvbCxkKSYmdGhpcy53YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKGQsaC5jb2wpJiYodGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpPyh0''@;'; put 'put ''aGlzLmhvdC5kZXNlbGVjdENlbGwoKSx0aGlzLmhvdC5zZWxlY3RDb2x1bW5zKGguY29sKSx0aGlzLnNvcnQodGhpcy5nZXROZXh0U29ydENvbmZpZyhoLmNvbCwiYXBwZW5kIikpKTp0aGlzLnNvcnQodGhpcy5nZXRDb2x1bW5OZXh0Q29uZmlnKGguY29sKSkpfX1dLFt7a2V5OiJQTFVHSU5f''@;'; put 'put ''S0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTlh9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxNzB9fV0pLGF9KHkzZSk7ZnVuY3Rpb24gY2IobCl7cmV0dXJuKGNiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rp''@;'; put 'put ''b24gYmdlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxOYnQoZi5rZXkpLGYp''@;'; put 'put ''fX1mdW5jdGlvbiBOYnQobCl7dmFyIGM9ZnVuY3Rpb24gVmJ0KGwsYyl7aWYoIm9iamVjdCIhPT1jYihsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIh''@;'; put 'put ''PT1jYihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09Y2IoYyk/YzpTdHJp''@;'; put 'put ''bmcoYyl9ZnVuY3Rpb24gQVAoKXtyZXR1cm4gQVA9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIEJidChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChs''@;'; put 'put ''LGMpJiZudWxsIT09KGw9ZmIobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSxBUC5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyl9ZnVuY3Rpb24gVlgobCxjKXtyZXR1cm4oVlg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBmYihsKXtyZXR1cm4oZmI9T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgJGJ0PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBqYnQobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYm''@;'; put 'put ''bnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1''@;'; put 'put ''cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmVlgobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiB6YnQobCl7dmFyIGM9ZnVuY3Rpb24gWWJ0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8''@;'; put 'put ''fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7''@;'; put 'put ''cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9ZmIobCk7aWYoYyl7dmFyIGg9ZmIodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIFVidChs''@;'; put 'put ''LGMpe2lmKGMmJigib2JqZWN0Ij09PWNiKGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBaYnQobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIEZidChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChkPWMuY2FsbCh0aGlzLGYpKS5kcmFnZ2VkPVtdLGQuZXZlbnRNYW5hZ2VyPW51bGwsZC5sYXN0U2V0''@;'; put 'put ''Q2VsbD1udWxsLGR9cmV0dXJuIGZ1bmN0aW9uIEhidChsLGMsYSl7YyYmYmdlKGwucHJvdG90eXBlLGMpLGEmJmJnZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFBkKCl9fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkfHwodGhpcy5ldmVudE1hbmFnZXJ8fCh0aGlzLmV2ZW50TWFuYWdlcj1uZXcgZnModGhpcykpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSxBUChmYihhLnByb3RvdHlwZSksImVuYWJs''@;'; put 'put ''ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJyZWdpc3Rlckxpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9dGhpcyxtPXRoaXMuaG90LnJvb3RFbGVtZW50O2Z1bmN0aW9uIF8oTyl7aWYoMT09PWguZHJhZ2dlZC5sZW5ndGgpcmV0dXJuIGguZHJhZ2dl''@;'; put 'put ''ZC5zcGxpY2UoMCxoLmRyYWdnZWQubGVuZ3RoKSwhMDt2YXIgWD1oLmRyYWdnZWQuaW5kZXhPZihPKTtpZigtMT09PVgpcmV0dXJuITE7MD09PVg/aC5kcmFnZ2VkPWguZHJhZ2dlZC5zbGljZSgwLDEpOjE9PT1YJiYoaC5kcmFnZ2VkPWguZHJhZ2dlZC5zbGljZSgtMSkpfXRoaXMuZXZlbnRN''@;'; put 'put ''YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIobSwidG91Y2hzdGFydCIsZnVuY3Rpb24oTyl7dmFyIFg7cmV0dXJuIFlvKE8udGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhYPWguaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaC5kcmFnZ2VkLnB1c2goInRvcCIpLGgudG91''@;'; put 'put ''Y2hTdGFydFJhbmdlPXt3aWR0aDpYLmdldFdpZHRoKCksaGVpZ2h0OlguZ2V0SGVpZ2h0KCksZGlyZWN0aW9uOlguZ2V0RGlyZWN0aW9uKCl9LE8ucHJldmVudERlZmF1bHQoKSwhMSk6WW8oTy50YXJnZXQsImJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIik/KFg9aC5ob3QuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRSYW5nZUxhc3QoKSxoLmRyYWdnZWQucHVzaCgiYm90dG9tIiksaC50b3VjaFN0YXJ0UmFuZ2U9e3dpZHRoOlguZ2V0V2lkdGgoKSxoZWlnaHQ6WC5nZXRIZWlnaHQoKSxkaXJlY3Rpb246WC5nZXREaXJlY3Rpb24oKX0sTy5wcmV2ZW50RGVmYXVsdCgpLCExKTp2b2lkIDB9KSx0aGlz''@;'; put 'put ''LmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG0sInRvdWNoZW5kIixmdW5jdGlvbihPKXtyZXR1cm4gWW8oTy50YXJnZXQsInRvcFNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIik/KF8uY2FsbChoLCJ0b3AiKSxoLnRvdWNoU3RhcnRSYW5nZT12b2lkIDAsTy5wcmV2ZW50RGVmYXVsdCgp''@;'; put 'put ''LCExKTpZbyhPLnRhcmdldCwiYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiKT8oXy5jYWxsKGgsImJvdHRvbSIpLGgudG91Y2hTdGFydFJhbmdlPXZvaWQgMCxPLnByZXZlbnREZWZhdWx0KCksITEpOnZvaWQgMH0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIobSwi''@;'; put 'put ''dG91Y2htb3ZlIixmdW5jdGlvbihPKXt2YXIgYWUscGUsYmUseGUsVmUsWmU7aWYoMCE9PWguZHJhZ2dlZC5sZW5ndGgpe3ZhciBsdD1kLmhvdC5yb290RG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChPLnRvdWNoZXNbMF0uY2xpZW50WCxPLnRvdWNoZXNbMF0uY2xpZW50WSk7IWx0fHxsdD09''@;'; put 'put ''PWgubGFzdFNldENlbGx8fCgoIlREIj09PWx0Lm5vZGVOYW1lfHwiVEgiPT09bHQubm9kZU5hbWUpJiYoLTE9PT0oYWU9aC5ob3QuZ2V0Q29vcmRzKGx0KSkuY29sJiYoYWUuY29sPTApLGJlPShwZT1oLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKS5nZXRXaWR0aCgpLHhlPXBlLmdldEhl''@;'; put 'put ''aWdodCgpLFZlPXBlLmdldERpcmVjdGlvbigpLDE9PT1iZSYmMT09PXhlJiZoLmhvdC5zZWxlY3Rpb24uc2V0UmFuZ2VFbmQoYWUpLG51bGwhPT0oWmU9aC5nZXRDdXJyZW50UmFuZ2VDb29yZHMocGUsYWUsaC50b3VjaFN0YXJ0UmFuZ2UuZGlyZWN0aW9uLFZlLGguZHJhZ2dlZFswXSkpLnN0''@;'; put 'put ''YXJ0JiZoLmhvdC5zZWxlY3Rpb24uc2V0UmFuZ2VTdGFydChaZS5zdGFydCksaC5ob3Quc2VsZWN0aW9uLnNldFJhbmdlRW5kKFplLmVuZCksaC5sYXN0U2V0Q2VsbD1sdCksTy5wcmV2ZW50RGVmYXVsdCgpKX19KX19LHtrZXk6ImdldEN1cnJlbnRSYW5nZUNvb3JkcyIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oZCxoLG0sXyxPKXt2YXIgWD1kLmdldFRvcFN0YXJ0Q29ybmVyKCksYWU9ZC5nZXRCb3R0b21FbmRDb3JuZXIoKSxwZT1kLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCksYmU9ZC5nZXRUb3BFbmRDb3JuZXIoKSx4ZT17c3RhcnQ6bnVsbCxlbmQ6bnVsbH07c3dpdGNoKG0pe2Nhc2UiTkUtU1ci''@;'; put 'put ''OnN3aXRjaChfKXtjYXNlIk5FLVNXIjpjYXNlIk5XLVNFIjp4ZT0idG9wIj09PU8/e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGgucm93LGQuaGlnaGxpZ2h0LmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHBlLnJvdyxoLmNvbCl9OntzdGFydDp0aGlzLmhv''@;'; put 'put ''dC5fY3JlYXRlQ2VsbENvb3JkcyhkLmhpZ2hsaWdodC5yb3csaC5jb2wpLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdyxYLmNvbCl9O2JyZWFrO2Nhc2UiU0UtTlciOiJib3R0b20iPT09TyYmKHhlPXtzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhZS5yb3cs''@;'; put 'put ''aC5jb2wpLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdyxYLmNvbCl9KX1icmVhaztjYXNlIk5XLVNFIjpzd2l0Y2goXyl7Y2FzZSJORS1TVyI6InRvcCI9PT1PP3hlPXtzdGFydDpoLGVuZDpwZX06eGUuZW5kPWg7YnJlYWs7Y2FzZSJOVy1TRSI6InRvcCI9PT1PP3hlPXtz''@;'; put 'put ''dGFydDpoLGVuZDphZX06eGUuZW5kPWg7YnJlYWs7Y2FzZSJTRS1OVyI6InRvcCI9PT1PP3hlPXtzdGFydDpoLGVuZDpYfTp4ZS5lbmQ9aDticmVhaztjYXNlIlNXLU5FIjoidG9wIj09PU8/eGU9e3N0YXJ0OmgsZW5kOmJlfTp4ZS5lbmQ9aH1icmVhaztjYXNlIlNXLU5FIjpzd2l0Y2goXyl7''@;'; put 'put ''Y2FzZSJOVy1TRSI6eGU9ImJvdHRvbSI9PT1PP3tzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdyxYLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHBlLnJvdyxoLmNvbCl9OntzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhYLnJvdyxoLmNv''@;'; put 'put ''bCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGgucm93LGFlLmNvbCl9O2JyZWFrO2Nhc2UiU1ctTkUiOnhlPSJ0b3AiPT09Tz97c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZC5oaWdobGlnaHQucm93LGguY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29y''@;'; put 'put ''ZHMoaC5yb3csYWUuY29sKX06e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGgucm93LFguY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoWC5yb3csaC5jb2wpfTticmVhaztjYXNlIlNFLU5XIjoiYm90dG9tIj09PU8/eGU9e3N0YXJ0OnRoaXMuaG90Ll9jcmVh''@;'; put 'put ''dGVDZWxsQ29vcmRzKGgucm93LGJlLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFgucm93LGguY29sKX06InRvcCI9PT1PJiYoeGU9e3N0YXJ0OnBlLGVuZDpofSl9YnJlYWs7Y2FzZSJTRS1OVyI6c3dpdGNoKF8pe2Nhc2UiTlctU0UiOmNhc2UiTkUtU1ciOmNhc2UiU1ct''@;'; put 'put ''TkUiOiJ0b3AiPT09TyYmKHhlLmVuZD1oKTticmVhaztjYXNlIlNFLU5XIjoidG9wIj09PU8/eGUuZW5kPWg6eGU9e3N0YXJ0OmgsZW5kOlh9fX1yZXR1cm4geGV9fSx7a2V5OiJpc0RyYWdnZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZHJhZ2dlZC5sZW5ndGg+MH19XSxbe2tl''@;'; put 'put ''eToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIm11bHRpcGxlU2VsZWN0aW9uSGFuZGxlcyJ9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAxNjB9fV0pLGF9KEdhKTtmdW5jdGlvbiBCWCgpe3ZhciBsPWFyZ3VtZW50cy5sZW5ndGg+MCYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxjPWwubGFiZWwsZj1sLmNvbHNwYW4saD1sLm9yaWdDb2xzcGFuLF89bC5jb2xsYXBzaWJsZSxYPWwuY3Jvc3NIaWRkZW5Db2x1bW5zLHBlPWwuaXNDb2xsYXBzZWQseGU9bC5pc0hpZGRlbixaZT1sLmlzUm9vdCxkdD1sLmlz''@;'; put 'put ''UGxhY2Vob2xkZXI7cmV0dXJue2xhYmVsOnZvaWQgMD09PWM/IiI6Yyxjb2xzcGFuOnZvaWQgMD09PWY/MTpmLG9yaWdDb2xzcGFuOnZvaWQgMD09PWg/MTpoLGNvbGxhcHNpYmxlOnZvaWQgMCE9PV8mJl8saXNDb2xsYXBzZWQ6dm9pZCAwIT09cGUmJnBlLGNyb3NzSGlkZGVuQ29sdW1uczp2''@;'; put 'put ''b2lkIDA9PT1YP1tdOlgsaXNIaWRkZW46dm9pZCAwIT09eGUmJnhlLGlzUm9vdDp2b2lkIDAhPT1aZSYmWmUsaXNQbGFjZWhvbGRlcjp2b2lkIDAhPT1kdCYmZHR9fWZ1bmN0aW9uIHdnZShsKXtyZXR1cm4gZnVuY3Rpb24gSmJ0KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGpYKGwp''@;'; put 'put ''fShsKXx8ZnVuY3Rpb24gWGJ0KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIHFidChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbCly''@;'; put 'put ''ZXR1cm4galgobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lm''@;'; put 'put ''KCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIGpYKGwsYyl9fShsKXx8ZnVuY3Rpb24gS2J0KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUg''@;'; put 'put ''aW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24galgobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxm''@;'; put 'put ''PW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBFRShsKXtyZXR1cm4oRUU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihj''@;'; put 'put ''KXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX12YXIgZV90PVsicm93IiwiY29sIl07ZnVuY3Rpb24gQ2dlKGwsYyl7dmFyIGE9T2JqZWN0LmtleXMo''@;'; put 'put ''bCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtjJiYoZj1mLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLGQpLmVudW1lcmFibGV9KSksYS5wdXNo''@;'; put 'put ''LmFwcGx5KGEsZil9cmV0dXJuIGF9ZnVuY3Rpb24gbl90KGwsYyxhKXtyZXR1cm4oYz1NZ2UoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gU2dlKGws''@;'; put 'put ''Yyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxNZ2UoZi5rZXkpLGYpfX1mdW5jdGlv''@;'; put 'put ''biBNZ2UobCl7dmFyIGM9ZnVuY3Rpb24gbF90KGwsYyl7aWYoIm9iamVjdCIhPT1FRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1FRShmKSly''@;'; put 'put ''ZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09RUUoYyk/YzpTdHJpbmcoYyl9ZnVu''@;'; put 'put ''Y3Rpb24gelgobCxjLGEpeyhmdW5jdGlvbiBzX3QobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIFpkKGws''@;'; put 'put ''Yyl7cmV0dXJuIGZ1bmN0aW9uIHVfdChsLGMpe3JldHVybiBjLmdldD9jLmdldC5jYWxsKGwpOmMudmFsdWV9KGwsa2dlKGwsYywiZ2V0IikpfWZ1bmN0aW9uIHhFKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gY190KGwsYyxhKXtpZihjLnNldCljLnNldC5jYWxsKGwsYSk7ZWxzZXtpZighYy53''@;'; put 'put ''cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7Yy52YWx1ZT1hfX0obCxrZ2UobCxjLCJzZXQiKSxhKSxhfWZ1bmN0aW9uIGtnZShsLGMsYSl7aWYoIWMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVt''@;'; put 'put ''cHRlZCB0byAiK2ErIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBjLmdldChsKX12YXIgRWdlPVsibGFiZWwiLCJjb2xsYXBzaWJsZSJdLGozPW5ldyBXZWFrTWFwLHA2PW5ldyBXZWFrTWFwLFVYPW5ldyBXZWFrTWFwLGZfdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwo''@;'; put 'put ''KXsoZnVuY3Rpb24gb190KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHpYKHRoaXMsajMse3dyaXRhYmxlOiEwLHZhbHVlOltdfSkselgodGhpcyxwNix7d3JpdGFibGU6''@;'; put 'put ''ITAsdmFsdWU6MH0pLHpYKHRoaXMsVVgse3dyaXRhYmxlOiEwLHZhbHVlOjEvMH0pfXJldHVybiBmdW5jdGlvbiBhX3QobCxjLGEpe2MmJlNnZShsLnByb3RvdHlwZSxjKSxhJiZTZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxb''@;'; put 'put ''e2tleToic2V0Q29sdW1uc0xpbWl0Iix2YWx1ZTpmdW5jdGlvbihhKXt4RSh0aGlzLFVYLGEpfX0se2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt4RSh0aGlzLGozLGZ1bmN0aW9uIFFidChsKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9h''@;'; put 'put ''cmd1bWVudHNbMV06MS8wLGE9W107aWYoMD09PWMpcmV0dXJuIGE7Um4obCxmdW5jdGlvbihkKXt2YXIgaD1bXSxtPTA7YS5wdXNoKGgpLFJuKGQsZnVuY3Rpb24oXyl7dmFyIE89QlgoKTtpZihwYShfKSl7dmFyIGFlPV8uY29sc3BhbjtPLmxhYmVsPU1zKF8ubGFiZWwpLCJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgYWUmJmFlPjEmJihPLmNvbHNwYW49YWUsTy5vcmlnQ29sc3Bhbj1hZSl9ZWxzZSBPLmxhYmVsPU1zKF8pO3ZhciBwZT0hMTtpZigobSs9Ty5vcmlnQ29sc3Bhbik+PWMmJihPLmNvbHNwYW49Ty5vcmlnQ29sc3Bhbi0obS1jKSxPLm9yaWdDb2xzcGFuPU8uY29sc3BhbixwZT0hMCks''@;'; put 'put ''aC5wdXNoKE8pLE8uY29sc3Bhbj4xKWZvcih2YXIgYmU9MDtiZTxPLmNvbHNwYW4tMTtiZSsrKWgucHVzaCh7bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMH0pO3JldHVybiFwZX0pfSk7dmFyIGY9TWF0aC5tYXguYXBwbHkoTWF0aCx3Z2UoaGEoYSxmdW5jdGlvbihkKXtyZXR1cm4gZC5sZW5n''@;'; put 'put ''dGh9KSkpO3JldHVybiBSbihhLGZ1bmN0aW9uKGQpe2lmKGQubGVuZ3RoPGYpe3ZhciBoPWhhKG5ldyBBcnJheShmLWQubGVuZ3RoKSxmdW5jdGlvbigpe3JldHVybiBCWCgpfSk7ZC5zcGxpY2UuYXBwbHkoZCxbZC5sZW5ndGgsMF0uY29uY2F0KHdnZShoKSkpfX0pLGF9KGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxaZCh0aGlzLFVYKSkpLHhFKHRoaXMscDYsWmQodGhpcyxqMykubGVuZ3RoKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFpkKHRoaXMsajMpfX0se2tleToibWVyZ2VXaXRoIix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzO1JuKGEsZnVuY3Rpb24oZCl7dmFyIGg9ZC5yb3csbT1kLmNvbCxfPWZ1bmN0aW9uIHJfdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGYsZCxhPWZ1bmN0aW9uIGlfdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGQsaCxhPXt9''@;'; put 'put ''LGY9T2JqZWN0LmtleXMobCk7Zm9yKGg9MDtoPGYubGVuZ3RoO2grKykhKGMuaW5kZXhPZihkPWZbaF0pPj0wKSYmKGFbZF09bFtkXSk7cmV0dXJuIGF9KGwsYyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtm''@;'; put 'put ''b3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKSEoYy5pbmRleE9mKGY9aFtkXSk+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobCxmKSYmKGFbZl09bFtmXSl9cmV0dXJuIGF9KGQsZV90KSxPPWYuZ2V0SGVhZGVyU2V0dGluZ3MoaCxtKTtudWxsIT09TyYmcnUo''@;'; put 'put ''TyxfLEVnZSl9KX19LHtrZXk6Im1hcCIsdmFsdWU6ZnVuY3Rpb24oYSl7Um4oWmQodGhpcyxqMyksZnVuY3Rpb24oZil7Um4oZixmdW5jdGlvbihkKXt2YXIgaD1hKGZ1bmN0aW9uIHRfdChsKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVu''@;'; put 'put ''dHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj9DZ2UoT2JqZWN0KGEpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe25fdChsLGYsYVtmXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny''@;'; put 'put ''aXB0b3JzKGEpKTpDZ2UoT2JqZWN0KGEpKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGYpKX0pfXJldHVybiBsfSh7fSxkKSk7cGEoaCkmJnJ1KGQsaCxFZ2UpfSl9KX19LHtrZXk6ImdldEhl''@;'; put 'put ''YWRlclNldHRpbmdzIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkO2lmKGE+PVpkKHRoaXMscDYpfHxhPDApcmV0dXJuIG51bGw7dmFyIGg9WmQodGhpcyxqMylbYV07cmV0dXJuIGY+PWgubGVuZ3RoP251bGw6bnVsbCE9PShkPWhbZl0pJiZ2b2lkIDAhPT1kP2Q6bnVsbH19LHtrZXk6Imdl''@;'; put 'put ''dEhlYWRlcnNTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxoPVtdO2lmKGE+PVpkKHRoaXMscDYpfHxhPDApcmV0dXJuIGg7Zm9yKHZhciBtPVpkKHRoaXMsajMpW2FdLF89''@;'; put 'put ''MCxPPWY7TzxtLmxlbmd0aDtPKyspe3ZhciBYPW1bT107aWYoWC5pc1BsYWNlaG9sZGVyKXRocm93IG5ldyBFcnJvcigiVGhlIGZpcnN0IGNvbHVtbiBzZXR0aW5ncyBjYW5ub3Qgb3ZlcmxhcCB0aGUgb3RoZXIgaGVhZGVyIGxheWVycyIpO2lmKF8rPVguY29sc3BhbixoLnB1c2goWCksWC5j''@;'; put 'put ''b2xzcGFuPjEmJihPKz1YLmNvbHNwYW4tMSksXz09PWQpYnJlYWs7aWYoXz5kKXRocm93IG5ldyBFcnJvcigiVGhlIGxhc3QgY29sdW1uIHNldHRpbmdzIGNhbm5vdCBvdmVybGFwIHRoZSBvdGhlciBoZWFkZXIgbGF5ZXJzIil9cmV0dXJuIGh9fSx7a2V5OiJnZXRMYXllcnNDb3VudCIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtyZXR1cm4gWmQodGhpcyxwNil9fSx7a2V5OiJnZXRDb2x1bW5zQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFpkKHRoaXMscDYpPjA/WmQodGhpcyxqMylbMF0ubGVuZ3RoOjB9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt4RSh0aGlzLGozLFtd''@;'; put 'put ''KSx4RSh0aGlzLHA2LDApfX1dKSxsfSgpO2Z1bmN0aW9uIEFFKGwpe3JldHVybihBRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHhnZShsLGMpe3ZhciBhPU9iamVjdC5rZXlzKGwpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3Zh''@;'; put 'put ''ciBmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7YyYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobCxkKS5lbnVtZXJhYmxlfSkpLGEucHVzaC5hcHBseShhLGYpfXJldHVybiBhfWZ1bmN0aW9uIEFnZShsKXtm''@;'; put 'put ''b3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbY10/YXJndW1lbnRzW2NdOnt9O2MlMj94Z2UoT2JqZWN0KGEpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe1RQKGwsZixhW2ZdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Jz''@;'; put 'put ''P09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOnhnZShPYmplY3QoYSkpLmZvckVhY2goZnVuY3Rpb24oZil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZikpfSl9''@;'; put 'put ''cmV0dXJuIGx9ZnVuY3Rpb24gVGdlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCxPZ2UoZi5rZXkpLGYpfX1mdW5jdGlvbiBUUChsLGMsYSl7cmV0dXJuKGM9T2dlKGMpKWluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIE9nZShsKXt2YXIg''@;'; put 'put ''Yz1mdW5jdGlvbiBwX3QobCxjKXtpZigib2JqZWN0IiE9PUFFKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PUFFKGYpKXJldHVybiBmO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1BRShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBaWChsLGMp''@;'; put 'put ''eyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfXZhciBMZ2U9bmV3IE1hcChbWyJERi1wcmUtb3JkZXIiLGZ1bmN0aW9uIERnZShsLGMpe2Zvcih2YXIgYT1sLmNhbGwoYyx0aGlz''@;'; put 'put ''KSxmPTA7Zjx0aGlzLmNoaWxkcy5sZW5ndGg7ZisrKXtpZighMT09PWEpcmV0dXJuITE7YT1EZ2UuY2FsbCh0aGlzLmNoaWxkc1tmXSxsLGMpfXJldHVybiBhfV0sWyJERi1wb3N0LW9yZGVyIixmdW5jdGlvbiBJZ2UobCxjKXtmb3IodmFyIGE9MDthPHRoaXMuY2hpbGRzLmxlbmd0aDthKysp''@;'; put 'put ''aWYoITE9PT1JZ2UuY2FsbCh0aGlzLmNoaWxkc1thXSxsLGMpKXJldHVybiExO3JldHVybiBsLmNhbGwoYyx0aGlzKX1dLFsiQkYiLGZ1bmN0aW9uIENfdChsLGMpe3ZhciBhPVt0aGlzXTshZnVuY3Rpb24gZigpe2lmKDAhPT1hLmxlbmd0aCl7dmFyIGQ9YS5zaGlmdCgpO2EucHVzaC5hcHBs''@;'; put 'put ''eShhLGZ1bmN0aW9uIG1fdChsKXtyZXR1cm4gZnVuY3Rpb24gYl90KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIFpYKGwpfShsKXx8ZnVuY3Rpb24geV90KGwpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1sW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWxbIkBAaXRlcmF0b3Ii''@;'; put 'put ''XSlyZXR1cm4gQXJyYXkuZnJvbShsKX0obCl8fGZ1bmN0aW9uIHZfdChsLGMpe2lmKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gWlgobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0''@;'; put 'put ''cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIFpYKGwsYyl9fShsKXx8''@;'; put 'put ''ZnVuY3Rpb24gZ190KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRo''@;'; put 'put ''b2QuIil9KCl9KGQuY2hpbGRzKSksITEhPT1sLmNhbGwoYyxkKSYmZigpfX0oKX1dXSksUGdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChjKXsoZnVuY3Rpb24gZF90KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh''@;'; put 'put ''IGZ1bmN0aW9uIil9KSh0aGlzLGwpLFRQKHRoaXMsImRhdGEiLHt9KSxUUCh0aGlzLCJwYXJlbnQiLG51bGwpLFRQKHRoaXMsImNoaWxkcyIsW10pLHRoaXMuZGF0YT1jfXJldHVybiBmdW5jdGlvbiBoX3QobCxjLGEpe2MmJlRnZShsLnByb3RvdHlwZSxjKSxhJiZUZ2UobCxhKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToiYWRkQ2hpbGQiLHZhbHVlOmZ1bmN0aW9uKGEpe2EucGFyZW50PXRoaXMsdGhpcy5jaGlsZHMucHVzaChhKX19LHtrZXk6ImNsb25lVHJlZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMsZj1uZXcgbChBZ2Uoe30sYS5kYXRhKSksZD0wO2Q8YS5jaGlsZHMubGVuZ3RoO2QrKylmLmFkZENoaWxkKHRoaXMuY2xvbmVUcmVlKGEuY2hpbGRzW2RdKSk7cmV0dXJuIGZ9fSx7a2V5OiJy''@;'; put 'put ''ZXBsYWNlVHJlZVdpdGgiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuZGF0YT1BZ2Uoe30sYS5kYXRhKSx0aGlzLmNoaWxkcz1bXTtmb3IodmFyIGY9MDtmPGEuY2hpbGRzLmxlbmd0aDtmKyspdGhpcy5hZGRDaGlsZChhLmNoaWxkc1tmXSl9fSx7a2V5OiJ3YWxrRG93biIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oYSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJCRiI7aWYoIUxnZS5oYXMoZikpdGhyb3cgbmV3IEVycm9yKCdUcmF2ZXJzYWwgc3RyYXRlZ3kgIicuY29uY2F0KGYsJyIgZG9lcyBub3QgZXhpc3QnKSk7TGdlLmdldChm''@;'; put 'put ''KS5jYWxsKHRoaXMsYSx0aGlzKX19LHtrZXk6IndhbGtVcCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpczshZnVuY3Rpb24gaChtKXshMSE9PWEuY2FsbChmLG0pJiZudWxsIT09bS5wYXJlbnQmJmgobS5wYXJlbnQpfSh0aGlzKX19XSksbH0oKTtmdW5jdGlvbiBURShsKXtyZXR1cm4o''@;'; put 'put ''VEU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYm''@;'; put 'put ''YyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBGZ2UobCxjKXt2YXIgYT1PYmplY3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmls''@;'; put 'put ''dGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0pKSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiBIZ2UobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9''@;'; put 'put ''YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/RmdlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXtNX3QobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlEZXNjcmlwdG9ycyhhKSk6RmdlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiBNX3QobCxjLGEpe3JldHVybihjPUJnZShjKSlp''@;'; put 'put ''biBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBOZ2UobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3IodmFyIGE9MCxmPW5ldyBB''@;'; put 'put ''cnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiBWZ2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9''@;'; put 'put ''ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEJnZShmLmtleSksZil9fWZ1bmN0aW9uIEJnZShsKXt2YXIgYz1mdW5jdGlvbiBJX3QobCxjKXtpZigib2JqZWN0IiE9PVRFKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7''@;'; put 'put ''dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PVRFKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0o''@;'; put 'put ''bCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1URShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBZWChsLGMsYSl7KGZ1bmN0aW9uIFJfdChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdp''@;'; put 'put ''Y2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gczAobCxjKXtyZXR1cm4gZnVuY3Rpb24gTF90KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxqZ2UobCxjLCJnZXQiKSl9ZnVuY3Rpb24gamdlKGwsYyxhKXtpZighYy5oYXMobCkp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXZhciBVZ2UsWmdlLGRiPW5ldyBXZWFrTWFwLG02PW5ldyBXZWFrTWFwLGhiPW5ldyBXZWFrTWFwLEhfdD1mdW5jdGlvbigpe2Z1bmN0''@;'; put 'put ''aW9uIGwoYyl7KGZ1bmN0aW9uIE9fdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSxZWCh0aGlzLGRiLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgTWFwfSksWVgodGhpcyxt''@;'; put 'put ''Nix7d3JpdGFibGU6ITAsdmFsdWU6bmV3IE1hcH0pLFlYKHRoaXMsaGIse3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSxmdW5jdGlvbiBQX3QobCxjLGEpe3JldHVybiBmdW5jdGlvbiBGX3QobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFjLndyaXRhYmxlKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLGpnZShsLGMsInNldCIpLGEpLGF9KHRoaXMsaGIsYyl9cmV0dXJuIGZ1bmN0aW9uIERfdChsLGMsYSl7YyYmVmdlKGwucHJvdG90eXBlLGMpLGEmJlZnZShsLGEp''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJnZXRSb290cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShzMCh0aGlzLGRiKS52YWx1ZXMoKSl9fSx7a2V5OiJnZXRSb290QnlDb2x1bW4iLHZhbHVlOmZ1bmN0''@;'; put 'put ''aW9uKGEpe3ZhciBmO3JldHVybiBzMCh0aGlzLG02KS5oYXMoYSkmJihmPXMwKHRoaXMsZGIpLmdldChzMCh0aGlzLG02KS5nZXQoYSkpKSxmfX0se2tleToiZ2V0Tm9kZSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLmdldFJvb3RCeUNvbHVtbihmKTtpZihkKXt2YXIgXyxoPWYt''@;'; put 'put ''czAodGhpcyxtNikuZ2V0KGYpLG09MDtyZXR1cm4gZC53YWxrRG93bihmdW5jdGlvbihPKXt2YXIgWD1PLmRhdGEsYWU9WC5vcmlnQ29sc3BhbjtpZihhPT09WC5oZWFkZXJMZXZlbCl7aWYoaD49bSYmaDw9bSthZS0xKXJldHVybihfPU8pLmRhdGEuaXNSb290PWY9PT1fLmRhdGEuY29sdW1u''@;'; put 'put ''SW5kZXgsITE7bSs9YWV9fSksX319fSx7a2V5OiJyZWJ1aWxkVHJlZUluZGV4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZj0wO3MwKHRoaXMsbTYpLmNsZWFyKCksUm4oczAodGhpcyxkYiksZnVuY3Rpb24oZCl7Zm9yKHZhciBtPWZ1bmN0aW9uIGtfdChsLGMpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBUX3QobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gbH0obCl8fGZ1bmN0aW9uIEFfdChsLGMpe3ZhciBhPW51bGw9PWw/bnVsbDp0eXBlb2YgU3ltYm9sPCJ1IiYmbFtTeW1ib2wuaXRlcmF0b3JdfHxsWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9YSl7dmFyIGYsZCxoLG0sXz1b''@;'; put 'put ''XSxPPSEwLFg9ITE7dHJ5e2lmKGg9KGE9YS5jYWxsKGwpKS5uZXh0LDA9PT1jKXtpZihPYmplY3QoYSkhPT1hKXJldHVybjtPPSExfWVsc2UgZm9yKDshKE89KGY9aC5jYWxsKGEpKS5kb25lKSYmKF8ucHVzaChmLnZhbHVlKSxfLmxlbmd0aCE9PWMpO089ITApO31jYXRjaChhZSl7WD0hMCxk''@;'; put 'put ''PWFlfWZpbmFsbHl7dHJ5e2lmKCFPJiZudWxsIT1hLnJldHVybiYmKG09YS5yZXR1cm4oKSxPYmplY3QobSkhPT1tKSlyZXR1cm59ZmluYWxseXtpZihYKXRocm93IGR9fXJldHVybiBffX0obCxjKXx8ZnVuY3Rpb24geF90KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVy''@;'; put 'put ''biBOZ2UobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJldHVybiBBcnJheS5mcm9tKGwpO2lmKCJB''@;'; put 'put ''cmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIE5nZShsLGMpfX0obCxjKXx8ZnVuY3Rpb24gRV90KCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVy''@;'; put 'put ''YWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX0oZCwyKVsxXS5kYXRhLmNvbHNwYW4sXz1mO188ZittO18rKylzMChhLG02KS5zZXQoXyxmKTtmKz1tfSl9''@;'; put 'put ''fSx7a2V5OiJidWlsZFRyZWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpO2Zvcih2YXIgYT1zMCh0aGlzLGhiKS5nZXRDb2x1bW5zQ291bnQoKSxmPTA7ZjxhOyl7dmFyIGQ9czAodGhpcyxoYikuZ2V0SGVhZGVyU2V0dGluZ3MoMCxmKSxoPW5ldyBQZ2U7czAodGhpcyxkYikuc2V0''@;'; put 'put ''KGYsaCksdGhpcy5idWlsZExlYXZlcyhoLGYsMCxkLm9yaWdDb2xzcGFuKSxmKz1kLm9yaWdDb2xzcGFufXRoaXMucmVidWlsZFRyZWVJbmRleCgpfX0se2tleToiYnVpbGRMZWF2ZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD10aGlzLG09YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjEsXz1zMCh0aGlzLGhiKS5nZXRIZWFkZXJzU2V0dGluZ3MoZCxmLG0pO2QrPTEsUm4oXyxmdW5jdGlvbihPKXt2YXIgYWUsWD1IZ2UoSGdlKHt9LE8pLHt9LHtoZWFkZXJMZXZlbDpkLTEsY29sdW1uSW5kZXg6Zn0pOzE9PT1kPyhhLmRh''@;'; put 'put ''dGE9WCxhZT1hKTooYWU9bmV3IFBnZShYKSxhLmFkZENoaWxkKGFlKSksZDxzMChoLGhiKS5nZXRMYXllcnNDb3VudCgpJiZoLmJ1aWxkTGVhdmVzKGFlLGYsZCxPLm9yaWdDb2xzcGFuKSxmKz1PLm9yaWdDb2xzcGFufSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXtzMCh0aGlz''@;'; put 'put ''LGRiKS5jbGVhcigpLHMwKHRoaXMsbTYpLmNsZWFyKCl9fV0pLGx9KCk7ZnVuY3Rpb24gemdlKGwsYyl7bC53YWxrRG93bihmdW5jdGlvbihhKXt2YXIgZj1hLmRhdGEsZD1hLmNoaWxkcztpZighZi5pc0hpZGRlbiYmKGMoZi5jb2x1bW5JbmRleCksMD09PWQubGVuZ3RoKSlmb3IodmFyIGg9''@;'; put 'put ''MTtoPGYuY29sc3BhbjtoKyspYyhmLmNvbHVtbkluZGV4K2gpfSl9ZnVuY3Rpb24gT1AobCxjKXt2YXIgYT1sLmNoaWxkcztpZigwIT09YS5sZW5ndGgpcmV0dXJuIGFbMF0uZGF0YVtjXX1mdW5jdGlvbiBEUChsKXtyZXR1cm4gT1AobCwib3JpZ0NvbHNwYW4iKT09PWwuZGF0YS5vcmlnQ29s''@;'; put 'put ''c3Bhbn1mdW5jdGlvbiBXWChsKXt2YXIgYz1sLmRhdGEsYT1sLmNoaWxkcztpZighYy5pc0NvbGxhcHNlZHx8Yy5pc0hpZGRlbnx8Yy5vcmlnQ29sc3Bhbjw9MSlyZXR1cm57cm9sbGJhY2tNb2RpZmljYXRpb246ZnVuY3Rpb24oKXt9LGFmZmVjdGVkQ29sdW1uczpbXSxjb2xzcGFuQ29tcGVu''@;'; put 'put ''c2F0aW9uOjB9O2lmKERQKGwpKXJldHVybiBXWChhWzBdKTtjLmlzQ29sbGFwc2VkPSExO3ZhciBkPWEuc2xpY2UoMSksaD1uZXcgU2V0LG09MDtpZihkLmxlbmd0aD4wKVJuKGQsZnVuY3Rpb24ocGUpe3BlLnJlcGxhY2VUcmVlV2l0aChwZS5kYXRhLmNsb25lZFRyZWUpLHBlLmRhdGEuY2xv''@;'; put 'put ''bmVkVHJlZT1udWxsLG0rPXBlLmRhdGEuY29sc3Bhbix6Z2UocGUsZnVuY3Rpb24oeGUpe2guYWRkKHhlKX0pfSk7ZWxzZXt2YXIgTz1jLm9yaWdDb2xzcGFuLFg9Yy5jb2x1bW5JbmRleDttPU8tYy5jb2xzcGFuO2Zvcih2YXIgYWU9MTthZTxPO2FlKyspaC5hZGQoWCthZSl9cmV0dXJuIGwu''@;'; put 'put ''d2Fsa1VwKGZ1bmN0aW9uKHBlKXt2YXIgYmU9cGUuZGF0YTtiZS5jb2xzcGFuKz1tLGJlLmNvbHNwYW4+PWJlLm9yaWdDb2xzcGFuPyhiZS5jb2xzcGFuPWJlLm9yaWdDb2xzcGFuLGJlLmlzQ29sbGFwc2VkPSExKTpEUChwZSkmJihiZS5pc0NvbGxhcHNlZD1PUChwZSwiaXNDb2xsYXBzZWQi''@;'; put 'put ''KSl9KSx7cm9sbGJhY2tNb2RpZmljYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gR1gobCl9LGFmZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKGgpLGNvbHNwYW5Db21wZW5zYXRpb246bX19ZnVuY3Rpb24gR1gobCl7dmFyIGMsYT1sLmRhdGEsZj1sLmNoaWxkcztpZihhLmlzQ29sbGFwc2VkfHxh''@;'; put 'put ''LmlzSGlkZGVufHxhLm9yaWdDb2xzcGFuPD0xKXJldHVybntyb2xsYmFja01vZGlmaWNhdGlvbjpmdW5jdGlvbigpe30sYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRpb246MH07aWYoRFAobCkpcmV0dXJuIEdYKGZbMF0pO2EuaXNDb2xsYXBzZWQ9ITA7dmFyIGg9Zi5zbGlj''@;'; put 'put ''ZSgxKSxtPW5ldyBTZXQ7aWYoaC5sZW5ndGg+MClSbihoLGZ1bmN0aW9uKGJlKXt6Z2UoYmUsZnVuY3Rpb24oeGUpe20uYWRkKHhlKX0pLGJlLmRhdGEuY2xvbmVkVHJlZT1iZS5jbG9uZVRyZWUoKSxiZS53YWxrRG93bihmdW5jdGlvbih4ZSl7eGUuZGF0YS5pc0hpZGRlbj0hMH0pfSk7ZWxz''@;'; put 'put ''ZSBmb3IodmFyIF89YS5vcmlnQ29sc3BhbixPPWEuY29sdW1uSW5kZXgsWD0xO1g8XztYKyspbS5hZGQoTytYKTt2YXIgcGU9YS5jb2xzcGFuLShudWxsIT09KGM9T1AobCwiY29sc3BhbiIpKSYmdm9pZCAwIT09Yz9jOjEpO3JldHVybiBsLndhbGtVcChmdW5jdGlvbihiZSl7dmFyIHhlPWJl''@;'; put 'put ''LmRhdGE7eGUuY29sc3Bhbi09cGUseGUuY29sc3Bhbjw9MT8oeGUuY29sc3Bhbj0xLHhlLmlzQ29sbGFwc2VkPSEwKTpEUChiZSkmJih4ZS5pc0NvbGxhcHNlZD1PUChiZSwiaXNDb2xsYXBzZWQiKSl9KSx7cm9sbGJhY2tNb2RpZmljYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gV1gobCl9LGFm''@;'; put 'put ''ZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKG0pLGNvbHNwYW5Db21wZW5zYXRpb246cGV9fXZhciBZZ2U9bmV3IE1hcChbWyJjb2xsYXBzZSIsR1hdLFsiZXhwYW5kIixXWF0sWyJoaWRlLWNvbHVtbiIsZnVuY3Rpb24gVl90KGwsYyl7aWYoIU51bWJlci5pc0ludGVnZXIoYykpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJUaGUgcGFzc2VkIGdyaWRDb2x1bW5JbmRleCBhcmd1bWVudCBoYXMgaW52YWxpZCB0eXBlLiIpO2lmKGwuY2hpbGRzLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihPbChVZ2V8fChVZ2U9ZnVuY3Rpb24gTl90KGwsYyl7cmV0dXJuIGN8fChjPWwuc2xpY2UoMCkpLE9iamVjdC5m''@;'; put 'put ''cmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWyJUaGUgcGFzc2VkIG5vZGUgaXMgbm90IHRoZSBsYXN0IG5vZGUgb24gdGhlIHRyZWUuIE9ubHkgZm9yIFxudGhlIGxhc3Qgbm9kZSwgdGhlIGhpZGUgY29sdW1uIG1vZGlm''@;'; put 'put ''aWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSxbIlRoZSBwYXNzZWQgbm9kZSBpcyBub3QgdGhlIGxhc3Qgbm9kZSBvbiB0aGUgdHJlZS4gT25seSBmb3JcXHgyMFxudGhlIGxhc3Qgbm9kZSwgdGhlIGhpZGUgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUgYXBwbGllZC4iXSkpKSk7aWYoIWwu''@;'; put 'put ''ZGF0YS5jcm9zc0hpZGRlbkNvbHVtbnMuaW5jbHVkZXMoYykpe3ZhciBmPSExO2wud2Fsa1VwKGZ1bmN0aW9uKGQpe2lmKGQuZGF0YS5jb2xsYXBzaWJsZSlyZXR1cm4gZj0hMCwhMX0pLCFmJiZsLndhbGtVcChmdW5jdGlvbihkKXt2YXIgaD1kLmRhdGE7aC5jcm9zc0hpZGRlbkNvbHVtbnMu''@;'; put 'put ''cHVzaChjKSxoLmNvbHNwYW4+MT9oLmNvbHNwYW4tPTE6aC5pc0hpZGRlbj0hMH0pfX1dLFsic2hvdy1jb2x1bW4iLGZ1bmN0aW9uIGpfdChsLGMpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXRocm93IG5ldyBFcnJvcigiVGhlIHBhc3NlZCBncmlkQ29sdW1uSW5kZXggYXJndW1lbnQgaGFz''@;'; put 'put ''IGludmFsaWQgdHlwZS4iKTtpZihsLmNoaWxkcy5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoT2woWmdlfHwoWmdlPWZ1bmN0aW9uIEJfdChsLGMpe3JldHVybiBjfHwoYz1sLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwse3Jhdzp7dmFsdWU6T2Jq''@;'; put 'put ''ZWN0LmZyZWV6ZShjKX19KSl9KFsiVGhlIHBhc3NlZCBub2RlIGlzIG5vdCB0aGUgbGFzdCBub2RlIG9uIHRoZSB0cmVlLiBPbmx5IGZvciBcbnRoZSBsYXN0IG5vZGUsIHRoZSBzaG93IGNvbHVtbiBtb2RpZmljYXRpb24gY2FuIGJlIGFwcGxpZWQuIl0sWyJUaGUgcGFzc2VkIG5vZGUgaXMg''@;'; put 'put ''bm90IHRoZSBsYXN0IG5vZGUgb24gdGhlIHRyZWUuIE9ubHkgZm9yXFx4MjBcbnRoZSBsYXN0IG5vZGUsIHRoZSBzaG93IGNvbHVtbiBtb2RpZmljYXRpb24gY2FuIGJlIGFwcGxpZWQuIl0pKSkpO2lmKGwuZGF0YS5jcm9zc0hpZGRlbkNvbHVtbnMuaW5jbHVkZXMoYykpe3ZhciBmPSExO2wu''@;'; put 'put ''d2Fsa1VwKGZ1bmN0aW9uKGQpe2lmKGQuZGF0YS5jb2xsYXBzaWJsZSlyZXR1cm4gZj0hMCwhMX0pLCFmJiZsLndhbGtVcChmdW5jdGlvbihkKXt2YXIgaD1kLmRhdGE7aC5jcm9zc0hpZGRlbkNvbHVtbnMuc3BsaWNlKGguY3Jvc3NIaWRkZW5Db2x1bW5zLmluZGV4T2YoYyksMSksIWguaXNI''@;'; put 'put ''aWRkZW4mJmguY29sc3BhbjxoLm9yaWdDb2xzcGFuJiYoaC5jb2xzcGFuKz0xKSxoLmlzSGlkZGVuPSExfSl9fV1dKSxVX3Q9WyJjcm9zc0hpZGRlbkNvbHVtbnMiXTtmdW5jdGlvbiBJUChsKXt2YXIgYz1bXTtyZXR1cm4gUm4obCxmdW5jdGlvbihhKXthLndhbGtEb3duKGZ1bmN0aW9uKGYp''@;'; put 'put ''e2Zvcih2YXIgZD1mLmRhdGEsaD1kLm9yaWdDb2xzcGFuLG09ZC5jb2x1bW5JbmRleCxPPWQuY3Jvc3NIaWRkZW5Db2x1bW5zLFg9ZnVuY3Rpb24gR190KGwsYyl7dmFyIGE7cmV0dXJuIEFycmF5LmlzQXJyYXkobFtjXSk/YT1sW2NdOmxbY109YT1bXSxhfShjLGQuaGVhZGVyTGV2ZWwpLGFl''@;'; put 'put ''PSExLHBlPW07cGU8bStoO3BlKyspaWYoTy5pbmNsdWRlcyhwZSl8fGFlKVgucHVzaCh7bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMH0pO2Vsc2V7dmFyIHhlPVdfdChkKTt4ZS5pc1Jvb3Q9ITAsWC5wdXNoKHhlKSxhZT0hMH19KX0pLGN9ZnVuY3Rpb24gV190KGwpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''biBaX3QobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBmLGQsYT1mdW5jdGlvbiBZX3QobCxjKXtpZihudWxsPT1sKXJldHVybnt9O3ZhciBkLGgsYT17fSxmPU9iamVjdC5rZXlzKGwpO2ZvcihoPTA7aDxmLmxlbmd0aDtoKyspIShjLmluZGV4T2YoZD1mW2hdKT49MCkmJihhW2RdPWxb''@;'; put 'put ''ZF0pO3JldHVybiBhfShsLGMpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobCk7Zm9yKGQ9MDtkPGgubGVuZ3RoO2QrKykhKGMuaW5kZXhPZihmPWhbZF0pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlz''@;'; put 'put ''RW51bWVyYWJsZS5jYWxsKGwsZikmJihhW2ZdPWxbZl0pfXJldHVybiBhfShCWChsKSxVX3QpfWZ1bmN0aW9uIE9FKGwpe3JldHVybihPRT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''IGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfXZhciAkX3Q9WyJyb3ciXTtmdW5jdGlvbiBXZ2UobCxjKXt2YXIgYT1PYmpl''@;'; put 'put ''Y3Qua2V5cyhsKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpO2MmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsZCkuZW51bWVyYWJsZX0p''@;'; put 'put ''KSxhLnB1c2guYXBwbHkoYSxmKX1yZXR1cm4gYX1mdW5jdGlvbiBHZ2UobCl7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2NdP2FyZ3VtZW50c1tjXTp7fTtjJTI/V2dlKE9iamVjdChhKSwhMCkuZm9yRWFjaChmdW5jdGlvbihmKXtL''@;'; put 'put ''X3QobCxmLGFbZl0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6V2dlKE9iamVjdChhKSkuZm9yRWFjaChmdW5jdGlvbihmKXtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkobCxmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxmKSl9KX1yZXR1cm4gbH1mdW5jdGlvbiBLX3QobCxjLGEpe3JldHVybihjPUtnZShjKSlpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3Jp''@;'; put 'put ''dGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiAkZ2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShsLEtnZShmLmtleSksZil9fWZ1bmN0aW9uIEtnZShsKXt2YXIgYz1mdW5jdGlvbiBld3QobCxjKXtpZigib2JqZWN0IiE9PU9FKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGws''@;'; put 'put ''Y3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PU9FKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0''@;'; put 'put ''dXJuInN5bWJvbCI9PT1PRShjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiAkWChsLGMsYSl7KGZ1bmN0aW9uIHR3dChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0''@;'; put 'put ''Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gREUobCxjLGEpe3JldHVybiBmdW5jdGlvbiBud3QobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFjLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZh''@;'; put 'put ''dGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLHFnZShsLGMsInNldCIpLGEpLGF9ZnVuY3Rpb24gRnMobCxjKXtyZXR1cm4gZnVuY3Rpb24gcnd0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxxZ2UobCxjLCJnZXQiKSl9ZnVuY3Rpb24gcWdlKGwsYyxhKXtpZigh''@;'; put 'put ''Yy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXZhciBKaD1uZXcgV2Vha01hcCxWMT1uZXcgV2Vha01hcCxnNj1uZXcgV2Vha01hcCxpd3Q9ZnVuY3Rpb24oKXtmdW5j''@;'; put 'put ''dGlvbiBsKCl7KGZ1bmN0aW9uIEpfdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSwkWCh0aGlzLEpoLHt3cml0YWJsZTohMCx2YWx1ZTpuZXcgZl90fSksJFgodGhpcyxW''@;'; put 'put ''MSx7d3JpdGFibGU6ITAsdmFsdWU6bmV3IEhfdChGcyh0aGlzLEpoKSl9KSwkWCh0aGlzLGc2LHt3cml0YWJsZTohMCx2YWx1ZTpbW11dfSl9cmV0dXJuIGZ1bmN0aW9uIFFfdChsLGMsYSl7YyYmJGdlKGwucHJvdG90eXBlLGMpLGEmJiRnZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShs''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzZXRTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oYSl7RnModGhpcyxKaCkuc2V0RGF0YShhKTt2YXIgZj0hMTt0cnl7RnModGhpcyxWMSkuYnVpbGRUcmVlKCl9Y2F0Y2h7RnModGhpcyxWMSkuY2xlYXIoKSxGcyh0aGlzLEpoKS5j''@;'; put 'put ''bGVhcigpLGY9ITB9cmV0dXJuIERFKHRoaXMsZzYsSVAoRnModGhpcyxWMSkuZ2V0Um9vdHMoKSkpLGZ9fSx7a2V5OiJzZXRDb2x1bW5zTGltaXQiLHZhbHVlOmZ1bmN0aW9uKGEpe0ZzKHRoaXMsSmgpLnNldENvbHVtbnNMaW1pdChhKX19LHtrZXk6Im1lcmdlU3RhdGVXaXRoIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9aGEoYSxmdW5jdGlvbihoKXt2YXIgbT1oLnJvdyxfPWZ1bmN0aW9uIHFfdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGYsZCxhPWZ1bmN0aW9uIFhfdChsLGMpe2lmKG51bGw9PWwpcmV0dXJue307dmFyIGQsaCxhPXt9LGY9T2JqZWN0Lmtl''@;'; put 'put ''eXMobCk7Zm9yKGg9MDtoPGYubGVuZ3RoO2grKykhKGMuaW5kZXhPZihkPWZbaF0pPj0wKSYmKGFbZF09bFtkXSk7cmV0dXJuIGF9KGwsYyk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhsKTtmb3IoZD0wO2Q8aC5s''@;'; put 'put ''ZW5ndGg7ZCsrKSEoYy5pbmRleE9mKGY9aFtkXSk+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobCxmKSYmKGFbZl09bFtmXSl9cmV0dXJuIGF9KGgsJF90KTtyZXR1cm4gR2dlKHtyb3c6bTwwP2Yucm93Q29vcmRzVG9MZXZlbChtKTptfSxfKX0pO0Zz''@;'; put 'put ''KHRoaXMsSmgpLm1lcmdlV2l0aChkKSxGcyh0aGlzLFYxKS5idWlsZFRyZWUoKSxERSh0aGlzLGc2LElQKEZzKHRoaXMsVjEpLmdldFJvb3RzKCkpKX19LHtrZXk6Im1hcFN0YXRlIix2YWx1ZTpmdW5jdGlvbihhKXtGcyh0aGlzLEpoKS5tYXAoYSksRnModGhpcyxWMSkuYnVpbGRUcmVlKCks''@;'; put 'put ''REUodGhpcyxnNixJUChGcyh0aGlzLFYxKS5nZXRSb290cygpKSl9fSx7a2V5OiJtYXBOb2RlcyIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIFBzKEZzKHRoaXMsVjEpLmdldFJvb3RzKCksZnVuY3Rpb24oZixkKXtyZXR1cm4gZC53YWxrRG93bihmdW5jdGlvbihoKXt2YXIgbT1hKGguZGF0''@;'; put 'put ''YSk7dm9pZCAwIT09bSYmZi5wdXNoKG0pfSksZn0sW10pfX0se2tleToidHJpZ2dlck5vZGVNb2RpZmljYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXtmPDAmJihmPXRoaXMucm93Q29vcmRzVG9MZXZlbChmKSk7dmFyIG0saD1Gcyh0aGlzLFYxKS5nZXROb2RlKGYsZCk7cmV0dXJuIGgm''@;'; put 'put ''JihtPWZ1bmN0aW9uIHpfdChsLGMsYSl7aWYoIVlnZS5oYXMobCkpdGhyb3cgbmV3IEVycm9yKCdUaGUgbm9kZSBtb2RpZmllciBhY3Rpb24gKCInLmNvbmNhdChsLCciKSBkb2VzIG5vdCBleGlzdC4nKSk7cmV0dXJuIFlnZS5nZXQobCkoYyxhKX0oYSxoLGQpLERFKHRoaXMsZzYsSVAoRnMo''@;'; put 'put ''dGhpcyxWMSkuZ2V0Um9vdHMoKSkpKSxtfX0se2tleToidHJpZ2dlckNvbHVtbk1vZGlmaWNhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oYSxmKXtyZXR1cm4gdGhpcy50cmlnZ2VyTm9kZU1vZGlmaWNhdGlvbihhLC0xLGYpfX0se2tleToicm93Q29vcmRzVG9MZXZlbCIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''YSl7aWYoYT49MClyZXR1cm4gbnVsbDt2YXIgZj1hK01hdGgubWF4KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSwxKTtyZXR1cm4gZjwwP251bGw6Zn19LHtrZXk6ImxldmVsVG9Sb3dDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKGE8MClyZXR1cm4gbnVsbDt2YXIgZj1hLU1hdGgubWF4KHRo''@;'; put 'put ''aXMuZ2V0TGF5ZXJzQ291bnQoKSwxKTtyZXR1cm4gZj49MD9udWxsOmZ9fSx7a2V5OiJnZXRIZWFkZXJTZXR0aW5ncyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZCxoO3JldHVybiBhPDAmJihhPXRoaXMucm93Q29vcmRzVG9MZXZlbChhKSksbnVsbD09PWF8fGE+PXRoaXMuZ2V0TGF5ZXJz''@;'; put 'put ''Q291bnQoKT9udWxsOm51bGwhPT0oZD1udWxsPT09KGg9RnModGhpcyxnNilbYV0pfHx2b2lkIDA9PT1oP3ZvaWQgMDpoW2ZdKSYmdm9pZCAwIT09ZD9kOm51bGx9fSx7a2V5OiJnZXRIZWFkZXJUcmVlTm9kZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGEsZil7aWYoYTwwJiYoYT10aGlzLnJvd0Nv''@;'; put 'put ''b3Jkc1RvTGV2ZWwoYSkpLG51bGw9PT1hfHxhPj10aGlzLmdldExheWVyc0NvdW50KCkpcmV0dXJuIG51bGw7dmFyIGQ9RnModGhpcyxWMSkuZ2V0Tm9kZShhLGYpO3JldHVybiBkP0dnZSh7fSxkLmRhdGEpOm51bGx9fSx7a2V5OiJmaW5kTGVmdE1vc3RDb2x1bW5JbmRleCIsdmFsdWU6ZnVu''@;'; put 'put ''Y3Rpb24oYSxmKXt2YXIgZDtpZigobnVsbCE9PShkPXRoaXMuZ2V0SGVhZGVyU2V0dGluZ3MoYSxmKSkmJnZvaWQgMCE9PWQ/ZDp7aXNSb290OiEwfSkuaXNSb290KXJldHVybiBmO2Zvcih2YXIgXz1mLTE7Xz49MDspe3ZhciBPO2lmKChudWxsIT09KE89dGhpcy5nZXRIZWFkZXJTZXR0aW5n''@;'; put 'put ''cyhhLF8pKSYmdm9pZCAwIT09Tz9POntpc1Jvb3Q6ITB9KS5pc1Jvb3QpYnJlYWs7Xy09MX1yZXR1cm4gX319LHtrZXk6ImdldExheWVyc0NvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBGcyh0aGlzLEpoKS5nZXRMYXllcnNDb3VudCgpfX0se2tleToiZ2V0Q29sdW1uc0NvdW50Iix2''@;'; put 'put ''YWx1ZTpmdW5jdGlvbigpe3JldHVybiBGcyh0aGlzLEpoKS5nZXRDb2x1bW5zQ291bnQoKX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe0RFKHRoaXMsZzYsW10pLEZzKHRoaXMsSmgpLmNsZWFyKCksRnModGhpcyxWMSkuY2xlYXIoKX19XSksbH0oKTtmdW5jdGlvbiBJRShsKXty''@;'; put 'put ''ZXR1cm4oSUU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5''@;'; put 'put ''bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBYZ2UobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g''@;'; put 'put ''ZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEpnZShmLmtleSksZil9fWZ1bmN0aW9uIFJFKGwsYyxhKXtyZXR1cm4oYz1KZ2UoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdy''@;'; put 'put ''aXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gSmdlKGwpe3ZhciBjPWZ1bmN0aW9uIGx3dChsLGMpe2lmKCJvYmplY3QiIT09SUUobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVm''@;'; put 'put ''YXVsdCIpO2lmKCJvYmplY3QiIT09SUUoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3lt''@;'; put 'put ''Ym9sIj09PUlFKGMpP2M6U3RyaW5nKGMpfXZhciBzd3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIG93dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxs''@;'; put 'put ''KSxSRSh0aGlzLCJob3QiLHZvaWQgMCksUkUodGhpcywibmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXIiLHZvaWQgMCksUkUodGhpcywibGF5ZXJzQ291bnQiLDApLFJFKHRoaXMsImNvbnRhaW5lciIsdm9pZCAwKSxSRSh0aGlzLCJ3aWR0aHNNYXAiLHZvaWQgMCksdGhpcy5ob3Q9Yyx0aGlz''@;'; put 'put ''Lm5lc3RlZEhlYWRlclNldHRpbmdzR2V0dGVyPWEsdGhpcy53aWR0aHNNYXA9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCgibmVzdGVkSGVhZGVycy53aWR0aHNNYXAiLCJwaHlzaWNhbEluZGV4VG9WYWx1ZSIpfXJldHVybiBmdW5jdGlvbiBh''@;'; put 'put ''d3QobCxjLGEpe2MmJlhnZShsLnByb3RvdHlwZSxjKSxhJiZYZ2UobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0obCxbe2tleToic2V0TGF5ZXJzQ291bnQiLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxheWVyc0NvdW50PWEs''@;'; put 'put ''dGhpc319LHtrZXk6ImdldFdpZHRoIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy53aWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYSkpfX0se2tleToiYnVpbGRXaWR0aHNNYXAiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXI9''@;'; put 'put ''dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhbmRzb250YWJsZSIsImh0R2hvc3RUYWJsZSIsImh0QXV0b1NpemUiKSx0aGlzLl9idWlsZEdob3N0VGFibGUodGhpcy5jb250YWluZXIpLHRoaXMuaG90LnJv''@;'; put 'put ''b3REb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTt2YXIgYT10aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJ0cjpsYXN0LW9mLXR5cGUgdGgiKSxmPWEubGVuZ3RoO3RoaXMud2lkdGhzTWFwLmNsZWFyKCk7Zm9yKHZhciBkPTA7ZDxmO2QrKyl7dmFyIGg9''@;'; put 'put ''dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChkKSxtPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaCk7dGhpcy53aWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KG0sYVtkXS5vZmZzZXRXaWR0aCl9dGhpcy5jb250YWluZXIucGFyZW50Tm9k''@;'; put 'put ''ZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lciksdGhpcy5jb250YWluZXI9bnVsbH19LHtrZXk6Il9idWlsZEdob3N0VGFibGUiLHZhbHVlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZj10aGlzLmhvdCxkPWYucm9vdERvY3VtZW50LGg9Zi5jb2x1bW5JbmRleE1hcHBlcixtPWQuY3JlYXRlRG9j''@;'; put 'put ''dW1lbnRGcmFnbWVudCgpLF89ZC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLE89ISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSxYPWguZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKSxhZT0wO2FlPHRoaXMubGF5ZXJzQ291bnQ7YWUrKyl7Zm9yKHZhciBwZT1kLmNyZWF0''@;'; put 'put ''ZUVsZW1lbnQoInRyIiksYmU9MDtiZTxYO2JlKyspe3ZhciB4ZT1oLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYmUpO251bGw9PT14ZSYmKHhlPWJlKTt2YXIgVmU9ZC5jcmVhdGVFbGVtZW50KCJ0aCIpLFplPXRoaXMubmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXIoYWUseGUpO2lm''@;'; put 'put ''KFplJiYoIVplLmlzUGxhY2Vob2xkZXJ8fFplLmlzSGlkZGVuKSl7dmFyIGx0PVplLmxhYmVsO08mJihsdCs9JzxidXR0b24gY2xhc3M9ImNoYW5nZVR5cGUiPjwvYnV0dG9uPicpLHY1KFZlLGx0KSxWZS5jb2xTcGFuPVplLmNvbHNwYW4scGUuYXBwZW5kQ2hpbGQoVmUpfX1fLmFwcGVuZENo''@;'; put 'put ''aWxkKHBlKX1tLmFwcGVuZENoaWxkKF8pLGEuYXBwZW5kQ2hpbGQobSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndpZHRoc01hcC5jbGVhcigpLHRoaXMuY29udGFpbmVyPW51bGx9fV0pLGx9KCk7Y29uc3QgdXd0PXN3dDtmdW5jdGlvbiBwYihsKXtyZXR1cm4ocGI9''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9''@;'; put 'put ''PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX12YXIgUWdlLGU1ZTtmdW5jdGlvbiB0NWUobCxjKXtyZXR1cm4gY3x8KGM9bC5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUoYyl9''@;'; put 'put ''fSkpfWZ1bmN0aW9uIG41ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsaTVl''@;'; put 'put ''KGYua2V5KSxmKX19ZnVuY3Rpb24gdjYoKXtyZXR1cm4gdjY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIGR3dChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku''@;'; put 'put ''Y2FsbChsLGMpJiZudWxsIT09KGw9ejMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSx2Ni5hcHBseSh0aGlz''@;'; put 'put ''LGFyZ3VtZW50cyl9ZnVuY3Rpb24gS1gobCxjKXtyZXR1cm4oS1g9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBMRShsKXtpZih2b2lkIDA9PT1sKXRo''@;'; put 'put ''cm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gejMobCl7cmV0dXJuKHozPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmlu''@;'; put 'put ''ZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9ZnVuY3Rpb24gcjVlKGwsYyxhKXtyZXR1cm4oYz1pNWUoYykpaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJh''@;'; put 'put ''YmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gaTVlKGwpe3ZhciBjPWZ1bmN0aW9uIHZ3dChsLGMpe2lmKCJvYmplY3QiIT09cGIobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwo''@;'; put 'put ''bCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09cGIoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTty''@;'; put 'put ''ZXR1cm4ic3ltYm9sIj09PXBiKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIG81ZShsLGMsYSl7KGZ1bmN0aW9uIHl3dChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2Jq''@;'; put 'put ''ZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gUlAobCxjLGEpe3JldHVybiBmdW5jdGlvbiBid3QobCxjLGEpe2lmKGMuc2V0KWMuc2V0LmNhbGwobCxhKTtlbHNle2lmKCFjLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHBy''@;'; put 'put ''aXZhdGUgZmllbGQiKTtjLnZhbHVlPWF9fShsLGE1ZShsLGMsInNldCIpLGEpLGF9ZnVuY3Rpb24gQXMobCxjKXtyZXR1cm4gZnVuY3Rpb24gX3d0KGwsYyl7cmV0dXJuIGMuZ2V0P2MuZ2V0LmNhbGwobCk6Yy52YWx1ZX0obCxhNWUobCxjLCJnZXQiKSl9ZnVuY3Rpb24gYTVlKGwsYyxhKXtp''@;'; put 'put ''ZighYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrYSsiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGMuZ2V0KGwpfXZhciBsNWU9Im5lc3RlZEhlYWRlcnMiLGF1PW5ldyBXZWFrTWFwLGltPW5ldyBXZWFrTWFwLEN3dD1mdW5jdGlv''@;'; put 'put ''bihsKXshZnVuY3Rpb24gaHd0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnBy''@;'; put 'put ''b3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJktYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gcHd0KGwpe3ZhciBjPWZ1bmN0aW9u''@;'; put 'put ''IGd3dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZs''@;'; put 'put ''ZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPXozKGwpO2lmKGMpe3ZhciBoPXozKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxz''@;'; put 'put ''ZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBtd3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1wYihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMg''@;'; put 'put ''bWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gTEUobCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKCl7dmFyIGY7IWZ1bmN0aW9uIGN3dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg''@;'; put 'put ''YXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpO2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3JldHVybiBvNWUoTEUoZj1jLmNhbGwuYXBwbHkoYyxbdGhpc10uY29uY2F0KGgpKSksYXUse3dyaXRhYmxlOiEwLHZh''@;'; put 'put ''bHVlOm5ldyBpd3R9KSxvNWUoTEUoZiksaW0se3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSxyNWUoTEUoZiksImdob3N0VGFibGUiLG5ldyB1d3QoZi5ob3QsZnVuY3Rpb24oXyxPKXtyZXR1cm4gZi5nZXRIZWFkZXJTZXR0aW5ncyhfLE8pfSkpLHI1ZShMRShmKSwiZGV0ZWN0ZWRPdmVybGFw''@;'; put 'put ''cGVkSGVhZGVycyIsITEpLGZ9cmV0dXJuIGZ1bmN0aW9uIGZ3dChsLGMsYSl7YyYmbjVlKGwucHJvdG90eXBlLGMpLGEmJm41ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2w1ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztpZighdGhpcy5lbmFibGVkKXt2YXIgbT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm5lc3RlZEhlYWRlcnM7KCFBcnJheS5pc0FycmF5''@;'; put 'put ''KG0pfHwhQXJyYXkuaXNBcnJheShtWzBdKSkmJldsKE9sKFFnZXx8KFFnZT10NWUoWyJZb3VyIE5lc3RlZCBIZWFkZXJzIHBsdWdpbiBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuIFRoZSBzZXR0aW5ncyBoYXMgdG8gYmUgXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgYXMgYW4g''@;'; put 'put ''YXJyYXkgb2YgYXJyYXlzIGUucS4gW1snQTEnLCB7IGxhYmVsOiAnQTInLCBjb2xzcGFuOiAyIH1dXSJdLFsiWW91ciBOZXN0ZWQgSGVhZGVycyBwbHVnaW4gY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLiBUaGUgc2V0dGluZ3MgaGFzIHRvIGJlXFx4MjBcbiAgICAgICAgICAgICAgICAgICAg''@;'; put 'put ''ICAgIHBhc3NlZCBhcyBhbiBhcnJheSBvZiBhcnJheXMgZS5xLiBbWydBMScsIHsgbGFiZWw6ICdBMicsIGNvbHNwYW46IDIgfV1dIl0pKSkpLHRoaXMuYWRkSG9vaygiaW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkluaXQoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyTG9hZERhdGEuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRI''@;'; put 'put ''b29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyT25DZWxsTW91c2VEb3duLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlT25DZWxsTW91''@;'; put 'put ''c2VPdmVyLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLGZ1bmN0aW9uKF8pe3JldHVybiBkLm9uQWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMoXyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBkLm9uTW9kaWZ5Q29sV2lkdGguYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbk1vZGlmeUNvbHVtbkhlYWRlclZhbHVlLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMu''@;'; put 'put ''YWRkSG9vaygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29weSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkJl''@;'; put 'put ''Zm9yZUNvcHkuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZS5hcHBseShkLGFyZ3VtZW50cyl9KSx2''@;'; put 'put ''Nih6MyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSx0aGlzLnVwZGF0ZVBsdWdpbigpfX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO2lmKHRoaXMuaG90LnZpZXcpe3ZhciBtPXRoaXMuaG90LmdldFNldHRpbmdz''@;'; put 'put ''KCkubmVzdGVkSGVhZGVycztBcyh0aGlzLGF1KS5zZXRDb2x1bW5zTGltaXQodGhpcy5ob3QuY291bnRDb2xzKCkpLEFycmF5LmlzQXJyYXkobSkmJih0aGlzLmRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnM9QXModGhpcyxhdSkuc2V0U3RhdGUobSkpLHRoaXMuZGV0ZWN0ZWRPdmVybGFwcGVk''@;'; put 'put ''SGVhZGVycyYmV2woT2woZTVlfHwoZTVlPXQ1ZShbIllvdXIgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIHNldHVwIGNvbnRhaW5zIG92ZXJsYXBwaW5nIGhlYWRlcnMuIFRoaXMga2luZCBvZiBjb25maWd1cmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgaXMgY3VycmVudGx5IG5vdCBz''@;'; put 'put ''dXBwb3J0ZWQuIl0sWyJZb3VyIE5lc3RlZCBIZWFkZXJzIHBsdWdpbiBzZXR1cCBjb250YWlucyBvdmVybGFwcGluZyBoZWFkZXJzLiBUaGlzIGtpbmQgb2YgY29uZmlndXJhdGlvblxceDIwXG4gICAgICAgICAgICAgICAgICAgICAgICBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4iXSkp''@;'; put 'put ''KSksdGhpcy5lbmFibGVkJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5oaWRpbmdNYXBzQ29sbGVjdGlvbi5nZXRNZXJnZWRWYWx1ZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKF8sTyl7dmFyIFg9ITA9PT1fPyJoaWRlLWNvbHVtbiI6InNob3ctY29sdW1uIjtBcyhkLGF1KS50cmlnZ2VyQ29s''@;'; put 'put ''dW1uTW9kaWZpY2F0aW9uKFgsTyl9KSwhQXModGhpcyxpbSkmJnRoaXMuZW5hYmxlZCYmUlAodGhpcyxpbSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5jcmVhdGVDaGFuZ2VzT2JzZXJ2ZXIoImhpZGluZyIpLnN1YnNjcmliZShmdW5jdGlvbihfKXtfLmZvckVhY2goZnVuY3Rpb24oTyl7''@;'; put 'put ''dmFyIGFlPU8uaW5kZXg7aWYoInJlcGxhY2UiPT09Ty5vcCl7dmFyIGJlPSEwPT09Ty5uZXdWYWx1ZT8iaGlkZS1jb2x1bW4iOiJzaG93LWNvbHVtbiI7QXMoZCxhdSkudHJpZ2dlckNvbHVtbk1vZGlmaWNhdGlvbihiZSxhZSl9fSksZC5naG9zdFRhYmxlLmJ1aWxkV2lkdGhzTWFwKCl9KSks''@;'; put 'put ''dGhpcy5naG9zdFRhYmxlLnNldExheWVyc0NvdW50KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSkuYnVpbGRXaWR0aHNNYXAoKSx2Nih6MyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuY2xlYXJDb2xzcGFucygpLEFzKHRoaXMsYXUpLmNsZWFyKCksQXModGhpcyxpbSkudW5zdWJzY3JpYmUoKSxSUCh0aGlzLGltLG51bGwpLHRoaXMuZ2hvc3RUYWJsZS5jbGVhcigpLHY2KHozKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6''@;'; put 'put ''ImdldFN0YXRlTWFuYWdlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQXModGhpcyxhdSl9fSx7a2V5OiJnZXRMYXllcnNDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gQXModGhpcyxhdSkuZ2V0TGF5ZXJzQ291bnQoKX19LHtrZXk6ImdldEhlYWRlclNldHRpbmdzIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbihkLGgpe3JldHVybiBBcyh0aGlzLGF1KS5nZXRIZWFkZXJTZXR0aW5ncyhkLGgpfX0se2tleToiY2xlYXJDb2xzcGFucyIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmhvdC52aWV3KWZvcih2YXIgZD10aGlzLmhvdC52aWV3Ll93dCxoPWQuZ2V0U2V0dGluZygiY29sdW1uSGVh''@;'; put 'put ''ZGVycyIpLmxlbmd0aCxtPWQud3RUYWJsZS5USEVBRCxfPWQud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuVEhFQUQsTz1kLnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5P2Qud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xv''@;'; put 'put ''bmUud3RUYWJsZS5USEVBRDpudWxsLFg9MDtYPGg7WCsrKXt2YXIgYWU9bS5jaGlsZE5vZGVzW1hdO2lmKCFhZSlicmVhaztmb3IodmFyIHBlPV8uY2hpbGROb2Rlc1tYXSxiZT1PP08uY2hpbGROb2Rlc1tYXTpudWxsLHhlPTAsVmU9YWUuY2hpbGROb2Rlcy5sZW5ndGg7eGU8VmU7eGUrKylh''@;'; put 'put ''ZS5jaGlsZE5vZGVzW3hlXS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxKbyhhZS5jaGlsZE5vZGVzW3hlXSwiaGlkZGVuSGVhZGVyIikscGUmJnBlLmNoaWxkTm9kZXNbeGVdJiYocGUuY2hpbGROb2Rlc1t4ZV0ucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksSm8ocGUuY2hpbGROb2Rl''@;'; put 'put ''c1t4ZV0sImhpZGRlbkhlYWRlciIpKSxPJiZiZSYmYmUuY2hpbGROb2Rlc1t4ZV0mJihiZS5jaGlsZE5vZGVzW3hlXS5yZW1vdmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxKbyhiZS5jaGlsZE5vZGVzW3hlXSwiaGlkZGVuSGVhZGVyIikpfX19LHtrZXk6ImhlYWRlclJlbmRlcmVyRmFjdG9yeSIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik7cmV0dXJuIGZ1bmN0aW9uKF8sTyl7dmFyIFgsYWU9aC5ob3QsYmU9YWUudmlldyx4ZT1hZS5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9t''@;'; put 'put ''UmVuZGVyYWJsZUluZGV4KF8pO251bGw9PT14ZSYmKHhlPV8pLE8ucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksSm8oTywiaGlkZGVuSGVhZGVyIik7dmFyIFZlPW51bGwhPT0oWD1BcyhoLGF1KS5nZXRIZWFkZXJTZXR0aW5ncyhkLHhlKSkmJnZvaWQgMCE9PVg/WDp7bGFiZWw6IiJ9LFpl''@;'; put 'put ''PVZlLmNvbHNwYW47aWYoVmUuaXNQbGFjZWhvbGRlcnx8VmUuaXNIaWRkZW4pZ2koTywiaGlkZGVuSGVhZGVyIik7ZWxzZSBpZihaZT4xKXt2YXIgZ3QsanQscm49YmUuX3d0Lnd0T3ZlcmxheXMsWHQ9bnVsbD09PShndD1ybi50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkpfHx2b2lkIDA9''@;'; put 'put ''PT1ndD92b2lkIDA6Z3QuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyhPKSx5bj1udWxsPT09KGp0PXJuLmlubGluZVN0YXJ0T3ZlcmxheSl8fHZvaWQgMD09PWp0P3ZvaWQgMDpqdC5jbG9uZS53dFRhYmxlLlRIRUFELmNvbnRhaW5zKE8pLFFuPVh0fHx5bj9NYXRoLm1pbihaZSxtLV8p''@;'; put 'put ''OlplO1FuPjEmJk8uc2V0QXR0cmlidXRlKCJjb2xzcGFuIixRbil9aC5ob3Qudmlldy5hcHBlbmRDb2xIZWFkZXIoeGUsTyxmdW5jdGlvbigpe3JldHVybiBoLmdldENvbHVtbkhlYWRlclZhbHVlLmFwcGx5KGgsYXJndW1lbnRzKX0sZCl9fX0se2tleToiZ2V0Q29sdW1uSGVhZGVyVmFsdWUi''@;'; put 'put ''LHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG0sXz1udWxsIT09KG09QXModGhpcyxhdSkuZ2V0SGVhZGVyU2V0dGluZ3MoaCxkKSkmJnZvaWQgMCE9PW0/bTp7fTtyZXR1cm4gXy5pc1BsYWNlaG9sZGVyfHxfLmlzSGlkZGVuPyIiOnRoaXMuaG90LmdldENvbEhlYWRlcihkLGgpfX0se2tleToi''@;'; put 'put ''b25CZWZvcmVIaWdobGlnaHRpbmdDb2x1bW5IZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt2YXIgXz1Bcyh0aGlzLGF1KS5nZXRIZWFkZXJUcmVlTm9kZURhdGEoaCxkKTtpZighXylyZXR1cm4gZDt2YXIgTz1tLmNsYXNzTmFtZXMsWD1tLmNvbHVtbkN1cnNvcixhZT1tLnNlbGVjdGlv''@;'; put 'put ''blR5cGUscGU9bS5zZWxlY3Rpb25XaWR0aCxiZT1Bcyh0aGlzLGF1KS5nZXRIZWFkZXJTZXR0aW5ncyhoLGQpLHhlPWJlLmlzUm9vdDtpZihhZT09PVdNKXtpZigheGUpcmV0dXJuIF8uY29sdW1uSW5kZXh9ZWxzZSBhZT09PWVMJiYoYmUuY29sc3Bhbj5wZS1YfHwheGUpJiYoTy5sZW5ndGg9''@;'; put 'put ''MCk7cmV0dXJuIGR9fSx7a2V5OiJvbkJlZm9yZUNvcHkiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXtpZigwIT09bS5jb2x1bW5IZWFkZXJzQ291bnQpZm9yKHZhciBPPTA7TzxoLmxlbmd0aDtPKyspe3ZhciBYPWhbT10sYWU9WC5zdGFydFJvdyxwZT1YLnN0YXJ0Q29sLGJlPVguZW5kUm93LHhl''@;'; put 'put ''PVguZW5kQ29sLFZlPWJlLWFlKzE7aWYoYWU+PTB8fDE9PXBlLXhlKzEpYnJlYWs7Zm9yKHZhciBsdD1wZTtsdDw9eGU7bHQrKylmb3IodmFyIGR0PWFlO2R0PD1iZTtkdCsrKXt2YXIgZ3QsanQ9VmUrZHQscm49bHQtcGU7MCE9PXJuJiYhMT09PShudWxsPT09KGd0PUFzKHRoaXMsYXUpLmdl''@;'; put 'put ''dEhlYWRlclRyZWVOb2RlRGF0YShkdCxsdCkpfHx2b2lkIDA9PT1ndD92b2lkIDA6Z3QuaXNSb290KSYmKGRbanRdW3JuXT0iIil9fX19LHtrZXk6Im9uQmVmb3JlT25DZWxsTW91c2VEb3duIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXt0aGlzLl9nZXRIZWFkZXJUcmVlTm9kZURhdGFCeUNv''@;'; put 'put ''b3JkcyhoKSYmKF8uY29sdW1uPSEwKX19LHtrZXk6Im9uQWZ0ZXJPbkNlbGxNb3VzZURvd24iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoaCk7aWYobSl7dmFyIF89dGhpcy5ob3Quc2VsZWN0aW9uLE89Xy5pc1NlbGVjdGVk''@;'; put 'put ''KCk/Xy5nZXRTZWxlY3RlZFJhbmdlKCkuY3VycmVudCgpOm51bGwsWD1bXSxhZT1tLmNvbHVtbkluZGV4LHBlPW0ub3JpZ0NvbHNwYW4sYmU9IV8uaW5JblNlbGVjdGlvbihoKTtkLnNoaWZ0S2V5JiZPP2guY29sPE8uZnJvbS5jb2w/WC5wdXNoKE8uZ2V0VG9wRW5kQ29ybmVyKCkuY29sLGFl''@;'; put 'put ''LGgucm93KTpYLnB1c2goaC5jb2w+Ty5mcm9tLmNvbD9PLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sOmFlLGFlK3BlLTEsaC5yb3cpOihRSShkKXx8STQoZCkmJmJlKSYmWC5wdXNoKGFlLGFlK3BlLTEsaC5yb3cpLF8uc2VsZWN0Q29sdW1ucy5hcHBseShfLFgpfX19LHtrZXk6Im9uQmVmb3Jl''@;'; put 'put ''T25DZWxsTW91c2VPdmVyIix2YWx1ZTpmdW5jdGlvbihkLGgsbSxfKXt2YXIgTztpZih0aGlzLmhvdC52aWV3LmlzTW91c2VEb3duKCkpe3ZhciBYPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKGgpO2lmKFgpe3ZhciBhZT1YLmNvbHVtbkluZGV4LHBlPVgub3JpZ0NvbHNw''@;'; put 'put ''YW4sYmU9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx4ZT1iZS5nZXRUb3BTdGFydENvcm5lcigpLFZlPWJlLmdldEJvdHRvbUVuZENvcm5lcigpLFplPWJlLmZyb207Xy5jb2x1bW49ITAsXy5jZWxsPSEwO3ZhciBsdD1bXTtoLmNvbDxaZS5jb2w/bHQucHVzaChWZS5jb2wsYWUp''@;'; put 'put ''Omx0LnB1c2goaC5jb2w+WmUuY29sP3hlLmNvbDphZSxhZStwZS0xKSwoTz10aGlzLmhvdCkuc2VsZWN0Q29sdW1ucy5hcHBseShPLGx0KX19fX0se2tleToib25BZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVycyIsdmFsdWU6ZnVuY3Rpb24oZCl7ZC5sZW5ndGg9MDtmb3IodmFyIGg9MDto''@;'; put 'put ''PEFzKHRoaXMsYXUpLmdldExheWVyc0NvdW50KCk7aCsrKWQucHVzaCh0aGlzLmhlYWRlclJlbmRlcmVyRmFjdG9yeShoKSl9fSx7a2V5OiJvbkFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLHZhbHVlOmZ1bmN0aW9uKGQpe2Zvcih2YXIgaD1Bcyh0aGlzLGF1KS5nZXRM''@;'; put 'put ''YXllcnNDb3VudCgpLG09ZC5zdGFydENvbHVtbixfPSEhaCxPPTA7TzxoO08rKyl7dmFyIFg9QXModGhpcyxhdSkuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoTyxkLnN0YXJ0Q29sdW1uKSxhZT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4''@;'; put 'put ''KFgpO2lmKFg+PTAmJihfPSExKSx0MChhZSkmJmFlPGQuc3RhcnRDb2x1bW4pe209YWU7YnJlYWt9fWQuc3RhcnRDb2x1bW49Xz9Bcyh0aGlzLGF1KS5nZXRIZWFkZXJUcmVlTm9kZURhdGEoMCxtKS5jb2x1bW5JbmRleDptfX0se2tleToib25Nb2RpZnlDb2xXaWR0aCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oZCxoKXt2YXIgbT10aGlzLmdob3N0VGFibGUuZ2V0V2lkdGgoaCk7cmV0dXJuIGQ+bT9kOm19fSx7a2V5OiJvbk1vZGlmeUNvbHVtbkhlYWRlclZhbHVlIix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF87cmV0dXJuKG51bGwhPT0oXz1Bcyh0aGlzLGF1KS5nZXRIZWFkZXJUcmVlTm9k''@;'; put 'put ''ZURhdGEobSxoKSkmJnZvaWQgMCE9PV8/Xzp7bGFiZWw6IiJ9KS5sYWJlbH19LHtrZXk6Im9uSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVBsdWdpbigpfX0se2tleToib25BZnRlckxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbihkLGgpe2h8fHRoaXMudXBkYXRlUGx1Z2luKCl9''@;'; put 'put ''fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe1JQKHRoaXMsYXUsbnVsbCksbnVsbCE9PUFzKHRoaXMsaW0pJiYoQXModGhpcyxpbSkudW5zdWJzY3JpYmUoKSxSUCh0aGlzLGltLG51bGwpKSx2Nih6MyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fSx7''@;'; put 'put ''a2V5OiJfZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMiLHZhbHVlOmZ1bmN0aW9uKGQpe2lmKCEoZC5yb3c+PTB8fGQuY29sPDApKXJldHVybiBBcyh0aGlzLGF1KS5nZXRIZWFkZXJUcmVlTm9kZURhdGEoZC5yb3csZC5jb2wpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gbDVlfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMjgwfX1dKSxhfShHYSk7ZnVuY3Rpb24gczVlKGwpe3JldHVybiBmdW5jdGlvbiBFd3QobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gcVgobCl9KGwpfHxmdW5jdGlvbiBr''@;'; put 'put ''d3QobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gTXd0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBxWChsLGMpO3Zh''@;'; put 'put ''ciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1h''@;'; put 'put ''fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gcVgobCxjKX19KGwpfHxmdW5jdGlvbiBTd3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9y''@;'; put 'put ''ZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBxWChsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8''@;'; put 'put ''YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIG1iKGwpe3JldHVybihtYj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHU1ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVu''@;'; put 'put ''dW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsVHd0KGYua2V5KSxmKX19ZnVuY3Rpb24gVHd0KGwpe3ZhciBjPWZ1bmN0aW9uIE93dChsLGMpe2lmKCJvYmplY3QiIT09bWIobCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09bWIoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PW1iKGMpP2M6U3RyaW5nKGMpfXZhciBEd3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGMsYSl7KGZ1bmN0aW9uIHh3dChsLGMpe2lmKCEobCBp''@;'; put 'put ''bnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLmhvdD1hLHRoaXMuZGF0YT1udWxsLHRoaXMucGx1Z2luPWMsdGhpcy5wYXJlbnRSZWZlcmVuY2U9bmV3IFdlYWtNYXAsdGhpcy5jYWNoZT17''@;'; put 'put ''bGV2ZWxzOltdLGxldmVsQ291bnQ6MCxyb3dzOltdLG5vZGVJbmZvOm5ldyBXZWFrTWFwfX1yZXR1cm4gZnVuY3Rpb24gQXd0KGwsYyxhKXtjJiZ1NWUobC5wcm90b3R5cGUsYyksYSYmdTVlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9''@;'; put 'put ''KGwsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGEpe3RoaXMuZGF0YT1hfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX0se2tleToiZ2V0UmF3U291cmNlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gdGhpcy5wbHVn''@;'; put 'put ''aW4uZGlzYWJsZUNvcmVBUElNb2RpZmllcnMoKSxhPXRoaXMuaG90LmdldFNvdXJjZURhdGEoKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksYX19LHtrZXk6InVwZGF0ZVdpdGhEYXRhIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnNldERhdGEoYSksdGhpcy5yZXdyaXRl''@;'; put 'put ''Q2FjaGUoKX19LHtrZXk6InJld3JpdGVDYWNoZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuY2FjaGU9e2xldmVsczpbXSxsZXZlbENvdW50OjAscm93czpbXSxub2RlSW5mbzpuZXcgV2Vha01hcH0sX28oMCx0aGlzLmRhdGEubGVuZ3RoLTEsZnVuY3Rpb24oZil7YS5jYWNo''@;'; put 'put ''ZU5vZGUoYS5kYXRhW2ZdLDAsbnVsbCl9KX19LHtrZXk6ImNhY2hlTm9kZSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQpe3ZhciBoPXRoaXM7dGhpcy5jYWNoZS5sZXZlbHNbZl18fCh0aGlzLmNhY2hlLmxldmVsc1tmXT1bXSx0aGlzLmNhY2hlLmxldmVsQ291bnQrPTEpLHRoaXMuY2FjaGUubGV2''@;'; put 'put ''ZWxzW2ZdLnB1c2goYSksdGhpcy5jYWNoZS5yb3dzLnB1c2goYSksdGhpcy5jYWNoZS5ub2RlSW5mby5zZXQoYSx7cGFyZW50OmQscm93OnRoaXMuY2FjaGUucm93cy5sZW5ndGgtMSxsZXZlbDpmfSksdGhpcy5oYXNDaGlsZHJlbihhKSYmUm4oYS5fX2NoaWxkcmVuLGZ1bmN0aW9uKG0pe2gu''@;'; put 'put ''Y2FjaGVOb2RlKG0sZisxLGEpfSl9fSx7a2V5OiJnZXREYXRhT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9udWxsOnRoaXMuY2FjaGUucm93c1thXX19LHtrZXk6InJlYWRUcmVlTm9kZXMiLHZhbHVlOmZ1bmN0aW9uKGEsZixkLGgpe3ZhciBtPXRoaXMsXz0hMSxP''@;'; put 'put ''PWY7aWYoaXNOYU4oTykmJk8uZW5kKXJldHVybiBPO3ZhciBYPWE7cmV0dXJuIFh8fChYPXtfX2NoaWxkcmVuOnRoaXMuZGF0YX0sXz0hMCxPLT0xKSxudWxsIT1kJiZPPT09ZD97cmVzdWx0OlgsZW5kOiEwfTpudWxsIT1oJiZYPT09aD97cmVzdWx0Ok8sZW5kOiEwfTooTys9MSxYLl9fY2hp''@;'; put 'put ''bGRyZW4mJlJuKFguX19jaGlsZHJlbixmdW5jdGlvbihhZSl7aWYobS5wYXJlbnRSZWZlcmVuY2Uuc2V0KGFlLF8/bnVsbDpYKSxPPW0ucmVhZFRyZWVOb2RlcyhhZSxPLGQsaCksaXNOYU4oTykmJk8uZW5kKXJldHVybiExfSksTyl9fSx7a2V5OiJtb2NrUGFyZW50Iix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBhPXRoaXMubW9ja05vZGUoKTtyZXR1cm4gYS5fX2NoaWxkcmVuPXRoaXMuZGF0YSxhfX0se2tleToibW9ja05vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9e307cmV0dXJuIG1hKHRoaXMuZGF0YVswXSxmdW5jdGlvbihmLGQpe2FbZF09bnVsbH0pLGF9fSx7a2V5OiJnZXRS''@;'; put 'put ''b3dJbmRleCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/bnVsbDp0aGlzLmNhY2hlLm5vZGVJbmZvLmdldChhKS5yb3d9fSx7a2V5OiJnZXRSb3dJbmRleFdpdGhpblBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY7Zj1pc05hTihhKT9hOnRoaXMuZ2V0RGF0YU9iamVj''@;'; put 'put ''dChhKTt2YXIgZD10aGlzLmdldFJvd1BhcmVudChhKTtyZXR1cm4gbnVsbD09ZD90aGlzLmRhdGEuaW5kZXhPZihmKTpkLl9fY2hpbGRyZW4uaW5kZXhPZihmKX19LHtrZXk6ImNvdW50QWxsUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb3VudENoaWxkcmVuKHtfX2NoaWxk''@;'; put 'put ''cmVuOnRoaXMuZGF0YX0pfX0se2tleToiY291bnRDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxkPTAsaD1hO3JldHVybiBpc05hTihoKXx8KGg9dGhpcy5nZXREYXRhT2JqZWN0KGgpKSxoJiZoLl9fY2hpbGRyZW4/KFJuKGguX19jaGlsZHJlbixmdW5jdGlvbihtKXtk''@;'; put 'put ''Kz0xLG0uX19jaGlsZHJlbiYmKGQrPWYuY291bnRDaGlsZHJlbihtKSl9KSxkKTowfX0se2tleToiZ2V0Um93UGFyZW50Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZjtyZXR1cm4gZj1pc05hTihhKT9hOnRoaXMuZ2V0RGF0YU9iamVjdChhKSx0aGlzLmdldFJvd09iamVjdFBhcmVudChmKX19''@;'; put 'put ''LHtrZXk6ImdldFJvd09iamVjdFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJiJvYmplY3QiPT09bWIoYSk/dGhpcy5jYWNoZS5ub2RlSW5mby5nZXQoYSkucGFyZW50Om51bGx9fSx7a2V5OiJnZXRSb3dMZXZlbCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGY7cmV0dXJuKGY9''@;'; put 'put ''aXNOYU4oYSk/YTp0aGlzLmdldERhdGFPYmplY3QoYSkpP3RoaXMuZ2V0Um93T2JqZWN0TGV2ZWwoZik6bnVsbH19LHtrZXk6ImdldFJvd09iamVjdExldmVsIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9udWxsOnRoaXMuY2FjaGUubm9kZUluZm8uZ2V0KGEpLmxldmVsfX0s''@;'; put 'put ''e2tleToiaGFzQ2hpbGRyZW4iLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPWE7cmV0dXJuIGlzTmFOKGYpfHwoZj10aGlzLmdldERhdGFPYmplY3QoZikpLCEoIWYuX19jaGlsZHJlbnx8IWYuX19jaGlsZHJlbi5sZW5ndGgpfX0se2tleToiaXNDaGlsZCIsdmFsdWU6ZnVuY3Rpb24oYSl7cmV0''@;'; put 'put ''dXJuIG51bGwhPT10aGlzLmdldFJvd1BhcmVudChhKX19LHtrZXk6ImdldENoaWxkIix2YWx1ZTpmdW5jdGlvbihhLGYpe3ZhciBkO3JldHVybihudWxsPT09KGQ9YS5fX2NoaWxkcmVuKXx8dm9pZCAwPT09ZD92b2lkIDA6ZFtmXSl8fG51bGx9fSx7a2V5OiJpc1Jvd0hpZ2hlc3RMZXZlbCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMuaXNDaGlsZChhKX19LHtrZXk6ImlzUGFyZW50Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZixkPWE7cmV0dXJuIGlzTmFOKGQpfHwoZD10aGlzLmdldERhdGFPYmplY3QoZCkpLGQmJiEhZC5fX2NoaWxkcmVuJiYwIT09KG51bGw9PT0oZj1k''@;'; put 'put ''Ll9fY2hpbGRyZW4pfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLmxlbmd0aCl9fSx7a2V5OiJhZGRDaGlsZCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD1mO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVBZGRDaGlsZCIsYSxkKTt2YXIgaD1udWxsO2EmJihoPXRoaXMuZ2V0Um93SW5kZXgoYSkp''@;'; put 'put ''LHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLGgrdGhpcy5jb3VudENoaWxkcmVuKGEpKzEsMSk7dmFyIG09YTthfHwobT10aGlzLm1vY2tQYXJlbnQoKSksbS5fX2NoaWxkcmVufHwobS5fX2NoaWxkcmVuPVtdKSxkfHwoZD10aGlzLm1vY2tOb2RlKCkpLG0uX19jaGlsZHJl''@;'; put 'put ''bi5wdXNoKGQpLHRoaXMucmV3cml0ZUNhY2hlKCk7dmFyIF89dGhpcy5nZXRSb3dJbmRleChkKTt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5pbnNlcnRJbmRleGVzKF8sMSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixfLDEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckFk''@;'; put 'put ''ZENoaWxkIixhLGQpfX0se2tleToiYWRkQ2hpbGRBdEluZGV4Iix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7dmFyIG0saD1kO2lmKGh8fChoPXRoaXMubW9ja05vZGUoKSksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUFkZENoaWxkIixhLGgsZiksYSl7dmFyIE89dGhpcy5nZXRSb3dJbmRleChh''@;'; put 'put ''KStmKzE7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsTywxKSxhLl9fY2hpbGRyZW4uc3BsaWNlKGYsbnVsbCxoKSx0aGlzLnJld3JpdGVDYWNoZSgpLHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3Quc2V0U291cmNlRGF0YUF0Q2VsbCh0''@;'; put 'put ''aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGEpLCJfX2NoaWxkcmVuIixhLl9fY2hpbGRyZW4sIk5lc3RlZFJvd3MuYWRkQ2hpbGRBdEluZGV4IiksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhPLDEpLHRoaXMucGx1Z2luLmVuYWJsZUNvcmVBUElNb2RpZmllcnMo''@;'; put 'put ''KSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLE8sMSksbT1PfWVsc2UgdGhpcy5wbHVnaW4uZGlzYWJsZUNvcmVBUElNb2RpZmllcnMoKSx0aGlzLmhvdC5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsZiwxLCJOZXN0ZWRSb3dzLmFkZENoaWxkQXRJbmRleCIpLHRoaXMucGx1''@;'; put 'put ''Z2luLmVuYWJsZUNvcmVBUElNb2RpZmllcnMoKSxtPXRoaXMuZ2V0Um93SW5kZXgodGhpcy5kYXRhW2ZdKTtoPXRoaXMuZ2V0RGF0YU9iamVjdChtKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJBZGRDaGlsZCIsYSxoLGYpfX0se2tleToiYWRkU2libGluZyIsdmFsdWU6ZnVuY3Rpb24oYSl7''@;'; put 'put ''dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJiZWxvdyIsZD10aGlzLnRyYW5zbGF0ZVRyaW1tZWRSb3coYSksaD10aGlzLmdldFJvd1BhcmVudChkKSxtPXRoaXMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoZCk7c3dpdGNoKGYp''@;'; put 'put ''e2Nhc2UiYmVsb3ciOnRoaXMuYWRkQ2hpbGRBdEluZGV4KGgsbSsxLG51bGwpO2JyZWFrO2Nhc2UiYWJvdmUiOnRoaXMuYWRkQ2hpbGRBdEluZGV4KGgsbSxudWxsKX19fSx7a2V5OiJkZXRhY2hGcm9tUGFyZW50Iix2YWx1ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGQ9IShhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxoPW51bGwsbT1bXTtBcnJheS5pc0FycmF5KGEpPyhfbyhhWzBdLGFbMl0sZnVuY3Rpb24oZHQpe3ZhciBndD1mLnRyYW5zbGF0ZVRyaW1tZWRSb3coZHQpO20ucHVzaChmLmdldERhdGFPYmplY3QoZ3QpKX0p''@;'; put 'put ''LF9vKDAsbS5sZW5ndGgtMixmdW5jdGlvbihkdCl7Zi5kZXRhY2hGcm9tUGFyZW50KG1bZHRdLCExKX0pLGg9bVttLmxlbmd0aC0xXSk6aD1hO3ZhciBfPXRoaXMuZ2V0Um93SW5kZXgoaCksTz10aGlzLmNvdW50Q2hpbGRyZW4oaCksWD10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGgp''@;'; put 'put ''LGFlPXRoaXMuZ2V0Um93UGFyZW50KGgpLHBlPXRoaXMuZ2V0Um93UGFyZW50KGFlKSxiZT10aGlzLmdldFJvd0luZGV4KHBlKSx4ZT1udWxsO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVEZXRhY2hDaGlsZCIsYWUsaCksbnVsbCE9WCl7dmFyIFZlPUFycmF5LmZyb20obmV3IEFycmF5''@;'; put 'put ''KF8rTysxKS5rZXlzKCkpLnNwbGljZSgtMSooTysxKSk7aWYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJlbW92ZVJvdyIsXyxPKzEsVmUsdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSksYWUuX19jaGlsZHJlbi5zcGxpY2UoWCwxKSx0aGlzLnJld3JpdGVDYWNoZSgpLHRoaXMuaG90LnJ1bkhv''@;'; put 'put ''b2tzKCJhZnRlclJlbW92ZVJvdyIsXyxPKzEsVmUsdGhpcy5wbHVnaW4ucGx1Z2luTmFtZSkscGUpe3hlPWJlK3RoaXMuY291bnRDaGlsZHJlbihwZSk7dmFyIFplPXRoaXMuZ2V0Q2hpbGQocGUsdGhpcy5jb3VudENoaWxkcmVuKHBlKS0xKSxsdD10aGlzLmdldFJvd0luZGV4KFplKTt0aGlz''@;'; put 'put ''LmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlUm93IixsdCsxLE8rMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSxwZS5fX2NoaWxkcmVuLnB1c2goaCl9ZWxzZSB4ZT10aGlzLmhvdC5jb3VudFJvd3MoKSsxLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLHhlLTIsTysxLHRo''@;'; put 'put ''aXMucGx1Z2luLnBsdWdpbk5hbWUpLHRoaXMuZGF0YS5wdXNoKGgpfXRoaXMucmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93Iix4ZS0yLE8rMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEZXRhY2hDaGlsZCIs''@;'; put 'put ''YWUsaCx0aGlzLmdldFJvd0luZGV4KGgpKSxkJiZ0aGlzLmhvdC5yZW5kZXIoKX19LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD10aGlzLG09W107Um4oZCxmdW5jdGlvbihfKXttLnB1c2goaC5nZXREYXRhT2JqZWN0KF8pKX0pLFJuKG0sZnVuY3Rpb24o''@;'; put 'put ''Xyl7dmFyIE89aC5nZXRSb3dJbmRleFdpdGhpblBhcmVudChfKSxYPWguZ2V0Um93UGFyZW50KF8pO251bGw9PT1YP2guZGF0YS5zcGxpY2UoTywxKTpYLl9fY2hpbGRyZW4uc3BsaWNlKE8sMSl9KSx0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3BsaWNlRGF0YSIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oYSxmLGQpe3ZhciBoPXRoaXMuZ2V0RGF0YU9iamVjdChhLTEpLG09bnVsbCxfPWE7aWYoaCYmaC5fX2NoaWxkcmVuJiYwPT09aC5fX2NoaWxkcmVuLmxlbmd0aD8obT1oLF89MCk6YTx0aGlzLmNvdW50QWxsUm93cygpJiYobT10aGlzLmdldFJvd1BhcmVudChhKSxfPXRoaXMuZ2V0Um93''@;'; put 'put ''SW5kZXhXaXRoaW5QYXJlbnQoYSkpLG0paWYoZCl7dmFyIE87KE89bS5fX2NoaWxkcmVuKS5zcGxpY2UuYXBwbHkoTyxbXyxmXS5jb25jYXQoczVlKGQpKSl9ZWxzZSBtLl9fY2hpbGRyZW4uc3BsaWNlKF8sZik7ZWxzZSBpZihkKXt2YXIgWDsoWD10aGlzLmRhdGEpLnNwbGljZS5hcHBseShY''@;'; put 'put ''LFtfLGZdLmNvbmNhdChzNWUoZCkpKX1lbHNlIHRoaXMuZGF0YS5zcGxpY2UoXyxmKTt0aGlzLnJld3JpdGVDYWNoZSgpfX0se2tleToic3luY1Jvd1dpdGhSYXdTb3VyY2UiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBmPWEsZD1udWxsO2Rve251bGwhPT0oZD10aGlzLmdldFJvd1BhcmVudChk''@;'; put 'put ''KSkmJihmPWQpfXdoaWxlKG51bGwhPT1kKTt0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENlbGwodGhpcy5nZXRSb3dJbmRleChmKSwiX19jaGlsZHJlbiIsZi5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dzLnN5bmNSb3dXaXRoUmF3''@;'; put 'put ''U291cmNlIiksdGhpcy5wbHVnaW4uZW5hYmxlQ29yZUFQSU1vZGlmaWVycygpfX0se2tleToibW92ZVJvdyIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCl7dmFyIG09Zj09PXRoaXMuaG90LmNvdW50Um93cygpLF89dGhpcy5nZXRSb3dQYXJlbnQoYSksTz10aGlzLmdldFJvd0luZGV4V2l0aGlu''@;'; put 'put ''UGFyZW50KGEpLFg9Xy5fX2NoaWxkcmVuLnNsaWNlKE8sTysxKSxhZT1hPmYscGU9dGhpcy5nZXRSb3dQYXJlbnQobT9mLTE6Zik7bnVsbD09cGUmJihwZT10aGlzLmdldFJvd1BhcmVudChmLTEpKSxudWxsPT1wZSYmKHBlPXRoaXMuZ2V0RGF0YU9iamVjdChmLTEpKSxwZT9wZS5fX2NoaWxk''@;'; put 'put ''cmVufHwocGUuX19jaGlsZHJlbj1bXSk6KHBlPXRoaXMuZ2V0RGF0YU9iamVjdChmKSkuX19jaGlsZHJlbj1bXTt2YXIgYmU9bXx8ZHx8aD9wZS5fX2NoaWxkcmVuLmxlbmd0aDp0aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGYpLHhlPV89PT1wZTtwZS5fX2NoaWxkcmVuLnNwbGljZShi''@;'; put 'put ''ZSwwLFhbMF0pLF8uX19jaGlsZHJlbi5zcGxpY2UoTysoYWUmJnhlPzE6MCksMSksdGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShfKSx4ZXx8dGhpcy5zeW5jUm93V2l0aFJhd1NvdXJjZShwZSl9fSx7a2V5OiJ0cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJP3RoaXMucGx1Z2luLmNvbGxhcHNpbmdVSS50cmFuc2xhdGVUcmltbWVkUm93KGEpOmF9fSx7a2V5OiJ1bnRyYW5zbGF0ZVRyaW1tZWRSb3ciLHZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBsdWdpbi5jb2xsYXBzaW5nVUk/dGhpcy5wbHVn''@;'; put 'put ''aW4uY29sbGFwc2luZ1VJLnVudHJhbnNsYXRlVHJpbW1lZFJvdyhhKTphfX1dKSxsfSgpO2NvbnN0IEl3dD1Ed3Q7ZnVuY3Rpb24gUEUobCl7cmV0dXJuKFBFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3Jl''@;'; put 'put ''dHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gYzVlKGwsYyl7Zm9yKHZhciBhPTA7YTxj''@;'; put 'put ''Lmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxMd3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBSd3QobCxjLGEpe3JldHVy''@;'; put 'put ''biBjJiZjNWUobC5wcm90b3R5cGUsYyksYSYmYzVlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksbH1mdW5jdGlvbiBMd3QobCl7dmFyIGM9ZnVuY3Rpb24gUHd0KGwsYyl7aWYoIm9iamVjdCIhPT1QRShsKXx8bnVsbD09PWwpcmV0dXJu''@;'; put 'put ''IGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1QRShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZh''@;'; put 'put ''bHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09UEUoYyk/YzpTdHJpbmcoYyl9dmFyIEh3dD1Sd3QoZnVuY3Rpb24gbChjLGEpeyhmdW5jdGlvbiBGd3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsbCksdGhpcy5ob3Q9YSx0aGlzLnBsdWdpbj1jfSk7Y29uc3QgWFg9SHd0O2Z1bmN0aW9uIGdiKGwpe3JldHVybihnYj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30p''@;'; put 'put ''KGwpfWZ1bmN0aW9uIGY1ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsQnd0''@;'; put 'put ''KGYua2V5KSxmKX19ZnVuY3Rpb24gQnd0KGwpe3ZhciBjPWZ1bmN0aW9uIGp3dChsLGMpe2lmKCJvYmplY3QiIT09Z2IobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lm''@;'; put 'put ''KCJvYmplY3QiIT09Z2IoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PWdi''@;'; put 'put ''KGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIEpYKGwsYyl7cmV0dXJuKEpYPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gTFAobCl7cmV0dXJuKExQPU9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIEd3dD1mdW5jdGlvbihsKXshZnVuY3Rpb24gend0KGwsYyl7aWYoImZ1bmN0aW9uIiE9''@;'; put 'put ''dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6''@;'; put 'put ''ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJkpYKGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gVXd0KGwpe3ZhciBjPWZ1bmN0aW9uIFd3dCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3Qu''@;'; put 'put ''Y29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkp''@;'; put 'put ''LCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUxQKGwpO2lmKGMpe3ZhciBoPUxQKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBad3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1nYihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gWXd0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYsZCl7''@;'; put 'put ''dmFyIGg7cmV0dXJuIGZ1bmN0aW9uIE53dChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChoPWMuY2FsbCh0aGlzLGYsZCkpLmRhdGFNYW5hZ2VyPWgucGx1Z2luLmRhdGFN''@;'; put 'put ''YW5hZ2VyLGguY29sbGFwc2luZ1VJPWgucGx1Z2luLmNvbGxhcHNpbmdVSSxoLnJvd0hlYWRlcldpZHRoQ2FjaGU9bnVsbCxofXJldHVybiBmdW5jdGlvbiBWd3QobCxjLGEpe2MmJmY1ZShsLnByb3RvdHlwZSxjKSxhJiZmNWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90''@;'; put 'put ''eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiYXBwZW5kTGV2ZWxJbmRpY2F0b3JzIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPXRoaXMuaG90LnRvUGh5c2ljYWxSb3coZCksXz10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0xldmVsKG0pLE89dGhpcy5kYXRhTWFuYWdlci5nZXREYXRh''@;'; put 'put ''T2JqZWN0KG0pLFg9aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiRElWIilbMF0sYWU9WC5xdWVyeVNlbGVjdG9yKCJzcGFuLnJvd0hlYWRlciIpO2lmKFJuKFgucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzXj0iaHRfbmVzdGluZyJdJyksZnVuY3Rpb24oWmUpe1plJiZYLnJlbW92ZUNoaWxkKFpl''@;'; put 'put ''KX0pLGdpKGgsYS5DU1NfQ0xBU1NFUy5pbmRpY2F0b3JDb250YWluZXIpLF8pe3ZhciBiZT10aGlzLmhvdC5yb290RG9jdW1lbnQseGU9YWUuY2xvbmVOb2RlKCEwKTtYLmlubmVySFRNTD0iIixfbygwLF8tMSxmdW5jdGlvbigpe3ZhciBaZT1iZS5jcmVhdGVFbGVtZW50KCJTUEFOIik7Z2ko''@;'; put 'put ''WmUsYS5DU1NfQ0xBU1NFUy5lbXB0eUluZGljYXRvciksWC5hcHBlbmRDaGlsZChaZSl9KSxYLmFwcGVuZENoaWxkKHhlKX1pZih0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKE8pKXt2YXIgVmU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO2dpKGgsYS5D''@;'; put 'put ''U1NfQ0xBU1NFUy5wYXJlbnQpLHRoaXMuY29sbGFwc2luZ1VJLmFyZUNoaWxkcmVuQ29sbGFwc2VkKG0pP2dpKFZlLCIiLmNvbmNhdChhLkNTU19DTEFTU0VTLmJ1dHRvbiwiICIpLmNvbmNhdChhLkNTU19DTEFTU0VTLmV4cGFuZEJ1dHRvbikpOmdpKFZlLCIiLmNvbmNhdChhLkNTU19DTEFT''@;'; put 'put ''U0VTLmJ1dHRvbiwiICIpLmNvbmNhdChhLkNTU19DTEFTU0VTLmNvbGxhcHNlQnV0dG9uKSksWC5hcHBlbmRDaGlsZChWZSl9fX0se2tleToidXBkYXRlUm93SGVhZGVyV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPWQ7aHx8KGg9dGhpcy5kYXRhTWFuYWdlci5jYWNoZS5sZXZlbENv''@;'; put 'put ''dW50KSx0aGlzLnJvd0hlYWRlcldpZHRoQ2FjaGU9TWF0aC5tYXgoNTAsMTErMTAqaCsyNSksdGhpcy5ob3QucmVuZGVyKCl9fV0sW3trZXk6IkNTU19DTEFTU0VTIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5kaWNhdG9yQ29udGFpbmVyOiJodF9uZXN0aW5nTGV2ZWxzIixwYXJlbnQ6Imh0''@;'; put 'put ''X25lc3RpbmdQYXJlbnQiLGluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsIixlbXB0eUluZGljYXRvcjoiaHRfbmVzdGluZ0xldmVsX2VtcHR5IixidXR0b246Imh0X25lc3RpbmdCdXR0b24iLGV4cGFuZEJ1dHRvbjoiaHRfbmVzdGluZ0V4cGFuZCIsY29sbGFwc2VCdXR0b246Imh0X25lc3Rp''@;'; put 'put ''bmdDb2xsYXBzZSJ9fX1dKSxhfShYWCk7Y29uc3QgZDVlPUd3dDtmdW5jdGlvbiB2YihsKXtyZXR1cm4odmI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXty''@;'; put 'put ''ZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBoNWUobCl7cmV0dXJuIGZ1bmN0aW9uIFh3dChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJl''@;'; put 'put ''dHVybiBRWChsKX0obCl8fGZ1bmN0aW9uIHF3dChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBLd3QobCxjKXtpZihsKXtpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGwpcmV0dXJuIFFYKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXku''@;'; put 'put ''ZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBRWChsLGMpfX0obCl8fGZ1bmN0aW9uICR3dCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9u''@;'; put 'put ''LWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFFYKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9y''@;'; put 'put ''KHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gcDVlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImlu''@;'; put 'put ''IGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxlQ3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBlQ3QobCl7dmFyIGM9ZnVuY3Rpb24gdEN0KGwsYyl7aWYoIm9iamVjdCIhPT12YihsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVd''@;'; put 'put ''O2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT12YihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3Ry''@;'; put 'put ''aW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dmIoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gZUoobCxjKXtyZXR1cm4oZUo9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5f''@;'; put 'put ''X3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBQUChsKXtyZXR1cm4oUFA9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgbEN0''@;'; put 'put ''PWZ1bmN0aW9uKGwpeyFmdW5jdGlvbiBuQ3QobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl''@;'; put 'put ''KGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZUoobCxjKX0oYSxsKTt2YXIgYz1mdW5jdGlvbiByQ3QobCl7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gYUN0KCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5j''@;'; put 'put ''YWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9UFAobCk7aWYoYyl7dmFyIGg9UFAodGhpcykuY29uc3RydWN0b3I7ZD1SZWZsZWN0LmNvbnN0cnVjdChmLGFyZ3VtZW50''@;'; put 'put ''cyxoKX1lbHNlIGQ9Zi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uIGlDdChsLGMpe2lmKGMmJigib2JqZWN0Ij09PXZiKGMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYykpcmV0dXJuIGM7aWYodm9pZCAwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0''@;'; put 'put ''cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbiBvQ3QobCl7aWYodm9pZCAwPT09bCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxl''@;'; put 'put ''ZCIpO3JldHVybiBsfShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZixkKXt2YXIgaDtyZXR1cm4gZnVuY3Rpb24gSnd0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSks''@;'; put 'put ''KGg9Yy5jYWxsKHRoaXMsZixkKSkuZGF0YU1hbmFnZXI9aC5wbHVnaW4uZGF0YU1hbmFnZXIsaC5jb2xsYXBzZWRSb3dzPVtdLGguY29sbGFwc2VkUm93c1N0YXNoPXtzdGFzaDpmdW5jdGlvbigpe3ZhciBfPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1''@;'; put 'put ''bWVudHNbMF07aC5sYXN0Q29sbGFwc2VkUm93cz1oLmNvbGxhcHNlZFJvd3Muc2xpY2UoMCksaC5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKGgubGFzdENvbGxhcHNlZFJvd3MsXyl9LHNoaWZ0U3Rhc2g6ZnVuY3Rpb24oXyxPKXt2YXIgWD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1syXT9hcmd1bWVudHNbMl06MTtudWxsPT1PJiYoTz0xLzApLFJuKGgubGFzdENvbGxhcHNlZFJvd3MsZnVuY3Rpb24oYWUscGUpe2FlPj1fJiZhZTxPJiYoaC5sYXN0Q29sbGFwc2VkUm93c1twZV09YWUrWCl9KX0sYXBwbHlTdGFzaDpmdW5jdGlvbigpe2guY29sbGFwc2VNdWx0''@;'; put 'put ''aXBsZUNoaWxkcmVuKGgubGFzdENvbGxhcHNlZFJvd3MsIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSksaC5sYXN0Q29sbGFwc2VkUm93cz12b2lkIDB9LHRyaW1TdGFzaDpmdW5jdGlvbihfLE8pe19vKF8sXytPLTEsZnVuY3Rpb24o''@;'; put 'put ''WCl7dmFyIGFlPWgubGFzdENvbGxhcHNlZFJvd3MuaW5kZXhPZihYKTthZT4tMSYmaC5sYXN0Q29sbGFwc2VkUm93cy5zcGxpY2UoYWUsMSl9KX19LGh9cmV0dXJuIGZ1bmN0aW9uIFF3dChsLGMsYSl7YyYmcDVlKGwucHJvdG90eXBlLGMpLGEmJnA1ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJjb2xsYXBzZUNoaWxkcmVuIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgcGUsaD10aGlzLG09IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxfPSEoYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sTz1bXSxYPW51bGwsYWU9bnVsbDtyZXR1cm4gaXNOYU4oZCk/YWU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChYPWQpOihYPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChkKSxhZT1k''@;'; put 'put ''KSx0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKFgpJiZSbihYLl9fY2hpbGRyZW4sZnVuY3Rpb24oYmUpe08ucHVzaChoLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KGJlKSl9KSxwZT10aGlzLmNvbGxhcHNlUm93cyhPLCEwLCExKSxfJiZ0aGlzLnRyaW1Sb3dzKHBlKSxtJiZ0aGlzLnJl''@;'; put 'put ''bmRlckFuZEFkanVzdCgpLC0xPT09dGhpcy5jb2xsYXBzZWRSb3dzLmluZGV4T2YoYWUpJiZ0aGlzLmNvbGxhcHNlZFJvd3MucHVzaChhZSkscGV9fSx7a2V5OiJjb2xsYXBzZU11bHRpcGxlQ2hpbGRyZW4iLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT0hKGFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLF89IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxPPVtdO1JuKGQsZnVuY3Rpb24oWCl7Ty5wdXNoLmFwcGx5KE8saDVlKGguY29sbGFwc2VDaGlsZHJlbihY''@;'; put 'put ''LCExLCExKSkpfSksXyYmdGhpcy50cmltUm93cyhPKSxtJiZ0aGlzLnJlbmRlckFuZEFkanVzdCgpfX0se2tleToiY29sbGFwc2VSb3ciLHZhbHVlOmZ1bmN0aW9uKGQpe3RoaXMuY29sbGFwc2VSb3dzKFtkXSwhKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8''@;'; put 'put ''YXJndW1lbnRzWzFdKX19LHtrZXk6ImNvbGxhcHNlUm93cyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sXz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1syXSYmYXJndW1lbnRzWzJdLE89W107cmV0dXJuIFJuKGQsZnVuY3Rpb24oWCl7Ty5wdXNoKFgpLG0mJmguY29sbGFwc2VDaGlsZFJvd3MoWCxPKX0pLF8mJnRoaXMudHJpbVJvd3MoTyksT319LHtrZXk6ImNvbGxhcHNlQ2hpbGRSb3dzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlz''@;'; put 'put ''LG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLE89YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTt0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGQpJiZSbih0aGlzLmRhdGFN''@;'; put 'put ''YW5hZ2VyLmdldERhdGFPYmplY3QoZCkuX19jaGlsZHJlbixmdW5jdGlvbihhZSl7dmFyIHBlPWguZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoYWUpO20ucHVzaChwZSksaC5jb2xsYXBzZUNoaWxkUm93cyhwZSxtKX0pLE8mJnRoaXMudHJpbVJvd3MobSl9fSx7a2V5OiJleHBhbmRSb3ciLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKGQpe3RoaXMuZXhwYW5kUm93cyhbZF0sIShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSl9fSx7a2V5OiJleHBhbmRSb3dzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09IShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxfPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sTz1bXTtyZXR1cm4gUm4oZCxmdW5jdGlvbihYKXtPLnB1c2goWCksbSYmaC5leHBhbmRDaGlsZFJvd3MoWCxPKX0p''@;'; put 'put ''LF8mJnRoaXMudW50cmltUm93cyhPKSxPfX0se2tleToiZXhwYW5kQ2hpbGRSb3dzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzLG09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLE89YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTt0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGQpJiZSbih0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZCkuX19jaGlsZHJlbixmdW5jdGlvbihhZSl7aWYoIWguaXNBbnlQYXJlbnRDb2xsYXBzZWQoYWUpKXt2YXIgcGU9''@;'; put 'put ''aC5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChhZSk7bS5wdXNoKHBlKSxoLmV4cGFuZENoaWxkUm93cyhwZSxtKX19KSxPJiZ0aGlzLnVudHJpbVJvd3MobSl9fSx7a2V5OiJleHBhbmRDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIHBlLGg9dGhpcyxtPSEoYXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sXz0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLE89W10sWD1udWxsLGFlPW51bGw7cmV0dXJuIGlzTmFOKGQpPyhYPWQsYWU9dGhpcy5kYXRhTWFuYWdlci5n''@;'; put 'put ''ZXRSb3dJbmRleChkKSk6KFg9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGQpLGFlPWQpLHRoaXMuY29sbGFwc2VkUm93cy5zcGxpY2UodGhpcy5jb2xsYXBzZWRSb3dzLmluZGV4T2YoYWUpLDEpLHRoaXMuZGF0YU1hbmFnZXIuaGFzQ2hpbGRyZW4oWCkmJlJuKFguX19jaGlsZHJl''@;'; put 'put ''bixmdW5jdGlvbihiZSl7dmFyIHhlPWguZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoYmUpO08ucHVzaCh4ZSl9KSxwZT10aGlzLmV4cGFuZFJvd3MoTywhMCwhMSksXyYmdGhpcy51bnRyaW1Sb3dzKHBlKSxtJiZ0aGlzLnJlbmRlckFuZEFkanVzdCgpLHBlfX0se2tleToiZXhwYW5kTXVsdGlw''@;'; put 'put ''bGVDaGlsZHJlbiIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sXz0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLE89''@;'; put 'put ''W107Um4oZCxmdW5jdGlvbihYKXtPLnB1c2guYXBwbHkoTyxoNWUoaC5leHBhbmRDaGlsZHJlbihYLCExLCExKSkpfSksXyYmdGhpcy51bnRyaW1Sb3dzKE8pLG0mJnRoaXMucmVuZGVyQW5kQWRqdXN0KCl9fSx7a2V5OiJjb2xsYXBzZUFsbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlz''@;'; put 'put ''LGg9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhKCksbT1bXTtSbihoLGZ1bmN0aW9uKF8pe2QuZGF0YU1hbmFnZXIuaGFzQ2hpbGRyZW4oXykmJm0ucHVzaChfKX0pLHRoaXMuY29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuKG0pLHRoaXMucmVuZGVyQW5kQWRqdXN0KCl9fSx7a2V5OiJleHBhbmRB''@;'; put 'put ''bGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpLG09W107Um4oaCxmdW5jdGlvbihfKXtkLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKF8pJiZtLnB1c2goXyl9KSx0aGlzLmV4cGFuZE11bHRpcGxlQ2hpbGRyZW4obSksdGhpcy5yZW5k''@;'; put 'put ''ZXJBbmRBZGp1c3QoKX19LHtrZXk6InRyaW1Sb3dzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Um4oZCxmdW5jdGlvbihtKXtoLnBsdWdpbi5jb2xsYXBzZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleChtLCEwKX0pfSwh''@;'; put 'put ''MCl9fSx7a2V5OiJ1bnRyaW1Sb3dzIix2YWx1ZTpmdW5jdGlvbihkKXt2YXIgaD10aGlzO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Um4oZCxmdW5jdGlvbihtKXtoLnBsdWdpbi5jb2xsYXBzZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleChtLCExKX0pfSwhMCl9fSx7a2V5''@;'; put 'put ''OiJhcmVDaGlsZHJlbkNvbGxhcHNlZCIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPWlzTmFOKGQpP2Q6dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGQpLF89ITA7cmV0dXJuIG51bGw9PT1tJiYobT17X19jaGlsZHJlbjp0aGlzLmRhdGFNYW5hZ2VyLmRhdGF9KSx0aGlz''@;'; put 'put ''LmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKG0pJiZSbihtLl9fY2hpbGRyZW4sZnVuY3Rpb24oTyl7dmFyIFg9aC5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChPKTtpZighaC5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5nZXRWYWx1ZUF0SW5kZXgoWCkpcmV0dXJuIF89ITEsITF9KSxffX0se2tl''@;'; put 'put ''eToiaXNBbnlQYXJlbnRDb2xsYXBzZWQiLHZhbHVlOmZ1bmN0aW9uKGQpe2Zvcih2YXIgaD1kO251bGwhPT1oOyl7aD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChoKTt2YXIgbT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KGgpO2lmKHRoaXMuY29sbGFwc2VkUm93cy5pbmRl''@;'; put 'put ''eE9mKG0pPi0xKXJldHVybiEwfXJldHVybiExfX0se2tleToidG9nZ2xlU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7aWYoIShoLmNvbD49MCkpe3ZhciBtPXRoaXMudHJhbnNsYXRlVHJpbW1lZFJvdyhoLnJvdyk7WW8oZC50YXJnZXQsZDVlLkNTU19DTEFTU0VTLmJ1dHRvbikmJih0aGlz''@;'; put 'put ''LmFyZUNoaWxkcmVuQ29sbGFwc2VkKG0pP3RoaXMuZXhwYW5kQ2hpbGRyZW4obSk6dGhpcy5jb2xsYXBzZUNoaWxkcmVuKG0pLEhkKGQpKX19fSx7a2V5OiJ0cmFuc2xhdGVUcmltbWVkUm93Iix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5ob3QudG9QaHlzaWNhbFJvdyhkKX19LHtr''@;'; put 'put ''ZXk6InVudHJhbnNsYXRlVHJpbW1lZFJvdyIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuaG90LnRvVmlzdWFsUm93KGQpfX0se2tleToicmVuZGVyQW5kQWRqdXN0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaG90LnJlbmRlcigpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCl9fV0pLGF9KFhYKTtjb25zdCBzQ3Q9bEN0O2Z1bmN0aW9uIHliKGwpe3JldHVybih5Yj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBj''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIG01ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJs''@;'; put 'put ''ZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsZkN0KGYua2V5KSxmKX19ZnVuY3Rpb24gZkN0KGwpe3ZhciBjPWZ1bmN0aW9uIGRDdChsLGMpe2lmKCJvYmplY3QiIT09eWIobCl8''@;'; put 'put ''fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09eWIoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVy''@;'; put 'put ''biBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXliKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIHRKKGwsYyl7cmV0dXJuKHRKPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Qu''@;'; put 'put ''c2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gZzVlKGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNu''@;'; put 'put ''J3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH1mdW5jdGlvbiBGUChsKXtyZXR1cm4oRlA9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX12''@;'; put 'put ''YXIgdjVlPW5ldyBXZWFrTWFwLHZDdD1mdW5jdGlvbihsKXshZnVuY3Rpb24gaEN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5w''@;'; put 'put ''cm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnRKKGwsYyl9KGEsbCk7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gcEN0KGwpe3ZhciBjPWZ1bmN0aW9uIGdDdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xl''@;'; put 'put ''YW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPUZQKGwpO2lmKGMpe3ZhciBoPUZQKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBtQ3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT15YihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZzVlKGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmLGQpe3ZhciBoO3JldHVybiBmdW5jdGlvbiB1Q3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSxoPWMuY2FsbCh0aGlzLGYsZCksdjVlLnNldChnNWUoaCkse3Jvd19hYm92ZTpmdW5jdGlvbihfLE8pe2guZGF0YU1hbmFnZXIuYWRkU2libGluZyhPW08ubGVuZ3RoLTFdLnN0''@;'; put 'put ''YXJ0LnJvdywiYWJvdmUiKX0scm93X2JlbG93OmZ1bmN0aW9uKF8sTyl7aC5kYXRhTWFuYWdlci5hZGRTaWJsaW5nKE9bTy5sZW5ndGgtMV0uc3RhcnQucm93LCJiZWxvdyIpfX0pLGguZGF0YU1hbmFnZXI9aC5wbHVnaW4uZGF0YU1hbmFnZXIsaH1yZXR1cm4gZnVuY3Rpb24gY0N0KGwsYyxh''@;'; put 'put ''KXtjJiZtNWUobC5wcm90b3R5cGUsYyksYSYmbTVlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImFwcGVuZE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT1be2tleToiYWRkX2NoaWxkIixuYW1l''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShHRyl9LGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIE89aC5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGguaG90LmdldFNlbGVjdGVkTGFzdCgpWzBdKSxYPWguZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVj''@;'; put 'put ''dChPKTtoLmRhdGFNYW5hZ2VyLmFkZENoaWxkKFgpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3ZhciBPPWguaG90LmdldFNlbGVjdGVkTGFzdCgpO3JldHVybiFPfHxPWzBdPDB8fGguaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8aC5ob3QuY291bnRSb3dzKCk+PWgu''@;'; put 'put ''aG90LmdldFNldHRpbmdzKCkubWF4Um93c319LHtrZXk6ImRldGFjaF9mcm9tX3BhcmVudCIsbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoJEcpfSxjYWxsYmFjazpmdW5jdGlvbigpe2guZGF0YU1hbmFnZXIuZGV0YWNoRnJvbVBhcmVudChoLmhvdC5n''@;'; put 'put ''ZXRTZWxlY3RlZExhc3QoKSl9LGRpc2FibGVkOmZ1bmN0aW9uKCl7dmFyIE89aC5ob3QuZ2V0U2VsZWN0ZWRMYXN0KCksWD1oLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coT1swXSk7cmV0dXJuIWguZGF0YU1hbmFnZXIuZ2V0Um93UGFyZW50KFgpfHwhT3x8T1swXTwwfHxoLmhv''@;'; put 'put ''dC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fGguaG90LmNvdW50Um93cygpPj1oLmhvdC5nZXRTZXR0aW5ncygpLm1heFJvd3N9fSx7bmFtZToiLS0tLS0tLS0tIn1dO3JldHVybiBfbygwLGQuaXRlbXMubGVuZ3RoLTEsZnVuY3Rpb24oXyl7aWYoMD09PV8pcmV0dXJu''@;'; put 'put ''IFJuKG0sZnVuY3Rpb24oTyxYKXtkLml0ZW1zLnNwbGljZShfK1gsMCxPKX0pLCExfSksdGhpcy5tb2RpZnlSb3dJbnNlcnRpbmdPcHRpb25zKGQpfX0se2tleToibW9kaWZ5Um93SW5zZXJ0aW5nT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9djVlLmdldCh0aGlzKTtyZXR1cm4g''@;'; put 'put ''X28oMCxkLml0ZW1zLmxlbmd0aC0xLGZ1bmN0aW9uKG0pe3ZhciBfPWhbZC5pdGVtc1ttXS5rZXldO251bGwhPV8mJihkLml0ZW1zW21dLmNhbGxiYWNrPV8pfSksZH19XSksYX0oWFgpO2NvbnN0IHlDdD12Q3Q7ZnVuY3Rpb24gRkUobCl7cmV0dXJuKEZFPSJmdW5jdGlvbiI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJz''@;'; put 'put ''eW1ib2wiOnR5cGVvZiBjfSkobCl9dmFyIHk1ZTtmdW5jdGlvbiBiNWUobCl7cmV0dXJuIGZ1bmN0aW9uIENDdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBuSihsKX0obCl8fGZ1bmN0aW9uIHdDdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBfQ3QobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIG5KKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEp''@;'; put 'put ''O2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtpZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0''@;'; put 'put ''KGEpKXJldHVybiBuSihsLGMpfX0obCl8fGZ1bmN0aW9uIGJDdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBh''@;'; put 'put ''IFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIG5KKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZhciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gXzVlKGwsYyl7Zm9yKHZh''@;'; put 'put ''ciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxFQ3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBFQ3QobCl7''@;'; put 'put ''dmFyIGM9ZnVuY3Rpb24geEN0KGwsYyl7aWYoIm9iamVjdCIhPT1GRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1GRShmKSlyZXR1cm4gZjt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09RkUoYyk/YzpTdHJpbmcoYyl9dmFyIEFDdD1mdW5j''@;'; put 'put ''dGlvbigpe2Z1bmN0aW9uIGwoYyl7KGZ1bmN0aW9uIE1DdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxsKSx0aGlzLnBsdWdpbj1jLHRoaXMuaG90PWMuaG90LHRoaXMuZGF0''@;'; put 'put ''YU1hbmFnZXI9Yy5kYXRhTWFuYWdlcix0aGlzLmNvbGxhcHNpbmdVST1jLmNvbGxhcHNpbmdVSX1yZXR1cm4gZnVuY3Rpb24ga0N0KGwsYyxhKXtjJiZfNWUobC5wcm90b3R5cGUsYyksYSYmXzVlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiEx''@;'; put 'put ''fSl9KGwsW3trZXk6Im9uQmVmb3JlUm93TW92ZSIsdmFsdWU6ZnVuY3Rpb24oYSxmLGQsaCl7dmFyIG09dGhpcztpZih0aGlzLmRpc3BsYXlBUElDb21wYXRpYmlsaXR5V2FybmluZyh7cm93czphLGZpbmFsSW5kZXg6Zixkcm9wSW5kZXg6ZCxtb3ZlUG9zc2libGU6aH0pKXJldHVybiExO3Ro''@;'; put 'put ''aXMubW92ZWRUb0NvbGxhcHNlZD0hMTt2YXIgTz1kPT09dGhpcy5ob3QuY291bnRSb3dzKCksWD1PP3RoaXMuaG90LmNvdW50U291cmNlUm93cygpOnRoaXMuZGF0YU1hbmFnZXIudHJhbnNsYXRlVHJpbW1lZFJvdyhkKSxhZT0hMCxwZT1hLm1hcChmdW5jdGlvbihsdCl7aWYoIWFlKXJldHVy''@;'; put 'put ''biExO3ZhciBkdD1tLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3cobHQpO3JldHVybiBhZT1tLnNob3VsZEFsbG93TW92aW5nKGR0LFgpLGR0fSksYmU9LTE9PT1wZS5pbmRleE9mKFgpO2lmKCFhZXx8IWJlKXJldHVybiExO3ZhciB4ZT10aGlzLmdldEJhc2VQYXJlbnQocGUpLFZl''@;'; put 'put ''PXRoaXMuZ2V0VGFyZ2V0UGFyZW50KE8sWCksWmU9eGU9PT1WZTtyZXR1cm4gdGhpcy5tb3ZlZFRvQ29sbGFwc2VkPXRoaXMuY29sbGFwc2luZ1VJLmFyZUNoaWxkcmVuQ29sbGFwc2VkKFZlKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc3Rhc2goKSx0aGlzLnNoaWZ0''@;'; put 'put ''Q29sbGFwc2libGVQYXJlbnRzTG9jYXRpb25zKHBlLFgsWmUpLHRoaXMubW92ZVJvd3MocGUsWCxWZSksdGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKSx0aGlzLm1vdmVDZWxsc01ldGEocGUsWCksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLmFwcGx5U3Rhc2go''@;'; put 'put ''ITEpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJvd01vdmUiLGEsZixkLGgsaCYmdGhpcy5pc1Jvd09yZGVyQ2hhbmdlZChhLGYpKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLnNlbGVjdENlbGxzKGEsZCksITF9fSx7a2V5OiJkaXNwbGF5QVBJQ29tcGF0aWJpbGl0eVdhcm5pbmciLHZhbHVl''@;'; put 'put ''OmZ1bmN0aW9uKGEpe3ZhciBmPWEucm93cyxkPWEuZmluYWxJbmRleCxoPWEuZHJvcEluZGV4LG09YS5tb3ZlUG9zc2libGUsXz0hMTtyZXR1cm4gTGwoaCkmJihXbChPbCh5NWV8fCh5NWU9ZnVuY3Rpb24gU0N0KGwsYyl7cmV0dXJuIGN8fChjPWwuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUo''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobCx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKGMpfX0pKX0oWyJTaW5jZSB2ZXJzaW9uIDguMC4wIG9mIHRoZSBIYW5kc29udGFibGUgdGhlICdtb3ZlUm93cycgbWV0aG9kIGlzbid0IHVzZWQgZm9yIG1vdmluZyByb3dzIFxuICAgICAgd2hlbiB0''@;'; put 'put ''aGUgTmVzdGVkUm93cyBwbHVnaW4gaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSB0aGUgJ2RyYWdSb3dzJyBtZXRob2QgaW5zdGVhZC4iXSxbIlNpbmNlIHZlcnNpb24gOC4wLjAgb2YgdGhlIEhhbmRzb250YWJsZSB0aGUgJ21vdmVSb3dzJyBtZXRob2QgaXNuJ3QgdXNlZCBmb3IgbW92aW5nIHJv''@;'; put 'put ''d3NcXHgyMFxuICAgICAgd2hlbiB0aGUgTmVzdGVkUm93cyBwbHVnaW4gaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSB0aGUgJ2RyYWdSb3dzJyBtZXRob2QgaW5zdGVhZC4iXSkpKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsZixkLGgsbSwhMSksXz0hMCksX319LHtrZXk6InNo''@;'; put 'put ''b3VsZEFsbG93TW92aW5nIix2YWx1ZTpmdW5jdGlvbihhLGYpe3JldHVybiEodGhpcy5kYXRhTWFuYWdlci5pc1BhcmVudChhKXx8dGhpcy5kYXRhTWFuYWdlci5pc1Jvd0hpZ2hlc3RMZXZlbChhKXx8YT09PWZ8fDA9PT1mKX19LHtrZXk6ImdldEJhc2VQYXJlbnQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiB0aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChhWzBdKX19LHtrZXk6ImdldFRhcmdldFBhcmVudCIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgZD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChhP2YtMTpmKTtyZXR1cm4gbnVsbD09ZCYmKGQ9dGhpcy5kYXRh''@;'; put 'put ''TWFuYWdlci5nZXRSb3dQYXJlbnQoZi0xKSksZH19LHtrZXk6InNoaWZ0Q29sbGFwc2libGVQYXJlbnRzTG9jYXRpb25zIix2YWx1ZTpmdW5jdGlvbihhLGYsZCl7ZHx8KE1hdGgubWF4LmFwcGx5KE1hdGgsYjVlKGEpKTw9Zj90aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2gu''@;'; put 'put ''c2hpZnRTdGFzaChhWzBdLGYsLTEqYS5sZW5ndGgpOnRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKGYsYVswXSxhLmxlbmd0aCkpfX0se2tleToibW92ZVJvd3MiLHZhbHVlOmZ1bmN0aW9uKGEsZixkKXt2YXIgaD10aGlzLG09Zj09PXRoaXMuZGF0YU1h''@;'; put 'put ''bmFnZXIuZ2V0Um93SW5kZXgoZCkrdGhpcy5kYXRhTWFuYWdlci5jb3VudENoaWxkcmVuKGQpKzE7dGhpcy5ob3QuYmF0Y2hSZW5kZXIoZnVuY3Rpb24oKXthLmZvckVhY2goZnVuY3Rpb24oXyl7aC5kYXRhTWFuYWdlci5tb3ZlUm93KF8sZixoLm1vdmVkVG9Db2xsYXBzZWQsbSl9KX0pfX0s''@;'; put 'put ''e2tleToibW92ZUNlbGxzTWV0YSIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgaCxkPXRoaXMsbT1bXSxfPU1hdGgubWF4LmFwcGx5KE1hdGgsYjVlKGEpKTxmO2EuZm9yRWFjaChmdW5jdGlvbihPKXttLnB1c2goZC5ob3QuZ2V0Q2VsbE1ldGFBdFJvdyhPKSl9KSx0aGlzLmhvdC5zcGxpY2VD''@;'; put 'put ''ZWxsc01ldGEoYVswXSxhLmxlbmd0aCksKGg9dGhpcy5ob3QpLnNwbGljZUNlbGxzTWV0YS5hcHBseShoLFtmLShfP20ubGVuZ3RoOjApLDBdLmNvbmNhdChtKSl9fSx7a2V5OiJzZWxlY3RDZWxscyIsdmFsdWU6ZnVuY3Rpb24oYSxmKXt2YXIgTyxkPWEubGVuZ3RoLGg9MCxtPTAsXz1udWxs''@;'; put 'put ''O2lmKHRoaXMubW92ZWRUb0NvbGxhcHNlZCl7dmFyIFg7WD10aGlzLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coYVtkLTFdPGY/Zi1kOmYpO3ZhciBhZT10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChudWxsPT09WD90aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKS0xOlgt''@;'; put 'put ''MSkscGU9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChhZSk7bT1oPXRoaXMuZGF0YU1hbmFnZXIudW50cmFuc2xhdGVUcmltbWVkUm93KHBlKX1lbHNlIGFbZC0xXTxmP2g9KG09Zi0xKS1kKzE6bT0oaD1mKStkLTE7Xz10aGlzLmhvdC5zZWxlY3Rpb24sTz10aGlzLmhvdC5jb3VudENv''@;'; put 'put ''bHMoKS0xLF8uc2V0UmFuZ2VTdGFydCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLDApKSxfLnNldFJhbmdlRW5kKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKG0sTyksITApfX0se2tleToiaXNSb3dPcmRlckNoYW5nZWQiLHZhbHVlOmZ1bmN0aW9uKGEsZil7cmV0dXJuIGEuc29t''@;'; put 'put ''ZShmdW5jdGlvbihkLGgpe3JldHVybiBkLWghPT1mfSl9fV0pLGx9KCk7ZnVuY3Rpb24gYmIobCl7cmV0dXJuKGJiPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24o''@;'; put 'put ''Yyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gckoobCxjKXsobnVsbD09Y3x8Yz5sLmxlbmd0aCkmJihjPWwubGVuZ3RoKTtmb3Io''@;'; put 'put ''dmFyIGE9MCxmPW5ldyBBcnJheShjKTthPGM7YSsrKWZbYV09bFthXTtyZXR1cm4gZn1mdW5jdGlvbiB3NWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwhMSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g''@;'; put 'put ''ZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLEZDdChmLmtleSksZil9fWZ1bmN0aW9uIEZDdChsKXt2YXIgYz1mdW5jdGlvbiBIQ3QobCxjKXtpZigib2JqZWN0IiE9PWJiKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07''@;'; put 'put ''aWYodm9pZCAwIT09YSl7dmFyIGY9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWJiKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJp''@;'; put 'put ''bmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1iYihjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiB5Nigpe3JldHVybiB5Nj10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0LmJpbmQoKTpmdW5jdGlvbihjLGEsZil7dmFyIGQ9ZnVuY3Rp''@;'; put 'put ''b24gTkN0KGwsYyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYykmJm51bGwhPT0obD1VMyhsKSk7KTtyZXR1cm4gbH0oYyxhKTtpZihkKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQsYSk7cmV0dXJuIGguZ2V0P2guZ2V0LmNh''@;'; put 'put ''bGwoYXJndW1lbnRzLmxlbmd0aDwzP2M6Zik6aC52YWx1ZX19LHk2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBpSihsLGMpe3JldHVybihpSj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9f''@;'; put 'put ''cHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIEM1ZShsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9ZnVuY3Rpb24gVTMobCl7cmV0dXJu''@;'; put 'put ''KFUzPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIG9KPSJuZXN0ZWRSb3dzIixaMz1uZXcgV2Vha01hcCxZQ3Q9ZnVuY3Rpb24o''@;'; put 'put ''bCl7IWZ1bmN0aW9uIFZDdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90''@;'; put 'put ''b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZpSihsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIEJDdChsKXt2YXIgYz1mdW5jdGlvbiB6''@;'; put 'put ''Q3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1VMyhsKTtpZihjKXt2YXIgaD1VMyh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2Ug''@;'; put 'put ''ZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gakN0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09YmIoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1h''@;'; put 'put ''eSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIEM1ZShsKX0odGhpcyxkKX19KGEpO2Z1bmN0aW9uIGEoZil7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uIExDdChsLGMpe2lmKCEobCBpbnN0YW5jZW9mIGMpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg''@;'; put 'put ''Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGEpLChkPWMuY2FsbCh0aGlzLGYpKS5kYXRhTWFuYWdlcj1udWxsLGQuaGVhZGVyc1VJPW51bGwsZC5jb2xsYXBzZWRSb3dzTWFwPW51bGwsWjMuc2V0KEM1ZShkKSx7bW92ZWRUb0NvbGxhcHNlZDohMSxza2lwUmVuZGVyOm51bGwsc2tpcENv''@;'; put 'put ''cmVBUElNb2RpZmllcnM6ITF9KSxkfXJldHVybiBmdW5jdGlvbiBQQ3QobCxjLGEpe2MmJnc1ZShsLnByb3RvdHlwZSxjKSxhJiZ3NWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtvSl19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbGxhcHNlZFJvd3NNYXA9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAo''@;'; put 'put ''Im5lc3RlZFJvd3MiLG5ldyBITSksdGhpcy5kYXRhTWFuYWdlcj1uZXcgSXd0KHRoaXMsdGhpcy5ob3QpLHRoaXMuY29sbGFwc2luZ1VJPW5ldyBzQ3QodGhpcyx0aGlzLmhvdCksdGhpcy5oZWFkZXJzVUk9bmV3IGQ1ZSh0aGlzLHRoaXMuaG90KSx0aGlzLmNvbnRleHRNZW51VUk9bmV3IHlD''@;'; put 'put ''dCh0aGlzLHRoaXMuaG90KSx0aGlzLnJvd01vdmVDb250cm9sbGVyPW5ldyBBQ3QodGhpcyksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckluaXQuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlVmlld1JlbmRlci5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0RhdGEiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb2RpZnlSb3dEYXRhLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5''@;'; put 'put ''U291cmNlTGVuZ3RoIixmdW5jdGlvbigpe3JldHVybiBkLm9uTW9kaWZ5U291cmNlTGVuZ3RoLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRGF0YVNwbGljZSIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkJlZm9yZURhdGFTcGxpY2UuYXBwbHkoZCxhcmd1bWVudHMp''@;'; put 'put ''fSksdGhpcy5hZGRIb29rKCJmaWx0ZXJEYXRhIixmdW5jdGlvbigpe3JldHVybiBkLm9uRmlsdGVyRGF0YS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyQ29udGV4dE1l''@;'; put 'put ''bnVEZWZhdWx0T3B0aW9ucy5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Um93SGVhZGVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJHZXRSb3dIZWFkZXIuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURv''@;'; put 'put ''d24iLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVPbkNlbGxNb3VzZURvd24uYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVSZW1vdmVSb3cuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5h''@;'; put 'put ''ZGRIb29rKCJhZnRlclJlbW92ZVJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkFmdGVyUmVtb3ZlUm93LmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQWRkQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVBZGRDaGlsZC5hcHBseShkLGFyZ3VtZW50''@;'; put 'put ''cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQWRkQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckFkZENoaWxkLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVEZXRhY2hDaGlsZC5h''@;'; put 'put ''cHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlckRldGFjaENoaWxkLmFwcGx5KGQsYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5Um93SGVhZGVyV2lkdGgiLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGQub25Nb2RpZnlSb3dIZWFkZXJXaWR0aC5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJDcmVhdGVSb3cuYXBwbHkoZCxhcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSb3dNb3ZlIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBkLm9uQmVmb3JlUm93TW92ZS5hcHBseShkLGFyZ3VtZW50cyl9KSx0aGlzLmFkZEhvb2soImJlZm9yZUxvYWREYXRhIixmdW5jdGlvbihoKXtyZXR1cm4gZC5vbkJlZm9yZUxvYWREYXRhKGgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVVcGRhdGVEYXRhIixmdW5j''@;'; put 'put ''dGlvbihoKXtyZXR1cm4gZC5vbkJlZm9yZUxvYWREYXRhKGgpfSkseTYoVTMoYS5wcm90b3R5cGUpLCJlbmFibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcykpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVy''@;'; put 'put ''TWFwKCJuZXN0ZWRSb3dzIikseTYoVTMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpO3ZhciBkPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpO3Ro''@;'; put 'put ''aXMuZW5hYmxlUGx1Z2luKCksdGhpcy5kYXRhTWFuYWdlci51cGRhdGVXaXRoRGF0YShkKSx5NihVMyhhLnByb3RvdHlwZSksInVwZGF0ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Im9uQmVmb3JlUm93TW92ZSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cm93TW92ZUNvbnRyb2xsZXIub25CZWZvcmVSb3dNb3ZlKGQsaCxtLF8pfX0se2tleToiZGlzYWJsZUNvcmVBUElNb2RpZmllcnMiLHZhbHVlOmZ1bmN0aW9uKCl7WjMuZ2V0KHRoaXMpLnNraXBDb3JlQVBJTW9kaWZpZXJzPSEwfX0se2tleToiZW5hYmxlQ29yZUFQSU1vZGlmaWVycyIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXtaMy5nZXQodGhpcykuc2tpcENvcmVBUElNb2RpZmllcnM9ITF9fSx7a2V5OiJvbkJlZm9yZU9uQ2VsbE1vdXNlRG93biIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3RoaXMuY29sbGFwc2luZ1VJLnRvZ2dsZVN0YXRlKGQsaCxtKX19LHtrZXk6Im9uTW9kaWZ5Um93RGF0''@;'; put 'put ''YSIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYoIVozLmdldCh0aGlzKS5za2lwQ29yZUFQSU1vZGlmaWVycylyZXR1cm4gdGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGQpfX0se2tleToib25Nb2RpZnlTb3VyY2VMZW5ndGgiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIVozLmdldCh0aGlzKS5z''@;'; put 'put ''a2lwQ29yZUFQSU1vZGlmaWVycylyZXR1cm4gdGhpcy5kYXRhTWFuYWdlci5jb3VudEFsbFJvd3MoKX19LHtrZXk6Im9uQmVmb3JlRGF0YVNwbGljZSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3JldHVybiEoIVozLmdldCh0aGlzKS5za2lwQ29yZUFQSU1vZGlmaWVycyYmIXRoaXMuZGF0YU1h''@;'; put 'put ''bmFnZXIuaXNSb3dIaWdoZXN0TGV2ZWwoZCkmJih0aGlzLmRhdGFNYW5hZ2VyLnNwbGljZURhdGEoZCxoLG0pLDEpKX19LHtrZXk6Im9uRmlsdGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0pe3ZhciBfPVozLmdldCh0aGlzKTtyZXR1cm4gdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2Vk''@;'; put 'put ''Um93c1N0YXNoLnN0YXNoKCksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnRyaW1TdGFzaChtWzBdLGgpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKG1bMF0sbnVsbCwtMSpoKSx0aGlzLmRhdGFNYW5hZ2VyLmZpbHRlckRhdGEo''@;'; put 'put ''ZCxoLG0pLF8uc2tpcFJlbmRlcj0hMCx0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKS5zbGljZSgpfX0se2tleToib25BZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLmNvbnRleHRNZW51VUkuYXBwZW5kT3B0aW9ucyhkKX19LHtr''@;'; put 'put ''ZXk6Im9uQWZ0ZXJHZXRSb3dIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dGhpcy5oZWFkZXJzVUkuYXBwZW5kTGV2ZWxJbmRpY2F0b3JzKGQsaCl9fSx7a2V5OiJvbk1vZGlmeVJvd0hlYWRlcldpZHRoIix2YWx1ZTpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5oZWFkZXJzVUkucm93SGVh''@;'; put 'put ''ZGVyV2lkdGhDYWNoZXx8ZH19LHtrZXk6Im9uQWZ0ZXJSZW1vdmVSb3ciLHZhbHVlOmZ1bmN0aW9uKGQsaCxtLF8pe3ZhciBPPXRoaXM7aWYoXyE9PXRoaXMucGx1Z2luTmFtZSl7dmFyIFg9WjMuZ2V0KHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtYLnNraXBSZW5kZXI9bnVsbCxPLmhl''@;'; put 'put ''YWRlcnNVSS51cGRhdGVSb3dIZWFkZXJXaWR0aCgpLE8uY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCl9LDApfX19LHtrZXk6Im9uQmVmb3JlUmVtb3ZlUm93Iix2YWx1ZTpmdW5jdGlvbihkLGgsbSl7dmFyIF89dGhpcyxPPUFycmF5LmZyb20obS5yZWR1Y2Uo''@;'; put 'put ''ZnVuY3Rpb24oWCxhZSl7aWYoXy5kYXRhTWFuYWdlci5pc1BhcmVudChhZSkpe3ZhciBwZT1fLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoYWUpLl9fY2hpbGRyZW47cmV0dXJuIFguYWRkKGFlKSxBcnJheS5pc0FycmF5KHBlKSYmcGUuZm9yRWFjaChmdW5jdGlvbihiZSl7cmV0dXJuIFgu''@;'; put 'put ''YWRkKF8uZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoYmUpKX0pLFh9cmV0dXJuIFguYWRkKGFlKX0sbmV3IFNldCkpO20ubGVuZ3RoPTAsbS5wdXNoLmFwcGx5KG0sTyl9fSx7a2V5OiJvbkJlZm9yZUFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNl''@;'; put 'put ''ZFJvd3NTdGFzaC5zdGFzaCgpfX0se2tleToib25BZnRlckFkZENoaWxkIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKHRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoaCkpLHRoaXMuY29sbGFwc2luZ1VJLmNv''@;'; put 'put ''bGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQmVmb3JlRGV0YWNoQ2hpbGQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCl9fSx7a2V5''@;'; put 'put ''OiJvbkFmdGVyRGV0YWNoQ2hpbGQiLHZhbHVlOmZ1bmN0aW9uKGQsaCxtKXt0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFzaChtLG51bGwsLTEpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCksdGhpcy5oZWFkZXJz''@;'; put 'put ''VUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKX19LHtrZXk6Im9uQWZ0ZXJDcmVhdGVSb3ciLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX19LHtrZXk6Im9uQWZ0ZXJJbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPU1hdGgubWF4LmFwcGx5KE1hdGgs''@;'; put 'put ''ZnVuY3Rpb24gVEN0KGwpe3JldHVybiBmdW5jdGlvbiBSQ3QobCl7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4gckoobCl9KGwpfHxmdW5jdGlvbiBJQ3QobCl7aWYodHlwZW9mIFN5bWJvbDwidSImJm51bGwhPWxbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9bFsiQEBpdGVyYXRvciJdKXJl''@;'; put 'put ''dHVybiBBcnJheS5mcm9tKGwpfShsKXx8ZnVuY3Rpb24gREN0KGwsYyl7aWYobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBySihsLGMpO3ZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKS5zbGljZSg4LC0xKTtpZigiT2JqZWN0Ij09PWEmJmwuY29uc3RydWN0''@;'; put 'put ''b3ImJihhPWwuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1hfHwiU2V0Ij09PWEpcmV0dXJuIEFycmF5LmZyb20obCk7aWYoIkFyZ3VtZW50cyI9PT1hfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChhKSlyZXR1cm4gckoobCxjKX19KGwpfHxmdW5j''@;'; put 'put ''dGlvbiBPQ3QoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4i''@;'; put 'put ''KX0oKX0odGhpcy5kYXRhTWFuYWdlci5jYWNoZS5sZXZlbHMpKTtkPjAmJnRoaXMuaGVhZGVyc1VJLnVwZGF0ZVJvd0hlYWRlcldpZHRoKGQpfX0se2tleToib25CZWZvcmVWaWV3UmVuZGVyIix2YWx1ZTpmdW5jdGlvbihkLGgpe1ozLmdldCh0aGlzKS5za2lwUmVuZGVyJiYoaC5za2lwUmVu''@;'; put 'put ''ZGVyPSEwKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7eTYoVTMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToib25CZWZvcmVMb2FkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZCl7aWYoIXpmZShkKSlyZXR1cm4gSVkoIlRoZSBOZXN0ZWQg''@;'; put 'put ''Um93cyBwbHVnaW4gcmVxdWlyZXMgYW4gQXJyYXkgb2YgT2JqZWN0cyBhcyBhIGRhdGFzZXQgdG8gYmUgcHJvdmlkZWQuIFRoZSBwbHVnaW4gaGFzIGJlZW4gZGlzYWJsZWQuIiksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtvSl09ITEsdm9pZCB0aGlzLmRpc2FibGVQbHVnaW4oKTt0aGlzLmRh''@;'; put 'put ''dGFNYW5hZ2VyLnNldERhdGEoZCksdGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG9KfX0se2tleToiUExVR0lOX1BSSU9SSVRZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMzAwfX1dKSxhfShHYSk7ZnVu''@;'; put 'put ''Y3Rpb24gSEUobCl7cmV0dXJuKEhFPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29u''@;'; put 'put ''c3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gUzVlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9''@;'; put 'put ''ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwkQ3QoZi5rZXkpLGYpfX1mdW5jdGlvbiAkQ3QobCl7dmFyIGM9ZnVuY3Rpb24gS0N0KGwsYyl7aWYoIm9iamVjdCIhPT1IRShsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wu''@;'; put 'put ''dG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1IRShmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3Ry''@;'; put 'put ''aW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09SEUoYyk/YzpTdHJpbmcoYyl9dmFyIHFDdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoYyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRz''@;'; put 'put ''WzFdOndpbmRvdzsoZnVuY3Rpb24gV0N0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLGwpLHRoaXMucm9vdFdpbmRvdz1hLHRoaXMucHJlZml4PWMsdGhpcy5zYXZlZEtleXM9''@;'; put 'put ''W10sdGhpcy5sb2FkU2F2ZWRLZXlzKCl9cmV0dXJuIGZ1bmN0aW9uIEdDdChsLGMsYSl7YyYmUzVlKGwucHJvdG90eXBlLGMpLGEmJlM1ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShsLFt7a2V5OiJzYXZlVmFsdWUiLHZhbHVlOmZ1''@;'; put 'put ''bmN0aW9uKGEsZil7dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCIiLmNvbmNhdCh0aGlzLnByZWZpeCwiXyIpLmNvbmNhdChhKSxKU09OLnN0cmluZ2lmeShmKSksLTE9PT10aGlzLnNhdmVkS2V5cy5pbmRleE9mKGEpJiYodGhpcy5zYXZlZEtleXMucHVzaChhKSx0aGlz''@;'; put 'put ''LnNhdmVTYXZlZEtleXMoKSl9fSx7a2V5OiJsb2FkVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGEsZil7dmFyIGQ9dHlwZW9mIGE+InUiP2Y6YSxoPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl8iKS5jb25jYXQoZCkpO3JldHVybiBu''@;'; put 'put ''dWxsPT09aD92b2lkIDA6SlNPTi5wYXJzZShoKX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KHRoaXMucHJlZml4LCJfIikuY29uY2F0KGEpKX19LHtrZXk6InJlc2V0QWxsIix2YWx1ZTpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBhPXRoaXM7Um4odGhpcy5zYXZlZEtleXMsZnVuY3Rpb24oZixkKXthLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIiIuY29uY2F0KGEucHJlZml4LCJfIikuY29uY2F0KGEuc2F2ZWRLZXlzW2RdKSl9KSx0aGlzLmNsZWFyU2F2ZWRLZXlzKCl9fSx7''@;'; put 'put ''a2V5OiJsb2FkU2F2ZWRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiIi5jb25jYXQodGhpcy5wcmVmaXgsIl9fcGVyc2lzdGVudFN0YXRlS2V5cyIpKSxmPSJzdHJpbmciPT10eXBlb2YgYT9KU09OLnBhcnNlKGEpOnZv''@;'; put 'put ''aWQgMDt0aGlzLnNhdmVkS2V5cz1mfHxbXX19LHtrZXk6InNhdmVTYXZlZEtleXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCIiLmNvbmNhdCh0aGlzLnByZWZpeCwiX19wZXJzaXN0ZW50U3RhdGVLZXlzIiksSlNPTi5zdHJpbmdpZnko''@;'; put 'put ''dGhpcy5zYXZlZEtleXMpKX19LHtrZXk6ImNsZWFyU2F2ZWRLZXlzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2F2ZWRLZXlzLmxlbmd0aD0wLHRoaXMuc2F2ZVNhdmVkS2V5cygpfX1dKSxsfSgpO2NvbnN0IFhDdD1xQ3Q7ZnVuY3Rpb24gX2IobCl7cmV0dXJuKF9iPSJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90''@;'; put 'put ''eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gTTVlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkobCxlU3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBlU3QobCl7dmFyIGM9ZnVuY3Rpb24gdFN0KGwsYyl7aWYoIm9iamVjdCIhPT1fYihsKXx8bnVsbD09PWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEu''@;'; put 'put ''Y2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1fYihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmlu''@;'; put 'put ''ZyIpO3JldHVybiJzeW1ib2wiPT09X2IoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gYjYoKXtyZXR1cm4gYjY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIG5TdChsLGMpe2Zvcig7IU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9WTMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9j''@;'; put 'put ''OmYpOmgudmFsdWV9fSxiNi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYUoobCxjKXtyZXR1cm4oYUo9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5j''@;'; put 'put ''dGlvbiBZMyhsKXtyZXR1cm4oWTM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX11by5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigicGVy''@;'; put 'put ''c2lzdGVudFN0YXRlU2F2ZSIpLHVvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiksdW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoInBlcnNpc3RlbnRTdGF0ZVJlc2V0Iik7dmFyIGs1ZT0icGVyc2lzdGVudFN0YXRlIix1U3Q9ZnVuY3Rpb24obCl7IWZ1''@;'; put 'put ''bmN0aW9uIHJTdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUs''@;'; put 'put ''e2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxjJiZhSihsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIGlTdChsKXt2YXIgYz1mdW5jdGlvbiBsU3QoKXtp''@;'; put 'put ''Zih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25z''@;'; put 'put ''dHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1ZMyhsKTtpZihjKXt2YXIgaD1ZMyh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gb1N0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09X2IoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5''@;'; put 'put ''IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGFTdChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwp''@;'; put 'put ''fSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVuY3Rpb24gSkN0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikp''@;'; put 'put ''LnN0b3JhZ2U9dm9pZCAwLGR9cmV0dXJuIGZ1bmN0aW9uIFFDdChsLGMsYSl7YyYmTTVlKGwucHJvdG90eXBlLGMpLGEmJk01ZShsLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShhLFt7a2V5OiJpc0VuYWJsZWQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2s1ZV19fSx7a2V5OiJlbmFibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLnN0b3JhZ2V8fCh0aGlzLnN0b3JhZ2U9bmV3IFhDdCh0aGlzLmhvdC5yb290RWxlbWVudC5pZCx0''@;'; put 'put ''aGlzLmhvdC5yb290V2luZG93KSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVTYXZlIixmdW5jdGlvbihoLG0pe3JldHVybiBkLnNhdmVWYWx1ZShoLG0pfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixmdW5jdGlvbihoLG0pe3JldHVybiBkLmxvYWRWYWx1ZSho''@;'; put 'put ''LG0pfSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVSZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gZC5yZXNldFZhbHVlKCl9KSxiNihZMyhhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJkaXNhYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlv''@;'; put 'put ''bigpe3RoaXMuc3RvcmFnZT12b2lkIDAsYjYoWTMoYS5wcm90b3R5cGUpLCJkaXNhYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToidXBkYXRlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksYjYoWTMoYS5w''@;'; put 'put ''cm90b3R5cGUpLCJ1cGRhdGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJsb2FkVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGQsaCl7aC52YWx1ZT10aGlzLnN0b3JhZ2UubG9hZFZhbHVlKGQpfX0se2tleToic2F2ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihkLGgpe3RoaXMuc3RvcmFn''@;'; put 'put ''ZS5zYXZlVmFsdWUoZCxoKX19LHtrZXk6InJlc2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGQpe3R5cGVvZiBkPiJ1Ij90aGlzLnN0b3JhZ2UucmVzZXRBbGwoKTp0aGlzLnN0b3JhZ2UucmVzZXQoZCl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe2I2KFkzKGEucHJvdG90eXBl''@;'; put 'put ''KSwiZGVzdHJveSIsdGhpcykuY2FsbCh0aGlzKX19XSxbe2tleToiUExVR0lOX0tFWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGs1ZX19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9fV0pLGF9KEdhKTtmdW5jdGlvbiB3YihsKXtyZXR1cm4od2I9ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBsSihsLGMpeyhudWxsPT1jfHxjPmwubGVuZ3RoKSYmKGM9bC5sZW5ndGgpO2Zvcih2YXIgYT0wLGY9bmV3IEFycmF5KGMpO2E8YzthKyspZlthXT1sW2FdO3JldHVybiBmfWZ1bmN0aW9uIEU1ZShsLGMpe2Zv''@;'; put 'put ''cih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVudW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsdlN0KGYua2V5KSxmKX19ZnVuY3Rpb24gdlN0''@;'; put 'put ''KGwpe3ZhciBjPWZ1bmN0aW9uIHlTdChsLGMpe2lmKCJvYmplY3QiIT09d2IobCl8fG51bGw9PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09d2IoZikpcmV0dXJu''@;'; put 'put ''IGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXdiKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9u''@;'; put 'put ''IF82KCl7cmV0dXJuIF82PXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBiU3QobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShs''@;'; put 'put ''PVczKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sXzYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9u''@;'; put 'put ''IHNKKGwsYyl7cmV0dXJuKHNKPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gVzMobCl7cmV0dXJuKFczPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl''@;'; put 'put ''Y3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHVKPSJzZWFyY2giLHhTdD1mdW5jdGlvbihjLGEsZixkLGgpe2MuZ2V0Q2VsbE1ldGEoYSxmKS5pc1NlYXJjaFJlc3VsdD1ofSxB''@;'; put 'put ''U3Q9ZnVuY3Rpb24oYyxhLGYpe3JldHVybiEoTGwoYyl8fG51bGw9PT1jfHwhYy50b0xvY2FsZUxvd2VyQ2FzZXx8MD09PWMubGVuZ3RofHxMbChhKXx8bnVsbD09PWEpJiYtMSE9PWEudG9TdHJpbmcoKS50b0xvY2FsZUxvd2VyQ2FzZShmLmxvY2FsZSkuaW5kZXhPZihjLnRvTG9jYWxlTG93''@;'; put 'put ''ZXJDYXNlKGYubG9jYWxlKSl9LFRTdD1mdW5jdGlvbihsKXshZnVuY3Rpb24gX1N0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7bC5w''@;'; put 'put ''cm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJnNKKGwsYyl9KGEsbCk7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gd1N0KGwpe3ZhciBjPWZ1bmN0aW9uIE1TdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xl''@;'; put 'put ''YW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPVczKGwpO2lmKGMpe3ZhciBoPVczKHRoaXMpLmNvbnN0cnVjdG9yO2Q9UmVmbGVj''@;'; put 'put ''dC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBDU3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT13YihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQgMCE9PWMpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gU1N0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw''@;'; put 'put ''ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBtU3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg''@;'; put 'put ''ZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkuY2FsbGJhY2s9eFN0LGQucXVlcnlNZXRob2Q9QVN0LGQuc2VhcmNoUmVzdWx0Q2xhc3M9Imh0U2VhcmNoUmVzdWx0IixkfXJldHVybiBmdW5jdGlvbiBnU3QobCxjLGEpe2MmJkU1ZShsLnByb3RvdHlwZSxjKSxhJiZFNWUo''@;'; put 'put ''bCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3VKXX19LHtrZXk6ImVuYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgZD10aGlzO2lmKCF0aGlzLmVuYWJsZWQpe3ZhciBoPXRoaXMuaG90LmdldFNldHRpbmdzKClbdUpdO3RoaXMudXBkYXRlUGx1Z2luU2V0dGluZ3MoaCksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW5kZXJlciIsZnVuY3Rpb24oKXtyZXR1cm4gZC5vbkJlZm9yZVJlbmRlcmVyLmFwcGx5''@;'; put 'put ''KGQsYXJndW1lbnRzKX0pLF82KFczKGEucHJvdG90eXBlKSwiZW5hYmxlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX19LHtrZXk6ImRpc2FibGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPWZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVSZW5kZXJlci5hcHBseShk''@;'; put 'put ''LGFyZ3VtZW50cyl9O3RoaXMuaG90LmFkZEhvb2soImJlZm9yZVJlbmRlcmVyIixoKSx0aGlzLmhvdC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixmdW5jdGlvbigpe2QuaG90LnJlbW92ZUhvb2soImJlZm9yZVJlbmRlcmVyIixoKX0pLF82KFczKGEucHJvdG90eXBlKSwiZGlzYWJs''@;'; put 'put ''ZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InVwZGF0ZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLF82KFczKGEucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToi''@;'; put 'put ''cXVlcnkiLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMsbT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5nZXRDYWxsYmFjaygpLF89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRz''@;'; put 'put ''WzJdOnRoaXMuZ2V0UXVlcnlNZXRob2QoKSxPPXRoaXMuaG90LmNvdW50Um93cygpLFg9dGhpcy5ob3QuY291bnRDb2xzKCksYWU9W10scGU9dGhpcy5ob3Q7cmV0dXJuIF9vKDAsTy0xLGZ1bmN0aW9uKGJlKXtfbygwLFgtMSxmdW5jdGlvbih4ZSl7dmFyIFZlPWguaG90LmdldERhdGFBdENl''@;'; put 'put ''bGwoYmUseGUpLFplPWguaG90LmdldENlbGxNZXRhKGJlLHhlKSxsdD1aZS5zZWFyY2guY2FsbGJhY2t8fG0sZ3Q9KFplLnNlYXJjaC5xdWVyeU1ldGhvZHx8XykoZCxWZSxaZSk7Z3QmJmFlLnB1c2goe3JvdzpiZSxjb2w6eGUsZGF0YTpWZX0pLGx0JiZsdChwZSxiZSx4ZSxWZSxndCl9KX0p''@;'; put 'put ''LGFlfX0se2tleToiZ2V0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FsbGJhY2t9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5jYWxsYmFjaz1kfX0se2tleToiZ2V0UXVlcnlNZXRob2QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMucXVlcnlNZXRob2R9fSx7a2V5OiJzZXRRdWVyeU1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5xdWVyeU1ldGhvZD1kfX0se2tleToiZ2V0U2VhcmNoUmVzdWx0Q2xhc3MiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3N9fSx7a2V5OiJz''@;'; put 'put ''ZXRTZWFyY2hSZXN1bHRDbGFzcyIsdmFsdWU6ZnVuY3Rpb24oZCl7dGhpcy5zZWFyY2hSZXN1bHRDbGFzcz1kfX0se2tleToidXBkYXRlUGx1Z2luU2V0dGluZ3MiLHZhbHVlOmZ1bmN0aW9uKGQpe3BhKGQpJiYoZC5zZWFyY2hSZXN1bHRDbGFzcyYmdGhpcy5zZXRTZWFyY2hSZXN1bHRDbGFz''@;'; put 'put ''cyhkLnNlYXJjaFJlc3VsdENsYXNzKSxkLnF1ZXJ5TWV0aG9kJiZ0aGlzLnNldFF1ZXJ5TWV0aG9kKGQucXVlcnlNZXRob2QpLGQuY2FsbGJhY2smJnRoaXMuc2V0Q2FsbGJhY2soZC5jYWxsYmFjaykpfX0se2tleToib25CZWZvcmVSZW5kZXJlciIsdmFsdWU6ZnVuY3Rpb24oZCxoLG0sXyxP''@;'; put 'put ''LFgpe3ZhciBiZSxhZT1YLmNsYXNzTmFtZXx8W10scGU9W107InN0cmluZyI9PXR5cGVvZiBhZT9wZT1hZS5zcGxpdCgiICIpOihiZT1wZSkucHVzaC5hcHBseShiZSxmdW5jdGlvbiBjU3QobCl7cmV0dXJuIGZ1bmN0aW9uIHBTdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBsSihs''@;'; put 'put ''KX0obCl8fGZ1bmN0aW9uIGhTdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxmdW5jdGlvbiBkU3QobCxjKXtpZihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwp''@;'; put 'put ''cmV0dXJuIGxKKGwsYyk7dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpLnNsaWNlKDgsLTEpO2lmKCJPYmplY3QiPT09YSYmbC5jb25zdHJ1Y3RvciYmKGE9bC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWF8fCJTZXQiPT09YSlyZXR1cm4gQXJyYXkuZnJvbShsKTtp''@;'; put 'put ''ZigiQXJndW1lbnRzIj09PWF8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGEpKXJldHVybiBsSihsLGMpfX0obCl8fGZ1bmN0aW9uIGZTdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxl''@;'; put 'put ''IGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShhZSkpLHRoaXMuaXNFbmFibGVkKCkmJlguaXNTZWFyY2hSZXN1bHQ/cGUuaW5jbHVkZXModGhpcy5zZWFyY2hS''@;'; put 'put ''ZXN1bHRDbGFzcyl8fHBlLnB1c2goIiIuY29uY2F0KHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpKTpwZS5pbmNsdWRlcyh0aGlzLnNlYXJjaFJlc3VsdENsYXNzKSYmcGUuc3BsaWNlKHBlLmluZGV4T2YodGhpcy5zZWFyY2hSZXN1bHRDbGFzcyksMSksWC5jbGFzc05hbWU9cGUuam9pbigiICIp''@;'; put 'put ''fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtfNihXMyhhLnByb3RvdHlwZSksImRlc3Ryb3kiLHRoaXMpLmNhbGwodGhpcyl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiB1Sn19LHtrZXk6IlBMVUdJTl9QUklPUklUWSIsZ2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIDE5MH19XSksYX0oR2EpO2Z1bmN0aW9uIENiKGwpe3JldHVybihDYj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihjKXtyZXR1cm4gdHlwZW9mIGN9OmZ1bmN0aW9uKGMpe3JldHVybiBjJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZjLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZjIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgY30pKGwpfWZ1bmN0aW9uIHg1ZShsLGMpe2Zvcih2YXIgYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZj1jW2FdO2YuZW51bWVyYWJsZT1mLmVu''@;'; put 'put ''dW1lcmFibGV8fCExLGYuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBmJiYoZi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsSVN0KGYua2V5KSxmKX19ZnVuY3Rpb24gSVN0KGwpe3ZhciBjPWZ1bmN0aW9uIFJTdChsLGMpe2lmKCJvYmplY3QiIT09Q2IobCl8fG51bGw9''@;'; put 'put ''PT1sKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZj1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09Q2IoZikpcmV0dXJuIGY7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHBy''@;'; put 'put ''aW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PUNiKGMpP2M6U3RyaW5nKGMpfWZ1bmN0aW9uIFNiKCl7cmV0dXJuIFNiPXR5cGVvZiBSZWZsZWN0PCJ1IiYmUmVmbGVjdC5nZXQ/UmVmbGVj''@;'; put 'put ''dC5nZXQuYmluZCgpOmZ1bmN0aW9uKGMsYSxmKXt2YXIgZD1mdW5jdGlvbiBMU3QobCxjKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxjKSYmbnVsbCE9PShsPW9tKGwpKTspO3JldHVybiBsfShjLGEpO2lmKGQpe3ZhciBoPU9iamVjdC5nZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3IoZCxhKTtyZXR1cm4gaC5nZXQ/aC5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/YzpmKTpoLnZhbHVlfX0sU2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGNKKGwsYyl7cmV0dXJuKGNKPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJv''@;'; put 'put ''dG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGYsZCl7cmV0dXJuIGYuX19wcm90b19fPWQsZn0pKGwsYyl9ZnVuY3Rpb24gb20obCl7cmV0dXJuKG9tPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGEpe3JldHVybiBhLl9fcHJvdG9f''@;'; put 'put ''X3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpfSkobCl9dmFyIHpTdD1mdW5jdGlvbihsKXshZnVuY3Rpb24gUFN0KGwsYyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMmJm51bGwhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBv''@;'; put 'put ''ciBhIGZ1bmN0aW9uIik7bC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjJiZjLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmwsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGMmJmNK''@;'; put 'put ''KGwsYyl9KGEsbCk7dmFyIGM9ZnVuY3Rpb24gRlN0KGwpe3ZhciBjPWZ1bmN0aW9uIFZTdCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4h''@;'; put 'put ''MDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZCxmPW9tKGwpO2lmKGMpe3ZhciBoPW9tKHRoaXMpLmNv''@;'; put 'put ''bnN0cnVjdG9yO2Q9UmVmbGVjdC5jb25zdHJ1Y3QoZixhcmd1bWVudHMsaCl9ZWxzZSBkPWYuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbiBIU3QobCxjKXtpZihjJiYoIm9iamVjdCI9PT1DYihjKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGMpKXJldHVybiBjO2lmKHZvaWQg''@;'; put 'put ''MCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24gTlN0KGwpe2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu''@;'; put 'put ''IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gbH0obCl9KHRoaXMsZCl9fShhKTtmdW5jdGlvbiBhKGYpe3ZhciBkO3JldHVybiBmdW5jdGlvbiBPU3QobCxjKXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3Qg''@;'; put 'put ''Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxhKSwoZD1jLmNhbGwodGhpcyxmKSkuc2Nyb2xsYmFycz1bXSxkLmNsb25lcz1bXSxkLmxvY2tlZENvbGxlY3Rpb249ITEsZC5mcmVlemVPdmVybGF5cz0hMSxkfXJldHVybiBmdW5jdGlvbiBEU3QobCxjLGEpe2MmJng1ZShsLnBy''@;'; put 'put ''b3RvdHlwZSxjKSxhJiZ4NWUobCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oYSxbe2tleToiaXNFbmFibGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuWSgpfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBkPXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlclZpZXdSZW5kZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25BZnRlclZpZXdSZW5kZXIoKX0pLHRoaXMucmVnaXN0ZXJFdmVudHMoKSxTYihvbShhLnByb3RvdHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0''@;'; put 'put ''aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5sb2NrZWRDb2xsZWN0aW9uPSExLFNiKG9tKGEucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdpbiIsdmFsdWU6ZnVuY3Rpb24oKXtTYihv''@;'; put 'put ''bShhLnByb3RvdHlwZSksImRpc2FibGVQbHVnaW4iLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJyZWdpc3RlckV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuYWRkSG9vaygiYmVmb3JlVG91Y2hTY3JvbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25CZWZvcmVUb3Vj''@;'; put 'put ''aFNjcm9sbCgpfSksdGhpcy5hZGRIb29rKCJhZnRlck1vbWVudHVtU2Nyb2xsIixmdW5jdGlvbigpe3JldHVybiBkLm9uQWZ0ZXJNb21lbnR1bVNjcm9sbCgpfSl9fSx7a2V5OiJvbkFmdGVyVmlld1JlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5sb2NrZWRDb2xsZWN0aW9uKXt2''@;'; put 'put ''YXIgZD10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLGg9ZC50b3BPdmVybGF5LG09ZC5ib3R0b21PdmVybGF5LF89ZC5pbmxpbmVTdGFydE92ZXJsYXksTz1kLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSxYPWQuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5O3RoaXMubG9j''@;'; put 'put ''a2VkQ29sbGVjdGlvbj0hMCx0aGlzLnNjcm9sbGJhcnMubGVuZ3RoPTAsdGhpcy5zY3JvbGxiYXJzLnB1c2goaCksbS5jbG9uZSYmdGhpcy5zY3JvbGxiYXJzLnB1c2gobSksdGhpcy5zY3JvbGxiYXJzLnB1c2goXyksTyYmdGhpcy5zY3JvbGxiYXJzLnB1c2goTyksWCYmWC5jbG9uZSYmdGhp''@;'; put 'put ''cy5zY3JvbGxiYXJzLnB1c2goWCksdGhpcy5jbG9uZXM9W10saC5uZWVkRnVsbFJlbmRlciYmdGhpcy5jbG9uZXMucHVzaChoLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLG0ubmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmVzLnB1c2gobS5jbG9uZS53dFRhYmxlLmhvbGRlci5w''@;'; put 'put ''YXJlbnROb2RlKSxfLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNsb25lcy5wdXNoKF8uY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSksTyYmdGhpcy5jbG9uZXMucHVzaChPLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLFgmJlguY2xvbmUmJnRoaXMuY2xvbmVzLnB1c2go''@;'; put 'put ''WC5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKX19fSx7a2V5OiJvbkJlZm9yZVRvdWNoU2Nyb2xsIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZnJlZXplT3ZlcmxheXM9ITAsUm4odGhpcy5jbG9uZXMsZnVuY3Rpb24oZCl7Z2koZCwiaGlkZS10d2VlbiIpfSl9fSx7a2V5OiJvbkFm''@;'; put 'put ''dGVyTW9tZW50dW1TY3JvbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmZyZWV6ZU92ZXJsYXlzPSExLFJuKHRoaXMuY2xvbmVzLGZ1bmN0aW9uKGgpe0pvKGgsImhpZGUtdHdlZW4iKSxnaShoLCJzaG93LXR3ZWVuIil9KSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KGZ1''@;'; put 'put ''bmN0aW9uKCl7Um4oZC5jbG9uZXMsZnVuY3Rpb24oaCl7Sm8oaCwic2hvdy10d2VlbiIpfSl9LDQwMCksUm4odGhpcy5zY3JvbGxiYXJzLGZ1bmN0aW9uKGgpe2gucmVmcmVzaCgpLGgucmVzZXRGaXhlZFBvc2l0aW9uKCl9KSx0aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnN5bmNTY3Jv''@;'; put 'put ''bGxXaXRoTWFzdGVyKCl9fV0sW3trZXk6IlBMVUdJTl9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJ0b3VjaFNjcm9sbCJ9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAyMDB9fSx7a2V5OiJTRVRUSU5HX0tFWVMiLGdldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biEwfX1dKSxhfShHYSk7ZnVuY3Rpb24gTWIobCl7cmV0dXJuKE1iPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGMpe3JldHVybiB0eXBlb2YgY306ZnVuY3Rpb24oYyl7cmV0dXJuIGMmJiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wmJmMuY29uc3RydWN0b3I9PT1TeW1ib2wmJmMhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBjfSkobCl9ZnVuY3Rpb24gQTVlKGwsYyl7Zm9yKHZhciBhPTA7YTxjLmxlbmd0aDthKyspe3ZhciBmPWNbYV07Zi5lbnVtZXJhYmxlPWYuZW51bWVyYWJsZXx8''@;'; put 'put ''ITEsZi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGYmJihmLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCxZU3QoZi5rZXkpLGYpfX1mdW5jdGlvbiBZU3QobCl7dmFyIGM9ZnVuY3Rpb24gV1N0KGwsYyl7aWYoIm9iamVjdCIhPT1NYihsKXx8bnVsbD09PWwpcmV0dXJu''@;'; put 'put ''IGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBmPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1NYihmKSlyZXR1cm4gZjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZh''@;'; put 'put ''bHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09TWIoYyk/YzpTdHJpbmcoYyl9ZnVuY3Rpb24gdzYoKXtyZXR1cm4gdzY9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5k''@;'; put 'put ''KCk6ZnVuY3Rpb24oYyxhLGYpe3ZhciBkPWZ1bmN0aW9uIEdTdChsLGMpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGMpJiZudWxsIT09KGw9RzMobCkpOyk7cmV0dXJuIGx9KGMsYSk7aWYoZCl7dmFyIGg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp''@;'; put 'put ''cHRvcihkLGEpO3JldHVybiBoLmdldD9oLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmYpOmgudmFsdWV9fSx3Ni5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZkoobCxjKXtyZXR1cm4oZko9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5i''@;'; put 'put ''aW5kKCk6ZnVuY3Rpb24oZixkKXtyZXR1cm4gZi5fX3Byb3RvX189ZCxmfSkobCxjKX1mdW5jdGlvbiBHMyhsKXtyZXR1cm4oRzM9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3Qu''@;'; put 'put ''Z2V0UHJvdG90eXBlT2YoYSl9KShsKX12YXIgSFA9InRyaW1Sb3dzIixlTXQ9ZnVuY3Rpb24obCl7IWZ1bmN0aW9uICRTdChsLGMpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBjJiZudWxsIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51''@;'; put 'put ''bGwgb3IgYSBmdW5jdGlvbiIpO2wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYyYmYy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxj''@;'; put 'put ''JiZmSihsLGMpfShhLGwpO3ZhciBjPWZ1bmN0aW9uIEtTdChsKXt2YXIgYz1mdW5jdGlvbiBKU3QoKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0''@;'; put 'put ''dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1HMyhsKTtpZihjKXt2YXIgaD1HMyh0aGlz''@;'; put 'put ''KS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gcVN0KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09TWIoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2''@;'; put 'put ''b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIFhTdChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3Qg''@;'; put 'put ''YmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX0oYSk7ZnVuY3Rpb24gYShmKXt2YXIgZDtyZXR1cm4gZnVuY3Rpb24gVVN0KGwsYyl7aWYoIShsIGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsYSksKGQ9Yy5jYWxsKHRoaXMsZikpLnRyaW1tZWRSb3dzTWFwPW51bGwsZH1yZXR1cm4gZnVuY3Rpb24gWlN0KGwsYyxhKXtjJiZBNWUobC5wcm90b3R5cGUsYyksYSYmQTVlKGwsYSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSl9KGEsW3trZXk6ImlzRW5hYmxlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbSFBdfX0se2tleToiZW5hYmxlUGx1Z2luIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy5lbmFibGVk''@;'; put 'put ''fHwodGhpcy50cmltbWVkUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCgidHJpbVJvd3MiLG5ldyBITSksdGhpcy50cmltbWVkUm93c01hcC5hZGRMb2NhbEhvb2soImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25NYXBJbml0KCl9KSx3NihHMyhhLnByb3Rv''@;'; put 'put ''dHlwZSksImVuYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKSl9fSx7a2V5OiJ1cGRhdGVQbHVnaW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPXRoaXMuaG90LmdldFNldHRpbmdzKClbSFBdO0FycmF5LmlzQXJyYXkoaCkmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0''@;'; put 'put ''aW9uKCl7ZC50cmltbWVkUm93c01hcC5jbGVhcigpLFJuKGgsZnVuY3Rpb24obSl7ZC50cmltbWVkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgobSwhMCl9KX0sITApLHc2KEczKGEucHJvdG90eXBlKSwidXBkYXRlUGx1Z2luIix0aGlzKS5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZVBsdWdp''@;'; put 'put ''biIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKCJ0cmltUm93cyIpLHc2KEczKGEucHJvdG90eXBlKSwiZGlzYWJsZVBsdWdpbiIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6ImdldFRyaW1tZWRSb3dzIix2YWx1ZTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLnRyaW1tZWRSb3dzTWFwLmdldFRyaW1tZWRJbmRleGVzKCl9fSx7a2V5OiJ0cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcyxtPXRoaXMuZ2V0VHJpbW1lZFJvd3MoKSxfPXRoaXMuaXNWYWxpZENvbmZpZyhkKSxPPW07XyYmKE89QXJyYXkuZnJvbShuZXcg''@;'; put 'put ''U2V0KG0uY29uY2F0KGQpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVRyaW1Sb3ciLG0sTyxfKSYmKF8mJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKGZ1bmN0aW9uKCl7Um4oZCxmdW5jdGlvbihhZSl7aC50cmltbWVkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoYWUsITApfSl9''@;'; put 'put ''LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJUcmltUm93IixtLE8sXyxfJiZPLmxlbmd0aD5tLmxlbmd0aCkpfX0se2tleToidHJpbVJvdyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxtPTA7bTxkO20rKyloW21dPWFyZ3Vt''@;'; put 'put ''ZW50c1ttXTt0aGlzLnRyaW1Sb3dzKGgpfX0se2tleToidW50cmltUm93cyIsdmFsdWU6ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5nZXRUcmltbWVkUm93cygpLG09dGhpcy5pc1ZhbGlkQ29uZmlnKGQpLF89aCxPPXRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VmFsdWVzKCkuc2xpY2UoKSxYPWQu''@;'; put 'put ''bGVuZ3RoPjA7bSYmWCYmKFJuKGQsZnVuY3Rpb24ocGUpe09bcGVdPSExfSksXz1QcyhPLGZ1bmN0aW9uKHBlLGJlLHhlKXtyZXR1cm4gYmUmJnBlLnB1c2goeGUpLHBlfSxbXSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVudHJpbVJvdyIsaCxfLG0mJlgpJiYobSYmWCYmdGhp''@;'; put 'put ''cy50cmltbWVkUm93c01hcC5zZXRWYWx1ZXMoTyksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVW50cmltUm93IixoLF8sbSYmWCxtJiZfLmxlbmd0aDxoLmxlbmd0aCkpfX0se2tleToidW50cmltUm93Iix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3''@;'; put 'put ''IEFycmF5KGQpLG09MDttPGQ7bSsrKWhbbV09YXJndW1lbnRzW21dO3RoaXMudW50cmltUm93cyhoKX19LHtrZXk6ImlzVHJpbW1lZCIsdmFsdWU6ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VmFsdWVBdEluZGV4KGQpfHwhMX19LHtrZXk6InVudHJpbUFsbCIs''@;'; put 'put ''dmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVudHJpbVJvd3ModGhpcy5nZXRUcmltbWVkUm93cygpKX19LHtrZXk6ImlzVmFsaWRDb25maWciLHZhbHVlOmZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuaG90LmNvdW50U291cmNlUm93cygpO3JldHVybiBkLmV2ZXJ5KGZ1bmN0aW9uKG0pe3JldHVybiBO''@;'; put 'put ''dW1iZXIuaXNJbnRlZ2VyKG0pJiZtPj0wJiZtPGh9KX19LHtrZXk6Im9uTWFwSW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtIUF07QXJyYXkuaXNBcnJheShoKSYmdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24oKXtSbiho''@;'; put 'put ''LGZ1bmN0aW9uKG0pe2QudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KG0sITApfSl9LCEwKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dzYoRzMoYS5wcm90b3R5cGUpLCJkZXN0cm95Iix0aGlzKS5jYWxsKHRoaXMpfX1dLFt7a2V5OiJQTFVHSU5fS0VZIixnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gSFB9fSx7a2V5OiJQTFVHSU5fUFJJT1JJVFkiLGdldDpmdW5jdGlvbigpe3JldHVybiAzMzB9fV0pLGF9KEdhKTtmdW5jdGlvbiBrYihsKXtyZXR1cm4oa2I9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3I/ZnVuY3Rpb24oYyl7cmV0dXJuIHR5cGVvZiBjfTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYyE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGN9KShsKX1mdW5jdGlvbiBUNWUobCxj''@;'; put 'put ''KXtpZighKGwgaW5zdGFuY2VvZiBjKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBPNWUobCxjKXtmb3IodmFyIGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGY9Y1thXTtmLmVudW1lcmFibGU9Zi5lbnVtZXJhYmxlfHwh''@;'; put 'put ''MSxmLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZiYmKGYud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLHRNdChmLmtleSksZil9fWZ1bmN0aW9uIEQ1ZShsLGMsYSl7cmV0dXJuIGMmJk81ZShsLnByb3RvdHlwZSxjKSxhJiZPNWUobCxhKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxsfWZ1bmN0aW9uIHRNdChsKXt2YXIgYz1mdW5jdGlvbiBuTXQobCxjKXtpZigib2JqZWN0IiE9PWtiKGwpfHxudWxsPT09bClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGY9''@;'; put 'put ''YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PWtiKGYpKXJldHVybiBmO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3Ry''@;'; put 'put ''aW5nIik7cmV0dXJuInN5bWJvbCI9PT1rYihjKT9jOlN0cmluZyhjKX1mdW5jdGlvbiBJNWUobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyYmbnVsbCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24i''@;'; put 'put ''KTtsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMmJmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksYyYmZEoobCxjKX1mdW5jdGlv''@;'; put 'put ''biBkSihsLGMpe3JldHVybihkSj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihmLGQpe3JldHVybiBmLl9fcHJvdG9fXz1kLGZ9KShsLGMpfWZ1bmN0aW9uIFI1ZShsKXt2YXIgYz1mdW5jdGlvbiBvTXQoKXtpZih0eXBlb2YgUmVm''@;'; put 'put ''bGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVh''@;'; put 'put ''bixbXSxmdW5jdGlvbigpe30pKSwhMH1jYXRjaHtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQsZj1OUChsKTtpZihjKXt2YXIgaD1OUCh0aGlzKS5jb25zdHJ1Y3RvcjtkPVJlZmxlY3QuY29uc3RydWN0KGYsYXJndW1lbnRzLGgpfWVsc2UgZD1mLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24gck10KGwsYyl7aWYoYyYmKCJvYmplY3QiPT09a2IoYyl8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSlyZXR1cm4gYztpZih2b2lkIDAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmpl''@;'; put 'put ''Y3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uIGlNdChsKXtpZih2b2lkIDA9PT1sKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGx9KGwpfSh0aGlzLGQpfX1m''@;'; put 'put ''dW5jdGlvbiBOUChsKXtyZXR1cm4oTlA9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9KShsKX1mdW5jdGlvbiBMNWUobCxjKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gZE10KGwpe2lmKEFycmF5LmlzQXJyYXkobCkpcmV0dXJuIGx9KGwpfHxmdW5jdGlvbiBmTXQobCxjKXt2YXIgYT1udWxsPT1sP251bGw6dHlwZW9mIFN5bWJvbDwidSImJmxbU3ltYm9sLml0ZXJhdG9yXXx8bFsiQEBpdGVyYXRvciJdO2lmKG51bGwhPWEpe3ZhciBmLGQsaCxtLF89''@;'; put 'put ''W10sTz0hMCxYPSExO3RyeXtpZihoPShhPWEuY2FsbChsKSkubmV4dCwwPT09Yyl7aWYoT2JqZWN0KGEpIT09YSlyZXR1cm47Tz0hMX1lbHNlIGZvcig7IShPPShmPWguY2FsbChhKSkuZG9uZSkmJihfLnB1c2goZi52YWx1ZSksXy5sZW5ndGghPT1jKTtPPSEwKTt9Y2F0Y2goYWUpe1g9ITAs''@;'; put 'put ''ZD1hZX1maW5hbGx5e3RyeXtpZighTyYmbnVsbCE9YS5yZXR1cm4mJihtPWEucmV0dXJuKCksT2JqZWN0KG0pIT09bSkpcmV0dXJufWZpbmFsbHl7aWYoWCl0aHJvdyBkfX1yZXR1cm4gX319KGwsYyl8fFA1ZShsLGMpfHxmdW5jdGlvbiBjTXQoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZh''@;'; put 'put ''bGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIFA1ZShsLGMpe2lmKGwpe2lm''@;'; put 'put ''KCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gaEoobCxjKTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1hJiZsLmNvbnN0cnVjdG9yJiYoYT1sLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09YXx8IlNldCI9PT1hKXJl''@;'; put 'put ''dHVybiBBcnJheS5mcm9tKGwpO2lmKCJBcmd1bWVudHMiPT09YXx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QoYSkpcmV0dXJuIGhKKGwsYyl9fWZ1bmN0aW9uIGhKKGwsYyl7KG51bGw9PWN8fGM+bC5sZW5ndGgpJiYoYz1sLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBhPTAsZj1uZXcgQXJyYXkoYyk7YTxjO2ErKylmW2FdPWxbYV07cmV0dXJuIGZ9ZnVuY3Rpb24gb28obCl7dmFyIGM9dGhpczt0aGlzLmluc3RhbmNlPWwsdGhpcy5kb25lQWN0aW9ucz1bXSx0aGlzLnVuZG9uZUFjdGlvbnM9W10sdGhpcy5pZ25vcmVOZXdBY3Rpb25zPSExLHRoaXMuZW5h''@;'; put 'put ''YmxlZD0hMSxsLmFkZEhvb2soImFmdGVyQ2hhbmdlIixmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMsaD1hJiZhLmxlbmd0aDtoJiZhLmZpbmQoZnVuY3Rpb24oTyl7dmFyIFg9TDVlKE8sNCk7cmV0dXJuIFhbMl0hPT1YWzNdfSkmJmMuZG9uZShmdW5jdGlvbigpe3ZhciBYPWEucmVkdWNlKGZ1''@;'; put 'put ''bmN0aW9uKHBlLGJlKXtyZXR1cm4gcGUucHVzaChmdW5jdGlvbiBhTXQobCl7cmV0dXJuIGZ1bmN0aW9uIHVNdChsKXtpZihBcnJheS5pc0FycmF5KGwpKXJldHVybiBoSihsKX0obCl8fGZ1bmN0aW9uIHNNdChsKXtpZih0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9bFtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdfHxudWxsIT1sWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20obCl9KGwpfHxQNWUobCl8fGZ1bmN0aW9uIGxNdCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRl''@;'; put 'put ''cmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfShiZSkpLHBlfSxbXSk7Um4oWCxmdW5jdGlvbihwZSl7cGVbMV09bC5wcm9wVG9Db2wocGVbMV0pfSk7dmFyIGFlPWg+MT9kLmdldFNlbGVjdGVkKCk6W1tYWzBdWzBd''@;'; put 'put ''LFhbMF1bMV1dXTtyZXR1cm4gbmV3IG9vLkNoYW5nZUFjdGlvbihYLGFlKX0sZil9KSxsLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IixmdW5jdGlvbihhLGYsZCl7Yy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvby5DcmVhdGVSb3dBY3Rpb24oYSxmKX0sZCl9KSxsLmFkZEhvb2soImJl''@;'; put 'put ''Zm9yZVJlbW92ZVJvdyIsZnVuY3Rpb24oYSxmLGQsaCl7Yy5kb25lKGZ1bmN0aW9uKCl7dmFyIE89bC50b1BoeXNpY2FsUm93KGEpLFg9eGMoYy5pbnN0YW5jZS5nZXRTb3VyY2VEYXRhKE8sMCxPK2YtMSxjLmluc3RhbmNlLmNvdW50U291cmNlQ29scygpLTEpKTtyZXR1cm4gbmV3IG9vLlJl''@;'; put 'put ''bW92ZVJvd0FjdGlvbihPLFgsbC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbSxsLmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wLGwucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfSxoKX0pLGwuYWRkSG9vaygiYWZ0ZXJDcmVhdGVDb2wiLGZ1bmN0aW9uKGEsZixk''@;'; put 'put ''KXtjLmRvbmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG9vLkNyZWF0ZUNvbHVtbkFjdGlvbihhLGYpfSxkKX0pLGwuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbihhLGYsZCxoKXtjLmRvbmUoZnVuY3Rpb24oKXt2YXIgTz1jLmluc3RhbmNlLmdldFNvdXJjZURhdGFBcnJheSgp''@;'; put 'put ''LFg9KGMuaW5zdGFuY2UuY291bnRDb2xzKCkrYSklYy5pbnN0YW5jZS5jb3VudENvbHMoKSxhZT1bXSxwZT1bXSxiZT1bXTtfbyhPLmxlbmd0aC0xLGZ1bmN0aW9uKFplKXt2YXIgbHQ9W10sZHQ9T1taZV07X28oWCxYKyhmLTEpLGZ1bmN0aW9uKGd0KXtsdC5wdXNoKGR0W2wudG9QaHlzaWNh''@;'; put 'put ''bENvbHVtbihndCldKX0pLGFlLnB1c2gobHQpfSksX28oZi0xLGZ1bmN0aW9uKFplKXtiZS5wdXNoKGwudG9QaHlzaWNhbENvbHVtbihYK1plKSl9KSxBcnJheS5pc0FycmF5KGwuZ2V0U2V0dGluZ3MoKS5jb2xIZWFkZXJzKSYmX28oZi0xLGZ1bmN0aW9uKFplKXtwZS5wdXNoKGwuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKS5jb2xIZWFkZXJzW2wudG9QaHlzaWNhbENvbHVtbihYK1plKV18fG51bGwpfSk7dmFyIHhlPWwuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksVmU9bC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4gbmV3IG9vLlJlbW92ZUNv''@;'; put 'put ''bHVtbkFjdGlvbihYLGJlLGFlLHBlLHhlLFZlLGwuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCl9LGgpfSksbC5hZGRIb29rKCJiZWZvcmVDZWxsQWxpZ25tZW50IixmdW5jdGlvbihhLGYsZCxoKXtjLmRvbmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG9vLkNlbGxBbGlnbm1lbnRB''@;'; put 'put ''Y3Rpb24oYSxmLGQsaCl9KX0pLGwuYWRkSG9vaygiYmVmb3JlRmlsdGVyIixmdW5jdGlvbihhKXtjLmRvbmUoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG9vLkZpbHRlcnNBY3Rpb24oYSl9KX0pLGwuYWRkSG9vaygiYmVmb3JlUm93TW92ZSIsZnVuY3Rpb24oYSxmKXshMSE9PWEmJmMuZG9uZShm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBuZXcgb28uUm93TW92ZUFjdGlvbihhLGYpfSl9KSxsLmFkZEhvb2soImJlZm9yZU1lcmdlQ2VsbHMiLGZ1bmN0aW9uKGEsZil7Znx8Yy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvby5NZXJnZUNlbGxzQWN0aW9uKGwsYSl9KX0pLGwuYWRkSG9vaygiYWZ0''@;'; put 'put ''ZXJVbm1lcmdlQ2VsbHMiLGZ1bmN0aW9uKGEsZil7Znx8Yy5kb25lKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvby5Vbm1lcmdlQ2VsbHNBY3Rpb24obCxhKX0pfSksbC5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7Yy5pbml0KCl9KX1vby5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbihs''@;'; put 'put ''LGMpe2lmKCF0aGlzLmlnbm9yZU5ld0FjdGlvbnMmJiJVbmRvUmVkby51bmRvIiE9PWMmJiJVbmRvUmVkby5yZWRvIiE9PWMmJiJhdXRvIiE9PWMpe3ZhciBmPXRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKTtpZighMSE9PXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0No''@;'; put 'put ''YW5nZSIsZixjKSl7dmFyIGg9bCgpLG09dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5kb25lQWN0aW9ucy5wdXNoKGgpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVW5kb1N0YWNrQ2hhbmdlIixmLHRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKSksdGhpcy5pbnN0YW5jZS5y''@;'; put 'put ''dW5Ib29rcygiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIixtKSx0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPTAsdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLG0sdGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCkpfX19LG9vLnByb3RvdHlwZS51bmRvPWZ1bmN0''@;'; put 'put ''aW9uKCl7aWYodGhpcy5pc1VuZG9BdmFpbGFibGUoKSl7dmFyIGw9dGhpcy5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0NoYW5nZSIsbCk7dmFyIGM9dGhpcy5kb25lQWN0aW9ucy5wb3AoKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tz''@;'; put 'put ''KCJhZnRlclVuZG9TdGFja0NoYW5nZSIsbCx0aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCkpO3ZhciBhPXhjKGMpO2lmKCExPT09dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlVW5kbyIsYSkpcmV0dXJuO3RoaXMuaWdub3JlTmV3QWN0aW9ucz0hMDt2YXIgZD10aGlzLGg9dGhpcy51bmRv''@;'; put 'put ''bmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIixoKSxjLnVuZG8odGhpcy5pbnN0YW5jZSxmdW5jdGlvbigpe2QuaWdub3JlTmV3QWN0aW9ucz0hMSxkLnVuZG9uZUFjdGlvbnMucHVzaChjKX0pLHRoaXMuaW5zdGFuY2UucnVu''@;'; put 'put ''SG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixoLHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclVuZG8iLGEpfX0sb28ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVkb0F2YWlsYWJsZSgpKXt2YXIgbD10aGlz''@;'; put 'put ''LnVuZG9uZUFjdGlvbnMuc2xpY2UoKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZWRvU3RhY2tDaGFuZ2UiLGwpO3ZhciBjPXRoaXMudW5kb25lQWN0aW9ucy5wb3AoKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclJlZG9TdGFja0NoYW5nZSIsbCx0aGlzLnVuZG9uZUFj''@;'; put 'put ''dGlvbnMuc2xpY2UoKSk7dmFyIGE9eGMoYyk7aWYoITE9PT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZWRvIixhKSlyZXR1cm47dGhpcy5pZ25vcmVOZXdBY3Rpb25zPSEwO3ZhciBkPXRoaXMsaD10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29r''@;'; put 'put ''cygiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixoKSxjLnJlZG8odGhpcy5pbnN0YW5jZSxmdW5jdGlvbigpe2QuaWdub3JlTmV3QWN0aW9ucz0hMSxkLmRvbmVBY3Rpb25zLnB1c2goYyl9KSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclVuZG9TdGFja0NoYW5nZSIsaCx0aGlzLmRvbmVB''@;'; put 'put ''Y3Rpb25zLnNsaWNlKCkpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVkbyIsYSl9fSxvby5wcm90b3R5cGUuaXNVbmRvQXZhaWxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9uZUFjdGlvbnMubGVuZ3RoPjB9LG9vLnByb3RvdHlwZS5pc1JlZG9BdmFpbGFibGU9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy51bmRvbmVBY3Rpb25zLmxlbmd0aD4wfSxvby5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmRvbmVBY3Rpb25zLmxlbmd0aD0wLHRoaXMudW5kb25lQWN0aW9ucy5sZW5ndGg9MH0sb28ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmVuYWJsZWR9LG9vLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXtpZighdGhpcy5pc0VuYWJsZWQoKSl7dmFyIGw9dGhpcy5pbnN0YW5jZTt0aGlzLmVuYWJsZWQ9ITAsZnVuY3Rpb24gZ010KGwpe2wudW5kbz1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLnVuZG8oKX0s''@;'; put 'put ''bC5yZWRvPWZ1bmN0aW9uKCl7cmV0dXJuIGwudW5kb1JlZG8ucmVkbygpfSxsLmlzVW5kb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmlzVW5kb0F2YWlsYWJsZSgpfSxsLmlzUmVkb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmlzUmVkb0F2''@;'; put 'put ''YWlsYWJsZSgpfSxsLmNsZWFyVW5kbz1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmNsZWFyKCl9fShsKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksbC5hZGRIb29rKCJhZnRlckNoYW5nZSIsSDVlKX19LG9vLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0Vu''@;'; put 'put ''YWJsZWQoKSl7dmFyIGw9dGhpcy5pbnN0YW5jZTt0aGlzLmVuYWJsZWQ9ITEsZnVuY3Rpb24gdk10KGwpe2RlbGV0ZSBsLnVuZG8sZGVsZXRlIGwucmVkbyxkZWxldGUgbC5pc1VuZG9BdmFpbGFibGUsZGVsZXRlIGwuaXNSZWRvQXZhaWxhYmxlLGRlbGV0ZSBsLmNsZWFyVW5kb30obCksdGhp''@;'; put 'put ''cy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksbC5yZW1vdmVIb29rKCJhZnRlckNoYW5nZSIsSDVlKX19LG9vLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpLHRoaXMuaW5zdGFuY2U9bnVsbCx0aGlzLmRvbmVBY3Rpb25zPW51bGwsdGhpcy51bmRvbmVBY3Rpb25zPW51''@;'; put 'put ''bGx9LChvby5BY3Rpb249ZnVuY3Rpb24oKXt9KS5wcm90b3R5cGUudW5kbz1mdW5jdGlvbigpe30sb28uQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKCl7fSxvby5DaGFuZ2VBY3Rpb249ZnVuY3Rpb24obCxjKXt0aGlzLmNoYW5nZXM9bCx0aGlzLnNlbGVjdGVkPWMsdGhpcy5hY3Rp''@;'; put 'put ''b25UeXBlPSJjaGFuZ2UifSxmMyhvby5DaGFuZ2VBY3Rpb24sb28uQWN0aW9uKSxvby5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXtmb3IodmFyIGE9eGModGhpcy5jaGFuZ2VzKSxmPWwuY291bnRFbXB0eVJvd3MoITApLGQ9bC5jb3VudEVtcHR5Q29scyghMCks''@;'; put 'put ''aD0wLG09YS5sZW5ndGg7aDxtO2grKylhW2hdLnNwbGljZSgzLDEpO2wuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIixjKSxsLnNldERhdGFBdENlbGwoYSxudWxsLG51bGwsIlVuZG9SZWRvLnVuZG8iKTtmb3IodmFyIF89MCxPPWEubGVuZ3RoO188TztfKyspe3ZhciBYPUw1ZShhW19dLDIp''@;'; put 'put ''LGFlPVhbMF0scGU9WFsxXTtsLmdldFNldHRpbmdzKCkubWluU3BhcmVSb3dzJiZhZSsxK2wuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3M9PT1sLmNvdW50Um93cygpJiZmPT09bC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyYmKGwuYWx0ZXIoInJlbW92ZV9yb3ciLHBhcnNlSW50KGFl''@;'; put 'put ''KzEsMTApLGwuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3MpLGwudW5kb1JlZG8uZG9uZUFjdGlvbnMucG9wKCkpLGwuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZUNvbHMmJnBlKzErbC5nZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scz09PWwuY291bnRDb2xzKCkmJmQ9PT1sLmdldFNldHRpbmdz''@;'; put 'put ''KCkubWluU3BhcmVDb2xzJiYobC5hbHRlcigicmVtb3ZlX2NvbCIscGFyc2VJbnQocGUrMSwxMCksbC5nZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scyksbC51bmRvUmVkby5kb25lQWN0aW9ucy5wb3AoKSl9bC5zZWxlY3RDZWxscyh0aGlzLnNlbGVjdGVkLCExLCExKX0sb28uQ2hhbmdlQWN0''@;'; put 'put ''aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7Zm9yKHZhciBhPXhjKHRoaXMuY2hhbmdlcyksZj0wLGQ9YS5sZW5ndGg7ZjxkO2YrKylhW2ZdLnNwbGljZSgyLDEpO2wuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIixjKSxsLnNldERhdGFBdENlbGwoYSxudWxsLG51bGwsIlVuZG9S''@;'; put 'put ''ZWRvLnJlZG8iKSx0aGlzLnNlbGVjdGVkJiZsLnNlbGVjdENlbGxzKHRoaXMuc2VsZWN0ZWQsITEsITEpfSxvby5DcmVhdGVSb3dBY3Rpb249ZnVuY3Rpb24obCxjKXt0aGlzLmluZGV4PWwsdGhpcy5hbW91bnQ9Yyx0aGlzLmFjdGlvblR5cGU9Imluc2VydF9yb3cifSxmMyhvby5DcmVhdGVS''@;'; put 'put ''b3dBY3Rpb24sb28uQWN0aW9uKSxvby5DcmVhdGVSb3dBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXt2YXIgYT1sLmNvdW50Um93cygpLGY9bC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93czt0aGlzLmluZGV4Pj1hJiZ0aGlzLmluZGV4LWY8YSYmKHRoaXMuaW5kZXgtPWYp''@;'; put 'put ''LGwuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlUm93IixjKSxsLmFsdGVyKCJyZW1vdmVfcm93Iix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby51bmRvIil9LG9vLkNyZWF0ZVJvd0FjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe2wuYWRkSG9va09uY2UoImFmdGVy''@;'; put 'put ''Q3JlYXRlUm93IixjKSxsLmFsdGVyKCJpbnNlcnRfcm93X2Fib3ZlIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9LG9vLlJlbW92ZVJvd0FjdGlvbj1mdW5jdGlvbihsLGMsYSxmLGQpe3RoaXMuaW5kZXg9bCx0aGlzLmRhdGE9Yyx0aGlzLmFjdGlvblR5cGU9InJl''@;'; put 'put ''bW92ZV9yb3ciLHRoaXMuZml4ZWRSb3dzQm90dG9tPWEsdGhpcy5maXhlZFJvd3NUb3A9Zix0aGlzLnJvd0luZGV4ZXNTZXF1ZW5jZT1kfSxmMyhvby5SZW1vdmVSb3dBY3Rpb24sb28uQWN0aW9uKSxvby5SZW1vdmVSb3dBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXt2YXIg''@;'; put 'put ''YT10aGlzLGY9bC5nZXRTZXR0aW5ncygpLGQ9W107Zi5maXhlZFJvd3NCb3R0b209dGhpcy5maXhlZFJvd3NCb3R0b20sZi5maXhlZFJvd3NUb3A9dGhpcy5maXhlZFJvd3NUb3AsdGhpcy5kYXRhLmZvckVhY2goZnVuY3Rpb24oaCxtKXtPYmplY3Qua2V5cyhoKS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KF8pe3ZhciBPPXBhcnNlSW50KF8sMTApO2QucHVzaChbYS5pbmRleCttLGlzTmFOKE8pP186TyxoW19dXSl9KX0pLGwuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLHRoaXMuaW5kZXgsdGhpcy5kYXRhLmxlbmd0aCwiVW5kb1JlZG8udW5kbyIpLGwuYWRkSG9va09uY2UoImFmdGVyVmlld1Jl''@;'; put 'put ''bmRlciIsYyksbC5zZXRTb3VyY2VEYXRhQXRDZWxsKGQsbnVsbCxudWxsLCJVbmRvUmVkby51bmRvIiksbC5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UodGhpcy5yb3dJbmRleGVzU2VxdWVuY2UpfSxvby5SZW1vdmVSb3dBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24o''@;'; put 'put ''bCxjKXtsLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZVJvdyIsYyksbC5hbHRlcigicmVtb3ZlX3JvdyIsdGhpcy5pbmRleCx0aGlzLmRhdGEubGVuZ3RoLCJVbmRvUmVkby5yZWRvIil9LG9vLkNyZWF0ZUNvbHVtbkFjdGlvbj1mdW5jdGlvbihsLGMpe3RoaXMuaW5kZXg9bCx0aGlzLmFtb3Vu''@;'; put 'put ''dD1jLHRoaXMuYWN0aW9uVHlwZT0iaW5zZXJ0X2NvbCJ9LGYzKG9vLkNyZWF0ZUNvbHVtbkFjdGlvbixvby5BY3Rpb24pLG9vLkNyZWF0ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihsLGMpe2wuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIixjKSxsLmFsdGVyKCJy''@;'; put 'put ''ZW1vdmVfY29sIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby51bmRvIil9LG9vLkNyZWF0ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe2wuYWRkSG9va09uY2UoImFmdGVyQ3JlYXRlQ29sIixjKSxsLmFsdGVyKCJpbnNlcnRfY29sX3N0YXJ0Iix0''@;'; put 'put ''aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5yZWRvIil9LG9vLlJlbW92ZUNvbHVtbkFjdGlvbj1mdW5jdGlvbihsLGMsYSxmLGQsaCxtKXt0aGlzLmluZGV4PWwsdGhpcy5pbmRleGVzPWMsdGhpcy5kYXRhPWEsdGhpcy5hbW91bnQ9dGhpcy5kYXRhWzBdLmxlbmd0aCx0aGlzLmhl''@;'; put 'put ''YWRlcnM9Zix0aGlzLmNvbHVtblBvc2l0aW9ucz1kLnNsaWNlKDApLHRoaXMucm93UG9zaXRpb25zPWguc2xpY2UoMCksdGhpcy5hY3Rpb25UeXBlPSJyZW1vdmVfY29sIix0aGlzLmZpeGVkQ29sdW1uc1N0YXJ0PW19LGYzKG9vLlJlbW92ZUNvbHVtbkFjdGlvbixvby5BY3Rpb24pLG9vLlJl''@;'; put 'put ''bW92ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihsLGMpe3ZhciBhPXRoaXM7bC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0PXRoaXMuZml4ZWRDb2x1bW5zU3RhcnQ7Zm9yKHZhciBkPXRoaXMuaW5kZXhlcy5zbGljZSgwKS5zb3J0KCksaD1mdW5jdGlvbihi''@;'; put 'put ''ZSx4ZSxWZSl7cmV0dXJuIFZlW2EuaW5kZXhlcy5pbmRleE9mKGRbeGVdKV19LG09dGhpcy5kYXRhLmxlbmd0aCxfPVtdLE89MDtPPG07TysrKV8ucHVzaChoYSh0aGlzLmRhdGFbT10saCkpO3ZhciBYPWhhKHRoaXMuaGVhZGVycyxoKSxhZT1bXTtsLmFsdGVyKCJpbnNlcnRfY29sX3N0YXJ0''@;'; put 'put ''Iix0aGlzLmluZGV4ZXNbMF0sdGhpcy5pbmRleGVzLmxlbmd0aCwiVW5kb1JlZG8udW5kbyIpLFJuKGwuZ2V0U291cmNlRGF0YUFycmF5KCksZnVuY3Rpb24ocGUsYmUpe1JuKGQsZnVuY3Rpb24oeGUsVmUpe3BlW3hlXT1fW2JlXVtWZV0sYWUucHVzaChbYmUseGUscGVbeGVdXSl9KX0pLGwu''@;'; put 'put ''c2V0U291cmNlRGF0YUF0Q2VsbChhZSx2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51bmRvIiksdHlwZW9mIHRoaXMuaGVhZGVyczwidSImJlJuKFgsZnVuY3Rpb24ocGUsYmUpe2wuZ2V0U2V0dGluZ3MoKS5jb2xIZWFkZXJzW2RbYmVdXT1wZX0pLGwuYmF0Y2hFeGVjdXRpb24oZnVuY3Rpb24o''@;'; put 'put ''KXtsLnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZShhLnJvd1Bvc2l0aW9ucyksbC5jb2x1bW5JbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoYS5jb2x1bW5Qb3NpdGlvbnMpfSwhMCksbC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixjKSxsLnJlbmRlcigpfSxv''@;'; put 'put ''by5SZW1vdmVDb2x1bW5BY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24obCxjKXtsLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZUNvbCIsYyksbC5hbHRlcigicmVtb3ZlX2NvbCIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8ucmVkbyIpfSxvby5DZWxsQWxpZ25tZW50QWN0''@;'; put 'put ''aW9uPWZ1bmN0aW9uKGwsYyxhLGYpe3RoaXMuc3RhdGVCZWZvcmU9bCx0aGlzLnJhbmdlPWMsdGhpcy50eXBlPWEsdGhpcy5hbGlnbm1lbnQ9Zn0sb28uQ2VsbEFsaWdubWVudEFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihsLGMpe3ZhciBhPXRoaXM7Um4odGhpcy5yYW5nZSxmdW5j''@;'; put 'put ''dGlvbihmKXtmLmZvckFsbChmdW5jdGlvbihkLGgpe2Q+PTAmJmg+PTAmJmwuc2V0Q2VsbE1ldGEoZCxoLCJjbGFzc05hbWUiLGEuc3RhdGVCZWZvcmVbZF1baF18fCIgaHRMZWZ0Iil9KX0pLGwuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsYyksbC5yZW5kZXIoKX0sb28uQ2VsbEFs''@;'; put 'put ''aWdubWVudEFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe3o0KHRoaXMucmFuZ2UsdGhpcy50eXBlLHRoaXMuYWxpZ25tZW50LGZ1bmN0aW9uKGEsZil7cmV0dXJuIGwuZ2V0Q2VsbE1ldGEoYSxmKX0sZnVuY3Rpb24oYSxmLGQsaCl7cmV0dXJuIGwuc2V0Q2VsbE1ldGEoYSxm''@;'; put 'put ''LGQsaCl9KSxsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLGwucmVuZGVyKCl9LG9vLkZpbHRlcnNBY3Rpb249ZnVuY3Rpb24obCl7dGhpcy5jb25kaXRpb25zU3RhY2s9bCx0aGlzLmFjdGlvblR5cGU9ImZpbHRlciJ9LGYzKG9vLkZpbHRlcnNBY3Rpb24sb28uQWN0aW9uKSxv''@;'; put 'put ''by5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGwsYyl7dmFyIGE9bC5nZXRQbHVnaW4oImZpbHRlcnMiKTtsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLGEuY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29uZGl0aW9u''@;'; put 'put ''c1N0YWNrLnNsaWNlKDAsdGhpcy5jb25kaXRpb25zU3RhY2subGVuZ3RoLTEpKSxhLmZpbHRlcigpfSxvby5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7dmFyIGE9bC5nZXRQbHVnaW4oImZpbHRlcnMiKTtsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIi''@;'; put 'put ''LGMpLGEuY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29uZGl0aW9uc1N0YWNrKSxhLmZpbHRlcigpfTt2YXIgcE10PWZ1bmN0aW9uKGwpe0k1ZShhLGwpO3ZhciBjPVI1ZShhKTtmdW5jdGlvbiBhKGYsZCl7dmFyIGg7VDVlKHRoaXMsYSksKGg9Yy5jYWxs''@;'; put 'put ''KHRoaXMpKS5jZWxsUmFuZ2U9ZDt2YXIgbT1oLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpLF89aC5jZWxsUmFuZ2UuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7cmV0dXJuIGgucmFuZ2VEYXRhPWYuZ2V0RGF0YShtLnJvdyxtLmNvbCxfLnJvdyxfLmNvbCksaH1yZXR1cm4gRDVlKGEsW3tr''@;'; put 'put ''ZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09ZC5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGgpLG0udW5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlLCEwKTt2YXIgXz10aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENv''@;'; put 'put ''cm5lcigpO2QucG9wdWxhdGVGcm9tQXJyYXkoXy5yb3csXy5jb2wsdGhpcy5yYW5nZURhdGEsdm9pZCAwLHZvaWQgMCwiTWVyZ2VDZWxscyIpfX0se2tleToicmVkbyIsdmFsdWU6ZnVuY3Rpb24oZCxoKXt2YXIgbT1kLmdldFBsdWdpbigibWVyZ2VDZWxscyIpO2QuYWRkSG9va09uY2UoImFm''@;'; put 'put ''dGVyVmlld1JlbmRlciIsaCksbS5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlKX19XSksYX0ob28uQWN0aW9uKTtvby5NZXJnZUNlbGxzQWN0aW9uPXBNdDt2YXIgbU10PWZ1bmN0aW9uKGwpe0k1ZShhLGwpO3ZhciBjPVI1ZShhKTtmdW5jdGlvbiBhKGYsZCl7dmFyIGg7cmV0dXJuIFQ1ZSh0''@;'; put 'put ''aGlzLGEpLChoPWMuY2FsbCh0aGlzKSkuY2VsbFJhbmdlPWQsaH1yZXR1cm4gRDVlKGEsW3trZXk6InVuZG8iLHZhbHVlOmZ1bmN0aW9uKGQsaCl7dmFyIG09ZC5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTtkLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGgpLG0ubWVyZ2VSYW5nZSh0''@;'; put 'put ''aGlzLmNlbGxSYW5nZSwhMCl9fSx7a2V5OiJyZWRvIix2YWx1ZTpmdW5jdGlvbihkLGgpe3ZhciBtPWQuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7ZC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixoKSxtLnVubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCksZC5yZW5kZXIoKX19''@;'; put 'put ''XSksYX0ob28uQWN0aW9uKTtmdW5jdGlvbiBINWUobCxjKXtpZigibG9hZERhdGEiPT09YylyZXR1cm4gdGhpcy51bmRvUmVkby5jbGVhcigpfW9vLlVubWVyZ2VDZWxsc0FjdGlvbj1tTXQsb28uUm93TW92ZUFjdGlvbj1mdW5jdGlvbihsLGMpe3RoaXMucm93cz1sLnNsaWNlKCksdGhpcy5m''@;'; put 'put ''aW5hbEluZGV4PWMsdGhpcy5hY3Rpb25UeXBlPSJyb3dfbW92ZSJ9LGYzKG9vLlJvd01vdmVBY3Rpb24sb28uQWN0aW9uKSxvby5Sb3dNb3ZlQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGwsYyl7dmFyIGE9dGhpcyxmPWwuZ2V0UGx1Z2luKCJtYW51YWxSb3dNb3ZlIiksZD1bXS5j''@;'; put 'put ''b25jYXQodGhpcy5yb3dzKSxoPWQuZmlsdGVyKGZ1bmN0aW9uKGFlKXtyZXR1cm4gYWU+YS5maW5hbEluZGV4fSksbT1kLmZpbHRlcihmdW5jdGlvbihhZSl7cmV0dXJuIGFlPD1hLmZpbmFsSW5kZXh9KSxfPWguc29ydChmdW5jdGlvbihhZSxwZSl7cmV0dXJuIHBlLWFlfSkuY29uY2F0KG0u''@;'; put 'put ''c29ydChmdW5jdGlvbihhZSxwZSl7cmV0dXJuIGFlLXBlfSkpO2wuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsYyk7Zm9yKHZhciBPPTA7TzxfLmxlbmd0aDtPKz0xKXt2YXIgWD1sLnRvVmlzdWFsUm93KF9bT10pO2YubW92ZVJvdyhYLF9bT10pfWwucmVuZGVyKCksbC5kZXNlbGVj''@;'; put 'put ''dENlbGwoKSxsLnNlbGVjdFJvd3ModGhpcy5yb3dzWzBdLHRoaXMucm93c1swXSt0aGlzLnJvd3MubGVuZ3RoLTEpfSxvby5Sb3dNb3ZlQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7dmFyIGE9bC5nZXRQbHVnaW4oIm1hbnVhbFJvd01vdmUiKTtsLmFkZEhvb2tPbmNlKCJh''@;'; put 'put ''ZnRlclZpZXdSZW5kZXIiLGMpLGEubW92ZVJvd3ModGhpcy5yb3dzLnNsaWNlKCksdGhpcy5maW5hbEluZGV4KSxsLnJlbmRlcigpLGwuZGVzZWxlY3RDZWxsKCksbC5zZWxlY3RSb3dzKHRoaXMuZmluYWxJbmRleCx0aGlzLmZpbmFsSW5kZXgrdGhpcy5yb3dzLmxlbmd0aC0xKX0sb28ucHJv''@;'; put 'put ''dG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLmluc3RhbmNlLmdldFNldHRpbmdzKCkudW5kbyxjPXR5cGVvZiBsPiJ1Inx8bDt0aGlzLmluc3RhbmNlLnVuZG9SZWRvfHwodGhpcy5pbnN0YW5jZS51bmRvUmVkbz10aGlzKSxjP3RoaXMuaW5zdGFuY2UudW5kb1JlZG8uZW5hYmxl''@;'; put 'put ''KCk6dGhpcy5pbnN0YW5jZS51bmRvUmVkby5kaXNhYmxlKCl9LG9vLnByb3RvdHlwZS5yZWdpc3RlclNob3J0Y3V0cz1mdW5jdGlvbigpe3ZhciBsPXRoaXM7dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXRzKFt7a2V5czpb''@;'; put 'put ''WyJDb250cm9sL01ldGEiLCJ6Il1dLGNhbGxiYWNrOmZ1bmN0aW9uKCl7bC51bmRvKCl9fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJ5Il0sWyJDb250cm9sL01ldGEiLCJTaGlmdCIsInoiXV0sY2FsbGJhY2s6ZnVuY3Rpb24oKXtsLnJlZG8oKX19XSx7cnVuT25seUlmOmZ1bmN0aW9uKG0p''@;'; put 'put ''e3JldHVybiFtLmFsdEtleX0sZ3JvdXA6InVuZG9SZWRvIn0pfSxvby5wcm90b3R5cGUudW5yZWdpc3RlclNob3J0Y3V0cz1mdW5jdGlvbigpe3RoaXMuaW5zdGFuY2UuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoInVuZG9S''@;'; put 'put ''ZWRvIil9O3ZhciBORT11by5nZXRTaW5nbGV0b24oKTtORS5hZGQoImFmdGVyVXBkYXRlU2V0dGluZ3MiLGZ1bmN0aW9uKCl7dmFyIGw7bnVsbD09PShsPXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpKXx8dm9pZCAwPT09bHx8bC5pbml0KCl9KSxORS5yZWdpc3RlcigiYmVmb3JlVW5kbyIp''@;'; put 'put ''LE5FLnJlZ2lzdGVyKCJhZnRlclVuZG8iKSxORS5yZWdpc3RlcigiYmVmb3JlUmVkbyIpLE5FLnJlZ2lzdGVyKCJhZnRlclJlZG8iKSxvby5QTFVHSU5fS0VZPSJ1bmRvUmVkbyIsb28uU0VUVElOR19LRVlTPSEwO2NvbnN0IHlNdD1vbztmdW5jdGlvbiBONWUoKXsoZnVuY3Rpb24gbGN0KCl7''@;'; put 'put ''WTAoQTkpLFkwKG9LKSxZMCgkaGUpLFkwKFFoZSksWTAodUspLFkwKHRLKSxZMChuMmUpLFkwKGkyZSksWTAoS3V0KSxZMChENSksWTAoczJlKX0pKCksZnVuY3Rpb24gd2N0KCl7TmgoejkpLE5oKGJrKSxOaChnSyksTmgobUspLE5oKHlLKSxOaChiSyksTmgoVjQpLE5oKF9LKX0oKSxmdW5j''@;'; put 'put ''dGlvbiBBY3QoKXtVNyhfayksVTcod0wpLFU3KHdLKSxVNyhDTCl9KCksZnVuY3Rpb24gWWN0KCl7QmQoT2N0KSxCZChJY3QpLEJkKExjdCksQmQoRmN0KSxCZChOY3QpLEJkKEJjdCksQmQoemN0KSxCZChWaGUpLEJkKFpjdCl9KCksZnVuY3Rpb24gYk10KCl7VWEoRjB0KSxVYShhMXQpLFVh''@;'; put 'put ''KE0xdCksVWEodmZ0KSxVYShGZnQpLFVhKHkzZSksVWEodGh0KSxVYShMaHQpLFVhKEszZSksVWEoUjN0KSxVYShhcHQpLFVhKHZwdCksVWEoa3BlKSxVYSh3NHQpLFVhKFE2dCksVWEoUTh0KSxVYShNdnQpLFVhKEt2dCksVWEoeTd0KSxVYShhOXQpLFVhKHY5dCksVWEob3l0KSxVYShneXQp''@;'; put 'put ''LFVhKHBidCksVWEoUGJ0KSxVYSgkYnQpLFVhKEN3dCksVWEoWUN0KSxVYSh1U3QpLFVhKFRTdCksVWEoelN0KSxVYShlTXQpLFVhKHlNdCl9KCl9bGV0ICQzPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1v''@;'; put 'put ''ZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2JvXX0pLGx9KSgpLFZQPSgoKT0+e2NsYXNzIGx7bmdPbkluaXQoKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVp''@;'; put 'put ''bmo9eGkoe3Byb3ZpZGVyczpbWGosSmpdLGltcG9ydHM6W2JvLGRjLG80LElkLCQzXX0pLGx9KSgpLFZFPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGko''@;'; put 'put ''e2ltcG9ydHM6W2JvXX0pLGx9KSgpLFY1ZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltibyxJZCxibyxkY119KSxsfSkoKSxCRT0o''@;'; put 'put ''KCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltibyxkYyxJZCxvNCxWUCxWRSwkMyxWNWVdfSksbH0pKCk7dmFyIHBKLG1KLGdKLHZKLHlK''@;'; put 'put ''LEM2PVQoODM0MTcpO2NsYXNzIF9NdHtjb25zdHJ1Y3Rvcigpe3RoaXMucXVldWU9W119YWRkVG9RdWV1ZShjKXt0aGlzLnF1ZXVlLnB1c2goLi4uYyl9fVQoNDM5OSksTjVlKCksZnVuY3Rpb24gd010KGwpe3ZhciBjPSEodHlwZW9mIHdpbmRvdz4idSIpJiZ3aW5kb3cualF1ZXJ5O2MmJihj''@;'; put 'put ''LmZuLmhhbmRzb250YWJsZT1mdW5jdGlvbihhKXt2YXIgbSxmPXRoaXMuZmlyc3QoKSxkPWYuZGF0YSgiaGFuZHNvbnRhYmxlIik7aWYoInN0cmluZyIhPXR5cGVvZiBhKXt2YXIgaD1hfHx7fTtyZXR1cm4gZD9kLnVwZGF0ZVNldHRpbmdzKGgpOihkPW5ldyBsLkNvcmUoZlswXSxoKSxmLmRh''@;'; put 'put ''dGEoImhhbmRzb250YWJsZSIsZCksZC5pbml0KCkpLGZ9aWYoZCl7aWYoISh0eXBlb2YgZFthXTwidSIpKXRocm93IG5ldyBFcnJvcigiSGFuZHNvbnRhYmxlIGRvIG5vdCBwcm92aWRlIGFjdGlvbjogIi5jb25jYXQoYSkpO2Zvcih2YXIgXyxPPWFyZ3VtZW50cy5sZW5ndGgsWD1uZXcgQXJy''@;'; put 'put ''YXkoTz4xP08tMTowKSxhZT0xO2FlPE87YWUrKylYW2FlLTFdPWFyZ3VtZW50c1thZV07bT0oXz1kW2FdKS5jYWxsLmFwcGx5KF8sW2RdLmNvbmNhdChYKSksImRlc3Ryb3kiPT09YSYmZi5yZW1vdmVEYXRhKCl9cmV0dXJuIG19KX0oX2EpLF9hLl9fR2hvc3RUYWJsZT1TSyxfYS5fZ2V0TGlz''@;'; put 'put ''dGVuZXJzQ291bnRlcj1mdW5jdGlvbiBCR2UoKXtyZXR1cm4gdFJ9LF9hLl9nZXRSZWdpc3RlcmVkTWFwc0NvdW50ZXI9ZnVuY3Rpb24gVm50KCl7cmV0dXJuIG5HfSxfYS5FdmVudE1hbmFnZXI9ZnM7dmFyIENNdD1bayxoZSx6LFYsc2UsSyxILEUsdixCLEosUl0sU010PVtMLEldO19hLmhl''@;'; put 'put ''bHBlcj17fSxfYS5kb209e30sUm4oQ010LGZ1bmN0aW9uKGwpe1JuKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGwpLGZ1bmN0aW9uKGMpeyJfIiE9PWMuY2hhckF0KDApJiYoX2EuaGVscGVyW2NdPWxbY10pfSl9KSxSbihTTXQsZnVuY3Rpb24obCl7Um4oT2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5TmFtZXMobCksZnVuY3Rpb24oYyl7Il8iIT09Yy5jaGFyQXQoMCkmJihfYS5kb21bY109bFtjXSl9KX0pLF9hLmNlbGxUeXBlcz1udWxsIT09KHBKPV9hLmNlbGxUeXBlcykmJnZvaWQgMCE9PXBKP3BKOnt9LFJuKGVhdCgpLGZ1bmN0aW9uKGwpe19hLmNlbGxUeXBlc1tsXT1WJChsKX0p''@;'; put 'put ''LF9hLmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlPUJkLF9hLmNlbGxUeXBlcy5nZXRDZWxsVHlwZT1WJCxfYS5lZGl0b3JzPW51bGwhPT0obUo9X2EuZWRpdG9ycykmJnZvaWQgMCE9PW1KP21KOnt9LFJuKElHZSgpLGZ1bmN0aW9uKGwpe19hLmVkaXRvcnNbIiIuY29uY2F0KEFjKGwpLCJF''@;'; put 'put ''ZGl0b3IiKV09ZVIobCl9KSxfYS5lZGl0b3JzLnJlZ2lzdGVyRWRpdG9yPVkwLF9hLmVkaXRvcnMuZ2V0RWRpdG9yPWVSLF9hLnJlbmRlcmVycz1udWxsIT09KGdKPV9hLnJlbmRlcmVycykmJnZvaWQgMCE9PWdKP2dKOnt9LFJuKEskZSgpLGZ1bmN0aW9uKGwpe3ZhciBjPW9SKGwpOyJiYXNl''@;'; put 'put ''Ij09PWwmJihfYS5yZW5kZXJlcnMuY2VsbERlY29yYXRvcj1jKSxfYS5yZW5kZXJlcnNbIiIuY29uY2F0KEFjKGwpLCJSZW5kZXJlciIpXT1jfSksX2EucmVuZGVyZXJzLnJlZ2lzdGVyUmVuZGVyZXI9TmgsX2EucmVuZGVyZXJzLmdldFJlbmRlcmVyPW9SLF9hLnZhbGlkYXRvcnM9bnVsbCE9''@;'; put 'put ''PSh2Sj1fYS52YWxpZGF0b3JzKSYmdm9pZCAwIT09dko/dko6e30sUm4oSiRlKCksZnVuY3Rpb24obCl7X2EudmFsaWRhdG9yc1siIi5jb25jYXQoQWMobCksIlZhbGlkYXRvciIpXT1lVyhsKX0pLF9hLnZhbGlkYXRvcnMucmVnaXN0ZXJWYWxpZGF0b3I9VTcsX2EudmFsaWRhdG9ycy5nZXRW''@;'; put 'put ''YWxpZGF0b3I9ZVcsX2EucGx1Z2lucz1udWxsIT09KHlKPV9hLnBsdWdpbnMpJiZ2b2lkIDAhPT15Sj95Sjp7fSxSbihRWSgpLGZ1bmN0aW9uKGwpe19hLnBsdWdpbnNbbF09ZU0obCl9KSxfYS5wbHVnaW5zWyIiLmNvbmNhdChBYyhHYS5QTFVHSU5fS0VZKSwiUGx1Z2luIildPUdhLF9hLnBs''@;'; put 'put ''dWdpbnMucmVnaXN0ZXJQbHVnaW49VWEsX2EucGx1Z2lucy5nZXRQbHVnaW49ZU07Y29uc3QgTU10PV9hLGJKPShsLGMsYSk9Pntmb3IobGV0IGYgb2YgbCl7Y29uc3QgZD1jLmZpbmQobT0+bS5kYXRhPT09Zi5OQU1FKSxoPWEudmFyc1tmLk5BTUVdO2gmJihmLlRZUEU9WyJEQVRFIiwiREFU''@;'; put 'put ''RVRJTUUiLCJUSU1FIl0uaW5jbHVkZXMoZi5ERFRZUEUpPyJudW0iOmgudHlwZSksZCYmZi5ERVNDJiYoZC5kZXNjPWYuREVTQyksZCYmaC5sZW5ndGgmJihkLmxlbmd0aD1wYXJzZUludChoLmxlbmd0aCkpLGQmJmYuQ0xTX1JVTEUmJihkLmNsc1J1bGU9Zi5DTFNfUlVMRSl9cmV0dXJuIGN9''@;'; put 'put ''O2Z1bmN0aW9uIF9KKGwsYyl7aWYobnVsbD09bHx8IWlzTmFOKGwpJiZpc0Zpbml0ZShsKSlyZXR1cm4gYyYmYyghMCksITA7Y29uc3QgYT0oMCx1My5pc1NwZWNpYWxNaXNzaW5nKShsKTtyZXR1cm4gYyYmYyhhKSxhfWNvbnN0IEI1ZT17Q0FTRToobCxjKT0+e3N3aXRjaChjKXtjYXNlIlVQ''@;'; put 'put ''Q0FTRSI6cmV0dXJuISFbdm9pZCAwLG51bGxdLmluY2x1ZGVzKGwpfHwic3RyaW5nIj09dHlwZW9mIGwmJmwudG9TdHJpbmcoKT09PWwudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO2Nhc2UiTE9XQ0FTRSI6cmV0dXJuISFbdm9pZCAwLG51bGxdLmluY2x1ZGVzKGwpfHwic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGwmJmwudG9TdHJpbmcoKT09PWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfXJldHVybiEwfSxNSU5WQUw6KGwsYyk9Pntjb25zdCBhPV9KKGwpLGY9cGFyc2VGbG9hdChsKTtyZXR1cm4oIWF8fCFpc05hTihmKSkmJmY+PU51bWJlcihjLnRvU3RyaW5nKCkpfSxNQVhWQUw6KGwsYyk9''@;'; put 'put ''Pntjb25zdCBhPV9KKGwpLGY9cGFyc2VGbG9hdChsKTtyZXR1cm4hKCFhfHwhaXNOYU4oZikpfHxmPD1OdW1iZXIoYy50b1N0cmluZygpKX0sTk9UTlVMTDoobCxjKT0+bnVsbCE9bCYmbC50b1N0cmluZygpLmxlbmd0aD4wfTtjbGFzcyBBTXR7Y29uc3RydWN0b3IoYyxhLGYsZCxoLG0pe3Ro''@;'; put 'put ''aXMucnVsZXM9W10sdGhpcy5kcXJ1bGVzPVtdLHRoaXMuZHFkYXRhPVtdLHRoaXMuaGlkZGVuQ29sdW1ucz1bXSx0aGlzLnByaW1hcnlLZXlzPVtdLHRoaXMuZXhlY3V0ZUhvdFZhbGlkYXRvcj0oXyxPLFgpPT57Y29uc3QgYWU9ey4uLl8sdmFsaWRhdG9yOnZvaWQgMCxjb3JyZWN0Rm9ybWF0''@;'; put 'put ''OiExLHJvdzowLGNvbDowLGluc3RhbmNlOm5ldyBNTXQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikse30pLHZpc3VhbFJvdzowLHZpc3VhbENvbDowLHByb3A6MH07bnVsbD09TyYmKE89IiIpLF8mJl8udmFsaWRhdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgXy52YWxpZGF0b3I/Xy52''@;'; put 'put ''YWxpZGF0b3IuY2FsbChhZSxPLHBlPT57WCYmWChwZSl9KTpYJiZYKCExKX0sdGhpcy5zYXNwYXJhbXM9Yyx0aGlzLmhvdEluc3RhbmNlPW0sdGhpcy5ydWxlcz0obD0+e3RyeXtyZXR1cm4gSlNPTi5wYXJzZShgWyR7bH1dYCl9Y2F0Y2h7cmV0dXJuW119fSkoYy5DT0xUWVBFKSx0aGlzLnJ1''@;'; put 'put ''bGVzPWJKKGYsdGhpcy5ydWxlcyxhKSx0aGlzLmRxcnVsZXM9ZCx0aGlzLmRxZGF0YT1oLHRoaXMucHJpbWFyeUtleXM9Yy5QSy5zcGxpdCgiICIpLHRoaXMudXBkYXRlRHFEYXRhKCksdGhpcy5zZXR1cFZhbGlkYXRpb25zKCl9Z2V0UnVsZXMoKXtyZXR1cm4gdGhpcy5ydWxlc31nZXRSdWxl''@;'; put 'put ''KGMpe2NvbnN0IGE9dGhpcy5nZXRSdWxlSW5kZXgoYyk7cmV0dXJuIHRoaXMucnVsZXNbYV19Z2V0SGlkZGVuQ29sdW1ucygpe3JldHVybiB0aGlzLmhpZGRlbkNvbHVtbnN9dXBkYXRlUnVsZShjLGEpe2xldCBmPXRoaXMuZ2V0UnVsZUluZGV4KGMpO3RoaXMucnVsZXNbZl09ey4uLnRoaXMu''@;'; put 'put ''cnVsZXNbZl0sLi4uYX19cmVtb3ZlUnVsZShjKXtjb25zdCBhPXRoaXMuZ2V0UnVsZUluZGV4KGMpO3RoaXMucnVsZXMuc3BsaWNlKGEsMSl9Z2V0RHFEZXRhaWxzKGMpe3JldHVybiBjP3RoaXMuZHFydWxlcy5maWx0ZXIoYT0+YS5CQVNFX0NPTD09PWMpOnRoaXMuZHFydWxlc31pc0RxQ29s''@;'; put 'put ''KGMpe3JldHVybiEhdGhpcy5kcXJ1bGVzLmZpbmQoYT0+YS5CQVNFX0NPTD09PWMpfWhhc0RxUnVsZXMoYyxhLGY9ITEpe3JldHVybiBmP3RoaXMuZHFydWxlcy5maWx0ZXIoZD0+ZC5CQVNFX0NPTD09PWMmJmEuaW5jbHVkZXMoZC5SVUxFX1RZUEUpKS5sZW5ndGg9PT1hLmxlbmd0aDohIXRo''@;'; put 'put ''aXMuZHFydWxlcy5maW5kKGQ9PmQuQkFTRV9DT0w9PT1jJiZhLmluY2x1ZGVzKGQuUlVMRV9UWVBFKSl9Z2V0RHFEcm9wZG93blNvdXJjZShjKXtsZXQgYT1bXTtyZXR1cm4gdGhpcy5kcXJ1bGVzLmZvckVhY2goZj0+e2YuQkFTRV9DT0wudG9TdHJpbmcoKT09PWMuZGF0YSYmYy5kYXRhLnRv''@;'; put 'put ''U3RyaW5nKCkmJlsiSEFSRFNFTEVDVCIsIlNPRlRTRUxFQ1QiLCJIQVJEU0VMRUNUX0hPT0siLCJTT0ZUU0VMRUNUX0hPT0siXS5pbmNsdWRlcyhmLlJVTEVfVFlQRS50b1N0cmluZygpKSYmdGhpcy5kcWRhdGEuZmlsdGVyKGQ9PmQuQkFTRV9DT0w9PT1mLkJBU0VfQ09MKS5mb3JFYWNoKGQ9''@;'; put 'put ''PnthLnB1c2goYy50eXBlJiYibnVtZXJpYyI9PT1jLnR5cGU/TnVtYmVyKGQuUlVMRV9EQVRBKTpkLlJVTEVfREFUQSl9KX0pLGF9dXBkYXRlRHFEYXRhKCl7dGhpcy5kcWRhdGEubGVuZ3RoPjAmJihsPT57Y29uc3QgYz1bXTtyZXR1cm4gdGhpcy5kcWRhdGEuZm9yRWFjaChhPT57Yy5pbmNs''@;'; put 'put ''dWRlcyhhLkJBU0VfQ09MKXx8Yy5wdXNoKGEuQkFTRV9DT0wpfSksY30pKCkuZm9yRWFjaChhPT57bGV0IGY9ITE7dGhpcy5kcXJ1bGVzLmxlbmd0aD4wJiZ0aGlzLmRxcnVsZXMuZm9yRWFjaChkPT57ZC5CQVNFX0NPTD09PWEmJigiU09GVFNFTEVDVCI9PT1kLlJVTEVfVFlQRXx8IkhBUkRT''@;'; put 'put ''RUxFQ1QiPT09ZC5SVUxFX1RZUEUpJiYoZj0hMCl9KSxmfHx0aGlzLmRxcnVsZXMucHVzaCh7QkFTRV9DT0w6YSxSVUxFX1RZUEU6IlNPRlRTRUxFQ1QiLFJVTEVfVkFMVUU6YSxYOjF9KX0pfXNldHVwVmFsaWRhdGlvbnMoKXtmb3IobGV0IGM9MDtjPHRoaXMucnVsZXMubGVuZ3RoO2MrKyl7''@;'; put 'put ''Y29uc3QgYT10aGlzLnJ1bGVzW2NdLmRhdGF8fCIiO2lmKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09YSl7aWYodGhpcy5pc0RxQ29sKGEpKXtsZXQgZD10aGlzLmdldERxRHJvcGRvd25Tb3VyY2UodGhpcy5ydWxlc1tjXSk7ZC5sZW5ndGg+MCYmKHRoaXMucnVsZXNbY10u''@;'; put 'put ''c291cmNlPWQsdGhpcy5ydWxlc1tjXS50eXBlPSJhdXRvY29tcGxldGUiLHRoaXMucnVsZXNbY10uZmlsdGVyPSExKSx0aGlzLmhhc0RxUnVsZXMoYSxbIlNPRlRTRUxFQ1QiXSkmJih0aGlzLnJ1bGVzW2NdLnN0cmljdD0hMSksdGhpcy5oYXNEcVJ1bGVzKGEsWyJIQVJEU0VMRUNUIl0pJiYo''@;'; put 'put ''dGhpcy5ydWxlc1tjXS5zdHJpY3Q9ITApLHRoaXMuaGFzRHFSdWxlcyhhLFsiU09GVFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1tjXS5zdHJpY3Q9ITEpLHRoaXMuaGFzRHFSdWxlcyhhLFsiSEFSRFNFTEVDVF9IT09LIl0pJiYodGhpcy5ydWxlc1tjXS5zdHJpY3Q9ITApLHRoaXMuaGFz''@;'; put 'put ''RHFSdWxlcyhhLFsiTk9UTlVMTCJdKSYmKHRoaXMucnVsZXNbY10uYWxsb3dFbXB0eT0hMSl9InRydWUiPT09dGhpcy5ydWxlc1tjXS5jb3JyZWN0Rm9ybWF0JiYodGhpcy5ydWxlc1tjXS5jb3JyZWN0Rm9ybWF0PSEwKSx0aGlzLnNldERlZmF1bHRWYWxpZGF0b3IodGhpcyxjKSx0aGlzLnNl''@;'; put 'put ''dENvbHVtbkxldmVsU2VjdXJpdHkoYyl9fXRoaXMuc2FzcGFyYW1zPy5DTFNfRkxBRyYmdGhpcy5oaWRkZW5Db2x1bW5zLnB1c2goMCl9c2V0RGVmYXVsdFZhbGlkYXRvcihjLGEpe3RoaXMucnVsZXNbYV0udmFsaWRhdG9yPWZ1bmN0aW9uKGYsZCl7Y29uc3QgaD1jLnJ1bGVzW2FdLmRhdGE/''@;'; put 'put ''LnRvU3RyaW5nKCksbT1jLnJ1bGVzW2FdLnR5cGV8fCIiO2xldCBfPW51bGw7cmV0dXJuImF1dG9jb21wbGV0ZSIhPT10aGlzLmVkaXRvcnx8KGMuZ2V0SGFuZHNvbnRhYmxlVmFsaWRhdG9yKCJhdXRvY29tcGxldGUiKS5jYWxsKHRoaXMsZixPPT57Xz1PfSksXyk/KGMuZ2V0SGFuZHNvbnRh''@;'; put 'put ''YmxlVmFsaWRhdG9yKG0pLmNhbGwodGhpcyxmLE89PntfPU99KSxfP2MubGVuZ3RoQ2hlY2soZixjLnJ1bGVzW2FdLmxlbmd0aCxtKT9jLmlzRHFDb2woaHx8IiIpJiYhKChsLGMpPT57Zm9yKGxldCBhIG9mIGwpaWYoQjVlW2EuUlVMRV9UWVBFXSYmIUI1ZVthLlJVTEVfVFlQRV0oYyxhLlJV''@;'; put 'put ''TEVfVkFMVUUpKXJldHVybiBjb25zb2xlLndhcm4oYERRIEludmFsaWQgUmVhc29uOiAke2EuUlVMRV9UWVBFfVxuVmFsdWU6ICR7Y30pXG5SdWxlIFZhbHVlOiAke2EuUlVMRV9WQUxVRS5sZW5ndGg+MCYmIiAiIT09YS5SVUxFX1ZBTFVFP2EuUlVMRV9WQUxVRToiTm90IGRlZmluZWQifWAp''@;'; put 'put ''LCExO3JldHVybiEwfSkoYy5nZXREcURldGFpbHMoaHx8IiIpLGYpPyhjb25zb2xlLndhcm4oYERRIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHtmfSlgKSx2b2lkIGQoITEpKTp2b2lkIGQoITApOihjb25zb2xlLndhcm4oYExlbmd0aCBWYWxpZGF0aW9uIC0gaW52YWxpZCAoVmFs''@;'; put 'put ''dWU6ICR7Zn0pYCksdm9pZCBkKCExKSk6KGNvbnNvbGUud2FybihgSE9UIE5hdGl2ZSBWYWxpZGF0aW9uIC0gaW52YWxpZCAoVmFsdWU6ICR7Zn0pYCksdm9pZCBkKCExKSkpOihjb25zb2xlLndhcm4oYEhPVCBOYXRpdmUgVmFsaWRhdGlvbiAoYXV0b2NvbXBsZXRlKSAtIGludmFsaWQgKFZh''@;'; put 'put ''bHVlOiAke2Z9KWApLHZvaWQgZCghMSkpfX1sZW5ndGhDaGVjayhjLGEsZil7aWYoKDAsdTMuaXNTcGVjaWFsTWlzc2luZykoYyl8fG51bGw9PWN8fG51bGw9PWEpcmV0dXJuITA7aWYoIm51bWVyaWMiPT09Zil7aWYoOD09PWEpcmV0dXJuITA7aWYoYTwzfHxhPjh8fCFOdW1iZXIuaXNJbnRl''@;'; put 'put ''Z2VyKGEpKXJldHVybiBjb25zb2xlLndhcm4oImludmFsaWQgbGVuZ3RoIGZyb20gU0FTLCBydWxlIGxlbmd0aCBjYW4gb25seSBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMy04IiksITE7Y29uc3QgZD1OdW1iZXIoYyk9PT1jJiZjJTEhPTA7aWYoYTw4JiZkKXJldHVybiBjb25zb2xlLndhcm4o''@;'; put 'put ''InJlZHVjZWQgbGVuZ3RoIG51bWVyaWNzIGNhbm5vdCBjb250YWluIGRlY2ltYWxzIGVsc2UgcHJlY2lzaW9uIHdpbGwgYmUgYWZmZWN0ZWQiKSwhMTtzd2l0Y2goYSl7Y2FzZSAzOnJldHVybiBjPD04MTkyO2Nhc2UgNDpyZXR1cm4gYzw9MjA5NzE1MjtjYXNlIDU6cmV0dXJuIGM8PTUzNjg3''@;'; put 'put ''MDkxMjtjYXNlIDY6cmV0dXJuIGM8PTEzNzQzODk1MzQ3MjtjYXNlIDc6cmV0dXJuIGM8PTM1MTg0MzcyMDg4ODMyfX1yZXR1cm4gYy50b1N0cmluZygpLmxlbmd0aDw9YX1nZXRIYW5kc29udGFibGVWYWxpZGF0b3IoYyl7c3dpdGNoKGMpe2Nhc2UiYXV0b2NvbXBsZXRlIjpyZXR1cm4gX2s7''@;'; put 'put ''Y2FzZSJudW1lcmljIjpyZXR1cm4gX0o7Y2FzZSJkYXRlIjpyZXR1cm4gd0w7Y2FzZSJ0aW1lIjpyZXR1cm4gQ0w7ZGVmYXVsdDpyZXR1cm4oYSxmKT0+Zj9mKCEwKTpudWxsfX1nZXRSdWxlSW5kZXgoYyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBjP2M6dGhpcy5ydWxlcy5maW5kSW5kZXgo''@;'; put 'put ''YT0+YS5kYXRhPT09Yyl9c2V0Q29sdW1uTGV2ZWxTZWN1cml0eShjKXtpZighdGhpcy5zYXNwYXJhbXM/LkNMU19GTEFHKXJldHVybjtjb25zdCBhPXRoaXMucnVsZXNbY107aWYodGhpcy5wcmltYXJ5S2V5cy5pbmNsdWRlcyhhLmRhdGEpJiYoYS5jbHNSdWxlPSJSRUFEIiksIkhJREUiPT09''@;'; put 'put ''YS5jbHNSdWxlJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjKSwiUkVBRCI9PT1hLmNsc1J1bGUmJihhLnJlYWRPbmx5PSEwKSwiRURJVCI9PT1hLmNsc1J1bGUpe2EucmVhZE9ubHk9ITE7Y29uc3QgZj10aGlzLmhpZGRlbkNvbHVtbnMuaW5kZXhPZihjKTt0aGlzLmhpZGRlbkNvbHVtbnMu''@;'; put 'put ''c3BsaWNlKGYsMSl9fX1jb25zdCBCUD17bnVtZXJpYzowLGRlZmF1bHQ6IiJ9LFRNdD0obCxjKT0+bD8iYXV0b2NvbXBsZXRlIj09PWw/YyYmYy5zb3VyY2U/Yy5zb3VyY2VbMF06W106QlAuaGFzT3duUHJvcGVydHkobCk/QlBbbF06QlAuZGVmYXVsdDpCUC5kZWZhdWx0LGo1ZT1sPT57bGV0''@;'; put 'put ''IGM9KCIwIitsLmdldFVUQ0hvdXJzKCkpLnNsaWNlKC0yKSsiOiI7cmV0dXJuIGM9YysoIjAiK2wuZ2V0VVRDTWludXRlcygpKS5zbGljZSgtMikrIjoiLGMrPSgiMCIrbC5nZXRVVENTZWNvbmRzKCkpLnNsaWNlKC0yKSxjfSx3Sj1sPT5sLmdldEZ1bGxZZWFyKCkrIi0iKygiMCIrKGwuZ2V0''@;'; put 'put ''TW9udGgoKSsxKSkuc2xpY2UoLTIpKyItIisoIjAiK2wuZ2V0RGF0ZSgpKS5zbGljZSgtMiksQ0o9bD0+bmV3IERhdGUoTWF0aC5yb3VuZCg4NjQwMCoobC0yNTU2OSkqMWUzKSksSU10PShsLGMpPT57Y29uc3QgYT1bXSxmPVtdO3JldHVybiBjLmZvckVhY2goZD0+ey0xPT09bC5pbmRleE9m''@;'; put 'put ''KGQpP2EucHVzaChkKTpmLnB1c2goZCl9KSxbYSxmXX0sUk10PShsLGMsYSxmLGQsaCxtKT0+KGMuaW5uZXJIVE1MPWAke2g/aC50b1N0cmluZygpOiIifSA8Y2xyLWljb24gc2hhcGU9ImV4Y2xhbWF0aW9uLWNpcmNsZSIgc3RhdHVzPSJ3YXJuaW5nIj48L2Nsci1pY29uPmAsYyksU0o9KGws''@;'; put 'put ''YyxhLGYsZCxoLG0pPT4oYy5pbm5lckhUTUw9aHx8IiIsYyksTE10PShsLGMsYSxmLGQsaCxtKT0+KGMuaW5uZXJIVE1MPWAke2g/aC50b1N0cmluZygpOiIifSA8c3BhbiBjbGFzcz0ic3Bpbm5lciBzcGlubmVyLXNtIHZlcnRpY2FsLWFsaWduLW1pZGRsZSI+PC9zcGFuPmAsYyksTUo9bD0+''@;'; put 'put ''ISEvXi17MCwxfVxkKyQvLnRlc3QobCksejVlPWw9PiEhL15cZCtcLlxkKyQvLnRlc3QobCk7ZnVuY3Rpb24gYW0obCl7cmV0dXJuIG51bGwhPWwmJiJmYWxzZSIhPWAke2x9YH1mdW5jdGlvbiBVNWUobCxjPTApe3JldHVybiBmdW5jdGlvbiBQTXQobCl7cmV0dXJuIWlzTmFOKHBhcnNlRmxv''@;'; put 'put ''YXQobCkpJiYhaXNOYU4oTnVtYmVyKGwpKX0obCk/TnVtYmVyKGwpOmN9ZnVuY3Rpb24gJDAobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBWaT9sLm5hdGl2ZUVsZW1lbnQ6bH1jb25zdCBqRT17c2NoZWR1bGUobCl7bGV0IGM9cmVxdWVzdEFuaW1hdGlvbkZyYW1lLGE9Y2FuY2VsQW5pbWF0aW9u''@;'; put 'put ''RnJhbWU7Y29uc3R7ZGVsZWdhdGU6Zn09akU7ZiYmKGM9Zi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsYT1mLmNhbmNlbEFuaW1hdGlvbkZyYW1lKTtjb25zdCBkPWMoaD0+e2E9dm9pZCAwLGwoaCl9KTtyZXR1cm4gbmV3IHRlKCgpPT5hPy4oZCkpfSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoLi4u''@;'; put 'put ''bCl7Y29uc3R7ZGVsZWdhdGU6Y309akU7cmV0dXJuKGM/LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8cmVxdWVzdEFuaW1hdGlvbkZyYW1lKSguLi5sKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWUoLi4ubCl7Y29uc3R7ZGVsZWdhdGU6Y309akU7cmV0dXJuKGM/LmNhbmNlbEFuaW1hdGlvbkZyYW1l''@;'; put 'put ''fHxjYW5jZWxBbmltYXRpb25GcmFtZSkoLi4ubCl9LGRlbGVnYXRlOnZvaWQgMH0sWjVlPW5ldyBjbGFzcyBOTXQgZXh0ZW5kcyBPentmbHVzaChjKXt0aGlzLl9hY3RpdmU9ITA7Y29uc3QgYT10aGlzLl9zY2hlZHVsZWQ7dGhpcy5fc2NoZWR1bGVkPXZvaWQgMDtjb25zdHthY3Rpb25zOmZ9''@;'; put 'put ''PXRoaXM7bGV0IGQ7Yz1jfHxmLnNoaWZ0KCk7ZG97aWYoZD1jLmV4ZWN1dGUoYy5zdGF0ZSxjLmRlbGF5KSlicmVha313aGlsZSgoYz1mWzBdKSYmYy5pZD09PWEmJmYuc2hpZnQoKSk7aWYodGhpcy5fYWN0aXZlPSExLGQpe2Zvcig7KGM9ZlswXSkmJmMuaWQ9PT1hJiZmLnNoaWZ0KCk7KWMu''@;'; put 'put ''dW5zdWJzY3JpYmUoKTt0aHJvdyBkfX19KGNsYXNzIEhNdCBleHRlbmRzIEF6e2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYyxhKSx0aGlzLnNjaGVkdWxlcj1jLHRoaXMud29yaz1hfXJlcXVlc3RBc3luY0lkKGMsYSxmPTApe3JldHVybiBudWxsIT09ZiYmZj4wP3N1cGVyLnJlcXVlc3RBc3lu''@;'; put 'put ''Y0lkKGMsYSxmKTooYy5hY3Rpb25zLnB1c2godGhpcyksYy5fc2NoZWR1bGVkfHwoYy5fc2NoZWR1bGVkPWpFLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+Yy5mbHVzaCh2b2lkIDApKSkpfXJlY3ljbGVBc3luY0lkKGMsYSxmPTApe3ZhciBkO2lmKG51bGwhPWY/Zj4wOnRoaXMuZGVsYXk+''@;'; put 'put ''MClyZXR1cm4gc3VwZXIucmVjeWNsZUFzeW5jSWQoYyxhLGYpO2NvbnN0e2FjdGlvbnM6aH09YztudWxsIT1hJiYobnVsbD09PShkPWhbaC5sZW5ndGgtMV0pfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLmlkKSE9PWEmJihqRS5jYW5jZWxBbmltYXRpb25GcmFtZShhKSxjLl9zY2hlZHVsZWQ9dm9p''@;'; put 'put ''ZCAwKX19KTtsZXQga0osVk10PTE7Y29uc3QgalA9e307ZnVuY3Rpb24gWTVlKGwpe3JldHVybiBsIGluIGpQJiYoZGVsZXRlIGpQW2xdLCEwKX1jb25zdCBCTXQ9e3NldEltbWVkaWF0ZShsKXtjb25zdCBjPVZNdCsrO3JldHVybiBqUFtjXT0hMCxrSnx8KGtKPVByb21pc2UucmVzb2x2ZSgp''@;'; put 'put ''KSxrSi50aGVuKCgpPT5ZNWUoYykmJmwoKSksY30sY2xlYXJJbW1lZGlhdGUobCl7WTVlKGwpfX0se3NldEltbWVkaWF0ZTpqTXQsY2xlYXJJbW1lZGlhdGU6ek10fT1CTXQselA9e3NldEltbWVkaWF0ZSguLi5sKXtjb25zdHtkZWxlZ2F0ZTpjfT16UDtyZXR1cm4oYz8uc2V0SW1tZWRpYXRl''@;'; put 'put ''fHxqTXQpKC4uLmwpfSxjbGVhckltbWVkaWF0ZShsKXtjb25zdHtkZWxlZ2F0ZTpjfT16UDtyZXR1cm4oYz8uY2xlYXJJbW1lZGlhdGV8fHpNdCkobCl9LGRlbGVnYXRlOnZvaWQgMH07bmV3IGNsYXNzIFpNdCBleHRlbmRzIE96e2ZsdXNoKGMpe3RoaXMuX2FjdGl2ZT0hMDtjb25zdCBhPXRo''@;'; put 'put ''aXMuX3NjaGVkdWxlZDt0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO2NvbnN0e2FjdGlvbnM6Zn09dGhpcztsZXQgZDtjPWN8fGYuc2hpZnQoKTtkb3tpZihkPWMuZXhlY3V0ZShjLnN0YXRlLGMuZGVsYXkpKWJyZWFrfXdoaWxlKChjPWZbMF0pJiZjLmlkPT09YSYmZi5zaGlmdCgpKTtpZih0aGlz''@;'; put 'put ''Ll9hY3RpdmU9ITEsZCl7Zm9yKDsoYz1mWzBdKSYmYy5pZD09PWEmJmYuc2hpZnQoKTspYy51bnN1YnNjcmliZSgpO3Rocm93IGR9fX0oY2xhc3MgVU10IGV4dGVuZHMgQXp7Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLGEpLHRoaXMuc2NoZWR1bGVyPWMsdGhpcy53b3JrPWF9cmVxdWVzdEFz''@;'; put 'put ''eW5jSWQoYyxhLGY9MCl7cmV0dXJuIG51bGwhPT1mJiZmPjA/c3VwZXIucmVxdWVzdEFzeW5jSWQoYyxhLGYpOihjLmFjdGlvbnMucHVzaCh0aGlzKSxjLl9zY2hlZHVsZWR8fChjLl9zY2hlZHVsZWQ9elAuc2V0SW1tZWRpYXRlKGMuZmx1c2guYmluZChjLHZvaWQgMCkpKSl9cmVjeWNsZUFz''@;'; put 'put ''eW5jSWQoYyxhLGY9MCl7dmFyIGQ7aWYobnVsbCE9Zj9mPjA6dGhpcy5kZWxheT4wKXJldHVybiBzdXBlci5yZWN5Y2xlQXN5bmNJZChjLGEsZik7Y29uc3R7YWN0aW9uczpofT1jO251bGwhPWEmJihudWxsPT09KGQ9aFtoLmxlbmd0aC0xXSl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuaWQpIT09''@;'; put 'put ''YSYmKHpQLmNsZWFySW1tZWRpYXRlKGEpLGMuX3NjaGVkdWxlZD09PWEmJihjLl9zY2hlZHVsZWQ9dm9pZCAwKSl9fSk7ZnVuY3Rpb24gVzVlKGwsYz1CQyl7cmV0dXJuIGZ1bmN0aW9uIFdNdChsKXtyZXR1cm4gbnQoKGMsYSk9PntsZXQgZj0hMSxkPW51bGwsaD1udWxsLG09ITE7Y29uc3Qg''@;'; put 'put ''Xz0oKT0+e2lmKGg/LnVuc3Vic2NyaWJlKCksaD1udWxsLGYpe2Y9ITE7Y29uc3QgWD1kO2Q9bnVsbCxhLm5leHQoWCl9bSYmYS5jb21wbGV0ZSgpfSxPPSgpPT57aD1udWxsLG0mJmEuY29tcGxldGUoKX07Yy5zdWJzY3JpYmUocWUoYSxYPT57Zj0hMCxkPVgsaHx8SnIobChYKSkuc3Vic2Ny''@;'; put 'put ''aWJlKGg9cWUoYSxfLE8pKX0sKCk9PnttPSEwLCghZnx8IWh8fGguY2xvc2VkKSYmYS5jb21wbGV0ZSgpfSkpfSl9KCgpPT5EeihsLGMpKX1sZXQgRUo7dHJ5e0VKPXR5cGVvZiBJbnRsPCJ1IiYmSW50bC52OEJyZWFrSXRlcmF0b3J9Y2F0Y2h7RUo9ITF9bGV0IHpFLHhKLEc1ZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX3BsYXRmb3JtSWQ9YSx0aGlzLmlzQnJvd3Nlcj10aGlzLl9wbGF0Zm9ybUlkP0hhKHRoaXMuX3BsYXRmb3JtSWQpOiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJiEhZG9jdW1lbnQsdGhpcy5FREdFPXRoaXMuaXNCcm93c2VyJiYvKGVkZ2Up''@;'; put 'put ''L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLlRSSURFTlQ9dGhpcy5pc0Jyb3dzZXImJi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5CTElOSz10aGlzLmlzQnJvd3NlciYmISghd2luZG93LmNocm9tZSYmIUVKKSYmdHlwZW9mIENTUzwi''@;'; put 'put ''dSImJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5XRUJLSVQ9dGhpcy5pc0Jyb3dzZXImJi9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF0aGlzLkJMSU5LJiYhdGhpcy5FREdFJiYhdGhpcy5UUklERU5ULHRoaXMuSU9TPXRoaXMuaXNCcm93c2VyJiYv''@;'; put 'put ''aVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmISgiTVNTdHJlYW0iaW4gd2luZG93KSx0aGlzLkZJUkVGT1g9dGhpcy5pc0Jyb3dzZXImJi8oZmlyZWZveHxtaW5lZmllbGQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkFORFJPSUQ9dGhpcy5p''@;'; put 'put ''c0Jyb3dzZXImJi9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuVFJJREVOVCx0aGlzLlNBRkFSST10aGlzLmlzQnJvd3NlciYmL3NhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnRoaXMuV0VCS0lUfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKShzcihxYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2Z1bmN0aW9uIFVFKGwpe3JldHVybiBmdW5jdGlvbiBHTXQoKXtpZihudWxsPT16RSYmdHlwZW9mIHdpbmRv''@;'; put 'put ''dzwidSIpdHJ5e3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDooKT0+ekU9ITB9KSl9ZmluYWxseXt6RT16RXx8ITF9cmV0dXJuIHpFfSgpP2w6ISFsLmNhcHR1cmV9ZnVuY3Rpb24gSzVlKGwpe2lmKGZ1''@;'; put 'put ''bmN0aW9uICRNdCgpe2lmKG51bGw9PXhKKXtjb25zdCBsPXR5cGVvZiBkb2N1bWVudDwidSI/ZG9jdW1lbnQuaGVhZDpudWxsO3hKPSEoIWx8fCFsLmNyZWF0ZVNoYWRvd1Jvb3QmJiFsLmF0dGFjaFNoYWRvdyl9cmV0dXJuIHhKfSgpKXtjb25zdCBjPWwuZ2V0Um9vdE5vZGU/bC5nZXRSb290''@;'; put 'put ''Tm9kZSgpOm51bGw7aWYodHlwZW9mIFNoYWRvd1Jvb3Q8InUiJiZTaGFkb3dSb290JiZjIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gY31yZXR1cm4gbnVsbH1mdW5jdGlvbiBaUChsKXtyZXR1cm4gbC5jb21wb3NlZFBhdGg/bC5jb21wb3NlZFBhdGgoKVswXTpsLnRhcmdldH1sZXQg''@;'; put 'put ''cU10PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQpe3RoaXMuX25nWm9uZT1hLHRoaXMuX3BsYXRmb3JtPWYsdGhpcy5fc2Nyb2xsZWQ9bmV3IHdlLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX3Njcm9sbGVkQ291bnQ9MCx0aGlzLnNjcm9sbENvbnRhaW5lcnM9''@;'; put 'put ''bmV3IE1hcCx0aGlzLl9kb2N1bWVudD1kfXJlZ2lzdGVyKGEpe3RoaXMuc2Nyb2xsQ29udGFpbmVycy5oYXMoYSl8fHRoaXMuc2Nyb2xsQ29udGFpbmVycy5zZXQoYSxhLmVsZW1lbnRTY3JvbGxlZCgpLnN1YnNjcmliZSgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dChhKSkpfWRlcmVnaXN0ZXIo''@;'; put 'put ''YSl7Y29uc3QgZj10aGlzLnNjcm9sbENvbnRhaW5lcnMuZ2V0KGEpO2YmJihmLnVuc3Vic2NyaWJlKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmRlbGV0ZShhKSl9c2Nyb2xsZWQoYT0yMCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj9uZXcgQmUoZj0+e3RoaXMuX2dsb2JhbFN1''@;'; put 'put ''YnNjcmlwdGlvbnx8dGhpcy5fYWRkR2xvYmFsTGlzdGVuZXIoKTtjb25zdCBkPWE+MD90aGlzLl9zY3JvbGxlZC5waXBlKFc1ZShhKSkuc3Vic2NyaWJlKGYpOnRoaXMuX3Njcm9sbGVkLnN1YnNjcmliZShmKTtyZXR1cm4gdGhpcy5fc2Nyb2xsZWRDb3VudCsrLCgpPT57ZC51bnN1YnNjcmli''@;'; put 'put ''ZSgpLHRoaXMuX3Njcm9sbGVkQ291bnQtLSx0aGlzLl9zY3JvbGxlZENvdW50fHx0aGlzLl9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpfX0pOkdpKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpLHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKChhLGYpPT50''@;'; put 'put ''aGlzLmRlcmVnaXN0ZXIoZikpLHRoaXMuX3Njcm9sbGVkLmNvbXBsZXRlKCl9YW5jZXN0b3JTY3JvbGxlZChhLGYpe2NvbnN0IGQ9dGhpcy5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnMoYSk7cmV0dXJuIHRoaXMuc2Nyb2xsZWQoZikucGlwZShJbChoPT4haHx8ZC5pbmRleE9mKGgpPi0x''@;'; put 'put ''KSl9Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKGEpe2NvbnN0IGY9W107cmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKChkLGgpPT57dGhpcy5fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudChoLGEpJiZmLnB1c2goaCl9KSxmfV9nZXRXaW5kb3coKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvd31fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudChhLGYpe2xldCBkPSQwKGYpLGg9YS5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtkb3tpZihkPT1oKXJldHVybiEwfXdoaWxlKGQ9ZC5wYXJlbnRFbGVtZW50KTtyZXR1cm4hMX1f''@;'; put 'put ''YWRkR2xvYmFsTGlzdGVuZXIoKXt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT53ZCh0aGlzLl9nZXRXaW5kb3coKS5kb2N1bWVudCwic2Nyb2xsIikuc3Vic2NyaWJlKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KCkpKX1fcmVtb3Zl''@;'; put 'put ''R2xvYmFsTGlzdGVuZXIoKXt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24mJih0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249bnVsbCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNy''@;'; put 'put ''KFVvKSxzcihHNWUpLHNyKEZhLDgpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSxKTXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCl7dGhpcy5fcGxhdGZvcm09YSx0aGlzLl9jaGFuZ2U9bmV3''@;'; put 'put ''IHdlLHRoaXMuX2NoYW5nZUxpc3RlbmVyPWg9Pnt0aGlzLl9jaGFuZ2UubmV4dChoKX0sdGhpcy5fZG9jdW1lbnQ9ZCxmLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57aWYoYS5pc0Jyb3dzZXIpe2NvbnN0IGg9dGhpcy5fZ2V0V2luZG93KCk7aC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRo''@;'; put 'put ''aXMuX2NoYW5nZUxpc3RlbmVyKSxoLmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIix0aGlzLl9jaGFuZ2VMaXN0ZW5lcil9dGhpcy5jaGFuZ2UoKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3ZpZXdwb3J0U2l6ZT1udWxsKX0pfW5nT25EZXN0cm95KCl7aWYodGhpcy5fcGxhdGZv''@;'; put 'put ''cm0uaXNCcm93c2VyKXtjb25zdCBhPXRoaXMuX2dldFdpbmRvdygpO2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuX2No''@;'; put 'put ''YW5nZS5jb21wbGV0ZSgpfWdldFZpZXdwb3J0U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0U2l6ZXx8dGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7Y29uc3QgYT17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhp''@;'; put 'put ''cy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXplPW51bGwpLGF9Z2V0Vmlld3BvcnRSZWN0KCl7Y29uc3QgYT10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx7d2lkdGg6ZixoZWlnaHQ6ZH09dGhpcy5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm57dG9wOmEu''@;'; put 'put ''dG9wLGxlZnQ6YS5sZWZ0LGJvdHRvbTphLnRvcCtkLHJpZ2h0OmEubGVmdCtmLGhlaWdodDpkLHdpZHRoOmZ9fWdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybnt0b3A6MCxsZWZ0OjB9O2NvbnN0IGE9dGhpcy5fZG9jdW1lbnQs''@;'; put 'put ''Zj10aGlzLl9nZXRXaW5kb3coKSxkPWEuZG9jdW1lbnRFbGVtZW50LGg9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOi1oLnRvcHx8YS5ib2R5LnNjcm9sbFRvcHx8Zi5zY3JvbGxZfHxkLnNjcm9sbFRvcHx8MCxsZWZ0Oi1oLmxlZnR8fGEuYm9keS5zY3JvbGxMZWZ0fHxm''@;'; put 'put ''LnNjcm9sbFh8fGQuc2Nyb2xsTGVmdHx8MH19Y2hhbmdlKGE9MjApe3JldHVybiBhPjA/dGhpcy5fY2hhbmdlLnBpcGUoVzVlKGEpKTp0aGlzLl9jaGFuZ2V9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV91cGRhdGVWaWV3cG9ydFNpemUo''@;'; put 'put ''KXtjb25zdCBhPXRoaXMuX2dldFdpbmRvdygpO3RoaXMuX3ZpZXdwb3J0U2l6ZT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/e3dpZHRoOmEuaW5uZXJXaWR0aCxoZWlnaHQ6YS5pbm5lckhlaWdodH06e3dpZHRoOjAsaGVpZ2h0OjB9fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIG5ldyhhfHxsKShzcihHNWUpLHNyKFVvKSxzcihGYSw4KSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksUU10PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXty''@;'; put 'put ''ZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe30pLGx9KSgpO2NvbnN0IGdrdD1uZXcgTWkoImNkay1kaXItZG9jIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiB2a3QoKXtyZXR1cm4gSGkoRmEpfX0pLHlrdD0vXihh''@;'; put 'put ''cnxja2J8ZHZ8aGV8aXd8ZmF8bnFvfHBzfHNkfHVnfHVyfHlpfC4qWy1fXShBZGxtfEFyYWJ8SGVicnxOa29vfFJvaGd8VGhhYSkpKD8hLipbLV9dKExhdG58Q3lybCkoJHwtfF8pKSgkfC18XykvaTtsZXQgUTVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT0ibHRy''@;'; put 'put ''Iix0aGlzLmNoYW5nZT1uZXcgeHIsYSYmKHRoaXMudmFsdWU9ZnVuY3Rpb24gYmt0KGwpe2NvbnN0IGM9bD8udG9Mb3dlckNhc2UoKXx8IiI7cmV0dXJuImF1dG8iPT09YyYmdHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8ubGFuZ3VhZ2U/eWt0LnRlc3QobmF2aWdhdG9yLmxhbmd1''@;'; put 'put ''YWdlKT8icnRsIjoibHRyIjoicnRsIj09PWM/InJ0bCI6Imx0ciJ9KChhLmJvZHk/YS5ib2R5LmRpcjpudWxsKXx8KGEuZG9jdW1lbnRFbGVtZW50P2EuZG9jdW1lbnRFbGVtZW50LmRpcjpudWxsKXx8Imx0ciIpKX1uZ09uRGVzdHJveSgpe3RoaXMuY2hhbmdlLmNvbXBsZXRlKCl9fXJldHVy''@;'; put 'put ''biBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKGdrdCw4KSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCk7ZnVuY3Rpb24gQUoobCxjLGEpe2ZvcihsZXQgZiBpbiBjKWlmKGMu''@;'; put 'put ''aGFzT3duUHJvcGVydHkoZikpe2NvbnN0IGQ9Y1tmXTtkP2wuc2V0UHJvcGVydHkoZixkLGE/LmhhcyhmKT8iaW1wb3J0YW50IjoiIik6bC5yZW1vdmVQcm9wZXJ0eShmKX1yZXR1cm4gbH1mdW5jdGlvbiB4YihsLGMpe2NvbnN0IGE9Yz8iIjoibm9uZSI7QUoobC5zdHlsZSx7InRvdWNoLWFj''@;'; put 'put ''dGlvbiI6Yz8iIjoibm9uZSIsIi13ZWJraXQtdXNlci1kcmFnIjpjPyIiOiJub25lIiwiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIjpjPyIiOiJ0cmFuc3BhcmVudCIsInVzZXItc2VsZWN0IjphLCItbXMtdXNlci1zZWxlY3QiOmEsIi13ZWJraXQtdXNlci1zZWxlY3QiOmEsIi1tb3ot''@;'; put 'put ''dXNlci1zZWxlY3QiOmF9KX1mdW5jdGlvbiBlNmUobCxjLGEpe0FKKGwuc3R5bGUse3Bvc2l0aW9uOmM/IiI6ImZpeGVkIix0b3A6Yz8iIjoiMCIsb3BhY2l0eTpjPyIiOiIwIixsZWZ0OmM/IiI6Ii05OTllbSJ9LGEpfWZ1bmN0aW9uIFlQKGwsYyl7cmV0dXJuIGMmJiJub25lIiE9Yz9sKyIg''@;'; put 'put ''IitjOmx9ZnVuY3Rpb24gdDZlKGwpe2NvbnN0IGM9bC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm1zIik+LTE/MToxZTM7cmV0dXJuIHBhcnNlRmxvYXQobCkqY31mdW5jdGlvbiBUSihsLGMpe3JldHVybiBsLmdldFByb3BlcnR5VmFsdWUoYykuc3BsaXQoIiwiKS5tYXAoZj0+Zi50cmltKCkp''@;'; put 'put ''fWZ1bmN0aW9uIE9KKGwpe2NvbnN0IGM9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOmMudG9wLHJpZ2h0OmMucmlnaHQsYm90dG9tOmMuYm90dG9tLGxlZnQ6Yy5sZWZ0LHdpZHRoOmMud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0LHg6Yy54LHk6Yy55fX1mdW5jdGlvbiBESihs''@;'; put 'put ''LGMsYSl7Y29uc3R7dG9wOmYsYm90dG9tOmQsbGVmdDpoLHJpZ2h0Om19PWw7cmV0dXJuIGE+PWYmJmE8PWQmJmM+PWgmJmM8PW19ZnVuY3Rpb24gWkUobCxjLGEpe2wudG9wKz1jLGwuYm90dG9tPWwudG9wK2wuaGVpZ2h0LGwubGVmdCs9YSxsLnJpZ2h0PWwubGVmdCtsLndpZHRofWZ1bmN0''@;'; put 'put ''aW9uIG42ZShsLGMsYSxmKXtjb25zdHt0b3A6ZCxyaWdodDpoLGJvdHRvbTptLGxlZnQ6Xyx3aWR0aDpPLGhlaWdodDpYfT1sLGFlPU8qYyxwZT1YKmM7cmV0dXJuIGY+ZC1wZSYmZjxtK3BlJiZhPl8tYWUmJmE8aCthZX1jbGFzcyByNmV7Y29uc3RydWN0b3IoYyl7dGhpcy5fZG9jdW1lbnQ9''@;'; put 'put ''Yyx0aGlzLnBvc2l0aW9ucz1uZXcgTWFwfWNsZWFyKCl7dGhpcy5wb3NpdGlvbnMuY2xlYXIoKX1jYWNoZShjKXt0aGlzLmNsZWFyKCksdGhpcy5wb3NpdGlvbnMuc2V0KHRoaXMuX2RvY3VtZW50LHtzY3JvbGxQb3NpdGlvbjp0aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKX0pLGMu''@;'; put 'put ''Zm9yRWFjaChhPT57dGhpcy5wb3NpdGlvbnMuc2V0KGEse3Njcm9sbFBvc2l0aW9uOnt0b3A6YS5zY3JvbGxUb3AsbGVmdDphLnNjcm9sbExlZnR9LGNsaWVudFJlY3Q6T0ooYSl9KX0pfWhhbmRsZVNjcm9sbChjKXtjb25zdCBhPVpQKGMpLGY9dGhpcy5wb3NpdGlvbnMuZ2V0KGEpO2lmKCFm''@;'; put 'put ''KXJldHVybiBudWxsO2NvbnN0IGQ9Zi5zY3JvbGxQb3NpdGlvbjtsZXQgaCxtO2lmKGE9PT10aGlzLl9kb2N1bWVudCl7Y29uc3QgWD10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtoPVgudG9wLG09WC5sZWZ0fWVsc2UgaD1hLnNjcm9sbFRvcCxtPWEuc2Nyb2xsTGVmdDtjb25z''@;'; put 'put ''dCBfPWQudG9wLWgsTz1kLmxlZnQtbTtyZXR1cm4gdGhpcy5wb3NpdGlvbnMuZm9yRWFjaCgoWCxhZSk9PntYLmNsaWVudFJlY3QmJmEhPT1hZSYmYS5jb250YWlucyhhZSkmJlpFKFguY2xpZW50UmVjdCxfLE8pfSksZC50b3A9aCxkLmxlZnQ9bSx7dG9wOl8sbGVmdDpPfX1nZXRWaWV3cG9y''@;'; put 'put ''dFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJue3RvcDp3aW5kb3cuc2Nyb2xsWSxsZWZ0OndpbmRvdy5zY3JvbGxYfX19ZnVuY3Rpb24gaTZlKGwpe2NvbnN0IGM9bC5jbG9uZU5vZGUoITApLGE9Yy5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIiksZj1sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Yy5y''@;'; put 'put ''ZW1vdmVBdHRyaWJ1dGUoImlkIik7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspYVtkXS5yZW1vdmVBdHRyaWJ1dGUoImlkIik7cmV0dXJuImNhbnZhcyI9PT1mP2w2ZShsLGMpOigiaW5wdXQiPT09Znx8InNlbGVjdCI9PT1mfHwidGV4dGFyZWEiPT09ZikmJmE2ZShsLGMpLG82ZSgiY2Fu''@;'; put 'put ''dmFzIixsLGMsbDZlKSxvNmUoImlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0IixsLGMsYTZlKSxjfWZ1bmN0aW9uIG82ZShsLGMsYSxmKXtjb25zdCBkPWMucXVlcnlTZWxlY3RvckFsbChsKTtpZihkLmxlbmd0aCl7Y29uc3QgaD1hLnF1ZXJ5U2VsZWN0b3JBbGwobCk7Zm9yKGxldCBtPTA7bTxk''@;'; put 'put ''Lmxlbmd0aDttKyspZihkW21dLGhbbV0pfX1sZXQgd2t0PTA7ZnVuY3Rpb24gYTZlKGwsYyl7ImZpbGUiIT09Yy50eXBlJiYoYy52YWx1ZT1sLnZhbHVlKSwicmFkaW8iPT09Yy50eXBlJiZjLm5hbWUmJihjLm5hbWU9YG1hdC1jbG9uZS0ke2MubmFtZX0tJHt3a3QrK31gKX1mdW5jdGlvbiBs''@;'; put 'put ''NmUobCxjKXtjb25zdCBhPWMuZ2V0Q29udGV4dCgiMmQiKTtpZihhKXRyeXthLmRyYXdJbWFnZShsLDAsMCl9Y2F0Y2h7fX1jb25zdCBzNmU9VUUoe3Bhc3NpdmU6ITB9KSxXUD1VRSh7cGFzc2l2ZTohMX0pLElKPW5ldyBTZXQoWyJwb3NpdGlvbiJdKTtjbGFzcyBTa3R7Z2V0IGRpc2FibGVk''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHwhKCF0aGlzLl9kcm9wQ29udGFpbmVyfHwhdGhpcy5fZHJvcENvbnRhaW5lci5kaXNhYmxlZCl9c2V0IGRpc2FibGVkKGMpe2NvbnN0IGE9YW0oYyk7YSE9PXRoaXMuX2Rpc2FibGVkJiYodGhpcy5fZGlzYWJsZWQ9YSx0aGlzLl90b2dnbGVOYXRp''@;'; put 'put ''dmVEcmFnSW50ZXJhY3Rpb25zKCksdGhpcy5faGFuZGxlcy5mb3JFYWNoKGY9PnhiKGYsYSkpKX1jb25zdHJ1Y3RvcihjLGEsZixkLGgsbSl7dGhpcy5fY29uZmlnPWEsdGhpcy5fZG9jdW1lbnQ9Zix0aGlzLl9uZ1pvbmU9ZCx0aGlzLl92aWV3cG9ydFJ1bGVyPWgsdGhpcy5fZHJhZ0Ryb3BS''@;'; put 'put ''ZWdpc3RyeT1tLHRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm09e3g6MCx5OjB9LHRoaXMuX2FjdGl2ZVRyYW5zZm9ybT17eDowLHk6MH0sdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nPSExLHRoaXMuX21vdmVFdmVudHM9bmV3IHdlLHRoaXMuX3BvaW50ZXJNb3ZlU3Vic2NyaXB0aW9uPXRlLkVNUFRZ''@;'; put 'put ''LHRoaXMuX3BvaW50ZXJVcFN1YnNjcmlwdGlvbj10ZS5FTVBUWSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dGUuRU1QVFksdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPXRlLkVNUFRZLHRoaXMuX2JvdW5kYXJ5RWxlbWVudD1udWxsLHRoaXMuX25hdGl2ZUludGVyYWN0aW9uc0VuYWJsZWQ9''@;'; put 'put ''ITAsdGhpcy5faGFuZGxlcz1bXSx0aGlzLl9kaXNhYmxlZEhhbmRsZXM9bmV3IFNldCx0aGlzLl9kaXJlY3Rpb249Imx0ciIsdGhpcy5kcmFnU3RhcnREZWxheT0wLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuYmVmb3JlU3RhcnRlZD1uZXcgd2UsdGhpcy5zdGFydGVkPW5ldyB3ZSx0aGlzLnJl''@;'; put 'put ''bGVhc2VkPW5ldyB3ZSx0aGlzLmVuZGVkPW5ldyB3ZSx0aGlzLmVudGVyZWQ9bmV3IHdlLHRoaXMuZXhpdGVkPW5ldyB3ZSx0aGlzLmRyb3BwZWQ9bmV3IHdlLHRoaXMubW92ZWQ9dGhpcy5fbW92ZUV2ZW50cyx0aGlzLl9wb2ludGVyRG93bj1fPT57aWYodGhpcy5iZWZvcmVTdGFydGVkLm5l''@;'; put 'put ''eHQoKSx0aGlzLl9oYW5kbGVzLmxlbmd0aCl7Y29uc3QgTz10aGlzLl9nZXRUYXJnZXRIYW5kbGUoXyk7TyYmIXRoaXMuX2Rpc2FibGVkSGFuZGxlcy5oYXMoTykmJiF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pbml0aWFsaXplRHJhZ1NlcXVlbmNlKE8sXyl9ZWxzZSB0aGlzLmRpc2FibGVkfHx0''@;'; put 'put ''aGlzLl9pbml0aWFsaXplRHJhZ1NlcXVlbmNlKHRoaXMuX3Jvb3RFbGVtZW50LF8pfSx0aGlzLl9wb2ludGVyTW92ZT1fPT57Y29uc3QgTz10aGlzLl9nZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoXyk7aWYoIXRoaXMuX2hhc1N0YXJ0ZWREcmFnZ2luZyl7aWYoTWF0aC5hYnMoTy54LXRoaXMu''@;'; put 'put ''X3BpY2t1cFBvc2l0aW9uT25QYWdlLngpK01hdGguYWJzKE8ueS10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS55KT49dGhpcy5fY29uZmlnLmRyYWdTdGFydFRocmVzaG9sZCl7Y29uc3QgeGU9RGF0ZS5ub3coKT49dGhpcy5fZHJhZ1N0YXJ0VGltZSt0aGlzLl9nZXREcmFnU3RhcnREZWxh''@;'; put 'put ''eShfKSxWZT10aGlzLl9kcm9wQ29udGFpbmVyO2lmKCF4ZSlyZXR1cm4gdm9pZCB0aGlzLl9lbmREcmFnU2VxdWVuY2UoXyk7KCFWZXx8IVZlLmlzRHJhZ2dpbmcoKSYmIVZlLmlzUmVjZWl2aW5nKCkpJiYoXy5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2hhc1N0YXJ0ZWREcmFnZ2luZz0hMCx0''@;'; put 'put ''aGlzLl9uZ1pvbmUucnVuKCgpPT50aGlzLl9zdGFydERyYWdTZXF1ZW5jZShfKSkpfXJldHVybn1fLnByZXZlbnREZWZhdWx0KCk7Y29uc3QgWD10aGlzLl9nZXRDb25zdHJhaW5lZFBvaW50ZXJQb3NpdGlvbihPKTtpZih0aGlzLl9oYXNNb3ZlZD0hMCx0aGlzLl9sYXN0S25vd25Qb2ludGVy''@;'; put 'put ''UG9zaXRpb249Tyx0aGlzLl91cGRhdGVQb2ludGVyRGlyZWN0aW9uRGVsdGEoWCksdGhpcy5fZHJvcENvbnRhaW5lcil0aGlzLl91cGRhdGVBY3RpdmVEcm9wQ29udGFpbmVyKFgsTyk7ZWxzZXtjb25zdCBhZT10aGlzLmNvbnN0cmFpblBvc2l0aW9uP3RoaXMuX2luaXRpYWxDbGllbnRSZWN0''@;'; put 'put ''OnRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLHBlPXRoaXMuX2FjdGl2ZVRyYW5zZm9ybTtwZS54PVgueC1hZS54K3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueCxwZS55PVgueS1hZS55K3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueSx0aGlzLl9hcHBseVJvb3RFbGVtZW50VHJhbnNmb3JtKHBl''@;'; put 'put ''LngscGUueSl9dGhpcy5fbW92ZUV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoJiZ0aGlzLl9uZ1pvbmUucnVuKCgpPT57dGhpcy5fbW92ZUV2ZW50cy5uZXh0KHtzb3VyY2U6dGhpcyxwb2ludGVyUG9zaXRpb246WCxldmVudDpfLGRpc3RhbmNlOnRoaXMuX2dldERyYWdEaXN0YW5jZShYKSxkZWx0''@;'; put 'put ''YTp0aGlzLl9wb2ludGVyRGlyZWN0aW9uRGVsdGF9KX0pfSx0aGlzLl9wb2ludGVyVXA9Xz0+e3RoaXMuX2VuZERyYWdTZXF1ZW5jZShfKX0sdGhpcy5fbmF0aXZlRHJhZ1N0YXJ0PV89PntpZih0aGlzLl9oYW5kbGVzLmxlbmd0aCl7Y29uc3QgTz10aGlzLl9nZXRUYXJnZXRIYW5kbGUoXyk7''@;'; put 'put ''TyYmIXRoaXMuX2Rpc2FibGVkSGFuZGxlcy5oYXMoTykmJiF0aGlzLmRpc2FibGVkJiZfLnByZXZlbnREZWZhdWx0KCl9ZWxzZSB0aGlzLmRpc2FibGVkfHxfLnByZXZlbnREZWZhdWx0KCl9LHRoaXMud2l0aFJvb3RFbGVtZW50KGMpLndpdGhQYXJlbnQoYS5wYXJlbnREcmFnUmVmfHxudWxs''@;'; put 'put ''KSx0aGlzLl9wYXJlbnRQb3NpdGlvbnM9bmV3IHI2ZShmKSxtLnJlZ2lzdGVyRHJhZ0l0ZW0odGhpcyl9Z2V0UGxhY2Vob2xkZXJFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyfWdldFJvb3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3Jvb3RFbGVtZW50fWdldFZpc2libGVFbGVt''@;'; put 'put ''ZW50KCl7cmV0dXJuIHRoaXMuaXNEcmFnZ2luZygpP3RoaXMuZ2V0UGxhY2Vob2xkZXJFbGVtZW50KCk6dGhpcy5nZXRSb290RWxlbWVudCgpfXdpdGhIYW5kbGVzKGMpe3RoaXMuX2hhbmRsZXM9Yy5tYXAoZj0+JDAoZikpLHRoaXMuX2hhbmRsZXMuZm9yRWFjaChmPT54YihmLHRoaXMuZGlz''@;'; put 'put ''YWJsZWQpKSx0aGlzLl90b2dnbGVOYXRpdmVEcmFnSW50ZXJhY3Rpb25zKCk7Y29uc3QgYT1uZXcgU2V0O3JldHVybiB0aGlzLl9kaXNhYmxlZEhhbmRsZXMuZm9yRWFjaChmPT57dGhpcy5faGFuZGxlcy5pbmRleE9mKGYpPi0xJiZhLmFkZChmKX0pLHRoaXMuX2Rpc2FibGVkSGFuZGxlcz1h''@;'; put 'put ''LHRoaXN9d2l0aFByZXZpZXdUZW1wbGF0ZShjKXtyZXR1cm4gdGhpcy5fcHJldmlld1RlbXBsYXRlPWMsdGhpc313aXRoUGxhY2Vob2xkZXJUZW1wbGF0ZShjKXtyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZT1jLHRoaXN9d2l0aFJvb3RFbGVtZW50KGMpe2NvbnN0IGE9JDAoYyk7''@;'; put 'put ''cmV0dXJuIGEhPT10aGlzLl9yb290RWxlbWVudCYmKHRoaXMuX3Jvb3RFbGVtZW50JiZ0aGlzLl9yZW1vdmVSb290RWxlbWVudExpc3RlbmVycyh0aGlzLl9yb290RWxlbWVudCksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57YS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv''@;'; put 'put ''d24iLHRoaXMuX3BvaW50ZXJEb3duLFdQKSxhLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLHM2ZSksYS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX25hdGl2ZURyYWdTdGFydCxXUCl9KSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtPXZv''@;'; put 'put ''aWQgMCx0aGlzLl9yb290RWxlbWVudD1hKSx0eXBlb2YgU1ZHRWxlbWVudDwidSImJnRoaXMuX3Jvb3RFbGVtZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudCYmKHRoaXMuX293bmVyU1ZHRWxlbWVudD10aGlzLl9yb290RWxlbWVudC5vd25lclNWR0VsZW1lbnQpLHRoaXN9d2l0aEJvdW5kYXJ5''@;'; put 'put ''RWxlbWVudChjKXtyZXR1cm4gdGhpcy5fYm91bmRhcnlFbGVtZW50PWM/JDAoYyk6bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxjJiYodGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKDEwKS5zdWJzY3JpYmUoKCk9''@;'; put 'put ''PnRoaXMuX2NvbnRhaW5JbnNpZGVCb3VuZGFyeU9uUmVzaXplKCkpKSx0aGlzfXdpdGhQYXJlbnQoYyl7cmV0dXJuIHRoaXMuX3BhcmVudERyYWdSZWY9Yyx0aGlzfWRpc3Bvc2UoKXt0aGlzLl9yZW1vdmVSb290RWxlbWVudExpc3RlbmVycyh0aGlzLl9yb290RWxlbWVudCksdGhpcy5pc0Ry''@;'; put 'put ''YWdnaW5nKCkmJnRoaXMuX3Jvb3RFbGVtZW50Py5yZW1vdmUoKSx0aGlzLl9hbmNob3I/LnJlbW92ZSgpLHRoaXMuX2Rlc3Ryb3lQcmV2aWV3KCksdGhpcy5fZGVzdHJveVBsYWNlaG9sZGVyKCksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5yZW1vdmVEcmFnSXRlbSh0aGlzKSx0aGlzLl9yZW1v''@;'; put 'put ''dmVTdWJzY3JpcHRpb25zKCksdGhpcy5iZWZvcmVTdGFydGVkLmNvbXBsZXRlKCksdGhpcy5zdGFydGVkLmNvbXBsZXRlKCksdGhpcy5yZWxlYXNlZC5jb21wbGV0ZSgpLHRoaXMuZW5kZWQuY29tcGxldGUoKSx0aGlzLmVudGVyZWQuY29tcGxldGUoKSx0aGlzLmV4aXRlZC5jb21wbGV0ZSgp''@;'; put 'put ''LHRoaXMuZHJvcHBlZC5jb21wbGV0ZSgpLHRoaXMuX21vdmVFdmVudHMuY29tcGxldGUoKSx0aGlzLl9oYW5kbGVzPVtdLHRoaXMuX2Rpc2FibGVkSGFuZGxlcy5jbGVhcigpLHRoaXMuX2Ryb3BDb250YWluZXI9dm9pZCAwLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgp''@;'; put 'put ''LHRoaXMuX3BhcmVudFBvc2l0aW9ucy5jbGVhcigpLHRoaXMuX2JvdW5kYXJ5RWxlbWVudD10aGlzLl9yb290RWxlbWVudD10aGlzLl9vd25lclNWR0VsZW1lbnQ9dGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZT10aGlzLl9wcmV2aWV3VGVtcGxhdGU9dGhpcy5fYW5jaG9yPXRoaXMuX3BhcmVu''@;'; put 'put ''dERyYWdSZWY9bnVsbH1pc0RyYWdnaW5nKCl7cmV0dXJuIHRoaXMuX2hhc1N0YXJ0ZWREcmFnZ2luZyYmdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5pc0RyYWdnaW5nKHRoaXMpfXJlc2V0KCl7dGhpcy5fcm9vdEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2luaXRpYWxUcmFuc2Zvcm18''@;'; put 'put ''fCIiLHRoaXMuX2FjdGl2ZVRyYW5zZm9ybT17eDowLHk6MH0sdGhpcy5fcGFzc2l2ZVRyYW5zZm9ybT17eDowLHk6MH19ZGlzYWJsZUhhbmRsZShjKXshdGhpcy5fZGlzYWJsZWRIYW5kbGVzLmhhcyhjKSYmdGhpcy5faGFuZGxlcy5pbmRleE9mKGMpPi0xJiYodGhpcy5fZGlzYWJsZWRIYW5k''@;'; put 'put ''bGVzLmFkZChjKSx4YihjLCEwKSl9ZW5hYmxlSGFuZGxlKGMpe3RoaXMuX2Rpc2FibGVkSGFuZGxlcy5oYXMoYykmJih0aGlzLl9kaXNhYmxlZEhhbmRsZXMuZGVsZXRlKGMpLHhiKGMsdGhpcy5kaXNhYmxlZCkpfXdpdGhEaXJlY3Rpb24oYyl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbj1jLHRo''@;'; put 'put ''aXN9X3dpdGhEcm9wQ29udGFpbmVyKGMpe3RoaXMuX2Ryb3BDb250YWluZXI9Y31nZXRGcmVlRHJhZ1Bvc2l0aW9uKCl7Y29uc3QgYz10aGlzLmlzRHJhZ2dpbmcoKT90aGlzLl9hY3RpdmVUcmFuc2Zvcm06dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybTtyZXR1cm57eDpjLngseTpjLnl9fXNldEZy''@;'; put 'put ''ZWVEcmFnUG9zaXRpb24oYyl7cmV0dXJuIHRoaXMuX2FjdGl2ZVRyYW5zZm9ybT17eDowLHk6MH0sdGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS54PWMueCx0aGlzLl9wYXNzaXZlVHJhbnNmb3JtLnk9Yy55LHRoaXMuX2Ryb3BDb250YWluZXJ8fHRoaXMuX2FwcGx5Um9vdEVsZW1lbnRUcmFuc2Zv''@;'; put 'put ''cm0oYy54LGMueSksdGhpc313aXRoUHJldmlld0NvbnRhaW5lcihjKXtyZXR1cm4gdGhpcy5fcHJldmlld0NvbnRhaW5lcj1jLHRoaXN9X3NvcnRGcm9tTGFzdFBvaW50ZXJQb3NpdGlvbigpe2NvbnN0IGM9dGhpcy5fbGFzdEtub3duUG9pbnRlclBvc2l0aW9uO2MmJnRoaXMuX2Ryb3BDb250''@;'; put 'put ''YWluZXImJnRoaXMuX3VwZGF0ZUFjdGl2ZURyb3BDb250YWluZXIodGhpcy5fZ2V0Q29uc3RyYWluZWRQb2ludGVyUG9zaXRpb24oYyksYyl9X3JlbW92ZVN1YnNjcmlwdGlvbnMoKXt0aGlzLl9wb2ludGVyTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3BvaW50ZXJVcFN1''@;'; put 'put ''YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9kZXN0cm95UHJldmlldygpe3RoaXMuX3ByZXZpZXc/LnJlbW92ZSgpLHRoaXMuX3ByZXZpZXdSZWY/LmRlc3Ryb3koKSx0aGlzLl9wcmV2aWV3PXRoaXMuX3ByZXZpZXdSZWY9''@;'; put 'put ''bnVsbH1fZGVzdHJveVBsYWNlaG9sZGVyKCl7dGhpcy5fcGxhY2Vob2xkZXI/LnJlbW92ZSgpLHRoaXMuX3BsYWNlaG9sZGVyUmVmPy5kZXN0cm95KCksdGhpcy5fcGxhY2Vob2xkZXI9dGhpcy5fcGxhY2Vob2xkZXJSZWY9bnVsbH1fZW5kRHJhZ1NlcXVlbmNlKGMpe2lmKHRoaXMuX2RyYWdE''@;'; put 'put ''cm9wUmVnaXN0cnkuaXNEcmFnZ2luZyh0aGlzKSYmKHRoaXMuX3JlbW92ZVN1YnNjcmlwdGlvbnMoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnN0b3BEcmFnZ2luZyh0aGlzKSx0aGlzLl90b2dnbGVOYXRpdmVEcmFnSW50ZXJhY3Rpb25zKCksdGhpcy5faGFuZGxlcyYmKHRoaXMuX3Jvb3RF''@;'; put 'put ''bGVtZW50LnN0eWxlLndlYmtpdFRhcEhpZ2hsaWdodENvbG9yPXRoaXMuX3Jvb3RFbGVtZW50VGFwSGlnaGxpZ2h0KSx0aGlzLl9oYXNTdGFydGVkRHJhZ2dpbmcpKWlmKHRoaXMucmVsZWFzZWQubmV4dCh7c291cmNlOnRoaXMsZXZlbnQ6Y30pLHRoaXMuX2Ryb3BDb250YWluZXIpdGhpcy5f''@;'; put 'put ''ZHJvcENvbnRhaW5lci5fc3RvcFNjcm9sbGluZygpLHRoaXMuX2FuaW1hdGVQcmV2aWV3VG9QbGFjZWhvbGRlcigpLnRoZW4oKCk9Pnt0aGlzLl9jbGVhbnVwRHJhZ0FydGlmYWN0cyhjKSx0aGlzLl9jbGVhbnVwQ2FjaGVkRGltZW5zaW9ucygpLHRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuc3Rv''@;'; put 'put ''cERyYWdnaW5nKHRoaXMpfSk7ZWxzZXt0aGlzLl9wYXNzaXZlVHJhbnNmb3JtLng9dGhpcy5fYWN0aXZlVHJhbnNmb3JtLng7Y29uc3QgYT10aGlzLl9nZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoYyk7dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS55PXRoaXMuX2FjdGl2ZVRyYW5zZm9ybS55LHRo''@;'; put 'put ''aXMuX25nWm9uZS5ydW4oKCk9Pnt0aGlzLmVuZGVkLm5leHQoe3NvdXJjZTp0aGlzLGRpc3RhbmNlOnRoaXMuX2dldERyYWdEaXN0YW5jZShhKSxkcm9wUG9pbnQ6YSxldmVudDpjfSl9KSx0aGlzLl9jbGVhbnVwQ2FjaGVkRGltZW5zaW9ucygpLHRoaXMuX2RyYWdEcm9wUmVnaXN0cnkuc3Rv''@;'; put 'put ''cERyYWdnaW5nKHRoaXMpfX1fc3RhcnREcmFnU2VxdWVuY2UoYyl7WUUoYykmJih0aGlzLl9sYXN0VG91Y2hFdmVudFRpbWU9RGF0ZS5ub3coKSksdGhpcy5fdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucygpO2NvbnN0IGE9dGhpcy5fZHJvcENvbnRhaW5lcjtpZihhKXtjb25zdCBmPXRo''@;'; put 'put ''aXMuX3Jvb3RFbGVtZW50LGQ9Zi5wYXJlbnROb2RlLGg9dGhpcy5fcGxhY2Vob2xkZXI9dGhpcy5fY3JlYXRlUGxhY2Vob2xkZXJFbGVtZW50KCksbT10aGlzLl9hbmNob3I9dGhpcy5fYW5jaG9yfHx0aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSxfPXRoaXMuX2dldFNoYWRvd1Jv''@;'; put 'put ''b3QoKTtkLmluc2VydEJlZm9yZShtLGYpLHRoaXMuX2luaXRpYWxUcmFuc2Zvcm09Zi5zdHlsZS50cmFuc2Zvcm18fCIiLHRoaXMuX3ByZXZpZXc9dGhpcy5fY3JlYXRlUHJldmlld0VsZW1lbnQoKSxlNmUoZiwhMSxJSiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkLnJlcGxh''@;'; put 'put ''Y2VDaGlsZChoLGYpKSx0aGlzLl9nZXRQcmV2aWV3SW5zZXJ0aW9uUG9pbnQoZCxfKS5hcHBlbmRDaGlsZCh0aGlzLl9wcmV2aWV3KSx0aGlzLnN0YXJ0ZWQubmV4dCh7c291cmNlOnRoaXMsZXZlbnQ6Y30pLGEuc3RhcnQoKSx0aGlzLl9pbml0aWFsQ29udGFpbmVyPWEsdGhpcy5faW5pdGlh''@;'; put 'put ''bEluZGV4PWEuZ2V0SXRlbUluZGV4KHRoaXMpfWVsc2UgdGhpcy5zdGFydGVkLm5leHQoe3NvdXJjZTp0aGlzLGV2ZW50OmN9KSx0aGlzLl9pbml0aWFsQ29udGFpbmVyPXRoaXMuX2luaXRpYWxJbmRleD12b2lkIDA7dGhpcy5fcGFyZW50UG9zaXRpb25zLmNhY2hlKGE/YS5nZXRTY3JvbGxh''@;'; put 'put ''YmxlUGFyZW50cygpOltdKX1faW5pdGlhbGl6ZURyYWdTZXF1ZW5jZShjLGEpe3RoaXMuX3BhcmVudERyYWdSZWYmJmEuc3RvcFByb3BhZ2F0aW9uKCk7Y29uc3QgZj10aGlzLmlzRHJhZ2dpbmcoKSxkPVlFKGEpLGg9IWQmJjAhPT1hLmJ1dHRvbixtPXRoaXMuX3Jvb3RFbGVtZW50LF89WlAo''@;'; put 'put ''YSksTz0hZCYmdGhpcy5fbGFzdFRvdWNoRXZlbnRUaW1lJiZ0aGlzLl9sYXN0VG91Y2hFdmVudFRpbWUrODAwPkRhdGUubm93KCksWD1kP2Z1bmN0aW9uIGhrdChsKXtjb25zdCBjPWwudG91Y2hlcyYmbC50b3VjaGVzWzBdfHxsLmNoYW5nZWRUb3VjaGVzJiZsLmNoYW5nZWRUb3VjaGVzWzBd''@;'; put 'put ''O3JldHVybiEoIWN8fC0xIT09Yy5pZGVudGlmaWVyfHxudWxsIT1jLnJhZGl1c1gmJjEhPT1jLnJhZGl1c1h8fG51bGwhPWMucmFkaXVzWSYmMSE9PWMucmFkaXVzWSl9KGEpOmZ1bmN0aW9uIGRrdChsKXtyZXR1cm4gMD09PWwuYnV0dG9uc3x8MD09PWwub2Zmc2V0WCYmMD09PWwub2Zmc2V0''@;'; put 'put ''WX0oYSk7aWYoXyYmXy5kcmFnZ2FibGUmJiJtb3VzZWRvd24iPT09YS50eXBlJiZhLnByZXZlbnREZWZhdWx0KCksZnx8aHx8T3x8WClyZXR1cm47aWYodGhpcy5faGFuZGxlcy5sZW5ndGgpe2NvbnN0IGJlPW0uc3R5bGU7dGhpcy5fcm9vdEVsZW1lbnRUYXBIaWdobGlnaHQ9YmUud2Via2l0''@;'; put 'put ''VGFwSGlnaGxpZ2h0Q29sb3J8fCIiLGJlLndlYmtpdFRhcEhpZ2hsaWdodENvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5faGFzU3RhcnRlZERyYWdnaW5nPXRoaXMuX2hhc01vdmVkPSExLHRoaXMuX3JlbW92ZVN1YnNjcmlwdGlvbnMoKSx0aGlzLl9pbml0aWFsQ2xpZW50UmVjdD10aGlzLl9y''@;'; put 'put ''b290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9wb2ludGVyTW92ZVN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnBvaW50ZXJNb3ZlLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyTW92ZSksdGhpcy5fcG9pbnRlclVwU3Vic2NyaXB0aW9uPXRoaXMuX2Ry''@;'; put 'put ''YWdEcm9wUmVnaXN0cnkucG9pbnRlclVwLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyVXApLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnNjcm9sbGVkKHRoaXMuX2dldFNoYWRvd1Jvb3QoKSkuc3Vic2NyaWJlKGJlPT50aGlzLl91cGRhdGVPblNjcm9s''@;'; put 'put ''bChiZSkpLHRoaXMuX2JvdW5kYXJ5RWxlbWVudCYmKHRoaXMuX2JvdW5kYXJ5UmVjdD1PSih0aGlzLl9ib3VuZGFyeUVsZW1lbnQpKTtjb25zdCBhZT10aGlzLl9wcmV2aWV3VGVtcGxhdGU7dGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQ9YWUmJmFlLnRlbXBsYXRlJiYhYWUubWF0Y2hT''@;'; put 'put ''aXplP3t4OjAseTowfTp0aGlzLl9nZXRQb2ludGVyUG9zaXRpb25JbkVsZW1lbnQodGhpcy5faW5pdGlhbENsaWVudFJlY3QsYyxhKTtjb25zdCBwZT10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZT10aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb249dGhpcy5fZ2V0UG9pbnRlclBvc2l0''@;'; put 'put ''aW9uT25QYWdlKGEpO3RoaXMuX3BvaW50ZXJEaXJlY3Rpb25EZWx0YT17eDowLHk6MH0sdGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlPXt4OnBlLngseTpwZS55fSx0aGlzLl9kcmFnU3RhcnRUaW1lPURhdGUubm93KCksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5z''@;'; put 'put ''dGFydERyYWdnaW5nKHRoaXMsYSl9X2NsZWFudXBEcmFnQXJ0aWZhY3RzKGMpe2U2ZSh0aGlzLl9yb290RWxlbWVudCwhMCxJSiksdGhpcy5fYW5jaG9yLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHRoaXMuX3Jvb3RFbGVtZW50LHRoaXMuX2FuY2hvciksdGhpcy5fZGVzdHJveVByZXZpZXco''@;'; put 'put ''KSx0aGlzLl9kZXN0cm95UGxhY2Vob2xkZXIoKSx0aGlzLl9pbml0aWFsQ2xpZW50UmVjdD10aGlzLl9ib3VuZGFyeVJlY3Q9dGhpcy5fcHJldmlld1JlY3Q9dGhpcy5faW5pdGlhbFRyYW5zZm9ybT12b2lkIDAsdGhpcy5fbmdab25lLnJ1bigoKT0+e2NvbnN0IGE9dGhpcy5fZHJvcENvbnRh''@;'; put 'put ''aW5lcixmPWEuZ2V0SXRlbUluZGV4KHRoaXMpLGQ9dGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGMpLGg9dGhpcy5fZ2V0RHJhZ0Rpc3RhbmNlKGQpLG09YS5faXNPdmVyQ29udGFpbmVyKGQueCxkLnkpO3RoaXMuZW5kZWQubmV4dCh7c291cmNlOnRoaXMsZGlzdGFuY2U6aCxkcm9w''@;'; put 'put ''UG9pbnQ6ZCxldmVudDpjfSksdGhpcy5kcm9wcGVkLm5leHQoe2l0ZW06dGhpcyxjdXJyZW50SW5kZXg6ZixwcmV2aW91c0luZGV4OnRoaXMuX2luaXRpYWxJbmRleCxjb250YWluZXI6YSxwcmV2aW91c0NvbnRhaW5lcjp0aGlzLl9pbml0aWFsQ29udGFpbmVyLGlzUG9pbnRlck92ZXJDb250''@;'; put 'put ''YWluZXI6bSxkaXN0YW5jZTpoLGRyb3BQb2ludDpkLGV2ZW50OmN9KSxhLmRyb3AodGhpcyxmLHRoaXMuX2luaXRpYWxJbmRleCx0aGlzLl9pbml0aWFsQ29udGFpbmVyLG0saCxkLGMpLHRoaXMuX2Ryb3BDb250YWluZXI9dGhpcy5faW5pdGlhbENvbnRhaW5lcn0pfV91cGRhdGVBY3RpdmVE''@;'; put 'put ''cm9wQ29udGFpbmVyKHt4OmMseTphfSx7eDpmLHk6ZH0pe2xldCBoPXRoaXMuX2luaXRpYWxDb250YWluZXIuX2dldFNpYmxpbmdDb250YWluZXJGcm9tUG9zaXRpb24odGhpcyxjLGEpOyFoJiZ0aGlzLl9kcm9wQ29udGFpbmVyIT09dGhpcy5faW5pdGlhbENvbnRhaW5lciYmdGhpcy5faW5p''@;'; put 'put ''dGlhbENvbnRhaW5lci5faXNPdmVyQ29udGFpbmVyKGMsYSkmJihoPXRoaXMuX2luaXRpYWxDb250YWluZXIpLGgmJmghPT10aGlzLl9kcm9wQ29udGFpbmVyJiZ0aGlzLl9uZ1pvbmUucnVuKCgpPT57dGhpcy5leGl0ZWQubmV4dCh7aXRlbTp0aGlzLGNvbnRhaW5lcjp0aGlzLl9kcm9wQ29u''@;'; put 'put ''dGFpbmVyfSksdGhpcy5fZHJvcENvbnRhaW5lci5leGl0KHRoaXMpLHRoaXMuX2Ryb3BDb250YWluZXI9aCx0aGlzLl9kcm9wQ29udGFpbmVyLmVudGVyKHRoaXMsYyxhLGg9PT10aGlzLl9pbml0aWFsQ29udGFpbmVyJiZoLnNvcnRpbmdEaXNhYmxlZD90aGlzLl9pbml0aWFsSW5kZXg6dm9p''@;'; put 'put ''ZCAwKSx0aGlzLmVudGVyZWQubmV4dCh7aXRlbTp0aGlzLGNvbnRhaW5lcjpoLGN1cnJlbnRJbmRleDpoLmdldEl0ZW1JbmRleCh0aGlzKX0pfSksdGhpcy5pc0RyYWdnaW5nKCkmJih0aGlzLl9kcm9wQ29udGFpbmVyLl9zdGFydFNjcm9sbGluZ0lmTmVjZXNzYXJ5KGYsZCksdGhpcy5fZHJv''@;'; put 'put ''cENvbnRhaW5lci5fc29ydEl0ZW0odGhpcyxjLGEsdGhpcy5fcG9pbnRlckRpcmVjdGlvbkRlbHRhKSx0aGlzLmNvbnN0cmFpblBvc2l0aW9uP3RoaXMuX2FwcGx5UHJldmlld1RyYW5zZm9ybShjLGEpOnRoaXMuX2FwcGx5UHJldmlld1RyYW5zZm9ybShjLXRoaXMuX3BpY2t1cFBvc2l0aW9u''@;'; put 'put ''SW5FbGVtZW50LngsYS10aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudC55KSl9X2NyZWF0ZVByZXZpZXdFbGVtZW50KCl7Y29uc3QgYz10aGlzLl9wcmV2aWV3VGVtcGxhdGUsYT10aGlzLnByZXZpZXdDbGFzcyxmPWM/Yy50ZW1wbGF0ZTpudWxsO2xldCBkO2lmKGYmJmMpe2NvbnN0IGg9''@;'; put 'put ''Yy5tYXRjaFNpemU/dGhpcy5faW5pdGlhbENsaWVudFJlY3Q6bnVsbCxtPWMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZixjLmNvbnRleHQpO20uZGV0ZWN0Q2hhbmdlcygpLGQ9YzZlKG0sdGhpcy5fZG9jdW1lbnQpLHRoaXMuX3ByZXZpZXdSZWY9bSxjLm1hdGNoU2l6ZT9m''@;'; put 'put ''NmUoZCxoKTpkLnN0eWxlLnRyYW5zZm9ybT1HUCh0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS54LHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLnkpfWVsc2UgZD1pNmUodGhpcy5fcm9vdEVsZW1lbnQpLGY2ZShkLHRoaXMuX2luaXRpYWxDbGllbnRSZWN0KSx0aGlzLl9pbml0aWFsVHJh''@;'; put 'put ''bnNmb3JtJiYoZC5zdHlsZS50cmFuc2Zvcm09dGhpcy5faW5pdGlhbFRyYW5zZm9ybSk7cmV0dXJuIEFKKGQuc3R5bGUseyJwb2ludGVyLWV2ZW50cyI6Im5vbmUiLG1hcmdpbjoiMCIscG9zaXRpb246ImZpeGVkIix0b3A6IjAiLGxlZnQ6IjAiLCJ6LWluZGV4IjpgJHt0aGlzLl9jb25maWcu''@;'; put 'put ''ekluZGV4fHwxZTN9YH0sSUopLHhiKGQsITEpLGQuY2xhc3NMaXN0LmFkZCgiY2RrLWRyYWctcHJldmlldyIpLGQuc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMuX2RpcmVjdGlvbiksYSYmKEFycmF5LmlzQXJyYXkoYSk/YS5mb3JFYWNoKGg9PmQuY2xhc3NMaXN0LmFkZChoKSk6ZC5jbGFzc0xp''@;'; put 'put ''c3QuYWRkKGEpKSxkfV9hbmltYXRlUHJldmlld1RvUGxhY2Vob2xkZXIoKXtpZighdGhpcy5faGFzTW92ZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGM9dGhpcy5fcGxhY2Vob2xkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fcHJldmlldy5jbGFzc0xpc3QuYWRk''@;'; put 'put ''KCJjZGstZHJhZy1hbmltYXRpbmciKSx0aGlzLl9hcHBseVByZXZpZXdUcmFuc2Zvcm0oYy5sZWZ0LGMudG9wKTtjb25zdCBhPWZ1bmN0aW9uIF9rdChsKXtjb25zdCBjPWdldENvbXB1dGVkU3R5bGUobCksYT1USihjLCJ0cmFuc2l0aW9uLXByb3BlcnR5IiksZj1hLmZpbmQoXz0+InRyYW5z''@;'; put 'put ''Zm9ybSI9PT1ffHwiYWxsIj09PV8pO2lmKCFmKXJldHVybiAwO2NvbnN0IGQ9YS5pbmRleE9mKGYpLGg9VEooYywidHJhbnNpdGlvbi1kdXJhdGlvbiIpLG09VEooYywidHJhbnNpdGlvbi1kZWxheSIpO3JldHVybiB0NmUoaFtkXSkrdDZlKG1bZF0pfSh0aGlzLl9wcmV2aWV3KTtyZXR1cm4g''@;'; put 'put ''MD09PWE/UHJvbWlzZS5yZXNvbHZlKCk6dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5uZXcgUHJvbWlzZShmPT57Y29uc3QgZD1tPT57KCFtfHxaUChtKT09PXRoaXMuX3ByZXZpZXcmJiJ0cmFuc2Zvcm0iPT09bS5wcm9wZXJ0eU5hbWUpJiYodGhpcy5fcHJldmlldz8ucmVt''@;'; put 'put ''b3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsZCksZigpLGNsZWFyVGltZW91dChoKSl9LGg9c2V0VGltZW91dChkLDEuNSphKTt0aGlzLl9wcmV2aWV3LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLGQpfSkpfV9jcmVhdGVQbGFjZWhvbGRlckVsZW1lbnQoKXtjb25z''@;'; put 'put ''dCBjPXRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGUsYT1jP2MudGVtcGxhdGU6bnVsbDtsZXQgZjtyZXR1cm4gYT8odGhpcy5fcGxhY2Vob2xkZXJSZWY9Yy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhhLGMuY29udGV4dCksdGhpcy5fcGxhY2Vob2xkZXJSZWYuZGV0ZWN0Q2hh''@;'; put 'put ''bmdlcygpLGY9YzZlKHRoaXMuX3BsYWNlaG9sZGVyUmVmLHRoaXMuX2RvY3VtZW50KSk6Zj1pNmUodGhpcy5fcm9vdEVsZW1lbnQpLGYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsZi5jbGFzc0xpc3QuYWRkKCJjZGstZHJhZy1wbGFjZWhvbGRlciIpLGZ9X2dldFBvaW50ZXJQb3NpdGlv''@;'; put 'put ''bkluRWxlbWVudChjLGEsZil7Y29uc3QgZD1hPT09dGhpcy5fcm9vdEVsZW1lbnQ/bnVsbDphLGg9ZD9kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOmMsbT1ZRShmKT9mLnRhcmdldFRvdWNoZXNbMF06ZixfPXRoaXMuX2dldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm57eDpoLmxl''@;'; put 'put ''ZnQtYy5sZWZ0KyhtLnBhZ2VYLWgubGVmdC1fLmxlZnQpLHk6aC50b3AtYy50b3ArKG0ucGFnZVktaC50b3AtXy50b3ApfX1fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGMpe2NvbnN0IGE9dGhpcy5fZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLGY9WUUoYyk/Yy50b3VjaGVzWzBdfHxj''@;'; put 'put ''LmNoYW5nZWRUb3VjaGVzWzBdfHx7cGFnZVg6MCxwYWdlWTowfTpjLGQ9Zi5wYWdlWC1hLmxlZnQsaD1mLnBhZ2VZLWEudG9wO2lmKHRoaXMuX293bmVyU1ZHRWxlbWVudCl7Y29uc3QgbT10aGlzLl9vd25lclNWR0VsZW1lbnQuZ2V0U2NyZWVuQ1RNKCk7aWYobSl7Y29uc3QgXz10aGlzLl9v''@;'; put 'put ''d25lclNWR0VsZW1lbnQuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gXy54PWQsXy55PWgsXy5tYXRyaXhUcmFuc2Zvcm0obS5pbnZlcnNlKCkpfX1yZXR1cm57eDpkLHk6aH19X2dldENvbnN0cmFpbmVkUG9pbnRlclBvc2l0aW9uKGMpe2NvbnN0IGE9dGhpcy5fZHJvcENvbnRhaW5lcj90aGlz''@;'; put 'put ''Ll9kcm9wQ29udGFpbmVyLmxvY2tBeGlzOm51bGw7bGV0e3g6Zix5OmR9PXRoaXMuY29uc3RyYWluUG9zaXRpb24/dGhpcy5jb25zdHJhaW5Qb3NpdGlvbihjLHRoaXMsdGhpcy5faW5pdGlhbENsaWVudFJlY3QsdGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQpOmM7aWYoIngiPT09dGhp''@;'; put 'put ''cy5sb2NrQXhpc3x8IngiPT09YT9kPXRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLnk6KCJ5Ij09PXRoaXMubG9ja0F4aXN8fCJ5Ij09PWEpJiYoZj10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS54KSx0aGlzLl9ib3VuZGFyeVJlY3Qpe2NvbnN0e3g6aCx5Om19PXRoaXMuX3BpY2t1cFBv''@;'; put 'put ''c2l0aW9uSW5FbGVtZW50LF89dGhpcy5fYm91bmRhcnlSZWN0LHt3aWR0aDpPLGhlaWdodDpYfT10aGlzLl9nZXRQcmV2aWV3UmVjdCgpLGFlPV8udG9wK20scGU9Xy5ib3R0b20tKFgtbSk7Zj11NmUoZixfLmxlZnQraCxfLnJpZ2h0LShPLWgpKSxkPXU2ZShkLGFlLHBlKX1yZXR1cm57eDpm''@;'; put 'put ''LHk6ZH19X3VwZGF0ZVBvaW50ZXJEaXJlY3Rpb25EZWx0YShjKXtjb25zdHt4OmEseTpmfT1jLGQ9dGhpcy5fcG9pbnRlckRpcmVjdGlvbkRlbHRhLGg9dGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlLG09TWF0aC5hYnMoYS1oLngpLF89TWF0aC5hYnMoZi1oLnkp''@;'; put 'put ''O3JldHVybiBtPnRoaXMuX2NvbmZpZy5wb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkJiYoZC54PWE+aC54PzE6LTEsaC54PWEpLF8+dGhpcy5fY29uZmlnLnBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQmJihkLnk9Zj5oLnk/MTotMSxoLnk9ZiksZH1fdG9nZ2xlTmF0aXZl''@;'; put 'put ''RHJhZ0ludGVyYWN0aW9ucygpe2lmKCF0aGlzLl9yb290RWxlbWVudHx8IXRoaXMuX2hhbmRsZXMpcmV0dXJuO2NvbnN0IGM9dGhpcy5faGFuZGxlcy5sZW5ndGg+MHx8IXRoaXMuaXNEcmFnZ2luZygpO2MhPT10aGlzLl9uYXRpdmVJbnRlcmFjdGlvbnNFbmFibGVkJiYodGhpcy5fbmF0aXZl''@;'; put 'put ''SW50ZXJhY3Rpb25zRW5hYmxlZD1jLHhiKHRoaXMuX3Jvb3RFbGVtZW50LGMpKX1fcmVtb3ZlUm9vdEVsZW1lbnRMaXN0ZW5lcnMoYyl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLFdQKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3Rh''@;'; put 'put ''cnQiLHRoaXMuX3BvaW50ZXJEb3duLHM2ZSksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX25hdGl2ZURyYWdTdGFydCxXUCl9X2FwcGx5Um9vdEVsZW1lbnRUcmFuc2Zvcm0oYyxhKXtjb25zdCBmPUdQKGMsYSksZD10aGlzLl9yb290RWxlbWVudC5zdHlsZTtudWxs''@;'; put 'put ''PT10aGlzLl9pbml0aWFsVHJhbnNmb3JtJiYodGhpcy5faW5pdGlhbFRyYW5zZm9ybT1kLnRyYW5zZm9ybSYmIm5vbmUiIT1kLnRyYW5zZm9ybT9kLnRyYW5zZm9ybToiIiksZC50cmFuc2Zvcm09WVAoZix0aGlzLl9pbml0aWFsVHJhbnNmb3JtKX1fYXBwbHlQcmV2aWV3VHJhbnNmb3JtKGMs''@;'; put 'put ''YSl7Y29uc3QgZj10aGlzLl9wcmV2aWV3VGVtcGxhdGU/LnRlbXBsYXRlP3ZvaWQgMDp0aGlzLl9pbml0aWFsVHJhbnNmb3JtLGQ9R1AoYyxhKTt0aGlzLl9wcmV2aWV3LnN0eWxlLnRyYW5zZm9ybT1ZUChkLGYpfV9nZXREcmFnRGlzdGFuY2UoYyl7Y29uc3QgYT10aGlzLl9waWNrdXBQb3Np''@;'; put 'put ''dGlvbk9uUGFnZTtyZXR1cm4gYT97eDpjLngtYS54LHk6Yy55LWEueX06e3g6MCx5OjB9fV9jbGVhbnVwQ2FjaGVkRGltZW5zaW9ucygpe3RoaXMuX2JvdW5kYXJ5UmVjdD10aGlzLl9wcmV2aWV3UmVjdD12b2lkIDAsdGhpcy5fcGFyZW50UG9zaXRpb25zLmNsZWFyKCl9X2NvbnRhaW5JbnNp''@;'; put 'put ''ZGVCb3VuZGFyeU9uUmVzaXplKCl7bGV0e3g6Yyx5OmF9PXRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm07aWYoMD09PWMmJjA9PT1hfHx0aGlzLmlzRHJhZ2dpbmcoKXx8IXRoaXMuX2JvdW5kYXJ5RWxlbWVudClyZXR1cm47Y29uc3QgZj10aGlzLl9yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVu''@;'; put 'put ''dFJlY3QoKSxkPXRoaXMuX2JvdW5kYXJ5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZigwPT09ZC53aWR0aCYmMD09PWQuaGVpZ2h0fHwwPT09Zi53aWR0aCYmMD09PWYuaGVpZ2h0KXJldHVybjtjb25zdCBoPWQubGVmdC1mLmxlZnQsbT1mLnJpZ2h0LWQucmlnaHQsXz1kLnRv''@;'; put 'put ''cC1mLnRvcCxPPWYuYm90dG9tLWQuYm90dG9tO2Qud2lkdGg+Zi53aWR0aD8oaD4wJiYoYys9aCksbT4wJiYoYy09bSkpOmM9MCxkLmhlaWdodD5mLmhlaWdodD8oXz4wJiYoYSs9XyksTz4wJiYoYS09TykpOmE9MCwoYyE9PXRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueHx8YSE9PXRoaXMuX3Bh''@;'; put 'put ''c3NpdmVUcmFuc2Zvcm0ueSkmJnRoaXMuc2V0RnJlZURyYWdQb3NpdGlvbih7eTphLHg6Y30pfV9nZXREcmFnU3RhcnREZWxheShjKXtjb25zdCBhPXRoaXMuZHJhZ1N0YXJ0RGVsYXk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBhP2E6WUUoYyk/YS50b3VjaDphP2EubW91c2U6MH1fdXBkYXRl''@;'; put 'put ''T25TY3JvbGwoYyl7Y29uc3QgYT10aGlzLl9wYXJlbnRQb3NpdGlvbnMuaGFuZGxlU2Nyb2xsKGMpO2lmKGEpe2NvbnN0IGY9WlAoYyk7dGhpcy5fYm91bmRhcnlSZWN0JiZmIT09dGhpcy5fYm91bmRhcnlFbGVtZW50JiZmLmNvbnRhaW5zKHRoaXMuX2JvdW5kYXJ5RWxlbWVudCkmJlpFKHRo''@;'; put 'put ''aXMuX2JvdW5kYXJ5UmVjdCxhLnRvcCxhLmxlZnQpLHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLngrPWEubGVmdCx0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS55Kz1hLnRvcCx0aGlzLl9kcm9wQ29udGFpbmVyfHwodGhpcy5fYWN0aXZlVHJhbnNmb3JtLngtPWEubGVmdCx0aGlzLl9h''@;'; put 'put ''Y3RpdmVUcmFuc2Zvcm0ueS09YS50b3AsdGhpcy5fYXBwbHlSb290RWxlbWVudFRyYW5zZm9ybSh0aGlzLl9hY3RpdmVUcmFuc2Zvcm0ueCx0aGlzLl9hY3RpdmVUcmFuc2Zvcm0ueSkpfX1fZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnRQb3NpdGlvbnMu''@;'; put 'put ''cG9zaXRpb25zLmdldCh0aGlzLl9kb2N1bWVudCk/LnNjcm9sbFBvc2l0aW9ufHx0aGlzLl9wYXJlbnRQb3NpdGlvbnMuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpfV9nZXRTaGFkb3dSb290KCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2NhY2hlZFNoYWRvd1Jvb3QmJih0aGlzLl9jYWNo''@;'; put 'put ''ZWRTaGFkb3dSb290PUs1ZSh0aGlzLl9yb290RWxlbWVudCkpLHRoaXMuX2NhY2hlZFNoYWRvd1Jvb3R9X2dldFByZXZpZXdJbnNlcnRpb25Qb2ludChjLGEpe2NvbnN0IGY9dGhpcy5fcHJldmlld0NvbnRhaW5lcnx8Imdsb2JhbCI7aWYoInBhcmVudCI9PT1mKXJldHVybiBjO2lmKCJnbG9i''@;'; put 'put ''YWwiPT09Zil7Y29uc3QgZD10aGlzLl9kb2N1bWVudDtyZXR1cm4gYXx8ZC5mdWxsc2NyZWVuRWxlbWVudHx8ZC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8ZC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8ZC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxkLmJvZHl9cmV0dXJuICQwKGYpfV9nZXRQcmV2''@;'; put 'put ''aWV3UmVjdCgpe3JldHVybighdGhpcy5fcHJldmlld1JlY3R8fCF0aGlzLl9wcmV2aWV3UmVjdC53aWR0aCYmIXRoaXMuX3ByZXZpZXdSZWN0LmhlaWdodCkmJih0aGlzLl9wcmV2aWV3UmVjdD10aGlzLl9wcmV2aWV3P3RoaXMuX3ByZXZpZXcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6dGhp''@;'; put 'put ''cy5faW5pdGlhbENsaWVudFJlY3QpLHRoaXMuX3ByZXZpZXdSZWN0fV9nZXRUYXJnZXRIYW5kbGUoYyl7cmV0dXJuIHRoaXMuX2hhbmRsZXMuZmluZChhPT5jLnRhcmdldCYmKGMudGFyZ2V0PT09YXx8YS5jb250YWlucyhjLnRhcmdldCkpKX19ZnVuY3Rpb24gR1AobCxjKXtyZXR1cm5gdHJh''@;'; put 'put ''bnNsYXRlM2QoJHtNYXRoLnJvdW5kKGwpfXB4LCAke01hdGgucm91bmQoYyl9cHgsIDApYH1mdW5jdGlvbiB1NmUobCxjLGEpe3JldHVybiBNYXRoLm1heChjLE1hdGgubWluKGEsbCkpfWZ1bmN0aW9uIFlFKGwpe3JldHVybiJ0Ij09PWwudHlwZVswXX1mdW5jdGlvbiBjNmUobCxjKXtjb25z''@;'; put 'put ''dCBhPWwucm9vdE5vZGVzO2lmKDE9PT1hLmxlbmd0aCYmYVswXS5ub2RlVHlwZT09PWMuRUxFTUVOVF9OT0RFKXJldHVybiBhWzBdO2NvbnN0IGY9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gYS5mb3JFYWNoKGQ9PmYuYXBwZW5kQ2hpbGQoZCkpLGZ9ZnVuY3Rpb24gZjZlKGwsYyl7''@;'; put 'put ''bC5zdHlsZS53aWR0aD1gJHtjLndpZHRofXB4YCxsLnN0eWxlLmhlaWdodD1gJHtjLmhlaWdodH1weGAsbC5zdHlsZS50cmFuc2Zvcm09R1AoYy5sZWZ0LGMudG9wKX1mdW5jdGlvbiBkNmUobCxjLGEpe2NvbnN0IGY9V0UoYyxsLmxlbmd0aC0xKSxkPVdFKGEsbC5sZW5ndGgtMSk7aWYoZj09''@;'; put 'put ''PWQpcmV0dXJuO2NvbnN0IGg9bFtmXSxtPWQ8Zj8tMToxO2ZvcihsZXQgXz1mO18hPT1kO18rPW0pbFtfXT1sW18rbV07bFtkXT1ofWZ1bmN0aW9uIFdFKGwsYyl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oYyxsKSl9Y2xhc3Mga2t0e2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fZWxlbWVu''@;'; put 'put ''dD1jLHRoaXMuX2RyYWdEcm9wUmVnaXN0cnk9YSx0aGlzLl9pdGVtUG9zaXRpb25zPVtdLHRoaXMub3JpZW50YXRpb249InZlcnRpY2FsIix0aGlzLl9wcmV2aW91c1N3YXA9e2RyYWc6bnVsbCxkZWx0YTowLG92ZXJsYXBzOiExfX1zdGFydChjKXt0aGlzLndpdGhJdGVtcyhjKX1zb3J0KGMs''@;'; put 'put ''YSxmLGQpe2NvbnN0IGg9dGhpcy5faXRlbVBvc2l0aW9ucyxtPXRoaXMuX2dldEl0ZW1JbmRleEZyb21Qb2ludGVyUG9zaXRpb24oYyxhLGYsZCk7aWYoLTE9PT1tJiZoLmxlbmd0aD4wKXJldHVybiBudWxsO2NvbnN0IF89Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbixPPWguZmlu''@;'; put 'put ''ZEluZGV4KGx0PT5sdC5kcmFnPT09YyksWD1oW21dLHBlPVguY2xpZW50UmVjdCxiZT1PPm0/MTotMSx4ZT10aGlzLl9nZXRJdGVtT2Zmc2V0UHgoaFtPXS5jbGllbnRSZWN0LHBlLGJlKSxWZT10aGlzLl9nZXRTaWJsaW5nT2Zmc2V0UHgoTyxoLGJlKSxaZT1oLnNsaWNlKCk7cmV0dXJuIGQ2''@;'; put 'put ''ZShoLE8sbSksaC5mb3JFYWNoKChsdCxkdCk9PntpZihaZVtkdF09PT1sdClyZXR1cm47Y29uc3QgZ3Q9bHQuZHJhZz09PWMsanQ9Z3Q/eGU6VmUscm49Z3Q/Yy5nZXRQbGFjZWhvbGRlckVsZW1lbnQoKTpsdC5kcmFnLmdldFJvb3RFbGVtZW50KCk7bHQub2Zmc2V0Kz1qdCxfPyhybi5zdHls''@;'; put 'put ''ZS50cmFuc2Zvcm09WVAoYHRyYW5zbGF0ZTNkKCR7TWF0aC5yb3VuZChsdC5vZmZzZXQpfXB4LCAwLCAwKWAsbHQuaW5pdGlhbFRyYW5zZm9ybSksWkUobHQuY2xpZW50UmVjdCwwLGp0KSk6KHJuLnN0eWxlLnRyYW5zZm9ybT1ZUChgdHJhbnNsYXRlM2QoMCwgJHtNYXRoLnJvdW5kKGx0Lm9m''@;'; put 'put ''ZnNldCl9cHgsIDApYCxsdC5pbml0aWFsVHJhbnNmb3JtKSxaRShsdC5jbGllbnRSZWN0LGp0LDApKX0pLHRoaXMuX3ByZXZpb3VzU3dhcC5vdmVybGFwcz1ESihwZSxhLGYpLHRoaXMuX3ByZXZpb3VzU3dhcC5kcmFnPVguZHJhZyx0aGlzLl9wcmV2aW91c1N3YXAuZGVsdGE9Xz9kLng6ZC55''@;'; put 'put ''LHtwcmV2aW91c0luZGV4Ok8sY3VycmVudEluZGV4Om19fWVudGVyKGMsYSxmLGQpe2NvbnN0IGg9bnVsbD09ZHx8ZDwwP3RoaXMuX2dldEl0ZW1JbmRleEZyb21Qb2ludGVyUG9zaXRpb24oYyxhLGYpOmQsbT10aGlzLl9hY3RpdmVEcmFnZ2FibGVzLF89bS5pbmRleE9mKGMpLE89Yy5nZXRQ''@;'; put 'put ''bGFjZWhvbGRlckVsZW1lbnQoKTtsZXQgWD1tW2hdO2lmKFg9PT1jJiYoWD1tW2grMV0pLCFYJiYobnVsbD09aHx8LTE9PT1ofHxoPG0ubGVuZ3RoLTEpJiZ0aGlzLl9zaG91bGRFbnRlckFzRmlyc3RDaGlsZChhLGYpJiYoWD1tWzBdKSxfPi0xJiZtLnNwbGljZShfLDEpLFgmJiF0aGlzLl9k''@;'; put 'put ''cmFnRHJvcFJlZ2lzdHJ5LmlzRHJhZ2dpbmcoWCkpe2NvbnN0IGFlPVguZ2V0Um9vdEVsZW1lbnQoKTthZS5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShPLGFlKSxtLnNwbGljZShoLDAsYyl9ZWxzZSAkMCh0aGlzLl9lbGVtZW50KS5hcHBlbmRDaGlsZChPKSxtLnB1c2goYyk7Ty5zdHls''@;'; put 'put ''ZS50cmFuc2Zvcm09IiIsdGhpcy5fY2FjaGVJdGVtUG9zaXRpb25zKCl9d2l0aEl0ZW1zKGMpe3RoaXMuX2FjdGl2ZURyYWdnYWJsZXM9Yy5zbGljZSgpLHRoaXMuX2NhY2hlSXRlbVBvc2l0aW9ucygpfXdpdGhTb3J0UHJlZGljYXRlKGMpe3RoaXMuX3NvcnRQcmVkaWNhdGU9Y31yZXNldCgp''@;'; put 'put ''e3RoaXMuX2FjdGl2ZURyYWdnYWJsZXMuZm9yRWFjaChjPT57Y29uc3QgYT1jLmdldFJvb3RFbGVtZW50KCk7aWYoYSl7Y29uc3QgZj10aGlzLl9pdGVtUG9zaXRpb25zLmZpbmQoZD0+ZC5kcmFnPT09Yyk/LmluaXRpYWxUcmFuc2Zvcm07YS5zdHlsZS50cmFuc2Zvcm09Znx8IiJ9fSksdGhp''@;'; put 'put ''cy5faXRlbVBvc2l0aW9ucz1bXSx0aGlzLl9hY3RpdmVEcmFnZ2FibGVzPVtdLHRoaXMuX3ByZXZpb3VzU3dhcC5kcmFnPW51bGwsdGhpcy5fcHJldmlvdXNTd2FwLmRlbHRhPTAsdGhpcy5fcHJldmlvdXNTd2FwLm92ZXJsYXBzPSExfWdldEFjdGl2ZUl0ZW1zU25hcHNob3QoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fYWN0aXZlRHJhZ2dhYmxlc31nZXRJdGVtSW5kZXgoYyl7cmV0dXJuKCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24mJiJydGwiPT09dGhpcy5kaXJlY3Rpb24/dGhpcy5faXRlbVBvc2l0aW9ucy5zbGljZSgpLnJldmVyc2UoKTp0aGlzLl9pdGVtUG9zaXRpb25zKS5maW5k''@;'; put 'put ''SW5kZXgoZj0+Zi5kcmFnPT09Yyl9dXBkYXRlT25TY3JvbGwoYyxhKXt0aGlzLl9pdGVtUG9zaXRpb25zLmZvckVhY2goKHtjbGllbnRSZWN0OmZ9KT0+e1pFKGYsYyxhKX0pLHRoaXMuX2l0ZW1Qb3NpdGlvbnMuZm9yRWFjaCgoe2RyYWc6Zn0pPT57dGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5p''@;'; put 'put ''c0RyYWdnaW5nKGYpJiZmLl9zb3J0RnJvbUxhc3RQb2ludGVyUG9zaXRpb24oKX0pfV9jYWNoZUl0ZW1Qb3NpdGlvbnMoKXtjb25zdCBjPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb247dGhpcy5faXRlbVBvc2l0aW9ucz10aGlzLl9hY3RpdmVEcmFnZ2FibGVzLm1hcChhPT57Y29u''@;'; put 'put ''c3QgZj1hLmdldFZpc2libGVFbGVtZW50KCk7cmV0dXJue2RyYWc6YSxvZmZzZXQ6MCxpbml0aWFsVHJhbnNmb3JtOmYuc3R5bGUudHJhbnNmb3JtfHwiIixjbGllbnRSZWN0Ok9KKGYpfX0pLnNvcnQoKGEsZik9PmM/YS5jbGllbnRSZWN0LmxlZnQtZi5jbGllbnRSZWN0LmxlZnQ6YS5jbGll''@;'; put 'put ''bnRSZWN0LnRvcC1mLmNsaWVudFJlY3QudG9wKX1fZ2V0SXRlbU9mZnNldFB4KGMsYSxmKXtjb25zdCBkPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb247bGV0IGg9ZD9hLmxlZnQtYy5sZWZ0OmEudG9wLWMudG9wO3JldHVybi0xPT09ZiYmKGgrPWQ/YS53aWR0aC1jLndpZHRoOmEu''@;'; put 'put ''aGVpZ2h0LWMuaGVpZ2h0KSxofV9nZXRTaWJsaW5nT2Zmc2V0UHgoYyxhLGYpe2NvbnN0IGQ9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbixoPWFbY10uY2xpZW50UmVjdCxtPWFbYystMSpmXTtsZXQgXz1oW2Q/IndpZHRoIjoiaGVpZ2h0Il0qZjtpZihtKXtjb25zdCBPPWQ/Imxl''@;'; put 'put ''ZnQiOiJ0b3AiLFg9ZD8icmlnaHQiOiJib3R0b20iOy0xPT09Zj9fLT1tLmNsaWVudFJlY3RbT10taFtYXTpfKz1oW09dLW0uY2xpZW50UmVjdFtYXX1yZXR1cm4gX31fc2hvdWxkRW50ZXJBc0ZpcnN0Q2hpbGQoYyxhKXtpZighdGhpcy5fYWN0aXZlRHJhZ2dhYmxlcy5sZW5ndGgpcmV0dXJu''@;'; put 'put ''ITE7Y29uc3QgZj10aGlzLl9pdGVtUG9zaXRpb25zLGQ9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbjtpZihmWzBdLmRyYWchPT10aGlzLl9hY3RpdmVEcmFnZ2FibGVzWzBdKXtjb25zdCBtPWZbZi5sZW5ndGgtMV0uY2xpZW50UmVjdDtyZXR1cm4gZD9jPj1tLnJpZ2h0OmE+PW0u''@;'; put 'put ''Ym90dG9tfXtjb25zdCBtPWZbMF0uY2xpZW50UmVjdDtyZXR1cm4gZD9jPD1tLmxlZnQ6YTw9bS50b3B9fV9nZXRJdGVtSW5kZXhGcm9tUG9pbnRlclBvc2l0aW9uKGMsYSxmLGQpe2NvbnN0IGg9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbixtPXRoaXMuX2l0ZW1Qb3NpdGlvbnMu''@;'; put 'put ''ZmluZEluZGV4KCh7ZHJhZzpfLGNsaWVudFJlY3Q6T30pPT5fIT09YyYmKCghZHx8XyE9PXRoaXMuX3ByZXZpb3VzU3dhcC5kcmFnfHwhdGhpcy5fcHJldmlvdXNTd2FwLm92ZXJsYXBzfHwoaD9kLng6ZC55KSE9PXRoaXMuX3ByZXZpb3VzU3dhcC5kZWx0YSkmJihoP2E+PU1hdGguZmxvb3Io''@;'; put 'put ''Ty5sZWZ0KSYmYTxNYXRoLmZsb29yKE8ucmlnaHQpOmY+PU1hdGguZmxvb3IoTy50b3ApJiZmPE1hdGguZmxvb3IoTy5ib3R0b20pKSkpO3JldHVybi0xIT09bSYmdGhpcy5fc29ydFByZWRpY2F0ZShtLGMpP206LTF9fWNsYXNzIEVrdHtjb25zdHJ1Y3RvcihjLGEsZixkLGgpe3RoaXMuX2Ry''@;'; put 'put ''YWdEcm9wUmVnaXN0cnk9YSx0aGlzLl9uZ1pvbmU9ZCx0aGlzLl92aWV3cG9ydFJ1bGVyPWgsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnNvcnRpbmdEaXNhYmxlZD0hMSx0aGlzLmF1dG9TY3JvbGxEaXNhYmxlZD0hMSx0aGlzLmF1dG9TY3JvbGxTdGVwPTIsdGhpcy5lbnRlclByZWRpY2F0ZT0o''@;'; put 'put ''KT0+ITAsdGhpcy5zb3J0UHJlZGljYXRlPSgpPT4hMCx0aGlzLmJlZm9yZVN0YXJ0ZWQ9bmV3IHdlLHRoaXMuZW50ZXJlZD1uZXcgd2UsdGhpcy5leGl0ZWQ9bmV3IHdlLHRoaXMuZHJvcHBlZD1uZXcgd2UsdGhpcy5zb3J0ZWQ9bmV3IHdlLHRoaXMucmVjZWl2aW5nU3RhcnRlZD1uZXcgd2Us''@;'; put 'put ''dGhpcy5yZWNlaXZpbmdTdG9wcGVkPW5ldyB3ZSx0aGlzLl9pc0RyYWdnaW5nPSExLHRoaXMuX2RyYWdnYWJsZXM9W10sdGhpcy5fc2libGluZ3M9W10sdGhpcy5fYWN0aXZlU2libGluZ3M9bmV3IFNldCx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbj10ZS5FTVBUWSx0aGlzLl92''@;'; put 'put ''ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbj0wLHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249MCx0aGlzLl9zdG9wU2Nyb2xsVGltZXJzPW5ldyB3ZSx0aGlzLl9jYWNoZWRTaGFkb3dSb290PW51bGwsdGhpcy5fc3RhcnRTY3JvbGxJbnRlcnZhbD0oKT0+e3RoaXMuX3N0b3BTY3JvbGxp''@;'; put 'put ''bmcoKSxmdW5jdGlvbiBta3QobD0wLGM9QkMpe3JldHVybiBsPDAmJihsPTApLER6KGwsbCxjKX0oMCxaNWUpLnBpcGUoQWgodGhpcy5fc3RvcFNjcm9sbFRpbWVycykpLnN1YnNjcmliZSgoKT0+e2NvbnN0IG09dGhpcy5fc2Nyb2xsTm9kZSxfPXRoaXMuYXV0b1Njcm9sbFN0ZXA7MT09PXRo''@;'; put 'put ''aXMuX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uP20uc2Nyb2xsQnkoMCwtXyk6Mj09PXRoaXMuX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uJiZtLnNjcm9sbEJ5KDAsXyksMT09PXRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24/bS5zY3JvbGxCeSgtXywwKToyPT09dGhpcy5faG9yaXpv''@;'; put 'put ''bnRhbFNjcm9sbERpcmVjdGlvbiYmbS5zY3JvbGxCeShfLDApfSl9LHRoaXMuZWxlbWVudD0kMChjKSx0aGlzLl9kb2N1bWVudD1mLHRoaXMud2l0aFNjcm9sbGFibGVQYXJlbnRzKFt0aGlzLmVsZW1lbnRdKSxhLnJlZ2lzdGVyRHJvcENvbnRhaW5lcih0aGlzKSx0aGlzLl9wYXJlbnRQb3Np''@;'; put 'put ''dGlvbnM9bmV3IHI2ZShmKSx0aGlzLl9zb3J0U3RyYXRlZ3k9bmV3IGtrdCh0aGlzLmVsZW1lbnQsYSksdGhpcy5fc29ydFN0cmF0ZWd5LndpdGhTb3J0UHJlZGljYXRlKChtLF8pPT50aGlzLnNvcnRQcmVkaWNhdGUobSxfLHRoaXMpKX1kaXNwb3NlKCl7dGhpcy5fc3RvcFNjcm9sbGluZygp''@;'; put 'put ''LHRoaXMuX3N0b3BTY3JvbGxUaW1lcnMuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuYmVmb3JlU3RhcnRlZC5jb21wbGV0ZSgpLHRoaXMuZW50ZXJlZC5jb21wbGV0ZSgpLHRoaXMuZXhpdGVkLmNvbXBsZXRlKCksdGhpcy5k''@;'; put 'put ''cm9wcGVkLmNvbXBsZXRlKCksdGhpcy5zb3J0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0b3BwZWQuY29tcGxldGUoKSx0aGlzLl9hY3RpdmVTaWJsaW5ncy5jbGVhcigpLHRoaXMuX3Njcm9sbE5vZGU9bnVsbCx0aGlzLl9w''@;'; put 'put ''YXJlbnRQb3NpdGlvbnMuY2xlYXIoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnJlbW92ZURyb3BDb250YWluZXIodGhpcyl9aXNEcmFnZ2luZygpe3JldHVybiB0aGlzLl9pc0RyYWdnaW5nfXN0YXJ0KCl7dGhpcy5fZHJhZ2dpbmdTdGFydGVkKCksdGhpcy5fbm90aWZ5UmVjZWl2aW5nU2li''@;'; put 'put ''bGluZ3MoKX1lbnRlcihjLGEsZixkKXt0aGlzLl9kcmFnZ2luZ1N0YXJ0ZWQoKSxudWxsPT1kJiZ0aGlzLnNvcnRpbmdEaXNhYmxlZCYmKGQ9dGhpcy5fZHJhZ2dhYmxlcy5pbmRleE9mKGMpKSx0aGlzLl9zb3J0U3RyYXRlZ3kuZW50ZXIoYyxhLGYsZCksdGhpcy5fY2FjaGVQYXJlbnRQb3Np''@;'; put 'put ''dGlvbnMoKSx0aGlzLl9ub3RpZnlSZWNlaXZpbmdTaWJsaW5ncygpLHRoaXMuZW50ZXJlZC5uZXh0KHtpdGVtOmMsY29udGFpbmVyOnRoaXMsY3VycmVudEluZGV4OnRoaXMuZ2V0SXRlbUluZGV4KGMpfSl9ZXhpdChjKXt0aGlzLl9yZXNldCgpLHRoaXMuZXhpdGVkLm5leHQoe2l0ZW06Yyxj''@;'; put 'put ''b250YWluZXI6dGhpc30pfWRyb3AoYyxhLGYsZCxoLG0sXyxPPXt9KXt0aGlzLl9yZXNldCgpLHRoaXMuZHJvcHBlZC5uZXh0KHtpdGVtOmMsY3VycmVudEluZGV4OmEscHJldmlvdXNJbmRleDpmLGNvbnRhaW5lcjp0aGlzLHByZXZpb3VzQ29udGFpbmVyOmQsaXNQb2ludGVyT3ZlckNvbnRh''@;'; put 'put ''aW5lcjpoLGRpc3RhbmNlOm0sZHJvcFBvaW50Ol8sZXZlbnQ6T30pfXdpdGhJdGVtcyhjKXtjb25zdCBhPXRoaXMuX2RyYWdnYWJsZXM7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZXM9YyxjLmZvckVhY2goZj0+Zi5fd2l0aERyb3BDb250YWluZXIodGhpcykpLHRoaXMuaXNEcmFnZ2luZygpJiYo''@;'; put 'put ''YS5maWx0ZXIoZD0+ZC5pc0RyYWdnaW5nKCkpLmV2ZXJ5KGQ9Pi0xPT09Yy5pbmRleE9mKGQpKT90aGlzLl9yZXNldCgpOnRoaXMuX3NvcnRTdHJhdGVneS53aXRoSXRlbXModGhpcy5fZHJhZ2dhYmxlcykpLHRoaXN9d2l0aERpcmVjdGlvbihjKXtyZXR1cm4gdGhpcy5fc29ydFN0cmF0ZWd5''@;'; put 'put ''LmRpcmVjdGlvbj1jLHRoaXN9Y29ubmVjdGVkVG8oYyl7cmV0dXJuIHRoaXMuX3NpYmxpbmdzPWMuc2xpY2UoKSx0aGlzfXdpdGhPcmllbnRhdGlvbihjKXtyZXR1cm4gdGhpcy5fc29ydFN0cmF0ZWd5Lm9yaWVudGF0aW9uPWMsdGhpc313aXRoU2Nyb2xsYWJsZVBhcmVudHMoYyl7Y29uc3Qg''@;'; put 'put ''YT0kMCh0aGlzLmVsZW1lbnQpO3JldHVybiB0aGlzLl9zY3JvbGxhYmxlRWxlbWVudHM9LTE9PT1jLmluZGV4T2YoYSk/W2EsLi4uY106Yy5zbGljZSgpLHRoaXN9Z2V0U2Nyb2xsYWJsZVBhcmVudHMoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsYWJsZUVsZW1lbnRzfWdldEl0ZW1JbmRleChjKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5faXNEcmFnZ2luZz90aGlzLl9zb3J0U3RyYXRlZ3kuZ2V0SXRlbUluZGV4KGMpOnRoaXMuX2RyYWdnYWJsZXMuaW5kZXhPZihjKX1pc1JlY2VpdmluZygpe3JldHVybiB0aGlzLl9hY3RpdmVTaWJsaW5ncy5zaXplPjB9X3NvcnRJdGVtKGMsYSxmLGQpe2lmKHRoaXMuc29y''@;'; put 'put ''dGluZ0Rpc2FibGVkfHwhdGhpcy5fY2xpZW50UmVjdHx8IW42ZSh0aGlzLl9jbGllbnRSZWN0LC4wNSxhLGYpKXJldHVybjtjb25zdCBoPXRoaXMuX3NvcnRTdHJhdGVneS5zb3J0KGMsYSxmLGQpO2gmJnRoaXMuc29ydGVkLm5leHQoe3ByZXZpb3VzSW5kZXg6aC5wcmV2aW91c0luZGV4LGN1''@;'; put 'put ''cnJlbnRJbmRleDpoLmN1cnJlbnRJbmRleCxjb250YWluZXI6dGhpcyxpdGVtOmN9KX1fc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShjLGEpe2lmKHRoaXMuYXV0b1Njcm9sbERpc2FibGVkKXJldHVybjtsZXQgZixkPTAsaD0wO2lmKHRoaXMuX3BhcmVudFBvc2l0aW9ucy5wb3NpdGlvbnMu''@;'; put 'put ''Zm9yRWFjaCgobSxfKT0+e189PT10aGlzLl9kb2N1bWVudHx8IW0uY2xpZW50UmVjdHx8Znx8bjZlKG0uY2xpZW50UmVjdCwuMDUsYyxhKSYmKFtkLGhdPWZ1bmN0aW9uIHhrdChsLGMsYSxmKXtjb25zdCBkPW02ZShjLGYpLGg9ZzZlKGMsYSk7bGV0IG09MCxfPTA7aWYoZCl7Y29uc3QgTz1s''@;'; put 'put ''LnNjcm9sbFRvcDsxPT09ZD9PPjAmJihtPTEpOmwuc2Nyb2xsSGVpZ2h0LU8+bC5jbGllbnRIZWlnaHQmJihtPTIpfWlmKGgpe2NvbnN0IE89bC5zY3JvbGxMZWZ0OzE9PT1oP08+MCYmKF89MSk6bC5zY3JvbGxXaWR0aC1PPmwuY2xpZW50V2lkdGgmJihfPTIpfXJldHVyblttLF9dfShfLG0u''@;'; put 'put ''Y2xpZW50UmVjdCxjLGEpLChkfHxoKSYmKGY9XykpfSksIWQmJiFoKXtjb25zdHt3aWR0aDptLGhlaWdodDpffT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpLE89e3dpZHRoOm0saGVpZ2h0Ol8sdG9wOjAscmlnaHQ6bSxib3R0b206XyxsZWZ0OjB9O2Q9bTZlKE8sYSks''@;'; put 'put ''aD1nNmUoTyxjKSxmPXdpbmRvd31mJiYoZCE9PXRoaXMuX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9ufHxoIT09dGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbnx8ZiE9PXRoaXMuX3Njcm9sbE5vZGUpJiYodGhpcy5fdmVydGljYWxTY3JvbGxEaXJlY3Rpb249ZCx0aGlzLl9ob3Jpem9u''@;'; put 'put ''dGFsU2Nyb2xsRGlyZWN0aW9uPWgsdGhpcy5fc2Nyb2xsTm9kZT1mLChkfHxoKSYmZj90aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIodGhpcy5fc3RhcnRTY3JvbGxJbnRlcnZhbCk6dGhpcy5fc3RvcFNjcm9sbGluZygpKX1fc3RvcFNjcm9sbGluZygpe3RoaXMuX3N0b3BTY3JvbGxU''@;'; put 'put ''aW1lcnMubmV4dCgpfV9kcmFnZ2luZ1N0YXJ0ZWQoKXtjb25zdCBjPSQwKHRoaXMuZWxlbWVudCkuc3R5bGU7dGhpcy5iZWZvcmVTdGFydGVkLm5leHQoKSx0aGlzLl9pc0RyYWdnaW5nPSEwLHRoaXMuX2luaXRpYWxTY3JvbGxTbmFwPWMubXNTY3JvbGxTbmFwVHlwZXx8Yy5zY3JvbGxTbmFw''@;'; put 'put ''VHlwZXx8IiIsYy5zY3JvbGxTbmFwVHlwZT1jLm1zU2Nyb2xsU25hcFR5cGU9Im5vbmUiLHRoaXMuX3NvcnRTdHJhdGVneS5zdGFydCh0aGlzLl9kcmFnZ2FibGVzKSx0aGlzLl9jYWNoZVBhcmVudFBvc2l0aW9ucygpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2Ny''@;'; put 'put ''aWJlKCksdGhpcy5fbGlzdGVuVG9TY3JvbGxFdmVudHMoKX1fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKXtjb25zdCBjPSQwKHRoaXMuZWxlbWVudCk7dGhpcy5fcGFyZW50UG9zaXRpb25zLmNhY2hlKHRoaXMuX3Njcm9sbGFibGVFbGVtZW50cyksdGhpcy5fY2xpZW50UmVjdD10aGlzLl9wYXJl''@;'; put 'put ''bnRQb3NpdGlvbnMucG9zaXRpb25zLmdldChjKS5jbGllbnRSZWN0fV9yZXNldCgpe3RoaXMuX2lzRHJhZ2dpbmc9ITE7Y29uc3QgYz0kMCh0aGlzLmVsZW1lbnQpLnN0eWxlO2Muc2Nyb2xsU25hcFR5cGU9Yy5tc1Njcm9sbFNuYXBUeXBlPXRoaXMuX2luaXRpYWxTY3JvbGxTbmFwLHRoaXMu''@;'; put 'put ''X3NpYmxpbmdzLmZvckVhY2goYT0+YS5fc3RvcFJlY2VpdmluZyh0aGlzKSksdGhpcy5fc29ydFN0cmF0ZWd5LnJlc2V0KCksdGhpcy5fc3RvcFNjcm9sbGluZygpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcGFyZW50UG9zaXRpb25zLmNs''@;'; put 'put ''ZWFyKCl9X2lzT3ZlckNvbnRhaW5lcihjLGEpe3JldHVybiBudWxsIT10aGlzLl9jbGllbnRSZWN0JiZESih0aGlzLl9jbGllbnRSZWN0LGMsYSl9X2dldFNpYmxpbmdDb250YWluZXJGcm9tUG9zaXRpb24oYyxhLGYpe3JldHVybiB0aGlzLl9zaWJsaW5ncy5maW5kKGQ9PmQuX2NhblJlY2Vp''@;'; put 'put ''dmUoYyxhLGYpKX1fY2FuUmVjZWl2ZShjLGEsZil7aWYoIXRoaXMuX2NsaWVudFJlY3R8fCFESih0aGlzLl9jbGllbnRSZWN0LGEsZil8fCF0aGlzLmVudGVyUHJlZGljYXRlKGMsdGhpcykpcmV0dXJuITE7Y29uc3QgZD10aGlzLl9nZXRTaGFkb3dSb290KCkuZWxlbWVudEZyb21Qb2ludChh''@;'; put 'put ''LGYpO2lmKCFkKXJldHVybiExO2NvbnN0IGg9JDAodGhpcy5lbGVtZW50KTtyZXR1cm4gZD09PWh8fGguY29udGFpbnMoZCl9X3N0YXJ0UmVjZWl2aW5nKGMsYSl7Y29uc3QgZj10aGlzLl9hY3RpdmVTaWJsaW5nczshZi5oYXMoYykmJmEuZXZlcnkoZD0+dGhpcy5lbnRlclByZWRpY2F0ZShk''@;'; put 'put ''LHRoaXMpfHx0aGlzLl9kcmFnZ2FibGVzLmluZGV4T2YoZCk+LTEpJiYoZi5hZGQoYyksdGhpcy5fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKSx0aGlzLl9saXN0ZW5Ub1Njcm9sbEV2ZW50cygpLHRoaXMucmVjZWl2aW5nU3RhcnRlZC5uZXh0KHtpbml0aWF0b3I6YyxyZWNlaXZlcjp0aGlzLGl0''@;'; put 'put ''ZW1zOmF9KSl9X3N0b3BSZWNlaXZpbmcoYyl7dGhpcy5fYWN0aXZlU2libGluZ3MuZGVsZXRlKGMpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5yZWNlaXZpbmdTdG9wcGVkLm5leHQoe2luaXRpYXRvcjpjLHJlY2VpdmVyOnRoaXN9KX1fbGlz''@;'; put 'put ''dGVuVG9TY3JvbGxFdmVudHMoKXt0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnNjcm9sbGVkKHRoaXMuX2dldFNoYWRvd1Jvb3QoKSkuc3Vic2NyaWJlKGM9PntpZih0aGlzLmlzRHJhZ2dpbmcoKSl7Y29uc3QgYT10aGlzLl9wYXJlbnRQ''@;'; put 'put ''b3NpdGlvbnMuaGFuZGxlU2Nyb2xsKGMpO2EmJnRoaXMuX3NvcnRTdHJhdGVneS51cGRhdGVPblNjcm9sbChhLnRvcCxhLmxlZnQpfWVsc2UgdGhpcy5pc1JlY2VpdmluZygpJiZ0aGlzLl9jYWNoZVBhcmVudFBvc2l0aW9ucygpfSl9X2dldFNoYWRvd1Jvb3QoKXtpZighdGhpcy5fY2FjaGVk''@;'; put 'put ''U2hhZG93Um9vdCl7Y29uc3QgYz1LNWUoJDAodGhpcy5lbGVtZW50KSk7dGhpcy5fY2FjaGVkU2hhZG93Um9vdD1jfHx0aGlzLl9kb2N1bWVudH1yZXR1cm4gdGhpcy5fY2FjaGVkU2hhZG93Um9vdH1fbm90aWZ5UmVjZWl2aW5nU2libGluZ3MoKXtjb25zdCBjPXRoaXMuX3NvcnRTdHJhdGVn''@;'; put 'put ''eS5nZXRBY3RpdmVJdGVtc1NuYXBzaG90KCkuZmlsdGVyKGE9PmEuaXNEcmFnZ2luZygpKTt0aGlzLl9zaWJsaW5ncy5mb3JFYWNoKGE9PmEuX3N0YXJ0UmVjZWl2aW5nKHRoaXMsYykpfX1mdW5jdGlvbiBtNmUobCxjKXtjb25zdHt0b3A6YSxib3R0b206ZixoZWlnaHQ6ZH09bCxoPS4wNSpk''@;'; put 'put ''O3JldHVybiBjPj1hLWgmJmM8PWEraD8xOmM+PWYtaCYmYzw9ZitoPzI6MH1mdW5jdGlvbiBnNmUobCxjKXtjb25zdHtsZWZ0OmEscmlnaHQ6Zix3aWR0aDpkfT1sLGg9LjA1KmQ7cmV0dXJuIGM+PWEtaCYmYzw9YStoPzE6Yz49Zi1oJiZjPD1mK2g/MjowfWNvbnN0ICRQPVVFKHtwYXNzaXZl''@;'; put 'put ''OiExLGNhcHR1cmU6ITB9KTtsZXQgQWt0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmKXt0aGlzLl9uZ1pvbmU9YSx0aGlzLl9kcm9wSW5zdGFuY2VzPW5ldyBTZXQsdGhpcy5fZHJhZ0luc3RhbmNlcz1uZXcgU2V0LHRoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXM9W10sdGhpcy5fZ2xv''@;'; put 'put ''YmFsTGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5fZHJhZ2dpbmdQcmVkaWNhdGU9ZD0+ZC5pc0RyYWdnaW5nKCksdGhpcy5wb2ludGVyTW92ZT1uZXcgd2UsdGhpcy5wb2ludGVyVXA9bmV3IHdlLHRoaXMuc2Nyb2xsPW5ldyB3ZSx0aGlzLl9wcmV2ZW50RGVmYXVsdFdoaWxlRHJhZ2dpbmc9ZD0+''@;'; put 'put ''e3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMubGVuZ3RoPjAmJmQucHJldmVudERlZmF1bHQoKX0sdGhpcy5fcGVyc2lzdGVudFRvdWNobW92ZUxpc3RlbmVyPWQ9Pnt0aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLmxlbmd0aD4wJiYodGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5zb21lKHRo''@;'; put 'put ''aXMuX2RyYWdnaW5nUHJlZGljYXRlKSYmZC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucG9pbnRlck1vdmUubmV4dChkKSl9LHRoaXMuX2RvY3VtZW50PWZ9cmVnaXN0ZXJEcm9wQ29udGFpbmVyKGEpe3RoaXMuX2Ryb3BJbnN0YW5jZXMuaGFzKGEpfHx0aGlzLl9kcm9wSW5zdGFuY2VzLmFkZChh''@;'; put 'put ''KX1yZWdpc3RlckRyYWdJdGVtKGEpe3RoaXMuX2RyYWdJbnN0YW5jZXMuYWRkKGEpLDE9PT10aGlzLl9kcmFnSW5zdGFuY2VzLnNpemUmJnRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5f''@;'; put 'put ''cGVyc2lzdGVudFRvdWNobW92ZUxpc3RlbmVyLCRQKX0pfXJlbW92ZURyb3BDb250YWluZXIoYSl7dGhpcy5fZHJvcEluc3RhbmNlcy5kZWxldGUoYSl9cmVtb3ZlRHJhZ0l0ZW0oYSl7dGhpcy5fZHJhZ0luc3RhbmNlcy5kZWxldGUoYSksdGhpcy5zdG9wRHJhZ2dpbmcoYSksMD09PXRoaXMu''@;'; put 'put ''X2RyYWdJbnN0YW5jZXMuc2l6ZSYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9wZXJzaXN0ZW50VG91Y2htb3ZlTGlzdGVuZXIsJFApfXN0YXJ0RHJhZ2dpbmcoYSxmKXtpZighKHRoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMuaW5kZXhPZihh''@;'; put 'put ''KT4tMSkmJih0aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLnB1c2goYSksMT09PXRoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMubGVuZ3RoKSl7Y29uc3QgZD1mLnR5cGUuc3RhcnRzV2l0aCgidG91Y2giKTt0aGlzLl9nbG9iYWxMaXN0ZW5lcnMuc2V0KGQ/InRvdWNoZW5kIjoibW91c2V1cCIs''@;'; put 'put ''e2hhbmRsZXI6aD0+dGhpcy5wb2ludGVyVXAubmV4dChoKSxvcHRpb25zOiEwfSkuc2V0KCJzY3JvbGwiLHtoYW5kbGVyOmg9PnRoaXMuc2Nyb2xsLm5leHQoaCksb3B0aW9uczohMH0pLnNldCgic2VsZWN0c3RhcnQiLHtoYW5kbGVyOnRoaXMuX3ByZXZlbnREZWZhdWx0V2hpbGVEcmFnZ2lu''@;'; put 'put ''ZyxvcHRpb25zOiRQfSksZHx8dGhpcy5fZ2xvYmFsTGlzdGVuZXJzLnNldCgibW91c2Vtb3ZlIix7aGFuZGxlcjpoPT50aGlzLnBvaW50ZXJNb3ZlLm5leHQoaCksb3B0aW9uczokUH0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX2dsb2JhbExpc3RlbmVycy5m''@;'; put 'put ''b3JFYWNoKChoLG0pPT57dGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihtLGguaGFuZGxlcixoLm9wdGlvbnMpfSl9KX19c3RvcERyYWdnaW5nKGEpe2NvbnN0IGY9dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5pbmRleE9mKGEpO2Y+LTEmJih0aGlzLl9hY3RpdmVEcmFnSW5zdGFu''@;'; put 'put ''Y2VzLnNwbGljZShmLDEpLDA9PT10aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLmxlbmd0aCYmdGhpcy5fY2xlYXJHbG9iYWxMaXN0ZW5lcnMoKSl9aXNEcmFnZ2luZyhhKXtyZXR1cm4gdGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5pbmRleE9mKGEpPi0xfXNjcm9sbGVkKGEpe2NvbnN0IGY9''@;'; put 'put ''W3RoaXMuc2Nyb2xsXTtyZXR1cm4gYSYmYSE9PXRoaXMuX2RvY3VtZW50JiZmLnB1c2gobmV3IEJlKGQ9PnRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IG09Xz0+e3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMubGVuZ3RoJiZkLm5leHQoXyl9O3JldHVybiBhLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbSwhMCksKCk9PnthLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsbSwhMCl9fSkpKSxzYSguLi5mKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RyYWdJbnN0YW5jZXMuZm9yRWFjaChhPT50aGlzLnJlbW92ZURyYWdJdGVtKGEpKSx0aGlzLl9kcm9w''@;'; put 'put ''SW5zdGFuY2VzLmZvckVhY2goYT0+dGhpcy5yZW1vdmVEcm9wQ29udGFpbmVyKGEpKSx0aGlzLl9jbGVhckdsb2JhbExpc3RlbmVycygpLHRoaXMucG9pbnRlck1vdmUuY29tcGxldGUoKSx0aGlzLnBvaW50ZXJVcC5jb21wbGV0ZSgpfV9jbGVhckdsb2JhbExpc3RlbmVycygpe3RoaXMuX2ds''@;'; put 'put ''b2JhbExpc3RlbmVycy5mb3JFYWNoKChhLGYpPT57dGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmLGEuaGFuZGxlcixhLm9wdGlvbnMpfSksdGhpcy5fZ2xvYmFsTGlzdGVuZXJzLmNsZWFyKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8''@;'; put 'put ''fGwpKHNyKFVvKSxzcihGYSkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2NvbnN0IFRrdD17ZHJhZ1N0YXJ0VGhyZXNob2xkOjUscG9pbnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZDo1fTtsZXQgUko9''@;'; put 'put ''KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLl9kb2N1bWVudD1hLHRoaXMuX25nWm9uZT1mLHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZCx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5PWh9Y3JlYXRlRHJhZyhhLGY9VGt0KXtyZXR1cm4gbmV3IFNrdChhLGYsdGhpcy5fZG9jdW1l''@;'; put 'put ''bnQsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeSl9Y3JlYXRlRHJvcExpc3QoYSl7cmV0dXJuIG5ldyBFa3QoYSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LHRoaXMuX2RvY3VtZW50LHRoaXMuX25nWm9uZSx0aGlzLl92aWV3cG9ydFJ1bGVy''@;'; put 'put ''KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IoRmEpLHNyKFVvKSxzcihKTXQpLHNyKEFrdCkpfSxsLlx1MDI3NXByb3Y9aHIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO2NvbnN0IExKPW5l''@;'; put 'put ''dyBNaSgiQ0RLX0RSQUdfUEFSRU5UIiksUEo9bmV3IE1pKCJDZGtEcm9wTGlzdEdyb3VwIik7bGV0IHY2ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5faXRlbXM9bmV3IFNldCx0aGlzLl9kaXNhYmxlZD0hMX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9''@;'; put 'put ''c2V0IGRpc2FibGVkKGEpe3RoaXMuX2Rpc2FibGVkPWFtKGEpfW5nT25EZXN0cm95KCl7dGhpcy5faXRlbXMuY2xlYXIoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNka0Ry''@;'; put 'put ''b3BMaXN0R3JvdXAiLCIiXV0saW5wdXRzOntkaXNhYmxlZDpbImNka0Ryb3BMaXN0R3JvdXBEaXNhYmxlZCIsImRpc2FibGVkIl19LGV4cG9ydEFzOlsiY2RrRHJvcExpc3RHcm91cCJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W3JpKFt7cHJvdmlkZTpQSix1c2VFeGlzdGluZzpsfV0pXX0p''@;'; put 'put ''LGx9KSgpO2NvbnN0IHk2ZT1uZXcgTWkoIkNES19EUkFHX0NPTkZJRyIpO2xldCBPa3Q9MDtjb25zdCBiNmU9bmV3IE1pKCJDZGtEcm9wTGlzdCIpO2xldCBfNmU9KCgpPT57Y2xhc3MgbHtnZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fCEhdGhpcy5fZ3JvdXAmJnRoaXMu''@;'; put 'put ''X2dyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZChhKXt0aGlzLl9kcm9wTGlzdFJlZi5kaXNhYmxlZD10aGlzLl9kaXNhYmxlZD1hbShhKX1jb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPKXt0aGlzLmVsZW1lbnQ9YSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1kLHRoaXMuX3Njcm9sbERpc3Bh''@;'; put 'put ''dGNoZXI9aCx0aGlzLl9kaXI9bSx0aGlzLl9ncm91cD1fLHRoaXMuX2Rlc3Ryb3llZD1uZXcgd2UsdGhpcy5jb25uZWN0ZWRUbz1bXSx0aGlzLmlkPSJjZGstZHJvcC1saXN0LSIrT2t0KyssdGhpcy5lbnRlclByZWRpY2F0ZT0oKT0+ITAsdGhpcy5zb3J0UHJlZGljYXRlPSgpPT4hMCx0aGlz''@;'; put 'put ''LmRyb3BwZWQ9bmV3IHhyLHRoaXMuZW50ZXJlZD1uZXcgeHIsdGhpcy5leGl0ZWQ9bmV3IHhyLHRoaXMuc29ydGVkPW5ldyB4cix0aGlzLl91bnNvcnRlZEl0ZW1zPW5ldyBTZXQsdGhpcy5fZHJvcExpc3RSZWY9Zi5jcmVhdGVEcm9wTGlzdChhKSx0aGlzLl9kcm9wTGlzdFJlZi5kYXRhPXRo''@;'; put 'put ''aXMsTyYmdGhpcy5fYXNzaWduRGVmYXVsdHMoTyksdGhpcy5fZHJvcExpc3RSZWYuZW50ZXJQcmVkaWNhdGU9KFgsYWUpPT50aGlzLmVudGVyUHJlZGljYXRlKFguZGF0YSxhZS5kYXRhKSx0aGlzLl9kcm9wTGlzdFJlZi5zb3J0UHJlZGljYXRlPShYLGFlLHBlKT0+dGhpcy5zb3J0UHJlZGlj''@;'; put 'put ''YXRlKFgsYWUuZGF0YSxwZS5kYXRhKSx0aGlzLl9zZXR1cElucHV0U3luY1N1YnNjcmlwdGlvbih0aGlzLl9kcm9wTGlzdFJlZiksdGhpcy5faGFuZGxlRXZlbnRzKHRoaXMuX2Ryb3BMaXN0UmVmKSxsLl9kcm9wTGlzdHMucHVzaCh0aGlzKSxfJiZfLl9pdGVtcy5hZGQodGhpcyl9YWRkSXRl''@;'; put 'put ''bShhKXt0aGlzLl91bnNvcnRlZEl0ZW1zLmFkZChhKSx0aGlzLl9kcm9wTGlzdFJlZi5pc0RyYWdnaW5nKCkmJnRoaXMuX3N5bmNJdGVtc1dpdGhSZWYoKX1yZW1vdmVJdGVtKGEpe3RoaXMuX3Vuc29ydGVkSXRlbXMuZGVsZXRlKGEpLHRoaXMuX2Ryb3BMaXN0UmVmLmlzRHJhZ2dpbmcoKSYm''@;'; put 'put ''dGhpcy5fc3luY0l0ZW1zV2l0aFJlZigpfWdldFNvcnRlZEl0ZW1zKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fdW5zb3J0ZWRJdGVtcykuc29ydCgoYSxmKT0+YS5fZHJhZ1JlZi5nZXRWaXNpYmxlRWxlbWVudCgpLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGYuX2RyYWdSZWYuZ2V0Vmlz''@;'; put 'put ''aWJsZUVsZW1lbnQoKSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkc/LTE6MSl9bmdPbkRlc3Ryb3koKXtjb25zdCBhPWwuX2Ryb3BMaXN0cy5pbmRleE9mKHRoaXMpO2E+LTEmJmwuX2Ryb3BMaXN0cy5zcGxpY2UoYSwxKSx0aGlzLl9ncm91cCYmdGhpcy5fZ3JvdXAuX2l0ZW1z''@;'; put 'put ''LmRlbGV0ZSh0aGlzKSx0aGlzLl91bnNvcnRlZEl0ZW1zLmNsZWFyKCksdGhpcy5fZHJvcExpc3RSZWYuZGlzcG9zZSgpLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X3NldHVwSW5wdXRTeW5jU3Vic2NyaXB0aW9uKGEpe3RoaXMuX2RpciYmdGhp''@;'; put 'put ''cy5fZGlyLmNoYW5nZS5waXBlKHQ0KHRoaXMuX2Rpci52YWx1ZSksQWgodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKGY9PmEud2l0aERpcmVjdGlvbihmKSksYS5iZWZvcmVTdGFydGVkLnN1YnNjcmliZSgoKT0+e2NvbnN0IGY9ZnVuY3Rpb24gRk10KGwpe3JldHVybiBBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGwpP2w6W2xdfSh0aGlzLmNvbm5lY3RlZFRvKS5tYXAoZD0+InN0cmluZyI9PXR5cGVvZiBkP2wuX2Ryb3BMaXN0cy5maW5kKG09Pm0uaWQ9PT1kKTpkKTtpZih0aGlzLl9ncm91cCYmdGhpcy5fZ3JvdXAuX2l0ZW1zLmZvckVhY2goZD0+ey0xPT09Zi5pbmRleE9mKGQpJiZmLnB1c2go''@;'; put 'put ''ZCl9KSwhdGhpcy5fc2Nyb2xsYWJsZVBhcmVudHNSZXNvbHZlZCl7Y29uc3QgZD10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLmdldEFuY2VzdG9yU2Nyb2xsQ29udGFpbmVycyh0aGlzLmVsZW1lbnQpLm1hcChoPT5oLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50KTt0aGlzLl9kcm9wTGlz''@;'; put 'put ''dFJlZi53aXRoU2Nyb2xsYWJsZVBhcmVudHMoZCksdGhpcy5fc2Nyb2xsYWJsZVBhcmVudHNSZXNvbHZlZD0hMH1hLmRpc2FibGVkPXRoaXMuZGlzYWJsZWQsYS5sb2NrQXhpcz10aGlzLmxvY2tBeGlzLGEuc29ydGluZ0Rpc2FibGVkPWFtKHRoaXMuc29ydGluZ0Rpc2FibGVkKSxhLmF1dG9T''@;'; put 'put ''Y3JvbGxEaXNhYmxlZD1hbSh0aGlzLmF1dG9TY3JvbGxEaXNhYmxlZCksYS5hdXRvU2Nyb2xsU3RlcD1VNWUodGhpcy5hdXRvU2Nyb2xsU3RlcCwyKSxhLmNvbm5lY3RlZFRvKGYuZmlsdGVyKGQ9PmQmJmQhPT10aGlzKS5tYXAoZD0+ZC5fZHJvcExpc3RSZWYpKS53aXRoT3JpZW50YXRpb24o''@;'; put 'put ''dGhpcy5vcmllbnRhdGlvbil9KX1faGFuZGxlRXZlbnRzKGEpe2EuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zeW5jSXRlbXNXaXRoUmVmKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSxhLmVudGVyZWQuc3Vic2NyaWJlKGY9Pnt0aGlzLmVu''@;'; put 'put ''dGVyZWQuZW1pdCh7Y29udGFpbmVyOnRoaXMsaXRlbTpmLml0ZW0uZGF0YSxjdXJyZW50SW5kZXg6Zi5jdXJyZW50SW5kZXh9KX0pLGEuZXhpdGVkLnN1YnNjcmliZShmPT57dGhpcy5leGl0ZWQuZW1pdCh7Y29udGFpbmVyOnRoaXMsaXRlbTpmLml0ZW0uZGF0YX0pLHRoaXMuX2NoYW5nZURl''@;'; put 'put ''dGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSksYS5zb3J0ZWQuc3Vic2NyaWJlKGY9Pnt0aGlzLnNvcnRlZC5lbWl0KHtwcmV2aW91c0luZGV4OmYucHJldmlvdXNJbmRleCxjdXJyZW50SW5kZXg6Zi5jdXJyZW50SW5kZXgsY29udGFpbmVyOnRoaXMsaXRlbTpmLml0ZW0uZGF0YX0pfSksYS5k''@;'; put 'put ''cm9wcGVkLnN1YnNjcmliZShmPT57dGhpcy5kcm9wcGVkLmVtaXQoe3ByZXZpb3VzSW5kZXg6Zi5wcmV2aW91c0luZGV4LGN1cnJlbnRJbmRleDpmLmN1cnJlbnRJbmRleCxwcmV2aW91c0NvbnRhaW5lcjpmLnByZXZpb3VzQ29udGFpbmVyLmRhdGEsY29udGFpbmVyOmYuY29udGFpbmVyLmRh''@;'; put 'put ''dGEsaXRlbTpmLml0ZW0uZGF0YSxpc1BvaW50ZXJPdmVyQ29udGFpbmVyOmYuaXNQb2ludGVyT3ZlckNvbnRhaW5lcixkaXN0YW5jZTpmLmRpc3RhbmNlLGRyb3BQb2ludDpmLmRyb3BQb2ludCxldmVudDpmLmV2ZW50fSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9''@;'; put 'put ''KSxzYShhLnJlY2VpdmluZ1N0YXJ0ZWQsYS5yZWNlaXZpbmdTdG9wcGVkKS5zdWJzY3JpYmUoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1fYXNzaWduRGVmYXVsdHMoYSl7Y29uc3R7bG9ja0F4aXM6ZixkcmFnZ2luZ0Rpc2FibGVkOmQsc29ydGluZ0Rpc2Fi''@;'; put 'put ''bGVkOmgsbGlzdEF1dG9TY3JvbGxEaXNhYmxlZDptLGxpc3RPcmllbnRhdGlvbjpffT1hO3RoaXMuZGlzYWJsZWQ9ZD8/ITEsdGhpcy5zb3J0aW5nRGlzYWJsZWQ9aD8/ITEsdGhpcy5hdXRvU2Nyb2xsRGlzYWJsZWQ9bT8/ITEsdGhpcy5vcmllbnRhdGlvbj1ffHwidmVydGljYWwiLGYmJih0''@;'; put 'put ''aGlzLmxvY2tBeGlzPWYpfV9zeW5jSXRlbXNXaXRoUmVmKCl7dGhpcy5fZHJvcExpc3RSZWYud2l0aEl0ZW1zKHRoaXMuZ2V0U29ydGVkSXRlbXMoKS5tYXAoYT0+YS5fZHJhZ1JlZikpfX1yZXR1cm4gbC5fZHJvcExpc3RzPVtdLGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCkocnQoVmkpLHJ0KFJKKSxydChVbCkscnQocU10KSxydChRNWUsOCkscnQoUEosMTIpLHJ0KHk2ZSw4KSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNka0Ryb3BMaXN0IiwiIl0sWyJjZGstZHJvcC1saXN0Il1dLGhvc3RBdHRyczpbMSwiY2RrLWRyb3At''@;'; put 'put ''bGlzdCJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiYoUnIoImlkIixmLmlkKSxncigiY2RrLWRyb3AtbGlzdC1kaXNhYmxlZCIsZi5kaXNhYmxlZCkoImNkay1kcm9wLWxpc3QtZHJhZ2dpbmciLGYuX2Ryb3BMaXN0UmVmLmlzRHJhZ2dpbmcoKSkoImNkay1k''@;'; put 'put ''cm9wLWxpc3QtcmVjZWl2aW5nIixmLl9kcm9wTGlzdFJlZi5pc1JlY2VpdmluZygpKSl9LGlucHV0czp7Y29ubmVjdGVkVG86WyJjZGtEcm9wTGlzdENvbm5lY3RlZFRvIiwiY29ubmVjdGVkVG8iXSxkYXRhOlsiY2RrRHJvcExpc3REYXRhIiwiZGF0YSJdLG9yaWVudGF0aW9uOlsiY2RrRHJv''@;'; put 'put ''cExpc3RPcmllbnRhdGlvbiIsIm9yaWVudGF0aW9uIl0saWQ6ImlkIixsb2NrQXhpczpbImNka0Ryb3BMaXN0TG9ja0F4aXMiLCJsb2NrQXhpcyJdLGRpc2FibGVkOlsiY2RrRHJvcExpc3REaXNhYmxlZCIsImRpc2FibGVkIl0sc29ydGluZ0Rpc2FibGVkOlsiY2RrRHJvcExpc3RTb3J0aW5n''@;'; put 'put ''RGlzYWJsZWQiLCJzb3J0aW5nRGlzYWJsZWQiXSxlbnRlclByZWRpY2F0ZTpbImNka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGUiLCJlbnRlclByZWRpY2F0ZSJdLHNvcnRQcmVkaWNhdGU6WyJjZGtEcm9wTGlzdFNvcnRQcmVkaWNhdGUiLCJzb3J0UHJlZGljYXRlIl0sYXV0b1Njcm9sbERpc2Fi''@;'; put 'put ''bGVkOlsiY2RrRHJvcExpc3RBdXRvU2Nyb2xsRGlzYWJsZWQiLCJhdXRvU2Nyb2xsRGlzYWJsZWQiXSxhdXRvU2Nyb2xsU3RlcDpbImNka0Ryb3BMaXN0QXV0b1Njcm9sbFN0ZXAiLCJhdXRvU2Nyb2xsU3RlcCJdfSxvdXRwdXRzOntkcm9wcGVkOiJjZGtEcm9wTGlzdERyb3BwZWQiLGVudGVy''@;'; put 'put ''ZWQ6ImNka0Ryb3BMaXN0RW50ZXJlZCIsZXhpdGVkOiJjZGtEcm9wTGlzdEV4aXRlZCIsc29ydGVkOiJjZGtEcm9wTGlzdFNvcnRlZCJ9LGV4cG9ydEFzOlsiY2RrRHJvcExpc3QiXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltyaShbe3Byb3ZpZGU6UEosdXNlVmFsdWU6dm9pZCAwfSx7cHJv''@;'; put 'put ''dmlkZTpiNmUsdXNlRXhpc3Rpbmc6bH1dKV19KSxsfSkoKTtjb25zdCBGSj1uZXcgTWkoIkNka0RyYWdIYW5kbGUiKTtsZXQgdzZlPSgoKT0+e2NsYXNzIGx7Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZChhKXt0aGlzLl9kaXNhYmxlZD1hbShhKSx0''@;'; put 'put ''aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCh0aGlzKX1jb25zdHJ1Y3RvcihhLGYpe3RoaXMuZWxlbWVudD1hLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgd2UsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fcGFyZW50RHJhZz1mfW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRl''@;'; put 'put ''KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChMSiwxMikpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjZGtEcmFnSGFuZGxlIiwiIl1dLGhvc3RBdHRyczpbMSwiY2RrLWRyYWctaGFuZGxlIl0saW5w''@;'; put 'put ''dXRzOntkaXNhYmxlZDpbImNka0RyYWdIYW5kbGVEaXNhYmxlZCIsImRpc2FibGVkIl19LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W3JpKFt7cHJvdmlkZTpGSix1c2VFeGlzdGluZzpsfV0pXX0pLGx9KSgpO2NvbnN0IEM2ZT1uZXcgTWkoIkNka0RyYWdQbGFjZWhvbGRlciIpLFM2ZT1uZXcg''@;'; put 'put ''TWkoIkNka0RyYWdQcmV2aWV3Iik7bGV0IE02ZT0oKCk9PntjbGFzcyBse2dldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZHx8dGhpcy5kcm9wQ29udGFpbmVyJiZ0aGlzLmRyb3BDb250YWluZXIuZGlzYWJsZWR9c2V0IGRpc2FibGVkKGEpe3RoaXMuX2Rpc2FibGVkPWFtKGEp''@;'; put 'put ''LHRoaXMuX2RyYWdSZWYuZGlzYWJsZWQ9dGhpcy5fZGlzYWJsZWR9Y29uc3RydWN0b3IoYSxmLGQsaCxtLF8sTyxYLGFlLHBlLGJlKXt0aGlzLmVsZW1lbnQ9YSx0aGlzLmRyb3BDb250YWluZXI9Zix0aGlzLl9uZ1pvbmU9aCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW0sdGhpcy5fZGlyPU8s''@;'; put 'put ''dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9YWUsdGhpcy5fc2VsZkhhbmRsZT1wZSx0aGlzLl9wYXJlbnREcmFnPWJlLHRoaXMuX2Rlc3Ryb3llZD1uZXcgd2UsdGhpcy5zdGFydGVkPW5ldyB4cix0aGlzLnJlbGVhc2VkPW5ldyB4cix0aGlzLmVuZGVkPW5ldyB4cix0aGlzLmVudGVyZWQ9bmV3''@;'; put 'put ''IHhyLHRoaXMuZXhpdGVkPW5ldyB4cix0aGlzLmRyb3BwZWQ9bmV3IHhyLHRoaXMubW92ZWQ9bmV3IEJlKHhlPT57Y29uc3QgVmU9dGhpcy5fZHJhZ1JlZi5tb3ZlZC5waXBlKEVlKFplPT4oe3NvdXJjZTp0aGlzLHBvaW50ZXJQb3NpdGlvbjpaZS5wb2ludGVyUG9zaXRpb24sZXZlbnQ6WmUu''@;'; put 'put ''ZXZlbnQsZGVsdGE6WmUuZGVsdGEsZGlzdGFuY2U6WmUuZGlzdGFuY2V9KSkpLnN1YnNjcmliZSh4ZSk7cmV0dXJuKCk9PntWZS51bnN1YnNjcmliZSgpfX0pLHRoaXMuX2RyYWdSZWY9WC5jcmVhdGVEcmFnKGEse2RyYWdTdGFydFRocmVzaG9sZDpfJiZudWxsIT1fLmRyYWdTdGFydFRocmVz''@;'; put 'put ''aG9sZD9fLmRyYWdTdGFydFRocmVzaG9sZDo1LHBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6XyYmbnVsbCE9Xy5wb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkP18ucG9pbnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZDo1LHpJbmRleDpfPy56SW5kZXh9KSx0aGlzLl9k''@;'; put 'put ''cmFnUmVmLmRhdGE9dGhpcyxsLl9kcmFnSW5zdGFuY2VzLnB1c2godGhpcyksXyYmdGhpcy5fYXNzaWduRGVmYXVsdHMoXyksZiYmKHRoaXMuX2RyYWdSZWYuX3dpdGhEcm9wQ29udGFpbmVyKGYuX2Ryb3BMaXN0UmVmKSxmLmFkZEl0ZW0odGhpcykpLHRoaXMuX3N5bmNJbnB1dHModGhpcy5f''@;'; put 'put ''ZHJhZ1JlZiksdGhpcy5faGFuZGxlRXZlbnRzKHRoaXMuX2RyYWdSZWYpfWdldFBsYWNlaG9sZGVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9kcmFnUmVmLmdldFBsYWNlaG9sZGVyRWxlbWVudCgpfWdldFJvb3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RyYWdSZWYuZ2V0Um9vdEVsZW1lbnQo''@;'; put 'put ''KX1yZXNldCgpe3RoaXMuX2RyYWdSZWYucmVzZXQoKX1nZXRGcmVlRHJhZ1Bvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdSZWYuZ2V0RnJlZURyYWdQb3NpdGlvbigpfXNldEZyZWVEcmFnUG9zaXRpb24oYSl7dGhpcy5fZHJhZ1JlZi5zZXRGcmVlRHJhZ1Bvc2l0aW9uKGEpfW5nQWZ0ZXJW''@;'; put 'put ''aWV3SW5pdCgpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKEVmKDEpLEFoKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX3VwZGF0ZVJvb3RFbGVtZW50KCksdGhpcy5fc2V0dXBIYW5kbGVzTGlzdGVu''@;'; put 'put ''ZXIoKSx0aGlzLmZyZWVEcmFnUG9zaXRpb24mJnRoaXMuX2RyYWdSZWYuc2V0RnJlZURyYWdQb3NpdGlvbih0aGlzLmZyZWVEcmFnUG9zaXRpb24pfSl9KX1uZ09uQ2hhbmdlcyhhKXtjb25zdCBmPWEucm9vdEVsZW1lbnRTZWxlY3RvcixkPWEuZnJlZURyYWdQb3NpdGlvbjtmJiYhZi5maXJz''@;'; put 'put ''dENoYW5nZSYmdGhpcy5fdXBkYXRlUm9vdEVsZW1lbnQoKSxkJiYhZC5maXJzdENoYW5nZSYmdGhpcy5mcmVlRHJhZ1Bvc2l0aW9uJiZ0aGlzLl9kcmFnUmVmLnNldEZyZWVEcmFnUG9zaXRpb24odGhpcy5mcmVlRHJhZ1Bvc2l0aW9uKX1uZ09uRGVzdHJveSgpe3RoaXMuZHJvcENvbnRhaW5l''@;'; put 'put ''ciYmdGhpcy5kcm9wQ29udGFpbmVyLnJlbW92ZUl0ZW0odGhpcyk7Y29uc3QgYT1sLl9kcmFnSW5zdGFuY2VzLmluZGV4T2YodGhpcyk7YT4tMSYmbC5fZHJhZ0luc3RhbmNlcy5zcGxpY2UoYSwxKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9kZXN0cm95ZWQu''@;'; put 'put ''bmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuX2RyYWdSZWYuZGlzcG9zZSgpfSl9X3VwZGF0ZVJvb3RFbGVtZW50KCl7Y29uc3QgYT10aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtsZXQgZj1hO3RoaXMucm9vdEVsZW1lbnRTZWxlY3RvciYmKGY9dm9pZCAwIT09YS5j''@;'; put 'put ''bG9zZXN0P2EuY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpOmEucGFyZW50RWxlbWVudD8uY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpKSx0aGlzLl9kcmFnUmVmLndpdGhSb290RWxlbWVudChmfHxhKX1fZ2V0Qm91bmRhcnlFbGVtZW50KCl7Y29uc3QgYT10aGlz''@;'; put 'put ''LmJvdW5kYXJ5RWxlbWVudDtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdChhKTokMChhKTpudWxsfV9zeW5jSW5wdXRzKGEpe2EuYmVmb3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9PntpZighYS5pc0RyYWdnaW5nKCkpe2NvbnN0''@;'; put 'put ''IGY9dGhpcy5fZGlyLGQ9dGhpcy5kcmFnU3RhcnREZWxheSxoPXRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU/e3RlbXBsYXRlOnRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGUudGVtcGxhdGVSZWYsY29udGV4dDp0aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRlLmRhdGEsdmlld0NvbnRhaW5lcjp0''@;'; put 'put ''aGlzLl92aWV3Q29udGFpbmVyUmVmfTpudWxsLG09dGhpcy5fcHJldmlld1RlbXBsYXRlP3t0ZW1wbGF0ZTp0aGlzLl9wcmV2aWV3VGVtcGxhdGUudGVtcGxhdGVSZWYsY29udGV4dDp0aGlzLl9wcmV2aWV3VGVtcGxhdGUuZGF0YSxtYXRjaFNpemU6dGhpcy5fcHJldmlld1RlbXBsYXRlLm1h''@;'; put 'put ''dGNoU2l6ZSx2aWV3Q29udGFpbmVyOnRoaXMuX3ZpZXdDb250YWluZXJSZWZ9Om51bGw7YS5kaXNhYmxlZD10aGlzLmRpc2FibGVkLGEubG9ja0F4aXM9dGhpcy5sb2NrQXhpcyxhLmRyYWdTdGFydERlbGF5PSJvYmplY3QiPT10eXBlb2YgZCYmZD9kOlU1ZShkKSxhLmNvbnN0cmFpblBvc2l0''@;'; put 'put ''aW9uPXRoaXMuY29uc3RyYWluUG9zaXRpb24sYS5wcmV2aWV3Q2xhc3M9dGhpcy5wcmV2aWV3Q2xhc3MsYS53aXRoQm91bmRhcnlFbGVtZW50KHRoaXMuX2dldEJvdW5kYXJ5RWxlbWVudCgpKS53aXRoUGxhY2Vob2xkZXJUZW1wbGF0ZShoKS53aXRoUHJldmlld1RlbXBsYXRlKG0pLndpdGhQ''@;'; put 'put ''cmV2aWV3Q29udGFpbmVyKHRoaXMucHJldmlld0NvbnRhaW5lcnx8Imdsb2JhbCIpLGYmJmEud2l0aERpcmVjdGlvbihmLnZhbHVlKX19KSxhLmJlZm9yZVN0YXJ0ZWQucGlwZShFZigxKSkuc3Vic2NyaWJlKCgpPT57aWYodGhpcy5fcGFyZW50RHJhZylyZXR1cm4gdm9pZCBhLndpdGhQYXJl''@;'; put 'put ''bnQodGhpcy5fcGFyZW50RHJhZy5fZHJhZ1JlZik7bGV0IGY9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtmb3IoO2Y7KXtpZihmLmNsYXNzTGlzdC5jb250YWlucygiY2RrLWRyYWciKSl7YS53aXRoUGFyZW50KGwuX2RyYWdJbnN0YW5jZXMuZmluZChkPT5kLmVs''@;'; put 'put ''ZW1lbnQubmF0aXZlRWxlbWVudD09PWYpPy5fZHJhZ1JlZnx8bnVsbCk7YnJlYWt9Zj1mLnBhcmVudEVsZW1lbnR9fSl9X2hhbmRsZUV2ZW50cyhhKXthLnN0YXJ0ZWQuc3Vic2NyaWJlKGY9Pnt0aGlzLnN0YXJ0ZWQuZW1pdCh7c291cmNlOnRoaXMsZXZlbnQ6Zi5ldmVudH0pLHRoaXMuX2No''@;'; put 'put ''YW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSksYS5yZWxlYXNlZC5zdWJzY3JpYmUoZj0+e3RoaXMucmVsZWFzZWQuZW1pdCh7c291cmNlOnRoaXMsZXZlbnQ6Zi5ldmVudH0pfSksYS5lbmRlZC5zdWJzY3JpYmUoZj0+e3RoaXMuZW5kZWQuZW1pdCh7c291cmNlOnRoaXMsZGlzdGFu''@;'; put 'put ''Y2U6Zi5kaXN0YW5jZSxkcm9wUG9pbnQ6Zi5kcm9wUG9pbnQsZXZlbnQ6Zi5ldmVudH0pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSksYS5lbnRlcmVkLnN1YnNjcmliZShmPT57dGhpcy5lbnRlcmVkLmVtaXQoe2NvbnRhaW5lcjpmLmNvbnRhaW5lci5kYXRhLGl0''@;'; put 'put ''ZW06dGhpcyxjdXJyZW50SW5kZXg6Zi5jdXJyZW50SW5kZXh9KX0pLGEuZXhpdGVkLnN1YnNjcmliZShmPT57dGhpcy5leGl0ZWQuZW1pdCh7Y29udGFpbmVyOmYuY29udGFpbmVyLmRhdGEsaXRlbTp0aGlzfSl9KSxhLmRyb3BwZWQuc3Vic2NyaWJlKGY9Pnt0aGlzLmRyb3BwZWQuZW1pdCh7''@;'; put 'put ''cHJldmlvdXNJbmRleDpmLnByZXZpb3VzSW5kZXgsY3VycmVudEluZGV4OmYuY3VycmVudEluZGV4LHByZXZpb3VzQ29udGFpbmVyOmYucHJldmlvdXNDb250YWluZXIuZGF0YSxjb250YWluZXI6Zi5jb250YWluZXIuZGF0YSxpc1BvaW50ZXJPdmVyQ29udGFpbmVyOmYuaXNQb2ludGVyT3Zl''@;'; put 'put ''ckNvbnRhaW5lcixpdGVtOnRoaXMsZGlzdGFuY2U6Zi5kaXN0YW5jZSxkcm9wUG9pbnQ6Zi5kcm9wUG9pbnQsZXZlbnQ6Zi5ldmVudH0pfSl9X2Fzc2lnbkRlZmF1bHRzKGEpe2NvbnN0e2xvY2tBeGlzOmYsZHJhZ1N0YXJ0RGVsYXk6ZCxjb25zdHJhaW5Qb3NpdGlvbjpoLHByZXZpZXdDbGFz''@;'; put 'put ''czptLGJvdW5kYXJ5RWxlbWVudDpfLGRyYWdnaW5nRGlzYWJsZWQ6Tyxyb290RWxlbWVudFNlbGVjdG9yOlgscHJldmlld0NvbnRhaW5lcjphZX09YTt0aGlzLmRpc2FibGVkPU8/PyExLHRoaXMuZHJhZ1N0YXJ0RGVsYXk9ZHx8MCxmJiYodGhpcy5sb2NrQXhpcz1mKSxoJiYodGhpcy5jb25z''@;'; put 'put ''dHJhaW5Qb3NpdGlvbj1oKSxtJiYodGhpcy5wcmV2aWV3Q2xhc3M9bSksXyYmKHRoaXMuYm91bmRhcnlFbGVtZW50PV8pLFgmJih0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3I9WCksYWUmJih0aGlzLnByZXZpZXdDb250YWluZXI9YWUpfV9zZXR1cEhhbmRsZXNMaXN0ZW5lcigpe3RoaXMuX2hh''@;'; put 'put ''bmRsZXMuY2hhbmdlcy5waXBlKHQ0KHRoaXMuX2hhbmRsZXMpLHF1KGE9Pntjb25zdCBmPWEuZmlsdGVyKGQ9PmQuX3BhcmVudERyYWc9PT10aGlzKS5tYXAoZD0+ZC5lbGVtZW50KTt0aGlzLl9zZWxmSGFuZGxlJiZ0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3ImJmYucHVzaCh0aGlzLmVsZW1l''@;'; put 'put ''bnQpLHRoaXMuX2RyYWdSZWYud2l0aEhhbmRsZXMoZil9KSxrbChhPT5zYSguLi5hLm1hcChmPT5mLl9zdGF0ZUNoYW5nZXMucGlwZSh0NChmKSkpKSksQWgodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKGE9Pntjb25zdCBmPXRoaXMuX2RyYWdSZWYsZD1hLmVsZW1lbnQubmF0aXZlRWxl''@;'; put 'put ''bWVudDthLmRpc2FibGVkP2YuZGlzYWJsZUhhbmRsZShkKTpmLmVuYWJsZUhhbmRsZShkKX0pfX1yZXR1cm4gbC5fZHJhZ0luc3RhbmNlcz1bXSxsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFZpKSxydChiNmUsMTIpLHJ0KEZhKSxydChVbykscnQoZmEpLHJ0''@;'; put 'put ''KHk2ZSw4KSxydChRNWUsOCkscnQoUkopLHJ0KFVsKSxydChGSiwxMCkscnQoTEosMTIpKX0sbC5cdTAyNzVkaXI9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2RrRHJhZyIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGYsZCl7aWYoMSZhJiYoRm8oZCxTNmUsNSksRm8oZCxD''@;'; put 'put ''NmUsNSksRm8oZCxGSiw1KSksMiZhKXtsZXQgaDt1aShoPWNpKCkpJiYoZi5fcHJldmlld1RlbXBsYXRlPWguZmlyc3QpLHVpKGg9Y2koKSkmJihmLl9wbGFjZWhvbGRlclRlbXBsYXRlPWguZmlyc3QpLHVpKGg9Y2koKSkmJihmLl9oYW5kbGVzPWgpfX0saG9zdEF0dHJzOlsxLCJjZGstZHJh''@;'; put 'put ''ZyJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MiZhJiZncigiY2RrLWRyYWctZGlzYWJsZWQiLGYuZGlzYWJsZWQpKCJjZGstZHJhZy1kcmFnZ2luZyIsZi5fZHJhZ1JlZi5pc0RyYWdnaW5nKCkpfSxpbnB1dHM6e2RhdGE6WyJjZGtEcmFnRGF0YSIsImRhdGEiXSxs''@;'; put 'put ''b2NrQXhpczpbImNka0RyYWdMb2NrQXhpcyIsImxvY2tBeGlzIl0scm9vdEVsZW1lbnRTZWxlY3RvcjpbImNka0RyYWdSb290RWxlbWVudCIsInJvb3RFbGVtZW50U2VsZWN0b3IiXSxib3VuZGFyeUVsZW1lbnQ6WyJjZGtEcmFnQm91bmRhcnkiLCJib3VuZGFyeUVsZW1lbnQiXSxkcmFnU3Rh''@;'; put 'put ''cnREZWxheTpbImNka0RyYWdTdGFydERlbGF5IiwiZHJhZ1N0YXJ0RGVsYXkiXSxmcmVlRHJhZ1Bvc2l0aW9uOlsiY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb24iLCJmcmVlRHJhZ1Bvc2l0aW9uIl0sZGlzYWJsZWQ6WyJjZGtEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZCJdLGNvbnN0cmFpblBvc2l0''@;'; put 'put ''aW9uOlsiY2RrRHJhZ0NvbnN0cmFpblBvc2l0aW9uIiwiY29uc3RyYWluUG9zaXRpb24iXSxwcmV2aWV3Q2xhc3M6WyJjZGtEcmFnUHJldmlld0NsYXNzIiwicHJldmlld0NsYXNzIl0scHJldmlld0NvbnRhaW5lcjpbImNka0RyYWdQcmV2aWV3Q29udGFpbmVyIiwicHJldmlld0NvbnRhaW5l''@;'; put 'put ''ciJdfSxvdXRwdXRzOntzdGFydGVkOiJjZGtEcmFnU3RhcnRlZCIscmVsZWFzZWQ6ImNka0RyYWdSZWxlYXNlZCIsZW5kZWQ6ImNka0RyYWdFbmRlZCIsZW50ZXJlZDoiY2RrRHJhZ0VudGVyZWQiLGV4aXRlZDoiY2RrRHJhZ0V4aXRlZCIsZHJvcHBlZDoiY2RrRHJhZ0Ryb3BwZWQiLG1vdmVk''@;'; put 'put ''OiJjZGtEcmFnTW92ZWQifSxleHBvcnRBczpbImNka0RyYWciXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltyaShbe3Byb3ZpZGU6TEosdXNlRXhpc3Rpbmc6bH1dKSxibF19KSxsfSkoKSxrNmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBu''@;'; put 'put ''ZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7cHJvdmlkZXJzOltSSl0saW1wb3J0czpbUU10XX0pLGx9KSgpO2NvbnN0IE02PXZvaWQgMCxQa3Q9WyJlbi1HQiIsW1siYSIsInAiXSxbImFtIiwicG0iXSxNNl0sW1siYW0iLCJwbSJdLE02LE02XSxb''@;'; put 'put ''WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sWyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sWyJTdSIsIk1vIiwiVHUiLCJX''@;'; put 'put ''ZSIsIlRoIiwiRnIiLCJTYSJdXSxNNixbWyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSxbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcHQiLCJPY3QiLCJOb3YiLCJEZWMiXSxbIkphbnVhcnkiLCJGZWJy''@;'; put 'put ''dWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLE02LFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXV0sMSxbNiwwXSxb''@;'; put 'put ''ImRkL01NL3kiLCJkIE1NTSB5IiwiZCBNTU1NIHkiLCJFRUVFLCBkIE1NTU0geSJdLFsiSEg6bW0iLCJISDptbTpzcyIsIkhIOm1tOnNzIHoiLCJISDptbTpzcyB6enp6Il0sWyJ7MX0sIHswfSIsTTYsInsxfSAnYXQnIHswfSIsTTZdLFsiLiIsIiwiLCI7IiwiJSIsIisiLCItIiwiRSIsIlx4''@;'; put 'put ''ZDciLCJcdTIwMzAiLCJcdTIyMWUiLCJOYU4iLCI6Il0sWyIjLCMjMC4jIyMiLCIjLCMjMCUiLCJceGE0IywjIzAuMDAiLCIjRTAiXSwiR0JQIiwiXHhhMyIsIkJyaXRpc2ggUG91bmQiLHtKUFk6WyJKUFx4YTUiLCJceGE1Il0sVVNEOlsiVVMkIiwiJCJdfSwibHRyIixmdW5jdGlvbiBMa3Qo''@;'; put 'put ''bCl7Y29uc3QgYT1NYXRoLmZsb29yKE1hdGguYWJzKGwpKSxmPWwudG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1hJiYwPT09Zj8xOjV9XSxGa3Q9WyJpbnB1dCJdO2Z1bmN0aW9uIEhrdChsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsNyks''@;'; put 'put ''WWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksd3IoIiAiLGEubG9hZGluZ01vcmU/IkxvYWRpbmcuLi4iOiJMT0FEIE1PUkUiLCIgIil9fWNvbnN0IE5rdD1mdW5jdGlvbihsLGMpe3JldHVybnsid2lkdGgucHgiOmwsIm1heC1oZWlnaHQucHgiOmN9fSxWa3Q9WyIqIl07bGV0''@;'; put 'put ''IEU2ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuY2RyPWEsdGhpcy5pbnB1dElkPSIiLHRoaXMucGxhY2Vob2xkZXI9IiIsdGhpcy52YWx1ZT0iIix0aGlzLmRpc2FibGVkPSExLHRoaXMudHlwZT0idGV4dCIsdGhpcy5hdXRvY29tcGxldGU9Im9mZiIsdGhpcy50YWJpbmRl''@;'; put 'put ''eD0iIix0aGlzLmVtaXRPbmx5U2VsZWN0ZWQ9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT0hMSx0aGlzLm9uSW5wdXRLZXlkb3duPW5ldyB4cix0aGlzLm9uSW5wdXRDaGFuZ2U9bmV3IHhyLHRoaXMudmFsdWVDaGFuZ2U9bmV3IHhyLHRoaXMub25Mb2FkaW5nTW9yZT1uZXcgeHIsdGhpcy5kYXRh''@;'; put 'put ''bGlzdE9wZW49ITEsdGhpcy5hZnRlck9wZW5Mb2NrRGVsYXk9MTUwLHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMSx0aGlzLmlucHV0Rm9jdXNlZD0hMSx0aGlzLmlucHV0Q2xpZW50UmVjdD17fSx0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMubG9hZGluZ01vcmU9ITF9bmdPbkluaXQo''@;'; put 'put ''KXt9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuY2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpfSw1MDApfW9uSW5wdXRGaXJlZChhLGYsZCl7dGhpcy5vcGVuRGF0YWxpc3QoImNsaWNrIiE9PWQpLHRoaXMudW5zZWxlY3RBbGxPcHRpb25zKCksdGhpcy5maWx0ZXJPcHRp''@;'; put 'put ''b25zTGlzdCgpLCghdGhpcy5lbWl0T25seVNlbGVjdGVkfHxmKSYmKHRoaXMub25JbnB1dENoYW5nZS5lbWl0KHt0YXJnZXQ6e3ZhbHVlOnRoaXMudmFsdWV9fSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpKX1vbklucHV0Q2xpY2soYSl7dGhpcy5vcGVuRGF0YWxpc3QoKX1v''@;'; put 'put ''cGVuRGF0YWxpc3QoYT0hMCl7dGhpcy5kYXRhbGlzdE9wZW49ITAsYSYmKHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMCx0aGlzLmFmdGVyT3BlbkxvY2tEZWxheVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuYWZ0ZXJPcGVuTG9jaz0hMX0sdGhpcy5hZnRlck9wZW5Mb2NrRGVsYXkpKX1jbG9z''@;'; put 'put ''ZURhdGFsaXN0KCl7Y2xlYXJUaW1lb3V0KHRoaXMuYWZ0ZXJPcGVuTG9ja0RlbGF5VGltZW91dCksdGhpcy5hZnRlck9wZW5Mb2NrPSExLHRoaXMuZGF0YWxpc3RPcGVuPSExfXJlc2V0RGF0YWxpc3RGaWx0ZXIoKXt0aGlzLmZpbHRlck9wdGlvbnNMaXN0KCEwKX1vbklucHV0Rm9jdXNpbihh''@;'; put 'put ''KXt0aGlzLmlucHV0Rm9jdXNlZD0hMH1vbklucHV0Rm9jdXNvdXQoYSl7dGhpcy5pbnB1dEZvY3VzZWQ9ITEsdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1vbklucHV0TW91c2VlbnRlcihhKXt0aGlzLmlucHV0Q2xpZW50UmVjdC53aWR0aHx8dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9u''@;'; put 'put ''KCl9ZmlsdGVyT3B0aW9uc0xpc3QoYSl7Y29uc3QgZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbmApO2ZvcihsZXQgZD0wO2Q8Zi5sZW5ndGg7ZCsrKXtjb25zdCBoPWZbZF07aWYoMD09PXRoaXMudmFsdWUubGVuZ3RoKXtoLmNs''@;'; put 'put ''YXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpO2NvbnRpbnVlfWlmKGEpe2guY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Y29udGludWV9Y29uc3QgbT1oLmlubmVyVGV4dHx8IiIsXz1oLnZhbHVlfHwiIjsobStfKT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpP2guY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6aC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19c2V0VG9DbG9zZURhdGFsaXN0KCl7dGhpcy5kYXRhbGlzdENsb3NlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZXx8dGhpcy5hZnRlck9w''@;'; put 'put ''ZW5Mb2NrfHwodGhpcy5jbG9zZURhdGFsaXN0KCksdGhpcy51bnNlbGVjdEFsbE9wdGlvbnMoKSx0aGlzLnJlc2V0RGF0YWxpc3RGaWx0ZXIoKSl9LDEwMCl9Y2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpe2NvbnN0IGY9dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRp''@;'; put 'put ''bmdDbGllbnRSZWN0KCk7Zi53aWR0aD4wJiZmLmhlaWdodD4wJiYodGhpcy5pbnB1dENsaWVudFJlY3Q9e3dpZHRoOmYud2lkdGgsYm90dG9tOmYuYm90dG9tfSksdGhpcy5pbm5lckhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHR9b25EYXRhTGlzdE1vdXNlRW50ZXIoYSl7dGhpcy5wcmV2ZW50''@;'; put 'put ''RGF0YWxpc3RDbG9zZT0hMH1vbkRhdGFMaXN0TW91c2VMZWF2ZShhKXt0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkRhdGFMaXN0U2Nyb2xsKGEpe3RoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9b25EYXRhTGlz''@;'; put 'put ''dENsaWNrKGEpe2NvbnN0IGY9YS50YXJnZXQ7ImxvYWQtbW9yZSIhPT1mLmRhdGFzZXQ/LnR5cGU/Ik9QVElPTiIhPT1mLnRhZ05hbWV8fHRoaXMuc2V0T3B0aW9uVmFsdWUoZi5pbm5lclRleHQsZi52YWx1ZSk6dGhpcy5sb2FkTW9yZSgpfWxvYWRNb3JlKCl7dGhpcy5vbkxvYWRpbmdNb3Jl''@;'; put 'put ''LmVtaXQoe2xvYWRNb3JlRmluaXNoZWQ6YT0+e3RoaXMubG9hZGluZ01vcmU9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT1hfX0pLHRoaXMubG9hZGluZ01vcmU9ITB9c2V0T3B0aW9uVmFsdWUoYSxmKXsoYXx8ZikmJihmfHwoZj1hKSksZiYmKHRoaXMucHJldmVudERhdGFsaXN0Q2xvc2U9ITEs''@;'; put 'put ''dGhpcy52YWx1ZT1mLHRoaXMub25JbnB1dEZpcmVkKG51bGwsITAsImNsaWNrIiksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKSl9b25NYWluS2V5ZG93bihhKXtzd2l0Y2goYS5rZXkpe2Nhc2UiQXJyb3dVcCI6dGhpcy5nZXRPcHRpb25zTW92ZUZvY3VzKCJ1cCIpO2JyZWFrO2Nhc2UiQXJy''@;'; put 'put ''b3dEb3duIjp0aGlzLmdldE9wdGlvbnNNb3ZlRm9jdXMoImRvd24iKTticmVhaztjYXNlIkVudGVyIjp0aGlzLnNlbGVjdEZvY3VzZWRPcHRpb24oKX19b25JbnB1dEtleXVwKGEpe3JldHVybiF0aGlzLmRhdGFsaXN0T3Blbnx8KCJFc2NhcGUiPT09YS5rZXk/KGEuc3RvcFByb3BhZ2F0aW9u''@;'; put 'put ''KCksYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnNldFRvQ2xvc2VEYXRhbGlzdCgpLCExKTp2b2lkIDApfXVuc2VsZWN0QWxsT3B0aW9ucygpe2NvbnN0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb25gKTtmb3Io''@;'; put 'put ''bGV0IGY9MDtmPGEubGVuZ3RoO2YrKylhW2ZdLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKX1zZWxlY3RGb2N1c2VkT3B0aW9uKCl7Y29uc3QgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbi5mb2N1c2VkYCk7YSYmdGhpcy5vbkRh''@;'; put 'put ''dGFMaXN0Q2xpY2soe3RhcmdldDphfSksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1nZXRPcHRpb25zTW92ZUZvY3VzKGEpe2NvbnN0IGY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb246bm90KC5oaWRkZW4pYCk7bGV0IGQ9MDtm''@;'; put 'put ''b3IobGV0IGg9MDtoPGYubGVuZ3RoO2grKyl7Y29uc3QgbT1mW2hdO2lmKG0uY2xhc3NMaXN0LmNvbnRhaW5zKCJmb2N1c2VkIikpe2Q9ImRvd24iPT09YT9oKzE6aC0xLGQ8MCYmKGQ9Zi5sZW5ndGgtMSksZD5mLmxlbmd0aC0xJiYoZD0wKSxtLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQi''@;'; put 'put ''KTticmVha319ZltkXS5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIil9b25SZXNpemUoYSl7dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFVsKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2Vs''@;'; put 'put ''ZWN0b3JzOltbImFwcC1hdXRvY29tcGxldGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiZObyhGa3QsNSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5pbnB1dEVsZW1lbnQ9ZC5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJyZXNpemUi''@;'; put 'put ''LGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uUmVzaXplKGgpfSwwLEc4KX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0eXBlOiJ0eXBlIixhdXRvY29tcGxldGU6ImF1dG9jb21wbGV0''@;'; put 'put ''ZSIsdGFiaW5kZXg6InRhYmluZGV4IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNlbGVjdGVkIixlbmFibGVMb2FkTW9yZToiZW5hYmxlTG9hZE1vcmUifSxvdXRwdXRzOntvbklucHV0S2V5ZG93bjoib25JbnB1dEtleWRvd24iLG9uSW5wdXRDaGFuZ2U6Im9uSW5wdXRDaGFuZ2UiLHZh''@;'; put 'put ''bHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25Mb2FkaW5nTW9yZToib25Mb2FkaW5nTW9yZSJ9LG5nQ29udGVudFNlbGVjdG9yczpWa3QsZGVjbHM6OSx2YXJzOjE1LGNvbnN0czpbWzEsImF1dG9jb21wbGV0ZS13cmFwcGVyIiwzLCJrZXlkb3duIl0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21w''@;'; put 'put ''bGV0ZSIsIm9mZiIsImF1dG9mb2N1cyIsIiIsInRhYmluZGV4IiwiMCIsMSwiaW5wdXQtdmFsIiwzLCJpZCIsInBsYWNlaG9sZGVyIiwibmdNb2RlbCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSIsImNsaWNrIiwibW91c2VlbnRlciIsImZvY3VzIiwiZm9jdXNvdXQiLCJrZXl1cCJdLFsi''@;'; put 'put ''aW5wdXQiLCIiXSxbMSwib3ZlcmxheSJdLFsxLCJkYXRhbGlzdCIsMywibmdTdHlsZSIsImlkIiwiY2xpY2siLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInNjcm9sbCJdLFsib3B0aW9ucyIsIiJdLFsiZGF0YS10eXBlIiwibG9hZC1tb3JlIiwiY2xhc3MiLCJsb2FkLW1vcmUiLDQsIm5n''@;'; put 'put ''SWYiXSxbImRhdGEtdHlwZSIsImxvYWQtbW9yZSIsMSwibG9hZC1tb3JlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7aWYoMSZhJiYoVGkoKSx5ZSgwLCJkaXYiLDApLEV0KCJrZXlkb3duIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbk1haW5LZXlkb3duKGgpfSkseWUoMSwiaW5wdXQiLDEs''@;'; put 'put ''MiksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnZhbHVlPWh9KSgiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uSW5wdXRDbGljayhoKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbklucHV0RmlyZWQoaCl9KSgibW91c2VlbnRl''@;'; put 'put ''ciIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25JbnB1dE1vdXNlZW50ZXIoaCl9KSgiZm9jdXMiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uSW5wdXRGb2N1c2luKGgpfSkoImZvY3Vzb3V0IixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbklucHV0Rm9jdXNvdXQoaCl9KSgia2V5dXAiLGZ1bmN0aW9u''@;'; put 'put ''KGgpe3JldHVybiBmLm9uSW5wdXRLZXl1cChoKX0pLENlKCksdG4oMywiZGl2IiwzKSx5ZSg0LCJkaXYiLDQpLEV0KCJjbGljayIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25EYXRhTGlzdENsaWNrKGgpfSkoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uRGF0YUxpc3RNb3Vz''@;'; put 'put ''ZUVudGVyKGgpfSkoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uRGF0YUxpc3RNb3VzZUxlYXZlKGgpfSkoInNjcm9sbCIsZnVuY3Rpb24oaCl7cmV0dXJuIGYub25EYXRhTGlzdFNjcm9sbChoKX0pLHllKDUsImRpdiIsbnVsbCw1KSxEcig3KSxDZSgpLHR0KDgsSGt0LDIs''@;'; put 'put ''MSwib3B0aW9uIiw2KSxDZSgpKCkpLDImYSl7Y29uc3QgZD1RaSg2KTtTZSgxKSxSZSgiaWQiLGYuaW5wdXRJZCkoInBsYWNlaG9sZGVyIixmLnBsYWNlaG9sZGVyKSgibmdNb2RlbCIsZi52YWx1ZSkoImRpc2FibGVkIixmLmRpc2FibGVkKSxScigibGlzdCIsImRhdGFsaXN0XyIrZi5pbnB1''@;'; put 'put ''dElkKSxTZSgyKSxncigiaGlkZGVuIiwhZi5kYXRhbGlzdE9wZW4pLFNlKDEpLGdyKCJoaWRkZW4iLCFmLmRhdGFsaXN0T3BlbiksUmUoIm5nU3R5bGUiLHdoKDEyLE5rdCxmLmlucHV0Q2xpZW50UmVjdC53aWR0aCxmLmlubmVySGVpZ2h0JiZmLmlucHV0Q2xpZW50UmVjdC5ib3R0b20/Zi5p''@;'; put 'put ''bm5lckhlaWdodC1mLmlucHV0Q2xpZW50UmVjdC5ib3R0b206dm9pZCAwKSkoImlkIiwiZGF0YWxpc3RfIitmLmlucHV0SWQpLFNlKDQpLFJlKCJuZ0lmIixkLmNoaWxkcmVuLmxlbmd0aD4wJiZmLmVuYWJsZUxvYWRNb3JlKX19LGRlcGVuZGVuY2llczpbJGksU25lLFMxLE0xLGlzLFdhLHph''@;'; put 'put ''XSxzdHlsZXM6WyIuaW5wdXQtdmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MHB4O2JhY2tncm91bmQ6I2ZiZjhmODtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOTk5OTk5fWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX1pbnB1dFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcnttYXJnaW4tdG9wOi01cHh9LmF1dG9jb21wbGV0ZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6''@;'; put 'put ''MTUwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDtiYWNrZ3JvdW5kOndoaXRlO2JveC1zaGFkb3c6MCAzcHggMTBweCAtMXB4ICMwMDAwMDAyYjtvdmVyZmxvdzphdXRvO3otaW5k''@;'; put 'put ''ZXg6MjAwMH0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgb3B0aW9ue3BhZGRpbmc6NXB4IDEwcHg7Y3Vyc29yOnBvaW50ZXJ9LmF1dG9jb21wbGV0ZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC5kYXRhbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAgIG9wdGlvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUyOTQpfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgICBvcHRpb24u''@;'; put 'put ''Zm9jdXNlZHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA1ODgyMzUyOTQpfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9hZC1tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fSJd''@;'; put 'put ''fSksbH0pKCksQmt0PSgoKT0+e2NsYXNzIGx7dHJhbnNmb3JtKGEsZil7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhLmxlbmd0aDwxKXJldHVybiBhO3N3aXRjaChmKXtjYXNlImRhdGUiOnJldHVybiBLbyhhLCJERE1NTVlZWVk6aGg6bW06c3MiKS5mb3JtYXQoIkREL01NL1lZWVkiKTtjYXNl''@;'; put 'put ''InRpbWUiOntpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKCJFcnJvciBwYXJzaW5nIHRpbWUuIFZhbHVlIGlzIG5vdCBzdHJpbmcuIik7Y29uc3QgZD1wYXJzZUludChhLnNwbGl0KCI6IilbMF0pLGg9cGFyc2VJbnQoYS5zcGxpdCgiOiIpWzFdKSxtPXBhcnNlSW50KGEu''@;'; put 'put ''c3BsaXQoIjoiKVsyXSk7cmV0dXJuYCR7ZDwxMD8iMCIrZDpkfToke2g8MTA/IjAiK2g6aH06JHttPDEwPyIwIittOm19YH19cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhP2E6YS50b1N0cmluZygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5c''@;'; put 'put ''dTAyNzVwaXBlPVZsKHtuYW1lOiJkYXRlVGltZUZvcm1hdHRlciIsdHlwZTpsLHB1cmU6ITB9KSxsfSkoKTtjb25zdCBqa3Q9WyJpbnB1dCJdO2Z1bmN0aW9uIHprdChsLGMpe2lmKDEmbCYmKHllKDAsImxhYmVsIiwzKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxhcihh''@;'; put 'put ''LmxhYmVsKX19ZnVuY3Rpb24gVWt0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiY2xyLWRhdGUtY29udGFpbmVyIikoMiwiaW5wdXQiLDQpLEV0KCJjbHJEYXRlQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbkRhdGVJbnB1dEZpcmVkKGQp''@;'; put 'put ''KX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5pbnB1dEZvY3VzZWQ9ITApfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdl''@;'; put 'put ''KCkub25Gb2N1c2luSW5wdXQoZCkpfSkoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbklucHV0TW91c2VPdmVyKCkpfSkoIm1vdXNlb3V0IixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLHdsKDMsImRhdGVU''@;'; put 'put ''aW1lRm9ybWF0dGVyIiksQ2UoKSgpLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7U2UoMiksUmUoImlkIixhLmlucHV0SWQpKCJwbGFjZWhvbGRlciIsd2coMyw1LGEudGVtcCwiZGF0ZSIpKSgiY2xyRGF0ZSIsYS52YWx1ZSkoImRpc2FibGVkIixhLmRpc2FibGVkKSxScigibGlzdCIsImRh''@;'; put 'put ''dGFsaXN0XyIrYS5pbnB1dElkKX19ZnVuY3Rpb24gWmt0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiaW5wdXQiLDUpLEV0KCJpbnB1dCIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub25JbnB1dEZpcmVkKGQpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gVXQoYSksWnQoR2UoKS5pbnB1dEZvY3VzZWQ9ITApfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub25Gb2N1c2luSW5wdXQoZCkpfSko''@;'; put 'put ''Im1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbklucHV0TW91c2VPdmVyKCkpfSkoIm1vdXNlb3V0IixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLENlKCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtTZSgx''@;'; put 'put ''KSxSZSgidmFsdWUiLGEudmFsdWUpKCJpZCIsYS5pbnB1dElkKSgiZGlzYWJsZWQiLGEuZGlzYWJsZWQpLFJyKCJsaXN0IiwiZGF0YWxpc3RfIithLmlucHV0SWQpfX1mdW5jdGlvbiBZa3QobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJhcHAtYXV0b2NvbXBsZXRlIiw2''@;'; put 'put ''LDcpLEV0KCJvbklucHV0Q2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbklucHV0RmlyZWQoZCkpfSkoIm9uTG9hZGluZ01vcmUiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlKGQpKX0pLERyKDMpLENlKCks''@;'; put 'put ''R3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgiaW5wdXRJZCIsYS5pbnB1dElkKSgidmFsdWUiLChudWxsPT1hLnZhbHVlP251bGw6YS52YWx1ZS50b1N0cmluZygpKXx8IiIpKCJlbmFibGVMb2FkTW9yZSIsYS5lbmFibGVMb2FkTW9yZSkoImVtaXRPbmx5U2VsZWN0ZWQiLGEu''@;'; put 'put ''ZW1pdE9ubHlTZWxlY3RlZCkoImRpc2FibGVkIixhLmRpc2FibGVkKX19Y29uc3QgV2t0PVsiKiJdO2xldCB4NmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuaW5wdXRJZD0iIix0aGlzLnZhbHVlPSIiLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy50eXBlPSJ0ZXh0Iix0aGlzLmRp''@;'; put 'put ''c2FibGVTb2Z0c2VsZWN0PSExLHRoaXMuZW1pdE9ubHlTZWxlY3RlZD0hMSx0aGlzLmVuYWJsZUxvYWRNb3JlPSExLHRoaXMudmFsdWVDaGFuZ2U9bmV3IHhyLHRoaXMub25JbnB1dEV2ZW50PW5ldyB4cix0aGlzLmZvY3VzaW5JbnB1dD1uZXcgeHIsdGhpcy5vbkF1dG9jb21wbGV0ZUxvYWRp''@;'; put 'put ''bmdNb3JlPW5ldyB4cix0aGlzLnRlbXA9IiIsdGhpcy5pbnB1dEZvY3VzZWQ9ITF9bmdPbkNoYW5nZXMoYSl7YS52YWx1ZSYmYS52YWx1ZS5jdXJyZW50VmFsdWUhPT1hLnZhbHVlLnByZXZpb3VzVmFsdWUmJnRoaXMudmFsdWVDaGFuZ2UuZW1pdChhLnZhbHVlLmN1cnJlbnRWYWx1ZSl9bmdP''@;'; put 'put ''bkluaXQoKXt9YXV0b2NvbXBsZXRlTG9hZGluZ01vcmUoYSl7dGhpcy5vbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlLmVtaXQoYSl9b25JbnB1dEZpcmVkKGEpe2NvbnN0IGY9YS50YXJnZXQudmFsdWU7dGhpcy50ZW1wPWYsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGYpLHRoaXMub25JbnB1dEV2''@;'; put 'put ''ZW50LmVtaXQoYSl9b25EYXRlSW5wdXRGaXJlZChhKXt0aGlzLnRlbXA9YSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoYSksdGhpcy5vbklucHV0RXZlbnQuZW1pdChhKX1vbklucHV0TW91c2VPdXQoKXt0aGlzLmRpc2FibGVTb2Z0c2VsZWN0fHwodGhpcy52YWx1ZT10aGlzLnRlbXAsdGhpcy50''@;'; put 'put ''ZW1wPSIiKX1vbklucHV0TW91c2VPdmVyKCl7dGhpcy5kaXNhYmxlU29mdHNlbGVjdHx8KHRoaXMudGVtcD10aGlzLnZhbHVlP3RoaXMudmFsdWU6IiIsdGhpcy52YWx1ZT0iIil9b25Gb2N1c2luSW5wdXQoYSl7dGhpcy5mb2N1c2luSW5wdXQuZW1pdChhKX19cmV0dXJuIGwuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1zb2Z0LXNlbGVjdCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxmKXtpZigxJmEmJk5vKGprdCw1KSwyJmEpe2xldCBkO3VpKGQ9Y2koKSkmJihmLmlucHV0RWxlbWVu''@;'; put 'put ''dD1kLmZpcnN0KX19LGlucHV0czp7aW5wdXRJZDoiaW5wdXRJZCIsbGFiZWw6ImxhYmVsIix2YWx1ZToidmFsdWUiLGRpc2FibGVkOiJkaXNhYmxlZCIsdHlwZToidHlwZSIsZGlzYWJsZVNvZnRzZWxlY3Q6ImRpc2FibGVTb2Z0c2VsZWN0IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNl''@;'; put 'put ''bGVjdGVkIixlbmFibGVMb2FkTW9yZToiZW5hYmxlTG9hZE1vcmUifSxvdXRwdXRzOnt2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UiLG9uSW5wdXRFdmVudDoib25JbnB1dEV2ZW50Iixmb2N1c2luSW5wdXQ6ImZvY3VzaW5JbnB1dCIsb25BdXRvY29tcGxldGVMb2FkaW5nTW9yZToib25BdXRv''@;'; put 'put ''Y29tcGxldGVMb2FkaW5nTW9yZSJ9LGZlYXR1cmVzOltibF0sbmdDb250ZW50U2VsZWN0b3JzOldrdCxkZWNsczo1LHZhcnM6NSxjb25zdHM6W1siY2xhc3MiLCJjbHItY29udHJvbC1sYWJlbCIsNCwibmdJZiJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwiY2xyLWNv''@;'; put 'put ''bnRyb2wtbGFiZWwiXSxbInR5cGUiLCJkYXRlIiwiY2xyRGF0ZSIsIiIsMywiaWQiLCJwbGFjZWhvbGRlciIsImNsckRhdGUiLCJkaXNhYmxlZCIsImNsckRhdGVDaGFuZ2UiLCJmb2N1cyIsImZvY3Vzb3V0IiwiZm9jdXNpbiIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0Il0sWyJ0eXBlIiwidGlt''@;'; put 'put ''ZSIsInN0ZXAiLCIxIiwxLCJpbnB1dC12YWwiLDMsInZhbHVlIiwiaWQiLCJkaXNhYmxlZCIsImlucHV0IiwiZm9jdXMiLCJmb2N1c291dCIsImZvY3VzaW4iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIi''@;'; put 'put ''LDEsImlucHV0LXZhbCIsMywiaW5wdXRJZCIsInZhbHVlIiwiZW5hYmxlTG9hZE1vcmUiLCJlbWl0T25seVNlbGVjdGVkIiwiZGlzYWJsZWQiLCJvbklucHV0Q2hhbmdlIiwib25Mb2FkaW5nTW9yZSJdLFsiaW5wdXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJihUaSgpLHR0''@;'; put 'put ''KDAsemt0LDIsMSwibGFiZWwiLDApLFdyKDEsMSksdHQoMixVa3QsNCw4LCJuZy1jb250YWluZXIiLDIpLHR0KDMsWmt0LDIsNCwibmctY29udGFpbmVyIiwyKSx0dCg0LFlrdCw0LDUsIm5nLWNvbnRhaW5lciIsMiksR3IoKSksMiZhJiYoUmUoIm5nSWYiLGYubGFiZWwpLFNlKDEpLFJlKCJu''@;'; put 'put ''Z1N3aXRjaCIsZi50eXBlKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIiwiZGF0ZSIpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCJ0aW1lIiksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsInRleHQiKSl9LGRlcGVuZGVuY2llczpbJGksa2YsQ2gsZWwsbVMsTlUsVlUsRTZlLEJrdF0sc3R5bGVz''@;'; put 'put ''OlsiLmlucHV0LXZhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOiNmYmY4Zjg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzk5OTk5OX1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtvdXRsaW5lOm5vbmV9aW5wdXRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bWFyZ2luLXRvcDotNXB4fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAgIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTVweH1jbHItZGF0ZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgICBpbnB1dDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi1yaWdo''@;'; put 'put ''dDoyMHB4O21hcmdpbi10b3A6LTVweH0iXX0pLGx9KSgpLEdrdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuaGVscGVyU2VydmljZT1hfXRyYW5zZm9ybShhLGY9ImRheXMiLGQ9ITEpe2lmKHZvaWQgMD09PWEmJihhPSIiKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEudG9T''@;'; put 'put ''dHJpbmcoKSksMD09PWEubGVuZ3RoKXtpZigiZGF5cyI9PT1mKXJldHVybiBudWxsO2lmKCJzZWNvbmRzIj09PWYpcmV0dXJuIGQ/IjExOjAwOjAwIjpudWxsfWxldCBoPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0U2FzRGF5c1RvSnNEYXRlKGEsZik7aWYoND09PWEuc3BsaXQoIjoiKS5s''@;'; put 'put ''ZW5ndGgpe2NvbnN0IF89YS5zcGxpdCgiOiIpO2g9bmV3IERhdGUoX1swXSksaC5zZXRIb3VycyhwYXJzZUludChfWzFdKSksaC5zZXRNaW51dGVzKHBhcnNlSW50KF9bMl0pKSxoLnNldFNlY29uZHMocGFyc2VJbnQoX1szXSkpfWVsc2UgaXNOYU4oTnVtYmVyKGEpKSYmKGg9bmV3IERhdGUo''@;'; put 'put ''YSkpO2xldCBtPWAke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhoLmdldEhvdXJzKCkudG9TdHJpbmcoKSl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKGguZ2V0TWludXRlcygpLnRvU3RyaW5nKCkpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFk''@;'; put 'put ''aW5nWmVybyhoLmdldFNlY29uZHMoKS50b1N0cmluZygpKX1gO3JldHVybiBkP206aH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUHUsMTYpKX0sbC5cdTAyNzVwaXBlPVZsKHtuYW1lOiJzYXNUb0pzRGF0ZSIsdHlwZTpsLHB1cmU6ITB9KSxs''@;'; put 'put ''fSkoKSwka3Q9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmhlbHBlclNlcnZpY2U9YX10cmFuc2Zvcm0oYSl7aWYobnVsbD09YXx8IiI9PT1hKXJldHVybiIiO2xldCBmLGQsaDtpZigic3RyaW5nIj09dHlwZW9mIGEmJjM9PT1hLnNwbGl0KCI6IikubGVuZ3RoKXtjb25zdCBt''@;'; put 'put ''PWEuc3BsaXQoIjoiKTtmPW1bMF0sZD1tWzFdLGg9bVsyXX1lbHNlIm51bWJlciIhPXR5cGVvZiBhJiYoYT1wYXJzZUludChhKSksZj1NYXRoLmZsb29yKGEvMzYwMCksZD1NYXRoLmZsb29yKGElMzYwMC82MCksaD1NYXRoLmZsb29yKGElMzYwMCU2MCk7cmV0dXJuYCR7dGhpcy5oZWxwZXJT''@;'; put 'put ''ZXJ2aWNlLmFkZExlYWRpbmdaZXJvKGYpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhkKX06JHt0aGlzLmhlbHBlclNlcnZpY2UuYWRkTGVhZGluZ1plcm8oaCl9YH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUHUsMTYp''@;'; put 'put ''KX0sbC5cdTAyNzVwaXBlPVZsKHtuYW1lOiJzZWNvbmRzUGFyc2VyIix0eXBlOmwscHVyZTohMH0pLGx9KSgpO2Z1bmN0aW9uIEtrdChsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsMjIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgic2VsZWN0ZWQiLEdlKCku''@;'; put 'put ''bG9naWNPcGVyYXRvcnNbMF0pLFNlKDEpLHdyKCIgIixhLCIgIil9fWZ1bmN0aW9uIHFrdChsLGMpezEmbCYmKHllKDAsImRpdiIsMjMpLFllKDEsIlxuICAgICAgICAiKSx0bigyLCJwcm9ncmVzcyIpLFllKDMsIlxuICAgICAgIiksQ2UoKSl9ZnVuY3Rpb24gWGt0KGwsYyl7MSZsJiZ0bigw''@;'; put 'put ''LCJkaXYiKX1mdW5jdGlvbiBKa3QobCxjKXtpZigxJmwmJih5ZSgwLCJvcHRpb24iLDIyKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInNlbGVjdGVkIixHZSgyKS5sb2dpY09wZXJhdG9yc1swXSksU2UoMSksd3IoIiAiLGEsIiAiKX19ZnVuY3Rpb24gUWt0KGws''@;'; put 'put ''Yyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiwzMiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgyKS5hZGRHcm91cENsYXVzZSgpKX0pLHRuKDEsImNsci1pY29uIiwzMykseWUoMiwic3BhbiIpLFllKDMsIkdyb3VwIiksQ2UoKSgpfX1mdW5j''@;'; put 'put ''dGlvbiBlRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMzQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCkuaW5kZXg7cmV0dXJuIFp0KEdlKCkucmVtb3ZlR3JvdXBDbGF1c2UoZCkpfSksQ2UoKX19ZnVuY3Rpb24gdEV0KGwsYyl7''@;'; put 'put ''aWYoMSZsJiYoeWUoMCwib3B0aW9uIiksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDEpLHdyKCIgIixhLk5BTUUsIiAiKX19ZnVuY3Rpb24gbkV0KGwsYyl7aWYoMSZsJiYoeWUoMCwib3B0aW9uIiksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0''@;'; put 'put ''O1NlKDEpLGFyKGEpfX1mdW5jdGlvbiByRXQobCxjKXsxJmwmJmVzKDApfWNvbnN0IGlFdD1mdW5jdGlvbihsLGMsYSl7cmV0dXJue3F1ZXJ5OmwscXVlcnlJbmRleDpjLGNsYXVzZUluZGV4OmF9fTtmdW5jdGlvbiBvRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDUx''@;'; put 'put ''KSgxLCJidXR0b24iLDUyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKS5pbmRleCxoPUdlKCkuaW5kZXgsbT1HZSgpO3JldHVybiBtLmN1cnJlbnRRdWVyeUluZGV4PWQsWnQobS5jdXJyZW50Q2xhdXNlSW5kZXg9aCl9KSxZZSgyLCIgQ2hvb3NlIHZhbHVlcyAi''@;'; put 'put ''KSxDZSgpLHR0KDMsckV0LDEsMCwibmctY29udGFpbmVyIiw1MyksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoMiksZj1hLiRpbXBsaWNpdCxkPWEuaW5kZXgsaD1HZSgpLmluZGV4O0dlKCk7Y29uc3QgbT1RaSgzNyk7U2UoMyksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLG0pKCJuZ1RlbXBsYXRl''@;'; put 'put ''T3V0bGV0Q29udGV4dCIsbkMoMixpRXQsZixkLGgpKX19ZnVuY3Rpb24gYUV0KGwsYyl7MSZsJiZlcygwKX1jb25zdCBsRXQ9ZnVuY3Rpb24obCxjLGEsZil7cmV0dXJue3F1ZXJ5OmwscXVlcnlJbmRleDpjLGNsYXVzZUluZGV4OmEsaXNEYXRlVGltZTpmfX07ZnVuY3Rpb24gc0V0KGwsYyl7''@;'; put 'put ''aWYoMSZsJiYoeWUoMCwiZGl2Iiw1NCksdHQoMSxhRXQsMSwwLCJuZy1jb250YWluZXIiLDUzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS5uZ1ZhcixmPUdlKCksZD1mLiRpbXBsaWNpdCxoPWYuaW5kZXgsbT1HZSgpLmluZGV4LF89R2UoKSxPPVFpKDMxKSxYPVFpKDMzKTtTZSgxKSxSZSgi''@;'; put 'put ''bmdUZW1wbGF0ZU91dGxldCIsYSYmXy51c2VQaWNrZXJzP086WCkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixNTygyLGxFdCxkLGgsbSxhKSl9fWZ1bmN0aW9uIHVFdChsLGMpezEmbCYmZXMoMCl9ZnVuY3Rpb24gY0V0KGwsYyl7MSZsJiZlcygwKX1jb25zdCBmRXQ9ZnVuY3Rpb24obCxj''@;'; put 'put ''LGEsZil7cmV0dXJue3JhbmdlOiJzdGFydCIscXVlcnk6bCxxdWVyeVZhbHVlSW5kZXg6MCxxdWVyeUluZGV4OmMsY2xhdXNlSW5kZXg6YSxpc0RhdGVUaW1lOmZ9fSxkRXQ9ZnVuY3Rpb24obCxjLGEsZil7cmV0dXJue3JhbmdlOiJlbmQiLHF1ZXJ5OmwscXVlcnlWYWx1ZUluZGV4OjEscXVl''@;'; put 'put ''cnlJbmRleDpjLGNsYXVzZUluZGV4OmEsaXNEYXRlVGltZTpmfX07ZnVuY3Rpb24gaEV0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw1NSkoMSwiZGl2Iiw1NiksdHQoMix1RXQsMSwwLCJuZy1jb250YWluZXIiLDUzKSxDZSgpLHllKDMsImRpdiIsNTcpLHR0KDQsY0V0LDEsMCwibmctY29u''@;'; put 'put ''dGFpbmVyIiw1MyksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKS5uZ1ZhcixmPUdlKCksZD1mLiRpbXBsaWNpdCxoPWYuaW5kZXgsbT1HZSgpLmluZGV4LF89R2UoKSxPPVFpKDMxKSxYPVFpKDM1KTtTZSgyKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsYSYmXy51c2VQaWNrZXJzP086WCkoIm5n''@;'; put 'put ''VGVtcGxhdGVPdXRsZXRDb250ZXh0IixNTyg0LGZFdCxkLGgsbSxhKSksU2UoMiksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGEmJl8udXNlUGlja2Vycz9POlgpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsTU8oOSxkRXQsZCxoLG0sYSkpfX1mdW5jdGlvbiBwRXQobCxjKXtpZigxJmwpe2Nv''@;'; put 'put ''bnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDU4KSgxLCJsYWJlbCIsMyksWWUoMiwiVmFsdWUiKSxDZSgpLHllKDMsImlucHV0Iiw1OSksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgyKS4kaW1wbGljaXQudmFsdWU9ZCl9KSgibmdNb2RlbENoYW5nZSIs''@;'; put 'put ''ZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1HZSgyKS5pbmRleCxtPUdlKCkuaW5kZXg7cmV0dXJuIFp0KEdlKCkuc2V0VmFyaWFibGVWYWx1ZXMoZCxoLG0pKX0pLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoMikuJGltcGxpY2l0O1NlKDMpLFJlKCJuZ01vZGVsIixhLnZhbHVlKX19ZnVu''@;'; put 'put ''Y3Rpb24gbUV0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw0NiksdHQoMSxvRXQsNCw2LCJkaXYiLDQ3KSx0dCgyLHNFdCwyLDcsImRpdiIsNDgpLHR0KDMsaEV0LDUsMTQsImRpdiIsNDkpLHR0KDQscEV0LDQsMSwiZGl2Iiw1MCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0''@;'; put 'put ''O1NlKDEpLFJlKCJuZ0lmIiwiSU4iPT09YS5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1hLm9wZXJhdG9yKSxTZSgxKSxSZSgibmdJZiIsIkJFVFdFRU4iIT09YS5vcGVyYXRvciYmIklOIiE9PWEub3BlcmF0b3ImJiJOT1QgSU4iIT09YS5vcGVyYXRvciYmIkxJS0UiIT09YS5vcGVyYXRvciYmIkNP''@;'; put 'put ''TlRBSU5TIiE9PWEub3BlcmF0b3ImJiJCRUdJTlNfV0lUSCIhPT1hLm9wZXJhdG9yKSxTZSgxKSxSZSgibmdJZiIsIkJFVFdFRU4iPT09YS5vcGVyYXRvciksU2UoMSksUmUoIm5nSWYiLCJMSUtFIj09PWEub3BlcmF0b3J8fCJCRUdJTlNfV0lUSCI9PT1hLm9wZXJhdG9yfHwiQ09OVEFJTlMi''@;'; put 'put ''PT09YS5vcGVyYXRvcil9fWZ1bmN0aW9uIGdFdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsNikoMSwiZGl2IiwzNSkoMiwiZGl2IiwzNikoMywiYXBwLXNvZnQtc2VsZWN0IiwzNyksRXQoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gWnQoVXQoYSkuJGlt''@;'; put 'put ''cGxpY2l0LnZhcmlhYmxlPWQpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oZCl7Y29uc3QgaD1VdChhKSxtPWguJGltcGxpY2l0LF89aC5pbmRleCxPPUdlKCkuaW5kZXg7cmV0dXJuIFp0KEdlKCkudmFyaWFibGVJbnB1dENoYW5nZShtLnZhcmlhYmxlLF8sTyxkKSl9KSx0dCg0LHRFdCwy''@;'; put 'put ''LDEsIm9wdGlvbiIsMzgpLENlKCkoKSgpLHllKDUsImRpdiIsMzkpKDYsImNsci1zZWxlY3QtY29udGFpbmVyIikoNywibGFiZWwiKSxZZSg4LCJPcGVyYXRvciIpLENlKCkseWUoOSwic2VsZWN0Iiw0MCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBadChVdChhKS4k''@;'; put 'put ''aW1wbGljaXQub3BlcmF0b3I9ZCl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtjb25zdCBkPVV0KGEpLGg9ZC5pbmRleCxtPWQuJGltcGxpY2l0LF89R2UoKS5pbmRleDtyZXR1cm4gWnQoR2UoKS5zZXRWYXJpYWJsZU9wZXJhdG9yKGgsbS5vcGVyYXRvcixfKSl9KSx0dCgxMCxuRXQs''@;'; put 'put ''MiwxLCJvcHRpb24iLDM4KSxDZSgpKCkoKSx0dCgxMSxtRXQsNSw0LCJkaXYiLDQxKSx5ZSgxMiwiZGl2Iiw0MikoMTMsImJ1dHRvbiIsNDMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLmluZGV4LG09R2UoKS5pbmRleDtyZXR1cm4gWnQoR2UoKS5yZW1vdmVDbGF1c2Uo''@;'; put 'put ''aCxtKSl9KSx0bigxNCwiY2xyLWljb24iLDQ0KSgxNSwic3BhbiIpLENlKCkseWUoMTYsImJ1dHRvbiIsNDUpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCkuaW5kZXg7cmV0dXJuIFp0KEdlKCkuYWRkQ2xhdXNlKGQpKX0pLHRuKDE3LCJjbHItaWNvbiIsMzMpKDE4''@;'; put 'put ''LCJzcGFuIiksQ2UoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleCxkPUdlKCkuaW5kZXgsaD1HZSgpO2dyKCJpbnZhbGlkLWNsYXVzZSIsYS5pbnZhbGlkQ2xhdXNlKSxTZSgzKSxSZSgiaWQiLCJzZWxlY3RfdmFsc192YXJfaWQiK2YrIl8iK2QpKCJpbnB1dElk''@;'; put 'put ''IiwidmFsc192YXJfaWQiK2YrIl8iK2QpKCJlbWl0T25seVNlbGVjdGVkIiwhMCkoInZhbHVlIixhLnZhcmlhYmxlKSxTZSgxKSxSZSgibmdGb3JPZiIsaC5jb2xzKSxTZSg1KSxSZSgibmdNb2RlbCIsYS5vcGVyYXRvciksU2UoMSksUmUoIm5nRm9yT2YiLGEub3BlcmF0b3JzKSxTZSgxKSxS''@;'; put 'put ''ZSgibmdWYXIiLCJEQVRFIj09PWEuZGR0eXBlfHwiREFURVRJTUUiPT09YS5kZHR5cGV8fCJUSU1FIj09PWEuZGR0eXBlKSxTZSgyKSxSZSgiZGlzYWJsZWQiLDE9PT1oLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHMubGVuZ3RoKX19ZnVuY3Rpb24gdkV0KGwsYyl7aWYoMSZsKXtjb25z''@;'; put 'put ''dCBhPVpuKCk7eWUoMCwiZGl2IiwyNCkoMSwiZGl2Iiw2KSgyLCJkaXYiLDI1KSgzLCJkaXYiLDI2KSg0LCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDUsImxhYmVsIiksWWUoNiwiTG9naWMiKSxDZSgpLHllKDcsInNlbGVjdCIsMjcpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXty''@;'; put 'put ''ZXR1cm4gWnQoVXQoYSkuJGltcGxpY2l0LmNsYXVzZUxvZ2ljPWQpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuc2V0TG9naWMoKSl9KSx0dCg4LEprdCwyLDIsIm9wdGlvbiIsOSksQ2UoKSgpKCksdG4oOSwiYnIiKSx0dCgxMCxRa3QsNCwwLCJi''@;'; put 'put ''dXR0b24iLDI4KSxDZSgpLHllKDExLCJkaXYiLDI5KSx0dCgxMixlRXQsMSwwLCJjbHItaWNvbiIsMzApLHR0KDEzLGdFdCwxOSwxMSwiZGl2IiwzMSksQ2UoKSgpLHRuKDE0LCJiciIpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9R2UoKTtTZSgxKSxncigiaW52YWxpZC1j''@;'; put 'put ''bGF1c2UiLGEuaW52YWxpZENsYXVzZSksU2UoNiksUmUoIm5nTW9kZWwiLGEuY2xhdXNlTG9naWMpKCJkaXNhYmxlZCIsYS5lbGVtZW50cy5sZW5ndGg8MiksU2UoMSksUmUoIm5nRm9yT2YiLGYubG9naWNPcGVyYXRvcnMpLFNlKDIpLFJlKCJuZ0lmIixmLmlubmVyV2lkdGg+NzY4KSxTZSgy''@;'; put 'put ''KSxSZSgibmdJZiIsZi5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD4xKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5lbGVtZW50cyl9fWZ1bmN0aW9uIHlFdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEsImFwcC1zb2Z0LXNlbGVjdCIsNjIpLEV0KCJ2YWx1ZUNoYW5nZSIsZnVu''@;'; put 'put ''Y3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1HZSgpLG09aC5xdWVyeSxfPWgucXVlcnlJbmRleCxPPWguY2xhdXNlSW5kZXgsWD1oLnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gWnQoR2UoKS5kYXRlQ2hhbmdlKGQsbSxfLE8sWCkpfSksd2woMiwic2FzVG9Kc0RhdGUiKSx3bCgzLCJzYXNUb0pzRGF0''@;'; put 'put ''ZSIpLENlKCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKSxmPWEucXVlcnlJbmRleCxkPWEuY2xhdXNlSW5kZXgsaD1hLnF1ZXJ5VmFsdWVJbmRleCxtPWEucXVlcnk7U2UoMSksUmUoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX2RhdGUiK2YrIl8iK2QpKCJ2YWx1''@;'; put 'put ''ZSIsdm9pZCAwIT09aD9KcygyLDMsbS52YWx1ZVtoXSk6SnMoMyw1LG0udmFsdWUpKX19ZnVuY3Rpb24gYkV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiYXBwLXNvZnQtc2VsZWN0Iiw2MyksRXQoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBo''@;'; put 'put ''PUdlKCksbT1oLmNsYXVzZUluZGV4LF89aC5xdWVyeUluZGV4O3JldHVybiBadChHZSgpLmdldFF1ZXJ5RGF0ZVRpbWUobSxfKS5kYXRlPWQpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCksaD1kLnF1ZXJ5LG09ZC5xdWVyeUluZGV4LF89ZC5jbGF1c2VJ''@;'; put 'put ''bmRleCxPPWQucXVlcnlWYWx1ZUluZGV4O3JldHVybiBadChHZSgpLmRhdGVUaW1lQ2hhbmdlKGgsbSxfLE8pKX0pLHdsKDIsInNhc1RvSnNEYXRlIiksd2woMywic2FzVG9Kc0RhdGUiKSxDZSgpLHllKDQsImFwcC1zb2Z0LXNlbGVjdCIsNjQpLEV0KCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''ZCl7VXQoYSk7Y29uc3QgaD1HZSgpLG09aC5jbGF1c2VJbmRleCxfPWgucXVlcnlJbmRleDtyZXR1cm4gWnQoR2UoKS5nZXRRdWVyeURhdGVUaW1lKG0sXykudGltZT1kKX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLGg9ZC5xdWVyeSxtPWQucXVlcnlJ''@;'; put 'put ''bmRleCxfPWQuY2xhdXNlSW5kZXgsTz1kLnF1ZXJ5VmFsdWVJbmRleDtyZXR1cm4gWnQoR2UoKS5kYXRlVGltZUNoYW5nZShoLG0sXyxPKSl9KSx3bCg1LCJzYXNUb0pzRGF0ZSIpLHdsKDYsInNhc1RvSnNEYXRlIiksQ2UoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgpLGY9YS5xdWVyeUlu''@;'; put 'put ''ZGV4LGQ9YS5jbGF1c2VJbmRleCxoPWEucXVlcnlWYWx1ZUluZGV4LG09YS5xdWVyeTtTZSgxKSxSZSgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfZGF0ZSIrZisiXyIrZCkoInZhbHVlIix2b2lkIDAhPT1oP3dnKDIsNixtLnZhbHVlW2hdLCJzZWNvbmRzIik6d2co''@;'; put 'put ''Myw5LG0udmFsdWUsInNlY29uZHMiKSksU2UoMyksUmUoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQiLCJ2YWxzX3RpbWUiK2YrIl8iK2QpKCJ2YWx1ZSIsdm9pZCAwIT09aD9fQig1LDEyLG0udmFsdWVbaF0sInNlY29uZHMiLCEwKTpfQig2LDE2LG0udmFsdWUsInNlY29uZHMi''@;'; put 'put ''LCEwKSl9fWZ1bmN0aW9uIF9FdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEsImFwcC1zb2Z0LXNlbGVjdCIsNjUpLEV0KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKSxtPWgucXVlcnksXz1oLnF1ZXJ5SW5kZXgsTz1oLmNsYXVzZUlu''@;'; put 'put ''ZGV4LFg9aC5xdWVyeVZhbHVlSW5kZXg7cmV0dXJuIFp0KEdlKCkudGltZUNoYW5nZShkLG0sXyxPLFgpKX0pLHdsKDIsInNlY29uZHNQYXJzZXIiKSx3bCgzLCJzZWNvbmRzUGFyc2VyIiksQ2UoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgpLGY9YS5xdWVyeUluZGV4LGQ9YS5jbGF1c2VJ''@;'; put 'put ''bmRleCxoPWEucXVlcnlWYWx1ZUluZGV4LG09YS5xdWVyeTtTZSgxKSxSZSgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfIitmKyJfIitkKSgidmFsdWUiLHZvaWQgMCE9PWg/SnMoMiwzLG0udmFsdWVbaF0pOkpzKDMsNSxtLnZhbHVlKSl9fWZ1bmN0aW9uIHdFdChs''@;'; put 'put ''LGMpezEmbCYmKFdyKDAsNjApLHR0KDEseUV0LDQsNywibmctY29udGFpbmVyIiw2MSksdHQoMixiRXQsNywyMCwibmctY29udGFpbmVyIiw2MSksdHQoMyxfRXQsNCw3LCJuZy1jb250YWluZXIiLDYxKSxHcigpKSwyJmwmJihSZSgibmdTd2l0Y2giLGMucXVlcnkuZGR0eXBlKSxTZSgxKSxS''@;'; put 'put ''ZSgibmdTd2l0Y2hDYXNlIiwiREFURSIpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCJEQVRFVElNRSIpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCJUSU1FIikpfWZ1bmN0aW9uIENFdChsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsNjgpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1j''@;'; put 'put ''LiRpbXBsaWNpdDtSZSgidmFsdWUiLGEudW5mb3JtYXR0ZWQpLFNlKDEpLHdyKCIgIixhLmZvcm1hdHRlZC50cmltKCksIiAiKX19ZnVuY3Rpb24gU0V0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYXBwLXNvZnQtc2VsZWN0Iiw2NiksRXQoInZhbHVlQ2hhbmdlIixmdW5jdGlv''@;'; put 'put ''bihkKXtyZXR1cm4gWnQoVXQoYSkucXVlcnkudmFsdWU9ZCl9KSgib25JbnB1dEV2ZW50IixmdW5jdGlvbihkKXtjb25zdCBoPVV0KGEpLG09aC5xdWVyeUluZGV4LF89aC5jbGF1c2VJbmRleDtyZXR1cm4gWnQoR2UoKS5zZXRWYXJpYWJsZVZhbHVlcyhkLnRhcmdldC52YWx1ZSxtLF8pKX0p''@;'; put 'put ''KCJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIixmdW5jdGlvbihkKXtjb25zdCBoPVV0KGEpLG09aC5xdWVyeSxfPWgucXVlcnlJbmRleCxPPWguY2xhdXNlSW5kZXg7cmV0dXJuIFp0KEdlKCkub25BdXRvY29tcGxldGVMb2FkaW5nTW9yZShkLG0udmFyaWFibGUsXyxPKSl9KSx0dCgxLENF''@;'; put 'put ''dCwyLDIsIm9wdGlvbiIsNjcpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMucXVlcnk7UmUoImlucHV0SWQiLCJ2YWxzXyIrYy5xdWVyeUluZGV4KyJfIitjLmNsYXVzZUluZGV4KSgidmFsdWUiLGEudmFsdWUpKCJlbmFibGVMb2FkTW9yZSIsYS5ub2JzPmEudmFsdWVzLmxlbmd0aCksU2UoMSks''@;'; put 'put ''UmUoIm5nRm9yT2YiLGEudmFsdWVzKX19ZnVuY3Rpb24gTUV0KGwsYyl7aWYoMSZsJiYoeWUoMCwib3B0aW9uIiw2OCksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJ2YWx1ZSIsYS5mb3JtYXR0ZWQpLFNlKDEpLHdyKCIgIixhLmZvcm1hdHRlZCwiICIpfX1mdW5j''@;'; put 'put ''dGlvbiBrRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJhcHAtc29mdC1zZWxlY3QiLDY5KSxFdCgidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGQpe2NvbnN0IGg9VXQoYSk7cmV0dXJuIFp0KGgucXVlcnkudmFsdWVbaC5xdWVyeVZhbHVlSW5kZXhdPWQpfSkoIm9uSW5wdXRFdmVu''@;'; put 'put ''dCIsZnVuY3Rpb24oKXtjb25zdCBkPVV0KGEpLGg9ZC5xdWVyeSxtPWQucXVlcnlJbmRleCxfPWQuY2xhdXNlSW5kZXg7cmV0dXJuIFp0KEdlKCkuc2V0VmFyaWFibGVWYWx1ZXMoaC52YWx1ZSxtLF8pKX0pKCJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIixmdW5jdGlvbihkKXtjb25zdCBo''@;'; put 'put ''PVV0KGEpLG09aC5xdWVyeSxfPWgucXVlcnlJbmRleCxPPWguY2xhdXNlSW5kZXg7cmV0dXJuIFp0KEdlKCkub25BdXRvY29tcGxldGVMb2FkaW5nTW9yZShkLG0udmFyaWFibGUsXyxPKSl9KSx0dCgxLE1FdCwyLDIsIm9wdGlvbiIsNjcpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMucmFuZ2Us''@;'; put 'put ''Zj1jLnF1ZXJ5LGQ9Yy5xdWVyeVZhbHVlSW5kZXg7UmUoImlucHV0SWQiLCJ2YWxzLSIrYSsiXyIrYy5xdWVyeUluZGV4KyJfIitjLmNsYXVzZUluZGV4KSgidmFsdWUiLGYudmFsdWVbZF0pKCJlbmFibGVMb2FkTW9yZSIsZi5ub2JzPmYudmFsdWVzLmxlbmd0aCkoImRpc2FibGVkIix2b2lk''@;'; put 'put ''IDAhPT1kJiYic3RhcnQiIT09YSYmIWYudmFsdWVbMF0pLFNlKDEpLFJlKCJuZ0Zvck9mIixmLnZhbHVlcyl9fWZ1bmN0aW9uIEVFdChsLGMpezEmbCYmKHllKDAsImg1Iiw3NyksWWUoMSwiIE5vIHZhbHVlcyBhdmFpbGFibGUuICIpLENlKCkpfWZ1bmN0aW9uIHhFdChsLGMpe2lmKDEmbCl7''@;'; put 'put ''Y29uc3QgYT1abigpO3llKDAsImNsci1jaGVja2JveC13cmFwcGVyIikoMSwiaW5wdXQiLDc5KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7Y29uc3QgbT1VdChhKS5pbmRleDtyZXR1cm4gWnQoR2UoMikucXVlcnkudmFsdWVbbV0uY2hlY2tlZD1kKX0pKCJuZ01vZGVsQ2hhbmdl''@;'; put 'put ''IixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDIpLG09aC5xdWVyeUluZGV4LF89aC5jbGF1c2VJbmRleDtyZXR1cm4gWnQoR2UoKS5zZXRWYXJpYWJsZVZhbHVlcyhkLG0sXykpfSksQ2UoKSx5ZSgyLCJsYWJlbCIpLFllKDMpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGlj''@;'; put 'put ''aXQsZj1jLmluZGV4LGQ9R2UoMikucXVlcnk7U2UoMSksUmUoIm5nTW9kZWwiLGQudmFsdWVbZl0uY2hlY2tlZCksU2UoMiksd3IoIiAiLGEuZm9ybWF0dGVkLCIgIil9fWZ1bmN0aW9uIEFFdChsLGMpe2lmKDEmbCYmKHllKDAsInNlY3Rpb24iLDc4KSgxLCJjbHItY2hlY2tib3gtY29udGFp''@;'; put 'put ''bmVyIiksdHQoMix4RXQsNCwyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsMzgpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCkucXVlcnk7U2UoMiksUmUoIm5nRm9yT2YiLGEudmFsdWVzKX19ZnVuY3Rpb24gVEV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLW1vZGFsIiw3''@;'; put 'put ''MCkoMSwiaDMiLDcxKSxZZSgyLCJTZWxlY3QgdmFsdWVzIiksQ2UoKSx5ZSgzLCJkaXYiLDcyKSx0dCg0LEVFdCwyLDAsImg1Iiw3MyksdHQoNSxBRXQsMywxLCJzZWN0aW9uIiw3NCksQ2UoKSx5ZSg2LCJkaXYiLDc1KSg3LCJidXR0b24iLDc2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQo''@;'; put 'put ''YSk7Y29uc3QgZD1HZSgpO3JldHVybiBkLmN1cnJlbnRRdWVyeUluZGV4PS0xLFp0KGQuY3VycmVudENsYXVzZUluZGV4PS0xKX0pLFllKDgsIiBBcHBseSAiKSxDZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy5xdWVyeSxmPWMucXVlcnlJbmRleCxkPWMuY2xhdXNlSW5kZXgsaD1HZSgpO1Jl''@;'; put 'put ''KCJjbHJNb2RhbE9wZW4iLGguY3VycmVudFF1ZXJ5SW5kZXg9PT1mJiZoLmN1cnJlbnRDbGF1c2VJbmRleD09PWQpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoNCksUmUoIm5nSWYiLCFoLmlzQXJyKGEudmFsdWUpKSxTZSgxKSxSZSgibmdJZiIsaC5pc0FycihhLnZhbHVlKSl9fSFmdW5j''@;'; put 'put ''dGlvbiBxOWUobCxjLGEpeyhmdW5jdGlvbiB3TyhsLGMsYSl7InN0cmluZyIhPXR5cGVvZiBjJiYoYT1jLGM9bFtlYS5Mb2NhbGVJZF0pLGM9Yy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpLGRkW2NdPWwsYSYmKGRkW2NdW2VhLkV4dHJhRGF0YV09YSl9KShsLGMsYSl9KFBrdCk7''@;'; put 'put ''bGV0IEhKPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5zYXNTdG9yZVNlcnZpY2U9YSx0aGlzLmV2ZW50U2VydmljZT1mLHRoaXMuaGVscGVyU2VydmljZT1kLHRoaXMuY2RmPWgsdGhpcy5jYWNoaW5nPSEwLHRoaXMucm93c19pbmNyZW1lbnQ9MTAwLHRoaXMuaW5p''@;'; put 'put ''dGlhbF9yb3dzPTFlMyx0aGlzLmNsYXVzZUFtdD1bIiJdLHRoaXMubnVtT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkJFVFdFRU4iLCJJTiIsIk5PVCBJTiIsIk5FIl0sdGhpcy5jaGFyT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkNPTlRBSU5TIiwiSU4iLCJO''@;'; put 'put ''T1QgSU4iLCJORSJdLHRoaXMubm90SW49ITEsdGhpcy5ub3RBcnI9ITAsdGhpcy53YXNCZXR3ZWVuPSExLHRoaXMud2hlcmVDbGF1c2VMb2FkaW5nPSExLHRoaXMuZHluYW1pY1doZXJlQ2xhdXNlPSEwLHRoaXMudXNlUGlja2Vycz0hMSx0aGlzLnF1ZXJ5T2JqPXtlbGVtZW50czpbe2xvZ2lj''@;'; put 'put ''Om51bGwsdHlwZTpudWxsLGRkdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHN0YXJ0cm93OjAscm93czowLG5vYnM6MCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV0sY2xhdXNlTG9naWM6IiIsaW52YWxpZENsYXVzZTohMX0sdGhpcy5zZWxWYXI9e2lu''@;'; put 'put ''ZGV4Om51bGwsZm9ybWF0Om51bGwsdHlwZTpudWxsfSx0aGlzLmluT2JqPVt7Y2hlY2tlZDohMSx2YWx1ZTpudWxsfV0sdGhpcy5ncm91cExvZ2ljPSJBTkQiLHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6W3RoaXMucXVlcnlPYmpdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91''@;'; put 'put ''cExvZ2ljfSx0aGlzLmxvZ2ljT3BlcmF0b3JzPVsiQU5EIiwiT1IiXSx0aGlzLnF1ZXJ5RGF0ZVRpbWU9W10sdGhpcy5jdXJyZW50Q2xhdXNlSW5kZXg9LTEsdGhpcy5jdXJyZW50UXVlcnlJbmRleD0tMSx0aGlzLnBlbmRpbmdJTlZhbHVlc1NldD1udWxsLHRoaXMuaW5uZXJXaWR0aD13aW5k''@;'; put 'put ''b3cuc2NyZWVuLndpZHRoLHRoaXMuaW5uZXJXaWR0aD43NjgmJih0aGlzLm5vQm9yZGVyPSJib3JkZXItbGVmdDogMnB4IHNvbGlkIGdyYXk7Iil9Z2V0UXVlcnlEYXRlVGltZShhLGYpe2xldCBkPXRoaXMucXVlcnlEYXRlVGltZS5maW5kKGg9PmguY2xhdXNlSW5kZXg9PT1hJiZoLnF1ZXJ5''@;'; put 'put ''SW5kZXg9PT1mKTtpZighZCl7Y29uc3QgaD10aGlzLnF1ZXJ5RGF0ZVRpbWUucHVzaCh7Y2xhdXNlSW5kZXg6YSxxdWVyeUluZGV4OmYsZGF0ZToiIix0aW1lOiIifSktMTtkPXRoaXMucXVlcnlEYXRlVGltZVtoXX1yZXR1cm4gZH11c2VQaWNrZXJzQ2hhbmdlKCl7dGhpcy5xdWVyeURhdGVU''@;'; put 'put ''aW1lPVtdfXJlc2V0RmlsdGVyKCl7dGhpcy53aGVyZVN0cmluZz12b2lkIDAsdGhpcy53aGVyZUNsYXVzZT12b2lkIDAsdGhpcy5xdWVyeU9iaj17ZWxlbWVudHM6W3tsb2dpYzpudWxsLHR5cGU6bnVsbCxkZHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJhdG9yOm51bGwsdmFsdWU6bnVs''@;'; put 'put ''bCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfV19LHRoaXMuY2xhdXNlcz17cXVlcnlPYmo6W3RoaXMucXVlcnlPYmpdLGNsYXVzZUxvZ2ljOltdLGdyb3VwTG9naWM6dGhpcy5ncm91cExvZ2ljfSx0aGlzLndoZXJlQ2xhdXNlRm4oITApfXNldFRvR2xvYmFscygpe2lmKCF0aGlzLmNhY2hpbmcp''@;'; put 'put ''cmV0dXJuO2xldCBhPSIiOyJob21lIj09PUpuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Kbi5yb290UGFyYW0/YT10aGlzLnZpZXdib3hJZD9gdmlld2JveGVzLiR7dGhpcy52aWV3Ym94SWR9YDoiZWRpdG9yIjoidmlldyI9PT1Kbi5yb290UGFyYW0mJihhPSJ2aWV3ZXIiKSxvcyhKbixhKS5m''@;'; put 'put ''aWx0ZXIuZ3JvdXBMb2dpYz10aGlzLmdyb3VwTG9naWMsInN0cmluZyI9PXR5cGVvZiB0aGlzLndoZXJlQ2xhdXNlJiYob3MoSm4sYSkuZmlsdGVyLndoZXJlQ2xhdXNlPXRoaXMud2hlcmVDbGF1c2UpLCJzdHJpbmciPT10eXBlb2YgdGhpcy5saWJkcyYmKG9zKEpuLGEpLmZpbHRlci5saWJk''@;'; put 'put ''cz10aGlzLmxpYmRzKSxvcyhKbixhKS5maWx0ZXIuY2xhdXNlcz10aGlzLmNsYXVzZXMsY29uc29sZS5sb2coImdsb2JhbHMiLEpuKX1nZXRGcm9tR2xvYmFscygpe2lmKCF0aGlzLmNhY2hpbmcpcmV0dXJuO2xldCBhPSIiOyJob21lIj09PUpuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Kbi5y''@;'; put 'put ''b290UGFyYW0/YT10aGlzLnZpZXdib3hJZD9gdmlld2JveGVzLiR7dGhpcy52aWV3Ym94SWR9YDoiZWRpdG9yIjoidmlldyI9PT1Kbi5yb290UGFyYW0mJihhPSJ2aWV3ZXIiKSxvcyhKbixhKS5maWx0ZXIuY29scy5sZW5ndGg+MCYmKHRoaXMuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5n''@;'; put 'put ''aWZ5KG9zKEpuLGEpLmZpbHRlci5jb2xzKSkpLG9zKEpuLGEpLmZpbHRlci52YWxzLmxlbmd0aD4wJiYodGhpcy52YWxzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3MoSm4sYSkuZmlsdGVyLnZhbHMpKSksIiIhPT1vcyhKbixhKS5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBM''@;'; put 'put ''b2dpYz1vcyhKbixhKS5maWx0ZXIuZ3JvdXBMb2dpYyx0aGlzLndoZXJlQ2xhdXNlPW9zKEpuLGEpLmZpbHRlci53aGVyZUNsYXVzZSx0aGlzLmxpYmRzPW9zKEpuLGEpLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9b3MoSm4sYSkuZmlsdGVyLmNsYXVzZXMsdGhpcy53aGVyZUNsYXVzZUZu''@;'; put 'put ''KCkpfXNldEdyb3VwTG9naWMoYSl7dGhpcy5ncm91cExvZ2ljPWEsdGhpcy5jbGF1c2VzLmdyb3VwTG9naWM9YSx0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfWRhdGVDaGFuZ2UoYSxmLGQsaCxtKXtsZXQgXz10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0''@;'; put 'put ''ZVRvU2FzRGF0ZShhKTsiQkVUV0VFTiI9PT1mLm9wZXJhdG9yJiZ2b2lkIDAhPT1tJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2RdLnZhbHVlW21dPV8pLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXMoXyxkLGgpfWRhdGVUaW1lQ2hhbmdlKGEsZixkLGgpe2NvbnN0IG09dGhp''@;'; put 'put ''cy5nZXRRdWVyeURhdGVUaW1lKGQsZik7aWYoIiI9PT1tLmRhdGUpe2lmKCIiPT09YS52YWx1ZSlyZXR1cm47bS5kYXRlPWEudmFsdWUuc3BsaXQoIjoiKVswXX1jb25zdCBfPXBhcnNlSW50KG0udGltZS5zcGxpdCgiOiIpWzBdKSxPPXBhcnNlSW50KG0udGltZS5zcGxpdCgiOiIpWzFdKSxY''@;'; put 'put ''PXBhcnNlSW50KG0udGltZS5zcGxpdCgiOiIpWzJdKXx8MDtsZXQgYWU9bmV3IERhdGUobS5kYXRlKSxwZT1uZXcgRGF0ZShhZS5nZXRGdWxsWWVhcigpLGFlLmdldE1vbnRoKCksYWUuZ2V0RGF0ZSgpLF8sTyxYKSxiZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0''@;'; put 'put ''ZShwZSwic2Vjb25kcyIpOyJCRVRXRUVOIj09PWEub3BlcmF0b3ImJnZvaWQgMCE9PWgmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0udmFsdWVbaF09YmUpLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXMoYmUsZixkKX10aW1lQ2hhbmdlKGEsZixkLGgsbSl7YT1hLnRhcmdl''@;'; put 'put ''dC52YWx1ZTtsZXQgYmU9NjAqcGFyc2VJbnQoYS5zcGxpdCgiOiIpWzBdKSo2MCs2MCpwYXJzZUludChhLnNwbGl0KCI6IilbMV0pKyhwYXJzZUludChhLnNwbGl0KCI6IilbMl0pfHwwKTsiQkVUV0VFTiI9PT1mLm9wZXJhdG9yJiZ2b2lkIDAhPT1tJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2Jq''@;'; put 'put ''W2hdLmVsZW1lbnRzW2RdLnZhbHVlW21dPWJlKSx0aGlzLnNldFZhcmlhYmxlVmFsdWVzKGJlLGQsaCl9ZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihhLGYpe2xldCBkPVtdO2lmKHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1l''@;'; put 'put ''bnRzLmxlbmd0aD4xKWZvcihsZXQgaD0wO2g8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aDtoKyspZm9yKGxldCBtPTA7bTx0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHMubGVuZ3RoO20rKyl7aWYoaD09PWEmJm09PT1mfHxbbnVsbCx2b2lkIDBdLmluY2x1ZGVzKHRoaXMu''@;'; put 'put ''Y2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1ttXS52YXJpYWJsZSl8fFtudWxsLHZvaWQgMF0uaW5jbHVkZXModGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLm9wZXJhdG9yKXx8W251bGwsdm9pZCAwXS5pbmNsdWRlcyh0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxl''@;'; put 'put ''bWVudHNbbV0udmFsdWUpKWNvbnRpbnVlO2xldCBfPSIiO2NvbnN0IE89dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLm9wZXJhdG9yLFg9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLnZhcmlhYmxlOyJCRVRXRUVOIj09PU8/Xz1gJHt0aGlzLmNsYXVz''@;'; put 'put ''ZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbbV0udmFsdWVbMF19IEFORCAke3RoaXMuY2xhdXNlcy5xdWVyeU9ialtoXVttXS52YWx1ZVsxXX1gOiJJTiI9PT1PfHwiTk9UIElOIj09PU8/KHRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXVttXS52YWx1ZS5mb3JFYWNoKGFlPT57aWYoYWUuY2hlY2tl''@;'; put 'put ''ZCl7bGV0IHBlPWFlLnZhbDsic3RyaW5nIiE9dHlwZW9mIHBlfHwoMCx1My5pc1NwZWNpYWxNaXNzaW5nKShwZSk/Xy5sZW5ndGg+MD9fKz1gLCR7cGV9YDpfPWAoJHtwZX1gOl8ubGVuZ3RoPjA/Xys9YCwnJHtwZX0nYDpfPWAoJyR7cGV9J2B9fSksXy5sZW5ndGg+MCYmKF8rPSIpIikpOiIi''@;'; put 'put ''PT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLnZhbHVlP189ImNoYXIiPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLnR5cGU/IicgJyI6Ii4iOiJjaGFyIj09PXRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1ttXS50eXBlJiYoXz1g''@;'; put 'put ''JyR7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW21dLnZhbHVlfSdgKSxkLnB1c2goe0dST1VQX0xPR0lDOnRoaXMuY2xhdXNlcy5ncm91cExvZ2ljLFNVQkdST1VQX0xPR0lDOnRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5jbGF1c2VMb2dpY3x8IkFORCIsU1VCR1JPVVBfSUQ6''@;'; put 'put ''aCxWQVJJQUJMRV9OTTpYLE9QRVJBVE9SX05NOk8sUkFXX1ZBTFVFOl98fHRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1ttXS52YWx1ZX0pfXJldHVybiBkfWdldFZhbHVlc0xvYWRNb3JlKGEsZixkLGgpe3ZhciBtPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2NvbnN0IF89''@;'; put 'put ''bS5saWJkc3x8IiI7dHJ5e2lmKHZvaWQgMCE9PW0uY29scyl7Zm9yKGxldCBaZT0wO1plPG0uY29scy5sZW5ndGg7WmUrKyltLmNvbHNbWmVdLk5BTUU9PT1mJiYobS5zZWxWYXIuaW5kZXg9WmUpO2NvbnN0IE89bS5jb2xzW20uc2VsVmFyLmluZGV4XS5ERFRZUEUse3N0YXJ0cm93Olgscm93''@;'; put 'put ''czphZX09bS5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2RdLHBlPW0ucm93c19pbmNyZW1lbnQsYmU9WCthZTtsZXQgeGU9W107bS5keW5hbWljV2hlcmVDbGF1c2UmJih4ZT1tLmR5bmFtaWNXaGVyZUNsYXVzZUNyZWF0b3IoaCxkKSk7Y29uc3QgVmU9WyJEQVRFVElNRSIsIlRJTUUi''@;'; put 'put ''LCJEQVRFIl0uaW5jbHVkZXMoTyk7bS5zYXNTdG9yZVNlcnZpY2UuZ2V0UXVlcnlWYWx1ZXMoZixfLHhlLGJlLHBlKS50aGVuKFplPT57Y29uc3QgbHQ9WmUudmFscyx7U1RBUlRST1c6ZHQsUk9XUzpndCxOT0JTOmp0fT1aZS5tZXRhWzBdO2lmKG0uY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVt''@;'; put 'put ''ZW50c1tkXS5zdGFydHJvdz1kdCxtLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ucm93cz1ndCxtLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ubm9icz1qdCwxPT09bHQubGVuZ3RoJiYiIj09PWx0WzBdLkZPUk1BVFRFRCYmIiI9PT1sdFswXS5VTkZPUk1BVFRFRD9h''@;'; put 'put ''LmxvYWRNb3JlRmluaXNoZWQoITEpOihtLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0udmFsdWVzLnB1c2goLi4ubHQubWFwKHluPT57Y29uc3QgUW49Im51bSI9PT1aZS4kdmFscy52YXJzLlVORk9STUFUVEVELnR5cGU7bGV0IFZyPVFuJiYoMCx1My5pc1NwZWNpYWxNaXNzaW5n''@;'; put 'put ''KSh5bi5VTkZPUk1BVFRFRCk/Ii4iK3luLlVORk9STUFUVEVEOnluLlVORk9STUFUVEVEO3JldHVybiBRbiYmbnVsbD09PVZyJiYoVnI9Ii4iKSx7Zm9ybWF0dGVkOlZlP3luLkZPUk1BVFRFRC5zcGxpdCgiLiIpWzBdOnluLkZPUk1BVFRFRCx1bmZvcm1hdHRlZDpWcn19KSksYS5sb2FkTW9y''@;'; put 'put ''ZUZpbmlzaGVkKGp0LW0uY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1tkXS52YWx1ZXMubGVuZ3RoPjApKSxtLndoZXJlQ2xhdXNlRm4oKSxtLnNldFRvR2xvYmFscygpLG0ud2hlcmVDbGF1c2VMb2FkaW5nPSExLG51bGwhPT1tLnBlbmRpbmdJTlZhbHVlc1NldCl7Y29uc3R7Y2xhdXNl''@;'; put 'put ''SW5kZXg6cm4scXVlcnlJbmRleDpYdH09bS5wZW5kaW5nSU5WYWx1ZXNTZXQ7bS5zZXRJTlZhbHVlcyhybixYdCksbS5wZW5kaW5nSU5WYWx1ZXNTZXQ9bnVsbH1tLmNkZi5kZXRlY3RDaGFuZ2VzKCl9KS5jYXRjaChaZT0+e20ud2hlcmVDbGF1c2VMb2FkaW5nPSExfSl9fWNhdGNoKE8pe20u''@;'; put 'put ''ZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigicHVibGljL2dldGNvbHZhbHMiLE8pfX0pKCl9Z2V0VmFsdWVzKGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtoLndoZXJlQ2xhdXNlTG9hZGluZz0hMDtsZXQgbT0iIjt2b2lkIDAhPT1oLmxpYmRzJiYobT1o''@;'; put 'put ''LmxpYmRzKSxoLmNsZWFyVmFsdWVzKGYsZCksaC5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2ZdLnZhbHVlcz1bXSxoLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0udmFsdWU9IiIsaC5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2ZdLm9wZXJhdG9yPSI9IixoLmNs''@;'; put 'put ''YXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0udmFyaWFibGU9YTt0cnl7aWYodm9pZCAwIT09aC5jb2xzKXtmb3IobGV0IGFlPTA7YWU8aC5jb2xzLmxlbmd0aDthZSsrKWguY29sc1thZV0uTkFNRT09PWEmJihoLnNlbFZhci5pbmRleD1hZSk7Y29uc3QgXz1oLmNvbHNbaC5zZWxWYXIu''@;'; put 'put ''aW5kZXhdLkREVFlQRTtoLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0uZGR0eXBlPV8saC5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2ZdLnR5cGU9aC5jb2xzW2guc2VsVmFyLmluZGV4XS5UWVBFLGguY2xhdXNlcy5xdWVyeU9ialtkXS5lbGVtZW50c1tmXS5vcGVyYXRv''@;'; put 'put ''cnM9Im51bSI9PT1oLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0udHlwZT9oLm51bU9wZXJhdG9yczpoLmNoYXJPcGVyYXRvcnM7bGV0IE89W107aC5keW5hbWljV2hlcmVDbGF1c2UmJihPPWguZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihkLGYpKTtjb25zdCBYPVsiREFURVRJ''@;'; put 'put ''TUUiLCJUSU1FIiwiREFURSJdLmluY2x1ZGVzKF8pO2guc2FzU3RvcmVTZXJ2aWNlLmdldFF1ZXJ5VmFsdWVzKGEsbSxPLDEsaC5pbml0aWFsX3Jvd3MpLnRoZW4oYWU9Pntjb25zdCBwZT1hZS52YWxzLHtTVEFSVFJPVzpiZSxST1dTOnhlLE5PQlM6VmV9PWFlLm1ldGFbMF07aWYoaC5jbGF1''@;'; put 'put ''c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2ZdLnN0YXJ0cm93PWJlLGguY2xhdXNlcy5xdWVyeU9ialtkXS5lbGVtZW50c1tmXS5yb3dzPXhlLGguY2xhdXNlcy5xdWVyeU9ialtkXS5lbGVtZW50c1tmXS5ub2JzPVZlLGguY2xhdXNlcy5xdWVyeU9ialtkXS5lbGVtZW50c1tmXS52YWx1ZXM9''@;'; put 'put ''cGUubWFwKFplPT57Y29uc3QgbHQ9Im51bSI9PT1hZS4kdmFscy52YXJzLlVORk9STUFUVEVELnR5cGU7bGV0IGd0PWx0JiYoMCx1My5pc1NwZWNpYWxNaXNzaW5nKShaZS5VTkZPUk1BVFRFRCk/Ii4iK1plLlVORk9STUFUVEVEOlplLlVORk9STUFUVEVEO3JldHVybiBsdCYmbnVsbD09PWd0''@;'; put 'put ''JiYoZ3Q9Ii4iKSx7Zm9ybWF0dGVkOlg/WmUuRk9STUFUVEVELnNwbGl0KCIuIilbMF06WmUuRk9STUFUVEVELHVuZm9ybWF0dGVkOmd0fX0pLnNsaWNlKDAsMmUzKSxoLndoZXJlQ2xhdXNlRm4oKSxoLnNldFRvR2xvYmFscygpLGgud2hlcmVDbGF1c2VMb2FkaW5nPSExLG51bGwhPT1oLnBl''@;'; put 'put ''bmRpbmdJTlZhbHVlc1NldCl7Y29uc3R7Y2xhdXNlSW5kZXg6WmUscXVlcnlJbmRleDpsdH09aC5wZW5kaW5nSU5WYWx1ZXNTZXQ7aC5zZXRJTlZhbHVlcyhaZSxsdCksaC5wZW5kaW5nSU5WYWx1ZXNTZXQ9bnVsbH1oLmNkZi5kZXRlY3RDaGFuZ2VzKCl9KS5jYXRjaChhZT0+e2gud2hlcmVD''@;'; put 'put ''bGF1c2VMb2FkaW5nPSExfSl9fWNhdGNoKF8pe2guZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigicHVibGljL2dldGNvbHZhbHMiLF8pfX0pKCl9Z2V0bG9naWMoYSl7dGhpcy5sb2dpYz1hLHRoaXMud2hlcmVDbGF1c2VGbigpfXNldExvZ2ljKCl7dGhpcy53aGVyZUNsYXVzZUZu''@;'; put 'put ''KCksdGhpcy5zZXRUb0dsb2JhbHMoKX1pc0FycihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEFycmF5JiZhLmxlbmd0aD4wJiZ0eXBlb2YgYVswXS5jaGVja2VkPCJ1In12YXJpYWJsZUlucHV0Q2hhbmdlKGEsZixkLGgpe3RoaXMuZ2V0VmFsdWVzKGEsZixkKX1zZXRWYXJpYWJsZVZhbHVlcyhh''@;'; put 'put ''LGYsZCl7bGV0IGg9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2ZdLm9wZXJhdG9yOyJCRVRXRUVOIiE9PWgmJiJJTiIhPT1oJiYiTk9UIElOIiE9PWgmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbZl0udmFsdWU9YS50b1N0cmluZygpKSx0aGlzLndoZXJl''@;'; put 'put ''Q2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfXNldFZhcmlhYmxlT3BlcmF0b3IoYSxmLGQpe2xldCBoPXRoaXMuY2xhdXNlcy5xdWVyeU9ialtkXS5lbGVtZW50c1thXS52YWx1ZTtoIGluc3RhbmNlb2YgQXJyYXkmJiJJTiIhPT1mJiYiTk9UIElOIiE9PWYmJihoPWggaW5zdGFuY2Vv''@;'; put 'put ''ZiBBcnJheSYmMj09PWgubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGhbMF0/aFswXToiIiksdGhpcy5jbGVhclZhbHVlc09wZXJhdG9yKGEsZCksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2FdLm9wZXJhdG9yPWYsKCI9Ij09PWZ8fCI+Ij09PWZ8fCI8Ij09PWZ8fCI8PSI9''@;'; put 'put ''PT1mfHwiPj0iPT09Znx8Ik5FIj09PWYpJiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2FdLnZhbHVlPWgpLCJCRVRXRUVOIj09PWYmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbYV0udmFsdWU9W10sdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1l''@;'; put 'put ''bnRzW2FdLnZhbHVlLnB1c2goaCksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2FdLnZhbHVlLnB1c2goIiIpKSwoIklOIj09PWZ8fCJOT1QgSU4iPT09ZikmJnRoaXMuc2V0SU5WYWx1ZXMoZCxhKSx0aGlzLndoZXJlQ2xhdXNlRm4oKSx0aGlzLnNldFRvR2xvYmFscygpfXNl''@;'; put 'put ''dElOVmFsdWVzKGEsZil7Y29uc3QgZD1bXSxoPXRoaXMuY2xhdXNlcy5xdWVyeU9ialthXS5lbGVtZW50c1tmXS52YWx1ZXM7aC5sZW5ndGg8MSYmKHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PXtjbGF1c2VJbmRleDphLHF1ZXJ5SW5kZXg6Zn0pO2ZvcihsZXQgbT0wO208aC5sZW5ndGg7bSsr''@;'; put 'put ''KWQucHVzaCh7Y2hlY2tlZDohMSx2YWw6aFttXS5mb3JtYXR0ZWR9KTt0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHNbZl0udmFsdWU9ZH1jbGVhclZhbHVlcyhhLGYpe3RoaXMuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1thXS52YWx1ZT0iIn1jbGVhclZhbHVlc09wZXJh''@;'; put 'put ''dG9yKGEsZil7bGV0IGQ9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW2FdLm9wZXJhdG9yOygiQkVUV0VFTiI9PT1kfHwiSU4iPT09ZHx8Ik5PVCBJTiI9PT1kfHwiQ09OVEFJTlMiPT09ZCkmJnRoaXMuY2xlYXJWYWx1ZXMoYSxmKX1oYXNJbnZhbGlkQ2x1YXNlKGEpe2Zvcihs''@;'; put 'put ''ZXQgZiBvZiBhKXtpZihudWxsPT09Zi52YXJpYWJsZXx8bnVsbD09PWYub3BlcmF0b3J8fG51bGw9PT1mLnZhbHVlfHwiIj09PWYudmFsdWUpcmV0dXJuIGYuaW52YWxpZENsYXVzZT0hMCwhMDtmLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuIGEuaW52YWxpZENsYXVzZT0hMSwhMX1oYXNJbnZh''@;'; put 'put ''bGlkR3JvdXBDbHVhc2UoKXtmb3IobGV0IGE9MDthPHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg7YSsrKXtpZih0aGlzLmhhc0ludmFsaWRDbHVhc2UodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzKSlyZXR1cm4gdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmludmFsaWRD''@;'; put 'put ''bGF1c2U9ITAsITA7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuITF9YWRkQ2xhdXNlKGEpe2lmKHRoaXMuaGFzSW52YWxpZENsdWFzZSh0aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uZWxlbWVudHMpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNl''@;'; put 'put ''LnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik7dGhpcy5jbGF1c2VBbXQucHVzaCgiIiksdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzLnB1c2goe2xvZ2lj''@;'; put 'put ''Om51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119KTtsZXQgZj10aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uY2xhdXNlTG9naWM7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmNsYXVzZUxvZ2ljPXR5cGVv''@;'; put 'put ''ZiBmPiJ1Ij8iQU5EIjoiT1IiPT09Zj8iT1IiOiJBTkQiLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9YWRkR3JvdXBDbGF1c2UoKXt0aGlzLmhhc0ludmFsaWRHcm91cENsdWFzZSgpP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fu''@;'; put 'put ''bm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik6KHRoaXMuY2xhdXNlcy5xdWVyeU9iai5wdXNoKHtlbGVtZW50czpbe2xvZ2ljOm51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpu''@;'; put 'put ''dWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XX0pLHRoaXMuc2V0VG9HbG9iYWxzKCkpfWlzSW5IdG1sQ29sbGVjdGlvbihhLGYpe2ZvcihsZXQgZD0wO2Q8Zi5sZW5ndGg7ZCsrKWlmKGZbZF0udmFsdWU9PT1hKXJldHVybiEwO3JldHVybiExfXJlbW92ZUdyb3VwQ2xhdXNlKGEpe3RoaXMu''@;'; put 'put ''Y2xhdXNlcy5xdWVyeU9iai5zcGxpY2UoYSwxKSx0aGlzLndoZXJlQ2xhdXNlRm4oKX1yZW1vdmVDbGF1c2UoYSxmKXt0aGlzLmNsYXVzZXMucXVlcnlPYmpbZl0uZWxlbWVudHMuc3BsaWNlKGEsMSksdGhpcy53aGVyZUNsYXVzZUZuKCksdGhpcy5zZXRUb0dsb2JhbHMoKX13aGVyZUNsYXVz''@;'; put 'put ''ZUZuKGE9ITEpe2NvbnN0IGY9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmNsYXVzZXMpO2lmKGEmJihmLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzPVtdKSx2b2lkIDAhPT10aGlzLmxpYmRzKXtsZXQgZD10aGlzLnNhc1N0b3JlU2VydmljZS53aGVyZUNsYXVzZUNyZWF0b3IoZix0''@;'; put 'put ''aGlzLmdyb3VwTG9naWMsdGhpcy5saWJkcyk7YXx8KHRoaXMud2hlcmVDbGF1c2U9ZC53aGVyZUNsYXVzZSx0aGlzLndoZXJlU3RyaW5nPWQuc3RyaW5nKX19bmdBZnRlclZpZXdJbml0KCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5fcmVtb3ZlUXJ5PWEuc2FzU3RvcmVT''@;'; put 'put ''ZXJ2aWNlLnJlbW92ZVF1ZXJ5LnN1YnNjcmliZShmPT57YS5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD49MSYmKGEuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg9MSxhLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMubGVuZ3RoPj0xJiYoYS5jbGF1c2VzLnF1ZXJ5T2JqWzBdLmVsZW1lbnRz''@;'; put 'put ''Lmxlbmd0aD0xLGEuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50cz1bXSxhLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMucHVzaCh7bG9naWM6bnVsbCx0eXBlOm51bGwsdmFyaWFibGU6bnVsbCxvcGVyYXRvcjpudWxsLHZhbHVlOm51bGwsdmFsdWVzOltdLG9wZXJhdG9yczpbXX0p''@;'; put 'put ''LGEud2hlcmVDbGF1c2VGbigpKSl9KSxhLmNvbHVtbnNTdWI9YS5zYXNTdG9yZVNlcnZpY2UuY29sdW1ucy5zdWJzY3JpYmUoZj0+e2xldCBkPWYuZGF0YS5jb2xzOyJob21lIiE9PUpuLnJvb3RQYXJhbSYmImVkaXRvciIhPT1Kbi5yb290UGFyYW18fChhLmNvbHM9ZCxhLmxpYmRzPWYubGli''@;'; put 'put ''ZHMsSm4uZWRpdG9yLmZpbHRlci5jb2xzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZCkpKSwidmlldyI9PT1Kbi5yb290UGFyYW0mJkpuLnZpZXdlci5maWx0ZXIuY29scy5sZW5ndGg8MSYmKGEuY29scz1kLGEubGliZHM9Zi5saWJkcyxKbi52aWV3ZXIuZmlsdGVyLmNvbHM9SlNPTi5w''@;'; put 'put ''YXJzZShKU09OLnN0cmluZ2lmeShkKSkpLGEubGliZHN8fChhLmxpYmRzPWYubGliZHMpfSksYS52YWx1ZXNTdWI9YS5zYXNTdG9yZVNlcnZpY2UudmFsdWVzLnN1YnNjcmliZShmPT57KCJob21lIj09PUpuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Kbi5yb290UGFyYW0pJiZKbi5lZGl0b3Iu''@;'; put 'put ''ZmlsdGVyLnZhbHMubGVuZ3RoPDEmJihhLnZhbHM9Zi52YWxzLEpuLmVkaXRvci5maWx0ZXIudmFscz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGYudmFscykpKSwidmlldyI9PT1Kbi5yb290UGFyYW0mJkpuLnZpZXdlci5maWx0ZXIudmFscy5sZW5ndGg8MSYmKGEudmFscz1mLnZhbHMs''@;'; put 'put ''Sm4udmlld2VyLmZpbHRlci52YWxzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZi52YWxzKSkpfSl9KSgpfW9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUoYSxmLGQsaCl7dGhpcy5nZXRWYWx1ZXNMb2FkTW9yZShhLGYsZCxoKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmdldEZyb21H''@;'; put 'put ''bG9iYWxzKCksc2V0VGltZW91dCgoKT0+e2xldCBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN2YWxzX3Zhcl9pZDBfMCIpO2EmJmEuZm9jdXMoKX0sNTAwKX1uZ09uRGVzdHJveSgpe3RoaXMuY29sdW1uc1N1YiYmdGhpcy5jb2x1bW5zU3ViLnVuc3Vic2NyaWJlKCksdGhpcy52YWx1ZXNT''@;'; put 'put ''dWImJnRoaXMudmFsdWVzU3ViLnVuc3Vic2NyaWJlKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KExkKSxydChScykscnQoUHUpLHJ0KFVsKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1xdWVyeSJdXSxpbnB1''@;'; put 'put ''dHM6e2NhY2hpbmc6ImNhY2hpbmciLHZpZXdib3hJZDoidmlld2JveElkIn0sZmVhdHVyZXM6W3JpKFt7cHJvdmlkZTpwZCx1c2VWYWx1ZToiZW4tR0IifV0pXSxkZWNsczozOCx2YXJzOjExLGNvbnN0czpbWzEsImNsci1mbGV4LXJvdyIsImNsci1mb3JtLWNvbnRyb2wiLCJtLTAiXSxbMSwi''@;'; put 'put ''Y2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWyJjbHJDaGVja2JveCIsIiIsInR5cGUiLCJjaGVja2JveCIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwibWwtMTUiXSxbImNsckNoZWNrYm94Iiwi''@;'; put 'put ''IiwidHlwZSIsImNoZWNrYm94IiwiaWQiLCJ1c2VQaWNrZXJzIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJdLFsxLCJjbHItcm93Il0sWzEsInNlbGVjdCIsImNsci1jb2wtbWQtMiIsIm1iLTMwIl0sWyJjbHJTZWxlY3QiLCIiLDMsImRpc2FibGVkIiwibmdNb2RlbCIs''@;'; put 'put ''Im5nTW9kZWxDaGFuZ2UiXSxbMywic2VsZWN0ZWQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjbHItY29sLW1kLTEwIiwibWItMzAiXSxbMSwibGluZS1udW1iZXJzIiwibGFuZ3VhZ2UtbWFya3VwIl0sWyJjbGFzcyIsInByb2dyZXNTdGF0aWMgcHJvZ3Jlc3MgbG9vcCIsNCwibmdJZiJd''@;'; put 'put ''LFsxLCJsYW5ndWFnZS1zcWwiXSxbMSwiY29udGVudCJdLFsxLCJjbGF1c2VzLWNvbnRhaW5lciIsImNsci1jb2wtbWQtMTIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJjbGF1c2Utcm93Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInBpY2tlciIsIiJdLFsibm90UGlja2VyIiwiIl0sWyJub3RQ''@;'; put 'put ''aWNrZXJSYW5nZSIsIiJdLFsiY2hlY2tib3hWYWx1ZXMiLCIiXSxbMywic2VsZWN0ZWQiXSxbMSwicHJvZ3Jlc1N0YXRpYyIsInByb2dyZXNzIiwibG9vcCJdLFsxLCJjbGF1c2Utcm93Il0sWzEsImNsYXVzZS1sb2dpYyIsImNsci1jb2wtbWQtMiJdLFsxLCJzZWxlY3QiXSxbImNsclNlbGVj''@;'; put 'put ''dCIsIiIsMywibmdNb2RlbCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSJdLFsiY2xhc3MiLCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIG10LTEwIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJjbGF1c2UtcXVlcnkiLCJjbHItY29sLW1kLTEwIl0sWyJzaGFwZSIsInRpbWVzIiwic2l6''@;'; put 'put ''ZSIsIjM2IiwiY2xhc3MiLCJyZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXJvdyIsMywiaW52YWxpZC1jbGF1c2UiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImJ0bi1ibG9jayIsIm10LTEw''@;'; put 'put ''IiwzLCJjbGljayJdLFsic2hhcGUiLCJwbHVzIl0sWyJzaGFwZSIsInRpbWVzIiwic2l6ZSIsIjM2IiwxLCJyZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbiIsMywiY2xpY2siXSxbMSwidmFyaWFibGUtY29sIiwiZm9ybS1ncm91cCIsImNsci1jb2wtbWQtMyJdLFsxLCJkYXRhbGlzdC13cmFw''@;'; put 'put ''cGVyIl0sWyJsYWJlbCIsIlZhcmlhYmxlIiwzLCJpZCIsImlucHV0SWQiLCJlbWl0T25seVNlbGVjdGVkIiwidmFsdWUiLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwib3BlcmF0b3ItY29sIiwiZm9ybS1ncm91cCIsImNsci1jb2wtbWQt''@;'; put 'put ''MyJdLFsiY2xyU2VsZWN0IiwiIiwxLCJtdC0yIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFsiY2xhc3MiLCJ2YWx1ZS1jb2wgZm9ybS1ncm91cCBjbHItY29sLW1kLTMiLDQsIm5nVmFyIl0sWzEsImNsYXVzZS1idXR0b25zIiwiY2xyLWNvbC1tZC0yIiwiYnRuLWdyb3VwIl0sWzEs''@;'; put 'put ''ImJ0biIsImJ0bi13YXJuaW5nIiwiYnRuLWJsb2NrIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsIm1pbnVzIl0sWzEsImJ0biIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2NrIiwzLCJjbGljayJdLFsxLCJ2YWx1ZS1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWyJj''@;'; put 'put ''bGFzcyIsImNoZWNrYm94LXZhbHMiLDQsIm5nSWYiXSxbImNsYXNzIiwic2luZ2xlLWZpZWxkLXZhbHMiLDQsIm5nSWYiXSxbImNsYXNzIiwicmFuZ2UtdmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJjb250YWlucy12YWxzIiw0LCJuZ0lmIl0sWzEsImNoZWNrYm94LXZhbHMiXSxbInR5cGUi''@;'; put 'put ''LCJidXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwzLCJjbGljayJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbMSwic2luZ2xlLWZpZWxkLXZhbHMiXSxbMSwicmFuZ2UtdmFscyJdLFsxLCJmcm9tIl0sWzEsInRvIl0sWzEsImNvbnRhaW5zLXZh''@;'; put 'put ''bHMiXSxbInR5cGUiLCJ0ZXh0IiwxLCJpbnB1dC12YWwiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWzMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsibGFiZWwiLCJWYWx1ZSIsInR5cGUiLCJkYXRlIiwzLCJkaXNhYmxlU29mdHNlbGVjdCIsImlucHV0SWQiLCJ2YWx1''@;'; put 'put ''ZSIsInZhbHVlQ2hhbmdlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsImRhdGUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVlIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbInR5cGUiLCJ0aW1lIiwzLCJkaXNhYmxlU29mdHNlbGVjdCIsImlucHV0SWQi''@;'; put 'put ''LCJ2YWx1ZSIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Il0sWyJsYWJlbCIsIlZhbHVlIiwidHlwZSIsInRpbWUiLDMsImRpc2FibGVTb2Z0c2VsZWN0IiwiaW5wdXRJZCIsInZhbHVlIiwib25JbnB1dEV2ZW50Il0sWyJsYWJlbCIsIlZhbHVlIiwzLCJpbnB1dElkIiwidmFsdWUiLCJl''@;'; put 'put ''bmFibGVMb2FkTW9yZSIsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50Iiwib25BdXRvY29tcGxldGVMb2FkaW5nTW9yZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl0sWyJsYWJlbCIsIlZhbHVlIiwzLCJpbnB1dElkIiwidmFsdWUiLCJlbmFibGVMb2Fk''@;'; put 'put ''TW9yZSIsImRpc2FibGVkIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiLCJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIl0sWzEsImluLXZhbHVlcy1tb2RhbCIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5''@;'; put 'put ''Il0sWyJjbGFzcyIsIm5vLXZhbHVlcyIsNCwibmdJZiJdLFsiY2xhc3MiLCJmb3JtLWJsb2NrIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsIm5vLXZhbHVlcyJdLFsxLCJmb3JtLWJsb2Nr''@;'; put 'put ''Il0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJDaGVja2JveCIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYiLDApKDEsImRpdiIsMSkoMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgzLCJpbnB1dCIsMiksRXQo''@;'; put 'put ''Im5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmR5bmFtaWNXaGVyZUNsYXVzZT1ofSksQ2UoKSx5ZSg0LCJsYWJlbCIsMyksWWUoNSwiRHluYW1pYyB3aGVyZSBjbGF1c2UiKSxDZSgpKCkoKSx5ZSg2LCJkaXYiLDQpKDcsImNsci1jaGVja2JveC13cmFwcGVyIikoOCwiaW5w''@;'; put 'put ''dXQiLDUpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi51c2VQaWNrZXJzPWh9KSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBmLnVzZVBpY2tlcnNDaGFuZ2UoKX0pLENlKCkseWUoOSwibGFiZWwiLDMpLFllKDEwLCIgVXNlIHBpY2tlcnMgIiksQ2UoKSgpKCko''@;'; put 'put ''KSx5ZSgxMSwiZGl2Iiw2KSgxMiwiZGl2Iiw3KSgxMywiY2xyLXNlbGVjdC1jb250YWluZXIiKSgxNCwibGFiZWwiKSxZZSgxNSwiR3JvdXAgbG9naWMiKSxDZSgpLHllKDE2LCJzZWxlY3QiLDgpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5ncm91cExvZ2ljPWh9''@;'; put 'put ''KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gZi5zZXRHcm91cExvZ2ljKGYuZ3JvdXBMb2dpYyl9KSx0dCgxNyxLa3QsMiwyLCJvcHRpb24iLDkpLENlKCkoKSgpLHllKDE4LCJkaXYiLDEwKSgxOSwicHJlIiwxMSksWWUoMjAsIiAgICAgICIpLHR0KDIxLHFrdCw0LDAsImRp''@;'; put 'put ''diIsMTIpLFllKDIyLCJcblxuICAgICAgIikseWUoMjMsImNvZGUiLDEzKSxZZSgyNCksQ2UoKSxZZSgyNSwiXG4gICAgIiksQ2UoKSgpKCkseWUoMjYsImRpdiIsMTQpKDI3LCJkaXYiLDE1KSx0dCgyOCxYa3QsMSwwLCJkaXYiLDE2KSx0dCgyOSx2RXQsMTUsOCwiZGl2IiwxNyksQ2UoKSgp''@;'; put 'put ''LHR0KDMwLHdFdCw0LDQsIm5nLXRlbXBsYXRlIixudWxsLDE4LEt1KSx0dCgzMixTRXQsMiw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwxOSxLdSksdHQoMzQsa0V0LDIsNSwibmctdGVtcGxhdGUiLG51bGwsMjAsS3UpLHR0KDM2LFRFdCw5LDQsIm5nLXRlbXBsYXRlIixudWxsLDIxLEt1KSksMiZh''@;'; put 'put ''JiYoU2UoMyksUmUoIm5nTW9kZWwiLGYuZHluYW1pY1doZXJlQ2xhdXNlKSxTZSg1KSxSZSgibmdNb2RlbCIsZi51c2VQaWNrZXJzKSxTZSg4KSxSZSgiZGlzYWJsZWQiLChudWxsPT1mLmNsYXVzZXN8fG51bGw9PWYuY2xhdXNlcy5xdWVyeU9iaj9udWxsOmYuY2xhdXNlcy5xdWVyeU9iai5s''@;'; put 'put ''ZW5ndGgpPDEpKCJuZ01vZGVsIixmLmdyb3VwTG9naWMpLFNlKDEpLFJlKCJuZ0Zvck9mIixmLmxvZ2ljT3BlcmF0b3JzKSxTZSg0KSxSZSgibmdJZiIsZi53aGVyZUNsYXVzZUxvYWRpbmcpLFNlKDMpLGFyKGYud2hlcmVDbGF1c2UpLFNlKDMpLGdyKCJjbHItY29sLW1kLTEwIiwobnVsbD09''@;'; put 'put ''Zi5jbGF1c2VzfHxudWxsPT1mLmNsYXVzZXMucXVlcnlPYmo/bnVsbDpmLmNsYXVzZXMucXVlcnlPYmoubGVuZ3RoKT4xKSxTZSgxKSxSZSgibmdJZiIsKG51bGw9PWYuY2xhdXNlc3x8bnVsbD09Zi5jbGF1c2VzLnF1ZXJ5T2JqP251bGw6Zi5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aCk+MSks''@;'; put 'put ''U2UoMSksUmUoIm5nRm9yT2YiLGYuY2xhdXNlcy5xdWVyeU9iaikpfSxkZXBlbmRlbmNpZXM6W1JhLCRpLHlkLGtmLENoLFJsLE1jLGtjLGVsLEIwLGw3LFYwLG03LHA3LFMxLE0xLGlzLFIwLEwwLFdhLHphLHg2ZSxSNyxHa3QsJGt0XSxzdHlsZXM6WydAY2hhcnNldCAiVVRGLTgiOy5jb250''@;'; put 'put ''ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLWxvZ2ljW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YmFja2dyb3VuZDojZTllOWU5O3BhZGRpbmc6MTVw''@;'; put 'put ''eH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzozMHB4IDAgMjBweCAyMHB4O2JhY2tncm91bmQ6I2ZiZjhmODtkaXNwbGF5OmZsZXg7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246cmVsYXRpdmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdID4g''@;'; put 'put ''LmNsci1yb3dbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5j''@;'; put 'put ''bHItcm93W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhc3QtY2hpbGQpe3BhZGRpbmctYm90dG9tOjE1cHg7bWFyZ2luLWJvdHRvbToxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE2KX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250''@;'; put 'put ''YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAucmVtb3ZlLWdyb3VwLWNsYXVzZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Y29sb3I6Z3JheX0uY29udGVudFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFyaWFibGUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtw''@;'; put 'put ''YWRkaW5nLWJvdHRvbToxcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhcmlhYmxlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxp''@;'; put 'put ''c3Qtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YXJpYWJsZS1jb2xbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmRhdGFsaXN0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLm9wZXJhdG9yLWNvbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1''@;'; put 'put ''c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLm9wZXJhdG9yLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2VsZWN0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ1cHg7bWFyZ2luLXRvcDowO3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZy1ib3R0b206MXB4''@;'; put 'put ''fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNoZWNrYm94LXZhbHNbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde3dpZHRoOjEwMCU7cGFkZGluZzowIDVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4zKX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jaGVja2JveC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1jaGVja2JveC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''Y2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jaGVja2JveC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNlY3Rpb25bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde21heC1oZWlnaHQ6MTIwcHg7b3ZlcmZsb3cteTpzY3JvbGx9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''LnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuc2luZ2xlLWZpZWxkLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcntt''@;'; put 'put ''YXgtd2lkdGg6bm9uZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQt''@;'; put 'put ''dmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXB7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0''@;'; put 'put ''eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTdweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''dmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVye21h''@;'; put 'put ''eC13aWR0aDpub25lfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1''@;'; put 'put ''c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbToxMHB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdID4gaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTdweH0uY29udGVudFtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAudG9bX25nY29udGVudC0lQ09NUCVde21pbi13aWR0aDoxMDBweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29s''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAudG9bX25nY29udGVudC0lQ09NUCVdID4gaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dp''@;'; put 'put ''ZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAudG9bX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nLXJp''@;'; put 'put ''Z2h0OjE3cHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFsc1tfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''b250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6bm9uZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRh''@;'; put 'put ''aW5lciAuY2xyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cHt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1j''@;'; put 'put ''b2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdID4gaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6''@;'; put 'put ''MTdweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLWJ1dHRvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6c3BhY2UtYXJvdW5kO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXJ9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''LmNsYXVzZS1idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWluLXdpZHRoOmF1dG99LmludmFsaWQtY2xhdXNlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoycHggc29saWQgI2Q5NGIzMX0uY2xhdXNlLXJvd1tfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICBjbHItaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjB9LmNsYXVzZS1yb3dbX25nY29udGVudC0lQ09NUCVdOmFmdGVye3Bvc2l0aW9uOnJlbGF0aXZlO2NvbnRlbnQ6IiI7aGVpZ2h0Oi40MTY2N3JlbTt3aWR0aDouNDE2NjdyZW07dG9wOi4yOTE2N3JlbTtyaWdo''@;'; put 'put ''dDouMjVyZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnXFwyMDI2JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYl''@;'; put 'put ''M0UlMEElM0MlMkZzdmclM0UlMEEpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjB9W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QocHJlKSA+IGNvZGVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdLCBwcmVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZiZjhmOH1wcmVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6OHB4O21hcmdpbjowO2JvcmRlci1yYWRpdXM6MXB4O2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OjY2cHg7cG9zaXRpb246cmVsYXRpdmV9cHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW4uc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7bGVmdDoxMHB4O3RvcDoxMHB4fXByZVtjbGFzcyo9bGFuZ3VhZ2UtXSBjb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LmlucHV0LXZhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweDtiYWNr''@;'; put 'put ''Z3JvdW5kOiNmYmY4Zjg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzk5OTk5OX1jbHItZGF0ZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MnB4IWltcG9ydGFudH1pbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtiYWNrZ3JvdW5k''@;'; put 'put ''OnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNiM2IzYjN9aW5wdXRbdHlwZT10aW1lXVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZTpub25lfS5pbi12YWx1ZXMtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1vZGFsLWZvb3Rlcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgI2Q4ZDhkODttYXJnaW4tdG9wOjEwcHh9LnByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnByb2dyZXNzLXN0YXRpY1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt3aWR0aDoxMDAlO2hlaWdodDo0''@;'; put 'put ''cHg7dG9wOjNweH0nXX0pLGx9KSgpO2NvbnN0IE9FdD1bInNlYXJjaExpYlRyZWVJbnB1dCJdO2Z1bmN0aW9uIERFdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDkpfWZ1bmN0aW9uIElFdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1pY29uIiwxMCksRXQoImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMik7cmV0dXJuIGQubGlicmFyaWVzU2VhcmNoPSIiLFp0KGQubGlicmFyeU9uRmlsdGVyKCkpfSksQ2UoKX19ZnVuY3Rpb24gUkV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMykoMSwiZGl2Iiw0''@;'; put 'put ''KSgyLCJpbnB1dCIsNSw2KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubGlicmFyaWVzU2VhcmNoPWQpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLENlKCksdHQoNCxERXQs''@;'; put 'put ''MSwwLCJjbHItaWNvbiIsNyksdHQoNSxJRXQsMSwwLCJjbHItaWNvbiIsOCksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1RaSgzKSxmPUdlKCk7U2UoMiksUmUoIm5nTW9kZWwiLGYubGlicmFyaWVzU2VhcmNoKSxTZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksU2UoMSksUmUoIm5n''@;'; put 'put ''SWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBMRXQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiw5KX1mdW5jdGlvbiBQRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKSxHZSgpO2NvbnN0IGQ9''@;'; put 'put ''UWkoMyksaD1HZSgyKS4kaW1wbGljaXQsbT1HZSgpO3JldHVybiBkLnZhbHVlPSIiLGguc2VhcmNoU3RyaW5nPSIiLFp0KG0udHJlZU9uRmlsdGVyKGgsInRhYmxlcy5UQUJMRU5BTUUiKSl9KSxDZSgpfX1mdW5jdGlvbiBGRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHIt''@;'; put 'put ''dHJlZS1ub2RlIiwzKSgxLCJkaXYiLDQpKDIsImlucHV0IiwxNywxOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgyKS4kaW1wbGljaXQuc2VhcmNoU3RyaW5nPWQpfSkoImtleXVwIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMikuJGlt''@;'; put 'put ''cGxpY2l0O3JldHVybiBadChHZSgpLnRyZWVPbkZpbHRlcihkLCJ0YWJsZXMiKSl9KSxDZSgpLHR0KDQsTEV0LDEsMCwiY2xyLWljb24iLDcpLHR0KDUsUEV0LDEsMCwiY2xyLWljb24iLDgpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMyksZj1HZSgyKS4kaW1wbGljaXQ7U2UoMiksUmUo''@;'; put 'put ''Im5nTW9kZWwiLGYuc2VhcmNoU3RyaW5nKSxTZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksU2UoMSksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBIRXQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwyNil9ZnVuY3Rpb24gTkV0KGwsYyl7MSZsJiZ0bigw''@;'; put 'put ''LCJjbHItaWNvbiIsMjcpfWZ1bmN0aW9uIFZFdChsLGMpezEmbCYmKHllKDAsInNwYW4iKSxZZSgxLCIgVG8gdW5sb2NrIGFsbCB0YWJsZXMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKSxDZSgpKX1mdW5jdGlvbiBCRXQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdG9v''@;'; put 'put ''bHRpcC1jb250ZW50IiwyOCksdHQoMSxWRXQsMiwwLCJzcGFuIiwyNSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCkubmdWYXI7U2UoMSksUmUoIm5nSWYiLGEpfX1mdW5jdGlvbiBqRXQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiw5KX1mdW5jdGlvbiB6RXQobCxjKXtpZigxJmwpe2NvbnN0''@;'; put 'put ''IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKSxHZSgpO2NvbnN0IGQ9UWkoMyksaD1HZSgzKS4kaW1wbGljaXQsbT1HZSgzKTtyZXR1cm4gZC52YWx1ZT0iIixoLnNlYXJjaFN0cmluZz0iIixadChtLnRyZWVPbkZpbHRlcihoLCJjb2x1bW5z''@;'; put 'put ''LkNPTE5BTUUiKSl9KSxDZSgpfX1mdW5jdGlvbiBVRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiwzKSgxLCJkaXYiLDQpKDIsImlucHV0IiwyOSwxOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgzKS4k''@;'; put 'put ''aW1wbGljaXQuc2VhcmNoU3RyaW5nPWQpfSkoImtleXVwIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMykuJGltcGxpY2l0O3JldHVybiBadChHZSgzKS50cmVlT25GaWx0ZXIoZCwiY29sdW1ucy5DT0xOQU1FIikpfSksQ2UoKSx0dCg0LGpFdCwxLDAsImNsci1pY29uIiw3KSx0dCg1''@;'; put 'put ''LHpFdCwxLDAsImNsci1pY29uIiw4KSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoMykuJGltcGxpY2l0O1NlKDIpLFJlKCJuZ01vZGVsIixmLnNlYXJjaFN0cmluZyksU2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxl''@;'; put 'put ''bmd0aD4wKX19ZnVuY3Rpb24gWkV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsMzApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdCxtPUdlKDMpLiRpbXBsaWNpdCxfPUdlKDIpLiRpbXBsaWNp''@;'; put 'put ''dDtyZXR1cm4gWnQoR2UoKS5jb2x1bW5PbkNsaWNrKGgsXyxtKSl9KSx0bigyLCJjbHItaWNvbiIsMzEpLFllKDMpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSg2KTtTZSgxKSxncigiY29sdW1uLWFjdGl2ZSIsZi5saWJDb2x1bW5BY3RpdmUoYS5DT0xVUkkpKSxT''@;'; put 'put ''ZSgyKSx3cigiICIsYS5DT0xOQU1FLCIgIil9fWZ1bmN0aW9uIFlFdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsVUV0LDYsMywiY2xyLXRyZWUtbm9kZSIsMCksdHQoMixaRXQsNCwzLCJjbHItdHJlZS1ub2RlIiwxKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMikuJGltcGxpY2l0O1NlKDEp''@;'; put 'put ''LFJlKCJuZ0lmIixhLmNvbHVtbnMpLFNlKDEpLFJlKCJuZ0Zvck9mIixhLmNvbHVtbnMpfX1mdW5jdGlvbiBXRXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdG9vbHRpcCIpKDEsImJ1dHRvbiIsMjApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLm5n''@;'; put 'put ''VmFyLG09R2UoKS4kaW1wbGljaXQsXz1HZSgyKS4kaW1wbGljaXQsTz1HZSgpO3JldHVybiBadChoPyIiOk8udGFibGVPbkNsaWNrKG0uVEFCTEVVUkksbSxfKSl9KSxXcigyLDIxKSx0dCgzLEhFdCwxLDAsImNsci1pY29uIiwyMiksdHQoNCxORXQsMSwwLCJjbHItaWNvbiIsMjMpLEdyKCks''@;'; put 'put ''WWUoNSksQ2UoKSx0dCg2LEJFdCwyLDEsImNsci10b29sdGlwLWNvbnRlbnQiLDI0KSx0dCg3LFlFdCwzLDIsIm5nLWNvbnRhaW5lciIsMjUpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMubmdWYXIsZj1HZSgpLiRpbXBsaWNpdCxkPUdlKDIpLiRpbXBsaWNpdCxoPUdlKCk7U2UoMSksZ3IoImRj''@;'; put 'put ''LWxvY2tlZC1jb250cm9sIixhKSgidGFibGUtYWN0aXZlIixoLmxpYlRhYkFjdGl2ZShkLkxJQlJBUllSRUYsZikpLFNlKDEpLFJlKCJuZ1N3aXRjaCIsZi5pbmNsdWRlcygiLUZDIikpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCEwKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIiwhMSksU2Uo''@;'; put 'put ''MSksd3IoIiAiLGYucmVwbGFjZSgiLUZDIiwiIiksIiAiKSxTZSgyKSxSZSgibmdJZiIsaC5oYXNDb2x1bW5zKX19ZnVuY3Rpb24gR0V0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMTIpLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7Y29uc3QgbT1VdChh''@;'; put 'put ''KS4kaW1wbGljaXQsXz1HZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkudHJlZU5vZGVDbGlja2VkKGQsbSxfLnRhYmxlcykpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gWnQoVXQoYSkuJGltcGxpY2l0LmV4cGFuZGVkPWQpfSksdHQoMSxXRXQsOCw5LCJj''@;'; put 'put ''bHItdG9vbHRpcCIsMTkpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleCxkPUdlKDMpO2dyKCJjbHItZXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCkoImNsckxvYWRpbmciLGEubG9hZGluZ0NvbHVtbnMmJiFhLmNvbHVt''@;'; put 'put ''bnMpLFNlKDEpLFJlKCJuZ1ZhciIsZisxPmQubGljZW5jZVN0YXRlLnZhbHVlLnRhYmxlc19pbl9saWJyYXJ5X2xpbWl0KX19ZnVuY3Rpb24gJEV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMTIsMTMpLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7VXQo''@;'; put 'put ''YSk7Y29uc3QgaD1HZSgpLiRpbXBsaWNpdCxtPUdlKCk7cmV0dXJuIFp0KG0udHJlZU5vZGVDbGlja2VkKGQsaCxtLmxpYnJhcnlMaXN0KSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLiRpbXBsaWNpdC5leHBhbmRlZD1kKX0pLHllKDIs''@;'; put 'put ''InAiLDE0KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1RaSgxKSxoPUdlKCkuJGltcGxpY2l0LG09R2UoKTtyZXR1cm4gbS5saWI9aC5MSUJSQVJZSUQsWnQobS5saWJyYXJ5T25DbGljayhtLmxpYnx8IiIsaCxkKSl9KSx0bigzLCJjbHItaWNvbiIsMTUpLFllKDQpLENl''@;'; put 'put ''KCksdHQoNSxGRXQsNiwzLCJjbHItdHJlZS1ub2RlIiwwKSx0dCg2LEdFdCwyLDUsImNsci10cmVlLW5vZGUiLDE2KSxDZSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdDtncigiY2xyLWV4cGFuZGVkIixhLmV4cGFuZGVkKSxSZSgiY2xyRXhwYW5kZWQiLGEuZXhwYW5kZWQpKCJj''@;'; put 'put ''bHJMb2FkaW5nIixhLmxvYWRpbmdUYWJsZXMmJiFhLnRhYmxlcyksU2UoNCksd3IoIiAiLGEuTElCUkFSWU5BTUUsIiAiKSxTZSgxKSxSZSgibmdJZiIsYS50YWJsZXMpLFNlKDEpLFJlKCJuZ0Zvck9mIixhLnRhYmxlcyl9fWZ1bmN0aW9uIEtFdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEs''@;'; put 'put ''JEV0LDcsNywiY2xyLXRyZWUtbm9kZSIsMTEpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsIWEuaGlkZGVuJiZhLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIHFFdChsLGMpezEmbCYmKHllKDAsImRpdiIsMzIpKDEsInNwYW4iLDMzKSxZZSgyLCIgTG9h''@;'; put 'put ''ZGluZy4uLiAiKSxDZSgpKCkpfWxldCBYRXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYpe3RoaXMuaGVscGVyU2VydmljZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9Zix0aGlzLnNlYXJjaExpYklucHV0TGlzdD1uZXcgVTIsdGhpcy50YWJsZU9uQ2xpY2tFbWl0dGVyPW5ldyB4cix0''@;'; put 'put ''aGlzLmxpYnJhcnlPbkNsaWNrRW1pdHRlcj1uZXcgeHIsdGhpcy5oYXNDb2x1bW5zPSExLHRoaXMucGFnaW5nPSEwLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMubGliPSIiLHRoaXMudGFibGU9IiIsdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEsdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5s''@;'; put 'put ''aWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGV9bmdPbkluaXQoKXt9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuc2VhcmNoTGliSW5wdXRMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX0pfW5nT25DaGFuZ2VzKGEpe2EubGlicmFyeUxpc3Q/LmN1cnJlbnRW''@;'; put 'put ''YWx1ZSYmdGhpcy5saWJyYXJ5TGlzdCYmdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCl9dHJlZU9uRmlsdGVyKGEsZil7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihhLGYpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2Vy''@;'; put 'put ''dmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJ5TGlzdCx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxKbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH10cmVlTm9kZUNsaWNrZWQoYSxmLGQpeyJDb2xsYXBzZSI9PT1hLnRhcmdl''@;'; put 'put ''dC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyhkLGYpfWxpYnJhcnlPbkNsaWNrKGEsZixkKXtmLmluRm9yZWdyb3VuZD0hMDtjb25zdCBoPSgpPT5zZXRUaW1lb3V0KCgpPT5kLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3Io''@;'; put 'put ''ImlucHV0IikuZm9jdXMoKSk7aWYoZi50YWJsZXMpZi5leHBhbmRlZD0hZi5leHBhbmRlZCx0aGlzLmxpYnJhcnlPbkNsaWNrRW1pdHRlci5lbWl0KHtsaWJpZDphLGxpYnJhcnk6Zix0YWJsZXNMb2FkZWQ6ITB9KTtlbHNle2YubG9hZGluZ1RhYmxlcz0hMCx0aGlzLmxpYnJhcnlPbkNsaWNr''@;'; put 'put ''RW1pdHRlci5lbWl0KHtsaWJpZDphLGxpYnJhcnk6Zix0YWJsZXNMb2FkZWQ6ITF9KTtjb25zdCBtPXNldEludGVydmFsKCgpPT57Zi5sb2FkaW5nVGFibGVzfHwoaCgpLGNsZWFySW50ZXJ2YWwobSkpfSw1MDApfWYuZXhwYW5kZWQmJmgoKSx0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKHRoaXMu''@;'; put 'put ''bGlicmFyeUxpc3QsZil9dGFibGVPbkNsaWNrKGEsZixkKXt2YXIgaD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtoLmhlbHBlclNlcnZpY2UuZGVib3VuY2VDYWxsKDUwLCgpPT57aC5oYXNDb2x1bW5zPyhmLmNvbHVtbnM/KGYuZXhwYW5kZWQ9IWYuZXhwYW5kZWQsITA9PT1mLmV4cGFu''@;'; put 'put ''ZGVkJiYoaC50YWJsZT1hLGgudGFibGVPbkNsaWNrRW1pdHRlci5lbWl0KHt0YWJsZXVyaTphLGxpYlRhYmxlOmYsbGlicmFyeTpkLGNvbHVtbnNMb2FkZWQ6ITB9KSkpOihmLmV4cGFuZGVkPSFmLmV4cGFuZGVkLGYubG9hZGluZ0NvbHVtbnM9ITAsaC50YWJsZT1hLGgudGFibGVPbkNsaWNr''@;'; put 'put ''RW1pdHRlci5lbWl0KHt0YWJsZXVyaTphLGxpYlRhYmxlOmYsbGlicmFyeTpkLGNvbHVtbnNMb2FkZWQ6ITF9KSksaC5jb2xsYXBzZVRyZWVJdGVtcyhkLnRhYmxlcyxmKSk6aC50YWJsZU9uQ2xpY2tFbWl0dGVyLmVtaXQoe3RhYmxldXJpOmEsbGliVGFibGU6ZixsaWJyYXJ5OmQsY29sdW1u''@;'; put 'put ''c0xvYWRlZDohMX0pfSl9KSgpfWNvbHVtbk9uQ2xpY2soYSxmLGQpe3RoaXMubGliPWYuTElCUkFSWUlELHRoaXMudGFibGU9ZC5UQUJMRVVSSSx0aGlzLmNvbHVtbj1hLkNPTFVSSX1saWJUYWJBY3RpdmUoYSxmKXtyZXR1cm4hKCF0aGlzLmxpYnx8IXRoaXMudGFibGUpJiZhPT09dGhpcy5s''@;'; put 'put ''aWImJmY9PT10aGlzLnRhYmxlfWxpYkNvbHVtbkFjdGl2ZShhKXtpZighdGhpcy5jb2x1bW4pcmV0dXJuITE7bGV0IGY9YS5zcGxpdCgiXFwiKSxkPXRoaXMuY29sdW1uLnNwbGl0KCJcXCIpO3JldHVybiBmW2YubGVuZ3RoLTFdPT1kW2QubGVuZ3RoLTFdfWNvbGxhcHNlVHJlZUl0ZW1zKGEs''@;'; put 'put ''Zil7YS5mb3JFYWNoKGQ9PntKU09OLnN0cmluZ2lmeShkKSE9PUpTT04uc3RyaW5naWZ5KGYpJiYoZC5leHBhbmRlZD0hMSl9KX1sb2FkTW9yZUxpYnJhcmllcygpe3RoaXMubGlicmFyaWVzUGFnaW5nfHwodGhpcy5saWJyYXJpZXNQYWdpbmc9ITAsdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3Bs''@;'; put 'put ''YXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCwhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfWhhbmRsZVNjcm9sbChhKXtsZXQgZj1hLnRhcmdldDtmJiZmLnNjcm9sbFRvcD49Zi5zY3JvbGxIZWlnaHQtZi5vZmZzZXRIZWlnaHQtMTAmJnRoaXMubG9hZE1vcmVMaWJyYXJpZXMoKX19''@;'; put 'put ''cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUHUpLHJ0KGIxKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImRjLXRyZWUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiZObyhPRXQsNSksMiZhKXtsZXQgZDt1''@;'; put 'put ''aShkPWNpKCkpJiYoZi5zZWFyY2hMaWJJbnB1dExpc3Q9ZCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxmKXsxJmEmJkV0KCJzY3JvbGwiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmhhbmRsZVNjcm9sbChoKX0pfSxpbnB1dHM6e2hhc0NvbHVtbnM6Imhhc0NvbHVtbnMiLHBhZ2luZzoicGFn''@;'; put 'put ''aW5nIixsaWJyYXJ5TGlzdDoibGlicmFyeUxpc3QifSxvdXRwdXRzOnt0YWJsZU9uQ2xpY2tFbWl0dGVyOiJ0YWJsZU9uQ2xpY2tFbWl0dGVyIixsaWJyYXJ5T25DbGlja0VtaXR0ZXI6ImxpYnJhcnlPbkNsaWNrRW1pdHRlciJ9LGZlYXR1cmVzOltibF0sZGVjbHM6NCx2YXJzOjMsY29uc3Rz''@;'; put 'put ''OltbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInctMTAwIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xk''@;'; put 'put ''ZXIiLCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNs''@;'; put 'put ''aWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJFeHBhbmRlZCIsImNs''@;'; put 'put ''ckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWyJsaWJUcmVlTm9kZSIsIiJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwicmFjay1zZXJ2ZXIiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwi''@;'; put 'put ''Y2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFy''@;'; put 'put ''Y2hUcmVlSW5wdXQiLCIiXSxbNCwibmdWYXIiXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwxLCJjbHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbMywibmdTd2l0Y2giXSxbInNoYXBlIiwiYm9sdCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzaGFwZSIsInRhYmxlIiw0LCJuZ1N3aXRjaENh''@;'; put 'put ''c2UiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IiwiY2xyU2l6ZSIsImxnIiw0LCJjbHJJZk9wZW4iXSxbNCwibmdJZiJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIsInRhYmxlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyJdLFsiY2xySW5w''@;'; put 'put ''dXQiLCIiLCJwbGFjZWhvbGRlciIsIkNvbHVtbnMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbMSwiY2xyLXRyZWVub2RlLWxpbmsiLDMsImNsaWNrIl0sWyJzaGFwZSIsIm9iamVjdHMiXSxbMSwidy0x''@;'; put 'put ''MDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYmKHllKDAsImNsci10cmVlIiksdHQoMSxSRXQsNiwzLCJjbHItdHJlZS1ub2RlIiwwKSx0dCgyLEtFdCwyLDEsIm5nLWNvbnRhaW5lciIsMSksQ2UoKSx0dCgz''@;'; put 'put ''LHFFdCwzLDAsImRpdiIsMikpLDImYSYmKFNlKDEpLFJlKCJuZ0lmIixmLmxpYnJhcnlMaXN0KSxTZSgxKSxSZSgibmdGb3JPZiIsZi5saWJyYXJ5TGlzdCksU2UoMSksUmUoIm5nSWYiLGYubGlicmFyaWVzUGFnaW5nKSl9LGRlcGVuZGVuY2llczpbUmEsJGksa2YsQ2gsRGQsTGYsaTUsUmws''@;'; put 'put ''SmMseGQsUmYsTVMsRVMsa1MsaXMsV2EsemEsUjddLHN0eWxlczpbImNsci10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9Y2xyLXRyZWVbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLXRyZWUtbm9k''@;'; put 'put ''ZS1jb250ZW50LWNvbnRhaW5lcjpmb2N1cyAuY2xyLXRyZWVub2RlLWxpbmt7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLXRyZWUtbGluay1ob3Zlci1jb2xvciwgI2U4ZThlOCk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Il19KSxsfSkoKTtjb25zdCBKRXQ9WyJyZXNp''@;'; put 'put ''emVCb3giXSxRRXQ9WyJkcmFnSGFuZGxlQ29ybmVyIl07ZnVuY3Rpb24gZXh0KGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIsMzIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLCR1KCJUbyB1bmxvY2sgbW9yZSB0aGVuICIsYS5saWNlbmNlU3RhdGUudmFsdWUudmlld2Jv''@;'; put 'put ''eF9saW1pdCwiICIsMT09PWEubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQ/InZpZXdib3giOiJ2aWV3Ym94ZXMiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiB0eHQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDMzKSx0bigxLCJjbHItc3Bp''@;'; put 'put ''bm5lciIsMzQpLENlKCkpfWZ1bmN0aW9uIG54dChsLGMpezEmbCYmKHllKDAsInAiLDM1KSxZZSgxLCIgVmlld2JveCBvcGVuIGxpbWl0IHJlYWNoZWQgIiksQ2UoKSl9ZnVuY3Rpb24gcnh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGMtdHJlZSIsMzYpLEV0KCJsaWJyYXJ5''@;'; put 'put ''T25DbGlja0VtaXR0ZXIiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmxpYnJhcnlPbkNsaWNrKGQpKX0pKCJ0YWJsZU9uQ2xpY2tFbWl0dGVyIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS50YWJsZU9uQ2xpY2soZCkpfSksQ2UoKX0yJmwmJlJlKCJsaWJyYXJ5''@;'; put 'put ''TGlzdCIsR2UoKS5saWJyYXJpZXMpfWZ1bmN0aW9uIGl4dChsLGMpezEmbCYmKHllKDAsInAiLDM3KSxZZSgxLCIgUGljayB0YWJsZSBmcm9tIHRoZSBsaXN0IG9uIHRoZSBsZWZ0ICIpLENlKCkpfWZ1bmN0aW9uIG94dChsLGMpezEmbCYmdG4oMCwiY2xyLXNwaW5uZXIiLDQ1KX1mdW5jdGlv''@;'; put 'put ''biBheHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJhIiwxMiksRXQoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuJGltcGxpY2l0LG09R2UoKTtyZXR1cm4gbS5taW5pbWl6ZShoKSxadChtLnN0b3BQcm9wYWdhdGlvbihkKSl9KSx0bigxLCJjbHItaWNv''@;'; put 'put ''biIsMTUpLHllKDIsInNwYW4iLDE0KSxZZSgzLCJNaW5pbWl6ZSB2aWV3Ym94IiksQ2UoKSgpfX1mdW5jdGlvbiBseHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJhIiwxMiksRXQoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuJGltcGxpY2l0LG09R2Uo''@;'; put 'put ''KTtyZXR1cm4gbS5yZXN0b3JlKGgpLFp0KG0uc3RvcFByb3BhZ2F0aW9uKGQpKX0pLHRuKDEsImNsci1pY29uIiwxNikseWUoMiwic3BhbiIsMTQpLFllKDMsIlJlc3RvcmUgdmlld2JveCIpLENlKCkoKX19ZnVuY3Rpb24gc3h0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2''@;'; put 'put ''IiwzOCksRXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLnNlbGVjdFZpZXdib3goaCkpfSkseWUoMSwiZGl2IiwzOSksWWUoMiksdHQoMyxveHQsMSwwLCJjbHItc3Bpbm5lciIsNDApLENlKCkseWUoNCwiZGl2IikoNSwiYSIsNDEp''@;'; put 'put ''LEV0KCJjbGljayIsZnVuY3Rpb24oZCl7Y29uc3QgbT1VdChhKS4kaW1wbGljaXQsXz1HZSgpO3JldHVybiBfLnJlc2V0UG9zU2l6ZShtKSxadChfLnN0b3BQcm9wYWdhdGlvbihkKSl9KSx0big2LCJjbHItaWNvbiIsNDIpLHllKDcsInNwYW4iLDE0KSxZZSg4LCJSZXNldCBwb3NpdGlvbiBh''@;'; put 'put ''bmQgc2l6ZSIpLENlKCkoKSx0dCg5LGF4dCw0LDAsImEiLDQzKSx0dCgxMCxseHQsNCwwLCJhIiw0MykseWUoMTEsImEiLDEyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKGQpe2NvbnN0IG09VXQoYSkuJGltcGxpY2l0LF89R2UoKTtyZXR1cm4gXy5jbG9zZShtKSxadChfLnN0b3BQcm9wYWdhdGlv''@;'; put 'put ''bihkKSl9KSx0bigxMiwiY2xyLWljb24iLDQ0KSx5ZSgxMywic3BhbiIsMTQpLFllKDE0LCJDbG9zZSB2aWV3Ym94IiksQ2UoKSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSgpO2dyKCJzZWxlY3RlZCIsKG51bGw9PWYuc2VsZWN0ZWRWaWV3Ym94P251bGw6Zi5zZWxl''@;'; put 'put ''Y3RlZFZpZXdib3guaWQpPT09YS5pZCksU2UoMiksTzAoIiAjIixhLmlkLCIgIixhLmxpYnJhcnksIi4iLGEudGFibGUsIiAiKSxTZSgxKSxSZSgibmdJZiIsYS5sb2FkaW5nRGF0YSksU2UoMiksZ3IoImRpc2FibGVkIiwwPT09YS54JiYwPT09YS55KSxTZSg0KSxSZSgibmdJZiIsIWEubWlu''@;'; put 'put ''aW1pemVkKSxTZSgxKSxSZSgibmdJZiIsYS5taW5pbWl6ZWQpfX1mdW5jdGlvbiB1eHQobCxjKXtpZigxJmwmJih5ZSgwLCJvcHRpb24iKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksd3IoIiAiLGEsIiAiKX19ZnVuY3Rpb24gY3h0KGwsYyl7aWYoMSZsKXtj''@;'; put 'put ''b25zdCBhPVpuKCk7V3IoMCkseWUoMSwiZGl2Iiw0OCkoMiwiYXBwLWF1dG9jb21wbGV0ZSIsNDksNTApLEV0KCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1RaSgzKSxtPUdlKCkubmdWYXI7cmV0dXJuIFp0KEdlKCkub25Db2xzZWFyY2hDaGFuZ2UoaCxkLG0uY29s''@;'; put 'put ''SGVhZGVyc0hpZGRlbikpfSksdHQoNCx1eHQsMiwxLCJvcHRpb24iLDUxKSxDZSgpKCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS5uZ1ZhcjtTZSgyKSxSZSgiaW5wdXRJZCIsInZpZXdib3gtY29sdW1uLXNlYXJjaCIpKCJlbWl0T25seVNlbGVjdGVkIiwhMCksU2UoMiksUmUoIm5nRm9y''@;'; put 'put ''T2YiLGEuY29sSGVhZGVyc0hpZGRlbil9fWZ1bmN0aW9uIGZ4dChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDU3KX1mdW5jdGlvbiBkeHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsNTgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdl''@;'; put 'put ''KCkuJGltcGxpY2l0O3JldHVybiBadChHZSgzKS5vbkNvbFJlbW92ZShkKSl9KSxDZSgpfX1mdW5jdGlvbiBoeHQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDU0KSgxLCJzcGFuIiksWWUoMiksdHQoMyxmeHQsMSwwLCJjbHItaWNvbiIsNTUpLENlKCksdHQoNCxkeHQsMSwwLCJjbHItaWNv''@;'; put 'put ''biIsNTYpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDIpLm5nVmFyLGQ9R2UoKTtwTygiY29sLWJveCBjb2x1bW4tIixhLCIiKSxncigiY3Vyc29yLWRlZmF1bHQtaSIsZi5oZWFkZXJQa3MuaW5jbHVkZXMoYSkpKCJwcmltYXJ5S2V5SGVhZGVyU3R5bGUiLGYuaGVhZGVy''@;'; put 'put ''UGtzLmluY2x1ZGVzKGEpKSxSZSgiY2RrRHJhZ0RhdGEiLGEpKCJjZGtEcmFnRGlzYWJsZWQiLGYuaGVhZGVyUGtzLmluY2x1ZGVzKGEpKSxTZSgyKSwkdSgiICIsYSwiICIsIm51bSI9PT0obnVsbD09ZC5zZWxlY3RlZFZpZXdib3hUYWJsZXx8bnVsbD09ZC5zZWxlY3RlZFZpZXdib3hUYWJs''@;'; put 'put ''ZS5ob3RUYWJsZT9udWxsOmQuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuJGRhdGFmb3JtYXRzLnZhcnNbYV0udHlwZSk/IihudW1lcmljKSI6IiIsIiAiKSxTZSgxKSxSZSgibmdJZiIsZi5oZWFkZXJQa3MuaW5jbHVkZXMoYSkpLFNlKDEpLFJlKCJuZ0lmIiwhZi5oZWFkZXJQa3Mu''@;'; put 'put ''aW5jbHVkZXMoYSkpfX1mdW5jdGlvbiBweHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJwIiw1KSxZZSgyLCJDb2x1bW5zIFRvIERpc3BsYXkgKGRyYWcgYW5kIHJlLW9yZGVyKSIpLENlKCkseWUoMywiZGl2Iiw1MiksRXQoImNka0Ryb3BMaXN0RHJvcHBlZCIsZnVu''@;'; put 'put ''Y3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmNvbHVtbnNEcm9wKGQpKX0pLHR0KDQsaHh0LDUsMTMsImRpdiIsNTMpLENlKCksR3IoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS5uZ1ZhcjtTZSgzKSxSZSgiY2RrRHJvcExpc3REYXRhIixhLmNvbEhlYWRlcnNWaXNpYmxlKSxTZSgxKSxS''@;'; put 'put ''ZSgibmdGb3JPZiIsYS5jb2xIZWFkZXJzVmlzaWJsZSl9fWZ1bmN0aW9uIG14dChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsNDYpLHR0KDEsY3h0LDUsMywibmctY29udGFpbmVyIiw0NyksdHQoMixweHQsNSwyLCJuZy1jb250YWluZXIiLDQ3KSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy5uZ1Zh''@;'; put 'put ''cjtTZSgxKSxSZSgibmdJZiIsYS5jb2xIZWFkZXJzSGlkZGVuKSxTZSgxKSxSZSgibmdJZiIsYS5jb2xIZWFkZXJzVmlzaWJsZSl9fWZ1bmN0aW9uIGd4dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1pY29uIiw4NSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2Nv''@;'; put 'put ''bnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkuY29sbGFwc2UoZCkpfSksQ2UoKX19ZnVuY3Rpb24gdnh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDg2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNp''@;'; put 'put ''dDtyZXR1cm4gWnQoR2UoKS5leHBhbmQoZCkpfSksQ2UoKX19ZnVuY3Rpb24geXh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDg3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdCxoPVFpKDE2KTtyZXR1cm4gWnQo''@;'; put 'put ''R2UoKS5zZWFyY2hUYWJsZShoLGQpKX0pLENlKCl9fWZ1bmN0aW9uIGJ4dChsLGMpezEmbCYmKHllKDAsInNwYW4iLDg4KSxZZSgxLCIgTG9hZGluZy4uLiAiKSxDZSgpKX1mdW5jdGlvbiBfeHQobCxjKXsxJmwmJih5ZSgwLCJzcGFuIiw4OSksWWUoMSwiTG9hZGluZy4uLiIpLENlKCkpfWZ1''@;'; put 'put ''bmN0aW9uIHd4dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1pY29uIiw5MCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQsaD1RaSgxNik7cmV0dXJuIEdlKCkucmVsb2FkVGFibGVEYXRhKGQpLFp0KGgudmFsdWU9IiIpfSks''@;'; put 'put ''Q2UoKX19ZnVuY3Rpb24gQ3h0KGwsYyl7MSZsJiYoeWUoMCwiZGl2Iiw5NCksdG4oMSwiY2xyLXNwaW5uZXIiLDM0KSxDZSgpKX1mdW5jdGlvbiBTeHQobCxjKXtpZigxJmwmJnRuKDAsImhvdC10YWJsZSIsOTUpLDImbCl7Y29uc3QgYT1HZSgpLm5nVmFyLGY9R2UoKS4kaW1wbGljaXQsZD1H''@;'; put 'put ''ZSgpO1JlKCJob3RJZCIsImhvdEluc3RhbmNlX3ZpZXdib3hfIitmLmlkKSgicmVhZE9ubHkiLCEwKSgibW9kaWZ5Q29sV2lkdGgiLGQubWF4V2lkdGhDaGVrZXIpKCJjb3B5UGFzdGUiLGQudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5jb3B5UGFzdGUpKCJjb250ZXh0TWVudSIsZC52aWV3''@;'; put 'put ''Ym94VGFibGVzW2FdLmhvdFRhYmxlLmNvbnRleHRNZW51KSgibXVsdGlDb2x1bW5Tb3J0aW5nIiwhMCkoInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0Iiw1MCkoImRhdGEiLGQudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5kYXRhKSgiY29sSGVhZGVycyIsZC52aWV3Ym94VGFibGVzW2Fd''@;'; put 'put ''LmhvdFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixkLnZpZXdib3hUYWJsZXNbYV0uaG90VGFibGUuY29sdW1ucykoImZpbHRlcnMiLCEwKSgiZHJvcGRvd25NZW51IixkLnZpZXdib3hUYWJsZXNbYV0uaG90VGFibGUuZHJvcGRvd25NZW51KSgiaGVpZ2h0IixkLnZpZXdib3hUYWJsZXNb''@;'; put 'put ''YV0uaG90VGFibGUuaGVpZ2h0KSgiY2VsbHMiLGQudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5jZWxscykoIm1heFJvd3MiLGQudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5tYXhSb3dzKSgibWFudWFsQ29sdW1uUmVzaXplIiwhMCkoImxpY2Vuc2VLZXkiLGQudmlld2JveFRhYmxlc1th''@;'; put 'put ''XS5ob3RUYWJsZS5saWNlbnNlS2V5KX19ZnVuY3Rpb24gTXh0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2Iiw5MSksdHQoMSxDeHQsMiwwLCJkaXYiLDkyKSx0dCgyLFN4dCwxLDE3LCJob3QtdGFibGUiLDkzKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy5uZ1ZhcixmPUdlKCkuJGltcGxpY2l0O1dj''@;'; put 'put ''KCJkaXNwbGF5IixmLmNvbGxhcHNlZD8ibm9uZSI6IiIpLFNlKDEpLFJlKCJuZ0lmIixmLmxvYWRpbmdEYXRhJiZhPDApLFNlKDEpLFJlKCJuZ0lmIixhPi0xKX19Y29uc3Qga3h0PWZ1bmN0aW9uKGwsYyl7cmV0dXJue3g6bCx5OmN9fTtmdW5jdGlvbiBFeHQobCxjKXtpZigxJmwpe2NvbnN0''@;'; put 'put ''IGE9Wm4oKTt5ZSgwLCJkaXYiLDU5LDYwKSxFdCgibW91c2Vkb3duIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLmZvY3VzVmlld2JveChoKSl9KSgiY2RrRHJhZ0VuZGVkIixmdW5jdGlvbihkKXtjb25zdCBtPVV0KGEpLiRpbXBsaWNpdDtyZXR1''@;'; put 'put ''cm4gWnQoR2UoKS52aWV3Ym94RHJhZ0VuZGVkKGQsbSkpfSkseWUoMiwiZGl2Iiw2MSkoMywic3BhbiIsNjIpLFllKDQpLENlKCkseWUoNSwiZGl2Iiw2MyksdHQoNixneHQsMSwwLCJjbHItaWNvbiIsNjQpLHR0KDcsdnh0LDEsMCwiY2xyLWljb24iLDY1KSx5ZSg4LCJjbHItaWNvbiIsNjYp''@;'; put 'put ''LEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoKS5taW5pbWl6ZShoKSl9KSxDZSgpLHllKDksImNsci1pY29uIiw2NyksRXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLmNs''@;'; put 'put ''b3NlKGgpKX0pLENlKCkoKSgpLHllKDEwLCJzcGFuIiw2OCw2OSksRXQoImNka0RyYWdNb3ZlZCIsZnVuY3Rpb24oZCl7Y29uc3QgbT1VdChhKS4kaW1wbGljaXQsXz1RaSgxMSksTz1RaSgxKTtyZXR1cm4gWnQoR2UoKS5kcmFnTW92ZShfLE8sbSxkKSl9KSxDZSgpLHllKDEyLCJmb3JtIiw3''@;'; put 'put ''MCkoMTMsImRpdiIsNzEpKDE0LCJkaXYiLDcyKSgxNSwiaW5wdXQiLDczLDc0KSxFdCgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKCl7Y29uc3QgaD1VdChhKS4kaW1wbGljaXQsbT1RaSgxNik7cmV0dXJuIFp0KEdlKCkuc2VhcmNoVGFibGUobSxoKSl9KSxDZSgpLHR0KDE3LHl4dCwxLDAsImNs''@;'; put 'put ''ci1pY29uIiw3NSksdHQoMTgsYnh0LDIsMCwic3BhbiIsNzYpLENlKCkseWUoMTksImNsci1jaGVja2JveC1jb250YWluZXIiKSgyMCwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgyMSwiaW5wdXQiLDc3KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFp0KFV0KGEpLiRp''@;'; put 'put ''bXBsaWNpdC5zZWFyY2hOdW1lcmljPWQpfSksQ2UoKSx5ZSgyMiwibGFiZWwiKSxZZSgyMywiTnVtZXJpYyIpLENlKCkoKSgpKCkseWUoMjQsImRpdiIsMzkpLHR0KDI1LF94dCwyLDAsInNwYW4iLDc4KSx0dCgyNix3eHQsMSwwLCJjbHItaWNvbiIsNzkpLHllKDI3LCJhIiw4MCksRXQoImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0LG09UWkoMTYpO3JldHVybiBHZSgpLm9wZW5GaWx0ZXIoaCksWnQobS52YWx1ZT0iIil9KSx0bigyOCwiY2xyLWljb24iLDgxKSx5ZSgyOSwic3BhbiIsODIpLFllKDMwKSxDZSgpKCkseWUoMzEsImNsci1pY29uIiw4Myks''@;'; put 'put ''RXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9VXQoYSkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLm9wZW5UYWJsZUVkaXQoaCkpfSksQ2UoKSgpKCksdHQoMzIsTXh0LDMsNCwiZGl2Iiw4NCksQ2UoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZj1HZSgpO1djKCJkaXNwbGF5''@;'; put 'put ''IixhLm1pbmltaXplZD8ibm9uZSI6IiIpKCJ3aWR0aCIsYS53aWR0aCwicHgiKSgiaGVpZ2h0IixhLmhlaWdodCwicHgiKSgicG9pbnRlci1ldmVudHMiLGEuY29sbGFwc2VkPyJub25lIjoiIikoImJveC1zaGFkb3ciLGEuY29sbGFwc2VkPyJub25lIjoiIiksZ3IoImZvY3VzZWQiLGEuZm9j''@;'; put 'put ''dXNlZCksUmUoImNka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uIix3aCgzNCxreHQsYS54LGEueSkpKCJpZCIsInZpZXdib3hfIithLmlkKSxTZSg0KSxPMCgiICMiLGEuaWQsIiAiLGEubGlicmFyeSwiLiIsYS50YWJsZSwiICIpLFNlKDIpLFJlKCJuZ0lmIiwhYS5jb2xsYXBzZWQpLFNlKDEpLFJl''@;'; put 'put ''KCJuZ0lmIixhLmNvbGxhcHNlZCksU2UoMyksUmUoImlkIiwiaGFuZGxlX3ZpZXdib3hfIithLmlkKSxTZSgyKSxXYygiZGlzcGxheSIsYS5jb2xsYXBzZWQ/Im5vbmUiOiIiKSxTZSgzKSxSZSgidHlwZSIsYS5zZWFyY2hOdW1lcmljPyJudW1iZXIiOiJ0ZXh0IiksU2UoMiksUmUoIm5nSWYi''@;'; put 'put ''LCFhLnNlYXJjaExvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixhLnNlYXJjaExvYWRpbmcpLFNlKDMpLFJlKCJuZ01vZGVsIixhLnNlYXJjaE51bWVyaWMpLFNlKDQpLFJlKCJuZ0lmIixhLmxvYWRpbmdEYXRhKSxTZSgxKSxSZSgibmdJZiIsIWEubG9hZGluZ0RhdGEpLFNlKDIpLGdyKCJmaWx0''@;'; put 'put ''ZXItYWN0aXZlIiwiMCIhPT1hLmZpbHRlcl9wayksU2UoMiksYXIoYS5maWx0ZXJUZXh0KSxTZSgxKSxncigiZGlzYWJsZWQiLCFmLnRhYmxlRWRpdEV4aXN0cyhhKSksU2UoMSksUmUoIm5nVmFyIixmLmdldFZpZXdib3hUYWJsZUluZGV4KGEpKX19ZnVuY3Rpb24geHh0KGwsYyl7aWYoMSZs''@;'; put 'put ''JiZ0bigwLCJhcHAtcXVlcnkiLDk2LDk3KSwyJmwpe2NvbnN0IGE9R2UoKTtSZSgidmlld2JveElkIixudWxsPT1hLmZpbHRlcmluZ1ZpZXdib3g/bnVsbDphLmZpbHRlcmluZ1ZpZXdib3guaWQpfX1jb25zdCBBeHQ9ZnVuY3Rpb24obCxjLGEpe3JldHVybntjb2xIZWFkZXJzSGlkZGVuOmws''@;'; put 'put ''Y29sSGVhZGVyc1Zpc2libGU6YyxoZWFkZXJQa3M6YX19O2xldCBBNmU9KCgpPT57Y2xhc3MgbHtnZXQgdmlld2JveE1vZGFsKCl7cmV0dXJuIHRoaXMuX3ZpZXdib3hNb2RhbH1zZXQgdmlld2JveE1vZGFsKGEpe2lmKCExPT09dGhpcy5saWNlbmNlU3RhdGUudmFsdWUudmlld2JveCYmYSly''@;'; put 'put ''ZXR1cm4gdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCJWaWV3Ym94ZXMiKSx2b2lkIHRoaXMudmlld2JveE1vZGFsQ2hhbmdlLmVtaXQoITEpO3RoaXMuX3ZpZXdib3hNb2RhbD1hLGEmJnRoaXMudW5zZXRTZWxlY3RlZFZpZXdib3goKX1jb25zdHJ1Y3RvcihhLGYsZCxo''@;'; put 'put ''LG0sXyxPLFgsYWUscGUpe3RoaXMubmdab25lPWEsdGhpcy5saWNlbmNlU2VydmljZT1mLHRoaXMuc2FzU2VydmljZT1kLHRoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5zYXNTdG9yZVNlcnZpY2U9bSx0aGlzLmxvZ2dlclNlcnZpY2U9Xyx0aGlzLmhlbHBlclNlcnZpY2U9Tyx0aGlzLnJvdXRl''@;'; put 'put ''cj1YLHRoaXMuYWN0aXZhdGVkUm91dGU9YWUsdGhpcy5jZGY9cGUsdGhpcy5fdmlld2JveE1vZGFsPSExLHRoaXMudmlld2JveE1vZGFsQ2hhbmdlPW5ldyB4cix0aGlzLmxpYmluZm89bnVsbCx0aGlzLmxpYnJhcmllc0xvYWRpbmc9ITAsdGhpcy52aWV3Ym94ZXM9W10sdGhpcy5kZWZhdWx0''@;'; put 'put ''Q29uZmlnPXtpZDotMSxsaWJyYXJ5OiIiLHRhYmxlOiIiLHdpZHRoOjUwMCxoZWlnaHQ6MzAwLHg6MCx5OjE1MCxjb2x1bW5zOltdfSx0aGlzLnNhc2pzQ29uZmlnPW5ldyB2MS5TQVNqc0NvbmZpZyx0aGlzLmhvdFRhYmxlRGVmYXVsdD17ZGF0YTpbXSxoZWFkZXJQa3M6W10sJGRhdGFmb3Jt''@;'; put 'put ''YXRzOnt9LGFsbENvbEhlYWRlcnM6W10sY29sSGVhZGVyc0hpZGRlbjpbXSxjb2xIZWFkZXJzVmlzaWJsZTpbXSxjb2xIZWFkZXJzOltdLGNvbnRleHRNZW51OlsiY29weV93aXRoX2NvbHVtbl9oZWFkZXJzIiwiY29weV9jb2x1bW5faGVhZGVyc19vbmx5Il0sY29weVBhc3RlOntjb3B5Q29s''@;'; put 'put ''dW1uSGVhZGVyczohMCxjb3B5Q29sdW1uSGVhZGVyc09ubHk6ITB9LGNvbHVtbnM6W10sY29sczpbXSxoZWlnaHQ6IjEwMCUiLHNldHRpbmdzOnt9LGhpZGRlbkNvbHVtbnM6ITAsbWFudWFsQ29sdW1uTW92ZTohMSxhZnRlckdldENvbEhlYWRlcjp2b2lkIDAsbGljZW5zZUtleTp2b2lkIDAs''@;'; put 'put ''ZHJvcGRvd25NZW51OnZvaWQgMH0sdGhpcy52aWV3Ym94VGFibGVzPVtdLHRoaXMuZmlsdGVyPSExLHRoaXMuZmlsdGVyTG9hZGluZz0hMSx0aGlzLm51bGxWYXJpYWJsZXM9ITEsdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGUsdGhpcy5JbmZpbml0''@;'; put 'put ''eT0xLzAsdGhpcy5tYXhWaWV3Ym94ZXM9dGhpcy5saWNlbmNlU3RhdGUudmFsdWUudmlld2JveF9saW1pdD09PTEvMD82OnRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXR8fDYsdGhpcy5ob3RUYWJsZVJlZ2lzdGVyZXI9bmV3IEk1fW5nT25Jbml0KCl7dGhpcy5zYXNTdG9y''@;'; put 'put ''ZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKGY9Pnt0aGlzLmxpYnJhcmllcz1mLnNhc2xpYnN9KS5jYXRjaChmPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKGYpfSkuZmluYWxseSgoKT0+e3RoaXMubGlicmFyaWVzTG9hZGluZz0hMX0pLHRoaXMuX3F1ZXJ5PXRoaXMuc2FzU3RvcmVTZXJ2''@;'; put 'put ''aWNlLnF1ZXJ5LnN1YnNjcmliZShmPT57dGhpcy5jbGF1c2VzPWYub2JqLHRoaXMuZmlsdGVyTGliZHM9Zi5saWJkc30pLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJl''@;'; put 'put ''KGY9Pnt0aGlzLmhvdFRhYmxlRGVmYXVsdC5saWNlbnNlS2V5PWZ9KTtjb25zdCBhPXRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudmlld2JveGVzO2EmJighMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3g/KHNldFRpbWVvdXQoKCk9PnRoaXMuZXZl''@;'; put 'put ''bnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgiTGlua2luZyBWaWV3Ym94ZXMiKSksdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10se3JlbGF0aXZlVG86dGhpcy5hY3RpdmF0ZWRSb3V0ZSxxdWVyeVBhcmFtczp7fX0pKToodGhpcy52aWV3Ym94ZXM9dGhpcy5kZWNvZGVVcmxEYXRhKGEpLHNl''@;'; put 'put ''dFRpbWVvdXQoKCk9Pnt0aGlzLnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpfSkpKSx0aGlzLnJlTG9hZFZpZXdib3h0YWJsZXModGhpcy52aWV3Ym94ZXMpfW5nQWZ0ZXJWaWV3SW5pdCgpe31nZXQgdmlld2JveExpbWl0UmVhY2hlZCgpe3JldHVybiB0aGlzLnZpZXdib3hlcy5sZW5ndGg+PXRo''@;'; put 'put ''aXMubWF4Vmlld2JveGVzfWNsck1vZGFsT3BlbkNoYW5nZShhKXt0aGlzLnZpZXdib3hNb2RhbENoYW5nZS5lbWl0KGEpfWxpYnJhcnlPbkNsaWNrKGEpe2EudGFibGVzTG9hZGVkfHx0aGlzLmxvYWRUYWJsZXMoYS5saWJyYXJ5LkxJQlJBUllSRUYsYS5saWJyYXJ5KX10YWJsZU9uQ2xpY2so''@;'; put 'put ''YSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7aWYoZi52aWV3Ym94TGltaXRSZWFjaGVkKXJldHVybjtjb25zdCBkPXsuLi5mLmRlZmF1bHRDb25maWcsdGFibGU6YS5saWJUYWJsZSxsaWJyYXJ5OmEubGlicmFyeS5MSUJSQVJZTkFNRSxsb2FkaW5nRGF0YTohMCxmaWx0ZXJf''@;'; put 'put ''cGs6IjAiLGlkOmYudmlld2JveGVzLmxlbmd0aCsxLHg6d2luZG93LmlubmVyV2lkdGgtZi5kZWZhdWx0Q29uZmlnLndpZHRoLHk6MTUwfTtmLnZpZXdib3hlcy5wdXNoKGQpLHNldFRpbWVvdXQoKCk9PntmLnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpfSk7Y29uc3QgaD1gJHthLmxpYnJhcnku''@;'; put 'put ''TElCUkFSWVJFRn0uJHthLmxpYlRhYmxlfWA7eWllbGQgZi5sb2FkRGF0YShoLGQpLGQubG9hZGluZ0RhdGE9ITEsZi5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIiksZi5zbmFwVG9HcmlkKCl9KSgpfWxvYWRUYWJsZXMoYSxmKXt0aGlzLnNhc1N0b3JlU2VydmljZS52aWV3''@;'; put 'put ''VGFibGVzKGEpLnRoZW4oZD0+e2xldCBoPWQubXB0YWJsZXMubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBtLk1FTU5BTUV9KTt0aGlzLmxpYmluZm89ZC5saWJpbmZvfHxbXSx0aGlzLnRhYmxlcz1oLGYmJihmLnRhYmxlcz1oLGYubGliaW5mbz10aGlzLmxpYmluZm8sZi5sb2FkaW5nVGFibGVz''@;'; put 'put ''PSExLGgubGVuZ3RoPjAmJihmLmV4cGFuZGVkPSEwKSl9KS5jYXRjaChkPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKGQpfSl9cmVsb2FkRGF0YShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaCxtKT0+e2xldCBfPWQudmlld2Jv''@;'; put 'put ''eFRhYmxlcy5maW5kKE89Pk8udmlld2JveElkPT09Zi5pZCk7ZC5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGEoYSxwYXJzZUludChmLmZpbHRlcl9wa3x8IjAiKSkudGhlbihPPT57XyYmKF8uaG90VGFibGUuZGF0YT1PLnZpZXdkYXRhKSxoKG51bGwpfSkuY2F0Y2goKCk9PnttKCl9KX0pfSko''@;'; put 'put ''KX1sb2FkRGF0YShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaCxtKT0+e2xldCBfPSExLE89ZC52aWV3Ym94VGFibGVzLmZpbmQoWD0+WC52aWV3Ym94SWQ9PT1mLmlkKTtPJiYoIjAiPT09Zi5maWx0ZXJfcGt8fCFmLmZpbHRlcl9w''@;'; put 'put ''aykmJmgoKSxkLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YShhLHBhcnNlSW50KGYuZmlsdGVyX3BrfHwiMCIpKS50aGVuKFg9PntPP189ITA6Tz17dmlld2JveElkOmYuaWQsdmlld2JveExpYkRhdGFzZXQ6YSxob3RUYWJsZTpfRChkLmhvdFRhYmxlRGVmYXVsdCl9LE8uaG90VGFibGUuZGF0''@;'; put 'put ''YT1YLnZpZXdkYXRhLE8uaG90VGFibGUuJGRhdGFmb3JtYXRzPVguJHZpZXdkYXRhLE8uaG90VGFibGUuY29scz1YLmNvbHMsYkooTy5ob3RUYWJsZS5jb2xzLFtdLFguJHZpZXdkYXRhKTtsZXQgYWU9W10scGU9W107Zm9yKGxldCBiZSBpbiBYLnZpZXdkYXRhWzBdKWJlJiZwZS5wdXNoKGJl''@;'; put 'put ''KTtmb3IobGV0IGJlPTA7YmU8cGUubGVuZ3RoO2JlKyspYWUucHVzaCh7ZGF0YTpwZVtiZV19KTtPLmhvdFRhYmxlLmhlYWRlclBrcz1fRChYLnNhc3BhcmFtc1swXS5QS19GSUVMRFMuc3BsaXQoIiAiKSksTy5ob3RUYWJsZS5hbGxDb2xIZWFkZXJzPXBlLmZpbHRlcihiZT0+IU8uaG90VGFi''@;'; put 'put ''bGUuaGVhZGVyUGtzLmluY2x1ZGVzKGJlKSksTy5ob3RUYWJsZS5jb2xIZWFkZXJzSGlkZGVuPV9EKE8uaG90VGFibGUuYWxsQ29sSGVhZGVycyksTy5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZT1wZS5maWx0ZXIoYmU9Pk8uaG90VGFibGUuaGVhZGVyUGtzLmluY2x1ZGVzKGJlKSksTy5o''@;'; put 'put ''b3RUYWJsZS5jb2xIZWFkZXJzPXBlLE8uaG90VGFibGUuY29sdW1ucz1hZSxmLmNvbHVtbnMmJmYuY29sdW1ucy5sZW5ndGg+MD8oTy5ob3RUYWJsZS5tYW51YWxDb2x1bW5Nb3ZlPWYuY29sdW1ucyxmLmNvbHVtbnM/Lm1hcCgoYmUseGUpPT57Y29uc3QgVmU9cGVbYmVdLFplPU8uaG90VGFi''@;'; put 'put ''bGUuY29sSGVhZGVyc0hpZGRlbi5pbmRleE9mKFZlKTtaZT4tMSYmKE8uaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbi5zcGxpY2UoWmUsMSksTy5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZVt4ZV09VmUpfSkpOk8uaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUucHVzaCguLi5PLmhvdFRh''@;'; put 'put ''YmxlLmNvbEhlYWRlcnNIaWRkZW4uc3BsaWNlKDAsMTApKSxPLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlPU8uaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUuZmlsdGVyKGJlPT5iZSksX3x8ZC52aWV3Ym94VGFibGVzLnB1c2goTyksZi5xdWVyeT1kLmhlbHBlclNlcnZpY2UuZGVlcENs''@;'; put 'put ''b25lKFgucXVlcnkpLGYuZmlsdGVyVGV4dD1YLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVCxzZXRUaW1lb3V0KCgpPT57ZC51cGRhdGVIb3RDb2x1bW5zKE8uaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbnx8W10sZi5pZCk7Y29uc3QgYmU9ZC5nZXRWaWV3Ym94SG90SW5zdGFuY2UoZi5pZCk7''@;'; put 'put ''YmU/LnVwZGF0ZVNldHRpbmdzKHttYW51YWxDb2x1bW5Nb3ZlOk8uaG90VGFibGUubWFudWFsQ29sdW1uTW92ZSxhZnRlckdldENvbEhlYWRlcjooeGUsVmUpPT57Y29uc3QgWmU9YmU/LmNvbFRvUHJvcCh4ZSk7WmUmJk8uaG90VGFibGUuaGVhZGVyUGtzLmluZGV4T2YoWmUpPi0xJiZWZS5j''@;'; put 'put ''bGFzc0xpc3QuYWRkKCJwcmltYXJ5S2V5SGVhZGVyU3R5bGUiKX19KSxiZT8ucmVuZGVyKCksZC5zZWxlY3RlZFZpZXdib3gmJmQucmVzZXRTZWxlY3RlZFZpZXdib3goZil9KSxoKCl9KS5jYXRjaChYPT57ZC5sb2dnZXJTZXJ2aWNlLmVycm9yKFgpLG0oKX0pfSl9KSgpfXJlTG9hZFZpZXdi''@;'; put 'put ''b3h0YWJsZXMoYSl7YS5tYXAoZj0+e2NvbnN0IGQ9YCR7Zi5saWJyYXJ5fS4ke2YudGFibGV9YDtmLmxvYWRpbmdEYXRhPSEwLHRoaXMubG9hZERhdGEoZCxmKS50aGVuKCgpPT57Zi5sb2FkaW5nRGF0YT0hMX0pfSl9bWF4V2lkdGhDaGVrZXIoYSxmKXtyZXR1cm4gYT4yMDA/MjAwOmF9Z2V0''@;'; put 'put ''Vmlld2JveFRhYmxlSW5kZXgoYSl7cmV0dXJuIHRoaXMudmlld2JveFRhYmxlcy5maW5kSW5kZXgoZD0+ZC52aWV3Ym94SWQ9PT1hLmlkKX1yZXNpemUoYSxmKXtjb25zdCBkPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09ZC5sZWZ0LWgu''@;'; put 'put ''bGVmdCtkLndpZHRoLF89ZC50b3AtaC50b3ArZC5oZWlnaHQ7cmV0dXJuIGYuc3R5bGUud2lkdGg9bSsicHgiLGYuc3R5bGUuaGVpZ2h0PV8rInB4Iix0aGlzLnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpLHRoaXMuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoMWUzLCgpPT57dGhpcy52aWV3''@;'; put 'put ''Ym94Q2hhbmdlZCgpLHRoaXMuZXZlbnRTZXJ2aWNlLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpfSkse3dpZHRoOm0saGVpZ2h0Ol99fWRyYWdNb3ZlKGEsZixkLGgpe3RoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57Y29uc3QgbT10aGlzLnJlc2l6ZShhLGYpO2Qud2lkdGg9bS53''@;'; put 'put ''aWR0aCxkLmhlaWdodD1tLmhlaWdodH0pfXNldEFsbEhhbmRsZVRyYW5zZm9ybSgpe3RoaXMucmVzaXplQm94UXVlcnkuZm9yRWFjaChhPT57Y29uc3QgZj1hLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD1gaGFuZGxlXyR7YS5uYXRpdmVFbGVtZW50LmlkfWAsaD10''@;'; put 'put ''aGlzLmRyYWdIYW5kbGVDb3JuZXJRdWVyeS5maW5kKChtLF8pPT5tLm5hdGl2ZUVsZW1lbnQuaWQ9PT1kKTt0aGlzLnNldEhhbmRsZVRyYW5zZm9ybShoPy5uYXRpdmVFbGVtZW50LGYsImJvdGgiKX0pfXNldEhhbmRsZVRyYW5zZm9ybShhLGYsZCl7Y29uc3QgaD1hLmdldEJvdW5kaW5nQ2xp''@;'; put 'put ''ZW50UmVjdCgpO2xldCBtPWYud2lkdGgtaC53aWR0aCxfPWYuaGVpZ2h0LWguaGVpZ2h0O20rPTUsXys9NSwieCI9PT1kJiYoYS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgke219cHgsIDApYCksInkiPT09ZCYmKGEuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoMCwgJHtffXB4KWAp''@;'; put 'put ''LCJib3RoIj09PWQmJihhLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7bX1weCwgJHtffXB4KWApfWZvY3VzVmlld2JveChhKXt0aGlzLnZpZXdib3hlcy5tYXAoZj0+e2YuZm9jdXNlZD0hMX0pLGEuZm9jdXNlZD0hMH12aWV3Ym94RHJhZ0VuZGVkKGEsZil7bGV0IGg9YS5zb3VyY2Uu''@;'; put 'put ''Z2V0Um9vdEVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtmLng9aC5sZWZ0LGYueT1oLnRvcCx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9c25hcFRvR3JpZCgpe2NvbnN0IGE9d2luZG93LmlubmVyV2lkdGgsZj13aW5kb3cuaW5uZXJIZWlnaHQsXz1NYXRoLmNlaWwodGhpcy52aWV3''@;'; put 'put ''Ym94ZXMubGVuZ3RoLzIpLE89TWF0aC5mbG9vcih0aGlzLnZpZXdib3hlcy5sZW5ndGgvMikscGU9KGEtNSooXysxKSkvXyxiZT0oYS01KihPKzEpKS9PO2xldCBWZT0wLGx0PShmLTI1MC02MCkvMixkdD0wLGd0PTA7Zm9yKGxldCBqdD0wO2p0PHRoaXMudmlld2JveGVzLmxlbmd0aDtqdCsr''@;'; put 'put ''KXtsZXQgcm49dGhpcy52aWV3Ym94ZXNbanRdLFh0PSEoanQ+Xy0xKTtjb25zdCB5bj1YdD9wZTpiZTshWHQmJjA9PT1ndCYmKGR0PTAsZ3QrKyxWZT0wKSxybi54PTUrVmUrZHQqKHluKzUpLHJuLnk9MjUwK2d0KihsdCs1KSxybi53aWR0aD15bixybi5oZWlnaHQ9bHQsZHQrK310aGlzLnZp''@;'; put 'put ''ZXdib3hDaGFuZ2VkKCksc2V0VGltZW91dCgoKT0+e3RoaXMuc2V0QWxsSGFuZGxlVHJhbnNmb3JtKCl9KX1taW5pbWl6ZUFsbCgpe3RoaXMudmlld2JveGVzLmZvckVhY2goYT0+e2EubWluaW1pemVkPSEwfSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXJlc3RvcmVBbGwoKXt0aGlzLnZpZXdi''@;'; put 'put ''b3hlcy5mb3JFYWNoKGE9PnthLm1pbmltaXplZD0hMX0pLHRoaXMudmlld2JveENoYW5nZWQoKX1yZXNldFBvc1NpemUoYSl7YS54PXdpbmRvdy5pbm5lcldpZHRoLXRoaXMuZGVmYXVsdENvbmZpZy53aWR0aCxhLnk9dGhpcy5kZWZhdWx0Q29uZmlnLnksYS53aWR0aD10aGlzLmRlZmF1bHRD''@;'; put 'put ''b25maWcud2lkdGgsYS5oZWlnaHQ9dGhpcy5kZWZhdWx0Q29uZmlnLmhlaWdodCx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9bWluaW1pemUoYSl7YS5taW5pbWl6ZWQ9ITAsdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXJlc3RvcmUoYSl7YS5taW5pbWl6ZWQ9ITEsdGhpcy52aWV3Ym94Q2hhbmdlZCgp''@;'; put 'put ''fWNvbGxhcHNlKGEpe2EuY29sbGFwc2VkPSEwLHRoaXMudmlld2JveENoYW5nZWQoKX1leHBhbmQoYSl7YS5jb2xsYXBzZWQ9ITEsdGhpcy52aWV3Ym94Q2hhbmdlZCgpfWNsb3NlKGEpe2NvbnN0IGY9dGhpcy52aWV3Ym94ZXMuZmluZEluZGV4KGg9PmguaWQ9PT1hLmlkKSxkPXRoaXMudmll''@;'; put 'put ''d2JveFRhYmxlcy5maW5kSW5kZXgoaD0+aC52aWV3Ym94SWQ9PT1hLmlkKTtmPi0xJiZ0aGlzLnZpZXdib3hlcy5zcGxpY2UoZiwxKSxkPi0xJiZ0aGlzLnZpZXdib3hUYWJsZXMuc3BsaWNlKGQsMSksdGhpcy5zZWxlY3RlZFZpZXdib3g/LmlkPT09YS5pZCYmdGhpcy51bnNldFNlbGVjdGVk''@;'; put 'put ''Vmlld2JveCgpLEpuLnZpZXdib3hlc1thLmlkXT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGtqKSx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9c2VsZWN0Vmlld2JveChhKXt2b2lkIDA9PT10aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlJiZ2b2lkIDA9PT10aGlzLnNlbGVjdGVkVmlld2Jv''@;'; put 'put ''eD90aGlzLnJlc2V0U2VsZWN0ZWRWaWV3Ym94KGEpOmEuaWQ9PT10aGlzLnNlbGVjdGVkVmlld2JveD8uaWQ/dGhpcy51bnNldFNlbGVjdGVkVmlld2JveCgpOnRoaXMucmVzZXRTZWxlY3RlZFZpZXdib3goYSl9Y29sdW1uc0Ryb3AoYSl7dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90''@;'; put 'put ''VGFibGUuY29sSGVhZGVyc0hpZGRlbiYmKGEucHJldmlvdXNDb250YWluZXI9PT1hLmNvbnRhaW5lcj9kNmUoYS5jb250YWluZXIuZGF0YSxhLnByZXZpb3VzSW5kZXgsYS5jdXJyZW50SW5kZXgpOmZ1bmN0aW9uIE1rdChsLGMsYSxmKXtjb25zdCBkPVdFKGEsbC5sZW5ndGgtMSksaD1XRShm''@;'; put 'put ''LGMubGVuZ3RoKTtsLmxlbmd0aCYmYy5zcGxpY2UoaCwwLGwuc3BsaWNlKGQsMSlbMF0pfShhLnByZXZpb3VzQ29udGFpbmVyLmRhdGEsYS5jb250YWluZXIuZGF0YSxhLnByZXZpb3VzSW5kZXgsYS5jdXJyZW50SW5kZXgpLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUmJiJv''@;'; put 'put ''YmplY3QiPT10eXBlb2YgdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzKSYmdGhpcy51cGRhdGVDb2x1bW5PcmRlckhvdChhLml0ZW0uZGF0YSxhLmN1cnJlbnRJbmRleCx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJZCl9b25Db2xzZWFyY2hD''@;'; put 'put ''aGFuZ2UoYSxmLGQpe2NvbnN0IGg9ZC5pbmRleE9mKGYpO2Quc3BsaWNlKGgsMSksYS52YWx1ZT0iIix0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZSYmKHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUucHVzaChmKSx0aGlzLnVw''@;'; put 'put ''ZGF0ZUhvdENvbHVtbnModGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbix0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJZCksdGhpcy51cGRhdGVDb2x1bW5PcmRlckhvdChmLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFi''@;'; put 'put ''bGUuY29sSGVhZGVyc1Zpc2libGUubGVuZ3RoLTEsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94SWQpKX1vbkNvbFJlbW92ZShhKXtpZih0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZSl7Y29uc3QgZj10aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxl''@;'; put 'put ''LmNvbEhlYWRlcnNWaXNpYmxlLmluZGV4T2YoYSk7dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZS5zcGxpY2UoZiwxKSx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4ucHVzaChhKSx0aGlzLnVwZGF0''@;'; put 'put ''ZUhvdENvbHVtbnModGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbix0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJZCksdGhpcy51cGRhdGVDb2x1bW5PcmRlckhvdChhLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUu''@;'; put 'put ''Y29sSGVhZGVyc1Zpc2libGUubGVuZ3RoLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUudmlld2JveElkKX19cmVzZXRTZWxlY3RlZFZpZXdib3goYSl7dGhpcy5zZWxlY3RlZFZpZXdib3g9YSx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPXRoaXMudmlld2JveFRhYmxlcy5maW5kKGY9PmYu''@;'; put 'put ''dmlld2JveElkPT09YS5pZCl9dW5zZXRTZWxlY3RlZFZpZXdib3goKXt0aGlzLnNlbGVjdGVkVmlld2JveD12b2lkIDAsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT12b2lkIDB9c3RvcFByb3BhZ2F0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9b3BlbkZpbHRlcihhKXt0aGlzLnNlbGVj''@;'; put 'put ''dFZpZXdib3goYSk7Y29uc3QgZj10aGlzLnZpZXdib3hUYWJsZXNbdGhpcy5nZXRWaWV3Ym94VGFibGVJbmRleChhKV07dGhpcy5maWx0ZXJMaWJkcz1gJHthLmxpYnJhcnl9LiR7YS50YWJsZX1gLHRoaXMuZmlsdGVyaW5nVmlld2JveD1hLHRoaXMuZmlsdGVyPSEwLHRoaXMuY2RmLmRldGVj''@;'; put 'put ''dENoYW5nZXMoKSx0aGlzLnNhc1N0b3JlU2VydmljZS5zZXRRdWVyeVZhcmlhYmxlcyh0aGlzLmZpbHRlckxpYmRzLGYuaG90VGFibGUuY29scyl9b3BlblRhYmxlRWRpdChhKXtjb25zdCBmPWEubGlicmFyeSsiLiIrYS50YWJsZTtsZXQgZD1sb2NhdGlvbi5ocmVmLnNsaWNlKDAsbG9jYXRp''@;'; put 'put ''b24uaHJlZi5pbmRleE9mKCIjIikpO2Q9YCR7ZH0jL2VkaXRvci8ke2Z9YCx3aW5kb3cub3BlbihkLCJfYmxhbmsiKX1yZXNldEZpbHRlcigpe3RoaXMuZmlsdGVyaW5nVmlld2JveCYmKHRoaXMuZmlsdGVyaW5nVmlld2JveC5maWx0ZXJfcGs9IjAiLHRoaXMucmVsb2FkVGFibGVEYXRhKHRo''@;'; put 'put ''aXMuZmlsdGVyaW5nVmlld2JveCksdGhpcy5maWx0ZXI9ITEsdGhpcy52aWV3Ym94Q2hhbmdlZCgpLEpuLnZpZXdib3hlc1t0aGlzLmZpbHRlcmluZ1ZpZXdib3guaWRdPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoa2opKX1zZW5kQ2xhdXNlKCl7dGhpcy5maWx0ZXJMb2FkaW5nPSEw''@;'; put 'put ''O2xldCBhPVtdLGY9W107aWYodHlwZW9mIHRoaXMuY2xhdXNlcz4idSIpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRoaXMuZmlsdGVyTG9hZGluZz0hMSk7e2xldCBkPXRoaXMuY2xhdXNlcy5xdWVyeU9iajtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKyl7Y29uc3QgbT1k''@;'; put 'put ''W2hdLmVsZW1lbnRzO2E9bS5maWx0ZXIoZnVuY3Rpb24oXyl7cmV0dXJuIG51bGw9PT1fLnZhcmlhYmxlfSksYS5sZW5ndGgmJmYucHVzaChtKX19aWYoZi5sZW5ndGgpcmV0dXJuIHRoaXMubnVsbFZhcmlhYmxlcz0hMCx2b2lkKHRoaXMuZmlsdGVyTG9hZGluZz0hMSk7dHJ5e2lmKHZvaWQg''@;'; put 'put ''MCE9PXRoaXMuY2xhdXNlcyYmdGhpcy5maWx0ZXJMaWJkcyl7Y29uc3QgZD17Z3JvdXBMb2dpYzp0aGlzLmNsYXVzZXMuZ3JvdXBMb2dpYyxmaWx0ZXJHcm91cHM6W119O3RoaXMuY2xhdXNlcy5xdWVyeU9iai5mb3JFYWNoKG09Pntjb25zdCBfPXtmaWx0ZXJDbGF1c2VzOltdfTttLmVsZW1l''@;'; put 'put ''bnRzLmZvckVhY2goTz0+e18uZmlsdGVyQ2xhdXNlcy5wdXNoKHRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoTykpfSksXy5jbGF1c2VMb2dpYz1tLmNsYXVzZUxvZ2ljLGQuZmlsdGVyR3JvdXBzLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShfKSl9KTtjb25zdCBoPXRo''@;'; put 'put ''aXMuc2FzU3RvcmVTZXJ2aWNlLmNyZWF0ZUZpbHRlclF1ZXJ5VGFibGUoZCk7dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2F2ZVF1ZXJ5KHRoaXMuZmlsdGVyTGliZHMsaCkudGhlbihtPT57dGhpcy5maWx0ZXJpbmdWaWV3Ym94LmZpbHRlcl9waz1tLnJlc3VsdFswXS5GSUxURVJfUkssdGhpcy5s''@;'; put 'put ''b2FkRGF0YSh0aGlzLmZpbHRlckxpYmRzLHRoaXMuZmlsdGVyaW5nVmlld2JveCkudGhlbigoKT0+e3RoaXMuZmlsdGVyPSExLHRoaXMuZmlsdGVyTG9hZGluZz0hMX0pLHRoaXMudmlld2JveENoYW5nZWQoKX0pLmNhdGNoKG09Pnt0aGlzLmZpbHRlckxvYWRpbmc9ITF9KX19Y2F0Y2h7dGhp''@;'; put 'put ''cy5maWx0ZXJMb2FkaW5nPSExfX1zZWFyY2hUYWJsZShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2Yuc2VhcmNoTG9hZGluZz0hMDtsZXQgaD1hLnZhbHVlLG09Zi5saWJyYXJ5KyIuIitmLnRhYmxlLF89cGFyc2VJbnQoZi5maWx0ZXJfcGt8fCIwIik7Y29uc3QgTz1k''@;'; put 'put ''LnZpZXdib3hUYWJsZXMuZmluZChYPT5YLnZpZXdib3hJZD09PWYuaWQpO08mJih5aWVsZCBkLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YVNlYXJjaChoLGYuc2VhcmNoTnVtZXJpYyxtLF8pLnRoZW4oWD0+e1guc2FzcGFyYW1zfHxYLnZpZXdEYXRhP08uaG90VGFibGUuZGF0YT1YLnZpZXdk''@;'; put 'put ''YXRhOmYuc2VhcmNoTG9hZGluZz0hMH0pLmNhdGNoKFg9PntkLmxvZ2dlclNlcnZpY2UuZXJyb3IoWCl9KSxmLnNlYXJjaExvYWRpbmc9ITEpfSkoKX1yZWxvYWRUYWJsZURhdGEoYSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7Y29uc3QgZD1gJHthLmxpYnJhcnl9LiR7YS50''@;'; put 'put ''YWJsZX1gO2EubG9hZGluZ0RhdGE9ITAseWllbGQgZi5yZWxvYWREYXRhKGQsYSksYS5sb2FkaW5nRGF0YT0hMSxmLmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pKCl9dXBkYXRlSG90Q29sdW1ucyhhLGYpe3RoaXMudXBkYXRlSGlkZGVuQ29sdW1uc0hvdChhLGYpLHRo''@;'; put 'put ''aXMuc2V0Q29sdW1uT3JkZXIoZil9dXBkYXRlQ29sdW1uT3JkZXJIb3QoYSxmLGQpe2NvbnN0IGg9dGhpcy5nZXRWaWV3Ym94SG90SW5zdGFuY2UoZCk7aWYoaCl7Y29uc3QgbT1oLnByb3BUb0NvbChhKTtoLmdldFBsdWdpbigibWFudWFsQ29sdW1uTW92ZSIpLm1vdmVDb2x1bW4obSxmKSxo''@;'; put 'put ''LnJlbmRlcigpLHRoaXMuc2V0Q29sdW1uT3JkZXIoZCl9fXRhYmxlRWRpdEV4aXN0cyhhKXtjb25zdCBmPUpuLmVkaXRvci5saWJzQW5kVGFibGVzLGQ9YS5saWJyYXJ5O3JldHVybiEhZltkXSYmZltkXS5pbmNsdWRlcyhhLnRhYmxlKX1zZXRDb2x1bW5PcmRlcihhKXtjb25zdCBmPXRoaXMu''@;'; put 'put ''dmlld2JveGVzLmZpbmQoZD0+ZC5pZD09PWEpO2lmKGYpe2NvbnN0IGQ9dGhpcy5jcmVhdGVDb2x1bW5PcmRlcihhKTtmLmNvbHVtbnM9ZC5sZW5ndGg+MD9kOmYuY29sdW1uc310aGlzLnZpZXdib3hDaGFuZ2VkKCl9Y3JlYXRlQ29sdW1uT3JkZXIoYSl7Y29uc3QgZj10aGlzLmdldFZpZXdi''@;'; put 'put ''b3hIb3RJbnN0YW5jZShhKTtpZighZilyZXR1cm5bXTtjb25zdCBkPWYuZ2V0Q29sSGVhZGVyKCksaD10aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzO2lmKCFoKXJldHVybltdO2NvbnN0IG09dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGU/''@;'; put 'put ''LmNvbEhlYWRlcnNWaXNpYmxlLmxlbmd0aHx8NSxfPVtdO3JldHVybiBkLm1hcCgoTyxYKT0+e2lmKFg8bSl7Y29uc3QgYWU9aC5pbmRleE9mKE8pO2FlPi0xJiZfLnB1c2goYWUpfX0pLF99dXBkYXRlSGlkZGVuQ29sdW1uc0hvdChhLGYpe2NvbnN0IGQ9dGhpcy5nZXRWaWV3Ym94SG90SW5z''@;'; put 'put ''dGFuY2UoZik7aWYoZCl7Y29uc3QgaD1hLm1hcChtPT5kLnByb3BUb0NvbChtKSk7ZC51cGRhdGVTZXR0aW5ncyh7aGlkZGVuQ29sdW1uczp7Y29sdW1uczpofX0pLGQucmVuZGVyKCl9fWdldFZpZXdib3hIb3RJbnN0YW5jZShhKXtyZXR1cm4gYT90aGlzLmhvdFRhYmxlUmVnaXN0ZXJlci5n''@;'; put 'put ''ZXRJbnN0YW5jZShgaG90SW5zdGFuY2Vfdmlld2JveF8ke2F9YCk6dm9pZCAwfXZpZXdib3hDaGFuZ2VkKCl7bGV0IGE7Y29uc3QgZj10aGlzLmVuY29kZVVybERhdGEodGhpcy52aWV3Ym94ZXMpO2YubGVuZ3RoPjAmJihhPXt2aWV3Ym94ZXM6Zn0pLHRoaXMucm91dGVyLm5hdmlnYXRlKFtd''@;'; put 'put ''LHtyZWxhdGl2ZVRvOnRoaXMuYWN0aXZhdGVkUm91dGUscXVlcnlQYXJhbXM6YX0pLHRoaXMucHJlcGFyZUZpbHRlckNhY2hlKCl9cHJlcGFyZUZpbHRlckNhY2hlKCl7Zm9yKGxldCBhIG9mIHRoaXMudmlld2JveGVzKWlmKEpuLnZpZXdib3hlc1thLmlkXXx8KEpuLnZpZXdib3hlc1thLmlk''@;'; put 'put ''XT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGtqKSksYS5xdWVyeSYmYS5xdWVyeS5sZW5ndGg+MCl7Y29uc3QgZj10aGlzLnZpZXdib3hUYWJsZXMuZmluZChoPT5oLnZpZXdib3hJZD09PWEuaWQpLGQ9YHZpZXdib3hlcy4ke2EuaWR9YDtKbi52aWV3Ym94ZXNbYS5pZF0uZmlsdGVy''@;'; put 'put ''LnF1ZXJ5PWEucXVlcnksSm4udmlld2JveGVzW2EuaWRdLmZpbHRlci5saWJkcz1hLmxpYnJhcnkrIi4iK2EudGFibGUsdGhpcy5zYXNTdG9yZVNlcnZpY2UuaW5pdGlhbGl6ZUdsb2JhbEZpbHRlckNsYXVzZShkLGY/LmhvdFRhYmxlLmNvbHMpfX1lbmNvZGVVcmxEYXRhKGEpe2xldCBmPSIi''@;'; put 'put ''O3JldHVybiBhLm1hcCgoZCxoKT0+e2YrPWAke2QuaWR9LSR7ZC5saWJyYXJ5fS0ke2QudGFibGV9LSR7ZC53aWR0aH0tJHtkLmhlaWdodH0tJHtkLnh9LSR7ZC55fS0ke2QuY29sbGFwc2VkPzE6MH0tJHtkLm1pbmltaXplZD8xOjB9LSR7ZC5maWx0ZXJfcGt8fDB9JHtkLmNvbHVtbnMmJmQu''@;'; put 'put ''Y29sdW1ucy5sZW5ndGg+MD8iLSIrZC5jb2x1bW5zPy5qb2luKCIsIik6IiJ9YCxoIT09YS5sZW5ndGgtMSYmKGYrPSI7Iil9KSxmfWRlY29kZVVybERhdGEoYSl7bGV0IGQ9W107cmV0dXJuIGEuc3BsaXQoIjsiKS5tYXAobT0+e2NvbnN0IF89bS5zcGxpdCgiLSIpO2QucHVzaCh7aWQ6cGFy''@;'; put 'put ''c2VJbnQoX1swXSksbGlicmFyeTpfWzFdLHRhYmxlOl9bMl0sd2lkdGg6cGFyc2VJbnQoX1szXSksaGVpZ2h0OnBhcnNlSW50KF9bNF0pLHg6cGFyc2VJbnQoX1s1XSkseTpwYXJzZUludChfWzZdKSxjb2xsYXBzZWQ6ISFwYXJzZUludChfWzddKSxtaW5pbWl6ZWQ6ISFwYXJzZUludChfWzhd''@;'; put 'put ''KSxjb2x1bW5zOl9bMTBdPy5zcGxpdCgiLCIpLm1hcChPPT5wYXJzZUludChPKSl8fFtdLGZpbHRlcl9wazpfWzldfSl9KSxkfW5nT25EZXN0cm95KCl7dGhpcy5fcXVlcnk/LnVuc3Vic2NyaWJlKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0''@;'; put 'put ''KFVvKSxydChiMSkscnQocGwpLHJ0KFJzKSxydChMZCkscnQoeTEpLHJ0KFB1KSxydChMYSkscnQodHUpLHJ0KFVsKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC12aWV3Ym94ZXMiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiYoTm8oSkV0LDUp''@;'; put 'put ''LE5vKFFFdCw1KSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5yZXNpemVCb3hRdWVyeT1kKSx1aShkPWNpKCkpJiYoZi5kcmFnSGFuZGxlQ29ybmVyUXVlcnk9ZCl9fSxpbnB1dHM6e3ZpZXdib3hNb2RhbDoidmlld2JveE1vZGFsIn0sb3V0cHV0czp7dmlld2JveE1vZGFsQ2hhbmdlOiJ2''@;'; put 'put ''aWV3Ym94TW9kYWxDaGFuZ2UifSxkZWNsczo1Nix2YXJzOjIzLGNvbnN0czpbWyJhcHBEcmFnTmRyb3AiLCIiLDEsInJvb3QtbW9kYWwiLCJwb3NpdGlvbi1yZWxhdGl2ZSIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsT3BlbkNo''@;'; put 'put ''YW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsiY2xhc3MiLCJsaWNlbmNlLW5vdGljZSIsNCwibmdJZiJdLFsxLCJtb2RhbC1ib2R5IiwiZC1mbGV4Il0sWzEsImFkZC1uZXciLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbMSwibXQtMC1pIl0sWzEsInctMTAwIl0sWyJjbGFzcyIsIm15''@;'; put 'put ''LTEwLW14LWF1dG8gdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwibS0wIHZpZXdib3gtbGltaXQtbm90aWNlIiw0LCJuZ0lmIl0sWzMsImxpYnJhcnlMaXN0IiwibGlicmFyeU9uQ2xpY2tFbWl0dGVyIiwidGFibGVPbkNsaWNrRW1pdHRlciIsNCwibmdJZiJdLFsxLCJjdXJyZW50''@;'; put 'put ''bHktb3BlbiJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iXSxbInJvbGUiLCJ0b29sdGlwIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsIm1sLTMiLDMsImNsaWNrIl0sWyJzaGFw''@;'; put 'put ''ZSIsImdyaWQtdmlldyIsInNpemUiLCIxOSJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbInNoYXBlIiwibWludXMiLCJzaXplIiwiMTkiXSxbInNoYXBlIiwid2luZG93LXJlc3RvcmUiLCJzaXplIiwiMTkiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgdy0xMDAgbS0wIiw0LCJuZ0lmIl0sWyJj''@;'; put 'put ''bGFzcyIsIm9wZW4tdmlld2JveCBkLWZsZXggY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVuIGNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLDMsInNlbGVjdGVkIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJj''@;'; put 'put ''bHItYWxpZ24taXRlbXMtY2VudGVyIiwibXQtMTAiXSxbMSwibS0wIl0sWyJjbGFzcyIsImNvbmZpZ3VyYXRpb24td3JhcHBlciIsImNka0Ryb3BMaXN0R3JvdXAiLCIiLDQsIm5nVmFyIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRu''@;'; put 'put ''LW91dGxpbmUiLDMsImNsaWNrIl0sWzEsInZpZXdib3hlcy1jb250YWluZXIiXSxbImNsYXNzIiwidmlld2JveCIsImNka0RyYWdCb3VuZGFyeSIsIi52aWV3Ym94ZXMtY29udGFpbmVyIiwiY2RrRHJhZyIsIiIsInRhYmluZGV4IiwiMCIsMywiZm9jdXNlZCIsImRpc3BsYXkiLCJ3aWR0aCIs''@;'; put 'put ''ImhlaWdodCIsInBvaW50ZXItZXZlbnRzIiwiYm94LXNoYWRvdyIsImNka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uIiwiaWQiLCJtb3VzZWRvd24iLCJjZGtEcmFnRW5kZWQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJmaWx0ZXItbW9kYWwiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6''@;'; put 'put ''ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm1vZGFsLWJvZHkiXSxbMywidmlld2JveElkIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwx''@;'; put 'put ''LCJidG4iLCJidG4tc20iLCJidG4tbGluayIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsckxvYWRpbmciLCJjbGljayJdLFsxLCJsaWNlbmNlLW5vdGljZSJdLFsxLCJteS0xMC1teC1hdXRvIiwidGV4dC1j''@;'; put 'put ''ZW50ZXIiXSxbImNsck1lZGl1bSIsIiJdLFsxLCJtLTAiLCJ2aWV3Ym94LWxpbWl0LW5vdGljZSJdLFszLCJsaWJyYXJ5TGlzdCIsImxpYnJhcnlPbkNsaWNrRW1pdHRlciIsInRhYmxlT25DbGlja0VtaXR0ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJ3LTEwMCIsIm0tMCJdLFsxLCJvcGVuLXZp''@;'; put 'put ''ZXdib3giLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbHJTbWFsbCIsIiIsImNsYXNzIiwibWwtMyIsNCwibmdJZiJdLFsicm9s''@;'; put 'put ''ZSIsInRvb2x0aXAiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwzLCJjbGljayJdLFsic2hhcGUiLCJjdXJzb3ItbW92ZSIsInNpemUiLCIxMyJdLFsicm9sZSIsInRvb2x0aXAiLCJhcmlhLWhhc3BvcHVwIiwi''@;'; put 'put ''dHJ1ZSIsImNsYXNzIiwidG9vbHRpcCB0b29sdGlwLW1kIHRvb2x0aXAtYm90dG9tLWxlZnQgbWwtMyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMTkiXSxbImNsclNtYWxsIiwiIiwxLCJtbC0zIl0sWyJjZGtEcm9wTGlzdEdyb3VwIiwiIiwxLCJjb25m''@;'; put 'put ''aWd1cmF0aW9uLXdyYXBwZXIiXSxbNCwibmdJZiJdLFsxLCJjb2xzLXNlYXJjaCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLCJwbGFjZWhvbGRlciIsIlNlYXJjaCBjb2x1bW5zIiwidGFiaW5kZXgiLCIwIiwzLCJpbnB1dElkIiwiZW1pdE9u''@;'; put 'put ''bHlTZWxlY3RlZCIsInZhbHVlQ2hhbmdlIl0sWyJpbnB1dCIsIiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNka0Ryb3BMaXN0IiwiIiwxLCJjb2xzLWxpc3QiLDMsImNka0Ryb3BMaXN0RGF0YSIsImNka0Ryb3BMaXN0RHJvcHBlZCJdLFsiY2RrRHJhZyIsIiIsMywiY2xhc3MiLCJjdXJz''@;'; put 'put ''b3ItZGVmYXVsdC1pIiwicHJpbWFyeUtleUhlYWRlclN0eWxlIiwiY2RrRHJhZ0RhdGEiLCJjZGtEcmFnRGlzYWJsZWQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2RrRHJhZyIsIiIsMywiY2RrRHJhZ0RhdGEiLCJjZGtEcmFnRGlzYWJsZWQiXSxbInNoYXBlIiwia2V5Iiw0LCJuZ0lmIl0s''@;'; put 'put ''WyJzaGFwZSIsInRyYXNoIiwiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwia2V5Il0sWyJzaGFwZSIsInRyYXNoIiwxLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbImNka0RyYWdCb3VuZGFyeSIsIi52aWV3Ym94ZXMtY29udGFpbmVy''@;'; put 'put ''IiwiY2RrRHJhZyIsIiIsInRhYmluZGV4IiwiMCIsMSwidmlld2JveCIsMywiY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb24iLCJpZCIsIm1vdXNlZG93biIsImNka0RyYWdFbmRlZCJdLFsicmVzaXplQm94IiwiIl0sWyJjZGtEcmFnSGFuZGxlIiwiIiwxLCJkcmFnLWhhbmRsZSIsImQtZmxleCIs''@;'; put 'put ''ImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwidGFibGUtdGl0bGUiXSxbMSwiYWN0aW9ucyJdLFsic2hhcGUiLCJhbmdsZSB0b3AiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImFuZ2xlIGRvd24iLDMsImNsaWNrIiw0LCJu''@;'; put 'put ''Z0lmIl0sWyJzaGFwZSIsIm1pbnVzIiwzLCJjbGljayJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbImNka0RyYWciLCIiLDEsImRyYWdIYW5kbGUiLCJjb3JuZXIiLDMsImlkIiwiY2RrRHJhZ01vdmVkIl0sWyJkcmFnSGFuZGxlQ29ybmVyIiwiIl0sWyJjbHJGb3JtIiwiIiwxLCJk''@;'; put 'put ''LWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJjbHItZmxleC13cmFwIiwidGFibGUtc2VhcmNoLXdyYXBwZXIiXSxbMSwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIiwiY2xyLWZsZXgtd3JhcCJdLFsxLCJpbnB1dC13cmFwcGVy''@;'; put 'put ''Il0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIiwibmFtZSIsInNlYXJjaC1pbnB1dCIsMywidHlwZSIsImtleXVwLmVudGVyIl0sWyJzZWFyY2hFbCIsIiJdLFsic2hhcGUiLCJzZWFyY2giLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5l''@;'; put 'put ''ci1pbmxpbmUiLDQsIm5nSWYiXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwibmFtZSIsIm51bWVyaWNfY2hlY2siLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1zbSIsNCwibmdJZiJdLFsic2hhcGUiLCJyZWZyZXNo''@;'; put 'put ''IiwiY2xhc3MiLCJjbGljay1pY29uIiwzLCJjbGljayIsNCwibmdJZiJdLFsicm9sZSIsInRvb2x0aXAiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwidG9vbHRpcCIsInRvb2x0aXAtbGciLCJ0b29sdGlwLWJvdHRvbS1sZWZ0IiwibWwtNSIsMywiY2xpY2siXSxbInNoYXBlIiwiZmlsdGVy''@;'; put 'put ''IiwxLCJjbGljay1pY29uIl0sWzEsInRvb2x0aXAtY29udGVudCIsInRvb2x0aXAtbG9uZyJdLFsic2hhcGUiLCJwZW5jaWwiLDEsImNsaWNrLWljb24iLCJtbC01IiwzLCJjbGljayJdLFsiY2xhc3MiLCJjb250ZW50IiwzLCJkaXNwbGF5Iiw0LCJuZ1ZhciJdLFsic2hhcGUiLCJhbmdsZSB0''@;'; put 'put ''b3AiLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIGRvd24iLDMsImNsaWNrIl0sWyJzaGFwZSIsInNlYXJjaCIsMywiY2xpY2siXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl0sWyJzaGFwZSIsInJlZnJlc2giLDEsImNsaWNrLWlj''@;'; put 'put ''b24iLDMsImNsaWNrIl0sWzEsImNvbnRlbnQiXSxbImNsYXNzIiwiaG90LXNwaW5uZXIgbXktMTAtbXgtYXV0byB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiaWQiLCJob3RUYWJsZSIsInN0cmV0Y2hIIiwiYWxsIiwzLCJob3RJZCIsInJlYWRPbmx5IiwibW9kaWZ5Q29sV2lkdGgiLCJjb3B5''@;'; put 'put ''UGFzdGUiLCJjb250ZXh0TWVudSIsIm11bHRpQ29sdW1uU29ydGluZyIsInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0IiwiZGF0YSIsImNvbEhlYWRlcnMiLCJjb2x1bW5zIiwiZmlsdGVycyIsImRyb3Bkb3duTWVudSIsImhlaWdodCIsImNlbGxzIiwibWF4Um93cyIsIm1hbnVhbENvbHVt''@;'; put 'put ''blJlc2l6ZSIsImxpY2Vuc2VLZXkiLDQsIm5nSWYiXSxbMSwiaG90LXNwaW5uZXIiLCJteS0xMC1teC1hdXRvIiwidGV4dC1jZW50ZXIiXSxbImlkIiwiaG90VGFibGUiLCJzdHJldGNoSCIsImFsbCIsMywiaG90SWQiLCJyZWFkT25seSIsIm1vZGlmeUNvbFdpZHRoIiwiY29weVBhc3RlIiwi''@;'; put 'put ''Y29udGV4dE1lbnUiLCJtdWx0aUNvbHVtblNvcnRpbmciLCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsImZpbHRlcnMiLCJkcm9wZG93bk1lbnUiLCJoZWlnaHQiLCJjZWxscyIsIm1heFJvd3MiLCJtYW51YWxDb2x1bW5SZXNpemUi''@;'; put 'put ''LCJsaWNlbnNlS2V5Il0sWzMsInZpZXdib3hJZCJdLFsicXVlcnlGaWx0ZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJjbHItbW9kYWwiLDApLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmNsck1vZGFsT3BlbkNoYW5nZSho''@;'; put 'put ''KX0pLHllKDEsImgzIiwxKSxZZSgyLCIgVmlld2JveGVzICIpLHR0KDMsZXh0LDIsMiwic3BhbiIsMiksQ2UoKSx5ZSg0LCJkaXYiLDMpKDUsImRpdiIsNCkoNiwicCIsNSksWWUoNywiQWRkIG5ldyIpLENlKCksdG4oOCwiaHIiLDYpLHR0KDksdHh0LDIsMCwiZGl2Iiw3KSx0dCgxMCxueHQs''@;'; put 'put ''MiwwLCJwIiw4KSx0dCgxMSxyeHQsMSwxLCJkYy10cmVlIiw5KSxDZSgpLHllKDEyLCJkaXYiLDEwKSgxMywiZGl2IiwxMSkoMTQsInAiLDUpLFllKDE1LCJDdXJyZW50bHkgb3BlbiIpLENlKCkseWUoMTYsImRpdiIpKDE3LCJhIiwxMiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBm''@;'; put 'put ''LnNuYXBUb0dyaWQoKX0pLHRuKDE4LCJjbHItaWNvbiIsMTMpLHllKDE5LCJzcGFuIiwxNCksWWUoMjAsIlNuYXAgdmlld2JveGVzIHRvIGdyaWQiKSxDZSgpKCkseWUoMjEsImEiLDEyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYubWluaW1pemVBbGwoKX0pLHRuKDIyLCJjbHIt''@;'; put 'put ''aWNvbiIsMTUpLHllKDIzLCJzcGFuIiwxNCksWWUoMjQsIk1pbmltaXplIGFsbCB2aWV3Ym94ZXMiKSxDZSgpKCkseWUoMjUsImEiLDEyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYucmVzdG9yZUFsbCgpfSksdG4oMjYsImNsci1pY29uIiwxNikseWUoMjcsInNwYW4iLDE0KSxZ''@;'; put 'put ''ZSgyOCwiUmVzdG9yZSBhbGwgdmlld2JveGVzIiksQ2UoKSgpKCkoKSx0bigyOSwiaHIiKSx0dCgzMCxpeHQsMiwwLCJwIiwxNyksdHQoMzEsc3h0LDE1LDEwLCJkaXYiLDE4KSx5ZSgzMiwiZGl2IiwxOSkoMzMsInAiLDIwKSxZZSgzNCksQ2UoKSgpLHRuKDM1LCJociIpLHR0KDM2LG14dCwz''@;'; put 'put ''LDIsImRpdiIsMjEpLENlKCkoKSx5ZSgzNywiZGl2IiwyMikoMzgsImJ1dHRvbiIsMjMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi52aWV3Ym94TW9kYWw9ITF9KSxZZSgzOSwiIE9rICIpLENlKCkoKSgpLHllKDQwLCJkaXYiLDI0KSx0dCg0MSxFeHQsMzMsMzcsImRpdiIsMjUp''@;'; put 'put ''LENlKCkseWUoNDIsImNsci1tb2RhbCIsMjYpLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLmZpbHRlcj1ofSkseWUoNDMsImgzIiwyNyksWWUoNDQsIiBGaWx0ZXIgZm9yIHZpZXdib3ggdGFibGU6ICIpLHllKDQ1LCJzcGFuIiksWWUoNDYpLENlKCkoKSx5''@;'; put 'put ''ZSg0NywiZGl2IiwyOCksdHQoNDgseHh0LDIsMSwiYXBwLXF1ZXJ5IiwyOSksQ2UoKSx5ZSg0OSwiZGl2IiwyMikoNTAsImJ1dHRvbiIsMzApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5yZXNldEZpbHRlcigpfSksWWUoNTEsIiByZXNldCBmaWx0ZXIgIiksQ2UoKSx5ZSg1Miwi''@;'; put 'put ''YnV0dG9uIiwyMyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmZpbHRlcj0hMX0pLFllKDUzLCIgQ2FuY2VsICIpLENlKCkseWUoNTQsImJ1dHRvbiIsMzEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5zZW5kQ2xhdXNlKCl9KSxZZSg1NSwiIE9rICIpLENlKCkoKSgp''@;'; put 'put ''KSwyJmEmJihSZSgiY2xyTW9kYWxPcGVuIixmLnZpZXdib3hNb2RhbCkoImNsck1vZGFsQ2xvc2FibGUiLCEwKSgiY2xyTW9kYWxTaXplIiwibGciKSxTZSgzKSxSZSgibmdJZiIsZi5saWNlbmNlU3RhdGUudmFsdWUudmlld2JveF9saW1pdCE9PWYuSW5maW5pdHkpLFNlKDYpLFJlKCJuZ0lm''@;'; put 'put ''IixmLmxpYnJhcmllc0xvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixmLnZpZXdib3hMaW1pdFJlYWNoZWQpLFNlKDEpLFJlKCJuZ0lmIixmLnZpZXdib3hNb2RhbCksU2UoMTkpLFJlKCJuZ0lmIixmLnZpZXdib3hlcy5sZW5ndGg8MSksU2UoMSksUmUoIm5nRm9yT2YiLGYudmlld2JveGVzKSxT''@;'; put 'put ''ZSgzKSx3cigiIENvbmZpZ3VyYXRpb24gKCIsbnVsbCE9Zi5zZWxlY3RlZFZpZXdib3hUYWJsZSYmZi5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94TGliRGF0YXNldD8iIyIrKG51bGw9PWYuc2VsZWN0ZWRWaWV3Ym94VGFibGU/bnVsbDpmLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdi''@;'; put 'put ''b3hJZCkrIiAiKyhudWxsPT1mLnNlbGVjdGVkVmlld2JveFRhYmxlP251bGw6Zi5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94TGliRGF0YXNldCk6InNlbGVjdCB2aWV3Ym94IGZyb20gYWJvdmUiLCIpICIpLFNlKDIpLFJlKCJuZ1ZhciIsbkMoMTksQXh0LG51bGw9PWYuc2VsZWN0ZWRW''@;'; put 'put ''aWV3Ym94VGFibGV8fG51bGw9PWYuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGU/bnVsbDpmLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4sbnVsbD09Zi5zZWxlY3RlZFZpZXdib3hUYWJsZXx8bnVsbD09Zi5zZWxlY3RlZFZpZXdib3hUYWJsZS5o''@;'; put 'put ''b3RUYWJsZT9udWxsOmYuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUsbnVsbD09Zi5zZWxlY3RlZFZpZXdib3hUYWJsZXx8bnVsbD09Zi5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZT9udWxsOmYuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFi''@;'; put 'put ''bGUuaGVhZGVyUGtzKSksU2UoNSksUmUoIm5nRm9yT2YiLGYudmlld2JveGVzKSxTZSgxKSxSZSgiY2xyTW9kYWxPcGVuIixmLmZpbHRlcikoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxTZSg0KSwkdSgiICMiLG51bGw9PWYuZmlsdGVyaW5nVmlld2JveD9u''@;'; put 'put ''dWxsOmYuZmlsdGVyaW5nVmlld2JveC5pZCwiICIsZi5maWx0ZXJMaWJkcywiICIpLFNlKDIpLFJlKCJuZ0lmIixmLmZpbHRlciksU2UoNiksUmUoImNsckxvYWRpbmciLGYuZmlsdGVyTG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W1JhLCRpLFJsLE1jLGtjLEpjLEloLGVsLHZzZSxCMCxsNyxW''@;'; put 'put ''MCxSZixSaCxwNCxTMSxNMSxSMCxXYSxoNCx6YSxDZCxISixoTCxfNmUsdjZlLE02ZSx3NmUsRTZlLFhFdCxSNyxfSV0sc3R5bGVzOlsiLmxpY2VuY2Utbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtkaXNwbGF5OmJsb2NrO29wYWNpdHk6LjZ9Y2xyLW1vZGFsLnJv''@;'; put 'put ''b3QtbW9kYWxbX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MTMwMH1jbHItbW9kYWwucm9vdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1ib2R5LXdyYXBwZXJ7aGVpZ2h0OmNhbGMoMTAwJSAtIDYwcHgpfWNsci1tb2RhbC5yb290LW1vZGFsW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgICAgLm1vZGFsLWNvbnRlbnR7aGVpZ2h0Ojgwdmh9Y2xyLW1vZGFsLnJvb3QtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1vZGFsLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowfWNsci1tb2RhbC5yb290LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5t''@;'; put 'put ''b2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7aGVpZ2h0OjEwMCV9ZGMtdHJlZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bztmbGV4OjF9LnRvb2x0aXAtbG9uZ1tfbmdjb250ZW50LSVDT01QJV17d29yZC1icmVhazpicmVhay13b3JkfS5hZGQt''@;'; put 'put ''bmV3W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MCU7cGFkZGluZy1yaWdodDo1cHh9LnZpZXdib3gtbGltaXQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi43O2NvbG9yOiNlNzRjM2N9LmN1cnJlbnRseS1vcGVuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MCV9LmN1''@;'; put 'put ''cnJlbnRseS1vcGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcGVuLXZpZXdib3hbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6M3B4IDVweH0uY3VycmVudGx5LW9wZW5bX25nY29udGVudC0lQ09NUCVdICAgLm9wZW4tdmlld2JveC5zZWxlY3RlZFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDYwLDEzMywwLC4xODAzOTIxNTY5KX0uY3VycmVudGx5LW9wZW5bX25nY29udGVudC0lQ09NUCVdICAgLm9wZW4tdmlld2JveFtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZThlOGU4fS52aWV3Ym94ZXMtY29udGFpbmVy''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDo5OTl9LnZpZXdib3hbX25nY29udGVudC0lQ09NUCVde21pbi13aWR0aDoyMDBweDttaW4taGVpZ2h0OjIwMHB4O3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDt0b3A6MDtw''@;'; put 'put ''b2ludGVyLWV2ZW50czphbGw7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDAgMTBweCAtM3B4ICMwMDB9LnZpZXdib3guZm9jdXNlZFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17ei1pbmRleDoxMTAwO291dGxpbmU6bm9uZX0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4zMDE5NjA3ODQzKTtiYWNrZ3JvdW5kOndoaXRlO2hlaWdodDoxMDAlO3dp''@;'; put 'put ''ZHRoOjEwMCU7ZmxleDoxO292ZXJmbG93LXg6YXV0b30udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWluLWhlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtib3JkZXItdG9wLWxlZnQtcmFk''@;'; put 'put ''aXVzOjNweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgNXB4O3BvaW50ZXItZXZlbnRzOmFsbH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLnRhYmxlLXRpdGxlW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDttaW4td2lk''@;'; put 'put ''dGg6MzVweH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjVweH0udmll''@;'; put 'put ''d2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVye3RyYW5zZm9ybTpzY2FsZSgxLjMpfS52aWV3Ym94W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC5jbGljay1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcn0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xpY2staWNvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMyl9LnZpZXdib3hbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLmRyYWdIYW5kbGVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlfS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcmFnSGFuZGxlLmNvcm5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtjdXJzb3I6bndzZS1yZXNp''@;'; put 'put ''emV9LnZpZXdib3hbX25nY29udGVudC0lQ09NUCVdICAgLmRyYWdIYW5kbGUucmlnaHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjJweDtoZWlnaHQ6MTAwJTtjdXJzb3I6ZXctcmVzaXplfS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcmFnSGFuZGxlLmJvdHRvbVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV17aGVpZ2h0OjJweDt3aWR0aDoxMDAlO2N1cnNvcjpucy1yZXNpemV9LmNvbHMtc2VhcmNoW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21hcmdpbi10b3A6NXB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMjc4NDMxMzcyNSk7Ym9yZGVyLXJhZGl1czoz''@;'; put 'put ''cHh9LmNvbHMtbGlzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCAjY2NjO21pbi1oZWlnaHQ6NjBweDtiYWNrZ3JvdW5kOndoaXRlO2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOjQwMHB4O21heC13aWR0aDoxMDAlO21h''@;'; put 'put ''cmdpbi10b3A6NXB4fS5jb2wtYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAxMHB4O2JvcmRlci1ib3R0b206c29saWQgMXB4ICNjY2M7Y29sb3I6IzAwMDAwMGRlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpzcGFjZS1iZXR3ZWVuO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6bW92ZTtiYWNrZ3JvdW5kOndoaXRlO2ZvbnQtc2l6ZToxNHB4fS5jb2wtYm94LnNlYXJjaFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMDE5NjA3ODQzKX0uY29s''@;'; put 'put ''LWJveC5wcmltYXJ5S2V5SGVhZGVyU3R5bGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg0OCwxMDcsMCwuMTQxMTc2NDcwNil9LmNkay1kcmFnLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOjRweDtib3gt''@;'; put 'put ''c2hhZG93OjAgNXB4IDVweCAtM3B4ICMwMDAzLDAgOHB4IDEwcHggMXB4ICMwMDAwMDAyNCwwIDNweCAxNHB4IDJweCAjMDAwMDAwMWY7ei1pbmRleDoxMzAwIWltcG9ydGFudH0uY2RrLWRyYWctcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLWRyYWctYW5p''@;'; put 'put ''bWF0aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGN1YmljLWJlemllcigwLDAsLjIsMSl9LmNvbC1ib3hbX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7Ym9yZGVyOm5vbmV9LmNvbHMtbGlzdC5jZGstZHJvcC1saXN0LWRyYWdnaW5nW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5jb2wtYm94W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmNkay1kcmFnLXBsYWNlaG9sZGVyKXt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGN1YmljLWJlemllcigwLDAsLjIsMSl9LmRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi41O3RyYW5z''@;'; put 'put ''Zm9ybTpub25lIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfS5maWx0ZXItYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMDA3MmEzfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5maXJzdENvbHVtbkhlYWRlclN0eWxlIGJ1dHRvbi5jaGFuZ2VUeXBle2Rp''@;'; put 'put ''c3BsYXk6bm9uZX1ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRib2R5IHRoLmh0X19oaWdobGlnaHQucHJpbWFyeUtleUhlYWRlclN0eWxlLCBob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19o''@;'; put 'put ''aWdobGlnaHQucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6cmdiYSg0OCwxMDcsMCwuNjkwMTk2MDc4NCl9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kOnJnYmEoNDgsMTA3LDAsLjQzMTM3MjU0OSl9aG90''@;'; put 'put ''LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgdGgucmVhZG9ubHlDZWxsIGRpdntvcGFjaXR5Oi40fWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIHRkLnJlYWRvbmx5Q2VsbHtvcGFjaXR5Oi41fSJdfSksbH0pKCksVHh0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7''@;'; put 'put ''dGhpcy5maWxlU2VsZWN0ZWQ9bmV3IHhyLHRoaXMuZWxlbWVudD1hfWlzRW1wdHlBZnRlclNlbGVjdGlvbigpe3JldHVybiEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcy5tdWx0aXBsZX1vbkNoYW5nZSgpe2NvbnN0IGE9dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQu''@;'; put 'put ''ZmlsZXM7dGhpcy51cGxvYWRlcj8uYWRkVG9RdWV1ZShhKSx0aGlzLmZpbGVTZWxlY3RlZC5lbWl0KGEpLHRoaXMuaXNFbXB0eUFmdGVyU2VsZWN0aW9uKCkmJih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZT0iIil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gbmV3KGF8fGwpKHJ0KFZpKSl9LGwuXHUwMjc1ZGlyPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImFwcEZpbGVTZWxlY3QiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZil7MSZhJiZFdCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBmLm9uQ2hhbmdlKCl9KX0saW5wdXRz''@;'; put 'put ''Ont1cGxvYWRlcjoidXBsb2FkZXIifSxvdXRwdXRzOntmaWxlU2VsZWN0ZWQ6ImZpbGVTZWxlY3RlZCJ9fSksbH0pKCk7ZnVuY3Rpb24gT3h0KGwsYyl7MSZsJiYoeWUoMCwicCIsOCksWWUoMSwiIE5vIGRhdGFzZXQgbWV0YSB0byBzaG93LiAiKSxDZSgpKX1mdW5jdGlvbiBEeHQobCxjKXtp''@;'; put 'put ''ZigxJmwmJih5ZSgwLCJjbHItZGctcm93IikoMSwiY2xyLWRnLWNlbGwiKSxZZSgyKSxDZSgpLHllKDMsImNsci1kZy1jZWxsIiksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMiksYXIoYS5OQU1FKSxTZSgyKSxhcihhLlZBTFVFKX19ZnVuY3Rpb24gSXh0KGws''@;'; put 'put ''Yyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRhYi1jb250ZW50IiwxMSkoMSwiY2xyLWRhdGFncmlkIikoMiwiY2xyLWRnLWNvbHVtbiIpLFllKDMsIk5hbWUiKSxDZSgpLHllKDQsImNsci1kZy1jb2x1bW4iKSxZZSg1LCJWYWx1ZSIpLENlKCksdHQoNixEeHQsNSwyLCJjbHItZGctcm93Iiw1KSxD''@;'; put 'put ''ZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdDtTZSg2KSxSZSgibmdGb3JPZiIsYS5kc21ldGEpfX1mdW5jdGlvbiBSeHQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdGFiIikoMSwiYnV0dG9uIiw5KSxZZSgyKSxDZSgpLHR0KDMsSXh0LDcsMSwiY2xyLXRhYi1jb250ZW50Iiwx''@;'; put 'put ''MCksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9Yy5pbmRleDtTZSgyKSxhcihhLmdyb3VwKSxTZSgxKSxSZSgiY2xySWZBY3RpdmUiLDA9PT1mKX19bGV0IFQ2ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5vcGVuPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMub3Bl''@;'; put 'put ''bkNoYW5nZT1uZXcgeHIsdGhpcy5kc21ldGFHcm91cHBlZD1bXX1uZ09uSW5pdCgpe31uZ09uQ2hhbmdlcyhhKXthLmRzbWV0YT8uY3VycmVudFZhbHVlPy5sZW5ndGg+MCYmdGhpcy5wYXJzZURTTWV0YSgpfXBhcnNlRFNNZXRhKCl7dGhpcy5kc21ldGFHcm91cHBlZD1bXTtmb3IobGV0IGEg''@;'; put 'put ''b2YgdGhpcy5kc21ldGEpe2xldCBmPXRoaXMuZHNtZXRhR3JvdXBwZWQuZmluZEluZGV4KGQ9PmQuZ3JvdXA9PT1hLk9EU19UQUJMRSk7ZjwwJiYoZj10aGlzLmRzbWV0YUdyb3VwcGVkLnB1c2goe2dyb3VwOmEuT0RTX1RBQkxFLGRzbWV0YTpbXX0pLTEpLHRoaXMuZHNtZXRhR3JvdXBwZWRb''@;'; put 'put ''Zl0uZHNtZXRhLnB1c2goYSl9fW9uT3BlbkNoYW5nZShhKXt0aGlzLm9wZW49YSx0aGlzLm9wZW5DaGFuZ2UuZW1pdChhKX1vbkNsb3NlQ2xpY2soKXt0aGlzLm9uT3BlbkNoYW5nZSghMSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3''@;'; put 'put ''NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtZGF0YXNldC1pbmZvIl1dLGlucHV0czp7b3Blbjoib3BlbiIsZHNtZXRhOiJkc21ldGEifSxvdXRwdXRzOntvcGVuQ2hhbmdlOiJvcGVuQ2hhbmdlIn0sZmVhdHVyZXM6W2JsXSxkZWNsczoxMCx2YXJzOjUsY29uc3RzOltbMywiY2xy''@;'; put 'put ''TW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSIsImNlbnRlciIsInRleHQtY2VudGVyIiwiY29sb3ItZGFya2VyLWdyYXkiXSxbMSwibW9kYWwtYm9keSJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRl''@;'; put 'put ''ciIsNCwibmdJZiJdLFsiY2xyTGF5b3V0IiwidmVydGljYWwiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0bGluZSIsMywiY2xpY2siXSxbMSwidGV4dC1jZW50ZXIiXSxbImNs''@;'; put 'put ''clRhYkxpbmsiLCIiLCJpZCIsImxpbmsxIl0sWyJpZCIsImNvbnRlbnQxIiwiY2xhc3MiLCJkLWZsZXggY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAiLDQsImNscklmQWN0aXZlIl0sWyJpZCIsImNvbnRlbnQxIiwxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRl''@;'; put 'put ''ciIsInctMTAwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiY2xyLW1vZGFsIiwwKSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vbk9wZW5DaGFuZ2UoaCl9KSx5ZSgxLCJoMyIsMSksWWUoMiwiRGF0YXNldCBNZXRhIiksQ2UoKSx5''@;'; put 'put ''ZSgzLCJkaXYiLDIpLHR0KDQsT3h0LDIsMCwicCIsMykseWUoNSwiY2xyLXRhYnMiLDQpLHR0KDYsUnh0LDQsMiwiY2xyLXRhYiIsNSksQ2UoKSgpLHllKDcsImRpdiIsNikoOCwiYnV0dG9uIiw3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYub25DbG9zZUNsaWNrKCl9KSxZZSg5''@;'; put 'put ''LCIgQ2xvc2UgIiksQ2UoKSgpKCkpLDImYSYmKFJlKCJjbHJNb2RhbE9wZW4iLGYub3BlbikoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCEwKSxTZSg0KSxSZSgibmdJZiIsZi5kc21ldGFHcm91cHBlZC5sZW5ndGg8MSksU2UoMiksUmUoIm5nRm9yT2YiLGYuZHNt''@;'; put 'put ''ZXRhR3JvdXBwZWQpKX0sZGVwZW5kZW5jaWVzOltSYSwkaSxTNyx3NCxKZyxRZyxlNSx0NSxrNyxuNSx2NyxiNCxiNyxNYyxrYyx1Uyx1NSxmNSxUNyxjNSxsNSxBN10sc3R5bGVzOlsiLm1vZGFsLWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXRhYnNbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e21heC1oZWlnaHQ6NzB2aH0ubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICAgIC50YWItY29udGVudHt3aWR0aDoxMDAlO292ZXJmbG93OmF1dG99Lm1vZGFsLWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgICAudGFiLWNvbnRlbnQgLmRhdGFncmlkLW91dGVyLXdyYXBwZXJ7d2lk''@;'; put 'put ''dGg6MTAwJX0iXX0pLGx9KSgpO2Z1bmN0aW9uIEx4dChsLGMpe2lmKDEmbCYmKHllKDAsInNwYW4iLDEzKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksYXIoYS5nZW5lcmF0ZWRSZWNvcmRVcmwpfX1mdW5jdGlvbiBQeHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5''@;'; put 'put ''ZSgwLCJidXR0b24iLDE0KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmdlbmVyYXRlRWRpdFJlY29yZFVybCgpKX0pLFllKDEpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1JlKCJkaXNhYmxlZCIsYS5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5n''@;'; put 'put ''KSxTZSgxKSx3cigiICIsYS5nZW5lcmF0ZWRSZWNvcmRVcmw/ImNvcHkgdG8gY2xpcGJvYXJkIjphLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmc/IkdlbmVyYXRpbmcgdXJsLi4uIjoiTGluayB0byB0aGlzIHJlY29yZCIsIiAiKX19ZnVuY3Rpb24gRnh0KGwsYyl7aWYoMSZsJiYoV3Io''@;'; put 'put ''MCksdHQoMSxMeHQsMiwxLCJzcGFuIiwxMSksdHQoMixQeHQsMiwyLCJidXR0b24iLDEyKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgibmdJZiIsIShudWxsIT1hLmN1cnJlbnRSZWNvcmQmJmEuY3VycmVudFJlY29yZC5ub0xpbmtPcHRpb24pKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''IShudWxsIT1hLmN1cnJlbnRSZWNvcmQmJmEuY3VycmVudFJlY29yZC5ub0xpbmtPcHRpb24pKX19ZnVuY3Rpb24gSHh0KGwsYyl7MSZsJiYoeWUoMCwiZGl2IiwxNSkoMSwic3BhbiIsMTYpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkoKSl9ZnVuY3Rpb24gTnh0KGwsYyl7MSZsJiZ0bigw''@;'; put 'put ''LCJjbHItaWNvbiIsMjkpfWZ1bmN0aW9uIFZ4dChsLGMpezEmbCYmKHllKDAsInNwYW4iLDMwKSxZZSgxLCIgTG9hZGluZy4uLiAiKSxDZSgpKX1mdW5jdGlvbiBCeHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwzMSl9ZnVuY3Rpb24ganh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7''@;'; put 'put ''eWUoMCwiY2xyLWlucHV0LWNvbnRhaW5lciIsMzMpKDEsImlucHV0IiwzNCksRXQoImZvY3VzaW4iLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoMykuaW5kZXg7cmV0dXJuIFp0KEdlKDIpLm9uUmVjb3JkSW5wdXRGb2N1cyhkLGgpKX0pKCJwYXN0ZSIsZnVuY3Rpb24oZCl7cmV0dXJu''@;'; put 'put ''IFV0KGEpLFp0KEdlKDUpLnJlY29yZElucHV0UGFzdGUoZCkpfSkoImlucHV0IixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDMpLiRpbXBsaWNpdCxtPUdlKDIpO3JldHVybiBtLnJlY29yZElucHV0Q2hhbmdlKGQsaC5rZXkpLFp0KG0uY3VycmVudFJlY29yZC5ub0xpbmtPcHRpb249''@;'; put 'put ''ITApfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoMykuJGltcGxpY2l0O3JldHVybiBadChHZSgyKS5jdXJyZW50UmVjb3JkW2gua2V5XT1kKX0pLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoMykuJGltcGxpY2l0LGY9R2UoMik7Z3IoImludmFsaWQt''@;'; put 'put ''ZGF0YSIsZi5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoYS5rZXkpKSxTZSgxKSxSZSgibmdNb2RlbCIsZi5jdXJyZW50UmVjb3JkW2Eua2V5XSl9fWZ1bmN0aW9uIHp4dChsLGMpezEmbCYmZXMoMCl9Y29uc3QgTko9ZnVuY3Rpb24obCxjKXtyZXR1cm57Y29sOmwsY29sSW5k''@;'; put 'put ''ZXg6Y319O2Z1bmN0aW9uIFV4dChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIpLHR0KDEsenh0LDEsMCwibmctY29udGFpbmVyIiwzNSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDMpLGY9YS4kaW1wbGljaXQsZD1hLmluZGV4O0dlKDIpO2NvbnN0IGg9UWkoMTYpO1NlKDEpLFJlKCJuZ1RlbXBs''@;'; put 'put ''YXRlT3V0bGV0IixoKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLHdoKDIsTkosZixkKSl9fWNvbnN0IFp4dD1mdW5jdGlvbigpe3JldHVyblsibnVtZXJpYyIsdm9pZCAwXX0sTzZlPWZ1bmN0aW9uKCl7cmV0dXJuWyJhdXRvY29tcGxldGUiXX07ZnVuY3Rpb24gWXh0KGwsYyl7aWYoMSZs''@;'; put 'put ''JiYoV3IoMCksdHQoMSxqeHQsMiwzLCJjbHItaW5wdXQtY29udGFpbmVyIiwzMiksdHQoMixVeHQsMiw1LCJkaXYiLDIpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgyKS4kaW1wbGljaXQsZj1HZSgyKTtsZXQgZCxoO1NlKDEpLFJlKCJuZ0lmIixYYSgyLFp4dCkuaW5jbHVkZXMobnVsbD09Zi5j''@;'; put 'put ''dXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oZD1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShhLmtleSkpP251bGw6ZC5lZGl0b3IpKSxTZSgxKSxSZSgibmdJZiIsWGEoMyxPNmUpLmluY2x1ZGVzKG51bGw9PWYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGg9''@;'; put 'put ''Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoYS5rZXkpKT9udWxsOmguZWRpdG9yKSl9fWZ1bmN0aW9uIFd4dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10ZXh0YXJlYS1jb250YWluZXIiKSgxLCJ0ZXh0YXJlYSIsMzYsMzcpLEV0KCJmb2N1c2luIixmdW5j''@;'; put 'put ''dGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDMpLmluZGV4O3JldHVybiBadChHZSgyKS5vblJlY29yZElucHV0Rm9jdXMoZCxoKSl9KSgicGFzdGUiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSg1KS5yZWNvcmRJbnB1dFBhc3RlKGQpKX0pKCJpbnB1dCIsZnVuY3Rpb24oZCl7VXQo''@;'; put 'put ''YSk7Y29uc3QgaD1HZSgzKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDIpLnJlY29yZElucHV0Q2hhbmdlKGQsaC5rZXkpKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDMpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoMikuY3VycmVudFJlY29yZFtoLmtl''@;'; put 'put ''eV09ZCl9KSxZZSgzLCIgICAgICAgICAgICAgICAgICAiKSxDZSgpLHllKDQsImNsci1jb250cm9sLWhlbHBlciIpLFllKDUpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMiksZj1HZSgzKS4kaW1wbGljaXQsZD1HZSgyKTtsZXQgaCxtLF87U2UoMSksZ3IoImludmFsaWQtZGF0YSIsZC5j''@;'; put 'put ''dXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoZi5rZXkpKSgibm90LWNoYXIiLG51bGw9PWQuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGg9ZC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoZi5rZXkpKT9udWxsOmgudHlwZSksUmUoInJvd3MiLGYudmFsdWUu''@;'; put 'put ''bGVuZ3RoPjgwPzY6MSkoIm5nTW9kZWwiLGQuY3VycmVudFJlY29yZFtmLmtleV0pKCJtYXhMZW5ndGgiLG51bGw9PWQuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KG09ZC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoZi5rZXkpKT9udWxsOm0ubGVuZ3RoKSxTZSg0KSwk''@;'; put 'put ''dSgiIixhLnZhbHVlLmxlbmd0aCwiIC8gIixudWxsPT1kLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShfPWQuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGYua2V5KSk/bnVsbDpfLmxlbmd0aCwiIil9fWZ1bmN0aW9uIEd4dChsLGMpezEmbCYmZXMoMCl9ZnVuY3Rpb24g''@;'; put 'put ''JHh0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiksdHQoMSxHeHQsMSwwLCJuZy1jb250YWluZXIiLDM1KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMyksZj1hLiRpbXBsaWNpdCxkPWEuaW5kZXg7R2UoMik7Y29uc3QgaD1RaSgxNik7U2UoMSksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGgpKCJu''@;'; put 'put ''Z1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsd2goMixOSixmLGQpKX19Y29uc3QgS3h0PWZ1bmN0aW9uKCl7cmV0dXJuW3ZvaWQgMF19O2Z1bmN0aW9uIHF4dChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsV3h0LDYsOSwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIsMiksdHQoMiwkeHQsMiw1LCJk''@;'; put 'put ''aXYiLDIpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgyKS4kaW1wbGljaXQsZj1HZSgyKTtsZXQgZCxoO1NlKDEpLFJlKCJuZ0lmIixYYSgyLEt4dCkuaW5jbHVkZXMobnVsbD09Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oZD1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVs''@;'; put 'put ''ZShhLmtleSkpP251bGw6ZC5lZGl0b3IpKSxTZSgxKSxSZSgibmdJZiIsWGEoMyxPNmUpLmluY2x1ZGVzKG51bGw9PWYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGg9Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoYS5rZXkpKT9udWxsOmguZWRpdG9yKSl9fWZ1bmN0''@;'; put 'put ''aW9uIFh4dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10ZXh0YXJlYS1jb250YWluZXIiLDM4KSgxLCJ0ZXh0YXJlYSIsMzkpLEV0KCJwYXN0ZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLnJlY29yZElucHV0UGFzdGUoZCkpfSkoImlucHV0IixmdW5j''@;'; put 'put ''dGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoMikucmVjb3JkSW5wdXRDaGFuZ2UoZCxoLmtleSkpfSkoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoMikuJGltcGxpY2l0O3JldHVybiBadChHZSgyKS5jdXJyZW50''@;'; put 'put ''UmVjb3JkW2gua2V5XT1kKX0pLENlKCkseWUoMiwiY2xyLWNvbnRyb2wtaGVscGVyIiksWWUoMywiSEg6bW06c3MiKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpLiRpbXBsaWNpdCxmPUdlKDIpO2xldCBkO1NlKDEpLGdyKCJpbnZhbGlkLWRhdGEiLGYuY3VycmVudFJlY29yZEludmFs''@;'; put 'put ''aWRDb2xzLmluY2x1ZGVzKGEua2V5KSkoIm5vdC1jaGFyIixudWxsPT1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShkPWYuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGEua2V5KSk/bnVsbDpkLnR5cGUpLFJlKCJyb3dzIixhLnZhbHVlLmxlbmd0aD44MD82OjEpKCJu''@;'; put 'put ''Z01vZGVsIixmLmN1cnJlbnRSZWNvcmRbYS5rZXldKX19ZnVuY3Rpb24gSnh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwzOCkoMSwidGV4dGFyZWEiLDQwKSxFdCgicGFzdGUiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSg0KS5yZWNvcmRJbnB1dFBhc3Rl''@;'; put 'put ''KGQpKX0pKCJpbnB1dCIsZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1HZSgyKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDIpLnJlY29yZElucHV0Q2hhbmdlKGQsaC5rZXkpKX0pKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKDIpLiRpbXBsaWNpdDtyZXR1''@;'; put 'put ''cm4gWnQoR2UoMikuY3VycmVudFJlY29yZFtoLmtleV09ZCl9KSxDZSgpLHllKDIsImNsci1kYXRlLWNvbnRhaW5lciIsNDEpKDMsImlucHV0Iiw0MiksRXQoImNsckRhdGVDaGFuZ2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoMikuJGltcGxpY2l0O3JldHVybiBadChHZSgyKS5y''@;'; put 'put ''ZWNvcmREYXRlQ2hhbmdlKGQsaC5rZXkpKX0pLENlKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKS4kaW1wbGljaXQsZj1HZSgyKTtTZSgxKSxncigiaW52YWxpZC1kYXRhIixmLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5pbmNsdWRlcyhhLmtleSkpLFJlKCJuZ01vZGVsIixmLmN1cnJl''@;'; put 'put ''bnRSZWNvcmRbYS5rZXldKX19ZnVuY3Rpb24gUXh0KGwsYyl7MSZsJiZlcygwKX1mdW5jdGlvbiBlQXQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiKSx0dCgxLFF4dCwxLDAsIm5nLWNvbnRhaW5lciIsMzUpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKSxmPWEuJGltcGxpY2l0LGQ9YS5pbmRl''@;'; put 'put ''eDtHZSgyKTtjb25zdCBoPVFpKDE2KTtTZSgxKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsaCkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Iix3aCgyLE5KLGYsZCkpfX1mdW5jdGlvbiB0QXQobCxjKXtpZigxJmwmJihXcigwKSx5ZSgxLCJkaXYiLDE4KSgyLCJkaXYiLDE5KSgzLCJwIiwyMCks''@;'; put 'put ''WWUoNCksdHQoNSxOeHQsMSwwLCJjbHItaWNvbiIsMjEpLENlKCkseWUoNiwicCIsMjIpLFllKDcpLENlKCkoKSx5ZSg4LCJkaXYiLDIzKSx0dCg5LFZ4dCwyLDAsInNwYW4iLDI0KSx0dCgxMCxCeHQsMSwwLCJjbHItaWNvbiIsMjUpLHR0KDExLFl4dCwzLDQsIm5nLWNvbnRhaW5lciIsMjYp''@;'; put 'put ''LHR0KDEyLHF4dCwzLDQsIm5nLWNvbnRhaW5lciIsMjYpLHR0KDEzLFh4dCw0LDYsImNsci10ZXh0YXJlYS1jb250YWluZXIiLDI3KSx0dCgxNCxKeHQsNCwzLCJkaXYiLDI3KSx0dCgxNSxlQXQsMiw1LCJkaXYiLDI2KSxDZSgpKCksdG4oMTYsImhyIiwyOCksR3IoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PUdlKCksZj1hLiRpbXBsaWNpdCxkPWEuaW5kZXgsaD1HZSgyKTtsZXQgbSxfO1NlKDQpLHdyKCIgIixmLmtleSwiICIpLFNlKDEpLFJlKCJuZ0lmIixoLmlzQ29sUGsoZi5rZXkpKSxTZSgyKSx3cigiICIsbnVsbD09aC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0obT1oLmN1cnJl''@;'; put 'put ''bnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShmLmtleSkpP251bGw6bS5kZXNjLCIgIiksU2UoMSksUmUoIm5nU3dpdGNoIixudWxsPT1oLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShfPWguY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGYua2V5KSk/bnVsbDpfLnR5cGUp''@;'; put 'put ''LFNlKDEpLFJlKCJuZ0lmIixoLmN1cnJlbnRSZWNvcmRMb2FkaW5ncy5pbmNsdWRlcyhkKSksU2UoMSksUmUoIm5nSWYiLGguY3VycmVudFJlY29yZEVycm9ycy5pbmNsdWRlcyhkKSksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsIm51bWVyaWMiKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIix2''@;'; put 'put ''b2lkIDApLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCJ0aW1lIiksU2UoMSksUmUoIm5nU3dpdGNoQ2FzZSIsImRhdGUiKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIiwiYXV0b2NvbXBsZXRlIil9fWZ1bmN0aW9uIG5BdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsdEF0LDE3LDExLCJuZy1j''@;'; put 'put ''b250YWluZXIiLDIpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsIkFjdGlvbiIhPT1hLmtleSYmIl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyIhPT1hLmtleSYmIm5vTGlua09wdGlvbiIhPT1hLmtleSl9fWZ1bmN0aW9uIHJBdChsLGMpe2lm''@;'; put 'put ''KDEmbCYmKFdyKDApLHR0KDEsbkF0LDIsMSwibmctY29udGFpbmVyIiwxNyksd2woMiwia2V5dmFsdWUiKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgibmdGb3JPZiIsd2coMiwyLGEuY3VycmVudFJlY29yZCxhLm9yaWdpbmFsT3JkZXIpKSgibmdGb3JUcmFja0J5IixhLnRy''@;'; put 'put ''YWNrQnlGbil9fWZ1bmN0aW9uIGlBdChsLGMpezEmbCYmKHllKDAsImNsci1hbGVydCIsNDMpKDEsImNsci1hbGVydC1pdGVtIikoMiwic3BhbiIsNDQpLFllKDMsIiBEYXRhIFZhbGlkYXRpb24gRXJyb3JzIC0gUGxlYXNlIFJldmlldyAiKSxDZSgpKCkoKSksMiZsJiYoV2MoInZpc2liaWxp''@;'; put 'put ''dHkiLEdlKCkuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wPyJ2aXNpYmxlIjoiaGlkZGVuIiksUmUoImNsckFsZXJ0Q2xvc2FibGUiLCExKSgiY2xyQWxlcnRUeXBlIiwiZGFuZ2VyIikpfWZ1bmN0aW9uIG9BdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIs''@;'; put 'put ''NDUpKDEsImJ1dHRvbiIsNDYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vblByZXZpb3VzUmVjb3JkQ2xpY2soKSl9KSx0bigyLCJjbHItaWNvbiIsNDcpLENlKCkseWUoMywicCIpLFllKDQsIiBDdXJyZW50IHJvdzogIikseWUoNSwic3Ryb25nIiksWWUo''@;'; put 'put ''NiksQ2UoKSgpLHllKDcsImJ1dHRvbiIsNDYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vbk5leHRSZWNvcmRDbGljaygpKX0pLHRuKDgsImNsci1pY29uIiw0OCksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJkaXNhYmxlZCIsYS5j''@;'; put 'put ''dXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPjApLFNlKDUpLHdyKCIgIixhLmN1cnJlbnRSZWNvcmRJbmRleCsxLCIgIiksU2UoMSksUmUoImRpc2FibGVkIixhLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCl9fWZ1bmN0aW9uIGFBdChsLGMpe2lmKDEmbCYmKHllKDAs''@;'; put 'put ''Im9wdGlvbiIsNTMpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgibmdWYWx1ZSIsYSksU2UoMSksd3IoIiAiLGEsIiAiKX19ZnVuY3Rpb24gbEF0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IikoMSwiYXBwLXNvZnQtc2VsZWN0Iiw1MSksRXQo''@;'; put 'put ''ImZvY3VzaW4iLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKS5jb2xJbmRleDtyZXR1cm4gWnQoR2UoKS5vblJlY29yZElucHV0Rm9jdXMoZCxoKSl9KSgidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKS5jb2w7cmV0dXJuIFp0KEdlKCkuY3VycmVudFJl''@;'; put 'put ''Y29yZFtoLmtleV09ZCl9KSgib25JbnB1dEV2ZW50IixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKSxoPWQuY29sLG09ZC5jb2xJbmRleDtyZXR1cm4gWnQoR2UoKS5vblJlY29yZERyb3Bkb3duQ2hhbmdlKGgua2V5LG0pKX0pLHR0KDIsYUF0LDIsMiwib3B0aW9uIiw1MiksQ2UoKSgp''@;'; put 'put ''fWlmKDImbCl7Y29uc3QgYT1HZSgpLmNvbCxmPUdlKCk7bGV0IGQ7U2UoMSksUmUoInZhbHVlIixmLmN1cnJlbnRSZWNvcmRbYS5rZXldKSgiaW5wdXRJZCIsYS5rZXkpLFNlKDEpLFJlKCJuZ0Zvck9mIixudWxsPT1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShkPWYuY3VycmVu''@;'; put 'put ''dFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGEua2V5KSk/bnVsbDpkLnNvdXJjZSl9fWZ1bmN0aW9uIHNBdChsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGlvbiIsNTYpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgidmFsdWUiLGEpLFNlKDEpLHdyKCIgIixhLCIgIil9''@;'; put 'put ''fWZ1bmN0aW9uIHVBdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsInNlbGVjdCIsNTQpLEV0KCJmb2N1c2luIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuY29sSW5kZXg7cmV0dXJuIFp0KEdlKCkub25SZWNvcmRJbnB1dEZvY3VzKGQsaCkpfSkoIm5nTW9kZWxDaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKGQpe1V0KGEpO2NvbnN0IGg9R2UoKS5jb2w7cmV0dXJuIFp0KEdlKCkuY3VycmVudFJlY29yZFtoLmtleV09ZCl9KSx0dCgxLHNBdCwyLDIsIm9wdGlvbiIsNTUpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuY29sLGY9R2UoKTtsZXQgZDtSZSgibmdNb2RlbCIsZi5j''@;'; put 'put ''dXJyZW50UmVjb3JkW2Eua2V5XSksU2UoMSksUmUoIm5nRm9yT2YiLG51bGw9PWYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGQ9Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoYS5rZXkpKT9udWxsOmQuc291cmNlKX19Y29uc3QgY0F0PWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''WyJTT0ZUU0VMRUNUIiwiU09GVFNFTEVDVF9IT09LIl19O2Z1bmN0aW9uIGZBdChsLGMpe2lmKDEmbCYmKHR0KDAsbEF0LDMsMywiZGl2Iiw0OSksdHQoMSx1QXQsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw1MCxLdSkpLDImbCl7Y29uc3QgYT1jLmNvbCxmPVFpKDIpLGQ9R2UoKTtSZSgibmdJ''@;'; put 'put ''ZiIsbnVsbD09ZC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yP251bGw6ZC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmhhc0RxUnVsZXMoYS5rZXksWGEoMixjQXQpKSkoIm5nSWZFbHNlIixmKX19bGV0IGRBdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZil7dGhpcy5zYXNTdG9yZVNlcnZp''@;'; put 'put ''Y2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9Zix0aGlzLnJlY29yZEFjdGlvbj1udWxsLHRoaXMuZmlsdGVyPSExLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLmhlYWRlclBrcz1bXSx0aGlzLmNlbGxWYWxpZGF0aW9uPVtdLHRoaXMuY3VycmVudFJlY29yZEluZGV4PS0xLHRoaXMuY3VycmVu''@;'; put 'put ''dFJlY29yZExvYWRpbmdzPVtdLHRoaXMuY3VycmVudFJlY29yZEVycm9ycz1bXSx0aGlzLm9uUmVjb3JkQ2hhbmdlPW5ldyB4cix0aGlzLm9uUmVjb3JkSW5wdXRGb2N1c2VkPW5ldyB4cix0aGlzLm9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkPW5ldyB4cix0aGlzLm9uUmVjb3JkRWRpdENsb3Nl''@;'; put 'put ''PW5ldyB4cix0aGlzLm9uUmVjb3JkRWRpdENvbmZpcm09bmV3IHhyLHRoaXMub25OZXh0UmVjb3JkPW5ldyB4cix0aGlzLm9uUHJldmlvdXNSZWNvcmQ9bmV3IHhyLHRoaXMuY3VycmVudFJlY29yZEludmFsaWRDb2xzPVtdLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSx0''@;'; put 'put ''aGlzLmdlbmVyYXRlZFJlY29yZFVybD1udWxsLHRoaXMuYWRkUmVjb3JkVXJsPW51bGwsdGhpcy5yZWNvcmROZXdPclBrTW9kaWZpZWQ9ITEsdGhpcy5hZGRSZWNvcmRMb2FkaW5nPSExLHRoaXMub3JpZ2luYWxPcmRlcj0oZCxoKT0+MH1uZ09uSW5pdCgpe312YWxpZGF0ZVJlY29yZENvbChh''@;'; put 'put ''LGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaCxtKT0+e2QuY3VycmVudFJlY29yZFZhbGlkYXRvcj8uZXhlY3V0ZUhvdFZhbGlkYXRvcihhLGYsXz0+e2goXyl9KX0pfSkoKX1yZWNvcmREYXRlQ2hhbmdlKGEsZil7bGV0IGQ9dGhpcy5j''@;'; put 'put ''dXJyZW50UmVjb3JkVmFsaWRhdG9yPy5nZXRSdWxlKGYpLGg9ZD9kLmRhdGVGb3JtYXQ6IiI7dGhpcy5jdXJyZW50UmVjb3JkJiYodGhpcy5jdXJyZW50UmVjb3JkW2ZdPVhuZSgpKGEpLmZvcm1hdChoKSl9aXNSZWNvcmRNb2RhbEludmFsaWQoKXtyZXR1cm4gdGhpcy5jdXJyZW50UmVjb3Jk''@;'; put 'put ''SW52YWxpZENvbHMubGVuZ3RoPjB9Y29uZmlybVJlY29yZEVkaXQoKXt0aGlzLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg8MSYmdGhpcy5vblJlY29yZENoYW5nZS5lbWl0KHRoaXMuY3VycmVudFJlY29yZCl9Y2xvc2VSZWNvcmRFZGl0KCl7dGhpcy5vblJlY29yZEVkaXRDbG9z''@;'; put 'put ''ZS5lbWl0KCl9b25SZWNvcmREcm9wZG93bkNoYW5nZShhLGYpe3RoaXMub25SZWNvcmREcm9wZG93bkNoYW5nZWQuZW1pdCh7Y29sTmFtZTphLGNvbDpmfSl9b25SZWNvcmRJbnB1dEZvY3VzKGEsZil7dGhpcy5vblJlY29yZElucHV0Rm9jdXNlZC5lbWl0KHtldmVudDphLGNvbE5hbWU6Zn0p''@;'; put 'put ''fXJlY29yZElucHV0UGFzdGUoYSl7c2V0VGltZW91dCgoKT0+e2EudGFyZ2V0LnZhbHVlPWEudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xzKyQvLCIiKX0sMCl9cmVjb3JkSW5wdXRDaGFuZ2UoYSxmKXt2YXIgZD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtjb25zdCBoPWQuY3VycmVudFJl''@;'; put 'put ''Y29yZFZhbGlkYXRvcj8uZ2V0UnVsZShmKSxtPWEudGFyZ2V0LnZhbHVlO2QuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoMzAwLCgpPT57ZC52YWxpZGF0ZVJlY29yZENvbChoLG0pLnRoZW4oXz0+e2NvbnN0IE89ZC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5kZXhPZihmKTtfP08+''@;'; put 'put ''LTEmJmQuY3VycmVudFJlY29yZEludmFsaWRDb2xzLnNwbGljZShPLDEpOk88MCYmZC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMucHVzaChmKX0pfSl9KSgpfW9uTmV4dFJlY29yZENsaWNrKCl7dGhpcy5vbk5leHRSZWNvcmQuZW1pdCgpfW9uUHJldmlvdXNSZWNvcmRDbGljaygpe3RoaXMu''@;'; put 'put ''b25QcmV2aW91c1JlY29yZC5lbWl0KCl9Y29weVRvQ2xpcChhKXtjb25zdCBmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyZWNvcmRNb2RhbFJlZiAubW9kYWwtdGl0bGUiKTtpZihmKXtjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7ZC5zdHlsZS5wb3NpdGlv''@;'; put 'put ''bj0iZml4ZWQiLGQuc3R5bGUubGVmdD0iMCIsZC5zdHlsZS50b3A9IjAiLGQuc3R5bGUub3BhY2l0eT0iMCIsZC5zdHlsZS56SW5kZXg9IjUwMDAiLGQudmFsdWU9YSxmLmFwcGVuZENoaWxkKGQpLGQuZm9jdXMoKSxkLnNlbGVjdCgpLGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IiksZi5y''@;'; put 'put ''ZW1vdmVDaGlsZChkKSx0aGlzLmdlbmVyYXRlZFJlY29yZFVybD1hfX1nZW5lcmF0ZUVkaXRSZWNvcmRVcmwoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtpZihhLmdlbmVyYXRlZFJlY29yZFVybClhLmNvcHlUb0NsaXAoYS5nZW5lcmF0ZWRSZWNvcmRVcmwpO2Vsc2V7YS5n''@;'; put 'put ''ZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPSEwO2NvbnN0IGY9W107YS5oZWFkZXJQa3MuZm9yRWFjaChkPT57bGV0IGg9IkMiLG09IiI7Zm9yKGxldCBfPTA7XzxhLmNlbGxWYWxpZGF0aW9uLmxlbmd0aDtfKyspe2NvbnN0IE89YS5jZWxsVmFsaWRhdGlvbltfXTtpZihPLmRhdGE9PT1k''@;'; put 'put ''KXsoIm51bWVyaWMiPT09Ty50eXBlfHwiZGF0ZSI9PT1PLnR5cGV8fCJ0aW1lIj09PU8udHlwZSkmJihoPSJOIik7YnJlYWt9fW09IkMiPT09aD9gJyR7YS5jdXJyZW50UmVjb3JkW2RdfSdgOmEuY3VycmVudFJlY29yZFtkXS50b1N0cmluZygpLGYucHVzaCh7R1JPVVBfTE9HSUM6IkFORCIs''@;'; put 'put ''U1VCR1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfSUQ6MCxWQVJJQUJMRV9OTTpkLE9QRVJBVE9SX05NOiI9IixSQVdfVkFMVUU6bX0pfSksZi5sZW5ndGg+MCYmYS5saWJkcyYmKHlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLnNhdmVRdWVyeShhLmxpYmRzLGYpLnRoZW4oZD0+e2EucXVlcnlG''@;'; put 'put ''aWx0ZXI9e2lkOmQucmVzdWx0WzBdLkZJTFRFUl9SSyx0YWJsZTpkLnJlc3VsdFswXS5GSUxURVJfVEFCTEV9O2NvbnN0IF89bG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKyIjL2VkaXRvci9lZGl0LXJlY29yZC8iK2EucXVlcnlGaWx0ZXIudGFibGUrIi8iK2EucXVlcnlGaWx0ZXIuaWQ7''@;'; put 'put ''YS5jb3B5VG9DbGlwKF8pLGEuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSxhLmZpbHRlcj0hMX0pLmNhdGNoKGQ9PnthLnN1Ym1pdExvYWRpbmc9ITF9KSl9fSkoKX1pc0NvbFBrKGEpe3JldHVybiB0aGlzLmhlYWRlclBrcy5pbmRleE9mKGEpPi0xfXRyYWNrQnlGbihhLGYpe3Jl''@;'; put 'put ''dHVybiBhfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChMZCkscnQoUHUpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWVkaXQtcmVjb3JkIl1dLGlucHV0czp7Y3VycmVudFJlY29yZDoiY3VycmVudFJlY29yZCIs''@;'; put 'put ''cmVjb3JkQWN0aW9uOiJyZWNvcmRBY3Rpb24iLGxpYmRzOiJsaWJkcyIscXVlcnlGaWx0ZXI6InF1ZXJ5RmlsdGVyIixmaWx0ZXI6ImZpbHRlciIsc3VibWl0TG9hZGluZzoic3VibWl0TG9hZGluZyIsaGVhZGVyUGtzOiJoZWFkZXJQa3MiLGNlbGxWYWxpZGF0aW9uOiJjZWxsVmFsaWRhdGlv''@;'; put 'put ''biIsY3VycmVudFJlY29yZEluZGV4OiJjdXJyZW50UmVjb3JkSW5kZXgiLGN1cnJlbnRSZWNvcmRMb2FkaW5nczoiY3VycmVudFJlY29yZExvYWRpbmdzIixjdXJyZW50UmVjb3JkRXJyb3JzOiJjdXJyZW50UmVjb3JkRXJyb3JzIixjdXJyZW50UmVjb3JkVmFsaWRhdG9yOiJjdXJyZW50UmVj''@;'; put 'put ''b3JkVmFsaWRhdG9yIn0sb3V0cHV0czp7b25SZWNvcmRDaGFuZ2U6Im9uUmVjb3JkQ2hhbmdlIixvblJlY29yZElucHV0Rm9jdXNlZDoib25SZWNvcmRJbnB1dEZvY3VzZWQiLG9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkOiJvblJlY29yZERyb3Bkb3duQ2hhbmdlZCIsb25SZWNvcmRFZGl0Q2xv''@;'; put 'put ''c2U6Im9uUmVjb3JkRWRpdENsb3NlIixvblJlY29yZEVkaXRDb25maXJtOiJvblJlY29yZEVkaXRDb25maXJtIixvbk5leHRSZWNvcmQ6Im9uTmV4dFJlY29yZCIsb25QcmV2aW91c1JlY29yZDoib25QcmV2aW91c1JlY29yZCJ9LGRlY2xzOjE3LHZhcnM6MTEsY29uc3RzOltbImlkIiwicmVj''@;'; put 'put ''b3JkTW9kYWxSZWYiLDEsInJlY29yZC1lZGl0LW1vZGFsIiwicG9zaXRpb24tcmVsYXRpdmUiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiXSxbNCwibmdJZiJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjbGFzcyIsImQtZmxleCBqdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBweS0xMCIsNCwibmdJZiJdLFsxLCJtb2RhbC1mb290ZXIiLCJwLTAiLCJjbHItZ2FwLTUiLCJjbHItZ2FwLW1kLTAiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZmxleC1tZC1yb3ciXSxbImNsYXNzIiwidmFsaWRhdGlvbi1p''@;'; put 'put ''bmZvLWFsZXJ0IiwzLCJ2aXNpYmlsaXR5IiwiY2xyQWxlcnRDbG9zYWJsZSIsImNsckFsZXJ0VHlwZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJwcmV2LW5leHQiLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwiZm9jdXNhYmxlIiwzLCJjbGljayJdLFsi''@;'; put 'put ''dHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJmb2N1c2FibGUiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbImF1dG9jb21wbGV0ZSIsIiJdLFsiY2xhc3MiLCJwb3NpdGlvbi1hYnNvbHV0ZSBnZW5lcmF0ZS1yZWNvcmQtdXJsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImJ0biBi''@;'; put 'put ''dG4tbGluayBnZW5lcmF0ZS1yZWNvcmQtdXJsLWJ1dHRvbiBwb3NpdGlvbi1hYnNvbHV0ZSIsMywiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJwb3NpdGlvbi1hYnNvbHV0ZSIsImdlbmVyYXRlLXJlY29yZC11cmwiXSxbMSwiYnRuIiwiYnRuLWxpbmsiLCJnZW5lcmF0ZS1yZWNv''@;'; put 'put ''cmQtdXJsLWJ1dHRvbiIsInBvc2l0aW9uLWFic29sdXRlIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJhbGlnbi1pdGVtcy1jZW50ZXIiLCJ3LTEwMCIsInB5LTEwIl0sWzEsInNwaW5uZXIiXSxbNCwibmdGb3IiLCJuZ0Zvck9m''@;'; put 'put ''IiwibmdGb3JUcmFja0J5Il0sWzEsImNvbHVtbi1lbnRyeSIsImNsci1mbGV4LWNvbHVtbiIsImNsci1mbGV4LW1kLXJvdyJdLFsxLCJuYW1lLWlucHV0LXJvdyJdLFsxLCJmb250LXdlaWdodC1ib2xkIl0sWyJzaGFwZSIsImtleSIsNCwibmdJZiJdLFsxLCJjZWxsLWRlc2MiXSxbMSwiaW5w''@;'; put 'put ''dXRzLXdyYXBwZXIiLCJwb3NpdGlvbi1yZWxhdGl2ZSIsMywibmdTd2l0Y2giXSxbImNsYXNzIiwic3Bpbm5lciBzcGlubmVyLWlubGluZSBmbGV4LXVuc2V0IHBvc2l0aW9uLWFic29sdXRlIGVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZsZXgtdW5zZXQg''@;'; put 'put ''cG9zaXRpb24tYWJzb2x1dGUgZW50cnktaW5wdXQtbGVmdC1vZmZzZXQiLCJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwic3RhdHVzIiwid2FybmluZyIsNCwibmdJZiJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiZGF0ZS1maWVsZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm10LTEw''@;'; put 'put ''Il0sWyJzaGFwZSIsImtleSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiLCJmbGV4LXVuc2V0IiwicG9zaXRpb24tYWJzb2x1dGUiLCJlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCJdLFsic2hhcGUiLCJlcnJvci1zdGFuZGFyZCIsInN0YXR1cyIsIndhcm5pbmciLDEsImZsZXgtdW5z''@;'; put 'put ''ZXQiLCJwb3NpdGlvbi1hYnNvbHV0ZSIsImVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Il0sWyJjbGFzcyIsIm51bWVyaWMtaW5wdXQiLDMsImludmFsaWQtZGF0YSIsNCwibmdJZiJdLFsxLCJudW1lcmljLWlucHV0Il0sWyJjbHJJbnB1dCIsIiIsInR5cGUiLCJ0ZXh0IiwxLCJub3QtY2hhciIs''@;'; put 'put ''MywibmdNb2RlbCIsImZvY3VzaW4iLCJwYXN0ZSIsImlucHV0IiwibmdNb2RlbENoYW5nZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbImNsclRleHRhcmVhIiwiIiwzLCJyb3dzIiwibmdNb2RlbCIsIm1heExlbmd0aCIsImZvY3VzaW4iLCJw''@;'; put 'put ''YXN0ZSIsImlucHV0IiwibmdNb2RlbENoYW5nZSJdLFsiY2hhclRleHRhcmVhIiwiIl0sWzEsImRhdGUtZmllbGQiXSxbImNsclRleHRhcmVhIiwiIiwzLCJyb3dzIiwibmdNb2RlbCIsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdlIl0sWyJjbHJUZXh0YXJlYSIsIiIsInJvd3MiLCIx''@;'; put 'put ''IiwiY29scyIsImF1dG8iLDEsIm5vdC1jaGFyIiwzLCJuZ01vZGVsIiwicGFzdGUiLCJpbnB1dCIsIm5nTW9kZWxDaGFuZ2UiXSxbMSwiZGF0ZS1waWNrZXIiXSxbInR5cGUiLCJkYXRlIiwibmFtZSIsImRhdGUiLCJjbHJEYXRlIiwiIiwxLCJkLW5vbmUiLDMsImNsckRhdGVDaGFuZ2UiXSxb''@;'; put 'put ''MSwidmFsaWRhdGlvbi1pbmZvLWFsZXJ0IiwzLCJjbHJBbGVydENsb3NhYmxlIiwiY2xyQWxlcnRUeXBlIl0sWzEsImFsZXJ0LXRleHQiXSxbMSwicHJldi1uZXh0Il0sWyJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCIwIiwxLCJidG4iLCJidG4tb3V0bGluZSIsImZvY3VzYWJsZSIsMywi''@;'; put 'put ''ZGlzYWJsZWQiLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSBsZWZ0Iiwic2l6ZSIsIjIzIl0sWyJzaGFwZSIsImFuZ2xlIHJpZ2h0Iiwic2l6ZSIsIjIzIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsib3RoZXJfdGhhbl9zb2Z0X3NlbGVjdCIsIiJdLFszLCJ2YWx1ZSIsImlucHV0SWQiLCJm''@;'; put 'put ''b2N1c2luIiwidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiXSxbMywibmdWYWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsIm5nVmFsdWUiXSxbImNsclNlbGVjdCIsIiIsMywibmdNb2RlbCIsImZvY3VzaW4iLCJuZ01vZGVsQ2hhbmdlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5n''@;'; put 'put ''Rm9yT2YiXSxbMywidmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJjbHItbW9kYWwiLDApKDEsImgzIiwxKSxZZSgyKSx0dCgzLEZ4dCwzLDIsIm5nLWNvbnRhaW5lciIsMiksQ2UoKSx5ZSg0LCJkaXYiLDMpLHR0KDUsSHh0LDMsMCwiZGl2Iiw0KSx0dCg2LHJB''@;'; put 'put ''dCwzLDUsIm5nLWNvbnRhaW5lciIsMiksQ2UoKSx5ZSg3LCJkaXYiLDUpLHR0KDgsaUF0LDQsNCwiY2xyLWFsZXJ0Iiw2KSx0dCg5LG9BdCw5LDMsImRpdiIsNykseWUoMTAsImRpdiIpKDExLCJidXR0b24iLDgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5jdXJyZW50UmVjb3Jk''@;'; put 'put ''Lm5vTGlua09wdGlvbj0hMSxmLmNsb3NlUmVjb3JkRWRpdCgpfSksWWUoMTIsIiBDYW5jZWwgIiksQ2UoKSx5ZSgxMywiYnV0dG9uIiw5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuY29uZmlybVJlY29yZEVkaXQoKX0pLFllKDE0LCIgQ29uZmlybSAiKSxDZSgpKCkoKSx0dCgx''@;'; put 'put ''NSxmQXQsMywzLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMCxLdSksQ2UoKSksMiZhJiYoUmUoImNsck1vZGFsT3BlbiIsITApKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoMiksTzAoIiAiLCJBREQiPT09Zi5yZWNvcmRBY3Rpb24/IkFkZCI6IkVkaXQiLCIgcmVjb3JkIGluICIsbnVsbD09Zi5s''@;'; put 'put ''aWJkcz9udWxsOmYubGliZHMuc3BsaXQoIi4iKVswXSwiLiIsbnVsbD09Zi5saWJkcz9udWxsOmYubGliZHMuc3BsaXQoIi4iKVsxXSwiICIpLFNlKDEpLFJlKCJuZ0lmIiwiRURJVCI9PT1mLnJlY29yZEFjdGlvbiksU2UoMiksUmUoIm5nSWYiLGYuYWRkUmVjb3JkTG9hZGluZyksU2UoMSks''@;'; put 'put ''UmUoIm5nSWYiLCFmLmFkZFJlY29yZExvYWRpbmcpLFNlKDIpLFJlKCJuZ0lmIixmLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCksU2UoMSksUmUoIm5nSWYiLGYuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aDwxKSxTZSg0KSxSZSgiZGlzYWJsZWQiLGYuY3VycmVu''@;'; put 'put ''dFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKSl9LGRlcGVuZGVuY2llczpbUmEsJGkseWQsa2YsQ2gsUzEsTTEsaXMsTDAsV2EsemEsX1MsdHVlLHdTLG5aLFJsLE1jLGtjLHhVLG1TLE5VLFZVLFJmLERVLG03LHpIZSxPc2UseDZlLFVPXSxzdHlsZXM6WyIucmVjb3JkLWVkaXQtbW9kYWxb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC5uYW1lLWlucHV0LXJvd1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTttYXgtd2lkdGg6MjYwcHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgLm5hbWUtaW5wdXQtcm93W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5jZWxsLWRlc2NbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDozMHB4O21hcmdpbi10b3A6MTBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAuaW5wdXRzLXdy''@;'; put 'put ''YXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbnB1dHMtd3JhcHBlcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAgPio6bm90KC5kYXRlLWZpZWxkKTpub3QoY2xyLXNlbGVjdC1jb250YWluZXIpe2ZsZXg6MX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJn''@;'; put 'put ''aW4tdG9wOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLXRleHRhcmVhLXdyYXBwZXJ7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItZm9ybS1jb250cm9se21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAt''@;'; put 'put ''c29mdC1zZWxlY3R7ZGlzcGxheTpibG9jazt3aWR0aDoyMjRweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2NvbG9yOiMwMDA7cGFkZGluZzpjYWxjKC4yNXJlbSArIDJweCkgLjVyZW07Ym9yZGVyLXJhZGl1czouMTI1cmVtO2ZvbnQtc2l6ZTouNTQxNjY3cmVtO21h''@;'; put 'put ''cmdpbi1yaWdodDo2cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnJlY29yZC1l''@;'; put 'put ''ZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDpub25lO2JvcmRlcjowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdOmZpcnN0''@;'; put 'put ''LWNoaWxkICAgcFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9''@;'; put 'put ''LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMzBweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtZmllbGRb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtcGlja2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDo0cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRl''@;'; put 'put ''LXBpY2tlcltfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItaW5wdXQtZ3JvdXB7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTBweH0ucmVjb3Jk''@;'; put 'put ''LWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lcntib3JkZXI6MXB4IHNvbGlkICM5OTk7Y29sb3I6IzAwMDtib3JkZXItcmFkaXVzOi4xMjVyZW07bWFyZ2luLXJpZ2h0OjVweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVye21heC1oZWlnaHQ6dW5zZXR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXNlbGVjdC1jb250YWluZXIgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcnt0b3A6MTVweH0ucmVj''@;'; put 'put ''b3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxlY3R7aGVpZ2h0OmF1dG87cGFkZGluZzoxMHB4IDIwcHggMTBweCAxMHB4O2JvcmRlcjowIWltcG9ydGFudH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''ICBjbHItc2VsZWN0LWNvbnRhaW5lciBzZWxlY3Q6Zm9jdXN7YmFja2dyb3VuZDowIDAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIHNlbGVjdDpob3ZlcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5yZWNv''@;'; put 'put ''cmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXJ7d2lkdGg6MjI0cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgIzk5OTtjb2xvcjojMDAwO3BhZGRpbmc6Y2FsYyguMjVyZW0gKyAycHgpIC41cmVtO2JvcmRlci1yYWRpdXM6''@;'; put 'put ''LjEyNXJlbTtmb250LXNpemU6LjU0MTY2N3JlbTttYXJnaW4tcmlnaHQ6NnB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgICBjbHItaW5wdXQtY29udGFpbmVyIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGlu''@;'; put 'put ''LWJ1dHRvbiwgLnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgICBjbHItaW5wdXQtY29udGFpbmVyLmludmFsaWQtZGF0YXtib3JkZXItY29sb3I6cmVkfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1kaWFsb2d7d2lkdGg6ODB2d30ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCV9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3Jlc2l6ZTpub25lO2JvcmRlci1jb2xvcjojOTk5fS5yZWNvcmQt''@;'; put 'put ''ZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgdGV4dGFyZWEuaW52YWxpZC1kYXRhe2JvcmRlci1jb2xvcjpyZWQ7b3V0bGluZTowfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250''@;'; put 'put ''YWluZXIgdGV4dGFyZWEubm90LWNoYXJ7Zm9udC1mYW1pbHk6THVjaWRhIENvbnNvbGUsTW9uYWNvLG1vbm9zcGFjZX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuZ2VuZXJhdGUtcmVjb3JkLXVybHtyaWdodDo0MHB4O3RvcDo0MHB4O2ZvbnQtc2l6ZToxMnB4''@;'; put 'put ''fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5nZW5lcmF0ZS1yZWNvcmQtdXJsLWJ1dHRvbntyaWdodDoyNXB4O3RvcDo1cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1vZGFsLWhlYWRlcntwYWRkaW5nOjAgMCAxcmVtfS5y''@;'; put 'put ''ZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwt''@;'; put 'put ''Zm9vdGVyIC5hbGVydHttYXJnaW46MH0ucHJldi1uZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5wcmV2LW5leHRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjB9LnByZXYtbmV4dFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDEwcHh9LmZvY3VzYWJsZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7Ym94LXNoYWRvdzowIDAgM3B4ICM1YWEyMjB9LmVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0''@;'; put 'put ''Oi0zMHB4fS52YWxpZGF0aW9uLWluZm8tYWxlcnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMxMHB4fSJdfSksbH0pKCk7ZnVuY3Rpb24gaEF0KGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsMyksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDEpLHdyKCIgIixhLCIg''@;'; put 'put ''Iil9fWxldCBwQXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhdGVzTGlzdD1bXSx0aGlzLnByb2Nlc3NlZFN0YXRlcz1bXSx0aGlzLnN0YXRlckluUHJvZ3Jlc3M9ITEsdGhpcy5taW5EZWxheT0xZTN9bmdPbkluaXQoKXt9YXBwZW5kU3RhdGUoYSl7aWYoIntmaW5pc2h9''@;'; put 'put ''Ij09PWEpcmV0dXJuIHRoaXMuc3RhdGVySW5Qcm9ncmVzcz0hMSx2b2lkIGNsZWFySW50ZXJ2YWwodGhpcy5zdGF0ZUludGVydmFsKTt0aGlzLnN0YXRlc0xpc3QucHVzaChhKSx0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKGEpfXJlcGxhY2VMYXN0U3RhdGUoYSl7dGhpcy5zdGF0ZXNMaXN0''@;'; put 'put ''Lmxlbmd0aD4wPyh0aGlzLnN0YXRlc0xpc3QucG9wKCksdGhpcy5zdGF0ZXNMaXN0LnB1c2goYSkpOnRoaXMucHJvY2Vzc2VkU3RhdGVzW3RoaXMucHJvY2Vzc2VkU3RhdGVzLmxlbmd0aC0xXT1hfWNsZWFyU3RhdGVzKCl7dGhpcy5wcm9jZXNzZWRTdGF0ZXM9W119c3RhcnRTdGF0ZXIoKXt0''@;'; put 'put ''aGlzLnN0YXRlckluUHJvZ3Jlc3M9ITAsdGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4wJiZ0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIiksdGhpcy5zdGF0ZUludGVydmFsPXNldEludGVydmFsKCgpPT57dGhpcy5zdGF0ZXNMaXN0Lmxlbmd0aD4w''@;'; put 'put ''JiZ0aGlzLnByb2Nlc3NlZFN0YXRlcy5wdXNoKHRoaXMuc3RhdGVzTGlzdC5zaGlmdCgpfHwiIil9LHRoaXMubWluRGVsYXkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXVw''@;'; put 'put ''bG9hZC1zdGF0ZXIiXV0sZGVjbHM6NSx2YXJzOjEsY29uc3RzOltbImNsYXNzIiwibS0wIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwidGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItc20iLCJ2ZXJ0aWNhbC1hbGlnbi1taWRkbGUiXSxbMSwibS0wIl1dLHRlbXBsYXRlOmZ1''@;'; put 'put ''bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwiZGl2IiksdHQoMSxoQXQsMiwxLCJwIiwwKSxDZSgpLHllKDIsImRpdiIsMSkoMywic3BhbiIsMiksWWUoNCwiTG9hZGluZy4uLiIpLENlKCkoKSksMiZhJiYoU2UoMSksUmUoIm5nRm9yT2YiLGYucHJvY2Vzc2VkU3RhdGVzKSl9LGRlcGVuZGVuY2ll''@;'; put 'put ''czpbUmFdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpibG9ja31wW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcn0iXX0pLGx9KSgpLG1BdD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhKXtyZXR1cm4gYS5yZXBsYWNlKC9cfC9nLCIgfCAi''@;'; put 'put ''KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToicGtTcGFjZVNlcGFyYXRlIix0eXBlOmwscHVyZTohMH0pLGx9KSgpLEQ2ZT0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhLGYpe3JldHVybiB0aGlzLmFkZFNl''@;'; put 'put ''cGFyYXRvcnMoYS50b1N0cmluZygpLGYpfWFkZFNlcGFyYXRvcnMoYSxmPSIgIil7Y29uc3QgZD0oYSs9IiIpLnNwbGl0KCIuIik7bGV0IGg9ZFswXTtjb25zdCBtPWQubGVuZ3RoPjE/Ii4iK2RbMV06IiIsXz0vKFxkKykoXGR7M30pLztmb3IoO18udGVzdChoKTspaD1oLnJlcGxhY2UoXywi''@;'; put 'put ''JDEiK2YrIiQyIik7cmV0dXJuIGgrbX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToidGhvdXNhbmRTZXBhcmF0b3IiLHR5cGU6bCxwdXJlOiEwfSksbH0pKCk7Y29uc3QgZ0F0PVsiaHQiXSx2QXQ9WyJ1cGxv''@;'; put 'put ''YWRTdGF0ZXIiXSx5QXQ9WyJxdWVyeUZpbHRlciJdLGJBdD1bImhvdEluc3RhbmNlIl0sX0F0PVsiZmlsZVVwbG9hZElucHV0Il07ZnVuY3Rpb24gd0F0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw2MSkoMSwic3BhbiIsNjIpKDIsImxhYmVsIiw2MyksWWUoMywiIEJy''@;'; put 'put ''b3dzZSAiKSxDZSgpKCkseWUoNCwiaW5wdXQiLDY0LDY1KSxFdCgiY2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5nZXRGaWxlRGVzYyhkKSl9KSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7U2UoNCksUmUoInVwbG9hZGVyIixhLnVwbG9hZGVyKX19ZnVuY3Rp''@;'; put 'put ''b24gQ0F0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw2NikoMSwiYnV0dG9uIiw2NyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmdldEZpbGUoKSl9KSxZZSgyLCIgVXBsb2FkICIpLENlKCkoKX0yJmwmJihTZSgxKSxSZSgiZGlzYWJs''@;'; put 'put ''ZWQiLCEwKSl9ZnVuY3Rpb24gU0F0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiw2OCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnNob3dVcGxvYWRNb2RhbD0hMSl9KSxZZSgxLCIgQ2xvc2UgIiksQ2UoKX1pZigyJmwpe2NvbnN0''@;'; put 'put ''IGE9R2UoKTtSZSgiZGlzYWJsZWQiLGEuZXhjZWxGaWxlUGFyc2luZ3x8YS51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24gTUF0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiw2OSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnNob3dV''@;'; put 'put ''cGxvYWRNb2RhbD0hMSl9KSxZZSgxLCIgU2tpcCAiKSxDZSgpfX1mdW5jdGlvbiBrQXQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDcwKSx0bigxLCJhcHAtdXBsb2FkLXN0YXRlciIsbnVsbCw3MSksQ2UoKSl9ZnVuY3Rpb24gRUF0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYXBw''@;'; put 'put ''LWVkaXQtcmVjb3JkIiw3MiksRXQoIm9uUmVjb3JkQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmNvbmZpcm1SZWNvcmRFZGl0KCkpfSkoIm9uUmVjb3JkSW5wdXRGb2N1c2VkIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5vblJlY29yZElucHV0Rm9j''@;'; put 'put ''dXMoZCkpfSkoIm9uUmVjb3JkRWRpdENsb3NlIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmNsb3NlUmVjb3JkRWRpdCgpKX0pKCJvbk5leHRSZWNvcmQiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub25OZXh0UmVjb3JkKCkpfSkoIm9uUHJldmlvdXNSZWNvcmQi''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkub25QcmV2aW91c1JlY29yZCgpKX0pLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7UmUoImN1cnJlbnRSZWNvcmQiLGEuY3VycmVudEVkaXRSZWNvcmQpKCJyZWNvcmRBY3Rpb24iLGEucmVjb3JkQWN0aW9uKSgibGliZHMiLGEubGli''@;'; put 'put ''ZHMpKCJxdWVyeUZpbHRlciIsYS5xdWVyeUZpbHRlcikoImZpbHRlciIsYS5maWx0ZXIpKCJzdWJtaXRMb2FkaW5nIixhLnN1Ym1pdExvYWRpbmcpKCJoZWFkZXJQa3MiLGEuaGVhZGVyUGtzKSgiY2VsbFZhbGlkYXRpb24iLGEuY2VsbFZhbGlkYXRpb24pKCJjdXJyZW50UmVjb3JkSW5kZXgi''@;'; put 'put ''LGEuY3VycmVudEVkaXRSZWNvcmRJbmRleCkoImN1cnJlbnRSZWNvcmRMb2FkaW5ncyIsYS5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzKSgiY3VycmVudFJlY29yZEVycm9ycyIsYS5jdXJyZW50RWRpdFJlY29yZEVycm9ycykoImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLGEuY3VycmVudEVk''@;'; put 'put ''aXRSZWNvcmRWYWxpZGF0b3IpfX1mdW5jdGlvbiB4QXQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDczKSx0bigxLCJwcm9ncmVzcyIpLENlKCkpfWNvbnN0IEFBdD1mdW5jdGlvbigpe3JldHVyblsiL2hvbWUiXX07ZnVuY3Rpb24gVEF0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwi''@;'; put 'put ''ZGl2Iiw3NCkoMSwic3BhbiIsNzUpLHRuKDIsImNsci1pY29uIiw3NiksWWUoMywiQmFjayB0byB0YWJsZSBzZWxlY3Rpb24gIiksQ2UoKSx5ZSg0LCJzcGFuIiw3NyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLnZpZXdib3hNYW5hZ2VyKCkpfSksdG4oNSwi''@;'; put 'put ''Y2xyLWljb24iLDc4KSxZZSg2LCIgVmlld2JveGVzICIpLENlKCkoKX0yJmwmJihTZSgxKSxSZSgicm91dGVyTGluayIsWGEoMSxBQXQpKSl9ZnVuY3Rpb24gT0F0KGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsODMpfWZ1bmN0aW9uIERBdChsLGMpe2lmKDEmbCYmKFdyKDApLFllKDEpLHds''@;'; put 'put ''KDIsInRob3VzYW5kU2VwYXJhdG9yIiksR3IoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEpLHlnKCIgKCIsd2coMiw0LGEuZGF0YVNvdXJjZS5sZW5ndGgsIiwiKSwiICIsMT09PWEuZGF0YVNvdXJjZS5sZW5ndGg/InJvdyI6InJvd3MiLCIsICIsYS5jb2xzLmxlbmd0aCwiIiwxPT09YS5j''@;'; put 'put ''b2xzLmxlbmd0aD8iIGNvbCI6IiBjb2xzIiwiKSAiKX19ZnVuY3Rpb24gSUF0KGwsYyl7MSZsJiYoV3IoMCksWWUoMSwiICgwIHJvd3MpICIpLEdyKCkpfWZ1bmN0aW9uIFJBdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsREF0LDMsNywibmctY29udGFpbmVyIiwzNSksdHQoMixJQXQsMiww''@;'; put 'put ''LCJuZy1jb250YWluZXIiLDM1KSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLCFhLnplcm9GaWx0ZXJSb3dzKSxTZSgxKSxSZSgibmdJZiIsYS56ZXJvRmlsdGVyUm93cyl9fWZ1bmN0aW9uIExBdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImg0Iiw3''@;'; put 'put ''OSkoMSwiY2xyLWljb24iLDgwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuZGF0YXNldEluZm89ITApfSksQ2UoKSx0dCgyLE9BdCwxLDAsImNsci1pY29uIiw4MSksWWUoMykseWUoNCwiYSIsODIpLFllKDUpLENlKCksdHQoNixSQXQsMywyLCJuZy1jb250''@;'; put 'put ''YWluZXIiLDM1KSxDZSgpfWlmKDImbCl7Y29uc3QgYT1jLm5nVmFyLGY9R2UoKTtTZSgyKSxSZSgibmdJZiIsYS50YWJsZU5hbWUuaW5jbHVkZXMoIi1GQyIpKSxTZSgxKSx3cigiICIsYS5saWJOYW1lLCIuIiksU2UoMSksUmUoInJvdXRlckxpbmsiLCIvdmlldy9kYXRhLyIrZi5saWJkcyks''@;'; put 'put ''U2UoMSksYXIoYS50YWJsZU5hbWUucmVwbGFjZSgiLUZDIiwiIikpLFNlKDEpLFJlKCJuZ0lmIixmLmRhdGFTb3VyY2UpfX1mdW5jdGlvbiBQQXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDkwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0''@;'; put 'put ''KEdlKDMpLm9uU2hvd1VwbG9hZE1vZGFsKCkpfSksdG4oMSwiY2xyLWljb24iLDkxKSx5ZSgyLCJzcGFuIiksWWUoMywiVXBsb2FkIiksQ2UoKSgpfX1mdW5jdGlvbiBGQXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx5ZSgxLCJidXR0b24iLDg1KSxFdCgiY2xpY2siLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLm9wZW5RYigpKX0pLHRuKDIsImNsci1pY29uIiw4NikseWUoMywic3BhbiIpLFllKDQsIkZpbHRlciIpLENlKCkoKSx5ZSg1LCJidXR0b24iLDg3KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmVkaXRUYWJs''@;'; put 'put ''ZSgpKX0pLHRuKDYsImNsci1pY29uIiw4OCkseWUoNywic3BhbiIpLFllKDgsIkVkaXQiKSxDZSgpKCksdHQoOSxQQXQsNCwwLCJidXR0b24iLDg5KSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtTZSg5KSxSZSgibmdJZiIsIWEuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWcpfX1mdW5jdGlv''@;'; put 'put ''biBIQXQobCxjKXtpZigxJmwmJih5ZSgwLCJzcGFuIiksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDQpO1NlKDEpLCR1KCJUbyB1bmxvY2sgbW9yZSB0aGFuICIsYS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiICIsMT09PWEubGljZW5jZVN0YXRlLnZhbHVl''@;'; put 'put ''LmVkaXRvcl9yb3dzX2FsbG93ZWQ/InJvdyI6InJvd3MiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiBOQXQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw5OCksdHQoMSxIQXQsMiwyLCJzcGFuIiwzNSksQ2UoKSksMiZs''@;'; put 'put ''KXtjb25zdCBhPUdlKDMpO1NlKDEpLFJlKCJuZ0lmIixhLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdyl9fWZ1bmN0aW9uIFZBdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEsImJ1dHRvbiIsOTIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQo''@;'; put 'put ''R2UoMikuY2FuY2VsRWRpdCgpKX0pLHRuKDIsImNsci1pY29uIiw5MykseWUoMywic3BhbiIpLFllKDQsIkNhbmNlbCIpLENlKCkoKSx5ZSg1LCJjbHItdG9vbHRpcCIpKDYsImJ1dHRvbiIsOTQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBadChk''@;'; put 'put ''LnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdz8iIjpkLmFkZFJvdygpKX0pLHRuKDcsImNsci1pY29uIiw5NSksWWUoOCwiQWRkIFJvdyAiKSxDZSgpLHR0KDksTkF0LDIsMSwiY2xyLXRvb2x0aXAtY29udGVudCIsOTYpLENlKCkseWUoMTAsImJ1dHRvbiIsNDApLEV0KCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikuY2hlY2tTYXZlKCkpfSksdG4oMTEsImNsci1pY29uIiw5NyksWWUoMTIsIlN1Ym1pdCAiKSxDZSgpLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDYpLGdyKCJkYy1sb2NrZWQtY29udHJvbCIsYS5yZXN0cmljdGlvbnMucmVzdHJp''@;'; put 'put ''Y3RBZGRSb3cpLFJlKCJjbHJMb2FkaW5nIixhLmFkZGluZ05ld1Jvdyl9fWZ1bmN0aW9uIEJBdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImJ1dHRvbiIsMTAyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLm1hbnVhbEZpbGVFZGl0TW9kYWw9''@;'; put 'put ''ITApfSksdG4oMSwiY2xyLWljb24iLDg4KSx5ZSgyLCJzcGFuIiksWWUoMywiRWRpdCIpLENlKCkoKX19ZnVuY3Rpb24gakF0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiYnV0dG9uIiw5OSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgy''@;'; put 'put ''KS5kaXNjYXJkU291cmNlRmlsZT0hMCl9KSx0bigyLCJjbHItaWNvbiIsOTMpLHllKDMsInNwYW4iKSxZZSg0LCJEaXNjYXJkIGZpbGUiKSxDZSgpKCksdHQoNSxCQXQsNCwwLCJidXR0b24iLDEwMCkseWUoNiwiYnV0dG9uIiwxMDEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQo''@;'; put 'put ''YSksWnQoR2UoMikuc3VibWl0RXhjZWwoKSl9KSx0big3LCJjbHItaWNvbiIsOTcpLFllKDgsIiBTdWJtaXQgIiksQ2UoKSxHcigpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtTZSg1KSxSZSgibmdJZiIsYS5ob3RUYWJsZS5yZWFkT25seSksU2UoMSksUmUoImNsckxvYWRpbmciLGEudXBsb2Fk''@;'; put 'put ''TG9hZGluZyl9fWZ1bmN0aW9uIHpBdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsODQpLHR0KDEsRkF0LDEwLDEsIm5nLWNvbnRhaW5lciIsMzUpLHR0KDIsVkF0LDEzLDMsIm5nLWNvbnRhaW5lciIsMzUpLHR0KDMsakF0LDksMiwibmctY29udGFpbmVyIiwzNSksQ2UoKSksMiZsKXtjb25z''@;'; put 'put ''dCBhPUdlKCk7U2UoMSksUmUoIm5nSWYiLGEuaG90VGFibGUucmVhZE9ubHkmJiFhLnVwbG9hZFByZXZpZXcpLFNlKDEpLFJlKCJuZ0lmIiwhYS5ob3RUYWJsZS5yZWFkT25seSYmIWEudXBsb2FkUHJldmlldyksU2UoMSksUmUoIm5nSWYiLGEudXBsb2FkUHJldmlldyl9fWZ1bmN0aW9uIFVB''@;'; put 'put ''dChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTAzKSgxLCJzcGFuIiksWWUoMiwiRklMVEVSIDogIikseWUoMywiYiIpLFllKDQpLENlKCkoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSg0KSxhcihhLnF1ZXJ5VGV4dCl9fWZ1bmN0aW9uIFpBdChsLGMpezEmbCYmKFdyKDApLHllKDEsInNw''@;'; put 'put ''YW4iLDEwNiksWWUoMiwiIExvYWRpbmcuLi4gIiksQ2UoKSx5ZSgzLCJkaXYiKSg0LCJoMyIpLFllKDUsIkxvYWRpbmcgdGFibGUiKSxDZSgpKCksR3IoKSl9ZnVuY3Rpb24gWUF0KGwsYyl7MSZsJiYoV3IoMCkseWUoMSwic3BhbiIpLHRuKDIsImNsci1pY29uIiwxMDcpLENlKCkseWUoMywi''@;'; put 'put ''ZGl2IikoNCwiaDMiKSxZZSg1LCJMb2FkaW5nIHRhYmxlIGVycm9yIiksQ2UoKSgpLEdyKCkpfWZ1bmN0aW9uIFdBdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTA0KSgxLCJkaXYiLDEwNSksdHQoMixaQXQsNiwwLCJuZy1jb250YWluZXIiLDM1KSx0dCgzLFlBdCw2LDAsIm5nLWNvbnRh''@;'; put 'put ''aW5lciIsMzUpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMiksUmUoIm5nSWYiLCFhLmdldGRhdGFFcnJvciksU2UoMSksUmUoIm5nSWYiLGEuZ2V0ZGF0YUVycm9yKX19ZnVuY3Rpb24gR0F0KGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIpLFllKDEpLENlKCkpLDImbCl7Y29uc3Qg''@;'; put 'put ''YT1HZSgzKTtTZSgxKSwkdSgiVG8gdW5sb2NrIG1vcmUgdGhhbiAiLGEubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQsIiAiLDE9PT1hLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkPyJyb3ciOiJyb3dzIiwiLCBjb250YWN0IHN1cHBvcnRAZGF0''@;'; put 'put ''YWNvbnRyb2xsZXIuaW8iKX19ZnVuY3Rpb24gJEF0KGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMTEwKSx0dCgxLEdBdCwyLDIsInNwYW4iLDM1KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLGEucmVzdHJpY3Rpb25zLnJlc3RyaWN0''@;'; put 'put ''QWRkUm93KX19ZnVuY3Rpb24gS0F0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRvb2x0aXAiKSgxLCJidXR0b24iLDEwOCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKTtyZXR1cm4gWnQoZC5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSb3c/''@;'; put 'put ''IiI6ZC5hZGRSZWNvcmRCdXR0b25DbGljaygpKX0pLHRuKDIsImNsci1pY29uIiw5NSksWWUoMywiIEFkZCBSZWNvcmQgIiksQ2UoKSx0dCg0LCRBdCwyLDEsImNsci10b29sdGlwLWNvbnRlbnQiLDEwOSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxncigiZGMtbG9ja2VkLWNv''@;'; put 'put ''bnRyb2wiLGEucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93KX19ZnVuY3Rpb24gcUF0KGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsMTExKSxZZSgxKSx0bigyLCJjb250YWN0LWxpbmsiKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSx3cigiIFRvIGRpc3BsYXkgbW9yZSB0aGFuICIs''@;'; put 'put ''YS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiIHJvd3MsIGNvbnRhY3QgIil9fWZ1bmN0aW9uIFhBdChsLGMpe2lmKDEmbCYmKHllKDAsInNwYW4iLDEyMyksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLCR1KCJPbmx5ICIsYS5saWNlbmNlU3Rh''@;'; put 'put ''dGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQsIiAiLDE9PT1hLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdD8icm93Ijoicm93cyIsIiB3aWxsIGJlIHN1Ym1pdHRlZC4gVG8gcmVtb3ZlIHRoZSByZXN0cmljdGlvbiwgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVy''@;'; put 'put ''LmlvIil9fWZ1bmN0aW9uIEpBdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMTI0KSgxLCJkaXYiLDEyNSkoMiwibGFiZWwiLDEyNiksWWUoMywiTWVzc2FnZSIpLENlKCkseWUoNCwidGV4dGFyZWEiLDEyNyksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3Jl''@;'; put 'put ''dHVybiBVdChhKSxadChHZSgyKS5tZXNzYWdlPWQpfSksQ2UoKSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDQpLFJlKCJuZ01vZGVsIixhLm1lc3NhZ2UpKCJkaXNhYmxlZCIsIWEudmFsaWRhdGlvbkRvbmUpKCJ2YWx1ZSIsYS52YWxpZGF0aW9uRG9uZT8iIjoiUGxlYXNlIHdhaXQg''@;'; put 'put ''d2hpbGUgd2UgdmFsaWRhdGUgIithLmNvbHMubGVuZ3RoKmEubW9kaWZlZFJvd3NJbmRleGVzLmxlbmd0aCsiIGNlbGxzLiIpfX1mdW5jdGlvbiBRQXQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDExMikoMSwiZGl2IiwxMTMpKDIsImRpdiIsMTE0KSgzLCJkaXYiLDEx''@;'; put 'put ''NSkoNCwiYnV0dG9uIiwxMTYpLHRuKDUsImNsci1pY29uIiwxMTcpLENlKCkseWUoNiwiaDMiLDIpLFllKDcpLENlKCkoKSx5ZSg4LCJkaXYiLDMpLHR0KDksWEF0LDIsMiwic3BhbiIsMTE4KSx0dCgxMCxKQXQsNSwzLCJkaXYiLDExOSksQ2UoKSx5ZSgxMSwiZGl2IiwxMjApKDEyLCJidXR0''@;'; put 'put ''b24iLDEyMSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKTtyZXR1cm4gWnQoZC5zYXZlVGFibGUoZC5ob3RUYWJsZS5kYXRhKSl9KSxZZSgxMywiIFN1Ym1pdCAiKSxDZSgpLHllKDE0LCJidXR0b24iLDEyMiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2Nv''@;'; put 'put ''bnN0IGQ9R2UoKTtyZXR1cm4gZC5jYW5jZWxTdWJtaXQoKSxkLnN1Ym1pdD0hMSxadChkLnZhbGlkYXRpb25Eb25lPTApfSksWWUoMTUsIiBDYW5jZWwgIiksQ2UoKSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpO1NlKDcpLE8wKCIgU3VibWl0IGZvciBBcHByb3ZhbCAoIixhLnJvd3ND''@;'; put 'put ''aGFuZ2VkLnJvd3NBZGRlZCwiIGFkZGVkLCAiLGEucm93c0NoYW5nZWQucm93c1VwZGF0ZWQsIiB1cGRhdGVkLCAiLGEucm93c0NoYW5nZWQucm93c0RlbGV0ZWQsIiBkZWxldGVkKSAiKSxTZSgyKSxSZSgibmdJZiIsYS50b3RhbFJvd3NDaGFuZ2VkPmEubGljZW5jZVN0YXRlLnZhbHVlLnN1''@;'; put 'put ''Ym1pdF9yb3dzX2xpbWl0JiZhLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCE9PWEuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixhLnRhYmxlVHJ1ZSksU2UoMiksUmUoImRpc2FibGVkIiwhYS52YWxpZGF0aW9uRG9uZSl9fWZ1bmN0aW9uIGVUdChsLGMpe2lmKDEmbCYm''@;'; put 'put ''KHllKDAsInNwYW4iLDEyOCksWWUoMSksd2woMiwicGtTcGFjZVNlcGFyYXRlIiksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGY9R2UoKTtTZSgxKSwkdSgiIE9uIHJvdyAiLGErMSwiOiAiLEpzKDIsMixmLnBrRmllbGRzW2FdLnJlcGxhY2UoInwiLCIiKSksIiAiKX19ZnVuY3Rp''@;'; put 'put ''b24gdFR0KGwsYyl7aWYoMSZsJiYoeWUoMCwicCIpLFllKDEpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxPMCgiICIsYS5jb2wsIigiLGEubGVuLCIpLCAiLGEudmFsLCIgIil9fWZ1bmN0aW9uIG5UdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIs''@;'; put 'put ''MTI5KSgxLCJkaXYiLDEzMCkoMiwiZGl2IiwxMTQpKDMsImRpdiIsMTE1KSg0LCJidXR0b24iLDExNiksdG4oNSwiY2xyLWljb24iLDExNyksQ2UoKSx5ZSg2LCJoMyIsMiksWWUoNywiRXJyb3IiKSxDZSgpKCkseWUoOCwiZGl2IiwzKSg5LCJwIiksWWUoMTAsIllvdSBjYW5ub3Qgc3VibWl0''@;'; put 'put ''IGVtcHR5IGNsYXVzZXMiKSxDZSgpKCkseWUoMTEsImRpdiIsMTcpKDEyLCJidXR0b24iLDQwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubnVsbFZhcmlhYmxlcz0hMSl9KSxZZSgxMywiIE9rICIpLENlKCkoKSgpKCkoKX19ZnVuY3Rpb24gclR0KGwsYyl7''@;'; put 'put ''MSZsJiZ0bigwLCJhcHAtcXVlcnkiLG51bGwsMTMxKX1mdW5jdGlvbiBpVHQobCxjKXsxJmwmJih5ZSgwLCJwIiwxMzIpLFllKDEsIiBTb3JyeSB0aGF0IGRpZG4ndCB3b3JrLCB0cnkgYWdhaW4uICIpLENlKCkpfWNvbnN0IG9UdD1mdW5jdGlvbihsLGMpe3JldHVybntsaWJOYW1lOmwsdGFi''@;'; put 'put ''bGVOYW1lOmN9fSxJNmU9ZnVuY3Rpb24oKXtyZXR1cm5bIiIsIiAiXX0sYVR0PWZ1bmN0aW9uKGwpe3JldHVybntoZWFkZXJCYXJGaWx0ZXI6bH19LFI2ZT1UKDUzKSxMNmU9VCgzOTAwNykuQnVmZmVyO2xldCBLUD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8sWCxh''@;'; put 'put ''ZSxwZSl7dGhpcy5saWNlbmNlU2VydmljZT1hLHRoaXMuZXZlbnRTZXJ2aWNlPWYsdGhpcy5sb2dnZXJTZXJ2aWNlPWQsdGhpcy5zYXNTdG9yZVNlcnZpY2U9aCx0aGlzLmhlbHBlclNlcnZpY2U9bSx0aGlzLnJvdXRlcj1fLHRoaXMucm91dGU9Tyx0aGlzLnNhc1NlcnZpY2U9WCx0aGlzLmNk''@;'; put 'put ''Zj1hZSx0aGlzLmhvdFJlZ2lzdGVyZXI9cGUsdGhpcy51cGxvYWRTdGF0ZXJDb21wTGlzdD1uZXcgVTIsdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0PW5ldyBVMix0aGlzLmhvdEluc3RhbmNlQ29tcExpc3Q9bmV3IFUyLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3Q9bmV3IFUyLHRoaXMu''@;'; put 'put ''bWVzc2FnZT0iIix0aGlzLiRkYXRhRm9ybWF0cz1udWxsLHRoaXMuY29scz1bXSx0aGlzLnJlc3RyaWN0aW9ucz17fSx0aGlzLmRhdGFzZXRJbmZvPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMudmlld2JveGVzPSExLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29s''@;'; put 'put ''SGVhZGVyczpbXSxoaWRkZW46ITAsY29sdW1uczpbXSxoZWlnaHQ6IjEwMCUiLG1pblNwYXJlUm93czoxLGxpY2Vuc2VLZXk6dm9pZCAwLHJlYWRPbmx5OiEwLGNvcHlQYXN0ZTp7Y29weUNvbHVtbkhlYWRlcnM6ITAsY29weUNvbHVtbkhlYWRlcnNPbmx5OiEwfSxzZXR0aW5nczp7Y29udGV4''@;'; put 'put ''dE1lbnU6e2l0ZW1zOntlZGl0X3Jvdzp7bmFtZToiRWRpdCByb3ciLGhpZGRlbigpe2NvbnN0IHhlPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpO2lmKCF4ZSlyZXR1cm4hMTtjb25zdCBWZT14ZVswXTtyZXR1cm4gVmUuZnJvbS5yb3chPT1WZS50by5yb3d9LGNhbGxiYWNrOihiZSx4ZSxWZSk9''@;'; put 'put ''PntsZXQgWmU9eGVbMF07WmUuc3RhcnQucm93PT09WmUuZW5kLnJvdyYmdGhpcy5lZGl0UmVjb3JkKG51bGwsWmUuc3RhcnQucm93KX19LHJvd19hYm92ZTp7bmFtZToiSW5zZXJ0IFJvdyBhYm92ZSJ9LHJvd19iZWxvdzp7bmFtZToiSW5zZXJ0IFJvdyBiZWxvdyJ9LHJlbW92ZV9yb3c6e25h''@;'; put 'put ''bWU6Iklnbm9yZSByb3cifSxjb3B5OntuYW1lOiJDb3B5IHdpdGhvdXQgaGVhZGVycyJ9LGNvcHlfd2l0aF9jb2x1bW5faGVhZGVyczp7bmFtZToiQ29weSB3aXRoIGhlYWRlcnMifSxjb3B5X2NvbHVtbl9oZWFkZXJzX29ubHk6e25hbWU6IkNvcHkgaGVhZGVycyBvbmx5In0sc3AxOntuYW1l''@;'; put 'put ''OiItLS0tLS0tLS0ifSx1bmRvOntuYW1lOiJVbmRvIn0scmVkbzp7bmFtZToiUmVkbyJ9fX19fSx0aGlzLmhvdENlbGxzUHJvcFJvdz1udWxsLHRoaXMuZmlsdGVyPSExLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLnVwbG9hZExvYWRpbmc9ITEsdGhpcy5yb3dzQ2hhbmdlZD17cm93c1Vw''@;'; put 'put ''ZGF0ZWQ6MCxyb3dzRGVsZXRlZDowLHJvd3NBZGRlZDowfSx0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcz1bXSx0aGlzLnF1ZXJ5RXJyPSExLHRoaXMuc3VjY2Vzc0VuYWJsZT0hMSx0aGlzLm51bGxWYXJpYWJsZXM9ITEsdGhpcy5wa0ZpZWxkcz1bXSx0aGlzLmZpbGVuYW1lPSIiLHRoaXMuc3Vi''@;'; put 'put ''bWl0TGltaXROb3RpY2U9ITEsdGhpcy5iYWRFZGl0PSExLHRoaXMuc2F2ZUxvYWRpbmc9ITEsdGhpcy5hcHByb3ZlcnM9W10sdGhpcy5lcnJWYWxpZGF0aW9uPSExLHRoaXMucGtOdWxsPSExLHRoaXMubm9Qa051bGw9ITEsdGhpcy50YWJsZURhdGE9W10sdGhpcy5xdWVyeVRleHQ9IiIsdGhp''@;'; put 'put ''cy5xdWVyeVRleHRTYXZlZD0iIix0aGlzLnNob3dBcHByb3ZlcnM9ITEsdGhpcy5wa0R1cHM9ITEsdGhpcy52YWxpZGF0aW9uRG9uZT0wLHRoaXMuZHVwbGljYXRlUGtJbmRleGVzPVtdLHRoaXMuY29sdW1uSGVhZGVyPVtdLHRoaXMuc3BlY0luZm89W10sdGhpcy50b29Mb25nPSExLHRoaXMu''@;'; put 'put ''ZXhjZWVkQ2VsbHM9W10sdGhpcy51cGxvYWRlcj1uZXcgX010LHRoaXMudXBsb2FkVXJsPSIiLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbCx0aGlzLmRhdGE9W10s''@;'; put 'put ''dGhpcy5oZWFkZXJBcnJheT1bXSx0aGlzLmhvdERhdGFTY2hlbWE9e30sdGhpcy5oZWFkZXJTaG93PVtdLHRoaXMuaGVhZGVyVmlzaWJsZT0hMSx0aGlzLmhhc0Jhc2VEcm9wWm9uZU92ZXI9ITEsdGhpcy5oYXNBbm90aGVyRHJvcFpvbmVPdmVyPSExLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMu''@;'; put 'put ''Y29sdW1uTGV2ZWxTZWN1cml0eUZsYWc9ITEsdGhpcy5kYXRlVGltZUhlYWRlcnM9W10sdGhpcy50aW1lSGVhZGVycz1bXSx0aGlzLmRhdGVIZWFkZXJzPVtdLHRoaXMueGxSdWxlcz1bXSx0aGlzLmVuY29kaW5nPSJVVEYtOCIsdGhpcy5oZWFkZXJDb2x1bW5zPVtdLHRoaXMuY2VsbFZhbGlk''@;'; put 'put ''YXRpb249W10sdGhpcy5maWxlUGFzc3dvcmRTdWJqZWN0PW5ldyB3ZSx0aGlzLmZpbGVVbmxvY2tFcnJvcj0hMSx0aGlzLmZpbGVQYXNzd29yZE1vZGFsPSExLHRoaXMuc2hvd1VwbG9hZE1vZGFsPSExLHRoaXMuZGlzY2FyZFNvdXJjZUZpbGU9ITEsdGhpcy5tYW51YWxGaWxlRWRpdE1vZGFs''@;'; put 'put ''PSExLHRoaXMucmVjb3JkQWN0aW9uPW51bGwsdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzPVtdLHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnM9W10sdGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PS0xLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSx0aGlz''@;'; put 'put ''LmdlbmVyYXRlZFJlY29yZFVybD1udWxsLHRoaXMuYWRkUmVjb3JkVXJsPW51bGwsdGhpcy5yZWNvcmROZXdPclBrTW9kaWZpZWQ9ITEsdGhpcy5hZGRSZWNvcmRMb2FkaW5nPSExLHRoaXMuc2luZ2xlUm93U2VsZWN0ZWQ9ITEsdGhpcy5hZGRpbmdOZXdSb3c9ITEsdGhpcy5nZXRkYXRhRXJy''@;'; put 'put ''b3I9ITEsdGhpcy56ZXJvRmlsdGVyUm93cz0hMSx0aGlzLnRhYmxlRmlsZURyYWdPdmVyPSExLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2U9W10sdGhpcy52YWxpZGF0aW9uVGFibGVMaW1pdD0yMCx0aGlzLmV4dGVuZGVkQ2VsbFZhbGlkYXRpb25GaWVsZHM9e0RJU1BMQVlfSU5ERVg6MCxF''@;'; put 'put ''WFRSQV9DT0xfTkFNRToxLERJU1BMQVlfVkFMVUU6MixESVNQTEFZX1RZUEU6MyxSQVdfVkFMVUVfTlVNOjQsUkFXX1ZBTFVFX0NIQVI6NSxGT1JDRV9GTEFHOjZ9LHRoaXMuY2VsbFZhbGlkYXRpb25GaWVsZHM9e0RJU1BMQVlfSU5ERVg6MCxESVNQTEFZX1ZBTFVFOjEsUkFXX1ZBTFVFOjJ9''@;'; put 'put ''LHRoaXMuZGlzYWJsZWRCYXNpY0R5bmFtaWNDZWxsVmFsaWRhdGlvbk1hcD1bXSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLnRpbWVzQ2xpY2tlZD0wLHRoaXMuaG90UmVnaXN0ZXJlcj1uZXcgSTUsdGhpcy5wYXJzZVJlc3RyaWN0aW9u''@;'; put 'put ''cygpLHRoaXMuc2V0UmVzdHJpY3Rpb25zKCl9cGFyc2VSZXN0cmljdGlvbnMoKXt0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJlY29yZD0hMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmFkZFJlY29yZCx0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEVkaXRSZWNvcmQ9ITE9PT10''@;'; put 'put ''aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0UmVjb3JkLHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0RmlsZVVwbG9hZD0hMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmZpbGVVcGxvYWR9c2V0UmVzdHJpY3Rpb25zKGEpe2EmJih0aGlzLnJlc3RyaWN0aW9ucz17Li4udGhpcy5yZXN0''@;'; put 'put ''cmljdGlvbnMsLi4uYX0pLHRoaXMucmVzdHJpY3Rpb25zLnJlbW92ZUVkaXRSZWNvcmRCdXR0b24mJmRlbGV0ZSh0aGlzLmhvdFRhYmxlPy5zZXR0aW5ncz8uY29udGV4dE1lbnUpLml0ZW1zLmVkaXRfcm93LHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93JiYoZGVsZXRlKHRoaXMu''@;'; put 'put ''aG90VGFibGU/LnNldHRpbmdzPy5jb250ZXh0TWVudSkuaXRlbXMucm93X2Fib3ZlLGRlbGV0ZSh0aGlzLmhvdFRhYmxlPy5zZXR0aW5ncz8uY29udGV4dE1lbnUpLml0ZW1zLnJvd19iZWxvdyxkZWxldGUodGhpcy5ob3RUYWJsZT8uc2V0dGluZ3M/LmNvbnRleHRNZW51KS5pdGVtcy5yZW1v''@;'; put 'put ''dmVfcm93KX1jaGVja1Jvd0xpbWl0KCl7dGhpcy5jb2x1bW5MZXZlbFNlY3VyaXR5RmxhZ3x8dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCE9PTEvMCYmKHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93PXRoaXMuZGF0YVNvdXJjZT8ubGVuZ3RoPj10''@;'; put 'put ''aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkKX1yZXNldEZpbHRlcigpe3RoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdCYmdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0LmZpcnN0LnJlc2V0RmlsdGVyKCl9b25TaG93VXBsb2FkTW9kYWwoKXt0aGlzLnJlc3Ry''@;'; put 'put ''aWN0aW9ucy5yZXN0cmljdEZpbGVVcGxvYWQ/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCJGaWxlIFVwbG9hZCIpOnRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiSW5mb3JtYXRpb24iLCJVcGxvYWQgZmVh''@;'; put 'put ''dHVyZSBpcyBkaXNhYmxlZCB3aGlsZSBDb2x1bW4gTGV2ZWwgU2VjdXJpdHkgcnVsZXMgYXJlIGFjdGl2ZSIpOnRoaXMudXBsb2FkUHJldmlld3x8KHRoaXMuc2hvd1VwbG9hZE1vZGFsPSEwKX1maWxlT3ZlckJhc2UoYSl7dGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPWF9dXBkYXRlX3NoZWV0''@;'; put 'put ''X3JhbmdlKGEpe3ZhciBmPXtzOntyOjEvMCxjOjEvMH0sZTp7cjowLGM6MH19O09iamVjdC5rZXlzKGEpLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4iISIhPWQuY2hhckF0KDApfSkubWFwKEM2LnV0aWxzLmRlY29kZV9jZWxsKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2Yucy5jPU1hdGgubWlu''@;'; put 'put ''KGYucy5jLGQuYyksZi5zLnI9TWF0aC5taW4oZi5zLnIsZC5yKSxmLmUuYz1NYXRoLm1heChmLmUuYyxkLmMpLGYuZS5yPU1hdGgubWF4KGYuZS5yLGQucil9KSxhWyIhcmVmIl09QzYudXRpbHMuZW5jb2RlX3JhbmdlKGYpfWdldFJhbmdlQW5kU2hlZXQoYSl7bGV0IGY9MCxkPTAsaD0tMSxt''@;'; put 'put ''PS0xLF89IiIsTz0hMSxYPVtdLHBlPVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiwuLi50aGlzLmhlYWRlckFycmF5XS5tYXAoVmU9PlZlLnRvTG93ZXJDYXNlKCkpLGJlPXBlLnJlZHVjZSgoVmUsWmUpPT4oVmVbWmVdPS0xLFZlKSx7fSk7cmV0dXJuIGEuU2hlZXROYW1lcy5m''@;'; put 'put ''b3JFYWNoKFZlPT57aWYoTylyZXR1cm47WD1bXSxfPVZlO2NvbnN0IFplPWEuU2hlZXRzW19dO2lmKHRoaXMuZGF0YT1DNi51dGlscy5zaGVldF90b19qc29uKFplLHtoZWFkZXI6MSxibGFua3Jvd3M6ITEsZGVmdmFsOiIifSksdGhpcy5kYXRhLmxlbmd0aDw9MSlyZXR1cm47bGV0IGx0PVtd''@;'; put 'put ''O3RoaXMuaGVhZGVyQXJyYXkuZm9yRWFjaCgoKT0+bHQucHVzaCgiIikpLHRoaXMuZGF0YS5wdXNoKGx0KTtsZXQgZHQ9ITE7aWYodGhpcy5kYXRhLmZvckVhY2goKGd0LGp0KT0+e2lmKCFPKWlmKGR0KXtsZXQgcm49ITAsWHQ9ITE7cGUuZm9yRWFjaCh5bj0+e2NvbnN0IFFuPWJlW3luXTsi''@;'; put 'put ''IiE9PWd0W1FuXSYmdm9pZCAwIT09Z3RbUW5dP3JuPSExOi0xIT09dGhpcy5oZWFkZXJQa3MuaW5kZXhPZih5bi50b1VwcGVyQ2FzZSgpKSYmKFh0PSEwKX0pLHJufHxYdD8obT1qdCxPPSEwKTotMT09PWgmJihoPWp0KX1lbHNle2NvbnN0IHJuPWd0Lm1hcCh5bj0+eW4udG9TdHJpbmcoKS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpKTtpZighcm4uaW5jbHVkZXMoIl9fX19fZGVsZXRlX190aGlzX19yZWNvcmRfX19fXyIpKXtjb25zdCB5bj1wZS5pbmRleE9mKCJfX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18iKTt5bj4tMSYmcGUuc3BsaWNlKHluLDEpfWR0PSEwLHBlLmZvckVhY2goeW49Pnst''@;'; put 'put ''MT09PXJuLmluZGV4T2YoeW4pJiYoZHQ9ITEpfSk7bGV0IFh0PVtdO1h0PXRoaXMuZmluZFZhbGlkSGVhZGVycyhybixwZSxqdCxfKSwhMT09PVh0WzBdPyhkdD0hMSxYdFsxXS5sZW5ndGg+MCYmWHRbMV0uZm9yRWFjaCh5bj0+e1gucHVzaCh5bil9KSk6YmU9WHRbMV19fSksTyYmKHRoaXMu''@;'; put 'put ''dXBkYXRlX3NoZWV0X3JhbmdlKFplKSxaZVsiIXJlZiJdKSl7Y29uc3QganQ9QzYudXRpbHMuZGVjb2RlX3JhbmdlKFplWyIhcmVmIl18fCIiKTtmPWp0LnMucixkPWp0LnMuY319KSwtMT09PWgmJihPPSExKSx7Zm91bmREYXRhOk8sc2hlZXROYW1lOl8sc3RhcnRSb3c6aCxlbmRSb3c6bSxj''@;'; put 'put ''c3ZBcnJheUhlYWRlcnNNYXA6YmUsbWlzc2luZ0hlYWRlcnM6WCxyYW5nZVN0YXJ0Um93OmYscmFuZ2VTdGFydENvbDpkfX1wcm9tcHRFeGNlbFBhc3N3b3JkKCl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGYpPT57dGhpcy5maWxlUGFzc3dvcmRNb2RhbD0hMCxzZXRUaW1lb3V0KCgpPT57Y29u''@;'; put 'put ''c3QgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZmlsZVBhc3N3b3JkSW5wdXQiKTtkJiYoZC5mb2N1cygpLGQudmFsdWU9IiIpfSwxMDApLHRoaXMuZmlsZVBhc3N3b3JkU3ViamVjdC5zdWJzY3JpYmUoZD0+e3RoaXMuZmlsZVVubG9ja0Vycm9yPSExLGEoZHx8dm9pZCAwKX0pfSl9Z2V0''@;'; put 'put ''RmlsZURlc2MoYSxmPSExKXt2YXIgZD10aGlzO2xldCBoO3RoaXMuZXhjZWxVcGxvYWRTdGF0ZT0iTG9hZGluZyIsdGhpcy5leGNlbEZpbGVQYXJzaW5nPSEwLGg9Zj9hWzBdOmEudGFyZ2V0LmZpbGVzWzBdLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy5maWxlbmFtZT0iIjtsZXQgbT1o''@;'; put 'put ''Lm5hbWU7dGhpcy5maWxlbmFtZT1tLHRoaXMuYXBwZW5kVXBsb2FkU3RhdGUoYExvYWRpbmcgJHttfSBpbnRvIHRoZSBicm93c2VyYCk7bGV0IE89bS5zbGljZShtLmxhc3RJbmRleE9mKCIuIikrMSxtLmxhc3RJbmRleE9mKCIuIikrNCk7aWYoInhscyI9PT1PLnRvTG93ZXJDYXNlKCkpe2xl''@;'; put 'put ''dCBYPW5ldyBGaWxlUmVhZGVyO1gub25sb2FkPWZ1bmN0aW9uKCl7dmFyIHBlPXlpKGZ1bmN0aW9uKihiZSl7Y29uc3QgeGU9ZC50b0JzdHIoYmUudGFyZ2V0LnJlc3VsdCk7bGV0IFZlLFplPSExO2NvbnN0IGx0PXt0eXBlOiJiaW5hcnkiLGNlbGxEYXRlczohMSxjZWxsRm9ybXVsYTohMCxj''@;'; put 'put ''ZWxsU3R5bGVzOiEwLGNlbGxORjohMSxjZWxsVGV4dDohMX07dHJ5e1ZlPUM2LnJlYWQoeGUsey4uLmx0fSl9Y2F0Y2goT3Ipe2lmKE9yLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygicGFzc3dvcmQiKSlmb3IoWmU9ITA7WmU7KXtjb25zdCBWcj15aWVsZCBkLnByb21wdEV4Y2Vs''@;'; put 'put ''UGFzc3dvcmQoKTtpZihWcil0cnl7VmU9QzYucmVhZCh4ZSx7Li4ubHQscGFzc3dvcmQ6VnJ9KSxaZT0hMSxkLmZpbGVVbmxvY2tFcnJvcj0hMX1jYXRjaChacil7ZC5maWxlVW5sb2NrRXJyb3I9ITAsWnIubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpfHwoWmU9''@;'; put 'put ''ITEpfWVsc2UgWmU9ITF9ZWxzZSBkLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLE9yLHZvaWQgMCwiRXJyb3IgcmVhZGluZyBmaWxlIil9aWYoIVZlKXJldHVybiBkLmV4Y2VsRmlsZVBhcnNpbmc9ITEsdm9pZChkLnNob3dVcGxvYWRNb2RhbD0hMSk7bGV0IGR0PSExLGd0PVtd''@;'; put 'put ''O2NvbnN0IGp0PVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiwuLi5kLmhlYWRlckFycmF5XTtsZXQgcm49anQubWFwKE9yPT5Pci50b0xvd2VyQ2FzZSgpKSxYdD1ybi5yZWR1Y2UoKE9yLFZyKT0+KE9yW1ZyXT0tMSxPcikse30pLHluPVtdO2NvbnN0IFFuPWQuZ2V0UmFuZ2VB''@;'; put 'put ''bmRTaGVldChWZSk7aWYoZ3Q9UW4ubWlzc2luZ0hlYWRlcnMsUW4uZm91bmREYXRhKXtkdD0hMCxYdD1Rbi5jc3ZBcnJheUhlYWRlcnNNYXA7Y29uc3QgT3I9VmUuU2hlZXRzW1FuLnNoZWV0TmFtZV07ZC5hcHBlbmRVcGxvYWRTdGF0ZShgVGFibGUgZm91bmQgb24gc2hlZXQgJHtRbi5zaGVl''@;'; put 'put ''dE5hbWV9IG9uIHJvdyAke1FuLnN0YXJ0Um93fWApO2xldCBWcj0iIixacj0iIjtmb3IobGV0IGlyPVFuLnN0YXJ0Um93O2lyPFFuLmVuZFJvdzsrK2lyKXtjb25zdCBzaT1bXTtybi5mb3JFYWNoKEVuPT57Y29uc3QgVm49QzYudXRpbHMuZW5jb2RlX2NlbGwoe3I6UW4ucmFuZ2VTdGFydFJv''@;'; put 'put ''dytpcixjOlFuLnJhbmdlU3RhcnRDb2wrWHRbRW5dfSk7bGV0IGNyOyIiPT09VnImJihWcj1WbiksWnI9Vm4sY3I9T3JbVm5dP09yW1ZuXTp7djoiIn0sc2kucHVzaChjcil9KSxzaS5maW5kKEVuPT4iIiE9PUVuLnYpJiZ5bi5wdXNoKHNpKX1kLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFs''@;'; put 'put ''KCJUYWJsZSBGb3VuZCIsYFNoZWV0OiAke1FuLnNoZWV0TmFtZX1cblJhbmdlOiAke1ZyfToke1pyfWApfWVsc2UgZ3Q9UW4ubWlzc2luZ0hlYWRlcnM7aWYoZ3QubGVuZ3RoPjApe2d0LnNvcnQoZnVuY3Rpb24oWnIsaXIpe3JldHVybiBaclsxXT09PWlyWzFdPzA6WnJbMV0+aXJbMV0/LTE6''@;'; put 'put ''MX0pO2xldCBPcj1ndC5tYXAoVnI9PlZyWzBdKS5zbGljZSgwLDUpLmpvaW4oIlxuIik7cmV0dXJuIGQuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsT3IpLHNldFRpbWVvdXQoKCk9PntkLmZpbGVuYW1lPSIifSksZC5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgZC51cGxvYWRl''@;'; put 'put ''ci5xdWV1ZS5wb3AoKX1pZigwPT09eW4ubGVuZ3RofHwwPT09eW5bMF0ubGVuZ3RoKXJldHVybiBkLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJObyByZWxldmFudCBkYXRhIGZvdW5kIGluIEZpbGUgISIpLHNldFRpbWVvdXQoKCk9PntkLmZpbGVuYW1lPSIifSksZC5leGNl''@;'; put 'put ''bEZpbGVQYXJzaW5nPSExLHZvaWQgZC51cGxvYWRlci5xdWV1ZS5wb3AoKTtpZigoZC5kYXRlVGltZUhlYWRlcnMubGVuZ3RoPjB8fGQuZGF0ZUhlYWRlcnMubGVuZ3RoPjB8fGQudGltZUhlYWRlcnMubGVuZ3RoPjApJiYoeW49ZC51cGRhdGVEYXRlVGltZUNvbHMoanQseW4pKSxkLnhsUnVs''@;'; put 'put ''ZXMubGVuZ3RoPjAmJih5bj1kLnVwZGF0ZVhMUnVsZUNvbHMoanQseW4pKSwhZHQpe2lmKDA9PT1ndC5sZW5ndGgpZC5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiTm8gcmVsZXZhbnQgZGF0YSBmb3VuZCBpbiBGaWxlICEiKSxzZXRUaW1lb3V0KCgpPT57ZC5maWxlbmFtZT0i''@;'; put 'put ''In0pO2Vsc2V7Z3Quc29ydChmdW5jdGlvbihacixpcil7cmV0dXJuIFpyWzFdPT09aXJbMV0/MDpaclsxXT5pclsxXT8tMToxfSk7bGV0IE9yPWd0Lm1hcChWcj0+VnJbMF0pLnNsaWNlKDAsNSkuam9pbigiXG4iKTtkLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLE9yKX1yZXR1''@;'; put 'put ''cm4gZC5leGNlbEZpbGVQYXJzaW5nPSExLHZvaWQgZC51cGxvYWRlci5xdWV1ZS5wb3AoKX17ZC5oZWFkZXJTaG93PWp0LHluPXluLm1hcChWcj0+VnIubWFwKFpyPT4ibiI9PT1aci50P1pyLnY6WnIudykpLHluPXluLm1hcChWcj0+VnIubWFwKChacixpcik9PnshWnImJjAhPT1aciYmKFpy''@;'; put 'put ''PSIiKSxpc05hTihacikmJihacj1aci5yZXBsYWNlKC8iL2csJyIiJykpLnNlYXJjaCgvLC9nKT4tMSYmKFpyPSciJytacisnIicpO2NvbnN0IHNpPWQuaGVhZGVyU2hvd1tpcl07cmV0dXJuIm51bWVyaWMiPT09ZC5kY1ZhbGlkYXRvcj8uZ2V0UnVsZShzaSk/LnR5cGUmJigwLHUzLmlzU3Bl''@;'; put 'put ''Y2lhbE1pc3NpbmcpKFpyKSYmIVpyLmluY2x1ZGVzKCIuIikmJihacj0iLiIrWnIpLFpyfSkpLGQuZGF0YT15bjtsZXQgT3I9anQuam9pbigiLCIpKyJcbiI7aWYoT3IrPXluLnNsaWNlKDAsZC5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQpLm1hcChWcj0+VnIuam9pbigi''@;'; put 'put ''LCIpKS5qb2luKCJcbiIpLCJXTEFUSU4xIj09PWQuZW5jb2Rpbmcpe2xldCBWcj1SNmUuZGVjb2RlKEw2ZS5mcm9tKE9yKSwiQ1AtMTI1MiIpLFpyPW5ldyBCbG9iKFtWcl0se3R5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KSxpcj1kLmJsb2JUb0ZpbGUoWnIsZC5maWxlbmFtZSsiLmNzdiIpO2Qu''@;'; put 'put ''dXBsb2FkZXIuYWRkVG9RdWV1ZShbaXJdKX1lbHNle2xldCBWcj1uZXcgQmxvYihbT3JdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSksWnI9ZC5ibG9iVG9GaWxlKFZyLGQuZmlsZW5hbWUrIi5jc3YiKTtkLnVwbG9hZGVyLmFkZFRvUXVldWUoW1pyXSl9ZC5leGNlbEZpbGVSZWFkeT0hMH1p''@;'; put 'put ''ZigwPT09ZC5kYXRhLmxlbmd0aClyZXR1cm4gZC5zaG93VXBsb2FkTW9kYWw9ITEsZC51cGxvYWRQcmV2aWV3PSExLGQuZXhjZWxGaWxlUGFyc2luZz0hMSx2b2lkIGQuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIlRhYmxlIGluIHRoZSBmaWxlIGlzIGVtcHR5LiBEYXRhIGZv''@;'; put 'put ''dW5kIG9uIHNoZWV0OiAiKTtkLmV4Y2VsRmlsZVJlYWR5PSEwLGQuZ2V0UGVuZGluZ0V4Y2VsUHJldmlldygpfSk7cmV0dXJuIGZ1bmN0aW9uKGJlKXtyZXR1cm4gcGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxYLnJlYWRBc0FycmF5QnVmZmVyKGgpfWVsc2UgaWYoImNzdiI9PT1PLnRv''@;'; put 'put ''TG93ZXJDYXNlKCkpe2lmKHRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0IT09MS8wKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJOb3RpY2UiLCJFeGNlbCBmaWxlcyBvbmx5LiBUbyB1bmxvY2sgQ1NWIHVwbG9hZHMsIHBsZWFzZSBjb250''@;'; put 'put ''YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKSx0aGlzLmV4Y2VsRmlsZVJlYWR5PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx2b2lkIHRoaXMudXBsb2FkZXIucXVldWUucG9wKCk7aWYoIldMQVRJTjEiPT09dGhpcy5lbmNvZGluZyl7bGV0IFg9bmV3IEZpbGVSZWFkZXI7WC5v''@;'; put 'put ''bmxvYWQ9cGU9PntsZXQgYmU9UjZlLmRlY29kZShMNmUuZnJvbShwZS50YXJnZXQucmVzdWx0KSwiQ1AtMTI1MiIpLHhlPW5ldyBCbG9iKFtiZV0se3R5cGU6T30pLFZlPXRoaXMuYmxvYlRvRmlsZSh4ZSx0aGlzLmZpbGVuYW1lKTt0aGlzLnVwbG9hZGVyLnF1ZXVlLnBvcCgpLHRoaXMudXBs''@;'; put 'put ''b2FkZXIuYWRkVG9RdWV1ZShbVmVdKSx0aGlzLmV4Y2VsRmlsZVJlYWR5PSEwfSx0aGlzLmV4Y2VsRmlsZVJlYWR5PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSxYLnJlYWRBc0FycmF5QnVmZmVyKGgpLHRoaXMuZ2V0RmlsZSgpfWVsc2UgdGhpcy5leGNlbEZpbGVSZWFkeT0hMCx0aGlz''@;'; put 'put ''LmV4Y2VsRmlsZVBhcnNpbmc9ITEsdGhpcy5nZXRGaWxlKCl9ZWxzZSB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCdJbnZhbGlkIGZpbGUgdHlwZSAiPGI+Jyt0aGlzLmZpbGVuYW1lKyc8L2I+Ii4gUGxlYXNlIHVwbG9hZCBjc3Ygb3IgZXhjZWwgZmlsZS4nKSx0aGlz''@;'; put 'put ''LmV4Y2VsRmlsZVJlYWR5PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLnVwbG9hZGVyLnF1ZXVlLnBvcCgpfXN1Ym1pdEV4Y2VsKCl7dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQ9PT0xLzA/dGhpcy5nZXRGaWxlKCk6dGhpcy5zdWJtaXRMaW1pdE5v''@;'; put 'put ''dGljZT0hMH1nZXRGaWxlKCl7aWYodGhpcy5jaGVja0ludmFsaWQoKSlyZXR1cm4gdm9pZCB0aGlzLmV2ZW50U2VydmljZS5zaG93QWJvcnRNb2RhbChudWxsLCJJbnZhbGlkIHZhbHVlcyBhcmUgcHJlc2VudC4iKTtpZih0aGlzLnZhbGlkYXRlUHJpbWFyeUtleXMoKSwwIT09dGhpcy5kdXBs''@;'; put 'put ''aWNhdGVQa0luZGV4ZXMubGVuZ3RoKXJldHVybiB0aGlzLnBrRHVwcz0hMCx2b2lkKHRoaXMuc3VibWl0PSExKTt0aGlzLnBrRHVwcz0hMSx0aGlzLnVwbG9hZExvYWRpbmc9ITA7bGV0IGE9W107Zm9yKGNvbnN0IGYgb2YgdGhpcy51cGxvYWRlci5xdWV1ZSlhLnB1c2goe2ZpbGU6ZixmaWxl''@;'; put 'put ''TmFtZTpmLm5hbWV9KTt0aGlzLnNhc1NlcnZpY2UudXBsb2FkRmlsZSh0aGlzLnVwbG9hZFVybCxhLHt0YWJsZTp0aGlzLmxpYmRzfSkudGhlbihmPT57aWYodHlwZW9mIGYuc2FzanNBYm9ydD4idSIpe2lmKHR5cGVvZiBmLnNhc3BhcmFtcz4idSIpcmV0dXJuO3t0aGlzLnVwbG9hZExvYWRp''@;'; put 'put ''bmc9ITE7bGV0IGQ9Zi5zYXNwYXJhbXNbMF07dGhpcy5zdWNjZXNzRW5hYmxlPSEwLHRoaXMudGFibGVJZD1kLkRTSUQsdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrdGhpcy50YWJsZUlkKX19ZWxzZXtjb25zdCBkPWYsaD1kLnNhc2pzQWJvcnRbMF0uTVNHLG09ZC5zYXNq''@;'; put 'put ''c0Fib3J0WzBdLk1BQzt0aGlzLnVwbG9hZExvYWRpbmc9ITEsdGhpcy5maWxlbmFtZT0iIix0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYodGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZGVyLnF1''@;'; put 'put ''ZXVlPVtdLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCIiLGgse1NZU1dBUk5JTkdURVhUOmQuU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhUOmQuU1lTRVJST1JURVhULE1BQzptfSl9fSxmPT57dGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMuZmlsZVVwbG9hZElucHV0Q29t''@;'; put 'put ''cExpc3QuZmlyc3QmJih0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpLHRoaXMudXBsb2FkZXIucXVldWU9W10sdGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJmaWxlIHVwbG9hZCIsZil9KX1nZXRQZW5kaW5nRXhj''@;'; put 'put ''ZWxQcmV2aWV3KCl7dGhpcy5xdWVyeVRleHRTYXZlZD10aGlzLnF1ZXJ5VGV4dCx0aGlzLnF1ZXJ5VGV4dD0iIix0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9IlBhcnNpbmciLHRoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITEpO2xldCBhPVtdO3RoaXMuZGF0YS5tYXAoZD0+e2xl''@;'; put 'put ''dCBoPXt9O3RoaXMuaGVhZGVyU2hvdy5tYXAoKG0sXyk9PntoW21dPWRbX119KSxoLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fX3x8KGguX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fPSJObyIpLGEucHVzaChoKX0pLHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZD10aGlzLmhl''@;'; put 'put ''bHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5kYXRhU291cmNlPWEsdGhpcy5ob3RUYWJsZS5kYXRhPWE7Y29uc3QgZj10aGlzLmhvdEluc3RhbmNlO3RoaXMuZXhjZWxVcGxvYWRTdGF0ZT0iVmFsaWRhdGluZy1IT1QiLGYudXBkYXRlU2V0dGluZ3Moe2RhdGE6''@;'; put 'put ''dGhpcy5kYXRhU291cmNlLG1heFJvd3M6MS8wfSwhMSksZi5yZW5kZXIoKSx0aGlzLmFwcGVuZFVwbG9hZFN0YXRlKCJWYWxpZGF0aW5nIHJvd3MiKSxmLnZhbGlkYXRlQ2VsbHMoKCk9Pnt0aGlzLnNob3dVcGxvYWRNb2RhbD0hMSx0aGlzLnVwbG9hZFByZXZpZXc9ITAsdGhpcy5leGNlbEZp''@;'; put 'put ''bGVQYXJzaW5nPSExLHRoaXMuZXhjZWxVcGxvYWRTdGF0ZT1udWxsfSl9ZGlzY2FyZFBlbmRpbmdFeGNlbChhKXt0aGlzLmhvdEluc3RhbmNlLnVwZGF0ZVNldHRpbmdzKHttYXhSb3dzOnRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWR9KSxhJiZ0aGlzLmNhbmNl''@;'; put 'put ''bEVkaXQoKSx0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYodGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZFByZXZpZXc9ITEsdGhpcy5leGNlbEZpbGVSZWFkeT0hMSx0aGlzLnVwbG9hZGVyLnF1''@;'; put 'put ''ZXVlPVtdLGlzTmFOKHBhcnNlSW50KHRoaXMucm91dGVyLnVybC5zcGxpdCgiLyIpLnBvcCgpfHwiIikpfHx0aGlzLnF1ZXJ5VGV4dFNhdmVkLmxlbmd0aD4wJiYodGhpcy5xdWVyeVRleHQ9dGhpcy5xdWVyeVRleHRTYXZlZCx0aGlzLnF1ZXJ5VGV4dFNhdmVkPSIiKX1wcmV2aWV3VGFibGVF''@;'; put 'put ''ZGl0Q29uZmlybSgpe3RoaXMuZGlzY2FyZFBlbmRpbmdFeGNlbCgpLHRoaXMuY29udmVydFRvQ29ycmVjdFR5cGVzKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5lZGl0VGFibGUoITApfWFwcGVuZFVwbG9hZFN0YXRlKGEsZj0hMSl7dGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMudXBsb2Fk''@;'; put 'put ''U3RhdGVyQ29tcExpc3QuZmlyc3QmJihmP3RoaXMudXBsb2FkU3RhdGVyQ29tcExpc3QuZmlyc3QucmVwbGFjZUxhc3RTdGF0ZShhKTp0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0LmFwcGVuZFN0YXRlKGEpKX1maW5kVmFsaWRIZWFkZXJzKGEsZixkLGgpe2xldCBtPSExLF89W10s''@;'; put 'put ''Tz0wO2Zvcig7TzxhLmxlbmd0aDspe2lmKCFtJiYtMSE9PWYuaW5kZXhPZihhW09dKSl7bGV0IFgsYWU9MCxwZT0wLGJlPTAseGU9W10sVmU9ITE7Zm9yKGxldCBkdD1PO2R0PGEubGVuZ3RoO2R0Kyspe2lmKCIiPT09YVtkdF18fC0xIT09eGUuaW5kZXhPZihhW2R0XSkmJnRoaXMuaXNDb2xI''@;'; put 'put ''ZWFkZXIoYVtkdF0pKXsiIj09PWFbZHRdJiYoVmU9ITApLFg9ZHQ7YnJlYWt9eGUucHVzaChhW2R0XSl9bGV0IFplPVtdO3ZvaWQgMCE9PVg/KFplPWEuc2xpY2UoTyxYKSxiZT1PLHBlPVgsVmU/KGFlPU8sTz1YKTooYWU9TyxPPVgtMSkpOihaZT1hLnNsaWNlKE8pLGFlPU8sYmU9TyxwZT1h''@;'; put 'put ''Lmxlbmd0aCxPPWEubGVuZ3RoKTtsZXQgbHQ9ITA7aWYoZi5mb3JFYWNoKGR0PT57LTE9PT1aZS5pbmRleE9mKGR0KSYmKGx0PSExKX0pLGx0KXttPSEwO2xldCBndD1mLnJlZHVjZShmdW5jdGlvbihybixYdCl7cmV0dXJuIHJuW1h0XT0tMSxybn0se30pLGp0PWEuc2xpY2UoYWUscGUpO3Jl''@;'; put 'put ''dHVybiBmLmZvckVhY2gocm49PntndFtybl09anQuaW5kZXhPZihybikrYWV9KSxbITAsZ3RdfXtsZXQgZHQ9SU10KFplLGYpO18ucHVzaChbIjxiPlRBQigiK2grIik8L2I+IC0gIitkdFsxXS5qb2luKCIsIikrIiAoIG1pc3NpbmcgIitkdFswXS5qb2luKCIsIikrIiApIixkdFsxXS5sZW5n''@;'; put 'put ''dGhdKX19TysrfXJldHVyblshMSxfXX1pc0NvbFBrKGEpe3JldHVybiB0aGlzLmhlYWRlclBrcy5pbmRleE9mKGEpPi0xfWlzUmVhZG9ubHlDb2woYSl7cmV0dXJuIHRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUoYSk/LnJlYWRPbmx5fWlzQ29sSGVhZGVyKGEpe3JldHVybiB0aGlzLmhlYWRl''@;'; put 'put ''ckFycmF5LmluZGV4T2YoYS50b1VwcGVyQ2FzZSgpKT4tMX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXVwZGF0ZURhdGVUaW1lQ29scyhhLGYpe2lmKHRoaXMuZGF0ZUhlYWRlcnMubGVuZ3RoPjApe2xldCBkPVtdO3RoaXMuZGF0ZUhlYWRlcnMu''@;'; put 'put ''Zm9yRWFjaChoPT57LTEhPT1hLmluZGV4T2YoaCkmJmQucHVzaChhLmluZGV4T2YoaCkpfSksZi5mb3JFYWNoKGg9PntkLmZvckVhY2gobT0+e2NvbnN0IF89aFttXTtpZihNSihfLnYpKXtjb25zdCBPPUNKKE51bWJlcihfLnYpKTtfLnY9Ty5nZXRGdWxsWWVhcigpKyItIisoIjAiKyhPLmdl''@;'; put 'put ''dE1vbnRoKCkrMSkpLnNsaWNlKC0yKSsiLSIrKCIwIitPLmdldERhdGUoKSkuc2xpY2UoLTIpfWVsc2UgaWYoXyYmXy52JiYtMT09PV8udi50b1N0cmluZygpLmluZGV4T2YoIjoiKSl7Y29uc3QgTz1uZXcgRGF0ZShfLnYpOyJJbnZhbGlkIERhdGUiIT09Ty50b1VUQ1N0cmluZygpJiYoXy52''@;'; put 'put ''PXdKKE8pKX1oW21dPV99KX0pfWlmKHRoaXMudGltZUhlYWRlcnMubGVuZ3RoPjApe2xldCBkPVtdO3RoaXMudGltZUhlYWRlcnMuZm9yRWFjaChoPT57LTEhPT1hLmluZGV4T2YoaCkmJmQucHVzaChhLmluZGV4T2YoaCkpfSksZi5mb3JFYWNoKGg9PntkLmZvckVhY2gobT0+e2NvbnN0IF89''@;'; put 'put ''aFttXTtpZihNSihfLnYpfHx6NWUoXy52KXx8Xy52LmluY2x1ZGVzKCJFLSIpKXtjb25zdCBPPUNKKE51bWJlcihfLnYpKTtfLnY9ajVlKE8pfWhbbV09X30pfSl9aWYodGhpcy5kYXRlVGltZUhlYWRlcnMubGVuZ3RoPjApe2xldCBkPVtdO3RoaXMuZGF0ZVRpbWVIZWFkZXJzLmZvckVhY2go''@;'; put 'put ''aD0+ey0xIT09YS5pbmRleE9mKGgpJiZkLnB1c2goYS5pbmRleE9mKGgpKX0pLGYuZm9yRWFjaChoPT57ZC5mb3JFYWNoKG09Pntjb25zdCBfPWhbbV07aWYoTUooXy52KXx8ejVlKF8udikpe2xldCBPPUNKKE51bWJlcihfLnYpKTtfLnY9d0ooTykrIiAiK2o1ZShPKX1lbHNle2lmKC0xPT09''@;'; put 'put ''Xy52LmluZGV4T2YoIiAiKSYmLTEhPT1fLnYuaW5kZXhPZigiOiIpKXtsZXQgWD1fLnYuc3Vic3RyaW5nKDAsXy52LmluZGV4T2YoIjoiKSk7WD1YKyIgIitfLnYuc3Vic3RyaW5nKF8udi5pbmRleE9mKCI6IikrMSksXy52PVh9bGV0IE89bmV3IERhdGUoXy52KTsiSW52YWxpZCBEYXRlIiE9''@;'; put 'put ''PU8udG9VVENTdHJpbmcoKSYmKF8udj13SihPKSsiICIrKGw9PntsZXQgYz0oIjAiK2wuZ2V0SG91cnMoKSkuc2xpY2UoLTIpKyI6IjtyZXR1cm4gYz1jKygiMCIrbC5nZXRNaW51dGVzKCkpLnNsaWNlKC0yKSsiOiIsYys9KCIwIitsLmdldFNlY29uZHMoKSkuc2xpY2UoLTIpLGN9KShPKSl9''@;'; put 'put ''aFttXT1ffSl9KX1yZXR1cm4gZn11cGRhdGVYTFJ1bGVDb2xzKGEsZil7aWYodGhpcy54bFJ1bGVzLmxlbmd0aD4wKXtjb25zdCBkPVtdO3RoaXMueGxSdWxlcy5mb3JFYWNoKGg9PnstMSE9PWEuaW5kZXhPZihoLlhMX0NPTFVNTikmJihoLmluZGV4PWEuaW5kZXhPZihoLlhMX0NPTFVNTiks''@;'; put 'put ''ZC5wdXNoKGgpKX0pLGYuZm9yRWFjaChoPT57ZC5mb3JFYWNoKG09Pntjb25zdCBfPWhbbS5pbmRleF07IkZPUk1VTEEiPT09bS5YTF9SVUxFJiYiZiJpbiBfJiYoIm4iPT09Xy50P18udj0iPSIrXy5mOl8udz0iPSIrXy5mKSxoW21dPV99KX0pfXJldHVybiBmfWJsb2JUb0ZpbGUoYSxmKXtj''@;'; put 'put ''b25zdCBkPWE7cmV0dXJuIGQubGFzdE1vZGlmaWVkRGF0ZT1uZXcgRGF0ZSxkLm5hbWU9ZixkfXRvQnN0cihhKXtsZXQgZj1uZXcgVWludDhBcnJheShhKSxkPSIiLGg9Zi5ieXRlTGVuZ3RoO2ZvcihsZXQgbT0wO208aDttKyspZCs9U3RyaW5nLmZyb21DaGFyQ29kZShmW21dKTtyZXR1cm4g''@;'; put 'put ''ZH1zZW5kQ2xhdXNlKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5zdWJtaXRMb2FkaW5nPSEwO2xldCBmPVtdLGQ9W107aWYodHlwZW9mIGEuY2xhdXNlcz4idSIpcmV0dXJuIGEubnVsbFZhcmlhYmxlcz0hMCx2b2lkKGEuc3VibWl0TG9hZGluZz0hMSk7e2xldCBoPWEu''@;'; put 'put ''Y2xhdXNlcy5xdWVyeU9iajtpZihoWzBdLmVsZW1lbnRzLmxlbmd0aDwxKXJldHVybigiaG9tZSI9PT1Kbi5yb290UGFyYW18fCJlZGl0b3IiPT09Sm4ucm9vdFBhcmFtKSYmKEpuLmVkaXRvci5maWx0ZXIuY2xhdXNlcz1bXSxKbi5lZGl0b3IuZmlsdGVyLnF1ZXJ5PVtdLEpuLmVkaXRvci5m''@;'; put 'put ''aWx0ZXIuZ3JvdXBMb2dpYz0iIiksdm9pZCBhLnJvdXRlci5uYXZpZ2F0ZShbIi9lZGl0b3IvIithLmxpYmRzXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJlc2VydmUifSk7Zm9yKGxldCBtPTA7bTxoLmxlbmd0aDttKyspe2NvbnN0IF89aFttXS5lbGVtZW50cztmPV8uZmlsdGVyKGZ1bmN0''@;'; put 'put ''aW9uKE8pe3JldHVybiBudWxsPT09Ty52YXJpYWJsZX0pLGYubGVuZ3RoJiZkLnB1c2goXyl9fWlmKGQubGVuZ3RoKXJldHVybiBhLm51bGxWYXJpYWJsZXM9ITAsdm9pZChhLnN1Ym1pdExvYWRpbmc9ITEpO3RyeXtpZih2b2lkIDAhPT1hLmNsYXVzZXMmJmEubGliZHMpe2NvbnN0IGg9e2dy''@;'; put 'put ''b3VwTG9naWM6YS5jbGF1c2VzLmdyb3VwTG9naWMsZmlsdGVyR3JvdXBzOltdfTthLmNsYXVzZXMucXVlcnlPYmouZm9yRWFjaChfPT57Y29uc3QgTz17ZmlsdGVyQ2xhdXNlczpbXX07Xy5lbGVtZW50cy5mb3JFYWNoKFg9PntPLmZpbHRlckNsYXVzZXMucHVzaChhLmhlbHBlclNlcnZpY2Uu''@;'; put 'put ''ZGVlcENsb25lKFgpKX0pLE8uY2xhdXNlTG9naWM9Xy5jbGF1c2VMb2dpYyxoLmZpbHRlckdyb3Vwcy5wdXNoKGEuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoTykpfSk7Y29uc3QgbT1hLnNhc1N0b3JlU2VydmljZS5jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKGgpO3lpZWxkIGEuc2FzU3RvcmVT''@;'; put 'put ''ZXJ2aWNlLnNhdmVRdWVyeShhLmxpYmRzLG0pLnRoZW4oXz0+e2EucXVlcnlGaWx0ZXI9e2lkOl8ucmVzdWx0WzBdLkZJTFRFUl9SSyx0YWJsZTpfLnJlc3VsdFswXS5GSUxURVJfVEFCTEV9LGEucm91dGVyLm5hdmlnYXRlKFsiLyJdLHtza2lwTG9jYXRpb25DaGFuZ2U6ITAscXVlcnlQYXJh''@;'; put 'put ''bXNIYW5kbGluZzoicHJlc2VydmUifSkudGhlbigoKT0+YS5yb3V0ZXIubmF2aWdhdGUoWyIvZWRpdG9yLyIrYS5xdWVyeUZpbHRlci50YWJsZSsiLyIrYS5xdWVyeUZpbHRlci5pZF0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pKSxhLmZpbHRlcj0hMX0pLmNhdGNoKF89Pnth''@;'; put 'put ''LnN1Ym1pdExvYWRpbmc9ITF9KX19Y2F0Y2goaCl7YS5xdWVyeUVycj0hMCxhLnN1Ym1pdExvYWRpbmc9ITEsYS5xdWVyeUVyck1lc3NhZ2U9aH19KSgpfW9wZW5RYigpe3RoaXMubGliZHMmJih0aGlzLmZpbHRlcj0hMCx0aGlzLmNkZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5zdWJtaXRMb2Fk''@;'; put 'put ''aW5nPSExLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFF1ZXJ5VmFyaWFibGVzKHRoaXMubGliZHMsdGhpcy5jb2xzKSl9ZWRpdFRhYmxlKGEsZil7dGhpcy50b2dnbGVIb3RQbHVnaW4oImNvbnRleHRNZW51IiwhMCk7Y29uc3QgZD10aGlzLmhvdEluc3RhbmNlO2xldCBoPWQuZ2V0UGx1Z2lu''@;'; put 'put ''KCJtdWx0aUNvbHVtblNvcnRpbmciKSxtPWguZ2V0U29ydENvbmZpZygpLF89QXJyYXkuaXNBcnJheShtKT9tOlttXTtzZXRUaW1lb3V0KCgpPT57YXx8KHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZD10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZSksZiYmdGhp''@;'; put 'put ''cy5kYXRhU291cmNlVW5jaGFuZ2VkLnBvcCgpKSx0aGlzLmhvdFRhYmxlLnJlYWRPbmx5PSExLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2UsZC51cGRhdGVTZXR0aW5ncyh7cmVhZE9ubHk6dGhpcy5ob3RUYWJsZS5yZWFkT25seX0sITEpLGQucmVuZGVyKCk7Zm9yKGxldCBP''@;'; put 'put ''IG9mIF8paC5zb3J0KE8pO3RoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfSwwKX1jb252ZXJ0VG9Db3JyZWN0VHlwZXMoYSl7Zm9yKGxldCBmIG9mIGEpZm9yKGxldCBkIGluIGYpe2xldCBoPXRoaXMuY29scy5maW5kKG09Pm0uTkFNRT09PWQpO2gmJiIiIT09ZltkXSYmIm51bSI9''@;'; put 'put ''PT1oLlRZUEUmJiFoLkREVFlQRS5pbmNsdWRlcygiVElNRSIpJiYhaC5ERFRZUEUuaW5jbHVkZXMoIkRBVEUiKSYmKGZbZF09cGFyc2VJbnQoZltkXSkpfX1jYW5jZWxFZGl0KCl7dGhpcy50b2dnbGVIb3RQbHVnaW4oImNvbnRleHRNZW51IiwhMSksdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJj''@;'; put 'put ''ZT1bXTtjb25zdCBhPXRoaXMuaG90SW5zdGFuY2U7bGV0IGY9YS5nZXRQbHVnaW4oIm11bHRpQ29sdW1uU29ydGluZyIpLGQ9Zi5nZXRTb3J0Q29uZmlnKCksaD1BcnJheS5pc0FycmF5KGQpP2Q6W2RdO3RoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCYmKHRoaXMuZGF0YVNvdXJjZT10aGlzLmhl''@;'; put 'put ''bHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpLHRoaXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2UsdGhpcy5ob3RUYWJsZS5yZWFkT25seT0hMCxhLnVwZGF0ZVNldHRpbmdzKHtyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGRhdGE6''@;'; put 'put ''dGhpcy5kYXRhU291cmNlfSwhMSksYS52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMpO2ZvcihsZXQgbSBvZiBoKWYuc29ydChtKTt0aGlzLmNoZWNrUm93TGltaXQoKX1ob3RDbGlja2VkKCl7MT09PXRoaXMudGltZXNDbGlja2VkJiZ0aGlzLmhvdFRhYmxlLnJlYWRPbmx5''@;'; put 'put ''JiZ0aGlzLmVkaXRUYWJsZSgpLDA9PT10aGlzLnRpbWVzQ2xpY2tlZCYmKHRoaXMudGltZXNDbGlja2VkKyssc2V0VGltZW91dCgoKT0+e3RoaXMudGltZXNDbGlja2VkPTB9LDIwMCkpfWNsZWFuRXhjZWVkKCl7dGhpcy5leGNlZWRDZWxscz1bXX1hcHByb3ZlcnNUb2dnbGUoKXt0aGlzLnNo''@;'; put 'put ''b3dBcHByb3ZlcnM9IXRoaXMuc2hvd0FwcHJvdmVyc31hZGRSb3coKXt0aGlzLmFkZGluZ05ld1Jvdz0hMCxzZXRUaW1lb3V0KCgpPT57Y29uc3QgYT10aGlzLmhvdEluc3RhbmNlO2xldCBmPXRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7YS5hbHRlcigiaW5zZXJ0X3Jvd19iZWxvdyIsZiwxKSxh''@;'; put 'put ''LnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpLGEuc2VsZWN0Q2VsbCh0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsMCksYS5yZW5kZXIoKSx0aGlzLmRhdGFTb3VyY2VbZl0mJih0aGlzLmRhdGFTb3VyY2VbZl0ubm9MaW5rT3B0aW9uPSEwKSx0aGlzLmFkZGluZ05l''@;'; put 'put ''d1Jvdz0hMSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX0pfWNhbmNlbFN1Ym1pdCgpe3RoaXMuZGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZUJlZm9yZVN1Ym1pdCksdGhpcy5kYXRhU291cmNlQmVmb3JlU3VibWl0PVtdLHRo''@;'; put 'put ''aXMuaG90VGFibGUuZGF0YT10aGlzLmRhdGFTb3VyY2U7Y29uc3QgYT10aGlzLmhvdEluc3RhbmNlO2EudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixtb2RpZnlDb2xX''@;'; put 'put ''aWR0aDpmdW5jdGlvbihmLGQpe3JldHVybiAwPT09ZD82MDpmPjUwMD81MDA6Zn19LCExKSxhLnNlbGVjdENlbGwoMCwwKSxhLnJlbmRlcigpLGEudmFsaWRhdGVSb3dzKHRoaXMubW9kaWZlZFJvd3NJbmRleGVzKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKX1nZXRSb3dzU3Vi''@;'; put 'put ''bWl0dGluZ0NvdW50KCl7dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkuZGVidWcmJih0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuZGF0YVNvdXJjZSksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQpKTtsZXQgYT0wLGY9MCxkPTA7dGhp''@;'; put 'put ''cy5tb2RpZmVkUm93c0luZGV4ZXM9W10sdGhpcy5kYXRhTW9kaWZpZWQ9W107Zm9yKGxldCBoPTA7aDx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoO2grKyl7bGV0IG09dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2VbaF0pO2lmKCJZZXMiPT09bS5fX19fX0RFTEVU''@;'; put 'put ''RV9fVEhJU19fUkVDT1JEX19fX18pdGhpcy5kYXRhTW9kaWZpZWQucHVzaChtKSxmKys7ZWxzZXtsZXQgXz10aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQuZmluZChPPT57Zm9yKGxldCBYIG9mIHRoaXMuaGVhZGVyUGtzKWlmKE9bWF0hPT1tW1hdKXJldHVybiExO3JldHVybiEwfSk7Xz9KU09O''@;'; put 'put ''LnN0cmluZ2lmeShtKSE9PUpTT04uc3RyaW5naWZ5KF8pJiYodGhpcy5kYXRhTW9kaWZpZWQucHVzaChtKSx0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcy5wdXNoKGgpLGErKyk6KHRoaXMuZGF0YU1vZGlmaWVkLnB1c2gobSksdGhpcy5tb2RpZmVkUm93c0luZGV4ZXMucHVzaChoKSxkKyspfX10''@;'; put 'put ''aGlzLnJvd3NDaGFuZ2VkPXtyb3dzVXBkYXRlZDphLHJvd3NEZWxldGVkOmYscm93c0FkZGVkOmR9fXZhbGlkYXRlUHJpbWFyeUtleXMoKXtjb25zdCBhPXRoaXMuaG90SW5zdGFuY2U7bGV0IGY9YS5nZXREYXRhKCk7dGhpcy5wa0ZpZWxkcz1bXTtmb3IobGV0IF89MDtfPGYubGVuZ3RoO18r''@;'; put 'put ''Kyl7bGV0IE89IiI7Zm9yKGxldCBYPTE7WDx0aGlzLnJlYWRPbmx5RmllbGRzKzE7WCsrKU89TysifCIrZltfXVtYXTt0aGlzLnBrRmllbGRzLnB1c2goTyl9bGV0IG0sZD1bXSxoPXRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7Zm9yKGxldCBfPTA7Xzx0aGlzLnBrRmllbGRzLmxlbmd0aDtfKysp''@;'; put 'put ''Zm9yKGxldCBPPTA7Tzx0aGlzLnBrRmllbGRzLmxlbmd0aDtPKyspdGhpcy5wa0ZpZWxkc1tfXT09PXRoaXMucGtGaWVsZHNbT10mJk8hPT1fJiZkLnB1c2goTyk7aWYodGhpcy5wa0ZpZWxkcy5sZW5ndGg+aClmb3IobGV0IF89aDtfPHRoaXMucGtGaWVsZHMubGVuZ3RoO18rKylmb3IobGV0''@;'; put 'put ''IE89aDtPPHRoaXMucGtGaWVsZHMubGVuZ3RoO08rKylfPE8mJnRoaXMucGtGaWVsZHNbX109PT10aGlzLnBrRmllbGRzW09dJiZkLnB1c2goTyk7Zm9yKGxldCBfPTA7XzxkLmxlbmd0aDtfKyspZm9yKGxldCBPPTE7Tzx0aGlzLnJlYWRPbmx5RmllbGRzKzE7TysrKW09YS5nZXRDZWxsTWV0''@;'; put 'put ''YShkW19dLE8pLG0udmFsaWQ9ITEsbS5kdXBLZXk9ITAsYS5yZW5kZXIoKTt0aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcz1bLi4ubmV3IFNldChkLnNvcnQoKSldfXJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoYT0hMSxmKXtjb25zdCBkPXRoaXMuaG90SW5zdGFuY2U7Zm9yKGxldCBoIG9mIHRo''@;'; put 'put ''aXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Upe2NvbnN0IG09aC52YWx1ZXMubWFwKF89Pl9bdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdKTtkLmJhdGNoKCgpPT57Y29uc3QgXz1kLmdldENlbGxNZXRhKGgucm93LGguY29sKSxPPXRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUo''@;'; put 'put ''Xy5kYXRhfHwiIik7bGV0IFg7TyYmKFg9dGhpcy5kY1ZhbGlkYXRvcj8uZ2V0RHFEcm9wZG93blNvdXJjZShPKSksWHx8KFg9W10pO2NvbnN0IGFlPVsuLi5uZXcgU2V0KFsuLi5YLC4uLm1dKV07dGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShoLmNvbCx7c291''@;'; put 'put ''cmNlOmFlfSksZC5zZXRDZWxsTWV0YShoLnJvdyxoLmNvbCwic291cmNlIixhZSksaC52YWx1ZXMubGVuZ3RoPjAmJihkLnNldENlbGxNZXRhKGgucm93LGguY29sLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLGQuc2V0Q2VsbE1ldGEoaC5yb3csaC5jb2wsImVkaXRvciIsImF1dG9jb21w''@;'; put 'put ''bGV0ZSIpLGQuc2V0Q2VsbE1ldGEoaC5yb3csaC5jb2wsInN0cmljdCIsaC5zdHJpY3QpLGQuc2V0Q2VsbE1ldGEoaC5yb3csaC5jb2wsImZpbHRlciIsITEpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I/LnVwZGF0ZVJ1bGUoaC5jb2wse3JlbmRlcmVyOiJhdXRvY29tcGxldGUi''@;'; put 'put ''LGVkaXRvcjoiYXV0b2NvbXBsZXRlIixzdHJpY3Q6aC5zdHJpY3QsZmlsdGVyOiExfSkpLHRoaXMucmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKGgsdm9pZCAwLGEsZiksZC5yZW5kZXIoKX0pfX1yZVNldEV4dGVuZGVkQ2VsbFZhbGlkYXRpb25WYWx1ZXMoYSxmLGQ9ITEsaCl7''@;'; put 'put ''aWYoYSl7Znx8KGY9YS5yb3cpO2NvbnN0IF89dGhpcy5nZXRFeHRlbmRlZFZhbHVlc0J5Q2VsbFZhbHVlKGEpO3RoaXMuc2V0RXh0ZW5kZWRWYWx1ZXNUb0NlbGxzKGEsZixfLGQsaCl9ZWxzZSBmb3IobGV0IF8gb2YgdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZSl7Y29uc3QgTz10aGlzLmdl''@;'; put 'put ''dEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUoXyk7dGhpcy5zZXRFeHRlbmRlZFZhbHVlc1RvQ2VsbHMoXyxfLnJvdyxPLGQsaCl9fXNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhhLGYsZCxoPSExLG0pe2NvbnN0IF89dGhpcy5ob3RJbnN0YW5jZTtsZXQgTz1bXTtmb3IobGV0IFggb2YgZClP''@;'; put 'put ''LmluZGV4T2YoWC5FWFRSQV9DT0xfTkFNRSk8MCYmTy5wdXNoKFguRVhUUkFfQ09MX05BTUUpO2ZvcihsZXQgWCBvZiBPKXtjb25zdCBhZT1kLmZpbHRlcihndD0+Z3QuRVhUUkFfQ09MX05BTUU9PT1YKTtsZXQgcGU9YWUubWFwKGd0PT4iQyI9PT1ndC5ESVNQTEFZX1RZUEU/Z3QuUkFXX1ZB''@;'; put 'put ''TFVFX0NIQVI6Z3QuUkFXX1ZBTFVFX05VTSk7Y29uc3QgYmU9Xy5wcm9wVG9Db2woWCk7dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLmZpbmQoZ3Q9Pmd0LnJvdz09PWYmJmd0LmNvbD09PWJlKXx8dGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0''@;'; put 'put ''aW9uTWFwLnB1c2goe3JvdzpmLGNvbDpiZSxhY3RpdmU6ITF9KSxfLnNldENlbGxNZXRhKGYsYmUsInJlbmRlcmVyIiwiYXV0b2NvbXBsZXRlIiksXy5zZXRDZWxsTWV0YShmLGJlLCJlZGl0b3IiLCJhdXRvY29tcGxldGUiKSxfLnNldENlbGxNZXRhKGYsYmUsInN0cmljdCIsYS5zdHJpY3Qp''@;'; put 'put ''LF8uc2V0Q2VsbE1ldGEoZixiZSwiZmlsdGVyIiwhMSksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShiZSx7cmVuZGVyZXI6ImF1dG9jb21wbGV0ZSIsZWRpdG9yOiJhdXRvY29tcGxldGUiLHN0cmljdDphLnN0cmljdCxmaWx0ZXI6ITF9KTtjb25zdCBWZT1f''@;'; put 'put ''LmdldENlbGxNZXRhKGYsYmUpLFplPXRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUoVmUuZGF0YXx8IiIpO2xldCBsdDtaZSYmKGx0PXRoaXMuZGNWYWxpZGF0b3I/LmdldERxRHJvcGRvd25Tb3VyY2UoWmUpKSxsdHx8KGx0PVtdKSwibnVtZXJpYyI9PT1aZT8udHlwZT8obHQ9dGhpcy5oZWxw''@;'; put 'put ''ZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhsdCwibnVtYmVyIikscGU9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhwZSwibnVtYmVyIikpOihsdD10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKGx0LCJzdHJpbmciKSxwZT10aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKHBlLCJzdHJpbmciKSk7Y29uc3QgZHQ9Wy4uLm5ldyBTZXQoWy4uLmx0LC4uLnBlXSldO2lmKF8uc2V0Q2VsbE1ldGEoZixiZSwic291cmNlIixkdCksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShiZSx7c291''@;'; put 'put ''cmNlOmR0fSksaCl7aWYobSYmbSE9PWYpcmV0dXJuO2NvbnN0IGd0PWFlLmZpbmQoanQ9PjE9PT1qdC5GT1JDRV9GTEFHKTtndCYmc2V0VGltZW91dCgoKT0+e18uc2V0RGF0YUF0Q2VsbChmLGJlLCJDIj09PWd0LkRJU1BMQVlfVFlQRT9ndC5SQVdfVkFMVUVfQ0hBUjpndC5SQVdfVkFMVUVf''@;'; put 'put ''TlVNLCJmb3JjZV9jZWxsX3ZhbGlkYXRpb25fdmFsdWUiKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9PT1mJiYodGhpcy5kYXRhU291cmNlW3RoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleF1bWF09IkMiPT09Z3QuRElTUExBWV9UWVBFP2d0LlJBV19WQUxVRV9DSEFSOmd0LlJBV19W''@;'; put 'put ''QUxVRV9OVU0pfSl9fX1nZXRFeHRlbmRlZFZhbHVlc0J5Q2VsbFZhbHVlKGEsZil7Y29uc3QgaD10aGlzLmhvdEluc3RhbmNlLmdldERhdGFBdENlbGwoZnx8YS5yb3csYS5jb2wpLG09KGEudmFsdWVzLmZpbmQoYWU9PmFlW3RoaXMuY2VsbFZhbGlkYXRpb25GaWVsZHMuUkFXX1ZBTFVFXT09''@;'; put 'put ''PWgpfHxbXSlbdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5ESVNQTEFZX0lOREVYXSxfPWEuZXh0ZW5kZWRfdmFsdWVzPy5maWx0ZXIoYWU9PmFlWzBdPT09bSksTz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZXh0ZW5kZWRDZWxsVmFsaWRhdGlvbkZpZWxkcyksWD1bXTtm''@;'; put 'put ''b3IobGV0IGFlIG9mIF98fFtdKXtsZXQgcGU9e307Zm9yKGxldCBiZSBvZiBPYmplY3Qua2V5cyhPKSlwZVtiZV09YWVbT1tiZV1dO1gucHVzaChwZSl9cmV0dXJuIFh9Y2hlY2tTYXZlKCl7aWYodGhpcy5nZXRSb3dzU3VibWl0dGluZ0NvdW50KCksMD09PXRoaXMucm93c0NoYW5nZWQucm93''@;'; put 'put ''c0FkZGVkJiYwPT09dGhpcy5yb3dzQ2hhbmdlZC5yb3dzVXBkYXRlZCYmMD09PXRoaXMucm93c0NoYW5nZWQucm93c0RlbGV0ZWQpcmV0dXJuIHRoaXMuYmFkRWRpdFRpdGxlPSJObyBjaGFuZ2VzIHRvIHN1Ym1pdCIsdGhpcy5iYWRFZGl0Q2F1c2U9IlBsZWFzZSBtb2RpZnkgc29tZSB2YWx1''@;'; put 'put ''ZXMgYW5kIHRyeSBhZ2Fpbi4iLHZvaWQodGhpcy5iYWRFZGl0PSEwKTtjb25zdCBhPXRoaXMuaG90SW5zdGFuY2U7dGhpcy5kYXRhU291cmNlQmVmb3JlU3VibWl0PXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKTtmb3IobGV0IGQ9MDtkPHRoaXMuZGF0YVNv''@;'; put 'put ''dXJjZS5sZW5ndGg7ZCsrKWRlbGV0ZSB0aGlzLmRhdGFTb3VyY2VbZF0ubm9MaW5rT3B0aW9uO2EudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixtb2RpZnlDb2xXaWR0''@;'; put 'put ''aDpmdW5jdGlvbihkLGgpe3JldHVybiBkPjUwMD81MDA6ZH19LCExKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKSxsLmNudD0wLGwubm9uUGtDbnQ9MDtsZXQgZj1hLmdldERhdGEoKTtpZihmLmxlbmd0aD4xJiZhLmlzRW1wdHlSb3coZi5sZW5ndGgtMSkmJmEuYWx0ZXIoInJl''@;'; put 'put ''bW92ZV9yb3ciLGYubGVuZ3RoLTEpLHRoaXMudmFsaWRhdGVQcmltYXJ5S2V5cygpLDAhPT10aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgpcmV0dXJuIHRoaXMucGtEdXBzPSEwLHRoaXMuc3VibWl0PSExLHZvaWQgdGhpcy5jYW5jZWxTdWJtaXQoKTt0aGlzLnBrRHVwcz0hMSxhLnZh''@;'; put 'put ''bGlkYXRlUm93cyh0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcywoKT0+e3RoaXMuY2hlY2tJbnZhbGlkKCk/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiVmFsaWRhdGlvbiBlcnJvciIsIkludmFsaWQgVmFsdWVzIGFyZSBQcmVzZW50Iik6KHRoaXMuc3VibWl0PSEwLHRoaXMudmFs''@;'; put 'put ''aWRhdGlvbkRvbmU9MSxzZXRUaW1lb3V0KCgpPT57ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1GaWVsZHNfOCIpLmZvY3VzKCl9KSl9KX1zYXZlVGFibGUoYSl7dmFyIGY9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7aWYoZi5ob3RJbnN0YW5jZS5nZXREYXRhKCksYT0oYT1hLmZp''@;'; put 'put ''bHRlcihtPT4hIWYuZGF0YU1vZGlmaWVkLmZpbmQoTz0+e2ZvcihsZXQgWCBvZiBmLmhlYWRlclBrcylpZihPW1hdIT09bVtYXSlyZXR1cm4hMTtyZXR1cm4hMH0pKSkubWFwKG09PntsZXQgXz1tLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXztyZXR1cm4gZGVsZXRlIG0uX19fX19E''@;'; put 'put ''RUxFVEVfX1RISVNfX1JFQ09SRF9fX19fLG0uX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fPV8sT2JqZWN0LmtleXMobSkubWFwKE89PnsibnVtZXJpYyI9PT1mLmRjVmFsaWRhdG9yPy5nZXRSdWxlKE8pPy50eXBlJiYiLiI9PT1tW09dJiYobVtPXT1udWxsKX0pLG19KSxmLmxvZ2dl''@;'; put 'put ''clNlcnZpY2UubG9nKCJEYXRhIHN1Ym1pdHRlZCIsYSksZi5jaGVja0ludmFsaWQoKSlyZXR1cm4gZi5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiVmFsaWRhdGlvbiBlcnJvciIsIkludmFsaWQgVmFsdWVzIGFyZSBQcmVzZW50IiksZi5jYW5jZWxTdWJtaXQoKSx2b2lkKGYuc3VibWl0''@;'; put 'put ''PSExKTtpZihmLnZhbGlkYXRpb25Eb25lPTAsZi5zYXZlTG9hZGluZz0hMCxsLmNudDwxJiYwPT09Zi5kdXBsaWNhdGVQa0luZGV4ZXMubGVuZ3RoJiZsLm5vblBrQ250PDEpe2Yuc2F2ZUxvYWRpbmc9ITAsZi5kaXNhYmxlU3VibWl0PSExLGYuc3VibWl0PSEwO2xldCBtPXtBQ1RJT046IkxP''@;'; put 'put ''QUQifTtpZihmLm1lc3NhZ2U9Zi5tZXNzYWdlLnJlcGxhY2UoL1xuL2csIi4gIiksbS5NRVNTQUdFPWYubWVzc2FnZSxtLkxJQkRTPWYubGliZHMsZi5jb2xzKXtjb25zdCBfPWEuc2xpY2UoMCxmLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCk7aWYoeWllbGQgZi5zYXNT''@;'; put 'put ''dG9yZVNlcnZpY2UudXBkYXRlVGFibGUobSxfLCJTQVNDb250cm9sVGFibGUiLCJlZGl0b3JzL3N0YWdlZGF0YSIsZi4kZGF0YUZvcm1hdHMpLnRoZW4oWD0+e2lmKHR5cGVvZiBYLnNhc3BhcmFtczwidSIpcmV0dXJuIGYucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK1guc2FzcGFy''@;'; put 'put ''YW1zWzBdLkRTSUQpLCEwO2xldCBhZT0iU3VibWl0IHJlcXVlc3QgZmFpbGVkIjtYJiYoYWUrPWBcbiR7InN0cmluZyI9PXR5cGVvZiBYP1g6SlNPTi5zdHJpbmdpZnkoWCl9YCksZi5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImVkaXRvcnMvc3RhZ2VkYXRhIixhZSxudWxsLCJTdWJt''@;'; put 'put ''aXQgZXJyb3IiKX0pLmNhdGNoKFg9Pntjb25zb2xlLmxvZygiZXJyIixYKSxsLmNudD0wLGwubm9uUGtDbnQ9MCxmLmRpc2FibGVTdWJtaXQ9ITAsZi5zdWJtaXQ9ITE7bGV0IGFlPSJzdHJpbmciPT10eXBlb2YgWD9YOkpTT04uc3RyaW5naWZ5KFgpO3JldHVybiBmLmV2ZW50U2VydmljZS5z''@;'; put 'put ''aG93QWJvcnRNb2RhbCgiZWRpdG9ycy9zdGFnZWRhdGEiLGBTdWJtaXQgcmVxdWVzdCBmYWlsZWRcbiR7YWV9YCxudWxsLCJTdWJtaXQgZXJyb3IiKSwhMX0pKXJldHVybn19bC5jbnQ+PTE/KGYucGtOdWxsPSEwLGYuc3VibWl0PSEwKTpmLnN1Ym1pdD0hMSxsLm5vblBrQ250Pj0xPyhmLm5v''@;'; put 'put ''UGtOdWxsPSEwLGYuc3VibWl0PSEwKTpmLnN1Ym1pdD0hMSxmLmNhbmNlbFN1Ym1pdCgpLGwuY250PTAsbC5ub25Qa0NudD0wLGYuZGlzYWJsZVN1Ym1pdD0hMH0pKCl9dmFsaWRhdG9yUnVsZVNvdXJjZShhKXtyZXR1cm4gdGhpcy5kY1ZhbGlkYXRvcj8uZ2V0UnVsZShhKX1jaGVja0ludmFs''@;'; put 'put ''aWQoKXtyZXR1cm4gdGhpcy5ob3RJbnN0YW5jZUNvbXBMaXN0LmZpcnN0LmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5odEludmFsaWQiKS5sZW5ndGg+MH1nb1RvRWRpdG9yKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiLyIpfWNsb3NlUmVjb3JkRWRp''@;'; put 'put ''dChhKXt0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9LTEsdGhpcy5jdXJyZW50RWRpdFJlY29yZD12b2lkIDAsdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj12b2lkIDAsIkFERCI9PT10aGlzLnJlY29yZEFjdGlvbiYmIWEmJih0aGlzLmRhdGFTb3VyY2U9dGhpcy5oZWxwZXJT''@;'; put 'put ''ZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLnByZXZEYXRhU291cmNlKSx0aGlzLmhvdEluc3RhbmNlLnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZX0sITEpKX1jb25maXJtUmVjb3JkRWRpdChhPSEwKXtjb25zdCBmPXRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleDthJiYodGhp''@;'; put 'put ''cy5jdXJyZW50RWRpdFJlY29yZEluZGV4PS0xKSx0aGlzLmNvbHVtbkhlYWRlci5tYXAoaD0+e2NvbnN0IG09dGhpcy5jdXJyZW50RWRpdFJlY29yZFtoXSxfPSJudW0iPT09dGhpcy4kZGF0YUZvcm1hdHM/LnZhcnNbaF0/LnR5cGUsTz0oMCx1My5pc1NwZWNpYWxNaXNzaW5nKShtKTtfJiYh''@;'; put 'put ''aXNOYU4obSkmJiFPJiYodGhpcy5jdXJyZW50RWRpdFJlY29yZFtoXT0xKm0pfSksdGhpcy5kYXRhU291cmNlW2ZdPXRoaXMuY3VycmVudEVkaXRSZWNvcmQsdGhpcy5ob3RUYWJsZS5kYXRhW2ZdPXRoaXMuY3VycmVudEVkaXRSZWNvcmQsdGhpcy5ob3RJbnN0YW5jZS51cGRhdGVTZXR0aW5n''@;'; put 'put ''cyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2V9LCExKSxhJiYodGhpcy5jdXJyZW50RWRpdFJlY29yZD12b2lkIDApfW9uTmV4dFJlY29yZCgpe3RoaXMuY29uZmlybVJlY29yZEVkaXQoITEpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD10aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg+PXRo''@;'; put 'put ''aXMuZGF0YVNvdXJjZS5sZW5ndGgtMT8wOnRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleCsxLHRoaXMuZWRpdFJlY29yZChudWxsLHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleCl9b25QcmV2aW91c1JlY29yZCgpe3RoaXMuY29uZmlybVJlY29yZEVkaXQoITEpLHRoaXMuY3VycmVudEVk''@;'; put 'put ''aXRSZWNvcmRJbmRleD10aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg8PTA/dGhpcy5kYXRhU291cmNlLmxlbmd0aC0xOnRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleC0xLHRoaXMuZWRpdFJlY29yZChudWxsLHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleCl9YWRkUmVjb3JkQnV0dG9u''@;'; put 'put ''Q2xpY2soKXt0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJlY29yZD90aGlzLmV2ZW50U2VydmljZS5zaG93RGVtb0xpbWl0TW9kYWwoIkFkZCBSZWNvcmQiKTp0aGlzLmFkZEVkaXROZXdSZWNvcmQoKX1hZGRFZGl0TmV3UmVjb3JkKCl7dGhpcy5hZGRSZWNvcmQoKSxzZXRUaW1lb3V0''@;'; put 'put ''KCgpPT57dGhpcy5lZGl0UmVjb3JkKG51bGwsdGhpcy5kYXRhU291cmNlLmxlbmd0aC0xLCEwKX0sMWUzKX1hZGRSZWNvcmQoKXt0aGlzLmFkZFJvdygpfWVkaXRSZWNvcmQoYSxmLGQpe2lmKHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0RWRpdFJlY29yZCl0aGlzLmV2ZW50U2VydmljZS5z''@;'; put 'put ''aG93RGVtb0xpbWl0TW9kYWwoIkVkaXQgUmVjb3JkIik7ZWxzZSBpZighKHZvaWQgMD09PWZ8fGY8MHx8dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RFZGl0UmVjb3JkKSl7aWYodGhpcy5yZWNvcmRBY3Rpb249ZD8iQUREIjoiRURJVCIsdGhpcy5ob3RUYWJsZS5yZWFkT25seSYmdGhpcy5l''@;'; put 'put ''ZGl0VGFibGUoITEsZCksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGNWYWxpZGF0b3IpLGQpdGhpcy5wcmV2RGF0YVNvdXJjZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZSksdGhp''@;'; put 'put ''cy5wcmV2RGF0YVNvdXJjZS5wb3AoKTtlbHNle2NvbnN0IGg9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmhvdEluc3RhbmNlLmdldENlbGxNZXRhQXRSb3coZikpO2ZvcihsZXQgbSBvZiBoKWlmKG0pe2NvbnN0IF89bS5wcm9wPy50b1N0cmluZygpO2RlbGV0ZSBtLnByb3As''@;'; put 'put ''ZGVsZXRlIG0uZGF0YSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKG0uY29sLHsuLi5tLGRhdGE6X30pfX10aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9Zix0aGlzLmN1cnJlbnRFZGl0UmVjb3JkPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhp''@;'; put 'put ''cy5kYXRhU291cmNlW2ZdKX19dG9nZ2xlSG90UGx1Z2luKGEsZil7Y29uc3QgZD10aGlzLmhvdEluc3RhbmNlO2QuYmF0Y2goKCk9PntsZXQgaD1kLmdldFBsdWdpbihhKTtoPyhzZXRUaW1lb3V0KCgpPT57Zj9oLmVuYWJsZVBsdWdpbigpOmguZGlzYWJsZVBsdWdpbigpfSwxMDApLGQucmVu''@;'; put 'put ''ZGVyKCkpOmNvbnNvbGUud2FybigiVG9nZ2xlIEhvdCBQbHVnaW4gZmFpbGVkIC0gUGx1Z2luIG5hbWVkOiAiK2ErIiAtIGNvdWxkIG5vdCBiZSBmb3VuZC4iKX0pfWR5bmFtaWNDZWxsVmFsaWRhdGlvbkRpc2FibGVkKGEsZil7cmV0dXJuISF0aGlzLmRpc2FibGVkQmFzaWNEeW5hbWljQ2Vs''@;'; put 'put ''bFZhbGlkYXRpb25NYXAuZmluZChoPT5oLnJvdz09PWEmJmguY29sPT09ZiYmIWguYWN0aXZlKX1keW5hbWljQ2VsbFZhbGlkYXRpb24oYSxmKXtpZih0aGlzLmR5bmFtaWNDZWxsVmFsaWRhdGlvbkRpc2FibGVkKGEsZikpcmV0dXJuO2NvbnN0IGQ9dGhpcy5ob3RJbnN0YW5jZTtpZihkLmdl''@;'; put 'put ''dENlbGxNZXRhKGEsZikucmVhZE9ubHkpcmV0dXJuO2NvbnN0IG09ZC5nZXREYXRhQXRDZWxsKGEsZiksXz10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVthXSksTz1PYmplY3Qua2V5cyhfKVtmXSxYPXRoaXMuaGVscGVyU2VydmljZS5kZWxldGVLZXlzQW5k''@;'; put 'put ''SGFzaChfLFtPLCJub0xpbmtPcHRpb24iXSwhMSksYWU9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgocGU9PnBlLmhhc2g9PT1YKTtpZihhZT4tMSl7bGV0IHBlPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbYWVdLnZhbHVlcy5tYXAoVmU9PlZlW3RoaXMuY2VsbFZhbGlk''@;'; put 'put ''YXRpb25GaWVsZHMuUkFXX1ZBTFVFXSk7Y29uc3QgYmU9KGQuZ2V0Q2VsbE1ldGEoYSxmKS5zb3VyY2V8fFtdKS5sZW5ndGg8MSx4ZT0iICIhPT1tO2QuYmF0Y2goKCk9Pntjb25zdCBWZT1kLmdldENlbGxNZXRhKGEsZiksWmU9dGhpcy5kY1ZhbGlkYXRvcj8uZ2V0UnVsZShWZS5kYXRhfHwi''@;'; put 'put ''Iik7bGV0IGx0O1plJiYobHQ9dGhpcy5kY1ZhbGlkYXRvcj8uZ2V0RHFEcm9wZG93blNvdXJjZShaZSkpLGx0fHwobHQ9W10pLCJudW1lcmljIj09PVplPy50eXBlPyhsdD10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKGx0LCJudW1iZXIiKSxwZT10aGlzLmhlbHBlclNl''@;'; put 'put ''cnZpY2UuY29udmVydEFycmF5VmFsdWVzKHBlLCJudW1iZXIiKSk6KGx0PXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMobHQsInN0cmluZyIpLHBlPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0QXJyYXlWYWx1ZXMocGUsInN0cmluZyIpKTtjb25zdCBkdD1bLi4ubmV3''@;'; put 'put ''IFNldChbLi4ubHQsLi4ucGVdKV07aWYoZC5zZXRDZWxsTWV0YShhLGYsInNvdXJjZSIsZHQpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I/LnVwZGF0ZVJ1bGUoZix7c291cmNlOmR0fSksdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVthZV0udmFsdWVzLmxlbmd0aD4wKXtjb25z''@;'; put 'put ''dCBndD10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlW2FlXS5zdHJpY3Q7ZC5zZXRDZWxsTWV0YShhLGYsInJlbmRlcmVyIiwiYXV0b2NvbXBsZXRlIiksZC5zZXRDZWxsTWV0YShhLGYsImVkaXRvciIsImF1dG9jb21wbGV0ZSIpLGQuc2V0Q2VsbE1ldGEoYSxmLCJzdHJpY3QiLGd0KSxkLnNl''@;'; put 'put ''dENlbGxNZXRhKGEsZiwiZmlsdGVyIiwhMSksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShmLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZSIsc3RyaWN0Omd0LGZpbHRlcjohMX0pfXRoaXMucmVTZXRFeHRlbmRlZENlbGxW''@;'; put 'put ''YWxpZGF0aW9uVmFsdWVzKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbYWVdLGEsYmUmJnhlKSxkLnJlbmRlcigpfSl9aWYoYWU8MCl7Y29uc3QgcGU9e1NBU0NvbnRyb2xUYWJsZTpbe2xpYmRzOnRoaXMubGliZHMsdmFyaWFibGVfbm06T31dLHNvdXJjZV9yb3c6W19dfSxiZT10aGlzLmRj''@;'; put 'put ''VmFsaWRhdG9yPy5nZXREcURldGFpbHMoTykuZmluZCh4ZT0+IlNPRlRTRUxFQ1RfSE9PSyI9PT14ZS5SVUxFX1RZUEV8fCJIQVJEU0VMRUNUX0hPT0siPT09eGUuUlVMRV9UWVBFKTtiZSYmKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UucHVzaCh7cm93OmEsY29sOmYsc3RyaWN0OiJIQVJE''@;'; put 'put ''U0VMRUNUX0hPT0siPT09YmUuUlVMRV9UWVBFLHZhbHVlczpbXSxoYXNoOlgsY291bnQ6dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5sZW5ndGgrMX0pLGQuc2V0Q2VsbE1ldGEoYSxmLCJyZW5kZXJlciIsTE10KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MucHVzaChmKSxkLnJl''@;'; put 'put ''bmRlcigpLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJlZGl0b3JzL2dldGR5bmFtaWNjb2x2YWxzIixwZSx2b2lkIDAse3N1cHByZXNzU3VjY2Vzc0Fib3J0TW9kYWw6ITAsc3VwcHJlc3NFcnJvckFib3J0TW9kYWw6ITB9KS50aGVuKHhlPT57aWYoeGUuZHluYW1pY192YWx1ZXMubWFwKFpl''@;'; put 'put ''PT5aZVt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLlJBV19WQUxVRV0pLmxlbmd0aD4wKXtjb25zdCBaZT10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmZpbmRJbmRleChsdD0+bHQuaGFzaD09PVgpO1plPi0xJiYodGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVtaZV09ey4uLnRoaXMuY2Vs''@;'; put 'put ''bFZhbGlkYXRpb25Tb3VyY2VbWmVdLHJvdzphLGNvbDpmLHZhbHVlczp4ZS5keW5hbWljX3ZhbHVlcyxleHRlbmRlZF92YWx1ZXM6eGUuZHluYW1pY19leHRlbmRlZF92YWx1ZXN9KSxkLnNldENlbGxNZXRhKGEsZiwicmVuZGVyZXIiLFNKKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGlu''@;'; put 'put ''Z3Muc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5pbmRleE9mKGYpLDEpLGQuZGVzZWxlY3RDZWxsKCksZC5yZW5kZXIoKSxkLmJhdGNoKCgpPT57c2V0VGltZW91dCgoKT0+e3RoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcyghMCxhKSxkLnJlbmRlcigpLGQudmFs''@;'; put 'put ''aWRhdGVSb3dzKFthXSl9LDEwMCl9KX1pZihkLnNldENlbGxNZXRhKGEsZiwicmVuZGVyZXIiLFNKKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3Muc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5pbmRleE9mKGYpLDEpLGQuZGVzZWxlY3RDZWxsKCksZC5yZW5k''@;'; put 'put ''ZXIoKSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmxlbmd0aD50aGlzLnZhbGlkYXRpb25UYWJsZUxpbWl0KXtjb25zdCBaZT10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLnJlZHVjZSgoZHQsZ3QpPT5kdC5jb3VudDxndC5jb3VudD9kdDpndCksbHQ9dGhpcy5jZWxsVmFsaWRhdGlvblNv''@;'; put 'put ''dXJjZS5pbmRleE9mKFplKTt0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLnNwbGljZShsdCwxKX19KS5jYXRjaCh4ZT0+e2NvbnN0IFZlPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KFplPT5aZS5oYXNoPT09WCk7dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5zcGxpY2Uo''@;'; put 'put ''VmUsMSksZC5iYXRjaCgoKT0+e2Quc2V0Q2VsbE1ldGEoYSxmLCJyZW5kZXJlciIsUk10KSxkLnJlbmRlcigpfSksdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZihmKSwxKSx0aGlzLmN1cnJlbnRFZGl0''@;'; put 'put ''UmVjb3JkRXJyb3JzLnB1c2goZiksc2V0VGltZW91dCgoKT0+e2Quc2V0Q2VsbE1ldGEoYSxmLCJyZW5kZXJlciIsU0opLGQucmVuZGVyKCksdGhpcy5jdXJyZW50RWRpdFJlY29yZEVycm9ycy5zcGxpY2UodGhpcy5jdXJyZW50RWRpdFJlY29yZEVycm9ycy5pbmRleE9mKGYpLDEpfSwzZTMp''@;'; put 'put ''LHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpLHRoaXMubG9nZ2VyU2VydmljZS5sb2coImdldGR5bmFtaWNjb2x2YWxzIGVycm9yOiIseGUpfSkpfX1jaGVja0VtcHR5Um93V2hlbkZpbHRlcigpe3RoaXMuemVyb0ZpbHRlclJvd3M9ITEsdHlwZW9mIHRoaXMuZmlsdGVyX3BrPCJ1''@;'; put 'put ''IiYmMT09PXRoaXMuaG90VGFibGUuZGF0YS5sZW5ndGgmJltudWxsLCIiXS5pbmNsdWRlcyh0aGlzLmhvdFRhYmxlLmRhdGFbMF1bdGhpcy5oZWFkZXJQa3NbMF1dKSYmKHRoaXMuemVyb0ZpbHRlclJvd3M9ITApfW9uUmVjb3JkSW5wdXRGb2N1cyhhKXt0aGlzLmR5bmFtaWNDZWxsVmFsaWRh''@;'; put 'put ''dGlvbih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgsYS5jb2xOYW1lKX1leGVjdXRlRHluYW1pY0NlbGxWYWxpZGF0aW9uSWZBcHBsaWNhYmxlKGEsZixkKXtjb25zdCBoPXRoaXMuaGVscGVyU2VydmljZS5kZWxldGVLZXlzQW5kSGFzaCh0aGlzLmRhdGFTb3VyY2VbZF0sW2EsIm5vTGlu''@;'; put 'put ''a09wdGlvbiJdKSxtPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZChfPT5fLmhhc2g9PT1oJiZmPT09Xy5jb2wpO2lmKG0mJm0uZXh0ZW5kZWRfdmFsdWVzJiZtLmV4dGVuZGVkX3ZhbHVlcy5sZW5ndGg+MCl7Y29uc3QgXz10aGlzLmdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUo''@;'; put 'put ''bSxkKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhtLGQsXywhMCl9fXZpZXdib3hNYW5hZ2VyKCl7dGhpcy52aWV3Ym94ZXM9ITB9Z2V0IHRvdGFsUm93c0NoYW5nZWQoKXtyZXR1cm4gdGhpcy5yb3dzQ2hhbmdlZC5yb3dzVXBkYXRlZCt0aGlzLnJvd3NDaGFuZ2VkLnJvd3NEZWxl''@;'; put 'put ''dGVkK3RoaXMucm93c0NoYW5nZWQucm93c0FkZGVkfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGQ9PnthLmhvdFRhYmxlLmxpY2Vuc2VLZXk9ZH0pLGEuX3F1ZXJ5PWEuc2FzU3Rv''@;'; put 'put ''cmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZShkPT57ZC5saWJkcz09PWEubGliZHMmJihhLndoZXJlU3RyaW5nPWQuc3RyaW5nLGEuY2xhdXNlcz1kLm9iail9KTtsZXQgZj17fTt0eXBlb2YgYS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtPCJ1IiYmKGEubGliZHM9YS5yb3V0ZS5zbmFw''@;'; put 'put ''c2hvdC5wYXJhbXMubGliTWVtLGEuZmlsdGVyX3BrPWEucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkLCJlZGl0LXJlY29yZCI9PT1hLnJvdXRlLnNuYXBzaG90LnVybFswXS5wYXRoJiYoYS5yZWNvcmRBY3Rpb249dHlwZW9mIGEuZmlsdGVyX3BrPCJ1Ij8iRURJVCI6IkFERCIpLGYu''@;'; put 'put ''TElCRFM9YS5saWJkcyx0eXBlb2YgYS5maWx0ZXJfcGs8InUiJiYoZi5GSUxURVJfUks9cGFyc2VJbnQoYS5maWx0ZXJfcGspKSxmLk9VVERFU1Q9IldFQiIsYS5saWJkcyYmKEpuLmVkaXRvci5saWJyYXJ5PWEubGliZHMuc3BsaXQoIi4iKVswXSxKbi5lZGl0b3IudGFibGU9YS5saWJkcy5z''@;'; put 'put ''cGxpdCgiLiIpWzFdKSksYS5saWJkcyYmKGEuZ2V0ZGF0YUVycm9yPSExLHlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLmNhbGxTZXJ2aWNlKGYsIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvZ2V0ZGF0YSIsYS5saWJkcykudGhlbihkPT57YS5pbml0U2V0dXAoZCl9KS5jYXRjaChkPT57YS5n''@;'; put 'put ''ZXRkYXRhRXJyb3I9ITAsYS50YWJsZVRydWU9ITB9KSl9KSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe31pbml0U2V0dXAoYSl7aWYodGhpcy5ob3RJbnN0YW5jZT10aGlzLmhvdFJlZ2lzdGVyZXIuZ2V0SW5zdGFuY2UoImhvdEluc3RhbmNlIiksdGhpcy5nZXRkYXRhRXJyb3J8fCFhfHwhYS5kYXRh''@;'; put 'put ''KXJldHVybjt0aGlzLmNvbHM9YS5kYXRhLmNvbHMsdGhpcy5kc21ldGE9YS5kYXRhLmRzbWV0YTtjb25zdCBmPXRoaXMuaG90SW5zdGFuY2UsZD1hLmRhdGEuYXBwcm92ZXJzO3RoaXMuY29scyYmKHRoaXMuaGVhZGVyQXJyYXk9KGw9Pntjb25zdCBjPVtdO2ZvcihsZXQgYSBvZiBsKSJfX19f''@;'; put 'put ''X0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09YS5OQU1FJiZjLnB1c2goYS5OQU1FKTtyZXR1cm4gY30pKHRoaXMuY29scykpLGQuZm9yRWFjaChtPT57dGhpcy5hcHByb3ZlcnMucHVzaChtLlBFUlNPTk5BTUUpfSksdGhpcy50YWJsZVRydWU9ITAsdGhpcy5saWJkcz1hLmxpYmRzLHRo''@;'; put 'put ''aXMuaG90VGFibGUuZGF0YT1hLmRhdGEuc2FzZGF0YSx0aGlzLmhlYWRlckNvbHVtbnM9YS5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksdGhpcy5oZWFkZXJQa3M9YS5kYXRhLnNhc3BhcmFtc1swXS5QSy5zcGxpdCgiICIpLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0''@;'; put 'put ''eUZsYWc9ISFhLmRhdGEuc2FzcGFyYW1zWzBdLkNMU19GTEFHLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWcmJnRoaXMuc2V0UmVzdHJpY3Rpb25zKHtyZXN0cmljdEFkZFJvdzohMCxyZW1vdmVFZGl0UmVjb3JkQnV0dG9uOiEwLHJlbW92ZUFkZFJlY29yZEJ1dHRvbjohMH0pLHRoaXMu''@;'; put 'put ''Y2hlY2tFbXB0eVJvd1doZW5GaWx0ZXIoKSwtMSE9PXRoaXMuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iKSYmKHRoaXMuaGVhZGVyQ29sdW1uc1t0aGlzLmhlYWRlckNvbHVtbnMuaW5kZXhPZigiX19fX19ERUxFVEVfX1RISVNfX1JFQ09S''@;'; put 'put ''RF9fX19fIildPSJEZWxldGU/IiksdGhpcy5oZWFkZXJBcnJheT10aGlzLmhlYWRlckNvbHVtbnMuc2xpY2UoMSksIiIhPT1hLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUyYmKHRoaXMuZGF0ZUhlYWRlcnM9YS5kYXRhLnNhc3BhcmFtc1swXS5EVFZBUlMuc3BsaXQoIiAiKSksIiIhPT1hLmRh''@;'; put 'put ''dGEuc2FzcGFyYW1zWzBdLlRNVkFSUyYmKHRoaXMudGltZUhlYWRlcnM9YS5kYXRhLnNhc3BhcmFtc1swXS5UTVZBUlMuc3BsaXQoIiAiKSksIiIhPT1hLmRhdGEuc2FzcGFyYW1zWzBdLkRUVE1WQVJTJiYodGhpcy5kYXRlVGltZUhlYWRlcnM9YS5kYXRhLnNhc3BhcmFtc1swXS5EVFRNVkFS''@;'; put 'put ''Uy5zcGxpdCgiICIpKSxhLmRhdGEueGxfcnVsZXMubGVuZ3RoPjAmJih0aGlzLnhsUnVsZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShhLmRhdGEueGxfcnVsZXMpKSx0aGlzLmRjVmFsaWRhdG9yPW5ldyBBTXQoYS5kYXRhLnNhc3BhcmFtc1swXSxhLmRhdGEuJHNhc2RhdGEsdGhp''@;'; put 'put ''cy5jb2xzLGEuZGF0YS5kcXJ1bGVzLGEuZGF0YS5kcWRhdGEpLHRoaXMuY2VsbFZhbGlkYXRpb249dGhpcy5kY1ZhbGlkYXRvci5nZXRSdWxlcygpLHRoaXMuZGF0YVNvdXJjZT1hLmRhdGEuc2FzZGF0YSx0aGlzLiRkYXRhRm9ybWF0cz1hLmRhdGEuJHNhc2RhdGE7Zm9yKGxldCBtPTA7bTx0''@;'; put 'put ''aGlzLmhlYWRlckNvbHVtbnMubGVuZ3RoO20rKyl0aGlzLmhvdERhdGFTY2hlbWFbdGhpcy5jZWxsVmFsaWRhdGlvblttXS5kYXRhXT1UTXQodGhpcy5jZWxsVmFsaWRhdGlvblttXS50eXBlLHRoaXMuY2VsbFZhbGlkYXRpb25bbV0pO3RoaXMuY2hlY2tSb3dMaW1pdCgpLGYudXBkYXRlU2V0''@;'; put 'put ''dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixoZWlnaHQ6dGhpcy5ob3RUYWJsZS5oZWlnaHQsZm9ybXVsYXM6dGhpcy5ob3RUYWJsZS5mb3JtdWxhcyxzdHJldGNoSDoiYWxsIixyZWFk''@;'; put 'put ''T25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGhpZGRlbkNvbHVtbnM6e2luZGljYXRvcnM6ITAsY29sdW1uczp0aGlzLmRjVmFsaWRhdG9yLmdldEhpZGRlbkNvbHVtbnMoKX0sbW9kaWZ5Q29sV2lkdGg6ZnVuY3Rpb24obSxfKXtyZXR1cm4gMD09PV8/NjA6bT41MDA/NTAwOm19LGNvcHlQ''@;'; put 'put ''YXN0ZTp0aGlzLmhvdFRhYmxlLmNvcHlQYXN0ZSxtYW51YWxDb2x1bW5GcmVlemU6ITEsbXVsdGlDb2x1bW5Tb3J0aW5nOiEwLG1hbnVhbENvbHVtblJlc2l6ZTohMCxmaWx0ZXJzOiExLG1hbnVhbFJvd1Jlc2l6ZTohMCx2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDo1MCxyb3dIZWFkZXJz''@;'; put 'put ''Om09PiIgIixyb3dIZWFkZXJXaWR0aDoxNSxyb3dIZWlnaHRzOjI0LG1heFJvd3M6dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZHx8MS8wLGludmFsaWRDZWxsQ2xhc3NOYW1lOiJodEludmFsaWQiLGRyb3Bkb3duTWVudTp7aXRlbXM6e21ha2VfcmVhZF9vbmx5''@;'; put 'put ''OntuYW1lOiJtYWtlX3JlYWRfb25seSJ9LGFsaWdubWVudDp7bmFtZToiYWxpZ25tZW50In0sc3AxOntuYW1lOiItLS0tLS0tLS0ifSxpbmZvOntuYW1lOiJ0ZXN0IGluZm8iLHJlbmRlcmVyOihtLF8sTyxYLGFlLHBlKT0+e2NvbnN0IGJlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i''@;'; put 'put ''KTtsZXQgeGUsVmU9Ik5vIGluZm8gZm91bmQiO2lmKHRoaXMuaG90SW5zdGFuY2Upe2NvbnN0IFplPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKXx8W10sbHQ9WmU/WmVbMF1bMV06LTEsZHQ9dGhpcy5ob3RJbnN0YW5jZT8uY29sVG9Qcm9wKGx0KTt4ZT10aGlzLiRkYXRhRm9ybWF0''@;'; put 'put ''cz8udmFyc1tkdF0seGUmJihWZT1gTEFCRUw6ICR7eGU/LmxhYmVsfTxicj5UWVBFOiAke3hlPy50eXBlfTxicj5MRU5HVEg6ICR7eGU/Lmxlbmd0aH08YnI+Rk9STUFUOiAke3hlPy5mb3JtYXR9YCl9cmV0dXJuIGJlLmlubmVySFRNTD1WZSxiZX19fX0sZGF0YVNjaGVtYTp0aGlzLmhvdERh''@;'; put 'put ''dGFTY2hlbWEsY29udGV4dE1lbnU6dGhpcy5ob3RUYWJsZS5zZXR0aW5ncy5jb250ZXh0TWVudSxjdXJyZW50SGVhZGVyQ2xhc3NOYW1lOiJjdXN0b21IIixhZnRlckdldENvbEhlYWRlcjoobSxfKT0+e2NvbnN0IE89dGhpcy5jb2x1bW5IZWFkZXJbbV0sWD1PJiZ0aGlzLmlzQ29sUGsoTyks''@;'; put 'put ''YWU9TyYmdGhpcy5pc1JlYWRvbmx5Q29sKE8pO1gmJl8uY2xhc3NMaXN0LmFkZCgicHJpbWFyeUtleUhlYWRlclN0eWxlIiksYWUmJiFYJiZfLmNsYXNzTGlzdC5hZGQoInJlYWRvbmx5Q2VsbCIpLDA9PT1tJiZfLmNsYXNzTGlzdC5hZGQoImZpcnN0Q29sdW1uSGVhZGVyU3R5bGUiKX0sYWZ0''@;'; put 'put ''ZXJHZXRDZWxsTWV0YToobSxfLE8pPT57XyYmdGhpcy5pc1JlYWRvbmx5Q29sKF8pJiYoTy5jbGFzc05hbWU9InJlYWRvbmx5Q2VsbCIpfX0sITEpLHRoaXMuaG90VGFibGUuaGlkZGVuPSExLHRoaXMudG9nZ2xlSG90UGx1Z2luKCJjb250ZXh0TWVudSIsITEpLHRoaXMucXVlcnlUZXh0PWEu''@;'; put 'put ''ZGF0YS5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQsdGhpcy5jb2x1bW5IZWFkZXI9YS5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksdGhpcy5jb2x1bW5IZWFkZXJbMF09IkRlbGV0ZT8iLHRoaXMucmVhZE9ubHlGaWVsZHM9YS5kYXRhLnNhc3BhcmFtc1swXS5QS0NO''@;'; put 'put ''VDtsZXQgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG90SW5zdGFuY2UiKTtoJiZoLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbT0+e3RoaXMudXBsb2FkUHJldmlld3x8dGhpcy5ob3RDbGlja2VkKCksc2V0VGltZW91dCgoKT0+e2xldCBfPWRvY3VtZW50LnF1ZXJ5U2VsZWN0''@;'; put 'put ''b3IoIi5kZWJ1Zy1zd2l0Y2gtaXRlbSIpfHx2b2lkIDA7XyYmXy5jbGljaygpfSwxMDApfSksZi5hZGRIb29rKCJhZnRlclNlbGVjdGlvbiIsKG0sXyxPLFgsYWUscGUpPT57bT09PU8mJl89PT1YJiYhMT09PXRoaXMuaG90VGFibGUucmVhZE9ubHkmJnRoaXMuZHluYW1pY0NlbGxWYWxpZGF0''@;'; put 'put ''aW9uKG0sXyl9KSxmLmFkZEhvb2soImJlZm9yZUtleURvd24iLG09Pntjb25zdCBfPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKSxPPV8mJl9bMF07aWYoTyl7Y29uc3QgWD1PWzBdLHBlPU9bMV07aWYoWD09PU9bMl0mJnBlPT09T1szXSl7Y29uc3QgeGU9dGhpcy5ob3RJbnN0YW5j''@;'; put 'put ''ZS5nZXRDZWxsTWV0YShYLHBlKTt4ZSYmITE9PT14ZS5maWx0ZXImJnRoaXMuaG90SW5zdGFuY2Uuc2V0Q2VsbE1ldGEoWCxwZSwiZmlsdGVyIiwhMCl9fX0pLGYuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChtLF8pPT57aWYoImVkaXQiPT09Xyl7Y29uc3QgTz10aGlzLmhvdEluc3RhbmNlLFg9''@;'; put 'put ''bVswXVswXSxhZT1tWzBdWzFdLHBlPU8ucHJvcFRvQ29sKGFlKSxiZT1PLmdldENlbGxNZXRhKFgscGUpO2JlJiYhMT09PWJlLmZpbHRlciYmTy5zZXRDZWxsTWV0YShYLHBlLCJmaWx0ZXIiLCEwKSx0aGlzLmV4ZWN1dGVEeW5hbWljQ2VsbFZhbGlkYXRpb25JZkFwcGxpY2FibGUoYWUscGUs''@;'; put 'put ''WCl9fSksZi5hZGRIb29rKCJhZnRlclJlbmRlciIsbT0+e3RoaXMuZXZlbnRTZXJ2aWNlLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpfSksZi5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsKG0sXyk9PntpZihtPnRoaXMuZGF0YVNvdXJjZS5sZW5ndGgpe2xldCBPPWRvY3VtZW50LnF1ZXJ5U2Vs''@;'; put 'put ''ZWN0b3IoIi53dEhvbGRlciIpO3NldFRpbWVvdXQoKCk9PntPJiYoTy5zY3JvbGxUb3A9Ty5zY3JvbGxIZWlnaHQpfSl9fSksZi5hZGRIb29rKCJiZWZvcmVQYXN0ZSIsKG0sXyk9Pntjb25zdCBPPV9bMF0uc3RhcnRDb2w7bVswXT1tWzBdLm1hcCgoWCxhZSk9Pntjb25zdCBwZT10aGlzLmNv''@;'; put 'put ''bHVtbkhlYWRlcltPK2FlXSxiZT0ibnVtIj09PXRoaXMuJGRhdGFGb3JtYXRzPy52YXJzW3BlXT8udHlwZSx4ZT0oMCx1My5pc1NwZWNpYWxNaXNzaW5nKShYKTtyZXR1cm4gYmUmJiFpc05hTihYKSYmIXhlJiYoWCo9MSksWH0pfSksZi5hZGRIb29rKCJhZnRlclJlbW92ZVJvdyIsKCk9Pnt0''@;'; put 'put ''aGlzLmNoZWNrUm93TGltaXQoKX0pLGYuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLCgpPT57dGhpcy5jaGVja1Jvd0xpbWl0KCl9KSx0aGlzLnVwbG9hZFVybD0ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIsbnVsbCE9PXRoaXMucmVjb3JkQWN0aW9uJiYoIkFERCI9PT10aGlzLnJlY29y''@;'; put 'put ''ZEFjdGlvbj8odGhpcy5hZGRSZWNvcmQoKSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsITApKToxPT09dGhpcy5kYXRhU291cmNlLmxlbmd0aCYmdGhpcy5lZGl0UmVjb3JkKG51bGwsMCkpLGEuZGF0YS5xdWVyeS5sZW5ndGg+MCYmKCJob21lIj09PUpu''@;'; put 'put ''LnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Kbi5yb290UGFyYW0pJiYwPT09Sm4uZWRpdG9yLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYmKEpuLmVkaXRvci5maWx0ZXIucXVlcnk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShhLmRhdGEucXVlcnkpLEpuLmVkaXRvci5maWx0ZXIubGliZHM9''@;'; put 'put ''dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoImVkaXRvciIsdGhpcy5jb2xzKSksZi5yZW5kZXIoKX19cmV0dXJuIGwuY250PTAsbC5ub25Qa0NudD0wLGwubGFzdENlbGw9MCxsLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KGIxKSxydChScykscnQoeTEpLHJ0KExkKSxydChQdSkscnQoTGEpLHJ0KHR1KSxydChwbCkscnQoVWwpLHJ0KEk1KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1lZGl0b3IiXV0sdmlld1F1ZXJ5''@;'; put 'put ''OmZ1bmN0aW9uKGEsZil7aWYoMSZhJiYoTm8oZ0F0LDcpLE5vKHZBdCw1KSxObyh5QXQsNSksTm8oYkF0LDUpLE5vKF9BdCw1KSksMiZhKXtsZXQgZDt1aShkPWNpKCkpJiYoZi5odD1kLmZpcnN0KSx1aShkPWNpKCkpJiYoZi51cGxvYWRTdGF0ZXJDb21wTGlzdD1kKSx1aShkPWNpKCkpJiYo''@;'; put 'put ''Zi5xdWVyeUZpbHRlckNvbXBMaXN0PWQpLHVpKGQ9Y2koKSkmJihmLmhvdEluc3RhbmNlQ29tcExpc3Q9ZCksdWkoZD1jaSgpKSYmKGYuZmlsZVVwbG9hZElucHV0Q29tcExpc3Q9ZCl9fSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6MTc3LHZhcnM6NzMsY29uc3Rz''@;'; put 'put ''OltbMSwiY29udGVudC1hcmVhIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWyJhcHBGaWxlRHJvcCIsIiIsMSwicmVsYXRpdmUiLDMsInVwbG9hZGVyIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW4i''@;'; put 'put ''LCJmaWxlT3ZlciIsImZpbGVEcm9wIiwiY2xyTW9kYWxPcGVuQ2hhbmdlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiZHJvcC1hcmVhIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiY2xyLXJvdyIsImNhcmQtYmxvY2siLCJtdC0xNSIsImQtZmxleCIsImp1c3Rp''@;'; put 'put ''ZnktY29udGVudC1iZXR3ZWVuIl0sWzEsImNsci1jb2wtbWQtYXV0byJdLFsxLCJlbmNvZGluZy1ibG9jayJdLFsiY2xySW5saW5lIiwiIiwxLCJtdC0wLWkiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwidmFsdWUiLCJVVEYtOCIsIm5hbWUiLCJlbmNvZGluZyIsMywibmdNb2Rl''@;'; put 'put ''bCIsImRpc2FibGVkIiwibmdNb2RlbENoYW5nZSJdLFsidHlwZSIsInJhZGlvIiwiY2xyUmFkaW8iLCIiLCJ2YWx1ZSIsIldMQVRJTjEiLCJuYW1lIiwiZW5jb2RpbmciLDMsIm5nTW9kZWwiLCJkaXNhYmxlZCIsIm5nTW9kZWxDaGFuZ2UiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0zIGZpbHRl''@;'; put 'put ''ckJ0biIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTMgZWRpdEJ0biIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IG1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0''@;'; put 'put ''biBidG4tcHJpbWFyeSBtci0wIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJleGNlbC1wYXJzaW5nIGNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1ZXJ5RmlsdGVyIiwi''@;'; put 'put ''ZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29yZENoYW5nZSIsIm9u''@;'; put 'put ''UmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIiw0LCJuZ0lmIl0sWzEsImNsci1mbGV4LTEiXSxbImh0IiwiIl0sWyJjbGFzcyIsInByb2dyZXNTdGF0aWMgcHJvZ3Jlc3MgbG9vcCIsNCwibmdJZiJdLFsiYXBw''@;'; put 'put ''RHJhZ05kcm9wIiwiIiwxLCJjYXJkIiwiYm9yZGVyLTAiLCJib3gtc2hhZG93LW5vbmUtaSIsInBvc2l0aW9uLXJlbGF0aXZlIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IiwzLCJmaWxlRHJhZ2dlZE92ZXIiXSxbMSwiY2FyZC1o''@;'; put 'put ''ZWFkZXIiLCJjbHItcm93IiwiYnV0dG9uQmFyIiwiaGVhZGVyQmFyIiwiY2xyLWZsZXgtbWQtcm93IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWxnLWVuZCJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wtbGctNCBiYWNrQnRuIiw0LCJu''@;'; put 'put ''Z0lmIl0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLWxnLTQiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJlZGl0b3ItdGl0bGUgdGV4dC1jZW50ZXIgbXQtMC1pIiw0LCJuZ1ZhciJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wt''@;'; put 'put ''bGctNCBidG5DdHJsIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIgaW5mb0JhciIsNCwibmdJZiJdLFsxLCJjYXJkLWJsb2NrIiwicC0wIiwiY2xyLWZsZXgtMSIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2FyZC10ZXh0Iiw0LCJu''@;'; put 'put ''Z0lmIl0sWzEsImNhcmQtdGV4dCIsImhvdEVkaXRvciIsImgtMTAwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudCJdLFsxLCJob3Qtd3JhcHBlciIsImNsci1mbGV4LTEiXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIsImhvdFRhYmxlIiwx''@;'; put 'put ''LCJlZGl0LWhvdCIsMywibGljZW5zZUtleSJdLFsiaG90SW5zdGFuY2UiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJtdC0yLWkgdy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwibW9kYWwiLDQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxPcGVuQ2hh''@;'; put 'put ''bmdlIl0sWzEsIm0tMCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwiZHVwbGljYXRlLWtleXMtbW9kYWwiLDMsImNsck1vZGFsT3Bl''@;'; put 'put ''biIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsiY2xhc3MiLCJkLWJsb2NrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vZGFsIHotaW5kZXgtaGlnaGVzdCIsNCwibmdJZiJdLFsxLCJmaWx0ZXItbW9kYWwiLDMsImNsck1vZGFsT3BlbiIs''@;'; put 'put ''ImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsMywi''@;'; put 'put ''Y2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwx''@;'; put 'put ''LCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywi''@;'; put 'put ''Y2xpY2siXSxbMSwibW9kYWwtYm9keSIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWyJkYXRhLWxwaWdub3JlIiwidHJ1ZSIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImlkIiwiZmlsZVBhc3N3b3JkSW5wdXQiLCJ0eXBlIiwidGV4dCIsMSwiY2xyLWlucHV0IiwiZGlz''@;'; put 'put ''YWJsZS1wYXNzd29yZC1tYW5hZ2VyIl0sWyJmaWxlUGFzc3dvcmRJbnB1dCIsIiJdLFsiY2xhc3MiLCJtLTAgY29sb3ItcmVkIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWzMs''@;'; put 'put ''Im9wZW4iLCJkc21ldGEiLCJvcGVuQ2hhbmdlIl0sWzMsInZpZXdib3hNb2RhbCIsInZpZXdib3hNb2RhbENoYW5nZSJdLFsxLCJjbHItY29sLW1kLTMiLCJmaWx0ZXJCdG4iXSxbMSwiZmlsdGVyQnRuIiwidy0xMDAiXSxbImZvciIsImZpbGUtdXBsb2FkIiwxLCJidG4iLCJidG4tc20iLCJi''@;'; put 'put ''dG4tb3V0bGluZSIsInByb2ZpbGUtYnV0dG9ucyIsInctMTAwIl0sWyJoaWRkZW4iLCIiLCJpZCIsImZpbGUtdXBsb2FkIiwidHlwZSIsImZpbGUiLCJhcHBGaWxlU2VsZWN0IiwiIiwzLCJ1cGxvYWRlciIsImNoYW5nZSJdLFsiZmlsZVVwbG9hZElucHV0IiwiIl0sWzEsImNsci1jb2wtbWQt''@;'; put 'put ''MyIsImVkaXRCdG4iXSxbMSwiYnRuVmlldyIsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwicHJvZmlsZS1idXR0b25zIiwidy0xMDAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywiZGlzYWJsZWQiLCJj''@;'; put 'put ''bGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJtci0wIiwzLCJjbGljayJdLFsxLCJleGNlbC1wYXJzaW5nIiwiY2xyLWNvbC1tZC0xMiJdLFsidXBsb2FkU3RhdGVyIiwiIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1''@;'; put 'put ''ZXJ5RmlsdGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9uIiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29y''@;'; put 'put ''ZENoYW5nZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIl0sWzEsInByb2dyZXNTdGF0aWMiLCJwcm9ncmVzcyIsImxvb3AiXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbGctNCIsImJhY2tCdG4i''@;'; put 'put ''XSxbMSwiYnRuIiwiYnRuLXNtIiwzLCJyb3V0ZXJMaW5rIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJidG4iLCJidG4tc20iLCJ2aWV3Ym94LW9wZW4iLDMsImNsaWNrIl0sWyJzaGFwZSIsInZpZXctY2FyZHMiLCJzaXplIiwiMjAiXSxbMSwiZWRp''@;'; put 'put ''dG9yLXRpdGxlIiwidGV4dC1jZW50ZXIiLCJtdC0wLWkiXSxbInNoYXBlIiwiaW5mby1jaXJjbGUiLCJzaXplIiwiMjQiLDEsImlzLWhpZ2hsaWdodCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJib2x0IiwiY2xhc3MiLCJjb2xvci15ZWxsb3ciLDQsIm5nSWYiXSxb''@;'; put 'put ''MSwibXItMTAiLDMsInJvdXRlckxpbmsiXSxbInNoYXBlIiwiYm9sdCIsMSwiY29sb3IteWVsbG93Il0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLWxnLTQiLCJidG5DdHJsIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG5WaWV3IiwiYnRuIiwiYnRuLXNtIiwiYnRuLWljb24iLCJidG4tYmxv''@;'; put 'put ''Y2siLDMsImNsaWNrIl0sWyJzaGFwZSIsImZpbHRlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLCJidG4tYmxvY2siLDMsImNsaWNrIl0sWyJzaGFwZSIsIm5vdGUiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1''@;'; put 'put ''Y2Nlc3MgYnRuLWJsb2NrIG1yLTAiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsImJ0bi1ibG9jayIsIm1yLTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsInVwbG9hZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwi''@;'; put 'put ''YnRuLXNtIiwiYnRuLWljb24iLCJidG4tb3V0bGluZS1kYW5nZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInRpbWVzIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siXSxb''@;'; put 'put ''InNoYXBlIiwicGx1cyIsInNpemUiLCIxNiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJzaGFwZSIsImNoZWNrIiwic2l6ZSIsIjIwIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0IiwiY2xyU2l6ZSIsImxnIl0sWyJ0''@;'; put 'put ''eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5lLWRhbmdlciIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXByaW1hcnkgYnRuLXVwbG9hZC1wcmV2aWV3Iiwz''@;'; put 'put ''LCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJwcmV2aWV3LXN1Ym1pdCIsMywiY2xyTG9hZGluZyIsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi11cGxv''@;'; put 'put ''YWQtcHJldmlldyIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0s''@;'; put 'put ''WyJzaGFwZSIsImVycm9yLXN0YW5kYXJkIiwxLCJlcnJvci1pY29uIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwibXQtNS1pIiwzLCJjbGljayJdLFsiY2xyUG9zaXRpb24iLCJ0b3AtcmlnaHQiLCJjbHJT''@;'; put 'put ''aXplIiwibGciLDQsImNscklmT3BlbiJdLFsiY2xyUG9zaXRpb24iLCJ0b3AtcmlnaHQiLCJjbHJTaXplIiwibGciXSxbMSwibXQtMi1pIiwidy0xMDAiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtb2RhbCJdLFsicm9sZSIsImRpYWxvZyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtZGlh''@;'; put 'put ''bG9nIiwibW9kYWwtbGciXSxbMSwibW9kYWwtY29udGVudCJdLFsxLCJtb2RhbC1oZWFkZXIiXSxbImFyaWEtbGFiZWwiLCJDbG9zZSIsInR5cGUiLCJidXR0b24iLDEsImNsb3NlIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsImNsb3NlIl0sWyJjbGFzcyIsImQtYmxvY2sgdy0x''@;'; put 'put ''MDAgdGV4dC1jZW50ZXIgY29sb3ItcmVkIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1vZmZzZXQtbWQtMiBjbHItY29sLW1kLTgiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIiwianVzdGlmeS1jb250ZW50LWNlbnRlci1pIl0sWyJpZCIsInN1Ym1pdEJ0biIsInR5cGUiLCJzdWJtaXQi''@;'; put 'put ''LDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLCJtLTAiLDMsImRpc2FibGVkIiwiY2xpY2siXSxbImlkIiwiY2FuY2VsU3VibWl0QnRuIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsImQtYmxvY2siLCJ3''@;'; put 'put ''LTEwMCIsInRleHQtY2VudGVyIiwiY29sb3ItcmVkIl0sWzEsImNsci1vZmZzZXQtbWQtMiIsImNsci1jb2wtbWQtOCJdLFsxLCJmb3JtLWdyb3VwIl0sWyJmb3IiLCJmb3JtRmllbGRzXzgiXSxbInR5cGUiLCJ0ZXh0IiwiaWQiLCJmb3JtRmllbGRzXzgiLCJyb3dzIiwiNSIsMSwidy0xMDAi''@;'; put 'put ''LDMsIm5nTW9kZWwiLCJkaXNhYmxlZCIsInZhbHVlIiwibmdNb2RlbENoYW5nZSJdLFsxLCJkLWJsb2NrIl0sWzEsIm1vZGFsIiwiei1pbmRleC1oaWdoZXN0Il0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbInF1ZXJ5RmlsdGVyIiwi''@;'; put 'put ''Il0sWzEsIm0tMCIsImNvbG9yLXJlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpe2lmKDEmYSl7Y29uc3QgZD1abigpO3llKDAsImRpdiIsMCkoMSwiY2xyLW1vZGFsIiwxKSxFdCgiZmlsZU92ZXIiLGZ1bmN0aW9uKG0pe3JldHVybiBmLmZpbGVPdmVyQmFzZShtKX0pKCJmaWxlRHJvcCIs''@;'; put 'put ''ZnVuY3Rpb24obSl7cmV0dXJuIGYuZ2V0RmlsZURlc2MobSwhMCl9KSgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5zaG93VXBsb2FkTW9kYWw9bX0pLHllKDIsImgzIiwyKSxZZSgzLCJVcGxvYWQgRmlsZSIpLENlKCkseWUoNCwiZGl2IiwzKSg1LCJkaXYiLDQp''@;'; put 'put ''KDYsInNwYW4iKSxZZSg3LCJEcm9wIGZpbGUgYW55d2hlcmUgdG8gdXBsb2FkISIpLENlKCkoKSx5ZSg4LCJkaXYiLDUpKDksImRpdiIsNikoMTAsImRpdiIsNykoMTEsImRpdiIsOCkoMTIsImNsci1yYWRpby1jb250YWluZXIiLDkpKDEzLCJjbHItcmFkaW8td3JhcHBlciIpKDE0LCJpbnB1''@;'; put 'put ''dCIsMTApLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5lbmNvZGluZz1tfSksQ2UoKSx5ZSgxNSwibGFiZWwiKSxZZSgxNiwiVVRGLTgiKSxDZSgpKCkseWUoMTcsImNsci1yYWRpby13cmFwcGVyIikoMTgsImlucHV0IiwxMSksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1''@;'; put 'put ''bmN0aW9uKG0pe3JldHVybiBmLmVuY29kaW5nPW19KSxDZSgpLHllKDE5LCJsYWJlbCIpLFllKDIwLCJXTEFUSU4xIiksQ2UoKSgpKCkoKSgpLHR0KDIxLHdBdCw2LDEsImRpdiIsMTIpLHR0KDIyLENBdCwzLDEsImRpdiIsMTMpLHllKDIzLCJkaXYiLDcpLHR0KDI0LFNBdCwyLDEsImJ1dHRv''@;'; put 'put ''biIsMTQpLHR0KDI1LE1BdCwyLDAsImJ1dHRvbiIsMTUpLENlKCksdHQoMjYsa0F0LDMsMCwiZGl2IiwxNiksQ2UoKSgpKCksdG4oMjcsImRpdiIsMTcpLENlKCksdHQoMjgsRUF0LDEsMTIsImFwcC1lZGl0LXJlY29yZCIsMTgpLHllKDI5LCJkaXYiLDE5LDIwKSx0dCgzMSx4QXQsMiwwLCJk''@;'; put 'put ''aXYiLDIxKSx5ZSgzMiwiZGl2IiwyMiksRXQoImZpbGVEcmFnZ2VkT3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gZi5vblNob3dVcGxvYWRNb2RhbCgpfSkseWUoMzMsImRpdiIsMjMpLHR0KDM0LFRBdCw3LDIsImRpdiIsMjQpLHllKDM1LCJkaXYiLDI1KSx0dCgzNixMQXQsNyw1LCJoNCIsMjYp''@;'; put 'put ''LENlKCksdHQoMzcsekF0LDQsMywiZGl2IiwyNyksdHQoMzgsVUF0LDUsMSwiZGl2IiwyOCksQ2UoKSx5ZSgzOSwiZGl2IiwyOSksdHQoNDAsV0F0LDQsMiwiZGl2IiwzMCkseWUoNDEsImRpdiIsMzEpKDQyLCJkaXYiLDMyKSx0big0MywiaG90LXRhYmxlIiwzMywzNCksQ2UoKSx5ZSg0NSwi''@;'; put 'put ''ZGl2IiksdHQoNDYsS0F0LDUsMiwiY2xyLXRvb2x0aXAiLDM1KSx0dCg0NyxxQXQsMywxLCJwIiwzNiksQ2UoKSx0dCg0OCxRQXQsMTYsNiwiZGl2IiwzNykseWUoNDksImNsci1tb2RhbCIsMzgpLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKG0pe3JldHVybiBmLnN1Ym1pdExp''@;'; put 'put ''bWl0Tm90aWNlPW19KSx5ZSg1MCwiaDMiLDIpLFllKDUxLCJOb3RpY2UiKSxDZSgpLHllKDUyLCJkaXYiLDMpKDUzLCJwIiwzOSksWWUoNTQpLENlKCkoKSx5ZSg1NSwiZGl2IiwxNykoNTYsImJ1dHRvbiIsNDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5zdWJtaXRMaW1pdE5v''@;'; put 'put ''dGljZT0hMX0pLFllKDU3LCIgQ2FuY2VsICIpLENlKCkseWUoNTgsImJ1dHRvbiIsNDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5nZXRGaWxlKCksZi5zdWJtaXRMaW1pdE5vdGljZT0hMX0pLFllKDU5LCIgU3VibWl0ICIpLENlKCkoKSgpLHllKDYwLCJjbHItbW9kYWwiLDM4''@;'; put 'put ''KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5iYWRFZGl0PW19KSx5ZSg2MSwiaDMiLDIpLFllKDYyKSxDZSgpLHllKDYzLCJkaXYiLDMpKDY0LCJwIiksWWUoNjUpLENlKCkoKSx5ZSg2NiwiZGl2IiwxNykoNjcsImJ1dHRvbiIsNDApLEV0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gZi5iYWRFZGl0PSExfSksWWUoNjgsIiBPayAiKSxDZSgpKCkoKSx5ZSg2OSwiY2xyLW1vZGFsIiwzOCksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obSl7cmV0dXJuIGYucGtOdWxsPW19KSx5ZSg3MCwiaDMiLDIpLFllKDcxLCJFcnJvciIpLENl''@;'; put 'put ''KCkseWUoNzIsImRpdiIsMykoNzMsInAiKSxZZSg3NCwiIE51bGwgdmFsdWVzIG9yIGluY29ycmVjdCBkYXRhIHR5cGVzIGNhbm5vdCBiZSBzdWJtaXR0ZWQgZm9yIFByaW1hcnkgS2V5IGNvbHVtbnMgIiksQ2UoKSgpLHllKDc1LCJkaXYiLDE3KSg3NiwiYnV0dG9uIiw0MSksRXQoImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBmLnBrTnVsbD0hMSxmLmJhZEVkaXQ9ITF9KSxZZSg3NywiIE9rICIpLENlKCkoKSgpLHllKDc4LCJjbHItbW9kYWwiLDM4KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5ub1BrTnVsbD1tfSkseWUoNzksImgzIiwyKSxZ''@;'; put 'put ''ZSg4MCwiRXJyb3IiKSxDZSgpLHllKDgxLCJkaXYiLDMpKDgyLCJwIiksWWUoODMsIkluY29ycmVjdCBkYXRhIHR5cGVzIGluIG5vbi1QcmltYXJ5IEtleSBjb2x1bW5zIiksQ2UoKSgpLHllKDg0LCJkaXYiLDE3KSg4NSwiYnV0dG9uIiw0MSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBmLm5vUGtOdWxsPSExLGYuYmFkRWRpdD0hMX0pLFllKDg2LCIgT2sgIiksQ2UoKSgpKCkseWUoODcsImNsci1tb2RhbCIsNDIpLEV0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKG0pe3JldHVybiBmLnBrRHVwcz1tfSkseWUoODgsImgzIiwyKSxZZSg4OSwiRXJyb3IiKSxDZSgp''@;'; put 'put ''LHllKDkwLCJkaXYiLDMpKDkxLCJwIiksWWUoOTIsIiBEdXBsaWNhdGUgdmFsdWVzIGNhbm5vdCBiZSBzdWJtaXR0ZWQgZm9yIFByaW1hcnkgS2V5IGNvbHVtbnMgIiksQ2UoKSx5ZSg5MywicCIpLFllKDk0LCJEdXBsaWNhdGVzIGZvdW5kOiIpLENlKCksdHQoOTUsZVR0LDMsNCwic3BhbiIs''@;'; put 'put ''NDMpLENlKCkseWUoOTYsImRpdiIsMTcpKDk3LCJidXR0b24iLDQxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYucGtEdXBzPSExfSksWWUoOTgsIiBPayAiKSxDZSgpKCkoKSx5ZSg5OSwiY2xyLW1vZGFsIiwzOCksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obSl7''@;'; put 'put ''cmV0dXJuIGYudG9vTG9uZz1tfSkseWUoMTAwLCJoMyIsMiksWWUoMTAxLCJFcnJvciIpLENlKCkseWUoMTAyLCJkaXYiLDMpKDEwMywicCIpLFllKDEwNCwiIFRoZSBmb2xsb3dpbmcgY29sdW1ucyBoYXZlIHZhbHVlcyB0aGF0IGV4Y2VlZCBsZW5ndGggbGltaXRzOiAiKSxDZSgpLHR0KDEw''@;'; put 'put ''NSx0VHQsMiwzLCJwIiw0NCksQ2UoKSx5ZSgxMDYsImRpdiIsMTcpKDEwNywiYnV0dG9uIiw0MSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLnRvb0xvbmc9ITEsZi5jbGVhbkV4Y2VlZCgpfSksWWUoMTA4LCIgT2sgIiksQ2UoKSgpKCkoKSgpKCkoKSgpLHR0KDEwOSxuVHQsMTQs''@;'; put 'put ''MCwiZGl2Iiw0NSkseWUoMTEwLCJjbHItbW9kYWwiLDQ2KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5maWx0ZXI9bX0pLHllKDExMSwiaDMiLDQ3KSxZZSgxMTIsIiBGaWx0ZXIgZm9yIHRhYmxlOiAiKSx5ZSgxMTMsInNwYW4iKSxZZSgxMTQpLENlKCko''@;'; put 'put ''KSx5ZSgxMTUsImRpdiIsMyksdHQoMTE2LHJUdCwyLDAsImFwcC1xdWVyeSIsMzUpLENlKCkseWUoMTE3LCJkaXYiLDE3KSgxMTgsImJ1dHRvbiIsNDgpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5yZXNldEZpbHRlcigpfSksWWUoMTE5LCIgcmVzZXQgZmlsdGVyICIpLENlKCks''@;'; put 'put ''eWUoMTIwLCJidXR0b24iLDQ5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlsdGVyPSExfSksWWUoMTIxLCIgQ2FuY2VsICIpLENlKCkseWUoMTIyLCJidXR0b24iLDUwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuc2VuZENsYXVzZSgpfSksWWUoMTIzLCIgT2sg''@;'; put 'put ''IiksQ2UoKSgpKCkseWUoMTI0LCJjbHItbW9kYWwiLDM4KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5xdWVyeUVycj1tfSkseWUoMTI1LCJoMyIsMiksWWUoMTI2LCJFcnJvciIpLENlKCkseWUoMTI3LCJkaXYiLDMpKDEyOCwicCIpLFllKDEyOSksQ2Uo''@;'; put 'put ''KSgpLHllKDEzMCwiZGl2IiwxNykoMTMxLCJidXR0b24iLDUxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYucXVlcnlFcnI9ITF9KSxZZSgxMzIsIiBDYW5jZWwgIiksQ2UoKSx5ZSgxMzMsImJ1dHRvbiIsNDEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5xdWVyeUVy''@;'; put 'put ''cj0hMX0pLFllKDEzNCwiIE9rICIpLENlKCkoKSgpLHllKDEzNSwiY2xyLW1vZGFsIiw1MiksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24obSl7cmV0dXJuIGYuZGlzY2FyZFNvdXJjZUZpbGU9bX0pLHllKDEzNiwiaDMiLDQ3KSxZZSgxMzcsIldhcm5pbmciKSxDZSgpLHllKDEz''@;'; put 'put ''OCwiZGl2IiwzKSxZZSgxMzksIiBUaGlzIGFjdGlvbiB3aWxsIGRpc2NhcmQgdGhlIHNvdXJjZSBmaWxlIGFuZCBpdCdzIGxvYWRlZCBkYXRhICIpLHllKDE0MCwiYiIpLFllKDE0MSksQ2UoKSxZZSgxNDIsIiBEbyB5b3Ugd2lzaCB0byBwcm9jZWVkPyAiKSxDZSgpLHllKDE0MywiZGl2Iiwx''@;'; put 'put ''NykoMTQ0LCJidXR0b24iLDQ5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuZGlzY2FyZFNvdXJjZUZpbGU9ITF9KSxZZSgxNDUsIiBDYW5jZWwgIiksQ2UoKSx5ZSgxNDYsImJ1dHRvbiIsNTMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5kaXNjYXJkU291cmNlRmls''@;'; put 'put ''ZT0hMSxmLmRpc2NhcmRQZW5kaW5nRXhjZWwoITApfSksWWUoMTQ3LCIgT2sgIiksQ2UoKSgpKCkseWUoMTQ4LCJjbHItbW9kYWwiLDUyKSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5maWxlUGFzc3dvcmRNb2RhbD1tfSkseWUoMTQ5LCJoMyIsNDcpLFll''@;'; put 'put ''KDE1MCwiIFBhc3N3b3JkIFByb3RlY3RlZCBGaWxlICIpLENlKCkseWUoMTUxLCJkaXYiLDU0KSgxNTIsInAiLDM5KSxZZSgxNTMsIlBsZWFzZSBlbnRlciBwYXNzd29yZDoiKSxDZSgpLHRuKDE1NCwiaW5wdXQiLDU1LDU2KSxDZSgpLHllKDE1NiwiZGl2IiwxNyksdHQoMTU3LGlUdCwyLDAs''@;'; put 'put ''InAiLDU3KSx5ZSgxNTgsImJ1dHRvbiIsNDkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5maWxlUGFzc3dvcmRNb2RhbD0hMSxmLmZpbGVQYXNzd29yZFN1YmplY3QubmV4dCh2b2lkIDApfSksWWUoMTU5LCIgQ2FuY2VsIHVwbG9hZCAiKSxDZSgpLHllKDE2MCwiYnV0dG9uIiw1''@;'; put 'put ''OCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGQpO2NvbnN0IG09UWkoMTU1KTtyZXR1cm4gZi5maWxlUGFzc3dvcmRNb2RhbD0hMSxadChmLmZpbGVQYXNzd29yZFN1YmplY3QubmV4dChtLnZhbHVlKSl9KSxZZSgxNjEsIiBVbmxvY2sgIiksQ2UoKSgpKCkseWUoMTYyLCJjbHItbW9kYWwi''@;'; put 'put ''LDUyKSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihtKXtyZXR1cm4gZi5tYW51YWxGaWxlRWRpdE1vZGFsPW19KSx5ZSgxNjMsImgzIiw0NyksWWUoMTY0LCJXYXJuaW5nIiksQ2UoKSx5ZSgxNjUsImRpdiIsMyksWWUoMTY2LCIgTWFudWFsbHkgZWRpdGluZyB0aGlzIGRhdGEg''@;'; put 'put ''d2lsbCBtZWFuIHRoZSBzb3VyY2UgZmlsZSAiKSx5ZSgxNjcsImIiKSxZZSgxNjgpLENlKCksWWUoMTY5LCIgd2lsbCBiZSBkaXNjYXJkZWQuIERvIHlvdSB3aXNoIHRvIHByb2NlZWQ/ICIpLENlKCkseWUoMTcwLCJkaXYiLDE3KSgxNzEsImJ1dHRvbiIsNDkpLEV0KCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gZi5tYW51YWxGaWxlRWRpdE1vZGFsPSExfSksWWUoMTcyLCIgQ2FuY2VsICIpLENlKCkseWUoMTczLCJidXR0b24iLDUzKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYubWFudWFsRmlsZUVkaXRNb2RhbD0hMSxmLnByZXZpZXdUYWJsZUVkaXRDb25maXJtKCl9''@;'; put 'put ''KSxZZSgxNzQsIiBPayAiKSxDZSgpKCkoKSx5ZSgxNzUsImFwcC1kYXRhc2V0LWluZm8iLDU5KSxFdCgib3BlbkNoYW5nZSIsZnVuY3Rpb24obSl7cmV0dXJuIGYuZGF0YXNldEluZm89bX0pLENlKCkseWUoMTc2LCJhcHAtdmlld2JveGVzIiw2MCksRXQoInZpZXdib3hNb2RhbENoYW5nZSIs''@;'; put 'put ''ZnVuY3Rpb24obSl7cmV0dXJuIGYudmlld2JveGVzPW19KSxDZSgpfWlmKDImYSl7Y29uc3QgZD1RaSgxNTUpO1NlKDEpLFJlKCJ1cGxvYWRlciIsZi51cGxvYWRlcikoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCExKSgiY2xyTW9kYWxDbG9zYWJsZSIs''@;'; put 'put ''IlZhbGlkYXRpbmctRFEiPT09Zi5leGNlbFVwbG9hZFN0YXRlKSgiY2xyTW9kYWxPcGVuIixmLnNob3dVcGxvYWRNb2RhbCksU2UoMTMpLFJlKCJuZ01vZGVsIixmLmVuY29kaW5nKSgiZGlzYWJsZWQiLCIiIT1mLmZpbGVuYW1lKSxTZSg0KSxSZSgibmdNb2RlbCIsZi5lbmNvZGluZykoImRp''@;'; put 'put ''c2FibGVkIiwiIiE9Zi5maWxlbmFtZSksU2UoMyksUmUoIm5nSWYiLCFmLmV4Y2VsRmlsZVBhcnNpbmcmJiFmLnVwbG9hZExvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIiwhZi5leGNlbEZpbGVQYXJzaW5nJiYhZi51cGxvYWRMb2FkaW5nKSxTZSgyKSxSZSgibmdJZiIsIlZhbGlkYXRpbmciIT09''@;'; put 'put ''Zi5leGNlbFVwbG9hZFN0YXRlKSxTZSgxKSxSZSgibmdJZiIsIlZhbGlkYXRpbmctRFEiPT09Zi5leGNlbFVwbG9hZFN0YXRlKSxTZSgxKSxSZSgibmdJZiIsZi5leGNlbEZpbGVQYXJzaW5nKSxTZSgyKSxSZSgibmdJZiIsZi5jdXJyZW50RWRpdFJlY29yZEluZGV4Pi0xKSxTZSgzKSxSZSgi''@;'; put 'put ''bmdJZiIsIWYudmFsaWRhdGlvbkRvbmUmJmYuc3VibWl0KSxTZSgzKSxSZSgibmdJZiIsZi50YWJsZVRydWUpLFNlKDEpLGdyKCJjbHItY29sLWxnLTEyIiwhZi50YWJsZVRydWUpLFNlKDEpLFJlKCJuZ1ZhciIsd2goNjYsb1R0LG51bGw9PWYubGliZHM/bnVsbDpmLmxpYmRzLnNwbGl0KCIu''@;'; put 'put ''IilbMF0sbnVsbD09Zi5saWJkcz9udWxsOmYubGliZHMuc3BsaXQoIi4iKVsxXSkpLFNlKDEpLFJlKCJuZ0lmIixmLnRhYmxlVHJ1ZSksU2UoMSksUmUoIm5nSWYiLCFYYSg2OSxJNmUpLmluY2x1ZGVzKGYucXVlcnlUZXh0KSksU2UoMSksUmUoIm5nQ2xhc3MiLF9oKDcxLGFUdCwhWGEoNzAs''@;'; put 'put ''STZlKS5pbmNsdWRlcyhmLnF1ZXJ5VGV4dCkpKSxTZSgxKSxSZSgibmdJZiIsIWYudGFibGVUcnVlKSxTZSgzKSxncigiaGlkZGVuIixmLmhvdFRhYmxlLmhpZGRlbiksUmUoImxpY2Vuc2VLZXkiLGYuaG90VGFibGUubGljZW5zZUtleSksU2UoMyksUmUoIm5nSWYiLGYudGFibGVUcnVlJiYh''@;'; put 'put ''Zi5yZXN0cmljdGlvbnMucmVtb3ZlQWRkUmVjb3JkQnV0dG9uKSxTZSgxKSxSZSgibmdJZiIsZi5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCE9PWYuSW5maW5pdHkmJmYuZGF0YVNvdXJjZSYmZi5kYXRhU291cmNlLmxlbmd0aD5mLmxpY2VuY2VTdGF0ZS52YWx1ZS5l''@;'; put 'put ''ZGl0b3Jfcm93c19hbGxvd2VkKSxTZSgxKSxSZSgibmdJZiIsZi5zdWJtaXQpLFNlKDEpLFJlKCJjbHJNb2RhbE9wZW4iLGYuc3VibWl0TGltaXROb3RpY2UpLFNlKDUpLHdyKCIgRHVlIHRvIGN1cnJlbnQgbGljZW5jZSwgb25seSAiLGYubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dz''@;'; put 'put ''X2xpbWl0LCIgcm93cyBpbiBhIGZpbGUgd2lsbCBiZSBzdWJtaXR0ZWQuIFRvIHJlbW92ZSB0aGUgcmVzdHJpY3Rpb24sIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyAiKSxTZSg2KSxSZSgiY2xyTW9kYWxPcGVuIixmLmJhZEVkaXQpLFNlKDIpLGFyKGYuYmFkRWRpdFRpdGxl''@;'; put 'put ''fHwiRXJyb3IiKSxTZSgzKSxhcihmLmJhZEVkaXRDYXVzZSksU2UoNCksUmUoImNsck1vZGFsT3BlbiIsZi5wa051bGwpLFNlKDkpLFJlKCJjbHJNb2RhbE9wZW4iLGYubm9Qa051bGwpLFNlKDkpLFJlKCJjbHJNb2RhbE9wZW4iLGYucGtEdXBzKSxTZSg4KSxSZSgibmdGb3JPZiIsZi5kdXBs''@;'; put 'put ''aWNhdGVQa0luZGV4ZXMpLFNlKDQpLFJlKCJjbHJNb2RhbE9wZW4iLGYudG9vTG9uZyksU2UoNiksUmUoIm5nRm9yT2YiLGYuZXhjZWVkQ2VsbHMpLFNlKDQpLFJlKCJuZ0lmIixmLm51bGxWYXJpYWJsZXMpLFNlKDEpLFJlKCJjbHJNb2RhbE9wZW4iLGYuZmlsdGVyKSgiY2xyTW9kYWxTaXpl''@;'; put 'put ''IiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLFNlKDQpLHdyKCIgIixmLmxpYmRzLCIgIiksU2UoMiksUmUoIm5nSWYiLGYuZmlsdGVyKSxTZSg2KSxSZSgiY2xyTG9hZGluZyIsZi5zdWJtaXRMb2FkaW5nKSxTZSgyKSxSZSgiY2xyTW9kYWxPcGVuIixmLnF1ZXJ5RXJyKSxTZSg1KSxh''@;'; put 'put ''cihmLnF1ZXJ5RXJyTWVzc2FnZSksU2UoNiksUmUoImNsck1vZGFsT3BlbiIsZi5kaXNjYXJkU291cmNlRmlsZSkoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxTZSg2KSxhcihmLmZpbGVuYW1lKSxTZSg3KSxSZSgiY2xyTW9kYWxPcGVuIixmLmZpbGVQYXNz''@;'; put 'put ''d29yZE1vZGFsKSgiY2xyTW9kYWxTaXplIiwibWQiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLFNlKDkpLFJlKCJuZ0lmIixmLmZpbGVVbmxvY2tFcnJvciksU2UoMyksUmUoImRpc2FibGVkIixkLnZhbHVlLmxlbmd0aDwxKSxTZSgyKSxSZSgiY2xyTW9kYWxPcGVuIixmLm1hbnVhbEZpbGVF''@;'; put 'put ''ZGl0TW9kYWwpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoNiksYXIoZi5maWxlbmFtZSksU2UoNyksUmUoIm9wZW4iLGYuZGF0YXNldEluZm8pKCJkc21ldGEiLGYuZHNtZXRhKSxTZSgxKSxSZSgidmlld2JveE1vZGFsIixmLnZpZXdib3hlcyl9fSxk''@;'; put 'put ''ZXBlbmRlbmNpZXM6W0E2ZSx5dSxSYSwkaSxpcyxCRCxXYSx6YSxJMCxSbCxNYyxrYyxKYyx4ZCxJaCxlbCxqVSxOSGUsQlUsTVMsRVMsa1MsaEwsUjcsX0ksTGNlLFR4dCxUNmUsYkksSEosZEF0LHBBdCxtQXQsRDZlXSxzdHlsZXM6WyIuY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2lu''@;'; put 'put ''LXRvcDowO2JvcmRlcjowfS5idXR0b25CYXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDEwcHg7YWxpZ24taXRlbXM6Y2VudGVyfS50ZXN0UmVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6cmdiYSgyNTUsMCwwLC44KSFpbXBvcnRhbnR9aG90LXRh''@;'; put 'put ''YmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmZpcnN0Q29sdW1uSGVhZGVyU3R5bGUgYnV0dG9uLmNoYW5nZVR5cGV7ZGlzcGxheTpub25lfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5oYW5kc29udGFibGUgdGJvZHkgdGguaHRfX2hpZ2hsaWdodC5wcmltYXJ5S2V5SGVh''@;'; put 'put ''ZGVyU3R5bGUsIGhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5oYW5kc29udGFibGUgdGhlYWQgdGguaHRfX2hpZ2hsaWdodC5wcmltYXJ5S2V5SGVhZGVyU3R5bGV7YmFja2dyb3VuZDpyZ2JhKDQ4LDEwNywwLC42OTAxOTYwNzg0KX1ob3QtdGFibGVbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgICAucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6cmdiYSg0OCwxMDcsMCwuNDMxMzcyNTQ5KX1ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICB0aC5yZWFkb25seUNlbGwgZGl2e29wYWNpdHk6LjR9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAg''@;'; put 'put ''dGQucmVhZG9ubHlDZWxse29wYWNpdHk6LjV9LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTRweDtiYWNrZ3JvdW5kOiM0OTU5Njc7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjNweDtmb250LXNpemU6MTZweDtoZWlnaHQ6MzBweDt0ZXh0LW92''@;'; put 'put ''ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6ODAlfS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntoZWlnaHQ6dW5zZXQ7d2hp''@;'; put 'put ''dGUtc3BhY2U6bm9ybWFsfS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOnVuc2V0fS5wa0hlYWRlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNjg3NjgyO2NvbG9yOiNmZmY7bWFyZ2luOi0xcHh9LmhlYWRl''@;'; put 'put ''ckJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZmZmZjtiYWNrZ3JvdW5kOiNmNWY2ZmV9LmVycm9yLWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Y29sb3I6cmVkfS5idG5DdHJsW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdHJhbnNwYXJlbnR9LmhpZGRlbltfbmdjb250ZW50LSVDT01QJV17dmlzaWJpbGl0eTpoaWRkZW59Lm15LWRy''@;'; put 'put ''b3Atem9uZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCBsaWdodGdyYXk7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6d2hpdGVzbW9rZTtib3gtc2hhZG93Omluc2V0IDAgMCA0cHggMnB4ICNhN2E1YTUyYjtoZWlnaHQ6NTB2aH0ubnYtZmlsZS1vdmVyW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMnB4IGdyZWVufS5maWxlLWRyb3AtdGV4dFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5wcm9ncmVzU3RhdGljW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJn''@;'; put 'put ''aW4tdG9wOjlweCFpbXBvcnRhbnR9LnByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnByb2dyZXNzLXN0YXRpY1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6Y2FsYygxMDAlIC0gMTRweCl9fS5ob3RFZGl0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5leGNl''@;'; put 'put ''bC1wYXJzaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0uZXhjZWwtcGFyc2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAuZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''bWFyZ2luOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOi00NXB4fS5lZGl0LXJlY29yZC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTtw''@;'; put 'put ''b3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDt3aWR0aDoxMDAlO3otaW5kZXg6NTAwfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KXsucHJvZ3Jlc1N0YXRpY1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDozMnB4IWltcG9ydGFudH0uY2FyZC1ibG9ja1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0sIC5jYXJkLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxMHB4IDAgMH19LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIC44cmVtIC44cmVtIWltcG9ydGFudDtwYWRkaW5nLXRvcDowfS5kcm9wLWFyZWFbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjFweDtib3JkZXI6MnB4IGRhc2hlZCAjZmZmO3otaW5kZXg6LTF9LmRyb3AtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtmb250LXNpemU6MjBweDttYXJnaW4tdG9wOjIwcHg7Y29sb3I6I2ZmZn0jc3VibWl0QnRuW19uZ2NvbnRlbnQtJUNPTVAlXSwgI2NhbmNlbFN1Ym1pdEJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTUwcHh9Il19KSxsfSkoKTtjb25zdCBsVHQ9W3twYXRoOiI6bGliTWVt''@;'; put 'put ''Iixjb21wb25lbnQ6S1B9LHtwYXRoOiI6bGliTWVtLzpmaWx0ZXJJZCIsY29tcG9uZW50OktQfSx7cGF0aDoiZWRpdC1yZWNvcmQvOmxpYk1lbSIsY29tcG9uZW50OktQfSx7cGF0aDoiZWRpdC1yZWNvcmQvOmxpYk1lbS86ZmlsdGVySWQiLGNvbXBvbmVudDpLUH1dO2xldCBzVHQ9KCgpPT57''@;'; put 'put ''Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbYm8sbzQuZm9yQ2hpbGQobFR0KSxvNF19KSxsfSkoKSxWSj0oKCk9PntjbGFzcyBse31yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltibyxJZCxibyxkYywkM119KSxsfSkoKSxQNmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEp''@;'; put 'put ''e3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbZGMsSWQsQkUsYm8sVkosJDNdfSksbH0pKCksQko9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwu''@;'; put 'put ''XHUwMjc1bW9kPURpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj14aSh7aW1wb3J0czpbYm8sSWQsYm8sZGMsQkUsVkUsJDNdfSksbH0pKCksRjZlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlw''@;'; put 'put ''ZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2JvLElkLGJvLGRjLEJKLHBMLGs2ZSxWNWUsVkosJDNdfSksbH0pKCk7TjVlKCk7bGV0IHVUdD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGko''@;'; put 'put ''e3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltGNmUsYm8sZGMsc1R0LElkLHBMLmZvclJvb3QoKSxCRSwkMyxWUCxQNmUsVkUsVkosazZlLEJKXX0pLGx9KSgpO2Z1bmN0aW9uIGNUdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDEyKX1mdW5jdGlvbiBmVHQobCxjKXtpZigx''@;'; put 'put ''Jmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBkLmdyb3VwU2VhcmNoPSIiLFp0KGQuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSxDZSgpfX1mdW5jdGlvbiBkVHQobCxjKXtpZigxJmwpe2Nv''@;'; put 'put ''bnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiw2KSgxLCJkaXYiLDcpKDIsImlucHV0Iiw4LDkpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5ncm91cFNlYXJjaD1kKX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQo''@;'; put 'put ''R2UoKS5ncm91cExpc3RPbkZpbHRlcigpKX0pLENlKCksdHQoNCxjVHQsMSwwLCJjbHItaWNvbiIsMTApLHR0KDUsZlR0LDEsMCwiY2xyLWljb24iLDExKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoKTtTZSgyKSxSZSgibmdNb2RlbCIsZi5ncm91cFNlYXJjaCksU2UoMiks''@;'; put 'put ''UmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gaFR0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdl''@;'; put 'put ''KCkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLmdyb3VwT25DbGljayhkKSl9KSx5ZSgxLCJwIiwxNiksdG4oMiwiY2xyLWljb24iLDE3KSxZZSgzKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0LGY9R2UoKTtncigidGFibGUtYWN0aXZlIixhLkdST1VQVVJJPT09Zi5n''@;'; put 'put ''cm91cFVyaSksU2UoMyksd3IoIiAiLGEuR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9uIHBUdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsaFR0LDQsMywiY2xyLXRyZWUtbm9kZSIsMTQpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsIWEuaGlkZGVuKX19''@;'; put 'put ''ZnVuY3Rpb24gbVR0KGwsYyl7MSZsJiYoeWUoMCwiZGl2IiwxOCkoMSwic3BhbiIsMTkpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkoKSl9ZnVuY3Rpb24gZ1R0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IiwyMSkoMSwiZGl2IiwyMikoMiwidGFibGUiLDI0KSgzLCJ0Ym9keSIpKDQsInRy''@;'; put 'put ''IikoNSwidGQiLDI1KSg2LCJwIiwyNikoNywiYiIpLFllKDgpLENlKCkoKSgpKCkseWUoOSwidHIiKSgxMCwidGQiLDI1KSgxMSwiaSIpLFllKDEyKSxDZSgpKCkoKSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoOCksYXIoYS5ncm91cE5hbWUpLFNlKDQpLGFyKGEuZ3JvdXBEZXNj''@;'; put 'put ''fHwibm8gZGVzY3JpcHRpb24iKX19ZnVuY3Rpb24gdlR0KGwsYyl7MSZsJiYoeWUoMCwiaDUiKSxZZSgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSxDZSgpKX1mdW5jdGlvbiB5VHQobCxjKXsxJmwmJihXcigwKSx5ZSgxLCJ0ZCIsMzEpKDIsImIiKSxZZSgzLCJOQU1FIiksQ2UoKSgpLHllKDQs''@;'; put 'put ''InRkIiwzMSkoNSwiYiIpLFllKDYsIkVNQUlMIiksQ2UoKSgpLHllKDcsInRkIiwzMSkoOCwiYiIpLFllKDksIkNSRUFURUQiKSxDZSgpKCkseWUoMTAsInRkIiwzMikoMTEsImIiKSxZZSgxMiwiVVBEQVRFRCIpLENlKCkoKSxHcigpKX1mdW5jdGlvbiBiVHQobCxjKXsxJmwmJihXcigwKSx5''@;'; put 'put ''ZSgxLCJ0ZCIsMzEpKDIsImIiKSxZZSgzLCJJRCIpLENlKCkoKSx5ZSg0LCJ0ZCIsMzEpKDUsImIiKSxZZSg2LCJESVNQTEFZIE5BTUUiKSxDZSgpKCkseWUoNywidGQiLDMxKSg4LCJiIiksWWUoOSwiVVNFUiBOQU1FIiksQ2UoKSgpLEdyKCkpfWZ1bmN0aW9uIF9UdChsLGMpe2lmKDEmbCYm''@;'; put 'put ''KFdyKDApLHllKDEsInRkIiwzMiksWWUoMiksQ2UoKSx5ZSgzLCJ0ZCIsMzIpLFllKDQpLENlKCkseWUoNSwidGQiLDMyKSxZZSg2KSxDZSgpLHllKDcsInRkIiwzMiksWWUoOCksQ2UoKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMiksYXIoYS5NRU1CRVJOQU1FKSxT''@;'; put 'put ''ZSgyKSxhcihhLkVNQUlMKSxTZSgyKSxhcihhLk1FTUJFUkNSRUFURUQpLFNlKDIpLGFyKGEuTUVNQkVSVVBEQVRFRCl9fWZ1bmN0aW9uIHdUdChsLGMpe2lmKDEmbCYmKFdyKDApLHllKDEsInRkIiwzMiksWWUoMiksQ2UoKSx5ZSgzLCJ0ZCIsMzIpLFllKDQpLENlKCkseWUoNSwidGQiLDMy''@;'; put 'put ''KSxZZSg2KSxDZSgpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdDtTZSgyKSxhcihhLklEKSxTZSgyKSxhcihhLkRJU1BMQVlOQU1FKSxTZSgyKSxhcihhLlVTRVJOQU1FKX19ZnVuY3Rpb24gQ1R0KGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiLDMzKSx0dCgxLF9UdCw5LDQsIm5n''@;'; put 'put ''LWNvbnRhaW5lciIsNSksdHQoMix3VHQsNywzLCJuZy1jb250YWluZXIiLDUpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDQpO1JlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi91c2Vycy8iKyhhLlVSSU1FTXx8YS5JRCkpLFNlKDEpLFJlKCJuZ0lmIixmLnNlcnZl''@;'; put 'put ''clR5cGU9PT1mLlNlcnZlclR5cGUuU2FzOSksU2UoMSksUmUoIm5nSWYiLGYuc2VydmVyVHlwZT09PWYuU2VydmVyVHlwZS5TYXNqcyl9fWZ1bmN0aW9uIFNUdChsLGMpe2lmKDEmbCYmKHllKDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpLHR0KDMseVR0LDEzLDAsIm5nLWNvbnRh''@;'; put 'put ''aW5lciIsNSksdHQoNCxiVHQsMTAsMCwibmctY29udGFpbmVyIiw1KSxDZSgpKCkseWUoNSwidGJvZHkiKSx0dCg2LENUdCwzLDMsInRyIiwzMCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMyksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXM5KSxTZSgx''@;'; put 'put ''KSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhc2pzKSxTZSgyKSxSZSgibmdGb3JPZiIsYS5ncm91cE1lbWJlcnMpfX1mdW5jdGlvbiBNVHQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiKSgxLCJoMyIpLFllKDIpLENlKCksdHQoMyx2VHQsMiwwLCJoNSIsNSkseWUo''@;'; put 'put ''NCwiZGl2IiwyNyksdHQoNSxTVHQsNywzLCJ0YWJsZSIsMjgpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDIpLHdyKCJNRU1CRVJTICgiLGEuZ3JvdXBNZW1iZXJDb3VudCwiKSIpLFNlKDEpLFJlKCJuZ0lmIiwwPT1hLmdyb3VwTWVtYmVyQ291bnQpLFNlKDIpLFJlKCJuZ0lmIiww''@;'; put 'put ''IT1hLmdyb3VwTWVtYmVyQ291bnQpfX1mdW5jdGlvbiBrVHQobCxjKXsxJmwmJih5ZSgwLCJoNSIpLFllKDEsIk5vIE1lbWJlcnMgUHJlc2VudCIpLENlKCkpfWZ1bmN0aW9uIEVUdChsLGMpe2lmKDEmbCYmKHllKDAsInRyIiwzMykoMSwidGQiLDMyKSxZZSgyKSxDZSgpKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1jLiRpbXBsaWNpdDtSZSgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvdXNlcnMvIithLk1FTUJFUklEKSxTZSgyKSxhcihhLk1FTUJFUk5BTUUpfX1mdW5jdGlvbiB4VHQobCxjKXtpZigxJmwmJih5ZSgwLCJ0YWJsZSIsMjkpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIpKDQs''@;'; put 'put ''ImIiKSxZZSg1KSxDZSgpKCkoKSgpLHllKDYsInRib2R5IiksdHQoNyxFVHQsMywyLCJ0ciIsMzApLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDUpLHdyKCJNRU1CRVJTICgiLGEuZ3JvdXBNZW1iZXJDb3VudCwiKSIpLFNlKDIpLFJlKCJuZ0Zvck9mIixhLmdyb3VwTWVtYmVycyl9''@;'; put 'put ''fWZ1bmN0aW9uIEFUdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIpKDEsImgzIiksWWUoMiksQ2UoKSx0dCgzLGtUdCwyLDAsImg1Iiw1KSx5ZSg0LCJkaXYiLDI3KSx0dCg1LHhUdCw4LDIsInRhYmxlIiwyOCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMiksYXIoYS5ncm91cE5h''@;'; put 'put ''bWUpLFNlKDEpLFJlKCJuZ0lmIiwwPT1hLmdyb3VwTWVtYmVyQ291bnQpLFNlKDIpLFJlKCJuZ0lmIiwwIT1hLmdyb3VwTWVtYmVyQ291bnQpfX1mdW5jdGlvbiBUVHQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiKSx0dCgxLGdUdCwxMywyLCJkaXYiLDIwKSx5ZSgyLCJkaXYiLDIxKSgzLCJk''@;'; put 'put ''aXYiLDIyKSg0LCJkaXYiLDIzKSx0dCg1LE1UdCw2LDMsImRpdiIsNSksdHQoNixBVHQsNiwzLCJkaXYiLDUpLHRuKDcsImJyIiksQ2UoKSgpKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMSksUmUoIm5nSWYiLGEuc2VydmVyVHlwZSE9PWEuU2VydmVyVHlwZS5TYXNWaXlhKSxTZSg0KSxS''@;'; put 'put ''ZSgibmdJZiIsYS5zZXJ2ZXJUeXBlIT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLFNlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzVml5YSl9fWxldCBINmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMuc2FzU2VydmljZT1hLHRo''@;'; put 'put ''aXMuaGVscGVyU2VydmljZT1mLHRoaXMucm91dGVyPWQsdGhpcy5sb2NhdGlvbj1oLHRoaXMucm91dGU9bSx0aGlzLmdyb3VwU2VhcmNoPSIiLHRoaXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1VUkk9IiIsdGhpcy5ncm91cFVyaT0iIix0aGlzLmdyb3VwTmFtZT0iIix0aGlzLmdyb3Vw''@;'; put 'put ''RGVzYz0iIix0aGlzLnNhc2pzQ29uZmlnPW5ldyB2MS5TQVNqc0NvbmZpZyx0aGlzLmlzVml5YT0hMSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5TZXJ2ZXJUeXBlPVh1LkQsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNlcnZlclR5cGU9dGhp''@;'; put 'put ''cy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSwiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUmJih0aGlzLmlzVml5YT0hMCl9bmdPbkluaXQoKXtKbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L2dyb3VwcyIsdm9pZCAwIT09dGhpcy5yb3V0''@;'; put 'put ''ZS5zbmFwc2hvdC5wYXJhbXMudXJpJiYodGhpcy5wYXJhbVByZXNlbnQ9ITAsdGhpcy5wYXJhbVVSST10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkpLEpuLnVzZXJuYXYuZ3JvdXBMaXN0JiYhdGhpcy5wYXJhbVByZXNlbnQ/KHRoaXMuZ3JvdXBzPUpuLnVzZXJuYXYuZ3JvdXBMaXN0''@;'; put 'put ''LHRoaXMuZ3JvdXBTZWFyY2g9Sm4udXNlcm5hdi5ncm91cFNlYXJjaCk6KHZvaWQgMD09PUpuLnVzZXJuYXYuZ3JvdXBMaXN0Pyh0aGlzLmxvYWRpbmc9ITAsdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcz9saW1pdD0yMDAw''@;'; put 'put ''Iix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGE9PmEudGV4dCgpKS50aGVuKGE9PntsZXQgZD1KU09OLnBhcnNlKGEpLml0ZW1zLm1hcChoPT4oe0dST1VQVVJJOmguaWQsR1JPVVBOQU1FOmgubmFtZSxHUk9VUERFU0M6aC5kZXNjcmlwdGlvbn0pKTt0aGlz''@;'; put 'put ''LmxvYWRpbmc9ITEsdGhpcy5ncm91cHM9ZCxKbi51c2VybmF2Lmdyb3VwTGlzdD1kfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXRncm91cHMiLG51bGwpLnRoZW4oYT0+e3RoaXMubG9hZGluZz0hMSx0aGlzLmdyb3Vwcz1hLmdyb3VwcyxKbi51c2VybmF2Lmdyb3VwTGlz''@;'; put 'put ''dD1hLmdyb3Vwc30pKToodGhpcy5ncm91cHM9Sm4udXNlcm5hdi5ncm91cExpc3QsdGhpcy5ncm91cFNlYXJjaD1Kbi51c2VybmF2Lmdyb3VwU2VhcmNoKSx0aGlzLnBhcmFtUHJlc2VudCYmKHRoaXMubG9hZGluZz0hMCx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZl''@;'; put 'put ''clVybCsiL2lkZW50aXRpZXMvZ3JvdXBzLyIrdGhpcy5wYXJhbVVSSSsiL21lbWJlcnM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihhPT5hLnRleHQoKSkudGhlbihhPT57bGV0IGY9SlNPTi5wYXJzZShhKTt0aGlzLmxvYWRpbmc9ITE7''@;'; put 'put ''bGV0IGQ9Zi5pdGVtcy5tYXAoaD0+KHtNRU1CRVJOQU1FOmgubmFtZSxNRU1CRVJJRDpoLmlkfSkpO3RoaXMuZ3JvdXBNZW1iZXJzPWQsdGhpcy5ncm91cE1lbWJlckNvdW50PWQubGVuZ3RoLHRoaXMuZ3JvdXBVcmk9dGhpcy5wYXJhbVVSSSx0aGlzLmdyb3VwTmFtZT10aGlzLnBhcmFtVVJJ''@;'; put 'put ''fSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieWdyb3VwIix7aXdhbnQ6W3tncm91cGlkOnRoaXMucGFyYW1VUkl9XX0pLnRoZW4oZj0+e3RoaXMuZ3JvdXBNZW1iZXJzPWYuc2FzbWVtYmVycyx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9Zi5zYXNtZW1iZXJz''@;'; put 'put ''Lmxlbmd0aCx2b2lkIDAhPT1mLnNhc21lbWJlcnNbMF0mJih0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cFVyaT1mLnNhc21lbWJlcnNbMF0uVVJJTUVNfHx0aGlzLnBhcmFtVVJJLHRoaXMuZ3JvdXBOYW1lPWYuc2FzbWVtYmVyc1swXS5HUk9VUE5BTUUsdGhpcy5ncm91cERlc2M9Zi5zYXNt''@;'; put 'put ''ZW1iZXJzWzBdLkdST1VQREVTQyx0aGlzLmdyb3VwTmFtZXx8KHRoaXMuZ3JvdXBOYW1lPXRoaXMucGFyYW1VUkkpKX0pKSl9Z3JvdXBMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMuZ3JvdXBzLHRoaXMuZ3JvdXBTZWFyY2gsIkdST1VQTkFN''@;'; put 'put ''RSIpLEpuLnVzZXJuYXYuZ3JvdXBTZWFyY2g9dGhpcy5ncm91cFNlYXJjaH1ncm91cE9uQ2xpY2soYSl7dGhpcy5sb2FkaW5nPSEwO2xldCBmPXRoaXMucm91dGVyLnVybDt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD9mLnNsaWNlKDAsZi5sYXN0SW5kZXhP''@;'; put 'put ''ZigiLyIpKSsiLyIrZW5jb2RlVVJJKGEuR1JPVVBVUkkpOmYrIi8iK2VuY29kZVVSSShhLkdST1VQVVJJKSksdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcy8iK2EuR1JPVVBVUkkrIi9tZW1iZXJzP2xpbWl0PTIwMDAiLHto''@;'; put 'put ''ZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oZD0+ZC50ZXh0KCkpLnRoZW4oZD0+e2xldCBoPUpTT04ucGFyc2UoZCk7dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBVcmk9YS5HUk9VUFVSSSx0aGlzLmdyb3VwTmFtZT1hLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVz''@;'; put 'put ''Yz1hLkdST1VQREVTQztsZXQgbT1oLml0ZW1zLm1hcChfPT4oe01FTUJFUk5BTUU6Xy5uYW1lLE1FTUJFUklEOl8uaWR9KSk7dGhpcy5ncm91cE1lbWJlcnM9bSx0aGlzLmdyb3VwTWVtYmVyQ291bnQ9bS5sZW5ndGh9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVt''@;'; put 'put ''YmVyc2J5Z3JvdXAiLHtpd2FudDpbe2dyb3VwaWQ6YS5HUk9VUFVSSX1dfSkudGhlbihoPT57dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBVcmk9YS5HUk9VUFVSSSx0aGlzLmdyb3VwTmFtZT1hLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1hLkdST1VQREVTQyx0aGlzLmdyb3VwTWVtYmVy''@;'; put 'put ''cz1oLnNhc21lbWJlcnMsdGhpcy5ncm91cE1lbWJlckNvdW50PWguc2FzbWVtYmVycy5sZW5ndGh9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocGwpLHJ0KFB1KSxydChMYSkscnQoZ2QpLHJ0KHR1KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBl''@;'; put 'put ''Omwsc2VsZWN0b3JzOltbImFwcC1ncm91cCJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbMSwic2lkZWJhci1oZWlnaHQiXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEs''@;'; put 'put ''ImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgYnkgR3JvdXBzIiwibmFtZSIsImlu''@;'; put 'put ''cHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJz''@;'; put 'put ''ZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlzdC1wYWRkaW5nIl0sWyJzaGFwZSIsInVzZXJzIl0sWzEsImxvYWRpbmdTcGlubmVyIl0s''@;'; put 'put ''WzEsInNwaW5uZXIiXSxbImNsYXNzIiwiY2xyLXJvdyIsNCwibmdJZiJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJjYXJkIiwiZ3JvdXAtZGF0YSJdLFsxLCJ0YWJsZSIsImdyb3VwLWluZm8iXSxbMSwibGVmdCJdLFsxLCJncm91cC1pbmZvLXRleHQiXSxbMSwidGFibGUt''@;'; put 'put ''Y29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIG1lbWJlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsIm1lbWJlci10YWJsZSJdLFszLCJyb3V0ZXJMaW5rIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwid2lkdGgtMjUiXSxbMSwiIl0sWzMsInJvdXRlckxpbmsiXV0sdGVtcGxhdGU6''@;'; put 'put ''ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJhcHAtc2lkZWJhciIsMCkoMSwiY2xyLXRyZWUiKSx0dCgyLGRUdCw2LDMsImNsci10cmVlLW5vZGUiLDEpLHR0KDMscFR0LDIsMSwibmctY29udGFpbmVyIiwyKSxDZSgpKCkseWUoNCwiZGl2IiwzKSx0dCg1LG1UdCwzLDAsImRpdiIsNCksdHQo''@;'; put 'put ''NixUVHQsOCwzLCJkaXYiLDUpLENlKCkpLDImYSYmKFNlKDIpLFJlKCJuZ0lmIixmLmdyb3VwcyksU2UoMSksUmUoIm5nRm9yT2YiLGYuZ3JvdXBzKSxTZSgyKSxSZSgibmdJZiIsZi5sb2FkaW5nKSxTZSgxKSxSZSgibmdJZiIsZi5ncm91cE1lbWJlcnMmJiFmLmxvYWRpbmcpKX0sZGVwZW5k''@;'; put 'put ''ZW5jaWVzOltSYSwkaSxpcyxXYSx6YSxJMCxEZCxMZixSbCxSZixrNF0sc3R5bGVzOlsiLnNpZGViYXItaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJX0uZ3JvdXAtaW5mby10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH0u''@;'; put 'put ''Z3JvdXAtaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS5ncm91cC1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmNlbnRlcn0uZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS5n''@;'; put 'put ''cm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmF1dG99Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAuZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGln''@;'; put 'put ''bjpjZW50ZXJ9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgLm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O3dpZHRoOjEwMCV9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgLm1lbWJlci10YWJsZVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZGFkYWRhfS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdICAgdHJbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjdXJzb3I6cG9pbnRlcn0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsuZ3JvdXAtZGF0YVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSksbH0pKCk7ZnVuY3Rpb24gT1R0KCl7fWZ1bmN0aW9uIGpKKGwpe3JldHVybiBudWxsPT1sP09UdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IobCl9fWZ1bmN0aW9uIE42ZShsKXtyZXR1''@;'; put 'put ''cm4gbnVsbD09bD9bXTpBcnJheS5pc0FycmF5KGwpP2w6QXJyYXkuZnJvbShsKX1mdW5jdGlvbiBJVHQoKXtyZXR1cm5bXX1mdW5jdGlvbiBWNmUobCl7cmV0dXJuIG51bGw9PWw/SVR0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChsKX19ZnVuY3Rpb24gQjZlKGwp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXMobCl9fWZ1bmN0aW9uIGo2ZShsKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGMubWF0Y2hlcyhsKX19dmFyIFBUdD1BcnJheS5wcm90b3R5cGUuZmluZDtmdW5jdGlvbiBIVHQoKXtyZXR1cm4gdGhpcy5maXJzdEVsZW1l''@;'; put 'put ''bnRDaGlsZH12YXIgVlR0PUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gQlR0KCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5jaGlsZHJlbil9ZnVuY3Rpb24gejZlKGwpe3JldHVybiBuZXcgQXJyYXkobC5sZW5ndGgpfWZ1bmN0aW9uIHFQKGwsYyl7dGhpcy5vd25lckRvY3VtZW50''@;'; put 'put ''PWwub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1sLm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PWwsdGhpcy5fX2RhdGFfXz1jfWZ1bmN0aW9uIFdUdChsLGMsYSxmLGQsaCl7Zm9yKHZhciBfLG09MCxPPWMubGVuZ3RoLFg9aC5sZW5ndGg7bTxYOysr''@;'; put 'put ''bSkoXz1jW21dKT8oXy5fX2RhdGFfXz1oW21dLGZbbV09Xyk6YVttXT1uZXcgcVAobCxoW21dKTtmb3IoO208TzsrK20pKF89Y1ttXSkmJihkW21dPV8pfWZ1bmN0aW9uIEdUdChsLGMsYSxmLGQsaCxtKXt2YXIgXyxPLHhlLFg9bmV3IE1hcCxhZT1jLmxlbmd0aCxwZT1oLmxlbmd0aCxiZT1u''@;'; put 'put ''ZXcgQXJyYXkoYWUpO2ZvcihfPTA7XzxhZTsrK18pKE89Y1tfXSkmJihiZVtfXT14ZT1tLmNhbGwoTyxPLl9fZGF0YV9fLF8sYykrIiIsWC5oYXMoeGUpP2RbX109TzpYLnNldCh4ZSxPKSk7Zm9yKF89MDtfPHBlOysrXyl4ZT1tLmNhbGwobCxoW19dLF8saCkrIiIsKE89WC5nZXQoeGUpKT8o''@;'; put 'put ''ZltfXT1PLE8uX19kYXRhX189aFtfXSxYLmRlbGV0ZSh4ZSkpOmFbX109bmV3IHFQKGwsaFtfXSk7Zm9yKF89MDtfPGFlOysrXykoTz1jW19dKSYmWC5nZXQoYmVbX10pPT09TyYmKGRbX109Tyl9ZnVuY3Rpb24gJFR0KGwpe3JldHVybiBsLl9fZGF0YV9ffWZ1bmN0aW9uIHFUdChsKXtyZXR1''@;'; put 'put ''cm4ib2JqZWN0Ij09dHlwZW9mIGwmJiJsZW5ndGgiaW4gbD9sOkFycmF5LmZyb20obCl9ZnVuY3Rpb24gbk90KGwsYyl7cmV0dXJuIGw8Yz8tMTpsPmM/MTpsPj1jPzA6TmFOfXFQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6cVAsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X3BhcmVudC5pbnNlcnRCZWZvcmUobCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGwsYyl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUobCxjKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IobCl9''@;'; put 'put ''LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKGwpfX07dmFyIHpKPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtjb25zdCBVNmU9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOnpKLHhs''@;'; put 'put ''aW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gWFAobCl7dmFyIGM9bCs9IiIsYT1jLmluZGV4T2YoIjoiKTtyZXR1''@;'; put 'put ''cm4gYT49MCYmInhtbG5zIiE9PShjPWwuc2xpY2UoMCxhKSkmJihsPWwuc2xpY2UoYSsxKSksVTZlLmhhc093blByb3BlcnR5KGMpP3tzcGFjZTpVNmVbY10sbG9jYWw6bH06bH1mdW5jdGlvbiB1T3QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUobCl9fWZ1bmN0''@;'; put 'put ''aW9uIGNPdChsKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGwuc3BhY2UsbC5sb2NhbCl9fWZ1bmN0aW9uIGZPdChsLGMpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKGwsYyl9fWZ1bmN0aW9uIGRPdChsLGMpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuc2V0QXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsLGMpfX1mdW5jdGlvbiBoT3QobCxjKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1hP3RoaXMucmVtb3ZlQXR0cmlidXRlKGwpOnRoaXMuc2V0QXR0cmlidXRlKGwsYSl9fWZ1''@;'; put 'put ''bmN0aW9uIHBPdChsLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWE/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsLGEpfX1mdW5jdGlvbiBaNmUo''@;'; put 'put ''bCl7cmV0dXJuIGwub3duZXJEb2N1bWVudCYmbC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxsLmRvY3VtZW50JiZsfHxsLmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGdPdChsKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGwpfX1mdW5jdGlvbiB2T3QobCxj''@;'; put 'put ''LGEpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobCxjLGEpfX1mdW5jdGlvbiB5T3QobCxjLGEpe3JldHVybiBmdW5jdGlvbigpe3ZhciBmPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWY/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShsKTp0aGlzLnN0''@;'; put 'put ''eWxlLnNldFByb3BlcnR5KGwsZixhKX19ZnVuY3Rpb24gQWIobCxjKXtyZXR1cm4gbC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGMpfHxaNmUobCkuZ2V0Q29tcHV0ZWRTdHlsZShsLG51bGwpLmdldFByb3BlcnR5VmFsdWUoYyl9ZnVuY3Rpb24gX090KGwpe3JldHVybiBmdW5jdGlvbigpe2Rl''@;'; put 'put ''bGV0ZSB0aGlzW2xdfX1mdW5jdGlvbiB3T3QobCxjKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW2xdPWN9fWZ1bmN0aW9uIENPdChsLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWE/ZGVsZXRlIHRoaXNbbF06dGhpc1tsXT1hfX1mdW5j''@;'; put 'put ''dGlvbiBZNmUobCl7cmV0dXJuIGwudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIFVKKGwpe3JldHVybiBsLmNsYXNzTGlzdHx8bmV3IFc2ZShsKX1mdW5jdGlvbiBXNmUobCl7dGhpcy5fbm9kZT1sLHRoaXMuX25hbWVzPVk2ZShsLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1''@;'; put 'put ''bmN0aW9uIEc2ZShsLGMpe2Zvcih2YXIgYT1VSihsKSxmPS0xLGQ9Yy5sZW5ndGg7KytmPGQ7KWEuYWRkKGNbZl0pfWZ1bmN0aW9uICQ2ZShsLGMpe2Zvcih2YXIgYT1VSihsKSxmPS0xLGQ9Yy5sZW5ndGg7KytmPGQ7KWEucmVtb3ZlKGNbZl0pfWZ1bmN0aW9uIE1PdChsKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXtHNmUodGhpcyxsKX19ZnVuY3Rpb24ga090KGwpe3JldHVybiBmdW5jdGlvbigpeyQ2ZSh0aGlzLGwpfX1mdW5jdGlvbiBFT3QobCxjKXtyZXR1cm4gZnVuY3Rpb24oKXsoYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk/RzZlOiQ2ZSkodGhpcyxsKX19ZnVuY3Rpb24gQU90KCl7dGhp''@;'; put 'put ''cy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBUT3QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1sfX1mdW5jdGlvbiBPT3QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9bC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1jPz8iIn19ZnVuY3Rp''@;'; put 'put ''b24gSU90KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gUk90KGwpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPWx9fWZ1bmN0aW9uIExPdChsKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1sLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1jPz8iIn19''@;'; put 'put ''ZnVuY3Rpb24gRk90KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIE5PdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQp''@;'; put 'put ''fWZ1bmN0aW9uIEJPdChsKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz10aGlzLm93bmVyRG9jdW1lbnQsYT10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gYT09PXpKJiZjLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT16Sj9jLmNyZWF0ZUVsZW1lbnQobCk6Yy5jcmVhdGVFbGVtZW50''@;'; put 'put ''TlMoYSxsKX19ZnVuY3Rpb24gak90KGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuc3BhY2UsbC5sb2NhbCl9fWZ1bmN0aW9uIEs2ZShsKXt2YXIgYz1YUChsKTtyZXR1cm4oYy5sb2NhbD9qT3Q6Qk90KShjKX1mdW5jdGlv''@;'; put 'put ''biBVT3QoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBZT3QoKXt2YXIgbD10aGlzLnBhcmVudE5vZGU7bCYmbC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBHT3QoKXt2YXIgbD10aGlzLmNsb25lTm9kZSghMSksYz10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGM/Yy5pbnNlcnRCZWZvcmUobCx0''@;'; put 'put ''aGlzLm5leHRTaWJsaW5nKTpsfWZ1bmN0aW9uICRPdCgpe3ZhciBsPXRoaXMuY2xvbmVOb2RlKCEwKSxjPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gYz9jLmluc2VydEJlZm9yZShsLHRoaXMubmV4dFNpYmxpbmcpOmx9ZnVuY3Rpb24gUU90KGwpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXRo''@;'; put 'put ''aXMuX19vbjtpZihjKXtmb3IodmFyIGgsYT0wLGY9LTEsZD1jLmxlbmd0aDthPGQ7KythKWg9Y1thXSxsLnR5cGUmJmgudHlwZSE9PWwudHlwZXx8aC5uYW1lIT09bC5uYW1lP2NbKytmXT1oOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoLnR5cGUsaC5saXN0ZW5lcixoLm9wdGlvbnMpOysr''@;'; put 'put ''Zj9jLmxlbmd0aD1mOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBlRHQobCxjLGEpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkLGY9dGhpcy5fX29uLGg9ZnVuY3Rpb24gWE90KGwpe3JldHVybiBmdW5jdGlvbihjKXtsLmNhbGwodGhpcyxjLHRoaXMuX19kYXRhX18pfX0oYyk7aWYoZilm''@;'; put 'put ''b3IodmFyIG09MCxfPWYubGVuZ3RoO208XzsrK20paWYoKGQ9ZlttXSkudHlwZT09PWwudHlwZSYmZC5uYW1lPT09bC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZC50eXBlLGQubGlzdGVuZXIsZC5vcHRpb25zKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZC50eXBlLGQu''@;'; put 'put ''bGlzdGVuZXI9aCxkLm9wdGlvbnM9YSksdm9pZChkLnZhbHVlPWMpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihsLnR5cGUsaCxhKSxkPXt0eXBlOmwudHlwZSxuYW1lOmwubmFtZSx2YWx1ZTpjLGxpc3RlbmVyOmgsb3B0aW9uczphfSxmP2YucHVzaChkKTp0aGlzLl9fb249W2RdfX1mdW5jdGlv''@;'; put 'put ''biBxNmUobCxjLGEpe3ZhciBmPVo2ZShsKSxkPWYuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZD1uZXcgZChjLGEpOihkPWYuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IiksYT8oZC5pbml0RXZlbnQoYyxhLmJ1YmJsZXMsYS5jYW5jZWxhYmxlKSxkLmRldGFpbD1hLmRl''@;'; put 'put ''dGFpbCk6ZC5pbml0RXZlbnQoYywhMSwhMSkpLGwuZGlzcGF0Y2hFdmVudChkKX1mdW5jdGlvbiBuRHQobCxjKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcTZlKHRoaXMsbCxjKX19ZnVuY3Rpb24gckR0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHE2ZSh0aGlzLGwsYy5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cykpfX1XNmUucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24obCl7dGhpcy5fbmFtZXMuaW5kZXhPZihsKTwwJiYodGhpcy5fbmFtZXMucHVzaChsKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVu''@;'; put 'put ''Y3Rpb24obCl7dmFyIGM9dGhpcy5fbmFtZXMuaW5kZXhPZihsKTtjPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGMsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMuX25hbWVz''@;'; put 'put ''LmluZGV4T2YobCk+PTB9fTt2YXIgWko9W251bGxdO2Z1bmN0aW9uIHUwKGwsYyl7dGhpcy5fZ3JvdXBzPWwsdGhpcy5fcGFyZW50cz1jfWZ1bmN0aW9uIFg2ZSgpe3JldHVybiBuZXcgdTAoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxaSil9dTAucHJvdG90eXBlPVg2ZS5wcm90b3R5''@;'; put 'put ''cGU9e2NvbnN0cnVjdG9yOnUwLHNlbGVjdDpmdW5jdGlvbiBEVHQobCl7ImZ1bmN0aW9uIiE9dHlwZW9mIGwmJihsPWpKKGwpKTtmb3IodmFyIGM9dGhpcy5fZ3JvdXBzLGE9Yy5sZW5ndGgsZj1uZXcgQXJyYXkoYSksZD0wO2Q8YTsrK2QpZm9yKHZhciBPLFgsaD1jW2RdLG09aC5sZW5ndGgs''@;'; put 'put ''Xz1mW2RdPW5ldyBBcnJheShtKSxhZT0wO2FlPG07KythZSkoTz1oW2FlXSkmJihYPWwuY2FsbChPLE8uX19kYXRhX18sYWUsaCkpJiYoIl9fZGF0YV9fImluIE8mJihYLl9fZGF0YV9fPU8uX19kYXRhX18pLF9bYWVdPVgpO3JldHVybiBuZXcgdTAoZix0aGlzLl9wYXJlbnRzKX0sc2VsZWN0''@;'; put 'put ''QWxsOmZ1bmN0aW9uIExUdChsKXtsPSJmdW5jdGlvbiI9PXR5cGVvZiBsP2Z1bmN0aW9uIFJUdChsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTjZlKGwuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19KGwpOlY2ZShsKTtmb3IodmFyIGM9dGhpcy5fZ3JvdXBzLGE9Yy5sZW5ndGgsZj1bXSxk''@;'; put 'put ''PVtdLGg9MDtoPGE7KytoKWZvcih2YXIgTyxtPWNbaF0sXz1tLmxlbmd0aCxYPTA7WDxfOysrWCkoTz1tW1hdKSYmKGYucHVzaChsLmNhbGwoTyxPLl9fZGF0YV9fLFgsbSkpLGQucHVzaChPKSk7cmV0dXJuIG5ldyB1MChmLGQpfSxzZWxlY3RDaGlsZDpmdW5jdGlvbiBOVHQobCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuc2VsZWN0KG51bGw9PWw/SFR0OmZ1bmN0aW9uIEZUdChsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUFR0LmNhbGwodGhpcy5jaGlsZHJlbixsKX19KCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w6ajZlKGwpKSl9LHNlbGVjdENoaWxkcmVuOmZ1bmN0aW9uIHpUdChsKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5zZWxlY3RBbGwobnVsbD09bD9CVHQ6ZnVuY3Rpb24galR0KGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBWVHQuY2FsbCh0aGlzLmNoaWxkcmVuLGwpfX0oImZ1bmN0aW9uIj09dHlwZW9mIGw/bDpqNmUobCkpKX0sZmlsdGVyOmZ1bmN0aW9uIFVUdChsKXsiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgbCYmKGw9QjZlKGwpKTtmb3IodmFyIGM9dGhpcy5fZ3JvdXBzLGE9Yy5sZW5ndGgsZj1uZXcgQXJyYXkoYSksZD0wO2Q8YTsrK2QpZm9yKHZhciBPLGg9Y1tkXSxtPWgubGVuZ3RoLF89ZltkXT1bXSxYPTA7WDxtOysrWCkoTz1oW1hdKSYmbC5jYWxsKE8sTy5fX2RhdGFfXyxYLGgp''@;'; put 'put ''JiZfLnB1c2goTyk7cmV0dXJuIG5ldyB1MChmLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIEtUdChsLGMpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBBcnJheS5mcm9tKHRoaXMsJFR0KTt2YXIgYT1jP0dUdDpXVHQsZj10aGlzLl9wYXJlbnRzLGQ9dGhpcy5fZ3JvdXBzOyJm''@;'; put 'put ''dW5jdGlvbiIhPXR5cGVvZiBsJiYobD1mdW5jdGlvbiBZVHQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGx9fShsKSk7Zm9yKHZhciBoPWQubGVuZ3RoLG09bmV3IEFycmF5KGgpLF89bmV3IEFycmF5KGgpLE89bmV3IEFycmF5KGgpLFg9MDtYPGg7KytYKXt2YXIgYWU9ZltYXSxwZT1k''@;'; put 'put ''W1hdLGJlPXBlLmxlbmd0aCx4ZT1xVHQobC5jYWxsKGFlLGFlJiZhZS5fX2RhdGFfXyxYLGYpKSxWZT14ZS5sZW5ndGgsWmU9X1tYXT1uZXcgQXJyYXkoVmUpLGx0PW1bWF09bmV3IEFycmF5KFZlKTthKGFlLHBlLFplLGx0LE9bWF09bmV3IEFycmF5KGJlKSx4ZSxjKTtmb3IodmFyIHJuLFh0''@;'; put 'put ''LGd0PTAsanQ9MDtndDxWZTsrK2d0KWlmKHJuPVplW2d0XSl7Zm9yKGd0Pj1qdCYmKGp0PWd0KzEpOyEoWHQ9bHRbanRdKSYmKytqdDxWZTspO3JuLl9uZXh0PVh0fHxudWxsfX1yZXR1cm4obT1uZXcgdTAobSxmKSkuX2VudGVyPV8sbS5fZXhpdD1PLG19LGVudGVyOmZ1bmN0aW9uIFpUdCgp''@;'; put 'put ''e3JldHVybiBuZXcgdTAodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoejZlKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBYVHQoKXtyZXR1cm4gbmV3IHUwKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoejZlKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBK''@;'; put 'put ''VHQobCxjLGEpe3ZhciBmPXRoaXMuZW50ZXIoKSxkPXRoaXMsaD10aGlzLmV4aXQoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbD8oZj1sKGYpKSYmKGY9Zi5zZWxlY3Rpb24oKSk6Zj1mLmFwcGVuZChsKyIiKSxudWxsIT1jJiYoZD1jKGQpKSYmKGQ9ZC5zZWxlY3Rpb24oKSksbnVsbD09''@;'; put 'put ''YT9oLnJlbW92ZSgpOmEoaCksZiYmZD9mLm1lcmdlKGQpLm9yZGVyKCk6ZH0sbWVyZ2U6ZnVuY3Rpb24gUVR0KGwpe2Zvcih2YXIgYz1sLnNlbGVjdGlvbj9sLnNlbGVjdGlvbigpOmwsYT10aGlzLl9ncm91cHMsZj1jLl9ncm91cHMsZD1hLmxlbmd0aCxtPU1hdGgubWluKGQsZi5sZW5ndGgp''@;'; put 'put ''LF89bmV3IEFycmF5KGQpLE89MDtPPG07KytPKWZvcih2YXIgeGUsWD1hW09dLGFlPWZbT10scGU9WC5sZW5ndGgsYmU9X1tPXT1uZXcgQXJyYXkocGUpLFZlPTA7VmU8cGU7KytWZSkoeGU9WFtWZV18fGFlW1ZlXSkmJihiZVtWZV09eGUpO2Zvcig7TzxkOysrTylfW09dPWFbT107cmV0dXJu''@;'; put 'put ''IG5ldyB1MChfLHRoaXMuX3BhcmVudHMpfSxzZWxlY3Rpb246ZnVuY3Rpb24gYUR0KCl7cmV0dXJuIHRoaXN9LG9yZGVyOmZ1bmN0aW9uIGVPdCgpe2Zvcih2YXIgbD10aGlzLl9ncm91cHMsYz0tMSxhPWwubGVuZ3RoOysrYzxhOylmb3IodmFyIG0sZj1sW2NdLGQ9Zi5sZW5ndGgtMSxoPWZb''@;'; put 'put ''ZF07LS1kPj0wOykobT1mW2RdKSYmKGgmJjRebS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihoKSYmaC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShtLGgpLGg9bSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gdE90KGwpe2Z1bmN0aW9uIGMocGUsYmUpe3JldHVybiBwZSYmYmU/bChwZS5f''@;'; put 'put ''X2RhdGFfXyxiZS5fX2RhdGFfXyk6IXBlLSFiZX1sfHwobD1uT3QpO2Zvcih2YXIgYT10aGlzLl9ncm91cHMsZj1hLmxlbmd0aCxkPW5ldyBBcnJheShmKSxoPTA7aDxmOysraCl7Zm9yKHZhciBYLG09YVtoXSxfPW0ubGVuZ3RoLE89ZFtoXT1uZXcgQXJyYXkoXyksYWU9MDthZTxfOysrYWUp''@;'; put 'put ''KFg9bVthZV0pJiYoT1thZV09WCk7Ty5zb3J0KGMpfXJldHVybiBuZXcgdTAoZCx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIHJPdCgpe3ZhciBsPWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsbC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30s''@;'; put 'put ''bm9kZXM6ZnVuY3Rpb24gaU90KCl7cmV0dXJuIEFycmF5LmZyb20odGhpcyl9LG5vZGU6ZnVuY3Rpb24gb090KCl7Zm9yKHZhciBsPXRoaXMuX2dyb3VwcyxjPTAsYT1sLmxlbmd0aDtjPGE7KytjKWZvcih2YXIgZj1sW2NdLGQ9MCxoPWYubGVuZ3RoO2Q8aDsrK2Qpe3ZhciBtPWZbZF07aWYo''@;'; put 'put ''bSlyZXR1cm4gbX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBhT3QoKXtsZXQgbD0wO2Zvcihjb25zdCBjIG9mIHRoaXMpKytsO3JldHVybiBsfSxlbXB0eTpmdW5jdGlvbiBsT3QoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gc090KGwpe2Zvcih2YXIgYz10aGlzLl9n''@;'; put 'put ''cm91cHMsYT0wLGY9Yy5sZW5ndGg7YTxmOysrYSlmb3IodmFyIF8sZD1jW2FdLGg9MCxtPWQubGVuZ3RoO2g8bTsrK2gpKF89ZFtoXSkmJmwuY2FsbChfLF8uX19kYXRhX18saCxkKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBtT3QobCxjKXt2YXIgYT1YUChsKTtpZihhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPDIpe3ZhciBmPXRoaXMubm9kZSgpO3JldHVybiBhLmxvY2FsP2YuZ2V0QXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsKTpmLmdldEF0dHJpYnV0ZShhKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1jP2EubG9jYWw/Y090OnVPdDoiZnVuY3Rpb24iPT10eXBlb2YgYz9hLmxvY2Fs''@;'; put 'put ''P3BPdDpoT3Q6YS5sb2NhbD9kT3Q6Zk90KShhLGMpKX0sc3R5bGU6ZnVuY3Rpb24gYk90KGwsYyxhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09Yz9nT3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGM/eU90OnZPdCkobCxjLGE/PyIiKSk6QWIodGhpcy5ub2RlKCks''@;'; put 'put ''bCl9LHByb3BlcnR5OmZ1bmN0aW9uIFNPdChsLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1jP19PdDoiZnVuY3Rpb24iPT10eXBlb2YgYz9DT3Q6d090KShsLGMpKTp0aGlzLm5vZGUoKVtsXX0sY2xhc3NlZDpmdW5jdGlvbiB4T3QobCxjKXt2YXIgYT1Z''@;'; put 'put ''NmUobCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGY9VUoodGhpcy5ub2RlKCkpLGQ9LTEsaD1hLmxlbmd0aDsrK2Q8aDspaWYoIWYuY29udGFpbnMoYVtkXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGM/RU90OmM/''@;'; put 'put ''TU90OmtPdCkoYSxjKSl9LHRleHQ6ZnVuY3Rpb24gRE90KGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT1sP0FPdDooImZ1bmN0aW9uIj09dHlwZW9mIGw/T090OlRPdCkobCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIFBPdChsKXty''@;'; put 'put ''ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09bD9JT3Q6KCJmdW5jdGlvbiI9PXR5cGVvZiBsP0xPdDpST3QpKGwpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIEhPdCgpe3JldHVybiB0aGlzLmVhY2goRk90KX0sbG93ZXI6ZnVuY3Rpb24gVk90''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuZWFjaChOT3QpfSxhcHBlbmQ6ZnVuY3Rpb24gek90KGwpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBsP2w6SzZlKGwpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGMuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0p''@;'; put 'put ''fSxpbnNlcnQ6ZnVuY3Rpb24gWk90KGwsYyl7dmFyIGE9ImZ1bmN0aW9uIj09dHlwZW9mIGw/bDpLNmUobCksZj1udWxsPT1jP1VPdDoiZnVuY3Rpb24iPT10eXBlb2YgYz9jOmpKKGMpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShhLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKSxmLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX0scmVtb3ZlOmZ1bmN0aW9uIFdPdCgpe3JldHVybiB0aGlzLmVhY2goWU90KX0sY2xvbmU6ZnVuY3Rpb24gS090KGwpe3JldHVybiB0aGlzLnNlbGVjdChsPyRPdDpHT3QpfSxkYXR1bTpmdW5jdGlv''@;'; put 'put ''biBxT3QobCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLGwpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiB0RHQobCxjLGEpe3ZhciBkLG0sZj1mdW5jdGlvbiBKT3QobCl7cmV0dXJuIGwudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1h''@;'; put 'put ''cChmdW5jdGlvbihjKXt2YXIgYT0iIixmPWMuaW5kZXhPZigiLiIpO3JldHVybiBmPj0wJiYoYT1jLnNsaWNlKGYrMSksYz1jLnNsaWNlKDAsZikpLHt0eXBlOmMsbmFtZTphfX0pfShsKyIiKSxoPWYubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKF89Yz9lRHQ6UU90LGQ9''@;'; put 'put ''MDtkPGg7KytkKXRoaXMuZWFjaChfKGZbZF0sYyxhKSk7cmV0dXJuIHRoaXN9dmFyIF89dGhpcy5ub2RlKCkuX19vbjtpZihfKWZvcih2YXIgYWUsTz0wLFg9Xy5sZW5ndGg7TzxYOysrTylmb3IoZD0wLGFlPV9bT107ZDxoOysrZClpZigobT1mW2RdKS50eXBlPT09YWUudHlwZSYmbS5uYW1l''@;'; put 'put ''PT09YWUubmFtZSlyZXR1cm4gYWUudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIGlEdChsLGMpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBjP3JEdDpuRHQpKGwsYykpfSxbU3ltYm9sLml0ZXJhdG9yXTpmdW5jdGlvbipvRHQoKXtmb3IodmFyIGw9dGhpcy5fZ3JvdXBz''@;'; put 'put ''LGM9MCxhPWwubGVuZ3RoO2M8YTsrK2MpZm9yKHZhciBtLGY9bFtjXSxkPTAsaD1mLmxlbmd0aDtkPGg7KytkKShtPWZbZF0pJiYoeWllbGQgbSl9fTtjb25zdCBrNj1YNmU7ZnVuY3Rpb24gWUoobCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsP25ldyB1MChbZG9jdW1lbnQucXVlcnlTZWxl''@;'; put 'put ''Y3RvckFsbChsKV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB1MChbTjZlKGwpXSxaSil9ZnVuY3Rpb24gT2EobCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsP25ldyB1MChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6''@;'; put 'put ''bmV3IHUwKFtbbF1dLFpKKX12YXIgbER0PXt2YWx1ZTooKT0+e319O2Z1bmN0aW9uIEo2ZSgpe2Zvcih2YXIgZixsPTAsYz1hcmd1bWVudHMubGVuZ3RoLGE9e307bDxjOysrbCl7aWYoIShmPWFyZ3VtZW50c1tsXSsiIil8fGYgaW4gYXx8L1tccy5dLy50ZXN0KGYpKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiaWxsZWdhbCB0eXBlOiAiK2YpO2FbZl09W119cmV0dXJuIG5ldyBKUChhKX1mdW5jdGlvbiBKUChsKXt0aGlzLl89bH1mdW5jdGlvbiB1RHQobCxjKXtmb3IodmFyIGQsYT0wLGY9bC5sZW5ndGg7YTxmOysrYSlpZigoZD1sW2FdKS5uYW1lPT09YylyZXR1cm4gZC52YWx1ZX1mdW5jdGlv''@;'; put 'put ''biBRNmUobCxjLGEpe2Zvcih2YXIgZj0wLGQ9bC5sZW5ndGg7ZjxkOysrZilpZihsW2ZdLm5hbWU9PT1jKXtsW2ZdPWxEdCxsPWwuc2xpY2UoMCxmKS5jb25jYXQobC5zbGljZShmKzEpKTticmVha31yZXR1cm4gbnVsbCE9YSYmbC5wdXNoKHtuYW1lOmMsdmFsdWU6YX0pLGx9SlAucHJvdG90''@;'; put 'put ''eXBlPUo2ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkpQLG9uOmZ1bmN0aW9uKGwsYyl7dmFyIGQsYT10aGlzLl8sZj1mdW5jdGlvbiBzRHQobCxjKXtyZXR1cm4gbC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKGEpe3ZhciBmPSIiLGQ9YS5pbmRleE9mKCIuIik7aWYoZD49''@;'; put 'put ''MCYmKGY9YS5zbGljZShkKzEpLGE9YS5zbGljZSgwLGQpKSxhJiYhYy5oYXNPd25Qcm9wZXJ0eShhKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIithKTtyZXR1cm57dHlwZTphLG5hbWU6Zn19KX0obCsiIixhKSxoPS0xLG09Zi5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''PDIpKXtpZihudWxsIT1jJiYiZnVuY3Rpb24iIT10eXBlb2YgYyl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrYyk7Zm9yKDsrK2g8bTspaWYoZD0obD1mW2hdKS50eXBlKWFbZF09UTZlKGFbZF0sbC5uYW1lLGMpO2Vsc2UgaWYobnVsbD09Yylmb3IoZCBpbiBhKWFbZF09''@;'; put 'put ''UTZlKGFbZF0sbC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytoPG07KWlmKChkPShsPWZbaF0pLnR5cGUpJiYoZD11RHQoYVtkXSxsLm5hbWUpKSlyZXR1cm4gZH0sY29weTpmdW5jdGlvbigpe3ZhciBsPXt9LGM9dGhpcy5fO2Zvcih2YXIgYSBpbiBjKWxbYV09Y1thXS5zbGljZSgp''@;'; put 'put ''O3JldHVybiBuZXcgSlAobCl9LGNhbGw6ZnVuY3Rpb24obCxjKXtpZigoZD1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBkLGgsYT1uZXcgQXJyYXkoZCksZj0wO2Y8ZDsrK2YpYVtmXT1hcmd1bWVudHNbZisyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGwpKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigidW5rbm93biB0eXBlOiAiK2wpO2ZvcihmPTAsZD0oaD10aGlzLl9bbF0pLmxlbmd0aDtmPGQ7KytmKWhbZl0udmFsdWUuYXBwbHkoYyxhKX0sYXBwbHk6ZnVuY3Rpb24obCxjLGEpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkobCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5''@;'; put 'put ''cGU6ICIrbCk7Zm9yKHZhciBmPXRoaXMuX1tsXSxkPTAsaD1mLmxlbmd0aDtkPGg7KytkKWZbZF0udmFsdWUuYXBwbHkoYyxhKX19O2NvbnN0IFdKPUo2ZTt2YXIgUVAsS0UsVGI9MCxHRT0wLCRFPTAsZThlPTFlMyxlRj0wLEU2PTAsdEY9MCxxRT0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1h''@;'; put 'put ''bmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSx0OGU9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24obCl7c2V0VGltZW91dChsLDE3''@;'; put 'put ''KX07ZnVuY3Rpb24gR0ooKXtyZXR1cm4gRTZ8fCh0OGUoY0R0KSxFNj1xRS5ub3coKSt0Ril9ZnVuY3Rpb24gY0R0KCl7RTY9MH1mdW5jdGlvbiBuRigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gbjhlKGwsYyxhKXt2YXIgZj1uZXcgbkY7cmV0dXJu''@;'; put 'put ''IGYucmVzdGFydChsLGMsYSksZn1mdW5jdGlvbiByOGUoKXtFNj0oZUY9cUUubm93KCkpK3RGLFRiPUdFPTA7dHJ5eyFmdW5jdGlvbiBmRHQoKXtHSigpLCsrVGI7Zm9yKHZhciBjLGw9UVA7bDspKGM9RTYtbC5fdGltZSk+PTAmJmwuX2NhbGwuY2FsbCh2b2lkIDAsYyksbD1sLl9uZXh0Oy0t''@;'; put 'put ''VGJ9KCl9ZmluYWxseXtUYj0wLGZ1bmN0aW9uIGhEdCgpe2Zvcih2YXIgbCxhLGM9UVAsZj0xLzA7YzspYy5fY2FsbD8oZj5jLl90aW1lJiYoZj1jLl90aW1lKSxsPWMsYz1jLl9uZXh0KTooYT1jLl9uZXh0LGMuX25leHQ9bnVsbCxjPWw/bC5fbmV4dD1hOlFQPWEpO0tFPWwsJEooZil9KCks''@;'; put 'put ''RTY9MH19ZnVuY3Rpb24gZER0KCl7dmFyIGw9cUUubm93KCksYz1sLWVGO2M+ZThlJiYodEYtPWMsZUY9bCl9ZnVuY3Rpb24gJEoobCl7VGJ8fChHRSYmKEdFPWNsZWFyVGltZW91dChHRSkpLGwtRTY+MjQ/KGw8MS8wJiYoR0U9c2V0VGltZW91dChyOGUsbC1xRS5ub3coKS10RikpLCRFJiYo''@;'; put 'put ''JEU9Y2xlYXJJbnRlcnZhbCgkRSkpKTooJEV8fChlRj1xRS5ub3coKSwkRT1zZXRJbnRlcnZhbChkRHQsZThlKSksVGI9MSx0OGUocjhlKSkpfWZ1bmN0aW9uIHJGKGwsYyxhKXt2YXIgZj1uZXcgbkY7cmV0dXJuIGYucmVzdGFydChkPT57Zi5zdG9wKCksbChkK2MpfSxjPW51bGw9PWM/MDor''@;'; put 'put ''YyxhKSxmfW5GLnByb3RvdHlwZT1uOGUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuRixyZXN0YXJ0OmZ1bmN0aW9uKGwsYyxhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO2E9KG51bGw9PWE/R0ooKTor''@;'; put 'put ''YSkrKG51bGw9PWM/MDorYyksIXRoaXMuX25leHQmJktFIT09dGhpcyYmKEtFP0tFLl9uZXh0PXRoaXM6UVA9dGhpcyxLRT10aGlzKSx0aGlzLl9jYWxsPWwsdGhpcy5fdGltZT1hLCRKKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9''@;'; put 'put ''MS8wLCRKKCkpfX07dmFyIHBEdD1XSigic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxtRHQ9W10saThlPTAscUo9MixpRj0zLFhKPTUsb0Y9NjtmdW5jdGlvbiBhRihsLGMsYSxmLGQsaCl7dmFyIG09bC5fX3RyYW5zaXRpb247aWYobSl7aWYoYSBpbiBtKXJldHVybn1lbHNl''@;'; put 'put ''IGwuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbiBnRHQobCxjLGEpe3ZhciBkLGY9bC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbShYKXt2YXIgYWUscGUsYmUseGU7aWYoMSE9PWEuc3RhdGUpcmV0dXJuIE8oKTtmb3IoYWUgaW4gZilpZigoeGU9ZlthZV0pLm5hbWU9PT1hLm5hbWUpe2lmKHhl''@;'; put 'put ''LnN0YXRlPT09aUYpcmV0dXJuIHJGKG0pOzQ9PT14ZS5zdGF0ZT8oeGUuc3RhdGU9b0YseGUudGltZXIuc3RvcCgpLHhlLm9uLmNhbGwoImludGVycnVwdCIsbCxsLl9fZGF0YV9fLHhlLmluZGV4LHhlLmdyb3VwKSxkZWxldGUgZlthZV0pOithZTxjJiYoeGUuc3RhdGU9b0YseGUudGltZXIu''@;'; put 'put ''c3RvcCgpLHhlLm9uLmNhbGwoImNhbmNlbCIsbCxsLl9fZGF0YV9fLHhlLmluZGV4LHhlLmdyb3VwKSxkZWxldGUgZlthZV0pfWlmKHJGKGZ1bmN0aW9uKCl7YS5zdGF0ZT09PWlGJiYoYS5zdGF0ZT00LGEudGltZXIucmVzdGFydChfLGEuZGVsYXksYS50aW1lKSxfKFgpKX0pLGEuc3RhdGU9''@;'; put 'put ''cUosYS5vbi5jYWxsKCJzdGFydCIsbCxsLl9fZGF0YV9fLGEuaW5kZXgsYS5ncm91cCksYS5zdGF0ZT09PXFKKXtmb3IoYS5zdGF0ZT1pRixkPW5ldyBBcnJheShiZT1hLnR3ZWVuLmxlbmd0aCksYWU9MCxwZT0tMTthZTxiZTsrK2FlKSh4ZT1hLnR3ZWVuW2FlXS52YWx1ZS5jYWxsKGwsbC5f''@;'; put 'put ''X2RhdGFfXyxhLmluZGV4LGEuZ3JvdXApKSYmKGRbKytwZV09eGUpO2QubGVuZ3RoPXBlKzF9fWZ1bmN0aW9uIF8oWCl7Zm9yKHZhciBhZT1YPGEuZHVyYXRpb24/YS5lYXNlLmNhbGwobnVsbCxYL2EuZHVyYXRpb24pOihhLnRpbWVyLnJlc3RhcnQoTyksYS5zdGF0ZT1YSiwxKSxwZT0tMSxi''@;'; put 'put ''ZT1kLmxlbmd0aDsrK3BlPGJlOylkW3BlXS5jYWxsKGwsYWUpO2Euc3RhdGU9PT1YSiYmKGEub24uY2FsbCgiZW5kIixsLGwuX19kYXRhX18sYS5pbmRleCxhLmdyb3VwKSxPKCkpfWZ1bmN0aW9uIE8oKXtmb3IodmFyIFggaW4gYS5zdGF0ZT1vRixhLnRpbWVyLnN0b3AoKSxkZWxldGUgZltj''@;'; put 'put ''XSxmKXJldHVybjtkZWxldGUgbC5fX3RyYW5zaXRpb259ZltjXT1hLGEudGltZXI9bjhlKGZ1bmN0aW9uIGgoWCl7YS5zdGF0ZT0xLGEudGltZXIucmVzdGFydChtLGEuZGVsYXksYS50aW1lKSxhLmRlbGF5PD1YJiZtKFgtYS5kZWxheSl9LDAsYS50aW1lKX0obCxhLHtuYW1lOmMsaW5kZXg6''@;'; put 'put ''Zixncm91cDpkLG9uOnBEdCx0d2VlbjptRHQsdGltZTpoLnRpbWUsZGVsYXk6aC5kZWxheSxkdXJhdGlvbjpoLmR1cmF0aW9uLGVhc2U6aC5lYXNlLHRpbWVyOm51bGwsc3RhdGU6aThlfSl9ZnVuY3Rpb24gSkoobCxjKXt2YXIgYT1ZZChsLGMpO2lmKGEuc3RhdGU+aThlKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIGF9ZnVuY3Rpb24gUWgobCxjKXt2YXIgYT1ZZChsLGMpO2lmKGEuc3RhdGU+aUYpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIGF9ZnVuY3Rpb24gWWQobCxjKXt2YXIg''@;'; put 'put ''YT1sLl9fdHJhbnNpdGlvbjtpZighYXx8IShhPWFbY10pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gYX1mdW5jdGlvbiBsRihsLGMpe3ZhciBmLGQsbSxhPWwuX190cmFuc2l0aW9uLGg9ITA7aWYoYSl7Zm9yKG0gaW4gYz1udWxsPT1jP251bGw6Yysi''@;'; put 'put ''IixhKShmPWFbbV0pLm5hbWU9PT1jPyhkPWYuc3RhdGU+cUomJmYuc3RhdGU8WEosZi5zdGF0ZT1vRixmLnRpbWVyLnN0b3AoKSxmLm9uLmNhbGwoZD8iaW50ZXJydXB0IjoiY2FuY2VsIixsLGwuX19kYXRhX18sZi5pbmRleCxmLmdyb3VwKSxkZWxldGUgYVttXSk6aD0hMTtoJiZkZWxldGUg''@;'; put 'put ''bC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIGUyKGwsYyl7cmV0dXJuIGw9K2wsYz0rYyxmdW5jdGlvbihhKXtyZXR1cm4gbCooMS1hKStjKmF9fXZhciBzRixhOGU9MTgwL01hdGguUEksUUo9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2Fs''@;'; put 'put ''ZVk6MX07ZnVuY3Rpb24gbDhlKGwsYyxhLGYsZCxoKXt2YXIgbSxfLE87cmV0dXJuKG09TWF0aC5zcXJ0KGwqbCtjKmMpKSYmKGwvPW0sYy89bSksKE89bCphK2MqZikmJihhLT1sKk8sZi09YypPKSwoXz1NYXRoLnNxcnQoYSphK2YqZikpJiYoYS89XyxmLz1fLE8vPV8pLGwqZjxjKmEmJihs''@;'; put 'put ''PS1sLGM9LWMsTz0tTyxtPS1tKSx7dHJhbnNsYXRlWDpkLHRyYW5zbGF0ZVk6aCxyb3RhdGU6TWF0aC5hdGFuMihjLGwpKmE4ZSxza2V3WDpNYXRoLmF0YW4oTykqYThlLHNjYWxlWDptLHNjYWxlWTpffX1mdW5jdGlvbiBzOGUobCxjLGEsZil7ZnVuY3Rpb24gZChYKXtyZXR1cm4gWC5sZW5n''@;'; put 'put ''dGg/WC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKFgsYWUpe3ZhciBwZT1bXSxiZT1bXTtyZXR1cm4gWD1sKFgpLGFlPWwoYWUpLGZ1bmN0aW9uIGgoWCxhZSxwZSxiZSx4ZSxWZSl7aWYoWCE9PXBlfHxhZSE9PWJlKXt2YXIgWmU9eGUucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxjLG51''@;'; put 'put ''bGwsYSk7VmUucHVzaCh7aTpaZS00LHg6ZTIoWCxwZSl9LHtpOlplLTIseDplMihhZSxiZSl9KX1lbHNlKHBlfHxiZSkmJnhlLnB1c2goInRyYW5zbGF0ZSgiK3BlK2MrYmUrYSl9KFgudHJhbnNsYXRlWCxYLnRyYW5zbGF0ZVksYWUudHJhbnNsYXRlWCxhZS50cmFuc2xhdGVZLHBlLGJlKSxm''@;'; put 'put ''dW5jdGlvbiBtKFgsYWUscGUsYmUpe1ghPT1hZT8oWC1hZT4xODA/YWUrPTM2MDphZS1YPjE4MCYmKFgrPTM2MCksYmUucHVzaCh7aTpwZS5wdXNoKGQocGUpKyJyb3RhdGUoIixudWxsLGYpLTIseDplMihYLGFlKX0pKTphZSYmcGUucHVzaChkKHBlKSsicm90YXRlKCIrYWUrZil9KFgucm90''@;'; put 'put ''YXRlLGFlLnJvdGF0ZSxwZSxiZSksZnVuY3Rpb24gXyhYLGFlLHBlLGJlKXtYIT09YWU/YmUucHVzaCh7aTpwZS5wdXNoKGQocGUpKyJza2V3WCgiLG51bGwsZiktMix4OmUyKFgsYWUpfSk6YWUmJnBlLnB1c2goZChwZSkrInNrZXdYKCIrYWUrZil9KFguc2tld1gsYWUuc2tld1gscGUsYmUp''@;'; put 'put ''LGZ1bmN0aW9uIE8oWCxhZSxwZSxiZSx4ZSxWZSl7aWYoWCE9PXBlfHxhZSE9PWJlKXt2YXIgWmU9eGUucHVzaChkKHhlKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7VmUucHVzaCh7aTpaZS00LHg6ZTIoWCxwZSl9LHtpOlplLTIseDplMihhZSxiZSl9KX1lbHNlKDEhPT1wZXx8MSE9''@;'; put 'put ''PWJlKSYmeGUucHVzaChkKHhlKSsic2NhbGUoIitwZSsiLCIrYmUrIikiKX0oWC5zY2FsZVgsWC5zY2FsZVksYWUuc2NhbGVYLGFlLnNjYWxlWSxwZSxiZSksWD1hZT1udWxsLGZ1bmN0aW9uKHhlKXtmb3IodmFyIGx0LFZlPS0xLFplPWJlLmxlbmd0aDsrK1ZlPFplOylwZVsobHQ9YmVbVmVd''@;'; put 'put ''KS5pXT1sdC54KHhlKTtyZXR1cm4gcGUuam9pbigiIil9fX12YXIgX0R0PXM4ZShmdW5jdGlvbiB5RHQobCl7Y29uc3QgYz1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIERPTU1hdHJpeD9ET01NYXRyaXg6V2ViS2l0Q1NTTWF0cml4KShsKyIiKTtyZXR1cm4gYy5pc0lkZW50aXR5P1FKOmw4ZShj''@;'; put 'put ''LmEsYy5iLGMuYyxjLmQsYy5lLGMuZil9LCJweCwgIiwicHgpIiwiZGVnKSIpLHU4ZT1zOGUoZnVuY3Rpb24gYkR0KGwpe3JldHVybiBudWxsIT1sJiYoc0Z8fChzRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxzRi5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoInRyYW5zZm9ybSIsbCksbD1zRi50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9sOGUoKGw9bC5tYXRyaXgpLmEsbC5iLGwuYyxsLmQsbC5lLGwuZik6UUp9LCIsICIsIikiLCIpIik7ZnVuY3Rpb24gd0R0KGwsYyl7dmFyIGEsZjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ZD1RaCh0aGlzLGwpLGg9ZC50d2VlbjtpZihoIT09YSlmb3IodmFyIG09MCxfPShmPWE9aCkubGVuZ3RoO208XzsrK20paWYoZlttXS5uYW1lPT09Yyl7KGY9Zi5zbGljZSgpKS5zcGxpY2UobSwxKTticmVha31kLnR3ZWVuPWZ9fWZ1bmN0aW9uIENEdChsLGMsYSl7dmFyIGYsZDtpZigiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgYSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9UWgodGhpcyxsKSxtPWgudHdlZW47aWYobSE9PWYpe2Q9KGY9bSkuc2xpY2UoKTtmb3IodmFyIF89e25hbWU6Yyx2YWx1ZTphfSxPPTAsWD1kLmxlbmd0aDtPPFg7KytPKWlmKGRbT10ubmFt''@;'; put 'put ''ZT09PWMpe2RbT109XzticmVha31PPT09WCYmZC5wdXNoKF8pfWgudHdlZW49ZH19ZnVuY3Rpb24gZVEobCxjLGEpe3ZhciBmPWwuX2lkO3JldHVybiBsLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1RaCh0aGlzLGYpOyhkLnZhbHVlfHwoZC52YWx1ZT17fSkpW2NdPWEuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfSksZnVuY3Rpb24oZCl7cmV0dXJuIFlkKGQsZikudmFsdWVbY119fWZ1bmN0aW9uIHRRKGwsYyxhKXtsLnByb3RvdHlwZT1jLnByb3RvdHlwZT1hLGEuY29uc3RydWN0b3I9bH1mdW5jdGlvbiBjOGUobCxjKXt2YXIgYT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtmb3IodmFy''@;'; put 'put ''IGYgaW4gYylhW2ZdPWNbZl07cmV0dXJuIGF9ZnVuY3Rpb24gWEUoKXt9dmFyIHVGPTEvLjcsT2I9IlxccyooWystXT9cXGQrKVxccyoiLFFFPSJcXHMqKFsrLV0/KD86XFxkKlxcLik/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix0Mj0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCso''@;'; put 'put ''PzpbZUVdWystXT9cXGQrKT8pJVxccyoiLE1EdD0vXiMoWzAtOWEtZl17Myw4fSkkLyxrRHQ9bmV3IFJlZ0V4cChgXnJnYlxcKCR7T2J9LCR7T2J9LCR7T2J9XFwpJGApLEVEdD1uZXcgUmVnRXhwKGBecmdiXFwoJHt0Mn0sJHt0Mn0sJHt0Mn1cXCkkYCkseER0PW5ldyBSZWdFeHAoYF5yZ2Jh''@;'; put 'put ''XFwoJHtPYn0sJHtPYn0sJHtPYn0sJHtRRX1cXCkkYCksQUR0PW5ldyBSZWdFeHAoYF5yZ2JhXFwoJHt0Mn0sJHt0Mn0sJHt0Mn0sJHtRRX1cXCkkYCksVER0PW5ldyBSZWdFeHAoYF5oc2xcXCgke1FFfSwke3QyfSwke3QyfVxcKSRgKSxPRHQ9bmV3IFJlZ0V4cChgXmhzbGFcXCgke1FFfSwk''@;'; put 'put ''e3QyfSwke3QyfSwke1FFfVxcKSRgKSxmOGU9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1v''@;'; put 'put ''bmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5''@;'; put 'put ''ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0''@;'; put 'put ''MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQz''@;'; put 'put ''NDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6''@;'; put 'put ''MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQy''@;'; put 'put ''MTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0''@;'; put 'put ''MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheTox''@;'; put 'put ''Mzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3Jl''@;'; put 'put ''eTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1''@;'; put 'put ''ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3''@;'; put 'put ''MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5n''@;'; put 'put ''ZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjox''@;'; put 'put ''Njc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJy''@;'; put 'put ''b3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0''@;'; put 'put ''NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVh''@;'; put 'put ''dDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gZDhlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gaDhlKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9y''@;'; put 'put ''bWF0UmdiKCl9ZnVuY3Rpb24geDYobCl7dmFyIGMsYTtyZXR1cm4gbD0obCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGM9TUR0LmV4ZWMobCkpPyhhPWNbMV0ubGVuZ3RoLGM9cGFyc2VJbnQoY1sxXSwxNiksNj09PWE/cDhlKGMpOjM9PT1hP25ldyBLMChjPj44JjE1fGM+PjQmMjQwLGM+''@;'; put 'put ''PjQmMTV8MjQwJmMsKDE1JmMpPDw0fDE1JmMsMSk6OD09PWE/Y0YoYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwoMjU1JmMpLzI1NSk6ND09PWE/Y0YoYz4+MTImMTV8Yz4+OCYyNDAsYz4+OCYxNXxjPj40JjI0MCxjPj40JjE1fDI0MCZjLCgoMTUmYyk8PDR8MTUmYykvMjU1KTpudWxs''@;'; put 'put ''KTooYz1rRHQuZXhlYyhsKSk/bmV3IEswKGNbMV0sY1syXSxjWzNdLDEpOihjPUVEdC5leGVjKGwpKT9uZXcgSzAoMjU1KmNbMV0vMTAwLDI1NSpjWzJdLzEwMCwyNTUqY1szXS8xMDAsMSk6KGM9eER0LmV4ZWMobCkpP2NGKGNbMV0sY1syXSxjWzNdLGNbNF0pOihjPUFEdC5leGVjKGwpKT9j''@;'; put 'put ''RigyNTUqY1sxXS8xMDAsMjU1KmNbMl0vMTAwLDI1NSpjWzNdLzEwMCxjWzRdKTooYz1URHQuZXhlYyhsKSk/djhlKGNbMV0sY1syXS8xMDAsY1szXS8xMDAsMSk6KGM9T0R0LmV4ZWMobCkpP3Y4ZShjWzFdLGNbMl0vMTAwLGNbM10vMTAwLGNbNF0pOmY4ZS5oYXNPd25Qcm9wZXJ0eShsKT9w''@;'; put 'put ''OGUoZjhlW2xdKToidHJhbnNwYXJlbnQiPT09bD9uZXcgSzAoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBwOGUobCl7cmV0dXJuIG5ldyBLMChsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsMSl9ZnVuY3Rpb24gY0YobCxjLGEsZil7cmV0dXJuIGY8PTAmJihsPWM9YT1OYU4pLG5ldyBL''@;'; put 'put ''MChsLGMsYSxmKX1mdW5jdGlvbiBmRihsLGMsYSxmKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZnVuY3Rpb24gUkR0KGwpe3JldHVybiBsIGluc3RhbmNlb2YgWEV8fChsPXg2KGwpKSxsP25ldyBLMCgobD1sLnJnYigpKS5yLGwuZyxsLmIsbC5vcGFjaXR5KTpuZXcgSzB9KGwpOm5l''@;'; put 'put ''dyBLMChsLGMsYSxmPz8xKX1mdW5jdGlvbiBLMChsLGMsYSxmKXt0aGlzLnI9K2wsdGhpcy5nPStjLHRoaXMuYj0rYSx0aGlzLm9wYWNpdHk9K2Z9ZnVuY3Rpb24gbThlKCl7cmV0dXJuYCMke1Q2KHRoaXMucil9JHtUNih0aGlzLmcpfSR7VDYodGhpcy5iKX1gfWZ1bmN0aW9uIGc4ZSgpe2Nv''@;'; put 'put ''bnN0IGw9ZEYodGhpcy5vcGFjaXR5KTtyZXR1cm5gJHsxPT09bD8icmdiKCI6InJnYmEoIn0ke0E2KHRoaXMucil9LCAke0E2KHRoaXMuZyl9LCAke0E2KHRoaXMuYil9JHsxPT09bD8iKSI6YCwgJHtsfSlgfWB9ZnVuY3Rpb24gZEYobCl7cmV0dXJuIGlzTmFOKGwpPzE6TWF0aC5tYXgoMCxN''@;'; put 'put ''YXRoLm1pbigxLGwpKX1mdW5jdGlvbiBBNihsKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChsKXx8MCkpfWZ1bmN0aW9uIFQ2KGwpe3JldHVybigobD1BNihsKSk8MTY/IjAiOiIiKStsLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiB2OGUobCxjLGEsZil7cmV0dXJu''@;'; put 'put ''IGY8PTA/bD1jPWE9TmFOOmE8PTB8fGE+PTE/bD1jPU5hTjpjPD0wJiYobD1OYU4pLG5ldyBXZChsLGMsYSxmKX1mdW5jdGlvbiB5OGUobCl7aWYobCBpbnN0YW5jZW9mIFdkKXJldHVybiBuZXcgV2QobC5oLGwucyxsLmwsbC5vcGFjaXR5KTtpZihsIGluc3RhbmNlb2YgWEV8fChsPXg2KGwp''@;'; put 'put ''KSwhbClyZXR1cm4gbmV3IFdkO2lmKGwgaW5zdGFuY2VvZiBXZClyZXR1cm4gbDt2YXIgYz0obD1sLnJnYigpKS5yLzI1NSxhPWwuZy8yNTUsZj1sLmIvMjU1LGQ9TWF0aC5taW4oYyxhLGYpLGg9TWF0aC5tYXgoYyxhLGYpLG09TmFOLF89aC1kLE89KGgrZCkvMjtyZXR1cm4gXz8obT1jPT09''@;'; put 'put ''aD8oYS1mKS9fKzYqKGE8Zik6YT09PWg/KGYtYykvXysyOihjLWEpL18rNCxfLz1PPC41P2grZDoyLWgtZCxtKj02MCk6Xz1PPjAmJk88MT8wOm0sbmV3IFdkKG0sXyxPLGwub3BhY2l0eSl9ZnVuY3Rpb24gV2QobCxjLGEsZil7dGhpcy5oPStsLHRoaXMucz0rYyx0aGlzLmw9K2EsdGhpcy5v''@;'; put 'put ''cGFjaXR5PStmfWZ1bmN0aW9uIGI4ZShsKXtyZXR1cm4obD0obHx8MCklMzYwKTwwP2wrMzYwOmx9ZnVuY3Rpb24gaEYobCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSxsfHwwKSl9ZnVuY3Rpb24gblEobCxjLGEpe3JldHVybiAyNTUqKGw8NjA/YysoYS1jKSpsLzYwOmw8MTgwP2E6''@;'; put 'put ''bDwyNDA/YysoYS1jKSooMjQwLWwpLzYwOmMpfWZ1bmN0aW9uIF84ZShsLGMsYSxmLGQpe3ZhciBoPWwqbCxtPWgqbDtyZXR1cm4oKDEtMypsKzMqaC1tKSpjKyg0LTYqaCszKm0pKmErKDErMypsKzMqaC0zKm0pKmYrbSpkKS82fXRRKFhFLHg2LHtjb3B5KGwpe3JldHVybiBPYmplY3QuYXNz''@;'; put 'put ''aWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsbCl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmQ4ZSxmb3JtYXRIZXg6ZDhlLGZvcm1hdEhleDg6ZnVuY3Rpb24gRER0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4OCgpfSxmb3Jt''@;'; put 'put ''YXRIc2w6ZnVuY3Rpb24gSUR0KCl7cmV0dXJuIHk4ZSh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOmg4ZSx0b1N0cmluZzpoOGV9KSx0UShLMCxmRixjOGUoWEUse2JyaWdodGVyKGwpe3JldHVybiBsPW51bGw9PWw/dUY6TWF0aC5wb3codUYsbCksbmV3IEswKHRoaXMucipsLHRoaXMu''@;'; put 'put ''ZypsLHRoaXMuYipsLHRoaXMub3BhY2l0eSl9LGRhcmtlcihsKXtyZXR1cm4gbD1udWxsPT1sPy43Ok1hdGgucG93KC43LGwpLG5ldyBLMCh0aGlzLnIqbCx0aGlzLmcqbCx0aGlzLmIqbCx0aGlzLm9wYWNpdHkpfSxyZ2IoKXtyZXR1cm4gdGhpc30sY2xhbXAoKXtyZXR1cm4gbmV3IEswKEE2''@;'; put 'put ''KHRoaXMuciksQTYodGhpcy5nKSxBNih0aGlzLmIpLGRGKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0''@;'; put 'put ''eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6bThlLGZvcm1hdEhleDptOGUsZm9ybWF0SGV4ODpmdW5jdGlvbiBMRHQoKXtyZXR1cm5gIyR7VDYodGhpcy5yKX0ke1Q2KHRoaXMuZyl9JHtUNih0aGlzLmIpfSR7VDYoMjU1Kihpc05hTih0aGlzLm9wYWNpdHkpPzE6dGhpcy5vcGFjaXR5KSl9YH0s''@;'; put 'put ''Zm9ybWF0UmdiOmc4ZSx0b1N0cmluZzpnOGV9KSksdFEoV2QsZnVuY3Rpb24gUER0KGwsYyxhLGYpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD95OGUobCk6bmV3IFdkKGwsYyxhLGY/PzEpfSxjOGUoWEUse2JyaWdodGVyKGwpe3JldHVybiBsPW51bGw9PWw/dUY6TWF0aC5wb3codUYs''@;'; put 'put ''bCksbmV3IFdkKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmwsdGhpcy5vcGFjaXR5KX0sZGFya2VyKGwpe3JldHVybiBsPW51bGw9PWw/Ljc6TWF0aC5wb3coLjcsbCksbmV3IFdkKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmwsdGhpcy5vcGFjaXR5KX0scmdiKCl7dmFyIGw9dGhpcy5oJTM2MCszNjAq''@;'; put 'put ''KHRoaXMuaDwwKSxjPWlzTmFOKGwpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLGE9dGhpcy5sLGY9YSsoYTwuNT9hOjEtYSkqYyxkPTIqYS1mO3JldHVybiBuZXcgSzAoblEobD49MjQwP2wtMjQwOmwrMTIwLGQsZiksblEobCxkLGYpLG5RKGw8MTIwP2wrMjQwOmwtMTIwLGQsZiksdGhpcy5v''@;'; put 'put ''cGFjaXR5KX0sY2xhbXAoKXtyZXR1cm4gbmV3IFdkKGI4ZSh0aGlzLmgpLGhGKHRoaXMucyksaEYodGhpcy5sKSxkRih0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYm''@;'; put 'put ''MDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbCgpe2NvbnN0IGw9ZEYodGhpcy5vcGFjaXR5KTtyZXR1cm5gJHsxPT09bD8iaHNsKCI6ImhzbGEoIn0ke2I4ZSh0aGlzLmgpfSwgJHsxMDAqaEYodGhpcy5zKX0lLCAkezEwMCpoRih0aGlzLmwpfSUkezE9PT1sPyIp''@;'; put 'put ''IjpgLCAke2x9KWB9YH19KSk7Y29uc3QgclE9bD0+KCk9Pmw7ZnVuY3Rpb24gQzhlKGwsYyl7dmFyIGE9Yy1sO3JldHVybiBhP2Z1bmN0aW9uIHc4ZShsLGMpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gbCthKmN9fShsLGEpOnJRKGlzTmFOKGwpP2M6bCl9Y29uc3QgcEY9ZnVuY3Rpb24g''@;'; put 'put ''bChjKXt2YXIgYT1mdW5jdGlvbiBWRHQobCl7cmV0dXJuIDE9PShsPStsKT9DOGU6ZnVuY3Rpb24oYyxhKXtyZXR1cm4gYS1jP2Z1bmN0aW9uIE5EdChsLGMsYSl7cmV0dXJuIGw9TWF0aC5wb3cobCxhKSxjPU1hdGgucG93KGMsYSktbCxhPTEvYSxmdW5jdGlvbihmKXtyZXR1cm4gTWF0aC5w''@;'; put 'put ''b3cobCtmKmMsYSl9fShjLGEsbCk6clEoaXNOYU4oYyk/YTpjKX19KGMpO2Z1bmN0aW9uIGYoZCxoKXt2YXIgbT1hKChkPWZGKGQpKS5yLChoPWZGKGgpKS5yKSxfPWEoZC5nLGguZyksTz1hKGQuYixoLmIpLFg9QzhlKGQub3BhY2l0eSxoLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihhZSl7''@;'; put 'put ''cmV0dXJuIGQucj1tKGFlKSxkLmc9XyhhZSksZC5iPU8oYWUpLGQub3BhY2l0eT1YKGFlKSxkKyIifX1yZXR1cm4gZi5nYW1tYT1sLGZ9KDEpO2Z1bmN0aW9uIFM4ZShsKXtyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIG0sXyxhPWMubGVuZ3RoLGY9bmV3IEFycmF5KGEpLGQ9bmV3IEFycmF5KGEp''@;'; put 'put ''LGg9bmV3IEFycmF5KGEpO2ZvcihtPTA7bTxhOysrbSlfPWZGKGNbbV0pLGZbbV09Xy5yfHwwLGRbbV09Xy5nfHwwLGhbbV09Xy5ifHwwO3JldHVybiBmPWwoZiksZD1sKGQpLGg9bChoKSxfLm9wYWNpdHk9MSxmdW5jdGlvbihPKXtyZXR1cm4gXy5yPWYoTyksXy5nPWQoTyksXy5iPWgoTyks''@;'; put 'put ''XysiIn19fVM4ZShmdW5jdGlvbiBGRHQobCl7dmFyIGM9bC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGY9YTw9MD9hPTA6YT49MT8oYT0xLGMtMSk6TWF0aC5mbG9vcihhKmMpLGQ9bFtmXSxoPWxbZisxXTtyZXR1cm4gXzhlKChhLWYvYykqYyxmPjA/bFtmLTFdOjIqZC1oLGQs''@;'; put 'put ''aCxmPGMtMT9sW2YrMl06MipoLWQpfX0pLFM4ZShmdW5jdGlvbiBIRHQobCl7dmFyIGM9bC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBmPU1hdGguZmxvb3IoKChhJT0xKTwwPysrYTphKSpjKTtyZXR1cm4gXzhlKChhLWYvYykqYyxsWyhmK2MtMSklY10sbFtmJWNdLGxbKGYrMSkl''@;'; put 'put ''Y10sbFsoZisyKSVjXSl9fSk7dmFyIGlRPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxvUT1uZXcgUmVnRXhwKGlRLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIE04ZShsLGMpe3ZhciBmLGQsaCxhPWlRLmxhc3RJbmRleD1vUS5sYXN0SW5kZXg9MCxtPS0xLF89''@;'; put 'put ''W10sTz1bXTtmb3IobCs9IiIsYys9IiI7KGY9aVEuZXhlYyhsKSkmJihkPW9RLmV4ZWMoYykpOykoaD1kLmluZGV4KT5hJiYoaD1jLnNsaWNlKGEsaCksX1ttXT9fW21dKz1oOl9bKyttXT1oKSwoZj1mWzBdKT09PShkPWRbMF0pP19bbV0/X1ttXSs9ZDpfWysrbV09ZDooX1srK21dPW51bGws''@;'; put 'put ''Ty5wdXNoKHtpOm0seDplMihmLGQpfSkpLGE9b1EubGFzdEluZGV4O3JldHVybiBhPGMubGVuZ3RoJiYoaD1jLnNsaWNlKGEpLF9bbV0/X1ttXSs9aDpfWysrbV09aCksXy5sZW5ndGg8Mj9PWzBdP2Z1bmN0aW9uIGpEdChsKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGwoYykrIiJ9fShP''@;'; put 'put ''WzBdLngpOmZ1bmN0aW9uIEJEdChsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbH19KGMpOihjPU8ubGVuZ3RoLGZ1bmN0aW9uKFgpe2Zvcih2YXIgcGUsYWU9MDthZTxjOysrYWUpX1socGU9T1thZV0pLmldPXBlLngoWCk7cmV0dXJuIF8uam9pbigiIil9KX1mdW5jdGlvbiBrOGUobCxj''@;'; put 'put ''KXt2YXIgYTtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBjP2UyOmMgaW5zdGFuY2VvZiB4Nj9wRjooYT14NihjKSk/KGM9YSxwRik6TThlKShsLGMpfWZ1bmN0aW9uIHpEdChsKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShsKX19ZnVuY3Rpb24gVUR0KGwpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsKX19ZnVuY3Rpb24gWkR0KGwsYyxhKXt2YXIgZixoLGQ9YSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbT10aGlzLmdldEF0dHJpYnV0ZShsKTtyZXR1cm4gbT09PWQ/bnVsbDptPT09Zj9oOmg9Yyhm''@;'; put 'put ''PW0sYSl9fWZ1bmN0aW9uIFlEdChsLGMsYSl7dmFyIGYsaCxkPWErIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG09dGhpcy5nZXRBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwpO3JldHVybiBtPT09ZD9udWxsOm09PT1mP2g6aD1jKGY9bSxhKX19ZnVuY3Rpb24gV0R0KGwsYyxhKXt2YXIg''@;'; put 'put ''ZixkLGg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG0sTyxfPWEodGhpcyk7cmV0dXJuIG51bGw9PV8/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZShsKToobT10aGlzLmdldEF0dHJpYnV0ZShsKSk9PT0oTz1fKyIiKT9udWxsOm09PT1mJiZPPT09ZD9oOihkPU8saD1jKGY9bSxfKSl9fWZ1bmN0''@;'; put 'put ''aW9uIEdEdChsLGMsYSl7dmFyIGYsZCxoO3JldHVybiBmdW5jdGlvbigpe3ZhciBtLE8sXz1hKHRoaXMpO3JldHVybiBudWxsPT1fP3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwpOihtPXRoaXMuZ2V0QXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsKSk9PT0o''@;'; put 'put ''Tz1fKyIiKT9udWxsOm09PT1mJiZPPT09ZD9oOihkPU8saD1jKGY9bSxfKSl9fWZ1bmN0aW9uIFhEdChsLGMpe3ZhciBhLGY7ZnVuY3Rpb24gZCgpe3ZhciBoPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBoIT09ZiYmKGE9KGY9aCkmJmZ1bmN0aW9uIHFEdChsLGMpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbihhKXt0aGlzLnNldEF0dHJpYnV0ZU5TKGwuc3BhY2UsbC5sb2NhbCxjLmNhbGwodGhpcyxhKSl9fShsLGgpKSxhfXJldHVybiBkLl92YWx1ZT1jLGR9ZnVuY3Rpb24gSkR0KGwsYyl7dmFyIGEsZjtmdW5jdGlvbiBkKCl7dmFyIGg9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0''@;'; put 'put ''dXJuIGghPT1mJiYoYT0oZj1oKSYmZnVuY3Rpb24gS0R0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3RoaXMuc2V0QXR0cmlidXRlKGwsYy5jYWxsKHRoaXMsYSkpfX0obCxoKSksYX1yZXR1cm4gZC5fdmFsdWU9YyxkfWZ1bmN0aW9uIGVJdChsLGMpe3JldHVybiBmdW5jdGlvbigpe0pKKHRo''@;'; put 'put ''aXMsbCkuZGVsYXk9K2MuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB0SXQobCxjKXtyZXR1cm4gYz0rYyxmdW5jdGlvbigpe0pKKHRoaXMsbCkuZGVsYXk9Y319ZnVuY3Rpb24gckl0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7UWgodGhpcyxsKS5kdXJhdGlvbj0rYy5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGlJdChsLGMpe3JldHVybiBjPStjLGZ1bmN0aW9uKCl7UWgodGhpcyxsKS5kdXJhdGlvbj1jfX12YXIgYkl0PWs2LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBFOGUobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQ''@;'; put 'put ''cm9wZXJ0eShsKX19dmFyIEhJdD0wO2Z1bmN0aW9uIG4yKGwsYyxhLGYpe3RoaXMuX2dyb3Vwcz1sLHRoaXMuX3BhcmVudHM9Yyx0aGlzLl9uYW1lPWEsdGhpcy5faWQ9Zn1mdW5jdGlvbiBhUShsKXtyZXR1cm4gazYoKS50cmFuc2l0aW9uKGwpfWZ1bmN0aW9uIHg4ZSgpe3JldHVybisrSEl0''@;'; put 'put ''fXZhciBLMz1rNi5wcm90b3R5cGU7bjIucHJvdG90eXBlPWFRLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bjIsc2VsZWN0OmZ1bmN0aW9uIHZJdChsKXt2YXIgYz10aGlzLl9uYW1lLGE9dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIGwmJihsPWpKKGwpKTtmb3IodmFyIGY9dGhpcy5fZ3Jv''@;'; put 'put ''dXBzLGQ9Zi5sZW5ndGgsaD1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pZm9yKHZhciBhZSxwZSxfPWZbbV0sTz1fLmxlbmd0aCxYPWhbbV09bmV3IEFycmF5KE8pLGJlPTA7YmU8TzsrK2JlKShhZT1fW2JlXSkmJihwZT1sLmNhbGwoYWUsYWUuX19kYXRhX18sYmUsXykpJiYoIl9fZGF0YV9f''@;'; put 'put ''ImluIGFlJiYocGUuX19kYXRhX189YWUuX19kYXRhX18pLFhbYmVdPXBlLGFGKFhbYmVdLGMsYSxiZSxYLFlkKGFlLGEpKSk7cmV0dXJuIG5ldyBuMihoLHRoaXMuX3BhcmVudHMsYyxhKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIHlJdChsKXt2YXIgYz10aGlzLl9uYW1lLGE9dGhpcy5faWQ7ImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIGwmJihsPVY2ZShsKSk7Zm9yKHZhciBmPXRoaXMuX2dyb3VwcyxkPWYubGVuZ3RoLGg9W10sbT1bXSxfPTA7XzxkOysrXylmb3IodmFyIGFlLE89ZltfXSxYPU8ubGVuZ3RoLHBlPTA7cGU8WDsrK3BlKWlmKGFlPU9bcGVdKXtmb3IodmFyIHhlLGJlPWwuY2FsbChh''@;'; put 'put ''ZSxhZS5fX2RhdGFfXyxwZSxPKSxWZT1ZZChhZSxhKSxaZT0wLGx0PWJlLmxlbmd0aDtaZTxsdDsrK1plKSh4ZT1iZVtaZV0pJiZhRih4ZSxjLGEsWmUsYmUsVmUpO2gucHVzaChiZSksbS5wdXNoKGFlKX1yZXR1cm4gbmV3IG4yKGgsbSxjLGEpfSxzZWxlY3RDaGlsZDpLMy5zZWxlY3RDaGls''@;'; put 'put ''ZCxzZWxlY3RDaGlsZHJlbjpLMy5zZWxlY3RDaGlsZHJlbixmaWx0ZXI6ZnVuY3Rpb24gY0l0KGwpeyJmdW5jdGlvbiIhPXR5cGVvZiBsJiYobD1CNmUobCkpO2Zvcih2YXIgYz10aGlzLl9ncm91cHMsYT1jLmxlbmd0aCxmPW5ldyBBcnJheShhKSxkPTA7ZDxhOysrZClmb3IodmFyIE8saD1j''@;'; put 'put ''W2RdLG09aC5sZW5ndGgsXz1mW2RdPVtdLFg9MDtYPG07KytYKShPPWhbWF0pJiZsLmNhbGwoTyxPLl9fZGF0YV9fLFgsaCkmJl8ucHVzaChPKTtyZXR1cm4gbmV3IG4yKGYsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gZkl0KGwpe2lmKGwuX2lk''@;'; put 'put ''IT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgYz10aGlzLl9ncm91cHMsYT1sLl9ncm91cHMsZj1jLmxlbmd0aCxoPU1hdGgubWluKGYsYS5sZW5ndGgpLG09bmV3IEFycmF5KGYpLF89MDtfPGg7KytfKWZvcih2YXIgYmUsTz1jW19dLFg9YVtfXSxhZT1PLmxlbmd0aCxwZT1t''@;'; put 'put ''W19dPW5ldyBBcnJheShhZSkseGU9MDt4ZTxhZTsrK3hlKShiZT1PW3hlXXx8WFt4ZV0pJiYocGVbeGVdPWJlKTtmb3IoO188ZjsrK18pbVtfXT1jW19dO3JldHVybiBuZXcgbjIobSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24gX0l0KCl7''@;'; put 'put ''cmV0dXJuIG5ldyBiSXQodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIFBJdCgpe2Zvcih2YXIgbD10aGlzLl9uYW1lLGM9dGhpcy5faWQsYT14OGUoKSxmPXRoaXMuX2dyb3VwcyxkPWYubGVuZ3RoLGg9MDtoPGQ7KytoKWZvcih2YXIgTyxtPWZbaF0s''@;'; put 'put ''Xz1tLmxlbmd0aCxYPTA7WDxfOysrWClpZihPPW1bWF0pe3ZhciBhZT1ZZChPLGMpO2FGKE8sbCxhLFgsbSx7dGltZTphZS50aW1lK2FlLmRlbGF5K2FlLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246YWUuZHVyYXRpb24sZWFzZTphZS5lYXNlfSl9cmV0dXJuIG5ldyBuMihmLHRoaXMuX3Bh''@;'; put 'put ''cmVudHMsbCxhKX0sY2FsbDpLMy5jYWxsLG5vZGVzOkszLm5vZGVzLG5vZGU6SzMubm9kZSxzaXplOkszLnNpemUsZW1wdHk6SzMuZW1wdHksZWFjaDpLMy5lYWNoLG9uOmZ1bmN0aW9uIHBJdChsLGMpe3ZhciBhPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/WWQodGhpcy5u''@;'; put 'put ''b2RlKCksYSkub24ub24obCk6dGhpcy5lYWNoKGZ1bmN0aW9uIGhJdChsLGMsYSl7dmFyIGYsZCxoPWZ1bmN0aW9uIGRJdChsKXtyZXR1cm4obCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKGMpe3ZhciBhPWMuaW5kZXhPZigiLiIpO3JldHVybiBhPj0wJiYoYz1j''@;'; put 'put ''LnNsaWNlKDAsYSkpLCFjfHwic3RhcnQiPT09Y30pfShjKT9KSjpRaDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbT1oKHRoaXMsbCksXz1tLm9uO18hPT1mJiYoZD0oZj1fKS5jb3B5KCkpLm9uKGMsYSksbS5vbj1kfX0oYSxsLGMpKX0sYXR0cjpmdW5jdGlvbiAkRHQobCxjKXt2YXIgYT1YUChs''@;'; put 'put ''KSxmPSJ0cmFuc2Zvcm0iPT09YT91OGU6azhlO3JldHVybiB0aGlzLmF0dHJUd2VlbihsLCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhLmxvY2FsP0dEdDpXRHQpKGEsZixlUSh0aGlzLCJhdHRyLiIrbCxjKSk6bnVsbD09Yz8oYS5sb2NhbD9VRHQ6ekR0KShhKTooYS5sb2NhbD9ZRHQ6WkR0KShh''@;'; put 'put ''LGYsYykpfSxhdHRyVHdlZW46ZnVuY3Rpb24gUUR0KGwsYyl7dmFyIGE9ImF0dHIuIitsO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oYT10aGlzLnR3ZWVuKGEpKSYmYS5fdmFsdWU7aWYobnVsbD09YylyZXR1cm4gdGhpcy50d2VlbihhLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVv''@;'; put 'put ''ZiBjKXRocm93IG5ldyBFcnJvcjt2YXIgZj1YUChsKTtyZXR1cm4gdGhpcy50d2VlbihhLChmLmxvY2FsP1hEdDpKRHQpKGYsYykpfSxzdHlsZTpmdW5jdGlvbiBrSXQobCxjLGEpe3ZhciBmPSJ0cmFuc2Zvcm0iPT0obCs9IiIpP19EdDprOGU7cmV0dXJuIG51bGw9PWM/dGhpcy5zdHlsZVR3''@;'; put 'put ''ZWVuKGwsZnVuY3Rpb24gd0l0KGwsYyl7dmFyIGEsZixkO3JldHVybiBmdW5jdGlvbigpe3ZhciBoPUFiKHRoaXMsbCksbT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShsKSxBYih0aGlzLGwpKTtyZXR1cm4gaD09PW0/bnVsbDpoPT09YSYmbT09PWY/ZDpkPWMoYT1oLGY9bSl9fShsLGYp''@;'; put 'put ''KS5vbigiZW5kLnN0eWxlLiIrbCxFOGUobCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBjP3RoaXMuc3R5bGVUd2VlbihsLGZ1bmN0aW9uIFNJdChsLGMsYSl7dmFyIGYsZCxoO3JldHVybiBmdW5jdGlvbigpe3ZhciBtPUFiKHRoaXMsbCksXz1hKHRoaXMpLE89XysiIjtyZXR1cm4gbnVsbD09XyYm''@;'; put 'put ''KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobCksTz1fPUFiKHRoaXMsbCkpLG09PT1PP251bGw6bT09PWYmJk89PT1kP2g6KGQ9TyxoPWMoZj1tLF8pKX19KGwsZixlUSh0aGlzLCJzdHlsZS4iK2wsYykpKS5lYWNoKGZ1bmN0aW9uIE1JdChsLGMpe3ZhciBhLGYsZCxfLGg9InN0eWxlLiIr''@;'; put 'put ''YyxtPSJlbmQuIitoO3JldHVybiBmdW5jdGlvbigpe3ZhciBPPVFoKHRoaXMsbCksWD1PLm9uLGFlPW51bGw9PU8udmFsdWVbaF0/X3x8KF89RThlKGMpKTp2b2lkIDA7KFghPT1hfHxkIT09YWUpJiYoZj0oYT1YKS5jb3B5KCkpLm9uKG0sZD1hZSksTy5vbj1mfX0odGhpcy5faWQsbCkpOnRo''@;'; put 'put ''aXMuc3R5bGVUd2VlbihsLGZ1bmN0aW9uIENJdChsLGMsYSl7dmFyIGYsaCxkPWErIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG09QWIodGhpcyxsKTtyZXR1cm4gbT09PWQ/bnVsbDptPT09Zj9oOmg9YyhmPW0sYSl9fShsLGYsYyksYSkub24oImVuZC5zdHlsZS4iK2wsbnVsbCl9LHN0eWxl''@;'; put 'put ''VHdlZW46ZnVuY3Rpb24gQUl0KGwsYyxhKXt2YXIgZj0ic3R5bGUuIisobCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oZj10aGlzLnR3ZWVuKGYpKSYmZi5fdmFsdWU7aWYobnVsbD09YylyZXR1cm4gdGhpcy50d2VlbihmLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBj''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihmLGZ1bmN0aW9uIHhJdChsLGMsYSl7dmFyIGYsZDtmdW5jdGlvbiBoKCl7dmFyIG09Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG0hPT1kJiYoZj0oZD1tKSYmZnVuY3Rpb24gRUl0KGwsYyxhKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oZil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShsLGMuY2FsbCh0aGlzLGYpLGEpfX0obCxtLGEpKSxmfXJldHVybiBoLl92YWx1ZT1jLGh9KGwsYyxhPz8iIikpfSx0ZXh0OmZ1bmN0aW9uIERJdChsKXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIGw/ZnVu''@;'; put 'put ''Y3Rpb24gT0l0KGwpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPWwodGhpcyk7dGhpcy50ZXh0Q29udGVudD1jPz8iIn19KGVRKHRoaXMsInRleHQiLGwpKTpmdW5jdGlvbiBUSXQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1sfX0obnVsbD09bD8iIjpsKyIiKSl9LHRl''@;'; put 'put ''eHRUd2VlbjpmdW5jdGlvbiBMSXQobCl7dmFyIGM9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oYz10aGlzLnR3ZWVuKGMpKSYmYy5fdmFsdWU7aWYobnVsbD09bClyZXR1cm4gdGhpcy50d2VlbihjLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcjtyZXR1cm4gdGhpcy50d2VlbihjLGZ1bmN0aW9uIFJJdChsKXt2YXIgYyxhO2Z1bmN0aW9uIGYoKXt2YXIgZD1sLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZCE9PWEmJihjPShhPWQpJiZmdW5jdGlvbiBJSXQobCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3RoaXMudGV4dENvbnRl''@;'; put 'put ''bnQ9bC5jYWxsKHRoaXMsYyl9fShkKSksY31yZXR1cm4gZi5fdmFsdWU9bCxmfShsKSl9LHJlbW92ZTpmdW5jdGlvbiBnSXQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsZnVuY3Rpb24gbUl0KGwpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtmb3IodmFy''@;'; put 'put ''IGEgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK2EhPT1sKXJldHVybjtjJiZjLnJlbW92ZUNoaWxkKHRoaXMpfX0odGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gU0R0KGwsYyl7dmFyIGE9dGhpcy5faWQ7aWYobCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG0sZj1ZZCh0aGlz''@;'; put 'put ''Lm5vZGUoKSxhKS50d2VlbixkPTAsaD1mLmxlbmd0aDtkPGg7KytkKWlmKChtPWZbZF0pLm5hbWU9PT1sKXJldHVybiBtLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWM/d0R0OkNEdCkoYSxsLGMpKX0sZGVsYXk6ZnVuY3Rpb24gbkl0KGwpe3ZhciBjPXRoaXMu''@;'; put 'put ''X2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGw/ZUl0OnRJdCkoYyxsKSk6WWQodGhpcy5ub2RlKCksYykuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIG9JdChsKXt2YXIgYz10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90''@;'; put 'put ''aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBsP3JJdDppSXQpKGMsbCkpOllkKHRoaXMubm9kZSgpLGMpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIGxJdChsKXt2YXIgYz10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24gYUl0KGwsYyl7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIiE9dHlwZW9mIGMpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe1FoKHRoaXMsbCkuZWFzZT1jfX0oYyxsKSk6WWQodGhpcy5ub2RlKCksYykuZWFzZX0sZWFzZVZhcnlpbmc6ZnVuY3Rpb24gdUl0KGwpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIHNJdChsLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXRocm93IG5ldyBFcnJvcjtRaCh0aGlzLGwpLmVhc2U9YX19KHRoaXMuX2lkLGwpKX0s''@;'; put 'put ''ZW5kOmZ1bmN0aW9uIEZJdCgpe3ZhciBsLGMsYT10aGlzLGY9YS5faWQsZD1hLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oaCxtKXt2YXIgXz17dmFsdWU6bX0sTz17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLWQmJmgoKX19O2EuZWFjaChmdW5jdGlvbigpe3ZhciBYPVFoKHRo''@;'; put 'put ''aXMsZiksYWU9WC5vbjthZSE9PWwmJigoYz0obD1hZSkuY29weSgpKS5fLmNhbmNlbC5wdXNoKF8pLGMuXy5pbnRlcnJ1cHQucHVzaChfKSxjLl8uZW5kLnB1c2goTykpLFgub249Y30pLDA9PT1kJiZoKCl9KX0sW1N5bWJvbC5pdGVyYXRvcl06SzNbU3ltYm9sLml0ZXJhdG9yXX07dmFyIFZJ''@;'; put 'put ''dD17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6ZnVuY3Rpb24gTkl0KGwpe3JldHVybigobCo9Mik8PTE/bCpsKmw6KGwtPTIpKmwqbCsyKS8yfX07ZnVuY3Rpb24gQkl0KGwsYyl7Zm9yKHZhciBhOyEoYT1sLl9fdHJhbnNpdGlvbil8fCEoYT1hW2NdKTspaWYoIShsPWwu''@;'; put 'put ''cGFyZW50Tm9kZSkpdGhyb3cgbmV3IEVycm9yKGB0cmFuc2l0aW9uICR7Y30gbm90IGZvdW5kYCk7cmV0dXJuIGF9azYucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiB2RHQobCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2xGKHRoaXMsbCl9KX0sazYucHJvdG90eXBlLnRyYW5z''@;'; put 'put ''aXRpb249ZnVuY3Rpb24gakl0KGwpe3ZhciBjLGE7bCBpbnN0YW5jZW9mIG4yPyhjPWwuX2lkLGw9bC5fbmFtZSk6KGM9eDhlKCksKGE9Vkl0KS50aW1lPUdKKCksbD1udWxsPT1sP251bGw6bCsiIik7Zm9yKHZhciBmPXRoaXMuX2dyb3VwcyxkPWYubGVuZ3RoLGg9MDtoPGQ7KytoKWZvcih2''@;'; put 'put ''YXIgTyxtPWZbaF0sXz1tLmxlbmd0aCxYPTA7WDxfOysrWCkoTz1tW1hdKSYmYUYoTyxsLGMsWCxtLGF8fEJJdChPLGMpKTtyZXR1cm4gbmV3IG4yKGYsdGhpcy5fcGFyZW50cyxsLGMpfTt2YXIgekl0PVtudWxsXTtjb25zdCBsUT17Y2FwdHVyZTohMCxwYXNzaXZlOiExfTtmdW5jdGlvbiBz''@;'; put 'put ''UShsKXtsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBBOGUobCl7cmV0dXJuKChsPU1hdGguZXhwKGwpKSsxL2wpLzJ9Y29uc3QgS0l0PWZ1bmN0aW9uIGwoYyxhLGYpe2Z1bmN0aW9uIGQoaCxtKXt2YXIgbHQsZHQsXz1oWzBdLE89aFsx''@;'; put 'put ''XSxYPWhbMl0sYmU9bVsyXSx4ZT1tWzBdLV8sVmU9bVsxXS1PLFplPXhlKnhlK1ZlKlZlO2lmKFplPDFlLTEyKWR0PU1hdGgubG9nKGJlL1gpL2MsbHQ9ZnVuY3Rpb24oUW4pe3JldHVybltfK1FuKnhlLE8rUW4qVmUsWCpNYXRoLmV4cChjKlFuKmR0KV19O2Vsc2V7dmFyIGd0PU1hdGguc3Fy''@;'; put 'put ''dChaZSksanQ9KGJlKmJlLVgqWCtmKlplKS8oMipYKmEqZ3QpLHJuPShiZSpiZS1YKlgtZipaZSkvKDIqYmUqYSpndCksWHQ9TWF0aC5sb2coTWF0aC5zcXJ0KGp0Kmp0KzEpLWp0KSx5bj1NYXRoLmxvZyhNYXRoLnNxcnQocm4qcm4rMSktcm4pO2R0PSh5bi1YdCkvYyxsdD1mdW5jdGlvbihR''@;'; put 'put ''bil7dmFyIE9yPVFuKmR0LFZyPUE4ZShYdCksWnI9WC8oYSpndCkqKFZyKmZ1bmN0aW9uICRJdChsKXtyZXR1cm4oKGw9TWF0aC5leHAoMipsKSktMSkvKGwrMSl9KGMqT3IrWHQpLWZ1bmN0aW9uIEdJdChsKXtyZXR1cm4oKGw9TWF0aC5leHAobCkpLTEvbCkvMn0oWHQpKTtyZXR1cm5bXyta''@;'; put 'put ''cip4ZSxPK1pyKlZlLFgqVnIvQThlKGMqT3IrWHQpXX19cmV0dXJuIGx0LmR1cmF0aW9uPTFlMypkdCpjL01hdGguU1FSVDIsbHR9cmV0dXJuIGQucmhvPWZ1bmN0aW9uKGgpe3ZhciBtPU1hdGgubWF4KC4wMDEsK2gpLF89bSptO3JldHVybiBsKG0sXyxfKl8pfSxkfShNYXRoLlNRUlQyLDIs''@;'; put 'put ''NCk7ZnVuY3Rpb24gTzYobCxjKXtpZihsPWZ1bmN0aW9uIHFJdChsKXtsZXQgYztmb3IoO2M9bC5zb3VyY2VFdmVudDspbD1jO3JldHVybiBsfShsKSx2b2lkIDA9PT1jJiYoYz1sLmN1cnJlbnRUYXJnZXQpLGMpe3ZhciBhPWMub3duZXJTVkdFbGVtZW50fHxjO2lmKGEuY3JlYXRlU1ZHUG9p''@;'; put 'put ''bnQpe3ZhciBmPWEuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gZi54PWwuY2xpZW50WCxmLnk9bC5jbGllbnRZLFsoZj1mLm1hdHJpeFRyYW5zZm9ybShjLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsZi55XX1pZihjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIGQ9Yy5nZXRCb3Vu''@;'; put 'put ''ZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bbC5jbGllbnRYLWQubGVmdC1jLmNsaWVudExlZnQsbC5jbGllbnRZLWQudG9wLWMuY2xpZW50VG9wXX19cmV0dXJuW2wucGFnZVgsbC5wYWdlWV19Y29uc3QgbUY9bD0+KCk9Pmw7ZnVuY3Rpb24gWEl0KGwse3NvdXJjZUV2ZW50OmMsdGFyZ2V0OmEs''@;'; put 'put ''dHJhbnNmb3JtOmYsZGlzcGF0Y2g6ZH0pe09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3R5cGU6e3ZhbHVlOmwsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHNvdXJjZUV2ZW50Ont2YWx1ZTpjLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSx0YXJnZXQ6e3ZhbHVl''@;'; put 'put ''OmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHRyYW5zZm9ybTp7dmFsdWU6ZixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sXzp7dmFsdWU6ZH19KX1mdW5jdGlvbiBxMyhsLGMsYSl7dGhpcy5rPWwsdGhpcy54PWMsdGhpcy55PWF9cTMucHJvdG90eXBlPXtjb25zdHJ1''@;'; put 'put ''Y3RvcjpxMyxzY2FsZTpmdW5jdGlvbihsKXtyZXR1cm4gMT09PWw/dGhpczpuZXcgcTModGhpcy5rKmwsdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihsLGMpe3JldHVybiAwPT09bCYwPT09Yz90aGlzOm5ldyBxMyh0aGlzLmssdGhpcy54K3RoaXMuaypsLHRoaXMueSt0aGlz''@;'; put 'put ''LmsqYyl9LGFwcGx5OmZ1bmN0aW9uKGwpe3JldHVybltsWzBdKnRoaXMuayt0aGlzLngsbFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKGwpe3JldHVybiBsKnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbihsKXtyZXR1cm4gbCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6''@;'; put 'put ''ZnVuY3Rpb24obCl7cmV0dXJuWyhsWzBdLXRoaXMueCkvdGhpcy5rLChsWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihsKXtyZXR1cm4obC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbihsKXtyZXR1cm4obC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVu''@;'; put 'put ''Y3Rpb24obCl7cmV0dXJuIGwuY29weSgpLmRvbWFpbihsLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAobC5pbnZlcnQsbCkpfSxyZXNjYWxlWTpmdW5jdGlvbihsKXtyZXR1cm4gbC5jb3B5KCkuZG9tYWluKGwucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChs''@;'; put 'put ''LmludmVydCxsKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBnRj1uZXcgcTMoMSwwLDApO2Z1bmN0aW9uIHZGKGwpe2Zvcig7IWwuX196b29tOylpZighKGw9bC5wYXJlbnROb2Rl''@;'; put 'put ''KSlyZXR1cm4gZ0Y7cmV0dXJuIGwuX196b29tfWZ1bmN0aW9uIHVRKGwpe2wuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gZXgobCl7bC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gSkl0KGwpe3JldHVybiEobC5jdHJs''@;'; put 'put ''S2V5JiYid2hlZWwiIT09bC50eXBlfHxsLmJ1dHRvbil9ZnVuY3Rpb24gUUl0KCl7dmFyIGw9dGhpcztyZXR1cm4gbCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/KGw9bC5vd25lclNWR0VsZW1lbnR8fGwpLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKGw9bC52aWV3Qm94LmJhc2VWYWwpLngs''@;'; put 'put ''bC55XSxbbC54K2wud2lkdGgsbC55K2wuaGVpZ2h0XV06W1swLDBdLFtsLndpZHRoLmJhc2VWYWwudmFsdWUsbC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dOltbMCwwXSxbbC5jbGllbnRXaWR0aCxsLmNsaWVudEhlaWdodF1dfWZ1bmN0aW9uIFQ4ZSgpe3JldHVybiB0aGlzLl9fem9vbXx8Z0Z9''@;'; put 'put ''ZnVuY3Rpb24gZVJ0KGwpe3JldHVybi1sLmRlbHRhWSooMT09PWwuZGVsdGFNb2RlPy4wNTpsLmRlbHRhTW9kZT8xOi4wMDIpKihsLmN0cmxLZXk/MTA6MSl9ZnVuY3Rpb24gdFJ0KCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0''@;'; put 'put ''aW9uIG5SdChsLGMsYSl7dmFyIGY9bC5pbnZlcnRYKGNbMF1bMF0pLWFbMF1bMF0sZD1sLmludmVydFgoY1sxXVswXSktYVsxXVswXSxoPWwuaW52ZXJ0WShjWzBdWzFdKS1hWzBdWzFdLG09bC5pbnZlcnRZKGNbMV1bMV0pLWFbMV1bMV07cmV0dXJuIGwudHJhbnNsYXRlKGQ+Zj8oZitkKS8y''@;'; put 'put ''Ok1hdGgubWluKDAsZil8fE1hdGgubWF4KDAsZCksbT5oPyhoK20pLzI6TWF0aC5taW4oMCxoKXx8TWF0aC5tYXgoMCxtKSl9ZnVuY3Rpb24gTzhlKGwpe3ZhciBjPXt9LGE9bC5ub2RlKCkubm9kZU5hbWU7Yy50YWc9YSwiI3RleHQiPT1hP2MudGV4dD1sLnRleHQoKToiI2NvbW1lbnQiPT1h''@;'; put 'put ''JiYoYy5jb21tZW50PWwudGV4dCgpKSxjLmF0dHJpYnV0ZXM9e307dmFyIGY9bC5ub2RlKCkuYXR0cmlidXRlcztpZihmKWZvcih2YXIgZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgaD1mW2RdO2MuYXR0cmlidXRlc1toLm5hbWVdPWgudmFsdWV9dmFyIGFlLE89bC5ub2RlKCkudHJhbnNmb3Jt''@;'; put 'put ''O2lmKE8mJjAhPU8uYmFzZVZhbC5udW1iZXJPZkl0ZW1zKXt2YXIgWD1PLmJhc2VWYWwuY29uc29saWRhdGUoKS5tYXRyaXg7Yy50cmFuc2xhdGlvbj17eDpYLmUseTpYLmZ9LGMuc2NhbGU9WC5hfWlmKCJlbGxpcHNlIj09YSYmKGMuY2VudGVyPXt4OmMuYXR0cmlidXRlcy5jeCx5OmMuYXR0''@;'; put 'put ''cmlidXRlcy5jeX0pLCJwb2x5Z29uIj09YSl7dmFyIHBlPShhZT1sLmF0dHIoInBvaW50cyIpLnNwbGl0KCIgIikpLm1hcChmdW5jdGlvbihqdCl7cmV0dXJuIGp0LnNwbGl0KCIsIilbMF19KSxiZT1hZS5tYXAoZnVuY3Rpb24oanQpe3JldHVybiBqdC5zcGxpdCgiLCIpWzFdfSkseGU9TWF0''@;'; put 'put ''aC5taW4uYXBwbHkobnVsbCxwZSksVmU9TWF0aC5tYXguYXBwbHkobnVsbCxwZSksWmU9TWF0aC5taW4uYXBwbHkobnVsbCxiZSksbHQ9TWF0aC5tYXguYXBwbHkobnVsbCxiZSk7Yy5iYm94PXt4OnhlLHk6WmUsd2lkdGg6VmUteGUsaGVpZ2h0Omx0LVplfSxjLmNlbnRlcj17eDooeGUrVmUp''@;'; put 'put ''LzIseTooWmUrbHQpLzJ9fSJwYXRoIj09YSYmKChhZT1sLmF0dHIoImQiKS5zcGxpdCgvW0EtWiBdLykpLnNoaWZ0KCkscGU9YWUubWFwKGZ1bmN0aW9uKGlyKXtyZXR1cm4raXIuc3BsaXQoIiwiKVswXX0pLGJlPWFlLm1hcChmdW5jdGlvbihpcil7cmV0dXJuK2lyLnNwbGl0KCIsIilbMV19''@;'; put 'put ''KSx4ZT1NYXRoLm1pbi5hcHBseShudWxsLHBlKSxWZT1NYXRoLm1heC5hcHBseShudWxsLHBlKSxaZT1NYXRoLm1pbi5hcHBseShudWxsLGJlKSxsdD1NYXRoLm1heC5hcHBseShudWxsLGJlKSxjLmJib3g9e3g6eGUseTpaZSx3aWR0aDpWZS14ZSxoZWlnaHQ6bHQtWmV9LGMuY2VudGVyPXt4''@;'; put 'put ''Oih4ZStWZSkvMix5OihaZStsdCkvMn0sYy50b3RhbExlbmd0aD1sLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpKTtyZXR1cm4idGV4dCI9PWEmJihjLmNlbnRlcj17eDpsLmF0dHIoIngiKSx5OmwuYXR0cigieSIpfSksIiN0ZXh0Ij09YT9jLnRleHQ9bC50ZXh0KCk6IiNjb21tZW50Ij09YSYm''@;'; put 'put ''KGMuY29tbWVudD1sLnRleHQoKSksY31mdW5jdGlvbiBENihsKXt2YXIgYz1POGUobCk7cmV0dXJuIGMuY2hpbGRyZW49W10sWUoobC5ub2RlKCkuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbigpe3ZhciBmPUQ2KE9hKHRoaXMpKTtmLnBhcmVudD1jLGMuY2hpbGRyZW4ucHVzaChmKX0pLGN9''@;'; put 'put ''ZnVuY3Rpb24gY1EobCl7cmV0dXJuIiN0ZXh0Ij09bC50YWc/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOiIjY29tbWVudCI9PWwudGFnP2RvY3VtZW50LmNyZWF0ZUNvbW1lbnQobC5jb21tZW50KTpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv''@;'; put 'put ''c3ZnIixsLnRhZyl9ZnVuY3Rpb24gZlEobCl7dmFyIGM9Y1EobCksYT1PYShjKSxmPWwuYXR0cmlidXRlcztmb3IodmFyIGQgb2YgT2JqZWN0LmtleXMoZikpYS5hdHRyKGQsZltkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gRDhlKGwsYyl7dmFyIGE9T2EobC5ub2RlKCkucGFyZW50Tm9kZSksZj1m''@;'; put 'put ''UShjKSxkPWEuaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGZ1bmN0aW9uKCl7cmV0dXJuIGwubm9kZSgpfSk7cmV0dXJuIGwucmVtb3ZlKCksZH1mdW5jdGlvbiBkUShsLGMpeyFmdW5jdGlvbiBpUnQobCxjKXtsLmRhdHVtKGMpLGwuZGF0YShbY10sZnVuY3Rpb24oYSl7cmV0dXJuIGEu''@;'; put 'put ''a2V5fSl9KGwsYyksWUoobC5ub2RlKCkuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihmLGQpe2RRKE9hKHRoaXMpLGMuY2hpbGRyZW5bZF0pfSl9ZnVuY3Rpb24gdHgobCxjPTApe3ZhciBhPU9hKHRoaXMpLGQ9bC5hdHRyaWJ1dGVzLGg9YS5ub2RlKCkuYXR0cmlidXRlcztpZihoKWZvcih2''@;'; put 'put ''YXIgbT0wO208aC5sZW5ndGg7bSsrKXt2YXIgXz1oW21dLE89Xy5uYW1lO2lmKCJ4bWxucyIhPU8uc3BsaXQoIjoiKVswXSYmXy5uYW1lc3BhY2VVUkkpe3ZhciBYPV8ubmFtZXNwYWNlVVJJLnNwbGl0KCIvIik7Tz1YW1gubGVuZ3RoLTFdKyI6IitPfU8gaW4gZHx8KGRbT109bnVsbCl9Zm9y''@;'; put 'put ''KHZhciBwZSBvZiBPYmplY3Qua2V5cyhkKSlhLmF0dHIocGUsZFtwZV0pO2wudGV4dCYmYS50ZXh0KGwudGV4dCksZnVuY3Rpb24gb1J0KGwsYyl7dmFyIGE9bC5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gbC5ub2RlKCkuY2hpbGROb2Rlc30pLGY9KGE9YS5kYXRhKGZ1bmN0aW9uKG0p''@;'; put 'put ''e3JldHVybiBtLmNoaWxkcmVufSxmdW5jdGlvbihtKXtyZXR1cm4gbS50YWcrIi0iK2N9KSkuZW50ZXIoKS5hcHBlbmQoZnVuY3Rpb24obSl7cmV0dXJuIGNRKG0pfSksZD1hLmV4aXQoKTtkPWQucmVtb3ZlKCksYT1mLm1lcmdlKGEpO3ZhciBoPXt9O2EuZWFjaChmdW5jdGlvbihtKXt2YXIg''@;'; put 'put ''Xz1tLnRhZztudWxsPT1oW19dJiYoaFtfXT0wKTt2YXIgTz1oW19dKys7dHguY2FsbCh0aGlzLG0sTyl9KX0oYSxjKX1mdW5jdGlvbiBJOGUobCxjKXt2YXIgbSxhPWM/Yy5sZW5ndGg6MCxmPWw/TWF0aC5taW4oYSxsLmxlbmd0aCk6MCxkPW5ldyBBcnJheShmKSxoPW5ldyBBcnJheShhKTtm''@;'; put 'put ''b3IobT0wO208ZjsrK20pZFttXT15RihsW21dLGNbbV0pO2Zvcig7bTxhOysrbSloW21dPWNbbV07cmV0dXJuIGZ1bmN0aW9uKF8pe2ZvcihtPTA7bTxmOysrbSloW21dPWRbbV0oXyk7cmV0dXJuIGh9fWZ1bmN0aW9uIGFSdChsLGMpe3ZhciBhPW5ldyBEYXRlO3JldHVybiBsPStsLGM9K2Ms''@;'; put 'put ''ZnVuY3Rpb24oZil7cmV0dXJuIGEuc2V0VGltZShsKigxLWYpK2MqZiksYX19ZnVuY3Rpb24gbFJ0KGwsYyl7dmFyIGQsYT17fSxmPXt9O2ZvcihkIGluKG51bGw9PT1sfHwib2JqZWN0IiE9dHlwZW9mIGwpJiYobD17fSksKG51bGw9PT1jfHwib2JqZWN0IiE9dHlwZW9mIGMpJiYoYz17fSks''@;'; put 'put ''YylkIGluIGw/YVtkXT15RihsW2RdLGNbZF0pOmZbZF09Y1tkXTtyZXR1cm4gZnVuY3Rpb24oaCl7Zm9yKGQgaW4gYSlmW2RdPWFbZF0oaCk7cmV0dXJuIGZ9fWZ1bmN0aW9uIHNSdChsLGMpe2N8fChjPVtdKTt2YXIgZCxhPWw/TWF0aC5taW4oYy5sZW5ndGgsbC5sZW5ndGgpOjAsZj1jLnNs''@;'; put 'put ''aWNlKCk7cmV0dXJuIGZ1bmN0aW9uKGgpe2ZvcihkPTA7ZDxhOysrZClmW2RdPWxbZF0qKDEtaCkrY1tkXSpoO3JldHVybiBmfX1mdW5jdGlvbiB5RihsLGMpe3ZhciBmLGE9dHlwZW9mIGM7cmV0dXJuIG51bGw9PWN8fCJib29sZWFuIj09PWE/clEoYyk6KCJudW1iZXIiPT09YT9lMjoic3Ry''@;'; put 'put ''aW5nIj09PWE/KGY9eDYoYykpPyhjPWYscEYpOk04ZTpjIGluc3RhbmNlb2YgeDY/cEY6YyBpbnN0YW5jZW9mIERhdGU/YVJ0OmZ1bmN0aW9uIHVSdChsKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGwpJiYhKGwgaW5zdGFuY2VvZiBEYXRhVmlldyl9KGMpP3NSdDpBcnJheS5pc0FycmF5''@;'; put 'put ''KGMpP0k4ZToiZnVuY3Rpb24iIT10eXBlb2YgYy52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgYy50b1N0cmluZ3x8aXNOYU4oYyk/bFJ0OmUyKShsLGMpfWZ1bmN0aW9uIFI4ZSgpe3ZhciBsPXRoaXMsZj1PYSh0aGlzLl9zZWxlY3Rpb24ubm9kZSgpLnF1ZXJ5U2VsZWN0b3IoInN2ZyIp''@;'; put 'put ''KTtpZigwPT1mLnNpemUoKSlyZXR1cm4gdGhpczt0aGlzLl96b29tU2VsZWN0aW9uPWY7dmFyIGQ9ZnVuY3Rpb24gclJ0KCl7dmFyIGFlLHBlLGJlLGw9Skl0LGM9UUl0LGE9blJ0LGY9ZVJ0LGQ9dFJ0LGg9WzAsMS8wXSxtPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLF89MjUwLE89S0l0LFg9''@;'; put 'put ''V0ooInN0YXJ0Iiwiem9vbSIsImVuZCIpLHhlPTUwMCxWZT0xNTAsWmU9MCxsdD0xMDtmdW5jdGlvbiBkdChFbil7RW4ucHJvcGVydHkoIl9fem9vbSIsVDhlKS5vbigid2hlZWwuem9vbSIsT3Ise3Bhc3NpdmU6ITF9KS5vbigibW91c2Vkb3duLnpvb20iLFZyKS5vbigiZGJsY2xpY2suem9v''@;'; put 'put ''bSIsWnIpLmZpbHRlcihkKS5vbigidG91Y2hzdGFydC56b29tIixpcikub24oInRvdWNobW92ZS56b29tIixzaSkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsQXIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rp''@;'; put 'put ''b24gZ3QoRW4sVHIpe3JldHVybihUcj1NYXRoLm1heChoWzBdLE1hdGgubWluKGhbMV0sVHIpKSk9PT1Fbi5rP0VuOm5ldyBxMyhUcixFbi54LEVuLnkpfWZ1bmN0aW9uIGp0KEVuLFRyLFZuKXt2YXIgY3I9VHJbMF0tVm5bMF0qRW4uayxDcj1UclsxXS1WblsxXSpFbi5rO3JldHVybiBjcj09''@;'; put 'put ''PUVuLngmJkNyPT09RW4ueT9FbjpuZXcgcTMoRW4uayxjcixDcil9ZnVuY3Rpb24gcm4oRW4pe3JldHVyblsoK0VuWzBdWzBdKyArRW5bMV1bMF0pLzIsKCtFblswXVsxXSsgK0VuWzFdWzFdKS8yXX1mdW5jdGlvbiBYdChFbixUcixWbixjcil7RW4ub24oInN0YXJ0Lnpvb20iLGZ1bmN0aW9u''@;'; put 'put ''KCl7eW4odGhpcyxhcmd1bWVudHMpLmV2ZW50KGNyKS5zdGFydCgpfSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIixmdW5jdGlvbigpe3luKHRoaXMsYXJndW1lbnRzKS5ldmVudChjcikuZW5kKCl9KS50d2Vlbigiem9vbSIsZnVuY3Rpb24oKXt2YXIgQ3I9dGhpcyxZcj1hcmd1bWVu''@;'; put 'put ''dHMsU3Q9eW4oQ3IsWXIpLmV2ZW50KGNyKSxGdD1jLmFwcGx5KENyLFlyKSxXdD1udWxsPT1Wbj9ybihGdCk6ImZ1bmN0aW9uIj09dHlwZW9mIFZuP1ZuLmFwcGx5KENyLFlyKTpWbix3bj1NYXRoLm1heChGdFsxXVswXS1GdFswXVswXSxGdFsxXVsxXS1GdFswXVsxXSksU249Q3IuX196b29t''@;'; put 'put ''LGJyPSJmdW5jdGlvbiI9PXR5cGVvZiBUcj9Uci5hcHBseShDcixZcik6VHIsZHI9TyhTbi5pbnZlcnQoV3QpLmNvbmNhdCh3bi9Tbi5rKSxici5pbnZlcnQoV3QpLmNvbmNhdCh3bi9ici5rKSk7cmV0dXJuIGZ1bmN0aW9uKExyKXtpZigxPT09THIpTHI9YnI7ZWxzZXt2YXIgTnI9ZHIoTHIp''@;'; put 'put ''LGRpPXduL05yWzJdO0xyPW5ldyBxMyhkaSxXdFswXS1OclswXSpkaSxXdFsxXS1OclsxXSpkaSl9U3Quem9vbShudWxsLExyKX19KX1mdW5jdGlvbiB5bihFbixUcixWbil7cmV0dXJuIVZuJiZFbi5fX3pvb21pbmd8fG5ldyBRbihFbixUcil9ZnVuY3Rpb24gUW4oRW4sVHIpe3RoaXMudGhh''@;'; put 'put ''dD1Fbix0aGlzLmFyZ3M9VHIsdGhpcy5hY3RpdmU9MCx0aGlzLnNvdXJjZUV2ZW50PW51bGwsdGhpcy5leHRlbnQ9Yy5hcHBseShFbixUciksdGhpcy50YXBzPTB9ZnVuY3Rpb24gT3IoRW4sLi4uVHIpe2lmKGwuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgVm49eW4odGhpcyxUcikuZXZl''@;'; put 'put ''bnQoRW4pLGNyPXRoaXMuX196b29tLENyPU1hdGgubWF4KGhbMF0sTWF0aC5taW4oaFsxXSxjci5rKk1hdGgucG93KDIsZi5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksWXI9TzYoRW4pO2lmKFZuLndoZWVsKShWbi5tb3VzZVswXVswXSE9PVlyWzBdfHxWbi5tb3VzZVswXVsxXSE9PVlyWzFd''@;'; put 'put ''KSYmKFZuLm1vdXNlWzFdPWNyLmludmVydChWbi5tb3VzZVswXT1ZcikpLGNsZWFyVGltZW91dChWbi53aGVlbCk7ZWxzZXtpZihjci5rPT09Q3IpcmV0dXJuO1ZuLm1vdXNlPVtZcixjci5pbnZlcnQoWXIpXSxsRih0aGlzKSxWbi5zdGFydCgpfWV4KEVuKSxWbi53aGVlbD1zZXRUaW1lb3V0''@;'; put 'put ''KGZ1bmN0aW9uIFN0KCl7Vm4ud2hlZWw9bnVsbCxWbi5lbmQoKX0sVmUpLFZuLnpvb20oIm1vdXNlIixhKGp0KGd0KGNyLENyKSxWbi5tb3VzZVswXSxWbi5tb3VzZVsxXSksVm4uZXh0ZW50LG0pKX19ZnVuY3Rpb24gVnIoRW4sLi4uVHIpe2lmKCFiZSYmbC5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cykpe3ZhciBWbj1Fbi5jdXJyZW50VGFyZ2V0LGNyPXluKHRoaXMsVHIsITApLmV2ZW50KEVuKSxDcj1PYShFbi52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGZ1bmN0aW9uIFd0KFNuKXtpZihleChTbiksIWNyLm1vdmVkKXt2YXIgYnI9U24uY2xpZW50WC1TdCxkcj1Tbi5jbGllbnRZLUZ0''@;'; put 'put ''O2NyLm1vdmVkPWJyKmJyK2RyKmRyPlplfWNyLmV2ZW50KFNuKS56b29tKCJtb3VzZSIsYShqdChjci50aGF0Ll9fem9vbSxjci5tb3VzZVswXT1PNihTbixWbiksY3IubW91c2VbMV0pLGNyLmV4dGVudCxtKSl9LCEwKS5vbigibW91c2V1cC56b29tIixmdW5jdGlvbiB3bihTbil7Q3Iub24o''@;'; put 'put ''Im1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbSIsbnVsbCksZnVuY3Rpb24gWUl0KGwsYyl7dmFyIGE9bC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZj1PYShsKS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO2MmJihmLm9uKCJjbGljay5kcmFnIixzUSxsUSksc2V0VGltZW91dChmdW5j''@;'; put 'put ''dGlvbigpe2Yub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gYT9mLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooYS5zdHlsZS5Nb3pVc2VyU2VsZWN0PWEuX19ub3NlbGVjdCxkZWxldGUgYS5fX25vc2VsZWN0KX0oU24udmlldyxjci5tb3ZlZCksZXgo''@;'; put 'put ''U24pLGNyLmV2ZW50KFNuKS5lbmQoKX0sITApLFlyPU82KEVuLFZuKSxTdD1Fbi5jbGllbnRYLEZ0PUVuLmNsaWVudFk7KGZ1bmN0aW9uIFpJdChsKXt2YXIgYz1sLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhPU9hKGwpLm9uKCJkcmFnc3RhcnQuZHJhZyIsc1EsbFEpOyJvbnNlbGVjdHN0''@;'; put 'put ''YXJ0ImluIGM/YS5vbigic2VsZWN0c3RhcnQuZHJhZyIsc1EsbFEpOihjLl9fbm9zZWxlY3Q9Yy5zdHlsZS5Nb3pVc2VyU2VsZWN0LGMuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfSkoRW4udmlldyksdVEoRW4pLGNyLm1vdXNlPVtZcix0aGlzLl9fem9vbS5pbnZlcnQoWXIpXSxsRih0''@;'; put 'put ''aGlzKSxjci5zdGFydCgpfX1mdW5jdGlvbiBacihFbiwuLi5Ucil7aWYobC5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBWbj10aGlzLl9fem9vbSxjcj1PNihFbi5jaGFuZ2VkVG91Y2hlcz9Fbi5jaGFuZ2VkVG91Y2hlc1swXTpFbix0aGlzKSxDcj1Wbi5pbnZlcnQoY3IpLFN0PWEoanQo''@;'; put 'put ''Z3QoVm4sVm4uayooRW4uc2hpZnRLZXk/LjU6MikpLGNyLENyKSxjLmFwcGx5KHRoaXMsVHIpLG0pO2V4KEVuKSxfPjA/T2EodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKF8pLmNhbGwoWHQsU3QsY3IsRW4pOk9hKHRoaXMpLmNhbGwoZHQudHJhbnNmb3JtLFN0LGNyLEVuKX19ZnVuY3Rp''@;'; put 'put ''b24gaXIoRW4sLi4uVHIpe2lmKGwuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgWXIsU3QsRnQsV3QsVm49RW4udG91Y2hlcyxjcj1Wbi5sZW5ndGgsQ3I9eW4odGhpcyxUcixFbi5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1jcikuZXZlbnQoRW4pO2Zvcih1UShFbiksU3Q9MDtTdDxjcjsr''@;'; put 'put ''K1N0KVd0PVtXdD1PNihGdD1WbltTdF0sdGhpcyksdGhpcy5fX3pvb20uaW52ZXJ0KFd0KSxGdC5pZGVudGlmaWVyXSxDci50b3VjaDA/IUNyLnRvdWNoMSYmQ3IudG91Y2gwWzJdIT09V3RbMl0mJihDci50b3VjaDE9V3QsQ3IudGFwcz0wKTooQ3IudG91Y2gwPVd0LFlyPSEwLENyLnRhcHM9''@;'; put 'put ''MSshIWFlKTthZSYmKGFlPWNsZWFyVGltZW91dChhZSkpLFlyJiYoQ3IudGFwczwyJiYocGU9V3RbMF0sYWU9c2V0VGltZW91dChmdW5jdGlvbigpe2FlPW51bGx9LHhlKSksbEYodGhpcyksQ3Iuc3RhcnQoKSl9fWZ1bmN0aW9uIHNpKEVuLC4uLlRyKXtpZih0aGlzLl9fem9vbWluZyl7dmFy''@;'; put 'put ''IFlyLFN0LEZ0LFd0LFZuPXluKHRoaXMsVHIpLmV2ZW50KEVuKSxjcj1Fbi5jaGFuZ2VkVG91Y2hlcyxDcj1jci5sZW5ndGg7Zm9yKGV4KEVuKSxZcj0wO1lyPENyOysrWXIpRnQ9TzYoU3Q9Y3JbWXJdLHRoaXMpLFZuLnRvdWNoMCYmVm4udG91Y2gwWzJdPT09U3QuaWRlbnRpZmllcj9Wbi50''@;'; put 'put ''b3VjaDBbMF09RnQ6Vm4udG91Y2gxJiZWbi50b3VjaDFbMl09PT1TdC5pZGVudGlmaWVyJiYoVm4udG91Y2gxWzBdPUZ0KTtpZihTdD1Wbi50aGF0Ll9fem9vbSxWbi50b3VjaDEpe3ZhciB3bj1Wbi50b3VjaDBbMF0sU249Vm4udG91Y2gwWzFdLGJyPVZuLnRvdWNoMVswXSxkcj1Wbi50b3Vj''@;'; put 'put ''aDFbMV0sTHI9KExyPWJyWzBdLXduWzBdKSpMcisoTHI9YnJbMV0td25bMV0pKkxyLE5yPShOcj1kclswXS1TblswXSkqTnIrKE5yPWRyWzFdLVNuWzFdKSpOcjtTdD1ndChTdCxNYXRoLnNxcnQoTHIvTnIpKSxGdD1bKHduWzBdK2JyWzBdKS8yLCh3blsxXSticlsxXSkvMl0sV3Q9WyhTblsw''@;'; put 'put ''XStkclswXSkvMiwoU25bMV0rZHJbMV0pLzJdfWVsc2V7aWYoIVZuLnRvdWNoMClyZXR1cm47RnQ9Vm4udG91Y2gwWzBdLFd0PVZuLnRvdWNoMFsxXX1Wbi56b29tKCJ0b3VjaCIsYShqdChTdCxGdCxXdCksVm4uZXh0ZW50LG0pKX19ZnVuY3Rpb24gQXIoRW4sLi4uVHIpe2lmKHRoaXMuX196''@;'; put 'put ''b29taW5nKXt2YXIgWXIsU3QsVm49eW4odGhpcyxUcikuZXZlbnQoRW4pLGNyPUVuLmNoYW5nZWRUb3VjaGVzLENyPWNyLmxlbmd0aDtmb3IodVEoRW4pLGJlJiZjbGVhclRpbWVvdXQoYmUpLGJlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiZT1udWxsfSx4ZSksWXI9MDtZcjxDcjsrK1lyKVN0''@;'; put 'put ''PWNyW1lyXSxWbi50b3VjaDAmJlZuLnRvdWNoMFsyXT09PVN0LmlkZW50aWZpZXI/ZGVsZXRlIFZuLnRvdWNoMDpWbi50b3VjaDEmJlZuLnRvdWNoMVsyXT09PVN0LmlkZW50aWZpZXImJmRlbGV0ZSBWbi50b3VjaDE7aWYoVm4udG91Y2gxJiYhVm4udG91Y2gwJiYoVm4udG91Y2gwPVZuLnRv''@;'; put 'put ''dWNoMSxkZWxldGUgVm4udG91Y2gxKSxWbi50b3VjaDApVm4udG91Y2gwWzFdPXRoaXMuX196b29tLmludmVydChWbi50b3VjaDBbMF0pO2Vsc2UgaWYoVm4uZW5kKCksMj09PVZuLnRhcHMmJihTdD1PNihTdCx0aGlzKSxNYXRoLmh5cG90KHBlWzBdLVN0WzBdLHBlWzFdLVN0WzFdKTxsdCkp''@;'; put 'put ''e3ZhciBGdD1PYSh0aGlzKS5vbigiZGJsY2xpY2suem9vbSIpO0Z0JiZGdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX1yZXR1cm4gZHQudHJhbnNmb3JtPWZ1bmN0aW9uKEVuLFRyLFZuLGNyKXt2YXIgQ3I9RW4uc2VsZWN0aW9uP0VuLnNlbGVjdGlvbigpOkVuO0NyLnByb3BlcnR5KCJfX3pv''@;'; put 'put ''b20iLFQ4ZSksRW4hPT1Dcj9YdChFbixUcixWbixjcik6Q3IuaW50ZXJydXB0KCkuZWFjaChmdW5jdGlvbigpe3luKHRoaXMsYXJndW1lbnRzKS5ldmVudChjcikuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIFRyP1RyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpUcikuZW5k''@;'; put 'put ''KCl9KX0sZHQuc2NhbGVCeT1mdW5jdGlvbihFbixUcixWbixjcil7ZHQuc2NhbGVUbyhFbixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9fem9vbS5rKigiZnVuY3Rpb24iPT10eXBlb2YgVHI/VHIuYXBwbHkodGhpcyxhcmd1bWVudHMpOlRyKX0sVm4sY3IpfSxkdC5zY2FsZVRvPWZ1bmN0aW9u''@;'; put 'put ''KEVuLFRyLFZuLGNyKXtkdC50cmFuc2Zvcm0oRW4sZnVuY3Rpb24oKXt2YXIgQ3I9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksWXI9dGhpcy5fX3pvb20sU3Q9bnVsbD09Vm4/cm4oQ3IpOiJmdW5jdGlvbiI9PXR5cGVvZiBWbj9Wbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6Vm4sRnQ9WXIuaW52''@;'; put 'put ''ZXJ0KFN0KSxXdD0iZnVuY3Rpb24iPT10eXBlb2YgVHI/VHIuYXBwbHkodGhpcyxhcmd1bWVudHMpOlRyO3JldHVybiBhKGp0KGd0KFlyLFd0KSxTdCxGdCksQ3IsbSl9LFZuLGNyKX0sZHQudHJhbnNsYXRlQnk9ZnVuY3Rpb24oRW4sVHIsVm4sY3Ipe2R0LnRyYW5zZm9ybShFbixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBhKHRoaXMuX196b29tLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgVHI/VHIuYXBwbHkodGhpcyxhcmd1bWVudHMpOlRyLCJmdW5jdGlvbiI9PXR5cGVvZiBWbj9Wbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6Vm4pLGMuYXBwbHkodGhpcyxhcmd1bWVudHMpLG0pfSxu''@;'; put 'put ''dWxsLGNyKX0sZHQudHJhbnNsYXRlVG89ZnVuY3Rpb24oRW4sVHIsVm4sY3IsQ3Ipe2R0LnRyYW5zZm9ybShFbixmdW5jdGlvbigpe3ZhciBZcj1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxTdD10aGlzLl9fem9vbSxGdD1udWxsPT1jcj9ybihZcik6ImZ1bmN0aW9uIj09dHlwZW9mIGNyP2Ny''@;'; put 'put ''LmFwcGx5KHRoaXMsYXJndW1lbnRzKTpjcjtyZXR1cm4gYShnRi50cmFuc2xhdGUoRnRbMF0sRnRbMV0pLnNjYWxlKFN0LmspLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgVHI/LVRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotVHIsImZ1bmN0aW9uIj09dHlwZW9mIFZuPy1Wbi5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyk6LVZuKSxZcixtKX0sY3IsQ3IpfSxRbi5wcm90b3R5cGU9e2V2ZW50OmZ1bmN0aW9uKEVuKXtyZXR1cm4gRW4mJih0aGlzLnNvdXJjZUV2ZW50PUVuKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy50aGF0Ll9f''@;'; put 'put ''em9vbWluZz10aGlzLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbihFbixUcil7cmV0dXJuIHRoaXMubW91c2UmJiJtb3VzZSIhPT1FbiYmKHRoaXMubW91c2VbMV09VHIuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PUVuJiYodGhp''@;'; put 'put ''cy50b3VjaDBbMV09VHIuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT1FbiYmKHRoaXMudG91Y2gxWzFdPVRyLmludmVydCh0aGlzLnRvdWNoMVswXSkpLHRoaXMudGhhdC5fX3pvb209VHIsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZyx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKEVuKXt2YXIgVHI9T2EodGhpcy50aGF0KS5kYXR1bSgpO1guY2FsbChFbix0aGlzLnRoYXQsbmV3IFhJdChFbix7c291cmNl''@;'; put 'put ''RXZlbnQ6dGhpcy5zb3VyY2VFdmVudCx0YXJnZXQ6ZHQsdHlwZTpFbix0cmFuc2Zvcm06dGhpcy50aGF0Ll9fem9vbSxkaXNwYXRjaDpYfSksVHIpfX0sZHQud2hlZWxEZWx0YT1mdW5jdGlvbihFbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIEVuP0Vu''@;'; put 'put ''Om1GKCtFbiksZHQpOmZ9LGR0LmZpbHRlcj1mdW5jdGlvbihFbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIEVuP0VuOm1GKCEhRW4pLGR0KTpsfSxkdC50b3VjaGFibGU9ZnVuY3Rpb24oRW4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBFbj9FbjptRighIUVuKSxkdCk6ZH0sZHQuZXh0ZW50PWZ1bmN0aW9uKEVuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgRW4/RW46bUYoW1srRW5bMF1bMF0sK0VuWzBdWzFdXSxbK0VuWzFdWzBdLCtFblsxXVsxXV1dKSxkdCk6''@;'; put 'put ''Y30sZHQuc2NhbGVFeHRlbnQ9ZnVuY3Rpb24oRW4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoWzBdPStFblswXSxoWzFdPStFblsxXSxkdCk6W2hbMF0saFsxXV19LGR0LnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbihFbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG1bMF1bMF09K0Vu''@;'; put 'put ''WzBdWzBdLG1bMV1bMF09K0VuWzFdWzBdLG1bMF1bMV09K0VuWzBdWzFdLG1bMV1bMV09K0VuWzFdWzFdLGR0KTpbW21bMF1bMF0sbVswXVsxXV0sW21bMV1bMF0sbVsxXVsxXV1dfSxkdC5jb25zdHJhaW49ZnVuY3Rpb24oRW4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUVuLGR0KTph''@;'; put 'put ''fSxkdC5kdXJhdGlvbj1mdW5jdGlvbihFbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89K0VuLGR0KTpffSxkdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihFbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89RW4sZHQpOk99LGR0Lm9uPWZ1bmN0aW9uKCl7dmFyIEVuPVgub24uYXBwbHko''@;'; put 'put ''WCxhcmd1bWVudHMpO3JldHVybiBFbj09PVg/ZHQ6RW59LGR0LmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24oRW4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhaZT0oRW49K0VuKSpFbixkdCk6TWF0aC5zcXJ0KFplKX0sZHQudGFwRGlzdGFuY2U9ZnVuY3Rpb24oRW4pe3JldHVybiBhcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPyhsdD0rRW4sZHQpOmx0fSxkdH0oKS5zY2FsZUV4dGVudCh0aGlzLl9vcHRpb25zLnpvb21TY2FsZUV4dGVudCkudHJhbnNsYXRlRXh0ZW50KHRoaXMuX29wdGlvbnMuem9vbVRyYW5zbGF0ZUV4dGVudCkuaW50ZXJwb2xhdGUoeUYpLm9uKCJ6b29tIixmdW5jdGlvbiBjKG0p''@;'; put 'put ''e09hKGYubm9kZSgpLnF1ZXJ5U2VsZWN0b3IoImciKSkuYXR0cigidHJhbnNmb3JtIixtLnRyYW5zZm9ybSksbC5fZGlzcGF0Y2guY2FsbCgiem9vbSIsbCl9KTt0aGlzLl96b29tQmVoYXZpb3I9ZDt2YXIgaD1PYShmLm5vZGUoKS5xdWVyeVNlbGVjdG9yKCJnIikpO3JldHVybiBmLmNhbGwo''@;'; put 'put ''ZCksdGhpcy5fYWN0aXZlfHxwUS5jYWxsKHRoaXMsaCksdGhpcy5fb3JpZ2luYWxUcmFuc2Zvcm09dkYoZi5ub2RlKCkpLHRoaXN9ZnVuY3Rpb24gaFEobCl7dmFyIGM9dGhpcy5fdHJhbnNsYXRpb24sYT10aGlzLl9zY2FsZSxmPWwuZGF0dW0oKS50cmFuc2xhdGlvbixkPWwuZGF0dW0oKS5z''@;'; put 'put ''Y2FsZSxoPXZGKHRoaXMuX3pvb21TZWxlY3Rpb24ubm9kZSgpKTtyZXR1cm4gYyYmKGg9KGg9aC5zY2FsZSgxL2EpKS50cmFuc2xhdGUoLWMueCwtYy55KSksKGg9aC50cmFuc2xhdGUoZi54LGYueSkpLnNjYWxlKGQpfWZ1bmN0aW9uIHBRKGwpe3RoaXMuX3pvb21CZWhhdmlvci50cmFuc2Zv''@;'; put 'put ''cm0odGhpcy5fem9vbVNlbGVjdGlvbixoUS5jYWxsKHRoaXMsbCkpLHRoaXMuX3RyYW5zbGF0aW9uPWwuZGF0dW0oKS50cmFuc2xhdGlvbix0aGlzLl9zY2FsZT1sLmRhdHVtKCkuc2NhbGUsdGhpcy5fb3JpZ2luYWxUcmFuc2Zvcm09Z0YudHJhbnNsYXRlKGwuZGF0dW0oKS50cmFuc2xhdGlv''@;'; put 'put ''bi54LGwuZGF0dW0oKS50cmFuc2xhdGlvbi55KS5zY2FsZShsLmRhdHVtKCkuc2NhbGUpfWZ1bmN0aW9uIGdSdChsLGMpe3JldHVybiBmdW5jdGlvbigpe2NvbnN0IGE9bC5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIHlGKFtmWzBdWzBdLGZbMF1bMV1dLFtmWzFdWzBdLGZbMV1bMV1dKX0pO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihmKXtyZXR1cm4gZjwxPyJNIithLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZChmKX0pLmpvaW4oIkwiKTpjfX19ZnVuY3Rpb24gTDhlKGwpe3JldHVybiJlZGdlIj09bC5hdHRyaWJ1dGVzLmNsYXNzfHwiYSI9PWwudGFnJiYiZyI9PWwucGFyZW50LnRhZyYmImVkZ2Ui''@;'; put 'put ''PT1sLnBhcmVudC5wYXJlbnQuYXR0cmlidXRlcy5jbGFzc31mdW5jdGlvbiBQOGUobCl7cmV0dXJuIGwucGFyZW50JiZMOGUobC5wYXJlbnQpfWZ1bmN0aW9uIEY4ZShsKXt2YXIgYz10aGlzLl90cmFuc2l0aW9uLGE9dGhpcy5fb3B0aW9ucy5mYWRlJiZudWxsIT1jLGY9dGhpcy5fb3B0aW9u''@;'; put 'put ''cy50d2VlblBhdGhzLGQ9dGhpcy5fb3B0aW9ucy50d2VlblNoYXBlcyxoPXRoaXMuX29wdGlvbnMuY29udmVydEVxdWFsU2lkZWRQb2x5Z29ucyxtPXRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXMmJm51bGwhPWMsXz10aGlzLl9hdHRyaWJ1dGVyLE89dGhpczt2YXIgcGU9dGhpcy5f''@;'; put 'put ''c2VsZWN0aW9uO2lmKG51bGwhPWMpe3ZhciBiZT10aGlzLl9qb2JzO2lmKE8uX2FjdGl2ZSlyZXR1cm4gYmUucHVzaChudWxsKSx0aGlzO3BlLnRyYW5zaXRpb24oYykudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLm9uKCJlbmQiLGZ1bmN0aW9uKCl7Ty5fYWN0aXZlPSExLDAhPWJlLmxlbmd0''@;'; put 'put ''aCYmKGJlLnNoaWZ0KCksTy5yZW5kZXIoKSl9KSx0aGlzLl9hY3RpdmU9ITB9bnVsbCE9YyYmcGUudHJhbnNpdGlvbihjKS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7Ty5fZGlzcGF0Y2guY2FsbCgidHJhbnNpdGlvblN0YXJ0IixPKX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7Ty5fZGlzcGF0Y2gu''@;'; put 'put ''Y2FsbCgidHJhbnNpdGlvbkVuZCIsTyl9KS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMCkub24oInN0YXJ0IixmdW5jdGlvbigpe08uX2Rpc3BhdGNoLmNhbGwoInJlc3RvcmVFbmQiLE8pLE8uX2Rpc3BhdGNoLmNhbGwoImVuZCIsTyksbCYmbC5jYWxsKE8pfSk7dmFyIHhlPXRoaXMuX2RhdGEs''@;'; put 'put ''VmU9cGUuc2VsZWN0QWxsKCJzdmciKS5kYXRhKFt4ZV0sZnVuY3Rpb24oWmUpe3JldHVybiBaZS5rZXl9KTtyZXR1cm4gVmU9VmUuZW50ZXIoKS5hcHBlbmQoInN2ZyIpLm1lcmdlKFZlKSxmdW5jdGlvbiBhZShaZSl7dmFyIGx0PU9hKHRoaXMpO2lmKCJzdmciPT1aZS50YWcpe3ZhciBkdD1P''@;'; put 'put ''Ll9vcHRpb25zO2lmKG51bGwhPWR0LndpZHRofHxudWxsIT1kdC5oZWlnaHQpe3ZhciBndD1kdC53aWR0aCxqdD1kdC5oZWlnaHQ7bnVsbD09Z3Q/Z3Q9NCpaZS5hdHRyaWJ1dGVzLndpZHRoLnJlcGxhY2UoInB0IiwiIikvMzoobHQuYXR0cigid2lkdGgiLGd0KSxaZS5hdHRyaWJ1dGVzLndp''@;'; put 'put ''ZHRoPWd0KSxudWxsPT1qdD9qdD00KlplLmF0dHJpYnV0ZXMuaGVpZ2h0LnJlcGxhY2UoInB0IiwiIikvMzoobHQuYXR0cigiaGVpZ2h0IixqdCksWmUuYXR0cmlidXRlcy5oZWlnaHQ9anQpLGR0LmZpdHx8KGx0LmF0dHIoInZpZXdCb3giLGAwIDAgJHszKmd0LzQvZHQuc2NhbGV9ICR7Mypq''@;'; put 'put ''dC80L2R0LnNjYWxlfWApLFplLmF0dHJpYnV0ZXMudmlld0JveD1gMCAwICR7MypndC80L2R0LnNjYWxlfSAkezMqanQvNC9kdC5zY2FsZX1gKX0xIT1kdC5zY2FsZSYmKGR0LmZpdHx8bnVsbD09ZHQud2lkdGgmJm51bGw9PWR0LmhlaWdodCkmJihndD1aZS5hdHRyaWJ1dGVzLnZpZXdCb3gu''@;'; put 'put ''c3BsaXQoIiAiKVsyXSxqdD1aZS5hdHRyaWJ1dGVzLnZpZXdCb3guc3BsaXQoIiAiKVszXSxsdC5hdHRyKCJ2aWV3Qm94IixgMCAwICR7Z3QvZHQuc2NhbGV9ICR7anQvZHQuc2NhbGV9YCksWmUuYXR0cmlidXRlcy52aWV3Qm94PWAwIDAgJHtndC9kdC5zY2FsZX0gJHtqdC9kdC5zY2FsZX1g''@;'; put 'put ''KX1fJiZsdC5lYWNoKF8pO3ZhciBybj1aZS50YWcsWHQ9WmUuYXR0cmlidXRlcyx5bj1sdC5ub2RlKCkuYXR0cmlidXRlcztpZih5bilmb3IodmFyIFFuPTA7UW48eW4ubGVuZ3RoO1FuKyspe3ZhciBPcj15bltRbl0sVnI9T3IubmFtZTtpZigieG1sbnMiIT1Wci5zcGxpdCgiOiIpWzBdJiZP''@;'; put 'put ''ci5uYW1lc3BhY2VVUkkpe3ZhciBacj1Pci5uYW1lc3BhY2VVUkkuc3BsaXQoIi8iKTtWcj1acltaci5sZW5ndGgtMV0rIjoiK1ZyfVZyIGluIFh0fHwoWHRbVnJdPW51bGwpfXZhciBzaT0hMSxBcj0hMTtpZihkJiZjKXtpZigoInBvbHlnb24iPT10aGlzLm5vZGVOYW1lfHwiZWxsaXBzZSI9''@;'; put 'put ''PXRoaXMubm9kZU5hbWUpJiZaZS5hbHRlcm5hdGl2ZU9sZCYmKEFyPSEwKSwoInBvbHlnb24iPT1ybnx8ImVsbGlwc2UiPT1ybikmJlplLmFsdGVybmF0aXZlTmV3JiYoc2k9ITApLCJwb2x5Z29uIj09dGhpcy5ub2RlTmFtZSYmInBvbHlnb24iPT1ybiYmWmUuYWx0ZXJuYXRpdmVPbGQpe3Zh''@;'; put 'put ''ciBFbj1POGUobHQpO2lmKCFoKXt2YXIgVm49RW4uYXR0cmlidXRlcy5wb2ludHMuc3BsaXQoIiAiKS5sZW5ndGg7KGNyPVplLmF0dHJpYnV0ZXMucG9pbnRzKS5zcGxpdCgiICIpLmxlbmd0aD09Vm4mJihzaT0hMSxBcj0hMSl9fWlmKEFyKXt2YXIgU3Q9RDhlKGx0LFplLmFsdGVybmF0aXZl''@;'; put 'put ''T2xkKTtTdC5kYXRhKFtaZV0sZnVuY3Rpb24oKXtyZXR1cm4gWmUua2V5fSksbHQ9U3R9c2kmJihybj0icGF0aCIsWHQ9WmUuYWx0ZXJuYXRpdmVOZXcuYXR0cmlidXRlcyl9dmFyIFd0PWx0O2lmKGMmJihXdD1XdC50cmFuc2l0aW9uKGMpLGEmJld0LmZpbHRlcihmdW5jdGlvbihMaSl7cmV0''@;'; put 'put ''dXJuIiMiPT1MaS50YWdbMF0/bnVsbDp0aGlzfSkuc3R5bGUoIm9wYWNpdHkiLDEpLFd0LmZpbHRlcihmdW5jdGlvbihMaSl7cmV0dXJuIiMiPT1MaS50YWdbMF0/bnVsbDp0aGlzfSkub24oImVuZCIsZnVuY3Rpb24oTGkpe09hKHRoaXMpLmF0dHIoInN0eWxlIixMaSYmTGkuYXR0cmlidXRl''@;'; put 'put ''cyYmTGkuYXR0cmlidXRlcy5zdHlsZXx8bnVsbCl9KSksbSYmInBhdGgiPT1ybiYmWmUub2Zmc2V0KXt2YXIgU249WmUudG90YWxMZW5ndGg7bHQuYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsU24rIiAiK1NuKS5hdHRyKCJzdHJva2UtZGFzaG9mZnNldCIsU24pLmF0dHIoInRyYW5zZm9ybSIs''@;'; put 'put ''InRyYW5zbGF0ZSgiK1plLm9mZnNldC54KyIsIitaZS5vZmZzZXQueSsiKSIpLFh0WyJzdHJva2UtZGFzaG9mZnNldCJdPTAsWHQudHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwwKSIsV3QuYXR0cigic3Ryb2tlLWRhc2hvZmZzZXQiLFh0WyJzdHJva2UtZGFzaG9mZnNldCJdKS5hdHRyKCJ0cmFu''@;'; put 'put ''c2Zvcm0iLFh0LnRyYW5zZm9ybSkub24oInN0YXJ0IixmdW5jdGlvbigpe09hKHRoaXMpLnN0eWxlKCJvcGFjaXR5IixudWxsKX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7T2EodGhpcykuYXR0cigic3Ryb2tlLWRhc2hvZmZzZXQiLG51bGwpLmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLG51bGwp''@;'; put 'put ''LmF0dHIoInRyYW5zZm9ybSIsbnVsbCl9KX1pZihtJiYicG9seWdvbiI9PXJuJiZQOGUoWmUpJiZaZS5vZmZzZXQmJiJwYXRoIj09WmUucGFyZW50LmNoaWxkcmVuWzNdLnRhZyl7dmFyIGRyPU9hKGx0Lm5vZGUoKS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoInBhdGgiKSksTHI9ZHIubm9k''@;'; put 'put ''ZSgpLmdldFBvaW50QXRMZW5ndGgoMCksTnI9ZHIubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoWmUudG90YWxMZW5ndGgpLGRpPWRyLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKFplLnRvdGFsTGVuZ3RoLTEpLHFyPTE4MCpNYXRoLmF0YW4yKE5yLnktZGkueSxOci54LWRpLngpL01hdGguUEks''@;'; put 'put ''Umk9THIueC1Oci54K1plLm9mZnNldC54LERvPUxyLnktTnIueStaZS5vZmZzZXQueTtsdC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitSaSsiLCIrRG8rIikiKSxXdC5hdHRyVHdlZW4oInRyYW5zZm9ybSIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oTGkpe3ZhciBaYT1kci5u''@;'; put 'put ''b2RlKCkuZ2V0UG9pbnRBdExlbmd0aChaZS50b3RhbExlbmd0aCpMaSksZHM9ZHIubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoWmUudG90YWxMZW5ndGgqTGkrMSksdmw9MTgwKk1hdGguYXRhbjIoZHMueS1aYS55LGRzLngtWmEueCkvTWF0aC5QSS1xcjtyZXR1cm4idHJhbnNsYXRlKCIrKFJp''@;'; put 'put ''PVphLngtTnIueCtaZS5vZmZzZXQueCooMS1MaSkpKyIsIisoRG89WmEueS1Oci55K1plLm9mZnNldC55KigxLUxpKSkrIikgcm90YXRlKCIrdmwrIiAiK05yLngrIiAiK05yLnkrIikifX0pLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtPYSh0aGlzKS5zdHlsZSgib3BhY2l0eSIsbnVsbCl9KS5v''@;'; put 'put ''bigiZW5kIixmdW5jdGlvbigpe09hKHRoaXMpLmF0dHIoInRyYW5zZm9ybSIsbnVsbCl9KX12YXIgb2E9ZiYmYyYmInBhdGgiPT1ybiYmbnVsbCE9bHQuYXR0cigiZCIpO2Zvcih2YXIga28gb2YgT2JqZWN0LmtleXMoWHQpKXt2YXIgcWk9WHRba29dO2lmKG9hJiYiZCI9PWtvKXt2YXIgY3I7''@;'; put 'put ''KGNyPShaZS5hbHRlcm5hdGl2ZU9sZHx8WmUpLnBvaW50cykmJld0LmF0dHJUd2VlbigiZCIsZ1J0KGNyLHFpKSl9ZWxzZXtpZigidHJhbnNmb3JtIj09a28mJlplLnRyYW5zbGF0aW9uKWlmKGMpe3ZhciB4dD1XdC5vbigiZW5kIik7V3Qub24oInN0YXJ0IixmdW5jdGlvbigpe08uX3pvb21C''@;'; put 'put ''ZWhhdmlvciYmV3QudHdlZW4oImF0dHIudHJhbnNmb3JtIixmdW5jdGlvbigpe3ZhciBMaT10aGlzO3JldHVybiBmdW5jdGlvbihaYSl7TGkuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHU4ZSh2RihPLl96b29tU2VsZWN0aW9uLm5vZGUoKSkudG9TdHJpbmcoKSxoUS5jYWxsKE8sbHQpLnRv''@;'; put 'put ''U3RyaW5nKCkpKFphKSl9fSl9KS5vbigiZW5kIixmdW5jdGlvbigpe3h0LmNhbGwodGhpcyksTy5fem9vbUJlaGF2aW9yJiZwUS5jYWxsKE8sbHQpfSl9ZWxzZSBPLl96b29tQmVoYXZpb3ImJihwUS5jYWxsKE8sbHQpLHFpPWhRLmNhbGwoTyxsdCkudG9TdHJpbmcoKSk7V3QuYXR0cihrbyxx''@;'; put 'put ''aSl9fXNpJiZXdC5vbigiZW5kIixmdW5jdGlvbihMaSxaYSxkcyl7RDhlKFN0PU9hKHRoaXMpLExpKS5kYXRhKFtMaV0sZnVuY3Rpb24oKXtyZXR1cm4gTGkua2V5fSl9KSxaZS50ZXh0JiZXdC50ZXh0KFplLnRleHQpLGZ1bmN0aW9uIFgoWmUpe3ZhciBsdD1aZS5zZWxlY3RBbGwoZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gWmUubm9kZSgpLmNoaWxkTm9kZXN9KSxkdD0obHQ9bHQuZGF0YShmdW5jdGlvbihybil7cmV0dXJuIHJuLmNoaWxkcmVufSxmdW5jdGlvbihybil7cmV0dXJuIHJuLmtleX0pKS5lbnRlcigpLmFwcGVuZChmdW5jdGlvbihybil7dmFyIFh0PWNRKHJuKTtyZXR1cm4iI3Rl''@;'; put 'put ''eHQiPT1ybi50YWcmJmEmJihYdC5ub2RlVmFsdWU9cm4udGV4dCksWHR9KTsoYXx8bSYmTDhlKFplLmRhdHVtKCkpKSYmZHQuZmlsdGVyKGZ1bmN0aW9uKHJuKXtyZXR1cm4iIyI9PXJuLnRhZ1swXT9udWxsOnRoaXN9KS5lYWNoKGZ1bmN0aW9uKHJuKXt2YXIgWHQ9T2EodGhpcyk7Zm9yKHZh''@;'; put 'put ''ciB5biBvZiBPYmplY3Qua2V5cyhybi5hdHRyaWJ1dGVzKSlYdC5hdHRyKHluLHJuLmF0dHJpYnV0ZXNbeW5dKX0pLmZpbHRlcihmdW5jdGlvbihybil7cmV0dXJuInN2ZyI9PXJuLnRhZ3x8ImciPT1ybi50YWc/bnVsbDp0aGlzfSkuc3R5bGUoIm9wYWNpdHkiLDApO3ZhciBqdD1sdC5leGl0''@;'; put 'put ''KCk7XyYmanQuZWFjaChfKSxjJiYoanQ9anQudHJhbnNpdGlvbihjKSxhJiZqdC5maWx0ZXIoZnVuY3Rpb24ocm4pe3JldHVybiIjIj09cm4udGFnWzBdP251bGw6dGhpc30pLnN0eWxlKCJvcGFjaXR5IiwwKSksanQ9anQucmVtb3ZlKCksKGx0PWR0Lm1lcmdlKGx0KSkuZWFjaChhZSl9KGx0''@;'; put 'put ''KX0uY2FsbChWZS5ub2RlKCkseGUpLHRoaXMuX29wdGlvbnMuem9vbSYmIXRoaXMuX3pvb21CZWhhdmlvciYmUjhlLmNhbGwodGhpcyksTy5fZGlzcGF0Y2guY2FsbCgicmVuZGVyRW5kIixPKSxudWxsPT1jJiYodGhpcy5fZGlzcGF0Y2guY2FsbCgiZW5kIix0aGlzKSxsJiZsLmNhbGwodGhp''@;'; put 'put ''cykpLHRoaXN9dkYucHJvdG90eXBlPXEzLnByb3RvdHlwZTt2YXIgU1J0PUFycmF5QnVmZmVyLGx1PVVpbnQ4QXJyYXksYkY9VWludDE2QXJyYXksTVJ0PUludDE2QXJyYXksX0Y9SW50MzJBcnJheSxtUT1mdW5jdGlvbihsLGMsYSl7aWYobHUucHJvdG90eXBlLnNsaWNlKXJldHVybiBsdS5w''@;'; put 'put ''cm90b3R5cGUuc2xpY2UuY2FsbChsLGMsYSk7KG51bGw9PWN8fGM8MCkmJihjPTApLChudWxsPT1hfHxhPmwubGVuZ3RoKSYmKGE9bC5sZW5ndGgpO3ZhciBmPW5ldyBsdShhLWMpO3JldHVybiBmLnNldChsLnN1YmFycmF5KGMsYSkpLGZ9LG54PWZ1bmN0aW9uKGwsYyxhLGYpe2lmKGx1LnBy''@;'; put 'put ''b3RvdHlwZS5maWxsKXJldHVybiBsdS5wcm90b3R5cGUuZmlsbC5jYWxsKGwsYyxhLGYpO2ZvcigobnVsbD09YXx8YTwwKSYmKGE9MCksKG51bGw9PWZ8fGY+bC5sZW5ndGgpJiYoZj1sLmxlbmd0aCk7YTxmOysrYSlsW2FdPWM7cmV0dXJuIGx9LGtSdD1mdW5jdGlvbihsLGMsYSxmKXtpZihs''@;'; put 'put ''dS5wcm90b3R5cGUuY29weVdpdGhpbilyZXR1cm4gbHUucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbChsLGMsYSxmKTtmb3IoKG51bGw9PWF8fGE8MCkmJihhPTApLChudWxsPT1mfHxmPmwubGVuZ3RoKSYmKGY9bC5sZW5ndGgpO2E8ZjspbFtjKytdPWxbYSsrXX0sRVJ0PVsiaW52YWxpZCB6''@;'; put 'put ''c3RkIGRhdGEiLCJ3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpIiwiaW52YWxpZCBibG9jayB0eXBlIiwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoIiwibWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrIiwidW5leHBlY3RlZCBFT0YiXSxDdT1mdW5jdGlvbihsLGMsYSl7dmFyIGY9bmV3''@;'; put 'put ''IEVycm9yKGN8fEVSdFtsXSk7aWYoZi5jb2RlPWwsRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGYsQ3UpLCFhKXRocm93IGY7cmV0dXJuIGZ9LEg4ZT1mdW5jdGlvbihsLGMsYSl7Zm9yKHZhciBmPTAsZD0wO2Y8YTsrK2YpZHw9bFtjKytdPDwoZjw8''@;'; put 'put ''Myk7cmV0dXJuIGR9LHhSdD1mdW5jdGlvbihsLGMpe3ZhciBhLGQ9bFswXXxsWzFdPDw4fGxbMl08PDE2O2lmKDMxMjY1Njg9PWQmJjI1Mz09bFszXSl7dmFyIGg9bFs0XSxtPWg+PjUmMSxfPWg+PjImMSxPPTMmaCxYPWg+PjY7OCZoJiZDdSgwKTt2YXIgYWU9Ni1tLHBlPTM9PU8/NDpPLGJl''@;'; put 'put ''PUg4ZShsLGFlLHBlKSx4ZT1YPzE8PFg6bSxWZT1IOGUobCxhZSs9cGUseGUpKygxPT1YJiYyNTYpLFplPVZlO2lmKCFtKXt2YXIgbHQ9MTw8MTArKGxbNV0+PjMpO1plPWx0KyhsdD4+MykqKDcmbFs1XSl9WmU+MjE0NTM4NjQ5NiYmQ3UoMSk7dmFyIGR0PW5ldyBsdSgoMT09Yz9WZXx8WmU6''@;'; put 'put ''Yz8wOlplKSsxMik7cmV0dXJuIGR0WzBdPTEsZHRbNF09NCxkdFs4XT04LHtiOmFlK3hlLHk6MCxsOjAsZDpiZSx3OmMmJjEhPWM/YzpkdC5zdWJhcnJheSgxMiksZTpaZSxvOm5ldyBfRihkdC5idWZmZXIsMCwzKSx1OlZlLGM6XyxtOk1hdGgubWluKDEzMTA3MixaZSl9fWlmKDI1NDgxODkz''@;'; put 'put ''PT0oZD4+NHxsWzNdPDwyMCkpcmV0dXJuIDgrKCgoYT1sKVs0XXxhWzVdPDw4fGFbNl08PDE2fGFbN108PDI0KT4+PjApO0N1KDApfSxJNj1mdW5jdGlvbihsKXtmb3IodmFyIGM9MDsxPDxjPD1sOysrYyk7cmV0dXJuIGMtMX0scng9ZnVuY3Rpb24obCxjLGEpe3ZhciBmPTQrKGM8PDMpLGQ9''@;'; put 'put ''NSsoMTUmbFtjXSk7ZD5hJiZDdSgzKTtmb3IodmFyIGg9MTw8ZCxtPWgsXz0tMSxPPS0xLFg9LTEsYWU9aCxwZT1uZXcgU1J0KDUxMisoaDw8MikpLGJlPW5ldyBNUnQocGUsMCwyNTYpLHhlPW5ldyBiRihwZSwwLDI1NiksVmU9bmV3IGJGKHBlLDUxMixoKSxaZT01MTIrKGg8PDEpLGx0PW5l''@;'; put 'put ''dyBsdShwZSxaZSxoKSxkdD1uZXcgbHUocGUsWmUraCk7XzwyNTUmJm0+MDspe3ZhciBndD1JNihtKzEpLGp0PWY+PjMscm49KDE8PGd0KzEpLTEsWHQ9KGxbanRdfGxbanQrMV08PDh8bFtqdCsyXTw8MTYpPj4oNyZmKSZybix5bj0oMTw8Z3QpLTEsUW49cm4tbS0xLE9yPVh0JnluO2lmKE9y''@;'; put 'put ''PFFuPyhmKz1ndCxYdD1Pcik6KGYrPWd0KzEsWHQ+eW4mJihYdC09UW4pKSxiZVsrK19dPS0tWHQsLTE9PVh0PyhtKz1YdCxsdFstLWFlXT1fKTptLT1YdCwhWHQpZG97dmFyIFZyPWY+PjM7Tz0obFtWcl18bFtWcisxXTw8OCk+Pig3JmYpJjMsZis9MixfKz1PfXdoaWxlKDM9PU8pfShfPjI1''@;'; put 'put ''NXx8bSkmJkN1KDApO2Zvcih2YXIgWnI9MCxpcj0oaD4+MSkrKGg+PjMpKzMsc2k9aC0xLEFyPTA7QXI8PV87KytBcil7dmFyIEVuPWJlW0FyXTtpZihFbjwxKXhlW0FyXT0tRW47ZWxzZSBmb3IoWD0wO1g8RW47KytYKXtsdFtacl09QXI7ZG97WnI9WnIraXImc2l9d2hpbGUoWnI+PWFlKX19''@;'; put 'put ''Zm9yKFpyJiZDdSgwKSxYPTA7WDxoOysrWCl7dmFyIFRyPXhlW2x0W1hdXSsrLFZuPWR0W1hdPWQtSTYoVHIpO1ZlW1hdPShUcjw8Vm4pLWh9cmV0dXJuW2YrNz4+Myx7YjpkLHM6bHQsbjpkdCx0OlZlfV19LEFSdD1yeChuZXcgbHUoWzgxLDE2LDk5LDE0MCw0OSwxOTgsMjQsOTksMTIsMzMs''@;'; put 'put ''MTk2LDI0LDk5LDEwMiwxMDIsMTM0LDcwLDE0Niw0XSksMCw2KVsxXSxUUnQ9cngobmV3IGx1KFszMywyMCwxOTYsMjQsOTksMTQwLDMzLDEzMiwxNiw2Niw4LDMzLDEzMiwxNiw2Niw4LDMzLDY4LDY4LDY4LDY4LDY4LDY4LDY4LDY4LDM2LDldKSwwLDYpWzFdLE9SdD1yeChuZXcgbHUoWzMy''@;'; put 'put ''LDEzMiwxNiw2NiwxMDIsNzAsNjgsNjgsNjgsNjgsMzYsNzMsMl0pLDAsNSlbMV0sTjhlPWZ1bmN0aW9uKGwsYyl7Zm9yKHZhciBhPWwubGVuZ3RoLGY9bmV3IF9GKGEpLGQ9MDtkPGE7KytkKWZbZF09YyxjKz0xPDxsW2RdO3JldHVybiBmfSxnUT1uZXcgbHUobmV3IF9GKFswLDAsMCwwLDE2''@;'; put 'put ''ODQzMDA5LDUwNTI4NzcwLDEzNDY3ODAyMCwyMDIwNTAwNTcsMjY5NDIyMDkzXSkuYnVmZmVyLDAsMzYpLERSdD1OOGUoZ1EsMCksdlE9bmV3IGx1KG5ldyBfRihbMCwwLDAsMCwwLDAsMCwwLDE2ODQzMDA5LDUwNTI4NzcwLDExNzc2OTIyMCwxODUyMDcwNDgsMjUyNTc5MDg0LDE2XSkuYnVm''@;'; put 'put ''ZmVyLDAsNTMpLElSdD1OOGUodlEsMyksaXg9ZnVuY3Rpb24obCxjLGEpe3ZhciBmPWwubGVuZ3RoLGQ9Yy5sZW5ndGgsaD1sW2YtMV0sbT0oMTw8YS5iKS0xLF89LWEuYjtofHxDdSgwKTtmb3IodmFyIE89MCxYPWEuYixhZT0oZjw8MyktOCtJNihoKS1YLHBlPS0xO2FlPl8mJnBlPGQ7KXt2''@;'; put 'put ''YXIgYmU9YWU+PjM7Y1srK3BlXT1hLnNbTz0oTzw8WHwobFtiZV18bFtiZSsxXTw8OHxsW2JlKzJdPDwxNik+Pig3JmFlKSkmbV0sYWUtPVg9YS5uW09dfWFlPT1fJiZwZSsxPT1kfHxDdSgwKX0sUlJ0PWZ1bmN0aW9uKGwsYyxhKXt2YXIgZj02LGQ9Yy5sZW5ndGgrMz4+MixoPWQ8PDEsbT1k''@;'; put 'put ''K2g7aXgobC5zdWJhcnJheShmLGYrPWxbMF18bFsxXTw8OCksYy5zdWJhcnJheSgwLGQpLGEpLGl4KGwuc3ViYXJyYXkoZixmKz1sWzJdfGxbM108PDgpLGMuc3ViYXJyYXkoZCxoKSxhKSxpeChsLnN1YmFycmF5KGYsZis9bFs0XXxsWzVdPDw4KSxjLnN1YmFycmF5KGgsbSksYSksaXgobC5z''@;'; put 'put ''dWJhcnJheShmKSxjLnN1YmFycmF5KG0pLGEpfSxMUnQ9ZnVuY3Rpb24obCxjLGEpe3ZhciBmLGQ9Yy5iLGg9bFtkXSxtPWg+PjEmMztjLmw9MSZoO3ZhciBfPWg+PjN8bFtkKzFdPDw1fGxbZCsyXTw8MTMsTz0oZCs9MykrXztpZigxPT1tKXJldHVybiBkPj1sLmxlbmd0aD92b2lkIDA6KGMu''@;'; put 'put ''Yj1kKzEsYT8obngoYSxsW2RdLGMueSxjLnkrPV8pLGEpOm54KG5ldyBsdShfKSxsW2RdKSk7aWYoIShPPmwubGVuZ3RoKSl7aWYoMD09bSlyZXR1cm4gYy5iPU8sYT8oYS5zZXQobC5zdWJhcnJheShkLE8pLGMueSksYy55Kz1fLGEpOm1RKGwsZCxPKTtpZigyPT1tKXt2YXIgWD1sW2RdLGFl''@;'; put 'put ''PTMmWCxwZT1YPj4yJjMsYmU9WD4+NCx4ZT0wLFZlPTA7YWU8Mj8xJnBlP2JlfD1sWysrZF08PDR8KDImcGUmJmxbKytkXTw8MTIpOmJlPVg+PjM6KFZlPXBlLHBlPDI/KGJlfD0oNjMmbFsrK2RdKTw8NCx4ZT1sW2RdPj42fGxbKytkXTw8Mik6Mj09cGU/KGJlfD1sWysrZF08PDR8KDMmbFsr''@;'; put 'put ''K2RdKTw8MTIseGU9bFtkXT4+MnxsWysrZF08PDYpOihiZXw9bFsrK2RdPDw0fCg2MyZsWysrZF0pPDwxMix4ZT1sW2RdPj42fGxbKytkXTw8MnxsWysrZF08PDEwKSksKytkO3ZhciBaZT1hP2Euc3ViYXJyYXkoYy55LGMueStjLm0pOm5ldyBsdShjLm0pLGx0PVplLmxlbmd0aC1iZTtpZigw''@;'; put 'put ''PT1hZSlaZS5zZXQobC5zdWJhcnJheShkLGQrPWJlKSxsdCk7ZWxzZSBpZigxPT1hZSlueChaZSxsW2QrK10sbHQpO2Vsc2V7dmFyIGR0PWMuaDtpZigyPT1hZSl7dmFyIGd0PWZ1bmN0aW9uKGtvLHFpKXt2YXIgeHQ9MCxMaT0tMSxaYT1uZXcgbHUoMjkyKSxkcz1rb1txaV0sdmw9WmEuc3Vi''@;'; put 'put ''YXJyYXkoMCwyNTYpLGhzPVphLnN1YmFycmF5KDI1NiwyNjgpLEhzPW5ldyBiRihaYS5idWZmZXIsMjY4KTtpZihkczwxMjgpe3ZhciBjMD1yeChrbyxxaSsxLDYpLHN1PWMwWzFdLEIxPWMwWzBdPDwzLGoxPWtvW3FpKz1kc107ajF8fEN1KDApO2Zvcih2YXIgSWM9MCx0Yz0wLFJjPXN1LmIs''@;'; put 'put ''ejE9UmMsVTE9KCsrcWk8PDMpLTgrSTYoajEpOyEoKFUxLT1SYyk8QjEpOyl7dmFyIFoxPVUxPj4zO2lmKHZsWysrTGldPXN1LnNbSWMrPShrb1taMV18a29bWjErMV08PDgpPj4oNyZVMSkmKDE8PFJjKS0xXSwoVTEtPXoxKTxCMSlicmVhazt0Yys9KGtvW1oxPVUxPj4zXXxrb1taMSsxXTw8''@;'; put 'put ''OCk+Pig3JlUxKSYoMTw8ejEpLTEsdmxbKytMaV09c3Uuc1t0Y10sUmM9c3UubltJY10sSWM9c3UudFtJY10sejE9c3Uublt0Y10sdGM9c3UudFt0Y119KytMaT4yNTUmJkN1KDApfWVsc2V7Zm9yKExpPWRzLTEyNzt4dDxMaTt4dCs9Mil7dmFyIEdkPWtvWysrcWldO3ZsW3h0XT1HZD4+NCx2''@;'; put 'put ''bFt4dCsxXT0xNSZHZH0rK3FpfXZhciB6Zj0wO2Zvcih4dD0wO3h0PExpOysreHQpKHVsPXZsW3h0XSk+MTEmJkN1KDApLHpmKz11bCYmMTw8dWwtMTt2YXIgaGM9STYoemYpKzEsWTE9MTw8aGMscHM9WTEtemY7Zm9yKHBzJnBzLTEmJkN1KDApLHZsW0xpKytdPUk2KHBzKSsxLHh0PTA7eHQ8''@;'; put 'put ''TGk7Kyt4dCl7dmFyIHVsPXZsW3h0XTsrK2hzW3ZsW3h0XT11bCYmaGMrMS11bF19dmFyIHEwPW5ldyBsdShZMTw8MSksVHM9cTAuc3ViYXJyYXkoMCxZMSksR2w9cTAuc3ViYXJyYXkoWTEpO2ZvcihIc1toY109MCx4dD1oYzt4dD4wOy0teHQpe3ZhciBOcz1Ic1t4dF07bngoR2wseHQsTnMs''@;'; put 'put ''SHNbeHQtMV09TnMraHNbeHRdKigxPDxoYy14dCkpfWZvcihIc1swXSE9WTEmJkN1KDApLHh0PTA7eHQ8TGk7Kyt4dCl7dmFyIGxzPXZsW3h0XTtpZihscyl7dmFyIFN1PUhzW2xzXTtueChUcyx4dCxTdSxIc1tsc109U3UrKDE8PGhjLWxzKSl9fXJldHVybltxaSx7bjpHbCxiOmhjLHM6VHN9''@;'; put 'put ''XX0obCxkKTt4ZSs9ZC0oZD1ndFswXSksYy5oPWR0PWd0WzFdfWVsc2UgZHR8fEN1KDApOyhWZT9SUnQ6aXgpKGwuc3ViYXJyYXkoZCxkKz14ZSksWmUuc3ViYXJyYXkobHQpLGR0KX12YXIganQ9bFtkKytdO2lmKGp0KXsyNTU9PWp0P2p0PTMyNTEyKyhsW2QrK118bFtkKytdPDw4KTpqdD4x''@;'; put 'put ''MjcmJihqdD1qdC0xMjg8PDh8bFtkKytdKTt2YXIgcm49bFtkKytdOzMmcm4mJkN1KDApO2Zvcih2YXIgWHQ9W1RSdCxPUnQsQVJ0XSx5bj0yO3luPi0xOy0teW4pe3ZhciBRbj1ybj4+MisoeW48PDEpJjM7aWYoMT09UW4pe3ZhciBPcj1uZXcgbHUoWzAsMCxsW2QrK11dKTtYdFt5bl09e3M6''@;'; put 'put ''T3Iuc3ViYXJyYXkoMiwzKSxuOk9yLnN1YmFycmF5KDAsMSksdDpuZXcgYkYoT3IuYnVmZmVyLDAsMSksYjowfX1lbHNlIDI9PVFuPyhkPShmPXJ4KGwsZCw5LSgxJnluKSkpWzBdLFh0W3luXT1mWzFdKTozPT1RbiYmKGMudHx8Q3UoMCksWHRbeW5dPWMudFt5bl0pfXZhciBWcj1jLnQ9WHQs''@;'; put 'put ''WnI9VnJbMF0saXI9VnJbMV0sc2k9VnJbMl0sQXI9bFtPLTFdO0FyfHxDdSgwKTt2YXIgRW49KE88PDMpLTgrSTYoQXIpLXNpLmIsVHI9RW4+PjMsVm49MCxjcj0obFtUcl18bFtUcisxXTw8OCk+Pig3JkVuKSYoMTw8c2kuYiktMSxDcj0obFtUcj0oRW4tPWlyLmIpPj4zXXxsW1RyKzFdPDw4''@;'; put 'put ''KT4+KDcmRW4pJigxPDxpci5iKS0xLFlyPShsW1RyPShFbi09WnIuYik+PjNdfGxbVHIrMV08PDgpPj4oNyZFbikmKDE8PFpyLmIpLTE7Zm9yKCsranQ7LS1qdDspe3ZhciBTdD1zaS5zW2NyXSxGdD1zaS5uW2NyXSxXdD1aci5zW1lyXSx3bj1aci5uW1lyXSxTbj1pci5zW0NyXSxicj1pci5u''@;'; put 'put ''W0NyXSxkcj0xPDxTbixMcj1kcisoKGxbVHI9KEVuLT1Tbik+PjNdfGxbVHIrMV08PDh8bFtUcisyXTw8MTZ8bFtUciszXTw8MjQpPj4+KDcmRW4pJmRyLTEpO1RyPShFbi09dlFbV3RdKT4+Mzt2YXIgTnI9SVJ0W1d0XSsoKGxbVHJdfGxbVHIrMV08PDh8bFtUcisyXTw8MTYpPj4oNyZFbikm''@;'; put 'put ''KDE8PHZRW1d0XSktMSk7VHI9KEVuLT1nUVtTdF0pPj4zO3ZhciBkaT1EUnRbU3RdKygobFtUcl18bFtUcisxXTw8OHxsW1RyKzJdPDwxNik+Pig3JkVuKSYoMTw8Z1FbU3RdKS0xKTtpZihUcj0oRW4tPUZ0KT4+Myxjcj1zaS50W2NyXSsoKGxbVHJdfGxbVHIrMV08PDgpPj4oNyZFbikmKDE8''@;'; put 'put ''PEZ0KS0xKSxUcj0oRW4tPXduKT4+MyxZcj1aci50W1lyXSsoKGxbVHJdfGxbVHIrMV08PDgpPj4oNyZFbikmKDE8PHduKS0xKSxUcj0oRW4tPWJyKT4+MyxDcj1pci50W0NyXSsoKGxbVHJdfGxbVHIrMV08PDgpPj4oNyZFbikmKDE8PGJyKS0xKSxMcj4zKWMub1syXT1jLm9bMV0sYy5vWzFd''@;'; put 'put ''PWMub1swXSxjLm9bMF09THItPTM7ZWxzZXt2YXIgcXI9THItKDAhPWRpKTtxcj8oTHI9Mz09cXI/Yy5vWzBdLTE6Yy5vW3FyXSxxcj4xJiYoYy5vWzJdPWMub1sxXSksYy5vWzFdPWMub1swXSxjLm9bMF09THIpOkxyPWMub1swXX1mb3IoeW49MDt5bjxkaTsrK3luKVplW1ZuK3luXT1aZVts''@;'; put 'put ''dCt5bl07bHQrPWRpO3ZhciBSaT0oVm4rPWRpKS1McjtpZihSaTwwKXt2YXIgRG89LVJpLG9hPWMuZStSaTtmb3IoRG8+TnImJihEbz1OcikseW49MDt5bjxEbzsrK3luKVplW1ZuK3luXT1jLndbb2EreW5dO1ZuKz1EbyxOci09RG8sUmk9MH1mb3IoeW49MDt5bjxOcjsrK3luKVplW1ZuK3lu''@;'; put 'put ''XT1aZVtSaSt5bl07Vm4rPU5yfWlmKFZuIT1sdClmb3IoO2x0PFplLmxlbmd0aDspWmVbVm4rK109WmVbbHQrK107ZWxzZSBWbj1aZS5sZW5ndGg7YT9jLnkrPVZuOlplPW1RKFplLDAsVm4pfWVsc2UgaWYoYSl7aWYoYy55Kz1iZSxsdClmb3IoeW49MDt5bjxiZTsrK3luKVplW3luXT1aZVts''@;'; put 'put ''dCt5bl19ZWxzZSBsdCYmKFplPW1RKFplLGx0KSk7cmV0dXJuIGMuYj1PLFplfUN1KDIpfX07dmFyIEhSdD0odHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmZG9jdW1lbnQsZnVuY3Rpb24obCl7dmFyIGMsYSxmPXZvaWQgMCE9PShsPWx8fHt9KT9sOnt9O2Yu''@;'; put 'put ''cmVhZHk9bmV3IFByb21pc2UoZnVuY3Rpb24oc3QseXQpe2M9c3QsYT15dH0pO3ZhciBkLGg9T2JqZWN0LmFzc2lnbih7fSxmKSxtPSIuL3RoaXMucHJvZ3JhbSIsXz0oc3QseXQpPT57dGhyb3cgeXR9LE89Zi5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxYPWYucHJpbnRFcnJ8''@;'; put 'put ''fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oZixoKSxoPW51bGwsZi50aGlzUHJvZ3JhbSYmKG09Zi50aGlzUHJvZ3JhbSksZi5xdWl0JiYoXz1mLnF1aXQpLGYud2FzbUJpbmFyeSYmKGQ9Zi53YXNtQmluYXJ5KTt2YXIgYWUscGU9Zi5ub0V4aXRSdW50aW1lfHwh''@;'; put 'put ''MDsib2JqZWN0IiE9dHlwZW9mIFdlYkFzc2VtYmx5JiZXdCgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBiZT0hMTtmdW5jdGlvbiB4ZShzdCx5dCl7c3R8fFd0KHl0KX12YXIgVmUsWmUsbHQsZHQsZ3QsanQscm4sWHQ9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcg''@;'; put 'put ''VGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDA7ZnVuY3Rpb24geW4oc3QseXQsTHQpe2Zvcih2YXIgYW49eXQrTHQsa249eXQ7c3Rba25dJiYhKGtuPj1hbik7KSsra247aWYoa24teXQ+MTYmJnN0LmJ1ZmZlciYmWHQpcmV0dXJuIFh0LmRlY29kZShzdC5zdWJhcnJheSh5dCxrbikpO2Zvcih2''@;'; put 'put ''YXIgbHI9IiI7eXQ8a247KXt2YXIgdXI9c3RbeXQrK107aWYoMTI4JnVyKXt2YXIgSHI9NjMmc3RbeXQrK107aWYoMTkyIT0oMjI0JnVyKSl7dmFyIHZvPTYzJnN0W3l0KytdO2lmKCh1cj0yMjQ9PSgyNDAmdXIpPygxNSZ1cik8PDEyfEhyPDw2fHZvOig3JnVyKTw8MTh8SHI8PDEyfHZvPDw2''@;'; put 'put ''fDYzJnN0W3l0KytdKTw2NTUzNilscis9U3RyaW5nLmZyb21DaGFyQ29kZSh1cik7ZWxzZXt2YXIgQW89dXItNjU1MzY7bHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8QW8+PjEwLDU2MzIwfDEwMjMmQW8pfX1lbHNlIGxyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZ1cik8PDZ8SHIp''@;'; put 'put ''fWVsc2UgbHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXIpfXJldHVybiBscn1mdW5jdGlvbiBRbihzdCx5dCl7cmV0dXJuIHN0P3luKGx0LHN0LHl0KToiIn1mdW5jdGlvbiBPcihzdCx5dCxMdCxhbil7aWYoIShhbj4wKSlyZXR1cm4gMDtmb3IodmFyIGtuPUx0LGxyPUx0K2FuLTEsdXI9MDt1''@;'; put 'put ''cjxzdC5sZW5ndGg7Kyt1cil7dmFyIEhyPXN0LmNoYXJDb2RlQXQodXIpO2lmKEhyPj01NTI5NiYmSHI8PTU3MzQzJiYoSHI9NjU1MzYrKCgxMDIzJkhyKTw8MTApfDEwMjMmc3QuY2hhckNvZGVBdCgrK3VyKSksSHI8PTEyNyl7aWYoTHQ+PWxyKWJyZWFrO3l0W0x0KytdPUhyfWVsc2UgaWYo''@;'; put 'put ''SHI8PTIwNDcpe2lmKEx0KzE+PWxyKWJyZWFrO3l0W0x0KytdPTE5MnxIcj4+Nix5dFtMdCsrXT0xMjh8NjMmSHJ9ZWxzZSBpZihIcjw9NjU1MzUpe2lmKEx0KzI+PWxyKWJyZWFrO3l0W0x0KytdPTIyNHxIcj4+MTIseXRbTHQrK109MTI4fEhyPj42JjYzLHl0W0x0KytdPTEyOHw2MyZIcn1l''@;'; put 'put ''bHNle2lmKEx0KzM+PWxyKWJyZWFrO3l0W0x0KytdPTI0MHxIcj4+MTgseXRbTHQrK109MTI4fEhyPj4xMiY2Myx5dFtMdCsrXT0xMjh8SHI+PjYmNjMseXRbTHQrK109MTI4fDYzJkhyfX1yZXR1cm4geXRbTHRdPTAsTHQta259ZnVuY3Rpb24gVnIoc3Qpe2Zvcih2YXIgeXQ9MCxMdD0wO0x0''@;'; put 'put ''PHN0Lmxlbmd0aDsrK0x0KXt2YXIgYW49c3QuY2hhckNvZGVBdChMdCk7YW48PTEyNz95dCsrOmFuPD0yMDQ3P3l0Kz0yOmFuPj01NTI5NiYmYW48PTU3MzQzPyh5dCs9NCwrK0x0KTp5dCs9M31yZXR1cm4geXR9ZnVuY3Rpb24gWnIoc3Qpe1ZlPXN0LGYuSEVBUDg9WmU9bmV3IEludDhBcnJh''@;'; put 'put ''eShzdCksZi5IRUFQMTY9ZHQ9bmV3IEludDE2QXJyYXkoc3QpLGYuSEVBUDMyPWd0PW5ldyBJbnQzMkFycmF5KHN0KSxmLkhFQVBVOD1sdD1uZXcgVWludDhBcnJheShzdCksZi5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShzdCksZi5IRUFQVTMyPWp0PW5ldyBVaW50MzJBcnJheShzdCksZi5I''@;'; put 'put ''RUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoc3QpLGYuSEVBUEY2ND1ybj1uZXcgRmxvYXQ2NEFycmF5KHN0KX12YXIgaXIsc2ksQXIsRW4sVHI9W10sVm49W10sY3I9W10sQ3I9MCxZcj1udWxsO2Z1bmN0aW9uIFN0KHN0KXtDcisrLGYubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmZi5tb25pdG9y''@;'; put 'put ''UnVuRGVwZW5kZW5jaWVzKENyKX1mdW5jdGlvbiBGdChzdCl7aWYoQ3ItLSxmLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJmYubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhDciksMD09Q3ImJllyKXt2YXIgeXQ9WXI7WXI9bnVsbCx5dCgpfX1mdW5jdGlvbiBXdChzdCl7Zi5vbkFib3J0JiZmLm9u''@;'; put 'put ''QWJvcnQoc3QpLFgoc3Q9IkFib3J0ZWQoIitzdCsiKSIpLGJlPSEwLHN0Kz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHl0PW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Ioc3QpO3Rocm93IGEoeXQpLHl0fWZ1bmN0aW9uIHduKHN0KXtyZXR1cm4g''@;'; put 'put ''c3Quc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfXduKGlyPSJncmFwaHZpemxpYi53YXNtIil8fChzaT1pcixpcj1mLmxvY2F0ZUZpbGU/Zi5sb2NhdGVGaWxlKHNpLCIiKToiIitzaSk7dmFyIGRyPXsxNzU2NjQ6KHN0LHl0KT0+e3ZhciBMdD1R''@;'; put 'put ''bihzdCksYW49UW4oeXQpO3h0LmNyZWF0ZVBhdGgoIi8iLHFyLmRpcm5hbWUoTHQpKSx4dC53cml0ZUZpbGUocXIuam9pbigiLyIsTHQpLGFuKX19O2Z1bmN0aW9uIExyKHN0KXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhp''@;'; put 'put ''dCgiK3N0KyIpIix0aGlzLnN0YXR1cz1zdH1mdW5jdGlvbiBOcihzdCl7Zm9yKDtzdC5sZW5ndGg+MDspc3Quc2hpZnQoKShmKX1mdW5jdGlvbiBkaShzdCl7dGhpcy5leGNQdHI9c3QsdGhpcy5wdHI9c3QtMjQsdGhpcy5zZXRfdHlwZT1mdW5jdGlvbih5dCl7anRbdGhpcy5wdHIrND4+Ml09''@;'; put 'put ''eXR9LHRoaXMuZ2V0X3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4ganRbdGhpcy5wdHIrND4+Ml19LHRoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oeXQpe2p0W3RoaXMucHRyKzg+PjJdPXl0fSx0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGp0W3RoaXMucHRyKzg+PjJd''@;'; put 'put ''fSx0aGlzLnNldF9yZWZjb3VudD1mdW5jdGlvbih5dCl7Z3RbdGhpcy5wdHI+PjJdPXl0fSx0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oeXQpe1plW3RoaXMucHRyKzEyPj4wXT15dD15dD8xOjB9LHRoaXMuZ2V0X2NhdWdodD1mdW5jdGlvbigpe3JldHVybiAwIT1aZVt0aGlzLnB0cisxMj4+''@;'; put 'put ''MF19LHRoaXMuc2V0X3JldGhyb3duPWZ1bmN0aW9uKHl0KXtaZVt0aGlzLnB0cisxMz4+MF09eXQ9eXQ/MTowfSx0aGlzLmdldF9yZXRocm93bj1mdW5jdGlvbigpe3JldHVybiAwIT1aZVt0aGlzLnB0cisxMz4+MF19LHRoaXMuaW5pdD1mdW5jdGlvbih5dCxMdCl7dGhpcy5zZXRfYWRqdXN0''@;'; put 'put ''ZWRfcHRyKDApLHRoaXMuc2V0X3R5cGUoeXQpLHRoaXMuc2V0X2Rlc3RydWN0b3IoTHQpLHRoaXMuc2V0X3JlZmNvdW50KDApLHRoaXMuc2V0X2NhdWdodCghMSksdGhpcy5zZXRfcmV0aHJvd24oITEpfSx0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXtndFt0aGlzLnB0cj4+Ml09Z3RbdGhpcy5w''@;'; put 'put ''dHI+PjJdKzF9LHRoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgeXQ9Z3RbdGhpcy5wdHI+PjJdO3JldHVybiBndFt0aGlzLnB0cj4+Ml09eXQtMSwxPT09eXR9LHRoaXMuc2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbih5dCl7anRbdGhpcy5wdHIrMTY+PjJdPXl0fSx0aGlzLmdldF9h''@;'; put 'put ''ZGp1c3RlZF9wdHI9ZnVuY3Rpb24oKXtyZXR1cm4ganRbdGhpcy5wdHIrMTY+PjJdfSx0aGlzLmdldF9leGNlcHRpb25fcHRyPWZ1bmN0aW9uKCl7aWYobHModGhpcy5nZXRfdHlwZSgpKSlyZXR1cm4ganRbdGhpcy5leGNQdHI+PjJdO3ZhciB5dD10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTty''@;'; put 'put ''ZXR1cm4gMCE9PXl0P3l0OnRoaXMuZXhjUHRyfX12YXIgcXI9e2lzQWJzOnN0PT4iLyI9PT1zdC5jaGFyQXQoMCksc3BsaXRQYXRoOnN0PT4vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC8uZXhlYyhzdCkuc2xpY2UoMSksbm9y''@;'; put 'put ''bWFsaXplQXJyYXk6KHN0LHl0KT0+e2Zvcih2YXIgTHQ9MCxhbj1zdC5sZW5ndGgtMTthbj49MDthbi0tKXt2YXIga249c3RbYW5dOyIuIj09PWtuP3N0LnNwbGljZShhbiwxKToiLi4iPT09a24/KHN0LnNwbGljZShhbiwxKSxMdCsrKTpMdCYmKHN0LnNwbGljZShhbiwxKSxMdC0tKX1pZih5''@;'; put 'put ''dClmb3IoO0x0O0x0LS0pc3QudW5zaGlmdCgiLi4iKTtyZXR1cm4gc3R9LG5vcm1hbGl6ZTpzdD0+e3ZhciB5dD1xci5pc0FicyhzdCksTHQ9Ii8iPT09c3Quc3Vic3RyKC0xKTtyZXR1cm4oc3Q9cXIubm9ybWFsaXplQXJyYXkoc3Quc3BsaXQoIi8iKS5maWx0ZXIoYW49PiEhYW4pLCF5dCku''@;'; put 'put ''am9pbigiLyIpKXx8eXR8fChzdD0iLiIpLHN0JiZMdCYmKHN0Kz0iLyIpLCh5dD8iLyI6IiIpK3N0fSxkaXJuYW1lOnN0PT57dmFyIHl0PXFyLnNwbGl0UGF0aChzdCksTHQ9eXRbMF0sYW49eXRbMV07cmV0dXJuIEx0fHxhbj8oYW4mJihhbj1hbi5zdWJzdHIoMCxhbi5sZW5ndGgtMSkpLEx0''@;'; put 'put ''K2FuKToiLiJ9LGJhc2VuYW1lOnN0PT57aWYoIi8iPT09c3QpcmV0dXJuIi8iO3ZhciB5dD0oc3Q9KHN0PXFyLm5vcm1hbGl6ZShzdCkpLnJlcGxhY2UoL1wvJC8sIiIpKS5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09eXQ/c3Q6c3Quc3Vic3RyKHl0KzEpfSxqb2luOmZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIHN0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHFyLm5vcm1hbGl6ZShzdC5qb2luKCIvIikpfSxqb2luMjooc3QseXQpPT5xci5ub3JtYWxpemUoc3QrIi8iK3l0KX0sUmk9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHN0PSIiLHl0PSExLEx0''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGgtMTtMdD49LTEmJiF5dDtMdC0tKXt2YXIgYW49THQ+PTA/YXJndW1lbnRzW0x0XTp4dC5jd2QoKTtpZigic3RyaW5nIiE9dHlwZW9mIGFuKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYo''@;'; put 'put ''IWFuKXJldHVybiIiO3N0PWFuKyIvIitzdCx5dD1xci5pc0Ficyhhbil9cmV0dXJuKHl0PyIvIjoiIikrKHN0PXFyLm5vcm1hbGl6ZUFycmF5KHN0LnNwbGl0KCIvIikuZmlsdGVyKGtuPT4hIWtuKSwheXQpLmpvaW4oIi8iKSl8fCIuIn0scmVsYXRpdmU6KHN0LHl0KT0+e2Z1bmN0aW9uIEx0''@;'; put 'put ''KEFvKXtmb3IodmFyIG1vPTA7bW88QW8ubGVuZ3RoJiYiIj09PUFvW21vXTttbysrKTtmb3IodmFyIHRhPUFvLmxlbmd0aC0xO3RhPj0wJiYiIj09PUFvW3RhXTt0YS0tKTtyZXR1cm4gbW8+dGE/W106QW8uc2xpY2UobW8sdGEtbW8rMSl9c3Q9UmkucmVzb2x2ZShzdCkuc3Vic3RyKDEpLHl0''@;'; put 'put ''PVJpLnJlc29sdmUoeXQpLnN1YnN0cigxKTtmb3IodmFyIGFuPUx0KHN0LnNwbGl0KCIvIikpLGtuPUx0KHl0LnNwbGl0KCIvIikpLGxyPU1hdGgubWluKGFuLmxlbmd0aCxrbi5sZW5ndGgpLHVyPWxyLEhyPTA7SHI8bHI7SHIrKylpZihhbltIcl0hPT1rbltIcl0pe3VyPUhyO2JyZWFrfXZh''@;'; put 'put ''ciB2bz1bXTtmb3IoSHI9dXI7SHI8YW4ubGVuZ3RoO0hyKyspdm8ucHVzaCgiLi4iKTtyZXR1cm4odm89dm8uY29uY2F0KGtuLnNsaWNlKHVyKSkpLmpvaW4oIi8iKX19O2Z1bmN0aW9uIERvKHN0LHl0LEx0KXt2YXIgYW49THQ+MD9MdDpWcihzdCkrMSxrbj1uZXcgQXJyYXkoYW4pLGxyPU9y''@;'; put 'put ''KHN0LGtuLDAsa24ubGVuZ3RoKTtyZXR1cm4geXQmJihrbi5sZW5ndGg9bHIpLGtufXZhciBvYT17dHR5czpbXSxpbml0OmZ1bmN0aW9uKCl7fSxzaHV0ZG93bjpmdW5jdGlvbigpe30scmVnaXN0ZXI6ZnVuY3Rpb24oc3QseXQpe29hLnR0eXNbc3RdPXtpbnB1dDpbXSxvdXRwdXQ6W10sb3Bz''@;'; put 'put ''Onl0fSx4dC5yZWdpc3RlckRldmljZShzdCxvYS5zdHJlYW1fb3BzKX0sc3RyZWFtX29wczp7b3BlbjpmdW5jdGlvbihzdCl7dmFyIHl0PW9hLnR0eXNbc3Qubm9kZS5yZGV2XTtpZigheXQpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDMpO3N0LnR0eT15dCxzdC5zZWVrYWJsZT0hMX0sY2xv''@;'; put 'put ''c2U6ZnVuY3Rpb24oc3Qpe3N0LnR0eS5vcHMuZnN5bmMoc3QudHR5KX0sZnN5bmM6ZnVuY3Rpb24oc3Qpe3N0LnR0eS5vcHMuZnN5bmMoc3QudHR5KX0scmVhZDpmdW5jdGlvbihzdCx5dCxMdCxhbixrbil7aWYoIXN0LnR0eXx8IXN0LnR0eS5vcHMuZ2V0X2NoYXIpdGhyb3cgbmV3IHh0LkVy''@;'; put 'put ''cm5vRXJyb3IoNjApO2Zvcih2YXIgbHI9MCx1cj0wO3VyPGFuO3VyKyspe3ZhciBIcjt0cnl7SHI9c3QudHR5Lm9wcy5nZXRfY2hhcihzdC50dHkpfWNhdGNoe3Rocm93IG5ldyB4dC5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1IciYmMD09PWxyKXRocm93IG5ldyB4dC5FcnJub0Vycm9y''@;'; put 'put ''KDYpO2lmKG51bGw9PUhyKWJyZWFrO2xyKysseXRbTHQrdXJdPUhyfXJldHVybiBsciYmKHN0Lm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLGxyfSx3cml0ZTpmdW5jdGlvbihzdCx5dCxMdCxhbixrbil7aWYoIXN0LnR0eXx8IXN0LnR0eS5vcHMucHV0X2NoYXIpdGhyb3cgbmV3IHh0LkVy''@;'; put 'put ''cm5vRXJyb3IoNjApO3RyeXtmb3IodmFyIGxyPTA7bHI8YW47bHIrKylzdC50dHkub3BzLnB1dF9jaGFyKHN0LnR0eSx5dFtMdCtscl0pfWNhdGNoe3Rocm93IG5ldyB4dC5FcnJub0Vycm9yKDI5KX1yZXR1cm4gYW4mJihzdC5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxscn19LGRlZmF1''@;'; put 'put ''bHRfdHR5X29wczp7Z2V0X2NoYXI6ZnVuY3Rpb24oc3Qpe2lmKCFzdC5pbnB1dC5sZW5ndGgpe3ZhciB5dD1udWxsO2lmKHR5cGVvZiB3aW5kb3c8InUiJiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LnByb21wdD9udWxsIT09KHl0PXdpbmRvdy5wcm9tcHQoIklucHV0OiAiKSkmJih5dCs9''@;'; put 'put ''IlxuIik6ImZ1bmN0aW9uIj09dHlwZW9mIHJlYWRsaW5lJiZudWxsIT09KHl0PXJlYWRsaW5lKCkpJiYoeXQrPSJcbiIpLCF5dClyZXR1cm4gbnVsbDtzdC5pbnB1dD1Ebyh5dCwhMCl9cmV0dXJuIHN0LmlucHV0LnNoaWZ0KCl9LHB1dF9jaGFyOmZ1bmN0aW9uKHN0LHl0KXtudWxsPT09eXR8''@;'; put 'put ''fDEwPT09eXQ/KE8oeW4oc3Qub3V0cHV0LDApKSxzdC5vdXRwdXQ9W10pOjAhPXl0JiZzdC5vdXRwdXQucHVzaCh5dCl9LGZzeW5jOmZ1bmN0aW9uKHN0KXtzdC5vdXRwdXQmJnN0Lm91dHB1dC5sZW5ndGg+MCYmKE8oeW4oc3Qub3V0cHV0LDApKSxzdC5vdXRwdXQ9W10pfX0sZGVmYXVsdF90''@;'; put 'put ''dHkxX29wczp7cHV0X2NoYXI6ZnVuY3Rpb24oc3QseXQpe251bGw9PT15dHx8MTA9PT15dD8oWCh5bihzdC5vdXRwdXQsMCkpLHN0Lm91dHB1dD1bXSk6MCE9eXQmJnN0Lm91dHB1dC5wdXNoKHl0KX0sZnN5bmM6ZnVuY3Rpb24oc3Qpe3N0Lm91dHB1dCYmc3Qub3V0cHV0Lmxlbmd0aD4wJiYo''@;'; put 'put ''WCh5bihzdC5vdXRwdXQsMCkpLHN0Lm91dHB1dD1bXSl9fX07ZnVuY3Rpb24ga28oc3Qpe3N0PTY1NTM2Kk1hdGguY2VpbChzdC82NTUzNik7dmFyIEx0LHl0PU5zKDY1NTM2LHN0KTtyZXR1cm4geXQ/KGx0LmZpbGwoMCxMdD15dCxMdCtzdCksTHQpOjB9dmFyIHFpPXtvcHNfdGFibGU6bnVs''@;'; put 'put ''bCxtb3VudDpmdW5jdGlvbihzdCl7cmV0dXJuIHFpLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oc3QseXQsTHQsYW4pe2lmKHh0LmlzQmxrZGV2KEx0KXx8eHQuaXNGSUZPKEx0KSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig2Myk7cWkub3BzX3Rh''@;'; put 'put ''YmxlfHwocWkub3BzX3RhYmxlPXtkaXI6e25vZGU6e2dldGF0dHI6cWkubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOnFpLm5vZGVfb3BzLnNldGF0dHIsbG9va3VwOnFpLm5vZGVfb3BzLmxvb2t1cCxta25vZDpxaS5ub2RlX29wcy5ta25vZCxyZW5hbWU6cWkubm9kZV9vcHMucmVuYW1lLHVu''@;'; put 'put ''bGluazpxaS5ub2RlX29wcy51bmxpbmsscm1kaXI6cWkubm9kZV9vcHMucm1kaXIscmVhZGRpcjpxaS5ub2RlX29wcy5yZWFkZGlyLHN5bWxpbms6cWkubm9kZV9vcHMuc3ltbGlua30sc3RyZWFtOntsbHNlZWs6cWkuc3RyZWFtX29wcy5sbHNlZWt9fSxmaWxlOntub2RlOntnZXRhdHRyOnFp''@;'; put 'put ''Lm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpxaS5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06e2xsc2VlazpxaS5zdHJlYW1fb3BzLmxsc2VlayxyZWFkOnFpLnN0cmVhbV9vcHMucmVhZCx3cml0ZTpxaS5zdHJlYW1fb3BzLndyaXRlLGFsbG9jYXRlOnFpLnN0cmVhbV9vcHMuYWxsb2NhdGUs''@;'; put 'put ''bW1hcDpxaS5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6cWkuc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6cWkubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOnFpLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6cWkubm9kZV9vcHMucmVhZGxpbmt9LHN0cmVhbTp7fX0sY2hy''@;'; put 'put ''ZGV2Ontub2RlOntnZXRhdHRyOnFpLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpxaS5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06eHQuY2hyZGV2X3N0cmVhbV9vcHN9fSk7dmFyIGtuPXh0LmNyZWF0ZU5vZGUoc3QseXQsTHQsYW4pO3JldHVybiB4dC5pc0Rpcihrbi5tb2RlKT8oa24ubm9k''@;'; put 'put ''ZV9vcHM9cWkub3BzX3RhYmxlLmRpci5ub2RlLGtuLnN0cmVhbV9vcHM9cWkub3BzX3RhYmxlLmRpci5zdHJlYW0sa24uY29udGVudHM9e30pOnh0LmlzRmlsZShrbi5tb2RlKT8oa24ubm9kZV9vcHM9cWkub3BzX3RhYmxlLmZpbGUubm9kZSxrbi5zdHJlYW1fb3BzPXFpLm9wc190YWJsZS5m''@;'; put 'put ''aWxlLnN0cmVhbSxrbi51c2VkQnl0ZXM9MCxrbi5jb250ZW50cz1udWxsKTp4dC5pc0xpbmsoa24ubW9kZSk/KGtuLm5vZGVfb3BzPXFpLm9wc190YWJsZS5saW5rLm5vZGUsa24uc3RyZWFtX29wcz1xaS5vcHNfdGFibGUubGluay5zdHJlYW0pOnh0LmlzQ2hyZGV2KGtuLm1vZGUpJiYoa24u''@;'; put 'put ''bm9kZV9vcHM9cWkub3BzX3RhYmxlLmNocmRldi5ub2RlLGtuLnN0cmVhbV9vcHM9cWkub3BzX3RhYmxlLmNocmRldi5zdHJlYW0pLGtuLnRpbWVzdGFtcD1EYXRlLm5vdygpLHN0JiYoc3QuY29udGVudHNbeXRdPWtuLHN0LnRpbWVzdGFtcD1rbi50aW1lc3RhbXApLGtufSxnZXRGaWxlRGF0''@;'; put 'put ''YUFzVHlwZWRBcnJheTpmdW5jdGlvbihzdCl7cmV0dXJuIHN0LmNvbnRlbnRzP3N0LmNvbnRlbnRzLnN1YmFycmF5P3N0LmNvbnRlbnRzLnN1YmFycmF5KDAsc3QudXNlZEJ5dGVzKTpuZXcgVWludDhBcnJheShzdC5jb250ZW50cyk6bmV3IFVpbnQ4QXJyYXkoMCl9LGV4cGFuZEZpbGVTdG9y''@;'; put 'put ''YWdlOmZ1bmN0aW9uKHN0LHl0KXt2YXIgTHQ9c3QuY29udGVudHM/c3QuY29udGVudHMubGVuZ3RoOjA7aWYoIShMdD49eXQpKXt5dD1NYXRoLm1heCh5dCxMdCooTHQ8MTA0ODU3Nj8yOjEuMTI1KT4+PjApLDAhPUx0JiYoeXQ9TWF0aC5tYXgoeXQsMjU2KSk7dmFyIGFuPXN0LmNvbnRlbnRz''@;'; put 'put ''O3N0LmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KHl0KSxzdC51c2VkQnl0ZXM+MCYmc3QuY29udGVudHMuc2V0KGFuLnN1YmFycmF5KDAsc3QudXNlZEJ5dGVzKSwwKX19LHJlc2l6ZUZpbGVTdG9yYWdlOmZ1bmN0aW9uKHN0LHl0KXtpZihzdC51c2VkQnl0ZXMhPXl0KWlmKDA9PXl0KXN0LmNv''@;'; put 'put ''bnRlbnRzPW51bGwsc3QudXNlZEJ5dGVzPTA7ZWxzZXt2YXIgTHQ9c3QuY29udGVudHM7c3QuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkoeXQpLEx0JiZzdC5jb250ZW50cy5zZXQoTHQuc3ViYXJyYXkoMCxNYXRoLm1pbih5dCxzdC51c2VkQnl0ZXMpKSksc3QudXNlZEJ5dGVzPXl0fX0sbm9k''@;'; put 'put ''ZV9vcHM6e2dldGF0dHI6ZnVuY3Rpb24oc3Qpe3ZhciB5dD17fTtyZXR1cm4geXQuZGV2PXh0LmlzQ2hyZGV2KHN0Lm1vZGUpP3N0LmlkOjEseXQuaW5vPXN0LmlkLHl0Lm1vZGU9c3QubW9kZSx5dC5ubGluaz0xLHl0LnVpZD0wLHl0LmdpZD0wLHl0LnJkZXY9c3QucmRldix5dC5zaXplPXh0''@;'; put 'put ''LmlzRGlyKHN0Lm1vZGUpPzQwOTY6eHQuaXNGaWxlKHN0Lm1vZGUpP3N0LnVzZWRCeXRlczp4dC5pc0xpbmsoc3QubW9kZSk/c3QubGluay5sZW5ndGg6MCx5dC5hdGltZT1uZXcgRGF0ZShzdC50aW1lc3RhbXApLHl0Lm10aW1lPW5ldyBEYXRlKHN0LnRpbWVzdGFtcCkseXQuY3RpbWU9bmV3''@;'; put 'put ''IERhdGUoc3QudGltZXN0YW1wKSx5dC5ibGtzaXplPTQwOTYseXQuYmxvY2tzPU1hdGguY2VpbCh5dC5zaXplL3l0LmJsa3NpemUpLHl0fSxzZXRhdHRyOmZ1bmN0aW9uKHN0LHl0KXt2b2lkIDAhPT15dC5tb2RlJiYoc3QubW9kZT15dC5tb2RlKSx2b2lkIDAhPT15dC50aW1lc3RhbXAmJihz''@;'; put 'put ''dC50aW1lc3RhbXA9eXQudGltZXN0YW1wKSx2b2lkIDAhPT15dC5zaXplJiZxaS5yZXNpemVGaWxlU3RvcmFnZShzdCx5dC5zaXplKX0sbG9va3VwOmZ1bmN0aW9uKHN0LHl0KXt0aHJvdyB4dC5nZW5lcmljRXJyb3JzWzQ0XX0sbWtub2Q6ZnVuY3Rpb24oc3QseXQsTHQsYW4pe3JldHVybiBx''@;'; put 'put ''aS5jcmVhdGVOb2RlKHN0LHl0LEx0LGFuKX0scmVuYW1lOmZ1bmN0aW9uKHN0LHl0LEx0KXtpZih4dC5pc0RpcihzdC5tb2RlKSl7dmFyIGFuO3RyeXthbj14dC5sb29rdXBOb2RlKHl0LEx0KX1jYXRjaHt9aWYoYW4pZm9yKHZhciBrbiBpbiBhbi5jb250ZW50cyl0aHJvdyBuZXcgeHQuRXJy''@;'; put 'put ''bm9FcnJvcig1NSl9ZGVsZXRlIHN0LnBhcmVudC5jb250ZW50c1tzdC5uYW1lXSxzdC5wYXJlbnQudGltZXN0YW1wPURhdGUubm93KCksc3QubmFtZT1MdCx5dC5jb250ZW50c1tMdF09c3QseXQudGltZXN0YW1wPXN0LnBhcmVudC50aW1lc3RhbXAsc3QucGFyZW50PXl0fSx1bmxpbms6ZnVu''@;'; put 'put ''Y3Rpb24oc3QseXQpe2RlbGV0ZSBzdC5jb250ZW50c1t5dF0sc3QudGltZXN0YW1wPURhdGUubm93KCl9LHJtZGlyOmZ1bmN0aW9uKHN0LHl0KXt2YXIgTHQ9eHQubG9va3VwTm9kZShzdCx5dCk7Zm9yKHZhciBhbiBpbiBMdC5jb250ZW50cyl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig1NSk7''@;'; put 'put ''ZGVsZXRlIHN0LmNvbnRlbnRzW3l0XSxzdC50aW1lc3RhbXA9RGF0ZS5ub3coKX0scmVhZGRpcjpmdW5jdGlvbihzdCl7dmFyIHl0PVsiLiIsIi4uIl07Zm9yKHZhciBMdCBpbiBzdC5jb250ZW50cylzdC5jb250ZW50cy5oYXNPd25Qcm9wZXJ0eShMdCkmJnl0LnB1c2goTHQpO3JldHVybiB5''@;'; put 'put ''dH0sc3ltbGluazpmdW5jdGlvbihzdCx5dCxMdCl7dmFyIGFuPXFpLmNyZWF0ZU5vZGUoc3QseXQsNDE0NzEsMCk7cmV0dXJuIGFuLmxpbms9THQsYW59LHJlYWRsaW5rOmZ1bmN0aW9uKHN0KXtpZigheHQuaXNMaW5rKHN0Lm1vZGUpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDI4KTtyZXR1''@;'; put 'put ''cm4gc3QubGlua319LHN0cmVhbV9vcHM6e3JlYWQ6ZnVuY3Rpb24oc3QseXQsTHQsYW4sa24pe3ZhciBscj1zdC5ub2RlLmNvbnRlbnRzO2lmKGtuPj1zdC5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgdXI9TWF0aC5taW4oc3Qubm9kZS51c2VkQnl0ZXMta24sYW4pO2lmKHVyPjgmJmxy''@;'; put 'put ''LnN1YmFycmF5KXl0LnNldChsci5zdWJhcnJheShrbixrbit1ciksTHQpO2Vsc2UgZm9yKHZhciBIcj0wO0hyPHVyO0hyKyspeXRbTHQrSHJdPWxyW2tuK0hyXTtyZXR1cm4gdXJ9LHdyaXRlOmZ1bmN0aW9uKHN0LHl0LEx0LGFuLGtuLGxyKXtpZih5dC5idWZmZXI9PT1aZS5idWZmZXImJihs''@;'; put 'put ''cj0hMSksIWFuKXJldHVybiAwO3ZhciB1cj1zdC5ub2RlO2lmKHVyLnRpbWVzdGFtcD1EYXRlLm5vdygpLHl0LnN1YmFycmF5JiYoIXVyLmNvbnRlbnRzfHx1ci5jb250ZW50cy5zdWJhcnJheSkpe2lmKGxyKXJldHVybiB1ci5jb250ZW50cz15dC5zdWJhcnJheShMdCxMdCthbiksdXIudXNl''@;'; put 'put ''ZEJ5dGVzPWFuLGFuO2lmKDA9PT11ci51c2VkQnl0ZXMmJjA9PT1rbilyZXR1cm4gdXIuY29udGVudHM9eXQuc2xpY2UoTHQsTHQrYW4pLHVyLnVzZWRCeXRlcz1hbixhbjtpZihrbithbjw9dXIudXNlZEJ5dGVzKXJldHVybiB1ci5jb250ZW50cy5zZXQoeXQuc3ViYXJyYXkoTHQsTHQrYW4p''@;'; put 'put ''LGtuKSxhbn1pZihxaS5leHBhbmRGaWxlU3RvcmFnZSh1cixrbithbiksdXIuY29udGVudHMuc3ViYXJyYXkmJnl0LnN1YmFycmF5KXVyLmNvbnRlbnRzLnNldCh5dC5zdWJhcnJheShMdCxMdCthbiksa24pO2Vsc2UgZm9yKHZhciBIcj0wO0hyPGFuO0hyKyspdXIuY29udGVudHNba24rSHJd''@;'; put 'put ''PXl0W0x0K0hyXTtyZXR1cm4gdXIudXNlZEJ5dGVzPU1hdGgubWF4KHVyLnVzZWRCeXRlcyxrbithbiksYW59LGxsc2VlazpmdW5jdGlvbihzdCx5dCxMdCl7dmFyIGFuPXl0O2lmKDE9PT1MdD9hbis9c3QucG9zaXRpb246Mj09PUx0JiZ4dC5pc0ZpbGUoc3Qubm9kZS5tb2RlKSYmKGFuKz1z''@;'; put 'put ''dC5ub2RlLnVzZWRCeXRlcyksYW48MCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyOCk7cmV0dXJuIGFufSxhbGxvY2F0ZTpmdW5jdGlvbihzdCx5dCxMdCl7cWkuZXhwYW5kRmlsZVN0b3JhZ2Uoc3Qubm9kZSx5dCtMdCksc3Qubm9kZS51c2VkQnl0ZXM9TWF0aC5tYXgoc3Qubm9kZS51c2Vk''@;'; put 'put ''Qnl0ZXMseXQrTHQpfSxtbWFwOmZ1bmN0aW9uKHN0LHl0LEx0LGFuLGtuKXtpZigheHQuaXNGaWxlKHN0Lm5vZGUubW9kZSkpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDMpO3ZhciBscix1cixIcj1zdC5ub2RlLmNvbnRlbnRzO2lmKDIma258fEhyLmJ1ZmZlciE9PVZlKXtpZigoTHQ+MHx8''@;'; put 'put ''THQreXQ8SHIubGVuZ3RoKSYmKEhyPUhyLnN1YmFycmF5P0hyLnN1YmFycmF5KEx0LEx0K3l0KTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChIcixMdCxMdCt5dCkpLHVyPSEwLCEobHI9a28oeXQpKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig0OCk7WmUuc2V0KEhyLGxyKX1lbHNlIHVy''@;'; put 'put ''PSExLGxyPUhyLmJ5dGVPZmZzZXQ7cmV0dXJue3B0cjpscixhbGxvY2F0ZWQ6dXJ9fSxtc3luYzpmdW5jdGlvbihzdCx5dCxMdCxhbixrbil7cmV0dXJuIHFpLnN0cmVhbV9vcHMud3JpdGUoc3QseXQsMCxhbixMdCwhMSksMH19fSx4dD17cm9vdDpudWxsLG1vdW50czpbXSxkZXZpY2VzOnt9''@;'; put 'put ''LHN0cmVhbXM6W10sbmV4dElub2RlOjEsbmFtZVRhYmxlOm51bGwsY3VycmVudFBhdGg6Ii8iLGluaXRpYWxpemVkOiExLGlnbm9yZVBlcm1pc3Npb25zOiEwLEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGZpbGVzeXN0ZW1zOm51bGwsc3luY0ZTUmVxdWVzdHM6MCxsb29rdXBQ''@;'; put 'put ''YXRoOihzdCx5dD17fSk9PntpZighKHN0PVJpLnJlc29sdmUoc3QpKSlyZXR1cm57cGF0aDoiIixub2RlOm51bGx9O2lmKCh5dD1PYmplY3QuYXNzaWduKHtmb2xsb3dfbW91bnQ6ITAscmVjdXJzZV9jb3VudDowfSx5dCkpLnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgeHQuRXJybm9FcnJv''@;'; put 'put ''cigzMik7Zm9yKHZhciBMdD1zdC5zcGxpdCgiLyIpLmZpbHRlcihBbz0+ISFBbyksYW49eHQucm9vdCxrbj0iLyIsbHI9MDtscjxMdC5sZW5ndGg7bHIrKyl7dmFyIHVyPWxyPT09THQubGVuZ3RoLTE7aWYodXImJnl0LnBhcmVudClicmVhaztpZihhbj14dC5sb29rdXBOb2RlKGFuLEx0W2xy''@;'; put 'put ''XSksa249cXIuam9pbjIoa24sTHRbbHJdKSx4dC5pc01vdW50cG9pbnQoYW4pJiYoIXVyfHx1ciYmeXQuZm9sbG93X21vdW50KSYmKGFuPWFuLm1vdW50ZWQucm9vdCksIXVyfHx5dC5mb2xsb3cpZm9yKHZhciBIcj0wO3h0LmlzTGluayhhbi5tb2RlKTspe3ZhciB2bz14dC5yZWFkbGluayhr''@;'; put 'put ''bik7aWYoa249UmkucmVzb2x2ZShxci5kaXJuYW1lKGtuKSx2byksYW49eHQubG9va3VwUGF0aChrbix7cmVjdXJzZV9jb3VudDp5dC5yZWN1cnNlX2NvdW50KzF9KS5ub2RlLEhyKys+NDApdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMzIpfX1yZXR1cm57cGF0aDprbixub2RlOmFufX0sZ2V0''@;'; put 'put ''UGF0aDpzdD0+e2Zvcih2YXIgeXQ7Oyl7aWYoeHQuaXNSb290KHN0KSl7dmFyIEx0PXN0Lm1vdW50Lm1vdW50cG9pbnQ7cmV0dXJuIHl0PyIvIiE9PUx0W0x0Lmxlbmd0aC0xXT9MdCsiLyIreXQ6THQreXQ6THR9eXQ9eXQ/c3QubmFtZSsiLyIreXQ6c3QubmFtZSxzdD1zdC5wYXJlbnR9fSxo''@;'; put 'put ''YXNoTmFtZTooc3QseXQpPT57Zm9yKHZhciBMdD0wLGFuPTA7YW48eXQubGVuZ3RoO2FuKyspTHQ9KEx0PDw1KS1MdCt5dC5jaGFyQ29kZUF0KGFuKXwwO3JldHVybihzdCtMdD4+PjApJXh0Lm5hbWVUYWJsZS5sZW5ndGh9LGhhc2hBZGROb2RlOnN0PT57dmFyIHl0PXh0Lmhhc2hOYW1lKHN0''@;'; put 'put ''LnBhcmVudC5pZCxzdC5uYW1lKTtzdC5uYW1lX25leHQ9eHQubmFtZVRhYmxlW3l0XSx4dC5uYW1lVGFibGVbeXRdPXN0fSxoYXNoUmVtb3ZlTm9kZTpzdD0+e3ZhciB5dD14dC5oYXNoTmFtZShzdC5wYXJlbnQuaWQsc3QubmFtZSk7aWYoeHQubmFtZVRhYmxlW3l0XT09PXN0KXh0Lm5hbWVU''@;'; put 'put ''YWJsZVt5dF09c3QubmFtZV9uZXh0O2Vsc2UgZm9yKHZhciBMdD14dC5uYW1lVGFibGVbeXRdO0x0Oyl7aWYoTHQubmFtZV9uZXh0PT09c3Qpe0x0Lm5hbWVfbmV4dD1zdC5uYW1lX25leHQ7YnJlYWt9THQ9THQubmFtZV9uZXh0fX0sbG9va3VwTm9kZTooc3QseXQpPT57dmFyIEx0PXh0Lm1h''@;'; put 'put ''eUxvb2t1cChzdCk7aWYoTHQpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoTHQsc3QpO2Zvcih2YXIgYW49eHQuaGFzaE5hbWUoc3QuaWQseXQpLGtuPXh0Lm5hbWVUYWJsZVthbl07a247a249a24ubmFtZV9uZXh0KWlmKGtuLnBhcmVudC5pZD09PXN0LmlkJiZrbi5uYW1lPT09eXQpcmV0dXJu''@;'; put 'put ''IGtuO3JldHVybiB4dC5sb29rdXAoc3QseXQpfSxjcmVhdGVOb2RlOihzdCx5dCxMdCxhbik9Pnt2YXIga249bmV3IHh0LkZTTm9kZShzdCx5dCxMdCxhbik7cmV0dXJuIHh0Lmhhc2hBZGROb2RlKGtuKSxrbn0sZGVzdHJveU5vZGU6c3Q9Pnt4dC5oYXNoUmVtb3ZlTm9kZShzdCl9LGlzUm9v''@;'; put 'put ''dDpzdD0+c3Q9PT1zdC5wYXJlbnQsaXNNb3VudHBvaW50OnN0PT4hIXN0Lm1vdW50ZWQsaXNGaWxlOnN0PT4zMjc2OD09KDYxNDQwJnN0KSxpc0RpcjpzdD0+MTYzODQ9PSg2MTQ0MCZzdCksaXNMaW5rOnN0PT40MDk2MD09KDYxNDQwJnN0KSxpc0NocmRldjpzdD0+ODE5Mj09KDYxNDQwJnN0''@;'; put 'put ''KSxpc0Jsa2RldjpzdD0+MjQ1NzY9PSg2MTQ0MCZzdCksaXNGSUZPOnN0PT40MDk2PT0oNjE0NDAmc3QpLGlzU29ja2V0OnN0PT40OTE1Mj09KDQ5MTUyJnN0KSxmbGFnTW9kZXM6e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH0sbW9kZVN0cmluZ1RvRmxhZ3M6''@;'; put 'put ''c3Q9Pnt2YXIgeXQ9eHQuZmxhZ01vZGVzW3N0XTtpZih2b2lkIDA9PT15dCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZmlsZSBvcGVuIG1vZGU6ICIrc3QpO3JldHVybiB5dH0sZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6c3Q9Pnt2YXIgeXQ9WyJyIiwidyIsInJ3Il1bMyZzdF07cmV0dXJu''@;'; put 'put ''IDUxMiZzdCYmKHl0Kz0idyIpLHl0fSxub2RlUGVybWlzc2lvbnM6KHN0LHl0KT0+eHQuaWdub3JlUGVybWlzc2lvbnN8fCgheXQuaW5jbHVkZXMoInIiKXx8MjkyJnN0Lm1vZGUpJiYoIXl0LmluY2x1ZGVzKCJ3Iil8fDE0NiZzdC5tb2RlKSYmKCF5dC5pbmNsdWRlcygieCIpfHw3MyZzdC5t''@;'; put 'put ''b2RlKT8wOjIsbWF5TG9va3VwOnN0PT54dC5ub2RlUGVybWlzc2lvbnMoc3QsIngiKXx8KHN0Lm5vZGVfb3BzLmxvb2t1cD8wOjIpLG1heUNyZWF0ZTooc3QseXQpPT57dHJ5e3JldHVybiB4dC5sb29rdXBOb2RlKHN0LHl0KSwyMH1jYXRjaHt9cmV0dXJuIHh0Lm5vZGVQZXJtaXNzaW9ucyhz''@;'; put 'put ''dCwid3giKX0sbWF5RGVsZXRlOihzdCx5dCxMdCk9Pnt2YXIgYW47dHJ5e2FuPXh0Lmxvb2t1cE5vZGUoc3QseXQpfWNhdGNoKGxyKXtyZXR1cm4gbHIuZXJybm99dmFyIGtuPXh0Lm5vZGVQZXJtaXNzaW9ucyhzdCwid3giKTtpZihrbilyZXR1cm4ga247aWYoTHQpe2lmKCF4dC5pc0Rpcihh''@;'; put 'put ''bi5tb2RlKSlyZXR1cm4gNTQ7aWYoeHQuaXNSb290KGFuKXx8eHQuZ2V0UGF0aChhbik9PT14dC5jd2QoKSlyZXR1cm4gMTB9ZWxzZSBpZih4dC5pc0Rpcihhbi5tb2RlKSlyZXR1cm4gMzE7cmV0dXJuIDB9LG1heU9wZW46KHN0LHl0KT0+c3Q/eHQuaXNMaW5rKHN0Lm1vZGUpPzMyOnh0Lmlz''@;'; put 'put ''RGlyKHN0Lm1vZGUpJiYoInIiIT09eHQuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoeXQpfHw1MTImeXQpPzMxOnh0Lm5vZGVQZXJtaXNzaW9ucyhzdCx4dC5mbGFnc1RvUGVybWlzc2lvblN0cmluZyh5dCkpOjQ0LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooc3Q9MCx5dD14dC5NQVhfT1BF''@;'; put 'put ''Tl9GRFMpPT57Zm9yKHZhciBMdD1zdDtMdDw9eXQ7THQrKylpZigheHQuc3RyZWFtc1tMdF0pcmV0dXJuIEx0O3Rocm93IG5ldyB4dC5FcnJub0Vycm9yKDMzKX0sZ2V0U3RyZWFtOnN0PT54dC5zdHJlYW1zW3N0XSxjcmVhdGVTdHJlYW06KHN0LHl0LEx0KT0+e3h0LkZTU3RyZWFtfHwoeHQu''@;'; put 'put ''RlNTdHJlYW09ZnVuY3Rpb24oKXt0aGlzLnNoYXJlZD17fX0seHQuRlNTdHJlYW0ucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHh0LkZTU3RyZWFtLnByb3RvdHlwZSx7b2JqZWN0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSxzZXQ6ZnVuY3Rpb24oa24p''@;'; put 'put ''e3RoaXMubm9kZT1rbn19LGlzUmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDEhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNXcml0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDAhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNBcHBlbmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiAxMDI0''@;'; put 'put ''JnRoaXMuZmxhZ3N9fSxmbGFnczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hhcmVkLmZsYWdzfSxzZXQ6ZnVuY3Rpb24oa24pe3RoaXMuc2hhcmVkLmZsYWdzPWtufX0scG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZC5wb3NpdGlvbn0sc2V0OmZ1bmN0''@;'; put 'put ''aW9uKGtuKXt0aGlzLnNoYXJlZC5wb3NpdGlvbj1rbn19fSkpLHN0PU9iamVjdC5hc3NpZ24obmV3IHh0LkZTU3RyZWFtLHN0KTt2YXIgYW49eHQubmV4dGZkKHl0LEx0KTtyZXR1cm4gc3QuZmQ9YW4seHQuc3RyZWFtc1thbl09c3Qsc3R9LGNsb3NlU3RyZWFtOnN0PT57eHQuc3RyZWFtc1tz''@;'; put 'put ''dF09bnVsbH0sY2hyZGV2X3N0cmVhbV9vcHM6e29wZW46c3Q9Pnt2YXIgeXQ9eHQuZ2V0RGV2aWNlKHN0Lm5vZGUucmRldik7c3Quc3RyZWFtX29wcz15dC5zdHJlYW1fb3BzLHN0LnN0cmVhbV9vcHMub3BlbiYmc3Quc3RyZWFtX29wcy5vcGVuKHN0KX0sbGxzZWVrOigpPT57dGhyb3cgbmV3''@;'; put 'put ''IHh0LkVycm5vRXJyb3IoNzApfX0sbWFqb3I6c3Q9PnN0Pj44LG1pbm9yOnN0PT4yNTUmc3QsbWFrZWRldjooc3QseXQpPT5zdDw8OHx5dCxyZWdpc3RlckRldmljZTooc3QseXQpPT57eHQuZGV2aWNlc1tzdF09e3N0cmVhbV9vcHM6eXR9fSxnZXREZXZpY2U6c3Q9Pnh0LmRldmljZXNbc3Rd''@;'; put 'put ''LGdldE1vdW50czpzdD0+e2Zvcih2YXIgeXQ9W10sTHQ9W3N0XTtMdC5sZW5ndGg7KXt2YXIgYW49THQucG9wKCk7eXQucHVzaChhbiksTHQucHVzaC5hcHBseShMdCxhbi5tb3VudHMpfXJldHVybiB5dH0sc3luY2ZzOihzdCx5dCk9PnsiZnVuY3Rpb24iPT10eXBlb2Ygc3QmJih5dD1zdCxz''@;'; put 'put ''dD0hMSkseHQuc3luY0ZTUmVxdWVzdHMrKyx4dC5zeW5jRlNSZXF1ZXN0cz4xJiZYKCJ3YXJuaW5nOiAiK3h0LnN5bmNGU1JlcXVlc3RzKyIgRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29yayIpO3ZhciBMdD14dC5n''@;'; put 'put ''ZXRNb3VudHMoeHQucm9vdC5tb3VudCksYW49MDtmdW5jdGlvbiBrbih1cil7cmV0dXJuIHh0LnN5bmNGU1JlcXVlc3RzLS0seXQodXIpfWZ1bmN0aW9uIGxyKHVyKXtpZih1cilyZXR1cm4gbHIuZXJyb3JlZD92b2lkIDA6KGxyLmVycm9yZWQ9ITAsa24odXIpKTsrK2FuPj1MdC5sZW5ndGgm''@;'; put 'put ''JmtuKG51bGwpfUx0LmZvckVhY2godXI9PntpZighdXIudHlwZS5zeW5jZnMpcmV0dXJuIGxyKG51bGwpO3VyLnR5cGUuc3luY2ZzKHVyLHN0LGxyKX0pfSxtb3VudDooc3QseXQsTHQpPT57dmFyIGFuLGtuPSIvIj09PUx0LGxyPSFMdDtpZihrbiYmeHQucm9vdCl0aHJvdyBuZXcgeHQuRXJy''@;'; put 'put ''bm9FcnJvcigxMCk7aWYoIWtuJiYhbHIpe3ZhciB1cj14dC5sb29rdXBQYXRoKEx0LHtmb2xsb3dfbW91bnQ6ITF9KTtpZihMdD11ci5wYXRoLHh0LmlzTW91bnRwb2ludChhbj11ci5ub2RlKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigxMCk7aWYoIXh0LmlzRGlyKGFuLm1vZGUpKXRocm93''@;'; put 'put ''IG5ldyB4dC5FcnJub0Vycm9yKDU0KX12YXIgSHI9e3R5cGU6c3Qsb3B0czp5dCxtb3VudHBvaW50Okx0LG1vdW50czpbXX0sdm89c3QubW91bnQoSHIpO3JldHVybiB2by5tb3VudD1IcixIci5yb290PXZvLGtuP3h0LnJvb3Q9dm86YW4mJihhbi5tb3VudGVkPUhyLGFuLm1vdW50JiZhbi5t''@;'; put 'put ''b3VudC5tb3VudHMucHVzaChIcikpLHZvfSx1bm1vdW50OnN0PT57dmFyIHl0PXh0Lmxvb2t1cFBhdGgoc3Qse2ZvbGxvd19tb3VudDohMX0pO2lmKCF4dC5pc01vdW50cG9pbnQoeXQubm9kZSkpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMjgpO3ZhciBMdD15dC5ub2RlLGFuPUx0Lm1vdW50''@;'; put 'put ''ZWQsa249eHQuZ2V0TW91bnRzKGFuKTtPYmplY3Qua2V5cyh4dC5uYW1lVGFibGUpLmZvckVhY2godXI9Pntmb3IodmFyIEhyPXh0Lm5hbWVUYWJsZVt1cl07SHI7KXt2YXIgdm89SHIubmFtZV9uZXh0O2tuLmluY2x1ZGVzKEhyLm1vdW50KSYmeHQuZGVzdHJveU5vZGUoSHIpLEhyPXZvfX0p''@;'; put 'put ''LEx0Lm1vdW50ZWQ9bnVsbDt2YXIgbHI9THQubW91bnQubW91bnRzLmluZGV4T2YoYW4pO0x0Lm1vdW50Lm1vdW50cy5zcGxpY2UobHIsMSl9LGxvb2t1cDooc3QseXQpPT5zdC5ub2RlX29wcy5sb29rdXAoc3QseXQpLG1rbm9kOihzdCx5dCxMdCk9Pnt2YXIgYW49eHQubG9va3VwUGF0aChz''@;'; put 'put ''dCx7cGFyZW50OiEwfSkubm9kZSxrbj1xci5iYXNlbmFtZShzdCk7aWYoIWtufHwiLiI9PT1rbnx8Ii4uIj09PWtuKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDI4KTt2YXIgbHI9eHQubWF5Q3JlYXRlKGFuLGtuKTtpZihscil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcihscik7aWYoIWFuLm5v''@;'; put 'put ''ZGVfb3BzLm1rbm9kKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDYzKTtyZXR1cm4gYW4ubm9kZV9vcHMubWtub2QoYW4sa24seXQsTHQpfSxjcmVhdGU6KHN0LHl0KT0+KHl0PXZvaWQgMCE9PXl0P3l0OjQzOCx5dCY9NDA5NSx4dC5ta25vZChzdCx5dHw9MzI3NjgsMCkpLG1rZGlyOihzdCx5''@;'; put 'put ''dCk9Pih5dD12b2lkIDAhPT15dD95dDo1MTEseXQmPTEwMjMseHQubWtub2Qoc3QseXR8PTE2Mzg0LDApKSxta2RpclRyZWU6KHN0LHl0KT0+e2Zvcih2YXIgTHQ9c3Quc3BsaXQoIi8iKSxhbj0iIixrbj0wO2tuPEx0Lmxlbmd0aDsrK2tuKWlmKEx0W2tuXSl7YW4rPSIvIitMdFtrbl07dHJ5''@;'; put 'put ''e3h0Lm1rZGlyKGFuLHl0KX1jYXRjaChscil7aWYoMjAhPWxyLmVycm5vKXRocm93IGxyfX19LG1rZGV2OihzdCx5dCxMdCk9Pih2b2lkIDA9PT1MdCYmKEx0PXl0LHl0PTQzOCkseHQubWtub2Qoc3QseXR8PTgxOTIsTHQpKSxzeW1saW5rOihzdCx5dCk9PntpZighUmkucmVzb2x2ZShzdCkp''@;'; put 'put ''dGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDQpO3ZhciBMdD14dC5sb29rdXBQYXRoKHl0LHtwYXJlbnQ6ITB9KS5ub2RlO2lmKCFMdCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig0NCk7dmFyIGFuPXFyLmJhc2VuYW1lKHl0KSxrbj14dC5tYXlDcmVhdGUoTHQsYW4pO2lmKGtuKXRocm93IG5l''@;'; put 'put ''dyB4dC5FcnJub0Vycm9yKGtuKTtpZighTHQubm9kZV9vcHMuc3ltbGluayl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig2Myk7cmV0dXJuIEx0Lm5vZGVfb3BzLnN5bWxpbmsoTHQsYW4sc3QpfSxyZW5hbWU6KHN0LHl0KT0+e3ZhciBMdCxhbixrbj1xci5kaXJuYW1lKHN0KSxscj1xci5kaXJu''@;'; put 'put ''YW1lKHl0KSx1cj1xci5iYXNlbmFtZShzdCksSHI9cXIuYmFzZW5hbWUoeXQpO2lmKEx0PXh0Lmxvb2t1cFBhdGgoc3Qse3BhcmVudDohMH0pLm5vZGUsYW49eHQubG9va3VwUGF0aCh5dCx7cGFyZW50OiEwfSkubm9kZSwhTHR8fCFhbil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig0NCk7aWYo''@;'; put 'put ''THQubW91bnQhPT1hbi5tb3VudCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig3NSk7dmFyIHZvLEFvPXh0Lmxvb2t1cE5vZGUoTHQsdXIpLG1vPVJpLnJlbGF0aXZlKHN0LGxyKTtpZigiLiIhPT1tby5jaGFyQXQoMCkpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMjgpO2lmKCIuIiE9PShtbz1S''@;'; put 'put ''aS5yZWxhdGl2ZSh5dCxrbikpLmNoYXJBdCgwKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig1NSk7dHJ5e3ZvPXh0Lmxvb2t1cE5vZGUoYW4sSHIpfWNhdGNoe31pZihBbyE9PXZvKXt2YXIgdGE9eHQuaXNEaXIoQW8ubW9kZSksV2k9eHQubWF5RGVsZXRlKEx0LHVyLHRhKTtpZihXaSl0aHJv''@;'; put 'put ''dyBuZXcgeHQuRXJybm9FcnJvcihXaSk7aWYoV2k9dm8/eHQubWF5RGVsZXRlKGFuLEhyLHRhKTp4dC5tYXlDcmVhdGUoYW4sSHIpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKFdpKTtpZighTHQubm9kZV9vcHMucmVuYW1lKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDYzKTtpZih4dC5pc01v''@;'; put 'put ''dW50cG9pbnQoQW8pfHx2byYmeHQuaXNNb3VudHBvaW50KHZvKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigxMCk7aWYoYW4hPT1MdCYmKFdpPXh0Lm5vZGVQZXJtaXNzaW9ucyhMdCwidyIpKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcihXaSk7eHQuaGFzaFJlbW92ZU5vZGUoQW8pO3RyeXtM''@;'; put 'put ''dC5ub2RlX29wcy5yZW5hbWUoQW8sYW4sSHIpfWNhdGNoKCRhKXt0aHJvdyAkYX1maW5hbGx5e3h0Lmhhc2hBZGROb2RlKEFvKX19fSxybWRpcjpzdD0+e3ZhciB5dD14dC5sb29rdXBQYXRoKHN0LHtwYXJlbnQ6ITB9KS5ub2RlLEx0PXFyLmJhc2VuYW1lKHN0KSxhbj14dC5sb29rdXBOb2Rl''@;'; put 'put ''KHl0LEx0KSxrbj14dC5tYXlEZWxldGUoeXQsTHQsITApO2lmKGtuKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKGtuKTtpZigheXQubm9kZV9vcHMucm1kaXIpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNjMpO2lmKHh0LmlzTW91bnRwb2ludChhbikpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3Io''@;'; put 'put ''MTApO3l0Lm5vZGVfb3BzLnJtZGlyKHl0LEx0KSx4dC5kZXN0cm95Tm9kZShhbil9LHJlYWRkaXI6c3Q9Pnt2YXIgeXQ9eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiEwfSkubm9kZTtpZigheXQubm9kZV9vcHMucmVhZGRpcil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig1NCk7cmV0dXJuIHl0''@;'; put 'put ''Lm5vZGVfb3BzLnJlYWRkaXIoeXQpfSx1bmxpbms6c3Q9Pnt2YXIgeXQ9eHQubG9va3VwUGF0aChzdCx7cGFyZW50OiEwfSkubm9kZTtpZigheXQpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDQpO3ZhciBMdD1xci5iYXNlbmFtZShzdCksYW49eHQubG9va3VwTm9kZSh5dCxMdCksa249eHQu''@;'; put 'put ''bWF5RGVsZXRlKHl0LEx0LCExKTtpZihrbil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcihrbik7aWYoIXl0Lm5vZGVfb3BzLnVubGluayl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig2Myk7aWYoeHQuaXNNb3VudHBvaW50KGFuKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigxMCk7eXQubm9kZV9v''@;'; put 'put ''cHMudW5saW5rKHl0LEx0KSx4dC5kZXN0cm95Tm9kZShhbil9LHJlYWRsaW5rOnN0PT57dmFyIHl0PXh0Lmxvb2t1cFBhdGgoc3QpLm5vZGU7aWYoIXl0KXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDQ0KTtpZigheXQubm9kZV9vcHMucmVhZGxpbmspdGhyb3cgbmV3IHh0LkVycm5vRXJyb3Io''@;'; put 'put ''MjgpO3JldHVybiBSaS5yZXNvbHZlKHh0LmdldFBhdGgoeXQucGFyZW50KSx5dC5ub2RlX29wcy5yZWFkbGluayh5dCkpfSxzdGF0OihzdCx5dCk9Pnt2YXIgTHQ9eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiF5dH0pLm5vZGU7aWYoIUx0KXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDQ0KTtp''@;'; put 'put ''ZighTHQubm9kZV9vcHMuZ2V0YXR0cil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig2Myk7cmV0dXJuIEx0Lm5vZGVfb3BzLmdldGF0dHIoTHQpfSxsc3RhdDpzdD0+eHQuc3RhdChzdCwhMCksY2htb2Q6KHN0LHl0LEx0KT0+e3ZhciBhbjtpZighKGFuPSJzdHJpbmciPT10eXBlb2Ygc3Q/eHQu''@;'; put 'put ''bG9va3VwUGF0aChzdCx7Zm9sbG93OiFMdH0pLm5vZGU6c3QpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNjMpO2FuLm5vZGVfb3BzLnNldGF0dHIoYW4se21vZGU6NDA5NSZ5dHwtNDA5NiZhbi5tb2RlLHRpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGxjaG1vZDoo''@;'; put 'put ''c3QseXQpPT57eHQuY2htb2Qoc3QseXQsITApfSxmY2htb2Q6KHN0LHl0KT0+e3ZhciBMdD14dC5nZXRTdHJlYW0oc3QpO2lmKCFMdCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTt4dC5jaG1vZChMdC5ub2RlLHl0KX0sY2hvd246KHN0LHl0LEx0LGFuKT0+e3ZhciBrbjtpZighKGtuPSJz''@;'; put 'put ''dHJpbmciPT10eXBlb2Ygc3Q/eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiFhbn0pLm5vZGU6c3QpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNjMpO2tuLm5vZGVfb3BzLnNldGF0dHIoa24se3RpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGxjaG93bjooc3QseXQs''@;'; put 'put ''THQpPT57eHQuY2hvd24oc3QseXQsTHQsITApfSxmY2hvd246KHN0LHl0LEx0KT0+e3ZhciBhbj14dC5nZXRTdHJlYW0oc3QpO2lmKCFhbil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTt4dC5jaG93bihhbi5ub2RlLHl0LEx0KX0sdHJ1bmNhdGU6KHN0LHl0KT0+e2lmKHl0PDApdGhyb3cg''@;'; put 'put ''bmV3IHh0LkVycm5vRXJyb3IoMjgpO3ZhciBMdDtpZighKEx0PSJzdHJpbmciPT10eXBlb2Ygc3Q/eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiEwfSkubm9kZTpzdCkubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig2Myk7aWYoeHQuaXNEaXIoTHQubW9kZSkpdGhy''@;'; put 'put ''b3cgbmV3IHh0LkVycm5vRXJyb3IoMzEpO2lmKCF4dC5pc0ZpbGUoTHQubW9kZSkpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMjgpO3ZhciBhbj14dC5ub2RlUGVybWlzc2lvbnMoTHQsInciKTtpZihhbil0aHJvdyBuZXcgeHQuRXJybm9FcnJvcihhbik7THQubm9kZV9vcHMuc2V0YXR0cihM''@;'; put 'put ''dCx7c2l6ZTp5dCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxmdHJ1bmNhdGU6KHN0LHl0KT0+e3ZhciBMdD14dC5nZXRTdHJlYW0oc3QpO2lmKCFMdCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTtpZighKDIwOTcxNTUmTHQuZmxhZ3MpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDI4KTt4''@;'; put 'put ''dC50cnVuY2F0ZShMdC5ub2RlLHl0KX0sdXRpbWU6KHN0LHl0LEx0KT0+e3ZhciBhbj14dC5sb29rdXBQYXRoKHN0LHtmb2xsb3c6ITB9KS5ub2RlO2FuLm5vZGVfb3BzLnNldGF0dHIoYW4se3RpbWVzdGFtcDpNYXRoLm1heCh5dCxMdCl9KX0sb3Blbjooc3QseXQsTHQpPT57aWYoIiI9PT1z''@;'; put 'put ''dCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig0NCk7dmFyIGFuO2lmKEx0PXZvaWQgMD09PUx0PzQzODpMdCxMdD02NCYoeXQ9InN0cmluZyI9PXR5cGVvZiB5dD94dC5tb2RlU3RyaW5nVG9GbGFncyh5dCk6eXQpPzQwOTUmTHR8MzI3Njg6MCwib2JqZWN0Ij09dHlwZW9mIHN0KWFuPXN0O2Vs''@;'; put 'put ''c2V7c3Q9cXIubm9ybWFsaXplKHN0KTt0cnl7YW49eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiEoMTMxMDcyJnl0KX0pLm5vZGV9Y2F0Y2h7fX12YXIga249ITE7aWYoNjQmeXQpaWYoYW4pe2lmKDEyOCZ5dCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyMCl9ZWxzZSBhbj14dC5ta25vZChz''@;'; put 'put ''dCxMdCwwKSxrbj0hMDtpZighYW4pdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDQpO2lmKHh0LmlzQ2hyZGV2KGFuLm1vZGUpJiYoeXQmPS01MTMpLDY1NTM2Jnl0JiYheHQuaXNEaXIoYW4ubW9kZSkpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNTQpO2lmKCFrbil7dmFyIGxyPXh0Lm1heU9w''@;'; put 'put ''ZW4oYW4seXQpO2lmKGxyKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKGxyKX01MTImeXQmJiFrbiYmeHQudHJ1bmNhdGUoYW4sMCkseXQmPS0xMzE3MTM7dmFyIHVyPXh0LmNyZWF0ZVN0cmVhbSh7bm9kZTphbixwYXRoOnh0LmdldFBhdGgoYW4pLGZsYWdzOnl0LHNlZWthYmxlOiEwLHBvc2l0''@;'; put 'put ''aW9uOjAsc3RyZWFtX29wczphbi5zdHJlYW1fb3BzLHVuZ290dGVuOltdLGVycm9yOiExfSk7cmV0dXJuIHVyLnN0cmVhbV9vcHMub3BlbiYmdXIuc3RyZWFtX29wcy5vcGVuKHVyKSwhZi5sb2dSZWFkRmlsZXN8fDEmeXR8fCh4dC5yZWFkRmlsZXN8fCh4dC5yZWFkRmlsZXM9e30pLHN0IGlu''@;'; put 'put ''IHh0LnJlYWRGaWxlc3x8KHh0LnJlYWRGaWxlc1tzdF09MSkpLHVyfSxjbG9zZTpzdD0+e2lmKHh0LmlzQ2xvc2VkKHN0KSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTtzdC5nZXRkZW50cyYmKHN0LmdldGRlbnRzPW51bGwpO3RyeXtzdC5zdHJlYW1fb3BzLmNsb3NlJiZzdC5zdHJlYW1f''@;'; put 'put ''b3BzLmNsb3NlKHN0KX1jYXRjaCh5dCl7dGhyb3cgeXR9ZmluYWxseXt4dC5jbG9zZVN0cmVhbShzdC5mZCl9c3QuZmQ9bnVsbH0saXNDbG9zZWQ6c3Q9Pm51bGw9PT1zdC5mZCxsbHNlZWs6KHN0LHl0LEx0KT0+e2lmKHh0LmlzQ2xvc2VkKHN0KSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4''@;'; put 'put ''KTtpZighc3Quc2Vla2FibGV8fCFzdC5zdHJlYW1fb3BzLmxsc2Vlayl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig3MCk7aWYoMCE9THQmJjEhPUx0JiYyIT1MdCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyOCk7cmV0dXJuIHN0LnBvc2l0aW9uPXN0LnN0cmVhbV9vcHMubGxzZWVrKHN0LHl0''@;'; put 'put ''LEx0KSxzdC51bmdvdHRlbj1bXSxzdC5wb3NpdGlvbn0scmVhZDooc3QseXQsTHQsYW4sa24pPT57aWYoYW48MHx8a248MCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyOCk7aWYoeHQuaXNDbG9zZWQoc3QpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDgpO2lmKDE9PSgyMDk3MTU1JnN0LmZs''@;'; put 'put ''YWdzKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTtpZih4dC5pc0RpcihzdC5ub2RlLm1vZGUpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDMxKTtpZighc3Quc3RyZWFtX29wcy5yZWFkKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDI4KTt2YXIgbHI9dm9pZCAwIT09a247aWYobHIpe2lm''@;'; put 'put ''KCFzdC5zZWVrYWJsZSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig3MCl9ZWxzZSBrbj1zdC5wb3NpdGlvbjt2YXIgdXI9c3Quc3RyZWFtX29wcy5yZWFkKHN0LHl0LEx0LGFuLGtuKTtyZXR1cm4gbHJ8fChzdC5wb3NpdGlvbis9dXIpLHVyfSx3cml0ZTooc3QseXQsTHQsYW4sa24sbHIpPT57''@;'; put 'put ''aWYoYW48MHx8a248MCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyOCk7aWYoeHQuaXNDbG9zZWQoc3QpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDgpO2lmKCEoMjA5NzE1NSZzdC5mbGFncykpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoOCk7aWYoeHQuaXNEaXIoc3Qubm9kZS5tb2RlKSl0''@;'; put 'put ''aHJvdyBuZXcgeHQuRXJybm9FcnJvcigzMSk7aWYoIXN0LnN0cmVhbV9vcHMud3JpdGUpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMjgpO3N0LnNlZWthYmxlJiYxMDI0JnN0LmZsYWdzJiZ4dC5sbHNlZWsoc3QsMCwyKTt2YXIgdXI9dm9pZCAwIT09a247aWYodXIpe2lmKCFzdC5zZWVrYWJs''@;'; put 'put ''ZSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig3MCl9ZWxzZSBrbj1zdC5wb3NpdGlvbjt2YXIgSHI9c3Quc3RyZWFtX29wcy53cml0ZShzdCx5dCxMdCxhbixrbixscik7cmV0dXJuIHVyfHwoc3QucG9zaXRpb24rPUhyKSxIcn0sYWxsb2NhdGU6KHN0LHl0LEx0KT0+e2lmKHh0LmlzQ2xvc2Vk''@;'; put 'put ''KHN0KSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTtpZih5dDwwfHxMdDw9MCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigyOCk7aWYoISgyMDk3MTU1JnN0LmZsYWdzKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig4KTtpZigheHQuaXNGaWxlKHN0Lm5vZGUubW9kZSkmJiF4dC5pc0Rpcihz''@;'; put 'put ''dC5ub2RlLm1vZGUpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDQzKTtpZighc3Quc3RyZWFtX29wcy5hbGxvY2F0ZSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcigxMzgpO3N0LnN0cmVhbV9vcHMuYWxsb2NhdGUoc3QseXQsTHQpfSxtbWFwOihzdCx5dCxMdCxhbixrbik9PntpZigyJmFuJiYh''@;'; put 'put ''KDIma24pJiYyIT0oMjA5NzE1NSZzdC5mbGFncykpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMik7aWYoMT09KDIwOTcxNTUmc3QuZmxhZ3MpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDIpO2lmKCFzdC5zdHJlYW1fb3BzLm1tYXApdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDMpO3JldHVy''@;'; put 'put ''biBzdC5zdHJlYW1fb3BzLm1tYXAoc3QseXQsTHQsYW4sa24pfSxtc3luYzooc3QseXQsTHQsYW4sa24pPT5zdC5zdHJlYW1fb3BzLm1zeW5jP3N0LnN0cmVhbV9vcHMubXN5bmMoc3QseXQsTHQsYW4sa24pOjAsbXVubWFwOnN0PT4wLGlvY3RsOihzdCx5dCxMdCk9PntpZighc3Quc3RyZWFt''@;'; put 'put ''X29wcy5pb2N0bCl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig1OSk7cmV0dXJuIHN0LnN0cmVhbV9vcHMuaW9jdGwoc3QseXQsTHQpfSxyZWFkRmlsZTooc3QseXQ9e30pPT57aWYoeXQuZmxhZ3M9eXQuZmxhZ3N8fDAseXQuZW5jb2Rpbmc9eXQuZW5jb2Rpbmd8fCJiaW5hcnkiLCJ1dGY4IiE9''@;'; put 'put ''PXl0LmVuY29kaW5nJiYiYmluYXJ5IiE9PXl0LmVuY29kaW5nKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK3l0LmVuY29kaW5nKyciJyk7dmFyIEx0LGFuPXh0Lm9wZW4oc3QseXQuZmxhZ3MpLGtuPXh0LnN0YXQoc3QpLnNpemUsbHI9bmV3IFVpbnQ4QXJyYXko''@;'; put 'put ''a24pO3JldHVybiB4dC5yZWFkKGFuLGxyLDAsa24sMCksInV0ZjgiPT09eXQuZW5jb2Rpbmc/THQ9eW4obHIsMCk6ImJpbmFyeSI9PT15dC5lbmNvZGluZyYmKEx0PWxyKSx4dC5jbG9zZShhbiksTHR9LHdyaXRlRmlsZTooc3QseXQsTHQ9e30pPT57THQuZmxhZ3M9THQuZmxhZ3N8fDU3Nzt2''@;'; put 'put ''YXIgYW49eHQub3BlbihzdCxMdC5mbGFncyxMdC5tb2RlKTtpZigic3RyaW5nIj09dHlwZW9mIHl0KXt2YXIga249bmV3IFVpbnQ4QXJyYXkoVnIoeXQpKzEpLGxyPU9yKHl0LGtuLDAsa24ubGVuZ3RoKTt4dC53cml0ZShhbixrbiwwLGxyLHZvaWQgMCxMdC5jYW5Pd24pfWVsc2V7aWYoIUFy''@;'; put 'put ''cmF5QnVmZmVyLmlzVmlldyh5dCkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBkYXRhIHR5cGUiKTt4dC53cml0ZShhbix5dCwwLHl0LmJ5dGVMZW5ndGgsdm9pZCAwLEx0LmNhbk93bil9eHQuY2xvc2UoYW4pfSxjd2Q6KCk9Pnh0LmN1cnJlbnRQYXRoLGNoZGlyOnN0PT57dmFyIHl0''@;'; put 'put ''PXh0Lmxvb2t1cFBhdGgoc3Qse2ZvbGxvdzohMH0pO2lmKG51bGw9PT15dC5ub2RlKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDQ0KTtpZigheHQuaXNEaXIoeXQubm9kZS5tb2RlKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig1NCk7dmFyIEx0PXh0Lm5vZGVQZXJtaXNzaW9ucyh5dC5ub2Rl''@;'; put 'put ''LCJ4Iik7aWYoTHQpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoTHQpO3h0LmN1cnJlbnRQYXRoPXl0LnBhdGh9LGNyZWF0ZURlZmF1bHREaXJlY3RvcmllczooKT0+e3h0Lm1rZGlyKCIvdG1wIikseHQubWtkaXIoIi9ob21lIikseHQubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURl''@;'; put 'put ''ZmF1bHREZXZpY2VzOigpPT57eHQubWtkaXIoIi9kZXYiKSx4dC5yZWdpc3RlckRldmljZSh4dC5tYWtlZGV2KDEsMykse3JlYWQ6KCk9PjAsd3JpdGU6KHl0LEx0LGFuLGtuLGxyKT0+a259KSx4dC5ta2RldigiL2Rldi9udWxsIix4dC5tYWtlZGV2KDEsMykpLG9hLnJlZ2lzdGVyKHh0Lm1h''@;'; put 'put ''a2VkZXYoNSwwKSxvYS5kZWZhdWx0X3R0eV9vcHMpLG9hLnJlZ2lzdGVyKHh0Lm1ha2VkZXYoNiwwKSxvYS5kZWZhdWx0X3R0eTFfb3BzKSx4dC5ta2RldigiL2Rldi90dHkiLHh0Lm1ha2VkZXYoNSwwKSkseHQubWtkZXYoIi9kZXYvdHR5MSIseHQubWFrZWRldig2LDApKTt2YXIgc3Q9ZnVu''@;'; put 'put ''Y3Rpb24oKXtpZigib2JqZWN0Ij09dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpe3ZhciB5dD1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4oKT0+KGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoeXQpLHl0WzBdKX1yZXR1cm4oKT0+V3QoInJh''@;'; put 'put ''bmRvbURldmljZSIpfSgpO3h0LmNyZWF0ZURldmljZSgiL2RldiIsInJhbmRvbSIsc3QpLHh0LmNyZWF0ZURldmljZSgiL2RldiIsInVyYW5kb20iLHN0KSx4dC5ta2RpcigiL2Rldi9zaG0iKSx4dC5ta2RpcigiL2Rldi9zaG0vdG1wIil9LGNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllczooKT0+''@;'; put 'put ''e3h0Lm1rZGlyKCIvcHJvYyIpO3ZhciBzdD14dC5ta2RpcigiL3Byb2Mvc2VsZiIpO3h0Lm1rZGlyKCIvcHJvYy9zZWxmL2ZkIikseHQubW91bnQoe21vdW50OigpPT57dmFyIHl0PXh0LmNyZWF0ZU5vZGUoc3QsImZkIiwxNjg5NSw3Myk7cmV0dXJuIHl0Lm5vZGVfb3BzPXtsb29rdXA6KEx0''@;'; put 'put ''LGFuKT0+e3ZhciBscj14dC5nZXRTdHJlYW0oK2FuKTtpZighbHIpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoOCk7dmFyIHVyPXtwYXJlbnQ6bnVsbCxtb3VudDp7bW91bnRwb2ludDoiZmFrZSJ9LG5vZGVfb3BzOntyZWFkbGluazooKT0+bHIucGF0aH19O3JldHVybiB1ci5wYXJlbnQ9dXIs''@;'; put 'put ''dXJ9fSx5dH19LHt9LCIvcHJvYy9zZWxmL2ZkIil9LGNyZWF0ZVN0YW5kYXJkU3RyZWFtczooKT0+e2Yuc3RkaW4/eHQuY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLGYuc3RkaW4pOnh0LnN5bWxpbmsoIi9kZXYvdHR5IiwiL2Rldi9zdGRpbiIpLGYuc3Rkb3V0P3h0LmNyZWF0ZURldmlj''@;'; put 'put ''ZSgiL2RldiIsInN0ZG91dCIsbnVsbCxmLnN0ZG91dCk6eHQuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZG91dCIpLGYuc3RkZXJyP3h0LmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGVyciIsbnVsbCxmLnN0ZGVycik6eHQuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKSx4''@;'; put 'put ''dC5vcGVuKCIvZGV2L3N0ZGluIiwwKSx4dC5vcGVuKCIvZGV2L3N0ZG91dCIsMSkseHQub3BlbigiL2Rldi9zdGRlcnIiLDEpfSxlbnN1cmVFcnJub0Vycm9yOigpPT57eHQuRXJybm9FcnJvcnx8KHh0LkVycm5vRXJyb3I9ZnVuY3Rpb24oc3QseXQpe3RoaXMubm9kZT15dCx0aGlzLnNldEVy''@;'; put 'put ''cm5vPWZ1bmN0aW9uKEx0KXt0aGlzLmVycm5vPUx0fSx0aGlzLnNldEVycm5vKHN0KSx0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIn0seHQuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yLHh0LkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPXh0LkVycm5vRXJyb3IsWzQ0XS5m''@;'; put 'put ''b3JFYWNoKHN0PT57eHQuZ2VuZXJpY0Vycm9yc1tzdF09bmV3IHh0LkVycm5vRXJyb3Ioc3QpLHh0LmdlbmVyaWNFcnJvcnNbc3RdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKX0sc3RhdGljSW5pdDooKT0+e3h0LmVuc3VyZUVycm5vRXJyb3IoKSx4dC5uYW1lVGFibGU9''@;'; put 'put ''bmV3IEFycmF5KDQwOTYpLHh0Lm1vdW50KHFpLHt9LCIvIikseHQuY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzKCkseHQuY3JlYXRlRGVmYXVsdERldmljZXMoKSx4dC5jcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXMoKSx4dC5maWxlc3lzdGVtcz17TUVNRlM6cWl9fSxpbml0OihzdCx5dCxMdCk9''@;'; put 'put ''Pnt4dC5pbml0LmluaXRpYWxpemVkPSEwLHh0LmVuc3VyZUVycm5vRXJyb3IoKSxmLnN0ZGluPXN0fHxmLnN0ZGluLGYuc3Rkb3V0PXl0fHxmLnN0ZG91dCxmLnN0ZGVycj1MdHx8Zi5zdGRlcnIseHQuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9LHF1aXQ6KCk9Pnt4dC5pbml0LmluaXRpYWxp''@;'; put 'put ''emVkPSExO2Zvcih2YXIgc3Q9MDtzdDx4dC5zdHJlYW1zLmxlbmd0aDtzdCsrKXt2YXIgeXQ9eHQuc3RyZWFtc1tzdF07eXQmJnh0LmNsb3NlKHl0KX19LGdldE1vZGU6KHN0LHl0KT0+e3ZhciBMdD0wO3JldHVybiBzdCYmKEx0fD0zNjUpLHl0JiYoTHR8PTE0NiksTHR9LGZpbmRPYmplY3Q6''@;'; put 'put ''KHN0LHl0KT0+e3ZhciBMdD14dC5hbmFseXplUGF0aChzdCx5dCk7cmV0dXJuIEx0LmV4aXN0cz9MdC5vYmplY3Q6bnVsbH0sYW5hbHl6ZVBhdGg6KHN0LHl0KT0+e3RyeXtzdD0oYW49eHQubG9va3VwUGF0aChzdCx7Zm9sbG93OiF5dH0pKS5wYXRofWNhdGNoe312YXIgTHQ9e2lzUm9vdDoh''@;'; put 'put ''MSxleGlzdHM6ITEsZXJyb3I6MCxuYW1lOm51bGwscGF0aDpudWxsLG9iamVjdDpudWxsLHBhcmVudEV4aXN0czohMSxwYXJlbnRQYXRoOm51bGwscGFyZW50T2JqZWN0Om51bGx9O3RyeXt2YXIgYW49eHQubG9va3VwUGF0aChzdCx7cGFyZW50OiEwfSk7THQucGFyZW50RXhpc3RzPSEwLEx0''@;'; put 'put ''LnBhcmVudFBhdGg9YW4ucGF0aCxMdC5wYXJlbnRPYmplY3Q9YW4ubm9kZSxMdC5uYW1lPXFyLmJhc2VuYW1lKHN0KSxhbj14dC5sb29rdXBQYXRoKHN0LHtmb2xsb3c6IXl0fSksTHQuZXhpc3RzPSEwLEx0LnBhdGg9YW4ucGF0aCxMdC5vYmplY3Q9YW4ubm9kZSxMdC5uYW1lPWFuLm5vZGUu''@;'; put 'put ''bmFtZSxMdC5pc1Jvb3Q9Ii8iPT09YW4ucGF0aH1jYXRjaChrbil7THQuZXJyb3I9a24uZXJybm99cmV0dXJuIEx0fSxjcmVhdGVQYXRoOihzdCx5dCxMdCxhbik9PntzdD0ic3RyaW5nIj09dHlwZW9mIHN0P3N0Onh0LmdldFBhdGgoc3QpO2Zvcih2YXIga249eXQuc3BsaXQoIi8iKS5yZXZl''@;'; put 'put ''cnNlKCk7a24ubGVuZ3RoOyl7dmFyIGxyPWtuLnBvcCgpO2lmKGxyKXt2YXIgdXI9cXIuam9pbjIoc3QsbHIpO3RyeXt4dC5ta2Rpcih1cil9Y2F0Y2h7fXN0PXVyfX1yZXR1cm4gdXJ9LGNyZWF0ZUZpbGU6KHN0LHl0LEx0LGFuLGtuKT0+e3ZhciBscj1xci5qb2luMigic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIHN0P3N0Onh0LmdldFBhdGgoc3QpLHl0KSx1cj14dC5nZXRNb2RlKGFuLGtuKTtyZXR1cm4geHQuY3JlYXRlKGxyLHVyKX0sY3JlYXRlRGF0YUZpbGU6KHN0LHl0LEx0LGFuLGtuLGxyKT0+e3ZhciB1cj15dDtzdCYmKHN0PSJzdHJpbmciPT10eXBlb2Ygc3Q/c3Q6eHQuZ2V0UGF0aChz''@;'; put 'put ''dCksdXI9eXQ/cXIuam9pbjIoc3QseXQpOnN0KTt2YXIgSHI9eHQuZ2V0TW9kZShhbixrbiksdm89eHQuY3JlYXRlKHVyLEhyKTtpZihMdCl7aWYoInN0cmluZyI9PXR5cGVvZiBMdCl7Zm9yKHZhciBBbz1uZXcgQXJyYXkoTHQubGVuZ3RoKSxtbz0wLHRhPUx0Lmxlbmd0aDttbzx0YTsrK21v''@;'; put 'put ''KUFvW21vXT1MdC5jaGFyQ29kZUF0KG1vKTtMdD1Bb314dC5jaG1vZCh2bywxNDZ8SHIpO3ZhciBXaT14dC5vcGVuKHZvLDU3Nyk7eHQud3JpdGUoV2ksTHQsMCxMdC5sZW5ndGgsMCxscikseHQuY2xvc2UoV2kpLHh0LmNobW9kKHZvLEhyKX1yZXR1cm4gdm99LGNyZWF0ZURldmljZTooc3Qs''@;'; put 'put ''eXQsTHQsYW4pPT57dmFyIGtuPXFyLmpvaW4yKCJzdHJpbmciPT10eXBlb2Ygc3Q/c3Q6eHQuZ2V0UGF0aChzdCkseXQpLGxyPXh0LmdldE1vZGUoISFMdCwhIWFuKTt4dC5jcmVhdGVEZXZpY2UubWFqb3J8fCh4dC5jcmVhdGVEZXZpY2UubWFqb3I9NjQpO3ZhciB1cj14dC5tYWtlZGV2KHh0''@;'; put 'put ''LmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiB4dC5yZWdpc3RlckRldmljZSh1cix7b3BlbjpIcj0+e0hyLnNlZWthYmxlPSExfSxjbG9zZTpIcj0+e2FuJiZhbi5idWZmZXImJmFuLmJ1ZmZlci5sZW5ndGgmJmFuKDEwKX0scmVhZDooSHIsdm8sQW8sbW8sdGEpPT57Zm9yKHZhciBX''@;'; put 'put ''aT0wLCRhPTA7JGE8bW87JGErKyl7dmFyIEJzO3RyeXtCcz1MdCgpfWNhdGNoe3Rocm93IG5ldyB4dC5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1CcyYmMD09PVdpKXRocm93IG5ldyB4dC5FcnJub0Vycm9yKDYpO2lmKG51bGw9PUJzKWJyZWFrO1dpKyssdm9bQW8rJGFdPUJzfXJldHVy''@;'; put 'put ''biBXaSYmKEhyLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLFdpfSx3cml0ZTooSHIsdm8sQW8sbW8sdGEpPT57Zm9yKHZhciBXaT0wO1dpPG1vO1dpKyspdHJ5e2FuKHZvW0FvK1dpXSl9Y2F0Y2h7dGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoMjkpfXJldHVybiBtbyYmKEhyLm5vZGUudGlt''@;'; put 'put ''ZXN0YW1wPURhdGUubm93KCkpLFdpfX0pLHh0Lm1rZGV2KGtuLGxyLHVyKX0sZm9yY2VMb2FkRmlsZTpzdD0+e2lmKHN0LmlzRGV2aWNlfHxzdC5pc0ZvbGRlcnx8c3QubGlua3x8c3QuY29udGVudHMpcmV0dXJuITA7dGhyb3cgdHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1Ij9uZXcgRXJyb3Io''@;'; put 'put ''IkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBpbiBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxl''@;'; put 'put ''IGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpOm5ldyBFcnJvcigiQ2Fubm90IGxvYWQgd2l0aG91dCByZWFkKCkgb3IgWE1MSHR0cFJlcXVlc3QuIil9LGNyZWF0ZUxhenlGaWxlOihzdCx5dCxMdCxhbixrbik9PntmdW5jdGlvbiBscigpe3RoaXMubGVuZ3RoS25vd249ITEsdGhpcy5j''@;'; put 'put ''aHVua3M9W119aWYobHIucHJvdG90eXBlLmdldD1mdW5jdGlvbihtbyl7aWYoIShtbz50aGlzLmxlbmd0aC0xfHxtbzwwKSl7dmFyIHRhPW1vJXRoaXMuY2h1bmtTaXplO3JldHVybiB0aGlzLmdldHRlcihtby90aGlzLmNodW5rU2l6ZXwwKVt0YV19fSxsci5wcm90b3R5cGUuc2V0RGF0YUdl''@;'; put 'put ''dHRlcj1mdW5jdGlvbihtbyl7dGhpcy5nZXR0ZXI9bW99LGxyLnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbigpe3ZhciBtbz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYobW8ub3BlbigiSEVBRCIsTHQsITEpLG1vLnNlbmQobnVsbCksIShtby5zdGF0dXM+PTIwMCYmbW8uc3RhdHVzPDMw''@;'; put 'put ''MHx8MzA0PT09bW8uc3RhdHVzKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIitMdCsiLiBTdGF0dXM6ICIrbW8uc3RhdHVzKTt2YXIgdGEsV2k9TnVtYmVyKG1vLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKSwkYT0odGE9bW8uZ2V0UmVzcG9uc2VIZWFkZXIo''@;'; put 'put ''IkFjY2VwdC1SYW5nZXMiKSkmJiJieXRlcyI9PT10YSxCcz0odGE9bW8uZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtRW5jb2RpbmciKSkmJiJnemlwIj09PXRhLE9zPTEwNDg1NzY7JGF8fChPcz1XaSk7dmFyIGYwPXRoaXM7ZjAuc2V0RGF0YUdldHRlcihtcz0+e3ZhciBBaT1tcypPcyxX''@;'; put 'put ''bz0obXMrMSkqT3MtMTtpZihXbz1NYXRoLm1pbihXbyxXaS0xKSx2b2lkIDA9PT1mMC5jaHVua3NbbXNdJiYoZjAuY2h1bmtzW21zXT0oKG5jLGpzKT0+e2lmKG5jPmpzKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIituYysiLCAiK2pzKyIpIG9yIG5vIGJ5dGVzIHJlcXVlc3Rl''@;'; put 'put ''ZCEiKTtpZihqcz5XaS0xKXRocm93IG5ldyBFcnJvcigib25seSAiK1dpKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB1dT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYodXUub3BlbigiR0VUIixMdCwhMSksV2khPT1PcyYmdXUuc2V0UmVxdWVzdEhlYWRlcigiUmFu''@;'; put 'put ''Z2UiLCJieXRlcz0iK25jKyItIitqcyksdXUucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsdXUub3ZlcnJpZGVNaW1lVHlwZSYmdXUub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpLHV1LnNlbmQobnVsbCksISh1dS5zdGF0dXM+PTIwMCYm''@;'; put 'put ''dXUuc3RhdHVzPDMwMHx8MzA0PT09dXUuc3RhdHVzKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIitMdCsiLiBTdGF0dXM6ICIrdXUuc3RhdHVzKTtyZXR1cm4gdm9pZCAwIT09dXUucmVzcG9uc2U/bmV3IFVpbnQ4QXJyYXkodXUucmVzcG9uc2V8fFtdKTpEbyh1dS5yZXNwb25z''@;'; put 'put ''ZVRleHR8fCIiLCEwKX0pKEFpLFdvKSksdm9pZCAwPT09ZjAuY2h1bmtzW21zXSl0aHJvdyBuZXcgRXJyb3IoImRvWEhSIGZhaWxlZCEiKTtyZXR1cm4gZjAuY2h1bmtzW21zXX0pLCFCcyYmV2l8fChPcz1XaT0xLFdpPXRoaXMuZ2V0dGVyKDApLmxlbmd0aCxPcz1XaSxPKCJMYXp5RmlsZXMg''@;'; put 'put ''b24gZ3ppcCBmb3JjZXMgZG93bmxvYWQgb2YgdGhlIHdob2xlIGZpbGUgd2hlbiBsZW5ndGggaXMgYWNjZXNzZWQiKSksdGhpcy5fbGVuZ3RoPVdpLHRoaXMuX2NodW5rU2l6ZT1Pcyx0aGlzLmxlbmd0aEtub3duPSEwfSx0eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiKXRocm93IkNhbm5vdCBk''@;'; put 'put ''byBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciB1cj17aXNEZXZpY2U6ITEsdXJsOkx0fSxIcj14dC5jcmVhdGVGaWxlKHN0LHl0LHVyLGFu''@;'; put 'put ''LGtuKTt1ci5jb250ZW50cz9Ici5jb250ZW50cz11ci5jb250ZW50czp1ci51cmwmJihIci5jb250ZW50cz1udWxsLEhyLnVybD11ci51cmwpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEhyLHt1c2VkQnl0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnRzLmxlbmd0aH19''@;'; put 'put ''fSk7dmFyIHZvPXt9O2Z1bmN0aW9uIEFvKG1vLHRhLFdpLCRhLEJzKXt2YXIgT3M9bW8ubm9kZS5jb250ZW50cztpZihCcz49T3MubGVuZ3RoKXJldHVybiAwO3ZhciBmMD1NYXRoLm1pbihPcy5sZW5ndGgtQnMsJGEpO2lmKE9zLnNsaWNlKWZvcih2YXIgbXM9MDttczxmMDttcysrKXRhW1dp''@;'; put 'put ''K21zXT1Pc1tCcyttc107ZWxzZSBmb3IobXM9MDttczxmMDttcysrKXRhW1dpK21zXT1Pcy5nZXQoQnMrbXMpO3JldHVybiBmMH1yZXR1cm4gT2JqZWN0LmtleXMoSHIuc3RyZWFtX29wcykuZm9yRWFjaChtbz0+e3ZhciB0YT1Ici5zdHJlYW1fb3BzW21vXTt2b1ttb109ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4geHQuZm9yY2VMb2FkRmlsZShIciksdGEuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0pLHZvLnJlYWQ9KG1vLHRhLFdpLCRhLEJzKT0+KHh0LmZvcmNlTG9hZEZpbGUoSHIpLEFvKG1vLHRhLFdpLCRhLEJzKSksdm8ubW1hcD0obW8sdGEsV2ksJGEsQnMpPT57eHQuZm9yY2VMb2FkRmls''@;'; put 'put ''ZShIcik7dmFyIE9zPWtvKHRhKTtpZighT3MpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDgpO3JldHVybiBBbyhtbyxaZSxPcyx0YSxXaSkse3B0cjpPcyxhbGxvY2F0ZWQ6ITB9fSxIci5zdHJlYW1fb3BzPXZvLEhyfSxjcmVhdGVQcmVsb2FkZWRGaWxlOihzdCx5dCxMdCxhbixrbixscix1''@;'; put 'put ''cixIcix2byxBbyk9Pnt2YXIgV2ksQnMsZjAsbW89eXQ/UmkucmVzb2x2ZShxci5qb2luMihzdCx5dCkpOnN0O2Z1bmN0aW9uIHRhKFdpKXtmdW5jdGlvbiAkYShCcyl7QW8mJkFvKCksSHJ8fHh0LmNyZWF0ZURhdGFGaWxlKHN0LHl0LEJzLGFuLGtuLHZvKSxsciYmbHIoKSxGdCgpfUJyb3dz''@;'; put 'put ''ZXIuaGFuZGxlZEJ5UHJlbG9hZFBsdWdpbihXaSxtbywkYSwoKT0+e3VyJiZ1cigpLEZ0KCl9KXx8JGEoV2kpfVN0KCksInN0cmluZyI9PXR5cGVvZiBMdD8oQnM9dXIsZjA9ImFsICIrKFdpPUx0KSwodm9pZCAwKShXaSxtcz0+e3hlKG1zLCdMb2FkaW5nIGRhdGEgZmlsZSAiJytXaSsnIiBm''@;'; put 'put ''YWlsZWQgKG5vIGFycmF5QnVmZmVyKS4nKSwoV2k9Pnt0YShXaSl9KShuZXcgVWludDhBcnJheShtcykpLGYwJiZGdCgpfSxtcz0+e2lmKCFCcyl0aHJvdydMb2FkaW5nIGRhdGEgZmlsZSAiJytXaSsnIiBmYWlsZWQuJztCcygpfSksZjAmJlN0KCkpOnRhKEx0KX0saW5kZXhlZERCOigpPT53''@;'; put 'put ''aW5kb3cuaW5kZXhlZERCfHx3aW5kb3cubW96SW5kZXhlZERCfHx3aW5kb3cud2Via2l0SW5kZXhlZERCfHx3aW5kb3cubXNJbmRleGVkREIsREJfTkFNRTooKT0+IkVNX0ZTXyIrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLERCX1ZFUlNJT046MjAsREJfU1RPUkVfTkFNRToiRklMRV9EQVRB''@;'; put 'put ''IixzYXZlRmlsZXNUb0RCOihzdCx5dCxMdCk9Pnt5dD15dHx8KCgpPT57fSksTHQ9THR8fCgoKT0+e30pO3ZhciBhbj14dC5pbmRleGVkREIoKTt0cnl7dmFyIGtuPWFuLm9wZW4oeHQuREJfTkFNRSgpLHh0LkRCX1ZFUlNJT04pfWNhdGNoKGxyKXtyZXR1cm4gTHQobHIpfWtuLm9udXBncmFk''@;'; put 'put ''ZW5lZWRlZD0oKT0+e08oImNyZWF0aW5nIGRiIiksa24ucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKHh0LkRCX1NUT1JFX05BTUUpfSxrbi5vbnN1Y2Nlc3M9KCk9Pnt2YXIgbHI9a24ucmVzdWx0LnRyYW5zYWN0aW9uKFt4dC5EQl9TVE9SRV9OQU1FXSwicmVhZHdyaXRlIiksdXI9bHIub2Jq''@;'; put 'put ''ZWN0U3RvcmUoeHQuREJfU1RPUkVfTkFNRSksSHI9MCx2bz0wLEFvPXN0Lmxlbmd0aDtmdW5jdGlvbiBtbygpezA9PXZvP3l0KCk6THQoKX1zdC5mb3JFYWNoKHRhPT57dmFyIFdpPXVyLnB1dCh4dC5hbmFseXplUGF0aCh0YSkub2JqZWN0LmNvbnRlbnRzLHRhKTtXaS5vbnN1Y2Nlc3M9KCk9''@;'; put 'put ''PnsrK0hyK3ZvPT1BbyYmbW8oKX0sV2kub25lcnJvcj0oKT0+e3ZvKyssSHIrdm89PUFvJiZtbygpfX0pLGxyLm9uZXJyb3I9THR9LGtuLm9uZXJyb3I9THR9LGxvYWRGaWxlc0Zyb21EQjooc3QseXQsTHQpPT57eXQ9eXR8fCgoKT0+e30pLEx0PUx0fHwoKCk9Pnt9KTt2YXIgYW49eHQuaW5k''@;'; put 'put ''ZXhlZERCKCk7dHJ5e3ZhciBrbj1hbi5vcGVuKHh0LkRCX05BTUUoKSx4dC5EQl9WRVJTSU9OKX1jYXRjaChscil7cmV0dXJuIEx0KGxyKX1rbi5vbnVwZ3JhZGVuZWVkZWQ9THQsa24ub25zdWNjZXNzPSgpPT57dmFyIGxyPWtuLnJlc3VsdDt0cnl7dmFyIHVyPWxyLnRyYW5zYWN0aW9uKFt4''@;'; put 'put ''dC5EQl9TVE9SRV9OQU1FXSwicmVhZG9ubHkiKX1jYXRjaChXaSl7cmV0dXJuIHZvaWQgTHQoV2kpfXZhciBIcj11ci5vYmplY3RTdG9yZSh4dC5EQl9TVE9SRV9OQU1FKSx2bz0wLEFvPTAsbW89c3QubGVuZ3RoO2Z1bmN0aW9uIHRhKCl7MD09QW8/eXQoKTpMdCgpfXN0LmZvckVhY2goV2k9''@;'; put 'put ''Pnt2YXIgJGE9SHIuZ2V0KFdpKTskYS5vbnN1Y2Nlc3M9KCk9Pnt4dC5hbmFseXplUGF0aChXaSkuZXhpc3RzJiZ4dC51bmxpbmsoV2kpLHh0LmNyZWF0ZURhdGFGaWxlKHFyLmRpcm5hbWUoV2kpLHFyLmJhc2VuYW1lKFdpKSwkYS5yZXN1bHQsITAsITAsITApLCsrdm8rQW89PW1vJiZ0YSgp''@;'; put 'put ''fSwkYS5vbmVycm9yPSgpPT57QW8rKyx2bytBbz09bW8mJnRhKCl9fSksdXIub25lcnJvcj1MdH0sa24ub25lcnJvcj1MdH19LExpPXtERUZBVUxUX1BPTExNQVNLOjUsY2FsY3VsYXRlQXQ6ZnVuY3Rpb24oc3QseXQsTHQpe2lmKHFyLmlzQWJzKHl0KSlyZXR1cm4geXQ7dmFyIGFuO2lmKGFu''@;'; put 'put ''PS0xMDA9PT1zdD94dC5jd2QoKTpMaS5nZXRTdHJlYW1Gcm9tRkQoc3QpLnBhdGgsMD09eXQubGVuZ3RoKXtpZighTHQpdGhyb3cgbmV3IHh0LkVycm5vRXJyb3IoNDQpO3JldHVybiBhbn1yZXR1cm4gcXIuam9pbjIoYW4seXQpfSxkb1N0YXQ6ZnVuY3Rpb24oc3QseXQsTHQpe3RyeXt2YXIg''@;'; put 'put ''YW49c3QoeXQpfWNhdGNoKEhyKXtpZihIciYmSHIubm9kZSYmcXIubm9ybWFsaXplKHl0KSE9PXFyLm5vcm1hbGl6ZSh4dC5nZXRQYXRoKEhyLm5vZGUpKSlyZXR1cm4tNTQ7dGhyb3cgSHJ9Z3RbTHQ+PjJdPWFuLmRldixndFtMdCs4Pj4yXT1hbi5pbm8sZ3RbTHQrMTI+PjJdPWFuLm1vZGUs''@;'; put 'put ''anRbTHQrMTY+PjJdPWFuLm5saW5rLGd0W0x0KzIwPj4yXT1hbi51aWQsZ3RbTHQrMjQ+PjJdPWFuLmdpZCxndFtMdCsyOD4+Ml09YW4ucmRldixFbj1bYW4uc2l6ZT4+PjAsKEFyPWFuLnNpemUsK01hdGguYWJzKEFyKT49MT9Bcj4wPygwfE1hdGgubWluKCtNYXRoLmZsb29yKEFyLzQyOTQ5''@;'; put 'put ''NjcyOTYpLDQyOTQ5NjcyOTUpKT4+PjA6fn4rTWF0aC5jZWlsKChBci0rKH5+QXI+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxndFtMdCs0MD4+Ml09RW5bMF0sZ3RbTHQrNDQ+PjJdPUVuWzFdLGd0W0x0KzQ4Pj4yXT00MDk2LGd0W0x0KzUyPj4yXT1hbi5ibG9ja3M7dmFyIGtuPWFuLmF0''@;'; put 'put ''aW1lLmdldFRpbWUoKSxscj1hbi5tdGltZS5nZXRUaW1lKCksdXI9YW4uY3RpbWUuZ2V0VGltZSgpO3JldHVybiBFbj1bTWF0aC5mbG9vcihrbi8xZTMpPj4+MCwoQXI9TWF0aC5mbG9vcihrbi8xZTMpLCtNYXRoLmFicyhBcik+PTE/QXI+MD8oMHxNYXRoLm1pbigrTWF0aC5mbG9vcihBci80''@;'; put 'put ''Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KSk+Pj4wOn5+K01hdGguY2VpbCgoQXItKyh+fkFyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sZ3RbTHQrNTY+PjJdPUVuWzBdLGd0W0x0KzYwPj4yXT1FblsxXSxqdFtMdCs2ND4+Ml09a24lMWUzKjFlMyxFbj1bTWF0aC5mbG9vcihsci8xZTMpPj4+''@;'; put 'put ''MCwoQXI9TWF0aC5mbG9vcihsci8xZTMpLCtNYXRoLmFicyhBcik+PTE/QXI+MD8oMHxNYXRoLm1pbigrTWF0aC5mbG9vcihBci80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KSk+Pj4wOn5+K01hdGguY2VpbCgoQXItKyh+fkFyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sZ3RbTHQrNzI+PjJd''@;'; put 'put ''PUVuWzBdLGd0W0x0Kzc2Pj4yXT1FblsxXSxqdFtMdCs4MD4+Ml09bHIlMWUzKjFlMyxFbj1bTWF0aC5mbG9vcih1ci8xZTMpPj4+MCwoQXI9TWF0aC5mbG9vcih1ci8xZTMpLCtNYXRoLmFicyhBcik+PTE/QXI+MD8oMHxNYXRoLm1pbigrTWF0aC5mbG9vcihBci80Mjk0OTY3Mjk2KSw0Mjk0''@;'; put 'put ''OTY3Mjk1KSk+Pj4wOn5+K01hdGguY2VpbCgoQXItKyh+fkFyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sZ3RbTHQrODg+PjJdPUVuWzBdLGd0W0x0KzkyPj4yXT1FblsxXSxqdFtMdCs5Nj4+Ml09dXIlMWUzKjFlMyxFbj1bYW4uaW5vPj4+MCwoQXI9YW4uaW5vLCtNYXRoLmFicyhBcik+''@;'; put 'put ''PTE/QXI+MD8oMHxNYXRoLm1pbigrTWF0aC5mbG9vcihBci80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KSk+Pj4wOn5+K01hdGguY2VpbCgoQXItKyh+fkFyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sZ3RbTHQrMTA0Pj4yXT1FblswXSxndFtMdCsxMDg+PjJdPUVuWzFdLDB9LGRvTXN5bmM6''@;'; put 'put ''ZnVuY3Rpb24oc3QseXQsTHQsYW4sa24pe2lmKCF4dC5pc0ZpbGUoeXQubm9kZS5tb2RlKSl0aHJvdyBuZXcgeHQuRXJybm9FcnJvcig0Myk7aWYoMiZhbilyZXR1cm4gMDt2YXIgbHI9bHQuc2xpY2Uoc3Qsc3QrTHQpO3h0Lm1zeW5jKHl0LGxyLGtuLEx0LGFuKX0sdmFyYXJnczp2b2lkIDAs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIExpLnZhcmFyZ3MrPTQsZ3RbTGkudmFyYXJncy00Pj4yXX0sZ2V0U3RyOmZ1bmN0aW9uKHN0KXtyZXR1cm4gUW4oc3QpfSxnZXRTdHJlYW1Gcm9tRkQ6ZnVuY3Rpb24oc3Qpe3ZhciB5dD14dC5nZXRTdHJlYW0oc3QpO2lmKCF5dCl0aHJvdyBuZXcgeHQu''@;'; put 'put ''RXJybm9FcnJvcig4KTtyZXR1cm4geXR9fSxaYT1bXTtmdW5jdGlvbiB2bChzdCl7dHJ5e3JldHVybiBhZS5ncm93KHN0LVZlLmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksWnIoYWUuYnVmZmVyKSwxfWNhdGNoe319dmFyIGhzPXt9O2Z1bmN0aW9uIEhzKCl7aWYoIUhzLnN0cmluZ3Mpe3ZhciBz''@;'; put 'put ''dD17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBs''@;'; put 'put ''YWNlKCItIiwiXyIpKyIuVVRGLTgiLF86bXx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciB5dCBpbiBocyl2b2lkIDA9PT1oc1t5dF0/ZGVsZXRlIHN0W3l0XTpzdFt5dF09aHNbeXRdO3ZhciBMdD1bXTtmb3IodmFyIHl0IGluIHN0KUx0LnB1c2goeXQrIj0iK3N0W3l0XSk7SHMuc3RyaW5n''@;'; put 'put ''cz1MdH1yZXR1cm4gSHMuc3RyaW5nc31mdW5jdGlvbiBzdShzdCl7cmV0dXJuIHN0JTQ9PTAmJihzdCUxMDAhPTB8fHN0JTQwMD09MCl9dmFyIEIxPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sajE9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSx0''@;'; put 'put ''Yz1mdW5jdGlvbihzdCx5dCxMdCxhbil7c3R8fChzdD10aGlzKSx0aGlzLnBhcmVudD1zdCx0aGlzLm1vdW50PXN0Lm1vdW50LHRoaXMubW91bnRlZD1udWxsLHRoaXMuaWQ9eHQubmV4dElub2RlKyssdGhpcy5uYW1lPXl0LHRoaXMubW9kZT1MdCx0aGlzLm5vZGVfb3BzPXt9LHRoaXMuc3Ry''@;'; put 'put ''ZWFtX29wcz17fSx0aGlzLnJkZXY9YW59O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRjLnByb3RvdHlwZSx7cmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDM2NT09KDM2NSZ0aGlzLm1vZGUpfSxzZXQ6ZnVuY3Rpb24oc3Qpe3N0P3RoaXMubW9kZXw9MzY1OnRoaXMubW9kZSY9LTM2Nn19''@;'; put 'put ''LHdyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTQ2PT0oMTQ2JnRoaXMubW9kZSl9LHNldDpmdW5jdGlvbihzdCl7c3Q/dGhpcy5tb2RlfD0xNDY6dGhpcy5tb2RlJj0tMTQ3fX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB4dC5pc0Rpcih0aGlzLm1vZGUpfX0saXNEZXZp''@;'; put 'put ''Y2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB4dC5pc0NocmRldih0aGlzLm1vZGUpfX19KSx4dC5GU05vZGU9dGMseHQuc3RhdGljSW5pdCgpO3ZhciBVMT17YjpmdW5jdGlvbihzdCx5dCxMdCl7dGhyb3cgbmV3IGRpKHN0KS5pbml0KHl0LEx0KSxzdH0sbDpmdW5jdGlvbihzdCx5dCxMdCxh''@;'; put 'put ''bil7dHJ5e2lmKHl0PUxpLmdldFN0cih5dCkseXQ9TGkuY2FsY3VsYXRlQXQoc3QseXQpLC04Jkx0KXJldHVybi0yODt2YXIga249eHQubG9va3VwUGF0aCh5dCx7Zm9sbG93OiEwfSkubm9kZTtpZigha24pcmV0dXJuLTQ0O3ZhciBscj0iIjtyZXR1cm4gNCZMdCYmKGxyKz0iciIpLDImTHQm''@;'; put 'put ''Jihscis9InciKSwxJkx0JiYobHIrPSJ4IiksbHImJnh0Lm5vZGVQZXJtaXNzaW9ucyhrbixscik/LTI6MH1jYXRjaCh1cil7aWYodm9pZCAwPT09eHR8fCEodXIgaW5zdGFuY2VvZiB4dC5FcnJub0Vycm9yKSl0aHJvdyB1cjtyZXR1cm4tdXIuZXJybm99fSxpOmZ1bmN0aW9uKHN0LHl0LEx0''@;'; put 'put ''KXtMaS52YXJhcmdzPUx0O3RyeXt2YXIgYW49TGkuZ2V0U3RyZWFtRnJvbUZEKHN0KTtzd2l0Y2goeXQpe2Nhc2UgMDpyZXR1cm4oa249TGkuZ2V0KCkpPDA/LTI4Onh0LmNyZWF0ZVN0cmVhbShhbixrbikuZmQ7Y2FzZSAxOmNhc2UgMjpjYXNlIDY6Y2FzZSA3OnJldHVybiAwO2Nhc2UgMzpy''@;'; put 'put ''ZXR1cm4gYW4uZmxhZ3M7Y2FzZSA0OnZhciBrbj1MaS5nZXQoKTtyZXR1cm4gYW4uZmxhZ3N8PWtuLDA7Y2FzZSA1OnJldHVybiBrbj1MaS5nZXQoKSxkdFtrbiswPj4xXT0yLDA7Y2FzZSAxNjpjYXNlIDg6ZGVmYXVsdDpyZXR1cm4tMjg7Y2FzZSA5OnJldHVybiBndFtHbCgpPj4yXT0yOCwt''@;'; put 'put ''MX19Y2F0Y2godXIpe2lmKHZvaWQgMD09PXh0fHwhKHVyIGluc3RhbmNlb2YgeHQuRXJybm9FcnJvcikpdGhyb3cgdXI7cmV0dXJuLXVyLmVycm5vfX0sdzpmdW5jdGlvbihzdCx5dCl7dHJ5e3ZhciBMdD1MaS5nZXRTdHJlYW1Gcm9tRkQoc3QpO3JldHVybiBMaS5kb1N0YXQoeHQuc3RhdCxM''@;'; put 'put ''dC5wYXRoLHl0KX1jYXRjaChhbil7aWYodm9pZCAwPT09eHR8fCEoYW4gaW5zdGFuY2VvZiB4dC5FcnJub0Vycm9yKSl0aHJvdyBhbjtyZXR1cm4tYW4uZXJybm99fSx4OmZ1bmN0aW9uKHN0LHl0LEx0KXtMaS52YXJhcmdzPUx0O3RyeXt2YXIgYW49TGkuZ2V0U3RyZWFtRnJvbUZEKHN0KTtz''@;'; put 'put ''d2l0Y2goeXQpe2Nhc2UgMjE1MDk6Y2FzZSAyMTUwNTpjYXNlIDIxNTEwOmNhc2UgMjE1MTE6Y2FzZSAyMTUxMjpjYXNlIDIxNTA2OmNhc2UgMjE1MDc6Y2FzZSAyMTUwODpjYXNlIDIxNTIzOmNhc2UgMjE1MjQ6cmV0dXJuIGFuLnR0eT8wOi01OTtjYXNlIDIxNTE5OmlmKCFhbi50dHkpcmV0''@;'; put 'put ''dXJuLTU5O3ZhciBrbj1MaS5nZXQoKTtyZXR1cm4gZ3Rba24+PjJdPTAsMDtjYXNlIDIxNTIwOnJldHVybiBhbi50dHk/LTI4Oi01OTtjYXNlIDIxNTMxOnJldHVybiBrbj1MaS5nZXQoKSx4dC5pb2N0bChhbix5dCxrbik7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKGxyKXtpZih2b2lkIDA9''@;'; put 'put ''PT14dHx8IShsciBpbnN0YW5jZW9mIHh0LkVycm5vRXJyb3IpKXRocm93IGxyO3JldHVybi1sci5lcnJub319LHU6ZnVuY3Rpb24oc3QseXQsTHQsYW4pe3RyeXt5dD1MaS5nZXRTdHIoeXQpO3ZhciBrbj0yNTYmYW4sbHI9NDA5NiZhbjtyZXR1cm4gYW4mPS02NDAxLHl0PUxpLmNhbGN1bGF0''@;'; put 'put ''ZUF0KHN0LHl0LGxyKSxMaS5kb1N0YXQoa24/eHQubHN0YXQ6eHQuc3RhdCx5dCxMdCl9Y2F0Y2godXIpe2lmKHZvaWQgMD09PXh0fHwhKHVyIGluc3RhbmNlb2YgeHQuRXJybm9FcnJvcikpdGhyb3cgdXI7cmV0dXJuLXVyLmVycm5vfX0sZDpmdW5jdGlvbihzdCx5dCxMdCxhbil7TGkudmFy''@;'; put 'put ''YXJncz1hbjt0cnl7eXQ9TGkuZ2V0U3RyKHl0KSx5dD1MaS5jYWxjdWxhdGVBdChzdCx5dCk7dmFyIGtuPWFuP0xpLmdldCgpOjA7cmV0dXJuIHh0Lm9wZW4oeXQsTHQsa24pLmZkfWNhdGNoKGxyKXtpZih2b2lkIDA9PT14dHx8IShsciBpbnN0YW5jZW9mIHh0LkVycm5vRXJyb3IpKXRocm93''@;'; put 'put ''IGxyO3JldHVybi1sci5lcnJub319LHY6ZnVuY3Rpb24oc3QseXQpe3RyeXtyZXR1cm4gc3Q9TGkuZ2V0U3RyKHN0KSxMaS5kb1N0YXQoeHQuc3RhdCxzdCx5dCl9Y2F0Y2goTHQpe2lmKHZvaWQgMD09PXh0fHwhKEx0IGluc3RhbmNlb2YgeHQuRXJybm9FcnJvcikpdGhyb3cgTHQ7cmV0dXJu''@;'; put 'put ''LUx0LmVycm5vfX0scDpmdW5jdGlvbihzdCx5dCxMdCl7dHJ5e3JldHVybiB5dD1MaS5nZXRTdHIoeXQpLHl0PUxpLmNhbGN1bGF0ZUF0KHN0LHl0KSwwPT09THQ/eHQudW5saW5rKHl0KTo1MTI9PT1MdD94dC5ybWRpcih5dCk6V3QoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0''@;'; put 'put ''IiksMH1jYXRjaChhbil7aWYodm9pZCAwPT09eHR8fCEoYW4gaW5zdGFuY2VvZiB4dC5FcnJub0Vycm9yKSl0aHJvdyBhbjtyZXR1cm4tYW4uZXJybm99fSxqOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHE6ZnVuY3Rpb24oc3QseXQsTHQsYW4sa24sbHIsdXIpe3RyeXt2YXIgSHI9TGkuZ2V0U3Ry''@;'; put 'put ''ZWFtRnJvbUZEKGFuKSx2bz14dC5tbWFwKEhyLHN0LGtuLHl0LEx0KSxBbz12by5wdHI7cmV0dXJuIGd0W2xyPj4yXT12by5hbGxvY2F0ZWQsanRbdXI+PjJdPUFvLDB9Y2F0Y2gobW8pe2lmKHZvaWQgMD09PXh0fHwhKG1vIGluc3RhbmNlb2YgeHQuRXJybm9FcnJvcikpdGhyb3cgbW87cmV0''@;'; put 'put ''dXJuLW1vLmVycm5vfX0scjpmdW5jdGlvbihzdCx5dCxMdCxhbixrbixscil7dHJ5e3ZhciB1cj1MaS5nZXRTdHJlYW1Gcm9tRkQoa24pOzImTHQmJkxpLmRvTXN5bmMoc3QsdXIseXQsYW4sbHIpLHh0Lm11bm1hcCh1cil9Y2F0Y2goSHIpe2lmKHZvaWQgMD09PXh0fHwhKEhyIGluc3RhbmNl''@;'; put 'put ''b2YgeHQuRXJybm9FcnJvcikpdGhyb3cgSHI7cmV0dXJuLUhyLmVycm5vfX0sYTpmdW5jdGlvbigpe1d0KCIiKX0seTpmdW5jdGlvbihzdCx5dCxMdCl7cmV0dXJuIGZ1bmN0aW9uIGRzKHN0LHl0LEx0KXt2YXIgYW49ZnVuY3Rpb24oa24sbHIpe3ZhciB1cjtmb3IoWmEubGVuZ3RoPTAsbHI+''@;'; put 'put ''Pj0yO3VyPWx0W2tuKytdOylscis9MTA1IT11ciZscixaYS5wdXNoKDEwNT09dXI/Z3RbbHJdOnJuW2xyKys+PjFdKSwrK2xyO3JldHVybiBaYX0oeXQsTHQpO3JldHVybiBkcltzdF0uYXBwbHkobnVsbCxhbil9KHN0LHl0LEx0KX0sZTpmdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfSxr''@;'; put 'put ''OmZ1bmN0aW9uKHN0LHl0LEx0KXtsdC5jb3B5V2l0aGluKHN0LHl0LHl0K0x0KX0sbzpmdW5jdGlvbihzdCl7dmFyIHl0LGFuPWx0Lmxlbmd0aCxrbj0yMTQ3NDgzNjQ4O2lmKChzdD4+Pj0wKT5rbilyZXR1cm4hMTtmb3IodmFyIGxyPTE7bHI8PTQ7bHIqPTIpe3ZhciB1cj1hbiooMSsuMi9s''@;'; put 'put ''cik7aWYodXI9TWF0aC5taW4odXIsc3QrMTAwNjYzMjk2KSx2bChNYXRoLm1pbihrbiwoeXQ9TWF0aC5tYXgoc3QsdXIpKSsoNjU1MzYteXQlNjU1MzYpJTY1NTM2KSkpcmV0dXJuITB9cmV0dXJuITF9LHM6ZnVuY3Rpb24oc3QseXQpe3ZhciBMdD0wO3JldHVybiBIcygpLmZvckVhY2goZnVu''@;'; put 'put ''Y3Rpb24oYW4sa24pe3ZhciBscj15dCtMdDtqdFtzdCs0KmtuPj4yXT1scixmdW5jdGlvbih1cixIcix2byl7Zm9yKHZhciBBbz0wO0FvPHVyLmxlbmd0aDsrK0FvKVplW0hyKys+PjBdPXVyLmNoYXJDb2RlQXQoQW8pO1plW0hyPj4wXT0wfShhbixsciksTHQrPWFuLmxlbmd0aCsxfSksMH0s''@;'; put 'put ''dDpmdW5jdGlvbihzdCx5dCl7dmFyIEx0PUhzKCk7anRbc3Q+PjJdPUx0Lmxlbmd0aDt2YXIgYW49MDtyZXR1cm4gTHQuZm9yRWFjaChmdW5jdGlvbihrbil7YW4rPWtuLmxlbmd0aCsxfSksanRbeXQ+PjJdPWFuLDB9LGY6ZnVuY3Rpb24oc3QseXQpeyFmdW5jdGlvbiBjMChzdCl7cGV8fChm''@;'; put 'put ''Lm9uRXhpdCYmZi5vbkV4aXQoc3QpLGJlPSEwKSxfKHN0LG5ldyBMcihzdCkpfShzdCl9LGM6ZnVuY3Rpb24oc3Qpe3RyeXt2YXIgeXQ9TGkuZ2V0U3RyZWFtRnJvbUZEKHN0KTtyZXR1cm4geHQuY2xvc2UoeXQpLDB9Y2F0Y2goTHQpe2lmKHZvaWQgMD09PXh0fHwhKEx0IGluc3RhbmNlb2Yg''@;'; put 'put ''eHQuRXJybm9FcnJvcikpdGhyb3cgTHQ7cmV0dXJuIEx0LmVycm5vfX0sZzpmdW5jdGlvbihzdCx5dCxMdCxhbil7dHJ5e3ZhciBrbj1mdW5jdGlvbihscix1cixIcix2byl7Zm9yKHZhciBBbz0wLG1vPTA7bW88SHI7bW8rKyl7dmFyIHRhPWp0W3VyPj4yXSxXaT1qdFt1cis0Pj4yXTt1cis9''@;'; put 'put ''ODt2YXIgJGE9eHQucmVhZChscixaZSx0YSxXaSx2b2lkIDApO2lmKCRhPDApcmV0dXJuLTE7aWYoQW8rPSRhLCRhPFdpKWJyZWFrfXJldHVybiBBb30oTGkuZ2V0U3RyZWFtRnJvbUZEKHN0KSx5dCxMdCk7cmV0dXJuIGp0W2FuPj4yXT1rbiwwfWNhdGNoKGxyKXtpZih2b2lkIDA9PT14dHx8''@;'; put 'put ''IShsciBpbnN0YW5jZW9mIHh0LkVycm5vRXJyb3IpKXRocm93IGxyO3JldHVybiBsci5lcnJub319LG06ZnVuY3Rpb24oc3QseXQsTHQsYW4sa24pe3RyeXt2YXIgbHI9KHZvPUx0KSsyMDk3MTUyPj4+MDw0MTk0MzA1LSEhKEhyPXl0KT8oSHI+Pj4wKSs0Mjk0OTY3Mjk2KnZvOk5hTjtpZihp''@;'; put 'put ''c05hTihscikpcmV0dXJuIDYxO3ZhciB1cj1MaS5nZXRTdHJlYW1Gcm9tRkQoc3QpO3JldHVybiB4dC5sbHNlZWsodXIsbHIsYW4pLEVuPVt1ci5wb3NpdGlvbj4+PjAsKEFyPXVyLnBvc2l0aW9uLCtNYXRoLmFicyhBcik+PTE/QXI+MD8oMHxNYXRoLm1pbigrTWF0aC5mbG9vcihBci80Mjk0''@;'; put 'put ''OTY3Mjk2KSw0Mjk0OTY3Mjk1KSk+Pj4wOn5+K01hdGguY2VpbCgoQXItKyh+fkFyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sZ3Rba24+PjJdPUVuWzBdLGd0W2tuKzQ+PjJdPUVuWzFdLHVyLmdldGRlbnRzJiYwPT09bHImJjA9PT1hbiYmKHVyLmdldGRlbnRzPW51bGwpLDB9Y2F0Y2go''@;'; put 'put ''QW8pe2lmKHZvaWQgMD09PXh0fHwhKEFvIGluc3RhbmNlb2YgeHQuRXJybm9FcnJvcikpdGhyb3cgQW87cmV0dXJuIEFvLmVycm5vfXZhciBIcix2b30saDpmdW5jdGlvbihzdCx5dCxMdCxhbil7dHJ5e3ZhciBrbj1mdW5jdGlvbihscix1cixIcix2byl7Zm9yKHZhciBBbz0wLG1vPTA7bW88''@;'; put 'put ''SHI7bW8rKyl7dmFyIHRhPWp0W3VyPj4yXSxXaT1qdFt1cis0Pj4yXTt1cis9ODt2YXIgJGE9eHQud3JpdGUobHIsWmUsdGEsV2ksdm9pZCAwKTtpZigkYTwwKXJldHVybi0xO0FvKz0kYX1yZXR1cm4gQW99KExpLmdldFN0cmVhbUZyb21GRChzdCkseXQsTHQpO3JldHVybiBqdFthbj4+Ml09''@;'; put 'put ''a24sMH1jYXRjaChscil7aWYodm9pZCAwPT09eHR8fCEobHIgaW5zdGFuY2VvZiB4dC5FcnJub0Vycm9yKSl0aHJvdyBscjtyZXR1cm4gbHIuZXJybm99fSxuOmZ1bmN0aW9uKHN0LHl0LEx0LGFuLGtuKXtyZXR1cm4gZnVuY3Rpb24gSWMoc3QseXQsTHQsYW4pe3ZhciBrbj1ndFthbis0MD4+''@;'; put 'put ''Ml0sbHI9e3RtX3NlYzpndFthbj4+Ml0sdG1fbWluOmd0W2FuKzQ+PjJdLHRtX2hvdXI6Z3RbYW4rOD4+Ml0sdG1fbWRheTpndFthbisxMj4+Ml0sdG1fbW9uOmd0W2FuKzE2Pj4yXSx0bV95ZWFyOmd0W2FuKzIwPj4yXSx0bV93ZGF5Omd0W2FuKzI0Pj4yXSx0bV95ZGF5Omd0W2FuKzI4Pj4y''@;'; put 'put ''XSx0bV9pc2RzdDpndFthbiszMj4+Ml0sdG1fZ210b2ZmOmd0W2FuKzM2Pj4yXSx0bV96b25lOmtuP1FuKGtuKToiIn0sdXI9UW4oTHQpLEhyPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06''@;'; put 'put ''JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIl''@;'; put 'put ''ZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIHZvIGluIEhyKXVyPXVyLnJlcGxhY2UobmV3IFJlZ0V4''@;'; put 'put ''cCh2bywiZyIpLEhyW3ZvXSk7dmFyIEFvPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxtbz1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3Vz''@;'; put 'put ''dCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07ZnVuY3Rpb24gdGEoQWksV28sbmMpe2Zvcih2YXIganM9Im51bWJlciI9PXR5cGVvZiBBaT9BaS50b1N0cmluZygpOkFpfHwiIjtqcy5sZW5ndGg8V287KWpzPW5jWzBdK2pzO3JldHVybiBqc31mdW5jdGlv''@;'; put 'put ''biBXaShBaSxXbyl7cmV0dXJuIHRhKEFpLFdvLCIwIil9ZnVuY3Rpb24gJGEoQWksV28pe2Z1bmN0aW9uIG5jKHV1KXtyZXR1cm4gdXU8MD8tMTp1dT4wPzE6MH12YXIganM7cmV0dXJuIDA9PT0oanM9bmMoQWkuZ2V0RnVsbFllYXIoKS1Xby5nZXRGdWxsWWVhcigpKSkmJjA9PT0oanM9bmMo''@;'; put 'put ''QWkuZ2V0TW9udGgoKS1Xby5nZXRNb250aCgpKSkmJihqcz1uYyhBaS5nZXREYXRlKCktV28uZ2V0RGF0ZSgpKSksanN9ZnVuY3Rpb24gQnMoQWkpe3N3aXRjaChBaS5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShBaS5nZXRGdWxsWWVhcigpLTEsMTEsMjkpO2Nhc2UgMTpyZXR1''@;'; put 'put ''cm4gQWk7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShBaS5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShBaS5nZXRGdWxsWWVhcigpLDAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShBaS5nZXRGdWxsWWVhcigpLDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShB''@;'; put 'put ''aS5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoQWkuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gT3MoQWkpe3ZhciBXbz1mdW5jdGlvbihqTnQsVEYpe2Zvcih2YXIgRzE9bmV3IERhdGUoak50LmdldFRpbWUoKSk7VEY+MDspe3ZhciB6TnQ9''@;'; put 'put ''c3UoRzEuZ2V0RnVsbFllYXIoKSkseFE9RzEuZ2V0TW9udGgoKSxhdmU9KHpOdD9CMTpqMSlbeFFdO2lmKCEoVEY+YXZlLUcxLmdldERhdGUoKSkpcmV0dXJuIEcxLnNldERhdGUoRzEuZ2V0RGF0ZSgpK1RGKSxHMTtURi09YXZlLUcxLmdldERhdGUoKSsxLEcxLnNldERhdGUoMSkseFE8MTE/''@;'; put 'put ''RzEuc2V0TW9udGgoeFErMSk6KEcxLnNldE1vbnRoKDApLEcxLnNldEZ1bGxZZWFyKEcxLmdldEZ1bGxZZWFyKCkrMSkpfXJldHVybiBHMX0obmV3IERhdGUoQWkudG1feWVhcisxOTAwLDAsMSksQWkudG1feWRheSksbmM9bmV3IERhdGUoV28uZ2V0RnVsbFllYXIoKSwwLDQpLGpzPW5ldyBE''@;'; put 'put ''YXRlKFdvLmdldEZ1bGxZZWFyKCkrMSwwLDQpLHV1PUJzKG5jKSxCTnQ9QnMoanMpO3JldHVybiAkYSh1dSxXbyk8PTA/JGEoQk50LFdvKTw9MD9Xby5nZXRGdWxsWWVhcigpKzE6V28uZ2V0RnVsbFllYXIoKTpXby5nZXRGdWxsWWVhcigpLTF9dmFyIGYwPXsiJWEiOmZ1bmN0aW9uKEFpKXty''@;'; put 'put ''ZXR1cm4gQW9bQWkudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9LCIlQSI6ZnVuY3Rpb24oQWkpe3JldHVybiBBb1tBaS50bV93ZGF5XX0sIiViIjpmdW5jdGlvbihBaSl7cmV0dXJuIG1vW0FpLnRtX21vbl0uc3Vic3RyaW5nKDAsMyl9LCIlQiI6ZnVuY3Rpb24oQWkpe3JldHVybiBtb1tBaS50''@;'; put 'put ''bV9tb25dfSwiJUMiOmZ1bmN0aW9uKEFpKXtyZXR1cm4gV2koKEFpLnRtX3llYXIrMTkwMCkvMTAwfDAsMil9LCIlZCI6ZnVuY3Rpb24oQWkpe3JldHVybiBXaShBaS50bV9tZGF5LDIpfSwiJWUiOmZ1bmN0aW9uKEFpKXtyZXR1cm4gdGEoQWkudG1fbWRheSwyLCIgIil9LCIlZyI6ZnVuY3Rp''@;'; put 'put ''b24oQWkpe3JldHVybiBPcyhBaSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlRyI6ZnVuY3Rpb24oQWkpe3JldHVybiBPcyhBaSl9LCIlSCI6ZnVuY3Rpb24oQWkpe3JldHVybiBXaShBaS50bV9ob3VyLDIpfSwiJUkiOmZ1bmN0aW9uKEFpKXt2YXIgV289QWkudG1faG91cjtyZXR1cm4g''@;'; put 'put ''MD09V28/V289MTI6V28+MTImJihXby09MTIpLFdpKFdvLDIpfSwiJWoiOmZ1bmN0aW9uKEFpKXtyZXR1cm4gV2koQWkudG1fbWRheStmdW5jdGlvbihXbyxuYyl7Zm9yKHZhciBqcz0wLHV1PTA7dXU8PW5jO2pzKz1Xb1t1dSsrXSk7cmV0dXJuIGpzfShzdShBaS50bV95ZWFyKzE5MDApP0Ix''@;'; put 'put ''OmoxLEFpLnRtX21vbi0xKSwzKX0sIiVtIjpmdW5jdGlvbihBaSl7cmV0dXJuIFdpKEFpLnRtX21vbisxLDIpfSwiJU0iOmZ1bmN0aW9uKEFpKXtyZXR1cm4gV2koQWkudG1fbWluLDIpfSwiJW4iOmZ1bmN0aW9uKCl7cmV0dXJuIlxuIn0sIiVwIjpmdW5jdGlvbihBaSl7cmV0dXJuIEFpLnRt''@;'; put 'put ''X2hvdXI+PTAmJkFpLnRtX2hvdXI8MTI/IkFNIjoiUE0ifSwiJVMiOmZ1bmN0aW9uKEFpKXtyZXR1cm4gV2koQWkudG1fc2VjLDIpfSwiJXQiOmZ1bmN0aW9uKCl7cmV0dXJuIlx0In0sIiV1IjpmdW5jdGlvbihBaSl7cmV0dXJuIEFpLnRtX3dkYXl8fDd9LCIlVSI6ZnVuY3Rpb24oQWkpe3Jl''@;'; put 'put ''dHVybiBXaShNYXRoLmZsb29yKChBaS50bV95ZGF5KzctQWkudG1fd2RheSkvNyksMil9LCIlViI6ZnVuY3Rpb24oQWkpe3ZhciBXbz1NYXRoLmZsb29yKChBaS50bV95ZGF5KzctKEFpLnRtX3dkYXkrNiklNykvNyk7aWYoKEFpLnRtX3dkYXkrMzcxLUFpLnRtX3lkYXktMiklNzw9MiYmV28r''@;'; put 'put ''KyxXbyl7aWYoNTM9PVdvKXt2YXIgbmM9KEFpLnRtX3dkYXkrMzcxLUFpLnRtX3lkYXkpJTc7ND09bmN8fDM9PW5jJiZzdShBaS50bV95ZWFyKXx8KFdvPTEpfX1lbHNle1dvPTUyO3ZhciBqcz0oQWkudG1fd2RheSs3LUFpLnRtX3lkYXktMSklNzsoND09anN8fDU9PWpzJiZzdShBaS50bV95''@;'; put 'put ''ZWFyJTQwMC0xKSkmJldvKyt9cmV0dXJuIFdpKFdvLDIpfSwiJXciOmZ1bmN0aW9uKEFpKXtyZXR1cm4gQWkudG1fd2RheX0sIiVXIjpmdW5jdGlvbihBaSl7cmV0dXJuIFdpKE1hdGguZmxvb3IoKEFpLnRtX3lkYXkrNy0oQWkudG1fd2RheSs2KSU3KS83KSwyKX0sIiV5IjpmdW5jdGlvbihB''@;'; put 'put ''aSl7cmV0dXJuKEFpLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlWSI6ZnVuY3Rpb24oQWkpe3JldHVybiBBaS50bV95ZWFyKzE5MDB9LCIleiI6ZnVuY3Rpb24oQWkpe3ZhciBXbz1BaS50bV9nbXRvZmY7cmV0dXJuKFdvPj0wPyIrIjoiLSIpKygiMDAwMCIrKFdv''@;'; put 'put ''PShXbz1NYXRoLmFicyhXbykvNjApLzYwKjEwMCtXbyU2MCkpLnNsaWNlKC00KX0sIiVaIjpmdW5jdGlvbihBaSl7cmV0dXJuIEFpLnRtX3pvbmV9LCIlJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fTtmb3IodmFyIHZvIGluIHVyPXVyLnJlcGxhY2UoLyUlL2csIlwwXDAiKSxmMCl1ci5pbmNs''@;'; put 'put ''dWRlcyh2bykmJih1cj11ci5yZXBsYWNlKG5ldyBSZWdFeHAodm8sImciKSxmMFt2b10obHIpKSk7dmFyIG1zPURvKHVyPXVyLnJlcGxhY2UoL1wwXDAvZywiJSIpLCExKTtyZXR1cm4gbXMubGVuZ3RoPnl0PzA6KFplLnNldChtcyxzdCksbXMubGVuZ3RoLTEpfShzdCx5dCxMdCxhbil9fTso''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgc3Q9e2E6VTF9O2Z1bmN0aW9uIHl0KGtuLGxyKXtmLmFzbT1rbi5leHBvcnRzLFpyKChhZT1mLmFzbS56KS5idWZmZXIpLFZuLnVuc2hpZnQoZi5hc20uQSksRnQoKX1mdW5jdGlvbiBMdChrbil7eXQoa24uaW5zdGFuY2UpfWZ1bmN0aW9uIGFuKGtuKXtyZXR1cm4g''@;'; put 'put ''UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBicihzdCl7dHJ5e2lmKHN0PT1pciYmZClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZCk7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWNhdGNoKHl0KXtX''@;'; put 'put ''dCh5dCl9fShpcil9KS50aGVuKGZ1bmN0aW9uKGxyKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUobHIsc3QpfSkudGhlbihmdW5jdGlvbihscil7cmV0dXJuIGxyfSkudGhlbihrbixmdW5jdGlvbihscil7WCgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTog''@;'; put 'put ''IitsciksV3QobHIpfSl9aWYoU3QoKSxmLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIGYuaW5zdGFudGlhdGVXYXNtKHN0LHl0KX1jYXRjaChrbil7WCgiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitrbiksYShrbil9KGR8fCJmdW5jdGlv''@;'; put 'put ''biIhPXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ3x8d24oaXIpfHxmdW5jdGlvbiBTbihzdCl7cmV0dXJuIHN0LnN0YXJ0c1dpdGgoImZpbGU6Ly8iKX0oaXIpfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/YW4oTHQpOmZldGNoKGlyLHtjcmVkZW50aWFsczoic2Ft''@;'; put 'put ''ZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihrbil7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGtuLHN0KS50aGVuKEx0LGZ1bmN0aW9uKGxyKXtyZXR1cm4gWCgid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIrbHIpLFgoImZhbGxpbmcgYmFjayB0byBB''@;'; put 'put ''cnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksYW4oTHQpfSl9KSkuY2F0Y2goYSl9KSgpLGYuX19fd2FzbV9jYWxsX2N0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuKGYuX19fd2FzbV9jYWxsX2N0b3JzPWYuYXNtLkEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIFoxPWYuX2Vtc2NyaXB0ZW5f''@;'; put 'put ''YmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWjE9Zi5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1mLmFzbS5CKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdkPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9HcmFwaHZpel8yPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuKEdkPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9HcmFwaHZpel8yPWYuYXNtLkMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semY9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3ZlcnNpb25fMD1mdW5jdGlvbigpe3JldHVybih6Zj1mLl9lbXNjcmlwdGVu''@;'; put 'put ''X2JpbmRfR3JhcGh2aXpfdmVyc2lvbl8wPWYuYXNtLkQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGM9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2xhc3RFcnJvcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGhjPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9sYXN0RXJyb3JfMD1mLmFz''@;'; put 'put ''bS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFkxPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9jcmVhdGVGaWxlXzI9ZnVuY3Rpb24oKXtyZXR1cm4oWTE9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2NyZWF0ZUZpbGVfMj1mLmFzbS5GKS5hcHBseShudWxsLGFyZ3VtZW50cyl9''@;'; put 'put ''LHBzPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9sYXN0UmVzdWx0XzA9ZnVuY3Rpb24oKXtyZXR1cm4ocHM9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2xhc3RSZXN1bHRfMD1mLmFzbS5HKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVsPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFw''@;'; put 'put ''aHZpel9sYXlvdXRfMz1mdW5jdGlvbigpe3JldHVybih1bD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfbGF5b3V0XzM9Zi5hc20uSCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxMD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''bihxMD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfX19kZXN0cm95X19fMD1mLmFzbS5JKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O2YuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oZi5fZnJlZT1mLmFzbS5LKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGYuX21hbGxvYz1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybihmLl9tYWxsb2M9Zi5hc20uTCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgVHMsR2w9Zi5fX19lcnJub19sb2NhdGlvbj1mdW5jdGlvbigpe3JldHVybihHbD1mLl9fX2Vycm5vX2xvY2F0aW9uPWYuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTnM9Zi5fZW1zY3Jp''@;'; put 'put ''cHRlbl9idWlsdGluX21lbWFsaWduPWZ1bmN0aW9uKCl7cmV0dXJuKE5zPWYuX2Vtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbj1mLmFzbS5OKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxzPWYuX19fY3hhX2lzX3BvaW50ZXJfdHlwZT1mdW5jdGlvbigpe3JldHVybihscz1mLl9fX2N4YV9p''@;'; put 'put ''c19wb2ludGVyX3R5cGU9Zi5hc20uTykuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtmdW5jdGlvbiBTdShzdCl7ZnVuY3Rpb24geXQoKXtUc3x8KFRzPSEwLGYuY2FsbGVkUnVuPSEwLGJlfHwoZi5ub0ZTSW5pdHx8eHQuaW5pdC5pbml0aWFsaXplZHx8eHQuaW5pdCgpLHh0Lmlnbm9yZVBlcm1p''@;'; put 'put ''c3Npb25zPSExLE5yKFZuKSxjKGYpLGYub25SdW50aW1lSW5pdGlhbGl6ZWQmJmYub25SdW50aW1lSW5pdGlhbGl6ZWQoKSxmdW5jdGlvbigpe2lmKGYucG9zdFJ1bilmb3IoImZ1bmN0aW9uIj09dHlwZW9mIGYucG9zdFJ1biYmKGYucG9zdFJ1bj1bZi5wb3N0UnVuXSk7Zi5wb3N0UnVuLmxl''@;'; put 'put ''bmd0aDspTHQ9Zi5wb3N0UnVuLnNoaWZ0KCksY3IudW5zaGlmdChMdCk7dmFyIEx0O05yKGNyKX0oKSkpfUNyPjB8fChmdW5jdGlvbigpe2lmKGYucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2YgZi5wcmVSdW4mJihmLnByZVJ1bj1bZi5wcmVSdW5dKTtmLnByZVJ1bi5sZW5ndGg7KUx0''@;'; put 'put ''PWYucHJlUnVuLnNoaWZ0KCksVHIudW5zaGlmdChMdCk7dmFyIEx0O05yKFRyKX0oKSxDcj4wfHwoZi5zZXRTdGF0dXM/KGYuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmLnNldFN0YXR1cygiIil9LDEpLHl0KCl9''@;'; put 'put ''LDEpKTp5dCgpKSl9aWYoZi5fX19zdGFydF9lbV9qcz0xNzU4MjgsZi5fX19zdG9wX2VtX2pzPTE3NTkyNixZcj1mdW5jdGlvbiBzdCgpe1RzfHxTdSgpLFRzfHwoWXI9c3QpfSxmLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBmLnByZUluaXQmJihmLnByZUluaXQ9W2YucHJlSW5p''@;'; put 'put ''dF0pO2YucHJlSW5pdC5sZW5ndGg+MDspZi5wcmVJbml0LnBvcCgpKCk7ZnVuY3Rpb24gVnMoKXt9ZnVuY3Rpb24gVzEoc3Qpe3JldHVybihzdHx8VnMpLl9fY2FjaGVfX31mdW5jdGlvbiBYMyhzdCx5dCl7dmFyIEx0PVcxKHl0KSxhbj1MdFtzdF07cmV0dXJuIGFufHwoKGFuPU9iamVjdC5j''@;'; put 'put ''cmVhdGUoKHl0fHxWcykucHJvdG90eXBlKSkucHRyPXN0LEx0W3N0XT1hbil9U3UoKSwoVnMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVnMucHJvdG90eXBlKSkuY29uc3RydWN0b3I9VnMsVnMucHJvdG90eXBlLl9fY2xhc3NfXz1WcyxWcy5fX2NhY2hlX189e30sZi5XcmFwcGVyT2JqZWN0''@;'; put 'put ''PVZzLGYuZ2V0Q2FjaGU9VzEsZi53cmFwUG9pbnRlcj1YMyxmLmNhc3RPYmplY3Q9ZnVuY3Rpb24oc3QseXQpe3JldHVybiBYMyhzdC5wdHIseXQpfSxmLk5VTEw9WDMoMCksZi5kZXN0cm95PWZ1bmN0aW9uKHN0KXtpZighc3QuX19kZXN0cm95X18pdGhyb3ciRXJyb3I6IENhbm5vdCBkZXN0''@;'; put 'put ''cm95IG9iamVjdC4gKERpZCB5b3UgY3JlYXRlIGl0IHlvdXJzZWxmPykiO3N0Ll9fZGVzdHJveV9fKCksZGVsZXRlIFcxKHN0Ll9fY2xhc3NfXylbc3QucHRyXX0sZi5jb21wYXJlPWZ1bmN0aW9uKHN0LHl0KXtyZXR1cm4gc3QucHRyPT09eXQucHRyfSxmLmdldFBvaW50ZXI9ZnVuY3Rpb24o''@;'; put 'put ''c3Qpe3JldHVybiBzdC5wdHJ9LGYuZ2V0Q2xhc3M9ZnVuY3Rpb24oc3Qpe3JldHVybiBzdC5fX2NsYXNzX199O3ZhciBNbD17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihNbC5uZWVkZWQpe2Zvcih2YXIgc3Q9MDtzdDxNbC50''@;'; put 'put ''ZW1wcy5sZW5ndGg7c3QrKylmLl9mcmVlKE1sLnRlbXBzW3N0XSk7TWwudGVtcHMubGVuZ3RoPTAsZi5fZnJlZShNbC5idWZmZXIpLE1sLmJ1ZmZlcj0wLE1sLnNpemUrPU1sLm5lZWRlZCxNbC5uZWVkZWQ9MH1NbC5idWZmZXJ8fChNbC5zaXplKz0xMjgsTWwuYnVmZmVyPWYuX21hbGxvYyhN''@;'; put 'put ''bC5zaXplKSx4ZShNbC5idWZmZXIpKSxNbC5wb3M9MH0sYWxsb2M6ZnVuY3Rpb24oc3QseXQpe3hlKE1sLmJ1ZmZlcik7dmFyIEx0LGtuPXN0Lmxlbmd0aCp5dC5CWVRFU19QRVJfRUxFTUVOVDtyZXR1cm4gTWwucG9zKyhrbj1rbis3Ji04KT49TWwuc2l6ZT8oeGUoa24+MCksTWwubmVlZGVk''@;'; put 'put ''Kz1rbixMdD1mLl9tYWxsb2Moa24pLE1sLnRlbXBzLnB1c2goTHQpKTooTHQ9TWwuYnVmZmVyK01sLnBvcyxNbC5wb3MrPWtuKSxMdH0sY29weTpmdW5jdGlvbihzdCx5dCxMdCl7c3dpdGNoKEx0Pj4+PTAseXQuQllURVNfUEVSX0VMRU1FTlQpe2Nhc2UgMjpMdD4+Pj0xO2JyZWFrO2Nhc2Ug''@;'; put 'put ''NDpMdD4+Pj0yO2JyZWFrO2Nhc2UgODpMdD4+Pj0zfWZvcih2YXIgYW49MDthbjxzdC5sZW5ndGg7YW4rKyl5dFtMdCthbl09c3RbYW5dfX07ZnVuY3Rpb24gc20oc3Qpe2lmKCJzdHJpbmciPT10eXBlb2Ygc3Qpe3ZhciB5dD1EbyhzdCksTHQ9TWwuYWxsb2MoeXQsWmUpO3JldHVybiBNbC5j''@;'; put 'put ''b3B5KHl0LFplLEx0KSxMdH1yZXR1cm4gc3R9ZnVuY3Rpb24gJGQoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgVm9pZFB0ciwgbm8gY29uc3RydWN0b3IgaW4gSURMIn1mdW5jdGlvbiBNdShzdCx5dCl7c3QmJiJvYmplY3QiPT10eXBlb2Ygc3QmJihzdD1zdC5wdHIpLHl0JiYib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIHl0JiYoeXQ9eXQucHRyKSx0aGlzLnB0cj1HZChzdCx5dCksVzEoTXUpW3RoaXMucHRyXT10aGlzfXJldHVybigkZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShWcy5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj0kZCwkZC5wcm90b3R5cGUuX19jbGFzc19fPSRkLCRkLl9fY2Fj''@;'; put 'put ''aGVfXz17fSxmLlZvaWRQdHI9JGQsJGQucHJvdG90eXBlLl9fZGVzdHJveV9fPSRkLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1oxKHRoaXMucHRyKX0sKE11LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFZzLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPU11LE11LnByb3RvdHlw''@;'; put 'put ''ZS5fX2NsYXNzX189TXUsTXUuX19jYWNoZV9fPXt9LGYuR3JhcGh2aXo9TXUsTXUucHJvdG90eXBlLnZlcnNpb249TXUucHJvdG90eXBlLnZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gUW4oemYodGhpcy5wdHIpKX0sTXUucHJvdG90eXBlLmxhc3RFcnJvcj1NdS5wcm90b3R5cGUubGFzdEVy''@;'; put 'put ''cm9yPWZ1bmN0aW9uKCl7cmV0dXJuIFFuKGhjKHRoaXMucHRyKSl9LE11LnByb3RvdHlwZS5jcmVhdGVGaWxlPU11LnByb3RvdHlwZS5jcmVhdGVGaWxlPWZ1bmN0aW9uKHN0LHl0KXt2YXIgTHQ9dGhpcy5wdHI7TWwucHJlcGFyZSgpLHN0PXN0JiYib2JqZWN0Ij09dHlwZW9mIHN0P3N0LnB0''@;'; put 'put ''cjpzbShzdCkseXQ9eXQmJiJvYmplY3QiPT10eXBlb2YgeXQ/eXQucHRyOnNtKHl0KSxZMShMdCxzdCx5dCl9LE11LnByb3RvdHlwZS5sYXN0UmVzdWx0PU11LnByb3RvdHlwZS5sYXN0UmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIFFuKHBzKHRoaXMucHRyKSl9LE11LnByb3RvdHlwZS5sYXlv''@;'; put 'put ''dXQ9TXUucHJvdG90eXBlLmxheW91dD1mdW5jdGlvbihzdCx5dCxMdCl7dmFyIGFuPXRoaXMucHRyO3JldHVybiBNbC5wcmVwYXJlKCksc3Q9c3QmJiJvYmplY3QiPT10eXBlb2Ygc3Q/c3QucHRyOnNtKHN0KSx5dD15dCYmIm9iamVjdCI9PXR5cGVvZiB5dD95dC5wdHI6c20oeXQpLEx0PUx0''@;'; put 'put ''JiYib2JqZWN0Ij09dHlwZW9mIEx0P0x0LnB0cjpzbShMdCksUW4odWwoYW4sc3QseXQsTHQpKX0sTXUucHJvdG90eXBlLl9fZGVzdHJveV9fPU11LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3EwKHRoaXMucHRyKX0sbC5yZWFkeX0pO2xldCBveCx5UTtmdW5jdGlvbiBOUnQo''@;'; put 'put ''bCl7cmV0dXJue3BhdGg6bC5wYXRoLGRhdGE6YDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PlxuPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEu''@;'; put 'put ''MS9EVEQvc3ZnMTEuZHRkIj5cbjxzdmcgd2lkdGg9IiR7bC53aWR0aH0iIGhlaWdodD0iJHtsLmhlaWdodH0iPjwvc3ZnPmB9fWNsYXNzIHdGe2NvbnN0cnVjdG9yKGMpe3RoaXMuX21vZHVsZT1jfXN0YXRpYyBsb2FkKCl7cmV0dXJuKHlRfHwoeVE9ZnVuY3Rpb24gRlJ0KGwpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiBQUnQobCxjKXtmb3IodmFyIGE9MCxmPVtdLGQ9KyFjLGg9MDtsLmxlbmd0aDspe3ZhciBtPXhSdChsLGR8fGMpO2lmKCJvYmplY3QiPT10eXBlb2YgbSl7Zm9yKGQ/KGM9bnVsbCxtLncubGVuZ3RoPT1tLnUmJihmLnB1c2goYz1tLncpLGgrPW0udSkpOihmLnB1c2goYyksbS5l''@;'; put 'put ''PTApOyFtLmw7KXt2YXIgXz1MUnQobCxtLGMpO198fEN1KDUpLGM/bS5lPW0ueTooZi5wdXNoKF8pLGgrPV8ubGVuZ3RoLGtSdChtLncsMCxfLmxlbmd0aCksbS53LnNldChfLG0udy5sZW5ndGgtXy5sZW5ndGgpKX1hPW0uYis0Km0uY31lbHNlIGE9bTtsPWwuc3ViYXJyYXkoYSl9cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKE8sWCl7aWYoMT09Ty5sZW5ndGgpcmV0dXJuIE9bMF07Zm9yKHZhciBhZT1uZXcgbHUoWCkscGU9MCxiZT0wO3BlPE8ubGVuZ3RoOysrcGUpe3ZhciB4ZT1PW3BlXTthZS5zZXQoeGUsYmUpLGJlKz14ZS5sZW5ndGh9cmV0dXJuIGFlfShmLGgpfShmdW5jdGlvbihhKXtjb25z''@;'; put 'put ''dCBmPWEubGVuZ3RoLGQ9W107bGV0IGg9MCxtPTAsXz0tMTtmb3IobGV0IE89MDtPPGY7TysrKXtjb25zdCBYPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSEjJCUmKCkqKywuLzo7PD0+P0BbXV5fYHt8fX4iJy5pbmRleE9m''@;'; put 'put ''KGFbT10pO2lmKC0xIT09WClpZihfPDApXz1YO2Vsc2V7Xys9OTEqWCxofD1fPDxtLG0rPSg4MTkxJl8pPjg4PzEzOjE0O2Rve2QucHVzaCgyNTUmaCksaD4+PTgsbS09OH13aGlsZShtPjcpO189LTF9fXJldHVybiBfPi0xJiZkLnB1c2goMjU1JihofF88PG0pKSxuZXcgVWludDhBcnJheShk''@;'; put 'put ''KX0obCkpfSgndjcjYVNYajpdQ1s5MD55S21hOktgMmh0ejh7L1suJVkrTkFFPmlyVS8/X0poXk1pfVYifmZ5elMhKDF5NiVTXWJxaEZodz5+fnJ1QF5QYWM3fk40bjlCa09qY1o9RjhOJHdCInNdaW5dJVRHXj1KRDRMYmdOLFcrNmBVNyopcGokMi5HXTxwMH1ANncxWDxpey5nPDcydnVdMitV''@;'; put 'put ''L0R7L2N+dkNzdD16Y1Fyb3BeN0k2YjlkTXp8W2taIXMiQUd5VEUleTM8NERbQD9mfHwkU2JmdSZLblVYUDkhRmc1PWBaKylBSmNaPCt4aC9iPExEd1tYcmRMIVlaKH5jMkNmeHpxRyVfeCtLej9GRF49OEVlekd3aD9dbDg4S3NDUyY6VigvMm53KihhXVU7Wnl3ZSNVUnxUdTk1LEJvXyJlV3FD''@;'; put 'put ''QVFiJF5NQ1Q2JCpiZDVnVmd1WE9dOFJpdWVAaWUhbDxGYWs7IVsscGpGY304Z3t7aFksW0w0cTEreU5DZShpZDApUnRWRCFbRD5CfFhXKTJTPzBySD1GeFVBV0p3aUUienVaZjApUkJ+MktiZT9SS0ZCZTN4OzdMUk99Zjs1OWdxL1lXKUhQZ1ZhdGtvQ2dSWUJdcXlCUDQ0fm8/bUNAQlpyJU1M''@;'; put 'put ''WVQ4PnVDUWBReSVtPU44M0p4VzJUWEAiXWFoXnRzIU1mNS88OWJFTUFrWXIsI0A/eEhbYU05Km1NPE1PKiNeR2dtYHZXV3l0RDN0PFF5UnV4fEllVyk6V010X3dvbTh2R1BQUlRjem1HdiZ7M3Zse3pXbX09WG89STlPPVVqP2x7bX48VW0uUkdeUWdlTFc8OUZGRm06VVUpa3RYS0shZUZZSWdd''@;'; put 'put ''K1ZVc3MiWUhUVmdwOHMsZEtuOHJ5OCVvOGJ5OCVRaHRnM2xMeDc4SlhPSVBzfTd0Xn5edHYhe3pgQDdje11QL25+dlRUQjZlazhwSSMmTSpkUiNtM05UVWRlPSohMmwuUjVLV2ZIMTJWRkxiJGF5OmpESXA8Z29iPEtAYFdmdGR0O1sucjU3SDFGczU3OyU5TG9ld0MkRy9QJU5eSGx2dXQ5cjhN''@;'; put 'put ''IjR8QHVqa1V0NkIsXnoiLzRrP2wmZ1ZLYCNBeGBaaDh2TkdvTHhbYWN1NCY6RVdVOS5KeElUQSpnQz9jODJKS2pETGhYRlUxQ1VXKjJ2M2xBYWY5JmtPfXMhPkx9MSFFfnIrWl9nXTVPUGkvSXhARjtlYzxUWixyfiJkfjRJYk08Oyw1UWk9elFCbHMvNSZlXihjW1U7bVVlUDRnSVJKcSZweVRv''@;'; put 'put ''QlRnJDJxcH52KkZlRm9yZ1orNHZMT29wb3RNK2wzaWsoJSpERHlrSzMwL2ErWlsufGsjL2ZMODBTLl5BWlQhOGUxdS5YZX1XIzZmciZRT3UsQnhiQCh5byozKUBnYF8rJS8/aVB6UkZeI3hZYlZMe0BIPEgpTERFMlcqLjtNMXRFIWpuYy5LQGVfRi5LWl5QKGlvZ0khNlQ+Un43fjNWfUwwfEJI''@;'; put 'put ''PiNMaUpjYVFOaipZOFViXjRvcXBdJj9zXztrKj5OLzN4bVZocDh8QzFzWk9vWjhVbzh3cDlseD9KJCwhbT5CJC8pQjk0SkgzMC9iZi5wcjw8bltbP3ZyYlpzNitKJWBPalJNR3Z5ZkA6LEllUXJZSHlIM0ZBMl1GL0xLdX1DL0lRYyVGIklpK0FrQVNlUGk7WntZaFQre21afTwsUHxZNGw+QTJk''@;'; put 'put ''XywmU190OWw/MkNRI1lwY1NlTUFQQThIaFoxO15hZz9SSU4mS1hKakl4SFBkbXdZS3B1KC99YlpfLCZ4XUpqKzl9JntEQXVIcjhFYkV4Oms9QTglYSFmImI2PjQ6X341ZGVgRXRfe0t5fUlKfEk8WHBbfSE5KDlhN2JfQmd+Jns8YjZya1A8bEppeCNNLHhUR1o+JjF1L2pdMHcwazVCYnZZSU5K''@;'; put 'put ''aV9PIUI7eCkoWjk3Oyo7cz58az4xM1dbZCY5Mi45eHJUKzMkJHYqckY4QWVgQEI7TTloXVBGaSsuOFNGVWdYaVQkVlFrcE4hRjxCLkxSbXk8QH1wLkNPIzVWRixnM0dTOnt3OnUsanBWJERRLF1kISNdeXM8aTdnTDN1MW9iUmljI2FbXWAldTAuS0BoZUI4MiZDZSNdKztVN0YjcHtxJDslNn5d''@;'; put 'put ''YHMyd3xqN0dwRVY5PVN4cV5GekU5dlZ4akZyYDNZZ1h8cWZwRWc6KnI0NXBbJS5CKGxXdHNPbWVrcS9leEJWK2JEKk98TilJMitZT0RIKUx5UXVsU3kybHBAVj5VJnpmOGxpfCYhby5TJn0wL3F3NTtuOVV5TjlfPUBTI3gjL0kvNXFxNVRtN2RvaDQwUGF5NUY/dUpHOkpUUXJ4SmZYP3d0RCNO''@;'; put 'put ''IVlITHtSSnA+RzNoeEppNUB0V1hfUng7fSwqRSMvMTBpTUNvM10zTiVyb1AwYnhCV3J7KEA3P11gOS9ZOWxtenpgezNHOWdwdzo5TUVbLFgqWXR4a3BPXXEkVjs/enpga0p5VUcyQ148XzJWWixdPDFfIWB6Q3A7NzQsTioiVXJsIkdUMmY1OjdFRWZkeyVsJjswM1NIeXYpW2cjem1HNyZOS1tB''@;'; put 'put ''N2dafGk6ZlN0QnFETylNVy5NelpjImw5LjYhYlNBT0gqWVVdRlNLe1kkVUQjNH46SUFIXTJrNUlsRDVNcXdDVFkhOStsWD1zfDNTL1dCbX54PCFsTUpOfDlWUl9ZLzZbbyg4YEtrdj9rZUZpPSUuN3BUI3gySFRIdmZgPTU6R10qQFtnLk82QHQiQGU8OUpnSG4uekJ0eG1NbFNCO3p5ISleYHNu''@;'; put 'put ''c19he3pQXyorKkApcTkqSGBXN0xrVn03NVBuZkJbeiY/Q15La1JyLmIoYiVQREE4VitBSS42OiMhREA2OH1fRmprJnBoV3NUSTJDXlhgNzs9RXk5KWB8TlFbciRUZkZXKlRsb0I9SV42XUtrTCQoPjIjPiQhOV95QyY/Jkx+KmcmJWh9dnh7ODJJcmU7NyVDKmI4JW5kd2VzVEU4UlVNNVEjMlBw''@;'; put 'put ''NyUvQGVNZE53NSlsN0hweTlIcCg2YTx8PTRTYFkqUmAxKHRiJW0mX2pmJFheYEYrYnNUJE82PX5tcihVNzxhdUNpL25LQGVpYkNTb0VCVzxpWj5XI1J8S3N5OzlpO3BET11dSlQ7JnYpNmRaX0EwZD54Mko4WDhfMVYuZzBNOFYjKFJFM00zMC9UX0tPfiMmYF1gKSQ0bHg/KzgrSVVDTEszfWpW''@;'; put 'put ''dkB5NVQxVk8sXXFsbHhfcn5yTyQudExydzU2YnBwQ0o6TCwlSm08anAyIkBGKk15Ymg5TSltMUJ0Y09EbllUPSY6UVlWWmJINUlASlhsY2FyM0dIQkp3Q2Q/U2JVcy8peSo5TSZIVmVVJlJPZV1qMmMybzBGekNmbStBa0FTWG9kOS9HSXtjPUZJWTdiXkh9Tmd5eCEpVHlKb1JDeC5kVEtjdlRo''@;'; put 'put ''ZC50a3NZVjIjOVhfQ2A2Xiw8Y3gxcTtwb3x7JlRZaW9TT015WSJuOz1GR0w9O3FEZVJ3Q103VW5XMVkmcEczRkdyT0xIVl0wNE1XIzVNS19kOGwoY0YuOV4kRl8vcyMye3AjOmNLdmlGMl8iQHBSP3xMby8yNVlrRzw7dzNtO0YqT3w6ZmVxfnZoaGF6YSw2NElxIW0vfUZJZk07WGUoXz15JmdG''@;'; put 'put ''OSQjOiMyI20zT11RS18qcERWNl4kTntASXErcTs1JC9nKnomLDZzY0RZKGtXWWhfJEguSnJsWTE+TGI+ZX5VO01Pe1UzPE1IREphclVUSz5zd0AyNT82LkFeOykmbnhvYWpWNlFoPFM4bGBMWXF6MlQjeUR7fXo8ImVbNXNjOG9TaytUOGBnT30jXnF8JGtoYnN0WSIpRlNMPWdkdFlyW0IybXZV''@;'; put 'put ''cyJtVnlrSW9SJFZ4S3lzYm9bPzVNXTEiRFZlejhXW1JteTM0SEV8TDRzL359QDo9cWtONUVoaVZdZ3YkPEsjWzshMFNsayhuPEdxNGZqLjxkVURYJWcmMjMrajV6Z302cDklSEprI1QuajxKLD18aWI8NWE7dyRKbiVOe0B1eXArdnxoS2l9PyxSKSFDODNgLHY+N11tPSx5czNRbHE0Vys1PVg9''@;'; put 'put ''LzEoLkpmYDYxckhUOzYxailMKShyYndESGcxbT0uOS4qfkg5Q2t0QE8+YT5dNmVrMmFCNTF6eTszY1glRjREbiNgTkhkQW5lcUx2eVtXLjZ1RDcvJjo5cVB2dEo5JiJZeWZHdUZWe1N5MXp9ZEVbUzlzWzpbbk84c3R4NXVoNzg5NyhCczUvWDsvOXkkOTQmeW8kMnc+YikhIkYlM10lZGY/XktB''@;'; put 'put ''UHtYV31KLFgvSlROZzBVKjk1IUlePWBTWltIajJhJXRpdyg0QnIjaHxaPiRwOGw4Q2c3c3E1dnhPODhGcjw8ZnE4Q2N8Tz5EVzEvRU9rPj0vNXJRa0tbdEtxfSRgNTAjXVRrVjx+Qk1gVn13PiRMVmt3WlZaVGY9e3RLPjwkZ1AyYCxZcntAd3VUVHRMUkQvXXsoNFp3Q3g6L0cmd3pLIlVGey8p''@;'; put 'put ''b2BwbkZEb15oOVdPVDRBbyo6WVNAcD8jaUpqPChOcUNWO2ROJU0yO1J4S29hdmk9eGdCelM0SjFxWiJwSF0mOzpNNWVLUSVnY2YqOSpTPmRPSSYqdyNjOi9HVDJPfVUwRzlvWXBobUIxRCxyfHdrL04rSmlQLis/RiFwZWxEMVtHaiZYdjk5bmcuMiM1ZTpiMkYke3tVPjFTalhWaUpbInJyVFR9''@;'; put 'put ''PW9gcVpRI2BoPz0yblJDNDk5PnJ9X0A4cyk2LEROVklySHMoI1lyfjRDbjtxPSROQT91WmJLYEl5PUI7bG8rT30mOnZ0Ok99b3A5WChbJmMpKlM7KF1qc3Z7S1d9Tz5iKl4sNT1PfDVgNnlgV2x0PzYsMjB9YklPNUk5ZTo3SVYsK2lkL358RE8pTVBbJlYhTTJyQFUpYnJ0amJLITQvQkw5P1A6''@;'; put 'put ''c2NmQERPP0w1IzZLQXgrZWFqd0JVWXZ7K3YiXVYrQEhbPFJ0Py4sRklxPExZN3Z4VnBXWSh1JTd3RkFtKEZZKUVHNkY6R280djJrTUNtO0ZNbXNDQ204eWFidm99fm9vVTFNIV9QOm0+MVBrOm10K0YxJDdTTVMuQDZQVkw4fENwMF8yKy9ZKFkqOWMvRVArXz0vfE05L3tLOEM1STJAfHdWJDZh''@;'; put 'put ''KysqSnt7KFkqeyhyQHF7MyhQZzVafnl7S1JEcjNVVzEkX1VfbmhhJV4vZiY3Q0IieTkrfE1rZChaTTNaZiQ5JVc1PWtldXQ0cypXZV1OaWdNQDtiaDVVR0gyU1NgaHhwSWFvbCZMNCEpKCNqIjM8PVVlaCYzOz9nWCVJMXlxVm4jIT83SUpUKWpoTEJMYEFjKTt2L1JxLCx5WT5kN21wLklBSFt4''@;'; put 'put ''LlsxRigmKmJKI194JlU3SUBKbElyWlEzeT0kOXs3STljR24wOXciVnM7Nzo2MCQ3MDMkOih+M2k7XmB9fSZ5MmNfY31aXlhCen07KV9iOkVGPlYqJmtUI15KfUBUW0Y3fT18LCVVOntaUl8vUUoiPE1Vdm1uKGl7PXwqe3FsSCx8VktWfWIiR0E9PCtBNWg/L0MkQnJzbD1LUTF4fnpSX08jPk48''@;'; put 'put ''PGlGbkR9OFBBS35XL29nXXxGY2tGbHtLeU5pO3pHLi4qOl9UKzVOUnxLUTxpbX1nLjxlXytQPnZ5X2lyVVkqVCZ5c2VuZipMUT5iS2UsSSJ8Zmx1bD5udl1kIUM4MzF0SEQ4anB2W3N3Z2FHWjxMQWZ+eG9ZPjduT0U3TUQ4cFZQK2NJZm5lbXdDM10ufnJNJkNGKyNyQENlaEc5LkJLRkBrRjZO''@;'; put 'put ''ajwvM3QrMkBDYTBoZyxBXWA6VTB2bFFgZVU1Jj15UGV3PXxQcV5KbnYqT2BpK0xFcWoxfWY7ZzpQQyFyfkAyJkBQRElRMCNkdmNtOCE5dURYWzZwfWIuSURPbnZoV2s4eyozNVpiSihsN2c+ampscko5U14qLjhoRz9HciMyc1R3LHJoIyY0anhuP2x5YDY/Zy5tIU5fdmtlOmlfMXA6VUM5ZFFH''@;'; put 'put ''eTkrT1JsRGlfVjxHcVcrfmE3NmcwWHJDXUtwaEpWXXFMVT4qKnZ8N3ZvYmU3YSlXV15dS3B6OSZ2N0lEQClCRypGN2xXekteS20jLl09OzojNTRjUSN4NC9zd2AzVzs9ejo7bjhKM1JfNj9LZ2EzO3FzJlcsb2NCOT5iSyFiaHs9KXMpNnNtQlBvRzJYVHZMR28rdEk7Q0clZDVDKWg1Y3QlWTYi''@;'; put 'put ''JVk5IiVZPGlfUX58KWF4PzVZTylOaD4rWmRKLDVZTEpoRT5JKENRZiR3OmhUOVlldUlsRXhIL1plNVlHb0dSKlZIbHpXWDsiJVksKUBvI3pRXmY3XmgjLypJLnZZaj55fSg1Xzw+RmlvdCh1KURXKXZwSDxYaUJDPVIpMChhaDUlNX5lUE1mWXNVOlNoTXBSbTBVLD1baHghdW87ZjdxWiVMfCJY''@;'; put 'put ''SEVQNmUhK1h4MnVWMDkvRlJJR09vNll7aXFPKGZkPGZaKldJQ0hSbHhVWEhCMm5zTEtCMFBZazlaaCsuV2BEX1BrJCFHMkpRb3pxZ1o6V0tFN0s7S0FMRnp4WFNFTEsvdC9JWlhzTShUW3BtTyZNbUxSQ3daPVdtRVFMOiIuSXF1UE5mUCVqM0RKbyZ5TnUqTW9Md0JsTWZEK0QrazZLZkc+aFQ5''@;'; put 'put ''YTQ3dU9DLkZkSG50MEc2SXVIQ2VDcXN1ZXV5NmZENDAvKkU4TThNJjpMK0tVQF5RYyNmL1RmImh7dFJTMjpwdWhCdDdXUzIwXlY8cisuY2MvRihGbmplU1EwYnhmdjJ1OGMpSUR5bzs5L3F4RSttbTIrMUlLRlFpVDk2WW4pNWQyKyl5IVghSF4vVlg7aSJPX2RlNVZpdlBRMGF4X1k8VTxreklG''@;'; put 'put ''RXVIITpheEh2QShPR05SeUkiNFJ6TlImSUNNV1hXKUxuOWRieFh2NS5PR0xEcXg+VWVPfUMyeF10UHpGUiJJQkdkTU5pd01RMCFZZClxYWY3eEkheCkzT0dKUk5IM1JnNT80W0RXOjAwJk16KzdMXkIiMGM8aFpgVyFFS045UkpvIjk5QklUODRAJHdQI0xUWjt4OktmT0thSm9GZiJofCJ2SD9P''@;'; put 'put ''ZWUqMHJMXUJjZEoqUmp0TCJCb1RrJEdlcTEueUV1a0leKC5JalpFWGlFaGoscjUhK3k2WEdLUD9JWVNqeExmQ31UMEB3ZyNNUiFydCNIZFVGPWBbalpbTHBDLlQhaVFqekwydkdLWltdYSR5YXVtS0drODg1IVd0YU9RNjk1fHldQWBjKHplWjEiUkolZDl5fEIpZnIjaVo0IlVRdCVlWjYia1F6''@;'; put 'put ''P283KE1+eUdDdWhVMDl5O0I2ZD01OHk6dSJPKGZlWnUiUFBobGVadyJjSX1vaVp5IjhJPE05eWBCdFVQRCt5TUM9VTlaYmpfTDdDTGJgayt5ZkIvcmVHd0wsQ20iPGMhV11JVEQhNWl0flJzVSNNanRRTWZqIXlhQ0daUERnTDVFWjdVMCF5NUJ7MGVHJVcuR1FvZlpRdT5TInFmWlN1S088TSN5''@;'; put 'put ''O0J+N0lZI3k/Qmo5PGMpV2BIYylmWlV1RVFKKiN5R0MlKDxjK1c2SUF9ZlpJQllqbjcseSxCITg8YzpXU0kicSQ1enR+Un1vJHlxQzlrbU9rTDlFZCpnenpMJUVhISE1JkxHRj48ZnovV1VLdSYvSXdMLkRzblA3KXkwQ1JvX2tzK2xCUl5Rdz4ka1k4TytwPGN8eVFEQn5BOFJRQT90SFMqYFtT''@;'; put 'put ''MFFTbTY6Z3VPNFclWFVQWXdMTy93PWZ2elhjT0V2JUU2dzQ8STZ1SGFHWGpTdjdNT2B3XlYiaEM6K0ZPRU9lI3oxVjR8a0BIYWM1X1ExP0RhRWQ6SUN+QzYxNFpSVGBEYWc1ckx1U3c4QSF9V0NsYCVZd01hL3ROTCtHLzdCWF9GbjMyeFYvdkIqWWJ2aCNbV2hHUChYRFIweEJHbGw1PVBXLzVC''@;'; put 'put ''dmFOeEZUX183ZnM0NEQ4Njw4WC9gQldJQCF8N1s+KzR9RCMlSS5ZL0lDRyFIYlovU0NRblRQZFNHWElKSSkxRWEvY0NtbEU4TTgyaylYRkt4O2VtJmtUdU1PJWwjPG4vKEJgb2ZyZFM/NEJFTjNIYiVrPXQzTkQjZCMzLyRZdlNrVSM8L2tXdWBUVThSMjA0R0Y/W0kuJmtidSJVUn5qI3ZjPUY6''@;'; put 'put ''QiNadGNFdzx1NWQqNT12Y1kiTyNmX1h0dGVlNjo9dkJCV2h0Lz5GTENiKkRuKUZUQ1BnIkNWJkFYQko2bX1MRj9CRV86fTQoTGBIZ21BemtMS0koPXxMOldrUXY/WTdETTdjU0ZONVQsUHQudTNwW2B9WDZ0c1UiQ3x2TnY8VXRafHZkQno2aVN+WCF0W1ZBd3x2akJTdHNjbkxdSVJEfjQ/V35S''@;'; put 'put ''b1UiTEBXUU1Yaj92YnZGWiJDJkY1RVk3TTA/djVCYDB+RnFMLkdNb2BYUEI6T2ojflhAdEdtdEJAdmx2MGNWcCJYbFh+VVMyLzc3QSlEYmZ+NElHJEReZFlMfVdQUEBvQHZgQiwhInl0TCNKKHAkPHU4TndDQz9VW2RZTHJBWEplXWBYREJEZipbKUZWRS51fUxKR2RFM3h9TEZYelQ6T3tYTEJk''@;'; put 'put ''OTpXZVNNMFt2cnZobFdPfnZnQ048dC9Gd3h2UW82Olt2bUMrWypbK0ZgRWIqfjRbTEVLfWdFMFt2d0NXSXYvaT19WGJCalQuTTlZK1JkSEM4MVomWSNpOEkuTVl4dCpUUEl3I3lJSi93PGZQekFST0UsdDVZJmlFUVUyVVgjaXhKOWRZeH11WEhSe1BIIVlSKXJuJjpSQHkrZnRHdk1JLyV5cSwk''@;'; put 'put ''cCtqMGFZdk8qWk8wZVk2ZFs1RzBHNiJPO3REYVg1RVEkIURhWjVbSis6SGEmT3w2R0tbNUgwNll5VlhET09xeDR1dnpmT3l4Q3dCZGRjWUdNYWNTPih0SGJ0O1BWL1VDTEV0Z2FDNmtIdVJQNz1NOGB2MENAXipbazV5eGIqNWQvNVh4bippU0l3Z3hrdU48eXFWQCVXTzBXMDZdfXZ5O2ZDR3R4''@;'; put 'put ''P05NMTB9dE93dyM4Uzdsek5JKH13eV1Dd0prPm8wODxPSHosI0VYZWpyIXh3MkhXWksjVjMsT3hwWEhASTAwNVhJI0Q4ZnI8cnU4U0cmPy5nLklrYmlSViZsSysuIzk9SEdpYEU4TmVJdGR2KnNLOikpZXZ9SzhBIXU4eDc3OTAxYHdvZiFhZTF7ZE8sKThVMSojaiolUGk7TUxoV2xmUmZhZkIp''@;'; put 'put ''Z2VSODVqOyFBLlF7QEB+OnIvXiwvakUiMz5TKHcsc2RsQUteQXw3Kk1SJmt5RFVqfilvWCx1PmdzUUlTYyV4RGFOZ2NsNWpYLHVQSixTZ1gkTVhYX257UFshRmxoZWMscHxgIzR4NCZPbmJfVikqb2lgblIwSUNYaHQ8aUwoS3xYNTpnY1EvRiRtQVJIQz5GbiV0KmoqVDF7JFc2RG1COHdPQThm''@;'; put 'put ''UjBJdiphaU8hSTl+KEZmLCM6Sz0lSm1CJmh0TWV3UHx0QWhebW8sb2VCUER9VmV2XTpqa3tVbWFwfSx9OExQSVA+aUFJZkx+QklPdS5lJnpuVE1dQ1RZMkxbTyxEVWU/MCVNVVh9PntJWyFTL0tzUiV6RjRXa1lxTEhyTmkqdnRBeGRtPW09bHxBTDwsR3NTZksxOjc9bFRlJjhoO2kvT1B5KGBr''@;'; put 'put ''bjlDOzhxWUEhS3VRPzBSOG9lJlAwMSMmbmZgVHxwK3R5bkJlL3lVWylPZHVHZXg4TTY8JEV7VVhDOC5DQjJkaXArW2Q7SyJtMiRoIm1aYD4sJiFMKGxhcDVGMCJnWC5pTnRMVC5xLEs5bDBCaUZiRD1aPENtRnJvNDNDZW00ejhEV1FfWF1YbClEQzhKUExXZT0lXVhlTXQ0R3M4ODhuQSF1fFF9''@;'; put 'put ''Q3gjQFAvJkhEdEhbV2RjTT9DImI+QEpZNC4mcjQxXyVZQH1JSThtQXY5YXxZe11uU19TP1t4cjtQKGZYZVRfe3Q7JHgoTEFCOEFBazZQZ0I4OmdSNzp3fDpYTlh0OkgwZUtSbGd2XS8hMUp7bXw2RiFyKnhnX1BFV2d0fSQ4aUd2UFIsalA3K3ZbPGU9byxSWF9eKkxQdjVZbkw7LGJ9NiFLISoj''@;'; put 'put ''RjRje01Db2Y6JGFhOGN4MGshYFBkZyI2YCVGZiRMNCl9ZFc+alJEdiNFfnB3RmcrMTppNHgpfilEWC4kQmkkQz9XQEJIOnduP3tYZVkpeWEiIi9sWzxeIXx0Y2M/XzxTRXQjSEB8SUFFe0pvJVAvIXs9eCVvfEc9c3hNOzVrR0JHQn0kTTYjdD0reyJWUnVhPEMrIypXYXg+TG5mUXYhRD0pfjdI''@;'; put 'put ''WkRwRlc2dVVYfEQ7REQiaTtBdiNEekhVUXxqOXIxJU05QWVsUHs2dFgmZzQxTi5JZUtkZjtxbXw6eUkrYURIcHVMaTlhajBoJC4hIjppam1KO0hnJjMkb3NwTGU9LGlTZnN0Q2YxW29CRTBIXUp1d3UsT052Wis/KFRzP0FsQnhPQlBScj1he1A0KSlGQldoTFshc2FyTytTK2hBSUN0YkFnJndr''@;'; put 'put ''cmlCPn5EPTgyOSpAXVJPNjs9XUI3dUI4fjdXKXFnV2w0SHNIVyklTGZ0c0xYSW1LKTxQNiUoeXJMISxpMVpgJTorPClCKF44UkBdQkQpans0IW5mRUVQe2hrWXx8M1BedVAuN09VXjkzTDxNTnBKaXw2KFNjRDBhVV8kXi4makZvdWVSIVdRdHJ0V117ZmUsWEJQO3UkNypGd1UpUXZyK3dnRmVI''@;'; put 'put ''OjwmaFJhPEdBO3ZiQiRkaWIyOyNadUlZYT5oQCN2RkhtRV4jcX5XZyNHXUZDeTc2dT5aUTtmUkRlVjhMV30jXkZUKEYkXyVmXldJMyl5WkFQSjdndStXLDt8dDRJaHB2KCxfdXkwP2RNajlqOHhycX08WSpWRXNOWVlWRmBdOnVfTXJeSEA1bUw6YUBDMX5IYnMmN0hMajQ0NkBBR2RGVj9jXWdC''@;'; put 'put ''VzEzKEJ5aUlRX3w7WTJVZWh2eDkuJmcmbDdHST8pMUxjJngpaCJmRW5CUkRmTE9DRmMhJXs4e3VUSkpzIWlEJSE8ZjcpaiZbOmAlUFl7VGEwVkBmblEsREAmQWV8S0lzUUI7SGwlLkZYMThSSCosMS4xNEw3ci5GdCw0NHw2T3xAKSp3Sz9odWpFe3J7ISNDNTRWUFt2MylUX1hlYzhULE97JUZI''@;'; put 'put ''XjhdSldGO1BjTGk0T2l5cCxzJiRWLmVVWF0pcmBLaVF9LDFAWDgsJDliYHlyJDlwNzpINllXNWVFKURuPmM9W09ZP3khU1d4MXp7W0Y9Ym1oQ2VHc0h9OjhaYU59MUxWZUJiOlA4OWoqezc7PUwqQmw4S1NiW048InFMMDMrU0dlTURqSmp2N2JqSnhsTjM5TG91TThBXjpCUDI3Iy8oLDV6ZX5l''@;'; put 'put ''eXMmYWRCI0UmZTh0ZkNyUkRGK1M7I3thakpHVzdHI0VYUG5DakpNayFFK1NNc3c7VUVLcj0iSjt5L3BRal1jRGgvPkJhQj1vPjxzYXg1PGw2ZHJVfFpSUWtYc1hFSD1fJFd8dUlPLC9MeVdOZTAiY2Njemo6TkxPZE5RT150SU95YT1mMGNwMG91SU9dIl1nKTpgZl86PFlJNUw2eDUpZHNVRGJy''@;'; put 'put ''VWtmeGE2T0h6S0AmWmVkZTM3R0lIIjVCTjtaVzhKT2ljdkQ4R1BhclVdIklPLC9qXWR3bTQvTiw6Ny41R2s8czRTeyVEOlp+RGQ0Pk8qJHI3SjBGZHhhUCNiTjFmXVtaMVpkO1A1Lkk2Vks8KHhjIjU2YWdjKkJpNGBkZHd7b1AjSTUsL3pdaSEmWmJ7NEdsUXo2OTckOHhjLGFYYVJRejY2YT48''@;'; put 'put ''YT4raz8lcjdeT0toO0YyR1plNiU/KGc0MWt9bytKS0lDMG9vbFB2Mk4qbmFRb3NjKUZeXUBnfERzc0tKdCtYKEx+WFpmMG9CSzh8Q2E4dk5lU3B4VU8ueTlnNkc4NntsYiRUbS5PKG1zXT1YUG5IeFFdRno/YkE1SV4mKmd7Jlcoa0Q9XmZVbUkvSm9HYCZYJiZGJX1dJkE/YzgydHNQSz06aUYh''@;'; put 'put ''WVcsJnRHQlVyb2w2OnZua0VbOVRQSHo2Vio4d2olbDtSXSZPaHdjSTA9OE81VC80IkVUZDQ5U1VJPk93c2FsO0gmWCpkejUvWFcvLE5DcDxFPj0sQlBfPEVoUCN5bjsiKHcmLE5pcGhGNF96PFkqOUtQbEM9QipPd3csOCY0SiZVKnU6UCVlUTN5dHk0eCssT3NsVkdaPGBnNk5XMVgvcyRhL1A4''@;'; put 'put ''MUk9XUJyLmc4d2NrMkQyLm9ALnNbO2lgODkoeGk1cUR1W1RIKVNadSRubyElZGJXVilIWzJuPGAqS1A3KDszPTw8K30yMn4+MHt9aGptb3hxe1U3aGsiYlIoVTsyb3tWU1Y5OSxOdmk/b1J4aEZCVU8jTjIwVUJtVEk6TD89YCNyVSU7aHBXWlBUajxIRntwSjckWEYueykuZSIjVz00bUBgTD1l''@;'; put 'put ''a2gzRz1la19xa15LVVQ0Y3srM3ZOK3F9P148TnAhfVMkMDRyJXVZQWxbR0ttXjFELj8ybW1wU1tnIXcrQDcjaEVvWjJaKmI0SiwlOV5IfDtmLjBVYWdkO2w8RG1STVpvRH43NCFLbltraDdWRHg8KHl6biI3KltwPjFeZWV5KSJkY2ZWJDN0QThQXm1kN1ViM3FRV3k1SjhrTkJdMkZSUkNoQE1T''@;'; put 'put ''ZTtfYzAxT25jeEU8eW0kTHtOZj1GOSQlW10peHdqLHxAbitKRTZWazdZN107KT49JVlkeCRxVEdWfVc7OWRTXkdze0BQLFFgeDMkcWQ/bFNTNDExInptaDtAb3hJY21ydjFDKEpRLFVVQXlsJmpmWDwqZzxOYlcjKkZHZ11ASj9GKnZOclZWU0FXfFpMfSZHWFppdkEsLm9rTDpHbERhSl9lYCE5''@;'; put 'put ''TCtTTCJVJGNyMWxyen48ZEZKZ0AwLHI8QFhrUmEsfUlnQDBqLHMlRH1ac31NXk4ySEdgclY4e3FTTWphZXoqay5hbXZ3RFtXMWpoPTo/STdibkNjazZVU2cxMU5oeyM8M2o5bWBnbXNmIzVeb0drNj91JSJLQ3gjRz1yUCNWYHVTTWphZW1AfWpRTnRqPTtDc1dvejNTPn5xR1FvYWZycWtjVmo6''@;'; put 'put ''I1lrWW9YKyt7LEE2QjRGS1tOeVRTZlVVfiNOe2skN1pFMT92anA4X0w0cmN9N3s+d2o8WWY0blhFLnhJNjl8ZkFoTjw2TlRyaHE/SnNDXkh9PyVbY15FdVlRaj1JRyp+VGgmTEk5SXQiRy5dJnckSTRxWDcxM1F0WzIiRmhGaiI2YmVdelEuTEA7VVYydSZYRnNNTXxIPTZpOHgvOXlHJkE4M1J1''@;'; put 'put ''SFdfYFVjPjMyLFp5SWYjezI2XSg+V1NlfiZ4UUNtTHNZclIvSz1IX1lMOHYqTHJEZmBKSVB1bihnQkVARHU1QHRoaURmNnhuXXBPSzBsZyNlKHFWTzskVkhFZzpePCxaJF5vcCxNVjgvfUcucll1cGhHYnpuIUB0X1BWeHVORjIhP3Z5STMrRSF3NV1efFJLPkRjXzxpYl1WP2QrXXZpXW1rWCht''@;'; put 'put ''b1JOI1FGdDRaLitXZyhQKV5xUU9mJnlxblhgNjIoXjxnRVdZZldtX1REPVhwbSt1ODckTHJNWl9mRHNjNj1hWFttaDhMTWpqKlBVW00zPUllTlF7IUpGVEMhZ3JnYlNASSZIdUNgKmRxaVl0OUt3fUxyeDw5XTtzLztqPnQyKmxGfHJHITkzMXl0JElrdmJqaXohVGR9OEkzcEx1Nn1hR3RvTzMp''@;'; put 'put ''cFlPaFRCZUBBRjUwP19DdjI0bWpjWEJ2Mkd1YnZ0RzhPZ3YuUnByJGYjX21QNU55eEkoKz8wRTZQNjZYXjp4Lnt9eW5nb1VkOFFwJWZJVVM0Km5PczdwWktQU1k1Pk1wJUJLWjhQRG41YTptdktTOkNNVCZZO1ltPFdPU31PZixUfjE+b3VwS3lfZHJ9TT1bZWhHS1oyK3xWJkNNej1lJEZMRyhl''@;'; put 'put ''LmV5XyVmd2htMylbVDFkZGxGUXwpSVY4Q2s7Z01QZzg1IWdyO29TWkRbO2JrXThnc3xka3NAIyEyLkZ+P041aTlvLk0jWVhYIUpWOzdTJHc6U1AyMTx9U3RAPTdOXTxnJWFFbDkhSjoxPDgiSToxPEZdOykhOWlKXTB1VSRsQ35KOU4zTERlZHh9ND9lZjdrUnw/Q2hFW2hES3hbfGpOIjMkTU1u''@;'; put 'put ''WFF8Q2wyfWFaKy4yfjRZQylBSXBzTGpZTFd0eGcwTCFrNk1mdjRCbEpdUUJsZi8xPGFpVC9hSVN7REtuNV1pZWQ/eXY9eTV0QGs7c3w+MmM0VilCSFlsbEcrPlh2P3t2dShGOSRaJCNucHl3LEMxdjh3Rlo4OWZJWnRCNXdOTihNYzVmNyJ5JUwrUnJhMnMhN0l6QWwwdyg6LE9lbTs7YEFPTXE1''@;'; put 'put ''dCtPdD04QEJMLHE1fEElN0pPJT89b2djUz1zRT1nYkxqVFJ2YF42RiNKdDVMb0loN1hxOUR3KUNmX2Exez0xaGA2S3dNWzBwaj42P1VPc1RuUGBGUGdUaDBCUVhRe193QDIqLld1eG4/eXZtfng2TUR5bEgpOk9zcGJRQDJucGlQe2E8eGc8WChycks/WmJCc3N+IkFfQHQ5KCVYLnU2KChbUDt2''@;'; put 'put ''Qi9bYVo4VWIxcHdDbzlAKGUmI01OTUN1NHBLJmYrKDB5X1lLWnV1UGVWUiJFZkooV0tRSH1qT0IlViVRTFBNbnVFPChUVWQ6PiZOQnJCbD8oQV09ZSo5fihUJFAxXjhvaTNZeyJFQFtrT35ZKC45QHl2M15CO0kmMVBLTSZ2c0plYyZMNGdaL1VmcVl5cm41RTUmTDZvUkwqaG5mW0dWZSpQW1Qh''@;'; put 'put ''Rl1ILGA7MUBqQ05qVEQpPk5GLFlWMDBKKjdAQTN0LEkqQVM7MC5mQyI7UDF1TG1RRnU5JV5kZT0qcyEwfCNCOEJIV3I9OnBuT0hLL1c3JUJJKnFNOU4hbGgrWTUwdyQ4Z3xvKUdtd1FjO2U0KlNFen47e29PczBSM0JkW2MzSkZILzYleWNuMl1mb18hNCRJNmllXkBFTHRyL24yS1ljSEkoaUhU''@;'; put 'put ''Sy4pbWx6JG5tUn59RXE1Oi4hNEk9LEI0Q0VRMURjJlchdzopRj02TkU4XUB4TmhMZk5sd2grTDIlRT5OX1daPzpVbXd1RjdkSz03V1ttOF9ObnEucUtIVyQ5d2pQIlNVM1RWY3RFPixCMndhTyJTWzY6LklhRXU4VSE2VjlVN1UxfF1oYjUxY2Q/PiF+VGx3IyokNEQxcSppNiZsdlhwU0ZOZ2FJ''@;'; put 'put ''Yjs5PFIqKnlCOz50L2RWYSYicWM9OUhTQzxENnR4dXBpRURKZEM8byZLbnViL00qazEjJCtaVnRFT2Q0bXFdM1pVWmxaT319JjV3Y2VZXjckOTN0KmlSYlZ3NE9mKmVIPVorK098PVpMcjFsS2w8YzM8dUI+PFNGaC98fSR3YjQucW9HfnpobDtVNmlrMjpBVHVsUGJ7TmNNNi5JS091aSZYL2Rj''@;'; put 'put ''c1JDT19fQUYrQlY5SSk9R35Kdl1nPUl+d0hESnJ6VzJHZHhKVGFsLCIueyJ3TndYVCZ9JTtHWW9YVlopc1N9XVcvN1cpQnQsM2dUfmhzRlhDXVYoZDpKdVdsclBwbllvIUBMQmVtOTxjIU5jOmIvSjY5KVRwOTZzI191NmMmPjpqc2hOc0dxIi5jIW5TZDk9WD9rTDNFajpHJDRlcn1OKnhWVS5z''@;'; put 'put ''U3Y+YEdqMHBLbW97U1NXXnxJKXNaJjdweW5YPSF9YFNEb294cCNSakhYUVsyblh9RCNGJnVFZWQsTlpeZSRSUCg0MUtnY31rbUhLWll9R2Aue0E6MEc1UT50ZVk7YFZiKjVkSzE7SU5PIyk8aCo8SzI0PWc8RnlgVms8a3oyYy5rZXB4cCN4amhwIU81STlESXJ5SiJZRmUoR2tWViE0XXcjR28q''@;'; put 'put ''eV4sI103NCsqRVFuOHY8ZEVAdjYxOXZtbWlXbFVdRmlKUmNseXlUakZPfWRhZXhtIUtDNSRJNV1FTUg9bmFeRl1MLEkjM1VaelQ9flozbVJiazxbXXlDUT4pdjxDOiVdVztyYSVVZVgqNU5ifCIhb1goOXBHIVlPPSR1WlZBPEtYbChfKz9JUEMjNFpwOTdObmd2ME1PazxXaX1qIzJ8YF9telt9''@;'; put 'put ''cjVTWFo7ZFBLIyFFInx+TXA3ZkBNKEhRInh4eDpuXTw6RmhAU0dFTmYwX2ljUTNKeWJodklWUTBAN1J8RWFmYSpjdGwpdHkzST9CTHFmUVJXfDkpckBGVnxDVm13P08qanFKTiQ6MUslL1ZLRyJiNC5IWk49YGxtfXIxOTtWWD52QG43UCYwc3NfWHM+N245RkttIkN8VyoiYHI2QEI0ZFhXQ1Y8''@;'; put 'put ''XTRkUiNTem00VkdrPy9ScERufCNiNSovKWYuNChUSFohXlMwQk85TEtdVXpLXX0qL0ZLIyMjQjY7SXJ9aEwsMW8jS1p9WHpGNzpNfn1GMF83UihPR0FQTGUiT1hXKTxKZ1dqNCVRWC90VTtieWM8N21bb3kvJCVlYyZMNkViJno8a3JXTldwYH59dnByKXRuMjg6YnUzVi5FbWQjVXo7dksibCI8''@;'; put 'put ''Ny9rVVdUVG8mOnwpJHFnP1h1Yi9xaClyekxLZDxMWzZsOGssZTNOaHFaRmV2XWAwbXo2MEgxUDZQb2woZTBRcSM5W1AzfSU+eFFEXzBLeSw+WDxxbFZYM1hROnxJQCV2c30wTV0/emF5fCh5JHJlNjJnI307JSNJUHQzLEFwQzFGTSlSbFtod0EsOiZbWl9OVnEuMUFPZ1o5LDVObTJJSzhvL1NR''@;'; put 'put ''VSp+X0ZrJj8oPndOaGBoVXowcDBxbHdiaSlLcSxxZDFmWzM2LlErPGJNbjFNJV0wLDJWdiZAUEZvMmdjeDN7azhTJEZwQzZBcFhoSXtReiovJjwxSnE1RllVWElFVSFxR316dnssMTszQyFDN2QxZHI/UnlgS3Vsb0M0QyFxOXtNPHpweVdgaW1hVl9MZjYqbS5LSjNOPix4KTVGe34+fT5hMT4h''@;'; put 'put ''XjYpNV9WPWpvPD4pcX12cnw/YGtjfC5AQHRjIk1ofFoqaWs+R24wZnYqay5QdGFbe1tGb0hbKUZQP2w+TV1zYlRmOyVaRlomc319b0drK3JsYHohSEM6VigvIis1JSE2THciK0xyMkp8TndwdU16czRbb1VFW2VLb105NSQvMTxXS2FrMDtXPTY9MDlbR0NXLiF0MlJqJiNobUQ+eTtbS0E7dmx1''@;'; put 'put ''d3lmWzxNZSs5KEowcXU8SGsvI2IhNnkmTn1FYUdTQHxEcEJGIUAxP14xcTE8bTNpaChVP287bWhwZ1oicFsibGNMc2duQkdHO0BddSZoIUQ4bTg4JlBfbHZKOCFaYj5ZLnA1JmVzVCY9PkVrJClWV3hbNjwhO2R1JS8jUyQlfHN1VCZXIVQqKUZyJHxsV3ZWVVFuejl2ViRxIy9OXn5ATDlqd2wy''@;'; put 'put ''OCs/SV9iOGV4PHJ7KHlIXlpwLjxZJFBpIT9nMyI5JCU/JSYqekxvcT1VYmJQU0RXSl52ZjlbWSRwOD49Ti9oQyImTW0kW1YkYzI+YE40KG5fS3g7O114PmczWWFXck0kfGk1VjJ9TWdDIUZNQlZGRj1xOiw+YDY1SGlLPHYjKyxmU2lKWjM1fXBne1ZbQEVlcDI0LkJCSSNEdkcmYjVTQmx4QT5W''@;'; put 'put ''OGMvKjBaajMlRV9DSGhocEBscilUe10oKXFyLixod11DOXl4Wi85VTxiTEdAKUc3fX4+K2tXPzgzRnAsNzkpMDgmT2t7Tkk7emNiNlUsSEQ6eTtrSnBQUj9QPEhMVz8wdV01Ly5ZYiNoWFVtO3YsPUlmcUh5L2ZEU01kUDZtZHZpOWRsWigqKGJoUlBQImhpbHBvcHJRdkhTKlAyMTsuODEvLCNx''@;'; put 'put ''UERrWlY0X1RobCRSfT12bHo8PEx9LCJCcHIzTGVTVSlYZkttMmpgfF9AekJNT3pdeyhjSyJgPCwsK1NLRD5SfjBDcktdezhLU3svfUpFXXtOOVpAaWs4MV44ZUdQRVVhLDVGN0tnUGE3cjRvSmVvN310Xkh4LiJFWSlBXUpxdjJIYl1QbEw+bFolODYrbFloIVZedjx2Pkwwfnh8alopX0Rod0hg''@;'; put 'put ''YnNJLiFOa2VrU0JmXWEpYUtmKjVffDlfVVJ2e2BpWj1GcVkyRGNmPDRyVC4kJktFR29aa2pgNzZab21sRTkwNmRgW243Kjl4PkZSVWh3Z1gpPD9qKz9deXJLI3p9c0puOH1eZ1hFOCxwMTl1O21mS2pke2FfJnBhemQ+a3tjX0tsUDxgYVlzOVY+WEcoIV8odjgvQ1dTKn1eZ0x7eytbO0taXihC''@;'; put 'put ''SnxyMnNZSntUQz1sUiE/SUVsVSRNTl5dIy5re20hMlY+T0R7YDtvN0w7OFtlNmpSLEU9PHlJKFdraWRoVD4uS0BkSiZgPj1nK2AuXSN0ZHt6YHpKenx8Rl95JGY0bFVrdytSXXNicjx6djdMXmpZTSwsR1dlU102V1hYKSxidHVNT0hFMUVlNWBHPlZ9eHV3RGVSIWAoV3VjdlhkS2Bve2orcys7''@;'; put 'put ''ZXdwUDJtO0wjaTV6eX4xVjtBRV5iOyVVeU4lRltKOiYpVVgoUTtXeHZXW0hWPVcuSUU7ZSJeKnchPkxOTVtjMzxXcC9HMjhfN0leaislPntkenwlRWY1Ny8hKy9Kc0dtfT92cypRal9PLG5YQ31vR1BnfDxrYVpvSzU5e3V5TUxzaE9LIU1IbHtMa0QjNFtNcikkIV9tekVWNl4vdSkuKU0sXlJT''@;'; put 'put ''fDJRX3x8RklIWXk7U01Tc3loNnAlODpOSyhpJDlzMFFQTDReSmZePDN1OiJqKks1OkVEb3doMEQsbUJYYHp3VitsY0J2SzxlZHteVCojTT1FPkJzQWx9P34jOk4zNH1QWmJVPGB5emVxZCJIYERXaEpwLCwsN01WITZ5NT1lSlpVJUlZK19HVktTM2ghOXxXTHxVPjZfT3wqSntAPmV5fT5lfT9X''@;'; put 'put ''P3JALzwsS1s2YEcrI1tSOk9QXm5MWl8lak1yJFlvWl93OCtYTX1LLDosd2JDNFU/KWdGaHFyZF42JmZXYGtrQDB8Nz41clNjWT5VZyUjNWBPJUxHZHFuOWt3VFliKklOa0FhbGtHTFBxNkVTaUBjP3RHTXs5UTNEbmN5ZjprSHAhNS5sL2IvKlFzVWJRd0ljXj94UVYvL0ZDV11HU2s1Rl0xTVNl''@;'; put 'put ''aH08RShfYWF9eDliX1tfemVyJl92Nyx8NWZMLjhWcig3S25WaV50JkIseGxmKy5JIyNQbyRdcVouZlUrLzxaJEFHMGZuI2EoPW9RKyRZd2wqIjR7WEtfNnl4eWNzPzFQfHlGYDwzd1ZrW2FyUUdMV1RfNUBGcW9faEtuOCkzSkB5ODZDcCNnOWl7cD9iS15PPjZEV2g6OkhocT4pY1ZyKHkzSkA9''@;'; put 'put ''JlBdJlRONiR2Z0ZHciNOVj5bc2NWVzVxNzY+X3pxbilDLFZCN0FeIit0U2hCSjZFQFBTcVp5TmF1d0Q9X3hwUiNsS2hbIlZHcGQ3ejNCM0FkOW9pV0NSempGVCU9Inw+aVksP1tRbDEoI0RtdTdXZmNJd2B5PnZ8T0U2bk86PCUuTW1sJT1URD1aKmR5M0k2XXFaPHo9Y0JPME1kKWlddXs0THA6''@;'; put 'put ''KGlqdGohW0txVkcwNiM0TWRiI1tyc3ltQWRgP01nTEBKM3RzLC9TSSMjJjEmTXJIP3lFdXJNPFJJNzdXVnk4WDpvISQ5flh8SDd9YEpqZkBXJl9qdDF5OmU0LEEyRmN0TFdmX19mYjRrJWx8e19Wb01ZODEhaVR1Ilprd2NePU5QI0hOSWJnITQibDtjIig6QV5NUSZ3NVtgUGtaa3dzNGVKRTdv''@;'; put 'put ''aGM0RDcrTnlJZi9MLnh4dzpPW0xGeSpvS15xUSROaUUlSF0pa0ROeEBIK09FJUUhL3JfXTM1ckJXKio0Y1NhQEU8aXdFXXdPKzF5RyZCRFU9WTVUQE98UGdvSyhdXmhDWEoxNWdvRGA3KyMlQ2ZpczlVRyZkLl42ZGBbS2VdfXgxXUpRR3hjYypBRmFKOGJFMk8uSTIzKykhMyJjQVF8XyQpZDhN''@;'; put 'put ''ImZNT2ZtL2BuOE5rLFBEREt+SFIjSihaOmJAIjdudFZ8RGhMeXtBbD19KV83bUk4YHMqaSRSYXhTYldMJnhZP2NmL1cuNSU7PGwrbDltMnM5OCZzVVUocEZLfUBMfi98VjxpbTZGaFZOWDtsLkBYR3FbQExkX0FnVXBPdD14cDczJnBVaV1dR018THxXd1YlNCRkKVBMXTYmTnxAfV9PN29lOE8u''@;'; put 'put ''Q281I3MxUlI7fTowdStCWUFyVitVPl0xais0RnlRbnErJkthKiErKlhCakZaOGtvWm8/KjIuXSxYRTR5UjNkaFpUdGhPdG8md0Ftajt1P2dHU0VrSyQpci5kPHZ7RiZnUE9tJjE4Kjd0M3ZyIX1SeFltOzlNIURMcVtjd1JLRnc4aCtwZmtKbEk1OTsvVH5SQGx3bnBzc348KFdEbCNVJldqUUgk''@;'; put 'put ''ajIiQFMyK1doTCtXczlRLG1YU31nIWpweyptWDNSWnEhdXhCYnEhRi9HRWojMkIkVmpnWmtqbDtiXzpTe0AoVkJnOHRAKTslUz9ze2hFbkNKOz4xeXJPcmVFMjNnR0VWUkZLeCM2e2wrI2ZdYERgbkU5SGBSRXBRW0doPmwyK1NjKXR1Z1pmTHF3Ul4xVmhzI1VmM1o8QXloRzZFfnc6PjFEV1Uu''@;'; put 'put ''UWMpcDJuXjlNVFlAWGRbK0VmL3NfVm0ydWxLUEZ9P0BMOmpRfEpmQFZoe2grfSNiZSIpPXgjTSs3Jmg5I0FaWit0QEl6fUppVXNUSUpxZH5uZ0AqT3VBcHJFRFkheXNvdG9vSE1ZWmY3XS9LOzVUVX5wN3hhTChrNnpaJjFgaUZGQkRoazptdnVKfCR5OGFEbCxdTml1ZSY6cmMsTUx8SzI6Yl81''@;'; put 'put ''JE99Z1pHdnU5ZzFYVTwiRmNMSn1eLGdAdmx6ZmhIYlZWQD41U209M1BJW0Rhfkh3KElGMmlNL3NqPSpMYGBMPS56dV0hSTkkUXQ8azVLdnZQYV97S3N6bU12JX5HViVNXnJZQnFTLF88RHkyQVBLfW91L10peUUxX1BkIkhecVojO3g+dFo8I18zfUZLLEREZjolSTp0eTMxZiNfIzw/QWQuZ2Ff''@;'; put 'put ''S0NJOTQjWWtIcSElSW1RYXhHQ1dwJDZDWEdzdlkwLCp5ZltFdUxyRUl4Y3BoJWQpaCVkLElQdDdOYHZHQ1dwayZodHdVMFFsc0pxKzlbeUtrRX5YV2BMXT11aFpPeD50RFd3SDl5RCtedF9IXnJzeDtAcE9IZyF5PGgqN05vJnFINEpwP2NPOGlEVHRkPCM1fThOOVk6R0NuZGE6dVYsOC5Jd3w7''@;'; put 'put ''QFZZK21HJHxja0A6TUg9bjUrX2BRentxWjVreGc0MyxdekpWc0Zyc3dgJE5qang6JUkjV3liWSttR0VvIm9CTj58SEpCRz4yN3QyRU5qVERKSzslc04mV0N7VlcqLkRWc3NIJkgrcDZWNzJtWTI3dFZ8NWF6eClhLm1GOl0vQEtmY2EucHQzPCt4ZFtwU15HW2M4MjRiKG1vUjR1Wlp5LE5GVF5j''@;'; put 'put ''NUthK2hHfHpOOUk2Tn1aM1VrKSspUitISC88UUwkWn5gIzdKT2dfWDIjP0RKbl1ELFFhIS8vUEVkODI3LFBPaGQubThWUmEhLz5eakhmPCpWOG14Jm43Y21peikhbCkuXU8hJEJGKXEwbixGN1dNQk5DWGxmbmNtUWBdJU1uNUBTTXYsKntHcG0hTmR4ODdTMmFfVWxDcE40azA1ZCNfY08zPlVa''@;'; put 'put ''UzAmS2AhIzZsRGY6fH1iLFZjRzVCaEc1OHcoPjoxbEBjen51dVlJamJ0V0RLL1c3cmIlNF18enlWSEhPcndPY2B6Y1NpfUw0NmtLNFY2KkUwWX01YlQ3Tnw0fmMjI20zciJWVzhOYXhjcypkfkVzRG9xQj5RLnNobnVLfFJJRW92ezQpaHlBMG1odWpXK15bfFhgV3c+YjZYK3Yqai9ZWVNjSkIz''@;'; put 'put ''eEkmeGdxPVNPbyFBN2ZTXXJ0WFF+JkZDKi4vLDt+WU8kdHFUWix6Lll2S1lld2xTbzZ4RVNFR2V7cSRLU0djbWIsTHpXTltHY0M+OypDSj9NQ2UzVVJPMjdWK2tNUUNMVVQ0LihOWGpObTBRfjkpYilSX3tiXXpxN3ljUGs5LlZCIUpfKj5raG1FQHUrdUx1P2FJTlZBPClGUXFPYmlRW3QmVz1j''@;'; put 'put ''ZTw4MEZdT09LYSsjSSQ3NHlLTGdDJkhUIUA9N2p3XSJeODIjSjwySm86cl57d2haeSNaVX1ZOylVLiRUQU8rMlBeJWRGU3s8UmpTPig2U3lXfSNEYGJKOTNzTTVAMyEyRT1sSkFIdV0yaT9rVzNpZztKZHp6Wmt+altORC9LfVgsQn5dT0Z6Y3ckaEhBPTRtN1VFSXJtY2deWWJ1OVhoXnFnZHhd''@;'; put 'put ''ZWM/YikofGYhWnZrc1lTQW0wQiY9RyUpW3JaVGVSdnt1RGJwWiR5VlNPX3IoekcvJTImTitSdXBoNDEyRlA/Ikd7LjUrUWxwRXlWcCZmU2wrVURLSStGJHIkZE16MDVTcyUwOHRmbUR0ZmM0VVNlKyNka2VkRm8qZHZ3PkxJMjA6Ry5TMipKVzB7YHsld0QhcGYjVGs3T2BkSjdUcDtCLnxKaCpb''@;'; put 'put ''OXNFTkwjVCZ0L1kqV1A3IzttP2NbOkNFRkBiQD8kVVUmaEVnPGchNT5mI2U3OEB1PlNWLjMhT0VxPiR2NkY+PFdVQE8pcF17fCtjYSlOfCswUyJidEpOdFFxUWF1K19GLnM3a2dwKE0ibm43STpjeHgrWjhCdiIjcFVYR1J8YCsibCsoK1N+SFA/X0Zad1tFMCwpRmIsblpoJnRjV2ZuOTZaJWVq''@;'; put 'put ''Oz8rJnBveG5aRXAiJXo7Q01LfSovaDU+Y207VGJ+SC5VfFs7TnhUaFpYbk0wR0NXcDdiM111WjVOWlBaSXs6ZEtOMDBZbl5xMFd0JGxkV0g+N15obG9kKS9Kc2x3PWZWOFF0cGJ5UmVLbVJFNSRGKCYyLkw7cSVDeDdVayRpeTMqPWNCT3B0UyY8KDx2KmAhSXJqRkZXfShQdDxmK3BmSWgiUFJE''@;'; put 'put ''X1goVzc5MiFodzBYVD1DZzEqSm8zPGRLTzx7LFd9IiErclQ7emNUaEBSVEA9RGA6SipNTG08JGI1PkF+ZEtsWGhGSzsiKTRKdVlUdGRTfFltWXsyMXh3fWhJPSIma0cubntMNHx9TERfXXpIMXBETj1ZYXt4bHlyRkZBIU5LczRzWyJOS1d+cjluNyMlY01uL1N7KDV9ZW5tV1tAdXtvXSQobWJt''@;'; put 'put ''Kz9PcXJHP0VJWCFrWmpAIUtuVTUhMXk4e2Q0dkw1X2szSysxK2xJVHdKJDA0fX1ZR0pnMHBHeyErciF+PkQyIjt2QSpLKnU6a008eC9oeHBCRkU6YEd3ZXk8elZ5KU01Z0Y1JSFlUkkhKiJTMjtuQyxKWClbVjwqZGhTZk04NTx4UjhrVTtreU9RKkdIRSxAIWI2OSFVY2ovOVNSVFUkcWghMHhV''@;'; put 'put ''RTpbPHYrMj92Yjp5fERhNXgyMnNQeDwhKHZgPUo9RmxZWWhSaTwwOS5Qa1N7a0BKSjBvLGRsVENreXx3dmpIYnZXQnRmIXlDdyx3OitIdk0mVUhgNSZrWGl3eUs+flskWXIscUxxUkZtW3RjUXR3dzIjcDZXZzV6bywlaj8hOCslalYlV1dOamN1OiopS1V5NGZyeE5JJmw3YWU3eW06Qm0vOUd2''@;'; put 'put ''WnBHZnlpZmtYKVsue15LLHVxITBvcmFlSUMxM1kyWUAmISFhRytIYXJbYG1rcCFPVjl6YitgS1NJPy55JGIjSmdHOj8hUDZiZlZ2fDBWVmFpVEs0aXUiY11PL3oveURncj83flksfEo/SUw5ezZMfixMNVh0fE4qSnp8PCxjRlQ6S1lTKyVHJSl6QnA1amBZaG52NHttNDVQRkdTRnlZKz86T09Y''@;'; put 'put ''OUFFN2JFcm9JXWdETTNkcUFrMC5UVzwjYlc5eiEqSEQ5JjJ7OWgycVNTbXddcEBMVSpAcCksLkNiVjMxKUJgSzkmMDRXL2xGOFFRVVQvJTxlLlZuK3JQdjNpYDRhVHclUz9wLHBvejJzKW1BQ3FUVUp8STREbmNNZkJAQENBQFF9LCNDO0cyS01HOTcxNG9CUlR0PnV2U0ZgdShPX018Xl5AKX1o''@;'; put 'put ''fGp5Rz1zIVEsL3BJQEBpWiQjSz17bHF4Om4/fjFIaVIreileQF5nZnU5IUNVb3J5MmxpUD1QbDpePVBbUFtuenl9UDdna29jPFVNWl5HUThhfVF+fThrPixuYCI7eFprUUhDe1FfPWlMLCk6VUlLdSw+I01nfFdFezZLQklsNktKb2ArbUx5TiR0QmtpJDxtVXsyaXdqbmZkdWpLQHZqQCg7aiZA''@;'; put 'put ''czk0bUBWQjx1PGssUTpHcntrKTVaPF48ZS9iL2dFZS9OXk1rPjsuOzB1VSsoeSo8RCM+MyN6Znp+UCtAZWhzK2hoOyVPWUlZN0l3JStscVFZRmtWWVZ5RG0sfHU/ekJUVjx7Q0h8dWVTNEU3MnpdTXFRWjxVbTJZZkVIK3NtSSE7a1F6Sl0oTVYxX1dXZiJfTls9UEhFZjArOThSb0IlanIhMypJ''@;'; put 'put ''dXl7LHN6MT1IW2heUnB2YFJkYy5wbWgwcGI8QTh8MSpaPSgvdHxYI3kwWnl8YkBhaiFLNXUmezdMcjgpMkJhdCVnd1hPakNFWUtSMHApVXF1I0lOZzpaJjxXW1U9UGxnQEB+UStjPHE6KiRsK1Q9PClMV3E/cGkkQy9HcmdhJi90bUloSShdbmohKzZvdTdhdUNFZ2MxQkpWS0BpOmldSUF2KEdy''@;'; put 'put ''WEFPTy4pUD1ISlR3MSQjPGd1eVAlL1lhR1AsVyJvdSR5UW9JVEs1XUIoc3EwM0YlOm02ZSJPe3FJOHsqPTBHMmkrJXBHNmJ9JHI9bzpxI0N4Zm1Wdzp7LH4zaVZrc2x9djJHRExsU2NsQ21WKjlgank6N11sL35ILjZmNmRRemIyZmpEQWdSTUJbNkNVMDttW3toNUFsTC4+VVQ5QEsqOz9JLjUl''@;'; put 'put ''MkhgQFdAS0IwIVtsWyVgVkBNLk1HLFg1Tn50Tj17V084Yi8zTmNoamU8W3dWJjtvLEFGTDlTRnc4YTkjUWlFPHo7U3ZAIiUydkhpfGwvR3hofFAifV4jYFN6eT0mKCpzQHwhSFgwPiFsJmBaTTs5SV5WJHRBbVZQRH5bMyE4dmh1dUtocTRNZi4ofU5aaiZBV1AhejsxalE2K3ZYc0hqU1dlNmN8''@;'; put 'put ''aGYic1sqdFhNezJteFh1amkuTWhxVWRKRWM5Sl4sQ1dQITVwajpgMjBGRTEsNTZoRnVNZUxbUkA6bi5YSnJldVJCdmFzckVjdlQxc0xWJVRhJEcxMGJUQm5rbVgvfCx2RVtgUF1gRm1SYj8vZnlhbUg9TDw6Z3hlUkV6XSo/azwiPWoqMmBbanZqTlFge208X20yZls+ZXlCLFMrMjV7ajB2eHln''@;'; put 'put ''eVVid3liaHg7ODRqa3NOc29ZaC5VYF5sUH1AMVZZVXRVZHFERDtJIk5NfjtsWitub2I8USJWRm03P1suS0VsWzhgbnVMPHhbb0tGWjJkJF03bXtMWCs7YDpUWnI3Sn41Rl0sViFCRU0zUVs4cipgZ35lIyYrLl10PGQ3IyVoa289NG16dWJyRlZWaHpHd21wK0FrdTxIdnJzeVNKTzg5KjlMaFBY''@;'; put 'put ''WEZiZ3VRXXJDJDNsaiRxNXlxKXV7MWUqdHNYYk5bWUx1amciTSEkOzhBMW4jZCxdZDNpVFspIT1leXhnK1JAbFdVNi5fNiI2bV5oUTEvSms9LEQ5ejIwMSpTX3h6Xng7YS5GZ09tb2Zgdz4pZExdcit7Kyw1VUw8a3VlJSlvMEYuNm1gYiQxTDspOkd1fiZ6LjErI1UqcH5KKjpRYWJlSXklanI2''@;'; put 'put ''WDZVTSQ/LE9oY2E7Qz9ARCp9I25wZF5kYlcubXxuMkl0Okd0b3NmW3h4VzdsPEVybz5II2Z1OVE5VjtjOHBpbjlfYlZyZk1lcC5bLyFDY1psSyooZSF0RlZIM2ZYWTZPP2lzdHE1ZCUyN0k/Kzc7USpsd0EsLGZbZUlwa3UiYSx5XzxtOE1gZXVJSnlWYkVdVmJeSDlNbC85KEovTkc1fCYwPWl5''@;'; put 'put ''VzMyfmN1JnZCPDVGOG09QT9jN0pASUhfMykiOSsuajwmTXFJNEsqLDg2OSRvMzZdI0lKJWh8Um50RD80SjBxRzBJfkMiRTwmaXdXZVcxRyoxdk5tMUVrZG1TKjQzRzkpT3phQzpyNmkkTThafU8jZUBIYmUzRlkvfn1vV0chQj8+YFR4Ky9uWzY2N0tFb15dU3MhTXY+ZWRRK0pARTM8enNqb35L''@;'; put 'put ''eCUvIlA3NltJYWJufmpDajUiZjc2WUQyLGgxOVlLX3JeMHN+STVoIyNIVTp9Q3g0PG4+PnBsOC8uO1E2L3tDUV5VRl5VSWNXUXJxJVZVZkd6P0l9cGw4Wy51amYzPWJkO2BxfUsqY1R9PzlHZzN2WE1POEdnSltfdlhnUC5ULjMxUlheTm0zP1VMM3BreFhXZyMvbjlFTGx7KFBxK1dpQ0MhciVf''@;'; put 'put ''NytjWT9gJEhIYDErNi9tRXwzdkxFSkhFKE91Z2ByMDM0Nnd9eXBTO1Z6Oyx+P2VAWkwrKEU7eVdMKzxrK21aIXlMSG5CT0JGMzs+OztlIWJGV2VmMGJEeXkqcnZmVSl4SmJURTk3aypZJS9pIk5Vajh7WHFMM240dmlTUlFYXiU8Yjt3MXNKQ08jcXM1cH52dUZPU0YoSHUwZm03SX5wLnc3MXVQ''@;'; put 'put ''dEZENzhUfVNFd2g9V2FqLG8xS0dgW2NYJVg+O29qNT5EbzVuU1ljYyZUYXVeTnh1S0MxNiZLLmVIdCUlZVs7VnJbJkcrZy4kPDRtX2BCMUtaeU5MPVVLUGs5KVhPS2o0MC4jP3FKQjFSL2osWHc1QyF5d2pgNjJAdXhwdyM3SDE8TXB1NHVzeF5WWWlaaGE9JjtkPkZ5Tmk0eHV3e1dtL0dtWFp1''@;'; put 'put ''IVteKGxeSnUpL2UpL25VbT8pPlchWCNdeCl3NG88YUUpeVVGP2k9UChOUGtBMm8sdVk6WlYlVys7PTxvOl8oP3w9TTYhI2AxMCtzIT1NS054I1ZkXlp5MSkqPG93b2ZEOj9DPG5qbjkydWJ6N1FkdiNkPFQqZTYvOCtPRVtwVFp+LG5nREI4MWI8S1YjdjkyIUFFQTBZT31EeHZXP1ZuQmtFXlRv''@;'; put 'put ''MFZDWSVxVXgyfi80XSg/ISNrO2lMNkxJeGBXT0tjPGM6S1VxK01qdD1NNkp1biwzdGdDMlp7LDlIIWNSUD0xSEZEbF5QJV5GI2IhLmlDMzt5fUZdMjVGQUFYTG9pPEc1TG9GUFh1dUFrOlVaWltoYU1VUXpSQUp7W3pLWGlad0lVdlo+SCoiQGdLa34oQi5GYFtibGNdOkpWZ3x8aTIiYTMsXXRK''@;'; put 'put ''Ymd2Klc2am8lLz4hMFBtWVJDVWxVTS5RN1gpRCNlSENIOjd2cWwrdDVZMjMuKiE/eHFDV1lVK1lWKz1pXVtdQzJNTSE0ZXx5cWpCSzRDUTVXamM8b2gveHMvRVg5SHtENS9mXyMxWUQ+PHF5WE1xLDVCLDJXK2p9M0plKiMrUlFGUGIpenZDKztrNy8jKzAzLyMrYjlqfU9CQ01WOz9eb1t5TXdZ''@;'; put 'put ''Png4eEJwNX0hcXl0KS9tYykvbWMpLDQ9PDRDTUouVGlUb1pOXlpwX3BPOzw/OEV0IShKO3x4XkNAR3cjcCZLPkJZL1V5QztkakQiMV5OaXt3RWZQVCUpVWYqd3owYFhYUkRXSSspd2AhRmBEKzhNYCY7PzZbZ0BqLDtJfU9nU2JoLi9ENldldDNaMlpraz8zUFJqWl9AeCpQWCk0ayZXMmw5IyYs''@;'; put 'put ''WzxTaGh6dmNbTENgZCMid0ciV0lFS1VsSkY3Tk1vXUx2IUJXfUxqcTwpaVJ1VURGRF1nLl1xYlRRdXxkKkdFS0NYZypyPDIiPEE0YzxUUlhbRyVCaTk8MllXektKQTJsTXs2U3sofkF5fWFeV11aKWs0Z0A3SChPdnYocE82UmsqTXlmdl9QSileOjxZcDtlfW13eTlKTD1wNDQ4QXx2dShGSS5G''@;'; put 'put ''O1cmbCg8RTdoPiNnUT8jJW1WeT0hfDhOZ3giOWZ0WXFLRUtYNWtKT3Ele34+MkJvO0ZaWSpJcnx7KzVJMmdAXkhBSFkqO181USQ6bmVgWzZGbTQ+U341Z3U0eTo9WjRDO31lWFcrcGtXPFRgNDhWeSRHVkVwUHlDXXJ5T3pQfC5JWElRQUI+VTF4M1FYdGJufFYzezt+YzNhb1JhWDt1P19GPSpn''@;'; put 'put ''O3U0LyR4UDc0XzpvSz1mYXNoZzh6Wkx4V1ltMzQzcnBWbU5bZTExXmdPPzg6R0Jwd294eHJwWzhgTEBDbEQwV1hiSV1FcDtuZWFhWHdDNWllJH10eSpzN1lYNT1RIzxyXnVfNy8qOltlM2NELztbPF1FXnBKb0FEVUM+MD9DQUhdanBJRG0jNVRxUiNlditlWSkvPDlKQUY7eiVESHhtbn1yUVdB''@;'; put 'put ''bzI5Tl5DYSFKU246Rz9UMEN9NTNYYWpMKykoK1J9dXgwSVhaa15EbyZfX0Ntb3t9cFMqbEJvWnxHPXFoKSxIbUdGTSp0Nl04RlYlQHUlcCUmfnJEPl13cnA7SnEmQUQqS11xdGxlbU05NFtgVjZEInZwcCVIY3VFclM1aTN7QlUqK1hYfW9KT3U+aHgrdTJIfiQ+aS87MSZRVUNCYStKOSNiNitp''@;'; put 'put ''IiptQXloIy5MRl5aX0JNekpzPjl4X1g3ZTlgNn1FVmlKIShVTUZeWikqO3J6S3lAPEgmaTspNSFLKSYwPSMjWm5CRE0lU0tFWUwiNFlYTElNenMvfEc+dE4wM3pBaTU6di96cD5hWEQidmtDW2U/RXVZInJVOlhiVCFMezVmImY9Zi51fmdMYGMpbzpvOWZoSyE9VXN6djNycH58dyE9XXUyY31F''@;'; put 'put ''S2xwKjk4KlREcjolYilYQkAqZm51dlkjL358LyR0ay5Fa2I7flZ2djQ8eEpoTDRKRE9TaGJBJGl6ZWY8dzgvYSpsVUc2dXZdW2dAI2IlITo9NDV8byU4QG1hRkRLK1Z9dy5zMzVSYWhTKDxUUDxkcVU8SUthaFNlOypKMC49WCwpe2A6NiozKmEmXTNEZ00kNmcpP3hvdlRhbyRQOS5lOV0wIUB2''@;'; put 'put ''TClsXn5KUGpMZkZEem1oIUNXIW0lYn1iJTViNDche0Y6fC4qN3g5NUtIPVg+cixxKVthVkFZT0E6PWBOWT8uSXg7c10lZl9YTDVePzZyREYxfCVPXXt8L1hXeD13TG1SQEM+aXVVOzVXTTt7RVhPR1BSYDRmRWs2dmZZQHpSeDFBVylIeWRTPiVZS0x5VEEqWXlpRVh4Z1FzVllXfCQrQzIjUCl5''@;'; put 'put ''bkp4bnMrQ0RAVElybzAmNypVWmlPMEVQWUBDcVgqUzkuYXVaTyh1YnVfQUpzZlIxTEheanY8UVo5QHlpdUtwQC4+Z0RfO0xIJUV2PWI4ZSlyWUB+QHlZQldHIU83Vks7OUo/dVV3PFVRcm1OZytZK1ZkZSQrYHpXcS87R3s+KkU1WWxgYDAvY0l4UitFNHc7L18uM1d4Qm82RVhnfExDKVledmRy''@;'; put 'put ''Qjl6TF9CYTldQCpqRkY2T0pdaGRkPm1Icmx6MkM6Y2R0Wi9aLmtye1smeVghdyVwIW84aURSd0MxOkBmWlI5cjpKU318OU1XS1V1M0x7eyNwIz94YnghKUNkNjkrRWdIe3xEM1sxYmhaVT9HaU92U0VvOlMwfUlmQDYxZV9vailOQVN7KGNQXV40b08mXUQyOnlsTGopIkpxSm9sajNuOyE0bWQu''@;'; put 'put ''TEleS2U3TiRiTjY7ZTRiJlg6TSZYSVE/eUs1dylgeT15cC9yK3csL25oejNxTG8iL3N3PkxRRndOcHZxMk5gYFhCWWsmRlVIQz5KIU1jN2M8SCw9b3k1bmw3LD5MK3EoIkd6TTN6c1FWYiYhX21oa3J5QUA4NGphY2N1THxzelc3ZyNNX2tAY1RHTnFySmJmckFoaGduO3xHRkYpcWthXSRKLmNQ''@;'; put 'put ''O0wyI3Ipe2BbR0NoNT1EWng6NmM/ZSI7c1BlQygpMSZ7NEJvPmB5O05mc3RkZF0sJGlMXywmQl9wdVI9MD5neFglQzptTyxdeiE1WFJ1Y3RkOVhaSTJyL0doTz9CZSwieHI5Kl9ZOSR6S2syaEBZKiFLRnNHKWJCflhnLGRBfn41TklvSXR+c1YlK3M6M21wND9kdkRFbDpZdyVPQ3VuXTJnRUVt''@;'; put 'put ''JEYkQUk7QTcqbyI3SmEpLndZYkc+I2liRH19N2duIUcieTNCVHl4LjQhVldkS0tfTklDOjBgeVVsMzZgUHpCbSxyK3VGOltkL1QzWFhpbz9jV1hBNUFjSX01Yz9CRSRoK0pGdyFPdjRxaEJOWDhWOzNeNypDeCE7S0IwSGVkUVh0KVJyUzAwJGlMfWwmKDReaGt5LmR3QS9yKko8dzB7X2lzSTd5''@;'; put 'put ''a0JaMyF+fX1WYzxYKmQzajtVdkcvVTM8K3gsMTAra3ttSzpSNFk/NUZZVkU9SiZbJjVHQSJkM2tXV2BAMkZDVTQmNzxeXnhWKG9AMlBeRll3NEA4RT0oOi9deGAqTDptK2J0JS8yZXRHcXReeiw2OUFHO1ROaHo7SncwRDhEZmZ7YE05bnwrOHtnIjgvTSVkT0kjSnE1OjcyVWR2NktEcihfVSNz''@;'; put 'put ''JUxBbz5uMFFAcXArKS5JdFlAWzc0U3hyWjd8RiNOTjRnN09BdkBbJkQuS1ppe1FeW294UzBYak5+WUMldG9DOjRoYEwqdz5WK24uKzQ8YCVleSE5cGk5SU15dD5zdHBMemE1MTwvbyg7OE86dks8Ikd6aDllbz0xZno4bSQrV0I4TUFhalcsfDQja3REa3BjLz5JIk5PcXEiL2dxezZZaEwlUV1n''@;'; put 'put ''e29BPm81d3FFWDNGcT5kbCFMLnFZRGtLVyRBfiwxaiI/ekE8PDJ8KGN+LykxQj5TeXYrMn4wO1luWEtYUnJUNy55ImN6bTlaSl8+WkdZT305NnwvRVJLfCw4YEwzfEprSH4qelVVTWd2blszaDBbNGd7cWY9eXJafSNzTiZtbyx0SH5nayhSbix0X3tHQmhfZ0w+NyZNcXduJkNoaEAkZl1lQ3wx''@;'; put 'put ''OS45cj8oVXE+dUUudl1NS3dRJFE6JjtIcVpJQ0R6bX5AdSkyU2E4UEc4fjpiZkx3OHJpRzlmRVRoQ0xDa1RoaGhhenEoZztJPl9GcnV4I2xASm5xd3tLVkQ5Y2hPTmtgcixYVSY2VyhyNHpHKXBVcUU3L1haPyhsXnZ1RTxBTTFJNU1jciF0YHQobjkrdDJnTVN0UX53SjN8OGNrRmZQJVJhazlF''@;'; put 'put ''czM/dFFSWXpebUkjZnY1fjghdUVoRS87VURVc0cxX3k1Nn4+cnAjRy5PKEgpNHt5dEhJT1hANChAMmpILnc9Y29YNGchIV9DVSUlZD95THQlW14heXRdbWpMPUF9USFIWGJjPGI2YF9GI25meT1AQ1BfKU1QRF9ySks9cSZyM3QsSF4qeDo0b3ZLVyQpMl1KRj8yMkZbdGtnWigzdHZQbD1TOGc0''@;'; put 'put ''QX19UkJMNlBqUTF7QGJyOGcyTXByUSR1Rl17V1h3S2w2JXR8UyluaXZWRk81IUJ0UzVJMGE0Z2B5cCh6PzR3V0tCO3lXNkJqLFdSUnJwLDNPTEEvJGdEQ3V5dGNleSs8aCJ4YDV8SjZaY0t+ITFkJUdmNykyeGNoX2JpNWJmaV08VHRmZ0ZudzIkSSYpdGpxbWswU2MlXzlnalYsVVNmZDk4NilS''@;'; put 'put ''Qjc2VV0scCkzKEYsJHRrQmdOYVMkRGpXI1hqfVUpWWJJTWYzOlhlIytAaEcsc2tiNyVGNypmO3c2TGYhMF4zQ2wzfW9zTGVdMkVgbkRedXxwN2ouUWVaOSklMTtoTUpzcHteUDhdKDgpJWhESG1YPWB6PTxLZ3o/SC9yc1E2bSpRd0JjbHlxXjJXPFJqUyldKEY9PyxNRUl5KTQ4P3ldSSNDWkxj''@;'; put 'put ''WFNFKCYlSEtgcFpAV1t2a3N4cDg5ZEJMc1dnZG0wM0t5XztieVU7YHQ7NDFJXnJ+O2RuSFJ1cUZAJVlObWs9fXpYPlBbVnE0MyE6VGM4S2Usb3gmVUdkUz4pTHkxIl4kVXh9KWRxeHRCNWU9TDFwbTJzQmZIVHkpRFUhbntzcypVNTlpJHtKT2N5ISNPP0JMPC5vKTRiS2RkfWRiVFJGTjNeZCk8''@;'; put 'put ''L2B0WmIlQ1VeRzw6MCwpRlJYa2Q8UWJ8Nk45T0B1MDJKK1RwVmJoSW9VV21ZQD9DMFtFeFgpe0U3VEMuZTZZZyokc3Jba119UDs+W1R+XyZ7Ukh2SlgoJFtRb0lDK3F2N0RYS1UpQWkwKERIPUJoP0M8cEpQcCssUUllWSp5dWN0SlZ1PFRtNEJRfnhBKTIxSD40SSQpN0U8ZDZwcTJ9VnhnZ2hH''@;'; put 'put ''aTo+a2JLaXk3Jn1odlYvKFc8RU5DP1s0LitDYUxKPHtQOllwdV4hfihNaHhFVVJQdGl7YElgZEJHbDFVT1lAIWBaIiE8PGErOXhfP2BIeHo0S2JmKDwrPHVbO2pvOi82eWo+e15vJVEkPi5bRTN7PTYrSmheIWIxOUQ1dDIrVWg3TH0zNTIycDRpXkh7Z21jcEdDb0RXdzc5MD1PR0VRRXRsKSUi''@;'; put 'put ''NjUpQjd1L1g3cSZ0byN0LlRYMXA/V21QZjx8T0YiT2MjIU09OWBJKylGXy5zPmYmPyhLc0E1aV47SyJyPWVVSkVWfUgoYVYwbyMjT0liMjZJQ1JJVzNOKXVwZ25IflB5SSY7Ki55I2xqJVtAWGI+bmN7PE5qPy8jWUZhLzFeZy5sSj4kZEt5bUJPKU1Ze2hYSTtzWCg2QSlxZ3A9WyY9ITBDJExu''@;'; put 'put ''UClbZCVTandmNUYyITB5anJmdTpHeVZOQzJfZ1hUUiV0P2c8N1hacGwzQl9MTD49SXtoNHdOPHRobzQ9I01XOSNpQCxGV35NRkBZY0JOZndzLnRpMkRrYlolZG9bZnFEaEMjXSg9OmwhdStreCxfWnlnOUxvOHBjXTdYbT8yOnlkRlY4KmUhIjhaZShIZW0rKlREaUZVRU8lV1ZAUXY5aD9JZEZ8''@;'; put 'put ''QkgvQmlXLlhgV0paaTRnfDlKRURCVFU0azB0filFXSJpWyNLdld9V0pAUEs8aT95TXFSeDRlJHl7KFRZKGVFNWdIS0c6UXlMUyN4e2YraFUyWS4mdHUwUl1zRFEvVWBnWkw0OnRNTCtnajojXSg4YyZsUzBuU3NveFdielooe2swcmkrPyxgTSwuViRNfSUpIW9iWGcubEhJSUxbVmNdOWdnY0Uv''@;'; put 'put ''O3JEcnRAZkEleDIyOnBXL1d0WCJ0M3d3JjosXkIzdHF7U1AvO2pEU3tjTzcjeGZVPF9nXVcoeTApaGVZZGducmdMYHhFSSVCbUVrMitFVTIzW0RJQnc+YEozL19rYixQL3hgMDlCUlB6e1AhdVVXbCxGQiUrSnU+az5RS1ovbkp0LGAhPFJqODlgZlYzI3orXV9aSW5uKzReZEUyVVY2LF86fU1S''@;'; put 'put ''eXViaDRsNWxkMyZ8X2lgfWgsW3Y1Yk9KLjtwO1ZEMW1ZSj1CQUg/MyJOY0UlX3F8Im1DeGtbTEc9aWZIQkNifFkkVGZISWd+MF4+M2pMaEtVZ0tuaENbPWtDXip9PzU9ayhSX0hiIm84eDE0Ukk4ZVl2aUhLI3QyS2pzcUA6aSN+PE8kYEAobWM/MTZfWDFLX0NFS08jVHAuPW42a15qOUA6Rzlf''@;'; put 'put ''RyFodSEiaToqIy91MmB+eUVRXWRRVV5zcVR1SzVCVDlRKyU2UXI0LG5YYjBpZllhanp9M3F0aVJwM3ZYalVgPmtlJEZkOzY7cHV2VmIjUTlyR1ZOW2Y8X04+S3h7W1gkXT82QSZVTSlxVE9gcXtCYnFeMi5ybHU5aSJ8aSs5R1ZfWHo/WGsmNmdWOyp+ckJ1TS5lQ15+QGhfITJRRTdWMlRVUUA9''@;'; put 'put ''YDhwP3ppUWssZTkmKkZjUU9ncG8oZTkyY1YxOHRQRVhDNEFHSWBIVTUmb2AxUkA2SipMMzxDcVgpQiopIldRYDEmZkd0dmpZYDZAIn1RL0JFPExEQGVTeiNZNXRlaU9WXz96MUl3fSxeW1UjUi93QUMuImFabGd+ai84OX14MnwoIyhbW11OSlZFOVt8US9CRTxsW3A0b2x3alEjXlVFeiI5ZiFy''@;'; put 'put ''SSlgRl1fdEtNQV48QjdPPF9sPTpYLlheMXh1UTdyWitONGwyKUBjaTU9Mm8/VzteajZkIXJQXW0wKEs4e019L1EuYT89Ozl3Ymk1W1NxZEh1QEVyb2A4NVBbM1k3MiEuIUt0ZCZSNmJEfHJhS0dKST1QPz4oVVV7PGlJT186V3U4dERJeXN0d0RGOnFXc3s5M0Zbbi4mTix8LH08eDM8SD9NPkM8''@;'; put 'put ''eyhvL2ldJG5Ndkg3WTRqQ0lvV0hScjRRcDdfQERmMFtmWkgmcUo7KyZ1WWdjaWNYKzRBd3B5dHFUW2QmIX1CRDkuSHhfODV4aHZeZDZ5eX5TQz1fNkAhW3JIOTVoej0xaTtiUGtFQ29HcTh9ZkwkV0E+NFM6RzxKZ1Q+ay9xRit3JkBMZWNdJjcuNHpLcFtXIUVBbEwzeFh0Uk5fPXRUXVQmaW96''@;'; put 'put ''fHo8Z3hyfCQrdDEySHUlNF0/en5RJGxbdld3aEwlUU9NJmhjWT44WkU3KldYaGVuWEhEb1VscSZwXVRFW0o7dTJRKT4kISVaYjtLcE1taFFyS3hkeWcrPmw6QHFOMyxUU2svNWlJUS5hPGczKDRUaStSblFEJEhARiVkb1gpW3NJU1loXlcrdXgoeTtLYTd9Jj9XO2BjUSlST1IiTm5Fa2FFWGAs''@;'; put 'put ''eHdCSC5rWGQ1IVJtaDloV1YldCo8U1pNNk5iSDxgKi9zJDovITFCIUAxVlZBT2ledyQmNkEwIXBjZHVqQTglTGxgKHpET3BOfmJpPGIuVmJscFFJTUgsZ05sOUNQL1kzMVBuSlUsJSVPVWFLRE8+S3VwLj07TWdAO3NYYmJQeEZhayVyQktWOFNEckAuVT1NOG1MOXljVUY7ZUZ5YVdzdU0pXzxf''@;'; put 'put ''Nzc6aHswO3ZLazZsK0VKOkxjS0R4X1luMlNua0VNTF8+RFR6cXNScnpVVV9HPGk7MW43ZD5QPlZfUHk8VSN9NzR7VlVOZlJfK3wyWWtSSyVNLmohWjEhM0EuSUd5Jjo4OWVPcXZNNGF5OTlDXVkkT1kzcUx3VVVFKHU0bFU3STo/ZD1Yfm9vRT80Lk4lUTB7eEJtUU9EUitUNU4saTN9JkZ3YEok''@;'; put 'put ''Izw3blVVcztgVyNuSnd4amZtKDh2el9JXURRXThEPio2NFZ+SHY5eFZDcXJvRktqYkZWSCFrQkdoJmpzbkI6Lk9jKkh1R1UuVXF9bSk2NHVsQk1GbFpmaFMqKTxmcVZEW3BsbTNFRFZJe11yY2A3KldXVFt6STptTEw2UXN9NjF6PGphQlRwJDtZMCNRXyNrNEpXI1JfcHlGbUUmfFZUUkRzK2lt''@;'; put 'put ''SH1RXVBDMnBFXl0hcVtQaigwcFRLZlU4T30mbWIwelpbUm0vdVEzeW8hTXFVTyRgS2x2QlRjYmFSd0dkZGBKa0NbSnFyXmtUSU9ebzxwRFMxeE1HK2dpaTVUN0F7WVtTdlhFdHUiaVo+JFpVKVFpZSgianBjR2ldVEdZYjIoSkRHY3JIdUVybilMSVFiKUBNNW5DMXlDeCFxL0gsZGAxZDNJVHZt''@;'; put 'put ''Ljtvaj5SSj9zUEB2bWwwWS4hPmt8cWRiX0YkcDkuYnIrOi9tJVFCUjVxVjE2dkAjKm1GXmBXNis0VFQyPGV9bVR6bk9KOF1qYjo3L0VtLGc4WGdtV2AjWlpRMEAxJGA9bnowLE46S1lFVkYxLE5WRzZaRVFbcndtTCswUWRuIyNVN2d2d3tNUkA8M3Z0WWtkTXN6MU92SVBLQEpJWXdOXkIhOj1l''@;'; put 'put ''SGxEYV47Iy98RHZrV1UhQn1YUTVOVklKOGBZXXJhR2tyYm9BPEdyTWt0bGdqMmxMN1ZVeHw/JWJ5RT0oTk5teygsX0FqYll9RiosJUB+dG9vWD82YDY2STJxPHI+K0d4TTJzfXREW2BQLEJxIUt2QVR+PGVJdjEwRldfPixNUmpwdmdFRUUrQCslP1czfWZGPW9Ga0QuNnA5aVgmelUzZzt7KGZr''@;'; put 'put ''QEtJLG4qMVJ+UUd6KTI7X086cG1lay5pKUJLI3F0WnZNNGZUI1twWlkiLmZdQHNVYkttPDZWNVh5MjxbZjJ3PWg0dCUme2ViTSNnfjtwWSRJMnA1X0o5LmBgYCs5dnYqTntnb0pRTk9yL1BsWissTiVWQy45azkjI0tQPFQyWVQvSHtfKWc/JXwyfkRYYityNFo6cXtIb28pZz8lM0dEWj1YYiQk''@;'; put 'put ''WnNYL3trWkwzL0UjbV8oNVomLHJjMX5rdSwsQHRiVXU1WzFTTXZpeWovNEchZXJVTUg5Uyt9UGU+RnopMldHSGYkeSJeZUorcUJWJkphL0UsdkdXTWdkYE1LIS8mcEdgNm16TiwhPHcwelZUTiNrQ15CMTZfbUddayYqIzxRXi5qJl1GV1hlZmZoXTZoYzl5WmUpS3tqZkJDS0tvJG9hZz1jSUJZ''@;'; put 'put ''WmhtPixoVmEjVXttcEBFKVd5XUN4RTVTe2MiYDhtPmszdXk0KUIjZ2E8ZWYqWlVVODhLLElydEJ0SEAvQGcmUCh9TnBwIXV1fk1nVj1qSHQ1W3s0ZHFNYGQ8Yi9tYGM6fEVIL3cmSykhayZLPykrTGNrfX5McTFRMntuaWIkVTtaSV5Eek1aPjRqLFcmVV9oVEtzL2Q3LCw6YFEkXig6V1BGfUZ5''@;'; put 'put ''PHZdS2V4TFBpWj5xR21pPTZ1WDxgYTBUfnY7Rm9vO3tqfns2WWtGQC9gIW1kLDRqXXslUyt2djAzRihIJFssJGZfQnZNfGlWaUd9Xih3JjtvIUZ9bzhPeHFQXSI0U1psN0k1Nj5PI1QpQm5NcmFiTzpOM2VKdHosYnMyTnNvO0E9MnV0bEBrcXBQZGEmaU0+VStIUFouRUB0QDhDaUN+ekRwPW5U''@;'; put 'put ''LF41VWdATHNodnJobzd2d0U9X2t1aVI8eUIpIztldHtxTFlPdF9KazROdiRaM1ZCUXsyTi5hLzE8dzNHXSxaN30hYDk3VURKVU5JaT05di5OUjJbUEZxQHkqVnFzc1dgUX0vKTtLZDojWThAViM0XUtrMTE8b2xGV2A0VXkhN0tTXUNeT0I/YCtzOFZJYixJMTBBTEZsay4hZ3F3ekMoaiRMRkxp''@;'; put 'put ''YDxoOVZKKjl3NGkpIz5VYHwkWk9TdFRqPHR7ZnpIPEgrO3tmQk9SQU8rMmJ3NW1aQHdbK1ZmalFzK1k+bitPTSkvKC43UXNfWVBfOFZCLz1rUV9wSWg1NlY3V25PWCo4V2g1T35dTmlYNyVGSkxtdERoWzFaWEVbSX5sUTJrKXA9Ti9NT3dxekJVUmFTZWZEdV5eZzk4b2tXcil8OE8vWSo4P3BM''@;'; put 'put ''QHQwaWM0PjZsU2l9ZVBpeFFWbj9qeTNLKnVAXkQmTVdRKVM5cUNFam1ecE9Lfkx4NC9CLD44d0ZocSJnWnhiaEJXO1E3OFFzcnZ4NlY+cDRjVl8/Y3FDNDNQZHRaS2dsdVd1RGF3UjB4NDVXZE0qKURSamclLmFHNUJ5VjNuVzg9XXVwdGNxdmdFNnU3UCFVZngoS29wZmw4JWRebWU5bShxMEpl''@;'; put 'put ''fkRJb3tyajJeN3RycCFNMSVOPGJxMSVbbCJicDM2cDQ2UDxIViRrW0doaE9pMHJPaUs1Y0tpVXVeb18/dFM7UT9bK2d6O1UrZnRKQ0M1U0J4RyE8KmpwMz1yUCMleVdpUCokIn1GPW1STzgkZnRtPHB2XmdrO1U7JEVEZTJxbGVjbi5uTEpbSCloKlhNdl45ZnJiYTpGQjRXbit9OihiSFRfXTV1''@;'; put 'put ''KS4wOUV3PkJmbSFTZmhJdkRdUDtxTSk6KUJFKngrakpXaHUqSXd1YDAuLlspZU5oYzAhd1FGI3JVbmtgRnJYcmQuVTxCMjkqKF4sXjlNUnZ3MmBwblIxRGkxbUdTYXwpYFE9OEtianltWTdyZlBbVyhKLlg1Q1NeOC9+JGNrXXFWejArXkZQZSUqI0w/YHY7R3BwcStPM10yTXZmIUxqPTxfVitO''@;'; put 'put ''OD9rWldIJUt3SzZQcnRHUj1hSXg7ekRVZzZYNSxdNG9kKi9TSz5dRl4/eFRHd14zeG97cmUwfkdBKGZZVldyUWltNCptTl1+PjhQSkA/MXZsUWBuJWZacD1JIj1afTQ8Umx4cE8lOyZ4MiE9WF50K1NYWSwlenhzUlA/aS9ndl0mPjduZD9UK2UhZSIjdj4jMTspPDI0N3Y9XmJTc2wuaUo7dFBI''@;'; put 'put ''UXVLR1EmRltsUj0/aThEPzhjWFVVXXJMfT5sL1t5ZUQ5NSpoJWZDdlQ7RHQ+W3c3Q24mYlZJQVkzcWc/V2FUO3lhLzRVRXRoSUFmSkdePDh9TCF+YVlhdFU8MzMvbGJYIz8qa1s2YFNnOzUyRU0pUjZjZU1Oe1tOJDNgYE98TUVkaXN1VVVkJEFoY15wSCE1VWQ5KWRlaDBtcDM1b11eLGJQM11N''@;'; put 'put ''UXtFOCI1ZURkSjhBcTFZaC95O3l4L0tsPi4mV34+WEFAKzxFJnNFNyZzVl40ImM4TyhURlpoYSsjLFQoVGpCWTlDMiIqUWZ5NWhdVGZAKGxVdUVqc0FPXkp1NWArTHA9OHBNM11JO2tCbH14Plh2Rl1XYE94djRlYnJJKHB5Xm92ISV5fW9AUzZeWSJTTTVteyJjPyFsdzU7Qz5aOCpxRE1YM1F+''@;'; put 'put ''KkUycVYsU2s6ZDBdP2NBSVJKOSo/KC9wSSV5NT01T1k4enV1KCY4W2krdVdmWzRJeX1dJkFtbz4yPEEhflFwSltWKTc+NmBxZD0zXiMvaVZVYHRgNy9gPGA8czV+In4odkxhPW49LkVsP2l5b1EyTW9CNnZ1RCI8I0IwXjJ2L1NyVU8menY8c1pUXWs8WkFhIyNmTVtFJjo2OGMuMDFFfFloZyRK''@;'; put 'put ''ZT1qWlReYmZGaDxUIUJhRSg3LyU8NUg6TDs1Q2Q3Zls7IzFnPEtaWnZPWnpZVGBoNV5PdS9oLmFvQ0QxbXNMX3wmRkJKZStTUj1gUjNYXz42TG9GfHcvVmowPmFTI1dFdjQ2MzJKO1dDZkAxX0BFRHheS1ZqbWdZKD91REMkPCY8bGB0YFM4NThpKzEuYVVdb0dnLiwvd2wzPmRVdTV+dnUsZWE3''@;'; put 'put ''RVMpb1hCOGk7Vy5fT0V2UF05LF09UmxETGdYXyp5KnYwbUFpQjNFSXBVXXk4bjVFRnEmNUN7PnlTbnRELlR5cDhFbDUmdm1YK1lfSCF+MXdvK3J3XkRxeFU2M2pSWm0wMjVVLHYzYHUmWUNWXUlUZUx1JTdWIU1YY1dkWjQ4T1B6K1EhZHhBPiJOaGhMfGt0PVdpdXs0SClJKHRIXXsuM3lNd3ki''@;'; put 'put ''RmJoRzE8Rk5zK3liLDtTQmVnemI4dEgjI21mU1UzPikyLkdMRl49cFM+cXoxbVhndCUxc0ZMR3hxRztONiJ5OyxjTlp1bTdUazh7cjApW143K3YsKlpeM1YqYSlbb21kOH12dksybCp2WUN4WHFtaj44Yyo5UDRQO1R+XmlkZDJUYEZBTFdNJXxBVDMyfTlHTUp7M0JgTTlScHlAbzove2AsTXx3''@;'; put 'put ''cEoleFR4LEhbY2lUdEs9ZmVqZk9lZjVoPml1K2BiLF8vSzYhM0VQYUV6eWkvSVA6Pls1YnN5UV43ZnxEKjRnI0FJIjRRYHdjcyxeU3ZSMzhXaHNUTC5YXiFIKGRHKHRIbDxJaCRARmBHbHUsa1Q2LndKaHEpQCZPdFEmLD8hbVtaa3dyfD9qeVordl99bzgrWitfUk1qTlZGYGp5QzNkMUc0fXlJ''@;'; put 'put ''NjpAWV1iJlomKEdXLDxzSmpieWE8Z2ldSWgxZ2ldSX57WWI1andRX1p8YU5tQWUjNixKMEc6bUVbeXdWTV9gSk9vWjxILGNpaWxnWTlhdW43KVJpd0lYQ3B6OHcqeGRDSVEvJkdnJmQxXTBXL1pnZlhhIT10ISRtTn0weS9OI01RMUdnL3NSSWJRaS9APS5oRFpeOyNeR2lHTmRTPE5fam92Jior''@;'; put 'put ''OiRxK2xKV2E8TlVGSV5mTGw6bjFWKTspQ1AjNSgyUVhufVdtREptMzxBRm9hJnNDVnNvTmlaVTElTEtqWE1tI3kyd204UHg7dixLRS55NUMobVJRUWUkMTR0fnQraTVmJm0jbFNQe1c3SmtRUFBbV1ooXXRAKS43YFdxLldjJjo2a0s4JDVtSXpMc1IkcFFjYENDSFppRVRuSGU7XnMpaWBvL1JU''@;'; put 'put ''SyJCMm5XbmF8WnFnWkZKIkxOKD0yLkxGbixkSXt+SVZdPmBxTn5ERF1eW25FJDtsNFZOcT5XQF4vQ3Ngbn16Imxwbzhjdl9FQDVnNE4vcEFxOmJgeXdWbkNLdjohUE9tKyJrQE53IzJFSFgkZjF4LjpIJWJ4MHVteCZ7eWs4WSswK1JxazY+cUxtcHxIZTVUbTZ9M1JDRTcvM31VSyUrans8Zl93''@;'; put 'put ''W0h2WHZfTTRfVSJ3OC9jentePE1PPT9mPlBfdUB5aXdBLG06dndTPDxIeTVsJFE0OCtBcDdnZkdGcylxL1RCN18vTkxKUVhLdDs1bGl7fXZFT1B0PzgmWDt0dWpjUExtbysxbTlkU0NRXngvJFFLc3s9VThpWVE2QTBlSjhIc2dEcW9pblg9IzxkRzgsNU47LHlaZjE6ZUpgeGkhTnlzWE1hNzhT''@;'; put 'put ''OWFhZTtbZFN9YzpAKywwLEBzZmx4PCFFfSN2MCReakxTZCx6UXlSWGMoXSR4Yl5ieUFMLGQ5MFssN2w1aH5kUTZMZTZ1LDVxWjJxMTVjLmx6d1ZYMUZ7VW1WekZgRyVSd2V5c051fXY7d0pLVCwxcjI6JkU7X2RfRjYlbThhRF5aflVKKjosc2BKcSUldlJxOl03XUdrLnE9eF4pNXpPaD9hWCFt''@;'; put 'put ''MlN2UlBrdTJ0IllUIjs8d2FtdURGLiFgIVltVUdnfj4mblNSPjM8c2xwREpLfUZyT1ZpXUF2P2twUDx7P2NQNlNiejJ6Kj5bQj11VSJ4KT9vI1piVXpZK1dpQFAkPmlUXl1xZlN5VyRaLGVNV0RqL3lCJn5nUWpETTNLRn1eWnMkVkkhZztPUH15ImNqfllyaC4zKG1XOTlzMXhtYzM7S196cDRE''@;'; put 'put ''S35fSFVgP3R1dTI9TTpHM31YaypLSjwoXnoha0oqOyZLWGkpUmc+aHd7Q0FPPlBrUTRpWWltfU49JGRUKW50XngyW0okOXNMLF8yZz8/ZiFqIzIxWUZMOFZNUyl9UGhzQFBqMXo+dVJOe0NnKWxERDt+OlJQMFh1R3F1bnRydVBpPWhVcVVjb3VSTj5pP1c4Mjl1MHs/VzgyN3Uwe3VIaHBie21S''@;'; put 'put ''ZGM3VURqRk0sLCE1VSk6V319R3lIYzJdP3g8L1FTVS9ULm9TYS82ZTtuNjNnWE1yQF1udWdYcUZfU21QOXdIZ2hIeD5CVEtkc1R1JndlL2pyfCY5KTI4STM5VH55eTBQQGVLQkhCPldFT3VPTkBmTTF6QSsmT3REaX18Mn0hZGROPXVqYTZMM2MuMygoTmw3eUFAfTRrX2pjYCJ2OixrK3tMIjwu''@;'; put 'put ''YSpHT1RoR0hgKE1hSiw4M3VnSl4qMXU2JGoyU0BJdV4wTTtKWXkmVVcpTTw2c3swSnNFKUw1TiVgOE80bmwraVB8TmhWPzdZTGZtMFVrQHJsKy9WeDx3O2g2ZUwxLHwzM3BackBXTldBT0J1dWpBXkQwdGQvS29td0AxcVQ1O1luMHcmc0Y8N2JSNk1+STJYYjQjfGBUKz04RTgmOjQrWGNXXUkw''@;'; put 'put ''LFtUIj5MKkRJWC80bTRQekRPTUVQRCoodyE8a1NoW3lQclQrQWVGdz1VbG48aSo7ZS8qckg7fD5xOSlmb21ndUs4JFhRX0V+OkVFVEt4aXRYNzFudyp9JHNxdjBvX0ZlKGRPTX1QdS9JWFFUKXI3MntOT2BVO1dIJmw5I2hjSjVsSUw9JD94bXM8OVhUTj8vMXZPRjwldkNLZUg7WCM0Jns4Zktt''@;'; put 'put ''YloqMHA1cWU8V1A3O28rUlNkYmAyPXZZclg3QHFnQjhZRnpIJlM/aTA7UHBaQ19acHdfNGBbPDEqQ0ZqPzJRV28sN2RRU2dbY1toZnFMXjtvfTRFL1YlYSttQSxdZUIhV0VHMHh5OmtmcUpzbH1DY19ld3IkWX1xQFJfVlReYj1iYDJTQG1GNGVHPFBQUVl2OS9Gezh5S3tSKXdlJFROV25MTDA4''@;'; put 'put ''TkR5alZIZ3kodDQ/MixUUGV6YnwyajNlaXtBP190fVosLEZALlR4KW50OVR7VCxya0Y4NkNYNSMoKXckLGwvey5SL2dfO2sqW0w/ZVN3fTg8OixNOnFxb3VXTWBYMEVzJW0sWEF1QFt2V3suPTx9NUZqYnY8e2Vue3w6bDN5WWEhUjY+b2hQRihmOHpuaTNPNj5pL3B5cmZ3MD5sZzs2bG0kNUlz''@;'; put 'put ''KnhoJWQlWmtLVHxWXVteVTtqekAxKkwqZz5ZKU1vUzVKOW46WSY1X3ZWKlkpMjl2VnFWR0khREYueDwlK2BLSFUrcmNDQ1siOHpBMFBySWhqSXRWNHVMNz5tPHQhRGpqNTVMYD05WnFMbGk8alBqXjcxJllJZzhSSUUreHNyYF9HfTUjWC9beGtyWDVac1lRc3BfTUFLfWgjciZJYG41Mk5MbX5a''@;'; put 'put ''LF9aJF5beyx9cFJJIjJuOklYNEVxSHBmWFk+Y0tKcS8vNCU2Wjd6bjIyQix0NTpHJU4wZnRbWn5XeURaM0dheUUhcmExe0NSQ1BlOipELClGKlJ1YltqSUtlSipPLzlfcWYjSUZLYVZtaSt9aWlVVWdLNmVkYTB5VENEQHh0MnNMKyh4cXEkPDxOZWV9KHUwfDNIWEd0WS49Wyh4SXVAYUhSY1Az''@;'; put 'put ''P0N9fUdoYnh4OXpGR1JjKT1MeVhHOmNAYDFybTchZjp8RzYuZ01KZjVNcGdlekJwM3B2NUkpTmkpWzh7ensoZVVCcT42W3NMMWJoeFlDe1prJmIlOXpicnNmflsjei5xI2xxcHNqfVQhLnkiRzwuIUwqdCRUbCtrWFpzV0tSej9vRzlSalhMSmt3STMmKSJmTGVASDdLNTdEQGFuX2J+bl9hc3Za''@;'; put 'put ''QmM+Rzw8NHdpUE4wZSE0XWwpXWZgXkg3Z3xgUDZFdH4sdkdNfX15RnxhJTRQdF1ZbmMjN0luKyh9NTRZVjApNzw8clRVP2JeRiF2NjIhK3R+cDc+a1JvTExDdXhFdktgV1pYPSxgaHpHN3NKZ3pqQz40UjR5PXN0QDx+NG41SD1yI1F3UndeZTJ0XnZrKyE5b0x9TlNAZk50ciVeQ3JuYVNaKmJs''@;'; put 'put ''cSlhY3dlYyFNQGs3bmIsKUZnSy9TL1pLdz9oXi9EZStsNjo8U3xaa3BPaUs5I1UpL3clSDpPeS42RlZbJHZiLEkxMEpxTXwxfFVTMSxbUCtWXkxDcE1OTlVJe1F6JUx+clRfMVk7L1V9fmYzajJZLiY+O0F+R10oTE5QJGRbM3dpPnR0OiJlKmZkTWw4e1tBTVg/SzZoTGw1PXlYRHpaYTBoMz81''@;'; put 'put ''XUk6NXpHNHskKyFMImR9WChCZHE9WE5TOU07dCZ5NG9rLCFsMT9aZGF3WzgmdVArI1k3anN9SERxeEBpcUUiXk82MCladlAwSGYxRyZYZ2lHQyhTbixiSXs6ODhlJm43Vmo7KXgmLkkhTXxQM0VGMz51PykkL1VKIUplZDVRaSk+KyRjW2N1alQ1Y1F5ZSVSJVA/MGRZM3ttSSNvWFdaciFlSCN4''@;'; put 'put ''e2klaG9Eb29FbWR2JC4yeTZAPVhaWHoqUlF4fCMjLikhUXx4PnBRND4hLlooYnc+TEI1SG44a0lZMVVJWFAuYHl4K3RaSWordjpVR3pxL3d0OyVGW0t4aWIrU2V6VF5rejt1PWJqRDZnZERxTEROO3Ryd0hFQiZgL3xmLnx9azkhUnUzcFIjYyp0ak9ZS002b3BYYEtaIUwxT19wWjxUJFJjQ14v''@;'; put 'put ''Rl5VdmtqUTdYRHovMzN8RChZV2kpUCtkMmRbSD9PWVUmRDBJfGt6Zk93Zj9IIyQuN3BoQms+YyZreFQsOlo/V01LJXdVeiFsOUBVdms1eHwmUzA3PltXJjNaOHFDSiVFQWBfaTI5UFZyfnx4bDI5cWZpPHwjVUpqJGBFU3N5O0BvP3heMCF6Nn5xS1cpdU5teiF6NlBWXXVhfD10fnF1U1tEWiZh''@;'; put 'put ''W1kqMGR0WHwwUSE2e1crUDdfY2lOVnchK2s8PURhSmtlM3A7VTM8d3I6L1g+M1VMbCovbjwlLnhuM24qbEJkZUlNfER4KmYxNUtiOllJVmZAK04qczxaS1klTXJsLlE9VTkjaFRSI2xLTjN0QkxhaGhjamZAWjJYXUouV0pZLFosN3BmPyM7XkhYans/JG1YMnF5JmRrLE1kfFolKzU+KzA1YmRY''@;'; put 'put ''JjVWNm06e2lKd0c6aG86WSIzRz1fP2ZNU01uTTNARE1gfVFUYGJkcmguPlZdY09WelJOUChnfTNrNCVENkUiWEhsQDQlLjdwPSpycyxgJCttUHhmTzZ+cChCLGtrYTh1dUJRRHk7V09Bej5MMT8/Q2A2SjYlK2J7fmBqUWVyMk1SOkR6P0k+QF17NClMLk17X29IW0dtQlVdP3xDO3l3VGVTSHVL''@;'; put 'put ''bncuMzMyR18oUzIyR2dmN3EvYn06UypgYXs9LEclIXNYflE3JkVhT1ldYDZ1P1BoeUVwJjBUOzd2Sl9oQCpFKWZGcmZpcEBpRiQzXU9uMnpOR3JyMzVxJm8jOSg1ODN9eTpNTGI7MVddPlt7LGEraF4uJGNeaFtxPCUuP3RnQGpwPGopXk96TiszdVtDWUVKKz8ub3R8XVlHWC5GRzdMUEo5bmJY''@;'; put 'put ''XTJ7VCpVQSxNfXVqSH50UU1gJUlsPEkudj04JDxVZGZWOGV1WnFXZTY0dEpwRzJMby40b3l+ZSQ0QFF6JGNVO3w2Oz90bWloeTM7fV1+SmsldmtUZFAoOVdRL1NSJUddV1R6eEZMRCUhYXRxdCVHcmtvJkBqbSlnN0ouUFk1e1ROOCRHOkBNamFlZ0tuXiQyVDxQal0sfXljIUAxVVZkclUyeGo7''@;'; put 'put ''PGZtTSlSI20zKFthJCUrbXBoPDQ6TWEkdEgxaVJ+L3N5Oy9kTGh1QSwvJXIqOVo9OTRKeW0rcGkkOCNRel49MDM9Y3w8Sih1azJ1ZE4mWG1Aait9Q2xxfjRKaEVyNnVjJmdPZ3psMjFMUi5AYkg9IkwrcXU8JW5EMDFzXSskL3MlI10mOCRkIlJLVVF9eVJUSy9YWFV4XVJGRVdlcEVhfilpKX12''@;'; put 'put ''ZlhoQzVBPDhGJTU/ZyNEe0d3UkEsRmlGeDR2eUV0R3dYTjtuLHJMLnlkWEAsOGkkJmZaUklKZFpyLzlmdCs/dkZbVXYzbTI+LjFYYjtzJnQ4a2Z6VEAqO2RbfXd7K2ZVaClsXjk+YXJnPUspOlpLSyZILnJjaCJWT1o7UDxTP2N5O1tLZiRCemEwfXZZZT5bXVRMVWYpaGZdSFA/cnoqTWA2P0lX''@;'; put 'put ''NGt9aiM/ZSxeUUI3OlIud2xNZiJWUXp0WnptWTQoXV5fRlFQcEV+bGJtKyNvL1dlI0s4MExzeU9iZmojOGlDS34lKHkzNmQycmxxfl9Rei9uMHs7c3o5IVl1ZU5nRi4rWW0rL2ZIYTVCO04pZDdXe3w2WjNsPGdmcXQmXSNJRFpKdWNyQU03aS9mIzp5P1JbQjJWPWVmTT1+WiMySkRtWChlIWdT''@;'; put 'put ''XzFEJj1xcEF7UTp9UjAiaEdCQDRNdG9hNFRSckJJRi5+P0FKa1lXUGRjSlcmO2g5SUxbaVkmNUk1Ump5R3JYRltLUF9iPjhsKiN+YmA+bD5XLHdWdyRbM1QxT0ZnTjsqMWc7Uy4xW1Y+W148fT5mR2MrJlQ2VmdWPls3VXosJVgzLCNFdmd0aiNWb2V1Xm9vSig9dDpjVjsubyZbYz5VTihsdnhL''@;'; put 'put ''fDl6amIkSS4xYE5YJnw8MzUzM1M+OTQuKEtLbD03M2pAfWgvZmIlUTUkL0JIMnYrOSE0RFNdZy4xJSluKlc0VWsoZmVTVjpJN3cyflphO2V5eGcjd1F2KzkoSmhlQDBscGEoLGxQYHNFYFZ3aVdkT1N8bX0/amF9ejJwIk57LFtoemJXVSNXdXR1NjxWQGpxTCpXfTpXXXZHKVJURkJiWF0maXpv''@;'; put 'put ''NWRtZSErcUgueXxnQEpqentabSRBbyFoJVpVeDx9LjVsKDR3YU1gS1FsdllFMzBIbjgmS0tsamNwViNaJVtkKisqRFAoXyEvbDU8ZkQlfW1hTTF3cDkvNS88Ikl7eXNLTFdGTEpMYG9ncjE9Q29IME9oVEliVmYvW2c3SnczMFlxNHpvYmJneFtWVy4hcklZU3c0MFR7T09mTmZOUnY/ZnxoPzxD''@;'; put 'put ''bXVSSjVaOjdaQnRuMEc2Y0lMQjBqM1ZLPEduKCYmeSkqM1Y1WFM9MyF0RUshaXJIRzAkWTwxTmIjTytsNS9ZWGlBO1I2THoqIjF0ZkI0RUBbOksxdWkjNHo0MGApRjZfOGJiUysoUFhuUit5TWMuVy9yVTk3dyNnclAjWjlHSyJCXXI4UHRZcVlfaXo2LG00I3paMTxVUDchX3c7KzxpNEs/Y3kz''@;'; put 'put ''bWVOaDh0L1J3bD93eXEwO2BnUytlNlorU2A4dls/aS9LeGR4VnptR2RaKntMNWRTSnVOJEsiU2hzRT5tNmVWTi99Iks5b3JWUlolZFBYeGk3N0d5e2o3MEgkT2hMa3ErdWJSVF1YODphVkQ5LE5MKSwxfkBIbGkpPVY2KTosQ11CYElMO14xZkF1Q3hmYV1IInJfd0RiN3BFMSMjInVqRExLSCso''@;'; put 'put ''WnFWckJiLl15flskWSlaV0grMUcrUTpfbWQ2Vmg6QjtNVlFzS0RKYmNHRz55STpecVJ4JVtPek96I3FteHMmVkhaPF9tMkJybzNYIi5UUCwpNGdtRz9gOCsrPDlaXz1eWkkqM3RmaiUvNmtqK1A9IXFZUVNIblM6MSRwZGR+cWNPWElPSS9yJSFnbFIhPShAS0x3UFQ/bE1kVTtkcCYuVWRAaSs0''@;'; put 'put ''X1ZQXmJibUZ3MzAxJFs3YC8kSGFHeEZrYUdVSSJgSUtXVTRiLFt2JixrNilQQlNGQCVCaChwPFhVeEREV1VIU2BTP31gTmEkXnQvW1Y8eC9tYGdlSVlxQmBIbyU6VE9OLE99elNkS302RyVjcTQyWFhkJS9FQSMoUk5DIntFMVA3bkZgKkJVOXZzVUFvIltoZyE5dHRML2EvST1pY0VRQUFBQUFB''@;'; put 'put ''QWdBQUFeVTQsPndLOjVITE1MdDJJKTJgMXRqTHtpdlVmKGFEWSxiIjRkLyl5Tm4yKHpHb2hYZEgrbSJJMX5ya1dKYkkzOlNARGpgWTNDNHNfSzdbO0wkem8wWzAxJkBoKTJ+KFh6dSFbQzN6SHRFLHAqYl5XS1NMWTYqbmBlKnoyd0poc0JGdzQ2SSFUIT59S0U0VGVoMyZsQy4xPEwmXnc0ejdo''@;'; put 'put ''WTVFLHlYMTx8bXB9REM4cDB7LzlraXJpN0E8QDhAMV4lNlZ7MXY2e15oM0l8I2gwe0YhUmorYDgkaSZiVT9AL0NidmA4I1NZVCVeQWtdNWBdWlE1SzhUYHtpWC8xMiVMbCQyakpddEpgcz5FbEAjWkY2ZW5mRSxMWGdDeGZmKW9rUSUrd1UhJlNFVVg8bU17ZjheLFo0aFFIVFRrMGdkQiV2OnN3''@;'; put 'put ''fUtRK2s3akRDJjlscChFZytGRWZAUURjWGk5akR5emlUL3R9d1d0NW1vJnp5IyYyJU5UIiZyJTl2I1c6dFNleFt8Ok1jWkxjbzBvNHdoUTo3IUFGZypMWGs2bEM0U1lDRldWUlgjSzslTGNVbyFxdE9rZE1kRkNdJF1FNnM1W01aU2Y1MVBKWm0/NSowdFI5PFtGMSpAPERybTVVcWY1cXN0NSxk''@;'; put 'put ''XXJoYz9CaGxrTmpYe3oxPH0pZUI2IX4vYXd9dl55XUpsbn5IMnNaNU5QUjtrZipmNm9TVDx5Mnt7RW9gPCZbJEU0SlA/VzYuTFtER058RjM9QDkvMHQqQyV6KmIpTjBFOylJeT1qaV9KJEJ1MEtpdihEYnA1N2Q9PEJEUVd5N2FVJmcqZUh4IlhSI1lDWmkjbEIyMjVFI3xKKlMlOzcsMXxKLCw6''@;'; put 'put ''c1B4Imp+RUVrOlI8MDtzMG9xcVl4XTBqZ2hOdWIhUipOSGlAMXprMyVvQkJLQmVLP2IsMlRXbjF1Y2BCIX4lRihjT11lXmd6OCM2cWUxUEREKlckaFZQeXQ3fDB9Q2kvK3U6X0F+eik8Jms3JiNPVCpTNTpAZjA2N29ZNSkzRnFdSVAuQjszXl1uXUFzNTt0MHBMUHlmZSVnIT02SSwpYXloWnlT''@;'; put 'put ''dX5xOTl4YCY7VHJTWVo7NVlSfTJnVURUNS9mU3oqeFJrOi9ybmhSODxYIUA8JWxwVHhyS3RZVz9YclssZH1lfjUyQEVVYVg5fmBYa31SR1lXcDQzTWUvQXkoXyZpQ0VOLnExLGtwckVqNjM5fmVuVHE5VGBXaW98MTtqIl5ZSX5fazAyazcoMk1pSldpbU1eQ0YwS3JuREBYKiFrdmNtaGE7R3xz''@;'; put 'put ''eCpwa28sdmF4XiNbNGNyRkxWU1dPNDdjPmJjYjJfJndXUDpGI2MibTdYZHpLOWVLLzd1UCRHRU5QWEA6UUlwKFdVbEI4ZyE6U2F0K2JQezQ4bUdqV0NsQjgwZUBJRzx1M0h4OTBPXzZePDpNOisqUTEwVl9RQEpnezdKWDdmeDV+VENbTEYlOkl3KGdPZU8kMShKSUV+YWN0Zig0NzpNSFdMNUBi''@;'; put 'put ''MFtkKl5qXyxmbTJSRF1ZLClYXzVJUUF4NEBOe35DJjZJKENsIzR5aTZaUiEiITxMRDYoN1g5Zj1rS0Y7dS9kezI9OWAiJSo5WGpeanoxbi9uLHM9fCVlNjY7KmgwXSsrd3VNI2t0PUwkRU5KS1pZNmtUL25sL3chQW9wfVs4JEx6cmE2ZS9IVXRyYCZIdy9FSixRP3khS2BIezdbe2hVX0FBRDt1''@;'; put 'put ''NWFbTEU1OCw0RCZFT05gX1EmN3ciLmQ6PiphYWVmdlUoNWwlKDFrKntScixCK1pXdkNsL0I6I3RScFV+TU9KKyFoaTReZWAmIW1RaD0/SFR0RGF0RVNsIXVGOmt4aTVyYldRR0pGZDc7LGk5TGdIazp6Vnl8e1BSIXhLUjphd1l7K1hKP01EOGE8XiN9XkY6UiF9MltoMGlIP3Nmdj0rSD9WdVoo''@;'; put 'put ''SUpWSj9CI0osKU97YVBvWE9TTyliKkpNYUM/N3Z0T09AZmJMfSl0c3dCMS9HdVVzSWV8fHZPWkYoYH55YDo/MFBhSD5ZJnA8XVpFSXFyaFtzNXhWPDB9aHsqW0FPWTJsd1d0X2Q5M15UVHgxIzRNeipxa3FkSWVEaXBpXn03OCFlalZSYFZoeVBZUTtaZkF3O1tHQ3VkTypraC4vVl1GPHFDQjVw''@;'; put 'put ''a0ooaD1eSis1VyNpRj8vJSQ+QlAuYXpNe0xIXnwse3t8UHVzTS9qJjZKellvLHwsd30kQjFhSXk8XUg1YXo0aDElWUdlK3pganc4JjdARXBPditEbCojNSw9ZzE8YD1NdiwoL1BSRWg8IUJFUT03QHh3S2w/Mlk0cE4jZTU7bXp2eSRBdWVRMV1xL1lvYCo6VjRuKVteUlolOU5yJjRYWHBwVjcp''@;'; put 'put ''RSE4PG5obF8iSFJwVCRTUmBHS1BbSmxnKn1tKFdYLiEpJlhULjd2bVJFTGhgR1g1alIyY3ZJQ215blJMR3k/I2NmTUVtVH0ucztjI3Bdc0Yjd2F3fCQiWihLdCM0RCpKKE49XndzJVZHNnI2WnBVZD9TTThdPmhHV0tsV2B4cV89WC8+Pm1nVCEmYHYlPX5CfF1mKkw7I1dMREZ6PypxWlkrJk17''@;'; put 'put ''WVomLmxfWFB6Y0MpSWJrekxSVkdbRCxuWW9jXiM/KzB6PFsjWHpuUVhDRikob1BVTUlpRj07Sk4sOm56cXM9fHc1RUhMLlcycCRJS21lKmk5TlljRV5yIXlgKTdOWWNuPUVpKWFMLH1DUE45Lm1qQ31HQyM1WHB2fm07Zks6LzIsQ1peIkFWTWE1Zkdna1UseUxGKFBBQUBHIlpbJWw1TE88V1lX''@;'; put 'put ''eGciVnl4SCZ9KiI/cDNaQWk3fGlpYXFfWSVIUSNUIncrfE8rU3JWNllTVFVFNU9VMT0jIzs+dkV3Qk8hZEtvZD1wVTdgPXgjSj4zbWFXJSxILF88OzNVRjZDW1FaITlKOXQ1PFFgIzdbdTZzXiZNLjRDe3gzSjZXeWkjVzJVYVEiR2Jiaj9aUFQoPH5QW35FT0AibDNTQy84RX5sSG0zI20hV1Mi''@;'; put 'put ''JGRYdUUqeCs1NWtRMkBJfSYlNU5EeG5tUUVEVntzU2VyfFU7JiFXTEduPWhtbXpFU0VyRnZueXYrc0tbQFk0YShKJGJyPyVnX0NXKTBfW0ZWLkxPZypddmVYUkE4PzYxRnR2UHd3Pz1QO1VxTypUVF18PGQyTltiOSRfLE5Xa2dnUTBuNiJFOW4hSiJYSkc+T0dzc2Y+K3N6SF51MisyTH1wZ1NP''@;'; put 'put ''LllAfj5GeUZwQ1Y6I3spV10lXTwoeys1Wl8yTiMvQW9wYH0hbD55Wjc4Pz1QOXh9YyRtQTYocTNscllqKyZPQyVYTXwqRnFScWYhfXdTajt9I1lMSDYlSCFuRllJdyxFNkc1RmBiejsvIWkhTXRpQGYvdjl7Pm9FJCtLNVl6R29BK2lEPy8wWXxHRzJgXmZ7ZFhfNDpTbGV1Q29wbThNSTtJMEIu''@;'; put 'put ''ckQ4S35lNH1oMUx+VXxkSCVoTmB7VV8pVjNyODFsfG9nOmU8VzJvYUIkYUtzJjh0O1g9JUQ7Sy5bZS4kZCZnWmtfRmhPaTtLcEwscCN+cnw/Ql8jciU+dTEiNE1CclVgPndkTUlaIlp2aVM+WEIhPD1zU2k8RncmbCQyRlBJWV9ZTDwmR2B5LkcxPSExIjQoQ25rOnVAaT4/cVo2TkJtX0BtKXdZ''@;'; put 'put ''MDhuO0IqaTg7OHI8fHklRFFAPXRwJDN1M0VUWzhgX15Ze3ladS9uM2d7TCZmenhzOW9wKWo5PmluXnYzN3Y/R2dhLHl7PiZyLDNUXVFRVjd6Yj4hNGNtYHI7b0I/JVlgRUFralgwe2gsbXkqUDwqOWNxfU8vXUE3fUVRZmwzTnFvPHtYZWF4ZUYvSSRSSFUkaz94SmBwMzEkWDk5XyQqfFZvNCw+''@;'; put 'put ''JEtIPFhQT2M/RXh9b1R4MUozVzVoOC9me05RL3h0OEpQISMhOV0+UTszPlQjOzA+fUdzSzM0SC9lbC5PVjRxZmAjeEZuJWBeMXhdWilzTUJqJCNMWU94RXxuOTluJSg5entFPCYlYnNURiEuKi9mL0h6WWFjL2goMD9Rdk1RLCVsKGM4MVJFaHpyISxidE89VHl2SE4wI0lpWTQlMnc6VTQhMy9V''@;'; put 'put ''LFdMdCtNQEd9SCt9WnFMazUxPDNrTDZDa3x9V3ZJejptLyg2cHFjY1FwXmVuaXpqdSRjRUJGP3A0Y29fKGF+fWdWcm5XNUs3ITlwKGo/KGdbW2JJLiIwRXUzQ3s/I35GYkt4fVk5MmZGeXRjRT98ZChhJEVNMXJdXkZXJmV5K3FpaH17aXwpdD5qY0pUfTl9fVdZcn1pMDZHaCp8dlJJeCxiIl9G''@;'; put 'put ''fS5TS01fLHcsQ3I6MURwKjxMJlVsbC94PDY3Ry9dUCxvQ3l7ZUJHPm8+KWdWKHZoQWNLRHA4Q1RPP30wKnIwXm02OzFKM0lEJVI0QFdacmNDeih4eT4ubjI3cmBaZ00pTVpgci82ejpkWzM6Oj5PSjRUM0UlXkNrQV1rbCZfMT8xYzFWXmV3Tkh9eUtISXYvRmtUKlcoTykmJHFeUl5ZUnZPY2wl''@;'; put 'put ''ZUUoMmY7Nn5GaEVtcTNfNVZIcmxobCR3cH5AKzQsRGdZbE9JJVEpSDhyclR2OUkyZm1pYSt8aT9kXyx0SSVqJWo/IURxNzosel9dMzxVMkBbPXJRQUdNTzMhJT1tbCNCRkNOR1YwfkFAOX0qSzxGQTRVMmFvMzwlZVB0YUVVfEE8d2dzZngzQkduOyRfRWVUMStSTTE1SmtDbCREO0E3MiYwZT5P''@;'; put 'put ''WyFwailsO30ldjdXKlphWEA+Y1t+bmlzbk8qT1MzcWNXJD8jdmlGMXZYTHAmcHRtfWEsI0orNDBIOnhlVSllZll1cntqbHo4eiR8bFFqRSI8UDl8O2xlb0FwYiNPXihleCV5RWVUaFdtbFQpXTU1RnM+UjAqJi8xampHeFIzYm1jbmJVRFlYRm8pNkt9Z1VYcFNEOl1aQzw5JV4lLH0hWFQwIVNV''@;'; put 'put ''fFlPMk1SJXJFRz9TOUovS311QnRdNWtsfls9Q3lHI2dGNm9CQTohdmBreDs1cDheMWRRSWhUR1U9TFpqLm0kVGFfP09bUkVkPGp4OEk3JXhZKkF5SDdBeWh+MkJJMiNxcFdRMnBQOjdPdHNMUzVmUT42Ri5CQ3k8N3I+SlElLmVfYisib25KRERGPXV3YTdGVWEyTjNgNThAMmZKaWw7bCpnb1Vx''@;'; put 'put ''I3QrW1VlQD48aHFwOWtMQSxDTTRuVmdmJltMXVouVk9pbUFDTyI0dlNXOCxwKz04R217XXpQWUJqRS8uIXIiMWgpIVh4ezVLZzBifU86Z3J0MU5lSW8wX1pkLCZ3ajZ+Zz1ZJXwlMXFLKyFPS3JHTGshP150QUVkZztfcDt1fCJmdVgsZEAhJGFiRH5MUTR+bnp6SDBgNnshX1FeOGNWbUoqUFQp''@;'; put 'put ''Xz9ZfHVAWCs2MFU/azVYSmFZdlE6Rlgzc19bcG82blViKnA3dVE0UWQ9VXQibUprInhWbU03K1IwNVJIUFN9am0ufF1FQ1pQPjUvfDhJPWZFNj1sQk5hPmJFX2E2WihZTVtyPCRwMVJeRV9rZTZWcmkxKzVwLHRSJnwlTTVNJjFbbkRDcCYkP0xvfC8mMTFTPUhIRyRtMz5acWVENUt4RCNLUzxt''@;'; put 'put ''PWJyQngiVzw1fC9odEcvIiZARWhPen5gNEREa1p2V2Z6Xl5TPWReK3tJRURSST09ckR7LGhdeS57eWEjRV9qPTpDfmdIQT9uZz9XcFN2bntAbDx9dEx7YjFmSGs0T119VlJ8N2oway5mKmlCbzRfMjdqeXJMY18uNXQ5blNyVTQxK0l9eFZLdzVGaE0kcDl9VlRAaVtoRkZ3YV1AM1BKLlpka1U2''@;'; put 'put ''NDR0P3RYbGtqUjg/bypkQlA2S0g4JkNwbmQoSExqa2o2b05HWFljNm0lbF9oOTlzVSIrY0dEOkBGMXUwKGIxaFZ7OEM4WzlWWk9hRWRiYXMuQil2Z0wkYS86PjNeVCNINDB6fGUvMjRreThmIylJT1ExeGw+MyQ0OUpnXiw1ITJAKW1oZnBMK2dhO21HJU5yXSN3Ikd6YUpkOypASnY4NTdYJHZi''@;'; put 'put ''JklnNlhPZ1Urd2JLO1IzSWxdaURkISQlUEU0KklneFluSGdPQCFQaT18ekJQJHdAR3xmYDhrfVghYjIqZnZsdzdJdDtbQSFrSCFzNmQ/dUl0R0RESGZdc1RtMHFvNnZxO0o5WG13RlE6NHRRb3V7WitMVjZDLFNONU9pUXdiKzNvI2NwNWVbJmclNkwqNkxvNHZtZnMoKyFFcDo9ITVHeU57KSlh''@;'; put 'put ''XVZRdkhAZ3BNYl1NdXl5WEJxZHxuPXR7T04+emdnZiMiVzZmaS5qR1Ihe1skJDBVM2RqS19zem5ifkdSRyZbUksvdHwqQmtDNkZ8KlUhQyN4Syg/U0NbNkklSiVdInh0WmlDV2BHISE4SU5SdnZUfEJELzBrZmAqQGFJKTVxL0xMQF54cDFYVV9CZFppN2ZvNDY3eCJdNltHZ2NAREVaM2ZDP3tT''@;'; put 'put ''JFFENTNaPDVmbmZEZy4jSkcybClNbkBePiN1OSlGXmJjXXsidytLaSQ1X2VddF81LGB+elpAO2FvSjVxZ15AMCVMN3lnemdjLFtKcitnOW9PVEJYaUZ6XTRwMU42ekwjWndkPj83PCRCS2kvflBiNz91Lls4bnFPPiw8SzlCLCkxPkdmcW07Li87cmJLfSZ2bnVGO25AWnIvMkwqT1p4Xmp6dlRJ''@;'; put 'put ''KnFxRERnTHIiTkslKTJgQjJlVGEkQE9LXnVqXXcse044bnIoQHsvVDRdUTpdbzx5bXR2UXZsOUhTNz9FaFcpMisucTY9XVpiO0R6XWZEN0pHW3g0aD8xN0QwLkNBJHEuVCppeyhtL2cyQnRmbkoyVU08fn1XWkQoK2oyPnhhWS9RdXNlOWMialUyKGZePyV1T2M4fDIsbStrVTxRaEpWS11PVmVE''@;'; put 'put ''N3V7OUhCTUM7JnxnYSxaaFlBYXhod0Q4dFpOZWwsa01sLzciZ1hDU1JfdDR5XUxkfWxzej9Jd2gvOkk5KXtUbFlzIUYpLFE7SmxVUUpKYk53fSEya2kuLzB5IiVrMytydWBIOzJ3OjpsQ31eWUgsfDJzNGJ5PVpgcyRbRHNeVklBaXR9bUE1OjVUYkhTOEY4ZiY8Rm19V0RrMipDamtZVVhzWUZ4''@;'; put 'put ''RlVQVywyRi5kVlBpY1lSNXtZLktuIiZqUSZBMylrYHcra0RCV3tLM3IyRSg6QmhYcWlgSj56IkthRVVIMj8ieSxMUmB5Zns/OltZc1lOW0A3dkFkeDBMWCJ1SChfSkNieSEwYFp4SjpgUUtqfVErZ3V4RXRSei86STV1YE9JOG85VUVDLFJAcWRbIktyWUg9c0J1akN9IkFtTCxwPkh+ViJsUWhi''@;'; put 'put ''UH00ISN8MTY9cVB0Uz97Mj0lWE1QbilYVShjT1NJXTZvaH1GLE1sSl0qPyM9LHRbd0pjb2AxdX01LGFbcFhXakRvbXJGSlE2MW5kPzpfQDpeMmRpWyg+K2pwcXwvMzlebGlkVCxZJEkkP0tgV28ufEY+PXhLVGdZVjRncUclfHAhYG9YVnkhIkF7IzJleX5kTXQofWxjVlo2SiMlQzUmbXMyOH1A''@;'; put 'put ''NDdCSl1SaUx2PCRmS2phMFg+OH0yZVRsXTpJKTB1VlFnPDBKd1dJSHFxI0ojfj9PaWY0WTIweGhPc0U9OTVrNFRldzcpNjVXQCMjJVtxL2RXTUloQ0tmYWlPVzYuRVhkNnEydGpZZ2E3U2NLYyxPWlNXZEJAKSw4Zi5MKDxGMTBrKjZ4LFRHJD82N2J9Q0wmfVF3ei88I1o6QG1TQix8UV1aRnlf''@;'; put 'put ''Yz9PPWRmNj5bU0swb0FBTkUiPnAxJncyfSJsKm0oMGFzWkVXaDZdP3JSdCU0T04hW3xxKWxCTWVKNC4rLCZNPDt3RCR4IkUqTy81KzxRbGFGQWRtMD9ZUl10KDF3WXh3fC53YntvfDxbPnROUVh3IzY/QiJJXSZLOjZre1JSQUxYIVooaUhufVBhTmwyVyNYQG4reEo4QypNRU8+NGc3YildNntm''@;'; put 'put ''NHdLfDhAYDQkeSwkQzchW1ojOG4iOVd0VlBEUzxOU1NqMCNxdU9NIUxJQFZgeUhyWyRMS3pYUUx+VjUyJkwzNi83fVAqR1BeRTpsJX5nLi4jRS9IYzprYFswQHdSUkI0Tmw5MW9UPntMR1hMQEk3eGluVDtjWyMiM1Q+SnhmRmxIaVNKL2BbXkw5IldiQEprTVZNODZ4c2A2MSFZWm1fP352PGsj''@;'; put 'put ''dn1WRmJvQTB1a0pgUWVsQ1N4L1MsXW9iVFFkVWYqMDJbPWZXUFlXZTRgTlp0OFJLSFgoajcxdj5QRzJodW9teTxwQ0kzK3ptTD1DP09LTWhVSjF3KEt8cVB5eV98MVFqR09aMmEqcX1bbF90RTBka0w1N15XOWRmWTROe1Z2cEg2blY+Jl1AbjIjKS9NWmtaLlgrPjQmSD5YLENfQFVOSG9SW2Vd''@;'; put 'put ''aCNrNzJBZDAkZjY9KDl+XS5MYHshSDgjPHtvalpQW1c5PDsuNihXb3I+dV9KaHRzRjxWdGZValhtZEVyWSR3Ll9rMXx4d0J4bDpSR1ZXXlhkWSpsNWNhfnoudnBPcnxPK3tOciJYKkxVO24jWkQ3Ly9uZnNHRlJoVmBzfWhSM0dGekJKIUxhK0ZpQXVBPnAuPEc7YyRJM2xXUHZsfipAI1AqeiQy''@;'; put 'put ''LnkyU240TXhZZER3MSRANkRCektLQTIpYXtIM3daK2VqYjBmUkAkKTNdalUmc2JCa3JjZ3I2fTYqb0UxP0EjN2JTLkd0P3MxTFlqP3opL1pBc31gOypkR19TP3IjJXFpcDk3YGpSYlBCQ0w1OmZDR2ttJGpKP2dVSTVkdm1RK246OEd9cWQqIyt6ZFJ3SzBtKWY3YikqMHh+VlYhZXtRLiFYeX55''@;'; put 'put ''WjImIWJxS2VrUURJeytQV0BbZT86JnkwRl4sJXo2T2FvbTgsYGV+fHJ3TlAlRnUvS3ZiMUo3R10xUjgjQTtZMHdoTFg9dmNLd2g9Y3NCPkVPKU5RTihfXk5wOktNRGFJN1JgK3c4P2M7R3dFKm9FN100d24xeFcxZWtmYCQ0NXc+IUFDZXVtX25NZHNHL19pUHdUZjg3KloyUG0ifjZhaHwpI2VM''@;'; put 'put ''dF1KWy8iXl1Qa3JXJGlubmtfQ3RrLz1EZF9HWyJbeGwzSXhLMTprZ0gjcDVAd1lnekU9SjBFPjxfRTZfLF8vajhmTlN8bUpoUVRsYlhHdkVIR09leWA+MEgvWjQ2NG9INjRpQEkveSwkR25uTU5IPFU6YTZjYVV6aSpJPksuKiFJfTRILz1Idz5aRiJ0JnU9U1BET24xOFBGPS9gNU9rVk07dlBH''@;'; put 'put ''KXdofmohX0hAc182MU98W0hMS3Z+RHYmMiJfImNRcXw5V0h9RH5WSGN5fDBbTlVRY3UyWyJZPkBKWXhCP2xGPi5wbllJJnp7fD9FIXh7QHhnbTZTMWAxYiI1Q0VxR2hhZCUoV2s1a1ZXdk5KbnpVcl83PTBYTlsxMmkiP2o/fipYY09LeVZ3JCh8JE1NW1FJZ0VTJHYwe2heQC5MQGFHRXVyOjky''@;'; put 'put ''KmY5PSlxdDhTJmN3TnV4MyJ7UXhhZkZgK1Y0IllMUDNpfFcuTk8pei5Qa3hORWtPUVM0VEtMN141Yzo7IWAvcUhkS2x3eTUiPlIxPkU1KG8rcXg1eUB2e3k2MUJQaE1BdWI2QD5yIVopYkl0R0UwelV2OVFKKVFLe3FWbGdiXjImISltQSFUVndISjBZfSF9QyQ+VTI3cFV3WGMrZEVVQ2tEZTlX''@;'; put 'put ''TD9AUj90bj4oWCQubEZOTyx7c2tlNSJrL0Y1bCR1JkduQjFqVHZxXzgyJUVfOmFESEsrPCE/VkN7algzQCE8YlhoVjhyZkF6fjd+QypfdnglbXg6Z0R6NSJmUXNCZWRpa15RLDNdTTBhNlRjR0Ulc1NrbTdIeEcvOVtVTX41clA1JHh1ZU1FRDw6KV1adjM6XndgaC9FMC9oN0FPbyRjNDVIeWlr''@;'; put 'put ''cTBheVoqQl9RUDlecXk4NytNVVlrQE0rQjFVfnhdV1FsWF5PenBUfCx0eXA2WlNjY0FTc1JQPyouOzI+cSJYcmxST0JJdUR8Tl9NLDhdLzNWVDVILzZuanssNzk5bENYMHZ3SU86R1FLUTspUls1XUZeSzBQVzh5NFZlbUZRPjF6dkplSm1nezpsOUJUPkV0QmZyfSh5QFBCJVlkbFUpYi9MOzNa''@;'; put 'put ''PUAudD0sNnRLMHZvfixLKmcxZE08X10/T14rQjN3QlAqWyQiQ3Q1cil3Y2dMaVpsQGxKSGtgL2ZgNCxJPyxlQSolejo3VEJPa29JVkIlcEpVcC53Ym9GOmF0WGZrUC47b3Q1Rzx5el0lIltGQz51dFpwV3ZMLFFBVismPnhLPVdGRHtJIj1EfGV9IlpDXSIwbl1dWyZCNSp+K1NQZW9Ed2gveG9t''@;'; put 'put ''Nnclb0w2O15vJiJ4WkQqZD5JSDRmaE5rXiJ8VHJuckppMCRWKHpaUTdpXndlRldKZzBba143bVA1VH11Nk5heW5YUyk2ZHM7VHokfmhNWWspbHVyaFErJTkhUTdjPzBnVClnfGQxQ3dzRnYiRGdHTEFLMT5JTG0xLikiP3FEa1NYOjZXMSE3Ti9jL15jIX17WjRVdDk5ZHc3RG5ON0glUSZBflJT''@;'; put 'put ''PltTdTlaSjFwUjV6RmJQO0B7e3lKVzhbamhKPjZ6fWYxbkFLJjx3JFZhRWosb2k8Z20wMD5KX3c6RygyX31LUEsofGMpdD9JJC9sbWYre3xFKjt4InVZdmAjb31hcTlUQl54YUVNfHFqKUdEMlReeSFZKk0sVVlXNXEhejxrSyJvL0Y4amdQRiEmd0A5eyUvYVA+c1tjSik7XjROTGA2PkhyWXB2''@;'; put 'put ''aUdsZytHO0V+KjtXeDE+MFQjVm5pKTt7THp2TCF5T2UkaigwI14qK3pBWn5RXzMrTE95NTledWxQdixvOk9ySW4/ZGw8aWNaelJfW1BOJUhkd0AqTUMyVE05fV1iT2ZPVVRALiYvbjdjbVYwelc7eX1aWnFuOCtkZXVMfjk3OD9ELiNRNF0/SU0xPDMpRl8qKDI5Z0VyJSwkZl1rYGE7SU1NIldf''@;'; put 'put ''YiNyb3JfKkpbS2FLRkp7SlFMPEJ5dUp7RipFPihgQ0V3KmdgcUpQR0pDY3J8LixfcD9zSCtdUCpmemZSMC4lIVU7PmMlRzV8aCx4NlQhcEpoV0smNGFqZ3JjW3hiL3Zwcz89fnphbDBIR0k8TmtQPUtPb0JeQntTbHd7PlsvSHZ2bnAkLk5qJixTb2dmaW8vWEY5b1pDS0xHbE9sWypvOXZtYnpx''@;'; put 'put ''cC5tLFRHM0trRk5ffGtDenVXZ2VfTDRiMUkxMSZ3c3BPV3A6KVlhaW8+QWd5RXc2Yl1BZTVdWWM4blQ4LnJ5Vm9FSVZbcDxJTGo1L115cldLTEBYMDdNUlJoP3s1MiV+elN9RXZESGRLIVEqWkd9Nj0vdTAqJSkiO1RPa101fm1JbH1hb2BXbl5jTTteV2pQZHhHYGEjQSshJTddfH0xYVlqYCFO''@;'; put 'put ''WXZ7M1EubSthP2Jkfl5kSF1ROnkifHNAPUh8KXFzKyFkYlg4fmNQfjhiNyhzU2FIYnNmYStsLD5+S0RHQj4xVTxGTnV4dz4sLDRLLHNyU2wvOTF1YE52N20wQTtBWnozX3BGenlRX1VCN31KWStFKW0+REBAdUFpb0NZanVAcXlHK11fNHhgNk49QkxhRlttREU8WEMjSmhlIy5aRy9VJFFMKyJy''@;'; put 'put ''RlE1T04/NTdSK3t+MkBCOU1fRWVeSTU6QiJQZiZiTml7STA+fU5jMDdLQiRNdnU3NnxUT0czRTJ+PWZFPkg3X154W04vbEYhVnA5S0RGPzxgKGtNS0QkZ3RYVmNOV1o1MVlRQzxRcjxPMSxPXTpGIm40cDhbYHE2ImpUOEkheEU0Z01xR1BXR1JzVU14O0kkRlFzaWokUDtZeWRkJX1Jezh2fWpM''@;'; put 'put ''d2xKSGc+bH16ZClgTHlhaFoyJE1waWw6NHNxTm5XLih0ME17OTlPb1E0cHR7UiUrPzpoRyVCXkVpZnxFMDovKihjRXVodyZWRTVMXXd4N3liKGhtTEJVOVRQTVFGY3g4cz49KlJsd1guYX03Y0xiN2dNITVRbW5zUGxoOjtCKyM7R354QTxqLmE1dUFjNjksTDl6eWJ2Jjd3dWIvLntGej9UOFd3''@;'; put 'put ''Tz1WQVBPVjpFVGpia0AhZT9JWGB1ISJvKUA2Ol0hT3I8Y1RZOD48Tyo1fXtRaT5LM1g+Sy4yKFNWTV0heik4cDwsOWEuUUkoZUw/Z0MoW2k9VUY7O1B3QkE+IT1hS1Zoen1nPDclbVk+eGxYTEY4Z3woV2U3T3RYIj9GSjdFNCMhQzludWZWckIvPWRhNWVCaXBQSk0sMGlFUjcxPTR3TE5eL2s6''@;'; put 'put ''XV1pbEhRcnUpaGgoUUJ4NUlTLm58fXt6diJKYmlaTSZkazpBI3hAS1ByYGs1Uko2U05LcixIXjtPd2ZLaEp+ViwkdV1ucTxtPnhJIktOPUUzPWlaNH0yMzU5YTA5bWV3Pj5VbmZjLE9SSTIwS1tXflpzRmdASDZrei4iajtdT1hYTGZYL1c5ZT9iR3AqJTgvUGI/Rlg2S2ohOzMxNVkjW1diamYw''@;'; put 'put ''KDBUY2YiQkBfbmthcWpkJH1XQnlkSzNSIy86VGlWRERmVzk+JUtbVkVZe25oL1Z6WHRUQD9daSIkUDl1M0BiNGskMF5KMlo5aGdlIi5jIkArL2ZMbzQufi4sRkZOMntiMmkqXXF2L2khZEVIP19fJWJJZ0A+USxedVI1IypecWRZfXFZLDouJjBWI014TzZ4RF5eKV81IU1mXXBrckBZUFRafT9w''@;'; put 'put ''U3x6JWpiPT1vMkJzJCpOZ0tZUWg2ODtYbWRuMSJqYihibGMoeExoQ0EvY3ZKX3lodEIqT3Y9fG0lamErSl0zL3NgY3pnYjpMOUd9RmFEfkBUKFBxTllpKGpfK3d0JmtLL0QiOTNdLnZSPV18ISRfeithNT96eltIUC9rV0dHe1ZrYGZ2QihUdmE1e25YKSh5R2A5eWt2RS42UltWZyFqbXZSI2Y1''@;'; put 'put ''PXY7bnA3SlRRPS8/TEo0VlpyZzlGbzMyNlk+VFgxd35pW0p6MkcrfWlJdylXbXVEWGZhJGZHWFElPS4qamlbdW1sakB1Jnw7Yjd4T1gsZ2JzSzxmZV5RUnRteldkOTFSZFY0QyRHbGJGc1UjTTBBSihLd2xnWkB+W1UwWC5ybWkqOnQpWVV3bFQyam1panBuKHtWa0Z4PVFlUTliWU1MeEF5PTxM''@;'; put 'put ''LE5DbEJWRUg4WCFoU2NTOnRnU3hJOSwzQm4uLkNJWnojI2JOLHVvdVBdV1hCaXlDW3VWZXU6eGdOWzEmWzh1P25sY35SNVIsNykjKGZ+Kk9ETnJofm93a20uX0s8O1VESFJIdX4razwjdkxsLzJucShgQyk1QCk/T3lSO2o9PkBsM3RlQS50bGAwIzohMl9QZERrRGI1TCo8SFBEcWc5JnI3eXRe''@;'; put 'put ''NFtGaVBxSV5mKFRxKmBvJFlsbzAmYn1TSHYvRkghV0JiUThFYnE9WzpLQlhSUHw5eEFKPk8iVixkZjgwSkNOTWlyTSQ1blQ0TFF5IkkqdyxSIWQkblJ1IjdmST0qMk1ZeiFZQ1RtX0ZiTDFRWnRpYWNiKlBvZUozZUoxPW9mRWdKMG1XQ05eIUpQMkpMY3R4WCZiJFRaJUpeVVk2cjIiLEpgJko9''@;'; put 'put ''elVWU0FfVVFxMVJza3RGbD59K3NuODJKbEU8SXtuLmB6LitsWmQ5Y2NaS2tqR2t7Y0BUP2xmOUdXQCFVRFFwVkxuV3UhPntLZkdSJSM9RTV+VSZZTHtxVEdnOTsvRTlacWVaT15UYzhrS2glTElQb3gyVCxUX2NkQmZlSXJ3YERyKXdfYmhvfks8blsoZlIydHVJN21ZQyVkJXZEKCFodlpnflFn''@;'; put 'put ''UD44ODF7TmE7JF8rViE8XWhKZ1B1WUd6SyU2QCE7Q2ZvQEdVJWJMVDY4TH0ka2dscUt2SF9lZDlhL3pHOGo3LCQuImlKfiE4Kmd3fjkmSXdMJGl9Rjw/YGpPfENTMHozb1N+WzA7KUJ7VlBXPkoycDl3JDAkYngka25McE43QEs4Nj5JZmZCI1khNk8kV0M4aUh7QExHQCo3YE4/fl5PfGFnW2NS''@;'; put 'put ''SHlZISJ0WTtKR09OYCRubzomVV4zfCgvZ19bbGU2WW1YVWtwIUJSLlVifFY0c2pBRTYybkBvPzw3eXh2KCkxRzpaaSo4T2hWWWxVS1JHYXlRSE9QNyNlSkF0LD52K3wuRV12aFA6LHxFVG9AY0dzIjsoNW57KDdxVDJyM19RLD0/VkJWZmhCMy5deCM6RD8jQWlzOkhPa3h1W1RjUSsuYGxmelcx''@;'; put 'put ''QUZnezdvVFh8SkRAVG9kWDdbKUUkbDMlcDZsdyJFVVY/fnhVMmBEOFQjazNLKEtaUklTdHwmRWw2anNrYTkwRlVwfGddbUU9LkdWZUtVIkEpWzNbezZxeWFuNz5JTmQ9ZUZla3pxS2t6T0tpdm1MSGpeOm5iZDx3YVt7biMzbTkze3Q9dldlQlhrVVdreWg8IU5Oan1mdiQkUzFfaURhTEx8U1Iy''@;'; put 'put ''Kn5MTiZ4Qn5FIlZVYmo5XmNwdjIzKkhPektLJFVyPWw7b2Y2ZEAxfD0xaWEhKn0wT1Bmc21AWmdFclFoPzVXNH1Yb0E9cCw4YFZRTWJXfkpwY2hgPldiJTZ1PWtsKUElKHNfTm5JPUtvMTdGfmFuKCood3R4fVdQV3FbYEZPTHReMWJNcE1HdEB1KjlNKjAzW0Byey9gJnwmS0lyNX51T3pGJiIz''@;'; put 'put ''YlRgLjBUUzNrcklMN2F8TXUsLHouYkZSMU4wUnlTM1UpUzV0Y3ByNi9HciJdcnBLfDFXRjpUPWFaNjJIZ21jISl3TD00PTNwaDs1WjM8Uno/Pmpbfl1xdkAkUS5gVksxelFsNzU9bCUscDl5Qyl6ciJ+Y1ZmRGlUaGMvYD9ELiI/WHRrRFpyPDddSTpNLHAqI1lMNFQ1YU9fNmYuZGp9SE91fF1O''@;'; put 'put ''QVB4XVBgd24yb3lnLmhWKTMyezQ/Y0xDNmNuO34uPnNpRTBxW0lqQEBfeXV6YnRReDdnTXxzOXRHR1lnZkNFRmRIUn0xNzt1SWI/SXRvSGdTN0EuTWc7QzFobiRSfC5CYC8vPmtVd0FTeUs7NzA6KShMPVZjZlk4Tm12UiN4OzVTZF9iYjV2MCphdG18c2E3WVZCNEdeLm0hP3BaKitBQlJtRWo2''@;'; put 'put ''eC8+cFh3YjhDdVJGJUleaEg6LyNXIlY9fCh3QzAsNHRyJDpHRyhyKjw8SSRDfUxOSWZTJWhldFIzUElYO0JRVXBiKmk+Vk9ELj1hc1EheiFuSkooJiVOUDlXb2gjSF00S2A3amlFam5OPGc5bj1bYE9KWUwhLFROKn5JNU13ey8zdWk5Rz10WD5aPTghLHR5UTw3OX4hd0ltaHJ6dyEyLzwpKGYz''@;'; put 'put ''S11eNEp7ZStXKEIrV2p0Z15YWip6eEtIVk02Vj42T15OU0xVPmdGWm9+TDtIYDVHQyNrXSVrXWNneHxWOHIqXWJ1Ty97IyZDe0prTXVMdlM0OCxmNkN0Ri42MWVUY2psaVh+ZW1qWD55L08vTjhyYDV3Y0hedzV0emp4PGtMV1JnRFV9M3UhNCFOVk1SRyNhJk16d0A/RXFQbU00W1lvUzNYNTUp''@;'; put 'put ''WXtbaWs7amFDPXIkND0rPWAleH1Sc01teHBPTWElNzJSJF5KNXxNRWUxRllvVlFBRiZCUDtUKCkpUm5BVGY0e3gvUnJLdWN9RHIkUG5Na3BPeWRuZ0E/W2xeNFVKOGFTOlhrJFk0b1YkbDs1ZGQoLFB6MjNIX04oJEIyfks5a2ZKTXU3VisybUhOMnYzb2JYJkhze0F2R0thNyNqdEYuZDd5SlZL''@;'; put 'put ''KEx7T2tCblF0TS45MSNKNGZPQUhXbj5ETVZqdjslIkdVOWtbWXh4I0V0QWp3b2ZqPFR0cVkrN0YpQDp5PV9wdk9JYFNpQy9wbEk2dXddQUgrbGJrbHB+NiRzVTsjbkZHV0ZvSTdiQX4+KGhMYlZAMmJ6OipLVz4wdU94bWlFPHJ+PW1zX3ZIdENafExqa1EsS2xrYV5GYi4xLnVGe0h+R0xJOEFH''@;'; put 'put ''QWp3e0MrQFQoSEtvPkRvbnh7SEpITmI0KXAhe2dfMjQsbiYjNjI5Szp6U0EkK2xaKjhIflNsdDAzfXpKPWRtMTlXezp1NTlqcDRKXjUofGEwK0tmRTJRRmY3ZVJCZj4yVX4vMUYjJkY1V0k3OU82bDMob05JT1AxRUBmL1BkM3EsfWNaeXwrUDlldTlgQUpsL097KFhPNC9mWUFLZVZhWWtjPENY''@;'; put 'put ''TVhnNltabDhaVFo+aHw6NXs1VDpLQGhrRTw6c1QwdXJRIWwpUW49NixEa149bzAoYnwpaUd+LncveU8+fF1eUGJPSiRWImo1VyRxdUJyRHx0REQ+SHI0e3NaW1g4LmFuPyN6KDhidiYqSDRBPilZOGA3WWd3K3ZPcDtuSWpGbl5nd2U8JWAsQVtlKGcmJCV1Ynt3aFJNd2BiYCFfV2FzXzVRflt2''@;'; put 'put ''T1FVQl9NbCg4fGRLJllfJn1bOSZ0QkhTV0xwdzxubXZnTE5rbiVLci5zOHNeVHgueTtQWmBOelV8cnJvTDY5I0kwJGZqanYuUzoxcW1tUzdwSXJgXnVNWWF8VChsOkNYQXQoQnQ/PjwxdVRXR1lXUW9QbCVnVW9VdGJ3b0NsaCxIc0VTeyMkRDQwekx0aW9OUlUhX3ZgRyNUWHJoWVY3XUo2THNN''@;'; put 'put ''UVlCezEyQHpJfUxDJXx0KTdESyFEdX5nfF5lKk4kTlElP3dTL1VPRFo3Tjw5WCNGY0lXak5qSVJKOEZgL3ZiTjFxJTZEdF96bE5iSXo1fm8vQnJhYDFIJXFlPmt1cXlrbjZRcUFTRFFaTnlGO3F7fFNwY3xAKyF4ImJ+a2hKTDE2UEdDQ3xpUCx8eTtQT0dgVURkfngjTjwvWTs+Z0NWXWJCR3Az''@;'; put 'put ''Tz9NanVrfFlGUUhteTVFUVUpLnEhJmxBJH5oQ0xIek8+TilyVnJ0dSp2Py5icn40TmRLZGV6ZCUoLixYb0ReWzRURTw1P1ReVS9YdWROIXtYK1hATzdDYDU4SUNSVnhlWUAxLnBRMTU+WT0vQlR9Qzh2OWI7RChUbiQiPSRMWnJjOT4rdn4/Yj1sJnReUXF5N05vdDN9biIuWTpXQXcmT19eNUJu''@;'; put 'put ''bW1hUj8jVE9VdjdiKltRbk4vZ0g7RX5eVkl8KzQ+WnR3YzV+Tz13RUdLVmtNeG17WVJgPl5laj1Ac0J1ZGFUZ25BSntXOFo3OT5AdWdEeSl3emtaOi8sLD5KOCgvIUslMzpsJTRAe1FVWDA3X1RjO28hNSMxOUxCaUJkJUQxJXpWeF1HTnNZeW8/TD5CUHRKfC84dzpfUkByR2UoSnB2IXAucl8y''@;'; put 'put ''emI3TnRoZGl6ckZrRXliclJlKS5hU0U6Sl1bVkA0XVA8MzFMeUcoaFBKPXk0cjt8OmZ9M3AkQX0jUVRQJD1SWGIwU1s4RlRPe2MmdHhBSmpOR3xzXXF2Z3dWU2dkbTZteXZQPXBhTm5tKm5qNHB5fCxsUm4/M1IjWSxtbFR2Wzh3QDBwZlVpRl9JPzllVyYkSEB0K3clQHIxUmQxV2IzSF5hPyQp''@;'; put 'put ''SSl1Y2F+LkIrITFxOFIiKGpmP1Bxa3tkb0J1V00uZi8hdTlnejhtc1M0ITV7d3lXQTJkPl1VMUtLSHpASSldVC9+aUd6VGMhJEl4VzQ5NnNxWiY4ZjJybjx1UCVVQCtENFBfaDdMXkhaajR4TXY2Vn4uYXwkU3pqSERrKDZfZDBFLi5Nb35hWFAqQGFASUooVChzMiNSWlElcnZvUStabktAczA/''@;'; put 'put ''YmI1MFV8c0BxLCUoMy96QEJDTUM6ZTNWLmhMSlB1RiFxc1ZIeT14QHU+bTdHUyhqbkVoWXh8ImY+fkM/Lk5UPlBZc35xV0E2YFdtVStaayVzYTVybEJ8aEAvZnxLLn1mbktHVio5Nk18I21iaEBNcC9NSCoiRnY+dkcqPVs0NFc+OHA3WWB3UDA9YnNPIy92KEVYLClPK3Vnbj47enkxK2RhM0pj''@;'; put 'put ''UGlgeGc6aF97OGsiPioxc2E8eEAjL2lRQmQ2KE9vcj5fP0N0O2M8NFMvVi5MRlJzSmtrSnFtOkJ7ViRpZE9gblg8Nk48Wn5rWlRrKyNLdFFTaHZWfkFma3g7X1A/T3g0SFBubn0/diZreWpOI3l3IjVYVkhucDdOSkluZDBvQSkpSFBTY1J2UnlRbkxOSFM4VXNEZWpeRD06SnNXY2hOUVUhJGhQ''@;'; put 'put ''VGFEKXtvZ1YpZFtJSWV6ZiMhQHZsZl9aQFo8YnAiZ1pgcDNwQUg2NGVmT1BrRlRFXUE/NF5CRy57K2o+WjZYZ0o4eEd2Wj1le1UwWFFQaU46QlBDP3Z1fER4ciRoZmQ5KVY6JVYhS1FtMitGcWJXOzE5Vm5aPHV4RVEpbWwuOyZ+PVZ5WiklMjdZMl19aixqMDdKeCZFSGZZS158OH0uN3xibEZb''@;'; put 'put ''Ql5JQi8qWj1RbjpSJVtrYjR5Z1AuUEguKGkvUCo1fXlVW2wldWNTZiVnKjVjSXA6aTEuPUVdRTw1ZWUwVElJP0Q/OEtddTxUVHA2Qn5EW31DR0ZZdi47JGk1eGVGRltAdnx6d1ZLWz4ldltaWX06bE5dTjckX204RC84WiF1UWojRlJ4PXNzLGNpcmBhR3JPXipqSUd8M2M4bU03bTFkUzFaKiFP''@;'; put 'put ''LF4udnRBa252dFo0PzR1YmJOIileamlqfVo/WkxpaXRvJD83TFtpXU1DM2E/ZSo3TnFwPSEoeC83bDw6bXJqKEQiViNzVVBkfV03N0MvcGVPTXR6KTY7Knheci8heFlRO2NBO2hXVDVWaEVOeHVNXS5GX2h1WU1Kbl9QR3FMNUlpWjUocVRhVi93O0dDYzs7ang6MkBHZFdiYFBqZz9gaSNyQ3pI''@;'; put 'put ''QGloWGNnYDlgRmcxYGV+U005c20mRH5aUktJST41ei9eLyo2I2JQXy84e2FUPXI6bVtZI2ckcnNBfEFMfjxIQnhhfjhIPTRCOnV5Klg7O0RON2hAIU9RQjxZRUpAQU47RjRDMDxwKXxmPDlwKz5dNz9uMjAldytqQSVSUlN0Ml5xdEhbbUwyUTx4NS5fN3J9UTNqbnZFNCtMNjIkSkdlYlhoO1o3''@;'; put 'put ''IWZ6QSZkcn05eUBtRWN1PWx1VVsmM2NvOCorW2hIcVk3ZE1nY0tmN2ReYmtrRls3OU4reV59THp8eTFNZEtATjh+eiV0MT9DS31TOj5JdyExNVZpWkl6PThUY0xPdHteMiRfdzJZT11EQ0F4dUhvJDRgVlM9PEJWP3c1cFl6O2tFbWI2SzB7dm9qbk4oYlJ2LDddL1JUYz95JDUqbUxNVyUzUDBU''@;'; put 'put ''QU91Sj1iQz1vbk91cFQqJTVRLmNYaTdKMj18dUovcCxdeWhCOjxGLm13IjtoR3c9OVA0ZCFGdlApKCtbdF5CUCk+WWV2KSllNmt4djd7MHhOYn42JEw6VF5UdGRIeyhTaUhsPjJnQW1IbU4maT9wK1hIKEI9K1RAYigjdzU5PHN0RG1oYjldZlFXZzlPeGVvWzc4TEFwNHVabyMxdSs9b1ZlJTQ+''@;'; put 'put ''K29ZMDh9JGBedHh8cXVYNFhZRjpNOVA9OHpnNGJpSC4jUF5MYGkjPVc8W0cpX1Jhb3lEfFR5KUZIMmZzKzk9bjV8NzpBUEByJTRlUj1dTU1tQV0hb3NkdTwiRSkwaylePSJYWDVXX0UlVlRDd05xW2lfdyg1XUtLeSthVVZyZU90UTcwMHRqd29qSDIlfEwiWW1tOCRpNlQ1Kl5rRjhIP08sd1Bm''@;'; put 'put ''XmleZiNhX2puUUV3JDssYnEpKW1mdUUmJSgzWX10OnwxUD47eVAiU1pQVUFJKl4pZ1hkNCJ0NjZXI1kzR2Y8QiU1W2UrdEg5dDNFezReT1ZWLmhlP1hZdTNWPG5yMmRDcFRyXXdEP0tAWFBTbVZpbCNCX28pNEhdMHdyZy5UZiQkIiVJYDBsYG8sdHp+NnU/bHRbMEVRWWx1JkJAbig9UEpCIjAk''@;'; put 'put ''fX1POC99bGxuU0h4dFVoKitpMjV2LENROF0od2t4d2dzV1JFdFdVKjVKI3ZFITFoaGcweVBMNUlfJjAvKzRKfXFqPk1QfW12ZWZodGwkN1RyRWl9PkguTmhfWE1pYCYzbUl2b11qTmEkek5fb351Zj14YzlXfmRlL20ufFN1LlZyWzUkOixJMHg5bi5wSm9GSTIqanVrVVRHVk4ufH1GMl0ybTd9''@;'; put 'put ''eXFXdmhydTx2MHV8PU8wKzFfRDkse1s9NC5NQyI1dk5YW3hnSX11KjIuSWs/Q0FSWlVdfWIjWT5Ke34/UXhjMiwzWXJVVUlrUHMqe19gfCwqbSwvaX5rRF4/JCt+Y2MxY2QjT3pwfU98JHp0MGU3JHNQaCFJb1I5d0g0PGhvQHdKIyQuRlR4cWMyPzhqdGIwfXdXUyU9VTRIQzVgYGp4TlJ2UyUq''@;'; put 'put ''PHgyJCQ6YTAyRFAsK0RYRDpAYVk8SipUKGFiTyQ7VGF7en5lcFZ0eCksRWZUVkg8UD8qW2BDKWp5e0FdeEFEI1gwenokJlJCdzNic3dtcD17WHtwZjs8THk6RktWZSkvI1AiaG8wRm83dXlGPS4mKGcpTUdgbzEjTDJAIWA8a1d4PDtoM2orQjVdKEZ3YUo7Ilg7OmM6fSJUQHxON2cyUU9UPkw4''@;'; put 'put ''PkhSPmIlUHNKVjZielgxT090SXdVUF9RYExiazNBTnlvc1hdUmFlUyQhVmksW1Y3QnMxZ0s2QXJ5JVEqITU+XltzTURGR0s+dnJCNm07MkRndXlIUzFiSFBkW3Z4SXohUmhqWGpxLmgwVSZnLkImbVpbZ2M5Uk1QNy9mcWQ7VypXZ1ZnYHF5W0granZyfCEzPnxTRk52eFlIJXMqTm5SeClkT0Vr''@;'; put 'put ''e2hdcHNKdl5FYnhjOlQrXW88dCJJOU4xPGB6IThzTk81PXx8JFMvcmtAZ1lOY1MiX1VtLDxnJm5ESm4qPX0+c2JJKiMzOTohfDA/YUEpfUNvRDZTdHVkZ0NfYCVVYmt0ITUzITQjbCVuM3x8YmZ0Zmp+aDFlU3AjLCo5LFJXdXJfN3lMfVNoMFZZa0NORkgsQzwvflgobEJqZj1gX0ozam0vO0ku''@;'; put 'put ''Q0tEZW4oSXcsJGEmM2MwPzMwZG1WQndPTztgYzRVLFlkNnU2MFc9YFUyJWg1QkhVMmtxMTI9PE53WGZeKnRaV25qYjRiSlpXQjojaT9vTkxEIlBvIlJOL2dIeGA+c2F+JChKZiZEdjhCWXtHNXREbGFNZVMuTlEqN3RBPj1TOHMoTEB6V1ooPWt1VXciTk13IjF4I0FodjxWakwmPn0wXiY1VWsm''@;'; put 'put ''PGEscmM3aj45IjRwZXFdM0hFfT91JT1WP2dbI1treV51c11UZE9WLmV0UzJZUyRubDdKRHk2Ll5QJEEjdXQ5QVNAbllDO1J3YStzX0N1Qm0wWSZwXTtHdiZ4ZkA0VmZgN1QqVy5xaWdqWHVzblFPK2h8NyVLI3F4R0pZZV4rMzR6PDlsRiZpczspWkxCSy4wJHZEdGZIKz4/ekxJfUUrVDRCdGBo''@;'; put 'put ''eE8/PWxBS28kYjM/KkxqK1F0RSk4O090elJORjtqQFshWHp1THUrXVVvVUJ9TEdmfnV3O1pzcV97bklQQG9ELEwjbklLek5HbkVdb3FQVGxpNHNsRTYjLmE5KyF9TDJPOiFORU84X3VLU2M4Ry5PT0BbKDVjX1FKQHhNZnt1cHViJT8+WSEmM1RHSEdiblt2N3x4aW9ZN3l7SUozM2tpWHZESz5n''@;'; put 'put ''LjVraDBnWjdQWnhGaEVYdWduNCh6ZSFRW3dId0d9Mio9N0xANlt4WmV0cXFHM3twMyorTENhOTFSe3FoTCkvVmk+YkhNS0htI1dxUHl8OS9iJmE7Rlh3LCgwM2xERTpCQnU/cHd+JXxobTQyXnxaRiRDYHNoO1NacDNLcGVEU0MrIWZoWiZTRjwiZUIhO0x0OH1fKSQkYG1CWDRJKXFjV0dzX1p8''@;'; put 'put ''S19GR18zVk8saUFjSlV2Wi5SUjB2T0R6Xzk+d2V9e3RuQEhyYFpUUkp7OF48WVdPNkZ+V19eOT9VdnorOkNNQ09sdGpkY10lfGBeKmE9bUx0djd6V0dOcmJDVyRtWHZnSzNWeXFmSSssO2Mmbi5AVVEyXjd9JHpnZzFeQnw7JGt0YjIjLEIzcDVtRUZwIjZ9dz1icEtFbk5dPylZTEZscUgkRUZQ''@;'; put 'put ''aTVjVWZmXSt3LkhKfEkwMX1FQUEwLEVOMWRzNC5ENk1xT2tuTEQoQ1hzVGR2JFcueitSREUibGdpM3c5Ty8oZTw5UloxKDJzPmI7OHxlZklIeyZuSyNKeER7X1RpP15XL3sxaCF9fishfVBsTlJqOEAySHh3dzJEei94bmdNXm41V0VhJGQwNGN4K1Jsc0cvK3w7XzEsaCpMWWI2I3NNTnRVWjxS''@;'; put 'put ''ZTkmKXA9SHUlWlRbanEpMV1KLD0sMnRiaVgzZXd3RiZdMHh7ak91I1kjd3gsRWJ4Ik58Nk1SLGZJKzI4a0xuXj5Tal1OSyomd0JdT0AwenVzfU0hUUo2d2YlVV9benoiR3NeeSpuZCpmS2N6b2BnQ01gWTBzRy9dZXFtckZbcTxHSDFPWUkkKHtQczB0dH56VllbSH1iS2NMSzJdTyNuN245TDI9''@;'; put 'put ''IzFoakxmQHVCQ0JdZHNBSTFSL0xeW0dLemVHNCE6P1E/IkddUk1dWkVBYzMuZXU9a1U8YTpJZ1ljdW5gbiJxMnRkWVA8dnM4STdQVXg9SGRsQlI/IX5AMWRTLHxkKX5fM2VtTnw0ZGZUR3shbEM9K2tUTnBGK2c0RStqcnZiJiYxO3lOMjthIkJMdzN6e1t8UUw0PmJfKyhZZWNGZ2Q2SjVmbD08''@;'; put 'put ''SntBZ2AraEFYb2J0TERdbS5pVnQuKVtTIjxpQFN3LnM+eTxmOHtuRV5hLlJEc3s1aHpET2NPbntRRVlTVC98PTpEe2c7JVlFS3koQj5rMTF4UD0hWX54O0VFdyxgMWI+KixOX2wxcV9Td0wiPlhOaHJrSzZRYygrKzcyO2U9YHs3SX1lQlB9ZDh8amUjSDgrIXVtM0FANDNSJnVDcSMsS0lPJmM7''@;'; put 'put ''N0NtI3lIRUd9N3cxPVdCd3xLOGo8VDJudDNdJS9CYiZeME1XKjsiYkQ2dlQ1SVJsY2AsIStgWFQ1cnRrYVckRj5KVCM6bEl2RD1HaUtCMUkmY2wwM21SJntfaz89PiFbNmdaOi9AcktHO25FT1NHNklPXUowImpUU3wrL25BQz81VU5UT1ZdbXlVOyZqQlJCYTUwJj9WKG5XQndLeXB4QCJyUTg/''@;'; put 'put ''JlcpODI0UXpCKiIkJU0zN24jPkNjKUZSVHRITGcyeDhsWT9MUWYkWlQjRGBeViF3bGovYCRlbSxuPFBeR102NUBBPCImJDg6Xz9+O2lxQUd5U1tqLF4+aGB7fixrMS5KNDssKnp1bmN3JURRKyYveTlWIVJ2IXx8aThHe0V1PTtXWnZZeWI0MWI6UE9sRUopJmtDNDdhWlFpQi41P3IpU1lje0VV''@;'; put 'put ''X0wsJXJJU0JZfS5ecDAvc0BlUHJXQTdhb1Nhanp+TmYpODlAW0gpT3tRR1IhSk48dHZPQVNmU1B2dSRvODEuVDJDYGpYWSFVK3w6OFM9VmpLP0wxVFtQVC55W1hkQ1Epd2FVc0VRO29qZDZkX0AldjI6JFsrfG1IZT9TME44VD5re3d6SmAsPEBrbFBraSxyXWkpTnIlPmRKK3U7Q01VaE1FLkk6''@;'; put 'put ''dUAkYEglVUNaI3gibi5nZFRTI2I7PjpoNkRbW3hDMzxdL105blRMQyI6VndjSi5NelppeXZOQy8qMFpjXUgvbmA5UUxMfTRGaDJFakosZmY/NU1hUU1bbHs2YHRNMEdKQkVqTmtuMTc1S0VSNlFyUSE4QkxCQkc5REN6R010OjVsOVVwbjsodzFrV3NLKzN5b3ZBNC8yX3ozQGFnVTVzOWh4dyVC''@;'; put 'put ''LjR7enFReCI+UWQlb3B6RTsqY2I4alpfeGJuSVtZRiReKEhIdWg6RU0vMVF6YyNsYEQ+bF4/SjxnPTdCKyYuZF4xRCFWZnZAJiIhVCh+VVlSSD4uQmJaP1pqcyRVNEooVXxfJV4xczkuJVRRamJFa3NYZG9vcXhDJkcjR3pGJGAoaCUxYUMjV3E4KXNdL3dlSngrMGxhPEV4fEAubT5xdGtkJmJz''@;'; put 'put ''NCooOS9EIlV8UyJ1RDowK19QXXd5fHF2eW1beEIqeXNbOXckLyw7dGNpXUVQTXtYaExKTlU+K3NzYEFKR28qczJbd1goUTAseERlQmNQQmdBZVRLJT54aVBIdFdHJWtzKFVNJWo2PD5qZ0NNaEd4akl5KXJEIl0saC9QOktuQF8wX21zN1JuXXYsMV49eEpzNDwsRk4yR2EkdWpnYSwqOStWRUdA''@;'; put 'put ''XUVjfUU7fDBiP2I/PV0hXUhZfEg/QkZzKXFUKE1dXV4jWlordVNPNk1WKmdEYFsmajNKNE4qT11TdTVGNT5JQkw0WGk0IjgwNXhqYTUqM31CSVtMdy5ALG18LiZka3dORWoxOTJ1MCgsUmpvXmZQNkV0LyprIU9pOnxfJXFObShYMmpuWno2SWRrdXwvKnc9dk1uSzY7VVdtSHh+V2JjdDE+fjt8''@;'; put 'put ''cWMhWUNBKHEvL0BpYW9TInhjQjIxKENTUClCV3lrKHJbeHxUS2osV1p4RWJqMj5UOiZkXy40W14+KXQmKzNxbH1vejBBJTNacGFvZUxHenl2SFtCOm8xUnw/ZitUakNAYkVAK2dvfHJsT1tvJUIyTiJzITV6RGxeYCtvbiFtJCJTUDxsZjxOTEY0KmpFIXlDKmxLaGN7YnQ+KGsmanBYbE81MlAp''@;'; put 'put ''W21HZTA+cD13WzpjOzxEM05UK3RpVnphdVVIdSRjTSo0RTtESVBHPiZuTWFRYkA8UD9LYUtyXm5GL3IlcHlKaEJ2enE0Q1VHP2g8QTBrRUFEI1sscT8jRyJDNWJ4OSpMXn5iSWhrfX4qPnApLkR3ITM8Uk5VW1lNY2IrRT1IUE0pMTA8OFslR3ZwKmxCMG8xU2MxYDRKQHRPUngvfjpDcGd1M2tG''@;'; put 'put ''NjN0fT0qL1AiRXVPUGN0OWhOIjkxWVFDdyMjfGlAeVtpSnJDRnpgOkBZS3p+Z2t6RXROfDFnamFrNStHXkZuUmlyQ355bXV4JVYmLl5NTk95dldMIy5nLmNuInczcyJUeXcsYUtdOmZ4PU5xVyxKajFXZXlvUT9Ib3Jzazt1ZTVVcy84eztFKlZ8S29RanJONlJYUkQ6e0BCbzQoO35eRTAvalZI''@;'; put 'put ''OXdyPk5jL04we2A2YmoyJmtaamR1P1I1SWFoV1FBYl9HenlmXmdWUTFjRVNHJjF4dUtjYnRNUHIobXBFKXdoPiklUFgoaSVMd2FPNEZrRmJMU2o8MzBhY1hTWkBaKXBKOlRmTlc1aCpbajJ4SDlaa358NUYoN3tKYDV9ITJMR31oUW9Ya3NNeitSYyFCR0pdKFN3NkBBYiZCQmVtaktnWF5OcG5J''@;'; put 'put ''Mmo/TFVqTndNRnksZzQweD1obXhgV0RKKTFCI3pQSHJnWyZaXXJEYXt1LHVTT3I7ImgqSHI/P0BdIlFUaTx6UiRFQnB4WUVua2YwdmFQa1hdLm0sPDFySSNHT0lZb3M2Oj5mfH14NEQ6JHtXcj5aKnwoQlI/fDQiT28haW8pVj5kNDlaMkpTcVJHdkk3azE/RD0hMDpRbmRrWnIiW1I9IU93fGEv''@;'; put 'put ''Nzp1eGJJU0BxRDIhOV1GQn1lKjFXKzFWajxaYUJsJlRxTngwKjore3M2cSh1VTk5UCY2KFJBODloTkBgI2FFKVBVMkguRiRJZDRgWmZbV3UkQGV4VU1nZj14NiJzPSkkUEgpTT59XTs9aC9NP1spU1toMyY+Tmd2U1EuMypdOF5zQklALj1PMzgkfVQvPVVUV21LJXpUXzY1aUxae0ZWd10oJnJK''@;'; put 'put ''LDZHTHlVNDI0KGZDQGNeYTZ6QF83V3heZ1U7dlApYG8pYW9KK250eWM5VEJHV049Ty4pVF4vKUgsVT94UFhaTmAoe2JmTHh+Vzs6SnFFYjR1flpkWXUkRjJ3LDJbJTMwREtwJmgoa1lkSGllfjAwczk4OlpfWzkjTUAiZHNYRm93T05OSmI0PllAaChsNW9kTj5bPj5CRGt9dUJaU2Q6d2Z8Oixl''@;'; put 'put ''cnIySi4+WSwrKTA2akwmLFlVKEtII3EoQWh5aCN1QXAkbCtsbSwvVkVmWDFbMjIzcX5RSFlbTmV1Mn41MUxTISVHXnFCSjxnKXpdYilTRUguW2hwVEdvI1ZvZDZYKVkiP21eVDZKJDVsZD4mezZWb2JJWToyfU5xdypGVH1UcDsqOEdvMl9eSWtvSiMzYHZ2YkZAO15wJmNpZUQ5ZDUofDNoZS9u''@;'; put 'put ''Om5AL0UoLDZiSjVRUVdvM2AieEV3fGhIfWBDe25EPSpuKUNtWFsoPXRZPEUmYHMjcTt6SnQ+LyhMMHc8QCVKTms/KjZ4N2BfKHReanFmVDUjZSJ+PlZnPEZyRHRHVks0Q3U6OjUiJmN7SSl5bHUmfkBQY1N2Uz5jKytTTnE7R1cwTGQjZXREMjF2YDFCNWpASmw3NmUuRmQwITNoNj82UmEqJHlZ''@;'; put 'put ''VFAuKWVKfEp5d1AiZUIwYmE7JEE5dzEwRyYiNjc5OmU/Vy4+ZHE9c2hCO2YkWT53fWBWRCw7TnJkey5LYHQpcjUhRHdIb1ZiUmxEa3YvcGJUZm9MeTppNyVlQ193N2pLdG1zYkxOVHZDPls4JDt+cExUXSgvO0o/RDhoPjtCTChpeXdwLkBMRUIiOz9DQ11COEVhLnJNUH03MDhNeHwoMCZ9aGM7''@;'; put 'put ''MGFZI0tGaChqQTkqVT14alJ9WHVzc00jMko/Jk52WnIxLylJfVVCakVULmUsQldfbGgiQ1Y6TkpdKGx6K1NndnM/OWlfOikmPzhWZVhOOWhNMnVbKVV+eD51OGV5N1lISTw3S2E7Q3E8PWksTSZpQCh0cFFab0ppPkc5KWt4V11iSVpacG5bdFNNJEpVflpfZWZsZTVIRUVGWS9LTnVUbE5HKHZi''@;'; put 'put ''QlcheFU/X0x6ITVNd3U/VFcqPHI4S112fUsmKlpTdC5fZlFwdypJNC49JXpuVV9zdkhAQ3hRKUpyJnZ7VFFdV21DMEJHaiovWF9ETT50SG5paWVROXk+YnxecGJjLDJ2e3k0QXdseWdWJCt8KUJmdj1mVWd3Z20jay9OVDVpbEJvXT9sUmlgNSY/WFZXJlsxSCtHMTwjel4jLzdvXl8zZVduKF1p''@;'; put 'put ''L149NXdqVl55UmVlSXZ7fClATk5JUWFhM21tZ1dSO3NydW06LkVqb1VWU3JVcG48cWFodUoxTTQkeVlzYlhXS2dgMFk5NEoiOU09LF55MXpuVEQmZlBKIXM9RXtTPEReL2RkSGhPOUphaHZuaHdrQThKN0s1OHBwbjtyIWtFUmsvRFk+OmFyb1RTaFBmTzN4W15jNnYqOkI0ODU0JTRebV05Pipo''@;'; put 'put ''KHlJaTNIVUgmYztNO3hQQTE4RENaaWUkUnpzOn46UjtGaGl8SilrOG9SJTQjKW5EYEFbQTJCdDlRRCtAJnw9el5LRlhbbHMqfS88elpPUkNoSCtJRD4hN2dJeTFvbSN7W1U5V2shfDp4dy5rQj5UNyFjNDZtTlhYJk97Qzg3WCw/cmlhSlllcjJYRiQ9LkZ4WnwmeWMrST8/M21zdThHZW8pT1Y6''@;'; put 'put ''PCZQZF1QO1s0fUsvWV1RPnhYRltvPnFad3ljRGZURnZYKTdkdztSfGJmZ04xcDt0Pz82aEUrMHs8MiIkImFeN2VNNWFlKERPLkNdc15Fc1lMSiVvZGpdKWhFPG0+eG5+b3Q4UVtbP1hmWzxQU14pMS8zUD5sPjR8Py8mVXdVXm1hZDtBZHVdTERuI152fjpGVE8wPSE2S05zM0FFaVQrY1hAW2JH''@;'; put 'put ''VUg7NH4mJkpPK3pEXXZhNzY7OzxDOE5BR2tCWjhpdSJuQS9aXS8za31uSVJRKShOXiorZ0BwVzhUWG1EVU5BLDZEZ2xxSUBHNEljK11QYF54aX1xRVEkZ1A9a3puU1Nbcl5+OkclVEptOWRwSEglbHVMYTNaOHd2QllrMTpALGdYelJlNjsrS1kyLks6Zmc/e2Q4IlVGTStzRWpKL2NudXxJI3Yq''@;'; put 'put ''bWJOPklwMS5wdGk3dX5Qd3Zfc3ouWGVrY1JBPmdSOHtdKyZpJFNUQ31jJFBANzdOdTZ8RXJPeGo+PDh+c2xsa1Y+akZ2KENrflJqOCZMb3VDVDluM093LlhAT05eS3lIVH5rWCVUa1o4aFR+YylGbDMoPzd+THd4MnZvKCJJdSIpTnwod1lCSX1vP1NzZE8ucyZhIUdte2RsX1IkYkVgYF86ck9u''@;'; put 'put ''aUN+ZjgzYmgra2ZLTmYwIzJ3b0JeSDtwdlQ2TzUkSXY2KHxNWDRfWXJUNitEKVo0dDc/e3BEbEwhfmxNYW02YWpIUltqKTs6ZTpbY0p0M2lGVSYvMl1wUDlgfjc+XSEkJFRvTW0+c3xUMExpUkdxNHg8eC5IXVtYQGpuInY3dGNaIlB3QUN8VEwuTzF4WXUxbzg0V2ttJDM/P15fTVhkLnx2T0FN''@;'; put 'put ''RV9jQEc9QUdJbltralZpYC99TnIlSFhPUG0/I0NXWn56UlQ+aj9YV1VXJTpQX1BbZ11MNnxALF91dDozY35XOE9TI0MsMTwhYGtpWUV6RmpjND5jXyxhZSwhInVkOF4kM3FOcDppfndQZkYsbk5RNHZvMSkvYEpwc01OenB0Y19QbUYoNnZZOEpIMy55UW9CSlEiJFZ+MzdgYTA+WXU3L1t5KT1Z''@;'; put 'put ''d1YmWkNqZmBmNyF9MEFYKV5QUChhKC81XjElW01NTjMrLlMhXzBZQWhwYTpHdzY/PFo3NUw8TGldJDx1RUlfYSlyQyJleXYlbXFfMilVLyw9KldaRzh2YTt+Zi5tI0lCN2JqUEUuaTpCVXNfe29tMilsdm1nNXloRkwhOV99Ln5VP0ddfVYyR19NISMjW1piVmxuXk0/TlV7NXlmQTZreTc+PV14''@;'; put 'put ''WmR+Xjp0aj5jfEZqKjU3L3NKWFEyMjdDbChoTEEhKEdqRlk/fUZvYV0xYE1vQyIqeU05Z0g2OUB7QFlBTWcmcUszekpbdGYvXXBmL018VyQjNHpLR3pwaktgXTpMQnhiVkh0MUNZMXM4aWMjPG0sWT50NGJFeVE2IUF3aXZ1QGZZYEZ1ciN+aD57OH42Kyg0XlE4LnNUXzl4SVBTd0AzfXxlflRb''@;'; put 'put ''JV1MOjJPTVozMm5TWzUqUUVmMnx9cF8pJVcpRV5xYXBlVmJXenxkZChGN3R7VXxyK1l0UyFVTTlMWXcoKG5pNT1rdHswRWBLOkw9a25RYzB2WVVIZDRALmZBU34wPkUxWmtgbkJQZ2VVOzAyXURtR3dicCZJTmIrb2JyXXg+XjtHe0duemFNRkB8RzsmMGZ8YThNeSsla0BWMUkiVXsjLHRYZGAq''@;'; put 'put ''ViRTd0YrRzYsfkNEPnQ4JTVHOTpJWyVQcGtlOzFDdFo8PWheQm4+MV5ZXSsudHpFRGIuIkRqMUthZ2FnMD9sQjFjXlFBaTBEdF5MWEVqKnN0UD05QWN6JUh6UVUmRWJBWFtBckF4O2FJLlhbR29eWUtfQShYZ340ZSRVOFs2LkhxPl0hSCR5PU9PUk1rQi9+YiFHITQwMT1+fTRMcyo4TU12VUAy''@;'; put 'put ''MkVqOHVHSWl7bU0wK0lVZ1ZgQTA3cjNhSENzU3ZvUWB9KHchLnd8Xj0+RCVaMigxTGdqUUUzN0YxRlVOeFpeT3g8XmI1V0xNPig2eFIoJmpVcGhbYSszOHFuM2BaQ0ZeNFcldENtRFc+KklLPD1HfXtATGM4NXo4KD89V3VEa0kve3EsbFAre2p0cCtKY3I8PUQuSldMfm0jIjBdWk5HL318UyN9''@;'; put 'put ''VFJYfCMrVVZkdiRFL21FVGV4cXdXTSFSO3RdNkFTZj1nQCk+MyFqcl5sQEdtUnBENkpMS04hIW5GYFVvYUhCYC9SWWYhIWRhUVdWXiZVWU15JGRHW0MjY3QueUc6UzBnVF9+anZaMG42M1QiXzNTISI+T2YqcmBsbU8oIU9oYW9AQ15EQUNBOF9zejlBQGJ9PE8yJi9BdCVjajJhPk9XW2VpZjhf''@;'; put 'put ''Q3ZVWHBHJTBeJDxyRj17Q0I2SWMlNS5LI0ZhTnxfNiFWNyJXVWVlKmN7aXJjPDladz59cEYxQHB2MSRQK1BBM1dxJmllYHZTUVRAZkQpPyFjeysuSXdLUXQoZX1DfUw3JjI1ZHMmRHh5JTxxWSpEVntGcFpnQ0RERmQvKEltMlMmTjA5VyV5aHYmPDMocWFpPGU2NmNxVl5pQDVBVF9kNyo2T0Y+''@;'; put 'put ''L1VLIkZbVXRrOFp9YmkseCZGSHFCXkQpYUpPPk9ZSjNfb1lRcVssMDprYX5pfFFURG96WE1hVXdyWmhbbHR3NjM2ZSs1a1RhY3JWP2NbVkI6b29nYk9UeWJ2JSNzfGZyXjdnXS4pY3Y3aT83VkV0YUpCO2p+Uk9FW2txTlNKaWovalh4ZURMZGlDXj5aJXxjMnBadH1JWyFddDk2RmRZaWhWYmJE''@;'; put 'put ''Q2xgeVpPemxyS1FuZllqbVUoXT9FPV9APnp5akB0TzBGUHJ8UlthPGtSU01fb0okKmQ/KSwufCp1bnI6OjZEOz07LDQyLFRyc05NN19PeCVicCNgciNaWnp3akhMXjEuQzFxSzdjWiE5QStFKTx6PCZwaW0kKWxQXjZPbWdsRDBUL2xTNlRCJTN0Uk52S2R3Uj05dzNeYU9ZY0E/Rk9zJkgqNSpa''@;'; put 'put ''N3k9clN1Z3g+b3lFQU1WTzcjelBJMSNtZ1tWQlcpV3U4N0pSTV8qeyYxPHN7PX52O0tkRiJmQkBEKG0qbXkmYnFWblRyaUsvUF5uMHRORlhYWCI8OyhdUWs+UFBkRCxIVmx4L2dUJEhYL2Y3eUgqZENNNS5rQDgrK2wxLyRvTG5mMy4hR3tNLDhjeTskRlcwcjgkIVl8RHsqciM/PyE9e2kkNGsv''@;'; put 'put ''OVF6dDpvfCxaUU1kYH1LeElyXkI0JGYucVlbfjQjUjElamVxZmNiaXNwOFB6ayomTGk0VFZZNG4+WzooeFdJY2ZQM0BEemFhPVg/OSlvQH5ZMTk7KWtSP0p6RiJdJkJ4JTI6bVQwYiUzSXw1SUtZcT9YdkRqUHBrc3EvKih7NjwoMWRjK1UxfT4pUVk7aVYiNXklKmcod1hAZl99V2Q9ODFANDMx''@;'; put 'put ''aHQ+P1FSVnNvQz5QPnlQPkU+PV4wQ0lZWCNrdClXKnIyTTFKPVBrXjMhRHp8dzdDXXRFaUlYTTRiQiJRPiREUFdfIU82Z0RgPlY1NyxxX19lKDgxUV9wYld5KyRXMjtPIzYqOyg7blFOMGx2LiplZCtjRUFQJCF2P29mU2o3JlBsZTFOTll2YHNrMz4vZEBQPVZ3O1Q0czcxSzVgVDEmTnYiUD5R''@;'; put 'put ''InVyZyshcGxQOkN+Vl96W1p2YnJmRCNANHFnNG82Sm9Xd1M7S3tIZ19QO141Im5NWEtlVWpZV1F6X3VWcnhJX1csY0NEZCpjdTNSP2RdbkRlb29dJlk+RzYwIXxydFgyZlglM1gjT25HZX0wTyg8JD9tX0w/dUljclI7MX1mKUk6UGU7NyVOMktYfHkqJlJobilpZHkkUSRGfFhGIVolPWw0QFd7''@;'; put 'put ''MWFIUTk8WEQve3VzK3hIJC9WTDJ1OUs0WlsqTUpAcFQsTl1tY0RpN3Z9SUJ7PW9jY1J0eTI/UkdKTDQiez41JWRYSiN4WToyYUg1MGhMZXtsSy86fFlgRF18KzxFMmg4SE9mZCgoUl4wM3VldntWOnQ9aEssaFZBRSlHMnsmWjlpUXhMOFE4JDJSKCRdUiVyPiVTKElvYGo7RGB5U2k5biR+Jkdy''@;'; put 'put ''UWUjcGEpbVF7OGNPWE0yUStzdDMkYjRMRD5KaDVifmApXzphc30pMF5CYEFDY3MqRHQ9NV8iTiVbSWRoX0JPd2FrPHcwSHlveDRiQVNDX04mQyM3X35kLGtRXUg8ZEI9Pz4oYStYb0xQOnduV1tfO09NTFZFRi9YaD1mIXglVlBpbkJuWylPcFQ1eD4kVDdUcXU1W2xbKVQiKEpQU0JkOl9NWyZi''@;'; put 'put ''TFtjMGdfbmRyZDI1TCohK0s1RWh6XzV9PkZCUDlaTTkvOnRpflFyQzxgIk51Zz5DOz9VVmBqXmJ7RVZsVktgcC5rS0F1QitWaHFHODpEajFFJGxheVA3ZDNeYnBNOl8/TSNIcEVLZmxgWVU+P3t2Rio9PFhuNHdGX34lXnZ9P28he11TOiYlQGwzJSokJVJnSD1jc3ZoL3swfVtVa1E3OixsZ21d''@;'; put 'put ''L2xYS1A6Vk9mL2R7M0EoOjNeIVBQPFZwNmJ1K2NrJGE8LFFvXzYqNFg+VEkxNXdPQjd3PntTX0VwSyZSXn52JHJxTltBNX4jM01ddlo6Z2hfVjl2W3hLRCVGMUF5QzQ3XlRCMWl6dk4/U3Z3K2NFMXQrZWApQT1xaisqJHBLMHNMPmhQVC4qZls5T1o7aUNvQEE3WWl3M0E4Z2UySFpBVStvSEJV''@;'; put 'put ''RUIldk1oalBuM19bdXxjcTEjQl1TOnxHZ2JSXkVTMF1OIT8xdW0vdj99d0M0c0xiOSg1N2AkSTVQclpGbGBmK24wUmdBRDJlNWssdE1dW1NnJTB9SXtzKl5bLDtlI2ErO2VgeStgfV9GOXU6YXhXfSU6bClAeTw6UU98VGtCMmdxOEV0L3twaDZMVmB0dnNDTmhQMHBoMjM1JjZNNUM6b0xwOX5G''@;'; put 'put ''aVpnY01ka3E5YEh0L0MmcUpUfGNwWmkkaSNxV1M1Y35yTFo2TGNqSFs8ZEx2LnZUfGdbWF8vPUs0VFFdcSNWK21qOTZeYE54M2NPNih0ZnMsRylvUiNaaXg0WWw3Xnp1NUpOa0cld2dCIyVmZkc0PGZFTTNRW08qbSJeQE5XbGAmMz5HZndQJlQpQjJ9aDNkaUBUQCpnTmNbRmBzRC9nNlRELDNj''@;'; put 'put ''PUk6LlZpY2trb0UheGdgYH4xZ1pbMTUoKl8sPWU1P0pJK11Qc006eVAsZk5kb10wM3oiMkw6KWlyMGl+cTV6Ozdbbik3JXptPHNOP2V6ZV5+R21rfDRiNXF5SUJydzlNWnxGTCR4cFJ1RU9gYyhyR1U1en5BPUteJEozdkE9KGxZVCg+IiVkYGJ6eWVhTCRyb1RyPWdHQU9pTGBmdXp1cCs4aGVN''@;'; put 'put ''WWohS0Fqc2psYSVTen1Zfk5QKCFlMHxvcGpMZmp9VUg4a30rJnhROXgqa2ZwfDEoOWdRTHBYeGNuXlYsP0lQTF5tKnk0eCh9Si5Ad35aTFRoR3s6S2tILHFCaHhTYUBmOS5xaStKYjosNFhAZ2pdTkZ5dlRIcV96YUc4YD5rP0pJczcuc2NMWDc4akpESjx9MjQhMmAyMW4rQH4jKHU+ZjE5VE1w''@;'; put 'put ''SUc6fVgkZFt5cnlveCpWQWdAU0N1Ik8yWi85KltEYWpNaCwvbi9bYn4pImw5fDh7VUByYTZjI3pCb344Wz1nXjJGJW5vaHk3Z0BHUnlbTklBKTdkTn5OdUJ2MHFAfEk6PCMlNzEvQSkoXnhpUzJtRzEjc2VVO3k3UCEsfG5sNSl4c05SSkh1STBCc0lebkVuKk1sTF1EZnpadkxIVXdpSENhaypi''@;'; put 'put ''RHJ4LiN7K1d1OGlvRTUlamdMa3l4OEUra21ZXUJEZEpxP1RwVSFbfTwlfE17P0dPTUwzPVs2LiVOTGIwWUNQMUwjXXdPZy5qJXBvI0JzIThXWVY9bCtOSTQ1JEN2ZisxQz55TiwhcXFTbXRUbnYjM01ad2tHOn0mJW9QT25GVFRqMz9Ba3M5US5RJiRVazZCVWdBZiEkNkUkTVRwR1hIVm1meE5L''@;'; put 'put ''MjhPbXVaNUM/YkJPMVRFRlY5bEQ8TU01dDlnc1kqPz9GW0o1RiNecEgoRGV3O053IWwlam41JHgqUDRzZzJnMCM6RXVSckxQS0w8eDlDeHZ7fmFjaXsvdi5TbkVWfDY7X2teV2FtNy5lQEZVb3VXeE9Ga0MrPXQpYzlzempfM2hMWkJsLDguJi4kMk1iOEk4KWFmdnFMTUQwKU1oMXgrdHIsejFl''@;'; put 'put ''PzFqLFhoSi81KSZ8SmpBPUdbOT8pbHBFQlEvLGJWWDVWP0RBM2R0Km1vdElrNzo9TSZ7MlUzKHZUVGRUbT5gV3NyKzY2YCs/N05vbj1DI31PJF5RXikqbEFpOlNDR1NJdmo4cFN6dCRBe087NjRTNEd3X3VOLjQvLmJeRSRoJik5MyxffHw1PHBrXy5Mbndfam5NTE9oWCU7KjlDQm4lV3d4Tm9K''@;'; put 'put ''UjR3aGl3alsifk9je3Y4SzY0TDxuNlQvUUJJe0ZFQUwoT1ErT3UsalozNXhXXlFmRHB+SEtjbCZlLEBScC5XKF9VeFFbbkNyS20kYSU8SiovI0FxbmhUQDd2P0A/KkB8dS4rWTQwZ3c0NkokaC8vajt1Tig2JWxOYCIqcDhbVClZOmVUb3gqLlRlKF47XT42JVZSVV84ZWF3PDsjajFvPUdkQDhD''@;'; put 'put ''TiZ8Z2ooQVQlTE17JTkmOUdeU2NKdUJvYFYuWU5BYTJrcSMoQmkjcTxydllvNH1ObHJ3WDNyIVYzZ0N9UmJiMXp7LnJAMT8ocG5HdUlCSlhAdG51Qy94Yys4I0hLdmdGKV9lTnZgV0ZYO3I7ITsyJi5yTko2UX1jbHxAPEhuTV1YO105YGJ2NF11NkFiK3o4JjVSQVBUWixFbHMyPHJSeyVpN35m''@;'; put 'put ''JT1DIWVaJEoqXy5yM0BnazB0WC9aWkIuUF9YSWdXZnFBTkhNYXZFUj00JFZyaGdVSCFrUWxZK2RPZCRRTk4odEUjXyIvPWd6L2R2JXtjNkZFRGx0OTFCeE0oVn1hMChLKXY1byJGdC4oRkNrXk0ifi9aSXshMFRQeTlaXixxbX1uNmB7UEMkNG5JbUU3PUR0cHoqdEdTfFdfQ3lKcW1CZm55PVUr''@;'; put 'put ''PGI4e1B9U2pffkszaixlcUtkeGIlWl5SPyQ2akpxKFgiRDRpXS5xSE0oWyZvbmJHVmZZW2p2UHRIbChbXSRgaFduLkliLyR1cl80bClpYG0jLlRUdjgzSWlJSTN2IlNQRD5gNF5YcG1aKDxifFEobmdtb156NGs1Ni8uIX1nZUBORTV7dmJEdzMsWGpMLyNYTUR8cGlmPjZVIz0xdWI2SUlYO2Aw''@;'; put 'put ''SW9HcFNvRCQjY30lNV5sSl92SkRbU3B2aiorKUxDI1EwWTBQIVsrVDg/JTFPSFI4W10+QEpbV15+fE10ViNSY0NOeEVlcFRiJHVIaEttIWl4RXlfX14qXzM5aGx0ZUtnUkJmTlpDcVExKVhQdWE1NFFjIVBZekNqMiImakVUdHZeMWQ8PUx7RzJ7ZEZzRFlLXmRNNnVQRmRIRUshQ1d1Kn0zTkZv''@;'; put 'put ''cU5mOk82JVQ7ZClpe25RSzF8LCZ5Qj81YzoqLittRkI2W1hRLnhtPl1qU3x7SWc2JiRPW1ZNcGYwLy8qcXh3Kl03WmJoU2poTCpqaDBWclRKW0xPPzBqVnczInljWmF1IyJoYCpGdEd6YkFTJktpVVZBLkFjaXpUL1Z1ZFZZIl50e24xUFIxbntyWXZtVmJFQWx1Y1ppYSgofCo4NiJQXk1IS2pa''@;'; put 'put ''Qz96YWppUUpueU4xfix4NT1wOl1rJT5YR11TSGptJnhnVTwuUzRNMTN0SUdDej1mR2p3ZSw9USN9I3s7MUwkS0o1Mn5Ya2U4Sm1KLl9ZKU1UUXFBblBuNX58aF5nT2dVTGBXPENrJGZ6N3V3WDMxaCQwaUdoSCttIkswTClzJSUsRj15TE0pVmRRTCxwO0s2dFFNZk5UXXBzNzVaSGZuPlFga01+''@;'; put 'put ''SkNtTC83flRJe0VeJDY+SjFDVlQmNzchc1g/Zi9lW2VgKngvTSE1YGJCXj5+WC4uXkIlbis3NzldbHchTFl5TU1lZUtkSUUpKkxAamhBaHE/TWhTJFFadjFdNTkkP1lrX3ZZfmUxUmk7c31YOW4rNlt+ViRdaUZvKDhMZ353VUV9fnpBQGokPElQZ2x8PU5OUjlgME9DWTFkMGtBMmJASX5ifl5z''@;'; put 'put ''ODhMZ0hKUX0rJTRWYVd+e057OHIvaFg3cFhQI3VOKC9mMSpeZlYwYmNGUk87bXIqVmguXnFnTUg0Y0A4OHZYM2p1KGByMT5UNUdSfWl+Vms0YCNAKF45SWY/cndbJkYqaCJnZjxIUE9sQlVOazY2RDNGM285SkZyV3VxVnxiZjw3YXsrNyVnKUxVPjsieHpdSCQ7fDBDXSs6S2leNUNrS0JkXix2''@;'; put 'put ''fnVfRXlVeXE0Ly8jYWFDUl9jTTlJSnUpRT81ZlpPNG5MZmpVRWIpLGxrYlApdihGP2l6NWFRbDlYVGVxVWBSSjdSbX4xOWl2R3gkaUxhKVlhKyRdRnM0M2U6XyVxYm9bSWpjSFE+Myp0XU1MdExSPXUqcWtiOTU0VlJtc3s3SEB3PmM0cihZW1VGQjE2KDYuLyx4S0VWKyova3ZGVWojPExgOl90''@;'; put 'put ''VVVtIiw+Kkk5Y2V9JjNUPVtHM2luWmh3T3toW0xtN0J0eSZzZURfVm56S01JXi95QVlPcEQqSEVpemw+Y1E9ajlDVUUzZ10wPntNNyZJIkBmQUVGVzd5fGthcnpzMVpodD9obT1zeX1wZE5VL35QJEo9I0NTSmNvQV8hckZpamdfRFtpPz9ZPm5fe3w0ejlTe3U3ZiYjYmR5Z1U2KWUvP0piRXlO''@;'; put 'put ''UnNKPHgoZ1BYWnZRJmRWQWosUz4uLiFFanRyTi90VT1MVTMuNn5xOzBRZEBze3hhTCRgazdxaTVoOjZMT0hXRiNKdGErbU5iZWFVbEhFT1YqYURvL00zYlkqTHl0TG1OV0Z8ZH4vYjtvJj42aXxbe2pgVm06PSJ+VF86NGg5amAkU2RxZS5WXUQ7QF5VWj81R3grXk5QTHlJejNNVSNTbWllUkko''@;'; put 'put ''d3s8dTwvXTNVOSJCOy4ibD1tanp3dHguNV5mLHYyIksrTjt6bGdBTjs3LzddUGVkPS9zZFtwejdgXU0mMlUycjMrK3V8W0RpeHM3fWNvS1N2akp3fHxufDRuRyM8dFN+fjNZYyR5dnxQNGBnWzBMWmxofiUrWUgmOktycygmK1ZMKldHK3dWME93aT9ARnBAWl40JFN3Zk9qT05pR1gyMlJeQ0pn''@;'; put 'put ''Tk5ifS8lbD17UEA1azN6YlRDMVpuKz48YGFCKk9RWEVyMiZkIUEjUnFJQ0VFbU5IQyQhWDB0cHczJWFXVCJfJD8xNG06ampITV5AU3Vpb104Xlo5bnNLOV8wbjcjJFE4QU5bV3hYZT4yOFgmVT4oem10JThBWUYvJjpTZH40V3wwWDFyLCYhaGsyPWwmQjx8a1BqPCNJSWUqcnJ0X0lJWnFTekN9''@;'; put 'put ''ZVgjTVtWPEJ8a0duVFVJeklWNCpQdFEiREgzfEdkOl5AM3B9cWszeDZzTUgwMFImS1lyeSZMP350KFpiZHxBNDtRfkp+SEFiYSs5N3o5VlU4TFh8UUgrImx1X0QoWCtxKFRxK348PS9LaTRGd2xMS0xBZWdddTsvdVJeP2pYWiNEaUxCMUlJJk49W2ZeWUJJd29DbnF1djg9XjZsUVApWmZNaD9S''@;'; put 'put ''MitjdzRvdzdKdFQ5dF1Jc05mW3tyLD11aksmTjtdRHtQSC5Pb2Fifm81aE4ibTZTOV5gZiFTRmohcU9SWnVTL35HUEM1VFZfLDA/Umo+cVdabn5mPix9dk98figuWj46MWVTeE54QSl9dCg+XyFrdT4wbW1TN3VwUGVyRUBCfXNnUmsvfWwjQkl7dEIlVWZMY05Ncl5PbXJLWCpaaUpCemt0SSFJ''@;'; put 'put ''IUk7dWEzIlVYPFBDKjdoYlRLPSVwRDp0XlAyV3pfbU9xK3M8Pm45aX4lfEhMckhMOThNTmAxfkRlOnE9KEhQdVVwOzNnI0FpbTFDakAkcTZrRXg1NlY7eH1qUT94YGhDI3syVSZGdkxPQkQkT3g1UFs2KnVVOHhofS54KTlaSltiIU5qNTF0eDsxNS59P0gxaFJvWXhSX3B8RkkmPWBVdWpNd1dC''@;'; put 'put ''fXtVKEh4RT9ITEtJcjhRRShEL11PNHREZFVoUyFqa3I8ajF9dTcjej5IRFVqQVc2YEMqcUlpbCw7V3FLcCwpZmJoeHlpaDE/VHB4YXZIM3leS0tiUjNoNkArTUZOOyhZN0A6Pj8+V0Z0MWokcmgpX11sNU1JfEZWcERaLHZYcGZUbitnYW9OVG1VZz97T0dyIURyYzRrfCQ4alRWTFIqX2RTJGR+''@;'; put 'put ''RiNvYiUxZEAwSCVaPH1RTGtjeXwxfDAjTXomWyhKcmZFcEpHVWdaM1IhNz9vSDNqeSY1fXUsKDNTVEtCUW1HdFlqdHBQaTlQOCQ9KGVHcnMwIl4zWD1fMilqWE5nP2csRFhAWywqMkJYdjMuMjp0IkhvciU4emlSa1hjcSkyVz5DSWtCOX4wX0c+Jkw2YmJjeHwmdW4rOUZCTV54ZyJRKHBCYzhk''@;'; put 'put ''U1peOGlDeXxJVFteblJAO3NCeyN3ZFl1TCtjMF8oOiErWEw8UUxOIlFCezl5Yjc1KVtNRmFfVEAkOTUiJXMhJiVjQmdEe3Z5KCYiNDEmdCx1VWpuRE1IV1tWa3B3W1FJeVdVa2VkJXw9eXw5bGRubGU2ZlUuWTZrMTZALkhXTF9YYGVtIVkieHpCU096KnE0M31jeE5Bb2FXRXN7R1lpRzVUYCQh''@;'; put 'put ''OltKRlArK2dCS2Bgc3I8V3BibDsseDhqWSVfczMhXXxWPDk5MDc0Nl9jRD81bHEvRjk5Z0hESlo+N1oheEsjLnRxQ2B0fi99T25FelRbMz0kJDRoeGIrKWw2SjR2OG5WaH5Bb1JrInhJM1FjPH5WdFA0eUtuPWRTdWhrTTtDR0pFen5qemk0WnZtZiM8bHh7KX1wb3hBSWo+fSFiaTlDayRUR19A''@;'; put 'put ''MDFfMX58LlYufVFecVE1KU06WW1TZ0lbcl8rdGBFVi46a2h9MT8yUG9uPCFteE1+RiZNdHhEPV1rKVRDelt6N2ttOVF7ZUhDJGRYJUpCPHloISteNzskb090fXNCWlJvRmtCLFtsMFVUTzcjUEo/UlYiK0UveEdYOzpWNF9SRThOYThPd2deVDpxWj1LQiJSbllpU01mSH1AYSFxKVh2UVJANSI/''@;'; put 'put ''akthcSFja0JCXWQhaWVmcUk5fSRRIndEJCRbbEt3YzxPWnJlfD9efjgqYzp5UHM2L1g2bnh6L2l2dUY8S1R6T3ZpflJfSDZwIjZDfXhgTDJVd31lVzhvIyxxLHo9QnVMKWthQzMhZ1d8NEB0Xm9fRkdiRCVqaik6eDJ3ZlEpe1RyPWJQNEhIYTF0RVtyNDZIaWs+eihVfmMxMSw4YV5ZMiN9RkRX''@;'; put 'put ''ISNVZGxieDJIQFJKfDNlSltpM0BIJXJUIiR0cmdLRksrcGdDaVJ0YCZLb1RMUEFBZHpNV1tKPzFZODBNKkp6NkkwSVVVR25sR0QpSVJiPlNGa3kzTCUme2MwbWhIaX1FLDduSTlRZWVbYntHWnJrQkZZZHB8YV94b0IwMStOYVtJO1lBMXByPzAsZi9sQUNiU3I3IT1HUmtRK3s7fnEwcmZYd11v''@;'; put 'put ''Klp9dSU4flBib15aSWU9KFI/WUp3e0hCZDoiOTkzUmg9dylJZ1Y7VytrcHxBP3IwZjVzMSMyViY9anBFOj9uNjdTfXQzJUsyIWcmU3RCcE9ZQEpiQEgycHxQYFVvd3p0IjNXUn00R05xW3Vkfn1zXTV1c2RnaTp8WixvSD0qfTErWFc7XWBoNDw5T2wmellFRGh+Qjh6fCI8KGJjPXZIR1BaYEhK''@;'; put 'put ''eE1gK2dpPD9vW0xxUHZJQjwxbispeywjUFVZRy5ieSNLM0s+c0dOdUhxKUludGZ5aUpSWjtnRX4iVmskRFN7UjchWSZLY3d2SmIrK2I8fnoqJCx1c3IxKF5CfVQ4a1MzWFFQaHFNQ3pReXcuS0k8YHhtUUFxSU5fVkxbanhvWjh8T00rSE1eWXsuPE9ZPiRhZzZQbzViekBwfDBVbzZIVjZ2fTNY''@;'; put 'put ''YVVfYDdCRiVlXmskKUQiYS5XeixFdFdsTUpeI0t6c3YwLDdPRCNGTk1nbzwleXl9RFFxYCRfRVpdWCptMi9sbCtdK2pZYXBIZF9CXWVQMSl6KnssKE1Ra2pLW0lKNDFEOlgpKVlvVCJQSzRGZCNUakYjamI+PXY4TX5DbEZhZj91MyJwbjFKalpxanwvXjpWSTpCeD81JSo1MlA7fGQxLHA4Lj1P''@;'; put 'put ''M1tkS0psWVV1PXhrcmlBdX5tN0BaUkd4Y1RPUDdiYl8jIlFPTyxjKzh0OThdPlhKL2d2US4wdWgzdEBhSW9OeUpIQndML3woLmh6YXkucW0kZlVYUioqI0xsOjBAb1hsQl1JQzYqKjU+L1QqYyh6MSU9dHVxWUhnXW1sIzM5RC8hOV88bHRjbExrfj0ybWF+TUhpWFRebUgySVpjLndseWE4SDZH''@;'; put 'put ''K1lyeHVqXSV8SzJMXk47N3tbNCV8Rkt4Ujx4OSlnUWl7XmFfWEpVYHNaW3lAbEc5KHRye11aam9beSIoXXh8fCMufnQ5JHNFJUdmMFBvUjtZcjQqJE9tR2k9WHs5Z15dLz4xdGxyJVhCIkIiZCZmaGU7ZiNeRlNtcm5mTjpuYVsjfiFjIkBiKT1CX2FgKHlbenBDfWV2VTc8VH5xek94Y3gxU1p+''@;'; put 'put ''S357X2BmWG8iZ1I4b1J2U2M3TyEvY11lVXJLPzEqTixoPm5hMzZ4MFpoRWI+cj1jR0RULmBPWkIpQitHNkQ5VUhMQ3Z0YCxTQ1Updz4mUCV3L0YuWmowZE9vUTJqRjdVM05KfElNZmlKUm9lSGlHZDphU3x4PEIqPUk8YVUwak5JVTx2e2xJYmErPSxKJU1Vd1V7QCxkVzwqeHxiMjw9Z2BkKmFI''@;'; put 'put ''Tn1dRm9ISjZ1OG4xZ2JNX0E0PTB7Mm9gfWEjLyRRO0h0PCt0S2BKKnpjRlJaZkRqQDtbbH0waEomfDdqYzswfFFET2dDWkBCL10rO2piTzAuRVRXVzFHN0I2TVkveitJPG0lMWpkfXk+N2lGY0VWTiw2NH1VbWc5KnAsUlleSWlBUWljaDVbN1A1S1g7WVV4QW1RLk9Nd3I7WzlHZiYlbkRla1pt''@;'; put 'put ''Z0NEcn5DOXlMdlgkeUh1Mj1xY1cmXlh+N0F4ITBqaG9oQSJHXWNoel5sOXJiSmdQVCw6anZ1ZzhxSFV8NCJlMj9WKW1ESSZwQn1gcDREU35odElVeVtXdHMzamdSYyEycldZSiF4V2NtJGNReyYrd1IkUU09U2p7eEFOJk89Pm1xLjFgQko/YkhfV18rK2lITClCQWUxKDZObD58eEFhdmloIzhW''@;'; put 'put ''Vj5rTko9UnVmJWw3cSV+X04hfV43RCUlcz8hWUptc2JKfiN0aHFoW3wrX3hkZHA6aVpuMGJ7Qy8mQVUjLE1DOHVbcGhvMXM1dyhmMlBqKTJ3Wyl5T1pBdXtvaGY6a1UlQTV+R2E5KGJAKmE6RGBueGEoaG1AIVY8SXwjcitfTn02XXhVXitrI2NmIVkqLGVPMzo/VT5CWzhTZ0ouaU5SZkUqMDZp''@;'; put 'put ''QX1VZCV9Q0xsZTZJVmJHNnlQL31FOSRPKEUjKnZ6dTleO1FnLmxKOHpIYFVjPC4pX0c2UE8rOzo0VVh5N35xcCZHYig4YVQ0Qj4mJSpAR3JzIV5SUz5nVjMoKjBfWkBOY0skeC4yRFNiPyw0VDorLiYxUGl9L1pRJVRXJkVxITRfal9IcX5zW1YzXn5HT058aVVPbnsuRyUhSVo5MSNNMVg0Pkcz''@;'; put 'put ''dUAxUU5nMDt4MlE4Zih3MVhuZHtFQzRONyMuIlZhIlByLGh6VT9BcT1pdiFubDFNbitbJEsiVm8xcGZlKixXQnhiXV4mZ05KRSpUdkw1cztJbEljQEtVKisjYHhhJH5QKmUoUmpGZUdtbz9WSnJAK1pINzNuSixVSiFQOzxtaFI2JS56ak58OzlDY0svKTsqZXV1UVFrNENqelcxWHhbdn5IS3M+''@;'; put 'put ''Y2R6c1AqMz1RPEZtVj5oa3wjfTdSQFkocCw3dnBSTn1dMjFbd0lOVExxV3g6JmlHe1NYNz01flE1WkRkZHR0VU1dd2U2bCFUP3c+eH54OWtmRl4sQnVZe3p0NTJPMCNOWTpmZ3E8Y0tbbl9pTGEvcHVlIjI8bnJlLFl3NlE6fi4jdyROS3sqb00veEZsOEssYDkua3B6MlN7fkhsQyNoKH5XZnU5''@;'; put 'put ''TXpGVzFZIXlPUSthRVh4Ol8veWhRfX5LVEBZaCM4ZFk1TDQ3eXJSdVo9YHYwJm81bmFmYklkMXtXcGg1ZF5MeigsdURBP3xuaXMpKnc3OytXTil0eSVoI35XTSRKMV5bbzpJMFRYPU1IWDZnO1QoIzQxOkFwM1VhfSxuUmJSWElVe1trPV1TJSQqaFJXdUBeKUdiP1k9dDFpLHl1ZEFCYVMwI3pb''@;'; put 'put ''X0VxNEh2R1JWQzw2UTslUSg8TTYoOlMyWWU0fWI3Xnd+eip9UF02biRNMXBwQDgoTmU5Q1Y7cjJlRnppZThuSkApJmxGRTk7RXUmcF50K1hKVThaN1I/PT16TEV7Xy5iZ0lWb2ZsS3Emd0htKkBbflYrL21eLk1wKkBDNWFle0UlOmh+YGhMdDVgdWlwZEJiVlEsL0drfT1gXytLPXoxW3Q6eVJD''@;'; put 'put ''YCNlKEUqWlI3ZG1BflQqWW02IWtfJmEmM31ldE00ITM1N10reU8vTFJRX2BReiRvZXM/KDxzLz5hPHszSC5RaCYsJC9TZXpsNTtPLEBTXkZIPFVIZSQoY11qXSV1YlQkbUteOXs8cXgvP0kmSWpAM0hAUT9+WFVFdzJXSno4Y11DaUtjTCVDc34/QXAraVttUzV4I11EZUQpPGFXKjxVWXRHYlg9''@;'; put 'put ''aGBJKixPRVFHT0R+VjpbMUM5QDU1UUZyNVJjVSljVnd5LmpER34sY0FwXypGTUxxX0gvVUY0enxva1YvSXBJcTJ2Oj5DRElIc1UuMmRbMDM6UUQrRmU2TXl5ViImc0pAVmdTcVZSfGFienI9c3g/TDYxTzw/aG1AIUlEcSRFMDp6cCkoZ3A4UEJgMT0rd0xnV0BuclhTSSgoe1NHTHA8MD0vSWpL''@;'; put 'put ''TXgwQVImZXVzYUJOKTY9UDo6Omg0V1lqeGhraCVWYiUlci5IQk1gSDd7bz9pWGJ3LFBMM3pMU0h2cDU4YlB2NHhdPykoUkslTT4lMCRnSUtxakgmIkxEN2RAVUpxRV8yaHZafCJKb3ZlOzEpUkwxU0lURHB7eC4mdUlsOVlLWVtpU14oTT5sPjtCbktZaVpUek1KciREQ1g5aX4+KDx5aVtMVkA7''@;'; put 'put ''dDtvT1Q4UmN7Pn4uZCJidlMsNjxdSEcpeiYmKmhzOF5KTGtBQUMjL2tgPDxud0JvJEpVSCFyVzdiaGFUeVVuaj10Vy4mTEx7RyUjdEQudH1aTTA2YHZibGw2fHBsXjJpUW5vLCtCaH53bkEydEU1RT8/T2x8JGVUQ3pHdnRoRzFJTTpGaFJscmVFOjM+I198ZnRjci98K0JQQnAvXyFybEk8eyJY''@;'; put 'put ''bHhHSC5DXnskPz41SlVDIyROb0N1bEw2fXM8dyZndVdhYzt8cTNPKX5YKSFEfVFCM2h0VTpbOlZGJUZGPjVJeldHWlBrbWNqYjRwfG18OitNeCE2T1cmJDp9a1d8QlpnQlU+MEo7V3t7ZTBPeSJNcEhJaU9oZTgpM3ZKXiZAKmpnfiNEREd7cXRkbz1GWUBLYndRNT5NWDI7YGlZJVdWQXN2UiY0''@;'; put 'put ''RXc7RE9VdWlqM3EuJn46XnQ2LCgjMEY/TVtfIVpPLzloJF5Vc2dESEZrdEpjMktFSUBJNHdfI0IrNVY/RlM5dnRydlovMmh9NGdpVzYvaklUa0FUUW9gbG9nRVY+OkB7fGlyeE55andGSyozUzZ6Vy99NGJxWH0iIlU3Iyp2Lk83IkQ6RSpqZUNLfFFTTGRILEdHekRfQ1NgKjEkfHh0cnohJjQy''@;'; put 'put ''VlB1Xmd1MFJFeW8pIVV0b2Aqd0ZtPVVWMz5YaDRjNUtLXiM5JDRBOWYhYVRNNk0xL2gmdUJrTng1X2o/fTw/RncsIXVbS3pMP05oJHZCTCxiNytbekRTeWRFOmQoJCFnb0pvQTUjfVAwdnx0Y21nKCltTj90Qz5LR3tfQiNKfUVbOCZid3NmRHgpRXtJTUwkbCw0LzFYV35oOEY1cEwxX2wiY1NY''@;'; put 'put ''RlZnZEhZViVoPVNUKzZSNGsqZnVEa1FdM21De3dLPEhGTXJUZ19tN3BwQk5ESX0wcW1nUS9gdUA6dFNodkFTVlJQNUpoJXVgOyh3PzVnSXphLClZYEVjVUQwU1VzKXJVMihSVUl8TjB4X2pDTTw8LmlCXjB7PzI6NEZYJEBJcSFWQldqe35Hd3gvb05oeFAhT2hvQWdFTnw9JDhZa0k/JG50NEB5''@;'; put 'put ''KXd+JjV9KCVlKlB+UGF+SF12ZS9RPCwwP0hfMUV1P3BZQ11qWilvc3N8YWw5SihjM3kpblQ1ejROLj1HJGZIaC5aQnEwdjxnKkgpNWB6ZDBfPzdSeFVSQCsiKy50UmQ4SXUxNm5WKDFrZCVUJHJ2VmJGZDIjMjc0XSMjaDJCOE9CLDt6LFk3RXRMQmFBVENiYmN1OXxxQDxgQGNtTUtJQS44ZDR+''@;'; put 'put ''P3oudGM6JXBPa0kuYHluKzAwfTVBXn45aypnRDBSNVdGYVRQanY2WEhLVGssVHVZVyZZUio6d247WzwxMkx1JlhAPEMseU86fXQreCokd1tiV1NOS1k/dF49YGtpMklVTXUrO2hBdTIqd2BtMUFrWFEiRTB0dXZ9YS5lb3hmXm9fR1QzfUNENEhLaSZ0e0R6ZnhtUyxdenp0MypzeGtRRGd3KnBL''@;'; put 'put ''LDovPH18RypOWHpZfmFLNVs9aENydC81NEJoIW5leEs/UXAyJiMiKnFDV1BtZVllJUZLYCJ1SDA4RnZzVFhsPyhtJnxSSUkpWF9RYmRbeUR3QzhAZmAwPTkuUDNhMj9ZRFNDJSZlJUt2SlVeUSpacGFeVmdoPU8hS2M2OHBiNX4zfSp7VjI0UUVkcEZCP2dTLGZifilGbjxZYDJrQH5CMW5BYjM1''@;'; put 'put ''UzpsOFthJl9FbV9HanJkOSQxX1NqdXghLC9jXUwpSi5gNT9BRDYlZ3cmfi86NGksKHV7WjN5XkVQaztyYGdHTjhkQSwxMkJJe2U7WmBRZm8lLHdVI0c8KV8lQ0lkP3MsWUAhVjJVOEVQa3FqKnE5dGQ5Y3B8ODlLNmtReCN1alApVVJlPnB5Jl9tSTdtMUZHfGlbS1tsVitxTSNPNVBgeFQwLj8h''@;'; put 'put ''Z2pNW01AKT9JNlhuS1J6bHx5JWZ1bmpqcGU+M15vNSp9Pz9tUDVSaldDVVB8fktJLkxRaHFqUVQ+JWZQbHVMOEl5VDk2dlVMOyU5UlluTUd5c1MoJDAiO0A4OClkcFZscFRURzR7IloreFZUMkYkVDBfNEdJMElzbDtELmFJTV8mQVEkcHt7UDBybixkblg/PG8vbW4hQFtySXgpcmwwQjR+W2xp''@;'; put 'put ''eyx4clQuKkspIzQhV0ReNmdXZHxeXVZeeWcrTlpYdyUmV10yeXVCLGFLVShnNGxLSjUscUYrVSRbelEzVSRBIUUiMDdrb0MxMlsoeUJQXmVDU0U1dFFQO0IyRVAwLik9TTlbTnZCJkhNUChXS3YoY0sscjkvbUdZWTh7UUZuOD5wW08xckRzfWo+UGdTI182UDNyeTUqW1I3cWdsUn5oQ0YpRi8w''@;'; put 'put ''Y2tOR2soNTk9RH5+ZmxUajxGVlgyezM9Y2l1SH44OGtIYU96MS5ZW1g1QyVLPHxIPERAW2xweUdEeyRfZTxiVE5ZLnx9djJlWCskVSVsN0pNOlNoV0skS2NbWUlMKzU5dGh3ODJZRW90Xm5gNlFjeVI6W0B2bXFeYjVjbH5vNEEvOVg1aCF0Qyw3eForPkNwbHAxLypyPU9xbGdLPno1TkJ0WkRt''@;'; put 'put ''XVNhR0tFXTA1LFtUcDhvNFZLZ0B4XVNWTjxhKHBCZHh2K1A7YiFwZTZJaGYyTVpaMHdMUzVYaExOcyZTaGkySitddFh6SjZkaFF1K1UrZzkjXWxWcGo3ME1SW2MqQiVzOkUjaiomcCF2Q0pLIVpRI31ZZXkvXmkud0xOdlV6aGdsKjM1fCs0T2JFZVYzc2VvZlAjNy4zaTwoc2pQTTFkRGBWX083''@;'; put 'put ''KnIyeVFNJSQhUEdOZHQuXjpeeCgzLGQyVk1SK1ZMWSFCc1smcjJSKyV3dWw4MkorIT9mMlIrTyhlI1FHVjZJWiJkaGxwXnBkRGBtMHFNI2xuMS5PU1QsfCglPl1keFtqaVkrPXM+XjY3ZG5wZ18oZEZtTFZiY2l0NXRRRm1NI2x3S1RUfkIpOHlWfUUhYTI2QyVrPyo8Ojg/W01Lci9xVW1tODIu''@;'; put 'put ''bkJUPUc9NDpPKkhedHFnKE5ONSxHeGN3cVU3bWwpU2YuQDVQNyNfXlBnREQlNF8mU30hJSN+ZFU2SG1TaDZkZ0p2SjtkTCFneno8eTY+LnEobH5JRm4uIWx+OG85XiFnUzJkfCZQM0dXWzEyQWdEeWN0Yzoybi9PZGhedFJgSk1OODldbHMye3ZSc05PJF14N0lFQlE7TnRoTH1LaChlRE5JR3oh''@;'; put 'put ''VEhqMVE6UWNIflFXd1ZHNmM1Jm9UMz9URHVhe0p+JWciZz0ze2Y4W3I1ciV1OjQxMyFlX05oRypUS1c2aXZRK3RZS2xoMjNCV3d2JUIzUlZzMlFbOzM3QzdHP1RkaH5yN0ZEPFMzM0Q0VzRtLjomS3NDb3BlMihuYWk0aG4oUH0vSl9sfj5TMHUhLFVDKG5LUE9BaiJIX2piVVghKWRDO1VUdGVx''@;'; put 'put ''UT4hOjthRXFbYz5GaU9YQGwvT0NyZSlWRk5deiNkPVk6ei4jUEp4fUs6LFVFW3JHcCNLfktJWytFV1hLTFloQmxQZmNFZiF3NV5XXyFBO3ExMTdQaTJaaDVWK2BwXXp8eXRUR14mYWpCUj8qWU4iKVBnQkwlSlMpQ1ZgT35OfTpzP2JIQGJrP35sS3RdbHJnayg5ZEVBZFVsfCZiUkNhQldEU1RN''@;'; put 'put ''dmpTTDozY3t7YEQyMEtTVDZrSklAWVgvQzNRdEQ9TEhiKm5TSyxsKX1oN1hpNDhTTUs7MktJJGMjV3o7UnZHXVEwL3UlL2g3clJ4eERaR2I4TWVDMW9Laz1CP2lxbz54anIjIU1VYjE8YnZVVSFec2lgLypEa3lEZUgiUF9VXTs3Ul52ezlWYFBAQ3FfNCpyanM3VnQrPmg3e0NtJXImJChAMS93''@;'; put 'put ''cTxoNk5uZkshPV8uZWBZWytNOixhY1dVMFdhOS4mcCtYazs0T2ZdYEZlSHl2UCopWnJCNVM0TGA/eVE6ZztCVEk7JVs0fGBbJHx5aHZaNyhEOXI8WXZGfGx1QTM5PElJPkdhImg2IXluYnt7YD5sTVUjZ1FmZnFtXX1VeS9yYW5TaV5aYiJGZjdzPXUyaSR9MjBuImI7VWA3Y0ZAQmcvWS5jM31C''@;'; put 'put ''QGRMVm5FVFhsOmpIYDdWYSF1I1lseSEybzUlMTlnX1lbJkYmSVF+LnR9QFUsKXM6eV0xMzQrZkpZVDRhWCtLeE5bJXdZJV9JUHEkX29dYEA7SXw/M1BHKDdfZ1ZZfCFdM1BFYyI2ayZYJmxLWWVQUyY/RiU1LmspOm5rcFJIWV1sJHNVWixQLlB2L1U0JTd6XyZtJCUkWXh0WXljPXAjallgKkph''@;'; put 'put ''VkIrZz9uXkFAWWZ2VXhEZm08NG9edDVgPz56fFleKVovez85aCYmTmR6QENfbT0ufF4zVUl5UWRGVGE/UXgyTVs0T31ISndMOkpAcGlkZDhkKCx4eiJ7dVZRUHtkbTA4Mi5kSEA7NzdhaHlNW1YlJltIMEc1KFVMNTc9UDFPWCs1UXApbjIwWXdkZEVYcmo5MmFjaF5wZEF0bmNtMD9kU2gxYSQ2''@;'; put 'put ''Q1RPWEk1dkwoUjFmendzP2E2OlUka3hdXiFCXTcsOXBZZlhjbHheZUU7LGFDUiIsTVI5Z1c6LmoqZmlRekdIKFs9RHRWNGl2JDN1OmBpMUFyekJiVm1FeS5CamFSbyVwISF6RHMucjc4IU5VPXhZQ3JARks0bns2YztJdzV6K2F0c2tKciltTTZXTElnUzFCZj93XzJIUV1vWF9Jb0dBNi4xV2ov''@;'; put 'put ''YzY+b3ZgQCZsJFszJHJTZV98P3JgY2EjOnNzNlhTUllKX3xqT1ssXUA/bj1QSzI6VlYpR01TOHJrWnxeRDM4fUw2PlZDUmZzMTd2NlI3YFBlQyphe3Yufjp5NlpGeyYpJVNlLylSeGo2YTZeQHp4KzQsLnUpWyFwdzdNNnI4Q3M+MSZ8IThsX0gqNzV7Q213JGpyZSREanJ6OXFFYW4qYXFKdXs3''@;'; put 'put ''XXV7Nzo4WGIiMFJkU0ZrLFJibWxRdUt3MjE+MyFSYltHeWwsP0wscz9XTFIpMCgsVTI2N2ouTjhYT2Q5Rjp0TW9AdHxgajdlQGpjODtQNWhMUlIyMy4ya3hgJXdFP05TXzM0NyE+d1JPfUczbUo/PDs2OH5qM2EqRlNuSDJud18mZy4rLiR5QmdpZWQpfFA1X2lfYD8pQW1lMCU0TlBnYGpqWTp1''@;'; put 'put ''PG4hbSEjXmJyfjt5akdhXjU+a0poSHpVMXUyVip0P193PXZtfF1uemYoRmNSfkd7Mnx6YFRoeD50PDMjXjd2I1ZJcVlPdXpJK2s8YTw2LHNZdWI7Q2Zia0dvT093Qlh0VEg8R3FNPj5bUH1lQXM+PnxfRFUqMHBDPGkraFo0PWcjMiw+PzkmRm1VaEhnUHtAdjFFcXwqaywpKlFKRD5IP0ttKT9f''@;'; put 'put ''OikrUXBxUT9fJUZuL2FtdzxYYFZHJmIxc3p+UFZaN18sWUlBaFdEcl9Ia2FWP3xxdzdrMDxPU0FFXVRHM2w4OCR5Izk0ZFF9eEJ+SGxEbjhCN3tAdFMjM1owKX09O21TT3E/KW5vJHxhX0dgb2hBfkQ7SWdMJj5ZLCJzMnNKQ0xRPExEQHJARll0ejlPak8jckQqKXQxL0Z7MmpNemk4YGVrTzxh''@;'; put 'put ''bSh1TGAzeXd1dHNIdTY/ey5CcjpjQGJtd3M3d0kpTEkmO1ZxRjxOMjNma2ZDcmhic28rN21tJEdBLz9dNTF3T3goXTlLdGsqe208P18pVTxlXzU1N1doM3xMK1M2dykrJWVJZ3JVMmg3O1ssNTVqUXgmTWJAOSZrPGFkV3lxSkRHK0Q6MDVNIjwjY2dtImg2IUkqUj9LWilPSDlvNWZPNmRnMihu''@;'; put 'put ''Qjt4LmU7SkdxOD1PO3peRzwjJnE/K3pDVT14JDdaWS40aiVfMWlJXyhrWGIqdzhVLyZ+UT9XLyxVNjY9YzJPJVliPTxraCRrZlJCeSxoe0BvWSp8eyZKdyYxYzBCKmpJW3FQcWxjOHxHX1glTjxkUnNYXWksXUhSWVYocXVMWzFvSDgxZXksdSQpWEh2fE9hIyFPSDQ4eE54RDBrJlczWGp2aDRi''@;'; put 'put ''WHh4aD8mVFpJKXUsV2FldTZ3K0A+LmdgSjklUWRIXk1SK1N+OVREI182SXpNdjthZFclfGF7LlQ/KiFQPWxLRnc3O0plc2dKZyouU2Urald5OyxtSWM0I0V7O2oubnsrIyVHVXN+ZzhtbS9JUD97S0p7USV8cWsxOCoiQ2VudGRRMldQfWRJIWVvTk5+Szg4dWYja0JWaUt4PyooI2ovQS95c15y''@;'; put 'put ''IyNQKkhKIXBudHNeaCpbV0ZdUk94b25SSnpRWTM3XkBaREJYeTMqemQyZk9sQEZJM3IoO0BkRX52TzBHNW9GKkc+LFU/bGFfdD9pUF17S18zWlg1KDpiTkxHaEtsbzcya2wpenZJbiFsPDhabktdKmUzR046NHBZKGxwSixpSGdjNmEsZkRBOS4+YnBufGJOfiEsYFtyW3dPI2A7filEdU9la0Fx''@;'; put 'put ''KFlKR2wjTipDKXVzIVFQV2JUOCFmJFRMbiI/Ul5mTnBiKVByIT5ZUFY4WEpeMjBmWml0LFtuX3pIWUBpOCE4OWdkWzk0bzwsJHxvLyNwZSZ4KXNtTzE3PzJzc114SV4sKkFpV304SWN6aiNTOlhaaldVMEQmMnlJXkJqOl1MOT4wc0kiciNmNXdNSG88PjdlamRMR0o3Qlo0alpoRlghWTRBJlkp''@;'; put 'put ''Vj1XYFIrRilacC5Eem5IV1c4M3Y+YkIuUXFmdGZ1VjEqd3dTUldbTm9FZXNmR0FDJVcpeDc+VF5XM1YlKEVeLE1bRWw2Wl5xenFIfkhDK3txe2RTJV4raHZwIVNVQH51RCU4eTxTSzM+K2h5V2huMmBpIzNxdGddLk5ZVkJbTmBlWDhdfUlbbGJ4VX0vT2BfI2k5SV0xMzgqd2V7RFBEQl1AWmJd''@;'; put 'put ''T0pRWiE7RS97ZV91MSxpbn15aFhiZkc2dyJOcz5USStaNU9hPU1TVTZwQH50Y3xBWS9eam88dE85U3N8XjBOVSFueDlwQU5CLkJAVm58MFd4VVs4eiNObVBKdyMuOjhNTyRoMV9ja3Rlcm9jZzNDV24qY0dOPkBQaywxfW1PM0IuQkArUityOD9peT8zX3JgVWJCRURjQGdEYz9STylHZjYrLCg7''@;'; put 'put ''ZjlzQ3dYQiU2aXdpNmRAWDVWdVh8RlhhWHsmZ1N2eitQeHQ1bE5pWV9WPVp1XUE1ZFkpcTI7KmgsVlk8MnY2P2FBbSRicC9YKUAuRzF3IixoMmkqMCxtZUopaWV0Pj56Tl9rWCJUbUglSTQ1SnU/fH0md2VWbSJvPWsvamYkbjVYYFYkOz13QGl5UkdxKyNtLGFxbzEmWS8kaG8kVzskbyQlaTdM''@;'; put 'put ''bTo4S3o/X0IrY3tUMTl3XmUwKmlycVtMK15jRGlZbj8sVmVacG81cFplOl8rZy9waCZYOWo3MVNVQ1szYXcmXzNeNUdxMHM6SlBsNnpyZ3U4R0hSZWAsc2cieGBTeCxCMnQuLiRoQ0JRZy4/cEE8Vm0+a0RJNkwsSH0xemFzXT5STFp+fGUxMk15bDxlQjg0YXgxKFV9ZVtnIWdOZTE1S2lrby5Z''@;'; put 'put ''ZjNFeFN6M0NSdSNYJSlMJWJ6YXpOZ3ouPWhmRStISGV2Jjl7RXs0LDpnXnk0KUwlNE1vR3JAcUksLDU8LFQ4V252TX5fNi93RlYkJnZHODFrUURoTik0PFJ+bUxBelpONXhSRn5BV3RlZU5YdXEockQqLEIzNHNKW15XVS5RXThkNm9nUXFhZj5yOVJJR1ZLVixFLihlVjU4fXBMI3t4aH0hImV4''@;'; put 'put ''dTdoLEA5XWolPkBeNWoxREQ1djlHVjZ0SC8kMjNeWU5TPWcwXXtwVUYxbTxwWCFIOnw+M0ZhVzNMTlMiUl4xKnEmJT8lbDJaa3RWOWV0bz8xSElHX0QhV2h2SC9ycjZCTWlJREdBXjtRR001O1B3MllHWnpWVHhNeUF3OCVpcEplT1BMO2V5cXZROF8lT3ltb0NNXW1pUTh6ODs5LGZabXJVKWtt''@;'; put 'put ''IkRoU2p4dlJoWGAzfnx0Lms1UmJsNngpPz9rNnIqe19EP1NUOnciNUVJP2lSL0Uxckcvez9gT2VbWiVsOj8qfmxIQld2Qk89cmldVG95eUE9Pjgreyg5PVdXVkY9LE5rYjdOa193RStjVHRkQjNJLzpuPmtRMmVufk5OM2liQTAkZHhvT2JiL2tjaS5jdkM1fGJjKiRkZzVYYixLLHUjd3VHKnVA''@;'; put 'put ''dG9eJlV1d2tvSTtwdkl+NS5CS1lBWVsiN3I1dGZ5V0RqdF5jJEc8SDk4R3s7PktBSHFUby5KdEcrZm5KPWledjV3SE07dTxOYjdgfXpoemIkNmAzR0FVVm0rbkFhQW1HRWpNISM1LGomYCVedGR0PnA+QnI8UGQ+KzVvbzNhMmleYC9+fCZjSTklT1liO1lnJW9sL1JJOGt5fSQ6PFE7NGNPKk5i''@;'; put 'put ''NCVZYkdpN1p3NWN1V1puM1pKeHYxTTsyQlRgQGY/aEJSMmhWQlBeYTYzbWdNZi40fTk8aURqOzJhST1URXNfS08qRH5HQ0I2eX5ARUQrRTJ1JDNlYzRjY1g4OmZBQDxVbnlBMHpKfFYwXTRIbGwsaWcxSjA2NkduNCU7Q2Y4VGFLaVQkekxyQ0RtNSRyQ2wkYy4wRyIzPzQ7WkdUIW49c25tbGVy''@;'; put 'put ''cDBeYnt4VFFNOi8pfCFJWDp5d1Z6eCFmNiQ2bnZuey9ELFhTa2pZal1IP3BUKDx0b3VlVSxIRiFRSW1DM0tmPiw1YC5iQVRqNjh1YGROLkhAV1VJQFZgOjsyYmFVPnN1ZyJyVEdsWV8vU2kjeFc4fEo/WXJLaitFN158Si58Z2hVbyRmdWhEaGleWEx9ZiokOnRPa2NMJSFEXUV+S2JwPWxWPTR4''@;'; put 'put ''KyluVGppbSxEdkg9by99NkdzaEEpcmNGYzJAW2JKQy9fRilJZTlPKmxeQjwzfCZQOHVYc1BkMnNaJThLJkkoLnVbfXZBL2tsOGBWS2BZTCtRSkRBcWlKSUVqNDUkR3BxXiR1Y1ghNWAxOCRkUUNbOndKLEh1d09odGl9YltKfmUiNmxKJkd6TVZ5WiY9JFsoWClCVClEXnFCS0cyT2VWZ0ZSY3Ay''@;'; put 'put ''IUI4M3VYYnM5eX41Ri4zfmA5THRxeTJIWUZAO1d8Yi90bl1DOT1QRncuZjlhNyFAI3J9Wzgpaks8SVMqSFQhdkNyNThRPHQmUnl4Sz8iR3dSTStbbEpBIyNDUEZ3TjVteHReKS5gPTtuXlRCO0tLKmNwUCwvXXQwNklmfk4vPEU1SThyVzt8fXdtUjtfUG8pOCZUKF8yKzNPYDJpfHhSfk5qeG53''@;'; put 'put ''P0xvPUFBfFYxaTExM2w/PylLVz1KT35mNCt4ZlYmaWMlNT4zSFNoY2JhVHdnRl5yTmxhMX0qY0syNC54PSlHVHBIWGwmbkdRU2hSM10mNEFQbDhwUGpGIWV4OWM4bX1WTUBHVFAhO2FiVVdTQT96LGt2JW1leDpdNGdJInI2cmxsbyF4R29HOHkoKStFLlJ3JnIpKShDKE00NFpMbFNzZSJNLFRY''@;'; put 'put ''WTYrenl8eTBkcUcyIXd2ImI0LClfOzZXVjVgWHtOLiRbLE4kYXNiNjY4VC9WQHZzejc8fDszfFchU2BeYURtfW0ub3JJMD12dzBIbktQI3NmP28wLkdWVylWcT1bZ1k+KEVvZ0IvZVB5LFVQKWpLbk9RR18+SEQ+b3RfZVtSMXUyKWcwT3pNRU42NjtANDk8MHUyPml6bnZde04wPSp8ezdiLk5b''@;'; put 'put ''IXFoRklwaj9rOHUwWWE+QDV3SXB7JnwmLFIlKmNRYHVuZ3EjNSxkXmcvOTIuW2YjL2dsUT93TUkkVnQmNiRuZEQ5SilGYG1bV1tLYm1aJnhuZ2pxTSlWdCphMUVnSjs7Ji59eDJXMlY6cnpsckVCNkprXmlqTyxrUkpZKkc9I25ub1U8NXhKRzA+MXZsRWYwNWt7YSpUYVFIMCsqPTVMPD5lOikp''@;'; put 'put ''djlxVGooPHxrS3xhVTZgMUg9fTpWcmg3IzA4L19MIWh9Jnd1S08jSndLLn50bi9qdj9ecVZHIntWNWAmYD8yVj44OC5jcG9JN0JNZUo3W0BIRTZMa2pySlB3N3ZKd3hPTF91YE9EZyRJOklwcT5JdGQyJn0idih9Ujc1UWhHOzAzZEd5cGVrb3Y2P3NwdndjcHpbU01ZNT5UViEhYElIQyppfFRw''@;'; put 'put ''Slk3SElMYSgqakwkW3h2PVRGS1lFZ3Elc0FPZWkvPixsfT9qT1tQbjF3NyxEfSpWcCZzW2JJdWg4SXdta2huQiIzRThKaFE8P2Q/fSQyWFdDRWM1MFFBPDYrbUhYWVkuTjAoeX45NTxnJm9FWSpOdWgpfDtzWW1IU3h3MjJ8RG1PJD1pQ3dSUlgjOlJgMz8oNER2bVh1LGQuXykuVGVdWzEsVjg5''@;'; put 'put ''MnMxXmNQPWleQjgzb1tYN3M8d2M4dCZiRnIrNVtaKnNwNjFIK1JMcm1TSiRrblBpLiJkUTs4VStjWU1ecj03YmprKnt5RDc3RnRkRDhiKncmMjtNdFhiQE4iWjB3WUp2ZSJWcEhUaSQ2Llp9eiZFa0kjVlgpdEJCOTZAbzVBUCE5ZjlBZUc4OFEsdDd1Lkw7fGI7XVd5MnYoNDNedTVpa3Rybjsv''@;'; put 'put ''SEY2cjA2YWw6VlA2ZmwwUUZQS0d8VlFnNitVK053OnxLcX00fT0sVHl8P3IqYyJWJXQ2P21yL0JCVHZhO1Y9S0RHSThMOXJORyEzMnV5Yi9rSGZaQnRLTGR6JTJwL1ZxS3khKHFWJVJEIko/X0UzKzs/O2E1cGxWLFhobFpkclNsS2YwP25HeXA6L0UuTzhZIlBtVFVSMW1qP35tUDlmPTUsfEpG''@;'; put 'put ''TF0rSHltbnkmKjgoUEEuO0o6NG51Lzx3dVpLdk0/e1VocDYjOWgmJGQrY1FVLnU/WUNIOW1MP34+fGc9ampZQz1dSkpKTzM2bmR6T1sqViksVGBuTkpMZT9qNzFhZGUmeGM2eClZSCFeP19fZEtpVCRFW1dLVlEhcD1tSHxSek14YGw9JXRPamBraWMxR0p2WlUpLj1ZOHBjXVc6Piw1Vl5iYE5R''@;'; put 'put ''fUU7IjdyTDshZG0kL0kvTGlQKiRIJVtPIXVDOG0ieSgjKWNaJlU/WjxjOjQ0eCspN0hDVlF4W30jfSRvckdlOk5yNkZ7XXh+LkljXjhSUU0yNmY6byQ6dDd+dHYoVGFwa0YzOTFdUmZUUklefjlIZn4sdyheel0lW3Q3cTcsJWJhMztDYG9UVFJvJDJOTDJfLjN4RlVvXkBMMXJHa2EhXV5OLHBN''@;'; put 'put ''LFY6eW0qe2dMbVA/ZTg3K0x9WHM5fFVIISs/PkBNZU9IRjYoaWlqX3FpT0kiWExedjdwXTNITDRqTnIuOGl6ODtUbytfJDloRE19fDhoRCxEWyg5OT1QPWtlTF0oZF5QU0JMK1M/Pi4jZD1oUmV+eXJ6Tl0sISJNbnZSdHZeSl9YZXtfMzJ4ImJKIVA5fUtbImI5XVpHcyRCV2dOZTx8PiJZUX5R''@;'; put 'put ''ezIwOCRTTyZbTF5Nd2xnZSh1b3cxbixJfGA6O25zOilnRUl2JX5jcEQiY2dBei8yK31XSzU0JjE1VkNhcWBOfDZATmN1MTFoLkBTPCVaUyhnREw4RFNtN3N9Ii86Ri5+d0R4TWJYayNwb0I+cCxrcXFJaUMvTkFFYnZGXj5MKjdrZWVqVTlbIW5mSzp6I05eXT00Zkgrbkd+JDJZMmhjdD5xTkJ0''@;'; put 'put ''dj8uaEw1P3A+KFdVWW8mdHRvdyhpJCtAPnc2dnlKejU9fGw2L1B5cmVlO1klU0pGJDRAP1VCTihuYDZOWzMzUiEwWCh8R0NZWmJ6NT1iSkY6YWglakUoYj8oLD1PZmo1cFVoRUApVkVdPGhTfW1JaUJjIX10XnIwMD5nNnpRJD5AaXVQVjhXOCFlYyVbVDE7az4lKy9TZFdqdDhUPVhhai5FSExG''@;'; put 'put ''OFh9dDsqRTYqNGp0RD17MHw5XWlHS31YQDc1Y1JIKEImaj8hZlJxXV86Oyouaz83NnhBbGV4M1sscSl5IjFqQ2xLI3doSFBtd0U4T19GOyV9TntiL3RgKCZfYiY8ZWIwdzxIczZyVE8yKiVwdl1pJjsjcWBtOCsxeX5qP1YlTkFPdTtwO2UkZDNMTU1HIWRyZHNYaHpMel5jalZAe1lveUpgI3oy''@;'; put 'put ''O0JYV3R8YjpZdTI5TD4kVzhwREI7eUhFPChEbUg/Qk9nM3ckL3RAOWk3VUE7ZWh0eFN8SjR5TD5ydHZaSUM8QU1nPH1JW1JYdkU/Ryk1KXdfJUtNIVlqWGJPcWVqWiVYKl0sS2Y1Tk1FIjElWy9WYEpbVlZpVyxeM0B9IkxvS0NIXTsiUntocmxkZUxlSGZgWS9eeykwTDYyPXBoLGo/JEtSZkFe''@;'; put 'put ''RXxeQlUrZTNvKUc1cVs/UGdzbiksZytyNEYmaj92SS8xMXRzdFkkNlhiZXBtUX5LQiM/VENEaGYlREJdU1B1OjArZUhQbCxWcEBtc0JUe1ZUektKVEdIOE0rWjU6VnVwO09jWXxjbk9WZjxlVkVsOjI4NEV4STZObSNOJmhqSiZGblFWaXRNKSpMP1Rke2FoODV+LnU+bnE5IlRPRig5cX10LCZG''@;'; put 'put ''WCQhIj5HMz1CVT1jNUBNLk1YcChufFhxMSs/REk9S2QoaGlzInZPdTIofE5Fel1xTnJrL2F+al5MZVZEKWcqc3pEdTkwcWl2cEpxYV9pOy8sSytSZkBdSmApazhvMWxpWWl6bjZVSTlQcHlKaUpsOX1VKGdEez1tOGZSSmk4emc0QjFmJFU7cGB5YyVsOHA5X0w2WSFdfSZ3MWxgO0A+X3FdQiQ0''@;'; put 'put ''dGVtRzI8JWMlLmomIiFTNC5IRFB+Mj9oLFZvQ0kzUjVGNVA4KURYfEglKG9nR0thaElVRlQ2TXU8KX1mYllMTmtbaTBCaDQsUWlwOTRmcXBzNGhmPFJtMk5gNEpMYiFIRnw7TnMuUlhNSXAxfn5KRkchUzFxR11UPkB2QncxfUlCS0B0PnRhWG5wJXBBOSo2ZFYjZHFHKz5jJUBFNi9lOVRRZiRu''@;'; put 'put ''YzIveFFfeXIhaCtaQkN1UV5eWDNgWTl0X054KDV2bmBYaXleYDNHYFclS0RjVTd0eCpjbVImUGkuclkoK2V1JSNZW3phbDxWX1dnW1pla2lLM3d1KCpMZ3F5NnlNck9mLkt+L1VDQENgeHo9OXY8UDJtSDM5N0pMTmdfYmNUISQ7eVhudXklZjk8Q1FdOzkxNDF5c3s4V1s7cUR1aDVDfHxVUy5k''@;'; put 'put ''VndgME9FfmlqJmM4b29YXn19P2psJGp6a0s3Y0J3b29seWxvYH5NM2pCaFcwbktxQVVSUldhYFRDcT4hRGx2WFtNdmtBfG17VTY4SixjIlZIOE1mT3c9OE91cnF+ODByckwrPURHLnZ8RHtiVjhqSFcqIUA+cFdATnRxVnpISUIlW1M5W0ZEfHFgbD8xWkwuP3lRVlNFPXFYZmVGd08vVVZyMWpM''@;'; put 'put ''Z2FkKlF7RUlGWUY8OlkmLFQhNjpXUDByLmlUX0h3dndPdz82YEFvOnFLeSNkW1s1dH1TcG94ZXlgSCN1PCtjWlZ6dnIsSmZibEJtX2pDZWhePylHaVZEJEJBZD9jJmQwbCswb2l8eEJRXVc/ZEdkI3Q7OkpAPDcwTyQ8WklFKHlzZ14sYzNZI2BzMGJgWHFFLmc1OUMxZU53NFZKbSwlZWlPSD43''@;'; put 'put ''fSxtRTt7KVsmQzhGWjkrYUR5K0MkQl5FfGouWkUvXVgxV3BCVWMoVnVXXXQ1dFh3TkQkQmhLJVhPKnxofWh3WnhAUCgkRTJfTlJBYUtfcmAvUXZARUtATmJzdiQlJV01eVY2K20lWlYlaSUjQE19RmVSc2xfaipiTFp+ZF4qYnYxZiZKWGcvOEhKaUkoUCV1X2QwMlRRX25KdyJvKyV8KmZERmVE''@;'; put 'put ''OzJIY3BafGwsbF58My9kUVN8WGtFV0NERHlkInVRUks+PzhBRV5JYCwpLk87KmhuWlU1bzJ7dTQpUG1VME5HODN4NUNhe3Y3c3hwXkQ5OGwsS28+OVZIXTVXbVV8L0t1e1d4NU1uYHkxdiJ+Q2xfcFdjc1EqclhzIUkqUWBJZ0l0c3xsSSR1MTdxJDEkfWRMR1hmUjovY0hMTEh2T3M3XmRjPkNH''@;'; put 'put ''PypINWdJQjhBTTI4ckcsSXp8cT4sYyJWbllEN1oxKlJ9TTZdWTg2VTRCNW9MfXZKX3txRztiNFc/ciIsbkVAOFFoclFiTUwrLl08YVg+bTduRFV9dD9zLl51WmpmNWJSaioobmlZLCtMNU1pUjxeb2RnJkIuR3M/Rk0vaEliQUMoNChGeCgieXcwZ1lEUGk4Vzh7diRKbEQkMiFHaipQZ3E+Ujhf''@;'; put 'put ''MW9lfEQ5VFhsQXA7Q2cmd2lGT3JTa0sxS29oKi5PVzI3Uj9YQWVNNHZlMXFYSFkhM11fVF9kZjAvJGUlX2taVnNQWD0/Kktpc25QcX1tJFQuP2p2Zj8sQTErNCo4Ik0uVldNdTJeKXBzXkRRaXl1ITszcVlmRG9AVnxCIXZZZmUhTz44bngyOHNXeHdMWj9TSlFmPEk+e1VoZElHOndnYWFIRUVd''@;'; put 'put ''eXBaUTZZJnxTK1AmNFE3X01pVj0qZkdHeDJYel83QjtValRAPCFqNkp4Ul4zT3tbO2E4TE53Z0hXdSRMOFsyV3wvUW9SMmV6WFc+PC4kfnxbVnNmSUdRZzI6fUowTlhsJEpzPi8pYltVMzVCXihsUjVHM3BzPypqa3ZEVDw3OTVENDN0O2lkUCQyKz9hYnF6Lzx5U1liOXFXaFIpPEBfaiMsNSkv''@;'; put 'put ''UjpHQmt6YmlEN0lqeVp4Q2xbQHFSfihTZW0/O3xgNmQwXU86OXdtJCldITMyMF9TYGxQS2ltfF9TSHhgJn1iMTdqS3FTWDlvKylEc0kqfTpWJiosd2hjPyxwQHUheDJnXmxsV0lrU0wxUkwzNjA0PDdEZF5jUG81N0hvaWNDR3lzeFJPcj4rZk9HeS8lX0RJSnh7OV0lWkppfnYmOG8vYz4zMlpW''@;'; put 'put ''UDwxXlRVan54aVBOWV5iYTEjdj1FO0lUTUReOHRyJG44ZzI5SWkqRFl2dnYkMWExRThKWzBaWU4oXnJgVzFtS3smJiU+ZzozXVZ4MjImeyxzM20kdCVqMk46O1ohZnB6QlV8Jio2XWxxYUc1MDltcHtTSUZMZEohJW9iVEp5TFlrbEU2Qns1YnxaWlYsY1gyWlYrY2NSNks+cilRO2JXcCluLD9o''@;'; put 'put ''KDU1dixEPiZTRlo4ZlY9YyZKWTJkbyVmU04pKkAld0BxT1AiMVshVDVFVVkqQDxnKUA8KipwLCVkN29uUyF3TTRha04zZ1lpekpVb299T0l3MTwjaFAsd0RJYTd2L0wpdENNSyYvJmdTL1JqV2ptMkY5Nzs5WGh9XXA4dHIxKWYsPWtQPClAJj8+T011KXUzeDd2fFYudEx8PT8mckdma3J0ZC9p''@;'; put 'put ''NzZQPSZqMVldYmpJOzNiOkxsfHZVO0A/azIue3JWTTkuUztKQW4zQ0dKcTE9PDkqaDBvNzgzKlJGO0xPdXByJHYyMmkjOCo6fCEuJjdyMG46dGNZVFlRNnhsOV1td0hlLyRqOV48Kjh1MFByUWslVTA4PmdVenk3fFtOfDYldUhKOjYlTWw4ZjEycDNFJG4rbThCQlNsYDNleyJeZWRvdVRUT2Zl''@;'; put 'put ''UDFDRkt1YD5sSGpON154KXxWZkQ4bmo0d0x1LkU2I3Rpems1a3h4O0pCbTlIeU9+ZSlZSkp1OlUydit3JmFIZUhoTWxAYmxqSEkqLkp5Z313PmtAO3cpJWtaUTxZYnNEXSVQKTlqQ0hFSF1YUW52eCNBSyFZVSVDO0NuSV9MV147b31eby5KTVI9R31xfmIqZUE4TD84L1J5dilBM21CQnlHJVZF''@;'; put 'put ''cXJYaC95PHRGdSxtPmVARlB8ZE11SjlQfGI3QmVIIlBaUkR8Z3UucmJARnZiK2F3fDEobmA1PlU6MnVBRlY4OTc1KHckPXlhVlYySmZvXz9jRnt6X3J+Pm9Td0hHbjBaU0R8OzJoYGJyM0hmNlVVamtvQSF9VXldeCFjK053fHdtUzMvOmEqME1lXilPTmlLez9RdjN0RyYheUwqWF5TTUZedyFI''@;'; put 'put ''ODs3JXxBRzYlPmxOWW85WUQ8bH47UU4ze0g8NSZZalc7dzg4JWQyfmRHYHppJEhMOEU4OkBLWXdSYC5jK0hPayNlcmcvTl4kZDE7djokTXZ6W1ZsYk8+UzQvaGY2PEliMVNZVG1OWUJNM3Bie0xOVSY2JTB3OyFZT1plRVhtJikrSj9beWdkUjsvR2JZa0BOQFdoTVV+YkIle1BGcGFOIzFVeWwq''@;'; put 'put ''LzlRaEF1LFlFO15rS0h6bDEoaG1oMGJxRjl+Xig8VX5rNVdpIT8oPEZaTXVEOXM8Q2hUPkdzez1dITo9OE9bazN5cGVMIk59JC9dRjNFQHgwWVhRRE1zZXNLZUtPeFlHK2QmaVVlKD89a3svPVBQPixaU00uckpjU1AwLjdVc3g+eEEmdysqOShWMG0hL10lSD1kJERdbig3PyYhL1tIUSliREki''@;'; put 'put ''cihwL3VOc1d6ZS9Ga0VAKCM/a19vOCQoSm14WSYkcmVjUH0sfXxkV3p1TCp3QGp6ODRsSU5kP0hpNH0qZ1ZpMD5iOnNpNj5saSRkL24mMWgwU0NFVnpPeT4lYk9IZGR4NU1PWjwuejU7dk5WK10vaDhhd1pKKyk9JURdfkVjY2QsN3BrZU88N2JZajluc1VgXjRRJEpiYEhle2UiO3c/Zkwoekhz''@;'; put 'put ''TjowSmBWWG02P0M7P0lyekRWRGQ+QFs5RFl4NEB0TXxoLH5AZUhYX2NnQFJNUD9EeyZ5WGxUXWNvNFpqPyRAK21pZXMhanJGZk1VSXVmSHxpWlBoZWgoQEJpPmp8PmYuZE0hfnBGIzBSfndmflF2N15xP14xZi5GbjlacnRVPFN2aT5bRWFNMj99ZCVNOmVuO1N4YERnYT9YfTM8PWxtYE9RZ0NP''@;'; put 'put ''OW13d2w2e113LzExSDpLdigsTnZib0xQNWdjQ0xFQlJmbmJiUEBjKmRXdCowVzBoKkFCKjU3WGZCT1VVcWlLaVlVY1FzOVh6QkZYMChgeEpJJkMqNXY3dGN7KSRBSFUiRkZ0NHd+NzlQKSJdVntHfihtTFA1ZnYhKzQrbUVwcCZOQGM7THpMQ0NSbmxKUUdrSFU2Lmh0dUJNaF5qU1hLRk9ZZipn''@;'; put 'put ''NWQrOmxpQ2Q0Um9uQGMrOi9GZVpmZGJlQTx+TEhhcis3XyxHekIrbk10NHdmSjBLNG9vT2JELEIieUU2V0BxX3d3PEUybklCVUhyKy5bcFZ4WCRIUGQqZGJPWGUsREpHP2lPRyo1djdaRHhXYyk6KHtSfExQNUE4IUNib3BucDQzYzZGMWNBZVpCKUxSQ15IcHZ+V2NZR2QwUVlAclVRP19YN35+''@;'; put 'put ''ZjQwNiZGZCw5JG1obX1FJXdwPE15QTV3UHJPVFRBUEAhTygmYUIxaiFjeVpHa2tjY21ISEEvSmBpTCRFQE9kOkE6N3Z7aXpJZWdiM0wvSjU3RXdeYE8wXkY/QnJuUHZ7dVo0OEYxY2RYXzAyUi9GR0NfaDlGSXpvNCU8VlJ7Q0tNVGoiQ3x9RTZzdXtRYFhPMHUweVdTT3V4ZU9hU3xMakdnbTZh''@;'; put 'put ''Y3Y0KF1OWSlGR3N3UVcjZnRCNTI6JkNQVXd9T195e0csJkFZU0opOjJZImRYR1FBRHRYTDpDZUdvTzMvJl8va3g3Und5USVxWG05UyJ5RTZqKk1oa1NJdTthX1grTWp6U0tFdXgoTiZxRnRaOVhGQklDYj96KClISUJVSEB2RCkjW0dCKXUlNF92OiZnWW9ZVV8uREY4UFZec0k4RV0sLGY8MGVC''@;'; put 'put ''SFI/OH0yX2J2VmZjSTRDLkMoQXg2b0hob307USEsbmFLdGE3ITZYPV0hOHZTKWgodjQ6fGYkR1U9fnxgfTNxZF07NCopNkpVUil8QkI2NDg/fld6Wl80eGRPPGtJV3hdcU46QzNbY3dDMWNkMGBQNjZ3YlliQS9XY05mc2EpVjRePU83TT5ecSNdJm1DanxveUdKJipbPHxJZntdZkhrIy9xWGJE''@;'; put 'put ''PiU0dl9jSmlQUlRzMXVdfmxGaXxaTkAvRVciWSVzOz1aRFpALHU7ZjE7dHVgOFFzVStqOHNhe2ZwJVJ5IWJ9bnQkcjh8JWUmbG96bXtfaDh2KnlpPjlUYHI+JUhKYz9sT15Ma3I5MWZKVyhwSG93P0c5azVjXXA4bHtgO2lMSXBGbTl4RklUWiM5I2NnXmJbR3MzdypFcG8mJGxLL2JXPCpbb1le''@;'; put 'put ''aVh7c0NzdSIlYCg8WkZSd0lOOG59I31KWFByZ0wmSDNvNGdeTXdJYkt3PDkyPVN3bWIsTzNVTEwrbC40ejBDNXIyWDE0WXs6WkchMTtRP1tDRyNQbT1dUVswbzloKW46Zl95WSR7eS4/fWM3Ui8uSSkwfUhLO0RvUH05dXMraTBLfkAlbiNZWz9NcFYlKywrREtCPTFweWJ6KiZNIUlkUm49fCh8''@;'; put 'put ''clpnWkliO0Y5OnwzMS4lSHVGPXlqWmdQTU4oaEsidXM/V0N7OmQ9T14oXTg0MSxlZ0VmcU95UEQ2SyY7Tyh1aW15fG1YNltLOkJuLzRJXjMvZCMjdnQwcngybUYkYGR1SCQoPG8oTW08NVlZR0g8PlFjX1trZkliakZzNl9WJEcmWHtJNGI3MzUuSktPNT9aZDVUMVRVeWN2aVtGZ2lFPCRAOUJt''@;'; put 'put ''PGlTTzFVYFVHJEglfDY6RCtxR3JgcCRRMSVQUXQlc3tXT0QkRWBpZilAbj4/RkN4fW1LPyYzVylFeSxjJnVAclJbO3pOLyQobSs0dGl8QzooMk9gcXsjZFFRPFd0VlRqY1c/OFEickxyZEVnUUtlNmNxJlMwWFAuUiZIMkgsUTs7YnZZbmtCSCQ2V1d5Z1Y8Lm8kN2p8VjM5Q19CRVc5JiZJJG5m''@;'; put 'put ''RztXV2xTMCQ6XmNOP2cmPyYvOHAkW1ZJLns/UGJsXUBWS31LQF5CKF97P0pXNkQ0O2VTPlR7OiQ0TU06IiVCcHwiJlUyMmp3dFFYYXI/TTh8VTteKGtbTGVqfnwxaVVpLFo/VHtidklnZCQ1YCpsbTpwQzZwYGduKmZFNVgoZkJ7JmRUKFVwclc4PGE0JFMySiRER21jM2tWSm8hfl5XMV06Mmlm''@;'; put 'put ''aT98aCp3KEluNVJ6T1A9dW1OcXhbTlsqVkRoYk4hJFkhczVvNyhbdkNGU2RpUiMoXWJ2Zi5pKWNeQCQlQm1KY2RQLG4rQ15MOSU7JWo7aytaTnoobjIwJHUjXS9rK1NzP2JyRWpXNl4oeHxacFpiVnlxNSRkNU4sYEFtZHZeIT10TSlBMn1EYWI+Xy5KXXsjRj9yeXY2bEY5KTAuNkdSR2NRSlYs''@;'; put 'put ''Ozpidj9mdDFSayxBTXx9Tl9VKFhafjF3MyxvYTU+aFVfM1IzSCxIMFM/YEd1c2VeeWYieko2fikjUXYxXXQ0Mzd2X1lGaSFmZUN+VGVmKVl4NCo4I1F+TiJ2SVRHbC9bRWMySWZ2bmBMQCR4IlZEMjFoR0MrVnssZE8/VCNRRVRHYD5IVCpyXjF9MXY3S1c1ZHkhc05yLnlzJnBMK0d9JT5gbkJE''@;'; put 'put ''MjxRIkNCRWY7SWsvN1BXSS4sSGhNY2QrfEF1MDdSLml1Rnx5MjkmdVt4ITIvPDk+a10pQ1MxVHZRPFZmOkxuSWY8eDNyRG1rXWoxdUdaVi9nNmhfQWNXTClzT2dUNjZSTD5kKD89dz5uM0tocUomKX17SFlWeWF4aVU7dll5eClKMTBedTNQcm8vdSEhI3pNantMIzxWQXg8VkFWbmFqYjxLfnAx''@;'; put 'put ''bD41Xk5TW1N+P1BSITFYNkA7ZE11VTcqKV0lSlFIfiF5O1VUcUVmKj8sYl8hLFtAfD1kSls/el1gV2gjXkQ1XXdjRUtQLChlJVF0MWJBbFM1eW4jYlNVQyRCWyE4QiRKR0dRQjh2IV8yUGAmWWJoMDo2Ymk7aUArUUIhSmE8cEBQQigyQyUqSytyXkxuYVArSj4hL0JTKEJANmhdd3thU1ksejIk''@;'; put 'put ''d3Q/cGZCcDkqYCh9K190eEB3ZSpjWyouKHRQVH5TNUR8dDhTT0MpS1cyTVBtKWFQYSpmTHJGZC5EUmZEJnRQS0IlbGg8KWQsUGxRZUh6QzRBT0Rvb1l2WC94KEAwISViUSMmSGs3JWlPZjtBJjMzPCkiUytPPyFyJjpuJV49c1lgLEJEJGl4OHVsPT0rcWE4L2V5cz9AQEhSbzNGRjIsVEZUcG5F''@;'; put 'put ''Y2oiN0xOVV1ENCl8cSVIXSZhNiliL18jYD1SUmsyeVIpUVY9cnE9LClKKUV1aVk6emB8W2tzYDBKKkJQTSZqIj17aE1ZMFRlSSxtO2g1JEp2XVg7UGVgaGNOQzwiO2EoWzF0aWpBfW0mcCt3MXgrV2cyTkk8bzxgKlhoXnJVWjhCfE5PK2s7V3YwL18/U2FmfFUjcFd5aTU6YEJ2Zj1FLjl6VHlg''@;'; put 'put ''PXk3UW9ZR3YxSGR9dlRHUWw3NWdRNjgzUjA2Y3JsUnlZcHYuV2xlNF04cDp0K1N9c15bVWgkOTl6cTwwdDBTfXM6VTZqfjs8a0svN09PNnwpRURzL1R9UVoxZEMxUSY9SXZZbU1IO0skXWNvNDx0UFlqPTgpU25WYj1jPT9aPj4lOmpWKHxnS18+czgwLGh1OHc5e3xbY11rUzFyR3NGVmgrRnRT''@;'; put 'put ''ZEZKYFZVIypjNUNLZE1+UnxBU0IxPjQsYyZqQjxDKHolTmIrPU08Vl98UVFhPyFZRHZFMzc4Knk4SG1JVFFxdXBHK3xSZ2JqLHMiNmo+T1J0cmgmVWEpeWtVV1hhfDlzdyo1W3toaktBTz94N1NdRiZMMWtzdTkoPU9RIilsQjFwPHZ+e0pPY3FxW0NyaHBMdHVsQVNCSlhAVnw3SDRFJHZCQlhe''@;'; put 'put ''ZFlIN3RdOVdYPSw4anJSQ0hGPllPWiNyTW5aazMhIX5pNlt4bCZUNS5YNzFiWDtbN1gsVW1UOi9tJGs3WDJhNCZ4JEZnWTZNKngsdEw2VlZoVUopVSU1SERhX3R2Z1NhT1ZmJShDdXl7KDpwblEyKl8jZHFHPihjYTxyelg4QCVfJXlnPlYlSV9SRzIxeGxlPD9yNnYiYGl5Uko9Y282cWBYNkJS''@;'; put 'put ''NXc7emxsOG01NT8vcSxjITo1TERyaHtMPU1sNnF4YVUkNCJ5JVtOSmFDJHdBX0wkTWpbQHdQeCVabEtIOGBSZzU+YzlnNElFe2w/ZWBAOUs1XU5JOSxOUlV+OUBYPWVfIm8sKTB9TVMlXkI7M2RLR21XUD8/Tk9eLHF7KDMsKGNSbiM5PSwoS2RHdkN1ME5+Q0pzPE89JWxaKTNZXmdBYSIxWSM0''@;'; put 'put ''U2pLbnF5eyNrSlpdTmEvaWV9PTZsIWRxISpFQEVzYix7aipyWzwjanJLOCt7U2UsZS8wJjp+aHhnKmg8IUhbTmEoZntaYSxPaGg4c0A1ZEFkU2ImTjpHeSx0Q21mPixwOEJpWUIoYXs0IVdDbURAPSxecmR2WEJyMW9Zd0kpTGw/UkxpMlBVfEdGbFBmRHhJRl4xb08qbURGWDUjKyJJOXwqUGVM''@;'; put 'put ''ZCglUzNVWEA/VFhiKWN6SW50NDRoLzxgN1E9TXRkLzhmOHRJaUMoQnxNMyZuL0QzT09kOzJxXk43aU5vTDZzWTZlOEJxanpTV2Q0QGYqaWpiZVBOZDtyNWtbKV58VEEpLFJYPUBKMV5SUTckOTgiMDJ3O3V7aWcxZ2ZidlBeVFo6R2E8ZyhsMiYkMUt9bj9oRVIidik2cj9iUG90UVhvbjtVbU0p''@;'; put 'put ''KEo/dGNvMFtiSn5yYWZIcjNCVUA5OCglXzt8T1huJE4+cTcjXk5afms/KUFtW0AiNCNaaHlnMHIpP3YpTnIrOyIybGBpKU1BbCtsVDdCNm5EIjYiSDx3fk9DbH43KGVRWXxKYSpoKXg7P3p7fVRoOG1Eej10flojdTFQIjtyLDJeWlVyNzprISF5Nlo3cTB0bDpARGIudklGZEhDNEliYSpeInMy''@;'; put 'put ''RnUwNGouIjE9TVRXXkJxNWYuaXpSKE9lRXcqdSV3Jmo6eXVxRGJSSE97ejxFLi5XLDV9dWZIcEg1SDZLajk/RDYwelRPMyJWPXViLyJWNXAsUHBzNEU0OmovNWxoJCRUNVs3cmJWJm51XyFSQ0UpL34wRXIkOH1sUUlDYnhuSSpuL3UlIXt8ITZySFt4aShLRVFlT3RkQFBhVWspUC5zRip1I3dr''@;'; put 'put ''SDczeDdxdCg3YVk1Vz9kWyJ8VzdaTy5NLi9wKXpEVEkjPlVTMVI+anIhKXh4cXtiVSRiU0B7W24hZHp8MmgpYylFTXpDTFlWYUNte1EkRjdkalMqdWsxKSpoTDlHW21lMjViSVlXS1dEIlksVX1MOFFkWXYvWDFMdi5DRE9VVSZOfjEuZExOdUVYTip8Rnl5USIzZ2ZUTjU3ZSFBO1NkUFlFPHVd''@;'; put 'put ''MjcldF83M2wjVX13Jk1ebyg3WGhUbH13IilJbWhIMGJXSFhOKzA7b0FTUjxCaThFLzhMdkVmSCsmL308UnUqcVFKNEdPRm9HfUVYPU41WFJnWypMS0Vjejp+T0N0UzNfLnxnQDc4JCprJkNpVnYvPHlROXNlZUUpeHAvOjs1QnZfXiZNOm12fVIkQm4xeWZiOG1qYmxpcEUyI1o8L20yJTxRc1l3''@;'; put 'put ''d2dWOXp4RG8oblhZTCNMeHFBVXNzbmB9P0Z+XWxBVSlnSU9BQD5zaTE1WzZocnRzMnBnK3Nda3EsImc9RG99O19mLyVNWCFHeWo3RFh4N2pWQFYueCN3c2lQNn1PdExNeWF3WXZ0VDtkKkY/Lm0lPTQ/TXREXUA+WHxWRzhDWzw5XXQ6NHc/TFYmPD1ARVUjZCF5UDw7R31QUWYhbSl8YnZATCxO''@;'; put 'put ''cmJfLjtwbjJILiVgIzFfL01neyZlPUFgeWBLKDJCYWY6I29vZVMrYzlyMjhsWD1bTmdkLmJiflMsZClpZ0JILkAseHlVM2UjQEcra1lIfUVaU0tlJlckXyFYMFZgKX5JM19iZ2BnZzBVVyhwSTMsfDsjTiZIW2ZvZytGS1cofUc3M04zS1BoTERrcXNZSGRGZVtKOjVyb3UpaURtVz40OnhUZlBs''@;'; put 'put ''Kmp8Jip8empSS1shZnJTMCRVZFokKFAkai4wR1skKkNlRzV1NHBZbDZpUzkjOSo8SUltTG9GKV1rMlhZPD03QChjXns+ZjhnKVJpbywlaitwPjZsSDpLQCk1QyxTezlhfD9NXlA1W1JieWBwUT5yUVJbJT4hZnNWSH4hWnBuK20jTl1IPUNeJn05LmZ2RGBCJVhWTWhoMkZ7bi9XUzdFe1ZdenQl''@;'; put 'put ''bWxNNlFbKWcleUlOXVs9WmNSOypVeyIval0kKm4vZzJJLkRAW1pnMk15bS94ek5bWSVtbGtTPHhTMEQjOTdZVXxQRixbOWZkNVNxZW0vfnxlZGU7XkNPJWM1K25Yd2Z4SEY9M2tINSFNK2N3d1NuXTo6Z0sjYCVwNHM3R2A6JWp2dHg1L2F4PmZ3R3pDbXlZSUo1fSVjekdsRGZgMk8vJjc7JEhI''@;'; put 'put ''YklVMXhZbTY+OUVzdGFVfS43S1F0bjowMTtRV3VmcThqdEpEPiVuKFcoRVJ1NjY+Ui94OWp1MWZqQHc0STV4WUVrYm4lcCxFRDd3UFZrL2dSamBSRStWOWZ5JGx8QVJjSTlrP0w7QixKXkZWPFAyZFlaZVchLmswITdTVzdWIWY7aStxZVNXQXhFeX1xL1J2fWVmKE1bcVBLJSNYfS9FLHE1Yzo7''@;'; put 'put ''QmlLS1k0MXdfO1VGW1AiMGV4R0Awe2tXQGc8Mi9jOzpyYXhoYVc6S3xhUSUkcV9ed0M8PVZSZEMyUGxsM3dNcEpsb1hEaVJyK2lBdXBYbVN1P3dhYVBORUBab0pQNSVFSHo3Lz5ZZSZVZFtuaEMkOHNQe1lMZz9jTGRvSkQ6QVBQOVhjWFpYOzk/cFlkNkM7OT9QMDM5bk97Vj9jbzJ1PCEqe1kq''@;'; put 'put ''TX04eGB2SyZjaFcueyhMUUFyb3kqQCp2b1hTMyRTdUxxRFBCK3ojMHVXfmA6OlFfb0clZWh5aVQkYzRbSEs7NC9PIkc5KE1wcmdKU1NtJGhLXUxTWzomOSNqeDhDSTplYXlXVmdgZzBtR3ZhYT09cF5fZ1MmdjUhT2dZcGVLMSkqNkp2Q2sqUVQ8cUJ9JlEiMzRsN258fVM3Yzl1fl1DZUgweC5D''@;'; put 'put ''RTxtcT8oZipBZDNHR3ZQKig4cVhlZyRISlc9UFZVNEd1O0xOKG4wJm9Oa0hZI2NZTzp7XmY4LiFfR2lldVRtcD5VQGo5RnBje1QqRC4hYD0pSX59OTVjUC8yfjdaMihucEIoTmY9L0ZmZW4rPzgjKXJvUDZ2fUZ8JG83OEZLWmFCXiZOUDxtMyhjaXQqL2ApVCZxVSNmUVNpbXErTDdtM2o7MFUz''@;'; put 'put ''VSZfc2lzdDQhRVU4KDZHW3VLPnclKy8xaWwxI1tJP3wlRHZxMFg6TGw5RXBZMj9nKk5ZemxBZTJ1cXh6WVt1TTlhRDZLVzFRVntRZzxfM1tGdXQkTiYvXyhXNS5BKikuYzxlaHozXVFEK3tqckZtUCQkWUpLOF02QEtJX31IeEIhd08lVX1hIXI3RnV3NUcwenVKYG9jUVUxNEJCQHRmaHVITVhT''@;'; put 'put ''R2gleTgwRUUpYjZLdVtsJTs/aiVHMj9Qdk5tKDlKb3IjSEwlfW03aDxtdDFtSD0pTTAxYTNDUDh+UTUsTypOZHZvZEteTmBAeEJLaj89IVpOaGdbUHhTPmVaPSY9eVEmR3lrYVkmJUx6cUtGWHtydDlFYDBsI1FzNCxZNWptTXplPiVTeEp8OkA3amxTSWk5Vzgrd2oveHoqWzhkLGJKYHpqUjgl''@;'; put 'put ''XyI0NiEzL11nZGY4eWRleGMobW4wV2FsNWZmQE04NENUS2h1Uz4sYWleej92Szc8VltAUzYqbkxxNFFpL2dFMG8qSnUybHBUcEw/akBhKEt5PndERjN7MzRISnIlP1RlZnQ5PVB4c3BsTnhUNWxKVFI9R21ZW3V0aF9BM2BmaWVHM1dJaThwLlFdTnlxZ0s7SmpHXkxwekNlZ0o9UD1rPyVHTSEj''@;'; put 'put ''YmRkbyw9VDpEKyR3SzVFZktiYzcxP2FCazl6dnFhUWJUcmpHN3ZkRzczPjBsTHZOLCx+KSExc0ZtXV45SDJpPlM8Vio2eFVMO1lSJlAkUWBBdkpgNktgKUJZIlNjUk1iKSRpcWRHaGtOblZnJWE/NiszflV7VChnO0gzUWw+fnJga0xTL2ppPDg0aDFmeGFKOS56eXdxLixxbCFMbTF9YEImWCM6''@;'; put 'put ''KXZSPU9zIjEubF1XS3ApPmliMHw7XUUxI281QHJDMjw6MUJ0TWpNJlo4N0lAJG91NlV7KylAQFJ5Z0daVnomMFlJNDtBfEc0aDFHODd8elgxWH1VdF80OjlbfTB5SmB0TmFNYjYyQDEsfjV8bzsoMCx+NVg1Iyt+TEJvLygvQml8a1NmZlo9I2t8PmVJV01BR012Wkc1fi5iPCVocFtAPSJgQChn''@;'; put 'put ''WWpnaH13T012L2l5aTFfKVNOfVJWMSVQcyp7YEplbVVkNlgjMTUweHNtSDhNPTBtREkxbVoxKFlDLFUzbVo7VSlZJSs0ZyJTajw/KSxORG92elFJIllLVUh6Xyk/RzQ3WURqaWJkXkdBKzs9UCViNmRZbXFKS0xofUBsYkxWWFdWcHl7ZWxCL1tSV1U6a3xbXnY1bD5fSTQ3IVopNzg1ej15SWpw''@;'; put 'put ''dk5FbWl3eWJkaXdXWlV4Xyw0UUBNa2M4VzhQOGR9WCJydD9tR21OflhSenUvfCxyby5JdmUsLDxZajBJamtlVGRiUnFpPURTODRscyQ9PVhaNk9bKDtASSUyU0giJWYuRyJZZTNKOEBeVVUkbHVfJXFYVkJ5fk0hP2h5WjxvTGYyTFZHeUIrTl5HTTQ2UVdSK1k8KUI7Ykd5cG97W3hsbjVkSFpa''@;'; put 'put ''IixdPVYzPFAxLDNZcmFsdD9yPFdQYHJwZWYhL2NoOn0iRGElTkNnbCJRIixCQG1ILHUzNm1vTEtnbG41JTElS0Z2fnZNSDNZO2s8SXcvbiJ7K2dLM2RmTGY5V3ZdMFE4RHdRYlNobTdSNyJmV1VbZCxdeCNFQzBvTH5XQlo7dmxMPEBrSUVvWT5YTzw4Z25vZXpbRSZ1Xm5WN1NkRSZTbl0zZEpG''@;'; put 'put ''Jnx6LEZ1QzN8alh5cVYsYU1ZUj9nY0dReEx0bDh8ZHFPQmxZWFNbTzcqcl05P3FqNXNbWVJtKmRFLkQ5ez0hP1VIISklPE83YyhTNGdeOkR1OzFLNUEqRy9demhBTy9VOnoyNmNfbzNCNmA7fHJEbXdgZVBlNHU0P2w8TWxxUlkuaSpGd01JbltBakp+cWAvRWNsY1FLOjAsVUBjTjArUWlPfmFN''@;'; put 'put ''e2YhUVs6XjMoVkopfGR3ZEY2W2wlfTAhQ3cuTmkpfTpLfEV7QSwxbF8zZnZNIVsufjJzUnp7K2FlJWpPdlBfUy9TIXVBRltBJURYWFgpRi52PWxvX3s1WFNtbztYdjYvZE5aKSM8PmJBSkU2RDJ8ZTx3cjVoe0RiXihyfmlKdlEiXjN2OjY+OUBDN2hjUE1MKi5TZWouOHsqakwkW3g5akViM21N''@;'; put 'put ''b0BxQltMallmPlN6QU1iK3xQdkNsQmwxIiRmOG02KXRTeXg5Pz9gRVMyMyRjbiFVYW9aUXgwWDA+NXtLcDExcyZkbV06PklPdmdPb0NdTTU5fClaTVFrTWl7LkNPO31DU3sibGNyaXhKZmokRT5pT3Q7ZiUqbi9qYGNsb2sve09DIldrb1k1QypBMEZebEV7dlteMTxfVmZhe3ZHOWNQcm1peG87''@;'; put 'put ''PypPIU11ODN4a3FASGZ8elp2T1ZhZFtRKytaJUV1aC9fQTZrIWkiR1RwNGdIWCNrTDpxRUw6IWo8MG1vOiNDI3ErUlREYWljTl9hRytYLlk9W20qNDZRb1EhKjN9VzojcUM5KSFrL1tLSn11RilwZ0tdcVVDRSkvV1BFRXF+MzFgbDkpYG9bMHJ6Qj1SK2lKfVk0K2JSUktdWDtudihsUlFgfill''@;'; put 'put ''N14sOlh7IWRud3U4ZWdkbzJPUnVWVTN5aSJHI1Z8eHl3IjV9Pnl6KUlOWzUlUGNCbVIhVkQ5Nyw1VG5uKzcsP2h8dFtScFJmSz5ASUdAaCU/Q1A1WHNgVDI6MVU7LEVRIyM0Xmd5JGUqYlpiMDYvVTFOPDYvdiZmMTt5ZiQlamBvekdWfSlrXUZZPzBoa3w6T1FlXWBnIzx+c21dIypOflg3d01N''@;'; put 'put ''X3ZgcztyUDAkZCVCI0JYJTZXKC9VYFBkLGgxeTRrVkt+XVYlQGkheUkoLF11OSxSVjh+OVB9WUQ3JDUmaHtTI3ssSSE6QVR+aCwuKHdocTl6dypTLz5KfVBzQlBiO1IxcHAxKFBjcyltPH5AVDUvRiNbLkdEWiRXV0VqNWRpWSh9L0o1Y0BdeDh1QEB3aSp0Ul4kXiV3Zk1NaCVpcXMsdjZPIypM''@;'; put 'put ''LFkpVXB3fHhpOGAvOUtNe2RTWk1TZHlXaztpe3U1cnxXeyFhXnEhPWBMLnBAQC9MbUJ6LF9RWXV1Sk1VOk48UUtVfHNgTUREejJNaHRFUFlFZGcoUnwpa0lxdTtKemBydzxGZV9nZHxecyR2SWlMYHwlX3l3VHRzT2RdPygwZWM1PjpuaSJGKy5aRz4zSFF7NV95b3U1JThtejEjYj1gJmpjUFd0''@;'; put 'put ''Jlt2aHw/SWZtbGMhNy9eMHUxciVYKGA2fGIxZ0tTbWlDWDZmPlojRmlkR1h5M190USkudUl0WSlEfl06en5ITngxLk8iNCVHfnh3UF9BOyRQfT5IUzA/djldQWYyUm5SKENCVCElJTNeNX19RjcyOTdXLDE0OixLRHVBKUAiXkwrKjFwSD5YKGhldk1LbWZwQkhCSE1HO0ljWS8mYmY1aDZRPlYr''@;'; put 'put ''ZEpoTG5lL2xRcG0zaUVTWWIuOiRJZG5XTjZbR2p6WD9jKGdKeml2c3I/YE9FSjhKalkvfnxrcmsocHQoN2gqRmpoL2JmN0JAZEp6anY8cHImWFg4JUUkL3dyYFZnIlc1cng3aiNjSXclL2oxXj15WWNVcX5udCZGdkpgNE1FeWhYWGZ8WUVYWGZuITJNJXJaRDFyPWBTRTNdeWdwLGR2SjhpWX1A''@;'; put 'put ''MyRmVXh6LzAyK3I1RipkeGgpfDFwPCthLDxzc1ZNIVspOzhqVW9mal5EZzVPImZtW3JPNWdTbCpvbWh8S3VhL2tbSWIydmlXKEVrLDdQLENFTjlbU1BFRTRQVnJSKWMkW0JBbToxMXpfbk1FKCZRYkJrRUl4KVpYQWFCTiJ1N0hbMGkhMzFnKyZyKkYwOCs3MSxMYCQ1NSpPcy5zZHB4XSQhRkBZ''@;'; put 'put ''emNrWChvJnU+N2BMOmp0SiZiak0/a3sleSZRPTtyWnlCXUVYal9bamojKVphL0xqRDU0Y3p9dStDRGRFTkMkP3F+TWIwQDwxUUc8Z1I4d1ozIS5PQl9gMGEvTF9jS1oobVQqMk9hd19nU2dPTUV8P0c8TjpVMVM4MXw0ZzVtTCx2fERAZH4wbSQwe3hfb3J1aSI4bnRuJTw4JExQV012NnNzUk5L''@;'; put 'put ''NytgeTZGKyRyaXRJYUM7K3RgSSxZL01sTV9XZGF+YmNGdWgvNDVeNSNyNF1ocU9OIXVAOyE5Zj80fHFaKlRoJWJqWD5JQiJHfVFraEJKWDVNUnxgWnZYL1laa3MlZDJ1T21SRkB1TmkqUyxvTENxNDpCSkVuLERwWSwkTTVjMGQmTjtMOmsqSnROPzFNRGkyQy4iUURISGt0SXlDQyV7cnUpe2B8''@;'; put 'put ''IT83bCNdJkc/QnJVYyU/PUVbSVR1XVYraW4pY3xLT2cuc291X0w2LERDbVEuOT9JLHklXVB8JlBIazZGUjgjK3FZMkkxQWlxcFlEfmsvWFJicmxNO110Plt9KW83UDRRLkpiSSY6fFhsSjd7WmhiPWs1Lz42SGtyaDtVZVUhTTVCcmtsZX1YNjxUWWsySHt4L1A5dCMlWntnQWFPc2UzN3pVOEdQ''@;'; put 'put ''WDluK0Z2aj8+TXBlOD9dUDIqSWJaRC4/X00sXnhVbiYpNH1xYE05I0lfSiF0X3tQMXg+fTB9S21QRDBZM0c1fGM5ODdvaitMbyMyIXdHfShmTGxIMDgmaSpmSiRre0xnQkxAeTVJImsoSz97MEZrV2l7RElOS2J7WWYhRjk5el9vTyxAJEp1OlR0flpsc24rK015cSQhVCViTFJhTFs5NE5bWEQ3''@;'; put 'put ''M3c+VHxIfC8sOFR8Lylue3djfUJNPzt7M2AwN0IxUyFIPXBMRWJAJDYmck15KDh9ZXV1SiFeTmclMCE3LnFecGREYDxxXkwpMWk1XmAocDM3K30jV1pmaCV4fFpKPWVISTs+Tlp3RGJdImVPV1ZEb0loY0t2c11YYkJvQnQ8Q2YwTTFrSEJURCsmWGY8e0tWTWYwPV1lITFCQ05BK29vUVZ3Li5S''@;'; put 'put ''OykuWDRXKDdfci82IiopVT4zRjNUXzA5ZUFvdU17TUY7SnJQNyV7ckYqSXV4RmpmdkZAcWQlS0VBJEtwdWlLMSEiKV9fKH14KixnYT5hJl8+Nm1wLGElbiVuT2k1dmVyQUU7JXxeQyYyM3x5dDE4dE44eUQ3Uy9YfGg5dkNQdjJuWSwsKz5sP2A0SCwvTztMKXN6M1hZPzxdQihncTYiTUIudjY4''@;'; put 'put ''PUtVLl0rZmtnZE1bJC4mMFVEWmVAbHB+TmAuV0JfMzdWNjM5U3Axcj9oYl5KNFFRaTclZ3FOL3Iud3A7UCsqJjs3QGlPTnhVeyQ3OyFZNV4hVH1EcV00Ji52Z0lYeDMyRj85Pih9dCp8YlleWGs2Z3E/JHRGM1V5ayVUciZ4c2dRMUpGOSN0VjhkWC9ld0Y7ZHpEcExmP2pScm9HW28/bzkpX2R9''@;'; put 'put ''MHMzYyw7bUw6aElFQHJMX0pJUGE1KEpGSkMvLGhSWUZyXjRddl06M2JjdjM8V34rVDt+azE5flc8aSU1aFtxIUNlXjRHTiUuVEA9cXdnJWk6OksuPjc/aksvPzliOkZgaCNBS21FS1hiOHVnVS92aDI2VGkuWU5vXTRQaC5BfnFdQmR0a3AsTzdtdmI1Oi5aKTh7Zyx0fGZNUGw1ZU19MSJiOSRS''@;'; put 'put ''IXRVUjtNI3IyJWVdOHxAWiVWbGFrJEtQLk0uR11DMltUVU9bSjNfNFE4dztYITxraW8kW3lgV0tZRGZ9TE5VRWI9ZGouJF9mR0kweFYveUxybnQ2YmRpc3lgV288eGdwKWhxM0tKVXx1U11qXShEZTQ4d2R9byRVWGJybiMoLjB9ci98SiVQan0zQyh5SEppK34pNCNifXpOfG15LysoRVNgZkxO''@;'; put 'put ''Sz46JTtlKHR8QnM/IjRCPGEsOXBHdE9ncUIoZVYjYndvOGFyc3h9OVYxKHxxZlhDJGkpbkxQbzpQLCxCd3JUJXEyU11TTWhsaE0yaW8/MlY4JUpsU1JFaUhuJEhyfGxRMz9eI1FpVlpnUkJAd0d7Sz1QQW9LOSxlbGxCeX5xI0dWKG0wR1JCQFRGPGxCeW1IcWBdbkFePls5TzpVQVV2RyxDP0hj''@;'; put 'put ''UUh1TEN7MENTcG94SX5XQz5pdTNqbnUoLG8zcF9BXjQjPSkuYDxrc1kqdWVtbSUye0ppYVhBdSlfMkxPPltASDtYV31ITHt0XVl0JS5jdWZeXzpoNnJPWHtBZXdTO1NbaFA5YWkkTEZkI2AieV40b15wW2JgSjB5S302L0QqblpdYmA6aHx5dHdDd285KkxuWHxpeTFsUVIrLF5AemxFWWVhd2ps''@;'; put 'put ''ckBsQ1ohUipkRD50LkQoQlA8PnR6XWRoK1oqJHtjWnNaRUs7dFVJR3gyQX0ka1NWYHApc0lAeXUxU289NSRZdTl1RihSMjJFW2BYMCFvLC4mYFBLb2VUKUFddFIuR301aiQsYChgZXtFbU15WSVIWlheZzpEYHc2UXl2fW87NW9HeSNFUzhmOFBte0UvajlpPmdgXSw1YCRmPFVlK2FrL3o7ellN''@;'; put 'put ''eXZNWGIjY1JjSytlcnF4M1tlMTYiZH0+Mit7P1B1cEdibXdbfl4zSDlwPkBbO0gxOTJdPDRXTUBDYkdUZ2k4aSsvVmZYZmkjeUY1VTVzPFdsIXA1JDM7aGQ2OkhsakprWCt2fV5kYGtOQixVKF8zV1MiZ31dUjU2eGZOTnNeZXNMJC5oLCRPeEc5OSwxdVVsdT8lYEYvNVg+Mnd1elZFcVEvIlNm''@;'; put 'put ''e1F3fVtgOklHWHRtbD0xbHJNMnxxc1V9K3U+dH5WaWUqRTNFc3U0JF9WfFZQZz1GS2VednlENUI3Q1UsLGhETGxRMXU8SDYhT15mPD0+InRkfVsqfSx0IWt4KkxOJUNZd3lETDVMUk1SVjxGQWlPPiJXP1QxdlNbeUZGSDt0RHYodmpYJkZGUXJIcz9zP2spLGhQWnNFS0ltMEFmd3lKWkRDTU0z''@;'; put 'put ''cmJ9ZXtzYyJ0MntfLC9qdjlRXl85JllZNFNYNGIveTQ0amQ5QlBjeiordjZddXs1TmA5R1R2SFVaWW4+S0woVCFzX01QbzRKViYobEJyTVZ2NDpKbzkpUU9aRn1FY0U5dERSTkZSO3pIN2QqR3E5Y21tI3paV05UPDJFdWhwSmslPHVrL05vaV5mU1VBV0JJZFVRQUVVTHBWfCgxOThCfmRhcDgv''@;'; put 'put ''X21wKTdmOUgkMTpZYmlxVXEqKUcmKWJOV1NeXW9WeWg+a3l7d0l7Q3FGbFVoc21PYk1rc0FER2xaUUk2WDZPKj1IeDQlcjFFensmIXQmSFJfMEkmejprTXFgai5HTCgoJWJ9Oj9QfCZnJiRrU2BVWEx1W1I4azw2L0NEbG8mZWUoVjdjeDdFbHZ0MGpQI0BzdnJiNUA6In09fj1+NkNRYixDUSVY''@;'; put 'put ''aGghWGhTMyttdiYrN1IsRHtnQ318MFlGOig3YExSRHlmcykreWZhPXhIVEJGZ3NQeHdHWEJaSW1baUdYQlJRInVtIy5MNXFZT1VMYjVGZEw2YGYxdGMwM0ZpSEVdfjY7WzU6clZobDw2V00lbmJTeVlLb283ekRfNiM1ZDdeQVdCV0JmMnUwalZeQl15Il9ER011KUx9T3BCaTFvR3tSPk88a2Rz''@;'; put 'put ''bU9jTVJWWVFkbGlMUzJVVUtHMjpOSGQjPkNOcCluKW4rSzRraUZhXXM/cz8iOk1eaz1ddCZ0YHZJbG80VlhWL01eaz04TGF0US97JjJTLlJlOlFobW9YMk1IQmt3MWwyUC5Aa1BkQEp9RTw/TzElTV1DfURCTlJWezJwbyhZY3NHTDN6PW1XfHVLeVZ3TnZeKHdrcmU2NkZmL1VtUkFzP1B5R3Ur''@;'; put 'put ''LzUmeTtiSU9SUnM6ZTVjfDE3UCpDWlpkN0lNaGorOXRyaEtsb0QkdixFeyhmXVtnPmcpPm1eRXNjNDZYITh6WGQrVHYlNCZvQmtMLC9EJjlsW0JjQyV0MTs7cztgcChjQH0mTXE7PCxDXmw+SUgmVF0icWxeY2crXS9hVXtxa0BmYS9ySCFlL2UjRT9wPWU+UiFiPVA1O20odmBPcjV9byZmYWJY''@;'; put 'put ''I1VlOlFTQV4wO2Q+cmxKcSQ/alArMnE+WTpdWHIwd05ZLntdOkNZKnR9Ql5vOXU3aFFwK2MvMipMYXZpdktgbSV9VUR3ZSRnZykwOUhIMEJRbmU6UWhxbGRPWTpRaERoMF0mfFFoJEttS3lzYU4zUHN6OzlLbGZuak0mOCVyQFViUikhSHxAZD99fDhuNSolT3FHY3pJSWJUUzljOkspRUc8M2tA''@;'; put 'put ''Xm0oSls6KTNjfXFfbHlaWyk7VjVwOSYkbmpMYHFQMV8zQE9GfEx1eWRiPWB6VH4iVkEpeWNVUjhoOUpVU3tMMmJ9KiNRZElYQ0tgZGYuYl1bPGFCZkYyMmk3L18vRTVCfmZDaHd2O3lSXnl8Uk9+cCUzTUFXNXBVXTR2PCJdbyQ7XzM4PipMWlZHWCxyW2U1Zm9MfiV6JnA6I00hSFU0UUl0dltP''@;'; put 'put ''LiQmP2xFU2ZEb0lYTn4oeD9vQEMuZV5nbGlBYSomXkA6NGloSW0pYTQ4P0I8LFRTaW1eQGdZfnlfaUxCczFsNikhfFdfZWQ2Q1lyTFpdeUwqOT4sRjprY0hrIm9MZ3k2VDJyJGw1UVRpNnhQR2EzWVFUJGNxMnoyZWlWa0xMaEVeY1owfik+Qj9VbEgpTD90dEphd080bXNaLElYQjl5fjI+WDBG''@;'; put 'put ''JSNISzoofDp3SmlYeWh1WHJha09VcWBHREssPlUkb0dkX3VDOHs6Oy4lXzxbJlNDd148VXZvQiJUfDFzP0VvYzd9Pm9vS2BgSkJgNDR2JnJkNEhuUCh5LkI1Z1hhXylaZUtzLkZBPl5GeCQxSW95Q2xTcUwyRVsoRS9PODRLcTw1V0gsSU06Yjs2N29HYWZYKzsmW0R0TUh1TX1FLGlWUT9FNVF7''@;'; put 'put ''VVl4PVdyYjVsSClMclp5WDYrUFhORHc5Ll8pb0tgMUxkVjJEOXZSRHsyL3NqPkc1Y1R+OTUmNGQ2d05IflJTXUE1bGcwLjAvN2I3Y1pWXnZ2alJ8Pz1rYV8lbGx7Pk1uJSw6WlJoJX40fHJrbjNeTHZnemkjeFhUQyhBKU8uI24ofkRiLzhyKSpmelBgdUR7QjRjVnVSb2FubysoZlNwM1F2NS9Y''@;'; put 'put ''S2orQUozI01JOzNpOUZMa1BzWU1wSV5SSnBofFZSb2d1YnpjWyF4VilEWDNILjtRTnkmRnJsKWAoOnpRPVNWUkglcU1ZWEdaRkdmWl9UTW4jI0hlNVt5ZllLYG43LmV9d2s+MWBSUVdqKixtZVEyXXlrXl5OOlYvQCV8Y1FbKUUuIytDSzY+RltjUTIseXFLRz41S3ssQmZ1JXA7U1YvKD1BbT0s''@;'; put 'put ''JC9tfWB0fk5ISmkrM2dgem91cEgwUVVdRHN6cWJKJko/Q0lIXytnZUcqXlpub05vRWJFNjQ1JU5lTjgxJTdheGlDdns8IUMvOCUqRlg1PzQmQzVBZnswRDFTcHVNYSFwaiNbJTIlcWxkN08hOjpXNmEvdmZaY05fQmsrc3hmaWl4JEYoVyQoJXhqXXdgV2ovKUUpJDFFSXBdVSZ3cTRDPXd2d1he''@;'; put 'put ''YGYxeixNMyFvTFJyVXtEOGA2SUNkS2BuN3t2PV0mdHVsak90eU5yUkV3NX44RmgxQnQwbls5Rn1kS1U7UjNlQGhTfVlaWDBBdiI9KTt9YSp9WyUyTkhSQTdyKX4xK2EoO0w7M2NYXlA9JjxfRHdGfGB6JD1ZbDVIZTBPeiIlZlg1JCFrNVRTTyhASlI2YzVyZi8pRUFxWGsleH5qYihDLlNpTlgz''@;'; put 'put ''VysoJDMhNiRrPEcqcHBhKHE4aX1UPE46WChvSVU0O0I9Nz1yTXdMSDVMc3BuTyhhPVB+eFpwNlJlOllhMysvVnFjeip6RD8vLDRVMiROXWVOYHhyPy9WUTwpJih0MU4uSzpMXkx0ZGErLk1NKCFaKld7XV13bENZWilofCxzOXdXYTpRNDJgLkpNVCgvV0osenYuZmlVImhJKzlbdz52QlosWGJJ''@;'; put 'put ''OFlSQGkhMVtMZFojaVo7bXY1aVc0NTh4PW1INjVkeWsqIXlHVWVIOXFnRDtiUW95dTsjS15yYFZveXVVKU5ibXgmQUJUY1BJaTNoSD5HVE8zWldJcEY4NGVGUmZNVUBhWHVvU0drJlpvcXU6UmViK3x3NiVRMlk3eDZIYzUzMiI3LiZmR3szNG1iJGZZZDNVaFk6OGtJX3R4bFJkRVBKeH1UYFZp''@;'; put 'put ''ZTomcmIkMS5rKiNWOiM+PkJlRHY5Y3g9KE0xXTI/ezwvRTYjKXREUmJ1RWY3eTlIbjdhI2gmZS5xZy5jUz19YUpyUD1AK1hZVDY7VEppOlJNZnplYSFbSC9JSGZ8LE48NjZoO3pteU1wa1I4SFQ5N0lXW15dPUMuSzhyfiY6cWoyJjR1V1hOOUppSkxEXzVqQGhtQ3xdVmBGI3pqbVJOJkBpbWlA''@;'; put 'put ''MGNyWHZsSVtrPkMhWlpWcFFycEo5MEtzZTk1M0Z2bF87TGA8QHpMOH1ZO0JLc3h5azg+ND1+ZTN5RX02KiY7OilXWDloalcjI3w+d3F9YytVRl4sNVROcjpoalAmVlZGc3ApZzVVYDRHait8eVN9UzdITUhZZjxfJHxIYFs4a1s7MVFSTC41c1JYZ2toRz41XkAsUWEhIW9AW3NJQUZ9Mk19SHVk''@;'; put 'put ''YXpRIUZ8VTsiSylLenJBcHsza3spNU4oYTsxfl84RXY+UnIzZXhPb05tVndTIyl0fklQZSwuP1MoWHR4PHJQclhFL2szM2EvblFqJDZnVClnYSQlMypxPk9FOlUzJURWSXBWZ3tMNz5MYHM9VTElY1tmN3lAZTN5ayhpajxWQVhbTi5FQStbeUpVZDg9fEd2Sk0mX00yUVF4MVFXJGlzOyVHK1pp''@;'; put 'put ''RD1tdDE9fj8hMV9eaylnQnhwYHdYaWJ+b1FdVm9rL2svKTBHXTFJIVliOGVJJiElMTZWMGRyeUlYaClRMFpwQmIrU1gkW0Y1Y2txfSQmeGxzO2EmZVs3O1A9aGJmIkNMRTNPckRhdFEiJEFbWEE8NixwfXMwfERAelJFaWRQS3JiZ1VHTWBNOWVNOzo8THM4b0ElTE5FKCg4L19CJD1WeHl1MS5M''@;'; put 'put ''eUxzJVtbYW9DdChDQG5jJElHQCEwJnF8UD9XZ3d8JiU9JWs7cnAxIyJ3TEBjRV5OP0NPPzM0ayhxUUdHSXV2TDwuci9TQE9Rd1BORCMxJV18PURWSzNKMkZDR2hPelRTYnBwbXtpQ1QvTVhHdm1KUUtedX5FYXcyPTcjNlFoYCoiK0lYWV1vbz0rUjpsZmcpS2lkKFhYc3tKLFZpcWE/KG1eYmNN''@;'; put 'put ''UUUmLl8zTVkpaWYmIkI1fGJlcElUTzBeMzxpM1M1ckFlYlVrXz4sOylWKGBXc0M5YTdfWyNaQjEoLCQhQW1MT3NVN1FRZV9sQ0VhNkNTQXtKeE5uWEghTnV5ZHlTXT85eWdhTU1XYURhPCxVP189LzAmNHRZZkpfI0V6IjxYaGc0NzRbc206cSlXekk/Liw3UzNIX3s/LzE3NGJuN2RmTmUiZTZk''@;'; put 'put ''dUJ4cStbTDkhTnxteGNCd2N5cmVWZVVUeSoyN2gwc0codWIyQ1E0Z25OblBLcXlidyFScm9PIjZRRj9wYSQhZWlYYEBUVT85ZUVfe0BXbywlak59Yn48X0wuI2p8Uj5+WnpsYlpJImBYYTFRNjZUaSI3bTxYKm08bSZ1RDNLQ2RacEZ7VDRlN0ZlPGlHXlJ5NiU8WVcxMmwzPUFoNiwqIWlyT30y''@;'; put 'put ''fEsrPz9weyg7WmUqdSZxZ25pK35yJiVrUHgjN1JpYT0iWmx+R2J3KThwdiF0YkgqNzcuYkl2Mz9lRz1oMiptbHIkK3RKO3o8O0xxNGY+ImslO3E/SXU6O3hDITpWMSlbKkU/OWl5MllDNl8iZH1TTGo7eV15QzJ4L1dDPGNZZUgrTT8oKkRIZytASU11QHRkTXouZDU6ViZ0THkiSGpKY2x6SmRX''@;'; put 'put ''OEV5cyR6MmlCJHZTbWFbKyNsSjwvUGw4cFBKPC9QVSNHa084I0VRUU46bEBQbU5tQGVGfWZwYyg9JVBMLHt1NjAqP1VoOSp6OmdZZlpjayhNR1FnKmpoJFt4I0ZWL19eXkBZNlJzQExZO1txaTVMZWAoUWVBOzM6Xm16ZVEhKTdhOFJycXxQcXcldkpkV3xQVnpFN2tpaENTZyFNIi9fXmd+aFAi''@;'; put 'put ''X10pfXBmPlF0WyErPTZbNlpOTmdzZF1tKmFpM2FWclV+ZTpgXlA4SHhIKSZ6PVkmP31lRjlbV0RoJUg9OG0+TjZHOnBTamR2WDtja3NhWG0vVE4xcTN9NDFEa1R4Y29nU15MbzhZezc+IVhDNCojZ01bcVZoWitFXUtuLHMybHg2KVIiQ1p6OjRhU1c2W08vTHU7JnJbPUQ8M3EySEUlXyhDVUcl''@;'; put 'put ''cDdZK0I9Tmh2UzNvd1FPZjUpfGQ8d3BwJCViJlIxSXI9RTx8c2s4YG0+QVErbFI+SWdEM0sqR2o4V1ddYmZ+XTdlOzdNZVspLiJBQjxrcG1UN24+dlR3ZXk4OG1fPjZrVE9db3Ijc3A2MX44elsmeGNlMkJdcylVWnsyfkMmUk1PWjY2NU4qNDZReXdnY3clSmheL0lzSmlIbWlTbz5adHZxO2hZ''@;'; put 'put ''JUZdfEpWL2dZUD9qcH1EVlh8REAhQ2U4JHVSR2NJSDB3U3xEO1krOmZPcihqTm93aXFeSFVGN1VTM2s5WlVAMCJgSVpDJFchY1FEaVBFOFIofSxXV059QXZeMz5GKXclaSY4cj1tPT1kR2VPfU9mYmVvOSwkcHdqLjE4YVV5bjhgb200OFkxM2FPSGsxdUg4ZjFmLylrOGx2RmtgSDNIPWkzSG9m''@;'; put 'put ''dDsxSDNjZy48LCVqPyF3MGJVPXNQQEYqd2hqVyExPiZVVjVRVmNiPjBiWmEka3VofSpXeW11V3lIXnEke1dfMFF6UkdGcGUvQThqay93T29YR1ArZjd5czQqSUR4JXpGL2csS09bYXVPM313YXprZWN+d3ouV1NuQDxYZl08IWU0bjhgNUhDZVs8a3lXSmIrQkxsODdIeCQ7cSoqWkp5W3F4Zk58''@;'; put 'put ''SGd7P246bHQxXXhHci9KdzdoK09mNWJwXUpgNSoubGY0OGhZLnc7bStEKXFremlicy8kYWZCZmZqNHhaam1KOGVGPT5gMm84VXsmVSI9YGY9XlFMaz1CN3RjcUBAbng9NFpDcXReQGVJMTFDdCNWPHQydGxmOyx2VFUwPGQ+KztpVEFVMDEscUZ6TXJ1Z1MiZWEjZz8ld09tbTg5RGllOkcyJmQq''@;'; put 'put ''OSpiUm5MYGh6dz49U1JxQkA7NVVlSFFENTlwQCo0ejtWbV5ZcV0mNXplV2FvZSkxUVtVbWw2SzxiTE5LbVkkdkcmdkhfWXwuYjAsaV5vOGI3eEpeSyoobjd+KSl6Mkd8RXFrIUZ2P09hPmwmY0NOfjlhdz8jSnIpd312XyRLaDFXJGRKUE9Vb3QkZzVDdigmeXNyRUhSWkw5V09FRV12LkxfaUpE''@;'; put 'put ''cWdacjdKd1A+XktsTmtbWkQwI29nLkt4UXJ1WV5jaG1gXVZKKTMrRWo0X1M1KTg2QEZSKDRBKGReblF3ZH48JD08OGB6MXt2OG5LPnB4cChKJF1FUikmKWdVcTFxTV4heCY1Kmt8YjszNW5beS5yNEc1fHh9Xn1xJnBWTXxKbXxGUihDel07Mzc/cmg2LjVMalFPLi42Q2FnTUNkI1NAOXt8LlRX''@;'; put 'put ''ai5gKVJ2W3A7QG5UUDElRzJfZkE2TXM4Kz9eKmUrZnNEbjMoSyU3SlslX1lFJXlXfEZjIUJaMUBtTXQ2XzdiRWQwQy4sekFBMClTQUtDXkplY2khcylQKz0xP15JdEUiJE17SCojPTVAdi5MU2p8dnRCQUFBQUFBQUFBQU1jfmFFZ1svJWdpV0JKR3kmJmpGWC5bZCZqW0l9b3AzYFJsWkdrZGNu''@;'; put 'put ''PGJYeEYvSFpZZ2trR0gsQTBMY1QzPSw3Xn5xdztqVSxZdF4uRGchTzxYeDlwQXQ0OVY2P3ZHaXgoWFl1XkEpVDRRUTU7UyhVaDxKNG5rYjVOWTVZQ0ZMKiUkeDpqfmk4TzRzaEVSbT1MTWVeYnV9WWVpNWZie2l0Jl54dV96JUJiRjEiQSp9JDMlUi84cWE9Kngvcig1I2wzfEAoflQjWWV6eV5U''@;'; put 'put ''KG9KekcpSFNKUUdkWEVoWWk/JVYiLFN6bV84eTg8OW9FUGQ8UCMmQSZSYHdFLyRsaS8rfmh4VlZdMVJ9dihtLHVNaWVpN1UmalBLJkRpQkBuP2k8ZTUwYDNwayJLPCw3P0FJaDcrPWsiRH1ELkl6JXE9MDNrcVBBXyEpSWBBRVZML15OTWQvXTZIZXhNRXJvQ0hFdlZ0XnZjOV8oSCo9KEVzbTop''@;'; put 'put ''UiRKOVA9SExUW31dL2hsNUdKY1ZfOSl4PnAoQyRbO2BCcSxreT9mQXEyMSZSNnQsTT4jOUQhcn1VL1d8ISxVb0lyKX1Dd1VfKCF2QClZIyRmU1R2blZWJjR9PiNIK25XKzR1PS4haV5MTkdCMkFsWGpNREhXenZ0dFUie0h8cDpzRF04I3okVF42XkQyYnRNSllCYnw4WUlZI251bGBlSGc8JF5q''@;'; put 'put ''PWE1djQrUF96IzIsPC95NH1Rc25IfFZncjx4QkdLdUclPjIreVhBYHNzQD4iZCVabz9SWldyPEM8cHdYVjVwWmtzQlJXdX4xV0p1cS4qXi4hUGEpTT5sVDZzRzwubU5jVGQmSWZmOXM3fkt9WmVlNGt+dFZsQipCXUJGM3B2UEYkVno3I181NGVEOjEyVHQ0SFhDZ2leWFB3WnA2TyZVYERbe05I''@;'; put 'put ''KUAmQmV7Yl1FQWclKXVRZDg/NWU0OEB8Ry8+VjtYQlt0MW15WSNTIXFBR2Q2Nn0kdWpzNz5jSHFDNil9JHg7fCEoK1c9UnROJXtrYF5JLDxGYXVEMUVEIzUqJiFGMS91fTN6KCwmeFtKV3p6RTdzOk5LTiVVfnIrV3leJEozXmJiInhvWmRxX0MwKk9KPTZnciZML1RVMXRQe3YuVSguKnpYOXNG''@;'; put 'put ''L3Q5IWZRcFd5RSkkOyY1WD5re1BqcXQ8XzwkdGMuPXxATGU1XT9rYXUzZWciJHZYU2NMMFNZKFRdSjomQ1BkTHU8bWJ0ZyV0eEcqZE9edSguXnN0N1dVTz9CPUxSbGg3MG42Nm1zTkV3VWY9WVpXQlQ/My9UIi8pMkUhb3UzZHsiRjJqa2hxantfPGp9fmArV2lzen5fVXNlY08pN2JbUyJFSzJG''@;'; put 'put ''dF9IK1JmSH0sVTojXkpKZmJgVCFCUVJ4c3czVlJ9WnF0OzhmUnZsRTU1XVViOFkodXdVLEp8ME8mMjs5W241TChZczJJI1UhflQ5MUUraFBKbkk1RDp2ZWF0LHxaKzZKdD16QE1Zd0JFZ2p2MnxoJnNGOlZQSXx+ZSNJWyxTWn46PXlkdHpPJFZDUDZPUWN8T0s+a3s7fHBJS3NZbHN8X297Ol9H''@;'; put 'put ''K2ZhUndAIylIPmApPTtpZX4qQ0pCdz5Pa15DdUgoMFJKelgyfmBIMDplR1IiMCVQUTMrIUx9P1F0O04mUnhiSUJgZnY8KT47N1J4V05ZPiFTLEg1RSV0cERqN2NYUGgiVzUhIj9NTHdyKllFSHQ2dDV0UXZSKDU5Y3hbSz46biEmcSg3aDVPbHVgcVMxWmxsKUNQYjJHV3g1Z0BdQ0lJRl8yZ1RD''@;'; put 'put ''VDNtUUI6YlI1LiNDP0JfO0dCU31MR0w5fFA9fHloJjBCcnwlVWNFPWhjNEIxQUVHSzZXY1JGeFtIMXIrbTw1YktqU2xSfSY6UVZraUtofmc2JmRJTyskbnBhbGtSYSlBOElYcDIoeV9lQDBMaTJaL35XKHkmMVUiJF9FaHpYPjZJNEN5UUc+WC5zdChEW3t0SngqQmEqam0obitJP1BmakxYLnYz''@;'; put 'put ''Tz1pbDRhRHZSWypKajFHVGooSmpAU2w6cVZDe25gUXZ3Tmh0KmZtOVolPiheT3A+QmYvfjwyQThaQHcwenUvTmV8WHBBMnJ0V3clN2YwcT1GKjd8dSh7KXBsT3d2PHwvaWJ0SSJadkBAamtlYDRbaEsmeEc0ZVNHWGk4VnB3SkYxdTtMRlRLWm5jUGpHZE4rPmpyWCx0bW5QXXYqTjB9fCtZWkhu''@;'; put 'put ''P2tFJj5YfWpPSjZyNSw/en1QQl5FLDRRZkFQZGt2YVlSREcoX05kTE58ZTdgQz19XWphXWkhO3x4dUQ8Z05oMlooPEckTDltIXQ3RVIsUUVSVGJJMVE2JF5YR2M/W2E4KjZXIWo3bjY3Nk1VemtifHVTbFkjJGxZa284NyhpSX57K3B4OEYqOElvU2JfKkZuOD1RPzVJXl9xOyFWODFIKDlwcnd1''@;'; put 'put ''ImpOQXIqOSNmRWlfcndDM3svSFt3cGNAdXBWNn1eK3k4N2cwRH5leEQ3e3g6eyVadjFsNF1xXmJualddV18uaylCdGt7RChTPClpQl0iVmFUME1PVGh3OmdUJjVNNldoSCVMcWtCSVllODU/X1IzTkN5WHUyY3M8UGElTT1PaU9WaT5oPzAhS01GIzY7PHBQTExlOzgmcT99YHomUEd9dn1LNU9b''@;'; put 'put ''azFoSVErZDNNeHlEIWlbYSZ6QCxEMSZkUyJ5QjMydyVLOGk2KTZFc2Q+flIxMHxdRCV0W3ZUZTNyczErNVtTa0h2NztoKzV+P1ZrOCJMR2JVMiRKN2R8OXl6NiFYNk5GVDZAdkFkNW5bVD9yMUNiTXN5UCt8WCNgSElLbFlXTDhhQHpaPTtKbWZ9QyVWQFdWfi5ncW5fc21HMEkvelZPL1Z7Qzsu''@;'; put 'put ''SENze3tiUjVON08mbE54amFpfngwJTFxSWZyVTM4fSsoK1ohezI+PVAjUHspcSJJIzg1LEEvfm1IXSlXJSpCbmJpQ0NdNXQrQmp6VCk7SEY7UHZJSnhUXyw2Wk40SE08MCFnQkJLMkEyKGpGVDZuVlNSNnl9RyE6N0IpaE11PywpJVM1KntrTkg9K0gmbVVPalJkaDJbXWsoYDZJYT9aZSw7WWVV''@;'; put 'put ''TFNeJD5+VmwwZCw4S29UQkdYOGZXRyV0P0tTJnBMOCtTMDp5SypPe2g2QmxQUCVPd35vMD1GVXVLei4pSUtgcWxkJENlNEB0KUxNc3o1QExHVWFGUFozOTA7WkFJM2JHZldRM2ImMj9HWWtaZShCWkdPK2VGMEJoT0xtRUtDXW1JYU56SmlpYHFoOjpFck4iJEdyfWFIKlVaT0xAck9DTmlvWW0o''@;'; put 'put ''X1RuTHo1Jls9aiNoNCQ7by8mNWY0b0RtNSZILEt9MzEzRE5AW3x6e144ajpRcWowQC59enU5IXM4UDE6dSxBW1J8dTd6MUx+WzhRdVZzSyRbaltufGd4OU17KTFQaTZBanBlYDlwMk5qWn06NFNbZDFNRyFHP3F5Tm5MUU8pT299dVEyP19zMW4/Vjgoc10hTSNuaVchUmk4c0toaVN9blQsUiFa''@;'; put 'put ''RUIhTXkvWHB2OGh2WD5oVEMoNFRkYzA0entkMDw1RUNkcXpOWmR0RVRoI2dVI2RneEwjZmV7LDVgX1ttUnp7MGEqaj40K0BBWV1tPUosRHsxKFcvbGp6UkRyJF1fZi9jbTgzSl4yQllKbE84YWNNRC80S2RMbnssbyVbcnZVaz4qRWIqZltXfT9UZmhhO3tEPG0lUHZZd0AzdCplMjpxVm44PV9r''@;'; put 'put ''YW8wNSpMdEZFTndHdF1IWSI2UTVUSm1UK3dqRV5NVUU7Lj1Lc1E/bURuPyNrTDA+KnUxNHBHQUdxXSgsVTI2RWMrW2A2dFtCJDNFZld0QHg7YGtES0h9Pj9HfisyTEcoI1lQfGBgVUZdNXRaP3hbbjMrWmFOR2JlRz1pXyozOXpWQUB1Q3RvQ1kjPnVDRns+RlhbXj5KfGUmYzI1dXFCMEtKTkhG''@;'; put 'put ''ZyluOTNnRE4wJGR5JWA7Tm8jQ3taQ100SGReTUdaendsW2pJI0RQJW1mXUtHJkY0Jnl1NjppJCxFVDhLaCpGO1Jgajw8ZDUuXlV3VSs5dnpyTiVFVzVGQl9EQlViK3Y9VHskPTM7MFlPVSxZWjpVVSI2L1M5VFJzKUEkbTNTXXVRSE5paHdRQk8ueyU6b21jc1dya0hbTFowPEk6UjE5eFddO0F0''@;'; put 'put ''TTIsRD06YFQ3SH1rdGA2L3lwJTVxSk9vWUFKLjkqNWpxL3VvIzZSKzVrP04vcGtlViEkUFQ+JTlRPjkjOW83KUx4XVlFN0B2X1VHSm52MU50ZW9wNDxWI3R7IVJ+N3ZaeEJkUmJDXkVJRm93Z218eTBDMm5fI2lUdiM+ZUZZMDFCdH5qRmpkOUArLzFYQl0sLzMlVTdOW280ZE5oWiQmSVdARFV5''@;'; put 'put ''YSQpSTxNU15xSnprUl45c29LK0U5TFRaa0h6RVs4QHFuXlRpM0l1Y2Mzdll0UGdsZmMpTTUjdVJ0ej5xW2ApI1NKPE9FTCVjX1R8QCVKY0xANV18RFhmQCxXdHVNYztfel5Nb0RpWiZRNzphWDBTWWAiNT9dIn1DQXFxfElsRTpjLm95eGtzMVBgdnN2bHAvbUJ4cUFHeFU7TWlRc3hJWV1ZM2Vh''@;'; put 'put ''Nm0zSEk9WTtKbCNFNVBnSmxPL19kSzhlTHddUzY6PXs4dTRrfDd+MylOQE9sZCpYTEc9UjM/QDxMZXl6JEUxdygqRWtuTCVmc2wpKn55JEVJYUh3LjtHNnVtOm1xX1ZES15LSD5rPHhxMmRoaiJgJSN2eVBSZHMzPjFoO3dQVmpocChPYComPihaZzg7PSV7bV1EdikxMUtnY2JaW3U0eWZCdVlM''@;'; put 'put ''Kzo7MWhJTE9OVU8/KChlQiRIIXgmLmBwaHomZCp5cTh2P091c2o0Uz4iTz0oWl5SXVdQNmIwdkA7UGsscyRIaWFBb3xIdkg7aF9rVkYyY1EvaDwzLCVTOE5OdkFxX0IlMmNZVkBMYTh0eHFTWHt7TVlTQGZ5ciVlTE8zQHVvbFpqazh1Nz1YQS9PNjxmUEBUX1RCRk1vbjVLOis7dmN+c0ZAJWI/''@;'; put 'put ''RTdBa1hwfnlkQUkoXkopfU8uLms2Xj1CYzBqNkd2YVBZP058M3whWzBxL1EvaVVvQDZXIyZqRkF5andWekl2RCNxVF5Yang+bG18biM+YkBXbmlfQCFpfj1CNkJIeWJUZUJHUnVKKTxMdiJiXlhmPlIkc3dnMnNJWE03YkIvTCFuaDp8fCVYQ2lHMS9DV1k9JEJyVUJuWyxZRX4jeVcsLFZXL08p''@;'; put 'put ''bC9MTXBkZUpLK1J9WWU6SDQsVSN2bTx4Y21lbUQwN2d1anR3VDpxbj8lQ1M2OEQwNTltRCsyKWYsWjQjQkBsMFdtNElwa0JDbCxpPmdSfk9wImFaIlp+a3dKbCFMelElIT9fRTBAcG91dDcjIUtmQSZbXSUkPWFrSVV1bGo2fmVzTXptNnkhSnUwLnFxJGhHa150WCw/YWA6XXVTYCE+YjBCXzVe''@;'; put 'put ''PDAhSyNXNClxbCE2JHlWUyFIZC5jTTwmQGYjWGY/eig0Q1pBbkJfK1AlNyZdY0B9WE9rQEt3XkJVQCVLUFpWZEk+I0MhY0chYm14Q2I0L1R1OzspMndvW301fkxkYWkoKDJwWWFtTEp6PiNrZ1dWS2M7TEU5cGgpMXEkM1VvY082WD9HSlkzNT45MFJ7Jn1vKEg1ZkBLbXE8aXovaG5ob3RhT305''@;'; put 'put ''bislZzAodGJwYzZwRSN2UTpFfmN1RDk7bDlHQU40MUAqREVFSmh0eFptJUYwSTk8cVY4MkxwQUFsdnZSSTBhXjlFMz5lKyNsWnxeWmpISHdyL1lldE8kJjkkSl1hMDlyXmhLZCMkXiI3KlV5eWtieXoxI3tIUXAlVktSMXdMP25oe0J9TVFWfEBaaH1fQXp1V1g7I0loPndAdzIwaUM3JkJAR3h6''@;'; put 'put ''fWhudnZTWjl8W2VGclhsbnYyNSNmfWdNPFBjW04kZVIjJTlJUl8lazYwJFQ2VkNLNThYM00kPyNVczNBYVlxeGx4L0tQXismTCIwZTgzWTZpbT81aDhwQ21Vc2xmRERqe0dOVk5xMUxJTk52fE1rI2ZuY1EzYHJ5OTtSXklmYmFzRC9xdnt7Wm57LmZRb1AvRVpPLiZGMjZvKktkOiJiM2lwfTA9''@;'; put 'put ''eHspJTU9WXskemQ+WyNtM19lVEN3KF5BUiIwI19DNipRQD1IWjQuWGJZXlpMI2s9JWhlUUZQSGEmNXZUTmxVR1UyVyZGM1NFZmNPUFJYJXxqPkRUWSwhJWlFciN7YmA4NSZMcVB0cypHJihXWXE1cjJGXWl5VlVIZyZeUmtJIjI0bW5KU0hqP1NGa2lAKCgrdTBIYmFGL3R1Q2tTJWgpQm9QPUpy''@;'; put 'put ''TCQxfn55azxlI1prXndzK01jd2sxJXJzVCRLZCxBU20wXkhyKnlxJSNZK3gzfkUmSDd8Mn1nSSExTFJwQ3p9Q1F7KiJGdmddaVdieSFIdmw2TyIpKEsxOSk5fCtiZkl5bGY3aEtUb0l2XyhMYGRLTz80WEkvVVk9eVQsLkY6Rk9XXlJnRkJyeztgR3Y8eXV5UFk5VUxaLH1lJUAwY3NqQmlrN2sw''@;'; put 'put ''U1ExdTB6ajp5WVF0YWA4d3haTlRbSy4xVGxNWU91a2ZfWDtMN00weC5eTnxuIW8vTzt3ZklGKnx+T2l2XklZZi8hclNKOHJUO1lyOkV7YExaMjVrZz49VWE6P3p0bCFKSjpBdFleZz5JOHkmcTI9MV5JMStEIiVdXWpfW3ZGQ3ZTO3h3fVNeWyo8NGVifiVbRFJbSlg6YFJ8dEk5Q0M8QDIiKkVI''@;'; put 'put ''KEgrKVI5cV1UN1N3cGRwMHokIzZuQnFdRml9ZmhrJTNLcz9NfXtqaTFdPFI4aHF6a144X0szSEtufCs8aHs0YmxodSFhVDxzWytVISVDJiYrSmwsQCwkQkE9UjJ8L2I1UWh6Iik5dEhHbyJ+L0RPZ1E4ajZgKGUuJDhZXVF3PE9QVnN4I2RfM2l5QkhCYjA3eXI0Nkl9Sjw2PnZ2Y2RFP1J9K2c5''@;'; put 'put ''RnwyTXw4KUJSa0tkS2RkXUY8UD4/ditqe0t1KiRZd3puSk0vI3ZHUTRWLDk6Z3dqTzNsWzJiJjVFZCpCSSlnZUJSczI4Mzo6X0dCZD8wNDh2cFV7IyI+M2A9VWs/WzFTdD8zNExgQF05O15meWIyd2gjbldCNDEqSTYuOHR0QCFmKG9pek8iWVF+RCFmKEtfcHM2SHNHblcxNUJwWz1QTVNTKU14''@;'; put 'put ''XSFvMjp9WmhnfGNENVk5USNLb3lAd1RwaldNTFZlLHJmbWVFYEJWflNUemBVRVg+YmU/JDRbc0hzYmlVNjRkdVFEL2FeQVtva0QrcFV+IWAvJnZXWE5lcmVvRXdBe1VCS2RCbSNgInk6OnN4b0lZRV87MGhwQUtjfEk2aSVVNmlVSTtqQXg/RSo6ZFJsZ2YkMmlFQHlScDdFR31zcT9WNWQhWWFT''@;'; put 'put ''bmNIPShPdn15MVhfdGtediZQOWdWbmZQUTxMUCYqWC9VOiVpWWJaP2Z9entfO2syIyNkYWxeL3M2KFJ9MCthcHtNNyt3eEZ4cmo0Lyo6UGhibSFNZmZSZn4peUk6MlJ0JGxIQlp+ZHEjPmx0TC4pRTtsREFMPjQ2VmNVLD5XI2M9ZCZmRU4oUXVHQnhUQiV4I0UvcHY1W0FfXWNDRGh2a2Z4ZjVS''@;'; put 'put ''XzptTEk7YzIqKithR1lpU1MqcFg3PG46Z095SFZBcV4hT2VvJHtBUTFhYDNNc2g6cVFNZXQ+eWthMkc5VCoxZEl0QmFtXUkxckRWajkoK3tJb1U+SmdVd09BIzgoI21mNSglPEd6c2B7bGF8aGV+Y3R0VFk6biY1M2hmZGszXTkwa0Epc3BsfSMsKjRRL1s7KH0wTD1yMzRLY2VNXVldWnZ1VjJU''@;'; put 'put ''enR+Uiw5Q2IjTVhbU3UxKl1PUE54MTldb2habEFHXSVfL3k+c1JtOHVfcEE+V2ElMCJwWz1HaU9MR2FZb3UmZF8xcDlbTShMKXhhOixXIj54KlI9YVR7U3tzIlJmWClxZTJwRnZBNTNZJXJSJDJ1VltraDlQZ1pxVUBZYiFqampNNl9YcUo1MClLcEx5XnBXKXpDODN9Ly5sbVRWJTcrLF9tZiw6''@;'; put 'put ''fCxGRGgwS0hYS0I1PEYxTFtfbmpPY1U8THg0ZTssYTpyP0IyJURWUVtVYlZ+dH5BWzZYXytrKGtZMjkkOE1lOzJhezMuPUxHbk1VZjwxanFxZ2EoN3R8Zz5YYiouXU9kcUFfIUg9bEJ5NlQ9MWVqbzdPdFpjeE01ZFVFST09aF5USyVweGEuUWRROCgiPm10SlBnVmJeN25YeT5gbSptSl91JG13''@;'; put 'put ''SCVNS0RrfiZiWVFXOCZwSVpmNkNDKmsxI2ovPD09bEZaSyQ/LFgkYy5tWixiVyRWZ2ZPWzthQm1rZDE1bF84bjo5KFskcEIvd0ZSayxaS2Zbeno4Tj5CYTIqfC92fG5JR2B3JVZ9PEt0a1EvbV5RemNYRH0mSy9EKEdeOzJ5Ok9bJmdpZGtJOUxOaSxSUklCfHEwYCZYW3wrT0RAUUEiamg9KmYy''@;'; put 'put ''Tk87eG17PU4zUH1MLDh5WXZ6fGRKc3RuUjMmYXpaREIwRj8jT09je0tyYE1MdClLIX5gXj8odXVOa11JaEI1JV5Ne09kRCE/MkRsaHEsW0RITTl6fnJGeFZ3REJ6SHFHIXxqM19fL2RMTVsqLFArRXxoeWgvKF10QFBUVXtRdzk0K3d3ZlVCdW5GJFdbU2dyKnpdWWMzNmFNJkxDJDRyeH5kJlNH''@;'; put 'put ''Nzk1VmZRXmJ+ZTxJSVNGYDo3aE8yMlFhPnoqYDdgalIkOjo/YXJJMUchN1c5cUdpdnVeb3d8L0JmV25leUg9JDg+dTVYN25DfHxoaXJ1WlFTOCtpZEQqVD80WmQ6TmBWdWEhQikqIVJLbj1sLlowJTUiaWpNNjo8SzRLNlUhYVB1TX55bUhBTDYsQCRAV0ArKk5YYF1YJVIlRTpZQ0l5aXdRfVRy''@;'; put 'put ''KTtwLjxhLElRLH19T1RkUlpDSmxIVUI4JUBnMzNDTkYrPjdUL0x3YWJfMDwiNzJJMzhoKWQla2xpJGd1PUZddWNEXlNjX2BSPVB3YypVeDd9Y1NWUXhiMlFgL15fbiowTCxoc35hUD06VSJ3Kld1eUp0WHtzTDBtWWBIVTd1RztebEZNajwzTjlpXmFwP0lLPWdpXyZvWzYjWn4yMiFvUn1GKjRF''@;'; put 'put ''NX5ETWQsRTBYIkd3L2YqMTNWUSUhX0dkQkI0aFhCIyNJJXRyVCMyKXY6KmBycFV+NDg2YWo6I2RiQC9RNCFVVG5uVTlKST5hd2l1fVFSbmokTCNAQ0g0InRCaWY+MD1jYjl0P3thfndAR3skIT5nVGA9fU9ObTooY2VQbCk3SWNYdlY9UnJlLlNMLm5QX2ZyfHVVS1E0NVcuXUQraEZ6dWYzUyRp''@;'; put 'put ''QW0oY11hOmFxMlgyP3YhJXNYMCxVPH1iW2ZHMz49PDFDOHpVSGxRc3klczY0VGN8bmo+T2RKSXpebD1mKG5+UVl+TlhgW1tJRW5OfUB8OFU5KyNQbzxVPyVkdWM8MldUPHBvVGRTTUh+NFZzZz5rbV9uUzxSMDdPWiwxTjF7U2txYyZvcD43VV1SPjYoKVFaeitiaENPdjlDWmdha2g6cClGP1gi''@;'; put 'put ''fFZadj9VOTBpYkFdNFNqPkV9TUhhT0gjR1BgTkZaUWJkN0FsRV1dMXBNb3l7fjJPOWBjI2JYbXdsR2BLLnx0UHJ0NEErdEpuLC8udV4mTnJOTkladzdFVyhjJUZeQFVUenoycWg8PzdUaWh1aU80Vjs3Ul53VGg+JSx1ez5UUnUyaktAMXFWT0N9U0AucUl4X3ZXIy8mWXImWysldn1zYDt3bkdn''@;'; put 'put ''RVBicnQwXmdOVyR5OiNnRml0NjZJOzhuNn1hfnUlZyZgdltpIlk0LjJzcCM7V3tKME83Lk5MVyl3P0ZPPThgMihtPl90d0ghTzNJSSl5OVpFMj9iWSQlVWUuYEZIekZ5X2ZuS2dALix0Pz5QJTdZXWV6Pj0lL3V5N2A/In1BK1BpU1VeaFt5dlE4Sy4wV01tVDhxK3xmWlFGKnx9IWxBW3lhSyMh''@;'; put 'put ''dnhaPXhqdDheekVoLmxgUzhiUTNEeml9VjA9Ln03JmcxSzh1I2EmbkoqcCpOOzFJYzBCXS9rRUwuYV5iQjFWLy9aVUMhfHR7MFZKOFs8bHshY2BBdVF6WThtX1kvV0shcG5MNXVWflgyWDkpai4hWkJSe0ZuV0ZAVDxFa1tFTDk6JWdwajY6Xls8KT1VZUI7UW9jdCZBVTRoNEIpXU9yWS44Kz5k''@;'; put 'put ''MlljLjIqakFVRixSLDopIzM2emY+fDl6dktAMUFqPWQ3QDBTWlFjIVpdUjtgN3t4SEMuOyU1ZHg+cFdTVH0qTUVjNjElJjNmVDFnXj0xejN+d1A9MU1LNFcxRUdEdCxvX3JYN0B2OE92ZT0vITBAOkd4VDVNfD1KUVhtTmp9STZ5dTRIZVFmMmY3eUdVWntGWEZlZSh4Y1Y0fjUmUXJAR21BTEhw''@;'; put 'put ''d0cqSG9HJmFPLHwiYn0jISFBMmpsSn1XPTR3Q3YhLiJ7bDtXTGV7bEdfTEJZRnlSLGAybl56LGYiKW95c11WLjB7V1dCSklzOG1hfnsySC5ZVjAoYnc+Xmt+JUkrYlNYMVM2UChrYypufEw3YkwjI1ckSHRQcCl8aGhndn5mYzlhYnBZPGZfZ2ZxbDF7Z2IleUdwZHswan5lMnp9ZChwSmR+N3x5''@;'; put 'put ''bzh5bHdnPCgqRHowbF1TfCR8MVE4QzlCellWdU4wSzhVbTB6RmMqPWk0aWMpT1VUeHtVKW9IOmVIN2gyZkgxT1N8e2MpQi9CYH0/ODZqeCJ2djRbX2UyLClMKUkibk1uQ25gO1hmMzV9U358KlR6eUBFP1FxPGImLldkREo7Ol5pSil8cztoI2UwUGQ7LFVWU3s7XkZHQE9DY2xDZndCTTxZUygz''@;'; put 'put ''KlR4RWpoQkYuJDcvdWBRVj9EU3NrYjlfTkFAPiQiJU9ITGpHbjVlNWs0YCp+Plp+JH1PLEowfEQoQC88bWRfeVRieUVuKUVzKE1TfjBGSixkdTp6XW56YFBEQlpbSEF0SiE6JC91PzkqVEtvQ3whQiVwdk5MYGNPSl1ZKW5Kcjo9cDtEI3MwanNlSFBrInhCeyNuUmQjdEo7XjUmNCNWWjphWXVe''@;'; put 'put ''e0ptdT4iLm9pd1dvOSlvV3B1RlBxYkEhLGgsMTF6UG90NzxacS81IWVeVmRWWVRRYjU5OXEqbCVUczE2QGc0cmNOSWdmK1k+WWMubjJDRWIlOEZNcl1HP0x+b3pyUjxZLFEsPC9kTjRRajU9ZFFabyI+YFFUQyFULyF4cSZRYHldbV9ANn1UXip6Zyh8YGpzMF5qPXRpUDliJHhuViVWY1ZyOTpD''@;'; put 'put ''U09eNjFVOypGSDslJXNBPHpPUEE7UG9SZ0VWS0M3anZFUSNWazFwTWBZdlhbPnwjeiZ1dXI4UUJCUFkjWEZCfWg0bFpVLDVHWE1be2F1VXVbazRpaXVsZjxBQiV6WTpmWlc0dXlNOjI8TnFnKXdYQi9Cc2s+ZHRLYUhsZThoPGJiKXlhT0lLfG9YS2s7ZWFmdzZVWGNZLDswbmhtInlES095On0r''@;'; put 'put ''VV5ofHtdbDxNNzMldDl8JitFOVZCPXtZVmkmI0dLcjlhRV41e2U7ZCtrKXxnb35RLil6d0csNDB1Qzx3PnQzazpve3tHRVAqVUpwZjJwfGlERkgoK11PUylwUHhedjQ0d1FpXkBRLks9OHZGMm8mMlklRUs3VmxgRzJGNEZBL11yeEBwI25HMWxYaGJqWjN6I1Z5T1NFKmNjOE5IM2Z1TT1Ea1Io''@;'; put 'put ''YSR4WHFyPU9GfVovPlk1YHcoZld9PE9Tc2pWLj8xeCkyeXEvRWQqWy56VDF8cH0+flJfMy9ARlozVTIid0Y8W185bmxjeCYxInE/QW1ZaVt9UGNuei5PPmVkYmRaK3MiQVYxLjJOXTpkYH1dI14lYSwrIzkwZSU7LHNSY1tmfVU5K10+bFtlL1NdUUdVY2NnRSFvblAoe3I1dyk2XztHVjdaMTRU''@;'; put 'put ''MXEqdlV9OENJQnw5eWJvZmIwPjYuOnlUclBkfjg7Km4xKnFfNT5xTWVTYkE6T0hSfTpPeV5dKzY8YlFKYSE5W1tuSnpBSmtzRkpkOXF0VXpmRndhRCxNWm0uVmdpRiNhJnQ0Myg3L2dPc2NaIVBHOTRSO1g9VEhMOWBGOm0oNEJOSktgXmR+QUZVaHlfbHdKbWdbVEV1OT9xeDd8LlFGTz5XRkl4''@;'; put 'put ''e3N4UnZpaVYiN1EvTUlyS2h0bHJzU093e3tlJU1bI0VASndfZDNNNkpyTEtDaD43K2BLeHpKQGUvZ2t0UG1ebjlLQm1beyhDXiFjMzY6c341fFtMKXdhVmheR05xfn5Jfj02Tll+Vmdlc3B8KHBbVn0iOyRsM3A6JUs2N0RubT98M0hpUkJONz8+VUErd01wSEFydnN7Xi40LmhwY0pgNDs7c3t4''@;'; put 'put ''S05+cWRGb2c5OF82fDZMNipjYjl4N3loezhWfFZMWTFsUFlYUGsyZVcwKns4Vk5keSpEIiJ8WVF8PHRyPyFvOy5YQyRwc2F2b1klRDRXaShWZ0FxKGlETnZZaGozLG54WT1nZjElPUNNdUAhKGlVMFNLLlU1UjRCM0JMOyVgbld3JTo5bzFpfWgsMmV4NShMRTlPVX1OVFkwLjpHRCkhSkhQRVNn''@;'; put 'put ''M1NRSXUqbGZXU2siJUo0b1Ztd2UoWmRwRj5ZbHFyb2gqJkg8Vk1AUW1wX0U3bCg2LERVI0tmJmJlSVdbUCReK2ckO1ReMlAsentKSG9taVgxfEQjQl82LF1OUUhrenslRXpkTnVJaSshbEtoUmN9fD5vNndZPjkoZXg9T0lafkB6JmIyISJESW5yJn45UG9ELjFEImlXJUcyKyNgKDdZYkpZcnNW''@;'; put 'put ''OTw3dEcmXjRRVXlnIkNdZjlZY0QhQk0iV0I7LjsxMSE8bkZPSCZAW1hWKFNZU1AvWigsKDwwOnlieSpseUtvSFQ7LGtTUVUmU18+QEdzSkA1UjtvfmVjT05IIyw9IyU3OkhrbjpIUlZveTBHP2A2WTVgenVGZnJbeHE6dkJAYmZZXmx6a1hvZjp3NDl+by8ySG19SFB0QjA6IXVCQTEhRylFI3pj''@;'; put 'put ''MGYlbHAvMWxqLF4zSnV6cXY7d103R2MrR2J0XnxhbDZbbzhgdz98RD5PMTNdKkdpVE1CVnJEcytmeEs0ZCQxVC9tLGMySzFRVGtPWWQxZFZ3d285IXlLS2pYZXc2aSozPG9XTGc1dk9+OGR8R3Z0JDU0ejZjY1hrWiVXVVRtJVdHbCF+QlVDMjQqVEJjOzNGOldDaDQ0bzhFMUJedi9NRnI+cFtH''@;'; put 'put ''R0R1VytOR0lXRiV4ZylbQmxOQkJaQyJ3PSN7VTUsOikwXiZVR2VGJEd4TmVsQ3BEK2E2dXlXISlGMTgyZSVYfCEzeF1ERUt6dXhfRmcjTmFjPj8mPmYmUmQ5eThCKigwXUFQPT8uNlRdK1EuRypGWn46fF1IdzldZjFhVCQmZmdsbW19JGUjNzJLJj09LlFUPSVnV1VmaH1rRyZTb0JbfjdbfmxG''@;'; put 'put ''aUlHfTgsQm1jdU4kSy5KVWMrJkp0fm9fMmhXZ1lNSktCX2tGeG00X0diTlslNms3cHJeKHxmT2lJd3MkKmZeZWZoYyYhY3gxSUNMdDJVS2J0SmZPKX57JiouSCZqNzU9bm0sMS9AQFB+eU9QMk46UTpqRUpTKDVnRzB8M0huR1dANlRed14zdUdoejVDLEkoaHRQPyZBbkxMMUYvY24vS0JmXj1F''@;'; put 'put ''WUxXWm0mYnw5d1ZJcVFiSmxgfjxDe1ptWC9tXTtGITFAcW1OZ2VtZU9BciljZnw6O09CY3JZMTdjKXlaPTxZY0pfXWMkR1R+XzJxIzU4JGlOLCNDc3pENFA3ZGo9VUpkYVU1Pn1SaWQoYT1SI0YkfFZwMnwlRCRab0RYO3k0REJ0NUdIOVJIL00ycS8jdSEjcmFhfGUuVGZdT0l8LEBgbl45S3h2''@;'; put 'put ''Nm5wdCQpNFpbVixIXSpUdngyJXZIKlA4dj9lJiVqZjplJjgvKjU4YTQlNitQLGgvK21EMSNmd109QFtEcjIuLispJmd4QjpKcnIwQksxUkshTFIpcVI3KmxmTyFPMlR2R09ITVJvNjo9czV8U3BuOExIIVpvMkAkLGpGTHpqUWlZWkgibH1tenlXKkJOJVhtP150MTJ9RWUsdihWaHxgQzxMXzxV''@;'; put 'put ''WWohKS5dOztdeXNoUWxDTmNBWDF2KWJDaCFNIXFTN2MmfVlmRWY2UClsfGAwRnM/KWQ5S3lieDM1YlRiYDIldyZ9bSJ5KF9Pbm5ETzhLTU9DI1ApU01kXXhHVi9AcWp8PSkpMHQ7PXBZe0hoSVFsNU5lJEZtTzEwaShPIiNvUjteL34sM3RBNiwyYWtWe31AbUxhSXpBOVAzXkt2Wz9naXwzLk43''@;'; put 'put ''TE50TnhjZU4lNVNSc1ptT1lZPStKa0RSTXVXfER6Sn5ZV1Y6QiJEbTVxSTYkPkgrZDNbITJBb21gdE5uUGhQInhbSHkwfEB9dCtWcmh1QilVciFgd215X0d0JFFYbHFRPGllbXlhMzV5eCskbSFZNXpQLmQ4QWF9UnpDa0ZrZVlVZktZNyJrISVsKlo7MD9aKFE2WzBRbzF6SWJNUXwqKVhpVEUv''@;'; put 'put ''UjNLR0FbL1RARWlReSlCMER1eS9Bck1VQXxbZXtKV2ZJYlpqQWpaRWg+Y2gyJmxbPWp1dFhVTWI6K242O24xPX4vV2AwJiQuank9PGljOXUubzB+bVNDcjxuQ3QqfTVBIURYOHl6e1siVD4uWntRVDx1RDtQTzZgPi98NEhRaTgrOERTR1s5WV85PXIhMyl2a3tyZG0sfUp1fCs3LER7c2Rydmlz''@;'; put 'put ''YH55czpgdlBpd1BNbUUqVk9+PUBUZkR3TjMqWi4zQj1tVVNkMyJ7MDNjaWZ8Ljp3NVV5Pn54Y2JvNGledVY3IlZ3OUNGNEJxV0xnMSVRUGk/e3xJPEFqMUMjMyE0OzZgInBWWEwlKSQ+MU5xU3ZSdEVqbFZWODdzfE9rJmR3OnFyMWlfKU1ORCtIb2RmSGcpPF45OzJ4Tj5BeVRhUlB7NzxmKnMv''@;'; put 'put ''TzZ0XVMuKShOPldhVW0lW05bLyIsaDVOKnVuKFd4M3JmNTAkXiQpYl0uYG58OUJOKTR+MV9FZSxYc29HVj1sYTZwemYrUylgYm9CeGtfdllPbWRFXysvR3JZek5KRy8laXx4czNQci8oS0BWXTJ4aERRQDJAZytVcnxFXktpL2g6TlpuWERwXXtwdTRZL2VDcyE7LGVuVGFbSkMuR05PT2xrc2A4''@;'; put 'put ''I2s8Lk5LbDUiKXhuIWRxVlEmZnNjdU9HIUUpQW92Wz9hWjUiOTBNV2k6WyVkYCooS1pwOk5HVzJzbmNieTh8MTZHVkxHR2BpezIrTUZSNDk3bGl5W29xKEIrQ31nXlZXMD4rTmAjMVlNcWduVWVTQ2tkOW0pRDh9ZEkmeiZKbSVNR2t0L3cyRG4oMzBeNnlJOUd0ZztgKzp1eyhOKnM7Uk9KNyJD''@;'; put 'put ''PlZMKUpRNmZXSS51Vj5kJXp8L21dQVRnZ0M3akR6amlyI1k+Rm4/flZfSVdYNHRNTj9qcWZ2QmNuamRUZkgyblZYdj9GWVFdaV1KQUYyXV1eK1AsNysjbjhhdSxIRzFWdHp3N1F1Q2JpKCg4OTh9WFhEbGJEJGQ3QFNDIUk1LnsrNk93dHhYP1Q6biU6SVg+P3cybnxSInpMXSFRV1VVIV1JSV50''@;'; put 'put ''SnAyXmNWYEE5Lzp4VEtZUVNLZikpQiYsOzR1T3JtTkJMUF1mQmJyaW90cVlbOm9fMzJaVkgzLkl2eWRPJGE3UGsidEN6PlM6d1V7L2lNQml4P1ksbDk+fXxULEVfPVl3P3ZadkA0YzkxdWNHeC97MT02TmJDUGk5SUBVWlBeTV5WVjBdaEM1dEdrUVNwb2NKLmR1TllVTnJgRyFmKEVqfDFFKUwz''@;'; put 'put ''Z1ZIdjAqb1V2M2J+JWt2MkIqVUxsY1pkK0JyTEV5XyIqbSJCbjVCL3A9L1M3P0l3dVY0azl0O2QySDVQPm5qSC9fbUJSbyNLe21dTlJKYG5rKUAjLm51VEE6PUxOWHYzWkdyVkhNOCsic3hCKkVPUGwzeHNPM2VlWSZWITxNcF5Yb2VZcCYrdiJXVTg/KFdYZCZnWHMlZGNyeHU+eiN4Wls9O3lk''@;'; put 'put ''SjFSPktFO2ZYbm1iUUJrKVNRcEhZdWcia2RoWX0qTX1DPVIkSnxDMW8pOThOWU0vcWQ8JjRPZD13ZzpkSCN1KypOTz8/dnEydzZEYiE3MjwlQyQldTBFWHE4Mm1naWl+WFUoQTFTPUxPNHNxVFlsXWguNTc4OXdOKih0KDZTOmckUzRlZ0dKXkVAOjNAY2EjIVB3KWdiWGdUeDBbZG8zYTw6VnBg''@;'; put 'put ''UzlwTihHYSJUS2JMIjoyaUV7S1FFaH1iRF8rXilZYThkbSpRS0BoMm0mdWQkYlE5c0YubDddcl5rc1AvTnZbTkdORUR1QF84SWNdM098P19MRWEsXkI6K1kpX0o9XTVoWz5XSjhVfHJMN3ghRjl3Zyhbcj9fQnlOaVdWVnRKInNXdEpgQV1YP0o1L0NWSEIqX1M+e0d+MnhMfipSNUx5Q1R0YnVt''@;'; put 'put ''PSFFVF8iZD14W3REVSxHSXolYSxyRzwxXXtackZ9eW1aflVNUzBGY3BDIjhjPHUxXyRoeztCcXkmfisvWHFrNVVOInZGXTY3QFNzM1NVa2E5OGxTdSJ8KStzdHpbMil+SCteJTl7KSU/Zj8qPzNVUENSL2F1eiZ0ckpDOGE9U3Z7LjY0QVk9RTV7cFAoUFZpOUd2OUl7O3xPSnJ1WmhYYFpNYk5J''@;'; put 'put ''cT1iUlJRNFAxWTIyfX1pN25mfTZQa1gjWHUuSS88XmRraGx1IzMlKEE0U0BfciJmWmtQWHBMaX1xJip0VmFNQm93c1tAOiovO3gsKClZJFpxKWFSZ1IlVkMofXw0S2V+NVtnRSE8ZURnOThYUVRjU0BoIl1ZViswRFpoRS5GI2VHK3ZYKTYrNltjMTBgMlFVMCtaZW40emUpZ3Q2YV95VHEyUTh3''@;'; put 'put ''NXtsLDt7UVB5dCkieXhJdUpgN253K3RlLkJYRDQmUFMiQkwqPmckKihQWkowPzhDRVdqcUA+e0pnbz1VejtAP0spaUo3WnY8N0tqWkJISH1hbVVhUExNRFomM1dHXWAxUSl9aHFnOE9HJmsoI2I7THVAc3huRHFkcUJ3L28rZmxMLm0jISY1JVFWc21ubndBSmspQ3VGKXB2Z1cjWEAmMz1QdnFF''@;'; put 'put ''Vzx8Zk9hXmkhbi4sUXUhImRSZEBmPFU5dUo1OH5BcFU/dHt1YUJbPDA9XSwweTlMeyFbWjBPcDNnW2pFSzJEdklMX1dvYngqQHF5TEdjcmg+JiF8ZytwUykrb0piSFdyIzVnb1ApNFVUY2VrOE52OTdvVXRkNn0pbkhGYWE7S1AoOyw7ZFchJmhXbCFqa3o6Xz5mTXR8VDkkK1RvS2hLdGpVWWdo''@;'; put 'put ''LiNTMUZBbFQ9eSRkZFN4X0ZSL3ZqL3wjd3NJN3NsJDkpTzAlQGJsT2JIUDx+eix8KGY2Sms7dlZPdV4wUjJjOyp8aX5pLHptMT0qMl1bWHtvWm5ZVVooSzx5Xyx3SiF7RWM7L1paRldabnZ+Sj0+LzNLdz4jYCwzWCVPNWFScEwqdGBdNEQsa1UuZV1mWldvXmhgcXhyJWhsOlA7LzExUlgoPCss''@;'; put 'put ''JTI9RmlMfmQ/Nz47XXpjOXY1UGZ4QkY3LlVYY3ZHVG5DIyQ1O0cuQGNpcjRxbFJuUXYkYVhrRjI5RF1lMF1le2x0RXJZIWoyUDBeYkxQN3c2djkjJS57Y3Rbb3lmbmY1UyleUzhMUDYuKUIiKCg7NUd9Y28ybCRlbnhmWSMiYzpscV5uOGJqT2BCaSohbGN5KFZYVEFjenR3UUAmW3c4WyYrX1A4''@;'; put 'put ''SXcrXjVKYiU1cVIib2JEQm08dmNDSF0hZSNpVXNDS3VHVSI8aD4ySWV8O3RxMDFhWSMmMGhneWtWLitlT3NWRHUhPTEofFcsIVdXSENCXjYoWjR6UCg5RE0vOWMvQG5yYSxqKzsoYihXZ1N1THNxQWY8T3xyZWFRND04YnhbXigseSFgNl01eyk5TFh3dVhIPmV9W3wya3ZMMSgzO2opN1g+XT1+''@;'; put 'put ''cCNEVSVGX3FaK29XQz1Yfl1XRHdLa2NjRVsqJHE8RVdFc1RCU0hrX2JuQFtMPUVKUDc9MmJFYDwjIVpCI1JyQFBCSU09dSUzaklGUWsoRy5raS57X2g/blNVY1lFY1kudmNmbDVHOFI6ISJ1K2o6fiRKIih6Qk1mVEVCeUpKJDJrU2pjeWlII1JdcW5xYWB9ekhxUy45YHY7IkpjSmxYRUx5LyRR''@;'; put 'put ''d0NsbFVTd0l2MSlJV1NOelJvRXRpcU43MENKImBMZyE9Qm1CYzA7Y0dTWV1vL1Qhc3I9enp+SygsfXFKRGdnJm10KnZWPFowP15jc0d7P0JFSEMzSEYpamJ7fjZiIXxmXnx7OEtjZVtvS01AeDkiO3BHU0NnYWlVYjVZcDQ9P1Y1dEJQYCFWeWhKT0J8SHhYRj1gfWphIj0rNntbaEtLemQ9SSNk''@;'; put 'put ''ZTBudnpwK15BbnRWNj5WfURBcFg7LmhlUGkjWiVKPX1ed0V3dnA6TU5TJX51Sig/OW42c2xOQyhGeEt4SCE5SE9Rc0ZzaXV2NVJUV1VpRTI8SC82PGwpVyJJY1NARTNvIjo3aF4vQ1oiNXApUDpsQC9PX24oT0toSnJCN2A1VHZyeDlbYGw2Z2N6RGdYJD5GP2d5SDF0aW1WdzdFPyZpQz0uKnh1''@;'; put 'put ''cGQhQ3lYPiYyLzkqQ2g5MmMqZGkhR18/XzgzeWMqJnomb2pKOT8oQlQyRWt+T2VOIz5ZbiFzbyZbc0N2VzRePz5YQSNmTEdFVUp1cDkpQVhTNWVeWmRfTCF8eDduL1ZsKTFNJHs6bzNPUixyLzRyNVlRbCg7anRoMVlfb04wSktAWjpgO2h1WlVyZmBoWGguXldPbDBISXthP1Y7QCxBZi5BVlFX''@;'; put 'put ''R05ScFtDXjQuVFAzU25rbEpAX2pGa2d4dnZobCh6VUZqY2dHJlpVO349SVd5YDw1RiY6Y0ApMmdVMyJBSFArNVhWK1t6aXd1JTNEcWc8cExwekw5U3NyQ21geSgvJWRPcFtYXkBYPjR2TVtvSFk8U1B6eX1CLHpdRGZRMVJ0TGU+SyxqaWxhNFg8MlMwMl9QfWxLLi9MfiUvckgvKysxPW5SKUVV''@;'; put 'put ''NF9JTlhqX3g0TFlrO2hrWD0qPn4rMi4+bzpxIXguOGJ7NzR4Wz5JU0wjeW09RWUjK2w6eHN+TWUlKjZOfSJJNWB4S2cxTUd2SitucGteTzNeQy9WWGlgcGJESDZ8OUVTNW8lbzBOPF13P0JeOHduYFlIOHEwYzhgdmVtXV0vITN1YmdKRihWXX1dWE1ZMHlyInZ7SHR1TXxLYGp7e0xUM2BpN0B5''@;'; put 'put ''RjNnW1QvW3IvOjlHekNfcClNXmwvaG1nQzxMWWtzeW01cjlFO012dFIiQUYwdmMsRTN4fm94T1UjZEI4T05WeXlOeWRwI2BkW211bzlWfiNrKWxDI0dYfkc4WjkvQnZFRlVwOHhfTlleUWZdP3opWCI2OVpUI3klTU44LzYrRGc8ZFFYbEA4S2J7RTc6QEB4PGUzPFluJGQpbGtMLk8/JV04SXx2''@;'; put 'put ''TS9rITZ8dktyRHhnPHppKDJDIXdbKGJ2JUheSmVYa1tOIiJPP0liazRHUGQ9Lz00XVNQMHEhYWIqbEhGa1UuWyE4TW47KlJ3SS9mUUV2K0I1PXZ9S356WmtBPEoqZjFPc11RbTgyMjtNdzc3JnEyfk8jVHhjYTRDd3Fwa3xwOS5bcm9TN2JpV1lQeXd1Q3leO344Mng/VD8yLHUpRzdnaFAuK3Z1''@;'; put 'put ''NEYlKnk1dHg+KyQ0SWN7N0NCZ10xYEBQfFIyMXl0Lmc+LH57KnZxP248bns4LDk/ezB3Pz1KbStOditNLzI1SkJ1ZTRUaGBMRGNjYnpjLzQrZ3MyIlI7YG80SHw+WTBALCNmY0ljYjl0X3pISjd6WyZOZCEvejZsdDdnUnw1dHx1ZitPaXozMTtNTG9bfVhqcGRpRXEmOU9GZFR1Y1phM1oxfEky''@;'; put 'put ''Rih0Z141MUR+O2dNTzYydSVNd1ZzX0NZYlledUJDcEFmIyFfbnZmMH02UDh3KnArRlYxKzAsYnhnRGojRWxSMHtlPEUhInJoXnhtLGdOSEROUD9kRDh7YCFscFhKRjI+OTQxai5jLzMlb21baCUvPVchdjhlSE9hfHxDO3x9SzclWz5pQUpqRzdyK1kyUDNHWHc3KVF8dmdiV09VTE06PldndVR6''@;'; put 'put ''Wzo5JmlhMVBTVVYwRlUhYC9ed09sdj5jWDtIVlhEKXVlayUmUj9TYHtuel0vSjJSVW85WyJOd0NMM30xWjhPY2x8ZVd3NCp7ODI7PkZtVnJ0V25IZH13NDpxWnNnMGJAYE9rVXtIPnlBeFYjZ1NhRmlURzlJPU9tPzZWazY9fTcvdDRWPDl1L2BSbTx4W0xSIXdpaV5NMGhEX0ZCRyhFNllTPyt+''@;'; put 'put ''KGYmVCVHeGVFMVR4OWRLcj0wPG12ZDNiblBPIjkraTkvMHIoJTErZnQyKzxdVWssZCE8Y2tnezZaN0NYcCNidTN6a2NiX2MqIT85TjshIk4xfXxlRT9wJEVIOkRoMGVJPT1yRiFsdjBteVFOSVozXkNjdT1DbVl2YiljZl5fRSxFeEw1KSE9MTR8dU8/YTpQJFtIanBnQTFiRUxacmxebDo1RC5O''@;'; put 'put ''S31zOypPNWBfME1Ud0Z1dkElQnwuYnVLOW06U3VLazVrfUpCNlllRz52PnF1Q15sLihXZUddd0ojWjxsPHM6TGBiKURlK3B2LyQxclopMVNzPSNWQ311eVcsaWR2TUwpdXFKUktzezIsfnp6U1JMcEFDKTRJNkBMRS9WdWkhMSpfWEZ5PUw+JGkpfUwhWnRKOVJWKn5XcVtNZHk7YjI0UkRCIlJ6''@;'; put 'put ''eDw1YWB5ZDhhckxqM3VETzhDUlQuS1NDZ208SkU8SzBxczRiJnZMYG5HbFA+Sz9QLyVxKV1gVigyamZhTjtnXUdWIXNaVGpPY1NhZGJXJiU3aVZne1JZWVslXm8hZkBAdHNSQ3pRUi82VWZ3UD1xZnxxOFRiOGFePGRlZEp4LDhWc053NGI8Zn5sXls8bHtmZjE+OkBXWVBeO2Y/IVJHdGkyVSpe''@;'; put 'put ''LnA/WyxWRyE6TyVkJU5wOi55fCVFTnBdVzB8SGtzb2d9cmJRPGFUUzRsY287ZHFvfDc0MFJzYWozV3lsbmZBdWpnRDAjOTRAaT9SZ298LjIoXjdlOD1OW1NQQCErfDxVPTdhZW9APEkmW212Um1oVnhgP2J3YC9Zbm9ZYTh5N3JwSDMyWlV+bHVdPyZtMChnVX1raWlWdiQ/LGJFaSY5eTRKJDUq''@;'; put 'put ''QlkpT21vbHpwWylbXml6fmQ9IW9jNi5JYlVheCZjVyF+a25MYD1MRCV1ZmxiPFEzbD8qZ24rOmZZWjNjPjQ6ZWheUF4lMFlMcm05cTFdeXVyQjhtKF5FVVBUVmEySUJefjoiIzZrPTBrZj4xNEp2XiR1a2VLTUN7dl07M3hzbUtXc2smd0U/YyssOXlEO1NOMFlpfmwqejByODB2OlpBbCVnM2Io''@;'; put 'put ''NUh8QSgqIVVrWipCQWBjT1EqeCRubm8qfDRIO00oJWE7XjlNOlR9TT97aH56Qy9JRTtbND16MiFWWFUwYlBSfVs9Skw2TDlQVV17dzBOclFvWGchaS9sP2hAVD49ZUcxXnNpRCgiRD9iZHBxQHxsTUBLNnBgKVMyOz1UdHNoYUhAaSl4XWlDKGoza1RUcCVqUHxOTTBrVi53KCopYCRNLEUmKFJz''@;'; put 'put ''X3pAVGBmc1Z0ej9hZV15fTh1cVlDIyt3W0pZd2M3ZklFNThMUCN1c00rdXQ2N0MvIT5OQn0/bHIwfGQ8PnN3OV5aPnBgKC9DeVsyd31dXyUwM15bZih2Wkk4PiROQVEiVyVqP2F1SEFoZGUjaXMqIVlpcWFddWNnaWtra1N7WlQ7YlshTlNWR1R9fGBpO3BxMEwjXmVZbjsxLEQqI3ZuRTA9Wzkk''@;'; put 'put ''ei9DcWlNXykpUSkoYUNYaGhYJnc2MUxuZztQXndpci9OSE9wZ1RHV1RpRTg3ai8qbGNVWW5tejkmPX1LSEIme0QjaipuKW9iQ2AiVj1yYSV3aUMsJSZ1LlZCZDovPUddYClyI2ZoI00lRjJtJkBFTGxrWEIkK3FJNVcmQG90Ojk8T2pCUF1JbG5YLCUyREgwVlo0SXxuSSNkVixGPmt1RkJOI2ZW''@;'; put 'put ''SHZdSl1SLlZYMEgjPjwmMUUkXU9kPTdKPWZidTJQPVFIZTNkZTFqVWZtNz1VbVlMUmlyZ3o7NSF3QiYmQFJETCRwR0hbYHRUNUFBUWdbZiFuUSNkPUdCZWwubCl8QDtjY0VYZXVzbnRxRntFaTpZbT84MTBYZjdTfnBIenIiWW9IOVIjJnZES3E4WyF7a3xZZ2tkJEZqS1J5OmtdNjQ3cXo9MiJO''@;'; put 'put ''THNxU056KDk1Pl52Pkl8ZFIjYHJMJGRbX1BLYTk0LmhfOyUraTUrVEhHM0w8dmU7XWxOd3JNbT1jYkhkayluR1ZPVzJ2SnhiI3FPfDpjcWlEV3tuKF4vNnouQWBIRFJEbG9pNCl6SSZtNGJSRzQleWVgWUttNEtETlRlUTpDYms2P0Z6enF7Qm8zPS5mN3JENGZWTiQrRyFKRHZUb3ksfj5XY1Q2''@;'; put 'put ''WyR6JHQ/Llg7KzJvOVc0dFp2cCZhbjNbP3ErN1Joek9LNCVKXiVZYnhOKTNDLCgvalhVXl11cUkyaEMlM3FOcExBdllFVVg/PUA5JFt5c1hlTSJjWVJPQTU8PHA6KVJGVzcpLEtYTjIreUklWEhvZXg+PVQhJmNwNmFTcDpWVT9MVFIjciwqJXp4ZCQuOkpLenxybWE5SCU4JEBQNlp5XnBRdGxF''@;'; put 'put ''ZT49LlBjV2Ftb31qRSxeQ3FufX5rS0F0O31zQjEoVFFaNC8/dmVxLjFqZkJbOzNERCp8Jl1bODBLIUxbKWV2bEFDazNgXiFrYUNZbD4+OW85dWQ9QWkiY18zIWFrYng8RlM7eSF3KDNUUmJ6Uz5mMCRHWGM7PjE4TkV0ZFlnKCNUTXVsYFowe3l1V20obGx7IS9ZIlIzXjJtdWcjLGxueytWWiZK''@;'; put 'put ''U09zQHBtcllhYDlSS1dIT1NpfGFQTH5PWjk7RVRTWTdDLHx6XjMvd1VHZyhWQ08oKyk9I3RMKyxnWDFxWkpRdX1ybWAvJkxDKjQ/KkltaCFuYWZrUiJddkA1eGB9W3YlZjFBSVNRKC9KQVh5IjlTV1BJY3lYSlB7QnthKTB4YkVUVjR6LClYKUpuWUxUO1VuIUxAI01+MXVNP19rVUhuJj1GWEo+''@;'; put 'put ''ZVErKVh9UGZQQnw2OCNxQmZxQW0je2k0LFZfeHowJmlLYT16UlJ4S0FmLkhBZ0pxKWVbYjkmU255ZDU9N3UhfDxLVEo1bFBxVGEjXjdEeW01MTtlPG9Xek42fFp2RmEyelE9WWlFPGNxbytpSFJpJTM6VzdAengqZis0c19eUj1wUnIpRTU4SEgpZCl0V1d8b2BVOnFMdEBAeGFnfGp0TTVGajRU''@;'; put 'put ''bik1ITA2ejhYPUFIPT5UdD8iKHlrITwhbD1kZnZGSzcoInQzPXZCLD13N0UpRjpuU0Z1ezhOUHtNdzA5XXg9WzxnI2JHIjQ7YFA6YDBoWUBwMUFJIkRYLCF1Rl9tZEBKUzE5UmVmZngsbX0ma1VEa2VFITw3dihWKmo9OE0pT0RLS04wJGJdRG10e3l4TU01aXpUIl1sOVcpLDk5QnI8bUhdTC9n''@;'; put 'put ''QUtVN3Q2W140eDszbHo+MT5lanxGJDBUKXd4NmpTQnY4OjJaMnlBbWE4Vlh2LlYmIVZzRT5UfEkwWEhmODI3ay5GdT9VPV4jQSpDdDBaQUFieHtqNzREQjJtKTc9UklGIkJ3QGl5QkdHaDdCR0N8WW54MVN3USxLRzFZNHw8aGZxWFRIZ3JiWHtLSixvdmdafGh5Z11EPCQrT3lnTXVTcC9FRThr''@;'; put 'put ''TmNyb0VbcGIwcjt8MU5aVl5NazFuMzs8JiFQbDslfl9OWnpUVixmWzFgRiE6PVdnPjYoNih6OWxnYXNbW3lOPEhPKXorNG1kcV5wS358ZUZ+V1crfmZ+eiRtRD1WNFQvUzZabmEwZCxyeDVJdWFZTXlWQH5KX0lDKG5iLE1Me0ZJdUR3ZV80Zzp3RVJaaCoyNnc2JkovPktsejtkJGZxOlN0KUpx''@;'; put 'put ''MzsoNCRscGdRKkw9Y20jXXhTfjl6Jmx5LlhESDFUSE1CI0hHKCpKKHBhJWRHNmVvcjMwO3hPUkg2VmIhQ1RpeGlBSWQkPCpWMUl5eFZZVSRNIikwVWcleCpVZnlkUG5GI0VPYHlfLipQNigrfEI0UD1HIWBFPT5FXkA+cGpjeXFgXnB5PSxTeFh5IVRbR09qcUU8KUhNdjx3cFBGQHtxcExTaHA9''@;'; put 'put ''em9KXVpqNEMrIWBWSz9gV0ptMSV1dG1wJF9AfT9ZMTZ+ODkrMkdGYFYqbFolVEk9NHVOaF1mfFRbPjg+RiJafHV3QiFvRDdne0drKWpBX1o/YGtdTzpsJHlUcjY6Ujh6XU1hJHlDbCxES3hNYXt3PWg8flpYLy5wVTJJQUNTNlE6YixXVl4hP3ZJKSpeUlU+YmM7d3R2XXBlWyhbLj5MflFPWFJA''@;'; put 'put ''I0s5dypdb3grUCpZK1F5Pl82YDlsX0RneiNHbG0pTmlrNF00V1AzfFBmLiV+a11wK3I1TzttdzMuZGNzb0dBUWR3a0IiIWZFZl97b2RxRlI5JXElKWNwNmdWOigiNjBWbFd2JX58I1ttW15xe3dMVnVPd1lITFVAZFd7LGc0SE5TVzdGSXk2S3lLU0YkZVNnV090M3F8IUVONV5gXlFacXtOIkVm''@;'; put 'put ''ZDlTLm5eZjorYUhie2F8PUpwXSxvJTkzaW5IZ0lFZmgqQyZzNG8sZGcmfHFiPU98UHF1bUJOTl1bQmJuRHNbWEhIbT5VVzlBMkNddipFPHpJNV8wZiFqOjVJViolcTlAZG1PXS45d1pVOmc1Z2pTbDVgPjNQZnpjZkUlRSgqJUMwKDUpa2N8Sy9SUiolT1s6b1VrZkJLe0sufSNpKj1XJlhjIyxd''@;'; put 'put ''b1EjRkg2L0pFZz9JdzNqR3JOLFRRI043JCNCUE4sWFojfnBDQ3NkRV9IWCJlMn5gR3coJV8saU56d0dvflpKZkZKSypSXylGQTVOT2xodnoxN2tWLlo2eF9DU0NNUltyezV+NnI2Q2JPfiJKMl10TmNKQGU7XVFFTyhIV3tsNDUpU3EhRHBeU0pjTTxOK35PcTJXfHdnX2hpPDpyX2dKKiUwMnk7''@;'; put 'put ''cFNDc2gwfXQ0cHozK0doRWU5ZjdvP3xsYz5uRF9iXj5OYGVZcV1TZXhdci5jW0tKMzooWTYrMT9RY21iMz1WLCFNeC9+WmIzekJ0PE8mbVs5UDQhW2ZIIUpNJndRbU46MHphLnUlY0ZJKFA4Y0BPPXo/bSxUaD1QYHMoME1gYmBsNH0sU3UxT3ZaVTcxWnVmQVdHflJgNER8RFIzaHFMbDR3YDhP''@;'; put 'put ''TEIpcTYjWVQ7MUQuKUV3NjskbF0+fk4xXURofHg6dmd1bCZiMkNXVDZNcV9gaE09dT0/Zzx2S0I7UE14THQsO1FLRERAdF1XOEIwO2Y1RHU9ZFUjcmV7cCs+TWZhQzMyOjFkbj8iUmVubUA9VUZEe29AS1l4SEZYYWhOdHxbVGZ0a3xCdGd8XXJPZCVYN15KJDlobS4uL1NZbVldV0NNKFphNUEo''@;'; put 'put ''JFZMZXBzZFBfKkluailEJG5NVUk3ST15I0pRZShVeEtvYkZsdUBGeChpfVYyIWRDJml4NzcoeCEmNTJHLkIwWDE9bmBrNUwxYDpLUFNqJTZhJDVBJEVjfmRVQCxiay5+X2QqeXYpZDxbel9ZUSEvK1NFVm0wMTo4KlAzfTcjOTBFQEpfKFttZlJoMjJSYXNtNylpUV15K2hdYWFPRTBJYl0+diw9''@;'; put 'put ''RyFCdFBGcHxlWCElekBNWVoobmBNWlg0bl5Ncik/VVcofktHR29bcDZ9K15rdWIjb3hWYVc0X3xUek9DS2V2byJSRiE3fkAkM0UzWzQ5WThWfFl5aiw+P1F4KGBYVFRXRjs1dzMmUX5sX040cSVhfGxgYSN3bTRVUHZKNmd8biliNClzPm8sL2xFb3M+WHNxJXdtbWQkKUFKVyNEZEU0d2lgYTl0''@;'; put 'put ''NT5pOHU2ISkpPkxCUlt1PFM1L1prMyUiMkZBeTd6e0lXPzszMTFoMGY8fTA2KDNucEFuSCxnTW5fMVBYT0M1RWU7YWE0OkxLaT1AN058aDRjPm0paV9yRFpnIVBrOFsiS15hZ2s8by84RTNNaGpgNltyb0dCXz0haENFIWhRVGlhRkdMQyRiMFJtOj1lcz8uaGZhak47cXJvVXopNDpXSkF3TWJL''@;'; put 'put ''L2hKUnhIPF9Pamp3eUNlKWw5TEghcTI9enhDMnQrJGV9SSxPZjR4PH04RTklb20zJFZ1eGhpb0J1KkooOiVyNU47a0w0PlNSIz0sNmV8QWtPKipoIlczJnNzKnZMVTlaLmVRdyZiZ35WZiNGPGQ6TjdRIjZ4M1VHNH1Ndz5Bei8hS0MxSy9EPHMqSjVePXJ2PjMhW1Nhcj47ZG1kTmZxOEZBd189''@;'; put 'put ''bnAvNSM5R2NuWHU8XVFkV0RROTxuNHViUlt4eHZkam1VPTlIZltCUShhOnNkUDAqY29lSXRaWj5TNSY3eVpVR3YiZXJfInIyXzR5am12fXBHMllpaX1DZGNvOWZZaCtMV1lHeTdoSypfTX5dTShTZGZkem5hZSVwZ2E8QHVfXWJeYTZefTJXTnNGTk9+bSxUYjQlIiYoanUkJHs1MSJlc0hufTE6''@;'; put 'put ''UytoQktWJU4kZ2kxMX52KzxULGtjeTYhUyEjWDQ9cFs6ckRpV21AYTgxeGddc35UWl9MaEoyNDsiKU96NiFuWVNGZGw9eXc4UClaWFBRKWdraXd+ZyVoK3NXWl1pRVhKKmhkKG5qdG56N3dffF0pOmtAX2YhU2ZRd3xGITh3QT03PjteR3o5YFB1UE1tUXk2V08yJUddJiIoRURFYDBxVlQuNWMj''@;'; put 'put ''YiZpYXxHWFZROiM9KE9+d2JnPU88QXMsfiU6NyxFUFtfT1RbKHlTXX0seWAkV3hUWVk1JHw8MztSOC8lcEE4Ryp1WS88XTFmeE4lVkcwaD4+TTRFL2VvKzwoIzN8RiNga0JreCNtRCxIdXhsSEd1RypJUUZ3Ilg9UWM7bTZ+OEI/YVpTZUwjJkhUWG1fMEYpUF5WUysuSjxZWGcrfmFAb21tciU2''@;'; put 'put ''IjVrYFB7Wk4uLE5xZCY8MXc7L24rWzNnRn09MixNVGtwZVVPTXJpR3cuZyt6LzYqeDtATlhMTTJ4Q3IyL3NUczFAM0NNKysvLnV7P2pXUCZXR28hWVJ9L2Nfe2s+ITBXdHl5TztnNzFIQCR7anJGaDI4TU1gTnVkMWVAWzg/IiNuc2oxUV4jWjJ1NVJIdCZdVl9AOHRySGw7blU5dk44WSUwP006''@;'; put 'put ''biFeSUhhTWtvUTJsXiZUflo9aGJTLmZUfjVLZyRDdE16YDJUaTJNNVlFLGEyJnFQJHZJPChwO2lWU25obTcjQVVsTkJvOjJdYDI7XkosTGYhenRdWHg+MT5DfEV2TDxQO2tlRylOVGMmQCg6PlBmOXNwR01hWEBfTXpoekZJc0w5US4jPksjWDQkS0o7aHxmZiFvcl5STiUpKD9Ncm95MDdqMEMu''@;'; put 'put ''cFZSSGh1ckhwWGlmRmJTdGgwaTA4enp6clBXdGVsX208eU49QVlOYEo3T14iPmEjQG5xbCxZMH0mS11QbjojOHx0fGdnWD1UZSN0dHA3TFRYTzBlOXNQUFZ6PkxPWWpffjJVRyNqczl5IiNwcjYmTzxvSk5jd2llSHokNCZMKjQ1WCprPWVERnVNVTU5MWA/YnhNZHkyW1ZeMVZsNFFqWnhNVjgo''@;'; put 'put ''NEVWQzFSdjh9TEwvZ0UrZXN3bVZCM3siM2g9U05ebSEvZWZ8WEpCbGBhK0ZhKjcpSWVJcFRkVENpMykydkNjMnFbRGZPVnNiP0tHMWRCJkd3TChMRHp9Rk1tckouVWRxM10uS3VfUVhzSSReNlowazheIloxWm9QR0RTQDtsKVYqPGFXOktVTSxYZWlMQTYzL0B7aG1nRk1lTWgzfVEqKm9lLCki''@;'; put 'put ''Rl85MTpNUVQyaHJUN0oiOlJocSVXeVBdNFBMJC5fPk5eVSRReUckcG1aPW1tIS5+Ok5iSW5sSFpBa0t9eSxRRkwrSihTaF40VF1mRWU4dGxTXkg/ZT5PL1lAXnxCfHpMOHxJT3gmblJ7VDZVKzA7bjddSm5IUXZqUChyUiQ3TjIrOXZsZn04Pm1gRGl+MFNCcGZFUFNHMk52Y1d0K0JBZUVRNSZ3''@;'; put 'put ''WDVdXllMTkw6aUVeZWl8YmhQLzxCSi5WZTBAWEZqVj5zdUxlcztkPSVKU11NflIuOzt2WmRBOFpFW14wMDEkXUtPNUMkPnFCbVFmNyhsfkd5R3tnJk1Rd2wwP2BiLzxdVHhwL0JsQjguczxUYHV8VD1JNntdfipLfitjZT48IyRZRnNBVUIzQjNPTEI8WFZfa0QlVWBJOyokNFcpMSliQCR8PCU+''@;'; put 'put ''Tn4kRXpJTlMiTn1nT0J6MjI8YXFlSjwqayNHcStkNWMqfmg9MWEsfXUmaStnKWxENFtoJmh1b28yZ1ZJbElCWXZEfDQ/I1JQc0dOcX42d29TKz5uaV92VUtHS1EqUUMlVD8lflh0K0w+Nk1TL09nNDR0VyppTm9hT0RDTl13MHNSaVkoUXJVMW8mKl1QIm5qWFk3ITZNNzN5JDZvfEg9NFhpUSVA''@;'; put 'put ''YGtGMTxFTGRiTztqcHQ2JWomZy99KSU4a2JaSzIufTQyPnkkRSVta2o2c1NpX1s6NF04dS4sYiJET2Mqd2xaImBhRj1qRUpJOHh2OThLLD1yS1gmMUd5LGh6Z1d3R31OQGJdZXVtfWh1QnpMUTJPd3NqTkRvS2lARTcvcl58JU4/JntHbyJIe19ncGEyc2JSNTd+WH11TXJEPypWcmtgX0lad11M''@;'; put 'put ''blRKZUpvSHZFTWxYRmJ4PHxXSy9GIUNgYyghY2EkZTh5RFI0LHJfRyZXeXVscVZPdGg8X18jMGkpVjB5dysrPUhUKnZoYFJdRFNQbTwsNE5YZV94Ujhddj1xVyMucFRvRExxUWQsX3s+cGF4WiNUWSp+MSNUUW4sSUZlVnZeKT9tfn46eG0iKWkzelBUVW0zcy9IJXJBWTMuMzo1Lzs9bnxQQEMz''@;'; put 'put ''fjI3KzQzMjRLfiNVJj16Pzp0MXJTYTpQYGNlODg8W2hdOCY6XUxZZkxCLHlSIWJZO0UhT2VpUmN8ISUkZl9pSUU9JChCLnZ0TU5YOmlgR3oqdkNJLz8mM3JgKEBEdDZVOzo5OU0xUEZuRkZnd0ZqM1hPQH1YZURwbnNyPXI0cTU+Un5AMyNCSUVpZm12KFksIl5mTCEwImp3ZmcoY0lUd3o/NXtL''@;'; put 'put ''InIle0pRWVlNYTBpe1ExayloYGkqeWZpTX0hSDRGRn58JFlUSTZhJlNKcmRjJVc5XkBuJU5dQ3pQJGJSOl5yKjs6eD8xaEFSaX5eaC4wQGgsfCFqdypdVGJeQVI9OS5HWFU5Zzl6ODBxU3hCQSFoS0FGMS44WWVAY0ldfFMoNTR+MiMpSiUiUV8yNV9kdyhVSlZNe2I3S3VMZC42NWQuci9NUUhv''@;'; put 'put ''YF5iY0J1IlIkQC54TCtlR2xKZEgxXWowY1JYXkxdQl9lImlLVjssI3p5LGNYIWl8T2JPO1oiSjgjIlN+QDtzQ10lQl1tfFBVcUk/dkRnP0dka1MjeGE0bkp4XW9gU1p6cEk1MXwzUGB8VDI3TUVDTltdIWpuXi9ofk1PJjNZKVFicD54eTFtYFdnJD1bVzxSKDBdamRWKTRiPVNgVWpefVZ+X2hM''@;'; put 'put ''dmE7d0BIS2VNeysxXztaQCF7L0peYzVKIkZZMU9XTnIyIXpdL2x0WjJ6KDZuNTV2QmpsLEx1dFFnTSpxI3l2SzRfUT82NFdmU3VmTyV0eFsjWCQ+b15uQik+Z3kuekQkLEhCYDBTNSV4UzBIZEZZPyNdTFcuLnp1OXRvYXw4JTh3Pjkqb2w/Ui5Bc1cqW3hUVD50Q0UwY2BHTGk2fHdkM2NNcVZb''@;'; put 'put ''YUxjYz8kWWBLdClfJHJjeXRdYHovMGE+O2A2QiVRMGNoNmJlR0JjZF0xOnJ0Kk44Z19WSkh1XntFTHpQI004NlgvcSpGQkNAIWg6P2FzJSMwaWloX1pOKjlsITw/fllDJEpZezlTMEp2Y2xLSGRzTz93QjU7L2N5U1c0USRqRCVydnxVRnRENkc8c24uSiVCOHx9K1djL213UUR5VFhzNmQobUtt''@;'; put 'put ''JSgmUz0/d2F4QUF0SzhWSkQlUGNXOCplOGRJYk5belB0b3ZDX1ZIYEFPelhqTWU1bjZZT2lMMVVbaE9TS3JSRkwwKitbYXFpMip7TTlLKjF5VTl3TmwzIyVfdXVMfn5iaT1GdU0iVD4wPDFYL0suPFdnVSkjIz8jLFFNdnk7XkxyM0R7QWV8fn1Dek8oTGY/ZlpXUig4ZVtkWF56cU1zeShNIXNL''@;'; put 'put ''SjJWZlpQSHMjTz9ZR2kwREQrPDd1SWkqQmVXfj9IZD94Yi5DOjNZVXptMWNAbi4vYCV+USg6NUR0K2ZJTi9eWk8jU3FmQXtwdHlVSlY0KjJwciRMTzBFMzh5WjRVKFRvUDc6eDBsL3NTQjh8Z2c5Oj8vMFRSJVN4eW5adVUpUiRldCE5MH40VFdPSUFXKzlRQGxXJmMxUGkjRSUwNHUkLy9mR0Qm''@;'; put 'put ''Y3FUTDhjc340QFM9UF1VPkpsOkMxTGNSZU9wNWIyUG18UD09RV0/a3cmXnJ7O2kyW0VbJFZuOnZ8VkpPfHtET3dzMm1FYEdbKnQmOWFiP1BSe3UkJGpdNGI4dWomVmFQQTE8R0clSU55S3dKQzszdmFfMiZvdW8lIURuZThFSTBmLHhCcmlAZnJ+PzdyIkojVDcqQG1YQTBkfCtwPUJmSF92QyZj''@;'; put 'put ''RkxmYCZwdDZHLk92Sih9Q2RuSDopYSh6TG5+bmlSSWRvM2xHfURASTtnczAwOkBecG9WV2Y4MTU1ZkkxQHUxczQoLHA7O3VfOUs0Knl3N3t6T3M1KnVYSHZbM2FiczZFMlYhdExrO0xMe2l5WjUsRCpvITZeR0dqfDduc1c8Zi44TmxAe3VHMF5YJE1rQCFQRT5OTzc2bG0+cWFhV0FrSHBGNWIq''@;'; put 'put ''ZUg4W30xMWwuZngkJlgqdyJCcUI8I3I4bXpMLkZhdG5jJFg+N0R7d3FbbkslJTdRajdPQmlxb1tNW111RTJBOkAxM2sjbS9UQGtVUTthYlFJOT1CVCZ7MTZYMXR9eCMlJldtKnRFNjhFJXxsbDhSOTRvcW5ZUX56M2ZNPERHZG88SHtYUWA6QlNIfnI5MFFxOEVnNV9TcV4oRSNsPUZUNz8zKmh0''@;'; put 'put ''ZnhoSTJnM3lvTWN7O0Z8RylvZCpQX3IoTiY2PiU7bDo/d2IxZV0mWnpLQEtZRHZua1tubiRsdmEiYTFhMkhaPEJMWFdkclpVX1J5ezkjOkdmelModXhIK0h7MmdCRVUsci5HS1NHO1hySyJXZzNCflROeV47Pi9xQlE2OipIUjslcXpmZCp7dyZsVl18ez5PWEtsTmo7R1ojTmZOOEIuJG1HUFAp''@;'; put 'put ''PCREd31JRWtLKiNkMG9eSDUvKTN6VDgvYCo0aHpDUyRTKDlPaCx6K0lCUlBESEslXldiKH1Ra3hQK18jNmxzOXZPITcubjUhTyE6UDduPExIZlNPXm5VVihkalBEI0g6OmhvZGNvTjxYMzYrKDRXZWArKFtGejRITCM9ekN4M0YxTlVNJndAfkkxd2F9O3VkKy9sKTouLElQa0xGMVR4MXZqRSN7''@;'; put 'put ''JntDcntoLEI3cVFkYTMsdn4xMHlONyoqeFFbRkh0eHs9UX1eZzNSbGpCJm1xLnJwdT9JTmo1ZS95OExRV1JdeEVeZCw8RCxpbE5kPXkuY0ZTPS55SzxuIz47diJ7JkA1RG03R003Y3xCZT9AQFRYMko7JiRuVV93Mit5LGs+aFEyVDBUPH1HYGhVI0tQa34lOSx7PUB0PTZUZS81QGUpX2tNMiJK''@;'; put 'put ''d3d8cnhiXlZKdTR+VmJFJC8wKDkqc0wsLk5kSWUiK0BtMkdpIjo9TCkrIkdbLEZpZk8pMyxjWC9tLj1HZk1YdE0rZkU1TEdCXVVjQnpZazQ3SHhQPEYmfWdmPn5wYkx0UHVyaj9CSHJgYmdqeS4xeFNgOV17Imd1WUV6Tz5OQiYlSWE/QihXREAwdVZlTyh5XS5UN096K2pFWX0mbzZUaTxacFZu''@;'; put 'put ''Ny5jNVBLRFlmSU9edXxRczZzQ2x1OlVGQHFKOXBHRiFPNiQ9Sk5fdShtVE9+dUI2NmgoIVlSK1ZMKCEqaHszT3l6JmNeOFQoSHN2dFZ3RWYsP0RlXl5sZyxNdXk4IU85fFdaYiRySEMmSzdxRz1HUE1xWmA9RjE6YTNgRkg2dyE1Lllzc0FSO3JFPnBgcF1IaHd3VUMubiw/aV5ze1AufFs1OT1C''@;'; put 'put ''cGoyMCxVajZGKVhbbEV1UTtCXkoudGUvTDMybFd8Tkh1W2Znd1R0fG5YI35eVEx8XSYwNlBPI0pBe29OPkQ4Zn1DQGg4Q1lFZVh8eS8qKV44WDkvMSMjbC9SXlkhWzI5PGg9V3tGJU5tSTt4JWM5eHdlcmk6RlU6ZFlSVlA/WkQ4Y1YyZTMhNTo8ZDRROUdsX2JFRig8PHkyPWV7NFA+cUFLXVJr''@;'; put 'put ''KXs9TzZbV1l0eHZgaH4vfnxAY3Y0cDc+T2BZOy95SkBoQSM3fFFvWF9nXztvbUJZKiFSQV08Kjc5PCN9L2RfWVApalo0Q3VQJXYqSnYhfXA0eFc0Q1hAcDpPeixTd2NQbEc7VV9sbVRyemh7SElIIzhQQCNHdXthOEFwST5qLCZ0VzpldHMoOS9yZS5GfkdnRFFhbCkkUmJ0QT0sT0d9MElxOCMh''@;'; put 'put ''QnM2NDdPXURRZUE1fWR+IVdrV0Z1aXQ7VGMlPiZSJD1nVS5uZyg/QnFTJjZYeVBpWTZvcTJrKzBwNjNDSG5tSSRdZH53NSZdZWY6KG8mVW87WFRTOm95KE13bUtoZ1hSP2lJcHgzZlJ+NS99RHE+Z0FuX09HbTJYfndzK3xPbEljPVlOelpPLjxoPTN3XzZiUlVFPWlObTlteDBuJUtZNDwhNnBY''@;'; put 'put ''fG1PI1QodXBENW0kaE5FLmtkNVZjVTsmdTZ3anhyTlFwY3txb1kmK3FpZjNbRGU5MF8jaztvZUY6Il1lSDh9RT1tfXh1LCNWPWd+LE9sLnQzIXY7PjY7W3UvaU5eTyJGazl0QVJrXT9UTiJGcGJzJVgzP3F0bGg4U1AoLGp8VHQ+VVN3SFtNemQ/UnEjXylCdyF3Rm1GLlpZYlNUYy9aUl53LjJS''@;'; put 'put ''Q0dlUyw3MHAiK31IREYzU2tEZ1BRR1t3SXNTe0JIUntGJXQ3YE4+Q3BqSmZzU3NIYFl0W0huLjRfdUA2NkVnJT1xIVQlZjoyTXgiVyF3aFkxUFYvTFtadFt+Pk5YMn0pPm9DeVR1biV5cGc0IWIkT0pPQzhaMDYhWytdZTVGYTgrRWswd2dXXVJUb3RDKEE5S1QyZXBFVUI5dUBqYE4pM0dERUJf''@;'; put 'put ''fk9Ze2B7Ok1eNEF1OGs0XVBIOzl1d2BuP3pJeTVJKFtuJXJ4bnwxe29nSDZBJnVWUE92P0cuV3khK1tpQitjXmRDUj5JVj05cCJVW3VbTTksIUVrPD5Ad1ckOFFsXUZYXm1mInAld0I/KD1mJE42IVlXUTxtZjVRKntbKTczV0dyZGVeeUxhX1l0NGt9dT8sTiEiMSRyRyJfSjROWldMbVhuakNa''@;'; put 'put ''Y0NHZSEqOiZgUWI+LEZ2QjwyfilPb1VrMWFAfVo5b1VeYyhJT1g6LFs1T1ZhQmQ1OWZEOVFUUH08TCV+TFYkTmBtQVhHYDxgSnc1NjkuKi5IMkEiVit3Qn1eZkhfaUh6dEh0OCU9U1MuMjJvWnU6KipOI3xvTURlVSwxJi51aWE8NCs3UyM+JTY4c2NVWSFCI00le2twNFFKPF1kWTlPRFRzSU5j''@;'; put 'put ''X2AhZVpqJVs/U0ExZ21tTXhMU3slQVRpPCtwQWVWZnlLcjlLNV4lVGVBUUxuRlRNL0NhbSxNLnIjZkpjV0p4blk2JHJLczN2eFYrLy9VRVd8V1pZbT9OVmRgXnlkVUlocGAmaWMyX0dpSERHKzEkTWhYeyIsdjNBRiRyRmhiaDtEbjQ9PjpZeD9BaSFwOnoiKSJ2YEhOQ0ttTnBUJiRnUF4jZkI3''@;'; put 'put ''JGgsSngrOjdiS0tWMCRAWzpKUHszNCtOUERUYXUuKE5NTE0mYWhhdjFJbkw9aCVgM2VpaU4qVWFsNm0rNHA9fjlLWG97WXFXLn5mfi5RSGp6R2VeK3VwMW5CVSleX0B0aGEuSTJMNSIrZjtWPz5aP1gofWwvdiswbjMuNlFWezQwczAuTDM7SjwrV1IyKDpIKnBHSXMjdHc0fDVUd343LFEiOGci''@;'; put 'put ''UWguTDxQUiFKTHAwVXtlKDs7SHNmRSZTTlc0TVgjeVZuUlN2d2gwc0gyYDhqbVZCZTxwRSxlUVF3eGs8OFFWNX5tV3hXLykyL3doMnhFWFtEUTcyODwpVHZLTUUkLmZqdFZsbXxtaFo8ViZ1dDBpKnhRPm9sVHhrJCt0TW94aHt1Rytfck8wWHRgOms+S2xGLiF8T1slWHxRZC5Caz13TnV+NTdn''@;'; put 'put ''O1FQWUohQngqXy8+RTdxRyxrT187T1dOcDJ6L0VeKFVscEMsZ3pwUz5yM290XnxdSlRAWUdUTHpWMHsxaXQoQ2NnNDZub3hXRmtwJlVje3V8X1U8elM+dll1PHdGU0hyQXVUQHM3WXkyVXpQI0dDM0dRfCUrZGAzU1swVkVZO14mME9hVCNLfj5LSnY1I0U+WGA/QzlXJEduWz9ERlYjTXY6e35B''@;'; put 'put ''TypSSVMpUkVQSWhTOzM6Imx2JGopJTZpczxsYWFPcylWPiwrQFJwTUtzK19YQEsjYUNJU1F6R145PS8lRC9qdlRTYWN0Pkc6TnRqQSYoS0xSbFdOQTYhe3oxd1g4REc+KnZYR3VQLypFM1I+cCo8bTh1cEx5eng2WDZAckdSJTd1d2kzKi83cnEudENIN1VQaEhBKGJyaDE9XlR+WnhfN18sSFVw''@;'; put 'put ''ImYoTjd9P25heENtNVIuQDJocE5RIXxOJkNyT15JaXBpIXdSRXdyPy5rJW91cHpaeVVvbysxdUhgXyIrMX4hOklwSTFFRyhDeFRSOX5aQTY/Wyl1I3tpIyImVzgpejpLV20vNS5qaEZfWkBQMUU3Lj0+VTMhUEU6VXpgUkN2dThzNDhsNylUWW5dITYqZys8ODgmd3QzPEROJWJNamcpISVSUltI''@;'; put 'put ''akU4YTojezs+Y1cxb0smOHxYTjpgJEQyZmQuLilKO15hQTBTdkZCY21SRj85QnBOJFZbZkF5ZDA8TnxyMyhZKztWcis1XmB6a2o0USUwIy9iSiI8aENWUnpxZF1jY2RZNShgKyRocD0qNlF1bmV9XUZZL1EsZlJWPlBXWERbOTpebUgxKUpOVSllKkx8aXxfeV4lWDFSfHhacSVxOW13I2BUK3Mw''@;'; put 'put ''aFkma0BLcnE1YVRqLjZQNXZJbkluTHVhRDoveiRvZjJpZ0YpVCQ1XyYwZnxCXyglSHgzdC87blhfLEFtJHRCPSEiV3gkYlMxeUc/bCtWXl9LO0R9YzRxPGllXT5+fDBKL3xFYVFtYkxVLDt3NDdbOWh6WH46cERSeVVUYUhkW05YP0JAWTxyQnRqMn5TPi9xXnlHeDM/bXFrWVFhU29uNyozJHks''@;'; put 'put ''VC4lNX5lIzt+NjtHb1cmaWlzXSpZdG1WVUIhY3xPdVoqej9xbi8qbU9VPC4hJGg9aUE+YCs8ciN9PUlaQ1l+OUZydUpscG56QDIjNn0qVVBKXjMrPEZMbihAS0RQdngrKTwkMDdJbUFMZzo6bHwzYlYuK35AOCVzQl01QXBtLHFdVEBiKlsvW1NxUkxPMU58KWhJeWBsRCN1c2FHLl1fVisiYGdh''@;'; put 'put ''PihsVDpZRTciaCp2dlZ4Nm9zW2lNdVZjJFBpSVYlfkRma0dYeU9FOCMzQ31JZnF6WEdpdVA+WloqUml6L0k/XSZySGB2SENFcDJ1SiF1TnAmKThsK01bVCQmYnU7ezFUK2Q1WnF0WTNLYX1mW3pLb1E0R1o5S1FLMmpGQ0NuajJvaUNVTlg2cHouMHRSdW1rI0dLSWlRSy59Q2A4JVBCaSRvaSsv''@;'; put 'put ''MnVTL0RWd0xWSSNhcHcjR0hPK3NaWSlfQntobHlaPj9idDFQMlV0PmN8WWMvZS4+QSFzb2xqNFE0UiZVZj5eQkJdMGlEYS9mUU5eYnc+ey5QSEkyaEA3czYkdnd6W0tddHZ9OVhUXio6UWw2Xm1+VE8manpqcjkqfWh3Lz1rSmtNUURbb1JnQ3JFXkZ3TW06TCokM3g8RkRvKkIybmUsM21rbjVE''@;'; put 'put ''SzApXV1YU0drSW0+PVhBemI9Sk9pRn5lSjUqRGp3LExYciYuLlJiRWh5b2gpem19TEtIZSpSdX5ifTolSHw+QktNKTR9Nj93aUo7L1VRQURQOz8vZUczIkghb1FFVkQpb3o9P01GWGBoa0dAS3d+NzkvazBDVSEoS05vb05fM01wdn0kPnY2RkxtOkNjJmxxd35jOzBUVm5eMjswdEJZSGVOXSwr''@;'; put 'put ''fS87PCl4NC94KlIvQzUqUEthSXRSLmhec01tNSh5a3RRQ0VHRktOLl58YGp+M1VuKyg+b2oxVyt7cXVNJGkkYzNlZ0xHL3QoPF83JlIxRnRKUkwjOWY+QU9PWjMxYU1eanwxayVmNVk4IUNyfTlIKmxXYlklWXo0T2VsWnpGbHguMlI5NUI+dFFTPVY1OnJ5Tj9aNW9HbC53eWQmQ0w/fWx8dGJm''@;'; put 'put ''fHhLMThSa1lSTnpHcmRnK25MMC4sNXQjQ3J2dU5mbVdDP0N7U0siLHg5XnMsQX01YzJCNy8mX3VlVz4yYEVfXX1QQVkuLkU2bk58VGFkPGl7W1hfaixrJTp1Yk84N09Manl4UH5QcDFmWCV4OWBHcTBMT0NTJVByViF3d190bkVeenY9SjdMJmcrWX1MR0JFaTxmfXBVOVAiRDN2M3RvK013ZTEs''@;'; put 'put ''YGo9UGlxMEAqaDhQcmdHRWptOkByWyp6N2IvWSM9cmsvamlNSj4hLnBLIj5PcFgxLjBDeSFNXUBDWVQhIXBvKUNTPGVTPEtOd3AvJjEmYEBNOU0sZiE+eUZVPCpaVTYvbCVhWUtUfkFDLkFXYDlNXXxnJVZ8MmokKVR3V3BePF8pb1N0MXc2bzBBNmszQ0ssKmc4ZzU3azp9c0t9S0Jtd2hFWSQ/''@;'; put 'put ''XjE+PXJmXjtrZGpweV9oOFRFOENdKCZXfmBaNXomNl5VOiM2LzVhNy4kNWoseF9aPnAseTRQTSleL19rZH5WWFFeRDghcmZAYCwmInViTVpmYyRae1VBXkBRWSlUWkFIbS5MdTl0PEZddzxISzQ/VjdgWTQleSt3KGFdKVU+Y0RISF5RKSp9JSYycHJ7TEQmfjdjPzdHZ2RUe1JQUCs3LlJhZ1t3''@;'; put 'put ''S013VmJFfmJTQGxgT1dtV3w4MlNpZlhCeU5wO21zQnZpUDVxLCVdXk40YXtPQz1bOnE0QDRuXjdgZDtgTyZlS2p+XT04em9rY1VyalZ2Z0p2bURjWzZbVkZkKXhCS01AfDBKMklMIW1PKGp1KzlXbm1gRFo6fSlXfG9IWF4+eDlyL0hMREs9fnxLUjdXWiUoZ30xcWA9fUBSPzAxbzF9MEduJWUw''@;'; put 'put ''LHZuUUxveSUpLiRjIltjSX5CREI1eDwhPT9pUUFtYUE+c3NxKS9DQCorUjA2XVZbL1EySXhhL1loMGleJGlkIzUjPVJmWX47fSZLUTR0TS9xSUg4fFN8XmZSWi40V18pOXlhflJmM1hnaWJjNl8zP3kqMlNtNT0+XSRnSWYqW2RmWWMlMTFIbjN0V0FIQm4uPFVSMSRzN3hBRlFjWyRCQ3JmWSVq''@;'; put 'put ''OyNLSFZfZ2MuNiVEOHZ9Z3YsX15ob0QrMyxudClbKXNZcG10Wj49QGI0e2Ize2hYOSIyPixPOGZ2ImNNb1AsIyRzLCRyVWpUMH0yKSROQD5MS084VH1hQmkwczJtLmR7PClrUHQ7Pl55SjQ0b2t2SHI3ZEpQL2ZhKkp4SGZQSDJ9cTN2MWc6JjE2SCxyKlhPXlBCZlAxb1ZSczVqbHtmNyhNTnQ0''@;'; put 'put ''NUtVRDBmQTVfQmZ9N3MzVDlvbn4+by9Fdn5CMFdhIVYzNHdMWnA5Y3FdcHApUzlDUXc+XTkvW3pEJTFHUDNldDgmfE53P0xNNWg1UW5mPXl+dXtZSnRsWH5ldld4Lmw5NmgsOT0kc31nYW1YeC55RFF3WHNwdGhsNll6b2hgY05ZOVc6Kzl1Oi44MGR1PiUqSUlJaGo/YjwvIWhtTDtRck0yTnk/''@;'; put 'put ''dDUpQnskZDlCUnVUcW0sLE9tWW4/NHE1SntEKyJkTm1hNnA8MXM1dlZvMUg3WD9ESVh8dTFTJl10UE07eXVxQG5eMSVZXWo0Y303aSU+aF9RWGFlT1MrVFY5Y31AajdjJF9eTlQ7M303QjE+YzVfY1AjXjUyPmBYc2VeSX4jdVNnaD9YQFQkbV9TWCN2aTg/Zz4oJkFqQGFJPSgwaDA3MGtuI3hD''@;'; put 'put ''RDQlUz95bFVBRGljW0NqdjBDJWJzZ1ZgN115UGpbSHVjNCU2LF9Gc19GQSE4dGhVMShzYjohVFJjSlQoOWUqflpkLDxXbnAwMkJJJWNoMmI5XjNHXytrY1NffG5USShHUz0zPUBLa3ZAdipSTiQsVzdDdkx4WWMlS31sYFRsM1lkZyFDS2xoQmpPME5pK2NRVng5ZnNOSzxVPDs6MHQ5a2ZCUT1+''@;'; put 'put ''aCEzWD1NfX5XNX56fV5wJitCYF5qdVU4ZSlPMHY/JC5nPjlWNi5tVCRIbipgWSZkMldybm5LLy5qaTJKNlpgL0VpYHt9endQNH49L090Ul4/aH5zdkxzU1dPZXRzLmRoU18qPEYyUyZRQmJ6dDJtRmYlZDtKMz96WnpvSXNNUSpQXzdXYD4idnpbNWlEfHg7KCwoXXB1WT80N0tnUTM2RCQkT2Er''@;'; put 'put ''YWc+ZmZwMEI6L3orTCR8KCU9NTd7U301ZT1TXk5uSUtva3d9SyspYTAmfFtDM3pPfG9wTnhaaHlzfEVRdEc5eEEiRCIjdSQqLGIyTTRXUmQ4OTJZOkFONkg/MF5iaGxsTmprPDE/O3x8LFROTWBEeXA/P3N3OlsrJlNmcCN6dnJDezcpXXhJbzoxd3csOnsyamU7VCw9Tkp+ck1+WzFyJWxCIVBJ''@;'; put 'put ''akBHPT52YEp9QmV3Q14+IT5QaDc0bXZvNFBfZC9WRnkifF9xbmVgISJDW15xT2FPdSIpUHA/YDFjPC9LUXlkd1lJfj1PRm8qXkN9Zz87Sl9vbFB2ZWYwayloKTNtcHlRXl0sSio8MnBzY20qTDhhdmxrNH56WnA4PWx0Qy8hRkxCLHNUQUNEKHE0akgzdSYiXmpoVlFLKlc6czhGOitsPmdpMHt5''@;'; put 'put ''ail3ZV83dCNRdFVIbmU3OkZqKjp7Oy80dmJ2dnJSSlZ1QkF+Z1U/Ri9rejxHb3dZQD4zdyhkSFg8TGFmPDpkMi53PjwmIz0/KSZ3Xyh3YVo6JCo1TCRkOWxWdSpZYkhRcHM6Mi9xXVJBekFDaDZgKDVSU3tJTkRPVUFVW3k7ZXtaNk0mWHVINk5gfH1HekkkbDNCNz5FI1BLSTMjOXNJI0htb3U3''@;'; put 'put ''YmFxVlIzSlhdQUd8RnQoMT5VUm9DQllpd0JidmNxKU54eXc1fXhsSn5TRTNZLzM5a2lxMHtuenE/WW18U01pKkY+Wl5kYiVNR1p0LyR+eThYfD8yV29XQX4vXUMsK1RfI3xZRS4oXWJ9KHdnVEhYcXgxQm5DTkxibFRxVnk8W3wvensoQGA2SlRZMlRwL3xzJEpEXltrXzFXbiZtIWVCJG44SClq''@;'; put 'put ''Nyh0RjIwbldDMCRtYW5mKVdafDYuUVFaam5VIz87SCtRSSFlOjh7eGtjWVE9UFkuRiYwZld2dEh7bk02SDEmXjpdPVY+eFdLWG8rI3xNfDshdmYmUDJLSjxhMj1WI1psaXVfOi9hKDRQcndeOixHPng6N2ZLJkxlUSkvY193SyVjeFZ6aVBKQWNdVyUkWWQ9ZU16SjEuYGc4WHoqMCtSZyJIOmYz''@;'; put 'put ''MWdTcFAvc1cmJDB7NW5pITNfc31LWDVYUEo1JCVyUTlEK3dHRHdydlhMZmhlM3p5N2VSVH5YLFdPMTMsYiFCbTlsTmgrLiEzOi9aNz5gY35UVENEdWBQa15dTEJCS05mZiM3REo0YjlVbTY9TmR4WDgrZ0REL2lSfjdoPn5AaDs1LHZCRz9dPzk9NikueCpvcUptIjU8ZFdSIjp9TWxienFoRT1q''@;'; put 'put ''dmxYUi9IVnR7SSFQdiV1ZVFiJmBrcUk3Kmp+V14kQEUiakBHYiNYYDlxYF9ZZG4+NmZUQnUkKkpqempgXWdfWW9FP2lqbiRhQVckeStNXj5Zd1ZzVHchV3tXIShZQzZNYi5aW3NKdTAzS0tpLzFiZUV4S1oya1dGWCZJMkw9VHVXbjB0PUpXc0IuPlYyKGRtPGBOXj8jKm8vcWh8L1ssKTh4enJ7''@;'; put 'put ''XzdpeHU5SD80UXZsL2FsfEpxUX5TO20lRXVJbG1BdiFlPUM1IXtbKFt3MGc8VWQzMHlnMSM1VTh8PyY0KSRhS3Q/Lz9JOCglTkwlIltkXnZSWEBxIVQwamF1UCZWRVM6ezR3Yy9xKXR3RHRAY2k5ZDBMbjt1PUladj5NZkxmRV51VW96O185Zkt1YChmViJHe2RqZnZ0QGAxOVFdaGhheSx4Ujw8''@;'; put 'put ''bkAle2AvWUg8bD1YKnM6P1F5WHhBNk1pbGwqNFRuWFg0SDtHRD1LNFIxcCpedE05PjopOTY6Kld5TkhAdlg4cXl0bzAjUFNLQTxyZSJvc1VeNkROPkpkWW9RckhRI0o3bERoKDZvUk1bZi98KjQsMUJpbEUvOUZkQ0R4T1tBMSxOWEp2NlIudyojdWB0JkomYEJ9Si56akNLMDxmfTVNXnBlLztO''@;'; put 'put ''Y1RRYUpIQ208NUYydHIqfWBQLGk5QDMmd3FaVElQaXswaD1fLCFuWHlyMWEzfWBzQ3Y3Nz1eMShjfSksXiM0bkRWbFJMNSsvIzNqNjFiTzwlY0l3KmAwSE83LnF0PFc5Q2I2cyhYOmB+bHtLfG59KSthfHx5KCpONmxFV1NIQ1tYNDg7dU5ZSmd7UFs0PnlIMiNjYyt6QzxoZTBvRUxbUl9bQnYo''@;'; put 'put ''dn4kTkBjRHdAKEFJP0ZUb2MzJDJDREFiMTFSMDFtTkM1V0ZgIlNkdWdyITcudj1aTkxeTUF0TDM9QH5FOlV+XjtMPHh2T1RoUVJRYXs+PFh4WWBBMzBqdVlCO2JnQThFVmEhVlZDelRpdkJfUXxiajlZfXFNMjp7InA7PkBMMEhDRjxqcGN7Kk43YlJITmhMd1FIbEsuUXZjXSJmW2lLXl9tRnZr''@;'; put 'put ''KFhLMGU2JW41NH1rNkpENi4iWlR1O0lFfmQ4NDJpekAwKHhXSVBSUF9zZHx1dDttVkgxPSxZWEZsaCFaWWQ1S1V7IVpNZnZ4M2RnRGBtNClqfU8zaDNTRW04fmgzPkVWRDsleV1YeVcpUG97Q0QwNyQxdHg/d1NGKmgxJWBbMUA6fVR1MHxNI29dSnNCfHFmT18rUy9ge1VNdysoTWJrS2N1Mj0j''@;'; put 'put ''c0JIQyN9KTVaSVcmIndAZXsvSCRCNGFvVUBfPDt6IXlTdWUwUVo3JGRzNzA7LGZMQmFBNm9JKT5YOnkrP1RSNSxHTyQ/SmZNVVJ2aEtQdTR4dS5vd1VPMUJ8XV8oaGA/MTkkOkN1R09fYEM1TEF1UEF+YWF1VzFVZTwjL1c+VTpUfFA/UjdJfGVfRilrPVkha2ZrfCExKmA9MlBAPGorek02PGkz''@;'; put 'put ''XVplZV0laWJrMWVHOG44QFd+K0w9Wy5BXkFyVGRCKGJISDEkWjVoTUd+VGxPPXpjdVZaQVJfUDkuJjM7PjN9ODJxfFFhYzslZGRaTSp9VyYjYFtLbGVVI0ZPTzUqMEYzeEo8eGJON3dzcXE0c012LyhLTDRScHdJWHBDfnFTK1lveDo5KShCTE1fO3doOkx6PHl2YUBUIzhFJDZ6fipzN246fUlx''@;'; put 'put ''U0I5cTJ9MlZbRmQpMShOZFg4K3dGUXpmKlZuay99eCMifjp7MFlgbmVnOE9MU288XkE4aUo2S01lajZTInopeGhbZ1EiNz4hTmRoaGZJIjApUk1bQHhKWCwoPjptMy96Zmp1fHM8elBkOEF9TVg7JXRfcTssaE43YnIrNShZV3xCfUpsND0kYVljdCVDQkBoJXhVcz5kTGY/VngwRDs3eW9YVEhn''@;'; put 'put ''b2JbMT1xMlssZXt5VjFsWENlI2AiPElPWXEheXpCd1ZDZUkwTTRTaUJmXz5HeXxbYkJ6W0VpOmR+c3xMUV8ub2I7I0s7Ry9sel9keH56TU48KXAoNnkpWm1vXkU+dTZaO0poQTo4VkF2P15yXWxqMmVUbF9CWyg4TDVFfk40RVpQeElLLyVjb211KDsue3xrSnpnd08uU2FMJEdNdXtYb0QoW3Fq''@;'; put 'put ''WCwmMT08YnY7PHI9Q1puVmtWK3tgY2hNMmpBU0krZ1dOV0dTVnc3c34sSXRaMCZLeUN8SFhFUTFFR0dPaXwvJX0qaGRkOVdTSV8zLkI6MXJdMHFLNlE6JDtmSm9GJSEyZDlESik8RWc1ezo4I3hhajg8MjRzLnxNJXJ3ZFsobHVFcnpbbFNFaWU0dX49eXw7fDRfU00pXntzUDI/bmt0Pn4+KHEp''@;'; put 'put ''LEV7L2o3Unl3aWlPVmlobVswOnk5SiU+WzpFXkYkUGMsXiQ4ZHIqb1E8TF1nYFYrTzkoXmlgQDpSeDdLJixZOz4wW0c0cVEvXmY4Vm4jfG9SfFswaFE5NlVUfShgczArb1Q8IkN9b3lPdEMqOzZdSEdsIis/I2llKE9YQWgrYFBHXzs+QnZNLCZzK1s0eVsuXlQkdWFOW30iQSskVnBxRmJPJmtL''@;'; put 'put ''Rn0rXnU9PShBSyhaKGlpMFJjVE1JZXxFc15SQD81YT1GdHgpTHR9Y1BUSj8oM3tCeXciPmpzJDhQZj5rRW9vdktWcWlMZU9uJWIibCY0Uml8fVtDT356Y216bHJOSVhWZWYialhQKFsoTDJaRnNue2hVWENjeE00cj1CfSpbRSEpNEh8dnIxVTdOQUNAejRdRHZXPmBeTkVmR3UkSXUzUS4qIyww''@;'; put 'put ''KCF0bVtHInhXZ0kuJExPc2QqNC8laldfXj8qImEwTSI3OiN4Q25iNHc5IUNJQVc3aHJfQi5AaV9YeUdbJT4/Mj14cEplUi9CWGJFVFouOTRfbSJ6fWxSZjUmWz1dZUltcWdxLmB4X0RBS1U3TFVVb2EkVyhGdz09P2VDPnNCSFtYK319WzFpOUc4VlJ1ODRJJChCVSV7W311O0hgL1lOUUdVVEo5''@;'; put 'put ''enZVVGh0TE9oNig/V0tvRFZWWjJdNS4uOktIPWRVU35jNmhJOEA+YGh0bno9ZFo3V01XWStMZiNUWmUvU3JoLnJtcFhtQH0lN1NAKn5OPEU9b2A9SmA4U2BTRjNQOGUzIXhpTlgrdj1bSGRbMltnP3JgRyRJOUt3Q09SS1tLRV5Ic3liUz43eWlGQUBybDJDeUVrfVczRmMrK3A3JCglLCgxaHs5''@;'; put 'put ''QCNKSE9xTXQxSm0zUV9UYCo4TDEpQWhkdW5adiVzfWV9fSV4Xis+R2wuaFcwU3NRPEVMVyVOfGx9O3hkP1pJTzVrTTZXPTJuX35zX2JrWlMhYV1wYmI2O25EQXsqdjtERVBURCRQQnR+N0o3aF8yZnVOdktxL2YwUkE9Tzc8MkVZOjV4V3BOIn48dT5mWnh5Jlo1T1NBXTZ6N35CKkdaPVA+aDt1''@;'; put 'put ''ajo8SiV4RlR2RSVkIk8scnFTcXR5XU10P2ZTamJdT3hmMjwxYTR8JkNeRyozNFo1Vmp9NmJnSGl3VlRjSnhzIz1kPTpobmFufGxaKyxyKkVJQXI9SnI+JSpwKCQ6aF4wYUNmZHIrNEZhKE5AcGUkSi89I3JLSGM5WHY3UEs9Py9HRCtEU0t6OGArSldmNWUpInBlYiksemU9eT5MNyomSUB2bF9P''@;'; put 'put ''flR1Zk1vSld5UF8vOm5oWWRuayFITDsjKG1heSlIcVhMMXA1JERUdCVKSkBLbVYvVkwrVl9GRiZ2dVQrVX4wQGMxeFYwQGUwPWgmeHRVIjwmXVE9S1IwSl1SUEQ8L0VGUHV6L2wkcThTTzN5NWNlfikqX0siVWEpR3wzVikoa1JCY2MxYmRyY0pjQHFYVzJnT35WOV57fWlKI2hjPT5IPCpsZTtn''@;'; put 'put ''MGNGd1FecGdDaitPbjpMQD12PlsxbGJMfkBLMChNbmV2VExmJF9lTE4hZFosOncsQH00cG16bUtBQ0tIP2VvKzJuMzo4MDR+P0RYTigwcC5DY0BgfSlARUoocTcmflpDWVBnX3xdTzpXRnVLdiFWOVp5NmtqRHJzSTc4JjZZMkJEKTRLcGMoRWY1ODE1TT5tdkMydSF0TFhfckx1TVVfTEVsNi9h''@;'; put 'put ''LkVAcEkmWE1mJEk8eigxKSw2V0tTSipYcVNwaVkvMzB5JClmZkQ3MUpnRXpTKmBXZnpNNFM3N2MsdlF7cmFLP0JQSmBANShnVSlJSEJAPig1Pz1NcU1VQGRyLEp8P1BQZk40NkNdb2NEIix7aEl+PWA/OEEySmIzKkNZTW5wQH1KJlVxNz4+dE1EfilIdlpjNyolVHIyXS5wVzpgYlg8XkpWMER9''@;'; put 'put ''RVBEYCxgMTZkcENjKiZ5VzxDZUp5REs4PSUpTk0hc08sTj4qTVBlMmIyJjJzcUlkdnQ5VEIiOl9TR15wMzp+WiY6RXJxa2A8al9aSnw2blNQLChFSXFnZUpEI2g3Jk5EeX52SWprcFJsS0IjKTFUL0t4XXRuLEQ6a3pbd2ppazJyNzU5P2Q0YDM1Xn1oInE9KXZXfHtxX2kpSUYzQyxteUwoUmI7''@;'; put 'put ''bXpXVnYsUEwsS313TEckRyI6eH0ieC8vZW9pMzE9YSV+RyxNKnpDIlh8OkhnMV4rJC9uWU9oV1M6OHovV21EcVNCYCRTNCUyUFNnPVFAKXk+cyVbKnk5JkZvOV1HbyxFfFF6Yk9+NiI2NCJicz10O0E5UX0wVEsjYzViRlM4ZF06XTk1WWpUWz1uSy9WKVBlP0NSK094aVNpQSQyQFkvMCtJJHJu''@;'; put 'put ''IjsmQUxHUkh6ZHhHMzBweks1eVpfTnZhU348OjosXSkveE80R0VGa05KS0koTjV8a1hJRGhlJkU+U0xHeDw0YGlESGgvb3Y1TUt5RXYoODYwTjlpIUIiPk8uZy5nPCZoXWJEVWtoRSwmQWwhQEV3OFh7ZnBmJSxZZ0Z8ajI8X0UvL2cuUWwsUHQqdUd2W19eOUxmLGRkJHI3KlR4Q1JkP0ZxPnte''@;'; put 'put ''Km12a1hQQGtoJisyMGEwL0NeNW1BMEReJlQyXjFQLDRCLn5HMn17Njk5fklRbl9TPD14eiFKMkE8OTErenA3d0orZUc3RFkwfkVTMmAzOCRfaXpDTXkuNzd4KkZOaEx8c2A4TFM4NS5hTz8vNWRiPysrPSt1MFtiWS9CNlF8YUY2azcvc19NUEJfPU1+KXFvW0YhSXQjSy91V3R7XiNRLn17RnZa''@;'; put 'put ''K3RWbWQ6cTQuayVhTC5FMFNzODdHQFUrdXJLKFlMYX10YD1DKik2aHJGOzc6RzhbZEk2JHE3Y3VpTSZvUjp4blNjfC9rLHQ7ZnNJVSxOWG1Odj45UDBnIlA2KUxCSWokc3R1RCVMYj5VOF8qeFd1WHdKdiMlSnthKD91PnUhTDYhKlB0QzBkPG5UeCpWQ3xjQyt7YT1PQF1OPDZeLERFQV0iSzgy''@;'; put 'put ''LFNdTDpQajNfQU9Vd0NrRi9mQCZeRkxUMCMkMWZeVz1DfFVbdGlzcC5GXVQoYjZrYCxEIl5kb0VqZTJbOH54dGZ+OXElZyQ4bzlkVDsmfU08PlcmWiVrWC9FeURFQEFremxwVj9ULDMqRiwyZm5bPiRjSiJYeUBEMmQqImZnU0xSbGoqTl4kZztfPDdgOVcrWDZzQnohZj0sIXxAN01tW2klKVY8''@;'; put 'put ''MFA9UiRZVCElOVZbPkRJalRDd0MoRyw4am1TdEs/c2ApejNwaCVENmt2TFVRfH1QZEA1dk04dHpCVnIwLF5hK0Z3SCFxKSRdcUJ5NmpkT2Frcn1lZmw8UWc6KFUrRUguPXRYdnlvX19pfkFGZkQvX1BDOl88X2dlczxnXkxJQCs8XUJWVk18fH0+NVlGNUJ9b2x0fjhxU1ZKZj1aMzF8WkpsR2k8''@;'; put 'put ''aWJKSCl9cTh9clppTjAkc3hZU3VRVzIwZ1U2MFJ6OzlVJHl9Qi8maHcxNSk3Z0JjcENmIjxWKWxTfW5PNTpYL1h+KkFuVihSKiIoV3gjbyYqU0koZkk9Qz5pTkFyT1ArTSQmIzYiZX03c1lEK2tdImR7anZ5O0N+ez1ibl1NYGxlbmIvLC59bVZEVXVeTml7MHZAL01oe29+dkZpS2VEUmJ8Ilgr''@;'; put 'put ''Okk4cj14dywjSk19eTVOaWxNdiRWTHZAaXo+NSosPVJEVzs7dEwycD1YRkQlI0h+IV1GVVdjMkk8eDE8YmVuYGg9JXxhRzNSRkIuQHFsbFVUL3d2YHl1djR2ITNHcm8rd0xPI1cmdW9LW0N0bj43I3dMfF47ZSRSdXthX2UoRk5xYXtsLz5IYERoTn1EfEgoN2I/TH1hJTx6d3hMQ2krcFgmVEAv''@;'; put 'put ''c3w7XTJONkN4VHw6djgpR0NeR1olaU9yWUFMLzQ2WGh0Li9TUTB3VTpVKVkzdD54XnUxKH17cS9bQiY/RH1Cem1TUWt5Pj9pQVV6e25HXy5TUmB2M2dwUHkrO11TWXFQOFJ4NTleMCJWZ0x1OzR3d1FEYyN6a3JQP1Y4KGA2YE9QUilFcnJLIzd9OXhkVHcyNHZ8QE1kLE9aLlVfN15HPUBjWE5q''@;'; put 'put ''R3N4czg5bVJCUzc3RDQ7YCp3dForVy89S14wXmJ5TyxlfWcoYFhZPGBaLjglVjlMfV8+WipJcWx5X3YvaVBdQ01iMzxFJnIsYywqJDozeWJqMW5OejB2cmdQYUFRQEFtaUZzNVlCMmFiS2FnamNxfCtzMmczbks6cm0uNVA5Ozd7aTEzZldzJS9JL2hMaFApJik0Q3Y5SyUoeyZMTl9kWjZ9PjZh''@;'; put 'put ''OUFBZW8zLDlMV1t2L3twcFEzbH06S2dAS1M5WlBgeyFFPHkqYmxTXmxvdkVFTXt1cyY+OnMveHYrWShsWnIwdlRNdHJbVjYhKDxkNGVrSFtDMntwLjhHOyUxWE5oYUJwI0dGaEFgVCZmWFZWOiRKInN+WSRNZEdRYVFhZihyayxJO2lmLENoXixvMUZFZjV4ZHc0Lyh6aGdQWmhdblY2OG0vOHN3''@;'; put 'put ''NUNdRFNAVGRIVEo7Y0FbWyYoTi8+THU5WWlBIkxidTc9WWNtZkNwdHUleC5RKHhrPUdTWVhNZEEyXkAuVmlESz9DdSRaKStkTzxKNFVNK1huYiJTP1k4KmhRdUkzZltMUjdpbTBDLGtrTnh6R2tGci4yI31oVTRHWUghJVJEfFYhdVhufWVIT29LNnBwbFF+KGREVDcxeUY8I2FAR3YvUG8yIjNF''@;'; put 'put ''RyMxPl4+Iyxnb24jYilFKFM4WjQzPUcpeEVSYiI+RjA8OGBgXT0yPjNqKDptMWB+blFpbjhScjxLMyF+OFs/dzRYUzF1L31XdjlRbl15ekt0LEdHNlFMTylvR0tZNGllNG5Jd10wPU5Pc0hQSDdSbGhoc0RFei9HW0MkaiwifSJOYyVZQmV3XmN2XytLaSVRfEA2ZUFGT3VGKkFEIT4obVBDX0Je''@;'; put 'put ''fTIrOHkoX2lCXjcrOSsmRSh6RlJOOzk4b0FhakkvMGlmVCMhY3BVYWxKbiM0LGRrMzY6JHlFbHYqWCR0P21iZFB1Xn14KU1ue3J5SFE/QEY4eEthXXdJZ100OUc8UHNoV3Z1TDJbOj58SShQXU1GXTQjaW5bX0xFbUxHa3xndzhgUkJRUl58O3hKMit5XTFsUk5dcVYzbEZ8JlpCNSE5bGcxLE4m''@;'; put 'put ''e00sUTJBLDdgb2pYbUJZSF42XiFLYWF5PGM0Ym0lYmlsND53ZjRuUThyQSJSVGQ4ODpMdTssO0ZWKHY9SGBPTkh1OSNHPl9KMkF8R2w+QX5PbktSbyI8JDB3fDhVTSgpXzl8ayp4VEVFYj4uPmR3NjFndHBIMUh8OmxvZz5vVTpuTEt2VzVfUzBrQ2BzakJ0NGh8eDZvTD5sLlQzVF4hL0xBXXNv''@;'; put 'put ''IUdRbTZaM3c6SCM7YCo/SVE7RFhSYWgyJFFjRixSPSRDOXUhey9dZSUlXTlpKjNPJW9STUNMKFpaRkZBQDB9ZH1yUGt6Y2NZb2peWE0vI1N0Ni81L255WFE0OUB3Z0JxZk8/YjVNfis8XkM4XUZdR0FxQX41JFIwMyZnN1FbQF18dlVVPnYxRX0seWI/QFFNeHsld2RSYGlJLiF4UkYvYTsyN092''@;'; put 'put ''YVlrTnlncyVTYEttayNhYDR3WzpSIncoZnY1OzhOL2ZMNDR0dm16e14oSE9UZ2hIIWUsM3lBU0owXndjY2NmISVmfCxkZ3xjLiRwNWouMWk5ZHhtOXQmQnFCZk0hQy5CblhPQ1JTKDlkSHpFbTQyayQhcyJNbDFvOkwzZWprQU5hJG9DVURUOz9IOjNOSG14OStbZmZEdF5SdUIhTztROldtVnM2''@;'; put 'put ''NFFScTteZTZdNWxeekxvK3NkeXQ0aXtTTS9QK19Jb0BWWDE0X14kMXsvMUxLXWF3dk0pQz9IXT0yUyh+Wk9CWmxARDc5ZG5QfippWSp2TSJSZ3VdW3xMdEddZTBlW3VgTTgyMWhpTWNhMWswNlhoaE00fnFtd1BIISQ4cjBQeSI0UlllV1llJnsyeWwiMSk9YGJiXU5tKk5nQEBJKl5bWE49XmFX''@;'; put 'put ''XUckSFRnTkJjZj5RVk1EUHlnZjBqTDs7SSo0KjYoUW1XQlE2dUlRSkw6YWZ4QV9qYkEhQ1hgWjxVekpoc040Ij9se0g9MHVPPHhGfD14YnY8bHZ+QTxWX1dMdW9oOit3Ul4qMVJabXNSbC92R3ZZbEp7YXB0TmlpbFUpVEpiVUErQ0ByUDwmQWBzeUdPaiYvI2lNQn4vdE1PQE93cFo5JD54PSJV''@;'; put 'put ''TV5xbHxUWExPcUw5bHQ5JixDbFI9TEFEOUZ3Inw4bTl8PG9JQ29sOVJUcy40fixIU3JBQFdvS2kjL302anRrRnJ1Z30wdlg1PGlocXp1IXJsZGRBezlBQDN6ImVRKDs6cGNRd1lNOz5lOzpJU1JQKy9leytrajtxe2xrbyxnWWBbUSFzSmRXa3c1dG83ejxRISkibyMwTjBVVjJVOlZddlVxTWlB''@;'; put 'put ''ZV9LeCRXVkB4UStVLF5HVlB7XlAxJXdJViFKV24yeHo6QUFAS3srQnVUJlc6WTJ0QH5jMk14fThXP3B9UCtwMEJUVHxNLDRiSyh7SWFDOCxKYWhYSSg3eUp0Qn4/SlM6eiFLS350R3dYIXRNd0dXTXZncV4jXVdgVHk/dSFiLH1LM3plVXczdjFrd095Qn00ajF3bDtFQ3gvMlo4WE1xVTY3c2Rs''@;'; put 'put ''ITYoeSRbTDZeeDs0d3QpNVRCZ3Z3a0prXz57IWBkZD96VkxNcC9tL2ckMTsmdnBiOjU0MHYpXld8VF9XSllYOGtoO2FLO2FUVXIvPmF6LlpxKz1MNFphKCUrbnVuRy9fRlpUPW9GNF9zcnxXcStab3tRbXc/e15RMDNTUSlLQW9hRGlIKyxbeExLVHAqVk8+b1BTdSJTRCZJVDZOX0smS2k7Rzdb''@;'; put 'put ''XyxGaUJ3bWQlNENIWDlSRD5iamVzOSF0OVlMcUlNKHBMXlJjVlshayl8MURCa0JqZDRsYGkuOlludHBqMms/U104aF5TSDN9LiJwTHt4Zk0+e110OkM6XUZxUmZdKiZeJVM3QWU8On47PGshNTt8SD48cTlpTSU4bSVhPEZxd3RIaDV0NGNSLFtreDk0dElEVngzNmQsdER4PVR2Jj4kIlV8eVo5''@;'; put 'put ''PHgpQn5rKkE1K3MvblBYVVhacCNDY2o+aCRBREVDN3Q9VXk1VCw4M1tWNGU+bXltQnYkRmlTZlB2cyU6NiZweiN5RW5ENWk/PTU2em1sY1FsW3VROXRqWlQ7bXslP3E5aUN+ZXUyNmUlISFMLl5wXWohYVcwMjlfUyNnXzsvRW8jZnd3cHhjMFppP299U01GN3twcUZ3PnFlL3FGKkZSXn1RU3F9''@;'; put 'put ''bX1YQkMxZDZCdWQ+Q3NCY11mWiE0R2pPNDYsbC9HdUk6I2d4NEc5N0huYmk/SmVkZGZAPDlrWkxsZzN+UWtyQkJlfF1aSntzZVJhUHU3MWI8QjM+dzBQbipiQiFQTExeNjpBJFVxNGE5WHYsaitIOjNUTkh2UzVud2dCJVdCW0duREheN1QoU2BtMV0/ODpXUzwkZFBGTDlqVkdRZzJSfm07bV8m''@;'; put 'put ''MU1wQENNbnRKVl9YbiRZTFdrUFI1cmhQJF5XJUlORk0yVnpqTG1ZYV5hcHR0TE9NXXY6RHxGUGQvMVtldmphX2pfZVRdMl1hSzo1PTR9dXVKZ105T3xvMC5zTjl4dz4+ME8pSHxUODx6b0ZYYEIvQ0EpIkc4Pn5DNWwxK2FSL0I/U0dGUik6NmNhRWBNPyojb0REd1lpeEBPUUVOQzRxUDdtbEdw''@;'; put 'put ''P2VbXXQjMT5KQD1xP18hMjEwTnVafThWUjw+UDVROVA0OUR8R1ZoWUBSRng4KGhvLiZDKVdzcDtIV3hCQ0VJTE9PTTcpb1ZxQiJjPTAuTzF8IjxGKUEzPiN0X08xcD9VaDYuPTs7YU1tRmIhMzNeI01HMl5hLHlweWFxMT9ScmN8RWpJOFgmd21UYHJaczh+Yj4jLz4meVgzJlpSP3JrajJJLkVX''@;'; put 'put ''RC5sL207YDNCbmR7M0cxLEpCL3h1ZUpndXgqZVEieXpAO29kSzpmJUl6WnUqe013a1JsRTtSYUtbdWBZfSovSm9yTzZBRiJAZCh2ckY9fGpKPmhSamQqWFdiNkBoVnFYeW0oLnw6Xk9IN1hzZVRHPVJyNntLY14rbUVjYll5Pm9HS2QlVjs8Smt5ei9+WF5AJERSTnJ1cDxoSWx3bGklL01LdHVF''@;'; put 'put ''TG54PXFsZmErQT08JjQrK3lbQ1QoXmM0OktzYj9rbjFLXmtzLitVdjlmbzt8dzQkZ0VrQ2FUKHh6RWwhdiVHZTU/KTpFRjp2NFE7OmZEa2tVfW82Wj0oWkJWV34qPyhQbDFkK0QoNUtEcUpDWnxkcngkUjdabFF7K3V1TmssaEw7Vnk6cDxAYGJETEVYcChhPChkWyIuNHpmLDleZmk6W2JzYzpK''@;'; put 'put ''TEVYLG1+W3RSXUwhU2xwTGkoQCwlP3NgaV16RG5XOXlrK29Mc00sbE5La0M0O358VGB5eSUobnFLKTYrRUg5M3gsSGhrXzw7Il5TIU10e1JyZ1dOLmhVPz0qfGpzQjVHWSRKVU5xWVJlLl1EOj1hOyt0RjhmVzQ6PFIvUShLMklfa19aPUN1dnBhNEtme2VIR1FgVT5Ofig2cVU8TGxWa0FDKzhN''@;'; put 'put ''bGhMck1hZ1YiVkVCbG1hbk5FaH1HInFsTkQ2ZDhRNk1OWjlxc3JOc1pUYEl2RkNOVihhKDYhfDE1W3wlfktkbT9yW3x2eD5dQytNTldJLCZWLyg9bkgrYXJkbUJebT0uJDg/ei9DI21FNVtFWHF5PlpKRTJJMnxOeiY9dkxpWl48Ql1lKG5eMypwRzpIIW5ldmBqWHZjTHBDXzVTeFZyOXBVKyVP''@;'; put 'put ''VGlCZTAzU0t1W1gmWmtnfjx2Olh4MjVyIWRKUz9AOjlLL3x2YVsrLyNDcDt0Ym8xYH5oLkQieTMpSChSUlgpYHk2XUVdPClPVEsjO2hQRGFGQXhSfnFrYkIqPDtQSiZycHpMMStDPCROQGgsQ2p4MjUsXnRnRmh2NittfVFpamMiKHxodltZRnhoWC5PS2dxNkR3fV97IyJdKjxjQXFvfWR0bX5q''@;'; put 'put ''NUZvTFcjJEcobm9eZm9wZzZlITQpUj5XKSRmJW5zNmExcWZGSF9YZDBNZlgzRFE3LyYzRTBNJjJpeWo+ejQ4MTdmbiUjXVhQYmZENCsiPGdyPVJZNEdWXl5gRFt9LG1pVGswWD11c0RAd0BBcnBuXlJyTHJVY3s2elhbaF0jJHtPTm1dK003WXdTMzd9d3xdM05KeVZ1Z1heTnQ2NiQyYkpqbGNQ''@;'; put 'put ''Ljx+XyIlYlQpdGB+WzdJb1E9SSZUbVptakJtLjVgMEJpRl8hJXBFTiV1MlRMZXNMfX1KTD8pdXdFSSFFTEp+ay88dDZzfnJbP3M+dy5eNFNZUVJTajc4MjAlWGU+SlohMEc9ZDlWMCFkcDxQWW4/KGN4RnwpWiwzUWhQa14uLjtuRClFVylIWG15ekosPnk3PCZAWVN+U0EucTM1bVsiUnJZbFp0''@;'; put 'put ''Pn57ISkzUDZIJUpuPCgxLzNKckp9Y083U2ZzT01bc2k0UEp9JUFweShKP1AlJmR3SlIxaVUiL3xbV1FEYXc/P15wV1s5Mz1kblA2T1ZQekBWW28wVmJtL09iZj47cmxYOlNiOXxlaTIqIn0kXSNFbVZmNiwkN2c1L358K0RAdypFJUIhWEdkN0RsPWJPR1p6cTRlaUN5dnlQYFZKSlUhMWJ+Tm1W''@;'; put 'put ''VT5YbT9RXTZZRjA1TnVzd2d6enw3e303YSs9SktlNzUuPjxrUjxOQ0tqPFY0IklVM35xcFQ1QDlsfGFYbXYpPHFNcXVQXlMlTHVZSHg0YVNqK29vXWVva3VgW2N5PVtAWFpNZzQpOnskcCosbCttfmR+L1ZXMmFAJmZgOU9+LiQ+Pi5LVGJXPFZ3T3c0Z1J4LFIqKldZL0hEPlJkLzFsRTMrVkIr''@;'; put 'put ''bTk4WWkwXWpOKGJmbDM0SmA/enMzZnltcUImQj5jPG5HSDU1e3spUmg/Y34jRmxESU1SOH44dUUuc0ZfezZ2QksrYW4xRkNHZ1MqOE16cnkpb29INDl2PD5bYlNTc1siaGFzRl5IMHEmLkY6RHVJTm0/cngjPitRWHhJaHNlKWVhbU9ZakhoZCxqTiVoP1s9TzkkN1AldElsNXh9X3pqVWF6ckB4''@;'; put 'put ''L1orVkppTFNGNnsmKkNDTH4uOHVhSmo1WT1GIV5nZXtrfEFyOytMRHRuKUt3RHwvdlJTZjdIbi91MU8rbWM9dDJSMkU/a1pVbGxtajJaaSNne3dofTc8IU5eO2daJjNLLEdoRFV4ZUFEZS9hbjIpPylKNzNTQDF9K19xJGxydG8mJW5mK11mcCVROzFtUT1nWTtLUkpzeTtjRk9sJTpfaTgkdklf''@;'; put 'put ''Xnd2OD9QOEZlIUNxcnApUD5gPlZlNVk/Jl9wRDEhbD9nJFFSRGFvJFNxckw6YFE+ZipfL3ZzYlhzWGA+KWgvWWtbOThFVFUuZn1GaUJDakQpMlMuTHdzPSJOTUJLJFVyY3RuaXE7KFpUVG92e3wlc0VKLDhhU2YlTE1ZZTVQUCpNdloyNzNiMUwpR0ozbE56N11PQXMpZjleP1hvN2hgVSNMPW1g''@;'; put 'put ''Ni5gfHwldnpROkc1JHx+fD9adSUkW284fWNTMURrbHsydXJQLnlSTlEzaVEwJCwpeFZHKT5LPE02dH4qMzQxdFIoYClERjN2JkVBQFppc3dZO3t4KUMkQjhDeyw7ezBNWiFtRTtuUGUmfGlMNUlvSHxjSnQsNSsjZT03SUh1TENxenB0TSR+NUd2ZytHXWAxQ095WCxCTGxyVmpiQ2VwMVZLKixy''@;'; put 'put ''eTdyX3lnJntxJEckcXtwN2FqekQ+JCVJYzYmaihRaUpSaCYhQyMyOmlTUSN3OiU6MzB8LzR5WkQwUG5mZUFyOUtfQFNyMTRwTltYMF40fj9CfCpHRXx5NlEmLD93eVMoP350fihLVWhzZj1JNWcqYjldQCUzZytGOjRLWjdKYChqbSkoWn1PdlRaMTAjJVo+eUA+Xj5JNWhkSCpRY2psdGhvbHRC''@;'; put 'put ''OkY9NyQ1R2s0VSFPfEM5MkFdd2gxWChCR1IsNT1bRCJvb01aMXh0NFdiYTFgZEB1MXd2eF81US5fPHxTQ2sjM3NzRm1nK3VmbDJ5LGFGNEJtaztna3J6LmZSPU9aVio9SGpncSFPWlZ8On43SmBXNkArYHpdMHJObmtQR31bXnlVIypWemk/R10zZDxzR1A8cSRBcDYuXmopN347bVZ6Lj5jK0Yr''@;'; put 'put ''MjwwZEhqYnFtfn1PNWBvKjU/QEdlTnBPQDhEZEZXcCo1T3Z7ZC8wfEByKCVMRFc0Imk/ZDZ+dlR7Yzd9dURuQF9JITFuJFdxIiZOY01gMkw1UUBZN0pPIldwdF5MZ2pxMURublJEPFFjVDhdQX03a0gqTW51ZiNvVURqKWIlV21WcXRtaWVbSSxDIXUhdk5vR3Q3TXVFSixoR3FLSyxFYjM9T1pW''@;'; put 'put ''Wmo3Jig/YiwoQjlTVkg+WWkoT2g/VmM7OCtSVFEwc1NIJDklL1hPen1xUnMpfEF9fkApPEZuN1liZV1TeyZGeGpwTWU6OT9HMjxpeSlweGtVZzg1aU56RSMvMn5rTEhUKzhfPGBvRS59N2l8OnNBQXRRQ1VwISMqdDgpYUYuNmEwTCpmMENpNUY2KHcwV2AyQUxLU0xTRzshP3lYPG9ddXBvZUtw''@;'; put 'put ''eCF3V2RDTHk7eyk1NT5jLjJUSnVPODFEZzU8YFRVbXpmQi9Bcm5NdWh+IWVKey8jL3QxYTEjdENgOVA1PzVHSiwuJDpHY2U3PVlFby9xMjY+SCJIUnNhTj9ENjdQOzlAZFEwX2hqeFpFWjwmOSVFRn1AQHRbUktKQnBvLGMjenBQM1pRTzFIZmxxT1A3Qi5IU3JLX3tHQ2MqQmNQQ11AdGE9cmEh''@;'; put 'put ''XXlqJnlVRGdiUGI9MmJrY0x+LiQ/aTRFbEgsZl9bU09PYkpIQmV8QGtmWCg7NDhjNitIdSwhK3NYXmZwJSFjQTo7VmdlNzBVR24hMT1OUEgmdj1JTF5ka1VaZnZlakk3Vz5tRlhWZm9VdDVZYztydDZ3Pm1TUU4mRlsjNE8obT97dldSNlk3bjsxMnBYUm4zPU0rVlIudWk0VTYoLk9HUjZJfDV7''@;'; put 'put ''Wk5wRX1CRGNQRGk5MXpNU2M5YyxnciY3TVl4UHglJDRBfUpmTmRDfitMJmtQdEhXLnlTWUluWFdkY1k9LCsyJG1mcmZ7azNZOzYzJlciTU94Zys/Y0lQcUJdK203ZWl3MUBjNnVRaUlrZXtES0RaPXl2bzpiRnlLSjxlZnlYJjhxYGhVVTwpR0cwOkYwSFJOcHM8QHpmP0Vgc1MqTktWLyskVztX''@;'; put 'put ''U2l0NGxMb0whKHFEfFVxWitaQV04WHEwZ3d2YUdJfUcsa3lkeXA5TkJQV0QyZFVxV3xRSGREQEVjZyQ0dmhWYFApPTFkdkguMzFUXXUyZWlVRyRkWDNaayxkfjBLJl8zWkJ8Ok5ORG4wTVNSSz9VZCVOS3VIWEpYO1tBMVBnfUtEI1RKelo2a0E8ZnNjPDFkYTFnIVticDBXODM0UFoiQEsuPkJx''@;'; put 'put ''aFJOZ3x4Ki5yeWQvTXxQOT9YXXUqR2dacFdVPixBNUo3aWF9al47QzpybzVpOS5YI08iajJaQS8jKipTV3Z4NF5eSTwlXWcmYkQ4Q2s3JWIiI0xVSTFlcHgsQzx4UilHWGRYN3w0d2t4ZXBwMVJwSnp7MS90S0YsTlRnLzE/bmlMblclOWJ4dE9xRzNPUVhROSgscih8aGFqS2BPVjV8NmlPRy5p''@;'; put 'put ''SmhEd1A1SH5vV2g+azIrO2ReZiVzNi5jfXomJE5nbWxuZy8hS2lKZiZXZj5LdSQ8a2IlcnV2cHlvTD5KbHsrSSZGPSlrWm1TenwjOWpvTCwmcTMvOWtkNXVycE1WJSFGSSVaOFcyeXlnbWwwVzh4QGk6YlQ0bFtgaz9sP0M7P1EoTlg9Z3NEREZEUFpYS1Y7fW8ybWM8Rn5dT2pAUmwic3JofXY+''@;'; put 'put ''LlBXfkEqY0dkKSNtYyQzJW0zVTQlbWNWNzg3XTRXdyFVUzJ3fkxybzJIPlM2SU94c09iekdRMW0zYHRURERHenc9RTBoL2J3dyNMc0k9LDIxQDNbVFpnSjdTXmhVSiQ0W21lblU9UX5qYlo0WDY3QWRgN2dkQHVVY3pjMGNRN0thNCpsdEZgTnBMMUpgckhhTkY6bllnR3l9d0pMemprYWdWYkln''@;'; put 'put ''UW1CKXB2VHkqY0J9L0BrWy5uPltzajgrSnpRcTxHWE55RDs7KT1bSnpUaXl8I3F1bVJmbEdXblU+dGk/NDRRNUIpTUZmZ25YNT1DL35WOVIkTzksYjNhazx4Mz1lPD9GfXt7Q1pxQ15wXkc+KiVFU0guaHJ9MixIRDwod09gYGZyRzteZTBwdH1PbFg1WzFkJnV2YiVCZWtUY05wT01OSERdSnFd''@;'; put 'put ''T2VdKm1pNFdveXEjRDguNmV6Omh3LE1xT1BxTUc4LjMxN1ciNUkwLG5EIzBkZlpDflY3UWNvPSRXI2R7TiNgaCk7Tjp2fStBb1koPFVYUkU2VWFAcXd8e0dLZFsuRnt+aE1IbVpnemgkTUVWekxLLlBDbm41b0g/ajt6IS9YS20/bmFBMmJoRlBYY1doI3k9MDxsTjlsTzdGZzFUV2hga3kwLjd+''@;'; put 'put ''eUJGS3VWSGNwZmBwUXp+Uj81W2NOMHFofW1rKzZPQih2PUIqLzM1YTo1V1YjWVZML0tqU1FAek0+TSpNWURBcjNzTDspIV56YiNXPUgqWWFLQF9HRDtgTXJ7fXUvVX4rSDVUKWdzL1JfSGNsdGthXypEVzZ1JFJKUU15NFF7bixVNkJgaDchMVB5YThIKTg6YW0+TT9NJmFteUpNQjxaZ2c5c107''@;'; put 'put ''YXsmWV89Tn01SjVRdm1vM2dISypKK289UFlJLzo1RUlHWmMsIVViS1NYdWk/YnFUZyU5fHg+IW1aPHhIW0VwSjN0KTdgX1ZyczdwSmRZTlAlekZVaSJOM11PNyJ1czcmXWMpdFN1UW5YOyx1WHFCNGdNQ2d5O2FiJm0kTSkrST4pPDxbeHtgbFMkSkJzcUIuTX10L3RYP0tvLyRKPVYlIl9sTCYh''@;'; put 'put ''eiZIUnx0XTZNaWUiXy46TSJOOWNnJVMpXnFUVWFvNFteeTwpUnciYDpReHNEREs4Vyt8RWVwbVdjIUF4VyomfUJWLkx7OHRbKCpmOSFmMDN1REsjOUpQPE1Ub0V7WS41WClofGYuVnxPNURpXXJAITs7UGdCdikvb201PWo1SXhJeD5wLklnNzFKTXwvOy5eLFVqOT5IfGVtMDQsLzs/a35KZkM+''@;'; put 'put ''cD09bzxYcWtzQlBTaExmSj9rTC9VfVtQV0pHTzxyPipec2s/IUQle11OfEZZIlhbWChncnc5a3RlcEAjIWR7eFdmN2ZOQi5SfDBtSSlGViV2OlJARWdNZmo1UWl5Rll6KHxMXXBdUGV7W240KF5UbSN+Rio3bkRrUSF2d1d3S2VJbERYX2lEcmBeZSombWhuQztYaENJZSF1LEEhckx5TmwwTT5T''@;'; put 'put ''Nz9OTGQoQ0R+ez97fXBGQGYkYVJke3p4NHFtMmwrMkdwIWNoSUlMZCxmTCl8cXRDMysmU2xULDshYkBjNXx7aFZgckVgQERbXlJKITlrPllic25FfUtzWSwsJXN4fUxKLmZ1R1g1YjNiRyh2OVJsb1pDcCo8SGtnbzd5U11AWldjaSQyTUpiSEZGe1IocElKPmRMJSlDUDFHaFEidnlgLkZMZU9f''@;'; put 'put ''Ll8pZkAzWU49Njlla2NlMiYpYXQkdVE3RUs1KDlMYWpHKjBAWiZiRzh2Tl03QF0sS3wyaT0iR1gyMjVbQCQ6d1VIWlFpckpDO3ZmTC5CY3UxZnd1c2AlLENIeFVydnZzfFY0SVI7a0xWISNJOiJpOClFPTM1VzV0ZXM8U1pnfitCfFdfVi9ySUBRajhHUEhYZyJ3UXtTKGlmTzdnMVg1OEUoU0hY''@;'; put 'put ''aWJ+V0JyfkdjIVRWZDx6cWUyNF5RSF50Kjs9NFI0TmsibG9reyJsbEZbIV40OG5MSHxVRldrIVI2XkVZcWhuLlZpNlt6Pmk8N3UmNCl2XSF4YEJvYkhwc2FXNVQwNWtTWlNrUmBKYWdeMDgoXnEqT2xsKSk0cyFTRTYyN0hPWDlpcXxjV3UrNChVUE9WeGQzPUsheDkjKHoxeFYlRUxjVy5MTmBg''@;'; put 'put ''QFlPfiEvYVVHYlo9e2BAXyEzMzBVZSlMN1VOVjdfTnpmTWYpWksuNT1MLj8xVHdab15pS25aUkdePS5yUi95eTEwaHFvLzE4Yzh5M1EuWEFvfCRVd1E/bVV9UmNJbC9AKFJSZ1BWRDQ6ZnlsMGtFTT9rPWFtdmcjd3dYQkA3W1lFbmhAdTtgKzlCNywsJUBsaXB4eStnYUJ7UkRlYzZ2eFksMXh8''@;'; put 'put ''LjhPXik2Xm8oTmY6USMrXXc3R3dQT2Y3KyNfcGVfSFJWRHNqZVhvTjZLJCk3cntAI05kRl4sSktwTipyXk5xNjlLdGBZcVBqOkAxUiI/O0JAcmZ1Mz9geF00QldpKGFEdnxYJkE4YDdPLklrWyJSe2ddTyZ1cDEpYWlMUnYsQiViXj5pV29jXWRCcTkpRWZ0PEg0dzZCWnV2UlBLN2phPW8kal1k''@;'; put 'put ''bSNRUXQoR197M1FhdytbXVZXM11CK0Q1aXpJNE91K3w2VUhiUTY3PyZyPl88Zkp3eFh1PnEjPjV3TUgwLi9yT1R6cUN1LCxRcmNJJDEwcyVAVUg8IWxbZ3pPWXtgMVR8TmJPMTlJKnJUI1lqczcqYjswQyZxYSFFWH4+IVtOZztFX2RAMTliaiFVMjJeIlkidyYvJGpSaEVNcyF3Wz00SHppUCVF''@;'; put 'put ''L3YofkxDbkVSIVosaSZEN0Z5PGtLS1Yhfk9sYHBCfml+TVs7eGk+QmBXVz1bSVh4fXsyOjlkPWVTSmZOe1ErNHA1MyZiJFIkTGpyfk1xXi5WRiRYcXI+XiFpTDw/aFtpSixSbj8+R1JfWmJIJkkrdywseC5ya3RQRSFmJSwsO21TLihmQUo1WWhPdyw5Skh8fi5TL3MmRDJoPjdMe2BXTV1AYTxK''@;'; put 'put ''UlBZM3RLdzViakcpamw1OztoZjskMWpCQj8/OzI4IWNrYmxfPHtWU1JUQ3RtSlAqUkRHJm9pUU9kWGR2YDFRMHBYOj5db3tvWV4yb09mPzF3TUQoUSxZMWFuL2J2Jk1EWkl4ZW94IW5VenZTKiRJYUIydnF6PypVLi8pZGlQKTJ5M0N8VStLY2Foaks7ej9LKlMxand6YiFyUkp9MEBFSG1ANS8s''@;'; put 'put ''cnw5bUxgbn02WjU9a1IpOlYlemIhcjY9Tl5AJCosNz0lfWswUGcjfWF8cVZxP2d7JWR3WV5AWEB5RjRWI1l7YD1XTn1uPipZdmRHfGd3VVIiO1tOLERoaWo9fHYmbldaZ0dLTH12QWl6ZEp6aDQ+QSgqLCwqMntRa3k9RG9bSmBTInpzdypnJkQrQDxMcUxKaUVHQCh6aEtifkRKblZbXj9dLHBZ''@;'; put 'put ''P3s9PSMlbTtVSEtZKHxweXEleXNgKnlxT3JvImA0Z1gzMCR4UiNxMmk5SywpfGhYTj8qdE5oI2xDMDpfKH5bV2l0JHl1NF58XiZRNXt8KDd2NkBfZD4+VXxXSDU5SH1AYndUczpMXmtQNEszdmZ4dzFzOWdiI1l+RGFaSFhrO0p2MF9mX0EuT3FYLCZMY0VSXj1zPHw3VUY7LmJ7eGwodW9qL0R3''@;'; put 'put ''QltgXX4xQC9oQ3NDPD9uS2FjKkF4M3Ypfnx1T1RQLz9jXitMc1BMJXM6TSQoIklqPUZsWCgzfnwsRzVGODc2WXpXXXZzOiI6a3MmVSxWWF91YDRZdFBZVncrU0UjO1BzYEheXUFSVDJxJVtEKW4qXyFpTjw0JXlSIW1lPFg4XiE5KzBgdDsmT2pweihPaVdfMSxlMDFpLCw2KVEpIyxiLiUlNUxw''@;'; put 'put ''cGlbbDx0TlVGV2wxcD5BeDNWImBQNl8sPTlmXjQ7Y0MyZyp5akExMk5mMkxTXTAjbWhVXVJPSGJGaWdAPVNtQmZ8LCZoODJQeF4lP2BDMml4QWB1VTpHO3ReYmdMYmNKXXhhVER8TCFLdVVPMHZ1W05oVipkK2N6KEZdcX1lOixlN0RiKywvbmVNRXBzbiIwMkorP18qJER9bHIqaUZUJlBEVkVA''@;'; put 'put ''KFdsVSJRT181d0s5dlIsKTFfcEI8WEsmJUpKXVVoOGMrcVkoXnFlMHV4KixbTVBpS0skM0peXyNGRzk8Q2lzPnZHeWpSLiR6cWhOM2paNGdqeSosRHtPQWwmITUyZS9hcVFbI15WMS5ZJUhNUXYlejhZVjhZVSVrRWU7MTRmNTspdnFveDZLMls2YktoTi5mMUQyd1I6aiRUUmFFNDVlRzFEN0BA''@;'; put 'put ''ckpdS1VsYEpIWkdTOG9zfFMufHk7aDIian5qTixGRkoxOzowLDZ7LGpkcixqbUEsai9uNG9dMTdLZEJgQ1pWVVV6K1RRTWwqLFV3Yi4uemtyeEI3OiU2dHI7MktEUDxfIyN6Jm54cVFeRyp4PmxWNUJVc0pGbVt6KGtCKndzaFtMZ1Vrbn53K0spTUZaMkJ3N2dmeyFwPlFbZCQzQmxLLjw0TTxI''@;'; put 'put ''eExRWTl7V2khNTwvbS42MW81a0l4ZGR6JkF7RGkkMnBUUHoqYFBMT3s1RHRkWCVEWmxHdEcmXkNtRiQzV2sodGB2e3YpXzA7U0RednM6UWNnZ1MmJCRpcVg3T2JuN112UGZAQyVfQiVrXz5uSUdpYl0vUFhNTWxFO3ZyQWxYI0RQMjpnZkZwP102c2spcHEvOWkoR0dvOWdge303KEZDSHloXkN9''@;'; put 'put ''KFYibUteUlVjV1I1fWV1Wk4/TTRrWDdPYk9XRjdETkhMQEZ3dylMclhhZShfczQoW1V1bkpWfXRaRSp6Kj5WIW1ARlpUNm4vXW5MUjEkYGlUK3MsdCZ0OndLemd1aDFwOndmLncmTDJLMzNMOTdIVU0ocEwpXzlXV2BKKH1wZHJlXnZ7dioySkA7dXEmR1U7SkBGelM1XnVxOlRiOThPaWghWXJH''@;'; put 'put ''XkhpdG81c2Z7bzx8fWBZOFlYJHg4cCl5Yig6OExaLCwkL2x5dzwjY2BMd1hDNC85a19gLmhUOV50P2xvbGJVYyZMQ219Q09uSj1uPjtKQ3tkdzlFTmZeeTEzZ1MkWXNwPk9tek05Y1JWL1ZKYDlRKyJ8P10mTHVBQyZ9djp5aWdvTHs4IzdCKk1gaj9nI0xRQnRxVypMVDE8WDVFZ3xoWUclPlUs''@;'; put 'put ''PihvVj1TWCIsdT9uOlFbX11EdDtCRkFEKyNuRDd3d0FuUDEsX1N5SiZZWFcjZyp9UEZ+K0BDOlVVdnwlW0xLdj1UY1FSX0pJRm9HLCk2YFQzRkZAVlV5NTF+bCpMME98WT4rZ1hnWk98XVtzeGEuJCNOSj5kS0dKKG9YU2FoZWUrLi9RWz9XJXBtWkhAaSo+KHt5fGBSNSlrJFRzSH0rUWtmbWs5''@;'; put 'put ''JmwjWEJyUjUjLzlkNjFITGM3biNBazRjdiRFLm0weU56Nl4yNngreVQ4PUZgeF1OMUVZIkJmPE0lSUw+cGRqWE5ESXxPOT8/d3RsTTJtPiosPj1IWF8rOShVKSNiayNVZzA9NChjYUsqXTZlO3xjTEFrL2plaWw5LiVvbSFzUjkjIkd2WW8vJmBnP1VFV004IWxbbzFXUnpZWUR2MF90cSpQQSxV''@;'; put 'put ''eX5FdiRaIVh1e29nIWQhcyU/b0VRbVpYSjB1Tl5kOHo1WjJsdy8sTCtOXjE7MzF2eHhranhfYjQlLiV6ZiVrWF5sbFA5clU0Oz96PHtKSiR1OCg5IzZodj9UYVNyJXJiIkRNUHJTU2t3PFsjP1omY2ttKWFzMyQ7MS97VWMwQStwPHAleXArOkx5eTlUa2k8REBaclptSXx5XWVJKFF2PmcvN2RG''@;'; put 'put ''JWV8bVFELlZzVmhOeFIlTEE1L09nWDo4W1h4YmVuenFuV3hsKGFDTGduIV07ZEl+azB1LCY4X2A7TEF+OlljSj1QN1k1aWVNKTtrRG0vfDo1VVReelN0SDZVIV16ZzE5YEs/dnNJQC88Y35qdnhvIWRsUlpxWF9vRHshZVNhbC8oZ1NOcm1wWiosVkklW2k5azBdTV9pfChGVj52OGFHTngjMCFY''@;'; put 'put ''ZkRTeFF8KktgZ01mM0V4MyhHOFZxQkdUe20/aEczfH4oVlZlUENbQkdyTTgpJWJ3Jl9UcCE/YWRmdVgkJWQ3VUtYfDl6NUJyczY8SW5nI35SQSNlLD0/aXl1NTFxWVBtfXx7cCx1NnxSXzgqN3BgZU52JTNFPGw0N2RTZWtGUjoyJEl9IylhUzU/eUtTL0paSjY9fEZIbUFTVndtTjVpNjUzdVgq''@;'; put 'put ''fUddYjl+ZVNeZCJaZTZfanlHNXxrP25kNi5WYSZ5SmE8cX5jSmJlbH5hVndzY1ZYRWFxSTd1bX5UdDxxKHRPYz5iZ0xfaDxxbkdremxaKlpEbk5+ZHdtTihnN1pFNl9pX28hMWNAMWQjfHhHKkpKWjcqO1pbPCEkb19DPCgreEV6WTh+NUJla2RIZ3N9V24mOWtzb0BNd0Mkfm9fQFtNKkhZWSo9''@;'; put 'put ''LHlxIk1CLFdVRml8dEw/VWNhISN7OUtsUVdKMURyTCMsP25mSzUrYk5AQ1FzJCYrUStRQyFGZUpWSUJAV05DJVJ5SEFMRV1RUn5GVWdMZEdCPzFCY3o5cDdGLGIma3tYIWxgcz9RTUZeUVJNeSJlTU1kYVNqdzZBX2hxQnF8SzxIcU9FIih+KzZdcEBCbUFUSCsoI1A6VmEoQlhpU25mVDZOaEpp''@;'; put 'put ''c3V+LmM2Q3hxVVEyZkd2KUhqcDYqcWFlZn1YJWhrT0RUN1hoLjRBIWg3Zys6eDp9MSojR3R4U0gremg2JitJTnJYQXJsPk5feVIyPXVGSWk4KzQhP15ASyNVfkJAYjclUX0oSFBIJkt0THNmRmY/fTU0RkklPXl6Zk5tTm9gcDsoQXVyJCFUJEB9LDBSVl1LLjtrVTJoOWlvXnoxJC58KzZkITxL''@;'; put 'put ''Um8zRjA0R1pWYDM+e2JMLFlaJmBkd2xeVEBAPmw5RzNSP2c7Zy52TipnT0RuejlpOVtYRXldMmtYX3wzQiNOX2VBUkJncE5tUk5ZVGMpKVh4KkhkOTM4fG9Nfnoqc0MkWypyZUBifHlQKCUoP35CX19OTjlkfjZIWm4mblFFV3Y5ZE4vSXhpPTZxQCR2dG83NHlkJE80NjFIUHZKJTxjPyxuKDtI''@;'; put 'put ''NSFYKFdNKmV7IUZNKkdtNkpScG9QTTB9WkovY1QweFBdMDhIW25dc3hBQkghdXlYalB+QEorciJ9MWVFLE19cT5UYHMiQTdbTDJVeG1zODJAQkVdcldVfiJ1Zi8iVCticVNDYVI2eFp+SVBIdlNTMTV0Yi8mYlZVIzQoTmU1NmR9WD8/P3U+YCo3czI5dDVZOVl5LzEzYlYpNGB3PyFgMVl0PWAj''@;'; put 'put ''Tk1fSnNtKmZwfF1FXjM7W2NnT31SdjxjfnZqW1oxe2xHPlt8PE1pWUEsXkFHXnFUNGNjXkguMlh4Y2FVI1RIeX0jKyVqQzF5NmI6KEJ1WnZPYSp2K2FXNSYrVj1NKVcyTkVEZ3w9T01DZnZkNWYzb2s/IStTVVYpfUZGIltCMDJ1KmNfcW1MZjd0JUZLPE8wMjRaZiVyUEh8MWo/IUJSMFMvPGw1''@;'; put 'put ''L1lCfncvNEQoUy5mP1Q0eDFlN19uaUVdJUVQLENLPERJckdOWyYzJCpDfTE6Kig1O3MyaEA0WDJoNmBTTERLVE54bF5xaSNVVDdXPilMN1s2LD5oT1E+SkRuTn08dzlkS3xBV2xLRGBMRXlCIXsvRlo6cmRDPiJKLHQyfUlSakFVPVZKekRTNSp1V0MyeU1paldafU0rL0Z2Xm5ye3Q8WE8ma0t6''@;'; put 'put ''RG9BdC57R3NYMT4pLG4iNHRtNV9+KHozZU1fTSpReGNdPjlBaW19PXwyPzNXWE83L15NY1FbZnA1V2QiU1tMMUo/P2dKWHZxOGxpPF1ffjBjKUk6cnRebXtwV3V2Ji9CT0NON0J+eV9gU0hBKGVpeTBBRzIoaXtsT2xITGw6Uk0sXkNsTW9PWSFCPl5NY1E7QnE1V2RQVF5sUiskdGl7L0Vgeik8''@;'; put 'put ''RGJILlJ5d3xUZWFEOTx3QktVVXFvJUZiKTwmcUZvRW4oTlt4TlZRbDNwYjM3ezNeKG9EYEc5VmYsLE9ncVVDZ1RpJk15Z0lwWXolUmJEQ3hUQ0A0cVIjRzNSaC9wV30rWTw2eVFpJXleXVFpL3leXT8hbCtpezZwLzFFV2gpdCVNc3AlKTc/TF1uXi5maklMLCFjfWlTfSFbSH1tNSxdZ147ezp3''@;'; put 'put ''NlVlSnNUSXwqaHo+LCR0JXAsLE5BVExLekY+RGlXVXJkWyRpSTwuKn5WcFlIN0ZjSl49dTk3fk1HPyt4ekJ2LzAoajRaUENdbF85V1ZEZkRTWH0jNWEmJkJ1QndIWjVea3BoQVMiST5NVFFCYnEqc1NjJl9rWFApeVdfPiwxN1VXRlg5OmN6NExBMmdkdDtidDRlN1BAbndRKXo2UDEvP0poMXtV''@;'; put 'put ''dzlUbiwhQ3dHJWxvSFNiNGA4eHZCSUIuNyxnKV9DIV07M1A6TDdWOlgzbFI5YyV0aXhafWhVM09VMUlbYUtVdEB3PUplbFYpNUJmcD5IfXEvRVNyPGlZeWooS3ZWO3ZuMlQ6I0BbNnZuS3tKJSYze0B9ImBrL1NuT3NyWT5CQW09Tl9hQD80dTBEQ0JEKSJxWnpreURUbHo8b1o0bGRES05Gcmtt''@;'; put 'put ''Xl8oZig8K3A7b2YpJW9vKEklTVh1Iz4uMUBVMlRINC8yYTojTlBWJnFVMzlLUipDV1soIiZwdGk/QFZ4Y2JHTlFFbkpNJnN1UjokMWRbWl94ZF1hR0ZFak4wMSl2dWMlcF9xOnQrJVs8YWxWKW4sVkBgZ2hIM2svRz8rMVQ3dkxxU3o0Uz5KJix0OkpofHBVQiI/KTRSa3A2TVNRblhGPzxubnh+''@;'; put 'put ''U3BSbjFMUUVfdVtISzsraC42d1hFNTs4RCx7WyYlJjZpQ1pze1V7ZFs7Tjg5TGxsUnlXWjJkXzBQZ3IqcWVdQk1meFZBZG1dNGdoaUJydV51MWQpaGhiOX07TT9mXnFOfCNzfntkeDA4OyNae0RYe1o5MTdkenYrKmFLS1FpeXBeXTJPRj4yTUQ0IlElJiIiI1ttVmh9RC9jJG12RDpydCI8PklO''@;'; put 'put ''UiUmaT46enFvQHQ3LyZiTm86bWNOaWp4RSk5N183NlYlWnNpV2VXbnZoQywsfFNKaWQoUTMzQnImNU1zPm03fUlzXipDdnN0ZUVqTHB9cWI4OH5UdipjNzFoSz5TQTVXPmQuUlBZUS9KLFo+UX59cjFMU31MZmNlO1JuN0pWKVlJZUw1aHVONW4+YDg5L1RgW2JSbV56QWgpfnBXMC56aiZ2K2gp''@;'; put 'put ''fCx9Un1Hd1k0YTgrOFNEI0cmJD0yI0I7TVsrN0pUSnlxSDN1TDp2e1IzbDxPcDwpI11MYD01aCZHNlhvVXIiUFFkM2BuV2owXlYld3QoNE1Me2Mpdmw7ald3dHBbT2JzTzdncjkmYWMlezpfTVhAbGNsZz5VfWVbPV40P1FkO0BQI2VyJls4e2k8Rl1pPmI7d0hNVXhrcFlQWj19ZW1ZI052RGRi''@;'; put 'put ''b2J2Q2QwaiZqQlR4Jll2RytEQERgdXEmWzhYR0AufFkmJk0ueUdUQl02dC8vQHouKT4uUGxWTiVaTGgmKyUxSjpldnI7Km9WKjxvRmh2LiVHdjdBXUJkfUksXShBPHB2fTE3blUvQjlrJWVHPipqSnMwYldYQiJEc2IvODFDeU1bODdbIkp5MUN0dzc6fn5ENFRyMS4kNXU/a1V0aEJdPHRddHVG''@;'; put 'put ''JXokcWwpQWluNW1lbGw4fiNoW1NUJWxvfDx7Kn4pXSE0KzFsNTlpK1N3Y0NndmdhJmtFIntxKUtoczViY0JLI1I2WTBOJnlsc3F9b09PYjdNemdtW05GOTJWakdpcGhRLjw3NyUjT3ZTbDIjSi4ybClleEFFVDFJM2FiNSlJP113VDljSjt0bD8hIXNxUUtNenJSdkxmcH48VT5maWIsPGo2eFll''@;'; put 'put ''QHt5TlJRMCpRKXpMSysyKHU+cWx1Ln0sRGJAYSVmfj45O2lyXilNcm89M3hOQzpBMks0b15WclVXZFdqcjdzeixrRl9tPVkyd3thbmcyKCRVVT0kfC5wNiFGSzFEPFVac1U0bkJEVns6Nj1gSUJ+RWxwc2wpWTVxcVZxZTlUVDdFRHlNWztMN3ROUVAueG93fGpsOWcvNiNzanBHTCsjTz5Ee0tz''@;'; put 'put ''fipBVmc2bHs3bWVPPXJdI0N6NlpPSG1QX0R5cFAwLDZUVFI2QWM2UnYyKmYhPzwobSVMJlgxTnltNztMLHFpJUklLFVSPDtdaDE8VXNtNU09SHM6S2Z9XUpXZ0QjaGY1NnwyS0R+ZVU0QGFvXkxacWxxMTRCLG1JK1BfPk87e3c9XUZYTDU3YWxPVS90fnlQfC46TlJMeEw+Sjo/S2EzcCRvVCNJ''@;'; put 'put ''PzgxNFt8V0N9NFE1TWo3clNCfmRscypHWmtneSNSRy9NVlU4MVhFWnV0fXZ8V3BUckg2OTZDez5CJlhucCImbnQ+TD1RX2dPLj1hYShDX0E7KWdAIVVpNT0/XTg8eypOc0RTXnAlMHVvXmM0azVXUT0hb0tkXWx+MlBBInt9bWZEMkI1NStRcz5beUNFLjNDT19DbVpJPldjQi81azttZHpPKEYj''@;'; put 'put ''QGo7eEooQS5oSDN3UGc0MkIkNTJAamwoXyUqTDtedUBXbn4yU1M8eEJjOyxjO2p0MHR8bUwyVkVrXncpKWp0JE5ZbHBCaGJkbVJ6MCY4e2tkMXd6b1g5ZEhPJCxJbUJlRCx1SVAjWyw5d0lqOG0lSWM2S2UoR2suO3c1IyZrVjsobnJ6Nm1Idyh8Ll0/Wkk+TUcyUmBPTkRpO3MqPmtWJXohYXFu''@;'; put 'put ''MF9tRz5hNlI+NDE0Vn0uPDshMTR6eFJHdit9cGp8OUx5ZV5WRX0lTEJrd1hTTzI2biVwKXhNMXFbamU/Yzd6TCw+KVYwcnVaZ1VUZDloI0FTWGEiW2czYDNXMCszN2xnaiUwIU1eNk02RzBSYnBjcS9fPnduTj0pczouaChBWDA6UXpRUz5+e3dVRVJ7RnJUMFk6OC4+VT5OfjteNm0oOGVDLjFx''@;'; put 'put ''c15Nb0VqNn5CMHNTWDJMU1dvTmQkQ15AeF5nWVZydGxkI3BvcWYkZHtSSHgkW1JZc2FUXn5VRUQvcyp7MClsSypKLCh4JSpkRjBucERDfjN+MSs0biIzJTxTWF8+c2M+MzovLCwmWEh9eCNWR3c9ZWQpQVF4UFExQWJsP2ZWbW9mVkQlKFlJPDIpdU04WyUpYW10RC8pMUtjdCEiK3QhIk4yaTdq''@;'; put 'put ''flM6I2g+dzBvS0srMj5MOTdQcVFSOz1LKldecDw/Nn1PQ1s1UVU8dGh3TXsobiNJLClnKDh2MGNlK0ZpdjJZbDgwLkpzOix+VU84PUlgOjQ+cWFTN3cwbFhrRnpvSk49JCQ1UiQ/ZCFXdUBKRkFwdUMvRXgpa1Y+UTJKPVpWNj4zSGVUfVR0eSFDRmV0UUZNS1lVdlR7bUcsSD5NOE53cDU2PmNG''@;'; put 'put ''JEIma0JBLHUqNEt+XkNta0BvV3tsPE8rIntNNjRrLHNlWEZlSlRyaTFKPTpeOnYwYS54R2IzcjAydXF1RSJjc0BDeiNkMypSX1MqOUFXN3FgIjR0SjY3Y0E0K2RNUFN4XlY+TX5bQWZFRn0xQExpQSEjKFFWfVdLKiwrJTBZakEsKW1tLH57UCYsOCQqJipgdmwxXmQxZDMwZkkqYCN4XWc7WH0j''@;'; put 'put ''cmlvODkyUns7YlQoV0FTKko1PTc6Qyg0OiZHay5KfnpVRW5SZHRLcSpZclkzdlQ+I1pHcV5kUHA0eDFHdm19I3g/antGemJUcT5CVjB6b2EuTmJBMmp6KyxdVTZ4e2xmYWJEWGlHeSV8eDB6cHhVS0t6ZVZJeTtGZXFgckNWLnUlR1RSQEk3b1tzSW9MISh8T0JrJDhDMlZdKyNLO099a0Q4Lk9I''@;'; put 'put ''RnddKWRHeHclVzJjOkJRY0JNRVU1fkhYdW99c1RPXix2cVNoUHUuPHF7WEhwTkMzSixmVTczajdAL21bS3FBOCxYWyY7LnpLPTopbjtFJGRgJGhMMD0lKXlOVHE5XU9YYnVkRCpKXi52Mnk3SFhxI1hoPG4mW0kzOFlbVWJlSjNaaz54aTdDMk9dY2gvV31hZVp0fnVsNztLJThMWlFDJXhrPVll''@;'; put 'put ''LGlvL0ldRF8wJGt2MHNfZiF2SEk6PG5qXnZqTCFNeTRVfjMqeXxxMU95RGhTZypTMio4OV1del10WkJCQmlZIjhUfXFgZ01saGZARkAoY1o5T0AuYUN0Sj5UO24iXXdeQFNpZGpQRGpMKyV4SWJPU0dFQG5hcXlYeDIpWXgiPVojKEBQXyZzaS4iSyl9Xl9dKWpJdmdWJVtfXSlESTRWL35JaGQm''@;'; put 'put ''VSF8K0VIWk1eV0V8OnI4X0MsZGV6dWklRzozIUlpejYlUnxRPShvb2wpSXVEcWl+SCImbDExbFtCenJlMFZrayZRc0lPSTldLlVLKj5jWUc3eERNWF97ME5SOj9XYz5gXi5oazgpe10sYWgvM29jakJ9TXJHWyxXQXtjYkt8MWk/JVJ5V1omV25ZTTh4Y05qTHwuLk1aMVs6SmRCNn1JIkhLUkZ3''@;'; put 'put ''LHZ4YVQoO1p8PEVITj5bWU9gZ1lpeSorMCRScnsjZ2B5dXtiSHIpemszRkttW2FtJDpWbSl0ezl0XktseUZHRHFFJjUsOTJwe3NNVGZIP2IzdUYzUEpmZltTTTxnTT5TSS4xVEA+VyxlfSpeSzsrRyNsenM5bkM8ZVApK0tue1R2fGN1WjNmcG9Cc019dkI9aXRWIWF3aDU9QV1aMV5la2AuMz83''@;'; put 'put ''LDdCSGJuZiRLUnJ6Ll0wMTlxKTwsOjI+Kmg1TSY8M1c8eUs+QiouWHpJMzg6KGchPUhxb00pY11IR3VqbHs9KDVaaDVKLnwpdmxzK0pJTW5CR3dpcld9Smc9VVk5KEp9dXx2MDBxdXE9YU04eyxgWUloOyN7NmxKYlF+XnpEUU03PC8sNHQ3I0ZqaDcqazQ9LE5SQCZkaXhJOTZYYFh6MT15LnM7''@;'; put 'put ''Y0JKMTspTmBaX09QcHoxNXtKWnEuOCsre1VDZVAuRHRQPWJnK1IyPCU0RWtqXk5eISklVzhNJUVPMWgiWmtXPCxydDVsJV0oV3dmQjAwWjh0aXZIWEdUTjl7KCQkTFEmWyFQTyNyWG5VT283WnlqQEg3ZF13LDA5bTdDWzk3Yk9JaTUzdjlWV1VzakpmczspZzxhY3p7UFZpUTFFW0dlPENUJmxI''@;'; put 'put ''aitYSm8rMkg7WEMmXkgpaiJ3cXtpdU5Sc1klVjtNXjUlJnJfYlZyaHMrSUhjYiVxaDUofmIxPnIhY0J+SW4se0lhL2oxVGcpOkRrTjB2S1J6MWA8IXVJWCwlZnkpKXwsdHZAO3xXS2FoYmRgSSNOdiZWTUgxREEvMlFjaXwwbU9bS3s+O0lYcWt6ZDhxMWhlXUAia0ZUeyZhayQpWWNmOEkhYyZN''@;'; put 'put ''UkNleEk6SyRCZ1dqKW4lZV9sRU0/QGVQUGx0MT1ueWdLREsuXTMxeHVrJT5nWUMzYCRyXXxAd2ZNIXRweW9IKXc2OCo5ejFSZUgub1lGQ2tQUkQ1OWx7bEVWXjlMeXN2ajswLEtRO3VWOnd5IVhaK0FRfTA4dDxAMUptSkAhb19EOWNkdyk0QUdKTGMocU1uM1UrMDRwe0tLKio1XXRrP1lpNURS''@;'; put 'put ''cFlIaTRLeyMrUGFpWmY+TjpQP0NJNV1xUEthb2BUK2V7aGJafiUhcGRVZThtaERQO2dQNjU8bzM7Oy5AZGgkL0k7cmV6XXg3LGZwY3F+Yll1UksuUjEpR0VLXislUWsuKnJoXWdbKkI1O0twe1N7PSY7YGwpLHdqLzJ1cSQmVHkoazJUQ2BqPkpaUy9oW1BiRE0lJTk7ZUpbOzd0fXwsXUx5fElY''@;'; put 'put ''SzVVM1VJXUdhJTdVTW9ZZF1bZFhoWDx7InJYXnl1Q1ZKKkwvUVZLMFF1dXRQWFdBXVQhPGBKbSEvNWI4WXVUYSF8STJGeWl3NENtQDtDalQsUz49TDtAQjtLUkZGUn1CPz5EbDY2JXpGRV0rX2prR014alpEb2ooZEM4JXIyJk52cFFwKkVJT3FCUW5oQGYuI1pqKGRDOG4vdV9CUDNfZyE/Qktm''@;'; put 'put ''b2orZG5OekxHSXdrWlYpdD93Z31gTEkmNH1fKnhwMnY5QiUsK2EhPm1fWTFZMyF1KWsxciF1UnReR3B2YXE0MTM7UTxHRSIhXj5EMm81OTElMV09b0UhZzdwSVlSeDhpSTZaPHtYfDBgOWJ3fTdFalN5cGNLdXkhOjNKKi5JeHlCLntDN1F2YCNDOk5uT3QqKztyS3Qjayt8QChjIm97PilGNklH''@;'; put 'put ''N31AZSRyWmg1QDg9VzJDX11YMVVmT0tDPDMmKigiR0J2LCwicTUvcFJbO1J1JXdBYnxddikiJk5eaGI6bWRAUSRqeDxdUjVPNGx9QFlqOUdLMSk+K2hAYklGLGZtK1ZQUjBJcXBwTV9deyUoSUBwLGgrcFEwfTVnKklkT1o2NndIekM8dl5aaS9LbU9eSyxnSzpaImYuaW9PcE1lOmM+ZWZVeWY9''@;'; put 'put ''TzZUS3tUdzR2U25FOSR6ZigvIiRKK0JsOVZoazFwKEV7QkNqOTFBUig4WEssSCtWPFJIRW0kT3RHJkwsUHo5anpqPiJBclROZjdKdDxmNn08dWFkPSYrLHxoalImJHRSaV9jPzN4WjBYZHBveU82ZTtaUzZoW3JWMn5zQCZDPTdEallGYGhVJGJ9fnZLaTdiTEc2WSVAOzNgOXJBXyhXe31JcSFC''@;'; put 'put ''OnxQdCZqXjw8UWxmT0hOZmFfWUcxWEo+LDhCRjYqQCNiUWNzd3woYjN+dGFaMnVmMjBwIUkmdXtAQmolYTZZI0N4NF09KXpUMlp8Wkp2LCg2VVVxNThwNithPmFwTFNSXiFpLFkzc1d1LnR+RXlWOU44aSlYSEp1YjhZZ3pLRms8aWBEd2VlVk0yLEgyY0JCfltaPGx4Ni9VKll1VlI8ezMuPzlk''@;'; put 'put ''XSM9LlR+I2Z5VyV8bHJoIy8+Pyo9ZiNmUy9AJUlrfmFPZC9IJEpiS2x7WThmamVHbTVQKjhNeDtnWk0+WXgkSTU8cWBAbShEJmpZX0FmR2lCdGcvQWBTXzVrbzxraGV7OThJT0YmK1N3UE92TlFlNVUhTj0pWSZZOzhfLjFWQyl8KHkvVkokbnAlfjI6PE0sPClXQ0xleU9YXkQlXWl3Tig8JjxX''@;'; put 'put ''UywuQ2s7NmhUMHgoZiMvTzRsV1Z3ZHd0KWdJYEQyKWFpK3tbdzdWSzp5cEQhS3l1UiRuQFVYZj1URl5XVXp2KkMhIVU5O29CRm0/OiVPQT81STE1NSkmTTpOUWBFUkw4OUtYKiZ+a215LHVnXjApTV95WE9YUXtYcG1uI0ImOF41dCp6UGFBRW1dQCMvOTFiJHBKQUpiQCk4b3BIKno5MSsmMXJZ''@;'; put 'put ''MjAiMVBQMWosaVNAaygzZHZ7PUJ7dFlNKmpVY0I0MiVPPl01QzY0TVQrSGdYKUwlXV8rSmpxaUc7YEI8IXlsUyhfKio3ak9eWkk6alBtUXIpdEs5SUg4WUtHTHV4ImApK1lQOGo1eFEhX09dZ203WHZ4Olk5NF9IdGddQGVNRyZEdDRnOGNdLEYkPD1nWmB3OSZlbCpAa3pfRF1EaTB4bE12MSlu''@;'; put 'put ''ZmEwK11YZTV1cHBfVjFgUEd3KU1xQEFbQD9wOCIjYkpCNVkoT0hlNXVbW3lCeT8vWW87azxsNVdGR11qbCg7KzhmNUVlKF8/Oz9Ecm1TK2VIfTE+JVF0aDVkOix4djt0ckB3dkZ5XTNscUZTbz4oWU1hKTdRZ0BrdXdpMXVRJVhoUSZkUEQ+IV49e259e1dXMCssdG9dI3pEb29AazsrVlZKSDpt''@;'; put 'put ''VUAiaitBRStPMkhMLEJGYFdROHt5UlBKRkRxWmE+W0NjKn4wQVI1YXFoPmpke0FHbUNwYk4+PCU9b1t4SXd6LzdmKTR4dTNbKkpgRTF0NTU+P005YzBSTVRhJE04NGR6NzRuVX0iISZ2SW9VVEkjZk05K1M+LDs/a2ApcXN4OyEselRuJXtkPipZfVlkOkxsPiEjTCVnIlZSXnRtbm5QI2hMSnN+''@;'; put 'put ''YnNvPUs6S1pofFBWXTkjbTxeKC9FLmFyKz1AV0hDTCovYmhmRDY3LE95P0Y0JFFhOEBDPlUuSSJkQE8jR1pEZmM6PlchXnolLzk8VDNTYXRtUD9rKEQhXlYkelt1KzRMc0k2KCZmMy8iZS9SazVHN0ZhKHNLSDtkJDhrcE9FcVYwMjwwV3dja01gcGU+YClze1k4aiJ+Rk04WkxBcyFDPlo6UmJY''@;'; put 'put ''S29dQV9NLkhuSGZZOiZFV2JiO0t6RH1KO0tLYUZTRDl9ZCxdeWN5TixdcUhBOiVkajFKUjsucSkrYWAsU1d8UWkpRlJtQl16JVJlQ0wyRG18K25nO0hmS1dYcUhrQiEsKSl8VC96b05ZMDIiP0dkbngxSjJ2NTRiTnMhT345MUtaZngwRHB9TyN0cXBOUEhdYWVebER3WndsPTVULGFFY0BlKmEk''@;'; put 'put ''e3Nhe0BSO019c2ZQd2NuSXNfWWF4a04+cVcqXmh6WG94OjBrXj8xWEJzfkRyVVVtd35nQX59P1VpNSwiazFmTWJIOCoxWmU4SFFPLyRMdHEjaEQ6fTM6M2UycT0vOzpHUE0ma0pmZV1APWo+WiticFFJXz9vIlAxOVImUFFxI0FPcmlWSUJSOklAWUd8SzI0WG54U0MoLyQ3cUZ6TmwzTl5rZStG''@;'; put 'put ''X3twN1pWKz4oIW5MUGVCLFM6dyYqcUYpTjFyUDsoc3BqKyo2Om0qMlpNNFk0LDVCLkIqZGZrVEAwVS82Rks4MUVlRVdAPCsxVmM/STcldnB2SCRDcTsuZGRobHh3XW5FQiMuaUJDX04rLDNBdHh4Z2hGQyw4bihVc1tCQHk8blBTPDosQXxpeUB1UnpOU3ZiZ11yX3VUYDUkRyo1Q0poSEIjZktq''@;'; put 'put ''NldXRFpvUU00ZEx4TC48Wi9YfGN9UE4uRn58fUQpNENuKyVbQk9bcjR6QkduVWM8QnopOjZacjlWPyZxKnBZc2F7aVJxQHh+RTUsSFErVTxicG9RUmY7VU5hT2JeV0NxWTJhMjExPmV3cWBeKmkpMyN2SHFeazpbIWtacnVrfVBDa1JkL2N3JXVXOzJodm50b3dgIkBfTyQwVnNnM3EoW1dLczA6''@;'; put 'put ''RVJSRiFVYXVCYixhbig+V28yI018JXpPais9fEM4b0x2ezxYWFJGRC5TSFsyTWlYVTBMQjZbU2YwYGcuejZOeCh+bnJ+Yyw+bTclKnhWcTRgIT9JMC5YZF9ofVM+a10xfndtNz9yImBmQ3tIX2hFbXN1a3tvI3tZS3k8ckUuWGdDMncrWWksW0ghUGtrWDJCUnRGPUpOLkwsI2NHW1tvdVtOfCJr''@;'; put 'put ''OnJ5SkJrWTQhaFg2I012PHIhJSNdPVtQeT0qajModS5qc1ZvTXdnO0tAd1ZeKjBPU2tTYjdmQCslP2Iwc0VEJDBFbFJ8I0MxdEZ+fXVPSURxazRBV0Z8aUJrVSJqZC9rRi5QRVhQeVNaXWtjN04zKnd5OFo1WmlSJFIxZDFfR2M6JVojdy55VSs1dDt6eWNoRTt9c150UlpqPE1YSH0vOTJqY1cl''@;'; put 'put ''RGVORUQpWTwzezBEREAwQjlYJTJVRXVJO145Y1guZi9AR09JNVlyRUE6bjAvLnkxI0UoZzBXWFdEKXkmUU95aUkvPWE2bHlDMmhnKnh3eW5xWkE7SlB5Yzp+ezQoeyNValpHT04oWmFwMFRmbSVwb1N8XjxGJGN7MGRUdChkIzwoazZbLyx9SGojYFI4SlN0RXUydSx0VmpFOkNGIiJUbnlXJTks''@;'; put 'put ''Pj5GbVpkWzpXP0JkTTQ4QCt0dS9GUnZMU04oJEcoezAmYnNNX2UsaFovTG1ofDpJKjZGU09gQUUpZUUxMF9pfUVqNy53ZTw/WGF7aG1GSk9Zb0xXa0hEdT9oX3k3IVlwRXlOIkMxKStoWkVJOzNJb2JLazRFOjR5SUdfZ1I8MyZII2cjWXF8TUEjX11XMnVUakRlOE1FLD1BPVRVOTIyJFR3RVU1''@;'; put 'put ''bmFwXltnYyNdeTsiSTB3TF1Ic19YTTtBaUxZJS9YV01tMkxMU1MpW0VHRiwyRjopKThOSHZ5JiI/YisiJiUwR09jXSJ0ajVnek1uO0NFdnBeQDNxXTg5L2pTaDkldVpvMUddPGBvb1F8TkxKbkgvMWoxQWtnPCF+LER8dm92TyUsWH1+KnBfdnVJUk0/WHxuN2VRNm9gUSVkUEQ+cGBATTtmTl50''@;'; put 'put ''PH1QI1l4bVVIIzBRJUBtciZtfCxPNFpIOHVDdDV1L29vZHQ5Syl2T3UldyhXOFJnOTsofFhrPUlYLFh4L0Z3eCpZV0IqJik2dXQhSUd+P2ddZFh2REFxK2FwX2k8eVg5TUMoQWEvb2hVVklpNFBfNHJpXWxxV0d1bGApZiQ0Wlt5KHdNa3NCTV1GPFtkfDwhRmYxSzwhZGpDNS86M1IxW2JDNUZl''@;'; put 'put ''NyhlQ0FtLER8LDZbT0FDKFYzeyJdUmZvfnllcmhrUWV6d0IwXXZ0SyJsfGk4d0xHJUJDYmsrUX4he1dRKTlkQjh5QWdDK0JZR1JGOUQwcWRFWEZ0QVtBYHhzIUd4NEFBVFgqRXtDQiVtXVEkeEglNVp4P2hvYU1RbDRvT2ZhPGxKIjhYY218eVNgcyU+TElga2JLZXFSd3UmVCF1bV1dYWg4aHRT''@;'; put 'put ''KH03Y2F4TT42fDtXSiZXRFJSTnpEflF5e0NNKEJfP3JuOXliNzlScFlren1yR0gmOlFbWk91UzB1PzRgdW1PJlNLOjA6MmU/RGAoYmVmendAdlRYWTdTS1YxSnApeUx+fEhKQHVkL1BZK096ejsqblh9WHBqVERjQ0B2KV9NVm8lcUY9YzZZYFFdRGd3KmhHbXVsbiM6YFpjPGN0SzhdclBeLC9C''@;'; put 'put ''UFhAW0laKkp5WU9AYjlmP2Bobj0iJiJ3KiVkUGZvLzFiS1llZkVXRU5sKXl+YjlZJnBtUWZORSFjUTw9NyN9fEApaSksUCExPDFnYkp2fWpBUy54N3FuTiI+dHAiSyQ3bm9EeixeTUJYdW1+VWE4ZFdDVzVCenFsUWpLM3A4X0xDcmJzUktKbFJHQls7T3c1U0VRaiwsTnY8Q2lfWityOSliQlRF''@;'; put 'put ''QkY4Yj9HUCM1NlFAITlqTGkuNHozKHVOKT1MenVvZzc8JGFqTlNea3AqNT5MMml6ODJqbE9qWWRmUy9ySHA9bzNXZzdza2h+byErYSlraClDQTprNWgzUWokY1NUWFN2LnFuST5oQi9gVjpmay5JPmRfLmNPWjRiN2J5RHw4MlBBKjV+SiJKP0tEYHR3dUY2dyJnQHdBcTFFKVM7eSljP3JFWDtb''@;'; put 'put ''RklqWks4NVtqbT5QOFpRWD9rVFtyNDE7aGU1PWNCJUo3PlYyY1NVU2xpNF16NjF4Pn0hNXZmNnN5Q2V9LnYoPn5xcGlNdnQ0dnVla3JIWms9OUlhaEB6UmM1KHRDYTx6RE1EWi4seT5xWi40b0VmNT1PPnY1em53NGJCTX40OGVOcDBocXs5L0E9b29maGhaJFV5WGYzMFt1MWk3KFJKUl44LCUk''@;'; put 'put ''WVk1RDppKikvZzVmRzw5PUN9UXF8IVFjfD1bO09pQmVpdnRFOFJrTzdtQlJ7RFshKy85eSV+cUp6S3xNXkh8NlM7Y05SV15UNEw2XUdUSX0sMHIqTjh4ZT1WKTp7JE1HUSwsYnUlN3ZMRTE0aVJ9UXg2WSUwLGV1SWhzbSl8dHtTLiw2S0VAYi8ibXxjWkg5OmV0Wz4hKGVnMkEzYjI6PH45TWVj''@;'; put 'put ''MFpkWGk+Yl9RWyZUc3V5WSFNd3M9Xy5weXtDfVFYb3JnK0YpeFp+TnpLOHkhWztDIURlInJQXWFzZjx0Zkx3OzlCZ3t5SltXLEVbVyNVOSE8UElnP1NuemUiclQ7aDF1XklhckRtOHclMD1MPkNBejFCOVdgUlFEbVo6YSl0NnVxdW1hWHwjPzl5OWtBPEAvSXp5V2UrZk5SVlQ5dFojTDVGKHRr''@;'; put 'put ''IjhuKXl9fkFnK2hxPkYsN3EjNTMhNVo/Sy9dNSF9XV1JSTZ8a3NTKyZXT0pTNEQkVFpTNW1sMFAxbWhNX31QSm8+emZTY1EvZn1dJlFpJlQxQGNfUDAyP31kQWR1P2VTLDBmViVNWDArZ2FiUWVRU2ljVyhBOyV5ZjJPaW9aVUl4PyxrIV5ZeEsiRDg6JCI2KVYxSUxkQ15nUXlNWkhacSZXREVm''@;'; put 'put ''eTI4cE9dPUBHLlEjZFV4dj13Mi8wOzRkPXRNKl9ZSHd+OSNNTl9ROilDOV9gVHcoXX4sZlomdTh0eW5DIWlWWXsmelc7Wm1IO1NobX48PHAuOTchdVghekdrJmxIY1FeQ3BRXj9GNSVHOiVPTzkqQTk8ZG59NHdDMm06eE1lOU1vej99Y0NTWmouKHEkLC5jbChMOUxVbUFYKFV+QyQqX2RXMT51''@;'; put 'put ''VyFjczwsJmpNU2k8dyl8KFJoQmxDTlNYVWRzeTtiMylEe1B2QVh8aTVIO1VSSnNPUyl3dk49KjsvXnkpZ3BVeDgoWjwqSlZMbmopZmlQWnZTPTk4KixiN0gsdWxzZS9PSTpHUXpXJVB5Vmx+UkB3VV5dQDN4cnhYPC4sInAkeiJ8TmclL0BOaj1yPzs5fWlNUl1gN3xUMHRhQ3MoOG9AR1RhSVd6''@;'; put 'put ''L0lXVUNATjxANH5hWEM4L0pYaS9hekU/cSVuUyQ9KmVKUHpyP2FTaihyTCYudU18WnZwUSMpakBALyJZTjBFNU5PdlRuOSZvVXFedz4qaGh+I1M6PXw9TVhebGxeLk5wMzk6c3NKRHk+VVpXTzxsJU9ZRzFMdDdgIy8jZ2ZxOFFkYEAmOGFBSGZeMl5nV290LmNbQDdjajZAKylyPjF8QFYlb0h2''@;'; put 'put ''PVVnKWNwQGZsamM5QHwlQVUmMG1dfWhoPSlBMGFbRXxKaDhoVlRwblRnOnopX2k9N3g7UEdLYC5Aen5zQFprTDFCK3JvLHNdImJLMF1wMGBjbFI4VHs0Sktha0wxRVs1Nyw3YFFZZChNKHdRcGRSMHpzbnhSTEUoR0IldW5TYWpmamN8YXZUckQ9R0xJW3lPfSxPTXgkO0NSez1lK31dVm5aZylz''@;'; put 'put ''QX1kW3tWQHJTV1dzcDM0VTV6cDN5e1hqMXU8VG03JiVbQD9rPD46VHshN3hrWFZvRTdibCk6ZVdIWTBVQWQkNjUqPkVsL1trYE8xZzI0akRleSJkWDojTk05WnA9XmU5Sl4/WylESDN6cDlkclJPaDUqZDMxTVJbKmU4eSEsWD5+MVZVP2g2KUBqInkwaCw4N3s4IXBPPkVHWFUpcVA2Unx3bFM3''@;'; put 'put ''c2U9d3cyRGFrOzFncCw9MzZ4cGk7QXIpQXc8PCgvez4iWXlAZmdYTFtfLngxZWZFfHl9X2FTT2YrdG9+TUpUOWR3bHFvcShINEtmeHF1Tlg7Tj5AeXNTO15fNk4/ZDslVTBZJXE/K1FqNTg6TVhVPStvb3V5V0NxdHZsJFtMNixAMiEqYnk5KTN2JXFrXUZeM082MFtZZiQvSzx5OTpybV1VMW1R''@;'; put 'put ''bU1TfTlQQSgxcjNzWXk1OkwsZTVBfVIxUT1dSChbYkgqQ0V7JjEmMTt9YiYrQX4yZjd8IjV4cXtIcXlQZSFKdGQ1LE5HZiZ3eiFESmp5UG0pZ3EhRzUpcDU9aXlkMS5HdChre308S3NmT3V4SnhHd1QvIixtTyJaRSolNTZ8KyYjcT09S1pDQ3B7NEptXzVKXjlYelgkeitFKDE3OVkzXmIxfWFT''@;'; put 'put ''ajZGRlI4XT9gSj1dSHtgI2B9S3Uvfm0sXU9bP2BWendMdiZMd1JGNl5rLFFHRnt8NiVOOHdLPyRbMFdTI0hgOmMxRE0sbyRhI3E1PXtKPFgjN1glPkNNdEpnfWgjam0mal9edGFnT0s2Ulo5VihjTlhXbjBRY31tIX5Kbk9tM2tSaUJgaDgyXkBmMUJSOyliVDosX3Z9PEdPTWJTfmZIUlRELj5V''@;'; put 'put ''WnA0KDdnP2c9SGV6IytJfGN6JXdwaXtJI3BTbCQrZGtBLG1kNlZxMnh3Z09aKnR2eHFPbTRWWUNLWGd+bD9LZ2Y/LykuWUg8ZDV+eVQ4UTBxRSNLbWVQN0R9ZzcoO2UkP2IjfEEmTGsualV3emkzMXRtJEdOQygoU2FlIWJaRWA6OiwxYWViTklYJltiVytlUTY1XXN7Z1FOJjVZZ1FCMHd6Kns2''@;'; put 'put ''Lz9bPjhjdlhuRzVUTSplemojSW1ndVFGLF9odFYkcTpmdVFAQ3pEOi5VSVFgWlhEfk50elNPNl58Uj1+M255M3MoJT1aZDFzcHBvOEcpbSZ8fTVTMmBPQ3dCLiJnSnApP3xOTFNvZl9CbSR6dSZOSk1kMDApQi5wNUV2XUBiP3pdXy93QXJCMC5PVDhaIiJ2UEd5W2JGZW1IMixAa1s7MjVNPHRW''@;'; put 'put ''bSRIbn5vJF9oJD4kdFYrKkhrb35BS3s2eTFIVjBQdHQjPiE8KkBVNms1bzJvVWheP2Q6L3dYYClgZ05sQmB0b2BZWUZse2w7IWN9PHxaQ0xhb3txdnhATktaR3ZmTmhlSFk7QCp5QyZ7dzk7WEZZOVY4QExVL2BCWFE8YlN9elBdUmhHXyoxVTRbYEgmSVZhJldGMil8IzBmVlVaPWduMGliNFtq''@;'; put 'put ''KmQ9N2piY0tHJWJDNW9rbTtiMXEkdDZYNkZqSzlrZVdGKnFXY31aemwpayIjQnV8KHNZQ2dZRi8oJGghMVhVTVtzZ2JzcW46WkJAUF1mYmI9NlhKU1VkUjYiUiJSSDZjOTxqPzNQdnwxeE8/RWdWUjxBSkZsTSRzUSFxaEk5dkYma3R9TXk9QzJ6MURAelhTbGZ3bzpfaXMyI1BpWnJWfjtbWUVR''@;'; put 'put ''TlNAJVM+ZlNmRnpQW2FpW0wxfnVoREMzVHdqJHNWfm9iNltNeyZbUkRRJGJ2aTJRIzZGezs6dG8rfF1PW284Ti9qOzVSQ2dTbVBKWWBPZkM3YXYmLlpsYVljS11QWjs6ciVVR2ZDdjkvQD9bdUhGOndHfjMyNlpzPWxVZlticlEodzN+UTIzU2tmQlIyXkJHSEdlaHRHaUEyPDNRYiNkKlUsPGki''@;'; put 'put ''OCJUQmtKTT9zX3g9eVFBd1cjd09DRURNZ1okNDhGPTRYMlZAcmcqMnVMcWomIWpmUlBpYXNdOzZUNmtDRHl5RTVEeUR8JDIhMWtbQEtmM3FKeDk7QGRkT3M9TCJyST5+eHEkK3tJSVM/IWRyOSNpWSlsYD5sfjp6OCg1TV15UndncWoiSShHM192MX02L2I4TmRGbF10fUJ4ezp3fEBAOVp9N2kx''@;'; put 'put ''enhYKjl7SiFUOGQhTThaVippdmxHVCwsMHFwODQrTnJrYVRXLFZ2ZkBrYnNyM15gbzdCanhuPEx8YXZUX0o/aUlRQDhIaTVmUCkwfUMhTWldVUVXVyUxNlJ9WFRweHF5X0BLfCtJfSJscG8oQHJ3fFRfNyVnbm0kaCgpbzR9L3RLaVFDcG8wanJoYUV4MWBVLF48PyU8dntoc2o2SHF2bVVYTWl1''@;'; put 'put ''Ll9fRXVUeUNzUDI6aVIoSkNJUmo+WiFAMTliOVNzbzc1UlZPVEN1amh2KyVqKHBEMUZSVDh5UFssL3dSKVZVR2Zoa19pbkBpUkUjbU5YMlhXQjohJkozMjFgU3VyW0UvQCVxN0RRWmZwKyxOVGVLL2xxVGI2ODtTfVM3I2tBRSpnKkp+eXZobHd0bUxKXztONGJXXyVGR2Rtcjh9NXojdWgkTmBA''@;'; put 'put ''dT5VTDJGJC97bVBLI2FeKSQlcFg8SXxXTDMoK11pV2dFbE9udkpXL3hwNipialdJZGNwJjBSTldWKS44UFEkUDVZfjwuXWVpcFIzPDB3PmxbK3lpaGU/KFtAXUNbQzlTKVNlOFt2USNXOTR4SGwzWn1rTDxdRmQ2OmxyTj4xYjF1T21PQG1HVlcpU2kmVz1OflFUOF5qdW9XcDosfCIvRmFrIlo4''@;'; put 'put ''Y3s6YSE4ekNIJChifnpvUEMuPEJscXp9cEwzY0xVLmEoSGx4bD0sUn19ImA1Kjp8USs8aTMkcHIyS3YmJVlpflMiM2s7bmFiRztnKGNDNkNJST1Kd35dd3t8MXBrdmt0TWo7VV5fK1ZkRF5CMXkke2h5JGA1b15Cbjw2XXd3QCQkWSomT0kkdlFeaVhhcVQ1PVUoS3xtTSVSMUQhd1s0QVdIX2BI''@;'; put 'put ''LkcodWArYD86dXBvRyg2Zm1HNXBhemFpO3JVNj1wPGt7JlRGdyZOeSUlMTQiSy4jLnQhX1lLc19MNV1KIzNdKWtVLztYQV5RQXZJZy9rUj1SU0hOfD5zOFQvKyNmQiNQWDA7S3F7Rio/OSxOTiZwJCwrQGt0RjVZYld0MT4sSkBKUW55UDAiciNXJSNHfmhyOkNPSWNkQlFfTTY1dWprXytPUUUm''@;'; put 'put ''NDdzQUdHKH5dPU9RRVY/Xm9wSy5oP3VDWG09cSZWX05zc1lWOU4zPEt5L3VWdEZjJFg9SmdUe0lnJGRteGt7Un1fQFo3MzA/JWJ7MDgpezhocUdXMXhtPGFsTDN0MmdnbHF6UVJaaX5pKlJSRzk4OCEmPE4kYktAJS9hXzY3UDdhLDFzeXR0W2hyRiE6Mm9ndUlyS2Z9aEZJTG17ITs4dzw1SGc8''@;'; put 'put ''alJxNXJTL1QrYXswN1IoY3FrS1I7XjZLXTx3L1V7YnwrRW1IInR9Xk5obXYwZnohQnUoPzIrM254MXU5MGhlciV4LyJQd1svTEh9QyhROFozMEc9JE05Uj0sdzE8I29wfWpVNlhFTyNvT0NbWVM4IWBSbUljVDFJUjxMPkt3Xi9MWilVM01dOFhgIXUiKGZjT3hxT3s1anJFN0RqfC5QQzZZOGF0''@;'; put 'put ''ZVVqN2NOPW1gIlZ0PjdgU01UKXFzRVtUWmZsQEJfS3BtI3tKWlU8c3h2cCpIJmp1U0FKNzpTMkQ6T1MqQC4vKUA8eGt2cG54MUU/byNyKT4ifkBdZzBWJG1uZm4jWWppTighfl5tNTJ4RyEhS1tuQmsieFEkSDFlRHp3KENoV3ZCdjhHayxCd01HYE5YWD8+fTxjWTpAYG9vS11aems+aWI7Xjxp''@;'; put 'put ''ND49Jj8kbHYoJlFILCt+YUVBYDF9VCRNOWs6OkcuVUNYPEBRWWpINiJ8ViRjR3xDRzZOXyNDRHk9PEFLISolQ0VuPGckOTdadV9AakxLVkc/eTByOEklMSYxLEU0anldaSM6ZmJjPlMzcE9IVlNtTXp4NitseUBLYyEmYlcjdkh8JWFpPyFOaDxOenEsXXddKFtyJGU1SHQxTS9LISw6eyRHajl1''@;'; put 'put ''KSw4b0txXkllX2I4ZkBbT2ZYd0FhPjshLlExTUxWdzExTTw/XUZ2T0ZvbzQqVHZXbDQ9X24wYW9yNWg4W0tKYGteLkoySFtBaitZZkJdM1YyRWZIMkZCeXwxfCx7eXJibiZ5YTFBMipnJF12YGhRXmsxRCVnV0klX2ZrWGBdN3A4JFJ+NGRdWCVIP3JsIlpGcHpaPGs9JT9tPmRqLitLO2lWZ2F4''@;'; put 'put ''ayNKME9JTi5eSTo7OV5vUWphd05vNT8sI0dCQDUiR0QlN3ZMTjxob3YwRz1DWyMwZXdBU1sjPUh8SjI2a2NsL2pjLlt3TldwOy9CaDNYcU12Tz9ydnQ7WzYseEksa0wlXXYxR2x4YEQqUUg2QlpTd0BjTm1hVFptZDEmMSguREx9MCF8b1lgbDtLKzw2V2JZIi9DMStBMURBPHpHUEhUTFFCPDRZ''@;'; put 'put ''cjpOWUUvQj9rPzBXTiMpPkU/aXN0WlBUNWVTc0g5NGxTZGFFaT5uQyRdUSxmUTJQNjQoQk5OJHlRVnZqMl51QiEkUHxPblpuUiRFdGN1Skp1TllTZFp2Z1IuaEFJUDVJMFhPYWF7YV9IWW1Vai5jZkd3PGB2NDpYUH50PWJEIzd1QiRETlhQe3RPTkY8czZBZzpGakVPdVN2N3FRMlJDdk9lZnhM''@;'; put 'put ''bUhqTE1dK0YkWi9GVF5zRU1DVmNSdmYhYTskSVVZN1c4KkBRZ3U0cUAybFJNRXEibW5aSW83dXV6Ijw3S1JNT0lqbGErYzksOXhdZCxEaUdTLk1AcGImd3ohJiRQVCwqLldsNkdHbC94ODBFdCldeWRsMHdWN1FqL1tfYFpXSFhxK3h4a3VvT2RYMVo6N2BaJkQjX0VhREg9QlFSRiQ7SC9CWUFn''@;'; put 'put ''TUopJjx4elgrIihTRz5rVER8U3psYjdbXXlqRUUxanI2UlBiN3dmeWQ3QiQvOENRfXx6fSF2YigqW25XdUQvPURET0owc1BYKDhbQWRtXTU9M082PjZYPUh9JVBWfn0iTUVXJXZaMCNQbnRybGI/OVs1YUd0OD9XdElONmtHdCwheX11SXdEZDUpVV8qPF43UC9EZDVacmlUNWExSnd8QHtbRF8w''@;'; put 'put ''I2szVHtSV1dnXTV6b15XY3A7XkI3U3FKN21naTVNPCxmOj5Xbno4QjIxcU93an1lLkM6W1paTHlvQGg6TEhVPXQpNEo+PyRGWz1+QFE4W1FrQm9adkdtVzZZM1Nxd3hsfEc6fEhCImgjWUdMTnQ/YHddNT04UDpRcm9JImR8X3FIY29aX3w1TXIhdDghKEFkT0owJCIzRzNZfS9CWj9ORX4idmtF''@;'; put 'put ''RT00fVhga3hGWCorVEBKXjJYPlpEYFZHR28ldW9AUnIpQmRZOjtGW1B+e3lkSFNaej08eTB2PCNHJT5HOUkye15LN0g7TmklTCxmbmdiKHg5YzZKMlNSKiZ8bEhmaGslXylSc0VoN1R5dEtTaGVMRGk2a2xKc3Z3TEdjdjFsVS8wYyM6NlpyfkIyLztNZVIhfk9zY3ZScXt2XnEiQj80NSRlNVpu''@;'; put 'put ''eTE2dlpCWF5AU0RbKjdPT313MXImPDFhKmcwUU8iMzdFKG88ckljWGJzd2Boa2Fzd2A1PGJPQX4uMih6QWRARj1NTU9WOi5MW3kuOmRzTVB3NitbKCVyTlA0dEw3fTtHZnZGXkBPPyZIPzBQTW09WHNtaDVSZnhxOD8lRyM9dihiejFxKEVKVn4oRml6RzVCMjgzSU94dWlSNTYrZGNPWmQ0UX1I''@;'; put 'put ''entUPDQoP3lLNDZYejssej5PfjB6SHZYbTBTZl9nRWIkVG4rc3h6WkowXU83cH40WFo/TG96bjh0aT9aNmlVdlQkVWZRO1V7LFs8MClEJSVVbm9RJnJ7SnNPUVlGWDZsO2NeNFBgSVNucGpASitkW0l6YkFKWGRlWCI5XU5OcD9aTUhrSTtPYUswRzZLUmhdJERPXlAkQkgqPFFBYFEqKlY3UltL''@;'; put 'put ''Uz8iLnRIeCs/WHR5WmdbM0VHNT54VntgdXxFb2d3QSVnKGxZI0JBS3RiR3toJnViX0B8ZHxhaGFLXz9HWFVwfjVIP0dEfiQjI1kvNU9ifiptYENVIjFzOilzQGJJUkI4VihfYSl6OCM8UXMvZm4/WFMlOUtMfWlAJGMoRyVxQ3JWKlFbRjoocywwa3xuRDQ9LyREKH5bPltpKkA+SW57NWJjKTJQ''@;'; put 'put ''bWx7Xj4wVHZePyJoaUB9Sl93N3BEP31Uez5Cck1VKjVHO19pQHdEamJVdFpnPTdpKVR7XkNwdkkxdltXS1B2fXI8Imk/U3JzaXQ0SmZuOk0zdlBEVHlxViV3YklFPSlLJGRObUApUGllfi5XYEFZS1FLKXQ/PTFDc0k+W1JRbnBSM1d8V1hPVFIjWGV3OHk9T01SRVA6XztBUVouZD8xLCE4ZFk+''@;'; put 'put ''N0xLeHsvNyQ+bUsxT3Z9Qyx4UzVjJiVzaClGMTFESD5NZ0NTcEgrMiFMKVcoOCRzJCZ3Rk5YdyNXOjJjcGt4SmBPUHRseWUiPnVqa0pONlUhJW08InxpYz4lXzQ7TlUxeDxmZTdlTUhZZTpkRG5yUj8+amUxMllEeWcmdF47alojWEVYImpacnZIQVg5Mj0sI25ZPitoKTJBM0xxciRlNTQ0a0Vm''@;'; put 'put ''W1k5REQ7JSFAdUN3Qz9SOlkwI0VNYUdxIXNiPyxgVE48KE5LZ1VZbzVzYlUkb3dCSTAvJS8kMF9mVip4KlNWeThtVVhtLno6UW1YJUdwdTJNRFgqZk1hZyo6a0l9V3BiPXxSMTdHUTVwaT5IUVFpNjMuKj1bdEkuWWcqMEhYXjpWIXRGTm9FXVcrO112ViV2eSouSVRgTmV5V0NRTnVFcVhjOzxG''@;'; put 'put ''ay4mRCNONSg3Z2EhcGg6WVRxV3wjNFZ9eV0+QlVCTTFkWmM2VXdJPUYhYGtvLDpJT1E6MDhRZ0xQJDdMWURARV80W0IiSXRgM3dsaiRrUW4lWTZ8UloxKyMwXSNSTDM5MEJ2MVdoSShjR05Sam1xVXlabTYqOXxKJDR2RjdONksqMyRZWlJWcUo6KyJmb0JzQGNsclg/dUY/KHVGTnBeLC8xdHRE''@;'; put 'put ''PWxFYVpHUmBIOXYpZiRxfGR8OjtDeDBnRyM8RWV5bzslfkEqZ0kmTTksaC9AIlhRZW9eNSxEa05lQj1UV2Qxck5fTjpSW31TYWdWMW4oR0cvXTQvMTJSdlVgJmxvOU9LRUFIMVJRak9ZdlA3P3lpcUVIYHUqM3pgWXpCOTgqQ3tlI25Qd3B3P2BBYSRFR3RyXXVZKllidUdQZ3xqVjVZX15fdCxZ''@;'; put 'put ''PnQoUnlsRysuYVYyRlQ5KUJsX2lHb0w0bGs3QmJLd0wieTY9IURkdEVmJiY8UVZONXRxQ3xhSmQ7PHZAZ3NhT0dORU9wMiJMaE8/SzptOCFbY21jQTZOP0g0dX47aUdVUndiWnA0Rz56M3xNQTNxJklNSkhfRz16UFZtJjJFUWw/ITxaXT1CT2BAQytsK3h4Sm46LyYpOFtjR2cvcmx2NTFObFNg''@;'; put 'put ''OnU1ZWk7MFRxNUdwZUsjYVMxdGF7fTZVPFs8W3dSOi48XT0mIyl4PlU6S1VUXW4/eGBYOW11RDU7KHBIJGVgO3lGX00qc0MpZVhKVTYwJD5JeVZhK01sNk1IJHomRWQhTU12VHVCSXR4WCZgLzg2PGR8dUVUcDBnLjlVLjApX3UsY3dBUmtwfSFyQCg9bU4pcGQwSHxXKTlmV0lgMmtnYWJbQF1T''@;'; put 'put ''ZmNWbSJRZFg5ZF1QeElmU3pidzRAMUhyOzZdLzg2dDZqRjFEPF9JUkk7T1NxZ3hvX0A/OTVbT0oyMVdiaXVCfGZYQl9EPkNdZiZZa3wqQS5pQ3BnRVJKenkqMlZgXyt4VjxXJHNScmhDVF0+amc7SHBWQFdmaUpUSElmY1g+L00iX29ZSFV1PExTcTd2SVNaLixRcnp6LF1JanJve0ViRyMhK1Q8''@;'; put 'put ''Tz5IbEt6JmB7Uz4lMUsoUFIjSjFadCZPOTRdfFI6YlpJaW8wTjFtaW0+IUt6MyY0UGttTzV9fE40XlROY3tPNWhaMEY1ZTVXZ2RKOzkqdUxQVUVmNUAxKEAuLGRPQW5lKStqWSJjezRTSTp8ZmZ5eDFtNVJXOk9ZZjtNJncsWVl2VUZQemhMMXdgUm5CS2kvTjZ5PU8zc1M6WmI1PWw2KSU0NVMk''@;'; put 'put ''eyEkdmZQeyZePDFhSls3VXVWZEheNVNwUFQpQVRfLk9idSgvekFQYTE0byNgYVg+e1ZRNUBwQFJXemJ0NWJlcGQjfHVQP1toLkk1JiMuT3khMjZQY1I6aixdQ3JfZiZdNjxIOFpSUVIhaC59QyFpUlF+MFV1Zno8cmZAJl56VXdIXW1hVVMuN0kyPE5TNSh3KSJlTjBMb2EpWiozWlZuOVIyX3tk''@;'; put 'put ''O2dUWDU9dGdEXTx7OXRtL0xRaj5Jc29OW01YTHV5b195LjEsJTxNXmhoU0dRa21CbjBtbTRBVWBsUnxkLjJgLEdERXdtTWc1cFE9Qmg6PDk7bVthXVJbYVUxMlFbPzRwK0NUcyFhTkosZzxPfm97KmQyc0tOdSVtTiRiX1NyTnlsMSt+UFQkfFt7OndqQ289YWV5bEkoR2A8VkBoSzA/dStZbXM1''@;'; put 'put ''NjsxVCtjYlNgU2xldXJnSkFLM3lZJj4uXnFAe3VxMGJyVmQ4V1h3IUFwRDtyMTYsYSwzMUZlYWcmMHhbeV49JHNacDBWUEk8KzxUOjMlL0R4e1lwRTw8Z151WjxJO1AmVHlDfG1nbWwjKihbKkJeZDJKJVRXSUFlOD5WWlZVUWhVSzBdTzdgQntDNGdoP1p1Tjd6bzpOey97X2x9Z1QmKCsuPTxx''@;'; put 'put ''cD9nZnNdO0dQX1NbNVRpTHh+TTFsPjtzUSwpeDtAfkBlInI0VUgsZ3MoIzksUWRYQDNoQl02akgubDIiLDJ6JixRJHxvfWZofW1dVzgiVlhaTDhPMS9nYXA2NS86bTlVUlU5X0VHQitkMlhUclZve1N1d1BLSks/K19Wel5EbGhhbksmMGtTS1BRVlkqUXlbTD1ZSC5pSjp3VSh5MEVTaDg+fXZb''@;'; put 'put ''WmFGZ3YrJS9XZGkjRV0hYjRtPTchZjJKMSxePHE4QCtfVjRtJXxEamx7bkQ+SUBYVCVtPElkMHZSNk1dZTN9XUVwISEsRmJdS3lRWkF8alZIbGhnZ0ZRW0YwWyY6YltAJT1mRjRtXVtDJSRNNHZGRn5eOW92dmIyeXlRe293VzwmT3FLSUY1XnR8eXsoW0txNEBta2w/KHphY3VhOyVFNWUuKVZE''@;'; put 'put ''bHZFa3J8IjQ8aCRDRmYuP3d5cXdva1ZRZno6Zm13I2kpPTo/WDE3RT9tbF9lfj5tbEFvVj1PWDlhUUZnODohPU5oVUpGTDZ8dXJocDBsWVc6TTU/Y2xzK2QpR1hhaDh5MDR7RncyaS83LkwsYVRpRlRCZDcycUhzZDE5OnpiTFJhQW9XVn1tZVBmKz9jdl01M2NUL3xUdFZsPCxob05LNFdVIWJU''@;'; put 'put ''Q0haVmdwOmFWLDgyMkQ2S2E9IVNyKVE6VnVfdSI1U3ZicHRRYkUzXVhaaCZlIXJONGpGOHt5NyUuSixaSClgKHZQd2xGUTlWW2VuUUY+VCpoRF9WTDttTkBLZCF1bCowXTR3I2p9RzxINmBkKSN0LGtgS1szUWt4TTY6d1prVGFNOzIkblA9ciI8OSZTcFojSD09Oks2ZCw0VXs6emAofCU7fmlJ''@;'; put 'put ''fiQ2cmhYNnJaTTs2JXJsW2U0anBtPHB2fEYjUTZve0dka3ZMfjN3TH48YSpyPnpXMUJ8IX16NCx7OXJoMk92SD09OjxzYSF7W0R4TltuXiZVTWhebHREfEd7dyFkKDlyJSk8SHJoL1IuRVlUQUFBXXpBQXtRe3lqWFpZXXdvTkdwLCVHSF5YVlJ7MVRQemlwTG1YIypBd0FBQUFBQUFBQUFJQXoh''@;'; put 'put ''Pm9nRCwuZGsyYG51NW5+cmc3IXhJL0ovd3k8LCliNHdOO2M+OS9YLFJmYSFVbnZVVG5JIjlSeVZdUHkkW0s8NmE1OXVrV1B7RSp8PythYT1CYWd5W0xqSD4yYGVmQmR3dnFYVnRCNGh1PHczYSN+SDA3NSl+KEFYZHQ9NHIzTzU3UG0kdmdlQ1dwYiZdKGNMI2p8PThMUDNVeFY4c21DfTRKVXNL''@;'; put 'put ''e2Y/TylGaXxPeU07SnJNXUNSQlRvME51VWAzOW1yRUh2VHg2XShSZyxLQTZrYEowOyhddUdTJSZrMHFxJDBQfiRec0Z5OEVZe2whOz41ZlArP1V6R1NWM3g/T2Z6UHdFY2JHRWB6L3FYQXlES3dEQ0BgKlFGRGAzQ0RwXkg+bUtbfEZNcH0zc31deztEJlolWzsxQnNRV3EpTj5XLEomJiFHfS91''@;'; put 'put ''Y2EpZ31NUnNwfmQqdEZKME4qYFR5flc1MD0wWFpFfkE4PF1JWG9eLnp0cyppaE4jKWFBO3hZZXhDfWxhS2hYSyhCNndfPlMyOEx6e3ZYNERRP21tMGM6SntUR2soI2A6Wj99ZF5GL3woNH0kaTZ5bCo7R0J7ZFJdWEpMS3pQRngqNDY9Z004R28jY2Q5Wmd8XVBAcVRtNGFBT1EmOHFKdCN5NkQh''@;'; put 'put ''NHRbbUBheWJPeGdkaz1UO1hJaGgkXmtXYEVaS2N3V1VCUW1vTDI9JmNXfn4kNzpMZDVbRSFYOzo0JnJ0IUUkVUcwWHk9Rkdfbzo1cnpjQExmK1Uzdz0lL35MTCtLOzgyMDQ+Iy5QLltndXdwQmhYMFFGK1lSP3RCVF1HIkxyIURIW2tRYU9GRzVbfUkkclsjQVRPS2ZGQnw2d0Ymc1p8Y2gsJSo3''@;'; put 'put ''SV50JC9uWkx6Jlp0TT1keDU5WGplITlMP3klWzZDXztqamAwQHVReHBwW041bnMmPFZON0RJUW9pfD1SfDllKUt2NjZqVzxhIyxFY05XUCV1TTA4MVBIKTpkXi5xUzpuO05hcmhgWUBbcy4mLjgvdnd6TXVnYjo+YXRdbjxJXjBoeVNnKFQyI15GK3A+eGg9enBRNk0mR1RLeyJeIX5LUGpKYnoh''@;'; put 'put ''XVB7azZUZC5WS3VHQlZbInc0O3JoUlB7R0N3MHdyQTxgVzxdd35jI08vYXZ1X0JjbDwxUU02PGRjYm06RlJ0PipMVG52fFM0UXhpW09zfWVWZ1RydHQjem9LKEw0YmB1L1Y2InBGcC8lfkRVM1d4NyEiOkEmQFhbcmZPflMsa2xGa2JzTzQpU15aXTw/UEYxc1ZhVDYvZ1t5dz5zNEtMXUsrW3gk''@;'; put 'put ''IVRZVVMwPWlFcCxyeyFiJlZeSVhnXTJgKSxvVWlYcCteTWxBaHpgdnxJVDJWPCFnYilgSXVyLnVJcW85aU4uJTJKYmQ6IlhEV34rKGlGVyZEPC9pKlB0ISZyRX1KU04obyF1bzZ5aGl8XmtaZD5pRTdvcSFicktWK2NTamBpWy5XL1BbVWpXUnkkY1htUjIpUG95MC8zaT9LTThkak0vWFNqTmBu''@;'; put 'put ''ISJGa0s0O2EoMlVPPVZ4Z2QrVGVPJjwjUXN6IkBhWWRSfi5CejwqZz9SLH1NWFZgNFJibXxtL0k1OCMqQDhDK3gkVHIjdkohWTQ3RmtVPWBfUlhrXigmV21TSz83VTVRcT5aODZ9PlEocV00UW1seyRnKmpoMD0xVis1S2kwUSw8fkx2WF1TRiY+MDF4NlBSZnY1OXgvX35fd1J0RVh7eUVvejFo''@;'; put 'put ''Jk9rUE5lLzJYRkd3aGB1Qy5vWEc6Q1kub21obWEscmJdMUE9aDFuQkYoSDBjQXkmKk1PZE5XTmhOOmxWQjpWKW0/aDMqdkdGV3YzVWxqP0VFKkJjJUE+bWMjLCF2W31eKkJ0dkZRclR3T3hyNXg3NitwRXwqJWJoOVJDMVtpU0JvUD5pYXlHUGUzeHJXQDJHclB4T3VKQjRbSUh2MHgiSUZ7MDBH''@;'; put 'put ''MnwkaCNCWix9fXJzdVBTRFFHOTVZNzwjYkdsT0JkKiVyanQ1Ti8/X2NTOEZYJWhjMT5dTnZbKFFSSn1XZ1tJe1E0WCpfMGI0KixdbDgpSkVoeEw0KXJlakhBKHZHM2U/LkddVShIJT98RCNpZ0xKWG5CbHhZOWlGVXBMa0NQa15CJilEJSE/fWZdI3xuU1pzVDEpd0gvLmZpWVBGQ3hMSUlfW0lO''@;'; put 'put ''KFozSyY5S0guNyNibntoRG9PdGcuKSRDRDdSUW4qUnc0TV9yUkVLS1F6bVMqPi9XUiFRMmlEfFMhLnRGOF0jT0NmUUhzTVZMXyYwJl5YS0Z7ZUlxYnVyV2M8JWdJd3VeKEJ4Omo/NTs8OyxROH17TzJte3ojWnc3JklFYFFWcC5EKEdlPHMuUSI9UHQ5SiFvJi5lSTxvUyhtLFdCVDdrQUk2RTwp''@;'; put 'put ''OzVFPypkNER2SzwrOW8vPy9udSpXfFY2VUlocmYjdC9dWSUucGA6Y2A9Z0lJYkVTaUAqQXdAMy55bXV4ZHhxMUhoPXtbbHVheGR1dH4vWmVhZT5yXmxrRDExKDFKKFlhcCJWd28qKEZ8M3cmd3tJWFdmb2xaR2BvLmZZVHVFMSExXTFBUiJxVEQ5OmQ0KjBuMXRQXX5NeCl3SW1LKnlZTFRLXlE+''@;'; put 'put ''XWZvRipsZUp2WDxLKlYySTA3KGNmY3RWOk16VWpgUFYqa3RDLCxvOit4UWdYayVzWHZ1fTFCU2JIPC8wW19lUS9fImVXQ0xucykwNHQ7RVBPZTZRaDd6Q0JwMV5WRWxQJjVzVVZmV0RjTTZFXXJ1UDRCaz1dN3k1SSF0IWlaRXBiTUZIJjdDSGNdX1gwTUN0cj9lQiFpJDEqUG8xcTk4elBKaS4w''@;'; put 'put ''eVBQQz5TO05mWn55d157UDJTV2s3OCY9QCY8dipyVDN5NnkyWyVXcV50S0h0RWplO2V1Qk83Rnh8PzRPIm9Qc1JgRF1hd09NZWEpfkIwa2cpUkA+X3g1d2ZHT1luM20+cXYkfDYqJCg4alVAO3VtbUQ1Ozc/IlM+XzFfXnd4KDRjPFt6QW96bkVNMWFjIX5INXZLSExBNDBsNE99Y1lDQEppNDJV''@;'; put 'put ''YDdPKVAlXks+Qz5oMyM7KEImWzVqOSxoV1M+UW9WMkEpWT5NeGE1WCpROmhwPXBORChIaFgiViN6c1poRG1KNSpZWyNVdF5jNGF3I19VcFpqb3BDQHdwcT48P1JPP1olbj4+YVowQlM7QzgwQ3lmIVF1dmtUSmh2KUJzVSk5KjM0I2M5eGl2K341UWRjJDtSKk5MSVM/aU89LyovaipYQT1Kalpx''@;'; put 'put ''L3dbRWA6NXB9VyIvRFJ8ZDNgJCRdfH5yMVhBOCVmNGk+elc0MjNdKEhlLj8rYCM7NlZmczQyKWhqOlhWJjQiOUYqUjoqYFdzNDo5cF9aJjUwe1tbaj5BVzFLKkhQYTA6MlVXQmt4OD5JWENtQmZhb2EwUF5xX0gyJC5Ga0lweiJ5cFo3bVNiZz1le3p9cVdPOkJDYXsxdj4zaHZ3SUZKOElQNSNs''@;'; put 'put ''d3d6d2JHNzwkS0xZMS5XaWRxfjFvNFI3aUQpQ3B1dy5IbiNkWkgsS2wxSTA+PXZXfjREN0t5bUw7WDx0Z1dyTCoyQShjJj5HXXUkRipIK0ZQXzYlVH1hRysvUFdEX0w9PCZFMFU1L31NTTNZLjFqNiJHMzA5MUB6bUtBMW16a1JBZX5BP0kyWSs5U2RXP0A0ZFlsb2lMX0AoKUw5Rl01OipedSYs''@;'; put 'put ''JX0vOi99clNMWVE7InFVOVVbSGkpYzUxMG9iSzJKNzdobit2PXtiKHBmQiEsbFc8cjhic1khYVMwZCE7UHtCe0s4P11UL2tSMFlJayElT3csJUx7WEFyeE9HV00ybmVMMU12MFlZQiJ9RSRIRn1PJnU4KHp8dCpAMXwuZXZaNHY1ZzVsWEo9ajdRWT48SVNZYmpOKlJARlBMVVQjOl11YzJLemw4''@;'; put 'put ''QEQ2KWhZZkY2e2UmamozPWBqYWtlSnM0biNjRjVhbEJnejJIPCxLUyY3SzY2e2s4JUZuc29XZnIpXzV7QXxweGFsdzsqOyplb0NTSjlVNWNIOEpqUXhLUSVzTSJoVD4/VTBBeFUjOmEsczd3ZnQ7NippXW1kZHBEKWF0bGUmISpiVTxhKjtpbFtfJmhIMVJ2Uysvb31QbjdJMyszZiRRWVokLDdL''@;'; put 'put ''emBCTFJ1ayIuYip3WlRVakRla2o5Pig0SWM/UDFOPjVzKFNDdGlwVk1HZ3dHWUBvMGdASFpzPzptdiU0PypBY3xpN34xbllvXkl5QXl1Tn5QOV1IejpPSCIkTE5rSXwwYDZTWmxAWXFbIihFbFdYZm17NGxWLkw/eFkoXyRWO2NEMGI0KCZ1X2RxZjw8XTJnYTI0akhYJn5HdnBtdjQxd1o7NXJo''@;'; put 'put ''dil5cmI3UWA2akFNInJhSlNpe3xkO3BwJUR0VSI2KlZ3N1F2UXlCKmd+Wkp7bHQjI0BgWz1OL1ZLZ0ZATG5IWFdDSmYjXnRUOnlKMmlQfV9xWTlLLzhGNWosJGcwT2BhaDV+ZXQ0UHs+KXJ5U0ZbJWZZYjMzdiJKfldoQFY1WihRVkFWKTF2YElfLz8qNlRgOX5+el1ZfXdnTFNzZ0VvZTVkfmxa''@;'; put 'put ''Nz9INEcySj96WCVsPX0hR15IMltJQ0VVJmRieCZGe1Rgem03JCg7b01xe0wsX1hLa0ZGJS5wbzpsNVVqIX55NEtSYHtSSk81KDhhI1dpLkc5cUNIMmd3Ni87YzxzL2hDQG0/RVZ3OnlPb21uRzltLFpsMytrS3IjKjRaQCVqUkhQJUViM2BAQVsoPW5iUSFzW3Y1YERucVB+QikrNiJ6TiRtKXUu''@;'; put 'put ''KF05T0wyI05NOklyZyE1Qld8WCtLWHBCa0RJbmtiMG85N0J9ejtEMy4pK0wlMmVLQEVeOihWM1VzQWZAVjhIXSpvNW5ZfixDT146bSUzU3VXSlshcG8vOWBKS155V3hEbFgwWSlRKysjKDpIRTUyJSpGZkJBWV0jXzV6VlApbVg3IyM0RjNEZDNYTUB+eVBlXykuak9CSDBoIzVyOl9lWVs0VH0k''@;'; put 'put ''NHpvIlY+Q3ZMUmlZWVhLZTBaW0Ioei4+XzdSZjErOlFHQ1gkOyEkSHIkMXxvbFV6YyRFLFB1Lmdffj4vTmI4MjFObSlPR29gWj83M2B4aCpYQGc9eUVgYi8wbzRAZnsmfGswVHgpOFQ2SGVOITpBU0UjdCI6TU15dEw3dklWVmczOCltZTk+ZXYjdVsqUG8lTGxwI19heiRLZStrfEpCQkgzY3tt''@;'; put 'put ''ZEA/UiJRKVIyV1hKZ1NKaDY0JFdoQGp3Z2FiPSJGYGM2TG1dZWYuIyZGKFJUb3lwSjMlajBkPHlJTFVpPWwlcDchTTEuMkhDYk5dZHwvKU1pQkErckleISQmXTkpWG8kKlc2NEtJK2ElPSlrU2MxSnQ6MllhQEEocnVdZTk4MCF8ez9GT2hhRHQxajZnRXBlPjwiKE5EOV9EZUZDNmchOmQ7el08''@;'; put 'put ''eXlgLF0yaUJqNFphQkROd1F3WnB2RX1rQGFVNk4uVXg1Tl5VKE95TX48X3NveXBmUFJ5WUl6ZGl6eCldXXUkaC5SZ1J9NjR3K0QvTnk0JDVPbjooSGc5QVpfcyNlLCE2dXx2YWpsNitpfk1BND0+fSwrMTMuK3B3d11hYlVXalddblFgX3h+PXRkMXdMazpXeUh6eHJzVCF8MlYhSTxATyZtVzZF''@;'; put 'put ''dlpsVWFJeD5xUXN0b0wlZilES1hye2ZpSk1zXWFeJjlJVTx3UFRIImpycEt9MzI1JWF0JiN1Mm5yZWVEYkYvODF0N0xnU1RlZGpjQmxVcj9LWyMwcUxfZG5NZkw2Q1hqZkclVkRQKykyOm01NHlPKTJVZGF9elghRVEzWHtRVShbTSh2MylqfXtKJmAhV1lieDB1SkQsfm1LfFNNXk10TlFfYHxg''@;'; put 'put ''eTQ9bTBgRHAoYWAuREMkQ1syOlImQ04ze2FSZjFrXikoalpRQl8vNEtRNz1wIXUuUUN7IUc2ZUMpUWlYeSR7ImtYciNbbSlBJG15d3UuY15DIk5RNThociMmUGlCYkw8NlNgXk15fFFsSEJzMjR8LjNMIXxtWWRTdm91d3d6aDl8O25+L1BMR2FoaU0vREhkU1Q5L2dXPSVmNyxfU2o0ZjB9bkhN''@;'; put 'put ''eEFdQnR0fk1TUX1nJGUlQFpee1lUSFk9PFNBKSlhdiV1Y113eXo2YCJuOkZnMlNwK2ElMygjakBPeDJfMmAjLiM4OXJZWTJdYHJqQ313Q3hWcFV6RH1NNSFmZzg5amdESkszKWV+XikjaDwlIX4kQUtfIyNpSyJEKSYweCJSJDxvfUZQSXV3MUNhcFNnSDVvUThSezpyKFVEQmhAQD9mIjFHLFFQ''@;'; put 'put ''ZFNXXjkmP3dHfWU9a20zM0E4cyYzNk1UQjkydzQiVFVpaEBld35jfS4+NSluWk1WfDVGJTk+Ny5JL1kvdU5nIlklJlRCNEVQW08/eUNoUy5sMzlAKSR0P19dUilUPX11YltGYTFudVJNcXhPISZLaTBzUix1JXEhSDFUczcyd1t3ciM8TS5GSllzI08/L0w7ey9xMi5yMiNLOE5JISolImFtKCtJ''@;'; put 'put ''Y1tqPng9SF9FXyQjZzhkaT5XYURzLjMuInE5ZUBgSExQPyp+b1BzTWROVUViazVGYnNbdkN3ZkU5V0pFcTk0OENIPH5MP2dpWTtMXllUTUI3d3lAZyU2dCgyZHpPXkZyNGtCLF9VR0BReHRbaHxOQStDeVNWaiZvSmlmODVRWThiYCpoOXUuTHFBYVBFXnk1MVkmJjowaFdpQCZrdDM3bnZpTHNV''@;'; put 'put ''ZypDek43XzZhPnwhJT1UODZVfj1dKTxeR0ttWj9PSEg7WmYmLDBAaTFZNDdAT3FueV4xNGBCZjllR2swSlp0MXEmP3EobGVmXUNjZFMhTkU8YCpdRlEzPyhbO1s5KjRyQHdzL21zNz1NKl1oLmQoKUJuNmBAVndGel8lYzlJJCxHJlFaT0JxU2xMUTp5bVR3IX4vVEFMem80cihLXWdeQi5SdXIh''@;'; put 'put ''Ol52QEhKbDppck82SD1DfWUkQzBtUHUjIlF+SEReODg5UEBHPFomZEpUQCE/cFBHTC4lYzBQOUp5ZUQ5QCI+aFVkSUJTZSFjMD5OSjdDRmNUTWFtfTslYSVARD0iPnt+PGkxeW5SQjlAMTEwXy5fLm9bbD1fciIxKTUvbj4vOFIzK1J0cWZNYitxZTt6MlBdI3w1YT9Dfj5kQktWVj53SnRHVGBL''@;'; put 'put ''RVV4Rn5JLHRubDs0V0NUSTY+VGJZJGFZXVQvN1pVVmdZKj4wYy52aigkR3pEaDomRWhQST1dUUMpb0tMQmFObDZQN3dLa2wkdWRvdT5dRnNNTTdIWGFEUz47YGRlSmp+KFglRzouKnQyS3xCJnoyXWQidStkMXVsX3c6bjBVQmBZWSFEaURmdk9jOkE4VU1CJTlrNFE0Z0IrbjAvR1F7XUR3M2Qw''@;'; put 'put ''azAiS2ZMWT0uLjNxOSpTVXVVfHRhRCJMVEdmND8zL20iaSwyOSFLPElyak0+aTp1eDhSc0YrZlU8L2dFWiNVK3wmPk5CSSM3I0VeXkIxLkpOPT1idmtJSjA0bWZfPFZxUEd8TzE3bjEoaFc1bH4iIlMmYDA9bCI7YkQ4MWZIVV9NZmFua2tNUnZEL3QlJXhgfShmYVRNITNmfnBCOTF5QEU5YCUh''@;'; put 'put ''YjRSM0YvY0QpVy9pM280PElMMnNGL1VENXdPdFp1cSVJSzI1RjVoKz5kOkBlIXdeUlZPdWRaNyQ+NyV4Jj5zIU03X01jZ1YmYX45NGdPJE5TR2YvY1NpeTohVkpyJnsuZzdnKn1kVGhgMHBRZ3JmZyVkUkUmZC9sXW1yUWhgR0s/V1o4OmcuSjlnT1BgcjlGYihpQjIwcmRpQFg0ImZjWGRdJSJB''@;'; put 'put ''LllOYCRCVDg4XVVPfl9XR2p8ZjA5UkEsUURiSjg2K09EX01aMjdBZyJ8KWlxTV1VfShIe11AL3c0QF1WZkd1VXZ+LFt6bDRpS0I8d0lhaEpdbDlDPCQmPjNqVTN9R2RSfiFwST8peWEhcVIhVVdIUFlFd2VNIyg0O0Q7N3QuYDM2I0ZsTSEsdnU3Zyw5KDpMZTFtQ09CdjRgK28+OykqLC42Knh2''@;'; put 'put ''KkZUIVBkeW91Z3c/fktAJmA+Kj1KZzgiRF0yK3gkN2FzWDE6NUlrIVkrJjojOSNuX1liJXRkczxsVF0oR290fHdLJkVgfGI6TD9RSjh6OjZxZWxvKS51W299a25qZzREekAkdUEyV0YrYCxmUiNBO1ZdbiFgVzIoWl9ae0JbMDVZPHYiRFd2Lnx3RkE1WmkoIVZgZGIyT2JHSUJycDwrcVF9bi40''@;'; put 'put ''TzxrUXhbXVRgOWZncUYoZTk6ai9UKmN5cHQqOmBRc0k5V3klKGx1T0N9ODFLSlI/ZWdKUERKSnRIRSoyQWVvd3VdalBxRW8wS0x9MHt5alNaelB7ckNFcEtfOEZdWzA5MH1LQ1pVcmU4PU57JGdxL2tvZGNIZTxKcVI9KERUYjt4NkdMQzVnRz4vME1efj0/YzdaRmBsXih4T2VTXX1FMGxgXjBk''@;'; put 'put ''JDN1bk82ZyNDMzVCVkleZzo5eGpPdFIxYmZgSVVPaEFSYz01I0JNI2xLZGZSKld5QmFGOktnJmI6fk5DfSNfW21pSTVBNGc+SD96dzI+Vl8zJmZMdGBmalEiXixEfGJQPl1pMXwwZVBbYytkW3A4Mk9RYFBMKDNBMmoiL0AkI2FzWFlqaVpoR1Ymd2ZsWWUzQjhAfFU3enlYfSp3TzQ+PXNWYTYu''@;'; put 'put ''QloieypJX109XmYjZmpDdjlSVnNJPUBeKmFuZmg0K007eWpwKS53UEFmUnJSJXhweGFIZkxFNkxGZkpHXUdVRWomI2V+ak5zQ1dzMU9FckssPHRXdHBzNSpTUzwzcUN4R3tvXThJe1d+YkYqQngudllrfWp1a2ZwekZ9MlosdSVeRyMreVgkTWlHKyY3KDV9RShtOlttenFxRH13cVFEfnZOQVVl''@;'; put 'put ''MiVgMyF1K29sdUghZng9al5YUXc5MUJCfVVMbHJDKUJLKXRde0JKNWYuNzV0Nz19S34qYDNEb3pzZVIjUjdXd3YsRFQ9KUxefVEvbUgsJj9leGh9YEVpeFRdKiZQMHtoTEpvbV4/RW1uVWZJR085O2Y+PVNwMllfKz41KUlgLz8kZltYZEwwd2trfE41MDt3NXloUCp8R0o9VSsmdXdzbTExKUxv''@;'; put 'put ''WyZmdWIwN19PV0ZvW197OSxiJDxCVnE6fiQxNV9nQjV1aHtDcy9oPXpnfXYkUWlHTVBUPXFqLDNEWS5nInJ1RnZ1cXdJPD4wQW88M3RkX1dTfChzMlgpN2Z7ZkN7P0F7ST5FK3YjZyVAeiZ0QFNMQlo4eSkvSHFRam9ldyh1Sihja2F+NHMoLyRmclt0Zl1zPSFdbkBVezYsQ2VQNzo3dTV3WGh1''@;'; put 'put ''Tl5xYT97Ukh9bV4ydV5wZFg6O0U1Zjd8fW97c0EiYnM0JW51P0c1KnZYait+Ql9Vazc+Ok9rZTdRLy5BI0c6VnA9Kys0TkJyL2IrVUJ3WEByd2dpTlAscTtQOH1RdFQ/R3Byci9HfTBdVWM2KHBEQztdbC9HSUtlVzI+T34kbz1AeDMlR3BGYH0qaXIqWFJYfENkWWR0R08qJmhGYFI5Nj5YbjxX''@;'; put 'put ''LzhLWW9rJlpeJVBRKHk6UmAqPGdGbUE+ZXdveCxgam8vfUA8NmQjRWs8JCpoY3Nkc0V8TzFJdWI5XmtvXVpYakdxdk0pcVh+IztOUjN9QVF+WiN3JnZXP3x8YjYsfUxkRWVYXyF3az5zck4xKmxmYTZHJlluYzsrUURbfjxXLklaRHRDKD94RikwTDQ5IU1uemR3aShEXmhFYVczfnlhJH5LTHtz''@;'; put 'put ''NUhUKkVfRnJTS0twPlk/azVOI3heZXBlPFs9NEZFNnw7IStMVVc3Vz4sJTBDXj8/bF1zfFdZX3ljIWJ2fH5ua1lvQ3RbN1kvVFlAPy8jd1svakQrPikwQntmfFdeY3VWVURPTS8rfiJ0RmZQRjZSK1FVeTtFdH1UVV5xRUlwZG1aUDxgNUVIL2tqVFpRIkIzPFN2R3tdWWhjQT9pOzA2NjxnKj98''@;'; put 'put ''UFdabXtHaW8mRmM4YC5nKz5COCNQJUlqaUlxNVV7dXZ3NmN6ez1HMD9WPChyQFBtQ2dOcntMfGwhXSYxS0NZZnQmcV1eWTsvLyQ8I3BVRzRzLEA4dm0zRXxhRUl2KVUqY01kJW45N31PKXQ/eSY/JCp9Kmd9SlpiQWEubWMhK259aEljTCwqNTs8flZmWyJiI0JtN3ZTfixOOU92aG8kXVRTekMs''@;'; put 'put ''MU4/PSQkdWtuMUZ3fmw2O0cpTTxHMkskQ25ldCo4fVB0M0RWPkdDLl84bl9rd2BZd0o2aHhRdHd8KUchXVBQPXxfQkJXUjM3I0dodEduNEpKVjYzWHMxaGpoQCQySjcldCpMcztxNzk9emoxXkw5MmplXl1ZPHZkcCZYfn17REcqYkV5P2o2O35Xe3t+VHdqfmNGNVBLWTQ5MGBkNVpgfUNOK3hX''@;'; put 'put ''S2MpKVNUNSYyfiV2WCl+NE9UKnwlUlFiKiQxV21NVHpyRmFyPUY0IUR7UChYL11gJjtsMkNDXzVXUy5UU14wZyMwWzdyQTt3ci52cXlKPkpFUDkjVUNGXzAxSjBwRWZ0VSpxZEkyNSVVRldVN089IjdCemtwel1yS0RILn17Tix2JCJ3XXFGJUBNdGZCal1ZOT8sTnE7W0E1OjlXcGhneG5fZTFb''@;'; put 'put ''RXgoblV5N1BqYFI1MyptMGgvLkdicDU1Lz0iODJfYTtJP2BjTk4+JVRKWEhUTVloaiUmQHkuai4sPFU1cV5kfWZZRTpaaGp8RV9LQ1sxVkBYR1QyQ2VsSU4lcE40TWZOe0tpJiVaeEF+IWtGZk00UlYxUip8WzxxUnlUc2k9Pz5tQCZHLEpVaE1sSSVpIV8oZExkP0VGcnhteT1fUXtNTCVVPFJe''@;'; put 'put ''e0l5KUI1ZHdVcTgvdHFDVUAkakYxLzdFLFtlV21oOlJkeW5pPmhnZzZZL3dvfmw/V2VXImsvQnxbKEljVUs7O0QhYWBkSjdQK05CN1o+TVo2KWxNdUhucWpTN3FdJlohPXBpMG1pdHcsUHtlYnBKOVg/TEVlMi5vPCNCQTFTNDx3JEBqJW5MJUlHL2c4IU05enghUkU5RS4uVSM6PWVDbTE/NXZa''@;'; put 'put ''VXFiO2wpYSI5TC96MkV7ZVErYFE6c19kMHpXKVd0RShhfjdoXlRVeGJwe15SJU1qXz9ZNSRHXnBiK092XzN1fTB2NFd4Nl9JdVo8TyYwaVRQZG9AZkNBXjQ4S3AqYX5Tcy54cSsuPT85elRxXz0kcXQieFJbe0JzUUtfQ0ZoSFFDLnBSKyF6ZzVGckZQWyVGWjc5MEQ9SH1KYE97VzdObXU3bEdG''@;'; put 'put ''eWNILEJBM0N0QndNZTR0VE19XTJofUpRcV8rWU58ZzNyKSpoQEREfEhjbEwxMEozezkvWDhXKn5JcnBxNDNCU3BEUTtCbXc2PjozS0lkcWVQNXMsTFtJVF5YQXl3WkVtaUNHViVdS0JUXm1BLDdWRlVkdGMyIS4wemVFKkNebnR4aWJxfFVMMnt0XnF1NV9FKSxrNGFdUGJgQ30oeXEpI3cxd20z''@;'; put 'put ''JE0vNVU4V2hCPiZtPW59QSR9VUFAZ2dZdlp1U3tCLlpiJXViZmphb3lRRiRWWVN5c0p2UEMiQ3Zye11kVmNaSVAzb2d1cVReVn02ZmZpU1F0NUg3OVI/I09wXSh4fjhNMVM3NlFrRUBZcExqcSRoIkhKJjoySihGSVZ5Wj9SVUFMSjJrZypIQy4iayY6dWh6MWtJWHhdSGNsbVh8R3E1Jm5vZ0xo''@;'; put 'put ''cTNnUiVseSsiNH4kQ3EpYGk5QyUlIypzWj48Ny9bbSp1WDxIP2w2d1MxbFRPLC5IKTNxQ1M3LHo1WyNPQy5RQjwlNVgvOl8mbkwhVVtfNVJ4UiFpW0VRITF8NjBscDg2Ozs1QjhoPVIkODt2cD5Mc1lVTjtQaWVmfk5HRFNWOmxaX0duR1hgYG49akZfPjhEMFdIUkJjM20jTXslSCF3Q18wNHh5''@;'; put 'put ''Lk8qJGlqTyFyK25bRldkQWJtdkV1akRlT3pXfT9iJThWbjRbQH1ATWU1JEd3aik7akY6WyEiOS9oSD8+ISRFSUtUbGB8IVhzPlM+UGFMSTRIS3VgWV5icU57K1o4XWRSTl1SfHgsaEYxKk0pXixiSTN+cTduImNmI3slUX5NXShWS2pMRlc8JElWfU9rcTldbnJJcEpke242OGgxdHxIe0ZXMDBT''@;'; put 'put ''cj00SihROzxJL1V2eEg6SFoyVWJqeip7dTUvbXU7byRab0krLHhdPl5uQ31bY201UyU7TVZ5R0dtV3ljYFRGRjtURCNqcz4jOTMpMUwjV3t3UCUyPzQ8QkdTMSRxdzFlIiNNJjhoeXFiPGQlRUc0cTR3NWxSPU42S2lhc0ZyN3AyTVhhdSJ5SDRBZ0QxLjkjN3U0YEtbTHx8TzUvYldQWk1YWWIl''@;'; put 'put ''TWE8RyQmVk9lOExXNXZJZH1jW1M1Oy45bEU0cStBNDZVeltfZDdhPm9YbWJfZTxJbXg1e1lAKXkhck8ubndnfTYmfj4jRTApNj8xYCpRLHA2WX19KWN2JWR0Z1V7VDJVUjg8QEBNYlhjLEl7O1BYckh3JjsidmgrSnlePERUSGNLKlJIQTdSeyEpbnNzZ2Rvan1Uej5eSzBKSmkjVzhZUTw+ejA8''@;'; put 'put ''fSN2Zzd0VmlLd21HWjN6V0BsVGdEODw3MSlmeGw1Qk4oS3c2SUN8dDprJjRASWYrWmF+OXc1Xn5OW3pXRFRpYXowVlprTS45U0x1Rz8vI0lIcCMufnUrQ1hJa3FRYnhLQCtJPms+U3BtOC5NYjQmNkhGJlt2amBudywlM0Z6S34lQjQxLCl0dmljJmVoQ31BZ3AlVyY1VU1gJmhER0tSN0BsNlJK''@;'; put 'put ''QTQ+dW9YXTF8MjQ4TnVfYjdEUSpSSjA9QCxNMmZFTlt9X3UmVXVCOn5eYWdRSj81KCMrQlRjZ2dTYEcmNn5mMF8zOjxNeXVCLEpXQG8xd25jT2dZNyJMT005fCJ6S2FvXkJ+SGs5W3VgK2hhQ3paMmk3V0lTOF84Pm9UISQoOlQqZiFoTD8jJkpPVGReSzhtRH1zfWFQYnhsUmpVT3Joc15oSEom''@;'; put 'put ''Rl55SERLWHI6S3g4dCE3a1AocTZoS0VOezEuVlVVfj1lV2xPamJxYCE6ZEdweWkzKzVddT9vUjA6dy9rcToxd1soKVY7fG0yZXU5P1RvJj4+RGthJCw9JEBLRXcsKUhwRmFsRSJTRkk7dilzR3NQSn08KDgiRDhkfHtGa1Vzb0luR0lvcWx8S1AhaEZhRSt8TiElWjpOe253eT93fDVzZE1CVDUr''@;'; put 'put ''byxHS1hVbSNeKjVeQSVUWWJMcXM6eFpXaUooLjVHLHhTR2BrfDFJImxAejt8TyNyY2FFYz0saX1dKXVhR25xY09JWSt3cGJsXVU7WFVtNCt3V0kyWHw1WkBWVW5TIyhjZjIkX1djQi8zUDVfVDpJRiRmcHdOInpXcTd3SW99U0BZX0EpPXBpN3Y/OlhRLnZyInw2a0xDOSFeI3pkYlFWbzxPdEw4''@;'; put 'put ''djVIK0g+elBTcnBpbkBRQGY3Q159PGs8OU1WaEciXnM9PlovJm8xWUxEPFAyTWFOLHJ6eVN4Zno1dm81SjBjOjpgJnlILzUuVzd6VEduOiZJSzdZZGJjQHwlenppLyU/eGY9e1MxT1pkL0c3U0taZDZ9XVZmUEl0ejhMe1J9Z1R8QT5jXkhnXjR3Nk9nWU1XTDJkR05OUnJPJXZoW1dTZG1idC5z''@;'; put 'put ''S1txSEpZSnY+K14iWUtPQGR2STs7IlN6cXMuI1EwSXxZbCs1NDUwXkJXVl9XKWIqajd3end9JH15JXRffEVHXipFTEM0bjxweGMqYlpBZ2hmUyF1S0ZhWSM7SUt9Kl5LNTQ8UGJqNl0/Sl9xbnxbPUVyJS9nQ0U/OylLZjdkal0uWGkobVtDLGl7dWVgXmYhIjYqaGk4VkBrey9TVXl6LHFUcysu''@;'; put 'put ''YXdyQkxxT0lCakJeNnt4dV5OKmh7LCtUJl53dGZ4UGpBUkg2NHJwQUM4bl56X2dTXzdhW29keWZXRWRVTF48ZWkkNjk0Wi8oclJveSl4MUBHWWIrMk40dyt6Vz9TZ35Xaix7TFQpQTpUSDJEPmk5Nl02XlA2RUxfRjIvMS8sRHhtTyReP2ohNDVyfUBmRm9adENYcip4dH41ckJlU043ZU1bWTh0''@;'; put 'put ''SV0hQ08zeTI4Y2VfQDFHTF10LnI8MGg+fDVPVCkwZlk7RXYzNXo4SSJSelJXbUlJVXR0TSZUL3h+LkhrelZ4SURydFl3Wzp1VkdiI0p8RUgvayVzc1VhRStwU0xQISErWiZ1bj55blZfU3YpdGFHOjojelFifE5EaSYlZ0omVjI1PCNtPHVuT1VlUT0qRVpfYXRqanIodkRVZDI9VklYQChaPiF3''@;'; put 'put ''UjRdOnRUb3NSalRZdE9DbHZTYW5OfEs9cW59fmhuWmNiZENtSigiNzw3L2k6cSpQKVpfTDs8PF5HbUVfYjd9UyM2JXg+Nmd+LGdMKUtXMkhidjkiMG0uPEVMJG5hJktYNV9bN2w0cVA2I1sxPjRCT30oIUdVV0czeTZ0aEBjeik7UV5mJWBJbGxlWyVFU1BGdTJ4SzJ2NSNZJXBuVjIxYmNvUSwv''@;'; put 'put ''VEpteVdVQFdEblI2TF12U3I/InApZzJPSE5rPV9iYDJIL3UufTlvQioxLE04QS4iSjR7MH12a3I5d0kuODZEK1JYO1RQOH4sX1tCfS9hdXMvfmtzJCk/K0R2NEJ3dztZfCxbOy8sRkFeYzgvRVE5IT4mODVdcC4zLjh+UTlHZ08+Pl1OPW5KeHtfTUNjLE1KfHRUZlcoQz07VWszfD5Gek80JVgl''@;'; put 'put ''TWdDaTVsR3goK2MpXU4oQnEoP30kdnArSS9TUU8zNlduOjdVOD1vIkMoeF1Iay9YPnFWfTBYY15teVdUUkExPU1eMSs2VzRhcSpsOFJabyZta2NJMi4rcmFUNDQjazMlOkN1Ll5ke0skQ1BJN3ttfC5HfDM3ZWF5XSlJL2o0bmsqfSpsWTI1Ynd7QmtzKWx5dkdxfW9JQkUmPkk7TGZ8Vl83aF1b''@;'; put 'put ''W0ckJTcmQGVQSXI4RWk0bFgwPmcyPEtBZ2x7fjlCVylPQiRfLihMZ3JZOFdKcyk6YlFfUlBMe1oxYihqKiFVVi9QaWBsPmJYa2BtQiZ7ZzU7ZyFqXUlAODhmJmcuUzx+fF01Q2I9T29PVEBDaipsPWB2XT0uX0RCcS8oOFlELkVQOzVaU3RZNVdncFlkaSRHUzFnLEwveU5UN2o1N2VEbyljSDBL''@;'; put 'put ''b2pQMmR7RklBLmooPTs1SkJjNCwpY2JzSTckcnl3LmshdDJhRjwwZUc8WDooOENQTnFWNzdxaSkucHFDYEp6SEhmfEw3UTNrIyw2OnN0RDhNQmZ9aigmKU9tRmYrVTtfI3s0SDQ/LF5GPSlsaUBYTGZjaEtVYVBhPEFHQCo0KHl2NH5DZjIuQktAfElfZDdqND0yb2M6K0BoSz17UGYlfWM2cl0i''@;'; put 'put ''cnRxezRvOEBseFpQOH5NcGxlelQ9XmVJOHtLcGVmfkkzVEthdSMwfUBgLmNIUixPZnUhS15FXzlIPX5kbEheRnA7VmsyNk1menIje1k9L240QFtOMENDaT05Ri43Xj92IzdZa0RbYkRqbjIsaHQ/Sys3QzBWYkMofD9zRCN0RzBlU3dVQ2hafHxYSGQhUER0VW84RmNYfUpOaitINVZCbz5qJDZx''@;'; put 'put ''JkJgfUgjSTNbI2syVi9vYCZePTpURHY+Q0NLeGYxbGcmcXlCRk49O0l+bDlVVDw2WU47NFdAeCM5OlEhYjkrPVsrNHp0aDJQJTYxd3Y7TXZobkFIVDR3UkNlP2skXX57Vno9YDd4TCZPRSo1YGQkfUF7KSE/anNTISJrR0FHMU1TYnhaVSY7XlBOVT1odkxkSDN2NX1paTNpQ3NeUmxxdjU3amsi''@;'; put 'put ''V301P0tuI3dqbDh2cl1vRHE2M0U7KltZUzlKcG4oJTovNGh9cWRiMjFiU0hMOGZkTW52KmNDfjhNPltiJDYzcU1VImhIJUgiP1VtIVVyW2JyX30xYkRsLDFkKmprTUkkUVlJSGcyXitpSVtYSHVnZTNBSE99NWlMPTMrLChbeUIqSH1iIjVBMlpCY3RLU2N6KC5ZOExAdmRLSWpjeUQyQS48K1FG''@;'; put 'put ''RlpROTMmVmwle1N2VH4pUzB9LzY3Nj96OmVzcCpGeXMjRHgmJCVkR2B1OkRhTGFVfltNbCN1ND5ONVN8cUFwN3A/Iig+Y05yNzdYa0pELmdLVEtqPERxWGxkNHFUSnVed1krdzZOI21QTEBxSFttTF5WZ2UsdWQrInJZT1JaTlNhQDRQYDZKMFYhRi5NclRjRWNZWkdYfVlWMGtjNShMNFlOc2Es''@;'; put 'put ''KmxXfF0lcyksMTIuU2JKQmJbPTlZTzRVMkgxSlYzM31hUzR9NWpkcGRQV089P1s/KHdXU3gqTD5PeW9UIW5ePDR7cjd8dGVTO3EqaTlAO0U6THA7dU1SMzJSazMlanplfWd1bi5vW3N2eVIvNStPQHFrWzZhQ0hfPzdkMDtkfjp5WUJ9Nz9geHZSNUdnMVYzQ0olZE4xJF9pVS9fMGBwUyN0LHUu''@;'; put 'put ''YCEmNiZOezBQOEBuI21CMks+cH5lY1tzdFFBaWRDUFZ3KV9AX0IwSCg8anIoR04pMzpfUismT2pveV5rXVdEUzJTZVAqXWRNXWQ4RnMuP1ZBcnsqVnA2QzN3M2xRUl5YVypYcXA1SikmKkhONFFaZWd3V0JmVzlOaWhuNHQmdjxMeT5+MylKaSI3WiM7YjNWIn4lZ1sxWC9CJkEmQUl6fiM8PTdX''@;'; put 'put ''ZjU2VEYyTERecztZXl8qfClqZFUodWswPkN0VUZhMW9jfj5JWSNOOWRybGhmcm50cHNFM1E4N0gsKURUTEs1RWB8dF9tenUobE9Ua0k/V0xlQkhuIjQvdldQOHUxe1dxRmA6ZDozVHV+JjdWcWlvfjNCSm1EYDEybmwyVnIyOGBHYlZLb0d+ZEBeTncobT1EZWdjQW9rTmdITzZwVGBle0pIfEch''@;'; put 'put ''V2N3dV11e0hVcyNFJlg3YzI6MG09N3k1el4hdXcscVp8N0tnLzZjNkkrQTtLaDNaXVRYQGlaTCpwTFdlPCZBKVRRXnJMNWgpWjpQXVJ0WDJzOV1hPihJOERZSCZkdDNJM0N7NTY2cFUiUipoLmdEb15ocWRNSTV4QWdpW0NvITI8aD9vdHM/blRaMH17SlVFKDwyYmgiUXMrUTksPV5oYld8LDlV''@;'; put 'put ''VCkqNH1MJFhSOWBDXSJYOyVnXlFiczcvVmhWTV1BeiReR1VgR25+cypZY3s9PWxVfS8mc1VvPzxhWlNLUXU1SFEqbXlkXTZlVnxkRDs+XzIrNFZSJC5EKndBWTFhMUJwT0Q8cSZII2ZuQT1YVl5FXj46RXV3MD1sKz1TOyV+Lkc+b3JRSXxoejFreVc9d2d1dF5eeTZLPHApPkJgb2tnNj5kL08r''@;'; put 'put ''R2Y7bWdrMHxXTWxvWCozU3d8VkNvNl0kJDp8Zio5JTk2eDtCU2kqS0N2ZT42ZWJYWCJNVyJCSCh7W3Z0YSQyKUF3LnBJITtDPkQxMz53WkJGTH5MIVNIZi86aV9hJnpvTXgoXSJEeSlmM3FbYHBlcCV+KksyOE9GYGhuYmt0d1MoMD9XOUlNZ19PZ2R2QlBbbT0+b3JITmZDVG18dTskdVpfTltw''@;'; put 'put ''SiVSVDE4al5HNU5aVWdhU11Dc2oyO3dFc0dJQjxFLmJwX3EjN3trTlkkUXBfezNxcn1VYFIqNyJkQmhxNU5NLksyR30oXVcldyt+NTJxZFl2Vn1LRkt4K25QRDA+YHJ9QmRtOyowZ2pAZXU3S3BxMyZkJn5DI3s4M3hjJm0vJGRLNDNjVEhZTilsW2tCS15vSFY9ekl4fXgsQER7dEszKGQiRUdF''@;'; put 'put ''WG1lOCVWMm9HQytAbm5KMjllZ1NMa1tde1dxOENRXypGX3xzQ0g8SDRne2tEQV1ldHZDQU4raW02X2d7JEtOYkRPZ29gLFdDRk9nKWZgekhaMVRMRGRVenA6eF0+XloqdmlSc2ltPFBmXmFCanpbdVZdUFBvKT4rT3JHTVB4e3s7JHp8YnssNjF+WWppdzVzc0RMOHtrZTB7dm04TyxbTCJRX3A4''@;'; put 'put ''e1lvUmB9XVhPS2FQTVI0KVBieDR0d11eTmAkfjxWXlUmRkQjJnhZI0tMPm4xbDN7e3x2VmNvNUp+T1UiVTQlfiVtTTk4KlkyPVoxW2ovLDEpbWU7aiI6ZnBNY2EySkZpbTxfSTJDZV1ie05aOTdFKFgiZWQ4Sjk5KTslTk83I3ZseFpGL2FCLmtHZk52JWU4ZiE9Jkh1IUY2WVRpSGRVKWtVZDou''@;'; put 'put ''bHcsUHA5cWY4UUJXQVBMbVtUIyI1QyJ1YSY5eT9YaTErN2Uzc0V+NGxkWXI/UnlfRlgvNlI4e1MrVkAzKlVgO1s+bTRpNzV4IzBGbk5EKVNyWFJQVE5EMzoqKjYlL1tJYnlEcz5uMSsmOVgpSGpTLyNXZFF9P15jc35IUjZoPntWIytkPF1VcDFaRVlDPWJETC5tQ0lDODo2YjhpY3BjL3Q1YExK''@;'; put 'put ''SmxpMiZpTzVUJiFZZC5jbDMhWXNzekkodnA4fDYoWmc1WklgNV9HPV9+IXV0T3c/cjEwLz8qeF5jKFdFZEs/UnVBeH5jVEUwLCh3NlJiTEo6OjUjSnFyTUdPQHQqMDt4TSIlKjgmNEwxR3IlS2suNTRObUtlYHNULmQ1TC5GPUlOOmJ0KlVbNTxBIn1ZdE8jMHQpVUhkZiVPQkNNb0wlOFtkbTNh''@;'; put 'put ''RzFsYG8lYksrZG0xIz9weXR+eFVrPGZmR2UpT2h+d3cxQDF0fiVwQDVYd3F1cUxzfERNRF92ZlI/Nz1IYWcuNE1pVmlRbU1Te0RrcVRnWjQ3T3g6Nn5eezJ9d01fNC9MSnRdKzY2SHVxZX0+JWUmKmpWO0hNaWxpcFNwdXVqJE1NU1dPZnxeTSNDa25MR0QuayswSUdeaUt1cE9NQzVSNnMzZlJJ''@;'; put 'put ''SzssMEVXfT1Ma3JmMl9XX3d5Z11HWVEpJnEwOiJNKWFwaCh1bSo1TSZdUUI3a25hRUhDNGNQJENPO2g3Yy9eOnJpN0RkaGh7eTA3ZWV0Vm0oaUo2MS5dTkRYdjB2XkUlZyFHbW15Q0ZvWzlXc2VRSFJLRWcvRTRzVD9YfXkid1V3UmMpQlFGTWpLSGAuQSVeIzhGV2BfT3lSVDJESmhtN15aJF8o''@;'; put 'put ''PHBkXjh+YytkRDQrdG8iY2x+RlpaTWRDa1c2aV5xTT5YVUd6Q0V1NlNNWUVCVV0vSyM4REB8eF47IXQ5e2RbdjVjPypRYS4maEU/K1BVa1B1RiV+OEJrZ1habChyTHJabntKdzlSYyJyIURsLmpwLD9DS2ghKHFRViF7YV9gIj45bll6Sk4lOGpmJF1QR2JXNUU6XW5tJD9qUlVmTDIwQmtCL2Jj''@;'; put 'put ''TDY2T2dAUnQ5X2o6aUdjNlNgUlB4VGE9NGZIUV90Pm8udFJlbUw3OiwyMzdNQShFVlFzQ0dPPl0+MzwufkwzMjFeO1dbSVBlXl5+fmpuS2VieUlZOVg4Im5MZn1jTWo3T0x0UElIfTlrJUZUZ20yMnlzeEhrQSlLOnNAa1QqcyEyJmVUMXFtSl81OTJ+V0JSSUAuO00ja09DX1gqJDZiRmB5fF1G''@;'; put 'put ''JWwkdyM5OXxucXQjMUw3Ty42Xml8JFlNVE1EenRZVGwhd0Y7VnRkMilhdVkxKipmNSpJVkViL0RxUkApdUtZbiE1SjBpOGhDOyM8L2VFXlB0ZFB9ZXhybmhzU0Y+UiR7fHpfXlUxfVdhQHdXRWVMQDQ6byYhP0BReFZnISJ9UENNUTMzbkN1KEtCPU1mQzRSY1RfYWVVNXc3L1d4JiZabVVWTCo+''@;'; put 'put ''aFtGOWVgbFF3K2pQOEFXclUjQC9TWCwzSCl+Rl0rJTg8KyRqY0pAfTQuOUV9WlB4KSF+cEV1dXhrOURXOTsvJUsuVT89UjFtfW1XUDNqeDgyTE5iPHZ8NFBiZEBIWXNjaH1uNnlJMUQjTSQ1I3ZkLlI6Z3NdenkwUDFOZFJxMmJQamxIP1ZzR1RYU0deT0pqbyg2aThaLiopTEZAcEMvaWpzKWZT''@;'; put 'put ''SzgrdV19dXg1Qi9PV2UjZDRLWkkwbmUhJFhWV1ZbLiFINkdKQW82aylORVp0ZkhOOHUmbi4/V1ZleW5QSGs0YC5eMSR2S0F1aGV4fkAuW3NKXmdsO0JvdU1XKn1xRDdaUl53Y0ZWeyslU3wjXk45QHE+cU5JfFdecVVnaDZOLHhmXTE4Q2JuaikpIX55PGRRd3VpTz1zQk1LRUpNQjI9dnR2PS97''@;'; put 'put ''TnN9KiFXITpZJEZubl5eZ0U0JktuX2xudVBKIkpETzdnWU4rWkY9cWsjLy5+ZFFIR3diIk4xUmtrdykiXTVyM1peb1FnY1pzUCI1cU9iMGxUSWhjaHJuVkZ9ZTg/YCxBeGN3PG5RP0JgMnMySndvMl1fRUs6fSVuSHlqfSUsbyl0QFBse2V3WipTPjhSbTd6QiZWe0NucFl6WiMhJiFVMXUiV0tv''@;'; put 'put ''Y09eR2F6UXZ3K1s0TjwjUVVSQFdmN1tAcUcuSE1MI2NRWV5HI0RmZHJhbXF5Sk9XVntrSmdHPngjbk1xeSJdYUJRfnR7Ni4qKlJCb007eH0hYn09cX5tcnQ5PC5IdlhpbDM1STNeOmR0czBHIkhjYnhlQkhOdzcrLigsT0JnfiteVV9OUGt6M0FgT259M1dmIUJgR1JfUWRDOHFJYjtZRFI4JiNz''@;'; put 'put ''NnlxcF1tYTBLX3JGOFZ1Z2B3PSg2XWZPaEB+eDN5KkkvQ3g+V3hxdz9pZGVUUSRiMnN7eEp3dzFbNG1ZX3w7UWRNLCgkdCR1NU9jSVNDSGB8SFR+dDIxKEVoVEo/a1peRE1hZko1IWFVdUJlfEkuST4zTDFLe0t0VSJhdnY0SjdCJW9VaWZQfGltYlh2dHNGfkAwNklWPntQMUVPdkdCRkAzSjd7''@;'; put 'put ''VmRuPjs+UT9wLGZwQm87Km5yKjwwWWs1OFdpSEtmcFs6fWlAXVF5ND9VfHBRVllaZn44OysmQFNEWWFiL1FXakJ6OnordWloclk8O0ouIkg6OGB4IzBmcE5YQ1t5ajMxT29TVkEqdSMlRXxNfk15TSY2UT1Na3wyTjYmPzxHJj5aMzkuMHp5VE1tZXZnMHRNYk1jYSJDIW9XSUNxYENII301dzZQ''@;'; put 'put ''S3wqOTA6JnV6djNWTHFzJW1AQGt5R3Q3U35fWkJ4KX1+TlV1KkZXQm8qfSNERikkZkQmenA1N1UlKSNQdExSPERmQCgqOXUjU25JPzxGJDc3fVsuaD5KZy4vIVomX0p6WzBmNm53R1o6MCFKI35qKzxmUV5NQzBPQk0xSCJ+M18/PWJIUzFANThGM0siLHYmbWFRbDAvRWh8WDB9PkczeksuWltY''@;'; put 'put ''KXVTeygiQWdqTlNzQjxYPClpYEAwR0EhTlg0P1RTWEc+Inw0YnpYOFVvPnB3e05UczBrNWdwZ3t4NF0yal5DMj5wUy82R2t6VGxrLyZsfkNNflp+fjFvU0x6NjBtWToqaWw/N2tzImAmPTs1aTIjelVdbEtbKG8pIXF8dGdefiRoc0R3VSIuUGtrXT9FaUlLJF1ebTVvUSo1JnVDZzYxZX1HWT8m''@;'; put 'put ''NStzbVMrPHI4W2NhVzZOXj8+S04xYGVuSH5AdUBELHFnJT5CI0hzKWRRX21pKkFKVzxkIjs5MlswSF92QSN4b3YhcjxEKit9STk4LHVEJDlVQGBDR1NgRT8yV1Mvc31mWVREZm09PyxAY04uZl4hUSNSdGdOJVdTKmNXeSV0WCtuWCxtYT88eSZFfTdPYEB4YigyOztCKVRYYmYxTEF5JEBiSHh2''@;'; put 'put ''IVtTO3dWVmJmfE4maWVNIko0V3NJaiJtdD8kS0FhekJgaHw9PTg/cTpJK3V8amR9VFN5NkR3Nk9yQXMlTEJ7KE5wYy5vOTNuKj9JKEdNLHo+TkgrOFFHaH47MlR7MXpwSn42bikhaE07NGRIQzlfL1hRZX0xcjJMSWgjcUVQWClXc3FiN004YnIxUSMpUElrQW5bPS4xO0ZYfVl2VVFNYyElMig9''@;'; put 'put ''KzIkIW8mXVI2OlgwJT1iVlhUYnxkSTA+aDFiIyIiVnx7YkZwKj9hQVlYYCgvTjRXRFRlc1M9WCUrIlBDNUxDb18qdGAlKkI8cz4rQzEpQHclLG9iYlBiM0xeJjBSYVdhX21dPn1XKngsZWV7QSNPPCI9eSNTWHJmRjUwPzZjOyRkd2NkZihBc2FOVFBOaEREL0svfmMsJmBxRlFyJHF0bkBNMlEv''@;'; put 'put ''TnhVellvaj82XTleZ1M9el0/XXoke2ZFI0hnOlNjb3NJOTEzamMoZjB4Wjl6TFsxSjF7N0NES3JueWlCfCw8eHVYOH18PmZ8LGN5d0UkYU1SLjhZSnlUOj9Fd3hqKW5xTWd+cX5JeiV8bTFud11NQFl6cU4hfWk6UXdNdm1RU34qZl1gflJhVm1sSDwwYls0QikzV2NRcl5vUGZqLFhJYWNVeU1m''@;'; put 'put ''YFFyIlB9ZV1nNUZ+dFZYez8waSs8NCtYbmM0blVRdXJ7NEJXUlk0Z0BiNFtnSk1+YEw6ZWUpclE6W3VBeklAKFFlUDF8WHkzcl1ILylZMmdnL19LMlk+YDVXYSMvOyZVU3B6Vjh6T2V3fCtnfUhvKllXVl4+Z2pmLEFvRWciJm1oOz5CdSRXRFQoSTMxMmJyRlFkO1QvYXttV24scDNlTkZtb3NJ''@;'; put 'put ''dF4jTS9NcTQvMCQ7YFAwTFd3WkhuZiVDQTYjRlNLR3I+P31bPDBpJmZKeThkTmN7OjJMTGAuI059SV4xTDRrdlAxOH09T0J6OWgqbX1qUzE7WUE7QDBFOF1uUHBIX2J+QCQzUi56IjYrKCR0cyMmPW5CMGhaSlFOI0w9LG86QSE8c2BaMXdTbChQV2tDOSQ5dj80JUNjN2BBOk01UysjMlYrPkRQ''@;'; put 'put ''On5gJU00QTQ0TktpTWgjK2dnNW1uamxFJGRrYntOKFNDWCYoY2tbKlcoczEhNyUmVWMoOV8sIXE8YipBMEtnT28+Q3k1aSkySywrbXh1MDk/QFdCZUFEZXhRQEN+OiVtVi4zSTxpVFFZZUpCIXsoOn1nTVA3WTxLTmxsUGZ1LDdOdDZeR0U4PmlqaW9MIilrN3opO1RZNVJNTSE3c2whI0dXWF1W''@;'; put 'put ''JX5jT3l9YnNQIy8oZCtxPVJfKiNqPTRHKmRTOCFnLlYwMUxTOXlYRmpYQjssent2YUYlRmRHaUU6b3g8LCE7N2A7YGtNd3U5UmNKYVBvJTtSN2RSW1BEbnJIZjNEd0puTllkbXsmSiRiYXttU0YqQ0opME8raltqOUY4enhCO2UvMDVUWDVbflFLIms/Z3BkOmV7cSp0a2dMeH1HNVUxK3N0cVtJ''@;'; put 'put ''YSVdQ15OSGE1VV9pSTlpVVlHcC4xR0pKLi5tLmxiU15+UWZXPWJTamZEKXIrPCNXMWIhZUsvcy5JXiNddUR+fGBBRFg5OzEjeSVOYltpIkFjPHltVyxLMnEjLyxJN2I5fFAyQ0RbfTVzbl5DN3lrYCpFclt2eiNtZTpoWDAyT2RmRC81aFkidD5OMWJyWXpKbi5IbT8yXUZDdE5sV2A0e1l0Pz4r''@;'; put 'put ''XyYkNEp1UjhpVGxoe247b19ZenE+M1ZUV1dDK3IqSCwpTWdOeDF5Zlt2bGRab1AodCZORk5XZl1PNWJISDRGTGpEdzNOXXlyPW1ESCo6XkA+fm1VUVs2UFZQbW99Tjh+WzpkI098bHlUa3tTJldFb3RDcjE8VTs8RFBLZGRCQyk5XmZ1Tm9JTFVZNlZzK19fLyRGOUk+dHlJUW5EXSVDOkg5dkM0''@;'; put 'put ''PXlUMytLNn1uYDZYUGpTTlpwNHplZUZCejNTP3FDZGpVdWdEcDtoRk1kVjFdL3JgXzdoQlF7NzYmbWMkR1lDT3FCfEVQMENFWCVlP2ZVLntFKHNOTCtkbEZqKVE7VnMoSG1HQjg2b1tkfDwlXmMzYClsZGsrfmZXZndOKDB8SkBbOi91SnFKLmkmSmgwfCsyL1E/I3d4WyokQ2JtYCk8V1Z0YCJx''@;'; put 'put ''VF4iZ2Q3Z0pIUW9NWF9YXjouU3cybSUldVtlbCk7PFBzfUphfWVVOHBlfGpdUX5oVTRwYSR7fHhvdTU+a3RWezF1SDkmdnl7KzozIW99eEgyKGBnOEssQ0JMOnBQW1IqNWs5VGczSkl6RF9Wd3Z+KikiekZ2elU1XkteQjZMSisjM3h1ZlhrNkQ+JkdZWH4/MyklfEdIQEwvN1F0OVNHTChCcntk''@;'; put 'put ''Z29gJlk7bmdObVdBZGwqLi41QGNkeWFqfTxOdkVYazU3VUJpZVFre0tlSW9STCF2WHhIYUIhV2kwXzR5OWRydTMqMHJXQ0sxP2JMTF9TbGkzSXdafEJvfEk1engzWWVLaldpQ11nSiVWWU51cT5qSTYrPTx8NlNwOk9GRD4/fnhvfWRUYTdCYDt3JVFpJHclOyF7OzMxaGZ4JmNtYX5HbXw0KCN4''@;'; put 'put ''aDZVQXhYVkVwWUU5RDI5Pk1OVlQycmRGSGx3bnM6Kl5yNWQ6QE1qN3lSOXE1WDZhLDFIVDhsS0EuOigwVWZ2ZzV3emxFcTAxVHZxJXx8WmVfIm1ENTMjZnU2WX4vXzFDXyVYcktKT2pKVHpEcFhCNTVPcU5WMCojWWZrV1VRVWpeOnlmMS9JOyFDX217LnZ3eTFsSDUhQDN4UmxdazpGQkIjZltq''@;'; put 'put ''aXhWeC4xd21rJHE+cEVHflkuRCRJJiZyWE5WXzduO21DKEtaWVtuSk9RbU06b0FQLGRVQWlOTmp3OCEqOEYie01Ebl0mL2lLMjYlUCh+ezY8TUcpOX0/Xm19UkNnUmpdUTtId2k3c1Q/U1lCVGkjOlEqNnRlWCwiKVRnNyE7Omg1ajdYLl88TWBmNEBUYEpRaSw1YTtxP0h1RGAmRjpbS0MhWjIq''@;'; put 'put ''Q051Sz4wNmtzcDtrV2NOJTVJU295Q0FyTl5CJExVL3M/bEFCTT8zOk5EdEYmQTltPF4+LiVbbDpEQzB6d0ciKWlUXnU2V2x0aFA1WUhiM1VzRUo9VWtwYWUuQCtfazEpfVB9RlZYQFhzKEV9d3RIbnNYP2NkYiR8W05VJjtkW1kjWiksM3k4Qiw5QGZfcE8pYTx1Zl40dCJBPzlbPWxoYXJqRio6''@;'; put 'put ''SCs6ITtCcT0mZ1Zucj1HTnpiTV80bmlSeE5pT3dxKGB6fWJILHAzeFVdQVBgcjBoSkQkYGt7bklkYnApbGpaS1tPfWA3YWZ8X05waCg4WncyV2lhKVsqL1RxdldJekRlZCQkJVsvTSIvKGdHN2Mrb0U9WS80WXEwVX5QKkw7NUxBaCNjPjssT2Jbb2NsNzBrOkUxb0o8KSNUKFs7OHkpVCV9KnI0''@;'; put 'put ''VmZmW2VIS1orVFREND09YnFiMzp1N2ltcUE6MUVMdkVTOD1mUDg9MT8zcmxWR1YleDZ1RD8uXnZHYSgscHdwPG5WfHlwVEsyMnhAVDErZChEZmA1aDF5Zj1AR1JZdV1CZEBJWVpAezJdX34veUBBPWNmZlszK2BISzU4Pk9edTQlUThqU3ZIeiE/TGlDYX1CWCV6RGYzT3JyNiFfbzRRaWJtVCxi''@;'; put 'put ''R11HNUcoOn0jW1tEa2ZbMFNYMm4lc3x8ZkpnfDVNOHtMS3VNQ29obzA9WSVlR1VsZ3dVeEJjWj1JNzBqOFZbUytvXXxpSmFmNXdhbzVdPyQ7JjVSJD9SQiUpfDIwanduPD8vam1EJHxkIXJFJm9heXNOTGFVMWR7bmRTczFpfjwmOFs+fjpYbEZ8UUw0WEc1a0VuaytVSG43IyZ7bXVufkVpJD04''@;'; put 'put ''N3VCZFNPeyF6SGkkPm9EUUx8Jk8mSEBQLCtXMGsqJHApOFpYUldFbHlFKTk/VXJ1e0NZfFtzV0xhTUEhRk9jZTJ4LHklOUtNRCw7ZjRbImAreVVeJVpMamU4dG5POV06R2src1Z8dmBMTXkxK05rPXg6SiM3JlpdSmhXLmtsQi96XnpJVTo1IlUqJTkua05rXnhITkAhaCEsWjZWZER1Y3UsUntj''@;'; put 'put ''WHRxKXc9OVpkcEt2dEg7dkIufkZJWFJAIk5WLH0mTG88LEB3b1hlNTNXeT47XV9pbEVhWiF0bEw/WXchRmAiLDs8fipGYCkzTUxIdDBrZS4wNFs+fkc8b1dvd1g3amdOISViPEw8N1JOay5NcylrRE1abzVgUD4mei58XS91NCMoVmQvSmxbNEQ/SyVOb01BRCYpP3FDZipwKnRjdypbNzMkcG11''@;'; put 'put ''T2wxJChdXU4lI1N8Z0F8VDMwIkpubldlbVFMaSlCSkRNW2w2OVJ7UiJhVCRFe04uflIvNkwlb25aK11kXzIpPzQ0ajFmWlE8bHpDa0UhREcockpAeHhSRnVZXTB1IWpQPjhyYEZULz5nQmNRXXg2aV9GXXpMbmJLKlJxQks6OHEhRnZVX1RhVlRRNzA+c0JUJldgRlUwZSZDcHI2Qj59RWghYkBT''@;'; put 'put ''K3JHJnkyRSVQRzBFMzdRezQsKVBwdm4xT0dmei58YlsuMmMyd0ZmLEhFWjlEIjs4JE9oKip5P1gvJl91WCl0P2BvWyQkR29GXiUzWD8waT8icX5eSFB9OVM1cDVyOkB6YEFqKXFfMndua2Jyd3pkSlImN35OX0pHPkk0X1k/c0N+KmdON1cxdyo5QjJGdz4oVTk9TEBSeXpYLnh+RX16VVBeYThQ''@;'; put 'put ''ZSwhcGxfQns7QVVJLHk4UF1vPnxqaFAlYGU5VHZZVE0zPWB5XVAmUH1hS2Rwa3wrZWU1Vy92aiVFJn0rODdPRzQiO3JmPXErMj5xVGo9a35tTCsrZmZqUz4raWZAW3NRI1hfI0A2az1vZXdFS3wlQz9WIkNzK3NvYDg4cjhGekQ7T3JMfGVqfGdDUUMicl1Le3JMQl94KClmKTomIUJjVDVgRzJt''@;'; put 'put ''MyhWe1FCVzQmNVIjRl1iSWVrPVV3VXsoWmN8aiFyPHUyeTNMO2ppMXouY0hBNkRJTXE2b3Y3QmlMUE1lUkQ1JXsqRTZUflFfem5nJWtlUzUsOXZCM1FvPDYrKVEjXTUqQG9rVyFgRlZ5bFQ7O3lFNmN0JG5mbkc3dHEsK3ZPRD5pZXQ3OXB2WU58W0gpImIve0coOnBEP2ZjUlE9c05mbklMZyhn''@;'; put 'put ''a20xRVFVem9VWjNhPWBdK0RGTnVTWiJgM3Neem4md0RWSlYmWjBbZ3xOUXlhWm50Y2RgfT8mSjV9SkVDaEk/TXtPXT8+PkpeVmNySFpCJkEmQGRaUWYkdVBXeV5hOTxJcW9mYVluaGF6RjdlImcsWSh3ailQcnZEPztLP2tgL3VBKl1Lay85S1F6O194NlplKGc/Z0haam9pNnwsQTxEVXs+aCQ1''@;'; put 'put ''NmtnP01FdU9SIkMwV2N4S3BxQERpeVEiNlJLYE1XQHw2KjRBJHBaVHQsKHkyfDVkenhDbUAxbSN+RXYhdVVZb0BoJFROMip3S00kO2BWRFVyITdRJmAsNDUjPTJ9USJKcVhyeDZ9bio5eyQhezM9USR9KSJZRFMjTUhwYEc/OF1ZSFsvMDRlM3skWyI1N1hrQEY9S2dgezdZMGBuTy5NamVyZkVv''@;'; put 'put ''d0R0YldXeUshLCJ4WF9Waz0qMENeQip8TTtNRC4pVGpabUMhN0leVk06aT00YEQwQF17RSROKF5oTl9UfFN4KmlYcDFbO05RdF95UkArb3tYVHk8eE9LXy5+NVg8JThDdXZbKWd3cWBoakp2az9meVp9MGA8Wz1TLGBSRmN9I15BI2ZDcigsOSNFK09uWS5JMllHWihqaUJaNyp5YFVRMXFZWU1g''@;'; put 'put ''MGp7XyIlNmVVd2NSKzVyPUUwVV98Z0pKcjBhVFhDZHdVWmUrUW47S2ZhWHl5X3RiM2tXenlLRUlaJXEvdG5wPGxyQHleWW17WDhePVY6RXhIRDhsQCFCbTU1M3tFIXpjOilrMWgsVWolMUddPFB+WU91bWt5OWEkWDllSihIY2lFa3M8In1KS1oxRGhVN0RVZi5HISh5SEVwTjBDVSJUbnJxME9E''@;'; put 'put ''MjArIV1ncTdJeVkwQU5HPzMkeEAsSW1bVl4wVHpNUTIhVzRWMD86JXlyKytTL3RyLmRITysmYF8+eHw/cTdNJnRLUDR8Q19BLEptYnsjLiNucUo3cj9DanFgUUtTL0d8dkcjTFdmNkUyXU9ebkNIN2FPN3I0ZTQmZkxKM3phJXRtPEhLWEdLWS50Png2TFUwbkNOMExFWjgjQipVPTZAOmkzJjtQ''@;'; put 'put ''JjRZJWJkVFVvWyQxP2h0MllVRFBgeUhUT0dtcD9CXWx4RmQ1c0JYPS5VNDEyV3NiWVh7aj5pJVRVaGwmanNkJjh0cD12emlROV9DdF5ycTYvVzZbPjs8Z3k2IiV+TnJdL1ZCKltBdCl3LzNAXjo4O3tQNTZ2MkZWc3FUSiFVO1hbRiIpMzZiJXhxRHt6ZE4lQiRmV3RQamorZDp2b2RjVnQ9ZnBe''@;'; put 'put ''aEdYaCNEeWteTTolcz1UOH56WEtWTXtRK3xbbVozd3BmPiN3fjc6N0B2eHIvV2xNXSx2aEx5alYiSGFrVmhXJnZ1aHsyXTVPQ3clNFIuMClrOUsielg5el1qXlBvV3dWYXU9aWFrYzAyRDNGRzNeJjIhfHEyS0tyQnBMVitJa25mPmJ1bmF1WHxoP0toOnwxM0RJUG0kL1RjKi8rfDR4MFo0PTBD''@;'; put 'put ''aVtlPXFWRkVrVFI/O3Z1M1dNPEsue3x4O0VmUFQ1a3V3Z0AvJDwrPz9IWU0pPmVaLE8pbVlGRU8sKEpDOiJKW1RsRi9sLzlTRCF3MkVoQmRYTjM+U09KKEBvQ3s2JGY8O0FqPGt1b29SOTxeNVYxN21YUXFDJGVuVGI8dFN8WExQMERGM1RrR1d2YDN4ayo9PHMqSzc0JkJicSRqYyozZDk4LkR5''@;'; put 'put ''aGQyOmRESHMxeH5RcDslYWQ2VHAqRTprfGV7XS9RUmczYnMlNk5bW3xOVSQxamlHYDB7KkhpV3Q+N3ZoeyJicTtARHVZbj5WJj5TOTAvZl5bZn5CdyxNUFZzWnVHLHh6SDt3WiRTfFhtN1c1c2hqYT97X0lMSGNbJUojWmNsLyplPjVsV3ZyOkY6X186UnIjNDB5aEdSdWw2Vzp2VzUuOk1kRG5r''@;'; put 'put ''RFlddz1GeztmJShNZmAhL0lZQFcrM2FiISRgbSV1WzxUVk5KYUZmL1Amc3FDcDpFT00kMD9GRFN+UHYsNmpPUzMrZVpUcFMsUFFxMXZzUXc6bEluO148UDAiNEshWz96a1soIl84YWc/amlxdEA/dXAhIzl0cTRwbFJoNVgqQ0R1NENFRzl7PERdKSYqYEllcixIfTpmZmF0Y3NWOFopP3dtYmR1''@;'; put 'put ''ejkvKiRoOW5VdiJVdDRVODF3PVErKktnSmlEdChQP1FfNCJTJjlPeHZXN1dnR1AvMiNbX0lhM0J2S345VWBAfihpNjtnMihkfDlVSmhCSmN3KHdUaWsvS35Iencual9AOGRWTzRnMGZ9NHx3Z18mZH5tT2tOQEF8QE13SDQlaVY1UHU2QVEmIiZzKGQwVmkyYEcuVzhnJmdyWmZ2KCJuPDhNbkVM''@;'; put 'put ''MkQ9NioxN1JhK2BWWjs5YlYvRyZVfXYkamxzP21fZXFgcipzeVlkRnJ9JnwiYGBgJXxLJEM0ay8rdzdqYWtteTlia01hN0lAKDYpbXlqJkdCYSUubkwsQ0RNP3VRV1d4V09IITxxRFExXk4+L11NMnUvKCMiL0w6MmM1P3syXVV+TUwvX2pXeSw5ZDBPNylOOjgvdi8jdT1mWSZDKnJhZGN7ekpQ''@;'; put 'put ''emc4amFGfWFgRlJSSU9IbH04ZlEsdypAKj4rYnxSaC4udEJ7QkQ8XnluajVhaSJjP314cjguYzQoe2hjWH07TTZ4RChlb0VLVV8xZU1ZYWVwdkgpIlB6eylYQzdVcXZFVzowKjZILFJYZXAmN0hTXTIsdzsoXU9vckAuZkhNPFsoOSswQF4wPF5GaEtIZ344ITQ+Qyg+KW1NU3hDUWJMeFE3S3sh''@;'; put 'put ''WHhEWyFCdSlTKHJ8dUZvPWgwSyg0ejZpOnVRRkl0I1ApSnlgdXk7IlRFYkYjN2JuP0A+aFVAd2x2TD5iWyRWSEB1U0pDeVl5NktqIVNGcDJiTSlXTTp4T1pZVDZRYDAraXQ8OCM0NzlXOFU1ZStuMWE8dnRQKlRALDcyK3AxUSxyXiI0bGU3YDcwQDx9akdoe1lsX3x4JFF8WEBeKmY3eHdZez1u''@;'; put 'put ''N0J7YkZEMitPUnBTOjJJeVYqfSZHUS95JiReIWdEI3pPRGZaNkdtUUJHNUZSeks3MSRYens2KURPOntRe3J2PVpVNHx8NTo9WmxJRmVJWUpqbmx6JTZTcCVrOCZ2c3J9YGxucWYxa2VhTyZ7cFBTfkN+SHVeJVY0NmFxSS53IW9Gb34/YjJGWU81dFt3ITBpfV5TWFgzcyhTdTJyeFF1VnozQj19''@;'; put 'put ''LGxuVlUsM1gja1RecHtqTj8sdH5oRW1yZml3bSE6InpwcWBpSzNsRlFtRm41MkJ2NUJ5PXc5RnJQUl9pRXM+fUlgcWcrbip1aEhmKihFOmFma2lCei9Yc1U+LkZKdWQzUVppdWJuTTVSKURhcTdYYTxVRkJDYSs9aWZCISM4WlNDIzNHQWRGZVt5TC9eTT0jaGh1Mz5GXXg+I0grYi9AWjYkbSxR''@;'; put 'put ''Klt2ampackhwS3Q1fVYhW3tndXwpU0tPVmlOKCtCTTpHV3VeVV1fOWdmS05BVnQiLj5hUkxGbXtPfnZeMl44P0UpRyk0OnNdbm86eV1zX2dNP259InVfdEVYblAvQkhKXnFrRiE5b2xGUWgyViUleGZmLjV9JUtnd2lVO29abGs0dHFrLntNKXc/Z2AlMSxIUixRaFtPKGo7aGU/U2RpMERYKHZ6''@;'; put 'put ''NWdVflEkcElOOVZ3Y2ZGWDNwc31MQEJwc1RZMVYud0BWcCNZSStbSSMoPE9nNTEocH19NnBaMXcobj96LHo1KE9uKFIqRFFqcyZdKWRgUlZDJUdDQ01sfkE4bE4qZ29OR10oY3Q9aV8zNm9eKjd9RXhreXosQlR1QkY0bG5tNCElMnljOEdtQ0V+dnFabH57XlpvaFA2KCJJLDduOkg6fmFNNnMv''@;'; put 'put ''Zm5WL0kocXU8aDhOOjZ9b1o3WkFbaSljNn0pV14kJnpxV00uUyR0RlVSZF0veFE/fmArYGFoTkxaRG52NGs+TWt0bXRXIVRnRXo/X1IwSlFoZ3glXm9OMnZ6MC5gNjJCJDtdV0Uje35wMllqTFJxR3VTYmooTU9gVC5UVERxblFINS8/M2I4Jjx9OTwkSiosMypOKj8/JUo4MFVBIT1ecSwlSFBi''@;'; put 'put ''Yko9fDhJOjpgZFNARkYyZGBDJixPKGJVRGptbEcueyJualNbbGI6OlRoWD9NfU0/Sm5odyY0YCt7ak9tKCpNfnZINyVQbjRVJTRTc1UiNyUvS2tDemp6Wjw7XU95b0MxT0htW1QxOSssYXl3eURDLDNbezZUVilvKnF3KX1Jfit3QTVrSlAqUU1GYzF6OCJ8YTVJIXhpK0BNczRbZGpkcSNtVHdz''@;'; put 'put ''RHkuaTJTKFc0enliPEc1N2E6TTB7VEBWbWx+N24rTGU7bF96VC5MNnl6dHl8WCF+PTUkcXw3Q0I9VGMhImdSe0M2NyhGIU1lc3kuaC5TV2FNNkRueGxIKWMmYGU0QipKVmpSKFMmTjY+WWc4IXZpLFhpSzgzb0sqR1M8MDp7Z0taXUdGZWBodGZIPE9wLyI0UHlXKnglSy86JFRoSVBbQGE2YjxQ''@;'; put 'put ''OEMwVH0kTGwpPiZiP2dMWDA6WU0iOUNLQHUrN01tc08wRiVmczM3Olg/ODN0V3ZuWk1DQ0pVQ0NtTUxfMlcoUmwwLkJiLD8/eCIyMVZ6SXpYc0oxPHRKUDkqbU5aTCo4UXkhMXo+PSwiUE9LRz82TldsPXhsWEc2dlh0fm99K0JHLERYe2Q7SmYzUklpN24yfXlAM0hFfHVLPFd6IWAuejp2JHxK''@;'; put 'put ''bHlgMUQ3QnRnU0pvajAkZ31bMD9+TkJzNlJFN35CMHx3flc9aGN4Kj9xNjFnSl5pIWBbMTN2Tj1AUSFKRmA1MTkudk1DVT4zYD5eP3VFbnFILl5RQSIkZ35dWnB0KlJVTlcpfGBQVWs2PXlhNFBkREsrNTddMyU1KENZenc7RkN8QEZ+Yys3RTdGejkuPjxxYXs3IlhzX31fayUkcWRIOm87Tmpx''@;'; put 'put ''VXR3LCt9fmt2Kk1ddlpZTW1LYCUyPUAoKk12WDxSeUtrbF9DVkMwVkAzJmRIajxQOyl1K0RsfC47SVppMUBTZD91RVguNUBSJkMobV9Wekw5MEIlb3F3LkA7RkQrKCZKTTxMVCxsLkR1W3dVczdHJXx4XXVxYytUU0VtUD1DNFcjcmp6KklhR3wsPlp4KUBRY05QVU94PlY9ayFtfSxfXUReaFlt''@;'; put 'put ''VlRTR2gsd3lvJm5CdkBePE0iPlZYQFYycnBBR103TTJpYyJXbnU4fE0lRD10LCVrUTFSIWNNM0tlSH5OeU8hbiUwVEsqdWtEUVFWdHUqTlEqS2FUfVl2QFQxTFtleyo3RTthJCQ7LmR9TSk/aTYhb1s8cnEvV3hJVmJQO1BseDF1fEUqN1VJPlBEfEpnJn5hMmF4IWopZW91eTdNXzopeGBwdWY9''@;'; put 'put ''Q0JqIUpUeEoxaGRab287IUl+TF5edWA5cGFMP3F8WmhITT0ien1lMU92TFslPEgpNjFOKG0uJmBlRF5HelgkY2hFXzdta10rJi8rMHtpZnB5T3NJSWhjJGY9dTxlfkc/YWdDTW9NTGdGIVU2cylgY1BNMGpRZUJrOUNTSGFiYlckdyQzUVskSHIrK35kOWtFc3lNLCJRKip+Rn52Vld6dSpMclo1''@;'; put 'put ''NXNFPy9MczZlSj5fYz57ZGQ3ZS9wVmtqP2dgdEl2WU9XblddOlV9WXtmSHMuSX1LJTxgTjZdQGJPKHVnZTtxIUw4VjpsfjtIYClfIUpLaHBzOmZoRXJua3k2MH5BUlp7IVlYUTFQbFJUKTE2cmdNK31LKDVANlN5eFY1XXhUVXxESnE+Ry9iaWpSIlMjY2gxbnJ5M1pUKntQIzA/L307Jm1qKD1z''@;'; put 'put ''fGY7cndpW0wjOUF6MHgxWmI+Oypzfml5LDxoUktFT0BjNz9fTSNJTCU6e2R1eV1jdGxEPnhLbGNXZUoyVW9CNWBVTVdZM1JWOlJfLnFsTFBGfiVkcS9DNVgxTmJXO0FeRGZKMUlFbHc4YUxaYDA7TSRHVnk/PjVBP3xRPkU/RSZ6ZDspJC5XRCM1Pjk0UFE0WitRRGpkcktxPGtnVl47fF4qPWkj''@;'; put 'put ''d2FbQGplJTxqMUBnJnt1czcoQW94Ri5IUVRtY3twO3BqMzRjWUghKShlUit5cXJ0SjBbWmplVmZzYyU0TiUhKDgjSUduQ25tVzZ3KXxqZXQual9WZlhyV2lDS0wweEAwfGFEbX4yMlh0UUxjIiFBVDo2SVNTXV5TdmtZRUI2IW1SU3x4b3YleUxZPFdaaEtNWzZwc2F4WyZkKDJnMHImNTdUNjxy''@;'; put 'put ''dWAlK08kQHdgRSxYRCNldERyW01RdDVoO3dzI084RX4mUDVVe1dqaEdtOjtIMCJkIyxOQ1hzPkZ3ejsxZms5RCp5XmFTUWpFNFIjPTI+LyVKOm8+fTQmXmJsYXpLc2xDWjxVYDliaVNtP3tCeE5ELkFFUDIoW141WDBQVDMwdGwmOUIzYGtgblo9RHRsd2htNXAyeXVVMkU2NVdoNiQvWShhISkq''@;'; put 'put ''X3g4WEQoRmpEYlFPO29AfW9BWm8raSE0aStsKStJUjZxL2p2OTpCT3RaI080SCY7S3Y6Pjw+TkZ5Nlh9P0xqIywhcXAqPE15VWAjIX5CJWZVa3xYT0pAJSlPTV1ycFAuYTFZeDImRTdZST9FM1JCWm83fVR0aCVnRzlRREpmK2VOQl49fm8hT2VneUdkQSgrVXdgWjkvR0xWYkZgVWNWSSRsSihk''@;'; put 'put ''UDxEZFk0RnxjPHdtVk9XR1gwNTRJLCQwVWFmbXgrSCt9WUx3NTY/WVt7cnBCOChDVmhpTWN+LjpqQmpMWCo0ZkYiQGV0P3FeYD5XbF9Hb15Ma0wmQ11FenNsYDJeNnYxaD0rYHQ8JHNCYGx9XylYRTdfIjIyfFd+PkpifFVXQFQ2VyZ1bmg3JDE9bF44XWpSeS9IKFFTLCplNytXSnZuQjtpVmdP''@;'; put 'put ''NTV7aGBvK1YuTnZyaltXfGNzd1c8UTokXjM7T0VCUXNfZ09Ldk1wN04qQ3NYMFVbfWY+cXYlPSMzRlJvWExxMitwZWpHQykpMWxlNntMfitTKSJDYlY+TmszbV8vNyxLOzFPKkRDQ3hKIjp+el1rNW9CWFlsZGBXW3hGZTciNyVyUy46N3UmVS84LHEueUw4QVJ1b3R1Z2lPW1A3NGw/djBZLiM/''@;'; put 'put ''Ji4xdGE2PUpRO0w+aXFsd2pqbFo9cF06IyQvfWE0Pj9FSjZTfHskU356TGhpTD9oTmM/cyI3flB6Sj9QfWltQ09yeGEuYHUvdCklTTQ1cnt4OGRKZU9VdntbOzhALjFnfG9FLm0ycjY2NUBhV0JEfH1VVH1ET0VjbSJSSS9lKmtZbiFHV0R2IW9qP05TMkU5I3hdalE8PXRyPnleYU5wP0daLD0s''@;'; put 'put ''cTB8RGp3Olg9RWx0OzZBQkNEeHs/K30ueGMpPDg6Y3ZwJiRIKW9eLiw2XkRIb297fmQ2TmFvdTYhLHVvZ1tqJFtpOUVybTZaXUVnSzNHU0V7VnhmYzAvQHVna3RzezEzYHVFczVATU1xKkFFbVMjJVlxQjc6V2dFWDIhazdNKWtpNzlhQFJteHhAS2oyfjJEZ29IbSw7cyhXbkV3Vmh6bXRDYS5q''@;'; put 'put ''fEl4US5TJVg9Q242UVtgPGg2TltiRnNEQTpgc21TcElnMW5Cb0Bed1d4Nm9aeWVuP3c8ZSN7YU8+ImtlPCtReGdKISVYJFc4bWJCQ0Qla0JVTFRqSG97Q0JEZkErI3Q+JFZpaGFLZXVifUlRXSJvWTJUWFEpZDI3PFR2bmBBQ2UkQUxUU2VOJShMZD8wK1U8Z0RXRSswRHh2OlBZPDopI3QrWXhm''@;'; put 'put ''dXZlPH50Z2xmV2pIfT9bTnReanU7cjM1WFp2fCpILEVwVSV3M0hGVl9iUU14eEw+IUZ6Kj45S09mVXhqLk1Gd3AvNEBBVD5ySWwsIyNrZ088IT9uQnBYLihYSmIySUlQcUJ+aHlVR3UjbDUmaWEvcVM5WFdRZkxlODgxdXVrYyxFOEdAJWB4JXlYR0h5b1hlbFFePFVucldQeWp3UENEKGxfL3h3''@;'; put 'put ''JjRsLjRRUDxfays4aTVER34mSDxoTHZ6JHI6MmFafTtDYVRFbEUqdjV0ezp6SmQlUyRkfFlVJDhLTUJ+TVV2bFB8a0MpRj1MXTZXSF1nVE5Ra18yOm81RFN4NDx+blJlQGQ3JT88T0p1dnxCIUope3s8MH4jQiFANk52dncuOmtnd25bYVtTMy92bSwhYWduNSpweGorMFM4dz4oPGZwZ2pCeFtq''@;'; put 'put ''VmV2ajJPKHJUSl4+cS5fcEZxRVheKEI7V25ONUkhVnRIcD1yZzI9TX5BQzt0XyQoWVBoR3M8ditjKUgjZ05Pey5FcilEIUt0fF8sL1RhSnkyT3s+R3UzKG56YFNqQVB7M0dAfml6aDpgYVEmJWBbOm1rZ0pQMS83SnJDaTxYL3dQdlteIVRwOVlzeXcudSIlailEVldbKGdtW0RWdEkkQnd9VyN2''@;'; put 'put ''VUJWd2I8VSNGIUBHTGdMb2hncTUoe0ZJLkpVVD5YNHUsMUVQNyVkezVRYU05bno1eTgkeSssZDdDfXZwaEkheGpRU3VqInI/Sms7bS9xbypMIVZ+JVpgRko/cTk9M1k/YUcsTEs3MkZ9XlF4Q1RZMWw+clZBU1BrXX1vdmlmJDE0d3ZuLlNAU2dWYnldZypqZ2xVQTpBYFdpRTdnOzswTUtLJGBG''@;'; put 'put ''LkszaUx4Wmk4bVgpKUg3ZXlANTVea1duTkI5LHIsMVZQXlRfVnNgY2EjU1cxMHY0PEZIVWc6Wit7UThnKn5BSWtUJDhYZSxEe2pBYkN1V0BWJnRjWHFwYVQ1OHR8OklOTXVIUiR8WUhQSThbalomOiJUJCE5R0FWJklDb0lzcG0uNC9UUFh4R0x3WkJwXW0vd01qMFRhcig9N3tPfV4hTDg+cV9s''@;'; put 'put ''MTZ5SD9+N04+X3Q2X2kvOSNydzgjPm4sXVZyRSRLJmk2Y0RyUFh6KE5lOzsmMTJZIj1pSjRTeHFNQjhEOUBeZCN2Yzd+YCtQJSgvaXhGYmBHMCl5V1A4Xkl8LDIxMSFYI1M+WU9Ld1FvVl40c08jO3xJPWpRe0U5TEJxXSNbTnVBTVRgNkZZKFloUzxkW2cjSSQ5YCt4dmg4MixKNW5lMmpkaSo0''@;'; put 'put ''YjR1T3N6NmZNVDlYbjRbKU0+U3lMJnN1aCRvKHFQREYxSE1IdE4jVzF1dDBXdWVtSkJMMX4rNVl2UWFbLFksMzg7UlNAfU5PZGVDV3UoK0UsX2k7QzdEOXQ3SFtPO1FQMj19fTwyU1dNe212YX1FYV9jX0U2Z3IoVkYvZzl+YXlFdmY2cH0wRCYwQCVfUkhxJkYsIUB7eSZdL3ZsbCE8SEtSNVhg''@;'; put 'put ''emY8QUhaK2wwOzJLOTdyMCNfLHtAYFdUbUNvaig6UXRNWFJAcVpnbW93P04wMEBuRS90KFZGcSQyTGZgJWdwPj9ZXjFbWnEqWVhKVzkkXk5jJiVYdltseT1sUCEiJTcvPzNULlBgWXQ7dGY1dSYsPz0/dUN8ZlNjVFV7byFeJEFObXxIMFMsZndRUUE2USxtM2hCfUNTKyhQNjN9P0N6JSNaclRe''@;'; put 'put ''YCxXTSRUWlUjfXVnSi5VYURpZ01ScEdTezBLYT1TTWYxMzxMdU4meXoqcCtITnFxJF9bekg1KCw4RHEjfkA+dDoxckIlLDBVRDVgfWpiSzteeURPbUxLZTxgSV5zMXVXOlkuNk8+ZzcvW0BLUSEqamd9XWlLIW5nTnQzMmxfNncmenVvXWRZOHxefCQycl9LTnx8S049QlVJTkl3cm9rcVtrYyts''@;'; put 'put ''STgjX2NXVkVxSyReZG0zTGl7SS85VSsvOXVrS345SHQqRDN4YmVEcyRmQT4qPTU4eTRMWUI/OlE8Wm5GL31HV3czc3UydT4mRDN8YFJaWk5mbGJCRV45ZFZhNyJYZGF7PnZTaSFnQjY8fShdOXozY1JNPmw0eCZgSipySypjO1BMPVV3YTBuayNPejFmOFFvNFMxQDNMd0F4QyRbR2doXmtnVjxb''@;'; put 'put ''b15kLnBnaGE1TVhHaVkqZHYqUGtrQ10mcmZgQkx6NTJIdHtBQkt5aHxoS2BiTDldKzVPWys0RC9yaSskRCh1W0NOIT07MVRON0lRblZOVkI9dFJKUjhwWXc3Ql59UVolZHk1M2ZGbVUzNSx0WlltMGRRN108a0BoT1pYRTlFaiNEVGlmUzoxNCpoRUpnRXJmeW85KCE3NSU5a0J+W0Vdbio+cjw5''@;'; put 'put ''XmJ3YHYhPjdNTFAkVUk5P3IxLDdmcjNTa2MjdU9bJS5BNXQkV1dQZ3ZjQXZkfWI8USlkYmR4UXV4cHwiYkwrWkVpcEc4dkopMipwIil8YUhIIkQpNiE9R29CaCxIKT1BaSMjemFLRF5XJjFLL2AxYlY1SWkjN1lsOzIoYXJmdCY+TUwyX34vbXMrbjYpbDkqP08lOUprSnh9LnVwfXVXTkBdKVsp''@;'; put 'put ''VFU9QV1jeiNUWTNuJFFeblouczh6UDo1UkwuSVlwWVE0ejIwYWQ+K2ZTcWtoTCozI3E5dmEyXkp8K0FNLl18RkBDa3VBRnEsNi8wP2hIKm4iS1JfdlE6QDw5QTtMTCYhPU58TkI+anZGRGQ0fVNKWTh7SGkzV242KDlyMUZHMzlrO2Z9dzRgY2FFLEF8TClNTCtUdkByfDNha1NIKFR5TGErQkRI''@;'; put 'put ''MjZpfHwrOkF1LiVGTS8va3I9b35GIVtjSGx2XV51TUA7dUpHVHduRE9LamZaWVBjOnApcyFkPTh9PTlfIV08XjtHYXh7dDdkbSQjLGkpXjpDKXBUW35VOj86M19+TGQxa3FkPlhMdT1wKF1JPn0jZE5jKFl6ZF1GIXYuPEM7YEZBe1M2dm5Va1IvZTIzM1lIUFtvUkAiUGU+ezFRYzldK1BJUnFF''@;'; put 'put ''UUYwQ318VTJ5blN7aS5JKDZHS252VWc6Zi5ofEFSU0tOJHVidnR0XSttWWpXTiI1SEZQdWZXRUFnMjQ/P0YrSTFSfmdOUnNSSj8pfG5ffFEzX1dfMXEjMHYxJGl0MmpCIUlDIitsRWtjX29MWV8oKXJId2xASEFIK2U1bixnaFspa34uTUBGYDYyZTVqMy5ffmQ0VDd9S34ud15HcTpiUGwpS1J3''@;'; put 'put ''L3owM1ZmYC5jbCxoT3g4RyRmKnsxYWRlP2tjMX0zfnQvXUZPbnliWyQvfUxuYXtpTj4rfmpzZ1kjTmcrN1RZKERka3gyY2pMNk8oKHFfMEZfMHRmR2g0RSZ6JEVlSHoqbEAlQnVLVClBYilrQ0skKVM3Sl5KZkQzM3VzRSlxfUFHe1JpYG9pcl9HQjVvdkpxYG82TjsqKEMhR3FlckAwVVppPk1+''@;'; put 'put ''OFNAXi8wTVJQbVtoV0dzOUZ1VURKLHpRZXVmZDZUeWxrSThuL2poI3B2YCpMMkxLZ0BpLmB1SzpWJXs8Q1R2JippLkVYSE5ea0kzX298fX5mfWddTjZVO35Xe1o4NiY2UTxeRSYzaSEvOnghL3FyOl0wVC89T0Y9QSZrYmNGNylFQ2V2fXo8YWlJYUJoa2tUPEpMUHFKdXxIcWA3KVZFTVUhR15g''@;'; put 'put ''bThuL1dFTXIsIig6QyMkeTFzODVxdEBxOjAyeHhQOlpzPExuLjArOTFoY0x2OklhZmQvPDZoVWdIb1RtVWBIdkk3VkF6N2JKKGZOWV0jU0EwMSt+QSpdZjZia15QIXBKdFowTiVdP1lRNyV1eDNiUDh4JU5aX3JaKSxgNGg+QGA0Wyk7SXJLVUI6R1RmenQkb34+WyZmJGFtIms4fmh0N3xdP0VS''@;'; put 'put ''fGhHQUNBdTt3aT9LVz4xNCQwSjxHP1NOSUdpJilna2ptMipmVzM1LG40JStJLH5eV3lUPmMhKHw2K15BK3UpMCRWL25fcVliWy9DUSVgO1p5XkY4ay4pekYlcjhyMTlufSYlaTVlIip7MSxfcHg1dzEqcHRUIXA7WEN0WXRhZy9wTz5sYWF+eWs9ZlRKPF5FcWMkSExWe0VoXjZpc1U2K01ATzlg''@;'; put 'put ''T21gW0hsT25fWFo2OyVoWn1FNUVbT0ByXlUucHReWGg7JnBgcX4vdnZxXT4wSz9GKzEyY3NiNCsldjQ6aUIpNipXQH05b3xEXX0oY1tITnA7NXlwZSRCbTx8K1ZjaCRqVmZAVDwvL15XKlRWV3opIWFRNmQ1cVo2Pnw6cVE3VlNCNHY0Yjg/X0tgRiU0KWV+Ti80ZksvSlRvYT5qQGxobk8layFS''@;'; put 'put ''SFkxMTYhdUVwJGcoZigwJUFYIlk9ckRzV3BAI2JNdzxVcG1Ael5HMiFYMGVbRF94T1J2Znp+bTpnY2UzWFRuKV9tTTY7InAvMWtOYD03UkZ9JmEqZT82QnVzXXlQd0FCWSZpRmpFWDQubjwuQ1UqWlI4KmJ0SmhZckhicExDT1JTUUgkPnJOPDtIdlB+RmdxS0JdMzhCL0RCRjpSfj0yR1d2KVpu''@;'; put 'put ''JmQ1ajl9Pi9PWlFlW2JTK3ZBR3lLbCNfekxpO1BWOytJXnpQUmQuMVtWYnpmNWJlPDBGfj9US3NzLkBuT0wvSDd5NU94cHwwdXwoaCpEP0dfdjZUJFBOZ1Q1dFReaj8rUiI/ZjMjRC5vR3d7OjMsK2N3L0E2LiNZaGRCW2lYelAxUWw1S2VzNENTMHdjKWZZSXU9Sl10OEp1NzB+aShfSHlBZFc1''@;'; put 'put ''cG87ZjN1Im8qMkQ7IjtnaFt0ayhOamIjbXFJV3wkYUxNNF42YWdlNGE4VDFfIWdqV2JgT0NvcG5taDErcXZ7OUE3VE9ETVV4M2B2Wn5JemJoRUF2PjdQayQ0eVRCaW9SJEhWQ3dJPX4obyMoQkl+cFBnOiQ9ZV8jXUlvIW8sYE1QPmYmdXU1MkNFdGYsJm1MLGt5I0gpYzx8KHs6TkNpSm81Ti8r''@;'; put 'put ''XWtFfixWaUh0XmVVVF5dQjRjQnp6SjR1QkV9Jn0vZzwwYXFvRixkYWRjMllscy4rKTtAfkxzbihuI0xWVGYxJHtedXxmVllMUG11fGovVDVaeG5hOD9DRG8wPTkxTVM3cnE9fFt0MTkwUSQyZ1tTajZWeysjX0F6WzspYXZETWk8N2ltcT5INW1BViVIOmF5I0QlMTZkTXh1RUdkNzt+VyZ6L0Ui''@;'; put 'put ''I2tSMlcrNW47a0dsTChwJi43cndAJTZYXj5zbDRvZW4zfV1NcnNoPURZT1pMYDF2VzN1fk1HWUBVbXkzYEE5JHk4YUMvaitsPVRTdyV6aW4vRShMc0NOdTBQUD83XWooSkl6JHlYdyZCfSReKlYoYTBvWFtVXVUhMkxNTGJaL1M+RVJXZDROKDUwSWtaUWh1Kj40bGE7WDpkUHNaWlFhIUUuXUso''@;'; put 'put ''V2Nacll4fUhzRUBwSGAzQmxvP3NSUmVpalA3PHRjLltjPyUiYF5lZ1F0N2lwNlhWWFcoQF8iZlVeIWA/WUloKVU0WzVLT0E2ejpGblJ0IXF2fnJCIWxRY1EuVy5GMERQXjFId1NyJEUpV1ZkPHIyOil6NmxvQ218XSJlMm9WXitNNGQkcU57QD9TYixgU1IxXTRsNElabEBVcSplRzBfcCJ6bmFZ''@;'; put 'put ''SnBWaXZsZHxZaXpLIzF8fEleQDJ1TztwZWdDLG0jVytqL3pLaixPSFhQPW4+YCNyayF9NDc/eXkmeyJzQG9WaTlhd1hiJigmQj0pRXk0cV9BYWc+WERVOzJeUlJ3YittNGR5OGYoZlg5Uzl6IS4qL25MS0VAYmBeNm92NU9zTlg6VnNtWHVpKF1vRDpZSm52WkEpbVl0N3BXayp3ImxrdFd4Ll9T''@;'; put 'put ''cUB6Nls8K2IhMzJOd1lUOWBrQ2lBXjA8a1teLG1mTTFYe2pWdm55cz1xZ3pHKyJbbCt7Yk5aNHk8PEJhcENLfX0jNEdeNyYudVk0M2Neajo9VzxGSUJqeShhZVJgQj9VdCkxcmIwQCxlVSpHJlRjIm17fnVyVHxDXjl9Q2Q9P3dRcnFyUiMlWVQ4c1IwdEJ3c3skfTFZTUt1LnE9OD5NUSQhMSMs''@;'; put 'put ''KTxlQSpEVl95ZDFvMHUrTEE7cExxZFFOMUhAWzBkcWIiaD1Rc2shJSM3dmVtQEAjPH55SUx6V25CQ2wqcGlkKyhwW3NAIm43Uy9FTiF3fVkkSSpWO2l7Oj1mcHQ/emtIWHBOTiUheWZTWXFEVmtTI3BvIU0+JlNBcyEpMGZvZkdIXnJSW3kud0tSaVlHPnpzWGBVOkwoOkMrTmpRXmRTZHwhfTVB''@;'; put 'put ''Sjk4S1UkQWV6ZEJbT2goKllSU2NFRThZNUZSRDlFeD4pR0s5R2pDOjRFJHVgSCpman02NGgqSTBjMGUuInpzUFt6Mjd7P3V7KmNFIyt0e31JOT0rLF5weCtURHx4UHNjZXc3Lk9FPj1DX2RxZSQic2koW2hSdjR1RSlfJX4ub1JNeHZKZWlWY2M3W2lST30qTmlTXypVR0U4PURnYUdKcHJOc1lG''@;'; put 'put ''Q316eWF2czIwRCxBdlNVMnRBblhrI3U2NSozM1E4Z0VCTDVISz9IcXF4I0pRRUpJNz1xQHcuKU5Aey8+RCokN19uZFd+bXdlIXBUTl04eyJOelcxeyx0LjxwVjpIPCY1ZW9FXkYoYk9FK3opZ281MiFpVW9vIWVLfnsqalJHZCsmRHtLay5+dlRDM3JwZWhbezRJdTtndiYsZ09dPFZmbDh2NHxN''@;'; put 'put ''OEZVXXlYUSkuY2tBOD8qM0IhQktKd0hsc3hbX2I6TSR0Oz8uJFlGTHd4QEA1eH1veFghcmFIe0FUS1csVnYmXWxNP1deYVJ4UWBtLjBRKXc9YUBNPTh9YmBdVVVuNSFabTNLNjdGYj8zY34iUVg7Km89RiFLP0lBQE5eZyRXIyg0TzhZdzUsYStNOCRgW2xlTXh9UzM5d3JoYishKXN4aE0rQDZR''@;'; put 'put ''MjssSV5gQ1VhZldpWFJwRmV5Tnc0ZHtOSFRyTH5XV09kXmlULFVhXUhyNGlRd1AyVTt3MCNXIzVweVhgPDRwYGFFIyg0fD1HZksrMVN8SCpCTUlzKmVJfkM2T0FAbDV1JnY6KDFNaTpyaEsyVWsmI1lxemljYnBDJlJqLFFsaj1dZGZFXX06THw2UEx7VltARy5Be11RRnJlTSE3cmFqaGN8Rioj''@;'; put 'put ''S0ZjTD00dVkrSHdTWVB0fSNxbTZaNmUwRCFhZGVCQlt1fXlvTHtTJTk6T1lsKF9wJD9UOFFjJCxLNzR0QE1iOD41ZV4+O0QwO0dPTnxOanEmayhhU3MjOkVAPDR2cnllMm9MOE1mNlNoWWRoSSI8IT1tIThrdDQxMl8wMkc3IlpaNmY3ZXk/M3tdb1ksJG9tRnwzMWY0OCZCRkVZNjhNcUJoY111''@;'; put 'put ''PyI/SFchQExFQjI7fEkvclBLei5De1olUGt+YnV5OHVJVktIKDlPKGF4eypvUnl+WD9+QC5SIT1VV3wlaj0rfSMqNjp3MDgjV2pNLDhONnxZbnM9UTk0Zi8/cjx2fklAeTxAMDMpSTR9MEddaS5MQyluNDExK1VFSEh0aCJiejkoL0kuV1dJISNrUUApPnRmaC97Oko5TiEzc3pkP1JydHpjelJa''@;'; put 'put ''VmtoZExKImM7em90PzNhPzh3JExBYi83eXVoMUVYdGNyI0Z3PHt5LChXZDVQPWJ6P2hlQFNgbSN4czFAZldPfm49YDtDcDZOQFlJM1YqN1Rbe3xWdX1LUzM1LFQ4I349OjRsTFd1JVIyN1ZTe3YwTmBoWFdtIkxUQy5LNyFxY3IwcDBxMHF4Knx0UWw6ckxoPkt+YT1tMURqIVRqP1BZZ3o0fTV7''@;'; put 'put ''Szx6S1hDRWg6MV1tTDhXU0FkRT1YWCRWaVQlIzI8O0lURlBwbEdAKThqIkkwSmVCTHloOEAqU0YhPEg6N2B0MFFDSVJ8RX1sXUZ4VExsVWhfbCJDUjJUeVklSnMjUGwwQSV3PFt7JTYjW34oa1hFZzdNIVF4cmJdYys9OT9hbXw5TTksfkJkUDpZJUxmNCVoQF8oN2dfT3JQUTpyIzZsUWM9XjhQ''@;'; put 'put ''M1lTN0BrcU80UEUrdXg0RmtxRXt0fXxyYiR2L0g/RHghNWhdSSQvU1dURDNYQCV7IywyOVs6aHgzczlJZWw/WGw6U1gwZ0lEQiNjU0FVL1klaTd4aS8oL3xpIkRne3w0ZyVsXStNK3pWYGdbcUtWfjBVQj57V0ZzKTgkOFJ9fSIudmhpPUU0ZH4qb0BGfGVDZDVqb0lpNk0xfExdbmluO3twfDx6''@;'; put 'put ''JlRPdTVta05WM0AqX09+aWRzKXMxSlVtbzwlRml2WTlfcHN6RSM9SUJTPHl1ZSZdVUIyRVlJQUllM3NpWlVINEc/XnE0aU90e0RkLiJBM2soejR4XV0pIjwkdD5DYVZpWEFCVnxXejk1YTh9czRLdDp2ZWghWlQ/S2RTZy5MIVBfMSpSTFErJklIZElJSDA8WmQpP1FxfVJFcld0OmQ/M3JnN04x''@;'; put 'put ''MXl8YiRjek4qUVRvQDxvQEcxPltCJjJ6Sj1oMW9UIXBwRWtiMHRKZWosNXt8OEZoPD9uPjhJXzpMPiJgSHl1Im9oTj9eT3NSbE1eQl0/L0RKPSxhJDtgN3loYGxyezUob2ZRP109fGljU0UiSG4+QmUydjFFPXQlfVZxclF6XWtUdkxEMC5ncn1bbVNIaEo/WXdoUWpdRXN8RzRQPFtedCteXTVH''@;'; put 'put ''Y3A2TWB3Ij1rfCs0c2EwdkhAXk1wLktkZzlCRCMpYmdTZ2orPXtvd35OSjB+TnQuYT1jLHxRMk0ufTpjeS8/YzF3UWI5NVU+dnkzPCsmVGYja0xRQGYiQ2M9Mm4mdVckNF9tWiJPUm5EfCMqTzw6KW9sdX4lRWEhYGZdS1FoTW9QMW1zSXBEaEZrfnhCOk1mPXhVbXhHZkt2ZXptNVgiNDwoOVlr''@;'; put 'put ''PWVFSGouKSJCIj40W31AbE55UnllPmlEKTlLciZRNWMoJjhLTzZhLHtpYmQqZ3ZnfVtUdEZYPnUjNWA2NHh7OlMreG41b3BvZEBnOV1LZHk8LCw9NlNIIkohVkd5bGgzISJZdyhFUUV5KzpEYitzMWBPYkc6ImIkLFZkZTJsTFJWPH1EMTNleXQrU1pqfG17JWElbysmMCQvcGcucyRjPnZJXjZp''@;'; put 'put ''IX1QT3ZlWlsyO3VlIW5TMVojdFoxNzRiZlJOYi5tS11DLFU0e2RmSl8jWWNSISVRTnhdeGN0R25TPENzVDV8dn1NY2g8WTpDJFFgUTg0Jjo6XU4xNH5weChHfiVIK2RwTT05ez0zajtYeVFpPnhbYntHfmtrS21AYiVMNWdAL2IqSk9gIiZ7VWVDQSs+P140NFNJelltXzIjWCN9R115cF5hYzpD''@;'; put 'put ''Ky88Y1ckQE08Xzx9NUFDVX4pSXk+XmdhNlEkNGtxWUlobChITHhBOyRoJkI8MkJ+ZyFhVyl0PXVvQTFBcVl3Pi8lXWkmYWckXkMuL2daR3ssciQuMkpVOFlhTW1DYTsqT3lmckdlcl49akU8IVN7dXgsVFM7SlJ0ZWpmeVRSaDslZktjfDh4IkpqWV1YMW5idT9JZTU3TC9uenl1XT5NZylpenFe''@;'; put 'put ''QStFO00rTks9cEY5QngxJWg7XkU7YU5NZjEqMl5SWXFRcX1tem07WnQ2V11IfXNfKEpARkU6XmVYdTdqMnBANUhPR1gzVyZXQmBYUyR8OFcmW1JIL0NFPDV0WVF3SlQ2Qk1PRCxfflIyUCJOITIuQWZOSmBZMT8oVjE+PmlaUzBEVUNCbmV1V08/U1tlbS8wWHxaUXJLWDJ+a31SI1RBeGEoTVRx''@;'; put 'put ''MjQ9ZExdR1s8QixUOlNSUSVtX0l2c208PGxeMj1nUUtHU0tQZXVfOXtAVHBqZnI3N1hdUVpvV1NARW90Mmh8JChSYkVObFo1K3E+aWcjZjN4dyY/bkRMbjRheVBCfiZjMkomd3lAX1VBKGcpOlchZGZAUz9dTTQkeWNZWEhlWmJyQks7KkglT3Vpb1dxcUdNSEolYF1KaFRKOXpuNVZAZkYkQFcr''@;'; put 'put ''eD1VZ3pramFxQjFEQmltKUsqZmoobTRpSnQiT0JHPEt7Ql13XUBjQ0AofmIwYnolbWxhJWkxOEt7PipeXV9jP0tmbiNyVEYpVCY6NyYybFU2aFQjWUNwQmdfLEI8U1R1T0EiXTtbPFduLi9jSzB6eCkoUmpbNFVtPyw+N3kuKWIwNSJXcjI7cEwyXkJ5OUZCM3orTWE9Onlxb3JVdU1eNlpSTjRh''@;'; put 'put ''Qm91PWkzR1RaO3gmL1pyZFJbQXhlfXs8VjdDXj1hSzVhamIqekN9K3E0NDtEKG5fPD9AR2B0ZUQ+UiYvR2l4USlyRERUfHtKQmxobXJRPGF2YS5lIXF3VCx+KmlPQi9jUyN1YSV4Y3VmX2xzb3E3MEQ0TlQ1KElEczBicXA5NjVlMWtBIWJgZ1N1RWMyS2B2aVcwbk5WVyYyMlYqK3RKQXRNdE0w''@;'; put 'put ''byIvfTc/V2JVfTtnWzNLZlVWb2ovPU9CP1dlKD11TzsuK3FKUnUrRzBqeH5sTW84b0NeemJuQE4vR3oyM0ZNPVBAflRrMFVockx4eyRdfVV7JlcpfiY1VH1XPDV4e0xuQGpkPTJVKiJQe1EmR2RbLD5CRXdIR2w1VT1HallIL0xUajpGNG5sXkhifW0xPilsPCM0fElrY152YmZkdnoiPkZIKHwv''@;'; put 'put ''ZCRFSE5rfX40In1Nb1FOXVNMPD5IaFVwVE0oX3NQIUErQ2N8a19GcVVIKXB7SWE+bXMiXUdUa0VaTzBDOSY9PSFxWzg2a2w8NylbIndRfkFVNFZ8cXFdcHVgdyxtOlM6S2E2Lig+XVJqak4xLjpbXy9iK0ZoalR7NS57RHRNST5PUDFhQy9qKnRdbjF6Z04sYnU/RkY2Wm1EUUJYL2BiUXsrKFdY''@;'; put 'put ''MjdVX1tLbmYmWnAyeEFGfUEjI1Y9P2RCYkwsR3FnU3FYSU5mKHklclEpblpYW0IoJm5xRjxgI019KCFScyVjTihTdGpve2s3aXJWSX49TjhuVXIvRTI/JDo8JjthVmIzeFJvNDN3fTx5Nj1wY34iSS8wM3BwTmFCcVdgYTg8K006bXQ3V3M/XWoreipKQGx6UUExX0A6OXd6QklwUUkmS3JVXT5F''@;'; put 'put ''ISZ5VDNVR3RCZ0A0eFMqK190WkhKXX1aN2A4MDJfW0R8RSk8VD8/ejxwVXR0PGhXfF4paHMqZDxTQzJFeitGNGZsZzx+YFF+PD8mNFgxdnxbM1JhWjN5cTw/OS5kQ1Q/fkpMcV5tODpDVTlRSXg1UT9+XURJTV91JnY+SkRsTGNaNVYkYlE7SWlta0VZeGIvdGU0aSUqeShgXVAwOEpQI3BIZi87''@;'; put 'put ''JXJRLHYhJkpjKHMxIkskTmope0FSTlYmeHErNnhOeV4jKm8yJXtna2FzSWVedVIheXR4aTQxK35iSzxObTo0XUEwKmJObCRSSlRbWnsmXVZPIX5KRn5FVSVrejJfdzd2MyR2K0hoO1IhbW5yTClRTmdxTlJgKnlSOH5RXkRMYWxLOXQydFVWViFHKEUsLyQ0WkRDRV5PfWV1Xl11N01YTSVeMH1T''@;'; put 'put ''OXw3KUAjI0BARV03XjhmeCVJWGxBOyUsN0V6U2ZCJUhTMiY0SS4sfGxjVkBvQ0s/LGhxTz89NU13OkZOUFZKXkQ+LzglRTZ0O0BxbDtDb2RFXXYyfWZ2QGVrcSxEXWFdVUQkLFlUezJpY3RpI2opV1pJckdyQGV3fFYxVzY3X2VAb3Z2cjo8aFZxQnddfmNwXTgzUUEjUEdFaV0xaiZmQn5wTmks''@;'; put 'put ''MCYvRHkuO14rYzcpRVBCaWJFO1BqdVZGNX1TLD02bzo3K2RtNWpgcmsxIypBNSZodDt7WUhrbDoqP3BgV1o6Kj5iW25SKm9CWE1FJH5fOWAqeCFuZFp2VUZhZnNUdTJhaUxCS2Qob1ZdYFp0X08zVz07eD48NSkobnhPKmRIdVl2dypSMjBpPjZObnQ5NH4iSkV+O0VSTU5zW0A8a19aRDQuWiNw''@;'; put 'put ''KzNuISEkel5NLnl6b3UwfVdlRjsqRTREV3UiODQhMT4qSWopaXlDbUdtXVFrMWRkaVhKfTdXSkIxPyhgSj9yO1ZnPEdRfiU3VThqSXdvUUwlNip1ZituZzkocj0rRTc+XnJDeUlCNyh3e1UsYVlndGh4Y3J3bmQjWDRULGRVQVc3eHB6THcsIz84akdDRk9lei9ncjpGLyJPIyYhK3pOWEtudFhm''@;'; put 'put ''IVI2cCQhfTFQOXR3JD53WE5HdmRSTD0hcnx0QS8mTUd0MithfX0oNjgkQ1d8fCJIJHFCQ0BtTikldH1NQFtaInxtPj85JExOXnxNe05WRVlXdiRrQ31HYjpXdm5lPDlYKzhXdW11VSN1KSJrPEVZTDNHN1V6ZT1Pc25pN0csMDt9JThQMz0vQT0sTCwpaVFBKlRwImVtaXQsPl0hckVSVDcrJjxf''@;'; put 'put ''e00qKDMxRGY/P1VyLEx2fHU3SUV1VHp4Y1NYJXR+bWQoSll7LDVldkxBa1g+OS5laDd7MXp1bVtgYnlAVFMraXZySVEvLEc4UnRHeGEzJTY+S0AxU2BAVldFejZeMDIhMDQ4clA9dWYxPTZuaHRnPFk6dWRPNU1kOGVNOGEpK0QmYEZkbFtzWk9lSHt4XU5yNXtNKEJbQjtYYk51bkgpbVgyIlgq''@;'; put 'put ''Lz4+fihfNyosIVMqMz1iNlNIWGB8P2lVUlZ5WGdaTiVAa0B9Iyt7Ml9QWkQoM2pEbV9val41QDsoUUwkcChTSC9DKURwRSpGc3F0eXlAXn0hPyQlN3wlKj4+bTslJnNSfUUod2IxNGRQZEBuQjgoSmFRZT1HNXQ2aH1QNkY0PnclRnA1PyRFMTg4NHxEXmw8NHxYR35ULj18RTVJNFM+dVo1fiR0''@;'; put 'put ''JnN9L0pHdV0ydXNmamNoZWYyKGY2TWwsdip3Ln13djZ8I2MoKy5zL3lfdi9BXXFqQjp1TX1+cVc+N15Bb305djxvQnBZamJ2bVhyP1BMKGgxMiQ9RlRDfF1AQXFaLnozJS9XUUN1VElrRD99bj4mYjJDZWJ2Lnc7aipVRn5AfWp4MXVEeC5CX0J3MEUzK2s9ZGUsI3gkbVBvOnBbWVlCJSs1ajlb''@;'; put 'put ''ezEqRyE6RnNWYVdGYzVuTCxFT09zTHtdfF5UK28kSVc8Pyp7Ll1xUXUwRSkkbSpfPUxjQzRFdyFsW3dLKyJPXS9gdjoqPD1XR0opJC95bEAmeldxOkJyUmRAVE9uTjs9fkUyS19eOWglO08mNTZEJThEJF5LNlRTMlBwe3s9L1goPHtrRXg8NFY8ZSUyMSZTKj1fdGphJC81I3htXVtdeTtedF0+''@;'; put 'put ''Pn4vKzYrK0tTYCooQzkwRWNfRDNNNXFuZk01XnhMaC4pOlkye1A0ZntRdGNBfUpYNU5UQExCbDxGam1eRjJUJlJLZ3d+ZilzR0thXyFjZFZQIl0ldyMqQlJaI1tvQiQhKlhvaX1SSClnfCI1I085UjN+Vz99UUJfOmBKYH1sWWFsPzhFOUJGKmgxZjwvWX02Mz9IZ2I3dy9wazE1XjVSJkxedCU1''@;'; put 'put ''eXJSM3ZjPEI3S0kvPzg7NUFsZlplJTQ4cXNjMEZWKyElPXc8ODI5Vm5oekZSelRMLm4oR3w0Mzp0fEEvcEpXKztELnVeYHZTRUprUWc9e29KaE1GLmNyXjZ5Xm0+IXs3W1VXNyI0NFkze304en46LnlpMntVdV9GSEgrR3deM205WUlQQUd8LnZxcDVMLyRsei5PJjEleERNVX5ZK2o1YFJHT0Uu''@;'; put 'put ''LzZERWd2e09bQz1DYTMheHRqYEB9OT9LZl9DWn1TTiIvVCNIM2d9PlhAdGRQeE5hVWl0NjNCdXsqeG9xLDowcUdSPlAkL096M11eb2JVR3U+Z0FZQis8cG9fZ2xmJWRYTGN7PTdQbmU9SjVhYSxfVmtqe3FjSiYiWFMybSFBZl9ofVNnWSMsUm1iSGhMN24+ZW5ZV2pxZiEmbUQzaENAVk0kd1El''@;'; put 'put ''JjI0SHVfLzBwTG1idiUycV1sT0ZOOFIpfC5IXls+YTh4Uk1NbiN3YzNXZUUhLkcjKSM8TXNNU21YJHw0O3g5UzAlSm5wdFsyXjsiKH5EX15afDI5OSxjdkJHa1NbeThsbTZuQ1FEMlY/VzVULEJTZ1ZlMUp7VmxFMkJhY1FTfipmdzh3KH5tPEUpe08xXnMrQSRFOTdQfEl4T0t1cytyK0NUbWJZ''@;'; put 'put ''NH4jW3FyY3t0bVVyK2YlW3ZYTyVDWGpHeUsya3FiOVosZkAzUjxiVmVKaHtpLF5+PyIocFZFY0xhNnNWWHBgYU0/PG1ZclVHJkJYenlHSTRtdz91dmQxNnlue2woSlNsUj4+UThIe3JqczhZXVMyV1hyXXV3X2pMUzNmIV1OMy4kYnJNJmBXYV0kQ1BHYCFicnhZeUQ1OCFEKSI7cylXZ0oyNDt0''@;'; put 'put ''dFB7eiQkOGJ1UW97d1UpdXl0MT5HUjhsWm9tbmV6KyZ2TGxJTSxvPixMSzNWKlNvL10rOGB5ZHhhPyVsXkJSN28+WjJOdlE/WyxWMWtZZ3hRWUxoWDJSTU5rcjhIMm9hJFVbTF4veU1rMG9rK08ueFJJVlIiMFNaeWxgMT5LUCxFTlg6OT9PS08vVmB3WmspPkZ3WzN1UUJsfTlXUS92TTh6ISFp''@;'; put 'put ''akI+JE8iI2FzdHRaaTQ8UGBPZSR9PDBkb0NjN3k7Z1ouJSJrK0J+RywqUUQrZXZSRl59U2V9RVFQezF1UXEqZ2pBN3tbMHJ9dileayY+WWBoOGsjNyltSUl1XmJefH04LFBFclt4TjJNQyZvZEx3RXF9aF1PLkJpZmx+PEppYj9pKzYkV0s5eS9rV0NXdHtYY0hdfGgsKlRKR0Y4Zy5CQTxOSzNG''@;'; put 'put ''UTgsfkErXiRJdU8rdjB7RHUuUno7YXhIcik5dHhTX2JdUUF3ZUcuSUgmYihEUmFoaCExWGpbUFVNaGJTY3lfIWQ7a0hCeWs7T0UmKXJXYGBsZ3l3bkpXS2xVKlhLITg+bHQlP2U4dl4hM05AdlR0KG12aT4lYSxuKHF9RUMrIix4T31ISHNRUH5dRTd0NSM+PF14SndYPWhxM2BSSnN5TkImTyg9''@;'; put 'put ''LFtwK0tHejVaY14rSmJkVClgKFMpWXFDUHdteVpnbEJobiFJImJHNyIoQ2BuQV1Uc2J7bipsJE95eFYjNzpIX2kwRVd1JGsmZVtGP0pie2x4cGZyel9pNnFXcjxlYTlgK3pqUEl6cjZLY2pkbC9iMmVyRCw7XUB4cC9LejIsMzQhTWxbLCVWTHVMZVNPcjZ7R0NjS3FjdHt+WzhZQ0M5X0hiVGxD''@;'; put 'put ''eCJDZ1poX1ddUy5tSlRZIVJRSEYhMUt7dk49Uz5ZST5nUyo/UDdXZi8lUF07RkNHYyQxI2lIYFczaCZobl94OzQ7JW8pbUlpcnp0dmk8bWZVZmgvdnxEMDc/OisuSmskOi9BM3BMT3AjZzx2d3JoX2lUbzc6SndNMEA5LmNwZWpvOlQ8M0wsdmErKFp5d1F8SWRsPmhqVG53Uk5PLFEoOlZneXBJ''@;'; put 'put ''SVcqRCJ3NSxdaEo2ZnEka1paOk9PMTc2TlpNWmB4a1EsdDhNI2deQWZdNXU/d0RfNFd4KCg/cXhaMS5NOSguYXwmfjtsdXFaKl5YJEJ6RU55fVZxWktZOztTQSV3T1ZfRnprOGxgLDtUK2NYPjgyIzlqVzB4dTQhLHd4SUZzQUJXeUpTRE5hd3J0YSlGfGtFZE5HVT9PdXB3WmNAKUVtUGE6Pkpe''@;'; put 'put ''NH15PjZAR3J7NXgvZk9VfC5rfndSe1J8ZUVhXzBFXkc9QCp6SzdOamchczh7Kz93RXUlOld3MVl9O2crU2toNXpgOllXIVkrSVtdSEx+KTp+MCtjUk4+SGxmJnZkeGp2emNnJT1Lb1Y5Zz16InRnYSJjS1JHdSgue35OREtLdiFEWXEmVipAWlUxQHdxfCxgbzIhaVd6eGZKOyZlMixndnFobTd8''@;'; put 'put ''XkBVWjVieWVYQER0aD4hS1pESHxUX2l5OExXJXgoZ1NEe2w9T1Rlc0Q4V2c7cFgkQXBSKkpvMkl6XmxRb3VgMTl1PypCdW9ufXhleSwqKSxML0wrMmgzazFjdUJrMUovTjc+d219PWIpZChoc1Z8MDs1LD47WSFjPHY0emlxdXdRQ3pWUzJTWSg/c19XMiU8MCFqT1RGZVlaMEJkTCtQWXQlQUx1''@;'; put 'put ''cjMyWC5WZF5vR1c2UGZWXm94Wj1De1crLiglIiYmPzUkWXE2QjllY01SOzQqWSpTZE5XK347WlslcCl2Rj91MUYiTC9xb1BAXioscF9mPzxhb2RAYDFROk0+RnAva1QvdlF+Q2BGI1V3SUdCMXIxcll8YkU4bEJKZTd6RHRxMTcrSllefCFJM1UkTHxvMEppLEMsYGFaeTs/JjtPPUd9W2BHPnhA''@;'; put 'put ''QWtrYWkpZCZdK2lfZEBib1smSDxRJCZUdEVtVFlNeS5IRmFkY2F+SWlOMTw0fiNMbHJ8ZERgeDFKfWlkcnYvIW40PnVHNVsxYHZ1PEJTPStCO1pQMS5jSlA9QFlxfFlzZks6ZFUkR3p2YVosdUdMV0IpVTVmQ08uTXA7SkxnJVVDJkdWRUxgVCNARE0kS2M+UU5oWmRxOzpkTC9Pe0w5b3g9a2U1''@;'; put 'put ''KHJxYyZBT09rYHd9VUM6WHRIPXVWV3clcUh7UjNYa3hOd2wjN3xbT05tV1B4a35tcmNkc0ZlOVZzSStkX0JCTlVaVk5Vd0M9Uk4qYiVyanB8aU4rTD53Wlt4dj82RFpwI1ljajpNdFhGb1AkQHosSzpRdm9zfUgkRm06LFlHcUtoZmNgLy5LNE8qWDw3OVFGdGtFJT9bXVNAfF5Gemhwenhvb2N8''@;'; put 'put ''Vl59XWRfXnhwKGk+L2VNMCoofkdIMns+Rm40NGpoblVKPTsoMDlSc2dvZU9pIWVBSzwhSUVRZmQvMTw7ZH5lfEQvK3JQTngvKXdfeDJxW2EoaWt0OkhmTlN0eVB6eXk/Y0lOK3o9SSZ+R0RAc2x5VD87RjtCSl1+YWRbRX1SZGRZKGQvQ3IseV0qbl8jYz0/TENCa1BndU93MjR9LlFnYEIsLHxi''@;'; put 'put ''I0UifEN0QFN8SmpSY1JbQGBLOltpfXJpMWBWUldQQEdEakdmQyJNQ1hKMGtibWZNXTNdZkdRfHhVKDJRVjNFRGVwQkJBVGdtZFhOYnxHRlVvJXBgP3dAX3xyQ3B8N0hSREZOPS8hbzZ2Ql8iV0VMOjhpZHckUSRoOjVGK0hxSFt9Wy9VfjVgKHt8Tz47KSV8emomMSFVcnIqaEQrJTBwSndbaDFJ''@;'; put 'put ''S3FwcCI9WUg+ZGJQPWxmaW0vRT03ZS9RNmJbOE43VnZXK19lZTthTn43XWYwVl0qZmZ0JlIpTDRdJHYkNVU4YXNXRGc9e01gPDFDTVJYfUJ4eWxAam48YyY4PTtjZSVzQmtOLlg3P2w2ajU4Nm5sXlcyenFzSzo5TjZRXXkpa3QmeHFbKnZQWFZlSjg4MUwkNUJLL3xpNlcsJEV2ITh1WzNPPDhY''@;'; put 'put ''Jl5lKnw7QH1+Qzp7QD0+Q0duU2E4S3open14TzpJa01HT2A7aFdNMUpuIWBZKzguRSpqSW0lVG8rO15AUSYrdWFHQFZmUWBhdV19PXFxbWV0Ln5BOXlFPDJ7MzBzY0kzcz5TXWh3YUxzQFcsflRMcntCJkt2OW47fTF6QEFwNWNLYWpjeFlzcVlzRnJPTmBjWDtCR1JhRGUjcHgsUDJzcDxMfHp0''@;'; put 'put ''UGxYNjhEUzVvKlMrTHF+Z1FPSTNwI2c7IXdWfVRgekkjbCRWRWlbXW5qd1NFMkRTRHgwPi5kRFdOUmopRmt3Zy5va3t+Pzt6KmtXOExnfl1ZKiI1NWdnfV13UVNrWk46cUF0bGsmYV94RlByN11DZHdjPCJ9bmo3UUBAOlI8YltVcVVRIm9RIm8uJlErbUojIj13RSt6IyFDbypfWTtlP2kyTnl2''@;'; put 'put ''YHpjRnc+Jm47S1ZKTjk1SU8ydTZsT3RnVilVIkU+cXVCOCpmTEttXlsiTnNELHtLakw8QlV7UlkhJl1DYkEuQTRtWkc5VjRyRnU4aV16NmZnTlNdQUJSQngwXTJVa1BmUzclNiJacCVee3M8WCJIZS46ckNhe0Z6akkwUSxoSnVaaml4Sn0+WCQ3XylbcWZEVzgsbVMmOXZmI05wTU80bnVHaW1h''@;'; put 'put ''eCE8U0ZGeT9BZUhDZmN7KXZXUWc7b3ZHZHEzSXlgNG5ANFswNmdbc3Z8SjVHJGhIaWlpUGtpSSw6PSExZHdvWk5mM3tbamc5bCpGVDdUWyw/KjAuTHA2ZDZtLlMjfEtTQGs2V0hnXixkNHZGdShVfjl1L3wjPGtibk9zTUEvTnMjYDY3VVZzbTs1P15xZGZ4T31FVEtHSWwrSiQ4QiU3RVRMO3tC''@;'; put 'put ''MDhBVGQmNXEzZFM7b3p1PT9qLjQ4VDZzXls0c1JwTE9mLDV6aXpBdXxaNXxEUklGcl9IQT9qOWJHd2JUe3s/NVdwYUlfM0o7entOMGtmbzcxUDY/ZyI9JH1xOm8+cy9GWWU0UiRPYV94Oi5+NSwlbzdiMlFRSkliWjJHSiI1Yz1qVkU2M0tray4wYDhSWEA4JHgoajs2IU1nK1h9ZFJ6LHU2S3Ur''@;'; put 'put ''OCpreEZaQnxLWGJXRVROYVgsVEZybSRSSix9b0Y4dVY+eXs1MmdzOzB7RDEldUBWYzc7bnEuST4ycXcsN1BdQl1HNSVENGd+XVdLI1lzU2EkNXhfMDJMJHJdUT0rcylxYn0wMjtQU1lwUm9sRE48Sn0lLzZEWH5OSEhAcWpyckZVbEx7QkomYCtWRUZ5NGFtSGBlKG1xXXd3STdSX2hqJThsM35C''@;'; put 'put ''LnY+VGtMMUF6OHJPXUZmdHV1Sn5nKC4rZGFEbXhnZ2tOJCJ9Wl1dODFqZ05SUiRvNmwrL2x9eEh9PmIrNXdJMGQhWzthYy9iOz5YOXtzfjEwUUlFfDBZIVMhMy9OPGZoakU/VHJLUDAmQEB4WUJDfmBQU2dNeUNCOl04JW8kSm5fe0tGJEtXLFtUal0jPWpkfGx0UnBFa2w/SGJEW3MsQm5xMHo/''@;'; put 'put ''L1NDbj1vO2Z4MkMyWGwlcSpITyFYcGU9Ll1vfD8/Y1c4fkBnfmFZN047O3FiXVUvSzp3ZVBMWWVzVHVdejA3bElmS3NpJnssbnp5Lj1XemxmJExbfToyZXE2JDd1NnpGQXZiVkROdVZ5UitBTz9sTH1teEpKcWlyWmFuaTdSUCFyci48KnBZMTtSOSNfZU9PbWtHRGNaSmA9cnBOWSNXLltKSWBr''@;'; put 'put ''KX5rUSw5eGk7dmleb0w2YXxrVmpTelJkbm8sbCt4Zzs3QmooNCx+ZjgiOXlReG1TX11JTE5WakReQGhXdGgkXm9uVktGIypDd3giRkpUQFVMTSlaLk0xMHZ9PUw2fF00cH5lJGY7RCxjWSUrfCQ1WnFqfStPNnhjOjp+VH5BWDYvWHNwI0lPQU5WTGMoSnhWU1M/ST1WT3grZnRSISYsbXp+YmtQ''@;'; put 'put ''XlRSPn5Vdz48Yy9tWTd5VXNGTEZRdytDaklNZzRofitlfVBMYDRddmpaWTIyPD40RWooSllfWlZOMHc9QmEqQ1ZRNWYxamI/MS8/fENkTWtbV3VkS0FlWmAwUUJWVHxVb2lKNUdeQjJJRDkmQEA9cixwX31zd0lzPiNuK1IvU2xTansjUyZJO0RzbnZ2cX5tcUM6dT48RTgrYzZGaU8pQWoweEkk''@;'; put 'put ''Vj4mdUc3O0N1e3pXejY8JFM0SSwvLG1hMk81LyxIZm1dY2U9ckc9S1F4a3tZdjRDTmJBNWp3W2dHaCRPT1FxLmkoJTlnWHBGbU9HUzRHdjgkS2BjQEhBWTJNQU86c0pvN2IuQEg+K2szOmtjdGEjeyh1UEZ1dUoydjQjKktqe3coRWAjanFlYDN8Kk9uU3dWTGUoPkBlTj59ZSl0MVA4Z3w0VDdG''@;'; put 'put ''ZGU5TUtzOXx3fmghYkk5JGEkIlpKZ21dbkBEbV9EXThwKzBDOFU+JTZUSlJ6Qkl5O0tUP2JUPCEwP0pTZlYwWXtXLis/ZD9PT1V+ciVgIkllQ0dXclVIZm0+OnFNRGV4TkRgYkNZJD14PC5BbmA9YWcoSEV5VVh3JStKOy5CNz5ZWl1OR0IwOlpud1goPkpiRH1vPD1Xd35vMlV1WHJjW2gkYFcr''@;'; put 'put ''bCN1QyNWUGhMYE0/LClkM0FaJjQsZDFOezlsOjVSSVIwREljNTwueD0xRi9dNytFR2loLGx8cDwyVGtlMXBbcHdyZDEiK1B8TUF0a0dKUC9SIWh0Q1g4JTZxVyw3WzxvWlhzclVoTTFgKGV8R0tYfnBYJXczZVcsOSZvSVFxOC5WP2RoSDlBLmtPWWM4cGBoaUtTQzQwbCpCM2FCWmB6aWpzJGRw''@;'; put 'put ''MH5zI2RBbFlGPyxpXVJhe11hRyg8dGchXkVMQ21kRzJxLEk6RShCYCJ1ZUJFTyRXKDB1RWxWYzlMMC5eT2ZJNEtAUGNASEk5fnpqPl4zdHV8M3BgJEZ2WDM0aCRJSndSS3Y2SGV3UCFJLFkyMnI1SEQvQTsiSTpBckplPHlhZX1YZXBoRWxqeHwiMlBrcGFYbzlPPTMoP0RIVjkuNiZ+an0mWERb''@;'; put 'put ''LHFLPmNWQz8qfTJ3PToyUFBNeFJeblgxbF5CIlpHQGk4cXQ6SX1WRGAjMWE2ZUlhYEtSO1sidjVuSSZCNE5UMkpHTU9qWildbHdtITpOMX1BfC9YMT9FdEI4Ul1yNmRNOGhFc2l3Z0RUWiR8PCtCRSQqS3k1NXNQVjkrWTo3QzJ7V1ZfSWkzP14zd0RBU0dWeUtEe0xGUHRXZHZgfUYpKkFnVFB+''@;'; put 'put ''fkY4aUlddGB5LGE3dWchLEF8LDJMUi9QPTBFIzQ7MHEvUHc3dztpTXhRWylpMXh4SX1aNjAjVGdtbT5YSVJXemRMPygqdFV0SFNqRk5bbnUuTFgqNCZkTXV5fXpmYXd3LEFgeFc7M1NOTmtzSXIpK1BwTV5jTjFnSjU9WHUyIUU2RHNNOzFLRiYpM3E7Q2QzJkVwQGtwbVJWUXt4ZjQhbis5THly''@;'; put 'put ''Ol5IaUlEalpgVnU4KG59WW5YclZ6TD5oOXNsbyYicXZEXkNpNHxsb1k2Kzosaz9oYnk+KUsvV1ohNF0+ZDwoL0xzKmlvKz95RSpeTjIhIVcrUTRwYlUrdGNNPUdAd2VTdUghPn5HQFd6KVovQ102bTR6JGolQSFJOyUwYXE4UGc3RHUpe3lvYHZZKyVeMkNLa1sqRjw0OUxNW0haTlV5S191JTlw''@;'; put 'put ''PmpQSV5dcTosP3JHZS5oZ2FFWW86S0QoO0wjYk9LR2t8biIjT090O2FbIihHN0s9PSpYSjBGen5ZQj1hWCZNQTJwPSQxRml3aDk2RixqQFJpZ2Z3Q1pEMk4+LEQhckcsYXhOX1dfK3l3Oys/L2loV2FWWDszNCt9ZWRIZT5IKFc7JH1sMC5wcE5oW3Zvb0lOL0ZQRSxNNjt0OCZpZUJMUSY8XXY0''@;'; put 'put ''L2s7cz5lbSo+WzByQDhuVmJpRiFyOlR9JkA2cEMuQmN9PkJzaFA3TTAqK042KWRWNVZRek9FJlhxMGlgOEt8OHpHVXdpW1ovaHhOTTExImhOW3I6aGBmSEMqVzVbWExAUlNlXmMqNDQ1anRJU21hUk17bWQ3cTlnWEtCXz8/TnNUWEtsSE5zOiszU3Qxe1M9TFhXVks2WkNIdVo/X0JNTnk/PCla''@;'; put 'put ''KkVdXVV9In4iOF92JTMwZS4mdW1leDluPzMlciQua2tWTnpwb0tLS0M4PFZpNCZ9ST9ENGhld258RShVU2d5Tz1aNWJWJWtqbUNefXRxSjFeWDFYdlAhTWFSKyRRVkZzKUttMSldRHAkYl5aaUxILDJoY1ZAKFNuWFFpMzRDcDBKXl5CdHpsfXVZT3YhIjleK2hjY1lrdT91WU9+Z1FbSGFnOnMq''@;'; put 'put ''c2FhPDt3dHslP1hrPX0xKm0vcHN7S0kxLyJnRypDR0hOPFBJQXBhZH45STQodGA0NHd0TnBxdEo5REAjZmxxV3t1KUVjW1BDOXN0YHpuX2VuTEVMT283Uj04PGM8WC5ec195N2ouaGhHTDIpcThZWmV5K2BFT01Xe21VZGQ+ZEdVUGguKCt7aHNwJXIiZSshPFEhTzRJNCh0IVlrQXNwTiVVTHM6''@;'; put 'put ''d11yMF1bJiltRnxOd018W3BWZDNoOTNscyt6QzheZ2Z4Sz5DYjE3aVMvMyVYNnhBYFM5UWBgci9iSl9Ed3s1R0JJfUs4WmVdKXRadEZ4OlhrSV9NOytXJGRzdzErZSorS3RTK0N0XjNhLChiQCkvfXhzTDdGbE9NN2VlIiV9dEchZ2ZDYFosP052a00wQ2UmPzsrKVNnY0s9Q01aOUp9ckpHL3VT''@;'; put 'put ''X2l9aE8saGNlYXE4YzdCR316SVpiTzFxWzZBRjQoZGN5P0dgPC5AVjB1WnpZR0haPmdUUl9OaUgvQFBNak1tfFFgITs7LiM4YlZ1TTEuTz5oRz9yRXMofDZpV017S3dCRW1DYkMpW0haVSk9YDl0bWY8NFZ7TVIrXUs1MyNNZylhVW5qcXlUamVNPyJKODtyZjY2S0FNXipDSkd6fVRTUlIzTmlr''@;'; put 'put ''aTl+TTAySWE2OjppR1JpL0cwIT9hUndDaU1LZnxNMHlhNDdTJmh6KFIxWmMrfEM3LDxONn0lfnE4cGpwVW1ZYyxsMWAhPTBMSWNpenAjODU5Kz9vJD5AYGA0eCRxVyMocW5wQj5AciJwNjFwLF9Pdll5MW4oPHFYbTBGV2c7cGIhQ1IlaTUhUHFGVFE4U1I2dkxtQDJTJl5hb3NNUDNSLDFIb3g/''@;'; put 'put ''Rk54PyYyIk12aWd5T3g9Wm96WXdCd1ArX1k1KnVgaU9vemp0SmphTXYlIzM4WSZ1aClENS4pT2VgSVI8aXhKMkNyXkc0JSwxQmVtXStjMHBwb115MSNgNmVYP0M1LEp1XSRPanQlMCo8KmVDfDwxdHl4aVZdZj9NQW1EIUJVOmYvXisyPWMoMXxbQzN2K3hSRE03fS5pLDVDO3Rnb2RyTkt4WDMs''@;'; put 'put ''LCpLXjZ1bFdHWSQ9eSNdOmd4QHI9PjVHS15PRTdEa15uMVVxSWt4Ukl4TT8xUTpJLEthXSxzYDViIix1YHd+Rm5lTWtkX0lNcUt2flEkcXYlOj96bWlpSFE4O0o+dl1AUERELzFePzdhQGtPN3ltI012VHVNVWJ7MURLfi5OXzJ8ekl3eXkhX04uOU0oS3xIO3E7UnJRVC9KSFpoSyouUEU3JD1x''@;'; put 'put ''MWAzbCl2NWZfVklXSDRyZDQ0fm1hWntMdDM8cDs0NnNJck8hKW0oPXg+KkxdaG9gRiFDNy58UW5dYHpJRC83aEUvLEhafXNZXkVpcnFyX1ZDL1ZMWzpaPm89KWpPWyNdIn0rcjVWWHM0JjY6QyhWcmlLSSxwOS9ZeTVxcnBpJC81S3BOYGYkQys5Y2VQXU5hX0hDK09uUEhVOXYwY2lXRCYzWSZ2''@;'; put 'put ''LyNEQzY6OyVVcFFVN0EuKVV7O3lHJkQpXUhzJGBCdCZgNUlOMXlEW35VVSZLKFdDSEo+NyNSWFZgQCI8LG4rQy8/PlluWHIqRkZjejdfUVVgYlgmU28pejh2KHF8eUltKlhOPW5xZyVpLElkalteQXp9Lm1hcj5MSnZLcD5jXyYuUTN1fVRkVC5uVl5bJHshJi5zXlR5SmFiUmZUR1JNU2V2Q21y''@;'; put 'put ''L3VLL0o9PnhdX31wRE1iNX1ZZE9SVktRLl1uNloqIX0sdCEycl5VaHtvOyhPSz5bKnZJSE5MPVFTazVFVWhmWFRSPjBvYWxqfCg3IT0wXm9BVCVIX0NrVEJpSjByOlRVPHtyOjdjYGAqL0FaQmM2KDoxWDJIZ3RlYkt5UUJdaGYvMmlHfWpZMHxgbXlSKFYyOFZpO1dHO1EmWUtzLGBUKy8jNWlK''@;'; put 'put ''QG04TUsjb2dkKyZLfHJCWTlMTzJRV3N1Um44I09FdmcqLHZgW3trMT40Yiw0Rl41Z1ssPlFpUEB9I0pJL1lrJkcjd112I2llPnsqQWFjKntdTTFXZExbR3JjP0x8KHtVSXZkZ2ZeSzxbd1t6ZH5gLCFbNSxNUnovLn14dSVYRz1jfm49P3doZ2ZDWj17aFFvNSZvTj8vWWE9a3pjbXh9M1ojej1N''@;'; put 'put ''bS58MCpHNks+PXMpUXROKGheWFQxQmlwV05hMTUsezBUOjJUL1NRODdsK1pCcGphOWwqPzZSJjosYEBEZDRyNFk0QGNgWHNNa1hzXzFSImxaNEIoXz85YyZlTmg6c3xyQX5fU2k8InN1RWRxP2BUKGgiMTRvPiV3el97bHtvcSUiR0V7Q3tNSmE1d34zcG88fHFZS1NfX1ZARHNKYCJLfjo2I2pZ''@;'; put 'put ''LmMyTnd5IVhpNlYiPCN1THVgQHZQN3VddzNLVEksI3hITWV7bVQwaSkmKT9SMVA9O0l9UEIySFslTyZ+VUw6IVZORmZSIihuTlp9XkJ1fFNzYDJTW284ank8Tmx2YUdIZlFgWmlgSm1rZWpROzMwbzwqN2FJQWl0KXlFVFJkNDJzM2lAQiZpfDQrVytlYE1qdSorVFVFcWsrLyNvLFEmS31ePW1B''@;'; put 'put ''ZXxbSFJPZCsiZWtFRFFCdlFrQHdrNzFxPlRYKVduYjNrOEZVRGhXVlhxfUx3Q01QPTJVdD9PclIuJXF7dk1Ze0pFXkEsaDtpS1NDK04iZS42UUtBVyVEOS9BQ1hTZSQ0SlUrd3tGdHZUNz1JKiZOc3o4XVF1V0daVEk1ejljS3QqVGBRfTl1LE5SZkhZQUIqS1JVQD99UD1zMzp0T3FDPGttNGNj''@;'; put 'put ''byUmcDg9MFsvZmF2OTdaSl8ibzdwMklbRX5sV11vflRCdEphMThvUEM9fEh8QGhVUn0oTCp+TTRfIlFRcCFPbSJPUzJpcTxgWXI4IixYXV5CImJ5SHU5IiFQN1VScCl0Z01mW300OlVASj88RnNZYHVZMHBQZ0x4RUU5aX1PXW5bL30xRU4+Sl9vTE5wIVNiSihFakw/NjpsI0lTKF1FU1VVJUlx''@;'; put 'put ''V3pxa1gkUClqcmIkaC4jRDtsZklYS30kOilMdlZvaH0sZSkrcE5fOVtzVC5TXV09a2pZPHElayp3WTYsZmE7JV0hfT92NUN9eTtKWDZKZCRUdUMuYCEiS2BAK2lBOkZ1Q0BzZ34kX25fNW5rPHNPU1JofXwibHghUDAkUE1QOCw4NWRpP3p0QkNgTnprY0xSSmBvIVQoQkI4LElvc0pTUypsbiwy''@;'; put 'put ''LzF8RDx7STpqTEZZTERrOSN5NDlmY2ZlXkFhKUhBPCozTXtMLGNkT24lPyIqRSR0UV45bVdxb29WPHNgMlMkMEhDWEBAJn0iZ0siXzR7KmJdTT1fWS8jemQzaDk2LkNhTX4iKDNeOygvUnYuK3RtaG17Q21zU1hBP1tEMmAsJUsucHlETlVne3pWNUtDLyp5d19KMDA2REBVVj42Sl4yJkh2SUZV''@;'; put 'put ''aCwxNExVRTxvKGdMfElsRHdTYV9KPCgpXS9VbDswNURZMD9OW3FxPSk9W0AlOG9dbyNXcj0kV3ImcCUmWXk9Xj8lbyReJWBwRGpse2xIZEdJRzUrP2w8cHNUIy9pckI9V2BaSXpZSTM4TzVeSWJBKzBJYFFYQEEjYGA1RE9NenM6WT9lQXI3YUIpMT9UbUVHJmBmTz53RSt8RVNWVVI3cXZPY0Mh''@;'; put 'put ''LHIkVm1ITHd3cnRYfFo0REhNQGJONmUrdUUiYTttUFI5Tnp3OUEpak5wcW9ZMVZ4VmssKkhhcz1JdW81dHplRztFPFZNJUB1TWlxPjd7QzgvTl8pUyI9OmdSbnU5RVBEZX5qK3AkbH0/Ny9VQkNMbUxJV0p5PEt8VkZiR2M9ST1gSV1eQFN7L206P28kfDpQL1UlYysqSGBxLmpbd3FWeVVBJSI/''@;'; put 'put ''W24zZDUyU3oyMWE7XT08bWJANm8kc1twSz5+T1V7Jl4hbj9gYi4uJG1yTjFFTix0OzRqUlhxXShtL1VkTlorJnBEY1trRlZzQEVtKC86ZlswPmtsbFFeQG10OV9QW3V7SUQrWV02PiVOJk4vMmxZZDo3I0g5XVU1aGFJaFJeMil2UixCIl86IjtSIyl6N2VjSChjWjJ3Ukw/KG9+JkJfej9dOjs/''@;'; put 'put ''Z3dFT3g0SmI8Q21GVVk6OGhyUWJEaC5aVSxfQEtqTSxpPl8wVllxUGtPRlo7XWRsaStEWVpVNXFkMGl2ZzUsKC5EOGozYUtAUV8lOiksUERfIXE6P01UMTFMVnt5WSQwKiZlY1I9Jmh1Wl5kUXhsM291cH1TLltHWGNzM34yT31DNlVpOCNHdjhEL2ZGIzE0bnV2LG9WQCxxNDlZbENCV1NiS1gs''@;'; put 'put ''Vlp8KD0+YG4oOCIoeChkNV9gMV94PnhsJjd7e1luQj1BcWd5QXNLS15GQzJKYDxZU1N0bHxtMjA9Lz0ja1J3T3wpN3xeb3RVeHUxQHhwQmY3LGp4ZDFtdjp2R2ApOn0hJnsmaj8hVCQlazFlT2FdXVdmWXJSPHlsPD1fP2dMYEMkaj04a2FgUjtSJC52NEpeQEBXUDtUY2VqSyJhR3ZfcmYpeTZW''@;'; put 'put ''MXs2VEpxQl82K0BiN1dVPWUhUDlkXTVuVG4yc29CTW9xODc/cGdvJTp6TnltPDF9JVkzMiFaPCZPbl04N1hrXlBBJV1oYjxfc2VZSStdRmRrdXNXVEA2KnhVcG8qeD5zMH5uISV5UUQpPUxAcHxxYz14KnJaRUM2LmBubVAwUTRwdVIjSkJxQSVXRiNPUXp1fE5tb2N7Q1YxR2hAamomXTB1e2lX''@;'; put 'put ''O1pKWjNscCw5PSpzamJJTnppcCxnVVt6NypLezQvakFlT01JbWk6bXchQSl7QE9TMWpwfkNfKE9yUm53fEtsOyp9Jk0wVms9PXhPfGYqbSl0VHRJJTFQPyJoV3dlOHtbVVU8XnR5QiV9ViojNFN2R3ppMFRLT1siIXQqIWxNYFh4NWpWeyZgOlJjZEYsJDpfNVRjaWsmT0tFL0gkLjZgLERdWXte''@;'; put 'put ''Sk5HJl9SeDdjKz5jczpKI19dSW5WQW1ZI2EsO3EsfUA5VUI2aCNIWDkvK1BINSxHd347dWtqUGJuSlZ7NXxUIVZtWnt1IzJZMiFoJGEjKGVxNFpeIWhCJUh0Ui91bHdjZl9fZU01TzFPcENZSiRYJGguRTlRaip0PXQ+dClIW0JvPmslR0t2RTFMSWwsMzp2LyskQyhXaURAWVVvI1FeOC84ITZu''@;'; put 'put ''KTVCVHxRP0hTTy5raz15YEg/ZEREPHQ0KlJqOHtrRzRjLzAxXWJyfT9YRnl3W3NgdEh9PTQ9VF53X3crVlY0QmQ6fGhGfWFEOGUicCglPGNbcUo6L1B9eGpJcXs1OHdVTl4rS1lTTD1fPzJtJVRUX1gieWM8N2B4ZXwiaCMoX0lEOEx1ODxITHA4SV41TG9GUVBTLHFma0UoWExLYEZYdjJifU58''@;'; put 'put ''VShEcVlveTteITNSZ3NmK3h5SEZRIlcsZWNfWWVARCI/aHFUK0Q+d1k3K1gmZW51S0pIIm5MU3BbYjF3aDArc30lajp1LFNJKHAsVlEuPW1hKCEpfCV2elF1byI5aGZpW1B0cGp1a1dUXiVVaH1bVU9MakhfbSFCKTxLPXpPIVl9eF5jKDEueF84O0V1b3p6JjY3MyVlcnEkQSZBYUQ+aUhLY1oo''@;'; put 'put ''SmIpd2dWan51TXQhbVUxV0hpZExzUEF6NypRQzQ1aDd9JHVmbjZrRnpReFE8LE1MQ2hqZ1toQD9OfiFkaUMmPV48ZVlVdyllWFU7ZWM7UGsiJXpddj1yOj8zODdgcHEyWmpEUiQ2Sy5DSWt9enpefSR4T3hGRSFIVD5WO1ZgOilqci5SdVV8NSpRNXhRc0E2Uzs4ZzcxUW5IU3RtVj9wLGE7NHlf''@;'; put 'put ''NjFtMXtCPCJoeSRoNnUkPjlDZlIhPEs+QmFjIzhvam9gQnImfShWREI1L0d8THQxMUEmQmJ4SiwoX28qM2R9amZtZ35ZUllBfkZZRE4kemkkezZ3VkdKV3AkYzZwdVpqUHBkNT0uVWVFNGc2JSV7PHF8X08rVnhGUU5ZSTVLb1prOy9FJT9XVV1ePF8zIWhsQ0tfV1smdTNdYDw5KzlTNCMhWGE1''@;'; put 'put ''XkAmZ19sWlRrPD9qVi9mdGEoWDNHTGBLbTE9PiJbTzpzJVJiY0I5elp2OCxBUmZsNSM/SThCJTJSSHVvaik9anUvSlh+PFhdQWgoMXlZRl8/aldhTVJEODV2KkgoPXFbP0hybzhlW2NMLHNEN3dmaVQzQn0qNmMxIltwWmxrWT0hTzp4RXBTZjtMUFJWWGxtQC8jJkU6aTlmeDNpZCk4dFsoK2Np''@;'; put 'put ''eDVnJDgxTktRQWsuZ3tBcyxFZF5+MixZMV5qNnU/amM9aENAeSZQS1BiV0NCKEBaTTQxdTkyTS4kLjs5OSJuNjs5ZX4qIj9APSZUIml4TkFANXRbdU5yajlMdTRUIzlvS0FiQj4zQn1dZ0tNan5ZWX1idmAxNFZvcEtCdjhZMDsrY2EmOWJAOGZtfE93KnsoO0VqKGc8RTNteV5TPUBIQzxbLDxS''@;'; put 'put ''MCVEb0xAcls3Ny5AdWBPMUxIQXo6OnlyQT5QdnBYKF5EezU/cEhfLiFwOEs2M0IvZFJ8SjImV19WaXIrVSV0Om4oampQRSx5bm9IJnZ1X0p8THFydiU7fXYjM2lGKzlMJmolWEQ6YF4rZU8/Vyp9KkNAWz9+aT5iVUJgXThgNTZyK2IpLm9dJjZzPF1TQTE0PGZdY3MwdyFzUHlbOD1ZflQhc3lm''@;'; put 'put ''bz1JNHB3L0g2bSZZaVlJXiE2dyhTeD5wZl4hPzBuJkdxQjxEbypnNzMpeCVoamIjZS45Pm5NPjBwcDleLE9PQk5FPUU+NUFWJXxZcHUoOUchXU06NzxIJUQkRXJUXU9WKUNEciJAOENRU2E4Rz1TVkBuMlkqS3QwcjRWdDN2bEtySjxrMytVaVkrJkExYFBxXTpBYV8xKUojKSVraWplVlIzT0wh''@;'; put 'put ''JmRBPjlMU3I4KX4xP1owNW5jeD5sTD5xRXFMP1AwQ1FINjI6QGN7RUBAbVY3TG0oflIzQl5CI2YwbWEuSSl6LkFnWjk9dXskXUp9clAjaWk/bXtnO18vSDc1NC9dcDlRcWtsXV0qOWNbOE0rMWdhVmw/Kk1wdkB4enZKQ0Zudj9ePXVVbjZLQz1jcUZZY1t4PlRFSTB1O0J7UFRtcz1qaWBUM3o7''@;'; put 'put ''MkJUVCZMRnxNSWFZUXZJU2N+LGgoXlgyWSxlXisuRkwkfVNNfV9pMSREJHhxUmMlfktNY2NgRGV8fkRIKGd+MEFsKiFHW3B5Rk1aMj1xLitXdWlLJCY3dlJ8OSx8cHM/ZlI5JCo0VX1eTCpZJHB7SGo0V1creER6WHp5eD9rZk0hPE9GPDlTRihie2VGTVozRkNEImFXaE9yV01zJV0hfD0+VlBm''@;'; put 'put ''Q3tuZiguMSx2KVZYcVEsTUBfK3BOZklXPXMlVlRbfTM1JiRRRlcoLnxbWT9sWnB7fURhWHlpel5Cdjc0N1V8ZU4jOW1mQDpzRVVPaU5zMX4xfjF7M35LTD8pNl1bKlJSdyp2dyFwWylRQzlLSmA7PHBvez1XfU5+IXA7fnN2fDxsYnkpZ2lhckp2Yl5ZRnhlRXROIzROfCp8Sz1NeX1WazRRRHtz''@;'; put 'put ''OTY4IktTUntUJGIuX2lNWD5nJU5pV043KnI5WVdvKFdWbEpdRH4jOkJeOzxlWCE3TyIlY0UobyJBfD9LPExxW3k7Vi9mfmxfSUJ2dzBEej42UVlidD42YUlwP3Z6T0Q6SVVDSlhvIX0hWihafSRAVEIvRHJLd3IxWkBZdyhlTDRkMD5jPG01e3UvUnt1VEU0R3x0R3RuOyxrTmM0TXFfUiFQb003''@;'; put 'put ''MlJpZT9PSlZkelU7fXF4dk9NZWpwUSFFMXBOfFZeUSs0ZCVEWip+ayMvTGFDPUw4JUciSzYxYDtsYVFUfFs+PzkuLDksTHVDW3c7aTNbZFNfOW85UH0jencsQDZiZFRpV1JzL3dhUVQmUUdzNWRjRj0wV1s7akVNNVRFezVWISVRTiFJR0xkWTgrMjRaIllyXj1mIkJ+N3hGMkBXPC5RZk9OdS49''@;'; put 'put ''Sm9fZ202e2JqM1s2OzB6UVRGPTd4TFYuMDhENVJRSWg6XkYofllTa2dvVjheVGRpQWhEO2J5dVRYS1pqYUNtL3hsSkNFTUVPRS5HcE1KLD89bFlnc3lpd0VyWFtmVjV3TldfIjgyZFtNJWgyMSpsIil+dipoRUNVKnYyfVVaNHUzakJTMXRpSi4/REZnN1k/L3I+NCFtZU8pLmQ2VlNrQXlHaGR8''@;'; put 'put ''Z0pCIi9MWjM3YVhLcV89IUhJdHlbP31fViQqSi8obFl+SU96NS5IOVdRKlNHSSp9eHxmcGBfXT9mcE1KP1FDTEdWPFFTaz0+YF5fPyNfI1I3SldubXtgeyZpNFFOaFpwUmd8bn5Ub1AuKHM8UGpaeGtpLlQsJXZ8cWt5Mk12e3AxSVglKz02PUdwQCo6U0poL1U3e0Q5MmA2fXVQREp7bkJSTlpH''@;'; put 'put ''MWxyNkZad2pxLiohbE0+O1YvSF1WPSZqenI5L3ozNTJgRFZCOTh0XnVlOUpQSShrWE1zYUR5cVE6aSNeT2gzMSFiUCRATXNgNXI4NUlkfVYuMDh7bi5gWXA8Q1p9SnhYe10/en4qKnpHfGVGSklHMHQ2NVp6fiRRJiR7LipZVigkd3VKOloxXmpEelQwenMxKU1aNHxxdT4qKGswMyg3MFlDe3Av''@;'; put 'put ''QyE5JE9tTmFLMDJ0TVRdQT1CPWU9eEs7c1A4LkVedEJtTzx1Pl9mIyNEdEJqIjtWa1JGd19RKSVsI3w6RiJ3eyswemEyNmouPnZ0VFE7RTxgX0NoWFJ7cGU+WGJQRHF7R2kuSnZrTDkjUEU4RzpXKDdGOXtvemBweD1QNnN0JCxhUEBnKXY/fH5LWlR8ST1oSzI5KUp4dHxoN2M0TmhAakFyVT55''@;'; put 'put ''cVhHazpEJkUkZGcoQ1MjJEQ3YiQufiVKOkxmVTxYITpTQT5obXgxZitTQ0QoLGtKIUtdOylwUmozaEk5OUdwRDxyVkZbMW15Ly9JN2xybU14fUkrVSxIR2dOITl2e3BPMk5dRCl5KVQuQyslbWI2IThGNCgvWCF5eixIUCV9JGAxK0l0bXpoSHlkaixOTHl2cXdKcDVDXVczPyVYPEFnZn5zUENe''@;'; put 'put ''YXFIfEB0NSQkbEByYmdYS3FfI1IqT0U3WV0rMHVwZnN+Y3smQSg5MGRqKyQ/XSw9LillOjJGQzReOSRrOzhrWWMwZDE0Slg6e2cjUD9hcjhmcXppPnd3TX1yO2p1NjZjcSVaNXZ0KnZ+ZzcxbntwQGN5dmFCKSQ+a2NoS2R7dl5LL3NaVX5zWitXXk5pWldnQWl7PilgOSk+VF9sUn5YcGI1akJf''@;'; put 'put ''KipIe3w2Xl9EPFVpfGssQV1+b2MjRnF9VGIpY0dIKnk9NnBwKHV8M2xOZTVaT1ZUcldFTTtjfWREKyVOfHJibUNaKVdBNnJ+KngjV3x2ckhZPShlSjlqd19EcVJNYD56RHVTaGd7Rz0iRzxfS3Zta3NGR2FWNWAwV0hPVytESSNRdytnNWtmSFtlSnFja0RJMHErO09vMDExPnAqRGIxNHNJeV11''@;'; put 'put ''XkY+K1spO2JLPVtOP0A8aGQ/QnBmSVVCVzslKHR0PUkoMHBEJT45bDA5dGlwb2kmUktpJn52c0RGO0A/WyZEZDw6KmBFOyRVUHpedlYueG9YIiVFQ0U7JEZodmI4KFZFY1hWL0d7LmkpUypXTy47YXlaKX51OlMuRkA5QFJsNVBxblQ+Sy5hQm9+Ryt5YDc9X1t6M3RQcC81fkdlOjsuY3NrQSEm''@;'; put 'put ''aU07VixMW0hdbHBpK3JVQVFXSWgyWmFLd2xTeCYmMFQ+Smw1fGEye1UpJSVSMiovUj82JDhwc3xHUkczSV5aXjdMNEo8VG1pcz1GPXlCQDBtWEUwOUFjSlpEa3B3b1VGej5JNz1XPEsrJDpGW0IqPkdIW2NkOGxfUEYkPmpgOEAjdDs+PGFBdXtkaUN0X0YxfkFBQyJtRiRGdyM1Ojwwbywlai9M''@;'; put 'put ''bzN0bDhqOkNTTFFLJWM9KzgwRjAyQm1bMTVpeSVDS2NZJnJlX1YjY01WT0FPQSJHb19ncSpyYGpXQ1c3ZUpKXXYmW2ZDTDJvTXAlJmxGJSZZc0BAbW8oPDJwTl03Uytlekh9Vl5KVi59a2VuczQ7cWMkT3VEMDA5UGUuZ29jZHQ8RUFeISgqNzNlNHhUSjo1I2xqIW1ReCk3dlNSdy91SVZnN2gx''@;'; put 'put ''dDlvTnNgcH5eVm5DKXRgR2k/IW5mRC88WSRwPms8eDUsZ30mazxLIzw0bD8/dmhgTFFTaUdoOntFVmA2bVNFa21BXlFoJUt3S3JKZFNBYTVlQSZqSSI3ajo5aEBFa1NAaW82dD1XaDVlaFMjakImKDBSUUhUNCtfZzY9fWAieygrbHh9L0R1OkBxMTNFS0c+dyxgO2dCVjApfiVqMTFYWSpnNjJZ''@;'; put 'put ''QSZsL2MucnxNSUI1aXJ5WnpZXzx8XVBOUVRPTlskbHk7YWd2dG0sQl0qfTwvaW1HNkpIQz4ub28lOUQ8MitpWFtXX3UxXUEqKCooIXcvZGImaHlgR2YrcWJXQm9CVTBlezNHaDoqQyNkU2Z3aTxUbTxoU2luP0A9I11NR1BGYjAhKihpR1tJKWtSLEs3N25walAyVjd2O010SyU7JnFqM0FeLFpN''@;'; put 'put ''P2NtVS9xV0ZWcGZwaUhbOV9SN19gbC8yUzpIfmQ2ZyZfIygoTk10W3RgfW46SzNsVFNjUGJbXjBLNXZSRms4RT8iWzdeXj1wfWNtS3VsMm9RaHl2NC47MXh9JCs9Uyp4fnFobHF5LzY5QCpBQHQqeFJlaE5dQUBrIV5VNSw0KU80OF9nUF9EM1k1LGhZUC5bZ1lkQ0creV57MEltekNjIyxiNS48''@;'; put 'put ''YVtIeFU2ZzF+I3Q7XUkvOns5aCheNU1kJCxLVENTJC5Ddn5wMz9DfSpKTjNzeyJ3RSskUUA2Szl8NG1wLmNDK0Q4OzhMcW84cktKOTBjancoQCxqTCtEQFolNS9OOTwoRWA2Z3lzW2xHdV8pOj9PdCFtLnZNWn5zZH4mbFsmJlRgOW5EYUx+aGIpbGNeL2t4QGdDQC4mWjJsMU46eEVaJigseCVB''@;'; put 'put ''fiEzMm1IRV5jMTB0aXU3ajNdUyZ3entRT0s7InZWJH53KHs+RWE7JiVHUVdyXi91bC88TTthPGxISFhmdCN0UFMxXiFfTl5xZ0ZeO01kOXZKXXdfOyRYTnNWPEEqJlVBJn53fSMqVXYxODV6JCwrfWV9Xj5nN19JbTcpMTFUc2clVH1CakVsVHYsWFt5TX5TKzpOfj8hJDRHUTtuOmk8SlhLZE49''@;'; put 'put ''JSZXeko9dWhUJDFFeF9VQXFwR15WbHx+SmxsdGY1anI0KXJeeVRQY1dseVU3UUNSN1FmO11wKUh7VlF4d3ZWQEluJSZ4Vkk8eCIsP11HNT56citFelEhcHBgOFlxSURgIThyZTJtJlVLKno0TnRVPj0wb3BgMk0/X3d+TXUqKkgiNCFoZ0B8U0Ivfj1AbWxTbypVZ209JiE6Ujl7VGQscTpURWFg''@;'; put 'put ''VVImc0g+TH59X2w6c18pQlV0P2pqSUU4LGMkc1RAJj1RUTlfbmdqTHc2WUY8K046JWM5eW8pfDlLOVl1SXZdR0V6UU1SLz0hfmBVP2pYRnllQzwjfXRrYkVLLjRhXS90Xl4lPCs8JXtnUlMkYko1P052WjRVRSRrbXhHXWBgX2gmbUNLIlJGRDh5N09meXNJQHE/MDcwKXA+QHpJXWI7N2V1JSps''@;'; put 'put ''R1o+OVVoaXA/ZkxAdVIqS3A/TjRlSll6cmQhdFp6JUNJJjU2WjFfQFg+JW1yfUZ4Z01YbSliSHxfVWc1QHJYUTVXSClOXUw1TiteKTJGJCp+ZUEoRDF9fEpUX2AiaHFZTDgjUEBlWysifSFFLk0zZzs/TFVIMURrV31UZHxfLihCbyoiRkFKeSIkOVJSTH5oVUo9Ljd2Ozp0ZVkmfTNnNy47fVZT''@;'; put 'put ''Jj0+RT90YCoxfklmNyIkUW8zU2NHcis5aCxOMFFUKVJsR0AsVjQ9Ml99cFdLan5wQnZnPyhldWx4RUYpXlBBYzhDRk1LQCNxKSE+UHVrT3lJLDhxRUcsYVtnR1IwRjwzODFLcW9lTzA7OFl4R3pxdVJRSzxUUStzRkEodClfd3AlUGUhKjhicDpqSzlYO0xUNV9gMSMla0xIaShDIk4rfXBjJEdA''@;'; put 'put ''cWkrXlF0U3lzS2t7blNgTjI7PCphXjxFU2hSOnhxS0xXfSM6MFAzOEY/c0VgNDA2PGFiPk8xNGl0b101ZDljOl0hRUArcUYuKnJBU0RgZXQ9dXVnWFF2VU1TdjhPUCtrZS4yQ0o/NDtKdW5nLk0wfkE6d186KV1TQEVqfm5EYjpMKDFtTC5UMmo0ej5WamkzPWxaJnd7NG1RS1AuQn18I25NIytv''@;'; put 'put ''OjtjTWRUYkx+dX1IbGxyU0NtO3RwNFNWJTlLbFd7TFk5KCpaWWEufENJc0NARkp8WywqcDtwL1RLU1hMTDZjW0Z5Ujs3I0dqSlZiTXhCb2hhSEFEOC9kOXRTeV0kN2lkcCJnajdMW3w6TT55TFZqdnxhVHFmflpqfk0xVzMmUEN1aT4sRH5EYVhIZSY2UDp8OSNiWXhve1grJHBXXnRRS2pgeUUl''@;'; put 'put ''Q3lHenA3R1BlLmBROz9MLk5DKzVNW0hbbmdNaEZAWTZwPlRLbFdeNHV2eHhGW1k/MEViWDY6SlsrcT1edWw4MlssZ2VCM1VXQm8xSSN3dnxGeWhlWSYzS2dGRlZ4e0AmaHp0cTFZI185ST82cVFRbTJycXh2WXokaXViRmIlXT53NE56djNPSWsrLnUxM2FGMFpQbHRSK0k4biFuS35KLmtgT3gy''@;'; put 'put ''L0FkKz5rUiExUkNzQilXYEZBITw7V30kUjlPLko8NGQ4ezxlPSxPd0wscVlUbFdDYEdHfjttN0JsRjs+JHBHNGhzK0QrdkMhbT1obUJ2Rkh5Okw0PVVmeExQMnU7LD9qRF4rc1AuQmJ4dUNfcit4RkVdXjs/WSVTcHZJdCZLb3R7P31gd0V1M3U0NXNQMFElMkF+aEpgVDMxR2J9R1BaeFNiVXdh''@;'; put 'put ''LnwqVUVAdlp+b3F8VXlQfmNZSDVBaCU5WikhSi5nOkgmaTI/MHosIlF2e1lzTU9CR0FwdU54aSpxVEphQmohU0RFNGQ1RlsuUXpFaXQvMlNdI14ydUEwJi5hVEVZMyNoZ05eKnU5XlgucGcsLiNXenx8bU42L11bbCRfJCtgNllFcX1eYS5+JWIoY2hvNVNCImI5e1UxbEQ0Sjh4QV5jOWhXTFJQ''@;'; put 'put ''QGxCWlh7dVV2N0A/aEdyWF0ycWIkK3hJPTFKczoqSzUrXlFYXUBiK3JbKjd3bnRMPCsyRnl7YD1MfE5BV0UkIWddaE0qQXlGNm9UZFE5cCp2Ui4rZTd4b1lSYDY4OC9qRzR2eH18Nj95XjskcTRnOCxFN1AhSShnR2AuQTpxWFJeJCxoM1FSMEk3R1M8b2BzTjkkQkNaMmAhWm49d1ZpcXtDKU9e''@;'; put 'put ''IU1JJDRyWiQycEhQfCJzSDRnNGcrLGtGb3gzcFBJSzNHazU9OChBJFExUHlMIzNKdjxuJFg5Ji57YHZvKnNTR2gsTXtEfkQ4M204VSZ8WzZSPVFFcnNSTWNUNDFOQy8pUlImLGVJLD1Me1o+IVNsejspblhoWDd+XnAmPlhGWD9WaWxyfTkyMSJeTXA3ZT9EKHMucyhMQXBwcVpkXz5EUyhMa0Av''@;'; put 'put ''OS9qfHZPVjlWXUtUcngwSDJWX2tLLDBmb0QqS2tWUG8hPHI+STFafWl4cXZeQ0lXaSQ2XlFqQWlyQV1VXitGSUtiRUFwdGE5Slg9S2lxJX45ZmVVeU44WGI+Z1JTLGR+JS8uSmRUT0Y8Kj1sSWAqQXlMZCZ5WGw9WVtmUjwhO15neHt+fUVeRT9MRyN0aCkqdnc2ZX1hd2pxLFlbeFV2R1ZAVz1u''@;'; put 'put ''fVk1WzVkRjUkbFpUPVN0UToufChUYD9INnoralE3UmpjZjouNzskKj95WWR2dUk8YDlicU1zdik7eS5aeVhzXjUjQ1I0LmNwPmh4LGx0e1olbj42cFh0dHlIc0t5IW93JjRMdCgpKUZ9SWthOTYlYSFCe3ZwXz5tTUVdUV5VVlFafVR4ZmtbOkVVXXshI2xSUCN4Zl9FYTVQcyZpVUBmPWQjN1BG''@;'; put 'put ''ZHt1dVQ0SE5xOWg/RyJfeTFLbzNydiRMbT9JTFBidVhKQWY8WDIveGZrLG1FZSojZT9IWTZKelppYlU4QGAhTXM8dGpqIU9yQ0lpNyk2IUohNVhedSU/P0MqUHA1K3tyYzIoPUlPRFlCS0teTSQ6Qz1JNGkjR1VSNSl7VHQiQVlOOndweFt0JCxuIVt8XkhINUFoSmR0M1VPSE9wX0JFcFopVHFr''@;'; put 'put ''Tj4kcmphd3E6YzMyP0RvMSZibj9YYlo7XTluUWBXZkxlTEJxIl1XI04pSGg9RU5We3lgdVg1Kz0lay89RVQ9RHgsRHB9ZDI6SFtLRiZtcyk9an0kVyolbXtwInJDbXUzRjUvMS87PSMsW0QjUSVaNTBJJlB9YTNZd2Y4dHZlT2ghJCosan1KIXkuYE1neTssPlIxKT9ETGhxLmFpej0mNk5DWUJ6''@;'; put 'put ''YTNCIjdsTUMzS10ueHN4R3gzbX5ZPk9LTkY1XUopNCl8KmtyQ3VucT1JQmdmU28xWjpAenk2c3U9cW9mKXN1ZD01P0gqLGxGYVssPWhIY24sL0pWXUM8dUx0ITc4ZE5iLER8cj57bUtdKWVJeWx4Umh0bzspQVdGRENYfWFbeHZueFAyJll9LDFfMXhhUVtDWjVnenh0JVUpP012IW1XfHo2bEYr''@;'; put 'put ''XSEsMXd1Uz1uNj4relhLS3J9clEqWEksbE0pcSFLQm1pYlA7K2teTjNha3dJPCxIbWJaUV5jZHEkMmtzVnxUeFEjVk8iT3U5Vk9HdFl9JkBdWCZfWXpdeTYoRl04ezZrcX1TXUd8KlRHeDRDdllkdSFpQWZsWjVFPCNBSTtlbj0oPXw2SnBCNFl9a0t2e0IwQiE7c11IY31HLn45SDRCXlBzMFBy''@;'; put 'put ''YSVFNn1BRFVqVWp9fiIxaXQ3dlZLRk8iXzFnUDcyYEUkPkQ5NHs+cV1BPDtUVSQuRFY3cHtOZj1mVjg/RE8maHR9M2EhcXskV0Rhaz9EcEh3NjlIKHlPLkheUlg/YDhyWFRQVTVtVShIcVU3XXw7bWZiKkhaOmNsRztAXkdUfnkxLm5JPGBMR0t3PlZpR0tsX345WTFKfVBCWDBpUDVnVjgre3pR''@;'; put 'put ''e0NzN1UiO2Z1dXErZVpeTFtdZHRDdV15I1JeTFRKdEJ2TCJEbEBXWVA/RFYxVCRqVld4TGJAQHJtYFQqWjFBYy5DeE87PHFKUyNXX1BCUHtmQ0IvKUYpRUdOfmRlTWY2OXQwMDpLdUJhVmVHaXkmMHRiYkZKYXdUPEtScSYvWUwuc2lHdissME5obzQsfW5feylGeThCeHxzVmIuUVprK2A6cU08''@;'; put 'put ''WHBpa3JdN2x0UWpoaVN3Q2wwU2owNTlFPz4lVkled0FrJVNgbW8zJi9yVSw8U35ve1QqP2spOHskYVAuM3kvfXxJLEdzYzd9ITE/VnJYMWQ0bkZCdyhTallUZEFIO2F7QmpeTHpNcVl+K3BdOz1xXml3OTdHNjFOdiI1WE1hKXwle2xkcj8hX3BSfWN2enUoe0o8azUqaVB3JlVCYSVLUUxSR0Vo''@;'; put 'put ''IzBBZVI3P3Q0fHJlcTp1TGN8Uk5XNyQ5MVMye0NoQTxmKlp0fVB6bSNEITwueE5EI2AxND49dntXPkpkOTlzWXZeVjdndGlWVjw6TX1oN3R7cENdY31sZypIZmAmfEpSdFF3cGxJKUdQSCQ1V25uY0ZiIU8kI3Bqb2xHIkVzPH5PZF4oP3BWdWlYdyhIbzFfaUtyTHVIX0x4eGBaZnJzOk9yJUhr''@;'; put 'put ''YT5xYnIhZSt7YVsqNiRXdjdZX3soQCZ1fTpWbnRreHxMZDJeQyhHJX05TCYoKitfNDkvJiM6X0NzR1d+cDAwc0x0fDZCX3s1PUJUa1MjbFdRMnxAfVBwVCgrfmgpYXt9Lj0qdEMiZSZ4OTpObX1uSVI9Nj4jJW17M3YpKCpweVN8XUllN1NEd087QnQ6U1tpQiV1XVp9LH46T0M/fD14SntTaVQ5''@;'; put 'put ''I3xXK1ZXKTRnOjVNTEk3Zm4/aSEwVXM2KjZlfEg7YkZSXW93aEdqfEB2bFIrQ0Ngfi9uP0osWGUpbXQzM1IrdUgrXUZ0NjZIdkNFMSh5ekE6bHw3d1ZDYElgTF1EflFYdFRrZTtNQFRtQ01HZylLfjh3d1twNikqMiVFZjA4ZGske2dEQ1Rbd1pPaylkemhnaERfezJPbjhSSWsocEpMXVNpOmtQ''@;'; put 'put ''LCo/ND0sMnBmRH5PUU95W2pPcHdrc3hPLCpIKVg+SWRPTmk0altqWCtnOEo7bTZ2OWA/RTF4PUUxLGhIfUhmbT9CX2s6Xz94aklfM1NCSEosUyYrenouVEZSXW0/eWt3QyMvPmx8LldRWVdvb0dWRUkwdTxzdmApZD9LOV5IQkMpODdbfDZsfjMjPldmIn5IN0M8LzZbU1l4UnpMS3k1PHM8Mn4x''@;'; put 'put ''QzJva09nclJFXixpeUllTiMoVHIxUCZNMCpPM2w7WTdBMkZMSiFLZmczZ3chdV5HaShGYEY7SFVEaG1dKXZrRCt2dC47Zm0qTTg5SUo5IjckO3FIRHg7cURgVSVfbnEqUDBXJUdzP0c4MX1UQzRnKC8mLjY+SEl+fiRhS3V4Snt9VD07Z1Y3cWNZLzlBaDB4Y2BRLzlLZHkvQFE4QiI6QD0/LkNX''@;'; put 'put ''e14xMFNrIUUwV1V3WlUmKjw0UmphYFgsQ3smdzptaFhVTDRAcVgiMERCQ0h8JTFfbmtCPl1eMU1TbD53QnIxaEsjO3pdJXUrUjZJeXRDSFp2WnQ6cCo7Ik1lMTZ0PHIrPUYlZXxdUn05aXBUMkMjN3c9RD4leyxjMWA9bFk1T0NoQmw+alAhZGwwaWE+QSNXXmRQI0BSZldoRmV5dXU4b2c7aHxn''@;'; put 'put ''eHtab2FpW0x4bFdVKnhgY0wmaiE5dSZtNyYvdjB5Ik5KZzBpO0RFITB+PzpKaGRjR2V+QFV3WzA+VDNsXWdVLEx8OCwmO0g6JkorQlordkNEeCp9U0x+aDRWUHA3XSRVNF1CX21FS15CX3VrVCVGe2RFVktyZEpKYF12UkxQLjF8ZUlqMGloJEdXX0lXR0EhRHtGZmllcD9gWyRJSCsuNEczSSJH''@;'; put 'put ''Rjo4NmVkIXo9QHR2JjxjViM3WSt4ajAuPXRrNlpeVmxBSUR3cF1YM0ZAcCo7aVtvNXE/NVVwaVN2UnVwSmBvUTsxKG94cUpuU19dIlFdajFhekc3aTxid0d4dH5sPnJrb0ZCekE3JDYqQU5dPiUlYX4+KVpBX3tmeT5fWVgvQCJ9OiUpLmIsNS8lNVMkITVbXkBBaSo1SH4/QlhQJVRgPjdZc1FH''@;'; put 'put ''NHBUeDI7bXdjMDowQXFzb1cmY0tBPHA6e1dUb252MylnOihWUilINTJgU0U+MyFVTWsxbT1Se2lIKEF4dE8hWnk4RC8pbHxpVERuVTwjUVYqMGtFInooXyI1JCFLPHU7c1Bvc2doZnYjKUdfbmI7cXZSQVtuWHZeRWlnR2VqUHBFRSx0T1Y+RkgjNClrNTp0dVZBbXI4NCtzOWYvL1p7P1hdcDA9''@;'; put 'put ''Y2JpdDNhRX5HcG8kaiZpeiM6alRmNE9NITQvPU5yWCJyaXVQMUN4JCxGLFhwMihWQEl6P0RoSyhCU1hGXlV2WWdKTkN2SCkvJGtzNzI9TDdVZGNUeF9aIl0pYGRmZTgsa15hNEJdO2g/WGUhWWx4O3lwb196PUxOYi5VWkkkYkJ2bkV1YDRVbGN9aUl7eytsan4kTnMpUnpZaXhaQ25eNkZYPyg0''@;'; put 'put ''ZkxsPip8Y0RkQGspYEkjQF5rQWlKJmVWXyNqJFZtK0hMQFBmcWJ4ZykhSiR9eTNXUWlePTxpIXlVcUlCQzBfL0peLjxJfTNgP0w1NV02SXBueChjWl07MmspWGx+WWhGSlRweCFoMmY3Zi4/K34oI1BqaSwpaTRiJDRWfmZQJmdkfX1wIjFqLmtPUWVmOkV6Tnd9XSFXcnd0e093Mi9HKWFAV14z''@;'; put 'put ''X0BXOWRaVk9BOzRDPjcmSWdpdmVOQlRIPXRCcn1EZDMvO09BWTYselEiUVBZImBAfWBRN1VrcTR8UkMjQGFJJDAuMDYvZmE0MDpKUTltS2thflB4XmUzRFtaZk9zUCwmR2BEJU1rPnx1MnVDb2pjQSFHVzNgWz92cG05ZjpDWHosPnBbTVEwNXYqKTwiKn1Ba2dnWSVVLkZWWVl9Kj1QdjUzWCVY''@;'; put 'put ''T2FwLDJhcnF0NlJ7OSt6M1Z8OyspY2BuZXg/ITQ3R1J4eEM7RklIWlNSSVF9VHdhcV86ZlUuRHYlaldDe3cydzpbJGM4QEtCS0Q6ej5hUWwmMjlqI3oqcUFmSCF+W0FiSWwpbVVkVHdnKXsxe0lea0IvIW0jdVpTI01VfUw3eTI6Y11bcTtIcGxxZmZ7MTxHcFokWjNNQEtMLzI7aDpeaVc0cz0z''@;'; put 'put ''eFJ7QU9HMDo/WmNRIW1hLl1WY0IuIVhnZnJiX25JZlROTU48NXV3LCtMTVRgViZCLmZpZGN8bFg8Iyk9UEllTFNBVlAoTCgqMXArfHBkaEBwTSIqfmlMKEl8bmJTZV8hRmYvPkRTc2tmKnV5K0A9UnszV2ZlcU56Old9YzROMShCUSVRalZXTjNEV3p3aVAhT1sqcVg0Q3BGcFlpQ2NQfkI4SFt6''@;'; put 'put ''WiVUQyZMIXZvKG4vIWMpKDIufSUvKztea1grYUg0ej8wYmJVdiJwNmkpZSohaXc1JHQ4cnglc2AzaGlQP31db2ImLytSUjs/RHtPWUdOQ1IpNF8kcXslSnNidiJvVzdHQVtuWzEsTWorMHVaYUBHRS5CZHY0ZTprbV1EKTBqJkhrMVg6KVJiR0RjN1VgVEhgZXM/IygsZlR0PzFXaVVxcGl3IXlQ''@;'; put 'put ''X0lwXW54PyRNZSoyTF81YX45YnVEbER+R3ZGVDEjMk1zRX1icSVNKCt3WUAzXjdhMWM6QixsMCNdQUZqR35RPVJ1SXAsblR5OFBWfnpCTWBqWXlgYzB3cD06PEk7LkVhMUBiYUJvSkJtLl5iWXpRWnNpLCxPPnVteVkkLElLPTk7P11YSUMwM2d+XmEpWmFYVSh1ZSoyYmpVNmxeYVRZeEl9Tjk2''@;'; put 'put ''cXcqK1h5QiQ5bDtkRlhXOE9mZTxqUyYqKWNCcG8+PSJYR19aey49KDdoVllZYE09QHd6K0YpIzF6fHB3RXpPfGJSUGRmIXhUdWQwcFhyV1taRmt9bVJAImRuMWtqPDJmeGlgV3QpMVgqTzB7cXhie1MrOjNwZkZ+REVBbDFCZiVlWnxEbSJGUk07dnhNcDAoUHg5Yko5QldTKD1lMDgvJFg6XT9J''@;'; put 'put ''RVt1UF1ZZU44eCllOlJJfUBWXiw9JD0uKlBDZHZXNVYuS0Mke055MHlteSx9RG1Xc0N8fTNJU3UyKm9neC4oOHtMS1c9ZnhMb3wrI2ojYihJR25wQU96WC5OOVttOlF1Oj5GWUp0XXhAR2ZCOTRuT1BsYT1iNCoyI0d9NjlNNVg6RXJBSHN6LHN9KVBwMCgudXYyNVYjNjFTVT18eDZpYyRzTUxy''@;'; put 'put ''ZnhFWyw9WWhnVENXTDRPZ1dHY10vNlFwXV4yYihQW20xM2s2JCo9b1tNJShdRkwvdm57UFVeR3JTN0xLVCt8Yj8sLGpDW0Z+KDhJd1UzNHlwcWw6ZTNrY1R4YlVBdjZMNW47QipbZTNZSXVSYThjfGdNK2dweEpwazY0N0Q0eFkzK29zdWt3OjIlYUskenJwPyZjJVNERjhWXTRsQlgpc3R3Rnpe''@;'; put 'put ''Zz90WmpOeVQhcDYlT1AhMD9PdGQ/THtNbnchKzNXOmhPc3w9T3ojaSl6ejxCPm1oW2UzMDBeSVpdTU9NTnlCIUkyMENlYlE1SVEuX1l1JFosLiMyJD87dHtmYWB6Wz1zbWl3dGohUFFILHhiMCprLHJrWGJUe0pLOiIvNyp2NT1LIzJGOzh2KSFOQVM7PV0uYm1lRl5EeUope3E8XWYkQiRnaEZl''@;'; put 'put ''Ij5YPC9zJWM0VndhRnB1fnFHPjk1YjcmR31ORW1iW0l3aG03fURlLDMzSG4xe3wkL0lUSTkwU1ZKJGRodWtaVGR0W3hXeiw1UUk6L0RaKUlrP08hdDlVZGt9TGFCJm5ycmRURV5aXjcxYiUlR2BWbD5PeT0/dTY7Mk9NRVF7XjZKIW4rKmYuX2VZQVlgejF1eyJ8KH14OWhFbEgwL0lWKDtod1Nq''@;'; put 'put ''fmYyNENRKnwhfiVsWis9PlZOeXl9ezYsWWJoVjszLDE6bEk6S1ZZRCNbYX4jSn0jMllaLENXbzJYN3E1dF9qXW0yRnBURTdTTHh+MTo1NG02eiVZJWNjVGRlPnp3KjxJRX5HbilTImF4bSUsXkM7eGZEYSYqTl4iNDZMQzZHQ2Exe0IqVUtQYlRyfVhxYyEsLFMkOzoqSGUsbn0iR2J3JXVbMjsm''@;'; put 'put ''O0hUfnR9SD0lbkMkJSpfZUEqYmZ4KCRNS2hNTTcyRyRbeUdNNlcoTSJsP2hrd0FJTTZ2SFM8PHlqaywybVc5fjU5N0cuWFR7RGFxP2lSNkdxR216TlBQQ1BeaUZQSFZKQWw3M15KVWFXQllaRExDNH5LdUY2SF18Pk1aUDU7NiNMfj4mfEtdXSF3SGpbZkw0WEg1Mk97N0slfWBWNi4lT3hsej0l''@;'; put 'put ''cn1zfno2elZtTiQ6X3g2aFZfd282OS88MW0qdVMjaCt6LmF6S2FjNUo/ZzdaRnpqPmJdITNUME5tZyFZMUJWVzBIQTI1KVJWWDRjd2hqYncwZE8lKyV8VjFlT0klXyw5Omdqe3I5ck95TnAiZTU6eGcmcVpIX3RoSkhZITRAMzkjbXF7M24ocD0kbVg2IUUoUCJtSmNtPXc6ZEhiMUtNJSFUYCIl''@;'; put 'put ''O05jWSp6QUdiPFooeXR6NTFrOG5GPCo4YUBudXpuJlNDJGc9fHh7Pl9EQEsiNDIhTkxwWiRxLmpEXnZGWlFHVyRxNVFHV0J+VlF0e2FAZlpdUX1WdSZwW00xSyhNfVhKUDF4OiJGd1RXJWNncTsxSTR8Wk5DPCk1TXhPJWJUWm42P1lyJVprKVUmOCx9Wyp2XS9MQE8xLkg6TjcxWVdecERdcVk2''@;'; put 'put ''WVRhSmF7ejYsd2g+Z3BmUD81blVAYDM0PVRXVTtPMS4pSnBqXTg6enZnKFJSZE8zZ3YjNGc6IUJ7aSZSNylGTV05dlgpJHFJUjExWDYiX0k2OCpTKEAyYlY+VGBRME9AL2FSdGF3alE6OnQpWEpHcyUuIiksWHh2dyh4U0NVTmtkQXxLYShQLChELG95MnU0ekxDQE98TkVJcXJ6KFJbfCQ+S0do''@;'; put 'put ''Z0k6P3dCXSUjJnApSjw0bCFpejxCaXNoOEoiX3NmeVlpMEQzbF9SL1dQQjlFfnNhYVkiKmcoZS4venFrJTwqcTYlInpnVHVAX3xleE90SEZrX18+RHAvcWVxVUpvNnxddFZlaFQoZS5EZjxdTzxYaGdtVHZaLk5pZmV+QDFsNFJGIUNsLDh8QlRXSz1PNlRPQFZ6OUVVM3E1dCpoMDQiaVBDKn0+''@;'; put 'put ''KjspeUk+RnBjOTZVNUYsUmdqaj1ubEAiKixhNTp4ZkN4RUslYUkpMilhaU1XUE95Vy9EWT9dQ29IbX0+dVg8YHZMWjdyNndvXksibUNPMHR2e1pOUiskb2oub0tzKz9VVjcsfDhpcGUxcEFfLCVxSDl+Z2pXSm8xJk9hLEZ6MDhIcnt8JSpTXk1DWF55dG48Yyo9eVpbXTxJNFg+X1BkVj9eWy5M''@;'; put 'put ''ZTltc09vbHp6YXJPUXo0OEMkMU9oWy9AdUY+VCQmT2hpcU84LFVETkBWUWE5Nn1wI19vR1NvU2V4elhoN0tKZj9PXXpiQnFMRylWM11QUU5aVHxtSFNZV0kyLFY8MiIjfCZCTE1MIjEmdzArbG82e0xoW2NEeWgmZGljP1RQdFFrYW1rPk8lbjZTZEZyVXNGSDVGZS4wSVI9UkJdfTN2dHIsJXFA''@;'; put 'put ''JGMlall4QEx8fWdzYkR5aHlSZXxOQ2BBb1U1d3pIXyZeejExK3gkfmc9WUR5SEFpUCRPQ2ByP191YmErfT8kVml2elMoJl5sZmpAPzt9Z3FsREtjSmo4IWRdPEkwb2giZ2VOTVVZU2o4Qml6XVlYQ2BLcVs8RktbOko4QWErfXU9QVBQVWw3UmVoMHVxQSVDO3dAS3FqODFQQ2BEbzJ6d3owOUBw''@;'; put 'put ''VndKVSxWNX44MG5vfVd2OCpGfW9QUHJaK1gqUSxlLlBaZ21mP1ZIbWU8TF8+MCZZPmgqISk6KXAxWXpDMzlhI2plOyJLQyVtNip8PVNGPSk7XXZmfjNFVXJjdG12Kkh+c10pMm02PmdSeXVWXWY5X2orKDh6elRCKiVzU0tgX3pjKygraklWTSNIP0giWjB8X102cjhjbUtNMyU1bj9Iems3eF4/''@;'; put 'put ''KUtJJk5GcWgzUVpzKU8yWVVTYWF4UnpvOFIzSVBqTCNkWXFhOTowa29pXUxDIiEuazFTbj1RR3p4QUhWdk9CO3lEVVs8WmpHbHpIJmBEIStYNSEmZ0kpSDVCJHc/V0I3dndnbys6eD1MekZRZ2wjIkZteTlGXX0qSCRFSDJKISNRRDhGdUxZMT1JOnhmLmZEeX5jbWM3NSJGQzJkYFMibSssLDtm''@;'; put 'put ''Ll86X29ZaGJ8WH1QT2AqWk1hPkhLKk19XkM9KXdPR19hflA+MUQ5SVtPPUlyYFoxQ1gmL3JmQjt6REFMbmBifl95dTNadlFZZSsheVZGfCZRZ1dHaGoiZCh3SllGJE9rVl5yWnZ9Sz48LFNGczg4W3hSdUswSW9nL1NiR290YHA8ZiN2N3BRTUJ6P29Td31fSUc9dldJW2V9anR0Kyp9ZXVAL0gs''@;'; put 'put ''ZGd2ejxJIUMxJEAmKkNxKXVZaVB7N0g9cXlZRm5iI0JXUzhhcURWKXJPZD9POmw0eFRyM1cofnl1bzY9WFhKJEdDRCFRQXt0MyVQbHY0czRwXUc7WmhRSTUiakBvP1BTO1dpWjUiTCo1WVE8TU4qNFFbIV8xfT90Z0ZuQU1dYDV7bzlrOWp0OG8ibzZTQDt9PU1ycGg1JnI5O0AzfmdZbUo1TUAw''@;'; put 'put ''YVo8W0FPeHZAakNwcnxRaDlzYiNySVU9QUczTzNnazFEViQ7ZzZbPVl5bHIrJkshOXVpUjBJWjZhSF93KmphL3xiTXMmLDwmQ0trZmBJe25EUDlNPVJ1SlZPZl1CT0ohcHlpfCF+R0I7QzkmOyV8SXlIJDl8TSZxM0YjOD12SHV6PV9oQCRNSmE/aXwlNVEjYitnc0JgNG9OJlQ9dHdnMGBwQ1Ei''@;'; put 'put ''WVtLKHByPVhdYzJNT1J1ejFsPnlyKmVGM1tdQG9RPzhpLnl2en55K3I1P3g4ZV1QN3N4OHlleDdGS3FwYXpaMVoxOlMwRGQhWXhPY2xzcGY1a29CemNzITtme1hjVUlCTFBudnk6cnJ9dHN7XklpbG4rYGdvW0R1dF5XL0ZON0dqN2VuKnYlNzpYd19GMH56SFhDPXZNJXhxb05aTDFfOUpNInox''@;'; put 'put ''R3J+Y1VSYnNELzwxX1JzdGFqfGleSDsrVmxoRm5YOHxHJW0zc3VRenxGKFVMaipIK0k8RGQsXUovNEJwfCRKTyY1YHBbQUV0PChxInVSM0k6aEdZVkV0cH1HRVpQM0JkN2RVZjp6RlU8LCtILEsxUk01InV8dExPMUthVUFsYmNSVUMqTVVtKj9IYENUWVIwO3pWLnM+WX1qViQuLEQzaEMsYHIo''@;'; put 'put ''e0VmRVRCQjJMOWl6RVg5bnFHdmYhSiosK1EreHpINj05bk5ibHs6R0U+aiJ5LkUxOm13TG80Tzo5fT9AY3AsTFBnKl1ALyEkKHs0QW8jJXRaa2cvPnx2LGcmQlRgTTFIa1o7YzQsdiZUPEV6KV0sOE1mRH50JGRSaVowaXA4UHd6JkJTb19+REI8TkpNN1UzR1hgPElDdHEpbCNkUXVLc0VedV9o''@;'; put 'put ''bzcpVUFeRnlOKVt5b2BxMEd5SGZUUCI8MDQ5eERkQTZ5e3AuWzRNP0lRLERTRilFcDd7MzFPZTNabWA5SjQvIUw3eypUbjE/SyUlNVBoZ0BWdyREKnxNenA4NkpWN3Y6TSlBYTpRWD96QFVJQHlEeEdWWEt5PnEsWX1+ZiZqezV6Kz5fKTRSZiNpazJZRGIwTFAqRXZ7YzZ+JV97NjtCc0xQOlAm''@;'; put 'put ''RDk5cGFBXld2XnR6RkwrJkUjMGtEMEdLLHBpdHAwMl4wY1QqKUouYktDWHcwNFhRakwhUXwufUFqYzBySnk4YCxkRENjMi58RWhrK3ExKTtrfHlUK0RoSm1NUGFfLy9uN2pjbllbd1RlQSFCS0lZNDQwaCIuUXNma1NbKmgwfVhwfTB6UFY1RmpZSSQ8P0RPXk8pLjpEIUA9T2huUW8qLi5uZ3lt''@;'; put 'put ''UzZVdTp+TGEpSFJlbVJDIVArW3RiRVZ2MXowemZXdT5aQ2pZOVtpZUNmKFB1OUhoXVdpSjtCX3tKPShmc0V5XjhPWVBiUndrfkNNO2JycjIuYTpucnAwNjhmM3Yscjx9OCokSTlyMmgycEh3TjhZQXRFUkEvSk1aWz90YWtrOilEXXlfRjgiQ1EjOHlnVk5De1BzSzNsLz5Vdk8hYjlkfEhXYE8h''@;'; put 'put ''Ok1pI19zTXBYaWVObjdQS0x7aWBfYysvKVpwRGR6TDglYCJ7XVczYixbLH5sMWVrJH5ob1hSVUhoLyp1cDY6PmUvW0ZpNTQ9eWw4IltXJjwxKVZfTG1vP3dTfTtsfGBiRlBKOmwsd05COnl8IXlXM1hBWV5ZcEdxfSsoRTNBJmI+MSoyV3t6a1JVNyJsM0hHJStMd01YWCN+SkhaQzsrWz07WUsl''@;'; put 'put ''dDJwP3hSXU97dCY0JXdMKC4wW1czJlteTHsyPWI/JWlDcFhjJm5vOCpAWXVfUTRXRWkmV2clRkxSXzYxIn1AeClwTEAlcit5SzNBWlQsd1AzSCxTWFRhSjR1Uzw/eUY5ekhHMlhIJjpvK11de2U/X3spbnkpZTE6ImhyeD1SeEpDPG1XelB0UTlEYThDfVlZWlRrekpoIVcudnpiWFJBW1JWWkNl''@;'; put 'put ''fFg+R0hLSXdnalRSSEhaSThLPk0qfXgvS145MFBgbk83JiI0emJlQn1Ybnt1JXlyRSh1WjBxY05ZcEM4LFJgPXAkQE5LSEg+VG5oTllrcWtxV0d6QDtfbDFmLD5HWGpMIXE0W2QiKDozcGNKbS5WQTxVUHxecUJCXjw7c350dmBnaXg3NVNMajh4VW1bP3VFZFFAcixpYXs5Y3AlSCNgcGgjMGxJ''@;'; put 'put ''QzBgIS4sY0ZKaDQ7Pm9wYkdXeS9xSnBEdXw2LF9OYzleNSxlOkskakVJJHlxYEs4YmlHR2NpUnYlOUV8dSVLO2k9V0UjKSY3VXZuWCtAOWsiaE1wWX12dTM7UmQ6N2JWOFdxPmcwTnhMR1kwX0pBNTljSm8yKDRLLz9LfEF8RUVLSjZaIyFeKjRfQVkiZ1pSRncpVmQ1InljMCJKeVpbeC4kXUpQ''@;'; put 'put ''e2R3UyZRRGA6YFpvb0x4TVlCaFteUG4vJGVlWz1DXjZuOHIxVVpJPSFfKS9qVWRhSTBZZVt+VTxTfisqJWtITmAseClWWHlpZm5gNCk3JDUpYyQ5flVQZkp6Z0U9PWZBKjB9ZUcjTXtAKzwmY1pMN3ppKzB9M0dYS0U0fUYzSXNMR1dqRVAkYCxVQiIrKDlTYVQobF8rK0h2W35oakIqLlZBfT8k''@;'; put 'put ''M005QF5Weyh+TFQ7XkRtN000Tlp6dyJwNm89RF5DJCNTaHUuMGF5Q2guLDYlKW94cCVKPSY6UC8jZDpZInE6VFF1K2Y0UTczeGVnJUc2RnhLMmVTWiRJUFI0QmlqMHZYQkN9L29gPjtUdCZnLD9gSHpVPkBETlkxWGsoI15aeD9BbVJAMGE2WX5vW3lsYD8vbG9QQHVNU1VYV2wlQ3VrQix8LmQk''@;'; put 'put ''P1NoUWdIb1pnRylVaEdJO15oKHNRUWwudjAkS3VZKk1RQ2lPeX1ZLFRWWEp3W2hBOn1SYU5mR0ZKekZqeXZ7PCxBSGs9UUREP0UlPFFHV1UlVWg4R2s9WzJiJlAoSThvWUhed2ImZHVOUS5QMHhSRExUSSVoR1dHTiE1dil3S31AfmtweEM/O2ZMX0tGYUlZM2tJSDMkLy5qd05+ejJ9ZFF6P2gk''@;'; put 'put ''KD9VdzhIPzRlaSYwamEwSX1DOT5pYURDT3xxczswPUloTUNQZ3xWWEFud0VEQ2ZrUyZZfV9PY30kSyZMbmMjREJeOFRuNkJnOiE2diRLUDdJPEdUJFM9aT80fiV3SThJS2xHZWY7VS87an5vYG1gdE5oP2h1T1JqMTsuUTJZcnAhaklSMlJkOVQmN3k4JFYrLzN0ak1IYEQpTXZaKWdCMWQ0SkMz''@;'; put 'put ''a25WJDNZYSU/dUk4QHgiMnUsLEJ6YkgqI3lpUjcyOCszYm9rYWhjRk10LkQpeD93T3QzeUM5LEFSMlA4aUNIS3hQb1NFO3h9UGddeX1ELCtofnZSamtnIUpCcmtvYClUJFh5LCwqLFZNNi55MFVJe1smfC9tSypATVMxWGFsUFMxfDpiL3B+ezo4V3ZPWEBzdmhxP0wuNX1afi8wciJaL3JSUWl3''@;'; put 'put ''aTVAaHZ0byFpWypMNkp6em8uN15VXW1yamJpQX1nMXN8LC8rVmFsdkk6QjppUkc6Iy5uZiJWeC5qUnVKMHZaPXd+MntpSUg5RCR8SXpDNH5+cEY2PS80Mk11OltNZD9Eb1IvWS9xZVgrIU1AUmp9cGZoZ1RNZ0hAdW1wOkc2SDlUdSl5MjVaQipxdXxzcjAwND5JUlZqaVJiLjJ+SlBEKSZLSG5g''@;'; put 'put ''TUY7WWk8WDsrRnI1ZyRjeT9beldJSTxMN3BxT2FFdVR2bEByQ01PVFdjaUlRclhyWEkjW1prLlVkYzBJSXtwPEZAaFg3TiFabzE6SjcpVERCTWh+KkptNzI6S3ltOjt2QER5VG9dcC4waWhMQ1RXTXdNZm9aJkxsOik9M2lydCw/enBkUSJnfS9ZaVghLyozfj1gKD1hJTAwfWxvJUptSGlwJiV8''@;'; put 'put ''U1YlUWRFall3aTosY1ZnVzlqZkxuPztIUmlBP0slNTdqL0Q4JGdDKyRVYzRiT3RpTkBVdT9qSV5APzYlRX0mO2NMbzlOYSUlWS5kVWZpaChmUncwamxCZmUhZmhmaVQ7YklIeylpakt3cHkvU1IwST5MXyFaZVhlaFQoJWo/JWUpfSsmYWlVXlpsbGNWalRXeTRJdTF9L0pHdVUhITp4KCw6S1FM''@;'; put 'put ''PE1DaVpxPztwIj1JPWs/ZEUiQnxFRSx9eChMPmg5el9KJnQlXyFqIyEsMSNCfXt+JWFyNHQ3bnhgR2hVYVl3NTQwdTZURTxdXmVLR242UTAqa0B4TylrU0dhXn4oTnZ+VERVXUJnYUp2O0ddPWFRP240fFVeXy4lZUBOLiRINihKKUZRdkdkZ2YyKTcjSHZnejRQaURrfUEhRyhLLnlHd1IjSHN1''@;'; put 'put ''Sj5SNnQ6T2AhT0FpfXJ2N3NGSyo/ZmtsfUlMaXt1Sjx9ZTszfkpyIlA1TEN+bSRHOXBYZU83L1NSYjM9djJwOXxCUFdGfHJ5Smh4UV8sKGdSWiIkODFsS259Yz0rZWhxWWpadl0xdGAzRGd6aSZpXkMvfCovK2FHbHopOC9VPHlZKiYuK2BqKmw8OUhJNHgmQztXOlVobUA6biU6bTZ6Ki9bNlZl''@;'; put 'put ''WX5dX3R+MGU2Ln1qcDs+Ji8xbCNzOz4xd3MzRVZ0Zk5DZWltSnVjRnoiWnFoUk5AbSlxNHZbbFMmdEgwb3h2fkRgXWJgImlufjwiejlZJjVMIXxTd2hZL0d+JVsqJXR+YV11KyZncV5HNyZuNzdtOm9yNFZmXVBOOHdROTA2Vn1DMEl+RDFEK3ZrKVd1KD9kRUtOKU1mai4wOHR1K2tSV3E7WyxN''@;'; put 'put ''fTp9L3lGbGlJM0FnWX10ZmBONzE9I2o9a0VLTE4qWjFmLDVJPF9gbSRCdTl1JTA9OTxleFl1fWlJaW5dS2BxYmp1dHdUaS9fcnx8PihGYmshSEVuU1BpeTxuQ1ByUjNIRGI/XlIoQ0JdWm5vZE9CR2U9eDFSTTQ3dWJ0SGt6V24xSTcpN250ezpnPHAwQnRUYSwpbSlWKHQ2aUA0ajhhaVgke3Vz''@;'; put 'put ''cGh3ZXkvM0tYKTtEKy5WcEg7UW42QXVdekNFIWNQcEhIMjNsenoyR01wdm9DO1F7aDlVU29tYFI8Zl1pU0FpRVJKTjlEKTF+RD9GXmNIanpIPzdVaDcrZGxMZXd7bkN4TTw7Jl9ldFgqOih6aCZXcldoWFZSfTBoNnBedSJjdStgbnFgV28+Zmg8YTBYVkpPKEtFWHw9YkM7Wkl0LHZ5T1RqTDtU''@;'; put 'put ''WUVAQn1CWUV6VXV7eVtFI2hgbGNbXSQ4dTR5dTckKClmJXFpOz0xPzVWMFM6Sy5mQT5QbT9uMUczTypQJC55PyR5Q3dPZWUiMX1LUkpba1U3XTMzSjA0Q1p9d0d9QikkeDhHVTAlfkFfXU1HOVJMN1Bmdl4jRWh1PkJCRElZSj02aX5OMV57ZTQvcWV7dS9Gc2ksV3JfWE5BMFN9M0pre1tnXkR+''@;'; put 'put ''KGlCc2FsQyRIZXxvTmV7ezYrQl9sSFRyd1JGQkNdd2phU3xJV1B2VTxQMz15cWcwTUpkaExVeUo7SDtLKWZgO2IhT0dhdEwhfClZSDtLRnUwXjFibmJeMjhGaDkwNXZ6aX5iVmRUam9eRHV5aEFhe3ppWH51eWg5RDNILlFwaTcmVU83IXNSfGg0eiIqKExQZ1VAWFEjSmR7Ml1dV18jZSovPzZN''@;'; put 'put ''NWZJSz9GRSF0eTNvJiJLOmtvOzd8eHZecWkhXmIyR2h7cE9SJDBANjFzbXZ8ISZpKFAmZyhQWCZoMiMsTGh3enVsQUtrWnElbUhSNTtHTm1rMS50ZWRxdE1JUSp9JHJPYXc1R2VKNHpJOjIvLk1JQSpCLnhBQUtPN25iWGEqfHhaUSFuZy5TSF5YODhKekNPWkVBdTlEOkYiTENBQUFBQUFBQUFD''@;'; put 'put ''IkNoM2xrfFg5TGhENWQwZjUrPCJIan14TnNrdzBqMCFHJk0jWSp0T0AoaUtIZFdtLkBZJDNNOjo5Jms2NTwuO1NfeWcva3xIQjhKX2FjdEJWWCFabXI/MikuPWF2WD8vVnNNRz1IaTgwJFdpdChGd19CUGBoUFU9WCIsSntjdEs+Mms5L1U/XzM7YV1LUkZnRkdtejp0Xk4rMEZOcE1VOGo7UDBG''@;'; put 'put ''U0tjWjc+aTJsWFVbRjB1XSghOW0wJig8Rnt2Mk9iKHckTXk4Qzc7c3ZDdCE9UksvTmxhXnZHMlFJa1ZiK0pGXjY1PFs+Sy8iNjJMRCFAWmUqZD1QX3ElLzE6c1plOkNTUWVtYnxNZXUjNjhPYSNSLnt7Sk4sSVI1UExbW3A5RjJoJEB5clU4eH0oJEhbRG5Pd0t5d2ZYYUgub0lDQjlzZ3x0Jnhp''@;'; put 'put ''cVhucENDcmZ+U0BGZXlCT009MV5zRzdJVTVMX3gmSWtbX3VoMF9UZ0Q1JSIvSGdHQ0xFRFJMIlRiVjpuNGlHTTc0LCtKeXNkTHFZZ3YwZEVjJTxQfnUxTi8sMjFLKTxtOWREL2tRdlFxezlMUyhvPnlFaUF+SFcyO3FIVHQ3V3IiXih4NChFa1M+SWo1P2hEak15NGtDISI8VklCX0BUUFB5Kn5V''@;'; put 'put ''fmgqaipNcHprKXpoOyltYCFudS9CV2AyYnp4SixiM3NWZjNZaCt4dFAobTNxZXF3emVbMzJQajxxJFlxW1t5XTcuPltiP3U1QixGb0hKREdNYTtpakF1YlE1U0pRSUxzMF1AQHN2c1NsL3tBRWpSR2Uxc0VrdHY5YjVLQkoieUxiIUJZbXhefUUoTC5YMSFGL0NtMDUvczo/PVB3ZjpDdmV2YC8+''@;'; put 'put ''UzdXL299WEAmbCQmKEtDT3NeLiliSzZRb1Nhe2Q7Wzx8MmU/OFI4dTpoYixnSWBaQ2ErPEo0YEcyeXJVI0dydng4eG4reV5gTUMwN2RSQm8jM05VPSF1M3JjdktpcjBwanxFJHo7ZXt1RHE3ckV+fHQmREkyJmtNJHZVKUkqM19eTl9VIXF1bGQ6W3MuQ3tHb35oPXhIRypDYTtkbFQ8PTBYbjc6''@;'; put 'put ''WUlWaUx0c1BdK2owX0ZwM2RzZERvI1A/SWFQMHVuTDQ1KHZZaUY1RS5+SkAkKGU2bV1gNURVbU9HOmQkVjVrMDRQVkBlP1szaC5KZ0VyYHFue197Rn1rJDdOISlXcDx6aGB2RFhCKSR8TkQqYDpBPSxZJiYmXW9nXSROWy9fUStGMGlUWTJVamhVRDFnLGZOTWRkXkUrVDxGV1ppWj04TU4pTkch''@;'; put 'put ''VGVHaD5rTz5ee3xZe0tyYTJxe1ZaaHBPe1UuITVeOyRFKixDM1JlZFcjKFV6PGQ6QFY5V2hxa0taRmkoTyY8fHBMYkhZWn5jdCluI3U8fk08PnxzezVuaT5zXm9OfGxDQGNdKXpUaUFrQUtKajZvJi5YUSZEMjspdThbLFs1fF9vSSFCdlcyW1RZMCpeK3E/b3EzVUgjLHtJR3U2di46MChDdVpD''@;'; put 'put ''eyhoOGNrcFszJWF8azAxIldoZlMpcW11bzdTckpRcHJ0TjprMnR4Wn02QnY8XUZLYTU7Q2FndF9MJWImXkNrJnxQYD1UM0o8R0k3M3U4dj0pW25SNGNkW2wkRC5ebDNWZ3x5QyRCRj4sOCxnUFQ/fDxDX113Y21dfEpsbW19XnAwKklUNFA/XTwvVGUpQmJ9RlJbaEhGfFVCbDw/QUY3XUdtKVJn''@;'; put 'put ''QWVoKjN+KXJVLnNxdGJ2PDNxOytiMl49SS9zQWh0XzszQCh9U05KKEV1bzt+ZC5tJF4kbFZaXX0yOCowTUJ6a28zVC87RTM8SXs9MldIMDpdNzBpUkpdYF1iSCl5Kj0zMHt5N0s3a2RxZFlmM3owUFJpNyVCRkhRYlJ8bWlDR04kKSJWYyI4Lyx7MlRve19dQF9lVFYrYVpeQHNWJXl4aWY1Nkxa''@;'; put 'put ''ZzFndkhjKn5oQ3o3LH0iVmZlZFA2QzgyYEdKdH04Yj1MKDI2UVV5JX1fVDI/Ono9XV0wOT93bDNvbVFWelo9JVUvdFssMD9hNERybWYlSn1kNjlqfCZpWiJ6VT0vZFFmJCZLLEgjTjYlTVEzLGFUXSgqTmV3RXwibj9YYExHKzxMVCtRNnh7QixCSTcyXXkqTzdUK2BuZD8wKCswUEY2ZDA4dV9S''@;'; put 'put ''NWJwYD50LDtJLH5rK2tSKjBYOShdZkYiN15CIWw4YH18K2pWVjFjNko9XU9aZl5UOWdKYzJOQjlrcWlFN3Q2XiwyKyF1KjhaS2w8WGZoL0FjVlNIY3c4QS4wUFE8RVs7UCNkTGZSeSlyVHJsIjU6dz17Y0xYZCVPXTQ8PktIQDFyJjM2NTFnZDdgS3FmQjZ0ZDJzRGMzYC5eI0lfaVdPLENTS3BI''@;'; put 'put ''cnk7JFd1JDE/TFtIdTVCNH09PjZ4JlJGTD0hTUA4aEdlJG1HTkA1PFRpIXx0MHxmUFpOfCF+TihzVF4kPHclRlNdYT4hVjo1ajJLYUBPK0V7KngxSitRWy9SVDo5RXJwb0xZQWZHPCYoSWI/eS8zTCZlPE1HbV1VXWpXJEV9KE5LJF5QTnB1aEQ9cVt8cyJTbGBtP0BAIlJFLzZuKlUzUVFWS0B1''@;'; put 'put ''JHdvdEpwWEUpLy97NCZdMjNWWXhjKH5YPkNGJm5PNHFueT8qRDVOL0BhQFF8WWE3MXApXWc5elpsYy9sXTlIUS5RdWRpKXJoRms/eE5SPCU0dEZ3SCRia2NzPzhJdDRkblB2Zy42WWY4Slk8YCpLOldMNm5qbjReZTohNj9HUnJwI2ZGVnpWRjd0ZVdfamZwbmE9V20lP31vOUR9YktVandFTm90''@;'; put 'put ''UzYjfjN5dy5ralkkajs/PEdkQk4mX0g/Ii93S01jZSpXZH1sJTRlPD9Zb0QwZ3UjcCh6PlVWM3R8QnlqMiNQP2FxLyRmY0RuOmpxQVtkWDpiKUozal42QndjTiE3XVNvY2dLaTJMajIjYEM3Rl4wRHkyaXBLKE5DUDB7PkJ0ZU8jV1dvZ208LD1OPG1GeyVOPD9yb1ZGZVlrYXs5RkBIPSNiWD87''@;'; put 'put ''bEp1JDEibFZCeFFeOW9maEwrSEtkWUVHKSYmd1ZhV0E5NkxObEpVdHVwPGtPczI7UzltajJ6WVRvXlJ1QGhdbShnRSV2I2V1QiUpLkJRaW5QJFBjVGp+VSVpaiYuNFI1MCJqKkZwM1lNdzl5dGl5eiFxRHcpYWIlSTc2OmtIbzU1djFdIWlWZ3VjRDZHNXYuLDVbYHMudj9rfT1TN2p6eVdRU0dT''@;'; put 'put ''cDY6USRobWNwPUBCKUdMYjEqRVR5QHpbMX0qd2E7KE9kPjRHOVNyQC5iJSFPdX46ZSJJVTJVVDB0Q2VeU1M8RVtpPEB8e007eCwqbk8zekFiaVo2YCt9N09GdkUoPTJZJklKQFNzdSlXSXEkMiIkMSF4QUg2KyovSFMzfkw3PS8+I3o3ZGpVVmMuO0NDcyxdelQsXURqMSU7aFg2TjM/QnRGWW8i''@;'; put 'put ''YW9PUFNDYncwUENdTURITWh8fWRGKH56cWNVPHIxYG47bkBeWWU5dSFZNFEkVD81KEhaRGt4Qj0rNE9iVEBfK0tjaGV1cixJZnFSRVRTJkM5I2dHcjJuSCMsRXspVSpVcD1feEBOQDZUTWoxb3BHazh7Ujt5YiN4cU1SfmtWUiNPMnpeWWkmbTx+RGhudEReLlRqM1k9dlU8YEI2U3V1SiozeWo/''@;'; put 'put ''Y1s1UT4mIl8vcH5INCJWP0EkRXtIQGJWYV1APUlifX1RYzNlQUpefChYdGJ5UVB4QiFURkdVOE5ea0lDKzpyTG9pO3tsWFAsbnRPQnVVfllFNEZJfEpBe2J4V0pYa3Z9U2NOdWhldWs7VEpeZ1FzYlNKPWBYUF0wZ344Sm1KfFo+ZXsjOCR7JWl9bFRtKlVVIW57OlZ4KENlMWMsbFB5TEBhcHBu''@;'; put 'put ''PGxqTyV2NHBKXzQrS3U1V0NZOX5DSVRxXXZndFRYZWUxOCQuPXR6PEB6XztWKyx3YDhKQDRzXmNPMVtzSGZkUFZyOTJHKSxXRTssQjV5QmddQjNwPDQwXW9+TzFFZnREa00mOl8zN01XemdHcD87TVZNQ0xoe1B2K09UTmtRWjtlXVVIYkhMPEl5KC9gKWBZbjx7azomd2xUPThydXBHRD1ZaE13''@;'; put 'put ''c3pGVyJbWzBPUCJoSiNRXl1wST1lXVckSyNVTUgwdmxVVXQsZl17RisjKjxTZXFVQ2ZMbzcmP2p+fVU3YT5EYWIzbjNrbnJRV0dvSStdQ2oiRTwjNik+dWFdMG54dCJVY004I0RXSURwWmx9O3V1WzA1akpNUUQraC5JKnQhdHxYUn1EbnVoZCkwYDxPcHQ+e21CKyIwMFdDMD15UVI2MVFzc31R''@;'; put 'put ''M2tecEwmS3xWVVlKcjd8NUdMfGhUKGNmOjg0a1RBcDlFMXM0ajsxUjhLZDtaeHp7aE94YVBDOENROiVwXzUzWz9UQERYNnQ7d1Q1Z2J6N0F6X3tBIU9LUDBqPElRSFZERD4uLFlVKV1MVy4hbko1aW1xSjgpTkVrNGNvfGgmQ0cpa3AlIk40ZnVhYUdkbyUzKUFqX2woOlYhU0s0RTkmeXE6NGtr''@;'; put 'put ''NDhfKmBrMTVhc2VrUUc5TWApdlEhTjM0Ij84YmlWe0VlNm8iRF5tUEhGPFdAK2k1RV9iLnZlX1FxdFJVSEpsL31icWFVVXAkNXhnW1R2Ry5be1dQIlNAbURvYD4uZyFqUHxrUHJCdXlJRyF8SC9CSXtwM2d5JGl2NVJUcyF0dUp8XXc4OF9Ubl9VPWh+YiJjSSkwaDtbWVtRM24qW2c1PShbUTdH''@;'; put 'put ''TmV5aEFDVTJFPkVefVBIODFSbypnUSMvJSk9QHxkTFNyOzc1Kz9GS0JVJUQxUFNANCl1TyREPVNjSks5S2dlXV10PTVbMV5SMWs1OnAhNSJXdmglej1YfGgjQCRwMnU4Qm9xJUAjPEp4NCk+XihgLGpzKHsvRztRT2djKV5YTltdIU53bDp9U2whOSV7MVtqL3JRVFQsdHR3WXM2N1EremRhIWZT''@;'; put 'put ''U3tyZWpsZjdSKD88XmlzUWltam9Xe2dVRHRqe0Bga2x3MUIpU3t3bV9IMDxkQGJ+citdaUwjKWpOTj5ye29yK1NzYE0xemIsK2R4fDJEcUZaMUl7JEF5JHBrKUVXMylKLnc7OilVaSVZaXthSDN2dyMsMSlSUWorNDBYK19FTkVfe1ArMnNyL3Y2UF4ld1pFMFNdQU5IOm03Vn5+RU85JCQxK1Ra''@;'; put 'put ''Xlt5NlM+IkxTaDJEYEN6cEc3RSpWQk1MWTJYUSo6YVVgN2w9MFNQZFtwOmsrW0tobElJNUlkJiNdLyZUZilHaU01e3lzTUhVa09td3psd25Ibn1WZ0RrVUZpNGBZUEp6cFdITkg9TjR8d1FmOmc6fUd+YSU4Nl5uczh8JGlPWEk6U0ZrN2p2Ikt3Yzx5OyFieiRXZjdHNzVbbV8/TGJaNDRHVHdb''@;'; put 'put ''e0ZyKmklbXUsY2NrdyhKd2ZTPTRUNTMkKGEqdTA7b3RReSgvLkBLcms/K29gVC5vcmtlMiQ7Nmd4ODdbJjN2NkFpVXhNZj1mI09rYV5FYjI6aCVPWURqVmplbWJPVnwhOEt2bUx4SzIhQ2hSXzJkfSgybE9KckY0PWAqMGM3RVNDYUB0KShAMz42ODhmRU9IVV1ZV2RJO0dOKS9jTWYrQkBxWEV0''@;'; put 'put ''OGVxVnluMWptNWJAZH0pISFzRlUyMzJ5am04Pkx2NjtUZFZsIUU6RjsmOyE8ViRtb0prOC5gQnlFUUhNeTpwLis0USRreiZaPFklL0gkY1NDel1QUGliXVltVyZ+a1AuUD5VMmRPXU48WjEoQH1iOiR7V2txJjFjcj92TixsM2YpJXN7STB+XVJvQj9Tb0Y5RjtvZF9QN0pYNFEqUCk4bjwsaT9a''@;'; put 'put ''PFs8JCpVekcjTzNVfi5XeVJjfGVySFt0S1QhdERzUTZzWkssfGkkR0w/LG1tRD8xTGwyNShoUnNzUVNYUl9fZ01ATVd9PnQ+b3I0IXBGRWlqVnksWlF7O0xlc3R9Wz5bdWhKJi99SFJjfipVeV04eFtOfiRvYlhRcT1lJj9oTSJHZikrd21nITw3ell7Y21KTjhwfD8yQGcqaGY4QTciNlgyREp0''@;'; put 'put ''UDhQc31bOjsvNkh6PVh9e3hrZUJ3aDI2fXd+fkQ+WWZ+dTsofEhvZCQ4dmQkaSl7RlZ6YHlZIVRwOkYzbUBIMlpgWklZUTZ6OVM4SHRxXXRKYjtgJGpMSlU6RzVlOy5DLCx2bTNoYT9APm9JPk4vOXBefW4mPV9gc3BqKnRlS2JlYk14TygqVFlEZyw4RV0xNGo2ay46VmJaT3ljXSxeLCQickA7''@;'; put 'put ''T1swNkJIOjcwZ3tzZyg/Rlo3bm0vZzNse21xMzUxNmE2LGhxKSg8KGxmMFM9LyRaJnYsKUl5UkxAWX5pRWdSImkycHxzWTI0K2o2KypxS2ZSaCMhfjUhXWRqRk9dPz5wTnx4VlksJT5JRW4sKShyZ211dlZSZiFMeTI/VkAqaEUmazNufncpKEZ1cXkhVFNuUFFyWzYuTkhnXmtTQG1JWTwyQkd5''@;'; put 'put ''P31lO0AoQk02Q0VGS0lme3FBTHxkMmxtRWoua0B6KGBLT2srSERUZC5mZD9+PldBPSh+R3ZaSEh1Sjk/K3ZWKXJCUyxBMWZvMzg0cy81XTw5XnduVWZVQWNsMGtuQGtze19we1RxT31pdjg/MDZ6YEVLT11pc3FKTENheiwkMFB5W1V0KlY6cWd3RmdCL2MrPFhjOnxAQEU9dV1mQ3t9Nzt7dHww''@;'; put 'put ''PkZqezFxKmssKCNzWmMkczddflIxYkBoaTRwfjxiUGxXKEN+K2BWbW5iPnQ8Q2JGbz5WSG5ONzJKWzE6JldPWHFqdl1dZGsvfD9PPG9oL0dWQ3RWWlZdV3F8Pjt1PzBCUDJwQlprPHdaRTZNeFYoT3NeNWhHO0Vve1IsJWhbSW5iM0cyaUthdzhnZGoyeGNFVnpqRUZHWnA5QiJtKmlBITBrbTw+''@;'; put 'put ''aTZkJFBNRCZOZGQhfV8ubzNAST4+ZDlpQGRZVUgsRikwXVkhR2R9djRaJVphUD8vfSRIVS8+TiJCPEImLmk8Y3dLKiwsRFlvRXd5PCRpM0lhP19HWXZUfTNedCY+a2QxSV9CaHQ8MHp5LmZ6cVhubEAia0k3JCN2MilQKiFFemJKKVJNPzoqdiFJXW1ra3oyJj5GTWVffn0jdXVwJCZMay5IZEFM''@;'; put 'put ''WFVDLzV0dE5PbXJYJFJpNzFlTH0wZGVCI2ZDKmc0Ij1FSl9yQ2R4PCxNSmM8QFQwN1YoajVuYzV2Xy9gdEZwO2tZcHRzLjJ4UDNBM0JwbSp6TE9vR0gmcHV1PXtfez5Raj4vJCohfGxmelMpTUJMcnomaWJpXm40SjE2MWNtXz07JX5MVy9fIX5vaV1DN11gW3BTJEJJelBZOl88JkYlbyRQRiov''@;'; put 'put ''Rkt7MXg9Y31ISSJJIz5SeSoqY0lkQ1g8KzwmPDloKH5CS1EkMlFyMSpkPHZ7U1owOjdZfmV8QHU2biNjSj9GRVRaSzt7NXBZOExjRF40Zi8vIVhIRVAwOHE4UmhoU2JIOlFFdVIzS3V4JihdT281YTdGcnlYWDFPN2tyPSR1ciFSNmk8X25naSgkKGM9MmBYWyNmVXc/cSpLYjdOT0hkJjtSK3tu''@;'; put 'put ''Q1N0P2VPXWlPO1pHXWpoNyo8anRHZWhfQ0JxMkU5RWpmNSNiMm5YZllKYyI4dzE1IjFhSVNfLj4wViY5cy97Pl06fX5mNnExMVVQbjJwI3R+ZiwuWHspLC8yISlrbVlOV1B1OCo4Mk4jTy5zbT4kQkBwKUEqT3lodldnNlpYcUg1I18rQ0FQSk80V1ZWdUk1akxmQG1eY1MuUFEiU1VWdk1FeExM''@;'; put 'put ''Wm5ae0Jyb2EpMH1ucGl2KFRnSlZOPW12ekgvPiRgXWhaMi5eRkE9Rk54ZV1jSkJEYmQwZm1RYHIoeXYoXyVEYGp3WE5WL3paRyx8UjtNNlNiLFROL3w+XU5FSlB1Lzd2VHYrN0YhKGhnU0Y6XncoOUw/JV9TLnF5NCFgS0Uid0w0L24/XzZxKGtgMCRfSyRvLCpfaWlwK1ciU21aJDU0dzZWNkJN''@;'; put 'put ''aEI9ZTRJQihARSVZOE5OOFRFTVtyOCMhV18xWFIjLE1baHB+UXc6XWtkYHV9azNeREMjMGEyeDdWc29bZTxZVX1WUHFQbSkpOlpPaiFeSW8lb3B5SmhCNmBOWj9kOSNsa2RBLEZDLjoiWmdYMFJ9WFpeRSVOMCUjLiNCUnZQP3RFeDAyNVk9U0JdT0ZRdlZEQUQ9O2F+dmZLPUxrdG1he2pySkQ1''@;'; put 'put ''aG1AY01FQj1zbD5+Mj5ZRGNBKTNoOzAybyI2OUA8bDc/UCNVJlJLLmlJV1hDVmhsLkhQfVZTOUIuQjtBQlJeRDkqTTBpIXFJSHNadHUrRF4xcVNZeV4lUER9alNAX0VCfjl8V0k9Q3hQYnlBRDdbXW54ZCxzQnA3YFF4cERnTi9wUF1nTH55U102QmFncGJKUVgqXzA6THV0JTAvJGNZOHB3SWBC''@;'; put 'put ''QSFRP3s3fGxjcC5EXSZjOyg0UkkoaylTTGovWys2e01GZjV9YlRfSVJIcF9oLGQlTGZrc2BpLjV9aktKKWFMS0R7W3ImVkN8cH18QShoVSVzKWk/djs4V0kxZmxzSGQ2V3MmfEdLWD9keHsqPzEqYE0yIVBlQnskMitbNlQ8O0dvV2s4dU8xWVhmfCJlJX5nWVF7JUlCIlQ+YVBUe1E8On1IOWRU''@;'; put 'put ''UlFzN25MK3VNXWJwciY+WVFbZGJ8bjRzW2hCInBCOTNzVzdraUsub2tNLDJwWGw5R0JgYmNeeCNpQ2ROYXA5Kzcjd14+MWl1O0ovVEN8VVFKRF96TDxmP2ZtTW9ac2BjNF5zSVExUDJTMT5bTV1pSGZuT3t9Skc4ZnomajZqaXN7azM8LD85PEpZbTohSnpbST1iSUV4bDxsNzhVWlQ3bVc6ZyN8''@;'; put 'put ''bXVhO3FhPmwjVD9QNWpHVi5FSWc8dSReeW4veS5XJmJHWSZ6cnEqZGhlI0JwYDMxOlFydF9bSmJIRjImYzpUJHgoWDBZRnV0MkJLPDlDKG89R0B7ZUNncURAUTZaOWh6O21iS2hfb0VuMk5TPi58Tz5Eeml4aF9NLHoibzIiPmcmTG5WfHNaJSRASypEe2FTYFtfQlI9LHYqZzQoYTk6QjdqWjxY''@;'; put 'put ''dztgIVp4amE/Q3A/UmlDW1BuWlV9THRofmhdUSRlK14+UyxRN2oxWyFsLiRvRltOdk46K2liSSNzXnpqNjhTWDBnXlpbWWZpc1V0ckd6U14hSyoyIVl5e2g1RCNoIStwN1QsJC9RTmFkM0xZaXl6fFZLYT9Oc0t7X1dZLD0kMGEsVWZWVCZfdmRIQ0hoWXZNKDk4RlNCYldsOCosMCJDbyxkNF94''@;'; put 'put ''TnAjQyxgPTVdaDBIZHhRVV5TYH5nKHQ7LHMjdiNfJEJTSW1rVHl2eiMlcUg1Pk0vJXRrN1ZGM09BREIzSXoqblt2SzUkZkMocmM/PDVkTDUmdCUsZy4rUTl4ImkreVgoPzRdJVsxI3xadm1mQSFPYy8yM3hhKn1nTT97L3MlXWQsMDE0MihbbDghJXJQWCgjTm9kNz41KypLV003cG5PMklDPGA7''@;'; put 'put ''YEcwNkhgWEsuWiwqQ2M6KUs9QkpDdG9JIVlLbGl9djw3LGZzOzNoVFZRKXJDVFkmWSJgYSJARDBqSC5LcCI1b2FvTzY1Q3gjRHZDYkQ9ZlB5W011NywxQX5RNj87dlFYVSRAfXpeZDdyTyhOXnt6OyN1b2RaRmFFTTlrZDBlbEhAT2F2OVcrJjU1QUY2YHNRIjVfSnM4SHZ1PG96NGN4N3JzcHBX''@;'; put 'put ''JFcoTF89S2QxQ3NpRnR6aWpJbGtsUyJWbEZwJSZDSF10XzRqMk1te0lbdzM+PWhlKVVvYiJqXz1XZTQuVkFAVlkqMCVrbDxLTW1mPF8qcCo1amwmJm8zQVZMOWs+fWgxY3tNTm88cUhBPGwuPzR2Q3lUJipJOSMxPnVsfnpaWls8YCIkK0NULnY/b0l9ND1rVF41als3dyo3TSxnTT14Vm50NEtQ''@;'; put 'put ''S1h8TCwsckV7N1dDJHNhPWpGe10jcEp8PVFLPSJwZ2JSN2pILCpbPGYwMzt2R2hpaGJgcVo0MVRpSjNsa3EmMGlyeDReWmY3OCo0d0l9Wn5nKUR+di5aPSRFaEJYZExFZSJATXpLd3VVe29YQnVOeHg7P0szfk9fImM2LilIczxOeX03YkVYbDZNVGQrekJbdDtNNURZNzRvI35GL0FGP1RJXUIr''@;'; put 'put ''Yz1rUFVgWilAKissd1ltXUZvP0ZzOz5mMFBkNTZMU3srS0l2eC9pd0lIRjlAXTJvLDo/PlNfbSRmcWV9JFdmfWpfezIhYGp6eFUsVW5MX2FFYH1URT5hZGQ9eVs3N3tRJl94LmgwKmErLlIzdXViL2NiUTdEPytaS1AlJGZdbClsM2Fpa3UpJEF3c29kIU9DUnwyMFZBdVpkNl9ubCxaN2gvTj4y''@;'; put 'put ''cVVqfl97JjlWXz1yWEQsJWJjVEsqVUdpdX0vK3FSaEBLOjxOJWNvKD5ebG5jYV1iKjh0NXkxdiZyZHEzcmVLUGBfO1slJW0lUSRdbyMkQGd6fV1tak91e0puXTJ6MWRPY2RpITtoLzQ8O3BtcjB7Jm9rdSI3aUxQbH4rLzV9KUp2YmN8dWQhajd3TVsqI1FHLzpURDMsN19oNHh0cCQmLChDemd0''@;'; put 'put ''RFtVVX01Ymt2IXo6RjxdOjgqcW0hTFNRemsoOEpSQG9fYF9YbFk/I0hwc3U3YVkhXVomZjVeLkVAbm50W1Fwb2x0K0UlIXElOlM5NkBtYU8yUCt2ZWZmRkArdSZ2Zm80ODNlJnRNfHYjSHUjOSpfJFNHNGB7eiw5ZSpsW1FHQDYxfTtoYDwjfkpxY1RSbCF6MiFSciQjaEtKLl44YV9PYj1xVSk/''@;'; put 'put ''QE9fKGV+M1B2JGd2aEF7c301dTghc3ZRbjQwLmd5eUpJI1k2LC89eDpudFtPZkVMeyYjfDdEYyNpN15FPXwqdTc1cHlJaCopYGZCSnUkbkdJVCU1WG16JmYhNTxHcERPJk5XUyslMytnN3lwX0tGQEtadVVwMSJ5b3c0ZnswUW42cTBNUWQ1Wi88YHl1ZSo7K0oiZDRaWVFAI2xmdkMkOmM7YWIl''@;'; put 'put ''JG18K2hNOX4oSVpPd3BKd0Z3QzlUMixYfXxlcUQ8ZiFtXyZATk0qLEolVU81bWFXbHh0Y1lhLkxhJVNnZ0VSKEtXeVcqRTwjLmlNdEUqfWhrPCVpVkJgP1tgRCNRIXx3TkhJO2tCaFF9cV0pWEVieldFO3ZLL1RwN2pZYSEwflFtKWgmOjVVYndIYHk3Nz5Db2x9b1NbVls1aXxTLjB7U0gmYSJT''@;'; put 'put ''SCNiKTtqNEpYcy5Bfl5oI0ZWNCE3OXk8ZykyOiRmKiRJS1c5e2ZDK25+IUZvYVYid2IkL1FeeD99XlRUT0hjTDtbeTsyWUh8UUBCX3JEQ150ZFQqLEcvM2c0Zzk2fSVrSXpKL0xEe2JzLHt3N1NncGp3eyxeRF5+Jkp9bF1VXUhYWGZ4NmVpb0sudztTTX5XUzNFXXJvbXRxYWtoKHg+S2ElRnhW''@;'; put 'put ''SVI5T0JvOk0ocWZEdX1kVW9OTzkhTSZ+OFRwXUdEP2d4cFAsKVd4OSJxZ0F6en5UNDxDfEpEWWlHZUg/fnZ4YD13RG1JfXRbQzBecGI1aXlpJkRRXnhRVmJRcT9Iezs7W10rMDMpLExFeFlVImA2LDl2U0tfZEhOZFRqOl16SDUqTz8yNnBqSSNgeUApP0N3PnoqcS9JKUkvNC5rTTJNMyx2dy43''@;'; put 'put ''VVAxVWR3OGhUMn1+Yl5vfSNWRjJCOEZyaSFXST85IzVXTVtrOi8yTC8vU317Q2J4S09QV3A2bz1tYG58fnRMZGhwbj5KemRbRkNXO0V6Sjw4T3Yifl4pJkg1K1NvNzpdNVVkWWNgQnRfZlBnSD16Qnc+I1dxQlBWZTR0O1ZAW3tvWUpkSENeQVUpS31NZWNUIyNCOEVrNEZyVEpAV1dXJSw0fml3''@;'; put 'put ''Q1trOGd9VWtGLzZafHRsLnRFTUM/KXVnYXpKMl5LJXZoW25CakdjXSMoYkNAKz55SWZ9aD5qeD41d1khXUYhelZGO2AuJHVuaVVVUDxGSihtSGhaYiJKZkFuamoyYERmdHt2JEROYn1ILHRwQE5TKkIsRl18cV18UEd2JiNRKTZFb0ckKEZdUXF+L21pKSQmOUhMTWNnTktfQUJ6cjpLTz5xQVVw''@;'; put 'put ''angybzUoWU88Z3t5IyM9aWxQUmB8REV+dTBOd1JSNUgjRkEkMUc4Zjt1W2dOXTBffWZiez5sYHFBVDkkaCM5XSg7QltuMHQiPTZhRStCZ0E4aiVhYCliYlQ5JFpyPFVFWXJaLlRPfVJuV3sxbjBPVHtmRDNwakN2IXp4M20yPS5JYTNbNFlMOCRTdXl3MF87eHwoOnRxKCo9R140XyVeZ34yM1lG''@;'; put 'put ''KCx+ZltlSVZ2aHRNckR3cn4jdVR+I0x2U156KyJCYlQ8TSZTW1QwKlZ8KihRYkpWPUchfTVBdm99OCU5VGkvUX5Pa0VPMyFjR1Y9Y30pTU9bIXJuUUZTNVBlS3pSOzQ6RChxWSleS1RwPH4oVllWSSs4TDlGO15MRypGTiFwVlJ1UDxSQTRiNk00NEkiOVIsJiopUHFEclI7X1IkNEMzUkFHP05u''@;'; put 'put ''eHIxVm99e3dFNlVHfVkwe10+PG1mcyxlRzR0Q0xVaXx7PCpDTUN5Q1AoZkdeWU1daHs7UXdqJXFeKk5JNHRkY2cjbGwpQUBeRmJKd0FET2AzN2BxPXt1bDkmPTRpeyI8SWdvRkN8IVkmKlBZTn1+OX0xcFZyUDRhJSh3d3hpYjJxK25aMGNXdHduUFdfIltwfGJyYytWfFd7fG9GPXZVb0dxb2I/''@;'; put 'put ''UWVmM2F1WUhjPDdZcmQ0TntoOSYwZHlFTXl7MlBKV29kTyFhO0h+dCY/VjZ0YzovdCtVLkJubz1xKDZsQ1RMSEFYQGZaeCovRldyRHVJbElQT01wRVhuNzo2UDpHMDZWOCElZihgPXtQdygsbSZQSWFuWy8mcis9M2tgP1c5OShLOmBJYUpSWi58WTpqaj14WiNPZzpMNjkkPVZBJlZmM3JTNWR8''@;'; put 'put ''XnRjOlI4NEt3Ny5zdTZSWzJaV243ZUtidk5WRzZqSCI3NjI3eHZhRWo2cmltZ0hUSzFkOyRwTktFI2ZlJj1NTnJ9Kmtqa0I1eHVCPW9OSyZHekNOXyk2NywpSGV9XVFKdF57UlApLn51SSN7LzM5MGNVRHpoRXddVi5UbVJITnliKE56ZVYoUXw8czlFeFpbW0JRTTJDMGx6W35fcE9dbVIuJGBG''@;'; put 'put ''bFpzWS5ATmVvKjU2XXpFTyFoJlVzO3gyRTleWEZ1O1J1LnElWkxbVTNwLyVOdm1zJiIzcm1TQCt9NioxPmF7RT9fc3xsUzR3eyxQeU9oenNEen0iWFg6MXdAVD5aY3tiJF10OklvJlFMNFVVLm9wUVl8WCtsW2dIXlBUeyQscTZZfmQvJng0NyNNMnkwZVBKUHI4YGJGXylmUHt5aCghOlAyIytr''@;'; put 'put ''bnJpQFAwXUwvX1l2OSlfdj48YUlbQGtfe1AhUzUwX11KY3hOMl4+VktRSSxGR2tmSzBQQGouXkU3XzhbTFAzKCxQWEVUdDVWaG9aVDdwM0U/KDIlXSpsaldlQmApWXdtP3oqfU9beF9beDtZJHo2Ky56dEc7MCNBTV8rZT1vTU9jKGR6WX57L01DREJiYFtrMipjIiU2VCZRanhGZUNkcnheUn5L''@;'; put 'put ''YXpRamc6clEuMkJsU2QrayxibHR5MmBFckUxTTM1NDhGckNSKTNVYUQxVV0vTz9qe08hN14xN1tFXiImfXRsP198T2s6aG5SOileN1FNKXllcXowZjlmVFkjKnZkXzcvXlAhbm5afll0bnAuNmtUQHglcWFmKlAhay94OS5fRUVGSXBudjF3VXhnKHFpY29lQnRWelRoR09tWEw4RjR+eSt2MVNW''@;'; put 'put ''Y0NVVVJwfG5QYyNSUm5CUk89cHRwV2ZLQyIpRm5tZmZpVWpfNUpEN0NFOjw7LmBOWFl0a1V0fUlqLlY1ZW12cX56MXYoYlk3V0wmbzBGeztvYCR8eXopUXtpcjhSTUlJQW02VXsydT4ibm9wK3khbXIsO0swOmM9SnY9aXRWeCZwZX1oYyVHIStwKGh4M0hjeSJbYFtFdFA+ci9mNW5ISE92bmhD''@;'; put 'put ''LCJMPihVfntIenoyLCV4dWopZlRJO2IxJShgMU1tWVp+an1YSX4mRW5PZz1bfVJIVCFKLEFMLn5tNngwYm0rTnM0MVZwNVg8YixzIj9Xa098Pj82UVN0SGgkX2lQKD9hUW9vSExGVS85V1p3JChoKGVAYmhgQlN6cUg1OVAiejlPKTopdTw+eTsza3l6UWxKS3pjYW1uZyJnezxLOl15LyQlYH10''@;'; put 'put ''bTA0LFtReCJgd2Q3SVkqUz4pUF5TbntMU19McmskKilLWEUpYXFfcD9uXXM8cThCIjBpPyVVSVpMRTQkOntyOFIwYS93IXc6Ll97LEpYOVF3R2tPPnUhSldkUmArQ0FNP1tRP3I2KTYiPiZpWil1Sm4yY05id3FyUVo1WkNLNzMxQS8hdkE/UENlIXpsSHIxKzpRPT9OYUhFeDA9Q0N5bFN2Lk10''@;'; put 'put ''SEB0MkkjLjN8dzhWZV13dWZBU0dJOUNmNjp1b0xqKTZ1SGRATGdFKih2c3VxaUlbKmdedF5QYWpRX3RwWCsvL0NaU3VXV1VBMjQ1ez1hI3B5PDhwI31MckJHJldSRiVnK2FMWl0+JTMoSWcwYHN7RDFSZiIhSzRzbmN0UTpVMnM1WkVrZCNxPW1ld0Z5MipqLHV8SkddYkgiUXN2Klg8Jm93WH4r''@;'; put 'put ''dD9ua2lHL0U2blkkKUhSREQ5cHJGSzAjSG1tOWssREAhUkF7dXl2T0IrTzlFIWZ4IiUudkV9RlY7XntPZXkiWHZaQjRuXWgvWTppIzh7dWciYDY0OSR+KG13MjhubiMrVENtdCNTfVs5ayFhNytrIj5eRTE0SGo7MUR3fHFxN2JpXUg2USZbPGRfQFNmfiRjWzU2LG97NjBQRTJTdTUjJkdFKmVV''@;'; put 'put ''MkNNalFXfkNsK3tjWnhkMmhAeHNWQThSdSl1NChEI0YoWzl2clMkZ2UiWWNLa19RbzRwbWRyMTlsfWFKRipHJFF2ZT5bNlVsa0NNSG9DM05uQz83bjdtUSFwR3FJRShQOzskOCpIMzg9K0Q5bGtabFtYSFo2VVU1MjJHSzkjXUcsancvR2ROPDR4Z1o/amdIQEx7fjQ0PU1Iay9udFhBKE1pJmVH''@;'; put 'put ''KVtxfVR1MTVbX1JvUCxEPy86Xnw3VCE9VH4xbH5fR0dPJjAmK1hfMll9SGhGSCwiLH07STVwI21mRj17WXVCRVM/aHJyKyVde0FqZFlrTUR5UiwpMW5TPjpsNUVkWW5MTl9mJD9JdGx8RnFRZGpMK2A1c3lXdzE2aW4xW3JmfHwpfmJnSXw1QC5KRld4e2okSyIlJmFUbixxIjlPOUlxZSxtVmJ1''@;'; put 'put ''N1lRKnk3a1FzRnA3T0YiT2AyIlltLH05N05uKShNP1NGY2dSZEsmQ2A4VVg/TWVxZEg7M2EhKWF9X1MucVNkUXpUbkZ8Mzd8W0RrOFQvY0NnUzRUJmNFKSp+am9zWFBPOCR2cVUjIz9gPyR6PkVWcWl5VWk3akNhT0NtZ1F4Ni5qMD1xUHpia1ciP31GQGREXzk4QnI2OU9mXltVMDk2ZGZycz0j''@;'; put 'put ''N0NpWmpwL21CUjhaWSwic0FuLEVaZE9VbytyPX4rWXZ7UzhpSFZeaSZkV3tbKVMranxjbiVQd25jZC5jUEQ4ajYkPHxYPEI/eHpzOUxPWWh2OWxaekpBcys2ISFATGtOaF9IVldpIWxHb29aT2UsPVU7KlNVN1oxaUMmJG9ETGEseEp4VShEZUpgYTRdPC9LLmlbSTwhYi4yWDlXZn1Ja1hfP183''@;'; put 'put ''YlZNaE9CaTdfN2ZeYSxjRjZAZXk5IUlEKWcjIkwpdjhVbVRbfiMmPU1rREk+WzUqRWo4a2Bkc2J7OmVVJnwvXWl4R3VfaSQrdDJgbz86ZD83NSRtWU1uWktvLz9VdFc3JWRtTz1FQ0plXU8kbyNddFpFMS9DeW4zXjlJUlZ1Y1VXdTVFM0Rzej8vO3g6JHRMRzM/TD5ULFpKZDdBVStQUyUxOE0v''@;'; put 'put ''Xjl3NCFpUShAKEZNWTFId310Z0pMNDQ4bThXdCM5SmxrZWh+aDxYR3guTypfX2NyaH1hNU5NNlYjc2xQaSF3YHJhaHVXYjRLPi4kZig5eC90VGRRIyROWDg9KVovL1EjNywjIVk2VzYpZF1jSW8rfShCOHskSlchTzNeNnF3d1YyYkVjc0ppWWs5ZjBjV0ErRCI9eGw9Mjh9RE9MXltnbzRbfFNf''@;'; put 'put ''S2h7KU1Ic1VgPDNrWyhNU2UjcF5qInJObGkiTFkpKUNWVCtJNnI9M207MGZlQzFJeTYjPmVjayF+QGJzVWtTL3oqJSZ7XTxhNC5vY29wIjVxMSs1dTwxenFvJWpbUmVoK3RzQGBGRkQ/KiV4UlU0RXkvRzNGeiVfbTk+d0AsMENFe3ghZmUsUnxLRjhHJHB8XVo/bTEqO2VLenZ6I2BtUWhnM21u''@;'; put 'put ''fV8wXVkiSjwrKkZHQlZbXV5GTiIqVysieWQ4SEY9e3EzUGdWKVsxKlZmZXIuXmBLV1diJWhKcjArQjpvXTIoSUdXd3FhdHluN1JJPj1RcjJ6aSwoV3NmcHw1aCZRTXlRKF9Le2Nifk5nKUAoLGJvfEhlNHVGInozeXNqdEJEUi9tYVVLVyNXfWVyfn4xWnwiVnw5TDFVVEhWKyg8JWZ4fVBkZC9I''@;'; put 'put ''OjEzbHFRby8sREs7eTpKeGttQVFWVTx5bnM3L0UzMWEzMSpFPixYdzRlOjlpZzg9Y2x1XTlMUF9TKncxZDx0TFthT0dHOnovUyo2bHAja2kvM19nR0VIdCNPYFN2fHQvZltVT3E+USp4Vng4IzB9VEpYSXwuNjEifnpqXihZSm4sWmlOWW9WTGUpQ3xkKDRCTC9DblBDZ3A/d2FTRVY6diRvbzoj''@;'; put 'put ''ZXdDSmY9LFFLWUgmTFh4YHYoQ0dUYks2ZFh1OX1oTEhwNkx+aC90clR5dDx3Mzc8KElTbWIuMFdHTFg+Q0dOZkJxflJISXhlfEdyTytpblVNeGY/R3BNP2JbSUt4ZFBdfCJWSj1MeURAKyEsNjdFK35ici9FfmghR0FPW1JkJGJxQHBONzVDdygxVCFBXmxtcCw9KWwvNVpHPipwMl1zOTpQJiE/''@;'; put 'put ''ditdeXdvRG0kNUh9bDkwMj5ANlE6JEx9aDIwPGQ4ZSFsVixJZ1FeUVlrLkpMNHBmSlF3SXFVcil7R0FHPjkoS1lXdmZvKlM8TjkmKlZzNHdiRH5uclpQWHw3Y2g9N3ljQnx2TjdqVmQlIiEpczwuMF12R3pwNFhCJWozOnRqe0AmZU9sTG1QImdBTXhQdGwwdSVISEVDKylna2pxJS5sY3VRVU9Q''@;'; put 'put ''T1JRd2cpW3VwQlB8MyRWVzE+QixzM2NwVV4jJl9vLlksLmglWSFGNlJedilTI1pSQyVmRCUwP00wKFM8PDIiTGJ+Oj5LQ0Yub3h8Qm9PP2wxbnRnVVcwOn4lIVBuMFM5Q31jZng8QnBML3MiUl8vYzZiJlhkISlQJHw4WU9XZH4xSztkVj0iSFFMfXIuYWM5Nkp3aGtPTHU+TylyKTw0P2VHcUFd''@;'; put 'put ''dSxwdzBFWmkja0VOej9EfXYuYkklfTlFc1YrK3BLM34oZU1qP0gxPHsyQFE5fTdCW2dVQkYjXVczYkh5aUdNVjgwOmE5OlJdJG9wX3k/JndQKkFtVj9UTCNfNjNXaDRBRlFWR0RPejVxRU5RJGE3N1UxLDJCL21KeEhzcmt5Y2koek4zIU1NTjpvPiM7ey4+JVo6TTNQelU5Qls2TnJnInQoX2A6''@;'; put 'put ''LEROeUkyIWdYdyl+PSleXldbSCg3bCRoOFAsOzN1IzZxPFo7KmRUVSkvInwmXWA4K3ZFKDFYT1pmYCgqOEpKK1J8R0VsJkoyLFtPcUspPSVJMGZrWkU7R2RfS3dyVVtBQXUqczJKWm9XOil4R2ksfThhI0hZXU9CXy8zd0FTWTx0NCNKJnh7R0hlcjxrZ3QmVTtDUE9uK10sTkJtZngoJkZITzU7''@;'; put 'put ''NnRaKyw8dERuYFk7c3FAbVpKWlM/aks/fjkpbUIqOnRHeHdwd2RDT18yY1hUcH5xez8jciZDSEJ7OzQ2JGd7aUBjZWF1e3BePiR2WUlzfmlRbkVtWHg3YjpbRmM3SWRwfnQ2LyVNLzBbdSUpMDpYWXdzTl8uRiFkJktGSkkveV07TCRVKlRxfTZeNVo8WlJrO3tJc3QmJFNUSExZOzBiXjZpPzpI''@;'; put 'put ''dl8kYT5hZ34jJnlyXT55JWRRaUI3RCxlRVtuWFh5SVJARm9aa3VQKU9eUmU+UXpiMiNkRVp5OEolWUpUTiVVaDkxP1tLUUxJQDYick9pTEQ5LkV9eERtKkN8cz9zQUlWNjNVQHhEazxPaUdtRTxdUW5TeixvdipsR3cuZUgsRW8zPH1JbXVNWio2bilESXZodWViKC82bEs5OTlYeEpOQV4+Siwj''@;'; put 'put ''IVVLRmlVXltBeXV0NEs+PmlLY3dXIVNZNld+U1h4MG0hPy5CNS9ScWdlTiYjIi8kIXk8WV1DWVhSNyFMdUU9aVIvZHJYRlE1Y3N8NTxgbEg/MUJjK3dVX1AmXTJTR1RTV3AqKnJVcUwiJlROPEJeNngrNGNYdlU5aFpgSkFDWERheWleV1l7NkJvQTVbTnFIR21QNUpAXTB8OyhPPjRTUzpRcDJ8''@;'; put 'put ''eEVmdWFOQ1BNYTB9bDI4d1kzUENra2UpYTd0Yk1lKWp4ezVJNlR1emN+a3EkRF5SRjU+eklKem9eYmEuXiI2el9YJnlLKDxNWG8xaVVINltLTzk8YlhVZyJofkBYJGJ2JGA+JFVkPkpXOzpjdnd3czddUENRak5gQDVMUmVCfXVrSj1zOEQmUTI+THo9RUJ0dSQud3xSdV0xXlBweS5YJUIoT2Vl''@;'; put 'put ''TmdsKjY2L2s7Z0AlaSM3MTF8ZDVOSU99YkQ2KW9eXV1hcTViU0BXNkk8QGM6ens0bmwrJDxJJStzeDE6ai5Rd1JHW1dpJjBUbHR1d2JDKyJ6KXBpZ3pgRGY0amJgXzJ2Kkl2al4seVVjMHtmbTU4L288fkgmXjdtbmdUbUhwe0dbT2B8MyowMTA1O2p4dz92NWo5bFdfTUlveCw5a2hmZncsMUIz''@;'; put 'put ''fGEuZlZqO09DZHNaRkVMOmdlIT1WSlZ8O3EwO1gua3J8QUAlYktRZ2tpVXIlXWQoNyFxbilDUnlLPkU4QlM1TD53QXN3UVhJNX5iNUlncX5lfm9NaENMRU9tdUpYMVUpIWh+KEJ0P0deP3F1K2ZtPX0lWHFdUkRdbEk8biNLdk9VKjhAJXAybmFxeGopL0x7SGE1XndQQGxiPEEqXyE8cmhmIyJb''@;'; put 'put ''UFVKaSp5Wj48Qlt+PjA+V1FgZyRhbSNbbjo0RzIlN3RoJTp5bTo1OSk1I2dKY2VRd2dXV0dbVFRxS1R3WVsudks8Ilc6e0NEPk0xXUs7amkmXVJqfUdoJE5mITlOTyhITjd6Xl5TbChBSTAuQDNqXTEvTXVDPFJlRDxkUzpxUVE8M3NTZ31pLi81VDhMTkNZez9EdGxYUCMzcGRXbyU3O3QuKTos''@;'; put 'put ''SHF3Tkd5MGBSP2dKWGI6aSZXVD5fcipiWVh+Lmd+dz1gJG9GeGNSXUVQTkJxeixLezRSZkxfZClnKE07ZGpEc2skMV5hNHcrPlZiLkkyVVBLbFUjRkdUSEs+XiIkW1ZoNFpiXV16aUhzZWVlUF80RzMxdn5ONjpkX00kcnZteG9qKldpXXwsYzNdTU1kUlIxMmtRaXl5S2Y1MCtycGxYZFAkR08o''@;'; put 'put ''ZnZZcGxLMmJ7YUdLZF5GK1FzdUBTYlM5NEo1cXZ1ZW15LllDIjlHY3U5eig8K0AqU15vM1VSMTV0ZVA1UiNpYjAuVmRxQl9oXllKP3goZS5Za1JwZy5JW2NrbWpsJlgzT3pdXnJZPWZMVEF1ZVg7aCY9UFtQclZdVkxGRWwmKWptR2hKNDRXdStwe2dQNTNuKDo1VX1AeTgjaGQ7PFI4bUdINmVL''@;'; put 'put ''Y3NAWz1NVGVoZ0lFUUJGeWRvYXJRS25maURmUlgxPVNKMmUvSCU0KXNHeChKTV0qSTUxU3d2XXJ9Oz4zcV0rWkVidnJ+ZDtybj5iR3VpNCNrU2pEKFBEfTgwLGlYbEE3JGxKbCxROnksNU5EeWVgITxASVZ1Zyg7aUpYMC80VHxPTnVfNHRCb2g7a0IjWVNfLHFzNjopRXxyXUJHLCQ9Qld2Jlpw''@;'; put 'put ''aHkrPyplMCE+azt9QF1QY2YrPzB8S2Jnej1RJGVaQjhJfW5VflZEOlBZY3AuZ3c5I3F8TjBwVWlbei52Qk90MChHa2FNKXNVayszTm5MNzdhLyN0dzxRPCs4U2MwOEtIV1dCIVdZPmp5WFNZTXEhM0BAcThCTjlwTTx1eSJvc2h2IytQX1BBPVZ9I3kkVF9Oakw7PGlIejJGPi5EZ2EsO1M5c0VM''@;'; put 'put ''Iz98bVBlNE9mQU8/UU5dSlE2P1ZEd3IsSURnNzJBMUVoaHVfdz5zT0NgQDghLjsxWT91PENMZ1BPMHtkJTk0dnNdLENePUZtdylDLms0Y35dV2oiKnRsYm99Vl0sTGMqR2RoMXZVTjFlZXMhQ0hgKVd2Xi44ZnI1Tyw9dUF6PDlBdiNodkopYV5hd19WVG9leWxUQHEvJkM1VnYxXzE0QXVeb1o+''@;'; put 'put ''d0E/UGshJjxeWGIkWUtLWUhYKGY+VERCaDU/Vj5vKDJuZ3NiSD8yWi9GQD9kM2hOVWhgMU40Wj5iR0lHd3ZeNzMvLkQ3aE9DbWErc1YhI1NKRFZkVjhdZlJkeC9QfSpDOVJEXzRgaT9bLCVOZG4+TChSVDM6SmkvWnluT35+eG1mSzcscUpRVnxWMCwzRmRSYXY5KFB3JVhGSDROdVdEaXovZ1FC''@;'; put 'put ''em44Snd3ckRLR1M9eFs3e25jWHIiN3tlLmpmcGViWnl3K0N1SmJMY25iUm9COklRTnFhR1V9W0QxUFpFfHpHSz55VVEqdVZlRGIjNVZHPjE/P19aYVdmTjtoLyU1MUQyRD16fCxQIXlnaXhneW44PnooZ1Q0LnhQZXEyMk1TbUE7aTxrNE1YVj5AWl4ydHt4ZHxRKF1vdGUhNjtPOCNHdCljMWFk''@;'; put 'put ''WksjYU0rSmBhW1BUdDhiSVc3YmgrT19Vd2U2S0BCaGBETyNHWT9vflYiSTdTQ0FaRm19dlFeXUdBZyUhZn5BdHo+O2k2Pn1nVDAsdVIlQF8lU05IYDI4O0Q+KGVmMnl3N3QlSzVSaUFzdC5LODw3cTVRMCVQYX47fDtKaFMjVV9hQHhtS1JDWHBEdzZOdzBzQj1VUjoqfD5rcSQwe0pofW9ZdF5N''@;'; put 'put ''NndiWCVzfmd6ZEYufGp4WSY8V0pYUTdaKGd5ODlkKXNsMWBeYW81Nm1Hb0s6KTphXmZTd3hhMmEmN2k/L3BTYlJ3OVR0LCg0X2daVnRDPkk7S11sOmxKc2U+fWV5OXZveUFHaTQvdmopK3hPbTBJamYqWWlWTlJ6amBzPGM1WXh5RHpFeGkiIUN3XyZFPVExVzdtdnt0NTVlN241SHdxVlFlN0Av''@;'; put 'put ''JkJmdyE3YkAzPjp6KH4mSzBSLGUvMUNqOWZGX0Eie1I5bUdhNH1nT29fKD8+JTNETjMrTm9ASDMiaGs9RCwxcFAkQmtJZUYlZ29hUjhsQWZoTjZQU1FJdCZGVTFuRHI7Q3BoMUJ6JmlnMjd9RUlvIUUiT0peR0crTVl9Llk3cVdabmh9cmUpbn46Ui4hKV1YSUElNTpJJFtVK3Q5WE87MiRKYn0j''@;'; put 'put ''SkZKMjBwdU9hVFFUbl9RamZYa31ody92SXdyPGdgeH1uWkJhIW5HcmteN2o6djtXQ3h7Qyp+QTQ4fChBJXVkbXFfcHYsUllfMERlOGReakwsSGhWJnFncDI/XkhiWyh3JWQyfSlsQ0NEfGk9NjQyUTR2UXFaX2JZNWR7UnpLant2QH01c01bVF1EbkQ5VCtqRDlMa1sjOzYqN1csMCVmdnt2Pl9F''@;'; put 'put ''JXZbej8vLj99KTZNblVkPHx6KXElS3hGX2F7MFNuT0VaeGlNdilLTn0/PHpwS3khJkV6c0cxclk8Q0RHejh9NlZnSFNXYz9CSmM4MWdLZil4Y0Y/UDp2ezI5JWskdVg7S1ltOTV5XnVRY3hydVBkNyZFZVA3UUN3ZkV2RmFvdnEyaHF5QkhybzQ5SCQkRk5fQ29eO1FIJHVFXmcwakN4MntBOGZU''@;'; put 'put ''RyMxKVJmIj9vRDtuPSx5QlApVTxVQWJlcnxueGA/fF8hOyxIPHg/ajkvVy5OOzBwJlBLaWhNWkJ7IklJbTRaWSIselBDP2NjMldbZXxib0ROQXk9PykhNjcwUGMxYTN3ZFRlTTdub24sV1QmbW42M3t9Slt1azE9Imkpe0ZPeUxOK3Y0KSkuPi5Bd01sZkRuMW8lW25pZF19ZV9xcD5wWVRHWmtG''@;'; put 'put ''SCs+Zns+PzM6Iz9Bbz1xVWd6bHFhPi4jekoydGh5bGlEdD5MPVV4MlZmeFdjakFQJUh7OzNzbjN9SSxpSXU8U3dnOzAjSFBTVT1jWz51VXEkWi9lZzkqPzJVaT04SEgyWHlAR0JZM2xGQTNaYHtGNX1xQF5xLn12dEkvZDB+cSloIzFaTVBCaDZmLzA0L3pxZ3xQaUhfMnhWb3R8MF9gKThAQEhy''@;'; put 'put ''Rz1wcVMvaktwTXo4fDQ1SmowWnp1JFd+cGN0WDl9QjRzQmB7bTsoUkNxMT1wdShoRW8keXs9Mm8/aXB1cG06N1d9SlhYU1pJQSV9OVNDdXBRdVYsWHBkS3M8QWV+Sy4yVGhPfUNqR1lHPk9bJWA5Zm1tYXxpZygwK25rL3lhUyI5Xj85UU0/WiVGNnwvY01TJllfKTRrVSZYSEV1PVg7fTpyeyho''@;'; put 'put ''ejBGIStGZzpObGVgJjtVMXh2Mk0iTTMxQ1s0dDtZYWJQIWcxPilMVDtIdnwpdH17VlImXmdobVIyfFpMdU5GU2Vwa2RQQ2pqUzVZK2FYODxyLDBrJHhGP3k7O0JLX2dIe3JPejJeTl9HWnpINk8xelJEYi5LbyNndXhzO2gockBbUjtKITpERG1KeyZzZiprbjl7QWYkVk5FT2NmPCl8eHcoOz5A''@;'; put 'put ''akRqc3Z4dU1NQUYyZVlXNH1GOXZVfFZaPGFJVDZ0aGx8ZDVkPER1VVs9IkMpKDhKbWtGVjFTfitOOVh2bDVka0Vjal95e2lzciV8eEZdX1AwX0BdYlU4TVMhJj5VQHZ8YChQdEc6KGYsWFppKUExdlNwYFd5Vks0KDo5MU1hbX5gTEhOTVh9XVhKbDArWVg9L1YlLD9UOXA3RD1IJlF3THhwUSxG''@;'; put 'put ''OkIubWpOeyx8MU97M24pTDgoeV9RUDZeUkJ9MD41e3s1d3gsXl8iYHRdKlsxYVQpKShAVDpFe3s2WnhFPzU+M1ZCWHJrW0Y+fjFQJTgoX2hqWCZAYHZLQ0w/fHI7LDoxYWVibSpZNlJsRVc1fXojeVlITyE2XlJsendNKUc8K2A3dGxPeT5+RE9KWDNbRHRlc2xoaHtDJVdHd3F7SlpyNmB1TWI0''@;'; put 'put ''UHR7ITdGVl5hcVJoYCVATn1SWmMsPm8ydyNsO3lUdF8jNUVoUkd+Rm19fFJ5azwiL3lnUlUvM3xrTDRoM19rcHFZRHl8cFs6QXJYS01IWTg2QHxEPCJ8TlN0K3pLMFQhLyZHKyJMIj4/aD94NXdea0o4b215fHVgPFdsXkpeMzF3YFs8cUR7dyxicldXWVBmaHlUYjU7c3IiayxFSUsvTXhGJWp4''@;'; put 'put ''XzhxRiJeciZaPGxJJURnXTAmZWk7cz1vdCJsSldKWHJGcGVGTXtAXVZQLnM/QFZ5eTIjNkBOe0pmMj1oS1NlKGgrYCtgIj9PYzAhITQzJmI3SzRuX057a0x8JWYhaTtpOHdjQTpRc0hwRW1GdUV4IXlVb1FELnh+UyFHSGJEMUl2eWAleko+WSppV281MmxFInFUTzBbRnQjTWZzc0M8NXB+L1Jt''@;'; put 'put ''RFhuKlsjdXxEfCxHMkZQKGZ2dm1xXVpEOVdaT2IheGhGdmNhOkBxfmlTVyY0Wz50cTBUNiMkWUl6NGdDNCM9Q3ZZOSl0M0hSRCFgJmdbc2JhXntGaEVsczB9aVtCIiF+KFs7SnxWY19YKU9nXnY4PlV5LzZoSyNQS3ExezE0RXpeNVh2NXZ3SE5GMUpyNFMwaHRncVU+Imp3Pnw7U1BiNn07PndR''@;'; put 'put ''Wk1SOWM+PTtNLFdSIjd1WllgJHkjZy4mOmkvPlhXfjQ+WC9ZVWVQNDg6ODxdVTQqXldbZmxVWiEhX3VLNVpoJS9GYChfLltRfm9HIUphOSFIfk9FWWdGXWpObz5CNnJqP01tQmNjc3cwJSZkRF50NjpnJnZdVSJRQnJRbj5ody99RjhkUUZCMTs/NnFydCFNZXhtSyshYWchc1tWdzRuR2whT3Yi''@;'; put 'put ''USVOVGw3YDgoVVZmTWI+OSpZa3JMNlNrbUtOXm49VFhxYFJkJFdle1QsdG9WWUN+YzEqeTRlOikwSjJnR1ZEcnh5UFZMN3g5KF1EUEMudlREZWRQckFYUjNxYWRATnUze30vJV49V3lSNUBbP2M7fFp2eT5FOFI2fkQ3Ymc3RC4zTC4mW246NEcqcyRXfXhAITx+ZGFYOGM6YiZbT1V6enFJSz8y''@;'; put 'put ''ZzshPTBNIztWKyZnY2QxL0ZkeUYrWExzPn5xTH4wdWxrcXEiSyh7WD4wSFhKfEMkenVXfXszQCkmUj11UUQ1Zmd9Y2YoYHI2N2xOWWpAcVdmaC9LWjwkejkqWWM8Pm9tNjdFI000WThVdTpSYDhxVmlGaiJPO2B5SHppeDV9UTJsUGQ/SXJGPDNxb0FnYlg4Q11VT0R7cDo0aS5FSDlHWDgjPWYz''@;'; put 'put ''dUVnOXFsZnFaZnR1ZmAxaTVSWDFKOjtfPmFZRkpOIXFOdi5ZeTR+LyhRPSR4K0c/S21qTk5ZYyI7UjRAfEYjX0ZDTiYkcGpLTHooOSpuWVl7K3hxbzpVPk4/MEw0JDxqKl9oVm87Mi80K2BwOUw1XVtCQ3JHYV9bOykyb2I+dT5SMHBFK1lwOTVhcnN6TDZdOk9MNi56PTVyL3B4ZnBbISEqOUZA''@;'; put 'put ''R1ZfQ215Ono4N2NEfWB1ST15fCssdExDQWFoJT4xcXBOS3tUS3oxYFp0eDpsTUk+YSQwYiN6Smo1YUVCM295UFExYUNRc01mWGMqSE1AXX5OPjQkaX5pSlYhUUl8fTkzKG0kJjxDPCF1S19oP3tkcT5nO15ndnBiQ10jNjpDUWJ6WVZZYDlEbk41PisjeiVHfnB5YCVLc20uP11ZY2tIQCtWfllX''@;'; put 'put ''fCNyej0rWSoqYXJ1PyIxWThLPkB3NCN8anZ4d0swalB5SWQzMCkwa11Bcn09N1R4QDVdMX1AWUFSQGVoZWh+dHlZKSpEKVFBezl3LEw4M3tNJSxlLH49dlpOM19BS20uNCFeQVgzNVhSKV9hRnJXa3JnWz9QLmw5bktZaXt8VzRkYFNpWDl+SzAobEElU2tsJH5sWntFbEZnTmVOVW9mKzZEcFdQ''@;'; put 'put ''IXk7dlh5czNJIUFiVHQ5SFA6Vmw8djVqWWA/WkcsZzZEfERHc2FLSyUxa3JSTjZKVUpOVn1wIzt9ZjlXNXQlalpXdDRtKDdqWUVqcCVsQmd5aFJQWSx9LkM2ZEA2aklyZGkjbFFiPiFRO08ldlQ7QzZ9dEhzI3w3VjAiUEpJcWhAJXRaJUVvdCt9M2FXTjdgfT9RREZDZjEvTGJHKmdjWHtRaloo''@;'; put 'put ''PD45fDg3VVNKcG8xT2lxfDBhcFsxfSxTJENdU29jJDpDRkEsQH50cSplbE5bM2p2QGs3LisiP3YpaFQ+TiZpQSNzYElITlhSazVNInkhKl9HR0ZSUT41PkwuPUxxOEZ9OXF3VFNXREMrKiFeemVLbE1xJSl4fDJlMmZGfHtvK1toQChGeXY/cFdOVVRiOXQ6Ol9eNlhXby40Uj1DMDBxY2Urdz98''@;'; put 'put ''ejtUbERiNWd2OUcvIm4/Zkdpd0ciTXZtfU1deGd6bitbUVBnUFBVWiksclN7UTs7M21ZbiI5SX1ZTFF2d1ZlbEs+JEV0JXs8MUBPI2tNe15ddjt0K0B0fTVGQGBmeHM7QnowQ2opeWBBT25pTzZAOV8xVUtEWVhQXzFaZGR9V1ZRVX5kYEtvLDYpOG40TWZrNSExR2lzJD8vdWxza28rUTsvTV9T''@;'; put 'put ''UTopc1lgMWYjOHMqbjhROHk2bi5qSngsWlpdT1EkUndkTXAkfUQvVXVDczEuPVFYd0RoInVUXywqZTZBd2Uka2lVXipYW2hdXzo5R05nQ3c2XjV3MTZYWTBVP2NgVT9QZDVkUEBpSFEmImNeIUNvN3RvL1lUS3s6ZkR0SzYvVzZgLEJvK2hOW28zR0xaTXNrNTFVK2xjOjBJLjMxRUVKcFFtTk1M''@;'; put 'put ''fCwxSjh5eC5zelsvbFtfUi9OYGQyMC5lcFV1TkY2ZXRfbW14M3haW2ZYaXUoQy96NnNkMyZkeGNgbyZuQSFwbFN3JFlmPE9Eb1MyWzFvRn4qL3tKbnRYR0xod1gwXUlSPyFDdiN1UypwKTtAQSRKJHcsdVdndl8wbCNTVkI2TDUpMXgqdXk7X3s+fl1dYXFXP1tXQCYjZjgkdVY0bChXO1pKSDxr''@;'; put 'put ''IzBTfVhJMSNsZz89cjwqRENKMmQsMCVbUXMyfElCNl1fOiZsXnU/dzVzcmNlRzFiXlgyNTwoeWx7L1ZiaGhOJFtWaDptX2siIzU1ZWBMZEZxRD54cX5pXX4kY2l8PHljeyM/RUB9dWFyPy9VVUJiTndAV0tSQ1M7N2Jka2w+JTdFTj93UjllWlh4OCFHe0dZZmlOeGchWD9AP0k8ZjgvN2QkWFhm''@;'; put 'put ''SUheSVcjTHArOSJhUjR3V1h2RyQ+K1t6dkY8dll8NVNCaXpSfkBxdmVbdnNxaUAwdSx0cmJvV0IhPVhUVmtwUExnR2F9bDBoOFF+Zmo7QlJzfCJyQT0yPTJrYldRbiI2JClATElyOChyI3E/e2YzVGp6bDJLdnZANkN6UmNqKn4wblFrLzVPMDohXkU2TEFKVkVBXmErSyU4c2BGfWNUOTZWYUw7''@;'; put 'put ''UiwiOz8jRHFsMyVoUnxudVNndj10UWshckldYzgmTkxIfTROfWlCZnY0ZmVuVGIjTCI2IjFHTlJDO25gSzNdeTo6YiNHViwmOEVXMDpUdUtOb3E0TzdYbmI0L1g0alFsakFdd3VUODIkKzhMdDJFciw5fVtIakBpWEk5bEBjWH1iRk5YNG43Sik2WkAqIzVqdXt8Y3lFQ1ZUOmpGV0F+TzF4ZFc7''@;'; put 'put ''fCRrKWpmYDsrRFc2KllsekBxej44IXR2Qm5fRVRyKkA4S3toQkBqbEVOUUovKmEpV3Nqdk0waV5RbS48aFVJcjRgWlJWZExeX28wTi8vbzd8dnk6a1Y/SGlOJV4wdnd8VzxaWXhzbE41enhXeT9tTXMsWGlRPF41UyU7L24zKGExRGVVVWBuUDhOUn19TStdSlhNKmg+byFWSXI0PUNjJCF3ZX1N''@;'; put 'put ''ZX4qbkkhekY9QU5na1gsTkRuUnBVbiw/MnhTc2BqZGBUWV5EaktjY0NSemwvd2BrW0VTZjk3RVZHTX1hTWdqaSQqMl1WZjIvRGtGcmIhLndyfVB+MGEvOEgzOXJqTnt3UiJgZWEyMkMuJUQkIWI3SXRjd1BeVmordkh5WHN7MT1jaFkxemAmPmxsI18iLHR4cz9JSWFHfFtbK05CKUReKChbaSta''@;'; put 'put ''RE8yPk1PQmBuRVdlZ0RpLDx2VHwkTjFEQEpLVHpDKXN4Y3xCTW4lTyg2PiR+YyNsQSZEb048LjMvQkNjb085Y242SV86V1EkSWpQYyZqPmIuSEVmYjtIKkJaLH0saylqS2dSIzUqc0d7YiVyNll8QSQ8bH5jcHAzJCF3JEBsTzlBdT4wJDxqTl91cXFLdiNbWSNeRFlkXmEoMTgsfUMqZkVeZ1pZ''@;'; put 'put ''PVIxLiJFNmlfeCt7fSwvXzhqQm9Cb21eV19WW3cremhSanY1ZXN3dSVXdC46N3AhcCJ5SXtlPV5jLkZ9NH57an00O3xNYCpMRV1RNHRmalZVfWk3UkF9eEN9djR6eW89TyYkTUtpVClbJTgxRkF5WWEwajtbUDNBaFkhWzRHbmwuUTJPRC5JfVFze3p3RnJpT2lpQHMwZVgufXtkPTlOPVVDJUh3''@;'; put 'put ''JnQsO1FLZ3pGK05weHFDcWlPZ0tGTEVKeDxqYiZzbW5bVHVlKGZBRFp9QyEoJUZgcVU8NGljUj58R0BXVnUlLzQmJE03aWFmbEN0UHhoNkpzcHVzc1clMEtselZ7WkA4OSJMKCxHN01OQz97YXBoaE09JTI2VXJDeVp9VSM6MyVDaCFKVn0/bmV3YS52MjI+TzdtMjdxLlVQNiY8ZHluLkN0Q1dI''@;'; put 'put ''JjZfPmpqPiZhTz9AK045ZUdBR3A8YWJxaHBNfFlrL3t8I2RaTFB9Wng1bXBbOlJdI2xCeCZJUTxQeHMqOSgmcGw9WEEoWz5DI2xXeCtScDB9Ii9UPXNSe3dAOk5xU24sZjlROGtfeVZPfW43NDRJT0d3Pm51KzByazBFKG9oUnxCSWEpMyM1XmkxcHFlRyFpZDQ9PW81bkZoXl1QcShETF1SIjlU''@;'; put 'put ''XXg2NmZvZ2VUeyRzP0JJYih8Ty8kNS4+MnE4K3tVUV5nVVcsbT54TCMpQVA8Lm0laF86Q2RadmlaUlNQYUJnYGZNYCo6LyM8ejheRlI/VENWbTdGVlFLZk1idlU2Ui8hMHphTllnejVre0IjfmJJdlg1ZT5XKzpHKHpUb3hnXlFhRGE3YXlIOGRGflszcXw8dmRETllpYFQqSEdvPnMuKS4yMlVe''@;'; put 'put ''JmhPNzlQMWdoclIlITJ1YUJ0RE5hQ2olJERvKS5nTywmcV9iVCRzeyhGXUFJcWQzMEdYR2RhRkdsKU5aLExNLHdEO0hdQ3dbNDVQZW5sIX0+ciUqb3pnOmtvdVMmY2M8PWslZSw3MDJkNmdiK2NtZFpbOy9SVFpuQEFYNCxDN3wqbnR4RmhVQl01dWZMOD4zMTMkQDRofWp6WiM7Y192QnI2eXhO''@;'; put 'put ''NzFLbSg9XWN2QiUoT1AmQXVPfml6ZWBJdlskLl5sSF03KlVMcVo3SVR9VHFoNVp6LGYjYFMqa2tHc0kqUGdDQ257aWRVdFJiPlojWTxrdTs7ZFdLK05+LnovVyp6bjZBZGpkeklIWnc1Oj1xREpHcnJAPlYyemNScD1WZ2VeTylbaDMld1gqJXdre1hpSSx3MV5qPyVyJGlVbnZQcl57blkzNEBC''@;'; put 'put ''LmJeYVYkSTNafi92fW5XaSF5OVB0U19dKDZNcHR5aW9QeHg3O3wuZWhyQFI2V1B6al53UXAmQkNtOjs6NyRJVEwiNGg0KXldd0YpejU1Izc/cSVBIiM/Zj9OcDxAajhhYCJfdTskKkYpST5MOUxLdllCaW5vS3dYUkNWeDhJMGl0bGd9cGYlNlppcGF6I3thMFIjVUAmQTdrbkZMdVkqRXtVPzpY''@;'; put 'put ''V2Mza3NVOFo1RVFTfVpNSz4mRzo+Vzt9TlQ0XUM7KW81SUpfMmpuTyhwImREYlJrYGpsUmgoIVlGN1lwfjZdRytWTCg9LCpGeCYwa2Rpcm5LMzRiZSRqL3QxNEEudl43bTcpLjk6R1cuXk1fU3VsKDh4aldVWH0vbHEqcy59ViNIRVBzRG1Me3woVy8ucTdrLEpqQE5DUlNJWUk0PH1EcjxYbE9w''@;'; put 'put ''Rl4pQk4melFPYkFHMlEyOixxclB7P2ZSImJoKXdlc0hiInhNO2dCT2RdKjhGeHZDO1JrZFpGW3hgSmpJaF0+XTQiJHU9SihvYCN0fGNXMGw4dVI+OzRUL3dIVXE2UDB0UENOaT5AKmx4XV56Wm9IXVYsT193aV59fEZvdmd9VlhgaEh8QjhNdURSUjQkYlZ8PmxUV2hgQn5tQF1odz5WPU5acC4y''@;'; put 'put ''YUwqI1BaOTI7a181NEk3azxgLllXfS86VVF7dUQ4dCNFWV41RmZmcW1GaylwW0t1U20hJSg7NkI2VzNnSVk1TU8kUGVKLjApMUBwS1kqZnV+VCp5NFgwSm59PVowfjtIaGYobkl7eFJqM2o1QTtKU0VOWU9gP1tNMDZXR21wKWFXRXRWYT94RjM8clo5UWAkeUBiRDg/UWVHVWMiIjgmbU15VHFU''@;'; put 'put ''NnRuNShteSMhc2wkVWVRbldDZn1NS3M/ZEQwKVlVfnciQ3d9RGZ8Uz4yMyk+XVJZXTAzSVR7XyQ8a0NAVWRWS3V0bjtuRkdJLlMpLmFoTFs3JnUma0NhOy9HTjM6d1hicjFtdWtbX0hRUWlQZzpYcm8pXXlxRm1WZnZkW0kmd3ZMXVlDW0k6dyZfZi4jSXs6ITEwWiloYFdRfVpFfnJmcytVP2Rd''@;'; put 'put ''c113PnBsOmhTLz1QcHpsJjNMZFJkKkV1PF8kITYseVNfRnwmO3peeUdZcXluZW5ZUHZBQXYkXShhVilrMXBjWEEyRXh1ZT13bDNUSCwlbT03PWI1Z2ZYbC8mV3pZY15jOyRXe0pbIjphIWZWd110NSg6Kl8xMT1SVFMzQExUej9CMWohclROUipLdEEhTHlFNVksSEttLFtpcD19UE1eflBifUZE''@;'; put 'put ''ZjBPV0A/MWYjP0tmRWB1fk8mO0khYEBiM0BeaFY0JkkifUVhVVU4S2dwQmosPlVPLk4kdS9hNkBDKF1XLmZYXWN8VCspUkgoS0lwUkRXR0xgMHNfdXlFMF87Ojg/fkBMM3RCY1U2JF1MIld1K0JzIlpMaVcyVDwpdWdLK0IhPiMiR3VEbD5WNiwsbyNvYDVTNDk8U0Y2RTF2Vm93Lyh2d3dxPVlh''@;'; put 'put ''PXpZdTMzXm0xdF0sYVhYVVpuPCsmcTgxVk13OHY4cEN6WWw5VWVrbTh0eXlEVkxZVnlQTG08KFtpfjolQzRHZDN6dW95Ul9lYFUiY2xoXThJVVpvTF9JZnA7a0I6I2tLOXY+TUUkJTR0eFVFSSRicFBKcjVXT144filHalUmJHs9O0FBYFBtelJwd0w0KiNJJkYuZi8+VTJGOX5ZfVguX0c5SDlv''@;'; put 'put ''aEA4T2FuMnVLTlc8YkR5YGcuJCtzak4xM200PlBidmJtKWQ9TFYwLH55VCNNNWRkcDN4MCxBLnw4THdsKHx5LHR7bl87ek9+U2pDUkdpbUtVPSllMDlmPUNuTGdCSSw0SU1wZ0pzI3xlYn0yNCY4N0Z0cF8oUzYvMHZHKVE/akxVeUB1eTlkKmlQSj9rczNUTXJmIWI5UFQ/bEBaRH1aRlZMYDFI''@;'; put 'put ''MTRZM2hbPDNfZmosLClXWz4sZnJ8TTppIitNPExwSEZ0LHZ4VCxmdVQ3WmRGQTx8VDk1fXJLVFg0QjRAMVIpRlp4UD1JNWhZNkhiR3g3IitgakdIXkl0ZWlZJntVZXd6YDdVfEM5KiZdSE9ZVltkTz8uRFAlLGphaFlYXWlpVXVnQjlXdHFVQkwpTWRMMlsxQGVVY11NQ1QhRj1KczV7Tk1fRWth''@;'; put 'put ''QCtqO0o3dUYxIixbX2tMfFdjd0FUN0gsKEVFNC5SV1t1V1QvUlRfSyh2KlhjYE99M2QuXmhEXlB4eW1rfn43M1BGP2R9Yz1XZFNHK2wlODo8QSlWVGBxMEM+SDcjJGhVO1V6dSFKWWcuVW1LTU4+MkpKI1dYT0lHbDdXSGQuaklrL3guaVtZeyVUOjNIXmwxNWAmLDl5az5Uem0/aEpPJUpfK0w+''@;'; put 'put ''XjxRaUhOamVkU01RVHBrQGIjRCF3NCZVVzApPXNKajIzZnJweFA+MEg7RWFydFtpdkVzUCR8VD93ayQwQ3lzQy5kNiViOyg9ak1xQlt5aWJ4fjVZcDBqazc4ek96RkVfWjxCYTRlVVhuajkqPTJDd2U1SSxbeWt0eTE3Y2ZMYUkpSCpSPyhVZ2Q8OWVtP24uOExqSURLSzd1cXtOOzV2RGN5JmdJ''@;'; put 'put ''IUpVeEJ5U0tORlZIMlVEZSlGJkYyTlYvYGlGT2ZVYFJKPFdrKWFYTzE9VCRtc10+JGErd1EmUXF6ZWFCcn14OlAsYDNUVmF0QHExOFNGL0RwaXd6R2dwajhUX1toTj0/SXNVenJEZFUsRnorUSM/T1dGfldQQWw7KjxURClSJUx1eEJzbCVgQk15MHd+NkhEaiFfZ2QsJnVsbmhgJHxaRTdIJU1x''@;'; put 'put ''IkZbV0xpNz92WHE2ITJMMk1sLiNqUEREVD54W2I7STVSS0F1YF1ob1tGLjk1W2p5JS5mKD1NPl17IUp3aDh2YTtDQyUyTDwoU3s3JXE6RnBdQT9tVG56WGdPYFZqQ0c1Nyp5N2JEdGRaSmlSZWN9eTMvKHFpKStZZiQvLm9ZLm1lX3xgaCxLd29SPXI3X1k0Y1JEYSRdaSxbJjp4VCVJP2ZRKT0h''@;'; put 'put ''M0I+Yy4yWUZ9clEkfDtnUC5DKi83PjtOQEZoWTBJdEZQc0BDLF9kVXx8PmJZYEUiazVGQGM4MlZwejFDSS5EKjlFMmt7T2VQdi8jclprM3ZSOjoxanpUV0h+Rn57eHxAQVsyU3UhIzxFX2p9WUw5e1BgZUI4dSojV1cpIzxvOzlkTSV4djlQQTo9I3ckeGd5X3NMYCopeThleXQmbD5KT2l4Mn1p''@;'; put 'put ''dGBtRWprVkUqJnZFW2I4ZS9yUElTKUtMZnFpYSFQS3Q+WGxCYyxbem16W0t0TVgjP09IVCJLfEo8XlBENWdsQXY3SDg9ayJaMk4xU2M8ekpYQXBgQzRGT1IyW2s+V3JPTXNWLHheW2hValY/QTRxPDEzTF9iPytxJUdFbHIjWTN8Jk01TDZlfXdmW25RbllFND8rPUlCJmpSfCpeY3E2fTxZLmMr''@;'; put 'put ''JDZ6PiQhIXdZaHNAcEZ4Q3VPeThXKDxUSzo+VS9fV0FhJUIlR0xLNDppdyVtOzZvXVBQNEx4K10zV09ROjY2bT41LiFAZEIwbnNrYmpGcE4lQSJddlhZJjZmRE8hNTNPTi5dZUEpKTE6bGx9eEpeOWIjRTprQkh3SnFXSU95czF6V3khLHQqNyE7eWtvKWl1Qj5LVHopKTU8PEljZkxFMjFCMWJa''@;'; put 'put ''ZHtjIy9hQDczTD5SMzVyOH5efXUwJDdYTV4sQV1yOnQ4Kyk/c2NAVSIyQ1pJTF98TEB4PkNeQzt9bV9tW0g3UTtqYmxSYnhyZklJQlhKdiRHNVUhSktydmtJM292NixkbC5sNT9zYlA9aCpuZDJsZj5CZVtDKSxqRUYoRzRDO1lxXXhPKDdlNk1zJlcjLjU5KzNgXkh0LFl3RH5JWT05ekQ6dnwx''@;'; put 'put ''VytxT1tqYWp0aT8sZmUpMDdMUDopIjo3ajpwbSl9IzNhe2Yhe05KKF1mKUFRQj4uel9oXVNhdilUX2QsV0NNcmRFd2RmJSlhKWFWWiF6Ri5lcWxKWkFPV1hSVDh3PTVIeSxnWCtUfnFFX159YVFieDgmVHg1LHw1SjQ5UHxeNSxyQGlMQyt2SSE+YkdNKVpHYi92aWh6Sk94Zkk+WUp8Pjh0PVN+''@;'; put 'put ''bClBQGoiTXQmV3hxUDpjdik9XnhXRzlrJVlNQ1g+RH5uaERqeHkoaktCSGBqPFlGUnU3MyV2a2siaX1XIUQ9dC8raV9+TUJTZUlpVW1gd0NgTXt+U1Q9QypWJGFqditDSjViNjlMckpLSy43fmoiaV5zJTZfeUF6dXUpamxPNGxzLis9TFVaJUhlZHQkfDppI0ZjO0pFQy42QE4zL3ZUfHMhSU1J''@;'; put 'put ''Tzl4cHV1TEFOSD5AYHtzU29wJWokUVV3RjxFRkIvKEVHZGIyfl1kPHM1PHY6dmdvSXdxUSp0UjZmNmpoSiZgd0JJO01LdzZaMSFPIiFvTU9iNFVtVE55LipKP0FFUXg4a2liOkJFelZacCgwdlJTNXZsZF09MSlwZkF2SThWP3sjdk4hLko4NmMkaUBffkAjKnkuX3N9RjMlITBNfklrX2xvfV1R''@;'; put 'put ''KXMzMTdwVkhSfmY4X0xeNTZ6dlovcUx3TFY+eX52OjwmJHNLWWdbU0ZfU243UllsJnNFNFhiOWdANzViXmJZKV5hJnEsOkNjT3NYIkMqUTJ1XlRDKzMuPHJBQ2goXUlRW3J2cVdbMHNzRS9KSX1mP0svdF1SNHRGNU1gayVjd3V9WS4waCt+Sjk6Ql8mNGNJb3l7JDBgeiVtQiREWDROa21IfHQh''@;'; put 'put ''NTMjKUBSY0koSzdhVkg0V08kSFV5P30lejxzREBKNGNWNihYKH54Kng6WlVJK2VYcytaQ2A7IUVgS15KOHxYW1o4XWUvNjRvWnMjTUpfPkxXRjF9VSpJUj4hKjYsOjIyPzpZNGFaNyYveXBUaDRHMWcrO0p4fHR3PDJDOkp7Y2QpPzp1cX5qV3oqQ35wSWVyTk8hZ3FwJUg/cjh4dHw3eHJBWW1e''@;'; put 'put ''USNVNzgyQz19d0taRFJVSzV5QXooJThpQHI/N3oyayVhdnIuRWsxPFVnKD1LbDJxJkcwT1tLRSwjKnhHb0BzS00yTDdEZC9XalU2KVFCbjQ5IzpKdTdPdS9DWGtUMiYoN2ZwNWgqNyN2ISNrZ3VgUDNQRV0oO2M8Ok8/MkhOOyFUdkZ8VUdEQH1uOEpZamk0TiM+TDliVGxaYWxtYzcwSH42VlU3''@;'; put 'put ''RVhIX0U9SGhwfGQ7K3JgNkFPNUMqTlthQyohPVtUbXB3SDFaJTVSYXFCbjlyJWZsZmtVTnguRTkyITpzd1BOcStRJVojeEB5UW1dYzlXQV9IX2x+RkI/Rn5heUx1QyllREFWLiZdeil3cVgrMlRhWlBvLj8jX1VzWDguOixGOT5Xe05hJl1RbVtybmdTSSkkY0Y9RzFhOFhZa3NaKHxvKWshNFB1''@;'; put 'put ''WS8kd188RCNvZj56bWR7SXY1WnV2TV1YU2dqZylwTUFRJDdhWFM3JTw7RTRefj12bV5eVjRJQXg8UV1ILj8pdGUmeXJ1SWYzJExDITpSc2N+ZzxUSVVYOkFLKzVBQzElOHphL34xelNbdT9YLDJwWSFsP0J9YDs/OEtjMEp5biV6fj5xL3ghLjkmcCNRfmFIYTwzNVBPPk93eC5qQj15SCsjWTJz''@;'; put 'put ''Rk5RQHJGPnhUdEI2SjlUYWZCbyV3IUxAUGs5VWhTM2czaGxhL0xrb203eTI+Wm4lMUI7aDo8dDtMdXIsJkxRKWVhSVg2aUA2b1UyQ3xzVWtOOFg8bHcrTjB7QSVCTFYkeExgRitvWnpCOXlme2hoPzA4akI0eXIldHFiJUpMbTZ6WGBeVGwoZkN4QyM+T1Y/ODZ8Pj9uWERlKGExMSpFJSg/LjFM''@;'; put 'put ''dSVNRX59LypnJCtrZlBBRkcjQWcjWWFqRFU3bkxQcylvTFp7TkYvSzxIITIjbitZcWxgTl1CWzAlWDNqL05sN2s9aD8rSUw3OSpFV3wxTlo9V35banozSkAkdEs1YmReL2VqSSU7Qk83TFRpYH15Si4xWDkzQm0uNX0sdXZLeWdWaTFVZlNpMyhpZiU6RDIyWDdYYmNbQCFtJiNtRmU4LmApNj5S''@;'; put 'put ''MSNqNypDd2sqQGMwOHMyUFp1UlROTTpEeHp1QiM/Ui5WKTdWaD4hOjxxX3owOH4pS3V0YSI7TVhuMkxWNSEpNzBbbGBNfCpLL0VCP0VUdkthQSs3NEFzeV1qRlpWUnMsTzZLUTxMZT9pVVFaTH4uUTclcT1US21+UWxgLlVxX1dBRj15Skw/YCUvNHVIRkMuckYpP0QsK19wUVFnQ3E+WG9qZGxH''@;'; put 'put ''M3lNaCxEVjVGaW1vKjROdztqZ180VXMhK1EqJihyQFZ1UD11KDkhanI8bHFRNkZ6T0ckVF14Lz5tUVJDKUxbYE5RXm1BNGd6eXYuLmNmIU1lYmpuVFl8TjFsK08+QyRQOFU2Q3N1Py59U20yd0NLdiZ6WSpIaEo7ezUlKHB6ODZLNCpfRyssL2FSeltTLnVYLE5dMVhIVUQlWTdqYylYeXdWTHpi''@;'; put 'put ''JUk+OEx9MFZ3UWRaUiNTcXl+a1pMSys7PXhaZ1FzMTpdNmhaPFZsYTU0ZnV3PGxOcDg8fn5kJVc4RUJzTmw0bDVRWE1FcGBGSCR1WVNFKWR4VGJPdH0pZyEyLkY7KF8lQjZzfk5lZmI4THxBS0tbLkdBXjV7ams3d2BJZjs6WEYiZUc5OH1gSGNZNnouYVcufHZkcVB2PHFZRF5zRyx5eCx2RX4w''@;'; put 'put ''ZmQsfnxNcDY7OHNyWXxUUkE3SkVFUGMwM1d9M0oxOS9jV1VZV1NrVmpwZHQ+R0RVX3g7UFAvVCRNM11sWmNwPENjIn1PaXMjO3UldWc5Y2JyZlp1TXdndTE3bCNvdW02O2o9Lkp8c0JQX1NaR2Zack03X3p2ey9IRCZifTNdNU5sLjApejN5KEFQNFRkR1FqaD1nI1hlQV1eMXQ2UyFqbjJLdyNw''@;'; put 'put ''VkovUzR7MWJQNE8yQGYpS1N0e0w4aCxkNkNmYFZpRGBQeCkjcHk+YlEubzo4VU9hLkVOWzkzS0tmQWZsXW5NMWNFOlIsW1d0M0JaSDhLdFN9JixPRzdkLzZ3PnhoXkFeVUdoV3x4SUkpYHk2aUorMnljUTdeZHBOTVlgd0pdPzU9RTY0Wi9qNDtlSV1YLlQrI2UoXk1rPF1UT0ddT2kuW2J+TSR4''@;'; put 'put ''ezg4XUMmVDB+NG4+IWppVik6dDpeQ0VZVzFRcV1DRCtZYU1GTiU1TyhsTWRvQVIqI0Rufm1hKkpRR2gsQU1yYyRbbCNATXkySE44YUZsTDsvST1Jem9XIXJNYEhlcTZEYXxwdDpyJX4zLk83V1NDTjhIKDN0NlE6eXs/RC5eU3J1RkszcW90Wk1lIUsyQiN9dHFvUCZ8cyNMLlU0eGZYYzQ9UVJb''@;'; put 'put ''Y100VElOKlZuIz5nYm44eiNKI2Mrd0YldnN9eCpzWFBuIW5wTVlpal8pJFJQP21PRmJ8OD5LaXlpeC5xX3R8UTZIOktVUDVdLDQ+MWVbV1l4JCFdbSs1WylyU3IraC4qQXFqZzJXNEx4ayEmb1lCU3EpYSk0UlRJJTFvXXw7YDhvTWg9W0FJWzpxVFZUWFZmTE9hZCNYNDtXNHFmK24lYyl9PWYu''@;'; put 'put ''ejk9VzlsbSk/PXdrRHBxWllQaVhJQ3p1Mk86eU5XJSNZYTI4IiIxIm0rdDQlbzs2b05KJEZBM0VOVFhZPFQ9PDltSk9NNz9ENUZvIildQEpicyJPKzxCfntsRTFBbk1sIyN4bSx8bylEd1ZlbTQySTFvI2JsWDJNezdaLjVoamx0Q1hBWSh2fktUL3Y/dmVtUVdOKC5AMjJZaC4/b2okemgpVCRr''@;'; put 'put ''KjElYyxmem8sRVYreHlAfCk0S0lmY0lARDsjPmdZcC5DNCxYUEJhQy8obC47PyZIUzhEKUg+JVhAbTkkVWkpd0R8S0dPOXAvcDdVQUsxaXNWYC90QnVfKGB3dl8yfjY8JksjSE9lZy9KfGNsUCx+YWtNL285YFhjRXJ1VGNeVn5YR0s+QzV8VTpwQ31nTlQiSjooU2ZWYDZJQEwoQ01LcHxPemk5''@;'; put 'put ''ejJ2bnlOeW1+d14wSlIpKVZQWk95YzooPkdKfU10NV09bFNXO3JLOS91U1dpVkE/RDFeJF19fi48UXJMK05rRS4oMTVCN1JENyMoSDNpU2NpfFBYZmdLMjlAOW1mOGJhUyxNVVByQHFCJnx+JUt8Q0duOEcpTl1aciVJWVB2YC9LZnQjaEIrSip7P2RSVClUYmZPOG1uRUgscFg+aFg+Y0xNNW13''@;'; put 'put ''KHdxflclQmtlVUc0aXNISkRSODdQMWxBditWc2BMWDMlOlhtVy98b1ZXbCptN3JwMGxtKGJDUGw/JGY6dnJAbSNHOWUmcU9DSXZeOmw9dCNwV1NXJjloeT8kQ05Vbz48ZF1jOU8qUV5MIV8yVTkjZzo3Nm5DemxiRD00OH1qSUN6VnFjUDxuRHp1V11EY0ZWd1c3SXhCRDJPeDB+MHk+fW9pTXxp''@;'; put 'put ''VUI5KHNwe2pKLkxUKWlwNihqe1p7dF5uNSVPT0BNVmtjYSVaQzVyPmdGWz5saHN0W0kkSm5SSz83UzteKVV6OH5HeXc3IyVhVHwvV29PeEY9ej4xezQuRmwuWTlVZVUhYVQrRSpXLFcuX1hta190NXZSKXY9OjdiWSxGelNOLihbcXx1aGtgel0sXU1QWGw6LFA/aFlTMig0c2BGeV8lYGZWQFcz''@;'; put 'put ''STswNFdnK1lZZzN+Tzc1azk5cFZ1JFl5UXkwMVhQdTAlWV8jLm95S35Wfi41LlZ8W1hNQlR8SjxMYVlMbVVjTn5GI0x3XVlNelQ6O2lRbkI9TVZWI0hPSj52MDtGWkVwe0RVTHwqMil8bzxReEs2NExlLDdWYkheNUsuU2ZPXSJHTkJJb3lmZkxfVXVfT2F3Vk47UWpkSjtvUStdPzpCKy5ze0Fw''@;'; put 'put ''W254UUglJnFrNEh+NUI3KyM2KXt8ZGl7N3EsTjR1KV9fTGIxMDRgeSljRkg/XSp0T055ZiphI2EiY3FSVGlRPSYvSks+UFFjK2QxOkFtYkU8PyohRjBbVzRpZFs3emNbNWBKMDhIeFFaeEZOejkzbWx3Y3IuRTd1fCk5a148fGQ7TkxaLEphOWMqU1NWeFRBc15HUWhLMzh9bkd6SVR9QDVtSEBK''@;'; put 'put ''WzokZGJGTHBdY0wpKnhhZTdlQihyNGxjZU48aW50UUheVzRJPkkxKVs3V1JeQVNpaGZnZChQOVprRWJ6OGtjPVFEOEx7TXQ+MHY1TlBycTJJeF5AYjdpMyQraDQjRllgK3RaZm43clAzYGtuQnZqdXo8NSQpZVlJfUdrTzdYL2pQKlUrOGcqWTJyT1UoZCpqVV0yOVFLeDYqYDRFOE1nOHhmbFU9''@;'; put 'put ''YD89I15OQHRqUGNIYTFUMSFLcXl2anhEUXduez5oPn1ReXlQXzU+UitORDFtWXh4dDZZMU8hTUVOJnVIQigrS1t8YWk5Ni4jJHViNGxYWCglR058Xnd7My9iRnlHXX5zRzxLfjNxcEcqd01uN15ISExbSldyMk9TUSV5RHA3L0AoOWMoMFYzc3xMNEghMSgjKXw/QyN1ViYjMzE1S0MlOU9yX0JH''@;'; put 'put ''cnNjc1tSQGo7PGF6am1lb2kyd0t2QURXI3Z4KlVDMz4wdFdLLz11NDNJb20yejc8PGhDXTBSRFdwQ0l1bnBHRz5idThybUA0M1pFRjB2WkVVP1dtaD1gbyRqXmBmelBYfkZkaFlubjl5YUh6PHBwflNFd31nUSE3UTlOP0xmbU9WcnYlQHRpaCNoXTdBZW5+JXBsVlpbNCY6KH5VXkl3W202SWNZ''@;'; put 'put ''RWRoe2RvTD1AelNrNEdGdUxbcTNaVD8uTU4/JXdmTSYlQzNddFNGQVd2dEM7aEx9ZHtrZ0d+Um8mfFsoTGh6MDg0ZzdfLyo5SWd0d3dxTmBFWUpSZlh+RSM2eEs+YDNMcS5+P3V7QF1wVU1LTHt9UDpXMlthVGJffD9qLiRESCxIT3h4QGlkPkBWZnJSKyZmITw4bixkKDVdKnFtMFUzSVZmZUZx''@;'; put 'put ''JUw7RmtMYWQwVStiamp3NGEwWixRYHRyPTBXLmhnWFB6bkJeZltNclpwcyNeWlVpczA9b15gOV94Omx3SSsyfEBUWm4+JXgyPU5LNGFsbTF4QmE9UUI2KlB2QF8+aCVbMzJFVyEvSFJpZ34vdjYse01ib0A2PVBIRGdieTZpTSJNJW9pI1QvIjl6TjtDNXBubkBoUH0/SGJKbUVIUUNbTyljdkVn''@;'; put 'put ''ZDNTPX5VIW1FPykuOFJkKFNFXTB3QSkqYGYjUXN8bWI4KWB1VDhBRDs/PmgqNTh5XlZRKDNjO2s3Pi9KNWQjOm45UTdSdG8rbTtuXXN7bnNyUUk/cSQ1R0lBJW1lbF83NyJaZj9kckJTRWlhQXJrSm1LSXd4MHRFX1hYcnR5LnliLn08LnJ3eEg3MEJsKnAqR010I1U3M3s9N0ttTStWWll8YFpY''@;'; put 'put ''WFg5TEJUend8X0w1X0A4e2xBNkdUKERJRls3REksLGwrOlFSeXJ4LE5mUF9RYXZsc1AiTDxFOTdZUFlLMnl+RH1CJl9+OCx7YlZWX1VyZHBgSk5CVTJGbD5dWF1GQ1VHRnB9V0RXYlVFUEt9WVQufmd0UyFyJGsoUEh3S2wsOjBXMEhiLm81QTAjWXxMQ1t+MTlsXiEvZSk6SSt5QnAwVH45OCIx''@;'; put 'put ''XkgpZTAuMi5iYTduUFNOaWc0P2hnO21yUUVMPUYzXUYkI144OiZ4Zj4raDdPNCE0RTB7dSUhK1kkdDI1RkgrISw1MmNwbCY2biFGWF8/VygiJn48LkJoJktvdFRIOyI4V31nbSxPXi4sRit6ZHteUCtYck9xbCNqWlY+eURsemJKUUh2KXlINH1xRVtERD9wPWo0Zk5mallPcylQJFRZNz5lOHM4''@;'; put 'put ''fHdvJS9sX088VS5yZDhfR0sjVigodHNrS3ZbM2NdWCpLXTZdKyRPRUZMfDIzcCVpMCsxY3NqSVE9TzE1IV0vTmo0KERRTj1WYG5bRkc9YSxoRC5WWU17NUVibVJQXkJqdXA7OSlLdGVYam9gcGs8YUZdUURzdV9MaVFrbDUic2NpT3ZLNTkvWkROcSpIOGNbekYxbnokUC5ROTNuOWxeaUBRXllN''@;'; put 'put ''XV9DV2RkU20qc2E/TzBvfTR6MChpKE8oeERIZD44XzBNVUB3M1J5M2gvTDVtKXIqc3BUSnNNaGVgZHdFZUgyRnhCbVFgYUxITlY+MG1oI3V1QzY2eDczcFEhXyF1KSZSM0taQTZNbSVfWTAra3BCYSgoR2g2Q2BDRHhHU0szX0cmTG1LNGowNV9XY0g4MyVKaXNDPiRmciwobTxQYTFSamova1pA''@;'; put 'put ''eFFANHQiTDV8c3A0RHV1JT4uZTh6USNrS2xLNS9ETXc6cWlOQ0F6MUpYTyowfiE/biUzI3BpJVM5VzNXUWxmWFIzSD0kK2l+UzdoL3VUcldUfUZKalhgejA7UEEzbkdCZittWDNAaz0qbEEpWjV7P1VbM1lKKThzSzBXQVA0ITdwO30sa181X3p7MEI7Vml3VyFlR1NdYXptMkYxViUlYFtlKnww''@;'; put 'put ''VWc/TnghNGI9alVeMylgQkdCQUxyUGQ+WHozN11uMz00LDAsMElRYCo6djlOKmJJdXVEXjxZNHpzXkMhPkcwTSp4bzptQjYkPytjNyYpNCR6aFZDfEwmPHY7bFdRO3JdOiJtTlB9TVRnXUkwLjZ0ZXplQU4ub0EoVTB9LiVbVGF2UWwvSUBHYDxoUHBPLmVwOygySD4uQVhtQ3tKeF99K3JYL3x5''@;'; put 'put ''LnpaSVd9ViJQKjs8RXBSM2hVajRJYD8sUF9RRy9MZWtROHNMQz87S1RCSzNLaSxUK31XS25YanlUIWo8MEUkeT5dUDVDOFZYSGIvTUJ1NlluVDpheUZKZS93NmZ9eC9PS05ZKDpgaCU8R0A0TDdWT0h4cjRHVUcqOjssbjxjTnRMR1NOS3xaO2MpUDAqQ1JDWk1YMjpbWiNTXkY3e1FFTXRCTkV4''@;'; put 'put ''P2FzaGsoI0paNl8zY01RUmJzMFdeYWBzbWMhOXdOP1l9P2YsIygzfnovfjNuOUwxXmZEYmlrJDtIWiRLdzclLm1dWSs0eVhMdUdAPCtJRFJZYyxNb1tUR2glVF9FOGV2UWc6SCx7O3tYN0phXi4kfFp1Y0ZpYz52eGxIUCNCM0MzTDYxTjN7Km1MMiltPTRKTThUVkl0KFJVW0ovWHtdayE8OSEs''@;'; put 'put ''V2JeampJZ2NxRyg9YX0xRDtTJEdzdVNGV3NMXW10P2pWInd0JmhAbUlzLFREKDllLmJGezJAQEp3fXAhey4pIylyZnpNdXFNSy9pNWF9dCw5RWNkS1J9M3BvRWV5dkl3Z0V9dmpYaDdCbkRRYHVMOFhGYGpCPTM+d11KOypAU311P0VeOU80IWxrR3ZKRCZxUXwjb09HKCh0dzFiX15teCMpaylo''@;'; put 'put ''WEtkPFNNSlcke3BUMUgobTtwXiYhT1A3LjtfQyh+fD51IigqbEd6WTlJRmtpc0lyIUBPTilJJX05dFNbaUZrbmpgbXRQbVc3ZkJNQDcmMDp1fUFgOCRTPV1UZVF5L30uMCs/aCQ8VjJEOVRHPjpkZj1Vb3szRGF6K2FgWDFFZ3xNOThJWzAiNm5EfkZALDdXOn5BcygwPXRGanFiPTkqPX1IZnxV''@;'; put 'put ''dyVPfClMODJWXkZiUE1dV3RbZ3Mxej58Q1YxOXdbbGh0ZF9wUms2IXo6YzdaXiVSamlFSG0+NEx4ZTciZUxmVGY1KGBELmp0aDZAPSNPMFMpRW03KlA/PWR7PW9jM1gpZlB3dVp3K1MkXT8jdjV2dyZmPUpRdXQqQGcvTTg8TEhUXWZiU0tNOlQ4UyM+RXtnTjRNU18iKkRIfTVvIXozOz9WKGM3''@;'; put 'put ''PGplNW89QnI8NDZaOlMqPyg2anlxWGFuTGNEbzl3Jl9ST25IbzB1LCUoS1l2RjgzQTY6ajVRRTNrVlZobCs/JVtCSCF6djhJa2xgMVFlSUdMOGl4QnhzfDI5Z1FgXlhHTS8/WVBsX3FQOjRjKi8kMmBodV9mZyZyPiU+XmdsVE9WR11mOU01LyFtdF5tQ0M4U3huP3RYZmZUJlUyS2lkO3I2JGoi''@;'; put 'put ''b0Y0bm5VaTAjM0w3PWhbIXNCflJxc1dKLCJDI2RhdjUpSClCUj03dVh5PXo0TEY6OFRoZnkyTEZtRWVPfWxPQl17N21yd1ZNc2JpcnY9UVR3SiwuLmFvO01nfjUlPVMvVERIb2U4eXJ4UE5mU0kpbCRbSmQ8VjRzSnM7ciE6NHViQEdxcXRvYEQ7aV9GeGdSM1tNW0BuMVQkQT9tSUx6VnJIbm9Y''@;'; put 'put ''YSU1fCIhT3ZocWpENH4reGZRRyk+WXdEQGJ6WTlUdVk9VDA+NFdZUiFkUT5WX3IxfC9hJXcrWDBaYFhFcy5xZ195c2prSyJDTE1ibHBxK2RXImN3M3JCR0RNZG8kbGR6R2U9RHdQRkVybXhje35eRWdrZilfWUV9NkZTaztbKCNYTDZ6U1p6UnRsZkFfd25mMSx6PWFYYiQkUU1+Vm09SSQ2T3o5''@;'; put 'put ''by82O2Q7dHhWOWBMPDVTOWhjMCRGTWk7T20wbixgSVF8UVZBXyFvdzgqfDxJNm47SHdDLnNnKGRtJUIydiYsWTlfbUood19oKVJdLHZoK3FaM00hR2B0bCVpWSw1bXt2MU5oLCNVMjBlO1ZpZShUMVA2KFcycEhNTXdPKDozWFg4JFIrUk0lPVs2aTlSYlguPl5UQTozSXpxUW85WyxxXy93RiZE''@;'; put 'put ''SW0zKVNkdmQwUlpDaWM5SFMzb1AobShuJFdMP0pvTiF+OzVMZ0dRRT4kM1hgTTFdU1M1YSR4ajxPIzFgY2pIMktiImpeY0lmYUQpV2xiWU5SdGcyeVdpYXg2aTRnIT95e2psMntgT3NrRj5TMyV0VlkjNy8xUmtCV3gjRlU+NWB2R1p7RXsrMEF5ZjRad3dMPiFAclQ8K0toYTxQLiZsbztEOUhv''@;'; put 'put ''ckowb2thej5YeTQ1OCZPTUZYMUQxeUBhUHRAP0ZjcUMrRD5bYWtGKip3e1l2JHhSelJQVl5RZkk/IntibGF4cUQ7QE9RRVk4W0pgelhSTyhKa01ZXklOJXNrcjQvTF1MJChheDxzfUBBKXV+PXpwTkYqdk02bnViV3YiVChjUGxmeno3YkB8UmAjbUhFSTI8aVZ3KSNPKUMqdkJWUmBBSj0vV0lQ''@;'; put 'put ''b2VmbC83YmA/NnwuK25ZdV5rdGpnMWVwOV0zUzIzc29UTnRuKiRZQjY2fCg6Y1dCbi5QNjshVHRDNjVNbGd4MH0/SWgufD1fan5ycGZWbiRrVUdUYzwkRld3TFImJSpaa3M4N1A4PXd8TFo5aSNwJjRaVVMrIW4/IiNjKT15alRAIylqI3dWRFlAfV85ezFJey93RihqOCVALl0mOGNJZURgWHlE''@;'; put 'put ''Z2hVVUNxJXJkZktJTUAhamx1OTgrUkZQb1M+WzVMM0tXcSNQUHE1SVlWV0RdSjIsenIwYmQhJExGdmNNIyIjdlthdFY/PWI6ayQzIk4wTU0ka2BEVTwzSVVuI2l8bz1VKiJeUV43OyUoT0hfXzY1aUxMUzN9bTxFdiMrL19kfSIkM2lqdDIkSWhYSDIrWzNXc1JneGd4amlucU9fU0NeRjF4XXFa''@;'; put 'put ''JU17M1EycDNMZi8uKUZQSkEiT3l1UDBabFJ2SDFUWTt1KUkyezlPMHxjYmVrTnsrZn1+Mi9ENXVZekUqOn1ud0JAdU9TMEsxd25aYXRHRH5bJEJbSls1c2IpWXVQI25CNmM4dDJ5b01GIUBQRFhwKiYsKTdPPUk/dXpeSUEwMjdTd0FAP0M7eCozVWApTyVjfDY3OEo+JTttZkAqRkdhZmxPVFFm''@;'; put 'put ''QlNYVGB1M2ZmJC4oJilnJlJ6YDRLbUVxRWx6QkRWcE93Y2E2UWhiRylYK1o8RTY8WlZKIltfOF0zMH5lNF06R0BMM2dWWXFJLzo6UX1bPlJYPyxPc0tpYVchUmM3anApayJ5MDBWcU4pP2tsdS5KOzBRW1ZYJD5nSy9SUipuaDk5amZfbjs9c18lK05EcyI8YTpNK302ZSFjQlkzKT5tbyxBUilB''@;'; put 'put ''ODghOHdmJXYpUD5YI0g8SkRHQHo3MEdsYVcyPllrVntjVDtGfCo9UF5rOGZud2ZNOXRoLHZTJW8ifEpqXnRMSVY/MU94RWp8S0oxdCp4biFISEdUV2dbY01EWipZfXQlQi5tVEt6UExGO2BYX1VfWjpYUGhtTmt9UnhwWWNnRC9yMC9OT15nZmp9Zn5DRnA/eENDZW1lRlRHfWxmSj15aVUodmE4''@;'; put 'put ''YGF4YEJKbklONnxAbz9Xe0UpZFJtOGJCM2s9REplWFpWZGtGSV46OSoqQEphOWYqflFbYFpac2p8fFpeMSY4VDYvXWx0b3lQRyJIS2JzNkpEMWYuVDVwMX56SHFfO2BPRGUoPGJ4aHZ8QnhBdiV9QjNWZ0l5STwueEkkUW84MGNxeyE7dFBwPFdPMEZOLlgoNDk3Ykk0QGlYPyFjbjgjQWpxfngm''@;'; put 'put ''dn5AKCQmIT5kTHZeOiRIMjszSmBRXkRjZUwuN2tMUkdIdyZuek1Qa2Y6Ok4xMzE4b3JaWFZtVCQqPEMvVmJjc0g/JSskNnlQKVAieXJyVWZbTWdwUHhqRU5ONXt6c2JpeTVaXlQiJiRgLCNJUkpqST1qcVhUX253MWlpK2o9ZFs9JWp3RWJ2U0xWMUNXcyZhTXV7NkFUX3pURn00VjtQWTFiMipI''@;'; put 'put ''cEk8WXJYVXopSzk1XkxhXXUxOExBZ2tZYVtSQkUuMjNVUCZIN0hxPHorXVVhKFdXeTNRYno4L0I3I346WVhNfm81eTlEPDxCSGZNdDo3YDoibGZJPjVzV35RIUdpRiZsTG8pTVgjVXE0WSU1KDY6WXJhMGtSNG1KRytTRDJTaUF+fkoyNUB2dn0/YHg2W2RbODZqXyU6dVFOJjMrQz5GS1BvVXxI''@;'; put 'put ''JWhebTZ6L1srY0FRX1AsakBTfXFzNEMyczJnV3UkNGtOMGNGLmV0WiNHdD1mXj8+R1tRaHxvbyNvSXhTPCF7LzVKODc5dF52fUpGJFVfdlUjVktDezwmcmFrVVVMYitoKTxmflUxWmorbzs6PSRqN2gscyRoVVRRRElqOHpGcTp+Q3FnbG50YVtUcXlwXUliW0JXKntCO1AxdEJvV3tANlojJW4r''@;'; put 'put ''YmlmaSMuSEkmYDwseFg3S0B7d3hFaHA6JDQrNjNMQlI+fDdHMWcuSVYvJkhAVU5WIiNzJiMhKlN9R3pQUCF0SW1tNFZ5cW4wfntOQV8iWn1MLmhkM1ByeixGPmVPd1AiYX1nK0AhYE5NXXh+LkJuXU9eRCwiYXp4InlURlpZM0IwfDp1bXAiZzh5NEJ0P08uaU1UQldlTzFYfihIOGY+Lm0kZDp7''@;'; put 'put ''OWtkX2NuI0JbYUByR2ldVjheOzQ8O0xmIi86KyU7OlNsO3RJI0x7aiI9JVtbfUE9Z0kiOHFQUjAzbjVPQiFNVCFYYmpDdCNPRExVKW0uWG1PeSh8O21lcyJWMH5LfTs/e14mKjhGLyFCPis1TCxYRnRbTHNZZn5wIUgrZWZUIWUuRnliTEZ3OkxYNmErRWNfTnFNcF9+aSZCMGs/TiRqUExmTTUw''@;'; put 'put ''Kk04bnIlTE58SX5TWCNYRSNZR2JQYitPP2xGUmZJcz5WPX1oTHs2JkB7VSVUT0B4fHc1RTxUPUcsTlo/U1laNXg0IyR3X1QlK0tJJilJdylsfXRrI2k+Y01dO2lVVGh1SCRCSXQpeXMsJHQ8TlhLRFhmY2h6VjpdS3FdIlskQ30yK1Rqbk1oKEx1bD1wZFUrMW5kVlMsbz5TUlRlUGYob0gzeyM0''@;'; put 'put ''TyxiRmNveVo1cz1bRXkxQl1UWiF7ISosMlpTVCVXdD1BMGI0Ji5mOiU9K21jN11RPyZER09eTWt3dVVWQj5FalNmaUslVDNFWD0uNCh+Vm10QlZzQDkyUDJsbkd5cHtWJE13PlQ9cTt9OGhxSWYrTXxsNUgrVWk9WV9EOi9oeSk7OXspIT5STDkrdituMiRCP2RuWDNSSn0qOHhkRiglNStSZjJz''@;'; put 'put ''IT1hPFt6KXpKJEUqdGJpZ2AucE1RIjt5V3piSkJ7KzRXQzY1cHYzOjUmP2pZXUpaOkBqX0Y8RU9iMClXUUdkRHxmN1JiaFtTcENHK0dmVGMmbEsrNSw5cWsmcDFveCp2PywwRl1WbzNeXkwiYC4/JGQ9SEohOEkwUF5sfCFXZHM4a25OSiVgSSMlbEV5JE0sNUh2emNwNmR5UnlaR2VqfSROTXMx''@;'; put 'put ''a10wKSskMl1eTnxkcHNpLDdzbV5PMFNEVDB6MFtGSGc2S2B5VjlBQTt2TDskcTM6WWtpKndwbmtGMiUmJFQ3elo/V0shR3t+L1dyMTRLJm9lTHFvPkomT2NpW0NJXjdiQlllND1uYCZUUUh2cmQpWnw3dT0xOn0yXnRLPC8uZTd1V2A/KVtvPmJndixMXTVoQCQmKEdnXVgjXjtUWG45MmZqe1U+''@;'; put 'put ''RHJubWNbZihEOT9laTtZKD4zfWhqd09pV3NUekBkXlI1WSNMWVB7Uyx6YHByOi5NISVVM3ksSlpoT1cxW2tBZTI1bldOZzkuSEFWO0luVWtYZV45aDlRLjRvO0RgIy4iKWVdUFAvbWxKWXh8aD9PNVpgT3s+STBoTFRKKGZ1fV5XWiN4UkhYfnpnfkR9fEEye3E8Y1VFeUd5MyxmYWA9Pl1BckFs''@;'; put 'put ''aSFOeUMhMUlncT1OR2V5JSV3bFpzcC9AWmQ/MGBHWz1aKzdsc0wydyFLMyN3bjhCS0J8bGpBPG1uTDdLMCVWc0pxV1p1MyoqLjV2cXQ8Xnx2TiFmSjdpIUNRdjErJmY1QlYwTTVNKFlOVXQ+fis5a0BmIl1+NWcxezFZXjJhLykoJFh6PklFTDJ3dkc5PihXLEJlZXk3PC5McV5RfGVrJXMrL042''@;'; put 'put ''KykjYUhoRkVEW2Mme1p9Vyx0UiNFWHE/SH1QeVQiViZMPUg6XjJHJCRjSXhmIWVPWmFjYThgdFtjflR8Rk5iXjVgRSZ3KjRTbjZ9O2hXVlJOV1I0TVFzfkJfMHpTb2FrNH4wdFJgcnpxWEhOKE00NjJgMmxial8uIzUjOXEsdEwuWmtZezZbfE5fZUVgWiVhaX0zTiw8dDRrWUtsOm5vdSxNQDxz''@;'; put 'put ''SGl+TG1dLj41RkNaa04kTFMzdkdtJEJHQXp4U1ZYc3xBdyIiZncqdDJURUNFSWhzYWEuKz0jdzJZeStGUiJFK0dQQlR0djIhVHlIcGE0QGN9Li4iaVluI2QwJEBAPG85W2JbSi9MV188TGVkYWpqVz9hJVFiIzhzUFRxI0cuQCNDcF90LEUlL2dSayhsUjh1ZnVNLmlPJk55b3g/YGUqMHsuaGAh''@;'; put 'put ''alBkbiU5WGpxdXZSUSVnKFQrRlhBXSQhdyRXdkRwd34laTo9X0w+cWlXbnZ0K1dqaUAwfDpQI0c8OyhkPERjT1BJfHkkXn5VNCtCcmY9Ynk9SjdBd09NaEFCZWRLQVhFQ2pjKm5qNG5SRHpQQD4rV21JPlM5aX5+Y11gb1l8PmpwWHdoOT1fZT1ZVXM7ejxNZXo3XWNJTGpVWjdGQi45SlZNNHQ1''@;'; put 'put ''Xkl+NXlKSUJGWiMjaUtkQipVRGZdbCQqIkJVOjFwfigvOyxHcix9P01zX2Y7dz52MllVWVN0QiEoc01tTDpxQXpXKTVsTlhDQGVMUT1DdUVUNnA6enlLTThrMXd6NDZ4OTJzIXN5bzhpfmpZfmdbcVg3b0EqUFpuZHxSSHJCam42eGw0dU4ifH1KaGArKyVrbVFTfjkjRF0/MjEiQypzK0t1KFJj''@;'; put 'put ''dH5BN0x1e2AwZ2ZiIzc/fiVpK2FBTWlITEBPSFB5Zz4uO3t6QiEkMG06KFtBWD5pYls5SltANmIkYktpIW9PNyhCbnteeSI9cjw2VHJtUTJ7QTxbQyg2N1tuR1BQSzxbQUtFdX46IiwyamxSJlQqKigoR2VlJlpVemdXcnUveyo/PXpISkdDZ3UsX2Uxc01wQjNbL05tNG1XY1AzUy5ROXpxeCpH''@;'; put 'put ''JT80RjE4ZHs5QzJzRS5FYFRsbStdLClzbjVhPjJfUVNQM3E7c24sODM0bVllT3NkOUphVj5WaylbWnkyN2slcHFzIztIKGVocypsbTpyVGMoVzcpVk8xYCgzRUlvTjNmUUxrflZrYS58XXk6KkYwKWc+PF46cUN3b1tKNH1iXyoobjc2SnF1K2FGbHpQazowOmlEVmE7JlJ9OnUrPk95aEtEX3Zu''@;'; put 'put ''KU1RSCl6NndKUitRT1IwRGNEUEs8RWsody5LbU1NKWxqaGchZDFKNUlYNXp4ejc9eWtELD1HVHxrOll0VTpqTls6WSFGQzZhMGw2cFZnJXJNVU9LJiY9SE9qU1I9MlV7O2NxYyEqfWZVLmxQfStCSkFXV0hkKkdMdTEpeVY/WVt0b3gkXkF6RzZdej42a3EsSTVWXXt1VihyejRKTlg6bnRuJCgj''@;'; put 'put ''Li5MbmtrMHtJPEN4eVFZRHc4Q3BOPnVgWjEsVTpTL3JWaFVaZTYrQytvU3ljeStya1gydzFwKXxPOldjO0EzVz9WPSZFcUlCNWJVLyhRRTZhQyppOTM8Qj0pR3V9Zm8+ZzhYJEoqSkxSNTVvJms9ayxEYGxZW2V+TWp2d2VJTHp3MEw2XnA2UnUsPnpeYGNbXkdraDQvP3pNYHpfKzZEVW1ORzhP''@;'; put 'put ''LDhLQHs/NFJDc3k6Ul0jNW53NkY6dlsqbS8jbSV3XmteUCxNVTdgfkw9Z0RfJih8I3M2dCgqdWVSWj51amo9VzkjWHkqKT5FYXAqcXdVYWNyYFVwI2tKKkRAd1pqMkhEJSFuSnN8I0VBdm9QLGRaTyUuMz5kPkshajA7YSMoTEByVkxEbUQwX3JSdH5wLjoxPFVVbUI1eFglZ0E2ZCY5aClzNEUk''@;'; put 'put ''WVl9K28wanFoLH5NPDw5bEojTlI1PmY6TypWIz94MyheTTk5ej4vR31iaTZjKiE2WGU6QFY2dHdsZ3VzWksuW3ZlJF56Q3Ejb2xbNiJSQUlTendibz4sYFpWezJYalB1eTxWWSpVPjV6JTIyeGs0U1J3bCM/JVoscCFRNyR6LCtWVD9eJFEkcERyR1N4NkEuN117NkxkWnt7fnp9Vn44RFZvek5T''@;'; put 'put ''Qmo5V0tZT2QrIXVJKkFscmppNy9Pe2loMz8hMElZSmVzRF5Dc2VoUERCWExGTkRSL19pM191TVVUQlN8fjBtPXhxSX1hPEdmP3s1Ils9KTJ5PSlWZmclUThPLE5TJCo2YVN9e3xTJlRMeXtSMndST0FaKDBkSCNkZVRtcVF6OmhpQ3xhfkxYN2tvJDV0PGlLeyxzLD5iYjRqVzR9fTw0OndGM0Z5''@;'; put 'put ''OXc2Kz1GNF5xWlFlJER6L0FMYm8vQ1I3SEZFO0I3RjsqSHJ9I0BASWR0ey4pSF1eJU9keFNnN2lVLGp6ejg7bWwqZCVPfmg4RyhmdiJ+P3IuNE9fdCkuJmM9ekBEI0FnbX5sbmRIJCRFJn1Lc35IZkskbVVMXSticV0iQ2p1IzB3R2khJURlUl1+fW9bUVJGejUxNXZWdzBPaDdUKEVbVH5qIUFI''@;'; put 'put ''VWNRUCtfL3x2VWs4WSk0cnl0KT81Ry5lZEphTF9oSn1PWE9mdE89IjlrLjhUR0hteVVXN04xdTZRcnRhdFN1eSYsVXN5PSw7WXp2Z35DTkFVTVhdclh1XkA5Q3xtNSs3RndqamIjU0dsdXopIWglISEpLjQsOEouYkQzPGl4JV9INHt6UGN0SVhEbnIyND1LMkdTO3YwRUsmSjVJMWM8QFtPZXlZ''@;'; put 'put ''UEJ0M1R+WW85eUBSLyQoby8+YDJVZ2ZrUntUbVZkMXd7UkgkTkhySXx3bCFWfi89SCgzNEllSyVTJVgzZS55cXdVMnsjaEAmPCJEQ2FHOzQqJCgueVtELEBNWEZKTW5AcDIxYk5mPzVYLl9GV2A6K3hBL0lYKDVoTmZNc0pDWF4vRUklRks3fHNyeiZ7ZmB1dGUyUn4qIWBNUFtYaUJDMFJaMk8k''@;'; put 'put ''KnJ4eXR5QEN1Y0hsQnVRJm8uYy4jPGd7flZ+R3J4ZTtudSlRO1M5XVUwVURnPGpuXWBqdkc6dWo9WCssOWQ7RTUlQm8/Zmg8YUx5WCoqMj9kKSxhVT49JV9YLl86N0FSS1R7dkhfXz5me0ZSLnpLe3lodW85flgxcH4rY0l0U24uc24/Zk9AczgmQ2Q7aWxCd21GX21MLlpUR3h4fiZYW1ZbcmZC''@;'; put 'put ''Z05GWTF4VDwyZVRbQjtrP3N+e2hYISt7R1U9NE9PfXVyS00xdHV6OChjfUczPEt4Ym4kKiJ4RH5YUFBle28qQVJwNTg+TUlhJEJ+Rk9ATkR2Iz14ImFqZmdDUjFofH1CYjRbVz1PdGhgYzU4Z3B9WztpMW58MClsSyFndTZWOlQ2Tl9MXUxoRG9NaUdJXjtkQ2F5TGchblNdM0paPTw1OWREWV5O''@;'; put 'put ''QiwjSmlmdkEmQHB9YEU9Q1koMXFyMX1KNllUSi8ubC8sYmJ0aTFCcT5VdWhtaEgzWyJdOC4uTmdUITRge2FtZWk8d3c/S3B7dndDKFo5RVB1e2FXSF5RYjxjKmR9aDVrN3ZkVnxlbj4zYGtCdHl5QlkwXTVfIkMmejR4RWYlMzI9XzosdDBhYWBhX1prLCRDdUBSYENHWntKSzQ4cWxRL1VBIXAl''@;'; put 'put ''I1duJGNZUSg4ZEA+d0oxNEgreisuQCRYVD9COFNAR0RVcVNmJnptKWpac1sjOjtoZEVyeGomOnJZWTspWGJbTVJxInJdfT53RzljRSI2TVtGVjg2S2EkPylbcSxDbWYuS2dCP2BMP11iW2JGQCEzXll2akdEcT50THw3WXc0Y1NrXWBeOXUmSilHeCNmTn1udW4sVSVCeVdCXnZGIm9bO2dPREJe''@;'; put 'put ''VDVnaUNpajU1bk5ZRT4lJV88VEYvbTdDNHtEW0thdT5mfTdfbiopKG1yPUAmUGNReShzPlQkdyxUYGdaTkpgPj56VEhRUjlqMCFWQDJzX3oqWkZTIkVJPHF6NFk7KkUyWks7PDpyM1UwT2omQCRATUdLKzUxPC9YKUNLeGgmS09jYWE0bCk9UlZtOHxVO2AxaVRUfXBvN2VdTDhRcCJkYWRRXSxx''@;'; put 'put ''eClod1MsT3hOS1ZLfmBWUUp5cFtTWDEmIkxtcHpUeDtBInlNRVo8dXg2MzMuSSpTdHFJXk1XYnQ+R3owK0hrUjp6IWc/JnlXTS5yTCVEYXdufDc7S3Z5YTEpQyJPNF1XKGJUVEtva0FRTCFoenI8JjpRVEB8aC96OHhKYWJyRUVLWiZ9U24yN3lMdmVKMzRfXXpUZDxbdVNlKmVNK1NVb009IjYl''@;'; put 'put ''OHNVTFZVOEUhUlhnYERSSiFgPW9xSFk7Jik7cCNJfGI1KjNObzhMSWU2bjchbmthJVNXR3AjTHohdCtMRXFbJlNpKk5bNzQuQ3NqJFFYR1s0Ulk/fFRyfj8kZDBjMHx3UCxLcTcuSWt6ZlhPN3MyU2lWYDRjdlQvRj8wUX18NW9kbVA1PHteVk9aOCRiSUVXOlk6KzN5eUZGLjM7NT5bQjUhKmRW''@;'; put 'put ''YlEodSRQMHxrUFVRaj9zSk9rMX1QW2gzc0x8UXRdc0o1SzhjSGB4OFJAOy9NeU1sVk5eVFFCcGtgL11wVFY0U2cmfjtrUjFVY0d+fTg0S2h9QGMjSlI6fXt8KWJ3NCtgOThzbmlhQTZnZjZHaVV7THF3TDcwRHFiLER3ej57enpYRWVrQXY9Tmc4PmQiJTpveyR3eUwhe1VQTFRaUmN5ZTNKalUs''@;'; put 'put ''RHpgWDVnLyhaZ35nZ2c/VEdRVWd3O0hSY0kvVld+cm5xb3JNUWVERUhlP2kzNStUWTswRVY3TmQqYU8rKGB3aW9tbTJFWXVoeURNZW9NdjhsOTx1KkpqP11nXmpUX3JUT0grSl9ZPGFWVmQmanF0ZF9dKVVdcTJ4W1ZGLkV0ciksRzI4MCpHPD83OU8mRGJFfmJhOEcobDxRe15HSTR6Wjxmc1B9''@;'; put 'put ''e3x4OlRBZ3xEfS9oM34ycVVvW0c5QEZfLnNQRFhwOXVOJll9cChqUlFFd2lwUyx+Ik12L2F5MmNGUTpWLFpEUWlVI1YwJSl7YFRET04hKiNROVY+MEE2SU58Uj05PFBDPE8qIj13X0h1fC40RCRMdXtgWSpEOiUlayleNW1TI2NfbTFhInVvWXhbNSIyRSJndkg8X2VgW2dSN3tEU15BRWhZWWNG''@;'; put 'put ''T1VOSHZfO3JMIUltWV5vbkFDdXdJQnVSK3VoKHVPcVheOmVLXX18KHdaeHpZNix2d0JHRmdpWG5qbCRIQV9UdTRkYmohVXwiRSFDNzc3TlRjNiw/djhJYU1oOH05NXVaQGBiOXkwRSRbazwmRUBma1Z7YTVWNV19RlhdU3hDd3VsSCN9Y2RsKnEkK1R4MzduKF19bylnXU5qOU5NeT07Yy57TEgx''@;'; put 'put ''UTs7RGtCJCRraWpyXSohbTJxREh+O2EhKDxYOEI9XXNqd1l1fHE7YnNkVnIpWzAuZE1mciJSMHN9aEVtSVVKTjNFXkNSQS9fYUxoSytgPTgsQUBGMyNrfXs7YXRZazw3MmNzWiZGIVBPMD9jKzI1OWpOPHwuRFF9PFhUWmB3Qm82dSQzfHk5TGlxSjJ2PTlDYG57aUZIfTskd1smfD9NY0VsO1JP''@;'; put 'put ''Yl9MJTNgVF9AeiZeZWlqQGB2UTIodC5DaF4kSCNBfUI+cVRmdU0/eSw6bWsyfm00LkY9LyJWTShJR155S3hfR1VbNlBnZ1ZjTGc8dDtvI3JHO1d7eFgsOnAwUXx6Il1ucyZiJHBgd2UkYTBRU0UoKTIuXjZOOC4pb3xuZF0lQnJUSVpmWlNZKmNkV0d9eT53LzlQZjRKcHc5MGQxamBaQVQiY2li''@;'; put 'put ''L3xNKERSXmIqcSg0S2wpIz92LipNWUldYVlQL3hjcC8yRlV9fFJWSnN8S3smMUhbKz5Lb2pRfndJXWF1fl07djxQWTZQJnFqK0wpKmQsNyoxKk8/NV1kdy55WypWaWN7WzwuVkR7SFpYTkBfIVt+UV47RiR8eEg1WXpxaEJjbzBCaGJtfVVXKz08VWw9ITg0bFF2aixxI29XaGZbMDtNcFlgTipm''@;'; put 'put ''Q3FxbENHN1siMSgpVnAqO3NOX3xPT2M0KzxtUlpheC9vJShHYXN4OXQxJnU5bUtJcXBgXzkrR14zRlssT09NOmVwWjcrKGE9JlZ9dkhbQX1IPz1Ma2kyK0QsREBlK1Uzal9fMiZ5eHYrPHF7YVBmJmY3cCN0W0h3Z1NuXiZ3VTI8VDImcjRrSmtUQ3RjSSxTLFRZNitKP3t9WzZqLGJIVDBVJmxq''@;'; put 'put ''LyVIUGJSfkJKTnw7V0tlMC9xKTRQP2hdQElDNUw8c0wyQnd9VlQ6bXsqZH1fTD1ZUDBoQl5ufH0rWywlPlouPiYrLEZXaClRflVZYDhyK10kbl4jI0BCZHRKMD9CVlQpPFYwMXM4bjhoOjE9cnU2Z2g0cn1qUD1qb3ZaWSJRPU9nKih2V3F+YT80YzorWD5FRTlhdDE0ez5mSGcjYVolZiM8V3hh''@;'; put 'put ''Y3dJdVZnZ1htQl8oX0Q6cnJPR04uZEBbY2BpWSNnejhWYDpuUGM9bm4jXjVZSD1vZ3Q3RDJ1PWpAe2BqLl9APzdwaVFNO0xbIUZdYC5BPXNfU0YwRj1DL0xKRj5+Okh7amhLPEoyZF98bGZWPCVOc0M+biNTO1RNcyZ0RDJ8bkp4Yk0waUQie0FzO3RqMkMvX1ZZWyghK19RYT5vUXMhdVdGJnNQ''@;'; put 'put ''RVdGYEhifV5CT0BKQT5zeCQ0Q1NvfG9GUk5wMzpiUlY/IjxDcXYrOXp2bHtMW04jaHdsVztvci9NSHtsJiY/dWE0YU9dbm8vPU1obDxASnhmb2hOckdvbjV2YjtZb0U1QVlDV1RhcSl7PExYYzg9bDxOPDQ3KT5ZU3c6JEVWWiokOShHej9xdTpDRjNiJlhOfCw/K05WInYvcmBqZXhKNWkrLFdL''@;'; put 'put ''KFR+KCkwWFA5QWAzL0dmaTxJdXhbeip8ZEpXdCkidCt4Y31xYCR3I2M4OD0vNTldQW0wR1VIaHVMSU0wYEd3fVhXNyZ3S2IrTVtIdWpdKmU8T25Ne2dnfHZxZ19tTlh2RlYmT09nOmN5RkUlVSpkOmQrcV9qTiErTXojTUZkNC9sMSY5cnhtZytZSl88biM4SWhbby8qVWhTNm8oXzpTZHBYT3U8''@;'; put 'put ''RDxgPX1PY3lmeFVgTUYpL3BEVXI5MnAyOnBUcnd4JmF7JDxFYEdQL2BXO2Jram1tK2YjdUJjaG5gdXojcHtbdmI6bjdsQ3oqc3xqVFpoVVNSXnhIPFl5MHVGNkNyMnpKXSptdDRHTz1PSmwrWSosUExdQiVydXNCUU9gUnFyVFBSMGBPITZKb14jdnpbOV44P0d+bTk3TCFfTzZfO0tSO3xBbSpV''@;'; put 'put ''ZWw0SDBoNmJBWkBBUVRXcng1RFh6KEN6NHcqcj88eltSQixxby5RNGwjM0pIaCxoQCY6d1U3Ij9oTk5OI3chIVlRSCFIcyU8UVltZnRgL1BLOkltXnt6YDFZVDMmcDE6Xnt0RGFxQ0U0MV1ZRldOfTJISCR8cjhVcCxVW2dxQmQpRTBnaDZAUG5BfkRqR2EvVS5kRzVVXUg0bExRaXd0RWBiNUMq''@;'; put 'put ''bH50fUoqditGLEojVXpOel5mJUtbZmY5OFp7OjxUREI2VEgselpoKVpFeWQlcFRNfWNAbSomRXhINixjcWdgNz9OTi5Ib1MpO2pdNFYoQ31OXz4jY11VK25JOHd1MzQzZzIyMi46Xkx4em5Ye0BsRnYyT0wqeH5ERl09O0ZhflAoVXE7TmxKfD5NKk4mTGwmN3o/V2RXbS4lM3FhbSh5QTBed09r''@;'; put 'put ''OEgkdUY9MDNXNSwpejcobiQ0Q0hZdiM1Rk0sV21oRW5fYnltQ3YoaThjfmtpSXdNRV1gKj0hWEdKcUBWQF0jbnE9OEg6VlRhYklZYmJPSTJHNixlelg6OiVIRVptUT83YmdmQEp8K0pWNX1fQCN3N1RFSEhrdV0kbCx6Oi9FYDdqfjpRKV5FUXMhIVAhS2xhPF9XfSkoUGB6KixxfSxsRThBdSop''@;'; put 'put ''aF5XPFZVIUVUNTZIfmpXJkVUKC42Ol9PbiEva01sU3MvamJyPU9LSj52Pz9lTSFkayZOe0k8Kjt1diJuMWh3RW13UzEjVCRIaC5KanJ0IlpCa1lrdHxCdS5oQyguREdOQjNTIyQ/Mn0uNC5OcUZDLlJZQ3Y7WWI1M2MxNEdmenM1eypSN3djdH5CRG5sMDMlQG0sQG9oKjNLRSN7Sz93b0ROQFJ3''@;'; put 'put ''NSJVez1hOmQ0Xl14Pz1XO1plPnNYWU0mTG1ha0YwM014O24qT0khZDRzOTdub016LHdFRUJ8ODttMU1nVyUrWX1SRmJrLkRAKCJTZGZpTW8qJURYWSg1dzJCMWBRfnVNYzw2UHZ4SiVsdmhFVH48biRGal0oLk85Nzp1NE0sYTNDKiU+Tj1sSzkub1MmYk9KNXJ2QyptZS8kQiVMMDVBQ2o6THhg''@;'; put 'put ''bTcsZWRXZk83cCQxRUw2ZzdVcGhSR0pNODZjdDdDU2Apfm5BQG5Ral95fUM8NiMhQ1VJVFUpIXVIQTUjR1hzKng8R00jKTdkPW5rXUM5N3FFZiJ4eDY7IWlTRERPYDkxcF5HV2RzVTheW0Z2PnVIPnFbaXhkNi4mM3Y0SStgcTQiWikkaFBMNWFsPGtMLFA9P3oiYjVpY3d0c1AhI3ZjdiFiXVpr''@;'; put 'put ''OjIsSl5NUWkqQHdWNk08PUJbSFVROmUxMF4/YCR9WStJR2c4RVJDQiZ6OUNzN25NUkhFOm06cW0wZCNjUTU+NVlyLjB9X30jbEpQT08lJmxIVWthUE4waTBgdjw+NjQ9RmtpKjk3O2lQOXpBckEkOlA6d0FTNiUkT2hjWSpBaSFhMDV7RzU0UnVCLD1NYUxzb0ZGIz9FWVJMJkNYXiZjPy9JQ211''@;'; put 'put ''NUssL011NlEsKTdsP3ZWVn40MzVWSCokJlVia09pWGRwcDcrUjdDJj9HTi5IXWRaMkEuLnI2KkpsM1ZuUm10RCptNnRYXWg4QE5hRXZLPEcsJkVXVTxtdVB2Z29LZnswWnNxX0NRY11mbUZoTF07UkwqJjo0dVUpKj46b0RKJVl9Vz9lYHw1WlFwaEVaZmFhfWpAL1EueE1rU21XZ1ltU1FPK3tl''@;'; put 'put ''TnxbVDc3IyxsPDZWPnp2R1ohXjZrOWhQW345fH46OkQ6ZmdYSFR+bXw+dzdrYnFxaS4rRnZuMkRKOiwzMXd8YDA9WnR1OG9mT1UkN0ZuW0RUPWRwdVA/MypAQix9UnE1SSJiL0wzfiF5NiFKbkBAcWs3dT1CTVhVJWp3P1gqKSlFM1RUJTlKO1dURHY+bTI4UVJEc1pZODhgckIkRiVla29JKSZ9''@;'; put 'put ''YHUiez9XZkBuLnkld312WUdLXiJpLnM5MiZIdl4kRk0iUkBfIUVZVWllbXtFQj14YndVKWZ0d3BCZHIkXnYsIz5iRGZaUWNhV21OLjhDbEJxQiVENHsxLmJ7cTcuYiUmWHUrViZ+S213dTV7JGVRLEIhIndlS31odyt2YXJ6aSgkaWFbXUJwdFZ9VyVgdDxuazheKV97ckx+UGA9fmBISkhlUXhD''@;'; put 'put ''NClFSFBASnRdfGNyaCYpPDY4QDJKWSxQaC9SKSEzWVRYeFgoUi5iRS5yRnJAblU5W0k9bUhBcT0qbj5sfVVPaH09L1VBaWF5VlYzQVtgRHJsS2A+NHNmY0tiJjkvPXwmKW1YJFB6VVZ8UiZTP11uYFojdUk1NU04T1BveV11PlshWytWZ1g9V09reEhuTVVRa3w6K0JveE9UUEgrRGJPQGc1fVJv''@;'; put 'put ''R3tdcVRySGZuVFs8MmtZZkZ9UEBtLG8oe0JBMnprOlUwP197VCxTVyomW2QyfShrQVpGYlp5aGFma1VYcCVoOXFxaEx7Q2hrZks+L3I7UnJWJldET3U0KERLKl4/RzhNfFU9XW4/V2tNaXA3I0c3UDcxYEgqJV1AOSxqOkw8X2tkfW9dakxneHx3eTU5bCJsJSozIitAUHh9UGo2THNZKXZgdjBr''@;'; put 'put ''Kyx+KUhlY3ZxSXo9XzkoRyZkY0lnNmojJnheOVI2ezAiQU0lRG1QRnN5RT4+dVguQnhGfUdjLmNnNmhbaHQ5eWRsd2VMYS5za3liTXhIMWZWendCTHxuVzFIQ3sjZFMpKHYmMX1mdHs+NG9qK11pJWxdYGBJNkEzR3ZYaSpkLitnKG4kViUxYlJ3M01uPEo3MF1mfWYjJUVgellrKTRbfGtPUU5x''@;'; put 'put ''LygzWFdnekZLN2dMKWl8NWZYOWtzNSUoSiQ2MEMpWXdNdGRiPVdnSltmTnlSb3A7XnM+LFYpcGtJW3doc3x5PytdTThYR3JWLyhZQm93dGM0bSJHOmZ4eXFOfUteMzA9eHJwJVNOM1hKb2YuKjU2cjs8ZzhHe1A1K2A2T3d1L0VUbG5rTzMyZ3VAQHhzNS9BRkVfVHtadSxgXVhZYTNFWj5eTVUk''@;'; put 'put ''ZVlIKHpgKTowe2B4KyRwLiJOIUAhTiVFQXRZRUJVQSFlV3M7aXZwUn42fEQ/ZyZtY3svJHomTl12Xy5gPy4lQixtSHFHQTMqVnlbbXx2byU/LiR9R3NINXFxbW8rWj00dyNiL1UxcCRMbEllVGUpLFhyWG1+ezlBQmcxc10pTT4vSkJVL2BtPFdtPXZnOVErdS93Vk45Slh0MCF7Q1A5cy81dzU9''@;'; put 'put ''JF95MG1GNDN4TDB5ZmFVcyt7T0xHJDNHOnxjQVt4eyZJPFJMWm5de1E1PkBDJEYmbDV3IUE8bnAxeC5GMmtxSzlxTFZjPndufDhJI0F0VEBHTWlmW3RnLkJMM15aaiRlMGExdWtpPDY5U11dfWZ1OSo+Mndfa2IpdmQxRW9yLno0QmJnJSVQYEFZfjBVJiU7I2U3JHtgSmw3dVtVOWYhenQ+PkI5''@;'; put 'put ''N0F+NkYpI05wQH5jVWhUWyw2dVZzbnZmPmZ9VUFHej05Z1lYXjV7SyxOLFVXS0IwX0NuKC8xJGlVQTgrSjopLHAxcikuJXs9aHZqW3QrNC5MblU1RkN+ZlluQ3JFOyg5eGxPOHc6NXlxS1hEMyRxcixgdyYxa0V6Z1R8KyM/WTY6Ol9oZSp9KSx4a3chV0IzP3hyMHxOUC9XQm9tWkVmS1Z+MGNT''@;'; put 'put ''eHFaITBtPG48Pkt6MTVyS3k5KHQuWXA6VEssb2V2P1oubiZJbV9YfD0pTkdpVTBgcHJTK1dPSHQhZG1wJUJKYGoyLF9Ze0VHJjA2Vz4lLi5nOyU4V09EPl56cmNgXUEkQ1YjMkVgd3koUm47cixIY1N3KCImenA1ZSlsWE55OllwIWV+VXVmeCo7ZkhebypZaTJbek8razZqQEhTSHV0eEJlcl1e''@;'; put 'put ''W2hQZV8je1tgK2gmWEdrSDhMKkllaj8+d2wpQls8bW9VWTU7KVlXY1lHXkFYRUgvWmBeNEtZU1M/Pio2MFcsJHF3fTdAYlFRRCt5ZWRmR01HV0ttY3h4cWNCeEs+I1ZFLko0ekR4aW19enUmVkNySyhBRyNRai9JWCZxQUlVLEIvUj5SZytLbihwdnwjK2F2L1k7Q1BETiVOYVF+dWVQWV9qMEdv''@;'; put 'put ''XXVWLHlgKnAiMnhofC9PTHQjSzZCO2M7dmlsYjRgRl5AWUB7M3NlKzhoW1Ard1tdeVg6MmolJC5pVkkpSCM3LE1JUTFkQ09DQ0g7d2x1VyF7M2QoZzo1LEx1WTI2OGpfYXdMZE42THplfGZrMENPSlphPGomfC9iR31yOyZhZSt8cSYhXXlMLFtmLllaVDxoTloqTDVlVj9FJV9DUmpOZVtANFV4''@;'; put 'put ''RExQdlYmPVo0Xk5mYmt6Y2NxQmohayQreGp6cm0uIzMiXSlZZDpNXkJbTHBNXi8qb3NWKC5SM3hWX1hsKW1gfHMle2IpIk1IbUIja2lqNll+JFNWfTtANz1uP1JoO2Elakc2WX1SW3xnWWNbW2pqKkZ3eEslfDdKT0JYbmI1NnBHY1tHdER3ITpqeEVeRUlbMVhLZyNtcD0jemszITBAIV9nWWo3''@;'; put 'put ''VntXQ0JMImJGSkl2WD42U3VWO3hdOSorUHpER34pa2hpVChYRDQqV3RMTGNlemZfMzc1JEBHOz9fSlo7fkY8fCNjVC9DdjNMeFo1bDAwJkVpKjI2UFpsJDxwXnpvPT02Z0RfKEVtPDcrazUqK0FsKDxacVVGMm9OUEk3Q0MzLD9vVXltO3gqfSh4Ijl0KiFSd0Y5Yzx4WzQ0JTRrPyY+JWZFQmRp''@;'; put 'put ''TjI/RG4oMzhZZnI9O1l8Z09uKG1Ra3cqZjJnPS8+Ki47KVMhPm5XWiYsK0cqMTgmQ3c8fjBgMENHSEQzdSJ+QEhKNDM9K1BYWD0mVVR+MSlSa3pMY3kie0U4UUVHVT5AUX1MJW9qQGdBRHEmdHxyUDosPWcsbT1jfUU4IUAqczg4MFtBYV1PW1N3dC81ImJIYHRePkpXITBMVmxiS15zNnk4KWli''@;'; put 'put ''Wk1kSUMmTk86U2BWMihOZGFIOkQ8KyI+KD9KS0tkMjYmV2QiKWttT0NedjVMIiUqL0BaUXFQY05JJXtdVypxVUtAMkU4WHBCUF56XXxKcGNtUT0+W0teKXlBcD5XI2RdVnZeIS42c19vfDhlQ2ZEeFtIXVUrSHk3cn0wYzohS30lcEdQU3U8PDYqODl5YH43OHFaKHdiOCtUWT1WXkNZTzp0fkdC''@;'; put 'put ''PHdOZzNiWmZ8eDBlNHIvY1V5US9ZLipdUTs3d31PY31fYW0+X0xeNXk5RSZuI08ibkhwdEgsRmUqXW04bntDRn5AUnxbNlFrPmsoczxhfERZNWwzdH0rfnk+fUJmQldWK29ISSYmSXFgT1dob1suODBUST5EVVU5SnAyMnJWdCs2c19bJiYlO3YkbEpXfWdZcSxESzRxPW4xWUx0bCghdDtqVEN9''@;'; put 'put ''Smhbcit2QV9qM15XQnQwbDZjcDF8Qmg4W144dnwxMEdUO3t8dy54djY9MG8pZGt3PS5je3ZjYjoyZEtYMXhhU0Bpcnh4JUB1SzdxJk9LQmZfSTAyWk56aFFnTiIweGxLVF9BRyR7PntpfmNYan1UU1h7X3lBWDE6Yip6XmojI2FhdEJFUVhMMjRbKGk5dllab1lYUm1mNUJGSnRGKTdQbX1mOUtf''@;'; put 'put ''YXg5I3NHYTFkL0NMb25YPkQ0eCtgL1AjO11JJGJ1W35ZP1BhJndJU24uTDFQRTJRZkZeKjQuM2U8bUI1XXg7Qno3NWJhOHNEak5OITQrcDFSNFRjZU91JUFWZnw1V21QOzkmaXs5JGwxans4Y3koWzFnPyJeTz8/SUhIeUpDcT9jWDtjUndZdyRYTTJoWEM1aFNxfjk8ciYmbFsyKitfbzMyXj5B''@;'; put 'put ''KlskRD8wdm5FVVE+ey80VHExITtMUXkxdXA5WVAmSE05Yk92OlAlKyhOa1pGYVk0KVQmIXtWRFRROVpIbW43WVphPE9qNj82UUd3SCoqengmPEF6Y1UkaU18Oi8qd2pFQSpzOWk3fUU8eVFyREZmYy5rOyhldTd2Mnp+NzBsVjdKb1VXVGJiYmF2NFc+PX1eSmBhZTYqUGhFS2ptITZlVVB2NH5P''@;'; put 'put ''ej18Xmc+PlQvaGtySTg8VnNuLnRQbHc0UEArJGJpdjg2OmpjJUIkVEh6RUVnNks+e0FROUhibih6eTRfPl84MFpAPG98ODdxOCY+dXxyOGxTVjxxRUAwYk1CNz8yeWsmVzxhJUFqOD81Pm5fXyJ3Vk5+VDFPbEVsKihnNENvVl1LMzdlV1cqb3okWUN0NFQ/cSpYNnZGZmgjV0J9Q0skJlpCIng6''@;'; put 'put ''TkYqaiFad2dbcXo4NU5YWEpjdlVbI005O3lnWF1DZDxqbzVDMnVUOW58LnVbT2lqeU5+YiJHJlgxTVl3aippRHF2PWY7N3lReFkiT2NHRlRvI2RGQT5Xe3xCIlQsdUJzR0s5NTtmIzRbPSZGblJwKmRScltBKDhAWExBZk9AKFtLVH5mUG0mdSswbTczK2BqKyVgWVtoNWVkdn0zejVkZVhhJmJZ''@;'; put 'put ''Y0grdTtoV093PzQmZTNXYFEhPDBGJWJHR3chV2AlUkVUX0RYdmdDV1VFJkUwbCkwKzArYVt1e1dlT0JlcjdCXXNjOUdgJFdyZ2tvTSp0aFhiT00/fUxPP304O2A/eUtgKk9YUzs3Nl1ALENjSkwhZzBSKjc2Yjp5bVhGKiVPPV5aRClmKkcsQkBscHdxZGRuP2BqRW1vOSVlOi9ZITxuN24oJWVs''@;'; put 'put ''TFFpWTVabHxgekQiWy9jOEJ3Zj9mbzUjNUpnRkorNCMmIyI9RFBvVHddbDZQYUw0VG5iYkxxRFlFaTolTGUqIV9WSjUqbnpTNjZdKTttdTxuPk4pSV0hRyhTPSJaa0g+U2QpT1kreSJKYnFmRSouQWAmQ09DZTJueloiVl1zX0k3REtqcnFvT1YxUSwvI3EwSSxfYChbRGleYDowXU4vanN3Pndi''@;'; put 'put ''eCNSfFJEPFtNdW83dk4qRkZ6L0Rie0tjLDJGQ1s7bGNkVml6eW01dW9JNDAuTW97LFJZMXpIMiRvTzA3fnYsNzU7RmU7a31JN2xKIWpdbHM4InlAWSlyVU9SVjZqKTZZUXV6S3cpeGhDKU19bll0U2B+YjROMjFfU2lkQE18SXw1U1ZPPC9sQStmeSVxSzIrRyVTIml6UTQ9JWlXdS9tLz43UT9Z''@;'; put 'put ''KmMxSGJLJnMhaERCMCtDWnxTOiZ6WCl6Ol9XJU90VSVwSkNaImQiayFzPEkuejpfcHR9TT1fPmNOKl9aI0NXMDZZNnVYZUUscnohN0MyJUdEU0RTb058LFMqIT1NOHtTUyo4LFp8cU5UaEZ+SGEvbjEla3plYDEsWW9XKkc8Tys0aF1Ufm4sTWkqTzFwUyxHc0ohYmwqV1ZzezEoIW5jQSI/IX0w''@;'; put 'put ''VyNfKCgiVFEiOUUuUCFuSyUuLmh+MShVMyw6JThMVm18ZFVCXWVGUThtPihEWWErd3BxQCR+IT5YfEo9cnRjXms7dV4hcWc3S1hEKlN3ZEAqQSZCaTshKyF1JXRuSmY3Syhed2dbYj9ldExvMD5DRVAiRyVPfiNwN28qeWc0b1JwTzFra0g5JFFpLEJUKjUpOHZpemZYSzNdIU9aenIlWjVTcm8r''@;'; put 'put ''cEFWWWgvQlFDKlJdflk3bGVNYCF1ND99YSFHTlswZT1xTm1STl1ZKHEvPUsiVXZ4L0EwSSpeRmZ2T2VaWDt4R1p6cEtzOF5gamBlbH47QjFdT11Uemkjc31PXVQwP2dXIk48WzI1ZUAhM3Y1dUBgWF1UX2Mkfn5neFU0akErMVFrZC9ufD8pK35EeixRUCIvSz5meUlOVCoheGsxPnw8bytHKVpb''@;'; put 'put ''Zj9qM19IIV9rc2kmPSZOOUJSV0crTXteP0hVSjd4aUZ3fUc0SmYuLHdvY1pAc2pWUlBkPyhRe3NuYk9uVWJZeDBnVl0kU2pUOyg5dlpBc3dAeEJeSXdjKmY5RGVkLldSKUd9SE1EU0ZVR3RbKlVtRylXenpPUmAjWkRRX247JkhtO05hYSo8emRna2IsZTwsWnhQJTBfTTFDfl8oMnh6VEgkdHNx''@;'; put 'put ''Xl9AIV17XlEzUTdEdjJRWmBJKF5qLFchTjcrWmhKYSFHemdsNHFzJEZyLDp1dkRtPXhlaCRkYiRXLFRuYXVCOF44bjdQPHRUOU5Daj1bUyh3TD5oLDF7djR0Uil0XlRGXlF1bzBQQyFeVT0zUkBULDZHMDFKdXBJQ2oiJElCcXczZjhDT3xbNnttc0oyRDw7UFRWcmB0SzZWSysxdF5PKVFsOCxs''@;'; put 'put ''b2M9UT1lb1pePl9JZkd9YGBnbERaI3dMR2VZPzBkbn08SDJANmQkdFRJc1ZeVHBuLztCNjx8XXIhZD1vLEltJXhzcV5dbF1YY0tYdGx8JER2Vm5Zcy5wXWpYbW1DfTdOOnswLDM4VF8iUVtDIXksJil0VDVkaEVtXT1ocmZ9Yk4yRnI9a3gmZF5XZ21YejlgWnVQeHYiPSNqelhfKkM+UDh9ZyMw''@;'; put 'put ''QHQ9JDdpRXwmKUI7YS4/IVZoVVdGKVNMOlhiJWN+ZnkhOyI7PX1TK1U8MGRNKW1EcmxOXT1VXz5ULHZWcnI6RXxRTFRhaU5SMElhRU92MSk+In5VLChTN2k3UDd8TVlYU1JRenI8Mm1SUnZZdmYlUCJqendzVkdle1J8SUhecnl2ZSxQPzBvLCxqXSFuZiVQPzAjaSVuVG5Yfis+fTV3VVMjemo6''@;'; put 'put ''QFVtM1BPIV4uPE9ELl5VNDxMMXc1Im08MG59QWxndXp1RTg5OUZtLHdlKmZoUUswSit3Omo1QzRBMmx2XU0pc1JKOFI1ZmlPbTtFQUthfFpYdyZicFs5TkgsJE93fmZyZDE4ciw0ViFzVkI+WDIybkZFcnEvOyZgOGcoJmFsfVI+cnsiOzdTOFhkWTUuazpUQFRdMnM5UyVYNCVbbT5MV2wicXtY''@;'; put 'put ''S1s/YjVRU150UVhDMEN2MCUwNFRuLFZeeThsbTVTPj1yXSRpMnpPTmRhNjBYUC8rSX0kIVhQbjdQPEdlQEsyb3MscWh4TW9wNDxoazN3M28lO08oSiYqVS9+ImdnZTZwXkUlY2VFO3JCXnhSMEkuS1IsQUt3MEM4bz5Lez89djwzaio2RyN7JSIvVCM6bD80S19RQ0Q8T09wYzAqP2IwcHxXV0lR''@;'; put 'put ''VVtlYE47Tm86Nl4lbTc4eElvVVpUKi8/Sk9LfCh0KTAzRHFtO2s+NXhZPWFdXipET1dWQDxLald1UHlbSHYpaGk4OlJMaFtffWdHZ0lTQ1R7NDE/d35nKlUiPzBJP1M+WXpVL0pnNj8hMVYhQzsobDBWXlNUL0opO3k4bUV8WT58JjxXfnZIKUp3OUIzTUYrd1tLdVR0YjJaSnVYWCFCJSk9bntR''@;'; put 'put ''e0xafWBhZi48Rz5lbV8mKEh3UzpZIzgrUXdDOiZPL3hMNmk2OFg3NiVlfldUISs1XzNLNyw1flljISQuS0pxbn01JipUVF1US1dqOk1yMHA4Pyw0ZmBYaz07TCFhVkAwVClZTzkpdWVYPjBtV2IiXWNiLGhjcnI1YCFuVE12YyM7RX0qOzs8KmxMRSF9Mm9UQG8qJUs4e1FMQGpxQUQxRlQmUV80''@;'; put 'put ''OjRFLktEUHMkYEUqRCh3dl1LXUdlaylTSjR6b10qJmphJHgqWmpzQTt1X3k4cCNpTVM1PzhabkkoXmpxLDBtKkl2RTAmKkt6MjQ1VFRzUlMxREJXanZMLC8pVUMxdGRjemxzKjU/VF1NY2xMeS9iUm85TURDSCMuJX1xKT12L281WmcsfDthclpINiRgTzx2Q3F1SVRlSk8zXmgjXXsveE1XNilA''@;'; put 'put ''PGVSTD9LI0Aqc0QoKUtdN2kja2xhSCEhWEA+RlR5RkYhMjVlPDEwNi9KLllJNiVpfXJtRWVsazxlaCNPazNsbVp9Y2VlNUNlJXA0dHxtKGQrU3dHXUZjeVJ2Pi5gcnNMKmEhVzdWcncsT0xtPCRtVXBQekplSlt0bUEjYClkfnRIP1t8I0suKj1vN2tHSn1aa1RHK3t2MW1OZVsmSWlxajZNb0pN''@;'; put 'put ''MEdmXitAY3NFNnJLeX5BfD89a193MCFpbCl3bz5BfSZtKC9qOllLQUZoMDE4LnI9NTxNW09lcCI0YE5gUCxpKTE+JUh1NyxdcTYhVGk9Ty96Rlg5eEJrQkxCPWhCdHE3MlEkYzl8OXhDUTo7VU1OK1AqdXNxaVIoYG9eZGNKJmJyZDFCe1IrOXdbMVZqVyxlaWZ5eVJTbTF5Q18vJU9DQXVDVS8o''@;'; put 'put ''OyVkSTVOd1J0d2NedD9zRS5FW3VlNS5nKV9gej9gUys0YHs5RXxEcmtJcmJudD5Mb0Q8M2EhM0xBK3I8TzBeNmExW1dRYUddcVJ+bXNxXi5ZJS4oV29+JFEyeWxaRjc9W2g8SjF0QSNreUZ0NnBYSiFDMmxBbDUqa1tIZ294Pnd2Rz0jWSQmTHd4PWk+N3t5YixjbUNGMFBRbG9+O0xrTDdEUyUi''@;'; put 'put ''Lzt2bkp4ITl2ZGtXdiQ/UV5KZUVJSD0jPFBWNXhsbzJ0MSU8IT9JVWYhdyQ2SE4/d3dPaE1IQCJkOz1FKEhsNigsViRZdlZKQzk/OTY+WGpzWXRsQHpjTCJOJHI2QnJGdE9GXy94JEx5e0pwPHhmaktyQE08bXF0c0hCWmt9STZLXVp3cGZKcFdoc35abGtPUUlgLjh6PVZickYrS2J+WTVdcWFI''@;'; put 'put ''TnJbNyN9IjZldXhFIkBYSEVbaE0lIlVTKHFJV0lpSC42bVdyTXNhfXkmeGg5V097OnsuVX5daiZaSlorQ15rRiVDZy9DTzxid3k4UlJ6Tjg8Li4rLiVCQzFmPDhQS3t4V0gjYHM5R1YvdGhHdFFwVEhWITx7PT51PzEmRXIhXWIjQWxrSGBhXUBiKDs+ZiNBbGtuYGFdbWgsVmpLPylyRXNOPXEl''@;'; put 'put ''Vk5POC49Wi46Lk9PPDJAek1LXzxtYjs3M2s+OnkqRkl4d3dCciYwQE8raFJXJipsTF4hbGs2L30+JigkLiFiY3h7RmhQOWN8Uj9TOE1OPGhmK2hgQGIhdlZSdjVEelpuamhiMWo8Y0krXlU3ZjdDNl1vakxscV5UOzA1R1FhVG9qYCNIa1FkPTNvdjUweztaYlhAXXZFckUxe2xJR3JQdi4vUmAx''@;'; put 'put ''TThUYlV7OXhKez18eElPQ29rT0clZipELzQ/LmUpYyVJSzUrYy92bTFkLC9QN3EhTGt9VFU8X2IwdWBOYVhGSEE6P2h2UV5fYXk9Ol5+b30hNntnYHJAMSEoZmZsfV9WRS9jQikrNDJzfmN5UitVNSo3LiomXj1yPGw8bGY4TEIxPEx5TmxrPzwxP1A/MFdkd0crZGNIPT1RbENNUE9pTjd6UkpN''@;'; put 'put ''NmRgNHwvckROVzFofEBvLFh4QGk1cnBUNWc4SWY2aXlkJXc9TjxUKzRIclcyZV5AaVQ8QzUlKylTaHQkanY9fE96TUxac2lMWjoyOzNyTDcuNVNjW2wpLGYyX0guTjxvT0N7WVVCXV5hZkhrKGNLWHA0P3wjQS9qOCI0fDImbn03e2NwUzZgenchb0cqTXEkOjdJayhXM0hjbi9RT1diX31jOFtE''@;'; put 'put ''cnpfXjh9djFRODxOd2p6czlvayl6cC85QnJYKndEbjwiXlciOGJvUSt3QU5eYDpbdEwpeyxDeFZEOW1WYy4sLkdySWdYc3FpKCFRWi98USJtMjk5a1ZlUSRAS3NLVCNxLkYmSm0wfDJtOSVyQCg4NlBpWjB2akErKnomPHMuU0ldWnY4YXpVP3NTTSNLUStFZW9iXVImc1U1XUNlJGIhO3MuVVZ7''@;'; put 'put ''eS9uODpgcTh8VUhHZnc7YGJ0Pm5GNksuWT4iPHNlK1hbIyF0cGcleyg2TUVCTllbUShEclZQRzpJd0dwN1Q5SEdjSUR3VlgqNTkqWHouSTdZTCo3blFEZWl6KEtTa0FZSDJSIikkSTdGYj9XV0tDWT9eUXN3fnYrd1hCNHdsTCNDWmk/TTYrLk9DekYwUywseUpJWmpBd1d2UnY8W2NFeHthSTc1''@;'; put 'put ''eV9wT0khYnBbL0M6QCgqanVVKztXM3dUbnAmJVVfTUdqMj9DYj1eTjU+bDtoQCFyc3I3OFF6VXs9PU16VXtGXiwxRD4+RkooWzdGJiNdcT94a2lXWU03XV4qbzxNVEVedExaLHMyW0VPOD9iTyU0PTFROmlMKWU8NjRNNlNQQ21+NCJrNTlQISguVEM6dDt7bn5oJENlSTFvPSo4eHMwa0dLdiZa''@;'; put 'put ''amxOeSVkU0V5Ul45SWVhWGJBITcmUEtgaHxnYUVHUSU2WXxIPShTaix6KUpecFtkQ0pMOWxXYltlMDRlLHYrcU1+alAkJVV+UEI5YjAiRDImJkx0dGB6NkU9M21oQj1QezxlXU5qekckSHdXTz1CVUtQR2svaUMkeS80Nko4X3xYa1gmNVBEYyZtRz95YXhELF8kdXUlKllJY2xdaClJaV1dJnc7''@;'; put 'put ''bEU6ND9QLkJVW10mK097cWVNNVJGTk1eS1lpWS4lPWxrUyRDVTskLkI1XWlARjhTaFA7JnZ7Lkk3WVc8TSo3bnIhU0QlL3ttcy5daThCM1RkaFh8QzxBKiRJX2kleSEjOmsie24+KiV+dlc8LHc7KmpCS2EuJWxMciElQzgve21ANXpwSD9GaXJFdVNdc1hKZW5EdnRRL0pzJGI1TnN7SE1eQWM2''@;'; put 'put ''JlZ4WXRMeUNGRHBXL01FNz0pMT8hWnUxJEokSzxRSV5GPCY7eWtCYFUkIkxffWl3Iyk7Zj08SFA8OTYiYExqKVc9YFR6a0B8aHA+OERqXWZkPGNWPklVJGZsKFQ+NjN5Pmx7e2ZhJSE9QnFmODBGUkI3djdnWTJ9Tz9xSTpGRkxaTlNXeTNUQmd8NTJqRFo9T3ApIz9BK1l8UlAlOXRlRXMwVD87''@;'; put 'put ''UjdEJUI2fmdtb3d6aWZeOik9aiR2MFgyKzVEV0hJTWIkXypgezFpdzJIR3I2PGxoPT1IYS9uV2tdNzElL25PU0FNSktTKjddRnFdbFhbIXJPUS9SdTVBL11NND9pV0hJTVU4XTtbNEg7PSM1fDIjZCJrb1M2YFksTS53a3Y4I0FkN3kzMUNvOFRzc2hhYGFTOWZ3Rm0rN3BldFBHaHhsaD09dGVl''@;'; put 'put ''KDxoTWYsLmVCMypBPi5ERSgxJkxlZDpod2xLRCVdLzBmRS98XVImdV5KRHg7RkIkSjxwUldWTEhRailmV2RwWH14UVFNPSRaYXN+SXRWem49I112MHwyYXNDL0BlKC50dHMhLnpObC9LMCpYZURmW2U5XipgZCVBJDI5TEVgLmFuPj4wOEBqImVFXlBCejI3JH1gTVNqRTJvVW5ObEdzMzlXMjpx''@;'; put 'put ''cVs/fGBsek5UaDw0O2FHVnF7bHN6ZntyPHp7SnZAIWUubkRaPU9OU2koKmUoRzQ5OWciM01aKEdAVk5wfi9mcjlXNFp5XiEiWUc5KVlGNWQ0RVlLWDdWSiJzZStRdWdZYnQzaD8kdil2UitYNUdVMCk+VTdiZF0oNWo+O1pifFUjb2IkIiMzNU5iUzskdWoyL0REfGZeWzhjfFUyPGVVaDp6eis9''@;'; put 'put ''RCVwMT4pSkhWcDp1b007PzdhNlksQD55b25lQzNdK3woeX1NJD5xQ1FkWyZgOmkydDk4Oz1BQGElNTFQRTppfW4iMGdObFlodU05O1d4OyIxOjdrfmg5Xl8kZVEpSzo4KmwofWswUy88Xk1ePlVJX0lsMWpefS9eTSFFeXJGJDNOIltEM3JhcyZ5O3p+ZF4zZGsoO3JJJGl8JnY3Z25KXWVGQTVW''@;'; put 'put ''Ikp0OiFPNURYMDUsOHtgKWhEQkVGaT5qSShESSwrMD56TkpBcUJFLkFmSytMKkhDfTZKV3A+YSZDW3F5WityPlhRWCR1Sz1DbSwlMEVUVjteREptVX1BZ2RAX29xPkhEP1tFXWpDN0gyRiUvL0oiVS9taGteP3Q5PFY1KkdKaiVQUVVGczMoQEl5JXFRSWBuVltRPH1JP1tYK25QWnYrJFNpaG99''@;'; put 'put ''R35UR1ZgVWN9S2V9JXJhOCY2aX48fi9vfSlTfmdAKDI8T2xeJnIsRH5VTGhQVmVaLmpBMTVqbk9JeGhPbnw7Ul4jX21fTnEwdDB8cjlyMjowc2x+OnpeVzp+UERTaFNNWyFXSy5CLmNaYWtneXIuQkJQLi4zOiNOY0BdUHxaIVZ1anJBZzp7cn5BMFltcl5tYEZDPU5Wb3gsZSVoIXxRMG1pQ35W''@;'; put 'put ''aDxxdiU2K3UlbXl5QnJFK181SDJxZD8ocVhbPSRRfHEsKSwlKHRAIyE/Zl5mKmB7Pz9GQiNffGNrQlFubF5ULkVdaUIralc9PE9yO3tnU15PJG57SzlNciFgUWpYW2AyJlg2JEwsKGs9Yyk1cVg6U2YkM0RyJDwwZUhJPDxLaHdXcjFwSGZDJFtaTntDPHpOOz80RU5uLnpMS0w4MC5TPmxUXSsu''@;'; put 'put ''Mz9BaGkhM2BOam5SMkpIR3RvL0I1blZsbkQkQ2EmM0RDNl5aLjl2TFk+OS5tS1RALDFDKGwvMWppX0AmITVacW9pPGl8Xks4cFhTK3p3dnc9VG15c3V9NVpPfXVVLC4mYDZ3N35IXldNbUhhcG8mMDhhblFNYz5iSWJ7Jm5YIUp5PVY/fTlnTF8vd3Brb0ZhS3lxRmhqQWZ1XntldDgiQjZ5Rmo+''@;'; put 'put ''bGhAU3Qqd006T095QiM6Jm9NRCFjQjsmJHdJKSNkNXgsUStDL35VTGNjZ2hTInt8d3BBYll3bTJueXhxM14+cGVYUmE4T2t2MDRzMXRtKUUmdkAmVHddTEI+I0VOWl1FR0ZhVHtkfDpVP1ptYyVmQEc/fGpeJG9XZSl+MD8uXmN1NF5WIkBuSzZLbUQ4WChyIm43ZTFtR1A3MztTXzZ7cj0lIltX''@;'; put 'put ''WDhNZmZ6ay4rfUhjeXh7SmtqMk4+KzpSUix8OldQKm00UzMkSSttZV8oKjQrJnpRKV9pNUN8JXZgK1cyS2phMWl7QE9oNDFpcWJJYzM8PFFXTyR4W3N5ME1GbDlFYkxQRC47QyxeaUxjbkgzZylMR10vfmBFZ2wjKzc9RDAjPEtMUSRxciEqL094fGNGJXUmZD0xOmQyPDZ0P3xmK3R1KUBAWE05''@;'; put 'put ''cGQ4K1B9XmNfUFtNT3Y3cCZGaCtNNHg2VS9hLldyPz9yQSUhJXNOMShgN0MhPD4lbnFSNDV0fU5vS2tCU3BNQFtPaitWOl18JmlPXnp0WCRUdnw1e3B5RHZ7dnBgOkwrYDsoSi9reyN0U3Z5Z2h6PDZWUmUiLytLcEdBcVdfNC9aPC9TSWBbIix1KzJCRS92ODFVdVZoblopRjUzQGM7aURRQzk7''@;'; put 'put ''cl1qOihOLD5hcDVHIXpuVmE5SipKODkhfGFUMU0sYEJQYzxgX3RgOWo4T3pRUjgzOVBqP1tLVTo1NlVqYWBTfSF2cGZdc2BnXXlWI3csY3hQO2NZNGloeHwsPWhlcCwibEo5QzgiUzs7RGQmI3VISUs6WGl3bTJfRm9SfD9mTSNkQzxnbU5qbmpkaCJZZEA8ZCJTZHoyLFBTbkJdbkgkOjx0aUw8''@;'; put 'put ''OkJwWygoKlo/IzxjaEhGU1UoalYpXl4sKUFgZ1toMjlCbUljOHowQXRxXjVSQUFtQEUhVno7Z3J8Xk8jKV4iKWReVykhJTZKMl5iJHU9L1VfVT1MZi5EZjAwQCo+dHFrdCs4cHJ1MiMiOTs7SkJwMjZaW1B1Mz83Uz0ubS8qbEJwMl50T3RQNDlXeSZjWFhlWDA1LyVEOXhtO0RUejt5JDI5KSNJ''@;'; put 'put ''ek15W3lbNTthTk90Kj55MXB0MjlPbHRZZjZIeV1NOC85VG10RH4jdltIPHNoIWJ8WHJSMElHIXFAPTdGTTlNUGx+NHdVQ21qPkp3JXM7QDgkPFRNODJuVVtsPUxdfDtAe3RUU21eaEVsckpwd2xsUWZaT3RtR1M2YGEuNXh6VkV3OmsrSWgpTmdGUjAyfTdebV1UMXcrJUBCa1ckLjFlLlgsVG05''@;'; put 'put ''P1VHZypdN24xcytzW0VPYUhjZWQ1NVVaXnIibjA2QHB9LjgiQG00TDtCPE4iVXFWX0xnekR5VzBUKjRNciFwT0N7Jn1wOUdtVWNEXTYvX2BwW2ZBL203Lyh9ayZKLFJJY3VhSiRBdHRgW1l9MC5+aDF4MGt8azN8Tjc8S19YeUhqWTNdMDNMWWt1MTVFQjxXdkhiPWUufWlWJDRUNltFJHpFfTRR''@;'; put 'put ''LDhJRyFubXcrMilBNEs+dk4wMFFGUiE+X1s5TjhxS01mQlUsN0BsdkA5dDI9SSwmLlhtUWZmczRJTUZNVFQpcEg4bG1BLChwVUo8ci99N1ZKZWduPDFKUHV9ZnF5WTBbaXtPL3U1Y3JrTkc2LFNpUDBFZ2Rjc1EvenZgLigmNCxaKE4iLnlFIyxBOkpKXXZ4VDNiMTk0cnlsIXVsUlZlNHheUjNw''@;'; put 'put ''bFNuU194OkRldWFrVDJtUEhJdHN3SzhfVkM9YnVeSCt+PzV4VVQ2eHY1SV8+VGM1ejlHLzNvWVN6ZUhsKUV9P31kUmJQM18mLGdSPi4xaW8sVC8ibC5kPVpiejguRjIjNWFrYjw6UWc+WGxZdCFCOz5JLiVfOjU/emJfXXY4KWtAfHFxfGdYSkI8Jj9GWSZ8Jj97YGlUPlZNY20zd3EhblopaUtY''@;'; put 'put ''a0dLXV5aPDpFIjJqd1hHanUvYyRoWjMxJlQyfl03JE4+eSN9JVMxR3xYS3ZRKEViYkNpdm8rU3ZvKXcjREokZXIjeXwyeF0rVlF4eUNjWTJLIUJwUEZ8WDVdV2pASWc1a0VRQ3teaCE4dipMR0tOezJnQFJwLjdVNHpGbSQ7amVCcjsjUGM4fDtBWDBqQmRZOVkiaXVLNkJwWmx8S1VGIXxbJldh''@;'; put 'put ''RylATC93aktYOkc4IV5GTktuVGAybGVyXT1rQFQ2SV92K1t8R2BlYFpHUDVXMnlNKlhkWS93bCM8amt3eWROfFZjM2tAWlhfOyhMR095WDJxIylOTG1NX35bImxlQnleaj5DeF1QWiRKcVs2bmNDY1JkUSUvOi5tR2NSQyUjR0V3TWozblYiNC45QTNLbVRdI1ZddHFMRV5kSmZdL28maUlPJnt2''@;'; put 'put ''REZRWzFpWEN1dFJvSHpWbGJtVixkWHkiYVs7VCF1eUoubDBLLFdlck5PZ214eCFLYkUlbFlHSVs9KTM8Yzo5PU5tUiMqRjZLSjJtKVZRPUtLcjd9eSNhKVghOi4rfWV4Ny4wfjlta1BUYixZaDcqdCxaajZWKk07Jm5HOiJYfGpaaFowXz50SERKUWdvTnVJSkV7PWZUYn1xI3VadmcjS1VKOE5m''@;'; put 'put ''YixRQmxpR05OPns+ckIoL145Li9zUjIhYlZAWXY0QWVgS2AqX08kI1hAMj9hYSgkTGFORVVuNFA1TSJxJiN0Sjw6TDRWLF1IdGl3RnpUU21reT4vRi5WVns0NFQwd0pTKClSbVtManU5YHZ7cSRNdSx1WW9VTGI2eCwwVyMvImpHcVBaL1NgV2pbS3k7U3ttTGhkXXB8IXM6a2I1YnBNb2swKixB''@;'; put 'put ''JDwxdHkrUE1hImtldTZqVkthdGlHX2h7ZntbeFYoMFF0RERMNlgyfCt+ZUN6dj9hRUJaNUBPLGZLOEpZZEk6a1pjaU9CVkN4ZX4wK3U9WjdLXW1dVCpRdVRNcUFPeiYqSFZdbjxgb1VdS0pWd3Y+UXNRUHZQKTJNQ0gqOSR1Ty5fK2NuWjVaUG5LI0QpREJXZ1skXmNUJnw5JFlDbmMmNTlabzVC''@;'; put 'put ''ZX1BbSoyJDxIQ2khWTVyVFcjWTV2THV6eFloRX5sQ3tmMlB4KnJteSlyWk9rYEhlT0V7WFYyUFE9RCRiW2tYSnpNfC90cDt0bH0/RlowZSlIKj9WW1BdTCJBLiVZLHFLQnV2JilrTklFe11rVjtDZkxxSEIubWNSYVlFYXYjW3hXbG9CRGo9P0pecHxwZCtOeThaRkxsPyhXUFspTT5qLG9Lello''@;'; put 'put ''L3pUYDlRRyw4JiRDKSRpImAmSlRrLFZBRVU1anl7Qj8rRio9XmJQbzoiaF5SYDk2YFVnVGIwWmpOaS9nV3JOLyU3SCs2fik8PDdpMk40YS5fZ1gjT2hFWzkwN09KbnFzViVKc2A7I2FHOW9OIUxET1AiZkN6Z0NsXTM9RnYsJElKJClOe1kkLF4pXUEkJiklKSxVezlFczE2UDpSIVYlKyZqYVA4''@;'; put 'put ''dyxudWkwOyFPNFk7I0o5TUtZMF9YJnl5YVguMkxvTnhCZD4lfFNLU21HJV9mb2IsYWpBYE4kYWdVPCI3YzldMVZuYiRiZSNHZiROZ285bSx1PWosIj0oelJJfSFhOk5sWWZDWUxFO1MzKytdTHZVJWJqc29oTTtJb2ptKSxgbnArai9rYl82c08oR0wvbWNxNkxbbFpdSSx9RSpGdzkhTkUoQjo5''@;'; put 'put ''cCR1eEpBPGQsb2BCbTlAJXxPdG1oJjB9QiVbKDklYCRVVSNsa3J0b34vO0wwY2w+Nn5ualNucHNqNV98JkJLfjkvNkNqQEQ6SzZiJUtVNilwNmJfcDZiYTNRMkNfZ09zRGVxcCgyLChqNTZkJHR6bXhLRWcoI19PMW14YmoqTFFdeHZAJXQ/dFQzLEJBQUFBQTgwL1JQdXdYX0lZbyw1Wz1xY1Fh''@;'; put 'put ''USIqITdgcTNzVFByTSg3YlM/UHJsIWk/MkEhP19sd3Z7eVU5TTxRJkAyNyEuWkJFWD1dalRzMjJ6cEwhVjpCdyZeLEV8I3Y5OmBxbykxXkA9KEQ/TWNJdHR6b1B6MS5KVlRETUg8Z3xHNlRuJCl2Q21LI3NQU15mO1p+eEIhaCpdMG8salhqR3RwfkQ7NE1kdG93VVk8fTMzP3Z2JSsoLCw+QWxd''@;'; put 'put ''Z0l0UGJwakE/QCM/d3MiT1tMdjxTLEshfC45ezpKPiomTyx0T15rUSV9OTckZlgpLlQ1ZmBXSjE0O29KRkQ4WDIuU2A/aCFqeiMmezFgVDRvV0c5fCtSNkIrRzZ1UCpyZnsucU0wPkJsOE1aJSVLbDYlR0Q8ckcmKzY8ZWxfMHdGRC9MdzIrYixMcmxEbVhqc1EpfCZgY2M1UV8xNyJTUmFydSIm''@;'; put 'put ''fEldJUx5ZjNWTk9YRTZFQFIwOltaRUx6SCE8emgjZWV+OV9iPnVVIyZyX3BZcnQzT342PHMxbj5sMjQ+VyhESEVASkVCTDpxTnV4L19lS0UpfFlDU2A+MHE1QV5TMTUpKEJVK244QjwmeilySmN2VlE6eXJrYm5WNmJnNXxRbiwzJn10RlFPW1R8KlVdcXAybG1UPjJmUjl+bEprc2kiUUFtTz0r''@;'; put 'put ''cW1PemZROCZwMWp9VE95TSM/KDcqR0VjW312I1N9MSR4djVSNXR8TT0/eU9beylARkAlMUF8TzksS1AyYyp9cj4ia3ZwW3k9MFl0YHorZ2lxV0VxQilsZTF2Inw0e1Y2KGRtcX41KGI8cCZNfCskdTtUfDEzRjRURVRmc2BFejpVK2wpcFUjKzF9cXJaPSpvYCIkWzxsMj1OaFs9VXtZJEV3Iz5b''@;'; put 'put ''OS80L094In1uZChVJGwpU14qez8oUU5HR3l2W1hpJXQyQVFCbjNwUj1RXjNrfSxSaj5vWSNhQkBnNm5wTWRLU0t9T0Fmdk9BX1cpYCpWaCsibH01JlA0cG9ge1VQYyZOWklxb2M8NnpTUnxzY31CZkYkKS9iQi9PSU5gJj46YXUudTR7QCVpKUNQUkdvbWNAXWgzUWpRXX0icWp1VSg3SWtdLzlk''@;'; put 'put ''X1B2SyE/NS4pT1tSIWNlUUszSVR9fjlPbyQhN35lPSp6WzdYMmIkOjJ3biYsK2Y+ITBhWU45TUNdRyo2OW4vVEt0U3NGTzgjbGo3V0pPeVlmIThZIjpyMkRyen1IJU5CbnIxRm4kYG04fjp5Yjt0PnVzKTszPSp9UTdEd3x9UUFFNytJRyRnfkJ3fGhXVlNoP1pjPG9ZMC9iSXtBQz4wbU9HKyUq''@;'; put 'put ''TT44Nmp6JjxWbkRQdHEzZEx5aTVBI05KWkIlTjcrWnpnSHhGcTl6KF1Mb09XQzhZTWs/OjtrWkRHZSVXWnhvJmUmVSklfFViZW5zOSwzNUJkeW5wX05kc0lic0phYjk3YCRnI0huWSR3NlNNPWt4cjpPJmo0UCNraSFoI2Z7XVAyT3AwJGM2N2M3PW99RU5IRVptYSx6U041QF91ODBnT2U+Sk4z''@;'; put 'put ''Lz00dixpI2A0Nng+eDRROXhBMl0sNjg6WStTI2BnUj5qa1RfNWFjSlV+KDB7aVhLeS43aHdZYmcoPXdTOEhPTDMwPSRYWDwqdEQ2anhgX108YHcyRzxQbXJpUiMqXyUhST1pU1cjNWEkJEkmPypMIVk6TjhAVy8hJjlnVEpdKHVHVHRBZ0NRfTxQSDdbPVAoMFUyMSlQdmZWRl5Pdlp9UShkIXde''@;'; put 'put ''O0gxOEQ2fF9mYFpYZ1o7TThremgkLlVgUzExeEUrOEQjcTJjJVRRYWU+SzA8WnMsPk9zXnFZJjouZTVyS3IyTSQuQCVPQVJRbGJ6MXk9Olk7UyhqQkpMNXQmYlBuSmdQW2hzPzp4PGs/MDcke2B6XT1xNisoNGN7ZC5fd2I7bUNeaGdvW3ksXiRvQGhFPTJIWjVVNW88MFFNdWkrVkVucy48UWEz''@;'; put 'put ''SmpENytSbWRecWJ0KiRROk04a1pRPTBhZnk6bXFbVk1XSV9xNDFVKVVCVCZFdnE1LGlzbng6THxYWEZwUVM8RGQzRExtOVs/Pj5ge1RtJX5qSyFQLyY9RVVoRn50JEwxV2Bxelp0THVEflhvTEllWXd3a2JPcX1yNGokQi4/a0cwIVp6V2BrRytkZXpba0xmI1Y3TnU1dlBkbHJBd3RGPS90Xm0p''@;'; put 'put ''PkxjIzp2Syo+TGJTVHQ6QEJMT0IiTiVOe1s+NCtOdkMwYmdHNld8ZWc2M249UC5gWiE3NEBBOXE5bGNrWGUpXl0mVmRkSjdJMzw/djxQWnVdNEBQQDNSd3FoT0VOc2tSKylSUCtVQmFMNHwqWDJ7cio+ZWU2fnJbTXJfUkVxWH1yNXJ8ayZAcz4lSixAcW94biMrYC92eXArO1lReCZXKSwlWmkk''@;'; put 'put ''Vm0oTm5JXyN8MGAlZjBmMn1LWzN1a1RmZWdoQnVVJjwhIm0oXnxxYyo3SG9ZN1IuezNnYFMxLGt6OTltWzxzK3U7I3hDYmg2bEdLMGp2aVpXKFUwaG8qITZAWyYyZj1+NmhPWEtydzNPcUpjfnNrZjgsKT5GJS5uPldbPX5LMH5zIzVadHJdfmhXcnJ7PkVWRz1UOm1Mcl1tYnJ7YDUmfmY+eGdv''@;'; put 'put ''NT1wPTIleGd0XlBwNnZVfHh7cF96OD07cVddPmliKE5rP0osIk0jQDFCJSJyUG9JXlFrVT9zd3Z4SWNTLEQwWkR1anh+ZilqMTFmVHN3bkxuVS4ib3p3OC9WYDV1Qj1ZTFVnQUokKW4kVDxjT1NtTEREJSgyV2xBYm1RRFl3SHA8UGdeRDMmNDI6ZSsreWRTYm12R3dFUyUxRVJCZSlgVDNCcSJe''@;'; put 'put ''KCNrL0wyPHo5WmlFSHxPcmkvbF9xQ3k2MWtBKldMVVkpK1VyQmI3d1dsPUZISERMdFI/W29NUyNQYVlxWjVyUER+Qms1Tk80UjEoZTREUVRCbDQ/YjJHNjRESGw1Nlc8dmd3RXB1WWMvfHEsYiQobSUpMFk/az0kUSlNKHIqQjNiYWNRUXAlKXdRdEo3c2NWQis8MWthXUJaW3YvYlFBM2klcis/''@;'; put 'put ''Mk4+KTZ5Q2EjWExVVnRkYyRKfFdPYE03eHdLU3haP0Y6b0FDJURmRHE2VC9XSlNNQzIrVz1oOVo1NUZLfmhWcVAyb2cwb1ZIPHN8RCFXYi93YiNXd00/MV9BQ2Z3dlE/OiRPQ29jZGtIS0FDZGl+ajwpZEx5SUA0dC4oVGNrdW50TXx2IytJdVIhbCk7VH1EeShxX21VQExUTktBIkxudC4kYWxM''@;'; put 'put ''IXNJY3dGWExVanowTj4rOFBwQjQhQEFZIUhMVlhMVVpgX11OdGlOayl4bntlWUxTKSV9a1V1WDNwXUNjQHxYP0dMZTp5JldvSSgzL1dMVW0iJFlhU1l3OFdgdlNBQnYjeVRAbV1Za0MqVFhkeGpIKXZ5IkFtJkMqI2ciV29oajZbQEE3Y2xOPyJCPHU1bHRKIjQuRkQlbV48aWcrR0dpckIkZzFb''@;'; put 'put ''OE1PSi9Oa1orPDRMUHpnL1VAb0VtRGZCJihMVTNiTDVnRWshVndGKkFnd0UoQTdaPjc0NEZLbVJvbnpqaXZ1LzljK3Mhd2lLN0RtKntkbFVBQmd8NUx1R0BXKlc9byp6JDBTNEVOZkRPdFNvTi8jWypOOz5lWn56RTBQajQuNm19UVlxdTI5eTQuIzE6b1lJSlg1bjpYI1lSNlZMWCIvPlZEVGhL''@;'; put 'put ''Q2VVeUFPWEB2Uk5CTiRbZU83PkN6JDVBVStCUEJAImEiOm87UjBEXkwwRDZhOVs6bTtFb1k7M2dHQWNOd2AkPFtTeHtZYilRYUFOclFDbW9kZVdbJWxDdFp+Pz5rX2wmTyU5W209bFReVSUxQXJ1entZdHBpW2dmTzt6LlV8TitwZ3VtRGJUT0JoSD1GcGk/Lnw+OyZ+ZX10aiYzdUQsT1hSWCtL''@;'; put 'put ''TU5DVmFPM2NhbncwPiRNKXJ0YkkvRWx3U15YaFhjUDFGRD1Mb1NBSURYM3R1dCkwQ08vP3xqMz1qPVAvSS4zdzohbD03Wy85Y1J6Ujo9YDFfQFphSmt+aEg2cD1kPFpYeDEvLyM5I0NBX05Zb2gpUnloPW18OVIsL19NWVd5ZUtBZjBvfFYqMHp1a3wwTWJDNix0eEZRdUhDXlVGYENmYGtkMDBU''@;'; put 'put ''PnNpTXNiem4pfG15bjt0fGgzQDFuPHQ9fX49W196Z3RmfFhhMC5DYFVFYXUveXx9TF5ofGFhZVNoKHJGYUV6RHQ0YVRDJjFkem5Ye1hmMHJoM3hfSUBTWyo+V28oQHJ6YF1HQEUsPHBRWFF8P0gzKGQxQHhaZGZdbHk6bFJTZHs0eXZIV0E3fm1IXj9yWzFuWj8qPy9vWl9tWD4uNFlhY2k+P2h1''@;'; put 'put ''MFchUmhbUU5FaVtJYmtAaHdrW09VSDIhfFV3bHVeYD1YUjVvODtCPTlnfGhoLkY7Wj0lVShIYmdtTzUsQ1g9JStrKVkqMHB1Ik5bKlRnK2swRTJnPCZOMEdNZnVfN0Q8ezNaOyx4aDhhK2BxdmFEI05VTkk+dlt2KWNiOzh3P1QheFovKGpmbTAqRyJoMEZpVm1OYHBSWER3IUBaMkw/KkJmQ1ZS''@;'; put 'put ''YUZnRCFhSWsmbypPVU8xfG1LVDsrIitNRGtkWzEwZ1V5UV8wMFQwc2kyTH45ZDFCdW1Wfj40WlNpfk07Tyx1LHlWYmkzPlMoKX5gI2N3K0IjeVMqUiV5cjlBRXducjlnSEVHPX1HVWpSI1k2eFEsQk1lMjdyWCtGVzhYM1VgMyxRV0RLSSt3VTpxWVdEezBKWjl1T3VoZiNCa2ppXTBVPFolcTAw''@;'; put 'put ''OFdPIXJ5RmsiO3E6KF83NUZUM1loPmBzUVk8JTYvcCxZTkRvMGBMbTU5OCpWPnJkL3hQLyZ9emBrS0tuYENHM1I1SE5YfFZuVHwhYUh0JnxHdCVxenA6UT57Qyp4Y1djeFZCWkgobUwuckszRnEofUxhVi8hM1YvOTp2dXtGb2s5TDVyfClxT0AoMSxDRDJnb0NnRDYxdGlvQ1doTVcjKyFzPikm''@;'; put 'put ''aXVbaWZbI24rYCgzWGAvNTJuOGFrQGd8QFcmRDRHSmhbUzt3RVIjKmB6aW5vamtZJF1nWyNfaXtMS095WWZmSXxlR0hHUiFfTVQ0dy44dDVSR0t3XURZPSNXNjdwIylhNlNwdHJDNkxfS3dPaXxVJityVnF2VGE8P0U6Y2tfQiV1NE1kSzVObmo8djoraUxOU2U+MHdZQTorOUskanVbWy4zSUpZ''@;'; put 'put ''RFRDWU86ezBMbjUxe0MoYFpjNTF7Q2t1YUBvPEEvM1hKcF1FQUdxWylbRDt6NCluXl1McWVlcn5vVEx7W3Y0dy44KkJnRCtbRnI+SUo3JHBzLz8hS1hALy87QiZPSmlRN1hlbzQ1NXYuQEhYZlhyYktYNSFzU2hgSDFOe1loc34vXn1vTXgvbWhiTm85YiF8b1Q3WHk+b1A6WGlvKUN9dlhdfCl8''@;'; put 'put ''WEZwZFNXS1VIZ2oiJXU9eEBSTkkxQk9ubCR6WCEkMlV1IilYRi84Mz05TC5EV2NidispVV01UkdLW2ZhTTlQYlJOdUVidXVrYipHTj9UPWQ+VTNKX0d3bWFwUH1uRFlnezBhLl8jcj9vMmc4MilNSWhqLG9DbXAhMC9PJCt0LHpHTlMwKVckcXIzTjRRLkQqZ3JpfkxmZnRGJXpNP0x7alo4K3dF''@;'; put 'put ''dHJnYFpVQ15VYV13VipbcipaVj0kTVNiKEJZMm1PR1pqZDxNaFkrd0c6TU1fYENONV9lZmQxVHYrKSRHMS4pVVdVUVprMkxQTVAmR1tZO1s7R2ErOjRSL3Npa3cyUGZOOjRDdC58R1VxKjBhLl8jTFc7bTJJNCgsfDFFJG1kQCVTTTphKnR2I2lMXX4/WDxHKm5ZVUpPJiUxaT93RkRhUGhMNVIy''@;'; put 'put ''YjtDXyxiTy9GRHF5RkR6XW5yYTwiOThOX3dbYT1Tc0xNcGFdNy81RHc0SVc8TD9bU1RVc348QCwpQENfUlhaP2FHUXw/aiRaPCxTck5CWj0qPzEkd3JoXlY7SWIpImVoW054SUQrd0NmXShpWTlKJihTeShtY1RCUDw5Y3JKRXMkYi5zTSx8TTs6O2JlLFNFdVl0NS5gPUxQcCJ8NnxYQ115Ijpv''@;'; put 'put ''Xjk6bFJGbW03Sncjc2VlXU51dkpFUElpZ3IqJXdwPHZmaXU4YS45Qk1HVDxCaS4sPShtb2lQMGRjYXg/LjVkUFd4SnUqaFpJNHBpMEEpKHp8e1pfVnEjZTRYUi5Cd2FydVhBM35XSGUrUl40QCt0SituOVJEaT0uM3d8dmN4aztEbVl0NklLcm58Ukx6IXZ0ZGdtd30zRm1ffUlMOShbaDFRYDo8''@;'; put 'put ''dzR7OnJlYWA+Yk9pfDhXbSpPL3M8fmU9cmJeQV5kLloqOTNDZkNsemQwZyQ6RDp0Knx5Rlg4YzcxPTh0RD9GcVssVyp4TmcwVy5MVH01Q0RnRzY7MEFmI1B8aDpbO3VZcEhmZmpFOlhtLilDPHVOe2YpdkQrYWklVTBJcitBbn5XaUkiKX43c11+P1UwelJNKUFXeHBnRXEland7OnwhJk9IQnlQ''@;'; put 'put ''aj9pdW40VzUwV2Jpajk+cmpKZk95UHdpPnhCdlJUTGlsbyFRMXhRMEY2ViFUJVUlc1FIUWBHViM0fS9CJCkwTVM2KSssWnAjUGFuWV1IfDc1Slp7Tz1BeTtAOjF9cUoyd0kvVE0sQyMuQkR9MyYxQTsjUFclbDhwOF49KiMqRHc8byo9JDppP01BQV5lVkFNL0pzJD4qV2VvPEtKdG5UR3FeT3VN''@;'; put 'put ''Kl1XaEw3RjB1MVFsLEUuJGlpUjVRaSxhTSJrXj1udHpOIyVTNkFGN1g6el9BbVU4U0pmS1NHdjhqSHd3d3tKYnZnQ3UxeDF4MUU8UXYqbk5PeURMeCtCIzBtVnB4dnUrQkJLfENWMnRSTkhNIitAdDR+bCsrVWpLRnE5dGp0a19WMjdrd2c1fUhXTyJBVDUia0JsNTFkNCI1Si5SOT1ieXE1cCky''@;'; put 'put ''S0NjLCtXXW8reS4sNF9WRSx4fXR1U3ZMKTExZEpqelhbYGhTQGhVP0U6V3laYjtzcGA0M1sqVmkka0RYXm89dFBuRkpOWD1MYTd2dStYeipqWHlQKmVvNkVAfUU6XmZFImUlLkQsJkxGQXt2NT86KDM6UTxGZjoxeDdTR0JlL0VyPn0pUixmUixVJXZKU0pmLjxKZTkzT1RVZipGaWEmMzNSamJA''@;'; put 'put ''YlBnR3JUVGV7RzlXfDRlY0lbXTRyYWgpbHleUHlqaVVPXlJLUnk8OkZiLkUxNytPay4iekIlY1I/KDVHJHcsKDVpNXtQfDt6XmE0dGBuM21MXj9hTSo7PlpLYlA4Tmx6U3UyY3pbPl5xZjhHTGA+M2N4Q3paIiVLLj1MWENPcEU5JFBuREZUMCF8OkgkNEdVOGQpfXFXPzpEfC8yaDMmdDh0ZFUp''@;'; put 'put ''YSQrQzJLVm5oc3l+cmFkRCNGYy8rfURrVGtKK1ZdOkI0az1lNDB6UGNjMU1JZTF0KDskcHVlLERnUFljekBAaFU1ZXpMRU1Od3RUKEdIUX0rM3FRM2QhQl1Jamd3fE57JkdsNkVAfkcub3xkbkw1OnFxSH5UKEJSOF5WajkrXmkqVzpaOXUldHojTWdBaCV6X05uLkFMS2xKQj1pKXIhezZtI3sj''@;'; put 'put ''IypJIVg/aUlmakJiRjFWVDZvO1FzSjJ0eGo3cnUpMS5GNFldaU1+eGdla207T2MyJFVHWUQmdUkqJS9OMl5PY1toJUpnZ1dVK1VXcy8uV1ghb0JMXVBuWVRBJl5qJCpuL1FyI3hCc0ljbnRBbzE+PiRUYHpReW1PNz1fIWl8T3pPM0hYJktPcU9JdC9ERktXUz9MeHprWmxNYiw5aU5SSTwpO3dQ''@;'; put 'put ''PFpbJCkhQHBQbjYqIiVmXUQqeH0wYD9LKCZaflZkX29EeUlLWytebCUkMS43Mzc8RiZ0bWkscWhHfDV0PDc1Q0d3b3B+bDhqQE1paFIwKj1IQ1Ilc0pDWl1Wdz9XfGQsRj41ckNWUWg0dE0oVCp6JlJgZDhYPVBzfTNYMjdXL24rXThWSS8mP0g2NlpGcis8akcrMyR7azlbJCxNUiU9S1Vkcjkk''@;'; put 'put ''O3U+WCYkTDEwbElhdGp4WXUzMytwVCxUcWh3c0p1KzFIO0slImMiVl5PIn5RRTJBXnpCZy9kY3ZPI0wzZzQvZExxWU5tZjUqJSUrflgmQEVSeSNCSlt2Z1M+eSJYeDhZS2o3TzEqbnhCPUwidnFKXUk+NE86d2cwdzhTRyR6OWkvKzRNR0FsQjZUUml0VSwpeDQhUmd9L1g7NGRfYl42TmJmclE4''@;'; put 'put ''QnJzaUhlRl01S3V4R3pebzx3MnRkMHVldHB7NCg4QnIpN15pIm4sVFE3UCFBa2V7QlQvWCl4LEM5SWJveHhhdCZbZ1BpYXE1cFZVK0srdWNIJXxyI0Y+fF4uRmo/KE89UyUiP0NvKGJ1cFJrQzRORTpedlR2Uld0UjAldkM1cSE1NDteUkBYTl1DdnFkVWJhd3wkSTlaQ2U5RlcsZGZ4cncwUCFB''@;'; put 'put ''dSp3X3pdbyg0aUddaCFWOztESzk0fEhqT347RDNORiIzT1A2IWJ1LDpBVHBoQ2Y3YXYifmwkWUkrWEBScDFgZyxHJFNCOEBJbkF3QU5DVEJacmFNLkUpSzBrXVE0dHBSMz4mZkdFbCVEelJII2JJOEBXcCFLfGoma3ZZQlsxcDBmZGp3YE1sQFpXU0wwIUdOU05OIXVMbURqKWw1MCN3aUMxOF9x''@;'; put 'put ''ezR0WXUlL25scHQ+bFpIdzR1cC9NLnk9RVt9b1A6bHdLcnxGTyR9JWg8O1AwQ2oyQzIsWHJYT1M2eklFW2I4aiRsND44OmdsdT17W3pkbSEyKnFLfGRbYXA9e1tmWnVMNXZJRTNsPk1DQiY4eGIxTmNqaU0+NnRGWkVubn1NSW4oc35lOFp7I0EhZVQyVl80ez1UZj5mMW0pe1JaM0k5ST40KWs1''@;'; put 'put ''U0YwOHRQcXBIYV4zdGNqJThqLG9Qc0ciIWFpJFZwSFs9SmBlTGwzXitgSmc+Tz04IkgxO1NgZnE5UiM2RTtyWnJUXmloaTUiMiUjYTpeYWFXYGI+VUMpN1YrMUcycVBAeDdgV0pTfSFje292alNUQ0lCTUVZZTB4fFpiYD9rRFQ6R1h3T0JhOlA6K24jRDdJNi9eKGYwajt8UWFyNEF3VXpZY0de''@;'; put 'put ''VGNKLHtHO0tASkNlez1Cb3tsYXJfcEJ8bFhvPlRzcSh8N2ZWSnt0JCRZKmNyPUldfFlxW0pfeiE1M298eClHZTdPUE1hYEFFW1pWd2Z0TVtLJlkmbkgmUntpKks+WHxsX3VJZUw4KEc+WztyQnpfMFMsemMqZm5gSWJoNXxLKXV9MCtyPmgzMmd7TmsiUCJsUThMdiVrZWtpfE94XjRuVXEocUtC''@;'; put 'put ''L2c6MWM+STx5aSJNOTY4LnwhVStXSlQkUktUTyxVbXU0bzZESSpsTTpAUVVFRkIrdS83ZlU4eV5hVkZYR2F1ZCMpVWcrSmslRi9HZis9QkhNNDYzcFt0dUt9TEI9P1MuPl8oN0o9aWI7YkQpe3RATGcocEhmUGh1OEQ3eykrODZNLzpbV1Z0SkRpQTFJZDdgSltBQFBTeX5GRXMrMHA9OkYoXmZ6''@;'; put 'put ''dVVve19Xey9ATUFESmRlSkBwajchdz9ZaElaeDZJNm5LeF4xRnVYJmtJOEBWdyNiYyFiYm97Wj48aEdyZ0UqJVErYSt4cm9zVGJdLE9eVithK0ooJjxkZkdVdUJVR0BvUUY+fUprK14+eEElUnpAT2MsJEw+bmhfeVVjSGFhTWlCOEp4dCVFT0h3WERDOF8hTnFhdUg2d1ojWEZQTWVYZS4zamxA''@;'; put 'put ''Rm9bOCQsMElHWyokKix3QiQ6YzJ9UGp7en1oKUU4P1khdGN8JjdhKUo/fWQ0NiheaHhQTWcoOTNjNDR2ODhUQzhXRXgjNEhYe2Q8P1dUYlByIUkkKT1nQWBeT3NzfUd8TTA4eVY2P05eeUNlbiRmUWJ2QERjKWFHcGxicXRSOEZqeSU9aGJ1N083JCFQPzBuQyl7YTVbKltPL3ciU18hYGdaK3xF''@;'; put 'put ''fTVabyhwRFFKMTM7UiV8NC5TPWdCXmROPkQ9cjdhZWY6OTd6TjAvRnE4UzFkTVVXZmA9TjhAeTNEQ0R3cGteKFZub04kLjZEZDh0SUNtS3FyV0RYbTJLQ0M9RzhQX1ZFUXt0IlYpXzJqelkpUl18WC9ncmNaN3lCcXZQeCNGJFgiU2BkajkxR154e11WOGVtTXlNWH5kNSNwbkshQFQlcHopdU1m''@;'; put 'put ''NUEkSiwoM0AkK24leWt5dl4oVmFgW3tIIXk/U3ZYXT9SPlkmWWEwKzpxZUxrflBnKlpPQEd6T2cqPGY3bD9PODp+YkdDVmQreEAqNCt2NTBVWiRZJFkkInUrPXNeWFdQNmM7QWYjT1hnSjNVTUNCdS82Ymt4bGldSFJmbFJLa2wkaDxtZlRdI28uZmMsZ2U7TGphOXhtMiQ/QjM8Z1lJdUxqYXhG''@;'; put 'put ''LD9iMS9TIylBZjVffmU0L2NEPXJBPG5eLmU6U35sNWFmPHsuPCtEVEU+XmhkeSlEa1d8PSRiKnBIdUdFVnpFdlgmaVZTRFVHSyt8WEdwKExyO0BPeThYPWs4X0dSN2BKbWZbZVkiNiZPKXlzTD41KDZiOi9iSkM3JklBaixhXlA6T11CU3JmaHtaVl1rI1sifmJxbUhKbzliVFZuPiEjSi4hfmxS''@;'; put 'put ''JCxoRn1xTlBhVFpjXnlTfmA/YDwreDhmNG4mTzpBIWpoSWpAWVVQMHMqK2QhamtQLC5SfFI5WUxEbWB9UHwuYVRka0E8Sk4wc2F2eDgzdiQla3pIPH1WRWdEPGZRVylzXngifDRTJXA8YFc4fHw5bk9vSDJQIlcjXjwhOyhCbnVZJEBwQypTYWo8Ylp1JjQ7NVlfTEJmRSRzPXE3OnJaMiZbO0JY''@;'; put 'put ''JEBiaXxLVXY8ckRNXUd1OExqTyJsQFoyTVAmNVkyR0IlcDghYyYiWT06Z09kTU8wRzYpVkM5JWNUSGlacUpLaERqQE0kREI6JWNUSENaZmFSY3RjJjJILEFwb0hATWFkNDBTYUlkflkmdTxuVmQhMCFraWckfCJjanZpNyxMU3B+Y0NwUlF5WWgvPXZyNzp6STZNMTtQaW9+UXswe2N0LCVPIi9d''@;'; put 'put ''WkN9XmRbNSlnWDA2T054dSZfU21aYjUoeTs1OnpZWSJRSU9lXXw1Yll+WW9TbDlBcklPKXdYdzRlNE5rRGcyW1pDcHN6YlZTZFhEMyVBXUdORnh2ND1sTXlQRDw/Q3lfU0JZK2kqWntxajlXSkhaNkxdb0lndFMjUDlIPmFIZURGSlpUJX08fGVFcT4wZlArV0krb05sWmNuQVdsTjNDI3EmZHEl''@;'; put 'put ''V0UjTGQjRTAxLyJoNVpkcXU1Mi8iaCIrUyJ1c3pOMVp9dHlOKHQzJVgyfEw8RExoPERiLDgjWXMyeF5CQVpvdU1VM1I5SCpGTjRrd3lAX290SWJwVkYxbDgsNGA/cHVlYj8vekx+XmQrWXcjPGg1InNeRWFve1hjSEcwWWkjNmhTYSlKdFB7aFl2ZVZqRUk6Z1ldNGJ6dSRFXiVrfG1HPEIxOmVP''@;'; put 'put ''K2ZSRD4sL3V7Z1NuRVFoYWA8RXU5fDlFOjtPR19BcEBFWVA1X0pocjd+KSVjNllaYVJhRTpzaUVlRiM9KGI5PSped2ZXYS4kODxDRTh1bChEdEt8UkheVTguTzBeJXZNYWc7bU0kTk9NRUQoMT0qV3UhKks2NDReVnA7VGZrTkQ6SjQ3K3A3cjs0XSJ4KGooWWRrRG1RRk84bjMiOVhKQUhnaXcw''@;'; put 'put ''KXt+VjtQPERzWUdUa0U7JmgkJj50WUtySGBeTixLOlcjb3FYO2J9ZnlWfURERFdBMkgzPWk1c31RQzZ0KHVQVCFYPi9geGhpWVAyRHo0Rz1Wbi5dIUNTY18wLmZwQk48T2tGUng3RypeYVYqfTxHQlNNeUY5OklCU3dHIS5nKzF3PHQwVmI0TnFzVjV0XipYXVRXKSY8TGZkeU8sNl4mKkJAIy9D''@;'; put 'put ''ay9aUWBiMiJ1cjM9ayozK3U2XWFOailLMEM6PTNeanJaTS49a3RlJGplWkAhUVhBVE1ZbThPbCZjIi92Pzt6MD8/a2NpVG41OUVEQGlyYU5hVFEzZytTa2pdWypZaSwhNTVsKTxUVEVzLnhCa0E/d2p5ZkBOSixKI1lsIz1iezZNI1YyTlgmJl9UJWNoV3tnKjNJM3BFOWxWIV9DQnUjeGg5ciUy''@;'; put 'put ''Z0w+UyxMUl1iaU8hOTpzLklhOW1UWlEuZ0gxMWdHUmJFaWJsJGJSd2Bae0hgUGFibUw9bS9HbSxJZkoyRCxkVFh1TDclS0NKX0MmTVgsQClNdV5vQlMkOlo1filzNClrQl80L0NVX2lzISksfVJDWDJOM2lOL2s5SCUucU9xYDl0fFUrSTgwbWIzeUosKXMpaD1KLiUhUEpUK01aTnA+THExanNE''@;'; put 'put ''TXh2MCxjZHNjVXhnfCFSUSMkMCgpKmkyMz5FcF1ZWGNUU2VndTx2MUs6bikpRXJjcnoiIm4wMSFqKE5fe3BgYk9ZT3tFX3huWUIwWWZXZ3RdRGFkdWpPUGZZYVR7dkojWC9tPEU4Nz0obTRsN3gmKiFCV0pufCZjK045YHtBSXFvOHNyYigxfSkjdWozMVFSJWp8bGd2WSNyaVlvUEt8OExsREF4''@;'; put 'put ''MmYsTiQ0KkwjKmVOcThEc0FtZ2IpQigpQkhIfGZmeW1lYWxaTlJ4cDJCR3lVXWpHQWBpJkBLdUpAOn5nbHRmc1plR0ksTDAmO2UlWEAoQCI2UzVpZ31rSXx0Rnlubj14dFNVJWg/WDkiNTZWcFQ6QDpAWm1zOF05dUYrNSYpakc9SyszMklKS1EuQ3oiTDM9Uyg8em49PUxEaCE0dWlCa3toI2l8''@;'; put 'put ''Xj12bS9VS0oyXU4kMlZodkwpOnBkT0poW3pTSTdnMGU6ekJlKnRKXmwsKzoufVZjVmd5MWx2T2Y6alVlMWY7Y3QrbzZRdjIjKldeSFU/L3IhU0xLWiNxe1tqYDwvLjpLKEcuOm5bc1M4UDtyUTZEM3IpfUZjaWZ0LDdLejdyTyMqcjVVQUljM0l4aXpYWSUoNV9iKUNJLjpuMnRWfig8MiVhPDpH''@;'; put 'put ''N1VzZytjPUNXVzFXOUtiWEBTU3xDIzhCbmFYX3EjKH4vNmxQZzxYbzc9K0MqOVFgXkFhb1UqW3xaViZ6K0xwUWkxTGpBV3F5YVovSllSaWVzOFZrR2QjRlJgTFVzXj0vVCVfPyRePCEqS1tWPC5Mdk0sVjpYdj9INXhfMF0saEBUT15nOlZ8WXB2el4mYGZtYDFEa3JvW3MrKV1MT15bIWMxNEdS''@;'; put 'put ''VnxlOHczVltVdjhLK2NVN2V5IU4hTmVmUGQ3Jmd8dUJlNiYqeGVyamFtanVuT3hYSFo1UFZlSSVQY2U/enYra0B5elNpS3pyeT5MVStIRGQjXWQ4TVo8TiUpd2VAV0lqW1ZyNig5dmZGNytuVTxXUHY/SE5HUThXZVsqS1UoZ19CMyVHTkZ4R0RmKkNUbSVPLmBxN2F+byZ4flRtJWx2PmhrTiw3''@;'; put 'put ''eVdwOE15RiVGdFZFfm9peD9JWF9hfFtvR0ZNWDUzeyZzL0JBW0JsamZQQj8iWTRQYyIxT1VVTk4oa0k5NDV6QnhZLEFwRnhWZi5VPXlUfnhGIllWfU8rd0YmcU9PQnVXZ29DMyswS3khNyl2OFVRS04vKS5+WU5TKzB6NV15ZiM2bSYqYUFFIlE+QWtjdXBLYn4xeDErRjI9d2xnOHpbNU9uVG57''@;'; put 'put ''R0Y4MUNOR2djQVtWO19UVmx8aGgvSzgoQUlBdldYTEZLQyl1dmN0LHhzcXphR2ZQbFAhJjFwaGhafVAoOz53S2h6R1BIJUVhR3tKeDVVQT47ZH5jUTA3R3RUNGZPM3FLcTgqRjRXIVh6PndeJSh0N0dlcSI7YmQ9RGw8cCo+eXxoLkhII2lhbDklaXM2MVpjaG5PcVh2JW1ZSEA5SGw1X0I+azQm''@;'; put 'put ''dWNsUDkzMHxxOi9vdT1JdzZMR1FYN0BiSWA5bHVrVWtGUm1gTSk/JWdSR2BzQ1BVS2I/MU1fLiwkOk0oXjlpYkJkbll1U2k5ckhQJVdrRGpHMzRiMz44RFRNYks0VHIpbSN3Z3Nve3VgZmUqPypZL11laDwjPzJGKVtwPkZhKEM2cmIiVG1ERnFlOCgzaCVAdEpnNUYhWHg+XVZjLjI9QFMhZ1RG''@;'; put 'put ''QVR7PDRLMF54a14xUCo1QSMyZURhO2V6LDU4Zzg0a3dyUV09V1Vudzp2Y15vNWkpKkM4YUV0cT9GV3ZAIz1EVT9GaWRNMmh7N3hSSCU7Jm14WkdxKntQP3dsZzxEXURkLDJ2OC9aYmFPPnVZMDJlUU1odi5CTU4uQnVIaFllT2c1WTBhMV10UzVZIUpIKUVDej51eEF7azVPJClFOTB6SnZiT3Uy''@;'; put 'put ''NSF6dktZY2JwKik6fjlxKkwqMVBwQmkhV0sqKTNwLkh9LyI0NSg/fE9mW1paYUBOZG56YzhrV1I6aDIzP2hMMXtQKFVoTTFXa25xcVVLb0dXOWJIYSZqRFh2QHlxT3MsYnc1RDczJVkibypaRChtaGJoMlJqYChkbnJ0TSN4U09uZis6fDYxUDVkfHVzIyxIUTU+P0gqJFpbWDMxbWBZYTlINFsr''@;'; put 'put ''YGo6W0NQe3Frb1E3blJlWGhKfWkmPm50PX40bGpqWH1Ndnc5fEBPOGtgai9EPGRBZCQsIl9oUWpXNHcrMnhwLFRfY1kibU1JanZpKHdnVncrKDxHOHJ7RVE0QDtlR1tLUFUmIyxHZmJZQ3JNbzRAZk5+Jm8ydy4iJixCXk5BQyxlSFhbY2E7SWF9PWl0LDpVMk15P1lyeUlkR0k4MzBoXzZzZyp4''@;'; put 'put ''VXJyTkVUWyM9Q3RjOkZmWHRLdD9qdW5gSTxGd0ZyWmtJLD5QfFBtU1JWdlBCSllVRSMvPS9uX0tVO1ltQSEyaEBZQzAwIk15L0psYk9oSC40cEx1bSM7W3A5fkpXTjZhMTpmNyN4SjRNUmNdXSZPWyUydkwsdD19KlBlWSp7U0soaWtTdHtPNyF7M1R7YWsmMWQ3a1VlL0pNSyx8KFczVGJtJC5b''@;'; put 'put ''T05FQmIiNCZvfEUjX01UbDJtTC9KRyV2UitQOVFPL1JbdCxqLjB7SlpnNz1vNDhJXkBIUzZzLFN2Y2V2Wk9ALko6XkY1dE5neDtkdmcmSXEwYkYrKmgpLFpdbDJ0W191diR3c0RmMFgjOFdPUSQ+TmhCSWdrQ3grSUg2STlLK0BnIzshcmFMNiR5Mld9UUBkczhBRypNUGchZyFtVExONU5eNTtP''@;'; put 'put ''RU5aQzBULEtDTz9BI1pRJkAhNj1mZlRuSEgzKUB0YXA3Jkl+TlBUX2QhMU0ubzF1ZVlbJkVtJEU3RyUvZypJNGose3FUK0RYfS9jJnZVe1kpPGxFWGpUPmBKcSk9X21DdUhJSEtkSGVpZXo5In0+Vlhfalk7WV5lY0AkSUluPVZATmwjT1c2YV9DJjliRHBMaHd7ckdlUzYobjBEMmdYeHRQbipQ''@;'; put 'put ''TFQoXmRAUSMvKSR1QG1fTTBMMWM5WEYsclpkLDB4I0REQkQ6MnJGJm9yNDovYnZiUUh3JnEhP3pxJjBiNShaTjx1dCojMVhnaXxDKWpuN3lqP18ra0JoLFckZUQ1bGRwPzVLUCx3YF1pWWRvd3pCdHVbTFN1QnghIV9LIjc3T3lxNn1bLER3PUc5UE9Rak47KygpPVBpYCpFbSMzZk1kKSpzY2Nk''@;'; put 'put ''cnklX3ZxKyNTNnUpWE54IUksK3J2blM2OU9HdDNdU3k/fXE3UEdiKTJpc2NmdzRVI3JaRixCOFtZKnRsN2U9VyRye08yb2p2bUshXncuITN6WGpZdUZOKk43cnlDW11yfDRnVmMhXlVCcFZXXz1XblU3PV9UV1ZDRWxRcEQuSUxiNlR7TDw4O3gralNAUUFnRFRoUnhJZWZObDlaVntLYm93Q2xw''@;'; put 'put ''Yk9hY3grZjRyfHZmazhAQEozZ2N7Onl5YnBbaVslWyVbRTo6Nm5CSWxJZm5KZEhYUGJgd2dMZFVoRGRKUXl5PTM5QEczakFUXkxNP29CKkJHKDpBJHZ2Kyk9UEJUTyl9e2JPUS9lZnVaR3dTT3lQaUlnanB9NVUvRnImM2lNe0IlOE4hdVYvfiY3OnZ9fW9paGZHU1Z4YipeRkRyWi8oJGl3IzlJ''@;'; put 'put ''K0U8PXJHTlMhdXQ1WDFTeWxzTTAhR05TU3l8ZTE4QyFLV0NQdVB2fXY/MyVLXnZudUhhSWB3fGVZbXJhc156Wzp3ZDxwKlpDc2UzTFteciJ0WkUvT1RHalQoOFFDXnt5JEx5LiF1NlFAJkFDYmpDVllhQSxMPHFnNWV0X3U2UGU+KTIpWUZpcX0hRls+dnhpc2t2YEJ4cF5tX1MucnE7IlBiTS8j''@;'; put 'put ''bigmKlN3NWU4JHdQPG5+JkY7aT5bLEovUCwuQWRAfnVwOFFSZEw0Vy5tL0pbUEtJdVVUKnh+cTU7OkYxLiImIiZLe1FadW9zd0F9LlEkfWZycz0jfCZ9bG59U2tqWUNXPXRbdFNNMz04eCRzUVRFe2w2KDI1UE9WMmNYTjN4Ljx5PDpuI2BsNVdqMWJWLno1NltaRWQ8WypbZGN1Y3FYOTNadGkp''@;'; put 'put ''KEtrWEliYVlyVmRILDVkP15RUzl0VFFCUDM9U0gxekxeMkc6bj9zW3A6cEVKaUVmfHBXeTdoPGMqZnRvP2AqZDdKc1osOm9reyg/Km42TUlReFVhQyguQ1M8d2dOUztMPGU4STFsYj07dmtEaEx8TjVpbWBKS1pHOFNhZHYiWTdbLmBSIldiflNQdypbPShfMmlJNVtlTXNrVD1GblZ2RlA3JjVH''@;'; put 'put ''dlJMWk5YfmdXWX4qNXswOU8oO3A2PCVNbktwc1RQSG8lPlFXIUwuUCFCQkl1dFBHWl15SXtyIWNMSE5kZEB1WzBOOFh4IlEjU19EJUJ1JV8wQSpoKmhNOjI3LDhQNDhfPHtyMH1NeHxIKzBTZnxRLEtnP204NF4vNlNwRHtuMzpZaFcjUUIxJls2JGk2KGBsOjMlPjFqbE0yL2tLOXosQUJtdylu''@;'; put 'put ''bXBJO3kkfHZPUiFZM251ODM9akgqRWtZMkFGcUArLDltJF02I1NRNW1oREhaejB6cyw+U2s0e1E3O1Yuez9rWn5XRTQmaEw9IyZWUTBeeWtJPSZ+bDoyVSEmO1ddc1k9Rj4iSjFwNykkSWwpbTk0T1kqd2chQzNeW1J+U3dgbD1ZRThyZ3N2K3Ujem57P1pSa3FGZiRyZ3NOaExgZD1IdWt3KHB5''@;'; put 'put ''enFTNlgiZng4Zkh7ZGtIVjxENmcyQSpdX0dSWTc6U0V6PStBbElPfnFoTU84JHVKN2RlezxFSCkkUnxyLyI4ciwhSHJJKWdQOGZYPCx0RV5TNlhqeXRaeVlZI04zN3lHSntNRVlpR1EvTVMzR3dtbClzOFssbS9Qa1p2dzp8OVBadFAmdlBsPDpIUmIrJWtNRmVDImkvQE10eWJzM2lNTCpyfnlN''@;'; put 'put ''QUhBQjdbKC5QdmU9fHtoMXAyRG1Haj93M3VLY1MvZ197JjpoKzxtYFkiMTVJfkNhR0dVMlhRXUVmalIrS1I7QCIoa0BlRjJeVjUpaz1AMUlpTTZ3R1R8JjRuenlnL2NrTEV2TD0wNHArZyVIV0ZSdDM7ckBlRihrLiZqTWQzKyMidW1SRC9kRWleZGN0Nmg+bHR3b1FLWF4rV0QmYiNRLnJxVDAu''@;'; put 'put ''VH01a2BwckRFRFBCNn5AazRqN1lqPHkwdTZPU283bCRmRiwiJEllYWtLcTkwIz9ZRVtnbylhWEZOVSV4ejx4OSF4eiYsZWZ9bn5oWDFMNCEyZ3drY3tvQ1dTQm5jN35hK0tue0lvTUt6cD46aDUpUUB4NzVpez9bejFabikwaURsXWNsOkI9YyZ3Y1dqI1N+dSVUUUJPS04zR3BkRSNxOWlwMUZw''@;'; put 'put ''ND0zLFdQa287b2syM3paPnJGNDsvXklPbStHNUJJWGIhIWlvRVBkZEw0VGBKW0MvPE4qIyJsXTBROHpIQ0klIWcobj9vOFNGcixfNUslPmA4WGFYNmVPOlMkL0Z8Y09oTlMsdktZZj5AUShdUyt4LDtHU1BZUU5HUlB9fGcmdjF1R3ciOFAxKDpoUThKcjk4WXQ5OFVdZyhjbmtuSzl0KVRocDd3''@;'; put 'put ''ZGJTQUN7aS9AalomQDZvK3VQVEExWlI3KVRFa017IiVjPyxlfVZ5XWVBX1gpIXU+VSshQUJqWj0jTjNDPTFbUE1hayZDVE55IzVDNW1oPUB1Ong/QCFJZHBQZTEua2s0JE0zO2kiUyRsV0diUWhddlpwKnIvZVltQ3tQT0sxeH4wPShVUFh4c20jT2l8W0EhJWM3PW85JGo0c1JZdDBmSSt4MlJ2''@;'; put 'put ''MSlQQjpHITh0fC5HTkNzZU1pOiVJaVBTT0BhRmhFW2VtWGFidlI0ZE1pYVIxMS9NIno1ODAveHUyeEQmcDpIKTFERyU9Pz8kZTxsLiMqLkl1K3QsekBeSU5xMlFJYCpsNjJlaiNLU0tiKUNrcFJqWnc4P3wvK2Ewek5sMkQwPmhNLnFYP3J2RXlObTpjQURYentyZE9Dbys3ZV5gZT5gOTkhX2lg''@;'; put 'put ''bTc2O0lfa3dXakt7dW1gc0ZOVERkSEIldUlmT0pNeUVeJVJ3OVEqYkU/dGNWYCMpfUhqNzo7M3NeRlpkTHpSSkwscmxCI3F8PCkzN29RYCg3eWA1JEJEKTFxdVl3YjVnVl14N2RtcUFyLjJOYEJ1R010e1hIVDUycVdoe1liMXNwb2U0YSU5eH1jJldofXFDWk5PKEZtKVYzPm9gYHhiSkEkJCRR''@;'; put 'put ''WkJOYDNbPVtISzIoTHRzU0N7SmhEajplTW1CdDpMUlBYYm1VfXF3djxiS01INy53Q1gjWUt0USFIMDp5aVJVcVUzZm93dSU4bCo3eCNXI1kjQE9Dej8qRjN7Tm9HKzU5I249Sn1nPXYvZEgrNTlffVQzNXg7aUtDUnBgYEV5V3YlW0hLQylsNGZNanRPIiRnLEQsdFV8Lm8pczxvMzkrWyVjeEI4''@;'; put 'put ''QiZrbXlsaEhhPVV3K29+am5hWUNsd0ZYaltVTCpAVnNoI2I1LHJvZVJ1RyJbRGxOPXtGSXUkbyxaNThlenF+UUNqdyV3bGdUJV8pTmRfVDA6Rls/V11jdlomeEgkQHZ2dnd1JFVqNndTQjc5blB5IXRmJnRzakhbPnJGaF5TbFIubFddUEc5a2NfaFQ+NEx4WDM2SyxpMnZEaldMMnUmI0AvaSNA''@;'; put 'put ''Im1OeWtRXjxZSzFPRV42OVArLDw4PF47SzdAJTh8SChGJiNfOG8sQDcuIzZKals4JDlKUCpKSjhsOGFgQzcub0kzbV40Q3hmXWU/PC9mdF5WJjQ4N0NxfVUvT28yS004SDIkMyhKbVA5JTNzem1gNihhWCtzMi5FYVdpcTZlWVp8U3ZPUn47d1s8X2drQ2M+ez1XNExNUC83PmJfRFdgPTAwdHl6''@;'; put 'put ''flZ9eHBPOXEpMXIpPDYjb216bSlOTThNVE5+RWBQbmJlLF1Zc083P0taOVdFRWhNOSV0UGFPL0U+diNdemB0KHArI19GPWhwcEddSUNkQmJvKCZKezFAUDw/S3JRTX5uYmIhUVVSaC5obl1zfWY8Tig0ZVI2NVtFXW0qXWBoNGg4aSVlVW9vJEIhS2A8JUhLQmRmPCg7ciJnPlhOa0QmLzxgKyos''@;'; put 'put ''JHRYWGFiY1oxNk9CaWBVXSZCfCUxKGJQY3txNGtMPnx3O1hGbW5NMHUxWUJDKjBQKThpT3NjMFtVJF1RUnE2ejJGPWgpZWR+TjlVTDwwRGxtTFJ0djtqPmRnWCQxKmd4LGNJaEN7QVQxKkxLPHRYeDErc1JwOG5qJmkvTikqdjY5K1R7YCZ6OVA7eSJULlhtdG1QK05ATjA5Zl9sXSsoel03PWEw''@;'; put 'put ''U1NJMFo2bltuUypvUVtuemFPSWBhMWpNJW9ALzcjNm1vYldFNzJrVkluLFFCPHdIc2tdO19ZUUJ8KE1LOj48MzhNKH5GQzdIaWFyW3UzUlFsNDB8TnM7a3VyTUlqciRFZ2NOVTYySS5VOlEpcC5eY0ZMcDNjOCgxMCF8dV9+fFZRTTh1YWVXN0IoW0s/PTpfeU5LQnlNKSsqOW5Nd1syaSshKjlu''@;'; put 'put ''OHMqYEhtYmdlQlFSSWFVQlRWZThEPkFtSFcrQHVMRD1zVzNUNWxROD5pL0NXXkF4ezgjZWAyW3lCSSshNnRWaylwVWBhS1hoLiRoTSQ6IyV5QFNGP31WdGdCUkBye0tINFdSUSFISlsmVFolKEkpWDF5Q0krIWopenE4fGJuYVh9UEM3VGU1RHFeNiM0VjElSTkrOyxYOjNKTyZYRSs5bnJqJEVt''@;'; put 'put ''XjNofG85cEc0aDQuRWFpfGBefm0+JFlhIXJmNllmJkYqSCFAVnlxJDU9eSwoPmMwd0hyRzA7Iks3UG1qblc3fm91YHhXYmI3eXZjVSI5aWskVjhtVkc7N1lNJSNgPyU7SD5mfGYhZzI2IkclTzYkOHFleUFqX3RtZEdlQHNAdnNVRSw9Xzd9dzgoRiMsKVI2UG5WQGpCaT0qKHpBbWU6PFc/KkxL''@;'; put 'put ''TCJER1ZCW05BIz8sN0RKUV1YUHE9ejdwb3k8cC4mUEIhdGpoSzlebVEofFUrXj17Mlt7RHIsaG9faz1FfFJJeC9pNDgqS3xRQm4qaWh4IlRrUn1TRylIakJbSmtGXitLLlplZUFXeF1sczoyTElFPGZ1R2RzPF4ucVooUVNKI1gxel9PYCQ2cl4sQlsmeV01aX06KSRJbnYoYSIlUSlUS0pUbmFw''@;'; put 'put ''I2NnJk0/MHZZTzdEaWlgSjN1KVAvZj1DMVs5L0pDcFBxe2dCT0I1SGYiU2AwJEJTJX0vLlBYKTB5L0Zdd3I+N3l+cHtEI0w2VVB6RSp9Vl5YanEwZiV8O0NFWSw1Wmt2IUAoaChWRipAQCthUWFlK0NfUTFJRyFwK2I5MSlkY1N6MjQ4NWUxWDtyaTNFRj14eG8sZWZTJUB8OEZ+Xn5BTjdqfjdg''@;'; put 'put ''RE0+IkxmfW4qdTZHPWFSfl1wKGZdMC9TQUJoRG9gOEYmLnA2dGlJSTZ1enBjbC5GKHIicH18fDA5RnBKZlVwUGpOL0Y3UT1lakJuQiFHd1BLWCVxOl4rLGtJXWE2Jjs+fW9pIUZgc0ZXLjh5bHM7WDJ3LCg+Yyx8IilsQnteTUBuUG4uWVZAVWQ7MjpedDI0NVFINl5aVjRpNGY6W35AYkNHUVM0''@;'; put 'put ''M0pEN09mNlhIbSssfGN6PCh6UEllNW1DUmclOmpLcWxEI2ZyP1QmOWZOcV9nOlNJUDdtVTQ5XjpdMUJbJCI7JnBbaExNai8sZSM7Vk49dSslc3dyWHZyT1hwdj9vLDlHeiVbb1dnU1ZeI2ZhS2R6JGtiZnk+UC9BTT1hJkNzIUh9YiNMNGRSInUkUUpXMUglZ3NKe25bWzkqTGFNLH1NQnlCK1ZV''@;'; put 'put ''e0laZGdSL2d0MitgSG11Uj4hc1F7UkIyZWh+RTxndzpaNjc1R3okWz9SITAwLyNbLjJ2cCN0U2tWMUMjN00ubyZ6Ilp7UTJPN0IhPyEzIU9gSXs/IjFCcjxrRzZhPkc2bDdzJWw2JGllLzNTKDM1W0FeaU4rTD0zTlJ+JWhPNEJfVix5VmIsSW5NNEJuY1BsSXBbbWMwdCtrbU1GKmp8MDtTYy4z''@;'; put 'put ''aF42Yl9PfEFEPnx4TzFRT0ZdNDpYUWhVZlZLK2NgSnJMSzM8LEIuPFo6VE4qRS5OTnZwaHZNKkNpZWZNUzAwYFtwSyYxTWd4RnZsJDJEan52dWZwW1h1PUczOmMxY2VaN3V2IUdxd1VCaWNHWFhleGYhKWZLM1FZWytsLGBeNks0cj8vdmsjNTV2SGAmT0M9RldXWmJ6QERrO1VCPG8+SGRyP11t''@;'; put 'put ''JipXbkxnRzc5SUpMfUYzc0ZkNFY8UzsqfnpdYUoubXVBQUBRZER2KCpCOUYrTVBmNS8xNXBiKDhRdENBOH1ZZSFrTGJUMCtYJSouSWsiQUFDQUFBQUExQlM2RlNHc3lsXTg/fC5NZV9Oa1BULHMhZEJFTW4pPWMzbX5fdkFOVUwhcyZ5ekVyeCRaeWNkJX1zOHRdTW9JWzhXdEV8M0NXPnA7dD0x''@;'; put 'put ''YigpbCM/Ly92UEJPNyldPm9rWGE4emg0UkBuY3F5PT1EfTZ2JGdlYzY3NH1OS0V8Z1ssaSN8Sj92LGl6QXMqXWpsZiUuZjo0NzgwQGo/d0hOdWJsbD93b2YoR01Xcix0WTk1PjpfRCs4LE19UiJMdXM8elRvSz8uMVhYKXVxZ0ZHVWNKfiUrfUlrcUJ4V2AuKm8oJUh3TU4/R1MpUl8ySSQmRmV8''@;'; put 'put ''aiw0MzNHVFd9dllSRypnc0YhXjd7T2BnXmpteFE1WVhyP2x3OTJXVjdjQD1YVnI0NS5nc2k+bm4oJTkpQW1IVSUzYCJZWylJRWFDQ0s/NTF2P1NEXipBLipmaXhIdGxvL250KFlDfSQ0Wig4KW08MSpdNVlMMFBiQldTZmYvW3clSV1bemhzbCREPmgxUExqdzlyMk9JODhJQCQlfDY3PygsZ0JQ''@;'; put 'put ''YH0raTNOPS4kamVSUj44fTBSayZHVjAqKkhJZl5Qa3QpUF1xcU1ybkYhI3pzVXE2UnhlJTdeLFFZbER9XixyWjk3c05qOkhxSDJVejFRJkoiRkcxTyt9UXk7U3hQR1p8dlZwJSN6ZXhnK3FkOk8pVENebFBESjxKNlJeSE0rU111SzwqUV9rI1cxOTJodyMqJlUzYFUkPipTQ15rKTt+Ty9ORXRw''@;'; put 'put ''eVVgWGVvNnttODdsMVJyMU1hKVZjclpaYkYxPiRpREgvWUFAWEdFckFIUGM1bjpMXmNZJmBSb2hRcis+eSZkYnUlWiNyfSJ1JWomRHo2eCF9dXkwOStRMnY9R1ZZZkF1cW1sZnwrNTduLm4uPEhLLyYifk1gTHRuKnBSRW04aj14bFl0OVBXQmVvLjBNIzVGXXAhUGtEN01pOHRQLEVdKEw1NVcx''@;'; put 'put ''Uz9uekBWbztUOE0pczlCcUNoc0BRaVY1TD9TJjw+V0RKcWkuK0s1L1kjUHgwSUV6SjdpUmkzfHFYZT9udTllOGA1flFickM9fjJXbWJfLjR1fnI7bz5ZUixTal0sZnIkTUMqKFA2bTFrRHNMRD5qQlpvKkVLOld8N3VoNDtiXnF2T2lAKU9KcVteWUZ4cC9mSnp6fnhWMlEzbUJaRz4lfFI9WXEw''@;'; put 'put ''WWlaTytuKEIodCl7K219O2wuODJnJCoudzVbKU4ja0VkRkQkMWBFQWY/Ty4+R3pbIjE+SixkWjF0IXRTOS5mODUsSkV1ei91VC9gI2xXbjRCJjgmdzkqIk4mfktxWnBMJHgyPGwlS2gvaEohLDE8RSF7QmtxVnVtKX1YPStUbmEhZCl8YmUjV0VhKSJsIXs3WUp6JWlJeFEhUTtiNnQqWjd6TyMr''@;'; put 'put ''e2Q4UWdmaGlZdT5MYF5FVUdLYHRzVW4wXXZ+YDpRQ1BKKy40ZDFbdTVHNHchN0NKVDRVW2Qhc20uNnhgdTNxZWxiPSopeXB0fX0jQ3BQViI/cyVHKT80XVIwXV86ISsiY2w+eTErQXJfOE9aeDlWfmNwcTNlciQ2X1ZYJWYhXSI8NU9rdlFhWjQ2WCsiV3Q0d1lzJVdaajc6dUx4OnhYKHJddStF''@;'; put 'put ''IT18TVFZZSk0UyxnUjJTYCt2dkJ5TyRGeVhaZjs7RGcoNXYrKmtUIUREQ00vT1BwXkVSOFREdHQwKHZLUlAoTlssVmsrW0lTOWV0LkdoQW9GY1lOVC8lUlA8PFshfk9jYE02IVY+YSt2NElDcCEuMnEzLG4mQjt4QUJmN3BgR2VdbXNLVmRkdlIwcFNLSF58XWJmaU1HIXZNN2U6T1RmOGErfXlj''@;'; put 'put ''fGt0TURvKnc6QGtzMnheY3NiYy8/InpMb05YPWRNYDR2c3V2bSxedFB5MUUxRXleanEvWkNYMltAZmdBVU82SDkkRDJVRVlnY3wvZzpgemwpLmB3djxwY1YhR055L0x5WSo4TWBlKFZ0X104T1ozYC5RYSJuSntAY3QoNyVOQkVzbExrO3gzYmoqInVOOVtWSTg4W1taKVZ9VDlib04yNTopbS5I''@;'; put 'put ''dzNqZz1MMmJEOnRQYCl+YiRdOyopPkEwQmxEISo3dGsyPEkydn5nY0lVRCwwTnJkb2FaRGdRbz5uQHdFPntHMVIkc31bOkcmfmpfTWNyMXVvbX56I31ucUwjKCJCJmk9alk1PUBtXXYqeVR1RUZLbCREN1FRNCtvOyM/ZXBmNXNjZzleUntgXmRiOWdCMjBXYCsxa3dhbiRHUDs3cTlWcDlhP0A3''@;'; put 'put ''RiYmMGs4dUw8RUlXKjVQUjlERS5wUzxLdEk/O20mbEAqMj9pUXk5dHIuZCV4eU05MkpfLFBdMk9oQWtGaXgrY15PfVVIdjNuQyR8RDh3PWxYfFNvYnY2QGdtakpsaWJVPiZoIWxlOzNZYFkpODs1IWl0OU4yW3wkP1o8SS4lPCxuQFQqJExTcGElK0ldaEV+X0Z2dk8we09HKkJCPTpDVyN8RiVq''@;'; put 'put ''M0hCPCokUUAqUntkOmdbPCYvWEtQfDJIOEglMCt0aGYyLE5OWyksbDA2T3x5PDJVcFd8KEdoOy5HWVJeNjRaPTxmY0R+dXd+Q3YmMihDYGJFRSRqS3xdQ3s1eUMsZVU8Lmo3Si51Qi48MGp5TTRMYnghfl1xNVNUX1pGdjJwKFlXblFjc3BOQjZLdzJrI2UrV3VJcWVXNC89QCVnd295d251UzBt''@;'; put 'put ''czp4PW8vflp7ZU83T05yfmg8dHgwMGBoWGh7fWBHc3YjYVMuazNzRlkiZ3IhZTJ+OTVnLmxWdmZiODlAVHo3QmNIWUQiKF97Z1JFdmpoWUU2YWd6ZGxeTXB5cjVFX2JEYFhyM3M2REhQOj1lYitLOldjRi5PcU9DU1VVP2ZdWWZlY2hsOU5OOjdtfl5WYnpnTCU+TzAkN2JVIVFsKDRTNnBHUCNi''@;'; put 'put ''eFpqNC5ROV9jNmJtQiYqZno7bzo4W3pUN3BmZDhXUDdnczcwUF95PTZZPHk5fiFGU142bHIhTkJ2YE9pXVhsOiEveTJvKHFHSyVNYyxmbkZrW1QsNXhRKnFIYnUvZWNrays8akF4UXlJRnp7R3hzR3hwcF1BRjdGPGNnUFlDcSxfO1dYPXZiRUV2dyZiLn4yYEhoTmZEc1Q+ZSt0VHgrMXpYRG5I''@;'; put 'put ''fCU+UUlPcnJXcWAsWGNqcUg4ODo7Qk8pYE1HejZUc3JucWowb0xLeX06Q3poezZvdkUjbkZMWD8/ZGBaZ2ZeOGVQLHtKfEYub0o6YGwvJVB9QmZZVnAvQGI8fjxANSo8bzw7d3BvTHg/eFgxNnVtOG03WGc3eExQOUpSfUI0UkpQcmxCczlsMHRJZ2lfIzcuYExZMHp4YTY0Y1Z8bGU5W0YpJEs9''@;'; put 'put ''RFFefFtlck5+IV9BME1QOGh2QDk9PUBdTTdmN3pASkQ5NXJma1kzRGYvVVJ7emBAeDY+RUduVVYwYmR3XVI+aFRRRiNdN21Pb3VONE5NSXZZTzZBXUUsXXxVTl0iLlFJaW9zO0l7d2hDQGNXT35lTi8rVzYwci9WRF5hanMjMnklKjRUemE5PX1qbnZEKVVuJFMpZiJNIWJMK3BvLzJFTiRxRm0i''@;'; put 'put ''WFFScERSbHZddlZCLkB1TUU0cE8zJHZAJmNvej80fltuImEwIXYwJS8ueUF3ajR4bWtEUyRaLiJJSFldW2ZMKm50X1JAfitONnY2ZWo9VWhDaXlNYEFkNVlKVmpwaDE2W1RuajFKTUE4JUM2Z0JuYGhNV1VrS3Imeko0R2hEYm8pQS8/PFdMYCMqb2B2VisyUWJ7K095WDZuVXRYIzUkbFVlPFsv''@;'; put 'put ''XjVETTpIWCoxQHtzdmlMeCpQPy8xfnMlNXlgU1o8RX5+L15wbV04NWRnKSY1PVNScSpyU3d1TypMZVNAOElwZ29IXnc1YXlwZFpMbkIybEY8KGVwVEsja2BpLyQoIjkuOG5sbEVxLzB9eCZgeFJsPDghbHg4PDJoOENiSzRpMXo9JlFrKGVXO3hKdT1xMzdDPFZmXndoa0lUQmAsYS4oeCxId35Y''@;'; put 'put ''ZEZoPGh5eT9uInBOOFROSCVUOl4jREpoKlhYY0YhZiNSPyplbV4saktGcUszJCVbTW9ZVGZMdUE4XnMpXXY5Kl5qfFg8JSx5czc8T2lnaT08RUJgMGZ1eGFAfG1aUjQ5fmArbEBdbl5bOEpJKVhVM31tRFojV3h4Y3ViV3JbOEV+QGIyeCtFOWkrSUNpWitDd0htVnh3Zj1fXXlFb2FfV1UiKEcw''@;'; put 'put ''Z0FrS0g+c1F0WXxbIk5QfE46K28oZH5Md1RgSVJ8VT9WfFh1TCpuIyQ2e3w7Sj8jJnN9LC9nWFEoXXJgaWpUU2YoaWA/UiooY2lgSHFEczo5RzNaQyZQM2RGTDJbWCNjNjFnc08uQV8ocGttMDp4TTB8czlZIz1TQmo6d0dPOXN7JEM8bGRlS1N4UFc4OUZtYUohYVlPRVA/cTxGQ1R9QSRFMXE/''@;'; put 'put ''ZWQjXixAIUVVcTdiJFRIPiQ2KyI7KS5Pcmt6SEJeXVFNaywqSTdfYSRILG4uU0VWS152e1tFbDFuJEhwU18wI0JtelIrKS5UTC9CLmsxc2NhNn1WKXVXSjYvKzMoSF9ySmc4SVlsK00pdmRBUEpQa152e3ptfTklQFd7LzM0PG91PE1qMlYva0pKd3swZzJkKWh1LjFbelZRQFdmOGJZVXhmPk5w''@;'; put 'put ''PVE2Iz0mc1QlK3EjZTR2eyh1X006Xi85KEZPREc0aXI7cntqOXJweHUhVm1EXXZ0YG1IaVMkMSpeYWUqM0I1dUxbelh7VG5RJFkvMFU6WSF2RF57aGE+IXJCXkQ1Six6R2lMWTFjSTJLT0ZeJk0wczxCKGZMSiUoLk8xa0s+N0MwMVApKiVsWzt9amk6SW02ZTVXbjhHP1RIUCNdKCN+Ly9yRHRC''@;'; put 'put ''KG98ajQ1X2orU25aV1V2eH1LUkthSjl5RlhSOzlJb2krIipUYGBnJCNKWHhqfitrUzg3e3tSWTNXMFN1IVJLZCZUMDR3N2o7SDBZfWheIkFtSExTbDV5IyMjJWhUYFpee2ROSztVb2w5fk1bbUwsWCxHZ1YxZkpySTZvPDlYaSQqY2hybiJvTjNsTl1JXk8+dEdCVG0kNExKRWlDd2RwYkMxI21q''@;'; put 'put ''L2BPdGIke2lJcSU6QTFFKEQ1VHYxUFpbKWhDaC40Kk80Nit0K2NjbX1tQEtUT2lLIXl6RH5NNW9POmIkUVdGSUlXUEYyU0w8bnJ3KExCOGVqS1M3WWV7bmpeal07WXsmWnA3OnR1eC9OT1FebjcmWC9BZXIvYDg4Y0VVamRVW2N+QFIwJWN2cWkyNGtKWUJBKE19Rj5DX05peEtyVFAuKGpyWklQ''@;'; put 'put ''Z31GO14uT0RrMyUuZClaI1NsZn1vMXd8K0pZTWFXRFJQTVNmX35kIkw5N2xNKDI/OS9ufERGMmA1UWopUmA3Lj1XKnBdZDA7dHNhX0pzM3Z7bF1XXSp3VFJYR3pYcGxTSSh6UjYhWVNSc0JZaCNNPkQjU2JSLG8yNTJNWEBVSThGNCgrYjVlPHJoa2t0bEkmWV14L2VSaSk2bWc6Ri8jMHwsKDkk''@;'; put 'put ''amFWW1ZIbm1MVXJGQDcjLyZpUmtoRUxgZVghNSRwWlFaO0xodyhRdVtaOkd7aihZcUVINT0+LFU9SDhJIWlAUE1XZixQSW1GKFI9MSlYeHBiZllQYzhLJXk6QCJieU9DTFVobSJrXVQhdUdSdHwyaWkjW1A9VjhWWFs9R111Kkw3fj8rdXQzZjozNzk4S1l2OmxMOkMsVFVGNF53YHUqWUF6emoy''@;'; put 'put ''NTwoJSpuZSspSllkdF1Ed1p7UDgsTU9QKChEd3t7R0VgS2lXVnZYNmtvbnw7ViRsdDFpRF8jLiFbWHBzcVVwbDFrKHI9PVN5N0RqT0FpUntUSDBZNkdsSzk0KitLIT1oVDdyMWFZWlhJc0tPW2VtUCQ/V0lUZm9ZZ144fGBwK2M4NnI7eURdWiF6P0heLnB1NT0uS2IyJlJxPFtqRjRLLnlVRWUh''@;'; put 'put ''cU5iQytsUG4wan1YTzVkYj9mS2xfMGFwY2xFQHp5RWluUFJPRXtuUStvaWFzbkY6akU2O0xXIlU7SiEvOC4lSXRlXWV9ISVrN2g4VlZqcC43Xj9nbmcxV3o3QS5Ven05RVVwfGo/P3VdQmJIVE9hYW5FWzRNOnNvXkRVSDVndVdiZSxRRFthdzprVDN6KyFVITV0WkZpPzpRVDgqMEleTyhTQ3xt''@;'; put 'put ''KV1qPl5tPWROVzxPMitZRUdKViFvd2JGVU9nNlM/ekR5fHZlT11wNDZYR2ZueUJ+e0J2cFZnaHBBPn1ufkBSJSRjaGtZIT1AMyFvOXEoRll0Sjg1PTsoclIkSU1KIWtYRGJObHdgPmswYiFwbSpGYHwpTkwzdkxeZTRAOzlTbH5NM2ZPTWVCdDBadUhpVWR4K2FaSGZMbCtIIl56RGxrciMlJW5t''@;'; put 'put ''Lzxxb09nKCY7WSw9O2IxKiNsLkVHKCJ6Oy5LNixQZ245MSN+JXFJQ2BBM0NJRTckeEpieDxBQnpeMkRmOEQke0JPWnptc1JneUdtUHRXPFguPSlXWFsydjE0VE88Lj1+RVM3UHt8LmdLSj0rP2Y2Z318a0dNJCpBUGZhQTo/R3RuSG5XQmZmcVNpc3Ztc2VOcmAzQkB7XTE6WGApRSFrNnVNZyMq''@;'; put 'put ''VjFtQkd1aSgrdj5jNmw6JTdBKyVyVSplbExVRHZCVG5URmFDfkdyWlE2YVV0WDBpaVREIml4KUxJTzY2eDRpbjglTG9SP203MnQ2Jn1GRW84ZUpKR21uVCQxTT9xSy9sZj1xcE4ybD1lVClKQzA7SyVoYmYsQikhMy5hIzdEOWN+KV50PC9IPHRDPnNIZ1AwNzFbImEjKzk5JX5GRzduJm5lVn1d''@;'; put 'put ''NjBmeWx0WWMoT3RMZyFrYH5bYmlvV2g/T0lNZGx3ejl+Z1YvRnc9JXBecz99RExhbENfYCVAYF5FK2A1O1U0eytSM2VeXkdMfEo+X2lVbEYsOFhmUEp9MTZNeXAlSjgxJjl9Q1Q4QVBNPz1bUldrSHdoI3sobFltKFc+ZD5sM1pUJmRDO1BScHFCbH0sI2U5bnRpVXBWfld5dSZdM3AiZCJPPEI5''@;'; put 'put ''U2VvMThaXXh3PzEmYmFVbkkpMjYjK2VZWklxQXg9VHlHKH1ISXYwPlJaPXdUQDpXMzkmOCtXQjA8JjhVciQobkY/SHc+Pzt7PncxUDM3cTRfejQ5OEt3PDNONlFoTihZYW13YztCbDtzalkmW15kdW9ufUdTLm9QfV06InxfYlh6Ll0uLzZpdDxybVdQfDUqRDtZZiVdQ3N7SXFWIyp5eTQrLEhL''@;'; put 'put ''VlN2eSF2aD99TkF2W2RyWyhyNV5xd2k+TWRII0BvS1ZtWmUzJTNjU09DQEpBfk4ybWoqUFNZIUMucX5uYTgoJDwleGxtblgrInVzeSY9Ujc8c2VUbWQ9OSloXTlkZnlya1JAYWRnbzUlcEpJUnNmOC8sSSU0W1koZD9wQElhUSlkTE1lNEUuMjA0Njh0JktJX1pIRChTVnlDaiZIQGgjZTtlNDcj''@;'; put 'put ''dzJqO2IrVWNLe1diaD5PLEpUfEtFakw4WEQuUUxtOy5+Q3ZbaCN3Om50enpjcW4kfSE3fjpqY0x5e0NxL09KWiZwejVoLlBqe0JSY3dwV0lVI0JRLkBkJVNDWjxpOGZVUWdnSlZTWltkclRofG80XSUsR2JPO0dqRGR6a2R6L0BDZmd4elJzTUlZLy5yWktALENTaHx8alJjU2piNz52OUBPSVth''@;'; put 'put ''O2U0VTZsRWhxSGB7RlciMV9PbzNxIWxffH5QKF0hTHlkTExTV3k3RX4jRTIyJXVXMlNHckFqYVt+aSNuL3QqJEhVPE1uOSt8XTJNVC56Lzw+eTQ7YGQpNGxyOD5QIlVXSFRpMnQkPUNqdDEiZFE2fUVraWFNKGlhM110Ml1yWGc9JFIjNT8iRVE0IkxhZDBJTTpsfUQmRWFsamVieyhFYlkqZ3l+''@;'; put 'put ''MEAmP2FecjxkRSZNWmBiMl1iI3lDUjU4emNFIkFEI1F3UjNDOmYlc1l5eENONzMsdF5JYHRbTCEiZDFPNj4rNHY+QnB7ODg8fGY3MFdTVHp7KjYhfnhTNS42RUVpYj8lYXxpJEBWOmdOV3N8fShsdkJbPE1tMyljMXMlSi9Wb3ozM2lvR2xLLE5aImo+KDhBPFdYT1dgSlNCZDJ3VFskNF5YUEVZ''@;'; put 'put ''ZDBJVUZVNUY+VDVJaFRSaUoxLlhINH0sd0RXPkwpNT06KDlbRy9NKWVoOHNheCZfeCwxRzNpZmFWJFhDQWJmMiwzZTJ7dEdALkYodEA6Qi92fTNYLzw9VF5UcXVzWCNOUHEjTil7YVg/SyFEaW1DOEsjIVoiY0tCNGcvSkAyaVltd284MFt6M0hWUXFCQ2ROUD9RcCFwJFREd3thNV04QnA0Z0dS''@;'; put 'put ''NTxtazxlUEAkLF1TRjYlKCswKEtKaCYrRnBDRWhYOVovXSkpRG1fI1VNTDplbjpaZ0FRL1JxS1osLlEvI0BwOVhBfWVsV0hHdHFWYVl4RFdbLGN5OXxgSnRpTXMsQDE1SkdSZktaOlU6bUAqdVE4USY+PV5jTi9kIndGenBAc3o0e0Y9dkNZPF5nNWdNcT1xW1U7QnQpSVokKDI2TTV5KCNeUlBJ''@;'; put 'put ''WHI9MUR1Q0lHOlVnP3cwRlNZZks7c1E6aEdvQCVTZSxLVUNRdWZCRCNWbDwuPjMsSkQzVEdjaXl6Y31RTl8zRylQRCQwMVRMUHR5fih2cUs9YDlEO0lhYHlNZTRGWXtzRX1ZPWtVKWFHdEN+UDdnNXt9akRIWWxJUGBlbzBkPWU+aSQhLyRiKzNAKjErTUVlaHd1fCxbQmUueUt4VEJTUTFFOWdB''@;'; put 'put ''ZXxUZVd5O049XX4uZ019O3hyI31KcFA7R1lPZyRmT2p0Yjw4KE9VNV9IU1I1P1RBSktEL1RpJkVtSVlEKXI3ZU5BIi5Mdm5adSohRyh4Mj18Q0JqdHBATGN8RD1YSTxHZTdVWHw5fkk4dkhsJnh0K31BVyY5filGbnZXL2QocnRQRX11OjpHXVk7NTBvRVRIX0h7b3cqWEUoVns6M25gInQxWCkw''@;'; put 'put ''MmZ3Zn4xWnhgO21jX29EKFciOipCVjR1M11OSyxnbCgkPldoMnJxR1JKc151SDMpNSxtKlYqalBsRkVtM0QvYUIhQFBfUXJDJiEmQGF7alBLaWdRfSJDOEY9bzJwMVFpMWBtK2cmUkdsNEpeNTtyLjBRaXV3WUJ+SS9PV2ZuTkZHRkBwaSF5Qz5LfngzKXw/ZT88blAkVTRmT31JNU41fFQ6MXd8''@;'; put 'put ''bW8+UUBiNSRhVXcyPWRsdnQ3KG5MIlM9KDk/LitCaylnQXAiNjRoWjJTPjlCSCU0bDB2RlNUV3htXUsoO0Fwb0dxekZnNlMwMlZESmBrdTIxNGc5KEwpdExkUS9YYzAsJF1iYX1NX2AoYHtYJTd9NX44IzJPbjdgTXJWNWY9KlFFJnBbJm9NYU5DQis5LilZejYsT3klRF1rfC9hMUJwPyVmcGl5''@;'; put 'put ''Y2I8VSV7YGk2bldIYy9ONSVTLzlSaSUzXl0kZVMqIzV5Q1dSJEdtXTUufXZqYz1pYW5lInsmbmJeWjtaS0dRUmJ0ZjVnTyJsVCJRVCFTSngxNyQoX3VTWHxpNzBIQjNCYTlCfHNwdk9iT3ZPcndmTD0vajpnXisrWSNmPGFYMGRkeGAqVUMxb1RuOVZoTyZmbn1LaCR9fDl1dWJbYFhweTFaRkBZ''@;'; put 'put ''O15OZVJ+OjUpSl9wRC9aMGUuNyg0blZ5Il4pfUl2Qk1MNVNkSDdifSRVfGA0R0c9QFJVP1NUQn5sI2ZCayZsSkBJRGk+eX00Mi50anE5LEReUFg7YiVwTGRXP28kSWtJVFRDbTZJdmI0SyhyU1RufjVIYkxZMXxiRmZ7bitsPUFHKkxaT2QoalEwSU07fTIjIUI6NEE8T1dxc3IySiUvejJxVXR8''@;'; put 'put ''fEFJbDpoQk1TUXhfXiR+VVZ+VGomRlN7QnFaYyhBSj9KOXdAMUlwb11mZ303Jkgza3REUkhZaSZiSkV4R1lWMWJSciJmVHQre1dBVn5+Yy5bO1IjVGwpWX17KWZybHJmSHlSPWcxME9tMFdbeUpkO3hZKVd+bnEwP1pSfEApJUxUcX1UNFkzbDdzbiFOKz5kUVVSL2I8cDYrejdgLmhfVWJjNTBw''@;'; put 'put ''bHd6UUxjaT9VKmFVJFoqa2FhKWhZWXU+MkckXihwS31+SEwkYko0VXEiZUxVTTFRVjdWYyFZalZ9dld0QFR8KH44blR6NkJVdnQ5XVFvMjx3NyZUQixRayg1S3dsPWUpbGk2Uz8rTXs8Zj9iNFFXX3hie29UO1ldWTo9N3M8Xn5Dc0tQYXFTSV9ZKy9tSlQ0RVIpZ2lzIy85bzMyWjwjdHJ1TE1m''@;'; put 'put ''dUVJcT9ES201eHZTQTtqM0MkPXJpciU0K1BVZV1EZ0dZNTo8eWFLK1lWQjBkMkNzMXtZSXljTSQsaj1mayxkeDo7fHlrZmokLkMkZzQ/biNqMkhZTzAsfjZ6OWVjZnZ6SH1yOE53TUhibmRVSjJmUyEuWlUkYGdRI2NfPUNvRjZZSUtZRmZpaG9uTn5dUlB5SiVeNXBBTXVnN05+QV5rY2F5eDFy''@;'; put 'put ''IUJoOC9tV118bChvOWZPQFgjYlFqWll4MHMvd3c0KmdXZy5UKXQvLHl2SDclQE8vTkJjXTAwKjlZPSheQkt3Xj8hNzxwXnQqJklCLll0Z0R1ey5HPixmZCNfYURdLzJ1VF9aelgyREBDWmFDQ18zMVc9fih9Nnx3P1pKNmwjY1kmbUZZamJKRkxNPW5VSWNQRWV4PGwzMDQ0UW8+Q0wzTzVQJC5T''@;'; put 'put ''NSIhW01HeEw0QGlFK2F5WmUuaHg4dGBmajZZfHFrRy9WaTxgYihzMTdOPnZkRS9zJUhxXVRfM350Sm9odnZyaVgwb2NZb1J+fmArOHJodHtzQ0F0ND8wJFdadyhuSUEwaiFUTX0wOlk/fXJWLnQ6NklXQVUxSU18YGVaXyFjJEZLOkMvQkdhQ0NNInlGek1wISVTVkdXcTcsQFJnYmdnLCY6OSRn''@;'; put 'put ''JjpvcWxPU087RCoyalBYeiZMW01yMCVMTEJ7bXVmZnkpdVhacmA5Ils+Mj5PVVNyYyM7c09ROn4mKHN0Py49L3leaVpyS35XOUclOSRDMTQqSX5SU29WeUNrfFgvOUB1anJnVDtVYUkpKVRFajYuUzQ/XnY1Z3Q7R24mVCFod0FTKHcpSVk+JkpmY1YxLC4weTN9ZDlmMy82JltAXjguPWdaPCx8''@;'; put 'put ''fmlIbkVrOntVRDZgb3A6MXB0fCtfX1deezlyM1QvUyozR2Y6fmssVzokdl5jRFg7P0QsPUZ9bCFzbHkoWHMzRiNhRCR7cUllYVVXIVZSNDZpQSY4JDNCSShfXn5XM3doT3RKfmwoKWc0cyVzeFhxT0ZvKEhDbGJjQlZEXVRKKi4/VzIzJWEsfEJXWiNINEsxRGh8L2ZOdz4zeGwhPmJDUFU7ZzpP''@;'; put 'put ''ZXlrYT4haGlReUBnTmlbQUZ6R0BSc3cle1B+eS84YE9eS1IxZT1YaHZwMV5gKURgayIwQiNWWEpgYT08cDxJMENLXmllLzNpWl5tYndLY0dgLkBgLGVaL31UaGdFWUF1ZzY+OkQ/ezAsIkg+bCtdKVE7bjdbTjojeE5lYV5SSSleKCFWaHE4QTFzX1B7Qm1kLGM4fj5jVzVrMEZXXkZKOHEraXRk''@;'; put 'put ''NlJwI0xbZTUobTw0WkJaR3kyMyFUMD5DOERsQlVJWkNvOE51e1IxI29qRDl+ayltYTVfZiNRLDNiKT9teXR7Sl52LDVoL3w0e3tzdlBKQX13fFViV3Q3Q1RUMWt0fCJAcj0zaENtdCZaJXZoMUduIlN4NHF3IyN1TSl7P0V4MHZLL0Jwb11sZ3lHNFIwYjhRZihXWE9BfElQajVkYVFrL21pfjUm''@;'; put 'put ''LiJvU01DNmRabEZxPX15OzkkbSR6N0ciTGtMRU06WiZ7dzNRYUklfFMzNytjbitJXlE1Z14rIVM7Yjl4JHw+RT1FVXY9VFQvJWg6NlA5Ql47UjBDXXRYJi9xZV14b01oN1pEc2JCMzhedmJdZzpJJHJ+QiZ0SXNpeV5sM09PZF9qcElPOSp4QnVVeEs1dm1nWUAqO0t6bChtPzZtfV8hcXE+YzRb''@;'; put 'put ''bj9qVF11VDxYaS4sNERtc0Q8WE15T3JeVyUpNH5BZWF4XmtwVkVKUzhkVHVgXW94NjFsJCZ1cmVGQGJYb3c3OmgpJDpCK2poY3IpeH1MQ0kvNXYwVH5hVkpaVGt4fihRM3JDbCh0SykkQlQ5LzUiX2JVJU0laH1mInwiU2NeTyQkKCo8eSh+YUN9LC9LeX01Wm9SPmJYQWNheGNZKSx7MlM6fCVH''@;'; put 'put ''OEF2JE4mWW4hM3IpPjpSWT9FYlpqSjRma2RNa0NaP0piajNSNF4+VXYuXj5vMER0ITgqOWJrcGhWcCZteDN+a21VTFlqSS9KX04yMVcpXnNxNjRqWUNIMkpKWDNsaSZVbklmbSlVbXY3bigjRHQlM1JLXmo4PWk5Z0p3VyR1bUsydUpgKGFxZ0lRdDZGTXkjWnBWOmhZLHFGb0dgRUE7M3ZSXkMw''@;'; put 'put ''RUV0Q0NtZSZKe0FzeFglQztyS1E3ImUxYG5tL1NKYm1LdjZKUXUmRiZRL0RSMjg3OGlOOGAjYmRWU2hUcFJBVXUrVUkqb3cmMUBEaHk+Lih0ZlVab3w8VXhhMCVlT1JlQlFyN1JVUClEUUJ6eTJObmRzIXFNMX17R3NlR1F6X3EsQUssW00oPHE5Q2dFdlJ0SyI4Zy99T0dgOVVjQTYkZ0d9Xzx3''@;'; put 'put ''N3RIb2IlMTFNTntAL2xyTjwyQyMlc2cvUHhCYDlwZCFNOFFAa3h9L3FzemAyfkU5X2kyOX0vW0xSb2toLyM9elJAbV93RlJdK0BmQ3F+dC5EeD1eSCwlW2xFQ1lgcHYuPjl0NTw2Wl8jW0dldSg9dTk2MWA2ZlpqVzE+a0dBODFNUHMvUltVW0k1cEttZ2wscF5Qe14iIXlgc1Y1RXtRQUx8fHJD''@;'; put 'put ''NTxiP0hXUGwyZyt7X2ZkfjNadT03VWY6Xz9mZixQW0ksIXgiT2gqajc8aldMbmxTe2NoSkRbZiM4c0s8c0kse0gjIm0/UiFVIi89Ims1OmQ8TjU2fVZKO0NFc2FsWSQwQXdhRSY3PmNaZTRMRnNZQC9COFRVdEBoPlMiY0NxejNBdktNLmFAbmY0RV5CX0pwO1N2byE1c3xPWE1OfGF6V0xiNU80''@;'; put 'put ''SEpRUXt1IUg6RitWIylHbiQqVS9hbiQkRnMlbVJnRUlUPTVyNnR0PDxSS0dRakBUUX0jTXU1fGd3cCVWW1F0O0ZDTnk7flVvNyJXZmEsRTo9UkZ3eWRHKiwyRHpDT25gekU9QigkNHE7by94bEdXQUJ+WXdDRF43dkFqVm81VC9bZlpTNkNmLEQ/fClXK0Q/OCxjKUd1TXxLZU95K1FLaipyVW1o''@;'; put 'put ''TDxZTFF4PDIka10jTnk5ZTxbSEIvIWJVTyx9SW5mSzhDLER1M1ZiekFYUDpIdkxHelZ2Tmw0eUNbVCF9WHAucnpjW35GYVoyY0x6cHN2YVAhfmBtQDx8TFFUL254MVN7JHpRQCopYlpdcHBAang0bWEjUSRoZlEmZTVlT1E0TEQuTXJMfV9DUz47ayojdS40UkEvdGRaUj9rUFZ+TWRGcWUsJjly''@;'; put 'put ''b2h8KyIrNFQ/QHxyV0VefUBDJXNFJncpMlEvcTl6JjI0IWYmZDQocEMmUilkd1Ehc1JlZjU7cUpQTzwvV1IqVXF7Z2U5PTtQPHA2IVFJKHdQWWl3Ozk9L2A+KVFXZTBdWy9HSU8pVjJCOWhdNVhmQntwVmEpQmU7TVomcC5QVlBHZ084YG1LIXhwfmdyNSFNKjpmNiE1RUFpb1FsTE5oV11eazFG''@;'; put 'put ''IkQvOmxTOSEkdz5pbEJbV2VKYjAhKzlNXnxJaU0lKWxrSTclU0JaYzRkbEROM25LV3hdVzZdS1A8bzI8VkJhPj0lT31Ya21hbSFvQWlTaH1+NC5ee0JDNEs1RWNuUSI+c29ESEFLWkVpTTw7Zl8jbTk0O05bRCYpXygkU2xkZWRgd1BLKkw6IXNEXk0hdTBSPS5pJXUpaix6MUFPaXpncSkqKVNg''@;'; put 'put ''M1dSSFVLczEiZzhARU1vdjxDRnVMJGE9QypMSzFTUUkxfCN9bm9sQ1R+InEkWnt0WzEha292VFVTOW9LMj0vb09hVCk4Smd8MX1zcSpdPi5ESVo+eSl7Z2tAWHdZPWBrKU5QcFAhTmdFbDh2dEN3bUc6cCM1cSFHbXg7flYqX3F9elZFQDMlI2orbnUrQlNhJmFSODFILFRIWC5iUldJNS84MEAk''@;'; put 'put ''UTNPZFBXX21DM35NWHtDTDUiIkMuVkx8NTZNcVNNSXNSPGBGO119IlN9TUxvQk53IUpAaThBdlo7NVsocVNlX3giTyo4VVExQll7bSM9Q19RekMwRGVCYG9XZi8zfnNhbiswPkooKytLXTYvMWZraC9wWUdLW3VfN1BvPWgjYUMvU1JfVk15MCFJVnBsNXBuZVFPKHJtJVpILipIbjFGPDgoYl9y''@;'; put 'put ''OHc/W1YxR0BbTXh5PW5MeCFwbzV9S1FYOkB9Smh0ZnV9aU07VVVCYVcqTDJmSl4sKD1BIlgqQ11fK3dqVDNWdWErPEN6S01LKTZAS0VYemB5Im56Y3okdXF4WjFteEtmLHBANHxqYS5oUH5sUDZWNEVBNmk8eSxCUz1hYFNZe2cvcktXM20ycyNBQGhCSzdtQF5XPFFSR110dmtqbjttdyJtJk96''@;'; put 'put ''aXA7fEZseU12cU5NMWhtYzRAMi59MzJmQHBlNSpBUk52c2k/ZUA7ZUlwQzdhZzNmaFo7PFppIj87Ni95al1+PUNrU1lGKkRnYjFXU2s6fntNdEJCLG9CPkBTZjZ7LD88S3MmI2lKR2w7VWRSb2s2YnY3SFd2SUNYUGxpdnI2cWV7REFyQEBXez10LCoxK01EWHNNR1ZaLGxTTyJxWnQqbEFeY3Z7''@;'; put 'put ''LmElPFliJmVFXTthMkoje2pPbmdEP0M3S05UVGZobzFnPkAyPzU2JTttKklpND9yR1U5S3crPmBFPX1LMjh7KDAyXTc2elQjUj4kQS54dDkodSJvdWhRbXRgK3ZJPHtyOWx2WDcpXVI0cmxSUTcvaj5VSUd3NEo9Ti8qLy8pKENsLypoNC5rXjBnYSFtNipyMXZiZltUMndzWzhFNF9wJjFJI1Z4''@;'; put 'put ''Y2dmVG1vKHRLPyg9aUZgJFhKLiYxLkJQQV5VY0I3LHwuSlVmJDhSOjRhZnchIngue1IqXyMjRihfQyxgbmQ9cmxUQmExekEvdDFWamF2TGVvIWBZeTt2Y0BpQ2l7Y21NO2JZK0tIP3JwPVZhUVpQX0guIUVEOXQqdDw1aiZ8V009OXZ4LExbJDNFSzYhMTU/XnxaKFpMUXdUS1ZKWWg5L3A4Ojl1''@;'; put 'put ''Ln1gWm99b3phfjR1ckB4VyNFPzRqQjhdb01iS15nOzJWaGlSQ0MufUlkX0o8IyVgZyhrZnBHJlcyeWpnO2s8QkdARDRkbzFEOEQpNF0uTSU4XTd6XVVPSFVNTGsobFBVfUo2cyghTFd8P2o9VkRyJH1paDhqWERNRDYxaFEkPmxfbWZdRUF+YExjfFZAMzM4RyJBWWhNX25eXyo2WFQvPkJALm1h''@;'; put 'put ''NyMmVlUvemY8YFF5SVF7aWtAajlEVkUjRn50L0pxYGUmUEEzakA2I1tmX31VaTFGVmxOL0BiKkJlPm9fSz8zQ0ZLcUU6Slphflh0M2JiVCJ2WHcoPWUhO1lqMlI/JlZ2Z083OixSeUJCWEgpSiUhaWtDWW1KOzJwMWs1al5IVGdDeXtWekw0ZUVLVW5tSCRIOXNwUUldIlBHRkpqISQoL2dlZzwz''@;'; put 'put ''cnR9O0UwI0VgbUNgTkYze2Z2REhdOCpSWUZhOzlqTm5TYkBqb0BuXmw6RjE5RzBGfT4yRlsrVGdkUVhxXUdVTyZ5NFtXeXx+cyF6UXo3NkE5K3B8ZFVPdlVMSWR2QHNCQXtKX0A7Oy9pfiN1bTk8ImV8QllURXFeKEN4U2owbXVFaDpZU3cmPylgb0h1PGQlcWh3dDptIylKTz54LlRKfl0lRDh8''@;'; put 'put ''JGlTPF56W3FSPGxzSiNufmh8cXpfZCt4N00paCs9bEtkaDRWQH5pYlZwX1dnczRAI2J4QC9jdyg+YTBqPXBBNj5bKWZIempyNkZ9VUksYlRjXyN4NGY7KjljQ0oodndiaWByZWosQXtQU3o9QjUqWHU1L2ppWi9SM1lRNV1MKHtpYFdBbmkyKkp3ZG8jKigiWywsK1V1YlI9eXQ5dTBXbml+YD5V''@;'; put 'put ''RnVjdytOKFlSd2dYQzNlJXRVfEIkdF5NL1duR3MmfF0mZEh0PVh6OUdaeWZ5fUUyWTAsTXk/L2Z9SFYkVVVxNF0vVlFLMkJBJld1eEkua21FMGV4OTdsSXRETXlRZi8xfC4ofj1NYGM/UXdTMyEudCtbO1lKOCs4aTw8ITd7ODNbL3c2cyV7UkJiVmVdXThhKXVONF55PjhCUnsmUGVkIl1xMHUh''@;'; put 'put ''MipxdnFTQH0pUUtKZSVGKUUqaWBANEsmSTV1PH12UkJkVm0pTlVFfGFscnFNQWE+ckkvQ3wqIzxDd28zOD9EWjxoSl0+OmtoRUdEdytbNGg9dl9Tb2JTaXcjdDxEWCY3dSRhNCE4THFfY2BYMiFoNzdCO1gjYDhGOXhjPUVZPDA+QDN6QGpMIy9Gb2pNI2RSeEA7ZVJxQ2JgWSUvfGImMENqc2N2''@;'; put 'put ''bz5udVltSUs9RlFWc3I6LmU1MUIsPF1YSGlhfiUiQX08fDVWeS5TJVl+XjIoKkMpdC5APCxPNUplZ2dUXkg+UG8+JTNgcFRRRTAkfnljNX5BdHFiaWZqdm5rSiYlYzlPKnU0cDhDLENRbEFUPXolJiU6Xm46SVVgXXU2S0VOKHtjV2lmWmIkazNfWV9OOGd8UmguJXt7a3Z2JTRKeDQ9OyZ4Sz1H''@;'; put 'put ''Q2coRChWNUg7enQrTj5zQ2pfKj95N0NlWkdufkZ1MFZiLllXRXFOISNKdjkwR3BvMmpXMTs6Z0U2O2RGW3RpME9qRUBAOWE+OD9rYj1WSVJwRzlaVGBQZTo9bHJ9W004M1FgM3wpaTFYJnA3X1E5OF0lblI7bzk2P21RfGNiRSRAXVVOLy4yI3VYQWZRYF5DVCtneCNiW2NnVSs8biw3MjlCSTBu''@;'; put 'put ''bXA4UU83SC8oM2hBUXR1Ji9fQWlLW2hkRl5QXV4hPUEqTTdbPXMiYy9lPT18TFVOUlR8fip7LiFfRkpQRDUjOTRoKntTenVbbygybWRHSH5yJnVMSjJBXiFzMUszblR0X0JhU1F8NTdoJGA1K0BvOHg8ITEiRDdQQjNrXiFsI1lZMnAubjohPm9sR3RweTtMdyVYWlM3WlJFbkM/QDIofU9+Z00p''@;'; put 'put ''cyRvP203YHBIOVZIUyNQWHRqQ3V2OnxkKkVZQnZjQ3QqTmQ0XWFGYjJUeCEjcDpiOX45YEk5K3FsUltePXxMZDwzKlcjZl9genMrZkxRT28wNTQmIkE8R3YoZzpyLGxrSHRUWytEXzIqX0FsazxwI2tIUVNSN0xXTSYvPktbSnUkQlc3ZTMuc2FPSjpOTTFHLnU6KyJDKWBmOyReQGBXcDxxZCNG''@;'; put 'put ''VGYsaSMsaHcvcGZxVF0/UT9je35WWExoUCxdZU1dd2ZiZD4oI09JX2B5PTUzTGB3fCZzQGk7OHUpYFc4JStwQ1lTUXBCJikqaG80VFsvYD0oO1t7KDZuUD47JGo+Si4pQlZ3fT8+TiRaSTlRTTFVTGtdTzRKJlA9KGVMVyxwfkNyZGdKI1I4XV5ZRCZpTE06fWpJKX0jcVBNTC56NWdoNmchbkRe''@;'; put 'put ''PypXYjJlMl5HejgyYHk6Uno5NjVGPlNjTmNKN2trYGpmeFJmKlZwWm5jTzdaYkgubGx8KnRZbildaDw6eXQkKXlTOFE7LEcqUS9fS2xPUEhTPk1FQ0AhOWIiWSw5bSh3Xig5ZTJkJXwhST0jPWhNP1ZpMnIxfUBwJGZ2fCJGbD1Ud2g6MCkoYChpbXZ0L0ljUUljVD0ufnN1NCQsW3Y/eUVBPlFC''@;'; put 'put ''aio1aF1dQmdIY1ZET0VAQWd5PjBydTk9JlUhQEQmWG4jYk1IPXltdzAoKjFHUHJUbkpLVikiaSIvNHJRSU5LanFgbWwmeld4ISgrUVA7ZXJJK0s2TklYRUQpcC5eKnlpXWl4PSFocS5GJitEVlpDKWVUe2B5aUkwVzM1bUNCbS5MWkciQ1tMa10oKHkrflF2cVBlVHxxRGQ8UTIyMVVpWkNmQkUs''@;'; put 'put ''Km5MTiVVWy5pQlgpP1dzLl5nTmlbXk1ycHJ2QFtvbVZSfjtIODpdJnl6XjIrUjtfPzJOdUMzY0l8TURuaywqWDpJfE9NL29AcE5NVyU2fFRjKEw3e3lXYV1rRXo9OztIMG8pMCttIkheYkJ7XTY4IWJEdkMpcypNOnNsQiRhI1B3R04qWGhkMS4uK3UocU1IUH05NDFBazZub3c2R2F6KFhIPkZg''@;'; put 'put ''TkZOfikuT095MHI1TylPJWRrYmFhLjJsR0ZRIkhtImtMPkVvUTVXWSt4PV9MYnRNWHdQYHFVNHlfX108T3BKODMzR1Z7W0tuaWU8Unx5YEV6SWdpeldjOk9lITIxLDk5Ym91Uz1AdDkmOGskcE00QC5LaHgvdVMobiJLUyNyPyZIZypgQlZASWJzc2dGYChSVio7eGV+MzNHcTM1R0hWYnRqRSps''@;'; put 'put ''S1gzYlFZbGZTZVB3SDJBTCVRIWZOWzJIPltfeCRBMWQibHBEIVl7RCEwTTtgTCs7RDN2VzYwJFB4bF9vLD5GJH5keXE6SHVMTjU0X3RhJGxUPXFjUjI3Q3VnYzlDaXxQeDV4ZTdGVDZKQTJZdjt8XU5zbHdBJSFtclR2IUlFV1s1QTFEPlpqc0hkZllTWEx4VkkpWSRZXjU0eiNlOXc2ZVl1Kyg8''@;'; put 'put ''eCpkb3x9VVlbSlIhciFQYyN9bC48QVtnNEdNTGhlSjQ5RWo5UUBRZ0FbWmQpTVIwKjlWbmZmSz40V2JaWHUkPVc8P0xLNldCQjIwWD8yXzB6bjVjSz8wcExPVFEuRkVlJmh3UiN2SCUxVmwjc25FejpfcWF3KG11Z1Usc3gjczFpa3hNeFdLJDdBSVAmdyUsMEQuNE1Jd01EJjJKRX4zMmQ6Xn4u''@;'; put 'put ''Iz5IOWkveXpAQlZEemYya15QNE57eUoqSWZ8Rl0xJHQ5MUleM0JvZDluI3xNSVtCfnpGMFB3VD5BJlBxUGlHbFJOPW5aKGVhVVtpayF5SkVRVmFNS1MyfkFKOCUsKXdpcGFtdj0wb2glZWcwIV8uN0EiO0BCQ0RVezNZdkhmZVJaSHl4Vy5ze1lsLDlMZmh1M0VTUmA1ezVpblJ0aS5PXXhLaShz''@;'; put 'put ''cShOZUg7SWshb1F8cGIzaldSPTVXQTtJdyhxTCNqPGZZNkJkLyp9JlI0W0t6TmFkTFdmSiY9LzwyfHx8cXhWcClCaWVgRVcxZVZHN1t3Ylsld2wzU0xIQntYNkNiQkA9U29majMpbVh3Vz5dM1Q8WjBOYGxhQCx9MX13QilCcV5YdSVzez9LTEpMdXNWSmAhZzx9XmwubEApT3c8R1srQTYzKUk4''@;'; put 'put ''O3lNNzU4c3htNFo3RSJDTnxdU21eRUMpczRyNTpaMTVDUDdfUlM2VGdiO3dkWFNGYm1PUT1QN11MSFY8fSxfZGdEKW9+TTtQdHJ3VHR5WDt6VmFgOUxac0wkSDM2fD0wKlJAVyNmeytGbSFoTGttRWVveEtOM3FKKnRYKDxzTzpNUjhJRHZVKjxiTWdfK2x0aT1WPlFZOmQsUUQhd0V2UC9ZcU43''@;'; put 'put ''V3lCW05ramtEPCx4UCxDcGhwTV9aRl5LWk1IY082JVVvRFQ5N2NgXndyZig8LCtaQU82TThqKCUvUGxjbSUqX1ViZWUsJS9DbiF1Y2UjamEhUmslZXVETiwkKV5KXmhOIUdGT21rcHZGdWpmVVczfUVfUTpyZjlKTF9aek43WDgxUn1mSCk8PEZGM2xpe2I0S29mdztdKCJCZEV5MF8yb2lWRCZU''@;'; put 'put ''Ul96PnQubyN8U2t8T0UiZWViQCg+fE41V0IzYlBnOlNIN3Z3XjxzNUs8UX5bZ3JGOEJkXmFjdj8/KW5RLjF2OUh7TSk4T2M9N3RvYypPezB5JS9zdlEkQ1h3d2pCUlQ5RD86ZD5BRDsoaSsmW3QyR2xmdiF0JnteN10yTGtGTkFmKHhDTShYZTg6YlBqenw7dGUlKEx7KFVkRiFhXi9DQEpGfGVK''@;'; put 'put ''VW9aKWI3I2I4Z2VYVHEsJnFBQ3whVTBzLDgkcDNRTUkjJlghTEFrJHchZ2pzbENWa3MrXVZCTElRPGc6JU42ayoxYTpOMm5SUkhKXTJvOjM+TjFDfnpycS5sQCRYfDl3WEplOXUkZlRgR2kkNEhzKTlaYlFnc01UWlIsNkFjQE5MRUUjZ2cmJUlvKTVDWWoiPHNfQSpfOmZyRHtpS2RKdXwsLzY/''@;'; put 'put ''W0FoQ1BaWi83Q15FOWVMcXNScUt7aDshdzMuTlBbOCpLRH4/UkE+TVBNcFNMd0RnfnZAbDRAWzk4a0pnWHVRdiR7U0k4M08lOn5aLmxfTEFWKjxnVV9CKElvek9yIjJReTpqcCk6a1hIN0F1M0I6X0U+RGU5UjFQO3Q6eDdTZEZOMjY5Jm96OiJSUjAwfXdaMXEyb3gwbVJkTFtMKjsrR3w5XkMs''@;'; put 'put ''PFolKjRhMGZtU35GVmZgRE0ycTdFWjpeUShCJTkiX2UpTjVIR1M9RXB5el1tNUc0QENzT2dteEpYNjkhMFojTiIhN11tez08RFA3cHlNSXtgeCtmPT5aa19ZZC5dYkdHWFp5ZipyNz5rcHIsN2YrJn0lWD1LPWNqZXBwcCFNSVBHbDtjZkg2aSl0bDs1cnZTMjRIVzBrMCV4NCFXWiJ2KndWanB1''@;'; put 'put ''Y3JJWjwsbWN6OytYP2B9QDhjLFRIX2ZMdyF+dkQwIithQVFySmJWcy5SdnReR1pgQHM5SV1dcHd0VXUremdefGRwd05vVjM4JkZMcXhGbk5sTj1fM09eS2MpOFVBPCZGIkxNYEQ+flk8PmJ1SENUdlpIbSJZeSlmUz0kMmJCMkglNGZ8ZVV9VVArUDM9XkYpYFhncnY8MFU4NX1LI3A0L2ZiZCso''@;'; put 'put ''QFQkPTt5JWkxVUsvN1dJJjdJYTFrdmRfJmFYSGEqZmZEZnlpOiIrIlokJURTVGBtVWhYeiR9YXBecnI3Izg3TENFbV1XR3x7OW5ZKFpVODEwZGBqNns2eldzVjFbN2sudSE+WlU+VWFPJE8qbFtLN2UhSns7cFZ3cEd7RjM0cTBbfVAqVSIqdH1dTHU7czdlJGhzTkQsN1UhMmA5JjYsbX11MVcq''@;'; put 'put ''MztPYkZncShjdG9GUnhSMyU0SmB+bkMmJD4lQTd6OEIpdmhCSWhKRithO3ImZld0eExmX3haIVdbNUxPMGl6KUUrOzkpLGlFQDsmeHp2MDEhVjNVYnE4OHhASl98YUwoVCosYVA8JXAlTVUyRnl1aWdDQTI4I1s6JjFZTihXLEhDVCg9U1lfL30vQ3k+djFnU3lYYzNmIT9qYD5zVVM8Q0IyXkok''@;'; put 'put ''YVU5WGdqTy5HJk5yb1JKdlV4MzNxR2lncVpTIzkhanZqVz9Vby5ib2V+X2BSaVJSY187MHlBQHpWTn4vQioxMmxEfGp+X1IsUUVmV05BLmVFeDIsMFksWH11NFV9On5+ZSJ3MFduJjlFWil8NXwpZV5Wcz9PS2VxUjJ1JHhhT1dKRXZyZ3dtYUIpRFl5SnI1aiU3e3s8X2pCaXhTcWY7USN1LF9X''@;'; put 'put ''Wjp9SytsLC5ZS3dRLkN+QkkiSDxANnhGfS5sY3wleERiN3twV3ZGUk5SWkJwKEA7ZV4hN3EvJFJCeT4mSUs0Oy5ZUVdgPVFPanpFeChiN2dgQlg0RTh0M0R5JiwwOlFyVmYpSElxZi8vMT1OVjV0VWNVeklKRFJ6NDZmPmZNSVJzIVhQUUJbTDlpeElqZGBWYkNnOXlbPTVUcjYvYExLbFA6OWt6''@;'; put 'put ''N2BDIihIQnF+dUN0R1FOdz9tcHI3Iz5tRko4YXx3IUNPfkhQVUhiJDJwUVVAXkUsLEFZQGQjRk9dQz9vdTJMNkdRTjdea0JWSTMvbV00THExPlYmNWNte3twWyxtbHBXblZLLCRSKXNbfXspKyVuSEcuTWtSPlNFaTZ5KmFkRGVkcmxwJilIXnQzVWo2UkRIN1NDdEdCRHN4aV8pV25Xakt9R1Mx''@;'; put 'put ''WGJzVWtyaVsmVC5fOEw8UUo9TUY5dGUyfSkrSXFvNUVLfVNsNltVVDowOnMvb1VKajdXSVpPMntfIVZdZ04pVWxDNG8pcnczIkMoSWBPI0lHVVJTJTR8YjVlKzB4Nnp5WypLRSFEMlFvdXJoUXcyX2R+JSUiY21aR35zJjZbeWt3bEZOUTtQcihTNHE2eGw3XjErY2hkQjZ6cDYzYUwpWDkvZmN0''@;'; put 'put ''O14yWjlqMjc1bVZfU2ArNUt5WVN1dEx8SD8yUWp9OlRMRGwoZWckZkwxcU16S1d5d31Odiw8b0E9SzpycW00L1BnSkY3ZXh2dmciX2Y/JC5UaGR4JTszXyY9SHIpazE0PFM0YSRYImY8aWoySDA+Nyo+Ky9GQnlEMyg7ZVsoeW1nXk91WV89b2laaCtUODhdSi48SzA2U19+Tnx9bVtFNzFLWTZG''@;'; put 'put ''SHMiUmQvSVh8NFQxLndRd0Q3IWV4JDI9RmAuPUNkUnx2Q1VmOl5KKmBYXlAxeHlXTntpYCN1W2BORjkpPENjJWZ7TmV5Yn5YeFkuPEo5SE5rPENePDl7MWw2eUMjdyhwI1k3ckRVXSN1Wk9rNkQxISt1UjA6Jk5ZSlcsRFh7K2k4TWppMWMuZUUxTSVbXUlEcDVfbVhxU3swQHEuMjpzSD5HeEFF''@;'; put 'put ''V3NLMWQ+XkR5dU83dW4pdl99PShEQz1pSlB4VCgyYW5hP1t1akVzemQmeTN1dHc1OihqSFMkeyhnSH5TUFZkaDwoS1laOGxxR3l+V2FzNjR9TU9VJGxoXj9Qd0c5bnJ4KSRNLi96c0MsbU8/JF9DZV5jUVpAYyRmKTJefXFneUkrSWFOSltTWXJ5Sjw8RSRJcCJ7VXRsfnVka3xHLGFxdHRTIXFI''@;'; put 'put ''Wjh3cVlRYnV+fEA9LkV2KWlee2Q/MnMwPHRMZm1KPiYmOkFuUm9CNFIzaXUmY2ZjS0BjJDlsV2o6TE00YzI8Z34jMEB5SiZJMThQKzx8QkBpfThrOGZ4byxkaGNCZUx9TVBwXitWe2xjJT52eUYyeVlzckxkZkZ6bGtNNztaYGAsS3t4JD5+dEYkNF80d012c34uOE8yKU5pR0AqJD5KZyg/SitS''@;'; put 'put ''cUw8LCYoIld7eXx5Kl84KncoPT5WRGZ4fStqOFtfdTgkWXxuUTshbmlbQmZBYyQ7az5Xdl1Fd2JjMH01OltFTUpZPD5HMk1jS2hXT0BjWiEpaTwzZ115OH0lczd+TDVIVyg4VWBLcXhbW2MyS0AlckB6YEwuSCMsMkNfXTtHT043PldjYFNEYVUyOiMqOC8pd1k3K05pTGV9dTpockM6RSUyOEdR''@;'; put 'put ''MnhGIXteZGhhfHMpVDpEWH5+fExwPzZDZklwXi99dl9ZVzxGXmJsXT5OYGFHLnkwMCFkPnxefmxtMlkhSks2W1RiSjVBcC4ubDUiZj90QkI7aHxbU0JjbCNHNWx6PT1WaGt2XWEzTzlKQTg3d1guOl1UckZXZ0Bvemw4M1RubGdkLzQqfWErOH04Q18oeFd8KmZTUU97Z3ZFKnxYZU4iZzpPRWYy''@;'; put 'put ''MVtGd118NnYoKCRyQHEvWC9HMXFfUkgiMFVBJXdONU5tcHV9cVpgeGBNcSZCMWt5d080RFdoSl81Z2gzakxKX3FbeltOUkg2bmp8QmhOJXUwV3BfJXtrcmh+IVVUbGo4Q3xOXV9tS2N9NXp4Z1FEKVgrdUhDXXZVTzJxS11IPixOP3UpYSlYVkRLPDdpOTRWIkkuJj0yW200QnZnbi8lW2RwdU1L''@;'; put 'put ''dUt6VCo2VFkuYkFJeUVOWH5gNj8qdXNmWkw/UWN+bElzIVk1eENoekd+eFUoeENgQW1pIzojOU4+NnVsUn5vVCZhMHNSZ3AxYHZ4bFZyZEI5VmVufC5IfHI+THcraiZFXyQ9PSxSKnBWejF9ZTx4Si9EaElRYk5GKkQjMTp0R1ZiUSNVZFg7PjckQGZQaj46ImEsP1dPUldofHV4fEEhRmVKWCVo''@;'; put 'put ''NzFmMkBEMndpWG1pVVp8KFdJLFgrNGJMbVMpUCxgQHRCJDU6Sjx+Vj1IOFBmUV83a1tFMjZCJER4SFBPXnIyZGBheUJVLixqY2clVDt0I0RzLnZlOyF2WmplXzZeQHlxPmE3NS5RRD1DNHt0T1hzdFpGdi5nfUVtMW5Eby9ZVGBXcmFFVnF6aDVwNVc7YF4jWEg7cXBkM0tNZXpjTl5+UnxBWD9x''@;'; put 'put ''Ll03InxoUStpRUdBR2YvWDc1NGxueE00ckVXJnApJHdWY2Q/RyxHZW1+fDFlUXkke3hOLmZSLj5KfH1TRHF8IztaVF1FM3FYUFNeJileUXI0a2MsK0hCOWNjRkZWQzJLa1ZYRWMkSmMvdC5YflU2fig5e1d5ZUZdY18+fDNHOXdJeFhBXk9JSF1dPVNGKGQ5PFckKS9odVsjaSk1Nm4pTzBWV1Ju''@;'; put 'put ''NWBRdVkueTs/ZGZDMXMhQXxeQEM3MiM3KFQ6enV2Sl5aMCU1d1pbU2BGQFJTMjN8dnkmbDQib2FmR3VUQUNQbmxuJURwPUEhVUUsai45ZkhCZS89Lzxxbnt9QHNpUFtTeFt2KFd0NS9wSSQ8LiJUeFY/bWRxIjFOSVtYYHA5dXpHdkhVYzs/VjwvemI+Ji9NTHpmOjAra0FZKTQibz5Vd1FnUVZn''@;'; put 'put ''OSs7XXlYQ0Q5ejpIS0FWS3p3IjlzTl16XntSRUFKZHZidEI/X35vYixxeVgmVTA1M1BtJC5xTklFWjhLQnQyNmRafkFJZlgpNU47NDdWelpMQ01lXVIsbl9DZnFYMWZWPV1qOURMSyV7K2FScCxQMWs1I0hVPEQ9KHtVY3FmSU82VmtXMk5UNis/K09IWDg0cH16Pk4wfGAzXjgvVV1+aU11Iltu''@;'; put 'put ''biJSNTFLPWpgV2RIbyVYR1tdSSMuW0s7IywjU15ySX1+dSsyZnFZb3s3WCtFNVhHKFd+Y31ZI3J9PVJIV1RpZE8+dFI7ImlMSXM6ZnBUciszWlRMQ2Y1ak01PStda2V9UThucF4kVmh7QDlYdClvWTJkOk1TNzBtNmI3R0IzJS4/S2V1dmlUKUxdfDxTdXRNVyhETTlsJX1JMSF8VH1RQWdkTT5n''@;'; put 'put ''bjFdWjNAIyx9aj4yVWRlL19eejpAZGA3aH1CZzNra1hqWTRTNSt6PHxLfCl+WT9sdThoNnVVYS9oYUhrI1JWbnRpR047Yj9yNV9xYGw3YG9oREk8OzNoSlEsKEJXU3QjXkc5THhHeDJpUVo0K1JXd3pXVm5gMnJ6VkluVXA7bVh7OXBqcWgldDcxMEk6dmdCME5wTzJVdkpqd3NuS346akM6bl9X''@;'; put 'put ''OTJ6OjReKiF+OjhIXWRIMSx3e3Qxc3hrRTRzQEMrVnEyaC9KQkFDS3BKIVNDfVI1OTw4WXA4Jk8kb0J3ZDR4QkBpV2RbfWJifjF3RHpLMEZ9aEBRekhlKUwxfDluMGhXcSx7KCFsbGAmPDgjZnA0ZUtUKFpgMWBwXmskaGF3Zm12PHRyJTN1PiY1WStfRTZVPTB1XkljVWM4QSRiVToqVCpHbGFM''@;'; put 'put ''PVBnTUxxKUcwXS4ofFl2fnJTQVt8SixXIk58ayZaIUYuTFdjNzg8UllRNnkzcyFmfXVRXVg0eCRWVldpfkY+bGlmIjE1VUl9YSZhc2VzcEI+aFttfD1ET3ZgKkJjYEwlMndZdDBUX2QvQi8wJkJiXUx9XyN8RilxeTs/blIvQXJWbH1vbDQ3dixyXmlwfUdxQzJadFEuWGRvOmQkZ0dzSW5KZXhb''@;'; put 'put ''YkhSMjJZMCVxeDBEXnd8bDM/aEpzckNRZCpdMm5gdTdONjRTJlY4TjJ4fXJBbD8uJHY4aF9ISExgSCQ9JHtVQE4pfkhYa1Y4U0xqcENKTStPb20rMGA4Q2FQa1g5QTRDaXVoYi5zNi8uJXkoTnx4XitTbWpGdjordjdIZj1pZCp3cHYvdWh4d3tgVGBqXygyNUFIPGxsJkB7TiMqWiMoZEBSNmVY''@;'; put 'put ''WFVmSCJHW2cvQEJTUVhYWnIsJG9WMjF4d3w8SjsySyFja1JhPG52cnNqbyV7U1lNPnNTUUw1W3AoSXY0PDpqYn1sdnhOJTdeL3lFVXhPNHhaLyV8eDVGYGshRmE7NE9nQChrdC9aKitXR2czTkJRUiFvd2p+PDlIK0VlRFkvfmplLlBPQ1pRVSRHY2hDbn15fmwyb0FoYHFlUyx8OVV8bzEmeEd6''@;'; put 'put ''PHJsIV8zMnFYaX1dSzFZMXFVRUoxejVTMUN7RkpfdTQ9emxyaUJafVR8bSY8bDQ/WTAmZV1XNiQ+d2N3Zjp0SHZGWy9LbnI7Wz8+PyFWYzI2S3omMiM9R0R0SEw8RjpaJSFPclhyTmdySU4sUEJKM1NmQEQpd2I7O1NMI04yfVBURm17bXs5dEQ1JnprN2gvdk8hcGBiPS8lS1ReSjY7amM+V19M''@;'; put 'put ''PDlCe1NEOTNifHxlPj5tTCxialQxX1o+JUhUbSNmQUUoYi9RQ2lbdDZwNjJfYX0jRXVddE9KZHY/bURtdngyeC5sVjVJLjpSPVQjbCkoKGIiaDhjeytqaElBUk8xJjEwb1taVHY+aWY4XWEyKmxqTzxjaD1JJDNzaE01VGVuemNZa2JkazBZZER7ZHYjSFsyYVNJOmZ6VURuXzxOTk5bdm1dYUhC''@;'; put 'put ''Lmp7RCFwNiVOZzFMallsYnpsa0UzZyJ+RTM7cEhkYzM5X1ZCUiR0SEkkeWsvZ11+NGxbV0FjOnFKWUczfCkzJDpXUXlxR2RnYzFJSFRYZENHKSkqcGx8U21oZGd8JH0vYXhzcz4wVGNrXTFwTlJ1Nkl1aWF8THdKZld1VElUJExPMyY6Ml1YPExLcC5yYTU6aDU6ZVFIJm5+SihZY0E2U0JDXSZf''@;'; put 'put ''ZnRPKXdvVWd6SSYxU056P0grL0A+OCIsIT59OyUqPWFvbipYNll0PTMvS0ZLZixRKl8qU2JMYThWamxOPSNVOnd0Ymx9Q3RvYWVAISM/ZHUyPThOMjFFUnVga18+bT4vUUMxYF83fVpVLjFVKjV3MGQpbXRZeW17VEchNGQ/WlA3THxTPCN8UzMrYzkxSTVJMFZme3o3blhSNykuenMvPSlsYi5D''@;'; put 'put ''bE1nMktda11gPTZuL3t5TTdqKlUlSVd3NjEwdSoxOzRAOlpHRVkxMSkpTV5ARGBYT0teYll7Q217VWBKWUlHKVpXRCJ4OyhYZ1dRJHEpMHMhajIkdSFKS3Bmbz1rOSxSdTssQixZaUFnV1RgSlp2cX1gXWtCfn5YIj5BYTxZL2lRPCMsaTE/WHooKD5pc1MxLyFxOD8vSVNpdkpjPjt4XiZOXjxx''@;'; put 'put ''RlJPJWt6YEBUdGNBd2EuIlRuS091V1NMNSVGb2BaWCgoLD0iUiJ7MGdFKlo8VHZ9L09NOThKQzBsayowYzBzZz5IOjRlLldLNHVpNGZSX1F4di5vKnxTWysjVERaRG5xQjlJOlEqaHM5eyM1bVYzdFtCekw8UFoxKGtWM3E1O2pkVCpuS20pXlsrUisjYTZxdHpMVF0lVzAiR3x0XmR6WSZlV3xf''@;'; put 'put ''YSpieyp8Z0gjZW19Wk4qU2AjalZ6VldLQkoleEAwY20pfTkvck8vKit5R1pnWyxTaUAlTkBibD4ofihVMiUoXT9lMmt8eU0vI19yb1A/fVFnQDJlX0FiYUslenpbR2YuR2hRUTIrYHtJfnFfOThtfHw4XW92KE55Nmw3UlEzZC8jOFNbIWpaQjpROCRTYkxJRnk5UWUwfHY6djdqWm8/YlFAQCM7''@;'; put 'put ''S3QhQkssYU0kMEIwLD0lSi4jYi96SFAqSV1uQ04ub2s3ck9GTmxjeVNOWDkhWilZVClQO0xORW1gKE8qcXBkfmo7I1hfMz4pRnMlT1Buem9OUDIuRCtNKUlgRlRxOShyfjsiRENVWEo8PztjJnVzT1d8Z1tgejJVKGtFVlksSmAyWl1MRTYjR3xmQipdWjY+LnpoZFRYa3tMemdNVjpeQGtFbEJ+''@;'; put 'put ''KSY8en0jXXVsaW9bVDVoUF0uOUpROFFTJWxHRllfS19sJDRmOU02M1oiY35gVlBfOHZFKXphWHQ2eVd3e192W1FwZCQvXTR3KE9tL3gvdD9dNkV2TXEyQz99UTZ0PUlNOkZLcnkjU14lan1uKUJ0d0kjS2xlc053U0BBYUckK3F1IyNUPy43cjM0JDJmV1RSOXlaIyMvL0pEQEJLPmMxSz9hWFR2''@;'; put 'put ''M15PRFtaZiQuUEo7Rl1nXXklOjJPKmdXfXV0MExaWD1Xb1JxRjtVI2VfaHhtdy98YkI+MFYpaWtubCJQIllbRnN5KmY6TCYqZjVxVUFEM1VVeXxBYm1vQCtsdyIyL18wZ1l2bShXMltFeHZoTG1Wa0oyfXMmdGoxNj0uVH1MLj1ocHMrKT4zRWdRSS5RVTcjMjpIYGVCX2s8VnhLIW0wUiFBZk5H''@;'; put 'put ''dFBiOGBeWGJjKzBZU2l9P145WzdyeiQ5SlsxZyFFPDt3fnV+dExWTz89UEpQU1B6O0kyT3s2M3E2Y05VNSF2OkYmb2k+XjYxPGVbZUUmV2ZTLHlpUWlxN1s2b3NPRl8xbHB8JTJeWkdDbFpmfmNoZy51WWNFT2JVUHpCSzY6fXs6JURBaURSe258cztAMztTKisrQCt9PzdaViQpTVpvb2ZyaVF8''@;'; put 'put ''dUBDPW5geH1nSGtQW1htPzg7TzFNP183UVQuJTVJMjRGbHRFMTxWZVoxc0xiP2FPU1k3SjtYXUZ0e0w3VSEwMi5zVWdgSD0uN1diOXtZWlRnMn5UNENRfl00Ny8oZF4xbzd0O0B7bXlPYTF+RzQ5NXkoNGppOW1WVn0ic0BpRHVmLiVGNShraUZOUVpVN0lYVlR1VFhIamBSMG10eERQbXRfQ1ts''@;'; put 'put ''OH5uRVp7ZH5nbFpXMkBvJmZWd1U4NFQxUVM/LCEzVzF9P0IuN3J9RndRPiR0L2hETENFVyFzWmIxQTE5PUxyODFfVXFjWkVWaG49WVZPcnBAaSV7fWVmUW5kY0Jaay8/cj9qODVTKTZoOnxKeXxKcnVNUyE2djFXa3ZaVG5dbSNPezFoPHR5SzZzUXZONzNPQChma0hZMW5IV2tSMXdgVFBuMnln''@;'; put 'put ''dz4iNlkoT14sZzs3PEgvNGNhVDkufGl5WVY7K0Q4WTYiOixdNHYrPWoyP2I1Sk0+LmZ4OFkpOy9EVFlELj1uaG1zWHtLaT9FeW0zSmpyeXhfaj5wJEBMc218KFZCSnRSVkl0Yz8qe3hFdmN1SltZPXN1UGpvazZAMlMicFFDfkBfS0ROTz95VyNze3gzT0pubzYmczBQZlpwTEB4ZVFoWSU3Snpe''@;'; put 'put ''LnJZWSt0K2VTI2tyeDA0UXFUJmUxbFk/UCJqUkZUM0clUl5BRnl+KlkoQEppRjdTcHJxbjh2XmMvQ3FKK0R+T3J5dGlBbTtrcm5IOTU2YVdKRnV1fCt9Wi9UYlo2XnVKNCk7bFNQfUxAXXlwcSJNeDVeP2kwT3BePUF4RjkuOj8oTytLKH4pJlAuREY5N0FPXzdTdltIcUosQ0x8UTBZfGdgXURm''@;'; put 'put ''SyRAdiNlLmssdyg7U2B7fDdFVjNOVkIsMlNWJSJUeU83W2RfSUJKMS9RdUpiVjw/eXJ2TT8wVi9aMWRRQG47bn5tMjVKOzZgYGhmQF4mWHZ0bW1nNkwmR25KX218Ik0pVXhTN31tX11RR2NbSTlgTyNCSSphUGlgVnJ+dFpfUHU3ai56R1FrUHFFRWxvR3pjMHg9QzVzNnYhXy9Te1p5Uzp+eTBF''@;'; put 'put ''UmF0JTlTOlY8TTVdNTRqZXNTUEpDczR2JWciallLT1tNeSEiL1tyZlBNR2NNbXhkSGJSMV1JZ3JjciVWcE9xNF4xQXFCTl9RemFLUChFcHhYblddamM2PTd+bVsyY2E6Jj9geWxuOnIufS98ckdbKyQ9SzdLLi99ITVwInx3cGNOdlIxUWs+L3QzIjAvYHUzajwuYU9XKSg/QG9QRkphXip+SiVl''@;'; put 'put ''M3g6fTs0R0pYQ2NgIUJUUiMxdl0zST97KzFkc3A9JCRTTSJgaW46RTRZXlpXNkpsXyY3ZFhnRU1ON3c3fU59KVA6a0Nja0tDWE4wYHd7eiV+byxiaFl3QldnQn5UdzFLS2d9aFFJLiUhWSEuXWdoeCQvYUklISZ8Lz9dNCNxVEAqIVptK1oudERJLHdGcl9KRmZrIXNwaldmSUB1TjNwPz0rZGpf''@;'; put 'put ''NDF6djljc1tNXUVQKWRqdnlydFljYDtJJV4jfXw4aFRfN1AhQmUqW15NJktvJjlWNUM+RWYkbEpfc0crSj9qVnZCW059JG1pZXpYSSFLWT04QV1rfEF6a2dxPXRCM1A9U11RW3QsYER3TlYqQXE1PTNBXmNddEx9eCVhSSRfRjNKQ143Pk9wXXc3Z05PTWJ6dT1vZW5iP3tgZWlBUUljTGZ6cCZO''@;'; put 'put ''djBfYWM4OXF8dF1NTmBNOitZcXprZlhseyZyNHNWaj8pOF4yJSZSRWJOLGg9NzVYbVNyZyR6OUpjQVRxd1tMdXxxaE8mMlRNT3hIbVBgOWtrMFZodUBofDU0MTE8JD5oU1A8PExyPDgsbU4vWlYsPldCdTdSWl9FbjpqWlFjIUk3TmcxUW9bakVRWUdPMFNJZXspT1FDbUV0VGUoLFBzcSliRiMo''@;'; put 'put ''RkcrJWJOI0xKcTMlaE4vazB7Vy4xOGhReypGfVd0U0Q5ejg9aDAhMGJ7ezhGeHMiJEg4fG1zfDVuWXE1ektHNXZ2bnppZm42N0I0Zz9kaTw6JWd0ZiZ4TktwNSFjcWQ6Sn1XVkpDdE02SmUmY1E6Wi5ORWpEfF9YLHU7Q3UyTUQlPDhCS0tBNEldeyM7SlhXQzRQRWJ3ZUY2JDNdb1tVZkx4M09G''@;'; put 'put ''SGZmZlUyUF58dkhCMSQ+ZCI/S1JdTE9WT1ByMiNZbGd9YzpWXXdfPyU2bkUxdW4lfjpMazhzZH02YFEvSWx8KWU/WklkX1lESH59ZkFKZGMxfDJwdGFhaC4qN2NoaTFidCp5STcqUiNKPnt7Ymo3RTplbztpQXBISWwqdX1WcnBWS3dVP2ZvU0xFMD1IW0s2YEliRj8mPFlgSXJ9OlFyY2RzLzcj''@;'; put 'put ''fn5JK0ptY2R2S2sjKFBKJGcxLjwkM1J3KkwqSjtUMXV2PH1gMUhYTiFtIkw1KWU7Vnc6Q2dqPU8rPWtHdVQlJltBKCx0WD49PGZZJVltK1Blc05YMShub3FbUDRIPXd8LEJfRlFTOzU0dlloU0FmN3Z0PF57PClHcn1ARVJXeUVnbSsvKXIlUHA7fnpNakcuLDxreCp9bDtURjZxPzMuIyZQUi9W''@;'; put 'put ''NSRuNlN7eE58RHlSTXZyeCZFQTBHNGl0O2x9fCVNc05PeSFRbFEpITgyeTMvTXV2OH5hQCJtQjRFSnp1cDBDRzMwQSoyZ3d6c1pNdCU+aHlYM3dIYS5OVkU+fVo/UClwRHgxN2ViTll4QzR8PTlKVWN6SW08aVgrYHBTN3ddP0t5aylLc0kuVFQ/Q0VDSVdEdUp4e3VfZ3h8VSN7W2V2Xys+U0J7''@;'; put 'put ''IWcxUVErOikqK0ldMlMuS2J3K1Y7ODgqQC9YVzRIUW0sd2dSXmJvVXopQ1R6JVZ4c0wrZSV6a2lkYzxGWiMlZHFFO3JtaF4wL2Q2OFZre2NaUXBQW3thcD1MRF48QFVxT3JpMiluTCZSY0Q1ZFZHaTYhOEV2bGJdK0xrOUo2PV5pKGhMZXcjVF91PVdyQ1tOeERZVFBnPXVYSF4hTUMqNHhYLk54''@;'; put 'put ''IiN4NSE7c3JGJS41bkB2Nm1LPHQjVCJDZEx3QSNNdkdSQ3o+fHVZOXBBcXshNVhKTEh9SiNHI1plRXNnUCNdbmcpPitoSzRnPH1hOWZtWV5ATDlIeDF0ai5MaTlIfmt5W1JiSmloY1R3b2pJNzZLSVdMci5RQiJCOUgiR2VdfkJZfCUuKSFuVjYkXmovZ2JjOXskL2FXQVojbTFRRFBneT9LL1F5''@;'; put 'put ''WTQ/Mn4yOS9aN3YrUkkiJDJzSEhkTXpzRytzRVR+MitgNUB2RmlCOWRXPERwIy9Eb09XZ3pnVz85OjN5Jk5+RixdQkBELCs6SlgiP3dGS2RLd31nL3RndSRubmw3N25udkJLeiRTSjIrI0NXWks4KSxXaX5PK0wqSEtGaXk2ezAyR2Jza3gqXjQ8fkg+Kko8Y2Y9WWo0ZVMsd1VaN2VLcW1ReSEy''@;'; put 'put ''dVddYXV2XyF3OndaUUxTYHB0b3huNG02flEhWFZkQ2k9KFRteWBTc2tfbkxEUFM2Tz1oNjszbUhtcFRKUjB0Q1ZkNWR5O0FUPV4vYUksfWEmdGpUekkyeFBbNStKbF9vKFlCVCxKOzxnNj5lKG5LIltqSkhKX3dpJHUqbHpfSm99Yld6blszUyxoPV5rfj8hKWMyeXdJRzhKQE8kOGI1YUR3fCVn''@;'; put 'put ''cyxWUE9gMys2SSh2KFZ0STlHdjBnclRnZFpadSRwSS92W2tfZmI7cEo/Tlk+QUpbZ35UUCEsOU0rNGwwZ1BkUG5FaDt1MzsxO1d+ekVSYTB+UD4zaiI3e04xP0A/LlUiLnNVaWMlVUtMcC5KWkohV1BeLFIoXnhkSy5EW3tuRlZReSFmIlRDdyU7ZGEvNE82cmNnIzB+SXtzXV1ANntGfTIwcXo+''@;'; put 'put ''VHRqIj4yL1dfW0FrOz5LWVppYCtiNXdFeXdpTHJAaHo4ZCg9byolVj8zP3U3UTc6ZyFAZCF2RnZwI2lWPCN8WkUyQEQ+WEZsYFJuI2g1NVtsIzAhRyM2LkMldzIsRnlxc2ZdJiM3WnRuenovT2Q6MFpie2x1TjtTc2RHdDRtJlRrT1V6SiVdLiFSQFVXJkIqPiU0ZmE1Ti9NXkNvN3lyOSNLKTYo''@;'; put 'put ''Ty47USZeSWIxL2VLZyhDL1ZmLmFydzVgZWFbLjYkU3RRR3MrWFhDakhiVUJ0REJ5RzpXOSNWNVVqI1dZIWpiODV6QzFPI20zSy5yWkpLbkghdGVAMkMlTkckUV8qRzp3OjwrVTh4PEtpS3FERyxfeTRCLE50STgxX1M4UG8sQnQ8MEVRTmUiJnkscHtQX11lVnklW2ByJXJ5KzlNKUNxWVVUREV4''@;'; put 'put ''fStjYFF0VmN6Zj1xRCxHX0QvekUwOkpmeDteT0RjRDFPQHtGJHciKmxSSCNEZVBTJldAPmopTSZte0wiWCh2RH4rJXx3TEdiLDU8TFhMOHxzfUk5YkpSdUo5KF5STlRdQFV8Ty8rVyo8PCV6TUhAbi9KKXxYM1opdjZ2ODwqcjNxW09UWDh4X084TWcpL0pQSWkxfGc8REBJIj1UYzRTVXM/PW9+''@;'; put 'put ''Yl0qYl1bcyh8bixkX3lOcmM5QlE5dC8iNE9FPEdmVnM2Nnl9RyxBMSh8TWZ7WnIhY1FreWooWntUVz99SHR0ekx9QS42YDkuVkc0WGkwY0JQYWF3ME45YC5rR3ExaCo8K0AqOGNpfXpKa3c0KyFNO19PSjdJfUppRW1pTnAjIUY1ey8jV18sbzN6RFg0X3wzfV4hKylzTkJQW0tKaXNWMn5fYSNW''@;'; put 'put ''R0Q9Nnc/YytWaTJHZF1GbGBoWnh0V0RMdDEjfiQsZzdGPU9fV3xwMjw5L2w/QHdMe1Y1fn1pbDBVU1V+Q2NJflk0fFouaFBtPDl1ejdJZCJIUHEiZHNyQl9FL3gvUjlCJUY/JSx8W1NkJURJVUREejt8N2B6OFg5X35RXWQ5cVhFcXFHYCJRU1hIb0kqTkYrYlVWMm18REsqeUBoeUNWUzJDdGxw''@;'; put 'put ''JFJZbCIiPzVXREdlLHJ8LGRoMi9IJXdDaVU2Z2pVbDt8U2NgTTNQTWlvLFhbTGRmPyZlMXx3I0VYN09hXy8mL1JGS08oXlgqRkFoZmhwRzZ1PHtkcylUeU1dODVlWnBIMXN3YU1iWC5VWD92bj1jfEcmaD1jdVBHXWdxeldeYlNQYiNSeGtlImMvOGg8fF1qZjhRUX09Sis3b0dKR3RlPVtHaGtq''@;'; put 'put ''WGBbQFZhKDk/dW5BYzFobi5zKHMzL2BQJSpFaSMsWkY1ck5aelhqWWsiRXF6Sih8cl1Wb3cwXkkmUyN4Pk10RXFbQFFbRmJnKEVHWk1vYEVAPDYra2RxalVwK15ZPDF1ZWRrcVVGeVA/M3huakg9d0g3QjBFM2A2dGhmOWw+RDxaRD1UXSE3WCI8PHUzQ1UiZn58e3c7b01eUSRac0pNWDh7YWtK''@;'; put 'put ''XlV8LE9GV21AfG5LSCJ3KVVeQiFKTio3NFNgd3oxalJHTWczcnU+cTtJTVBdcXUxfHhEP1lnayxxdyhUSFtvcUY6YGRMZntQX1gxQCNubH1jez1HK3A2NFNFNTYhYDM1LiwqX0t9cEJRUXkyOCh5emJlLkR3ZC57TmltdE1XIWU6eyNQMVE4PSRjTV1NODk1SU9LeWw1YF5GJFNjMzc+ekJ6TVcz''@;'; put 'put ''clc0USVSWig9JFF5eG5rajpTfCFYJX0xOzdKbTdgOS8xYlE5ZjJBIkFGMFtMYCRhUytfcmcrfk1IRm5GSzU1elNZczkhal9GMnRyNi5gNjxHXUkhNCgxd2pEb1FqU04hI1Zybil9OXkreW1fbEFFejdkOShaekp0fmhPYD04X1JASnZfM0dJezYwWGBvSiUxIXJodTJ2PnE0dzVfW24hQ1UobURZ''@;'; put 'put ''VVtgSjtsfnIxNWRgP11gNUFEXyFRUVszZ0hRNmwhNGNOYTlAWnxSL2Z3PkJhb2hbbHtJUCopQCZDPiw2WDpYbjJXL3BmIn47KEY7cDJ+TVRCY2xxQChha2Q2MSFJRFt0dD4vZnB5bHcoOG8pXWBvO3tEUWUzTGsoRDcyX18qcy5fO091ZSw0PnhvVXlWSD0rakJJLCR3NHM3c20mQWklQFNrXjBb''@;'; put 'put ''PzF0SSI0JVRCQHQxeUpBNF9IdF9zb0M/R3gpNVo4fTZJO0FrUllzOSE6IXk4NUR2bUM/VVA/NzVkWm98RD9pXjlEfEx2enxSLDg2aiY0KmllLj1kdltnNEMwYXNabjBuK0IjRVY4XTBtSFhMNl5BJCNlKUBAMUxeK3goYXFiaFJjU0FXWyx5a2ZpQVpqK1Q4Ynh2U1Y0QSN+MUZGSHs+OGJTMH0/''@;'; put 'put ''PV92M3NqLjE4JT8kKXZrWk5wfGs4ZWkpSSJlRC9NUjlBTlp9TldTSHhpcit1TDtRQF82Zn1wajV7LD10XmlmaFM3NjNTfDkkdUMoZF05cyUmYz1zPUdyeGt+V1puMXB+TSg1KnY3SXVWL1I8cTVUXz5lZ0xBNTB8PV57R2Q6YSRvMDdQc0dub282M09QRWI6eSNvO0lbWVl1PzI8fGtdaVJvZUo9''@;'; put 'put ''Z10oWClUaFNBUHNtNnVjPDdDMkpiSHllfjUwZEhtMXY9V1ZkQTVSP3FLNjZbKjJraUt7bmYqXVgqUER6Ll53ckN0LH0wa2dHbDp4P3ssODVGVDRTUVBmWzhhIV8kZSlGWGkxazRTN0dNdS9yLEheeGVlYmIxfUh7blg3bmQvbDBkZVdnflt0fHxgTFsvZF5dfEM7LGZpZCxXQ1R3R3xHLG9nfFdl''@;'; put 'put ''M0tzXl4zdSg6TWwiRC5UaEN9YHwsKlhdc1kkWT0mYSZgZHlMbi82U2Q8ZSN+a2NJZDlXbVBjdTUreypVPDpxZmwwMkNgO3xoQ0NMQkF1N35vJFk5d1QhVC9+S0h7TkUuO2x8cW9OVjF7eHZkUCQ/dyFSWHAvLD8sOUguJW04I28qPzdzd2p3LlFBYCRrJnFqeHVKUWpKNS4+SDB4Szh0fTxSJmg5''@;'; put 'put ''WE9+ZFlZMD8zdUM0Xyl0alBjN0lLflJNM1Q6KnlNNXYxYlN7MikjeFp0MD8jQ0dCOnlkdT99XlchbGN2Xm4pXiF6KSFwL1hPdjNkWGtUUWo4MEEsJlhgO3hFOWc1L2ZTPHZ3UmNmcCVDM3teM05pXzh5Sy9KZX5KLE5DNUV5VERyK1JNSnRnVilFKkUwd1RWUigyWzpzcVFwdD00bn5ZMyFqT0xy''@;'; put 'put ''MDZ1ZUQpWGkzKWVVSGBXUV1ddHNWaXBkOyFjdGpPJlRRODskSm1KYEVBIl0iNj9OdDEsTC9aOmh7Q0BkMUsjXWJseTo2PH55OHEza09Oe1RucyZSe3QqcFt9aW5GLDNeMXh8RmkiWjU8LltBcmNkUjZ5dXw0Lk9OfD5ENH0vLk58QyxSQ1tBbi4/Z11KQGYkQk01WUxLOVJgb0ZKLDVVSV9JMkJn''@;'; put 'put ''Migoe0s7VkxjcDNFI18rOnIiIVY4ODZ8aDRRIj0mUWtWOSg4QF5ST2N7V1FNSSJGZ11vMUEyZkxnPXgzTig+Y05+K3hFR3Vwc3pbLjtFamc/RHNrdWV5MSZwZSs3YmgwLENTLGw7NnZ9JG9VUGsuM1EzJXdgdTtCSDpHS0VTT0tzQV1oPGlzejlObj1WRURHKE9RLEVTWyUlUEY2JjR9NXlbPUJK''@;'; put 'put ''Snc8LkVXVzB5bFAyczIuQ1ArYzNqKWx0YXVjbH4vTHE2RTRyNmZrbjlKZDNCLjd1cEo1aDRFY0l3NThmNnN3OGRyP3BPYixdN3JOPj1Sdl1RVFN8dlpAKWBKcFojOTI1PEh8K2I/WCI/ZnQ5NUo1LmtUMDxNYyxuczdUOz9gKiYrVFhmdmMwMVdIeVVIUU0rI1lQW1M1QE5UZD1CWSYsTGl0LjB4''@;'; put 'put ''WUUxOkpaPVUlbixMa1N6eW92cnEwUHgzckF0ZSxua1ddeiRPWVJ4Ln1+fTZdYz8xW10xK2JUZFZ2SHskalleYUM6REhHQHk4OypAMjsxJD9XMz9DajNBTzZCJW4vbj4xSCh+YXghQ2Q+Q1pYVCJjOCwxL3VCZTFNd3NxZWMsOS96UygwZ203dU42WD44XjAqJERDSEEvN3Z2UG9kcjdMakdCeyUv''@;'; put 'put ''aVRgUypRcG5yXnY5UEtxODNMWG1EVTdrfjQoQ2leWT1NK3ApdS9MY3JCMFpOPyhiOHVTT2VoPnRVfGpwdVFYXkQ7eXg6JD5+dSNGP2lNbXdjdCxPIik2MFkxMmA7QE0icGV5VnwkRm8sdyZxQmwjbTE2IltCdVpyTykuVkVdQmRbMTg6RSR5NWp9ayxbbnVrUD8hcj07eHhec19IRW13S2szfSUs''@;'; put 'put ''T1RxT0ZtNysrTWhYKVBxPV83WEg4KF45MUwiZ1E4MT52M2NEQCQ2SzhGSTpnbWA9SUgkPHp0R0k/UWx6KXdUa0pVbmg6K3lAYGJKLjBPfjxDW3BGSXp5RVhuez07TWloOzZUOjorYHgzI0ZiKX41WEJFbGVMXTNbQ0lqNVpkcUkzJmVPcXVyfjp0fEZfMCpBQ3w2W35xJWFtWUY5Mlo+U2BxOnVd''@;'; put 'put ''VEJnV1h2MT5qTU9BZHchd0R3YH1JXiZ0OyssbDlTNUdoeEpTSVRKcylZW2VlWnlJSmkhJktYZnpvZFYlQ1RYYSsmbmA3Oyx3NTEmVlZdPDM5NTs1X0pXaUlJVUJlRWtlNFNnImA5fnZ4PUJaRmQzRjc6O30veCZDXTluZ0xUT2ZAcmxHRGF6U3xKcCJyPl5UfWVHSH1nIilXO3pFUnJ4Y1VxUGh7''@;'; put 'put ''Y1BeSlZpSGYiKyI9UkJkJGxGelJXNU95XzEoMSROOEtgWlUmPHMxRGU1UnFAd3V8LGJmfGljMG0sKDE7TCghWHxRXy5bZGhPYTNJRTgsbilQOCJBciVQdz1kOnRrXklteyt8Yip3d1tGZmJNSWdQY21uNWZVW192KHAoMXRbUTx7NUdaaig2Lk9jTU5UcXkkTy9qRnltVGM+XzpMU1FBP0ckKDU8''@;'; put 'put ''NHg3IiNhNkE8WzBpYXxHRjxHZ1pSL3JjbGFLZmVhOkYqTU9qNTtCTiRhUj4xLEsxKkN9S2lJYHswT1E5JHpDbzJQZGlJVHtfLlVVW2gvXXR4VDVPQiVabHRCIVNXZ1UjV01gPzNBOXBLdmZlQlNFKTdReVNUbGtJQnVFVHlYPixjQCgibTkoJXlyNmZAfnIqWl4wbj9hdExxaFdhJipJQD0qKVhI''@;'; put 'put ''U1B7cElfWF0pdnI2NEhRSnZYS2JlMnovfXVGYUQkUWslRyp3fUxfcjJXNnJDXy83Yn1CamNnRVQ3NX1lI3dQe216NWl+TDZjUS92XyRXNzxJI0cvY1VKWSJJaztFKiVmRit9VHJUYXRjUl9tL0QsVipJWHowQ1lnQ2NDYCY2XVhNW1pEZz1CV3xMSVtLIW5lb1F5W2lFMj47KE57RCZ9clIjOSgw''@;'; put 'put ''e3IkNVF3amRjMTtMYlVLYSxPT2JjO2RBWG53NEV6VEM7I0trT3JvVkRATUZgOD95RWBvZWBfKGVPTU88LGYzNktHWU8mMXB8JnV7JCouTm5obj9Jc35GI29+dDxHX3xvPVtraSQuYmo0X2x0OG5QaHFlOVEzWz09SDJ7WnhzXys+MFlhYDVQOmcmLHcqLiozVF90bkYraS5GJjZDaW1bN0U9R3x9''@;'; put 'put ''KWlAI3srKSRIO1k1KVdtZ3AvQ0YyYWRCW2M0YFFAXk48WGdRVSZlTEQsWlZCQz5xdjFxXlBqYFRUdmpMKHlqZnVbdVs+S0dgcGojR21VVk9zN1IhRUVnfC9XW0NZOSlGRihKIU8kWi5uKyhlJVNdbUpIa2Rydn4rdTRVaXJoJGlXSC8/ek4yaUcpYkhYXmUpaVI5QXh9M0JIWH1rJjkucEEiflZO''@;'; put 'put ''fmllTSVHVEZwfUBwYVhYaTZ3Kk5vd199d1o0UlBqJVJIfTIkSiUwfXN9SDU+Y3U6VH10MVFWKztiOTA5SDlWR0ZCVCsoIV1wOSE1STN3eiRvNlhVNzkxeipwNilxO2tdXVtjYmlnUHlrQDBXa3t+O3d3SnpCQFhgND4/IkZhW2IrUig2UWIjJDJgXXd8KmU/aGdTfihLYG9IUkkhL3xMUHBwa0ds''@;'; put 'put ''dGs5fDY0MS5pUHx1MCFPSSVxN290NHlvJXQ1OSw2U2ZZSTM2JFg4e2QjRkNQNERLQisrakhVVT5rTiQ7NVZbSjsyeEVfQV95NUxIPylLIXUqcVlqMDd2RGchcUJRZm02Zz1LVU1HfHVkNFNFODtYOj8yIkExLz9NUlpIXXteYHYwfHx7MDxoL0ZtMmJfQjBVNktba0UuV05eI09tN3g9YCVhNTNZ''@;'; put 'put ''JXdGTCFwMC9jYDFlQmE7RFEreDYwZiRrdmUsOU18PTYoOitRMC5bUUNra31jQExiaXA6ITdDeFF2VUIxJUMsZnw9c3s6KitKdn1wYntlMFhYZEtpUCImOzhLM3k0OjxSYyZNJTlwUGFCbVlgS3p7MF8uWGE2ay5hIjJjSDMsOVZhcD4vKzAqaWBsZVQ6M2RoR3JQPXd6TXA8dUQuSUtwYEJoP3VD''@;'; put 'put ''aWlLeytLQkMiP2RgWzJOfkc2R1pFaSleYi5MNXBVIk9aSzJ5Jk1PSEppKEA0R0x+Jko1RC9PMFo+ZDFZXVNMSUA0NmgqNHJ6TUNmNX5uN2FrX1h4M2w4bS9pPEcqa088V1tsbDI3YCEmXmw6RT9WY3UhZT9hanE7TXdNLyx2YnNtImZuWUglJChmQGJkIzJkaDBGdnhCYnIzaDxCe0k4ezVaWWxR''@;'; put 'put ''KFYkQkQhZyMkOSh9eHBWUj1hUytsMkpaKiJOdXk3P0U/UEtPcWBAKi5wTnNAT2MiVWlLYll0QnEjTWJdIVFPPyxPaFFuK2t5UUR1c1hCNloxLlQyIz54YT8ieGRkXSwyeCg6SW5IcyIkQ094dGVeRVl2ZHdnKmpuND1GPWUjODViPUYiakx2Om4yclY6ZERHRE0jW2xdUkdfKHxELztSZkRpQlNH''@;'; put 'put ''RH4kTDBhXWRGMnE2bDJJO2pkQyZDLGh6XmFxRmA5TTRpb0B0TCRoa0JbLEhzNVFybl5gekVFX3gqZVhJUE89fmpaK0cleWpUYWJFcz0mdT9wO35XOCtfJGllO3lEdEk1PEI4SWZFcWNLNFI0NnM4TDFgVnVgekZOcSlISEsqbDteZjVTZVFZTUlXdSY8aVEzeW9bTnIrJHNfSVB7eDAvRzM9ajtE''@;'; put 'put ''ZWlxd1p7TiRKZlc4VGthNXx6bHtDMFdMfTlIKmgpTSFEeCtLSTxLb0FyJn1HbHpBY0VOUHc8P05CT0wwLCRFJUxNNnR4RnJoLlVVVnZqelY/cW8+NitqNkpdX0crfF5SQE8mOEVOX3B6K09SdGJUOVYlZnB+S3VWX3Bfe3p0NTslUStEaSNaPU1vVTdEcXZreFBza3hEZzhabWRvXiNMJjIpTldo''@;'; put 'put ''L0hafSRNY0ZeTXBDYFgmNUcqbDpDNnVrfVdLOE9WSDU2LkkoaGppdGBecnMpIltwcUN5U1NKMTJvMytJXy5tQl1bKjR4QzRuQnZqRHBYYiEpR3FXcl9aOXphXWBIXkIlbiFsK3g8ZHpxKG5dSnl8ZXZXdjskdStyeEdldmp6K2N6OGdGOENAYj1JfTZjPG14VXwjfVJ+SWYiYl9OQD4yekd0TWBU''@;'; put 'put ''MmpGaC8kKCx0dXAuUSh0SmNITjR7RiRpT3JkMylOOmRmSTtZelFNMjw+U0tRUDNdLGAjR2pAPmtseiozbkFiUyowRkFGbiJvRHdRNSt7NkomNzwvcSR+byZXRCM1Rnc3VURsMXluTFVsP2IjUVBEd3M6UDIsbFk4JVoxPjAub14sQ3c3UGlkOGdhciI5KWxzY3cuWk8hQmMkenspVDlzLCsqI0wm''@;'; put 'put ''WCxtPyVDQTJedV8jW1l6Nll8N3BefFFzM0pqS2poe3AjN01UfW0obC9IZWhiblE6anYuUDp5MCtJbkhXOjdKIj9UbEpIdEE/Slo2RnFpUEtEUDNfUEhBNUA8XjE0enpYL0lORVN+cjJqcWZ2TmdXcExYckpSaDZ2YkgzXmZLaUxVfWM8bkh1bl5jdSoqR1FKQ3dWPWRZVT5iTE5hJWd6W15SLF8y''@;'; put 'put ''RitCXzx2bl01P352UFtgME8uTm9hbnwrRSUrNX1ta3x+ZjdsZTVCe2pMXVkpJlZPYEs5NXExLGt1UEYsfEFFb3RjTGBETkhmMGByTTReZFhKOlRFRzh8RHIsJjRjbFh3TSJ3Qn1QflFkblhJbilVSi9TY0lsTHVDZHJnIjZpPShua2FjY2Ihen00JXd9X3l0fCtCWWMvSDl7XU0zPXg/ZShWJF9u''@;'; put 'put ''SHkoTDJKfUFFSHxWbVgwPW99W2tnL0BJRmlEaHBwdCgwW0F7ZyVAVSxiVDsrMFNPckdqKHFlRWAyckdgXTxXfGpNYEltUlJRMF4kPipNSm0jWSNwfjQuJls4SiRhRS9MZSpGQF1jUWo8TmsoYjtwOytrd3hxSFNiK0xxQStkSj18ZD1QYyVjVHU5SSxjWitQNEV9ellybUIkLE9AJTxqP0IpZXgo''@;'; put 'put ''eFtYeTwjTEFBa01QfjI6VXh8Ql16YEMxRT5HIWghNWg0UUQ3OVYmKkl3PSEiYEp8SlQ1RyE7RGMsK2BoYXNBKUZeUzsyIms+UX50THdDJWFnPyZOY0x2VVJdcX5daVNpbFl9UitOKzJRRlEyOElzW05nJXAqPCFzXlBkMUx7anNqPjFjY2o1UmRYemosZCZHc0Q2IUZCNEU1T20zMXFWaW5sI2cu''@;'; put 'put ''OipXIW5DfUIyV0peWW5YZmVGcGJ6ZmxlNG5GIixbZjlxIktPZzQwZDhnd2J9SG43ZlkpZ21EWTN9PFBfckwpOXZqWlk1MihvYj9iZzRhZShkOkpqRlovbmpZL3FRRT1EWWx6QF9aVCI9K1I8bnhua2R+UV1EM04mVHtVck16MntuKiFSLyglYkg4I18iS2JgO3M/XXw/Kl5KUlpvQkxKMSVKNTYx''@;'; put 'put ''Iz9oJVoiQFRBX1AwOTY5Qnl7QyEwckJgXnlkUVdsbXk0cl0veWEsS08kK09BMHRsfExMIVl9SV0vRXhCfUdLQXFlayxMcWB9d19zV31TPiFLJSF8ZlkxN3x5Zzh9VnI9Wm0kPm1JbFF3NiQrc1JuVTJbZjZyYWElfndGb3VAZThsMmV+bl5edlhbdEolLE0kP2trdnd1YzhiQGc3dUgjdHZdMFtC''@;'; put 'put ''YD9iY3gkJUNmPjlqbkozV35XbzdEU3ZvbVZYVUtLJFJIJEVUSHUhISgjeHI7KkhQbjlQI3g0MV1iT0NEOVkrYmZkVn5MOmA+VXdJbVJ0LE5sfShNdlkoZ2puMSlUP2RgLmAoeD1XbXw/PmBheGNdUT1zUWBjQ3MqRFI2fkxgYUdjKk0kRDVuMEBFUS8yTVducHFuZl8jSjo5TVcrUWFXamNieUY9''@;'; put 'put ''Iy9hdnVPX34vMkRBLEdNOSQvej1wOzApUUM5dylpUSo/Zn1+eF9rLnJOcmN3PHN5Ym1xbytxWFdbSjw5eXQ4a1Zqej9jR1AyYlZwKXpPOnFATEYuKzE+Nj9LLzp7Jmc0ZDpnYFJ9SXVAemtMSzQ7U1dndyxITldtUWVnTm9qbzFqZnpSUVI6cTxafEFGQkVbPi9ydjYzc15mPUxMLEJPQXE3Uz1G''@;'; put 'put ''JHRgQGouRikwayFCNU54aSltZSh7KyY4MD5BZ1ReKEgzRShRVig0TFR9RHpIcyJGLHRMNVY6SHssT0BXK2ZiZDQpOzNAQVpsSHEySz9jfipbXmdGMnlAPjE2QWJnYikxQkklbHhnQGlNajdWJjdZVnc6VUVjS2J3eW9PMXtfQztMV09vInsiamRzMHtER2ReLkJIPkRNVWt4QixrISVYMjhveWtH''@;'; put 'put ''KUspditeWXdVd257PipmPkJ1TEVobmdESUo/dlN6RytjNG40clFFfig0b0JOYUdrS0hsK0JTUGU2W3k4PjYyRFp0TVdUZy9yVHcsbi5aLHcrNnA7L3Z2dl86fVBhTS9OJTI9QCRSVG9oREJpQ2BOUSopK1clc0B7Jl9XfT49ZmJUenA9e25CKntLMG5NXnhtYVVlUmN6SSlycT17PTFxTFlKang3''@;'; put 'put ''fXs/QWEjbHJgSlFnO206N010XltHXnA7O3ROSFFOVUcqdHNpb1IoWX16ZFRSZ2RbNXUrWndOTmBdVigzX15PPUdhTHAseU5uaDl7aER8S2lJRUlgMmZ1S0VMMChmZnMlZ3Z8alI+T204WEYlaEU8YCwkcjZFVHImUlVJRD90d3lYcFc4bmlALHNMUXAjL3s2OyQzfExqTztzMkNMZiZvIT9ocjs4''@;'; put 'put ''b0lHc1ZCaGVlNVd9PmhXQF9hMCZae2hwfCRrU1hTfWR3T359VEovUHd1SUcie2d1MVpEeCs/fjlOc2tLY31sUkhYS0h2cmM5I0lVPX57Yj4wP014STsxQTFMY0dmMSFOInxTfXNNNHRzY3xYPkhMSjosdCpeNG9rbSIhL2xhVDMiMSEwNSlsUFBgTG94O3lIYX5SPD0jT0JYWWI+JD40YFlLaypU''@;'; put 'put ''e1dPQyVjUntIP1pJUWshVldfbWxpYVs2LChjMDt2VXNKPWl3QGwoUCJoOkdZPEFzbjVKYUEmRGRrdl9iI35XMVlyNHxzL0U1bkl3Ol8hNXcxKT1mXXg0Mkh9XnQyWjMyWzJlVzd5anVjemNPdi5CclZuTyo5WWssWV1oa1s2Q2UoKzo1WFBYUk5fPnh+KywjNU1VPzFHJUxfcXd5cF4rOmMkKkN6''@;'; put 'put ''dmViMW52VU1PSTFzLnZTbyFmPTxeY2lSfEBKcDdkbEp0THQxWEM2KzRHOy42VCl8VC43UnU4ZnhJQjw6OCVbMyNyP3hCPCVec2NrVlN4TSZ1bDtkaUFleysoayZNSyEjVWtLSXB3RV1xTVt1VH0wQVY6MkhKbGRJNkNMW01PYFd4cF9UL24+bjg3Tlt4XntbPmVHVzEuWzdVOU41PWs9QnV6dH1e''@;'; put 'put ''MjowcSxbZCRgNipfaixUOHZUSnE7dEwmJFZOYSZJTWk4Vm84fSRMKlNUcEhJZUR8KF1aKlNncSMmLDtxMmV0Wm8/ayEiQXYrZFk2ViJUVW1+QmRZQDJETz8hXUpjTGF7e2RPJT96fSl8eipCODZXYlF9ZkNjKSFYbTIzZVNAcilFUkRRO2IjST8xM1NtSW9NMHdiR0ttPkpVWVBoRH1DLyJbOGVx''@;'; put 'put ''eWRdUG9gUVV0eVVvfWc9InxjIV9aZkdpVEBYVl5Nfl1GNTlBKykhKE9saEQxZzNPPm9XK3hqbkJQRSQ9Ojw9ZzE+Pls9alp6QFtzRkkhdlE1NEVqPEkxQjdRSjxteSEiWG1jRE5BKWBdWHsmfVZlZm48SlNRLDs9UCxNXlY7K1s1aitGXz1YdmFDR2R8OyQzQ0N1SGxVKj9lKHRPWT94MlQrMjdQ''@;'; put 'put ''P21saGk0Uy9qdmJIK0k9JWEsR3MiP0UsYnZrIzlkJkdUPERwOXNqZFF7IlteeGJlcHNAWXZUOE1kdVVRdnZpbkZJJTlZP1h3eSQleiNgKzVnUURuYDQudGNPYmAiaDpHQSxnXTtQJiF3ZjNKJTp+I25oJmolbXpWQTdjLGlaKWQ7fTdvQCx6SmRDOkZ+Tno6U0NQelE5NGk0fmU0KWVbLDpJWzdy''@;'; put 'put ''eTosUGFpP1NLanxOOU1zVmJASj8oWWdXQTQ2YF1rYDMrZEAmaVsjYExPfXA1W0ZJIVcubl5AKzt6YWl3e2JdYFJ1Z1tsLkFBQFsxXms3OiVLMWcvRzt5UGJEXS9QRkBSQywycyozY35NJFRVWiZEL1dFZHJscC8lPntWciR3Z0NkQmxkbyw1Xlh2d2A2I241M09fUyM4NCVkVDlEZ1teRzx7SWtb''@;'; put 'put ''Vk9bPVUmJWRCXTZROHFlLnIwLzFEQG4qIyMxSk9xWVl0YmpPcEQ0SmxbSF1eOV9XMXdVQntQaDFmTmEiWT8+LGkrbT5zZkdPaVArJjpxcXV5bkxSOSEjNHJVU1UsbmclVDghNExJJlpQPy8xRi9CaEhxJXgsV0BjaSFJJlQ8cUhiPzQ4W3BKejA+anlISDF4UlZoLEl4MFpSQSFNLDBNQnF8dz17''@;'; put 'put ''NTIxUD07MXEoRGlobWR7Kk9BRHVtSD9seGkkMztUNUlHclsrKGFpMnZxWXFqSSFobl0lPXleYmssUFVaZWQjMVMyPFMuYld+P1txTGZQbHVFRyROIj00dChQY05ESGAkUktVTm9IeXo0UkdEVno2b2FXcVhuPClmeW1IMD5YJCNQL1Z2dmhELGolZEAhXTIoV3MvMj57TTt7d1gxc24pIjt2LzE3''@;'; put 'put ''bDkxKG49UGlCaEhvTFMldXZRZnV+U3t9eiZbZ0g/PWRLKW5aXiYqWylyfHZra0QhVWNFbDJ0SW8lN3EiQFI9eGMxUmYpY2VmMnVVfWxkJCgoZUlAN3NZTEdXXXhqV3psKjN8QCwvWyxmV2dDMmNbSFMibXMrfkVOJmU8SnlNWShVOSI6KCV3NEtOTGE2M2B2RWRtbjdsOiU1TlQ5JmdXeFhCQHB0''@;'; put 'put ''VHM+bXc5XThpN1E+Z0o4cl9Ma2RdeDc1SFRaLHloQSxDTCt4ZF58cHtxSnsyKUZiTElHZSYwKWx3eW55KSJtQlpHS2dZOGtdfVBmTW4wSUNLKWhmbTRlLjc2cnEoNkZnMnksVHQmMltSdlY2Rmh7Nzl8Ryo4SyVld0QwLHF7eHZbTE09O2ImZUFbJXJAOkBHPXBkbzkkJCxJe1MxSU4rXUtEcVVC''@;'; put 'put ''RFN9Mm9fczxVTUgzJEMhYUpvSi9ZYzhifDV6e095bGlhLCIpZ212MXgrQVZOWV1+MjckIi5EPDIrSWI6N2lUc1hMZzsyI1pEI1AlfjJtYk5XP3J5MXZBTEMqLl90e2lMPlJMN2w7bTFdPyZAOV9SX2gzJD5wdnt9amF6cHtJOGRnJCUuKnglbjtsXWhaZkEoWz1CSDVWX3QrI3dUfk9xezxMWjdb''@;'; put 'put ''YCtsVjphdlRSdS8jJStpUzA5TDo2LypEPFRrW2Y1NzJqQlcuSCVMMGQ/My5kVXQ6XmN8dUdYX2lTS29uUyxUKT9TTG1ob2AoRjYwWFpKaD1wSCNNOmI7fnVwcF5JKXBvPWl8bWFZaVFKRCxgUzxUJHk+UGdTQ08jXTx2NTRjVjx3O3VFcHh1VGU9JltNJWVQSzJpbzBuPTpkJnNkTVRFSCFjTntI''@;'; put 'put ''I3k3XnlFPGMybjV5fDtJQztxblJRUX4rR00wJGFGelFWWyRicChsb2FZamhfMjIkcUthWWh8OXlLeWt7JndNQkd4ZH5PYnYvR1IhX2YhU2NIQmszb2FvYGx7LFRoYlJgUWA8VSxjOEpRXVRpczQ5cmhoQD87TywrJllAYDYjU3FXSyNbOTRrYWJqNX53ai90eFldaChfXjViQWpJcyZOU2grRERh''@;'; put 'put ''Om1+cVltXU1OcFtYakQva3loIztCTFN6Rk4qR002L3ovIzw9e1skOGx9WTpXVDEzTUA0RGokb21jTlpkJmtXUFUxPj9jNGMiPmQkYTA/OUo+ODUoWFNJdkF1Lm1zVFJVOHVBSlM6QUBjamN4fTkuaW9tcH5uKip4bCMhblpfRTljWkFCP1g1O01tVFJQJU8kcCYkb18vW0xsaD1XU0c9RDdtcCV0''@;'; put 'put ''VCFXWXcxXUVscXJNMGdZJlMyOUleRSF4VlAuTT0oV21FQy5Jakl+RD5mXn1bKEoyb2tVbXtaIzRmNUA/Q2c6KzJgWTZxJj8lO3t2eWB7Rz9GJT5BUzpfRmFZIzVgOU9gUTsqaWJiaGNgaltzOHxAJlEoJVFrfm5AeHwsMTklLDR9ZFtMSVk4c2pDYERnUGxKQWdbWVE0K21tNGJ8PH1TJG1mPElF''@;'; put 'put ''V05DKElMYFJ5JTZNLH4sJS5CKClySl16KHU0SSVjPFAlP2RDX1QmeHV9NkQoRlMsV3AkYmVCakplcHghNDNuRGFMLj1KelNUKUB8WSluaT4+IjNLd1RaaTx2dV5OZ2EoUERiVTZZIj1WWnxtbnttOH1SVj98OV5fRE1HLDZOLGw0QkFOR3Y/KylLSCo3Y2lVe2NScDBxV3tNTXcoUCteOyNUfHpW''@;'; put 'put ''PjFIenw0YE15byI2aytgTkUpPG9nRFZ+ODkvK01SMldGPiU7bVpJJDg8UU1vUTJ5OUgsIkxPUF4rbkwiVExjZT1iJllfKVc8U1FkPy5vdSh0blYhSjBKU3A/fDZmTEsybiI6MVBAfSpuPGJ4aHN3YVtycn5VQ2svPnh6ZV5uOChePWhuUnk7eHNtRGBrLzI/bilCQnQ6RFhRPFgrdm1YQzphTXBi''@;'; put 'put ''dk1eTkhEdHhCbnRkclZdUjVJayNVLHpRTUJ9QXk3Rm5xYEtLOWEyMU46UkFMajhAZn4+JXtFaT1vYzlTZWlEUzxoYWI6S1o2RDIhbkldQC5pXiN5bEdLczc3UT1nIkUsOiZVQFNnL19DTn4sXzlZSVYiKF1JNmZESnE6JHxXWDwvJGZoOihRS2lESjBXZSkjPzJaKyllOyhuVCJlOiU0I2UlbCha''@;'; put 'put ''IW1IKGJYUnQ/fis3dTkpPDtIYFNiN2sve3FENXpnN2YwSls8cFRGeG1Ie0Npdnp5e3ZvPGAsQzlrUCJQeThqSFE+fCs7bD04K0lKOVMvR0glRD9AfTVoXXR0Vk1ZNXE8PWNHaWBpN35lMk93dlFEO1tWMXYsTz1GMjJqUTdqaEJONTJweFt9VjN+LixhJXQ6ajp8L11zKiQpRkx0O1ZiL3B6ejY5''@;'; put 'put ''MHVXVzAxa1cqKG9pbihpQnZaOH1kP048eyZZVld7Q041eSM2Z3xxK1hHRSFucn5yZTV1VDRBPU5vIjsofHtUXU5wQDZdOnM/RkNpYDBqPnUmcUxHUiFLaCxgT3tPYkhUa3ZEbHtCdDQpPixKWnpAPHJuOHdiQ344Xk0uXkB+aClIOmlGT2tETE9JVmtWXVRPJEMhZS5JLlQ8dillZVdQciRWLFRp''@;'; put 'put ''X3VicitWQktQTzJGeU17NV9YaE57LGgiTnRDOENsLD9LPjo7UCEkMEcxLjR2clA8T0grKX40YkpFcS5iO1pDWG9OIiJDTk4sMnc/LjArTDc3TkJHWmkpflRRPltOeF1qUHwhJGM4bDw8TFMyI15YcUk3dDxqRERgNUNNSkhdVylxMlpDSXBrVS93W0EpfCNuPlc+TThUcDFFXkIkN193UjtWREAv''@;'; put 'put ''VkVJSEN8UiNCPipLTVM/T3l4UXhTKE05MXxhQCQoYmxXKjV2dChCPkddJX5FQX1iZT5PVnN3MHc6STpvVHV6IldEeEpgc2lFIT9XUCtEdlo+NkViNyh8Y0N8d2RGQ1tbYllfSE8sak9rb3RPcXUxWFsiaWUlZEc7MnU+a3orcWxCb1ZSPlltX09ZOENMSShlMTNFJmAyJj9uLzU1aTorXVJZZ0ln''@;'; put 'put ''ZWxrTW9hZ1R3fmtbcz9MMjZvfnJYYm8xPyN1YUsmb15LeS5IelZDUHVwd1V8YmUhPk9IRy9wb3gkZWRjQSVWaGYrXzgqJCs7XXZXUSIhdGRMSWpqVFRxWFpLYlYlKUk8SHVCWmh5fnx1S19rU2VFZlAxMEp2WHNXXmRJZ3xYVH5TJlQsSiR+KkZwSjkxUFNMXURMKls4LDBmJUVmZTZmdXp0UXcs''@;'; put 'put ''NEJCQSo7ckRjWjFRNUAiPkgkPCRnVXpXVHRMTTpUNmIicyliXzNFU293ZFQ2PF9yMkBZcnwicHtXODhuKjlXJWQsW2AmMXs9SmY0blJVZCNxInI3S21McisqJmBAUyo3Klh4KnUhdFhobS43RlJ0fH5MRCZXb3BALntFMDYoKl8wTik4WG9YVl8kPHc9QEtxO1ppdXcmbD5wUzY/OCh+NypGSXks''@;'; put 'put ''PFZtaj8yIld4dHZfPiJJPiZVLlVeelprKFE4RW8wdk5yZHsuciUrTyxbQTQ+NF8kOjFnXVZXV3lpSV49a2NmKD9ibjRSN018KXV+YURMa0wxd0x4akc9QVpIQUF+QCU1Zjw+Wm98YXdTLms8OUJXO153LyRuY080TV9PM2lKfF9ePCtNcXVGIWN3YzE0OSQjLkB8bUludXZsU2AhTko8aGNrUW5m''@;'; put 'put ''QG5mKT0lWmlbMFcpNjwjXUhUVjEscFtPMFRvSl5pT3l7WHc6SSQlMSF9ekMmX1kkUH4lfD5OT14zQVFgcUE5dSVRVSxjaENIJFJlQDtpNCxAfTBOY1piY3FraF5QJSgwb1k5NlNGS10xezBYelRSJSl0Tlt2TVYpY0FAdXV4JnhXUWZlNSRNeG9hSD1IYXEvXjZCJVdpd1txYyZ1NV8/KVBNU0cp''@;'; put 'put ''ek4lJiE6YHBoPlg4VHl5X3xFODRGZ2B2eEp3dS5hJFs/QE58O25eMVRvK35UQEtkeGohPEMoMz0jOi9PJDhCWTtiK1FJPFs4ZTVXT0RXMHc3U3hVcjR6WyVrWjFOemB4IWYxYTUzR1RLaixpUE0kbyw/O1NiX0I+Um9SSkAwPl86V3VHOmt5fU5RLEpjMD1TTVkmd2dbMUcueGVNRWxCUF1XMXxg''@;'; put 'put ''W1s/VV4/Qk9RQnx1NVB1MzZvTypIYiNheDpgfU1OZTdQN2hDY3tNSGhGc3F+d0pNNCJ7T2F+YixPUiEyWkV+cSlMK019NXV8c0Y7dF5wdEVVQz87WCk4cDs/SEs3JnksaU4kZzdCKlZhRjd3ejhkX1dgTV5XQVEmMm1NS1dhWVReISgyLCx0emdbaDlERFNXVEM3V3RoTFY2UTdpJiomSytFRyhn''@;'; put 'put ''I2Jdc2JMQl4mQlo0Qzw5TVJ8bz5YKU90KzBoRV10OjFLb10ob1VZKHxgOCw7cXssJnM8Q1RadjElZUtbViQyMnNdLDBjQmpEXyxDKkgpZ3p+U1hyRFdEQWN8Sz1be29hcVI0emFiP1BdcSJLZGd2PT9JdzlUcShFV0k6PEIyVD8+LFU+cTY3dERlJlteNkdbQmNRYVEhK1JrQ2cwYUpKVypDUHw4''@;'; put 'put ''em8qNjBjWntMeXFQVzskdmxLW315VHl3TXliKnRCNm5TfEU2L1laTHh7OSskKzQ8M1laTXM8QjxJN115OCsoSGA5UE9be0MvMSIoV25rZV5yXWBEbyZGfFg2T1cmTzsrYEN2IjxWYTkmOEldJlJMS3A+WVAvWFcuNlcmVWBnI1RKT042WlJUUDFKQE9SJkw3fG00IW9jW2RjdHhRIyhHWVhUMlVa''@;'; put 'put ''LlMsQlJTYFBmbGB4ZnJoImQ9V0FwXjZRNlhPKygrdjtsSjkmQ0M/Yk42LldNcC5ARFZHfFMjcWt5M3oqc0xXW2dsTSF9bUNRT15NaVBbNkhRe0VYbnhrayRZPV1sRWNSXnM5R2hoNGZqNCVPNTwsQldRSCNRMFBwPVFbbzBDZCh8alJWZyh2NShtODxjdVgiUTRFdSVKcDNzTGhxNlB9KEFBSXRd''@;'; put 'put ''Xno2M3VbS1BPdF0vPnIkRH1NX3xaOkhOeSkxdDQ/Skc+dEA8RHM+LFJnIT4wXUN3cTJdIyxaaixxKUEhaU09KlNUMnAjVGxbKVtbRyFZPkNeeih+REV4cmJ+MzhqIX05SXFtbH1aWkxlZX10WTU6fm9TK3t1X2M2LjdQKj1uKGBiejt8I0QxSEFhRD99PHZEUllzNzpqWnolRXM+fmdHXldsSmEw''@;'; put 'put ''ZWAhWlpvUnw/JUVze1dpL11aPi9DJlUzSEZhaX47OmRtbHIkUiJDcCRubHIkdnddY2MsRWBKJUlhTU1ObVFAZFUvcytDY2VzNV1tNXxoZFIsKHVpTCRyOj0jI0Z4WjJKSXdkTz9bS35WcGk1REU2K19JTEJId3FXYU0vaG58UlVSbH5XX0UpTTQrIkYxOUU2dDFOKUtFbCs8MXskIklUMmJqVWYi''@;'; put 'put ''aVBWKkwzOEtOIXlFUjJwblsjSGteIlA8KXxJVVlufC9jZihsPSVbUCFfbF9VWE1DfnFxMjxrN3FxKD5kKUw1UUVWIXhDZ0J3OGI2aCkrVWh9MWh0Ky9wN2x6TXtkZjAlYnRpOGNZXzNeJjplL25IbyRtUDdQaSh4OjRpKnJQX3Aua0MrWDB+YnIyJCNqU0daO20qPXwle0g5ck1fdzdOTTRVJUco''@;'; put 'put ''cCxoN0I1ZURVR15YSW51PyN7a2E1SSVoZ0ZxVTBYVyt5Ji9SZ2JpYWxWWnVjeVEkfGE3ITBGRypQdmZ6Pz1RaDxpaTleZ1h9KlU4RGlXVWpbIyZFJnd0NSR5cnVnY1lURUoxenhNc08/RERJUF56MTBpRCRXd1E3QGRNVnx4aHV4RWsxZDVYKjh3U2RdNmV6VmZXJTZQSHRbRl1bV1clOzdvNkg4''@;'; put 'put ''M29obnhNWVRObDFpK0d5bnMsVyhfNW98KDpqQ2k+RzVodkI9flErKH1UJC5wPnosfHQrUUtSSytJWExmPF9fUnxyPlpEQHg1dV1QNEcsWUApRSI6fGVPV2F2Xz1tQjlDRnsxSVtQIVpYQXIlMEpjTVRydWIlQzJYRkMuUmNzbk1MamImP3Q+RGpWRE02dlNdV3g4fndkMixSbVJAU0t+YFNUaTBu''@;'; put 'put ''TjxdXXR5fUJDVkJ6SURUQlNvVSYmWnFdSVZIYlQvOHZnNUw7eW5tcSh+Sj1hVVFBbntuWGdHbEQ2X0dibmRnOXssZmsiKEVjcHJBLFpKalMuOFE9U0ZHIXdZQDdSTFpeWkNEOzQuRD8wTlBzNiU0MF0yaktvT1AlZD05RmwrYCRfU1hgUCl+Y3pBNGtWbX4wWX1FcH0ufXtEJVFfKzZyaU1fbilY''@;'; put 'put ''PFo5bThfJWZPcV1lY0c8blA+MHlkUmZifTI4aFsoRHJ6blkwfFlWRE08Wl9lUyt9bjlqPHNVXiFaZHg5eENJZHt3Q0kvLy5gMm9gJTl3PDtJZUsmdzRoIX0yXlNhcHxXYjclX0dBP29iIWFKJEIuOmUze04heSZAbE1AVGE/RDc4SGl5QnNLeWtXQmRfbXA1X2I5fkk7KE1AIm5TTUxYYEtlNUY/''@;'; put 'put ''Km4oTTRKKF16dS9uOCQjaGx0YSVvJTg3dk45L01+R0tneUQ8ZVJAbkAocjNuVUNBeCsmJUhtc1AoNisyaGU5XjFqTkJ1WyJxNmJWakl7SDoiflpCTDYsUFtkX2xCTmFlKnNoKkFMNHRgPHtvJTJ0RnN0TXE4aWIzSkI5TklDS016QzE3QG9kUCVFdz49ImRpaXxfPzRwL2w1Y3hyJk5VfDgqI20s''@;'; put 'put ''XnNGKnA8Yyx0UylYdCJMZ2p7ZUthcng/bD92Tyk5LjVLIl1lW0RhT09XMEF8XSxnbU57XlJUL293SE9lfkIvcT1MfGF9XVlXRU1JXWRtdDNBP2YsRlc+RUxiKXEhJitrUmd6OX0zTTptNzFeOVpwI1QiXSo9XTM1cWZPeGJIQGpLO1EzV30sdGUzUEB6U1pOWDxLeXdja3UyVFJsaUZjYy9ZJVhA''@;'; put 'put ''XkwhZVtoNUtVOE9Ha09RbiQudnJxXTAsS1k0c0oqQ1VIS2I8ZkdzcVdYa2JBLnVPREJXUztqT3hxKEdARyRnbSlsdEJfJCR+fX19VFVkb2p9bykhWTRDMTNyWSNnfjxkMVVxRnczaDFybjImaHRBYl1WTD8/UH44MGU4Oip1QlBaOSxkOiRzP3wmMlBWLEV0LyYoZUE+Im0mIS5hU1kiXSQ6cWJ+''@;'; put 'put ''cV5WZE1rV3lbUUV+R3QwUkF2Q18yOylLezU8dnc6L1B6RUgwJnNRdjpMPHRWbStBMzsvUVhvYnhJREN9W3VMRUZwNElJUlAuUlFkSWF3Ln4uMmVAYz8hXmdwSTFQfDErWk17JUkxWCsuSXAhRnRadEJdS0pRfCpETUJwZCVnNT54SVlKe2YldFdtX3BjTHFIN2pXUnR7eShGNCxWPSUudyR5JkRL''@;'; put 'put ''T2BFRCZbOFZzWm9WQGE0LHtyI29GL0l9VHpoPnw2KD9iYyZ2YHNlUz9tMX0zJSsvRCZacUFbMnlnMzI4IXFVMi9dTTQzLEBkLiNwVTh6blNnbiFRTHUoS1FufUM2M21DNVNBSE0xKGkxcUoxPEkkeVE3aENJOVY/bWFrdWJjfXUiZT1sIkRIX1lHVD9rVTsoV0pkS1ZSaGklamhzc1VAOWtMS1dF''@;'; put 'put ''QnY1aj9UQkFUU3lSV35lTSt8PH4rXmFXIjRYcjw/UTJNLnpxO3N6ZXxuYEFla3VSNV12dlc5QWtlOVl8fjxyfE02Sm4lW11hPDBHO3F7NUlUI3BIYmspQWlRKUksOWRme0d8SV5XJkh9eVosLEMkSHAje1oyXygufksoIjV1Kl1qIk5rfVpaSHo6elRBNiY6QHx9PWNFVXY1N09efTM9dFIhL25M''@;'; put 'put ''RVFpKVphWD12cjx7O2ZJTmZbYmg5R0c/QzNOeXQlL21LQzNLJTxlfXtnTEVgfUMqck8sQj4wJTc6Vzh0Ols6Z2R5TnB7UD5JT3tJe1NVVSsxS2orK0QwOVshMT0iOFUlUGZlLDZZKHhGT1M6PiVdWGVvVVlLNyZee0ptMjE2b0dBU15SPlByQ24pcVE8dXVQd04kR0l5RUQucnhxIlt3SnteI0xv''@;'; put 'put ''Lk5KWFAlSHpIeVJDZjBkdj8hWC9NNWcyR2VZNF40XU95PTN6dGRGUUhSIyxKb2xkentmU25HX3RVWnk+L1BGNkxvZHgzKnN7RkBbJkVEJDdvWCVGcDlFbSY0OmQuU0d1OXE5SSROSmBCWzI+JSRRcUdxX1VIU3M5RXZ9amFiQngiclVlTG0hRzZdQGxgeVJGX0Y4JlpldF1gV0BCfms8bE4/K3w5''@;'; put 'put ''aThFPCl0TFksbysqSm4zZEoyYS8xJVM6c0l2dnZqVEpUanAsdHBnUjkvI0pNcyU3IUl3OWtBJnN6REIxfit9OUx7d25ZRTorOE5pKFFxNCF7MDU+NDE0cyxAM3U7MzpAVzk/QFhUOztKMi4zPDl8R1FxWFtBOi88dSlaIW92QiZ8Z0d5VGxdNk0icUF7azFfXzVxSWNOUTVndXkmM0E7Q05aN2Jd''@;'; put 'put ''WU0jV3VLfGUkSDBzdy9ZWiNsdW5zUk9vbj9URkdvTkhORUdHYlVSMHs2fkwzX2h+Y35ecGksdUU9Yn1AWiEpPF18S2NrbiE7di5jSz41K15ad1ZUNkFzT2NlVmRfPVpXdmk5KUBESj5tKDFCLDgqczFZZSU5Z0tyJWJKXUpNa21TUFFQPC9fNHNSY3ZYX2BnQFZEN1Z2YXNJTnlxbT9JXTxmTCww''@;'; put 'put ''P0QiSihuVk9+LD5EYE02WHUldXFtaWd6P15COCE0TGVFPEZCYH1rYHtqSjgyITlAOGlXUSVIdjldTW4qV2twa3kmSEF8b11IbUkkP3pIclt3fVRleTFbSWBwTlgmayRqcFc/eTltK2ZdKUV9K1Z9ezkxcjQoX2RLPXNlOWMzXnE2YCt1Xjtydm9iI1JFVTIvekRaTFdIWT07IWpXKltWYlhzL0Mh''@;'; put 'put ''I3RrUzF+TCgqMG5oJHt0d0Q6eF8zbXROOnZEWkQiXXcoKUNbMiEoZ3MrUWpFfj1JbDhEMHNWWDo1KXJqRFA+a1NUWDN6ZE0kfXUjfSRMPiRYZkxkfCphOkluPU5Ob2F4dyNhUlE6ZGVPeCpzW15zUDAheUUrbTdXLGRwOG4vNmI5TnBwczIiUkJBaF4+Rl1VOkU1aEw4X0Ndd3dPLF4pM0JXWzs9''@;'; put 'put ''M0NyJU1ZcFRRWE5Na1EmUmp8KjZeUmYkcTR3d3Ixc1Y1I2dmMkx9UjpvcHc2VH1lLkNBP1ttY31eZDYlcC9rc1AlVCNrSXEjKj5URGY+aGpUX3pPeXosZklERlooUDhTe3w5fTdgVU44V21gM3FOMSRseXBERzwmJV9MSz9YflBncHNlbXl1UlFab1M5Tn5RfGJAbkRydUNqXnpmJVJIYC9TaSxz''@;'; put 'put ''MmNvRTg5JTcmMFA5XltnYGBJcXMlWjFiantoPyZAMXNzaVdkZ25hc18oY0M4WldEelE5bipuVkg9T1NBI2hGcCohSXBsXjxhfDEuJTVlc20obnJjQz5AYzExSXEseF43MTtGV257U0RvezRUXlBDLDxeZnQ3Y1AhQlhTclt+NWMhI1Z9JWkmNiJAcW8sNzklZX5gSWNSdzVHUyhXOnVjOGF+YVQ9''@;'; put 'put ''LlUsZkImaXBlNmI6dCo5eD97YlJPZ3VndVlLK2c6JmVCW180KXJ1Q0VRPGY1aHQsaGFoVGFFRkNIUUthU25RKmZ3VEUwYSEsIzFYJEZKR1d4W25xM11dXWZ4I0lbbjJpXVZOYU9hWWwoW0NOWGtHJUw/NFQ+TGRxI2FfQC9fSm1iMklLXiRMP0lpbHZjcG9hPz9uczQ2bnNpUUU/M2g4V21HfCxT''@;'; put 'put ''ZFAyc3tka10qViNfeWI2VSUiRDxQNzwvc0ZDeSVrZ0VNUipma34rekx3QkY8XTcodHI4aXp+JjYiSlVTR2NJQDA2OEdGe2pKRz07XS9ONmAmMERkd2U1b19nZ1kwMHoiUyU0SVJxd0BAQHdDNmNtS2YmSm9vVG5QeklaZUA6dztva2dgSEY1OCFCSzpoKG9ER1lhTkRodSpnOEc+clhPQ1UyXSVC''@;'; put 'put ''Sj9ZQllwY1lEUC5mMStDVW5PXWxbRU1TfTk4W0hQdyhwL3B6IThmZWp0WzQjU1JwcGI9MGRJQERJIW0+e1R8cjssYl1ba3VGKCwxRVhCI3AiO3Y4bXp+ZSxxXVc4cyR4Nis4Q3hdQEAubyxGY2tBVTUvRkt5UF1JV3oyfF4zRlRPZDg9aXM9WUhtIzclXTd4IXFYRF94IXFDZyU5fFYzWmlXX3ZX''@;'; put 'put ''VnUlPXkiJGsyP1B3KEZ0NEs4VGhOaTZIQXZNWVMvUTttcFQ9JkYzI3VdZ3VrWVVpUFo4UEFEWjtqTE5yMSFmIUxLM1RvUXFhTnZfUllvb3txSX11Nz06IlcxTSkhYCpBbGF8Vn0rZ3t2O19kJkQ2KmM8Ml4lbHpPMXcxK25CdFhHb1BecF9MIyo9Jl0wTzciODxkS0c2fWNwfEdEPm5bZF1UVXlb''@;'; put 'put ''e2Z6XmpjPlt5JTBQTjNsLDdlVUtzOUF+XlpdLCo2YkRpfG1La0lOOH5aS2VdZD0oVFI5R2Q7PiYxSXNlQks0bW1YPUtCVXhwOUt3a1MhNiIiTTQsJnpgISRxfHJzVWc5N3RYRzFZIy8+ZXk9bSZ0OGdlbTNYYDI9ZlY/IXJ4Wzoxb21VIkxqJXJDVk5HKSVzK0pGPHZjZ3xlWWNrVGM/XmJJZlZ+''@;'; put 'put ''UGVqTW1mdT1ZTDglTzlaO0MuW2BTWlFzJl5ocCN5LGNfc3x1MTF1RilHLGo8bjp3Yn14Wm9fMk59TDg1dHFwWGdNJXNnOyo/aVZsNDN3OnluWHJ3eDRRRntdRXx7Z3V7RWEmO0d2XywpXzZhfmw6NzpAPyk6XT9bXmgyKlA0LCV7di8qUEcxbV5Uen4uZXV5KVErSW58Ll9tOypiOkpiJFJPXTV6''@;'; put 'put ''LjtuLGA/VDIjZSNmZEAkWlVwZzM+OjVxQ2J1OyxtUE09OlYzYzpNNzspTl17dTpbNGdZSz1yUCFvQE9dI2o7OTtaWVVCT2RYNFE+NztxaFtUcDFsfm9aVV1PNERDeSFpUE5hK2JkaTl3Y0Z+bCU6Vy81SSZVWW9vUn5DdE4pM0F3NXohNEJvb3xEUUdGKDp9TiNvdXd2XV9tOmhNP31aXjtgNW8h''@;'; put 'put ''O0VEYmchSzZ6eCRbP346WS5AbVUjfDFKZkdlOj9QclBGSTVxSCRNKTs+VWg5YikxO1k5YC9UO0VMeX5JYi5QX2EkUlFmPz9LU2JKYXZPMVZDR0VRMkw3MXU7d3VWY3MlTyV4KzNLZzg3SzpDMCV7OmZ8X0ZLZ1daUVJ3NVVVVUYoP3BIIT1kW3dYZFNOVi9hZHZHRkhQbVdmS1U+K10/Zy9OaU50''@;'; put 'put ''Ni9ZeUJ4UkciJCIyaXM+cy90SC9RaGhKRXhBLz46OltaWzhnVDE4YEFMV2s8UzcqLzF+UEElIjJZW1AzQDpkWXI3O1chTlQ4Nk1QOCt3Q2VGITB+VmNbNmVOdXJkK0xoSH55bTo4M3BvaU9UYyg5QnlbKktEO0tIXUc9O1plWUR9Mlpld3Yqd2lXeXpqMVJKfG1rXkx7R2VwejNYfHwiTXE5RXw6''@;'; put 'put ''S2k7OEozVz8pfXl0W1clSm4iSDtpMDhmJCtNWzF0ej5wOjlmeTB2NjxpWlFadVZrOmlORis/ZX5JN0h8IWY1cXs/JEM0L3BzVjBhXWdkeWpgT3toVjcqYzhqWypAcEk7aUQscnskKU4qezVRQHgpbmZVLkEmbFJqbG0uZU1NJXN3KGlrQHkpWyVnaFdZQC5BJjUxLyxaaSRhcGUpMWxOP2dPIWNx''@;'; put 'put ''PExEXl5mR2U0dk06PCNHQjlCRk45Rl9FeUA4Q2xyZUJMRU1SIVl5OExmfEx6S0UwZDwiQnxIdEBoUDo+bE94eiZxIk4jLix9U3pxelBMPE19WCw0LylXO1R7NHB3N0tWbEx1TF9NVXhYfUhXb2xgYURQKl5XISlKVTZpJjRxaGVXM19uTWsqfnB8czlLPG1fVTtrYV09Km1TO1opaXhRemNIQSZf''@;'; put 'put ''RjpRQlg2bTlhQTozZzdQaFYyYThXW2ZfNDI2ViRQMVVhWUtxVHQhSjpxW1JqVHEvQH5AeWdsYHNvNlc4MT1td2VNdGNucXg+ZiFMXjtePD0zbGA6RHtUL1BpeVdmLnw0fGlxPndvOXFwJiVMPyhtLCNnVlFyfXpCQDhxfXomVn1DZm4kUGJ7XyozaW4+a2JNYTdhOXosUiglPmdCXzRdWzVfdjws''@;'; put 'put ''Y1JycWVsQGFDall6K1ImWV5dYyYxOUcrZnAiX2JvSWQpZUxgZTlVMSQ4JEt6RkR1L1k6O2I7b3JDQzxAN3JjLEcwVH0+VipGYHIlMilJdlluPUFxMylCalgvbltiQGFBLEglbjwxTEtgfTIwUWZTWGdGKSxfb2A8TWNRKF5bKzA6SHQlTEVVTFdpUiU+ZyVmOUFKfHolWjRiWGR8JjNnPThyYz0+''@;'; put 'put ''YGQxVVUkVnVoIzAyQjk7Im5VK0ZbMXg4fkNrNyIoJEZFfEo6S2BGY2xvbyZEIzs5aTF7Sk96ezRSJENWaUB9bD1CbFF5XVVoent7UnVqYHZ6akc+dktOaXt0OnQ9ZT5yNEc/PjRyNHQ/b2x6P09qZl5ESjk8JHQqdjEsb1d4TlhXLilfV2p9VGNzLytXc1IlPXBUW1cvS3NvYmwmPXZCNUVyck1g''@;'; put 'put ''Uy9oRT5dODlZck1UfjpyJmw6RUx2QkZIZlJzZWNvR2VPXi4/PEt+SD1dbzlsJV1CSUVCVTVVZGgiej46RExJP1llPil1MSFhdil1bmBkQ0lBfVMkVEhDWF47SENRNzNodHVdQF5iTVpmRnZbZzB0OSl9d3Y8JHN3SV15fCZJaTRKP0owUjh8UD9yInZHJWM8JXxSfGhlLkAmRnBQdEVvWTxwaHR7''@;'; put 'put ''P2NkNF9UKWdGe2A5JT51W30wc0BENWgkS0NvdykzWyl+Sy9kbFUjcXdIT3pEI31PUFYhYW5gJENebiElfTlMQmxwQ3VfQS9vKk93NT1sQmZDSD1TaEA/WGNdc0IvU3BHUkVbLGhnNlo/PS55RDQja1E6QGxdbmhyL20rKn11SmZWWyFackB8PWcuQ2BdZl5lb2kvSENKPUF6ZEptO1lXa3VhfmEm''@;'; put 'put ''PmdiMVVoUFJXMX4zWSRJPE0kQ0JMTGFbYC42IkR+YTQsNFVWWDhWe0BdR2VZdHFzVV9OOFZgUUNCUXJoTFM/Tls6NjBQbF1yeCMsQzJdRDxNPTFbfTgrVT1JRmR+MyUySWZmdFR4M0U9TFYvXil4UDs8X25vR0Y9cj5kdHMkMXBvLD9aKTgkUjwjUilqcyVoZT4xMCg2fmh1NHs0Yz9wVEQ2KCxi''@;'; put 'put ''UUYmWmoxLEFePERQfm1gb0BqWSI3aHwvKmwlbCI6L1hKQ1Q5JUxTbFV1NTI7RGErLyRwQVF3SUE5O29KYlpmdklDWj05YWM1KF1lbG1jU1Usa31+eGIvdjpbX3E+OmM2NF9zQl4jIV5xcVhgVzBacVB8N0RIWzs/b2lCaE06LyZYWjRnaS9JaSZQdmA3OTxoOGguJkchPVZVLzxDOTZrOSs4Z10x''@;'; put 'put ''VStzfl4rMzlzPFszVmJpWjx5bT5EKDFmNHtxRVZ3Imk2ODxgL1M9ezpVb0UjQSZ7QDZzJlQzcSZUTF0ueURwdX5RQU09UEYwY2Z1TjBkPU51QnVGZCl9RTFDLzJSbElYMj9ZZTE/WWVQOTdbelJVWzhWUmN5IiVvRT40PElhVShuJnt1UmNkW3o3VXJRQDFNUSRkaF5ieWRmNGAiNCZFPDhzRywq''@;'; put 'put ''N1ksbnZTZ2xGZXN4d0VqRFB6dj5udSZjNmNTUyhXUyRQI1tTcHEoTDlgQ3p1XjhxTlBMWmQwQXg6TkBZdFlWR2MuVCVmNiZ3SWxAKlhBKS8/PF1oYmgxLHZsVnVVa2cjaTsqNj8zdlR4JThLaGY0MD1wK15ye1peRTs5d1ZDZTZUaW5admE0Z1VsVkUwN29LIVdxOCw4S01zTXxPRXpualIvbz18''@;'; put 'put ''Vkp3I1g1Lk9VITl8Tk5TZygrb3M8djhvOGRKTjtASFBxMEpKUWF9XSU3RDkmU3s2XmJuYEVLWE5mKUBlO1s+ZTpLLHkkTD9eNyk2d21YK3VHYihsL0hEIzYmJipJT1oyZShwaHQufjdhKyFpRV46ZEI7bGZ5U1ZldHthK29vWnBORDohOWRJajxMTzNZcGtmTk9qJmsrZmQyLDZ1b0BBUU1bencw''@;'; put 'put ''NjJVN3xaWUAoM2ZWXjBweGw0bjozd3c9XXNOdUNeenF2N2B1eDUzTyl8Y2VtRk8jXV1PZSEjTUJyYCpiNWBtdjQ3ZkJqXiJuYFtVUTheZShrd1V0Uk8hWnczaW0zS3taWWxBW0BMRnc4fWkqIXN5RWU0NnJUUml4ITA+KXspOy8iRjtLWks7P2Z4N2FNO28zfXs8RmVCcSF6MmtaYSlwRyxjbiZT''@;'; put 'put ''S1B+dml8YFZRM1g4ZDJ5W2o7NFRDODJUUXNhaHsic3k7M2tAOSxNNmQjdyguZGU0eFtiT00oSkZifkl+TTh1ZTYmYnRITXRJfHRdQi8ya08kbkhmZ2ZHQktLImk6SylJS2Q0UDJrXlpMQ3tgS21CPCM4dmZdUGo0TUt7dytkOkY3TXxIVj9uOW48RyF+KlE4endycUwjKShObD5GfDI3ZVE2eTVg''@;'; put 'put ''ITMvbXNvZ11JZmBsM0AkL1JGUDBkNWZhRVt1aW9hZS9zN0BHTitaTTgpYzJHPDJwQypEV25BSypYanFYODtmZT5NcmFwcDNxQzJPU14wPSR2IjgrT2I8QXJHUnVENF5eTklUSTdKXXVmLik9QVBdeFR0a1YxNnRUYEJSL040KiRLRyxsN0dhTEJvW1RvbEErcGNuPkBATT8+b0JJNDZ0MHNxUXhu''@;'; put 'put ''cTw6ZEo2QiZLTl9iPk0lQWN5YSpxMnQjZENIU0N7P3J1fWh0dyYlT2dyfmBITm1GWkx7fTk7P1huZjxKVWFVXlVwMyY5Ykt0a2tVdCp2V31DS1UyLHY9dDdpMC41LCN8VGlocztufXA7Zm1bO2Q5eStbcVh9Lm8lenhoRjpqeUZmaV9ROm5HUW94dGhMMS8zUTBHUjRfMj9wO1RVOTRQVzo4d3Ek''@;'; put 'put ''Qy5Ec307al45a0lWWFpSN1lCN3MkKURQWFJQVCwrRCYyUkVITk4uOTAjJVd+PT0kZiYxbTswLHtHIWdwVDRCZj0hQjxfOCVRTWZFYml1UChIYylmSEF9I2JsRHQsP009dFc7V0IiLnFTOktbKzFSUytkKjBFeHpgcV53fmh1NHl0NDJKdSp8QyRfaSxpXTo0bUh5SnU9W109TjVOSkdYSzEsWWJT''@;'; put 'put ''XmB5cUt4QjUlPnRJXTRyY35RZEROU3NMcCM4U3ZsfUYvT00zVDRoNVovREpHMnpYelFwUkpoW2h6cFJmU2phckJfZmg8YDNnYWNUUDQuYFtePX1oS1BvQ1RaKEt3MnhHKSZhQ2VGfjRicUA0fH1GLHlFNmtALmRQcGB0fkhKeyVoWFpZVmYpZU0kfUJLMVJGZHBDZCJVOndfeVN4OXlxVjZHaCko''@;'; put 'put ''M2NwYlRmTEBfeyxlWlsvUkNfU2YqQFlWUms1SUZyQ1hCP0o2S180MmJjUFZlOUZfJStXTEUlMFA1PDxgaFpEVXI5PCImRFtKLipGWXxKMH1yQEc4fjsmK2BMO3h3UDo6MD0+SkMrUExNb2NVQGMoN2p5dC85Sk96d3J7UChWZWskYWtyRXwrRXBga0A6aldjdWslUi9ASDNqMSZ3ITYiTj1hTnIs''@;'; put 'put ''MmI8UDZ8Y09sekdPT1FbdiwxYTsuP3VlYyw6Mkplfi5rJiVnfV5eM1FJfUJFXVlNL05mNFlWOiE5dlo7emJmTjI7R1JlNCguZj4oKlpjQG9pVy5JPlQoVHxHXlhtaWlASkhbdURGOWEhNSVdTWdNPSJnWy5yP2NbbEQ3WzFeIklZMDFTXSUqKjJKY1RBbCp9fUpNJml+dF89RCZCQ35PT0Zha1g8''@;'; put 'put ''XkNyMng4UT1EeUQsb3pKUU9zNklPLFhydFs/cFR+RzRAYUQ1c2BGPmpRPVJmS0ksWmRzN11LUjx9aypIMj1nKy5FXTU1NHA8RjxDMGcpPitRQDtoeS8qfmk6UlJpMmJmVkBNIltJKHp6Ql1sISN+azpOPWJGeUI8VF06Tj1uQnpHY2t3NFNUPTQxRUxte2lCMm0vVHZQW3kyVjxNazdSJjw2NnBN''@;'; put 'put ''QlNIVVFKO3hePjl2MTgrU2pMeVI0MX1gSG1TO1N4JixwXTJVdEA5OEQxSkNLQkxZZntEWWhYQjU0NEBQJCtNPHNEInwqUXVMOEdWRGJuLENma3VzckAjLntMNEopT1s5YmQmImRKc1hyfFhtJCV9S2ZoVmt3a0M8O21dZ3N4VEAwbUhwOFc4czghIiwrfDVUK3dheFducEtfZ0t2am5JJCU6XT9f''@;'; put 'put ''PSV+R0BNK1FjdT51OUdMTElRc1htP3IpU0x6W2BFTXtzT3lpc2NDOlI8JTc4JTAwdkJVaXl5fFNkYXtNcy5RNmpFcnh2dyM4S0Q8fXAyLD9DOW9NTEApZG5OWC40MjtgVl9AS1F1THVmdzVeSyxQVHVGSTwqWURPbT99Sjc3R3h2RSFQOTAxW1dVaWNoelgoOE1DV0U3bXkhZitaKFcqWGU7JnFm''@;'; put 'put ''Pip2e2JkRFN4Mj1FclV8bi5wRGJ7UkEvRzMlNyxYQlgrcTQ4cyM0YTBGW29BMCY5LnVROE0zM211WFspbTt6fH10KnxRSG4+YXl6eUdleE5FMHxAODxCdnFARUZeUH5OWUJBVCJ5SjRYIyZCJUUpciltQUopeF1HVFRmOUYicENrX2FteHM+Zk1JJk8oY3hnYCUvNkZEanNbR0NrdylIPFJRc2xj''@;'; put 'put ''WTxPS0FeWnA8UEVOXVZeL1EjX0dGRk4xZXNsUlE7V1RgYkIqRW59cj1tVXQvXSFkWDhXbT8qVG1JNUIkWSxCMVF7VSs+SWFPeHpWa192KER1I29tSEJBSnlKQ0tQXmQ4ZDhURDIob2JkdFlNK2I6VWJrO1Y1fHBLYFEvJWhUNVk0dDsyJlFKKztFREg3PytnXWY0bldWKytTLHMyUXk1RDY1Mi5k''@;'; put 'put ''RDFIcSx8azoqVSlpLHl3OmhQLn5lTEwyP3dONDElcGh5VWpyemMlZVkwfSohZFkwekBaKWxrdzN8eUIrPkJ3R2V0UmJtcD83I04sZ2M+PTAoRllhJFU8IU1bYGJjeSZWWixUdTBwL0BXXl03KnV5QGxROltJZGVwYXwjNGJuV1R3TSF8PD0iJiZUbTBYQGd5IyVAdXg3ZTYyeSlAQDFgRF0sN2kx''@;'; put 'put ''ZyhINTUjfFA+VXUyKVRseFJJMTBwVFd8b1UoLDU4Zm1vYHkxSX1kYzBvUkArek1SKD8mSHwxcihgX2Mrb05EVVZ1Q3c4NENqR3d8WntULjo/Nil3UERoR05sM11PNkZ6fVEvVU8zcEhxXX1Sd2xMVTdtLzphUTRQLjVNTHkzb212dkR2S0t5fHc4enxsQVVdMCt2b1V9XTx3Nj59RkNHemcmPW1z''@;'; put 'put ''VlAuKyFkRmRGSVY4UXJxSGt7VHlVZVIzbTY+TTpgQmM3YzJRek4wXnpaWztHOzpJaztNaWNtUyNiNWQ5ZzdgPVokPHdIO1slLEUzKW5SKnE3KUNTUjUlR1lXRDRONVpbKnV+emZrUko4eHE0dnMqYztwUmFTb2l5Qileb1Q9PXgkKWFqLztiNyltYUldKjo9Z1k5N0I+OmBkJiZTRDJWKFtSUGRJ''@;'; put 'put ''Tjg8M2U9eCZDXWZoNWljYWpta3RLOjYhSltZNi9zSEdeIXdeNyt0endxZSJXdUdOX19FOkpGbF5bdz85IXVCXSJ6d2RCYSk6N1dXaUlZV2pKJC9qZWBqYF1qfC4ieFg2dWVeVmhRP2FMVSpRImRVU2pzI19EOiR9RFFQdXhZXUZdZ3s1e09IYz1VZShxaTtSMWQkZ3RrSy9FZzR4aFY3MGh9Q3Mq''@;'; put 'put ''IismfGxgOChiUSNzMXhTa0cwP2dSfXYxWVkzQ11JNnZhbmxgMC52WCt8fEtTYWBlaShpT0E0ZFQ7bXV3N11tKS96P3ZXbmxMTEsiYjFPQ2olODEuOyJYJTZpcys7Ik84X1I+eUpbVWAhfWNHZjgiYmt7MS5MS2x8ZHwyMk5NdyM0RD47Li9oXUddQFtba1JwOUslMUFNN2lGSDdSYkptUiQ3Pjtt''@;'; put 'put ''cFo1MTZQMEF6cE8pXVREQEBAQENLRyFgVE96c0hLVE5HZWJsVEBAfXdpc29lbiJLKjV4SlZnc0Zje1BSJTBZOC5EJkQyT3ojZT0xOSx6dUEsSmZycDlLJDs4Z1RNfk86a3laZiJgZSpRclpyMCpoSCp8dDM9LHIzQXZNMHk1VlFySDo+XXAkYCNAKU1ja2ZwXVM6T3tHUiElYHlYT0VhWFBZYWFH''@;'; put 'put ''XzB7bUY1SytCZ2pjRU1ddU57R1t6d0c4fFZ0KF9NWmlvV0V+b3c7VFJdaSN7Z0N3aWp2fl5hWjhkdWE9cF0kJll4L1hIcWFpNlZ3QH5jc3NCOU53Qiljd0F1blcqNXJNcmF3ME5pTlFCNm4xRjUzRnUjR3s+VExdKHVXW1NSdzMyb3p5KSMpemw6a2k2ZylpaHBHe0gqS11fRlo+WE9HZ0RWcDVa''@;'; put 'put ''WHY+Sj09Kl5Qc2FwI3pQPnc9WnZLZGNnNnpNTjtWR3cmWiFDfXg/THl8YHBlWThbN1hYK34zSENObFNEYU1aOmZkb1NtSDxCR11URUhqeXl8VjRhaUldcmM5MiJvNm9KckV+IWYqaSR8M2UqaUJ+L2Reb11vbUlzR3RhI1khcyZOSHFqdnEzWDYwNVhxS2pKckZtTTYoKU0+eHx2Jj5QPSpLXVQh''@;'; put 'put ''ZUpuNjspJSNVSGYuL2BPbnguM04lfS9VZk81aC5bOD1PXyFldj5nfXxgSn1BeVU2MDUoOlZHWVo4Um5hPn10KkU3PVlCTGY2YWJeITooMUwmZU5fQC4sIW43ek1FczUhV05rdmpsdHElekIwfitubzg8fn1HV3B7alkkWjR2TG53LkY1cTNGWUlTdl47V2VyVik5PTlJfVE9dG1hSCpFPCVHXnl4''@;'; put 'put ''fC5MR2A8VlZyTUBTWiVTKy9RYks8dEN9O29fPmhgaDR7TFJTYkNUUSppWEovWXI7I2xeS2hxWWM5dCplJEhRUGllPkEmYWpJKWRURGcwSFUrOlJOaU5GS2p5IntwPFFeKjU9b1Z7KkBOQWMoflBuQVtYKHg1eHsrKXE4XzpWKU8rMThyfVNPIVAsYWNyMGZsYzx8VVV9LzhsZVEvd08wbFgrUXdY''@;'; put 'put ''UTh5NlYxK1svd1JIRiZsZjBGTyMqfCZ+TlBfMU5PS2t9VGMsPjBATD5MK1p6OC9JKTNXV3d6bSVmNUdqbG98Jl1IbHVefnU/Zj5JUSt3O3VYKHRRdkhbdTtgfm42TG1TIiVeXj1JQkhVK1pVXU92SGtZX3pmVkoodVE8JHpDMGc5YFJPQ2VDdkh5VHBOIUN2QCFWJVY7Qi5YI2NkNHliPGcvZCZs''@;'; put 'put ''WTBpPUs3QHE5WWUoIUR9SlB3e1tuOHtTIXNRN2tFMTxDWCRMIWVMUi5QNnBoSGYlJmRwbEkoejZOekVtbCYuUWsybz1eSiVIcGQpQCtFL09dcTlBKSE3dmA6ZE0raVghbDpERiZBPlM1TFNUYXxjc3s0JE1ke1pMVzJJP08zJm8weXNLKVhERCl+cU0kWVhgRUZ2IlZebEl9XUNYdSNrSmVBaE17''@;'; put 'put ''NVZTeV1COFczYiZDPl4xQkZ0Rl94e3w/cTV5QCgvWj55ZEtCMWpvSHZIRnN9WVMzdlg5TXFbME9jZm4vSl00ISlbOlMiWzR8c3MhYDoqQkhjSTl9UkZTKHVCODY0LkFNZG5NUnpGTSxMKTY2VX5qbiVHT3VYUE5ZeyNXeSJCNj50LHFARUwqMDpIeyY/Ol5eQX1pZk01MXUsT25gR0Ahe3FFVDMq''@;'; put 'put ''N1BQPTsqMyN4Iz1FflgwUV47Kl83Q1clbj0qPm88flVnciUjWnxfUk1QXnJxYmZFKTYxZFVzeDxaZ2pDT0didTspI2hNOFojeDQlXjdPaHA+I0JHPHQsW1ZzU00xeCR4JV9Je14mZ1thZDo3XUYjYTxFIygyUVVuNi5VMmFAMSJgNUg0UEU4Vmkoe1NGeyNTI15EQmUyZmU+aCw8YSZNS05aUkBX''@;'; put 'put ''JSl9P31uVzxja2pRU2JWMkNFS0JLSnQjNiZdQ3k4Y1MyeGksNiY2WjAjVWtoU3cvVTlWX1BpXlV+ZWM9NnVpRVZUYF4/VUpabmtad0c1XVcuUTtXJGkqZT1vMUhfbGV0UTo5UXx3OCUqViI4PiF3MUhUbkU6RzIkWi48dmtSO3cock0jPVRoclZmR2U3bUEpcko6PW9RNC86eHZQaFQ4LDY9QyFC''@;'; put 'put ''XjwjQU9HOzBoP3dtfDYmenZIaUJ7WiJuencxO2ArPngpUlAjSnM0WFVBN3hTNmJoIyY3K3ZgSyM2dF5nL1ZjUWw8UHdAIWksbWlPP2Y9eDN2WV9OOHdtSWI8ZEw3clVLaklmOUk4bE8hL0ljYV1WeHVAZjhXTWY+JFhiaHh4b3ZOSkBvKC8vcHNHV1tMNF88KWxQMXBjcS9AIiplRmArJWBta1BD''@;'; put 'put ''JHg1TT5tQTksYHpmSGQwe2lAe3dJM3p6QDA8LCRiRFBmMHUhOX0xPUpkRFBkUlFfOUhaUzgyWXloIVZ0a3V9UiZqKSs8KSV8O2RiRm9YNmlFOEsjWnhLRGRibFRWcVhyNz1eeltJZUwxVjovXzNaZmB5NUUiRnJxQzM2YSIsMEdud1c9P0I5fX0xPGxici93SEQ+VFFHOGtfdmBYXjBvb3hOaGB3''@;'; put 'put ''b0ozeyslV044VCVGZjhkQHVYYWNQZmFsZXVHL3F2MmJUZjNUPmdWdkJfYjpycmhFW2ZpfTEwaEhee1tzNyJMfURDOE4xPiRsZ0U4SltBaVM1Q3BOOFdLOGE0MWU2L113bTUzTmMpdTYlWVdSaUtSUz8uRyFxVkJiRlBuK3xjJFQ2fD9uQkwkZkcjcSYiaGB3b3JtaDwwbVhfP1lVMn0qLHdHKTJo''@;'; put 'put ''fGxxZFBaKjtZLHVSdFQ4ekdlO0krU2lsVWlscVkvZD0oelEvcW1WaThKPFQ3I1RtUVJsVF1qbDFsdXNgTEZTP10+TyFCTE1PSE5xZldZMDh4UWV4a3AoWlRFZilMfUUrbEF6LDBnQ31eN3VIL3RhQCM3Mkd2KERAall+RndiPzY9fHgxflB+WDpwKFAxeFFLZyl6dzJoMnRyYGVjS21EamJ7NWJK''@;'; put 'put ''MldzbFNzMlpDWEVgTm5vYik0UyMkb2BGUCorRWZqK2lEfWUrI3F5LztMbzYuXUBMS0ZdYzYrZH17VDZ9cyFDUG0manl2dWgpfT1AWmkvJFZgNTI6Pz1kY3d4LlM9PXRBfC87dntRXUBAfmtQUkNlITt+MHVpX3FNVFl5cEU7I01PJitgc256IXZmb1BQdkhLUkAqW2BqM2BDezRYIklXY0peeiJ4''@;'; put 'put ''azBDM1ghOWZLVlpybykrSWB2LyZ6V0kzO0wqKkokTlBQbnx5cSoiYVIrPl98dm1yL2cxXmZWaSlbM1VVQ3d8dysxTVs+e05JZ1tvaVo3QEA2dH0jI1FAckhSYzNWMX5ldC4lbE84V2FdR0RYfG9SWlAjMy9GOjk9OVk+Xi5PXms/aWZOXlVzI3BDOyhWP1oxbn1WMXJpTyF3X0YsRmZxeDhqVkp7''@;'; put 'put ''Uyw2QTRWVUdlWk1DZUs8anQvImV9TWlPXldyaCUrWH5xLnlrPyEmWEIiekZgQTFdUFBVO2E3RCtbIjR3WGAlKEJ7SW1jVHBaQD8+RlhFRyZZMyg8TGFMNDhITSNma2kwJDxnQG1lajdoM2EhXShkaiJSSDkmSSgwKGtpPkkrY2xjd3p4USxqS3k/SUZ0dEElQUBYUlphRUFnczg1aXArak9aaWMh''@;'; put 'put ''XUtGPDBfbEVwR3s5aDspfkl8WG5Jc1YvbmcqMSssPkZpVmB2Jig3UlJ+RXEzLEJVaGc7aF1MKHF2SChOKngreXdxbFExOFRvJiR8dnBmfikzV0x1NWhSemdeeV15ZzNhQHVlZXdYJUJyamZyPGdqOVJ9enAhUm0vQyhDZEVKLE51Q08meW9KWDdvfjxyZnZbVnN4Kk1RYyFzfCZ1KSEhIkU+eUZv''@;'; put 'put ''aT1sJSw+ajJsOkt7YUNSKX1WUUJkSyxIVTlaZkA5KjwqP1c3JnJsOkNCOTtTVXN4b3p2fm0kKkdDO3VDaEtSOUkvMjZVRlVHYy4yOWslaEBaa3pgLkJBSl1FUWZWSVAiaTpDKn1OYSxUQyM4MD02b18/TUpfc1AuUSUpL2o/QFBqSk8oRSlTPiRoJSMsSTdAJkQ9eUNpMmEkVDlSb1lbL3pYO1M/''@;'; put 'put ''QUtsZV8/Qm4jRSNMKnFuMl83cDVjUztvQXE7cV80JV1FZT14WC9ZLyZ8VDtramY4aTgrIW9kSjxWXSx3a1U9WUZMWS97P1Iue2VkOjVyKXV8eCs+TUlwLz1veix+TyE9Rz08YmZGbCVPaV0qeVY7dlNickdpN0dgaWNxcENPQzJoS3RDK0txa3F9dD1CU0FKb0Z2MHszcH1HcTdqdHhGJnVJK0FK''@;'; put 'put ''RnFUeWJFL0kvcGRVck9XYDc7bXchQ3NnPWgpMy86IUVlJT81XUtGMjg6fkQyIStsKD8xRjw4Tit+NVVUIW8vKjJdQ1tMSiFKXiMsVHNbK2gvd3Y9K2pDKz5HO2x0IylZcVpuaWZeW0tQMkElLGB6ZUYldj0vR35JKz5yRSgmQW06SUlVIXAzfTxadzpsMHtsZloxaXYlMGpiZ3NYKCY4fn0qUjxl''@;'; put 'put ''Y3lOOC98Ll1IYDRgKjxqdUh9VSlnISM0SzNGUWZRUGdOOFFlQW9eT0lQOTltKnBuRy4+ak1KZkA6cW1RLnBMIXlvZjVhZFlyLn5yelplVlVsMGJKZCs8YkRaeF5iaWZpOVdDMXFuPSk2aHZGTE5vaFlEdTg1e2Ysaj1bQmIrRGhwQC9sdSt8clRzek8pJW1zTXBzNjFDUzlUOiVxW0NCUEZxL0Za''@;'; put 'put ''ZUR1QU1dd044WCUpaypMRmxAaVo5PUg2TGdBb0pgaWBePUkmQldSOFU/O0BPcEA+LFQoOUhZcnhTRktxVGNwQExNQ3xKeW9Ycj8xMCEkcT1iWXY1Ml0/KW9tLCs2K3hAJWJUREtJOl5tQGV7MW9TOHpvWVJhPjhFK1E7USErejVdRWNja1NbNVZ0XW1dNkgySWUrajZFK3RkVEllNWBeSjBxMi5k''@;'; put 'put ''ZWhlfFI4TDt9PGhwVTVjQHhkTE4+OGtGdDpHeFFCUChwaF0xMC5IW2A0LDpuVTJNcX0lQHNQMGY1Z25rfmEkYkAxTixmcGVhOi9tLEY2ZTshZmFIMF9CJkh2YCEqI0deJHpSemtlYFN1VDosYVJVWz45IXIhbzdAVWlDWGd1dl1jS3heKVhlPipMQXhgSUlqaUlNSkMveUVjan5SKjZrYV4/QjJs''@;'; put 'put ''RS5mSEUqPz8pVFJsZWcxJVIldmE9WXA1VkRMWzY3Ln1ebGFOODAieUN2MHZdTFAzYS9SYl9EQyYub2lfW1lLbGNMaWxvR0xUSjN6ZjlhdFE4ViFPMDU/SHhSc0lII3R8WiEzejJXISV1UktVYUk+TlJzVXNkRyF7QGwlckBeYTZOaDY0KFUlISt2R0dgX058fVZsanMiTT9NfV1FS3dnJEFJWS5b''@;'; put 'put ''KEJ8MmhmZihLdW1FRiokVmFnd2k5UFghdk5fR2Y4c0Z8WzZeOWQ9aV88I0Nee3dAQGAyNDZWbDUlV2hAMjROPC5LbjNBRGl3SDk3a3kjI0NiV2xGNHtOX0hEViMjQ1RXJUNNVGxhUiEyTk4pcz0/MT1YWy4mWWQxfV0mZi8sUH1NemRmYXBdVzchWC9VSHpdSSR0ejlJcHRjV09Afl17fmxgUz4y''@;'; put 'put ''NEZNVjQrI1Ixd1pbNjg1ViR1OiszSml0WUQ4LnJeREVAfExZXTB2YHEleSJxfEBLX2MmIT1tUXg+KThRc0NeT2QpOyNxMCleTmEvR11XZ3NzTih+dTpfdkhqRFl1P3dHYDY4JGt+cl11W1FmNG8qTyJJNk55cEc1OlViaGVddlVVIS5aMSJqPzRQazB1Yml4RVUqQkJDeEZIQ29YciJtbntrKSpK''@;'; put 'put ''Pik3fWFrbjF3Ki57e1Z8QVYpdjcyVyswIyRvUHZIJElJVVBIZk8vam14JnFAeFBIUDpoPlBNSHdHcUdRO15FRFNaW29wLzM8TWlMZTI2MS8vdTwwR0JQSFMhWHZjYXNUOkAjL3p1bH1mWTNnYklxYHo9fSNUJV5iekk5XWJwUk1jaSw3Oyk1JHh2RSZPeUlxSVVkJjNTbTpjeDlkQk1PditZMndm''@;'; put 'put ''bCp3NSkjenV2WXlCWURWfGRXPHxDe2BqW04vXzxlMHo9VTg/a2ZkVm1JanwsdTNhViNjX1ZbalckO1AhIzMkR2oobEVWNHFnZGVzT0hlZ0deSSsrR10/bzhXbUAmK2F9eHx1Q2phNUF9bFFSN1BvZnpXWzk4aFQjZ1deaXAsdF90K3c1KTFbXj1iS0UhYEdsMjcmWWgpMlo8JWNTTXE0Pm51WjZ2''@;'; put 'put ''fEV3M3pocnM3by4/fjZDSDsyQzd4OmslOjJReEBzTlArRi9UQHNKKHp5QHNSO1BfKERgTmNaZz00UDJiZk50ZDx4Rm9ZSExIRXE3Zngod2pJNTEkZVI3VT80WCRdJWk3SnNJWHR1dl45L2RVezYvNUIwK2dtbFtSJWNHOFRDKTIpeV4sMEw/PHt8On5vMDJbc2NaZGgkSEBPdks2d3wvKX5fe3w3''@;'; put 'put ''VkNQbkh6ZVghQ2NkeG4vbHtFOHFnP3dbXWQ/QFM8Qz9bZk8oRnFyR2BgRTZlU2ppTUF3QEJXMXJuclB1TW1pQTx4bjdnOUZeYVlXYSpGSkMzLHV0KVl2LmtnfVNRen1wVDFlfWFUPCNdazxmTXVgYzlJIyJXZW1QZyFXdHtZc0RWT3MhfFlrWXI1cUhAV2lMTURIdGl9VjNucn17Nng6KD1RM0pw''@;'; put 'put ''ZHV+Xm1lM15EVGh3K0o1elU5YiNRTWBbMkJ1NHg8TDFlR0xQKEdyY2tebXUwSytBb0wqOmcuZSNebW0mU208Q0puJXl9LyVpe2JaJll5MTd2TGdZR085XmlVMjVxZntQcXZLInlRd1d0OENEWipDRC55KzR8en5xImBOXmFWQHo2MyY0QntHKklifVMrJGBXJGJJO3goJnlBfX0yfF13clNfO1d6''@;'; put 'put ''Zj4wOERLKkJ0bFkxYWRoRzdnWV5yYlVgbWdlOVd0PWd5ekpEKkQvPi4/MnVILHB2YDw2WUJfezRrYmpNRzUscntFIUgvUksvLlheUlFFfVJbZyxjbiZTXkVASFtPO08sT09kYzZMbzFOZURwOyU0QkhyRVRYOmAxLGJReUJUSVZmTlAzNSxYLHVbLGg0Jk86Nl06cC8mel06YmR3PDcpPCtvd1dI''@;'; put 'put ''KXJCNEdXTGl5XX5qRl0rITZUSDh6OTQsdDNraUc1N15ZR05TdW45dmtScmBeLjg8LCZtTFpLWkJrXk5fSXNUXV4zKy4pJm1ZWVhKYlFMYVdNM1hzaihbSWdeLFJ8W0VYLHZgTFpObUV3Qm9fQDU1TSxmZHpXSyxYMix3dyZnUHhuI11jWkxdaGt0aGoiO2ZDJCZFZE47N1NQX21XMVs1UzosW1p8''@;'; put 'put ''QERQQFoicDY9cHRXXyJXSn1mT1dgcDI+W21laTxpNXNgOTJQOEppVDhKaU5ZKTVgSG1ESDN+cT1gOyo1MTBKIkIyR3VkUk5oTTFsWT4uYUhWRFkrWzpJRnhKUkI1bXVBJX5QbmZWaHEyLjRBQFJhVUdUXiUhYjUjcjlXX1hObVYvLzA0UWl4dFYxYHA0bHk1cyM7eSpiLCJCNj5CUDMsIkI1aGYx''@;'; put 'put ''QyI1Ny85JWBON0h8S0FSVz5dNi5HM3h3bDxuSyt1SSE7QjZlZEx3Z0wqM2MsTjNIKko8S2FAJjR3e1sxdkQqaXVUPUZpNENSQSNaYDJiKlBaJE9qe0txYFZkaDlqdFF3aGApWShdN3VLaUlhYSgwNG8qekhESTx9KnhPYzh2PmlXb2tYTiFFZkNKQ1p7TGJ8LEUvY0V0QmRnQkApbnRyaX58Q21Z''@;'; put 'put ''ZSZbcCRfQ29pfWhCfDE3VUZ6bHNIeERdP11JeH50NyJ8e21FRGx5e1lmOCRKbFBZbE4vUj5nTVp8OU1zJjdeKjExeChbcmIudXIlcXVZPkYwVW1Ta1hoOjE1Vnp4OVA9bVZjQGFqWHR1KE53emVGQ35gYSFLU295RTVYd2swZzo5ZVFKYkRmc3AjLCZFVUtVVXVyVF1pS0Bnd2ZbNllxSU59Lm9Y''@;'; put 'put ''MmljQ3RbeCxALiFdQl1wRiV1V1V8eXYhaSFRTz85PEtPV0VQXyRPWCVNSC5hPHA8Qitvb0JzMWJxOTdPbHpJXUIpTzFRZm8hMnpEfT5pNjgwK1NXRCYqeSJkUGsoTGZfV21YMjRaPV16Zi83OWgidG4lPlckb3pNPkk0e3ReeUd3PEhINHs0NDx0fnx8dl5iJT9CNS9JaylfcHlGPlQuLEZAX0U9''@;'; put 'put ''OyJXdz1CTGV0ajZ+PWdZWWYxXVBGe3lnal9xP1hWR1JfMiZQNz49bXRUTH1UV3Q7V2BeRVhiXnFgI2kpay9+RUBmPEZAWnNVLkBlP14uOXxqdzg6TVpKUj0iVUVhXVhkL3ExPFMxeGRmUGNkayFgeGplcHA6XUxdRGs8Ij0mKVhCT1U2W1FxWS9pZTF1bHIwT3ZqLlBNNV9KZ1t2Qm1GYmdHQF9j''@;'; put 'put ''bSVwZlEvUjVzYHwoIncmcV5PRSYhaXhFaSFNaCxpPHhwY115ZnJkaC9LOTwoZE1NaTl0Q1JmKUt6KjNQMlF4YTs5emVxOSJbYSlfWXhsbkNoSU9wbU81a3I7OCJxOHgkOXQwd3Yha0c9QDQ9T09aQ11CPW9hey97bGQhb3JbcTJDOnpVPlRNN0guLm1kNEpGPmo5R3JrPithNXlEZTFCe2FCK1om''@;'; put 'put ''OiErOV5oX0lHa15DYWs6fGdkTFkrR2xeYnpEQn49LF9AT2Z0NEEpP0BMRm1LKHxiO3VgO2d7RHd3R1E/Zj5ZJXZjRHNaL0wkMSFKfjYzbWVCRTwpSiE3TD9zen16RVBtKzwkd3glLlJbSyl3LExJMW1VIyNxWyVvUWNMRVBPcUUxR15+bWtgTltwQERKaVZmTUR3aFhnVEU8PiRSWz1IXS5nUE97''@;'; put 'put ''LlE2amt0YVluZUFxKCI4bWIwMWsvSz04Ojk5LDx2LFgsKjNsUEhWdlFrciNaNkJSP2AicmttTW4kRilXc1ZYMXYxeVR8LGNddEs3N2smYnAmIj93OHkucz1jJElOIXpjUTlXPlIzJEkoOF5gcXhwSlc/Mil4XnpHVHozOihAKEdGRisjek40Z19ydChTVTd1TWQ8eCI/JlFNTj5qKWJBJlJlN1hZ''@;'; put 'put ''VS42dGYwKyxjSStMd1k3S2N7akxLW088PXF4VDhyY2FmSWBqODwifEl+W3R8PyExQ0hydDtKVypCREtpcUFofikiIWhDb1U4dDopWGFAcC50aC5pYHY7RjtRcnMkMXsmZ3o4fW1iR0ZmaG0pTTpnI3dtZ3JKeCg5dSZLQzsjMF1rfUBNUl5VYjtJO3BmUTVjZnxDPiF8QmloOEYzW0k4aiJgIUFD''@;'; put 'put ''cGBpOTgqWGU3MjQjU3dLczdRZXROREMvUWheeHlzWnpEOSlfZns4a3JzbUdmbGguKipHc2BjJX5Fdnx3ZT1hKXg0TH5lP2osbiVeYiEuPHI6byRtSzRnQGg4WkclTFgre3ksRVokKlB5SkI5O1M+WSlLYDY1WFYoKHQiS2BpNThJTHo5ejkhVzVmeV1gdjtxencyM0tmWEt3UlBJfmppOzwvT0ks''@;'; put 'put ''UnFxe2lmLH14XU5pfGV+eU1MTHNbOEtucF5md0ckOFEvYVdmdiooNmV7OSVxY3s2RH50ZH1xNk93NSkkUVd3Oz57WCpXcXgiMmoxd3BhdyJVMDp1alk6JmI1KWBYTnt1JHdkfGc4V1F9cXd8TUhLMUI0LERqMDMqKlhvcmQyendgW1cqNkFML0lEMHN8bGx3LH5WPlJlcSM1eGtCOyV8PWRJKmxz''@;'; put 'put ''Uy43XlFFYHkjYW1KZWU9OGMsamU8OGwsLjRlKXk6Kz9peUUhK2pQZ2crZm1hbXgxTWs4PEIsK0lxVm5gQjo9ISNbOCYvU2JETTdqTWs8TFdqI1ZDZlA4T3t7IWhmWCUrOiRFRXQ6Q34zaFA5RWxoNmhrcGw1ZmIxQHVTb0txUShZeCRnQXlPX2AxMVkyJHZ7ZWpTZUlDVk5jW1BrQSxiayhNNHw3''@;'; put 'put ''VkczKUYzKzt6MmtPaF9WLHwlKExpNVorLCFCI0RNTExhKVt4aD9oXTBjZ2wvYntVKmd7WnY/bi9YciFWKGhyZT5VKDI6OUVkYyxYKG5LYEFbNTZMLER4MERmaGUxXXNqYEdSZ2tlW35YKkRqVyRdVGhkQ1NeQFQyTWFSQGBLZlRlWmVKOEoiWlgkPXA5Lz5bYVVEP3d2cHE5MDJ4NGNRIklrN0VM''@;'; put 'put ''eGQ4RXohZUEsfjdTTHo1YypCZXNFW3VmIy5vSzl1JmxtK3VMPV0rND0ySmVaOzQsKnlGJileeHZWZmp9QENubFloWWVNcWppSzN5aG5RSUNGMiV9TlJNZ2NwSVgjaXFzTzZFY0VzdVszcDc9aXBnV2MhTFttMlosXnhRL1c5OCZOMTx3IV0hZ04sQjNjYGEkfjAwPDIuP3g8bURadGFPeCNPXnlF''@;'; put 'put ''RnIyPnl4azZoLG0pNjNYL3xqSiFOeV9QL2VVQlhQYj8xSmIxLl1PdH1IcDd8T0NRL0VqVCFadDQhLlpRJCFZeCpWZypSLE11ZHVMbjJiOntdNHw6KVZqMzpsPmxZMSxSdW8yeXE9LGBWJlhGc29DaDd2IUcxQU80JTFAJHUpRERxPXlCRkNaVm5pc3Y2WlhqQFI8OWZZJFpFTFk3YV1OaG1jPjBQ''@;'; put 'put ''IWNjPjJKa3JvTjR6RFQqYV1ZV109bG1nXztTUTpFNCVzQDYmemc/VUp+RzgpS2Voc25QLll2fSN9WWRvdlNvXWghMFUuOm4lZDIyM1VpMGBzQGxSXTFVT2YxYWx3RG5vQGUoN3NmZ1NOJC47cCpaVEJyNzY6N0tiKDxaTF5NYWslUE83RVRHTjpIdTR8VTIuI0pJU09mcmY9YmwlT1FaL2BKKk1q''@;'; put 'put ''WG1yYTFVMSg4Lm9FaFRqVFMlQFtvVk1jSzhRJTcicX1CMlY8UWR9Z2M/RnI/O2hDcERQe1dgKTpmQEk/TENhW1RpK2F9WEhuYH0lUSlLN1hYT1d1a3lDOjgpS2ZFZzlAX3VmfjE9Q3drWGFSakVoc1hFOkw4PFdTMVV+Ij1YSG5gaSIhWElJUTpLJXM9bT5qbEdebipeUXV4cXxTNUdSLi5mYSwi''@;'; put 'put ''RDxWNU1DU0tZfkJRYWt8SFBuSmIyfW5gaHNNKiojbXJXTFIrYXxZPFUoQWZgQGkjOWYlNDpELixGSFVPKW0/R18pWSU4KFk1RFY7eTxDZytXOToobXVMZk0hR0RSNmgkJiFlViQwaG02MXFxKTRKRn5dQjZkSl1iX3wwfkk2cDErO35oeEU/fXEkVncxSCRYN2pvSF5lPjl6ZkpSOkJpJiZXUyg5''@;'; put 'put ''S3JmeDE/b0YwNmxVT3JUVDN1OE9YWmFOcz02Z2NkeWp+TExEanI1STxSdzVWJF1tQ0ZGS0ovLGgkNHhkYDs+LGwpNG15X3h+QT5OSlYmMHdCXzsiOy4vQygibC50RUNTKkp3eC4qWUF5OipAP0Q6LHh2QH1uOm1YSFJafnc0bXtTPVl9bkc/V29ycXVuSXlmdWNhbFVDL1lnUGJYZT06VzJDSXNs''@;'; put 'put ''czFpdjliVGgqNmJdcy9XTXFzQmpHNEczYklYdTp5aiZTOz10NjhTOEwvbV1Mel1WaVRpSil2dD18M1hdaUhwQH5uPmE9LitQIWdKS3IrfEYpOT9wKng9OmBxZFM5aGReJH4sd29BcGc7InBaLj4lRk1QWiVQRFdBOkF7RTdTPVh8Z2R4Pmo8ViwyYzNeYWJKOHhAVFohO0NMNy4pPV9CKEpeciZS''@;'; put 'put ''SVRVbGdmQDkxYlRUcEpkVD1mUCx+Qls4Uj1SfFM9d3U6alUxVWEwdislKjY/OGc+VSoqVm9Ia0pwM0VPXzZdTXtEUkdiTmU1Q0d8SyspK1BeLmRVcEFAO3wuVD1YKF1bNSxiUWZXVWxqYExkO0o+LkxUXyJLVDpnTS9jWUIybEhPOT0zZ31heC9dajhpRHJzJCw/S05mM18zZylvVnYvImplQl1F''@;'; put 'put ''bFtINSpHcylINGdpdkRsOUlQaylPaWh+LGNMbnVBOFNCRG03KCReUThmNmRpPS5ZXkV9I3FwLnc1Ul9eY3VaUHcrV31ZNlVnKGhxazp2Wy8mUGNfdUVMS1lhMTclZXBLdmZqR2w4ciRgSipXMFpPXik2eVdyJHBiakV5O0YkW2l2PF04SG41NkR7VS5jaEo8NSU+NHg5ISM3R2Y0bzpbVGBbN0p9''@;'; put 'put ''fUM2WHJ3Q0Y5YDU2aX1dSFdfblshTmcpR1I4YUAqKSZNc3NiUWR0P0YjUk9nY2U/aTpbcnh7dEBSQzhtZ21sYzp6TiIwVHUmKlZhWm1lOnMhK3h6SiFucyEjdV8rNy9SKn5ebT4vP2g+fUpNOU9IOVZDS1UwZFo7OU1LRV03UUw8MyY0TU1OY2Q4KHgsPXIkRTtmKFhgZl9GI0tRSiRWSVdePHdW''@;'; put 'put ''KCVCPll2XltBb2orYXI8IlR4Sl1nSm9vL3d1JVlfaTtKSEt5aF5KaVUpKDJed1QhZFtLUVgxQ0tUX3lYZnw5JX1KKFgvcjgscDUoSjldMHtqcGxDenZpJnRFPzR5VF5Ubj9YciZLaHVHYH5WbEYkQ0xAdHFOIU49JltOYn5qcDlVPHtDNixTKlFXIntSd1MrTV4wLDV+QEV7YHFkcXVDaERfKFJ1''@;'; put 'put ''PjBpUTdNNzJRXWxAd2BlQkU/UlhbMWwhcGBHWGd8XTBsUW5iSyhlWF95JFBzO0BFaztNaFtyPGRpTztZVyMqWWVGU1t1YkhQaykiaW4+WUlxdjooNThURCw6V013X3pyMnlEUzU8fG10UjI0ODxhQTRaYE9YSUhyQHFCbXMuUHohP1VAbHpDWDVNXyxwUn1QT31pckUmb3BGdUR0e3BbOEtRSk0p''@;'; put 'put ''c2BLZGNqUjY+PT1IMG9CMWVtd0ZSOn1va1VEaDR6T1o6LDoycEAoMiFXVzMkeG52dGBpeTV8UytoYmc0JEglMj43WGh2bD5ZK3ciYiRiV25rW0VRUHgiX3R+eW48MytRIk4vXVBOX3hHRGtUSnpiWyg9aTJ3UzwybW84bl4hbnBMSzN5NkBsXUBNTnFoY0o8eWxiRlBKKjB2SF9YRFYsbFE4R1V1''@;'; put 'put ''YVpgK3ZGRzZLeSFudFNWPUxRJEVGZ24rIVtmL3d8QHJpfUhUT1ArIkciVSxKVD10QiNbKnxGeUBKPmtxaGooWjxWXVprXV9EVlgkeHJQSSh6fSgqLHR7RDs+UjF7T2hZXUJVKjNjV107bzViOk5sXy8qT3M7IWRUZEJHe3syQlFZey84VlFDfElgKCwwP0dfNCl4NS9pWm4/XiRlczt1Uz98ZyFz''@;'; put 'put ''e0ckQXpFeTc+L2tFRVEhbzdFJE8jRURlY2p7S2pdZndrS147PyklIlVqOVpocUQvIj5SPm01JSYvRnR7K3tnRDhyViVrenYqRGksKEh0TXYrT3UiR2Y/Ky9EVChEN147YlVYTVd2cnwrOVorNm54K2J8UzBDa0FONlpkK184L3JfUyEjLnE0S1N3X009YUlMdy8qYkJ4UzFIcTY6cUQ/OGFqNyFg''@;'; put 'put ''L1l5JXhZUGQ5fFZBOnkkLkNbVTosb3wqUTBidXlhbjQ9R2xHek4/MUl2O0p6aks5d19kZUo8a2oyJiszVFkoNlFXclI6RH5sTix+UThTNXtRInc8bC41dzRfakhUc3kwNyJZKip5YEVkd0g3NzJ0JXdZVX44fFI/UzhjNGJEMnQwY3VpUSxbRDEoX0J9UkVuIl81O0xDMWMpMl17XSh8QTRdWytM''@;'; put 'put ''UHhJeXVXfFghT1pgbHluIURZPmNeOypNdUFoXnlBQUwlSVUzfkJAQmw3QXpNKWNEMXFLTEpSVy9HZmg4LkMsQ15AI3IrVyRjUStORUJHRTN3d3diSWdkb3R2Lj8icntLJjlfd2R0VUgrP1hpZXdvUSJjUCMxKyZ8NFFvM0xqend1I2F9amY/eFE8N3omR0BWe2NjeGQ7YHRROz1FUCY8UEJ9JFtB''@;'; put 'put ''bWx6JWxEUFNofjcjXWMvNFZ6L0tpRElaPnE9MnNHLEpBSz8zZzJGRV1CTWFab1c7Kzd2cDQ3TWpRWjdBeGdEeTs1c1NhWGU8QGt9QCtjL2kzOCFMRFhXayR5YWtOX0RjMUxGT3ZbbzRPL0Q1KEtNSHVROz1FUCZeOiolMzQvcyVnXjtuezhbaF1nI043UyF8Si9xInswZGtfUkBPfWVmdUN0e0p8''@;'; put 'put ''L2xJckl9R3ouZz1hUXk3TVN3UD9pUGorU0tmRVZmVEc2eFsofFhwYFplV2EhMVFXUWVeSClNSVF2S29pP3BzKHdrS0FiSTtWMWNmeEFZUEhEP1VGRW5jODxycnlJTXtYLjtxYG1TbWgkTX07al0/a0ldX0ZSKGJKOWxeO1FWankwbihYVHdMSDwyb3U9KVtDRylHYk8vdnIlImJ8PkZrKTUmTExq''@;'; put 'put ''WGZJPWk2PmVGQkpYYD9fO09xYTciaXk3MTtzJkZHQDdgRXtGWWBXS2U8VHBEN3xFTX11KSVTLHJ8c3I8QnFgdTlFfmQ0OEVMUiR3TUcoR3ohNltNJkh1I3Y1IXBvWilgW3Z1NC9kZisjOF9Ge35hOzBDP1J5fmUrTlllLGkxJF5IdHt8W0hpMzZNeCF8IWAzTEtpYnt+eygvLHkhczhIXkUkSl80''@;'; put 'put ''SH1nVkVIQzgmaG02QXZXbHZ7QnY3bSN7a24hZT1PTzVDbkVYV21lSnR7T3hYL15fZDpkbzI6M3ZDP11vW2RSLCQ2N2wrYWAkejldalFiPS8kOUp8Yy9kcywmcWJIT0ksW1ZMKjM8OkwuJWNkZ1EvMnBBYG9jY2Vze2A1eGxNOXhHbCN9SEd2WEpHenVuIVlUdX19JVJ5W2dVZ0ttREpRd3hLbGcx''@;'; put 'put ''aDowTz9XcTQ0JCxsKVdjODpFcHxPWEJ8Sl47V3pQNTdCQWRiKkA9YUJEQ187KktqMF1ObUtkfGRzJG4xSXJ5WDN7ITZod0ZvaTgqeF9ENG1gLmloc3NsYjFlczlnQTB7QEcoMklENlMjTDVgelcudSZdVGRZL0p3Yml1Ml9ma21nYTRnQUMpMT5dSkhDfS4qLClNInd4UT9XLlEmLFdFTT99PVQ6''@;'; put 'put ''MzxuMVhGZUQwKTlrR189WmdBM3p4ZFZQU2EkRWZuQGgsQkN8RUgxemFTIkQ3Kj9nWnwxJCRXSmVLVmNfJW1ZTDdWO29OYVFpVS93T0tCSz9GV2NCJnhEaHcoMDBQWS83fUlyciNyd1tKZ35geUwhdVRebHxhWVUwdXAkZ2NzdjpAaEZjel1nWj4pWTJmeV5iMl9QX0tGOFpufXJPNkJqai9iYj1v''@;'; put 'put ''dkYzS096clp8KlFCL250aTtLdHA3YHBUaSV9eFhoejleflc5fFV3PlQoWmJoMEBfWnhGQjBsc0gmNEtwWClHPHUoVW40cGJgYCtQImI8R30pbTQ1VWxgQ10zLGhLb09yJHBzSjRHfHR1NmlAdTIqM2MxdH1MRSlmWnU7dSoyIXBgZ1ZjTFZTX2VgLjl2Y15HdGtrQ1hPVmlEdj9SdTYhQnpQe0d0''@;'; put 'put ''TjV0SXU/OGg1eHYvZVFxYnt7ZGludyZLTCxsKCY2ZnlbNSVxRHxObSRMMH1KQXUvcSp7JCNCLl8uZSRnKFN4Si8sWko4aVRjaW5uNDg/OHRBKzUmVS9SX2VlMmhIWSg9aGEsT11DQ3MwRX1dfjJaUVMqc0VrQWx8WW5OLkNpSUNwfFEjcnZSI21URypVa180fS9gQnw0ZkxBUilbel41Z3R+UVdb''@;'; put 'put ''ajM+OzNmWnNwWVFLQGVQR0N6WndOaXNjTS9Oc1FNaXdwclRbZX5+fU86NEpkZDl5VXxadzR2dGI9ZHNYazxGOzJPcVd2M1dKUiQ0a0lkISppaWduPkpPSEhNPyRWR1hMRSkmIU1PR00+ZCkrdV54SSloSyFFNHsuTDh9LEpoNEw1bE54bm45N301VEFmYVIkXSI0bmZsMWo8R1FneC9uNWhkRzxv''@;'; put 'put ''cz9BMm1Pb0VKMGNQLiJOQ0IhNCFGeDo5MnZOfUJyJVZ5dzFoMnQ8byEvM242T1NDcilMYlIqc2djSFtCW3ZzP0NZKG51UDdTckJoSGFZQnhsIyhXZDArR3lhP31nQ1E1QSo1XzduTWZMTDFyMjlVMl47TEBCPGdCcGJuR0RsMHt6ZlVFfV0sP0coJlpvUmd9ZlJJVFs9JV90WXdnRFY4TnM/V2Iw''@;'; put 'put ''IzQhRUV1NHZpWVl5NF45cVNfdUQ/R2pMKjRWbXNddFh9dkJSdVp8VCt9UU11aWtFUl9ueEBhfCpRU0cvbihYeGV7R3NqMmhxQXElcS9aZC85MCVeWEMmRS5QWnAsLltpS21geHA/d3t6V3JfaDt1YENjZlQqNn1VITBaRHVUP2Q+d1pfZkJFeV9pTGFhV0g3fVB4JClILGkzV2o0X0Y8XUtwOERm''@;'; put 'put ''SCkjNGhzfHVDP3teKk9Je3NlRy5VYC9YQmwiQnVYM2hHOSVwYixIOHoxSWU5dyZxKVdtcigoMmtdUk1+djhqcCN7NGk8O20/YyZ4cmEzRClQfChycl4pPyljVU45blM/dTFWWlRFMHVmJDdsZ2pNem06SkRGdXwoclFbYDA2cSIqW3hSJEBHKHRzNWhlS0BVTXhKd3hnOSpnVVBITXZ1OFZaXkkh''@;'; put 'put ''dl05bTFzVmAkZFpzcGVSRzp+ZylZIiwlTGV8U1p+VzhofFRANHhSMSp9LzN3JGE6a2h5TVB0e25mTXNVSD5qeSIzaHA6JGQvKjkyPkMhMUZWUjdecTJlbWU3WWdoNndkVm94PF9MQVBobSUuJk0zdWYrdSVLZT43VnJ4VjlAYXdTZHQhKTJbOCY1Snk0dkVBK3g0fkEoXzE/KXopJSpqTCZxSV9C''@;'; put 'put ''Yz4qUm08akYuQHxiYDM1VlJpREBYckRpa1NQRWV+eW4sM3dEcGMxMTA4JEd7eDpGTU45RiFxbEIhM0YzViV3OD16I05bbVhycnFCe0dATThZVSRKRVdGUzpvTzR9d3cseT8/b3lCM194U3o4eXdnSH48JVdec1I7ZiN8UTBHe00mJXRNdUw8cC41TDw0SlBXSkhKRHBEbk1SdGJDbnBQM3g3MCVy''@;'; put 'put ''QGtlfURfXVhyUz1KXn1CV257X2hrMTc0UStkXVhEc1lDIW9EK1hhOGVTdHBiS1BmWj4pJGdlXnBJMT8+WEFoLHRYbHs+N30kbUouPEhISEM7ZV5aLyVFXy46OEpFN2VANCxZLmIwaWJwV3UmZ3EjdFAhYXgpIVAiXm9jPlV1Q3FNNVd8UDRHXnZrTjJQamxCYkp3UlpvbDIoSD9vWUQmPUwvRSVb''@;'; put 'put ''bFdtcTh5SSI7JD0uaVV7NjoxaTNoLjg4JXY5eCsveixbU2dMKUtWLEFxVTgrclRCK1hWVUN6aWRYQGN1XU9CX24zSTpYeUhQQStlOmltKFdzJmlQP1VpYERIKkQkT01gOixeQSt+ajJCfjBnaz4yZlI8IXZdMFpmT1hVaSohVHAsMF8vYT9zRTwjQSpgKzZsInZuLkZVXkZUIUllLitncklOfUZk''@;'; put 'put ''ZVQ1b0ImS0VsS0MsaEtLZ3hjZD1vLF5EbDw9NTBdcEQ6MVtJSjVsRjN8Wkd9LkRpKkY4dz1WIyUyV2o3bCIoK3lIcUxvflheOjM8TEcmc29vW3YqTUVnIio2Jm97TXI4RWlqOUQ0cl5QYEJjPT49ajdGMlIuZ3c6S2xBVDIzW357R1J3KGZIblRaclhKcXluSEpzdkJYYiI0RD95Qzhye0doeEBg''@;'; put 'put ''Ri5UejtNVWIpTGBwdypIZiNMKXBaTHBwSDpJaUVSK0hpLm4lKFsxMFNRcjp5Pj1SOzA+Kj5hQWhCTSwqWXA3ZXkpeHhCOGE2JnFzPjswekd3cmgxS35AQzw/OGwvXVdfUD5ObGQ5Ql9VPHd2Zmx+KGFtW1cickIsJltIUjt6XzJuJWNtYlVYZDBBfF1SLiQkYkFBU1RiIWNnRFNTMjdXQTRHI0k/''@;'; put 'put ''Xi9lLjgvKk9nYXxsS2tyJkclP3EoVjRmUkduXlUwRDl5ajpSTDBJVXk/MldTZ1BhRV5hKkI3c01+fk9vXUBkL0lfKFBqeDdHRGczQl59ZEFsejlmU3Zrc3BzZXw8UDcmOWIkMXg0fElHZUglbHhQU147I3U0JnQxTVg5VTZnYnlTNCpkZzYveHtVb2gzImRYYztIe0VEPEJtPjhfRipESVs4VXV4''@;'; put 'put ''KnchVl5MZlZkdEY7d0VOOFBQa0lmMVVUMXpUVShuMCI4dStkLmUsKyw8QnR+P1BURyR3V0k/LkA7fGwqVXhQfFhyaWlrWEJdRHFQL1RHZUkrblY1SU1RSXA3YE5kVldUJihWL0MvNF5WL0MveyhaclN3azBLPEZNRUhacWAyOVIsXj56fkIuTjksZyxjRX4rWWAsXjhtSC5YdSlETiQhQj55OUtF''@;'; put 'put ''Wm1gU105dmkpR3NBUl9baFFbNXxvUTJxeTJJc0lsRDJfSCpSaVYkL0huSkQ/UUxCVTQ8UDNGeV9tIjVjKlNre1N9X3l4THNse1k0LHFnT0hHPDpmM3xVYmtWWzBsZS8uazRvUTpIZE9oI3g9OXcxcVQ8WE9sIjh8ZDlbbV0oTSxxfVQ5b0Axd2EkeEdlNHFYbiYyOU41NH06RXRscmdrNC59Xzhp''@;'; put 'put ''T3ExTTFZXkh5fE5WclJBe2k5TH1jLmV5YkkkNEdLOFR0X2JGM315ISYscHtvOW97KW5VdGlXRWp+eV0+eUdvakErJT0vaSkicjZQfHJTUi8qM2cqbXJrV31IPl1Oa2wlY21YL1EjKFN4YlRoOUFvOmRSZ2JeeEtKYntbOXRDZWs9ZWRGITIvLyt8X2MzZElSN1dSeXY4WVd+fTdgaVZqJXk4O2Aj''@;'; put 'put ''M0Y0LlREZ0NKS3Z1TltBKXFXdXJyTiFRKTQ8OTFgbGEhO2hPPCIsd1BObXIpdTdQWFRVSWs1N3EvVmRsS0FhRkZYQ1lCS0AjKGRLUyFuVHBTemRwZUtJPTt0KXp3JUBofTh9OCw+MTUwcTRSKFc7dCsmO2wrN2UlQ2N8UXxGWiJHM34wOnFCI3hOYVdhRXdOVyZ4aHhkRFtjRzpMbjh8NWtQYTFo''@;'; put 'put ''XUVNdmoyYi5tTlQjejwoZys1PW18bCJZRnp0aFtJcSw+KjA0XnI1QUlvTjg5Xj1yN19hY2RSMiJ6SFRFVy9ie2ZMLiwwaHg5a1VOW11zYmokMldTKk15W3kwdU5SUVZlZUNhNn5lJXFhIS5lcGJmPTBSfStpWEgvLl9yPlJNJXlGNUBaNDBFJHNrZi9LNEc1TjRUcG9NN0RhR09BdXNJJVFBUT9f''@;'; put 'put ''WihEbGZmPXw0MD9DU3NuTms9SVtNPTgja0cvbSJiMTwiVykpS0xgYCtMfTtqQ281SnVjVUM6bXt6JUZwMjREJUxjX1psOjhMOXBHcz8mPyRMaFsiJF98Kl9VK2xOeigwTD9FZWhQXm1aQlhtKE5UfFJIRSM7Pzw1WVpeUCIvITpraU1RT1QhNWspdjdXI2N9ci9vRFV2P04hR0g4cSE+Vmk3ODNL''@;'; put 'put ''ZiN8QHMvdT06bzN9SU8pRDtKe1E9L1d6UWc/aj5DVno3fWg4KHVJaXc9Q15fbi5XazBBdWI7L1JgT2AjQy5MIi5VVmNsSjI5PFdLSjdFUi8uWEBXR1UxV3hZJTFfJVFjeCExN1IxRDJyNEMxZW09e1hybzhWL3g0M0YvZT8wQSExMyNrVW5XSVUpSDRzQ0h4OEpOKS5kcSREXmNfY29Fc3JKLFVx''@;'; put 'put ''b3B2QEN2RW1NOTlOODElQFQ1WXBCcnVYN3djeGxCfmc8aSh9WDRXIV5tampYVFl5dXJ7Uk1YKGUxQGB6NFc+aVhzfC9ObXlBQys/VzNsRF86akQ1cSpfZUQuSn07eiQ7L09kQXtzaVQhelZ3ME08LFVqcWVHc2VaWDNxRF5dPVYmVlpHektjTy53QiRGTl8kKV93fG9UUjtgcFMveV9tJkouRSg1''@;'; put 'put ''NE15X0Qhe3xhL21JInxNX35kKWNFe2opazBUMCZrRF5aQXpGeCxgcSJEel9LRkN2MWk9RnwoY3AyZWFWR2UoQVBXVjBAdURSJGttci9nM0loI0QkNV04PlJHNkMrd305NixTaiZzfFg1NW9aPEhwQWlzY01jWWgjW2lgfGMoZD10VUooVHEyPj47enxJWS9CMCJ+LzEhL28rRnlke3VmfnVXWmFM''@;'; put 'put ''SEkmNXd7aEhtciokKiFlQDI1NXd4KF8oS1dkPjRzL00/aGUyNDM/eHl3OGRIUVdIcm5UYGM7WGIwQGA/YEFIKVtxeXgycEEzQmNTcmRneilbLiJjZT0oPEhiczY0Wit4WFheRVJ8Ujd0bCFwWHc0bVksKGMhYng2Kyl9Zk5ZT0x3dV9vJXxsU0VEbSJXZDxANVlKLmhheUApIUtaO0VHfCE7MGFp''@;'; put 'put ''PSxHbEZiMnYjXTklfChuRC56Ukh9Q0ZLc3BtMSYlO1hmYzI3Ij5lRHt8VXUoWCtUckJsb1JWZlFhfmZ7KCY3Mj8pVEtwL155MU9pdFdmTyhkOUBKa2VDOEBKS29NcjFieWlxW2xGXytKI2VLT1d3aEYxfUJoTjdwcTE2N3EvVT5nXn08VWxoTm5OSkZ5TjB1O1UiI09pVVZxImZHUHU7YThINXo7''@;'; put 'put ''UCZaWGVHQ2tRZWVtNnFZZTB+Tl9ZVnBJflBjIU9pYFFfQTFbSm5pfkghYWNNR2dEdlgoS01DZXgvaXxwTFVZYGN6SDh+SE9uSC5fcyQuO3oqPn0/eHJ2SnM5SD84djElMVpsZlosR0IpTmZFYXZEX01dTno/V142eD9vVlIjd1pMdE4lLEE2dkQ2KGM0c00hOlBQVTB2NCxURUhvd3krK09MSGNS''@;'; put 'put ''Nll8ImBYOEhBWTJuM1JDNl9RJXpKMDRZIjJMSH5DI3VEaTV8JSg7LFBZZTRjZyE/fXJVbDAuVUE6JWopbDE5ezs5YC44cyFSd0AmPyNQKltjKHxMNkdtYHt8VHRzQkY4O3F5RGRVbSVUUlZlUi9JIlp5OCY6aiV9aUVud3R1S3RMKlFGSiE5diRLITV2TUxvaSpFWElCTkl5bXx1SDUjKj5ZYDU+''@;'; put 'put ''b2lTU0FBQXpiQ0F3NFZCeERJSCJRLDFDdUs9dkZAQXRCOj9SRDJ6MU4jT1VqaHguTEFBQUFBQUFBQUFBQVRYKDQiOXB3YU4uJV5maHBYJV1obWNBSUMxRGlNSENqIjc0M2NhKjpvaUVnT3Q9YSIsS2Y1Oyo4WCQsTVVfLEtva0NLUkpQPkxrbiRwX3tbbVJ1RzZPQHBxI3NYUT4jKCtzSkBsQnRU''@;'; put 'put ''dDxuYGpIPXY2Q3NdRG83JF1Hcz9MfW1KTjNgaG5JcHdNWHxkV3A5V1BMMjBacD4uMU5DOCxmaVluKDN0NUZgQ3xdMmdiLmg+YDNALl4jLk5eI1hNNVQ4N29dRlVpRVg0RTx6aUBILH5YVn4uWih+Y2VCbk1kVD9UMHdWTm86SDA0ODJ+NkJ6OiQxPEBiZ3t3NyxCQkBEIzBmNy5sN25mbSRCclh3''@;'; put 'put ''QzdePF4zQk5aUl47cUouWz9ka0koUU90V2dTaEp3YS80VkBXPk9mVVFveF43ZD15ZFo1e2U+KTt3Iz46bW1LcmJ4MnpNR3dlYW4yVjprVURZYGBtYSpaMVRNKTUuWClfUyldOGs4MFl9cGg7NGI6fjZURTFVNFN5ZzJ7SGEkKz59UUd5a0thZ1Nwa3BpKVVGUnc0I0pCaERWUmx9MXcjYU9weWNw''@;'; put 'put ''TXlNbDgrP20uXi54enVNMkt6PntkcSlhck5iMXNJTzhxKWlfQkIpSyNYVFRMN3N1XkRWMUlZSnxCTW5aRzRVal4pfHlfe11kekBESit1eEFrNXJTPG9UaCRCcSJ+PDMhKnp+XWRadzg3VWBRRCN4NEJMODBkQkxzV2YwQE5EI21ITVdKc3A9alB1dHd8P09ZZiZJaHY5dD9bPGszO3hpb2o+Lk9E''@;'; put 'put ''cl4rbGhCWFM2PjlOI1NvRzs4JXpoQTthWjgiUnRdOk5scDcmLCR2W05qPlIySj0oS2A4ZD9leXtGMlNSK1NYMlU9L2YyXWk+MlkramhSLzp3VFZScnZIRStIPWA8dmUxYmAvM0ZVKURWdjdqfEZ6VkZkRGcuQX47KExaKmhIelJofnk7V1VUWiY9YjclfCsmY2B+WVN+eHZBTksjRVtUWT85aTwv''@;'; put 'put ''T2xuVDx3QCFaPUBPZU0ifF9CQENNMzUqeWwqTXleZEI8UkovVDZfTXhPdHE0Yj9KWUdHUy54S0cqUnpye184elFGIlNrWlFCKl9acmF1WH0+KHx9K2QmdE9LIXk9M1F+d3VIUzNBYixGelk4OVNgRl5UWHZtXSZaMXR9Wno4REVIKnRwRDY9I15jWld6PlBhKzRbW1ZLJmgpNjM7WihwOU9PfERb''@;'; put 'put ''Z2xnbjl7MlU5TEVZSzRkdzVATG9HMm1HPW5KaEAkVVlqbCFmanlGaCxYPiFkTX0mQjg4dlNRZCo7KWMzTyxTWWZxPTtEKykoeEEycG01UW9PQk1tNW8yR11fc2BpM2Y5KWRDOzVlKkgocFpQNUNOZUtXJXxDOEYmWChXdk4rNFlGODtJWiw5U3ZMRiNFeHUiPjhxdDRnSndHYD9MeWZgIjBjaTx5''@;'; put 'put ''JGVWRnp1KWUvOFNKX2VPQlZYNiV3THYxL3hnVkhCTk5UajdoIiV9SyYlZGkuJmFjTlVkT3xzVHBUZVc6dXAzPEV9VTczZ0BNKGdDU29heGg/YUBoVWh+d053OnI9WXhJTCFWQHRLNUs8fWJZVV1FXmxNZnduKCVQODU8WjR9Ln1RTjg0MElIUj5YUntkN3RxY3VSSiolPnUzanwpWG9YZ2xYeE88''@;'; put 'put ''QVExWjhOJE5ZNFFEXiRVUSR0I1grbz1KSExYZVNBUE00cGNpfT18ZHhsfVhLJVtOaUdHfEY4blpDNS4sZW5qRmovYC5rMCslfi9uQFA9YEJSOnQkYzRdV2d8OSJ+Wk5RUyl1WElrU0htKl9RRV91ZzR9Ij1zOCo8RkFwPCFJM3wiL3BTV05Xcy5qUmlUeGMxKEo0cGxoL1ZAP0xePU1JRl80VX1l''@;'; put 'put ''JGhiM0VDPiE4JTYxX0wmT0UxL1NeKHQoKjZkUkJQby8mezVdKHNfYkE+dl01L15tNGl2eFt7SCo0VWsjJEAveWFCYng9bXB8NSh4ZUQ1dTJvYTl7KjI7KnJaTH4lMV50TFRaVixePkJDd0IiSzwze0Bsb2BxUyY8KF54Y2o2TVo/eFZiU2o6M0o4XnNFJDZ7TkdAKC59W19hXUJHekBeWH1iLFs7''@;'; put 'put ''SjxIKFpTdmcoOUhaQyE4NFl3RD5PW3NVMFFYZyRVWWN+Y0hlL1hQVE55KTEmJmVERnY0SFF3VHt+d0hmKjZOMGFDXTR0NnJjW3tRIytxam5QNDEpYjFTdjc7d319NlE4ejBHdlJuODZxXl4sJl4hQDtsekg4UV5kPUFHeio/aXt4OyFLdGRbU0ImZjNdX2pOUDB4MiVCZUVMaWROSjxxPmlnNlAw''@;'; put 'put ''ZXo8dnpRQjRUOkVpbHRAUUhjcWd0KyFGPHhIY302aENATE1MJGAzaigzdl9zcGhbUGNIN3BVYl1jIXdDIXRwKylobGBhZDV+KT1yNXd6cUdAV3BPOkJkbnEqMGpTL0Iuenh1QFtCJF1wWCs7XSI0JTdPT2cxY3laZnxOWjBDVVkpOlZKJn0iX2drPE5vNG9pWnEzb3xPW3V5PENuVmxQJV5tXTtU''@;'; put 'put ''UiMqNkt8ZVImK307SGFKLzt1VjBAaTxpK0kqQ1owS11nPVhNY0FgTG5jIV85aC9Hcj5FPkd+N0VrJHZ9PC9xNFBtZm8oakRKaHFTIVspaEQ2W2VpfCE2UHU5TFMhSTkvZWo9VmpTPltnRiw8USQqZDExYWpONGp1NTN2XyswV2ZifSsmcnxCNFtxQjZaZGQwRHcoTHNBIyRNSjgwSHAxTmdlWFZT''@;'; put 'put ''LkNMPilrUixUZy5DWTQqdVp5Ql16VWYzWDZwVE5YI0EjXnN8T0psXk9jRGBXbExKYiRIV2BgNz59b21bPUEwKFtkZTQ6XXY0TFE+MVFRNlBleDdjJW5HdG5iWn5yKWZ8cmNqZik0RmwlPnFfbyldMUA6RDVdK0dOPF9GT09hXTZJel5ASHV+OklmPz5qPTo+ZXJPeXoxQWhkbGlXVGJHV3Z3MytS''@;'; put 'put ''LldFJWJbSGtxUCxUZ1AhU3pMeSlpWEs4bGA/RmEqMlRgcWY9ci9heWowP20hLk4zUjVWdmkhSVpRMlJfNzR7bVA5cDdnY3VMfjReaFhFMGtTUElZQmVJb0BTYUBpKnByT2h8TTAuTDg1UiFfYz9DfjU2amsmMmJhXUQpRGtnRTk2bCUrVjU3SHIsOCJNK0l7LFlSNEZvYT52bHtqe2Mifnx0enZf''@;'; put 'put ''am90dVl7SkoqMUN4RlQ+ISlEcnYqamwlWjJ1bGtWLE1dfmZWaGdTZzBPK1FRdio4YzxPJTk+bkcyZDEoN3VbX0h5SW8yRGk/QXBySTB2M2RidFQjfXIjOGZJM3BHKywsYG51e01bRThoRG9nRFAya3M6SmkmVSRfLF9gTWZaaD5UPUtMYUdybyxvYjNsNjJRTiVvU1olYTw7WD5+S1pSUVpnMVBg''@;'; put 'put ''QzIyRXIlLD0mb0k4ZGt+RDxPOVpHdEtEbGxZcD54eUswJVh4aF9Zc2V7aCU4XiZMPkdocHpRJnkoN1tEdUVdVCVsRn1tPzM4M0ZiJSFYN2hELFlOQ2B0Z3lkc34+ZXBCTV1JaCg2e3AwNXxDVCNHXklLNDp0eG58Rk9JJCp0KC4lNlZmc0BnI2FdVW9YKXRRKlA6OjJdMUZHJU11fDxWZXUieWNa''@;'; put 'put ''cHpTdkJPOjF7YTtJNEQ6fHxURTw5YXIrJmpAQiVXYylvKnZxV3dpKSlQOSZEMH5AIzhaNHdLQTBEMVAucVhEXm5JdDxZJV4rVDRVJnttZEtka1d1ZHcxfSJNUHJEdnQ5R2ldX3o9d0sub01hW2BnVSlCfTVBRUlgR3wxRm4kblBXYWg3Pno8TXt4OUZnaj8kMzt4ejBpTGpbOUA/Yl5NSC5ZTzJy''@;'; put 'put ''fSROYmNYOyNqfD0sVTc/PDt3X1RHKmhOU1ZfWlImWklTcj4uV2MzWFt+Lm9fIkBeV2FZSH4kZng9UXtCPFAobV84dGg4cyxPR0EmJm91ZG1TKz14X180KkNgVW03Ll9GISk1ZCpXTHx+YHUyWjw0JHQ7V0gqdi9wOG1dKjxyaVZtRnJhJC82PFtvNyp9VXBYb2BpbmQkWntSeFNzKUpqISlUVjko''@;'; put 'put ''NVgmPzRqOkBtczlLdjJra1AhP0MkOyZEeCM0dExEMjFWMT5GfnVAYnMyfFBjWUxfT1dbPGovPCg1SSRTfFJzYEJ4XSFnWDRkTjg/QCM4S2cwMncsPEgxKFAlTSUrcmQ5OVs/LDFCNDJORjQzWlBVQnswfFVBXiVtWU5kfWc1WjpgPiMpKmQoU1BmNUpvbEgpOVBGPktIfHZORCNMW0ZAaDZUX2hv''@;'; put 'put ''IlJrJDtYVyYyPD5INmdCM0RmKG1KN1YxYlJLQ1l5PH4ib2p+SiZCfnZMTUQ/dHAvcll7eWRRV3pOQTs/QylDYjRoO04vQkd+ekYjfF80dmEuNSY6ZUA4NFJIWlMzNmlXaE5rITlbP0UyP147M1E0QlZMbnt0JE9HLyo/fGFtfFpDXi9zS3xgVUYkWVpaNn5ZQUhKNmxtK1B7UlZaRyY6Ln0uNCo2''@;'; put 'put ''Yk0/NV9uZ3BndyNNP0NoI0hmOXRzTHwrV1NLbEdFajx+cnJpTUc1PklVO2dFPz17OlZ6K05WNG1OO29QVFlHVElIOGRqTEsudWJgZldSMzIkYiYpeTRPZVo7KUN3ZDF+allTXyV2PmU/TU5DU19edWwpRFU6S0B+LzR1Yzw5MWtiOl1hM2swX3UlVzpgNjQ+R1lVOUVaJnNTR2Q5PmQ5Ols6eSZI''@;'; put 'put ''RUxfN0VWMlo/Inwqfis0ODFmeUZTeXZASEMzKls6WjNuOCtBcGM7Si8malp1dndWPz1TInNFc3FfKFYkal9WYURHXkhZZmFBR0hxeXhTP3FySH15O3xUQD5URjMqPTh5O2s6fCRwPkRWZzBTWGJPVHxYO1ZVZT9tU3ZuOFBwek5bL05jJDckSjgyW11AMGwqZERZRXcxMy9JSi5dWHYkRFopcT8/''@;'; put 'put ''SXhbSiROLkwoRVo4LmlgW0Y4V3hNe080bF9xbCwhXXdCTU1gLE1yM0MhaE1SdmIhIz1+UntePlV8YXZrPXN8fiVpVj9rcXA2T3EpYG9+V3BiSVpuQEVJLlBwRkxGOTEldTFHPz8+aDY/L3hgQmFxcURSdTY8Y29QPmFlY1orajtFPEMlXWhsXVVlM19hVm9fdWNJJSU0X3VZeTFrImQsW0FXKGlw''@;'; put 'put ''XVB5QV8yTn1aJThRaTo+QntYclJPQX5jOCZTdiR+ejsmQEppUXdWMzcqdkg1W3ohPU9ZJWR3Sz8je2BKW3JCQmdtXmZkcV5xYShrJWJlPXlOR0JJU0BQY3FVcyt3e0xSKWpGInJQfjdEPiR+aCJHMjQlZkBPI2lxaFV3PXE9S0NibXJ2fDJCU0hMfFczKE4qKnVFMzdvJkY7ZlI0JjZOQWsjU0E6''@;'; put 'put ''a3xLaHBYWTtBRTxrPytiY2pbY3JDWE5ZfkhsVUJEJmFbdENXSHlHJlhhY2VOIWo7LlUhT00hVFcqRExuWFE4cU5DIWtXWkw+ZUBifD5ne0khcz8jPl5MMFQofCVKMnx3QGtWQll1fjN4N2ZbKjNjMzxneTBXS3BNRXRSLDlzY0Bid0sxX1FvcCFaVGYpJFM/bVMsLlgpWDVsd01gTzcsTEFrRVVg''@;'; put 'put ''aX1DSSlPZDZkeDYkQUZ6fnpBTGA4T3xVVDZuS1JBSSU1ZX5UKFFdXTNIQmZ5ZkklaipCbm9kKUtsZUMsRXRqTHMwZ0UuJm8+WSQxOHsjbi4zWTdpOD9xelJTMEUwNnsiXlBfeVNhNEZZQTlwRlRrPmleKCRoaGJ5djlpIjBOdnxSOzdRSFRZcnkxI3s2dmEiJThYOUtrcWlGdCZPOjJXV0RiazNf''@;'; put 'put ''Ojs8cjgkTkZXWU8zTE0pcmRdOEdsOCwpZTYsQUoxXlFJRG9tbj5LSUM5KUs9X1JTVSk7ZHl5Q0ljfGpuO0MqZ2NpK0hsWERaWE91NDs2Ym02e2ZBN0I4IjFxQEBUci9iQzRQWSJGNEdLTWM6dEQ0Pj9SRm1GR1FJenE9TlRESGBhPFVqb2N0MUt8elldbC9pa0w2N01XU1VvJCkybiMrUV06RTR7''@;'; put 'put ''Z2VRbkVqcSFucD8+bFhyQS4kVStzaUMqSEIqLFUrfWNmcylwIWZDJmlFL1soU0p0Y090Zl0wUF96REI3QjdWOz5uPFpFXWNwOmk5WFYkYzN+X3oibUw5UmIpcFh6e3ZBWyhSQGRzbDNiVSU+Ry5ob0h6YT41elRiOy86dmVzOWkibDhzUjs2bT1ebD5KVWl0dnJFK2dfMWdicCxVeGNDW1siYVp2''@;'; put 'put ''SjVZWUpZMlQic0tEbDFBQXZIM1BvLEJxYXVSSmVeI2JHaEB5Sj07T11QaD8hQCwzO2BmRlYrfXxSXmp9XTJRezJvR0k7QnJ6dyxXT0VhcFBkez5VMSZZMVc/eFszTWVhanMuO3smUHA7ZDtMQ2V+aiRQK2krRXhpLHJHIzl4Y19WVl16a35aRn4sPEA3Tm1jPXRubix3Vmc6eEMvVFFOQ15JYnsy''@;'; put 'put ''JVlOUSpLXVg2Zl1SeHhUX202ez1wdUk1bT90ZWZEQ3Z6LmF2K25Ke0o0UUUpXld1OUI9XUIyeDw8NFopK20+Mytzb3RxV0YmV0UjfDcoKWNjVHR2I3VUI3FoLyljV35HbFJBNHcvdkMhPj5eYXd9VmorWGR5dExsbmY/WFkmdiwqWXpaRSk3anwucFo4RDdJSjU/dEtGJUhYOlkjeTc1OixxPDp0''@;'; put 'put ''U3U5djUqeThwSHpufHBATyNfYSQ6JDBnWDA5bm51InJXRStGbX5+TyJWVVp0NVpsdnpHfG9LJVMzNDxxLzpOL3lFQ1FubGl0PHJ3fU8vdzpFNCFHVG08RTpDTEo7MkNUV2hwRmdlQ3FKMV94Z0JIS048T3xJbkVKeUIrW3F3PF44U3tZcVd5KW1aIXxqNGNidXp1Vi5STERUY3ZiM1luKl8rM04y''@;'; put 'put ''M0pIKkVxR2puITYqRUYxajcwZXJIeT9RazRla05pQFJbbCwyMyYyV259SVdsSEIwblFuYnA9cVYvZlJaMzdNMmQ5dlpKKCYyLmtLVjg/aiJXKVk4cWsjakwrISgyYk19PkFzP3diQF5deyxgPFVKTnhjXnlLLD1kS0xVZ1UpSFp4dllAUEo0ciV4TW47LnIhJnI+VHt5RHkqWkI2Lkw3aVZpdlB1''@;'; put 'put ''ZXF5X2JwKSRlZ2YrP2pBQlN5SCZRJlF2bjVeRF1FMkVGYV5QSGM7cDg9aSUhV3AqdHg6N11oJF9bVmZTYGBIZ3NKRVImNnl6dV40RSwqKWosKjJBJlRJLD8xIlIoMnY0RCxeVWtKPGw1WF42Z0svNiltaUhUa1YjNEc/TnZ7XzVfMSx8STFhYVYxdTtfWGVlVnhMQWxEcWs/OWQ8VlBQJWNeO1A5''@;'; put 'put ''Ui4rL3kmTXVMWC9xZSFjZTZyTXAjOj9SQktpRD48SCx3V10xY1ozVHpzPUFKcVtoKjkjOiYxTmJqcz1GUEVqZi9KdmteKSFkbUUsKm5ZQFVIQER3cVdFQi9mTDZkWFUlYDYpVFFsdjp9Pmg8QnFUXVVJQDd7U3UpXVd4KjI+dGslOSskXWxFc005diZleTNvLzdvMjI1cG0sUnpeQGxBZTByQGws''@;'; put 'put ''QTIyVkFuMjdacUZIQXVMfUZCUjAhLzpOLGpBd0NjU2ohfXZENHlofmVENzkzZ3dnO0QsfUI6JVZ2QE51TC5lPjxyI2hTVVpvPmAvYW12QktJRiIqe0RfJFVRWCg3JWUwNmVgT0E0NUp5Wls3eSxpYXZwcnE5K25qSHlSRj5NJCE1NVR1VmwycVkiWXE/TGRXIjFbMCRWIVs4VGhyUjMkbC5Md3F8''@;'; put 'put ''OHszZzR3PjN2MnU0LkZVO2lhdmphXm5kVERWKkIjPCRkPmp6V2R5aUVVZ0Z5MCYuYko8X21DTSZGJU83VnA4N2osMU5aSVVkTVRoW0k0UTM4MnpobFV9SlE2PVY7bjo+I3lUPDV5dndYNXNJOmU/QD40MFJaZnooc1ZRSDw9SFYxcUptWjBIO2BULjRIV28/aXFhc04ieXZRJmBAUmJ9dDR2Sjk0''@;'; put 'put ''TTl+WmpbPHtvZ0Y6Qj8sSyhfKC9UNmQ2IVRUbl94SyFiYUB2TkErckhTdns+M0hpKnhUc0kscl5HUUJtdWJHbW9QOyU2ZFJrJFY8bz9XWjgwQmd8Q34pey8udEVoTHdtTmJoSnwlQ3gweVJ8fi40RHpoQ1RYQFAmfllFIk9IbkZdOyZIdVh9YnB2W3RLcj5bVmYjXjlMLnFTTn4zXWh2M0N9bj1t''@;'; put 'put ''bmgqVG8yfG1nJHlbJTBuOGdKNHZvUDJOSUV1LntgUkNSKEpMRHtYQUpzZzBmXXAjOHRUY0xqYVJjSk0vQyEpekZaU3gxbFF2RDF+ISlZbjFKbiluekpITD9UbV1VWTZ7ensuTVk8LkNXIyRlOyUkV0Y5JTxYMVVrMCFNL3FuaHtTQkBfbV46QXxVdHI4USN4OnVnUGwrMmpJYFNAJlJJLzg8aHEv''@;'; put 'put ''JlVjRi9hQGdHdlJkeE49LkB6OVRUYTtCd3JbfVN+a11fMlJwZyQ+JnExeUQzaTR1XkVnYiY0bkZkY1hgcypkKzgjRTl1PnxhdWtmcV5kMUxSY0lpN3g7biViOSo1TTM8SDpYWWxRL1hmanxfamZzYyFIdTUoSEAkcmxtbW1lcE5kRXhjIXM9K1dHO1d8fnFlTj1VNj9yb0AoRm4rREFmfHAkLlFs''@;'; put 'put ''RihxRERYRGhVdCRGSCh2RjFYYD81NkZ4JTtpck9ENT4mVWFYKT1sUkwmL3Rya3gqdCNvYS47Sz18SzhpOiF9U3VmdVhXPlVmSWFAWHI6eXNlYWFbL3x2TSMlWzI2azNndF5jR2NVcyYjc2RSNU9nbUY5ajdHTF1WXl5WdjtgRX1oPm4xOjFDOHQ0cCRUcDRKYVJ0YDVuRSNYOF54JFFeIzB6PW5U''@;'; put 'put ''byNSVW1LK083Yiw2fjtVSj1jKyJed186MndVIWZeX20hYVtLOCh7dnYlQzZHZm5aQUYqTTJ1VF5OJWZBRSRgaD84KT4oUX1GbzdmW3V6azdHJF1xV21HZHxES3BoSSg1W1tLZGQpZStbNSNqa31GTTBreilCcDw6PUE/eiVrfTE+VV9iW04vJjl0ej01R0ZXLDZuaXVTfGRSNG1vSlA/Sm8xLkAh''@;'; put 'put ''TDZhcW0iKXImQ1R1KTFmT3pIeHh7SVVuLCVUKj15TDR9Y3MvbmdNITo6Y1QuQEska3E+Qyg7LFh0SjtiVlZgRlI/I3hNT3kodFtrO2lxek12Xih3XSlxPFtFaTF7V3AuY2l0PkBQaTF2RVJhOWBpQmRqL0s4YTM7YXM9dXZeeDx3czBzJkBMYDJvYk4sdkYxZGs0L3xQMiVAfjR3Q1kuPiV9SDVE''@;'; put 'put ''Q3EiSFVRMzxofnlDMG5jQnVwUFREYUxJPnxFIzVGU2ljUUkqI0MhX3tsJVtyVHMkVkAyOyI1MkQ5NTBfQSR0eTpnfDJ7bDo+SVpBdXg3N0JKIT5PT0lsWGdMeXBOZGV3XSU+cDdmfk0rJTZaNF81Zkh8SEZfazhYciQ4YS8wcHg+L0FldCE4Qzw0MzEkYUBddGwkVFovUl1aJVlmMW9GYF1OYSE2''@;'; put 'put ''LDtKL21CR2tUKytlMTlec1NzWyhOXnQyKUxIUUUuNEVmZz1+O2RmbDc2T3Z2fnImTSguZWZUekRWNihbcWhxJU46czdJMEUjLilsYmpuLzozT24kK2gkZiJdUz0vdFY8dmNZbytAQEc3XXFffGZ+OH0+QFJvbWJXKFBDfERfeDJUcjApdChBQG4uR2wmK203KFRMXWpyYjhOVjEvNGhAVERoU0B5''@;'; put 'put ''N3tSK3ZLRSNUN1RPaHB8TTtaKiY2RCpjMDg0U0gjN1RRVlJ9eS4wTHspXUFLfD55VHJiZmY8JU1lYX0xMl4pTlRJWTs3L3BKTTYpc0BkVTtaZFR0P1p1RkA4KFMkcnklL0VMfD1JdjNERSZzLmF4PyRVZldBeSNTSDdQImhGc3tNL3RQQlJdbF84SGw3LkdZIzgxQDZ3aVMzZXI3aDs1OmxbMz84''@;'; put 'put ''MV1rOzF8eG1PRUVMYml3PllKMGo8aTQxTSpDV2YzMWcoJmNjRz4oellqcyo/VyYpMyJ8ZmhoUSs1NnE8OGh9Z3ZIMmkoOD0pJVRkLmIlaj1ufltMW2JPMCMqPndrUHJ2dXkkbXZSUlYuXzJLdytBWDN1OElYcHt0ZUdqdGpoYDpXK0RDeiQ3RHddNT1iKkcvVWJwfisyPz52OEdjbl5bJmp5b3d2''@;'; put 'put ''XzhZS3JJTHNzQnEsZGtiOlk/UG8qLFdHbFh4PGNLUlVtTl1CP193VCtbQUYzUmRBU0B1Y3JuOjUkMCg0S1d5aD8weigoTW1kOGNMUEUkVHpJRVlpLEtLaWw3OkRnSVdbfkQ5PHJFaiUoPnROT1lDenRPemNXQmEqQlNZO0xqZik+Tkc6Ti47cVtqITxGb1FKNkpFdCF6OFY0S0xMck5pYmtEUW9m''@;'; put 'put ''VXdkfjpMZCJfVWJGOmNZfHwmImchc15GNip4Vk5WXyVXJk9gb0F3MnlRaU4laWJpQm5kREd5QDZvQTRMfmgyLy5jekUpSn5YK0BpU0U6eCJLSmFtfSVGfS90PCRhNkZoXmA6SlklQit5bEs2aGJ4UDdUWV5HeEVJJitxJjdPZCVgelhCVT9+YkZIZE9IdVEmUFZaNmJXUXMpY0UrY1pgakxBUVdP''@;'; put 'put ''WHxxWyhlc09pMD5pKC5hQ2Z3LDEmcnhFTFAoOj5VN31wM0Fzd1I5fVUqYzJ1PzkyQChHaURJPzpeJkFOOH1Mb2ZGTGhALEowaGNsPX1XO1F4PXhfJExkPkNffUBySThZOXRlNUt9WiMrU2ZOWXExLHdIdzM/ZXtIJlkvX0ZIJnZufV4wenR+OXIzfEVbW2dFfH5LO106YyNWNyFmciF9YnpUTlR8''@;'; put 'put ''Jm5hMX1kdnMiemZpSG4+X2c3LmdVU0hlWms0MTR4PGRJajBnPHI/XThwMGpDQiUyJG5RW104dm4hRi97VU9neDp1bDtxTDwxZkFrW2RXbWRXL3ZRV0FUam18IS9tQEZzPCl1VUNXa20leFIkQjkqbm5wWShObW58TFB7XkgkKVF2JTpUd1VwQ089W1YqMF87RiJ4T2dSdVpnZ1IibVZPPz1pSWlK''@;'; put 'put ''WnVIJXVQMykkSyJDKTo8eiZkKXgsQmhbL1ZJO19xTFBmQ0wxdVBKLGRsLnZleEZQRGEwNChIOFlKNXZzRS56bjM2NHs+WiMsd3JLWyMqbTp7VGYyQFBNYl9jTFdgaDl1VyFWMDEwT2NTOm9hWX09fjlLRi5oO0xyZUlifjRaT0dGZ2o5R0UvOCgifWZme19ZZi5ZLkg/YlNLUGddd1FIfGdEX3ND''@;'; put 'put ''MCo1TSkwUGpGVzo3MWReTmBocGpJLyRsM306VklVJjBXXzgudDR4X3hGVCo7VzBEKVVzMF4hVHpkKlJ0KUlFaEZaUDZUY2FPSkEkd0UiRVIzcUNzNzVBVVhEJlteXiljXVR3MlpmbiElbTsrbiMyUX4wXS5uVXB9Wz5+YjNFVnRifG0hcDwvQithMDNDKkklO3QuLyE5Uit+SDhVVyY2aW0yJnc/''@;'; put 'put ''dTwrTG4ofCFNeFJ1KCE6VV9IMD1yXiE+NnU4cm1KXjlYMko9TlprXV1GMSxBb3JqMEpyTH5+b11tT1VldVRyXWo2LmI7dVExQWtvKHNyTXpYM0JPLz06Xn1RZU5YZz8zWk5TKW4qbz1qVDE4bkJWNFc4RFNpfVVKaTQseHEqMHZSc286VD0lMj1LPTA4SzV2YT8jeDxkbGRSLC4seUhHbXFbMjJY''@;'; put 'put ''PCImNlh1M1tNaDVsKjxlbXE0bD9QRlJ5JmkvYT8rZXRZQzh3TkpvZWEuKSNzfjd4V3p3fHY2ISUqVUhaUyU5Wkg+NHE1MFhDRGd7ajJ2R2J+Z2Y+bVRRWWVaMlQhajh8ZElkX1FzNnxCO0M5YT4rXSYzeDd4WVVRTj4zaHNkVFMmRVleWnQ5aH1IQkIjZ1JkI0NUOmkhISJ8U0tCdkEjVnlyOChZ''@;'; put 'put ''PnVbLkZPfSwubGAoOip3djhqOj9kR3FnMFo/dCR1MWJkZjE3SDxbNFssNiV9OVRRUVU3OT1ETVt+OHsvYW08Nj5CL1NyemVEXyElXkc4Y0wjaFo7QXVxfCZtSW4qRjxUXy92QiQuMTtMdm9Pa2E+Pm06TEdhPE5neHpkfWhIdnxrQmFDQykhPm5bQ095S2hEYWwlTkc0RDNXQnslcjxRRnxoUFRb''@;'; put 'put ''R0UlUHtYcHV7YFVXdyx9TDV2Q0JbJWY8TUU7YkQ2NlVJRnR3Tkx1RWovYD58KjI4RT9CdCF3QzZfYVhsMjFFQHhPRDxYcCNIdEByaVhdQzBQXnFWIz1wQyhhTypzR2dAUiJDbEp5amxBYUVeSns3KUU2Sj03VyxrPzQsUUF7SXZrZ1I6KmddQk5fKVojMlFkZGNjZUQhbXpfck8mKVMyZ2x5Yk5H''@;'; put 'put ''SkQrLG12TToxUGF5cztrMC9yd2BbJHAvTVBkZT4peSJBPzVvcDA8Y2pDbGN6O2FIXzcofmkvZjRBNjU/RTZbPEsuTk0ven5PVE5QTUFlPHkvXWh+XWRRKDJvWSxSdDs3aCEuJlBlPn4zXlkwQiJ6T2QhRGxhVnZGV0c2aGByZ2NrIyxhZ21sfHIjXylwVDwjVUdYRmQ4KTBURj1fXjJkY0dSaEk3''@;'; put 'put ''QTRkJU93e1JJUHEmS001IjhRdipra0pGKGRiakBOWkFxOj8oRGQlXiE0KGx2ezhveWFIcEpeVjAzMCk9NWIlWk5mM0ZtKz1yZzhmc182cT8wfW1sbVVrQVdNTXNLfWhCZCledXxKKXxQVDVadllWe2ZuSSFdOzZ0Xl11OXl6b1hRSDRRX2x2OFEuSzMqd0M7ZDBOWlpHUCYkbk1YOGc/dXh9NVM8''@;'; put 'put ''LC8xJGI+UTQyTHdpcGs9LDFAcDpiL3Ilc2cqMT0+M3p0KWBwaV1yTTtadCpBPmFLMkliWVUkKUhwJUQqay93TWdJa3B8bDVlfHBZOUMyV2R9MXN8NjojZTt5R1ZMXU9hdVVfZ2s5InZzS3xLeGNrfjhrWCp8YXJBcDZgYW9rJW8zTlp6PXVoVGNAPTY5LipINltNVC82ImZuOnlITlE2U1AvSl97''@;'; put 'put ''a1hdUGx+Jm1KMHtxKVhgPGF+MSJAfnU8SFhkPGM3V1ZeSyEvL0FbPCxiKjJianM3dCNTVXZsajtTeE1bdEJiUihaPWRxcl1Cak88O19ZL09CLkAhVkBZKigxWVYqPFRwOiUpQXA0OzVuJlF9e3wzT3pnJlBTKiRmRiNEUXEjZnVHd0k5NThlbkRET2xvZmFweHdAfiU4LyR5Ly56YWNlcXVaV11l''@;'; put 'put ''SFZQO0J3STghci9bc2YraTFtOn07UmBeQHFAQDVeJW4lJEVXJGd6RSpwSUJrZ1dWOVl2NUZfanZUPnVlfUJPVk9INFRWTUxvYU1jRiZ7XilAO1tyeVR9SCR7X1hlVEI7fGlueFpJR3VNXlpPS15VY2VgWiFaI0tnKGZ0eFcvam94Zj91VUUqZDx+X247KCFgZSRxO28yWTtbVEdPNUB5bD1gekB0''@;'; put 'put ''Tngwa0hWYD5Pd2tHbT8+d21Ob2g+MSR3elBYdnVMcSt9YCNDYHh0fVQxJk5EY2I6UkBjT1YpenpVdnFKMG5SVEphMHt0ZT1RMWJkOThjN1lpQWh5Jiw2dkZeQmVIT2AxN35UPWx9eXh+SEU3OWo6RHxvUE4yYCxDVzZvaGFRaylmY3s9bl41IXFNbyQuQHNWWHtPJF59fWVvOiZUSjF3PVVsIVE4''@;'; put 'put ''Wlh6TkxRJSt2bWxpJmJ4Zn51UEN+W3FXRGopbGlLZm1gSG07ImtXTmglPTxMa0J2eWNFclgwbnlqZjFjVFh4dD46YGt2K1prPUwvKUUiYjpSLFhKRmMmIVYpN1VrS1t2IjIiL1FbJWBlSUwrNnFYTWNqWiZmLkt6PVRXUEk4VzxKb1lPJl0vNUx5VWxlNWEqNlssJCV1OXxQWmZMVERsIi5fNEx9''@;'; put 'put ''YCJWJmdbZl5KP3FYWTVNNFdRN2xpZ3dua2svOVplX35vaUVQckFFUm9obCRvVHNkUTVreWQ2dTpoYXROZnIqTk9MblUjOHcjIWUvUGpDSjYlI19kWzcza2ZlRi8uaiV8S2lmSzJbdlV3eklxaHBDdl0mZSRTKzVnMV9jTmJ2V1JmNTw0Kms1QjFeVk8wR3JzJCtMd0g4SEAoXVd1NUFGVnQybl9P''@;'; put 'put ''QExMKUlJTVlSPll4WmslTEUrNCt3K2VMbF08XUVDbDZ0QytGXksmRF5DJWsoKElkMkJhRlFIPmVLQTQ0Vkp7TDtWdF0kQ2JTaj9JZDtweHQ/Vl4zWjkmQjtTLyN0bCI1ZXBDNFdqUlZWRVZObnhTIWMjZXUoJn4oKVgqXnVWVFFgNCpTZ0NtOS8xRy5DW0QuX2N1c3RGIXohUSJqTE0xND1obkwz''@;'; put 'put ''bUVUTlEiSWRPaTdFN2oieU1aXm80Xlg6bzM7TVZUS1pAW0BgIW9kXz1hJCVwfloqYmw/YVJnfFAvLz9BKzFffilxajl7ZGNFMSRvZz5edzNJJDM1NHMpa3NXalZAalUibzYrJmgocSQofnFeUzN0Vzc3ME16azR1KHxRek5TQjc+QDQ7M3RmRVdia1toR3A1ZWQqV3VsNUA1Q3tGRDY1Pnw3aHVo''@;'; put 'put ''PzI4MncuR3tlJnBCQSZ9azhiQzFkP216aVI/NVgxQDBrTGNZVUAzK21WdlY0OD9DXXFfSll3NXlBcEdRMTMsJTVaTV5fbzUqeWUhcTxwP2ZVQWhxRExFV05+PjVCJXl6cEpJUTxieTNlciFmWj9SeEU1STdefHNFJCFPdFh2bmNiaCVsN2dsdThhYmJxJCt0NVdAQnc8Z2BibSQ2OVBATj43NFNk''@;'; put 'put ''UExkckVweEZGUk5NdD1GWkdjcVJGI35bK05bR0VHKHk8JE1pb3J8a0JeK1deZT47UXAjUFdtOXBPbTJBRmlWe2MwO149fFQ1RjgvMyJ1fjJodGNLUyphMklDV1REcS9de1VfMjp3ZipsJSV2bCshYztYa04wN1ozKWB6Pk9Cdis2eXBXWVNnQFI8VShoUFk5P2YsbUt3VFokTn0xdFVRazBodyhq''@;'; put 'put ''YHgrcClnPmo5X2o4b1pTU31VPmJKTEdkOUpwSXphcDh3eWJRKVlsW1U3XSQiKFY7WDdiZ0NnSnNvam1iKEgzZlN6fmQ2cnxHNCQ6K31PMj4zaXYxc3ojUUBbZSZJKUNWVytYJS9jJDtnXyNdVWFBMXshfn1HTnM1SD90MjR7alcmS2J4M1h4WEdfel95USkuM3wxXkwzRyFkZktadFlYZ0tSSVdp''@;'; put 'put ''RSI8YVR3P0VaaXxCR0w+eHxsRHhVSGo7UFpbcFM1XiVoPn4rL3B3ZEl6ZW1xPVg1b1k4JDtzRzpzOmp4OU5BIXQ+Zk9yXWtOQWtxMnhnRSpwUlNMUXM9Smk0e1MpWyRfMzo5MndiVmRidUlCZjtsJjR3ImdrYz1OUGwuKkwme1J9cTkpT0YoJGdNcXVrK1glQHBCVHY0fDQsWWlBMEU3NEQreEhT''@;'; put 'put ''VnhNYlEkMmF3bEFKJGYpb2tAZ3Q1MXE2P25ATHIrdlF1ZU1DbE1UKS9dZlh4RlRLQ0NRdXlRXUJBKnBFayw0R1tCckdCYTI8NFFnOSRJU1hpQDNkWkRgYWpybk1Qb3NfP1VZRT9HT3VoQiRaM2g6PkVHfDkvfUBpfmt2NHhkIlMpPmp8InVwc0liM256YjY2dkw9PX44fFl7aGVJUT5CO29CdjhI''@;'; put 'put ''NypEfEQ8QU1gV3ZwPHdwNiE+Vk4yQSFGTklrW2wwUllYMy5xKU4rT3olTSxvLGg9cnFyImN0ZDZGQS4hcH53YHl4NlJNdnRDSzF1S1RNKGd8Mmp9LzJbakVvMFdiJml2d3dHSzA/JlliLzwsOHFzbGg+RnEwT3MjRFhGMTIzPTgpM3ZGMkJOX0MiaVFFcHZrdjxNIWVMYE4rN1p7aTxRPDxoKDAo''@;'; put 'put ''UkhdXTUmeDIuIVM2P2YhUFpaLk5kOFN0ODx3eiRTJEoiNmpqfG5fNTVTcWYmei5aInxPWXVXQ052I1Y9Zj1peSZBZSk2aHpOZkl0X3IsdmoqUittRyJaT0AmcH1iQ1VGRS5+Yl9KYio0Y3dCc3lzcG4ofFl7Zn48fjIrKHk/TCZkTFdFXlZIdjUuc29MdV1rQ19LTEVyY0VtX0pFe1kiTmZxOWd6''@;'; put 'put ''PkhPMX1kNloyIXVFNEoiOFNaUUBrTmdiVn1WaERiJkp5Jk5lPThZKlhIIWB6MVZnQFN0O1Vee0BZVGR6OG17Jnc7N0lyaXBgdzZ0NEcsW0dAZX4sPzxKWSEiTGVDcWxMYEVzb0xpbUY1KllZaVdXJmg/TiJpOSNoVjh2RWpLTU5CVEhVcFBGJCVwfF10JWlvKU45OFdTZVovXTY1VihCWGhJVCZX''@;'; put 'put ''Z3w+UEByU2RsZixVaSZ0RyJVOz5tSFhIITdkNH1dOG1jRXFYJkp+WEkzPDZLVHxROCpAeWNHeSEiT0VHK0tKbEZ4R0V5OCpuT14mZkpXJGZLPVFLPDtPUk9QNHxfODQkazBgUSRGSzVTXywiK0Y8TiNSSGdeb14xMWY1KUF6NUEsM2wkYEZUPnwxLHldfkcsLCIyPVF3Z20zO2IkZ3oyazpXfT5j''@;'; put 'put ''KVlefFJnRlcvPSN9SF51KTFffFtfO1Z7aTgjb2l3UEojUUQueCtrMVJZWEFRb0pRS1IsZkFVUGh3OFRsQ05DQ0lUTHlUZU5uZSt7JCM8OnUldUZSenZ3ND14RFB9bF1QcFtEaW8pMF14JHM1PnI2VWgibCQocGx2U3JuTjB5MmV3QCY5PDgocS4rc3hWY3FXXTs1Rj8hSXN4bTkkbEQwPkFwTkRo''@;'; put 'put ''N0hsKEpUdXtCU0ZjQlU2cU0mQC92YlFKZEwyeVVhKncsYytYeGpMczEyJWZbajZRWmN7dX1VNWIxQHVHdUc/YU17S0J4MFJ8Lih9Sj92OlEwX3YweCNkNFh0aGBuWnNpMj0rVVR9TUs9TyFsP1hYMl9qbTIibGBERmpYI0FQXiMjJTIpQFRnbmFNfnImT1Rte3N7YEMuWmBGTDU+NkdUbzU+Wzg0''@;'; put 'put ''U1dacTMuKiNLNUJhX0RXaGFQW21YUltdcy41TXBTSmdaSlJUUUQhTzMxPGVLPHg/YyNkY2dEe251KGsucWgjcC9lLFU/NkMvIXVlJHVyIXFGdWFDZ3h1Km1xanNrUiNHNW51YmBJdkA9XmczakEvQ30pIzFBTW9XM00xWHJkUmNFOjYiSFp1WSZsQFl8Wl1jXW1uai9gTCFIRjJiOmw5Pl4hQUlz''@;'; put 'put ''M2JtMlQ+fi4pW2pfTGFVITpUNHEpbUY2SXlnRE9PPElRd11nTnF8bTFraVZ9Zi9tNj8wWHMyPHtYLHRjcmFtWCQxaitxSGo4RyQ3UVJGSEMxckFQY0YyNVl4SjRdb3BPR2w8fCZIMVFzaEUpaFFodkJNOzF9aGVgYUM4Okg0QHApYTloL1ImIUZ3SCNdSiUmK3JFUldRfSwpcj9ANGN8en54NDRq''@;'; put 'put ''ISRIZFl6cnluRDNxTFo+Yz1lOThoaEBwSFhmQTUvbnBaWXFiKi5YKHRaV2hhdEshVX40dyZjcTZTa3kiJTU2dzN9c3N1X2phOHkreTlGZj8wSk03Zy8yTXxDXlpFTHhOLDRNNkgrbVRbdTxPUD87LC5oQV5idDBWXWYsK2MjRXYiUUEsK1o5XnxXNmg9L2g9Pn5kRGZ1Nkg1Qzw3Vn0/U3M7a1d8''@;'; put 'put ''P3A2I19HSHYuT1YvekkoKDQ0SmJqPWIoZUVZYlEpT28wSkgjNzFKMXp1alReflFvS1QwdjQpSClPU0I7ZXZ1VXtAZFUjUzM5aGpuelM/NGBLKFsmOzdpZ0J9Kmh5KHRxRzJ8XjBwem1GdHlhUmpxYiN2alVXMEZLQXVjc05sTTdpaCtYNCRzXSZwLDFzLkphMyxqZkZtP2c3QU1JImI1M3pGayNQ''@;'; put 'put ''VXU6cWojbiIwQkREaW1XS3RKTTs+Y3FZOi9CQFkiaVQraUh2XS99V30wOFFbeHNNRWxTO3ltIntSYCRUPkIlQiRrczFIZ3gvP3U8ZTdZRVlWc2BLImhVUVsvRzgmZzxmOW5fOzF4RSM1KG5Tb1p7NkJqdXJFbVNDTCJoMUhTVlo6VypufUMxfDRyclgmcUk4b216Yyo9RGtabnxebDVVUzg+dDpO''@;'; put 'put ''fX50OFZbZX1TKDx2eiwuRmEiWyx9Wk5FPyU5ZXtsJSNzeVV8cnpyfC92S2h1eTo5dyZYcUo6W1Z7PUFyZC5reWchLmNjWkpoaVN+bD09ZSF8XnM4RGNYZENVT2BMKy94Z1gvcDJ7Om9tcVFeWUN3MDA/UnJhPyM0PkB4MDQwalZpNDEyNTx3SmlXVF9xWCNNcCNxUlhoaX5lYzhJK1IhfV9GKFlW''@;'; put 'put ''c0xdTFEjfmZ8RXUrbTNddSkiYjAqKzJtUkM2KjUkMFZralQ9bV9EUCw+VXBXSltYTSolPmlJTTdPI2M2XjxsI3FfMF8/bVIwZSI+THkmcnpbUy9MRmxbYkA4KSt3R1graWApaztlZz9CQThnTUNsUF54bW5FOTo8VmQlNC8/MEB+R1ZtQXc6NG1nM0QyblNnaWQ/Jj5kZGFCJXMqfk1MQjBGQFZw''@;'; put 'put ''UkNfSGUlT2dDKHdRXmghR0dAST1DWF9YRSpTTHJ1VjJFV0UpQnBZbEVjSDFXUz9pT1M1P010fXZoe2Z8ZChfRkgrJTpLVE9kd1o7JCs0K15aWHgoakxUemxEdT9tUXFfVlM0SDMofjlxVzpzaXxmSjxVWzdIZl43VUByY0crWmlEMldOPil4VWhrfUxmYkwxbyx2WlAhP2ApSD80QD9IX1E0Ylc3''@;'; put 'put ''WWQ4NGZkMWFMRik+cjdHK3hNYVU/fUNaeUNwJnRBT10wYSV0KkspX2hTLDMsZj5TO0Z7cnY7R3NKeW5INnlMdnhBW3Uyc0phI3hLS0dTSGVWTll5YHh0SmdRRDBKaWY3KWNXYEZzbGc5aCNJQlRMNm1FbG5MfGl1az4oX2VnKXFwIVRWWnspIXYyT3FfbWJ5K19eVG5HbSohJENudjlpVSs7LHQ4''@;'; put 'put ''YXJfQipGY1I7Rit4dExkYX0+OEdGRHUybGQje1IoPEpOLE9QZCxWe2YjdVBqTDNQMFMveWEoPVVFNDpbPF8qWVdUV2Z7IkV1UjdYZWZIeGQqVSw9PVghMmBmZXdqNEd7WzAiWHgsWUs3TjU9aUZmS0J+fkhRTmpMX0VCZnNQZ014O1FvQ0ZNQmBIZ2x9X2pMPlQ+O2B6YGBjPVtFOkBIQyIqcG5s''@;'; put 'put ''QjZYSXpoRzA/RW5ORUVRSTIpOXY0L3tCP3FjYCs6XmJeUVckVXd1S1pQP2RFeTp6dktgL2sxfXdtOExBN0UwUEtsbSE5LCp2USJHTiN9eCglJi93IyEzcjshU1lKPTsuQm01dU8iPWorQ2Vnb1JfJXloLDx5IjFrZzcwXlpOclthNV5VS2VkKiRBTVI8Im5zV05pXWtvflY2WHE+OFYxajNmd3N3''@;'; put 'put ''clModCR6Oil1KnFrVXFpNyZeJj84cndhKkIvWGolR3JZcnU+c09sKlNvcWNEQSpSJFVVT1NqeVpUITxCJmBgUSUoTUBAYXBrPjxfUn1NcyNuPFA0UVlPQnBGTlk0U3kzYmk9akxobkA8XilhQyZNXSpae31bPD9gaExfNzE2UTApRWRTam8hL3x7NC5LbDMmTkV5Zl4peWJkLnAoVDdZRVgpfD40''@;'; put 'put ''dW98fiwpTEtFSXovXlhuSls+YDV9PDdHJjFuTWJEMW9TaHpUdyVUQyNxXWFAOng4OGgoUz1bXzRLKGdnLzticHxfczxDJCZ5e35HZmNQLihHbk8jVmtpKSluXzI7Kl4lWSZNI2xoaTNJcWkuU0d7cFJ7YG5DejQ1ZD8sJFV+eW1INmwmTDQlJHYqd2BWIm5RJktOMGA+V0B+TEJoZjU4dztrd1dw''@;'; put 'put ''UFR5d1MuRCh4dDxxMmBlTDIwIj18Tk9yIkd8T1Fva1ZQJXpONXFVX14yd3JaZmU6UyV5PF5ddU1Gc3Vjb1NYaFBGeEtwO15zMGY0WHBNVWBUJTYpTj1WdUtgKSNDNWJaU2Q2ZHBCYltjZVVJR09DUH49IyNpdz1LekFZV3R8YTFjQG1SITx+VyNuWjxVVGQ/czh4PlBZPE9Qfn5fV3ZtW0ZnTS8j''@;'; put 'put ''TCojXm9KWCUyPEZ1QDFQX1JgfDArXzJYenswOHAhKEJPPlhyU1UkOi9jem51cCwmJF9LJSFNMldCJClMcn5rPGZGYzxJdFo/T1Z4bDNIIyMvbHA7KGlidjdiV1AuXzN2Nnc2cGdiT0V3JWhEOXA4VSg2U3A0OXYhb3dJQy4kTjNlW25jVCxZeGV7Tjp4bnhtRVdeMCxJS09zKXkzdThzLm9tVVU5''@;'; put 'put ''QSx8eEAwbiRqImFvKkMsOV1FXjxWY1AyN0FhejZ+JDtJWG5tcj94U2xkSko/YThnJE9nY0wxSjF3QDJPZXFnUltPKlgjQThhLCFtT2xCfnVPamZ8Zzt7bXU+Y3hldWkxR104RjsjVSpOVWNjZFIwOGFKT2RuMCQ/cTooIU1GazhafS9rTTt2P18pKyldPFJ6WiVfO2R9anUkQlc9SVJVQjRdN1gv''@;'; put 'put ''QDsjdTRENDcvOm9MRX16cDVzIUZdJFBrYyQvPkVtIk1rJiE3I0FFVHQ2Y0chPStmZ2x1YWlvJCFuRlFBQCl+eGlQU3VvWDgkO2JNamRrMlBwJV4jbTxPODpaNil1KSl1T1BgYiVHPUUyKlY3RkcmKXYke1pIejxFN0cvS0tNK15FMEEuUm8+LyZuZEE0TmwpbHhyVnwsOTY4WT5GO1NNbWh+ajpp''@;'; put 'put ''aT05TCg1dkA4WWZNPCM0S3RvdEVZeXd6USQ0bklFeFt3Vi9baWMjVFJGRVpYKXBfNikja2JSU09LLHc9XzRrLiZuSlFhUl5hUFJCJUdWflshMlJKe1BgODtHQWQ6On5nV1gxOGokP1E5emIkTn5QfHxxWn4ldFt4P1lEPCZnLzdXLzp9e1QiM0Vpc2syM2hEJl9eYEdUTS41fWt7Rjd1KyowO1M5''@;'; put 'put ''ZyNuTldvTFl+aiRGZ1U2MHV8SSNvb3ZfLDl3RFhQSTJ0OH5DZnAjV08qdyF2MiYpSi5kXUxMTUB+NGkoYX11UkFaZkRgOk9OenJuOCQ6fkI5PjEpK2peeGZKOUsyeE1bY2ZIdy8iVTU9R0c1WU53XUpaXm8yJTgqRG19YVtTZTI4QUR1NXg9dENERnFjUHg3MD1SOkVVemFoIlFOPzRVd2lXMlVq''@;'; put 'put ''cUclQDhoZ280THddeG9RMUJWbWIzTytmVlFXejd0Y1VKMzB7L0RjJTcoMFlubVNnME0/SyhEOy9nPDBSMF0hKFl4Tng2ZlF3Mi40Ny46fUx6JDJbMTJrVTpyeGVkNm4xZTQmfT1EVDthSzdySzUwdyxOXm5mW31gYDp7Q1N3WjJlcTJ6YVguJmV8cDIzbiNnI0xzJVQ1KCxHdzN3Ujk9UG47OkB7''@;'; put 'put ''T2Q1ajxYTzdGTFtKRXY9ZldwYkYvR04vTFdLKyxJVjRMVilkSUo+ZXQlJkY6blZxUEN0VmgpYCV5I3p4Sn5NYzNXKXZ1dnQ8emEvbkUmLER7fltve3tIWEVkK1NJUE07diJHPmQsZTJsInxDeGEqKWtrImlKUi5CaygjZUIzdnM/dFRFa1olTGI5bHVsL3BZQy9MaWlXb0NEW31sK3FYa05haSpC''@;'; put 'put ''eTt6Vz9RSj5JOlg8I3JAXjwuVVNFVWNLMVYyZUczJi93O3x5djNedndvXVV9aWR9aDlLaStXLGhVRFkxR1BwTiVHaisqbz09RXFxXTVma3tKWnE9blAmWXJDJkBFVXAwcSl8dmYxP0tTPj4pMl84SU0lVngoWVNwamtlSD1rOW9qR2YjMnxyI0VMbjFDY204ekF+TEtbdWlMSC5naUtzVzQyMGpt''@;'; put 'put ''bmlyO3RiTmAsQChiMztMZWU6ciwkTHgxVUljYkM7Iz44akpeMlJNfnJIIWs3KEcpX2dCPU1jKHhyeGxJLmwxODAoLltIT2IkaHlxTVdgQFNxT3FEVn5rUnpxeHVtdU1XaE88Ll8vJWxkVWAxR149XXlgUmd3eEwuOFlGTF9uNk5RYj5SWTUoJntVZGZEeCU9aXBjIy4lYUcvfCwzMSxATj9rXUd3''@;'; put 'put ''OEV1PF5UdlRbakp6VlA7QG91Q2c3Y29kM142TzVTLlhTQGoqfHpYTjRWSyklVV07TDwzaFJNO21+RH0+c2R2PXZme3wvM3JTVjd3WWNjUDI0cjJYclNMZks9KHhEQi9KcnFxQS45N2JbSE4+RCxLYG5FJT80b1tQIl1FOis3W01Jc0BDU0d1WVppR2lUZ1ViZGJmQ1VYOEYyP2gqK0ZqWkRfJUZ3''@;'; put 'put ''OltlVSVVKTk5QVRfR0g1dX56a1huLjZSJX1hKE8yNmBeTkZUQXdKZExXUXZMMFMiNnhvSWU3ZFlFV285Zj87SyN1OD53IyhhYiVwKypUOyRaVmMoQ21rNDBEa3ErcnVoJTZWKEtMYGZkX3BdXXp+Q3NvXTdFel47S0RIJTZ5SCtGVnpbKH0hd3UzTChCSzhkfjNRMCsrcEVhVC99VERoUDkybDcz''@;'; put 'put ''OmxzdUU2dnw8ezFdY280blA9MixXdGtvdShYVUVPcUouUUE+UEgrWiV5UHhDQHNHViYlRC9lcFB8KUxaI08wZEwiJipne08hUGkmcVQ0Wks9cGQoNVZyU2owYWNpUGlzJEI/aHA1dUVbRlhqbWs6eV8oLCI4bWB7Lm1PW14xalI9aFR4I1NtKy9qc3s+dE9GIyt0T2hLbkhsJXpOWVl9a3dpO1g9''@;'; put 'put ''UWtkaHhuQ1dNe2lmcVg5bU5waF07UXElZjJRRUw5ZEd2eXlRXkhbb0MmNjxYc1JoKC4jVnlLY3BvTEZHYilBd0VoL2lWOnxCZnMhSUNkW2FPamkqNHIpVWt6VzUmMDQxblBNNFNeO0wqWkx8KSVrKksvbTVwO1lbYEgyXVR4JiZAUC9gJC9ATkw6Iko4NnVuNHpxXVJ3JSw0KFQ1M3Y/Vn5NRzlo''@;'; put 'put ''TytsRTt2QzF6VnIkM0AhTThfSWg/N0dNVFJBJF8iY0wiS2o6Im87RXpud0A0KV1IdXc7bER9IS5IMGx3YmlqXWhUPSIzX2swSmpaaD5ranpRTUJWXip2PVEldDN1dEd4Zi5bLmV1PUUhZ2o9PUJMaiZoPEFWJGZyK2N2IkVpaWQkWTVveiUhJm5MdipSWCY0dEZHSF5YfGNBRDtHJHJHKT9yOXdo''@;'; put 'put ''LzV2Ryx9OllAYkxUVn1YfEwqd1JOPG9hY0NzTmU9cmZ7e1J3eDA8VEsufXJmW3lkWjduTG8rdW8uYTd2PCQzVkcxYTI4VjhsM2dxVjlXNEBNPEA2NyV4IzB6Sj1eKUg6Pll9MDI2U1tgTDR4PGdfIXhaamBxKyE4I0c6XkZrYVQ4cUNBTiMme1NGVXFMa1BUajtUY0B0Q0ZmbWskQk9DQEYheDVX''@;'; put 'put ''WXExcDQoLkE8a1J9QDVEPmhQUzRvZldjQ0dmN0NPMjB6andZZmlKREUyQX5QJlhGXzlIUiEkMlZ2N2dUalU/NHVnKyY0ZGdhc3ErM3s6eWxueG9MSHIrbmkpP2I5ITlNJntGP3FUJV1HTCw0XnJnKyVLXzhPSz9TTjd9bjhJQko8XXAvbWZtPURTMS47aGg2UypYNGp8QkpFKjk1cHcraEBTcGol''@;'; put 'put ''e08rbSx8Ril9UjVYYzh7WHA/OD5zPFcyW0pURCJqMiYqRjFPdChlP3U2VmRhNUVnO3hNOWZIIzc3aXRHLC5NLmFdUHJLbGx0ZkowRzUwa0AsMzZ2Mj4vXU8xR2pxVmEob2p8cDRbJXZhUkw7aGQ9YjlsL0VSblYmXmh8TE80UG82TDBxKDIzK1lCQ21dWWQodlhnKig9ZGlZcztPXXAhaFo/e0Zn''@;'; put 'put ''RStOJUR0TG4qTXxwI0AoeCV2VUcoenNOXyN6UGg6cnFZYTlbbEFXWTQ/cXVbOVE+JG96OF5qWiFPaXVxQ2xALltyTD5ZK140bFZOa0tOeWM9YG91SSt+P0c6bVpESWZ9SG5Yc10zVVhaaUd+KU4+T0UkfFQ8Yy5LXnVJQUUhcngySDclbVZBPFt2KURTS11yPHNib1tQSVI+KS9bQXheJkpgUW9m''@;'; put 'put ''ZGQzVkNNdW9WIU9FR0gpQHU9KG4lSWJudW8lOiooazZYM2dxaEpsYjkwTEI5TjJLQjB6M31vMHwvWndiajxneWM7X1YpNHRBU1ZEZSl1bzI3ajFeOXpvT3shRVleMm8zeStxTn5XaVErfkUsfmpEQ0R6fjErKC5jLzxrZEVvdiZCKDN7VGN5dGcoT3glXlEvazRlai9AaHl2Ykw5MH5pJiV1QGAj''@;'; put 'put ''d00xbj9rQkQoJUEjPkB7RmhnVyE5PCZRLk5TQTtjOVc3dyhuQWc2P35aSSp5QV98NVVtR1FWNSR0NGBoWj1KdDk5bkUkbilHTyZOKn01YSpQZXx0Nz1xVUUuX1tQfj4+aF1RNHxZa007Q2wkJER+bik4cWBlKVJgbEV5R0tYaHR1OjJAPkNdek1YPywvTER+Wnd9NWBKcDFeRUk5YGo0M1FiKTlp''@;'; put 'put ''YyFzRDxhMVdYPFYlSlBsaTwkXXIsWiV6Tm41ej9AdlU/U0IvbWNqe2l2bz5yWVY1NkFAa0RSXyFmTUttQD87cmp2TjorNVR5aSoyZzIlUUlKTj9YYGhyUzdoW1lqcGQxPC5wTmZgSVs7amRyNjZEK1BqXmo5KlRoUzw9W1lgOEpSfnt7P3M/b0N8T0N0ITUrWT9AVlhFcVtJbGg3QytyfTdRSjEq''@;'; put 'put ''bzxdWU5IX3ByRV0uIUZPaX56ZFl9VWIkU0llTjkxXnVuWSJ9L1ckWW4pZStKcEA1OilALyZLc2Iia3Y+TDV5dGVVSmBSSjJFOk9YbEE/XXtCKF58S2poOXg4PzRSMSViNn1bblQ4Y2N8TEFjRlQ3d0x2UWJBdVp2Y05laF5zfD1XdFA6K0s3LmllYXB3dixHZV1GN2k+aSpWdiVkQkFdJHJxb0dY''@;'; put 'put ''JD1RJSg2Xj1eS01SaXkySEk2cmc7TnpPal1OVmxzPTx9JnN6MmFFX0F7W25dO3k6ajFRUUUzSDpOUj1zNGhuM3F6R1c8Lz1hckd2aFAsSVRUWzchUXNXWk5BK141ZT4ye203b0NvVUlSRmpdaWZ6Nm9IclpUMWFQdTcrdSw1UT4mZyVxTmU3dzxOJm51YjQyfERFTkNNUz00VT9XPT1qWkJsMDF3''@;'; put 'put ''c3EuNSp9anpJQUJSKFIkP2BhdVoheVkyQ29ORmN1eSN0cVdmfFIzKk0jQ1FLKXpMZWgzUD5YX3BuJSR+ak5NNXNmQ2UqYF9RP3JNIzxLVHk/fDg2YUNgdWVSKjFUMzVGZFF4PzE/el5JVlI/L3N9UT5IbH4ueFhpJltfVCEkWEUmRElUdGY7Yj5Acz1qS0QkcCFhZFUvVSFRKTdhKlk0Z1Z+Ok0v''@;'; put 'put ''KlJPQy5NKCReVWxsPW1CdCsxKFV0U0NPOCVRNnJJbnFRZXpXSmxsaXsqNG9gQ0VbSSJTdjhfS3U5RktnamklbTxyNDFDQ2BRX0JuenNdPj04cEVdUTpYKnBaUkUrYUNieSo3PkJSITA7V2hlX3JrfEoxSW1zMiJlTkI1Wys5Sl4qR2wvRHZdaER7Q3ZnJDF5YmA/eFd6PWA1b2h9TXVRMHg1NDA/''@;'; put 'put ''SmE3RXtNQDY4YDI2aVdVOH1FUnVFaHpILDMkdDtrcSR9eT9AUlsjZ00rZEMpYjMvVltZfWxdYktwQngrZSVEW0E+KjRgSmlPS3V+Q2ZhNDQ5XlBdKSp6NXB5Ozs/KlpaOmBPKVJfXntSLGdLaUddQmdHU3UsUmVJaDMsdURiQXZmVFdBRnVNIXlfSTI0QGU1OERqLFBLY2R8dzt+Yl08bzgzR3o/''@;'; put 'put ''amo3OHlMNWYuKWJhQ3gjYFJsZztoSDQlJG5kSEQiLFIubzxHXUYmYHBCV1dNPyR7SXJ1W3tbRXppSmxxLEw7KG1bdnN0VzMydjBxKG02T1Q0QDNjaSp5WixIc28laUkwfm4oJFN8KlYzVVVvTiRLeUdkdnV1ci86PjtNOih3JXE4aTxRbE9vX0RwUiFscFJFIyV3Iylmd2ZHczpAYVBoI0pPU1hh''@;'; put 'put ''T2F3bENGWmNVTmczYkR8Viklb3MsPG9xaFJfbnJeTU5wLDkiNW8vOVN8RkNUYDVaa1lTNHd0fkJ+R2NrOUU0cHleRWh+dXcoOTtlfjRecVNIVHoyN3cjckdjbExdLiExaixjP310R0JheTNpYXxVYURhdDRKXXJuODxnbEgvbDpsL2Rjb3l7KEJ4VUxeUF5dbzRiOztPXjU8UTRYUzg5OCYiKmY4''@;'; put 'put ''MTlTKzswMWQ0emozR2VmdWZHUERPcUBjdkUxZmFgVFZhc2o2VERfRT1zclokY35ZUy9YXnBnPkBuVzMxSzUmWUhkN2xXV3RxY3dvRi49aUZ8X087K0IjSFlpQDpWenhDJmhEcGhTNzxyfEVFVl1MWylDQj9TO0lPNmNvLiR+dG0qN1VtXV9tLFhHUixePT9nQGV6SGdoUExNUStfJm0/SGd9MlZA''@;'; put 'put ''PE45WkMiTkxuOWlOfndXSEBRLzRbTGxPdmVZfVNuOWsvWjVFUlAmVVooeHVBVmMpdzltQzY4bU9zYHJsND0jJGwvMHksM1JhTCwyZEN3OyMqRSVscl42IkNycWVUYFB4LF86KHIkZntzRW9JVSxGWSE9NjBrNSFrJVQraWtqLEJlaTtiPElvc0NTUGNlXyFXWEZjLjhDZ3RkZk5CPG1yQktxajxu''@;'; put 'put ''eHQxaGpAdTp8MD52IzRQUlU2OEk7cEdpSmwsenRvfElCbzwoZ0BxbWwxZk86K3MjZ3gmVUxhenF9VDlnKX0oP146PFtPYXNiMXl0aEBzYDg8bWN9KVZ2cGNKdkw3QklNKkxBfDkhcUx4TUM7Tm1xW1FwRnk9VkI/V05QV1FAPmNUIn5KPmxBYFhkNHlZdzJJb2ZtIlVXQ1Y5PkxKK1pKcU4iXWF5''@;'; put 'put ''PSVffU1nfXJ7RFpEXzM9a3ZaXSMxVSkpQU8odiV1RS9YU3FjNWEvJjwsViVfaEl+O15lQzdjZGR5YXJXLCFwLm1XMTwzSTtAIXdUZn1xS2kqL3t9Ty90MXtgU3NaWDc2TEdWanBwUGo8SU9jRX1vWWojOj0xMntFYnw2VUpPYlNQNmB6SnwzQ0g3fmB7T1FHXSRXKmdPQDEhTFVRakt4YlNNdnN5''@;'; put 'put ''Unk8TG1tay5WWE4uNVkvc2R6Qz9jb0pQTVEoTWM/eUJEb1ZQfl4ufnlMajJnOXh3UzZgMW86eX1nTEsrLlgxOy9sI0tYInd+UDl1N0pURGl9YGV+eVUkeV0+R10sTS42VmxJbGNeUD8rc3NTK1pCPk1tInlIR3hxZi4vUDdvU3tNUGZHJT1pPSxJN3BiTzI6VDsqeyxUelN5P1lwJl8+UXxMU3Yx''@;'; put 'put ''JWNOMH1FbXRZO0paMHQ1Q0dPKmxlYCh1PXopVTxwaFVwe3xzLzx9ayJPKERpXXlRXzRXcFJaRHlqa1RTdilyfCJuRVN8e2trblloTzokfGhUM0Npc198QSR6fXBWTnpvWj0+LlRwJC5MNG1jS1p3NkZdJFh9SDpHQiYlRDxnTHlFK0pmdSlHW3ZFfnh4X3xtN2cjMXp4PkpjPTU1eGVDKzZVLGZC''@;'; put 'put ''eUZLbGJ1K0dFITQsVShCOTc+WnssImMvQktPWj8uV0FVXnV0e1I9PVI2bnRsOSJSLiJHamw8VmZec310UUMzLnVQJnMkVCxhWi9rMXNjUSYmbWVHMl9wbnlrLlZIcUZiLzR4YyNlNl9tXVd5NlouXzssN3lpO3sxYmJZeWF9UFF6UCU0KyNyWURAfXJmcyZuZHtaemthajlIVXtGZlhoNG19W2FE''@;'; put 'put ''MkhiW3JPc0QvXUA5SGpaajNHd2VYJmtaTF1aWWFQfDpuLmxBZHpeK2ppP0c/ZDRnWjQoT3d7IV1SY30mO2QrTz9KSjFnJnpnTTNdZzI2Q0RlS2RBZDk/SDhoTCs4K1Ypal1Iaio/bnZATWRtU0IjS2Y4clQvJFV3VkorbTdFMTd6NG9wZ3JadT95VFhZZVg8NDd1KkJue3RRQFVAJjsvY2ZTQjor''@;'; put 'put ''S1VoJUVKNzptenV5YFVXTDpULzZMfCl1ITsqfWhjWGl+bm0lODssLjYmaCI5aWlIVUtYOyQ+TiZERGt9YmImb0BLVTAveGFSOCFzaU47KjdtTkl7dC5mPnAlVX0jdWlyazZNR0RFdFI8NV8+WypFK1RfWyg7JmVCKWhmQF88LiU5WjFKV2lKZV8jP15uXV4wYjVtKTNpc0BdJENGN1NbNCo6Pm8v''@;'; put 'put ''fjlFOl12LENqYGtFejpKZWs5Pk9+UVVNPV86aUU8OVQvNmA3M0YjfG5wbHRwPWVVZzxNNWB2Ny86NWhIRUNMT0koKHRaR3dqPzVLZWN0Kj9NeyZzYF1Ae2JeOjd6Z25UYktlLCQvKksrNDtNRCN2PVVyX2VeY2o3W29qb3BQekA0YC5UXkBLX1RWbSooK1t8eTNoI1JMREVTJSQrTVNRUW9tR2kz''@;'; put 'put ''em4kY2whQnVfbGxLR3lkc2pYRVpGPGYycjNmLn5MPlEyNjJgWElqYUhHUkJSZlAreUJJZlFRdU1XYDVXWGRZRihmc3VARypXIXtmWF5eZ1dfa3tOMkpIb2lxUDwwRE1HLGNzTTZIaFkyQSVrR1hGXWJWRFpqeFBdTjVdYEc9NldlZnd2NHhrKEJKOUJ2R00jbytMeE1Kc2ZrKl5dcldYTVsjZyNy''@;'; put 'put ''YSNoTFlVQGA8TkwzZThNbHNHR2FBM0FGWWlAJEUkJDN8fklkY2BCbXJ1RWo2UXdsKk9Ddm83bjkyZjpkTHJzPDc+WzZsXWs8Y0hIaUR4Iz1TZXs/LjlYPSQoS3VgUkhRYl5sLHUhVHc9NixCMyp1czUkZXlle3J1QSRlUCFdN2lVTj9eNl5TdF5tK20kM2pUR1lDIll0WDkkT29fZlV4eEFdKE5g''@;'; put 'put ''cmhiaXR7I04rYFpkcVdQQlM9bH5iWjg+cFtzQV01akVeKiROcGNvJTgjS3kiNVVsLz02OkBgKEJ0M1RqWVpjVnppW15OQC8+VGEsNExxNUM0eV9XLmhVQDNjdkVhdW5IOjBPfj9xKT1NZiomJnlZcE42KGM2Xz9NNV51QX5kVDtESit7Ml9JfjZWL0YhcUs1W15XP1kjV0R4NkdJKD5KOnpGYT5C''@;'; put 'put ''PUR6RmFrRzNgWFs9XT9pM11AVnh4akN8MUIoWjtgZ2IrPyEjLkQud2k5Rj0kQDxuX3R9Sz1tMjhHaDl5VnFpamwxKFRHQ1N1RzN9U1dhJjRoP2IkWzQ4X0pHTVt7RTRQY1lXJVlZR0h1OCg/cipjQyY2PGM6Uk0+SGNvPWxjRUVFaEJ8ZCRmK3lrKUc9cilAOGFYRkNiKjAsbSVCMG1zano3YH1f''@;'; put 'put ''KW5FI3xeZHlDdjI/bix5d3NEWUojWikpK2UhP2NeKnklWk9YU0BVQEVAUnZDUCxyOXo2VWMja1ckRUppQXxma3VuUjxkI006TnB1JnVnbkJkYTlxPiRLaSMhe3pFXW1KYTpdaixGQCE8VXhUYFZSPmQhPnJGP3AscHwpfnE5Sy9RJlghN3ZkZzlVe0BtW0hQXi5UZl1WL19dbiNjTGgoPkZLeUhy''@;'; put 'put ''ezUkZVZXRWN9TXZ3aGMoM1VpeFdQZFF1TUlQMzxeUy9JcjhUMURwQFdSYz5BLzZNTCIwfmZjMFdYcntPX31LbFhBblJrYCZnO0ZEV159eTZFaXsoTHNhVSpvUkxOY3VKNktAZX1OR3RTRD12YDU1Smo2QHNzX2QmfCt1eEVVVDZea18pJV48OlRMdHwrZiZmP2FyUnU+cjRxJSQ3cXFBTzpuKSZ5''@;'; put 'put ''RD1FYGFMVUVpUj8qV0M3Jk8wLlFgKkoyJnBHMnVWMnB0SDxHS1txOSQ5LFYhMk9ZWDpSR2R3aTJRcHF+TzpPWW9iUVkpTHpzL0BWJnZYfHJeIlcwfj86Wi9lXWk2Rz1dd2hqMiZRfSFMR01LbkhIZEdKbWMvM3oxWWRtKVtIa0YhPFloWVU0e254SEE4LGFtUigveVZtL1sscj0od3hEYkclam03''@;'; put 'put ''S31aaHhUa2xqe0dvRFt9eE4+UmNuSEB7PkVbaUZgZW9OcHldKyNrRSp4ISY4aDgiXTtMXyhXfW44Y24iTEohfiElOkpJO19GOXtYbFJaPzlPUGcxLlYvOFI3JV1de20lQy86OSJ9RTUrMTRreShhOW9CYSx4I3teJHBPWX09JkM4JlhEM1thY2d2RiNKT2RxW285L3FNSnFNe09bYGhUW19TYjc5''@;'; put 'put ''LlgqZD03JEgxfCQ1QTd3RFc5b0oyfSYiQX4hJlQoRzYhfjU1RV9ETWRMRlVVRks/KkZFLCFEWVQ4ME4hcDhnS1t5WkEzNkksVzFXSiIuW0hpPGBjZWdmUStQRlVgajh1YlFoekw0SSlIfD44XmpzRX1pYForJjpkOH1hVjx+d11pa2o+aCxsW00ySl9UdTp7Onxre3c6VTFzRFk0a2IxcjVGcy5i''@;'; put 'put ''Qm4iV1NueDpIPUhIZlM3Kik1bSZQUzIoL19FNl0vQWkxZzBudSxLbGhdQylwUDJOa0hRZG00eTRuVDU8MG89a2Y3KSVWbzI6YWQ+TWNMdUM/eFt+Z0grcTN6KFUsNVF3JVZje2BYblN4X0o0Uy88bTpqPyZFYHpvN19ZRVlBNVZNbzZiTFAjOjdpJml8fkY4VWROTmAyanYzJFtJcCs5XkBUVmcp''@;'; put 'put ''T1pgZyM/cjBja2dOZ3t9OEY+OG5zLExXKVg5dD10PklnSDRNQ0JNfmBedmlCVDEyTUlpV35QZFBVWFRTS2BldC8vaCVnTUtJLjZ0TkM7P1RlW002IlFyc2NiKiJ1Wm5iIUNaTlMxOjRiY2V4WUkvU0RwYDlGVVk3RWdAe3ZNUF1KYmwxK09gfT9hdTY8Kn5xS1lAQnwyISZzKGpITn19VUp+fVB1''@;'; put 'put ''IjhgK31mPT0wUHFmLEJ4aGFMYHJ+RlJLPihoJWdrZSkyWl9dRGQ4c31uSHhCQEF9IVpMVzhzKFFnRmdkWzI+N2R6bH05TF5KXmFuMWYzNSl5ZmRwUVRbeGxVTVJANyQ/RVlrPDUpZ1JddkdQZSViPzFZLkAhRExSaD1pWVMoeEEuNSZuKHIsWmZ0SmMiSXtGbkFxNGF3e35Ibz51aT9jQXdgU09p''@;'; put 'put ''SV5uSXRwOzwqPTA2LFt1WT9YIWhxX0FTI2hkYj80N1NnKm90NWtCNXszXTJkcSZIemY+U2xQKUhSZGdIdnJnKWBfO1BRcHVbNnViZlAyeX4oZCs/ZGFJaGNiVmQ1PmFMbz5rQ2M+MTBOOjtKRHQ6PSFQN0NEKmF9WiZ9bF5TU09eW0BBWTlpdmsqIWV3MnRSSEJUb0haXywuU0x2LmhwUFVRMU5a''@;'; put 'put ''LytzOl1Wb0hdL09QYzZVPmM0NDU7NVhoeHReaEpyQnpke15fL0lXaWl4cGk1Iyk6Ii48c2lGYyJbVkxxIXNhcHtDW19HdUVJTiM7JnhxLn46S2YkRm09XWovIT13K0BibEZbOWpofTljUmVFTUl4PEg4eF8sYjtOJkQqPl07NEQkSUVbWWhBLyV5ajU3MklwQy9uciV2fHEmUyhaezVKe0xLTyVL''@;'; put 'put ''NTY8fH1CSSNKYGcvYXFWXXQsRCgqIy9qVVZUbDo1U29PTzhpIjBSVHI1PHJuV0ksbUNCLCpyMS84KHN7NjsscDpKMDJQfTRZMDM9dWZ9dzxqQWIvaW10RHRvdDFqOTcvd10/Qk9ETkQlc29VaWVlcUhDU3UmWEB2MmdRUS90XmEwciFZWkY/LkJGdHRncWZ2YH4wN0dzfiJHZVJSUXAoOUdXYkM7''@;'; put 'put ''QzRlLGszTVZmJUJjdjBLWDZLNFcxNSxmMyk/WUczbyt0UmY8SHYuSFJoXnhwejhjU148RTgmdzdUPCQ3e1k3LFBDPzNnfGEmdytTb1pEQFdpOkReQCh9ajo6eS9ESmp4WmklaCE5K3omdDhXaWtbfGVxP24uRj0+TCx+YjZ1cEF4OUVxRz8jeC5MSFtJNn10ZGEuSUR8S3lCO1dJVjFdJFRsIiNN''@;'; put 'put ''VXokSk81MyJVOTleemIzREpsQEJ9PUMhfD1PJiEqY01QJmM5JkZxS3N8RyZFRVtDRm9lSS9kNjYuT2trP21LXiV+N2RgeVt1UzJPSk0jd0BGOXM7alAscD9gJTtbbWAsay9mZGwpPHEpPm5qb0xKRUp6M0IuMnR5SlM7S0AyT05Gc2kwfSR9OT5vQU9YYlQ3bilte0QzUiN3aiR0YzgyV0BsV2hi''@;'; put 'put ''UXx2dXErdWs+djZnIys5OCxyWkw5MEt0byspRnQ9QzopWSNYY0lYVFBqTjc9W084WExmJVE4KmNqOUxkQzlRXTFLLHQrIlc6WltJImB0SjBDOCtTXk0/PXlDZHNZc2AiSTtjSnV4eiEvbUpNOENkQlFvIyV2Q1BNTTtJTHVIPXdEXlA/UStvaHEkXys8TH4ofjljR3JSKUohajNeOjw5UnFwZi57''@;'; put 'put ''fmY6YWdONEJ0WV1qTXBlNFhtRWFNLnNYaE1YSVMrPkFXLkdPbEJsbEhTYjl+V2MxUH1FfU1aYSl2NmcxWFtbRComT0VBSEgjYHJOQyldbmI4ZUc9ISJnPDwvaHQ4SCwyO29KUTdJNVd0TT1ZamtSY2g+fiw3WnYlXnYoMSN3MEdPXllRcHxkVSJYQ0p6UDo0KmM4NnNXSTZKa2MmaHQwMTNCYj1q''@;'; put 'put ''TUU7M1ciTGx9bFRrP2lid3pTNk19X3xFfihIOGwkJXRCOzZtfGE9QDFWQEU9Mnl2RlAjQiw+JVM/bFU0ZUI4cTZTdU8mOkExfTxSP1Uwem1NRDNHYnddd0NdKzNUOmx5ZDltNCZwdmZAOUlsZ3pHYiQlWDZdIkI5MENUSVhKQXdxfjRySTdnRVtqIlZQLGJbM1dDIl5XMyk8aGQ8M256W1dwMX5l''@;'; put 'put ''YGN0K254IW1yUzpoeTY0OEgjIiQ1MjA5b1c+OCpoNFBCODY/TntDIkNkaHB5WEldPTFQanRHOWFDJCtPajlIVDNpZ2V4aksvOXNlYSp4SyopQDldTno0eUcrZzRJdUklXUExRWFATXArUC56XTJOdihPa3xEL21mTTNaI2R8SyYoMmsuaFQ8PCwhST8kc3dUVlE6bSZrYSZra2dyTFNxcTQwe3JF''@;'; put 'put ''X317Iz0peWpvdVJpUT84PVVsKnsuY2MuQn0hRn5Yfnc4PF8oQl9wW00vK0g0Nlp6eFJEMXViXWxHXm1lV1UkelpBfC5gbXVeK2h2b0lWRVB8TypaXig/aSRkKig4dUBZdUZtRWJYfGwvNl8yQlBeb25oWkI1eTx7QUk6bm4xO08lP0o7MDA0c2A8TCY8KDExTV5TUC8xaWVBPzN9X0Fke05iIn07''@;'; put 'put ''XTt0MUBjakh5VGcpXV1sdTEjQkQ/d3QzMVMuRWB0O05xOXxbQEh+TCZTKiZZMGZYZ0tqZkImejBsRSRtekQ0SE1KeExfQEZzeSsvJkxTcyVPVChEW2M9QlFeYSRSQUE1SmNZLnVGYmw/aXQwUCw1dDFoJDE8fm4uSCN7QkNlQzBIakxve1hjMXt+Z15vS1VLMmRsZ10yN2ZdeDxQMzg+TGNkUVk/''@;'; put 'put ''NFBoRmd0SkVfen0wTlNuKHxrflZyTXxFNC8vdEVRJUNCOD5WZHpRdVcxbUBkNkw5U21idikhaDlRQndJayxAUCssJHlDX1h4aUtoVmtobjNrc1J1Ml9JZSp8Xn4ieiRMQWJHbU9EX0s5PU9ydyhLQntTblhAVHtlYEA7MHw9P0xAaU1YVnIhekYweUlVflVoSkMkRFYoQ09iJUFZajVrYTksU3N1''@;'; put 'put ''dEVpLGNxdS5KZUg0Qz4xdXFFN0N2KWB5NDdveDUiUGlYSTNWPkFraXQkXzprZ20qaXJSPiM8U34zZH52TStUWlZhXl8lV356ZHlfXWxIKlMxcVFPWlI3NHFrQE8sYEM4IlpRTGkyensvd01RMnFvPWl5cXNhQ3JYb0xOUkgzWCV3IXVONDYqOEY0W3cxQHlofXhZNG5TdHJjW3hGPi9FViEqWD1f''@;'; put 'put ''UE5kc0tTTjklN1tfOkZbOExlJEMpeylIeGs8UXo7IlJmQ1IwNm9JQ3lzfHdqbWtjYlkpUjVSKV9dN1VTM00oVnVIeVpFL1Y2NEdUOWRqMzdZRFh0fE9ZY1B7cXxoLnl1MCJ+bSIiOEwlV2FCZmx4Tz9+cjY2MC5jYEBRT35pOElPYTVjOigycn12VlRJd2cmIktAIWRgTTpVdUNMelFGWkA+Mzhx''@;'; put 'put ''P2BxV1pqIW8veTpSPltjWVM1R14pam5VIUZNODYoeiR5Oy9ub000dCNXfHFQJjVVWzFoXUZPfV5BX0s/d1FkZEslKiZpZH1OTCRDN0o4TW5RKVo8YkFGLjBoRW49eml8dV44I1M/NyJ3RUslJiZZK0wlXk06b2BeeXQjWVhUWT9ucHNFL2ZiQkc7b15jNGtualZvRj5dJS4yOHdZRkAjdzhaNnJn''@;'; put 'put ''WktQZFlVRUtiJFE5Slt+QDIuRG1HLmNpInRYaCI6Kk1YTEslVW4jdXE7aDxZTmdWLGIoeSw2YzYmMkdESExlMV80KFlMfW9ZLEVTQkVVVS4scGV1PiF9NixxTC9QNWdAamAvelRfcC83PU5ZKlpqOnNhUjciKzFNYjYiODxGWy5MNnMoUmJORkR6PWI+Yno4a18mVHthNU5AYysoVW8vNTkmN0FL''@;'; put 'put ''eE9pelo6fXooVXtOY0dgJTNgUmp5NHlxWTMkXnVfT1Axa0g9QE9BJXI+U0AwJlUrLnEzYWZOOj1bJFtuUXNeSV4kKFpTYzlIZSFEY2QiakIiNFFlVHJ1VGhMdTxNZ1g1c0gjI3w1NiV6eXohfTZdNWhDSH1UI1Jybz45QUN5PlVQY0xZPDVoJGZPJSU8ISl6IzI/dFhqZyY4NHNyQ1cvazJzYj5X''@;'; put 'put ''VTtyYjVYaF9yeF9SdkUheFNHRSlgOD4mU3EwaVgrK2R3YF9YaXc+Vy87Pix4a2VVSkd5ZCU3SEglSiFGRWtwKHlXd1p2bXUuXXNvKVhkTzg2T1ZZUkxFS3FaInpDMnZ9eHRfW0JPa0gxKyVWXzZWbWMqbld2UFFHdDdpfGp6Ok00UDxiO1lZQDY8STIhNVNEOzsyd0M0PW5fKFNPI15mfkUmR21k''@;'; put 'put ''SGlvNlo3WnopY0RGQ01XKSQ7Q2UlUjM6Y045VTJ6JDU5eHxgJX4+OlpBXUA0WTx8SGhOVnpYL0h9anZIYnldPDNfUmo8XjhUZk10b1hJWDl4QWVsRmRRYyJMTl4xbEwrOD4iVy59WmtQcTtec0BEciVRXyErPCw9PHcqPXU5bWNAR3Fua2V4Zi8jUDBNVF44dGBjTG1vdiluK346QnYvLnpbQFJ2''@;'; put 'put ''MDpLZ3Q/JTtoO3Mlekp4LEhQX0JHPDpZciNHMWU+cnFeYSxbbXZZY2lNcCh5OFI3cn09VD9SJGJdMSpqeTRQKTJxWHYuaiRMS2VXWGVUVzpfd0p5M0JRWXo6Nj9QPTFmOmhOYkZvSiwhaExVO1hxK103JVV4Q0IhYXNWTyE5d2MxdGcjMlYlbjFSQFdCNTE/d1YhZ31ZJH5HWFBxcnAjNlIueFBk''@;'; put 'put ''WFtQW2k4fjl2cEw+PnVid25TR2orTkhbYVFAVzQmXiMyU2NZe3p8RVZoeVpIamwmW09laWJrWjV1KmU6P31eNk0vbXsoOkw/aHthRzIkOXJvL21RPXA6Lmswa1clMyIwSDYkXzkqLzN3MmdHPFFUKlsqd3BGS1VhKmNXQSRGW20qOzk+OkByU1VKJTgoPm9nQE1BJStEfnM8c1YpcVBLY19CVG42''@;'; put 'put ''TCppLF98PS4jaCsrWUxGREVeUXcjSng+Y0hgREcoI2owJi8xJV1wPn1GQURUUVQqWX4/UnRPLkRva2Q0aislJFY8MXpiNFgrNGldQktlbkslMlM1czUuOHZISDx4ZChmaUo8SWIvN0NmO3dCPz8/VD11VyZmLGQhcjxSY0xvZUhBeUNWUy89R0N5QyNRPn1RM24qYmcoZkIybzA+OG0oMD8kTStm''@;'; put 'put ''WVk7TUxSY1UuR286XnFdVGlZckNobEpOQTlZe08yJU5EaWY2SlEoNCFgKnVbeiQ9KDZUJjE1UHhiQ2gjbUh1Z3NCNUA+O1M4K011ZzBuREU/ISg+XzJbMHBMRnRGbExtSXpiUHU6TiZLRyErZShoNjgrRV40cFloYSxHfG8peCliMyQ1L0M0THp4K1E1bH5ZZ2VDLGAuVls7OzU0c3pofmg2PzBi''@;'; put 'put ''WFA8bXFIPH4+biF0QFlNc0VUeDZKdSkjNCxPR3MsOX5EcUprQFVbaD0pM0xseTg7QGV2Ry82NWU2fUhDY0MxV0BoeFV+TX5LPSQwdXlibDpXUS9SSkE8I317Oj84ZFoyPVNSNnQwUWh2cEppSElaXVl6R3dTWF8xREsjVkhPfT4uNXkjWUBFfTB8Y0E3eV9MeU90LnhEUWFPZlhINjhZY3lyVmZq''@;'; put 'put ''Xlt2bkxeYEJYcjVeZl1jJWBoN1ZpSmBjd1o0eVFsKltqLG84X3U9S35+SWgmaXlnNTwwN0UqbjI8bkRoMGoqUFNfV3ZXfHFeXzg7eiZwT1E6UX5zIXMkZ0JHUng1K1tgJSpgY3BCcCtUImFzQV5ON1puUShDI0w1Vl1XTC93WyIjYnQ1YD5HM0tAYWkjdUQrPjs2XV5oPEo4WTxjazBkUF0zeX5m''@;'; put 'put ''L3ddYEkkNTZAUnspWntpdnBPM086US9oPWFDL24idHFeKVBbaGJbI2I9UW99PXR7W0Y3NkdFSzNXZThCT1NZJklXYC83aXpMJiRGS3MxLjd8ZmxKOztQZz5WZF03aiVHdih7aWUqLlpDfjosRWRIcD9zfjBscGV+XS8lUSIhLyZyVmJAVWp+LlNGS1dSeyxiTS5tTUdWM0BBRTtGIkJWRERLMSgq''@;'; put 'put ''YlQ5KkZMQV1DaiskcT5gaz8xdTIsJk4zPEElVm95blU5SG9oKFoyJmVUSFBTdEU/MVohdW4jXWVEKUsscWE6c0dRcDRwVVYpSWU4L3Q/SEVOLnZHbylPPzo2N2RXIVldb1tCUFo6ZEl+OnFib0Y5MkR3SHI6LzV5Uk44YWZARzNOQjlrX01rUkBMSl80IlpNNiE/MHpUSTEyQXVNeEk0a304STtm''@;'; put 'put ''KSQoU0VLakIxVEZPWmUoN314VH1BaVJ6YEBiN0lDIiJCTTRCIWJZM0JwSnI4IVJESXxgdjx2KGRzfWtpbU15cS5bMWlhKFF3KXFqYTVmQXhCWSlUcnxXXkFEWC4zUjZCWy9nRzt3LnIjX1NuNW5CJFpsMWQ0W083WU0wOjxUczJqYS59bWwoND80YyFOPVhjdGNELiQhVC8vVEU5UyFbbHJ0Omd6''@;'; put 'put ''dzxrYVdabjwxSW91ZHc6d05gO2s6KD1hMUdzUmNUVDVgeHNmfjNtUVVkaXxnfFBeKilbYDw3NW5hUztSeGNHZFE+KFt0dWpWaXQrZFVBYW9kTVNzJGNULlM+dkFBS0I5ekFCXWtePn5NO1BOSXlsKi8+JVtWSG9tZUF3bzw4PUhPdjdTVHokTXshVm5UYj19S1c+UDRXMj9oX21xWUdnKnBiMCN9''@;'; put 'put ''R1oueGE8W2hCTm93O2ZQXjY1dn07VEAzNldnTiJ1WzVWQDxWJFlnNm9iQlJzJD86KHspLnBaaCU0QjteekVOWy93JkkuOWM7SUpPbkJbR0puTkIoVEdRPXxMPWt0R2dSaEspYXJxYVMma25PKDEkR2NOMn5UP153Jjx5KTJRU0ZnPUpQcysuUlF7XzNVQGYpY1hTfWdKU3VCPFlyXm9PXjB2TSx9''@;'; put 'put ''XlFmTjxYWTAkejpvOElTQFIhJXd0RyxWVFhLcHUjLEhUYjhpdUx3Ln1rbilwSSRxbGl0Xjx9cm41S2VvNXBKczhpYTBWaHc2TmJ6WkgxbEEwY0NMMGMoY2N4I3RhLHNTTH1WWGt0a31Jfn1sb2Y3SjpnRz59NWQmX2Q0cDVJVUorNXo3OkFpWDVIRkhuMHVMPytAPjFKWVQxV1ReNVE0P3k1QG1k''@;'; put 'put ''NjNXTS40UjxFcWk5UUJgfFdSVnxdOTdJU1sseUgwXiRWcmZFTng8Nj80Nk09Rk1NSEE+YSxja10sRTBtWTFDenpkeGNNR3lAaz0jdXYqQGNYNmssOTMkbiY2aXAmLGZ6b3J5OkJ9YVNAXiI2W2Z4SG53Zn5DIihDQVJBP1ppZHd9SX18SCM0KHZXQjBEZjk9QDl6TTduMmEmQHVaNC5HOSZnWExn''@;'; put 'put ''RWN5bD0/ViY8JUV4MUp9fWhwbyFUUzdfZipoKnBWTXxeVkxsdmc3R256ME57ZTpFI2JgVnJbeWZ2JT5CeXRYRUhBTDVUaCFRMEVCNXh6cExCejo1XyU2TytEbyhXQ0xnYmtWYHx+QXVLYSwyeGxOOGA+QXRFJE5RZVBMcGcjL3UkJWI0X0xaSE9yVCs6Ql9veFJMO1hOfFIweUgjYHFmMHZUaiRl''@;'; put 'put ''YXlqc0JgRjppdHNaYmI5WmpmSDRpSnApd2RoOEp5ZUpoOERaKjRuK1d8YUdLOlI8K0o6QkJ0N20uUzpqP3ZGMjgwQSJ1NSVnZyE0Zn5tcXxrNyk3alBpZHRDVk1CJF8iTDQxQkMjPTFgY3s5V2l7OCg4TV4jcWBgUj5UaytIZXAiJDgoUHpbdiY7MDJfYkttUXp6dzZdMyQlJHFxO3R0Xmo0M3tq''@;'; put 'put ''dHV4MlN5YTlNdGcreSlLK3t4QFJbOm18VDJTUDssUXU3diw5M1k5QC9BZWs9ezM1JVdhPUVWeD40RGVAYWs0NlJPVkVbODttQDZiezBRVjUzaGF2QWM2RVM5UCZPMXRjUCp4azxIflJfYkRFNCRRY1NATkwoQyZhekordkZNUyxHWXt2VkVLbVosZ2VNYC81QUgoLkNeQkxVLj4oQ01kaERJPjY2''@;'; put 'put ''T0ddW0dCd2s7Vz9lb3hnb1ZWUyleXjlvK35MSF5eS0UqMG5PMH1QbGBUR0d9c1s0UkYxMzU6SUB5IVFiYyZtQE14QU94QDYpJiRrczpfPHRsbV4+ekkxQlplaGxmZX0wVUJ1RCtsN2tqayJ5KFp1Uzo3WmV2cEdPczwpOjxkflIpMDdqdXBaOm1yJSIsbzU3VygmUCxQKSgzSih7MF1QU0V8ekw5''@;'; put 'put ''eUo0XiVCNVJSY3woXm57bkIqK3xoZjpQSjEpcHM4X0ZZMjYjfmMsSTAuaWZ6L109aWpxOyk+VltobHw7Q1g8PXtdRV1PeT1vdVlsXTVJRiFNSVdZSD5tbD11OXI0OHcyLl1TOGpRNSw5Z2dydE4/WldeOjZfPXlnb1c5IjVuRk57K1BTXWprWGUzKE5xQE5feDtNVW9pUGxoS1FfK2xnZTBTVn06''@;'; put 'put ''dXdtOyEoSz9wOVYhfTpzbnEpMU9aRCwrbCNtTy9oMls1KTtsfXEwRjNPbjowOilURFBJOkwhN1RFeEE0d3Jndig8Lzp8eT57cEZOTkMvTl9YSTxbV0pyL014OW5be1dFcGJKX3JbPUAqNUhgfDowNk81ZlpoNFozQ3toT0RkNlJyfTY3ZUMkOD03TiNsdEFUO0srfHVeSklPeD1NeVdCeF9dLCtz''@;'; put 'put ''N1ohL31TMk52Jk97PmpvfWMjQmNkalhkcTVhTD9tNTxIbDpOKnlVS01jViNuQVF5OjUjOS8md3NhKEZ8cjhgSz5XcXtlaGQvP0N7bnM7MD0ydnIvQj5ofis9Y2kxWlBzMzUlcm8iODI+dypEXVtVdFRXakVaYyNFUyMsRFppfCRjKFUpL3ZESzd8az90PXxdK244WSp6TUNjd1opZFs+UFRaPD9U''@;'; put 'put ''PXxke0ZpUyR2dGRVZnJ3QGpDZ20xTmdzMihxXns1RW96KXQiIV5kZ2glYWF7OzxmeGhnfWlrcDVgPT4oQ09HQ0NQcG15NT0rM2h1Ij5zOmEkRm53WU5eYm9CTUJoT1Z6bnskcF1RO0wvdERUNnVCdyIuXWR4UyJyLjZIYE5udl5Wc0hDYD8xZVJsPH0zK3FmZF1eI18jJUZrX1VeKGwhUVZ4W1N+''@;'; put 'put ''KlBeeDlUSXJBPmk+QHtoW19uSWZXeDlxaHtReCw5VlQ7JiNFNlF6eHNsMW9zcCNqImhzLngqQGdsZCRJaDhSTjg4KH4zTlpqVE0qPFR3eTEpKEw9aHFjTit6akMvYD5vKE1TNlIrbjtxQldTNDMkTGxENmQ0VVQldGhTMDsvUkREPCQ6JmYhWitQRio2aCNlNT4jakI7N0NkQ0RtalRGSDJDM1Ba''@;'; put 'put ''QW1nTCNuVnFVaT9gU2xocXpXY3dfUXU+OWs9b2src1hjM3lLSzVoTEVKLj1lLzVKUyMkYjhuRUkoPFVaclZLNy5JcXlUK2k3OHs+SWt8SjZPfkptK3RxYUhXe209TmovOFtnNHFZYkd+SmRAVlZuJHVfSnksW1dVQTpWKGR+fTspVygpTUQ0PU4pYWM3fHgzaHJJeV86NWBnSis+bjMxJCJ2XS4o''@;'; put 'put ''NWdXe3opJDJPRzB3MUxrQmAvZk50NFJPampkYCM5NWZ2el9gU3xfeSF+YHd2Yn41fSpMNj9sJDdCUUckM0k2Lzd8R2JDOSs2KHM2UGZ8eG4mMyZvb3JqIS9pYng/LD5QPyp3e0VTSGg0fjh2NnFmQ2dATT8yRXJtIWZbVixSRUd4Xyx1V0RwWG5oSltaSHpXS0k7O3Z5NixNLkg2Y11wT3A5Y35N''@;'; put 'put ''PkVZVThGSiZAdSQvbXohIT1nVjVETypST1JEOlRDZFhrJHddLmFmdnZwTmBuW05JODt0XTUjSWtBIStER15pIyU3MUo8Nz9WTT9mcEI8MT9OTzFVUTBeK2Vxe3x0ez8lNUxjWmomRVFqfVklfmMybnBmY3tnbiNUX1cobilTYDRAYGg1SW1jPVJ1JjVoU2NvbG4sXVF4MEV9UCNGPmRoNUg/VXg/''@;'; put 'put ''KE5yR0AmVCQqQikuSTEsR1JtR01JSUJJNEVndkUvPHUhR0gjYiFARV9nX097bF98KXZnaUtpai5CNnlgRyQzPExucHBZU28rIjRCbWA9SktTbGt0eUI3Kng/JTE9MFFxQyp3anZuTnJzeFpWMF5wMnhWdnZwMHQuZjQyOW5jZUBmY1h5bVQjKk8lOURiO2M0dllwMFRwSUhGKnc3NWNFWDRaNi9q''@;'; put 'put ''VG8xPiUxJltWbCtCQ0JWNyMpOERaMTV5VSVyb096NSgqWUVsZnpmenh6ZWF9SSpHdnshUmwjRTNHcXJoInlxQDJSfncrPUhDSiEhOiZfVndYKEBPdlIkfWArYV9EPzI7KzZFKVpqQlJrdWl6RC98UntVXUdnUT4pJkMrRTwkXlFpOGdqQWVNIz9xWUoqMlN3X3JBdzNTNkgsRV1RbzxUQTNjKW5u''@;'; put 'put ''QFVqbkY6bXR6ZT0zIWI2JjB9Rnk2S0VvVDNFTEd4bjZGL18vSUBTMWNiVzhNK3ZzbGxLaS9iQkc3KktRdGM1NnFWfVAsJU9BZltKZTwiYk8+XXdrOE43PS4sSUM7SitKP0M5XV51VyxpYHw+OEZQVz1GOn5tODcwcH5Md3dqeVBeJGFLbl5BUVU/ZDVtWGRWYiRKNFZ5JGh8W3ZKWSFKa2t2b1BV''@;'; put 'put ''RXRQVF80QVplfH1uP1BUUW9GPWYkdHk6L2tFZzpmaTBlQkMrTTx9KHpOMjwzQVlOdTI9aEgyTSY9eUB7WX5MPGEmVkVab3FNdyVzei90ZFU0blBYPElbRC42NSNKKDtsM0NzV04sejFVSHRbZVAzZSk6M1IqUnwoeVk4MDRKJmZwYT0jTUVTan5aVEpHdiR2REBwfiV0L3I4cnwiRTBkPUBZJCp8''@;'; put 'put ''JjZecz93Zzlwa3FaYWEieD5gdTlObEplSWUiXVtSfDkvd3picSMrfVhPYTt0Lj10R2EmM2IubTt+PXBvOX07KT94diIkLy51QzUxKUI1byszXywoRW49bT8lSkxeR2VXZzVwb2puMCVwP2o6NU5dQDN4eT19SigyU1B7O1padjxoRmgwRGIve1QrYjNHMGdhKFdaXWwxYEM/T3I0aCxsXl5oU2c/''@;'; put 'put ''Ryh9QzEufGB3SmF3M20jZV02XiMicW9fUDRtYENPfSFeVzghXkt9Pkcycm0wPDVWS0JZNDMreVM7VGR0WFFsNXZLIl5fe3pgL0oqMm92OFVSeHopQTtNeSljOVJUfEcxWzAmcWVEP247WHYrMGxafl4wI0g/Ny89YmdqTWRaQ2BxNyhRQSQzXmFpKGpKb2R2dixTQ200cFVpcEc2bDVUXmVUOzNH''@;'; put 'put ''OjxOQW9dZXNwdytnQloxQTV8OENuKGYkX0ZJISQrK3lGUTdbPng/d2g1a1N9WD4+NXAwOiU6YFpAR3tHQC8kWiRTOyFQbyooQDsyN09PPzxrQm96PT4jLDRWPVFQXVY7UX52MWB7aHguWGR8NUF4ZFlSUElZVXFBS30zQWRKO3xDIWxvSHxiekhOWVRufUNscEgwMFtDQ0hpOnxpPytnK0NhJjJN''@;'; put 'put ''L0JOaUprLCh4M3xYPis6fUNHUHUiJExrR1RaWH1oaWQ3SC9zPTxVUVF9NmFmNUhMaDN5UHkwfkN1N0c6ZXxebSVsSzhSXSV3Q2soazJSWCxafWo0W3xARTg6Uj1sUlR7KzYqUSNsUEw1eD0kSTNUUyM8ITN1RTBnd20sOTxDLiJJdElRamoyezwjaGZBNy9QYmlFfXQ5eTtFJHA7VThfNzc9SU1S''@;'; put 'put ''eHM4W1Y8ezhuLDBPRz0qb0MhdiwqYX5vbkw7fjl0Z1Yjd1glQkEjTiksPUpKKTZbUyZudkgud2AhRlMqW30rY1c0ZktaQmkkYUVPM1lXQjFTJWQiQ09xbS97cC8oUSQ/RSkya1lyY2okSDRMViVkaTgrKjwkbFhSR0M5S1EhLzk0NzFKbjpEUXp2ZT87WSNiOithciZwW0FUQlF+cW9TN045SC4w''@;'; put 'put ''Y2ZAayVMYCthT0dpImZVTDwwKT9acX1KQ0IpVXJtfFtqK3h9Ong1VSk5fD15SFh6W0J0SXdEfU14cm90b0twblpLZ1I/Tjx7eFIkYn45PXlWPWs5SjNPajdfN2ltRUZFaTZtR0RVbGtzfUljRVlzTGVbZ2c2MFllP3xPOlFmWzFkTVVWPWpUOSF2N3xBMFdtJX5BZlNrfCshWXk+Yjd0P2JnaUxZ''@;'; put 'put ''U3YxVXNLTHYlND56MDVUcnZxOWI0dllFIy5ocWFFenpPUzFrejY5LFk1S3VdNHg9Q1BwdmYrUE1jbHdCdXJSIl9tY3JwY0RoYURNakxHe1RPYypkYmMyW3s6M18xRlJOPVo3dklBfXx0VE5bdmN2S1Q0VF1gSTBkeVRTRE1XMFRfeWBxQjp5Ijc/UzR1eUMoKkJbW3ZKJTF5aDZ5K0BWUnZxPHhI''@;'; put 'put ''N0U2MjdTNTUkZDVYeEpMc0JvLHt0SzxEVnEzSFNZTCJnQSUmPiY1UE4zPlpiMmJWQCl3Okd2Kll2P3k+OENaN1hQdVAoIkh9UXdjaXVyfUtyQ314NUxkb051KD5afit+O2xee1R3YS9KSitlLkROMFBucC9TT31penF6Sjt+RzdSRF53dntfb3pmU2F+MkU1Pmp2MFJSMVssOjk0ZGA9aTROOWMj''@;'; put 'put ''YHVSXUpGZF9jMH1YWVFKLCp4OlE5ajxeVWsrT0IwRUxhXTNhOE5sNXIpWFMkNVBDbiVTbWRxQ0c8Zy9ib0ZpdXZrJmB5QkBJLCpZcE9FMzs4WHxedE55OVtlWWJ5aFksImk8WyoubmUyZWtSQHpBdyxrY3R3NmAlRCYiQWZrSFd5ZWxAJmswUmF7dnxNfCxLK3g7QjUiMHgkKlRvbXJ6WCxfTyJE''@;'; put 'put ''fHBVfGovRl8jOWokPUZSV29pPlVAaWUyXzcoWDApNihtTVEmPmBIfHtKP1o3Uip0ITo4L1ZXRS8yVzlrS3U8anRidUxTOUpJRjZpdXtkQD1vZ3UlKDtBUSVFaWEvKmsocU0hVzEuYWZSOGcmZnpTMU5wdjJ4OzZnbUd7WTEkV1Q0S3RaRCpgOkJeLHZwKCJXTXFOXzomSDlwak9kI31iQmlAQ0kr''@;'; put 'put ''YDNaXzdzU05+ST18Uyt4bDlZYGV6b3I8U2FvS0dYKjw4LkliUzQiXlYwKi86ay8lWUBNO2JJZzJ+b1V6dCEvc2Irem50Qj5RNV51fVYzWEtgP2VjPGkwO1BBNz9ORTpKTiE1NiJ+PEJESyFFUmVJMVE6VHVJP0pSKjFOVjAjcHhoc2I2Kk1mXTkoI2VFSGhSeWBdTEYpTnhneGE+ND0mVTVZVG51''@;'; put 'put ''d1hiWExXWjFnNkUmKUlBSk5YI2ROMVosP3xtK2ldOVhub0N+aD1UR1lRS2o4L15SQGRxYn1mLlUifVdjP3JyUmk9WGpjOC5Xa0Fja2hIbltnbF1CMlQuaWx6ZSVIPCN5UEt3UlNpLGl6R0tGcTc9cjxnXSJHQit+L0d+Pn1NM0Z1bTJyck9ydzxmfjomWF99Zlh5O1ZKRkFwUz82JUN+aThmUSE5''@;'; put 'put ''aEp8VCtgJG5ZNG9ZelQseXU4W31QX30icm1BOlRtZmEyZ20hUlpGcFFiczl0bUlAeDR4amBJNmBaV3QzaGEvfUxafiFzcjZ6UClFa3RvQmJtcDJ2TXM9W2pSbVVROXUlO2dJXlhtdCpTekY1aHNrXV1bW31PYDxaJExmbU01W1thND9sNGc4NGFdNT52IWleInJLcHJFSWZHVHpmd2t1TCFqbnM9''@;'; put 'put ''RShdUHh1VGR6b1RDMlJ1LDNPTz8kbkR5P3ZjXWhFXktFaSEoMzFFXVg1a3EwQVFFSERIUGo/JmwzWXRdIUtPOm5oPHtqTFVVSU0mTk0pQTdWRiZNX2V+Ukh1bExGSFBESDVkOjdwU01JWV87Y002QHspVjQ9Y11qO25zZ2s1TS5jb257Kih2LyZQfio0UHdTbUtMSkZ9d1ZycnhtS0YyMFpIclNx''@;'; put 'put ''b0tSSTl8aHJpX3RGdSNSZTYpOD9NTmlhZmZsfXNxRi55dE85WWskS3lpY10mcVlVa04wbGA1bXdDeG4lQl8+YFUse3xPVGlwTmo1ZntqaVs8PnRwaD9XZ0oveisyfX5aNTpJXl10ODI8Uix1L3xDUilmdUc5RGomUykkMWF1SDchJUdgVDskOnV4dF9NczhbMEZ9TTVjY01DR3VUdV1IPnUmWWxL''@;'; put 'put ''IlhKTG1RIV1DfFRdP08vRzJROmk0S0JlNERZMmBJYkdISiFTKltlWDVyenY4fW9eaDdrPFMuTTU4OlJMd3xEZCxOb3VVaTdUJVRvUiNbOjpGeFJzUWp4KTc5V3oqKUMxIVk/TS4rLkBYYW4lfEQ8ZHN9NEdoZDw2e0YhXVVvPX1vNjNAXnpARWovTkEyOklpW3s8WFYlRTltJG5zaCssUW8kTz5N''@;'; put 'put ''dFBwW04zPkk4Lz9uZldlKFpRUj0qJjB4USViQE0oPm9PMHh+PzBKK0VkVXNvSi9sU2lqYlk5JGV0aEpiRCJXbW9QQE8jQGJsOSUpLmtjRExge2hjZVZgPiFdMUtrZ1NpNWpoL1ojQFlWXy9ebEBiNF9gRztIOXlraT0uRHFASyNaeUg4eXl4QDwmekMlRk5ueTUpM1ZiMGNseVRyYF0vQUYiXlJI''@;'; put 'put ''bmZzaURoKUtYVTpeUWd2Q2NYIjl0Sk4la2xTNix7Uyp5MUJbeihGWHYjJEdIS3NTanZycFA6RzFxXzokXW5aNmQve1ErZG5gNSRDU1JrVjM0YGRuaWt6S2craXhOQDBTZVBeazh9THQkNT5VNlg3V2NEK2Y3N2J4dlkyM1A4O2cjejZPN0k9UTApbHxzbk0hQGE4JklFP3JAMH1qNDZHPkVlKig2''@;'; put 'put ''V1QxbEZYMGBpXlhuOGFkOUN5L2lrNm1ESChLTXFvJXU3ZiFTNzFAKTRLKFdzWzxQJTs0eyNgMjNaIiJufSh7QDxEQk1uOC8oKVp1WXw6Q0VEZEdaPlssc1JSVnkrSlE4N3teRiFeMiosck1nZUdpaDJrfiY7Xkg6QHgwaXNAbmN3SWpkdX5HSkhfMlt9fmFFaT1yI1VwaWYuMHRnd0c6WGJGP35C''@;'; put 'put ''en1YNnsmLmZQZ3U0V2dmfm07I11ANGRvXlhNZ2pSTnQpfDxtO2YhVG1SbHhhM2pTQEVnUmYwOkp1K2BodURRfSxjKnsjbi9UVHRfRl8rPkRGeWhtWUpGeUtwcilXLHI7fEt0InQpaHNAdCtANSY6WnRkPy5QMU5jY0J4MDRuNnVdaVhEYFkmb140JWJdb1IrdGpne2gvOyVwVVBURWZzWmJCN15J''@;'; put 'put ''Q0VCIn48QDl1Z1hfVXtAVk82K3p8V1h8cX5gaF4zeX5vUFEqJWJpImY2WXU7RlZbTiRoaDZbOiklaSlML1pfIVF1Yms0LFk9Q3J1VCYseD5pTUNVRyEsLj9Ka1tFcXBteT9GND00ejg3JWgociJ4M14sZ2xOIkxAa1MuXyQvKTI3ZU1hRjFdXUVhVCk3ZVVWUEhPYG1qOjh7Yz0wZkBCREBuS2Iz''@;'; put 'put ''TyxSVXlNPzp8bmpabFVGSDtgflFyQT9NJGBiKVZyXlNPQDtdZXJHNVE0U3U/JUJLPyhbV2FfYEJCNFdCLklLSy5ET2FXRWhlZy4hLiMwbD9zUXMjIVhCc0oqfTdPPT5DfVJxK0swayx5VHo5azlfVCZqfSlJenpmK18jRTl0bGcjJFlUYVlRfDJCLzlwcVR7Kms/LyFqelBpUTQvJE1FNTg9VVhb''@;'; put 'put ''LjsuUEcxL3N3ZUpFUSV2YWsoVn1dO3tzQz5NU0JjUyx9ZnVRIjwzVUUkPXFpWyY9d3MlKHlONXgrXTkoSjBRTkZWTVBUTiZLOWlaKXEuSX11NUxVOUVrfExIYSRHeyxWeEpiOiJ7ZGhITzYqUy5JRTpaa3dQLkshP31JJFkkPDp6bEs1ZGd1U1JUWjFNTSk+RV1Ndj4uLn1WZ2s8SDc3cEhxamBH''@;'; put 'put ''ViUvdF11WCY2czJxQT9xW3gpI0Q5ZHpbU3p+cGhIKCpwelVbXU84fm0iaSklWjFdQnV1TXBpcD5yOiJeYXg3M3JsSGg7XzttfjRHN31xdWB2elp8aSgxXj1zIWp0fHI6b05icVsweSIoa01HNkQzW3xIYHA5TUxKbF9+fGNBPmxaQkZsIm92XUJ0TSE2Tkd1P2ZbRXIvP3Y8bFFoNnVGb1pjcVd0''@;'; put 'put ''ckpUPGZCU28+fUomWFN5IkxzYmBBLzJFdXR0NyJfR15VeSFjJSRKWiNJXTZkNWxvJVtwOGhBbUokbSl9JmVrPTUzSXYhO2pxen12dGBEVjpMK0d1diI+QmpLLnJxIitmYDxGXUNVO29sLE9WI09QJmhpbzU/Ol5CIjdSVl13N1JjQUdaaD8yVCh9JlZ9aDZtQjJyYldXe3o4V0A2S2tsKHV6Jm0j''@;'; put 'put ''Rn0rOiRrSTtecHZhdng4dkVFPW9fYEB3cXRoK314K2czXm5aJUpwOl08a3A7eClyeiZwOmFhPTAqdExtbXhSJTVXfnAwLHFkPFlvdUE1LHRQVXVacSNqX35URGV4aUlBdX0sNmhfLClANi9HYj9qO3F+RTFfSFt0LmF1ezF0O106VT8vUFpidUskQGUocEBPb2l6IUBEeDs5fWZJKCo5WHMqMWMm''@;'; put 'put ''bEdIVn1ZW2hxQWEoeW1ta2VbI3hmdkopMTEpODE4T1A7ZS94VVVgVX4kUT1MO1QxYFBlKWVeLCohI19xXUpiVV9JeTlhR2c1fF1wa0g2eFdVWkxCXyhYbS92MVpCNlVjXj9SfC55flM2XXUyRjY7X3kiVzNvPTVsNVphLkN8STY0cFYmXztpfT5sOEc3U0N0ZjB6X2g0KlhyWUc4SVA2QlBUWXoj''@;'; put 'put ''PmFeIyRnYUJjZXJVYzRQLis2cFR0W0ZyKWk1QCZmY2ohRlZeRkhOM2BUREQxc1szT3E2NyFkYmhQRCRpbEU7UT0mQkQuUTptPVdkbz1HZCNpfVJjLkFEIXxCKmg6YWc5PDhCVlBuL3JGSFJpNFg7PHNOLjVfaU1mK3RxbTBkTiVhbjVfNzRPbUA9SVpmX2VAKzBgQ0M9WShfWV1ZTkArKHM/ZGI1''@;'; put 'put ''YnBqd2FvXnh2aVMkT0Z9YHtsQkk3X3A5OHFvdFQmaFU0UyRTIkNOek10cGtsOHEiOVtNUCMhe1Y9dmFjV1JqfDB3WC9lQ0hvaHRmNTk2cEVzZDpra1d2dz0yalFLdEpKfDhiOCxQbEJYZTI2WH1bV1ZjckVVRFMhR2B3JGs/X35YRX1gK0pHaiM0ckEsZyVPVjZfVGkiRygzcjMrJm55ZjJRT2R5''@;'; put 'put ''Q1IjZHJQfGlvOkdZPD9KLkVHaVopWiMzYiNtOTZNVktJSD5WOWRAe3MkZE9yWWlnV3FgTktWP3wrN3NMfUF1UHNpflphOz03QSpwbld0Rn5SNUh9Tk80K0VdWSg5S11XRkk8OEN9OGR2dVd1MXJqdFc4bEtnV2FgSF9ue2BbV2RMMX1ZM25tan5ScTBCLHxzRXxhZGcsLDJ8c3EoPWlrIVp4b0pv''@;'; put 'put ''JkspaHdWK1drZTAhc347N20haDR7VkU1Ql1TJDMkejMsdDtaTnVUV2omeX5FJHdVcXFrb2ltXmJoQkYoaVVtQkZ2cWYzZWZURylCPHxgfmU3VlIlV2Bycm9udC4xZ2hdQkNGMHN4MSZ4dTg+TXAqQ1EsbkcmNk9ZIjcxJnxtTjN8MFBKaSxxLkteMl9kZS9TejM2JDFHUTUucns3IWU+I3l2QCtu''@;'; put 'put ''YUR6SjwqLCV6Y0toQn0qa01nc3U4bXdUN0RjMG1meX1gQj1VTmlEanxbRTNgOl4qN19bLjdbeihOc258KUV+QlBCYiQxam93UmNeQ2VwfFczXj4+TFB6Y1YuRVRPUWFJKil7Ono8JSFQVSRGLkx2MSIoOjpTMSYvVFBKXUdPRkg3Q1A4dktneHttK1IjTzRHJjFvSCNzIWckO3phR3NlRSVoOjtA''@;'; put 'put ''ISk0e1NlbDhVelVCOyVUVTZMXyMjb1hYPEpSOSNONnp8OEAwYnp7I19afUVSVyMie1BgflM5ZWgvdUZkMFs7b31MenFUWFNWP2p4TjRDfVpqITJmKVU9TDB9endCRnpVMWpFbHBxUnVISzY4b2VIcDVYOChsT3hpak4uZC5rTDNmbzR0aj0maC85U0hFPEx6KGY9O1A2NE9AUTZwKUk2MTAlTkom''@;'; put 'put ''W2drQD12eyU1eyowTiVSZllCSnErWihkNUduT24kXlROX0p9TEZEd0M7bStEfXZ1WVB1InBGIj01UXM/N1NkaTxrcCRDRmhsXXgmNEdYQW9VYShjZlp4KCReNlhhfHAyZnsvdDhsUSN9fCJyOEs8Z3M1MGlSZk0hQFNXMkNbXUxkNVE4TjdLdEZNSWR6WEo3LD0vTDFkaWEyTD9RZztNeDUwQjNa''@;'; put 'put ''JWNTOGQrfSgxLyZpeiErb01wL2MzXTBxXX0pL0g/SkRzIUh1TUBnejt6MD5NcS88LzcwRGkpcmxjN2I5fSEyYWk2dWpTbF0kQj93YTNRNjRHZj5LT0kmXl8qOlg1ZHN+akpFZUtVJEpHUmMiWTN9ImxKWCVnYC5ZUzBfa0VuPXJpPXp7c3gmfH5FcSEleTVPTnxqQVNIamN7MVpELjpLTnV9Zn45''@;'; put 'put ''T00zZ0VLSnc5ZkkyTlFzREdRUTp1RyVBL0opYl53I3VmLyxOfEM6eWtzS3kuZTpycHh6aWJJUC9qJlYxIWlHQjt8PGdLMS9fQGpMXX5vMSY8bTB4WEMhUGkxfktVZ1Z8XjE5b0ppI2gxPkpXfFZVXV1AQTByTGkhL2NHeix9dV9YX2tAcmgoP1MuaH05aj56WjhjJilYa30iSDRlM3BPJGV7MCgl''@;'; put 'put ''XVhAL3U1aV1zeFgpPSV+ZHplcj1RYWo2OCEzNjk6VT5aYl9HfH5XPj1YPU5QUWAwRitFelgmMXxzJTNDfFshI34wd353NT5eaEN4fFZWP2gqcHFMVSFEUmA3cVpAZmBeNSguOzkjY1o/Ol13WVVPRUReQylbWCxaeHp0fkNWLigqc2R1YlA5WypCP29VcDwrI1M0eixxWUlLLngpdiRaUzJMTzJ9''@;'; put 'put ''PFAqSmwkbForb0R3PzxBaDYlMTh8NEVoV2FDWUNUTF84Ynl9KXtMPnJRczBZX0txJDxSOTd1PFNLS3R+KUZdT1dZc141UU8wYkVbfXlqJTsyVmI8W3J2b35kLDghfn43JGAmOHJuKSFEdUI1Y3NlTSJjaz9jWCtML2FwaTBHIm1zbm9hIj5HeVlpdiooLlAvdzNTc3JfSnIhZDtSVF1meUtHUzMy''@;'; put 'put ''UV5pU3AyYjR8PiomfigldE1SVWJwZXlPUjljXVFAXURSRylhJFs5JjA5MlVoK2ZpREFCVzlCNk9IajcuKWtrancmL3AjfERCWW44XklHTGkyS0s8TmRaeD8xbHU7ZUFFUjV2VFhHVUg3YSl+WDwjeGN4aG56ZWpQJFVyTG81bHIrK3B5JClJYTpOIjYrOXldfUBGWl5WT2Bbe2tLa2tfN311VTly''@;'; put 'put ''JW9uaj5YJShmIUkpbWBvRWFXJipLZk1reipPJkBSOlM/LGFJUT9ENitzdFMkSmBaNTgyPyw+SlNsVFIpaDhzVzUoNn0+ek5yd0x8cix9b2BfeVE4T0F+bjsyP2chXkRKaGo1aEtqRjNxWTVUUEMhQi8/UCM5TzNhQlV5K1Q9N0x6SSk5ViMjJXN0PzBXLENaJm1tQn1De01wdnI6bXckUlhNb0B9''@;'; put 'put ''TCU1PkMpcXJxdldERT45eDlgU3lWSmYicn1iWGIkKz5UN3hfTD01UiooTGw7STY2RkNNL0xdMDJAaT0rdncpZFJDKXs0L3gjJFlhWm9JJiksNTt1P3BgblEqPXk+YzAsREUlQ2YmPy9TSkEiT19lOTlvQj0vNyk3VH5nJDFAckNKNUhPfDBfP30la0syYi8oUHtNYkVFVn4mOEM9cTNjbV5tc0ho''@;'; put 'put ''XTkpe21qZ3NnPysuJV9RMmcwQV9uaktwLkBda0BwTE0kO15pLGtyPS5qLmBgZ1Aoc0t1LiVpUU1zQ2U8T0Z5MjcqV3JncUJybnI9OitmN0pNO2B8dWYiSyI+RkZDVGgsaCwyPXM/ejxYPzV8XyZuQTZsaVBEaDEvXnFXZW4xJCs2Vn5Da0ZASH1FbzpKJG5QKVRnaEx3ODNEd1VnJEpBPG8rSG1p''@;'; put 'put ''SnR+LHVYcGVUantubF58YX1bNj5HQyt3RFYhPTZtKDw/b3sicDJCMjB5PlJ4aE1dV3k9XjAkNWNJXTYxUHI3eVs7Qjo3OUUiQlN2WkIoJVoqUFNNOHM9P3dbUi9DPn07dlo5NkZEXyh7I0tAYzlCMnxvd0lXQS5fXlVxRk1ldH0+U3JScWxRLDs5aSU6YmY5SmxRPlkmRkYhXktHWyNkO2c/WDJ6''@;'; put 'put ''WXV1aCwuOHY+XjJKQCxJSFBjP1ZfYE45Pys9d3gmT3k5TXBxNjhFcV1Nd1M0MyZnT3lMLGZrYU93YS9IcF9FMkg7eFgjUGxGOiU9dlR9UCRiZntKWmhyWVMle15TOl00RSRFI3UpRGArUzxtNGk2a0VRcig2MDBNLFRBOmhJJHIvZiVZdCxGbGptc1QyZmxfbUIxYkJZfU1ielgoTyw6cDQ7eVRu''@;'; put 'put ''YHtdXlpIWShtSjVRXUBDQWQjNGhWJD1wbzVQQHkjVXNWZTZRKmlUdTtPYkBMKVdUSzlDLjo5NTlwOXoieU5JPG1nbWpUVVtZSTNIJWxtMVpCfiVLaXYpYC5GN2AkL1NFbT10X1RNeExyVGZye2BMRVpxa3heJHQqOjVvS0pwW09qdFBpbixVbVkrPVNSZV1XRDBOZFtZIjBAa0kpWz5lWFc5Rzde''@;'; put 'put ''QDsqI0xkPyFsQ1BAPCNGTHF1b21FSTw+emEheyV7LmNfQHYofTs8TXwlN1koZSpiRTJmdlN+cEZXX1twL1A3TEcye25haVFAJU9qbm9LcT5eNiJBSTtbLy8mT0xuQl42fldLJC83by5WSUNDUjRkSylRV3ZhcHV+L25rU0c/PVVbK3glWnFxfWt0cGVDUnM2fk8seDV1WjtMR2ZPakQyNEo/PmA1''@;'; put 'put ''cntrYCgmbzxMYWc3VlVONSJrQkFFfCNqJFpvSVB6SihpXjxtUigvVSZMantOOzVPTTR+QysyMU9EQltASnpjW09zfEZPNml7ZDl1Yzt+O1dnbT5HZ35CWzxaR3p0KitDcmMsVCZEQn1UZXs2fCMvV198QFBMYkloeCxgPEZoUSN8Lmlwam1uckUpaHY/LjR2fGR1LyNleUEwdDdkRT1TIl06dUJg''@;'; put 'put ''IllkNyxrOEhgIk1jTmRLYSFKakYuazdtQnIiVT5IYmtHQ0klQFp6ZiNNUHBReGtNVUdle0pbd0xkUCZIPD8jKkZJRyV7aXV8WSw9ZVluQkh1M1NpbV80Xzx6Ij4hXUJRR3ltLzA7akBHMWNtKUVka3BMSzAsInxsc0lCNDRvLk1CbGRnLlskcT1lPzxUe1Vzamxja2BKWlh9KC5ZUyFFamFCV0Ur''@;'; put 'put ''WnJUVDFFTUtoW3ltejc1SGVjUFNxT0JJNCh8NTRAZmYsZ1UrTy96MyVBb0xpZ15vKnR4O0cmV1N3KmdXUTF+KlUxUi5+bXZWWV0xMm54JHdEZklyOC5uNnVXPzRrM0pmaUJ1XjhtYjJZMVIoTlZTcDsyU05BfDxQY2ojfVBedS55X1BSO3htJU8yW1FbOTc6MT9hIlFtc1FKKVAlOzhWLm8jYmpT''@;'; put 'put ''KENHVGVrUTk9d3A8PFhjWiVOT3BKSFNGZypGdzE4JHtNYW8jc2pZS2YlZWNuMiE8Tm97THtXJDleM3NlP3RlWGM0fDkxbU8kVH1pJTMubSY8U1ljMTVBVGolQyp0TEkkSGsyNGVQYTNyZVZCenAxYH1jMXtHNnFxPzxNPkZGOTs7VitnQX4oYlMkXVZuMzshekVyNXVQUlQjMFd2eVQ8Y2ZvQFE8''@;'; put 'put ''OTI4ZyQ1QDg0fXlFKCMpZVR3SHJwUiMlOS51Yyh7W3hsMFBhM202Q0lXW2c6aXYhSHt8QHdNenRsRVpSbGVsRUQmNktMNyV7L19tLmVqW3JmWEptX1FTMnZKdXgiSig7QnIvSD1yNXlpYDJpOndZYXssXjxdfExYTExRVVNFKlheQ05ZY1BEcjRnYGVKSTozeHFdPmRnTHJnbDQlNFhaOVBjLn5y''@;'; put 'put ''WXxRL0Z4YkYoTm9tamtGeTw/bDkuQlhzWkZXfERHKj5mI2IyM0k+bldhZCEiTGxvKUY0MUZbVz5hO2YsZUMwZnoqcEVdcDZrIiZfb3kkZVFbUiVCR1dDPXMpZkA2MjlpKCw9U3I6Zjgvc3FkYWVyMT99fH5NaWRfbjFQQDBKXWNxO2NKdW9YOSNkPGZdNyE8PDIyMUJ7d0hlLGxmYV97XWtWIz9T''@;'; put 'put ''dUgsfnYocFJ3SklAND0rR2pJKGQ7UW5tL3tsKiJWdypNMGtpI29BcHFyMS83MncmUEN2MzE6MDklOHRnWFFgPFQlU1gjZVUscTlraU0qNitIR2ZvL1J3NFgkWiR4RypGcGleVlBtPUglQzt2fDFiIXB4bFFRU2twT0pSfEJDN01uQ0VBcmpkaSw1NmB6OkZjcnFodlhTRVpOZkRHUU5eRzplQUh1''@;'; put 'put ''Vng+OWVmKn0+XzUsR3REL3gyUkdaRyR1P0A8X201TEkxYV1XNTU5PE5PUWd6cyNXWkJ9WUZueTE4blE3fiNUbGt1dkIrbVgjYSMpV307TE5sSSRCeThbWT9ieyFfcm0jPS5paysxMT4qQGBAXn1pKSZ9VnRRWj1mPFc+d1RMZi5XdSUvV3o0dlpfa2Bad09CUmw2IUZhXnJ1eXsmPWJxWn0vTjU+''@;'; put 'put ''Y1M6ZGVhaFJDOiReVHEyLnJIIWNRfXEjeD82QUgrTjI0WTA1NFZHIW4lRHxeS0JWKzdYOytVU3ZlXiwpKyl1SD1SZWs5K3hPITE9U0ZoXWxse1ZhXjA4Sz1yXmN4XkslQzAyaWZARFgvbjwzRHsjWmt0TCpVcHdBPU4uJkcrNzheX2o/YHkhL202OG1tQy9uWzdyJkBJWjtQXSZ6RSMrX01kcm84''@;'; put 'put ''NDl5VSFJZTRDRWNCQ2c/QzN1TEcpQjlJcHM9JDlyQVZYU1hrL2pne24kaGB1eWM5WSxEOGovIiNSKGE/TEZmaXUuWVk5SFJ4e0Fubi51V1pdakc9TjJ8e3drc2orWD1pU0YrQHFDUUU+PGxqYjBFR1lWQnhfRndNM0p5QDlmcyFabEp7IWlLZypqYyZCKHludW4xLl9CKENuR2ovJll4O2tncSs4''@;'; put 'put ''ZkFxNktMfXd0ZGx7elk7JiRaTVhzVzVGeHY2I2BRZ0pafUtGWCJdPyZWTWtSK0NsZE1LNmxfTjJJaFs9amVjLHBkTTQzZUIqUzI9OFoqJEJPbEJDO2o2R1J8ODlCNWw2NWlZNElbImtJKGZXTEBkWXR3UChJQVtISU86VU1yfWpfcD5wY0ZkeTRdTVMmPmcjKnRVRlksWHE2aDd2NG56S2dOZ3or''@;'; put 'put ''Kj19Kl81bWV2cENOcyo7VnUzUTVyR28paCpudilLVSloNUJGe0FZb2cxeGwoUXs1JmpaM3BlXzVzKiQ7ZGVaIUV1bmBYMSp0LF8xey88eFJ7QFhqITV2XnpbbFp5YVMzYXBvXU9MKWFZWXIoUW5VfTooZGgyVnxaN1hlJUNqcnVCZzRYWS5gK3E4K3QxJHhNZSpnbCNNU1o0S1MzK1BNcD5sJTxe''@;'; put 'put ''dkt6IT0ud31nalN2ZnBDO2RLPT5PT0E9alFIPlEpI2JvfXl5S2BYRWA+UXRmKkV+ejg6WyVNUi8yLEFKZkpRdl1laVk5LkA6SFhNVEZGbmNrPlExdTFJKHd4Pi92cEZIcEB9PnMlfTkuOmg/cE90PkErfSUqJStvLjhgcU5BImsvMjMzcTdBVCtdYWc5LEskYW9efFoqQio2KEtmR1BLdzB1WGo/''@;'; put 'put ''fVhnSDpoXj5KdTZyODZdPF03YSlodiJEZXA3OEg7OnVKPyszOjZRZWdqbll9RFFIVEhtLl1+M3J3PmpxVUxMci51YkAzMFd2OlZQdCF2cV9EQjNTOUpzbzo9NVk7RXgrOTxzdCVuMWlvImI/PDIxTzw0WzlUcTUxW0RNaDVWIkpaRTYjOFg6X1d2KGt3UTRVeWhWeFk9KDhOdV51P257aWFyWTR8''@;'; put 'put ''dUNINW82SmMlJl9+LmosfVFnRk89UCM0XWxMVD5AXyYzTEQ2dC58P3Zea3V9MyhjYlRGdGZJSGw0c0p2MDJSPiUqazd9RmIvNWRRalp3Y1Fyem5zXUFCJWI0LCM0SHhvTl1VUGU3JmRaU3NfdWMpMSVgYlRiImtLR0hVMCVtP2xTbF9OKWoweXJZSCRgXSR1IixvbipYPX5lZ1hDI31DWGUlIUBy''@;'; put 'put ''ditjNlc+ZGt3YGFmPHBdaz9zJXRDVEUldXphT0RiZk8iaFk1MCkrb3lnb3k3aSE5ZGhOJmF2dnQ9eVJUbXdOSU1GKi4wQXNrTjhSelVGNjouWXN7ckMrbnl6ZWRjKyRwNmIrPnV+TjVYTDA/I2c7N3M+fXNgMDlBaztQVmA3U1U/WkJgejl2PjJxOyxeYz1iam85fj85SlBKUCtbSSRsRFEqem84''@;'; put 'put ''JS55SFcmS300SDFpT0VbdFt0RVNrcCNCR11eJFU4ZUBVKjMpdHJNUXB0akdZdXxXVT5QPnAsJT0zKVAwZGBgQCNJTmRhNypsWCU2JDZwXmxOLnhnaUZVNF1ba2JCTXhoXXE3WDAxTU5yV2UwNSE6c09WOHx+X3tERU5BJGNNPTQ1Rlk2KlohXUhRZDoib3ZhMiFwOlgmOCFXKy5kPzJMSU1nKTwj''@;'; put 'put ''JlF4Pz47OSNCWTlnJilZKSksOUQxTzE+S0NDe2pIO2h0KSkjQk9McVE0cjRVeWRAMzdib0k6RjFvYSEzQERqVlRYPnM8NHU9JXdbNSVKbkI6QyJMXUU8an1JS3FLOz1XRllfWTlOOk1oN2BbOGQ/eihTeT80MjpwSz9qeUkuN3QhdWNnMDdLL2tJXT5uSX04N1tbeDlQTGF4PjY9cihpSzZYVHVB''@;'; put 'put ''byxAeSguM1hKels2PHRMJUpmLDAoYS8iOjhjNi8vRXNbVUZiNEFFZDE3QDRHRzxEN3BROHR2emEhemxVd2g6TT80ViU4LzVRSD56QFsoc1hacnxZcVszI21fPj00LmhIdSNCWypkSzh3QURfVHd6WH0wWjxafEZBa0w7WFRYNE5pNHFDKnBZMmFEYV1QUU0yWlIhJEZATi89YGlBSHhHRy52cmN6''@;'; put 'put ''NU8mOWRZI1IpP1chcTpbV2FFN2FWfGF3JkZdP11nQ0ZMSX5XKm8/aH0/XUkjWmZWXmN+bi5BdCtoNT1eQkZEM2JZKU1KcjZlSDNbdS9ZL1giOE4oeWlvMXVlQGgyK1BPVGddUV1QWDBJdSROeX5WbExYTSNMKUwmZGJzd0dOTjtndypEdT5QT1Q4Y1JYaHM6dDchaHZKO0VrU1lEfGMwXXtpYE1o''@;'; put 'put ''YVs0XSl0OzF2YUF5YXJJbERqYW4qPzk/RWxQU1I6MXwhdFJTciZyR2A/UCplXmJEJFFHZFZYaiVHNzlCSTYzPVZDPy58bVpQdSFlMU9HN0w9SGF7bCQqNF1KbUpXZERnKmw5VTEocT48TVVCWSQicEU2QWlnYHB7MWhgaWVULDYqYEg0WnVANDZ5empPS0xdMEUsPjZ7QkA1U1AlTEQvW2QvTGhN''@;'; put 'put ''SUQkV2FUcS9qK19MRE9sSTlkaXUoKC5yKlo7I0BqKHxLUnIrM0tONjo5elUueFVFbkhtO0QmSz40OmJoaVg7N2FGLDEhMX1mMXp6PixQSHxWTzY8JnE5TG5lcnF1ej5nQWEuKjQ6ajBwRTxMcClhXlB5e0l3c2swL153RFljQT5nMy5ARSg/eXBZZWd+NTtXITQxbTUhbmFdRXRNaFRjZjs9KVJo''@;'; put 'put ''RUtDSEtNVTI6XXdhYCw3e1V0PlF0dGEqalIuU0Y9NCQpJi4kIT49XkZreEI0Zn5JXjdufXZrNH4rdyhYeUFKKVp9Y21EX3ZAezx+RS4wPTluZVZnZmwvbVNuOFErKEQ/IVJGSVMuNzg9YXgmbzFSMkAkbFpMalkhR3FSUlA8d3NOSCxMRTVzQVlQIzdJMT56NFJzdHx7WCRnQDBnQGwyIVBpeEIk''@;'; put 'put ''d0dBNEtJe1RkRyY5I1g3PCFlVk92dCZJMDVELm9RaWhSd31GMXZYcXlKO0toKSVJYy9MdnJ0enE8djZHayEmP2hYODU0OnVlKG5pcV0lK3J6eyM1W1ByYTc0OnZ6YS5KanpZW35SLGZgTnI9Wm40UClDUkc7bUpeSE5scCJvSm12aUxFdCYqbDN7UkY7eSheRl1rLFd5OGY2TDJwJVJXdko2aDcv''@;'; put 'put ''eSkyNXdBJDwpPWNffGpaKEpvYyojYSU2USh0VlszWnMkeUtaSEA0OVAjPXNnQCh7QjNGKiQ1WzNbdjwubjo2M0UzdUtzJGNeYjIrPl9lY1g+MnZQaisrfE91WzQxYW11bDpKQ3tsLltGZzkrPGtwIiUkZyJjMCFDIWtTfX44VnFGN1JUMjhsMS4oJGJsYitBSSl9RVF+cVNDXUdVTHI6IjcjJmNw''@;'; put 'put ''IjUsUXxLOzZAc3Y/SHgxUU1jMXEuWXJ2X0IrandUSENZaXkxSH13cTc5S2hTLi4qSDhHczZPK0pAJTxVZlpMODN7VmtIamc4M2EzW2ZPVjExTCQyQS8jLEpgJGRuVl1FUmx4TjRFJVhaaFtQandyKlE0T2A3LjlMIXU7YSJqLF42UTw7fHg9Y0JLNHgxXz8seFtbU21tL1U1JCYqTHRKPXc7M0N9''@;'; put 'put ''VXxFRzthYFZuMllPRn1GS15dMFcjejZaSl59RysrcVlhN1piSSsyOXExQG0icEl2MjxXWiM9K34iMzcvUiordzYwKX5YQUB5TFglUDZlYytDTyJiQEo6YiwuUyQ1S1c9NlddU1VWckIhO3U+cD9+ITshdzQ0QURNQkQ1YDcmcyF2fWBoNHc8ZHxFIWRlLGx4LEJiL1puRG9OWzY3TlZdaEhsczJ2''@;'; put 'put ''a0tmUkciS3FuMWN9I1pvb0NqRTFELGpmPitEZmc3SWEicGFfd2ZIWis/VTM/ZnFSZkxyO2Q5TDRMWmFNN2wpRmo2SCZeeSJJOkdXXjVgcSU/VlNncmg1QlckLFJOOHBfI0R4QGR7WHcuQjN2SU8sY2UxcjZQSUNtVX5LMyM3WU1KWFZPcWA5cSJtJks6LFJ7Vm46fn4pdkhvKnBwTXJJYEZkOUtf''@;'; put 'put ''V0x3KDI4SV5veExZYHxiTV1bfGNpLCtyTHd1eS5LZ3ZIT0pqdWdyTU55XkJYZ10wa0FHazlSZGhaflEuREcjOihaUiF5QVM0d2hJKjhfKGxFSUdmKWswXXRpfUVPfVVBc3EsOjFzS28kcDlkfWVoTjB+UilNcTUlejU6OV8yNShLbjlpbl1LO0hlVnFAPj9JMk8hQWMmamhSQkFJdmZQd1Y6N0F4''@;'; put 'put ''eGBnfCorSVh3PGt5O1ZLNXNtRzhjbjp9OkNdZmxMI1ZIREIwOXpGbzM9O2JjUEFqMH0rRSt1e3soNDljTlRII208I3p2OGl5K2A6XV5DPGpPd3ZdS2hLXiZ8cXNLeSIuPTpHbndwVVg1Vy89d0pufWNVLjxwQ0VTcXNHWjtMXXE4dHZOWzJRbnxoQTM+OUIpRTd2VWFxTSVrPmRbTUVwY0Uwd01u''@;'; put 'put ''cXsmKnQ4VmFtNmREQTJ7IkNjeGtRRlhtNnkxOzx9MkVwSCpHdn18VyxyUHZhPzRDWCRFcHNuMntjdmVJL1F+LHxQK2JnIWY3fSZ9c1pAb35aPCk8TWpuNm5ZaDl3SV1xU2Q/XSpqVU1uTHc3V1VgaGVDXWZZc2decXspTTwpVHFqeVBoZ2Z6UkBVLEooN1BoOzB+bEN6P1RYY3h1TFtYaVJ6UE0r''@;'; put 'put ''bn1UYnwqZk1UWnV4dzdESlNdMldrRXdFYCJGaT0lPDBPZEM+QDJyaTZWQjByQ3YudUsrMCJoN1E+XiNWTl4/NkI1XXkvbVhsWVBXMStUZDohS3lFd19bd3BrJW9Wd2Z4XSx8aDAxImE4PkZGPHdtdFR7PCNJezByQjZHPld8O2ohSEAhO21zZnVaSkI+QyxONmImZWJpT3ssWj9GdElKI2dPcEcj''@;'; put 'put ''NSpWPitGRyM/ZlhTajpSZ2BTU0h0ZFRkWnJ+OiEjXWFjKy5VXzQ8P2M8W1lycithMS98JDYqWiM7bWIpcEEieiJQPiRjbyM9OCJaU0d6cSFBWUUib3VvWVRYTGFsaEF4OVIpKlJ1Q0V1NHk8Vi9VSChGeVNOMFFETXA8ey5nfTNraG5JYkRNOXJPeHo5Y19ISGliaWpCKCRFZzY7bH07Sng/Nzlz''@;'; put 'put ''MzFpIjdqKGFFKiF2Xjl8dTJfZHc2N3pOfjF7bTltJH1yI0JWI1F1SjlqVXljfHhiPUlFWEJydERmcmZUfHYjWU1AI08sSF95Nn4xIytZOW4qTj9yKEQkeH06bjJgdFZaSmNSMkgocDRzPzc6UXw8WlpyfDxIdnV+d0g2aTBSNzx4YjksOkE3LmN6NDUhWy9ucCo9WTdMe3FCXipTfk4wYEFKIU15''@;'; put 'put ''fVVaeUJVXihxUGIvdHYzeG5zVk9+QnFGR15CdEJwPT1hL2BIdT1+aFh1Vno2PCludmc+ak57Pm0wdH5QdHwrdlJIKSlIL3QzLEs2KTp5b2N3QntUSDFYPXRjQXg6UWMsTiY0NDdLd0dPRSN2PmdoIjIlJjNkdjNFNFg7R2RiaHVdMThyQF5dQm8sQ29laFMyRyIiLmg4OjxDcnQ3WEY2M2taRDEm''@;'; put 'put ''UndQX2I1aSh8WyxGTltuTi8kNXklIzlUP2tqdTdVSCRMITc6e0UrPmJjKXVebVpMKVdxXlIueV1meWBdcD0mU29LIlkjMGVYI3xsNHFeX1o0ISxAaz5NZE4sWTBTUTVbVyEpdkp8Ujk4fHw3PG90ZX1dSThmI2Z7ZEJjcn47cFlMWUQvR3VKUGVmYmgzLCNAZ00lUXBQX3B0X2RzQSN7JjRncW98''@;'; put 'put ''bSFAXnIsS35dQmorMWosZmJ2OzpOIixmXT9bLH1QVGNbTV1KSGkjVE8lN0lsY2c2ZHhKPXouKmZsbjQ/bWQzTV1lcGk0LipXYFpQJENsY25UZSV+UFJEXUZvXVdNSXsuI1dkTSh2cTkifEN0byE9P305Yi9qQl8xeEU9KzFLTWFhXz0rMT0ocmhZdmU9ZUJOS1EueVRuRXx2bUduayolJDxbVWdq''@;'; put 'put ''QHV5YTExQ3xjS0F7bG9wUUAuVVloJkBYMHc6OFY3aCFZcH45cUA+NiRxKzg9KHddImw+UT56KjNtUVY0KkNjZjJjVDRHRHl9TzsjNG5AaXVEd05ZWmBLS1lhRy9TSkN9U0puYCJta0syMT8ra01pRiwzN2c8MEVRRSxHTFRIU3BBXnVvY2ZTJGltYDhCOiNGOzdBd2JFIWUrPUpNVFJtT2NWaGJq''@;'; put 'put ''V1U0JEssWGteI1YlYU9GW2dNZFZoUUpxYCpDal48bjJGRWhRSnFgRDE7YCouPHA1YEU8RDZiPXt4XyNYTjdxZWlULzN6Z1NBezl0NiFORWRMY1Iwb3chdHojVUJ5WVs1bUlPInoxVmp1PEc+dkBLSzZvYCtQb057THQzfmB9RilibGBLL2lCLFtEMWJqPlZ6NSYzNWoscUlnUnp0NEJfZChKI3g5''@;'; put 'put ''QWgxRztWQjU3R3NUIjtmS0J6cz5VWTcuKXZNMDUkW0x4SCw4QC9+cn10bkZZZzlLIlU7OVk2PlBjLEImOzpRXjR0QHdfWGclJXZvei9+OEtRLktwTWs0ej59WTZtZj4wZ2ZJam9JbCQlXT0lTk9SIXdvbHZQPUUuRXZJYFdTS2VUKSNqcixed1FrTV9DIlB5LFhxdk03fFBvZWM7bS9mVWA0V0RF''@;'; put 'put ''I3JlXS48YCtzbW1rM0RmMUJjL2RQM3VVd0Rmc3VtKnFpJVA0cFBbMzpQT1NEQSlALj9OJj9IL0lhbHV6IV9iQXtwR0koVyZVSlAuYy5pbW9oflkkb3VXd2xmRENQOzxAYEM9dFQsMmJzQTR9LztqfWA7LElPQDl0fEhuX3l2aihVYUdYbkx4ak5uKHJrdVh9cj45UEkwRTl2TCV0NkFVO0pzJnRK''@;'; put 'put ''XkVFeXdKJF9uZDRVW1ttdSJKOk5JKDs7c307S3lST2JPTCJXNT1eXnxRaXllJWNXOktyJF9CTjUuQCRWaVhuclI1d1JYKj1DT2c5Z2VWPDdNXVk/OWhdNjlIMUAsTG05KzxxSCw3YWhCaWArVnlVIVouJkt9NCVrJD9xIz1uOXIqOU9AVktxb097KXkxTk1FRzpCaXgpUmNbdUw2VWExQGFdWDFI''@;'; put 'put ''VXY1Q3diRU1jL0NJSz5kXlVURm5VST8uUHckaV4sNGNGXlU8Oi8keixCJilyJDsuWWdWYD5+bzgsKzxQK25ka35gMUZ9e2FORDptNm98VDYyVHMuXV8pJXMhVWMrZmZHdFRaLCpYRDlwfVgzW15CbkdLYllJUkZXWDVEP2NJQ1N6WS92aSxEZ1ZbZWE0JVVOYzFEbkJxTy5vYTRTUjx1I3F0RDZV''@;'; put 'put ''fkF6RyJAUTIweWEjczxgM2F4dHM4VFV5JGdQK0lgVTgxZk4+ZktydWtQTXNJdHxtLkRxVmFmN3FTKXFgMiliMS5peDFlTFBNO1dgcil8WyN0YCk7cXRVZTpAZ1thUjNubzRqVXtCWWlaSUIpeykmSzJZckUmYE9OO0Z3MERmI0JoIS9PdUN3N155LDlae2xCTXFAYCJ3e0d1V1F3bWQhMGJYNHVJ''@;'; put 'put ''TCMxZWM8PHd3djIlLCF+SHAjO1hmVypocGJ0L3wsNjZ8LEs0UlpnaUdvTyJDKnl6LHd6Mmhhc2dQeX4rOHU/TjlFTV0uJGVwaXkkVDN5VSV3V286citYTTNocndAITYkT2hwMGljVDdvdnsjRVRad0ljfjl9SFtvTkFFa3N5WF9+ODdiaztfNn08bHAie2c/Lz5XeVJecFl+RkIzam9JMFd4cWFn''@;'; put 'put ''alldRkQ5a29qNSp8YHlZYTdMQXJbcjF2ZFkhYE5NZEcxWS5xWltqVlYjSzxVRmJwPHA4WWVeJTc7cHVpXyw+S1toWH5NciMzdG96T1E7MjVaZjN5d11tRTplOUZiKCg0NExmI11kSURpSUtPXlZTL1FGXlUoVjtwPlNufXFfbXVLSGVCSkwvNEQ2YX5lUD10IzU9VjQ2UjUrUHFDbkk0NUl0bmRC''@;'; put 'put ''Z2RePV9VOEc4QzhMQEsoJURSRCYyMF9iKFdaYj5lM0dPI0gyKXk0KyFXWChzMFhlQmBIeURyI0xYO3AhOGxISz5ofCtPUUlPUzR1cGhqRGk8eiJgUU9Wb1VIfEpCeEdidzVIRFdGSEdtZi8jTndIdnd9Xko3dSNaKEpGZTNZQT9bZWp6RDc4LDV3YERQciN5YlttRXw7OVJ6Wzs4Rj5aamdKeEBX''@;'; put 'put ''SDwwWGAjYlg3KlhBa19FdEdPLExpR29PU3tJaDN1NXh5QTAzTUVodjlJQW08cHc8czFoVjJ2UFNCXipxajhjRGkxKUdJbWVaPjhfdVVUNX1jUWtnT01MdmswR05yK205YlhYSFJjcXRKSzhme0MzdWR4aSI5clFBfFdiRUF6RDMrW2tLSCF8REFwSjVYS0BoeWlNen1vektndzVYOilzRXUvS3pE''@;'; put 'put ''M2FGUVk6TDkocloiSCwmR3pHMUBqN1FnKWsoaSx7OyNgeH17aSFldCguaUhMdFZqMXNGPSNCKFNSPENIOERlIlZ+XSpFNWxudHdrfEA4a098O0g1Onx9dEtIPTBmZF58NXQ1OH4weXdAO1M1MVdqVjdnWTRpJl10aXxvOSM1Jmp7T044Q0B2N0paPUhPelI5Vkl9MDNNaUw/V193IX1hTloiJlFB''@;'; put 'put ''ZjZ2QF1mVjV2b0piVzs1N0RmbUY5MWI4UTV1Ujc4aUc+TWZYc1NidyRNVy9NO3BrYCJAdDx2TzN3PD5VanFqZDIscVBjL2VYO3lnPDg8JkhmeX1LP0peRkFjdTtUTzYwNEgrMThwVi5UNTp6RU92cTB3OHYpR3RQazVVT2FnS0tAUy9bTEszYCFYMTBaZCtxdEZYZWIqPDpgPmtIPk1eKD49Mypk''@;'; put 'put ''cC4zX2hhT3dIW3U6OGV3XTNBaUpPMzlWOE47Zlk5JHxAaUdZUmVNVGd1NElPKGtyZX1lLzgyMT40RTRnaS4oemVJYDFDTFZePT1STXNXQil7SVRPX013YG9rTnB4VHVNc2dWWyNDYjcrWWkiYTZaSCFJbCFfOEN9ISY6KHApWm01I3V5L0JIL0I/SVVNUkB3dVBOTWk5OGl6KFs6WlJEYGNwYzVo''@;'; put 'put ''MGU1aHx0T29TRCxGNF94PkRYXUNmISRJTjYkOG85Ikg2X1BfI0c+Q29xUlh5QyZfZ0A7YkRYMHNyKXA1WmxhQzltJWNnc0Q+OVg1V25HW05vSXYpcUxqWl47Q3ZaP0ZXcXUoZGVTaXRMbG5xMz5ydDo3RUs4a2BxMTI1M2JrfkZwVilRbkM/e3Y0OHx4W01lVlV3M0ZaPWNUX2tvby9LYSJyNGQ3''@;'; put 'put ''PkIiSG5mem00NHlZeXxQPVBkeldMK18oI1RWSllGUzZYWitvQz9gfV9IO2gjMVB7QEZ9WGMrZ2NeVnZfOjV2KSM9bVhPVmV9JnVCL3YkPUguZj5ZVWVeUDBUY3VUQnx9UktlYGkkT3pfd2g0d1YsS05VVkIvVz42KlBNOVdVS1k2XkheO2Z1Z3F6JTdzfEx7UHckUS9UVUkwOSVMJmV0VU9LSkZQ''@;'; put 'put ''RHhbSyJReH1KaitaIih3YG9+cyZWdlchSTxWeTMxSytwenU2cjFpV08wI3dVP0BGcEdhcD1lNXZuQGBpN3xwdW9GRWFHbUlnZm8/TFUpTT9RWFhETGlCRSUsTjFSUSgwL0ZXVkk4alNhY1t0IyxjYm9vRFZ4Z2J+emhQSngmcypzWFBXNn55fnMkP3xzfHc6MnNuYCZ8ITtmTTRffjx8dCMpKTlv''@;'; put 'put ''W15geiV0NlFjW0hbX1h5cllVVmpNQH5FU210VHhIPyI9MSQ4MHZAZSQxOHl5ZzpBViMxfF8jeil3byU4UihgbmtqK1tCNHtZOTosem52UX04aUBMVl10UTZxeVY1YUhzNGM+P2BKRUVoLzhXNmJTPzlsREQ3RTA5ZWIoQkY5Xi5NL04xWltRdXRfSHxQMXRVSFA1Yzs0WW0jRy58UEF1e0FLZDNm''@;'; put 'put ''VVZIfSJbcXphQzNFR2wjLF5NPCMxdGx6KFgzWilhRmFHIWkoYGJqZmI5Mj4rO1EsN11nVjR4e3JQa3k0U0w1SkxPUnFycGZJKnxjQ3JoJUh7JlZ4JShzRSh8V18ySU8qeCgkRWwiTlB2ZDNrTHBjQkpqVU0kTUNaInFOaSEvUlBBQkFSRFB5QD5CZyl7UzMiNUxlUjFIJHwrYDRMZTVjNzlLcGdJ''@;'; put 'put ''WWsrYUNtZ0NDV0pdeTlNenRJX1NRPz9qZnxgPyZhQ2hmJkBWSj9ydTVdbkdLOysmUUR6OS9MUipINS8/akptZE1daHAqRGZ5dU9QQUJ4dWFZMGN6RF1oRE53dTF0TUh5d1ZYVXpZT1tBIVkmYSMoYkRdaHhCOUJPQlVOaE49aG91cUlxIlBHeyEyS3kmaCNxIT9QaXhxOXdTPyp0I3BSUlBHbEdd''@;'; put 'put ''Z1Y3fFg2VDYkRnp6fV1JZ19eNilnVTU4fWI9aTQiKngialVXV2pSNjFbckw3ZUR2bnNoPGlLX3sidElqbTRqMGRPbCVreUo/NVNyZls7OFpeMD56VnoqSyRpLyFJWk1aMWssdnhaTVpLSCwpKkRMNCh8Qns7LFZVclRfMzVoMUhfOC9PI11RRWVzNls+citVPjliL24+Rig2dX1qbFRFSnp3WEtH''@;'; put 'put ''TU44Zl8wdmpwSUhdclZ8OWtVVGVlcldhcCEpTkRifFs8Z1ZsQldCNmY9R1o/NlUhNVRjLmxTNVZmWStdL3lyUylZOTNfSVJTN3JEIn0iWExqMmFaIVUoYytSLy5YaHQyLltXPmI+NDR2cSI3aDo7Q2JUWndEWC9WNnZ2V35XdSZ9fEU+X0xYOX1oUyhrcy8vLmgjTDwsTEVMaXp1Jj9NY2JUandY''@;'; put 'put ''M21GUn4uc0ZLdnldUEQkOCF4P180PCEvMjkheCZMMzk5RWhteTkheFtfOXRpJUdfMjp6SGZpPGJdeVF5YSJranNtMi5RYlZMclNRRmQkVDE9OzNrdilyU1g/aGxqNzZkQlFKPXx4PSpyU1g/aGw8dyIkNjRjdCNTN2pUW35YNC5GKTouYmUmMDhdOWo3TExlcilicVI/IWI3WHhYemcxaEJLRyxd''@;'; put 'put ''IUAmS2VBazBHe25TTzAkZWNzVCs+T1I/QE5pZ3NZaipZXlZBUi9QXndWMmpaT11rViJbai5uJVhpYkVLRjlYbT4xezZrVCFaZktwJEUoO296XztVQFp1cipNfkF+KDlGekBAQihwSlglO0QpQH0qRlYiSyQsZSUwNGppM11nR0F9dWhYOlFDWFcuUHsmX0lrMiwiTTRjYiRvUUhvO25OJSFYI14l''@;'; put 'put ''VV1PRmt7TlU9WGFkT3IrI04mJDQ8VSRrVVMxNGI6MXYsfE5MYWlpWzQ2OyJYRiVpKFBVRVlbSnl8eHR7R3xZJE9SdUBEaiU0NXNLZV5uYUhPQlR2IyJAYStYMkQ2M29bXnxqVnF1a3paUnFVWG9KZDxJTXQ0TXt1R3owciJdIiY+NDpLNG4pQzpoN2EyYmtbTjFZPmtOYjA/Y3UmLnhXUW1WM2ZP''@;'; put 'put ''VzJdMXolYVhfc1M9R1lEfFIkUC9baCE2aW9FLylZaXdjPj16MV18SituWD18Y0VieTE8Njo0a0FTekEpal5PbmRtRDBSISQuUzc8LEMvNT0wW1lkZTtvdGJOeUxVZXQ1ZjpIVEY9d08qPUMwRz17R3B5T0MzIkdbMU5LZkFeMk9KczQvMWZUeSF5NDwveVt3YjswLzdALHRzKDo9YH5GVVlsKU9h''@;'; put 'put ''MV9+ezJTOVdxMWBXWEwrRVR4Kmd+Qj42X0EofVRsKVdSKHRUeHcxaHB5X0p3RW9xWippM2taQ3V0XyY7Wlk/RHNwajQ5WWN8I0NvTFhpcEJQTzAxNTQubj04NDc5ZkRYM3R8PnVuQEoqME1jfV0hUWFDQl1pWj1pbDF5IyRNZ1lRJH1JY11aP20jX293OD1bWmROSnhpdHVFS243TSpYL0NySnwy''@;'; put 'put ''K1AoamgrVXJEbE5iWDwhc3VwdmJQXjs7OFU4M0JeekNmIVhIOiRLPT0+bE07InddQ0lJYWB7WGJIV2lZRX1EfGVpUThFezVqS0lKJXpbU09dIzxsMWE3fUg8ZkxgZVMuTGRsbVpOUkYzdjczaVV2WDc4TCh0cnNFRXd1b057QzN1JkNeaVZqa0E7aFR2b29FWWNEZkcmdTJueVFeSHJ2WDc4TGtg''@;'; put 'put ''YUxDK0A+I2Z7QzN1K0N5eiMrOnRXT3JCQkdFKzg6Oi5AU156cm9wc29tVjhpR0RORERrdGd8NXY1SlltXXhkMGVBaX5hWEQqRWZFekF3LkwlL3RjIiJ7RnNsJTh+WHwmJWVPKSZUIX56TEdHPzl1SDkiM0RKRkk4T3tPWzlNdHZRMzVCeztdeCpjW3RtLiMrcVI9UkBpbCMvbTN7U2NeRSs2SzdI''@;'; put 'put ''d1Ixbm9uZnFvRU0+aXtAZjBgXjJlQ1tWbDcjX050T1IxcDosSzpbMTNvNDh9WTo4Q2tnckdQOTVbSDpxOEd3YkVzMDU5blsvNU1aT3JhWHR8cldTezh7b1o9TWU2VVpXJDx5blZNRCF6cT5oSl1eZ3NIJiFCJD9HKGA0UlY8Z2B0aWt1X0pfXldufHk1WGR8TG9gcTJvRyh+Qig2Wmd6PlFpNCR3''@;'; put 'put ''bHFFK1BTdltxZ2lgZCJdWTNEc35eW1cqa2ZvV3pFV3kzIjskcGVhTD9xMjRdejo4I109Wjh8IV8zKHxoKn12Un1sKz05fjJTUEZ3WHk1ZGNaMThTQHNJIyhIREQ2KV12dXA8TTh3bmNRY1d7eiVAb21OWVlTYz5SVkcqdng7SXspO0I1SFBINiVCI2xBQ3VHU2F8eGNRJk1tR2wwJTNRX21CTVVX''@;'; put 'put ''L1FTK1tuKGBXKEFkdUtQLEl1eVkmJEVmdjI6TnBOZyZSYSV2emdFYENARH0oPVBXaTZSby96bFpIJnNUXXdQY1NKQCpnZ2UrV0pAP2d1NT9AVT1hVWZ7a2U+MyIzVlkjVipdRE94XjkwOywlPT9vJEVbKUxGUjtZS3VlMSEjQ31lfWgmWy5bSGRKcDVfS3V7VlVWQ15ybnk2UVBiaiNTV1Qpc3VS''@;'; put 'put ''N3wlZTlbNSY3bjxEWDxeMzZaeSlRPWM0VjR0IWFaWzZCWStWVWdbdSIqW1BoNG1tZTB3dy9RPkRrKGYyMytxQ0BhSD8iaX14dEVxbjApNio+SiQ5T3gmVFN1KlRWQjhbcU47KD5KQDRyQ18+Wk50TXNDfUVEQmh3MF5HaHF3Vmhyc2kxSFFlOU9McXV3IlgxZUxpV3ttWDhIOWBwKXJadXx0SlFP''@;'; put 'put ''YmVsci8rdSRObyQqd2xKXjhBe1hlRn4sbG05MyYrLHEzJVBTYTRsbDZoRUZmVTUlYVRJRV11fmghTjx+Zn5dans9QklIMz9EY2MqdV81e1QhKylzQ0IqOl5OPUxwen1mOExQVzduVGtzKEowUWU0R1JiSDJ9IyJ9ZVB8SFd3Qj9bUUVsI0lNL1lUa0toUUolPzI1Oyl3e1VdWDtYX3lLUWUya1I8''@;'; put 'put ''cHtZNDQ1RS88e1IrZEZTT0x3dyJMOypVbjlfMWA9cl8lLmIpcV9ta19wJmB0LD0uTHVxVXU0M290d1pfaTRFWGlGVU5EYShFe2B2NF55cW8+bVE3dVh6T3dlVDhRI21RRENsfSs8JDlXT0hNSyRFWSJGIWVtUFV3KkJRREVYd2xCR25hVzZiRFNEV05AUHYmJl5AeT4rVmZHTWwlW0RUNmFDOSxk''@;'; put 'put ''NEwzKi4iQGdSWmFATjk8engyZk9GX111MCgiQ31eR2dwRnhSOHZqW2klMyt0bW9INzlgb2grMWQ0bz8+YEArLkVrOlt2dzRoIWt8Mio4aTFOUTxAU242JlsrJHhwdWNvdUhzZW0+YChGUysvJF5DNiRhcyh0cFBmWzUvO2lwJGI4InN9fVt0JGwldXd7czQ+bn1vfmxJQlZDWilpMzZqUyN1SFZD''@;'; put 'put ''PD9GQzxEc09ucyVpUiVrMFRmVCVkYzpjZy9jNz59JE95R3FHTzpeSVhfWzFDRFkjZHZjc2pmL0dRPHFoKENOdUBdNzk5OnFjZGtgSlByNVVLNkw4U2d5Qy9VbjlMMDsyZVA2aTZzVH1aL34waUIlN3tCQi9TMzZbO2d8LyRXP1QhJjRkVlBJT0tfQVhDfm46LE8qbzIwcHBBKWU7Wjwha1lWfjMo''@;'; put 'put ''ZCshaGMlX3ozTiN5QH47eENzfS5laHBtJVVTOzkiZkx7IlBrPHp1UlRyJiRlISRBV0QqJSQjazBFXU84UTMqOEMmRCZEJkQmREx3ZkA/Jj0vJSYiQzlReD9IbElsPFpEZDlhQl1uT3NOMzwhazBFNWlIdV58XTIvMGU7X2YhcSIrY1Z8Ryo0fDg3bkxmcD1Xa1k7QW1FJCpIWnBIakUkO1ZRR3R4''@;'; put 'put ''fV0odHFAKHRRdWpYWWJARiYyRit6KTphKyMvek8keS41JjlPSFcvLnpDRi4pYThbNmVgIStdKEt4bG00V2FkTVYoWldhPT5iX3I4b1s4LntzNEByP11GZlhjOm1ISEYsVFV9UUA8ODthbTVbWDpbPCx0bmBtOSF8RWpuOEBCNnFrMGIoPTkhNCN1JHVTOCIoYmhtc1QhYj5KZyVBNWgidTdzIWh9''@;'; put 'put ''XUJyOWUzXSwvUjZyVWo1alJJKEtNelRIWGRuW1hVJW80TDN7I2gvakJpLiklNmF2MExifnFsNUNUbSUlJSx4JT1mbVhoK1lDY3NrOW9zO15xXmVBZHlDRHtqMkk0dC5ZJWIvei5zcmxYN2s5YHlLS0ZXPGYjJjttc31mai8uM258NmhaVVNhIXxZblpVaDk1I0p4P31LcyNgQmdeOl1seyJicC5Z''@;'; put 'put ''NzRSYSMkNWh1VypEKypfIktFVXkvRmEpVDx1cGh4QF5qZ3RFd0h2JENdbiRDXX5nRXpRfEkrQUJ0PH1APV5SK1FTeCspYEtHWG46WWtLNGhiW29bcX5gVjx9YEhdU3Iybm9VIVRTPmowU0t4Njx1cDgqbHBIcHc0V3U/UmVaVTEpJVdve2FwaTNoRElIMEdJfWZFNX4kTy5ncHY/SzIkcG5Vekd2''@;'; put 'put ''NlIsPi5bUkZRUkRuR1hQM2BybTsmMkxjWTNifEglUHVgYDh2Y3o2clVdPGBLfnIwRyhdfSlLVDlldndlNFR4XyhlfGZ5WiFXLyxUdGh4U0J4UWkieDRxU3M9XjhDMkRzVkRrNUN1bW5kNyE7QHZ7YHtOXzExJVtBWl1tfmJVeTVkVnloc19JbUxpTUwzem1tOTx4PCY6PV97Ty91ZlA9M0h2QGRO''@;'; put 'put ''WEpiLCN+KHJXZ0pvUDlTckF5dC59bmEpXyNNWyV0fiRaRDZrJllsaG5rVjtmMTV3QXJYZCR0UnxqO0cxPVlFcE4zeVU0VC5ORktNZWVZRWlYd1lzZSYlL0RIPWlDM2ZAUmIqJWUsXT8qXnp7KVNidFpyfVQ0L1hVZncsKmJVRDMlXWFVUnlwRUtjXXJYJVBlOTtJJndtL0R0dj85UzRwKXR0fmIl''@;'; put 'put ''Mz1ndS5WUyZSVSNhODttV18majs9RlBwczN4dkBsS2xTN09kZj9tSDglUCshPXV5Mmc5JCZOTDsodz9lJV5hMWUiWGpVYy9rQmhfPlpSK3oqZiNnOVA4KzFhdiU3M29kUmIiYlIycjx7SHlMVElLXUBgXWJbNHNIbjJDeHJBbklLSSE7OUxPeXNPe3xCbDojfSV0dV5APWs6e3t7USt8Ml1tazgl''@;'; put 'put ''QTQ6XllTRTtfW0k1alZjdX5BOXdZIyZ5Oi4hVWJKZzg5UWU9RFp5KXExbyVRdD0xInRSLmR4W1k2V0cofm12Znh3RmdaZmtocWppLzpbRXhibEBRSnhJYVdPI1FtQC8wWiNyZysvZUR0LnVzI1olfWYvZTEhfCs1fX1lY2UwSjQvaSp9ZWNVR28pcnNDTlY/KX1rSUV1TUl4WypXejF8fWRmJGFQ''@;'; put 'put ''YnJgNGhiLGVEKTclfWtJJj85dTw6OH1rSUt+ZWMmKHhbSHczaGJsZEgsYDVXL1FxVlp3TntzaSRhP2J7KEdyU04lWmd6MGcrLyZ8cl9rYVE5MiJxT2hsbzdONFpNbSMudylCNWUwQHsoUHoqV0ZjLExaKUNPXXlFNilCRmEzLEB0b0wkfCs1PExocyNaTGFFMFhZYjEmfCpNKWdGY3pqbDBYWTIw''@;'; put 'put ''Z0Y6ZTtGTTR0JTouNFslTSMsTE0iQmgjVUU7Kz1QP0BBWCldbHs8aHxEK1dxSUF9cFFBQ1koSTA0Qmx8ZVI+QDl1SFsmfThJbWBlWEJANn04SVk1WVgqT0F5fXVpSERnbDE/XmVPUldRdlI8WFIqT043Y0V+fWYvdVdXV1F2a3w5NC80KX0wSXFgZVhwUSFHTUovLC5RJWc2TFp8T1JBe2VYMylu''@;'; put 'put ''fE9SLkA5dVFDQj83KV8wOUdCOz99MElnYGVYMyltfE9SYGBlWDBgOH0wSTk/OXV3YWRzYUU4fDk0ZDYjfE9STiplRFdsbXNieH19Zi9XMTl8flE/KmVEOHpNUHVESzAkYTo2bXx+UTxAOXVzR0RPK1c2SXBHbGFCdTY+RUcrV2RuNUU8aXBneyleVzc8KiQyYW54K29FWWBjWldSQ0BNIVs4eFZS''@;'; put 'put ''NERHY05pWWpHXTh4JFFnTVhXenUqTGdaWWxDbVBHe29NNGEpTFJHY10obCN3Omc0M1I9YDtZOnlzfGxNSEQkfFpRO2loc0h4RGkodEMwcXo+QE0lRUV1c0h4MmdGY1QlZFBDMGd4OHU3fFpRbFhvc0h4bXFTMXZARE4xKm1zMGE7ZkBuUzFmJFskNVtse11QO0l4azdfPk0mfHVSIUA5dTU3M0Rq''@;'; put 'put ''VWJ4c1lWJiYrWCh2U3IsK1cmSUF9cFE+QHcjVFdTdmdWbjQyenxgQ2pfa1NPaEVDflZsSDhwUT5AZUJEe3RLUUN1cyxzamYzc2lFU3B7UnlZP3JYRUEsKX1VSWo1eHVjbnolfUl3WGs0PHdlXnNpQzZ7dnZHYmBJMFRIXldiZWBbeCZqSH5XN2UsRHJ3e19ZaDtEUSU0ZVc2aDtFY11uJGY5ancl''@;'; put 'put ''L0olW31DSilHckJRd1g0W2NJa2BabUZyeFEjUUN7MmJWaFQ1VFdJdnBxRDY1XWkmeUZMe0hoPDJnWEIuTShaUUZIZUZvTzI7PXEwM35iR2RlMWtkXUUhInhaI2h5LlZsU0UkS3czJF9DP0QpWXJ8UTloZig4c3hRIjYoO2ZbbXc4MkNJUlo6KC4ubWhTVUlFcyZDVlg8MXBHfk1zRG8le2NFYFd0''@;'; put 'put ''cF5HS1pzMyZDMC43cCwjLixIZW90OF49eHpAQW48cGAqKE8sXnNAM0NRPjtDcHxIdV8qajo7QyJUKH1TWzxdSkFCM3RUQ19aM2xpRFE1LF1TQUYrPkJgZHQ6VkRAOkspa1FLQVV0WjNtZ1UzNVU5eE0lN1pHPmRebzdgUSQ1U1BVI1tvNFQ4dGlkZTcmNys5RSw3PW1iVDtKN3NncXk3WSZoSz13''@;'; put 'put ''TExZcTE+Xz52dn5DYz0/MiRfbnQ4SjllUG5QbzRBeUMvaFI9OWgwSnVxPUNHUnYuOXdxUSE9Rnc6L2Y6QVhtcSZvfWdvW0JGNXllTCRVWDosKUxAPHY+LiZkPXcqTzx4VFV1cTVhKEM5ZSh1eHZPZCN0WXBVOlBZOnRmc0IrZnRpZUFHZDghdE9zZVVtYjxEclU/PXdXTTtgVCNbcW1Cd3xTTDVV''@;'; put 'put ''bW93Xj9hV1YkV29KYjB4dkFDLl0/aT9eZ2YvLCN9LGZ7YG8iKyV0S1FiI2NUb3srT21hNGl8VSR6JiNOIlB+a1FQT19sWUdtWiZ3NHUzYDxnRFloeiwsJW93OGQ3SW1BMGtwRDxCJHBUaz85dCE3Ynp4VzhvdXxQbk4lJihQKD54cjA6b1g8WypZQnNDVXB6MjdOSTRuW0FBKDMyM3FiZ3R2dnpA''@;'; put 'put ''Sz5sbz5dfD9tMSNlck8rO3gwQ0FTWnhGWzJVUnBkRSloOj1zfUNyZCQiL1FiY1VoYzgwc3RdflJ8SzNkQU0mblI0aHFzPzNDL1Q8Ml57SWMxZj80RF1YYF5YfXFkRmF7Ok5YPntZZnVVMFMwWWB5PE81Zm5yZz54RU4lbVFlbnBnPSFKSFk4XmZiXkdVdHwqI3U3W3VsYWhmKFpGYkZYail3WDFL''@;'; put 'put ''dV94KmVtVFBTUlZtT2hyVDVWYjlmIk8iX056MyRCQFY9ekViRiEhKV9iQiZwZFZ0QngkSk9TSFNKXW9RSVU2e183cXJzIWVSRDhIQXU6SU1jJlsxWE04ZCY7VzI1KjYzcyFXKENLZkBJdnxeYGtYVF10eWh0YmxHUEFVbUxfT3EjcFRpaWJGO3pVXyUjS0Z5TE8ldSNwVHcjIkRiPXRdbSQoclAs''@;'; put 'put ''PCU0SzYzIi5wREMzImdJPzQkKX1wREVoY0Y/dmdKTWNrR1VYaVlrPkJfWHslZEw8dH0vLCgpaXVkQik6dCtKL0s7UCVmV0ssdEBlWllXTThXMG5vO3JmKlFfSm9YVGkwaztoOlZnTUw2M3EkLH5BM0lUYnxabz5PeUBec2pReUoqR0pFOEpLLDZYWzZqOVFwPzxAOEYsaWR7WFt1M2h5Il4qS0Jh''@;'; put 'put ''NWJUT2Q7e2g6ej5wSEcjbEdZLF5WRnhSM2NwWSk1anxLJHFEWVVock97NztbcmU9KSo/ank7Z1VWMTs0aH1mND11Ln1mVF8rVldmZlQ/XnlATiV4VTpXKT8yNTB9R05aPSh2R3FdPHRWRXlFOnpAJDRZbzxXUVJ6eVFBfnN7bXJzNWBaJWRdM0NgN1Jtfnt5VT09Vk5FMWxpSU5SWiJMJl0uNGou''@;'; put 'put ''dkhCJUsrQltHSzl4TnlCLiwrRlBwPzE8QkAyXV5VaGQhbGxAQ3l+akVHJGg0X1dlbi43YGZlLHRkVEU+dF4hdT1BTkFwUm4sXypoOkIkSlRTXzsjSlRDX3U+SzxmYmB9NHYpcjJ2Yj12MmlJYVViMyhCcyU4Qz1dTzMyb2hfUikqb3w+Si4hWyR4Vy9PN2dESkQ1bV90SEIkR2M2YmN4MDAka1JF''@;'; put 'put ''P0tlW15Ib2xLT1NQfCFCISRfdT1AI1VtMyRRU3wkU3UvXSV5W0p7b1teNkFgXWI/cjx9e0BvQDEyW34mYCNnV0xoQTVUbXJ3WTNiZTxVeG1rZkAkRjFGOz17Tml7QylSWygjI2I5ezowLl8oazt0QHF5amdzWFN8Sz5nOHw6XVJyYVYieU9GbDltUmZscyJTcyRYe3IvfFUzZnhySi5XTXFOTWc8''@;'; put 'put ''fnJ9KD0zRFVPSkF9dSQvdDxpRFtna0ZAZk0pSzw5NiFGOzBRQlAvb11yW3Fmc0RMXilEM2hxVC9pSzN4U29xNTBfPCxoLkt1cW9Ea3ldWXMiI0tSNXFHcV4zKm8iWFM0bjB6YEhuKEU5OENHVkBbMWRpcHUye14pVW90a3hFSU1MMlpDJkVaKzU9SH0pfEhMYSVdXn17Z35OYWxSKjhkaS8pSjVY''@;'; put 'put ''YUpLKD1la1A7WXZPRlVsaUN8bWVpLyluVVEsdi9AVyJyUF8oI0tWeXFVKXRZbWlPMmIqNSFSOks9aCRLPDBgaUJqTj8jM0toTG4pRlFwcyhdMHlmQnd7JnIzNkNdSnkuczBWT3MjM3B6Qy55alglVXssMCk3Mkx1Q2NFSHQlblVFRUV7Q0tqPS5xMFQ0fkNLMWFhXlEvXVtJMytTQ1ZYMDx6bGY0''@;'; put 'put ''Mjs4dGRgKyp+Pm1yMTI0fTFdLlVVej8sMmI3SnxVXUA1QjUjfT9rQEJ3KkcqenFOLlIvISt6cjZzTmBhPzFxPjY3XnkyfG06OzZVMVhvXS9xZiElY2l6U2IyZDdJI25mRnFbK0IhcCZmJT5nblFFRzwiVk9qODh9MWxfbD9SMEk/fXJPaHV2ZzwoOS5wLFE5OHtacXdDLCk0cVBbUC9jaGBqTzhU''@;'; put 'put ''L3xvR2hLUjUjNERIOW5XcD0odnF8P1JOUzEwb3JZNVBvPCJrbWFJIntLaHthOitMa05gISUuOz59NlVmMk5icHVGUjtvc2d3K2JrflRHUz1MTDhtUnAsfHA5bzNpUiFYYGQheklhRVd2NSlhaWxKb2lhYD9tPzBObX5RVnxLS3R2VisoWDMpX199U2FFQ1Rfbm56byxjaWttO0dJcU1DWndGL1ht''@;'; put 'put ''NSt1WjdGKEd5aix0b1YsaTZFdF90U1BrTlBOJHxefT8mb3VbL3wpbWAqYS9idmdTPUxlcF58WV4scWJpME5+Tm1Mc2cmKmBgT1t4QmZ+ZD1PIWBdenlRYjoyc1U9MkEvZTFGNTxqbmEjZ1ZedjA2W0o8PExUTSNRQ3cweDozMCphcX48K1VbTTtEU29FS01Pd3haKTcwNklhVSZubHA9d2pXdj96''@;'; put 'put ''OFdLKVZlQkpvPUYoM2hzNUFHLmxBSEQ4QkhEWmFXK0VNNn5Ob10vIUoiP0NjbishfHhKW2orZ21HPWlrb10vWmZMfXk5W1g9VjwhTihLIipyQWQ+dy9LfCMvOyleKDF5XSRSdHJbcWM2RE9SQ1JaYldKejkucF5naG1WWVEzQk8oKU9IJSY5Z2hvSX5BMnNqdE9+d0BJYSYqaHcjQ3VWNCs3ezdL''@;'; put 'put ''W1Y/cnplS243VX4mSyY8e0E+LFpyYCIvODVvTmRpb3VKaEhtVSEvdnxANGx2fVh1LG1ER1huUyRWX31HLyspLnxTQi5vPE15dVtAcCIoRGVeJXxaeC5Ffi87YWhJPCpefHJsQyYqdVo3Wy8hRnk1XTApLGA8ej13WnAlP01AZzkwYihHcXtGeV92X3NXc0FnNUVwZXZtRigwbVBeKVpva0JVIkow''@;'; put 'put ''bl16L3tOWldHLHtPWzpFSXF2bFZ8N3p8fCVdI1ZtTFBtVT0wbTg9cz4wbXM9MG1beHpuLDBLPSRPT2Y+eklbM19hcD1adk9NOzRdb281LFgxPUNtLGE/SztuaEhqeng0ZnNRZzlmQTw5SztTKCZvNDQ5JH5TJWgxUXxvXnw0QyN2cCIlLCZac2pueSkwLH1wXj8id04/IjltXUNbXWw2IW8qN24+''@;'; put 'put ''Z1B5RiZeTmlTc3ZsSyJEX1A5R31HcyxON1VKWlplfX1SOEZ7eEFLMnY4cjE3VV44M0AueGVzIXxVdDtFZCsoZUdeYjh4ezk7WnB0ISF1Mk9ea2I4XmcsXnYqdklsJjp9TSl2bzd3V34wNUlGUmd2TVJeKC5Nd2pySF57V2RHYUliRH5fPSM/Pjl3WnB8dDZNXzxCJTg5KzhNK0spL35sckhnLHdC''@;'; put 'put ''bj5JTGBEZ1A5a2VfL3g6I3M4elc0ej5Cfi99b3A9KGp0V1gic1ZaPXtiPFoxMl9XM305Tz5VTmwwZH4pM2xzNnNsWl5FU2VhIzJealo8OVdWflYxKjh3bXpmJjI8WzxTOzgjUkppRkFeZD5BPEdMNkZNPUFoJCEqdjtAXilxYFM7SXpja2M7fUZsRWAxKEMhR1tbYXRGTHcrOFNUUyU9fk4kZywx''@;'; put 'put ''KTF7bXkzVk1nVCZrbVRqTSVVOj5WZStkekxfe307KyU8cXI/YWMpIyE1NXxge1grQnt9dnNtNldkX3R5OSVrUjFKUGNpXyhDIzFkaT9CW1VkMn1RMSt8M0UwWDhnfV4qT2FHXix3LDkuendGMmRqRlJGbVJBd2V9TkZ0b3g0YSg/K01jMWBfRCNbbSExXW9VeENea0lGeXwqR0tIOD1vTjU8Qkxi''@;'; put 'put ''QWVvdSQuNmoyMUFtc3BHc31HRlNhZUJ0PHIxb14qW3R+XylpRUI1Ij07N0BmV1s3MCk2V3B+L0M4Z0hyZTwjRWszdGQjOSkuRXhFazxbUzkvU25ecGd9e0t6XnVLYDZiRWtWM1NKSWY1ISxyb2R4cFAke0pmZnxqUnt8Z0NJW1s9dzJwbW00LywrJVZvSzxTMSU5RD18dDBbYV13LjQ5YS9IOE89''@;'; put 'put ''fCRNezp4TGx8b0BhZkIrVnM5ZktYbkRaZGs3YT4uPj9pfHc4JD9xcUpAZCZ3T080UyFKXWA0dmc/JCx3cH1ARCFCU3prRnc4e0w2Kj5hajw3XWM6aipSN21be2F0alFuZD9XVUxuT3tGLHtvSzRxfncoVG5hSUtjRlA1cVk+L292SEc0YFo2dmB9fjVwKS89bD5oeDx3LnNmXzBoTzs5O3EyOUMu''@;'; put 'put ''XUdRPDFFN1d+P3oiJkZAb3xBckwwSFsjVF0zS2VOUmNXcEZZTjQkVWg/a0BOfSwvcUE9dGpfM0tlTDM7PzFiRlAwLnMxQWpMRlgvNTZAZiRwL3skS01JLDJIM3FqMStGUnkxMGpJblM8MCNqSz5ATn4kSSNAdl40OyRfeGo/P0pKUkV8fTczOEBTIVAwX30yUjV9fVRiW08pOzoiM3Y8ImtVa0V4''@;'; put 'put ''azEwLGlDOjMpd0RMdTxXYkFTWGd0QGVQOFdMMnVnOzBQMWhZTGVfTWUmNG1aPGlmXX1ZO1VUZXFlM0ZsQ2teRX0lWGA+KHxyPnwlU3socEs5eGA0WGclKXhSRDArLnQzR3F8cnZWOzlYKFZgQUVleXplTFViekdGVDQjLGNwZTNiXndIbl13PVdxNG1TVUhWO10mPU1LYG0qU0MjKUxCLyw4blBR''@;'; put 'put ''bXFbbDQ5ckZsV2xfeERyLGBIKmA7QiRZV14odHg9KUJQPGxUcE9sTCFYdDpzbDh+ZWJpY2kkQnFgcXBAVEQzYD5GIW1yOFtNWEMsbFVadWlHL0tPWCZDN114cmt1Im9ZKihWcFFLTDJ+TjR+QEk3c09UUWU4T2xsUVRja2xMITBsSDhtZn5pN3xEL0dZXn4qcTtgcjg1dERXXnlJL1gwWmhLLyV2''@;'; put 'put ''W3F4P3JRUX5DMUo0QVVZVVR1JHxJMzo9czhuODpveWp5SC5zaTMlayExQjwmLDovYyxsMWVQVj1XZUlQfSw5cylgMjAiQCw4UkQqREdQI2AyXS5gLlcxdXRRb1I/bHVqPXMsSy9aQUYxTzo2O3NtJGxVez5pKEsrPzhddzJ7NmxZVmtHMDJsdjxBcCpwKlBucykpUH11L1FkOTUkWXAhbyRvT31I''@;'; put 'put ''ZWRrUm97SU1bISVUUmNwcG11K3F5PGdqVysobHJrb0p8Z3d4cDVVMFViaDQvSmlocWFwWFo5ZXlsXltPQH4vR3JHYys3KCpNJV9GUT5ibCpmV1hBN01zL3xaNVlHXjY1Szs9N2hyWih+YntTXiNBZnxMJVdaT2JoeHY8ejA9QFReYVVecUMuL1M1PipWZ2F3bVlmNi4ib30mYjZ1VE1bS080SyJL''@;'; put 'put ''fSZhSlNVWFFVMWdHb3M/ZTpdI1Uqc1h5Y31xfiFPeSo0e08zJkJeT1dqbi4vcSw5PXReUT9AIyFfeGJzcEJRKEVGcW42OHBEPjA9bExaVHVTKzAlfUVPPDJIaTI5MjtoeWxuWmNVXTgmejhRPjklR2FXK1Z2N1c7fGFJXURRbEtpM3x3b2BYLCx+alpaJlgjIV0ySC9SNVAzeipMIV1KIjJSXTFK''@;'; put 'put ''L3E1Rjd9ZXYreWs6MlklJFp2NkArOTsoeCYxYz9EdHZkQGVbfVNweTJ3JVUucTgsZjtFZn5xSC9GXXFBWFE4VFh2az16QlBwdTFUYjZxRVh8LDZ5fmlheG8rX158Pj18L0Y6K3Nkalh8VlduWzxTZC5vKDZ0eFgxWyklSmloT3xqX1RwYEJlNGEjK08xc21PRWkvOSomPmsqZWFgcmwhQ3Y2b1FQ''@;'; put 'put ''QS8mMnZwNSV8V1NsIyxrdmA2cl0sUmZKRVs4fDI2fUMoaC9QfTMiJElFeEl8RkUrR2FZVSxOMSxzM3gobDorcnUmJSNpZl9Eb2d2ZDNDJXwmITw9Qy9sZnxMVDRLMlF5dEl+YDpXRC8kZXtQX3xgJkl7WkhpfDl0Wik0e3xMQit6RlFeM29kbTRfS1V4T3VjZTg8Qy9zVSNacFN+MUM2ISNvPkA5''@;'; put 'put ''N0hVbldzc316TDhSLnUhUWVCe3NbQmo8bXxhV2c8dnR8eW5ibnx2R3lSe3YhQFtwQiImIVJVLzU2X0ZbfU5FPkZWUVcsZDxdfFojPy5DYiIzSUgkNjVDUH5KVCFeO05LUF4uY1s+bDwhXUt1SHB6fDtbKmVkdkBwPTQkUHV1eT1Ffm4oJmdUVCEkb2MsNn1QVUJaJms4Z0BdKyV2UUVDO2g9LiF+''@;'; put 'put ''NWooXzI/ajg1ZVphYyhUfT49W3B7cXxrJThIP1dgaXAxLkk9TyZ0MCV9VzM9T3EjRiNHXnVZUS9ucUQ3bll4Ok5XLEskLk81Jn1yeFE/KHdqV0c6VShOZFJjUC4sWWxSfiF4ck5uLFEpVVFpZCM9aSpLPDZTMT44cT8/b3s1d1E3NHN4dV9UVDpwUjluKWMyKFIwPz1VaV8iXVZsZnRVMjxYLEN0''@;'; put 'put ''Uy8sPWIkSSE9SnZKRklkO3V4LzddPD1XUldtQSovWGtbXm04RDgzcEtTNHMqSmY7OF58JGUxNG59NENYRkteRyhBYFVqdjRsJVgha1Ymb3E4Qk9gOjQyRUk5SEApblQ+TTt5RDx9R3R+cU5eOGlBPXlNOVFLXzo6dFY7SGF3YXl1V2YlP1ZsM094dSU0aUZvcXZmQz1HTm06fVFzTXhIfiVFb3hw''@;'; put 'put ''PShyOihEazwpPypld0QuRVZjLFJ9ZGtVKUJiR2sxOls1VlY9P2NoOWV1fnFTUDtSfEAiNDxndk4hZTZnfnE9JTheVmh5b11eSTtRcjx4O1dsNHQ9dmkzcDk8aVV9WEBCcjQjN1dKZzgzL1szTntrOn59WXh7SmBbUW51ez5vQjBSPmY5OEhXaXdIPFZ9XkEhfUdmdWxzaXVYWndGWDR9Tnp+T3sh''@;'; put 'put ''V2hpOENTRFlWKG4wNS48VCwpNEZ0JGtae2RoJGtRTHRObSVOZnMmQHJiNmMlSCV8cEpASWo2SF4uVTNyMTx0Z1ZFV0VgZ3M9KEN6Qk1NPWR1aFB5NjpVWCF2Tn1WUWNgZWtCYkxWUiF2XzJgMHo2Jls9RnE0YFspeSpCO2EuSTlLfiJkUHhpZytlRzVCUE9gY3QjJlphbzhyVC9oYEFJU3RGOy4h''@;'; put 'put ''RmckTUZnciNRL298azQ9TT9XTUhqWHNJRGEydVhkKkFxQCZ2a0NyeSxYR1g3aSw0Zmt4XlkzOEJucDReMjRaPTRlTEBUaXkkc0BJczhFYj95NDZ4JjRdWEFKWzQ0emNPJlo2ZEFJTjxyJVA6RTZPaWk3RHBhMSlMMU9DeE16Rk5dbHEleDhKeF5Nfnd4ekV7TEFhX35qNWF6IyldYi5BNUt5cGVB''@;'; put 'put ''cis6O0IjWyxQT0hfTy9mXUplM2REPDFQYys9LzlgdVMoJHpnZkRwd0peRDh9Q29UI2ldLm9iZSJJK2Z7JSwsSnJtXkNPbk47QDhgMU5TLzlveldBaClbSEV3amszIWpzYjlIekYyWzs9VShae01GWStnSyo5ZF8haEdGel4oTzU5d0whW0hGPWxidntGKWlVVzNPZUNzLyFKZipjfTgxKkgySm9R''@;'; put 'put ''JER0VkhPMzd+MXoxejFsIzM3UWcoTER4P3V0WSp5KEIoKHYpTVFNUU1RTVEuTWNHYkVUd1o2UyNlTXR3eHxzO1ZNWHgoPzZOZHc7cUtMOUg9bnZdW1d1WCRnUHtzIzspc1hmPDdhdmo+RHtOeEQ2Wz94TjVmMXpWTUNkaXl1X18+KSZXVkRmYGcpYWYlaTdxQyVoZ21OOFtkTzsocHRiOTVgKT5u''@;'; put 'put ''VFh4WTU5Om9ObmkiRERtNiVCeCpHJSw5SDosY3BudixGK0Q/VzNxJk1tb3loNFF8d2lmRjt4c3AlVkZaTV5lL2FhcCJbWD5bIUFmQn5tTjpqUjx8W2VlPileQDl9I3g2PkVGT3lOOjJmVXpDKTQvcWBQX2ZEVVMmekVKXkM4YVdOeXdfIyw0P3JgZzs5OiNgaUpEMmx1c19eaDlMWEhJPGxdaiw4''@;'; put 'put ''aVJvamJtW1dnYGEsXlloOSlpfV0kIms/UCYyXTVrfkU2UUc5VW9eb3RZYkY3dCNoLzlLQDYzOVc3IyZlTy8jMSsuNlE1OXpER0IocVI/NV0uRHMvIUp6eC5vLzQoMzA1dHNqeyQ/czRLRnZ1fXFuOWN6a0IyOFNnPl1dTEZ4RntdfWtUTXFYIlN3RnV1YywrdjxDNUM7VHZbNHdzfn5gbF9YdSQx''@;'; put 'put ''a3x0IVdieDlCPlA1WWdZbU9qSElHKUEpd1psM1dDTiYxQ2lMJltGNllqTD9DRmd6NDpsfF8+cmBTdVBHW3VFJHU/QCxnMHQ2LitPZlp9THhkI1dFRCl3LDdnNHhgd1BHR29ZSXcjbWRKOHchbnRrK3szMUAzS0w8Ly9PTm1LNXgqYkk4djFrVjhaNWJHOChdX2k0NDpiWy42WVd7PFAlWj1hVUhy''@;'; put 'put ''b2dOSWlbZGIyMVNQb2ViWURZMkhiQGheI1VdXyM/bmV2aTRneE1BVXxXVlV2Z0xmYztqKkw5NiV4NzZVJTwsWD9vc2dnVURLdiolPFpVSTBpeHgxO119KWZuMmcxbkksfllFUUkybSM9XXgqSS9RWmZeIjcjZFJMbnFQKzBjOyNSVjcoSDlHd2JFfDdXbnZLfmRbNkUldmMkdldINF93Qi8uQFtr''@;'; put 'put ''cVdJYHUvIzUpQ3NHOUY7bnRbPXEsPEkjQzs3Sz9gRi4kQ31sQkkkJE9vIi9kXWR2S2hublBMZXZHdSxBKSwwN2QzTDQ1PkVJT09DWEAqbCZwIUt7V0p5T2MrKUtXWVdKcDE5SSR7dFluSF5lZldbSHJBSEVuMz1wNFI7fEBwVCVmIUd8ZWIqN25QZlplblYhMnBiamslRzw4cWU7RlglPURHUFBu''@;'; put 'put ''QiYqUX5EWStWd2w3NlVIO2FkW2R1SFBVMEpeRCVlMj5AYTFXM0NRfjU9eXd2Y0RlRUBNJHU0fiY7cXJVXzpxMmJ9QWJzYmQ0OzRwKVdTS2U/LD1HV0I8OmJbdGRQOzU0O3BBJDc/PDo9Ylo4YykqSDJzUVR2aiE7QWo6byouVUQ0bXZTNjRFXVZ5KkZ2bGg4NzJqdyhDUWFFa0kzZlFHemAmMlBU''@;'; put 'put ''XlJ5byR1JFVtcW9UJVVSVjlvY19FI1sqWEhPYEddOlpPdFhqYTgkZVFlLFNEODY4cDJzRlgkZ1B7aFshfkQ8c3J2RCFULlBaZHk+dHs8bnQuPkY0aHEiOH1uTGFXIUROP3d2XXFJMG1bLnVKI106Zm0mNGR8cEhAdWZ9JVtxL2VyZ3FiRCxfJjtYQl5sQHZoKDlCPnJzIzBCPFBmNFc/VTQyckVX''@;'; put 'put ''Xlp3RHQsKSR4UXB+fnFQSWZjVVNPZlMocVJCKCVfKkR2bG0lNn1VOyMmS2RzWVZ1O0RUbV5Vb0ticmhvUHJpTiM9NFdtaH5VI1hMWmg5L2Q5XjEwR0hve11ieiNxKj5aQTVZN1ooQldefDBGMDB3K1FxR1BhOFZqRzQxM2RyUU9bYX59bmVfOzd1ZVI0fShvak4qfnlUQGkuJnhYJX1bTEFwMz9f''@;'; put 'put ''fE0rZVN1PnZOfnQ8RT97b0RfWz8iXktuPGg0ZHtNX3MsQnAmRVF2d3kxUlgjLCVVTyRoZywxWWNxcTxUZyRpb0lkSENLO0w8X0RPOHVvVn5JS0xXZU08bVh9M0dCZlJVRTZ5OmJyJm5WZlA7P3tVRFYka09EPz9TRiRoX3t0PD9eSE4mYSFYZjdTQypkJFl2KDFBVDJaRkVneE5ldSU1UXBhby9q''@;'; put 'put ''WEw7TiMiL2x9QVYlNzxBcmZ6ckY7IVpQVH1VNmQ3RzxedXdoJFpsWkRDN0JFR3M0SUZWIkt4IUdVYWhQVj1qYyYpR10kbiFJYyNmNU9bfGNoOUE0XzomdSEidFpgLzhVUUZRT0FSR0c+PGQpW15PczkiPiFlOSt1fEJHSFFVdFgqYysjd0hBRG8rKk1JVSVsVHYpTWFlKTpBcl1MeUpjfSIraF9l''@;'; put 'put ''KH4zOCVOfSZ8PkRySF1wL19VMjtYckg6eE8/fCF0ZWx1VUNKJl54OyFLQCE/aXRVQzJyYWZ4XT1zK0l9NUokR3ErQStgS2klLF58UlJ6JkQkUlElSEhYIXU/ZVtCPUBgbWpnalczanxyblBUUCtgPm5tXyI5MjxKdlt8Z3VpQyR6JSx1TUlRdzNnbi56dDciR3xiKUVqTj1+ci47VnNfKFdyWXF9''@;'; put 'put ''I21EaltFO2EhT0ZSaUMxczYsJHc6QEwrXiVXdjg6dTlCe2JCTW5YUXxXR05ZRTZVd2hPSmxJfkh3RC93eW56OUZERixvNCFwckRzJCJRIzRQPGJmfldyUW1Lei89dHxBeypQL28sb1VPJlllS2UhcTdbJjBtV3FgUDF0NEVJUHclOjAmYVpjIzpCQkM8byFHN0I2SVI5QV5jTjdEIVQzZHQqcTEr''@;'; put 'put ''dkM3OVc1alg4O2Q2cW9zUksmNVRuRmJuY1d9JGtfVGU0P1MwKGIiTXw1MUkvWEczcF1DeFFNRUEvcnV7SStMRGFET2ArKy9ANjMxKmtTNXxNWEspRnhaPlsidERYTl9hV0trd3wrZlJzQTJub2JJKEZgKy5vOEZQUGFwPWouSCJZSWpyPy5RPixhMCZCdio7SDA6SE83W3puZ1dbfGtndWA/Kihg''@;'; put 'put ''KTs3ZUxlLk1GbEVQKVNxSHcraG5sJUVbNTRucXpyZHEpOGxZamt3RkVONyp8NS9uZ1VZe3tvWXViOFRsMTRgaHkrdnR3SFosTVZ6UiR+fVMkKmQpTDlweDclY3lJKjZRY1FtVkpYdnxTMF8hN0NfKHYkeEx4RC5FRFZgVnxSdltSL34mdCgiPi4lX35FfEo0TiEyJms0Xk0pTy85dCF4MX1sLCt5''@;'; put 'put ''YSVHem9RNzl+WXhqZn1zIihaaTA1KmgvRDtCL2VlJjFCdl9kUWl5VCYieyl1XUV0PjBweGE7amo4Rn4weWwyZ0xVRW07JUIwQCklOWgxcTM/KFUhaDwxV19xPFhvcGlYX2dzc3QkPj1XJn4lNzJ9V3woT2xrWyhVI3NwRVIuUV5oTHt7O1p9c3oiSE1xR158JkdeSDFLcVtdJFZ0cGJjJWhtXntU''@;'; put 'put ''M0hxJW5gbF0rW0I+Kn16Ql5MaHNKdT9GYUFXTVlqeChTRElHNk8zWCosQTQjMm5xLG4rOEBXPF5EWjVJekR9OEooU0JLdX5dVn40K3ZIeztIe25Nd1YiezFMP2pIP1pqPXNDX1hDdUQ2SGU5X1FfYD9nLn01dn1UYEtwfDBMIlVOQD52c1g/Xj05YCxBNEwyNlluKXVuS29QRHpmPWM8P0dnR1M4''@;'; put 'put ''fWRdYXxMX11QMCF9eHZAdzFfanxPMi85fk8pMj4oX1F1T14oVj1dX0h3aXArNFQmUGVDTG9AM1creVUkOkMxMltYKnNwdygpeGY/cHwjLlV4NSFUI2RzJDJ4fWhweztzcnxefncrYlJkJHJsRiouazR5OV5WQF1OV0g/LiV2cUxHJn5uUDUjWC8wOVgmZU1hMGtfXj0/RTAhN0FSWCtoeGRNfF1d''@;'; put 'put ''JUFQRC5JeGpKRlFfYlBwR0dvKSpTN2hIeDRPdmhpeHBMQjxUIW15S0w8MmYqWTlyXXgrUm42dTwyLEM+UixBPD1AOX5zS1AoVClaalFBUnExS0wzc34+WWJbai54RzMuST1BW3pDeztdKil4TSQ4cFU3Mi9QUVAyfn1qJURVT2Z3VkFbL0t4RlZFflEmS00ka35bWmBGMHNRRj92MjM+Wz1JbXhD''@;'; put 'put ''UXB7RWksaDJOYDFhcGxvWFAkYVc/RGZ4ZXohNnM6W2doTzRoOFsyVF1acW4ueH50Z2AqPnZ3cGBWY2UkL2tscmUoeGVGNlN1VD4+ZU1tdW4iUk5NbUk3LnQ+NVI6VnhBc0FwYG8yW1A0QFZMNiNCZyZjfH5HQCVucS8pakx4eF5FdyNreS5tY3VIZEdaYE1sLDtgTSh7dTRyTiMoa3IveWAuUkNN''@;'; put 'put ''eDB7IVk/JXFmaHEjKGpsVG9ROXJtQzJeQXFbIT9ha1lrJnF1QkhFWXdHYStjbSNPV2dAI1V3TVNCXjFZKXZuaT4hJnYxKWs+YTtwcHhMNyYmT0VERjE5OyN5ZDZmU2QremFxR2RMK29yS1V2e2FhZERJNkovS3sxMD8wbUEldT0xXiwmMl5CQEFvcDJgbU5QTFsqVSxgay5VdEhqVHJHQ3pSJlpY''@;'; put 'put ''MXhoY0BLPTZnb3tCXXVJak0oPmUkMW0+My9gd2s7cHVyLz4wcnVALzVTM1tRIURtfSQyZkA0N01fdX1rUnxja1Vzb0E/fihEMjxTJi9yKjw6JFk3UlN6dEUxKjM2JFM4NzlFQSx3ODZFcDF4bHttN1J3KUNHY2BtVC55KmNtcy5qNXgxKWsmRXhrci50dkBScF0/PkBXbGcwZS5lZDRdb31faXd8''@;'; put 'put ''Ml4vXW4mcGY6MDd6cDUrKHM7XiFiLkI8Q2djRWtOQ1hkeHF6JmhSISZwSSwhKl8hbzxpSmY8KVppJHQkald4UjRNLHImJXdtVTt6UUUzWGhuUTtRYlFBMVQkRz1rfTZnJUdLekhVKk1MNik7Mmd6KWtyZCROfSJCc05INkEwbSFYTj0kVFI9JDw6bmpqZz8kQFk1Ynh4WG5DPmV1Im5pVD89PXhB''@;'; put 'put ''JSFKO0ZvQ0FOO3FXeEt2ISVhaUF5dlUiOTUmaCFSV19EfmpBU2x3P2ttey8qZmxfKzc9KUUxSmdpNFJWWHV8cWRTK11fIj1JOH55QHBoMFgwaUY/NUBtS1NVcVJFeG4sdH1EXU1eVCUrLmk+SX1SRHlxekQrTiw9MVQkQSV9a3MiLyt0dVguZEsiTktoZVh2d2x5SzN1U0dKITVUcjpAKE9qTXZn''@;'; put 'put ''NClCQGNAQ1tCa0FTU3pebkFTfU1yeFpXZjdSVWBiPFdxfGZTI0c2JCw6eHhjc15dYGNoeCNRdGJqeC92UmFOflAoVFhUdjUmX2k3el9JdnBNNSosTltUSTxBX19VWDtaSUtrYCQsSm15KTdRYGo5TCRqb2FeXW54cHFbZ15lJUdJfiosIVswLF1XYDZ9WUVuckZJYWpobDNeRDo1PUVZfHBOPiwu''@;'; put 'put ''ISNSVHlEVGFzKCwhPXFkT0xrfGdsRzRhe3phfjs8eXBHQ3lYMFM9V1hzdTR+MGE7LFFOTCZ3WVkqeyFPOzU+e3FaQnFbOjI3b20uQGwyLjBvK1lzRUNUbCZFZDdANXF0TWI3aF0uVyFTNis9PCZgXUBsVzRLflMvcU5LOjBjZiNCYik4aThDQU9uOUs6aVA/VV9DPmRsVDEsZD5GPlFmQigmYi4y''@;'; put 'put ''L0FfW14pal1CXUBOfnM2YXplc1osdH1gMn02OFNyWmdaUUVwcSxePD1IKSteaktqVDFlKEpZZjlWWj5yOGtXO2FSbSVsYGFYNWY7R28oUkB2QjVmZTg2LFRZSFZkUHkkRTsxSW4xY1pOaGRuZHpOMGwlbCp1L35tal48Iz4qIShPTmslPXJeQG9saE5WYDJ8V2BvQFImWG5WfE9uRDlVO3ZHa0Fr''@;'; put 'put ''LCpxTXN3QUB1Y3gjfjFLI01VKXBifC89JmJCM0MzUGc5M1BwU1RSUiZvdHFPKF9zcVFTZlZmd1h9dlslWTFaQF9PcVsuPUA2Kj5zQl8pYyMqdU9GNlkwKiFKK20rLDA5YygqJnJNLH49KitTZlNvISElaXtdd0kwRkh0YmM1UmRlRSs4YlpCSGF2T25NJCpkIShJKFUydyNMfXB1UmwsNUUkcGcs''@;'; put 'put ''QGddZjFDYCFAcGNwRzJtNnppUCFYUFdmJVBpO3pPRUo9aU9SZEUvR2A1WHZvLHhmVW1IMnl7dl5Qaz5SIj1uYUY8YmN6YHBHZSlWJEAwcUA+bDslbz5LNFUwVEd4RHJHMTZvZjs5bWZaLDVwWndPaF5NeThYOUpmUztCaXBwJiU1LG85VEloeGNoNGwoPX5ieyNgJit1bWAjKSsrTzlncXJFPD8x''@;'; put 'put ''djYsQD0uMHNKNmtsLFI+VSg0WHJ8NT11OWgiZj5TaEx7YkJNcWMxIiwve0QrYUlMXjVxNiplZ2J4OSQ8QH1dSl9aV18hJDhHfCxIUDE8e1lETkd2bUwuMy5oRTFtcm1hO1F2V158dF4sUz5aPUlaKTEudyxJeWBZPmp4Q3pdRmRFKUtIdVddWXxGWyl8T0N2MldSTUU/MG8sXlJedjEpQVFjT0h1''@;'; put 'put ''NEU6Mz1XOzZUU09MPT1vc09vNUE6UCtfaz80ZmBuaElHLC5TKk9CJkFoLG0sKFluUm1dQ3hRUDE4fURQJjszMCpWZ3k1MWFYUUNkMSpFUD1yRDc+WXlORis+R0tMfHl9K0lvTjwhRW02SkYvMm4hNiEke3pqbnh4ZH50VG1ZcCglOFlDLGB5Mis+el5NN102PkR0cjlzfV1zISQzQmpuYEs5dXNy''@;'; put 'put ''fXNQcTFRJXUzJChAYERaMFE1NVUlJm5VMF5IczR8ckxZRit+XmIlMiFYfUk3TktlLypLYHpVYyh5Qi84djw7RDJRZXJ9cjosTlR+fnhadyZUKGpMU0xYUUo8Onk2cV9BKz9FcD9wViN1fllEQU9mWjxDWy9JLiZKcTxMcHMoLDZ8KXxUY3heW2s6eXl6XSlVIXFod3xyezw2IVZYMSYzVFt9cHNy''@;'; put 'put ''aC5GbU16eXpGbVNeXWJMJDNdOGk4fkJPQj1APzo8JVZpLjs7Pk44OyUrdjxCLkFrdlZOeUIydEVFMkIuQWs4ZSIyNHIiVkUjYSVPO3x7TWEoQ24kZCQsXU89MG1yb08jekAwbWNqMltMPUh+UGskJmE4XnMzU3tyZD8wcmBJMyt+UnRVelU4YFc2SnEmYENzQitoWnw/aD5AZnMjV3BxL00lRCtB''@;'; put 'put ''VV4lRGI3ajcmSTJWLih6cjYmOz5sN1V6O3tSdkBBczEjfT81Qn1TPHAuc053RWNiSmJVLk5PVFYrQkBpLlhpMkJ0YVRhW0A5MDwwKk5jSCpZZFpDInYoYE5DIndEZUx2WmkhbDU6Kl5EQis8QmVHPndyTmxEfkElYzUxM1IlKltGQ0FBQUFBOkNQajJBQUEuMyVsY3s8NiEhM1QmQTJod0B+bVE/''@;'; put 'put ''QkM6RmxiPUg8OmEhMnl8aTNPfjU/ZDAyP0p9e1d7PlV2ajdqZENfPXwvfmAzP0B5dWlZfGczR3FUTVp3ZWpQVEhTJWgyMVUkP1N0JkByPVVmYTh7UyIjSzMwcmRKa2RMQkRmeGFKLkRHTzpJbGh7Umk1WCh3RXIsVDxYIXclUVFoM0tqcGh3KClPJXIyMWJFb3tVSD5CbDZAQ15AfEBHaEVeNH59''@;'; put 'put ''Z3NucGNyYjIlJX5AVDoldTNtc280XVRTeCpXTnY0UlVpMmdQWX1ncSkqblckTm9QaTtpUk84V0skUXk5SXlmLztoUTgsXkVOPjhfRlJHPT9rInE9XTBQJGJQITdWSCN1UltlfDd1NjxmTls3ZVl2b3ZBSl48cGZZVGJvRU95fTM3bFYzK0IuPik9OWNWYGBxSF1eNDo9R3J2LzovPCZQLDR1PEY6''@;'; put 'put ''ImE5cjB2RE1CNyg9Yno5eERbeERufFE7PyN9dS9te1grSChrS2t2VEdaWU9LO0cpaWNLPmF4NCE5d29xfSUvRD8mZm9iZ2R8LjFnYilra2Nbe2ZrQGpoJUdkJWJkWHs/c1BgLFg/fkohT1QlNW1EPSltLHdiVmBfLkB5MiNDeEM4WWhDNkN5KSpNazppMD1wcyZya112Z1VPNURmajhve0BjRkB6''@;'; put 'put ''MVFmNmc0TWElMTReaTRVdVJ2dCptKltdcntnR0ZtISNBY31QY3ZHXm47JUBORyQ+PjVhW043S0dUNVFuXlA3PDQpUyQ/b209TnkzfVEvWG96R0smSXFpK0QmU1tmW298RjpnYncjLF9DcXtucnAjfDguZ085NENIT15HZW97aj0hendXNktheFZvcSpmelgvKU4mPjJYYVFMX298al5Aa1l7ayYy''@;'; put 'put ''aHBPKV1fTSlhSmhtVkYwZWU1X3xpZEtOR05pKChUSWBXY1JNLywkIz15UygxZE4uXSNkYGcla0hGUnV9SFF3fFNJcHRwIVMjQHgsSy4yO3dbPFtEMTpjKDBSJlBxInx0RUBsc31aQjB2XV49aj5oaVtmJUxlVEFFSF09fVprUXY+MGZKfHlIfCs/ekAxcGxpeHNydm05K1g1eG0+MVZ8aktRXSxL''@;'; put 'put ''dHgvRyReMSs/R35aL0JVM0Fve2B3NWYjNmJOWGpEWVs8X05vTDxlUy92Pz4wO3g6NiZ8d3RrOS9URilHV2s6UzVWbnQ2XUZ4bmEiIWR9cERvXXJoVEVWaGZPIz5eL2Z9MCFmKjFTYEw1IV07aG1CaX4iJS9mMzQhJUN2bkF1eGVzUzRNZTJhelI9Zm99Qy5pbWl7N1AxLn4mTkByeFt3PWQ0RDFF''@;'; put 'put ''eFVPdV1xPD1ucEtadEokYVREU3g1KSNLPWc8eCFISn04dDNMXSolbW9dOHN6SmpTY0ZOLzhOP2F5YlpEUyRNXU97M2o3QksmMCx7TCJgVGJ5WTNIYmNwUkJJYlhWNVk8b35GTmN8RiRgaDlnLmNeNmxNd1h6Z1lPYUJGYGZ2ZUltdWpWa1RSbF9qPTYjQEdJfkFReUZOWmcvPTZ7WEp8ZTE3WFAj''@;'; put 'put ''cGNsK0A2NGhNaj1PTi5OdDAqdHQ0eXRMOiE5NiZZdG05aS9lXV85XVNXVls4IjpgcklPZSNaQnhza2F6W2Y1RUBgLzF7NzNue1hXI0JeSXNdPz9nei5dPkMrUWU1KTE7KmAucjozbzMlZnIiUWowbTlGSkRMcGQmTn5meDhmO0o3U1F2bkttenRTelRSbko2eDIwLGRRVG98JXB0UiVVaWxmUiF5''@;'; put 'put ''PFhoZVBtUmNWNjlSLD9MZU8rK05baTlCWlppbVgmbSgiNDR9bEdZJnxGd2x3ZXZ0MEZoaHUxYUVUVnU+cDZGSXxJbDREQTo9YlksS1c4TWM/ZjReMnRfX35dcnRqX1hHTSkyKGczels3Xjxub0xHW2JkXXUuKFZdZCVeMz9OOlNeQj9fKWsrWnRKKCN3OkxFT2VfZU5DUXl6VkVeJl5nM0ZaIzlj''@;'; put 'put ''eXdHVyt1V0x7JG1rSGJaVEMyI2lxYTtBNm86RkgxTDZVSyhEKStjK3AleWwjaXdWSEI+KF0pUm13ezZvSComISNpOT5xYyZaKnZHQHR9ejsraD43NyxdZSN2cWc1Vkc/OT9ebmZ8M28+I2ZKP08vRG4/YyEvJExxeHBWXmhpPzhGW18ody5lai81dyFwcG0qUCJtUVlDV2YkRDt2djtxa0RFMHta''@;'; put 'put ''YHMhdUcldzZaSEEwX25JZSFzKlI2cV92dkNhWG0xUlRXYEQ9eCl5TmFFJVd0V2pwKFZgalFOX1UkPU19a3xTRCskciMzL2k5fWxFbzIxWjZqdkttOXt+d246cSUkOHklP1I4Vzlgel0+aG8wUGtxalZGKCJTNEskVEJhezVHYXx7KDg4RiRNV3ddJHEoWW1nKFNsaEt4N3UuSVhFR2tAeCg6aV5U''@;'; put 'put ''bXFtRiN4MnwoUl10b3Z4OmVuYilsPUlIYm4wO0haP2VzbzEpVEpUTzVkOjQzYEd+M2U0bFlxb2NlInJ7WV15OCtVZXVFZ0ImKW41eGFRPE1nJEtlXzNwfipiTmJ0WCZpdjhtbF47Rz1LVj40LzpgKn5qLDpDVDhYVVE4V019NkQ2R0BYOngsXjpxZyZbY1RJfjMrIj9nKT1GUTA6eXVnZjpPUGAu''@;'; put 'put ''UUAre0VUeTAkUkROI3opInEvfjo4IzRySEBNfGovZEdobFhYaT91ZlVHZiFJZE9lWUEmRCNQIzgvaFArVHB4flpZSzwzdCs7bnwyRitjbzt+LjExTX5abHcrRVFtNyJVJHM7YXtAb3tQOU5HRWtLTDF4MmpdUjdnY2BnKH46VipNTkVoIVpudzJpRS4oJixQJEFILGxGfmkydENVW00oOn1AXjRo''@;'; put 'put ''eUVocDtkflpPezpuZjt6ZD9+Y3lQP1E2QTBNRTxXaE0sV0JteVd3OWQhey4mWXZzQjNLUT43RGtYRXoqM3lYVklOPGFiOnthOmtXLEt5JX1WPjl8dThFRnMxQzo8ZHdJNVBsfmdMeSZsQEYqZmJVOT1mS1VnbXJsbkQyUzhrMXRzVFJXc2E5M2l+Mk8lekFmWm1mUTU+JCwkMUNtL1twaEZibUd0''@;'; put 'put ''NFgjKmcsL0JkJHNTSUJ6NSpXei9HYj1xIVRAM1BCUEphKkxVTV9gdlVzSU1ic01RcCI2RkVXQkU4VWcvKEpQRUR0czJNfDQ3WTJZYiNGMU9Palc1ZXc3RXJVbyZdd1Qsd3BIbVolekMhSEc5bUIxJFVZL1dtZzhIWz5sVyZwQXF+SDV6cHowSnBPXituYmtuOmYvP0NXOEh8bmZxUjBbMzY4TkV7''@;'; put 'put ''bSUiREFFTmRPWFV4WDRlQiZ1b2I3N1FqOkF2OU56YCFuYHJpdU1+fnREJUpNcVt4aTF4PT5vWXl0d2lmcCVwZUQ1RVBfJkBsOW5ib2YofDd3bFtAUH1ZMEs+dFIibmRhc0JtXyo0VSgqZTJzTCRdejNJZmpvZmdtX0hmXlIxKGp5LmMlTGdzMT99WWdAYk1nbWAvTjlzd0huQSpiSENqanVCU0xZ''@;'; put 'put ''dDlBekhuS1B2fnxXM1VoWTtyWkw1WEYmK0Y2ZGI1RUUxKHJZZzR6XiY3XkR1S1ZAP1ZzOF9gaWszdSgkXlUsKTJNNUs1XWVsJGBKVzZAciV8dnJIbnlKMUMhdEZPfk96LCMySXF0PC5qTEk7TXhFc2U0XmtzR2ErPWtVal5aWSREQFE2W0l9TXZvJkZmRyVKV1VlJSNJYyEvPjVGUHQ6UStaP1FQ''@;'; put 'put ''Vis7VygvI1NBTTE3dTtxaWN7fnw/Nj9AXXE2Tm46Rn45YSNDQmx3Ky4rTXFLMl8rRz9nTHdsTT1CakUzKXlrNDJje19fSlVTVVlHc0VUSD5mJUU1e18pJCpQPl9tWkZzPUJ3KW07JHYudzRtS2p8bGQlI1IkQ3QyLzd1Wmh5WEhNRCFYIndYLnJee29iKSthdH00ZXU2WFFvTHlVcD0pWDtOS0wr''@;'; put 'put ''eGdYSVVsYXgsZ05USiRwVi9RIitzaiNHQnU9UDldYVl6aWpbOnVzSTlEKlJIazI+fnQ4IU94RGVkdmk3eSZtWE9obS4uJG8hNUp3STNsMGVEMnlNT3E3VjRgUkAsQEE4Y192MGF4PXYhL1h6M1BMPjVoImQydC5KPz9heEV9OFQwYzBuW09MWV55Vl1NZFddfEp1QkEubFt2MDgsUXxqel5ISEBY''@;'; put 'put ''ajMsViZ8cD48R3E/KClgLFsvdl9dZ3prL0NYdiIlT2laMDVfdjA1Zy9GdWQjLzV6e3t4NnxiZEgwWS9ZSSNQSj0+MEBYMVlqP1l4OnglJHhxbTVkWDV7L3o7bV88bmpHfmFmSDF7eGgvcFcjT1ckVUdAfk10NUtLTXZbMUZyRHlfTHhbIytbdHthUV8jImB2YUZrJEMhRnhIN0BAeyolQkV7ZTps''@;'; put 'put ''eGZKND5yaCZ1VUdvbzMyMWtoQjMyWkhiMjMrI1dXJVkzY2peOEExMmpnczgpYXF5dXZ8PyxiSEA+ZjlZQFJBWkZJZmxkRWJTcEZ3KWRbfGdrMyNOUkUme0lXUX1gPT8wXilnQytJcG1uMVNPXnZAPGRtKyZeSD9Cc2ZXJX1NLCFWUyZVWy99WWx5VCI/el5WXTZvNy5vdFBoQlg/enBkNigvVntD''@;'; put 'put ''WHEqLHw2XkhCOU93MGk5JWM6SDlpaDZIWHEoI15sWGVvYVBWY2x6WGZKfD50NlBgInNmKEtIaGl3YDxpZUVARmlOLEEuaFZRUl9KbDd8NXRRWjBwQnszfm16WyZXfHYoKi9oMyxLVFtMJGN+ZSwwM3psRWpvU31AdHBzVVhiWERLZX1fMlY5bDt4L3VgVU1HfVpgVFd2fU88Um9vQDRNYXpEPltZ''@;'; put 'put ''KVdSKTtPVjVTJD1UejJpN3s8N1svQko4SlozcCZYUiVaMHZsXU57ZjdWYVJmU3xbOGtuYD1yTEYoQ0o1fjU3YUUyJDxuQ20qTltnZjc3IXwraGZWKSF3bFdkPz4mYS5ZJSNjcyZaJSJBLmgzbTcod2BAQzcofHd1ZkgxaGl0KUowNmE/PG9vPkJnTV5nYSo3UEw2bklzKmhNel5pbiI3fXZOOEZj''@;'; put 'put ''KjAoe30qXmlbKHY7YzE/Wj1fViFOTSxQbXdaTk47bnNKe34oUylLbCUyS31NMGIuYyY4ZVE8VWUrST5kTylmO3c2T2w/LEh8dEF8c0Z0M341JipIR1RXLEk4Jml+P2gpc1ZIc0QvY1Jnbnh9XmVEKmgiSGRPTlosfkJjTnIhSD1yUHNVUlkyVFMoeFV6U310dHw3N1d8RmdIPyFwRlFKaCMjYihd''@;'; put 'put ''XyouOyt5LjY0KkwwV115Q0tqcDoxRyRkNk5uQl5KS11LME48bSshaGFKL08uV29lR2RnKVZXVks2Sjo4Um4yNSIoMkQ9YzwoSWN8YF9VWHRATWEsYU9hWWYmKCZSOTFaUjc6KjFwIn51ITUsYnc1Xy5lRH0iY2dPdXshVmR3eW1ZZDM3X0NocWZCQGJySXA+eD4pR2cpa3RxVX5CJmI1ejpzT0ov''@;'; put 'put ''c3V7PzUvYEh7V2lFQF9USFB1ayQrOVB0R2U3MU0yJUpqNzB9ai5bZkN0MkNHUEEscllINkhwKEowI0h+X1s6PXI3NkhrJj9ZYH1+Z3dWNStdTCp0YDpoIURdaGEjZzRCKFF6cyNKciNZcGdpOUljLCZlOzErcVE/VDVKLEB7SyNsZyxNdzZ4bzhbcGI5KkkofXNNLmVwQyt6VChfX3pXVEw4cC4m''@;'; put 'put ''MXJyMD88KEpdSDZPIjRpNUQwW0U8cyFqTW9MR1NmWD8uejJ4Y0wvZDtrU2B5REZTMVBNbiozczBzYVI0fl5uc11oVGEyZ2tWQzx7cmUiJCtoeTlJbD1qYGlxa3YoOnFsSio3fX5zTGI2eD41TG9FSHpmJmBQKUNFd0VmPFtGfVJwK0FYVkN+UVt1Xl18XSE8NFgvKzpMaDExaFYoRjgqT0Uqckxz''@;'; put 'put ''bEZNdzNfST9eUE5reHQ4T1ByTml5P259aSpoRG1OPyEkMWNuKXdXI2p9OWVMcFtJayswYkQvMSo8SDowUkczSjpXI0YpZGU0XVJPOntYXT95JT46ZE9tPU1hPih6dEh6c3Q1VUtpOy5eSCl8ZU02eUo5OTZSb08hKyh4Ql02a041MSxdKCNSLFh3bUldRFZxL3kzfl5ZcSokIklzZjdqWFUmSDxy''@;'; put 'put ''KyU2WSJgZVV0SSZ0InoiWjIpJHt1VDJuI0A9SGgmX0IiMyNncnBFb0MkZXsmNlZzZHUsazMyd0pyNk9PeGh0Sip6RC8saz1+d1FdKUcrUUtFSUk5RX1tSzNRX2gycT1jSWVSNjVmWzFSbj51W3tyUS5RKVF9SDZoMWJtc2FCbHZNYyY+QURkN2lza0ohe2JAaTQ2KjN8Q3VRQFFicDdnQSEwWkA+''@;'; put 'put ''diZfJkRjdyV4JFl0ZTsqdl1xZEBkdyFKeGJnb0puNjBNb25gTz5pO09jY1BafX1DKzxucTdjQy9bQCFZa05Nbj4hWXhtSHZRSHZebV1EKF0vbUJ3e0RxLEI9RWpEPXJTeW40YSVffnIyMVhMWDtuYmFlZFhJPzNvLnpGPzM7RGhSXVpSaUpKdD5nIUwuOko4WUMiP15FJm5XIlY7NjIvXjx5QzEv''@;'; put 'put ''eFpRcXRkWDs6KkZ7SjRpOkBacUxmbmM8QDMhXzpJMTpnJHpkTjgsTTkpYDJ+ajwrQCwqdmUrd1lBdCJpNDRkdzh2UHwpUT1eSmBkeUhZNH1VbjxZW2FpQC5bY25yZCElfjx6Pj9UZUckREIiRkdCUHgyTTg6LEgoVzlvZzg/W3svOnk0TlF8WksrIT9waCN1TCxDcVsrcG0ma3N8UVksOCMuZjMz''@;'; put 'put ''aT08V1NLUThXJSwlKS9wViU2V0BVNk13VWZPPWJ7OiJmdmgyfm5LKWVSUDtmQllkU0FyeDBQSnlJQ1MldXxobEIpY18lSV5ZMG9ScGsqVF45Si98bUNhL2srTVZQSD5tNiExQ0E9P1RqbHYoIX10SUQiWUZMeUJWMDd8alpQR3VQQyQ8OSM+KDhrbS9IKS5CbiNpVkVgYiVfazB6NjVoXU16MiNj''@;'; put 'put ''X0p+UCNRd21nSWhAZl9iOXVdNy5sdSVba2NzRD1WL0MxRkdjNDEsZ0Ela0pgfVRSa1krbnswJUtHNH12elNtUmYuXyx3RkZ7KXhJWjIpWnp4VURXTFFmSWoqQXFoPSJ6SFRdRlYwZSlddE4xSTdEUGZES2gwOyIhc1QkImU5VlU9eEhoeEZUMm4hX1NNJDIhY34iLCYkPnpRPk8kKHVvY0YyMlgq''@;'; put 'put ''YGJSfVtQWmFpMWgyRmhgJEkwLjJiMjBGP2ZnXkxWSXE7SGVFKy83UHJaTy9eIjMoei97RyNBa0YrK2ojJV1UMztgO0gpcHAhdiNGL2gjLCV6Ji4kRyVENE8/JS8uKTAlPD9RWWxJYUVaVFJgbmZIUDlTU1I4PzIieFZxX3RJKkxedWcmSWlPVD99c18oIWcmV0BUNmlyYlhgbSwrTys0WzQ4Ik5w''@;'; put 'put ''OmVRS05PbjVfVEBxV3h2ZEZdI2pxPXQzTTs4Tm80Z0JTXmh4Xj04SG0lSy9BO01fRm5HZyVtMkY9ZkZHUGZKfG5rUHpNbDhzTkRqWURxb3dWKlFPM0QpKEo7RFopMlt3X08pTm8xIjBxN0FEOWtTVj5yPkhbOENPYCgjMG8mOj9XWHdJZSpxWDcoXVRUYjxIbTEwQGtRYjN4OkcyRUUlQ01BWHNq''@;'; put 'put ''eVV2IUBSVSFOaHp+ZzooL3xzUFVgbUxnRlRJM2d1PGtkLHU9bWk/SzJ9TVVQQXZQSyhjMGNXKFVOU1kqfHgsT1JkJntCYVZ+UCx9eWw/TDN+IVM+dVBEN3s5LG5RKTpJRFJmQjJsbm1rQkM0P0JTUHZgTDx+NXk3eksxRShWNiZLcCRpWFBYSDAxTi8kY1h4SjhDeUFEcT9NaURuNEIlOndVQ3Nj''@;'; put 'put ''RE9sR2U5UFFHJT1QRj9rdzRVTG5RXj1RLH5bZjdnYkMmTUpVSGswaTEmXXYxUm14fE47ZiNuZDk6NXlTMTo0JStLVX5BbGxeVV5bYSo5b1YxUmBwMG9sMkBKOSt3X3lXX0BJb3A+flNuO315SExxYyJ0YkdLS1VPcXRtMVpDP154NVNLO1Z9KFBmZyFRb3s2VXFUNzJdN1Y9PklXfVFvOUk1XmRw''@;'; put 'put ''bCFNaSZaMXtDTyF6ZUB0Yyw/RFpaKiRvPXdMU0NHOm5JVEwzTyVHTFYoSEEpSVg0OVB6MWN5el9+XXM3NnI1TGdgaT1PZHBBYmElQ30lKHI0Sjc9ZmZbQSNHTjZMeX4peGRDalU9SGNhKT9ZOEdbc2hfTUBLMz57Wnl7QipmRSkwaDlhTSohOXdEYGBHdipCQE1MY2YwVnVCMnF2MWBNSUdzdi4k''@;'; put 'put ''cHN1X2heX29BKERsSjluWDxOL3U9ZC4+azhFKjdFJG5tSGJtQzJqYSt1PkF6ZDZpOlAlfEtXbkp8MUJXZFp6ayVTfmd3OmpJV1IyUVp6aXljQzNVYUNAfC5rKFt0bD1seTVHbFRETSxlYCRUeHoiLDBwUHU4YVhMMlokblM/aTp2UzRmaFVJIzFvcnslPkx6Und6dUB6LzYreD8jTWhKKGF5amlo''@;'; put 'put ''dnI0cUl+MVE6PE8kT3o/fnpJSzBQVzB1WEBUPzFZJGB3OHRYdiZYInJwMT04bVt9bjZdckwsQE4+eFM6UXxIRD1nP1RtNzZxOj5sXk1BYFslajZqOXJ+cjZuLCNyaVp0Kz9pP3NuJCNjZU54TEk0KGBJZS9OY0NyWXY0S2VSTmYqK2p0aDR4QEZWcXAmKnl4MGgpQ3glelJQRWJzem17eF5bYEp6''@;'; put 'put ''KG9hbzFwRih8REZfRGF2a008e0Rxb3pMUVZWWkpecHUrQzV7OE5+cVo4NHs0enNba0M+KGV5RXo0OlRCIXdhYy5qJV1RXltobVVdcX1UPStNUVVJMSZPTT4uNkl5M1EweG4yaHQ0NWk7RC48MlE5Z307Vk5fR2J0cDRzTjZJPElNQnxib1J8Qi5xWUZSOiZdOlZFTGxlW096JGptOFRZLlgxe09V''@;'; put 'put ''an1zejNGd1BUUFVBazpycjd6bVlhdmVjMElrdWdTN31OZ2FnSldFazBNQGtmPWpuaC5yRjJJQ1csQkNVOzo/Tzh9eUBTbnRkNTxYWlUobik4bCx6PXAwdWxXL0NUdmFPMn5ZQSYrWktSVHZscGFCUWBDMj5yfXhjRFJ6I3xGbCZuK0RrKHwmOC4qZVF3fEcsQlNEZ3tGMjRyQT4jaUkmJE40Yngw''@;'; put 'put ''RiVgKzJYLmhyckAkRVZXZFJLZnZiSWBeOjdMPkwpfiYzMEdvXjp+OyRINXVeK1kpfiNNeW5JZWRwaEd4QVcsOT9TOiF6QEZHYn5lZkZ+JV15NzxfY35wZUF7NHFDciQ4KGFZUTE2ZlghPGc/TS4jfmY8Vzdbe1g0dTFta3VaOU9pJkRSTjp0JFU0In1XdyYqfSMpeFdGQXBxXkZPO0JbOlZpdClR''@;'; put 'put ''fVQ7JWN3TzFePnF6ZE1SfHI2bEdnLj8wbSpGJDpEP11dbio5Oll3cGxzWlEvZTEydDUjeER1JTxdZUZzLzIpSjdmMXZzb1twZWM0NXtKbjxvcTNxcyN2VG0zTndhLiFzZzIxUyFuT3tfM0AqKSNOUlcibVslPCVaPXZCJDQiNEVrJUM8Kj5VOEUxPnxnM3RZK3VkfDxUYDdUd3pIX0VaejpyUUJ5''@;'; put 'put ''JmkyWFRvI3VhRi9MLFRYaTY9ayYyN29HUEooKzJ5TFNJcGJ6KisoLztJOlFqQ11WLiFecCh3LCtZczF5UG4jd3BVOnR9LFp8REZYYn5CZCVeP3hLLz8lek4qUj1AfVcpJC87KUskUDhHe0clTiNSMkRqWShaalc6Yip0LDZOcFZGcFN2N1tkRHtNeUVBKzByZTh7X0c/UFZsX3U6I0JrVmtJPnhi''@;'; put 'put ''JHYrPis4RGtOWX0xcHkreyw7dXYqdVA4cmx0RU41LFgyPCU3K0FVZztbdiVXPH09bHRbY2lbeV9pQSs8WiV9QTwqak1bUTx3QzE9QTtjRmd3UkZAQD9LRkZufkZmOTZRekoibUdsRW59Zl42ejMxdEtvOk1gKjU7c0A0NWAiSj5qTzs8cU1mNnR+V0smYzUlLjJgMihYIlA9Xz4rSTpAY0IhUE5v''@;'; put 'put ''KGNQTkhGK0tFfGpjTX15TW1sTUNkOCgoclNgREhpMVoieCMySUZlUjg7P047T1dGKURMcDlPdSx4JGF9bklVajluZ150d29UfkAiRjAqRSJLIUpfeFRhNktwc3ZDaE12RiNMbnpLV31BU1BqfChHM2QwIm42NEBqZDswfWdWPDwrTTxvXUVkXl50YWltc0dwXiUjfW53LHxiNXpOb0FtMHp0SUcz''@;'; put 'put ''b3tDTEBpREBQd3NsYTJld290WXhrX2IlR003QU43RCFlOSVdUTBUaix3NjhUfnJ0Snt6JmsvPz8pey9OR2s+ZSNBeW1kY3NffDBmKWZiUCxiMFNnVSN8e29MZnNzRnFSOTluaHJHbVlvUl5xTWhoOH03JTBMdmpyQyhEdD4ld2ZgdVJjOWBeSXo1dSg4ejBgUU9UXiJVK1dJYUZZYHg7MlpJVGJR''@;'; put 'put ''QU57SytgT1g+Rmc+QCRQVCJibVVqRExxR3pIdHc2WX11K3dwNHErcixjMVdOO0JyJnQmVXZadGxFSCZoWnpJKjxMOUtuKDxiVT5dQkBEam9ITjNyPWVrTSZXeV09WDN4aGNjO310dGtTNDNgYjJ+Jl19ZXFeO15GWVNVezd1RVcjRSpDPEM/a2AhcHttSyU0UGJibH5GNHkwPnQ+RWldUXB8XUF2''@;'; put 'put ''ZWw6UDRUKEVLdHJwM3dDM29KNF5USk1gTmNoTVAueE1JJV02YSFaKk1rc0I8JlBgQEFienMrR11YfjxtJEJibHRmL3c7eClPYyZ6Tyk/RmNLbF5rQyYqUy9tZWQvKk4iaFl1TWk5b1FvLy96RShEampRSzVHL2pQenJpTEtAPCZSd2Z5dnB4TTdFIk0xTDdCI2BaRiVSJWJoRFpNTCo5US9NVWpi''@;'; put 'put ''SmhlZnVoc25iIVJPfSloTUE1a1lNTFZVZEpDSnZ5Y340QE9reTcyLn1PQnYlcSFdcENFX2QwSF9xcT5ib0lTKDpEJlo0O1tfP0ojS11rKilaSktlLjhVZF9mI14sQGN6Sl1rT2JIIU0+X1VdLDMkbiRkeEdPI1BpJGVkfEE8V3hRcDg/PWAiYTp2Wk96Ult7TkthQC5PY1t8ITssJnZvRm9MdEJO''@;'; put 'put ''ZDdCLzxkNnJLWDJoYVsleDAkbz0+JS85KGFOcms+V2F1L1RzdTJMdFt7cTYvMHFBQ3Vue3wkVDFTektrSm4xTU51R2whL0guQ3ApMyY+ST5YfEZaKEQhMCxDLHVdcXVrbiNdQGNXUz5iN1kyKyJ5UVgpMk59Tls9VzFESCt3dFd1KFEvUz5KfV5BUDNdNVlwO0VQM3tocD5QemJOb0g/JCt5QVgv''@;'; put 'put ''Vk5vOiJ3RSYodkEqRy4keEZfMUs3L0pIdSw5PmsjXjxiUGBXTD9Rd2JTJTxObjFANmhDe25wL3NjbFZGVkczOE5hM19vRH19cTRXVWYuNHZgcWNEZyNAfnpDMmAqez04bkU4c1A1PDEoLHNNRGI4Wm0rUU4wY2AzOWkhQ3Y6KHwlOVRPJGs0MF9sUHp7WDA7REp7VmF8WT9WRXp1NWNUOXthKVJi''@;'; put 'put ''Kko8NHc6P2xXMkV6ZGIhbVh4JU15dyQiQztSLERlfWlbSHQjWylxIkFYaHAkaGslYFhKaVU7dXZgTip0ekFhYzB0SWR7UGNEcXVbOm9bJG1zJXVzMWJMbSg7ekJDMkRIS0EjVGI/cEBTQW9raGpgUGVHNk9EQlgibj0ybThLZVhsVEYxWWJBUnY2SXM7anhMNk4pTj8vYmJgMnk2QWM2IXQkO11R''@;'; put 'put ''RTMmPHhbQFQiL1I/NXIlZ0BsP1N9RnA6Qnp1anxaSWhDRnhGT1ZSanwrfFBWd1JdMltIWzhBYl5DTCZ4VH59RXdUN2leTD9qKjpNbkMvSD59ME4hRjQ9cUFLO3dLan5iZHFbQDQmblVXSihwdX0icjJCWTRlaiRtdyslNWV5O3spTzY5PylPZjdAL3x5PWhXMGQzW0sidyRpLilbdXFTMihveH5O''@;'; put 'put ''T1FCWCV4SjNmMzBkUG82cHY0bTJiRz9IKF08KmBmcDBZWGp7fGFZWjU2cjM3KGRlTmZnbW16M3JGeDo5R3suWHExQ3IsLjB8cGU1Xy4kdj9IaUJsc1E8MGteZmp7QjImOk5ZcGBLSnJkXW9JNVYpXnRjWiY+PzI5ai5yRSV+a04ufiFZLi95bCx8JlQ7Q21DSkV6eF85OmV4OWMpTitSSmk4OXhE''@;'; put 'put ''JixnQyo8S3pRTVl3dHIzLilZVE5mUHk1ZFhWeGNQYz97XnlFIko2akQsaFdLU09lM1YqSkN4NnNwR3dTITNncDRnPFtSUHlxNEs7bVR6ZXhKXjBQL29kUE1CVkpxO2Z7OS5iUnpTNFFBIjgwYSFNZiw2aGIjUixscXg7bz1wRHgxWkMxKjcuRHMwXyg/LF12UUxjSWFpOmxIfDp3QXI1OFtTUm5K''@;'; put 'put ''IkdfJXpNQSNhNWgwJE8mZHQ0UFElWDciMGkxSzYwQkVxVjVTL19dS3c9fXRgXnFzPyEsUTE7cGhpQXR6X35iMiZ3RlRyOn49Q0l0fGBze0A6YkBWRCpvP2pxfUdzfWAuNih6ZiRpTl5WZ1Y/eEUxXWosNz5zd2xUdVosbDpDS019PVklSihzLnpNK2dVQDQ6ZT0uNV9bJVM2LEMrK1EvPV9TQlto''@;'; put 'put ''WGRidjxkR1JrVW48Iy4jKmw/NkxXTk92UWF3SClCVDJgUGBNT1B4OnFJdDJDOk5dJjJCO2ElO2U8UXxYUHBfT3Z8R2BqXzgzZXxiUXxLNSVxPmw9eyp3MWglOi4pW0FYUG9fYFlFU2tUJDtHbDNQXksvIlN3XkJXaHpzUj5eRTZyZGRed2pgPGRxcCVRRmAuIWdhNyhSTytjUVtMOk9HQkZZTXM3''@;'; put 'put ''RyYvIVY6UEJOQTlZQjk1JDp+OXx6cGpPT3JCdz93Ym9aRGJGaXVrJn49KnpyUSwpPGohYH5zbVooWVI3eiJkbD5GdDBeRCslc3VCdU9vW0p9RWspRUlmXnZ+ZixYVWxkXWVLREk4KnhuVlo1RUp3fWc5QDsldGpyaFl+IkApR3E2UmU2OEp1LDZpR01TKzl0WmdUUylTPjtyMEI3Sz5kJn06eCZB''@;'; put 'put ''L10rS3lSbjVYNzdjPGRxZXpTQU51Zm5+dUVQKyxtcExOTyg8RSFmZmo/PU13JUVFUG4wV3I0IT1DJXxPIkx5NHh2Z09iOWcrTzcjeWJ+SEYsJnsoWlFdcDMiTlZvJDFYIV1FOUVib3tQalZYXkN8YWomPy97aEhUTS4sOjhsPFFidHorWmprWilZSV8oUlFzO3Y1SilGej4qLmJ+Sjx1fFt3RkJa''@;'; put 'put ''NEZMJnNxMmwvRlJNbSZsY0A+fVQ6JElROV4kRCshT3Z6O2dTNFVLWlB6Uis5InxgZXVzY0pSSWVtXktYanZOdD0sVTtqInl8cnRSZ0pqZ3pmazZtX1F3PGRRZ0ojb2tgOGJSO29kNn10bWFtMG54JFopUEh4KHlDd2pvRnklI3dIeDQzOylnRFY7KSt7fEMrWUkmfHh0T01DWHhARUV1YFlSeCtX''@;'; put 'put ''akhwIUNVQG9NfGR9JE9qXzJpSHM9Nn1nVT54bjxaNk8icmNzIU9jWWNHOFpUckh+JDF2OnV7M3JnNGlpRk9kNU80Ji8pWE1vPT1le3kmPVZ9MyszT1UvRz1RPlFVLyJDJkMjTDdfMXBVYGxuQ01kTyMuaD5wQkJJQk4hSkExI0hrUlEqN0MuUSE4b0p2UXxGJXwwPSFTNjdyJktfTGlTVixGLENR''@;'; put 'put ''TmdJVyR+OnokLjdYWnl6Nj1QV3ZpfXQwSns3RnFKeExSOTsmRnQ1XTxxQjhgcmpiJS96NWkuWk5vMjxNOm5JRWdCNENXYzl3dlBnQmg/dmo8VyZjZFI9c3NYMypRTnhicGgzcHosTilMaF5ZOyJrK11ER3l0aSJhZT5ucX1bPykwWTc3eFNnL0oofiVNRFZBdm1FfmtUZFdWTDxDM0c9NU9IWFdo''@;'; put 'put ''JiN6aUA8UzdnRUk5P3lDUGVVNH5JV2hGL1JLRVdaP0kwTH4hSSYvK3A5SjgoVUB1bEJsYl5XIUdadXEreTFkQFYlfGA+dW14WWs4S2hIbSsyJjJAe1siakppOV95a0Yodjd9Tjc6d1ghSjdsMFZSPl1jTE9FSCJJZGM6OGB1MnxyMEVnVGRsRl08TyZ4KiM9LiZOS0NmcjshWnpAT198RVcqbGpr''@;'; put 'put ''MXN1bUJifDp4V35eSmpeQEtUMFE8RXU4KTx0WlhyaT0zUDlnKkQjTGpLT3txPl9tKn1WN1FZQHw+OGl1LFJmTUheUCtdVyQ0bXEvalgpJkldNFBHcD9kMkAsXiRANTN+WkowJFNnSE0pYjQxOCYkL29ualUvX35fYTB4b0JWUj1bVCw0b0tuN35IMj1iYCNdJnBwXm03WFghayRYfFlPVyQsQ2tD''@;'; put 'put ''PDNpcyx0OHEpd3I0UjgmJjR2TXReNT96cX5FWURTVmA/bVBKKSRWczR4RCF5K1FRcFl1PG12PHpiYDo5fmpmJjBIPmBtKzNWQ2lhfXFRRiMkXVskX0hzaXorS3xHUihjbEdmVW5jSXIyWUIrYEwqdXJnaih+RHAyZ1NKNWQ6IVBjYFVjKUZVcmB9PiRoaGdgfGNTRntQS1BicjBqI2U+Sno5Ml4l''@;'; put 'put ''OXQ+aWlpdF9fKXI8Si4yOzAkJHlfSXgkbGtLY0w0JH4oT1VkOE5RdllDYn18NjU9XyJORUAmWm9PT3hlPCp4djcrSD1tUSVnKG5XYC5rNkw3KDBLJGhzODQkQGQiN0x6cE9bcTlWRHZRMUhCKyRKdiROKyVpZWI6P3dqRm97eHJtPXFsd3UuYzYsXjsyXSFZNWtWWikrWFtxYz0/XUdzdDU0KnZH''@;'; put 'put ''MzxKKCM7SjoqeU55QXtmUjNER1Qpb0RDdzx0ejxpSF9MQGN9OyJAbUFBYExdaXBRSHg0PDI7UXt3OUgqKkxNLHZ5KVszJWFwdyg8IlFxMX1LKGpoa2dtfGN+SyI+bT1pJjw9SCZ6dWZ2LE1NOSo6fGU2IzthSmNibHFGZ3ZaWFM/am9CcSgsKyVDTHk6NEd3NnIlK249OS8xd1Y+Vzxzdkk8L0pf''@;'; put 'put ''WCNaXkRFIy4uZ1AkdmBUNig1RUg1d0JNPzUlJTlHY0A2T3JSS3ZkPW9MPHp+X0BLRyE0fDhpSGNnRmtqMFdFPWpZYVk1ZytBNDt6bUZieVpTSl5DX2VaI1YqZX58KnlmTmloUWRfOVFYV1k5MVJ4Lz9FTlVfMCgqMjx1cG1VWGc6Y0tDViJAUX4hRTcsNlAkZ0BtZmBlJHtnV2IoKX1RTyw5M3hv''@;'; put 'put ''Q3kjajB0VDc1WnpYN31oRSZbb1JMVllXRWdtYXpqWm1YYUFxUD5uY3AqSFNWZUQ3ImwmL1ZrRj89R2dLaW9FPU8+OC8kbS5EWTojKz0yZ2RAaiQmbXssWWlTcCFtWnhkfGE1Iygjc1pzUlFRSGdOJHZUYihIM3ZBXzt+bVl8RDpPbnBVSShLT0E9ISE5TDdNeztXbE46RDhNfUdaJjtIQDVCbHVv''@;'; put 'put ''UXw6UWdabjFoejhVU3tPTXIjbCFGfF0yLFNwRDs4MTMiSSs8WVR5WXJjUUd8Z2h+QmNvWCxaOGpRbGU6MHJNQ2lpaDwucDJNXi84MFh6VDAxXi59JjJWY3Q/JCN+fSRFdDY2ej0uMU5hIkVRNDMuLi51PXxlW3ldUml4S1M3Yy8lfjs8SFo/eiVgJD1QMF1QKk5EcCohWio2TFVpcUFeVEgoMiJF''@;'; put 'put ''UCxZNWtFZkRKUD9YQStJVVQ1Qmh5UjBTNGh5MVAyT0QuSmVlZlpOZFRwJE8kN05XI257UHwmdWRFYmclezlebF0+WiJQMzNbJmkwcDF7LkkoLG49ZkpsaF5CbmUuZHE8OHlsfkxkbXxrKj5vRD4yS1pKZU1Ufm4/ejw6TDBgMklpQklKWm9HNnN5Y08+aWQwR2VIWkxXQ243aEh+czpNX3A/PldC''@;'; put 'put ''bmYqSTJ7TkBOflRHQUh4eXYxPSRVYmJeZkg0OSNaaWZEJS80O0xPRU98fkAxfDAkLHo3OjkhTWB8I2peYXs6cWMzLGpCLzdRTl9LXWozJmNgJThSaXF9KjFFN29kcCVXbEpvU0EmOUdUYE1Ac05ERz88aGYvcDkmU3lNU3U7aFV8P0ZyT3lfLypJT2tiPnd+UyE2fTxhLjVhY3A7RnlDKWNPelhP''@;'; put 'put ''dmZTTjY0XTc3YlshM2RfUzxkJm59eEJWKDJjImFgV1g9PU9eb0pzZXVfbikoTXYycEhKZVYkS18qXig/OVsvRHl3SFp3RlJDaHhrTEhbKyM9ZUg3RjF8fStscms1ZkslVk1iJj5SaCY+QGNDQGklN11KOWs/VEtHYjhEWDMldjooWHJhclB5ODkoXzdkWz9LQSVJdlk7PU1HL3ouNmhUc0dDaXw8''@;'; put 'put ''YmZQQiJ8KStYYzJ4c0AsOlFBMFZAOzJ8Rz1SdHVrUjBBKlMscXUzWkU8LCtjaUR+PSxieSROTmRfey4man0lc11AKyYuJWpkTG1LR31tW3U3WnJzfDNGSmprVXY5cjtOImEqJUtuVUs/X0R8VXBYYVN0ZkxHOG45I1QzNUQ/TU95ezltYyY7XiFFNFY5d3phWWJAI15bKXdyaEdkRmM4MzRCeXxw''@;'; put 'put ''PSpFdGAvaCE6JkMuK0U7QV0oUXIzayZHYT4xOW85QzAoW1dTfjdoUWNTam43Zm1IZUJia2Vlezo4Tlp7eFRNWk46ITNXX3RiUn5ALDZMZjJVNG8/eExAalJCIVJoTE4oZ2g+OnlCc056VEAzUkgwc1YkU3BQX34lN0QxTmtXVldGRkl1QTxeOk13TUkvTGJEcDNGTkkzQGJxJXVXZ0gzRnIhXmAm''@;'; put 'put ''eDVkVltLUiF1QFVGIjZweWpEMndSejUzMyYse3g5JH1OSEw3e3Z5WSIpUyEoJlZIakFgbHFUInI4JHFCVHwxSVlHM3s6K0lZdDw+TiU0TzlDR0F+M3JlTSQ+PUpZIyZWRiJpTi5ka0k0Ik5sM0hiVnlCcDNlZ2RmWHE3bzsocmE2TEJxVjV4blohUikkSVUuRz8sXT9lLDVDR3dkVj91aio4eSlT''@;'; put 'put ''flBTUkF3YWUweXFHUUBBJSgreU0zRGNjLjcyYGU2ZHdKeWRHO005KTl2cip9R3AoMDNqc0ZFZFRCcT5vSVY8dz9Ta1s1V35MQiRncS9TIUxSeHRKSGp0fH07V2E5RFJARWUlMm8yXXRidi4kUFUhVmZRK0JAO2I4JGUxcmhseHhISFQpMzRCJTJQQD9DI1o4P0c1eVQlUVJeSzFmaHpAVk1PIUIr''@;'; put 'put ''eUBxKWNPVCJVfTNVKUE7MFQhQmBQJCh+X0svaTpEZiMzXlk4WFFEYjFaekhwfSZ5ZmFxSXlmYmltNy5ZRHFGP0w3Uzw3Lit6eUFMZlRuW15qKEkrJVtkIi99eTtjcF8oS0hTc0A4KHRfP1BgcXZGZCZgKSNtPCRDOCMjcXF8PVZ0U117fGk0VjpfTzZjMlJlX3RKcXlIJl53ZyMlY1BjOW5KaVRv''@;'; put 'put ''Kjp4dUV6cC48TDY6enxndSNtKUM2SCNFYCU7dEckOXE1KEd+WVZAX21URjB8JUJTa1tacDBHbXJ8TFlGQGlaMTNlLlI6Q0J3TSg2KmZKWlZKW2pDKVUwTX55Qz1ga1VhWFRYdWYsL1tLTT1QLFVSdzYiVElsQ3xOQ1I7TVQ3S0l4aFg4emVVbXJuQkVISihvaz9LVz97ND0pQ3hddWh5cE86Tzxy''@;'; put 'put ''cihIbWlBdFlDV3I4Pn1JVSFQVFgkRGcrNDFKe09LbSg2SzhFPXt2JipBNCxvWkx5ZkxDOElOTkQwREF9aiFgUStvTzFvcDdzOERofjFVSFsuInVSPXs2a0daeE4+eCE8KUI3L2x+QHBrLjM+fDZjXVNgQDxLTEUlcj1PSkpNVWZDOWI1PEpXa25HQXQlYiM2S0FgYDJLIl5EbzZ9b1Jkdm90SjB3''@;'; put 'put ''KEJPITt8OlFuPE5oW2Y0cWNLYX04QFRMdmEqfkxnTTEyUC43VUBgd2V6cihHXylUYShMc017aVZtTzBPIiZ2aC5uIyFEPk9eIVp8cCl8TGVOfVZKMCxxXjZrLCN7Y1NyS3pZU29+WmhKcS82XTFNNHp1R2k4aWJsQH1uVDUmbncuZCk0RyZZdVBicEs+P0tXNDg2WzchUH5ifnJWbGZaT2YiSWky''@;'; put 'put ''K1VtOEgucHFGdUNZaTlsdjIsb1I3b15mQHdXMHJ2Yj8lKXRkZ3RoeFpSdDFNZ0BAdVJaPHRQXVJWakdfd1R1cChJRDcmJCNrLjBtV1E9a0NZeHYrYkpmKFdba0R4SlIlRDMzMyVSZHR4TjMvI0hvXXkiRms3VktdSnZpZ0p7UmppS11pZl54JXtwWU5+RnM7WGhOVHwuLDc4SSlfUmpWUWUvbTQl''@;'; put 'put ''em8wZDRdQFNldmxYN2hONldRcWdVN2V4WH1Zenxyb05gW0JpUkosXi9yInRkVDlkczZzeEo1SloqTFUpanx8MFIhcFR7YS9FMitvfF97RklTYHJSPTNUUDQ3JXhyNEdQPWc0TUkzbGliYWtYWkY3LjwwWlk6fHRvYixVTnBuPixZVyk/IyM6VkQoPVVbM3RCUXNZVm1uXi9mfHV2cnRWe3lyR19L''@;'; put 'put ''TiZjUXY/OnpvZjk4XmlGT3J4JmlBcVg3PFlVTDZ8QGdzZWhqW3ArQyRRODlvMWVnRitrP35uPyJCc2tgMEJVZE9xYk1COmYkbEtaIUtWfmw3WTBeZT1Ocz9COjIqeU8sOF9AeUhDNVEqbCxhOUorKT5pXW5na0MiMCtdSUVnSXU0UzxTREl1THpjZn5lTURYMn4/Vj1uRihrUHMlUS8xQSQoZ3lV''@;'; put 'put ''QXI5al56S3U3anhHelg3OldeQU1UIiUsRHRRJD1LLEtJJkN1TEBsa0VWcVI+YWkvOzdqSUFmNSsqMGBTSz9McjcoVUVFOTZIWCg8SGo+X0JDJXlzdWFWNkVOUE89d2VFRjEqSCF6YD5+dnxlelE7YGkhMVlaVUdxRkcjeHpbJmtXSko3JkIxeEwxPGVjcERQen5xKjh3JCxJcW9pKUA9YW5tfDNC''@;'; put 'put ''MDNnODlqWWdYVE5DVyxYWns1LCRkTjReZHF6bTE+WnZNTGYxcSpTJFk3bUN9dWcucSFhaHQ6Z1RRZyMxMnB8NXpxXXJbUltQaSpdUjNsZU1DVThwaVdVdHxqfGlsbGBsMHphMFpkNzUjRGpINl1oYyY9ZmI4empUQDM6Q1kvXipkdW5qUnBGJVlFe30/MCxkPDJlNUJXdD9nYihLdFFNUiErfiZx''@;'; put 'put ''MHdhSl9fKEBxY1RlfChNW2UjRF1ITU0vayltM09aS2d9NkdaVTBMcVghJiRzbnQrdjdUPzlraVV7MXtpcThRNUN0KHxOa00lLmMkUkwrImluITdiV2c+VkBESmJQSjt1MWZzJHl9elhaWVdOQkgzcSojekM/MVVISFAzTWpdTTxbKW5Fd2JiVHZWb2VSbztLeixqPjQlU0hBWlo1XTshR3ksX1dU''@;'; put 'put ''T1ZlOEdJWGcxcCs/JThpUFtYWmdwYiNtbm0zaWJPUDBHcXMyT3AvaTYoWn1QKHguT0ViRlMwZV83RTpPUFJeRDxTTStxV3lWWj51RU9+XmE5XiUiel9AJDR4KmxaVmRYIiYxSixId3VwIkpvYzthUkE5W11+dllIX3tSe0g6ZHdROm5lZFJTMmk7bHhRWXxZOEEzOixkbk9oTktWQ0B2U0pjVD82''@;'; put 'put ''JVgqUSRPLFcrZXgzWE0rbntQcHhsRFddWCRpZXBVdTJgT1piPzE7bjl3dG1UZ2k5KzZbM0hwInJBRWIhXjgiUUhzNGxvYlJhImp6UzBMRjs3aHszPTxOQFU5bnMzN3BPWU98YiRSSGJ8Lil5Y1A8YjtbLlllMSFLa3hJRGchSnIqQ0FLJUxVai99K3tObCw+bmt8cEl7TkVCc0YpcXs2Ky5iMDBA''@;'; put 'put ''cHJDT18mbX1GYm1MdkpbPiRJMVs7dmF0dXgmYiZJcndxZ1YqTDtgQ0wodT9TJkpTek47aT5fNjhPQj85eWBHdXlQdHVXJVp2PyErcDg7LGZmYVl7Y2NkQio3OS5kKFd3YXJfRSh+UjFXb2BjWzFTfFBaPkVpSHA+Oywme1ZhbCE5bEs4PDBOMGtjeVJFeGdQaD16WGtXV09xSFolemsveDlyVno1''@;'; put 'put ''YzswUWN7K1ZnV2lHV1M6figsLysiR09DcFYsUXthRDl9TF5DS3QqfTokU2FJb0ppbW17TUlZPFtKSmlCeFlUNVdhfTZ+OFs9NmM/QnZQfHcubDNYY3FQI1c/NF8rajE9PF10P1drailPRSFfUFQycW49ZUZWQElfVjF4Nk1xT3FbYnhycV8lZHBAVjZiK3dYYEMpVHh5PkpxNi85VipPRzxoNCEk''@;'; put 'put ''USh4YlJvKj5MPzQ9K1tsKnBWPTFTVTQyY2t4T3RQQ1AhWWM6dCRZLlgyJig/RSJ0UCZMbihJajNAJDQ6MVdWREU1NzVLalh5cTJVXVdwfVBoPCwpdExTaFREMnQvLGAiQiY3P28vcUgsPSNMakFVXjVMIXg2Wi4vVV5taFhrI3pYbyxffj8xRm1VdU5qVkRGOCVmbl9QNXxHY1coe3teOklTMHEq''@;'; put 'put ''TFB+RSklKE5kKHtqektAMjQqfSZseEduVT8scURrYFdPKFZ2cmFILyZuN2EiR30sUDApUGJJcy9xVnU7bWkvdmcjXn44Y3M2anJDUDAmaVFkPjA8LlsyZncmbiF6ZyZqLmU6dzRlWzw5OmZwSiMyQyIlKG5WYFM6I01KKS8/UilxXik1ZnVQcSkvLz86YCQ8JCE2a1FoOlNYNjZSZjduKzVdflpK''@;'; put 'put ''U2xOaGlqZTVjYC9bTk1day5mJkY1X2tPNEJDc0k8Wz9Sc0ZtKEt1bD04QEA0ZXdfUWNvZSk5Z0g6Okk+aFEoJCx6WCNQOlgzX01lIzY9WmQrJCFbdTpzbygqTXEyfDtJXTRBSTZwVlsvdyNTRjZQWkYwfj8vK3k4YC95bVB5M1ZsUmtmLil3WHhdei9XMDV3SXd9NjZBVjpfbStDcVdRcEcjMyRq''@;'; put 'put ''KSZiKi46Jkk9Uy5LQiw9V0UweiFlJS5SfWZbSjt3IWpXLHtJRm5aMU4oS19HVUQ1LEQvaDp5ITsvQm19aSEsV2FqWHd8eDQ5L0gkPFsxeWA9PE5EJHhtX0dgSEQiZVA8NGZJQDxlRUI5OXwjV30xWCxCQiwmRCQobU4xOVdFUy5gPTBxYzchdDlIWzclSThJdG1WNzVgby9TJDNHPF08dTlYSjY1''@;'; put 'put ''OnEpXSVoQDo1cXZ3Y2AkTyJJe0d2aWlKLzkuUElPdG9ePHEjTEZYQSZiYiFvTm4yOCZdImQqNCF+Tkp7clJ8K2RGU3RDNG4rSVIxfCpOdVtVSS5IeF5PNlRaNDhaTjZMfV1dSUReJCosZSNkUmVwc2hQeStjbVphMlhNbjgqIypCWXxPeCxCbDdCIjx4T0FXKXkwIkNuVzdmczdVd35id3VgTUY6''@;'; put 'put ''dHJzRzBOMExUb2kwIkZHZTNAMCM/ezI/WTArZyllNlZRZFo4VT5XTSh7RWgsbjA3NmVjaWlOOHhVUz9QOG9teyFST0c2eC9tWVklYFQxdnhiXipyWCJSRDdNKG01TlYlX3JjLEwveSN5QmVVeT1vYGt+M0ZlcCUpIitFM0ZPdGN4djVKZkRKLG84KkguTV85RVQwU3MoZkVtejlWQysiIUN6QSN0''@;'; put 'put ''UFhYOTthZUd9N2goITAyOj15PjNnLzs5MDFHSi9tMjJdYG8kdEV1Lks0P3ZmMCVSNkRjVis3Sm5qKF9rcV96Z0hie0JIUHp1Ki9GZCNWampGOHx8ISFVTTdEKW52TEw5QipeVVdBU3d2MzF2OFdYU3ZVbnhuNFRJOX0oSmldMk1nTWEhe3B7QTxoJCpWYnxNLCQ9OGFUYV5WWmB3TWM+QjBZOmch''@;'; put 'put ''fTpnWDVsWCgqVmFhKjV2d0x8amxDJWNKKHVKakhbZ0JbKHd8JixoWHFDRUNGfFFVN3FhWm0keHk9MVtkIitYJF0vRjJ7OVNzS2pEaFZkSU85YVclSTFGJWd0ans4RmswNmE0R05+RlJTOFpYfGJMLEt6QW03Um1peS9ydk5gYjdpQCRmWjg+KUFdQ3FvSFdfbmlJZSZWXXlRbTtvbkQ2QEE3K3pO''@;'; put 'put ''JWBkJHM9UEg6SDJ8fTswNCNhZWpUNlVoVi5JTXFvJDVAeE1lXklGWy9dVS4hZ2pCcm97VHZJJEdnOXlgIWBvIzYiLjYzZmQ6Olt3IlJNOlsudXxbZ3JFN0V5amNFLDp5Ult6TS5uI3MyNEREZWgjV1A7V2Vvbm9hTj0rIz1iOiZSbDxDOldiY0AhKjJ5d0JTeVBRejwmdU8lRXBDMCVQOEtMfnpK''@;'; put 'put ''fDIqRXZSdDl8amdEenRUJWAlVCNIVVM1IjA1QEZgd3dhZUUhLFs3THIqYkxmTntbbFUkfHMlRFtBXUBzNWd7ZFBtX1JiUndvT1A4Km1pRk48azk0NEx4U2ZwZndDamRPb3QmVSxXaXd8TVBpRTp8Olk7KGopQ31Yejp6YW5aTj8pST15MV0lK0osZWVFeXFmSGF6PVk6djwuQldiclpdO309OFZJ''@;'; put 'put ''SSNSIjlnSiYwaERIXSNxeWl3eTMwXXt8ZEBuY1oxI3JpSGxsbjVuRWNmO3EpT2BPWHlMQCIxclV+V0VLLD5fW0lBS0tKPFJVPU9ydnZxa1tYUCR9LmVVeVhORFVxezY/YVkqP3U5dlFtW213RG9OTkBefD9AYz5OclE3QXhvd21HRVIsdygkPD5EdFpVaEpNN0QrRiRHKVdofl9eWVEwKmR2WmYr''@;'; put 'put ''W3N6bFhdclpDSz5oZ0RwIyQiRUs+S2xKSlBAdyNKenlWM0Z7dzNbL3hGVCRvMCowSDx5eWIzdiJRI14jZz11RTsufDdKVDxZT11BJFcvcmB8T0pwQDJxVG9yb1dwKSs2d21HUUZIWWgkNz1oOkk+OHVse3Z1c3tWLyR0NX48Q2U6MmR2Vno8UUdIRmg4S1d7SGxSKTxLTkBRXi9WUCR6Nm8iWkRw''@;'; put 'put ''YWU2WTF5e1VdQjNiQFFxbmB3akE0YkZZK21lLzlWd19YKStgcTwkJHkidjg2NTJIMEhEQkgsPjx4b3RJfjhMcGtodDFTX2hpMUwofFBUcC5aR2cqWj4+bHNAWHNybWxJQ1pDTlBQZTJ0P1pZWl1kMTk0P1tvWEJ1JjhNJVdvOF1GSG92N2c+eT93dU5eND5WcE92WVRbXyJBTVRNdTxWZD9bdTdS''@;'; put 'put ''OENNdnNfJio+JURYMUc6P3xVfHw+bGdOcmpHQkMzIlt2RXh9aDIsS0JWW11yZSt0VzA6OWk1emo0S0B5TllKbCFARC4qcmpxLmg9YUVKWEhNdzUodyZgPjlmKC9OZkVMK09jek5AN0g5QEMlSy5OZDhDUUdXKEIuaT5vZkg5V15YSVYiPDE6Wk57UXQkMFpuYSRBIkxFMiNRcjluRXNtVFt2InZO''@;'; put 'put ''by4udysxKDcxd3dxMl0oLEtKdiZ1PDdgTm1FYU1nOEopWSJnYjZmLDBYMlhtNUsseUBVcWhjWld+Wj95Ml1xVTheRVQ1UEA+YCxUSDEvN2owRm9oImsjOih6dF9OYXhUKDNzWStNWnZaTDMxQHcyJlY7Pl5JO0lKXXViSDw3SF8qW1RLSm10TXAzTyhNZ2NQeyJ+PitKblYhTUxuZEdleUJoJkRv''@;'; put 'put ''Zztealh8eGt9djRCQX4jX2lZJXhiVzkyNUBXQTlwUSlvQmt2Z1Isa2YmeyFaKFtzekNYIm5IUm4sO1ltb2QrazQrZCxucXh4Zn52YUlINmEwWnw1U1k3MzJzZjpCNTJNRGlLQCpYZCp2NGAlZmxUdUtQKFB6Si9jWXZOa31IdzxhWm5WPjE7ZWwuTkZUczcjTzRZa3FbPDk3Wm43T309QXtJVSsr''@;'; put 'put ''UHpnXz9raDxzKTtyME8iZEE9KjRwVWlScis8JCJiQno6PHxQeGB0YHl9Zm9SampnKkNhQmoudUJ1THsmW1kqemE1L2p7LE9id3lCYi8xa04lMDYpND5sMFRvSFtTKDQ0TyNnXmgxPVskRDpaR0F8bEspJnUjSS9VPjByKWlXO35ARzRaPnNsZFdZZjkhTShIWSFVT0V7QmZrTD9BQz1JX0B+KyVM''@;'; put 'put ''Ki5WdC9CUGs0a2EvOVI3WSZORTJoO0s/eSh8OntNYi9da3N3Ujg9QGIrWEQqVW44LGZ9cm95T09RWjlFY3pFOzAkTSU1KDRNY3VkZEJaSHI0S3I6TkxBfj5fbFZXandCfD1JfnFxYDojSGgmfXprcGkhXnM1MixqOEopP0xSJTRXZi4zeVE9TEVgWmI3Q18zflcmX3wsRF4mYShtZzVSZW4kLjo0''@;'; put 'put ''XW5gU1A1eGAxeyskSXA9RT5ObXRfNEp1ayU6fE1XK1V6KHxXPkF8elA/QHFsP1ZxRTI+P1tLQ0lLc1I9KDxRb2JdPjN0eW9yXSYqTXhNcUUzfWZpTHMudzhDaEQwWXovZ1RoU0JHfTZPOFcqXi99WFkoKjdvO01iRFA9X0BYQyI/cldnPS5QNz1wU109WE05PyQiQ1ttNWdkIyNWOXZrSndOKyFF''@;'; put 'put ''KS9lMjpORD46dk5XZ2YubnopS0s8YyVlcWcraHp2bis1UUojWkdDOzRScHtmdTslUmJbYGtxc2wwbmF2MHo9RlA/PFN7P1kuK2E+UkQxYVl3dip4WFVeVngyKUVrJG5bfEYsM118ZFdjKjpkSGEuRzcqU1s1ektfQ1V4dFtDPGQ7JDFFI0thaFYiOyxfVG58cXV7Q0AoWm5XUTsyWypqSF1PPUNI''@;'; put 'put ''a30qMSsicCkqOm56QCF+JVpoT3R+QVQjXyJEXXBiWW8hZXtZKiNWTHQjXlpvV15xMDlWUy5yW342SGI5SkxDYVlsbS5aZCxFIysiOV8rTCN5L0JNcF99fV9tVS5MU2ZlP0hqejs8V280OlhOI1U2NWxlOiYiPGs2RGljTCZST3pjO0J9L0pJXjokdkN7Y2B9Xl4yY0IkJCtGWD9ddDNZZEFdWiZT''@;'; put 'put ''Y3M9JGRkaEJkITszR3tMSkUwMCVJNE5gQzBKNzFFfXhVcXtwWkwxWVV8eGJ0bElCZ2E/TlNlXUFLYTRxeGYwaiV7RUNEelBdVi9hWSMhKkg5ckJycDB4c0pmb0okNyFDMEI6TSZXcSJHNDhMVikmJUojeHc8Z0x8Jk19eGlFMm09cXg/Z0VNTWU8XiFPPEVRZWtnamw8SkZmIjtDOH1hT3Y/R3Rq''@;'; put 'put ''dU5ELHd7PzQmaXpUeEZ3OUlQUzRWT3pWUC4kNnRhcGFQZnB6ajcoTW5vLCkzYEB1QGNLQEdiUE9WNSg2bHxPdDBtTG9kNDFPU0wzREh0NzlWdWF4UkVRS2lNKyxdb1sybj5QU3RGK3VUP1slNy81fnpeP1o6KHErND0qTzFHWF1VdklHUnZHTlFIb3t9eXEqaXZHLEsveyU1cl8vK2FzQVBAZTMm''@;'; put 'put ''eysvN29PMi5ibVZsdGkjOHJ6VXB8N0V6fixfSXl7VSlYWiIsNDc2UX52QV5yOl5sXXtOaCJyPlVxX1NCWDkxTVREb1o6OSo7eWVfMDxeVWQzXklQaTZXVz4qJitoRFo3N0sofiI1MWZIaTpfLHxJYXtQXiYjWTg6LjthJl1zNUBMPTdGIVc9eV8peUFyZT1VSiUhNn1kd35YfjZsRkk0Xz9GJiUw''@;'; put 'put ''d14sZEgoLzpqZ3xiQTJkMy9GNl5RYClMJHEoakhzV285TiRASStYQnRSQWRxem1ob2M0bSZye34mNGg7S3FCIzQ7IVkiUW5vOEs4QlQhNSpIS1guKStkREczNXZCRHhkfEhzTiU2QkdzQ0JBK1padC40L3hhaElJRmFOSFY2Z35abWVANiJAZ3xMYWh4QmUjQXUjcm5NLnl8USpjRGQ+cD5qZzMm''@;'; put 'put ''PnQoay5DSndnaEAqRkJ2XyhQZyZXU1EuRE0vMXE9bUV1eF0sNW9+QEhNfXsxfUppMU5CNUxhe2NmOylVWF4vZXhabD0xaXZAV2tVbWRHKFhMeDZ5LGtBLn51LDVCKURuIyV9XXZfW2BuT1V3YmRyRS4oOExyKTFXU3FYJXBCMk1tLGB7NldXemx2MDYyXnk0aEkzP2l4Y0QpJiQ6Y0xhXSpyQmNF''@;'; put 'put ''emBXOFM0ans9UUttRk5ASnFtVUFPZ2NLe1RYKE45S2ZKMWxyMi9YbSJmVEEkOlszXy95QEghK3JZMztJR3lXekI/WH5Nekt6TUg4N3ZHWmI/d3Qsc3YhMH5lIU42W1BJeHBCN2QlfUlBUFRATllMZzJjYD8xYlpEW2RQMHhFLFdSaT4vZG1OLyx0ZEZINWNGY1lrWFpCP2llIyZxVHVmeCZzYUNr''@;'; put 'put ''cEBQTnQmWTBnPWNWcn1rPWVXckBEWW8zfl5MVEQ6VGgrak0hO3BdM0E8LEFgZjkyOzM5dndGVTVGJGRGUDlKTkZTUnE2aHZPcn5gRHZ+Wk1YW3t7Kjp9MSVoRWFtRz1oYT98dnc5aE59cyFOa1d+Rzl9VXRMdX5ARy89Oz9ob1U0QDJTKWIyT1doSkIvdUF7XVBAb0AqQndgY2QqZXI8QHwrPUdg''@;'; put 'put ''UGFLaHJGVnN1KStvU0NIdjJ1Jk97Inh6STJxTkk0cms9W2RMOmEjR0ddKn5CSyI9KnpCSj9GbC9BXnA+KyJTPnwqNk4qKUpPNWxQOHhscn0rNz9Ye05FaUZhfS47bU5mOWV+SVJwJChDRmp3PkpHOUE7cjNMcHJeLntORmRoS2IiXnMra20+XSY1VU0pPXtyUilLQD1eJDhaO1tgT2E5OHlyOU5A''@;'; put 'put ''dX5USFpLOTBQOX4uc2srbmQ1VixYcHJnRzUwd3pJYnQ3MnhbRzVyJWcybEhrUCt9fXAmMFVyOywuYyhJUTdCOSQkfjF+Om0rPXR0byo1Ykw7Z3lNOSgjanplM0E0SS8oRnFXdVk/XS5lNFk0cSJWQDltbEtKb2hDMWtZcD9ra1tadjNRYEpBMDJVWCNNWUFkP3pLP0c/KSE1bFtRRVtKa2Yqd25e''@;'; put 'put ''I2NIe3M8ZmRXS0ZAIipdIkxKOVs7SkIkIVFPKl5QenVWQG5Ld2xfbyh9ZTdKcWJSQjpKaiJRU2RnMmE4JUdURipVUDpTXXNeRkNfO2svd2dZRm4zKHxRcnBVRHlCKmJhZkh9Tk05anp+RUVdPkMoSTgldik+bWdpU2lWLn48WFpRbyx2R11hWmdhbktCel0zcHd8QiYzZyUzUUV9NVFzIkp5azBf''@;'; put 'put ''ZUB6clIsTUJHYnVoUzRJR1EzMSVQLjQ/WzlmVk86NDM+anVFOEdCcnpqWTt+NkgoIl49Slc/SXtDRUBFZEtXVkNiQ0ElOVJ0W3pBcU5vPmo3Vm1TUy8yODpWLDRTZ3ZCZCx1JEE3dX1hVEZyLF0jIXpCNUckP0FjNHgiWEMve2kmUko5YH58N31wQDs9ZSJYW0gxTV9KXyhOQ3soYWBNVntrRjZQ''@;'; put 'put ''QiNxNitmJXBMQmNqYjtTemslfXh7OywxXkdKRVNpfGNGLCkoIzVAU2ZyczNYImVjOUo6RENoR0VvWyR0UDxLVmVQYXFgWEojU3EyIik3YlpRImF5aCJDNCxSV2ZMTEFtdl9HNCNzLl5bT2ApeCpqJUwrPVtOWXxZdlFecjw8e3RndHkheGdfdHJTJTI2QmJEOkNmejhvIzljXjBGN3I7QnFsQnJs''@;'; put 'put ''ejZVRm9+Nns+U0pZckh1N3EsYjZ8PUNYTE5AWH1iJFVNX3s9TUJfdWNPJSNrOlM7ZixHJXVyKSh0aXdCJS8/O0xwUmU2Wi9+WVd0UlchMGppdFghOEpZP31yJUE/Q01sRzpPI21eWTRCRjMpUDxLQDdEcyR9TDdBSUh1WkN2Vy45NCYrbms1UXZeKFF9dzdMS3F+UGtePHV6YmlAQ0lffFl6ZCs0''@;'; put 'put ''amFjT01vdmx+P1o9XnozQDQsL0EpKyMibzg0M1p6aXUsem17Wj1lMDRES3diP0o9NW5rOnAwMkA3KkhpUmNGQ1UpbiM4c0hAQXZJeS8ke1AlL2VIXTQ4e2JaQXYwTX5tOVhEd1tHaUMkP19KLG97MilTZlpbY2lTe3ZUWHBsd11dR1tWM3slVTplQzN8SGgxaWN3OV9RNEEiPVA7Mm91eH0jPyIj''@;'; put 'put ''a31WNmBrIUoua1pQbTY6ZWxyPihSel5eSyJWPmVhSnc3RypoU2cuektqM2dGfUtiJGVrYSUpLmkhfHZfensuK2wlZEZuSTsmNDZrSkgpbSIhWEJLR1N2MV9mWlt4Y2NgYGRSWCpEPXpud3skez9HXVFQfElUVSQvcEo2WSU+KFkoTCJzMi47QEkxTXl5L3R0c2V+QEN3TmNdaXI7W1hBSTRYI1Ng''@;'; put 'put ''VEM5aXU6SzhIJTpBSFZ0d0JANSM5dFBTUW1oI2s0WkcoeWJvYWxgZUhrXnZzJTAzTlhYKCU9MlRjXWRTaSh0N3JgaHE5K3J0R0VjKC9nNW0pJSEjRjo9OG4yTlRxblhgN3hIR2JAYlErQkdJRmxlJm1MXkRpXTpBal9MZmRlcEI9PUF5UHxFaFdsZ2BgPElAez13fnFNcjFafl4pS2VPfih2SU5d''@;'; put 'put ''R2hHPGdbOyomK3pASEJ2PzVNPjcyRVIkRi87UDlpS0V1aU9AXT1SdUJfVD1kUnhOYlF2N3tWYz1mX1hASnNuVFFCdU08Y1VwN1pPZz96YG4uQiNQZXYjKT5VMmcjS1BFcGdoMl0rPXBVe2xMYXs2fXxiUkd1Ok1+RFdSKWRmZTtOWjhQMFApJmA/fjYjaiM0RTt7WFo5OD9nYmcoVz0/UW1jKUNA''@;'; put 'put ''JHpMfHlXWDRQfCt+bW5bSjdFVGs9PG5RUW5haGpZT3BdKT1ocTJsb0gqSDZATT1dTl0ubVg9T1QzcVszai4rWHYlSkxXcl9MSjpfMHNpV2d3N1RMQ35XVDs2QmsvIUZDVjtEc0k0JkNhan4rY2FocE1GNXN3IVQhbHdAKyVNQD91dngxSWd2KzpdPl1AfjdJXjMmUWlHKXxlQ14/RyEyQHs9ZiIu''@;'; put 'put ''SiNyYDNwZSFxfS53Q24rQ21MaVYuUztqUypAVm82aFQheTVSRmVxcUtKV3Jua3V+P2RNRzNjcl8uUyo8OmkzOiY2dyYzUEBZMyl0WmJnbDhSMmtLRE0/O0tnYEVXTjtLdGguVEJCKWQ3fFszX01yQkN6b2xGKEJiKzU2X0E9eFg3O2BDd0lkLEpYIllZL0F1Lmh7JFclOVhWeGAwIkNrJDJSd3sm''@;'; put 'put ''amdWTmgjZz1tQitDKCJ2WTFoSD1malQ6XjtyImtLcm4/WGdUeHxITmNrJGwyX1QwUGojUGpyLkVyMVdHemM0LHw8PFtbK01USEd1TF9iJm9uVzN6ckA4ZDhuaVBpeGteT28lSjNSempIYmQvYEhNTHZ3aGZoMDA0aEV9MktuMVk1ODNwMXBAMWZtR3VDYlBxTmp6PGRLczZRSE4uQGBgPkZYfjl9''@;'; put 'put ''QDs4IllfdSEhcCtSaC5bdi5dV3IuPVp9MWJxZkUxRTthYDwqVFhiYTlkalhrTFNiVnt1bV0kU2s7fCJyQCxyU20pPkYoOF5pYj9hJUxkLy9OP1Z3IUY7ZUdoY0h0SyN8ezg1LEVCV1NbVn18Vml5YEpYUiRLTmlLI3xFOiRdb1sqeSpuWnhBYVhaRm18dURYRShoZktPMUxmJHh1SUh6KyQ7QWgr''@;'; put 'put ''dSMvQVA3VntSaiZhUTEoWl5eTzVnI3BpQDZhKUoxXjJ4QmlweT4/VUQyNCxlflpPOUElXzJkUHQzbGI8NTAvZjVUc2AhOFM+OiJJPjVAI2ZCI0k4b2c9NjgpVzJPfmpZTjRUZm44RUY0JUt2YFJkakAwYmhbI2UkVFJgdFQ6WHIwV1tWbzNMZjw/YHoiW1ooVUgrKj9pNEVRKH5FJVI3azosdFtF''@;'; put 'put ''ImNjS2pmbklNVDlzQ1RWajBTOXI3eGtrUWlSO2Ihfk8xPEopSHUxQ2IyYWhqR0w5RFRUXVVvS3g4ZytPZFVRbWBKZiQqcXRwX2NXJkZ6UG8vO05INmN0MGdTalghZUA1VnQ2TDB5ajhVe2tuMFVncHZSO34mZ3ZEe0hrRT93RXFuM3gvYTJSJn1oZ0d3Xzl9JUgwIXRvVzl+YT9+L10zdHF8X2Yi''@;'; put 'put ''ISs5OzI3aE9NKyxoekN1XSEkV181a1l7aXo9YzZSd2VNOFY6VFAoO1l+KT8sOCFdNlVCOn1EY3RfblNNRkFuJU5iaEtUZCwkNkEmUE0iXURDbkZGMDJ+dStYbGp0JHRHa284SDlvJXMicC5RUDcwfiVkelk6OHcpRXliUGZ3VGhfOWtvUj8wWVtPa25vVihrSHN+Py8qX15GIjQpbnFybitKNCtO''@;'; put 'put ''VV9kbiFec0kvQH0lZl4qIXI5NGxCZTxMODZPMj8qRyRgQCpbIXgjdF5dclJVX2A/KndEW2NLSG1JYj5NP0RZLmdydXFifGteKVlWcWYoIkRUK1dMZXlHRWgzaWIpbU9iaU19XzwxXnVQeDJsOV1jWzpbPjMuU3ROdVReMis2ciN2SDFOTGpTN2p+VUM5Sz8+WW0uVVY1XyE3PSRkLyN1aVArZjQ0''@;'; put 'put ''TnR1N3tGc25xWmkjaSQvSCRsfEZ5RnRCcDVyLEZlOSM6UGleQ0AwQlQhZHNGYV5fLzY9RjhyS2Q6T24jfEBRM2JXRnswXyNGc3VBcmxwZEw7MUksejo9XXtgJGp8VV1OIVFkWUx7IWAhbiY7Wz1RUkkzR3FITkQ3Q2tba3YmVlB0TnY3P01UZFdaPiY5I3l3TW96QCpnQ2o+Ui8hOXleJGhnY055''@;'; put 'put ''ZTAzaChoInBNUjREJiJmQlY/XkBgRkVjJVQxRXEsPEl1fi9vVjcrSVNrfXF5LD44UHpdLzRyKkg1ImhGfDQhKD5tMG82SmQrYUU3WV9jXjorQEttOWZGRStET1VQdERLMFRFdCFEMlU0d1ByZmdJOFYlVnF5Q0E8M1UraWpYJSVwemQ6TiM/eyJ1ZFJVOzBGTEtyZlRjZHJeU35OYEtXITZvS21u''@;'; put 'put ''NE5ySGgxJUlbKksoWl9bPD8ibH5WT017YVs3ZEVTSkxILCRQQHxocF5sOVVePXtBdSVYSyJFaDRjdi5DXSFSKCF0SW10Wik4andNV0J0QTkxbFk4N1JdQSVpfXVlOVp4cU5edkVqVTs+SD12XzIrKGhyRGZIQ054I3AsZW4qS14hIUB9UjduUDhhSSh5fkR+aT5HXUVeO1A0U1lpcCJqOHY0elpE''@;'; put 'put ''K0twbjgxWzElUjhgMU4oeCN4bjQxWzV3UFd5Omg9Ij5ObWhvKjhDYntSMHp+PEQyVng7MXt0NWJaTSokZkNZZjNIIWopP29tfFRqe0EqQCExeiFsQj8/ekVINVtVbl1HOG4iYEI4USpKd3hhUlVrc19vYEJEezVTamV8KX1yZDlia29+NlNdSXlqVEhYbUdlSyJSTSxZWl5SbnllTEl9LjFLMTxI''@;'; put 'put ''SyJ1cywkcSpyVyh5dWkoeE9zOHgsTmhySm9aZl9qSihgOVRFOyFMNnQ4QkJJZnAyR3F4VDFBX205JGpEO3UrRGBdUls7XVgzZ0pCN2hnNykrPktgU254SHpaPEMhIWU7RUJjMEJbKUkvN0QybiRLNDxnMGo5WEZTMU1nY2YvQC54e3ZabkBSPihAKGpkOHUhQUUsMDwrSiRuUU1hSiQ/empVOXRI''@;'; put 'put ''ZHJFM3taS0phcyRtYmw3Oiw0QV5TPSpMWSR5R0ptRChUclRnbFpiYyFKRU5ONCZNQXtaXzhlOiEyfnlRfVl6S1VRMVpCMiVKIXdHJn5vZD9PTXQ+Mi50IUFafCVAXXBXO2tPcXdjbGNLO3N4NyxKe2dFQDdoUjNCT3c5OzIpNk9RKm9be0E2KHclVXg0dWo5azprTmRyO0tnPSNuMl9pfjQua0FJ''@;'; put 'put ''akd9UUJpMWskT3txUVlPL2w4dnlNPStPSmhAV2BkRiI4VEc1bnpuJjMkTyFyZSRbbztZOntgNHBJSXRWUi5zKz9idyYlNnpJaUtbfFFeL1dYWVoxc0NORWBUKXQhU1A4OEdPKmF7MSxbNUpKUmdROGc8ZW4hS09xb1FGaC5iUmlnOHk5Sn4qTUQ4ZX4rVnEqZXgsbTUoKEovPmtZJUlde2NYRVlx''@;'; put 'put ''e28/PDhtZ34mWndDa0NbVigvJjN4VilRV1ZFTlZ6PkdVSGljTD0xL2EmWHpGSlFROzYyTmZjZylLNytQMHUzR2hYPlEkSyMsYVY0JC9IR3UsOyYqRWI2bnJWYnE8NH1YV2F8P2ZAQFEhJTx6WkksNkMwSGJaRGtsS3pwT2RoQlVtRlIpSEM9SGsrOkNMJjdXKCo/WGdkMHM4aDc5VVVWKFgzYXtN''@;'; put 'put ''PFNEJjtgTGhyM0hWIjxnSF5kO3Zwd2JHViM8cWBsfkdraHx6IyRHPm1KQ2NGM2l9bnFJQG9HXW5FJk80e0N4LzZjUVBjSVchdmFKfGw8PF0kXnFIdjxmL1c5Xm0ofCplUCJoa11IKXlsPGUhWl1DZjdUOUNpbnBNRFV7U1VRMFVjJU43ZSlOe1A+Rmh7PjcmYmswOGBucChRKj0zfjRoVm0jTiZX''@;'; put 'put ''NXpCMFhmYUs0fWtySXo+NHg/enJ3KT03IVF5e34xazFyUlV3SEZOK0F2a1B2U0dbI2FBMyNhd3dCWWExPlZVSEk/V142YXYqWVhAb31DbTF9V344OlR8bFAxODlwZXdlejpUdWRnMWhiLGpJSV1FRUAyWD4hekFnJEJgQnRzclIjRFR3KXIuOl4vVlBAXlM0ZDhXKjYhRjohWFJKZmhAYlshRi9A''@;'; put 'put ''VD88RSR+a314dFQvISt2JmR6PGxSXVpxYHBNaXNJRihmcWtPPT9HVHJFT0deTjB2OEdOJi9VPFo6RSleMlgzPXlFIUo2ZDhKQmk4WXE3QlAmVUB8dmlASzB+WTlFKVN4WzJLYyxQJkhLfjFlUC4xfkpgZEhvSndicTAmWXkmWHJYP2wuLz1uL35RaWw1K2hLQCR0fXsobXJZJmY2Vm0qQF09b29j''@;'; put 'put ''IjY2Yz0ibkA1M2FAamNzbn47YnlLN0opVn1VQCZ5NiJhcCRpS0kleH5XfVcpZyNjYEArXl9zaisvclBGT1E2LzVUQjE4YmJVaWlGSSJ5byN9aCJ8Pl9LOClMblpRNzNyfFp2TF5nXVVnXkFYVD5TT147ZCpQfDxeNjo+RVMhL1JHIk04b1g3XSJDdWNpPTUvVWV3cXVtRnQhXj5wSEtgSkhXSj1L''@;'; put 'put ''fmtTODF8Ykw+LFJkLmIwMUNoaltpLjVXTCJGeUV1PSZeRiljKzZTVzB+fVQ9TFMwayV9TzpOMyRQRU08MD1dOnkjMCVVckw4NU0sI1ZTV2B6L3BgYE99flgzQ3lTIXdBLj9zUS4jZHYweip7MWA/ZTlzKSZpNld8aDFmbHRxMkluZENzNTF+TUs3YWtLQ3JCZCNWWD15LE8xRCpwKGUmPCVZSSMu''@;'; put 'put ''Ojx7W0Q5TmkhPFBtTl5qNytWT1hFI2ZZM2F0OUBubyl9PEYxWDt1Rj5fUVE7LiRxdSJdan16ISRMczBVT2VVK2UpVm89bkJwN3s8MSUiUTYlfD0lMzVPdXw3IjwvfjZnJDl0IXl1PFR0MUl6aXJXS0RjTUs3e19ZJEJtek5zMkguJnJTVyY0UnNeJkNGO35nOUszZSlycmVOXTJuZ2Y+SW5kNkZk''@;'; put 'put ''V0ZNIkNPN3pBMyFZKEs7fE1TfSxBaHlpeEp2Pj07bGduVXQ9OitrPkJscSlQOzRZSV05S3h4d3deM25jM2R6KHQ+Y3NfdWt8LmBMM24mNHxpI1hBNHt+e007VlBSc0RbYj56P0U6dV9YWjZIXkdjQ1VwRmszMHpsezI0WWpjITMqJWw2bnN3JER8d2JMKDwhc3BtRDc+akE5ckh8M2F0O1BuMi9v''@;'; put 'put ''bWM7QDk3RHh+eypiI2p7NGImXTdIOFUwVV9pWjVCb3UzLyJKY3lFdyRVb21nRTsyYnVwd0FwczAmaGImUXs7UEVTM3JfWjJKPFM+fDVNIjpjIT8lQzJkPVFTLFUoSVp6JGAjYmRZazcyWXE4fF9oPmx4ITpmcSJjPX5xRk9YWzxbfkNUPHNOPkkyenZ0SG5zImZwVTo5ai5aVHxKeGo8NXBeOHhK''@;'; put 'put ''ZGUqYEx1UyJNMDdEL0VCIWJRUFhsO0hab2RTeDo/XiNoNWxAKUspRmIzWXkvQ018Y1czMGtYQDdhJTYsPFVNZ3hqQ1dJfSVpUCNNLFguXTE4QXhNOGdCSyhFaVh3T3IyT0NpQERKaENmJV5rdXA4O2FpS1hOfHlnW14uaSg5TU58enFpI2lEKkBOL0xmUmteTFAyNGh3KWEufl5YeWMwazZRYlBU''@;'; put 'put ''KyNaYiRAaSZvajJTc2hqQ0FpNCtrWDJdc3lhUzB9V3QwOyM7KTRFciQzV2padCRLVDkxSD8+N0pzem5UbmJLMjhIK3Q7TlV9azt6TjMiYW4pXXlOcTJpaWhKWkAyKUpWYVRYRGJ4Rit4VVlrVExVXiRBViomcG54fXo9VWI5fHxbOn0lbnwibSE4e2w8KXY9LFgmaF1PVk4scUBoeUVALlE+Zy9s''@;'; put 'put ''d3ZPJD9ROWM5MzE6NEdXUkUvUzBxSG1mdGRvSF9xNXk+PV5lODdiIUhyYG86cDE/OExUPU1fU1ssfSYubFJRUnRPTl84cC42fk1yOEwxLFJbYiovXn5XNVMoN1NrSzdTRyE0PXJxVy4zOyV5Sis1eHRyNml3VCN1aFl9OUpzYXhNZ1Q+Uk5CP1VsKmU7X255eyk0WSMsNlo2dkZrKC9zLzxDOyZz''@;'; put 'put ''bnM7QGhNPjRPNy5JWGNZL1dnVDA1RV9jNXZuaGI0Q1U6O2NQPHFJPTxrXTcpViVZaHhaNHhzLHt0TXFyVTpuNFNNOilRaiNUUlJSXiRjPC9gPnNAbHwhJFUkT1Z9Nl5qOjNZfUd0dCgyYS9wYmxAO054Tkwrc0s1d1cuO11DVVkuKXwmLHNoUDgvRD0iS3drPkRoOD9SMix7MW8zRXc6aT9HL2VC''@;'; put 'put ''Q0RBVksoQGFpZGtAbTc3bjNHKFQiR2hlOyNJeE9rcDBUQERgPXpteUdsU2FlPFBbVjNWRl8vLiNCLlIzWkBWTSNkSGJ0cSIxJWkrQHJkQmJHO3t6WlgmcUYvY1pjKD02OixAbz5VfEZEPD1EYV1efitvPzpmPXp8a2s2ejYrMmFCLyhXO25jODwzcjVKWjs8dkZEXjhGTTNIJC5neF14N0h5d0oi''@;'; put 'put ''NU93ZikyYkoyaS4zcGlQa09TJmNtZDgyQVV4LyFSPjd+VStOUmdKa3BCNkxQQlVaTGA0KzUzRng1Qnd2LDpCOFZ1XndpMVBdXXtpOyZSJGAlM1QiezdhN3Y4KGFsMFJXWXd2USghR3xeUDkxVGRUZ0thSTRddFQpRFA2W0tnaDUhYnAhU1dad2E5KGladHEhZXpKe1YzIVk/QHwmdlU2U3opVjM2''@;'; put 'put ''Nk90b3xPJlY/Y18zWW9udTRhTHpxJTR0R3tHTXczdjojJS86dT14QkhUbCxvKEZGcn1jeCZ3M3liPmwjSnB4XkFQb3ojbnh0LH5MQFZncldROWhqK2M3RVtUTXVkJEVhZWB2SXFZOzI2JXN9WSFCeHQ5alFkI3A5cFVEL3UhOG0vRj1ZUzFnQ1lTLl0xNCR0Rzhde2d+bzBWMDpuWzI3LDF0VWI6''@;'; put 'put ''ZEM5elh8Sz9STHFiNWYrZj5aaGAoe1I4MCZ7OjR1allgd3ElemooNWFTLjZGVGtgWnlvdXxoYyp2SGhFbkl4PlEhdjZJNihnS01+cnp4dnlYbUg4XlkvVzFbZGpSXltZZWRyfmx+N3xHU0FQYU59OEsqZW08KyRic1NtTWNuJXU3TjxDPmJKN2IpWjZbVkdQK21wKDhlOXhvNyJ1M2gmYyZtYjVU''@;'; put 'put ''ZTROK3RkNkVHT149MnF4VG48Lzdgdy52LGxzRG5xSz9kSWM1c2h3Q2FyX3shSFEvP301OyNuKWslJjgoWkBVWCkycSkmW3pnUFBxUns8Kkg3enhmNFRkIWFgYl9XWy5+bkEyZjU0QHM/fTczOWE2TE9iJDU6b1pyNE9OWCpVJD8ydCYzTTVWY35xYVRnbTlqVnVaaUs6WH5hVj5jO01CX3gxV1g4''@;'; put 'put ''LHJtMk4mW29DUHsoMGRSd3Yxe2k0bnxSI2UycW57PDsiY1MmXX5wenVHTEg6bmBDIUU+PXw0YzJ3dy42Ujc4Ol4vZnt3UitediRKYHhtI1ZYUTRnVUpUNlZ0Vm5WYWcyUitKXS9gNy9rLCpZaGglTGxHSTV6LHoyeCltdWJPT2RhTnZmTEV0fUR0fnk1RDpxcHV6ZWZvQGBMdXxWSCxsbz8qVGow''@;'; put 'put ''IWNpIjFIMUFqSyEyTH5QUkIyLEUvP0RgYls7V3hPXzFOfkN8KC4yKmdEPyRJbyRbaHFGMF1yaSRIaVZPfio/V2BXYn47UipXensjej43XjdWNFdFSzB9VWJVWWZub1pHaVlJIzR3KW1NQFM1M0JfZUZ4YGRgK2o4dlNvLlNJcDhablNGZyVCMUVlWnJjK0BkN3QwWzQ3fHFzbmxYK1l7XUEpOVBA''@;'; put 'put ''VGBZT2N6JmVya0h0fX55UFl2aU9gYTJtTS5EXik3anh7ZmlaO05hfGtET1ZwKjJscGIrPWA4VE5HT01VKjxZZ0RHSn1Qc18yNGF2W0VJIk5HKTReaihne24wVnQ0bXVGW3xQK1I7IyF0TltkNlZQZ1VhaF1aUGtnPmEsYTgjMV1ie2U2djI8VT8ubEVfVjY9Sz1nJG9uNVo6cGE/L3F4MT1CMFlV''@;'; put 'put ''WXE5UCRDSHtDMlh4KCliNHlOKiQ2a3I0SUFoe3AmIU19WlVyVFtTfjEuOkdKKig2USlSJTs9ZkZRe05ZKVJKX1h8OXY3eWA+YldSQFpvbW9ofWs1RmdtVl5VRTkoPkNCSnNnUmNdTFUlOkImX0h0KlJYUVlwPXM5U1A7WV59M2NKIlh1XjJJOmR4I3tdLk93aFd5VnZfQDw9O2N+LFhYdGxUU2tU''@;'; put 'put ''JXJNND5WL2dQaWN6TWVyfTYubTByXW54VnkxLEZvIVtZNChNOkJeckEzbk15djlnNCIxUjQoeWUpa0goZjl9SD0+SGxFUFlUQnVAeU0+JEZLVy4ucUEvW0xvTi8jZiVUTnNIZGxdQC5qejZXU0ZRJnslVTZxYklJRSMvcldZPjRGSDksM1I2OXVOUnFnUDQvPXZFR1o1eFJ4dSRsWURER25XNExk''@;'; put 'put ''YWN6Vm4hOFokLCo6PSVUQSFDKmxfcWhiQ3prdlsqNDRUMVcmV3xQSWxQYFNXXSl5ZTk/fipSMHxKe18oYThTZy4yX0Y2ZlgpfE1URkRLL3haNjRFXm5eZENDP0dsNUcmRTFPT2pPVz9eY2ghRCY5PGtZZikjK2BDcWFTP0RmRk9vME0vT3ZwWX1RYTg1MVg1MlVXSn5DaWBCNVt0aF5dRCpPNjgs''@;'; put 'put ''OyZBWihUXWE9OEkyR0s+YGAsd0dYWVlFTUp6TjUxWy4uTjppNzF6PyE3dSNPRl55NUJ2bW4xZnZia009PDFGUkdCdC97OFBTPHUiaHxxUW8sLzl3LkZFaVV7T2FmOkxnRCQhR3JiRzAvcU1GbXYlSz50dHNjKiVAVEt9TWp5VTNfNkhAblM+RGJgeXp+SjhNIUJTZS5xOmg+c2hDPWxiJXJ0e3c+''@;'; put 'put ''UElfNEF2ckxIezVOQnBPfUBhfXJsY2ZUc299OjpRKCs6WkkuaCRFXWsyZkBHQVpiT2d3KDA5NldjS0xlSjF3OylTSXBNWXZhZCI8ZyxibnRjdHRJUi9WLyUuPE0je2U1Nn1zRGk4Kld0SjtZYlg3aUVSbkE/dSVyVzFKWTZLMissRVpzYSkvYT57JXMhNGYobEQ1bHh+eVRVOW07aD82XlJjVF18''@;'; put 'put ''VDAvImo5VVY9UG4rOzI6Jj9nb25XPD1NRXxJdWhHWjQ2LGoyenVQb1Embko+Z1dKbFdDI3hZRlh4TC5DKFExQkFqUVJQZ1Eyc29RW2cleVBXbF4lZkkkW0EyPHY1fGs9WmwmYkBMTUt6PyNhMHNQOC4xRDJMdFopfCMmbDNTLDtCJmo1XV8/dj1fcCMzXlZXcXt+JWFKS1ZaSUd1LHhpdDlhSU5k''@;'; put 'put ''NnguaTF8cDUmTkZJezAhdDNpfio7LGhYMGZAWkl6YWVDN2F7IX1mfmd8KGw2VE5kS1pkXTpTIzlvRSp1ZElEQzIhY3oxYGhmXzAsUl1fcEpYaVFgRUs2dzdXWFFpeFImZT53XjN+ZTxUXklkfHdEYXtbVmpJLFJecl87fmlSIVUxO1Y0WSY7KXxXX2lFX1lXVDN9UTE1SXJuIUI5cHMpfWRsQ3tl''@;'; put 'put ''SDB6WX5GVHF4TT0mOWxgKU5xT04jSmRbPjshb25vXyJsclF+Nj5uKmJtSX5qajJ5dl5lQzt5cCwyXT80bzc5aDBnXiUvOXFfRyI/c3RWPjJIKC96fERRSE95N3Ixd2lvTDUhMkpzfUQ/ZWZMUVBDRllfNjE5Sl40Yz5BLEhWN2tOcXJVQ0JSJiZLfmdPdSV2aj9SOnBWZHFTI0xKXzdtYklWI209''@;'; put 'put ''Z0E7S3thb108d147JDEubGdSek4zMTNsK2xkJD99TX5LXzVNTlhAOW5+WXtham5+Zixga3Jrdk9rJXpmP0REb20vZGBkO0g8fXhFRz1lJXhJLntSN1EpNztZQn1ILGowWG58XUVuSGZadFo+TGZRO3JtdTEqNVZRbixLPjspTFB4VHh2S0MmdmVpckd1d2FhL2QiKFlRelt6SVBafVZvS3c4L2hd''@;'; put 'put ''QnE4QD8wfGkobWB+dTpgOTFRdmVfd2ZsdnhjdWlqOX5MNyUvQFA+ZH0jaylyeDEqe0JmYVUxKSgkYWQlI3V6JkZkOGVhMmQqOF9QSzMyfiM1S0k4VD02ZSZyMjljKkYycjB7UGB3QiorQilPd0QjY2R2WztGak4sRWh5IXAmfH06eDJdOHwoIUE4UyJDZVU5cyxxPWVCfWN3Nj9EdDdoUEJlJGdB''@;'; put 'put ''ZD0uXzApNjRaKiwlZmFmRndnYjBgbGxtRHQlVGomSXY0NDVPVUMqQn5CWExxUmlnT34hWnlwamg+Il0hdTY8NGEvJnx1P1RGVUFJQioiN0xqVUA6bDlqdlVWbHpxTlhnaUVMMm98QlU0Y3Q4MU8yMjEpU2pnSC4xSndjVjhAOE5LKipTWTAuOi9FbixWMlkyU146KVcvQWE0KHZHKjg5RCQ1KHUz''@;'; put 'put ''MVs2SDhOI0woQDpQcStwOUAqeTlxdDM4JENTaG4/RztyVTN9OT0mPHFjYl4rWjZEKXxBMzFiTFsyJURJVjZpWSlGS2wrOURuZSk+bi9DTHIhazoiaG9AIkd7YGZUS1B1I09QRzFMSypJeiJvOmUwYkkpMz5qUXVVNko1MChCYGw3cnVYYkkoVGk+fC45L0dCUks4Z3h0OntlZUF9LnN5PXs0W195''@;'; put 'put ''YVcvPm5dKXwlPXBJIU90XUI3ZD45alNyXTwuMCh8LmY9NWVfJjRsYCs2Y2VBKlF1QnFTOG8/c3IlIy9GOmRqal81JjNHXWh0JDdRYDFAT091NyVea29Tdix9KjQ3VUM+Pn04PVh5VTQ+LGQ6PT5FeDBdQTJ1cCpHd2M4PTxJViUkWmRmWlBALHh4UGBEaT5gNUZWUUhjYkNpWCNiQzYpZSxfaz96''@;'; put 'put ''ciREVkhdXTBYK3tMK2ldMV55OSl2VmJjXSl9clVNRl55bnwuRDQvfFZ+Qzh4a3FhdH05YiYsRCRLclU2Kz82YSE6RTN0MEVDYVRsZlJ0MGtJO144NFBOTGBCbmBIO3k5R0R+ISs2Z3t5NCx7SUJtYz1OMCIlS2dKUVQyOzQ4LmBZKVJpbGpRMiJsPFtXPjowMU18XT12bGU4L3wpK2suanpfT3tA''@;'; put 'put ''RDNfS2JIe3gsbXF4QTh0QkMxLCV9WSxuTDNlUzRyJCRXQ1VGPDByeVUjXT1yO2BQRkxPaDp6NVJDPSxRTztHPWYsZGJqXXVednJrKVF5REoqUVdRTE4kMX48XUhHNm8+MEZzfCJXLyM5TU5GMkBUSVlgKjROXWU4WHE8ZXhGc0QqN3kzVn0+OixGaXJpeiEoTzE/UWcwRnF5Oj02OWxkU14mOEBv''@;'; put 'put ''VkVzMWM0PDZ9fTV1c2VFTVouPD0sKnNvU0laekIifnRfTCQ7YHglOGUrRD9RTjh9SX11PkZlQjZmQmYla25AWHw8TEhaZDtQaStUOmBMRH4pdkx8cH5sWzZEQkkxcyQ1ZElSVl1MUV1CWiovfHQpT09wVWozflN5OHpDV2M8eGs4MEZdfTNsV0ZkdkdYQ0FsUWojOD1LWCJAYGBiNlJZdSxlVEdL''@;'; put 'put ''OFZJNVl9PkwzO1lVMWZAeCosVzg2eTw4Z1IlKCRyU3BlWzFmT18mTUBKISFZUSEmeU5TZG9yajU+YmkzOl1DNkN+byN3WDFvYj5DP0p4RCE1dUMmVTkoNndZQEdaTSwhd1IwLHs7Yzhje0JEKy4wYHlUVXM3diJGLG94RUUxSjc8JGpyPDFsfm5tU0tFT2xuN2kjIXZbQ1ZFK3heKTJQdiUsLzJE''@;'; put 'put ''R3lRVSlwLEx3M1VCUEl7MkVzfDhINGteaEdDU002ZDVKaiR8fDxIUnx8QDI+cF4vPUd1MC5SYjVya20ucDVhNCpUU3FxQVRLWGksWWh+eylENHEoZTA6bWhjNlgsQXtLUltSL2BNP31uSHlIWkY1JDAzMTBkKFEpOjwsaU5BYSNpO14pRSY5I21mfnddI10sOChAZSlZd09wfDFKaj9YfW47X1lZ''@;'; put 'put ''YXFVWUA1JDohTCp5MzklVV4rLnteUX5iUmIxUnJxZipxTmxPZEtvP2xnUmYoNyNyZVZJZVB9OFs/YiE7ZSF3dUM2VGAlTyhKTjdENldaelN5RTt6Kz5wLGRmYX0xZS8yUiE0aUdkcE9ocEU6Kz15OyQvKzJxd2p2S0dfbUsyMF9rIlEmMUlhVmZDe2NidTYhJSRxRHsjXm81PU87X1g8Z3c/P095''@;'; put 'put ''LGhZdjpQJEEpPUF6XnprVXcrOGRZZyI3MytkKkJyQF0jNTlFJjxJfTA1eHs/JENEUCJuZVpzIyt4bDlfeVlFMl9zWHt6L31IfXV1IVB0LlNWIzRFWkY9enArOWZONyMzTiwyeSxPPERffXU6UGo3PmBZeDQ7WCJZSDlhfjRrV0YrP2JZTyVhck8vSTt4TnloPWJTNEtAVW1uc3FeeSxJKnc6ayZC''@;'; put 'put ''NW5TTE1iS3YvPTtFRk8+WHxGbkAqYy4vbkBZRHIqeXZIfCFPeGZaWEwuNDgqYXFdXXMpNFdIMGg/JDM6fUF+fVRoOFNMOkdMcitRdlApJVt6Nz03JWhxUz5qSDZ1QFBMciEhWkQzelY4eUx7NH5Ra2RAUkxBejZXNn0hd2RgQzFrNTRYKy51eHx+KlJiXjFVNyJfRTV9U3Q2dTRteD5HLHJOOlZh''@;'; put 'put ''NnpIPlI4WHtNS2phODx8O0V7SiohKGEydTxSYX5danQuVyhBI0t+OmNSMUQoOX1UZnBgOnhdNF9RdUd8QHpzY3crNXsqNGk8UDVlOkhAJUs4Y298Lz9hZ1h7M1d3NmglaWIxISt3JX1HejVuKEVKPENRMVJtYlBhZCJHLGYlI2N8OHJbUFl1fER4Uy84YDkjKnRMWH5oV1NTW1heeF8zNlNzQElD''@;'; put 'put ''Kz0lbGp8MzklUWE6M1QkN2tWMy8xaE1qT3AyeVpBPTslVHs9Izcie0ZHOShlbGdiUzhpRk1aKE8mQ2pqdithI3ZbbWBVXT9DWGBkZkVRan5KTH18X2MhJSNQLElJNiVpUFhtSTJpdzQsdnZKLk06TX0zOzdlUWFmYkE+KjxtYWhgW1smREBKKjo4KU12bE8vbzQoYSFJKD09YlhuTCxZSn0raGBe''@;'; put 'put ''PCouIX5EaTg6T0okQ0REYkhkeEtdWDhLU0AkMCVeTH1MOUFDWlNRP1hoeV12Q2xwfi86NCZ6KCpYJXElMzxgVVN9RVowYixJZ0ZKaG5UVVd7UW5CXXM9NUsjdHJ3RVlUU29UNlUzb1EjUGdGaC92fjBteV1XPkguNlVdK3p3Y2smfHZndSlNNE92IzhxWVtxcE43cDJ9d1JvP2ZgIW4qUWNEMHBX''@;'; put 'put ''d1U2aURQYiFxQj9sKnwpP1ZdJHd5MlAvRkBxeWhuWzRgVmNsb1F5YDRjbDt4JGp6Ri9WMCxxIUVvP3Qja1s6RDgvIU4xO1hpWFlGXSRqbl40RS9QXnVJWWQ8aSssc3Rmdn02U095Z2Zid24kcW9wYUV7eC58Sn0lYVljbUhLRHtES2w6VG5Yck5bI3lIWksyQDZeblMwZUY7aV0qS31HZ0hqWyZA''@;'; put 'put ''ZSlPMDtibnVkflNQcUBRUTJde1l6ckg/YWFJTUJkZ0NXI1Qje1tVWT5RKGtDKXsqTGUwanM6UX5abkp0VFskTDNxJDBBdzBjVWEiUFpZZUhebTUjMGFiIjBnKDo7KF0qKEc+T18qK0VzcnZdbzxUeUcyQ2laU3Z+YWk7blg6MHVdc2tgOWhrbmN1U1hoO1BuQTR2VSYmbmA4UjloYDFIRmBNQGwx''@;'; put 'put ''VHcrc2xTYG08UCRoXUFvI3krYDZsWWxVQ1g/MlE3YFZgV0grPjg6SUpWb0ZddEJxTkdMYD5jRHFfJEpTQXx+cnRzYlJnQVB4Vz4kYTFJMCUoPjVvU0pZcGVUSUFtR25pU2hKdy5yfXI2STdEczJlPzdNMDxKcU12ODgpOHlsayluWmZMbXN1WyU1JV5HT195en1zT31sNyNScy5wKEBbe3BjMXcv''@;'; put 'put ''TkpdRG1KKlNoUjBAeTBEMihbcU1YcCt0OUVTbjk3P0JxJWwpNGFTcThEPXN+UGgzNyNqdGVDTlRQXT5CciVpKjRhUyZRLCRmI1VaNT01TGVCR2RsTHwwMl5kTjU8ZEgjfSklNnJ8JF1wPlE3TEdmbC9sODF6ZHQvSjBNZ3spOTYjcitwMXJdWGYqMkU3VSVOLFVuS2xTQUNWQVNqWDp2fEpoKGQ3''@;'; put 'put ''N2FdYDxTOFc9Tk1JN25aS3BCflJPaylPNEQsIWt5RjptVVkvODBIeXJgOiMkanw+ZWNUNkYhM3wlejgpNjlJb3tMIVh2NXNCMj52b10hOyNyclBAUkBRcSV+MmcjWks3X1YkKSpbI2xnfnU4Rm1IWDZhVVFAQlU2OV88Jkp6fVQ8WkZ4e0w6azksdnV2ZnxNXldRLzFncE8jckxxL0FLOG9dI0U5''@;'; put 'put ''MStTKjVGNGJ7XitObU5ydE9qM3VnRTlCYTV5aHIhOGpWbnxRZU9fUENjbWYvbDtMSEI+ZXxfJkt2UnVWJkVFMyZiZVluM0xCYlArMWgxfSs6fD83LjpsXVN6YDFRUmIzMyt+TEljTzRsTi49JF5yVVJMNHNbbHVZTW96SDImU2J7JXkoMjBOWXpEIXYrUT9IY3ZjIi9RMnBvMkFsK0JsKGdwdWEw''@;'; put 'put ''Yl4zbDEhcC9uUXEvXmsyVkJsSH4jIUVRZUh6emhWMT9wfWZXb2QwYT1rKHUwSl5UdE02V1cleEw4KiYzNWorcUFHN0IzdSs7dW9Yc2hSdXFNJmMyZUAqTE52V0kwPjpAWnpsbkpxclhtbGlQOnw1PiFmYSlIIzB6bV8rdTFgbzh2ciMlem1IcVtabHo/TjUwJVV1OEghZUEoVWFbTSZnM0YrTUwx''@;'; put 'put ''T2NscDVjLGxZNUNpMk9DJkRzTVM3Z0ZFaFFBLDUhUEBkZE9yPEc6OEg2ako9QihqQTk2I2cmVjVDfnpOUGR7bHwsXXdlflJiVndlZC5ffWhVS18kRFldcFErVH1hPmU1UCw7V2xTQ2tTdEBoNWo2bilLOV5xUXoxe15CSn1qUW56KWRxfXVAdVZpWjtAREk+IVJ4YTBXIXBsNSsya2VpazJkW0xk''@;'; put 'put ''JTlZUT9ka1MjZ3dVIjw1RCNtaT10fntMejFAK2t4LkpUcEN5THo8LkVSOiFFVF9ARHxkIV9BSExZPi8oMVdTI0ZtUmFSX2FpSCVZYyN+Rzw8fGh8aE1EMCMlJmBRQ2x+T0t1K3FuXmokbWg1cUBdfUkyRyUjTntQeChyT0c+MGMve0IiM1BGQm0rNHIiUyM0Z1pLTyZ8WCFTSFkzJndRLERpO1c6''@;'; put 'put ''VmFeRjMmYzYjJFVxZD8iJmZqNnp+cDtQal5kaFgyfCV0VUc8TTJ9TVg4PV54ayp7PFpTcV5TbjFnbiNtO2VyZmcuSS5zMT1gPVArbGQ9My8/PHZSSXpJSHgmWm99dV5XQHA7WyN2XThyMn1EPTJdYn55fHg2Vm9oc2o4Z0BFaX5BX2lyQ1NFWHM1XUQ7RkE2Z1EkUVs3Z181aGY8ZjFmYEVuYm50''@;'; put 'put ''dG05Z18/NWlWOSVffkxwV1cwYHhOSF5APF9wNGpjMWkqMEwlaHguPHJ+KEtbdTByZyxvcmM5SlQlfUhUfmhUZ0MlPUJPLEUvOnZXT1g3cVFkNVllKH43PGJvNHZhKG5ncksvI0duKS5BN0cwdypqUXtrMEIkc0xRdkI/by5McE5PIzFNXlA6Q0VlOXxkUE4yRTIlMz03Rn03V2JMJE8xVzpZZ3F3''@;'; put 'put ''IVZkY3RoOGhNbGpqZk4wUFZEMngpRTxjel00MUlbcVFSZXZ0OFsjaSJ1eUVQMkNvNXZ2YGtjS0BkQUluKUdFQyMyMUY7bVJHeWNAMnVQQnV1VkhiSXV1WUpVVVMyWDUyOEtCLjcqSlRpJHNuImwoeX5vdj5uUVZSMGtlSSlydjZUZSt1KmFhaU49bm1Xcng1XT45MjhYckVCM2NPZmJZVVIxUkRe''@;'; put 'put ''WEJ+XTkvdiorI2VBIzdpRm5MeHNDSFlXelE8SytmQjFPSXRuMyY4QyRiNngiKnp1ST9KZCR8PFomPUxBd2R7KDFSVHR1VDVEM3oocDdbMjRTOyYjSVEsZHckJUxlemIsS35GQXU7UVhFfTxOPEo8PVs0R2VldXE7QTAqVjE7OkFSUGZ3b2lWS2UrImZfJDhdSTlrWnRNYFJKQHtiSUs3JHtBcX5J''@;'; put 'put ''XyFrdnR6UXBiWj9bfUM+TmhyZD8rPmQpfjFFU2tnME5gQHdGejFhTylua1NgV2szLFF0XV9NaHp9IWtsUSR2OGBrcXdMKXJfZilCW100W2xtMVhoWmNaOCVwZEA2TXpEbWp2cigyUGF9SXg+Ny9ZTnZsSSJ+OzQwPkozISVRV0B3VVVTPEwiOF44dTBRPlEhY0ZuM1NVODF7aVtdIVs/Kzc1THY2''@;'; put 'put ''I0JbXXd4ai9mYTZEVn1HUz08flIwKSJZYTlrTShsI2shfklfYDBiQD01Llp9PjpjV2YybU1BXismZX1DQCghQVpzekVDY2pUXTIiUW8rZnYoRSVme3A1O0xjfHdKOH5ITUw+Y2I5PUI5P1MyVWdOQW0vI0JxVjIlbUhkYEhBbSFRa0dSYHJIWjUxRyhGUFghRU9OQD4+TkQjaHI5L3NBcU19VDlt''@;'; put 'put ''T3Bje3J1eV9LPWhMdSVGYSgjRjk+WHlYL1YxZGYoSlZwQzd1NmpLdSVETDdefChDe1pxZ04mNVtrVjthW1FKYWo2Sj1yWFR6SHZmemUyOnRqXm1jUF1xNyYrXU5xJGQ6O0IkVzJhYXQ/Yk1YNmUpdysrTVk7NEYhS3RMO0JKVjlQWjJ0PDx8R0ZxJElwMXRDcj9yZHByMVpBSGttRjQqJStPMzIs''@;'; put 'put ''I2IhbEo8PSpSNGdofmlbeGw6aktdJiFeLEJEZylPMW9lZDFRYV92MnlPU18lMXJ6SGdQMFNjLzt2fThLR29gQmtCRCYiRFN7YFtJcyRUL11dUUtUPCZKUGpYb1RiZiwmfTZeejksXnRxZSpdZmJwJUciZ1t3clMqMUlreWteTnM4e3RrUndQb31VWnxeRGV2VDBKPk8mRUA7Uy8yYGA7TiIlU3Yz''@;'; put 'put ''YS5oKENTKWMqdUU4YVJefjddfjMrMChqYlY4dmloVT1pNjgmNFtufWJTVncqYmAmXmd4RGAmSF0yNSZMW11sLjtANDtiO01+NE8/KlRWN1h7NXpGWCF4elFGbTsiQ3ZnaH4jPlheRGdsSng5YlB2e0BNQjs5VSM2I1Z5W2x4ZltNe3M+cUxqTUZNSCRpNXddVEtwbGR+IippNGI4T3toTTxIWnFe''@;'; put 'put ''V1g2Lj1uUjt3MjF4RnpWazZXbEZCRk5hZytTZk9QQFh2JWY/dEl9TUk/Y0FdY09oLklzUSokVllvI1I9MEJsKmJoMkhmNl82N3MlfUxmLyEzZV8lJSl2I0NJIjNKYnZiXl9ndSMsMmVpM3VLRkgka2chVkBbZXdUaGQpZ0s6Xyg4V3gxZmhxcVVNLmluYWFhXUZ9VDluRj9fJV5HWVR7TyJidX5x''@;'; put 'put ''cElldWc+cGVnWEBPM2szbk95QWd4Y0ElPUUhcXssbU8wMj1sOE80ZkEqfHYuayIhYFlhYDZ3cVIlVTFQQl1vTEZpezhYYyg2M1E2VG9ScFo0bl5IKXMrK3xjTCxRIzNXNCR2OFg+akciM3g2czs5YzlaPSxFZV8oKm9xYDFsQXhaNTdDNiM5On1JNlQ4KVl9W3xPVE10ZG9LUmlYflJaNHpYP1pY''@;'; put 'put ''e2V0dExTTyR1NVAzQ29DL3hLQzVFRE1YIUVyXUlDa0A+MlhLcFdGekhzMm0yajROJlBEYDJSW24jU217PyYoZjBnLnVwVUpRNywjIz5laGg0d3QvP35SKXYzZUMoJnF+OyRabVdBaylpPngoWyUyKDdZMmlORzdnUzYrP3drRTN0KFhlSDtnRzcjM2w2czVXdUozK09bYmQsKWx7SjVaNnRxI3U0''@;'; put 'put ''SEheV3d3fVRJQl47bVo6XT4sdk8vLC5AWDJiKnBkNEk8ckBieDkxW2dCfDNpUT1iPGwkVW9FREkqakdwZXdZfDlbKC5nMH1HOX5sbzJCI2d7YT5EKl1NLz5+QXwhRExiN2wzXzVqMyRCQEtKVlNxa354Pjt6bzxWUGx9VytaXyxAaFJyODZObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJO''@;'; put 'put ''YjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBT''@;'; put 'put ''YjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpPXTE2MDZiOk5sMFNiMmIlOWEmQkIvLzpzaH4mT2IxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmxCN2I6Tmw2QH57dDApKmQyTmIxNkd5V2w8''@;'; put 'put ''OiIzRjp3W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIz''@;'; put 'put ''fVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzMjcyN31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wq''@;'; put 'put ''YHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfDtyaj4iM31We3JHeUxXe3JjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDc3RiFbXkBeL25LTmV8WjYxLHQya34yfVF8Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8''@;'; put 'put ''Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34y''@;'; put 'put ''fVF8Zl85PmUoUWRFKyhoPDp0PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8Zl85PmUoN3NjfjJ9UXxmXzk+ZSg3c2N+Mn1RfGZfOT5lKDdzY34yfVF8SGMuan5+Mn1RfHJvL35RfFEvRF1tQjxDOUZmTCFXaHQmIiYiJiImIiYiJiJpNkZzMDBveXRUemFnZiwocDA9IiNL''@;'; put 'put ''YCImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiJxdCYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImInF0JiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYicXQmIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiJhZEUrXmg8''@;'; put 'put ''OnNofSU3SH5uPjkoJn47aGhCbSM5cGxMWmElR05LW3VvMkM5RCM3OjEsVStlR3k8KEtpTl5xaVZVYkJzKlk8RUhdQFJGOXQleTdIZHJaRjl0THpweXJfJiJyX3lLPEVZMV1WNkM9KFZxWkY5dHJfeUtkQmA+S1Y2Qz0oVnFaRlVvKzU4QyJnfEtgcEkjZEJgPld4YD5LVjZDPSg+dj07KXIvMSxV''@;'; put 'put ''WS41XzdDVnw3I2t1YUo+ODBWNU5We2ZII0NYRXVJQlJDaUUpR3VMQ1hFdUlCUkNpRSlTOkNXYWFVWioyYTY5UEg/VixMdSNLWEV1SUJSQ2lFKUd1TENYRXVJQlJDaUUpR3VMQ1hFdUlCUkNpRSlHdUxDWEV1SUJSQ2lFKUd1TENYRXVJQlJDaUUpR3VMQ1hFdUlCUkNpRSlHdUxDWEV1SUJSQ2lF''@;'; put 'put ''KUd1TENYRXVJQlJDaUUpR3VMQ1hFdUlCUkNpRSlHdUxDWEV1SUJSQ2lFKUd1TENYRXVJQlI6S0NqZDpfe3ZocXI+OSgmfjtoaEJtIzlwbExaYSVHTktbdW9sRl9PIzdydkd5UilnUjF7R3VVVSRDcSpZPCsscW9sRl9DQ2p6X0IxJkNMS2h1VVh3RFdjW3RGSHM0KkJMT3tXd0RXY1t0RkhzNGsw''@;'; put 'put ''VXtYZShWQT5VUWtqMFgwNzZHUy43NCpCTE97V3dEV2NbdEZIczQqQkxPe1d3RFdjW3RGSHM0KkJMT3tXd0RXY1t0RkhzNCpCTE97V3dEV2NbdEZIczQqQkxPe1d3RFdjW3RGSHM0KkJMT3tXd0RXY1t0RkhzNCpCTE97V3dEV2NbdEZIczQqQkxPe1d3RFdjU2FMS3AyYiVQfTc9LHM8XikoX3tF''@;'; put 'put ''aXFyMmR8VVMuek8oU0YyLFUyNjZTTTc6MSxVbDlLS140b3V2IXlEPixqS2xmR3lwY1cpWTxhKlk8K0IsNnV5N2RSNWxIYzdnWTtPMmMldzdkUjVsSGM3Z1k7T0RsQkxPNjQ1aWJOZDxIJDpWLGk1alY8TzJjJXc3ZFI1bEhjN2dZO08yYyV3N2RSNWxIYzdnWTtPMmMldzdkUjVsSGM3Z1k7TzJj''@;'; put 'put ''JXc3ZFI1bEhjN2dZO08yYyV3N2RSNWxIYzdnWTtPdG8qbFBbNF16b01+YSV+IjxeSilfe1I3XnBpMk1kcmxJUzF7UGJlbDJjNFIxey5nVlVUWj9DQ2pTSCMxYXI6IUtLNDVxdXYhM3d2IT1PUmJnR2JSPEJiNntNck8rWkxhe2N4elcwWzVGTnJPK1pMYXtjeHooZDw6QlNqUEQ0dUtGT04rMWh5''@;'; put 'put ''Mlg/cDBZKTJLWm03dUNwa3g4PSNqQiYoPzE/VWFNIX0wYVF8Oi5je2N4elcwWzVGTnJPK1pMYXtjeHpXMFs1Rk5yTytaTGF7Y3h6KGQiQHY7Yy5VO01bV316b19CYiVoQzg9KDQ3PXFsd2FAN2guWTwjU3M3K1pyK1k8U3BgQG9Rc0xHeU9kJmlOXlYscW9WMTtGJUViNnF1diFrbGtsa2xCKzBq''@;'; put 'put ''WTBDZHg/YTZRMGgmOTEuJVs1Nz1xeXJ7X11HTmpOYTxZOHJyWUVFaFAlQ0dOazEjMU1lfDVxMXswamk/MCtSVUs4RX1kJkduM15MTjNNR1JQK0dnRXpWaXkyV2lhYVYrVndbTyNHUShIVFEoclQrJmp6fSQ9RThaNiE8SHRyNiEwP1VhNl9WLFZ3SH0sM306Yno5fUFjMGpNbS88aGh7bCM5flM9''@;'; put 'put ''ZXUyX2xZLiRIUy5rN15wczRuQnpbLDxDN0ZOczdsVENqWzpmdkd5dWQlaU5eJkRdQEdXd1BFKyo3aFIxe1lEcG9FNHlvOHJENzc9cXl+Oj9tVlNxPiYmPFlvaDlAUFU2Xyl3NXUsQHgqQGRfJkNAeXwpWz9iTzdbWD9vcV1vJEdkOEglZjcuQzJJX3ttVC4hYXwsRjFXcFI/XVh4aUxwWmQ8OzBk''@;'; put 'put ''fEpDYHl8OERQb3FXbkIiWSt9cDZdKURLNEZmVnZ8Tm00ZTc7OSY0VWZjd2g/ZXp+ZDw9eHh+Vk96Z0NqZjxuZmFgeFAjWWQ6SSpafixyR3k6dmJqK31YQDVhKys+fjg4V3lSVDNGNHEzP0N5L0M3dXowJTl5b3d4KHlaUGY2M3EsZnkkQThqT30/VHs6Ok1kMj1VKzZfYmdHbCJkIntiVl5PVUxV''@;'; put 'put ''YDc3YTgsPVtiOGFPO3wwMCQpRyMpS0cxX3EpejF8YnhEMFReO2ZiSWtIQHoyTCguUykoIk1OOT0jS1JedWJxI0VLMS8zTyZWJDdIQ01JPiZZUE5OOVo7MVEiRjBlJV5he0g4VmA6UT04dDkoKks0TyY/eT1nRW45NH4wYThoVnk5PFdvaXg3ZVIxe3N2R3lbKWdSMXtIdVVVdkZxKlk8Oixxb0RM''@;'; put 'put ''blp4NzlFTEs8OW4qWTx5SCwsT35GZkd5XmUoaU5eMUddQDBzYVJOfng3MjZWak5eSm9gQDpLXVdLS2h1QHd2IWtaIzFhciJDcG9eYkxLeCFkKlk8O1NgQFN5PExDamU7ITEsVXx0VVVGalt3diFPUEdmN0djMURLbWYpQV9GSitnZXMpSHZFamB3diFsYXgxLFV4IytAezlhZmcsY3lHakVeYmFM''@;'; put 'put ''S1cjIVNnP205S0tXI291diF7RFFoWk1TO351YEA7MyRQRSsvUExpTl5gPHpkN05RRFA8PiNoODEpOjg9Z1VQTGdzKWBIeSMuTV8ueDt9bzFJbjlGbDZsa01NYFpwbDheLn47aHZMYHR0XWx+Vy9QfklGPD4jI2Y1bEZmeSNxe3BrTV5dMS4lSVlWVUtFVUhDalt5ZVIwcC9JV1VLRThIQ2pbeUtp''@;'; put 'put ''Tl4odGBAb1FmZkd5d1h8WChZKkxXKVk8JjUrZkBGIWpQK0d2VVV2RksxRVcpZyVtaisxaDApWjsxaEAvaE1AL1s4ZHA8LH5XUmouUXxJTjw7IW9ZSE5UOkZmPSE7SGg/MnohXTRSeThGVTN1Z3xMISRxbVppJmRwUkQsMEB5VVkrMF5HVjxYNnNMdEpsRDJpWiJRdGxfSF1EPUArNnZYXiNhTmBk''@;'; put 'put ''Z1NNR3taNj9TNklOPFtTKkZgSUVmZmpZUExnY2w2bGtNMjt3Z3g/bTkvXXc+eDtmajMhWW5jUEVZT1FCR0UxQnd3LEIqKmp1aW9KZyVQVm85ZVFgdS4sJWUhO2Q+ZmlYJCNISV8hX0Boej9oTVkxaHYhXVRWaz5oTWFNSSFMRVQmb1lpOEBsIntwKCNIXXNkRS9+NklxOT85JitQeF9ZYnAlKysw''@;'; put 'put ''anEybExnLkQjSmc7eCNnU0hSd3FXel11Z1B+V3FNTW93L1o7Y2pxVEkhNSsvfVM6WnpIbCtsMWlLb2BuSnc5dVU4MWlMPCxLdExSfXIxLChJJGlHN0s7SzlMYDxlPDshWUBkTS9MP1I0ISNFUzFyeFFFbEYlZTF6MyxlWFRSKUVVakN5cFpwaFFKXUZKbFt3KVl9dUpoYk1VMXkjQlQ2R2BJYTFv''@;'; put 'put ''SWRQL1oxSCV2TV5hfURLODMjZnBgWztNKihZc3s8TC4oKTBoTUdCIzAiQ2FWJTAsUUgyOVo/ZVkmT1N6NkxkZTZObVBuKE5jUiwyWz15Pncycyl1LG9AaClsTnAiUm1PZFI8T31QUHpaYHo4UDM5cFpvaj9Jd2UpOCYhfisrRGJ7dSpfKy9dbWYlekt6KSV5OVd9S0BYYCVfdSxNWUx+LntifD9L''@;'; put 'put ''KDl9PzFIeFMjWjJdfGxRK0FpfnlXYkwleHxfXj1ITVcoOT89Y1RnIkZlUCVaXjdASXNmJn11RCt4Si9MSShRPlB9OHE9K2EsVSpNc2YmLkJ3aGhNeWZ2fV1TRFNqUCF8czthLFE9P2dGLDlIeF97SnJ3VmlpOGV8VjlCakhRSyp4KyxWUmd2Yjh9XiRMXjMqa18wcWFyYiZWMyVyTVBEK3owPT05''@;'; put 'put ''QGcmJCtOYGohfl9UI01rIi5dYU1dXnh1ajpSRWZnJkIsTFcpbTA9WG8kTjpyYCE7VVhsZnMmclt6dXFDLD13OiFWYDVqSypTZlJ4V2Z4aHZ9MXBhOyleXzxBNGxxO2Q4L1Y1cFkrbjEqVl46JFZvbGFyZ21sST5xJXUsYFhxPHdeXTxUPCxaI2k3QD1hMyoran1MU24xdGNiTSteX29mbVI2bTYw''@;'; put 'put ''KD9halUsfCEpQGIhIiUxfU4/dipxaFtKNCpiLDkmNnF0UUU9ZF4hIVkzPGJzbCMhWE0zK0RwZlJraF1bKmp0UWtoUCtkeVMjIXhrVV42P2EiNXs9ZlZzLypHUj4/IWdVXSVPelQyPj13b0NQJnouUGVqKHEuSDl7fEAyP1dvaXg0PCIlTF4+RWVeNkA/IWl6e2w+MmNUTiM0WkVfXz05IT9rRGBr''@;'; put 'put ''U2wuT1FOblV3PD0jU3UzWyVkZjI2bCxfZC93cVRKNWd5QyZiZU8hXnpaaUBwPVtWOzc8XiFKOXk7VCM1K2k4P21ULj9OUShGVFJ3X1kzPDZwc3A4cFhzZSxvZmFuWWJFTT4zemVePSJpV145cn5ubVB3ciZ5WjllbGJuR2YheE86fFR1UXskNDg6M292WEMhanU5cFhIJT5JX1ooQH1EOHBmcz9L''@;'; put 'put ''MV1BXWkmaFZmcSF8WWV0Nzp4SThPJi4lLDg3JFQjRG9iVF8/VC5BPmUsRj02bjpsS31zJGZ8Lm41PFJVbW9gSXJ9IntfZisyNTw4Vj9WeGVUPCNaN3p5P2pPSkcxcnpaLml2OVVNa2hwWWZOMXw4KzF8VFJsa3U5O0gyajVtelFISVEoYz9gd0A9X1p5bXcqcXQ+clVWfXAweigmKmptcFZecGZA''@;'; put 'put ''XitNSn1XPTFOP1lfOzRmNixVWjJIMUd9allxZH0+OCpNZE5sa3opOTNQJjJFfGwzZmJuIUo5OzJUMCwhPlc5aXN8JCQrcnAkTmZAMT9wKURofiVFeVshdmt8aTcsaFR1cTVtTHNfWWU8Mn1xbWNAVixnfCZlaGB6PHFrcDwrJXwjWH57d1hQY35lfUwlaGlZXmJOLmtDYG41cFBVMWJPdlkzOFMq''@;'; put 'put ''RXFPJnA3I3VAUEkld0c1TGhlcnhaeEhmend6KzMkZ19ZI15nYk1ic3BKY34wISFOXltfdSklWT8lOGBTY245JiYqZSh4ZyRiJX1GditqRGcqSk89IiU1fDEza3EpWnYsWW5fd1I9bz5+JT8lPj1lb2suO0oyNTRwOHI3VEQ5S2xyTnUzPEluMkR8dztdd1UqMjE9eDt4eUdQZE8lPX06NUIlezF+''@;'; put 'put ''cDl9RiM5dHJ6cksrYmJweTMmITl9aygzM3dfNV47eEQmQVF7U21wUE88PTErJThSZUFLVX51fVh+QSZXIkpzUSUhSWdwVE1ROXxmcHxlLEA/YVBmMCkldCR6VHBwUE9XJV1FUFF+ZkRfdm1mbjcsamZBMU8leGdUbXZRK0JQZE9vciFXYG09R0s9K0hWNl9FYCNKcUUpeD5yNHBtJDkkI0g1JDQk''@;'; put 'put ''bCp7Xis/ZX0jcXdQQj5xJUV4fFk4JkkwPCEhSDhIVHh9X0IwcGs8PTo0RHlJMUMlMDlrYEdmfHtdJTlHdilJMV8qQ3FDUThALEB7XmcmUzxwNzd6OSRkTkJRbmZLOGQkPilGbDdhT2FgXmFfND5iMVc5cHN8SWFfRXpDUHVZflBoITl9ZU47bChRY0BIMS4ldiQ+SCE5UForUW81ZXxAbl5nRFlh''@;'; put 'put ''UXghNCxkYmdtUmVSbktrUXpEVFAkV3NyQDowIixOKE9yLyZJMElRemFoYHJmamBPPEE+Yn42PGR8LkBFL2QsVzlGfUxKO2p3XjA1eW0sJVhtNFBKRyglSF9CbEhfO256KUs+NzN5MDE7WjlPZ0BwUGAsZDM2YyRPZTUkbVpFZ1J7dXMicjU/YFlXcjU/YmFbK1E0MTZ7R2txN3IjczU/cyw8eihx''@;'; put 'put ''QWBIUUJueWUyYkM+dSFBJTRxNUp8WVosNStlc3E5OmpZWlg9PEUiLF1pZXxUSi5kJjhQOyt7fjlmKio7M1RCdkhANEpoQGBZNztePVlAKnIpPTFUcnBYJm4hcX1RYHV5QmhHYlJDVyoxeWZ+T2VLazYsTzA0TmokbX4oP2VqUEBlfWd8NUt4eSZ4JngmeDRVOXw0KSFxS35CUXF9M3lNenZHZCs2''@;'; put 'put ''X1NMLnJeb2k/QCs8L31mWXFlXmRvOzh+X3MlS3o8LzxEfCRdSUZleVlgXUMubWBzJXcsVCg+enNmIVN9cEprYlpIUTtsT1pJOWRxa3pfW01lTCU3bG17cyVueVtScHZ8bzFdX2MoKUhNczk1M2wqIl8xP3xvSEk4NWpJR34mMGUxcmBeNUl8dytwa0RWfmckaSVSNztOJG0xJW19M1U8RCVZViZy''@;'; put 'put ''M2Y0TWZobVdYJVV9MUh5OVRyVHlgJnosalRdJU16KHFyPEBeekkvPEgmO0tHKGR9cio6enFmJDA/XWUxS2hteE8oQF9eL2gxS2gjWl9ZXltzbWssKzh5O1Q/c04iUGQmOHFJX1pQX1IsMkxeMT9zTmdOOV5kPikrWyFQZ3RMUGcsOUhRP193LHVTe2ZCI18rNThfKzd7Pj0xcV07UkUuVmJnaDxO''@;'; put 'put ''ZTJZO31NIWEmLGFCeHBKSG4jczdtOEBAUkZPNy95QEB0Y095ZmNQLGV5ZmNQTCpZLCw4QUkvbiVtNFAyWV0kTShFSndtVUllZzxJYSQkUlklVml5bXteNl5QJXlmTmtPZ3oyRiQoKkYyRElwZiVSWSV9P2FeMHIzNkBIJlU2IXB7JClhXiNhay5QKFRQM2NLOGsueTJyNkEyNE0xR2JNWVY7bCVR''@;'; put 'put ''UFo/PXF5JSVsJCZlVlpWYmVzeClPel4uQEswPzhQWCUwbEBde0l9aCg/T2skTkhxO2xjQFBtYSxKb0VnQSZVTVBafD1aKTkhckcwZTgrTSErKThaW3ApP35Va0dhTk9aVkRPdjEpRUZlajEsZUtwQD1mOFJiNlJ5VW9mITwxTmREeVVvbntwTjQ9OFIuajNNemcsVkArTzE4Ui5qVGciTkckKm0o''@;'; put 'put ''ejZYNHE8Tyh6O1U/WnxkYnkhYSYhIjk7SWB1V1ZiYHhnTHRNJSYpSSxQPTZlVysxKy9NZFBTZSJOJnI5UFB8SiRFNDVKQmFQP0AxQTBxZmlQPEA3Lnk8d1Y/ZVkmQF9kKVtWfiR4OHs6LDNdIVIwOUBGZk0yL3taUSZkTCUpfU4xXj0zYTZxYS5rOEJoNXxJVHdKV3pQXy87bWFyel82aWBre21g''@;'; put 'put ''bz5aPHU5eChFWW4sdkIvR1BkQSZvQl0lLHN6c1BxNE5aTUhJQnFIOklQS1ROJjgmUmUmPEEmeGZuLEdRX2Rib2FqMWlBJUwyNHl0JF0vdmFLWyw1YG5oZWQrNWY5cU5vbDZMZENwN1BGSVJ5XWE+N1kkWFoidVE/ODh3UmU4QCswK1kjMCtMaytlbVF3ZT5pWWdBJm88QW5DYCF9KDFdITolZCZl''@;'; put 'put ''aCtKczN2LENfWD1aUEomaWIhc0EmbnksOyYreSl8LnUkV2BPZ0pfO3giSCZyXypSXzYwKSUqMlcmQGNEJlUlQnwmL1kka1lhbiNKMD8mUSs/QHg6IXdQQj5OLC9eS3FbSzxSNixCfHohWkBONmxSWXM1fG8sfiV2KSNRS3ZhLDJoXXAxVkk8TGZ+NCElPkh0USM6ZCxwMHpZbFRjN2IsYz9mb0Yx''@;'; put 'put ''RD5JOWROVm5ARXBha316aEY9YiwrPV9aNztSbCJATShhP11aaFQvKEJ8UCYhSWBdMD5sNyl1O14iVEJJTUdlZzV8WDEuPlgxKiU7QCMyYUsiUEJXNG1NeDA+NjV7I2tZO2tsITJ7MUE0WiY4RT9UbTNfTEp9cE1eaF4sYUdTU0V7O0hfRXg6fn1TNG1KJGVqYCs3UDMqbmhAX3B5b2YxbXV4Zm5F''@;'; put 'put ''P0lgZHFWbSVtOCtGMTJqWCZaUnc7aDAsPU5ZNzs3cVJteTlVKjArWnd1OUV8RW1mSHtaNzs2XyRPZH1+e2E/RD0lfmVzZXhkJGx5WjF8czI5XiYzaEs5OmowflBobVlIaDMpOSpBTXQpbH43RzBpPmVfNjYqbUhwcUc6R182d1FeUUJmLHUqUSVsNzx3TyY5e1pQNE5JUDxyQ0ApP14rYixeK1lh''@;'; put 'put ''bWo6emI5YGM0N3EyQF9vRykvUE5gaW5QTCkhQFNrd2ZkVDdUI2VvTntJaSw5QDY4V3lUbVI2e1VJS3ZZST5bMGZtMW9kbzshNyFBSSs1RDljQFtlPzF2WjRPZ2poLHI3e2FoLDc7XzEuX3JOd3hjaEA7JTBaaTI5blBhLDd1WT1vI2FEYVAhako1bVApTi45TF5HUTpyTzFLaC9AZXxqUHN4YVBn''@;'; put 'put ''UlNGQXxrWSNLeEQ6WF1jazE1RDpbTkA6QEBeYUAkcERxd15ZVGUzd2FDXiw8cDg8eGBpZks8IUxGaztKOC5YJDRzK2xdeyhFYERkNzckKTpqZnJURntZZTxFeSppPiV1LDlsQyZWYGRLSj54VDdqJiglSHJNNXVBMUgrLiNFP11aZWZUe1EmNDhmLjNOKmEje052Rld5YG86aTYlT2IwTCk5JSk/''@;'; put 'put ''eCQ5XVM4cEsjcDFoal57S2hNI3twN2NvTmtvIUM5cEgyL3M5LmtiXyRwYlhVeVZ9SCV7azVxbTdJKGlsKUpjSD1VNyxgM0MyOnp1ejBxZTt0VHwlRnpGSEJkQTphbyR7cHcoeXIjOnpMcDAlb05iWCViWSY2aF9mWSZYQyFqKDI4dWtLMGBKKmhaT1hUeVg2c3ciJWZNKGVPJn17T3tdXjs2aClC''@;'; put 'put ''YjFaNW1rUDMlUi5bL3Jad1J2KS87PTFJNCR1KnVuMy9bQCt2MEY9MTBNeixeQCt2MEVgYWpQKyM9elo5JShNal47ZE9RaX0ydW1LdytOIUNjPnYlNTpwdiMjMkRWKzxBLiRTN15lc2FqemBVMEFFLyshYXU6PTNMSjAsXmY/ZSpNN0w0dmE+PXlHQFFEbVptKV4lSCRaOTs8SCtTZ15lLGwkPHox''@;'; put 'put ''S1t0JEAvOWo2Uld6YHo8aVNiaVo1bS85dXE8VlJEPVUrSX5HbF4jclQ1eFBlOyxTT15VPGxMUUQ+JWdgNjx9NWBiJnYkTSYrd1I8eXIjSldvSlB3JTUiNXIsaF14WklKejw5JS5kLDBqJFlgJTUhTFZJWlc/bSxxbnpzJnZnPHIlYj9lNUBVMX0kVmA2ODBqUHNMVz82OGwvOTFVeTw3JGEycEtO''@;'; put 'put ''OUhQZ3A+cislSE1QbVIwWiRKPU9nMEBZZkM3ZFlyWWZOVlBLUGRZaV5wPEFwcEBYYXltSWRUekkkP1Y1dzNkbGZUeFtSeVZgZ29xZH0pZ29xUVBOKyhWIU5KNWRZeG0uclJXPzZDL0AhL2o2Umtwezg3ej9hNHFqc10uRF0lTDUrdFlqM1E7czpdVWlUe1ArPXs2VXIoVn1QTis/JjAwO2R6WTcs''@;'; put 'put ''QWBWejpwZHc7ZGgsTHokOWYxQzojWjplT2ZxPnVIWE1hLE06KjtwaHxrfUdVXi8lKXgrOE05TklbIV49MUlfIV4/e3dNbzl9aDc0aiNZN0owbDJjVWVzYWtIfT9TOGRZXyVWZjRHXk5DWyRdTjspI1kwXVZBPmhsTzFuZkk5VSxnZn44WDZmcihhVWBLRXowUlc/NnNsOVFKbFVQLzp4VHlTXyV0''@;'; put 'put ''QHAwfl58MWEuN1Z6Q2k9MDc8WTNWTiY6JTlANjVEUkE0YGJQRSxmNl5zOm1jX3x1eSFdPVVIKTp6fVo0YmQkLzt6T2IwSEBtXiFvPUtud0lKeWZpaH1WUyVBSVVgMzhtXipyLnI5czNtdz0mP0RxTVV5IUlobXBqUGxrZ3dSJnFNLjVfOlkmdlpwfGtyalAxLGlUQCl2MHNmayQ4dlNWLD9waiFK''@;'; put 'put ''JSEjSmt9UG5RRj1HemdSOz4mSHh4WH1TST5IZ2dqZCRIVEJZSCVVVmsuZXMxUVowPnJlcHd9SUA0e0NxWyFKPlk/cj4+V2FzVVZOOWRgNi9MXkVueSo1X0AhOFM7bGRxL201Z2NWTVFCPkJNaHFuczpyTVBeS3B2RS9PbTMpcDxOQDZAaCRVLnQ5cEZXRGJzPFMheGVJZHopTUQ5QF5mYF49P1lq''@;'; put 'put ''VGNQOXZPKFZKVmtGLjshUGtjQG8hL3sxaGw4YVRicV9WXWVbbmVeMDAxS1BWYnI4XyNqYkUidm1pO1godmFGZ1ZlcWNyOF9AIU92cikzS1EmJHFoYHtVfjg4N3gjUytWbC5RelU9YjlDbHEyKyZ6YiZaPFArV11GenowYHc9IS88ZHJrLGZ7KUt6JEE4Rno8eiR4c3pNKGddfEBMXShxOXd3clM+''@;'; put 'put ''OWlbMywxPU9mVlJ6eVIkZChxMHldbGpOeCgrYUpKKm9WSG8qPyp6Wil6bWZJOVk6dlpicjdxaW8hSkR4TWIzS1RgR0BvJFVeJXxSZm9jVmFLOHNvMFJrUl1uPlRFfCVWVipZaFtieGJyRFdwVj1WdmEsI2p2XmE8NjN1WkBLUyxhQFg8ZGdMakwxO0guMVtfdDx7S351Tyg+VnVRNjBGXzhWU2tD''@;'; put 'put ''UF8qUiYlWVUrTFFCaDFqZHEhfC4/TTY7JVpDTitSIXVRIzgpcjEkW2UoMDBUSn1EcWU4bjx7bEk8SF9FZ2MseXl9PTArRnp6MFomQHJCWWJncHxEcXR5c05GZXQseCRmfG9mI0guanYrSVhEJXdQJFZVPUdvMV97P2ZNSVAmQkRtO2w1e109Imh1JFhoT14oeGdWVH15Mk1qYCtFekV4T144bWwk''@;'; put 'put ''MmgjUztsUSVXPUJMZCQmQEQhanMyPVk5SiQ3OG5ILkZYTUhAMTBkYGJlMCEoZDF5TllRZTl8U0liTXhnaT9CYFpqcnkwOWd3QksoKUJANm4/bXJAMT8/bTJQbjBVMXkhLD8hfT4hdTNFb2U7fm0uNT16fWp4K19eS2pZaDUsWWY6PXRgJGpBVnx7WFRZJm1NRS9WelomZWppP1ZeR25vMGE5SUxX''@;'; put 'put ''dnteN1Y4RzVAWit3JTx6a3hlST5AbiFAPTVNWHMkX0ArckpkJEloPUQ1LH1wbS8ye3trSTh+Uiw8Wjg1KXowYVE4bF11W3dNZ2VhVUsoKVcxKyE3XWZxN3FjVEYjLko+QHMmVCVPZSk/RmYvbiI5QHs8RjRsaFBJclVUJjBKbUhXUSY3Z2ImLD87UlZyeSoxSXY9RHguWmA9MG1SZ1VmX1sqakhJ''@;'; put 'put ''Ql9iUU0rM2dBRUZ5JXFZMV9qe154XmY8WnNPJjkzXVFIbEQmbCpWdyFuK3t2Wm8+cWt4VDJfV00wLGgxR2oyXkpfOF9AIXlRQSVrcHllMD1dWjkmJDl5dXhoLz40WHQoL3B3UGZzVmVWYFQ9RWc+aWcxclF4dURJfEk4LEFxIUpLOSZyeWxZZ35uVVR9JUEwTjFiKSpTREluezptISx1JFtlcEAr''@;'; put 'put ''PzolI181an5wd1BgIS5wd1AwcEhJeDwwO30kZiZ6cHlwfG1bZTgsZndkby9RZDZvbXkyQ0ByKm1mZU5FPWokW08uOXsjVGZXfjIwNj1zemAhNFVFYDNoVW1yQFUoe2lndFFhVShgMWUsY1IjVlpQWSpHZCJONjMieDI9P30lalVhJSwpcTo5ISwwaE9lJXw3R2FRRWxfLlQme2RaUXghYFlZaC9q''@;'; put 'put ''azhta3ted21RfVpOSXJKa0JfUHJNaFd6a11BXSNxSEsjKXdSU2VSLngsKG0+MSJedytpOCMsMWgxQGs4YTEwOWZyYiZ1cWVEa15say8rRG4hJnYlPHpKSytqaE0zZ3U9OFEqbTY9eGhnMTMpJnhFfFFePkA3LE0xSWhZJkEwRnlQWW9xOCw3X1kmfXNCLiR8c3hgVHB2RCtIaHVvNHBzOT5PZ05Z''@;'; put 'put ''VmhgY3VoUmVqZD9aYU9zYTlyPCpRaXYkLGVgJlBIPFBZJCtLeixRO31bXjl1NzAoWUZfO1VUbE0lV3M2fn04Z1dAJUkwVjQzbWEjfGc3PE1OOS5KUFpTOV91fGE6Mj4xSHU5Ii8oPEg9L3BJMTcyRVQ+bmIhNGphMSNSV3o0SzlROll3fTk5USZuUztafTAuZDRtZz8pO31mNDh9NVEoYj8meEhQ''@;'; put 'put ''L1NPcyslK1BXX0BecHZIWXRUbXgycFY9JWpudyxtL0wiSHYpSHg1KyghKT1NIXtfI3s/eCN7U1FpOCZsQzlZc1dARUdleWVJUSY7VjhWQmt9VlheN09BcnxaKGA9TXxTRi45ens2QCNwU0VieHFBb0NzR2BBQGQ5IyFYMWZ3WDFDI31uWmVObjVhQ2BAKyt8M2x3LDJvWF17JnFYfm04cHJoOi5k''@;'; put 'put ''YCVSaVZhYm5SWm1GfC4wfjYycWg6dF9wamRQTUAod0xNdVkqN2hZQW97X2wjZipCOiFpVSw3VnRFVHh8Tlo9IiU4fW4zY2d9NmMlZTh3UDBRZD5mLCJnSGhQaFtAXj0hIXJFLzJuPDhfJWpZcj1dbnAmJT5nbzliP1luO1t4LFM9fF5ZNXhlLDhnSV9QWHN1Sjl7NXxtJEw6e2FoVEMueDlzJCNI''@;'; put 'put ''Vjx3X3BqNHA8VmFReCE2Um5gT2hhblc8UGg/PT4mPyFibipQUSZgYXtJbWJVdy5eQmA1VEpZPmdGLDwyWVEwKDxkT1EmKUV4I0BXPSxhQnhmZjR1Q3hWYFZuZVBoajNobGpQPU0xPk84cH4lTHRtRD9nak5DRSwyMj5bcDEsYW5lc207TGg6JSR4Z2QuXUBTNG18bUk5IzIiJX1ffjB5OUJqI3F+''@;'; put 'put ''MCklfl54ZUs4UShhZ2VhU0BTSUgxNj11JHtfbyE+fW5wIkh8bWpQcipqZUo+RXFkUFNlb15OO2FRWENXYk5uK0o0alZuP210cUA7UkUoOG8kcnE7MlNnfV5fbUhoZCRlXT0hdVFBPnckIUo8MjIwLl5ZJXo+NDx9e0grcypHcnssZEApaTdUQHJzTmZzPHJ2I1NQYm84cjU1MFk6YzQpVTFZbzIv''@;'; put 'put ''Xj1AKkFdN3d+LEYxfTUqTyttNGVde1FeaTAod1ssfDBVS0ZxVWlyOnIwaFZOVUtSSllRKzhRZ3k8Yl1vTUBQJUJ9Oz4vNGVAZy5wa1hGJC9daChaT2k1KS5CKlVUL2d6QXt3an1rJjUqL24/SHEjdFl2LHdBc0FJa3BSPXc9LmE1byptcXpmJXQmXzNKKnckRW5mc0ZTPSxtNVp5PCgpdjliVUhU''@;'; put 'put ''MnUyYkFHMTppMVslWHpnRipWeHxVZDVbY0hiWnpQRjBiZzN0VCFXbVVJUlQ2L1dXRzBQIzZIWWhUem5LY0A+TlZ6TTh4Jl5xMSxMI1syU04zY0cxUDIvVFFWUCU/JDUybWZMRCM4aXpwXXlmIzBVS3shW18kZSpoRXxtcGRiWXh6NT8pbV5ARDFfSyJNUFZRIzxBPmNiVCpkfTJEb2hURyJeY31Z''@;'; put 'put ''YWx4ZEdrbSsmKUx9O2g4X0VtLDd3KEs/WG56dksoLHZQVz0qOXdNNzQuTl92YiEsMUkzQkBtNUI4Vz5FLFhvMCFtR1pLMCtVfjhwYiQ0ZnUhWj51ZmNWXX4lI0c0TCxhSipbTmRaOU0/UF5PVzkjXy8vV1ZRQDRAQlBvdGhHPVtpNypoNjA9YE5DbHRQUS59P20xaC85alVtX2QrcihgOSx2YmBv''@;'; put 'put ''bGRzRkQjfmdxe34oIl9lS35XNWxXPEJ0KG8rPTFCIls1flpiOTQ4ZnwpWm1sRV1UJDgwL2hnLGFBYHVkODFDPzBQRjlMPlJ0UGZLK2ZIbykuRSFWS1hCVjduVXZNbiRRWip+Mj9TTWZgW2Vdfj1xTi5HTHF+bXpuNGFaYFVBdDE9R0w/fnJ9I1RJYy4oWD4vS0F0VkQrfVh6XX5rcHN8LkJ+fXte''@;'; put 'put ''aCs9fmV4VkxYZzskR0ooWmppcFZnfjIoU0UlQHc5a34odWZudE1LekdLO2hlP3R9cm13P1RzJlo8ITIwNlI+KH5CeTM6STklPSNJKENCSE5USTMrQFMkMFgkc3V7Jl9nY2E9eiowW00uJXk5YHclWS8zfVZSekRPdjgufixdPTI7fVd6cyhTdCMkNXx5aHVgdShvUDR9cFh3P3ElOndkbjRsN0N9''@;'; put 'put ''O1J5VHx9KiV+dmEpPmtAUFFsc2pJIkptflZ5cihJXlBRYihwODNRPHxedVpbJV1JbXBUInkxPTIrOV9Xfns0SU8iQTRiW0ZtTVFPazdkY1l3d0ZzV1hXY3FqT2RjV3F6REhVWW1OVmQvYEN1PjE7e096blJGSzwoeTdGL0JaKnhXN0Mmb3lkWSl3YndXKmZrUiZ+Zzk8fG57ZXNJXTxzall4W3Uw''@;'; put 'put ''I2dbPiplYnxoNlRXQTFKJntAYGVUaFpgVEVpcyJQLG8mKmc5M3xeU11+USVGcVcwQEJVUy8vJCUyfW1wJnNgbX5+WztYNH1RTyVXY012YU43ZW0lZnwpMT1YMUJkME1XO0JCIi50Iis2fTtkM2gxVDtaLm1kI2ZxIkprTSRzP1t6eTxPLmNWfmhsb1dFMCR0cl5vRnp8PSlxfit1Y19ISHowYGV7''@;'; put 'put ''N0BiZyNSLnpzIUUufWkyNnMjeEtjXVpKNHpgQGRmbSs3O2AhdWh8YUIjfiFQYH55alojM0RFeENtaTleeUk1OFlhQExBbjVsUy9YKyQ8aXYofkY3K0V5KG5ZTFNlRkE0bmdZaTQhbT5RPy9qNXRrNVokL21pbFRzOm9yVHx2Pl8lK31zeCZgVVlQNE94ajV1eGFralp4Yl45OV9uYCRlfCR3WUVn''@;'; put 'put ''NVI7dklBKmtyK2tFPTBgaEBEfldTQDRXM2RAZkY4ZSkzNH56aDJSKntLOi9zVjBNLlp4WVRYZ34jYCNgX0dAYHIzVX5fMmNXXyVtVl8lc3ZKMl01WU1LQz0mYmRkR3g4SX5SQEhyWHRIaDdkcy9pUCRudV9HcilDcjp6fXtiIUpTaSpheWM8VjBpM2Q4WTZidjdtekN1MHBMeiZUOjhXMG9Ca2l8''@;'; put 'put ''ekYvKz1pX1BEQn5HclM0TXt4NVZGUUpOL2x4O2swSEJ5a18jNC45NE5LPyg2MEBpIldFMkwiJlszcUBNVnooQiJMRj9HS3JAazRpMSlucFs0fiJzKHpzW35wOXliRSpdZGxvPnUsIz0sWFhrYzZNT2hsb11WLno0eDEvTlU6MVQlQFA5USgrezA7I1JwOFhdTWVdZEl5Q04saFkrKipGfUlvUio2''@;'; put 'put ''XnhDeix4ZSw3I0c2O2spSGdSc2BnVTtoQ11sZ35CMzhoVnMqPSxua3YmJHdBaTBIbmsoMVpJTnp8UkAsWXcpV2pWMy4kMzFpeUVFMmBqbDFyYntXfVJHTXsvT2lURj1OWD0kdnFFKDFqS002WnR2R0V6RUFJWH1SbkJmW11eKE9UMmspNGRPK04wK20wSnkvV3dJMERCKWZwKnxKflluaCJfZjBN''@;'; put 'put ''WSVyP291Q1s2ZVFxTzNRTlN3aztMIkkkM11+dHg6VUo/NGp8Uk1LWTk0ZXZ4Pi5+STxeTEwqWXc1KlllUGQuQ1s7bnRfeyRkVlUjbihoSFc7Mj9DPnBCRE9qNUByXmpDMm9bc1NMLm1TRF9OU0wuRzV0ZytPUFM8PkVAT0tsZDo2U2FsMDYuWUglN1RnUWduVW09dVc9dVIsQDR5NGRMQlM6ZSNP''@;'; put 'put ''Q0ZRb0JKO2huO293KyR+VEFCbkolbFQzYyM+b0h1P0oxNDJ0ekluSiVse3V0Z2FTUm95WGIwSVJwS3R6b0xHPyEpSVRjVWdUbW40TFBZTSlsVW8uWnRDcjRDWkJTS0dPay9aNCMwTHdvLjIuKj10QjZBeCplJTZbZS9DdHhHWkJVa2RbN2loZGhIamcxNDh0Vl4yVysheD0zbnZ1bkU4RUN5WC83''@;'; put 'put ''QFBbVTZuTU13YjMyUzdvTyV3K1BDbEwzO00lODQiNF90Ky5JcjAzLE82P0ZKR2JbQXtEZy5YQEhYU1VmLDREXiUlJHBVfUJGR0Nre3hxbkp1IWZfT1VrTmMsYkkpeypHSl0icHRLNl0idyFSXT4yKyRPL3hVKkJzQ3FifChNRCZXTXdwdC5AS1MlUlFhMmo+OkFAMGRCeUFBPyJGMUFAamcyVz9N''@;'; put 'put ''RE1jNmMkPF1VM0k/I0JYeUhFVVloUWI5bm5qIktMYHQ2aSVnRkhASnpDP05nJG9BWUMvYG5udVV8VXA+Wz9GRHZZK3orekwpeD1XVVd0KEJEeEVFQTZnJGN0eVdNLGYiM0kqYnI/Q3lXL3lubE5eVntaJF5VYzpXMzA7UVhRezZzK3sqLFd4Q11wMC5uZ2g0QVtEdlZQeFNETTAyIkluJjo2ZVpA''@;'; put 'put ''d145QUkkYygzRnY5PD1vQDJWdWd4S0QkNEJOO29TNy9UPy9GTTo2WnY5ZzxmX3xuYk50ZkUvTl9FYjQ3L305UGMieVVGSjkhbW9uTzA7SVMrVEMzNX00e3QjQmB9d0B6PX4+JnVVQzhLbntHRXo9YkBRIj1gUkl7VWo6MGJ7eXhHIkJCYDBVd2dqYyErI0N5SX5WOFJZenAuLD5IQkhGTjFLJTI0''@;'; put 'put ''JUcuVCxpe3tKb0Nbc113XWROK0Q5YCZnaExXaGZkRUBkI3dub29rUUcxWXphW3FVOnlnSnBjOjYiWThYPixeYWRqdU1PI2hram9TLHRZVVspdXRifFY4bz1UQkI3ZWtuYz88STVafU1GS0U/ZkJIRlZbbmJxL0VMbk9hMztJRVEpKX5NREs+VHwoQlV8KHRBc21gcENgb2JlL3NuOkV3YW52MXhk''@;'; put 'put ''I1o0eVhyKVRhZkhINyEuSFU0QjNDamZQMyNUZ3Q6QXtJazBHMFIvRitGeW89QWprPVUsLE9NVTBueEpARzcuUWNXWEtOe0R7VUhIWUByWl9KOFJ6d0xvTyJHQU9BfVVGJWJ0dGIjZF5TREZQb2V6bCJJJWo/Q0tUVW1vdjNlby9EYFAvPUkuXjpHMCNbdlcpQihHSU5vV3UhZSVYa1czYXpjRjJU''@;'; put 'put ''cUs5PjFORkcyYUdPdSs4dmQiSGtPZ2ZNUVI4JDw8OGZvOnhuTHUwQ0FlblFwUkZbPUp8PnFDLEEuZzg8TU95NGs/fmRhM1tkJjZHMz90d0NlaVBJJWdQcCUkUFhsQ0pFdGg0czo2YzJ7eD4yTXVLQTFQTV81WlRjP3l7SCJPRlBpV1lrN2twQEpafT0hcDZxZ30yU2w6UkBfVzRDW2QoSy5eVy9p''@;'; put 'put ''dHljeVVCX3FDPXZ9TWQjJGs4bi9oIWsrcHMzQF5zK2ZIdmpdPztQSUosJEd0U0RQO1pRPFRUdEV1eEdKMXMuVS9NdERCKmRWaFQzQFQ7IkQ0P010el1xTy9gNncoPkZPRSEyMVt6V1BBU3hNRl5UOURMI18yRSJpWS5YLlhiVVl3OTBoJE9PXW9SQGtDfjB9PFtwL29tIn1KMyxdVHxWTzE7XnNu''@;'; put 'put ''VnV3T01SLmtrKXdEcSVMKXR3QDYmayUuOW58cFosPnRfMH1yW3p2YkglQFBzUjh6O1B6LnFudVV8QSpUO1dXdk1GVX0kZ0dPPls0Q0NCfmc0O3MuPj5GWDBPMGE6YFlvN1VqRiM0SGJdR3hiKys8RDlBK2kkZ0clJlduTWFId284PG1uRSI0XUJKJSVjMlAyTy9KLDcrRDpxfSNlMmswVz8wQkdN''@;'; put 'put ''RHZiWktPL2F0cE8vYFFAcnBDLkRTMjxZUWFjZDdrQEtPI0lkVS5ePUprRGJVOHh9TUZIdm4lVVpAWkI4eCpCO289Ti9UbCkrSlh+e1d+aDdgaT1PMy4+QUVJdFNEKGpYelI5ZDRsdH06OER0d0wvOVVnLmBFI2szNGp1d0NAc3pCLDYoW1s2QDYoWzM0MzNxIiVESVd+PWIjYy89WzAoJUEyTUJT''@;'; put 'put ''MDxRU2I0R3U1RE9FI2RoI1ZvYnVXd3FZb1pPTGRbe3tuVVtUZEhjSyp+Vio2YFBvQjBkS3pULyovQHdnWkBpMDd3RjYmJiJub0MwQ08kbiZqOmk9QkRhQkE0fU0lTiUkZ2I3cGF1SDdoKyhDQyldVE8kfTRMUnRkUlokT1ZpMChUXUZhRkhWY2lrdWtiNk9KTG9bQG1Ac1Vde2M5Oj4yQWlKK1kq''@;'; put 'put ''TkpvcEx8QTkwZUc8VXwwakEhNnc2N2VLb1UicDJbZXNHcFZGVSh5cXpPOipacGZ7T0R5VG9XWFVKc1VNeT5vMHpHM0NEImdRdnNWd2clW2hCSUg1QiFlOm96em1uN1t6WE83NzRFMHklaD86dSlkcUAmQD1GMDwjTzxvdyw1RUxOczBiXmtVNjw3T3hTYCM8UCRUYzMoXXlnWz5GWH5QXSJEdVtQ''@;'; put 'put ''YUhTXWFdKCRgV0dEWk05Vk4xIllkP3RGLzxSSUd9MGEvbzRiTVhHQnlZRXMkZzI6V0BhTWdaLE87LFRybCVJS1klSWxJN1AzeChPQkxESkZaS1g3b0BqWC9LTVh4PWtAX011NUs1VElbUlFRVEBEQnJFcn5SUVsyODVVMWhoSjFrbkU/R3lzQElZaitJdj5nVkIlJEFVWmtkL2Z8W1F3YDJTQ0Ni''@;'; put 'put ''U1VjIldxdDNWSWtSMUZKPUozKDVBSEo0Lnk6WS8zL30sNVF9dyVOKjZ6V0BCREdNd3xyemQ8VFZYZ3ZCdmh0VktDdStPTW9CW1BWNDIhZlRCKk5MT1VPfVtiQixDfmdDSytbRUF7ZGNXKUkiNWFRNWc4ZGM0dCwrQklXfmRefHMlPSg4N2RrTzNwQDZDXVBpVG1nNG5hfTpJN0cxd0dIS1EyYXAv''@;'; put 'put ''b1lOWUo2UilXRnc+ZVJQdSVHb0gqUElrL2psMG4lbG5nKTYqdEU/Q3hWLDdNNz9bcFspSTE/SiRyWUVRY0U+RWspRCxPL1F3ZiVtbmtYOkJNTFRUQGtSY0ksUnd9Q1dhe3t1Q09jPHk8MXt5TjFPTytrby9FVXQwfVI4UkxMJGdGJUJ0fUN5bWpkJWdgPk1BYUphbTRFd2F8eUIycTJhOkhiXXpo''@;'; put 'put ''ayguRVdAa1I5ZC9ZJVgpIUYjUioxYzh8eFQveS95L0N0X2E8UkYrTU1zan1aS09sY2BONjQ+dGV3SE0yYSgoJG46RWJHbEk6ITJvXzB3ZylbMShXRlRGZFBgcUlLOD1jQCZBa0RYSCVOLk5kb11AWDV8NHRYLENdSj9mfDckZ0MzJFhHVi5wMV5OPSRYTVNlI2U0ezR4M3FvMV5AVVVROF9fV3Rg''@;'; put 'put ''ITo2OmhWW2hrODwwOygydV90dU0xa2wrO081S3hpSXhFeTo+MEM2SjtEbCRLbyZMQ1BZemVHUG9Cdnh4YW1Wa3ArM3V5ZW5iU29+QHtBQkVLOUQzaktmSGtnbCtndiw/ZFsjTUhaLmRDUEpRPGxWSylbOVgkcWc4bFUxbk1ZeSo/XnA6ezJaWGxHWkJGS2lvYTp8YWNXUUlvJUBNcCN2bnE/JSwp''@;'; put 'put ''LHxXM15LU2o9eVVVdHREUUY6XVVrZjNvTGJTfFFJMnk6cW51b3x4dk4rNl56VUA2dS92NkViMjlESGIvbW9uNXQpQz5BO2x4Z2o0Ikw2SDN3N28haypUVXBfTzZIXyNjVU83d0AiQXFSIkhnfTlCYW19TSRUNSs0RChWe1orL3ZAQy4jQ3JyO2xFMzxbQnZReU9nSlFqOWMvdG9dLmszVjpeOi52''@;'; put 'put ''P3QoYkcrSFUmeW4wcTIsbkE4dk59TSZObitEXVREcUhkJS82UC8hQlMrakNOVHJ+ZzgsL2krK1oqRyhYamddNngoMng5ckc8Zkw6e3Y+WURHa3luUm90LEZ9W1BBYDVgcy5RP3hwYip3THlmaC49bUFCKzY1blA+LDNebiZeImJnMy4lenFEdEBaUD1Wa0YzTFg2bXBUOi5LVXZAPElXYWkpR0pz''@;'; put 'put ''LjtibjNPdSh3XmdoZGlkem5eYitiVyVqcW5Fa29We0t7Z0hVbHMueG5PLlhXQDRRZ2ZIWkk0N0h3NFpOeEcyalRjJXJxfF8+bzBDX1l1Mkh3bmNaKj98cnpPM252JjIwPSYpJmBqRDMjNT93NlZHOUpAJHJxcytATEAxUWFLMWskQyVxLzZbK29rXVciQSVPJGNVayQhbnMrOEhwSzVeNC5KJWIr''@;'; put 'put ''SFNtfUB6ZmskLkZ0PF1MRF9wZCVaW142KVQiMyQzImJpdGl6U1RoWD1FciQmYnBVLylaQXl2c0BbR1sydG9YRjpNYCpTUVVRXmp2WHo7UlFzLkolSXZIOGE4KGBsViUkdm4pK2BNMW1FdjNeN14xRkpobXV9RW1HWEo2ayVgJVhRQndfMSkrRGA3Yzg6YGhiMnhAXjlFcnI/XiF4a2RdaXJyJTNt''@;'; put 'put ''JTdrKkZQQihWQjAuSiw/bFY3b2hMJUJWa34yaSJ2ZGVwdm8uSmoobC5RbixgWi98VE1SeE0mZn1Ze1U7YC82cHJoRzN0IVlWKSQ3a2QzVTxCbG49NEslSFUhRXBSdHxuM2tkLzZHa092M1F6YCE6eWJkJWQuLlQiS0J5SXJZemA6LF4yezYrK1tPKUJwTnUkeCwuJm5xP1BCQkNRZ0YlXSh0QS5T''@;'; put 'put ''MWJoJGk2JUJrSi82Yzg2VnQzbSVNJXo8MD1AW1lDQTNaR0VJOnFkciRDQDM0eH1yLCp4eEdKTlNwdjpvRjp4RX1pOXROeXw8JjYsX1RTUDtkeF1rPT1UUy82Lypfbk4iIVklOnBaQGs5PUBbPHVveWZkRTVlSEtAOVg5TyM2P14uXlFvPnouSntXJTpYY0NYPUBLMm5rPEBnMGlrLkFhW00zVUpf''@;'; put 'put ''MiE9bUE7VUlReD1HP2A/SkojNjFibl1aL2okby5HWEMzOlRFWz46VFN7e3R0UVhZWzpNMlReP2k+XXtEWjJ0YGJSbmM4NmBVbz56LkpwUihWKCYuXlFvbXovMkJHaD13VyVAPjojT2lXVXB6W00zM3c2WyYzO3FsVDEvUGFSU2l5Q1VmM3ZvPFdUdjYhVERrRFhpcGRVLEZPYHMzfDdNP1Feflp9''@;'; put 'put ''RiEhVD9+T2BFaE0vXX5UfSNBP1Fkfipddnd+fi59ZTsrZSo+LH5ae3BdaDZzVyx+UHtUKS9DQSI8fnp9RzdScXx+RH5aOjN9YH54fCVLWDQkfnh9ZkE1eSR+RXAifiJfNVMic2p+KSpkK19zcnxSNkF0Pn5dX3FQKGgieGZaSG9BPlc+JWRlfjI0Mkghb2ljZi8kKDYpXz1GejxvPG8uNHs8VTA8''@;'; put 'put ''b3lXYj9SJkdjT2NwWzVDP2BqRUEiRX5aJF0mYmkxK2djcGtuenk2IjEuYklPZHZWRTg1dFc+fjpffntCXUIiNn4kWk89O01rSFdSZXFpV343KVpjWCpBWXYrXnB3OkMhfUpAVSRyT1BPMFMhX309NHVKYm12Unl0VzJ8ODV0Vy40PGh5PylofH5LYkEiaXNHNmBzXSQ6cy5UfnM6c3JlX3NpV2g0''@;'; put 'put ''X3M1fmFmQiJJY3trUGFrM0hINThlcXp8Y2BlLzh9JXltYkt9YVBmZ0YvRzdGL0pHZE4xRUpvOXJSTDMiN3pidiJTSWgqZkF0U0RjMjJoQUllJHFwcztmcTl4Z00kV1Z7azhSelEoWj5HJWZ2P1N9OCg6ISFCOjpmWV1eOG9VYnErYnpwYlIpZzo/V19MOzRnezw2OU1lIzM7Zls2ZkBMXTczPXp+''@;'; put 'put ''PSZ3T2dnKmFedysoPWBUdXl6aGpUJmQ9PSpRcGoyXiIkNXNVKGR9SmZbTypAJlB1ZnBKTHgpWWZwOFl8QllLNW1hLGE/cWtCfDpfeyNHJCFfSX5AXUxRYEBRXj19fWFiNnBIeShYZyE4UFAvK3dxUmZjX0BzTytJW0dWd3xUSztjfiV2UElWci9dNFY2YFFJXWg5TSZjbVsmY0ZBXT96Tl5QVDks''@;'; put 'put ''KF1nMnxXYjx8aUwxazNtUTpYNHBMZTNLYno1dmwxYj54IVk6T1VNV0QlVyZnWlVsQChqMVssU187MUVgVVNeW31EODdpZSZHOUtEcVFJKH1dVXZmLmlNe3pfdmZ4cTVpTkBTMWZlSiNCYj42cTpePXI+dC8jP0NOXlVHX2VvOUs9PSNxV0Z2S09eUFRfNk42ZEBsd25nQGwvdyNpcTk7ZFJNWVdB''@;'; put 'put ''emN4alVFI24/dSFCckkleyQjczVLan52ZE0rRG9ULkkrJXFfQDR2Wyw+LFVGOTlTYlFmTVdIVlpmJCtVRnVON1ZLQHQ8VCRiZGgyXyYjanlmNCF7OXpIWmdBVzRtTSh3ITFfSDVnJmQ9VFROOyxmLHApJTx0dmdNcSxmYyZMYldOcj5ROlBkTzF3S2gyTiUpLyV6S2xvTkY9ZWBCKCVHITNhMGpP''@;'; put 'put ''fT9Cc1o2diQpJDolWV8wTVl5TiRTSllzPTtsKl4hYzxwd2BZNnphM1tSQzFeU2xNelU9Yn4rd2J4JFkmSStrR0xiMD5JXSk9OD58K3diMj4lUDJiIi8hL1NNIzolIVpebHpdU3gsPyVpYnche1V8MWwxfWdNIWtbckxZfVp6aWY4SHx8ZlUiPWtdOnAvZkd3YHpwUEAlUT02YU5yLzZGemExUGdC''@;'; put 'put ''Vl9tI1pwSn09XiZTOikhYyZRRTVtQHI3OlIhZ1JbcG9qdy86PC87TSEmUU82PF0jb3F9O3hUWXg3RlZxPnwrZVIhPyk9azJtZCoxPmVvSTE8Mz4jTzxHMzFgejxHNjlrW1E8eVZvaHBec0BKW3FAM1ZkJDozOnJ3IUVJMlZFfntNL2hpLHZ+SV1zbC5RVm4qW2kyPW5maH5pRF97Iy48TXVjNXMs''@;'; put 'put ''Q2JRKW5VUm5AYHQrcGtYbEwlUT02cGo8Lm18JWw9XXs/XWQ6JGBUXXdWI2YodHA+UXxrZDAlTyVNXngsLyN1eU9nJUx6KV49dyprN3JKZCREVjJjQXxuVVZ6XTRfZFdvVSY9OjJSLjFhdUddb1NyKTd2Pmt+bWFoWGckVTJFNFZgXVBaSVJvakNmLFN6MDNxX1siT3RAMz02UUgmSz87aTNieFJm''@;'; put 'put ''T3owKSpdXml+Y1d3QExMKnJPTEg1e2w1Yi9vW2IxXVYyRyZsT01lZXMrOTFCdl9wbUcmeTkval49aFBaYmxXSW1lVkYjWi5aVk9fMVplekYxN01LX2hTcXtpZThhLC5SYmFyZ10vX01FZmwiZCZxcXtpZyYuc2FGYC84QHMvMTBnWTY4amRpOERVNilTdk9iUSpLeFByZzVAe14xNiRTWjBzYTYz''@;'; put 'put ''aHM3OTozRmVbZyh6bV1qa1dOPHBdPGJhanNPKyhbckhwe10vcDg2QlFoMUdIVkZdUyZjbVZBazdoO2tFRVQpZyVtb1ROX0hqSj5YOnBOTzFIPl09ZGIiL0w6YmRoJmM2TShgdz06JUo4YUhnQjs8eTgzfE81JDVOXSpBYDskWFQ3NltsfCVsKi9kWj9PMXRIJkRgTW4pamt8NkN+MDxqa3xLYVYh''@;'; put 'put ''WzhJWXkje2pOemBZb1IuImc6WE83TShoYlJwZFBNQEQxUWI4X0FSIXxZQCIlQTh7ZDA3LzYyYVs8YmFPZEIlfk5CLiNxImRwR0kmLzg1QlFoT3IyXzZedkgrUWBJJkY1VjlreE11KVN9QDhIcTZVQWFyM3M7Oy56OV1WY3xXRFMjTXFOcjJfY1hhPEouJilzdHdlaHNyMFJrS3xFOiFFYjoibzhA''@;'; put 'put ''P1J3fSw8Q2wwPWZgS1EhJUxhWUR5MUd7Mz1hITBQOmZ4PjFJRWdjYUZncyo7ZC87XiE+QF9nOnIhTF88PnAsZigvPVVwKjVELjt9b1VQKVlwcD00UXEjITBGeS9wentrXk1+XnwxZUs5ZDJiV2xwb3Z2cXhjKDZ6NXNZdzBHQEhpMVBMSDVONk5ZfGtZTkRWT288Tkw6QiglR15PL1FGKDp6V2ZB''@;'; put 'put ''ZV1lcU4kUnkkIk9RaXI6bWwvelBkUWlyOlp7QGxqTklXQi9PfX5WLi8zXTFOIXFnKU1gXTsxcDVsaiNucV9AM0NQIWM2NUBYTmhHZF8kdVgydz5dWiExRyYsaWYqMCp5IVddWEleekxyUWF0XWZvQzlRK1JkVntYNSRQaCxJK1ZsWWZJaEwkWV9JQF8/W2RJOGtbZGJYJUdFNy94MFtnQjVpYFR6''@;'; put 'put ''U11oOFVkaHM9fV4lNFUzNmRuTisqUEh9T2dsS3pzZGV1bylWbXYsOkAmdlJTLFVeTnw1YyxzZzFOb3csXzZAI0RJYjYuNX06MytVTXJRcT0+KzRnKjohcX0rL00lUU82Ukg4JjwrK0BMUiYuUzB1OSVqN2F7a1UmeCk4OWl7OlhNcSFxdyFYZFkmNzohcXBqWjFlbGZWXzdATihAM089YkNiSyNa''@;'; put 'put ''eUpfMFBkMjI5VFYqU1FEYlFJPlNne3k2PSVSLmViT3xpOT4lQEI4b2owYUlzWks7c3pPUGR1cVdkS2ZUOlA9cG0rWiwoPilrZkk1YFE3alZ3OHU9bGojQFNieltuSG1RaCVBaEd8SS47R2p1ckBmNXp6IzklRXhEbyE/O2tafU5eWyxDO1ZiIi8ocTZSXT1hOWxyQ01rbUc5Oyt4ITYwQ3BTXkJs''@;'; put 'put ''QiR2Z3R7P1BKUlg9eTBNKGhzYHtSayklUiExMUw9XVNXbyIlUG1ydWtZInByRXhVMlFUeCFdXiVueVJxNFo0ZUY9cGs8PUV6cyVCKUU+KWteQzY4Yj1DeC9wYCF4IUJ8WT1IJmZxb1Q2PF1VQ0VhRHxJSVZ3M0M+Vl54LHchR2o0OG5kWCN+azFtZ195PHMhWD1IWmFWJG56ey4/S2l2KWhdI3FA''@;'; put 'put ''NyZ8bSk2Z3Q8JX5qPkcpQmIqO35NR1A+X3I9ZihTempNOmZwZiFLKDlVLjl2dDt2YT5JczJ3OGRARSNdWUxwPTw3M3ljNStZaHkzYVZoX002VHJPcVBgQHV9NiZKSzhvalMyKnphVklQcXBhOzh3MD1TZzxqOElxQmghJHBxS2RDXXpGXiRPKzxza3s/O3AmQWV2JVVHVl5lPXpmV00lUT0/S3tx''@;'; put 'put ''Xyk6bVpzc2VLOGsoViZQJHFNcjZrKFJHOzNscTtkSUo7by9iQ155Yng6YzJOazJiOV5XbV8renpqJHxNSDUsLHt3dmtBYSFwYSx2MHowUGs6enpVXiVXbH44QCNWXnwwfnJEenY6QGF+aztObzsjJVIuIiFgTUxNe0koOH1Ac2VeTnJoUigkL1R2ZHdSQyI1fE1neV92Z3NIQCw1PTw8empoZCQ6''@;'; put 'put ''elIhSzhRKCMqR29BN1EoJTcjTm1rTW9kZTxTbEQ5UWVxYHA/T2w0NjBZJnlsYm59LHFnSEswNlBpZnF4bTs6TW87OHF4JF8pbUcrLDtpaHR2aGIiLyFqWm5HKFU9UV1+UDNjRHguY2MlZ21Yc3FOMnZrMUpraWBXTTk6RF94IV0mb1dzOk59PG0jRTpeJTt8YkoyM21aNnpNZER8Tio0KSlBbENo''@;'; put 'put ''LlssMXRoIlpSdSFsVHZXckBtak5DLj1lXyZXdX5aWytMRVA8OjNSIzIwNjAkPztlP1JZIUFsLHU7ZCpyeGcyOX1MVDJeJkxvS0p9cFB5aFZIaU15aFZaPDpTUDw+P29tWm4qWCkyWUYmMVdgaDhFL3ojXm9udzxVKG0scVlGWkA2YzUrd349XjMlI1JTZVkmTnFEOkI3OmRZOHkhKzV2PUF5ajlU''@;'; put 'put ''PVM8eDdKX20yeVZkITYvTjFiZVglaGZDfmloUn0lT2ksZyhwR3E4eTNkcTdxYTs9dGk/MFo+MUw6eSR4IzxmR2N1ejBLKFZZUEQ+dGJPX1BUQnZZPXtXe2dzdkdWQlZnYU9xL2ZfNlg2c0x0SnR8ZXNoRSg9JDhyeiIlbyxiZ1lGTVciREs7MjBZP1soQytlKEVAKmpmcExZa2JrUWghLl5VMTQ4''@;'; put 'put ''Qj5dYn42eEcxdUpfXmZ4YnZRPWJNWkxlX1pKW1RxbE9OPiw7QXxmJlFKOVEkMmFLM1lkJnNOSDRlTl5CazEwPWwyIiVtdzohcXhbUlIubUtqbV1lYF4mbEp6dyxseV9WcH1kN31uTytfNkpfXmY4MzxHZlZ6L0o1Ul5GTHU5PFNscVpkXVpJJT5CL105JkskOS87clokSTRyTkZlTzwkK1gxS2gs''@;'; put 'put ''WmFfSChbbkcmaSZoVndxN15KRnIvPnBkX0VrVF5CdmVWYXpVLl9eZFAkMjw7R29sSVlWd3FrNVRkQz4rMHkzWGR2UyExam91SyEzcCxDOzwhW0lRJkQyTlBPKHZRPWIrfWg7NFU0bUNbX3VBblpucEAiNVsscTsuSjJnbzg6eDEwMWgjcWU7YHRbJX5qLCVYMU0sV281OGZ1PGIwbD9vXV58NTJ9''@;'; put 'put ''UGhoaTArcWg9aWwkWD1tTW9KKWpJPyRqNTp0bDF8fGxabVZvZURpOyFxIyVdYHpNYXpoPGpSUGc/ZXJNRTFJYnxAZ3wsaWRUZE4wTCwucDhFamNSZm9HVmd7aXl3cXM6fns1bS85SUsmfEReUy5xTSEldSw8d1tnNix5PHMhREkrcFRtMk5qZUBaWXk9IXFUY0BjS25ZZHk1S140VjZrKD4sLHgv''@;'; put 'put ''YldQTyh7MStAcWhfPCtsSWsxR2BvTXEocSttejJoKD4sYDo1UGxeeHBKYX57N3wzYTNxckdwUHE+fE89Ynk+YEApRDl6ZVJGZUVNS3hEb0lSeFEyUT1iP29edihwTXloVmpPQnZKXyFTSChtLFttfFs9anI6dW9yKTtkOV5PP35NRVJLWi93YCZFcVZucW1vOEducz5AKy9VWihnez9tLE1lODIl''@;'; put 'put ''dFV7WXskRXkkcipATDFZWnhmMCooWU1IZDI7MFtBeSRwPkw+UVBSO01xRHFkcSYlMFRXMig1LzBwLD15WEkjKWAmN1JgQEw+UiFyXk47QXhobG9ta1A3QDQ+TD4uZUk5JF1NKywufFBaYis/eUlIITI+NGVvMFIhPXpiaGhlTWdoI3xeW25BSGk4QSYpL0huOSMjSF8/TXgxJGwxJnB4ZWM7MCoh''@;'; put 'put ''akk5NVB8QDJKNGx0cks7Sk1xOWVdQV0yQDUsRGclen1wZnI2bCxkOUAsaWFuRUkvZmBnOEBqUl1lMHBNKCEqb2YvUWZfOF07a0EycmAoIyh9RzFoYjAqdUtqezVhWylKY0g0fVB8MC8pZnloVmYqN14kfVpEc3BIcUFGRl82YXsoI0BUK3FrO2cjNDxqZCRhOkg6VTEhX1VTZEAvbjA7YEdOcTN6''@;'; put 'put ''eTN+cDRwSElnPz9ZW3AzPjJwSygkIXRUWiR8I0txTWhzPT1rUUVpO2BpLmlAS0d8Qn5KOzRpdTlCQChlUj5me1ElUCZGYiw4WSRWYGNLZSguc0c+YjlrXTZPR1gpWnMsJnhJZ3whIWosaU42UmZpdnxQSStiKVp7Qk9ObE1ze1p8QEgmI0x1WVoobG9fKk16YjE6I306cHYpeiRqenNaS3okTnly''@;'; put 'put ''OkNuODN0O0NuXmkyYipWek8vaG0/NjhDZkxwTzZDKDVHWWo4QElLRlM0TkVqTHBFKEBSZ2VSe1dmXz1vPGVgOlghLH5QPWE9O3JlPz1OYHplZmYqMmkxXzgybHEwT2h2Uz5uKDhuXjBtWjcob2t5OXg2IVQyOnJ1bHxbRT5hMTFmL2pwcihTUDxnfFh5LzoqO1BwQzlQWnVOTns/eWlhNW17XlN7''@;'; put 'put ''cVQ9Ym5zMmx3TzJ6RjRrYiYpK2JuYHF4WyV3Y0phVyNkJCQwTm81JHIzeGVlO1hdRGxoUEJbMj9AbF82RjZONnt6MEssbVFyMXBQNWlgJFlZcU1oWV19WjhuemVQJSldOUA/Uk1zdE9POlo5WT8jcSZSRFBrKkR8K3B0S14qLDk5S0RxVGckVWheTjs7XmJ2c0owaiNZZmQkYkJhYGEmdlhkdSwv''@;'; put 'put ''KzZ7Mll9ez46N1E1TnVOKjRaSCRIKmJ+UEhWT1VXc3Q2LjxrZGwhQCtWd0xkRjlfXX07SGs4XStJUTBGOj9mT285UW1kZDJLK0AqTVV8Nj5Yan0wJFpib2pbJmZsMi9bJipeNSNuMC84X108OzdRL05NcChrWnsjNXxoRClIWEZ1aVU8O14uQ2w4Y0FUSGVDWFZ7QzIoYCQ3UC5+aDJic0Rsd2Ip''@;'; put 'put ''KSZSM0pqeUB7TTAjUEZSLHlWTjFZKU8sZG5lJmRsPWtPel0mWDooUyM4czpPYUQyfUdtWVAlZDpAXyszd0svay9NZTZhMHZeNjsjIzU9Pml7eikqLGV6T3ZSK3BSNUU7N1F0aDgxX11JfFVkNSZSZDgjLmt4XmdZdGE/bT19I2Q3Nz9iJDd4JnpRblMqam1kVnsoakImYVJQZTd3Wkh2fCNkQzJj''@;'; put 'put ''QG9UQSxpI2FWMi8halswSjhpLFhaMW1KIWdfSzZYV0hqcmcudFIydV8veypsWVQ8Zl1vYmNNXjFWSjZCYigqZ3JvXU5fKD01X1BgPX1rN2JEKDB4Sz19VipIa0xkUz43MVEwIWx3Y2lCJl07bjV1KSUiNDI9ZThmP1MlbHc3UUwrcW99I3JnNkJOJnpRLmRRZi5dPGFmd2Z5cSs3UV8/XVMrO21s''@;'; put 'put ''dn5zclc5Kl42ZTVhNTZNOnNTdFN+MHFndUpeTTg7P2ZgLEYxRXBfNzo1YlRFfTtkRHw2PXcqKWxPMUVpNTY9LGBTdlN2UyExPCNFPztreSRdN2lEezdpRCs5TjZ1OS9eXzw7Xm1NWCQvenJwd2dpUHdoKCVDPEQyciwobTFxR2s7bCZMYSwoKVcuXzZiQH1mL103UWVUJmxhcmhVc3xbRys7Q01+''@;'; put 'put ''XV42dz11OyY5QTkpeHdzQntfels7RyhRJl5ZNk5wVHVofEBdWnxJUCZpJnUsZWxOUTM5KzluQHMsQW8hTmYyRzFyKSJefEYjNiw9em5UOGIhdGZKNmp5fHcqdUtSMVZTcEN9O0wsQXNkK2lDN08/IWJ8NG9EJWtmcn1HWjAmQENRTl8uOiU4d1ZTcFs3WEAzKHEhTnZ8NjxCeUY4M0A6Vk4wTHs8''@;'; put 'put ''ITBIKHV5fHdRI2c2T2lzP3g4X0Y5VHttRHpBeFo5TyxSPU5dZnE6OXBDa0lfMnYmOFBESnBoTGRrajZlPVFQK2FWNU16VXVgXTcrPFc6NE5Ic2NvVm91dTJmRVRKI2VzImR+K205UTpBdlFkajJMKEF8SSFlNmchUmVnKCJPWFNkM2N8e2RzZnh+fjchdTk6RH1+N3BqZTFhZ3RIPmZVOC9fT0U4''@;'; put 'put ''YTl6aGpRZGoyZXtCKHEhZndZQEhNfXByTT8hPHo4YTpSdlsySyp3ImlfN2lEWiROZEMkeiZ3TXhhI2k2UVA+fVp0JE8xXSRTJTRnQjt4ZTNsM1hPMS9kOCtNZH4wZk5ZZy5qZTYuK0ckYHdIQE5ZZ25nPE8qMU9Kbjxuel8rcSRAfTcvTih6bGxjIWpiPCxOeSxAV3cqUG1xMCF7fHF6cz1aMVBQ''@;'; put 'put ''UVA1KTdANmFOfXswWXsjUy5yMWd1MCgleTkwSzswNWpudihZIlJIUV9hXVJeXTZuMkMyX3JGVltoVWdLSzVvQmZEelV4OXM5UXEpc2IpVDtaX0pkMHoxaFMoTVZoYEZqUWhVKDpTK3JacTN2L3c3QG5qWjFdPU5RQD1GeE9YPzE0Xl9hTVchODc2WD1TSThOOCUoIThBNXYvd2J3RU1rSls6e3x5''@;'; put 'put ''VnNAKzZ3cThdSiNrYGNOYjdreUVlVCFNeV8rWjw0ZUl3NTlYWjJeW3NsVmhgQzJoYGJCJmBqLDtJKmBTeTlDdysrPUJVT15+VkkqKyYrXjNrK3o8MkhwWClfWn45Myp1M1k+SV5RJkkrK2Z1czJsN2FQcFtSSlFJez9tRyM0ZUA/KWp2UiZYQDYvazQ+N19Me3VTc3pZbFFfVF01NjQ/NHA1Tk1z''@;'; put 'put ''bkNUXzw7N1EwcmY2JlI+ODRxKGEpbD0zSWw1JlZycntzKWY2cntfXTw7ODljaDEjRnteJlE6UTpQZHVxMU9DaiNRbl0pOSI9PDlPTDY4flM9ZXUyX2xZLiRIUy5rN15wQWQiWiIqInpXMGkyRC43JiE3WHtWak5eQ2hWVUp8b3V2ISZ2YEBlPj5IQ2p7YngxYXJaaVNuUV9BfEtJeWUpYXp0MDpm''@;'; put 'put ''di88Qi9KZlBlUEpTZEMrRHk7YzpEcTp3c1t6TU5qVEA0Zlo1KGI3e0JwVT9sJXlQZSE8PHZGKjRwKyMlYzNCSGRiTFphL3RyWnJnanojIz9GakdRQXlXLyM+bV9TY2tYT2UyX3lUYmtDMDB7UE1JZ1hOSj9gIXh6dTE1PVlzb0F2S0B9S2VBS085eExtckg3TGB8fkRFUF4yPkpsfDdTQz81Uk8r''@;'; put 'put ''NVJdZj1oWSJLaClrIzpDdW83SEdzelE7Lk9hRHM0aXNQYjlRcWFIKG9Fd2cpTGZSZloxQmFMPWZELjRJTWxeZXArdyhBOihOezZWVC56PS8kQF1mNksuWVkwdHhuNHVJcXVoWWRbXWZeUDBja1pXeD1YQ1JheW1xTkVDaCo0UyFJSjFLR3k3PW02TiNOL1M7eERrUTZfd3drY2lScU9JZmhMZjg+''@;'; put 'put ''b25FLCE8OmU3UENDUkhPTTB6ZzxMK1c1R3MxXzBnPlA3b3U6T0c7KDNgal5AbkRabHM1TiYhdTtbSjhRRGFkbG5yQ3NjbkVONXVOSm1GO2UyaUNedUg3NDQqVEV6dWF1JipTVk5eJD0wJDQ3U1NdMGtSOFIkKlN+QixkOCp3LikjXnljTC9mJVF3bDFKRyI2UGZ1V2N2RSVBaFNPeThnPTR9bkJU''@;'; put 'put ''VT81cl5QaUVDOl1RbU9GO1lvcUs/Wng7bTdiQyNLYilyT0Y7bjtlNih5VHplN2JDYiV9cmxoY3tLeV91Q2ZxL1VjI0V0elRxPDgoZXNaKnUlZ0V3NzR6SmMyWDtCNlE7QTVMRmAxN1BJNXpKVUNCZTIvUzsqIiliRWI1WTo6JikiQ1M2RToyXUNOJSlGKlpkKTolWDtQX0RjIzNdZm1aUSs+N1As''@;'; put 'put ''N3guMF9Rel5kUDtHLFtkXVlocTNXVm9gKEh0KEs5P2pGJnhSPDM3UWplMndFRjNhaTRCT3I8VWkreF8qVV5YMW9QVkAiZEhkOFdqTmhyQiJLSloxbzxXQVcqNW9nQk1QZmpGT2lwczw8X302Rl80b2h4SElyeyZpUUdmPFlkZWc6T1Z2LFJNXkZFdXFDJD95Oi9OQWs/N3dWLHdoKj1oe3wpOCQ6''@;'; put 'put ''ZFtAdHUyTGZQZTYhdU0mTEJac1lhcGxCR08lRTVnQk1CIWovNytSZGFwaHQ4KGFJMjl2L25afUo1fF9LcWVOdSZrRGxvKVJNVEY2M0BRVmBmSnMrUEIhP0xGeEh2RztTNklHJCNTR2kkVGQ1eV9oODc6RE5BLi4+fURnP0lZcWx9UkYlU1l4S0dKZURAUV5QWnFqK3w+cnBsd0YqMWkyQWg9PGYo''@;'; put 'put ''W2BSaHQmfGU4dUI/aTppI2VANFlLUixHSil9LkcpLC59P2ROUFBiaFNOPFNmcWAuR3lCT04+eHkxOVMxNHIxaGx3MWwyd28qKkJmSUVjN1NGS15bd3YvZjg2ZHZiYyl7MjFSRiNGcTlRUip6MH45cGB5MWMrNDozdjNkLnp+JkhQUkF5O31xQClmNyZCTmklQHJqZkM3T1p0Jkx+THcuTmNnSmdE''@;'; put 'put ''ckxhZHhmYUpqalR5ci97UlBiMmBbUkQ4d2VGdXtBTkIjfCgzNz06YTJpe2pXQjRuOFlGKjl0Jk84I1FSJjNCU3xKWlU6YTJpJEdSMkl7fn5yOD54QjFXWD9JIVldSjNPaEE5W3BIPyVxYGdVKyEyWUdGJEdPZiJgUVlFckEiUTl4YnN1fUVrLjZWPHJKcD1ZWlhbYnJJIXwpNjd+YWFDNVVSVS9r''@;'; put 'put ''IjBXXlB1aVAsaWEkN3YvQS4yZHtYXXVObD1jQjZOI0FaSUdQbWlNek95OXVHaixzK2QjYj8ld0hUWTpMI1djNXhzSEBFd0dxcXhWdFZVSipGRmFMSVlSK1FnYVZLJHZ9QGl5Z0VHRGB1QjU5KCFJI2N0KyxtPmMuUm91R3R8WDxFXzdURiR2QHNJeX4sWWUrT2o6Kkh2LHs3e1srLzJMTmNTUXk7''@;'; put 'put ''TUI3Yng0KFM1UnA6aDQxRT4lJCRmPCFFT0IoUzYhM21JNT4ybFpydStvUCtjKWhKLHhSWSxiczlsWmo2OHcleWBSLDVqLzQxJHZ6OHEwMkAlSV9DQEEoY3t2MC5daih2W0NkNklyQkp1b21ZKUw1cWp4U0YjekdRLk1IZ0E/dEI8ZkF9MS90QmZiazFQVVZYN3Y5TG4wfmB4UjQpRndEZjsmOl4h''@;'; put 'put ''RmplX3ZkOVpMdkQqNSJ0bGZENld7djJkWHkyc0IrKHF1Nk9jTX50bmVxKVhjbit7QDVMWWV9NDF0OTBub2c6fkhMPXBbRlhxMCg1IVowX1hlZltKdD08N1JEX2puOE1+TGNNRU1jLyEiYjdwTWwmZXIsWCN1czRlRWx9fSlIN2Y6SywmVFJIInckK2BKYWlSOUskVVJ4QyZXZ2d7MH5SNkN9UTBD''@;'; put 'put ''bTV3bUFrWl1FSyRhOEZOJShbdHg9T08zZ1VHTUAlK3F6Ijh0THVPeEpUWFNqdSFrVzJTZkx5PT5Xayk1VmJKeUI1RzJ0IzwrdFBMLDNCJjQoeGQ5SnU2NlsvNFd7MGBjYFhIRD5sV29hIX1ST1hZUWZgJE1VR1NacjJML1JKXVFKZ29DRmh8LFVPT3B+YEZWXUJIdjtmW0g2RjZSRTBOWH1SQnVy''@;'; put 'put ''T3VHLno6b05PVDM8aGldInkxLn1ZOCkhNVVEd1oxWmRMQXVOWHJSNC8yVW1DaCQxLyN3YCgiOV9kc3M/ckhnaGx0IypaOHkrfEMxVTdgWCxOZnh2Ryk8R0tpeH1DQzZhY2orQ0ZkbHRCSkROJEFTWX1MSX1Zc0xYUzt5MkxhKV1wYj9VMkBBaTchNWJrJEQ3dCVGbk4/cGFFd0ouUy8qeyYoUWR6''@;'; put 'put ''cUJ9SmUqY0VKRyNTdStIPTlKbCF9azcoWUBeQ08pW0JQQl0qZlh5Y1ZRJHpddU1BQEdXRGBBLnY7cSZBMVc+JTlQNG9DJHMpTzdhU3Zgakw/RCh2IkMkdzhbZ1deKF1PInk3ezJbK0Mke0ZOOSppSnk2SDdQan4hQlVReiVGenRQJTpMWk0rNm9XcGlGTE9sa0MuT3dCTnQmdEtBVnt0K3FXcSlD''@;'; put 'put ''SyRweTxTb1c6bXdvV3kyOSlbKnpibi94QiFXaFhTNzR5QCxVWFBhYmE7QWZ2dSk0Wj0wWVcoYGJLeCl5U0h0V0UpZlF0JmRNSkIyQG90PDl1bkcpWHg0eE4pRXhzc0AmUl13N05vZjlERCJQIl9OeHN7aTFMJVczWzV4bUd+TGxHek9NNzY1YHssKy4xO3luR1dTbEFNQGxsfnk/ZUdTQ0ZQdT1r''@;'; put 'put ''LEdWQld2aX17K3dYd2I6dWZET0cqW2M8cXg3I05tajtZUnwhYil7MSxAeWkleS9PX1tiNklrVmN5OVZ0X0ZiKXFmLE8weDY9USZLb08/STJDQXVaTlZULHViUkhLdGlNTUlMTHp2SUhqZFdacVBJa1JDIz8pMzU3Zkp3Z0Y0LF8xL3UxelltRmpkOGskWWc5Q2NEZlh4NW5+SWRgXkgwKWZLZSVJ''@;'; put 'put ''V0wwTks/Yy9adzN4bjdJem5lODZNeEIjTDc6WnhzSytXKVR4ZD5ASH5odCJGaGxZT0E7bTQzYk5BTD1OfWMzMiMiQzhMYGRLSGhJPVFlJW9XWFptXXwvblpHRm1sZVp0bFM7O2NgdlIyWFJ9ZDA0PXlUJTEwSX5iSURaSisxRCxPTHtqSEA0ImBIUHEmYjM3NyU1eTo3IndnfG0wb1d0YyZNYl8v''@;'; put 'put ''LmMsNnMzLlRkLGBBPnhXVUlAY2RvbTwwVlkpRSZvMnQ8NCRVeVs7T0NSa0gpdXxgMWxzY0tgNT98Uj51TkNpdW1fdVcuU1pgKHYjLk88S31EWiZ0dEwqOSl5VUNaWkEqSEdLUmJeLz5oQjVndDQvTFRxNGlXNVNJN3Z9JmoqYTlhY3wycDEsc2BYQkU9fjZDJldicGQvW3RxMXtkemQydDJSdjVz''@;'; put 'put ''ODJdMEVUS2EkfGQ1NTh1fF9CQVUiMl1feVNhSU0yRztjKCJBeHlZfGVROyYvdDU/K1ZIUzVIQnk0dlcrdTFneUoocH5NNjQ0YyNXa3R6dU1+bTw2NkdPdUU7KGxsYTp2aWF8OjlHUVtjK2V4RDxFMnR9ekg/W0A6IzJWXm5QMlFqNlNNdFZLZmIlfUw9K008QyNHb1IlI2l3OENIdjdoTmdTPnZu''@;'; put 'put ''S0xWNVFTOEpRdzNfcG1nQnZscU8yIXk6Olk3ZD8/SW0vI3pPcXlhY05QMDUwRy9SZCk3Vy8jMlZsNUNGZiY4RURtQHY/V1EoYSRmbHlEQVEwdjw6YFo2VylYZW83dXNNY1h4RktLWDY0REhSTk1iJWRYWFg9THxXUyY2U0xlZkQyZ09QWmFaOU1tWXVNREtbPXYkIVp4TltaRFpFPiFYLGo5ZUl4''@;'; put 'put ''WnRCcFZzbzd1fnRkWj81WHtlQ1gpdC8yTDo5ZWNMZmc1eTRLYF5QIX01dGNAcFt+RCZaMnthYWhab15gbyM3ZCw6I1J0XmNxQitpTDdwLmgvfHpGezFsIkZTNjIpL2xQN3NiXz5OO1JqLyNRJDRFMTZzLi86N1g3KzZpJTgxbDoxL2B8OThFVTV6SlEiI1JPR1dvQXYjdkVKLkFKXlBibmx7Ikxz''@;'; put 'put ''RSY5WEVHWVI5KHZ4NlN1UnNDI0RbYEk4dGNfdlZpIlZdVzFvNENNdFdDRiU5WGBJWERiR1tHPFlTUEZCQVElTndseWk3WFk0NFl3V2FwQSlYWURHNWc8TDpxbU9NWSRXOUU8aFtZMlJYJTlYeT9wSHIhKyxeUHcxflllNG1PY3tlMkxeO0ZQQiRTMEx9SyFMQCYyXUZVfDIyTEtvVTg6VUxvTk1u''@;'; put 'put ''NDllKVsoYSN1cCY0Nm9LS0BYSjd8ZThoUzBkRkJBTU5vJXBtVDVqNXc/empZJjJoQyVFenE9KmpnVmxYMkhbSUc4RExhKGQqdCldIVoifEs2OWVBRFVDYSo7JHVXZnFTYT5CQ3pQZSsieD16PVoxV2MyMz1rMT98JkhQUXskelglJk5ybD0pYHBnTTZbUTtZKWRNZnRuWk1NSltRSj1FenpRQC5H''@;'; put 'put ''d0h8M3pMUXRJe0VJNGtEN29nSk1ZY15Hbz8xQjI2aWZbajEuWlsuRztDTWlXS2J0ejpsQncrc2VAL0hQQUQpVUxUd1dHR208NnVtXjN6Q0ooeyYkXUM5KHFPXWRdeXRvWjtESndXUW52WGFKRUZwdEhKLzNCQSVbSk94PHZUTCxOU3xJLk8xNDB8VVRFR2JsR0AxWFNzOHdCO1ImZkdxY35ZMjpZ''@;'; put 'put ''K1F2a304MF1jTUJhVjQ0Y1kiYyxFZ2R2cE1jZ1pWYTdra3NoJEJNRiNMSVgpOXx3TU19dlRjKS9PRVFfOHZncSt2RmAxQWV2QDArSG1FP2F3RnhkPHAoSlRgcTpWR0NfQ15DSjN6SXBEXj5tMEpzQ3UlJGxoY3Upa2xgamdSZHVQVCwuS2VPMWReSFdNaEVkbD9DSUxWUz5PckB4eHE9dSJ4MXtl''@;'; put 'put ''L3kyLnxlVyxsVGNHQSM+Rm51KT9OaV4qb0J+Ykc9ejE8IzNhLFhTQzdOJSkkLzg0WmI5RixHJlRlY0NJTkomRm5ucTZtMDhqWFhNTyhRXkxTaEIqY3FiS0psVyxsRGFAUyZCSUZEcSp5QkZ3R3RaWUc9e1R2eU9jd1pASWQ0aFhGUXk1K0U7Q31EWSlKVjsqdVZKW1N2OUJqNzYyQkRDMHhEPDBo''@;'; put 'put ''UGs/QXk9dFRtM2omck92SVNvYiwsLk9uIiEyakNULCIweW5SKWNCVGppYSYwamdOQj5XejJTXk5FTSlSRCNwOmh2dCR5OTRULF1NeHRFWnB4RkQhbFZCdTZIWjpXejJ5IzJ1c24lNFFzZ0RUek06M2s0amB5VkRzTXwxc1NlREliOC54P1ksJFN6aSIvIVlNLm9HVUUpNCZOS3lLJEJsbWlrMXEp''@;'; put 'put ''TC4hdVJCOWNxMF9iVXZpOTJiRyFsSip0NSU/P3MweFVtK21aYWs6Q3JZWiZGRlcwbEJUbVJMT21KM0dHenRHYExtMElheEskdzR5cVB0JmRLaVVJRXI2NEdhVCw1SHd0SV5BQUU6P2pIeU9HN1dEdGswT052KHJFSUlGWjZxcDM3K182Tjd2LE1iM0kvTj0vP2pBWChQbkdVY348WCNtVW5CcFpk''@;'; put 'put ''LC4pIVpxQkhBOmdQTU1Fe0M5NCs8YjBwd14xRk1zY0xrQEk9QlUlV0csRzUyZlVMVkQjMDpHOU53Okh2RG82U3htcVQiZSVmTWw5Ry9JdzR6cERWKU56YyMjRlZXNWNYJHtqVzgyWHd6aFB8NH5YS0N0dFZjTVsrLGI7Z01rRFY2QEhBYFcwTnAicHcifHE4THZ1eVhAL0EhYTAkOipAPUoiOXo5''@;'; put 'put ''ey9Mdi4sYzNxIUlJJTt2djxDVSJEfjFkYVMjKChCclNPN281NVlDbC9Mbzp0KmEvREcuZDUlPklmeDZWNXRYKX5bPkN4cHNmMSV1SUBAa1NKPUdEWll2UHJGbSFsVWw5KkVuTzcpbmUpPHExZVp3Unp0WjRzbWU5aHgpW0BlbkomeWJmW0xwVVFwWVBMUGRqT0d4WmhHS0hRLGU3dkc+bCRMRGxR''@;'; put 'put ''dXZFcyM6XytPb0FTQTtYcjI+aD5NfjEyWE1LZnp3bkFBcClQcHBNMXh9JE5KNnV4ekRmTip1K1M2VmJYfC8/L2gzYVpUdG4lRCE2RGs+bEtpb2cjQ0h7TD9mWi5iKzRPdD10YCMqcXxVNChkUmVzXkM4UnB3bm4+bEk/VU9XZXJJdiNFKW1oN0FUd1lwIkpUdns+KzI6eVJQYkxTNzxpR0E+bGN0''@;'; put 'put ''RSp2LHw5VzIza14ic3N6RFZwOGp3TWllbyF7a0J1aT0oN2w9YlA+bC4obzQlWEh3JV4kQXFGWkI4aSU7RSklPSZvOlYxKSVGL3U3K2BqJTtEWEUqL298MFtacUYlOi9sMToxJTdSMyY/WGE3ZXM+QilYNnkoWGs3NEolV1BveE1+NWl0OF9EInJ8bSJgIyIxXlgzdDd5ZXZYO0ciUUhrMCRjV1Rv''@;'; put 'put ''YWRHNVJTbC48QWcpMHldTjc0Si9PN2RPaVROamVdNlVpViNkWWw5aEUmRngscGQ6dzkhP3V0Vm0yX1N0ZiRqa3E7Zj0za1lWL2E0NmcyJTdSKyhEUDtjQC86Vz5oZ0p8ZVRGPmwrVztUdix8KX5MNXdwIV1BRik6Z1ZDMyVZIS9fSFt+bDZLZ3klWlo3ZDpUWDk1Zm1tOnxCPmFdX2ZXbDUiODdE''@;'; put 'put ''Vkphd2V0aHBHL3BzKnhkSy5nbENUWDEuNkNDbFpNcEJEUGFrZzUoeE4mTUckbUF3YWlNQGBLbzxMN1cuVEAuQURHVkhwQm0uVXxmeFlBUnBFTGlPInZaeHR1UWQ5RiZ0YSk9NX5QdzhfRXw+MUlQT2pHOnVJTnZEamQ0Tk52YV01W1pGbVVgaERSMisySTElVUd+amdTT0JIenJCcFh0Qk0sMkcv''@;'; put 'put ''Z2lER28sSF1dfC9He1dSJEVuWl5hcUpAPi9JbUMwOTA2PlZhQ0VvTkpxYXIyX3lLUzYofUVIW1BpSlYua0tDbDk2eD92ZTV4UjU0Szc7U0VIdlZaZDU2NEtYQkxyenZray9pfmVMSDt5Z117PFJaYV5PeS5GN3R0RWdZMEgpN0F4L0klQnVMR0slZ2FBTFZGQnEyJTs2KVd1YD9FTXBCQ00udjVQ''@;'; put 'put ''PTp4PGVHKSEwYTV1PWN6TDVxWUw+dWAjTVh9VTVdfkZpbXoxfCg8Zn1oNDpQXVs9K0YoNjdacEdfPn1YTiosYWw5OHYpND8oIWtNLnQ4P3prPFFUSTcwYEBqWyN4KFVEIShbRnJDeiFdNWAjV2wzSjtbelhMYjJpOFkiOXtSdlh9Zk57Kz40SSJMY0N0b2ErVWlZWWhdI0JJYlglSGlhMktLRndm''@;'; put 'put ''T3pOZTQoeD9UTEhlVnsyPlNnQXtYTkM+ZTs6V04jSjxTbFJJMHJCMXQ9fUZCPXQ6Z1hNcExBXj4sX3E4MyhTYzM1THhkfD0wZ0Y5fHlgdlI5Q0VaTE8+ViwrZ2leMDZJSXNpNDt5Z3lgTmNULDBHWyh+ZVhddXVPZzBBVDw/VGI1d21+RX1JaXRxeiNEZV1APk88IUJUbThjTm88KV9yKWZebV0i''@;'; put 'put ''VyZFUy5PYkF9QWU8cEZUWGpQKUFqekF9bjdLJGtfRXR9NDJFVkpRYz1jblhRRGE0YS45IWN1YzBhR2QsanwxQigvPXU6ISQjR2heKDlkOCNRQVBIX2ExZDohP09yPVZ3d0cmQS5oOVYxNHB1VSx8ZEBoPUJtTGQvSDVOMVpYQzZtMGdYTmp7dmE1cHU/PntGImpPa0k3fD9bO2BIKWI6NTdhI2d7''@;'; put 'put ''SmJMX0Q6ISxhfS81N0dKJk5uTE1pPDdMVVUsbk5+ejZbN25WSikkJkR3Nmp0KlhGZ15hM1tBMzt1THR3JTNqW1E4N2pyYVlzXXxCR09TaHA1M2lTKUNQVG1HZTp5NndLYSs4WHZMQVNCMVc6T1k1OiJJPFVFRXdtZWVrc34+YUlNM2ojMEt0NEtbWkI6S0N4blBiPVRjSW08JShRITJSNUVofTFI''@;'; put 'put ''anBSSVF3NGpZQmArLkRzT3QjcW44WUtAJmxoWHlKYFF3dT03QUpncj9Kd2czKnN6SlRrTF0mSTJuRWYjfkRHZCo3KixVLCNGYnQhKFdYcXVdPmkrTkJGKnVZbTxoWHBMRndYY3dJaU5+MWAob09ANypsWGU6THVJKkhRKE5CQChUKFlHbjBRbnxCbGFoTHB1aFhwJWZgbEVCZV8rfklmQEZNfnk7''@;'; put 'put ''QlN1QT9NTTtoMWR8PVgyQ29XQl5ER3ZqeFdxSU1pY1okWFFhK3gwOXkrUWJMe2N9dzVvOiFXL2A5UTIlOFB1KE40Y3VwejN5Y0MxfmRKPyR9RkhedChfbng1Y2Y4MV59VyVaUkNFa2s4fSFzVnM0OGRXNVtEY3wub1VAbFM9QkBqT2lJTihbTDdKWCtscmhWRXZXfEssZ1V6NjFEPWtqYH5gZU90''@;'; put 'put ''Ujd1IWNAKlpuQyRHP0VUYFtROz06YTJpW0RmYzJGb1tUUz84bjJwTCRHal42fWswJi5KcD1ZeD8uRkd+QXRFVXoqT21FJTpZQiQzZCR+VzdpJVROIXwyN1Q/T0J7fikjWENSZnt+SmlkdipuP34qSDRMJShufmRhY2V3fkw4KD1XR0lvYEN7L0t4MUVhUE41Y1t4enJRL1heb24zfFYzKEdiLFhb''@;'; put 'put ''Vn4zfV55ZDgwSyxyMX56b0IsSUpCI3xrY012KnVQeFguPUNnS10pPX1KT3BET3pVPFZbcyJiX0BEaSk6dD5tWXM7NXQuNUZYdUM3TU9BS0VkRmgjSFRXI00jO1QrNl1RaTp5d0s+NC5zSlZPKWZNdE4lYDt2K1FneUFLI3d8LHRTIWxjRzpXX15RSnhoJUVSKiYoSllkdFVPa35KNzApSDZiRUZF''@;'; put 'put ''cElPKXhZfUBnTkgkblB8SE4xaU5RJVNtVCspajl3L2FgYTRGbm4pTmsrJFRsbjpMVjIiW1EoI203P34/Y11LV0VZaFZITyMyWkNzND5+WXooQ3VNaHAjbk12O3xsRkpLV3ZtXWc0Km19TUhQeSpxKU8rQlFIYCt5eWlTSEchSGhEWk5VOG5pIi9DWS9YKGk0OmI9SW9nI1hsW1NTMFc7SktYaWdn''@;'; put 'put ''Z1YwOXVwbnV2TUt8cUE8RDFadTA3eSQzdUFIYTlKY1N5YXxifDwsKSowd2ZIQi88JGNvZiwuKkkqWFZfPi5RcUJiS3Nha29ObH52T3pMWnFNUnQjLlFpQz9wTC9eL3BwWlpRK2Eibk8iIkZuViUvXUdGMD5xRmY0dlJDeU9fNlFEP1RpWmd7fVdzbk8kc0ohT0ZCTj5eQzczZXY6Xyk5NUUzVDVF''@;'; put 'put ''ME19MnElfTIoWDJEYzcoOUp3RFY0ekFVKkNmaExPQD9uTGx6Z0tIQk5LSSpLQGVpVGlYSUxdViM5Qk1zVS9xOlhZPUpWXzArZ2duPXV4OV0oNXJwW2JgMlQzaVVgaSlWZkRfYEEpOXN2TjlGMzMxRnFfK24yV0JCVXc0YmgrIz90NHo4WVN6KCZlPzg9JkdUOywvQHgxbExjJj1HKDhFY2J2I19n''@;'; put 'put ''LyhheXlhdSRuTiV5MTx4ZVhSeS55VHhpQW1namVdInMqTURdNDUoUTNvZlFgKihkeFojQElpKGF5PUsjKm1fVHRHQnZOTVJdTmlLcT5RN3x2SXRzTCROYlhpcWFWOHIwKG9ENEYocT5LbUMrX3pjNUkwT0I5Q0V6Oz96L0Y1cGdiMkB2dFtKSGpkNStxaXFAezYoRFtAeH15ZXVwYFlTUCxAbXNV''@;'; put 'put ''Qi86dmpxfGYwKSNoL3c/VkRmO18vbjxDakU4KGJHJUVRM3VhW2c9aG0rJjUvRHtEci9BJjwzVSshWiF7bXd2ajUjbT1McWlhJF4iOzh8YnZ4W2NpN1s5SnpLJVVyKyozNkReWzFMRyFgczo2SD5xX1d8e0pCQUZHMEgvQClFLlRsWmpRejw/bSx3ZTlDemE3ak8mQ2NVZytKT21iZXYlIiQ4NE1t''@;'; put 'put ''bUB6IVo2PVQ3aigkJDM/YD5HRjdHY3dtVmxZT109IkdoNUNfTCNee05kfVJjaDJXenhAbEwwWipjLi5RXzVZbj97NDVraElbRkAyfmN9Sj5KPHZJOTw3K2lSeS5aemJiPD15PEVTQ2U/bzV0RldJZkIqJDMjK09CSzI0UihPTTNfcjJXXV96RGF4KlJCQjA5RVZyVXR0dDpEUE5wIzlVKkxScmNu''@;'; put 'put ''QXd7VDJJQ3ReUnF0fUV8S1lxYHlkSiVDeVVJSXMmS1U1Z2BUakw2Pm1YT0FOWkleYShKdzRnSnlYXmBmPHJyeFIuZGtAdn55MlQoUlUjTUlnKz8zR2hhayU1cjl0P0dxejRdMiwkRnxfay4yNCopW1ZZPU56LmRsWFdGQCgkfTUzZz1gWURmNGc/WUdWeHh8TitqV0o7KnJ+SHIlOyQ9PipmSTsx''@;'; put 'put ''KzRbZUAjdUZKIkIkcVJ7UVFrNUxpSz5YSGxbeiF5UWlFTVltc1drN3B4bjJLREI3amg9ZVNQK05Nd0RjQj9EXzN8TEQ3L2JASj5gJks8eDp8Xk5qdWxWfGlZV21CPS5bOiNGW1gwR3FiTmJCKmVCb0x0NXJ1YiUpRmpRPUcyeCw7Y1VXKGdUYl4iKFNTIUQ4QTIzKUF8KD1XanJ6bltLQWsyKU1Q''@;'; put 'put ''MCx8T21PTjJOP1tsI3pEeWJsQihoZ1QzZHUhOSkqMCNET34qI1F7SCg/LG9tOXE3MFdpaExCT2hITnVdPEwoXiUlPUl7JWBKQWNrUUAmU1BLP1QpQV48RUF2Mjkyd3VAaTJYQD5VIU1TblIrbVhVdXFNVDwhdnZjQSswa0Y3XV9nfltRTzI+N3lQP3hwdGwzPWc3cHJjaHhXXjhxVFJePkBKOEt9''@;'; put 'put ''LiFYXlQzVHNFVn06Q1dSUlIwQVYzKjwzdkd2ZXc5KythLGl6TnZRcj86YlRUV0s4ZD5Le3hZLn5XdVM5ZytMOjlDeWpLWEN2dUpDWmNSVzo3SCV5dXB3U3xnWk1KTSF3ZHhuRy90KmlramFvP3Z1KSJnS2tsW2t1L0A7ZFpxZz0kay5zWC44TXg3V0ovelhEeW5oU3tbUSZ2d0J+V0hWeEZVJkk3''@;'; put 'put ''NHc5IiRQfCtiLHxedmNdX3l8OU1NV3xXTl94aiM9KWEydCt2VDpMRV1RTFN6MXlxUWNKKVNOTE1rOCN2fSNFdVZfTWMxW3chWCg3VmBxS0tnXio0Wi9URVk6L0BPJEljeylnVnxQVykoIiIpNWB8RDsmOm89KmkqLGYyentrIj13RVc+ZnMhdVRFPHpCdX1bJG9tIUw+dWN3PWNMIlsmKWZwZSJq''@;'; put 'put ''OVUlbU54eSNyI3d8eTQ8Kng8cUl3ZGhsZzkoOmxaTEAxZWA7amt6WUl3QVtgQU5zc2deJil3QjBvV1k6aSRtUWksKCx7PGkzMXA9dkU+RjdDU0tMW2Z9bH5LM155KisoMV5SNklQKDd1fDJPb1pzI1JAVEpdJVRkdik8e3RneFZzKCFjc3RJRXlgMUduak4ieSlCWiEoWG14clR6NCNxaFpgQHQp''@;'; put 'put ''YFdhR1p4UzNuc0A0XXZ4dloiO2t8RnJiYj0iS1F+OlQ0fWQqMT9ZYE0seVhySXN5b0R6JS9bel9BIUNnJVhiYThhZnpbbUxPWj8kellCWnkrX0puQldRP3BYL3RHWSRpJjlqQzxiWClCdDdjZXxQTXxRKnZeSFlWcEJgRT5MQ356WCYkNVBXenN2RGEwKXF0ODhZZ3VDMzVwLiVydDhhP206dXBv''@;'; put 'put ''Y1JTMjNDSnl7KGdDeWIuclBPKz08ciZDU0Z9Vzx4fSJbQUdDayVCT1FUOTswdjRHaDVrYXI6MUBeX1dtXTtqRmpZPWV7bHM2Uix8cytOU2kzVWRQWEciTmgpc3YoTU5nWEcyd0EifUNNZ280ZWosUWooNmp3PShjVThFe3xUPENdKVh8cW1JPlhAe1l2N25QTiZGT0xgOXA+U048cWI0L1ZLV1pa''@;'; put 'put ''ej0qck54dENjYjpNI0xzSkZCIl5kbClvXV9wPm4pUTo6WFlIcEZYR0w/S3o7LClCb0lqVSsxL0NfRnszakslZ0xtYStIIUpVNEdKRkJLTERKMT1IeV8uL1BXNk0paUd8RkVYS3svSCxFKlhINEZKWk18YEJiKGNrJFUvNWFDTE1uPCVvTGYrSyRUZkRpSHZSUFdnKEB0K1dIPktPKG81NG5CI05m''@;'; put 'put ''d3QrbjZKQ1tGJG1yaWMuMlh+MjZDeUZ7VG8yRSYwbiwpSU5KVmNuIyxlJmgjZC82WF1kJDdvTXtHTU17QEdTRiJlYmRvS1dVaT97R2h9Pk9AUEVdZmNze3IxPU8ja0NSS1V3bVtBRDhVYzR7UmJFWWRFX3NQU29GYCQ1Zi47Uz9YelgiMnklWF5zRyU1RW9JdH0lWHo5XzRVKi5RZkBWNUM5cWF0''@;'; put 'put ''dHQjOGorY2dGRjt8V0N7SmllbV8hX1hydER9Q1ooYGs1VCpDXSU3UFcwT0Q0Jnd0OUxAenlCIlQvMU53cCJyU0hMOXd7Mj01dV09RzdYIWFZZiZOYjQrZ35fTFZYcW4reE0ueVY3bG4yMy94MTkpMH5wI1ZpKl16R09ORGV9PX4qeCtfJWNtS11INE98YnBjWXxLISJdYCJLRmlmcEloLFJSLy5n''@;'; put 'put ''V0E/NGl8ZSgwfkZQS2IsMmJmTU8raTcuImlVT3QqXnlXdCVeW2l7Pm41LkV0XTdqLmRIM0ZoQmRxbUg9X0tgNSklIkhET1QhdDBNXVFnOWdaYltDKV53dSRHZlpDd3VEbWxCZmV3KXV6MGErcVQjN3lGcUk2bXNLWGdsKHRhYElnRTZAbj5ZTkJ0TmpzaVJ5TWU1VlokUFdsW0Mqd0FJWHdpRUVN''@;'; put 'put ''aTQ0eWpWTD81PT1IPEAlWmFOajFBemJKYjxgTVBTRWJMbzpJfio2JGY5eXEvSzZlPjshaltzMVlhOEUlL31PN0UhdF0qVTM2ayFwXSwmWktlejFDSzw5eGhxMnFjJiRlc3lNXkdyT0Y2ZWE/UXB5JiteaVcjYSQ2Kz1bJkh8RzJsVndLUiJGK3dyJD5+ViNUU3FTcVQmPVY0UldJeiJjUD1RV0lC''@;'; put 'put ''Pkw+bz4uUDk/PF81c2hUYTF8endLSEZxT3FYZlNwcHBLNlpYZ3RUelQpLn5tV3owZ0clYj9HKHtpdlFTcn1fdmtiTWQ4MD0wIX5tX2NzbXJpS3FYR2s4RS5HLHZAdjNfOz0rdntWLlVfNSUod3tdRDAifjt9UWA7JSMsNzBLLDtAJXk6RCk7YUkvbDhIXiNjZ11AaT03fUFGS1YiOis3USVqJWNn''@;'; put 'put ''RFJNQmJzYl9BP0VgaHVadVorIj9DYGpuZT1dU0o5Jk1EKyVQfXh5WyJgbnxyZzB2UCtza2xWdzZaXWJ+Y0JLP1B7LmdJK1YjKkxkfWEmSyt4K3BTfmZaIkElUTlLIys7Mn5mayZyYiYvOTVdalR7VS9JMWsmUW5pVDw5fS99WFF6cnFXQEtIQWpufiQoclc5bmhdTlBlfU1zR3tePF9XeW5odjUp''@;'; put 'put ''Y31NNzVfW0poMDVzVkhGcU8qV3JpazhZZ2lPR0kjd3cqTjBZZzlOR0lBZHM9SGpSUntJOHh+ezhnc1E3NUBwcXxBIVh6T0E8eFdQWFNiSj5eP2I9UGY9ez9rIXdNPVEsYFhzaUZQKDM+UmwyUzU/Jm1BNG93SiE/R1k0NmsqKm4rY0V8VD9HOm5FYWE/KE5BdWJlZ1lyPTU/KEpyPWkpJm0ubn0v''@;'; put 'put ''dCR8eXo/byRJcFs0cTM6biNMTlVUKTApTT1ZQSs+aEpwUldYXkIyeSFSSEJLMD9gUCs7JHxESGkwSE0sbkNvR2cuV3owZzYjZ3w8TGBmPTglRT1vTGd7ZjE4cm1MbWwja21ed1ckY097V3RJKkZmTCImUjpbM3NAMU5iUihDT15TeXEvVEtZTFFAWkZxbkddKW0lbFIhQkFZNGZsYUNALHNFSndw''@;'; put 'put ''SXkiRDYzc3J3ZW5yM3Z3ISRILj5wJl5yWyk+JiltVmc9aVtfJTt7PHBjbXpkcXlzeX15fn19VDlpLHZSbU0uIUpKIlc8SklKYEB3OUNuIyNEeStMcSo9VUF7Nlc2Ql0sRHNxfklLempOX09Hfk1FI1RGNWp6JTMzXmV6b31qdS90MlJPJld7YEIuVX5aNEgzNmZCQWVmflcyKEF+Qm5LK1ZoWX0y''@;'; put 'put ''WUxMeU1Nfm9IUWdlKWQvQlpjVUgmNzNEODRgeElSdkdaMkYrT2VSIjx3dTEmaTdIaiE9UClvW0Q1X1JZe2JPei5PUDUleSZpLGE1Qmg0P15+eG99InAvSXljKE5KNTxveWMmJDc0QkZWUSt+TTU6cSk2fjJAbnIqY0g+bmoqfjJBPXg7dVcyOHJtK2xiKShtTGd8PHpscW0mUjppZDtnQylOPT8o''@;'; put 'put ''SlQmXzx9bUZTXT14O1ckWD0yOCwrYmV9ODt5T2d8PG5KJUVsR2khQFN6KzBiYW9zP1d2eDo9fSN3JEdUInNXcH0mM0tudGF4YjtNdnp+Q2NWUTBlTHY3P28mS0x2fTlEOnJaVUY6KGIvdUNHSjdaTVh3bkhMeS86RmxkaXpxaV5KZj1YMDhUdUw4JENRfH5YflhDcU9iVTJKKmJXMD9FVj87aDVg''@;'; put 'put ''JjgwQFN1cC9OSjgpeElSMyo+P1tfeHV+RElzKE53IVQsXyU2Kn5sWXIoQncjJHx8Jlhbfi9YaW4/YDFlKn56dSRNTyVXR2xuIUNfPmZ8QH5ybWlua31QZ3xzejQhVF98REVbfjBXaW4uYFVbKX5Kcyk+dFs5bSR9bUQ+fiNWaW5zP15FJH1gNXJqVDNId3N2UFY4aTczKUw9UmZnU05mPTJoXkU/''@;'; put 'put ''T20ySDNBJVZFQ29zT3ZJWEJ7UWI/Uk1YcSw+SiJ5NH5JenRneHlaYjkvPFBWQlJyT1dUImhqUDJaYW8sNFpFbklbbnNPZkl8ajQkemZbQnw1aGhGQmd+P3cwQHZYbXZZTE5VN19HMDFOMjohKUVyKT5dKT0ydCtAflBWaW5vP194I319PTReQiMwQEF1MkliWjpARU0oTU8xU01RJi41PHYlX1Rr''@;'; put 'put ''N2tvWzdSbHZ6K35+MkpiLlcwXURhU0ovXWNtVGZKJn1WJVdoLklRazV+TU4xeVBlfUtbMHtjNVAjLEk0UVtIZCZKT2sjRnU3ekYxb3U3ekZJI11zNjBkYWI+L3h9fVU9NEVDYk94XjpJSUEiZTI9OGNUQiNqIlJhbF1edmlUcXZxITU3NDc+Iy5gMjFDdDI8bjshMipTRGt3eF59TC5AfnRQIzNJ''@;'; put 'put ''Kl9ZbSk8T2tlb1N+Ky5UTSw/dUlSLmM+dXxJSzgsTU8xITxRJiZbKy81Sl1Te3MvKz41TmRXMjlzVWdhb3F0WHZJMV4+K3hmT1V1Xj5kPDQxPy5vW0IyQjhCO1RTM2BQSEtubHRlZVZbSU1rdS5ac3BqSTNJOmUxVSYzNylNLCx1IklEJSZgX1lncE0sKHVYUjZtMjJlR2FKOnhbQ0EieWN1YD5x''@;'; put 'put ''cjUxWi9eaSs5X1VzI0ZZPDxrRy5XV2l5Zz5MdlY3LEpAfHU1PD52TFUyfksiRnBbfV9VdGQrKCt4YGtZWDVGK0MlLHxDM1FSalY0Lz1bYHNSW2QrKHEiczZ8IjcjM3Y1cVUsL0dbJmBPTnFPKkclKGVXNmpuVlZHb10yMT8ubVIrJHMvRloiMWwpTTZFeWhWVUZrRVgwYURHU0Vvdz9mLm9bSGE/''@;'; put 'put ''Lm5rUVgiMWVKKndKLm9bJW99LHR5Pi46NXVgX1l1Pn1jOk1NLl02T0pGWHpRXj81a0VBWCYwRXVTKj86aGFDK01XKjhITkcvTz5pcG5HXWgjMjFfRU4vQHd2WkpJUl1gY0hsJWowTSg+eFk7WnB3RFhSXT1+SUspPikpZmdgfSkvYHNPMyFUPHxfJSF+TVRyKGd2IVQhX0hJKX5IU3IocC49MmZ8''@;'; put 'put ''bXI/c2ZhX1MkMERecmdSfTEwaE00R0t6X0l2IVU2RzldbiZsTyFYIW97X0ksZWl2Jl10KU88fHQyYWtGJWV7JD0jJThiRSxmOkRIPGxbZ2UsKDVCL359I2ZzfiVtN2RXVzhfW3pzVF43TXt8OnRaTFF2SVZCfnpjZX5MIXtIL2BJdFJ+I0heS2UzdihATnd8aDAofkY6Rjc4YFJxckxHRlhMIyRZ''@;'; put 'put ''QEkxVHw2SGV+ZHdvKGRJaG5NdmZncT9ISWp8NzBXVylwayUxPyE7JX1lYUo0Sm0rb08vdzlyfGBTI3MkMVFxVF0rOzp9VXJoKEF4UXFxfnFwZl97PSNRRX5iNVAoRnt+fmUwKWhrP05HNn4xfGcoTCxtSX16M1kufUcqOX1rR1coKDplV3NBL3YyLztNdj9iPDFzVTpROXpzQElqKEdPUnFKfUB0''@;'; put 'put ''MHxQKSJ9Z3QsfiwkfH5yaWB+S2B+fl1xInM1VnRXW0ZdWD9EPC86ezR4NHlvYTwvRnRea0NANkhpMTdNcSs5R1N7PXUoPjlxInMufFV4cn5bKD1RcDczWV1zNDdlVz8+Zm4pNlkqXXxCNmh+O3U3VH5sMXI+QlBRLEQuVnoza2hCPz1lanxZNXN+cjwhaCRNUnxdQ0xjW3RCYXF9OzBUV3JdZiRs''@;'; put 'put ''c2BaVEVGQkomXSt1RF1zbjQycmp1KWhnfj5EQH4wVjxRVkhVeHVdVDx1fmtBPHNNZ0JIVEAubDxRPixVQj8/TUJdYEFCNXMveVMoIWJgfjhMdShfQG8xe313PyFzeGdsSWJ3QmFHQGI8VnwqTWgoeDwmfDZ9MShpc3BuZ3MqeTY+V3xjXzRIInNPdCloUj97O2p8RFlqfjpJM2hdT0VPYjoxIXFf''@;'; put 'put ''eCtrKGVgKDhkczhGY3MmfERFOT8lQ2F+UGR9fiVNdShKW25JfX12aSNzUG1sSVF4QmEwfTpIZHMzeGZuP31dcDI+a19jX0slSEl4Km9GNn1IQ2d+KXgifn5EdSgrezBaVHwuNWtzWi5RNHdjZCt+KExNOn1xNWwxWClVQkt7ISxkKCN5Mz5QY1F8QDIpaFlgcjhxfmhLI2hOVm1JWXovaXtzQkQ1''@;'; put 'put ''eUh1WSpPflo4bDFkKVVCMn1IQ2hzQGhTKFRjMnJrdiloPH49Kz1+N3dtSWo6Yk1WYEtebFdUJjR5I3VZKl5zbEMlLDNgZCIufV8hNj5WfDFyY00vJmZbbzF+fipTfn5uNTNZMn1FKmxzZ0RSNH0pT2o0YGxxJXM/RSUsbT8zQTR8ZU4hPlJqUXxZfXMvcHNzY2goMzNJYy9ZJHRJLipPbXwsKVVM''@;'; put 'put ''c3U0bD1+OyEoaDsrYjgpXzQxVkw0KyRkcHN9PkRPUHtKeWxfKnUpfSlzbigrM1FkVn1sZzs5NWU8MmFDMnIhYGB7TExkWDc1NEJpc15nYm1iOXZeTiJuTl9WKUZfaDhZQmBWVz9NZDxaXn1XTEJmPzxIL1NnQWdNPVZYLjJJMVhnd2p+P1MpfSReNzY2Q3RCcW4+STZdTWxoVjl7VCtfUipROWNy''@;'; put 'put ''dHU0ZEJVbCpSZG1ecGg3d3o1KiNAKnlxWWtgKHRqPDFbe0RAVFJYOyxzRSs3aHgvbXRCSClIZnBfWlJHYD1rZylAVCZnVn5jQV1qdno8V0J0NVYrKklKcTk0Li86bFJfLy8xfTsmdFNHY2p9dVNKbkRNXW5ibXVlSjxJUjIlIlJGZy44TW5ydk19Mmh0cER3SkhYXUZUSHk8Skxubl1JeDR5Kl9Y''@;'; put 'put ''S0NBa2xHLEwiOUdReGl6UGpFQzZUTzBGRXNYRj1JZE08RSZ9UTpzUGUyYXx8RUMrPmFra1BDIWw2TFI1MkQ1QkVYSEVfdUR6bTs5TVdDcS9ZUlpaN1Z8fV4xPy5dXzZQRTRMOFBHMXFEOjVpKHI2RVY8OFZ9NHV+a1c1ZnROV0dFNWB+Qzo7Vmp3b3NoNVh4PFE5WmlVNX1lR10pbD92UUhgNk5K''@;'; put 'put ''bGtOOC4/fXFMQFZAdHpWIUJVOmZ+ZGl3W3ohQGokQ2ZFZ19+bFt8ejBeMUIib2d1R1tMc2M7TyJJQTM3KykoaElOUnJCZkQqeVclP3U6R3NZN1BgU3g9e0RBR29bV3RKNCoqKmBrUnxSdShTXjs/WHxJTVptb01+WUQwIylDRz0+e0pbKnBgL1lOOVhPL3Q/anRbTXRySVBHRGkxRmlUYnRFNG8x''@;'; put 'put ''dUcofjJ6LDU6dUhdO0NqUCEjUCQpM1o8YUZWflI1Qi8kIShINWMmMUYvVUQpb2E0V3hlT2J4ZEdkdH4mVCRmbDMzKX1AaXszQ0hYclUrVm9DSFk0My4qSEl3ZjJAXzx0Kl8+UkVjOVN6ZCl9MDReVmA6fE8wekpOVkxOYyMhcUA4d1tWYTFRPzx3MWhQcFtAYkRaTGh0anZgUk1YVUZTN1VFTDQ9''@;'; put 'put ''Q0dbSlEsP0Axb3xuIy9nRnZNMGNfSkIqYEZZbVN+LjUvO0ZoQWUqdWpdLCorYlZdaDxoVHxgNTtRMS5sQll7R0pCRllSJEdxfDdZXUk0Ll0/dmpganl1JX1RPUc2aSN+dGVMRSxMfDUkRyV8VWJqI35ATX0uU1E0WWBgemQmPjZZe3I3ZmNNd2l2Kn5DRCpmfURYIzpXMml+YS8vViV1cnx8YiZi''@;'; put 'put ''SWNIYjY8JGtJd0RLQHc5RyYrST0vViM6eFZxfHY2c3NoWkdNS2JNNmo/SiFRaGJQPl9HTnZ0KVAjR3goRl4hMVR1UX5yUCtBVTlbYURVWD5zP0RAQW9yakBhd2ZiWD1DcElxKyxlQXFDaiMoJXJ4M2clfFU7aTpJV3VFW1ArSF8oMlsxIkJqQj0wKy8wSlBHWVI/fmlIT3NyQlFBWUxUM3g2YlNh''@;'; put 'put ''QyFfOnY2U1dTb0xgWEF3QiIqVCtvcSpdd0IiOj53W3dmPVNkOkIvK2xMZzR+VGtwdipBakRhSDIoXiQ0cGJQfF8xUUJYKlA2TmBSdl58UjBua1c9UntRUmBKd0d3elBZRy99MlhBNGRnJlF1eGdfdFZBQypvOnJiPywkbmJFT110YDgvWlFCciJ4d0IlXntmOmFMTkpILiZzVFs0MW17Y3gsUkhE''@;'; put 'put ''U25USH1rZDBJdDtSMy8sYERpa0VHLGVASEk/fDZHfSkoRk9jVn1pdF9yVzRYUmdZK3V6flAiIi5UOm43ZExgKXVEYnxjSFZGKyQiTFh9XldDV2tGMkVfWCpMY3NCMkEvR0EkTU8iK0ZrSXI0T2kxTixIeShuRUw6b0koWHkpS0UsamxzeVdeOTFpPE9wYXxlZkJlcSQ9dVl1aVRhYnxreElXRnU3''@;'; put 'put ''TEZFbys1fVBQWnI4cmgzZi81VTQpVFcpcS9kPjBSL19FS0N+bm9FTmVLNWRBfHIpMn00aXRldWEockk6SVgsTnUqUlUielhwYCIjc2NKWndCZEJMOk9XKW8kW19LQilASG1XeGN6RTNrVEhRITFASTErfDJTWCFvdT5HOn1gaDZyTkxlbFBNOUkpPmFdPy5rRVJqXzJTMXVEInsiTjtibCt+T1B+''@;'; put 'put ''cExFL1IpfmBrY0ttOFRvUnJ6NyF2PEVNSEN3bnFZaUNhWXVvaiV1LioqJVsqKnNwak1xWkQ5N0tmNCVUIkNGWEgvVlddSzVmeEomLEd7bFA6JGh0MEQiTDBBYFZGIiVJKlk2OHBQK3Q8fUMxRVg4TTRYQTRWIiJ8Qi9ffUZjJGY3ekZEXnRjSHVbcTRdISF5cnU+RC8qIjMvJXxVbSNSKGVPWFNx''@;'; put 'put ''UXR4WGNyX0lGYSlnRjRvOmxIRjQqMVhPPCxHUnd7YGpUbGpIQlN1KyhEQ1ZRZ0RFIn5BWXZZa0d1NlsiLHJgTmtjJVdJd3Z1alAjXkBRWnJmc3hBJDl9cTZhU0YsQyQ3eW14Okl0K0dkcllPQTlyfjMrY2BLT0Q1Pkk3S0I0fCZPU2lVRTVGbD9VeGNPW1c7QSEiJWs2U2RtTXYqaXpLc0VHN2gq''@;'; put 'put ''Ris6Q2JOQENrRWhuPTBWPmdKZSkoQjoofkNMTj9WWnVmPHtFL0IhfVlNPVYhdl9neUskTXB+c188Vn55YFtbNHB8ND5hMm9WfmVlO1p+OFpkMHc8PVZ4Wj1iT2slWVU1a0kueCxtZmUvMUQhJiIwd1JQX0kraFUpQlNXTVsoc1VvX294LHJRIjJxYCxqfiJjISpQV3pFWXZDU2xeQU5BWylUK086''@;'; put 'put ''Vz5oYFJ4aUlJZ1NLRHZXdGtjR1JKNGs5a14pbjcvb0gua0BHMyp9cEU8Y0p0fixlQjw0aHhTMzpCKFhjI3I/Kk9ZPzIsR0NvaCFHbXM7WmpVdEJmR25CQTgyeSZhe3Iwd3c0K25DZ2huNElNMl9JMk9LN0NgP0EofDtUT1g1cFMiJXNXL30zRURjdk41ai9LNFRAWHohY0BHSnRQSG1bfkBhYjxE''@;'; put 'put ''Ynx7RWBqWk5CWW5OYFMxQmQjfChGWDs/V2puKkVmUHpwejQpZEZJdEVGIkNAQ0ErPnFsT25YM0wrYVUvMmV1VVYwIjltTmkiSCxLdWF2WEJdVVZ4XX1nKnJuIVJHMFkjNDhAaXpwLD9GMkw0JnRFZiRHaVluflFjI01rRXAmZilLPDhmXj94Q0FNYyw8bz5ZfS51dV52KlspaCRTPmNLRjUoPnZd''@;'; put 'put ''MSlGUFN8OE0yb0lKUzcvPH1RbyIzZU5uQl0odjE+czxBNjwzOkxQMnQ/LFhZbnxeTDFbUCJ2NW8oRn0zbUNPdkc7Q2NzZFJfMzVAOX1ITCQ4ZygubypvbkVlMmZoVnhFaH4/RnFdLypnaForfmM0fi5zRGE/biN6a30pY1tPRXpJZjBRcURINjwxVkhSaUx0X09ETWNfNlZEIT9hVnhvM0dQTlsm''@;'; put 'put ''YCo6aGphQE1FVSp4P2pXPzN2JEB9UWdzYHI/diJhTWk0eVc1SUYhUEJEV1h8Pnt6ZlRrfClJLygjaTZDb2B0TyssI2osMnFfXVFVPHVaX1liOmJMU0tILi5LSEJdciwsVVJPLF9rI2d4d0lZY0whQ3QoUFgqZn13ZlZiUDRYezM/QS5tJUJCbzl+eSs7OFEvImE0ZGExZmd2W3J9JC5Je0B6P31u''@;'; put 'put ''TCNyY21HbWtkPyxeRTJAOjtlYV9TT0JoV1ZFdGtWUlRRNUZFdDV9fT5DNEJZenx8TDIpNX1NdSIzblM+a35+PStHRG5ENS9MVHAuVkJxRXExJHgwM2xlJEc4N2p5Jn01P0Q9LnksdD5oNW5hQ3lBPUNrJXkuWyNNenx9I1l+Z0drdkx0NVVVR1hZfDJTS2FNYl52OX4hSHlAciN2fDt2RWkiVj4s''@;'; put 'put ''PnFzIWt+WURFMTR0d1FTdU5zK0FnaThZJWxmVzJbc2tkdFtQcnZjITFodFAqbykoc0hSbFkhVGsjcGo0IlpZR2JmOV8/SUQzalVffD1FfUA9bSF9bUNKYF9wSWF0VVJMS0ohJHRpNU8hfDR2JSpaNmN8cVBmZ2tIMyFEPW9oVzpkYHZnfn4lP15VVj1qIkB8S3U6cFpkRylmPX1yI1Iwc0g/RFUq''@;'; put 'put ''WnhAdz07UWxXPCshVCFzXjQ7V3Z4YGhEM0pKMytBV3p5an01ZUZqWXwqPntDJjxuaiFdc3xqJFBAQUl8Q0N5LF8qbTN5XXpEVVFHVFhBRW51OkQjdVRrQmwvP1R8ZG4zOiNtMmRoZ0p+cFhvYDpEditYNGkvXXk2akFWOTBLL25nO309eGIrPyt3PTp9IU9jbkowJn55WClzKDRAVz07TFVnTV4u''@;'; put 'put ''TVJfeHUrOCQuT21fPkk3NjE9LGVtMHBCZm5wQlQoaGNvTGVmXW0oTVcoZGMrTUUxbU47SUc6b2tkd18xP0glWWJoYWdELl9tYmJqbWlEaTZTYHV2U1dMWkEiZk10TSJvdFZTU2glcD8pWE4xViVMeDhVJjtYTTM/MEdLK0F6RSJkYE5vWE9vXzxdSHU0SCVqVGZVdzgqTTt0SS4kMHN3KU9AP2oq''@;'; put 'put ''dEd1VyFuQnJMS35rYXordz16c20mYk5sWmVjQDVpXlBES08xJUpGbi9idlg5RSUlRShYbD9idlBRQXdFY0VVS3REVUxHaDQjQEVVS0JEZkUwTi9idmgjMHw/RzlQem4uQnRVe0VLaSE+MVspfl4sKF9jSHlzQ3U7RHRaMUZwNH12TH1Ya01MRDhEVTlzNHNhK3JdKm17Y14pc0NzWWIrYl1YUVBM''@;'; put 'put ''PT53PWRXfSZFJWlXNCZFJUxVZC5DM2ltMHlWOkMzLH1te3l5ZHlFJXd8ajpJTEpLSG9uP0R0R2JKNHdGJltSV3pdWyRLW3V9aTw3d1JXd2FIb0FgKjZQQHw/QUY0fVA7eXk0eEUlLihVdn55IkshNDFFaVI7P3ViWSh2eSJXNnwhYS55LmRDc0pJSG9bX3V8YEZ9Rl1GPilSJjFlUW9idmdTcSF5''@;'; put 'put ''eTt3RFVvfHphSUxLSEhvO19Ya1Iofi42bi9fTTFMTH09Qkt1czVaYStdW3VibmdjVyhbIj8pOW12VTwqWyZOeHBbRkt9XnVaWzdIcFBvTkt6YmohXTRUZGw4JGh6bTNYUDZEbz13PVFMWT1+fnA1Rk9Bfj1MJC5vWytfI2dbfmFHTGMsX0BkW35LR0xjK19HYnxYTS97fCRYWGIsQnRVQDJgSTlU''@;'; put 'put ''WCFVVGhBMkUlaz9gOlBbfjg0ems0flJtTS9TfnhDcldMTzJ1WHI+Zk15cHZZdjltKiFsRkleZDA1PDxLTDFfJltPMltdfCl+WFdNL1t8WWBgc352RzdqfD5eJkZzZCNte0xHWkojT3ZQUTVkbkw4TVhqT0puL2FDaH5Lclc0cT9aXWd+KnFXNCVgZV4hfjdLVzQkYCQ9IX49VVtMeDFRZ31NTURW''@;'; put 'put ''ajlfNSJrRVR9WXY3Kih+VUJuaG11W31wWFhCT2E4IX0oI0A1XzM9IThoMFlzZmYwYWJVcVcqKWEjcn5BcFc0OGBqMEB+QEVMYyNfOzghfldKVzRMU0V0Jks7fFMsPX46MjhfTXA1PiFDQVJeclJRcVdPW1JdekNhOiFQSHhYMXJORXBkWWBxVWVsRkVyT01tZmVsdyxLek8+a3VtT1JtJVlOTDZB''@;'; put 'put ''Yld1bSh7ZG0hfl5TTS9SfmlmX3NfdUc3aDdITFk2cm1kfE01PX5yRExjM186UCF+bkdXNDZMcHN9dzh8WXZDJGFlM1AxX1hZQH57Q0xjMF98fTl+VFNMY2MvNHIvMX1fOU08aVh1RzdbfW1UX3N+LHdkN31CU19zSEJ7XyhhLno4Um9fcU5ZUiFSVTZ+d2VsXVY+blBzZ3goMTBbWXw6Zj1+W0JM''@;'; put 'put ''Y3VfUzM5fmVScEwoa252MmpBIjMze3xZdnd7a2BSMW5LUU4hOHhTbWZhOndlOE8jSXhCTGNzX3tyOX5PUkxjcl9kbTl+flFNLyZ8R3Jgc3p0MFtWfDhwXiJyRGVtN2AjXzJhbUAuP19pOUpaRHFXL0BpP10xU1tXSz91U0pzMi5uMmA9Xz5FJD0/fn0wRk9WfCVLPX4/SCN8VWhjbj4pUUNxVzlA''@;'; put 'put ''NmYmfn5BVzQvUiZ+dk9tYmBPTTB6a0B+fkBDSDp+VSMwWz9+TlUic2Z+Yldidlp1Im9ISCVqMTVnYF1yZ2BTci9wTjRyM2s/ZU9HWl1pNSkqdT9+ZGBdfHNXNn4rekxjJX5Ia00vQWxYNGR9RXIxfmt+OHhNLyg+IUNxUkdaTT9XdlBJWE82KkBQXlp+a09zR19MQiJvOUY3aktxUTtpfTBqOnJU''@;'; put 'put ''RDwqTiR6PzBTR1pndEs1fXNAflt9OXsmLG8xdFcic2IsQXQqPiJ+JHM+IyloXn5rfkFgUnE+fiV9VmV5KGI/OTJDVFpOW2t+L0hmZH5XLExjYHM8bnpOTjJ+fjp9MnpNfmcxLn1eMD1+UEB7N0RBdChpczArKDYqWjN3aE5mfCs/TS5WdWpRNHp+O3g6a3NbMkc/SyslT118d25Ac1sybHwmUnJ2''@;'; put 'put ''emsvfVcoO0ppTz8uJmpoVl4wIX42OXprenNASjFRKDJbaCpUfVZsPW1yUldgK1c+SlNLIW0oYlU/P0wqNztIaSxKe3ljbj56OD5SN0xINEgvbXIpQCt4OVFQTmJUQ245OSNSKD82V28rbDpDPX58SC99eXY3VF55MVRsfjFUU2BpSD9+ajs+em9iPi5iSSQzM1F7czhdTUpUKFRDNnxVaHJXI31b''@;'; put 'put ''InFXeX5eOFc0Tn0hRFg0SWBCNntzb10qT11+ITpDSCx+RT8+eipVQSJgNH54ZGJ7SldUL194bTE/dCF1R2c9WlpRVExjOC49RzJgUFlefWlsP3NXVGV6UFtYdy98JTpWKHNteltQWyg8VVdzbVc0MmAxZWZ+Yi44SjFgREFefUopVVdEIW5XQm0lLHUyMFJOW2JFL3xPKih+QiFkX0FtISR1MjpQ''@;'; put 'put ''Tls+RC98e3Rxfn5oS0xCPHFXQVRtYlkuOUcxYFh3cX5aPFpadzJBTk5bZEdefXchUjR4MmxPXn11IWBzMXZaRyhgR0BLOiVrdXx1WitjZlplP0ZNR1pZTTgpfH1FYllHKyhiPyVNR2ZKb2c/ViZFRWsvPjVobU81IX5pJFdLdywwRUhJZmcidXlnfltJZ1RUY2dGMXg1ek8xKX1banpwIzdlUSZx''@;'; put 'put ''K2x4b3wlaSN5KGhGQX5bKGZXay85PDx8YmZXW2MqQnx+VD8jWl8vXVE8VihtdFV7MF5RIWE8UXZHQX1hI0Z4V0tqInhFOUdZTk1EYCk5XyF5LGBudyNZRipndz9LKU5xTUdaSUE2KTBScnJ2fn5bfmA3WTx5Zj1xI1RRd2k5Kl9PK0lleitJUEdwPnlSLmEsLytoZT81dTVKdzszamJgWDBNLDAl''@;'; put 'put ''bkpoVk9EUVImMzd7cmNjTSJYcj84QiMoRXk0ZUpgX0YvMShVOT92LnN+UX55M0pmJDNsKU0wSTo4bHNBbHNSQCNPQV1qZllrUExTdHxrW2tIWnVXZllYfktGe296bzJvdHo9eUdOak8kUjhfKytEYitjTFJiPyhLbFU0azElV0tqYTVJeltnL2hPPjVOaVNGZ358OXxfZktSMTtWbFRHJXloUjd5''@;'; put 'put ''QCl1ZnRRW1h3YUR7RCxnMFk3NVJ1fUJfWkdKLD01bm4/e3pYRXdFKHUiJj9MVWh5RkcyWEsjVF9YM1ZDKzJnUDNpPypaZ30zO1pbV1M+TmUzOC5YM3BvaURTUn1ncFYhSko/RnZTOyt0WFZLVzQuZ2cyPTxAd1M4enlhb3JBLzgpMmVuVVIlYTFVMShiSjloazZvN312d0djNntjbWE7QnxGem92''@;'; put 'put ''R1A2PTxebF9tJDAjRTNHMXxheCwhbGhNbkBoenowdlFEWXksPnpeWV54SFBDXmdJSGRfIWkhLnl8Z2hiOSN1S0xFaFt3ISRxLDgzVFg9Wig/JjNoOWhJPVouYyRTckJoTyYzUCZ8P05lLF8lQytsUCEuLGxDJnIhVV5KIylpaT8iX1M4KXJJfDpsdXF1Nzxwbit8bVtwQF5XTSNFXyVmckZAcj5x''@;'; put 'put ''ayNfRyg5e0ZEOik+SERZLiVKI1JQRlRVPSQrZTwmOEZ+QF0oO2RLcFBuPFNRTT5he3M5Y2pgaWMwMGhScEJRJlE/K2AoeFBJU351SGZ9OEhzZ3ZXciJaeD5LJGpsWT04UW84TispKlFSNHBDJmZyel1KOUlLZ05OI0VgOlk4LGwyKWI2MEZfUDY9ent7NkpDKy4ycDleWUlTSFEzJTxua0kueVpt''@;'; put 'put ''TitKTXYpVz9hLGskc0BJSyE3Nkc8MmExZV1gXSltNmVrUDNNNzhXel51RW9CaFFFbjw4fSY4LGpKfkBdcyRuZjY5Xz0+PU1UODJPJnR7MWpRcn4wPHB1OXk9XSU1fDhdMD5PfSk7YXZQRFlTIXlFY280N0Q/WjYuUSRpT3UlYmwjX2osX3lAKCkwR043UkhmNyUxKiU4KUVdIzI5TD9vZX50ciwh''@;'; put 'put ''IVpObVF8Qnc7RDBqK2h2JVpxWH5SZm5xQW1uey8/eXBFIyRibiVMQ1smYCtDaDlwRm90SCVoLyFabGdOKiFwbyFjU3kpLmFCTl9INXd+SUMiXURmN2lkcCRNTkdaPWghfVpeKTojTX5qZHlNSyspXX1CTj90I1pgI3FGWDxdQ2UjM05VKSRTa1oiRiN6Sm9ZMClndXxpeT5mQzpbOXM1ZGxKZlEy''@;'; put 'put ''JFpteHh6PWxgUyIse21MMCV3Lz5ALlJjW2IrWmAjWFcwdjdXK2N5UCQ/R09bPnpXbEVNYU15N1diWDJXVy88W3tCPW5jRVV0SFV5eXh6RGpden4oeXkuNCU9dnhgOGJJeEJjKGkwPzV4MnVFOiM3OFdhbT1feXN1eE4xOnZSRWB8UDp1eHpEajgxeTl2RiFCWE85b1dYdDQ5YilGN0ZGQEdhey9V''@;'; put 'put ''YmN2XjxGbXJ0OkZsaGhGTDZ7SFpUWHEyWStaTDl2eWRedCp6ODNMckE+TzQjZWVeTmB0eHpVZ1NUR1g2UjlsXnRlVS5HIT9XMHZPdSVjYmRKQipZcUdCOC50PCg/bXU2NEBNbkN6eTA9b3doVDFKVTd3NU9DbVkjfXVPdSVtJWU/Tn0wSGtjd1FwQmlXNkBMdllLN1VDZCJvJDU2KVp7NFJDNTtg''@;'; put 'put ''WUkxOmBRNkB3d0gzYlBOMD81eUx+SUs4ViFBO0YqcDRsY1FXezZvQy80UWptWmJZekVpP3cyYFFqSG9tfTRuTE5gMFkib3spZSMkUV11PVQ5X0hyb218OzwsNU1obDk1fEAxTFNRek4oI2J4fDdJKW1oWTBYM1F3QHpTR3BMe21odGMvVGFKPkJHIzxsWHYrTmx2KEJOQmdFSD0qREtNejB5SUo0''@;'; put 'put ''XVYhc24vb21CKG5mbH41OSIrYUJaK1pFQ2cyeTk0eWRePUpwaFBvPzhISjsoUERVdGtPJloqV3xSU2VefCRES1o8eVt9QHVVTjx0IlgwWSJvUGpQditEMlcjZEwhK3xsNipjNFgpRml0VXsjWjZBN0MjNDtpUU9pTlFvdz56LCVUe2VRZG1IQGg1ZDlKVFhoRU5nK0IsZHdPdFVlR0NUX25HSCN6''@;'; put 'put ''M2JeN3oiKWcqNHxjMS8rZWVaWG94WzZYVzZ4VDs9RysvRnFJIXk6MDYpSERgUXApQFFwKTNoZ08mWmxXRVNUOyRBR1JQVmFCKUlAUWU3SSNkT3RnMnlzRS9TODhVazd5QWomYUtDdmhMM1dOUnRiTyZaVldrU1Q7fExrTjkoWzlGTjBXbFF4eFNIPUplZHB6cXNpa2s4ITVGbS48eTZtSHNdRzAs''@;'; put 'put ''KDpbZEpOcFlJQzxReilTJSJkMFB3N3ljIV0xPj4hUC9jdilDYmssL2ZFM3Z2XixkRTtBT3AyNnZhej16TlhqaHY/Ji53LkYsITU0fXVHekBEcEJ6Y3B6S3M/dl83KFghKigjNVhldSlTZEd4TjpBRTZ+W3ZbeERFIjs+c1B2TFs6NF8yPDZGbE8hXzBDZVplM1hiUEJIN1M/XjBiUDh5Q2Qibylv''@;'; put 'put ''NylkSypOenR+bCZLL2pnbEVme1hHaXxgdU90VTpjZT9PRig5RHlSKmQ0YV1edk9XRFp7MnVPdFVjR2U/T0YqM1pVa0hmYEAyfnlsSFAiLiE/bU9PIV8lOzs7JFkuRHIrSzx0TXNMcmJwSm1rcD05XyU7OE1VMjlXXTB1Q2M3MEwwLnQqc0U3U0locjJmJlMmcEomPDgjaHhPdVsyYU11JVdSTXY4''@;'; put 'put ''JUZUITd1MlBHa0szN35SOkdJXWFMTWE1Yk9PIV9tPChSIihZTmxBdTA3ZjdePjIwWjVic19iPzshO0NfPiNHRHV+Rng1VHhkeixuV2VZMFgzY2NlPzshYywpMWV4cF9QV3s4OnUyUC9Aa3pdRyRHZXFUbVN1cXpoWHR0eTkxXnJ6bHIpe0whYlJvdS5HOEFYWF84XmAjdktkMFkib1ZTYyN1WjBG''@;'; put 'put ''KmhvR1B5OmQ2U1ppTUZHa1doJVp1TDwpK2VsQ3BobEtpTEZGSERCMj1mUWNBSkssWGVZMClnY2MpTnJpfWVhRi8rM09IIjdMVFQ4ZXwoflFiTXRVS2l3OFd5QXd3Nl5YKy9jazI2UlFeSE9sIVNKQn0pJEV7SF5De3VFKTw6NXR9TVpAd0p2aXxVfG54Y3N1YWN3YUVMSFBuNFB2dUU6I0VyUlph''@;'; put 'put ''MmtALGhFSEYiZjJFPFQrPE8vW2lScUJFLmxTZnpdWWp2bzJ8OXtVemxRWVNxMEVEKlFXXzhZRTNDKiwmS0dOfHt8KTt2XmRdKnFOYGlnQXdjcUR7bmBkRHN1YjNORE1MSF99cmA2U2gvcVU+aCxUZUo/X3JpJmljcTpdR1pzNnBIN052VUZOYllzb31kamI2Wy9hK1lON151JHlvME4vRjZ+W1Ba''@;'; put 'put ''WXZaYUdtfVMlY2ZaNHV8UDo2d1M3RjJRZylJYXsvZnlzRXowfmBJd1l7Nnl5VixwXjpBdUFLbntaSXsvYUYzSTNsfXJQIUtsMWhvN1FiIyhqXl5xPFlkeS9kKTsodFtfa04pNUZUbmRpNncuZE84eURvMjB6dGtIYUF6OnZYI1tES3VAZGxyaj1BdHRpMCpCJHk8PGRxNFl3dW8jdk91JTFMY2Uk''@;'; put 'put ''TWxOLj5NeThjYDhsNEx6SSI3YzVSb2RINjFuNmxdYV46RkI+ci5JZGVmdm8jYmNsaEgqSmhKW0tVIilJaXFTTWFNeV12OV9+RGp5aUFDQzJSc099UyNTRjJzZFl1VSUpOTREKl9SSjJ1S2k/ZlovSE9BT1dAOXh3S0xdbWhHdUt0d2MvMiEoWmsjW081JWN2MElpIXkxTjo3XiwiMHxVQTpybzRD''@;'; put 'put ''SkVpaSU6fio8MGB0e3xmSm48cmlodm5RQF9edkxBPjw3KHJTS0R7a0V3eXUoNGpZP1NSeHFsSCl7PjMsRzxWRlUqIWV8NWhMWHE8Zm0mbEJqVFN4dUVHO35gU3k9W2E6NmomenpXJi93UXY/dU4uSXxxXm1bQmFpe1JTbTQ6ISl7bUEuSm1MWil4KjMjSFRwOUR4PFNLUG80NW1sXylQbzp1THRe''@;'; put 'put ''WElBeDxRJC9GWnFVWStaVV1WUiJjKEdgL2BLZHg7ZiVwMTo0WTNCO3ZkZnMzPyNEYWxnKFhfNzhTNUF4UT5hQ0s8THhHR2d0IlgpKHVxQE91NUZ2PzdjcHpTVTssK2Uidms7QlpJdFd4U2dmNVBbKzZESDFFWE8mWl9KLmtrOCk1KX5gZWt2RyoyPkNwUFRkLkJvRExpdW00QE0kbnIzeTl2L0Ii''@;'; put 'put ''c0pfRmBrI11JUnRsdk0jTUVFT05CZCJvTFhZdix3QX1CIixxU04raDIoPCk7Onp2U3Z5P3tRWjBXSyxGZT9STTh5QiI3QHxSfkI6JGBrQThLRiZQQERWIUhhey9QeTJFeUhFM35+S1AkMTxQaylxWl9kYG8sakVmKHY1Y3B6YnBpa2s4WUAlfmBld3ZVQTUxIj4sVTl4K30/dlZBOWYrWlI7ZjJ5''@;'; put 'put ''OUJ6PX0paDQzMW5yQ3QhY0NxZTZYbWtmWkxQTWFqOUgqZXFGd31AQiJFXTpGOEZIel5uOSN2UkRRPCNCNUBNXVsxLytlQndxfm5JOi5wRWEvW01UYTxUZl5oQTNbQ2F7LzUueEV5SCJgfn5LUFM8LmI2ISRQSFg8VENld1FidlpPJlpyVUVTVDt8fEIiUnUrWTFDPClCcmZ2IWZjPHhXVWQrWiwv''@;'; put 'put ''NjF5OUZ6QSJZbEEwWVhDdVlVd0MqQC5JP1daMnd1eHomMmJZSWhKTXp8QXR3bkxmS1UrdVFOfjByLnk2JDh3Y3B6Mm9pa2s4WkAlfkA5Mng3VytVaEZlL3QscG8+WTpaYlgrWmkuZjJ5OUZ6PX0/UVNHOUwiXTY6TWZmMl5oITA+YztJWTAqPU13OV8uR18sQiJMPUZMaEw1OiZjJkxpUitCanpq''@;'; put 'put ''VzNKc2kkR2R5aXdRe0kqZHhlT01mLmRAfCloJiM0TGJSaHc8LDc6cFtCImEsVXZKKkwmdiFyMEMzRjskWWldfUReQX0oVUN0WVJNRD1LVyVMOiRMYnFJJksudD5MXzRCem0maCNlTUdsfVJVdz86O3QhZEdhREB+KiFFLiQ6Qj14NkYibGM1di8zZyRyOGlydSZXKXI+QUdeUjdbYENrZWZoVlZK''@;'; put 'put ''SzM0b2ppKVVJR11sdTQyNHlleExlMkQhJFQ/WCZ3eSYzWXlVYVkvTm5UOElWQ0BPRTY+ZS4ucDFOaUw3U1F0VSpoPDRxY1Z5Z20qRHtrMil4UCI+fXp4NyhNOWU1RCVfYGt7UjxCRDJrMHo3KE1dQHUvJVQrTy9CJXRuWHVdfGVfTH0xLHtGdkFhZ0JHU0lPTUVJSFV7Vz4xc2dRU1pZUVRnKFcm''@;'; put 'put ''JGN3PVhzMndbcTFONUxmfj9ySSN3P3Y9WENoOFhXInR1OkhYT3IqNiJZNHFjcj04ck4/MnVxNHB6QXljTW01XkZQa0NhJUd6WGVPdTdsWFlQfjc+b11qQU1rbklZZEJqKlAsQFo7Q2d2SFt4YDQuSDo2WSJCSk0+SkV3OVheUkt6YlYheG1lJUhHdVpATkpoSmJgPW4/djxFXktzMG1mXyJtZmA6''@;'; put 'put ''IiY4R3VvYnoxdDY9ZGxuWlJRaEpzOl9ZaHRDZUdrX0VGZzMoSmZdOmNjYFZ1Y291bFo5InhZVjtvLyM6Ymwiem5YSnRfa0BSWiJlJl02JjpuJXBvNlNSejhaUUJlb1UoNCFpZCo0K3F7dnore2t9LndMZ1V0RkF2PkBZP0g3SEhaLFkhTCN3T0hlKjRSUytfPXhaR2ReRVcwKHdiSDtMYGpWXVAs''@;'; put 'put ''ITlbQEBARl1pJns+ZnkmQHAldCVOKUlnUnJJd2lUTkF2OT85NDVGQElUS3JId2ZfRV9NJWRzaV1yWERydmxtS3pHTD5hSkt6Rz5FSXhheSp5b3VUZE1iIihkJDtPRDY/ZVdhSk4odHdyJWBtbncwYSZSaFdLayxNPyxoY1lyaStybTJkWDhLKG1HbTxDeyh6Njx3LDRUYXRobndSUiReOGt6OnhC''@;'; put 'put ''KFk2aVZhP2IueFtGNTpYWDtoKVRtYT9aOzdJMC9iL0R4Qj4vYnYuNk5GQGkhI0xtLnhaRkYqYlgoNGVNe01uUlhYNzJffTtSeE12UzhjQEJnfEJabjd2YTU+O3RHXlZOKX5eSDkjb0V6bV5SM2NhKklMeTlYZkBZYEp7SnptOEtrSmxwWilnND5ZNSp4SXljUVtEMl9II3VFOkBXdyNJIylNaXlh''@;'; put 'put ''JFAuc3V9NCVaNEdxIm80U0pFYDcjVE99SyxwaFQ7bTZjOU8pajZkcyF1Tl9xN04+RmVFXzxbOVlMeEJUbTZvLlc8RnVMUl9pUmAoLmslZHoyeDFHWjl7VyIpay9SeXZuO01CM2pjMSxXR0cwSTd4JWApay5BMWFUbWtbT2BBZylHbyJbTEUheVR+NGEuRlMmZ1tReXU0KEJ0alhIZTphRmc1Q3pY''@;'; put 'put ''bHRfWjo7dVpnKntRJDcjWH5JTzV0dE1sSEEiZXJHe0toY3U7TkxedUkpciNpM1opRHk0OEk3OnoyLC53fihUWDM5RUZ+NEB0X1NHUjp2bDR3OChqMTB6V2Z6NCluXUooSFBDKTpHOFhLWU9aQWdYY1BwUl9hV0t0SDcvRiM9Pi8sLE5PUHBTaEhFM11CPEkwfCV9SU11ImU+bGQyaHV2K1pWVjh0''@;'; put 'put ''UH00PTpNeV9TOTEjKWtaSlJuJWEzQ2llU0Z4Tlg2MnNCRigieVFnXiU4TSFLK2gwQ3guZUJATHhHNGEsOiEyV2ZNdE5YTWlYRjpVU05XYG1xeElUSikxTlhvYDooZVArekJQVDUoJEJCP2hiSzBAKHUmZn5YNXpVWTE9JVpuMDBVTmgxIlNZcElVQEtJZzZlYGZxMFV5JiRCKEZlSlNRPkJ3VWUy''@;'; put 'put ''bXRQcEJkPFFfVzFfNEwza1NkTGlNJFR6fVc2Mjx2e2hHMmtFVnQpV0duOkNCUG5UMC5JUj5jPi8oKmNFe3U/R35kRGE1PkVfbk5GUi9IRklONTBXPzd5cUxLeWlkTltDVjYwa1BUS11vTHt0Ky5HSCRTQU1vZn0wTWJidno3KXlMay5jPEZZTExtWiF1dC5pdkx7dDRTPXkjVzdWLk9JSWp2NER0''@;'; put 'put ''Rzo3NDRzRXJiRkpLOjcoQCQ+Pls1NDdgKWIlTEgiYEAvRDNuKTJzTi9VNy9vXWpISjVQRWx0LnchcFgkImFsUXd+MWIvQmAxblhKMUVNJlBULDUkeSIsLDUxUV5YOUJha0NGbV8yMC5XXlZnZ0BnPi9OM1E1e0NTK2Y3UkAufCRLLER8ekxbTkE/P0chNDpdcTc9Y2tMQkJEUFk/SXpqLFUlYz1D''@;'; put 'put ''YEBVIT50dnVNNTMwUjNwRi5XY0xlLldQRzAwI2ghQzRvfEU2VmMyWy8sY3VHQSxOfVA3NHEuLitfQU4uPyloZWFMaEVuXkAwNm41SHMiPkA8NFNXJFpjMS8uKiM8VmhGcyI7cmtMQEdBRFo2Rms2SzAyKTcvYHw2dEImL0shK2YmQzQobXouNE9jZFdbRFlqcXVta0FHP01uPzVkQ2FkOGVlP1t7''@;'; put 'put ''MHk6JC9CUSYhTH1sbTROKERDWSI6JHlFRSZXZzlMLzIxa1pJWiUxW1B9NFdEY3c+dkt9RE0wLlNEcmp2U2ohIkkwKWJCOTdQQHVgd2puIis1N3Faaz5XclpdQltzKy5SWDdIXXoyUWQ0InApRyI1NHlMazVmLi9WaVFmJDs2eVZbOzpaXS5QfFg4Om0rYmVvb05MPEFWe0FkY0F4QmY+XnZQQzR3''@;'; put 'put ''VVlDZFs3ViFTaF9RakxgLytATU10YG9ATX09RSF2WXcyWl9rZGAyTHVWLmh+OkI6IWE4WF1YIiQibU43fEp3Y2IrQVtUWDFOMFNkNDBtPk96akE7VDBHKEwxdkxNSTg3WG13MX06fiY/PV1uaVo9In58R0hVU0pCTX1OX1NvJmFhTU4xJjRQTXRpWld4czk/VFBhQzZNQkJIIyRaajQ4ayZ7Qz1x''@;'; put 'put ''V0BMWGtFI05QPVo0d2E0OCM9bWhWPk9sVlEsYTQySzF0emVZWiwsOjVFQk9EN1d1bkpJfkYxUGl9NyxvTUx0e0NsXndZQmRYKXJ0LCNUMDN3T1BoMVoleyhaTiVKazdOQC58dklqSExNVjFddlhmPlB2V0Y0UC5eb1U0PkZOLG9NckxPbGRsQjZFY2h0PWh+azAoV2NJREpiUmQpdjFvd0B3K2RY''@;'; put 'put ''NGM5KTJrNyJSNzRNeEM6aSpMRDpUdFJPQkduP2dUPHJIWz1PaGJNOkk2MVtCMUYzY008cjtqcjVndDJra2dHRF4sNypFMV5Wbn4uZyZYOnl5ZHJDMldGbVRIZGBAO0pNdm5SZENDZUNBWSNOOjd1OkRvW1JhRkRmbmJeKDx3dnU5fGQqNGB4RFhkWHUubClgdFZePEVaNVhjL3NQZFhnM0g/eE1Y''@;'; put 'put ''WCplQzcyNT5jTEY3Ok5YRnkvQjYqKHsrQnZveEIrJjcjXmhuYm9MV29Sc3RYM1cyMzxGemQrYypLPWZhdXFecUxqUGt5PD5sMFMwXiwhdzolWVdBPj0oVTNMNTFiNjEkdkJmUGVaXTxQNzwwRzNVbEdSKkBUWUBIfl1dNDQrYWVHZltDYW5zeFdmOTB5ZUtOdUZhYVhIS0dpS0VSdC5lYVpJPDd2''@;'; put 'put ''ai8sTlgsRUg0bntFdy5OfWYyMUlRSilPNkAlQmRQI1hsZ01MelJNQ0g9e0JObjRJTzxDXWM5NHlicVhda001NWx2VCU/dXo0OWUvQyRJIld9RlYwbkp3KWMiVyk4ZXprWFB9OFdDSmQ1RU1IRkZ2PzZlMFsjVGhjYDkuYkRsYXl8a1ZKN2dVTGY/XntpTVJ4flR9Yz5pYCtROzEhb1JaNFtDNlh4''@;'; put 'put ''RT9oKWtLXStEblRjaXJDIWsjZGlpTmN8dzZ5QEJtNnh8ckZIdFY3ZD9ocXZQOThIUDNMNkY9TGJlLDd2bkFUKU1obStEIWVWWmczUD9hXWQiREQyUiUsYEF2dTNaIjVdSTl4LmI5WEJ0UiRAQitLeFtESENnTmN7KihhTCszIzJsM0xPdGk3KTNNYzEpTHR0ZlBmUTt3d0J6Tz9CeE9jUVtpIzFf''@;'; put 'put ''YUhrSjxVLiR2MiExVSRwLlssZy5vOVQvREF1RzJXIl1JfUtvSjl7UkdxMnRGQj5QZ0Jubi43eklYQlE2ITVRO1RYdlAvR0NXQWVhVUZ2UXQ3eXVIR0tTPzpIbzY4ZDBebFhxRldve3Q+TWo7W1pxNCU7PkNlfFhaTDhtT0NLJVlKWX1PQGhdRUFSJk5DUF5QPTEkVHhgQTh9S2haO2t7KylEJUx0''@;'; put 'put ''ZUBpIUViZFpGe0RCLGNwfW9LXXtDcEYpVzBEJE9fSE9pZjhkUyNGVlY8aUpYa0RSLC5CU3tkS2VDUU9hZEtDcjBGdHUvLDEiJk5YZT89TC8qIU1lMm9hflEkTXUyO2dpYi95cmo/SmVKOm9yRGB5YixtOSREQyE9TixOV3s6aX1Ba0s4QCU7bixTQ3U0S08xJWZHIUdlJVoubTkyeEtSWGs3cmpI''@;'; put 'put ''JDVTRkpYaHM+bDdNbW4wKX5yRmRsUis0KiRdZV0qSE00O1ZYWmNldGEvQFFHQ1ElSyRUZDV4NkYpTkBma2tDaXhzVG1adExoLEQhIWoxWXYmQG5zVG1KantYdnY7eTdTYFcoOk8iNGw0Wl06dSphcVpsZDkjXj9DOzk6RStBeUNaKkI1JVBQRzt6K3xWJEwre3dDczxXPWdVYW5lNWg3MiFpY0VC''@;'; put 'put ''RXpLXzhBXldHbG9WKFpUR2xndmppaUlJWHtPRm53QVElWlRnZmxDIzU6YTQycWlUajhZOEBMPXVAPG9XLzFpbl54KDBvbXQ4QEw9emojM2AjQVo4RTNrbUZUSUlvem1tYF9YUHpbfGFsRWliRCVsZSxWJCJ0MUxmK3AqKzoyQV9DKWNDZlE7bXdbTmN3TmN3NSJFWE5sc2o8MWxYPFd1WURnR1R2''@;'; put 'put ''alZLQ0JCUFBOW0w9eUNqWWttOUppfV9rIU19RS85ZGI5W3w1JCppQ0F2eUtYdHVXOXlwbUE1PTRSMWJhZTJ9UWcrIzQ0aDk0Vkt6S3xCR0dUVHBiXnZiTHZoOEw+WzR2VDMlZC9NblR4dSJUUGVzaV1BIU9Fd083N3VEXzpdbitIUG83emM/VjI8ZzJnTG5SZ3Q6YEhQa0hmMjgvMyEuY3FEOj5q''@;'; put 'put ''eilpN2VfdkNCI20xQGFse1chNC9aXmVeQ2NETyt3U3M0WkgqKE9ObXVLUENOcVNedEcwbzVwSClZS2EoLDhlUE9jY1U1c1N6OjxUYVY+SD92W0lRdlkwOzpidm9COVlzQWRTd3FtITBjSlJCM11AWTR2KFo7QmxDWjZ8Z2lwTHJ1a0UuTFJ2MldBQUFBQUF+bGdBRU1RYXU1WzV4RCZJaW9uOVco''@;'; put 'put ''Pndrcy99Yzs4Tnk0OSo0PV42UiE8dSFTaEZ0Ul5AaHF6KFl+I043PHxObEJGIXoibVk3bjYxa3BYd0h4QFY7ZE91dzJlKThMMU1GUj1zeSNoYShfNTQjV3BkUUplQjsrWWYyfUo6MEpuK3hmVENlX2BNbVslMldKRTREUVJKfEV2fS4sajlYZGU+KWhSQlFAZHlkWCZPXUs1fj9tc0pRUHM/VkY/''@;'; put 'put ''OExfT3lraShhZk5LPmw8aXVGLC82KjZiI0RnJUJ6c04pT15HaWY5dz9fa0VvZSleaCExRSVTenwuZjRdXj1GPiYlflZdNXNXPitgIj9SITghcTJFMD10dDViZDdtK0V4LkA/aT1LLG1ZRC8vU1NGRFYuS0NRTXl1alpzc34zby8vSzpHQjhzSV5SPFJHWXNWbGo6VT5WWXMmYXo5KzokYyttXXVw''@;'; put 'put ''cllHNExHbnNse1B1d3ZVPWVHam50SlhAb3JGZV54Pnx3YDplKEZTJCtkd1NZcjphTXBTNFk+QkVVSnZ8NWJ1aldwYlU1aDMoU3JOT00xL1RWSkMzSSF+ZXc/X3ApbUB8Km1PelR0bDE+cVVwc0Z1Y2lVQlU5NEI8M05Ab2FKK20oMW8mLFFXfTZwQ3cvNlsjazBuWGFsKHIkSkBkWjtvXyNvUSx1''@;'; put 'put ''fnR7YmVJRyllKFovQCJbRzJCWVQ7diVoMiZtXkZBSE5mRWR0Vm1nSHpTUn1WVnQiPGw1K20yTzV8dy9ifSh+cEVAUX4sdEJ1di9AXnEsfURhT2ZdL1twRlQlb1E3bEhLS1RRWXpoMH5LVnRpVSZJe0VpYlViYT9qV294UjZmPDJ4Imh1eUlgSSM7SVRmVnp+aER0Km90VV1fQSxOZH52OHI7L1hn''@;'; put 'put ''LnpOPXAuQWBETXUzcm59LlArRGl5MjRbX29bfW9GeVtPRSxfc25LU2l0bnM6NlAwRGdlPmBzV2hfNzo1ZGFXQ1UrRmApTCsoP0JMJVIrO2JkczNdOXNlJTZPZ0J7ciNCRTdfP29HdWk9bnVVaEReNmkjU3EmW2Z5bn1vT0J1RWFhOzk8a0lGcnlHaGRWW0ZLbVVUbFk0Nk5zPERNdWp3U1pdI2pv''@;'; put 'put ''NzRxMiRRQExTYnBUOElGWHlpPHgpIXVQLlBkQHdfSm17fTIpX2BgP29YRUY3KkNzbitVcWM6bGhgXkIjfnh0ZUshOSghUyxzKFNYX3F6NCZ+VG53JClBXl5qXmB8TWJnTjNFek4jXmd4SlJAN29bcSo7KnIwRWtkS3hkZiF9KUE0JTIvP3F5Tkh+Xk9bXkNlcT1kdyMzOGRZNiFNQzpsOSZWMGdi''@;'; put 'put ''fmowOltySG1Rd2J6WjJ5blN6NXR1Xlt9O3kwTnpKRXl6LFNsRC5OeDpqNjg2X15Yc0I5QndrYjxUO2RpTjVqRCRnc0Z0JDhUMC9ieW5lTW5IOHk5KWR+SStPbU5nU0J8U1tNXz5WOVp3PUo1KH0hJHk6TFNHTHJbWn09KzszPTxDI1JSaWRSXlN+IyQmeHZkIUg0TEl9TD9LMj84QlVzbzNQRVZ3''@;'; put 'put ''fClwPncjYiUqSmFAVEIkdDpXeW8pLjoyeX1yMlBsN3JyNk9TaXB8Sk9TYl0hUm1VVkY3RDR8U0d6Um19NzQ5anNATTJFcSZbTVNMJXxQJnEwakdGLmxANlFJajc0XT56S3FIPmkmKFl0KVEldCtre0k6RyxEJH5nPVIqLmlgJiZUZ0kkdDZhSmopbzJFRHlpXSU0QHBtKXt5PX5lakdgVGdCT2JO''@;'; put 'put ''N1lYR2gjRXdTQFpLbml0WUw5WHVdNFltTEteK317RC8qfmgpSiptcUpbR3Nya2Q/bXhBSV8xLmJGUzo9JXp2WCp+dF46QDhTY1dOcVJHdzl3dEhmMUtCTzleMG5lO0EsViV+WiE7SDd5YX5aIW0ufTZNQ1dhZVkwYDttYDJIbDVpZWFCY0RIciF1ei90dTNGWUV4a2V6OnJzJk9rKGxmbHI3KHZR''@;'; put 'put ''cVRvK0JZKWcmUl1jTUwoZzhqSURWeyg7ITxINlM8PG4memtTSiQwISlqZS8lUiZpTn07V0R2T2tVW0ovdiVJbDUsL2JQKi5qUG1JcmU6Tmd3W189YFhaX2A+Nl5CdUVhW3t8Xmd1RW5OJFheKEQ9eSZoIzwzR1YrXXRGRyt6VGkuI1ltckFXcykoeD5RM1JGXUlqXzJBJHt0cVhdTnhlLyQ6c19r''@;'; put 'put ''UHk2LEt7cjc/MjE7eF5sdHhodEI/W1shempfbTdGYGcqQyE1RnByej87XjxBX1gxODZMKDoucEdCVUJgQ2ZXOUlbTjt5OzEhPXRhci94eT8pMWlXWU83MCJqO0QhfVtXIz5VUz47fExveUk+aH4/MiU3MyU3UEJUW0RUYj1hb1ZybFBtQ20mQHwkZ1leYWwreTImOTswMFRYOyVnRlpEKEptdCxK''@;'; put 'put ''fjZycWdeaW14PzBFOXpHXiNETzFKcTFxJTFmMDcpZG5jXnF5S31TTXRSIntCPDAjaTZNZj14LCM4NTRgKEM1V3RZbHkvTTk+cjJEMTIpXlVmb0piL0ZKMD5uQDtnWSNWb2tkM19sX3FAMFR0eSx2QT8rJChDLiUkcnFQcCU6QkwxZyh0PUgocls6SWp3OTciNT5lI2g7WVF3ZktVTyx7YSl2QC54''@;'; put 'put ''fnZQO184UXJgUT5TWXBSIjNGTVguOGZwSl19PkBIVUN0WjJBQyZMXlZEfDpManJiWHhCLD9benQ5cmBFfl5MR09CSD9GWH5bLiR6U1Mwe1MzekdrViJ5KHhTNG0mQC5XOi44TypnOE0wIzBVMjAwS3x0JllOVXxsQWFDYGQhTSw9c181bUN+cT9oW1pgUGx7cXQlQCZkUlcuNWNna1YoYSk1OWw+''@;'; put 'put ''N2pQfU9OSSxmbDdvR2J0SE5TPyoscmRMbEJSa09IU1N1cjVFbCgsbE0raDghem4xJDRuSnw6WiEpYyRLczNhYkt3OlJGajRxSTJJdSwiZW9kU0w4PkpzOG99fnVKQHpZbGcrKm04WiNrJHR1ZG5iQX1HYGEudHBzKzhpYiM2dChJQSElWzhuRF56Ui88KU9KSix2V3xNJT9NbjR6OGd5TWRpMTFG''@;'; put 'put ''T24hOGk2eWhGRmAoLCpNaW1PJCN+UGVROChoUGVAdTE2NTQxKmNtbUsxaFpDRTlUYzdmcyo7Nlg2YXJhVWJxdmBvWz9aKGRLWClgUiNIcWUqTC4sfCVmSDNdRSx0bX1ZWiVgQCh+YkAxL3Eje3lpZHtFSS51OmwxXTtLViR1Z1FIUy5qbXdFMWtIQFV8WHEjYVBwLEtWS0NvKzY5R0FnLkFdTEgr''@;'; put 'put ''emxtJjchMSUqe1J+QDV8IWE0WG1nN10sO0hbYWs0YEA1KEZWXkJlKyFhOEBFSjUwRl4vWHNjTk12NC9iR1hOOWUyRGQxXTYjW1Yxajg6MjN3cE81LyEpfEx6bWRaPjNzUU4vLyNIN2pXX3ohUmZSSEJHbWZaUTQ2UExmaGJ1em87YHwxT3dVZXpidz1GfilwZCgmYSV+LEl8JiMlc0wxQ3prdkE6''@;'; put 'put ''PzFJSnhEbiEuVko0I1ZdW1swO21LVUNLWF4/RWxETnw/LnZHNW5dNHAvLCtsOHozZ2BCaHZgVXlIdEhoZXZoVmpgI09MZD4xLEAiLnlzNiQuNSU1K1RkNjVvNylyK3wyPDwsXkgqO1VPLkE3M11HQ0VZSi9AOlFAd09wUXlmXmUiW2RQWk5vX2R6QH0wZm4iOk9vd20ibC9GfWJ6Tjg/O3JWaFli''@;'; put 'put ''YjV2PmhlK0RtP25LMiZURXF8am4rbFMyfi5EWVZ+YHovXl8mOlFJZ2ZjNCI1Yz5mcTM5ZVJbLiZtenE3VCF7XlpiS0xCODBBSXh5VHJdOihvN15lNkpSWk43XmN3SykvXi5va19bKWNOcD8rTFV5cUx8Iyh0dVROaTs1bClHP2xYa2x1JSR8Um13LyxYakAlMGpzVmY1UzFbWHMsRj8/S0VRbmxA''@;'; put 'put ''K3RqXVNbQC9zZlU7Vl8hcTYsSz1JOXl+eGd4fWk9fUBwN3w+fFNaWk9SWHJPZzcrbk9efnpjYUVDZ3Q4R1d3S3ZwXz5FcXAkO1speWhMb2BeM2ROVm8yVj92QGtvI3JnXk00PlYwZUdZNUJMTEciempZNUpzW31ZTDh8azxwO2o0ZlV8anRKPDc8KCk1WjVCfWl1cGEofTVALjM/YjBnQmRAe2My''@;'; put 'put ''fnZzKzwsVTcme0VtUWFWY0NxUmEwK0YlVzcyPE0zYEpkVn5UNyUxSnZOdnIqY1dYeUxaR05AaiVuUjBaNU40fjN2fG94ayolI1orQUdUcWQmIm5NLEtPKSk2SEJncUJRQyh3KG1tN3Y3UW9ac3FJUXFnQ0UhPGQyfWRYfDFKLDdnU29XLCs8aWZEeU9VT1grcis0WkpsZWw0IUI7MDZCXVIzbVky''@;'; put 'put ''cG9Gb1tqViFNUGh4dUR0eHFSSHx2O0lYPEpZTy5LNm5XWEdHJE0mc1RifWI3QlQ0TU1QdCVhcHMuRlR+RW4wTUpdMDZfd1Y/Wi9ZO3MrRlhBQX59ZkRifXxzSTVbe0phI1dIMSNUMTRHODVZOUsmdlJUZzB5WlNxQFBBeSVoPFF1SHsyIVFKQm0zbXloRyNTUEN+ejs2OCtKdDZKT2pyTkBQNnMr''@;'; put 'put ''K0ZLOmo0KmhmUUI+UFY+UlFwTUx2emhZTmxzej1ARH1EOXg6SG1SYD50LDZjO3pQdVUhNWFoaXF0QWFjYGoyc25OQjU5aGprWjB6MVQlakNYc2lta2lEaEApQy52KlJKIlc6SjNeJVhRISQhXXVtSFRsM01tKkY+Zk5lLHs2dVJRVyEwT0IyRlNvd3E1Q2dHRVBwTmJfRkFqZSRCUj4jS3BibSxP''@;'; put 'put ''PEsxLCJJJTleYnszSCtUYHpjMUBbek8kIXlrVUJNMWEsU05wRj86ZDBxZmlpaHFQWzFpfCRrOldMTjUzODMxNCYhdVkwKStgNHBQSn4lQGJpLmF5Xl1aLltQU3xkLltyIlkiZnpQcV1yeGtBcChxX05jVGFtRTE8UkFhN3ppaHYhK24pOzkhbmJOe35xTzV9Xix4X1leKEtMTzhsPHgsPFhDQncs''@;'; put 'put ''JXkxRi9sQHg3ND1RRSRjTWNOTTpLRi85TmR1LEkvei41XWl5JmlCM3J6RVZ5JU18Z1BzOH48bFg3OHJxLjdBZFQ4JF11VDY4WzIwbEJpSn00alQpJngveVR5Y2NwPFp4L2tMIVE0eFhEeiV7Pn5pVz1LNXlxaGYrQzhhKyZ4M0IpakY3IWdaZWszT0hTcFpgJFZ6Kiw+NXwyVmZJRn1ZMEJ6V2hP''@;'; put 'put ''P1UuTVg9PnJaZmlMd3t7Ly9XP28lLkUrfEl7eyRrO1NSX3pnPGpoUDxLS2hkMjh1TDQ0Mn1sUiVeaUxfUCokPyE1MTE3W1dqZV9GdWpyMGxUfSRfP1kmIV5zOHtOfEROT3hTKjdUNE4jcV11Mk5tMjkrNlZLRWgsMlhSKGQ8LzBhMnN0eFRIdHApeCY/PiFuPSlJYDt8TnQ5KURMa3QyTWQubFYq''@;'; put 'put ''dSM1Qik2YD1tfXJpTSFFe3NycTYpVHNgREhQcUtsZk95ajhZc19hM0kxe3hJbGxMdnlKbDwubTkwcjJGLzYhImRpbXU0ZFooNUIhJVEmMD01T0BZVSJiX2Q6dFVQIm5ZZHNSXlhrVTdJX24kP2RCPFk0ajt2RW18TzBuIlk/OTYwWkNyT2RiPGlDVWRXbDpWXn5YOzpsL316UXRlT1U3LCRDRGd0''@;'; put 'put ''cnYiVkgpezspelZWY1FhWixrW0JpZXlhZSFkYjhqdWNDVE9MNnVYW2d7KzdMR2lwXiNKTiVKJGhuUzFyVyRJXSVbcSgzNms+Qi93RDZHMDZwQy4peT1ZPj5lPEMqVjhaYVk3eT41WEh7dldxc0Zsc3ZScnZRM30qcU9yXTgpMlBKIVc7S20xe0MqK2JFeC82Vz1BbDU2azI8Zkp6e15wYyorbmRh''@;'; put 'put ''UypNYF9hfkRpImJQWENibH15TH1SWzYkOEEhNSlySCJoTHtrdyVoKXgybGAmKzx0fHFUPFZmYihgW1QqeytjSD4vKD9mMFZrR2ROa305OWdMS1JWPisjYzk2MH5jNmhVbj5OOWRYcTl7Rk9scjwpfSIuPlVJai5DZnVUYGIhWVAzODpLWjRPNVZHZjNNWz50X2hTQCk4SEQuOnkoVyN2d09vPlJw''@;'; put 'put ''Jn5fNX1TYn0hTUZEIWEjI2BjSUswTmQ9X19ydSU3ODMqdTR8bVtVNnJHYSlJTFszQj9Vd2koVnZfPEo8M0RnJVFyZU9aLkxHRlUlZG4lKixJUVZ4SzA9X110MXIiRVJ7S0UqK10wZXwkX1tHbj1zTUZqLztjNEZyTl1hIVBCSFhtM3VeQHlETkdmLnZBMGJpYV5DP21VcWxAPlIxb0RTNnElcEcz''@;'; put 'put ''U0c+KlJheUk5e2V6KHp7SEBtRX0wUSR6ZTN5Zz0zXWY+ND09PENzR2FQYCsjW1hiMXY8XT92XktILGYsI3dDPGA5OXt3cFswdFE2Klp9NzZCU0wsczNpSzdjOSxWLmtrdXhsOTRdczRZdDxvMiRRUT09Imw2azNHQiNYaE0uJU9OSmh3R2J9Xy9WXTleOVNQdFt8dnpOfGNmU2dCRC82Sy46QT1F''@;'; put 'put ''MFJxVyYwP1VndGNJbj5JXjN9e0l8c2cidC9rZD1XLnZgO3goNkErKmZSJixAQE5RRzg3azA0aig2V2NXYzZTZHRDKn51Sn1nIlAxejl4PnY5Q2ZialYoNCZSc10hZW5+V09wYGI0TV9lTHZPZVl1cyI4Wkl+RzZNY3ZLbDpZZGNLfGopWVtfbTJSVXU4YkcyQS85N0pEXlRRdDtJXTNdIztNL2l+''@;'; put 'put ''aWJuaX5fdzpEXjw4fHIjeFcrLlJgNktxS3g9RH4uO146VVNjZG17WUFDWCZjUFFgeDM3MjZ8XiopMipZemZHO3hWbTN0YWc5ezQySzhrQm4oLG91OXp9Nz04Syt+PzI0OXtgenQsPm5pJTRdIyNbI1RsZWY1bUlRVzp7WHRiU2Z6fk9ZQiopTCZSQTtWeV5KKW9yYUxCSEZMKUNtPDF+XjNMNXos''@;'; put 'put ''Wk5sPF97OFp3QTF+YF88WXxnNltZRkYyWjZidHlkc1tsKCZVR3tQJURya1t9OyFuY0JVPmhFcXsmRCE1ZDlsMW9ldH0vSVZMIz51VloqaXg1TX5oW0pgU3dFKXFjIndmeGRdWEkuSipseD9RdT43NVlfWkldUD9FKkN7W1ZrVkZLd3RSM3QyVFlhREpvNFoubW4kY0NQJVs+RURmbE1iYTIiakw0''@;'; put 'put ''RUU8LlRBUnUrJXQqbFA1RWc+ci5WLHltcE5BUWduU141ZU19eCVgRDxYYnQ+ZjwhXzNfNEMjal1qU2kmWWU2NX03NlFzYlZHVmk6YVNZRn5bZzNZT3tIVl5tb3QzWCY+Kk45V0JwKkklOFQ5PjZqalhASkkuYkR9TDQqVU9yRUs1YFhCb1JyWktVU2piKEEyV11LPTV4cyY8d09WMDUzcjg1eFBt''@;'; put 'put ''TlpBbkswJTNjK3VPRTJUNllpPnpiP3wpcTQlOGRwRVVZMkplKmc0PSEjTTwlX1Z0WzVyT1c7cyM8TVk8M0tAQDpLRmJecjhKLll+eiFrcXUwK2NZIW0peClLSy5fZn4hUigmWHJJJTw7YDNVMnBJbyIscV54eHIhdyRVIzltOzxCS1E0YD9TcTN5Z3V0UDRCaGtWUHRAS2A1VGxJeGtnYzxdKDpO''@;'; put 'put ''d0JgNE9DOnMlZUtiRD4mXXNUKHtaJkxMb3YoRkhOTiRRPlU8cyRsPHpidXhJTzB3X08mIkw4e24iLExoYWlIWndffmlNPi8ha2cvfURGajNDRzgqMGN+X1d8SzgzM1d0SUl7RXpUeTNsbypnKzg/ODdNL0g/aHhiZlFWSmwwWCZZYyNeSjNzVVMlTC95fCFCcSYxY2xjVn1nPXlpcndHVWRXN3oh''@;'; put 'put ''TkJJMVJPfWxyfTYqTCFMPiJJWEwzRnRkPD53Yi9sNn5aOC9EQ01EbEBCK3pGZmQ4V2NSWm57dCsySzNgS3Z+NjA4X0lPQmRgMHd5aHxqWVQvUy4lXWlfZ2o9ZDg2SD5iJjY8dVgsPUJkYj4+OGN5VjFTJEB+JWJLOSNkRltVV2tiOTNWfGI5QXlrP2o4SCh0eUtIODVEdH1tJl5vU1BWZDVoS3lP''@;'; put 'put ''XiIvMnRsKSVvaTVkZ3ZiW2hDdCFXK2Fqbl5SQkdJUldpRGV1LmUzSHtkUmVhLi8hWjpQOGpAYVloJUFudTdoeCk6TE47WVhtIVosWyhVenQoKzU6U1lZSncjd0J9cSk7KFU4Z15OfGx5KmtVOmI7OH5MS0JqbmVqTTRCWmdmczckR0dOcTBfLDdtT0orPWwwZldqOGE3cnk/aG50bipaeGAlbkxS''@;'; put 'put ''QiZkTzBCPHxRK1ZiW0t2MiRaTnp3KHI1Pkk7dUIjJDFuQ0ZhVGx4RnJ5VCpFVzkkdVd0PlZeIyRvUDJraHdWNEhAR0AvUHNNdDU1LD1DdUowMj97SVA0S2dDKyRNeGRJUXNBfUUzUDBiVUkoJH1+WzlzdXpPa1I4flQ3MURZcmNQeUEmTVIkS0RgPUlYXWlLVyVWQTY2VXVHQzA3KFZPaDdVfms9''@;'; put 'put ''Zj13JT17V2cjL3hOKkdNezoqTHZlQ3NgQkFAUXRWRU9HYEQzZmhIa1lOSnxGdSlaTGxJUCRYfTJoPjdqb3Y+KkA1ND5qMChHLn5rJnRBR0kkUDR3JE4hSUtEPm9lO18mc1soO2YvSW5CRXhtUmdNJE9JYiZwJldRSUk1biMreU9HTkZ0SF9hXlokPWF1dXRoZWd6eGgoUXAqPnpFMXp1ZmdjamBe''@;'; put 'put ''YlBTYjxCUzJbTC5UKTVsQ31bJilgT3FhbnAkY008ZT9tWn5wP3I0fXRJa2p9aiZTUnZNTjoxRHJXJkc3NEBvan1yL21kL11kSUJiekFTQW94ekdZZ25XbDkmI0ZgV3Vib3Z8T3oqVn1+NX11ZTMzOSM5UlMqSTc5aiUseUJ8SGVRZjxtfTREWX1PXmc/cjdLeD9XKnBJQEpFSGt6WzxsWH1CaTE3''@;'; put 'put ''M2VmTGI6cEE1LF8pdmRJP0ExcWJFbW1ldVs0OCJpdi9ETC5keCQ+VDZLZXxdR1Q8JjN6NlliJSYhM3M4QmspQCQvRTdTenVHMzZbQEx3L11MOWBqJS9+VDlVWGlhX0dLNllHMUs+ZUhfQlU6d2ZEZ3ZjMSJ5QnBIbSp+TUhwIk14anVtaH5ZMjRmUlFvIS9lZXI7PlBsdWY7Kl4pUEAhIylUb2Z8''@;'; put 'put ''W2ZfMTZBeSRGbUBdRjglQnpwVXs0QjFgTXs0JTkhKDhdQk4pTTRKTk1fbWpqRCVhN2BxWTBMcVAhZCowQ19makRPYHhofmdJJmk4IXhPb3tNO1Z4dCp0bGFDbElSODxHTDkiWSZWaW12WSozJk9xVVNCfTN3U3FUTk04ZVl8bTUwRFRJUF9KInklUTtDQnI4QWh0czZZRj15TFIqIXkxQio+RXAm''@;'; put 'put ''UkVhRFF+Ln54S0dHdExEWygrPyVJWikhSmNeVTI1fGtYNXQpfi5XWEVAK3xDSGVDdDZCImAza29RZkleYWRQNG5PczdUM1hkODV6TDxaeWltUT5DWyNGdkZnXTtxcUx6M0hrUnR+UyFXO29uRDUvZylRVj8rOVoiaXQ3TmUjWkJTd242a2hOWnU1YGR3cTVIKSVkU1RGYHJXNV9nPmRUOCouJXZB''@;'; put 'put ''dHQwelVfdmFpJDU8KDNfPGtXQy5ZZl1oPlQlbkV1Q2ZEJjxDSnBDMWJ1dEtIKDJGbTg7UXRRWWVQNmNiY1UzJXIkRVFsXl1gSk1uUEhqU0pWN3txY2RJQWAqaChgPV05Xkpfcn5uTDB9bWlFVStrOmx3PGkqVUVPY31Eay5ZWU1FQytKdSNjLksmd2s0ZzVZbC5HKyQoYCliNXZ8YGBmQ3laZ2dT''@;'; put 'put ''NmhbdTltVHUwa0YuPGdTbmUjOWB0bVt1SkovJjZTXz9hOiFSP3BlQyRRLCwre040QUBFd2dpWFByJEtXV29FIXRaPn44bkkyeVZ8TThzWEEhVnBQWD1VN0JPaWU0WnQxZDc5VkpudiIkKz1Rdz1YIWh5blR0XVpGRDJiXjgxQDVlTDtvQXdlOVtwdWVOY0R6c3E2PWViVE46cm5+NWFLWX1yQ1pZ''@;'; put 'put ''Zk5pVlpvMWRjP15CaiU9emJ3UzI1LCN2P0ZVPSlFMnwoZ303SkJBMEw5aUhTREBvKyhnS1Y1RUpLbnVGXiQ1NTN7Uz0kblcqd3UsLi9ncixRKzIjdy51RlN9RiVgbXtVMlQ9fUo/cjBaXihPUiQvSFNvP153WngoUmBbSUNXL31KKXBleHVwTzc9Pmh7MnhMei49M2NrVDdWW11IXXB0dWZjRTxL''@;'; put 'put ''MyY6QjU1MX5pYjNeZERCPXplTXBULiNgWkBudHE3d3IyMEs1fnNvd2tzITo+Nl8hb1ooRiU7XlQyY1l9PjVyTzNBb2g4R3pJcE5wWTVUVVZod0pZRU1TTn5MSm1hZDROazo8YytDRHM0YjdWd2FFIl5PK3pORVMma1J+MGFvJk17ekNxdGQxRH1WMDdobThObDJyPS4+NHsmNXNrRVE4MDh3e0A+''@;'; put 'put ''bj5eVXlzRkM6JmpgK1A4a3xLWl8iVWFWbW1uKTB5Qi91dyV6WXFWNkU0M0heeGxPQ059QVdhYitzdWQ/UCI4LCg0N19FekomWSo2Mjp0Tzwsc0Yob1NHd2h4Knc8W2lAJDEuZjtDcm1QamxAPCZUaEZ9V3Z2NV9xbCI2XTdYe1M4PFghSnF7Q1ksPFRrVTMjYmEidnpILkRldHxpZENSOWpsN25X''@;'; put 'put ''SWJhLzBEMXA3I3F1W1tJcUpNOGApaykkR0g8blpHSHdUYz9MPEc/LDF3bV9KOmRiRTRxcmdgLn1LVC5xJWJwSjtmdjZJL11gYDclPFQ9TUtZPyRpLzs6KHF7KHh7UkVLW3hnY0xYfiFGV0tfTEpkcDFyfT50ITpnUCl2JXF6YjRYeE1+a0hMNGdXJEcoPGAwTFAlW0c+blY4VkB6JU48TlhdbG5h''@;'; put 'put ''TTxDNyJ4Szw2OFU/V0Qkckd3b1pIZ3N8Z2xEUFdpUlgiKEBfVUA7NUBycypoVCU1RzBfWys9K0lrQD9wQko/Qy5ES1d6cWZOQktVMFA0S3VqUzxZcG04WEpidHU/KDdqQjxgcW9YPDpYbSNyRVs+MmNCLGZtSmEjVUkmRjkjKmE3Kn54Kn5NMWM7SzghYWYuJHQiel1WTDVQQD9wYUN8VVpUdj55''@;'; put 'put ''Z09IVlF9dEV6Y2wrQyVxKDYjMmRpIi5aU2AvSGYpajIpd1ZMakNNIyJ+dWJMZHRIRk1SLyhhaytUQX1dUnxiYzpxMHxXUmt2SS5rMiNaaDZwcX16X1RkU2EkSXg/cSklentpWiw3fnMsM2YqSnQ7b3wjZF0jLmxSIlFMWUBdVXp3eVQrWDN+cU48LntiR19zdTU7S2pzQ0VrMVEzbXR0RXRGfGl8''@;'; put 'put ''d2w+M0N0KyohKHQ2NUJgNiQjNn1JQHo4eDorfkk7V0FJe14laWM5N25kXmlMZn19Y1F9dzAxamlyMHM+Z2hSY1lXe31OLEMmR0dwKDdCN3ZAeiUuPWQsZEd6IyRZRX5EfChyfVZOeGFzPyV9RkxbaEM/PU9NRHU4YGJQVypfUixBdFooeDZRfTo4RjouM1tHZntaZXlqKE9aLlAueVB+ND9+LC5T''@;'; put 'put ''TnMie3NVS21sOCVCQXR+WldGbU04W0M/PHl4cmU7OT8qemsqVVNxPU9xWn1LcFVrPWhhKmVbRkFWamJbSFRPOFc+aTBKTDVsSClKVjxDfnFhNTB0UTF4P0dBJW5NQEZFZCt1clNKISlfW2FiYzRLKH0saUdFbHZxYCwmL3kjUkB0blJTOnk5SnxVdCVYV1tpWDkvX0tEOSt8R018T0xiNEBaPlFg''@;'; put 'put ''d2dgXSZOZ0UuayJ4SltoPGd6fW9xR3g1N2MlakVEZlBDWzhCWnQiQUsoclVVIiswQ20kNC9XaUo/c113I1JRbU59TlBATzpOYUZnUC9rSzI7ZmRaPjQhPUBmcntPVnMyWFNfWm9NX0c/a25JalBEVSkmMVtNJn14WzNjKHZtL1pBJFdiblZtUFR2MWJrM19Ke04xLGF3UXttKiwhX29fUGR1Zn1u''@;'; put 'put ''cWxAJSYrSV01bCVxOjZWPTwxXXl+eEsmZ1E1cTliY3c8QUJXKC91Q3UwWkJ0NDdRRC9te05xdFdCN2trKnUqKVZLMHtzMWR1b2l0U2kvQHBOV3o3U21wODhecCFOIzo6dX1RQjFqNCMjMH1UYiJLOmVfPmt4LFhoenY3ckl+cGo5QlhLWV0rOTRbJF1xOVRhaSFUMlFocSRicWQiUEAmbUMqfnJQ''@;'; put 'put ''eFs9K1RLdzxnWH1sYzRBN2V3e3lYa1RZZiUjIyJwVFJ7OW0/LFhIeH1QXmZnKiY8c2hgSH40dWJxO0dvLztdTiYjQ0o2X1pxTFQ/a34+VFRjKUUwTWgjLmRwJk9KO0t9IkhsTnsvQXZiMiZIVn5NWWIuQWB2bFVrOXl1Y3wkLHw8UD8lIkB6OGxUZENXa2JzKHxPZSYwfVdtKyxhZ0tlcEZbd251''@;'; put 'put ''RD1SXntYQFVjSkxZOFswd2dAQ2ooaGpXR3ojKSRLZ3E/U0Z3P3d4fTEzKCp0YWwwNUZLJCx1X1tDWDttXWM/fTFUdnpeLnZWUmxZcWp5cHk2R0Z0aEZFVTlTSlNuMVkqaFBHJDhEc0smPWhhKlM/L1hTYHhwWGRiZkhuWzg1akVxYm1Fa2Y9Z3ohWENbaXUpL1U+bFd+XXgofXdvKFpjI358OEFQ''@;'; put 'put ''Uy9mdEN3Tk9rfGJ7fUtYXiM2c0JPOis3c31+c2tUIj5Scj55TiNHTlUhcUB4eHNQOGZxTmskOHh+RzgiRC5XS15hSU0lakYmclUvYlBEW3ZqSzAzRnd1blRwQz8vVntIYDBRL0MzPDg/YzN9YWRNLDFfK3pvaS5UcGlAZ3BdWHkmYGxOQUY1bEJ1KExyJitncld8SksyQ3d7bCIvTWBVaiQ+Uk93''@;'; put 'put ''RShlaV8sX1RBRXd6Ky9NRyVJJH0mOT9FNE0me1k6Vmt9WWF8UElAJUVteVkjWU9PMHtjPFFFWHcjQWskOW87aCFVd1Zaa3g+JiVeOzkhOlhsMF9XeU9OcDc5eEFIKF4vNVBsI25IYU1dVWJnL092UEpEIThyelBKVSUhVk0mPWhHeVpzRTNqRDNdPlNZdENnKEl6TFZDcDRjQXE7OEJUTXUhYmpJ''@;'; put 'put ''SEhydTw5XjRKdUFAPW8xZnZtVkpxY0JWZC50XjhVTSxLcj41dUBnJHN2czIvTWk6X2gqKiYuVmYrQmNncCYpfStbbSVwcUx6dDxlRlpNITNbY2J4aWBxLCwhK2JlUlZ7Y2Y4UCJMUCtYXz5CMFhSXX1dR1V5WGEqfTk5aXNbLDhhTEdKPilgOlhLJmBQVE9GP3tRMzJ3dz0hSEpxdm1lL3A4NWtZ''@;'; put 'put ''PDEwYF0zdX45XS89JVhSJEVVTi4yWm4yM3ExaXNhdEt8VCkkVyx3JiJRaTFMZyFtWnN0TFFvTUglKTJVQyMhPiYxbjcubn0sRS9jKngqYk1PenNnZDYrXTxxbUUsSCMwbURSLjZUZ0Q8TFdCeys5Mks9WXdfbUosY3VWXSxCSn5bblBRb1M7TjpXM0sxMT4vczxVSTdGX0IkflB7TTc1LypHOj4v''@;'; put 'put ''SnIvVFVNbzhfZ3cpOTx9ckwlUmVReHhQMDg/Y0RudjV3WX5WIUJNalIqZz49Wmp1aT5GfldHKWpiUXhiUjE5Tjc3P25uelhoeEppOVhZQVlVNi5kOmtJcDptMnxXcD5vMDpFO1FESXkiX2FVbkkpTmVrZXA9UzI4U2xmdHA6VyRJfTEmSWc/WGpUXkRbY1hfNVImI1t3Y01jUyVzKkBQTzQwPX13''@;'; put 'put ''RztXJFRLISppQ35oTE9HVWw3bTN7WSEuPGYyNGt9PS5Hfj8vZ3Nud2cuXz08JHNPdSRIInUzSGEvInN4NzZuMTdAcjZpdDZ6SzhZIWsiRXFlQjdALkltcHRoXmZAb0xPYl59RltCYDV1QDVGdz9BVE04Qio7JVcyYDAzcV1KOm5vKz4vPUtkfTs9T2phSjd1UGE5SipfJSlvME43Z29WUzYjJHJb''@;'; put 'put ''cT17bTFjeWlyJUhiTzBMM1U4RFMvckM6MzZxL1tgRToyejNMUUQ7OjVsOns3UTFtbGY7e300fD9pIVQ+dn59cU49R2M+SCJdMGo4KGorVFdRfG5zO05yWnppazpidiUrayMqbElHK3EjN3s5QEplNGBpQnBaYy9xcC5OYmU5XWQ8NCRTRXNAflc/V1lVbEovLGZVJGlNYkwqPCZoI3lwdj8pQkZJ''@;'; put 'put ''QCw7Tlg+bl1qZUxvY3UkeG12R19Re0s9SlYmXit+WDE6KUBpd2NaYXQ2RXtjY05PQUE8TTFbNmJMM20lKUhZcjRDcjJkSG9kKnkrKlEoSWs3ZzwxNEBdakQ2JWR2XnxiUHh4UDZFKi5uV2szKlNDfU82M3VQeXNNOUAhTVg/VG1TPVZNXnNLUzE5XngyZTJDSVlvYyV8RWtHYD8uMnE2THw9UHZE''@;'; put 'put ''VmssYGtJYlhzWUN+NEJ5dT47fSl7dkVPOHk9TlssIz9mfFl5W3ZyZHckSVtLPmIkTUZ+bihNez9NO1c4KTZ2I2tuNX1RPT5TeVpWeWNzPT5BXm5pPXtGRik4M1s/NUk5SkkzY11PXSNGQSIqVntrcT5FNjUyMGF1RTlsaHhfZGRweXdhbT4mRnJiKGtUb1N0NUk7Ql1MUDtXZyRLLDVMQWUrPlE0''@;'; put 'put ''RzBGInEoP05ZfSFVXn5HTXk4QSx4SjlEeEZPd0lVI0R1Kyl6KSRAT2VDVFRvZkwxXV9JMGw8Lyp7c2JlKG9sTl5gaitIPGlEMH5vMntzfU5WSE0xcCw3PEZEb2YqfXBTWkA0XWR5OWk7UEFtaWBuX15ULHImXUtreHlaYChHUi8rI3YsVFgvR3JPank2RHxufSZLYURgWGFwMTRYYnFkYzAja3dq''@;'; put 'put ''c2BJVCZzXzM/SHF4cmw8bWQsQyFRa2xGIXM5VW8kY01dQC86ZmVARCRYYENZcWdFbkJpd2FDSE5NSS8qWmFwTi8/eVdOT3IzR2d4YSJLMWVdPCEyIVkrPShCcX5oQ3cxXzVqV0BbVCN1NV88LngmbSZqbWUvOEtmeSVyKkdPXT00QGV9OEBRMj1FIiNob2R9JHtUZylrbnNjKHtbSndXSlA0fDNi''@;'; put 'put ''WGxBJXNzU3A0dHZ7M2IpY0g+VnR3LFlpRmolYnNhXWIlYkZUVD1eOFMxTUcrZEg7ZmdJWy86SjhGSz5aWDJ7bF5LM3NKKCQkWEw2VT1tQTA6YG1TQk5IKEJsL0QyNj9afWpLfSRvPUtySUNgJCJJYmBERkFyKkgyKmJmSWg6bj0kU1MzMSFHZzR3M1gra1YlVyFUeEQpU3wmfmckO11ublZRZ1p3''@;'; put 'put ''eH1+eU0vJCIhY2dAOHVOSm1TLiMpJDhPaSpVRzpdSisrcihtSFFYRUE3anRJcDJqUWNaTyIkKDMhXkloKmB1YHFDZH1oT2tGSEx6NkosW0lrbzFvQkNvfVd0dktFMF16TkhHInFFOz5CIzVaUHl+ZTl5UkB2RGhMOE5maDRJUXR6YCFpPkQuckc+UlFMb2FucWJhV2MiKmFGM0IxTjQwUiZOfHBn''@;'; put 'put ''VnR3eyhyTjdrLj59RFdAX2xnbGthJWxqQjUkPEhMfX5EJWI2PXRmZ3MrVWpzQyNHSHIyMzFPayY3WiRNaD8lTCFnSmhLZ2dmSz5MSmQ1TG4rTzJ1bExIVnBfWUQwJHZfRmpPbm4hP2IvUkIiLjdlbmI1QDBtam8kJi57bSZYWDtVanBZQGNWfkY1UHBeN1o/MiJaWDhPWyttUC54Ikw/KGB0dChq''@;'; put 'put ''WiVYUGA1I2krKltXZiQ9ek03bDFKWUYqbiI+U3xNcE9yTEp3YHpOSShlRH5qREBQQHF5X1FfYiliMCRSO2BmbHhHZy9mUGl1M2FPM247NlNadTs2Kl9BTWpUWzxAQGhdSSNValFdQFN7Okd4VGFAdmhlKV9SbiJXcjNbcVQ6OD1RX11RIUVuNmJgSS4yKy9+N2tPRi9qdSpBaTJ6d2VdY0xCXS4u''@;'; put 'put ''aigkJS85U3s2akpLNVt+S09JeXw2Z0krbWxVP2NfZlZRNyhOcENpJTRheCZWeDFFfF1wPWw5SFcpKyx5cXJdYzxbL3xqfkVCa3BJJFAxNW9eVDNRI0tMMyZaQHM8LyNyL3VLeDB4XnBpcTFALzFEaE5UYzhOTih9Q1Y6SmoxJG14PTIyUyI5RDVAQUowNTg+QClLOm8rcVh8b0w9VTAlMW5eZnZX''@;'; put 'put ''ZlomNUN9ZFN4Pzt8UjwpKixWNGd5XSx0Rm5SfnFhVm5xKmF7YXZUdTE9ZHpxWzlMfj5YVzJBOW03Tn5JYypgbU5CZXlfVk5jRWFFZU9HfT4+Lzt+NHdXeW51M08yN1oubExxKyFednF+NWskITBKI0xeJTF+RTRqLkZFejhgY3QqIzZPVkdnXzx7OXxROGNnMFdEQEZpdGUqTHNKdGM9WHJ3RFNU''@;'; put 'put ''PkpMRmk7IXYlOjFqXmZJViI5XyY+eERXXW5FWE96dFE/amVHbENHeCR6a3NuPCYwPFZvYyghN3xEakxVSEtAeDhgMU9WYUlCJTQ8bmppMkdzWWFaVl9EbSghY30seVBMXjF4MXMxcHgmVE1aTE5HX3t6bmV7ZnZDej1KdE9jdyxKciVFVFYhJHIqZ2VoJn51Qi82VjxtQFIlOS42Y2E0LiMiKVJK''@;'; put 'put ''Mnx8TTRMOCtRZF8xbS53QmFTN3Y9WlldOzZIM0k5Y2ZUfXlRMXAkUk0vLFU+K1skRWtHbkpBREJbMS4jTF0kayh5ekllbV5vQzZ3RHpJMlRzbmZkV3UzNzFPfW5yfE5TTHttZTNVYHJ9aXdQRmRfVFBNODcqfnk0KVR4TVFdNkc4byNCemQ2cj5ML0c3VDNHUUF5fWVmQjtBP3VWS2ltdzIqa29h''@;'; put 'put ''bXNQRk1zejt5UDd0UT90Ol45PzRRQkExWG0qdiFhRH5JXipmdlJDWm5KQy9GVSZXbyRsKEduRHspOGxvVnNGMzhaV1ZzKDt6KklRQUI6d3shWFN7ZSFbdWhYYXQjdCtGYzBLcTNMIWlFfi87VmxeNCppWHx0dHYzSzZhNk9ZI08lNVNyOVNPXTJyPWQobGQ5R1IsLjxYS3VSSEUhYiZMSTl6bl96''@;'; put 'put ''fj13KT5UUUAsbUlILjZ8MDtWeE9eUzhCMkVKQFQ2RzNVdkhieElaUFFfeHJ2LDsiPkA1JFVSM0hZM0tMTEE+bUd0LikvPjVbaTQ7aj42SVheQ0EiKy81WyRJKGF9UnZzSmBjfjd3ayR4NG58dGZRUCVzRHR5Ykl+Un0vQnxKSXc1aGNBVXJsZyNPZmEueTdQZUFqY3ptWT0yXl1NPHxSak44T1Fd''@;'; put 'put ''KHVTKHd3PV9eYW1XKV86QjdYJHdAPEI1V1o+bXRrb3RVUHomVz1MTTlZKjtKPDpbJVI6VjczRk8rbXtnOHV7PyV6aClhMTNpXX5EWXtkMENWJHgmfDk2KiZGaXpYTkhYdj84bG1BK0VHTmckdjh8UkNlVGtKaWdNbHF3Zl9EbGZBQUtGYHt3KSw8WDZlWDFnL1AqUDl2VGxNKTBLX01UIVNTbUpD''@;'; put 'put ''UGJdKGEqMUozSl9EIV4uX0ZsInBYOVdKL05KP11XeT9PM117Nn4vXm1yRTBkYU46fV5pa0pdKEQlR3s1IS4sM1BFLjFRJD9YRywhSEElb14pQmEsJXEwUXk1OiMwSDVjO3MpTlBEPWN3UVB3cyxZIl0rKT9SXTw1Jm8iL0JJX3VvdnFqRW8kalsvfC9mZ1tNKm13Q3A9IUolflsrUm89NSF1IWNn''@;'; put 'put ''bXxrOVNRdXErJCxJfHN+X2AsYi43RC9yb3JWeiZYc1tnbE8xQmRmfE5mO3pWKjApM2NOVnR9RjNIUEN1aTIoYEdCPkNObEdWT35fKX1Yb0clQGIyP3RuPDNXbGJoPltyck9LWlJIV3NnSWI+MUc5WltYJkBPQ3MhJERhKClPLFpMZjdQWmtGOTdvMGZuM1VFKCJ5IllJUHR0T3cuRHghZDl3Uz43''@;'; put 'put ''Z2dJYUIkZmwpMi4mMmlmL0dZayh8MV17bVB7MT80dFs4NlF1NlglNjV0OiVRaFd1JGF5T3VJSE5jOSUvKDhqUTUlT1Z6U1lYRDBidVdwdXF9TSZ9Kmd3ZT98c2tPQGZOJWQ/Yj5KI1BCPVZ+VSw8cGpqVWlBbWYzPG1MO0RjTS5lRX1BW0gzZmZmfiRId2dXY3xPIU4kZWlgQ3xLJmBGeiZOUW9G''@;'; put 'put ''JWk3fmFfdy40JH55ck8uPj4pK2E7ITRJSEAoSG5GNUdoR1tlRz80cjxYVClYXkBIfGMybS9zenc4Nil5N24lciNZeipoM0tbYW12VmpqPDI5WTwmXmhHWz9QbHVfMCJfNWImNWRsRy4oIU03MTx4OyspITczRmAsfUlOeEJhL0g/cE05eklveW1jaixYNC9iWGNDfE4zPDhxRyl5fEkxIklKWFNB''@;'; put 'put ''UGt7U1pAWkQ1SlNLT3ledyZLKixGKnVrd2U8e3pUTVNoMWtTSk5dVz9VYytfcWpxZmksNH5HVm1LUkRpe31GS2RNTl1JdVE5amRKN0pPfFt6bm8vX3pxNUVtTkNYZVs7UUNGczZsTiYsZ3xpLDlbUjF2b0ZfeS94ZDF7KEg2YUV9ZXwuUXRJYTpxbCZCI0V5Uyxha1lTMn1+ZFIybmJqU1NzYyQo''@;'; put 'put ''Pz4oWD5pOSZUfj5VVSNHNUg9TSltfS5+eDJDOFZjbUguKiM4YjV3LHhqaEZmPXVVPXxXOlhrRjs4Qi5rYkRvWkgrWTs0aTp9aXRHNntSJDMlTEUlfU13dnkjeFFYVTZBbiokOV9ORm93UjhWZVV8K19NVz9SL2BQemdmJkV5USwsWyxbe3pDb0RGRDpqKWJvPHxoWnkmRTR7M1pvTGB0ZjhYW1J2''@;'; put 'put ''KHFHdjIqQHVaKWdRM2c7JDllOEVGfDhqYEpXInI3SzI6L2U+fGgkMUIsYFRoRFMvRT1rMVB1OH1IVV82fmhSakUpIWcuc3BfJVdtN1FoVlpNN2FsYGx4NXh+dUJlQllmcVVBaWxMYm5hfE83YmN6SitvQXtxUyFEWFI7flEyU3VgSikzdSVSSG84a19IPl83SEVBSl09bGx1NyZXPUxZPlE1VyVA''@;'; put 'put ''L1k+LylJMmZTRE5ncyY+WFZ8JHIpe0JWNnlCeE97YHdJa1s4eEFjVkA4fUVQQzRkKU90RDU7cF4wNGhJTT5uOi82RGlQfl9GSTd5NktAcF02SXguNHIwQ250Nk1scyl4byt4Szp4e1coazdSXVtgLy53PXdPPlA0NEA9Y2VTRSF7XllSUUNCM0owMW1EV28/cmRBQHZwK2ZAdUBvc2FBR3RUVSRb''@;'; put 'put ''PFdIVzghNiU9d28lVzxwflE3aiVlcD90ViFUQklqaGV1O1E/S0BNcmAyJEVLcChIWFt4YDNdKXJVMUJme3xWRmM7Q3hkSyFIVk8ySlklPmxCTXlEXjNxJCpFL1JtaGt8OTRfL1cxVWdpLzJPZGBmVGteanFuUD1xTHpNKTpoajlQM2w3dE8zYSE2QjpCSW1acDE9XV4mJTA0ck5mQDoqVFZrSVkz''@;'; put 'put ''LnBlQU9wL1FgblBLZVZ4IVIkc3E4XVZjTEYhR1R8VUQ1O2hYcEIwbl1zMT1EP0t9QDkxMEs+I34zPzJJZkwxPzNDPTdSVnc/WklxUm0qdXlDMDw4Z3E5c1hUei8uWzhod2ZzWlVdSFhqMSlYekIoQzlGZnJHfnxaaHoqPFREbyspT1R4LGRhRjhEc0JZQjB4LzxzJSFOOlFFSlh9MTxiTkgwQ0lC''@;'; put 'put ''VUl2Kl5ZZ1g7W2ErN304V09Rblt9UjhxWypvVFpfSV1PMD13aiVqI0dVWU5HbVAzPyRbKmRmV29JPCRhNkhXQDU8L2AjJE4/dW5PJD07d2pNMXY1Yy9sbCY4U0ZVT0U0OCM5fW9jSCZOdlpufVI6RUtDSCp6Z2Nzfit0W2QwR2QqKzVKT1pARVdvOl5vdj9dTWpqaCxTWjNTeytTVm9KYCkhdTlI''@;'; put 'put ''YCVyWDVOa1UzRFRad1h6Uzt8aTxWdHJIZzp3RDVBbE5CMDZ7JH5mZHYwXUV0O3hXPld3OVk2dngzZWZPJmhwcVVKTHwjYCh9dX1QVTprfWUhPEppJipreCxZTnklSio5QFgpK1kkJWhyW154eV8hOkllVzBRe2dnYGpuMjVaKzppekprWiJxUUVzbSs4RHdwWykyPDhiT0whUz1gYCJCVGN5cyhW''@;'; put 'put ''PSUsaG1ARF82OWdjVyIwVVhQPDZON2FdQmpGLzMlWXR3cktrVDtxKElYOG8rJllYbyhmfSpeN3o4VWxDNU1IU2Nae2VZYnVHJmJpNUFLV3p+eD8yJC8jY0xIaW9xTkwhQS9LJExOe2lyLmJQIUZec2c5KFlMRXhBMi9bRX5iMTI0OlYrfSNuR2ZnSUQyPksvIWl7MnMvS0lzazJ5KzVCaEgla284''@;'; put 'put ''bVJxfj5pYk4mSnQ8cDp9X3VYK0tzfS5CUjFZajozfT9VRl5TRF5FeWk5dkAoLktCT0ZZZiFSaUxCUmNxbHJiNHIvM0d+azR5QFJnUipUentRYSoxXTNEXjR5UHkxSmN4elhTKlgrNUU4cHh4T2duamgsbFo0L3YhUkY6L3QzS1hASzUuPFt6NDAmR1phbzQ1JHEqPDR6aEVTKF8jNzp5SU1IeFVu''@;'; put 'put ''KjxZdD9UeDRbRzg7WzVNdGhiOkJqUFFPOzMzYmFfNkBoeClXdGptI2ojRkNMekF6fXFiZn5JXjkjMHNbUmtSXksrI3FrZyQrfWRvNXxDZSkubTA5M1RSSmNwWnkqNSJJV217Qzl6JVs3VSY9dFRDcSZtd0RtfDt9YHcwYSFfKVQmVzx6bG41cT1GdncuUWtrLF9EU0tDXSY0fkVlRENOPHpLKTV2''@;'; put 'put ''WT5oPU1ieHlYUFFvbzV9WGYvWTE5VmtDKHcwdD1Rd0FefTZ4OG9HZFosP35TRzIvKkBfK153WH1oIkNVOlsrNy47VmFCcT9najpMTkNVb0xbMT07fmcqUGJ2L0pzajNTOnZVMG0iSj4wVHNmSCxMbyo7LlRXfEksfmFwbVZ+Z2dENXc8Izo9V289VTtDO0Y6O1I5dUw+R1hldTRBNjYrQypjOVUx''@;'; put 'put ''ZlVMaENHSURhJlQoZnBpO0lOUDA5YztKTGNPLkhAMDJaPjZ9MnpOcjJwYz5VYjxoNHpBMS5IfmY7N3kqKWdNXThWX1k4QjlnQ2J8JmlDNzAuRnRLen1AfFh0M0U/PCFxKVtFMWAlQldUJF9xWFhLXSM7Xys8RS9yOSNUZjVjaWksKDRWPksoYmhSRH0/WlUqKkhTTj8mRCFuM1REQj4oM2w4bHpm''@;'; put 'put ''Tyw7bD9LUUZMTiVCajwqOlU3JEpPYkooVS5ycHB+IWx2JG1GNFssOylRPEBkVUBmKzlkNiQmZSJONnRydS95WXIze0YvcEZYIlt2LHV5Jll9eHd8bkFye3AsRGVJMWVPX0ZKdXQycX1lS28hQHVRe2YqTml5SXJRfD5BUzlFKWs0PkQwPmNOZUBuRHBhKzN5ImxgX1NXODlXWGExPEUzNi96ODd5''@;'; put 'put ''elZEVH0oUjxPYFl4RDFIJnt9PWFXdUBia1ZpVFVaNj0hPio8bnQ/QXF5ZV5WJj4/YSssJW57NEUybmtxNz5SLj5rMCxPSlNfY0B4W0dycy4jeVNiazE3UVM4IlQ+RU57dkAySTdXMz5xeVtMaCtwOUhVZzo7Mml4Zk1wPTRsPWp5RFIiJmxuflAvSXJwWGs/OWo7MitEYjVoPWxGdF94SjZsTlNA''@;'; put 'put ''VCFjV09bcn1gJSEpOjNEIytKPEBUZE02aiEhPltTc1d5VUpSOGwlMTBePCN4bk5rOz4pemJCWV9KMSo4JUxtYm52OWArXiomYmNJXzt0PnsiJj9Yb1goNHteX3tQc1Mxd3FZUmBFL2MreXhhcTVLVWRZLD4yTDJ7QVtFRDtGPysma1hDaWQ1TjQlPFs+bltdVSJkR3A2SWBHPktNLDNEYmEmTSl2''@;'; put 'put ''ckpreH5eJlR+KUUxQzd2M051aVBCSm1PWDM3O2V+dzgmInNRWDBXSXh3Zl1BJCE3QCt8eS8iSU0xfHdqdF8oOENnNmQjfXJPYV85bkM8Qkp9SnA6Qi5xOjBAT119SEF5MSpkMyxtRnsqM2QjPGQye0s9fn5TRm4oRDJvezZTc21wVStyPXJKJmI0OzQ2VUpzI0h4WDp+a30rJDZxdFNvYShpa2Jp''@;'; put 'put ''RkBYflYjKC9kNG4jNHdMM0U5KiR9JU5yMkNeIkchSj57WCJYWU9DUV88K3xZL1pQbkdwfjY6eClZcGRaJSJCWzdxJWRUKjVnd1crJXdsIW1Hb29hM2xYNipHekJQOGxqJUBsSGViXXA/aCQhSXJuS318MD00PUJrfVlnQFF1OzwvMWFtSXxjWDlwbE1+UXYiZH5eaFk9YFtUUXxUdX1admkwI1V4''@;'; put 'put ''ZV9CRWJ9Z05UfnMwSGk7JDJCUHIoY2BaImkyNkpseXAsaD8qcCFqTCMlIXsyek1sUFlXOSR+MixtRjxWOD89d1AhdzAhITByV2VJIUg2UyR4STV3fER0RzBFd1dGXU5BWmU3dXxWb3tBdmBdb25qMUFjP19dck15SFZEV21mSTVKYVc/K0sjUGRsdEYpL3xZSTM1NH5afi55SlBbSS48Izc6Rl1d''@;'; put 'put ''WnRjUiN2RS58Olk9MUB+PEx4RylANmEjVXAlJilBMEB0V0IlSXJGfnQ3bWFHdjNiOnwzU3lQSHVoPzpmdkZ5IjRCaF14dj5qJFd5OXY4WThiZEhkdy50djZUImNtbHB9c0J2bihYemdJYShVYTxGRDZuTkRwRXJvZyNya20uXyV9MUd8eEBDZiRmOWldSGgkaUJSeyZ5S19mfjJnWXhAKVVUcDYw''@;'; put 'put ''JlQ7XzFkb2cmd0omSl9PMCZ+cjhAdC51eFM0W2w5NSZxU34mbzAhajJJUlFydGspZjQxaGxFTmR4KD4wVCxkX2t2Lnh2Vi82OkU/d3M4U0spPyYjYUtwMD1LM35xbC9zUm58NW5+MmM6WkdgKVE5SV9OTjIlNj1UJSRgfXphXTY+N3wvdiFTY1U2RXNWUDRSfXlDJXEuXilMOWU+ajZqP1NmeEVr''@;'; put 'put ''YExdJk0hNllTV2J7PV9KOyI2MXdzNSRofVg5e3ArYV5FRCw2MW4/NTNXMytjOGs5WntkT3FRcDphLnYpU01PVj1sRm0lfDU5RjRbL05dQiFBPXt3c0pubnZEUnIuSHtvTk9xZzs9MjdqYWVhMXhLL003aGJVZTM5ciM5fHtELlNebktNazksP1N7cEAlPGdUeXgleEopelVab2ReTTFPODV1XXFi''@;'; put 'put ''N2hZIVQ3VDtAUCN8dWNjekt9RTAufWF1eUYjSiUvY10uVTk2elk1WD1yRXBNcEgoQiVmZzd0U3pTY0pESnFESmg5Im1ZRitVMVR4ekUycXpTaXVBTXcuRmtmSylhWUw3KiQwMCJaW2RlaER9fTcvIip8eG1PKkU6K3pHYS9jfTQqOTtzQThDclJZPjF3VzlOSmRXNllpWXQ0KUpzSzM2N0BOUiwo''@;'; put 'put ''TGlkcm1ueGh6NytuKDhzJGZfcWtKPUU/W3QvQnphIWJ2Qz1QVC5gSW1eYHAsV3xOOTMlUCExL3k+YUttU20zeGA/QGRrY0srSEJfYDdYPGkmMTJ3dyIjd3FxJXE3bHA+dihbaEFaU2hmKHFWKEk4ODtOT21Rdnl9e2RpcyQyMnhnPWR+UzN3VnFwNldzT2tpUWl1WTVIPXBiPks2L1ZkPTNBYUZg''@;'; put 'put ''PSZvViFISWlqR2g9RXZSPk97PmQ2NDxyXnxTNzpqfTdgRltPYzM8Nl5KIU9eZDMiYXc2QS9TOSlNbF5XV1NJSi9uIXFKTT90eT5LYGZMelBIOlQwbVkpY0FrSkVvd3luZWZ6am1DfHRmUmZ0QDg3MCM5WigxdjJTQnksNTx1P2d6OkEmd01XNDtZRmM5JFBwTVdlMU1gVi90M09YMWhTYT9XZ2N2''@;'; put 'put ''WH5WVUJ8Nmh7a3RNX3h5NClJK2IhIzluQ1hfZVV8azZSWmpKdlVHLzhrdUZ+flt2SDVOWzBFR0F9fVZgay9wamRUY21AMHRMamVxY3xhTzMwaGZnZ3EoPUI1SyJnM2Evaj1UQG47amExYHkwUFdmYHdoZ3x5fE4oPzwwXXhbem5bZ11AUnM4azJ9d1E3Qm4pLzxrUiZQRzF8PEZmeTt5MH02WExK''@;'; put 'put ''fFgmbnlKRl53UV5eeTlWYzdMIlVrTXA5e1YiYHt3UmUwL15nJkFELyxkUmgjLzZFMl5DOGRYQStma0c1X10rK1k5RSQ4e3VEbz0uJTxNbjB3UHt8KFIsRFh4QHJiR2g2OngjY0wiT09nPy96Ul9lRTMsVC5AfT9IeEJlMzRPXWFJbU5LPnVady9sK1hKM15QVkF1TU5bMkg8Pkl+c0dxeUQyJk00''@;'; put 'put ''R0s+dTU4Wz5lRERKbW0hNjsuWGxaXXdWdkElKGF3YDt3d2wpTFJORVsiO1gjO0MzY240ZFowNXVEIyY2MnRfLz1tPCtRcXtrRltJS28oTncrXn4jTkBzNTtUVn1CbFZtfWBHS1ltLHVKaCxiVyYzMWpndkp1L2Q0QHdzQEgheTdoSC9lRSsrKEAyY2RpQzUmbnxyd3VYUClTaSNhJTpGQnV5VnRW''@;'; put 'put ''VkN3PUQ4Y14zV3QsWEVAOiU9ZHZgV0lIdWM3dV5xQE9uZHgsfmd0dWQpWyU3TF1Hdl1hdVY4dEJIRSZ6NFdHOkoqR15PendDckosbz9eeWF2UUFSfV93MVhtTlYzZHUkL3pGamhBQE9CK2QuP1UqLCIvQldTUE5uMjs4WjxlIUZGenlAOGMoaGc0QVVNbmYoXjQhV3sqanBQYkF0e09EKCpQeU5t''@;'; put 'put ''dEI6dHB1QmF4WiIvfn1pPGBFOnxfbmdbSipOWD0wXntJInBOQmFPPCpKN2I2VFUjPktucEBJdHdzV18iP1J8anhZc2R9YzlqbzYxZ3cqW0JYSmJ+PGohZyE0ODQ5bD9ubWxaT3lRKmAzYkpnWkBpIlQ9bSthP11OSVNmOFt5Y09tTE1tVVZwKz1sIj9ibCoueVVLdG90aHZyQVc0PVZqfUU2QHpp''@;'; put 'put ''MyhrKS99LzgmZWBXN3JRYX0xckJfbkRuLzhHNlBHM1UsUU51YjZmYzJOSlpNIV9aIlt3Vl82KmdGSUA+JDIrTTxPdltBRDtJSlU8bithYjduZSZTTWd2WkBLI2UkVmBoPm19R09YbmB0Ly5PXVRrKzticVErNDZbMitCQjUjPjVqKl09LkkhVygkQkJVNiojOjdOWEZFL1taU2FwNyR7KkVDNyV1''@;'; put 'put ''Uih4KVI3WkRYN206ZlV8dn4wL2VxMzIuL3tqTj1paU8kVEA1IWpkQWZ+OEgiZ3tWeTssSnNKK2NiK0FRP2pWbjchcmZEJVovKD1vZFZnTDcrT25tZExyLHIre1sxeHAxdWlFUHFxfSw/aT5KImcyOVNXbkZhckw3O3s8P2ZDNVJqeX5iM0NzNiZ+MWZEbUZBemAoRWBRZ0B5TW1KOGl0XX4mSnJ9''@;'; put 'put ''O356X24wQkdfRzN7Tk16XjBPdGNDPEwxKjVeVzFnKVFhbDZ1fjprR3Jpe28pKnFETykwMjk8TThaNChddjc5QlA/dWxJXl5NPihidUlRdy56ejxVWG4+W1klP19CWnBdbmFWSmhZTSprRGtSJn4jKUR1PVJpIlNETCpKOzxoUj8pfUtINWRXYFUrfWBTYzooZXNuaEV2XiM2fXhbKCh6eG4vMHk9''@;'; put 'put ''eyN8S2xzTiZrcUs8WEJQV0A5eXlFVXdwP0UuMmAiblRCIiw7WSE9Uyl2ajUoOiJYTERJRztjUip3Z00hSnNWdUBweztVUURzO3lqSDo7c1RSS3dyM353KVl2M3ZmakF1d3NhV0VGTDBDTXokLGttS3YuUkZRb0dQL1FNKms+Pl9xP1VpdFtHc3dCYCh3ZmtnSSxMVWw4JX54OFVPd25TQz5eS0Bo''@;'; put 'put ''Vmw5QjI/ekcoVFZ0ST1lVk96MGN7RDhZUn57fiRTPT89JG5ObGd0T080NC9dOiFdN1ksM0BuO2w5ckt4WWc8flc+QEIlPUk5ZmdgNW4wWCozN1RQbChTc0RCc3FYZ3sqUmg+RW85aFZOZkFlNHUzMEYlZipkKUImJDA3WWpiNGZpS0BPZkZNXTVgeX5oWGVIK1NEPVI+UXE0c3NKW3YxSyUuJnVU''@;'; put 'put ''N1JbTnFAJGxhL0NgI1lNSDkmKV4yUWBPdU9kMWtHNXpDd2ZNb1RoN3w2Xyk2JCE/K1BHNGBxdDB2bSNrTV1iR1hdOnhLPTIxdWlQUDZGNjE7NV51TyIiX0tRLnZCfGk5PSMkKmUmcXVYYiVxYmRPamw7VXZBInAzKj1kcXQpMzJzQF5nLlc4S2dpOnQ5Z34qO2dJd0NIO3laRUV4RyM9OS9OQzhu''@;'; put 'put ''O2JBckNOY2h0bD5JW3dhajtEYmJ8SmMzUSgsdyFYbj9eYypCWzxDQkcicmZ9a14zV2Q5JkpzRVFedm1JIjpbc2l1Rk1ESGlgQkNjUn1LfkJ9ZXNfbH03OEhQPTkxYUFPJjM1ITxRW1NrfilCbH44JE5xJnQ+I0BnVy9QPG5YJlRLYDFsWTRJWXYxUHpdS2x6TnNpWyYoQTtFbV9yeiMpbWxFcmwh''@;'; put 'put ''fktJTVJrR2J3T301d0N8dkJVQ2ZNVVc5cFJQXUtiTy4qM3d0KiJpUXM2WHg2aTRyTTxIPTRSREAuJn4iM0FqP1tPeT1MQXcvU3dqJUwkPEczbVBRbT1bSWF5XmB3UWJ4Yl18NixtdUxAQT5bYnJAIjNIZ3pCUytaO1IiVHwkLGFzXigsUno3WT5neikrdnlkJk4mc3E+QExyOHpddE5TQXNgKiZA''@;'; put 'put ''cT1CUltMYDwzPHkjXns2P1dVLjMjfS9zRTowWktyL1I3PGRDYUtSQzZOOy5YbW4jREY+L2tFVGckO1o1PT5NVzF1fl1ndzF8OGFAdWFAXShQJmZ7I1UuOGApS0FGdTN0c2JYRHk0dCNTPTQkKUs5elgzOCJOZzQ0UkgzTDAwc2N0TDZCfW9wJWN4JDVrMSxkaF9AX19pNH5vZkEzKyw8SlkwUTVL''@;'; put 'put ''Lj9nQiNBd0lBZ3E9UFhYZDxUUV5jWFtMR2lwQzptSVFaV2ZsXSl+aiM3JihJKk0qX0I5ZzdrRzxFWDtTJV91Y3B+L1NnK0BhMGplZnwkMXpJRGs6ZWZvZn0sNSReZG1zOz9CL1IqLCRDfFZOMlJLKmZVZyFScChQNjtabHZ1XiNxMyNeZypwXXI+TWA/emNCem1uPDgodD01cl98Z0shfDJUdH5p''@;'; put 'put ''WXg5Omo0V0p0Tll4Z3FRP0x+QEZETDQhTlhiK3l2eS8pbT06PTk7dS5rOTlTTWhGTWFVR2owSmRVPVsxY2JmZUB2JlJKOG1aYWxTV3krdnh6O35zMilaaTJjbHU5bm9demVeUFlsZCVYcSE5dHxwekxrLiRseX4zMDglWClHT19jT1BgMSNYKGJbK1pUa10+cXIrcE1+cWlbbEU6UFBmYmxsQ3xe''@;'; put 'put ''MW5EaSlBOHBVbGF2KDQ3Mz16VlV8YzVPY2lyKlklQzM7Rzg+b3lte2pWTEQwPnIxNEMkU3t3cEEsbkk/c01OZ3JlMn5VM294WVIyTnI1WXwwOzt+USVOZFkyIzRjcWk+PC4qJl9pPjtpIkNFYDBOJDVKJiM2aiNkOGQpRz1IRV8wdn0yTHZaZiVWUDFKZkl9QFFOLitZbH0rcEVGa3VjT0hVaC98''@;'; put 'put ''IixtdEw1Vi42O3RrU2dYfnVuNGpZLmEkcihbYF1vM2VQNWpZQVglLys0SlVdUkFAW3ZJY3UwWWNWUz9LezNoOHgjTTRuNnMlQmErPThydl09aCRXeXhzJDZLOjJvbWtIKGVEWGRBNCFAZ2lsfSMhVEQpIm8wY1c+M1BgK01sPEVWd1M7SDlbY3dYb1l8eWYoIjdSTlVMOmRfTCZHVVRJWm53KWYp''@;'; put 'put ''cyZhLiwhP1BlSWx5dHwrVWZ0Zn5DYHtWPXo/JnNFSXFZS1BYTilFTDpJI2pefHlTVXR2aig7RnYoX21MR2BvSTgqWHIsWU97b0lxR11FNTo7eTRCRTB6U1hKPDBKKz0mRlFdZ3k2eENFVVJUSVBCKn49TD1UVUJAW3VPPyZbSG5PSEooUU5JYzZAXiJ4THE0PilYRkx6NTldT3ZNeGBEZSpGJGMp''@;'; put 'put ''blRyUHtxLFQ1ZGorODV2P2tRR1g7cWoifEk0PnFvWjM2KiF7WUh0QSNoJTB2YEozbU99cCljOmN4Snw5QnpzLE5mNERbQlBCLj1yWTpIbHVgb0xEc3NyL0dYYTVJV3RWXSxTQDF0PGRGPmdVXTs5X1R8bFcuYFVLKUxzRE5EcXZ6dipCYG9OSHppSjt3LndkWkNvVGoxYjgqNilXdldUOVJKKkI+''@;'; put 'put ''MkJlODwycmg0SkhPY2F8PDBNQld4aDtkdEdlal9JRDxjbElLOCx9NzZtKVsxMXc2U3NHZDolMX1pdnRsYWhXVjBbXTYreWx+TjRhayFSJG9kRj9NY2srYj9fSDpbNTZNX1k9YFlrOHt1M0F0ajYzO2JSX2lOJDZPYnN4ZVR5cVkqWkMseUJwKHZ4PUd3QmhmZV49JVFiQFBVdU1Qb2l7UUtoVzg1''@;'; put 'put ''eUlwUC8oMVMoT1MmWFd3SDY3QyYsaFYqKzUyXUlUMlF7KHI5eVNQWHR0ITdGN3I3QU8uUVhlXW4rbUpxfFYpTU54RW40VzFrUXUyRG1xaSx0JDNLKG07am4pTWlrTnBzX3Y4YSZzIit5elkpcllRJkFTIkxSRERPLDxIY0JTImJyI2NfKnZtfGMhRmh8NiJVJEcvUGp8ckIoUS51cjlXTS8veFss''@;'; put 'put ''NnZscmV+aDxlcyNCJnY9PSsvY086KSoyPV5afTNMJUImKmUwPm1BI1E/OmBLb045c0o3dVFRVWQoTnw5TFNWRnw4bHRCZ3pIeiF4N3kubFlDNXhqR2xhVUFfalNvNEQpRThJfjQpMTB3d0w2SS9bVHcucWxOLE01RXosZTRHSmZzaD0xWzMlZm89cFVCQF50dHRaVF85NHM2UG9dOmEoNUROTk9j''@;'; put 'put ''Rz4pfTtie2AxeFBEd007bCxFeVh1T0VCKmVNRU4wMyFkdUpaSXVQdE4oYkVeQ1QmR15ZVSh1fCo5KzEmYjpuNWQsJFkmPm50X0NbQChePXJ+aXgwRGwlS0Z1c19pLitGIzJrPyJObnRuUTlQWD9PNlkrVGlDfmVPe2t5ejNWQUQ/blglOjxsNmx3MnZIJTVHY3QuTz5SVXA3bilHQFlreGswYV5I''@;'; put 'put ''LGltI087aDYkKG09KGNkLHQhM2h4Nnwpek44JTl9SnxtT3Q8bkthU1BtWGpEL0pDMllqVCpCTDZQRGIhQzJTL3c8JEJWczdBJkFGNFY6Y1FaQ0B0biFPPHQrOig6LnpMLCVRczBpY0ZCNV9HJHp2MCZFNmdHeUFtXX4pTz4vcSlLY0ohI2xHZ3FnakRrQEg0TCY+Pz9HTlZseHpSXik3bHQiblEs''@;'; put 'put ''IThERElpa0AzNnxMTGIjbihzS0hke35wIyk4UW1HNUM3T091WXVBVzt5WEl2R2tPMHY9cmxWbTh+cVJaSFl5K0kxIUMzbj0wKTcydlJHd0pecS52RjV6RHBOW3g0MF59MHdrbXExXXl2Pjk9cyliQTAjLlphfVd3Mk9gP05QMlhtc3VqNFFjcFM6Rml5NDxLP3R4KTxVWkF6KkZVK1Z+UmNZLm1Q''@;'; put 'put ''e1FkeGpxQ3U9ay5VJkgqWXFHWTpDKzdNJi90a1pCRnt9K09iTWsiX0ZfMCVWYEZzOlc3QUdwYzxDdXp9ZTVqcjVVK1g7Myx1WHFgNzlZNkNXK215Ky9QKUhYRD9IWzdWIkdYTmtaPntfKzJzUio5ZEdWJUtkTipDSWt3LDJ+IyFKbnFSJFhzIiE+ejgxSkxPOjhSVH19L1d1VkJrUSEoPG1KVipY''@;'; put 'put ''UXIla3xrSGYwWj9RZTRQSDJ4ciYoeWNCVkYlJEJXbl8sKzd+cElufGNWd2B6Oiw7SU8xZGRSdStgMm5fP2xRaSx4cVtCJGxPelhBT2sjeyt4OUc6UWtRXzBEcUR3LnUreE9aNFM/I1AhVzxSbzhgXXVlWX4vOyxFUSYlVXh0bWZyTW8/bERkVz51eDc+TUpzJDheSHo3NjdpRFVUMClFZzp1UWdG''@;'; put 'put ''bCRrNm1ZQlBEJEx2X2t1Z1RNe0R0K0xCeklrRTcyIXlibHhffSVfL2wjUS90SFVgPzImWEFZRiVOVE5DciI+ImppMThwUERQT35LK0ZrLndjbXh2djNWW0Qhem51NXFFNnE+Uz58KnhFN0xqUVlsa0B8IiFZUGBvJWhuJCtqZzZNe0ZvTjgzZSkoOWguUl9ITWUrbUhJRDNxTWMzTHVuYEZYIXFG''@;'; put 'put ''Tz8lMjx2dFBOSHAhb2lQTHovcE9QKlpFUnZxczppWERfVWhRVkJqV3pVfTBkT21PTWNZTHdyPjUpcWJTIyk7O0VNJVFSXiw/Kyp7dT96LktLR3hwOzVuflA/VWA6YX51K3koI0A0WUlfL2pYbWMlem9GQHFpang9NmtmRU1FZDw8Tkh7PzFtJGtXamRnZFksYGQ/dF1zJjsyI1F6OThtRWBPVlMr''@;'; put 'put ''UFByTzUsbU9zfmIwNFtrTUxvSl5OL0EmTkFvX2pbakV7TThra1BqQHYveD5NfXpGKXFZXTQlUWI7UHo9TW5AbzRRMDh1bTlqay87MWolUnNPLGhaMnJgXnw3JV09ZSZLMWx6eiI3PGFpeiZ2OnxLWStqfGpoTWt3VmIjOjtqTk86YVJ1K3k/VyY8ZCNyVSpgcUpTL3lMaD1Hd1YxTGldMHVNPiE8''@;'; put 'put ''XiFZXnJAPz55c1tnMF9lMlJhQkJBb0cmOWU8aSU6SS5VWk1xc11iLHdjWD5bQ3BoVyxZVVV7W2piWiVbeDhVL0RmfGhhbk9jQ3wmSTJafShdNmkkVVpna0trOUUre0M1ekhJfnFgRWRiPX1MSV0+TTh8bnVIfEBOeD8zb1ZbYTdnMW9NKm4xXSo2T2hAMV8yVUlQcWp6cFNyWi5NXiI4MT13NHVh''@;'; put 'put ''TihPalhvQW1CfFtETkBfOFlvWX1vLj82OypDM2xMRXF7ez9lWVBsNzowWXhHPzowdmddd2pzZlpmZE9aOmltQnArUFlEREl+RlJ7LGlAV0tvZyNhc2NAalpTa296OyQyIXVzWTI2R1hqcj8han5Yd1FfTUwrQ2t+X0l2ST5QbC5lRztsezR2ZkkhezwwVS5RQFEvU19hM1pqP1A+XVhPPTtdT3dj''@;'; put 'put ''Km5KN30xTHJ0ayNLbE93OF1ra10/NnUuKzhKbCg+Om1SQyhDNEVPSnQjNHVMRExZYWc5Rj5XfExnZE4jZCFzUGB6N2VHI1RNbyNxT1E8PTB+Nyp5ZT9BVHtvJU89X0QxfVR8ciJpLDV5YT1kbEI/Jntpd0psJnosPmd7dUg+S0N7USNqbEQ0UFM5OzBWKUNaKj8+PnhEN0Q4RWElTipCWmVObEJS''@;'; put 'put ''dE5EYzFxK2tFfVR2VF0iSU90fkkqVj5GVHMhIjFVQHJnVEdzJjNuOF11dWt+YkMpdCZaYEg2ZTlUWTlXbGhjT3RTQ2Uvdkc3cTtWP25wJX5fZSptY1J6QWZmWishZWtnUEsyQSRPSjV1VTBeOXM3UVkrUTM9WG51X3osSEcjPjNJI3Qsd0c6OlUmQVAvUiElV31lUHJSSmBSTlJ4UTcxfE9gQUMp''@;'; put 'put ''X3hNe1R2YzxhejcrJiRqc0lMcUxlSlhhJUI1dCFhKm0uVyV5UHwhdEtfUHsyKkAoWD5gQ2NoUmFPU0A6VnE3TXZoM3d7TVN2Sl9UWWI+JTx2ZmdwbmhgT29yeXZlZXcwKmdFUnZfVSJNZlROa04iNls+TDJVQDdLIXd1RjI2VVpBTXt4dkhPVzN1QWpKXzQ9bmhCdm5WNHtwTyg1PVpGKiFbOWpG''@;'; put 'put ''W3VpamssYWJMdlheRCpaa1Z9TGN3V0s1X0UsMmZ8QjBmPUhWI3c7d1J0SjppZ3dXPihmSVE0VCImQkpTQzQuSyw2a0F6aGJJMmdsaVRLVW9PVz1WWH1SR19DbDA2Ym9KKjk+LCRPNU9yMTRgcThNV1c5NEVDaCtVX0JxKE1fbH1BNGlNa3AmWXQ4LC90VWojIzxxTTl5fSF4W1shUDguOEZiPmZv''@;'; put 'put ''WkJSNnxyT3dzYDouemd6S3hjOjJyIkszalo/VClYXnI8Olo9eDdBOGAkcltUa2E+MTF5MWVLJWBiMzJMQU1sYXVjail3UGpSQFZzZHEyQkFDUUROZVhNT1R6PW84bz8mTXJed2FoYmU/SlYjQn12Kk1AWTUsSn1MPHhNSCsvT2MyKSJyZDQwYj8rUGI0elFoPmFwJiNCZHhTWVRaZFdWbHp9KTZY''@;'; put 'put ''Mjw3bz0kJWwvLEZ8O3J2OGA5dnhXIzVEZF1+PjgsdyUhKEhWSnZoQmYuaWAzZilkRkN7N1hJbn0mKGlVM30rZ0orMlQ2TXheOzl4eSlBV3VOVGVQQ0thZiY1W1dbYnEvKlIicFpDTnkxSWheNjhINiZnT2lPLklMejZCS1ZZNzorbCVlPzFLSXBPRytuT2ZOKndnUEtHMnRsNFIlUnRPcD18Qm5O''@;'; put 'put ''I31KdGB5aWc6b353P3xlM0csKko3SGlHTFhdcXFmLlJQdCtnPno4Um41Uzh6SzBuQEtQaFpGOVlvJlMqSSxLVFU5Rzg4RmFGMkQ+KSl0c180d1lFNXIkTChXZjJvTiYpYmhvcEpGRWB4NHB5LnE7NlkyeDVgcXhYSD98InwrLkJDQXN+WVErVk1iRnA/aCR9V3cxJGNKO0lHSjJfIz9Jbjp9Kjht''@;'; put 'put ''Snl1dklhcUFUQCo6MG91b2xPXz1yaXlEJX47fFFhPjpFZ20+WFhZOnFiNktvU2dJP3RDUz48RjlaWUwlZW5WV0ApNXtDR05SNDt9OEh8UVlOVlNtKS8iKGJTdEw6TSo9SCEmbWhSISV3e1RATUtOSip4VE5QXVVYT3w0QnN9IUUoRj0reUwiXUFFUV9odD1PcSZtIV0yRipaeEQiIW4/ITRmRS5J''@;'; put 'put ''fXw7NE5DXWxRaXVTZWZxcjgva04oOmE+ckVtLzgpW2U2QDc5N0hqeWRCb0N7Likic1MyVG9SLEczOVJXbDB0Jj1bKDZIaDhaRjp4aU5fY0I6cjo6TTxtR3BuZCNid0hSIzo5NkhoN3lqTDJVREcsYnB2UXZhdTomWXEjXSZwLmpaKHVvO3AqRWFwc1BaczN1NXovcXwkYEdfYGQmTDBeLz44a2lH''@;'; put 'put ''SkRsXXpKJGQqRCRVd1RmRFYven1rQE1zLmFuej0iK1VWPldLJko6SGNbSVNVNVI7X1ZHPm86ZTBuaDQ+ZXhyfEkuSlJvTk59Pkx8YkIjLE5KK0ZKT0c/OXkkOXw4N0BxZy9gUlZeSU9yUWxXPjpHajQyNUY4UUZUSE9VNG90fn5jMjRKTCRKPmNGTWh5I2p6b1shU1B7P2NMNGR6anwvWTRmUGFq''@;'; put 'put ''Z1FqfCh2O21JdyE9MFdNWT5KLzR+Vk4vXnBfTUNkY29ddGM/UihnUmtJOldJRT15ejZWZWw/ZSZTaTJeX20jUThkZmxdaXo5OFpKeDo/JS9ZUlk+ME9KJSZBRHlFSmV+K1ZPJmZVa0FbYD5HXXE7UEJGZkAwN0cocmJCaVRpIU1HQU4mJDRvSFZOTHl6cjAuM01iQnhweipNaHpQO2phYksjflFB''@;'; put 'put ''QDF1TCZrQCJhSCpkSiFUMyZlKl9jOkJESHBkJjFXekF3fExmbShLZykrLmhnVltTK35yKUNROnRFJFswQ0FXL2xyYDZtWm1OZ0F9dSFkeWV+U0t7azxNa0BWOW9ZX0A8JHIpXVo5eSJPRUs7QUdIeSsuT0lFPyYwKEdnLk13PU5OWC9yLFV3V3h+IzIyMmk2WTdxVlFZUnh2ZWczKVZ0bHlaP2xL''@;'; put 'put ''Nn1tRld8bnh9Q1NLVDJFfEllaTU0a2FAbWxnelV3bVhiRzldX3prbDFhVDpGblt2MDZXPjdSNk8iNz1jPlQ8L3NWb3VMeXg5Ll5KKmdWdiVudHRQLHZOYFl3a0padj4yRk1yfE93Y0lzTG9ELjJvcUxpRVZhRTFGLmgqSDtNdF97YyR4VlA1N24oLylCZUEzd2ZCaVtiVncvU0MvezhvMnhWLChb''@;'; put 'put ''bGlmIitKISs6dlFJPjI3SVlDKm01RXV5Xz90Im92en5MXjMiYTNvPTFoJm1KdnluVWd6YVk6JDhZK3VwZk43S01EW0ttLFs2NTpmTGVTUkVuRHpPZ1BIPDxHRX0hRyhdbWo/bkt9OUFCMHtyRzhPRClxaCMqdHMyamRSOEpNOygjPXY5VndFZDZTXlZCdW1LSDBUeUdMUDZVUzduSWNPYllDMnlU''@;'; put 'put ''YF8sZEpVeDcwSUQ3d19NeTFmSmVOSmhCfiZZV1suQDFFMF9KPiY5KCRUcUNpXTxoditXT1V2JSo3ZDY7NmhZe3tHRlgzY2wiV1RuTnhVWEtHb2Z7K3dwNzw2LiliUVJofklpcGxnUVY7cFQ7Zjh4KS8pRVJDfVE6TWJFZH03aXZBODAmNnshRzMkO11ve1Y3X2s7LFBvQiY8M1YpaC8qU1g2R35l''@;'; put 'put ''ZyR6QVYvWE59bShLZD56JitSOztzfEZxcChOcHtIYyRZcHFKWUdsWihxX2lkR3EsWUE4S3U2UTBKYT97KzlIWzZ3cVpyVVozcEA7Y3NwbHVgaVEqZ35UNyYoNV95Nzl2cURYZD1eIztdLzhWLz4sVkI1VF5jVldPQmxDbC9jZmI6dld8dFZERjlQY1JaQF8jekRNTSpLTTkjNkZdUFNvVDJSfC82''@;'; put 'put ''dmo5cmt3YFQhMDo0ZGYwUFo/aCQjSHhOI2dhRm1II2IxODp5cWdJbitGaC9uQSpoUltdJHJ1RkAsN0wuSzxpPldrLl9tdWY6WE18MDVxUCM2eXNNS014azVAdDo8Kk4uUztZLEVefF1QX3hsRUVeTFdoYlhnR0pMTVdIYHJ5OkxScD01UD53Ry4yeDd9T0BmKlZtZFVwdEhIMXg3fU9RI1U1R2FN''@;'; put 'put ''WXdiaD5ediJDSCElK3Y0dkQmV0tad0JeXTgzIit7SENuODYvPGtRYVBgbD0wOishOH4vKFk3Um5SVW92M1tadFNBcipfXWNjWStNd2ZGSzBxTEN7UWV7SCgjOjl4PmtTdkJoc1ltI1tWMEBCTVhYfFhWWDVRd1c6Q2dBaUBOUW5YMmRMbkhqOTRtQFY0XXxoV3RocD88VnRkQSRwcHFDXz5UWEBA''@;'; put 'put ''UzVsSG98SG4/OmMzRGBFcURbMC5SUnZUNT9yYmBGYXN5VDRgPHVySm4vYnYlP0c+UGxTVGVkSW5AREdmKkplRG1aYylCejRSZShzeypRJVpqS2tgSC9ycyxge1ImfFcrQFZ0YztlR3JzOml6PiZCJkI+PzpMayoqPyxSUnFgZnhJdzVJW0VDVmMlaC5RYmUmW3pHM3NAZ18oZTglb3suS2UoIyw+''@;'; put 'put ''clNGKXFFdjskRng8NWw4JGZzWXh1ajttUGZvN2VnQFY+UV1dSkg/Vls7ZSw1NHcvW1pzXk5ZYDtiMjZiQDhfKXpxTntuIjkjc3B5NitES3J5L3F2dV52dStEM2B1XnYiQ2ZHfHFQQGpzYStDYjheKEs6LzVlWD9PRnEvVEtlNUdnaz49eEElK1IlYEh4cmdCQi4lY0JOdFtRVUVpLGtFXnk2Vn5p''@;'; put 'put ''OFlGKiF1blF3KWxnX18hOV8hP0RBaVBHRmU+dVI3TDNRbHJhWUpqJjpuKE5AIjJRbi9idktVX2BfVyFNfWdaJjVMfkx1aXJfQEU6RiJGO1YjKFcjbTMvOEloel9aRmZ0fDM5em14Ymp0XyYpRW1qdm9xSVhkUzgpXilOL3ZFXnkvST85bSgiSEEpdFA5eEcucTE9ZG04QFBHbCZob1l1Q0VIbStC''@;'; put 'put ''IVo2KFMxKTt3ZT56SUE4Lkc5cmV2bypxa0o4eElAcXByTik5cGtEMjNIcis+XmUwNjF6SnwrY1VUMltdeG45eH02TGRmaC8wVzJjb2hpNHFTOjVIb3doUnoiZH1bSktnJihfN10zWklgMShKR1khNFovQ0pZYz5UVHZMd0huXyojUkQ2QFFdJVUvSCU/Ry9JSUt4V2prYnJAS2V2P0FQT2VXfkQm''@;'; put 'put ''Pi4/XzdUPCk7Jk0pYTJsSEZzMlMyKk1DQWVATFpnIkVuOUJWRVgvV2Z2VUd5VGIyfGt4Kyk3SmBCOER4N05wclB6RiZuKmUsTW9JVnRxTXhIPU1vQ1hUUiszYW52Pmo5TCtCeVRfXTouN009YTEldXVyYF4hJW9LSiZMciVrJWtYJFJXOUJOVjYoPGRUYmlRMy9kYVgmLFpVY2E1fnJ0XVJlI3Ft''@;'; put 'put ''UTMvPmJVPn1mPThuT31HOHl0JiNZSHB3KDt3V19mZGxRVHxBXVl5I11FQ14zVE1dMjJFcWZvMChkb2xEVSFxX1gmSk1yaHJnd2Q9UTg8OHJkJT5xdDZuJEJOcmhyQVQ3I3A3cEdjLzU7YzkmWjNVMik6RFEmdl99ZHhNOXI8bFZyOS5SOzVJQHFtYFNFOXBOdy5iL2R5WnFhVkZMOCRlXntGX297''@;'; put 'put ''bnFiY347QigpaXhTUjxHVys0Lz9kTUI4Uiptb1pgYFBpcCsxOktObTxgZGNme0h0WDZfPytdNWVMbnhCfTd5LmJoKFIvPz96aDhhbUdgVj9meTNeRXk2fXQvKThCVCNRZmJCODlFbS44JmJ0I11oYnhfPFhDcVRAQSY5RSl1QWdFfHBSb2VNM2o4ZmRUWXp9MVAwYDJZc0VEYFlLSUIzJUBeNmpM''@;'; put 'put ''aGx3d1koRykmfU1DaDtPYjhAW3dxOWBPZ04uaEQ1c1t0Lyh0SzB6TmJCRGFQKV8kYV5kXVpOPzIjYzFmd245bkdfM0JTNUNDbFphTj9QTzxFTis6MEhOaVd+UGI1SWJAZldXKFBtOC5Pbjk+YENuJFFYPFdnWChgW3AqNWR4ZyZEdjkmSG40WnxUWC5udkB9L3RsMV9vWEVufn1+ZGZDeFFtVE1+''@;'; put 'put ''Rzo5SF9odjFgV0BfTmJTMVosdSZBZT9jZU5hbmMrb3B9P2pWcUxnRUZyT05peGJiOXxsZkhiMXEvay8wLHF+V2xKPmxuOD1vYWQ+Wj5lSDIsdzhkXm11dT56ST4mZjZdPkUxXyRvSHEpZCJwIkxyRF0jdTA5elJrUHNOakJ3P1ghOEI6e2VaVGFYZ0I+U2RMLiQrTT4wRUFrQDwwLi8kfDgraXM9''@;'; put 'put ''KzRLNDxOcnZjSXxDLmRMIys9QmxPMjVNN202QX05NUlmaHdSYldCMTdtUj5ga2FlWV4vMkk2c1FqYUs9KzI0OGZPcngqSkVaPEtCbU8jbn4mIlczKyRIUFpteCYyZHFmP3hUOHA4QlhecENQbi9kKi9rM30+QmtMJlV6R3pfLFNENVNJe1picF5HdzpLNjhDPnNDYyV2IV4uSFU2TVV2OGM3MUB6''@;'; put 'put ''ZiU+Y1lCOCZqTyJPRVVMenAwKi8jOEtkciVLYE5jSz4vcGVJdm4+dXM2SD9jKmgjcDkpISwqWzxteWBjZiFEUSNTX1duYHlkZ01FTko+WVZgKiVRRzA9aEtpP11XW2xRR1h3Qz05SUZCQDshNEtiR1QoamhYWyR2NFk4IXBMIyxvKWwmOHcuTSxQLy9VKSkqdTlCLk93JXJUZT0xTGxMdUYyJHFV''@;'; put 'put ''Qk5NMXE6SFhsJEB0NF48SkVncWlpLDtYUXosa1o1X2R1VXxWQkAvJFpgKGZlO0Q4dTNPSXYlTGEicHhzX2tANTN9RSRbZ1FXfFQ/djZ0UUIufGxyWz49eVBhS3NIVHh7Ono9RCZdJkdmbTZ0RjBEciwwOi5ePCQuRSUxIWFuWkFFRXd+QUN8Ojo7MT1mKHI1Uz54ZiZwUGBFcFAuKWowZT9QWlc6''@;'; put 'put ''IXNFUz8/IlRBTWBUekJMfHJGTkd1RkNZMThjPVYuKVY8OlUyWU03S1t0L180eUtXMUZ+O2sxSSgxV0kzMk1nYHhgZ0lfaG9INS9JdzxKLyZ8RkIrYWEmYDUxZkF+dk5Od0xBbCxIejFKPmRePlk2VzE3ZWVpR2tTbWFkL2ZHc0okSHs9JkI4VnxNNTRMd1p4SUtWUnUvZ0YxbzphXnZrbj91Pytf''@;'; put 'put ''bEcrVW9zQW1xKDBjP0Q/OXA6MVtzVHB0JSxRcFQ3JTl5SV96MkJuTk01Y0ZORWA/aUdufVlpdD08PCNVSi5XS089cTo7V3AkTz1odTp3LjVXLHJqK1oiPClPeF5NKEQ6Zy48KDglOTFzPlJkLnF3XSZLQGA4L0Q8TysmbUAlVWtwd0hpc3RlJDA8WUBTQ2NnVmhMK2VseiJ7UCRRS217VGRMaWs2''@;'; put 'put ''QGhEN256Zi5KbiFAMUxiP0Q+a08qQixYST53VUNfTTN8O0gpKnFQPCxlbX1oMypWJClaKyteYChmUWRdRiY0Tjp7JHs/QihOIUUrVmlac29XY3VzNChEJngqVlEyLilGTilFbUQ3eD5PWSs7XTxMdVp8LkZjPXxrKjVZakZ8RVUpeHt5UWZ0XzAzdiwibntWOy8qRkZWVSkqQ1F6MkBlQyohZ3Eu''@;'; put 'put ''KG5jMSgkbCNOa0AuMyhCJkYofSRfTHxOa05ueVQ3Z2lzUU9DcWhKX1RAT317OUxFbmQhOzZzR1Z4SyNNcltreyVbX2pGZXNlJDRJQjhbKCUsfnFlWiRwRkFeYjVMMGV+N1VyK3UsSW8manU5NldgSWVISTxgPmdqa1JFJlZyPSwyOCE6WWEwSytodVomMFBpcHhFUH49LF5sc258NS9nR11Ma05f''@;'; put 'put ''biEpVmRtMGBIKkFuUCYlckJWZyYqKyppSihKTWs+SCNeUzQ1NyssYyxTRyM2NGVzOX1kVG4uND9bV2cmRkA+JTpoZn5pRzcsIzQ0YUdIPWooX3p0PDxQQ1dxRXd6fTJtYGd9K0diTWhmYjlCIU8xPzhCcyZIQihINWM+dTYkezJ4eSJrbk5wLmdWKXlrUFcrRSVjYHIvSHE8enBmfDYzVCQoLmRv''@;'; put 'put ''az5gQkZkJlUvRD4pJDhtYUldfCgoYjEjcDlGSDYyNUE9byZ2aE53bnc7PUQoYX4wMlQ0dTZ1QGpPQFZjR01BPWppYDR1b0dTSUhAIXRNPmJfTSttXlk+Kl5JU1heRXY3OSFMUDVyME8ybURVZ1pgVC9wZnIxVih9dFlxT0RZandxfHE5R3NyODFSaVRTdWhASz57R0VhXl9tMDN9OHJKQzRQOnM4''@;'; put 'put ''W0NqJUMma3BiOFJeaDFxdGIwWXdZTyg6QEJ4fFcrQTJtMVZyWT1nLkYlRUpRJk1UXVsoUHRXTDssYy9kazVYNXsmdlBUZUUlWkdjfS9MQlZ1JklvLHtXZDEkSEt2fUQrUEFscURVbjVORFAqRDxXJilKQ1pyVWQ8IlhqaCteZCg2e1cvRlZZPW0kPj5ATFZoIkZeZEQ+T1RvcXNbXSVhUyNDMiVS''@;'; put 'put ''eUorXzsrfThpNjBLbnw7MWZgY21bKzgyVGg6K0hlVFpteTxHbltGXVouUjEpfUJOJlI6QXFiKHgjTEVCISpEbHxGRzRROm4oTkd9eXZmfGFoVDZrYXwkb2g1WGhLRSU7UWV8UDw6ZTJpfXoleWt1YzhCJmJFVkNQfGAoYEExPjx7MVRPckN2djlAckpBPXsibH42a10mdFNoKzxUMEx4RGg2X3NH''@;'; put 'put ''dFZLPTU1TD9rMlNuX1kkJGlOcHI7PnZUYHcyWkhxS252cDRdKHkoQnEqWSZmNDgsR3QxaktnQH1LPHl9YjpLL2pKR0xKWVM6XUtdOCxJTyYyR2FHXl4yNyZmQH1ePmJNZihHfmJxfnM7ZW9iKVIkVmI0fSNyWzk2VSghc3x8ckpOfF8+L1ZXaUVSY3FsNEBzNWBxP3JFUGhBazEhMyZxX0NWIjZd''@;'; put 'put ''I2RJZ3hHRCFWNHovSigsKUZebDYvdHVdfTNgQiEofnx9YXxFYyx+JFQuaSZfX0Z+S2MhL0NjfFVbNio2OWVWZiRic05SN1RLOnJjYSN9fGJdI2klUURKMFJTflF7QUcyUU0hT0RocWVwLzk5KTxrfCNsW2BpR2gqYWsucnxBYEZrXnN3c0poJj5oV0IkWDQ+UUxbTUJDSCs+IkJibn4+dTclc1Ra''@;'; put 'put ''SVZKY3MpWDhITDpvK29TNCIvIkQzPjlNeWszNU5fJTZURWh+SXtjUj07WTI5MmpoMnY/QEd+TXs+ND07ZD8yXnkrYFtNOz4ufXJ+ZjZgNExfS2gjOzx1JlM8P1gpLipde1YkPDgkaVdWNigwSlA7W3A2UiJ2cX44fXppL3RhfSZ7UV1lYXkxKDB4bkk4YEY6KnVIV0xLZEd9X0xkNGhCO0JheUh+''@;'; put 'put ''YFdNPFE8KClsMWgiTH5mNn01SFJMKnNkYkE5Y3MucH1zUlpoMn55PlFsW1B9Y1J6OUUoUT1WfF1bbTs/O1EyOTJuaCxzWUZpfT5bIXBtVzV9ZXwjPilze2tnTmdue10qQGFuczE0MVBWeVN8I1ZbKiJfc3V+YHF8I0RbYiRVVyJ9UllyVzplVGFDSDFZXixBeDBofEVQVFZXVnwjSTY+dH4jZl1l''@;'; put 'put ''TEwhSiJmX3plJUQ1Kz5zbz90RSRfemRVTlhgZUB9Ryg4KX4kZFQjWzw/KiwoUk92aS96aUcwQDFTZFI3PyFMdlZIKFI3WWQvP2ZsUkUwPlVYbSpIdjgiI0xpdGpESiNbaDQlc1kkKFJxanx8RT95a1I9fSswb19IanB1PFI1Plt2dDc2cS9dK29JJnRhbFExRFlncjFoIUg+LjdlK1thITlvLmo7''@;'; put 'put ''byNjdDxBYlVFYVI4Z2tHai8jN29JbVhhbFExeT0xOipUXzsjO2F5L1g3bntJQ1ZYbjxVeUdCeGIjfnQuSWBVSzMhVn5ocTI5Q1Bpd0N+bmREblciRHRgNkc5dkBJK102R3VzNTlFSHNKZSFbajlwTEhlUV9EaS95fFpEc18+PGI2bCpffDZnfCNRaSFnPjBzL3IpcH5CPGYlJDhdNHY4a0ZuOU5J''@;'; put 'put ''OS9Ha1ExK3JJMExnUTFTSD1gOmh+QlJ7LjRZRVBpWio4fSYhIzV+Q2ZmSEV6V0M3YSVZZz9Vc3hwVWhGLkxXUmVGRyxGTVEvfUNIeXQ/NkdSZlUzNVJaWkI5MWEsRD1vV09EblA4MUxJQDlHaltGTnMuQnJXeD9UOXVwVWNrWStwMWhBJihZWyg5YE5NJmVRP3dzR1hETSZlUWcsa0U9KFFGOWdN''@;'; put 'put ''ZSklWmw6YEt7ZiVQUHZSWURTcTlnJCJAKD0oQEpYQmkzdlUiJnFfZiVIUGpYLnQyLEg6VFFpM2M5VjNVcTlnWnpTJHBwSV03WHt0cCUkTWZRWSxZN2BQSmJkWFsyXTdnPjFmM2M4ajFbfjlYLylTP2Jle01tLGxuVn5hK2RGWm5iY2tUZz5mUTEoU3Y3RlphRGVRJERWLChUUFlTWkg1WEp3TWFh''@;'; put 'put ''cWZ3RCZVZ1ZSYylzMUIuVWdWSVgoVFs4YjQ7Oy5qZ1pMeUZoUTElIyFbfjk4W1tSNVVmUGNNNiRrXTg4VmgkNGxwO1p6MSgzOTUiQ05Rd3dYSE0sKVtKMHF0VkVbaCpCbXBTVUEheERibWE0YDgyLFRhPG9zSSFWeWo/b2R3ZU1PRXZHIy5kWTJGfno9TFFKZVFJLChbWlFmUXlEfDBaWXBhW3Rv''@;'; put 'put ''VXspYnYxYUJkb1UhTWZRRSwma3lWUX1sVj99PFlCfXA0JVo2NVZbSzRHdzlqP306OUhMKVZrTXJjalFAP1tMMVYjTFpYfWJFI1VEJlJ3U15uNDtHbSR6VCpwdyMvUlQwMT9HUSNqR3dlSGRTP2xXOVc6VWwre0tiYzhmaDtnZzZdZkdjTSFWWDJuM2gpRHR7MDopWD94REN0fWoxSGdsJiMrOl9v''@;'; put 'put ''YlBMejZTSCVEZEpnVEhGO11aYSMuZU5bWTtsbkBoQ21CWGpQTUFgeUckanUvYmw5bVpTIVBQSHVDK0pmQHd7V2FyKkc0WT9IRVBbKGp0SzY+Ukhpe307WWl6VSQrbkdTPGlXazhoREh7NE1PSz99JDo0T0d5XVlZbylUUGhZfi4qUUd0N29nYj5YYkUuU2QlMjZsWEMxVltnMjIrNkJRMSR1UDdf''@;'; put 'put ''MmtsSkxmQlU4eloxaDdLUi8xTHI/Nlsme1QxUURWZmtZa1Y3SCxFdDxXMDZaXnlxdUpPOXl3XjpCJSVsTlF2SSlocTVfeXV6WjNCOn1jfXs5WEhUeygpM0VoRU4/Uzl1dWJZSEhhYXJQbUZNNnBaV1l4RCsvPGZWVnkjQ1cvTl09OnA5Z0xkeTR0T2FsdE8xa3RuSGwycEAuUVBrSCEpfjZiOilj''@;'; put 'put ''QyZBZXRJLHEpJTQmR0g4ZjtDJWZBZ11gYzEiQzpGJj0jRDg7XWgwNjdjXkt3RngiITVAdSRERVIkYFRGXThWaW8pWUZTPnxMez1mN1lJLDNCezB6UVJteGJVLjArZyg3Nkh6cUF2MWRLeFZ7NnB4ciYjP10vYitgMVs7PixwJlssMyp4Q18sYT5NN0dFc1JPYHxZS2w6MjF5SHxxMk4wXS8sUWxI''@;'; put 'put ''XzJjQD0ofEsyRD5OcmhpKXVLZ35CRGBSXlsvVnRreylYLzJoVEE4b29GaEBGZnB3MyhCNzZPbnFRYjpAaF1lJDdDUG03NlFfXyV1RXF8ImdQe1EsYFs/XVJAZ1toIkdYWm94K1Y5eTc3WyhHb04wVHd4UykkRWVBPEduUF9rTClle2hUKXhxfk9wd2F1MX0yYy5lNz5VN05WYzE6N2lQTURiYVNT''@;'; put 'put ''WVZ9cV5zaGpicVVXOmFKYCFZczomJnFwNCUiUVp7bCxbO2NOfGg1cVlnMWowNlN9W3sxJGVKImR8PncxKnFRLHI7SHFETTNUJTxZMlFsKldYMmwodz1HOzVmOVM5fUlpe3tRNnlXZDpSfDYsRHFCYVFUL3NDWEtpd1Q8RDJaSnFzaGxnSzhJYFRwQnFsYnI+fGEsamo+bVZuVkQ+JTQiXioueW5T''@;'; put 'put ''NTlPbUNXMjhyS1AvX0dzSk8qI1FfK05NX3lZcmYpanB5eFNYSXcrLCNRX3ZJP29ufF9hXi9WdG97cSkyVFQyfmRHN0NMIkUoJUIxP11NcCtgRihuUn09Wl19RzdSTCYkSnRTS0JhfEJgWmdZd0E4QmouO0xZPWc6KHpLKEU3W1RLQHszJFh7MzpqaWIxR3Z6c3BtZjNrTkomTXJMa0VqeXZsc3lh''@;'; put 'put ''RWAuMjhTMDZnZ09ANyhkS2hkYEE+cnM8Y0l+QG45Z2dpX2pbZT06cCUkUUVrITtWamJ3O283Ozg/ZWQwd2xZN29ePVNVJU9yWmFPeHhzTFtPWk5fbCw0ODs4eUYwOmg+JSZNYip7dWJMPmBFQWUqeyssciZXIyVdYCNScXhgX3lnXnReQmlhbTw6bCN+ZHd4aXBTaERHODojRjttKGEpNCFELHFF''@;'; put 'put ''ZFN5VHpwfGVgPmVoPGU3cyNibjUscHtXfD5ZKj80OU4+RncjbW5IfUdAK0orbSFBaiFMQjdhNmRxNCVNYkZ1SUxBVkZlLDdVaV9fd3ZHXz5VJWVDaU1AX3IlQ1VJdUlsdXJvZElwekxibTVEVyUzR0l+YjVVN2Y9QDp7NHkuOEVsTDs6YlFuK19wUW8jekZ4dkhiRSZmZjA2eEFbZUA7cSgsY1ks''@;'; put 'put ''Si4jVXAjKHg3Q1omP0lXS1N9dUs6SWFkcWYxJF9LeSxrd1l7aGU7Mkh7Vy4mOGEoRDtoeVY+SDIiXig4fUdFR1VxMTZ3YXlYemg/Q1NlYEFwKXg9YlVHPmg4LzgsTEUvZjxCPl85LEx9TnN3P3F4TVB5V2FHQGlUMzllN2I1LitZJm0mQnw2OTJlYCUuVUV1QksqSF8maE18azZRRHt8dEdudCYi''@;'; put 'put ''ZDIqQih7WldiMCxSOzJQK2BmWzVNOnAyKiozV3VRXVBLMDYwR0pxZ2NVVD4oMzxuOU94WSlvbktxOVo+Znc7MCp+ZHxNRnFTOTBgNHVHZXg/UWY2JEp4Z3IhfEdrcGhHOVYjalJGNE9iKztMeCFYZ3JCVCFHQ0VaSlIwUUklcVlqfS9LZV9AXzc+N09rZD5td2hwSHlicUsyRWlrWUt3fGdmTkVy''@;'; put 'put ''UURVZXhbfEs7Y2Fobjt6PHo5SjdocFNoIUYvUG5zJGMhPU1YZ14kNm5ScjdxfD9lTjh3bFgwSn1oc20uOXFgbW4yNmh4Wy9lRz4hPWJecXx8RzdaaCYxY3lhfVd+cW1mbjhFK2w3L29YbmoveyNwTiVFeDVWPm0+VmdpVEt5KXVZQi9OMEBqR29aM1VSN0MzU3FzWy43WFpQe0ZCNVFNdzklK2NG''@;'; put 'put ''fiE9VDt4R29wZ2NDWD9xRllISEVEPzd0anw4fF42JSlTQDArO285fEdaKXx0YklHP2QxfS9ObGNBQz5fZClEImsqYiMlNCYlR29iRjhRbDBaaWxEdEtQT2A2QGlUUmJJLkZ5YT4pRFYvLkd4YEJWR3EsV31lJVdLTEZOdlchRnVRMl1LayQ2LGlyNyZbcDhIXls8WnFObklfTzFLcUg2VTk/NFYr''@;'; put 'put ''KTF2fTV3Lkp5fSVBQVtQaDxbclNBM1gmbUc9N2ZSdl86aU1uNX5uOX5VUnFNSCEiWyZ8Y31rfEpme0d4SHxCcUFlTXdlMWx5a3BRa31mKmhHYDh7OHljXlh0UX07Jlk0c2cvN1pxbk1+L3FlcXt8eCVkTGUwe25ddzMqNipWLDJfOiI4TF5GPEpfJFU9ZzZqYih8eCQ2TyU1eHAyRDgoVjZAbD8m''@;'; put 'put ''JUE6RFZtSml1NlZsYiQ7cU9lLG84cCpZcF10S2dBLmJRWD5KRTwuSlQqcXwjRCZBZXIsQVNTWDQ8Y0k5ajA2dy9eS3VMTkc0WjVVUmpFUk97QHlgOC5aKSksLjBCPWtmZU4rZ1FuXXtkVFkoNVl7Q0B6LjRDUDY5P2g7V0opVHBAXlQ/Yj96Z2I4I31Ecix4T3o5SzIhYmxUJkYhMHZXfXpnYm89''@;'; put 'put ''dVNXVzs6OFkmMnFAdlMqQytUOzpeVHFAQGBRP2ZWOzoxTkIyPkNnLDtiQVNLRiEwVFkxOXc8OXEjYH5SO31oOT5DPGJiUmZHc0QlKGZjIWRoL3t4T0Q7PzllZTBGZ3RVMzQzdm9mXk49MnB+eyttNkhYMnpySU0pfkBeVyZnZVI8YjJRWUhmJTdCbVlKQkxHZnE1KWo/dGB2fkkuQEB+QEg2YjZe''@;'; put 'put ''NDlxeTkidT0hSGg0RCZVMCNCWmZQUz9aMCtlYSlhREJBYj9XOjZJVTMvK2BhcEc8bz4xO3QocUxsMHZeVmpQST9UbStlRykhfDtlX11VXmQsQ2AxMEJZNTBZQlk5M2dOSkAxdyNAb29adGpJOlIzdyN7en16JVlyWDl1O2I+SSREcGI+SUlEZmE/MUAxOWQ/P3UvND8ucFRQU2BITnhpQ1pbNVhq''@;'; put 'put ''O1BDQUAxNDhvJSVEdjcrW31qQ05VWHRHcXpmYGZlIk51diZOWDA1diJNPHIxbnZAO3JEZG54aCgvWVRXUE8jUW8lczBZYFA+YndeX3RVfXpKQV9yVm5eRXA6QjQ7ekZ1QCZBT3BAQz9KNFY9XlklTV9wNTdPMj9iVUhBelpMSj9zb2ZKaTk8dWBPKHJzSV1BQU44V3srfjVDNTVxezMveHV6O3Zf''@;'; put 'put ''TSI0KVpHLHssdSUjPEtvIkFGKExPMUUiSnZOSzVofm9uP3orWmx1dUAjck9NQixYTGdyP2IiKVdEYDMrQyxUdXgxZD9iRmJ9ejJaRllCOlAseyx5aXtxVkgoUiRaK1tMP3JbLHgrREx9RDl2Ol5bJU5TeiV2bipYbz9WT1JofGpUQnRgYVFve3FmSkIsdW1zamdHIzR6QSlLcVZ0RUFORW1zaj8v''@;'; put 'put ''I2d+Tio0b2I5TDpGIlpXY3RqPy9HMUAxVWlxVm9EOTNeNzt1ZERNSjIiKH1We0opcjZYWmRSKi54Qk5PXmk7X35Xdzd0eGZneUIvSUNIT0dgMjB5QHdAKDdoLHNpNjxFdVdfSE5OPT9WQjF+a0FBMFl9e0tMWDZybUVCLExzWGh1akZXREN2QEZjKnxaUUJhS3MlRDBHb3J3TmYwd29NXUdtW1tm''@;'; put 'put ''ciFlQUdkZSpuWlh7XX5SbnV4O0AxTFBYTzoua3cqVEFiQHchZXVjb2IpR01NITBvPTM8PnJzam50XTQ5cS4kdlNVNFVOfV0iITVJTHdkL3pnPFgwbj96W1l7Vk1NVXFXSiYjMyFybUZNfk5qez9POnJqQCh6I3smS2BzMEdyaiFjLlsufSNdW2dAMV9gOFtYSmFFMjpycFgla3NuXjs/PE4od3hE''@;'; put 'put ''dWBWZG9MVTNoRSUzXU84SyEwR1hKfnEkTzg8VEFiPFlpV3FDR3dVZU4rPGIpR1NGZywvfH0rQjVqWD0hL005QDluR3RPfX0rQjVRWG5YYE43NnEyZkZ8Rz5FPG5oYyhaYV1nVT1sUX5KMT44clB7NEo+Q15WRkwhVCZOJCgyRHYrTnohTEp6e3t1d206X3ZCV1k1eGRmZXd9cU90JEMpMVg4dVlP''@;'; put 'put ''MVsxM3s0JD8/KjRPay4lRFRdUmpKeEJsdEEuT0lJbDJRK2QzTCwpbWdlWXB1MiYzS1BRbUo5RjN3Il9VKXZleGQ3WDt3Tjl3Y1I5Kll3MnZtIkNJSD5ualM+K1VNL0FlZ0FmMyNXc084dCgjZFAiWkZyamVjdy9uXTI3aF1AQT96Y1hEWU83LihbPmJKKFdyamVjLls9SCVeYGVySGxeM3d7LDk8''@;'; put 'put ''d1pQI0Qrfm1+b1p9ejxyNm1PbiU9TSlSNltjLytkQisrZD5QWntfenxXSFYieSFlc2E8KkJKaT90YGRabVV1VkdaUXV7LGI0QG9BfUEoV2h9RUAxbUIkW29HLjo5dihVdEU4WWZQbitUUDVrbixuRHlXYE5JZCp4UGohW2BmeklLKFh2Q3ZWM3FvdGo9eUpiSDFGXnpLMUwuQHE0VT0lKEt2Oj17''@;'; put 'put ''OUpNKkZDK0QuKHssTHleJTlDKitQQCZ5e1BYJC5UWVtZd1FoQ0djRVhdSGh9ZDc4Vk0pSWk9ZWE6V14xYlgwUzV4PiskVk1yYmEqQTVZMXY6YD5ObipzVz8oKTU+I1shNzltdnM2Nz17PlU6dCI1R2hed3koZ0ViQmtPcUBndC4zS2hII1ZmKSw5RDZeYWxTXkVhYjtCPWd1OHx7ISlRYkM0S2ZW''@;'; put 'put ''RDF+U2h8eUhJJng/T1Z2Ojw2MmRAMXU6QG99fC5bNFJqREAxKmA4Wyh9JFtiXX0rfDNIWHY0NFtrJTl7KSl+QDRTIn13aFRSUUB9SUchJF8+SjF0UyhoUFhJNXR0dkw8QkZ6NHVKWWk8VkQxaG0zSV9WbyN4WXYpN1giaiZtQCZBPGhufF86ek9aIkl6UmRTWz8iSEtxfkl2MiVRO0NHTF1uelF8''@;'; put 'put ''bFdgXV9jUyw/V1R7S09JI3R3Q1hadzU3RWtRe098QH5SO00lZ3pTVHtjeWVCQG9YOlkuczZsPERZfV0mRy5GYnkxNF4ub1Y0L3ZOcmovYi5bIWA2YkAyXU9NRypvRU9gKHI2bEhpOVJKVEpsIm5JKFJOK2kvTlk+UGFEbSsqSSpyc2orLkZfZ0U6QDtUK25xYnsrbUtENWouZVRXYiFibF5sRk9F''@;'; put 'put ''Y1YwI1JXZzhGYzlCQDFuZD9vJn5pYWh+QHdgUV47eUF3d2lDMHx2OGw0Z2pNM34vXU4vfEdXbnA/WktuaDlVNDRlPlFoa0VPSz9zbzpNVTNoRWRWTTNXWFdXOVZSL30rT0tDNUVSfXpkVUs1dl9faEAydE5vRyEwTmpSR1VgX3pSWXw0Rl1NWzR7LDpMKChSK05oL2pDNU51Mj5iMkBnWU51RHtS''@;'; put 'put ''R3JSfDtyNnNAVTNGMGdOfjlLfkspSFNZNnp5VVc5fmJzOH57bkB6fVREWXQ+LyY6O196fVRTdVkmO2JbP2t3TmI/ei5UR1lFSlI/fkYpUyVNVktremdiJmJzPkhIJCFifmpgRks+LlcrVGBVeiFxLHBpd2VlKXUzVEZaYmY/YmdAfkBUSz9tU2k5MyFLKUc5LDgkNyQjemBhfXhFLF5zW3VDSCUq''@;'; put 'put ''YTw5W3U7dU9WK3NiRDBdKSNgd3pNVlhte1ghZTc5cWVqRk4+aXluZWZGbVhMXiIhbl1UNURRdzFAMWU6L2FeWm9qME4+RXdQcC57LFpVNWc7WSJLNGhwflh+c313KH5AVCpecT9yMix7LGElbyU3ekAxVWpvWGZYfj5WZGFKaTkhSzZyYSQiPlZkL00lZ0RTU2RSYks6QF92eiRrWWtbW0NNbysw''@;'; put 'put ''a05bdXpeOyYmfTp9WTApQCQ/e3ZbIVlSN3lTOEY6c2s0aT4ifXJqMW4pW1kycEl+OWIrVlI0YF9+cS5kfEJ1T1JGSjd+X0NWeEhWNnkiZmNManNoWiwlIXxaMFQ0QkIwYyFfflJxeTBVels8aUN+ITM6U2hnJkhJKVE5QWZoKDZqJl9tUFRgPkBGdSl8WG8lKT19SU0jN2lIV11lM0tjemZXfCU5''@;'; put 'put ''R1huMXBGVH1qQVUjcl9YKVB0TjBmQSRAdkkleF15NEZ9a2lKIVQzN3pFI1BaZUQiK34xRzhfVzpObXBseytETCpTQ2MzQnImb3pAMSNhO28pWnRqeUUoNGwiVFMsdVUhWXxNPHBGJjsiWGRoSHM4bXR9XnM6VWRHPmpXYG07JXVWcUxHKnY3dmhDY3xfbnhGblcrM3RlfnJddn0jKChKIiF+O3wu''@;'; put 'put ''eFJMbHlNTz5qJmheLFFCbD5sVX5zOjIwOGl2QXJacTw7VyErREl9Sl14NCpkSzo5K2lmS0xZNjNObC5TXWp7dD47UmwhbHx+KDs7IjQhenh+cF9rdHlRN1I1U2h8cVtqNnN+P3xyd3lGNFEzKCNJaWgreWwhWXFWNlB4QCxvKmwmTls4bVJyIkk0VEh6VDwmfSRifCMjKDRCfTxlXWkzMjsxczt8''@;'; put 'put ''eEgzKixbMy4iTmZASiQiSzFEXkVLe3YyMj5UWFVSU345cip2fF0sWXo5NFhJRiZgLFU0Ri8/cTNPRCpxRCE2QywhTDw5fSZNSExrYCNBMDlWa1hGYV0lInBDa35BLmFNenxmNTd2cSpoQ3BfUSJ3a2ZoZ3hgTHA/eXBQV1VHbCFNflFPKnZLKlAudHM8VndCenlzaDFEIlBEfUtCcnVXJlpIQFhv''@;'; put 'put ''X1F2UExIPC9haH5+ZTEqPH05aTN9ZD1yW2o4NzxwJmwvSkomOjFleUgmYGE7SiIqfTpgSGdUNH5OaU5sIVB+NFsyKlJ8OXo6OyY0QDFwJmpKe2xjKUZtRjRPWXhLMTVZLEFsY3MiZXdrW3NMJjRGfThffEBQJmg7ZXZXbCFXc2YwbCFVKFpKdzpSNF5fK1V7TFFAX2p8MyFZViFhfFhMPmk1X1Rk''@;'; put 'put ''VG5IOEExfX1BMi5peV9eUmdfKHM+XyIzeXZqfHh0aUJmelJxSWlSI3J2VVJjfDdXdEY3d3BDTH0mcUsvTj9ATEtWNn1OeFopandjcz8sbHVsX1RkLmVMQDosZXMjTWIrbXtVUkZoeHtYRmtdUzNwQ1B9KHF5eVJgaXA6JlBWe1NgL1NYKDkoV2VUXnx2XU9UNFFYOXFmI30+YCFLLDthNDhKWSYk''@;'; put 'put ''LlNFQUBRdm1oekooRXhfMy9SV3pWIiRmbkB+PGN7O1V4Yn5YeyM0XUs4IWFmalZDMSsmaltKKVRfbjdySnJ8RiEiQmF7Q2cuZVlMIlBAfCpqKnY2KkgubHNgfF5JO1Epc2ptL0Nye1BbentsdSNybWs2TUtdbjZwaz1eN1k/LkVIVzRTNGl0Wnl9RkZ7amBXbngyVDwvfXByfmYqYEhpdkZjYDsw''@;'; put 'put ''UkprMHdpeyZvWEZCaERwKXZMVnRzdV1GWGRYO1tRV0VCdExDNDMzRFNANXRnU3ZEbmI9KiRXNW5nZ2REKG42eWdHWlY1W2dBZSFYV2pIfXNVMzhiPXxMMWJiWHk8ZGYjUitTL1U3Pks7Rn5TdW43TSE9OCRNcFRlSVdqXj1lRUlYMVsra15ndi9bWz1xPUgka248WTB9Smw+Iz5zKEt7fVd3Yktu''@;'; put 'put ''T042UHg+P1krSlkzVmcjM3pIZnpQK1RVKW4mbDBGPjppakI4Z1s/amdzZ29Md2EvRDhNcz9rOjZAMz4/Vm5ZQ1RZKzRAU29UaTxSVC9FNH5dYmxWSi8pSSM4XmJ9Xyh6PjNNWmU0SmdTOiNZP1RhVF0kYWlBV3NAbWlVWFdaKmc7YlJwOGwkXi5pX3p1VnY2MHFZNHphMTFYbzlMellqYF56eTox''@;'; put 'put ''KGxqb1FIVXlZPGVFeDw8dHg2XSlYXypTKkpSQXM9Wy88Wl9tJWtGa1hseDQoX1ErRmc9el1zalFjN0FpU09Kc2ppWDI6W3JjYS8ySVt8eVtMd2E/bzZqKHw/T25zeDAwQFFnVHFnOTdmY0NbMS4vKCE5S0NnMiklKVdgKXghT2ZpSFRWamxPfl9ecD9WL0csMjBabClKSTY9I0FwMG4ycW1qJERC''@;'; put 'put ''KXpMJkwuTSNpa0BxaHxTfFBFdV8haXtAY2B0LileZTtAPiI7JUArdSYyeHRbRUFTXm9CdVBzMXZvSm9qLzRBJV8jYV4sanozWCghXWhld3ZTYF0hK293bnYjMjt5bmJzJEtWU0E4Nz1HOlplMWIvQmIwfiM2cDdDZTtmZFBXNFl9cV0pW0VsNyl1bjp8LD5XX2kwRW1kNSImeyEoSiI7TnFTY208''@;'; put 'put ''NDR6JjpBQW07dTVRYCg5aFV2P2AkJEY/XzdyRmpwbjdeU2M0ckg2MTFlYylPfUwmRzk1VkEmfDcqRCZ7UjFvO3kzZExxJUAsN11paXQ6LlhQIVt7UExkSFMwJmh9cWJvUVttWV5sL19meylDU012Z3ouUUJEaVs7S1AiQG1FSCNfbCZOJUFlS1ROQ2AudWJfVlI2IypCalc1Pk8yTnIjWjF1Lngo''@;'; put 'put ''MXczKTwvZj0zZDY8ZHBVQHUsOCZJb3M/aSldZiFwKVNvd0hkVT9pLF1LajJdKnd6NiJLOFFndnBAM2JANz8xQjZ3di4rIXtMbWdpck04OyF0bz1GIVUmV2guS1RDPT9jb0dCZml5ZGRtZWc3cX4hISFQbCIiRD10XSQ/Y0BbblBTRSVidSxbJE9Ve1cqYHU8VzE+TDA4aXIoWmduL3dCblE6Ky5K''@;'; put 'put ''JnpEdkZ8TyhLZFRLK0ZFOXg/fGouViUlRypvKXZVJkAhdmB8NzEkJTN2dF5AJG9WKDF9fUlaZT44NDVoV2RXTHZMViU/b29CYUAjdmFDTipmd1EvUndKVjNtKyw7dSRUNShKSDtaJHUqcEBZXnsva0pSQTcifnZaJk52TzlZOEpzSG8yL3xAIlM2NCsieF0md2EmeSRoLzZ2LHQsaXcqKCI4R0Bb''@;'; put 'put ''Ym9FRGQ9RS9oNUN2MldrSDlbVjZ0Tjd7Z0JCO3pVZFMpQUg0UmlQN3Ehdko6bjcxWyNGJEheYz1hMkdDTXJjfkMrJE0sQiExLGZqW3UzX1M5eVQ0QnxEa3R6NUoqPCYuSHc4YH0/LipfKCxoUlJ4UlhfI15kUzRwTFQ4YD8vVjZdMCYpMHNsZltaYHNGUiU6WGBCNkEvVXRVPStedGM5e0cxZism''@;'; put 'put ''WV1vU012OE90RV4/dHEoMDRZR0IvQFtsUEUsPXJGIkgpRlk2SmxwVy8qJH5EIk45fVpuOXxzPHVgc1pbUkx0VmAhakRxbSx5UWV3WFI+cjJjNTYxclZCVV9MVHAoKCthZEdPVk9RUSRZZlpKbiwwYSF2JUBNIWg2O0dOWiM0XlRRaEdLIXw1Pml7MmFjMVgpJGg9NkxuXXVoJkA/LCVyL3B0fGVT''@;'; put 'put ''Zl04ZlkwdDhXUUZXYUN0XjxtOCM6SndCSHR3WT5+TkN3LkpsV3ZZe3E2cDtmPiUiWmtHTjIka3gmNzw4KGk3UT4xe05oTzQ0OVddbmxlQnlwWGZ0VGBWVFBfWUhsJTwwNDNXW1N8NkY2I3tIS05uS1gmP0NxdTNqNSQmVCprMjlDKjpOKSZMITo+OCghfDUzNE0vQDlSKkojQWZHcDM2OVRWI2Bl''@;'; put 'put ''V31gaTd4VWk2NChte1pzb1U7QmV2JTheeUt5JVhaQW9xTUhaNFkxT3JhW3t6WyU3e18rLyNaMUZZajBjVXtKRGAhXWVTRGB8L081JC5MLnMzfFMsOUc3ISZue3w0ZH1EMTByIjIzYW12d0FDbX5DZUA0WmtYbmVVWT5eVCQzZUgpMz99fjxYWXorKlcwWyw0fEMkVTgjVXk6RlNiOTFhV1ZCQnp3''@;'; put 'put ''N2BXfDtRbzVNTG9mJXVMaT9MQmhvNzQmXmxgdHlBdzVTKmw6aWo5T2ZPazFCVVlYY1JTeSwsY2x9eGlOb1ZmL0JGLyNmVH5kMFZrW3k9dWRCbnZSbTRZRXpXWks0IldrQm56RDVGTzAma01BeGJ5bjAuVUQvNDshcktlMShFNkJ1SX1LSTNXYFd0ITAqVyN5UF91KjpQXX01O3dWRnJyLyFyOExt''@;'; put 'put ''dzxCKClgJDRAQGVgZTtvM2heZVlZMShwZXVKe282OUtCNTZ2QmtvJERQK096OXQrU3NxY0xgUSpPY3d2KVlxaG0yd11nW2x2Lm06P3BlVSkrX3IuPHdQLEk/TGl+P2F8bXhCcjFjOW5EdnZpRF1uKUBEcXtAZy9wcXBdOVhXa2xjel1ValF0W3J7SFgmVUlQWVNHdzcmelJjP2lmNTYjKm4vZV8p''@;'; put 'put ''PUk3NE5lPipDKyU3NndFNVZfcTcqJTpJNzZWQiF1V29ZZT0rcD9pfDM8UkcqUXwzKTd0Sm0+ODQsW3soVXlwYlJwTzhIOTdXSUY4by89JGV4JURFOntON35gdTpiRHBQb0wvNXRlbXZIKF1YM08/JUY7eStqbysxWW1BM1guMDFLITVBJU9IWCJJaz8/dFBtcGB2L2JNbHFqRksrOlkjZ25fYDdK''@;'; put 'put ''IkdKO3RGMyE+QzRtYXg3bis3P14rUkVAKWFAK2o4QHVtWT1lQWlzNCs6KkZANlcvdGd+amB2Xld4eXBMI3EmdiFjMGYjUVllbXxUJikpTiN1c3U5TXFeIWJmbkBWVk97Sl5eRCJfYUN4WlRDcCVMQ1Y9QkJpUXUiL2pjUWQ6MGFPSU8lfHJKMW89ZEM+dTNqXnY7W15MJnVYY0IpKG1sbn5ZUUE1''@;'; put 'put ''c25GMXdBJWs0SVpYJUV7NE0pe3RQPzJCQnVtcVMkVnZPO3M0fWtGRiEsail9IkdAZ1MxeFo6OXtKWTZBfjxfPygrTXkzWGM7SiIzQ1hLX1pkJn42alB8eSlvZWY1WlgwLlVFeWA9LEooI2doVGx6NDxySVo4Oik8dFk5cEcsNldkRmF0YGVeV19VJjk9RFpuNmVgKW5HeFErQzMsa0Z5SVE8fGRG''@;'; put 'put ''b3pBXX1gdkJxLGkoUkghTFBIXm5Ib0tINUssbzZ0Iy4sQ3xwP1hxa3wpNXIrOlZbNThoeEAqMllUTDAsYDNZXUQxJmlfdHNKL0dmZktaanIiLHx0PEg1UiFeaTooJDYpPDUjRVY3U2h4PUEuRXUreHZ9LF50UGF4ezt+Mi5WVXQ9ZTJga0YhcWkieV1jI3dWOHVTc202LjdoUil5bld7e2R0dX0q''@;'; put 'put ''TFkydV9gempSP3FhNFs4fENlV0krbih3VGsuMllnKi5iTkJDX3lCO31WMiovcilDI1grKH1IRDlGPUx8PzQ9O2M3eDYlbU5AMzl7UkYxaCIuL1lGSmNxVGFtIUpJNDs6KEY8VTRIXU9nLEh0bVVnPTlDQls6O045Q0c3Oy98dUNPajJfSDlUcX5EPHhqd0o/OTJRVFtObDFxWkNwXzU3UFM/fXMj''@;'; put 'put ''Wlc7X3ZtezpfUlpucz9xaHckbTA+KHxaM01JXU89JHNBXU1oSiMwaGNDSz11X0UuUzcqUmUvM3QjeFl5NmxiNG9HIk0pbVMmSVExPWdFMTJ8PFdaYUxVLHo1e3xOUT89SWgzaElUMzVQKSxaLEMwcCpoXyJeQldyUjU+WHYoLlY3Yl1fMC8ib1MvOG5LOEdaVng7KXh9I2FWWCl6JmNibkRHSjAo''@;'; put 'put ''fGx1eyVEWmkyUm9reTlTImxFNnBrcTFdUzx8JTBVM1UzXUhtQy9eaUZiNV9dOCgremF3M3lVS0hEZmgvImdgV1dPQWoocCtjMHU6KlhyPC4wM1UoLEdBPmUqRmwuWnFWUFpKUVdYTCxaI244OUN+WUVwZkJZPUkyUCZRd0F7cUtqRU8xXiRyRDFgc25vQkpQaDpfMSE1ZyQ+JndneClgdlhaPkAi''@;'; put 'put ''MkZhUDwqYCF2MFcxIU88c2peQ04zJXFWUX1ELjRlKGRrWlVZXjNXcEtXVUBVK2k9YzwpVHtJQytjJUEpV2svNDk2VFl4fGlTeThQUitDeGUuRj5bd0BgJGsraGQkQU9aPEJyS2A1VDMlbiZzTEQiZUxJUGoiVDZmM3J5ckMsKHtPTF9Hel9jc3t9I31TVjZqZ0JgJmAlY3tBUz5ud05AYmt1ODBn''@;'; put 'put ''RDp4N1V0RzJUPz52IS4/QDp8Jj1udDBVZGRAfCN0LE1tWFp8RjExWVZYNWRPU0xBTDBebVRaM34xLHZDbiFATFgkaD1GR2JBNkxoNCVeOXpnb3NMTE5jbldsNCt5OTozeVpabX5bSWgyX0d2bz5AVlJzWCxUbmBTZTc+X3JGL0giey9bamhhcGl6OVs/K2lsektieXtNKDI+Zl04dXE3eE0qaDRl''@;'; put 'put ''L11IKnZNUzp5XnhNIlNUXU8sWkdlK2BiLmBxVzluRDpUIjZSW3F2PWwwcDgwQmhgZno1Wz1HRVlNfTEwQnxBM19+NGJoJkxvWTBMNH1uJlQ2N0x9b3gvcVJYVHtlKGUoSWJbbnthZCQ2OV1qWiFwaDhPOmtkK2Q9Z1c4SFIyRDsiPzRQdjFwSXtWekhBMD94ZT1PX3ZVXl8zIWpbI1ZYKCUuTGM2''@;'; put 'put ''c1U+OzF4SSVLbzhjekhfUnk5bmM7MXlNOFkzNzQ8Uk5lWCtQcSJVLCtjfkUub30iVn5TMDh7cWN+NDNEYlA0MUVsVWp8eGJFTGpdWyRATUIvYllGNFBvVjZZZjxlKk4hWT87SFpeTjpgI100TTRSKn11ST90QEBJTDcmdXY1cXl0bmhEeW03PE5dIiw0JCQmVUd7N01tfEU+NCJYMnx9blA+aXtU''@;'; put 'put ''UjlPfHdPP1tPSUN0Y3gzNDohdm99Qz9YJTlqOU50YjtlKG48Mz5pY1VYOEJ9KTRnOUIjfFlgdXpXJS5OTkxTbyR9KE5kTTAybSEoKzUofnBZPndWSXdoSV9wNXxATCFUXWMoPW4yW1lNbm4+VWwwfT1nQjhgVyhvZDk6WTVwamg5P0R2QV8/JiQwLyZseSFnIT1qYCtdPj9sYGQ9YHttSSRLVWh8''@;'; put 'put ''dXteZVsmOFoyXzRXI305XilNdlh5N2smZU8sLCY5W0FQfXhpSiomTShWIl9wJjBpXztdVDl2JkwzR0NwWTRNKmVRd0QyQGR+S0JXMjVZLlgweG0wfnhfTzN9OW59YTdCNXJDJWhDMk9+REBjVDBeZUNhO35TXyI5QDg9ZX5uISlCaEBVUXJeZXxDVFg0fEBiVDtTZlVOaGxXdnZZbDhpcXJTM2gp''@;'; put 'put ''UF5mOUA/dztvcjlrZXxWJHdyPHxCT0YuYSFjVSUoOCVzZkMoMTwuSntzLk04KzRndT1aTjI9SEVISnI4d3JDRkEiZz10d3ksXVZna2c0QDY2R1lGVGd0MGBdfEdlaDk/N2tXLlskbTQuJExFLGo0cChWRURRcX4uIkI7aVlnTFUuN3VSdF5scSxmM2UlUSxeVHJpZjdyPC40V20yfTMoYGBAKitQ''@;'; put 'put ''STkoMD9Ke1Aze3ojJGVEQjxmOU86JX1qJSolQ2U+VFo4SSYhLGdCdn07ZHk2dXpsN1pASFoicGI/cjAkZz1IbX1gfGRNYlpYaz16cy5CfWtKY1NmKiMpRDowOEZyNEM8YnJ9ZHs3WFpNVXk6VkJ9NSs3KlNaJl8jWEh8VGJYclZdYU5zVV1vKnFvdCp8YzgpI3ViPTNqNGglemI2XzB1JTBLOVpr''@;'; put 'put ''YEtnWzU7SFEhO0JAXl1IMjl+cGdrJU8uZCZYW3gjUW9eKTldYSp2cFcoQ0ckcSI/Pj5sKEpQQEBpVURvQl90cShwU3o1Ynt1KyYqMix4eDpDeipbRFNhXmNXXnJAZVhAUCIjazdMbjhSb29kNFZCNGkya3EsIWtCbTd0V0RAVTo7MV9QI2d9MSo5bHFLZiIqMFQ/KDlGImIiUD1fLndec19YZzFC''@;'; put 'put ''bFdbO3klOHw8T1RMakd5ZChxeEpnN3hwIUx+ezNzcntaNXFbe0VJcF1UKVVnY2YmJnd9bHUrc2p+S3d4UGxLM29sOms9KWE7M04mRzJeN0w6dE1QUHokLzMkfEZwUiZQOWpzfTE1M3dUNHlifW5MRno+IyMlaiRJaDB+UGBCX3gsejhoR08xXmZzMHkjVUMvc1RoMlN+LlsxSCQhJEI1Jk1QeDtC''@;'; put 'put ''JykpLG94fHwob3g9SFJ0KHt3YXNtQmluYXJ5OnlRLGxvY2F0ZUZpbGU6dm9pZCAwfSkpLG94KS50aGVuKGM9Pm5ldyB3RihjKSl9c3RhdGljIHVubG9hZCgpe294JiYob3g9dm9pZCAwKX12ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX21vZHVsZS5HcmFwaHZpei5wcm90b3R5cGUudmVyc2lvbigp''@;'; put 'put ''fWxheW91dChjLGE9InN2ZyIsZj0iZG90IixkKXtpZighYylyZXR1cm4iIjtjb25zdCBoPW5ldyB0aGlzLl9tb2R1bGUuR3JhcGh2aXooZD8ueUludmVydD8xOjAsZD8ubm9wP2Q/Lm5vcDowKTtsZXQgbT0iIixfPSIiO3RyeXshZnVuY3Rpb24oTyxYKXtjb25zdCBhZT17aW1hZ2VzOltdLGZp''@;'; put 'put ''bGVzOltdLC4uLlh9O3ZhciBwZTtbLi4uYWUuZmlsZXMsLi4uKHBlPWFlLmltYWdlcyxwZS5tYXAoTlJ0KSldLmZvckVhY2goYmU9Pk8uY3JlYXRlRmlsZShiZS5wYXRoLGJlLmRhdGEpKX0oaCxkKTt0cnl7bT1oLmxheW91dChjLGEsZil9Y2F0Y2goTyl7Xz1PLm1lc3NhZ2V9Xz1oLmxhc3RF''@;'; put 'put ''cnJvcigpfHxffWZpbmFsbHl7dGhpcy5fbW9kdWxlLmRlc3Ryb3koaCl9aWYoIW0mJl8pdGhyb3cgbmV3IEVycm9yKF8pO3JldHVybiBtfWNpcmNvKGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJjaXJjbyIsZil9ZG90KGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlv''@;'; put 'put ''dXQoYyxhLCJkb3QiLGYpfWZkcChjLGE9InN2ZyIsZil7cmV0dXJuIHRoaXMubGF5b3V0KGMsYSwiZmRwIixmKX1zZmRwKGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJzZmRwIixmKX1uZWF0byhjLGE9InN2ZyIsZil7cmV0dXJuIHRoaXMubGF5b3V0KGMsYSwibmVhdG8i''@;'; put 'put ''LGYpfW9zYWdlKGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJvc2FnZSIsZil9cGF0Y2h3b3JrKGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJwYXRjaHdvcmsiLGYpfXR3b3BpKGMsYT0ic3ZnIixmKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJ0d29w''@;'; put 'put ''aSIsZil9fWZ1bmN0aW9uIENGKGwpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGwpfWZ1bmN0aW9uIGxtKGwpe3JldHVybiBNYXRoLnJvdW5kKDEwMCpsKS8xMDB9ZnVuY3Rpb24gVjhlKGwsYyl7aWYoInBvbHlnb24iPT1sLnRhZyl7KGE9Q0YobCkpLnRhZz0icGF0aCI7dmFyIGQ9Q0YoZj1s''@;'; put 'put ''LmF0dHJpYnV0ZXMpLGg9Zi5wb2ludHM7aWYoInBvbHlnb24iPT1jLnRhZyl7KG09bC5iYm94KS5jeD1tLngrbS53aWR0aC8yLG0uY3k9bS55K20uaGVpZ2h0LzI7Zm9yKHZhciBPPWYucG9pbnRzLnNwbGl0KCIgIiksWD1PLm1hcChmdW5jdGlvbihFbil7dmFyIFRyPUVuLnNwbGl0KCIsIik7''@;'; put 'put ''cmV0dXJuW1RyWzBdLW0uY3gsVHJbMV0tbS5jeV19KSxhZT1YW1gubGVuZ3RoLTFdWzBdLHBlPVhbWC5sZW5ndGgtMV1bMV0sYmU9MDtiZTxYLmxlbmd0aDtiZSsrLGFlPXhlLHBlPVZlKXt2YXIgWmU9KHhlPVhbYmVdWzBdKS1hZTtpZigwIT0obHQ9KFZlPVhbYmVdWzFdKS1wZSkmJjA8PShk''@;'; put 'put ''dD1hZS1wZSpaZS9sdCkmJmR0PDEvMCYmKGFlPD1kdCYmZHQ8PXhlfHx4ZTw9ZHQmJmR0PD1hZSkpYnJlYWt9dmFyIGd0PVtbbS5jeCtkdCxtLmN5KzBdLmpvaW4oIiwiKV07aD0oZ3Q9KGd0PWd0LmNvbmNhdChPLnNsaWNlKGJlKSkpLmNvbmNhdChPLnNsaWNlKDAsYmUpKSkuam9pbigiICIp''@;'; put 'put ''fWQuZD0iTSIraCsieiIsZGVsZXRlIGQucG9pbnRzLGEuYXR0cmlidXRlcz1kfWVsc2V7dmFyIGE7KGE9Q0YobCkpLnRhZz0icGF0aCIsZD1DRihmPWwuYXR0cmlidXRlcyk7dmFyIGYseGUsVmUsZHQsanQ9Zi5jeCxybj1mLmN5LFh0PWYucngseW49Zi5yeTtpZigicG9seWdvbiI9PWMudGFn''@;'; put 'put ''KXt2YXIgbTsobT1jLmJib3gpLmN4PW0ueCttLndpZHRoLzIsbS5jeT1tLnkrbS5oZWlnaHQvMjt2YXIgUW49Yy5hdHRyaWJ1dGVzLnBvaW50cy5zcGxpdCgiICIpWzBdLnNwbGl0KCIsIiksbHQ9KFplPVFuWzBdLW0uY3gsUW5bMV0tbS5jeSksWnI9TWF0aC5zcXJ0KE1hdGgucG93KFplLDIp''@;'; put 'put ''K01hdGgucG93KGx0LDIpKSxpcj1aZS9acixzaT0tbHQvWnJ9ZWxzZSBpcj0xLHNpPTA7ZC5kPSJNICIranQrIiAiK3JuKyIgbSAiKyh4ZT1YdCppcikrIiwiKyhWZT0teW4qc2kpKyIgYSAiK1h0KyIsIit5bisiIDAgMSwwICIrKFplPShkdD1YdCotaXIpLXhlKSsiLCIrKGx0PS15biotc2kt''@;'; put 'put ''VmUpKyIgYSAiK1h0KyIsIit5bisiIDAgMSwwICIrLVplKyIsIistbHQrInoiLGRlbGV0ZSBkLmN4LGRlbGV0ZSBkLmN5LGRlbGV0ZSBkLnJ4LGRlbGV0ZSBkLnJ5LGEuYXR0cmlidXRlcz1kfXJldHVybiBhfWZ1bmN0aW9uIGpSdCgpe3RyeXt3Ri5sb2FkKCkudGhlbihhPT57YS5sYXlvdXQo''@;'; put 'put ''IiIsInN2ZyIsImRvdCIpLHRoaXMubGF5b3V0U3luYz1hLmxheW91dC5iaW5kKGEpLG51bGw9PXRoaXMuX3dvcmtlciYmdGhpcy5fZGlzcGF0Y2guY2FsbCgiaW5pdEVuZCIsdGhpcyksdGhpcy5fYWZ0ZXJJbml0JiZ0aGlzLl9hZnRlckluaXQoKX0pfWNhdGNoe31pZihudWxsIT10aGlzLl93''@;'; put 'put ''b3JrZXIpe3ZhciBsPXRoaXMuX3ZpelVSTCxjPXRoaXM7dGhpcy5fd29ya2VyUG9ydC5vbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7Yy5fd29ya2VyQ2FsbGJhY2tzLnNoaWZ0KCkuY2FsbChjLGEpfSxsLm1hdGNoKC9eaHR0cHM/OlwvXC98XlwvXC8vaSl8fChsPW5ldyB3aW5kb3cuVVJMKGwsZG9j''@;'; put 'put ''dW1lbnQubG9jYXRpb24uaHJlZikuaHJlZiksYlEuY2FsbCh0aGlzLHt0eXBlOiJsYXlvdXQiLGRvdDoiIixlbmdpbmU6ImRvdCIsdml6VVJMOmx9LGZ1bmN0aW9uKGEpe30pLGJRLmNhbGwodGhpcyx7dHlwZToidmVyc2lvbiJ9LGZ1bmN0aW9uKGEpeyJ2ZXJzaW9uIj09PWEuZGF0YS50eXBl''@;'; put 'put ''JiYoYy5fZ3JhcGh2aXpWZXJzaW9uPWEuZGF0YS52ZXJzaW9uLGMuX2Rpc3BhdGNoLmNhbGwoImluaXRFbmQiLHRoaXMpKX0pfX1mdW5jdGlvbiBiUShsLGMpe3RoaXMuX3dvcmtlckNhbGxiYWNrcy5wdXNoKGMpLHRoaXMuX3dvcmtlclBvcnQucG9zdE1lc3NhZ2UobCl9ZnVuY3Rpb24gWlJ0''@;'; put 'put ''KGwsYyl7dmFyIGE9dGhpcy5fb3B0aW9ucy5rZXlNb2RlLGY9dGhpcy5fb3B0aW9ucy50d2VlblBhdGhzLGQ9dGhpcy5fb3B0aW9ucy50d2VlblNoYXBlcztpZigic3RyaW5nIj09dHlwZW9mIHRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24mJnRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNp''@;'; put 'put ''b24uaW5jbHVkZXMoIiUiKSl2YXIgaD0rdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5zcGxpdCgiJSIpWzBdLzEwMCxtPXRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24uaW5jbHVkZXMoIiUiKTtlbHNlIGg9dGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbixtPSExO3ZhciBfPXRo''@;'; put 'put ''aXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXMsTz17fSxYPXRoaXMuX2RpY3Rpb25hcnl8fHt9LGFlPXt9LHBlPXRoaXMuX25vZGVEaWN0aW9uYXJ5fHx7fTtmdW5jdGlvbiBkdChpcixzaT0wLEFyKXsoZnVuY3Rpb24gYmUoaXIsc2kpe3ZhciBBcj1pci50YWc7aWYoImluZGV4Ij09YSlp''@;'; put 'put ''ci5rZXk9c2k7ZWxzZSBpZigiIyIhPUFyWzBdKWlmKCJpZCI9PWEpaXIua2V5PWlyLmF0dHJpYnV0ZXMuaWQ7ZWxzZSBpZigidGl0bGUiPT1hKXt2YXIgRW49aXIuY2hpbGRyZW4uZmluZChmdW5jdGlvbihUcil7cmV0dXJuInRpdGxlIj09VHIudGFnfSk7RW4mJihpci5rZXk9RW4uY2hpbGRy''@;'; put 'put ''ZW4ubGVuZ3RoPjA/RW4uY2hpbGRyZW5bMF0udGV4dDoiIil9bnVsbD09aXIua2V5JiYoZCYmKCJlbGxpcHNlIj09QXJ8fCJwb2x5Z29uIj09QXIpJiYoQXI9InBhdGgiKSxpci5rZXk9QXIrIi0iK3NpKX0pKGlyLHNpKSxmdW5jdGlvbiB4ZShpcixzaSl7aXIuaWQ9KHNpP3NpLmlkKyIuIjoi''@;'; put 'put ''IikraXIua2V5fShpcixBcik7dmFyIFRyPVhbaXIuaWRdOyhmdW5jdGlvbiBWZShpcil7T1tpci5pZF09aXJ9KShpciksZnVuY3Rpb24gWmUoaXIsc2kpe2QmJmlyLmlkIGluIFgmJigicG9seWdvbiI9PXNpLnRhZ3x8ImVsbGlwc2UiPT1zaS50YWd8fCJwYXRoIj09c2kudGFnKSYmKHNpLnRh''@;'; put 'put ''ZyE9aXIudGFnfHwicG9seWdvbiI9PWlyLnRhZykmJigicGF0aCIhPXNpLnRhZyYmKGlyLmFsdGVybmF0aXZlT2xkPVY4ZShzaSxpcikpLCJwYXRoIiE9aXIudGFnJiYoaXIuYWx0ZXJuYXRpdmVOZXc9VjhlKGlyLHNpKSkpfShpcixUciksZnVuY3Rpb24gbHQoaXIsc2kpe2lmKGYmJnNpJiYo''@;'; put 'put ''InBhdGgiPT1zaS50YWd8fGlyLmFsdGVybmF0aXZlT2xkJiYicGF0aCI9PWlyLmFsdGVybmF0aXZlT2xkLnRhZykpe3ZhciBBcj0oaXIuYWx0ZXJuYXRpdmVOZXd8fGlyKS5hdHRyaWJ1dGVzLmQ7aWYoaXIuYWx0ZXJuYXRpdmVPbGQpdmFyIEVuPWZRKGlyLmFsdGVybmF0aXZlT2xkKTtlbHNl''@;'; put 'put ''IEVuPWZRKHNpKTsoaXIuYWx0ZXJuYXRpdmVPbGR8fChpci5hbHRlcm5hdGl2ZU9sZD17fSkpLnBvaW50cz1mdW5jdGlvbiB2UnQobCxjLGEsZil7Y29uc3QgZD1sLGg9ZC5jbG9uZU5vZGUoKSxtPWQuZ2V0VG90YWxMZW5ndGgoKSxfPShoLnNldEF0dHJpYnV0ZSgiZCIsYyksaCkuZ2V0VG90''@;'; put 'put ''YWxMZW5ndGgoKSxPPVswXTtsZXQgWD0wO2NvbnN0IGFlPWY/YTphL01hdGgubWF4KG0sXyk7Zm9yKDsoWCs9YWUpPDE7KU8ucHVzaChYKTtyZXR1cm4gTy5wdXNoKDEpLE8ubWFwKGZ1bmN0aW9uKGJlKXtjb25zdCB4ZT1kLmdldFBvaW50QXRMZW5ndGgoYmUqbSksVmU9aC5nZXRQb2ludEF0''@;'; put 'put ''TGVuZ3RoKGJlKl8pO3JldHVybltbeGUueCx4ZS55XSxbVmUueCxWZS55XV19KX0oRW4sQXIsaCxtKX19KGlyLFRyKTt2YXIgVm49e307aXIuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjcil7dmFyIENyPWNyLnRhZzsoImVsbGlwc2UiPT1Dcnx8InBvbHlnb24iPT1DcikmJihDcj0icGF0''@;'; put 'put ''aCIpLG51bGw9PVZuW0NyXSYmKFZuW0NyXT0wKSxkdChjcixWbltDcl0rKyxpcil9KX1mdW5jdGlvbiBybihpcil7KGZ1bmN0aW9uIGd0KGlyKXtpZihfJiZpci5wYXJlbnQmJiJub2RlIj09aXIucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3MmJiJ0aXRsZSI9PWlyLnRhZyl7aWYoaXIuY2hpbGRy''@;'; put 'put ''ZW4ubGVuZ3RoPjApdmFyIEVuPWlyLmNoaWxkcmVuWzBdLnRleHQ7ZWxzZSBFbj0iIjthZVtFbl09aXIucGFyZW50fX0pKGlyKSxmdW5jdGlvbiBqdChpcil7dmFyIEFyPWlyLnRhZztpZihfJiYhWFtpci5pZF0mJmlyLnBhcmVudCYmUDhlKGlyKSYmKCJwYXRoIj09QXJ8fCJwb2x5Z29uIj09''@;'; put 'put ''QXIpKXtpZigicG9seWdvbiI9PUFyKXt2YXIgVHI9aXIucGFyZW50LmNoaWxkcmVuLmZpbmQoZnVuY3Rpb24oTnIpe3JldHVybiJwYXRoIj09TnIudGFnfSk7VHImJihpci50b3RhbExlbmd0aD1Uci50b3RhbExlbmd0aCl9dmFyIFZuPWZ1bmN0aW9uIF9SdChsKXtyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''YlJ0KGwpe3JldHVybiJlZGdlIj09bC5wYXJlbnQuYXR0cmlidXRlcy5jbGFzcz9sLnBhcmVudDpsLnBhcmVudC5wYXJlbnQucGFyZW50fShsKS5jaGlsZHJlbi5maW5kKGZ1bmN0aW9uKGMpe3JldHVybiJ0aXRsZSI9PWMudGFnfSl9KGlyKSxjcj1Wbi5jaGlsZHJlblswXSxDcj1jci50ZXh0''@;'; put 'put ''LnNwbGl0KCItPiIpOzIhPUNyLmxlbmd0aCYmKENyPWNyLnRleHQuc3BsaXQoIi0tIikpO3ZhciBZcj1DclswXSxTdD1hZVtZcl0sRnQ9cGVbWXJdO2lmKEZ0KXtpZigod249U3QuY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKE5yLGRpKXtyZXR1cm4iZyI9PU5yLnRhZ30pKT49MCl7dmFy''@;'; put 'put ''IFd0PVN0LmNoaWxkcmVuW3duXS5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oTnIsZGkpe3JldHVybiJhIj09TnIudGFnfSk7U3Q9U3QuY2hpbGRyZW5bd25dLmNoaWxkcmVuW1d0XX0od249RnQuY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKE5yLGRpKXtyZXR1cm4iZyI9PU5yLnRh''@;'; put 'put ''Z30pKT49MCYmKFd0PUZ0LmNoaWxkcmVuW3duXS5jaGlsZHJlbi5maW5kSW5kZXgoZnVuY3Rpb24oZGkscXIpe3JldHVybiJhIj09ZGkudGFnfSksRnQ9RnQuY2hpbGRyZW5bd25dLmNoaWxkcmVuW1d0XSk7Zm9yKHZhciBTbj1TdC5jaGlsZHJlbix3bj0wO3duPFNuLmxlbmd0aDt3bisrKWlm''@;'; put 'put ''KCJwb2x5Z29uIj09U25bd25dLnRhZ3x8ImVsbGlwc2UiPT1Tblt3bl0udGFnfHwicGF0aCI9PVNuW3duXS50YWd8fCJ0ZXh0Ij09U25bd25dLnRhZyl7dmFyIGJyPVNuW3duXTticmVha312YXIgZHI9RnQuY2hpbGRyZW47Zm9yKHduPTA7d248ZHIubGVuZ3RoO3duKyspaWYoInBvbHlnb24i''@;'; put 'put ''PT1kclt3bl0udGFnfHwiZWxsaXBzZSI9PWRyW3duXS50YWd8fCJwYXRoIj09ZHJbd25dLnRhZ3x8InRleHQiPT1kclt3bl0udGFnKXt2YXIgTHI9ZHJbd25dO2JyZWFrfWlyLm9mZnNldD1MciYmYnI/e3g6THIuY2VudGVyLngtYnIuY2VudGVyLngseTpMci5jZW50ZXIueS1ici5jZW50ZXIu''@;'; put 'put ''eX06e3g6MCx5OjB9fX19KGlyKSxpci5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKHNpKXtybihzaSl9KX10aGlzLl9kaXNwYXRjaC5jYWxsKCJsYXlvdXRFbmQiLHRoaXMpO3ZhciBYdD1PYShkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLmFwcGVuZCgiZGl2IiksUW49KG5l''@;'; put 'put ''dyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcobCwiaW1hZ2Uvc3ZnK3htbCIpO1h0LmFwcGVuZChmdW5jdGlvbigpe3JldHVybiBRbi5kb2N1bWVudEVsZW1lbnR9KTt2YXIgVnI9RDYoWHQuc2VsZWN0KCJzdmciKSk7dGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YUV4dHJhY3RF''@;'; put 'put ''bmQiLHRoaXMpLGR0KFZyKSx0aGlzLl9kaXNwYXRjaC5jYWxsKCJkYXRhUHJvY2Vzc1Bhc3MxRW5kIix0aGlzKSxybihWciksdGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YVByb2Nlc3NQYXNzMkVuZCIsdGhpcyksdGhpcy5fZGF0YT1Wcix0aGlzLl9kaWN0aW9uYXJ5PU8sdGhpcy5fbm9kZURp''@;'; put 'put ''Y3Rpb25hcnk9YWUsdGhpcy5fZXh0cmFjdERhdGE9ZnVuY3Rpb24oaXIsc2ksQXIpe3ZhciBFbj1ENihpcik7cmV0dXJuIGR0KEVuLHNpLEFyKSxybihFbiksRW59LHRoaXMuX2J1c3k9ITEsdGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YVByb2Nlc3NFbmQiLHRoaXMpLGMmJmMuY2FsbCh0aGlz''@;'; put 'put ''KSx0aGlzLl9xdWV1ZS5sZW5ndGg+MCYmdGhpcy5fcXVldWUuc2hpZnQoKS5jYWxsKHRoaXMpfWZ1bmN0aW9uIFNGKGwsYyl7aWYoKGE9KGw9Yz9sLnRvRXhwb25lbnRpYWwoYy0xKTpsLnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBhLGY9bC5zbGlj''@;'; put 'put ''ZSgwLGEpO3JldHVybltmLmxlbmd0aD4xP2ZbMF0rZi5zbGljZSgyKTpmLCtsLnNsaWNlKGErMSldfXZhciBCOGUsbUx0PS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIF9RKGwpe2lmKCEo''@;'; put 'put ''Yz1tTHQuZXhlYyhsKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIitsKTt2YXIgYztyZXR1cm4gbmV3IHdRKHtmaWxsOmNbMV0sYWxpZ246Y1syXSxzaWduOmNbM10sc3ltYm9sOmNbNF0semVybzpjWzVdLHdpZHRoOmNbNl0sY29tbWE6Y1s3XSxwcmVjaXNpb246Y1s4XSYm''@;'; put 'put ''Y1s4XS5zbGljZSgxKSx0cmltOmNbOV0sdHlwZTpjWzEwXX0pfWZ1bmN0aW9uIHdRKGwpe3RoaXMuZmlsbD12b2lkIDA9PT1sLmZpbGw/IiAiOmwuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PWwuYWxpZ24/Ij4iOmwuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PWwuc2lnbj8iLSI6''@;'; put 'put ''bC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PWwuc3ltYm9sPyIiOmwuc3ltYm9sKyIiLHRoaXMuemVybz0hIWwuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PWwud2lkdGg/dm9pZCAwOitsLndpZHRoLHRoaXMuY29tbWE9ISFsLmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PWwu''@;'; put 'put ''cHJlY2lzaW9uP3ZvaWQgMDorbC5wcmVjaXNpb24sdGhpcy50cmltPSEhbC50cmltLHRoaXMudHlwZT12b2lkIDA9PT1sLnR5cGU/IiI6bC50eXBlKyIifWZ1bmN0aW9uIGo4ZShsLGMpe3ZhciBhPVNGKGwsYyk7aWYoIWEpcmV0dXJuIGwrIiI7dmFyIGY9YVswXSxkPWFbMV07cmV0dXJuIGQ8''@;'; put 'put ''MD8iMC4iK25ldyBBcnJheSgtZCkuam9pbigiMCIpK2Y6Zi5sZW5ndGg+ZCsxP2Yuc2xpY2UoMCxkKzEpKyIuIitmLnNsaWNlKGQrMSk6ZituZXcgQXJyYXkoZC1mLmxlbmd0aCsyKS5qb2luKCIwIil9X1EucHJvdG90eXBlPXdRLnByb3RvdHlwZSx3US5wcm90b3R5cGUudG9TdHJpbmc9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodm9pZCAwPT09dGhpcy53aWR0aD8iIjpNYXRoLm1heCgxLDB8dGhpcy53aWR0aCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHZvaWQgMD09PXRoaXMucHJl''@;'; put 'put ''Y2lzaW9uPyIiOiIuIitNYXRoLm1heCgwLDB8dGhpcy5wcmVjaXNpb24pKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTtjb25zdCB6OGU9eyIlIjoobCxjKT0+KDEwMCpsKS50b0ZpeGVkKGMpLGI6bD0+TWF0aC5yb3VuZChsKS50b1N0cmluZygyKSxjOmw9PmwrIiIsZDpmdW5jdGlv''@;'; put 'put ''biBmTHQobCl7cmV0dXJuIE1hdGguYWJzKGw9TWF0aC5yb3VuZChsKSk+PTFlMjE/bC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOmwudG9TdHJpbmcoMTApfSxlOihsLGMpPT5sLnRvRXhwb25lbnRpYWwoYyksZjoobCxjKT0+bC50b0ZpeGVkKGMpLGc6KGwsYyk9Pmwu''@;'; put 'put ''dG9QcmVjaXNpb24oYyksbzpsPT5NYXRoLnJvdW5kKGwpLnRvU3RyaW5nKDgpLHA6KGwsYyk9Pmo4ZSgxMDAqbCxjKSxyOmo4ZSxzOmZ1bmN0aW9uIHZMdChsLGMpe3ZhciBhPVNGKGwsYyk7aWYoIWEpcmV0dXJuIGwrIiI7dmFyIGY9YVswXSxkPWFbMV0saD1kLShCOGU9MypNYXRoLm1heCgt''@;'; put 'put ''OCxNYXRoLm1pbig4LE1hdGguZmxvb3IoZC8zKSkpKSsxLG09Zi5sZW5ndGg7cmV0dXJuIGg9PT1tP2Y6aD5tP2YrbmV3IEFycmF5KGgtbSsxKS5qb2luKCIwIik6aD4wP2Yuc2xpY2UoMCxoKSsiLiIrZi5zbGljZShoKToiMC4iK25ldyBBcnJheSgxLWgpLmpvaW4oIjAiKStTRihsLE1hdGgu''@;'; put 'put ''bWF4KDAsYytoLTEpKVswXX0sWDpsPT5NYXRoLnJvdW5kKGwpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLHg6bD0+TWF0aC5yb3VuZChsKS50b1N0cmluZygxNil9O2Z1bmN0aW9uIFU4ZShsKXtyZXR1cm4gbH12YXIgTUYsamYsWjhlPUFycmF5LnByb3RvdHlwZS5tYXAsWThlPVsieSIs''@;'; put 'put ''InoiLCJhIiwiZiIsInAiLCJuIiwiXHhiNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdOyFmdW5jdGlvbiBfTHQobCl7TUY9ZnVuY3Rpb24geUx0KGwpe3ZhciBjPXZvaWQgMD09PWwuZ3JvdXBpbmd8fHZvaWQgMD09PWwudGhvdXNhbmRzP1U4ZTpmdW5jdGlvbiBo''@;'; put 'put ''THQobCxjKXtyZXR1cm4gZnVuY3Rpb24oYSxmKXtmb3IodmFyIGQ9YS5sZW5ndGgsaD1bXSxtPTAsXz1sWzBdLE89MDtkPjAmJl8+MCYmKE8rXysxPmYmJihfPU1hdGgubWF4KDEsZi1PKSksaC5wdXNoKGEuc3Vic3RyaW5nKGQtPV8sZCtfKSksISgoTys9XysxKT5mKSk7KV89bFttPShtKzEp''@;'; put 'put ''JWwubGVuZ3RoXTtyZXR1cm4gaC5yZXZlcnNlKCkuam9pbihjKX19KFo4ZS5jYWxsKGwuZ3JvdXBpbmcsTnVtYmVyKSxsLnRob3VzYW5kcysiIiksYT12b2lkIDA9PT1sLmN1cnJlbmN5PyIiOmwuY3VycmVuY3lbMF0rIiIsZj12b2lkIDA9PT1sLmN1cnJlbmN5PyIiOmwuY3VycmVuY3lbMV0r''@;'; put 'put ''IiIsZD12b2lkIDA9PT1sLmRlY2ltYWw/Ii4iOmwuZGVjaW1hbCsiIixoPXZvaWQgMD09PWwubnVtZXJhbHM/VThlOmZ1bmN0aW9uIHBMdChsKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGMucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihhKXtyZXR1cm4gbFsrYV19KX19KFo4ZS5jYWxs''@;'; put 'put ''KGwubnVtZXJhbHMsU3RyaW5nKSksbT12b2lkIDA9PT1sLnBlcmNlbnQ/IiUiOmwucGVyY2VudCsiIixfPXZvaWQgMD09PWwubWludXM/Ilx1MjIxMiI6bC5taW51cysiIixPPXZvaWQgMD09PWwubmFuPyJOYU4iOmwubmFuKyIiO2Z1bmN0aW9uIFgocGUpe3ZhciBiZT0ocGU9X1EocGUpKS5m''@;'; put 'put ''aWxsLHhlPXBlLmFsaWduLFZlPXBlLnNpZ24sWmU9cGUuc3ltYm9sLGx0PXBlLnplcm8sZHQ9cGUud2lkdGgsZ3Q9cGUuY29tbWEsanQ9cGUucHJlY2lzaW9uLHJuPXBlLnRyaW0sWHQ9cGUudHlwZTsibiI9PT1YdD8oZ3Q9ITAsWHQ9ImciKTp6OGVbWHRdfHwodm9pZCAwPT09anQmJihqdD0x''@;'; put 'put ''Mikscm49ITAsWHQ9ImciKSwobHR8fCIwIj09PWJlJiYiPSI9PT14ZSkmJihsdD0hMCxiZT0iMCIseGU9Ij0iKTt2YXIgeW49IiQiPT09WmU/YToiIyI9PT1aZSYmL1tib3hYXS8udGVzdChYdCk/IjAiK1h0LnRvTG93ZXJDYXNlKCk6IiIsUW49IiQiPT09WmU/ZjovWyVwXS8udGVzdChYdCk/''@;'; put 'put ''bToiIixPcj16OGVbWHRdLFZyPS9bZGVmZ3BycyVdLy50ZXN0KFh0KTtmdW5jdGlvbiBacihpcil7dmFyIEVuLFRyLFZuLHNpPXluLEFyPVFuO2lmKCJjIj09PVh0KUFyPU9yKGlyKStBcixpcj0iIjtlbHNle3ZhciBjcj0oaXI9K2lyKTwwfHwxL2lyPDA7aWYoaXI9aXNOYU4oaXIpP086T3Io''@;'; put 'put ''TWF0aC5hYnMoaXIpLGp0KSxybiYmKGlyPWZ1bmN0aW9uIGdMdChsKXtlOmZvcih2YXIgZCxjPWwubGVuZ3RoLGE9MSxmPS0xO2E8YzsrK2Epc3dpdGNoKGxbYV0pe2Nhc2UiLiI6Zj1kPWE7YnJlYWs7Y2FzZSIwIjowPT09ZiYmKGY9YSksZD1hO2JyZWFrO2RlZmF1bHQ6aWYoIStsW2FdKWJy''@;'; put 'put ''ZWFrIGU7Zj4wJiYoZj0wKX1yZXR1cm4gZj4wP2wuc2xpY2UoMCxmKStsLnNsaWNlKGQrMSk6bH0oaXIpKSxjciYmMD09K2lyJiYiKyIhPT1WZSYmKGNyPSExKSxzaT0oY3I/IigiPT09VmU/VmU6XzoiLSI9PT1WZXx8IigiPT09VmU/IiI6VmUpK3NpLEFyPSgicyI9PT1YdD9ZOGVbOCtCOGUv''@;'; put 'put ''M106IiIpK0FyKyhjciYmIigiPT09VmU/IikiOiIiKSxWcilmb3IoRW49LTEsVHI9aXIubGVuZ3RoOysrRW48VHI7KWlmKDQ4PihWbj1pci5jaGFyQ29kZUF0KEVuKSl8fFZuPjU3KXtBcj0oNDY9PT1Wbj9kK2lyLnNsaWNlKEVuKzEpOmlyLnNsaWNlKEVuKSkrQXIsaXI9aXIuc2xpY2UoMCxF''@;'; put 'put ''bik7YnJlYWt9fWd0JiYhbHQmJihpcj1jKGlyLDEvMCkpO3ZhciBDcj1zaS5sZW5ndGgraXIubGVuZ3RoK0FyLmxlbmd0aCxZcj1DcjxkdD9uZXcgQXJyYXkoZHQtQ3IrMSkuam9pbihiZSk6IiI7c3dpdGNoKGd0JiZsdCYmKGlyPWMoWXIraXIsWXIubGVuZ3RoP2R0LUFyLmxlbmd0aDoxLzAp''@;'; put 'put ''LFlyPSIiKSx4ZSl7Y2FzZSI8Ijppcj1zaStpcitBcitZcjticmVhaztjYXNlIj0iOmlyPXNpK1lyK2lyK0FyO2JyZWFrO2Nhc2UiXiI6aXI9WXIuc2xpY2UoMCxDcj1Zci5sZW5ndGg+PjEpK3NpK2lyK0FyK1lyLnNsaWNlKENyKTticmVhaztkZWZhdWx0OmlyPVlyK3NpK2lyK0FyfXJldHVy''@;'; put 'put ''biBoKGlyKX1yZXR1cm4ganQ9dm9pZCAwPT09anQ/NjovW2dwcnNdLy50ZXN0KFh0KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGp0KSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxqdCkpLFpyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHBlKyIifSxacn1yZXR1cm57Zm9ybWF0OlgsZm9y''@;'; put 'put ''bWF0UHJlZml4OmZ1bmN0aW9uIGFlKHBlLGJlKXt2YXIgeGU9WCgoKHBlPV9RKHBlKSkudHlwZT0iZiIscGUpKSxWZT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihmdW5jdGlvbiBkTHQobCl7cmV0dXJuKGw9U0YoTWF0aC5hYnMobCkpKT9sWzFdOk5hTn0oYmUpLzMpKSks''@;'; put 'put ''WmU9TWF0aC5wb3coMTAsLVZlKSxsdD1ZOGVbOCtWZS8zXTtyZXR1cm4gZnVuY3Rpb24oZHQpe3JldHVybiB4ZShaZSpkdCkrbHR9fX19KGwpLGpmPU1GLmZvcm1hdH0oe3Rob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdfSk7Y29uc3QgQ1E9TWF0aC5QSSxTUT0y''@;'; put 'put ''KkNRLFI2PTFlLTYsU0x0PVNRLVI2O2Z1bmN0aW9uIFc4ZShsKXt0aGlzLl8rPWxbMF07Zm9yKGxldCBjPTEsYT1sLmxlbmd0aDtjPGE7KytjKXRoaXMuXys9YXJndW1lbnRzW2NdK2xbY119Y2xhc3MgTVF7Y29uc3RydWN0b3IoYyl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5f''@;'; put 'put ''eTE9bnVsbCx0aGlzLl89IiIsdGhpcy5fYXBwZW5kPW51bGw9PWM/VzhlOmZ1bmN0aW9uIE1MdChsKXtsZXQgYz1NYXRoLmZsb29yKGwpO2lmKCEoYz49MCkpdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRpZ2l0czogJHtsfWApO2lmKGM+MTUpcmV0dXJuIFc4ZTtjb25zdCBhPTEwKipjO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihmKXt0aGlzLl8rPWZbMF07Zm9yKGxldCBkPTEsaD1mLmxlbmd0aDtkPGg7KytkKXRoaXMuXys9TWF0aC5yb3VuZChhcmd1bWVudHNbZF0qYSkvYStmW2RdfX0oYyl9bW92ZVRvKGMsYSl7dGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gwPXRoaXMuX3gxPStjfSwke3RoaXMu''@;'; put 'put ''X3kwPXRoaXMuX3kxPSthfWB9Y2xvc2VQYXRoKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fYXBwZW5kYFpgKX1saW5lVG8oYyxhKXt0aGlzLl9hcHBlbmRgTCR7dGhpcy5feDE9K2N9LCR7dGhpcy5feTE9K2F9YH1xdWFkcmF0''@;'; put 'put ''aWNDdXJ2ZVRvKGMsYSxmLGQpe3RoaXMuX2FwcGVuZGBRJHsrY30sJHsrYX0sJHt0aGlzLl94MT0rZn0sJHt0aGlzLl95MT0rZH1gfWJlemllckN1cnZlVG8oYyxhLGYsZCxoLG0pe3RoaXMuX2FwcGVuZGBDJHsrY30sJHsrYX0sJHsrZn0sJHsrZH0sJHt0aGlzLl94MT0raH0sJHt0aGlzLl95''@;'; put 'put ''MT0rbX1gfWFyY1RvKGMsYSxmLGQsaCl7aWYoYz0rYyxhPSthLGY9K2YsZD0rZCwoaD0raCk8MCl0aHJvdyBuZXcgRXJyb3IoYG5lZ2F0aXZlIHJhZGl1czogJHtofWApO2xldCBtPXRoaXMuX3gxLF89dGhpcy5feTEsTz1mLWMsWD1kLWEsYWU9bS1jLHBlPV8tYSxiZT1hZSphZStwZSpwZTtp''@;'; put 'put ''ZihudWxsPT09dGhpcy5feDEpdGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gxPWN9LCR7dGhpcy5feTE9YX1gO2Vsc2UgaWYoYmU+UjYpaWYoTWF0aC5hYnMocGUqTy1YKmFlKT5SNiYmaCl7bGV0IHhlPWYtbSxWZT1kLV8sWmU9TypPK1gqWCxsdD14ZSp4ZStWZSpWZSxkdD1NYXRoLnNxcnQoWmUp''@;'; put 'put ''LGd0PU1hdGguc3FydChiZSksanQ9aCpNYXRoLnRhbigoQ1EtTWF0aC5hY29zKChaZStiZS1sdCkvKDIqZHQqZ3QpKSkvMikscm49anQvZ3QsWHQ9anQvZHQ7TWF0aC5hYnMocm4tMSk+UjYmJnRoaXMuX2FwcGVuZGBMJHtjK3JuKmFlfSwke2Ercm4qcGV9YCx0aGlzLl9hcHBlbmRgQSR7aH0s''@;'; put 'put ''JHtofSwwLDAsJHsrKHBlKnhlPmFlKlZlKX0sJHt0aGlzLl94MT1jK1h0Kk99LCR7dGhpcy5feTE9YStYdCpYfWB9ZWxzZSB0aGlzLl9hcHBlbmRgTCR7dGhpcy5feDE9Y30sJHt0aGlzLl95MT1hfWB9YXJjKGMsYSxmLGQsaCxtKXtpZihjPStjLGE9K2EsbT0hIW0sKGY9K2YpPDApdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKGBuZWdhdGl2ZSByYWRpdXM6ICR7Zn1gKTtsZXQgXz1mKk1hdGguY29zKGQpLE89ZipNYXRoLnNpbihkKSxYPWMrXyxhZT1hK08scGU9MV5tLGJlPW0/ZC1oOmgtZDtudWxsPT09dGhpcy5feDE/dGhpcy5fYXBwZW5kYE0ke1h9LCR7YWV9YDooTWF0aC5hYnModGhpcy5feDEt''@;'; put 'put ''WCk+UjZ8fE1hdGguYWJzKHRoaXMuX3kxLWFlKT5SNikmJnRoaXMuX2FwcGVuZGBMJHtYfSwke2FlfWAsZiYmKGJlPDAmJihiZT1iZSVTUStTUSksYmU+U0x0P3RoaXMuX2FwcGVuZGBBJHtmfSwke2Z9LDAsMSwke3BlfSwke2MtX30sJHthLU99QSR7Zn0sJHtmfSwwLDEsJHtwZX0sJHt0aGlz''@;'; put 'put ''Ll94MT1YfSwke3RoaXMuX3kxPWFlfWA6YmU+UjYmJnRoaXMuX2FwcGVuZGBBJHtmfSwke2Z9LDAsJHsrKGJlPj1DUSl9LCR7cGV9LCR7dGhpcy5feDE9YytmKk1hdGguY29zKGgpfSwke3RoaXMuX3kxPWErZipNYXRoLnNpbihoKX1gKX1yZWN0KGMsYSxmLGQpe3RoaXMuX2FwcGVuZGBNJHt0''@;'; put 'put ''aGlzLl94MD10aGlzLl94MT0rY30sJHt0aGlzLl95MD10aGlzLl95MT0rYX1oJHtmPStmfXYkeytkfWgkey1mfVpgfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX319ZnVuY3Rpb24gRzhlKCl7cmV0dXJuIG5ldyBNUX1mdW5jdGlvbiBrTHQobCxjLGEsZil7cmV0dXJuIGM9LWMsZj0tZixbbCxj''@;'; put 'put ''XT1bbCphLWMqZixsKmYrYyphXSxbbCxjPS1jXX1mdW5jdGlvbiAkOGUobCxjLGEsZixkLGgsbSl7dmFyIE89RDYoSjhlLmNhbGwodGhpcyxoKSk7bC5kYXRhKFtPXSksdHguY2FsbChsLm5vZGUoKSxPKSxLOGUobCxjLGEsZixkLGgsbSl9ZnVuY3Rpb24gSzhlKGwsYyxhLGYsZCxoLG0pe3Zh''@;'; put 'put ''ciBfPW0uc2hvcnRlbmluZ3x8MCxwZT1bWzAsLTMuNV0sWzEwLDBdLFswLDMuNV0sWzAsLTMuNV1dLGJlPWYtYyx4ZT1kLWEsVmU9TWF0aC5zcXJ0KGJlKmJlK3hlKnhlKTtpZigwPT1WZSl2YXIgWmU9MSxsdD0wO2Vsc2UgWmU9YmUvVmUsbHQ9eGUvVmU7aWYoZj1jKyhWZS1fLTEwLS4xKSpa''@;'; put 'put ''ZSxkPWErKFZlLV8tMTAtLjEpKmx0LGguVVJMfHxoLnRvb2x0aXApdmFyIGR0PWwuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImEiKSxndD1kdC5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwYXRoIiksanQ9ZHQu''@;'; put 'put ''c2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicG9seWdvbiIpO2Vsc2UgZ3Q9bC5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwYXRoIiksanQ9bC5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJwb2x5Z29uIik7dmFyIHJuPUc4ZSgpO3JuLm1vdmVUbyhjLGEpLHJuLmxp''@;'; put 'put ''bmVUbyhmLGQpLGd0LmF0dHIoImQiLHJuKSxmPWMrKFZlLV8tMTApKlplLGQ9YSsoVmUtXy0xMCkqbHQ7Zm9yKHZhciBYdD0wO1h0PHBlLmxlbmd0aDtYdCsrKXBlW1h0XT1rTHQoKHluPXBlW1h0XSlbMF0seW5bMV0sWmUsbHQpO2ZvcihYdD0wO1h0PHBlLmxlbmd0aDtYdCsrKXBlW1h0XT1b''@;'; put 'put ''ZisoeW49cGVbWHRdKVswXSxkK3luWzFdXTt2YXIgUW49W107Zm9yKFh0PTA7WHQ8cGUubGVuZ3RoO1h0Kyspe3ZhciB5bjtRbi5wdXNoKCh5bj1wZVtYdF0pLmpvaW4oIiwiKSl9dmFyIE9yPVFuLmpvaW4oIiAiKTtyZXR1cm4ganQuYXR0cigicG9pbnRzIixPciksdGhpc31mdW5jdGlvbiBx''@;'; put 'put ''OGUoKXtyZXR1cm4gdGhpcy5fZHJhd25FZGdlPyh0aGlzLl9kcmF3bkVkZ2UuZy5yZW1vdmUoKSx0aGlzLl9kcmF3bkVkZ2U9bnVsbCx0aGlzKTp0aGlzfWZ1bmN0aW9uIFg4ZSgpe3JldHVybiB0aGlzLl9kcmF3bkVkZ2U/dGhpcy5fZHJhd25FZGdlLmc6T2EobnVsbCl9ZnVuY3Rpb24gSjhl''@;'; put 'put ''KGwpe3ZhciBjPSIiO2Zvcih2YXIgYSBvZiBPYmplY3Qua2V5cyhsKSludWxsIT1sW2FdJiYoYys9JyAiJythKyciPSInK2xbYV0rJyInKTt2YXIgZD10aGlzLmxheW91dFN5bmMoImRpZ3JhcGgge2EgLT4gYiBbIitjKyJdfSIsInN2ZyIsImRvdCIpLG09KG5ldyB3aW5kb3cuRE9NUGFyc2Vy''@;'; put 'put ''KS5wYXJzZUZyb21TdHJpbmcoZCwiaW1hZ2Uvc3ZnK3htbCIpO3JldHVybiBPYShkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLmFwcGVuZChmdW5jdGlvbigpe3JldHVybiBtLmRvY3VtZW50RWxlbWVudH0pLnNlbGVjdCgiLmVkZ2UiKX1mdW5jdGlvbiBROGUobCxjLGEsZixk''@;'; put 'put ''LGgpe3ZhciBfPUQ2KHJ2ZS5jYWxsKHRoaXMsZixkKSk7cmV0dXJuIGwuZGF0YShbX10pLHR4LmNhbGwobC5ub2RlKCksXyksZXZlKGwsYyxhLGQpLHRoaXN9ZnVuY3Rpb24gZXZlKGwsYyxhLGYsZCl7aWYoZi5VUkx8fGYudG9vbHRpcCl2YXIgaD1sLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFn''@;'; put 'put ''YXRpb24oImciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJhIik7ZWxzZSBoPWw7dmFyIG09aC5zZWxlY3RBbGwoImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksXz1sLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRleHQiKTtpZigwIT1tLnNpemUoKSl7dmFy''@;'; put 'put ''IE89bS5ub2RlKCkuZ2V0QkJveCgpO08uY3g9Ty54K08ud2lkdGgvMixPLmN5PU8ueStPLmhlaWdodC8yfWVsc2UgMCE9Xy5zaXplKCkmJihPPXt4OitfLmF0dHIoIngiKSx5OitfLmF0dHIoInkiKSx3aWR0aDowLGhlaWdodDowLGN4OitfLmF0dHIoIngiKSxjeTorXy5hdHRyKCJ5Iil9KTty''@;'; put 'put ''ZXR1cm4gbS5lYWNoKGZ1bmN0aW9uKFgsYWUpe3ZhciBwZT1PYSh0aGlzKTtpZihwZS5hdHRyKCJjeCIpKXBlLmF0dHIoImN4IixsbShjKSkuYXR0cigiY3kiLGxtKGEpKTtlbHNlIGlmKHBlLmF0dHIoInBvaW50cyIpKXt2YXIgYmU9cGUuYXR0cigicG9pbnRzIikudHJpbSgpO3BlLmF0dHIo''@;'; put 'put ''InBvaW50cyIsZnVuY3Rpb24gVlJ0KGgsYyxhKXt2YXIgZCxmPShkPWguc3BsaXQoIiAiKSkubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBtLnNwbGl0KCIsIil9KTtyZXR1cm4gZj1kLm1hcChmdW5jdGlvbihtKXtyZXR1cm5bbG0oK2MrICttLnNwbGl0KCIsIilbMF0pLGxtKCthKyArbS5zcGxp''@;'; put 'put ''dCgiLCIpWzFdKV19KSwoZD1mLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gbS5qb2luKCIsIil9KSkuam9pbigiICIpfShiZSxjLU8uY3gsYS1PLmN5KSl9ZWxzZXt2YXIgeGU9cGUuYXR0cigiZCIpO3BlLmF0dHIoImQiLGZ1bmN0aW9uIEJSdChsLGMsYSl7KGg9bC5zcGxpdCgvW0EtWiBdLykp''@;'; put 'put ''LnNoaWZ0KCk7dmFyIGY9bC5zcGxpdCgvW15bQS1aIF0rLyksaD0oaC5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG0uc3BsaXQoIiwiKX0pLGgubWFwKGZ1bmN0aW9uKG0pe3JldHVybltsbSgrYysgK20uc3BsaXQoIiwiKVswXSksbG0oK2ErICttLnNwbGl0KCIsIilbMV0pXX0pLm1hcChmdW5j''@;'; put 'put ''dGlvbihtKXtyZXR1cm4gbS5qb2luKCIsIil9KSk7cmV0dXJuIGYucmVkdWNlKGZ1bmN0aW9uKG0sXyxPKXtyZXR1cm4gbS5jb25jYXQoXyxoW09dKX0sW10pLmpvaW4oIiIpfSh4ZSxjLU8uY3gsYS1PLmN5KSl9fSksMCE9Xy5zaXplKCkmJl8uYXR0cigieCIsbG0oK18uYXR0cigieCIpK2Mt''@;'; put 'put ''Ty5jeCkpLmF0dHIoInkiLGxtKCtfLmF0dHIoInkiKSthLU8uY3kpKSx0aGlzfWZ1bmN0aW9uIHR2ZSgpe2lmKCF0aGlzLl9kcmF3bk5vZGUpcmV0dXJuIHRoaXM7dmFyIGw9dGhpcy5fZHJhd25Ob2RlLmc7cmV0dXJuIGwuZW1wdHkoKXx8bC5yZW1vdmUoKSx0aGlzLl9kcmF3bk5vZGU9bnVs''@;'; put 'put ''bCx0aGlzfWZ1bmN0aW9uIG52ZSgpe3JldHVybiB0aGlzLl9kcmF3bk5vZGU/dGhpcy5fZHJhd25Ob2RlLmc6T2EobnVsbCl9ZnVuY3Rpb24gcnZlKGwsYyl7dmFyIGE9IiI7Zm9yKHZhciBmIG9mIE9iamVjdC5rZXlzKGMpKW51bGwhPWNbZl0mJihhKz0nICInK2YrJyI9IicrY1tmXSsnIicp''@;'; put 'put ''O3ZhciBoPXRoaXMubGF5b3V0U3luYygnZ3JhcGggeyInK2wrJyIgWycrYSsiXX0iLCJzdmciLCJkb3QiKSxfPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGgsImltYWdlL3N2Zyt4bWwiKTtyZXR1cm4gT2EoZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp''@;'; put 'put ''KS5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gXy5kb2N1bWVudEVsZW1lbnR9KS5zZWxlY3QoIi5ub2RlIil9ZnVuY3Rpb24ga0YobCl7c2VsZi5kb2N1bWVudD17fSxsLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKGMpe2xldCBhPXNlbGZbIkBocGNjLWpzL3dhc20iXTtu''@;'; put 'put ''dWxsPT1hJiZjLmRhdGEudml6VVJMJiYoaW1wb3J0U2NyaXB0cyhjLmRhdGEudml6VVJMKSxhPXNlbGZbIkBocGNjLWpzL3dhc20iXSksInZlcnNpb24iIT1jLmRhdGEudHlwZT9hLkdyYXBodml6LmxvYWQoKS50aGVuKGY9Pntjb25zdCBkPWYubGF5b3V0KGMuZGF0YS5kb3QsInN2ZyIsYy5k''@;'; put 'put ''YXRhLmVuZ2luZSxjLmRhdGEub3B0aW9ucyk7bC5wb3N0TWVzc2FnZShkP3t0eXBlOiJkb25lIixzdmc6ZH06Yy5kYXRhLnZpelVSTD97dHlwZToiaW5pdCJ9Ont0eXBlOiJza2lwIn0pfSkuY2F0Y2goZj0+e2wucG9zdE1lc3NhZ2Uoe3R5cGU6ImVycm9yIixlcnJvcjpmLm1lc3NhZ2V9KX0p''@;'; put 'put ''OmEuR3JhcGh2aXoubG9hZCgpLnRoZW4oZj0+e2wucG9zdE1lc3NhZ2Uoe3R5cGU6InZlcnNpb24iLHZlcnNpb246Zi52ZXJzaW9uKCl9KX0pfSl9ZnVuY3Rpb24gTEx0KCl7a0Yoc2VsZil9ZnVuY3Rpb24gUEx0KCl7c2VsZi5vbmNvbm5lY3Q9ZnVuY3Rpb24obCl7Y29uc3QgYz1sLnBvcnRz''@;'; put 'put ''WzBdO2tGKGMpLGMuc3RhcnQoKX19ZnVuY3Rpb24ga1EobCxjKXtpZih0aGlzLl9vcHRpb25zPXt1c2VXb3JrZXI6ITAsdXNlU2hhcmVkV29ya2VyOiExLGVuZ2luZToiZG90IixrZXlNb2RlOiJ0aXRsZSIsZmFkZTohMCx0d2VlblBhdGhzOiEwLHR3ZWVuU2hhcGVzOiEwLGNvbnZlcnRFcXVh''@;'; put 'put ''bFNpZGVkUG9seWdvbnM6ITAsdHdlZW5QcmVjaXNpb246MSxncm93RW50ZXJpbmdFZGdlczohMCx6b29tOiEwLHpvb21TY2FsZUV4dGVudDpbLjEsMTBdLHpvb21UcmFuc2xhdGVFeHRlbnQ6W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sd2lkdGg6bnVsbCxoZWlnaHQ6bnVsbCxzY2FsZToxLGZp''@;'; put 'put ''dDohMX0sYyBpbnN0YW5jZW9mIE9iamVjdClmb3IodmFyIGEgb2YgT2JqZWN0LmtleXMoYykpdGhpcy5fb3B0aW9uc1thXT1jW2FdO2Vsc2UiYm9vbGVhbiI9PXR5cGVvZiBjJiYodGhpcy5fb3B0aW9ucy51c2VXb3JrZXI9Yyk7dmFyIGY9dGhpcy5fb3B0aW9ucy51c2VXb3JrZXIsZD10aGlz''@;'; put 'put ''Ll9vcHRpb25zLnVzZVNoYXJlZFdvcmtlcjtpZih0eXBlb2YgV29ya2VyPiJ1IiYmKGY9ITEpLHR5cGVvZiBTaGFyZWRXb3JrZXI+InUiJiYoZD0hMSksZnx8ZCl7dmFyIG09WUooInNjcmlwdCIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJqYXZhc2NyaXB0L3dvcmtlciI9PU9hKHRoaXMp''@;'; put 'put ''LmF0dHIoInR5cGUiKXx8T2EodGhpcykuYXR0cigic3JjIikmJk9hKHRoaXMpLmF0dHIoInNyYyIpLm1hdGNoKC8uKlwvQGhwY2MtanNcL3dhc20vKX0pOzA9PW0uc2l6ZSgpPyhjb25zb2xlLndhcm4oJ05vIHNjcmlwdCB0YWcgb2YgdHlwZSAiamF2YXNjcmlwdC93b3JrZXIiIHdhcyBmb3Vu''@;'; put 'put ''ZCBhbmQgInVzZVdvcmtlciIgaXMgdHJ1ZS4gTm90IHVzaW5nIHdlYiB3b3JrZXIuJyksZj0hMSxkPSExKToodGhpcy5fdml6VVJMPW0uYXR0cigic3JjIiksdGhpcy5fdml6VVJMfHwoY29uc29sZS53YXJuKCdObyAic3JjIiBhdHRyaWJ1dGUgb2Ygd2FzIGZvdW5kIG9uIHRoZSAiamF2YXNj''@;'; put 'put ''cmlwdC93b3JrZXIiIHNjcmlwdCB0YWcgYW5kICJ1c2VXb3JrZXIiIGlzIHRydWUuIE5vdCB1c2luZyB3ZWIgd29ya2VyLicpLGY9ITEsZD0hMSkpfWlmKGQpe2NvbnN0IFg9ImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdDtiYXNlNjQsIitidG9hKGtGLnRvU3RyaW5nKCkrIigiK1BMdC50''@;'; put 'put ''b1N0cmluZygpKyIpKCkiKTt0aGlzLl93b3JrZXI9dGhpcy5fd29ya2VyPW5ldyBTaGFyZWRXb3JrZXIoWCksdGhpcy5fd29ya2VyUG9ydD10aGlzLl93b3JrZXIucG9ydCx0aGlzLl93b3JrZXJQb3J0Q2xvc2U9dGhpcy5fd29ya2VyLnBvcnQuY2xvc2UuYmluZCh0aGlzLl93b3JrZXJQb3J0''@;'; put 'put ''KSx0aGlzLl93b3JrZXIucG9ydC5zdGFydCgpLHRoaXMuX3dvcmtlckNhbGxiYWNrcz1bXX1lbHNlIGlmKGYpe3ZhciBfPW5ldyBCbG9iKFtrRi50b1N0cmluZygpKyIoIitMTHQudG9TdHJpbmcoKSsiKSgpIl0pLE89d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoXyk7dGhpcy5fd29ya2Vy''@;'; put 'put ''PW5ldyBXb3JrZXIoTyksdGhpcy5fd29ya2VyUG9ydD10aGlzLl93b3JrZXIsdGhpcy5fd29ya2VyUG9ydENsb3NlPXRoaXMuX3dvcmtlci50ZXJtaW5hdGUuYmluZCh0aGlzLl93b3JrZXIpLHRoaXMuX3dvcmtlckNhbGxiYWNrcz1bXX1lbHNlIHdGLmxvYWQoKS50aGVuKChYPT57dGhpcy5f''@;'; put 'put ''Z3JhcGh2aXpWZXJzaW9uPVgudmVyc2lvbigpfSkuYmluZCh0aGlzKSk7dGhpcy5fc2VsZWN0aW9uPWwsdGhpcy5fYWN0aXZlPSExLHRoaXMuX2J1c3k9ITEsdGhpcy5fam9icz1bXSx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9rZXlNb2Rlcz1uZXcgU2V0KFsidGl0bGUiLCJpZCIsInRhZy1pbmRl''@;'; put 'put ''eCIsImluZGV4Il0pLHRoaXMuX2ltYWdlcz1bXSx0aGlzLl90cmFuc2xhdGlvbj12b2lkIDAsdGhpcy5fc2NhbGU9dm9pZCAwLHRoaXMuX2V2ZW50VHlwZXM9WyJpbml0RW5kIiwic3RhcnQiLCJsYXlvdXRTdGFydCIsImxheW91dEVuZCIsImRhdGFFeHRyYWN0RW5kIiwiZGF0YVByb2Nlc3NQ''@;'; put 'put ''YXNzMUVuZCIsImRhdGFQcm9jZXNzUGFzczJFbmQiLCJkYXRhUHJvY2Vzc0VuZCIsInJlbmRlclN0YXJ0IiwicmVuZGVyRW5kIiwidHJhbnNpdGlvblN0YXJ0IiwidHJhbnNpdGlvbkVuZCIsInJlc3RvcmVFbmQiLCJlbmQiLCJ6b29tIl0sdGhpcy5fZGlzcGF0Y2g9V0ooLi4udGhpcy5fZXZl''@;'; put 'put ''bnRUeXBlcyksalJ0LmNhbGwodGhpcyksbC5ub2RlKCkuX19ncmFwaHZpel9fPXRoaXN9ZnVuY3Rpb24gRUYobCxjKXtyZXR1cm4gT2EobCkuZ3JhcGh2aXooYyl9RzhlLnByb3RvdHlwZT1NUS5wcm90b3R5cGUsa1EucHJvdG90eXBlPUVGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6a1EsZW5n''@;'; put 'put ''aW5lOmZ1bmN0aW9uIGVMdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5lbmdpbmU9bCx0aGlzfSxhZGRJbWFnZTpmdW5jdGlvbiB0THQobCxjLGEpe3JldHVybiB0aGlzLl9pbWFnZXMucHVzaCh7cGF0aDpsLHdpZHRoOmMsaGVpZ2h0OmF9KSx0aGlzfSxrZXlNb2RlOmZ1bmN0aW9uIG5MdChs''@;'; put 'put ''KXtpZighdGhpcy5fa2V5TW9kZXMuaGFzKGwpKXRocm93IEVycm9yKCJJbGxlZ2FsIGtleU1vZGU6ICIrbCk7aWYobCE9dGhpcy5fb3B0aW9ucy5rZXlNb2RlJiZudWxsIT10aGlzLl9kYXRhKXRocm93IEVycm9yKCJUb28gbGF0ZSB0byBjaGFuZ2Uga2V5TW9kZSIpO3JldHVybiB0aGlzLl9v''@;'; put 'put ''cHRpb25zLmtleU1vZGU9bCx0aGlzfSxmYWRlOmZ1bmN0aW9uIHJMdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5mYWRlPWwsdGhpc30sdHdlZW5QYXRoczpmdW5jdGlvbiBpTHQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMudHdlZW5QYXRocz1sLHRoaXN9LHR3ZWVuU2hhcGVzOmZ1bmN0aW9u''@;'; put 'put ''IG9MdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50d2VlblNoYXBlcz1sLGwmJih0aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHM9ITApLHRoaXN9LGNvbnZlcnRFcXVhbFNpZGVkUG9seWdvbnM6ZnVuY3Rpb24gYUx0KGwpe3JldHVybiB0aGlzLl9vcHRpb25zLmNvbnZlcnRFcXVhbFNpZGVkUG9s''@;'; put 'put ''eWdvbnM9bCx0aGlzfSx0d2VlblByZWNpc2lvbjpmdW5jdGlvbiBsTHQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb249bCx0aGlzfSxncm93RW50ZXJpbmdFZGdlczpmdW5jdGlvbiBzTHQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXM9bCx0''@;'; put 'put ''aGlzfSx6b29tOmZ1bmN0aW9uIGNSdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy56b29tPWwsdGhpcy5fb3B0aW9ucy56b29tJiYhdGhpcy5fem9vbUJlaGF2aW9yP1I4ZS5jYWxsKHRoaXMpOiF0aGlzLl9vcHRpb25zLnpvb20mJnRoaXMuX3pvb21CZWhhdmlvciYmKHRoaXMuX3pvb21TZWxl''@;'; put 'put ''Y3Rpb24ub24oIi56b29tIixudWxsKSx0aGlzLl96b29tQmVoYXZpb3I9bnVsbCksdGhpc30scmVzZXRab29tOmZ1bmN0aW9uIGZSdChsKXt2YXIgYz10aGlzLl96b29tU2VsZWN0aW9uO3JldHVybiBsJiYoYz1jLnRyYW5zaXRpb24obCkpLGMuY2FsbCh0aGlzLl96b29tQmVoYXZpb3IudHJh''@;'; put 'put ''bnNmb3JtLHRoaXMuX29yaWdpbmFsVHJhbnNmb3JtKSx0aGlzfSx6b29tQmVoYXZpb3I6ZnVuY3Rpb24gcFJ0KCl7cmV0dXJuIHRoaXMuX3pvb21CZWhhdmlvcnx8bnVsbH0sem9vbVNlbGVjdGlvbjpmdW5jdGlvbiBtUnQoKXtyZXR1cm4gdGhpcy5fem9vbVNlbGVjdGlvbnx8bnVsbH0sem9v''@;'; put 'put ''bVNjYWxlRXh0ZW50OmZ1bmN0aW9uIGRSdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy56b29tU2NhbGVFeHRlbnQ9bCx0aGlzfSx6b29tVHJhbnNsYXRlRXh0ZW50OmZ1bmN0aW9uIGhSdChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy56b29tVHJhbnNsYXRlRXh0ZW50PWwsdGhpc30scmVuZGVy''@;'; put 'put ''OmZ1bmN0aW9uIHdSdChsKXtyZXR1cm4gdGhpcy5fYnVzeT8odGhpcy5fcXVldWUucHVzaCh0aGlzLnJlbmRlci5iaW5kKHRoaXMsbCkpLHRoaXMpOih0aGlzLl9kaXNwYXRjaC5jYWxsKCJyZW5kZXJTdGFydCIsdGhpcyksdGhpcy5fdHJhbnNpdGlvbkZhY3Rvcnk/ckYoZnVuY3Rpb24oKXt0''@;'; put 'put ''aGlzLl90cmFuc2l0aW9uPWFRKHRoaXMuX3RyYW5zaXRpb25GYWN0b3J5KCkpLEY4ZS5jYWxsKHRoaXMsbCl9LmJpbmQodGhpcyksMCk6RjhlLmNhbGwodGhpcyxsKSx0aGlzKX0sbGF5b3V0OmZ1bmN0aW9uIHpSdChsLGMsYSxmKXtpZih0aGlzLl93b3JrZXIpYlEuY2FsbCh0aGlzLHt0eXBl''@;'; put 'put ''OiJsYXlvdXQiLGRvdDpsLGVuZ2luZTpjLG9wdGlvbnM6YX0sZnVuY3Rpb24oaCl7Zi5jYWxsKHRoaXMsaC5kYXRhKX0pO2Vsc2UgdHJ5e3ZhciBkPXRoaXMubGF5b3V0U3luYyhsLCJzdmciLGMsYSk7Zi5jYWxsKHRoaXMse3R5cGU6ImRvbmUiLHN2ZzpkfSl9Y2F0Y2goaCl7Zi5jYWxsKHRo''@;'; put 'put ''aXMse3R5cGU6ImVycm9yIixlcnJvcjpoLm1lc3NhZ2V9KX19LGRvdDpmdW5jdGlvbiBVUnQobCxjKXt2YXIgYT10aGlzLGQ9dGhpcy5fb3B0aW9ucy5lbmdpbmUsaD10aGlzLl9pbWFnZXM7cmV0dXJuIHRoaXMuX2Rpc3BhdGNoLmNhbGwoInN0YXJ0Iix0aGlzKSx0aGlzLl9idXN5PSEwLHRo''@;'; put 'put ''aXMuX2Rpc3BhdGNoLmNhbGwoImxheW91dFN0YXJ0Iix0aGlzKSx0aGlzLl93b3JrZXJ8fG51bGwhPXRoaXMubGF5b3V0U3luYz8odGhpcy5sYXlvdXQobCxkLHtpbWFnZXM6aH0sZnVuY3Rpb24oXyl7c3dpdGNoKF8udHlwZSl7Y2FzZSJlcnJvciI6aWYoIWEuX29uZXJyb3IpdGhyb3cgXy5l''@;'; put 'put ''cnJvci5tZXNzYWdlO2EuX29uZXJyb3IoXy5lcnJvcik7YnJlYWs7Y2FzZSJkb25lIjpaUnQuY2FsbCh0aGlzLF8uc3ZnLGMpfX0pLHRoaXMpOih0aGlzLl9hZnRlckluaXQ9dGhpcy5kb3QuYmluZCh0aGlzLGwsYyksdGhpcyl9LGRhdGE6ZnVuY3Rpb24geVJ0KCl7cmV0dXJuIHRoaXMuX2Rh''@;'; put 'put ''dGF8fG51bGx9LHJlbmRlckRvdDpmdW5jdGlvbiBZUnQobCxjKXt2YXIgYT10aGlzO3JldHVybiB0aGlzLmRvdChsLGZ1bmN0aW9uIGYoKXthLnJlbmRlcihjKX0pLHRoaXN9LHRyYW5zaXRpb246ZnVuY3Rpb24gV1J0KGwpe3JldHVybiBsIGluc3RhbmNlb2YgRnVuY3Rpb24/dGhpcy5fdHJh''@;'; put 'put ''bnNpdGlvbkZhY3Rvcnk9bDp0aGlzLl90cmFuc2l0aW9uPWFRKGwpLHRoaXN9LGFjdGl2ZTpmdW5jdGlvbiBHUnQobCl7dmFyIGE9dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpO3JldHVybiAwIT1hLnNpemUoKT9mdW5jdGlvbiBVSXQobCxjKXt2''@;'; put 'put ''YXIgZixkLGE9bC5fX3RyYW5zaXRpb247aWYoYSlmb3IoZCBpbiBjPW51bGw9PWM/bnVsbDpjKyIiLGEpaWYoKGY9YVtkXSkuc3RhdGU+MSYmZi5uYW1lPT09YylyZXR1cm4gbmV3IG4yKFtbbF1dLHpJdCxjLCtkKTtyZXR1cm4gbnVsbH0oYS5ub2RlKCksbCk6bnVsbH0sb3B0aW9uczpmdW5j''@;'; put 'put ''dGlvbiAkUnQobCl7aWYodHlwZW9mIGw+InUiKXJldHVybiBPYmplY3QuYXNzaWduKHt9LHRoaXMuX29wdGlvbnMpO2Zvcih2YXIgYyBvZiBPYmplY3Qua2V5cyhsKSl0aGlzLl9vcHRpb25zW2NdPWxbY107cmV0dXJuIHRoaXN9LHdpZHRoOmZ1bmN0aW9uIEtSdChsKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''b3B0aW9ucy53aWR0aD1sLHRoaXN9LGhlaWdodDpmdW5jdGlvbiBxUnQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuaGVpZ2h0PWwsdGhpc30sc2NhbGU6ZnVuY3Rpb24gWFJ0KGwpe3JldHVybiB0aGlzLl9vcHRpb25zLnNjYWxlPWwsdGhpc30sZml0OmZ1bmN0aW9uIEpSdChsKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fb3B0aW9ucy5maXQ9bCx0aGlzfSxhdHRyaWJ1dGVyOmZ1bmN0aW9uIFFSdChsKXtyZXR1cm4gdGhpcy5fYXR0cmlidXRlcj1sLHRoaXN9LG9uOmZ1bmN0aW9uIHVMdChsLGMpe3JldHVybiB0aGlzLl9kaXNwYXRjaC5vbihsLGMpLHRoaXN9LG9uZXJyb3I6ZnVuY3Rpb24gY0x0KGwp''@;'; put 'put ''e3JldHVybiB0aGlzLl9vbmVycm9yPWwsdGhpc30sbG9nRXZlbnRzOmZ1bmN0aW9uIHdMdChsKXt2YXIgYz1EYXRlLm5vdygpLGE9e30sZj10aGlzLl9ldmVudFR5cGVzLGQ9TWF0aC5tYXgoLi4uZi5tYXAoTz0+Ty5sZW5ndGgpKTtmb3IobGV0IE89MDtPPGYubGVuZ3RoO08rKyl7bGV0IFg9''@;'; put 'put ''ZltPXTthW1hdPVtdO3ZhciBtLF8saD10aGlzO3RoaXMub24oWCsiLmxvZyIsbD9mdW5jdGlvbigpe3ZhciBhZT1EYXRlLm5vdygpLHBlPWFbWF0ubGVuZ3RoO2FbWF0ucHVzaChhZSk7dmFyIGJlPSIiO2lmKGJlKz0iRXZlbnQgIixiZSs9amYoIiA+MiIpKE8pKyIgIixiZSs9WCsiICIucmVw''@;'; put 'put ''ZWF0KGQtWC5sZW5ndGgpLGJlKz1qZigiID41IikoYWUtYykrIiAiLCJpbml0RW5kIiE9WCYmKGJlKz1qZigiID41IikoYWUtYS5zdGFydFtwZV0pKSwiZGF0YVByb2Nlc3NFbmQiPT1YJiYoYmUrPSIgcHJlcGFyZSAgICAgICAgICAgICAgICAgIitqZigiID41IikoYWUtYS5sYXlvdXRFbmRb''@;'; put 'put ''cGVdKSksInJlbmRlckVuZCI9PVgmJmguX3RyYW5zaXRpb24mJihiZSs9IiB0cmFuc2l0aW9uIHN0YXJ0IG1hcmdpbiAiK2pmKCIgPjUiKShoLl90cmFuc2l0aW9uLmRlbGF5KCktKGFlLWEucmVuZGVyU3RhcnRbcGVdKSksbT1oLl90cmFuc2l0aW9uLmRlbGF5KCksXz1oLl90cmFuc2l0aW9u''@;'; put 'put ''LmR1cmF0aW9uKCkpLCJ0cmFuc2l0aW9uU3RhcnQiPT1YKXt2YXIgeGU9YWUtYS5yZW5kZXJTdGFydFtwZV07YmUrPSIgdHJhbnNpdGlvbiBkZWxheSAgICAgICAgIitqZigiID41IikoYWUtYS5yZW5kZXJTdGFydFtwZV0pLGJlKz0iIGV4cGVjdGVkICIramYoIiA+NSIpKG0pLGJlKz0iIGRp''@;'; put 'put ''ZmYgIitqZigiID41IikoeGUtbSl9aWYoInRyYW5zaXRpb25FbmQiPT1YKXt2YXIgVmU9YWUtYS50cmFuc2l0aW9uU3RhcnRbcGVdO2JlKz0iIHRyYW5zaXRpb24gZHVyYXRpb24gICAgICIramYoIiA+NSIpKFZlKSxiZSs9IiBleHBlY3RlZCAiK2pmKCIgPjUiKShfKSxiZSs9IiBkaWZmICIr''@;'; put 'put ''amYoIiA+NSIpKFZlLV8pfWNvbnNvbGUubG9nKGJlKSxjPWFlfTpudWxsKX1yZXR1cm4gdGhpc30sZGVzdHJveTpmdW5jdGlvbiBDTHQoKXtyZXR1cm4gZGVsZXRlIHRoaXMuX3NlbGVjdGlvbi5ub2RlKCkuX19ncmFwaHZpel9fLHRoaXMuX3dvcmtlciYmdGhpcy5fd29ya2VyUG9ydENsb3Nl''@;'; put 'put ''KCksdGhpc30sZHJhd0VkZ2U6ZnVuY3Rpb24gRUx0KGwsYyxhLGYsZCxoPXt9KXtpZigoZD1PYmplY3QuYXNzaWduKHt9LGQpKS5zdHlsZSYmZC5zdHlsZS5pbmNsdWRlcygiaW52aXMiKSl2YXIgbT1PYShudWxsKTtlbHNle3ZhciBYPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0''@;'; put 'put ''YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikscGU9RDYoSjhlLmNhbGwodGhpcyxkKSk7bT1YLmFwcGVuZCgiZyIpLmRhdGEoW3BlXSksdHguY2FsbChtLm5vZGUoKSxwZSksJDhlLmNhbGwodGhpcyxtLGwsYyxhLGYsZCxoKX1yZXR1cm4gdGhp''@;'; put 'put ''cy5fZHJhd25FZGdlPXtnOm0seDE6bCx5MTpjLHgyOmEseTI6ZixhdHRyaWJ1dGVzOmR9LHRoaXN9LHVwZGF0ZURyYXduRWRnZTpmdW5jdGlvbiB4THQobCxjLGEsZixkPXt9LGg9e30pe2lmKCF0aGlzLl9kcmF3bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4gZHJhd24iKTt2''@;'; put 'put ''YXIgbT10aGlzLl9kcmF3bkVkZ2UuZztyZXR1cm4gZD1PYmplY3QuYXNzaWduKHRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVzLGQpLHRoaXMuX2RyYXduRWRnZS54MT1sLHRoaXMuX2RyYXduRWRnZS55MT1jLHRoaXMuX2RyYXduRWRnZS54Mj1hLHRoaXMuX2RyYXduRWRnZS55Mj1mLCFtLmVt''@;'; put 'put ''cHR5KCl8fGQuc3R5bGUmJmQuc3R5bGUuaW5jbHVkZXMoImludmlzIil8fChtPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuYXBwZW5kKCJnIiksdGhpcy5fZHJhd25FZGdlLmc9bSks''@;'; put 'put ''bS5lbXB0eSgpfHwkOGUuY2FsbCh0aGlzLG0sbCxjLGEsZixkLGgpLHRoaXN9LG1vdmVEcmF3bkVkZ2VFbmRQb2ludDpmdW5jdGlvbiBBTHQobCxjLGE9e30pe2lmKCF0aGlzLl9kcmF3bkVkZ2UpdGhyb3cgRXJyb3IoIk5vIGVkZ2UgaGFzIGJlZW4gZHJhd24iKTt2YXIgZj10aGlzLl9kcmF3''@;'; put 'put ''bkVkZ2UuZyxkPXRoaXMuX2RyYXduRWRnZS54MSxoPXRoaXMuX2RyYXduRWRnZS55MSxtPXRoaXMuX2RyYXduRWRnZS5hdHRyaWJ1dGVzO3JldHVybiB0aGlzLl9kcmF3bkVkZ2UueDI9bCx0aGlzLl9kcmF3bkVkZ2UueTI9YyxLOGUoZixkLGgsbCxjLG0sYSksdGhpc30saW5zZXJ0RHJhd25F''@;'; put 'put ''ZGdlOmZ1bmN0aW9uIFRMdChsKXtpZighdGhpcy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBiZWVuIGRyYXduIik7dmFyIGM9dGhpcy5fZHJhd25FZGdlLmc7aWYoYy5lbXB0eSgpKXJldHVybiB0aGlzO2Muc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigidGl0bGUi''@;'; put 'put ''KS50ZXh0KGwpO3ZhciBtPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIiksXz1tLmRhdHVtKCksTz10aGlzLl9leHRyYWN0RGF0YShjLF8uY2hpbGRyZW4ubGVuZ3RoLG0uZGF0dW0oKSk7''@;'; put 'put ''cmV0dXJuIF8uY2hpbGRyZW4ucHVzaChPKSxkUShjLE8pLHRoaXMuX2RyYXduRWRnZT1udWxsLHRoaXN9LHJlbW92ZURyYXduRWRnZTpxOGUscmVtb3ZlRHJhd25FZGdlOnE4ZSxkcmF3bkVkZ2VTZWxlY3Rpb246WDhlLGRyYXduRWRnZVNlbGVjdGlvbjpYOGUsZHJhd05vZGU6ZnVuY3Rpb24g''@;'; put 'put ''T0x0KGwsYyxhLGY9e30sZD17fSl7aWYoKGY9T2JqZWN0LmFzc2lnbih7fSxmKSkuc3R5bGUmJmYuc3R5bGUuaW5jbHVkZXMoImludmlzIikpdmFyIGg9T2EobnVsbCk7ZWxzZXt2YXIgTz10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIikuc2VsZWN0''@;'; put 'put ''V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLGFlPUQ2KHJ2ZS5jYWxsKHRoaXMsYSxmKSk7aD1PLmFwcGVuZCgiZyIpLmRhdGEoW2FlXSksdHguY2FsbChoLm5vZGUoKSxhZSksUThlLmNhbGwodGhpcyxoLGwsYyxhLGYsZCl9cmV0dXJuIHRoaXMuX2RyYXduTm9kZT17ZzpoLG5vZGVJZDph''@;'; put 'put ''LHg6bCx5OmMsYXR0cmlidXRlczpmfSx0aGlzfSx1cGRhdGVEcmF3bk5vZGU6ZnVuY3Rpb24gREx0KGwsYyxhLGY9e30sZD17fSl7aWYoIXRoaXMuX2RyYXduTm9kZSl0aHJvdyBFcnJvcigiTm8gbm9kZSBoYXMgYmVlbiBkcmF3biIpO3ZhciBoPXRoaXMuX2RyYXduTm9kZS5nO3JldHVybiBu''@;'; put 'put ''dWxsPT1hJiYoYT10aGlzLl9kcmF3bk5vZGUubm9kZUlkKSxmPU9iamVjdC5hc3NpZ24odGhpcy5fZHJhd25Ob2RlLmF0dHJpYnV0ZXMsZiksdGhpcy5fZHJhd25Ob2RlLm5vZGVJZD1hLHRoaXMuX2RyYXduTm9kZS54PWwsdGhpcy5fZHJhd25Ob2RlLnk9YywhaC5lbXB0eSgpfHxmLnN0eWxl''@;'; put 'put ''JiZmLnN0eWxlLmluY2x1ZGVzKCJpbnZpcyIpfHwoaD10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLmFwcGVuZCgiZyIpLHRoaXMuX2RyYXduTm9kZS5nPWgpLGguZW1wdHkoKXx8UThl''@;'; put 'put ''LmNhbGwodGhpcyxoLGwsYyxhLGYsZCksdGhpc30sbW92ZURyYXduTm9kZTpmdW5jdGlvbiBJTHQobCxjLGE9e30pe2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJyb3IoIk5vIG5vZGUgaGFzIGJlZW4gZHJhd24iKTt2YXIgZj10aGlzLl9kcmF3bk5vZGUuZyxkPXRoaXMuX2RyYXduTm9k''@;'; put 'put ''ZS5hdHRyaWJ1dGVzO3JldHVybiB0aGlzLl9kcmF3bk5vZGUueD1sLHRoaXMuX2RyYXduTm9kZS55PWMsZi5lbXB0eSgpfHxldmUoZixsLGMsZCksdGhpc30saW5zZXJ0RHJhd25Ob2RlOmZ1bmN0aW9uIFJMdChsKXtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2RlIGhh''@;'; put 'put ''cyBiZWVuIGRyYXduIik7bnVsbD09bCYmKGw9dGhpcy5fZHJhd25Ob2RlLm5vZGVJZCk7dmFyIGM9dGhpcy5fZHJhd25Ob2RlLmc7aWYoYy5lbXB0eSgpKXJldHVybiB0aGlzO3ZhciBhPXRoaXMuX2RyYXduTm9kZS5hdHRyaWJ1dGVzO2lmKGMuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlv''@;'; put 'put ''bigidGl0bGUiKS50ZXh0KGwpLGEuVVJMfHxhLnRvb2x0aXApdmFyIGg9Yy5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiYSIpLF89KGguc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZWxsaXBzZSxwb2x5Z29uLHBh''@;'; put 'put ''dGgscG9seWxpbmUiKSxoLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRleHQiKSk7ZWxzZSBjLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksXz1jLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRleHQiKTtf''@;'; put 'put ''LnRleHQoYS5sYWJlbHx8bCk7dmFyIGFlPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikscGU9YWUuZGF0dW0oKSxiZT10aGlzLl9leHRyYWN0RGF0YShjLHBlLmNoaWxkcmVuLmxlbmd0''@;'; put 'put ''aCxhZS5kYXR1bSgpKTtyZXR1cm4gcGUuY2hpbGRyZW4ucHVzaChiZSksZFEoYyxiZSksdGhpcy5fZHJhd25Ob2RlPW51bGwsdGhpc30scmVtb3ZlRHJhd25Ob2RlOnR2ZSxyZW1vdmVEcmF3bk5vZGU6dHZlLGRyYXduTm9kZVNlbGVjdGlvbjpudmUsZHJhd25Ob2RlU2VsZWN0aW9uOm52ZSxn''@;'; put 'put ''cmFwaHZpelZlcnNpb246ZnVuY3Rpb24gQ1J0KCl7cmV0dXJuIHRoaXMuX2dyYXBodml6VmVyc2lvbn19LGs2LnByb3RvdHlwZS5ncmFwaHZpej1mdW5jdGlvbiBGTHQobCl7dmFyIGM9dGhpcy5ub2RlKCkuX19ncmFwaHZpel9fO3JldHVybiBjPyhjLm9wdGlvbnMobCksckYoZnVuY3Rpb24o''@;'; put 'put ''KXtjLl9kaXNwYXRjaC5jYWxsKCJpbml0RW5kIix0aGlzKX0uYmluZCh0aGlzKSwwKSk6Yz1uZXcga1EodGhpcyxsKSxjfSxrNi5wcm90b3R5cGUuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbj1mdW5jdGlvbiBITHQobCl7cmV0dXJuIE9hKHRoaXMuc2l6ZSgpPjA/dGhpcy5ub2RlKCku''@;'; put 'put ''cXVlcnlTZWxlY3RvcihsKTpudWxsKX07dmFyIE5MdD1UKDg4NzAwKTtmdW5jdGlvbiBWTHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwyOCl9ZnVuY3Rpb24gQkx0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDI5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5saWJyYXJpZXNTZWFyY2g9IiIsWnQoZC5saWJyYXJ5T25GaWx0ZXIoKSl9KSxDZSgpfX1mdW5jdGlvbiBqTHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiwyMikoMSwiZGl2IiwyMykoMiwiaW5wdXQi''@;'; put 'put ''LDI0LDI1KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubGlicmFyaWVzU2VhcmNoPWQpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLENlKCksdHQoNCxWTHQsMSwwLCJjbHIt''@;'; put 'put ''aWNvbiIsMjYpLHR0KDUsQkx0LDEsMCwiY2xyLWljb24iLDI3KSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoKTtTZSgyKSxSZSgibmdNb2RlbCIsZi5saWJyYXJpZXNTZWFyY2gpLFNlKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxTZSgxKSxSZSgibmdJZiIsYS52''@;'; put 'put ''YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIHpMdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDI4KX1mdW5jdGlvbiBVTHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMjkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKSxHZSgpO2NvbnN0IGQ9UWkoMyks''@;'; put 'put ''aD1HZSgyKS4kaW1wbGljaXQsbT1HZSgpO3JldHVybiBkLnZhbHVlPSIiLGguc2VhcmNoU3RyaW5nPSIiLFp0KG0udHJlZU9uRmlsdGVyKGgsInRhYmxlcy5UQUJMRU5BTUUiKSl9KSxDZSgpfX1mdW5jdGlvbiBaTHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1u''@;'; put 'put ''b2RlIiwyMikoMSwiZGl2IiwyMykoMiwiaW5wdXQiLDM1LDM2KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLiRpbXBsaWNpdC5zZWFyY2hTdHJpbmc9ZCl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKS4kaW1wbGlj''@;'; put 'put ''aXQ7cmV0dXJuIFp0KEdlKCkudHJlZU9uRmlsdGVyKGQsInRhYmxlcy5UQUJMRU5BTUUiKSl9KSxDZSgpLHR0KDQsekx0LDEsMCwiY2xyLWljb24iLDI2KSx0dCg1LFVMdCwxLDAsImNsci1pY29uIiwyNyksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1RaSgzKSxmPUdlKDIpLiRpbXBsaWNpdDtT''@;'; put 'put ''ZSgyKSxSZSgibmdNb2RlbCIsZi5zZWFyY2hTdHJpbmcpLFNlKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxTZSgxKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIFlMdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDI4KX1mdW5jdGlvbiBXTHQobCxjKXtp''@;'; put 'put ''ZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMjkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKSxHZSgpO2NvbnN0IGQ9UWkoMyksaD1HZSgpLiRpbXBsaWNpdCxtPUdlKDMpO3JldHVybiBkLnZhbHVlPSIiLGguc2VhcmNoU3RyaW5nPSIiLFp0KG0udHJlZU9uRmlsdGVy''@;'; put 'put ''KGgsImNvbHVtbnMuQ09MTkFNRSIpKX0pLENlKCl9fWZ1bmN0aW9uIEdMdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDIyKSgxLCJkaXYiLDIzKSgyLCJpbnB1dCIsMzksMzYpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQo''@;'; put 'put ''YSksWnQoR2UoKS4kaW1wbGljaXQuc2VhcmNoU3RyaW5nPWQpfSkoImtleXVwIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKDMpLnRyZWVPbkZpbHRlcihkLCJjb2x1bW5zLkNPTE5BTUUiKSl9KSxDZSgpLHR0KDQsWUx0LDEsMCwiY2xyLWlj''@;'; put 'put ''b24iLDI2KSx0dCg1LFdMdCwxLDAsImNsci1pY29uIiwyNyksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1RaSgzKSxmPUdlKCkuJGltcGxpY2l0O1NlKDIpLFJlKCJuZ01vZGVsIixmLnNlYXJjaFN0cmluZyksU2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lm''@;'; put 'put ''IixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gJEx0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsNDApLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdCxtPUdlKCkuJGltcGxpY2l0LF89R2Uo''@;'; put 'put ''MikuJGltcGxpY2l0O3JldHVybiBadChHZSgpLmNvbHVtbk9uQ2xpY2soaCxfLG0pKX0pLHRuKDIsImNsci1pY29uIiw0MSksWWUoMyksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDQpO1NlKDEpLGdyKCJjb2x1bW4tYWN0aXZlIixmLmxpYkNvbHVtbkFjdGl2ZShh''@;'; put 'put ''LkNPTFVSSSkpLFNlKDIpLHdyKCIgIixhLkNPTE5BTUUsIiAiKX19ZnVuY3Rpb24gS0x0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMzEpLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7Y29uc3QgbT1VdChhKS4kaW1wbGljaXQsXz1HZSgyKS4kaW1wbGlj''@;'; put 'put ''aXQ7cmV0dXJuIFp0KEdlKCkudHJlZU5vZGVDbGlja2VkKGQsbSxfLnRhYmxlcykpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gWnQoVXQoYSkuJGltcGxpY2l0LmV4cGFuZGVkPWQpfSkseWUoMSwicCIsMzcpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBo''@;'; put 'put ''PVV0KGEpLiRpbXBsaWNpdCxtPUdlKDIpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoKS50YWJsZU9uQ2xpY2soaC5UQUJMRVVSSSxoLG0pKX0pLHRuKDIsImNsci1pY29uIiwzOCksWWUoMyksQ2UoKSx0dCg0LEdMdCw2LDMsImNsci10cmVlLW5vZGUiLDEpLHR0KDUsJEx0LDQsMywiY2xyLXRy''@;'; put 'put ''ZWUtbm9kZSIsMiksQ2UoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7Z3IoImNsci1leHBhbmRlZCIsYS5leHBhbmRlZCksUmUoImNsckV4cGFuZGVkIixhLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nQ29sdW1ucyYmIWEuY29sdW1ucyksU2UoMSksUmUoImlkIixhLlRB''@;'; put 'put ''QkxFVVJJKSxTZSgyKSx3cigiICIsYS5UQUJMRU5BTUUsIiAiKSxTZSgxKSxSZSgibmdJZiIsYS5jb2x1bW5zKSxTZSgxKSxSZSgibmdGb3JPZiIsYS5jb2x1bW5zKX19ZnVuY3Rpb24gcUx0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMzEpLEV0KCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3QgaD1HZSgpLiRpbXBsaWNpdCxtPUdlKCk7cmV0dXJuIFp0KG0udHJlZU5vZGVDbGlja2VkKGQsaCxtLmxpYnJhcnlMaXN0KSl9KSgiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLiRpbXBsaWNp''@;'; put 'put ''dC5leHBhbmRlZD1kKX0pLHllKDEsInAiLDMyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdCxoPUdlKCk7cmV0dXJuIGgubGliPWQuTElCUkFSWUlELFp0KGgubGlicmFyeU9uQ2xpY2soaC5saWJ8fCIiLGQpKX0pLHRuKDIsImNsci1pY29uIiwz''@;'; put 'put ''MyksWWUoMyksQ2UoKSx0dCg0LFpMdCw2LDMsImNsci10cmVlLW5vZGUiLDEpLHR0KDUsS0x0LDYsOCwiY2xyLXRyZWUtbm9kZSIsMzQpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O2dyKCJjbHItZXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJFeHBhbmRlZCIsYS5l''@;'; put 'put ''eHBhbmRlZCkoImNsckxvYWRpbmciLGEubG9hZGluZ1RhYmxlcyYmIWEudGFibGVzKSxTZSgzKSx3cigiICIsYS5MSUJSQVJZTkFNRSwiICIpLFNlKDEpLFJlKCJuZ0lmIixhLnRhYmxlcyksU2UoMSksUmUoIm5nRm9yT2YiLGEudGFibGVzKX19ZnVuY3Rpb24gWEx0KGwsYyl7aWYoMSZsJiYo''@;'; put 'put ''V3IoMCksdHQoMSxxTHQsNiw3LCJjbHItdHJlZS1ub2RlIiwzMCksR3IoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDEpLFJlKCJuZ0lmIiwhYS5oaWRkZW4mJmEuaW5Gb3JlZ3JvdW5kKX19ZnVuY3Rpb24gSkx0KGwsYyl7MSZsJiYoeWUoMCwiZGl2Iiw0MikoMSwic3BhbiIsNDMp''@;'; put 'put ''LFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkoKSl9ZnVuY3Rpb24gUUx0KGwsYyl7MSZsJiYoeWUoMCwiZGl2Iiw0NCksdG4oMSwiY2xyLWljb24iLDQ1KSx5ZSgyLCJoMyIsNDYpLFllKDMsIlBsZWFzZSBzZWxlY3QgYSBjb2x1bW4gb3IgdGFibGUiKSxDZSgpKCkpfWZ1bmN0aW9uIGVQdChs''@;'; put 'put ''LGMpe2lmKDEmbCYmKHllKDAsImgzIiw1NSksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEpLHdyKCIgIixhLmN1cnJlbnRMaW5lYWdlUGF0aENvbHVtbj9hLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlKyIuIithLmN1cnJlbnRMaW5lYWdlUGF0aENvbHVtbjphLmN1cnJl''@;'; put 'put ''bnRMaW5lYWdlUGF0aExpYlRhYmxlLCIgIil9fWZ1bmN0aW9uIHRQdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsNTMpLHR0KDEsZVB0LDIsMSwiaDMiLDU0KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm5nSWYiLCFhLmN1cnJlbnRMaW5lYWdlUGF0aENvbHVtbiYmIWEu''@;'; put 'put ''Y3VycmVudExpbmVhZ2VQYXRoTGliVGFibGUpfX1mdW5jdGlvbiBuUHQobCxjKXtpZigxJmwmJih5ZSgwLCJzcGFuIiksWWUoMSkseWUoMiwiYSIsNTYpLFllKDMpLENlKCksWWUoNCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLHdyKCIgIixhLmxpbmVhZ2VUYWJsZU5hbWUuc3Bs''@;'; put 'put ''aXQoIi4iKVswXSwiLiIpLFNlKDEpLFJlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvZGF0YS8iK2EubGluZWFnZVRhYmxlTmFtZSksU2UoMSksYXIoYS5saW5lYWdlVGFibGVOYW1lLnNwbGl0KCIuIilbMV0pLFNlKDEpLHdyKCIiLGEubGluZWFnZUNvbHVtbk5hbWUubGVuZ3RoPjA/Ii4iK2EubGlu''@;'; put 'put ''ZWFnZUNvbHVtbk5hbWU6IiIsIiAiKX19ZnVuY3Rpb24gclB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw2NiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSg0KS5kb3dubG9hZFBORygpKX0pLFllKDEsIiBQTkcgIiksQ2UoKX19ZnVuY3Rp''@;'; put 'put ''b24gaVB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw2NiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSg0KS5kb3dubG9hZENTVigpKX0pLFllKDEsIiBDU1YgIiksQ2UoKX19ZnVuY3Rpb24gb1B0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpu''@;'; put 'put ''KCk7eWUoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDY1KSgxLCJkaXYiLDY2KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLmRvd25sb2FkU1ZHKCkpfSksWWUoMiwiU1ZHIiksQ2UoKSx0dCgzLHJQdCwyLDAsImRpdiIsNjcpLHllKDQsImRpdiIsNjYpLEV0KCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMykuZG93bmxvYWREb3QoKSl9KSxZZSg1LCJEb3QiKSxDZSgpLHR0KDYsaVB0LDIsMCwiZGl2Iiw2NyksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMyksUmUoIm5nSWYiLCFhLmhlbHBlclNlcnZpY2UuaXNNaWNyb3Nv''@;'; put 'put ''ZnQpLFNlKDMpLFJlKCJuZ0lmIixhLmZsYXRkYXRhKX19ZnVuY3Rpb24gYVB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDY4KSgxLCJpbnB1dCIsNjkpLEV0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLmdl''@;'; put 'put ''bmVyYXRlR3JhcGgoKSl9KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLnJlZnJlc2hDYWNoZT1kKX0pLENlKCkseWUoMiwibGFiZWwiKSxZZSgzLCJSZWZyZXNoIENhY2hlIiksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSxSZSgi''@;'; put 'put ''bmdNb2RlbCIsYS5yZWZyZXNoQ2FjaGUpfX1mdW5jdGlvbiBsUHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDU3KSgxLCJidXR0b24iLDU4KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLmxpbWl0RG90RGVwdGg9ITApfSksWWUoMiwi''@;'; put 'put ''IExpbWl0IGRlcHRoICIpLENlKCkseWUoMywiZGl2Iiw1OSkoNCwiZGl2Iiw2MCksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMik7cmV0dXJuIGQuZm9yd2FyZExpbmVhZ2U9ITEsWnQoZC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKT9kLm9uR2VuZXJhdGVD''@;'; put 'put ''bGljaygpOmQub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKX0pLHRuKDUsImlucHV0Iiw2MSkseWUoNiwibGFiZWwiKSxZZSg3LCJCYWNrd2FyZCIpLENlKCkoKSx5ZSg4LCJkaXYiLDYwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5mb3J3''@;'; put 'put ''YXJkTGluZWFnZT0hMCxadChkLnJvdXRlci51cmwuaW5jbHVkZXMoImNvbHVtbiIpP2Qub25HZW5lcmF0ZUNsaWNrKCk6ZC5vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCkpfSksdG4oOSwiaW5wdXQiLDYxKSx5ZSgxMCwibGFiZWwiKSxZZSgxMSwiRm9yd2FyZCIpLENlKCkoKSgpLHllKDEy''@;'; put 'put ''LCJjbHItZHJvcGRvd24iLDYyKSgxMywiYnV0dG9uIiw2MyksWWUoMTQsIiBEb3dubG9hZCAiKSx0bigxNSwiY2xyLWljb24iLDE5KSxDZSgpLHR0KDE2LG9QdCw3LDIsImNsci1kcm9wZG93bi1tZW51IiwyMCksQ2UoKSx0dCgxNyxhUHQsNCwxLCJjbHItY2hlY2tib3gtd3JhcHBlciIsNjQp''@;'; put 'put ''LENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDUpLFJlKCJjaGVja2VkIiwhYS5mb3J3YXJkTGluZWFnZSksU2UoNCksUmUoImNoZWNrZWQiLGEuZm9yd2FyZExpbmVhZ2UpLFNlKDQpLFJlKCJkaXNhYmxlZCIsIWEuY29sdW1uJiYhYS50YWJsZSksU2UoNCksUmUoIm5nSWYiLGEuY29s''@;'; put 'put ''dW1uKX19ZnVuY3Rpb24gc1B0KGwsYyl7MSZsJiYoeWUoMCwic3BhbiIsNzMpLFllKDEsIiBMb2FkaW5nLi4uICIpLENlKCkpfWZ1bmN0aW9uIHVQdChsLGMpezEmbCYmdG4oMCwic3BhbiIsNDMpfWZ1bmN0aW9uIGNQdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsNzQpKDEsImRpdiIsNzUp''@;'; put 'put ''LHR0KDIsdVB0LDEsMCwic3BhbiIsNzYpLENlKCksdG4oMywiZGl2Iiw3NyksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDIpLFJlKCJuZ0lmIixhLmdyYXBoUmVuZGVyaW5nKX19ZnVuY3Rpb24gZlB0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IikoMSwiZGl2Iiw3MCksdHQoMixzUHQs''@;'; put 'put ''MiwwLCJzcGFuIiw3MSksdHQoMyxjUHQsNCwxLCJkaXYiLDcyKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtncigibXQtMiIsYS50YWJsZUZsYWcpLFNlKDIpLFJlKCJuZ0lmIixhLmdyYXBoTG9hZGluZyksU2UoMSksUmUoIm5nSWYiLCFhLmdyYXBoTG9hZGluZyl9fWZ1bmN0aW9uIGRQ''@;'; put 'put ''dChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsdFB0LDIsMSwiZGl2Iiw0NykseWUoMiwiZGl2Iiw0OCkoMywic2VjdGlvbiIsNDkpKDQsImRpdiIsNTApLHR0KDUsblB0LDUsNCwic3BhbiIsNyksQ2UoKSx0dCg2LGxQdCwxOCw0LCJkaXYiLDUxKSxDZSgpLHR0KDcsZlB0LDQsNCwiZGl2Iiw1''@;'; put 'put ''MiksQ2UoKSxHcigpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSgxKSxSZSgibmdJZiIsIWEuZ3JhcGhDb250YWluZXIpLFNlKDQpLFJlKCJuZ0lmIixhLmxpbmVhZ2VUYWJsZU5hbWUubGVuZ3RoPjApLFNlKDEpLFJlKCJuZ0lmIixhLmdyYXBoQ29udGFpbmVyKSxTZSgxKSxSZSgibmdJZiIsYS5n''@;'; put 'put ''cmFwaENvbnRhaW5lcil9fWZ1bmN0aW9uIGhQdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsNjYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikucmVuZGVyVG9Eb3dubG9hZCgiUE5HIikpfSksWWUoMSwiIFBORyAiKSxDZSgpfX1mdW5j''@;'; put 'put ''dGlvbiBwUHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItZHJvcGRvd24tbWVudSIsNjUpKDEsImRpdiIsNjYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5yZW5kZXJUb0Rvd25sb2FkKCJTVkciKSl9KSxZZSgyLCJTVkciKSxDZSgpLHR0''@;'; put 'put ''KDMsaFB0LDIsMCwiZGl2Iiw2NykseWUoNCwiZGl2Iiw2NiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKTtyZXR1cm4gZC5kb3dubG9hZERvdCgpLFp0KGQuY2FuY2VsUmVuZGVyaW5nR3JhcGgoKSl9KSxZZSg1LCIgRG90ICIpLENlKCkoKX1pZigyJmwpe2NvbnN0''@;'; put 'put ''IGE9R2UoKTtTZSgzKSxSZSgibmdJZiIsIWEuaGVscGVyU2VydmljZS5pc01pY3Jvc29mdCl9fWNvbnN0IG1QdD1UKDE2Njc2KTtsZXQgeEY9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyxPLFgpe3RoaXMubGljZW5jZVNlcnZpY2U9YSx0aGlzLnNhc1NlcnZpY2U9Zix0''@;'; put 'put ''aGlzLnJvdXRlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLmxvY2F0aW9uPW0sdGhpcy5ldmVudFNlcnZpY2U9Xyx0aGlzLmxvZ2dlclNlcnZpY2U9Tyx0aGlzLmhlbHBlclNlcnZpY2U9WCx0aGlzLnN3aXRjaEZsYWc9ITEsdGhpcy50YWJsZUZsYWc9ITAsdGhpcy5mb3J3YXJkTGluZWFnZT0hMSx0''@;'; put 'put ''aGlzLmZsYXRkYXRhPVtdLHRoaXMuZ3JhcGhMb2FkaW5nPSExLHRoaXMuZ3JhcGhSZW5kZXJpbmc9ITEsdGhpcy5ncmFwaENvbnRhaW5lcj0hMSx0aGlzLnZpeklucHV0PSIiLHRoaXMubGlicmFyaWVzUGFnaW5nPSExLHRoaXMubGlicmFyeVRhYmxlc1JlZj0iIix0aGlzLmxpYnJhcmllc1Nl''@;'; put 'put ''YXJjaD0iIix0aGlzLnRhYmxlQ29sdW1uc1JlZj0iIix0aGlzLmxpbmVhZ2VUYWJsZU5hbWU9IiIsdGhpcy5saW5lYWdlQ29sdW1uTmFtZT0iIix0aGlzLmxpYj1udWxsLHRoaXMudGFibGVEaXNhYmxlPSExLHRoaXMucmVmcmVzaENhY2hlPSExLHRoaXMuY3VycmVudExpbmVhZ2VQYXRoTGli''@;'; put 'put ''VGFibGU9IiIsdGhpcy5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW49IiIsdGhpcy5sYXJnZURvdEZpbGVMaW5lcz1udWxsLHRoaXMubGFyZ2VEb3RGaWxlTGltaXQ9MWUzLHRoaXMubGltaXREb3REZXB0aD0hMSx0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD1udWxsLHRoaXMuZGVib3VuY2VU''@;'; put 'put ''aW1lPTIwMH1zaG93VGFibGVTZWxlY3QoKXt0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9dGFibGVPbkNsaWNrKGEsZixkLGg9ITEpe3ZhciBtPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2YuY29sdW1ucz8oZi5leHBhbmRlZD0hZi5leHBhbmRlZCwhMD09PWYuZXhwYW5kZWQm''@;'; put 'put ''JihtLnRhYmxlPWEsaHx8bS5vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCkpKTooZi5leHBhbmRlZD0hZi5leHBhbmRlZCxmLmxvYWRpbmdDb2x1bW5zPSEwLG0udGFibGU9YSxtLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPWYuTElCTkFNRSsiLiIrZi5UQUJMRU5BTUUseWllbGQgbS5z''@;'; put 'put ''ZWxlY3RUYWJsZShhLGYpLGh8fG0ub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKSxtLmNvbGxhcHNlVHJlZUl0ZW1zKGQudGFibGVzLGYpfSkoKX1zZWxlY3RUYWJsZShhLGYpe3ZhciBkPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2QuY29sdW1uc0xpc3Q9W107bGV0IGg9e1NBU0Nv''@;'; put 'put ''bnRyb2xUYWJsZTpbe3RhYmxldXJpOmF9XX07eWllbGQgZC5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZ2V0bWV0YWNvbHMiLGgpLnRoZW4obT0+e2QuY29sdW1uc0xpc3Q9bS5tZXRhY29scyxkLmNvbHVtbnNMaXN0JiZkLmNvbHVtbnNMaXN0Lmxlbmd0aD4wJiYoZi5jb2x1bW5zPWQu''@;'; put 'put ''Y29sdW1uc0xpc3QsZi5leHBhbmRlZD0hMCxmLmxvYWRpbmdDb2x1bW5zPSExKX0pLmNhdGNoKG09Pm0pLGQuc2V0R2xvYmFsRGF0YSgpfSkoKX1sb2FkTW9yZUxpYnJhcmllcygpe3RoaXMubGlicmFyaWVzUGFnaW5nfHwodGhpcy5saWJyYXJpZXNQYWdpbmc9ITAsdGhpcy5oZWxwZXJTZXJ2''@;'; put 'put ''aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCwhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfWNvbGxhcHNlVHJlZUl0ZW1zKGEsZil7YS5mb3JFYWNoKGQ9PntKU09OLnN0cmluZ2lmeShkKSE9PUpTT04uc3RyaW5naWZ5KGYpJiYoZC5leHBhbmRlZD0hMSl9KX10cmVl''@;'; put 'put ''Tm9kZUNsaWNrZWQoYSxmLGQpeyJDb2xsYXBzZSI9PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyhkLGYpfWxpYnJhcnlPbkNsaWNrKGEsZil7dmFyIGQ9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7Zi5pbkZvcmVncm91bmQ9ITAsZi50YWJsZXM/Zi5leHBhbmRl''@;'; put 'put ''ZD0hZi5leHBhbmRlZDooZi5sb2FkaW5nVGFibGVzPSEwLHlpZWxkIGQuc2VsZWN0TGlicmFyeShhLGYpKSxkLmNvbGxhcHNlVHJlZUl0ZW1zKGQubGlicmFyeUxpc3QsZil9KSgpfXNlbGVjdExpYnJhcnkoYSxmKXt2YXIgZD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtkLnRhYmxlc0xp''@;'; put 'put ''c3Q9W10sZC5jb2x1bW5zTGlzdD1bXTtsZXQgaD17U0FTQ29udHJvbFRhYmxlOlt7bGlidXJpOmF9XX07eWllbGQgZC5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZ2V0bWV0YXRhYmxlcyIsaCkudGhlbihtPT57ZC50YWJsZXNMaXN0PW0ubWV0YXRhYmxlcyxkLnRhYmxlc0xpc3QmJmQu''@;'; put 'put ''dGFibGVzTGlzdC5sZW5ndGg+MCYmKGYudGFibGVzPWQudGFibGVzTGlzdCxmLmV4cGFuZGVkPSEwKSxkLnNldEdsb2JhbERhdGEoKX0pLmNhdGNoKG09Pm0pLGYubG9hZGluZ1RhYmxlcz0hMX0pKCl9Y29sdW1uT25DbGljayhhLGYsZCl7dGhpcy5saWI9Zi5MSUJSQVJZSUQsdGhpcy50YWJs''@;'; put 'put ''ZT1kLlRBQkxFVVJJLHRoaXMuY29sdW1uPWEuQ09MVVJJLHRoaXMuc2V0R2xvYmFsRGF0YSgpLHRoaXMub25HZW5lcmF0ZUNsaWNrKCl9dHJlZU9uRmlsdGVyKGEsZil7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihhLGYpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2Vy''@;'; put 'put ''dmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJ5TGlzdCx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxKbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH1saWJDb2x1bW5BY3RpdmUoYSl7aWYoIXRoaXMuY29sdW1uKXJldHVybiEx''@;'; put 'put ''O2xldCBmPWEuc3BsaXQoIlxcIiksZD10aGlzLmNvbHVtbi5zcGxpdCgiXFwiKTtyZXR1cm4gZltmLmxlbmd0aC0xXT09ZFtkLmxlbmd0aC0xXX1zZXRHbG9iYWxEYXRhKCl7Sm4ubGluZWFnZS5saWJyYXJ5TGlzdD10aGlzLmxpYnJhcnlMaXN0LEpuLmxpbmVhZ2UudGFibGVzTGlzdD10aGlz''@;'; put 'put ''LnRhYmxlc0xpc3QsSm4ubGluZWFnZS5jb2x1bW5zTGlzdD10aGlzLmNvbHVtbnNMaXN0LEpuLmxpbmVhZ2UubGliPXRoaXMubGliLEpuLmxpbmVhZ2UudGFibGU9dGhpcy50YWJsZSxKbi5saW5lYWdlLmNvbHVtbj10aGlzLmNvbHVtbn1sb2FkR2xvYmFsRGF0YSgpe3RoaXMubGlicmFyeUxp''@;'; put 'put ''c3Q9Sm4ubGluZWFnZS5saWJyYXJ5TGlzdCx0aGlzLnRhYmxlc0xpc3Q9Sm4ubGluZWFnZS50YWJsZXNMaXN0LHRoaXMuY29sdW1uc0xpc3Q9Sm4ubGluZWFnZS5jb2x1bW5zTGlzdCx0aGlzLmxpYnJhcmllc1NlYXJjaD1Kbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaH1yZXN1Ym1pdFdpdGhN''@;'; put 'put ''YXhEZXB0aChhKXtsZXQgZjt0aGlzLmNhbmNlbFJlbmRlcmluZ0dyYXBoKCksYSYmKGY9e21heF9kZXB0aDphfSksdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10se3JlbGF0aXZlVG86dGhpcy5yb3V0ZSxxdWVyeVBhcmFtczpmfSl9bmdPbkluaXQoKXtKbi52aWV3ZXIuY3VycmVudFNlbGVjdGlv''@;'; put 'put ''bj0idmlldy9saW5lYWdlIjtsZXQgYT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5yZWxvYWQ7aWYodm9pZCAwIT09YSl7bGV0IGY9dGhpcy5yb3V0ZXIudXJsOyJyZWxvYWQiPT09YT9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZmlyc3RMb2FkIik/KGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVt''@;'; put 'put ''KCJmaXJzdExvYWQiKSx0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShmLnNsaWNlKDAsZi5sYXN0SW5kZXhPZigiLyIpKSkpOihsb2NhbFN0b3JhZ2UuZmlyc3RMb2FkPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9LDJlMykpOnRoaXMubG9jYXRp''@;'; put 'put ''b24ucmVwbGFjZVN0YXRlKGYuc2xpY2UoMCxmLmxhc3RJbmRleE9mKCIvIikpKX10aGlzLmluaXREYXRhKCl9aW5pdERhdGEoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtKbi5saW5lYWdlLmxpYnJhcnlMaXN0JiYoSm4ubGluZWFnZS5saWJyYXJ5TGlzdC5sZW5ndGg+MD9h''@;'; put 'put ''LmxvYWRHbG9iYWxEYXRhKCk6eWllbGQgYS5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3bGlicyIsbnVsbCkudGhlbihtPT57YS5saWJyYXJ5TGlzdD1tLnNhc2xpYnMsYS5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXMoYS5saWJyYXJ5TGlzdCksYS5saWJyYXJ5TGlzdCYm''@;'; put 'put ''YS5saWJyYXJ5TGlzdC5sZW5ndGg+MCYmKGEubGliPWEubGlicmFyeUxpc3RbMF0uTElCUkFSWUlEKSxhLnNldEdsb2JhbERhdGEoKX0pLmNhdGNoKG09Pm0pLGEucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKG09PnthLm9uUm91dGVDaGFuZ2UoKX0pLGEucm91dGUucGFyYW1zLnN1YnNj''@;'; put 'put ''cmliZShtPT57YS5vblJvdXRlQ2hhbmdlKCl9KSl9KSgpfW9uUm91dGVDaGFuZ2UoKXtjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpLHRoaXMuZGVib3VuY2VUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pntjb25zdCBhPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmNvbHVyaSxm''@;'; put 'put ''PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRpcmVjdGlvbixkPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnRhYmxlaWQsaD10aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLm1heF9kZXB0aDthJiZmJiYodGhpcy5mb3J3YXJkTGluZWFnZT0iRk9SV0FSRCI9PT1mLHRoaXMu''@;'; put 'put ''Y29sdW1uPWEsdGhpcy5nZW5lcmF0ZUdyYXBoKGEsZixoKSksIXRoaXMucm91dGVyLnVybC5pbmNsdWRlcygiY29sdW1uIikmJmQmJmYmJih0aGlzLmZvcndhcmRMaW5lYWdlPSJGT1JXQVJEIj09PWYsdGhpcy50YWJsZT1kLHRoaXMuZ2VuZXJhdGVHcmFwaFRhYmxlTGV2ZWwoZCxmLGgpKX0s''@;'; put 'put ''dGhpcy5kZWJvdW5jZVRpbWUpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe31kaXJlY3Rpb25UZXh0KCl7cmV0dXJuIHRoaXMuZm9yd2FyZExpbmVhZ2U/IkZPUldBUkQiOiJSRVZFUlNFIn1vbkdlbmVyYXRlQ2xpY2soKXtsZXQgYT10aGlzLmRpcmVjdGlvblRleHQoKSxmPXRoaXMuY29sdW1uP3Ro''@;'; put 'put ''aXMuY29sdW1uLnN1YnN0cmluZyh0aGlzLmNvbHVtbi5pbmRleE9mKCJcXCIpKzEpOm51bGw7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvbGluZWFnZS9jb2x1bW4vIitmKyIvIithKX1vbkdlbmVyYXRlR3JhcGhUYWJsZUNsaWNrKCl7bGV0IGE9dGhpcy5kaXJlY3Rpb25UZXh0''@;'; put 'put ''KCksZj10aGlzLnRhYmxlLmluY2x1ZGVzKCJcXCIpP3RoaXMudGFibGUuc3BsaXQoIlxcIilbMV06dGhpcy50YWJsZTt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlLyIrZisiLyIrYSl9Z2VuZXJhdGVHcmFwaFRhYmxlTGV2ZWwoYSxmLGQpe3ZhciBoPXRoaXM7cmV0''@;'; put 'put ''dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBtPXtTQVNDb250cm9sVGFibGU6W3t0YWJsZV9pZDphLGRpcmVjdGlvbjpmfHxoLmRpcmVjdGlvblRleHQoKX1dfTtyZXR1cm4idW5kZWZpbmVkIj09PW0uU0FTQ29udHJvbFRhYmxlWzBdLnRhYmxlX2lkJiZoLmV2ZW50U2VydmljZS5zaG93QWJvcnRN''@;'; put 'put ''b2RhbCgiZ2VuZXJhdGVHcmFwaFRhYmxlTGV2ZWwoKSIsInRhYmxlX2lkIGlzIHVuZGVmaW5lZC4iLHZvaWQgMCwiRnJvbnRlbmQgZXJyb3IiKSxkJiYobS5TQVNDb250cm9sVGFibGVbMF0ubWF4X2RlcHRoPWQpLGgudGFibGVGbGFnPSExLGguc3dpdGNoRmxhZz0hMCxoLmdyYXBoQ29udGFp''@;'; put 'put ''bmVyPSEwLGguZ3JhcGhMb2FkaW5nPSEwLGgudml6SW5wdXQ9IiIsbmV3IFByb21pc2UoKF8sTyk9PntoLnNhc1NlcnZpY2UucmVxdWVzdCgibGluZWFnZS9mZXRjaHRhYmxlbGluZWFnZSIsbSkudGhlbihmdW5jdGlvbigpe3ZhciBYPXlpKGZ1bmN0aW9uKihhZSl7aWYoYWUuZmxhdGRhdGEu''@;'; put 'put ''bGVuZ3RoPjAmJmgubGljZW5jZVNlcnZpY2UuY2hlY2tMaW5lYWdlTGltaXQoKSlyZXR1cm4gaC5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiTm90aWNlIiwiWW91IGhhdmUgcmVhY2hlZCBkYWlseSBtYXhpbXVtIG9mIGxpbmVhZ2UgZGlhZ3JhbSByZW5kZXJpbmdzLiBUbyB1bmxvY2sg''@;'; put 'put ''YWRkaXRpb25hbCBkaWFncmFtcywgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksdm9pZCBoLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlIik7aWYoInN0cmluZyI9PXR5cGVvZiBhZSlyZXR1cm4gaC52aXpJbnB1dD0iZGlncmFwaCBHIHtTQVMgRXJyb3J9''@;'; put 'put ''Iix2b2lkIGguYnVpbGRHcmFwaCgpO2gubGluZWFnZVRhYmxlTmFtZT1hZS5pbmZvWzBdLkxJQlJFRisiLiIrYWUuaW5mb1swXS5UQUJMRU5BTUU7bGV0IHBlPWFlLmZpbmFsZmluYWwsYmU9IiI7Zm9yKGxldCB4ZT0wO3hlPHBlLmxlbmd0aDt4ZSsrKWJlKz11bmVzY2FwZShwZVt4ZV0uTElO''@;'; put 'put ''RSkrIlxuIjtpZihoLmZsYXRkYXRhPWFlLmZsYXRkYXRhLGgubGlicmFyeUxpc3Qpe2xldCB4ZT1oLmxpYnJhcnlMaXN0LmZpbmQoVmU9PmFlLmluZm9bMF0uTElCVVJJLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoVmUuTElCUkFSWUlELnRvVXBwZXJDYXNlKCkpKTtpZih4ZSl7bGV0IFZlO2lm''@;'; put 'put ''KHlpZWxkIGgubGlicmFyeU9uQ2xpY2soeGUuTElCUkFSWUlELHhlKSx4ZS50YWJsZXMmJihWZT14ZS50YWJsZXMuZmluZChaZT0+WmUuVEFCTEVVUkkudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhhZS5pbmZvWzBdLlRBQkxFSUQudG9VcHBlckNhc2UoKSkpLFZlKSl7aWYoaC50YWJsZT1WZS5U''@;'; put 'put ''QUJMRVVSSSxoLnRhYmxlKXtjb25zdCBaZT1oLnRhYmxlLnJlcGxhY2UoIlxcIiwiXFxcXCIpO3NldFRpbWVvdXQoKCk9PntsZXQgbHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2lkPScke1plfSddYCk7bHQmJmx0LnNjcm9sbEludG9WaWV3KCl9LDFlMyl9aC50YWJsZU9uQ2xpY2soVmUu''@;'; put 'put ''VEFCTEVVUkksVmUseGUsdm9pZCAwIT09Zil9eGUmJih4ZS5leHBhbmRlZD0hMCksVmUmJihWZS5leHBhbmRlZD0hMCl9fWgudml6SW5wdXQ9YmV8fCJkaWdyYXBoIEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsaC52aXpJbnB1dD1oLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6''@;'; put 'put ''IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLGguaWRsb29rdXA9YWUuaWRsb29rdXAsYWUuZmluYWxmaW5hbC5sZW5ndGg+aC5sYXJnZURvdEZpbGVMaW1pdD9oLmxhcmdlRG90RmlsZUxpbmVzPWFlLmZpbmFsZmluYWwubGVuZ3RoOmguYnVpbGRHcmFwaCgpLF8oKX0pO3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihhZSl7cmV0dXJuIFguYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkuY2F0Y2goWD0+e2guZ3JhcGhMb2FkaW5nPSExLGguZ3JhcGhDb250YWluZXI9ITF9KX0pfSkoKX1jYW5jZWxSZW5kZXJpbmdHcmFwaCgpe3RoaXMudml6SW5wdXQ9ImRpZ3JhcGggRyB7Tm8gTGluZWFnZSBBdmFpbGFi''@;'; put 'put ''bGV9Iix0aGlzLmxhcmdlRG90RmlsZUxpbmVzPW51bGwsdGhpcy5idWlsZEdyYXBoKCl9Y29udGludWVSZW5kZXJpbmdHcmFwaCgpe3RoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmJ1aWxkR3JhcGgoKCk9PntpZihudWxsIT09dGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQpe3N3''@;'; put 'put ''aXRjaCh0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZCl7Y2FzZSJQTkciOnRoaXMuZG93bmxvYWRQTkcoKTticmVhaztjYXNlIlNWRyI6dGhpcy5kb3dubG9hZFNWRygpfXRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPW51bGwsdGhpcy52aXpJbnB1dD0iZGlncmFwaCBHIHtObyBMaW5lYWdl''@;'; put 'put ''IEF2YWlsYWJsZX0iLHRoaXMuYnVpbGRHcmFwaCgpfX0pfXJlbmRlclRvRG93bmxvYWQoYSl7c3dpdGNoKGEpe2Nhc2UiUE5HIjp0aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD0iUE5HIix0aGlzLmNvbnRpbnVlUmVuZGVyaW5nR3JhcGgoKTticmVhaztjYXNlIlNWRyI6dGhpcy5wZW5kaW5n''@;'; put 'put ''UmVuZGVyRG93bmxvYWQ9IlNWRyIsdGhpcy5jb250aW51ZVJlbmRlcmluZ0dyYXBoKCl9fW1ha2VHcmFwaExpbmthYmxlKGEpe2xldCBmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNncmFwaCAubm9kZSIpO2ZvcihsZXQgZCBvZiBmKXtsZXQgXyxoPWQucXVlcnlTZWxlY3RvcigidGl0''@;'; put 'put ''bGUiKS5pbm5lckhUTUwsbT1hLmZpbmQoTz0+Ty5NRVRBSUQ9PT1oKTttJiYoXz0iVEFCTEUiPT09bS5NRVRBVFlQRT8iL3ZpZXcvZGF0YS8iK20uTUVUQU5BTUU6Ii92aWV3L21ldGFkYXRhL29iamVjdC8iK20uTUVUQUlELGQuY2xhc3NMaXN0LmFkZCgiY3Vyc29yLXBvaW50ZXIiKSxkLmFk''@;'; put 'put ''ZEV2ZW50TGlzdGVuZXIoImNsaWNrIixPPT57dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChfKX0pKX19Z2VuZXJhdGVHcmFwaChhLGYsZCl7dmFyIGg9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7bGV0IG09e1NBU0NvbnRyb2xUYWJsZTpbe2NvbHVyaTphfHxoLmNvbHVtbixkaXJlY3Rp''@;'; put 'put ''b246Znx8aC5kaXJlY3Rpb25UZXh0KCkscmVmcmVzaDpoLnJlZnJlc2hDYWNoZT8xOjB9XX07cmV0dXJuInVuZGVmaW5lZCI9PT1tLlNBU0NvbnRyb2xUYWJsZVswXS5jb2x1cmkmJmguZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJnZW5lcmF0ZUdyYXBoKCkiLCJjb2x1cmkgaXMgdW5k''@;'; put 'put ''ZWZpbmVkLiIsdm9pZCAwLCJGcm9udGVuZCBlcnJvciIpLGQmJihtLlNBU0NvbnRyb2xUYWJsZVswXS5tYXhfZGVwdGg9ZCksaC50YWJsZUZsYWc9ITEsaC5zd2l0Y2hGbGFnPSEwLGguZ3JhcGhDb250YWluZXI9ITAsaC5ncmFwaExvYWRpbmc9ITAsaC52aXpJbnB1dD0iIixuZXcgUHJvbWlz''@;'; put 'put ''ZSgoXyxPKT0+e2guc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2ZldGNoY29sbGluZWFnZSIsbSkudGhlbihmdW5jdGlvbigpe3ZhciBYPXlpKGZ1bmN0aW9uKihhZSl7aWYoYWUuZmxhdGRhdGEubGVuZ3RoPjAmJmgubGljZW5jZVNlcnZpY2UuY2hlY2tMaW5lYWdlTGltaXQoKSlyZXR1''@;'; put 'put ''cm4gaC5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiTm90aWNlIiwiWW91IGhhdmUgcmVhY2hlZCBkYWlseSBtYXhpbXVtIG9mIGxpbmVhZ2UgZGlhZ3JhbSByZW5kZXJpbmdzLiBUbyB1bmxvY2sgYWRkaXRpb25hbCBkaWFncmFtcywgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVy''@;'; put 'put ''LmlvIiksdm9pZCBoLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlIik7aWYoInN0cmluZyI9PXR5cGVvZiBhZSlyZXR1cm4gaC52aXpJbnB1dD0iZGlncmFwaCBHIHtTQVMgRXJyb3J9Iix2b2lkIGguYnVpbGRHcmFwaCgpO2gubGluZWFnZVRhYmxlTmFtZT1hZS5pbmZvWzBd''@;'; put 'put ''LkxJQlJFRisiLiIrYWUuaW5mb1swXS5UQUJOQU1FLGgubGluZWFnZUNvbHVtbk5hbWU9YWUuaW5mb1swXS5DT0xOQU1FLGguaWRsb29rdXA9YWUuaWRsb29rdXA7bGV0IHBlPWFlLmZyb21zYXMsYmU9IiI7Zm9yKGxldCB4ZT0wO3hlPHBlLmxlbmd0aDt4ZSsrKWJlKz11bmVzY2FwZShwZVt4''@;'; put 'put ''ZV0uU1RSSU5HKSsiXG4iO2lmKGgudml6SW5wdXQ9YmV8fCJkaWdyYXBoIEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsaC52aXpJbnB1dD1oLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLGguZmxhdGRhdGE9YWUuZmxhdGRhdGEsaC5s''@;'; put 'put ''aWJyYXJ5TGlzdCl7bGV0IFZlLHhlPWgubGlicmFyeUxpc3QuZmluZChaZT0+YWUuaW5mb1swXT8uTElCVVJJPy50b1VwcGVyQ2FzZSgpPy5pbmNsdWRlcyhaZT8uTElCUkFSWUlEPy50b1VwcGVyQ2FzZSgpKSk7eGUmJih5aWVsZCBoLmxpYnJhcnlPbkNsaWNrKHhlLkxJQlJBUllJRCx4ZSks''@;'; put 'put ''eGUudGFibGVzJiYoVmU9eGUudGFibGVzLmZpbmQoWmU9PlplLlRBQkxFVVJJPT09YWUuaW5mb1swXS5UQUJVUkkpLFZlJiZoLnRhYmxlT25DbGljayhWZS5UQUJMRVVSSSxWZSx4ZSwhMCkudGhlbigoKT0+e2xldCBaZT1WZS5UQUJMRVVSSTtpZihaZSl7Y29uc3QgbHQ9WmUucmVwbGFjZSgi''@;'; put 'put ''XFwiLCJcXFxcIik7bGV0IGR0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD0nJHtsdH0nXWApO3NldFRpbWVvdXQoKCk9PntkdCYmKGgubG9nZ2VyU2VydmljZS5sb2coImxpYnJhcnlUb1NlbGVjdCIseGUpLGR0LnNjcm9sbEludG9WaWV3KCkpfSwxZTMpfX0pKSx4ZSYmKHhlLmV4cGFu''@;'; put 'put ''ZGVkPSEwKSxWZSYmKFZlLmV4cGFuZGVkPSEwKSl9YWUuZnJvbXNhcy5sZW5ndGg+aC5sYXJnZURvdEZpbGVMaW1pdD9oLmxhcmdlRG90RmlsZUxpbmVzPWFlLmZyb21zYXMubGVuZ3RoOmguYnVpbGRHcmFwaCgpLF8oKX0pO3JldHVybiBmdW5jdGlvbihhZSl7cmV0dXJuIFguYXBwbHkodGhp''@;'; put 'put ''cyxhcmd1bWVudHMpfX0oKSkuY2F0Y2goWD0+e2guZ3JhcGhMb2FkaW5nPSExLGguZ3JhcGhDb250YWluZXI9ITF9KX0pfSkoKX1nZXRTVkdVUkwoKXtsZXQgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiKSxmPW5ldyBYTUxTZXJpYWxpemVyLGQ9bmV3IEJsb2IoW2Yuc2VyaWFs''@;'; put 'put ''aXplVG9TdHJpbmcoYSldLHt0eXBlOiJpbWFnZS9zdmcreG1sIn0pO3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGQpfWdldFNWR0Jsb2IoKXtsZXQgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiKSxmPW5ldyBYTUxTZXJpYWxpemVyO3JldHVybiBuZXcgQmxvYihbZi5zZXJp''@;'; put 'put ''YWxpemVUb1N0cmluZyhhKV0se3R5cGU6ImltYWdlL3N2Zyt4bWwifSl9ZG93bmxvYWRTVkcoKXtpZihFRigiI2dyYXBoIikucmVzZXRab29tKCksbmF2aWdhdG9yLmFwcFZlcnNpb24udG9TdHJpbmcoKS5pbmRleE9mKCIuTkVUIik+MCl3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IodGhp''@;'; put 'put ''cy5nZXRTVkdCbG9iKCksdGhpcy5jb25zdHJ1Y3ROYW1lKCJzdmciKSk7ZWxzZXtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7YS5ocmVmPXRoaXMuZ2V0U1ZHVVJMKCksYS5kb3dubG9hZD10aGlzLmNvbnN0cnVjdE5hbWUoInN2ZyIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp''@;'; put 'put ''bGQoYSksYS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSl9fWRvd25sb2FkUE5HKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7RUYoIiNncmFwaCIpLnJlc2V0Wm9vbSgpLE5MdC5zYXZlU3ZnQXNQbmcoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2dyYXBo''@;'; put 'put ''IHN2ZyIpLGEuY29uc3RydWN0TmFtZSgicG5nIikpfSkoKX1kb3dubG9hZENTVigpe2xldCBhPXRoaXMuZmxhdGRhdGE7Y29uc3QgZj0oYWUscGUpPT5udWxsPT09cGU/IiI6cGUsZD1PYmplY3Qua2V5cyhhWzBdKTtsZXQgaD1hLm1hcChhZT0+ZC5tYXAocGU9PkpTT04uc3RyaW5naWZ5KGFl''@;'; put 'put ''W3BlXSxmKSkuam9pbigiLCIpKTtoLnVuc2hpZnQoZC5qb2luKCIsIikpO2xldCBtPWguam9pbigiXHJcbiIpO3ZhciBfPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxPPW5ldyBCbG9iKFttXSx7dHlwZToidGV4dC9jc3YifSk7aWYobmF2aWdhdG9yLmFwcFZlcnNpb24udG9TdHJpbmco''@;'; put 'put ''KS5pbmRleE9mKCIuTkVUIik+MCl3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IoTyx0aGlzLmNvbnN0cnVjdE5hbWUoImNzdiIpKTtlbHNle3ZhciBYPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKE8pO18uaHJlZj1YLF8uZG93bmxvYWQ9dGhpcy5jb25zdHJ1Y3ROYW1lKCJjc3YiKSxf''@;'; put 'put ''LmNsaWNrKCksd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwoWCksXy5yZW1vdmUoKX19Z2V0RG90VXJsKCl7bGV0IGY9bmV3IEJsb2IoW3RoaXMudml6SW5wdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pO3JldHVybiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmKX1nZXREb3RCbG9iKCl7''@;'; put 'put ''cmV0dXJuIG5ldyBCbG9iKFt0aGlzLnZpeklucHV0XSx7dHlwZToidGV4dC9wbGFpbiJ9KX1kb3dubG9hZERvdCgpe2lmKG5hdmlnYXRvci5hcHBWZXJzaW9uLnRvU3RyaW5nKCkuaW5kZXhPZigiLk5FVCIpPjApd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKHRoaXMuZ2V0RG90QmxvYigp''@;'; put 'put ''LHRoaXMuY29uc3RydWN0TmFtZSgidHh0IikpO2Vsc2V7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2EuaHJlZj10aGlzLmdldERvdFVybCgpLGEuZG93bmxvYWQ9dGhpcy5jb25zdHJ1Y3ROYW1lKCJ0eHQiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2so''@;'; put 'put ''KSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpfX1zaG93U3ZnKCl7d2luZG93Lm9wZW4odGhpcy5nZXRTVkdVUkwoKSwiX2JsYW5rIil9YnVpbGRHcmFwaChhKXt0aGlzLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSx0aGlzLmdyYXBoTG9hZGluZz0hMSx0aGlzLmdyYXBoUmVuZGVy''@;'; put 'put ''aW5nPSEwLHNldFRpbWVvdXQoKCk9PntFRigiI2dyYXBoIikuem9vbSghMCkuYWRkSW1hZ2UoImh0dHBzOi8vZGF0YWNvbnRyb2xsZXIuaW8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDEvZmMxLnBuZyIsIjMwcHgiLCIzMHB4IikucmVuZGVyRG90KHRoaXMudml6SW5wdXQsKCk9Pnt0aGlz''@;'; put 'put ''LmdyYXBoUmVuZGVyaW5nPSExLHRoaXMuaWRsb29rdXAmJnRoaXMubWFrZUdyYXBoTGlua2FibGUodGhpcy5pZGxvb2t1cCksYSYmYSgpfSl9LDEwMCl9Y29uc3RydWN0TmFtZShhKXtsZXQgZj0iIixkPSIiLGg9IiIsbT1tUHQoKS5mb3JtYXQoIllZTU1ERF9ISG1tIik7aWYodGhpcy5saWJy''@;'; put 'put ''YXJ5TGlzdCYmdGhpcy5saWJyYXJ5TGlzdC5sZW5ndGgpe2xldCBfPXRoaXMubGlicmFyeUxpc3QuZmluZChPPT5PLkxJQlJBUllJRD09dGhpcy5saWIpO18mJihmPWBfJHtfLkxJQlJBUllOQU1FfWApfWlmKHRoaXMudGFibGVzTGlzdCYmdGhpcy50YWJsZXNMaXN0Lmxlbmd0aCl7bGV0IF89''@;'; put 'put ''dGhpcy50YWJsZXNMaXN0LmZpbmQoTz0+Ty5UQUJMRVVSST09dGhpcy50YWJsZSk7XyYmKGQ9YF8ke18uVEFCTEVOQU1FfWApfWlmKHRoaXMuY29sdW1uc0xpc3QmJnRoaXMuY29sdW1uc0xpc3QubGVuZ3RoKXtsZXQgXz10aGlzLmNvbHVtbnNMaXN0LmZpbmQoTz0+Ty5DT0xVUkk9PXRoaXMu''@;'; put 'put ''Y29sdW1uKTtfJiYoaD1gXyR7Xy5DT0xOQU1FfWApfXJldHVybmAke3RoaXMuZGlyZWN0aW9uVGV4dCgpfSR7Zn0ke2R9JHtofV8ke219LiR7YX1gfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChiMSkscnQocGwpLHJ0KHR1KSxydChMYSkscnQo''@;'; put 'put ''Z2QpLHJ0KFJzKSxydCh5MSkscnQoUHUpKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWxpbmVhZ2UiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjU4LHZhcnM6MTEsY29uc3RzOltbMywic2Nyb2xsZWRUb0JvdHRvbSJdLFsiY2xh''@;'; put 'put ''c3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwidy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxbNCwibmdJ''@;'; put 'put ''ZiJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwibW9kYWwtZm9vdGVyIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iXSxbMSwiYmlnbGluZWFnZS1yb3ciLCJtYi0waSJdLFsidHlwZSIsIm51bWJlciIs''@;'; put 'put ''Im1pbiIsIjEiLCJwbGFjZWhvbGRlciIsIk1heCBkZXB0aCB2YWx1ZSIsMSwiY2xyLWlucHV0IiwibWF4LWRlcHRoLWlucHV0Il0sWyJtYXhEZXB0aERvdCIsIiJdLFsxLCJtYi0yMCJdLFsxLCJiaWdsaW5lYWdlLXJvdyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRu''@;'; put 'put ''LXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwibXQtMy1uZWdhdGl2ZSIsMywiZGlzYWJsZWQiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xy''@;'; put 'put ''SWZPcGVuIl0sWyJtYXhEZXB0aCIsIiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2Rl''@;'; put 'put ''bENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImNsckV4''@;'; put 'put ''cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xp''@;'; put 'put ''Y2siXSxbInNoYXBlIiwicmFjay1zZXJ2ZXIiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVzIiwibmFt''@;'; put 'put ''ZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hUcmVlSW5wdXQiLCIiXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImlkIiwiY2xpY2siXSxbInNoYXBlIiwidGFibGUiXSxbImNscklucHV0Iiwi''@;'; put 'put ''IiwicGxhY2Vob2xkZXIiLCJDb2x1bW5zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJvYmplY3RzIl0sWzEsInctMTAwIiwi''@;'; put 'put ''dGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItc20iXSxbMSwibm8tdGFibGUtc2VsZWN0ZWQiXSxbInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxb''@;'; put 'put ''ImNsYXNzIiwiY2FyZC1oZWFkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJmb3JtLWJsb2NrIiwic3ciLCJwb3NpdGlvbi1yZWxhdGl2ZSIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsx''@;'; put 'put ''LCJsaW5hZ2UtdGl0bGUtd3JhcHBlciIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciIsImZvbnQtd2VpZ2h0LWJvbGQiLCJwb3NpdGlvbi1hYnNvbHV0ZSJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTEyIHRleHQtY2VudGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzMsIm10LTIiLDQsIm5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgcGItMTAiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJwYi0xMCJdLFszLCJyb3V0ZXJM''@;'; put 'put ''aW5rIl0sWzEsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1lbmQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsxLCJidG4tZ3JvdXAiLCJkLWJsb2NrIl0sWzEsInJhZGlvIiwiYnRuIiwz''@;'; put 'put ''LCJjbGljayJdLFsidHlwZSIsInJhZGlvIiwibmFtZSIsImJ0bi1ncm91cC1kZW1vLXJhZGlvcyIsMywiY2hlY2tlZCJdLFsxLCJtci0xMCJdLFsiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIiwxLCJidG4iLCJidG4taW5mby1vdXRsaW5lIiwzLCJkaXNhYmxlZCJdLFsiY2xhc3MiLCJkLWZsZXgg''@;'; put 'put ''YWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0Il0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRl''@;'; put 'put ''ciJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLCJuYW1lIiwicmVmcmVzaENhY2hlIiwzLCJuZ01vZGVsIiwiY2hhbmdlIiwibmdNb2RlbENoYW5nZSJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInBvc2l0aW9u''@;'; put 'put ''LXJlbGF0aXZlIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXIiXSxbMSwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiZ3JhcGgtcmVuZGVyLXNwaW5uZXIiXSxbImNsYXNzIiwic3Bpbm5lciBzcGlubmVyLXNtIiw0LCJuZ0lmIl0sWyJpZCIsImdyYXBoIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7''@;'; put 'put ''aWYoMSZhKXtjb25zdCBkPVpuKCk7eWUoMCwiYXBwLXNpZGViYXIiLDApLEV0KCJzY3JvbGxlZFRvQm90dG9tIixmdW5jdGlvbigpe3JldHVybiBmLmxvYWRNb3JlTGlicmFyaWVzKCl9KSx5ZSgxLCJjbHItdHJlZSIpLHR0KDIsakx0LDYsMywiY2xyLXRyZWUtbm9kZSIsMSksdHQoMyxYTHQs''@;'; put 'put ''MiwxLCJuZy1jb250YWluZXIiLDIpLENlKCksdHQoNCxKTHQsMywwLCJkaXYiLDMpLENlKCkseWUoNSwiZGl2Iiw0KSg2LCJkaXYiLDUpLHR0KDcsUUx0LDQsMCwiZGl2Iiw2KSx0dCg4LGRQdCw4LDQsIm5nLWNvbnRhaW5lciIsNyksQ2UoKSgpLHllKDksImNsci1tb2RhbCIsOCkoMTAsImgz''@;'; put 'put ''Iiw5KSxZZSgxMSwiTGltaXQgRGVwdGgiKSxDZSgpLHllKDEyLCJkaXYiLDEwKSgxMywicCIpLFllKDE0LCJFbnRlciB0aGUgZGVwdGggbnVtYmVyIHlvdSB3b3VsZCBsaWtlIHRvIGxpbWl0IERPVCByZW5kZXJpbmcgdG86IiksQ2UoKSgpLHllKDE1LCJkaXYiLDExKSgxNiwiZGl2IiwxMiks''@;'; put 'put ''dG4oMTcsImlucHV0IiwxMywxNCksQ2UoKSx5ZSgxOSwiY2xyLWNvbnRyb2wtaGVscGVyIiwxNSksWWUoMjAsIlRvIHJlbmRlciB3aXRoIHVubGltaXRlZCBkZXB0aCwgbGVhdmUgdGhlIGlucHV0IGVtcHR5IiksQ2UoKSx5ZSgyMSwiZGl2IiwxNikoMjIsImJ1dHRvbiIsMTcpLEV0KCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5saW1pdERvdERlcHRoPSExfSksWWUoMjMsIiBDYW5jZWwgIiksQ2UoKSx5ZSgyNCwiYnV0dG9uIiwxNyksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGQpO2NvbnN0IG09UWkoMTgpO3JldHVybiBmLnJlc3VibWl0V2l0aE1heERlcHRoKG0udmFsdWUp''@;'; put 'put ''LFp0KGYubGltaXREb3REZXB0aD0hMSl9KSxZZSgyNSwiIFJlc3VibWl0ICIpLENlKCkoKSgpKCkseWUoMjYsImNsci1tb2RhbCIsOCkoMjcsImgzIiw5KSxZZSgyOCwiV2FybmluZyIpLENlKCkseWUoMjksImRpdiIsMTApKDMwLCJwIiksWWUoMzEpLENlKCkoKSx5ZSgzMiwiZGl2IiwxMSko''@;'; put 'put ''MzMsImRpdiIsMTYpKDM0LCJwIiksWWUoMzUsIlJlbmRlciBhbnl3YXkgKHRoaXMgbWF5IHRha2UgYSBsb25nIHRpbWUpIiksQ2UoKSx5ZSgzNiwiYnV0dG9uIiwxNyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmNvbnRpbnVlUmVuZGVyaW5nR3JhcGgoKX0pLFllKDM3LCIgUmVu''@;'; put 'put ''ZGVyICIpLENlKCkoKSx5ZSgzOCwiZGl2IiwxNikoMzksInAiKSxZZSg0MCwiRG93bmxvYWQgdGhlIHJlc3VsdCAoUE5HICYgU1ZHIHJlcXVpcmUgcmVuZGVyaW5nKSIpLENlKCkseWUoNDEsImNsci1kcm9wZG93biIpKDQyLCJidXR0b24iLDE4KSxZZSg0MywiIERvd25sb2FkICIpLHRuKDQ0''@;'; put 'put ''LCJjbHItaWNvbiIsMTkpLENlKCksdHQoNDUscFB0LDYsMSwiY2xyLWRyb3Bkb3duLW1lbnUiLDIwKSxDZSgpKCkseWUoNDYsImRpdiIsMTYpKDQ3LCJwIiksWWUoNDgsIlJlc3VibWl0IHdpdGggYSBtYXgtZGVwdGggKHNwZWNpZnkgZGVwdGgpIiksQ2UoKSx0big0OSwiaW5wdXQiLDEzLDIx''@;'; put 'put ''KSx5ZSg1MSwiYnV0dG9uIiwxNyksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGQpO2NvbnN0IG09UWkoNTApO3JldHVybiBadChmLnJlc3VibWl0V2l0aE1heERlcHRoKG0udmFsdWUpKX0pLFllKDUyLCIgUmVzdWJtaXQgIiksQ2UoKSgpLHllKDUzLCJkaXYiLDE2KSg1NCwicCIpLFllKDU1''@;'; put 'put ''LCJDYW5jZWwgdGhpcyBzdWJtaXNzaW9uIiksQ2UoKSx5ZSg1NiwiYnV0dG9uIiwxNyksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmNhbmNlbFJlbmRlcmluZ0dyYXBoKCl9KSxZZSg1NywiIENhbmNlbCAiKSxDZSgpKCkoKSgpfTImYSYmKFNlKDIpLFJlKCJuZ0lmIixmLmxpYnJh''@;'; put 'put ''cnlMaXN0KSxTZSgxKSxSZSgibmdGb3JPZiIsZi5saWJyYXJ5TGlzdCksU2UoMSksUmUoIm5nSWYiLGYubGlicmFyaWVzUGFnaW5nKSxTZSgzKSxSZSgibmdJZiIsIWYuY29sdW1uJiYhZi50YWJsZSksU2UoMSksUmUoIm5nSWYiLGYuY29sdW1ufHxmLnRhYmxlKSxTZSgxKSxSZSgiY2xyTW9k''@;'; put 'put ''YWxPcGVuIixmLmxpbWl0RG90RGVwdGgpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoMTcpLFJlKCJjbHJNb2RhbE9wZW4iLG51bGwhPT1mLmxhcmdlRG90RmlsZUxpbmVzKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLFNlKDUpLHdyKCIgVGhlIGdlbmVyYXRlZCBkb3QgZmlsZSBoYXMgIixm''@;'; put 'put ''LmxhcmdlRG90RmlsZUxpbmVzLCIgbGluZXMuIFJlbmRlcmluZyBtYXkgdGFrZSBhIGxvbmcgdGltZSwgaG93IHdvdWxkIHlvdSBsaWtlIHRvIHByb2NlZWQ/ICIpLFNlKDExKSxSZSgiZGlzYWJsZWQiLCFmLmNvbHVtbiYmIWYudGFibGUpKX0sZGVwZW5kZW5jaWVzOltSYSwkaSxpcyxSMCxX''@;'; put 'put ''YSx6YSxJMCxEZCxMZixpNSxSbCxNYyxrYyxKYyx4ZCxlbCx4VSxCMCxWMCxSZixhMyxvNSxhNSx4NyxrNF0sc3R5bGVzOlsiLnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1bX25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0jZ3JhcGhbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2hlaWdodDpjYWxjKDEwMHZoIC0gMTk1cHgpO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZTRlNGU0O21hcmdpbi10b3A6MTBweH0uc2VsZWN0aW9uLXdyYXBwZXJbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWF4LXdpZHRoOjY3MHB4fS5jb2x1bW4tYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNkOGUzZTk7Y29sb3I6IzAwMH0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41cmVtIWltcG9ydGFudH0u''@;'; put 'put ''Y29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmNhbGMoMTAwdmggLSAxMjBweCl9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZFtfbmdjb250ZW50LSVDT01QJV0gICAuY2FyZC1ibG9ja1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNXJlbSAuMzVyZW0haW1wb3J0YW50fWNsci10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9LmdyYXBoLXJlbmRlci1zcGlubmVyW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MTBweH0uYmlnbGluZWFnZS1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0''@;'; put 'put ''d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4fS5tb2RhbC1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjB9LmxpbmVhZ2UtdGl0bGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bGVmdDoxMnB4fS5tYXgt''@;'; put 'put ''ZGVwdGgtaW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9QG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KXsudG9nZ2xlLXN3aXRjaC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MjBweH19Il19KSxsfSkoKTtmdW5jdGlvbiBnUHQobCxjKXtpZigx''@;'; put 'put ''JmwmJih5ZSgwLCJvcHRpb24iLDExKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UnUoInZhbHVlIixhKSxTZSgxKSx3cigiICIsYSwiICIpfX1mdW5jdGlvbiB2UHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwxOCl9ZnVuY3Rpb24geVB0KGwsYyl7aWYoMSZsKXtj''@;'; put 'put ''b25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDE5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5tZXRhRGF0YVNlYXJjaD0iIixadChkLm1ldGFMaXN0T25GaWx0ZXIoKSl9KSxDZSgpfX1mdW5jdGlvbiBiUHQobCxjKXtpZigxJmwpe2NvbnN0''@;'; put 'put ''IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiwxMikoMSwiZGl2IiwxMykoMiwiaW5wdXQiLDE0LDE1KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubWV0YURhdGFTZWFyY2g9ZCl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEp''@;'; put 'put ''LFp0KEdlKCkubWV0YUxpc3RPbkZpbHRlcigpKX0pLENlKCksdHQoNCx2UHQsMSwwLCJjbHItaWNvbiIsMTYpLHR0KDUseVB0LDEsMCwiY2xyLWljb24iLDE3KSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoKTtTZSgyKSxSZSgibmdNb2RlbCIsZi5tZXRhRGF0YVNlYXJjaCks''@;'; put 'put ''U2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gX1B0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMjEpLEV0KCJjbGljayIsZnVuY3Rpb24oZCl7VXQoYSk7Y29u''@;'; put 'put ''c3QgaD1HZSgpLiRpbXBsaWNpdCxtPUdlKCk7cmV0dXJuIFp0KG0udHJlZU5vZGVDbGlja2VkKGQsaCxtLm1ldGFEYXRhTGlzdCkpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS4kaW1wbGljaXQuZXhwYW5kZWQ9ZCl9KSx5ZSgxLCJwIiwy''@;'; put 'put ''MiksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQsaD1HZSgpO3JldHVybiBoLm1ldGFEYXRhSWQ9ZC5JRCxadChoLm1ldGFEYXRhT25DbGljayhoLm1ldGFEYXRhSWQsZCkpfSksdG4oMiwiY2xyLWljb24iLDIzKSxZZSgzKSxDZSgpKCl9aWYoMiZs''@;'; put 'put ''KXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1JlKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCkoImNsckxvYWRpbmciLGEubG9hZGluZ1RhYmxlcyYmIWEudGFibGVzKSxTZSgzKSx3cigiICIsYS5JRCwiICIpfX1mdW5jdGlvbiB3UHQobCxjKXtpZigxJmwmJihXcigwKSx0dCgxLF9QdCw0LDMs''@;'; put 'put ''ImNsci10cmVlLW5vZGUiLDIwKSxHcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksUmUoIm5nSWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIENQdChsLGMpezEmbCYmKHllKDAsImRpdiIsMjQpLHRuKDEsImNsci1pY29uIiwyNSkseWUoMiwiaDMiLDI2KSxZZSgzLCJQbGVhc2Ug''@;'; put 'put ''c2VsZWN0IGEgdHlwZSIpLENlKCkoKSl9ZnVuY3Rpb24gU1B0KGwsYyl7MSZsJiYoeWUoMCwiaDQiKSxZZSgxLCJMb2FkaW5nIG1ldGFkYXRhIHR5cGVzIiksQ2UoKSl9ZnVuY3Rpb24gTVB0KGwsYyl7MSZsJiYoeWUoMCwiaDQiKSxZZSgxLCJMb2FkaW5nIG1ldGFkYXRhIG9iamVjdHMiKSxD''@;'; put 'put ''ZSgpKX1mdW5jdGlvbiBrUHQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiKSx0dCgxLFNQdCwyLDAsImg0IiwyOSksdHQoMixNUHQsMiwwLCJoNCIsMjkpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSxSZSgibmdJZiIsYS5tZXRhdHlwZXNMb2FkaW5nKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''IWEubWV0YXR5cGVzTG9hZGluZyl9fWZ1bmN0aW9uIEVQdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMjcpKDEsInNwYW4iLDI4KSxZZSgyLCIgTG9hZGluZy4uLiAiKSxDZSgpLHR0KDMsa1B0LDMsMiwiZGl2IiwyOSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMyksUmUoIm5nSWYi''@;'; put 'put ''LGEubG9hZGluZyl9fWZ1bmN0aW9uIHhQdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImRpdiIsMzYpKDEsImlucHV0IiwzNywzOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgyKS5tZXRhT2JqZWN0U2VhcmNoPWQpfSkoImtleXVw''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgyKS5tZXRhT2JqZWN0T25GaWx0ZXIoKSl9KSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLFJlKCJuZ01vZGVsIixhLm1ldGFPYmplY3RTZWFyY2gpfX1mdW5jdGlvbiBBUHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29u''@;'; put 'put ''Iiw0Mil9ZnVuY3Rpb24gVFB0KGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsMjMpfWZ1bmN0aW9uIE9QdChsLGMpe2lmKDEmbCYmKHllKDAsInAiLDUzKSxZZSgxKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMSksd3IoIiAiLGEuVVJJLCIgIil9fWZ1bmN0aW9uIERQ''@;'; put 'put ''dChsLGMpe2lmKDEmbCYmKHllKDAsImNsci10cmVlLW5vZGUiLDQ4KSgxLCJkaXYiLDQ5KSx0dCgyLEFQdCwxLDAsImNsci1pY29uIiw1MCksdHQoMyxUUHQsMSwwLCJjbHItaWNvbiIsNTEpLFllKDQpLHR0KDUsT1B0LDIsMSwicCIsNTIpLENlKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxp''@;'; put 'put ''Y2l0O1JlKCJjbHJFeHBhbmRhYmxlIiwhMCksU2UoMSksZ3IoIm9iamVjdC1oZWFkZXIiLCFhLmNvdW50KSxTZSgxKSxSZSgibmdJZiIsIWEuY291bnQpLFNlKDEpLFJlKCJuZ0lmIixhLmNvdW50KSxTZSgxKSx3cigiICIsYS5kaXNwbGF5LCIgIiksU2UoMSksUmUoIm5nSWYiLCFhLmNvdW50''@;'; put 'put ''KX19ZnVuY3Rpb24gSVB0KGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLXRyZWUiLDQ2KSx0dCgxLERQdCw2LDcsImNsci10cmVlLW5vZGUiLDQ3KSx3bCgyLCJhc3luYyIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSg2KTtSZSgiY2xyTGF6eSIsITApLFNlKDEpLFJlKCJjbHJSZWN1cnNpdmVGb3JP''@;'; put 'put ''ZiIsSnMoMiwzLGEucm9vdCQpKSgiY2xyUmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iLGEuZ2V0Q2hpbGRyZW4pfX1mdW5jdGlvbiBSUHQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItYWNjb3JkaW9uLWNvbnRlbnQiKSx0dCgxLElQdCwzLDUsImNsci10cmVlIiw0NSksQ2UoKSksMiZsKXtjb25z''@;'; put 'put ''dCBhPUdlKDUpO1NlKDEpLFJlKCJuZ0lmIixhLnNob3dBY2MpfX1mdW5jdGlvbiBMUHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItYWNjb3JkaW9uLXBhbmVsIiw0MSksRXQoImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSIsZnVuY3Rpb24oZCl7VXQoYSk7Y29uc3Qg''@;'; put 'put ''aD1HZSgpLiRpbXBsaWNpdCxtPUdlKDMpO3JldHVybiBadChkP20ucGFuZWxDaGFuZ2UoZCxoKToiIil9KSx5ZSgxLCJjbHItYWNjb3JkaW9uLXRpdGxlIiksdG4oMiwiY2xyLWljb24iLDQyKSxZZSgzKSx5ZSg0LCJwIiw0MyksWWUoNSksQ2UoKSgpLHR0KDYsUlB0LDIsMSwiY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1jb250ZW50Iiw0NCksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMyksd3IoIiAiLGEuTkFNRSwiICIpLFNlKDIpLGFyKGEuSUQpfX1mdW5jdGlvbiBQUHQobCxjKXtpZigxJmwmJihXcigwKSx0dCgxLExQdCw3LDIsImNsci1hY2NvcmRpb24tcGFuZWwiLDQw''@;'; put 'put ''KSxHcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksUmUoIm5nSWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIEZQdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMzkpKDEsImNsci1hY2NvcmRpb24iKSx0dCgyLFBQdCwyLDEsIm5nLWNvbnRhaW5lciIsNCksQ2UoKSgpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9R2UoMik7U2UoMiksUmUoIm5nRm9yT2YiLGEubWV0YU9iamVjdFNob3dMaXN0KX19ZnVuY3Rpb24gSFB0KGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsNDIpfWZ1bmN0aW9uIE5QdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDIzKX1mdW5jdGlvbiBWUHQobCxjKXtpZigx''@;'; put 'put ''JmwmJih5ZSgwLCJwIiw1MyksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1NlKDEpLHdyKCIgIixhLlVSSSwiICIpfX1mdW5jdGlvbiBCUHQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdHJlZS1ub2RlIiw0OCkoMSwiZGl2Iiw0OSksdHQoMixIUHQsMSwwLCJjbHIt''@;'; put 'put ''aWNvbiIsNTApLHR0KDMsTlB0LDEsMCwiY2xyLWljb24iLDUxKSxZZSg0KSx0dCg1LFZQdCwyLDEsInAiLDUyKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgiY2xyRXhwYW5kYWJsZSIsITApLFNlKDEpLGdyKCJvYmplY3QtaGVhZGVyIiwhYS5jb3VudCksU2UoMSksUmUo''@;'; put 'put ''Im5nSWYiLCFhLmNvdW50KSxTZSgxKSxSZSgibmdJZiIsYS5jb3VudCksU2UoMSksd3IoIiAiLGEuZGlzcGxheSwiICIpLFNlKDEpLFJlKCJuZ0lmIiwhYS5jb3VudCl9fWZ1bmN0aW9uIGpQdChsLGMpe2lmKDEmbCYmKHllKDAsImNsci10cmVlIiw0NiksdHQoMSxCUHQsNiw3LCJjbHItdHJl''@;'; put 'put ''ZS1ub2RlIiw0Nyksd2woMiwiYXN5bmMiKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoNCk7UmUoImNsckxhenkiLCEwKSxTZSgxKSxSZSgiY2xyUmVjdXJzaXZlRm9yT2YiLEpzKDIsMyxhLnJvb3QkKSkoImNsclJlY3Vyc2l2ZUZvckdldENoaWxkcmVuIixhLmdldENoaWxkcmVuKX19ZnVuY3Rp''@;'; put 'put ''b24gelB0KGwsYyl7aWYoMSZsJiYoV3IoMCkseWUoMSwiZGl2Iiw1NCksdG4oMiwiY2xyLWljb24iLDQyKSx5ZSgzLCJkaXYiLDU1KSg0LCJwIiw1NiksWWUoNSksQ2UoKSx5ZSg2LCJwIiw1NyksWWUoNyksQ2UoKSgpKCksdHQoOCxqUHQsMyw1LCJjbHItdHJlZSIsNDUpLEdyKCkpLDImbCl7''@;'; put 'put ''Y29uc3QgYT1jLiRpbXBsaWNpdCxmPUdlKDMpO1NlKDUpLHdyKCIgIixhLk5BTUUsIiAiKSxTZSgyKSx3cigiICIsYS5JRCwiICIpLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dBY2MpfX1mdW5jdGlvbiBVUHQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDM5KSx0dCgxLHpQdCw5LDMsIm5nLWNv''@;'; put 'put ''bnRhaW5lciIsNCksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDEpLFJlKCJuZ0Zvck9mIixhLm1ldGFPYmplY3RTaG93TGlzdCl9fWZ1bmN0aW9uIFpQdChsLGMpe2lmKDEmbCYmKHllKDAsImNsci1kZy1yb3ciKSgxLCJjbHItZGctY2VsbCIpLFllKDIpLENlKCkseWUoMywiY2xyLWRn''@;'; put 'put ''LWNlbGwiKSxZZSg0KSxDZSgpLHllKDUsImNsci1kZy1jZWxsIiksWWUoNiksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMiksYXIoYS5UWVBFKSxTZSgyKSxhcihhLk5BTUUpLFNlKDIpLGFyKGEuVkFMVUUpfX1jb25zdCBZUHQ9ZnVuY3Rpb24oKXtyZXR1cm5bMTAsMjAs''@;'; put 'put ''NTAsMTAwXX07ZnVuY3Rpb24gV1B0KGwsYyl7aWYoMSZsJiYoeWUoMCwiY2xyLWRhdGFncmlkIiw1OCkoMSwiY2xyLWRnLWNvbHVtbiIpLFllKDIsIiBUWVBFICIpLHRuKDMsImNsci1kZy1zdHJpbmctZmlsdGVyIiw1OSksQ2UoKSx5ZSg0LCJjbHItZGctY29sdW1uIiksWWUoNSwiIE5BTUUg''@;'; put 'put ''IiksdG4oNiwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDU5KSxDZSgpLHllKDcsImNsci1kZy1jb2x1bW4iKSxZZSg4LCIgVkFMVUUgIiksdG4oOSwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDU5KSxDZSgpLHR0KDEwLFpQdCw3LDMsImNsci1kZy1yb3ciLDYwKSx5ZSgxMSwiY2xyLWRnLWZvb3Rl''@;'; put 'put ''ciIpKDEyLCJjbHItZGctcGFnaW5hdGlvbiIsNjEsNjIpKDE0LCJjbHItZGctcGFnZS1zaXplIiw2MyksWWUoMTUsIkF0dHJpYnV0ZXMgcGVyIHBhZ2UiKSxDZSgpLFllKDE2KSxDZSgpKCkoKSksMiZsKXtjb25zdCBhPVFpKDEzKSxmPUdlKDIpO1NlKDMpLFJlKCJjbHJEZ1N0cmluZ0ZpbHRl''@;'; put 'put ''ciIsZi50eXBlRmlsdGVyKSxTZSgzKSxSZSgiY2xyRGdTdHJpbmdGaWx0ZXIiLGYubmFtZUZpbHRlciksU2UoMyksUmUoImNsckRnU3RyaW5nRmlsdGVyIixmLnZhbHVlRmlsdGVyKSxTZSgxKSxSZSgiY2xyRGdJdGVtc09mIixmLm1ldGFPYmplY3RBdHRyaWJ1dGVzKSxTZSgyKSxSZSgiY2xy''@;'; put 'put ''RGdQYWdlU2l6ZSIsMTApLFNlKDIpLFJlKCJjbHJQYWdlU2l6ZU9wdGlvbnMiLFhhKDksWVB0KSksU2UoMiksTzAoIiAiLGEuZmlyc3RJdGVtKzEsIiAtICIsYS5sYXN0SXRlbSsxLCIgb2YgIixhLnRvdGFsSXRlbXMsIiBBdHRyaWJ1dGVzICIpfX1mdW5jdGlvbiBHUHQobCxjKXtpZigxJmwm''@;'; put 'put ''Jih5ZSgwLCJkaXYiLDMwKSgxLCJkaXYiLDMxKSx0dCgyLHhQdCwzLDEsImRpdiIsMzIpLHRuKDMsImJyIiksdHQoNCxGUHQsMywxLCJkaXYiLDMzKSx0dCg1LFVQdCwyLDEsImRpdiIsMzMpLENlKCkseWUoNiwiZGl2IiwzNCkoNywiaDMiKSxZZSg4KSxDZSgpLHR0KDksV1B0LDE3LDEwLCJj''@;'; put 'put ''bHItZGF0YWdyaWQiLDM1KSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDIpLFJlKCJuZ0lmIixhLm1ldGFPYmplY3RMaXN0JiYhYS5vYmplY3RSb3V0ZSksU2UoMiksUmUoIm5nSWYiLCFhLm9iamVjdFZpZXcpLFNlKDEpLFJlKCJuZ0lmIixhLm9iamVjdFZpZXcpLFNlKDMpLGFyKGEu''@;'; put 'put ''YXNzb09iamVjdFNlbGVjdGVkKSxTZSgxKSxSZSgibmdJZiIsYS5zaG93VGFibGUpfX1sZXQgRVE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0sXyl7dGhpcy5ldmVudFNlcnZpY2U9YSx0aGlzLnNhc1NlcnZpY2U9Zix0aGlzLmhlbHBlclNlcnZpY2U9ZCx0aGlzLmxvY2F0''@;'; put 'put ''aW9uPWgsdGhpcy5yb3V0ZXI9bSx0aGlzLnJvdXRlPV8sdGhpcy5tZXRhRGF0YVNlYXJjaD0iIix0aGlzLm1ldGFPYmplY3RTZWFyY2g9IiIsdGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zPVtdLHRoaXMubWV0YU9iamVjdEF0dHJpYnV0ZXM9W10sdGhpcy5zaG93VGFibGU9ITEsdGhpcy5z''@;'; put 'put ''aG93QWNjPSExLHRoaXMubWV0YURhdGFJZD0iIix0aGlzLmxvYWRpbmc9ITAsdGhpcy5tZXRhdHlwZXNMb2FkaW5nPSEwLHRoaXMubWV0YU9iamVjdFNpemU9MjAwLHRoaXMuYXNzb1R5cGVTZWxlY3RlZD0iIix0aGlzLmFzc29PYmplY3RTZWxlY3RlZD0iIix0aGlzLnJlcG9zaXRvcnk9IiIs''@;'; put 'put ''dGhpcy5vYmplY3RSb3V0ZT0hMSx0aGlzLnNob3dEYXRhPSExLHRoaXMub2JqZWN0Vmlldz0hMSx0aGlzLmdldENoaWxkcmVuPU89Pk8uY291bnQ/R2koTy5kZXRhaWxzKTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhZGV0YWlscyIse1NBU0NvbnRyb2xUYWJsZTpbe29i''@;'; put 'put ''amVjdHVyaTpPLkFTU09DVVJJfV19KS50aGVuKGFlPT57dGhpcy5zaG93VGFibGU9ITAsdGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1hZS5hdHRyaWJ1dGVzLHRoaXMuYXNzb09iamVjdFNlbGVjdGVkPU8uTkFNRTtsZXQgcGU9dGhpcy5yb3V0ZXIudXJsO3JldHVybiB0aGlzLmxvY2F0aW9u''@;'; put 'put ''LnJlcGxhY2VTdGF0ZSh0aGlzLm9iamVjdFJvdXRlP3BlLnNsaWNlKDAscGUubGFzdEluZGV4T2YoIm9iamVjdCIpKSsib2JqZWN0LyIrTy5BU1NPQ1VSSS5zbGljZSgxK08uQVNTT0NVUkkuaW5kZXhPZigiXFwiKSk6cGUrIi9vYmplY3QvIitPLkFTU09DVVJJLnNsaWNlKDErTy5BU1NPQ1VS''@;'; put 'put ''SS5pbmRleE9mKCJcXCIpKSksdGhpcy5nZXRBc3Nvc2lhdGlvbnNDb3VudChhZS5hc3NvY2lhdGlvbnMpfSksdGhpcy5kZWJvdW5jZT0hMX1uZ09uSW5pdCgpe0puLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L21ldGFkYXRhIix0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoIi92aWV3''@;'; put 'put ''L21ldGFkYXRhL29iamVjdC8iKSYmKHRoaXMub2JqZWN0Um91dGU9ITAsdGhpcy5vYmplY3RWaWV3PSEwKSx0aGlzLnBhZ2VTaXplPTUsSm4ubWV0YWRhdGEubWV0YURhdGFMaXN0JiZKbi5tZXRhZGF0YS5tZXRhUmVwb3NpdG9yaWVzJiYhdGhpcy5vYmplY3RSb3V0ZT8odGhpcy5tZXRhRGF0''@;'; put 'put ''YUxpc3Q9Sm4ubWV0YWRhdGEubWV0YURhdGFMaXN0LHRoaXMucmVwb3NpdG9yaWVzPUpuLm1ldGFkYXRhLm1ldGFSZXBvc2l0b3JpZXMsdGhpcy5yZXBvc2l0b3J5PUpuLm1ldGFkYXRhLnNlbGVjdGVkUmVwb3NpdG9yeSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5tZXRhdHlwZXNMb2FkaW5nPSEx''@;'; put 'put ''LHRoaXMubWV0YURhdGFTZWFyY2g9Sm4ubWV0YWRhdGEubWV0YURhdGFTZWFyY2gpOih0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhdHlwZXMiLG51bGwpLnRoZW4oYT0+e3RoaXMubWV0YURhdGFMaXN0PWEudHlwZXMsSm4ubWV0YWRhdGEubWV0YURhdGFMaXN0PXRoaXMu''@;'; put 'put ''bWV0YURhdGFMaXN0LHRoaXMubG9hZGluZz0hMSx0aGlzLm1ldGF0eXBlc0xvYWRpbmc9ITF9KSx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhcmVwb3MiLG51bGwpLnRoZW4oYT0+e2xldCBmPSExO3RoaXMucmVwb3NpdG9yaWVzPVtdO2ZvcihsZXQgZD0wO2Q8YS5vdXRy''@;'; put 'put ''ZXBvcy5sZW5ndGg7ZCsrKXRoaXMucmVwb3NpdG9yaWVzLnB1c2goYS5vdXRyZXBvc1tkXS5OQU1FKSwiRm91bmRhdGlvbiI9PT1hLm91dHJlcG9zW2RdLk5BTUUmJihmPSEwKTtpZih0aGlzLnJlcG9zaXRvcnk9Zj8iRm91bmRhdGlvbiI6YS5vdXRyZXBvc1swXS5OQU1FLEpuLm1ldGFkYXRh''@;'; put 'put ''Lm1ldGFSZXBvc2l0b3JpZXM9dGhpcy5yZXBvc2l0b3JpZXMsSm4ubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5PXRoaXMucmVwb3NpdG9yeSx0aGlzLm9iamVjdFJvdXRlKXt0aGlzLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSx0aGlzLnNob3dEYXRhPSEwO2xldCBkPSIiLGg9dGhp''@;'; put 'put ''cy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMub2JqZWN0SUQ7dGhpcy5tZXRhT2JqZWN0TGlzdD1bXSx0aGlzLm1ldGFPYmplY3RMaXN0LnB1c2goe0lEOmgsTkFNRTpkfSksdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRhT2JqZWN0TGlzdCx0aGlzLm1ldGFPYmplY3RPbkNsaWNrKHRo''@;'; put 'put ''aXMubWV0YU9iamVjdFNob3dMaXN0WzBdLklELHRoaXMubWV0YU9iamVjdFNob3dMaXN0WzBdKX19KSl9dHJlZU5vZGVDbGlja2VkKGEsZixkKXsiQ29sbGFwc2UiPT09YS50YXJnZXQudGl0bGUmJnRoaXMuY29sbGFwc2VUcmVlSXRlbXMoZCxmKX1jb2xsYXBzZVRyZWVJdGVtcyhhLGYpe2Eu''@;'; put 'put ''Zm9yRWFjaChkPT57SlNPTi5zdHJpbmdpZnkoZCkhPT1KU09OLnN0cmluZ2lmeShmKSYmKGQuZXhwYW5kZWQ9ITEpfSl9bWV0YURhdGFPbkNsaWNrKGEsZil7dGhpcy5vYmplY3RWaWV3PSExLHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCIvdmlldy9tZXRhZGF0YSIpLHRoaXMuc2hvd0Rh''@;'; put 'put ''dGE9ITEsdGhpcy5sb2FkaW5nPSEwLHRoaXMuc2VsZWN0bWV0YURhdGEoYSxmKX1tZXRhT2JqZWN0T25DbGljayhhLGYpe3RoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIgLiAiLHRoaXMuc2hvd0FjYz0hMSx0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2VsZWN0bWV0YU9iamVj''@;'; put 'put ''dChhLGYpfXNlbGVjdG1ldGFEYXRhKGEsZil7dmFyIGQ9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7ZC5zYXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YW9iamVjdHMiLHtTQVNDb250cm9sVGFibGU6W3ttZXRhdHlwZTphLHJlcG86ZC5yZXBvc2l0b3J5fV19KS50aGVuKG09Pntk''@;'; put 'put ''Lm1ldGFPYmplY3RMaXN0PW0ub2JqZWN0cyxkLmdldE1ldGFPYmplY3RBdHRyaWJ1dGVzKGQubWV0YU9iamVjdFNpemUpLGQubG9hZGluZz0hMSxkLmFzc29UeXBlU2VsZWN0ZWQ9YSxkLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSxkLnNob3dEYXRhPSEwfSl9KSgpfXNlbGVjdG1ldGFP''@;'; put 'put ''YmplY3QoYSxmKXt2YXIgZD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtkLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhZGV0YWlscyIse1NBU0NvbnRyb2xUYWJsZTpbe29iamVjdHVyaTphfV19KS50aGVuKG09PntkLm1ldGFPYmplY3RBc3NvY2lhdGlvbnM9bS5hc3NvY2lh''@;'; put 'put ''dGlvbnMsZC5yb290JD1HaShkLmdldEFzc29zaWF0aW9uc0NvdW50KG0uYXNzb2NpYXRpb25zKSksZC5zaG93QWNjPSEwLGQuc2hvd1RhYmxlPSEwO2xldCBfPW0uYXR0cmlidXRlcy5maW5kKFg9PiJOYW1lIj09PVguTkFNRSkuVkFMVUU7ZC5hc3NvT2JqZWN0U2VsZWN0ZWQ9XyxmLk5BTUU9''@;'; put 'put ''XztsZXQgTz1kLnJvdXRlci51cmw7ZC5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoZC5vYmplY3RSb3V0ZT9PLnNsaWNlKDAsTy5sYXN0SW5kZXhPZigib2JqZWN0IikpKyJvYmplY3QvIithLnNsaWNlKDErYS5pbmRleE9mKCJcXCIpKTpPKyIvb2JqZWN0LyIrYS5zbGljZSgxK2EuaW5kZXhPZigi''@;'; put 'put ''XFwiKSkpLGQubWV0YU9iamVjdEF0dHJpYnV0ZXM9bS5hdHRyaWJ1dGVzfSl9KSgpfXNlbGVjdEFzc29zaWF0aW9uc0RldGFpbHMoYSxmKXt2YXIgZD10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXtkLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhZGV0YWlscyIse1NBU0NvbnRy''@;'; put 'put ''b2xUYWJsZTpbe29iamVjdHVyaTphfV19KS50aGVuKG09PntkLm1ldGFPYmplY3RBdHRyaWJ1dGVzPW0uYXR0cmlidXRlcyxkLnNob3dUYWJsZT0hMH0pfSkoKX1nZXRBc3Nvc2lhdGlvbnNDb3VudChhKXtsZXQgZj1uZXcgTWFwO2ZvcihsZXQgaCBvZiBhKXtmLmhhcyhoLkFTU09DKXx8Zi5z''@;'; put 'put ''ZXQoaC5BU1NPQyx7Y291bnQ6MCxkZXRhaWxzOltdfSk7bGV0IG09Zi5nZXQoaC5BU1NPQyk7bS5jb3VudCsrLG0uZGV0YWlscy5wdXNoKHtBU1NPQ1VSSTpoLkFTU09DVVJJLE5BTUU6aC5OQU1FLGRpc3BsYXk6aC5OQU1FLFVSSTpoLkFTU09DVVJJLnNsaWNlKGguQVNTT0NVUkkuaW5kZXhP''@;'; put 'put ''ZigiOiIpKzEpfSl9bGV0IGQ9W107cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihoLG0pe2QucHVzaCh7QVNTT0M6bSxjb3VudDpoLmNvdW50LGRldGFpbHM6aC5kZXRhaWxzLGRpc3BsYXk6bSsiICggIitoLmNvdW50KyIgKSJ9KX0pLGR9c2V0VHlwZUFzc29zaWF0aW9ucyhhKXtsZXQgZj1b''@;'; put 'put ''XTtmb3IobGV0IGQgb2YgdGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zKWQuQVNTT0M9PT1hJiZmLnB1c2goZCk7cmV0dXJuIHRoaXMuYXNzb3NpYXRpb25OYW1lcz1mLGZ9YXNzb3NpYXRpb25OYW1lT25DbGljayhhKXt0aGlzLmFzc29PYmplY3RTZWxlY3RlZD0iIC4gIix0aGlzLm1ldGFP''@;'; put 'put ''YmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2hvd1RhYmxlPSExLHRoaXMuc2VsZWN0QXNzb3NpYXRpb25zRGV0YWlscyhhKX1tZXRhTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLm1ldGFEYXRhTGlzdCx0aGlzLm1ldGFEYXRhU2VhcmNoLCJJ''@;'; put 'put ''RCIpLEpuLm1ldGFkYXRhLm1ldGFEYXRhU2VhcmNoPXRoaXMubWV0YURhdGFTZWFyY2h9bWV0YU9iamVjdE9uRmlsdGVyKCl7dGhpcy5tZXRhT2JqZWN0QXR0cmlidXRlcz1bXSx0aGlzLmhlbHBlclNlcnZpY2UubWV0YU9iamVjdE9uRmlsdGVyKHRoaXMubWV0YU9iamVjdExpc3QsdGhpcy5t''@;'; put 'put ''ZXRhT2JqZWN0U2VhcmNoLCJOQU1FIiksdGhpcy5nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyh0aGlzLm1ldGFPYmplY3RTaXplKSxKbi5tZXRhZGF0YS5tZXRhT2JqZWN0U2VhcmNoPXRoaXMubWV0YU9iamVjdFNlYXJjaH1nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyhhKXtpZih2b2lkIDAhPT10''@;'; put 'put ''aGlzLm1ldGFPYmplY3RMaXN0JiZ0aGlzLm1ldGFPYmplY3RMaXN0Lmxlbmd0aD5hKXtsZXQgZj0wLGQ9LTE7Zm9yKGxldCBoPTA7aDx0aGlzLm1ldGFPYmplY3RMaXN0Lmxlbmd0aDtoKyspaWYoKHZvaWQgMD09PXRoaXMubWV0YU9iamVjdExpc3RbaF0uaGlkZGVufHwhMT09PXRoaXMubWV0''@;'; put 'put ''YU9iamVjdExpc3RbaF0uaGlkZGVuKSYmZisrLGY9PT1hKXtkPWg7YnJlYWt9dGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9LTEhPT1kP3RoaXMubWV0YU9iamVjdExpc3Quc2xpY2UoMCxkKTp0aGlzLm1ldGFPYmplY3RMaXN0fWVsc2UgdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRh''@;'; put 'put ''T2JqZWN0TGlzdH1wYW5lbENoYW5nZShhLGYpe3RoaXMuZGVib3VuY2V8fCh0aGlzLm1ldGFPYmplY3RPbkNsaWNrKGYuSUQsZiksdGhpcy5kZWJvdW5jZT0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5kZWJvdW5jZT0hMX0sNjAwKSl9dXBkYXRlU2VsZWN0ZWRSZXBvc2l0b3J5KCl7Sm4ubWV0''@;'; put 'put ''YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5PXRoaXMucmVwb3NpdG9yeX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUnMpLHJ0KHBsKSxydChQdSkscnQoZ2QpLHJ0KExhKSxydCh0dSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9y''@;'; put 'put ''czpbWyJhcHAtbWV0YWRhdGEiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE3LHZhcnM6OCxjb25zdHM6W1sxLCJyZXBvLWRyb3Bkb3duIl0sWyJjbHJTZWxlY3QiLCIiLCJpZCIsInJlcG9zaXRvcnkiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwiY2hh''@;'; put 'put ''bmdlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIiwiYmFja2dyb3VuZC10cmFuc3BhcmVudC1pIl0sWzEsImNvbG9yLWdyYXki''@;'; put 'put ''XSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXJvdyBjbHItZmxleC1ncm93LTEiLDQsIm5nSWYiXSxbMywidmFsdWUiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFy''@;'; put 'put ''Y2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsInNlYXJjaCBTQVMgVHlwZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2hh''@;'; put 'put ''cGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIs''@;'; put 'put ''NCwibmdJZiJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJibG9jayJdLFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5n''@;'; put 'put ''LXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWzQsIm5nSWYiXSxbMSwiY2xyLXJvdyIsImNsci1mbGV4LWdyb3ctMSJdLFsxLCJj''@;'; put 'put ''bHItY29sLTYiXSxbImNsYXNzIiwic2VhcmNoLWlucHV0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9iamVjdHMtY29sIiw0LCJuZ0lmIl0sWzEsImNsci1jb2wtNiIsInRleHQtY2VudGVyIl0sWyJjbGFzcyIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiLDQsIm5nSWYiXSxbMSwic2VhcmNoLWlu''@;'; put 'put ''cHV0Il0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImtleXVwIl0sWyJzZWFyY2hPYmpUcmVlSW5wdXQiLCIiXSxbMSwib2JqZWN0cy1jb2wiXSxbMywi''@;'; put 'put ''Y2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFsxLCJmbG9hdC1yaWdodCJdLFs0LCJjbHJJZkV4cGFuZGVkIl0sWzMsImNsckxhenkiLDQsIm5nSWYiXSxbMywiY2xy''@;'; put 'put ''TGF6eSJdLFszLCJjbHJFeHBhbmRhYmxlIiw0LCJjbHJSZWN1cnNpdmVGb3IiLCJjbHJSZWN1cnNpdmVGb3JPZiIsImNsclJlY3Vyc2l2ZUZvckdldENoaWxkcmVuIl0sWzMsImNsckV4cGFuZGFibGUiXSxbMSwiZnVsbC13aWR0aCJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciIsNCwibmdJZiJd''@;'; put 'put ''LFsic2hhcGUiLCJibG9jayIsNCwibmdJZiJdLFsiY2xhc3MiLCJmbG9hdC1yaWdodCBvYmplY3QtdXJpIiw0LCJuZ0lmIl0sWzEsImZsb2F0LXJpZ2h0Iiwib2JqZWN0LXVyaSJdLFsxLCJjb2xzLWhlYWQiXSxbMSwib2JqZWN0LXRleHQiXSxbMSwibS0wIiwid29yZC1icmVhayIsIm1yLTIw''@;'; put 'put ''Il0sWzEsImZsb2F0LXJpZ2h0IiwibWwtMyJdLFsxLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzMsImNsckRnU3RyaW5nRmlsdGVyIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdlU2l6ZSJdLFsicGFnaW5hdGlvbiIsIiJdLFszLCJjbHJQYWdlU2l6''@;'; put 'put ''ZU9wdGlvbnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJhcHAtc2lkZWJhciIpKDEsImRpdiIsMCkoMiwiY2xyLXNlbGVjdC1jb250YWluZXIiKSgzLCJsYWJlbCIpLFllKDQsIk1ldGFkYXRhIFJlcG9zaXRvcnkiKSxDZSgpLHllKDUsInNlbGVjdCIsMSksRXQoIm5n''@;'; put 'put ''TW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnJlcG9zaXRvcnk9aH0pKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGYudXBkYXRlU2VsZWN0ZWRSZXBvc2l0b3J5KCl9KSx0dCg2LGdQdCwyLDIsIm9wdGlvbiIsMiksQ2UoKSgpKCkseWUoNywiY2xyLXRyZWUiKSx0dCg4LGJQ''@;'; put 'put ''dCw2LDMsImNsci10cmVlLW5vZGUiLDMpLHR0KDksd1B0LDIsMSwibmctY29udGFpbmVyIiw0KSxDZSgpKCkseWUoMTAsImRpdiIsNSkoMTEsImRpdiIsNikoMTIsImgzIiw3KSxZZSgxMyksQ2UoKSx0dCgxNCxDUHQsNCwwLCJkaXYiLDgpLHR0KDE1LEVQdCw0LDEsImRpdiIsOSksdHQoMTYs''@;'; put 'put ''R1B0LDEwLDUsImRpdiIsMTApLENlKCkoKSksMiZhJiYoU2UoNSksUmUoIm5nTW9kZWwiLGYucmVwb3NpdG9yeSksU2UoMSksUmUoIm5nRm9yT2YiLGYucmVwb3NpdG9yaWVzKSxTZSgyKSxSZSgibmdJZiIsZi5tZXRhRGF0YUxpc3QpLFNlKDEpLFJlKCJuZ0Zvck9mIixmLm1ldGFEYXRhTGlz''@;'; put 'put ''dCksU2UoNCksYXIoZi5hc3NvVHlwZVNlbGVjdGVkKSxTZSgxKSxSZSgibmdJZiIsIWYubG9hZGluZyYmIWYubWV0YU9iamVjdExpc3QpLFNlKDEpLFJlKCJuZ0lmIixmLmxvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixmLnNob3dEYXRhKSl9LGRlcGVuZGVuY2llczpbUmEsJGksUzEsTTEsaXMs''@;'; put 'put ''TDAsV2EsemEsUzcsdzQsSmcsaEksXzcsb1oscEksUWcsVXNlLGU1LHQ1LGs3LG41LHY3LGI0LGI3LFVVLERkLExmLHFzZSxSbCxKYyxzc2UsZWwsUmYsbTcscDcsS2xlLHFELFhsZSxxbGUsSmxlLGdVLGs0LHpPXSxzdHlsZXM6WyIub2JqZWN0cy1jb2xbX25nY29udGVudC0lQ09NUCVde2hl''@;'; put 'put ''aWdodDo3NXZoO292ZXJmbG93OnNjcm9sbDtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7YmFja2dyb3VuZDp3aGl0ZTtib3JkZXItcmFkaXVzOjRweH0uY29scy1oZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym9yZGVyOjFweCBzb2xpZCAjY2NjY2NjO3BhZGRp''@;'; put 'put ''bmc6MTBweDtkaXNwbGF5OmZsZXh9Lm9iamVjdC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tbGVmdDoxMHB4O2ZsZXg6MX0ucmVwby1kcm9wZG93bltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6MTVweDttYXJnaW4tYm90dG9tOjEwcHh9LmNsci1hY2NvcmRpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmZsb2F0LXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDtmbG9hdDpy''@;'; put 'put ''aWdodH0uZnVsbC13aWR0aFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ub2JqZWN0LXVyaVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjVweCAwIDB9Lm9iamVjdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctbGVmdDozcHg7cGFkZGluZy1yaWdodDozcHh9Lm9i''@;'; put 'put ''amVjdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtib3JkZXItcmFkaXVzOjNweH0uZGF0YWdyaWQtaG9zdFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp1bnNldCFpbXBvcnRhbnR9LmNhcmRbX25nY29udGVudC0lQ09NUCVde21h''@;'; put 'put ''cmdpbi10b3A6MDtmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41cmVtIWltcG9ydGFudDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufSJdfSksbC5cdTAyNzVwcm92PWhy''@;'; put 'put ''KHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKTtmdW5jdGlvbiAkUHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwxMil9ZnVuY3Rpb24gS1B0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDEzKSxFdCgiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5yb2xlU2VhcmNoPSIiLFp0KGQucm9sZUxpc3RPbkZpbHRlcigpKX0pLENlKCl9fWZ1bmN0aW9uIHFQdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsNyko''@;'; put 'put ''MiwiaW5wdXQiLDgsOSksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLnJvbGVTZWFyY2g9ZCl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkucm9sZUxpc3RPbkZpbHRlcigpKX0pLENlKCksdHQoNCwkUHQsMSwwLCJj''@;'; put 'put ''bHItaWNvbiIsMTApLHR0KDUsS1B0LDEsMCwiY2xyLWljb24iLDExKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPVFpKDMpLGY9R2UoKTtTZSgyKSxSZSgibmdNb2RlbCIsZi5yb2xlU2VhcmNoKSxTZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksU2UoMSksUmUoIm5nSWYiLGEudmFs''@;'; put 'put ''dWUubGVuZ3RoPjApfX1mdW5jdGlvbiBYUHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiwxNSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkucm9sZU9uQ2xpY2soZCkpfSkseWUo''@;'; put 'put ''MSwicCIsMTYpLHRuKDIsImNsci1pY29uIiwxNyksWWUoMyksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgpLiRpbXBsaWNpdCxmPUdlKCk7Z3IoInRhYmxlLWFjdGl2ZSIsYS5ST0xFVVJJPT09Zi5yb2xlVXJpKSxTZSgzKSx3cigiICIsYS5ST0xFTkFNRSwiICIpfX1mdW5jdGlvbiBKUHQo''@;'; put 'put ''bCxjKXtpZigxJmwmJihXcigwKSx0dCgxLFhQdCw0LDMsImNsci10cmVlLW5vZGUiLDE0KSxHcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksUmUoIm5nSWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIFFQdChsLGMpezEmbCYmKHllKDAsImRpdiIsMTgpKDEsInNwYW4iLDE5KSxZ''@;'; put 'put ''ZSgyLCIgTG9hZGluZy4uLiAiKSxDZSgpKCkpfWZ1bmN0aW9uIGVGdChsLGMpezEmbCYmKHllKDAsImg1IiksWWUoMSwiTm8gTWVtYmVycyBQcmVzZW50IiksQ2UoKSl9ZnVuY3Rpb24gdEZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiLDMyKSgxLCJ0ZCIsMzApLFllKDIpLENlKCkseWUoMywi''@;'; put 'put ''dGQiLDMwKSxZZSg0KSxDZSgpLHllKDUsInRkIiwzMCksWWUoNiksQ2UoKSx5ZSg3LCJ0ZCIsMzApLFllKDgpLENlKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi91c2Vycy8iK2EuVVJJTUVNKSxTZSgyKSxhcihhLk1FTUJFUk5B''@;'; put 'put ''TUUpLFNlKDIpLGFyKGEuRU1BSUwpLFNlKDIpLGFyKGEuTUVNQkVSQ1JFQVRFRCksU2UoMiksYXIoYS5NRU1CRVJVUERBVEVEKX19ZnVuY3Rpb24gbkZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwidGFibGUiLDI4KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDI5KSg0LCJiIiksWWUoNSwiTkFN''@;'; put 'put ''RSIpLENlKCkoKSx5ZSg2LCJ0ZCIsMjkpKDcsImIiKSxZZSg4LCJFTUFJTCIpLENlKCkoKSx5ZSg5LCJ0ZCIsMjkpKDEwLCJiIiksWWUoMTEsIkNSRUFURUQiKSxDZSgpKCkseWUoMTIsInRkIiwzMCkoMTMsImIiKSxZZSgxNCwiVVBEQVRFRCIpLENlKCkoKSgpKCkseWUoMTUsInRib2R5Iiks''@;'; put 'put ''dHQoMTYsdEZ0LDksNSwidHIiLDMxKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxNiksUmUoIm5nRm9yT2YiLGEucm9sZU1lbWJlcnMpfX1mdW5jdGlvbiByRnQobCxjKXsxJmwmJih5ZSgwLCJoNSIpLFllKDEsIk5vIEdyb3VwcyBQcmVzZW50ICEiKSxDZSgpKX1mdW5jdGlvbiBp''@;'; put 'put ''RnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIsMzIpKDEsInRkIiwzMCksWWUoMiksQ2UoKSx5ZSgzLCJ0ZCIsMzApLFllKDQpLENlKCkseWUoNSwidGQiLDMwKSxZZSg2KSxDZSgpLHllKDcsInRkIiwzMCksWWUoOCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInJvdXRl''@;'; put 'put ''ckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iK2EuVVJJTUVNKSxTZSgyKSxhcihhLk1FTUJFUk5BTUUpLFNlKDIpLGFyKGEuRU1BSUwpLFNlKDIpLGFyKGEuTUVNQkVSQ1JFQVRFRCksU2UoMiksYXIoYS5NRU1CRVJVUERBVEVEKX19ZnVuY3Rpb24gb0Z0KGwsYyl7aWYoMSZsJiYoeWUo''@;'; put 'put ''MCwidGFibGUiLDI4KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDI5KSg0LCJiIiksWWUoNSwiTkFNRSIpLENlKCkoKSx5ZSg2LCJ0ZCIsMjkpKDcsImIiKSxZZSg4LCJFTUFJTCIpLENlKCkoKSx5ZSg5LCJ0ZCIsMjkpKDEwLCJiIiksWWUoMTEsIkNSRUFURUQiKSxDZSgpKCkseWUoMTIs''@;'; put 'put ''InRkIiwzMCkoMTMsImIiKSxZZSgxNCwiVVBEQVRFRCIpLENlKCkoKSgpKCkseWUoMTUsInRib2R5IiksdHQoMTYsaUZ0LDksNSwidHIiLDMxKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxNiksUmUoIm5nRm9yT2YiLGEucm9sZUdyb3Vwcyl9fWZ1bmN0aW9uIGFGdChsLGMpe2lm''@;'; put 'put ''KDEmbCYmKHllKDAsImRpdiIpKDEsImRpdiIsMjApKDIsImRpdiIsMjEpKDMsInRhYmxlIiwyMikoNCwidGJvZHkiKSg1LCJ0ciIpKDYsInRkIiwyMykoNywicCIsMjQpKDgsImIiKSxZZSg5KSxDZSgpKCkoKSgpLHllKDEwLCJ0ciIpKDExLCJ0ZCIsMjMpKDEyLCJpIiksWWUoMTMpLENlKCko''@;'; put 'put ''KSgpKCkoKSgpKCkseWUoMTQsImRpdiIsMjApKDE1LCJkaXYiLDIxKSgxNiwiZGl2IiwyNSkoMTcsImRpdiIpKDE4LCJoMyIpLFllKDE5KSxDZSgpLHR0KDIwLGVGdCwyLDAsImg1Iiw1KSx5ZSgyMSwiZGl2IiwyNiksdHQoMjIsbkZ0LDE3LDEsInRhYmxlIiwyNyksQ2UoKSgpLHRuKDIzLCJo''@;'; put 'put ''ciIpLHllKDI0LCJkaXYiKSgyNSwiaDMiKSxZZSgyNiksQ2UoKSx0dCgyNyxyRnQsMiwwLCJoNSIsNSkseWUoMjgsImRpdiIsMjYpLHR0KDI5LG9GdCwxNywxLCJ0YWJsZSIsMjcpLENlKCkoKSx0bigzMCwiYnIiKSxDZSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9R2UoKTtTZSg5KSxhcihhLnJv''@;'; put 'put ''bGVOYW1lKSxTZSg0KSxhcihhLnJvbGVEZXNjKSxTZSg2KSx3cigiTUVNQkVSUyAoIixhLnJvbGVNZW1iZXJzQ291bnQsIikiKSxTZSgxKSxSZSgibmdJZiIsMD09YS5yb2xlTWVtYmVyc0NvdW50KSxTZSgyKSxSZSgibmdJZiIsMCE9YS5yb2xlTWVtYmVyc0NvdW50KSxTZSg0KSx3cigiR3Jv''@;'; put 'put ''dXBzICgiLGEucm9sZUdyb3Vwc0NvdW50LCIpIiksU2UoMSksUmUoIm5nSWYiLDA9PWEucm9sZUdyb3Vwc0NvdW50KSxTZSgyKSxSZSgibmdJZiIsMCE9YS5yb2xlR3JvdXBzQ291bnQpfX1sZXQgaXZlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCxtKXt0aGlzLnNhc1NlcnZp''@;'; put 'put ''Y2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9Zix0aGlzLnJvdXRlcj1kLHRoaXMubG9jYXRpb249aCx0aGlzLnJvdXRlPW0sdGhpcy5yb2xlU2VhcmNoPSIiLHRoaXMucm9sZVVyaT0iIix0aGlzLnJvbGVOYW1lPSIiLHRoaXMucm9sZURlc2M9IiIsdGhpcy5wYXJhbVByZXNlbnQ9ITEsdGhpcy5w''@;'; put 'put ''YXJhbVVSST0iIix0aGlzLmxvYWRpbmc9ITF9bmdPbkluaXQoKXtKbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L3JvbGVzIix2b2lkIDAhPT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmkmJih0aGlzLnBhcmFtUHJlc2VudD0hMCx0aGlzLnBhcmFtVVJJPXRo''@;'; put 'put ''aXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSksSm4udXNlcm5hdi5yb2xlTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50Pyh0aGlzLnJvbGVzPUpuLnVzZXJuYXYucm9sZUxpc3QsdGhpcy5yb2xlU2VhcmNoPUpuLnVzZXJuYXYucm9sZVNlYXJjaCk6dm9pZCAwPT09Sm4udXNlcm5hdi5yb2xl''@;'; put 'put ''TGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJyb2xlcyIsbnVsbCkudGhlbihhPT57aWYodGhpcy5sb2FkaW5nPSExLHRoaXMucm9sZXM9YS5yb2xlcyxKbi51c2VybmF2LnJvbGVMaXN0PWEucm9sZXMsdGhpcy5wYXJhbVByZXNlbnQm''@;'; put 'put ''JnZvaWQgMCE9PXRoaXMucm9sZXMpe2xldCBmPXRoaXMuZmluZFJvbGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PWYmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDp0aGlz''@;'; put 'put ''LnBhcmFtVVJJfV19KS50aGVuKGg9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1oLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PWguc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPWguc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWguc2Fz''@;'; put 'put ''Z3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9Zi5ST0xFVVJJLHRoaXMucm9sZU5hbWU9Zi5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPWYuUk9MRURFU0N9KSl9fSkpOih0aGlzLnJvbGVzPUpuLnVzZXJuYXYucm9sZUxpc3QsdGhpcy5yb2xlU2VhcmNoPUpuLnVzZXJuYXYucm9sZVNlYXJjaCx0''@;'; put 'put ''aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2Vycm9sZXMiLG51bGwpLnRoZW4oYT0+e2lmKHRoaXMucm9sZXM9YS5yb2xlcyxKbi51c2VybmF2LnJvbGVMaXN0PWEucm9sZXMsdGhpcy5wYXJhbVByZXNlbnQmJnZvaWQgMCE9PXRoaXMucm9sZXMpe2xldCBmPXRoaXMuZmluZFJv''@;'; put 'put ''bGUodGhpcy5yb2xlcyx0aGlzLnBhcmFtVVJJKTshMSE9PWYmJih0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcm1lbWJlcnNieXJvbGUiLHtpd2FudDpbe3JvbGVpZDp0aGlzLnBhcmFtVVJJfV19KS50aGVuKGg9Pnt0aGlzLmxvYWRpbmc9ITEs''@;'; put 'put ''dGhpcy5yb2xlTWVtYmVycz1oLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PWguc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPWguc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWguc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9Zi5ST0xFVVJJLHRo''@;'; put 'put ''aXMucm9sZU5hbWU9Zi5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPWYuUk9MRURFU0N9KSl9fSkpfXJvbGVMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMucm9sZXMsdGhpcy5yb2xlU2VhcmNoLCJST0xFTkFNRSIpLEpuLnVzZXJuYXYucm9sZVNl''@;'; put 'put ''YXJjaD10aGlzLnJvbGVTZWFyY2h9cm9sZU9uQ2xpY2soYSl7dGhpcy5sb2FkaW5nPSEwO2xldCBmPXRoaXMucm91dGVyLnVybDt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD9mLnNsaWNlKDAsZi5sYXN0SW5kZXhPZigiLyIpKSsiLyIrZW5jb2RlVVJJKGEu''@;'; put 'put ''Uk9MRVVSSSk6ZisiLyIrZW5jb2RlVVJJKGEuUk9MRVVSSSkpLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzYnlyb2xlIix7aXdhbnQ6W3tyb2xlaWQ6YS5ST0xFVVJJfV19KS50aGVuKGg9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1oLnNh''@;'; put 'put ''c21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PWguc2FzbWVtYmVycy5sZW5ndGgsdGhpcy5yb2xlR3JvdXBzPWguc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWguc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9YS5ST0xFVVJJLHRoaXMucm9sZU5hbWU9YS5ST0xFTkFN''@;'; put 'put ''RSx0aGlzLnJvbGVEZXNjPWEuUk9MRURFU0N9KX1maW5kUm9sZShhLGYpe2xldCBkPSExO3JldHVybiBhLmZvckVhY2goaD0+e2guUk9MRVVSST09PWYmJihkPWgpfSksZH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQocGwpLHJ0KFB1KSxydChM''@;'; put 'put ''YSkscnQoZ2QpLHJ0KHR1KSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1yb2xlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo3LHZhcnM6NCxjb25zdHM6W1sxLCJzaWRlYmFyLWhlaWdodCJdLFsiY2xhc3MiLCJzZWFyY2gtbm9k''@;'; put 'put ''ZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFj''@;'; put 'put ''ZWhvbGRlciIsIkZpbHRlciBieSBSb2xlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0''@;'; put 'put ''aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJ0YWJsZS1hY3RpdmUiLCJjbGljayIsNCwibmdJZiJdLFszLCJjbGljayJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3QtcGFkZGluZyJdLFsi''@;'; put 'put ''c2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxbMSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJ0YWJsZSIsInJvbGUtaW5mbyJdLFsxLCJsZWZ0Il0sWzEsInJvbGUtaW5mby10ZXh0Il0sWzEsImNhcmQiLCJyb2xlLWRhdGEi''@;'; put 'put ''XSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIG1lbWJlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsIm1lbWJlci10YWJsZSJdLFsxLCJ3aWR0aC0yNSJdLFsxLCIiXSxbMywicm91dGVyTGluayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInJvdXRlckxpbmsi''@;'; put 'put ''XV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJhcHAtc2lkZWJhciIsMCkoMSwiY2xyLXRyZWUiKSx0dCgyLHFQdCw2LDMsImNsci10cmVlLW5vZGUiLDEpLHR0KDMsSlB0LDIsMSwibmctY29udGFpbmVyIiwyKSxDZSgpKCkseWUoNCwiZGl2IiwzKSx0dCg1LFFQdCwzLDAs''@;'; put 'put ''ImRpdiIsNCksdHQoNixhRnQsMzEsOCwiZGl2Iiw1KSxDZSgpKSwyJmEmJihTZSgyKSxSZSgibmdJZiIsZi5yb2xlcyksU2UoMSksUmUoIm5nRm9yT2YiLGYucm9sZXMpLFNlKDIpLFJlKCJuZ0lmIixmLmxvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixmLnJvbGVNZW1iZXJzJiYhZi5sb2FkaW5n''@;'; put 'put ''KSl9LGRlcGVuZGVuY2llczpbUmEsJGksaXMsV2EsemEsSTAsRGQsTGYsUmwsUmYsazRdLHN0eWxlczpbIi5zaWRlYmFyLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LnJvbGUtaW5mby10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNp''@;'; put 'put ''emU6MjBweH0ucm9sZS1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyOjFweCBzb2xpZCAjYTdhN2E3O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9LnJvbGUtaW5mb1tfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICB0ZFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFk''@;'; put 'put ''N2Q3fS5yb2xlLWRhdGFbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6dW5zZXR9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5yb2xlLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde3RleHQt''@;'; put 'put ''YWxpZ246Y2VudGVyfS5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTt3aWR0aDoxMDAlfS5tZW1iZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2RhZGFk''@;'; put 'put ''YX0ubWVtYmVyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Y3Vyc29yOnBvaW50ZXJ9LnRhYmxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17b3ZlcmZsb3cteTpzY3JvbGw7bWF4LWhlaWdodDo3MDBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSksbH0pKCksbEZ0PSgoKT0+e2NsYXNzIGx7Y29u''@;'; put 'put ''c3RydWN0b3IoKXt9bmdPbkluaXQoKXt9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtdXNlcm5hdi1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0s''@;'; put 'put ''ZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJnRuKDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOlt4dl19KSxsfSkoKSxzRnQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe319cmV0dXJuIGwuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC12aWV3LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEm''@;'; put 'put ''YSYmdG4oMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W3h2XX0pLGx9KSgpO2Z1bmN0aW9uIHVGdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDEyKX1mdW5jdGlvbiBjRnQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTMpLEV0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBkLnVzZXJTZWFyY2g9IiIsWnQoZC51c2VyTGlzdE9uRmlsdGVyKCkpfSksQ2UoKX19ZnVuY3Rpb24gZkZ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJp''@;'; put 'put ''bnB1dCIsOCw5KSxFdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkudXNlclNlYXJjaD1kKX0pKCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS51c2VyTGlzdE9uRmlsdGVyKCkpfSksQ2UoKSx0dCg0LHVGdCwxLDAsImNsci1p''@;'; put 'put ''Y29uIiwxMCksdHQoNSxjRnQsMSwwLCJjbHItaWNvbiIsMTEpLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMyksZj1HZSgpO1NlKDIpLFJlKCJuZ01vZGVsIixmLnVzZXJTZWFyY2gpLFNlKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxTZSgxKSxSZSgibmdJZiIsYS52YWx1ZS5s''@;'; put 'put ''ZW5ndGg+MCl9fWZ1bmN0aW9uIGRGdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDE1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoKS51c2VyT25DbGljayhkKSl9KSx5ZSgxLCJw''@;'; put 'put ''IiwxNiksdG4oMiwiY2xyLWljb24iLDE3KSxZZSgzKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0LGY9R2UoKTtncigidGFibGUtYWN0aXZlIiwobnVsbD09Zi51c2VySW5mbz9udWxsOmYudXNlckluZm8uVVJJKT09PWEuVVJJKSxTZSgzKSx3cigiICIsYS5OQU1FLCIg''@;'; put 'put ''Iil9fWZ1bmN0aW9uIGhGdChsLGMpe2lmKDEmbCYmKFdyKDApLHR0KDEsZEZ0LDQsMywiY2xyLXRyZWUtbm9kZSIsMTQpLEdyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtTZSgxKSxSZSgibmdJZiIsIWEuaGlkZGVuKX19ZnVuY3Rpb24gcEZ0KGwsYyl7MSZsJiYoeWUoMCwiZGl2Iiwx''@;'; put 'put ''OCkoMSwic3BhbiIsMTkpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkoKSl9ZnVuY3Rpb24gbUZ0KGwsYyl7aWYoMSZsJiYoV3IoMCkseWUoMSwidHIiKSgyLCJ0ZCIsMjcpLFllKDMsIiBNZXRhZGF0YSBDcmVhdGVkOiAiKSx5ZSg0LCJiIiksWWUoNSksQ2UoKSgpKCkseWUoNiwidHIiKSg3''@;'; put 'put ''LCJ0ZCIsMjcpLFllKDgsIiBNZXRhZGF0YSBVcGRhdGVkOiAiKSx5ZSg5LCJiIiksWWUoMTApLENlKCkoKSgpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSg1KSxhcihhLnVzZXJJbmZvLk1FVEFEQVRBQ1JFQVRFRCksU2UoNSksYXIoYS51c2VySW5mby5NRVRBREFUQVVQREFURUQpfX1m''@;'; put 'put ''dW5jdGlvbiBnRnQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDIxKSgxLCJkaXYiLDIyKSgyLCJ0YWJsZSIsMjYpKDMsInRib2R5IikoNCwidHIiKSg1LCJ0ZCIsMjcpKDYsInAiLDI4KSg3LCJiIiksWWUoOCksQ2UoKSgpKCkoKSx5ZSg5LCJ0ciIpKDEwLCJ0ZCIsMjcpKDExLCJwIiwyOCko''@;'; put 'put ''MTIsImIiKSxZZSgxMyksQ2UoKSgpKCkoKSx0dCgxNCxtRnQsMTEsMiwibmctY29udGFpbmVyIiw1KSxDZSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoOCksYXIoYS51c2VySW5mby5OQU1FKSxTZSg1KSxhcihhLnVzZXJJbmZvLkRJU1BMQVlOQU1FKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''YS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpfX1mdW5jdGlvbiB2RnQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDIxKSgxLCJkaXYiLDIyKSgyLCJ0YWJsZSIsMjYpKDMsInRib2R5IikoNCwidHIiKSg1LCJ0ZCIsMjcpKDYsInAiLDI4KSg3LCJiIiksWWUoOCksQ2UoKSgpKCko''@;'; put 'put ''KSx5ZSg5LCJ0ciIpKDEwLCJ0ZCIsMjcpLFllKDExLCIgVXNlciBJRDogIikseWUoMTIsImIiKSxZZSgxMyksQ2UoKSgpKCkseWUoMTQsInRyIikoMTUsInRkIiwyNyksWWUoMTYsIiBVc2VyIHByb3ZpZGVyIElEOiAiKSx5ZSgxNywiYiIpLFllKDE4KSxDZSgpKCkoKSgpKCkoKSgpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9R2UoMik7U2UoOCksYXIoYS51c2VySW5mby5OQU1FKSxTZSg1KSxhcihhLnVzZXJJbmZvLlVSSSksU2UoNSksYXIoYS51c2VySW5mby5QUk9WSURFUil9fWZ1bmN0aW9uIHlGdChsLGMpezEmbCYmKHllKDAsImg1IiksWWUoMSwiTm8gRW1haWxzIFByZXNlbnQiKSxDZSgpKX1m''@;'; put 'put ''dW5jdGlvbiBiRnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiwzMSksWWUoMiksQ2UoKSx5ZSgzLCJ0ZCIsMzEpLFllKDQpLENlKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDIpLGFyKGEuRU1BSUwpLFNlKDIpLGFyKGEuVFlQRSl9fWZ1bmN0aW9uIF9GdChsLGMp''@;'; put 'put ''e2lmKDEmbCYmKHllKDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpKDMsInRkIiwzMCkoNCwiYiIpLFllKDUsIkVNQUlMIiksQ2UoKSgpLHllKDYsInRkIiwzMSkoNywiYiIpLFllKDgsIlRZUEUiKSxDZSgpKCkoKSgpLHllKDksInRib2R5IiksdHQoMTAsYkZ0LDUsMiwidHIiLDIp''@;'; put 'put ''LENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEwKSxSZSgibmdGb3JPZiIsYS51c2VyRW1haWxzKX19ZnVuY3Rpb24gd0Z0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyKSxDZSgpLHR0KDMseUZ0LDIsMCwiaDUiLDUpLHllKDQsImRpdiIsMjQpLHR0KDUsX0Z0''@;'; put 'put ''LDExLDEsInRhYmxlIiwyNSksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMiksd3IoIkVNQUlMUyAoIixhLnVzZXJFbWFpbHNDb3VudHx8IjAiLCIpIiksU2UoMSksUmUoIm5nSWYiLDA9PWEudXNlckVtYWlsc0NvdW50KSxTZSgyKSxSZSgibmdJZiIsMCE9YS51c2VyRW1haWxzQ291''@;'; put 'put ''bnQpfX1mdW5jdGlvbiBDRnQobCxjKXsxJmwmJnRuKDAsImhyIil9ZnVuY3Rpb24gU0Z0KGwsYyl7MSZsJiYoeWUoMCwiaDUiKSxZZSgxLCJObyBHcm91cHMgUHJlc2VudCIpLENlKCkpfWZ1bmN0aW9uIE1GdChsLGMpe2lmKDEmbCYmKHllKDAsInRkIiwzMyksWWUoMSksQ2UoKSksMiZsKXtj''@;'; put 'put ''b25zdCBhPUdlKCkuJGltcGxpY2l0O1JlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdXNlcm5hdi9ncm91cHMvIithLlVSSSksU2UoMSksd3IoIiAiLGEuR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9uIGtGdChsLGMpe2lmKDEmbCYmKFdyKDApLHllKDEsInRkIiwzMyksWWUoMiksQ2UoKSxHcigpKSwy''@;'; put 'put ''Jmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMSksUmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iKyhhLkdST1VQVVJJfHxhLlVSSSkpLFNlKDEpLHdyKCIgIixhLkdST1VQTkFNRSwiICIpfX1mdW5jdGlvbiBFRnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpLHR0''@;'; put 'put ''KDEsTUZ0LDIsMiwidGQiLDMyKSx0dCgyLGtGdCwzLDIsIm5nLWNvbnRhaW5lciIsNSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDMpO1NlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzVml5YSksU2UoMSksUmUoIm5nSWYiLGEuc2VydmVyVHlwZSE9PWEuU2Vy''@;'; put 'put ''dmVyVHlwZS5TYXNWaXlhKX19ZnVuY3Rpb24geEZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwidGFibGUiLDI5KSgxLCJ0Ym9keSIpLHR0KDIsRUZ0LDMsMiwidHIiLDIpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDIpLFJlKCJuZ0Zvck9mIixhLnVzZXJHcm91cHMpfX1mdW5jdGlvbiBB''@;'; put 'put ''RnQobCxjKXsxJmwmJnRuKDAsImhyIil9ZnVuY3Rpb24gVEZ0KGwsYyl7MSZsJiYoeWUoMCwiaDUiKSxZZSgxLCJObyBSb2xlcyBQcmVzZW50IiksQ2UoKSl9ZnVuY3Rpb24gT0Z0KGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiKSgxLCJ0ZCIsMzQpLFllKDIpLENlKCkoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PWMuJGltcGxpY2l0LGY9R2UoNCk7U2UoMSksUmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3JvbGVzLyIrZi5nZXRSb2xlVVJJKGEuUk9MRVVSSSkpLFNlKDEpLHdyKCIgIixhLlJPTEVOQU1FLCIgIil9fWZ1bmN0aW9uIERGdChsLGMpe2lmKDEmbCYmKHllKDAsInRhYmxlIiwyOSko''@;'; put 'put ''MSwidGJvZHkiKSx0dCgyLE9GdCwzLDIsInRyIiwyKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgyKSxSZSgibmdGb3JPZiIsYS51c2VyUm9sZXMpfX1mdW5jdGlvbiBJRnQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiKSgxLCJoMyIpLFllKDIpLENlKCksdHQoMyxURnQsMiwwLCJo''@;'; put 'put ''NSIsNSkseWUoNCwiZGl2IiwyNCksdHQoNSxERnQsMywxLCJ0YWJsZSIsMjUpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDIpLHdyKCJST0xFUyAoIixhLnVzZXJSb2xlc0NvdW50fHwiMCIsIikiKSxTZSgxKSxSZSgibmdJZiIsMD09YS51c2VyUm9sZXNDb3VudCksU2UoMiksUmUo''@;'; put 'put ''Im5nSWYiLDAhPWEudXNlclJvbGVzQ291bnQpfX1mdW5jdGlvbiBSRnQobCxjKXsxJmwmJnRuKDAsImhyIil9ZnVuY3Rpb24gTEZ0KGwsYyl7MSZsJiYoeWUoMCwiaDUiKSxZZSgxLCJObyBMb2dpbnMgUHJlc2VudCIpLENlKCkpfWZ1bmN0aW9uIFBGdChsLGMpe2lmKDEmbCYmKHllKDAsInRy''@;'; put 'put ''IikoMSwidGQiLDMxKSxZZSgyKSxDZSgpLHllKDMsInRkIiwzMSksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMiksYXIoYS5ET01BSU4pLFNlKDIpLGFyKGEuVVNFUklEKX19ZnVuY3Rpb24gRkZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwidGFibGUiLDI5KSgxLCJ0''@;'; put 'put ''aGVhZCIpKDIsInRyIikoMywidGQiLDMwKSg0LCJiIiksWWUoNSwiRE9NQUlOIiksQ2UoKSgpLHllKDYsInRkIikoNywiYiIpLFllKDgsIlVTRVIgSUQiKSxDZSgpKCkoKSgpLHllKDksInRib2R5IiksdHQoMTAsUEZ0LDUsMiwidHIiLDIpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDMpO1Nl''@;'; put 'put ''KDEwKSxSZSgibmdGb3JPZiIsYS51c2VyTG9naW5zKX19ZnVuY3Rpb24gSEZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwiZGl2IikoMSwiaDMiKSxZZSgyKSxDZSgpLHR0KDMsTEZ0LDIsMCwiaDUiLDUpLHllKDQsImRpdiIsMjQpLHR0KDUsRkZ0LDExLDEsInRhYmxlIiwyNSksQ2UoKSgpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9R2UoMik7U2UoMiksd3IoIkxPR0lOUyAoIixhLnVzZXJMb2dpbnNDb3VudHx8IjAiLCIpIiksU2UoMSksUmUoIm5nSWYiLDA9PWEudXNlckxvZ2luc0NvdW50KSxTZSgyKSxSZSgibmdJZiIsMCE9YS51c2VyTG9naW5zQ291bnQpfX1mdW5jdGlvbiBORnQobCxjKXtpZigxJmwm''@;'; put 'put ''Jih5ZSgwLCJkaXYiKSx0dCgxLGdGdCwxNSwzLCJkaXYiLDIwKSx0dCgyLHZGdCwxOSwzLCJkaXYiLDIwKSx5ZSgzLCJkaXYiLDIxKSg0LCJkaXYiLDIyKSg1LCJkaXYiLDIzKSx0dCg2LHdGdCw2LDMsImRpdiIsNSksdHQoNyxDRnQsMSwwLCJociIsNSkseWUoOCwiZGl2IikoOSwiaDMiKSxZ''@;'; put 'put ''ZSgxMCksQ2UoKSx0dCgxMSxTRnQsMiwwLCJoNSIsNSkseWUoMTIsImRpdiIsMjQpLHR0KDEzLHhGdCwzLDEsInRhYmxlIiwyNSksQ2UoKSgpLHR0KDE0LEFGdCwxLDAsImhyIiw1KSx0dCgxNSxJRnQsNiwzLCJkaXYiLDUpLHR0KDE2LFJGdCwxLDAsImhyIiw1KSx0dCgxNyxIRnQsNiwzLCJk''@;'; put 'put ''aXYiLDUpLHRuKDE4LCJiciIpLENlKCkoKSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGUhPT1hLlNlcnZlclR5cGUuU2FzVml5YSksU2UoMSksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXNWaXlhJiZhLnVzZXJJbmZv''@;'; put 'put ''KSxTZSg0KSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpLFNlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzOSksU2UoMyksd3IoIkdST1VQUyAoIixhLnVzZXJHcm91cHNDb3VudHx8IjAiLCIpIiksU2UoMSksUmUoIm5nSWYi''@;'; put 'put ''LDA9PWEudXNlckdyb3Vwc0NvdW50KSxTZSgyKSxSZSgibmdJZiIsMCE9YS51c2VyR3JvdXBzQ291bnQpLFNlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzOSksU2UoMSksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXM5KSxTZSgx''@;'; put 'put ''KSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpLFNlKDEpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzOSl9fWxldCBvdmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoLG0pe3RoaXMuaGVscGVyU2VydmljZT1hLHRo''@;'; put 'put ''aXMuc2FzU2VydmljZT1mLHRoaXMucm91dGU9ZCx0aGlzLmxvY2F0aW9uPWgsdGhpcy5yb3V0ZXI9bSx0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2VyU2VhcmNoPSIiLHRoaXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1OYW1lPSIiLHRoaXMuc2FzanNDb25maWc9bmV3IHYxLlNBU2pzQ29u''@;'; put 'put ''ZmlnLHRoaXMuaXNWaXlhPSExLHRoaXMuc2VydmVyVHlwZT0iIix0aGlzLlNlcnZlclR5cGU9WHUuRCx0aGlzLnNlcnZlclR5cGU9dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLCJTQVNWSVlB''@;'; put 'put ''Ij09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSYmKHRoaXMuaXNWaXlhPSEwKX1uZ09uSW5pdCgpe2lmKEpuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L3VzZXJuYXYvdXNlcnMiLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSYmKHRoaXMucGFyYW1Q''@;'; put 'put ''cmVzZW50PSEwLHRoaXMucGFyYW1OYW1lPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSksSm4udXNlcm5hdi51c2VyTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50KXRoaXMudXNlcnM9Sm4udXNlcm5hdi51c2VyTGlzdCx0aGlzLnVzZXJTZWFyY2g9Sm4udXNlcm5hdi51c2VyU2VhcmNo''@;'; put 'put ''O2Vsc2UgaWYodm9pZCAwPT09Sm4udXNlcm5hdi51c2VyTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy91c2Vycz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29u''@;'; put 'put ''In19KS50aGVuKGE9PmEudGV4dCgpKS50aGVuKGE9PntsZXQgZD1KU09OLnBhcnNlKGEpLml0ZW1zLm1hcChoPT4oe05BTUU6aC5uYW1lLFVSSTpoLmlkLFBST1ZJREVSOmgucHJvdmlkZXJJZH0pKTt0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2Vycz1kLEpuLnVzZXJuYXYudXNlckxpc3Q9ZH0p''@;'; put 'put ''OnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzIixudWxsKS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2Vycz1hLnVzZXJzLEpuLnVzZXJuYXYudXNlckxpc3Q9YS51c2Vyc30pKToodGhpcy51c2Vycz1Kbi51c2VybmF2LnVzZXJMaXN0LHRoaXMu''@;'; put 'put ''dXNlclNlYXJjaD1Kbi51c2VybmF2LnVzZXJTZWFyY2gpLHRoaXMucGFyYW1QcmVzZW50KWlmKHRoaXMubG9hZGluZz0hMCx0aGlzLmlzVml5YSl7bGV0IGE9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpO2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGll''@;'; put 'put ''cy91c2Vycy8iK2ErIi9tZW1iZXJzaGlwcz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGY9PmYudGV4dCgpKS50aGVuKGY9PntsZXQgZD1KU09OLnBhcnNlKGYpO3RoaXMudXNlckRhdGE9ZCx0aGlzLmxvYWRpbmc9ITE7bGV0IGg9ZC5p''@;'; put 'put ''dGVtcy5tYXAobT0+KHtHUk9VUE5BTUU6bS5uYW1lLFVSSTptLmlkfSkpO3RoaXMudXNlckdyb3Vwcz1oLHRoaXMudXNlckdyb3Vwc0NvdW50PWgubGVuZ3RoLHRoaXMudXNlcnMmJih0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZChtPT5tLlVSST09PWEpKX0pfWVsc2V7Y29uc3QgYT10''@;'; put 'put ''aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmk7dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcmdyb3Vwc2J5bWVtYmVyIix7aXdhbnQ6W3t1cmk6YX1dfSkudGhlbihkPT57c3dpdGNoKHRoaXMubG9hZGluZz0hMSx0aGlzLnNlcnZlclR5cGUpe2Nhc2UgWHUuRC5TYXM5''@;'; put 'put ''OnRoaXMudXNlckluZm89ZC5pbmZvWzBdLHRoaXMudXNlckVtYWlscz1kLmVtYWlscyx0aGlzLnVzZXJFbWFpbHNDb3VudD1kLmVtYWlscy5sZW5ndGgsdGhpcy51c2VyUm9sZXM9ZC5yb2xlcyx0aGlzLnVzZXJSb2xlc0NvdW50PWQucm9sZXMubGVuZ3RoLHRoaXMudXNlckxvZ2lucz1kLmxv''@;'; put 'put ''Z2lucyx0aGlzLnVzZXJMb2dpbnNDb3VudD1kLmxvZ2lucy5sZW5ndGg7YnJlYWs7Y2FzZSBYdS5ELlNhc2pzOmlmKHRoaXMudXNlcnMpdGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQoaD0+aC5VUkk9PT1hKTtlbHNle2NvbnN0IGg9ZC5ncm91cHNbMF07dGhpcy51c2VySW5mbz17VVJJ''@;'; put 'put ''OmguSUQsTkFNRTpoLk5BTUUsRElTUExBWU5BTUU6aC5OQU1FfX19dGhpcy51c2VyRGF0YT1kLHRoaXMudXNlckdyb3Vwcz1kLmdyb3Vwcyx0aGlzLnVzZXJHcm91cHNDb3VudD1kLmdyb3Vwcy5sZW5ndGh9KX19dXNlckxpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5''@;'; put 'put ''T25GaWx0ZXIodGhpcy51c2Vycyx0aGlzLnVzZXJTZWFyY2gsIk5BTUUiKSxKbi51c2VybmF2LnVzZXJTZWFyY2g9dGhpcy51c2VyU2VhcmNofXVzZXJPbkNsaWNrKGEpe3RoaXMubG9hZGluZz0hMDtsZXQgZj10aGlzLnJvdXRlci51cmw7dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhp''@;'; put 'put ''cy5wYXJhbVByZXNlbnQ/Zi5zbGljZSgwLGYubGFzdEluZGV4T2YoIi8iKSkrIi8iK2VuY29kZVVSSShhLlVSSSk6ZisiLyIrZW5jb2RlVVJJKGEuVVJJKSksdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwrIi9pZGVudGl0aWVzL3VzZXJzLyIrYS5VUkkrIi9t''@;'; put 'put ''ZW1iZXJzaGlwcz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGQ9PmQudGV4dCgpKS50aGVuKGQ9PntsZXQgaD1KU09OLnBhcnNlKGQpO3RoaXMudXNlckRhdGE9aCx0aGlzLmxvYWRpbmc9ITE7bGV0IG09aC5pdGVtcy5tYXAoXz0+KHtH''@;'; put 'put ''Uk9VUE5BTUU6Xy5uYW1lLFVSSTpfLmlkfSkpO3RoaXMudXNlckdyb3Vwcz1tLHRoaXMudXNlckdyb3Vwc0NvdW50PW0ubGVuZ3RoLHRoaXMudXNlcnMmJih0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZChfPT5fLlVSST09PWEuVVJJKSl9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgi''@;'; put 'put ''dXNlcm5hdi91c2VyZ3JvdXBzYnltZW1iZXIiLHtpd2FudDpbe3VyaTphLlVSSX1dfSkudGhlbihoPT57c3dpdGNoKHRoaXMubG9hZGluZz0hMSx0aGlzLnNlcnZlclR5cGUpe2Nhc2UgWHUuRC5TYXM5OnRoaXMudXNlckluZm89aC5pbmZvWzBdLHRoaXMudXNlckVtYWlscz1oLmVtYWlscyx0''@;'; put 'put ''aGlzLnVzZXJFbWFpbHNDb3VudD1oLmVtYWlscy5sZW5ndGgsdGhpcy51c2VyUm9sZXM9aC5yb2xlcyx0aGlzLnVzZXJSb2xlc0NvdW50PWgucm9sZXMubGVuZ3RoLHRoaXMudXNlckxvZ2lucz1oLmxvZ2lucyx0aGlzLnVzZXJMb2dpbnNDb3VudD1oLmxvZ2lucy5sZW5ndGg7YnJlYWs7Y2Fz''@;'; put 'put ''ZSBYdS5ELlNhc2pzOmlmKHRoaXMudXNlcnMpdGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQobT0+bS5VUkk9PT1hLlVSSSk7ZWxzZXtjb25zdCBtPWguZ3JvdXBzWzBdO3RoaXMudXNlckluZm89e1VSSTptLklELE5BTUU6bS5OQU1FLERJU1BMQVlOQU1FOm0uTkFNRX19fXRoaXMudXNl''@;'; put 'put ''ckRhdGE9aCx0aGlzLnVzZXJHcm91cHM9aC5ncm91cHMsdGhpcy51c2VyR3JvdXBzQ291bnQ9aC5ncm91cHMubGVuZ3RofSl9Z2V0Um9sZVVSSShhKXtyZXR1cm4gYS5zcGxpdCgiT01TT0JKOklkZW50aXR5R3JvdXAiKVsxXS5zbGljZSgxKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCkocnQoUHUpLHJ0KHBsKSxydCh0dSkscnQoZ2QpLHJ0KExhKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC11c2VyIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo3LHZhcnM6NCxjb25zdHM6W1sx''@;'; put 'put ''LCJzaWRlYmFyLWhlaWdodCJdLFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJl''@;'; put 'put ''ZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBVc2VycyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0s''@;'; put 'put ''WyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJ0YWJsZS1hY3RpdmUiLCJjbGljayIsNCwibmdJZiJdLFszLCJjbGljayJdLFsxLCJt''@;'; put 'put ''LTAiLCJjdXJzb3ItcG9pbnRlciIsImxpc3QtcGFkZGluZyJdLFsic2hhcGUiLCJ1c2VyIl0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbImNsYXNzIiwiY2xyLXJvdyIsNCwibmdJZiJdLFsxLCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJjYXJkIiwidXNlci1k''@;'; put 'put ''YXRhIl0sWzEsInRhYmxlLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJ0YWJsZSB1c2VyLXRhYmxlIiw0LCJuZ0lmIl0sWzEsInRhYmxlIiwidXNlci1pbmZvIl0sWzEsImxlZnQiXSxbMSwidXNlci1pbmZvLXRleHQiXSxbMSwidGFibGUiLCJ1c2VyLXRhYmxlIl0sWzEsIndpZHRoLTUwIl0sWzEs''@;'; put 'put ''IiJdLFsicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsImNsYXNzIiwiIiwzLCJyb3V0ZXJMaW5rIiw0LCJuZ0lmIl0sWyJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiwxLCIiLDMsInJvdXRlckxpbmsiXSxbMywicm91dGVyTGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGYpezEmYSYm''@;'; put 'put ''KHllKDAsImFwcC1zaWRlYmFyIiwwKSgxLCJjbHItdHJlZSIpLHR0KDIsZkZ0LDYsMywiY2xyLXRyZWUtbm9kZSIsMSksdHQoMyxoRnQsMiwxLCJuZy1jb250YWluZXIiLDIpLENlKCkoKSx5ZSg0LCJkaXYiLDMpLHR0KDUscEZ0LDMsMCwiZGl2Iiw0KSx0dCg2LE5GdCwxOSwxMSwiZGl2Iiw1''@;'; put 'put ''KSxDZSgpKSwyJmEmJihTZSgyKSxSZSgibmdJZiIsZi51c2VycyksU2UoMSksUmUoIm5nRm9yT2YiLGYudXNlcnMpLFNlKDIpLFJlKCJuZ0lmIixmLmxvYWRpbmcpLFNlKDEpLFJlKCJuZ0lmIixmLnVzZXJEYXRhJiYhZi5sb2FkaW5nKSl9LGRlcGVuZGVuY2llczpbUmEsJGksaXMsV2EsemEs''@;'; put 'put ''STAsVEMsRGQsTGYsUmwsUmYsazRdLHN0eWxlczpbIi5zaWRlYmFyLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LnVzZXItaW5mby10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH0udXNlci1pbmZvW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyOjFweCBzb2xpZCAjYTdhN2E3O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9LnVzZXItaW5mb1tfbmdjb250ZW50LSVDT01QJV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1h''@;'; put 'put ''bGlnbjpjZW50ZXJ9LnVzZXItZGF0YVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlcjoxcHggc29saWQgI2E3YTdhNztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fS51c2VyLWRhdGFbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde21pbi1oZWlnaHQ6YXV0b30udXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnVzZXItZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LnVzZXItdGFibGVbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTt3aWR0aDoxMDAlfS51c2VyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNkYWRhZGF9LnVzZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''dGJvZHlbX25nY29udGVudC0lQ09NUCVdICAgdHJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtjdXJzb3I6cG9pbnRlcn0ud2lkdGgtNTBbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjUwJX0ud2lkdGgtMzNbX25nY29udGVudC0lQ09NUCVde3dp''@;'; put 'put ''ZHRoOjMzJX0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OnNjcm9sbDttYXgtaGVpZ2h0OjUwMHB4fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsudXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OnVuc2V0IWlt''@;'; put 'put ''cG9ydGFudH19Il19KSxsfSkoKSxWRnQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYpe3RoaXMuaHR0cD1hLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWYsdGhpcy52aXlhQXBpcz17QW5hbHl0aWNzX0luc2lnaHRzOntpbnNpZ2h0czoiL2luc2lnaHRzIn0sVmlzdWFsaXNhdGlvbjp7cmVw''@;'; put 'put ''b3J0czoiL3JlcG9ydHMiLHJlcG9ydEltYWdlczoiL3JlcG9ydEltYWdlcyIscmVwb3J0VHJhbnNmb3JtczoiL3JlcG9ydFRyYW5zZm9ybXMiLHZpc3VhbEFuYWx5dGljczoiL3Zpc3VhbEFuYWx5dGljcyJ9LENvbXB1dGU6e2pvYnM6Ii9qb2JEZWZpbml0aW9ucyIsam9iRXhlY3V0aW9uOiIv''@;'; put 'put ''am9iRXhlY3V0aW9uIn0sRGVjaXNpb25fTWFuYWdlbWVudDp7bW9kZWxNYW5hZ2VtZW50OiIvbW9kZWxNYW5hZ2VtZW50Iixtb2RlbFJlcG9zaXRvcnk6Ii9tb2RlbFJlcG9zaXRvcnkiLG1vZGVsUHVibGlzaDoiL21vZGVsUHVibGlzaCIsbWljcm9hbmFseXRpY1Njb3JlOiIvbWljcm9hbmFs''@;'; put 'put ''eXRpY1Njb3JlIixkYXRhTWluaW5nOiIvZGF0YU1pbmluZyIsYnVzaW5lc3NSdWxlczoiL2J1c2luZXNzUnVsZXMiLHJlZmVyZW5jZURhdGE6Ii9yZWZlcmVuY2VEYXRhIix0cmVhdG1lbnREZWZpbml0aW9uczoiL3RyZWF0bWVudERlZmluaXRpb25zIixzdWJqZWN0Q29udGFjdHM6Ii9zdWJq''@;'; put 'put ''ZWN0Q29udGFjdHMiLGRlY2lzaW9uc1J1bnRpbWVCdWlsZGVyOiIvZGVjaXNpb25zUnVudGltZUJ1aWxkZXIifSxDb3JlX1NlcnZpY2VzOntmb2xkZXJzOiIvZm9sZGVycyIsZmlsZXM6Ii9maWxlcyIsYW5ub3RhdGlvbnM6Ii9hbm5vdGF0aW9ucyIsYXV0aG9yaXphdGlvbjoiL2F1dGhvcml6''@;'; put 'put ''YXRpb24iLHJlbGF0aW9uc2hpcHM6Ii9yZWxhdGlvbnNoaXBzIixTQVNMb2dvbjoiL1NBU0xvZ29uIn0sQXV0b21hdGVkX01hY2hpbmVfTGVhcm5pbmc6e21sUGlwZWxpbmVBdXRvbWF0aW9uOiIvbWxQaXBlbGluZUF1dG9tYXRpb24ifSxPdGhlcjp7aWRlbnRpdGllczoiL2lkZW50aXRpZXMi''@;'; put 'put ''fX0sdGhpcy5zZXJ2ZXJVcmw9IiI7Y29uc3QgZD10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMuc2VydmVyVXJsPWQ/LnNlcnZlclVybHx8IiIsdGhpcy5nZXRCeUNvbGxlY3Rpb24oImpvYnMiKS5zdWJzY3JpYmUoaD0+e2NvbnNvbGUubG9nKCJyZXMi''@;'; put 'put ''LGgpfSl9Z2V0QWxsQ29sbGVjdGlvbnMoKXtyZXR1cm4gdGhpcy52aXlhQXBpc31nZXRCeVVybChhKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnNlcnZlclVybH0ke2F9YCx7d2l0aENyZWRlbnRpYWxzOiEwfSl9Z2V0QnlDb2xsZWN0aW9uKGEpe3JldHVybiB0aGlzLmh0dHAuZ2V0''@;'; put 'put ''KGAke3RoaXMuc2VydmVyVXJsfSR7YX1gLHt3aXRoQ3JlZGVudGlhbHM6ITB9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoc3IobnopLHNyKEl2KSl9LGwuXHUwMjc1cHJvdj1ocih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVk''@;'; put 'put ''SW46InJvb3QifSksbH0pKCk7ZnVuY3Rpb24gQkZ0KGwsYyl7MSZsJiZ0bigwLCJkaXYiLDkpfWZ1bmN0aW9uIGpGdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsInNwYW4iLDEwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLiRpbXBsaWNpdDtyZXR1''@;'; put 'put ''cm4gWnQoR2UoKS5vblZhbHVlQ2xpY2soZCkpfSksWWUoMSksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMSksYXIoYS5kZXNjcmlwdGlvbil9fWZ1bmN0aW9uIHpGdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsInNlY3Rpb24iLDExKSgxLCJuZ3gtanNv''@;'; put 'put ''bi12aWV3ZXIiLDEyKSxFdCgic2VnbWVudExpbmtDbGlja2VkIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoMikub25TZWdtZW50TGlua0NsaWNrKGQpKX0pLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQsZj1HZSgpO1NlKDEpLFJlKCJqc29uIixhLnZhbHVl''@;'; put 'put ''KSgiZXhwYW5kZWQiLGYuZXhwYW5kZWQpKCJkZXB0aCIsZi5kZXB0aCkoIl9jdXJyZW50RGVwdGgiLGYuX2N1cnJlbnREZXB0aCsxKX19Y29uc3QgVUZ0PWZ1bmN0aW9uKGwpe3JldHVyblsic2VnbWVudCIsbF19LFpGdD1mdW5jdGlvbihsLGMpe3JldHVybnsic2VnbWVudC1tYWluIjohMCxl''@;'; put 'put ''eHBhbmRhYmxlOmwsZXhwYW5kZWQ6Y319O2Z1bmN0aW9uIFlGdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsInNlY3Rpb24iLDIpKDEsInNlY3Rpb24iLDMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPVV0KGEpLiRpbXBsaWNpdDtyZXR1cm4gWnQoR2UoKS50b2dnbGUo''@;'; put 'put ''aCkpfSksdHQoMixCRnQsMSwwLCJkaXYiLDQpLHllKDMsInNwYW4iLDUpLFllKDQpLENlKCkseWUoNSwic3BhbiIsNiksWWUoNiwiOiAiKSxDZSgpLHR0KDcsakZ0LDIsMSwic3BhbiIsNyksQ2UoKSx0dCg4LHpGdCwyLDQsInNlY3Rpb24iLDgpLENlKCl9aWYoMiZsKXtjb25zdCBhPWMuJGlt''@;'; put 'put ''cGxpY2l0LGY9R2UoKTtSZSgibmdDbGFzcyIsX2goNixVRnQsInNlZ21lbnQtdHlwZS0iK2EudHlwZSkpLFNlKDEpLFJlKCJuZ0NsYXNzIix3aCg4LFpGdCxmLmlzRXhwYW5kYWJsZShhKSxhLmV4cGFuZGVkKSksU2UoMSksUmUoIm5nSWYiLGYuaXNFeHBhbmRhYmxlKGEpKSxTZSgyKSxhcihh''@;'; put 'put ''LmtleSksU2UoMyksUmUoIm5nSWYiLCFhLmV4cGFuZGVkfHwhZi5pc0V4cGFuZGFibGUoYSkpLFNlKDEpLFJlKCJuZ0lmIixhLmV4cGFuZGVkJiZmLmlzRXhwYW5kYWJsZShhKSl9fWxldCBXRnQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZXhwYW5kZWQ9ITAsdGhpcy5kZXB0''@;'; put 'put ''aD0tMSx0aGlzLl9jdXJyZW50RGVwdGg9MCx0aGlzLnNlZ21lbnRMaW5rQ2xpY2tlZD1uZXcgeHIsdGhpcy5zZWdtZW50cz1bXX1uZ09uQ2hhbmdlcygpe3RoaXMuc2VnbWVudHM9W10sdGhpcy5qc29uPXRoaXMuZGVjeWNsZSh0aGlzLmpzb24pLCJvYmplY3QiPT10eXBlb2YgdGhpcy5qc29u''@;'; put 'put ''P09iamVjdC5rZXlzKHRoaXMuanNvbikuZm9yRWFjaChhPT57dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZShhLHRoaXMuanNvblthXSkpfSk6dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZShgKCR7dHlwZW9mIHRoaXMuanNvbn0pYCx0aGlzLmpzb24p''@;'; put 'put ''KX1pc0V4cGFuZGFibGUoYSl7cmV0dXJuIm9iamVjdCI9PT1hLnR5cGV8fCJhcnJheSI9PT1hLnR5cGV9dG9nZ2xlKGEpe3RoaXMuaXNFeHBhbmRhYmxlKGEpJiYoYS5leHBhbmRlZD0hYS5leHBhbmRlZCl9b25WYWx1ZUNsaWNrKGEpeyJsaW5rIj09PWEudHlwZSYmdGhpcy5zZWdtZW50TGlu''@;'; put 'put ''a0NsaWNrZWQuZW1pdChhLnZhbHVlKX1vblNlZ21lbnRMaW5rQ2xpY2soYSl7dGhpcy5zZWdtZW50TGlua0NsaWNrZWQuZW1pdChhKX1wYXJzZUtleVZhbHVlKGEsZil7Y29uc3QgZD17a2V5OmEsdmFsdWU6Zix0eXBlOnZvaWQgMCxkZXNjcmlwdGlvbjoiIitmLGV4cGFuZGVkOnRoaXMuaXNF''@;'; put 'put ''eHBhbmRlZCgpfTtzd2l0Y2godHlwZW9mIGQudmFsdWUpe2Nhc2UibnVtYmVyIjpkLnR5cGU9Im51bWJlciI7YnJlYWs7Y2FzZSJib29sZWFuIjpkLnR5cGU9ImJvb2xlYW4iO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOmQudHlwZT0iZnVuY3Rpb24iO2JyZWFrO2Nhc2Uic3RyaW5nIjppZih0aGlz''@;'; put 'put ''LmlzTGluayhkLnZhbHVlKSl7ZC50eXBlPSJsaW5rIjticmVha31kLnR5cGU9InN0cmluZyIsZC5kZXNjcmlwdGlvbj0nIicrZC52YWx1ZSsnIic7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmQudHlwZT0idW5kZWZpbmVkIixkLmRlc2NyaXB0aW9uPSJ1bmRlZmluZWQiO2JyZWFrO2Nhc2Uib2Jq''@;'; put 'put ''ZWN0IjpudWxsPT09ZC52YWx1ZT8oZC50eXBlPSJudWxsIixkLmRlc2NyaXB0aW9uPSJudWxsIik6QXJyYXkuaXNBcnJheShkLnZhbHVlKT8oZC50eXBlPSJhcnJheSIsZC5kZXNjcmlwdGlvbj0iQXJyYXlbIitkLnZhbHVlLmxlbmd0aCsiXSAiK0pTT04uc3RyaW5naWZ5KGQudmFsdWUpKTpk''@;'; put 'put ''LnZhbHVlIGluc3RhbmNlb2YgRGF0ZT9kLnR5cGU9ImRhdGUiOihkLnR5cGU9Im9iamVjdCIsZC5kZXNjcmlwdGlvbj0iT2JqZWN0ICIrSlNPTi5zdHJpbmdpZnkoZC52YWx1ZSkpfXJldHVybiBkfWlzTGluayhhKXtyZXR1cm4iaHR0cHM6Ly8iPT09YS5zdWJzdHJpbmcoMCw4KXx8Imh0dHA6''@;'; put 'put ''Ly8iPT09YS5zdWJzdHJpbmcoMCw3KXx8Ii8iPT09YVswXX1pc0V4cGFuZGVkKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQmJiEodGhpcy5kZXB0aD4tMSYmdGhpcy5fY3VycmVudERlcHRoPj10aGlzLmRlcHRoKX1kZWN5Y2xlKGEpe2NvbnN0IGY9bmV3IFdlYWtNYXA7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IGQoaCxtKXtsZXQgXyxPO3JldHVybiJvYmplY3QiIT10eXBlb2YgaHx8bnVsbD09PWh8fGggaW5zdGFuY2VvZiBCb29sZWFufHxoIGluc3RhbmNlb2YgRGF0ZXx8aCBpbnN0YW5jZW9mIE51bWJlcnx8aCBpbnN0YW5jZW9mIFJlZ0V4cHx8aCBpbnN0YW5jZW9mIFN0cmluZz9oOihfPWYuZ2V0''@;'; put 'put ''KGgpLHZvaWQgMCE9PV8/eyRyZWY6X306KGYuc2V0KGgsbSksQXJyYXkuaXNBcnJheShoKT8oTz1bXSxoLmZvckVhY2goZnVuY3Rpb24oWCxhZSl7T1thZV09ZChYLG0rIlsiK2FlKyJdIil9KSk6KE89e30sT2JqZWN0LmtleXMoaCkuZm9yRWFjaChmdW5jdGlvbihYKXtPW1hdPWQoaFtYXSxt''@;'; put 'put ''KyJbIitKU09OLnN0cmluZ2lmeShYKSsiXSIpfSkpLE8pKX0oYSwiJCIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9a3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1sibmd4LWpzb24tdmlld2VyIl1dLGlucHV0czp7anNvbjoianNv''@;'; put 'put ''biIsZXhwYW5kZWQ6ImV4cGFuZGVkIixkZXB0aDoiZGVwdGgiLF9jdXJyZW50RGVwdGg6Il9jdXJyZW50RGVwdGgifSxvdXRwdXRzOntzZWdtZW50TGlua0NsaWNrZWQ6InNlZ21lbnRMaW5rQ2xpY2tlZCJ9LGZlYXR1cmVzOltibF0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMSwibmd4LWpz''@;'; put 'put ''b24tdmlld2VyIl0sWzMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJuZ0NsYXNzIl0sWzMsIm5nQ2xhc3MiLCJjbGljayJdLFsiY2xhc3MiLCJ0b2dnbGVyIiw0LCJuZ0lmIl0sWzEsInNlZ21lbnQta2V5Il0sWzEsInNlZ21lbnQtc2VwYXJhdG9yIl0sWyJjbGFzcyIsInNl''@;'; put 'put ''Z21lbnQtdmFsdWUiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNoaWxkcmVuIiw0LCJuZ0lmIl0sWzEsInRvZ2dsZXIiXSxbMSwic2VnbWVudC12YWx1ZSIsMywiY2xpY2siXSxbMSwiY2hpbGRyZW4iXSxbMywianNvbiIsImV4cGFuZGVkIiwiZGVwdGgiLCJfY3VycmVudERlcHRo''@;'; put 'put ''Iiwic2VnbWVudExpbmtDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7MSZhJiYoeWUoMCwic2VjdGlvbiIsMCksdHQoMSxZRnQsOSwxMSwic2VjdGlvbiIsMSksQ2UoKSksMiZhJiYoU2UoMSksUmUoIm5nRm9yT2YiLGYuc2VnbWVudHMpKX0sZGVwZW5kZW5jaWVzOlt5dSxSYSwk''@;'; put 'put ''aSxsXSxzdHlsZXM6WydAY2hhcnNldCAiVVRGLTgiOy5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OnZhcigtLW5neC1qc29uLWZvbnQtZmFtaWx5LCBtb25vc3BhY2UpO2ZvbnQtc2l6ZTp2YXIoLS1uZ3gtanNvbi1mb250LXNpemUsIDFlbSk7d2lkdGg6''@;'; put 'put ''MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHg7bWFyZ2luOjFweCAxcHggMXB4IDEycHh9Lm5neC1qc29uLXZp''@;'; put 'put ''ZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLXdyYXA6YnJlYWstd29yZH0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnRvZ2dsZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbi1sZWZ0Oi0xNHB4O21hcmdpbi10b3A6M3B4O2ZvbnQtc2l6ZTouOGVtO2xpbmUtaGVpZ2h0OjEuMmVtO3ZlcnRp''@;'; put 'put ''Y2FsLWFsaWduOm1pZGRsZTtjb2xvcjp2YXIoLS1uZ3gtanNvbi10b2dnbGVyLCAjNzg3ODc4KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnRvZ2ds''@;'; put 'put ''ZXJbX25nY29udGVudC0lQ09NUCVdOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IlxcMjViYSI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjFzIGVhc2UtaW59Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LWtleVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24ta2V5LCAjNEUxODdDKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1zZXBhcmF0b3IsICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnRb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tdmFsdWUsICMwMDApfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNl''@;'; put 'put ''Z21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNoaWxkcmVuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMnB4fS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1zdHJpbmdbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFp''@;'; put 'put ''bltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tc3RyaW5nLCAjRkY2QjZCKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbnVtYmVyW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLW51bWJlciwgIzAwOTY4OCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10''@;'; put 'put ''eXBlLWJvb2xlYW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tYm9vbGVhbiwgI0I5MzhBNCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWRhdGVbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tZGF0ZSwgIzA1NjY4RCl9Lm5neC1q''@;'; put 'put ''c29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLWFy''@;'; put 'put ''cmF5LCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtb2JqZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9y''@;'; put 'put ''OnZhcigtLW5neC1qc29uLW9iamVjdCwgIzk5OSl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLWZ1bmN0aW9uLCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbGlua1tfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+''@;'; put 'put ''IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1saW5rLCAjOUI1OUI2KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbnVsbFtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1udWxsLCAjZmZmKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtdW5kZWZpbmVkW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLXVuZGVmaW5lZCwgI2ZmZil9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLW51''@;'; put 'put ''bGxbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZ3gtanNvbi1udWxsLWJnLCByZWQpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS11bmRlZmluZWRbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1rZXlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLXVuZGVmaW5lZC1rZXksICM5OTkp''@;'; put 'put ''fS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS11bmRlZmluZWRbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1uZ3gtanNvbi11bmRlZmluZWQta2V5LCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbGlua1tfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZh''@;'; put 'put ''bHVlW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1vYmplY3RbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0sIC5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1hcnJheVtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9Lm5neC1qc29uLXZpZXdlcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICAuZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVdID4gLnRvZ2dsZXJbX25nY29udGVudC0lQ09NUCVdOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGFuZGFibGVbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdLCAubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBhbmRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b2dnbGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcn0nXX0pLGx9KSgpLEdGdD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltib119KSxsfSkoKSwkRnQ9KCgpPT57Y2xhc3MgbHt0cmFuc2Zvcm0oYSl7aWYoIWEuaW5jbHVkZXMoIi8iKSlyZXR1cm4gYTtsZXQg''@;'; put 'put ''Zj0iIjtjb25zdCBkPWEuc3BsaXQoIi8iKTtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grKylpZigiIiE9PWRbaF0pe2NvbnN0IG09ZFtoXTtmKz0iLyIrbSxkW2hdPWA8YSBocmVmPSR7Zn0+JHttfTwvYT5gfXJldHVybiBkLmpvaW4oIi8iKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToibGlua2luemUiLHR5cGU6bCxwdXJlOiEwfSksbH0pKCksS0Z0PSgoKT0+e2NsYXNzIGx7dHJhbnNmb3JtKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeShhLG51bGwsMil9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXBpcGU9Vmwoe25hbWU6InByZXR0eWpzb24iLHR5cGU6bCxwdXJlOiEwfSksbH0pKCk7ZnVuY3Rpb24gcUZ0KGwsYyl7aWYoMSZsJiYoeWUoMCwib3B0aW9uIiwyMiksWWUoMSksQ2UoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0''@;'; put 'put ''O1J1KCJ2YWx1ZSIsYS52YWx1ZSksU2UoMSksd3IoIiAiLGEua2V5LCIgIil9fWZ1bmN0aW9uIFhGdChsLGMpe2lmKDEmbCYmKHllKDAsIm9wdGdyb3VwIiwyMCksdHQoMSxxRnQsMiwyLCJvcHRpb24iLDIxKSx3bCgyLCJrZXl2YWx1ZSIpLENlKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNp''@;'; put 'put ''dCxmPUdlKCk7UmUoImxhYmVsIixhLmtleSksU2UoMSksUmUoIm5nRm9yT2YiLEpzKDIsMixmLmNvbGxlY3Rpb25zW2Eua2V5XSkpfX1mdW5jdGlvbiBKRnQobCxjKXsxJmwmJih5ZSgwLCJwIiwyMyksWWUoMSwiIFNlbGVjdCBjb2xsZWN0aW9uIHRvIHN0YXJ0ICIpLENlKCkpfWZ1bmN0aW9u''@;'; put 'put ''IFFGdChsLGMpezEmbCYmdG4oMCwiY2xyLXNwaW5uZXIiLDI0KX1mdW5jdGlvbiBlSHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwzMSl9ZnVuY3Rpb24gdEh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDMyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQo''@;'; put 'put ''YSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5saW5rc1NlYXJjaD0iIixadChkLmxpbmtzTGlzdE9uRmlsdGVyKCkpfSksQ2UoKX19ZnVuY3Rpb24gbkh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMjUpKDEsImRpdiIsMjYpKDIsImlucHV0IiwyNywy''@;'; put 'put ''OCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmxpbmtzU2VhcmNoPWQpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLmxpbmtzTGlzdE9uRmlsdGVyKCkpfSksQ2UoKSx0dCg0LGVIdCwxLDAsImNsci1pY29uIiwy''@;'; put 'put ''OSksdHQoNSx0SHQsMSwwLCJjbHItaWNvbiIsMzApLENlKCkoKX1pZigyJmwpe2NvbnN0IGE9UWkoMyksZj1HZSgpO1NlKDIpLFJlKCJuZ01vZGVsIixmLmxpbmtzU2VhcmNoKSxTZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksU2UoMSksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3Ro''@;'; put 'put ''PjApfX1mdW5jdGlvbiBySHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiwzNCksRXQoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuJGltcGxpY2l0LG09R2UoKTtyZXR1cm4gWnQobS50cmVlTm9kZUNsaWNrZWQoZCxoLG0uZW5k''@;'; put 'put ''cG9pbnRMaW5rcykpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS4kaW1wbGljaXQuZXhwYW5kZWQ9ZCl9KSx5ZSgxLCJwIiwzNSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0''@;'; put 'put ''KEdlKCkubGlua09uQ2xpY2soZCkpfSksdG4oMiwiY2xyLWljb24iLDM2KSxZZSgzKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1JlKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCkoImNsckxvYWRpbmciLCEhYS5sb2FkaW5nVGFibGVzJiYhYS50YWJsZXMpLFNlKDMp''@;'; put 'put ''LCR1KCIgIixhLm1ldGhvZCwiICIsYS5yZWwsIiAiKX19ZnVuY3Rpb24gaUh0KGwsYyl7aWYoMSZsJiYoV3IoMCksdHQoMSxySHQsNCw0LCJjbHItdHJlZS1ub2RlIiwzMyksR3IoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDEpLFJlKCJuZ0lmIiwhYS5oaWRkZW4pfX1mdW5jdGlv''@;'; put 'put ''biBvSHQobCxjKXsxJmwmJnRuKDAsImNsci1pY29uIiwzMSl9ZnVuY3Rpb24gYUh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWljb24iLDMyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgyKTtyZXR1cm4gZC5pdGVtc1NlYXJjaD0iIixadChk''@;'; put 'put ''Lml0ZW1zTGlzdE9uRmlsdGVyKCkpfSksQ2UoKX19ZnVuY3Rpb24gbEh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsMjUpKDEsImRpdiIsMjYpKDIsImlucHV0IiwzNywzOCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChh''@;'; put 'put ''KSxadChHZSgpLml0ZW1zU2VhcmNoPWQpfSkoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSgpLml0ZW1zTGlzdE9uRmlsdGVyKCkpfSksQ2UoKSx0dCg0LG9IdCwxLDAsImNsci1pY29uIiwyOSksdHQoNSxhSHQsMSwwLCJjbHItaWNvbiIsMzApLENlKCkoKX1pZigyJmwp''@;'; put 'put ''e2NvbnN0IGE9UWkoMyksZj1HZSgpO1NlKDIpLFJlKCJuZ01vZGVsIixmLml0ZW1zU2VhcmNoKSxTZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksU2UoMSksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBzSHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5''@;'; put 'put ''ZSgwLCJjbHItdHJlZS1ub2RlIiwzNCksRXQoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuJGltcGxpY2l0LG09R2UoKTtyZXR1cm4gWnQobS50cmVlTm9kZUNsaWNrZWQoZCxoLG0uZW5kcG9pbnRJdGVtcykpfSkoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihk''@;'; put 'put ''KXtyZXR1cm4gVXQoYSksWnQoR2UoKS4kaW1wbGljaXQuZXhwYW5kZWQ9ZCl9KSx5ZSgxLCJwIiwzNSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoKS4kaW1wbGljaXQ7cmV0dXJuIFp0KEdlKCkuaXRlbU9uQ2xpY2soZCkpfSksdG4oMiwiY2xyLWljb24iLDM2KSxZ''@;'; put 'put ''ZSgzKSxDZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkuJGltcGxpY2l0O1JlKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCkoImNsckxvYWRpbmciLCEhYS5sb2FkaW5nVGFibGVzJiYhYS50YWJsZXMpLFNlKDMpLHdyKCIgIixhLm5hbWV8fGEuaWQsIiAiKX19ZnVuY3Rpb24gdUh0KGwsYyl7''@;'; put 'put ''aWYoMSZsJiYoV3IoMCksdHQoMSxzSHQsNCwzLCJjbHItdHJlZS1ub2RlIiwzMyksR3IoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1NlKDEpLFJlKCJuZ0lmIiwhYS5oaWRkZW4pfX1mdW5jdGlvbiBjSHQobCxjKXsxJmwmJnRuKDAsImNsci1zcGlubmVyIiwzOSl9ZnVuY3Rpb24gZkh0''@;'; put 'put ''KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwibmd4LWpzb24tdmlld2VyIiw0OSksRXQoInNlZ21lbnRMaW5rQ2xpY2tlZCIsZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLm9uSnNvbkxpbmtDbGljayhkKSl9KSxDZSgpfTImbCYmUmUoImpzb24iLEdlKDMpLmVuZHBv''@;'; put 'put ''aW50SnNvbikoImV4cGFuZGVkIiwhMSl9ZnVuY3Rpb24gZEh0KGwsYyl7aWYoMSZsJiYoV3IoMCksWWUoMSksd2woMiwicHJldHR5anNvbiIpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSx3cigiXG4gICAgICAgICAgICAiLEpzKDIsMSxhLmVuZHBvaW50SnNvbiksIlxuICAgICAg''@;'; put 'put ''ICAgICIpfX1mdW5jdGlvbiBoSHQobCxjKXtpZigxJmwmJihXcigwKSxZZSgxLCJcbiAgICAgICAgICAiKSx0dCgyLGZIdCwxLDIsIm5neC1qc29uLXZpZXdlciIsNDgpLFllKDMsIlxuICAgICAgICAgICIpLHR0KDQsZEh0LDMsMywibmctY29udGFpbmVyIiwxOSksWWUoNSwiXG4gICAgICAg''@;'; put 'put ''ICIpLEdyKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgyKSxSZSgibmdJZiIsIWEucmF3SnNvbiksU2UoMiksUmUoIm5nSWYiLGEucmF3SnNvbil9fWZ1bmN0aW9uIHBIdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO1dyKDApLHllKDEsImRpdiIsNDApKDIsInNwYW4iLDQxKSxZZSgzLCIg''@;'; put 'put ''R0VUICIpLHllKDQsInAiLDQyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLm9uQnJlYWRjdW1zQ2xpY2soZCkpfSksd2woNSwibGlua2luemUiKSxDZSgpLHllKDYsImJ1dHRvbiIsMTQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQo''@;'; put 'put ''R2UoKS5jb3B5QnJlYWRjcnVtcygpKX0pLHRuKDcsImNsci1pY29uIiwxNSksQ2UoKSgpLHllKDgsImRpdiIsNDMpKDksImNsci1pbnB1dC1jb250YWluZXIiLDEyKSgxMCwibGFiZWwiKSxZZSgxMSwiU3RhcnQiKSxDZSgpLHllKDEyLCJpbnB1dCIsNDQpLEV0KCJuZ01vZGVsQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihkKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5lbmRwb2ludC5zdGFydD1kKX0pLENlKCkoKSx5ZSgxMywiY2xyLWlucHV0LWNvbnRhaW5lciIsMTIpKDE0LCJsYWJlbCIpLFllKDE1LCJMaW1pdCIpLENlKCkseWUoMTYsImlucHV0Iiw0NCksRXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0''@;'; put 'put ''aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgpLmVuZHBvaW50LmxpbWl0PWQpfSksQ2UoKSgpLHllKDE3LCJidXR0b24iLDQ1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkuYXBwbHlRdWVyeVBhcmFtcygpKX0pLHRuKDE4LCJjbHItaWNvbiIsNDYpLENlKCko''@;'; put 'put ''KSgpLHllKDE5LCJwcmUiLDQ3KSxZZSgyMCwiICAgICAgICAiKSx0dCgyMSxoSHQsNiwyLCJuZy1jb250YWluZXIiLDE5KSxZZSgyMiwiXG4gICAgICAiKSxDZSgpLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKCk7U2UoNCksUmUoImlubmVySFRNTCIsSnMoNSw3LGEuZW5kcG9pbnQudXJsKSx2''@;'; put 'put ''aCksU2UoOCksUmUoIm5nTW9kZWwiLGEuZW5kcG9pbnQuc3RhcnQpKCJkaXNhYmxlZCIsdm9pZCAwPT09YS5lbmRwb2ludC5zdGFydCksU2UoNCksUmUoIm5nTW9kZWwiLGEuZW5kcG9pbnQubGltaXQpKCJkaXNhYmxlZCIsdm9pZCAwPT09YS5lbmRwb2ludC5saW1pdCksU2UoMSksUmUoImRp''@;'; put 'put ''c2FibGVkIix2b2lkIDA9PT1hLmVuZHBvaW50LmxpbWl0JiZ2b2lkIDA9PT1hLmVuZHBvaW50LnN0YXJ0KSxTZSg0KSxSZSgibmdJZiIsYS5lbmRwb2ludEpzb24pfX1sZXQgbUh0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxmLGQsaCl7dGhpcy5oZWxwZXJTZXJ2aWNlPWEsdGhpcy5z''@;'; put 'put ''YXNWaXlhU2VydmljZT1mLHRoaXMuc2FzU2VydmljZT1kLHRoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5jb2xsZWN0aW9ucz17fSx0aGlzLmNvbGxlY3Rpb249IiIsdGhpcy5lbmRwb2ludExpbmtzPVtdLHRoaXMuZW5kcG9pbnRJdGVtcz1bXSx0aGlzLmVuZHBvaW50PXt1cmw6IiIsc3RhcnQ6''@;'; put 'put ''LTEsbGltaXQ6LTF9LHRoaXMuZW5kcG9pbnRMb2FkaW5nPSExLHRoaXMuY29sbGVjdGlvbkxvYWRpbmc9ITEsdGhpcy5yYXdKc29uPSExLHRoaXMubGlua3NTZWFyY2g9IiIsdGhpcy5pdGVtc1NlYXJjaD0iIix0aGlzLnNhc2pzQ29uZmlnPW5ldyB2MS5TQVNqc0NvbmZpZ31uZ09uSW5pdCgp''@;'; put 'put ''e3RoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5jb2xsZWN0aW9ucz10aGlzLnNhc1ZpeWFTZXJ2aWNlLmdldEFsbENvbGxlY3Rpb25zKCl9bGlua3NMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRo''@;'; put 'put ''aXMuZW5kcG9pbnRMaW5rcyx0aGlzLmxpbmtzU2VhcmNoLCJyZWwiKSxKbi52aXlhQXBpLmxpbmtzc1NlYXJjaD10aGlzLmxpbmtzU2VhcmNofWl0ZW1zTGlzdE9uRmlsdGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmVuZHBvaW50SXRlbXMsdGhpcy5pdGVt''@;'; put 'put ''c1NlYXJjaCwibmFtZSIpLEpuLnZpeWFBcGkuaXRlbXNTZWFyY2g9dGhpcy5pdGVtc1NlYXJjaH1saW5rT25DbGljayhhKXt0aGlzLmxvYWRVcmwoYS5ocmVmKX1pdGVtT25DbGljayhhKXt0aGlzLmxvYWRVcmwoYS5saW5rc1swXS5ocmVmKX10cmVlTm9kZUNsaWNrZWQoYSxmLGQpeyJDb2xs''@;'; put 'put ''YXBzZSI9PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyhkLGYpfWNvbGxhcHNlVHJlZUl0ZW1zKGEsZil7YS5mb3JFYWNoKGQ9PntKU09OLnN0cmluZ2lmeShkKSE9PUpTT04uc3RyaW5naWZ5KGYpJiYoZC5leHBhbmRlZD0hMSl9KX11cGRhdGVTZWxlY3RlZENvbGxl''@;'; put 'put ''Y3Rpb24oKXtKbi52aXlhQXBpLnNlbGVjdGVkQ29sbGVjdGlvbj10aGlzLmNvbGxlY3Rpb24sdGhpcy5lbmRwb2ludC51cmw9dGhpcy5jb2xsZWN0aW9uLHRoaXMuY29sbGVjdGlvbkxvYWRpbmc9ITAsdGhpcy5zYXNWaXlhU2VydmljZS5nZXRCeUNvbGxlY3Rpb24odGhpcy5jb2xsZWN0aW9u''@;'; put 'put ''KS5zdWJzY3JpYmUoYT0+e3RoaXMuZW5kcG9pbnRMaW5rcz1hLmxpbmtzLHRoaXMuZW5kcG9pbnRJdGVtcz1hLml0ZW1zP2EuaXRlbXM6W10sdGhpcy5jb2xsZWN0aW9uTG9hZGluZz0hMSx0aGlzLmVuZHBvaW50SnNvbj1hLHRoaXMuZW5kcG9pbnQuc3RhcnQ9YS5zdGFydCx0aGlzLmVuZHBv''@;'; put 'put ''aW50LmxpbWl0PWEubGltaXR9LGE9Pnt0aGlzLmNvbGxlY3Rpb25Mb2FkaW5nPSExO2xldCBmPSJFcnJvciBvY2N1cnJlZCB3aGlsZSBzZW5kaW5nIHJlcXVlc3QiO2EubWVzc2FnZSYmKGY9YS5tZXNzYWdlKSxhLmVycm9yJiYoYS5lcnJvci5tZXNzYWdlJiYoZj1hLmVycm9yLm1lc3NhZ2Up''@;'; put 'put ''LGEuZXJyb3IucmVtZWRpYXRpb24mJihmPWAke2Z9XG4ke2EuZXJyb3IucmVtZWRpYXRpb259YCkpLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsZixudWxsLCJIVFRQIEVycm9yIil9KX1vbkpzb25MaW5rQ2xpY2soYSl7dGhpcy5sb2FkVXJsKGEpfW9uSnNvbkNsaWNr''@;'; put 'put ''KGEpe2lmKGEucHJldmVudERlZmF1bHQoKSwiQSI9PT1hLnNyY0VsZW1lbnQudGFnTmFtZSl7Y29uc3QgZj1hLnNyY0VsZW1lbnQuaHJlZi5zcGxpdChhLnNyY0VsZW1lbnQuaG9zdClbMV07dGhpcy5sb2FkVXJsKGYpfX1vbkJyZWFkY3Vtc0NsaWNrKGEpe2lmKGEucHJldmVudERlZmF1bHQo''@;'; put 'put ''KSwhYS5zcmNFbGVtZW50LmhyZWYpcmV0dXJuO2NvbnN0IGY9YS5zcmNFbGVtZW50LmhyZWYuc3BsaXQoYS5zcmNFbGVtZW50Lmhvc3QpWzFdO3RoaXMubG9hZFVybChmKX1jb3B5SnNvbigpe3RoaXMuZW5kcG9pbnRKc29uJiZuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChKU09OLnN0''@;'; put 'put ''cmluZ2lmeSh0aGlzLmVuZHBvaW50SnNvbixudWxsLDIpKX1jb3B5QnJlYWRjcnVtcygpe3RoaXMuZW5kcG9pbnQmJnRoaXMuZW5kcG9pbnQudXJsJiZuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0aGlzLmVuZHBvaW50LnVybCl9YXBwbHlRdWVyeVBhcmFtcygpe2NvbnN0IGE9dGhp''@;'; put 'put ''cy5lbmRwb2ludC5zdGFydCxmPXRoaXMuZW5kcG9pbnQubGltaXQsZD1gPyR7dm9pZCAwIT09YT8ic3RhcnQ9IithOiIifSR7dm9pZCAwIT09Zj8iJmxpbWl0PSIrZjoiIn1gLGg9YCR7dGhpcy5lbmRwb2ludC51cmwuc3BsaXQoIj8iKVswXX0ke2R9YDt0aGlzLmxvYWRVcmwoaCl9bG9hZFVy''@;'; put 'put ''bChhKXt0aGlzLmVuZHBvaW50TG9hZGluZz0hMCx0aGlzLnNhc1ZpeWFTZXJ2aWNlLmdldEJ5VXJsKGEpLnN1YnNjcmliZShmPT57dGhpcy5lbmRwb2ludExpbmtzPWYubGlua3MsdGhpcy5lbmRwb2ludEl0ZW1zPWYuaXRlbXM/Zi5pdGVtczpbXSx0aGlzLmVuZHBvaW50SnNvbj1mLHRoaXMu''@;'; put 'put ''ZW5kcG9pbnRMb2FkaW5nPSExLHRoaXMuZW5kcG9pbnQudXJsPWEsdGhpcy5lbmRwb2ludC5zdGFydD1mLnN0YXJ0LHRoaXMuZW5kcG9pbnQubGltaXQ9Zi5saW1pdH0sZj0+e3RoaXMuZW5kcG9pbnRMb2FkaW5nPSExO2xldCBkPSJFcnJvciBvY2N1cnJlZCB3aGlsZSBzZW5kaW5nIHJlcXVl''@;'; put 'put ''c3QiO2YubWVzc2FnZSYmKGQ9Zi5tZXNzYWdlKSxmLmVycm9yJiYoZi5lcnJvci5tZXNzYWdlJiYoZD1mLmVycm9yLm1lc3NhZ2UpLGYuZXJyb3IucmVtZWRpYXRpb24mJihkPWAke2R9XG4ke2YuZXJyb3IucmVtZWRpYXRpb259YCkpLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFs''@;'; put 'put ''KG51bGwsZCxudWxsLCJIVFRQIEVycm9yIil9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQoUHUpLHJ0KFZGdCkscnQocGwpLHJ0KFJzKSl9LGwuXHUwMjc1Y21wPWtyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC12aXlhLWFwaS1leHBsb3Jl''@;'; put 'put ''ciJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6MzMsdmFyczoxMyxjb25zdHM6W1sxLCJhcGktY29sbGVjdGlvbi1kcm9wZG93biJdLFsiY2xyU2VsZWN0IiwiIiwiaWQiLCJyZXBvc2l0b3J5IiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSIsImNoYW5nZSJd''@;'; put 'put ''LFszLCJsYWJlbCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInctMTAwIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWyJjbHJNZWRpdW0iLCIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQs''@;'; put 'put ''Im5nSWYiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIiwiaC0xMDAiLCJwLTEwIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWzEsInctMTAwIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1qdXN0aWZ5LWNvbnRl''@;'; put 'put ''bnQtY2VudGVyIiwic2l0aW9uLXJlbGF0aXZlIl0sWzEsImpzb24tdG9nZ2xlIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJtLTAiXSxbInR5cGUiLCJjaGVja2JveCIsImNsclRvZ2dsZSIsIiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiXSxbInR5cGUiLCJi''@;'; put 'put ''dXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwiYnRuLXNtIiwzLCJjbGljayJdLFsic2hhcGUiLCJjb3B5Il0sWzEsInRleHQtY2VudGVyIiwibS0wIl0sWyJjbHJTbWFsbCIsIiIsNCwibmdJZiJdLFsxLCJ3LTEwMCIsImxpZ2h0Il0sWzQsIm5nSWYiXSxbMywibGFiZWwiXSxbMywidmFsdWUi''@;'; put 'put ''LDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdLFsxLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWyJjbHJNZWRpdW0iLCIiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIlNlYXJjaCBsaW5rcyIs''@;'; put 'put ''Im5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGlua3NUcmVlSW5wdXQiLCIiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJd''@;'; put 'put ''LFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRl''@;'; put 'put ''ZENoYW5nZSJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYmxvY2siXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJTZWFyY2ggaXRlbXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWwiLCJuZ01vZGVs''@;'; put 'put ''Q2hhbmdlIiwia2V5dXAiXSxbInNlYXJjaEl0ZW1zVHJlZUlucHV0IiwiIl0sWyJjbHJTbWFsbCIsIiJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwiY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVuIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIi''@;'; put 'put ''XSxbMSwidGV4dC1jZW50ZXIiLCJlbmRwb2ludC1icmVhZGNydW1zIiwzLCJpbm5lckhUTUwiLCJjbGljayJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwicXVlcnktcGFyYW1zIl0sWyJjbHJJbnB1dCIsIiIsInR5cGUiLCJudW1iZXIiLDMsIm5nTW9kZWwiLCJkaXNh''@;'; put 'put ''YmxlZCIsIm5nTW9kZWxDaGFuZ2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwiYnRuLXNtIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzaGFwZSIsInBsYXkiXSxbMSwianNvbi1hcmVhIl0sWyJjbGFzcyIsImQtYmxvY2siLDMsImpzb24iLCJleHBhbmRlZCIsInNl''@;'; put 'put ''Z21lbnRMaW5rQ2xpY2tlZCIsNCwibmdJZiJdLFsxLCJkLWJsb2NrIiwzLCJqc29uIiwiZXhwYW5kZWQiLCJzZWdtZW50TGlua0NsaWNrZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJhcHAtc2lkZWJhciIpKDEsImRpdiIsMCkoMiwiY2xyLXNlbGVjdC1jb250YWlu''@;'; put 'put ''ZXIiKSgzLCJsYWJlbCIpLFllKDQsIkFQSSBDb2xsZWN0aW9uIiksQ2UoKSx5ZSg1LCJzZWxlY3QiLDEpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5jb2xsZWN0aW9uPWh9KSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBmLnVwZGF0ZVNlbGVjdGVkQ29sbGVj''@;'; put 'put ''dGlvbigpfSksdHQoNixYRnQsMyw0LCJvcHRncm91cCIsMiksd2woNywia2V5dmFsdWUiKSxDZSgpKCkoKSx0dCg4LEpGdCwyLDAsInAiLDMpLHllKDksImRpdiIsNCksdHQoMTAsUUZ0LDEsMCwiY2xyLXNwaW5uZXIiLDUpLENlKCkseWUoMTEsImNsci10cmVlIiksdHQoMTIsbkh0LDYsMywi''@;'; put 'put ''Y2xyLXRyZWUtbm9kZSIsNiksdHQoMTMsaUh0LDIsMSwibmctY29udGFpbmVyIiw3KSxDZSgpLHllKDE0LCJjbHItdHJlZSIpLHR0KDE1LGxIdCw2LDMsImNsci10cmVlLW5vZGUiLDYpLHR0KDE2LHVIdCwyLDEsIm5nLWNvbnRhaW5lciIsNyksQ2UoKSgpLHllKDE3LCJkaXYiLDgpKDE4LCJk''@;'; put 'put ''aXYiLDkpKDE5LCJkaXYiLDEwKSgyMCwiZGl2IiwxMSkoMjEsImNsci10b2dnbGUtY29udGFpbmVyIiwxMikoMjIsImNsci10b2dnbGUtd3JhcHBlciIpKDIzLCJpbnB1dCIsMTMpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5yYXdKc29uPWh9KSxDZSgpLHllKDI0''@;'; put 'put ''LCJsYWJlbCIpLFllKDI1LCJSQVcgSnNvbiIpLENlKCkoKSgpLHllKDI2LCJidXR0b24iLDE0KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYuY29weUpzb24oKX0pLHRuKDI3LCJjbHItaWNvbiIsMTUpLENlKCkoKSx5ZSgyOCwiaDQiLDE2KSxZZSgyOSwiIEFQSSBFeHBsb3JlciAi''@;'; put 'put ''KSx0dCgzMCxjSHQsMSwwLCJjbHItc3Bpbm5lciIsMTcpLENlKCkoKSx0bigzMSwiaHIiLDE4KSx0dCgzMixwSHQsMjMsOSwibmctY29udGFpbmVyIiwxOSksQ2UoKSgpKSwyJmEmJihTZSg1KSxSZSgibmdNb2RlbCIsZi5jb2xsZWN0aW9uKSxTZSgxKSxSZSgibmdGb3JPZiIsSnMoNywxMSxm''@;'; put 'put ''LmNvbGxlY3Rpb25zKSksU2UoMiksUmUoIm5nSWYiLGYuZW5kcG9pbnRMaW5rcy5sZW5ndGg8MSYmIWYuY29sbGVjdGlvbkxvYWRpbmcpLFNlKDIpLFJlKCJuZ0lmIixmLmNvbGxlY3Rpb25Mb2FkaW5nKSxTZSgyKSxSZSgibmdJZiIsZi5lbmRwb2ludExpbmtzLmxlbmd0aD4wKSxTZSgxKSxS''@;'; put 'put ''ZSgibmdGb3JPZiIsZi5lbmRwb2ludExpbmtzKSxTZSgyKSxSZSgibmdJZiIsZi5lbmRwb2ludEl0ZW1zLmxlbmd0aD4wKSxTZSgxKSxSZSgibmdGb3JPZiIsZi5lbmRwb2ludEl0ZW1zKSxTZSg3KSxSZSgibmdNb2RlbCIsZi5yYXdKc29uKSxTZSg3KSxSZSgibmdJZiIsZi5lbmRwb2ludExv''@;'; put 'put ''YWRpbmcpLFNlKDIpLFJlKCJuZ0lmIixmLmNvbGxlY3Rpb24ubGVuZ3RoPjApKX0sZGVwZW5kZW5jaWVzOltSYSwkaSxTMSxNMSxpcyxWRCxSMCxMMCxXYSx6YSxEZCxMZixSbCxKYyxlbCxCMCxsNyxWMCxSZixEVSxtNyxwNyxSaCxrNCxXRnQsVU8sJEZ0LEtGdF0sc3R5bGVzOlsiLmFwaS1j''@;'; put 'put ''b2xsZWN0aW9uLWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxNXB4O21hcmdpbi1yaWdodDoxNXB4O21hcmdpbi1ib3R0b206MTBweH0uanNvbi1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEw''@;'; put 'put ''MCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0b30uanNvbi1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgYXt0ZXh0LWRlY29yYXRpb246bm9uZX0uanNvbi1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSAgICA+bmd4LWpzb24tdmlld2Vye2hlaWdodDoxMDAlfS5qc29uLWFyZWFbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgID5uZ3gtanNvbi12aWV3ZXI+Lm5neC1qc29uLXZpZXdlcntvdmVyZmxvdzphdXRvfS5qc29uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O21hcmdpbjowfS5lbmRwb2ludC1icmVhZGNydW1zW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXttYXJnaW46MCAwIDAgMTBweH0ucXVlcnktcGFyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo3MHB4fSJdfSksbH0pKCk7Y29uc3QgZ0h0PW5ldyBNaSgiV2luZG93VG9rZW4iLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cu''@;'; put 'put ''ZG9jdW1lbnQ/e3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PndpbmRvd306e3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pnt9fSk7bGV0IHZIdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLm5nWm9uZT1hLHRoaXMuZG9jdW1lbnQ9Zix0aGlzLndpbmRv''@;'; put 'put ''dz1kLHRoaXMuY29weVN1YmplY3Q9bmV3IHdlLHRoaXMuY29weVJlc3BvbnNlJD10aGlzLmNvcHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLHRoaXMuY29uZmlnPXt9fWNvbmZpZ3VyZShhKXt0aGlzLmNvbmZpZz1hfWNvcHkoYSl7aWYoIXRoaXMuaXNTdXBwb3J0ZWR8fCFhKXJldHVybiB0aGlz''@;'; put 'put ''LnB1c2hDb3B5UmVzcG9uc2Uoe2lzU3VjY2VzczohMSxjb250ZW50OmF9KTtjb25zdCBmPXRoaXMuY29weUZyb21Db250ZW50KGEpO3JldHVybiB0aGlzLnB1c2hDb3B5UmVzcG9uc2UoZj97Y29udGVudDphLGlzU3VjY2VzczpmfTp7aXNTdWNjZXNzOiExLGNvbnRlbnQ6YX0pfWdldCBpc1N1''@;'; put 'put ''cHBvcnRlZCgpe3JldHVybiEhdGhpcy5kb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQmJiEhdGhpcy5kb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoImNvcHkiKSYmISF0aGlzLndpbmRvd31pc1RhcmdldFZhbGlkKGEpe2lmKGEgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50''@;'; put 'put ''fHxhIGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCl7aWYoYS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkICJ0YXJnZXQiIGF0dHJpYnV0ZS4gUGxlYXNlIHVzZSAicmVhZG9ubHkiIGluc3RlYWQgb2YgImRpc2FibGVkIiBhdHRyaWJ1dGUn''@;'; put 'put ''KTtyZXR1cm4hMH10aHJvdyBuZXcgRXJyb3IoIlRhcmdldCBzaG91bGQgYmUgaW5wdXQgb3IgdGV4dGFyZWEiKX1jb3B5RnJvbUlucHV0RWxlbWVudChhLGY9ITApe3RyeXt0aGlzLnNlbGVjdFRhcmdldChhKTtjb25zdCBkPXRoaXMuY29weVRleHQoKTtyZXR1cm4gdGhpcy5jbGVhclNlbGVj''@;'; put 'put ''dGlvbihmP2E6dm9pZCAwLHRoaXMud2luZG93KSxkJiZ0aGlzLmlzQ29weVN1Y2Nlc3NJbklFMTEoKX1jYXRjaHtyZXR1cm4hMX19aXNDb3B5U3VjY2Vzc0luSUUxMSgpe2NvbnN0IGE9dGhpcy53aW5kb3cuY2xpcGJvYXJkRGF0YTtyZXR1cm4hKGEmJmEuZ2V0RGF0YSYmIWEuZ2V0RGF0YSgi''@;'; put 'put ''VGV4dCIpKX1jb3B5RnJvbUNvbnRlbnQoYSxmPXRoaXMuZG9jdW1lbnQuYm9keSl7aWYodGhpcy50ZW1wVGV4dEFyZWEmJiFmLmNvbnRhaW5zKHRoaXMudGVtcFRleHRBcmVhKSYmdGhpcy5kZXN0cm95KHRoaXMudGVtcFRleHRBcmVhLnBhcmVudEVsZW1lbnR8fHZvaWQgMCksIXRoaXMudGVt''@;'; put 'put ''cFRleHRBcmVhKXt0aGlzLnRlbXBUZXh0QXJlYT10aGlzLmNyZWF0ZVRlbXBUZXh0QXJlYSh0aGlzLmRvY3VtZW50LHRoaXMud2luZG93KTt0cnl7Zi5hcHBlbmRDaGlsZCh0aGlzLnRlbXBUZXh0QXJlYSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJDb250YWluZXIgc2hvdWxkIGJlIGEgRG9t''@;'; put 'put ''IGVsZW1lbnQiKX19dGhpcy50ZW1wVGV4dEFyZWEudmFsdWU9YTtjb25zdCBkPXRoaXMuY29weUZyb21JbnB1dEVsZW1lbnQodGhpcy50ZW1wVGV4dEFyZWEsITEpO3JldHVybiB0aGlzLmNvbmZpZy5jbGVhblVwQWZ0ZXJDb3B5JiZ0aGlzLmRlc3Ryb3kodGhpcy50ZW1wVGV4dEFyZWEucGFy''@;'; put 'put ''ZW50RWxlbWVudHx8dm9pZCAwKSxkfWRlc3Ryb3koYT10aGlzLmRvY3VtZW50LmJvZHkpe3RoaXMudGVtcFRleHRBcmVhJiYoYS5yZW1vdmVDaGlsZCh0aGlzLnRlbXBUZXh0QXJlYSksdGhpcy50ZW1wVGV4dEFyZWE9dm9pZCAwKX1zZWxlY3RUYXJnZXQoYSl7cmV0dXJuIGEuc2VsZWN0KCks''@;'; put 'put ''YS5zZXRTZWxlY3Rpb25SYW5nZSgwLGEudmFsdWUubGVuZ3RoKSxhLnZhbHVlLmxlbmd0aH1jb3B5VGV4dCgpe3JldHVybiB0aGlzLmRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iil9Y2xlYXJTZWxlY3Rpb24oYSxmKXthJiZhLmZvY3VzKCksZi5nZXRTZWxlY3Rpb24oKT8ucmVtb3ZlQWxs''@;'; put 'put ''UmFuZ2VzKCl9Y3JlYXRlVGVtcFRleHRBcmVhKGEsZil7Y29uc3QgZD0icnRsIj09PWEuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7bGV0IGg7cmV0dXJuIGg9YS5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpLGguc3R5bGUuZm9udFNpemU9IjEycHQiLGguc3R5bGUuYm9y''@;'; put 'put ''ZGVyPSIwIixoLnN0eWxlLnBhZGRpbmc9IjAiLGguc3R5bGUubWFyZ2luPSIwIixoLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaC5zdHlsZVtkPyJyaWdodCI6ImxlZnQiXT0iLTk5OTlweCIsaC5zdHlsZS50b3A9KGYucGFnZVlPZmZzZXR8fGEuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv''@;'; put 'put ''cCkrInB4IixoLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSxofXB1c2hDb3B5UmVzcG9uc2UoYSl7dGhpcy5jb3B5U3ViamVjdC5vYnNlcnZlcnMubGVuZ3RoPjAmJnRoaXMubmdab25lLnJ1bigoKT0+e3RoaXMuY29weVN1YmplY3QubmV4dChhKX0pfXB1c2hDb3B5UmVwb25zZShhKXt0''@;'; put 'put ''aGlzLnB1c2hDb3B5UmVzcG9uc2UoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHNyKFVvKSxzcihGYSksc3IoZ0h0LDgpKX0sbC5cdTAyNzVwcm92PWhyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxs''@;'; put 'put ''fSkoKSx5SHQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGYsZCxoKXt0aGlzLm5nWm9uZT1hLHRoaXMuaG9zdD1mLHRoaXMucmVuZGVyZXI9ZCx0aGlzLmNsaXBib2FyZFNydj1oLHRoaXMuY2JPblN1Y2Nlc3M9bmV3IHhyLHRoaXMuY2JPbkVycm9yPW5ldyB4cix0aGlzLm9uQ2xpY2s9''@;'; put 'put ''bT0+e3RoaXMuY2xpcGJvYXJkU3J2LmlzU3VwcG9ydGVkP3RoaXMudGFyZ2V0RWxtJiZ0aGlzLmNsaXBib2FyZFNydi5pc1RhcmdldFZhbGlkKHRoaXMudGFyZ2V0RWxtKT90aGlzLmhhbmRsZVJlc3VsdCh0aGlzLmNsaXBib2FyZFNydi5jb3B5RnJvbUlucHV0RWxlbWVudCh0aGlzLnRhcmdl''@;'; put 'put ''dEVsbSksdGhpcy50YXJnZXRFbG0udmFsdWUsbSk6dGhpcy5jYkNvbnRlbnQmJnRoaXMuaGFuZGxlUmVzdWx0KHRoaXMuY2xpcGJvYXJkU3J2LmNvcHlGcm9tQ29udGVudCh0aGlzLmNiQ29udGVudCx0aGlzLmNvbnRhaW5lciksdGhpcy5jYkNvbnRlbnQsbSk6dGhpcy5oYW5kbGVSZXN1bHQo''@;'; put 'put ''ITEsdm9pZCAwLG0pfX1uZ09uSW5pdCgpe3RoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5jbGlja0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJjbGljayIsdGhpcy5vbkNsaWNrKX0pfW5nT25EZXN0cm95KCl7dGhp''@;'; put 'put ''cy5jbGlja0xpc3RlbmVyJiZ0aGlzLmNsaWNrTGlzdGVuZXIoKSx0aGlzLmNsaXBib2FyZFNydi5kZXN0cm95KHRoaXMuY29udGFpbmVyKX1oYW5kbGVSZXN1bHQoYSxmLGQpe2xldCBoPXtpc1N1Y2Nlc3M6YSxjb250ZW50OmYsc3VjY2Vzc01lc3NhZ2U6dGhpcy5jYlN1Y2Nlc3NNc2csZXZl''@;'; put 'put ''bnQ6ZH07YT90aGlzLmNiT25TdWNjZXNzLm9ic2VydmVkJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLmNiT25TdWNjZXNzLmVtaXQoaCl9KTp0aGlzLmNiT25FcnJvci5vYnNlcnZlZCYmdGhpcy5uZ1pvbmUucnVuKCgpPT57dGhpcy5jYk9uRXJyb3IuZW1pdChoKX0pLHRoaXMuY2xpcGJv''@;'; put 'put ''YXJkU3J2LnB1c2hDb3B5UmVzcG9uc2UoaCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKHJ0KFVvKSxydChWaSkscnQoam8pLHJ0KHZIdCkpfSxsLlx1MDI3NWRpcj1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ3hDbGlwYm9hcmQiLCIiXV0s''@;'; put 'put ''aW5wdXRzOnt0YXJnZXRFbG06WyJuZ3hDbGlwYm9hcmQiLCJ0YXJnZXRFbG0iXSxjb250YWluZXI6ImNvbnRhaW5lciIsY2JDb250ZW50OiJjYkNvbnRlbnQiLGNiU3VjY2Vzc01zZzoiY2JTdWNjZXNzTXNnIn0sb3V0cHV0czp7Y2JPblN1Y2Nlc3M6ImNiT25TdWNjZXNzIixjYk9uRXJyb3I6''@;'; put 'put ''ImNiT25FcnJvciJ9fSksbH0pKCksYkh0PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9eGkoe2ltcG9ydHM6W2JvXX0pLGx9KSgpO3ZhciBfSHQ9VCg1MTcx''@;'; put 'put ''NCk7bGV0IHdIdD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhLC4uLmYpe2NvbnN0IGQ9cGFyc2VJbnQoZlswXSl8fDIsaD0ibnVtYmVyIiE9dHlwZW9mIGE/cGFyc2VJbnQoYSk6YTtyZXR1cm4oMCxfSHQuUikoaCxkKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBu''@;'; put 'put ''ZXcoYXx8bCl9LGwuXHUwMjc1cGlwZT1WbCh7bmFtZToiY29udmVydFNpemUiLHR5cGU6bCxwdXJlOiEwfSksbH0pKCk7Y29uc3QgQ0h0PVsicXVlcnlGaWx0ZXIiXTtmdW5jdGlvbiBTSHQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDUwKSx0bigxLCJjbHItc3Bpbm5lciIsNTEpLENlKCkpfWZ1''@;'; put 'put ''bmN0aW9uIE1IdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDU4KX1mdW5jdGlvbiBrSHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsNTkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKDIpO3JldHVybiBkLmxpYnJhcmllc1NlYXJj''@;'; put 'put ''aD0iIixadChkLmxpYnJhcnlPbkZpbHRlcigpKX0pLENlKCl9fWZ1bmN0aW9uIEVIdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci10cmVlLW5vZGUiLDUyKSgxLCJkaXYiLDUzKSgyLCJpbnB1dCIsNTQsNTUpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihkKXtyZXR1''@;'; put 'put ''cm4gVXQoYSksWnQoR2UoKS5saWJyYXJpZXNTZWFyY2g9ZCl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubGlicmFyeU9uRmlsdGVyKCkpfSksQ2UoKSx0dCg0LE1IdCwxLDAsImNsci1pY29uIiw1NiksdHQoNSxrSHQsMSwwLCJjbHItaWNvbiIsNTcpLENlKCko''@;'; put 'put ''KX1pZigyJmwpe2NvbnN0IGE9UWkoMyksZj1HZSgpO1NlKDIpLFJlKCJuZ01vZGVsIixmLmxpYnJhcmllc1NlYXJjaCksU2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24geEh0KGwsYyl7MSZsJiZ0bigw''@;'; put 'put ''LCJjbHItaWNvbiIsNTgpfWZ1bmN0aW9uIEFIdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1abigpO3llKDAsImNsci1pY29uIiw1OSksRXQoImNsaWNrIixmdW5jdGlvbigpe1V0KGEpLEdlKCk7Y29uc3QgZD1RaSgzKSxoPUdlKDIpLiRpbXBsaWNpdCxtPUdlKCk7cmV0dXJuIGQudmFsdWU9IiIs''@;'; put 'put ''aC5zZWFyY2hTdHJpbmc9IiIsWnQobS50cmVlT25GaWx0ZXIoaCwidGFibGVzIikpfSksQ2UoKX19ZnVuY3Rpb24gVEh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLXRyZWUtbm9kZSIsNTIpKDEsImRpdiIsNTMpKDIsImlucHV0Iiw2NCw2NSksRXQoIm5nTW9kZWxDaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKGQpe3JldHVybiBVdChhKSxadChHZSgyKS4kaW1wbGljaXQuc2VhcmNoU3RyaW5nPWQpfSkoImtleXVwIixmdW5jdGlvbigpe1V0KGEpO2NvbnN0IGQ9R2UoMikuJGltcGxpY2l0O3JldHVybiBadChHZSgpLnRyZWVPbkZpbHRlcihkLCJ0YWJsZXMiKSl9KSxDZSgpLHR0''@;'; put 'put ''KDQseEh0LDEsMCwiY2xyLWljb24iLDU2KSx0dCg1LEFIdCwxLDAsImNsci1pY29uIiw1NyksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1RaSgzKSxmPUdlKDIpLiRpbXBsaWNpdDtTZSgyKSxSZSgiaWQiLCJzZWFyY2hfIitmLkxJQlJBUllSRUYpKCJuZ01vZGVsIixmLnNlYXJjaFN0cmluZyks''@;'; put 'put ''U2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLFNlKDEpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gT0h0KGwsYyl7MSZsJiZ0bigwLCJjbHItaWNvbiIsNzMpfWZ1bmN0aW9uIERIdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDc0KX1mdW5jdGlvbiBJ''@;'; put 'put ''SHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDY5KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1HZSgpLm5nVmFyLGg9R2UoKS4kaW1wbGljaXQsbT1HZSgyKS4kaW1wbGljaXQsXz1HZSgpO3JldHVybiBadChkPyIiOl8ub25UYWJsZUNsaWNr''@;'; put 'put ''KGgsbSkpfSksV3IoMSw3MCksdHQoMixPSHQsMSwwLCJjbHItaWNvbiIsNzEpLHR0KDMsREh0LDEsMCwiY2xyLWljb24iLDcyKSxHcigpLFllKDQpLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKCkubmdWYXIsZj1HZSgpLiRpbXBsaWNpdCxkPUdlKDIpLiRpbXBsaWNpdCxoPUdlKCk7Z3IoImRj''@;'; put 'put ''LWxvY2tlZC1jb250cm9sIixhKSgidGFibGUtYWN0aXZlIixoLmxpYlRhYkFjdGl2ZShkLkxJQlJBUllSRUYsZikpLFNlKDEpLFJlKCJuZ1N3aXRjaCIsZi5pbmNsdWRlcygiLUZDIikpLFNlKDEpLFJlKCJuZ1N3aXRjaENhc2UiLCEwKSxTZSgxKSxSZSgibmdTd2l0Y2hDYXNlIiwhMSksU2Uo''@;'; put 'put ''MSksd3IoIiAiLGYucmVwbGFjZSgiLUZDIiwiIiksIiAiKX19ZnVuY3Rpb24gUkh0KGwsYyl7MSZsJiYoeWUoMCwic3BhbiIpLFllKDEsIiBUbyB1bmxvY2sgYWxsIHRhYmxlcywgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvICIpLENlKCkpfWZ1bmN0aW9uIExIdChsLGMpe2lm''@;'; put 'put ''KDEmbCYmKHllKDAsImNsci10b29sdGlwLWNvbnRlbnQiLDc1KSx0dCgxLFJIdCwyLDAsInNwYW4iLDM4KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS5uZ1ZhcjtTZSgxKSxSZSgibmdJZiIsYSl9fWZ1bmN0aW9uIFBIdChsLGMpe2lmKDEmbCYmKHllKDAsImNsci10b29sdGlwIiksdHQoMSxJ''@;'; put 'put ''SHQsNSw4LCJidXR0b24iLDY3KSx0dCgyLExIdCwyLDEsImNsci10b29sdGlwLWNvbnRlbnQiLDY4KSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7U2UoMSksUmUoIm5nSWYiLGEubGVuZ3RoPjApfX1mdW5jdGlvbiBGSHQobCxjKXtpZigxJmwmJih5ZSgwLCJjbHItdHJlZS1u''@;'; put 'put ''b2RlIiksdHQoMSxQSHQsMywxLCJjbHItdG9vbHRpcCIsNjYpLENlKCkpLDImbCl7Y29uc3QgYT1jLmluZGV4LGY9R2UoMyk7U2UoMSksUmUoIm5nVmFyIixhKzE+Zi5saWNlbmNlU3RhdGUudmFsdWUudGFibGVzX2luX2xpYnJhcnlfbGltaXQpfX1mdW5jdGlvbiBISHQobCxjKXtpZigxJmwp''@;'; put 'put ''e2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItdHJlZS1ub2RlIiw2MSksRXQoImNsaWNrIixmdW5jdGlvbihkKXtVdChhKTtjb25zdCBoPUdlKCkuJGltcGxpY2l0O3JldHVybiBadChHZSgpLnRyZWVOb2RlQ2xpY2tlZChkLGgpKX0pKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oZCl7cmV0''@;'; put 'put ''dXJuIFV0KGEpLFp0KEdlKCkuJGltcGxpY2l0LmV4cGFuZGVkPWQpfSkseWUoMSwicCIsNjIpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtVdChhKTtjb25zdCBkPUdlKCkuJGltcGxpY2l0LGg9R2UoKTtyZXR1cm4gaC5saWI9ZC5MSUJSQVJZUkVGLFp0KGgubGlicmFyeU9uQ2xpY2soZC5MSUJS''@;'; put 'put ''QVJZUkVGLGQpKX0pLHRuKDIsImNsci1pY29uIiw2MyksWWUoMyksQ2UoKSx0dCg0LFRIdCw2LDQsImNsci10cmVlLW5vZGUiLDIpLHR0KDUsRkh0LDIsMSwiY2xyLXRyZWUtbm9kZSIsMyksQ2UoKX1pZigyJmwpe2NvbnN0IGE9R2UoKS4kaW1wbGljaXQ7Z3IoImNsci1leHBhbmRlZCIsYS5l''@;'; put 'put ''eHBhbmRlZCksUmUoImNsckV4cGFuZGVkIixhLmV4cGFuZGVkKSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nVGFibGVzJiYhYS50YWJsZXMpLFNlKDMpLHdyKCIgIixhLkxJQlJBUllOQU1FLCIgIiksU2UoMSksUmUoIm5nSWYiLGEudGFibGVzKSxTZSgxKSxSZSgibmdGb3JPZiIsYS50YWJsZXMp''@;'; put 'put ''fX1mdW5jdGlvbiBOSHQobCxjKXtpZigxJmwmJihXcigwKSx0dCgxLEhIdCw2LDcsImNsci10cmVlLW5vZGUiLDYwKSxHcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7U2UoMSksUmUoIm5nSWYiLCFhLmhpZGRlbiYmYS5pbkZvcmVncm91bmQpfX1mdW5jdGlvbiBWSHQobCxjKXsxJmwm''@;'; put 'put ''Jih5ZSgwLCJkaXYiLDc2KSgxLCJzcGFuIiw3NyksWWUoMiwiIExvYWRpbmcuLi4gIiksQ2UoKSgpKX1mdW5jdGlvbiBCSHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJkaXYiLDc4KSgxLCJkaXYiLDc5KSgyLCJkaXYiLDgwKSgzLCJkaXYiLDgxKSg0LCJidXR0b24iLDgyKSx0''@;'; put 'put ''big1LCJjbHItaWNvbiIsODMpLENlKCkseWUoNiwiaDMiLDQzKSxZZSg3LCJFcnJvciIpLENlKCkoKSx5ZSg4LCJkaXYiLDEwKSg5LCJwIiksWWUoMTAsIllvdSBjYW5ub3Qgc3VibWl0IGVtcHR5IGNsYXVzZXMiKSxDZSgpKCkseWUoMTEsImRpdiIsMjEpKDEyLCJidXR0b24iLDg0KSxFdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKCkubnVsbFZhcmlhYmxlcz0hMSl9KSxZZSgxMywiIE9rICIpLENlKCkoKSgpKCkoKX19ZnVuY3Rpb24gakh0KGwsYyl7MSZsJiZ0bigwLCJkaXYiLDg1KX1mdW5jdGlvbiB6SHQobCxjKXsxJmwmJnRuKDAsImFwcC1xdWVyeSIs''@;'; put 'put ''bnVsbCw4Nil9ZnVuY3Rpb24gVUh0KGwsYyl7MSZsJiYoeWUoMCwiZGl2Iiw4NykoMSwic3BhbiIsODgpLFllKDIsIiBMb2FkaW5nLi4uICIpLENlKCkseWUoMywiZGl2IikoNCwiaDQiKSxZZSg1LCJMb2FkaW5nIHRhYmxlIHZpZXdlciIpLENlKCkoKSgpKX1mdW5jdGlvbiBaSHQobCxjKXtp''@;'; put 'put ''ZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJjbHItaWNvbiIsMTExKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7VXQoYSksR2UoKTtjb25zdCBkPVFpKDUpO3JldHVybiBadChHZSgyKS5zZWFyY2hUYWJsZShkKSl9KSxDZSgpfX1mdW5jdGlvbiBZSHQobCxjKXsxJmwmJih5ZSgwLCJzcGFuIiwx''@;'; put 'put ''MTIpLFllKDEsIiBMb2FkaW5nLi4uICIpLENlKCkpfWZ1bmN0aW9uIFdIdChsLGMpezEmbCYmdG4oMCwiY2xyLWljb24iLDExMyl9ZnVuY3Rpb24gR0h0KGwsYyl7aWYoMSZsJiYoeWUoMCwic3BhbiIpLFllKDEpLHdsKDIsInRob3VzYW5kU2VwYXJhdG9yIiksQ2UoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PUdlKDQpO1NlKDEpLHlnKCIgKCIsd2coMiw0LGEubnVtYmVyT2ZSb3dzLCIsIiksIiAiLDE9PT1hLm51bWJlck9mUm93cz8icm93Ijoicm93cyIsIiwgIixhLmZpbHRlckNvbHMubGVuZ3RoLCIiLDE9PT1hLmZpbHRlckNvbHMubGVuZ3RoPyIgY29sIjoiIGNvbHMiLCIpICIpfX1mdW5jdGlv''@;'; put 'put ''biAkSHQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJoMyIsMTE0KSxZZSgxKSx0dCgyLEdIdCwzLDcsInNwYW4iLDM4KSx5ZSgzLCJjbHItaWNvbiIsMTE1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDMpLnJlbG9hZFRhYmxlRGF0YSgpKX0pLENl''@;'; put 'put ''KCkoKX1pZigyJmwpe2NvbnN0IGE9R2UoMyk7U2UoMSksd3IoIiAiLG51bGw9PWEudGFibGVUaXRsZT9udWxsOmEudGFibGVUaXRsZS5yZXBsYWNlKCItRkMiLCIiKSwiICIpLFNlKDEpLFJlKCJuZ0lmIixudWxsIT09YS5udW1iZXJPZlJvd3MpfX1mdW5jdGlvbiBLSHQobCxjKXtpZigxJmwp''@;'; put 'put ''e2NvbnN0IGE9Wm4oKTt5ZSgwLCJidXR0b24iLDEyMSksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBVdChhKSxadChHZSg1KS5lZGl0VGFibGUoKSl9KSx0bigxLCJjbHItaWNvbiIsMTI4KSx5ZSgyLCJzcGFuIiksWWUoMywiRWRpdCIpLENlKCkoKX19ZnVuY3Rpb24gcUh0KGwsYyl7''@;'; put 'put ''aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiYnV0dG9uIiwxMjEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoNSkuZ29Ub0xpbmVhZ2UoKSl9KSx0bigxLCJjbHItaWNvbiIsMTI5KSx5ZSgyLCJzcGFuIiksWWUoMywiTGluZWFnZSIpLENlKCkoKX19ZnVuY3Rp''@;'; put 'put ''b24gWEh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDEyMCkoMSwiYnV0dG9uIiwxMjEpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoNCkubmV3Vmlld2JveCgpKX0pLHRuKDIsImNsci1pY29uIiwxMjIpLHllKDMs''@;'; put 'put ''InNwYW4iKSxZZSg0LCJWaWV3Ym94ZXMiKSxDZSgpKCksdHQoNSxLSHQsNCwwLCJidXR0b24iLDEyMyksdHQoNixxSHQsNCwwLCJidXR0b24iLDEyMykseWUoNywiYnV0dG9uIiwxMjQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoNCkub3BlblFiKCkpfSksdG4o''@;'; put 'put ''OCwiY2xyLWljb24iLDEyNSkseWUoOSwic3BhbiIpLFllKDEwLCJGaWx0ZXIiKSxDZSgpKCkseWUoMTEsImJ1dHRvbiIsMTIxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLm9wZW5Eb3dubG9hZD0hMCl9KSx0bigxMiwiY2xyLWljb24iLDEyNikseWUoMTMs''@;'; put 'put ''InNwYW4iKSxZZSgxNCwiRG93bmxvYWQiKSxDZSgpKCkseWUoMTUsImJ1dHRvbiIsMTIxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDQpLnNob3dXZWJRdWVyeSgpKX0pLHRuKDE2LCJjbHItaWNvbiIsMTI3KSx5ZSgxNywic3BhbiIpLFllKDE4LCJXZWIgUXVl''@;'; put 'put ''cnkgVVJMIiksQ2UoKSgpKCl9aWYoMiZsKXtjb25zdCBhPUdlKDQpO1NlKDUpLFJlKCJuZ0lmIixhLnRhYmxlRWRpdEV4aXN0cygpKSxTZSgxKSxSZSgibmdJZiIsYS50YWJsZXVyaSl9fWZ1bmN0aW9uIEpIdChsLGMpezEmbCYmKHllKDAsImNsci1kcm9wZG93biIsMTE2KSgxLCJidXR0b24i''@;'; put 'put ''LDExNyksdG4oMiwiY2xyLWljb24iLDExOCksWWUoMywiIG9wdGlvbnMgIiksQ2UoKSx0dCg0LFhIdCwxOSwyLCJjbHItZHJvcGRvd24tbWVudSIsMTE5KSxDZSgpKSwyJmwmJlJlKCJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayIsITApfWZ1bmN0aW9uIFFIdChsLGMpe2lmKDEmbCYmKHllKDAs''@;'; put 'put ''ImRpdiIsMTMwKSgxLCJzcGFuIiksWWUoMiwiRklMVEVSIDogIikseWUoMywiYiIpLFllKDQpLENlKCkoKSgpKSwyJmwpe2NvbnN0IGE9R2UoMyk7U2UoNCksYXIoYS5xdWVyeVRleHQpfX1jb25zdCBlTnQ9ZnVuY3Rpb24oKXtyZXR1cm5bIiIsIiAiXX07ZnVuY3Rpb24gdE50KGwsYyl7aWYo''@;'; put 'put ''MSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2Iiw5NSkoMSwic2VjdGlvbiIsOTYpKDIsImZvcm0iLDk3KSgzLCJkaXYiLDk4KSg0LCJpbnB1dCIsOTksMTAwKSxFdCgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKCl7VXQoYSk7Y29uc3QgZD1RaSg1KTtyZXR1cm4gWnQoR2UoMikuc2VhcmNoVGFi''@;'; put 'put ''bGUoZCkpfSksQ2UoKSx0dCg2LFpIdCwxLDAsImNsci1pY29uIiwxMDEpLHR0KDcsWUh0LDIsMCwic3BhbiIsMTAyKSxDZSgpLHllKDgsImNsci1jaGVja2JveC1jb250YWluZXIiKSg5LCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDEwLCJpbnB1dCIsMTAzKSxFdCgibmdNb2RlbENoYW5nZSIs''@;'; put 'put ''ZnVuY3Rpb24oZCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnNlYXJjaE51bWVyaWM9ZCl9KSxDZSgpLHllKDExLCJsYWJlbCIpLFllKDEyLCJOdW1lcmljIiksQ2UoKSgpKCkoKSgpLHllKDEzLCJkaXYiLDEwNCkoMTQsImNsci1pY29uIiwxMDUpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVXQoYSksWnQoR2UoMikuZGF0YXNldEluZm89ITApfSksQ2UoKSx0dCgxNSxXSHQsMSwwLCJjbHItaWNvbiIsMTA2KSx0dCgxNiwkSHQsNCwyLCJoMyIsMTA3KSxDZSgpLHllKDE3LCJkaXYiLDEwOCksdHQoMTgsSkh0LDUsMSwiY2xyLWRyb3Bkb3duIiwxMDkpLENlKCksdHQoMTksUUh0''@;'; put 'put ''LDUsMSwiZGl2IiwxMTApLENlKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDQpLFJlKCJ0eXBlIixhLnNlYXJjaE51bWVyaWM/Im51bWJlciI6InRleHQiKSxTZSgyKSxSZSgibmdJZiIsIWEuc2VhcmNoTG9hZGluZyksU2UoMSksUmUoIm5nSWYiLGEuc2VhcmNoTG9hZGluZyksU2UoMyks''@;'; put 'put ''UmUoIm5nTW9kZWwiLGEuc2VhcmNoTnVtZXJpYyksU2UoNSksUmUoIm5nSWYiLG51bGw9PWEudGFibGVUaXRsZT9udWxsOmEudGFibGVUaXRsZS5pbmNsdWRlcygiLUZDIikpLFNlKDEpLFJlKCJuZ0lmIixhLnRhYmxlVGl0bGUmJmEudGFibGVUaXRsZS5sZW5ndGg+MCksU2UoMiksUmUoIm5n''@;'; put 'put ''SWYiLGEudGFibGVUaXRsZSYmIWEuYWJvcnRBY3RpdmUpLFNlKDEpLFJlKCJuZ0lmIiwiMT0xIiE9PWEucXVlcnlUZXh0JiYhWGEoOCxlTnQpLmluY2x1ZGVzKGEucXVlcnlUZXh0KSYmIWEuYWJvcnRBY3RpdmUpfX1mdW5jdGlvbiBuTnQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDEzMSksdG4o''@;'; put 'put ''MSwiY2xyLWljb24iLDEzMikseWUoMiwiaDMiLDEzMyksWWUoMywiUGxlYXNlIHNlbGVjdCBhIGxpYnJhcnkiKSxDZSgpKCkpfWZ1bmN0aW9uIHJOdChsLGMpezEmbCYmdG4oMCwiY2xyLXNwaW5uZXIiLDUxKX1mdW5jdGlvbiBpTnQobCxjKXsxJmwmJih5ZSgwLCJkaXYiLDE0MSksdG4oMSwi''@;'; put 'put ''Y2xyLWljb24iLDE0MikseWUoMiwiaDMiLDEzMyksWWUoMywiUGxlYXNlIHNlbGVjdCBhIHRhYmxlIiksQ2UoKSgpKX1mdW5jdGlvbiBvTnQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTt5ZSgwLCJwIiwxNDUpLFllKDEsIiBObyBsaWJyYXJ5IGluZm8gZm91bmQuIENsaWNrICIpLHllKDIs''@;'; put 'put ''ImNsci1pY29uIiwxNDYpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoNCkucmVsb2FkTGliSW5mbygpKX0pLENlKCksWWUoMywiIGJ1dHRvbiB0byByZWZyZXNoLiAiKSxDZSgpfX1mdW5jdGlvbiBhTnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiwx''@;'; put 'put ''NDcpLFllKDIsIkVOR0lORToiKSxDZSgpLHllKDMsInRkIiwxNDgpLFllKDQpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDUpO1NlKDQpLHdyKCIgIixhLmxpYmluZm9bMF0/YS5saWJpbmZvWzBdLkVOR0lORToiIiwiICIpfX1mdW5jdGlvbiBsTnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIp''@;'; put 'put ''KDEsInRkIiwxNDcpLFllKDIsIkxJQklEOiIpLENlKCkseWUoMywidGQiLDE0OCksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoNSk7U2UoNCksd3IoIiAiLGEubGliaW5mb1swXT9hLmxpYmluZm9bMF0uTElCSUQ6IiIsIiAiKX19ZnVuY3Rpb24gc050KGwsYyl7aWYoMSZsJiYoeWUo''@;'; put 'put ''MCwidHIiKSgxLCJ0ZCIsMTQ3KSxZZSgyLCJMSUJOQU1FOiIpLENlKCkseWUoMywidGQiLDE0OCksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoNSk7U2UoNCksd3IoIiAiLGEubGliaW5mb1swXT9hLmxpYmluZm9bMF0uTElCTkFNRToiIiwiICIpfX1mdW5jdGlvbiB1TnQobCxjKXtp''@;'; put 'put ''ZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiwxNDcpLFllKDIsIkxJQlNJWkU6IiksQ2UoKSx5ZSgzLCJ0ZCIsMTQ4KSxZZSg0KSx3bCg1LCJjb252ZXJ0U2l6ZSIpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDUpO1NlKDQpLHdyKCIgIixhLmxpYmluZm9bMF0/SnMoNSwxLGEubGliaW5mb1sw''@;'; put 'put ''XS5MSUJTSVpFKToiIiwiICIpfX1mdW5jdGlvbiBjTnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiwxNDcpLFllKDIsIk9XTkVSUzoiKSxDZSgpLHllKDMsInRkIiwxNDgpLFllKDQpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDUpO1NlKDQpLHdyKCIgIixhLmxpYmluZm9bMF0/''@;'; put 'put ''YS5saWJpbmZvWzBdLk9XTkVSUzoiIiwiICIpfX1mdW5jdGlvbiBmTnQobCxjKXtpZigxJmwmJih5ZSgwLCJ0ciIpKDEsInRkIiwxNDcpLFllKDIsIlBBVEhTOiIpLENlKCkseWUoMywidGQiLDE0OCksWWUoNCksQ2UoKSgpKSwyJmwpe2NvbnN0IGE9R2UoNSk7U2UoNCksd3IoIiAiLGEubGli''@;'; put 'put ''aW5mb1swXT9hLmxpYmluZm9bMF0uUEFUSFM6IiIsIiAiKX19ZnVuY3Rpb24gZE50KGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiKSgxLCJ0ZCIsMTQ3KSxZZSgyLCJQRVJNUzoiKSxDZSgpLHllKDMsInRkIiwxNDgpLFllKDQpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDUpO1NlKDQpLHdyKCIg''@;'; put 'put ''IixhLmxpYmluZm9bMF0/YS5saWJpbmZvWzBdLlBFUk1TOiIiLCIgIil9fWZ1bmN0aW9uIGhOdChsLGMpe2lmKDEmbCYmKHllKDAsInRyIikoMSwidGQiLDE0NyksWWUoMiwiU0NIRU1BUzoiKSxDZSgpLHllKDMsInRkIiwxNDgpLFllKDQpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKDUpO1Nl''@;'; put 'put ''KDQpLHdyKCIgIixhLmxpYmluZm9bMF0/YS5saWJpbmZvWzBdLlNDSEVNQVM6IiIsIiAiKX19ZnVuY3Rpb24gcE50KGwsYyl7aWYoMSZsJiYoeWUoMCwidHIiKSgxLCJ0ZCIsMTQ3KSxZZSgyLCJUQUJMRV9DTlQ6IiksQ2UoKSx5ZSgzLCJ0ZCIsMTQ4KSxZZSg0KSxDZSgpKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1HZSg1KTtTZSg0KSx3cigiICIsYS5saWJpbmZvWzBdP2EubGliaW5mb1swXS5UQUJMRV9DTlQ6IiIsIiAiKX19ZnVuY3Rpb24gbU50KGwsYyl7aWYoMSZsJiYoV3IoMCkseWUoMSwidGFibGUiKSx0dCgyLGFOdCw1LDEsInRyIiwzOCksdHQoMyxsTnQsNSwxLCJ0ciIsMzgpLHR0KDQs''@;'; put 'put ''c050LDUsMSwidHIiLDM4KSx0dCg1LHVOdCw2LDMsInRyIiwzOCksdHQoNixjTnQsNSwxLCJ0ciIsMzgpLHR0KDcsZk50LDUsMSwidHIiLDM4KSx0dCg4LGROdCw1LDEsInRyIiwzOCksdHQoOSxoTnQsNSwxLCJ0ciIsMzgpLHR0KDEwLHBOdCw1LDEsInRyIiwzOCksQ2UoKSxHcigpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9R2UoNCk7U2UoMiksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLkVOR0lORSksU2UoMSksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLkxJQklEKSxTZSgxKSxSZSgibmdJZiIsIiIhPT1hLmxpYmluZm9bMF0uTElCTkFNRSksU2UoMSksUmUoIm5nSWYiLG51bGwhPT1h''@;'; put 'put ''LmxpYmluZm9bMF0uTElCU0laRSksU2UoMSksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLk9XTkVSUyksU2UoMSksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLlBBVEhTKSxTZSgxKSxSZSgibmdJZiIsIiIhPT1hLmxpYmluZm9bMF0uUEVSTVMpLFNlKDEpLFJlKCJuZ0lmIiwiIiE9''@;'; put 'put ''PWEubGliaW5mb1swXS5TQ0hFTUFTKSxTZSgxKSxSZSgibmdJZiIsbnVsbCE9PWEubGliaW5mb1swXS5UQUJMRV9DTlQpfX1mdW5jdGlvbiBnTnQobCxjKXtpZigxJmwmJih5ZSgwLCJkaXYiLDE0MyksdHQoMSxvTnQsNCwwLCJwIiwxNDQpLHR0KDIsbU50LDExLDksIm5nLWNvbnRhaW5lciIs''@;'; put 'put ''MzgpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgzKTtTZSgxKSxSZSgibmdJZiIsYS5saWJpbmZvLmxlbmd0aDwxKSxTZSgxKSxSZSgibmdJZiIsYS5saWJpbmZvLmxlbmd0aD4wKX19ZnVuY3Rpb24gdk50KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7V3IoMCkseWUoMSwiZGl2IiwxMzQpLHRu''@;'; put 'put ''KDIsInNlY3Rpb24iLDk2KSx5ZSgzLCJkaXYiLDEzNSkoNCwiaDMiLDEzNiksWWUoNSksQ2UoKSx5ZSg2LCJjbHItaWNvbiIsMTE1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0KEdlKDIpLnJlbG9hZExpYkluZm8oKSl9KSxDZSgpKCksdG4oNywiZGl2IiwxMDgpLENl''@;'; put 'put ''KCkseWUoOCwiZGl2IiwxMzcpLHR0KDksck50LDEsMCwiY2xyLXNwaW5uZXIiLDEzOCksQ2UoKSx0dCgxMCxpTnQsNCwwLCJkaXYiLDEzOSksdHQoMTEsZ050LDMsMiwiZGl2IiwxNDApLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdlKDIpO1NlKDUpLHdyKCIgIixhLmxpYiwiICIpLFNlKDQpLFJl''@;'; put 'put ''KCJuZ0lmIixudWxsPT09YS5saWJpbmZvKSxTZSgxKSxSZSgibmdJZiIsbnVsbCE9PWEubGliaW5mbyksU2UoMSksUmUoIm5nSWYiLG51bGwhPT1hLmxpYmluZm8pfX1mdW5jdGlvbiB5TnQobCxjKXsxJmwmJih5ZSgwLCJoMyIsMTMzKSxZZSgxLCIgTm8gZGF0YSBmb3VuZCB3aXRoIGdpdmVu''@;'; put 'put ''IGNvbmRpdGlvbnMgIiksQ2UoKSl9ZnVuY3Rpb24gYk50KGwsYyl7MSZsJiYoeWUoMCwiaDMiLDEzMyksWWUoMSwiIE5vIGRhdGEgZm91bmQgZHVlIHRvIHNhcyByZXF1ZXN0IGVycm9yICIpLENlKCkpfWZ1bmN0aW9uIF9OdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsMTQ5KSx0bigxLCJj''@;'; put 'put ''bHItaWNvbiIsMTUwKSx0dCgyLHlOdCwyLDAsImgzIiwxNTEpLHR0KDMsYk50LDIsMCwiaDMiLDE1MSksQ2UoKSksMiZsKXtjb25zdCBhPUdlKDIpO1NlKDIpLFJlKCJuZ0lmIixhLm5vRGF0YSksU2UoMSksUmUoIm5nSWYiLGEubm9EYXRhUmVxRXJyKX19ZnVuY3Rpb24gd050KGwsYyl7aWYo''@;'; put 'put ''MSZsJiYoeWUoMCwiZGl2IiwxNTIpLHRuKDEsImhvdC10YWJsZSIsMTUzKSxDZSgpKSwyJmwpe2NvbnN0IGE9R2UoMik7U2UoMSksUmUoIm11bHRpQ29sdW1uU29ydGluZyIsITApKCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsNTApKCJkYXRhIixhLmhvdFRhYmxlLmRhdGEpKCJjb2xI''@;'; put 'put ''ZWFkZXJzIixhLmhvdFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixhLmhvdFRhYmxlLmNvbHVtbnMpKCJjb3B5UGFzdGUiLGEuaG90VGFibGUuY29weVBhc3RlKSgiY29udGV4dE1lbnUiLGEuaG90VGFibGUuY29udGV4dE1lbnUpKCJmaWx0ZXJzIiwhMCkoImRyb3Bkb3duTWVudSIsYS5o''@;'; put 'put ''b3RUYWJsZS5kcm9wZG93bk1lbnUpKCJoZWlnaHQiLGEuaG90VGFibGUuaGVpZ2h0KSgibW9kaWZ5Q29sV2lkdGgiLGEubWF4V2lkdGhDaGVrZXIpKCJjZWxscyIsYS5ob3RUYWJsZS5jZWxscykoIm1heFJvd3MiLGEuaG90VGFibGUubWF4Um93cykoIm1hbnVhbENvbHVtblJlc2l6ZSIsITAp''@;'; put 'put ''KCJsaWNlbnNlS2V5IixhLmhvdFRhYmxlLmxpY2Vuc2VLZXkpfX1mdW5jdGlvbiBDTnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiwxNTQpLFllKDEpLHRuKDIsImNvbnRhY3QtbGluayIpLENlKCkpLDImbCl7Y29uc3QgYT1HZSgyKTtTZSgxKSx3cigiIFRvIGRpc3BsYXkgbW9yZSB0aGFuICIs''@;'; put 'put ''YS5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZCwiIHJvd3MsIGNvbnRhY3QgIil9fWZ1bmN0aW9uIFNOdChsLGMpe2lmKDEmbCYmKHllKDAsImRpdiIsODkpLHR0KDEsdE50LDIwLDksImRpdiIsOTApLHR0KDIsbk50LDQsMCwiZGl2Iiw5MSksdHQoMyx2TnQsMTIsNCwi''@;'; put 'put ''bmctY29udGFpbmVyIiwzOCksdHQoNCxfTnQsNCwyLCJkaXYiLDkyKSx0dCg1LHdOdCwyLDE1LCJkaXYiLDkzKSx5ZSg2LCJkaXYiKSx0dCg3LENOdCwzLDEsInAiLDk0KSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDEpLFJlKCJuZ0lmIixhLnRhYmxlKSxTZSgxKSxSZSgibmdJZiIs''@;'; put 'put ''IShhLmxpYnx8YS50YWJsZXx8YS5ub0RhdGFSZXFFcnJ8fGEubm9EYXRhKSksU2UoMSksUmUoIm5nSWYiLCFhLm5vRGF0YSYmIWEubm9EYXRhUmVxRXJyJiYhYS50YWJsZSYmYS5saWIpLFNlKDEpLFJlKCJuZ0lmIixhLm5vRGF0YXx8YS5ub0RhdGFSZXFFcnIpLFNlKDEpLFJlKCJuZ0lmIiwh''@;'; put 'put ''YS5ub0RhdGEmJiFhLm5vRGF0YVJlcUVyciYmYS50YWJsZSksU2UoMiksUmUoIm5nSWYiLGEubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWQhPT1hLkluZmluaXR5JiZhLmhvdFRhYmxlLmRhdGEmJmEuaG90VGFibGUuZGF0YS5sZW5ndGg+YS5saWNlbmNlU3RhdGUudmFs''@;'; put 'put ''dWUudmlld2VyX3Jvd3NfYWxsb3dlZCl9fWxldCBBRj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkLGgsbSxfLE8sWCxhZSxwZSl7dGhpcy5saWNlbmNlU2VydmljZT1hLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPWYsdGhpcy5zYXNTZXJ2aWNlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLnJv''@;'; put 'put ''dXRlPW0sdGhpcy5ldmVudFNlcnZpY2U9Xyx0aGlzLmxvZ2dlclNlcnZpY2U9Tyx0aGlzLmhlbHBlclNlcnZpY2U9WCx0aGlzLmxvY2F0aW9uPWFlLHRoaXMuY2RmPXBlLHRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdD1uZXcgVTIsdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEsdGhpcy5saWJyYXJp''@;'; put 'put ''ZXNTZWFyY2g9IiIsdGhpcy5saWJyYXJ5VGFibGVzUmVmPSIiLHRoaXMubGlicmFyaWVzVHJlZUV4cGFuZGVkPSExLHRoaXMubGliaW5mbz1udWxsLHRoaXMudGFibGV1cmk9bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLmZpbHRlckNvbHM9W10sdGhpcy5udWxsVmFyaWFibGVzPSExLHRoaXMu''@;'; put 'put ''YWJvcnRBY3RpdmU9ITEsdGhpcy51cmxGaWx0ZXJQaz1udWxsLHRoaXMucXVlcnlUZXh0PSIiLHRoaXMud2ViUXVlcnlUZXh0PSIiLHRoaXMucXVlcnlFcnI9ITEsdGhpcy50YWJsZUZsYWc9ITAsdGhpcy5saWJyYXJpZXNMb2FkaW5nPSExLHRoaXMubG9hZGluZ1RhYmxlVmlldz0hMSx0aGlz''@;'; put 'put ''LnN3aXRjaEZsYWc9ITEsdGhpcy5ub0RhdGE9ITEsdGhpcy5ub0RhdGFSZXFFcnI9ITEsdGhpcy50YWJsZURpc2FibGU9ITEsdGhpcy5hY3Rpb25EaXNhYmxlPSExLHRoaXMub3BlbkRvd25sb2FkPSExLHRoaXMud2ViUXVlcnk9ITEsdGhpcy53ZWJRdWVyeVRhYj0hMSx0aGlzLmRvd25sb2Fk''@;'; put 'put ''Rm9ybWF0PSJDU1YiLHRoaXMuc2FzanNDb25maWc9bmV3IHYxLlNBU2pzQ29uZmlnLHRoaXMuc2VhcmNoTG9hZGluZz0hMSx0aGlzLnNlYXJjaE51bWVyaWM9ITEsdGhpcy5udW1iZXJPZlJvd3M9bnVsbCx0aGlzLmhlYWRlclBrcz1bXSx0aGlzLiRkYXRhRm9ybWF0cz1udWxsLHRoaXMuZGF0''@;'; put 'put ''YXNldEluZm89ITEsdGhpcy5kc21ldGE9W10sdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGUsdGhpcy5JbmZpbml0eT0xLzAsdGhpcy5ob3RUYWJsZT17ZGF0YTpbXSxjb2xIZWFkZXJzOltdLGNvbHVtbnM6W10saGVpZ2h0OiIxMDAlIixtYXhSb3dz''@;'; put 'put ''OnRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWR8fDEvMCxzZXR0aW5nczp7fSxhZnRlckdldENvbEhlYWRlcjp2b2lkIDAsbGljZW5zZUtleTp2b2lkIDAsY29udGV4dE1lbnU6WyJjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnMiLCJjb3B5X2NvbHVtbl9oZWFkZXJz''@;'; put 'put ''X29ubHkiXSxjb3B5UGFzdGU6e2NvcHlDb2x1bW5IZWFkZXJzOiEwLGNvcHlDb2x1bW5IZWFkZXJzT25seTohMH0sZHJvcGRvd25NZW51OntpdGVtczp7bWFrZV9yZWFkX29ubHk6e25hbWU6Im1ha2VfcmVhZF9vbmx5In0sYWxpZ25tZW50OntuYW1lOiJhbGlnbm1lbnQifSxzcDE6e25hbWU6''@;'; put 'put ''Ii0tLS0tLS0tLSJ9LGluZm86e25hbWU6InRlc3QgaW5mbyIscmVuZGVyZXI6KGJlLHhlLFZlLFplLGx0LGR0KT0+e2NvbnN0IGd0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtsZXQganQscm49Ik5vIGluZm8gZm91bmQiO2lmKHRoaXMuaG90SW5zdGFuY2Upe2NvbnN0IFh0PXRo''@;'; put 'put ''aXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKXx8W10seW49WHQ/WHRbMF1bMV06LTEsUW49dGhpcy5ob3RJbnN0YW5jZT8uY29sVG9Qcm9wKHluKTtqdD10aGlzLiRkYXRhRm9ybWF0cz8udmFyc1tRbl0sanQmJihybj1gTEFCRUw6ICR7anQ/LmxhYmVsfTxicj5UWVBFOiAke2p0Py50eXBl''@;'; put 'put ''fTxicj5MRU5HVEg6ICR7anQ/Lmxlbmd0aH08YnI+Rk9STUFUOiAke2p0Py5mb3JtYXR9YCl9cmV0dXJuIGd0LmlubmVySFRNTD1ybixndH19fX19LHRoaXMuaG90SW5zdGFuY2U9bnVsbCx0aGlzLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcj0hMSx0aGlzLnZpZXdib3hPcGVuPSExLHRoaXMu''@;'; put 'put ''aG90VGFibGVSZWdpc3RlcmVyPW5ldyBJNSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpfW5nT25Jbml0KCl7IiIhPT1Kbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbiYmMD09PU9iamVjdC5rZXlzKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKS5s''@;'; put 'put ''ZW5ndGgmJnRoaXMucm91dGVyLm5hdmlnYXRlKFtKbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbl0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSYmKEpuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2''@;'; put 'put ''aWV3L2RhdGEiKSx0aGlzLmxpY2VuY2VTZXJ2aWNlLmhvdF9saWNlbnNlX2tleS5zdWJzY3JpYmUoYT0+e3RoaXMuaG90VGFibGUubGljZW5zZUtleT1hfSl9bmV3Vmlld2JveCgpe3RoaXMudmlld2JveE9wZW49ITB9cmVzZXRGaWx0ZXIoKXt0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmly''@;'; put 'put ''c3QmJnRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdC5yZXNldEZpbHRlcigpfXNlYXJjaFRhYmxlKGEpe3ZhciBmPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2Yuc2VhcmNoTG9hZGluZz0hMDtsZXQgZD1hLnZhbHVlLGg9Zi5saWIrIi4iK2YudGFibGUsbT1wYXJzZUludChmLnJv''@;'; put 'put ''dXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCl8fDA7eWllbGQgZi5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGFTZWFyY2goZCxmLnNlYXJjaE51bWVyaWMsaCxtKS50aGVuKF89PntfLnNhc3BhcmFtc3x8Xy52aWV3RGF0YT8oZi5ob3RUYWJsZS5kYXRhPV8udmlld2RhdGEsZi4kZGF0YUZv''@;'; put 'put ''cm1hdHM9Xy4kdmlld2RhdGEsZi5kc21ldGE9Xy5kc21ldGEsZi5udW1iZXJPZlJvd3M9Xy5zYXNwYXJhbXNbMF0uTk9CUyxmLnF1ZXJ5VGV4dD1fLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVCxmLmhlYWRlclBrcz1fLnNhc3BhcmFtc1swXS5QS19GSUVMRFMuc3BsaXQoIiAiKSwwPT09Zi5o''@;'; put 'put ''b3RUYWJsZS5kYXRhLmxlbmd0aD9mLm5vRGF0YT0hMDooZi5ub0RhdGE9ITEsZi50YWJsZUZsYWc9ITEsZi5zZXR1cEhvdCgpKSk6Zi5zZWFyY2hMb2FkaW5nPSExfSkuY2F0Y2goXz0+e2YubG9nZ2VyU2VydmljZS5lcnJvcihfKX0pLGYuc2VhcmNoTG9hZGluZz0hMX0pKCl9cmVsb2FkVGFi''@;'; put 'put ''bGVEYXRhKCl7dGhpcy52aWV3RGF0YSh0aGlzLnVybEZpbHRlclBrfHwwKX1yZWxvYWRMaWJJbmZvKCl7dmFyIGE9dGhpcztyZXR1cm4geWkoZnVuY3Rpb24qKCl7YS5saWJpbmZvPW51bGwsYS5zYXNTdG9yZVNlcnZpY2UucmVmcmVzaExpYkluZm8oYS5saWIpLnRoZW4oZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZj15aShmdW5jdGlvbiooZCl7YS5saWJpbmZvPWQubGliaW5mbyxKbi52aWV3ZXIubGliaW5mbz1hLmxpYmluZm87Y29uc3QgaD1hLmxpYnJhcmllcy5maW5kKG09Pm0uTElCUkFSWVJFRj09PWEubGliKTtoJiYoaC5saWJpbmZvPWEubGliaW5mbyl9KTtyZXR1cm4gZnVuY3Rpb24oZCl7''@;'; put 'put ''cmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxmPT57YS5sb2dnZXJTZXJ2aWNlLmVycm9yKGYpLG51bGw9PT1hLmxpYmluZm8mJihhLmxpYmluZm89W10pfSl9KSgpfWZpbHRlckZuKGEpe3RoaXMubGlicmFyaWVzPXRoaXMubGlicmFyaWVzLmZpbHRlcihkPT4tMSE9PWQuTElC''@;'; put 'put ''UkFSWU5BTUUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEudG9Mb2NhbGVMb3dlckNhc2UoKSkpfWRvd25sb2FkRGF0YSgpe2xldCBhPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLGY9dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2M7Y29uc3QgZD10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9u''@;'; put 'put ''UGF0aCgpO2xldCBPLGg9IiZ0eXBlPSIrdGhpcy5kb3dubG9hZEZvcm1hdCxtPSImdGFibGU9Iit0aGlzLnRhYmxlVGl0bGUsXz0iU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU/YCZfY29udGV4dG5hbWU9JHt0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lfWA6IiI7''@;'; put 'put ''Tz10eXBlb2YgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQ+InUiPzA6cGFyc2VJbnQodGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWQpLHdpbmRvdy5vcGVuKGErZCsiLz9fcHJvZ3JhbT0iK2YrIi9zZXJ2aWNlcy9wdWJsaWMvZ2V0cmF3ZGF0YSIraCttK18r''@;'; put 'put ''IiZmaWx0ZXI9IitPKSx0aGlzLm9wZW5Eb3dubG9hZD0hMX1kb3dubG9hZERETCgpe2xldCBhPXRoaXMubGliLGY9dGhpcy50YWJsZSxkPXRoaXMuZG93bmxvYWRGb3JtYXQucmVwbGFjZSgiX0RETCIsIiIpLGg9dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsbT10aGlzLnNhc2pzQ29uZmln''@;'; put 'put ''LmFwcExvYztjb25zdCBfPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oaCtfKyIvP19wcm9ncmFtPSIrbSsiL3NlcnZpY2VzL3B1YmxpYy9nZXRkZGwiK2AmZHM9JHtmfSZsaWJyZWY9JHthfSZmbGF2b3VyPSR7ZH0keyJTQVNWSVlBIj09PXRoaXMuc2Fz''@;'; put 'put ''anNDb25maWcuc2VydmVyVHlwZT9gJl9jb250ZXh0bmFtZT0ke3RoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWV9YDoiIn1gKSx0aGlzLm9wZW5Eb3dubG9hZD0hMX1vbkNsaUNvbW1hbmRGb2N1cyhhKXthLnByZXZlbnREZWZhdWx0KCksYS50YXJnZXQuc2VsZWN0KCl9ZWRpdFRhYmxlKCl7''@;'; put 'put ''dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2VkaXRvci8iK3RoaXMubGliVGFiKX10YWJsZUVkaXRFeGlzdHMoKXtsZXQgYT17fTthPUpuLmVkaXRvci5saWJzQW5kVGFibGVzO2xldCBmPXRoaXMubGliVGFiLnNwbGl0KCIuIilbMV0sZD10aGlzLmxpYlRhYi5zcGxpdCgiLiIpWzBdO3Jl''@;'; put 'put ''dHVybiEhYVtkXSYmYVtkXS5pbmNsdWRlcyhmKX1nb1RvTGluZWFnZSgpe2xldCBmPWAvdmlldy9saW5lYWdlLyR7dGhpcy50YWJsZXVyaS5zcGxpdCgiXFwiKVsxXX0vUkVWRVJTRWA7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChmKX1zaG93V2ViUXVlcnkoKXtsZXQgYTt0aGlzLndlYlF1''@;'; put 'put ''ZXJ5PSEwLGE9dHlwZW9mIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkPiJ1Ij8wOnBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKTtsZXQgZj13aW5kb3cubG9jYXRpb24ucG9ydC5sZW5ndGg+MD8iOiIrd2luZG93LmxvY2F0aW9uLnBvcnQ6''@;'; put 'put ''IiI7Y29uc3QgZD10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO2xldCBtPWAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSR7Zn0vJHtkfS8/X3Byb2dyYW09JHt0aGlzLnNhc2pzQ29uZmlnLmFwcExvY30vc2VydmljZXMv''@;'; put 'put ''cHVibGljL2dldHJhd2RhdGEmdHlwZT1XRUIke3RoaXMud2ViUXVlcnlUYWI/IlRBQiI6IkNTViJ9JnRhYmxlPSR7dGhpcy50YWJsZVRpdGxlfSR7IiZmaWx0ZXI9IithfWA7dGhpcy53ZWJRdWVyeVRleHQ9bS5yZXBsYWNlKC8gL2dpbSwiJTIwIil9Y29weVRvQ2xpcCgpe2xldCBhPWRvY3Vt''@;'; put 'put ''ZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7YS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGEuc3R5bGUubGVmdD0iMCIsYS5zdHlsZS50b3A9IjAiLGEuc3R5bGUub3BhY2l0eT0iMCIsYS52YWx1ZT10aGlzLndlYlF1ZXJ5VGV4dCxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEu''@;'; put 'put ''Zm9jdXMoKSxhLnNlbGVjdCgpLGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IiksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX1nb1RvVmlld2VyKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvZGF0YSIpfXNob3dUYWJsZVNlbGVjdCgpe3RoaXMudGFibGVGbGFnPSF0''@;'; put 'put ''aGlzLnRhYmxlRmxhZ31jaGVja0V4cGFuZChhKXt9Y29sbGFwc2VMaWJyYXJ5SXRlbXMoYSxmKXthLmZvckVhY2goZD0+e2QuTElCUkFSWVJFRiE9PWYuTElCUkFSWVJFRiYmKGQuZXhwYW5kZWQ9ITEpfSl9bG9hZE1vcmVMaWJyYXJpZXMoKXt0aGlzLmxpYnJhcmllc1BhZ2luZ3x8KHRoaXMu''@;'; put 'put ''bGlicmFyaWVzUGFnaW5nPSEwLHRoaXMuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKHRoaXMubGlicmFyaWVzLCEwKSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSl9dHJlZU5vZGVDbGlja2VkKGEsZil7IkNvbGxhcHNlIj09PWEudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlTGli''@;'; put 'put ''cmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLGYpfWxpYnJhcnlFeHBhbmRlZENoYW5nZShhLGYpe2EmJnRoaXMuY29sbGFwc2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJpZXMsZil9bGlicmFyeU9uQ2xpY2soYSxmLGQpe3ZhciBoPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2lmKGYudGFi''@;'; put 'put ''bGVzP2YuZXhwYW5kZWQ9ISFkfHwhZi5leHBhbmRlZDp5aWVsZCBoLnNlbGVjdFRhYmxlKGEsITEsZiksZi5leHBhbmRlZCl7aC5jZGYuZGV0ZWN0Q2hhbmdlcygpO2xldCBtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNzZWFyY2hfJHtmLkxJQlJBUllSRUZ9YCk7aC5sb2dnZXJTZXJ2aWNl''@;'; put 'put ''LmxvZygiW2xpYlRyZWVTZWFyY2hJbnB1dF0iLG0pLG0mJm0uZm9jdXMoKSxmJiZmLmxpYmluZm8mJihoLmxpYmluZm89Zi5saWJpbmZvKSxoLmxpYiYmaC50YWJsZSYmIWQ/aC5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhIl0se3NraXBMb2NhdGlvbkNoYW5nZTohMCxxdWVyeVBhcmFt''@;'; put 'put ''c0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KS50aGVuKCgpPT57aC5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhLyIraC5saWJdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KX0pOmgubGliJiYhaC50YWJsZSYmaC5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi92aWV3L2RhdGEvIito''@;'; put 'put ''LmxpYil9aC5jb2xsYXBzZUxpYnJhcnlJdGVtcyhoLmxpYnJhcmllcyxmKX0pKCl9b25UYWJsZUNsaWNrKGEsZil7dGhpcy5saWI9Zi5MSUJSQVJZUkVGLHRoaXMudGFibGU9YSx0aGlzLnNlbGVjdExpYlRhYmxlKGEpLHRoaXMudmlld0RhdGEoMCl9c2VsZWN0VGFibGUoYSxmLGQpe3ZhciBo''@;'; put 'put ''PXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2QubG9hZGluZ1RhYmxlcz0hMCxoLnRhYmxlPSExLGgudGFibGVEaXNhYmxlPSEwLCJQbGVhc2Ugc2VsZWN0IGxpYnJhcnkiIT09YT9Kbi52aWV3ZXIudGFibGVzU2V0JiZmPyhoLmFib3J0QWN0aXZlPSExLGgudGFibGVEaXNhYmxlPSExLGgu''@;'; put 'put ''dGFibGVzPUpuLnZpZXdlci50YWJsZXMsaC5saWJpbmZvPUpuLnZpZXdlci5saWJpbmZvKTooaC5saWJpbmZvPW51bGwseWllbGQgaC5zYXNTdG9yZVNlcnZpY2Uudmlld1RhYmxlcyhhKS50aGVuKG09PntoLmFib3J0QWN0aXZlPSExLGgudGFibGVEaXNhYmxlPSExO2xldCBfPW0ubXB0YWJs''@;'; put 'put ''ZXMubWFwKGZ1bmN0aW9uKE8pe3JldHVybiBPLk1FTU5BTUV9KTtoLmxpYmluZm89bS5saWJpbmZvfHxbXSxoLnRhYmxlcz1fLGQmJihkLnRhYmxlcz1fLGQubGliaW5mbz1oLmxpYmluZm8pLEpuLnZpZXdlci5saWJyYXJpZXM9aC5saWJyYXJpZXMsSm4udmlld2VyLmxpYnJhcnk9aC5saWIs''@;'; put 'put ''Sm4udmlld2VyLnRhYmxlcz1oLnRhYmxlcyxKbi52aWV3ZXIubGliaW5mbz1oLmxpYmluZm8sSm4udmlld2VyLnRhYmxlc1NldD0hMH0pLmNhdGNoKG09PntoLmxvZ2dlclNlcnZpY2UuZXJyb3IobSksaC5hYm9ydEFjdGl2ZT0hMCxoLm5vRGF0YT0hMCxoLnRhYmxlVGl0bGU9IiIsaC50YWJs''@;'; put 'put ''ZURpc2FibGU9ITB9KSk6aC50YWJsZURpc2FibGU9ITAsSm4udmlld2VyLmxpYnJhcnk9aC5saWIsZnx8aC5jbGVhckdsb2JhbHNGaWx0ZXIoKSxkLmxvYWRpbmdUYWJsZXM9ITEsZC5leHBhbmRlZD0hZC5leHBhbmRlZH0pKCl9c2VsZWN0TGliVGFibGUoYSxmKXsiUGxlYXNlIHNlbGVjdCB0''@;'; put 'put ''YWJsZSIhPT1hPyh0aGlzLmFjdGlvbkRpc2FibGU9ITEsdGhpcy5saWJUYWI9dGhpcy5saWIrIi4iK3RoaXMudGFibGUpOnRoaXMuYWN0aW9uRGlzYWJsZT0hMCxKbi52aWV3ZXIudGFibGU9YSxmfHx0aGlzLmNsZWFyR2xvYmFsc0ZpbHRlcigpLHRoaXMubG9nZ2VyU2VydmljZS5sb2codGhp''@;'; put 'put ''cy5saWJUYWIpfWNsZWFyR2xvYmFsc0ZpbHRlcigpe0puLnZpZXdlci5maWx0ZXIubGliZHM9IiIsSm4udmlld2VyLmZpbHRlci53aGVyZUNsYXVzZT0iIixKbi52aWV3ZXIuZmlsdGVyLmdyb3VwTG9naWM9IiIsSm4udmlld2VyLmZpbHRlci5jbGF1c2VzPVtdLEpuLnZpZXdlci5maWx0ZXIu''@;'; put 'put ''Y29scz1bXSxKbi52aWV3ZXIuZmlsdGVyLnZhbHM9W119bGliVGFiQWN0aXZlKGEsZil7cmV0dXJuISF0aGlzLmxpYlRhYiYmYSsiLiIrZj09PXRoaXMubGliVGFifXRyZWVPbkZpbHRlcihhLGYpe3RoaXMuaGVscGVyU2VydmljZS50cmVlT25GaWx0ZXIoYSxmKX1saWJyYXJ5T25GaWx0ZXIo''@;'; put 'put ''KXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMubGlicmFyaWVzLHRoaXMubGlicmFyaWVzU2VhcmNoLCJMSUJSQVJZTkFNRSIpLEpuLnZpZXdlci5saWJyYXJpZXNTZWFyY2g9dGhpcy5saWJyYXJpZXNTZWFyY2h9bGlicmFyeVJlc2V0RmlsdGVyKCl7dGhpcy5oZWxw''@;'; put 'put ''ZXJTZXJ2aWNlLnJlc2V0QXJyYXlGaWx0ZXIodGhpcy5saWJyYXJpZXMpfXZpZXdEYXRhKGEpe3ZhciBmPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2xldCBkO2lmKGYubG9hZGluZ1RhYmxlVmlldz0hMCx0eXBlb2YgZi5saWJEYXRhc2V0PiJ1IilkPWYubGliKyIuIitmLnRhYmxlO2Vs''@;'; put 'put ''c2UgaWYodHlwZW9mIGYubGliPiJ1IiYmdHlwZW9mIGYudGFibGU+InUiKXtsZXQgXz1bXTtpZihfPWYubGliRGF0YXNldC5zcGxpdCgiLiIpLEpuLnZpZXdlci5zdGFydHVwU2V0P2YubGlicmFyaWVzPUpuLnZpZXdlci5saWJyYXJpZXM6eWllbGQgZi5zYXNTdG9yZVNlcnZpY2Uudmlld0xp''@;'; put 'put ''YnMoKS50aGVuKE89PntmLmxpYnJhcmllcz1PLnNhc2xpYnN9KS5jYXRjaChPPT57Zi5sb2dnZXJTZXJ2aWNlLmVycm9yKE8pfSksZi5saWI9X1swXSxKbi52aWV3ZXIuc3RhcnR1cFNldClmLnRhYmxlcz1Kbi52aWV3ZXIudGFibGVzO2Vsc2V7bGV0IE89Zi5saWJyYXJpZXMuZmluZChYPT5Y''@;'; put 'put ''LkxJQlJBUllSRUYudG9Mb3dlckNhc2UoKT09PWYubGliLnRvTG93ZXJDYXNlKCkpO3lpZWxkIGYuc2FzU3RvcmVTZXJ2aWNlLnZpZXdUYWJsZXMoZi5saWIpLnRoZW4oWD0+e2YudGFibGVzPVgubXB0YWJsZXMubWFwKGZ1bmN0aW9uKGFlKXtyZXR1cm4gYWUuTUVNTkFNRX0pLE8udGFibGVz''@;'; put 'put ''PWYudGFibGVzLEpuLnZpZXdlci5saWJyYXJpZXM9Zi5saWJyYXJpZXMsSm4udmlld2VyLnRhYmxlcz1mLnRhYmxlcyxKbi52aWV3ZXIuc3RhcnR1cFNldD0hMH0pLmNhdGNoKFg9PntmLmxvZ2dlclNlcnZpY2UuZXJyb3IoWCl9KX1mLnRhYmxlPV9bMV0sZi50YWJsZUZsYWc9ITEsZD1mLmxp''@;'; put 'put ''YkRhdGFzZXQsZi5saWJUYWI9ZH1lbHNlIEpuLnZpZXdlci5zdGFydHVwU2V0P2YubGlicmFyaWVzPUpuLnZpZXdlci5saWJyYXJpZXM6eWllbGQgZi5zYXNTdG9yZVNlcnZpY2Uudmlld0xpYnMoKS50aGVuKF89PntmLmxpYnJhcmllcz1fLnNhc2xpYnN9KS5jYXRjaChfPT57Zi5sb2dnZXJT''@;'; put 'put ''ZXJ2aWNlLmVycm9yKF8pfSksdHlwZW9mIGYudGFibGU8InUiJiYoSm4udmlld2VyLnN0YXJ0dXBTZXQ/Zi50YWJsZXM9Sm4udmlld2VyLnRhYmxlczp5aWVsZCBmLnNhc1N0b3JlU2VydmljZS52aWV3VGFibGVzKGYubGliKS50aGVuKF89PntmLnRhYmxlcz1fLm1wdGFibGVzLm1hcChmdW5j''@;'; put 'put ''dGlvbihPKXtyZXR1cm4gTy5NRU1OQU1FfSl9KS5jYXRjaChfPT57Zi5sb2dnZXJTZXJ2aWNlLmVycm9yKF8pLGYucm91dGVyLm5hdmlnYXRlKFsiL3ZpZXcvZGF0YSJdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KX0pLGYudGFibGVGbGFnPSExLGQ9Zi5saWIrIi4iK2YudGFi''@;'; put 'put ''bGUsZi50YWJsZVRpdGxlPWQsZi5saWJUYWI9ZCk7Zi5yb3V0ZXIudXJsLnNwbGl0KCIvIikubGVuZ3RoPjMmJmQmJih5aWVsZCBmLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YShkLGEpLnRoZW4oXz0+e2lmKF8ucXVlcnkubGVuZ3RoPjAmJiJ2aWV3Ij09PUpuLnJvb3RQYXJhbSYmMD09PUpu''@;'; put 'put ''LnZpZXdlci5maWx0ZXIuY2xhdXNlcy5sZW5ndGgmJihKbi52aWV3ZXIuZmlsdGVyLnF1ZXJ5PWYuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoXy5xdWVyeSksSm4udmlld2VyLmZpbHRlci5saWJkcz1mLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5saWJNZW0sZi5zYXNTdG9yZVNlcnZpY2UuaW5p''@;'; put 'put ''dGlhbGl6ZUdsb2JhbEZpbHRlckNsYXVzZSgidmlld2VyIixfLmNvbHMpKSxmLmFib3J0QWN0aXZlPSExLGYuZmlsdGVyQ29scz1fLmNvbHMsYkooZi5maWx0ZXJDb2xzLFtdLF8uJHZpZXdkYXRhKSxmLm51bWJlck9mUm93cz1fLnNhc3BhcmFtc1swXS5OT0JTLGYuaGVhZGVyUGtzPV8uc2Fz''@;'; put 'put ''cGFyYW1zWzBdLlBLX0ZJRUxEUy5zcGxpdCgiICIpLCJTQVM5Ij09PWYuc2FzanNDb25maWcuc2VydmVyVHlwZSl7bGV0IGJlPV8uc2FzcGFyYW1zWzBdLlRBQkxFVVJJO2JlJiZiZS5sZW5ndGg+MCYmKGYudGFibGV1cmk9YmUpfWYuaG90VGFibGUuZGF0YT1fLnZpZXdkYXRhLGYuJGRhdGFG''@;'; put 'put ''b3JtYXRzPV8uJHZpZXdkYXRhLGYuZHNtZXRhPV8uZHNtZXRhLGYucXVlcnlUZXh0PV8uc2FzcGFyYW1zWzBdLkZJTFRFUl9URVhUO2xldCBPPVtdLFg9W107Zm9yKGxldCBiZSBpbiBfLnZpZXdkYXRhWzBdKWJlJiZYLnB1c2goYmUpO2ZvcihsZXQgYmU9MDtiZTxYLmxlbmd0aDtiZSsrKU8u''@;'; put 'put ''cHVzaCh7ZGF0YTpYW2JlXX0pO2YuaG90VGFibGUuY29sSGVhZGVycz1YLGYuaG90VGFibGUuY29sdW1ucz1PLGYuaG90VGFibGUuY2VsbHM9ZnVuY3Rpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fSxmLnRhYmxlRmxhZz0hMTtsZXQgcGU9W107cGU9ZC5zcGxpdCgiLiIpLGYubGliPXBlWzBd''@;'; put 'put ''LGYudGFibGU9cGVbMV0sMD09PWYuaG90VGFibGUuZGF0YS5sZW5ndGg/KGYubm9EYXRhPSEwLGYudGFibGVGbGFnPSEwKTooZi5ub0RhdGE9ITEsZi50YWJsZUZsYWc9ITEpLGYubm9EYXRhUmVxRXJyPSExfSkuY2F0Y2goXz0+e2YubG9nZ2VyU2VydmljZS5lcnJvcihfKSxmLmFib3J0QWN0''@;'; put 'put ''aXZlPSEwLGYubm9EYXRhUmVxRXJyPSEwfSkpLGYucm91dGVyLnVybC5pbmNsdWRlcygiL2RhdGEiKSYmZCYmZi5yb3V0ZXIubmF2aWdhdGUoMCE9PWE/WyIvdmlldy9kYXRhLyIrZCsiLyIrYV06WyIvdmlldy9kYXRhLyIrZF0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pO2xl''@;'; put 'put ''dCBoPWYudGFibGUsbT1mLmxpYnJhcmllcy5maW5kKF89Pl8uTElCUkFSWVJFRi50b0xvd2VyQ2FzZSgpPT09Zi5saWIudG9Mb3dlckNhc2UoKSk7bT8oSm4udmlld2VyLmxpYnJhcmllcy5sZW5ndGg+MCYmKGYubGlicmFyaWVzPUpuLnZpZXdlci5saWJyYXJpZXMsZi5saWJyYXJpZXNTZWFy''@;'; put 'put ''Y2g9Sm4udmlld2VyLmxpYnJhcmllc1NlYXJjaCksZi5saWJyYXJ5T25DbGljayhmLmxpYixtLCEwKSk6Zi5saWJpbmZvPVtdLGYudGFibGU9aHx8Zi50YWJsZSxmLmxpYnJhcmllcyYmZi5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXMoZi5saWJyYXJpZXMpLGYucm91dGVyLnVybC5p''@;'; put 'put ''bmNsdWRlcygiL2RhdGEiKSYmZi5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCksZi5sb2FkaW5nVGFibGVWaWV3PSExLCFmLm5vRGF0YSYmIWYubm9EYXRhUmVxRXJyJiZkJiZmLnNldHVwSG90KCksZi5ob3RJbnN0YW5jZUNsaWNrTGlzdGVuZXJ8fHNldFRpbWVvdXQoKCk9PntsZXQgXz1k''@;'; put 'put ''b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG90SW5zdGFuY2UiKTtfJiYoXy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLE89PntzZXRUaW1lb3V0KCgpPT57bGV0IFg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmRlYnVnLXN3aXRjaC1pdGVtIil8fHZvaWQgMDtYJiZYLmNsaWNrKCl9''@;'; put 'put ''LDEwMCl9KSxmLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcj0hMCl9LDJlMyl9KSgpfW1heFdpZHRoQ2hla2VyKGEsZil7cmV0dXJuIGE+MjAwPzIwMDphfW9wZW5RYigpe3RoaXMuZmlsdGVyPSEwLHRoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnNhc1N0b3JlU2VydmljZS5zZXRRdWVy''@;'; put 'put ''eVZhcmlhYmxlcyh0aGlzLmxpYisiLiIrdGhpcy50YWJsZSx0aGlzLmZpbHRlckNvbHMpfXNlbmRDbGF1c2UoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXthLnN1Ym1pdExvYWRpbmc9ITA7bGV0IGY9W10sZD1bXTtpZih0eXBlb2YgYS5jbGF1c2VzPiJ1IilyZXR1cm4gYS5u''@;'; put 'put ''dWxsVmFyaWFibGVzPSEwLHZvaWQoYS5zdWJtaXRMb2FkaW5nPSExKTt7bGV0IGg9YS5jbGF1c2VzLnF1ZXJ5T2JqO2lmKGhbMF0uZWxlbWVudHMubGVuZ3RoPDEpcmV0dXJuInZpZXciPT09Sm4ucm9vdFBhcmFtJiYoSm4udmlld2VyLmZpbHRlci5jbGF1c2VzPVtdLEpuLnZpZXdlci5maWx0''@;'; put 'put ''ZXIucXVlcnk9W10sSm4udmlld2VyLmZpbHRlci5ncm91cExvZ2ljPSIiKSx2b2lkIGEucm91dGVyLm5hdmlnYXRlKFsiL3ZpZXcvZGF0YS8iK2EubGliZHNdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KTtmb3IobGV0IG09MDttPGgubGVuZ3RoO20rKyl7Y29uc3QgXz1oW21d''@;'; put 'put ''LmVsZW1lbnRzO2Y9Xy5maWx0ZXIoZnVuY3Rpb24oTyl7cmV0dXJuIG51bGw9PT1PLnZhcmlhYmxlfSksZi5sZW5ndGgmJmQucHVzaChfKX19aWYoZC5sZW5ndGgpcmV0dXJuIGEubnVsbFZhcmlhYmxlcz0hMCx2b2lkKGEuc3VibWl0TG9hZGluZz0hMSk7e2NvbnN0IGg9e2dyb3VwTG9naWM6''@;'; put 'put ''YS5jbGF1c2VzLmdyb3VwTG9naWMsZmlsdGVyR3JvdXBzOltdfTthLmNsYXVzZXMucXVlcnlPYmouZm9yRWFjaChfPT57Y29uc3QgTz17ZmlsdGVyQ2xhdXNlczpbXX07Xy5lbGVtZW50cy5mb3JFYWNoKFg9PntPLmZpbHRlckNsYXVzZXMucHVzaChhLmhlbHBlclNlcnZpY2UuZGVlcENsb25l''@;'; put 'put ''KFgpKX0pLE8uY2xhdXNlTG9naWM9Xy5jbGF1c2VMb2dpYyxoLmZpbHRlckdyb3Vwcy5wdXNoKGEuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoTykpfSk7Y29uc3QgbT1hLnNhc1N0b3JlU2VydmljZS5jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKGgpO3lpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLnNh''@;'; put 'put ''dmVRdWVyeShhLmxpYmRzLG0pLnRoZW4oXz0+e2EucXVlcnlUZXh0PV8ucmVzdWx0WzBdLkZJTFRFUl9URVhUO2xldCBPPV8ucmVzdWx0WzBdLkZJTFRFUl9SSzthLnJvdXRlci5uYXZpZ2F0ZShbIi92aWV3L2RhdGEvIithLmxpYmRzKyIvIitPXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJl''@;'; put 'put ''c2VydmUifSksYS52aWV3RGF0YShPKSxhLmZpbHRlcj0hMX0pLmNhdGNoKF89PnthLmxvZ2dlclNlcnZpY2UuZXJyb3IoXyl9KSxhLnN1Ym1pdExvYWRpbmc9ITF9fSkoKX1yZW1vdmVRdWVyeSgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnJlbW92ZUNsYXVzZSgpfXNldHVwSG90KCl7c2V0VGlt''@;'; put 'put ''ZW91dCgoKT0+eyF0aGlzLmxvYWRpbmdUYWJsZVZpZXcmJnRoaXMubGliRGF0YXNldCYmKHRoaXMuaG90SW5zdGFuY2U9dGhpcy5ob3RUYWJsZVJlZ2lzdGVyZXIuZ2V0SW5zdGFuY2UoImhvdEluc3RhbmNlIiksdGhpcy5ob3RJbnN0YW5jZSYmdGhpcy5ob3RJbnN0YW5jZS51cGRhdGVTZXR0''@;'; put 'put ''aW5ncyh7aGVpZ2h0OnRoaXMuaG90VGFibGUuaGVpZ2h0LG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKGEsZil7cmV0dXJuIGE+NTAwPzUwMDphfSxhZnRlckdldENvbEhlYWRlcjooYSxmKT0+e2NvbnN0IGQ9dGhpcy5ob3RJbnN0YW5jZT8uY29sVG9Qcm9wKGEpO2QmJnRoaXMuaGVhZGVyUGtz''@;'; put 'put ''LmluZGV4T2YoZCk+LTEmJmYuY2xhc3NMaXN0LmFkZCgicHJpbWFyeUtleUhlYWRlclN0eWxlIil9fSkpfSwxZTMpfWxvYWRXaXRoUGFyYW1ldGVycygpe3ZhciBhPXRoaXM7cmV0dXJuIHlpKGZ1bmN0aW9uKigpe2Euc3dpdGNoRmxhZz0hMCxhLnRhYmxlVGl0bGU9YS5yb3V0ZS5zbmFwc2hv''@;'; put 'put ''dC5wYXJhbXMubGliTWVtfHwwLGEudXJsRmlsdGVyUGs9cGFyc2VJbnQoYS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWR8fCIwIik7bGV0IGQ9YS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtO2EubGliRGF0YXNldD1kLGQuaW5jbHVkZXMoIi4iKXx8KGEubGliPWQpLHlpZWxk''@;'; put 'put ''IGEudmlld0RhdGEoYS51cmxGaWx0ZXJQayksYS5ub0RhdGE/c2V0VGltZW91dCgoKT0+e2EudGFibGVGbGFnPSEwfSwxMjAwKTpzZXRUaW1lb3V0KCgpPT57YS50YWJsZUZsYWc9ITF9LDEyMDApfSkoKX1sb2FkV2l0aG91dFBhcmFtZXRlcnMoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5j''@;'; put 'put ''dGlvbiooKXthLnN3aXRjaEZsYWc9ITEsYS5saWJyYXJpZXNMb2FkaW5nPSEwLEpuLnZpZXdlci5zdGFydHVwU2V0P3NldFRpbWVvdXQoKCk9PnthLmxpYnJhcmllcz1Kbi52aWV3ZXIubGlicmFyaWVzLGEubGlicmFyaWVzU2VhcmNoPUpuLnZpZXdlci5saWJyYXJpZXNTZWFyY2gsYS5saWI9''@;'; put 'put ''Sm4udmlld2VyLmxpYnJhcnksYS5saWJyYXJpZXNUcmVlRXhwYW5kZWQ9ITAsYS5saWJyYXJpZXNMb2FkaW5nPSExLGEuaGVscGVyU2VydmljZS5kaXNwbGF5TGlicmFyaWVzKGEubGlicmFyaWVzKX0sMTAwKTooYS5ub0RhdGFSZXFFcnI9ITEseWllbGQgYS5zYXNTdG9yZVNlcnZpY2Uudmll''@;'; put 'put ''d0xpYnMoKS50aGVuKGY9PnthLmxpYnJhcmllcz1mLnNhc2xpYnMsSm4udmlld2VyLmxpYnJhcmllcz1hLmxpYnJhcmllcyxKbi52aWV3ZXIuc3RhcnR1cFNldD0hMCxhLmxpYnJhcmllc0xvYWRpbmc9ITEsYS5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXMoYS5saWJyYXJpZXMpfSku''@;'; put 'put ''Y2F0Y2goZj0+e2EubG9nZ2VyU2VydmljZS5lcnJvcihmKSxhLmxpYnJhcmllc0xvYWRpbmc9ITEsYS5ub0RhdGFSZXFFcnI9ITB9KSl9KSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe31uZ0FmdGVyQ29udGVudEluaXQoKXt2YXIgYT10aGlzO3JldHVybiB5aShmdW5jdGlvbiooKXthLmhvdFRhYmxl''@;'; put 'put ''LmRhdGEubGVuZ3RoPjAmJihhLnRhYmxlRmxhZz0hMCksYS5fcXVlcnk9YS5zYXNTdG9yZVNlcnZpY2UucXVlcnkuc3Vic2NyaWJlKGY9PnthLndoZXJlU3RyaW5nPWYuc3RyaW5nLGEuY2xhdXNlcz1mLm9iaixhLmxpYmRzPWYubGliZHN9KSx0eXBlb2YgYS5yb3V0ZS5zbmFwc2hvdC5wYXJh''@;'; put 'put ''bXMubGliTWVtPCJ1Ij9hLmxvYWRXaXRoUGFyYW1ldGVycygpOmEubG9hZFdpdGhvdXRQYXJhbWV0ZXJzKCl9KSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShydChiMSkscnQoTGQpLHJ0KHBsKSxydChMYSkscnQodHUpLHJ0KFJzKSxydCh5MSks''@;'; put 'put ''cnQoUHUpLHJ0KGdkKSxydChVbCkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtdmlld2VyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGYpe2lmKDEmYSYmTm8oQ0h0LDUpLDImYSl7bGV0IGQ7dWkoZD1jaSgpKSYmKGYucXVlcnlGaWx0ZXJDb21wTGlzdD1kKX19''@;'; put 'put ''LGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo5NSx2YXJzOjI5LGNvbnN0czpbWzMsInNjcm9sbGVkVG9Cb3R0b20iXSxbImNsYXNzIiwibXktMTAtbXgtYXV0byB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0''@;'; put 'put ''LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwidy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsIm1vZGFsIHotaW5kZXgtaGlnaGVzdCIsNCwibmdJZiJdLFsiY2xhc3MiLCJtb2RhbC1iYWNrZHJvcCIsImFyaWEtaGlkZGVuIiwidHJ1''@;'; put 'put ''ZSIsNCwibmdJZiJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiY2xyLWNvbC1tZC02Il0s''@;'; put 'put ''WzEsImRvd25sb2FkLXNlbGVjdCJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsIiwibmdNb2RlbENoYW5nZSJdLFsidmFsdWUiLCJDU1YiXSxbInZhbHVlIiwiU0FTIl0sWyJ2YWx1ZSIsIlBHU1FMX0RETCJdLFsidmFsdWUiLCJTQVNfRERMIl0sWyJ2YWx1ZSIsIlRTUUxfRERMIl0sWyJ2''@;'; put 'put ''YWx1ZSIsIkVYQ0VMIl0sWyJ2YWx1ZSIsIk1BUktET1dOIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRs''@;'; put 'put ''aW5lIiwzLCJpZCIsImNsaWNrIl0sWzEsIm1vZGFsLWJvZHkiLCJ3ZWItcXVlcnkiXSxbMSwicm93Il0sWzEsImNsci1jb2wtbGctMTIiLCJjbHItY29sLW1kLTEyIiwiY2xyLWNvbC1zbS0xMiIsImNsci1jb2wteHMtMTIiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxleCIs''@;'; put 'put ''Imp1c3RpZnktY29udGVudC1iZXR3ZWVuIl0sWzEsImJ0bi1ncm91cCJdLFsxLCJyYWRpbyIsImJ0biIsMywiY2xpY2siXSxbInR5cGUiLCJyYWRpbyIsIm5hbWUiLCJidG4tZ3JvdXAtZGVtby1yYWRpb3MiLDMsImNoZWNrZWQiXSxbMSwiY2FyZC1ibG9jayIsIndvcmQtYnJlYWstYWxsIl0s''@;'; put 'put ''WyJyb3dzIiwiNCIsImNvbHMiLCI1MCIsInR5cGUiLCJ0ZXh0IiwicmVhZG9ubHkiLCIiLDEsIndlYi1xdWVyeS10ZXh0Iiwidy0xMDAiLDMsInZhbHVlIiwiZm9jdXMiXSxbImNsaUNvbW1hbmRJbnB1dCIsIiJdLFsxLCJjYXJkLWZvb3RlciJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tbGlu''@;'; put 'put ''ayIsMywibmd4Q2xpcGJvYXJkIiwiY2xpY2siXSxbImFyaWEtbW9kYWwiLCJ0cnVlIiwxLCJmaWx0ZXItbW9kYWwiLDMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRv''@;'; put 'put ''biIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsImJ0bi1zbSIsMywiY2xpY2siXSxbInR5cGUiLCJzdWJtaXQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsckxv''@;'; put 'put ''YWRpbmciLCJjbGljayJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbE9wZW5DaGFuZ2UiXSxbMSwibW9kYWwtdGl0bGUiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLDMs''@;'; put 'put ''ImNsaWNrIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNhcmQgaC0xMDAgZC1mbGV4IGNsci1mbGV4LWNvbHVtbiIsNCwibmdJZiJdLFszLCJvcGVuIiwiZHNtZXRhIiwib3BlbkNoYW5nZSJdLFszLCJ2aWV3Ym94TW9kYWwiLCJ2aWV3Ym94TW9kYWxD''@;'; put 'put ''aGFuZ2UiXSxbMSwibXktMTAtbXgtYXV0byIsInRleHQtY2VudGVyIl0sWyJjbHJNZWRpdW0iLCIiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkxpYnJhcmllcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9j''@;'; put 'put ''b21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbCIsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCJdLFsic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJz''@;'; put 'put ''aGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2Ui''@;'; put 'put ''XSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJpZCIsIm5nTW9kZWwiLCJuZ01vZGVsQ2hh''@;'; put 'put ''bmdlIiwia2V5dXAiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFs0LCJuZ1ZhciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJjbGFzcyIsImNsci10cmVlbm9kZS1saW5rIiwzLCJkYy1sb2NrZWQtY29udHJvbCIsInRhYmxlLWFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbHJQb3Np''@;'; put 'put ''dGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsMSwiY2xyLXRyZWVub2RlLWxpbmsiLDMsImNsaWNrIl0sWzMsIm5nU3dpdGNoIl0sWyJzaGFwZSIsImJvbHQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic2hhcGUi''@;'; put 'put ''LCJ0YWJsZSIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzaGFwZSIsImJvbHQiXSxbInNoYXBlIiwidGFibGUiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IiwiY2xyU2l6ZSIsImxnIl0sWzEsInctMTAwIiwidGV4dC1jZW50ZXIiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItc20iXSxbMSwi''@;'; put 'put ''bW9kYWwiLCJ6LWluZGV4LWhpZ2hlc3QiXSxbInJvbGUiLCJkaWFsb2ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyJdLFsxLCJtb2RhbC1jb250ZW50Il0sWzEsIm1vZGFsLWhlYWRlciJdLFsiYXJpYS1sYWJlbCIsIkNsb3NlIiwidHlwZSIsImJ1dHRvbiIsMSwiY2xv''@;'; put 'put ''c2UiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiY2xvc2UiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1iYWNrZHJvcCJdLFsicXVlcnlGaWx0ZXIiLCIiXSxb''@;'; put 'put ''MSwibG9hZGluZ1NwaW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJjYXJkIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbImNsYXNzIiwiaGVhZGVyLXJvdyBjbHItcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAw''@;'; put 'put ''IG0tMCIsNCwibmdJZiJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJjYXJkLWJsb2NrIG5vRGF0YSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItZmxleC0xIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm10LTItaSB3LTEwMCB0ZXh0LWNlbnRlciIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJ3LTEwMCIsIm0tMCJdLFsxLCJmb3JtLWJsb2NrIiwidGFibGUtc2VhcmNoLXdyYXBwZXIiLCJzdyIsImNsci1jb2wtbWQiXSxbImNs''@;'; put 'put ''ckZvcm0iLCIiLDEsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJpbnB1dC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIiwibmFtZSIsInNlYXJjaC1pbnB1dCIsMywidHlwZSIsImtleXVwLmVudGVyIl0sWyJzZWFyY2hFbCIsIiJdLFsi''@;'; put 'put ''c2hhcGUiLCJzZWFyY2giLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1pbmxpbmUiLDQsIm5nSWYiXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwibmFtZSIsIm51bWVyaWNfY2hlY2siLDMsIm5nTW9kZWwiLCJuZ01vZGVsQ2hhbmdl''@;'; put 'put ''Il0sWzEsInRpdGxlLWNvbCIsImNsci1jb2wtYXV0byIsImNsci1mbGV4LWNvbHVtbiIsImNsci1mbGV4LXNtLXJvdyJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSIsInNpemUiLCIyNCIsMSwiaXMtaGlnaGxpZ2h0IiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJvbHQi''@;'; put 'put ''LCJjbGFzcyIsImNvbG9yLXllbGxvdyBtdC01IG1yLTUiLDQsIm5nSWYiXSxbImNsYXNzIiwidmlld2VyVGl0bGUgY2xyLWZsZXgtY29sdW1uIGQtZmxleCBjbHItZmxleC1zbS1yb3cgY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsxLCJvcHRpb25zLWNvbCIsImNsci1jb2wt''@;'; put 'put ''bWQiXSxbImNsYXNzIiwib3B0aW9ucy1kcm9wZG93biIsMywiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0xMiBpbmZvQmFyIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCIsMywiY2xpY2siXSxbMSwic3Bpbm5lciIsInNwaW5uZXIt''@;'; put 'put ''aW5saW5lIl0sWyJzaGFwZSIsImJvbHQiLDEsImNvbG9yLXllbGxvdyIsIm10LTUiLCJtci01Il0sWzEsInZpZXdlclRpdGxlIiwiY2xyLWZsZXgtY29sdW1uIiwiZC1mbGV4IiwiY2xyLWZsZXgtc20tcm93IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsic2hhcGUiLCJyZWZyZXNoIiwx''@;'; put 'put ''LCJyZWZyZXNoLXRhYmxlIiwzLCJjbGljayJdLFsxLCJvcHRpb25zLWRyb3Bkb3duIiwzLCJjbHJDbG9zZU1lbnVPbkl0ZW1DbGljayJdLFsidHlwZSIsImJ1dHRvbiIsImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJmaWx0ZXJTaWRlIl0s''@;'; put 'put ''WyJzaGFwZSIsImNvZyIsInNpemUiLCIxNSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiLDQsImNscklmT3BlbiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiXSxbInR5cGUiLCJidXR0b24iLCJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1z''@;'; put 'put ''dWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIl0sWyJzaGFwZSIsInZpZXctY2FyZHMiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsImNsckRyb3Bkb3duSXRlbSIsIiIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24i''@;'; put 'put ''LCJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwiYnRuLWJsb2NrIiwzLCJjbGljayJdLFsic2hhcGUiLCJmaWx0ZXIiXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbInNoYXBlIiwiZG93bmxvYWQtY2xvdWQiXSxbInNoYXBlIiwicGVuY2lsIl0sWyJz''@;'; put 'put ''aGFwZSIsInN3aXRjaCJdLFsxLCJjbHItY29sLW1kLTEyIiwiaW5mb0JhciJdLFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3Jh''@;'; put 'put ''eSJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImJvcmRlci1ib3R0b20tZGl2aWRlciIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwidy0xMDAiLCJtLTAiXSxbMSwidGl0bGUtY29sIiwiY2xyLWNvbC1hdXRvIl0sWzEsInZpZXdlclRpdGxlIiwibXQtMTciXSxbMSwidGV4dC1jZW50''@;'; put 'put ''ZXIiLCJtdC0xMCJdLFsiY2xyTWVkaXVtIiwiIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkLWluZm8gcG9pbnRlci1ldmVudHMtbm9uZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsaWJpbmZvIG0tMCBjbHItcm93Iiw0LCJuZ0lmIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVk''@;'; put 'put ''LWluZm8iLCJwb2ludGVyLWV2ZW50cy1ub25lIl0sWyJzaGFwZSIsImluZm8tc3RhbmRhcmQiLCJzaXplIiwiNDAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwibGliaW5mbyIsIm0tMCIsImNsci1yb3ciXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgbS0wIHctMTAwIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzEsInRleHQtY2VudGVyIiwibS0wIiwidy0xMDAiXSxbInNoYXBlIiwicmVmcmVzaCIsMSwicmVmcmVzaC10YWJsZSIsIm0tMCIsMywiY2xpY2siXSxbMSwibS0wIl0sWzEsIm0tMCIsImZvbnQtYm9sZCJdLFsxLCJjYXJkLWJsb2NrIiwibm9EYXRhIl0sWyJzaGFwZSIsIndhcm5pbmct''@;'; put 'put ''c3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSIsNCwibmdJZiJdLFsxLCJjbHItZmxleC0xIl0sWyJob3RJZCIsImhvdEluc3RhbmNlIiwiaWQiLCJob3RUYWJsZSIsInN0cmV0Y2hIIiwiYWxsIiwzLCJtdWx0aUNvbHVt''@;'; put 'put ''blNvcnRpbmciLCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsImNvcHlQYXN0ZSIsImNvbnRleHRNZW51IiwiZmlsdGVycyIsImRyb3Bkb3duTWVudSIsImhlaWdodCIsIm1vZGlmeUNvbFdpZHRoIiwiY2VsbHMiLCJtYXhSb3dzIiwi''@;'; put 'put ''bWFudWFsQ29sdW1uUmVzaXplIiwibGljZW5zZUtleSJdLFsxLCJtdC0yLWkiLCJ3LTEwMCIsInRleHQtY2VudGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZil7aWYoMSZhJiYoeWUoMCwiYXBwLXNpZGViYXIiLDApLEV0KCJzY3JvbGxlZFRvQm90dG9tIixmdW5jdGlvbigpe3JldHVybiBm''@;'; put 'put ''LmxvYWRNb3JlTGlicmFyaWVzKCl9KSx0dCgxLFNIdCwyLDAsImRpdiIsMSkseWUoMiwiY2xyLXRyZWUiKSx0dCgzLEVIdCw2LDMsImNsci10cmVlLW5vZGUiLDIpLHR0KDQsTkh0LDIsMSwibmctY29udGFpbmVyIiwzKSxDZSgpLHR0KDUsVkh0LDMsMCwiZGl2Iiw0KSxDZSgpLHllKDYsImRp''@;'; put 'put ''diIsNSksdHQoNyxCSHQsMTQsMCwiZGl2Iiw2KSx0dCg4LGpIdCwxLDAsImRpdiIsNykseWUoOSwiY2xyLW1vZGFsIiw4KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5vcGVuRG93bmxvYWQ9aH0pLHllKDEwLCJoMyIsOSksWWUoMTEsIkRvd25sb2FkIiks''@;'; put 'put ''Q2UoKSx5ZSgxMiwiZGl2IiwxMCkoMTMsImRpdiIsMTEpKDE0LCJjbHItc2VsZWN0LWNvbnRhaW5lciIsMTIpKDE1LCJsYWJlbCIpLFllKDE2LCJQbGVhc2UgY2hvb3NlIGRvd25sb2FkIGZvcm1hdCIpLENlKCkseWUoMTcsInNlbGVjdCIsMTMpLEV0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlv''@;'; put 'put ''bihoKXtyZXR1cm4gZi5kb3dubG9hZEZvcm1hdD1ofSkseWUoMTgsIm9wdGlvbiIsMTQpLFllKDE5LCJDU1YiKSxDZSgpLHllKDIwLCJvcHRpb24iLDE1KSxZZSgyMSwiRGF0YWxpbmVzIChjYXJkcyBmaWxlKSIpLENlKCkseWUoMjIsIm9wdGlvbiIsMTYpLFllKDIzLCJEREwgKFBHU1FMIEZs''@;'; put 'put ''YXZvdXIpIiksQ2UoKSx5ZSgyNCwib3B0aW9uIiwxNyksWWUoMjUsIkRETCAoU0FTIEZsYXZvdXIpIiksQ2UoKSx5ZSgyNiwib3B0aW9uIiwxOCksWWUoMjcsIkRETCAoVFNRTCBGbGF2b3VyKSIpLENlKCkseWUoMjgsIm9wdGlvbiIsMTkpLFllKDI5LCJFeGNlbCAoLnhsc3gpIiksQ2UoKSx5''@;'; put 'put ''ZSgzMCwib3B0aW9uIiwyMCksWWUoMzEsIk1hcmtkb3duICgubWQpIiksQ2UoKSgpKCkoKSgpLHllKDMyLCJkaXYiLDIxKSgzMywiYnV0dG9uIiwyMiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLm9wZW5Eb3dubG9hZD0hMX0pLFllKDM0LCIgQ2FuY2VsICIpLENlKCkseWUoMzUs''@;'; put 'put ''ImJ1dHRvbiIsMjMpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5kb3dubG9hZEZvcm1hdC5pbmNsdWRlcygiRERMIik/Zi5kb3dubG9hZERETCgpOmYuZG93bmxvYWREYXRhKCl9KSxZZSgzNiwiIE9rICIpLENlKCkoKSgpLHllKDM3LCJjbHItbW9kYWwiLDgpLEV0KCJjbHJNb2Rh''@;'; put 'put ''bE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLndlYlF1ZXJ5PWh9KSx5ZSgzOCwiaDMiLDkpLFllKDM5LCIgV2ViIFF1ZXJ5IFVSTCAiKSxDZSgpLHllKDQwLCJkaXYiLDI0KSg0MSwiZGl2IiwyNSkoNDIsImRpdiIsMjYpKDQzLCJkaXYiLDI3KSg0NCwiZGl2IiwyOCkoNDUsInNw''@;'; put 'put ''YW4iKSxZZSg0NiwiQ29weSB0aGUgYmVsb3cgaW50byB5b3VyIHByZWZlcnJlZCBjbGllbnQgdG9vbDoiKSxDZSgpLHllKDQ3LCJkaXYiLDI5KSg0OCwiZGl2IiwzMCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLndlYlF1ZXJ5VGFiPSEwLGYuc2hvd1dlYlF1ZXJ5KCl9KSx0big0''@;'; put 'put ''OSwiaW5wdXQiLDMxKSx5ZSg1MCwibGFiZWwiKSxZZSg1MSwiVEFCIiksQ2UoKSgpLHllKDUyLCJkaXYiLDMwKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYud2ViUXVlcnlUYWI9ITEsZi5zaG93V2ViUXVlcnkoKX0pLHRuKDUzLCJpbnB1dCIsMzEpLHllKDU0LCJsYWJlbCIpLFll''@;'; put 'put ''KDU1LCJDU1YiKSxDZSgpKCkoKSgpLHllKDU2LCJkaXYiLDMyKSg1NywidGV4dGFyZWEiLDMzLDM0KSxFdCgiZm9jdXMiLGZ1bmN0aW9uKGgpe3JldHVybiBmLm9uQ2xpQ29tbWFuZEZvY3VzKGgpfSksWWUoNTksIiAgICAgICAgICAgICAgIiksQ2UoKSgpLHllKDYwLCJkaXYiLDM1KSg2MSwi''@;'; put 'put ''YnV0dG9uIiwzNiksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmNvcHlUb0NsaXAoKX0pLFllKDYyLCIgY29weSB0byBjbGlwYm9hcmQgIiksQ2UoKSgpKCkoKSgpKCkseWUoNjMsImRpdiIsMjEpKDY0LCJidXR0b24iLDIyKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYu''@;'; put 'put ''d2ViUXVlcnk9ITF9KSxZZSg2NSwiIGNsb3NlICIpLENlKCkoKSgpLHllKDY2LCJjbHItbW9kYWwiLDM3KSxFdCgiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gZi5maWx0ZXI9aH0pLHllKDY3LCJoMyIsOSksWWUoNjgsIiBGaWx0ZXIgZm9yIHRhYmxlOiIpLHllKDY5''@;'; put 'put ''LCJzcGFuIiksWWUoNzApLENlKCkoKSx5ZSg3MSwiZGl2IiwxMCksdHQoNzIsekh0LDIsMCwiYXBwLXF1ZXJ5IiwzOCksQ2UoKSx5ZSg3MywiZGl2IiwyMSkoNzQsImJ1dHRvbiIsMzkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5yZXNldEZpbHRlcigpfSksWWUoNzUsIiByZXNl''@;'; put 'put ''dCBmaWx0ZXIgIiksQ2UoKSx5ZSg3NiwiYnV0dG9uIiw0MCksRXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBmLmZpbHRlcj0hMSxmLnJlbW92ZVF1ZXJ5KCl9KSxZZSg3NywiIENhbmNlbCAiKSxDZSgpLHllKDc4LCJidXR0b24iLDQxKSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGYuc2VuZENsYXVzZSgpfSksWWUoNzksIiBPayAiKSxDZSgpKCkoKSx5ZSg4MCwiY2xyLW1vZGFsIiw0MiksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYucXVlcnlFcnI9aH0pLHllKDgxLCJoMyIsNDMpLFllKDgyLCJFcnJvciIpLENlKCkseWUoODMsImRp''@;'; put 'put ''diIsMTApKDg0LCJwIiksWWUoODUpLENlKCkoKSx5ZSg4NiwiZGl2IiwyMSkoODcsImJ1dHRvbiIsNDQpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZi5xdWVyeUVycj0hMX0pLFllKDg4LCIgQ2FuY2VsICIpLENlKCkseWUoODksImJ1dHRvbiIsNDUpLEV0KCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gZi5xdWVyeUVycj0hMX0pLFllKDkwLCIgT2sgIiksQ2UoKSgpKCksdHQoOTEsVUh0LDYsMCwiZGl2Iiw0NiksdHQoOTIsU050LDgsNiwiZGl2Iiw0NyksQ2UoKSx5ZSg5MywiYXBwLWRhdGFzZXQtaW5mbyIsNDgpLEV0KCJvcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gZi5kYXRhc2V0SW5mbz1ofSksQ2UoKSx5ZSg5NCwiYXBwLXZpZXdib3hlcyIsNDkpLEV0KCJ2aWV3Ym94TW9kYWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBmLnZpZXdib3hPcGVuPWh9KSxDZSgpKSwyJmEpe2NvbnN0IGQ9UWkoNTgpO1NlKDEpLFJlKCJuZ0lmIixmLmxpYnJhcmll''@;'; put 'put ''c0xvYWRpbmcpLFNlKDIpLFJlKCJuZ0lmIixmLmxpYnJhcmllcyksU2UoMSksUmUoIm5nRm9yT2YiLGYubGlicmFyaWVzKSxTZSgxKSxSZSgibmdJZiIsZi5saWJyYXJpZXNQYWdpbmcpLFNlKDIpLFJlKCJuZ0lmIixmLm51bGxWYXJpYWJsZXMpLFNlKDEpLFJlKCJuZ0lmIixmLm51bGxWYXJp''@;'; put 'put ''YWJsZXMpLFNlKDEpLFJlKCJjbHJNb2RhbE9wZW4iLGYub3BlbkRvd25sb2FkKSgiY2xyTW9kYWxTaXplIiwibWQiKSxTZSg4KSxSZSgibmdNb2RlbCIsZi5kb3dubG9hZEZvcm1hdCksU2UoMTgpLFJlKCJpZCIsZi50YWJsZVRpdGxlKSxTZSgyKSxSZSgiY2xyTW9kYWxPcGVuIixmLndlYlF1''@;'; put 'put ''ZXJ5KSgiY2xyTW9kYWxTaXplIiwibGciKSxTZSgxMiksUmUoImNoZWNrZWQiLGYud2ViUXVlcnlUYWIpLFNlKDQpLFJlKCJjaGVja2VkIiwhZi53ZWJRdWVyeVRhYiksU2UoNCksUnUoInZhbHVlIixmLndlYlF1ZXJ5VGV4dCksU2UoNCksUmUoIm5neENsaXBib2FyZCIsZCksU2UoNSksUmUo''@;'; put 'put ''ImNsck1vZGFsT3BlbiIsZi5maWx0ZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksU2UoNCksd3IoIiAiLGYubGliVGFiLCIgIiksU2UoMiksUmUoIm5nSWYiLGYuZmlsdGVyKSxTZSg2KSxSZSgiY2xyTG9hZGluZyIsZi5zdWJtaXRMb2FkaW5nKSxTZSgy''@;'; put 'put ''KSxSZSgiY2xyTW9kYWxPcGVuIixmLnF1ZXJ5RXJyKSxTZSg1KSxhcihmLnF1ZXJ5RXJyTWVzc2FnZSksU2UoNiksUmUoIm5nSWYiLGYubG9hZGluZ1RhYmxlVmlldyksU2UoMSksUmUoIm5nSWYiLCFmLmxvYWRpbmdUYWJsZVZpZXcpLFNlKDEpLFJlKCJvcGVuIixmLmRhdGFzZXRJbmZvKSgi''@;'; put 'put ''ZHNtZXRhIixmLmRzbWV0YSksU2UoMSksUmUoInZpZXdib3hNb2RhbCIsZi52aWV3Ym94T3Blbil9fSxkZXBlbmRlbmNpZXM6W0E2ZSxSYSwkaSxrZixDaCx5SHQscDQsUzEsTTEsaXMsUjAsTDAsV2EsaDQsemEsQ2QsRGQsTGYsaTUsUmwsTWMsa2MsSmMseGQsSWgsZWwsdnNlLEIwLGw3LFYw''@;'; put 'put ''LFJmLG03LHA3LGEzLG81LGE1LHg3LE1TLEVTLGtTLFJoLGhMLGs0LFQ2ZSxiSSxISixSNyxENmUsd0h0XSxzdHlsZXM6WyIuY2FyZFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowO2ZsZXg6MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufWNsci10cmVlLW5vZGVb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9LnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1bX25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0uaGVhZGVyLXJvd1tfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICAudGl0bGUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vcHRpb25zLWNvbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpmbGV4LWVuZH0uc3dbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoxcmVtIDByZW0gLjVyZW0gMXJlbX0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxMHB4O2JhY2tncm91bmQ6IzQ5NTk2Nztjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3BhZGRp''@;'; put 'put ''bmc6M3B4O2ZvbnQtc2l6ZToxNnB4fS5maWx0ZXJTaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjI2cHg7bWFyZ2luLWJvdHRvbToxOXB4fS5vcHRpb25zLWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWljb257bWFyZ2luLXJpZ2h0OjVweH0udmlld2VyVGl0''@;'; put 'put ''bGVbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MTVweH0uZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTgwcHg7bWFyZ2luLXRvcDotMThweDtwYWRkaW5nOjB9LmRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgLmJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTt0ZXh0LXRyYW5zZm9ybTpub25lfS5jYXJkRmxleFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm5vRGF0YVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1''@;'; put 'put ''c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4OjF9LmZpbHRlckJ0bltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZWRpdEJ0bltfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5idG5WaWV3W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCFpbXBvcnRhbnR9LmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNXJlbSFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGly''@;'; put 'put ''ZWN0aW9uOmNvbHVtbn0uZG93bmxvYWQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1zZWxlY3Qtd3JhcHBlcnttYXgtaGVpZ2h0OnVuc2V0IWltcG9ydGFudH0ucmVmcmVzaC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWxlZnQ6NXB4''@;'; put 'put ''fS5saWJpbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMjBweDtvdmVyZmxvdzphdXRvfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5wcmltYXJ5S2V5SGVhZGVyU3R5bGV7YmFja2dyb3VuZDpyZ2JhKDQ4LDEwNywwLC40MzEzNzI1NDkpfS5uby10YWJsZS1z''@;'; put 'put ''ZWxlY3RlZC1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOm5vbmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LndlYi1xdWVyeVtfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDozNXZofS53ZWItcXVlcnlbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLndlYi1xdWVyeS10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjEwMHB4O21heC1oZWlnaHQ6MTAwcHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5maWx0ZXJCdG5bX25nY29udGVudC0lQ09NUCVdLCAuZWRpdEJ0bltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9fUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LnJvd1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjByZW07bWFyZ2luLWxlZnQ6MHJlbX19Il19KSxsfSkoKTtjb25zdCBNTnQ9W3twYXRo''@;'; put 'put ''OiIiLGNvbXBvbmVudDpzRnQsY2hpbGRyZW46W3twYXRoOiIiLHBhdGhNYXRjaDoiZnVsbCIscmVkaXJlY3RUbzoiZGF0YSJ9LHtwYXRoOiJkYXRhIixjb21wb25lbnQ6QUZ9LHtwYXRoOiJkYXRhIixjb21wb25lbnQ6QUZ9LHtwYXRoOiJkYXRhLzpsaWJNZW0vOmZpbHRlcklkIixjb21wb25l''@;'; put 'put ''bnQ6QUZ9LHtwYXRoOiJkYXRhLzpsaWJNZW0iLGNvbXBvbmVudDpBRn0se3BhdGg6ImxpbmVhZ2UiLGNvbXBvbmVudDp4Rn0se3BhdGg6ImxpbmVhZ2UvOnRhYmxlaWQvOmRpcmVjdGlvbiIsY29tcG9uZW50OnhGfSx7cGF0aDoibGluZWFnZS9jb2x1bW4vOmNvbHVyaS86ZGlyZWN0aW9uIixj''@;'; put 'put ''b21wb25lbnQ6eEZ9LHtwYXRoOiJsaW5lYWdlL2NvbHVtbi86Y29sdXJpLzpkaXJlY3Rpb24vOnJlbG9hZCIsY29tcG9uZW50OnhGfSx7cGF0aDoidml5YS1hcGktZXhwbG9yZXIiLGNvbXBvbmVudDptSHR9LHtwYXRoOiJtZXRhZGF0YSIsY29tcG9uZW50OkVRfSx7cGF0aDoibWV0YWRhdGEv''@;'; put 'put ''b2JqZWN0LzpvYmplY3RJRCIsY29tcG9uZW50OkVRfSx7cGF0aDoibWV0YWRhdGEvb2JqZWN0LzpvYmplY3RJRC86b2JqZWN0TmFtZSIsY29tcG9uZW50OkVRfSx7cGF0aDoidXNlcm5hdiIsY29tcG9uZW50OmxGdCxjaGlsZHJlbjpbe3BhdGg6IiIscGF0aE1hdGNoOiJmdWxsIixyZWRpcmVj''@;'; put 'put ''dFRvOiJncm91cHMifSx7cGF0aDoidXNlcnMiLGNvbXBvbmVudDpvdmV9LHtwYXRoOiJ1c2Vycy86dXJpIixjb21wb25lbnQ6b3ZlfSx7cGF0aDoiZ3JvdXBzIixjb21wb25lbnQ6SDZlfSx7cGF0aDoiZ3JvdXBzLzp1cmkiLGNvbXBvbmVudDpINmV9LHtwYXRoOiJyb2xlcyIsY29tcG9uZW50''@;'; put 'put ''Oml2ZX0se3BhdGg6InJvbGVzLzp1cmkiLGNvbXBvbmVudDppdmV9XX1dfV07bGV0IGtOdD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRz''@;'; put 'put ''OltvNC5mb3JDaGlsZChNTnQpLG80XX0pLGx9KSgpLEVOdD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9RGkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXhpKHtpbXBvcnRzOltGNmUsYm8sa050LGJIdCxk''@;'; put 'put ''YyxJZCxwTC5mb3JSb290KCksQkUsVlAsVkUsQkosJDNdfSksbH0pKCk7ZnVuY3Rpb24geE50KGwsYyl7aWYoMSZsJiYoeWUoMCwicCIsNiksWWUoMSwiIFZpZXdlciByb3dzIGxpbWl0OiAiKSx5ZSgyLCJzcGFuIiw3KSxZZSgzKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDMpLGFy''@;'; put 'put ''KGEubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWQpfX1mdW5jdGlvbiBBTnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCIgRWRpdG9yIHJvd3MgbGltaXQ6ICIpLHllKDIsInNwYW4iLDcpLFllKDMpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2UoMyks''@;'; put 'put ''YXIoYS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCl9fWZ1bmN0aW9uIFROdChsLGMpe2lmKDEmbCYmKHllKDAsInAiLDYpLFllKDEsIiBTdGFnZSByb3dzIGxpbWl0OiAiKSx5ZSgyLCJzcGFuIiw3KSxZZSgzKSxDZSgpKCkpLDImbCl7Y29uc3QgYT1HZSgpO1NlKDMp''@;'; put 'put ''LGFyKGEubGljZW5jZVN0YXRlLnZhbHVlLnN0YWdlX3Jvd3NfYWxsb3dlZCl9fWZ1bmN0aW9uIE9OdChsLGMpe2lmKDEmbCYmKHllKDAsInAiLDYpLFllKDEsIiBIaXN0b3J5IHJvd3MgbGltaXQ6ICIpLHllKDIsInNwYW4iLDcpLFllKDMpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7U2Uo''@;'; put 'put ''MyksYXIoYS5saWNlbmNlU3RhdGUudmFsdWUuaGlzdG9yeV9yb3dzX2FsbG93ZWQpfX1mdW5jdGlvbiBETnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCIgU3VibWl0IHJvd3MgbGltaXQ6ICIpLHllKDIsInNwYW4iLDcpLFllKDMpLENlKCkoKSksMiZsKXtjb25zdCBhPUdlKCk7''@;'; put 'put ''U2UoMyksYXIoYS5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQpfX1mdW5jdGlvbiBJTnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCIgVGFibGVzIGluIGxpYnJhcnkgbGltaXQ6ICIpLHllKDIsInNwYW4iLDcpLFllKDMpLENlKCkoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PUdlKCk7U2UoMyksYXIoYS5saWNlbmNlU3RhdGUudmFsdWUudGFibGVzX2luX2xpYnJhcnlfbGltaXQpfX1mdW5jdGlvbiBSTnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCIgVmlld2JveGVzIGxpbWl0OiAiKSx5ZSgyLCJzcGFuIiw3KSxZZSgzKSxDZSgpKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1HZSgpO1NlKDMpLGFyKGEubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQpfX1mdW5jdGlvbiBMTnQobCxjKXtpZigxJmwmJih5ZSgwLCJwIiw2KSxZZSgxLCIgTGluZWFnZSBkYWlseSBsaW1pdDogIikseWUoMiwic3BhbiIsNyksWWUoMyksQ2UoKSgpKSwyJmwpe2NvbnN0''@;'; put 'put ''IGE9R2UoKTtTZSgzKSxhcihhLmxpY2VuY2VTdGF0ZS52YWx1ZS5saW5lYWdlX2RhaWx5X2xpbWl0KX19ZnVuY3Rpb24gUE50KGwsYyl7aWYoMSZsKXtjb25zdCBhPVpuKCk7eWUoMCwiZGl2IiwxNyksWWUoMSwiIFJlZnJlc2ggRGF0YSBMaW5lYWdlICIpLHllKDIsImJ1dHRvbiIsMTgpLEV0''@;'; put 'put ''KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoMikucmVmcmVzaERhdGFMaW5lYWdlKCkpfSksWWUoMywiIFJFRlJFU0ggIiksQ2UoKSgpfWlmKDImbCl7Y29uc3QgYT1HZSgyKTtTZSgyKSxSZSgiY2xyTG9hZGluZyIsYS5yZWZyZXNoaW5nRGF0YUxpbmVhZ2UpfX1mdW5j''@;'; put 'put ''dGlvbiBGTnQobCxjKXtpZigxJmwpe2NvbnN0IGE9Wm4oKTtXcigwKSx0dCgxLFBOdCw0LDEsImRpdiIsMTYpLHllKDIsImRpdiIsMTcpLFllKDMsIiBSZWZyZXNoIERhdGEgQ2F0YWxvZyAiKSx5ZSg0LCJidXR0b24iLDE4KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFV0KGEpLFp0''@;'; put 'put ''KEdlKCkucmVmcmVzaERhdGFDYXRhbG9nKCkpfSksWWUoNSwiIFJFRlJFU0ggIiksQ2UoKSgpLHllKDYsImRpdiIsMTcpLFllKDcsIiBEb3dubG9hZCBDb25maWd1cmF0aW9uICIpLHllKDgsImJ1dHRvbiIsMTkpLEV0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gVXQoYSksWnQoR2UoKS5k''@;'; put 'put ''b3dubG9hZENvbmZpZ3VyYXRpb24oKSl9KSxZZSg5LCIgRE9XTkxPQUQgIiksQ2UoKSgpLHllKDEwLCJkaXYiLDE3KSxZZSgxMSwiIFVwZGF0ZSBMaWNlbmNlIEtleSAiKSx5ZSgxMiwiYnV0dG9uIiwyMCksWWUoMTMsIiBVUERBVEUgIiksQ2UoKSgpLEdyKCl9aWYoMiZsKXtjb25zdCBhPUdl''@;'; put 'put ''KCk7U2UoMSksUmUoIm5nSWYiLCJTQVM5Ij09PWEuc2VydmVyVHlwZSksU2UoMyksUmUoImNsckxvYWRpbmciLGEucmVmcmVzaGluZ0RhdGFDYXRhbG9nKX19Y29uc3QgSE50PVt7cGF0aDoiIixyZWRpcmVjdFRvOiJob21lIixwYXRoTWF0Y2g6ImZ1bGwifSx7cGF0aDoidmlldyIsbG9hZENo''@;'; put 'put ''aWxkcmVuOigpPT5FTnR9LHtwYXRoOiJhcHByb3ZlIixjb21wb25lbnQ6YlllLGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86InRvYXBwcm92ZSJ9LHtwYXRoOiJ0b2FwcHJvdmUiLGNvbXBvbmVudDpnY2V9LHtwYXRoOiJhcHByb3ZlRGV0Lzp0YWJsZUlk''@;'; put 'put ''Iixjb21wb25lbnQ6YmNlfSx7cGF0aDoic3VibWl0dGVkIixjb21wb25lbnQ6R1p9XX0se3BhdGg6ImxpY2Vuc2luZy86YWN0aW9uIixjb21wb25lbnQ6aldlLGNhbkFjdGl2YXRlOltlWV0sY2FuRGVhY3RpdmF0ZTpbZVldfSx7cGF0aDoiaG9tZSIsY29tcG9uZW50OmZVZX0se3BhdGg6ImVk''@;'; put 'put ''aXRvciIsbG9hZENoaWxkcmVuOigpPT51VHR9LHtwYXRoOiJzdGFnZSIsbG9hZENoaWxkcmVuOigpPT55c3R9LHtwYXRoOiJzeXN0ZW0iLGNvbXBvbmVudDooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZixkKXt0aGlzLmFwcFNlcnZpY2U9YSx0aGlzLnNhc1NlcnZpY2U9Zix0aGlzLmxp''@;'; put 'put ''Y2VuY2VTZXJ2aWNlPWQsdGhpcy5hcHBJbmZvPXthZGFwdGVyVmVyc2lvbjoiNC4zLjYiLGFwcFZlcnNpb246InY2LjEuMCIucmVwbGFjZSgidiIsIiIpLGJ1aWxkVGltZXN0YW1wOlhuZSgpKHBhcnNlSW50KCIxNjkwMjk4MTE3NTQ5IikpLmZvcm1hdCgiREQtTU1NLVlZWVkgSEg6TU0iKX0s''@;'; put 'put ''dGhpcy5odHRwPSJodHRwOiI9PT1sb2NhdGlvbi5wcm90b2NvbCx0aGlzLnJlZnJlc2hpbmdEYXRhQ2F0YWxvZz0hMSx0aGlzLnJlZnJlc2hpbmdEYXRhTGluZWFnZT0hMSx0aGlzLnJlc3BvbnNlPSJObyByZXNwb25zZSIsdGhpcy5yZXNwb25zZU1vZGFsPSExLHRoaXMuSW5maW5pdHk9MS8w''@;'; put 'put ''LHRoaXMubGljZW5jZVN0YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuc2VydmVyVHlwZT10aGlzLnNhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpLHRoaXMubGljZW5jZUluZm89dGhpcy5saWNlbmNlU2VydmljZS5nZXRMaWNlbnNlS2V5RGF0YSgpLHRoaXMuZW52''@;'; put 'put ''aXJvbm1lbnRJbmZvPXRoaXMuYXBwU2VydmljZS5nZXRFbnZpcm9ubWVudEluZm8oKSx0aGlzLmVudmlyb25tZW50SW5mbyYmKHRoaXMuZW52aXJvbm1lbnRJbmZvLkFVVE9FWEVDPWRlY29kZVVSSUNvbXBvbmVudCh0aGlzLmVudmlyb25tZW50SW5mby5BVVRPRVhFQykpfW5nT25Jbml0KCl7''@;'; put 'put ''fWRvd25sb2FkQ29uZmlndXJhdGlvbigpe2xldCBhPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGY9YS5zZXJ2ZXJVcmwsZD1hLmFwcExvYyxoPXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oZitoKyIvP19wcm9ncmFtPSIrZCsiL3NlcnZp''@;'; put 'put ''Y2VzL2FkbWluL2V4cG9ydGNvbmZpZyIpfXJlZnJlc2hEYXRhQ2F0YWxvZygpe3RoaXMucmVmcmVzaGluZ0RhdGFDYXRhbG9nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJhZG1pbi9yZWZyZXNoY2F0YWxvZyIsbnVsbCkudGhlbihhPT57dGhpcy5yZXNwb25zZT10aGlzLnBhcnNlUmVz''@;'; put 'put ''cG9uc2UoYSksdGhpcy5yZXNwb25zZU1vZGFsPSEwfSkuY2F0Y2goYT0+e3RoaXMucmVzcG9uc2U9dGhpcy5wYXJzZVJlc3BvbnNlKGEpLHRoaXMucmVzcG9uc2VNb2RhbD0hMH0pLmZpbmFsbHkoKCk9Pnt0aGlzLnJlZnJlc2hpbmdEYXRhQ2F0YWxvZz0hMX0pfXJlZnJlc2hEYXRhTGluZWFn''@;'; put 'put ''ZSgpe3RoaXMucmVmcmVzaGluZ0RhdGFMaW5lYWdlPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJhZG1pbi9yZWZyZXNodGFibGVsaW5lYWdlIixudWxsKS50aGVuKGE9Pnt0aGlzLnJlc3BvbnNlPXRoaXMucGFyc2VSZXNwb25zZShhKSx0aGlzLnJlc3BvbnNlTW9kYWw9ITB9KS5jYXRj''@;'; put 'put ''aChhPT57dGhpcy5yZXNwb25zZT10aGlzLnBhcnNlUmVzcG9uc2UoYSksdGhpcy5yZXNwb25zZU1vZGFsPSEwfSkuZmluYWxseSgoKT0+e3RoaXMucmVmcmVzaGluZ0RhdGFMaW5lYWdlPSExfSl9cGFyc2VSZXNwb25zZShhKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/SlNPTi5zdHJpbmdp''@;'; put 'put ''ZnkoYSk6YX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkocnQod0QpLHJ0KHBsKSxydChiMSkpfSxsLlx1MDI3NWNtcD1rcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtc3lzdGVtIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxk''@;'; put 'put ''ZWNsczoxMzAsdmFyczozNCxjb25zdHM6W1sxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCIsInAtMTAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJtLTAi''@;'; put 'put ''XSxbMSwidy0xMDAiLCJsaWdodCJdLFsxLCJjb250ZW50LWJveCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsxLCJzeXMtaW5mbyIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtbGctcm93Il0sWzEsIm0tMCJd''@;'; put 'put ''LFsxLCJkYXJrIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIl0sWyJjbGFzcyIsIm0tMCIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbiIsImNsck1vZGFsT3BlbkNoYW5nZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5''@;'; put 'put ''Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbGFzcyIsImFkbWluLWFjdGlvbiIsNCwibmdJZiJdLFsxLCJhZG1pbi1hY3Rpb24iXSxbMSwiYnRuIiwiYnRuLWluZm8iLCJidG4tc20iLDMs''@;'; put 'put ''ImNsckxvYWRpbmciLCJjbGljayJdLFsxLCJidG4iLCJidG4taW5mbyIsImJ0bi1zbSIsMywiY2xpY2siXSxbInJvdXRlckxpbmsiLCIvbGljZW5zaW5nL3VwZGF0ZSIsMSwiYnRuIiwiYnRuLWluZm8iLCJidG4tc20iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxmKXsxJmEmJih5ZSgwLCJkaXYi''@;'; put 'put ''LDApKDEsImRpdiIsMSkoMiwiaDQiLDIpLFllKDMsIlN5c3RlbSBpbmZvcm1hdGlvbiIpLENlKCksdG4oNCwiaHIiLDMpLHllKDUsImRpdiIsNCkoNiwiZGl2Iiw1KSg3LCJkaXYiKSg4LCJoNiIsNiksWWUoOSwiRW52aXJvbm1lbnQgRGV0YWlscyAiKSx0bigxMCwic3BhbiIsNyksQ2UoKSx5''@;'; put 'put ''ZSgxMSwicCIsNiksWWUoMTIsIiBTWVNTSVRFOiAiKSx5ZSgxMywic3BhbiIsNyksWWUoMTQpLENlKCkoKSx5ZSgxNSwicCIsNiksWWUoMTYsIiBTWVNTQ1BMOiAiKSx5ZSgxNywic3BhbiIsNyksWWUoMTgpLENlKCkoKSx5ZSgxOSwicCIsNiksWWUoMjAsIiBTWVNUQ1BJUEhPU1ROQU1FOiAi''@;'; put 'put ''KSx5ZSgyMSwic3BhbiIsNyksWWUoMjIpLENlKCkoKSx5ZSgyMywicCIsNiksWWUoMjQsIiBTWVNWTE9ORzogIikseWUoMjUsInNwYW4iLDcpLFllKDI2KSxDZSgpKCkseWUoMjcsInAiLDYpLFllKDI4LCIgTUVNU0laRTogIikseWUoMjksInNwYW4iLDcpLFllKDMwKSxDZSgpKCkseWUoMzEs''@;'; put 'put ''InAiLDYpLFllKDMyLCIgU1lTUFJPQ0VTU01PREU6ICIpLHllKDMzLCJzcGFuIiw3KSxZZSgzNCksQ2UoKSgpLHllKDM1LCJwIiw2KSxZZSgzNiwiIFNZU0hPU1ROQU1FOiAiKSx5ZSgzNywic3BhbiIsNyksWWUoMzgpLENlKCkoKSx5ZSgzOSwicCIsNiksWWUoNDAsIiBTWVNIT1NUSU5GT0xP''@;'; put 'put ''Tkc6ICIpLHllKDQxLCJzcGFuIiw3KSxZZSg0MiksQ2UoKSgpLHllKDQzLCJwIiw2KSxZZSg0NCwiIFNZU0VOQ09ESU5HOiAiKSx5ZSg0NSwic3BhbiIsNyksWWUoNDYpLENlKCkoKSx5ZSg0NywicCIsNiksWWUoNDgsIiBBVVRPRVhFQzogIikseWUoNDksInNwYW4iLDcpLFllKDUwKSxDZSgp''@;'; put 'put ''KCkseWUoNTEsInAiLDYpLFllKDUyLCIgREMgQURNSU4gR1JPVVA6ICIpLHllKDUzLCJzcGFuIiw3KSxZZSg1NCksQ2UoKSgpKCkseWUoNTUsImRpdiIsOCkoNTYsImRpdiIpKDU3LCJoNiIsNiksWWUoNTgsIiBEYXRhIENvbnRyb2xsZXIgRGV0YWlscyAiKSx0big1OSwic3BhbiIsNyksQ2Uo''@;'; put 'put ''KSx5ZSg2MCwicCIsNiksWWUoNjEsIiBBcHBsaWNhdGlvbiB2ZXJzaW9uOiAiKSx5ZSg2Miwic3BhbiIsNyksWWUoNjMpLENlKCkoKSx5ZSg2NCwicCIsNiksWWUoNjUsIiBCdWlsZCB0aW1lc3RhbXA6ICIpLHllKDY2LCJzcGFuIiw3KSxZZSg2NyksQ2UoKSgpLHllKDY4LCJwIiw2KSxZZSg2''@;'; put 'put ''OSwiIEFkYXB0ZXIgdmVyc2lvbjogIikseWUoNzAsInNwYW4iLDcpLFllKDcxKSxDZSgpKCkseWUoNzIsInAiLDYpLFllKDczLCIgSFRUUDogIikseWUoNzQsInNwYW4iLDcpLFllKDc1KSxDZSgpKCkoKSgpLHllKDc2LCJkaXYiKSg3NywiaDYiLDYpLFllKDc4LCJMaWNlbmNlIGRldGFpbHMg''@;'; put 'put ''IiksdG4oNzksInNwYW4iLDcpLENlKCkseWUoODAsInAiLDYpLFllKDgxLCIgVmFsaWQgdW50aWw6ICIpLHllKDgyLCJzcGFuIiw3KSxZZSg4MyksQ2UoKSgpLHllKDg0LCJwIiw2KSxZZSg4NSwiIFVzZXJzIGFsbG93ZWQ6ICIpLHllKDg2LCJzcGFuIiw3KSxZZSg4NyksQ2UoKSgpLHllKDg4''@;'; put 'put ''LCJwIiw2KSxZZSg4OSwiIFNpdGUgSURzOiAiKSx5ZSg5MCwic3BhbiIsNyksWWUoOTEpLENlKCkoKSx5ZSg5MiwicCIsNiksWWUoOTMsIiBGcmVlIFRpZXI6ICIpLHllKDk0LCJzcGFuIiw3KSxZZSg5NSksQ2UoKSgpLHR0KDk2LHhOdCw0LDEsInAiLDkpLHR0KDk3LEFOdCw0LDEsInAiLDkp''@;'; put 'put ''LHR0KDk4LFROdCw0LDEsInAiLDkpLHR0KDk5LE9OdCw0LDEsInAiLDkpLHR0KDEwMCxETnQsNCwxLCJwIiw5KSx0dCgxMDEsSU50LDQsMSwicCIsOSksdHQoMTAyLFJOdCw0LDEsInAiLDkpLHR0KDEwMyxMTnQsNCwxLCJwIiw5KSx5ZSgxMDQsInAiLDYpLFllKDEwNSwiIFZpZXdib3hlczog''@;'; put 'put ''IikseWUoMTA2LCJzcGFuIiw3KSxZZSgxMDcpLENlKCkoKSx5ZSgxMDgsInAiLDYpLFllKDEwOSwiIEZpbGUgVXBsb2FkOiAiKSx5ZSgxMTAsInNwYW4iLDcpLFllKDExMSksQ2UoKSgpLHllKDExMiwicCIsNiksWWUoMTEzLCIgRWRpdCByZWNvcmQ6ICIpLHllKDExNCwic3BhbiIsNyksWWUo''@;'; put 'put ''MTE1KSxDZSgpKCkseWUoMTE2LCJwIiw2KSxZZSgxMTcsIiBBZGQgcmVjb3JkOiAiKSx5ZSgxMTgsInNwYW4iLDcpLFllKDExOSksQ2UoKSgpKCkoKSx0bigxMjAsImhyIiwzKSx0dCgxMjEsRk50LDE0LDIsIm5nLWNvbnRhaW5lciIsMTApLENlKCkoKSgpLHllKDEyMiwiY2xyLW1vZGFsIiwx''@;'; put 'put ''MSksRXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIGYucmVzcG9uc2VNb2RhbD1ofSkseWUoMTIzLCJoMyIsMTIpLFllKDEyNCwiUmVzcG9uc2UiKSxDZSgpLHllKDEyNSwiZGl2IiwxMyksWWUoMTI2KSxDZSgpLHllKDEyNywiZGl2IiwxNCkoMTI4LCJidXR0b24i''@;'; put 'put ''LDE1KSxFdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGYucmVzcG9uc2VNb2RhbD0hMX0pLFllKDEyOSwiIE9rICIpLENlKCkoKSgpKSwyJmEmJihTZSgxNCksYXIobnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5mby5TWVNTSVRFKSxTZSg0KSxhcihudWxs''@;'; put 'put ''PT1mLmVudmlyb25tZW50SW5mbz9udWxsOmYuZW52aXJvbm1lbnRJbmZvLlNZU1NDUEwpLFNlKDQpLGFyKG51bGw9PWYuZW52aXJvbm1lbnRJbmZvP251bGw6Zi5lbnZpcm9ubWVudEluZm8uU1lTVENQSVBIT1NUTkFNRSksU2UoNCksYXIobnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpm''@;'; put 'put ''LmVudmlyb25tZW50SW5mby5TWVNWTE9ORyksU2UoNCksYXIobnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5mby5NRU1TSVpFKSxTZSg0KSxhcihudWxsPT1mLmVudmlyb25tZW50SW5mbz9udWxsOmYuZW52aXJvbm1lbnRJbmZvLlNZU1BST0NFU1NNT0RFKSxT''@;'; put 'put ''ZSg0KSxhcihudWxsPT1mLmVudmlyb25tZW50SW5mbz9udWxsOmYuZW52aXJvbm1lbnRJbmZvLlNZU0hPU1ROQU1FKSxTZSg0KSxhcihudWxsPT1mLmVudmlyb25tZW50SW5mbz9udWxsOmYuZW52aXJvbm1lbnRJbmZvLlNZU0hPU1RJTkZPTE9ORyksU2UoNCksYXIobnVsbD09Zi5lbnZpcm9u''@;'; put 'put ''bWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5mby5TWVNFTkNPRElORyksU2UoNCksYXIobnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5mby5BVVRPRVhFQyksU2UoNCksYXIobnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5m''@;'; put 'put ''by5EQ19BRE1JTl9HUk9VUCksU2UoOSksYXIoZi5hcHBJbmZvLmFwcFZlcnNpb24pLFNlKDQpLGFyKGYuYXBwSW5mby5idWlsZFRpbWVzdGFtcCksU2UoNCksYXIoZi5hcHBJbmZvLmFkYXB0ZXJWZXJzaW9uKSxTZSg0KSxhcihmLmh0dHA/IllFUyI6Ik5PIiksU2UoOCksYXIobnVsbD09Zi5s''@;'; put 'put ''aWNlbmNlSW5mbz9udWxsOmYubGljZW5jZUluZm8udmFsaWRfdW50aWwpLFNlKDQpLGFyKG51bGw9PWYubGljZW5jZUluZm8/bnVsbDpmLmxpY2VuY2VJbmZvLnVzZXJzX2FsbG93ZWQpLFNlKDQpLGFyKG51bGw9PWYubGljZW5jZUluZm8/bnVsbDpmLmxpY2VuY2VJbmZvLnNpdGVfaWRfbXVs''@;'; put 'put ''dGlwbGUpLFNlKDQpLGFyKG51bGwhPWYubGljZW5jZUluZm8mJmYubGljZW5jZUluZm8uZGVtbz8iWUVTIjoiTk8iKSxTZSgxKSxSZSgibmdJZiIsZi5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZCE9PWYuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixmLmxpY2VuY2VT''@;'; put 'put ''dGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkIT09Zi5JbmZpbml0eSksU2UoMSksUmUoIm5nSWYiLGYubGljZW5jZVN0YXRlLnZhbHVlLnN0YWdlX3Jvd3NfYWxsb3dlZCE9PWYuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixmLmxpY2VuY2VTdGF0ZS52YWx1ZS5oaXN0b3J5X3Jvd3Nf''@;'; put 'put ''YWxsb3dlZCE9PWYuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixmLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCE9PWYuSW5maW5pdHkpLFNlKDEpLFJlKCJuZ0lmIixmLmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFyeV9saW1pdCE9PWYuSW5maW5pdHkp''@;'; put 'put ''LFNlKDEpLFJlKCJuZ0lmIixmLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0IT09Zi5JbmZpbml0eSksU2UoMSksUmUoIm5nSWYiLGYubGljZW5jZVN0YXRlLnZhbHVlLmxpbmVhZ2VfZGFpbHlfbGltaXQhPT1mLkluZmluaXR5KSxTZSg0KSxhcihmLmxpY2VuY2VTdGF0ZS52YWx1''@;'; put 'put ''ZS52aWV3Ym94PyJZRVMiOiJOTyIpLFNlKDQpLGFyKGYubGljZW5jZVN0YXRlLnZhbHVlLmZpbGVVcGxvYWQ/IllFUyI6Ik5PIiksU2UoNCksYXIoZi5saWNlbmNlU3RhdGUudmFsdWUuZWRpdFJlY29yZD8iWUVTIjoiTk8iKSxTZSg0KSxhcihmLmxpY2VuY2VTdGF0ZS52YWx1ZS5hZGRSZWNv''@;'; put 'put ''cmQ/IllFUyI6Ik5PIiksU2UoMiksUmUoIm5nSWYiLDE9PT0obnVsbD09Zi5lbnZpcm9ubWVudEluZm8/bnVsbDpmLmVudmlyb25tZW50SW5mby5JU0FETUlOKSksU2UoMSksUmUoImNsck1vZGFsT3BlbiIsZi5yZXNwb25zZU1vZGFsKSxTZSg0KSx3cigiICIsZi5yZXNwb25zZSwiICIpKX0s''@;'; put 'put ''ZGVwZW5kZW5jaWVzOlskaSxJMCxNYyxrYyxKYyxJaF0sc3R5bGVzOlsiLmNvbnRlbnQtYm94W19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6MTI4OXB4fS5zeXMtaW5mb1tfbmdjb250ZW50LSVDT01QJV0gPiBkaXZbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MX0uc3lzLWluZm9bX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVdICAgZGl2W19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQoMil7bWFyZ2luOjAgMzBweH0uYWRtaW4tYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO3Bh''@;'; put 'put ''ZGRpbmc6NXB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjFweCBzb2xpZCAjZGVkZWRlO21hcmdpbi1ib3R0b206NXB4fS5hZG1pbi1hY3Rpb25bX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6MTAycHh9LmRhcmtbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde2NvbG9yOiMwMDB9QG1lZGlhIChtYXgtd2lkdGg6IDk5M3B4KXsuc3lzLWluZm9bX25nY29udGVudC0lQ09NUCVdICAgZGl2W19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQoMil7bWFyZ2luOjB9LnN5cy1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGRpdltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17bWFyZ2luOjIwcHggMH19Il19KSxsfSkoKX0se3BhdGg6ImFjdGlvbnMvOmxpYmRzLzpkc2lkIixjb21wb25lbnQ6elplfSx7cGF0aDoiaGlzdG9yeSIsY29tcG9uZW50OmlZZX0se3BhdGg6InN1Ym1pdHRlZCIsY29tcG9uZW50OkdafSx7cGF0aDoic3VibWl0dGVk''@;'; put 'put ''Lzp0YWJsZUlkIixjb21wb25lbnQ6R1p9LHtwYXRoOiJkZXBsb3kiLGNvbXBvbmVudDp3Y2V9LHtwYXRoOiJkZXBsb3kvbWFudWFsZGVwbG95Iixjb21wb25lbnQ6d2NlfSx7cGF0aDoiKioiLGNvbXBvbmVudDpvWWV9XSxOTnQ9bzQuZm9yUm9vdChITnQse3VzZUhhc2g6ITB9KTtsZXQgVk50''@;'; put 'put ''PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1EaSh7dHlwZTpsLGJvb3RzdHJhcDpbSUJlXX0pLGwuXHUwMjc1aW5qPXhpKHtwcm92aWRlcnM6W3dELExkLGdjZSxlWV0saW1wb3J0czpbeHplLFduZSxk''@;'; put 'put ''YyxoT2UsYkNlLE5OdCxWUCxJZCxCRSxQNmUsVkUsJDMsR0Z0XX0pLGx9KSgpO21iZSgpLmJvb3RzdHJhcE1vZHVsZShWTnQpfSw1NjMyMTooV2UsemUsVCk9Pnt2YXIgc2U9VCgxNzE1NikuZGVmYXVsdDtzZWxmLFdlLmV4cG9ydHM9KCgpPT57dmFyIGs9ezI2NTY6ZnVuY3Rpb24oSCxCLEwp''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oUil7cmV0dXJuIFImJlIuX19lc01vZHVsZT9SOntkZWZhdWx0OlJ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5kZWNvZGVUb2tlbj1CLmhh''@;'; put 'put ''c1Rva2VuRXhwaXJlZD1CLmlzUmVmcmVzaFRva2VuRXhwaXJpbmc9Qi5pc0FjY2Vzc1Rva2VuRXhwaXJpbmc9dm9pZCAwO3ZhciBKPUsoTCg2MjQ1KSk7ZnVuY3Rpb24gSShSLEUpe3JldHVybigwLEouZGVmYXVsdCkoUikuZXhwLShuZXcgRGF0ZSkudmFsdWVPZigpLzFlMzw9RX1CLmlzQWNj''@;'; put 'put ''ZXNzVG9rZW5FeHBpcmluZz1mdW5jdGlvbihSLEUpe3JldHVybiB2b2lkIDA9PT1FJiYoRT0zNjAwKSwhUnx8SShSLEUpfSxCLmlzUmVmcmVzaFRva2VuRXhwaXJpbmc9ZnVuY3Rpb24oUixFKXtyZXR1cm4gdm9pZCAwPT09RSYmKEU9MzApLCFSfHxJKFIsRSl9LEIuaGFzVG9rZW5FeHBpcmVk''@;'; put 'put ''PWZ1bmN0aW9uKFIpe3JldHVybiFSfHxJKFIsMCl9LEIuZGVjb2RlVG9rZW49ZnVuY3Rpb24oUil7dmFyIEU7dHJ5e0U9KDAsSi5kZWZhdWx0KShSKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdG9rZW4gc3VwcGxpZWQuIil9cmV0dXJuIEV9fSw2Nzk5OmZ1bmN0aW9uKEgsQixM''@;'; put 'put ''KXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEksUixFLHope3ZvaWQgMD09PXomJih6PUUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLHose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJb''@;'; put 'put ''RV19fSl9OmZ1bmN0aW9uKEksUixFLHope3ZvaWQgMD09PXomJih6PUUpLElbel09UltFXX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEksUil7Zm9yKHZhciBFIGluIEkpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFIs''@;'; put 'put ''RSl8fEsoUixJLEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksSihMKDI2NTYpLEIpfSwzMjU5OmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEw9T2JqZWN0LmFz''@;'; put 'put ''c2lnbnx8ZnVuY3Rpb24oSyl7Zm9yKHZhciBKLEk9MSxSPWFyZ3VtZW50cy5sZW5ndGg7STxSO0krKylmb3IodmFyIEUgaW4gSj1hcmd1bWVudHNbSV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEosRSkmJihLW0VdPUpbRV0pO3JldHVybiBLfSxMLmFwcGx5KHRoaXMs''@;'; put 'put ''YXJndW1lbnRzKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIucHJlZml4TWVzc2FnZT12b2lkIDAsQi5wcmVmaXhNZXNzYWdlPWZ1bmN0aW9uKEssSil7aWYoIm9iamVjdCI9PXR5cGVvZiBLKWlmKEsuaGFzT3duUHJvcGVydHkoIm1lc3NhZ2Ui''@;'; put 'put ''KSlLLm1lc3NhZ2U9SitLLm1lc3NhZ2U7ZWxzZXtpZighSy5oYXNPd25Qcm9wZXJ0eSgiYm9keSIpKXJldHVybiBMKEwoe30sSykse21lc3NhZ2U6Sn0pO2lmKCJvYmplY3QiPT10eXBlb2YgSy5ib2R5JiYoSy5tZXNzYWdlPUsuYm9keS5tZXNzYWdlP0orSy5ib2R5Lm1lc3NhZ2U6SiksInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiBLLmJvZHkpe3ZhciBJPXZvaWQgMDt0cnl7ST1KU09OLnBhcnNlKEsuYm9keSl9Y2F0Y2h7cmV0dXJuIEsubWVzc2FnZT1KLEt9cmV0dXJuIEkubWVzc2FnZT1JLm1lc3NhZ2U/SitJLm1lc3NhZ2U6SixLLmJvZHk9SSxLfX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIEsm''@;'; put 'put ''JihLPUorSyksS319LDk3Nzg6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEkseix7ZW51bWVy''@;'; put 'put ''YWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUltFXX19KX06ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSksSVt6XT1SW0VdfSksSj10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oSSxSKXtmb3IodmFyIEUgaW4gSSkiZGVmYXVsdCI9PT1FfHxPYmplY3Qu''@;'; put 'put ''cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUixFKXx8SyhSLEksRSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxKKEwoMzI1OSksQiksSihMKDEwNjQpLEIpfSwxMDY0OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEssSj10''@;'; put 'put ''aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEs9ZnVuY3Rpb24oaixWKXtyZXR1cm4oSz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRyxXKXtHLl9fcHJvdG9fXz1XfXx8ZnVuY3Rpb24oRyxXKXtmb3IodmFyIFUgaW4gVylPYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxVKSYmKEdbVV09V1tVXSl9KShqLFYpfSxmdW5jdGlvbihqLFYpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBWJiZudWxsIT09Vil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFYpKyIgaXMg''@;'; put 'put ''bm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEcoKXt0aGlzLmNvbnN0cnVjdG9yPWp9SyhqLFYpLGoucHJvdG90eXBlPW51bGw9PT1WP09iamVjdC5jcmVhdGUoVik6KEcucHJvdG90eXBlPVYucHJvdG90eXBlLG5ldyBHKX0pLEk9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0''@;'; put 'put ''aW9uKGosVil7dmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmaltTeW1ib2wuaXRlcmF0b3JdO2lmKCFHKXJldHVybiBqO3ZhciBXLFUscT1HLmNhbGwoaiksdGU9W107dHJ5e2Zvcig7KHZvaWQgMD09PVZ8fFYtLSA+MCkmJiEoVz1xLm5leHQoKSkuZG9uZTspdGUucHVzaChXLnZh''@;'; put 'put ''bHVlKX1jYXRjaChuZSl7VT17ZXJyb3I6bmV9fWZpbmFsbHl7dHJ5e1cmJiFXLmRvbmUmJihHPXEucmV0dXJuKSYmRy5jYWxsKHEpfWZpbmFsbHl7aWYoVSl0aHJvdyBVLmVycm9yfX1yZXR1cm4gdGV9LFI9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihqLFYsRyl7aWYoR3x8''@;'; put 'put ''Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBXLFU9MCxxPVYubGVuZ3RoO1U8cTtVKyspIVcmJlUgaW4gVnx8KFd8fChXPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFYsMCxVKSksV1tVXT1WW1VdKTtyZXR1cm4gai5jb25jYXQoV3x8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo''@;'; put 'put ''VikpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5TZXJ2ZXJUeXBlRXJyb3I9dm9pZCAwO3ZhciBFPUwoMzkwMCksej1mdW5jdGlvbihqKXtmdW5jdGlvbiBWKEcpe3ZvaWQgMD09PUcmJihHPVtdKTt2YXIgVz10aGlzLFU9KEc9UihbXSxJKG5l''@;'; put 'put ''dyBTZXQoRykpLCExKSkubGVuZ3RoP0cuam9pbigiLCAiKS50cmltKCk6W0UuU2VydmVyVHlwZS5TYXNWaXlhLEUuU2VydmVyVHlwZS5TYXM5LEUuU2VydmVyVHlwZS5TYXNqc10uam9pbigiLCAiKS50cmltKCk7cmV0dXJuIFU9VS5yZXBsYWNlKC8sXHMoW14sXSopJC8sIiBhbmQgJDEiKSwo''@;'; put 'put ''Vz1qLmNhbGwodGhpcywiSW52YWxpZCBzZXJ2ZXIgdHlwZTogdmFsaWQgb3B0aW9uIi5jb25jYXQoMSE9PUcubGVuZ3RoPyJzIjoiIiwiICIpLmNvbmNhdCgxIT09Ry5sZW5ndGg/ImFyZSI6ImlzIiwiICIpLmNvbmNhdChVKSl8fHRoaXMpLm5hbWU9IlNlcnZlclR5cGVFcnJvciIsT2JqZWN0''@;'; put 'put ''LnNldFByb3RvdHlwZU9mKFcsVi5wcm90b3R5cGUpLFd9cmV0dXJuIEooVixqKSxWfShFcnJvcik7Qi5TZXJ2ZXJUeXBlRXJyb3I9en0sMzkwNjpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihHLFcsVSxxKXtyZXR1cm4g''@;'; put 'put ''bmV3KFV8fChVPVByb21pc2UpKShmdW5jdGlvbih0ZSxuZSl7ZnVuY3Rpb24gaWUodWUpe3RyeXtkZShxLm5leHQodWUpKX1jYXRjaChjZSl7bmUoY2UpfX1mdW5jdGlvbiBsZSh1ZSl7dHJ5e2RlKHEudGhyb3codWUpKX1jYXRjaChjZSl7bmUoY2UpfX1mdW5jdGlvbiBkZSh1ZSl7dmFyIGNl''@;'; put 'put ''O3VlLmRvbmU/dGUodWUudmFsdWUpOihjZT11ZS52YWx1ZSxjZSBpbnN0YW5jZW9mIFU/Y2U6bmV3IFUoZnVuY3Rpb24oWSl7WShjZSl9KSkudGhlbihpZSxsZSl9ZGUoKHE9cS5hcHBseShHLFd8fFtdKSkubmV4dCgpKX0pfSxKPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEcs''@;'; put 'put ''Vyl7dmFyIFUscSx0ZSxuZSxpZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ0ZVswXSl0aHJvdyB0ZVsxXTtyZXR1cm4gdGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbmU9e25leHQ6bGUoMCksdGhyb3c6bGUoMSkscmV0dXJuOmxlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiYobmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbmU7ZnVuY3Rpb24gbGUoZGUpe3JldHVybiBmdW5jdGlvbih1ZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtpZihVKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1''@;'; put 'put ''dGluZy4iKTtmb3IoO2llOyl0cnl7aWYoVT0xLHEmJih0ZT0yJmNlWzBdP3EucmV0dXJuOmNlWzBdP3EudGhyb3d8fCgodGU9cS5yZXR1cm4pJiZ0ZS5jYWxsKHEpLDApOnEubmV4dCkmJiEodGU9dGUuY2FsbChxLGNlWzFdKSkuZG9uZSlyZXR1cm4gdGU7c3dpdGNoKHE9MCx0ZSYmKGNlPVsy''@;'; put 'put ''JmNlWzBdLHRlLnZhbHVlXSksY2VbMF0pe2Nhc2UgMDpjYXNlIDE6dGU9Y2U7YnJlYWs7Y2FzZSA0OnJldHVybiBpZS5sYWJlbCsrLHt2YWx1ZTpjZVsxXSxkb25lOiExfTtjYXNlIDU6aWUubGFiZWwrKyxxPWNlWzFdLGNlPVswXTtjb250aW51ZTtjYXNlIDc6Y2U9aWUub3BzLnBvcCgpLGll''@;'; put 'put ''LnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh0ZT0odGU9aWUudHJ5cykubGVuZ3RoPjAmJnRlW3RlLmxlbmd0aC0xXSl8fDYhPT1jZVswXSYmMiE9PWNlWzBdKSl7aWU9MDtjb250aW51ZX1pZigzPT09Y2VbMF0mJighdGV8fGNlWzFdPnRlWzBdJiZjZVsxXTx0ZVszXSkpe2ll''@;'; put 'put ''LmxhYmVsPWNlWzFdO2JyZWFrfWlmKDY9PT1jZVswXSYmaWUubGFiZWw8dGVbMV0pe2llLmxhYmVsPXRlWzFdLHRlPWNlO2JyZWFrfWlmKHRlJiZpZS5sYWJlbDx0ZVsyXSl7aWUubGFiZWw9dGVbMl0saWUub3BzLnB1c2goY2UpO2JyZWFrfXRlWzJdJiZpZS5vcHMucG9wKCksaWUudHJ5cy5w''@;'; put 'put ''b3AoKTtjb250aW51ZX1jZT1XLmNhbGwoRyxpZSl9Y2F0Y2goWSl7Y2U9WzYsWV0scT0wfWZpbmFsbHl7VT10ZT0wfWlmKDUmY2VbMF0pdGhyb3cgY2VbMV07cmV0dXJue3ZhbHVlOmNlWzBdP2NlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2RlLHVlXSl9fX0sST10aGlzJiZ0aGlzLl9fcmVhZHx8''@;'; put 'put ''ZnVuY3Rpb24oRyxXKXt2YXIgVT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZHW1N5bWJvbC5pdGVyYXRvcl07aWYoIVUpcmV0dXJuIEc7dmFyIHEsdGUsbmU9VS5jYWxsKEcpLGllPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1XfHxXLS0gPjApJiYhKHE9bmUubmV4dCgpKS5kb25lOylpZS5w''@;'; put 'put ''dXNoKHEudmFsdWUpfWNhdGNoKGxlKXt0ZT17ZXJyb3I6bGV9fWZpbmFsbHl7dHJ5e3EmJiFxLmRvbmUmJihVPW5lLnJldHVybikmJlUuY2FsbChuZSl9ZmluYWxseXtpZih0ZSl0aHJvdyB0ZS5lcnJvcn19cmV0dXJuIGllfSxSPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24o''@;'; put 'put ''RyxXLFUpe2lmKFV8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcSx0ZT0wLG5lPVcubGVuZ3RoO3RlPG5lO3RlKyspIXEmJnRlIGluIFd8fChxfHwocT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChXLDAsdGUpKSxxW3RlXT1XW3RlXSk7cmV0dXJuIEcuY29uY2F0KHF8fEFycmF5''@;'; put 'put ''LnByb3RvdHlwZS5zbGljZS5jYWxsKFcpKX0sRT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oRyl7cmV0dXJuIEcmJkcuX19lc01vZHVsZT9HOntkZWZhdWx0Okd9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi51cGRhdGVD''@;'; put 'put ''c3Y9Qi5jcmVhdGVDc3Y9Qi5yZWFkQ3N2PXZvaWQgMDt2YXIgej1MKDE1NTkpLGo9RShMKDc1NjUpKTtCLnJlYWRDc3Y9ZnVuY3Rpb24oRyl7cmV0dXJuIEsodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKFcpe3N3aXRjaChXLmxhYmVsKXtj''@;'; put 'put ''YXNlIDA6cmV0dXJuWzQsKDAsei5yZWFkRmlsZSkoRyldO2Nhc2UgMTpyZXR1cm5bMixXLnNlbnQoKS5zcGxpdCgiXG4iKS5maWx0ZXIoZnVuY3Rpb24oVSl7cmV0dXJuIFUubGVuZ3RofSkubWFwKGZ1bmN0aW9uKFUpe3JldHVybiBVLnNwbGl0KCIsIil9KV19fSl9KX0sQi5jcmVhdGVDc3Y9''@;'; put 'put ''ZnVuY3Rpb24oRyxXLFUpe3JldHVybiBLKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHE7cmV0dXJuIEoodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHE9KDAsai5kZWZhdWx0KShXLHtoZWFkZXI6MT09PVcubGVuZ3RoLGNvbHVt''@;'; put 'put ''bnM6VX0pLFs0LCgwLHouY3JlYXRlRmlsZSkoRyxxKV07Y2FzZSAxOnJldHVybiB0ZS5zZW50KCksWzJdfX0pfSl9LEIudXBkYXRlQ3N2PWZ1bmN0aW9uKEcsVyxVLHEpe3JldHVybiBLKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHRlLG5lLGllO3JldHVybiBKKHRoaXMs''@;'; put 'put ''ZnVuY3Rpb24obGUpe3N3aXRjaChsZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LFYoRyxXLFUscSldO2Nhc2UgMTpyZXR1cm4gdGU9bGUuc2VudCgpLHEmJihuZT0wPT09dGUubGVuZ3RoPzE6dGUubGVuZ3RoLChpZT1VLmZpbmRJbmRleChmdW5jdGlvbihkZSl7cmV0dXJuIGRlPT09cX0pKT4t''@;'; put 'put ''MT9XLnNwbGljZShpZSwwLG5lKTooVS5zcGxpY2UoMCwwLHEpLFcuc3BsaWNlKDAsMCxuZSkpKSx0ZS5wdXNoKFcpLFs0LCgwLEIuY3JlYXRlQ3N2KShHLHRlLFUpXTtjYXNlIDI6cmV0dXJuIGxlLnNlbnQoKSxbMl19fSl9KX07dmFyIFY9ZnVuY3Rpb24oRyxXLFUscSl7cmV0dXJuIEsodm9p''@;'; put 'put ''ZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdGUsbmUsaWUsbGU7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihkZSl7c3dpdGNoKGRlLmxhYmVsKXtjYXNlIDA6aWYoVy5sZW5ndGghPT1VLmxlbmd0aCl7aWYoVy5sZW5ndGg+VS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29y''@;'; put 'put ''ZCBjYW4gbm90IGhhdmUgbW9yZSBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIik7aWYoIXF8fFcubGVuZ3RoKzEhPT1VLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImEgcmVjb3JkIGNhbiBub3QgaGF2ZSBsZXNzIGZpZWxkcyB0aGFuIHByb3ZpZGVkIGNvbHVtbnMiKX1lbHNlIGlmKHEm''@;'; put 'put ''JlUuaW5jbHVkZXMocSkpdGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbW9yZSBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIik7cmV0dXJuWzQsKDAsQi5yZWFkQ3N2KShHKS5jYXRjaChmdW5jdGlvbih1ZSl7cmV0dXJuW119KV07Y2FzZSAxOmlmKHRlPWRlLnNl''@;'; put 'put ''bnQoKSxuZT10ZVswXSl7aWYoVS5sZW5ndGg+bmUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibnVtYmVyIG9mIHByb3ZpZGVkIGNvbHVtbnMgYXJlIGdyZWF0ZXIgdGhhbiBudW1iZXIgb2YgZXhpc3RpbmcgY29sdW1ucyIpO2lmKFUubGVuZ3RoPG5lLmxlbmd0aCl7aWYoIXF8fFUubGVuZ3Ro''@;'; put 'put ''KzEhPT1uZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgcHJvdmlkZWQgY29sdW1ucyBhcmUgbGVzcyB0aGFuIG51bWJlciBvZiBleGlzdGluZyBjb2x1bW5zIik7aWYoaWU9bmUuZmluZEluZGV4KGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWU9PT1xfSksbGU9UihbXSxJKFUpLCEx''@;'; put 'put ''KSwhKGllPi0xKSl0aHJvdyBuZXcgRXJyb3IoInByb3ZpZGVkIGNvbHVtbnMgZG9lcyBub3QgbWF0Y2ggZXhpc3RpbmcgY29sdW1ucyIpO2lmKGxlLnNwbGljZShpZSwwLHEpLEpTT04uc3RyaW5naWZ5KFUpIT09SlNPTi5zdHJpbmdpZnkobGUpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQg''@;'; put 'put ''Y29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIil9ZWxzZXtpZihKU09OLnN0cmluZ2lmeShVKSE9PUpTT04uc3RyaW5naWZ5KG5lKSl0aHJvdyBuZXcgRXJyb3IoInByb3ZpZGVkIGNvbHVtbnMgZG9lcyBub3QgbWF0Y2ggZXhpc3RpbmcgY29sdW1ucyIpO2lmKHEmJiFV''@;'; put 'put ''LmluY2x1ZGVzKHEpKXRocm93IG5ldyBFcnJvcigiY2FuIG5vdCBhZGQgbmV3IGlkIHRvIGV4aXN0aW5nIGRhdGEiKX19cmV0dXJuWzIsdGVdfX0pfSl9fSwxNTU5OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3Qu''@;'; put 'put ''Y3JlYXRlP2Z1bmN0aW9uKFksYix4LE4pe3ZvaWQgMD09PU4mJihOPXgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLE4se2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJbeF19fSl9OmZ1bmN0aW9uKFksYix4LE4pe3ZvaWQgMD09PU4mJihOPXgpLFlbTl09Ylt4XX0pLEo9''@;'; put 'put ''dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFksYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KFksImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmJ9KX06ZnVuY3Rpb24oWSxiKXtZLmRlZmF1bHQ9Yn0pLEk9dGhpcyYmdGhpcy5fX2lt''@;'; put 'put ''cG9ydFN0YXJ8fGZ1bmN0aW9uKFkpe2lmKFkmJlkuX19lc01vZHVsZSlyZXR1cm4gWTt2YXIgYj17fTtpZihudWxsIT1ZKWZvcih2YXIgeCBpbiBZKSJkZWZhdWx0IiE9PXgmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChZLHgpJiZLKGIsWSx4KTtyZXR1cm4gSihiLFkp''@;'; put 'put ''LGJ9LFI9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFksYix4LE4pe3JldHVybiBuZXcoeHx8KHg9UHJvbWlzZSkpKGZ1bmN0aW9uKEYsZyl7ZnVuY3Rpb24gQyhwKXt0cnl7eShOLm5leHQocCkpfWNhdGNoKFMpe2coUyl9fWZ1bmN0aW9uIE0ocCl7dHJ5e3koTi50aHJvdyhwKSl9''@;'; put 'put ''Y2F0Y2goUyl7ZyhTKX19ZnVuY3Rpb24geShwKXt2YXIgUztwLmRvbmU/RihwLnZhbHVlKTooUz1wLnZhbHVlLFMgaW5zdGFuY2VvZiB4P1M6bmV3IHgoZnVuY3Rpb24oUSl7UShTKX0pKS50aGVuKEMsTSl9eSgoTj1OLmFwcGx5KFksYnx8W10pKS5uZXh0KCkpfSl9LEU9dGhpcyYmdGhpcy5f''@;'; put 'put ''X2dlbmVyYXRvcnx8ZnVuY3Rpb24oWSxiKXt2YXIgeCxOLEYsZyxDPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkZbMF0pdGhyb3cgRlsxXTtyZXR1cm4gRlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBnPXtuZXh0Ok0oMCksdGhyb3c6TSgxKSxyZXR1cm46TSgyKX0sImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiBNKHkpe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gZnVuY3Rpb24oUyl7aWYoeCl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFk''@;'; put 'put ''eSBleGVjdXRpbmcuIik7Zm9yKDtDOyl0cnl7aWYoeD0xLE4mJihGPTImU1swXT9OLnJldHVybjpTWzBdP04udGhyb3d8fCgoRj1OLnJldHVybikmJkYuY2FsbChOKSwwKTpOLm5leHQpJiYhKEY9Ri5jYWxsKE4sU1sxXSkpLmRvbmUpcmV0dXJuIEY7c3dpdGNoKE49MCxGJiYoUz1bMiZTWzBd''@;'; put 'put ''LEYudmFsdWVdKSxTWzBdKXtjYXNlIDA6Y2FzZSAxOkY9UzticmVhaztjYXNlIDQ6cmV0dXJuIEMubGFiZWwrKyx7dmFsdWU6U1sxXSxkb25lOiExfTtjYXNlIDU6Qy5sYWJlbCsrLE49U1sxXSxTPVswXTtjb250aW51ZTtjYXNlIDc6Uz1DLm9wcy5wb3AoKSxDLnRyeXMucG9wKCk7Y29udGlu''@;'; put 'put ''dWU7ZGVmYXVsdDppZighKChGPShGPUMudHJ5cykubGVuZ3RoPjAmJkZbRi5sZW5ndGgtMV0pfHw2IT09U1swXSYmMiE9PVNbMF0pKXtDPTA7Y29udGludWV9aWYoMz09PVNbMF0mJighRnx8U1sxXT5GWzBdJiZTWzFdPEZbM10pKXtDLmxhYmVsPVNbMV07YnJlYWt9aWYoNj09PVNbMF0mJkMu''@;'; put 'put ''bGFiZWw8RlsxXSl7Qy5sYWJlbD1GWzFdLEY9UzticmVha31pZihGJiZDLmxhYmVsPEZbMl0pe0MubGFiZWw9RlsyXSxDLm9wcy5wdXNoKFMpO2JyZWFrfUZbMl0mJkMub3BzLnBvcCgpLEMudHJ5cy5wb3AoKTtjb250aW51ZX1TPWIuY2FsbChZLEMpfWNhdGNoKFEpe1M9WzYsUV0sTj0wfWZp''@;'; put 'put ''bmFsbHl7eD1GPTB9aWYoNSZTWzBdKXRocm93IFNbMV07cmV0dXJue3ZhbHVlOlNbMF0/U1sxXTp2b2lkIDAsZG9uZTohMH19KFt5LHBdKX19fSx6PXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihZLGIpe3ZhciB4PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJllbU3ltYm9sLml0ZXJh''@;'; put 'put ''dG9yXTtpZigheClyZXR1cm4gWTt2YXIgTixGLGc9eC5jYWxsKFkpLEM9W107dHJ5e2Zvcig7KHZvaWQgMD09PWJ8fGItLSA+MCkmJiEoTj1nLm5leHQoKSkuZG9uZTspQy5wdXNoKE4udmFsdWUpfWNhdGNoKE0pe0Y9e2Vycm9yOk19fWZpbmFsbHl7dHJ5e04mJiFOLmRvbmUmJih4PWcucmV0''@;'; put 'put ''dXJuKSYmeC5jYWxsKGcpfWZpbmFsbHl7aWYoRil0aHJvdyBGLmVycm9yfX1yZXR1cm4gQ30saj10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKFksYix4KXtpZih4fHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIE4sRj0wLGc9Yi5sZW5ndGg7RjxnO0YrKykhTiYmRiBp''@;'; put 'put ''biBifHwoTnx8KE49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYiwwLEYpKSxOW0ZdPWJbRl0pO3JldHVybiBZLmNvbmNhdChOfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiKSl9LFY9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFkpe3JldHVybiBZJiZZLl9f''@;'; put 'put ''ZXNNb2R1bGU/WTp7ZGVmYXVsdDpZfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuaXNUZXN0RmlsZT1CLnRlc3RGaWxlUmVnRXhwPUIuY3JlYXRlUmVhZFN0cmVhbT1CLmNyZWF0ZVdyaXRlU3RyZWFtPUIuZ2V0UmVhbFBhdGg9Qi5iYXNlNjRF''@;'; put 'put ''bmNvZGVGaWxlPUIuYmFzZTY0RW5jb2RlSW1hZ2VGaWxlPUIucGF0aFNlcEVzY2FwZWQ9Qi5jb3B5PUIubW92ZUZpbGU9Qi5nZXRSZWxhdGl2ZVBhdGg9Qi51bmlmeUZpbGVQYXRoPUIuZGVsZXRlRm9sZGVyPUIuZGVsZXRlRmlsZT1CLmNyZWF0ZUZpbGU9Qi5jcmVhdGVGb2xkZXI9Qi5saXN0''@;'; put 'put ''RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9Qi5saXN0U3ViRm9sZGVyc0luRm9sZGVyPUIubGlzdFNhc0ZpbGVzSW5Gb2xkZXI9Qi5saXN0SW5pRmlsZXNJbkZvbGRlcj1CLmxpc3RGaWxlc0luRm9sZGVyPUIucmVhZEZpbGVCaW5hcnk9Qi5yZWFkRmlsZT1CLmlzRm9sZGVyPUIuZm9sZGVy''@;'; put 'put ''RXhpc3RzPUIuZmlsZUV4aXN0cz12b2lkIDA7dmFyIEc9VihMKDU2NzQpKSxXPVYoTCg5ODQpKSxVPVYoTCgyNTIwKSkscT1MKDYyNjYpLHRlPUkoTCgyOTc1KSk7ZnVuY3Rpb24gbmUoWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm5bMixHLmRlZmF1bHQucHJvbWlzZXMuYWNjZXNzKFksRy5kZWZhdWx0LmNvbnN0YW50cy5GX09LKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSldfSl9KX1mdW5jdGlvbiBpZShZKXtyZXR1cm4gUih0aGlzLHZvaWQg''@;'; put 'put ''MCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVyblsyLEcuZGVmYXVsdC5wcm9taXNlcy5yZWFkRmlsZShZKV19KX0pfWZ1bmN0aW9uIGxlKFkpe3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oYil7cmV0dXJuWzIsRy5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoWSx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIHguZmlsdGVyKGZ1bmN0aW9uKE4pe3JldHVybiFOLmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4ubmFtZX0p''@;'; put 'put ''fSldfSl9KX1mdW5jdGlvbiBkZShZLGIseCl7cmV0dXJuIHZvaWQgMD09PWImJihiPSEwKSx2b2lkIDA9PT14JiYoeD1bXSksUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTj10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oRil7cmV0dXJuWzIsRy5kZWZhdWx0LnByb21p''@;'; put 'put ''c2VzLnJlYWRkaXIoWSx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oZyl7cmV0dXJuIFIoTix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEMsTT10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oeSl7c3dpdGNoKHkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYiYmZy5maWx0''@;'; put 'put ''ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIHAuaXNEaXJlY3RvcnkoKX0pLmxlbmd0aD8oQz1bXSxbNCwoMCxxLmFzeW5jRm9yRWFjaCkoZy5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIHAuaXNEaXJlY3RvcnkoKX0pLGZ1bmN0aW9uKHApe3JldHVybiBSKE0sdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBTLFEscmU7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihmZSl7c3dpdGNoKGZlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHguaW5jbHVkZXMoUz1wLm5hbWUpP1szLDJdOihRPVUuZGVmYXVsdC5qb2luKFksUykscmU9W2ooW10seihDKSwhMSldLFs0LGRlKFEsYix4KV0pO2Nhc2UgMTpD''@;'; put 'put ''PWouYXBwbHkodm9pZCAwLHJlLmNvbmNhdChbei5hcHBseSh2b2lkIDAsW2ZlLnNlbnQoKS5tYXAoZnVuY3Rpb24obWUpe3JldHVybiBVLmRlZmF1bHQuam9pbihTLG1lKX0pXSksITFdKSksZmUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9KV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4g''@;'; put 'put ''eS5zZW50KCksWzIsaihqKFtdLHooZy5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIXAuaXNEaXJlY3RvcnkoKX0pLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC5uYW1lfSkpLCExKSx6KEMpLCExKV07Y2FzZSAyOnJldHVyblsyLGcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLm5hbWV9KV19''@;'; put 'put ''fSl9KX0pXX0pfSl9ZnVuY3Rpb24gdWUoWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixHLmRlZmF1bHQucHJvbWlzZXMubWtkaXIoWSx7cmVjdXJzaXZlOiEwfSldfSl9KX1mdW5jdGlvbiBjZShZLGIs''@;'; put 'put ''eCl7dm9pZCAwPT09YiYmKGI9VS5kZWZhdWx0LnNlcCksdm9pZCAwPT09eCYmKHg9Ii8iKTt2YXIgTj17dW5peDoiLyIsd2luOiJcXCJ9LEY9T2JqZWN0LmtleXMoTikuZmluZChmdW5jdGlvbihDKXtyZXR1cm4gTltDXT09PWJ9KTtpZihGKXt2YXIgZz1OW09iamVjdC5rZXlzKE4pLmZpbmQo''@;'; put 'put ''ZnVuY3Rpb24oQyl7cmV0dXJuIEMhPT1GfSldO3JldHVybiBGPU5bRl0sWS5zcGxpdChnKS5qb2luKEYpfXJldHVybiBZLnNwbGl0KHgpLmpvaW4oYil9Qi5maWxlRXhpc3RzPWZ1bmN0aW9uKFkpe3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMs''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuWzIsRy5kZWZhdWx0LnByb21pc2VzLmFjY2VzcyhZLEcuZGVmYXVsdC5jb25zdGFudHMuRl9PSykudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9LEIuZm9sZGVyRXhpc3RzPW5lLEIuaXNGb2xkZXI9''@;'; put 'put ''ZnVuY3Rpb24oWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixHLmRlZmF1bHQucHJvbWlzZXMubHN0YXQoWSkudGhlbihmdW5jdGlvbih4KXtyZXR1cm4geC5pc0RpcmVjdG9yeSgpfSkuY2F0Y2goZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9LEIucmVhZEZpbGU9ZnVuY3Rpb24oWSxiKXtyZXR1cm4gdm9pZCAwPT09YiYmKGI9InV0ZjgiKSxSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oeCl7cmV0dXJuWzIsRy5kZWZhdWx0LnByb21pc2Vz''@;'; put 'put ''LnJlYWRGaWxlKFksYildfSl9KX0sQi5yZWFkRmlsZUJpbmFyeT1pZSxCLmxpc3RGaWxlc0luRm9sZGVyPWxlLEIubGlzdEluaUZpbGVzSW5Gb2xkZXI9ZnVuY3Rpb24oWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtz''@;'; put 'put ''d2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGxlKFkpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LmVuZHNXaXRoKCIuaW5pIil9KV19fSl9KX0sQi5saXN0U2FzRmlsZXNJbkZvbGRlcj1mdW5jdGlvbihZLGIseCl7cmV0dXJuIHZv''@;'; put 'put ''aWQgMD09PWImJihiPSExKSx2b2lkIDA9PT14JiYoeD1bXSksUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChGLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsZGUoWSxiLHgpXTtjYXNlIDE6cmV0dXJuWzIsRi5zZW50KCkuZmls''@;'; put 'put ''dGVyKGZ1bmN0aW9uKGcpe3JldHVybiBnLmVuZHNXaXRoKCIuc2FzIil9KV19fSl9KX0sQi5saXN0U3ViRm9sZGVyc0luRm9sZGVyPWZ1bmN0aW9uKFkpe3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsRy5k''@;'; put 'put ''ZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoWSx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIHguZmlsdGVyKGZ1bmN0aW9uKE4pe3JldHVybiBOLmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4ubmFtZX0pfSldfSl9KX0sQi5saXN0Rmls''@;'; put 'put ''ZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9ZGUsQi5jcmVhdGVGb2xkZXI9dWUsQi5jcmVhdGVGaWxlPWZ1bmN0aW9uKFksYix4KXtyZXR1cm4gUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTixGO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm4oWT1jZShZKSkuc3BsaXQoVS5kZWZhdWx0LnNlcCkubGVuZ3RoPjE/KChOPVkuc3BsaXQoVS5kZWZhdWx0LnNlcCkpLnBvcCgpLFs0LG5lKEY9Ti5qb2luKFUuZGVmYXVsdC5zZXApKV0pOlszLDNdO2Nhc2UgMTpyZXR1cm4gZy5zZW50KCk/WzMsM106WzQsdWUoRildO2Nh''@;'; put 'put ''c2UgMjpnLnNlbnQoKSxnLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyLEcuZGVmYXVsdC5wcm9taXNlcy53cml0ZUZpbGUoWSxiLHgpXX19KX0pfSxCLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm5bMixHLmRlZmF1bHQucmVtb3ZlKFkpXX0pfSl9LEIuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKFkpe3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsbmV3IFByb21pc2UoZnVuY3Rpb24o''@;'; put 'put ''eCxOKXsoMCxXLmRlZmF1bHQpKFkse30sZnVuY3Rpb24oRil7cmV0dXJuIEY/TihGKTp4KCl9KX0pXX0pfSl9LEIudW5pZnlGaWxlUGF0aD1jZSxCLmdldFJlbGF0aXZlUGF0aD1mdW5jdGlvbihZLGIpe3ZhciB4PVkuc3BsaXQoVS5kZWZhdWx0LnNlcCksTj1iLnNwbGl0KFUuZGVmYXVsdC5z''@;'; put 'put ''ZXApLEY9W10sZz1bXTt4LmZvckVhY2goZnVuY3Rpb24ocCxTKXt2b2lkIDAhPT1OW1NdJiZ4W1NdPT09TltTXT9GLnB1c2gocCk6cCYmZy5wdXNoKHApfSk7dmFyIEM9Ri5qb2luKFUuZGVmYXVsdC5zZXApLE09bmV3IFJlZ0V4cCgiXiIuY29uY2F0KFUuZGVmYXVsdC5zZXAucmVwbGFjZSgv''@;'; put 'put ''XFwvZywiXFxcXCIpKSkseT1uZXcgUmVnRXhwKCIiLmNvbmNhdChVLmRlZmF1bHQuc2VwLnJlcGxhY2UoL1xcL2csIlxcXFwiKSwiJCIpKTtyZXR1cm4oZy5sZW5ndGg/Ii4uIi5jb25jYXQoVS5kZWZhdWx0LnNlcCkucmVwZWF0KGcubGVuZ3RoKToiLiIuY29uY2F0KFUuZGVmYXVsdC5zZXAp''@;'; put 'put ''KStiLnJlcGxhY2UoQywiIikucmVwbGFjZShNLCIiKS5yZXBsYWNlKHksIiIpfSxCLm1vdmVGaWxlPWZ1bmN0aW9uKFksYil7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbih4KXtyZXR1cm5bMixHLmRlZmF1bHQucHJvbWlzZXMu''@;'; put 'put ''cmVuYW1lKFksYildfSl9KX0sQi5jb3B5PWZ1bmN0aW9uKFksYil7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbih4KXtyZXR1cm5bMixHLmRlZmF1bHQuY29weShZLGIpXX0pfSl9LEIucGF0aFNlcEVzY2FwZWQ9VS5kZWZhdWx0''@;'; put 'put ''LnNlcC5yZXBsYWNlKC9cXC9nLCJcXFxcIiksQi5iYXNlNjRFbmNvZGVJbWFnZUZpbGU9ZnVuY3Rpb24oWSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixpZShZKS50aGVuKGZ1bmN0aW9uKHgpe3ZhciBO''@;'; put 'put ''PVUuZGVmYXVsdC5leHRuYW1lKFkpLnN1YnN0cigxKXx8InBuZyI7cmV0dXJuInN2ZyI9PT1OJiYoTj0ic3ZnK3htbCIpLCJkYXRhOmltYWdlLyIrTisiO2Jhc2U2NCwiK3gudG9TdHJpbmcoImJhc2U2NCIpfSldfSl9KX0sQi5iYXNlNjRFbmNvZGVGaWxlPWZ1bmN0aW9uKFkpe3JldHVybiBS''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsRy5kZWZhdWx0LnByb21pc2VzLnJlYWRGaWxlKFkse2VuY29kaW5nOiJiYXNlNjQifSldfSl9KX0sQi5nZXRSZWFsUGF0aD1mdW5jdGlvbihZKXtyZXR1cm4gRy5kZWZhdWx0''@;'; put 'put ''LnJlYWxwYXRoU3luYyhZKX0sQi5jcmVhdGVXcml0ZVN0cmVhbT1mdW5jdGlvbihZKXtyZXR1cm4gUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGUuZmlsZUV4aXN0cyhZKV07''@;'; put 'put ''Y2FzZSAxOnJldHVybiBiLnNlbnQoKT9bMixHLmRlZmF1bHQuY3JlYXRlV3JpdGVTdHJlYW0oWSx7ZmxhZ3M6ImEifSldOls0LHRlLmNyZWF0ZUZpbGUoWSwiIildO2Nhc2UgMjpyZXR1cm4gYi5zZW50KCksWzIsRy5kZWZhdWx0LmNyZWF0ZVdyaXRlU3RyZWFtKFkse2ZsYWdzOiJhIn0pXX19''@;'; put 'put ''KX0pfSxCLmNyZWF0ZVJlYWRTdHJlYW09ZnVuY3Rpb24oWSl7cmV0dXJuIFIodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVyblsyLEcuZGVmYXVsdC5jcmVhdGVSZWFkU3RyZWFtKFkpXX0pfSl9LEIudGVzdEZpbGVSZWdFeHA9''@;'; put 'put ''L1wudGVzdFwuKFxkK1wuKT9zYXMkL2ksQi5pc1Rlc3RGaWxlPWZ1bmN0aW9uKFkpe3JldHVybiBCLnRlc3RGaWxlUmVnRXhwLnRlc3QoWSl9fSw1NjI2OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFIpe3Jl''@;'; put 'put ''dHVybiBSJiZSLl9fZXNNb2R1bGU/Ujp7ZGVmYXVsdDpSfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2V0QWJzb2x1dGVQYXRoPXZvaWQgMDt2YXIgSj1LKEwoMjUyMCkpLEk9SyhMKDc0MzUpKTtCLmdldEFic29sdXRlUGF0aD1mdW5jdGlv''@;'; put 'put ''bihSLEUpe3JldHVybiBKLmRlZmF1bHQuaXNBYnNvbHV0ZShSKXx8L15+Ly5leGVjKFIpP0ouZGVmYXVsdC5ub3JtYWxpemUoUi5yZXBsYWNlKC9efi8sSS5kZWZhdWx0LmhvbWVkaXIoKSkpOkouZGVmYXVsdC5qb2luKEUsUil9fSwyOTc1OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIEs9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEUseixqLFYpe3ZvaWQgMD09PVYmJihWPWopLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFLFYse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHpbal19fSl9OmZ1bmN0aW9u''@;'; put 'put ''KEUseixqLFYpe3ZvaWQgMD09PVYmJihWPWopLEVbVl09eltqXX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBqIGluIEUpImRlZmF1bHQiPT09anx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosail8fEsoeixFLGopfTtP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5yZWFkQ3N2PUIuY3JlYXRlQ3N2PUIudXBkYXRlQ3N2PUIudGVzdEZpbGVSZWdFeHA9Qi5pc1Rlc3RGaWxlPUIuZ2V0UmVhbFBhdGg9Qi5iYXNlNjRFbmNvZGVGaWxlPUIuYmFzZTY0RW5jb2RlSW1hZ2VG''@;'; put 'put ''aWxlPUIuY29weT1CLnBhdGhTZXBFc2NhcGVkPUIubW92ZUZpbGU9Qi51bmlmeUZpbGVQYXRoPUIuZ2V0UmVsYXRpdmVQYXRoPUIuZGVsZXRlRm9sZGVyPUIuZGVsZXRlRmlsZT1CLmNyZWF0ZVdyaXRlU3RyZWFtPUIuY3JlYXRlUmVhZFN0cmVhbT1CLmNyZWF0ZUZvbGRlcj1CLmNyZWF0ZUZp''@;'; put 'put ''bGU9Qi5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9Qi5saXN0U3ViRm9sZGVyc0luRm9sZGVyPUIubGlzdFNhc0ZpbGVzSW5Gb2xkZXI9Qi5saXN0SW5pRmlsZXNJbkZvbGRlcj1CLmxpc3RGaWxlc0luRm9sZGVyPUIucmVhZEZpbGVCaW5hcnk9Qi5yZWFkRmlsZT1CLmlzRm9sZGVy''@;'; put 'put ''PUIuZm9sZGVyRXhpc3RzPUIuZmlsZUV4aXN0cz12b2lkIDA7dmFyIEk9TCgxNTU5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiZmlsZUV4aXN0cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkuZmlsZUV4aXN0c319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwi''@;'; put 'put ''Zm9sZGVyRXhpc3RzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5mb2xkZXJFeGlzdHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImlzRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5pc0ZvbGRlcn19KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoQiwicmVhZEZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLnJlYWRGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJyZWFkRmlsZUJpbmFyeSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkucmVhZEZpbGVC''@;'; put 'put ''aW5hcnl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImxpc3RGaWxlc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5saXN0RmlsZXNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwibGlzdEluaUZpbGVzSW5Gb2xkZXIiLHtlbnVt''@;'; put 'put ''ZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmxpc3RJbmlGaWxlc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJsaXN0U2FzRmlsZXNJbkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkubGlzdFNhc0ZpbGVzSW5Gb2xkZXJ9''@;'; put 'put ''fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImxpc3RTdWJGb2xkZXJzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmxpc3RTdWJGb2xkZXJzSW5Gb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImxpc3RGaWxlc0FuZFN1YkZvbGRlcnNJ''@;'; put 'put ''bkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJjcmVhdGVGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5jcmVhdGVG''@;'; put 'put ''aWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJjcmVhdGVGb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmNyZWF0ZUZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiY3JlYXRlUmVhZFN0cmVhbSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIEkuY3JlYXRlUmVhZFN0cmVhbX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiY3JlYXRlV3JpdGVTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmNyZWF0ZVdyaXRlU3RyZWFtfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShC''@;'; put 'put ''LCJkZWxldGVGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5kZWxldGVGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJkZWxldGVGb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmRlbGV0ZUZvbGRlcn19KSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoQiwiZ2V0UmVsYXRpdmVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXRSZWxhdGl2ZVBhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsInVuaWZ5RmlsZVBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBJLnVuaWZ5RmlsZVBhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIm1vdmVGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5tb3ZlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwicGF0aFNlcEVzY2FwZWQiLHtlbnVtZXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLnBhdGhTZXBFc2NhcGVkfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJjb3B5Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5jb3B5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJiYXNlNjRFbmNvZGVJbWFn''@;'; put 'put ''ZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmJhc2U2NEVuY29kZUltYWdlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiYmFzZTY0RW5jb2RlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkuYmFzZTY0RW5jb2Rl''@;'; put 'put ''RmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiZ2V0UmVhbFBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmdldFJlYWxQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJpc1Rlc3RGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gSS5pc1Rlc3RGaWxlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJ0ZXN0RmlsZVJlZ0V4cCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkudGVzdEZpbGVSZWdFeHB9fSk7dmFyIFI9TCgzOTA2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwidXBk''@;'; put 'put ''YXRlQ3N2Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi51cGRhdGVDc3Z9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImNyZWF0ZUNzdiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFIuY3JlYXRlQ3N2fX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShCLCJyZWFkQ3N2Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi5yZWFkQ3N2fX0pLEooTCg1NjI2KSxCKX0sMjc3NzooSCxCLEwpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLm5ld0xp''@;'; put 'put ''bmU9Qi5jYXBpdGFsaXplRmlyc3RDaGFyPUIuc2FuaXRpemVTcGVjaWFsQ2hhcnM9Qi5wYWRXaXRoTnVtYmVyPXZvaWQgMDt2YXIgSz1MKDUzMDYpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJwYWRXaXRoTnVtYmVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSy5w''@;'; put 'put ''YWRXaXRoTnVtYmVyfX0pO3ZhciBKPUwoOTAxNyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsInNhbml0aXplU3BlY2lhbENoYXJzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSi5zYW5pdGl6ZVNwZWNpYWxDaGFyc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwi''@;'; put 'put ''Y2FwaXRhbGl6ZUZpcnN0Q2hhciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEouY2FwaXRhbGl6ZUZpcnN0Q2hhcn19KTt2YXIgST1MKDE2MjgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJuZXdMaW5lIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSS5uZXdMaW5lfX0pfSw1MzA2OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnBhZFdpdGhOdW1iZXI9dm9pZCAwLEIucGFkV2l0aE51bWJlcj1mdW5jdGlvbihMLEspe3JldHVybiB2b2lkIDA9PT1LJiYo''@;'; put 'put ''Sz0wKSxMPjk/TDoiIi5jb25jYXQoSykuY29uY2F0KEwpfX0sMTYyODooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIubmV3TGluZT12b2lkIDAsQi5uZXdMaW5lPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIndpbjMyIj09PUsucGxhdGZvcm0/IlxcclxcbiI6IlxcbiJ9fSw5MDE3OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmNhcGl0YWxpemVGaXJzdENoYXI9Qi5zYW5pdGl6ZVNwZWNpYWxDaGFycz12''@;'; put 'put ''b2lkIDAsQi5zYW5pdGl6ZVNwZWNpYWxDaGFycz1mdW5jdGlvbihMKXtyZXR1cm4gTC5yZXBsYWNlKC9bXHUwMDFiXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCIiKX0sQi5jYXBpdGFsaXplRmlyc3RDaGFyPWZ1''@;'; put 'put ''bmN0aW9uKEwpe3JldHVybiBMLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0wuc2xpY2UoMSl9fSw2NDY3OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKEkpe3JldHVybiBJJiZJLl9fZXNNb2R1bGU/STp7ZGVm''@;'; put 'put ''YXVsdDpJfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuaXNTcGVjaWFsTWlzc2luZz1CLmNob2ljZVZhbGlkYXRvcj1CLmNvbmZpcm1hdGlvblZhbGlkYXRvcj1CLnVybFZhbGlkYXRvcj12b2lkIDA7dmFyIEo9SyhMKDQ4MSkpO0IudXJsVmFs''@;'; put 'put ''aWRhdG9yPWZ1bmN0aW9uKEksUil7cmV0dXJuISFKLmRlZmF1bHQuaXNIdHRwVXJpKEkpfHwhIUouZGVmYXVsdC5pc0h0dHBzVXJpKEkpfHwiIj09PUl8fFJ9LEIuY29uZmlybWF0aW9uVmFsaWRhdG9yPWZ1bmN0aW9uKEkpe3JldHVybiEwPT09SXx8ITE9PT1JfSxCLmNob2ljZVZhbGlkYXRv''@;'; put 'put ''cj1mdW5jdGlvbihJLFIsRSl7cmV0dXJuIEk+MCYmSTw9Unx8RX0sQi5pc1NwZWNpYWxNaXNzaW5nPWZ1bmN0aW9uKEkpe3JldHVybigic3RyaW5nIiE9dHlwZW9mIEl8fCFJLmluY2x1ZGVzKCIuLiIpKSYmbmV3IFJlZ0V4cCgiXihcXC4pP1thLXpfLl17MX0kIiwiaSIpLnRlc3QoSSl9fSw3''@;'; put 'put ''NzU3OihILEIsTCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2VuZXJhdGVUaW1lc3RhbXA9Qi50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPXZvaWQgMDt2YXIgSz1MKDEzMDIpO09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShCLCJ0aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSy50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJnZW5lcmF0ZVRpbWVzdGFtcCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIEsuZ2VuZXJhdGVUaW1lc3RhbXB9fSl9LDEzMDI6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5nZW5lcmF0ZVRpbWVzdGFtcD1CLnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1M9''@;'; put 'put ''dm9pZCAwO3ZhciBLPUwoMjc3Nyk7Qi50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPWZ1bmN0aW9uKEope3ZvaWQgMD09PUomJihKPURhdGUubm93KCkpO3ZhciBJPW5ldyBEYXRlKEopO3JldHVybltJLmdldEZ1bGxZZWFyKCksKDAsSy5wYWRXaXRoTnVtYmVyKShJLmdldE1vbnRoKCkrMSks''@;'; put 'put ''KDAsSy5wYWRXaXRoTnVtYmVyKShJLmdldERhdGUoKSldLmpvaW4oIi8iKSsiICIrWygwLEsucGFkV2l0aE51bWJlcikoSS5nZXRIb3VycygpKSwoMCxLLnBhZFdpdGhOdW1iZXIpKEkuZ2V0TWludXRlcygpKSwoMCxLLnBhZFdpdGhOdW1iZXIpKEkuZ2V0U2Vjb25kcygpKV0uam9pbigiOiIp''@;'; put 'put ''fSxCLmdlbmVyYXRlVGltZXN0YW1wPWZ1bmN0aW9uKEosSSl7dm9pZCAwPT09SiYmKEo9IiIpO3ZhciBSPW5ldyBEYXRlLEU9W1IuZ2V0VVRDRnVsbFllYXIoKSxSLmdldFVUQ01vbnRoKCkrMSxSLmdldFVUQ0RhdGUoKSxSLmdldFVUQ0hvdXJzKCksUi5nZXRVVENNaW51dGVzKCksUi5nZXRV''@;'; put 'put ''VENTZWNvbmRzKCldO3JldHVybiBFPUUubWFwKGZ1bmN0aW9uKHope3JldHVybigwLEsucGFkV2l0aE51bWJlcikoeil9KSxJJiZKJiZJPEUubGVuZ3RoJiZJPj0wJiZFLnNwbGljZShJLDAsSiksRS5qb2luKEk/IiI6Sil9fSw4MjM5OihILEIpPT57InVzZSBzdHJpY3QiO3ZhciBMO09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkNvbmZpZ1R5cGVzPXZvaWQgMCwoTD1CLkNvbmZpZ1R5cGVzfHwoQi5Db25maWdUeXBlcz17fSkpLkJ1aWxkPSJidWlsZENvbmZpZyIsTC5TZXJ2aWNlPSJzZXJ2aWNlQ29uZmlnIixMLkpvYj0iam9iQ29uZmln''@;'; put 'put ''IixMLlRlc3Q9InRlc3RDb25maWciLEwuRG9jPSJkb2NDb25maWciLEwuRGVwbG95PSJkZXBsb3lDb25maWciLEwuU3RyZWFtPSJzdHJlYW1Db25maWciLEwuQXV0aD0iYXV0aENvbmZpZyJ9LDI0Mjc6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pfSwxODk6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzNjkyOihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6''@;'; put 'put ''ITB9KX0sNjkzOTooSCxCKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTDtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5NZW1iZXJUeXBlPXZvaWQgMCwoTD1CLk1lbWJlclR5cGV8fChCLk1lbWJlclR5cGU9e30pKS5zZXJ2aWNlPSJzZXJ2aWNlIixMLmZp''@;'; put 'put ''bGU9ImZpbGUiLEwuZm9sZGVyPSJmb2xkZXIifSwzMzI3OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNTE2NTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVs''@;'; put 'put ''ZSIse3ZhbHVlOiEwfSl9LDM5MDA6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEkseix7ZW51''@;'; put 'put ''bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUltFXX19KX06ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSksSVt6XT1SW0VdfSksSj10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oSSxSKXtmb3IodmFyIEUgaW4gSSkiZGVmYXVsdCI9PT1FfHxPYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUixFKXx8SyhSLEksRSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxKKEwoODIzOSksQiksSihMKDI0MjcpLEIpLEooTCgxODkpLEIpLEooTCgzNjkyKSxCKSxKKEwoNjkzOSksQiksSihM''@;'; put 'put ''KDMzMjcpLEIpLEooTCg1MTY1KSxCKSxKKEwoNDA2OSksQiksSihMKDg5MzIpLEIpLEooTCg0KSxCKSxKKEwoMjAxNSksQiksSihMKDg1MTUpLEIpLEooTCg1MzEzKSxCKSxKKEwoODk3OSksQil9LDQwNjk6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuaXNNYWNyb1ZhcnM9dm9pZCAwLEIuaXNNYWNyb1ZhcnM9ZnVuY3Rpb24oTCl7cmV0dXJuIEwmJiJvYmplY3QiPT10eXBlb2YgTC5tYWNyb1ZhcnMmJiFBcnJheS5pc0FycmF5KEwubWFjcm9WYXJzKX19LDg5MzI6KEgsQik9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw0OihILEIpPT57InVzZSBzdHJpY3QiO3ZhciBMO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLlNBU0pzRmlsZVR5cGU9dm9pZCAwLChMPUIuU0FTSnNGaWxl''@;'; put 'put ''VHlwZXx8KEIuU0FTSnNGaWxlVHlwZT17fSkpLnNlcnZpY2U9IlNlcnZpY2UiLEwuam9iPSJKb2IiLEwudGVzdD0iVGVzdCIsTC5maWxlPSJGaWxlIn0sMjAxNTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDg1''@;'; put 'put ''MTU6KEgsQik9PnsidXNlIHN0cmljdCI7dmFyIEw7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU2VydmVyVHlwZT12b2lkIDAsKEw9Qi5TZXJ2ZXJUeXBlfHwoQi5TZXJ2ZXJUeXBlPXt9KSkuU2FzVml5YT0iU0FTVklZQSIsTC5TYXM5PSJTQVM5''@;'; put 'put ''IixMLlNhc2pzPSJTQVNKUyJ9LDUzMTM6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw4OTc5OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gSz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih6KXtmb3IodmFyIGosVj0xLEc9YXJndW1lbnRzLmxlbmd0aDtWPEc7VisrKWZvcih2YXIgVyBpbiBqPWFyZ3VtZW50c1tWXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaixXKSYmKHpbV109altXXSk7cmV0''@;'; put 'put ''dXJuIHp9LEsuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5UYXJnZXQ9dm9pZCAwO3ZhciBKPUwoODIzOSksST1MKDg1MTUpLFI9TCg2NzgxKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geihqLFYpe3ZhciBH''@;'; put 'put ''PXRoaXM7dm9pZCAwPT09ViYmKFY9e30pLHRoaXMuX3NlcnZlclR5cGU9SS5TZXJ2ZXJUeXBlLlNhc1ZpeWEsdGhpcy5nZXRDb25maWc9ZnVuY3Rpb24oVyxVKXtyZXR1cm4gSyhLKHt9LEcuX2NvbmZpZ1tXXXx8e30pLFVbV10pfTt0cnl7aWYoIWopdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlk''@;'; put 'put ''IHRhcmdldDogSW5wdXQgSlNPTiBpcyBudWxsIG9yIHVuZGVmaW5lZC4iKTt0aGlzLl9jb25maWc9Vix0aGlzLl9uYW1lPSgwLFIudmFsaWRhdGVUYXJnZXROYW1lKShqLm5hbWUpLHRoaXMuX3NlcnZlclVybD0oMCxSLnZhbGlkYXRlU2VydmVyVXJsKShqLnNlcnZlclVybCksdGhpcy5fc2Vy''@;'; put 'put ''dmVyVHlwZT0oMCxSLnZhbGlkYXRlU2VydmVyVHlwZSkoai5zZXJ2ZXJUeXBlKSx0aGlzLl9odHRwc0FnZW50T3B0aW9ucz0oMCxSLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnMpKGouaHR0cHNBZ2VudE9wdGlvbnMpLHRoaXMuX2FwcExvYz0oMCxSLnZhbGlkYXRlQXBwTG9jKShqLmFwcExv''@;'; put 'put ''YyksdGhpcy5fY29udGV4dE5hbWU9KDAsUi52YWxpZGF0ZUNvbnRleHROYW1lKShqLmNvbnRleHROYW1lLHRoaXMuX3NlcnZlclR5cGUpLHRoaXMuX3NlcnZlck5hbWU9KDAsUi52YWxpZGF0ZVNlcnZlck5hbWUpKGouc2VydmVyTmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSx0aGlzLl9zeW5jRm9s''@;'; put 'put ''ZGVyPSgwLFIudmFsaWRhdGVTeW5jRm9sZGVyKShqLnN5bmNGb2xkZXIpLHRoaXMuX3JlcG9zaXRvcnlOYW1lPSgwLFIudmFsaWRhdGVSZXBvc2l0b3J5TmFtZSkoai5yZXBvc2l0b3J5TmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSxqLmRvY0NvbmZpZyYmKHRoaXMuX2RvY0NvbmZpZz0oMCxSLnZh''@;'; put 'put ''bGlkYXRlRG9jQ29uZmlnKSh0aGlzLmdldENvbmZpZyhKLkNvbmZpZ1R5cGVzLkRvYyxqKSkpLGouYXV0aENvbmZpZyYmKHRoaXMuX2F1dGhDb25maWc9KDAsUi52YWxpZGF0ZUF1dGhDb25maWcpKHRoaXMuZ2V0Q29uZmlnKEouQ29uZmlnVHlwZXMuQXV0aCxqKSkpLGouYXV0aENvbmZpZ1Nh''@;'; put 'put ''czkmJih0aGlzLl9hdXRoQ29uZmlnU2FzOT0oMCxSLnZhbGlkYXRlQXV0aENvbmZpZ1NhczkpKGouYXV0aENvbmZpZ1NhczkpKSxqLmJ1aWxkQ29uZmlnJiYodGhpcy5fYnVpbGRDb25maWc9KDAsUi52YWxpZGF0ZUJ1aWxkQ29uZmlnKSh0aGlzLmdldENvbmZpZyhKLkNvbmZpZ1R5cGVzLkJ1''@;'; put 'put ''aWxkLGopLHRoaXMuX25hbWUpKSx0aGlzLl9kZXBsb3lDb25maWc9KDAsUi52YWxpZGF0ZURlcGxveUNvbmZpZykoai5kZXBsb3lDb25maWc/dGhpcy5nZXRDb25maWcoSi5Db25maWdUeXBlcy5EZXBsb3ksaik6e2RlcGxveVNlcnZpY2VQYWNrOiEwLGRlcGxveVNjcmlwdHM6W119KSxqLnNl''@;'; put 'put ''cnZpY2VDb25maWcmJih0aGlzLl9zZXJ2aWNlQ29uZmlnPSgwLFIudmFsaWRhdGVTZXJ2aWNlQ29uZmlnKSh0aGlzLmdldENvbmZpZyhKLkNvbmZpZ1R5cGVzLlNlcnZpY2UsaikpKSxqLmpvYkNvbmZpZyYmKHRoaXMuX2pvYkNvbmZpZz0oMCxSLnZhbGlkYXRlSm9iQ29uZmlnKSh0aGlzLmdl''@;'; put 'put ''dENvbmZpZyhKLkNvbmZpZ1R5cGVzLkpvYixqKSkpLGouc3RyZWFtQ29uZmlnJiYodGhpcy5fc3RyZWFtQ29uZmlnPSgwLFIudmFsaWRhdGVTdHJlYW1Db25maWcpKHRoaXMuZ2V0Q29uZmlnKEouQ29uZmlnVHlwZXMuU3RyZWFtLGopKSksai50ZXN0Q29uZmlnJiYodGhpcy5fdGVzdENvbmZp''@;'; put 'put ''Zz0oMCxSLnZhbGlkYXRlVGVzdENvbmZpZykodGhpcy5nZXRDb25maWcoSi5Db25maWdUeXBlcy5UZXN0LGopKSksai5tYWNyb0ZvbGRlcnMmJmoubWFjcm9Gb2xkZXJzLmxlbmd0aCYmKHRoaXMuX21hY3JvRm9sZGVycz1qLm1hY3JvRm9sZGVycyksai5wcm9ncmFtRm9sZGVycyYmai5wcm9n''@;'; put 'put ''cmFtRm9sZGVycy5sZW5ndGgmJih0aGlzLl9wcm9ncmFtRm9sZGVycz1qLnByb2dyYW1Gb2xkZXJzKSxqLmJpbmFyeUZvbGRlcnMmJmouYmluYXJ5Rm9sZGVycy5sZW5ndGgmJih0aGlzLl9iaW5hcnlGb2xkZXJzPWouYmluYXJ5Rm9sZGVycyksai5zeW5jRGlyZWN0b3JpZXMmJmouc3luY0Rp''@;'; put 'put ''cmVjdG9yaWVzLmxlbmd0aCYmKHRoaXMuX3N5bmNEaXJlY3Rvcmllcz0oMCxSLnZhbGlkYXRlU3luY0RpcmVjdG9yaWVzKShqLnN5bmNEaXJlY3RvcmllcykpfWNhdGNoKFcpe3Rocm93IG5ldyBFcnJvcigiRXJyb3IgcGFyc2luZyB0YXJnZXQ6ICIuY29uY2F0KFcubWVzc2FnZSkpfX1yZXR1''@;'; put 'put ''cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJzZXJ2ZXJVcmwiLHtnZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmVyVXJsfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwic2VydmVyVHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXJ2ZXJUeXBlfSxlbnVtZXJhYmxlOiEx''@;'; put 'put ''LGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiaHR0cHNBZ2VudE9wdGlvbnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faHR0cHNBZ2VudE9wdGlvbnN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KHoucHJvdG90eXBlLCJhcHBMb2MiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwTG9jfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiZG9jQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2RvY0NvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImF1dGhDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0aENvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFi''@;'; put 'put ''bGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImF1dGhDb25maWdTYXM5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhDb25maWdTYXM5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3Rv''@;'; put 'put ''dHlwZSwiYnVpbGRDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVpbGRDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJkZXBsb3lDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fZGVwbG95Q29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwic2VydmljZUNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXJ2aWNlQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZp''@;'; put 'put ''Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiam9iQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2pvYkNvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUs''@;'; put 'put ''InN0cmVhbUNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJlYW1Db25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJtYWNyb0ZvbGRlcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fbWFjcm9Gb2xkZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwicHJvZ3JhbUZvbGRlcnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvZ3JhbUZvbGRlcnN9LGVudW1lcmFibGU6ITEsY29uZmln''@;'; put 'put ''dXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJiaW5hcnlGb2xkZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JpbmFyeUZvbGRlcnN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJv''@;'; put 'put ''dG90eXBlLCJjb250ZXh0TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZXh0TmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInNlcnZlck5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fc2VydmVyTmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInJlcG9zaXRvcnlOYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlOYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZp''@;'; put 'put ''Z3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwidGVzdENvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZXN0Q29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlw''@;'; put 'put ''ZSwic3luY0ZvbGRlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zeW5jRm9sZGVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwic3luY0RpcmVjdG9yaWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX3N5bmNEaXJlY3Rvcmllc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx6LnByb3RvdHlwZS50b0pzb249ZnVuY3Rpb24oail7dmFyIFYsRyxXO3ZvaWQgMD09PWomJihqPSEwKTt2YXIgVT17bmFtZTp0aGlzLm5hbWUsc2VydmVyVXJsOnRoaXMuc2VydmVyVXJsLHNlcnZl''@;'; put 'put ''clR5cGU6dGhpcy5zZXJ2ZXJUeXBlLGh0dHBzQWdlbnRPcHRpb25zOnRoaXMuaHR0cHNBZ2VudE9wdGlvbnMsYXBwTG9jOnRoaXMuYXBwTG9jLGRvY0NvbmZpZzp0aGlzLmRvY0NvbmZpZyxkZXBsb3lDb25maWc6dGhpcy5kZXBsb3lDb25maWd9O3JldHVybiEobnVsbD09PShWPXRoaXMubWFj''@;'; put 'put ''cm9Gb2xkZXJzKXx8dm9pZCAwPT09VikmJlYubGVuZ3RoJiYoVS5tYWNyb0ZvbGRlcnM9dGhpcy5tYWNyb0ZvbGRlcnMpLCEobnVsbD09PShHPXRoaXMucHJvZ3JhbUZvbGRlcnMpfHx2b2lkIDA9PT1HKSYmRy5sZW5ndGgmJihVLnByb2dyYW1Gb2xkZXJzPXRoaXMucHJvZ3JhbUZvbGRlcnMp''@;'; put 'put ''LCEobnVsbD09PShXPXRoaXMuYmluYXJ5Rm9sZGVycyl8fHZvaWQgMD09PVcpJiZXLmxlbmd0aCYmKFUuYmluYXJ5Rm9sZGVycz10aGlzLmJpbmFyeUZvbGRlcnMpLHRoaXMuYXV0aENvbmZpZyYmKFUuYXV0aENvbmZpZz10aGlzLmF1dGhDb25maWcpLHRoaXMuYXV0aENvbmZpZ1NhczkmJihV''@;'; put 'put ''LmF1dGhDb25maWdTYXM5PXRoaXMuYXV0aENvbmZpZ1NhczkpLHRoaXMuc3luY0RpcmVjdG9yaWVzP1Uuc3luY0RpcmVjdG9yaWVzPXRoaXMuc3luY0RpcmVjdG9yaWVzOmomJihVLnN5bmNEaXJlY3Rvcmllcz1bXSksdGhpcy5idWlsZENvbmZpZz9VLmJ1aWxkQ29uZmlnPXRoaXMuYnVpbGRD''@;'; put 'put ''b25maWc6aiYmKFUuYnVpbGRDb25maWc9e2luaXRQcm9ncmFtOiIiLHRlcm1Qcm9ncmFtOiIiLGJ1aWxkT3V0cHV0RmlsZU5hbWU6IiIuY29uY2F0KHRoaXMubmFtZSwiLnNhcyIpLGJ1aWxkT3V0cHV0Rm9sZGVyOiJzYXNqc2J1aWxkIixidWlsZFJlc3VsdHNGb2xkZXI6InNhc2pzcmVzdWx0''@;'; put 'put ''cyIsbWFjcm9WYXJzOnt9fSksdGhpcy5qb2JDb25maWc/VS5qb2JDb25maWc9dGhpcy5qb2JDb25maWc6aiYmKFUuam9iQ29uZmlnPXtqb2JGb2xkZXJzOltdLGluaXRQcm9ncmFtOiIiLHRlcm1Qcm9ncmFtOiIiLG1hY3JvVmFyczp7fX0pLHRoaXMuc2VydmljZUNvbmZpZz9VLnNlcnZpY2VD''@;'; put 'put ''b25maWc9dGhpcy5zZXJ2aWNlQ29uZmlnOmomJihVLnNlcnZpY2VDb25maWc9e3NlcnZpY2VGb2xkZXJzOltdLGluaXRQcm9ncmFtOiIiLHRlcm1Qcm9ncmFtOiIiLG1hY3JvVmFyczp7fX0pLHRoaXMuc3RyZWFtQ29uZmlnP1Uuc3RyZWFtQ29uZmlnPXRoaXMuc3RyZWFtQ29uZmlnOmomJihV''@;'; put 'put ''LnN0cmVhbUNvbmZpZz17c3RyZWFtV2ViRm9sZGVyOiIiLHN0cmVhbVdlYjohMSx3ZWJTb3VyY2VQYXRoOiIiLHN0cmVhbVNlcnZpY2VOYW1lOiIiLGFzc2V0UGF0aHM6W119KSx0aGlzLnRlc3RDb25maWc/VS50ZXN0Q29uZmlnPXRoaXMudGVzdENvbmZpZzpqJiYoVS50ZXN0Q29uZmlnPXtp''@;'; put 'put ''bml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixtYWNyb1ZhcnM6e30sdGVzdFNldFVwOiIiLHRlc3RUZWFyRG93bjoiIn0pLHRoaXMuc2VydmVyVHlwZT09PUkuU2VydmVyVHlwZS5TYXNWaXlhP1UuY29udGV4dE5hbWU9dGhpcy5jb250ZXh0TmFtZTp0aGlzLnNlcnZlclR5cGU9PT1JLlNl''@;'; put 'put ''cnZlclR5cGUuU2FzOSYmKFUuc2VydmVyTmFtZT10aGlzLnNlcnZlck5hbWUsVS5yZXBvc2l0b3J5TmFtZT10aGlzLnJlcG9zaXRvcnlOYW1lKSxVfSx6fSgpO0IuVGFyZ2V0PUV9LDY3ODE6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9faW1wb3J0RGVm''@;'; put 'put ''YXVsdHx8ZnVuY3Rpb24oUil7cmV0dXJuIFImJlIuX19lc01vZHVsZT9SOntkZWZhdWx0OlJ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi52YWxpZGF0ZVN5bmNEaXJlY3Rvcmllcz1CLnZhbGlkYXRlUmVwb3NpdG9yeU5hbWU9Qi52YWxpZGF0''@;'; put 'put ''ZVN5bmNGb2xkZXI9Qi52YWxpZGF0ZVNlcnZlck5hbWU9Qi52YWxpZGF0ZUNvbnRleHROYW1lPUIudmFsaWRhdGVTdHJlYW1Db25maWc9Qi52YWxpZGF0ZURlcGxveUNvbmZpZz1CLnZhbGlkYXRlSm9iQ29uZmlnPUIudmFsaWRhdGVUZXN0Q29uZmlnPUIudmFsaWRhdGVTZXJ2aWNlQ29uZmln''@;'; put 'put ''PUIudmFsaWRhdGVCdWlsZENvbmZpZz1CLnZhbGlkYXRlQXV0aENvbmZpZ1Nhczk9Qi52YWxpZGF0ZUF1dGhDb25maWc9Qi52YWxpZGF0ZURvY0NvbmZpZz1CLnZhbGlkYXRlQXBwTG9jPUIudmFsaWRhdGVIdHRwc0FnZW50T3B0aW9ucz1CLnZhbGlkYXRlU2VydmVyVXJsPUIudmFsaWRhdGVU''@;'; put 'put ''YXJnZXROYW1lPUIudmFsaWRhdGVTZXJ2ZXJUeXBlPXZvaWQgMDt2YXIgSj1LKEwoNDgxKSksST1MKDM5MDApO0IudmFsaWRhdGVTZXJ2ZXJUeXBlPWZ1bmN0aW9uKFIpe2lmKCFSKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzZXJ2ZXIgdHlwZTogYHNlcnZlclR5cGVgIGNhbm5vdCBiZSBu''@;'; put 'put ''dWxsIG9yIHVuZGVmaW5lZC4iKTtpZihSIT09SS5TZXJ2ZXJUeXBlLlNhczkmJlIhPT1JLlNlcnZlclR5cGUuU2FzVml5YSYmUiE9PUkuU2VydmVyVHlwZS5TYXNqcyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2VydmVyIHR5cGU6IFN1cHBvcnRlZCB2YWx1ZXMgZm9yICBgc2VydmVyVHlw''@;'; put 'put ''ZWAgYXJlICIuY29uY2F0KEkuU2VydmVyVHlwZS5TYXNWaXlhLCIsICIpLmNvbmNhdChJLlNlcnZlclR5cGUuU2FzOSwiIGFuZCAiKS5jb25jYXQoSS5TZXJ2ZXJUeXBlLlNhc2pzLCIuIikpO3JldHVybiBSfSxCLnZhbGlkYXRlVGFyZ2V0TmFtZT1mdW5jdGlvbihSKXtpZighUil0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkludmFsaWQgdGFyZ2V0IG5hbWU6IGBuYW1lYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKFIudHJpbSgpLmluY2x1ZGVzKCIgIikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRhcmdldCBuYW1lOiBgbmFtZWAgY2Fubm90IGluY2x1ZGUgc3Bh''@;'; put 'put ''Y2VzLiIpO2lmKCEvXlthLXpBLVowLTlcLV0rJC9pLnRlc3QoUikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRhcmdldCBuYW1lOiBgbmFtZWAgY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgZGFzaGVzLiIpO3JldHVybiBSfSxCLnZhbGlkYXRlU2VydmVy''@;'; put 'put ''VXJsPWZ1bmN0aW9uKFIpe2lmKG51bGw9PVImJihSPSIiKSwiIiE9PVImJiFKLmRlZmF1bHQuaXNIdHRwVXJpKFIpJiYhSi5kZWZhdWx0LmlzSHR0cHNVcmkoUikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciBVUkw6IGBzZXJ2ZXJVcmxgIHNob3VsZCBlaXRoZXIgYmUgYW4gZW1w''@;'; put 'put ''dHkgc3RyaW5nIG9yIGEgdmFsaWQgVVJMIG9mIHRoZSBmb3JtIGh0dHAocyk6Ly95b3VyLXNlcnZlci5jb20oOnBvcnQpLiIpO3JldHVybiBSfSxCLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnM9ZnVuY3Rpb24oUil7aWYoUil7aWYoIm9iamVjdCIhPXR5cGVvZiBSKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiSW52YWxpZCB2YWx1ZTogYGh0dHBzQWdlbnRPcHRpb25zYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IG9yIGFuIG9iamVjdCBvZiBgSHR0cHNBZ2VudE9wdGlvbnNgIik7aWYobnVsbD09Ui5hbGxvd0luc2VjdXJlUmVxdWVzdHMpUi5hbGxvd0luc2VjdXJlUmVxdWVzdHM9ITE7ZWxz''@;'; put 'put ''ZSBpZigiYm9vbGVhbiIhPXR5cGVvZiBSLmFsbG93SW5zZWN1cmVSZXF1ZXN0cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWU6IGBodHRwc0FnZW50T3B0aW9ucy5hbGxvd0luc2VjdXJlUmVxdWVzdHNgIHNob3VsZCBlaXRoZXIgYmUgYW4gZW1wdHkgb3IgYSBib29sZWFuIik7cmV0''@;'; put 'put ''dXJuInN0cmluZyIhPXR5cGVvZiBSLmNhUGF0aCYmKFIuY2FQYXRoPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBSLmtleVBhdGgmJihSLmtleVBhdGg9dm9pZCAwKSwic3RyaW5nIiE9dHlwZW9mIFIuY2VydFBhdGgmJihSLmNlcnRQYXRoPXZvaWQgMCksUn19LEIudmFsaWRhdGVBcHBMb2M9''@;'; put 'put ''ZnVuY3Rpb24oUil7aWYoIVIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFwcCBsb2NhdGlvbjogYGFwcExvY2AgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighUi5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFwcCBsb2NhdGlvbjog''@;'; put 'put ''YGFwcExvY2AgbXVzdCBzdGFydCB3aXRoIGEgYC9gLiIpO3JldHVybiBSfSxCLnZhbGlkYXRlRG9jQ29uZmlnPWZ1bmN0aW9uKFIpe2lmKFJ8fChSPXt9KSwiYm9vbGVhbiIhPXR5cGVvZiBSLmRpc3BsYXlNYWNyb0NvcmUmJihSLmRpc3BsYXlNYWNyb0NvcmU9dm9pZCAwKSwiYm9vbGVhbiIh''@;'; put 'put ''PXR5cGVvZiBSLmVuYWJsZUxpbmVhZ2UmJihSLmVuYWJsZUxpbmVhZ2U9dm9pZCAwKSwic3RyaW5nIiE9dHlwZW9mIFIub3V0RGlyZWN0b3J5JiYoUi5vdXREaXJlY3Rvcnk9dm9pZCAwKSwic3RyaW5nIj09dHlwZW9mIFIuZGF0YUNvbnRyb2xsZXJVcmwpe2lmKCIiIT09Ui5kYXRhQ29udHJv''@;'; put 'put ''bGxlclVybCYmIUouZGVmYXVsdC5pc0h0dHBVcmkoUi5kYXRhQ29udHJvbGxlclVybCkmJiFKLmRlZmF1bHQuaXNIdHRwc1VyaShSLmRhdGFDb250cm9sbGVyVXJsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGF0YSBDb250cm9sbGVyIFVybDogYGRhdGFDb250cm9sbGVyVXJsYCBzaG91''@;'; put 'put ''bGQgZWl0aGVyIGJlIGFuIGVtcHR5IHN0cmluZyBvciBhIHZhbGlkIFVSTCBvZiB0aGUgZm9ybSBodHRwKHMpOi8veW91ci1zZXJ2ZXIuY29tKDpwb3J0KS4iKX1lbHNlIFIuZGF0YUNvbnRyb2xsZXJVcmw9dm9pZCAwO3JldHVybiBSfSxCLnZhbGlkYXRlQXV0aENvbmZpZz1mdW5jdGlvbihS''@;'; put 'put ''KXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXV0aCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBSfSxCLnZhbGlkYXRlQXV0aENvbmZpZ1Nhczk9ZnVuY3Rpb24oUil7aWYoIVIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGF1dGgg''@;'; put 'put ''Y29uZmlnIGZvciBzYXM5OiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZighUi51c2VyTmFtZXx8IVIucGFzc3dvcmQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGF1dGggY29uZmlnIGZvciBzYXM5OiB1c2VyTmFtZSBhbmQgcGFzc3dvcmQgY2FuIG5vdCBiZSBlbXB0''@;'; put 'put ''eSIpO3JldHVybiBSfSxCLnZhbGlkYXRlQnVpbGRDb25maWc9ZnVuY3Rpb24oUixFKXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYnVpbGQgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gUi5idWlsZFJlc3VsdHNGb2xkZXJ8fChSLmJ1''@;'; put 'put ''aWxkUmVzdWx0c0ZvbGRlcj0ic2FzanNyZXN1bHRzIiksUi5idWlsZE91dHB1dEZvbGRlcnx8KFIuYnVpbGRPdXRwdXRGb2xkZXI9InNhc2pzYnVpbGQiKSxSLmJ1aWxkT3V0cHV0RmlsZU5hbWV8fChSLmJ1aWxkT3V0cHV0RmlsZU5hbWU9IiIuY29uY2F0KEUsIi5zYXMiKSksUi5pbml0UHJv''@;'; put 'put ''Z3JhbXx8KFIuaW5pdFByb2dyYW09IiIpLFIudGVybVByb2dyYW18fChSLnRlcm1Qcm9ncmFtPSIiKSxSLm1hY3JvVmFyc3x8KFIubWFjcm9WYXJzPXt9KSxSfSxCLnZhbGlkYXRlU2VydmljZUNvbmZpZz1mdW5jdGlvbihSKXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2Vydmlj''@;'; put 'put ''ZSBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBSLmluaXRQcm9ncmFtfHwoUi5pbml0UHJvZ3JhbT0iIiksUi50ZXJtUHJvZ3JhbXx8KFIudGVybVByb2dyYW09IiIpLFIuc2VydmljZUZvbGRlcnN8fChSLnNlcnZpY2VGb2xkZXJzPVtdKSxSLm1h''@;'; put 'put ''Y3JvVmFyc3x8KFIubWFjcm9WYXJzPXt9KSxSfSxCLnZhbGlkYXRlVGVzdENvbmZpZz1mdW5jdGlvbihSKXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdGVzdCBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBSLmluaXRQcm9ncmFtfHwo''@;'; put 'put ''Ui5pbml0UHJvZ3JhbT0iIiksUi50ZXJtUHJvZ3JhbXx8KFIudGVybVByb2dyYW09IiIpLFIubWFjcm9WYXJzfHwoUi5tYWNyb1ZhcnM9e30pLFIudGVzdFNldFVwfHwoUi50ZXN0U2V0VXA9IiIpLFIudGVzdFRlYXJEb3dufHwoUi50ZXN0VGVhckRvd249IiIpLFJ9LEIudmFsaWRhdGVKb2JD''@;'; put 'put ''b25maWc9ZnVuY3Rpb24oUil7aWYoIVIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGpvYiBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBSLmluaXRQcm9ncmFtfHwoUi5pbml0UHJvZ3JhbT0iIiksUi50ZXJtUHJvZ3JhbXx8KFIudGVybVByb2dy''@;'; put 'put ''YW09IiIpLFIuam9iRm9sZGVyc3x8KFIuam9iRm9sZGVycz1bXSksUi5tYWNyb1ZhcnN8fChSLm1hY3JvVmFycz17fSksUn0sQi52YWxpZGF0ZURlcGxveUNvbmZpZz1mdW5jdGlvbihSKXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGVwbG95IGNvbmZpZzogSlNPTiBjYW5ub3Qg''@;'; put 'put ''YmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFIuZGVwbG95U2VydmljZVBhY2s9ISFSLmRlcGxveVNlcnZpY2VQYWNrLFIuZGVwbG95U2NyaXB0c3x8KFIuZGVwbG95U2NyaXB0cz1bXSksUn0sQi52YWxpZGF0ZVN0cmVhbUNvbmZpZz1mdW5jdGlvbihSKXtpZighUil0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoITAhPT1SLnN0cmVhbVdlYiYmITEhPT1SLnN0cmVhbVdlYil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHN0cmVhbVdlYmAgY2Fubm90IGJl''@;'; put 'put ''IGEgbm9uLWJvb2xlYW4gdmFsdWUuIik7aWYoUi5zdHJlYW1XZWImJiFSLnN0cmVhbVdlYkZvbGRlcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyZWFtIGNvbmZpZzogYHN0cmVhbVdlYkZvbGRlcmAgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGBzdHJlYW1X''@;'; put 'put ''ZWJgIGlzIHRydWUuIik7aWYoUi5zdHJlYW1XZWImJiFSLndlYlNvdXJjZVBhdGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmVhbSBjb25maWc6IGB3ZWJTb3VyY2VQYXRoYCBjYW5ub3QgYmUgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBSLnN0cmVhbUxvZ28mJiJz''@;'; put 'put ''dHJpbmciIT10eXBlb2YgUi5zdHJlYW1Mb2dvJiYoUi5zdHJlYW1Mb2dvPXZvaWQgMCksUi5hc3NldFBhdGhzfHwoUi5hc3NldFBhdGhzPVtdKSxSLnN0cmVhbVNlcnZpY2VOYW1lfHwoUi5zdHJlYW1TZXJ2aWNlTmFtZT0iY2xpY2ttZSIpLFJ9LEIudmFsaWRhdGVDb250ZXh0TmFtZT1mdW5j''@;'; put 'put ''dGlvbihSLEUpe3JldHVybiBFIT09SS5TZXJ2ZXJUeXBlLlNhc1ZpeWF8fFI/UjoiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0In0sQi52YWxpZGF0ZVNlcnZlck5hbWU9ZnVuY3Rpb24oUixFKXtyZXR1cm4gRSE9PUkuU2VydmVyVHlwZS5TYXM5fHxSP1I6IlNBU0FwcCJ9LEIu''@;'; put 'put ''dmFsaWRhdGVTeW5jRm9sZGVyPWZ1bmN0aW9uKFIpe2lmKCJzdHJpbmciPT10eXBlb2YgUiYmUilyZXR1cm4gUn0sQi52YWxpZGF0ZVJlcG9zaXRvcnlOYW1lPWZ1bmN0aW9uKFIsRSl7cmV0dXJuIEUhPT1JLlNlcnZlclR5cGUuU2FzOXx8Uj9SOiJGb3VuZGF0aW9uIn0sQi52YWxpZGF0ZVN5''@;'; put 'put ''bmNEaXJlY3Rvcmllcz1mdW5jdGlvbihSKXtpZighUil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3luY0RpcmVjdG9yaWVzIGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFIuZm9yRWFjaChmdW5jdGlvbihFKXtpZighRS5sb2NhbHx8IUUucmVt''@;'; put 'put ''b3RlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzeW5jRGlyZWN0b3J5IGNvbmZpZzogdmFsdWVzIG9mIHByb3BlcnR5ICdsb2NhbCcgYW5kICdyZW1vdGUgY2FuIG5vdCBiZSBlbXB0eSBvciB1bmRlZmluZWQiKX0pLFJ9fSwyOTI3OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IEs9TCg4NzY0KS5CdWZmZXIsSj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJkUuX19lc01vZHVsZT9FOntkZWZhdWx0OkV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5kZWNvZGVGcm9tQmFzZTY0''@;'; put 'put ''PUIuZW5jb2RlVG9CYXNlNjQ9dm9pZCAwO3ZhciBJPUooTCg1ODM1KSksUj0ie3Nhc2pzX2VuY29kZWR9IjtCLmVuY29kZVRvQmFzZTY0PWZ1bmN0aW9uKEUpe3ZhciB6PUkuZGVmYXVsdC5yYW5kb21CeXRlcygxMDApLnRvU3RyaW5nKCJoZXgiKSxqPUsuZnJvbSh6K0UpLnRvU3RyaW5nKCJi''@;'; put 'put ''YXNlNjQiKTtyZXR1cm4gUitqfSxCLmRlY29kZUZyb21CYXNlNjQ9ZnVuY3Rpb24oRSl7cmV0dXJuIEUuc3RhcnRzV2l0aChSKT8oRT1FLnJlcGxhY2UoL157c2FzanNfZW5jb2RlZH0vLCIiKSxLLmZyb20oRSwiYmFzZTY0IikudG9TdHJpbmcoKS5zdWJzdHJpbmcoMjAwKSk6RX19LDU4MToo''@;'; put 'put ''SCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5ieXRlc1RvU2l6ZT12b2lkIDAsQi5ieXRlc1RvU2l6ZT1mdW5jdGlvbihMLEssSil7aWYodm9pZCAwPT09SyYmKEs9MSksdm9pZCAwPT09SiYmKEo9MTA5OTUxMTYy''@;'; put 'put ''Nzc3NiksMD09PUwpcmV0dXJuIjAgQiI7TD1MPko/SjpMO3ZhciBJPUs8MD8wOkssUj1NYXRoLmZsb29yKE1hdGgubG9nKEwpL01hdGgubG9nKDEwMjQpKTtyZXR1cm4oTC9NYXRoLnBvdygxMDI0LFIpKS50b0ZpeGVkKEkpKyIgIitbIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdW1JdfX0sODY1''@;'; put 'put ''MzooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5jaHVuaz12b2lkIDAsQi5jaHVuaz1mdW5jdGlvbihMLEspe3JldHVybiB2b2lkIDA9PT1LJiYoSz0yMjApLEwubGVuZ3RoPD1LP1tMXTooTC5tYXRjaChuZXcg''@;'; put 'put ''UmVnRXhwKCIuezEsIitLKyJ9IiwiZyIpKXx8W10pLmZpbHRlcihmdW5jdGlvbihKKXtyZXR1cm4hIUp9KX19LDY0NTc6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEw9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKEosSSl7dmFyIFI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bCYmSltTeW1ib2wuaXRlcmF0b3JdO2lmKCFSKXJldHVybiBKO3ZhciBFLHosaj1SLmNhbGwoSiksVj1bXTt0cnl7Zm9yKDsodm9pZCAwPT09SXx8SS0tID4wKSYmIShFPWoubmV4dCgpKS5kb25lOylWLnB1c2goRS52YWx1ZSl9Y2F0Y2goRyl7ej17ZXJyb3I6R319ZmluYWxseXt0cnl7RSYm''@;'; put 'put ''IUUuZG9uZSYmKFI9ai5yZXR1cm4pJiZSLmNhbGwoail9ZmluYWxseXtpZih6KXRocm93IHouZXJyb3J9fXJldHVybiBWfSxLPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oSixJLFIpe2lmKFJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgRSx6PTAsaj1JLmxlbmd0''@;'; put 'put ''aDt6PGo7eisrKSFFJiZ6IGluIEl8fChFfHwoRT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChJLDAseikpLEVbel09SVt6XSk7cmV0dXJuIEouY29uY2F0KEV8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEkpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2''@;'; put 'put ''YWx1ZTohMH0pLEIuZGlmZj12b2lkIDAsQi5kaWZmPWZ1bmN0aW9uKEosSSl7dmFyIFI9Si5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB6PyFKU09OLnN0cmluZ2lmeShJKS5pbmNsdWRlcyhKU09OLnN0cmluZ2lmeSh6KSk6IUkuaW5jbHVkZXMoeil9KSxFPUku''@;'; put 'put ''ZmlsdGVyKGZ1bmN0aW9uKHope3JldHVybiJvYmplY3QiPT10eXBlb2Ygej8hSlNPTi5zdHJpbmdpZnkoSikuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkoeikpOiFKLmluY2x1ZGVzKHopfSk7cmV0dXJuIEsoSyhbXSxMKFIpLCExKSxMKEUpLCExKX19LDE1Mjk6KEgsQik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2V0RXhlY3V0b3JQYXRoPXZvaWQgMDt2YXIgTD17U0FTVklZQToiL1NBU0pvYkV4ZWN1dGlvbiIsU0FTOToiL1NBU1N0b3JlZFByb2Nlc3MvZG8ifTtCLmdldEV4ZWN1dG9yUGF0aD1mdW5jdGlv''@;'; put 'put ''bihLKXtyZXR1cm4gSz8oSz1LLnRvVXBwZXJDYXNlKCksTFtLXXx8IiIpOiIifX0sMzMxNjooSCxCLEwpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmdldFRyZWVFeGFtcGxlPUIuaXNGaWxlVHJlZT12b2lkIDA7dmFy''@;'; put 'put ''IEs9TCgzOTAwKTtCLmlzRmlsZVRyZWU9ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJkUubWVtYmVycyYmQXJyYXkuaXNBcnJheShFLm1lbWJlcnMpJiYwPT09RS5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbih6KXtyZXR1cm4hSih6KSYmIUkoeikmJiFSKHopfSkubGVuZ3RofTt2YXIgSj1mdW5jdGlv''@;'; put 'put ''bihFKXtyZXR1cm4gRSYmInN0cmluZyI9PXR5cGVvZiBFLm5hbWUmJkUudHlwZT09PUsuTWVtYmVyVHlwZS5zZXJ2aWNlJiYic3RyaW5nIj09dHlwZW9mIEUuY29kZX0sST1mdW5jdGlvbihFKXtyZXR1cm4gRSYmInN0cmluZyI9PXR5cGVvZiBFLm5hbWUmJkUudHlwZT09PUsuTWVtYmVyVHlw''@;'; put 'put ''ZS5maWxlJiYic3RyaW5nIj09dHlwZW9mIEUuY29kZX0sUj1mdW5jdGlvbihFKXtyZXR1cm4gRSYmInN0cmluZyI9PXR5cGVvZiBFLm5hbWUmJkUudHlwZT09PUsuTWVtYmVyVHlwZS5mb2xkZXImJkUubWVtYmVycyYmQXJyYXkuaXNBcnJheShFLm1lbWJlcnMpJiYwPT09RS5tZW1iZXJzLmZp''@;'; put 'put ''bHRlcihmdW5jdGlvbih6KXtyZXR1cm4hSih6KSYmIUkoeikmJiFSKHopfSkubGVuZ3RofTtCLmdldFRyZWVFeGFtcGxlPWZ1bmN0aW9uKCl7cmV0dXJue21lbWJlcnM6W3tuYW1lOiJqb2JzIix0eXBlOksuTWVtYmVyVHlwZS5mb2xkZXIsbWVtYmVyczpbe25hbWU6ImV4dHJhY3QiLHR5cGU6''@;'; put 'put ''Sy5NZW1iZXJUeXBlLmZvbGRlcixtZW1iZXJzOlt7bmFtZToibWFrZWRhdGExIix0eXBlOksuTWVtYmVyVHlwZS5zZXJ2aWNlLGNvZGU6IiVwdXQgSGVsbG8gV29ybGQhOyJ9XX1dfV19fX0sNjI2NjpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRoaXMuX19jcmVh''@;'; put 'put ''dGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihXLFUscSx0ZSl7dm9pZCAwPT09dGUmJih0ZT1xKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVyx0ZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVVtxXX19KX06ZnVuY3Rpb24oVyxVLHEsdGUpe3ZvaWQgMD09''@;'; put 'put ''PXRlJiYodGU9cSksV1t0ZV09VVtxXX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKFcsVSl7Zm9yKHZhciBxIGluIFcpImRlZmF1bHQiPT09cXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUscSl8fEsoVSxXLHEpfTtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5jaHVuaz1CLmRpZmY9Qi5ieXRlc1RvU2l6ZT1CLmdldEV4ZWN1dG9yUGF0aD1CLmRlY29kZUZyb21CYXNlNjQ9Qi5lbmNvZGVUb0Jhc2U2ND1CLnVybE9yaWdpbj1CLmdlbmVyYXRlUGF0aEZvclNhcz1CLmdldE1hY3Jvc1BhdGg9''@;'; put 'put ''Qi5lc2NhcGVXaW5TbGFzaGVzPUIuaXNMaW51eD1CLmlzV2luZG93cz1CLnVuaXFBcnJheT1CLmFzeW5jRm9yRWFjaD1CLnV1aWR2ND12b2lkIDA7dmFyIEk9TCgxMTMxKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwidXVpZHY0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSS51dWlkdjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImFzeW5jRm9yRWFjaCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkuYXN5bmNGb3JFYWNofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJ1bmlxQXJyYXkiLHtlbnVtZXJhYmxlOiEwLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBJLnVuaXFBcnJheX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiaXNXaW5kb3dzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5pc1dpbmRvd3N9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImlzTGludXgiLHtlbnVtZXJhYmxl''@;'; put 'put ''OiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmlzTGludXh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImVzY2FwZVdpblNsYXNoZXMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmVzY2FwZVdpblNsYXNoZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIs''@;'; put 'put ''ImdldE1hY3Jvc1BhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBJLmdldE1hY3Jvc1BhdGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImdlbmVyYXRlUGF0aEZvclNhcyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEkuZ2VuZXJhdGVQ''@;'; put 'put ''YXRoRm9yU2FzfX0pLEooTCgzMzE2KSxCKTt2YXIgUj1MKDk2NTIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJ1cmxPcmlnaW4iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBSLnVybE9yaWdpbn19KTt2YXIgRT1MKDI5MjcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShC''@;'; put 'put ''LCJlbmNvZGVUb0Jhc2U2NCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuZW5jb2RlVG9CYXNlNjR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEIsImRlY29kZUZyb21CYXNlNjQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBFLmRlY29kZUZy''@;'; put 'put ''b21CYXNlNjR9fSk7dmFyIHo9TCgxNTI5KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiZ2V0RXhlY3V0b3JQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gei5nZXRFeGVjdXRvclBhdGh9fSk7dmFyIGo9TCg1ODEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJi''@;'; put 'put ''eXRlc1RvU2l6ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGouYnl0ZXNUb1NpemV9fSk7dmFyIFY9TCg2NDU3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiZGlmZiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFYuZGlmZn19KTt2YXIgRz1M''@;'; put 'put ''KDg2NTMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJjaHVuayIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcuY2h1bmt9fSl9LDk2NTI6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIu''@;'; put 'put ''dXJsT3JpZ2luPXZvaWQgMCxCLnVybE9yaWdpbj1mdW5jdGlvbihMKXtpZigiIj09PUwpcmV0dXJuIEw7dmFyIEs7dHJ5e0s9bmV3IFVSTChMKS5vcmlnaW59Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFVSTC4iKX1yZXR1cm4gS319LDExMzE6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgSz1MKDQxNTUpLEo9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHosaixWLEcpe3JldHVybiBuZXcoVnx8KFY9UHJvbWlzZSkpKGZ1bmN0aW9uKFcsVSl7ZnVuY3Rpb24gcShpZSl7dHJ5e25lKEcubmV4dChpZSkpfWNhdGNoKGxlKXtVKGxlKX19ZnVuY3Rpb24g''@;'; put 'put ''dGUoaWUpe3RyeXtuZShHLnRocm93KGllKSl9Y2F0Y2gobGUpe1UobGUpfX1mdW5jdGlvbiBuZShpZSl7dmFyIGxlO2llLmRvbmU/VyhpZS52YWx1ZSk6KGxlPWllLnZhbHVlLGxlIGluc3RhbmNlb2YgVj9sZTpuZXcgVihmdW5jdGlvbihkZSl7ZGUobGUpfSkpLnRoZW4ocSx0ZSl9bmUoKEc9''@;'; put 'put ''Ry5hcHBseSh6LGp8fFtdKSkubmV4dCgpKX0pfSxJPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHosail7dmFyIFYsRyxXLFUscT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZXWzBdKXRocm93IFdbMV07cmV0dXJuIFdbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4g''@;'; put 'put ''VT17bmV4dDp0ZSgwKSx0aHJvdzp0ZSgxKSxyZXR1cm46dGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihVW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFU7ZnVuY3Rpb24gdGUobmUpe3JldHVybiBmdW5jdGlvbihpZSl7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KGxlKXtpZihWKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3E7KXRyeXtpZihWPTEsRyYmKFc9MiZsZVswXT9HLnJldHVybjpsZVswXT9HLnRocm93fHwoKFc9Ry5yZXR1cm4pJiZXLmNhbGwoRyksMCk6Ry5uZXh0KSYmIShXPVcu''@;'; put 'put ''Y2FsbChHLGxlWzFdKSkuZG9uZSlyZXR1cm4gVztzd2l0Y2goRz0wLFcmJihsZT1bMiZsZVswXSxXLnZhbHVlXSksbGVbMF0pe2Nhc2UgMDpjYXNlIDE6Vz1sZTticmVhaztjYXNlIDQ6cmV0dXJuIHEubGFiZWwrKyx7dmFsdWU6bGVbMV0sZG9uZTohMX07Y2FzZSA1OnEubGFiZWwrKyxHPWxl''@;'; put 'put ''WzFdLGxlPVswXTtjb250aW51ZTtjYXNlIDc6bGU9cS5vcHMucG9wKCkscS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVz0oVz1xLnRyeXMpLmxlbmd0aD4wJiZXW1cubGVuZ3RoLTFdKXx8NiE9PWxlWzBdJiYyIT09bGVbMF0pKXtxPTA7Y29udGludWV9aWYoMz09PWxlWzBd''@;'; put 'put ''JiYoIVd8fGxlWzFdPldbMF0mJmxlWzFdPFdbM10pKXtxLmxhYmVsPWxlWzFdO2JyZWFrfWlmKDY9PT1sZVswXSYmcS5sYWJlbDxXWzFdKXtxLmxhYmVsPVdbMV0sVz1sZTticmVha31pZihXJiZxLmxhYmVsPFdbMl0pe3EubGFiZWw9V1syXSxxLm9wcy5wdXNoKGxlKTticmVha31XWzJdJiZx''@;'; put 'put ''Lm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWV9bGU9ai5jYWxsKHoscSl9Y2F0Y2goZGUpe2xlPVs2LGRlXSxHPTB9ZmluYWxseXtWPVc9MH1pZig1JmxlWzBdKXRocm93IGxlWzFdO3JldHVybnt2YWx1ZTpsZVswXT9sZVsxXTp2b2lkIDAsZG9uZTohMH19KFtuZSxpZV0pfX19LFI9''@;'; put 'put ''dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHope3JldHVybiB6JiZ6Ll9fZXNNb2R1bGU/ejp7ZGVmYXVsdDp6fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2VuZXJhdGVQYXRoRm9yU2FzPUIuZ2V0TWFjcm9zUGF0aD1C''@;'; put 'put ''LmVzY2FwZVdpblNsYXNoZXM9Qi5pc0xpbnV4PUIuaXNXaW5kb3dzPUIudW5pcUFycmF5PUIudXVpZHY0PUIuYXN5bmNGb3JFYWNoPXZvaWQgMDt2YXIgRT1SKEwoMjUyMCkpO0IuYXN5bmNGb3JFYWNoPWZ1bmN0aW9uKHosail7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIFY7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihHKXtzd2l0Y2goRy5sYWJlbCl7Y2FzZSAwOlY9MCxHLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBWPHoubGVuZ3RoP1s0LGooeltWXSxWLHopXTpbMyw0XTtjYXNlIDI6Ry5zZW50KCksRy5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gVisrLFsz''@;'; put 'put ''LDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0sQi51dWlkdjQ9ZnVuY3Rpb24oKXtyZXR1cm4ieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Ii5yZXBsYWNlKC9beHldL2csZnVuY3Rpb24oeil7dmFyIGo9MTYqTWF0aC5yYW5kb20oKXwwO3JldHVybigieCI9PXo/ajozJmp8''@;'; put 'put ''OCkudG9TdHJpbmcoMTYpfSl9LEIudW5pcUFycmF5PWZ1bmN0aW9uKHope3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoeikpfSxCLmlzV2luZG93cz1mdW5jdGlvbigpe3JldHVybiJ3aW4zMiI9PT1LLnBsYXRmb3JtfSxCLmlzTGludXg9ZnVuY3Rpb24oKXtyZXR1cm4ibGludXgiPT09Sy5w''@;'; put 'put ''bGF0Zm9ybX0sQi5lc2NhcGVXaW5TbGFzaGVzPWZ1bmN0aW9uKHope3JldHVybigwLEIuaXNXaW5kb3dzKSgpP3oucmVwbGFjZSgvXFwvZywiXFxcXCIpOnp9LEIuZ2V0TWFjcm9zUGF0aD1mdW5jdGlvbigpe3JldHVybiBFLmRlZmF1bHQuam9pbigiLyIsIi4uIiwibWFjcm9zIil9LEIuZ2Vu''@;'; put 'put ''ZXJhdGVQYXRoRm9yU2FzPWZ1bmN0aW9uKHope3JldHVybiB6LnJlcGxhY2UoL1xcL2csIi8iKX19LDk4MDk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUI7Sy5iaWdudW09TCg0NTkwKSxLLmRlZmluZT1MKDI1MDApLmRlZmluZSxLLmJhc2U9TCgxOTc5KSxLLmNvbnN0YW50cz1M''@;'; put 'put ''KDY4MjYpLEsuZGVjb2RlcnM9TCg4MzA3KSxLLmVuY29kZXJzPUwoNjU3OSl9LDI1MDA6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNjU3OSksSj1MKDgzMDcpLEk9TCg1NzE3KTtmdW5jdGlvbiBSKEUseil7dGhpcy5uYW1lPUUsdGhpcy5ib2R5PXosdGhpcy5kZWNvZGVycz17''@;'; put 'put ''fSx0aGlzLmVuY29kZXJzPXt9fUIuZGVmaW5lPWZ1bmN0aW9uKEUseil7cmV0dXJuIG5ldyBSKEUseil9LFIucHJvdG90eXBlLl9jcmVhdGVOYW1lZD1mdW5jdGlvbihFKXtjb25zdCB6PXRoaXMubmFtZTtmdW5jdGlvbiBqKFYpe3RoaXMuX2luaXROYW1lZChWLHopfXJldHVybiBJKGosRSks''@;'; put 'put ''ai5wcm90b3R5cGUuX2luaXROYW1lZD1mdW5jdGlvbihWLEcpe0UuY2FsbCh0aGlzLFYsRyl9LG5ldyBqKHRoaXMpfSxSLnByb3RvdHlwZS5fZ2V0RGVjb2Rlcj1mdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShFPUV8fCJkZXIiKXx8KHRoaXMuZGVjb2Rl''@;'; put 'put ''cnNbRV09dGhpcy5fY3JlYXRlTmFtZWQoSltFXSkpLHRoaXMuZGVjb2RlcnNbRV19LFIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihFLHosail7cmV0dXJuIHRoaXMuX2dldERlY29kZXIoeikuZGVjb2RlKEUsail9LFIucHJvdG90eXBlLl9nZXRFbmNvZGVyPWZ1bmN0aW9uKEUpe3JldHVy''@;'; put 'put ''biB0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KEU9RXx8ImRlciIpfHwodGhpcy5lbmNvZGVyc1tFXT10aGlzLl9jcmVhdGVOYW1lZChLW0VdKSksdGhpcy5lbmNvZGVyc1tFXX0sUi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEUseixqKXtyZXR1cm4gdGhpcy5fZ2V0RW5jb2Rlcih6''@;'; put 'put ''KS5lbmNvZGUoRSxqKX19LDY2MjU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNTcxNyksSj1MKDg0NjUpLmIsST1MKDIzOTkpLkJ1ZmZlcjtmdW5jdGlvbiBSKHosail7Si5jYWxsKHRoaXMsaiksSS5pc0J1ZmZlcih6KT8odGhpcy5iYXNlPXosdGhpcy5vZmZzZXQ9MCx0aGlz''@;'; put 'put ''Lmxlbmd0aD16Lmxlbmd0aCk6dGhpcy5lcnJvcigiSW5wdXQgbm90IEJ1ZmZlciIpfWZ1bmN0aW9uIEUoeixqKXtpZihBcnJheS5pc0FycmF5KHopKXRoaXMubGVuZ3RoPTAsdGhpcy52YWx1ZT16Lm1hcChmdW5jdGlvbihWKXtyZXR1cm4gRS5pc0VuY29kZXJCdWZmZXIoVil8fChWPW5ldyBF''@;'; put 'put ''KFYsaikpLHRoaXMubGVuZ3RoKz1WLmxlbmd0aCxWfSx0aGlzKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2Ygeil7aWYoISgwPD16JiZ6PD0yNTUpKXJldHVybiBqLmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT16LHRoaXMubGVuZ3RoPTF9ZWxzZSBp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIHopdGhpcy52YWx1ZT16LHRoaXMubGVuZ3RoPUkuYnl0ZUxlbmd0aCh6KTtlbHNle2lmKCFJLmlzQnVmZmVyKHopKXJldHVybiBqLmVycm9yKCJVbnN1cHBvcnRlZCB0eXBlOiAiK3R5cGVvZiB6KTt0aGlzLnZhbHVlPXosdGhpcy5sZW5ndGg9ei5sZW5ndGh9''@;'; put 'put ''fUsoUixKKSxCLkM9UixSLmlzRGVjb2RlckJ1ZmZlcj1mdW5jdGlvbih6KXtyZXR1cm4geiBpbnN0YW5jZW9mIFJ8fCJvYmplY3QiPT10eXBlb2YgeiYmSS5pc0J1ZmZlcih6LmJhc2UpJiYiRGVjb2RlckJ1ZmZlciI9PT16LmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2Ygei5v''@;'; put 'put ''ZmZzZXQmJiJudW1iZXIiPT10eXBlb2Ygei5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB6LnNhdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB6LnJlc3RvcmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB6LmlzRW1wdHkmJiJmdW5jdGlvbiI9PXR5cGVvZiB6LnJlYWRVSW50OCYmImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIHouc2tpcCYmImZ1bmN0aW9uIj09dHlwZW9mIHoucmF3fSxSLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7cmV0dXJue29mZnNldDp0aGlzLm9mZnNldCxyZXBvcnRlcjpKLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcyl9fSxSLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHop''@;'; put 'put ''e2NvbnN0IGo9bmV3IFIodGhpcy5iYXNlKTtyZXR1cm4gai5vZmZzZXQ9ei5vZmZzZXQsai5sZW5ndGg9dGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQ9ei5vZmZzZXQsSi5wcm90b3R5cGUucmVzdG9yZS5jYWxsKHRoaXMsei5yZXBvcnRlciksan0sUi5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLm9mZnNldD09PXRoaXMubGVuZ3RofSxSLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oeil7cmV0dXJuIHRoaXMub2Zmc2V0KzE8PXRoaXMubGVuZ3RoP3RoaXMuYmFzZS5yZWFkVUludDgodGhpcy5vZmZzZXQrKywhMCk6dGhpcy5lcnJvcih6fHwiRGVjb2Rl''@;'; put 'put ''ckJ1ZmZlciBvdmVycnVuIil9LFIucHJvdG90eXBlLnNraXA9ZnVuY3Rpb24oeixqKXtpZighKHRoaXMub2Zmc2V0K3o8PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5lcnJvcihqfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIik7Y29uc3QgVj1uZXcgUih0aGlzLmJhc2UpO3JldHVybiBWLl9y''@;'; put 'put ''ZXBvcnRlclN0YXRlPXRoaXMuX3JlcG9ydGVyU3RhdGUsVi5vZmZzZXQ9dGhpcy5vZmZzZXQsVi5sZW5ndGg9dGhpcy5vZmZzZXQreix0aGlzLm9mZnNldCs9eixWfSxSLnByb3RvdHlwZS5yYXc9ZnVuY3Rpb24oeil7cmV0dXJuIHRoaXMuYmFzZS5zbGljZSh6P3oub2Zmc2V0OnRoaXMub2Zm''@;'; put 'put ''c2V0LHRoaXMubGVuZ3RoKX0sQi5SPUUsRS5pc0VuY29kZXJCdWZmZXI9ZnVuY3Rpb24oeil7cmV0dXJuIHogaW5zdGFuY2VvZiBFfHwib2JqZWN0Ij09dHlwZW9mIHomJiJFbmNvZGVyQnVmZmVyIj09PXouY29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiB6Lmxlbmd0aCYmImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIHouam9pbn0sRS5wcm90b3R5cGUuam9pbj1mdW5jdGlvbih6LGope3JldHVybiB6fHwoej1JLmFsbG9jKHRoaXMubGVuZ3RoKSksanx8KGo9MCksMD09PXRoaXMubGVuZ3RofHwoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKT90aGlzLnZhbHVlLmZvckVhY2goZnVu''@;'; put 'put ''Y3Rpb24oVil7Vi5qb2luKHosaiksais9Vi5sZW5ndGh9KTooIm51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP3pbal09dGhpcy52YWx1ZToic3RyaW5nIj09dHlwZW9mIHRoaXMudmFsdWU/ei53cml0ZSh0aGlzLnZhbHVlLGopOkkuaXNCdWZmZXIodGhpcy52YWx1ZSkmJnRoaXMudmFsdWUu''@;'; put 'put ''Y29weSh6LGopLGorPXRoaXMubGVuZ3RoKSksen19LDE5Nzk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUI7Sy5SZXBvcnRlcj1MKDg0NjUpLmIsSy5EZWNvZGVyQnVmZmVyPUwoNjYyNSkuQyxLLkVuY29kZXJCdWZmZXI9TCg2NjI1KS5SLEsuTm9kZT1MKDE5NDkpfSwxOTQ5OihI''@;'; put 'put ''LEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDg0NjUpLmIsSj1MKDY2MjUpLlIsST1MKDY2MjUpLkMsUj1MKDk3NDYpLEU9WyJzZXEiLCJzZXFvZiIsInNldCIsInNldG9mIiwib2JqaWQiLCJib29sIiwiZ2VudGltZSIsInV0Y3RpbWUiLCJudWxsXyIsImVudW0iLCJpbnQiLCJvYmpE''@;'; put 'put ''ZXNjIiwiYml0c3RyIiwiYm1wc3RyIiwiY2hhcnN0ciIsImdlbnN0ciIsImdyYXBoc3RyIiwiaWE1c3RyIiwiaXNvNjQ2c3RyIiwibnVtc3RyIiwib2N0c3RyIiwicHJpbnRzdHIiLCJ0NjFzdHIiLCJ1bmlzdHIiLCJ1dGY4c3RyIiwidmlkZW9zdHIiXSx6PVsia2V5Iiwib2JqIiwidXNlIiwi''@;'; put 'put ''b3B0aW9uYWwiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiZGVmIiwiY2hvaWNlIiwiYW55IiwiY29udGFpbnMiXS5jb25jYXQoRSk7ZnVuY3Rpb24gaihHLFcsVSl7Y29uc3QgcT17fTt0aGlzLl9iYXNlU3RhdGU9cSxxLm5hbWU9VSxxLmVuYz1HLHEucGFyZW50PVd8fG51bGwscS5jaGlsZHJl''@;'; put 'put ''bj1udWxsLHEudGFnPW51bGwscS5hcmdzPW51bGwscS5yZXZlcnNlQXJncz1udWxsLHEuY2hvaWNlPW51bGwscS5vcHRpb25hbD0hMSxxLmFueT0hMSxxLm9iaj0hMSxxLnVzZT1udWxsLHEudXNlRGVjb2Rlcj1udWxsLHEua2V5PW51bGwscS5kZWZhdWx0PW51bGwscS5leHBsaWNpdD1udWxs''@;'; put 'put ''LHEuaW1wbGljaXQ9bnVsbCxxLmNvbnRhaW5zPW51bGwscS5wYXJlbnR8fChxLmNoaWxkcmVuPVtdLHRoaXMuX3dyYXAoKSl9SC5leHBvcnRzPWo7Y29uc3QgVj1bImVuYyIsInBhcmVudCIsImNoaWxkcmVuIiwidGFnIiwiYXJncyIsInJldmVyc2VBcmdzIiwiY2hvaWNlIiwib3B0aW9uYWwi''@;'; put 'put ''LCJhbnkiLCJvYmoiLCJ1c2UiLCJhbHRlcmVkVXNlIiwia2V5IiwiZGVmYXVsdCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJjb250YWlucyJdO2oucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7Y29uc3QgRz10aGlzLl9iYXNlU3RhdGUsVz17fTtWLmZvckVhY2goZnVuY3Rpb24ocSl7V1tx''@;'; put 'put ''XT1HW3FdfSk7Y29uc3QgVT1uZXcgdGhpcy5jb25zdHJ1Y3RvcihXLnBhcmVudCk7cmV0dXJuIFUuX2Jhc2VTdGF0ZT1XLFV9LGoucHJvdG90eXBlLl93cmFwPWZ1bmN0aW9uKCl7Y29uc3QgRz10aGlzLl9iYXNlU3RhdGU7ei5mb3JFYWNoKGZ1bmN0aW9uKFcpe3RoaXNbV109ZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCBVPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBHLmNoaWxkcmVuLnB1c2goVSksVVtXXS5hcHBseShVLGFyZ3VtZW50cyl9fSx0aGlzKX0sai5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oRyl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7UihudWxsPT09Vy5wYXJl''@;'; put 'put ''bnQpLEcuY2FsbCh0aGlzKSxXLmNoaWxkcmVuPVcuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKFUpe3JldHVybiBVLl9iYXNlU3RhdGUucGFyZW50PT09dGhpc30sdGhpcyksUi5lcXVhbChXLmNoaWxkcmVuLmxlbmd0aCwxLCJSb290IG5vZGUgY2FuIGhhdmUgb25seSBvbmUgY2hpbGQiKX0s''@;'; put 'put ''ai5wcm90b3R5cGUuX3VzZUFyZ3M9ZnVuY3Rpb24oRyl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGUsVT1HLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3J9LHRoaXMpO0c9Ry5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIShxIGluc3RhbmNl''@;'; put 'put ''b2YgdGhpcy5jb25zdHJ1Y3Rvcil9LHRoaXMpLDAhPT1VLmxlbmd0aCYmKFIobnVsbD09PVcuY2hpbGRyZW4pLFcuY2hpbGRyZW49VSxVLmZvckVhY2goZnVuY3Rpb24ocSl7cS5fYmFzZVN0YXRlLnBhcmVudD10aGlzfSx0aGlzKSksMCE9PUcubGVuZ3RoJiYoUihudWxsPT09Vy5hcmdzKSxX''@;'; put 'put ''LmFyZ3M9RyxXLnJldmVyc2VBcmdzPUcubWFwKGZ1bmN0aW9uKHEpe2lmKCJvYmplY3QiIT10eXBlb2YgcXx8cS5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gcTtjb25zdCB0ZT17fTtyZXR1cm4gT2JqZWN0LmtleXMocSkuZm9yRWFjaChmdW5jdGlvbihuZSl7bmU9PSgwfG5lKSYmKG5l''@;'; put 'put ''fD0wKSx0ZVtxW25lXV09bmV9KSx0ZX0pKX0sWyJfcGVla1RhZyIsIl9kZWNvZGVUYWciLCJfdXNlIiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlSW50IiwiX2RlY29kZUJvb2wiLCJfZGVjb2RlTGlzdCIsIl9lbmNvZGVD''@;'; put 'put ''b21wb3NpdGUiLCJfZW5jb2RlU3RyIiwiX2VuY29kZU9iamlkIiwiX2VuY29kZVRpbWUiLCJfZW5jb2RlTnVsbCIsIl9lbmNvZGVJbnQiLCJfZW5jb2RlQm9vbCJdLmZvckVhY2goZnVuY3Rpb24oRyl7ai5wcm90b3R5cGVbR109ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoRysiIG5vdCBp''@;'; put 'put ''bXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICIrdGhpcy5fYmFzZVN0YXRlLmVuYyl9fSksRS5mb3JFYWNoKGZ1bmN0aW9uKEcpe2oucHJvdG90eXBlW0ddPWZ1bmN0aW9uKCl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGUsVT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3Jl''@;'; put 'put ''dHVybiBSKG51bGw9PT1XLnRhZyksVy50YWc9Ryx0aGlzLl91c2VBcmdzKFUpLHRoaXN9fSksai5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKEcpe1IoRyk7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFIobnVsbD09PVcudXNlKSxXLnVzZT1HLHRoaXN9LGoucHJvdG90eXBlLm9wdGlv''@;'; put 'put ''bmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5vcHRpb25hbD0hMCx0aGlzfSxqLnByb3RvdHlwZS5kZWY9ZnVuY3Rpb24oRyl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFIobnVsbD09PVcuZGVmYXVsdCksVy5kZWZhdWx0PUcsVy5vcHRpb25hbD0hMCx0aGlz''@;'; put 'put ''fSxqLnByb3RvdHlwZS5leHBsaWNpdD1mdW5jdGlvbihHKXtjb25zdCBXPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gUihudWxsPT09Vy5leHBsaWNpdCYmbnVsbD09PVcuaW1wbGljaXQpLFcuZXhwbGljaXQ9Ryx0aGlzfSxqLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbihHKXtjb25zdCBX''@;'; put 'put ''PXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gUihudWxsPT09Vy5leHBsaWNpdCYmbnVsbD09PVcuaW1wbGljaXQpLFcuaW1wbGljaXQ9Ryx0aGlzfSxqLnByb3RvdHlwZS5vYmo9ZnVuY3Rpb24oKXtjb25zdCBHPXRoaXMuX2Jhc2VTdGF0ZSxXPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy''@;'; put 'put ''Z3VtZW50cyk7cmV0dXJuIEcub2JqPSEwLDAhPT1XLmxlbmd0aCYmdGhpcy5fdXNlQXJncyhXKSx0aGlzfSxqLnByb3RvdHlwZS5rZXk9ZnVuY3Rpb24oRyl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFIobnVsbD09PVcua2V5KSxXLmtleT1HLHRoaXN9LGoucHJvdG90eXBlLmFu''@;'; put 'put ''eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlU3RhdGUuYW55PSEwLHRoaXN9LGoucHJvdG90eXBlLmNob2ljZT1mdW5jdGlvbihHKXtjb25zdCBXPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gUihudWxsPT09Vy5jaG9pY2UpLFcuY2hvaWNlPUcsdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5''@;'; put 'put ''cyhHKS5tYXAoZnVuY3Rpb24oVSl7cmV0dXJuIEdbVV19KSksdGhpc30sai5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oRyl7Y29uc3QgVz10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFIobnVsbD09PVcudXNlKSxXLmNvbnRhaW5zPUcsdGhpc30sai5wcm90b3R5cGUuX2RlY29kZT1mdW5j''@;'; put 'put ''dGlvbihHLFcpe2NvbnN0IFU9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1VLnBhcmVudClyZXR1cm4gRy53cmFwUmVzdWx0KFUuY2hpbGRyZW5bMF0uX2RlY29kZShHLFcpKTtsZXQgcSx0ZT1VLmRlZmF1bHQsbmU9ITAsaWU9bnVsbDtpZihudWxsIT09VS5rZXkmJihpZT1HLmVudGVyS2V5''@;'; put 'put ''KFUua2V5KSksVS5vcHRpb25hbCl7bGV0IGxlPW51bGw7aWYobnVsbCE9PVUuZXhwbGljaXQ/bGU9VS5leHBsaWNpdDpudWxsIT09VS5pbXBsaWNpdD9sZT1VLmltcGxpY2l0Om51bGwhPT1VLnRhZyYmKGxlPVUudGFnKSxudWxsIT09bGV8fFUuYW55KXtpZihuZT10aGlzLl9wZWVrVGFnKEcs''@;'; put 'put ''bGUsVS5hbnkpLEcuaXNFcnJvcihuZSkpcmV0dXJuIG5lfWVsc2V7Y29uc3QgZGU9Ry5zYXZlKCk7dHJ5e251bGw9PT1VLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKFUudGFnLEcsVyk6dGhpcy5fZGVjb2RlQ2hvaWNlKEcsVyksbmU9ITB9Y2F0Y2h7bmU9ITF9Ry5yZXN0b3JlKGRlKX19''@;'; put 'put ''aWYoVS5vYmomJm5lJiYocT1HLmVudGVyT2JqZWN0KCkpLG5lKXtpZihudWxsIT09VS5leHBsaWNpdCl7Y29uc3QgZGU9dGhpcy5fZGVjb2RlVGFnKEcsVS5leHBsaWNpdCk7aWYoRy5pc0Vycm9yKGRlKSlyZXR1cm4gZGU7Rz1kZX1jb25zdCBsZT1HLm9mZnNldDtpZihudWxsPT09VS51c2Um''@;'; put 'put ''Jm51bGw9PT1VLmNob2ljZSl7bGV0IGRlO1UuYW55JiYoZGU9Ry5zYXZlKCkpO2NvbnN0IHVlPXRoaXMuX2RlY29kZVRhZyhHLG51bGwhPT1VLmltcGxpY2l0P1UuaW1wbGljaXQ6VS50YWcsVS5hbnkpO2lmKEcuaXNFcnJvcih1ZSkpcmV0dXJuIHVlO1UuYW55P3RlPUcucmF3KGRlKTpHPXVl''@;'; put 'put ''fWlmKFcmJlcudHJhY2smJm51bGwhPT1VLnRhZyYmVy50cmFjayhHLnBhdGgoKSxsZSxHLmxlbmd0aCwidGFnZ2VkIiksVyYmVy50cmFjayYmbnVsbCE9PVUudGFnJiZXLnRyYWNrKEcucGF0aCgpLEcub2Zmc2V0LEcubGVuZ3RoLCJjb250ZW50IiksVS5hbnl8fCh0ZT1udWxsPT09VS5jaG9p''@;'; put 'put ''Y2U/dGhpcy5fZGVjb2RlR2VuZXJpYyhVLnRhZyxHLFcpOnRoaXMuX2RlY29kZUNob2ljZShHLFcpKSxHLmlzRXJyb3IodGUpKXJldHVybiB0ZTtpZihVLmFueXx8bnVsbCE9PVUuY2hvaWNlfHxudWxsPT09VS5jaGlsZHJlbnx8VS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGRlKXtkZS5f''@;'; put 'put ''ZGVjb2RlKEcsVyl9KSxVLmNvbnRhaW5zJiYoIm9jdHN0ciI9PT1VLnRhZ3x8ImJpdHN0ciI9PT1VLnRhZykpe2NvbnN0IGRlPW5ldyBJKHRlKTt0ZT10aGlzLl9nZXRVc2UoVS5jb250YWlucyxHLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShkZSxXKX19cmV0dXJuIFUub2JqJiZuZSYm''@;'; put 'put ''KHRlPUcubGVhdmVPYmplY3QocSkpLG51bGw9PT1VLmtleXx8bnVsbD09PXRlJiYhMCE9PW5lP251bGwhPT1pZSYmRy5leGl0S2V5KGllKTpHLmxlYXZlS2V5KGllLFUua2V5LHRlKSx0ZX0sai5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWM9ZnVuY3Rpb24oRyxXLFUpe2NvbnN0IHE9dGhpcy5f''@;'; put 'put ''YmFzZVN0YXRlO3JldHVybiJzZXEiPT09R3x8InNldCI9PT1HP251bGw6InNlcW9mIj09PUd8fCJzZXRvZiI9PT1HP3RoaXMuX2RlY29kZUxpc3QoVyxHLHEuYXJnc1swXSxVKTovc3RyJC8udGVzdChHKT90aGlzLl9kZWNvZGVTdHIoVyxHLFUpOiJvYmppZCI9PT1HJiZxLmFyZ3M/dGhpcy5f''@;'; put 'put ''ZGVjb2RlT2JqaWQoVyxxLmFyZ3NbMF0scS5hcmdzWzFdLFUpOiJvYmppZCI9PT1HP3RoaXMuX2RlY29kZU9iamlkKFcsbnVsbCxudWxsLFUpOiJnZW50aW1lIj09PUd8fCJ1dGN0aW1lIj09PUc/dGhpcy5fZGVjb2RlVGltZShXLEcsVSk6Im51bGxfIj09PUc/dGhpcy5fZGVjb2RlTnVsbChX''@;'; put 'put ''LFUpOiJib29sIj09PUc/dGhpcy5fZGVjb2RlQm9vbChXLFUpOiJvYmpEZXNjIj09PUc/dGhpcy5fZGVjb2RlU3RyKFcsRyxVKToiaW50Ij09PUd8fCJlbnVtIj09PUc/dGhpcy5fZGVjb2RlSW50KFcscS5hcmdzJiZxLmFyZ3NbMF0sVSk6bnVsbCE9PXEudXNlP3RoaXMuX2dldFVzZShxLnVz''@;'; put 'put ''ZSxXLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShXLFUpOlcuZXJyb3IoInVua25vd24gdGFnOiAiK0cpfSxqLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKEcsVyl7Y29uc3QgVT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIFUudXNlRGVjb2Rlcj10aGlzLl91c2UoRyxXKSxSKG51bGw9''@;'; put 'put ''PT1VLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQpLFUudXNlRGVjb2Rlcj1VLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXSxVLmltcGxpY2l0IT09VS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQmJihVLnVzZURlY29kZXI9VS51c2VEZWNvZGVyLmNsb25lKCks''@;'; put 'put ''VS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9VS5pbXBsaWNpdCksVS51c2VEZWNvZGVyfSxqLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlPWZ1bmN0aW9uKEcsVyl7Y29uc3QgVT10aGlzLl9iYXNlU3RhdGU7bGV0IHE9bnVsbCx0ZT0hMTtyZXR1cm4gT2JqZWN0LmtleXMoVS5jaG9p''@;'; put 'put ''Y2UpLnNvbWUoZnVuY3Rpb24obmUpe2NvbnN0IGllPUcuc2F2ZSgpLGxlPVUuY2hvaWNlW25lXTt0cnl7Y29uc3QgZGU9bGUuX2RlY29kZShHLFcpO2lmKEcuaXNFcnJvcihkZSkpcmV0dXJuITE7cT17dHlwZTpuZSx2YWx1ZTpkZX0sdGU9ITB9Y2F0Y2h7cmV0dXJuIEcucmVzdG9yZShpZSks''@;'; put 'put ''ITF9cmV0dXJuITB9LHRoaXMpLHRlP3E6Ry5lcnJvcigiQ2hvaWNlIG5vdCBtYXRjaGVkIil9LGoucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKEcpe3JldHVybiBuZXcgSihHLHRoaXMucmVwb3J0ZXIpfSxqLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKEcsVyxV''@;'; put 'put ''KXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsIT09cS5kZWZhdWx0JiZxLmRlZmF1bHQ9PT1HKXJldHVybjtjb25zdCB0ZT10aGlzLl9lbmNvZGVWYWx1ZShHLFcsVSk7cmV0dXJuIHZvaWQgMD09PXRlfHx0aGlzLl9za2lwRGVmYXVsdCh0ZSxXLFUpP3ZvaWQgMDp0ZX0sai5wcm90''@;'; put 'put ''b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKEcsVyxVKXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09cS5wYXJlbnQpcmV0dXJuIHEuY2hpbGRyZW5bMF0uX2VuY29kZShHLFd8fG5ldyBLKTtsZXQgdGU9bnVsbDtpZih0aGlzLnJlcG9ydGVyPVcscS5vcHRpb25hbCYmdm9p''@;'; put 'put ''ZCAwPT09Ryl7aWYobnVsbD09PXEuZGVmYXVsdClyZXR1cm47Rz1xLmRlZmF1bHR9bGV0IG5lPW51bGwsaWU9ITE7aWYocS5hbnkpdGU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihHKTtlbHNlIGlmKHEuY2hvaWNlKXRlPXRoaXMuX2VuY29kZUNob2ljZShHLFcpO2Vsc2UgaWYocS5jb250''@;'; put 'put ''YWlucyluZT10aGlzLl9nZXRVc2UocS5jb250YWlucyxVKS5fZW5jb2RlKEcsVyksaWU9ITA7ZWxzZSBpZihxLmNoaWxkcmVuKW5lPXEuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGxlKXtpZigibnVsbF8iPT09bGUuX2Jhc2VTdGF0ZS50YWcpcmV0dXJuIGxlLl9lbmNvZGUobnVsbCxXLEcpO2lm''@;'; put 'put ''KG51bGw9PT1sZS5fYmFzZVN0YXRlLmtleSlyZXR1cm4gVy5lcnJvcigiQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXkiKTtjb25zdCBkZT1XLmVudGVyS2V5KGxlLl9iYXNlU3RhdGUua2V5KTtpZigib2JqZWN0IiE9dHlwZW9mIEcpcmV0dXJuIFcuZXJyb3IoIkNoaWxkIGV4cGVjdGVkLCBidXQg''@;'; put 'put ''aW5wdXQgaXMgbm90IG9iamVjdCIpO2NvbnN0IHVlPWxlLl9lbmNvZGUoR1tsZS5fYmFzZVN0YXRlLmtleV0sVyxHKTtyZXR1cm4gVy5sZWF2ZUtleShkZSksdWV9LHRoaXMpLmZpbHRlcihmdW5jdGlvbihsZSl7cmV0dXJuIGxlfSksbmU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihuZSk7''@;'; put 'put ''ZWxzZSBpZigic2Vxb2YiPT09cS50YWd8fCJzZXRvZiI9PT1xLnRhZyl7aWYoIXEuYXJnc3x8MSE9PXEuYXJncy5sZW5ndGgpcmV0dXJuIFcuZXJyb3IoIlRvbyBtYW55IGFyZ3MgZm9yIDogIitxLnRhZyk7aWYoIUFycmF5LmlzQXJyYXkoRykpcmV0dXJuIFcuZXJyb3IoInNlcW9mL3NldG9m''@;'; put 'put ''LCBidXQgZGF0YSBpcyBub3QgQXJyYXkiKTtjb25zdCBsZT10aGlzLmNsb25lKCk7bGUuX2Jhc2VTdGF0ZS5pbXBsaWNpdD1udWxsLG5lPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoRy5tYXAoZnVuY3Rpb24oZGUpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3Nb''@;'; put 'put ''MF0sRykuX2VuY29kZShkZSxXKX0sbGUpKX1lbHNlIG51bGwhPT1xLnVzZT90ZT10aGlzLl9nZXRVc2UocS51c2UsVSkuX2VuY29kZShHLFcpOihuZT10aGlzLl9lbmNvZGVQcmltaXRpdmUocS50YWcsRyksaWU9ITApO2lmKCFxLmFueSYmbnVsbD09PXEuY2hvaWNlKXtjb25zdCBsZT1udWxs''@;'; put 'put ''IT09cS5pbXBsaWNpdD9xLmltcGxpY2l0OnEudGFnLGRlPW51bGw9PT1xLmltcGxpY2l0PyJ1bml2ZXJzYWwiOiJjb250ZXh0IjtudWxsPT09bGU/bnVsbD09PXEudXNlJiZXLmVycm9yKCJUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAudXNlKCkiKTpudWxsPT09cS51c2UmJih0ZT10''@;'; put 'put ''aGlzLl9lbmNvZGVDb21wb3NpdGUobGUsaWUsZGUsbmUpKX1yZXR1cm4gbnVsbCE9PXEuZXhwbGljaXQmJih0ZT10aGlzLl9lbmNvZGVDb21wb3NpdGUocS5leHBsaWNpdCwhMSwiY29udGV4dCIsdGUpKSx0ZX0sai5wcm90b3R5cGUuX2VuY29kZUNob2ljZT1mdW5jdGlvbihHLFcpe2NvbnN0''@;'; put 'put ''IFU9dGhpcy5fYmFzZVN0YXRlLHE9VS5jaG9pY2VbRy50eXBlXTtyZXR1cm4gcXx8UighMSxHLnR5cGUrIiBub3QgZm91bmQgaW4gIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhVLmNob2ljZSkpKSxxLl9lbmNvZGUoRy52YWx1ZSxXKX0sai5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2''@;'; put 'put ''ZT1mdW5jdGlvbihHLFcpe2NvbnN0IFU9dGhpcy5fYmFzZVN0YXRlO2lmKC9zdHIkLy50ZXN0KEcpKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoVyxHKTtpZigib2JqaWQiPT09RyYmVS5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChXLFUucmV2ZXJzZUFyZ3NbMF0sVS5hcmdzWzFdKTtp''@;'; put 'put ''Zigib2JqaWQiPT09RylyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoVyxudWxsLG51bGwpO2lmKCJnZW50aW1lIj09PUd8fCJ1dGN0aW1lIj09PUcpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoVyxHKTtpZigibnVsbF8iPT09RylyZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO2lmKCJpbnQiPT09''@;'; put 'put ''R3x8ImVudW0iPT09RylyZXR1cm4gdGhpcy5fZW5jb2RlSW50KFcsVS5hcmdzJiZVLnJldmVyc2VBcmdzWzBdKTtpZigiYm9vbCI9PT1HKXJldHVybiB0aGlzLl9lbmNvZGVCb29sKFcpO2lmKCJvYmpEZXNjIj09PUcpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihXLEcpO3Rocm93IG5ldyBFcnJv''@;'; put 'put ''cigiVW5zdXBwb3J0ZWQgdGFnOiAiK0cpfSxqLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24oRyl7cmV0dXJuL15bMC05IF0qJC8udGVzdChHKX0sai5wcm90b3R5cGUuX2lzUHJpbnRzdHI9ZnVuY3Rpb24oRyl7cmV0dXJuL15bQS1aYS16MC05ICcoKSssLS4vOj0/XSokLy50ZXN0KEcp''@;'; put 'put ''fX0sODQ2NTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg1NzE3KTtmdW5jdGlvbiBKKFIpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpSfHx7fSxlcnJvcnM6W119fWZ1bmN0aW9uIEkoUixFKXt0aGlzLnBhdGg9Uix0aGlzLnJldGhyb3co''@;'; put 'put ''RSl9Qi5iPUosSi5wcm90b3R5cGUuaXNFcnJvcj1mdW5jdGlvbihSKXtyZXR1cm4gUiBpbnN0YW5jZW9mIEl9LEoucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtjb25zdCBSPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajpSLm9iaixwYXRoTGVuOlIucGF0aC5sZW5ndGh9fSxKLnBy''@;'; put 'put ''b3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKFIpe2NvbnN0IEU9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtFLm9iaj1SLm9iaixFLnBhdGg9RS5wYXRoLnNsaWNlKDAsUi5wYXRoTGVuKX0sSi5wcm90b3R5cGUuZW50ZXJLZXk9ZnVuY3Rpb24oUil7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0''@;'; put 'put ''aC5wdXNoKFIpfSxKLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uKFIpe2NvbnN0IEU9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtFLnBhdGg9RS5wYXRoLnNsaWNlKDAsUi0xKX0sSi5wcm90b3R5cGUubGVhdmVLZXk9ZnVuY3Rpb24oUixFLHope2NvbnN0IGo9dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0''@;'; put 'put ''aGlzLmV4aXRLZXkoUiksbnVsbCE9PWoub2JqJiYoai5vYmpbRV09eil9LEoucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oIi8iKX0sSi5wcm90b3R5cGUuZW50ZXJPYmplY3Q9ZnVuY3Rpb24oKXtjb25zdCBSPXRoaXMuX3Jl''@;'; put 'put ''cG9ydGVyU3RhdGUsRT1SLm9iajtyZXR1cm4gUi5vYmo9e30sRX0sSi5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9yZXBvcnRlclN0YXRlLHo9RS5vYmo7cmV0dXJuIEUub2JqPVIsen0sSi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oUil7bGV0IEU7''@;'; put 'put ''Y29uc3Qgej10aGlzLl9yZXBvcnRlclN0YXRlLGo9UiBpbnN0YW5jZW9mIEk7aWYoRT1qP1I6bmV3IEkoei5wYXRoLm1hcChmdW5jdGlvbihWKXtyZXR1cm4iWyIrSlNPTi5zdHJpbmdpZnkoVikrIl0ifSkuam9pbigiIiksUi5tZXNzYWdlfHxSLFIuc3RhY2spLCF6Lm9wdGlvbnMucGFydGlh''@;'; put 'put ''bCl0aHJvdyBFO3JldHVybiBqfHx6LmVycm9ycy5wdXNoKEUpLEV9LEoucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybiBFLm9wdGlvbnMucGFydGlhbD97cmVzdWx0OnRoaXMuaXNFcnJvcihSKT9udWxsOlIsZXJyb3Jz''@;'; put 'put ''OkUuZXJyb3JzfTpSfSxLKEksRXJyb3IpLEkucHJvdG90eXBlLnJldGhyb3c9ZnVuY3Rpb24oUil7aWYodGhpcy5tZXNzYWdlPVIrIiBhdDogIisodGhpcy5wYXRofHwiKHNoYWxsb3cpIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsSSks''@;'; put 'put ''IXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKEUpe3RoaXMuc3RhY2s9RS5zdGFja31yZXR1cm4gdGhpc319LDE2MDooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBMKEspe2NvbnN0IEo9e307cmV0dXJuIE9iamVjdC5rZXlzKEspLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oSSl7KDB8SSk9PUkmJihJfD0wKSxKW0tbSV1dPUl9KSxKfUIudGFnQ2xhc3M9ezA6InVuaXZlcnNhbCIsMToiYXBwbGljYXRpb24iLDI6ImNvbnRleHQiLDM6InByaXZhdGUifSxCLnRhZ0NsYXNzQnlOYW1lPUwoQi50YWdDbGFzcyksQi50YWc9ezA6ImVuZCIsMToiYm9v''@;'; put 'put ''bCIsMjoiaW50IiwzOiJiaXRzdHIiLDQ6Im9jdHN0ciIsNToibnVsbF8iLDY6Im9iamlkIiw3OiJvYmpEZXNjIiw4OiJleHRlcm5hbCIsOToicmVhbCIsMTA6ImVudW0iLDExOiJlbWJlZCIsMTI6InV0ZjhzdHIiLDEzOiJyZWxhdGl2ZU9pZCIsMTY6InNlcSIsMTc6InNldCIsMTg6Im51bXN0''@;'; put 'put ''ciIsMTk6InByaW50c3RyIiwyMDoidDYxc3RyIiwyMToidmlkZW9zdHIiLDIyOiJpYTVzdHIiLDIzOiJ1dGN0aW1lIiwyNDoiZ2VudGltZSIsMjU6ImdyYXBoc3RyIiwyNjoiaXNvNjQ2c3RyIiwyNzoiZ2Vuc3RyIiwyODoidW5pc3RyIiwyOToiY2hhcnN0ciIsMzA6ImJtcHN0ciJ9LEIudGFn''@;'; put 'put ''QnlOYW1lPUwoQi50YWcpfSw2ODI2OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1CO0suX3JldmVyc2U9ZnVuY3Rpb24oSil7Y29uc3QgST17fTtyZXR1cm4gT2JqZWN0LmtleXMoSikuZm9yRWFjaChmdW5jdGlvbihSKXsoMHxSKT09UiYmKFJ8PTApLElbSltSXV09Un0pLEl9LEsu''@;'; put 'put ''ZGVyPUwoMTYwKX0sMTY3MTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg1NzE3KSxKPUwoNDU5MCksST1MKDY2MjUpLkMsUj1MKDE5NDkpLEU9TCgxNjApO2Z1bmN0aW9uIHooVyl7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPVcubmFtZSx0aGlzLmVudGl0eT1XLHRoaXMudHJl''@;'; put 'put ''ZT1uZXcgaix0aGlzLnRyZWUuX2luaXQoVy5ib2R5KX1mdW5jdGlvbiBqKFcpe1IuY2FsbCh0aGlzLCJkZXIiLFcpfWZ1bmN0aW9uIFYoVyxVKXtsZXQgcT1XLnJlYWRVSW50OChVKTtpZihXLmlzRXJyb3IocSkpcmV0dXJuIHE7Y29uc3QgdGU9RS50YWdDbGFzc1txPj42XSxuZT0wPT0oMzIm''@;'; put 'put ''cSk7aWYoMzE9PSgzMSZxKSl7bGV0IGllPXE7Zm9yKHE9MDsxMjg9PSgxMjgmaWUpOyl7aWYoaWU9Vy5yZWFkVUludDgoVSksVy5pc0Vycm9yKGllKSlyZXR1cm4gaWU7cTw8PTcscXw9MTI3JmllfX1lbHNlIHEmPTMxO3JldHVybntjbHM6dGUscHJpbWl0aXZlOm5lLHRhZzpxLHRhZ1N0cjpF''@;'; put 'put ''LnRhZ1txXX19ZnVuY3Rpb24gRyhXLFUscSl7bGV0IHRlPVcucmVhZFVJbnQ4KHEpO2lmKFcuaXNFcnJvcih0ZSkpcmV0dXJuIHRlO2lmKCFVJiYxMjg9PT10ZSlyZXR1cm4gbnVsbDtpZighKDEyOCZ0ZSkpcmV0dXJuIHRlO2NvbnN0IG5lPTEyNyZ0ZTtpZihuZT40KXJldHVybiBXLmVycm9y''@;'; put 'put ''KCJsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nIik7dGU9MDtmb3IobGV0IGllPTA7aWU8bmU7aWUrKyl7dGU8PD04O2NvbnN0IGxlPVcucmVhZFVJbnQ4KHEpO2lmKFcuaXNFcnJvcihsZSkpcmV0dXJuIGxlO3RlfD1sZX1yZXR1cm4gdGV9SC5leHBvcnRzPXosei5wcm90b3R5cGUuZGVjb2Rl''@;'; put 'put ''PWZ1bmN0aW9uKFcsVSl7cmV0dXJuIEkuaXNEZWNvZGVyQnVmZmVyKFcpfHwoVz1uZXcgSShXLFUpKSx0aGlzLnRyZWUuX2RlY29kZShXLFUpfSxLKGosUiksai5wcm90b3R5cGUuX3BlZWtUYWc9ZnVuY3Rpb24oVyxVLHEpe2lmKFcuaXNFbXB0eSgpKXJldHVybiExO2NvbnN0IHRlPVcuc2F2''@;'; put 'put ''ZSgpLG5lPVYoVywnRmFpbGVkIHRvIHBlZWsgdGFnOiAiJytVKyciJyk7cmV0dXJuIFcuaXNFcnJvcihuZSk/bmU6KFcucmVzdG9yZSh0ZSksbmUudGFnPT09VXx8bmUudGFnU3RyPT09VXx8bmUudGFnU3RyKyJvZiI9PT1VfHxxKX0sai5wcm90b3R5cGUuX2RlY29kZVRhZz1mdW5jdGlvbihX''@;'; put 'put ''LFUscSl7Y29uc3QgdGU9VihXLCdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiAiJytVKyciJyk7aWYoVy5pc0Vycm9yKHRlKSlyZXR1cm4gdGU7bGV0IG5lPUcoVyx0ZS5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mICInK1UrJyInKTtpZihXLmlzRXJyb3IobmUpKXJldHVybiBu''@;'; put 'put ''ZTtpZighcSYmdGUudGFnIT09VSYmdGUudGFnU3RyIT09VSYmdGUudGFnU3RyKyJvZiIhPT1VKXJldHVybiBXLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiAiJytVKyciJyk7aWYodGUucHJpbWl0aXZlfHxudWxsIT09bmUpcmV0dXJuIFcuc2tpcChuZSwnRmFpbGVkIHRvIG1hdGNoIGJv''@;'; put 'put ''ZHkgb2Y6ICInK1UrJyInKTtjb25zdCBpZT1XLnNhdmUoKSxsZT10aGlzLl9za2lwVW50aWxFbmQoVywnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogIicrdGhpcy50YWcrJyInKTtyZXR1cm4gVy5pc0Vycm9yKGxlKT9sZToobmU9Vy5vZmZzZXQtaWUub2Zmc2V0LFcu''@;'; put 'put ''cmVzdG9yZShpZSksVy5za2lwKG5lLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrVSsnIicpKX0sai5wcm90b3R5cGUuX3NraXBVbnRpbEVuZD1mdW5jdGlvbihXLFUpe2Zvcig7Oyl7Y29uc3QgcT1WKFcsVSk7aWYoVy5pc0Vycm9yKHEpKXJldHVybiBxO2NvbnN0IHRlPUcoVyxxLnBy''@;'; put 'put ''aW1pdGl2ZSxVKTtpZihXLmlzRXJyb3IodGUpKXJldHVybiB0ZTtsZXQgbmU7aWYobmU9cS5wcmltaXRpdmV8fG51bGwhPT10ZT9XLnNraXAodGUpOnRoaXMuX3NraXBVbnRpbEVuZChXLFUpLFcuaXNFcnJvcihuZSkpcmV0dXJuIG5lO2lmKCJlbmQiPT09cS50YWdTdHIpYnJlYWt9fSxqLnBy''@;'; put 'put ''b3RvdHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbihXLFUscSx0ZSl7Y29uc3QgbmU9W107Zm9yKDshVy5pc0VtcHR5KCk7KXtjb25zdCBpZT10aGlzLl9wZWVrVGFnKFcsImVuZCIpO2lmKFcuaXNFcnJvcihpZSkpcmV0dXJuIGllO2NvbnN0IGxlPXEuZGVjb2RlKFcsImRlciIsdGUpO2lmKFcu''@;'; put 'put ''aXNFcnJvcihsZSkmJmllKWJyZWFrO25lLnB1c2gobGUpfXJldHVybiBuZX0sai5wcm90b3R5cGUuX2RlY29kZVN0cj1mdW5jdGlvbihXLFUpe2lmKCJiaXRzdHIiPT09VSl7Y29uc3QgcT1XLnJlYWRVSW50OCgpO3JldHVybiBXLmlzRXJyb3IocSk/cTp7dW51c2VkOnEsZGF0YTpXLnJhdygp''@;'; put 'put ''fX1pZigiYm1wc3RyIj09PVUpe2NvbnN0IHE9Vy5yYXcoKTtpZihxLmxlbmd0aCUyPT0xKXJldHVybiBXLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCIpO2xldCB0ZT0iIjtmb3IobGV0IG5lPTA7bmU8cS5sZW5ndGgvMjtuZSsrKXRlKz1T''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKHEucmVhZFVJbnQxNkJFKDIqbmUpKTtyZXR1cm4gdGV9aWYoIm51bXN0ciI9PT1VKXtjb25zdCBxPVcucmF3KCkudG9TdHJpbmcoImFzY2lpIik7cmV0dXJuIHRoaXMuX2lzTnVtc3RyKHEpP3E6Vy5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51''@;'; put 'put ''bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIil9aWYoIm9jdHN0ciI9PT1VfHwib2JqRGVzYyI9PT1VKXJldHVybiBXLnJhdygpO2lmKCJwcmludHN0ciI9PT1VKXtjb25zdCBxPVcucmF3KCkudG9TdHJpbmcoImFzY2lpIik7cmV0dXJuIHRoaXMuX2lzUHJpbnRzdHIocSk/cTpXLmVycm9y''@;'; put 'put ''KCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfXJldHVybi9zdHIkLy50ZXN0KFUpP1cucmF3KCkudG9TdHJpbmcoKTpXLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogIitVKyIgdW5zdXBwb3J0ZWQiKX0sai5wcm90b3R5''@;'; put 'put ''cGUuX2RlY29kZU9iamlkPWZ1bmN0aW9uKFcsVSxxKXtsZXQgdGU7Y29uc3QgbmU9W107bGV0IGllPTAsbGU9MDtmb3IoOyFXLmlzRW1wdHkoKTspbGU9Vy5yZWFkVUludDgoKSxpZTw8PTcsaWV8PTEyNyZsZSwhKDEyOCZsZSkmJihuZS5wdXNoKGllKSxpZT0wKTtpZigxMjgmbGUmJm5lLnB1''@;'; put 'put ''c2goaWUpLHRlPXE/bmU6W25lWzBdLzQwfDAsbmVbMF0lNDBdLmNvbmNhdChuZS5zbGljZSgxKSksVSl7bGV0IGNlPVVbdGUuam9pbigiICIpXTt2b2lkIDA9PT1jZSYmKGNlPVVbdGUuam9pbigiLiIpXSksdm9pZCAwIT09Y2UmJih0ZT1jZSl9cmV0dXJuIHRlfSxqLnByb3RvdHlwZS5fZGVj''@;'; put 'put ''b2RlVGltZT1mdW5jdGlvbihXLFUpe2NvbnN0IHE9Vy5yYXcoKS50b1N0cmluZygpO2xldCB0ZSxuZSxpZSxsZSxkZSx1ZTtpZigiZ2VudGltZSI9PT1VKXRlPTB8cS5zbGljZSgwLDQpLG5lPTB8cS5zbGljZSg0LDYpLGllPTB8cS5zbGljZSg2LDgpLGxlPTB8cS5zbGljZSg4LDEwKSxkZT0w''@;'; put 'put ''fHEuc2xpY2UoMTAsMTIpLHVlPTB8cS5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRjdGltZSIhPT1VKXJldHVybiBXLmVycm9yKCJEZWNvZGluZyAiK1UrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7dGU9MHxxLnNsaWNlKDAsMiksbmU9MHxxLnNsaWNlKDIsNCksaWU9MHxxLnNsaWNl''@;'; put 'put ''KDQsNiksbGU9MHxxLnNsaWNlKDYsOCksZGU9MHxxLnNsaWNlKDgsMTApLHVlPTB8cS5zbGljZSgxMCwxMiksdGU9dGU8NzA/MmUzK3RlOjE5MDArdGV9cmV0dXJuIERhdGUuVVRDKHRlLG5lLTEsaWUsbGUsZGUsdWUsMCl9LGoucHJvdG90eXBlLl9kZWNvZGVOdWxsPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIG51bGx9LGoucHJvdG90eXBlLl9kZWNvZGVCb29sPWZ1bmN0aW9uKFcpe2NvbnN0IFU9Vy5yZWFkVUludDgoKTtyZXR1cm4gVy5pc0Vycm9yKFUpP1U6MCE9PVV9LGoucHJvdG90eXBlLl9kZWNvZGVJbnQ9ZnVuY3Rpb24oVyxVKXtjb25zdCBxPVcucmF3KCk7bGV0IHRlPW5ldyBKKHEp''@;'; put 'put ''O3JldHVybiBVJiYodGU9VVt0ZS50b1N0cmluZygxMCldfHx0ZSksdGV9LGoucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oVyxVKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgVyYmKFc9VyhVKSksVy5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LDgzMDc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijtjb25zdCBLPUI7Sy5kZXI9TCgxNjcxKSxLLnBlbT1MKDk2MzEpfSw5NjMxOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDU3MTcpLEo9TCgyMzk5KS5CdWZmZXIsST1MKDE2NzEpO2Z1bmN0aW9uIFIoRSl7SS5jYWxsKHRoaXMsRSksdGhpcy5lbmM9InBlbSJ9SyhSLEkpLEgu''@;'; put 'put ''ZXhwb3J0cz1SLFIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihFLHope2NvbnN0IGo9RS50b1N0cmluZygpLnNwbGl0KC9bXHJcbl0rL2cpLFY9ei5sYWJlbC50b1VwcGVyQ2FzZSgpLEc9L14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO2xldCBXPS0xLFU9LTE7Zm9yKGxldCBu''@;'; put 'put ''ZT0wO25lPGoubGVuZ3RoO25lKyspe2NvbnN0IGllPWpbbmVdLm1hdGNoKEcpO2lmKG51bGwhPT1pZSYmaWVbMl09PT1WKXtpZigtMSE9PVcpe2lmKCJFTkQiIT09aWVbMV0pYnJlYWs7VT1uZTticmVha31pZigiQkVHSU4iIT09aWVbMV0pYnJlYWs7Vz1uZX19aWYoLTE9PT1XfHwtMT09PVUp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAiK1YpO2NvbnN0IHE9ai5zbGljZShXKzEsVSkuam9pbigiIik7cS5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCIiKTtjb25zdCB0ZT1KLmZyb20ocSwiYmFzZTY0Iik7cmV0dXJuIEkucHJvdG90eXBlLmRlY29k''@;'; put 'put ''ZS5jYWxsKHRoaXMsdGUseil9fSw2OTg0OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDU3MTcpLEo9TCgyMzk5KS5CdWZmZXIsST1MKDE5NDkpLFI9TCgxNjApO2Z1bmN0aW9uIEUoVil7dGhpcy5lbmM9ImRlciIsdGhpcy5uYW1lPVYubmFtZSx0aGlzLmVudGl0eT1WLHRoaXMu''@;'; put 'put ''dHJlZT1uZXcgeix0aGlzLnRyZWUuX2luaXQoVi5ib2R5KX1mdW5jdGlvbiB6KFYpe0kuY2FsbCh0aGlzLCJkZXIiLFYpfWZ1bmN0aW9uIGooVil7cmV0dXJuIFY8MTA/IjAiK1Y6Vn1ILmV4cG9ydHM9RSxFLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oVixHKXtyZXR1cm4gdGhpcy50cmVl''@;'; put 'put ''Ll9lbmNvZGUoVixHKS5qb2luKCl9LEsoeixJKSx6LnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlPWZ1bmN0aW9uKFYsRyxXLFUpe2NvbnN0IHE9ZnVuY3Rpb24oaWUsbGUsZGUsdWUpe2xldCBjZTtpZigic2Vxb2YiPT09aWU/aWU9InNlcSI6InNldG9mIj09PWllJiYoaWU9InNldCIpLFIu''@;'; put 'put ''dGFnQnlOYW1lLmhhc093blByb3BlcnR5KGllKSljZT1SLnRhZ0J5TmFtZVtpZV07ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIGllfHwoMHxpZSkhPT1pZSlyZXR1cm4gdWUuZXJyb3IoIlVua25vd24gdGFnOiAiK2llKTtjZT1pZX1yZXR1cm4gY2U+PTMxP3VlLmVycm9yKCJNdWx0aS1vY3Rl''@;'; put 'put ''dCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQiKToobGV8fChjZXw9MzIpLGNlfD1SLnRhZ0NsYXNzQnlOYW1lW2RlfHwidW5pdmVyc2FsIl08PDYsY2UpfShWLEcsVyx0aGlzLnJlcG9ydGVyKTtpZihVLmxlbmd0aDwxMjgpe2NvbnN0IGllPUouYWxsb2MoMik7cmV0dXJuIGllWzBdPXEsaWVb''@;'; put 'put ''MV09VS5sZW5ndGgsdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbaWUsVV0pfWxldCB0ZT0xO2ZvcihsZXQgaWU9VS5sZW5ndGg7aWU+PTI1NjtpZT4+PTgpdGUrKztjb25zdCBuZT1KLmFsbG9jKDIrdGUpO25lWzBdPXEsbmVbMV09MTI4fHRlO2ZvcihsZXQgaWU9MSt0ZSxsZT1VLmxlbmd0''@;'; put 'put ''aDtsZT4wO2llLS0sbGU+Pj04KW5lW2llXT0yNTUmbGU7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW25lLFVdKX0sei5wcm90b3R5cGUuX2VuY29kZVN0cj1mdW5jdGlvbihWLEcpe2lmKCJiaXRzdHIiPT09RylyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMHxW''@;'; put 'put ''LnVudXNlZCxWLmRhdGFdKTtpZigiYm1wc3RyIj09PUcpe2NvbnN0IFc9Si5hbGxvYygyKlYubGVuZ3RoKTtmb3IobGV0IFU9MDtVPFYubGVuZ3RoO1UrKylXLndyaXRlVUludDE2QkUoVi5jaGFyQ29kZUF0KFUpLDIqVSk7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVyl9cmV0''@;'; put 'put ''dXJuIm51bXN0ciI9PT1HP3RoaXMuX2lzTnVtc3RyKFYpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0cyBvbmx5IGRpZ2l0cyBhbmQgc3BhY2UiKToicHJpbnRzdHIiPT09Rz90''@;'; put 'put ''aGlzLl9pc1ByaW50c3RyKFYpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzIG9ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCBzcGFj''@;'; put 'put ''ZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggcGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sIHF1ZXN0aW9uIG1hcmsiKTovc3RyJC8udGVzdChHKXx8Im9iakRlc2MiPT09Rz90aGlzLl9jcmVhdGVFbmNvZGVy''@;'; put 'put ''QnVmZmVyKFYpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK0crIiB1bnN1cHBvcnRlZCIpfSx6LnByb3RvdHlwZS5fZW5jb2RlT2JqaWQ9ZnVuY3Rpb24oVixHLFcpe2lmKCJzdHJpbmciPT10eXBlb2YgVil7aWYoIUcpcmV0dXJuIHRoaXMucmVwb3J0''@;'; put 'put ''ZXIuZXJyb3IoInN0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQiKTtpZighRy5oYXNPd25Qcm9wZXJ0eShWKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigib2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAiKTtWPUdbVl0uc3BsaXQoL1tccy5dKy9nKTtm''@;'; put 'put ''b3IobGV0IG5lPTA7bmU8Vi5sZW5ndGg7bmUrKylWW25lXXw9MH1lbHNlIGlmKEFycmF5LmlzQXJyYXkoVikpe1Y9Vi5zbGljZSgpO2ZvcihsZXQgbmU9MDtuZTxWLmxlbmd0aDtuZSsrKVZbbmVdfD0wfWlmKCFBcnJheS5pc0FycmF5KFYpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJv''@;'; put 'put ''YmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCBnb3Q6ICIrSlNPTi5zdHJpbmdpZnkoVikpO2lmKCFXKXtpZihWWzFdPj00MClyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CIik7Vi5zcGxpY2UoMCwyLDQwKlZbMF0r''@;'; put 'put ''VlsxXSl9bGV0IFU9MDtmb3IobGV0IG5lPTA7bmU8Vi5sZW5ndGg7bmUrKyl7bGV0IGllPVZbbmVdO2ZvcihVKys7aWU+PTEyODtpZT4+PTcpVSsrfWNvbnN0IHE9Si5hbGxvYyhVKTtsZXQgdGU9cS5sZW5ndGgtMTtmb3IobGV0IG5lPVYubGVuZ3RoLTE7bmU+PTA7bmUtLSl7bGV0IGllPVZb''@;'; put 'put ''bmVdO2ZvcihxW3RlLS1dPTEyNyZpZTsoaWU+Pj03KT4wOylxW3RlLS1dPTEyOHwxMjcmaWV9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIocSl9LHoucHJvdG90eXBlLl9lbmNvZGVUaW1lPWZ1bmN0aW9uKFYsRyl7bGV0IFc7Y29uc3QgVT1uZXcgRGF0ZShWKTtyZXR1cm4iZ2Vu''@;'; put 'put ''dGltZSI9PT1HP1c9W2ooVS5nZXRVVENGdWxsWWVhcigpKSxqKFUuZ2V0VVRDTW9udGgoKSsxKSxqKFUuZ2V0VVRDRGF0ZSgpKSxqKFUuZ2V0VVRDSG91cnMoKSksaihVLmdldFVUQ01pbnV0ZXMoKSksaihVLmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKToidXRjdGltZSI9PT1HP1c9''@;'; put 'put ''W2ooVS5nZXRVVENGdWxsWWVhcigpJTEwMCksaihVLmdldFVUQ01vbnRoKCkrMSksaihVLmdldFVUQ0RhdGUoKSksaihVLmdldFVUQ0hvdXJzKCkpLGooVS5nZXRVVENNaW51dGVzKCkpLGooVS5nZXRVVENTZWNvbmRzKCkpLCJaIl0uam9pbigiIik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5j''@;'; put 'put ''b2RpbmcgIitHKyIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCIpLHRoaXMuX2VuY29kZVN0cihXLCJvY3RzdHIiKX0sei5wcm90b3R5cGUuX2VuY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcigiIil9LHoucHJvdG90eXBlLl9lbmNvZGVJbnQ9''@;'; put 'put ''ZnVuY3Rpb24oVixHKXtpZigic3RyaW5nIj09dHlwZW9mIFYpe2lmKCFHKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIik7aWYoIUcuaGFzT3duUHJvcGVydHkoVikpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJy''@;'; put 'put ''b3IoIlZhbHVlcyBtYXAgZG9lc24ndCBjb250YWluOiAiK0pTT04uc3RyaW5naWZ5KFYpKTtWPUdbVl19aWYoIm51bWJlciIhPXR5cGVvZiBWJiYhSi5pc0J1ZmZlcihWKSl7Y29uc3QgcT1WLnRvQXJyYXkoKTshVi5zaWduJiYxMjgmcVswXSYmcS51bnNoaWZ0KDApLFY9Si5mcm9tKHEpfWlm''@;'; put 'put ''KEouaXNCdWZmZXIoVikpe2xldCBxPVYubGVuZ3RoOzA9PT1WLmxlbmd0aCYmcSsrO2NvbnN0IHRlPUouYWxsb2MocSk7cmV0dXJuIFYuY29weSh0ZSksMD09PVYubGVuZ3RoJiYodGVbMF09MCksdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0ZSl9aWYoVjwxMjgpcmV0dXJuIHRoaXMuX2Ny''@;'; put 'put ''ZWF0ZUVuY29kZXJCdWZmZXIoVik7aWYoVjwyNTYpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsVl0pO2xldCBXPTE7Zm9yKGxldCBxPVY7cT49MjU2O3E+Pj04KVcrKztjb25zdCBVPW5ldyBBcnJheShXKTtmb3IobGV0IHE9VS5sZW5ndGgtMTtxPj0wO3EtLSlVW3FdPTI1''@;'; put 'put ''NSZWLFY+Pj04O3JldHVybiAxMjgmVVswXSYmVS51bnNoaWZ0KDApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoSi5mcm9tKFUpKX0sei5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVj8yNTU6MCl9LHoucHJvdG90''@;'; put 'put ''eXBlLl91c2U9ZnVuY3Rpb24oVixHKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgViYmKFY9VihHKSksVi5fZ2V0RW5jb2RlcigiZGVyIikudHJlZX0sei5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uKFYsRyxXKXtjb25zdCBVPXRoaXMuX2Jhc2VTdGF0ZTtsZXQgcTtpZihudWxs''@;'; put 'put ''PT09VS5kZWZhdWx0KXJldHVybiExO2NvbnN0IHRlPVYuam9pbigpO2lmKHZvaWQgMD09PVUuZGVmYXVsdEJ1ZmZlciYmKFUuZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShVLmRlZmF1bHQsRyxXKS5qb2luKCkpLHRlLmxlbmd0aCE9PVUuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpcmV0''@;'; put 'put ''dXJuITE7Zm9yKHE9MDtxPHRlLmxlbmd0aDtxKyspaWYodGVbcV0hPT1VLmRlZmF1bHRCdWZmZXJbcV0pcmV0dXJuITE7cmV0dXJuITB9fSw2NTc5OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1CO0suZGVyPUwoNjk4NCksSy5wZW09TCgyODgzKX0sMjg4MzooSCxCLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO2NvbnN0IEs9TCg1NzE3KSxKPUwoNjk4NCk7ZnVuY3Rpb24gSShSKXtKLmNhbGwodGhpcyxSKSx0aGlzLmVuYz0icGVtIn1LKEksSiksSC5leHBvcnRzPUksSS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFIsRSl7Y29uc3Qgej1KLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0''@;'; put 'put ''aGlzLFIpLnRvU3RyaW5nKCJiYXNlNjQiKSxqPVsiLS0tLS1CRUdJTiAiK0UubGFiZWwrIi0tLS0tIl07Zm9yKGxldCBWPTA7Vjx6Lmxlbmd0aDtWKz02NClqLnB1c2goei5zbGljZShWLFYrNjQpKTtyZXR1cm4gai5wdXNoKCItLS0tLUVORCAiK0UubGFiZWwrIi0tLS0tIiksai5qb2luKCJc''@;'; put 'put ''biIpfX0sNDU5MDpmdW5jdGlvbihILEIsTCl7IWZ1bmN0aW9uKEssSil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEkoZyxDKXtpZighZyl0aHJvdyBuZXcgRXJyb3IoQ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBSKGcsQyl7Zy5zdXBlcl89Qzt2YXIgTT1mdW5jdGlvbigpe307TS5w''@;'; put 'put ''cm90b3R5cGU9Qy5wcm90b3R5cGUsZy5wcm90b3R5cGU9bmV3IE0sZy5wcm90b3R5cGUuY29uc3RydWN0b3I9Z31mdW5jdGlvbiBFKGcsQyxNKXtpZihFLmlzQk4oZykpcmV0dXJuIGc7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGws''@;'; put 'put ''bnVsbCE9PWcmJigibGUiIT09QyYmImJlIiE9PUN8fChNPUMsQz0xMCksdGhpcy5faW5pdChnfHwwLEN8fDEwLE18fCJiZSIpKX12YXIgejsib2JqZWN0Ij09dHlwZW9mIEs/Sy5leHBvcnRzPUU6Si5CTj1FLEUuQk49RSxFLndvcmRTaXplPTI2O3RyeXt6PXR5cGVvZiB3aW5kb3c8InUiJiZ2''@;'; put 'put ''b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6TCg5NTApLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gaihnLEMpe3ZhciBNPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gTT49NjUmJk08PTcwP00tNTU6TT49OTcmJk08PTEwMj9NLTg3Ok0tNDgmMTV9ZnVuY3Rpb24gVihnLEMsTSl7''@;'; put 'put ''dmFyIHk9aihnLE0pO3JldHVybiBNLTE+PUMmJih5fD1qKGcsTS0xKTw8NCkseX1mdW5jdGlvbiBHKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9TWF0aC5taW4oZy5sZW5ndGgsTSksUT1DO1E8UztRKyspe3ZhciByZT1nLmNoYXJDb2RlQXQoUSktNDg7cCo9eSxwKz1yZT49NDk/cmUtNDkrMTA6''@;'; put 'put ''cmU+PTE3P3JlLTE3KzEwOnJlfXJldHVybiBwfUUuaXNCTj1mdW5jdGlvbihnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1h''@;'; put 'put ''eD1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4wP2c6Q30sRS5taW49ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxNKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxD''@;'; put 'put ''LE0pO2lmKCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdEFycmF5KGcsQyxNKTsiaGV4Ij09PUMmJihDPTE2KSxJKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciB5PTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih5KyssdGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0xKSx5PGcubGVuZ3RoJiYoMTY9PT1DP3RoaXMuX3BhcnNlSGV4KGcseSxNKToodGhpcy5fcGFyc2VCYXNlKGcsQyx5KSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsTSkpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLE0p''@;'; put 'put ''e2c8MCYmKHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEkoZzw5''@;'; put 'put ''MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU0mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLE0pfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxNKXtp''@;'; put 'put ''ZihJKCJudW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHk9MDt5''@;'; put 'put ''PHRoaXMubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPTA7dmFyIHAsUyxRPTA7aWYoImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMSxwPTA7eT49MDt5LT0zKXRoaXMud29yZHNbcF18PShTPWdbeV18Z1t5LTFdPDw4fGdbeS0yXTw8MTYpPDxRJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT1TPj4+''@;'; put 'put ''MjYtUSY2NzEwODg2MywoUSs9MjQpPj0yNiYmKFEtPTI2LHArKyk7ZWxzZSBpZigibGUiPT09TSlmb3IoeT0wLHA9MDt5PGcubGVuZ3RoO3krPTMpdGhpcy53b3Jkc1twXXw9KFM9Z1t5XXxnW3krMV08PDh8Z1t5KzJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1R''@;'; put 'put ''JjY3MTA4ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLE0pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgp''@;'; put 'put ''O2Zvcih2YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09MDt2YXIgcCxTPTAsUT0wO2lmKCJiZSI9PT1NKWZvcih5PWcubGVuZ3RoLTE7eT49Qzt5LT0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tR''@;'; put 'put ''Kz0xXXw9cD4+PjI2KTpTKz04O2Vsc2UgZm9yKHk9KGcubGVuZ3RoLUMpJTI9PTA/QysxOkM7eTxnLmxlbmd0aDt5Kz0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O3RoaXMuc3RyaXAo''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihnLEMsTSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCxwPTE7cDw9NjcxMDg4NjM7cCo9Qyl5Kys7eS0tLHA9cC9DfDA7Zm9yKHZhciBTPWcubGVuZ3RoLU0sUT1TJXkscmU9TWF0aC5taW4oUyxTLVEp''@;'; put 'put ''K00sZmU9MCxtZT1NO21lPHJlO21lKz15KWZlPUcoZyxtZSxtZSt5LEMpLHRoaXMuaW11bG4ocCksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSk7aWYoMCE9PVEpe3ZhciBrZT0xO2ZvcihmZT1HKGcsbWUsZy5sZW5ndGgsQyksbWU9''@;'; put 'put ''MDttZTxRO21lKyspa2UqPUM7dGhpcy5pbXVsbihrZSksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKylnLndvcmRzW0NdPXRoaXMud29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwp''@;'; put 'put ''O3JldHVybiB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEm''@;'; put 'put ''JjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCks''@;'; put 'put ''dGhpc30sRS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgVz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0''@;'; put 'put ''MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwy''@;'; put 'put ''MDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdGUoZyxDLE0pe00ubmVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciB5PWcubGVuZ3RoK0MubGVuZ3RofDA7TS5sZW5ndGg9eSx5PXktMXww''@;'; put 'put ''O3ZhciBwPTB8Zy53b3Jkc1swXSxTPTB8Qy53b3Jkc1swXSxRPXAqUyxmZT1RLzY3MTA4ODY0fDA7TS53b3Jkc1swXT02NzEwODg2MyZRO2Zvcih2YXIgbWU9MTttZTx5O21lKyspe2Zvcih2YXIga2U9ZmU+Pj4yNixUZT02NzEwODg2MyZmZSxQZT1NYXRoLm1pbihtZSxDLmxlbmd0aC0xKSxG''@;'; put 'put ''ZT1NYXRoLm1heCgwLG1lLWcubGVuZ3RoKzEpO0ZlPD1QZTtGZSsrKWtlKz0oUT0ocD0wfGcud29yZHNbbWUtRmV8MF0pKihTPTB8Qy53b3Jkc1tGZV0pK1RlKS82NzEwODg2NHwwLFRlPTY3MTA4ODYzJlE7TS53b3Jkc1ttZV09MHxUZSxmZT0wfGtlfXJldHVybiAwIT09ZmU/TS53b3Jkc1tt''@;'; put 'put ''ZV09MHxmZTpNLmxlbmd0aC0tLE0uc3RyaXAoKX1FLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBNO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe009IiI7Zm9yKHZhciB5PTAscD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIFE9dGhpcy53''@;'; put 'put ''b3Jkc1tTXSxyZT0oMTY3NzcyMTUmKFE8PHl8cCkpLnRvU3RyaW5nKDE2KTtNPTAhPShwPVE+Pj4yNC15JjE2Nzc3MjE1KXx8UyE9PXRoaXMubGVuZ3RoLTE/V1s2LXJlLmxlbmd0aF0rcmUrTTpyZStNLCh5Kz0yKT49MjYmJih5LT0yNixTLS0pfWZvcigwIT09cCYmKE09cC50b1N0cmluZygx''@;'; put 'put ''NikrTSk7TS5sZW5ndGglQyE9MDspTT0iMCIrTTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihNPSItIitNKSxNfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBmZT1VW2ddLG1lPXFbZ107TT0iIjt2YXIga2U9dGhpcy5jbG9uZSgpO2ZvcihrZS5uZWdhdGl2ZT0wOyFrZS5pc1pl''@;'; put 'put ''cm8oKTspe3ZhciBUZT1rZS5tb2RuKG1lKS50b1N0cmluZyhnKTtNPShrZT1rZS5pZGl2bihtZSkpLmlzWmVybygpP1RlK006V1tmZS1UZS5sZW5ndGhdK1RlK019Zm9yKHRoaXMuaXNaZXJvKCkmJihNPSIwIitNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSYmKE09Ii0iK00pLE19SSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10''@;'; put 'put ''aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUu''@;'; put 'put ''cHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gSSh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihn''@;'; put 'put ''LEMpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT10aGlzLmJ5dGVMZW5ndGgoKSxwPU18fE1hdGgubWF4KDEseSk7SSh5PD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVu''@;'; put 'put ''Z3RoIiksSShwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgUyxRLHJlPSJsZSI9PT1DLGZlPW5ldyBnKHApLG1lPXRoaXMuY2xvbmUoKTtpZihyZSl7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCks''@;'; put 'put ''ZmVbUV09Uztmb3IoO1E8cDtRKyspZmVbUV09MH1lbHNle2ZvcihRPTA7UTxwLXk7USsrKWZlW1FdPTA7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbcC1RLTFdPVN9cmV0dXJuIGZlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGgu''@;'; put 'put ''Y2x6MzI/ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsTT0wO3JldHVybiBDPj00MDk2JiYoTSs9MTMsQz4+Pj0xMyksQz49NjQmJihNKz03LEM+Pj49NyksQz49OCYmKE0rPTQsQz4+Pj00KSxDPj0yJiYoTSs9MixDPj4+PTIpLE0rQ30s''@;'; put 'put ''RS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcpe2lmKDA9PT1nKXJldHVybiAyNjt2YXIgQz1nLE09MDtyZXR1cm4hKDgxOTEmQykmJihNKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKE0rPTcsQz4+Pj03KSwhKDE1JkMpJiYoTSs9NCxDPj4+PTQpLCEoMyZDKSYmKE0rPTIsQz4+Pj0y''@;'; put 'put ''KSwhKDEmQykmJk0rKyxNfSxFLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRo''@;'; put 'put ''aXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1NLDI2IT09TSlicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBN''@;'; put 'put ''YXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHRoaXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCku''@;'; put 'put ''aW5lZygpfSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109''@;'; put 'put ''MDtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVv''@;'; put 'put ''cihnKX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNs''@;'; put 'put ''b25lKCkuaXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlzKX0sRS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dJmcud29yZHNb''@;'; put 'put ''TV07cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsTTt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLE09Zyk6KEM9ZyxNPXRoaXMpO2Zvcih2YXIgeT0wO3k8TS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09Qy53b3Jkc1t5XV5NLndvcmRzW3ldO2lmKHRoaXMhPT1DKWZvcig7''@;'; put 'put ''eTxDLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT1DLndvcmRzW3ldO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9''@;'; put 'put ''LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xv''@;'; put 'put ''bmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhpcyl9LEUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxNPWclMjY7dGhpcy5fZXhwYW5kKEMpLE0+MCYmQy0tO2Zvcih2YXIgeT0wO3k8''@;'; put 'put ''Qzt5KyspdGhpcy53b3Jkc1t5XT02NzEwODg2MyZ+dGhpcy53b3Jkc1t5XTtyZXR1cm4gTT4wJiYodGhpcy53b3Jkc1t5XT1+dGhpcy53b3Jkc1t5XSY2NzEwODg2Mz4+MjYtTSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCku''@;'; put 'put ''aW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZyxDKXtJKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIE09Zy8yNnwwLHk9ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXT1DP3RoaXMud29yZHNbTV18MTw8eTp0aGlzLndvcmRzW01dJn4o''@;'; put 'put ''MTw8eSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcpe3ZhciBDLE0seTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWdu''@;'; put 'put ''KCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJldHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIHA9MCxTPTA7''@;'; put 'put ''Uzx5Lmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT02NzEwODg2MyYoQz0oMHxNLndvcmRzW1NdKSsoMHx5LndvcmRzW1NdKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZTPE0ubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pK3ApLHA9Qz4+PjI2O2lm''@;'; put 'put ''KHRoaXMubGVuZ3RoPU0ubGVuZ3RoLDAhPT1wKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE0hPT10aGlzKWZvcig7UzxNLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1NLndvcmRzW1NdO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rp''@;'; put 'put ''b24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRo''@;'; put 'put ''aXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1''@;'; put 'put ''cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0seSxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztwPjA/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIFM9MCxRPTA7UTx5Lmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKS0oMHx5LndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEw''@;'; put 'put ''ODg2MyZDO2Zvcig7MCE9PVMmJlE8TS5sZW5ndGg7USsrKVM9KEM9KDB8TS53b3Jkc1tRXSkrUyk+PjI2LHRoaXMud29yZHNbUV09NjcxMDg4NjMmQztpZigwPT09UyYmUTxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtRPE0ubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPU0ud29yZHNbUV07cmV0''@;'; put 'put ''dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFEpLE0hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBuZT1mdW5jdGlvbihnLEMsTSl7dmFy''@;'; put 'put ''IHkscCxTLFE9Zy53b3JkcyxyZT1DLndvcmRzLGZlPU0ud29yZHMsbWU9MCxrZT0wfFFbMF0sVGU9ODE5MSZrZSxQZT1rZT4+PjEzLEZlPTB8UVsxXSxOZT04MTkxJkZlLExlPUZlPj4+MTMsQmU9MHxRWzJdLEhlPTgxOTEmQmUsUWU9QmU+Pj4xMyxtdD0wfFFbM10sS2U9ODE5MSZtdCx3ZT1t''@;'; put 'put ''dD4+PjEzLEllPTB8UVs0XSxPZT04MTkxJkllLGV0PUllPj4+MTMsbnQ9MHxRWzVdLHFlPTgxOTEmbnQsaHQ9bnQ+Pj4xMyxFZT0wfFFbNl0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8UVs3XSxjdD04MTkxJmF0LE90PWF0Pj4+MTMsUHQ9MHxRWzhdLEF0PTgxOTEmUHQsSnQ9UHQ+Pj4x''@;'; put 'put ''Myxtbj0wfFFbOV0sTnQ9ODE5MSZtbixibj1tbj4+PjEzLEduPTB8cmVbMF0sb249ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8cmVbMV0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8cmVbMl0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8cmVbM10sVnQ9ODE5MSZfdCxfbj1fdD4+PjEz''@;'; put 'put ''LG90PTB8cmVbNF0sSXQ9ODE5MSZvdCxubj1vdD4+PjEzLER0PTB8cmVbNV0sdnQ9ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8cmVbNl0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8cmVbN10sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8cmVbOF0scXQ9ODE5MSZGbixIbj1Gbj4+PjEz''@;'; put 'put ''LGlpPTB8cmVbOV0sY249ODE5MSZpaSxqbj1paT4+PjEzO00ubmVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPTE5O3ZhciBYcj0obWUrKHk9TWF0aC5pbXVsKFRlLG9uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChUZSwkbikpK01hdGguaW11bChQZSxvbil8MCkp''@;'; put 'put ''PDwxMyl8MDttZT0oKFM9TWF0aC5pbXVsKFBlLCRuKSkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE5lLG9uKSxwPShwPU1hdGguaW11bChOZSwkbikpK01hdGguaW11bChMZSxvbil8MCxTPU1hdGguaW11bChMZSwkbik7dmFyIHZpPShtZSsoeT15''@;'; put 'put ''K01hdGguaW11bChUZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLHBuKXwwKStNYXRoLmltdWwoUGUscHQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLHBuKXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4NjMseT1NYXRoLmltdWwo''@;'; put 'put ''SGUsb24pLHA9KHA9TWF0aC5pbXVsKEhlLCRuKSkrTWF0aC5pbXVsKFFlLG9uKXwwLFM9TWF0aC5pbXVsKFFlLCRuKSx5PXkrTWF0aC5pbXVsKE5lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUscG4pfDApK01hdGguaW11bChMZSxwdCl8MCxTPVMrTWF0aC5pbXVsKExlLHBuKXwwO3ZhciBF''@;'; put 'put ''cj0obWUrKHk9eStNYXRoLmltdWwoVGUsQ3QpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxlbil8MCkrTWF0aC5pbXVsKFBlLEN0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxlbil8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9''@;'; put 'put ''TWF0aC5pbXVsKEtlLG9uKSxwPShwPU1hdGguaW11bChLZSwkbikpK01hdGguaW11bCh3ZSxvbil8MCxTPU1hdGguaW11bCh3ZSwkbikseT15K01hdGguaW11bChIZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLHBuKXwwKStNYXRoLmltdWwoUWUscHQpfDAsUz1TK01hdGguaW11bChRZSxw''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKE5lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsZW4pfDApK01hdGguaW11bChMZSxDdCl8MCxTPVMrTWF0aC5pbXVsKExlLGVuKXwwO3ZhciBZaT0obWUrKHk9eStNYXRoLmltdWwoVGUsVnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxf''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKFBlLFZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxfbil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE9lLG9uKSxwPShwPU1hdGguaW11bChPZSwkbikpK01hdGguaW11bChldCxvbil8MCxTPU1h''@;'; put 'put ''dGguaW11bChldCwkbikseT15K01hdGguaW11bChLZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsUz1TK01hdGguaW11bCh3ZSxwbil8MCx5PXkrTWF0aC5pbXVsKEhlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsZW4pfDApK01hdGguaW11''@;'; put 'put ''bChRZSxDdCl8MCxTPVMrTWF0aC5pbXVsKFFlLGVuKXwwLHk9eStNYXRoLmltdWwoTmUsVnQpfDAscD0ocD1wK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwLFM9UytNYXRoLmltdWwoTGUsX24pfDA7dmFyIEpyPShtZSsoeT15K01hdGguaW11bChUZSxJdCl8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLG5uKXwwKStNYXRoLmltdWwoUGUsSXQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLG5uKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwocWUsb24pLHA9KHA9TWF0aC5pbXVsKHFl''@;'; put 'put ''LCRuKSkrTWF0aC5pbXVsKGh0LG9uKXwwLFM9TWF0aC5pbXVsKGh0LCRuKSx5PXkrTWF0aC5pbXVsKE9lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UscG4pfDApK01hdGguaW11bChldCxwdCl8MCxTPVMrTWF0aC5pbXVsKGV0LHBuKXwwLHk9eStNYXRoLmltdWwoS2UsQ3QpfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bChLZSxlbil8MCkrTWF0aC5pbXVsKHdlLEN0KXwwLFM9UytNYXRoLmltdWwod2UsZW4pfDAseT15K01hdGguaW11bChIZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLF9uKXwwKStNYXRoLmltdWwoUWUsVnQpfDAsUz1TK01hdGguaW11bChRZSxfbil8MCx5PXkrTWF0aC5p''@;'; put 'put ''bXVsKE5lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsbm4pfDApK01hdGguaW11bChMZSxJdCl8MCxTPVMrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbz0obWUrKHk9eStNYXRoLmltdWwoVGUsdnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxHdCl8MCkrTWF0aC5pbXVs''@;'; put 'put ''KFBlLHZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxHdCl8MCkrKHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKERlLG9uKSxwPShwPU1hdGguaW11bChEZSwkbikpK01hdGguaW11bCgkZSxvbil8MCxTPU1hdGguaW11bCgkZSwkbiks''@;'; put 'put ''eT15K01hdGguaW11bChxZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLHBuKXwwKStNYXRoLmltdWwoaHQscHQpfDAsUz1TK01hdGguaW11bChodCxwbil8MCx5PXkrTWF0aC5pbXVsKE9lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsZW4pfDApK01hdGguaW11bChldCxDdCl8MCxTPVMr''@;'; put 'put ''TWF0aC5pbXVsKGV0LGVuKXwwLHk9eStNYXRoLmltdWwoS2UsVnQpfDAscD0ocD1wK01hdGguaW11bChLZSxfbil8MCkrTWF0aC5pbXVsKHdlLFZ0KXwwLFM9UytNYXRoLmltdWwod2UsX24pfDAseT15K01hdGguaW11bChIZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLG5uKXwwKStNYXRo''@;'; put 'put ''LmltdWwoUWUsSXQpfDAsUz1TK01hdGguaW11bChRZSxubil8MCx5PXkrTWF0aC5pbXVsKE5lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsR3QpfDApK01hdGguaW11bChMZSx2dCl8MCxTPVMrTWF0aC5pbXVsKExlLEd0KXwwO3ZhciBCcj0obWUrKHk9eStNYXRoLmltdWwoVGUsenQpfDAp''@;'; put 'put ''fDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxNbil8MCkrTWF0aC5pbXVsKFBlLHp0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxNbil8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGN0LG9uKSxwPShwPU1hdGguaW11''@;'; put 'put ''bChjdCwkbikpK01hdGguaW11bChPdCxvbil8MCxTPU1hdGguaW11bChPdCwkbikseT15K01hdGguaW11bChEZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoJGUscHQpfDAsUz1TK01hdGguaW11bCgkZSxwbil8MCx5PXkrTWF0aC5pbXVsKHFlLEN0KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChodCxDdCl8MCxTPVMrTWF0aC5pbXVsKGh0LGVuKXwwLHk9eStNYXRoLmltdWwoT2UsVnQpfDAscD0ocD1wK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLFM9UytNYXRoLmltdWwoZXQsX24pfDAseT15K01h''@;'; put 'put ''dGguaW11bChLZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLG5uKXwwKStNYXRoLmltdWwod2UsSXQpfDAsUz1TK01hdGguaW11bCh3ZSxubil8MCx5PXkrTWF0aC5pbXVsKEhlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsR3QpfDApK01hdGguaW11bChRZSx2dCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKFFlLEd0KXwwLHk9eStNYXRoLmltdWwoTmUsenQpfDAscD0ocD1wK01hdGguaW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwLFM9UytNYXRoLmltdWwoTGUsTW4pfDA7dmFyIEppPShtZSsoeT15K01hdGguaW11bChUZSxzbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKFRlLEJuKXwwKStNYXRoLmltdWwoUGUsc24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEJuKXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoQXQsb24pLHA9KHA9TWF0aC5pbXVsKEF0LCRuKSkrTWF0aC5pbXVsKEp0LG9u''@;'; put 'put ''KXwwLFM9TWF0aC5pbXVsKEp0LCRuKSx5PXkrTWF0aC5pbXVsKGN0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QscG4pfDApK01hdGguaW11bChPdCxwdCl8MCxTPVMrTWF0aC5pbXVsKE90LHBuKXwwLHk9eStNYXRoLmltdWwoRGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKCRlLEN0KXwwLFM9UytNYXRoLmltdWwoJGUsZW4pfDAseT15K01hdGguaW11bChxZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLF9uKXwwKStNYXRoLmltdWwoaHQsVnQpfDAsUz1TK01hdGguaW11bChodCxfbil8MCx5PXkrTWF0aC5pbXVsKE9lLEl0KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoT2Usbm4pfDApK01hdGguaW11bChldCxJdCl8MCxTPVMrTWF0aC5pbXVsKGV0LG5uKXwwLHk9eStNYXRoLmltdWwoS2UsdnQpfDAscD0ocD1wK01hdGguaW11bChLZSxHdCl8MCkrTWF0aC5pbXVsKHdlLHZ0KXwwLFM9UytNYXRoLmltdWwod2UsR3QpfDAseT15K01hdGguaW11''@;'; put 'put ''bChIZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLE1uKXwwKStNYXRoLmltdWwoUWUsenQpfDAsUz1TK01hdGguaW11bChRZSxNbil8MCx5PXkrTWF0aC5pbXVsKE5lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCxTPVMrTWF0aC5pbXVsKExl''@;'; put 'put ''LEJuKXwwO3ZhciB0bz0obWUrKHk9eStNYXRoLmltdWwoVGUscXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxIbil8MCkrTWF0aC5pbXVsKFBlLHF0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxIbil8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8m''@;'; put 'put ''PTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LG9uKSxwPShwPU1hdGguaW11bChOdCwkbikpK01hdGguaW11bChibixvbil8MCxTPU1hdGguaW11bChibiwkbikseT15K01hdGguaW11bChBdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoSnQscHQpfDAsUz1TK01h''@;'; put 'put ''dGguaW11bChKdCxwbil8MCx5PXkrTWF0aC5pbXVsKGN0LEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsZW4pfDApK01hdGguaW11bChPdCxDdCl8MCxTPVMrTWF0aC5pbXVsKE90LGVuKXwwLHk9eStNYXRoLmltdWwoRGUsVnQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKCRlLFZ0KXwwLFM9UytNYXRoLmltdWwoJGUsX24pfDAseT15K01hdGguaW11bChxZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsUz1TK01hdGguaW11bChodCxubil8MCx5PXkrTWF0aC5pbXVsKE9lLHZ0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoT2UsR3QpfDApK01hdGguaW11bChldCx2dCl8MCxTPVMrTWF0aC5pbXVsKGV0LEd0KXwwLHk9eStNYXRoLmltdWwoS2UsenQpfDAscD0ocD1wK01hdGguaW11bChLZSxNbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLFM9UytNYXRoLmltdWwod2UsTW4pfDAseT15K01hdGguaW11bChIZSxz''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKEhlLEJuKXwwKStNYXRoLmltdWwoUWUsc24pfDAsUz1TK01hdGguaW11bChRZSxCbil8MCx5PXkrTWF0aC5pbXVsKE5lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsSG4pfDApK01hdGguaW11bChMZSxxdCl8MCxTPVMrTWF0aC5pbXVsKExlLEhuKXww''@;'; put 'put ''O3ZhciBjbz0obWUrKHk9eStNYXRoLmltdWwoVGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxqbil8MCkrTWF0aC5pbXVsKFBlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4''@;'; put 'put ''ODYzLHk9TWF0aC5pbXVsKE50LHB0KSxwPShwPU1hdGguaW11bChOdCxwbikpK01hdGguaW11bChibixwdCl8MCxTPU1hdGguaW11bChibixwbikseT15K01hdGguaW11bChBdCxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsUz1TK01hdGguaW11''@;'; put 'put ''bChKdCxlbil8MCx5PXkrTWF0aC5pbXVsKGN0LFZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsX24pfDApK01hdGguaW11bChPdCxWdCl8MCxTPVMrTWF0aC5pbXVsKE90LF9uKXwwLHk9eStNYXRoLmltdWwoRGUsSXQpfDAscD0ocD1wK01hdGguaW11bChEZSxubil8MCkrTWF0aC5pbXVsKCRl''@;'; put 'put ''LEl0KXwwLFM9UytNYXRoLmltdWwoJGUsbm4pfDAseT15K01hdGguaW11bChxZSx2dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsUz1TK01hdGguaW11bChodCxHdCl8MCx5PXkrTWF0aC5pbXVsKE9lLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2Us''@;'; put 'put ''TW4pfDApK01hdGguaW11bChldCx6dCl8MCxTPVMrTWF0aC5pbXVsKGV0LE1uKXwwLHk9eStNYXRoLmltdWwoS2Usc24pfDAscD0ocD1wK01hdGguaW11bChLZSxCbil8MCkrTWF0aC5pbXVsKHdlLHNuKXwwLFM9UytNYXRoLmltdWwod2UsQm4pfDAseT15K01hdGguaW11bChIZSxxdCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmltdWwoUWUscXQpfDAsUz1TK01hdGguaW11bChRZSxIbil8MDt2YXIgbG89KG1lKyh5PXkrTWF0aC5pbXVsKE5lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTmUsam4pfDApK01hdGguaW11bChMZSxjbil8MCkpPDwx''@;'; put 'put ''Myl8MDttZT0oKFM9UytNYXRoLmltdWwoTGUsam4pfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxDdCkscD0ocD1NYXRoLmltdWwoTnQsZW4pKStNYXRoLmltdWwoYm4sQ3QpfDAsUz1NYXRoLmltdWwoYm4sZW4pLHk9eStNYXRoLmltdWwo''@;'; put 'put ''QXQsVnQpfDAscD0ocD1wK01hdGguaW11bChBdCxfbil8MCkrTWF0aC5pbXVsKEp0LFZ0KXwwLFM9UytNYXRoLmltdWwoSnQsX24pfDAseT15K01hdGguaW11bChjdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKGN0LG5uKXwwKStNYXRoLmltdWwoT3QsSXQpfDAsUz1TK01hdGguaW11bChPdCxu''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKERlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsR3QpfDApK01hdGguaW11bCgkZSx2dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEd0KXwwLHk9eStNYXRoLmltdWwocWUsenQpfDAscD0ocD1wK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoaHQsTW4pfDAseT15K01hdGguaW11bChPZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKE9lLEJuKXwwKStNYXRoLmltdWwoZXQsc24pfDAsUz1TK01hdGguaW11bChldCxCbil8MCx5PXkrTWF0aC5pbXVsKEtlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UsSG4pfDAp''@;'; put 'put ''K01hdGguaW11bCh3ZSxxdCl8MCxTPVMrTWF0aC5pbXVsKHdlLEhuKXwwO3ZhciBzbz0obWUrKHk9eStNYXRoLmltdWwoSGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChR''@;'; put 'put ''ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LFZ0KSxwPShwPU1hdGguaW11bChOdCxfbikpK01hdGguaW11bChibixWdCl8MCxTPU1hdGguaW11bChibixfbikseT15K01hdGguaW11bChBdCxJdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEF0LG5uKXwwKStNYXRoLmltdWwoSnQsSXQpfDAsUz1TK01hdGguaW11bChKdCxubil8MCx5PXkrTWF0aC5pbXVsKGN0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsR3QpfDApK01hdGguaW11bChPdCx2dCl8MCxTPVMrTWF0aC5pbXVsKE90LEd0KXwwLHk9eStNYXRoLmltdWwoRGUsenQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChEZSxNbil8MCkrTWF0aC5pbXVsKCRlLHp0KXwwLFM9UytNYXRoLmltdWwoJGUsTW4pfDAseT15K01hdGguaW11bChxZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKHFlLEJuKXwwKStNYXRoLmltdWwoaHQsc24pfDAsUz1TK01hdGguaW11bChodCxCbil8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKE9lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsSG4pfDApK01hdGguaW11bChldCxxdCl8MCxTPVMrTWF0aC5pbXVsKGV0LEhuKXwwO3ZhciBYaT0obWUrKHk9eStNYXRoLmltdWwoS2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChLZSxqbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKHdlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCh3ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEl0KSxwPShwPU1hdGguaW11bChOdCxubikpK01hdGguaW11bChibixJdCl8MCxTPU1hdGguaW11''@;'; put 'put ''bChibixubikseT15K01hdGguaW11bChBdCx2dCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoSnQsdnQpfDAsUz1TK01hdGguaW11bChKdCxHdCl8MCx5PXkrTWF0aC5pbXVsKGN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsTW4pfDApK01hdGguaW11bChPdCx6''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKE90LE1uKXwwLHk9eStNYXRoLmltdWwoRGUsc24pfDAscD0ocD1wK01hdGguaW11bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLFM9UytNYXRoLmltdWwoJGUsQm4pfDAseT15K01hdGguaW11bChxZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEhu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoaHQscXQpfDAsUz1TK01hdGguaW11bChodCxIbil8MDt2YXIgcG89KG1lKyh5PXkrTWF0aC5pbXVsKE9lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT2Usam4pfDApK01hdGguaW11bChldCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmlt''@;'; put 'put ''dWwoZXQsam4pfDApKyhwPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCx2dCkscD0ocD1NYXRoLmltdWwoTnQsR3QpKStNYXRoLmltdWwoYm4sdnQpfDAsUz1NYXRoLmltdWwoYm4sR3QpLHk9eStNYXRoLmltdWwoQXQsenQpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChBdCxNbil8MCkrTWF0aC5pbXVsKEp0LHp0KXwwLFM9UytNYXRoLmltdWwoSnQsTW4pfDAseT15K01hdGguaW11bChjdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKGN0LEJuKXwwKStNYXRoLmltdWwoT3Qsc24pfDAsUz1TK01hdGguaW11bChPdCxCbil8MCx5PXkrTWF0aC5pbXVsKERl''@;'; put 'put ''LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSG4pfDApK01hdGguaW11bCgkZSxxdCl8MCxTPVMrTWF0aC5pbXVsKCRlLEhuKXwwO3ZhciBfcj0obWUrKHk9eStNYXRoLmltdWwocWUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNu''@;'; put 'put ''KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChodCxqbil8MCkrKHA+Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHp0KSxwPShwPU1hdGguaW11bChOdCxNbikpK01hdGguaW11bChibix6dCl8MCxTPU1hdGguaW11bChibixNbikseT15K01h''@;'; put 'put ''dGguaW11bChBdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRoLmltdWwoSnQsc24pfDAsUz1TK01hdGguaW11bChKdCxCbil8MCx5PXkrTWF0aC5pbXVsKGN0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsSG4pfDApK01hdGguaW11bChPdCxxdCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKE90LEhuKXwwO3ZhciBGaT0obWUrKHk9eStNYXRoLmltdWwoRGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCgkZSxqbil8MCkrKHA+Pj4xMyl8MCkrKEZpPj4+MjYp''@;'; put 'put ''fDAsRmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHNuKSxwPShwPU1hdGguaW11bChOdCxCbikpK01hdGguaW11bChibixzbil8MCxTPU1hdGguaW11bChibixCbikseT15K01hdGguaW11bChBdCxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEhuKXwwKStNYXRoLmltdWwoSnQscXQpfDAs''@;'; put 'put ''Uz1TK01hdGguaW11bChKdCxIbil8MDt2YXIgSG89KG1lKyh5PXkrTWF0aC5pbXVsKGN0LGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoY3Qsam4pfDApK01hdGguaW11bChPdCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoT3Qsam4pfDApKyhwPj4+MTMpfDAp''@;'; put 'put ''KyhIbz4+PjI2KXwwLEhvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxxdCkscD0ocD1NYXRoLmltdWwoTnQsSG4pKStNYXRoLmltdWwoYm4scXQpfDAsUz1NYXRoLmltdWwoYm4sSG4pO3ZhciBnYT0obWUrKHk9eStNYXRoLmltdWwoQXQsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChBdCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChKdCxqbil8MCkrKHA+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzO3ZhciBsYT0obWUrKHk9TWF0aC5pbXVsKE50LGNuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11''@;'; put 'put ''bChOdCxqbikpK01hdGguaW11bChibixjbil8MCkpPDwxMyl8MDtyZXR1cm4gbWU9KChTPU1hdGguaW11bChibixqbikpKyhwPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEwODg2MyxmZVswXT1YcixmZVsxXT12aSxmZVsyXT1FcixmZVszXT1ZaSxmZVs0XT1KcixmZVs1XT1hbyxmZVs2''@;'; put 'put ''XT1CcixmZVs3XT1KaSxmZVs4XT10byxmZVs5XT1jbyxmZVsxMF09bG8sZmVbMTFdPXNvLGZlWzEyXT1YaSxmZVsxM109cG8sZmVbMTRdPV9yLGZlWzE1XT1GaSxmZVsxNl09SG8sZmVbMTddPWdhLGZlWzE4XT1sYSwwIT09bWUmJihmZVsxOV09bWUsTS5sZW5ndGgrKyksTX07ZnVuY3Rpb24g''@;'; put 'put ''aWUoZyxDLE0pe3JldHVybihuZXcgbGUpLm11bHAoZyxDLE0pfWZ1bmN0aW9uIGxlKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwobmU9dGUpLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIHk9dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/bmUodGhpcyxnLEMpOnk8NjM/dGUodGhpcyxnLEMpOnk8MTAyND9mdW5jdGlvbihwLFMsUSl7US5uZWdhdGl2ZT1TLm5lZ2F0aXZlXnAubmVnYXRpdmUsUS5sZW5ndGg9cC5sZW5ndGgrUy5sZW5ndGg7Zm9yKHZhciByZT0wLGZlPTAsbWU9MDttZTxR''@;'; put 'put ''Lmxlbmd0aC0xO21lKyspe3ZhciBrZT1mZTtmZT0wO2Zvcih2YXIgVGU9NjcxMDg4NjMmcmUsUGU9TWF0aC5taW4obWUsUy5sZW5ndGgtMSksRmU9TWF0aC5tYXgoMCxtZS1wLmxlbmd0aCsxKTtGZTw9UGU7RmUrKyl7dmFyIExlPSgwfHAud29yZHNbbWUtRmVdKSooMHxTLndvcmRzW0ZlXSks''@;'; put 'put ''QmU9NjcxMDg4NjMmTGU7VGU9NjcxMDg4NjMmKEJlPUJlK1RlfDApLGZlKz0oa2U9KGtlPWtlKyhMZS82NzEwODg2NHwwKXwwKSsoQmU+Pj4yNil8MCk+Pj4yNixrZSY9NjcxMDg4NjN9US53b3Jkc1ttZV09VGUscmU9a2Usa2U9ZmV9cmV0dXJuIDAhPT1yZT9RLndvcmRzW21lXT1yZTpRLmxl''@;'; put 'put ''bmd0aC0tLFEuc3RyaXAoKX0odGhpcyxnLEMpOmllKHRoaXMsZyxDKX0sbGUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSx5PTA7eTxnO3krKylDW3ldPXRoaXMucmV2QmluKHksTSxnKTty''@;'; put 'put ''ZXR1cm4gQ30sbGUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihnLEMsTSl7aWYoMD09PWd8fGc9PT1NLTEpcmV0dXJuIGc7Zm9yKHZhciB5PTAscD0wO3A8QztwKyspeXw9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiB5fSxsZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsTSx5''@;'; put 'put ''LHAsUyl7Zm9yKHZhciBRPTA7UTxTO1ErKyl5W1FdPUNbZ1tRXV0scFtRXT1NW2dbUV1dfSxsZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXt0aGlzLnBlcm11dGUoUyxnLEMsTSx5LHApO2Zvcih2YXIgUT0xO1E8cDtRPDw9MSlmb3IodmFyIHJlPVE8PDEsZmU9''@;'; put 'put ''TWF0aC5jb3MoMipNYXRoLlBJL3JlKSxtZT1NYXRoLnNpbigyKk1hdGguUEkvcmUpLGtlPTA7a2U8cDtrZSs9cmUpZm9yKHZhciBUZT1mZSxQZT1tZSxGZT0wO0ZlPFE7RmUrKyl7dmFyIE5lPU1ba2UrRmVdLExlPXlba2UrRmVdLEJlPU1ba2UrRmUrUV0sSGU9eVtrZStGZStRXSxRZT1UZSpC''@;'; put 'put ''ZS1QZSpIZTtIZT1UZSpIZStQZSpCZSxNW2tlK0ZlXT1OZSsoQmU9UWUpLHlba2UrRmVdPUxlK0hlLE1ba2UrRmUrUV09TmUtQmUseVtrZStGZStRXT1MZS1IZSxGZSE9PXJlJiYoUWU9ZmUqVGUtbWUqUGUsUGU9ZmUqUGUrbWUqVGUsVGU9UWUpfX0sbGUucHJvdG90eXBlLmd1ZXNzTGVuMTNi''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7dmFyIE09MXxNYXRoLm1heChDLGcpLHk9MSZNLHA9MDtmb3IoTT1NLzJ8MDtNO00+Pj49MSlwKys7cmV0dXJuIDE8PHArMSt5fSxsZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxNKXtpZighKE08PTEpKWZvcih2YXIgeT0wO3k8TS8yO3krKyl7dmFy''@;'; put 'put ''IHA9Z1t5XTtnW3ldPWdbTS15LTFdLGdbTS15LTFdPXAscD1DW3ldLENbeV09LUNbTS15LTFdLENbTS15LTFdPS1wfX0sbGUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT0wLHk9MDt5PEMvMjt5Kyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqeSsx''@;'; put 'put ''XS9DKStNYXRoLnJvdW5kKGdbMip5XS9DKStNO2dbeV09NjcxMDg4NjMmcCxNPXA8NjcxMDg4NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGxlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9MDtTPEM7UysrKU1bMipTXT04MTkxJihwKz0w''@;'; put 'put ''fGdbU10pLE1bMipTKzFdPTgxOTEmKHA+Pj49MTMpLHA+Pj49MTM7Zm9yKFM9MipDO1M8eTsrK1MpTVtTXT0wO0koMD09PXApLEkoMD09KC04MTkyJnApKX0sbGUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPTA7TTxnO00rKylDW01dPTA7cmV0''@;'; put 'put ''dXJuIEN9LGxlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKHkpLFM9dGhpcy5zdHViKHkpLFE9bmV3IEFycmF5KHkpLHJlPW5ldyBBcnJheSh5KSxmZT1uZXcgQXJyYXkoeSks''@;'; put 'put ''bWU9bmV3IEFycmF5KHkpLGtlPW5ldyBBcnJheSh5KSxUZT1uZXcgQXJyYXkoeSksUGU9TS53b3JkcztQZS5sZW5ndGg9eSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxRLHkpLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLG1lLHkpLHRoaXMudHJhbnNmb3JtKFEs''@;'; put 'put ''UyxyZSxmZSx5LHApLHRoaXMudHJhbnNmb3JtKG1lLFMsa2UsVGUseSxwKTtmb3IodmFyIEZlPTA7RmU8eTtGZSsrKXt2YXIgTmU9cmVbRmVdKmtlW0ZlXS1mZVtGZV0qVGVbRmVdO2ZlW0ZlXT1yZVtGZV0qVGVbRmVdK2ZlW0ZlXSprZVtGZV0scmVbRmVdPU5lfXJldHVybiB0aGlzLmNvbmp1''@;'; put 'put ''Z2F0ZShyZSxmZSx5KSx0aGlzLnRyYW5zZm9ybShyZSxmZSxQZSxTLHkscCksdGhpcy5jb25qdWdhdGUoUGUsUyx5KSx0aGlzLm5vcm1hbGl6ZTEzYihQZSx5KSxNLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxNLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxNLnN0cmlwKCl9LEUu''@;'; put 'put ''cHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLGllKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBn''@;'; put 'put ''KSxJKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLE09MDtNPHRoaXMubGVuZ3RoO00rKyl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkqZyxwPSg2NzEwODg2MyZ5KSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPXkvNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZwfXJl''@;'; put 'put ''dHVybiAwIT09QyYmKHRoaXMud29yZHNbTV09Qyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90''@;'; put 'put ''b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKFMpe2Zvcih2YXIgUT1uZXcgQXJyYXkoUy5iaXRMZW5ndGgoKSkscmU9MDtyZTxRLmxlbmd0aDtyZSsrKXt2YXIgbWU9''@;'; put 'put ''cmUlMjY7UVtyZV09KFMud29yZHNbcmUvMjZ8MF0mMTw8bWUpPj4+bWV9cmV0dXJuIFF9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBNPXRoaXMseT0wO3k8Qy5sZW5ndGgmJjA9PT1DW3ldO3krKyxNPU0uc3FyKCkpO2lmKCsreTxDLmxlbmd0aClmb3IodmFy''@;'; put 'put ''IHA9TS5zcXIoKTt5PEMubGVuZ3RoO3krKyxwPXAuc3FyKCkpMCE9PUNbeV0mJihNPU0ubXVsKHApKTtyZXR1cm4gTX0sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxNPWclMjYseT0oZy1NKS8yNixwPTY3MTA4ODYzPj4+''@;'; put 'put ''MjYtTTw8MjYtTTtpZigwIT09TSl7dmFyIFM9MDtmb3IoQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgUT10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1RPDxNfFMsUz1RPj4+MjYtTX1TJiYodGhpcy53b3Jkc1tDXT1TLHRoaXMubGVuZ3RoKyspfWlm''@;'; put 'put ''KDAhPT15KXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNbQyt5XT10aGlzLndvcmRzW0NdO2ZvcihDPTA7Qzx5O0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPXl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLE0pe3ZhciB5O0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSx5PUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LFM9TWF0aC5taW4oKGctcCkvMjYsdGhp''@;'; put 'put ''cy5sZW5ndGgpLFE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHJlPU07aWYoeS09Uyx5PU1hdGgubWF4KDAseSkscmUpe2Zvcih2YXIgZmU9MDtmZTxTO2ZlKyspcmUud29yZHNbZmVdPXRoaXMud29yZHNbZmVdO3JlLmxlbmd0aD1TfWlmKDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRo''@;'; put 'put ''aXMubGVuZ3RoLT1TLGZlPTA7ZmU8dGhpcy5sZW5ndGg7ZmUrKyl0aGlzLndvcmRzW2ZlXT10aGlzLndvcmRzW2ZlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIG1lPTA7Zm9yKGZlPXRoaXMubGVuZ3RoLTE7ZmU+PTAmJigwIT09bWV8fGZlPj15KTtmZS0tKXt2''@;'; put 'put ''YXIga2U9MHx0aGlzLndvcmRzW2ZlXTt0aGlzLndvcmRzW2ZlXT1tZTw8MjYtcHxrZT4+PnAsbWU9a2UmUX1yZXR1cm4gcmUmJjAhPT1tZSYmKHJlLndvcmRzW3JlLmxlbmd0aCsrXT1tZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3Ry''@;'; put 'put ''aXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLE0pe3JldHVybiBJKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsTSl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9TXx8ISh0aGlzLndvcmRzW01dJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0koIm51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1NP3RoaXM6KDAhPT1DJiZNKyssdGhpcy5sZW5ndGg9TWF0aC5taW4o''@;'; put 'put ''TSx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5p''@;'; put 'put ''YWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gSSgibnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNb''@;'; put 'put ''MF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVu''@;'; put 'put ''Z3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5w''@;'; put 'put ''cm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoSSgibnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0x''@;'; put 'put ''LHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jk''@;'; put 'put ''c1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlz''@;'; put 'put ''dWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxNKXt2YXIg''@;'; put 'put ''eSxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtNKTt2YXIgUT0wO2Zvcih5PTA7eTxnLmxlbmd0aDt5Kyspe3A9KDB8dGhpcy53b3Jkc1t5K01dKStRO3ZhciByZT0oMHxnLndvcmRzW3ldKSpDO1E9KChwLT02NzEwODg2MyZyZSk+PjI2KS0ocmUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5K01d''@;'; put 'put ''PTY3MTA4ODYzJnB9Zm9yKDt5PHRoaXMubGVuZ3RoLU07eSsrKVE9KHA9KDB8dGhpcy53b3Jkc1t5K01dKStRKT4+MjYsdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnA7aWYoMD09PVEpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoSSgtMT09PVEpLFE9MCx5PTA7eTx0aGlzLmxlbmd0aDt5Kysp''@;'; put 'put ''UT0ocD0tKDB8dGhpcy53b3Jkc1t5XSkrUSk+PjI2LHRoaXMud29yZHNbeV09NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgTSx5PXRoaXMuY2xvbmUoKSxwPWcsUz0wfHAud29yZHNb''@;'; put 'put ''cC5sZW5ndGgtMV07MCE9KE09MjYtdGhpcy5fY291bnRCaXRzKFMpKSYmKHA9cC51c2hsbihNKSx5Lml1c2hsbihNKSxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIFEscmU9eS5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoUT1uZXcgRShudWxsKSkubGVuZ3RoPXJlKzEsUS53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgZmU9MDtmZTxRLmxlbmd0aDtmZSsrKVEud29yZHNbZmVdPTB9dmFyIG1lPXkuY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHJlKTswPT09bWUubmVnYXRpdmUmJih5PW1lLFEmJihRLndvcmRzW3JlXT0xKSk7Zm9yKHZhciBrZT1yZS0x''@;'; put 'put ''O2tlPj0wO2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHx5LndvcmRzW3AubGVuZ3RoK2tlXSkrKDB8eS53b3Jkc1twLmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL1N8MCw2NzEwODg2MykseS5faXNobG5zdWJtdWwocCxUZSxrZSk7MCE9PXkubmVnYXRpdmU7KVRlLS0seS5uZWdh''@;'; put 'put ''dGl2ZT0wLHkuX2lzaGxuc3VibXVsKHAsMSxrZSkseS5pc1plcm8oKXx8KHkubmVnYXRpdmVePTEpO1EmJihRLndvcmRzW2tlXT1UZSl9cmV0dXJuIFEmJlEuc3RyaXAoKSx5LnN0cmlwKCksImRpdiIhPT1DJiYwIT09TSYmeS5pdXNocm4oTSkse2RpdjpRfHxudWxsLG1vZDp5fX0sRS5wcm90''@;'; put 'put ''b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxNKXtyZXR1cm4gSSghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYo''@;'; put 'put ''eT1TLmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2OnksbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KFM9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJih5PVMuZGl2''@;'; put 'put ''Lm5lZygpKSx7ZGl2OnksbW9kOlMubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OlMuZGl2LG1vZDpwfSk6Zy5sZW5n''@;'; put 'put ''dGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0p''@;'; put 'put ''KX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgeSxwLFN9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3Rv''@;'; put 'put ''dHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlz''@;'; put 'put ''LmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIE09MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QseT1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSxTPU0uY21wKHkpO3JldHVybiBTPDB8fDE9PT1wJiYwPT09Uz9DLmRpdjowIT09Qy5kaXYu''@;'; put 'put ''bmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsTT0wLHk9dGhpcy5sZW5ndGgtMTt5Pj0wO3ktLSlNPShDKk0rKDB8dGhpcy53b3Jkc1t5XSkpJWc7cmV0''@;'; put 'put ''dXJuIE19LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0koZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvZ3wwLEM9eSVnfXJldHVybiB0aGlzLnN0''@;'; put 'put ''cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRp''@;'; put 'put ''dmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHk9bmV3IEUoMSkscD1uZXcgRSgwKSxTPW5ldyBFKDApLFE9bmV3IEUoMSkscmU9MDtDLmlzRXZlbigpJiZNLmlzRXZlbigpOylDLml1c2hybigxKSxNLml1c2hybigxKSwrK3JlO2Zvcih2YXIgZmU9TS5jbG9uZSgpLG1lPUMuY2xvbmUo''@;'; put 'put ''KTshQy5pc1plcm8oKTspe2Zvcih2YXIga2U9MCxUZT0xOyEoQy53b3Jkc1swXSZUZSkmJmtlPDI2Oysra2UsVGU8PD0xKTtpZihrZT4wKWZvcihDLml1c2hybihrZSk7a2UtLSA+MDspKHkuaXNPZGQoKXx8cC5pc09kZCgpKSYmKHkuaWFkZChmZSkscC5pc3ViKG1lKSkseS5pdXNocm4oMSks''@;'; put 'put ''cC5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLEZlPTE7IShNLndvcmRzWzBdJkZlKSYmUGU8MjY7KytQZSxGZTw8PTEpO2lmKFBlPjApZm9yKE0uaXVzaHJuKFBlKTtQZS0tID4wOykoUy5pc09kZCgpfHxRLmlzT2RkKCkpJiYoUy5pYWRkKGZlKSxRLmlzdWIobWUpKSxTLml1c2hybigxKSxRLml1''@;'; put 'put ''c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHkuaXN1YihTKSxwLmlzdWIoUSkpOihNLmlzdWIoQyksUy5pc3ViKHkpLFEuaXN1YihwKSl9cmV0dXJue2E6UyxiOlEsZ2NkOk0uaXVzaGxuKHJlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZl''@;'; put 'put ''KSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHkscD1uZXcgRSgxKSxTPW5ldyBFKDApLFE9TS5jbG9uZSgpO0MuY21wbigxKT4wJiZNLmNtcG4oMSk+MDspe2Zvcih2YXIgcmU9MCxmZT0x''@;'; put 'put ''OyEoQy53b3Jkc1swXSZmZSkmJnJlPDI2OysrcmUsZmU8PD0xKTtpZihyZT4wKWZvcihDLml1c2hybihyZSk7cmUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoUSkscC5pdXNocm4oMSk7Zm9yKHZhciBtZT0wLGtlPTE7IShNLndvcmRzWzBdJmtlKSYmbWU8MjY7KyttZSxrZTw8PTEpO2lmKG1l''@;'; put 'put ''PjApZm9yKE0uaXVzaHJuKG1lKTttZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZChRKSxTLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHAuaXN1YihTKSk6KE0uaXN1YihDKSxTLmlzdWIocCkpfXJldHVybih5PTA9PT1DLmNtcG4oMSk/cDpTKS5jbXBuKDApPDAmJnkuaWFkZChn''@;'; put 'put ''KSx5fSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxNPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsTS5uZWdhdGl2ZT0wO2Zvcih2YXIgeT0w''@;'; put 'put ''O0MuaXNFdmVuKCkmJk0uaXNFdmVuKCk7eSsrKUMuaXVzaHJuKDEpLE0uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO3ZhciBwPUMuY21wKE0pO2lmKHA8MCl7dmFyIFM9QztDPU0sTT1TfWVsc2UgaWYo''@;'; put 'put ''MD09PXB8fDA9PT1NLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKE0pfXJldHVybiBNLml1c2hsbih5KX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMu''@;'; put 'put ''d29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIGcpO3ZhciBDPWclMjYsTT0oZy1DKS8yNix5PTE8PEM7aWYodGhpcy5sZW5ndGg8PU0pcmV0dXJuIHRoaXMuX2V4cGFuZChNKzEpLHRoaXMud29yZHNbTV18PXksdGhpcztmb3IodmFyIHA9eSxTPU07MCE9PXAmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT0wfHRoaXMud29yZHNb''@;'; put 'put ''U107cD0oUSs9cCk+Pj4yNix0aGlzLndvcmRzW1NdPVEmPTY3MTA4ODYzfXJldHVybiAwIT09cCYmKHRoaXMud29yZHNbU109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1sw''@;'; put 'put ''XX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIgQyxNPWc8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIU0pcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJk0pcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7TSYmKGc9LWcpLEkoZzw9''@;'; put 'put ''NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHk9MHx0aGlzLndvcmRzWzBdO0M9eT09PWc/MDp5PGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0''@;'; put 'put ''aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEM9MCxNPXRoaXMubGVuZ3RoLTE7TT49MDtNLS0pe3ZhciB5PTB8dGhpcy53b3Jkc1tNXSxwPTB8Zy53b3Jkc1tNXTtpZih5IT09cCl7eTxwP0M9LTE6eT5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUu''@;'; put 'put ''cHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPj0wfSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXty''@;'; put 'put ''ZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IE4oZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEkoMD09PXRoaXMubmVnYXRp''@;'; put 'put ''dmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNv''@;'; put 'put ''bnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBp''@;'; put 'put ''biByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVk''@;'; put 'put ''SUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''cmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhpcy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5f''@;'; put 'put ''dmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhp''@;'; put 'put ''cyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJbnZtIHdv''@;'; put 'put ''cmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5y''@;'; put 'put ''ZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFy''@;'; put 'put ''IGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdWUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnAp''@;'; put 'put ''LHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGNlKCl7dWUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBZKCl7dWUuY2FsbCh0aGlzLCJwMjI0Iiwi''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7dWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB4''@;'; put 'put ''KCl7dWUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBOKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlz''@;'; put 'put ''LnByaW1lPUN9ZWxzZSBJKGcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRihnKXtOLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhp''@;'; put 'put ''cy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBFKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3Vibigx''@;'; put 'put ''KS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXVlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlz''@;'; put 'put ''Lm4vMTMpKSxnfSx1ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihnKXt2YXIgQyxNPWc7ZG97dGhpcy5zcGxpdChNLHRoaXMudG1wKSxDPShNPShNPXRoaXMuaW11bEsoTSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIHk9Qzx0aGlzLm4/LTE6''@;'; put 'put ''TS51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT15PyhNLndvcmRzWzBdPTAsTS5sZW5ndGg9MSk6eT4wP00uaXN1Yih0aGlzLnApOnZvaWQgMCE9PU0uc3RyaXA/TS5zdHJpcCgpOk0uX3N0cmlwKCksTX0sdWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAs''@;'; put 'put ''Qyl9LHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pbXVsKHRoaXMuayl9LFIoY2UsdWUpLGNlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT00MTk0MzAzLHk9TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8eTtwKyspQy53b3Jkc1twXT1n''@;'; put 'put ''LndvcmRzW3BdO2lmKEMubGVuZ3RoPXksZy5sZW5ndGg8PTkpcmV0dXJuIGcud29yZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciBTPWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109UyZNLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBRPTB8Zy53b3Jkc1twXTtnLndvcmRz''@;'; put 'put ''W3AtMTBdPShRJk0pPDw0fFM+Pj4yMixTPVF9Zy53b3Jkc1twLTEwXT1TPj4+PTIyLGcubGVuZ3RoLT0wPT09UyYmZy5sZW5ndGg+MTA/MTA6OX0sY2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3Ro''@;'; put 'put ''Kz0yO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKyl7dmFyIHk9MHxnLndvcmRzW01dO2cud29yZHNbTV09NjcxMDg4NjMmKEMrPTk3Nyp5KSxDPTY0KnkrKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tn''@;'; put 'put ''Lmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sUihZLHVlKSxSKGIsdWUpLFIoeCx1ZSkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0xOSooMHxnLndvcmRzW01dKStDLHA9NjcxMDg4NjMmeTt5Pj4+PTI2LGcud29y''@;'; put 'put ''ZHNbTV09cCxDPXl9cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tnLmxlbmd0aCsrXT1DKSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZihkZVtnXSlyZXR1cm4gZGVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBjZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgWTtlbHNlIGlmKCJwMTky''@;'; put 'put ''Ij09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyB4fXJldHVybiBkZVtnXT1DLEN9LE4ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcG9zaXRpdmVzIiksSShnLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0koMD09KGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCYm''@;'; put 'put ''Zy5yZWQ9PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaXNaZXJvKCk/Zy5jbG9uZSgpOnRoaXMubS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5hZGQoQyk7cmV0dXJuIE0uY21w''@;'; put 'put ''KHRoaXMubSk+PTAmJk0uaXN1Yih0aGlzLm0pLE0uX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuaWFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTX0sTi5wcm90b3R5''@;'; put 'put ''cGUuc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09''@;'; put 'put ''Zy5pc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVsKEMpKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxn''@;'; put 'put ''LmNsb25lKCkpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubXVsKGcsZyl9LE4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihJKEMlMj09MSksMz09PUMpe3Zh''@;'; put 'put ''ciBNPXRoaXMubS5hZGQobmV3IEUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZyxNKX1mb3IodmFyIHk9dGhpcy5tLnN1Ym4oMSkscD0wOyF5LmlzWmVybygpJiYwPT09eS5hbmRsbigxKTspcCsrLHkuaXVzaHJuKDEpO0koIXkuaXNaZXJvKCkpO3ZhciBTPW5ldyBFKDEpLnRvUmVk''@;'; put 'put ''KHRoaXMpLFE9Uy5yZWROZWcoKSxyZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksZmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihmZT1uZXcgRSgyKmZlKmZlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coZmUscmUpLmNtcChRKTspZmUucmVkSUFkZChRKTtmb3IodmFyIG1lPXRoaXMucG93''@;'; put 'put ''KGZlLHkpLGtlPXRoaXMucG93KGcseS5hZGRuKDEpLml1c2hybigxKSksVGU9dGhpcy5wb3coZyx5KSxQZT1wOzAhPT1UZS5jbXAoUyk7KXtmb3IodmFyIEZlPVRlLE5lPTA7MCE9PUZlLmNtcChTKTtOZSsrKUZlPUZlLnJlZFNxcigpO0koTmU8UGUpO3ZhciBMZT10aGlzLnBvdyhtZSxuZXcg''@;'; put 'put ''RSgxKS5pdXNobG4oUGUtTmUtMSkpO2tlPWtlLnJlZE11bChMZSksbWU9TGUucmVkU3FyKCksVGU9VGUucmVkTXVsKG1lKSxQZT1OZX1yZXR1cm4ga2V9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMu''@;'; put 'put ''bmVnYXRpdmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkpOnRoaXMuaW1vZChDKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBNPW5ldyBB''@;'; put 'put ''cnJheSgxNik7TVswXT1uZXcgRSgxKS50b1JlZCh0aGlzKSxNWzFdPWc7Zm9yKHZhciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sZyk7dmFyIHA9TVswXSxTPTAsUT0wLHJlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PUMubGVuZ3RoLTE7''@;'; put 'put ''eT49MDt5LS0pe2Zvcih2YXIgZmU9Qy53b3Jkc1t5XSxtZT1yZS0xO21lPj0wO21lLS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10p''@;'; put 'put ''LFE9MCxTPTApKTpRPTB9cmU9MjZ9cmV0dXJuIHB9LE4ucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LE4ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTty''@;'; put 'put ''ZXR1cm4gQy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBGKGcpfSxSKEYsTiksRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0''@;'; put 'put ''aW9uKGcpe3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgTT1nLmltdWwo''@;'; put 'put ''QykseT1NLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAu''@;'; put 'put ''aWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBNPWcubXVsKEMpLHk9TS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhp''@;'; put 'put ''cy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkscD1NLmlzdWIoeSkuaXVzaHJuKHRoaXMuc2hpZnQpLFM9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD9TPXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYoUz1wLmlhZGQodGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9''@;'; put 'put ''LEYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChnLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sOTI4MjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1MKDUxMDgp''@;'; put 'put ''O2Z1bmN0aW9uIEkobWUpe3JldHVybihJPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGtlKXtyZXR1cm4gdHlwZW9mIGtlfTpmdW5jdGlvbihrZSl7cmV0dXJuIGtlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiZrZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYma2UhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBrZX0pKG1lKX12YXIgUixFLHo9TCgyMTM2KS5jb2RlcyxqPXouRVJSX0FNQklHVU9VU19BUkdVTUVOVCxWPXouRVJSX0lOVkFMSURfQVJHX1RZUEUsRz16LkVSUl9JTlZBTElE''@;'; put 'put ''X0FSR19WQUxVRSxXPXouRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFLFU9ei5FUlJfTUlTU0lOR19BUkdTLHE9TCg1OTYxKSx0ZT1MKDk1MzkpLmluc3BlY3QsbmU9TCg5NTM5KS50eXBlcyxpZT1uZS5pc1Byb21pc2UsbGU9bmUuaXNSZWdFeHAsZGU9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNz''@;'; put 'put ''aWduOkwoODA5MSkuYXNzaWduLHVlPU9iamVjdC5pcz9PYmplY3QuaXM6TCg2MDkpO2Z1bmN0aW9uIGNlKCl7dmFyIG1lPUwoOTE1OCk7Uj1tZS5pc0RlZXBFcXVhbCxFPW1lLmlzRGVlcFN0cmljdEVxdWFsfXZhciBZPSExLGI9SC5leHBvcnRzPWcseD17fTtmdW5jdGlvbiBOKG1lKXt0aHJv''@;'; put 'put ''dyBtZS5tZXNzYWdlIGluc3RhbmNlb2YgRXJyb3I/bWUubWVzc2FnZTpuZXcgcShtZSl9ZnVuY3Rpb24gRihtZSxrZSxUZSxQZSl7aWYoIVRlKXt2YXIgRmU9ITE7aWYoMD09PWtlKUZlPSEwLFBlPSJObyB2YWx1ZSBhcmd1bWVudCBwYXNzZWQgdG8gYGFzc2VydC5vaygpYCI7ZWxzZSBpZihQ''@;'; put 'put ''ZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IFBlO3ZhciBOZT1uZXcgcSh7YWN0dWFsOlRlLGV4cGVjdGVkOiEwLG1lc3NhZ2U6UGUsb3BlcmF0b3I6Ij09IixzdGFja1N0YXJ0Rm46bWV9KTt0aHJvdyBOZS5nZW5lcmF0ZWRNZXNzYWdlPUZlLE5lfX1mdW5jdGlvbiBnKCl7Zm9yKHZhciBtZT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLGtlPW5ldyBBcnJheShtZSksVGU9MDtUZTxtZTtUZSsrKWtlW1RlXT1hcmd1bWVudHNbVGVdO0YuYXBwbHkodm9pZCAwLFtnLGtlLmxlbmd0aF0uY29uY2F0KGtlKSl9Yi5mYWlsPWZ1bmN0aW9uIG1lKGtlLFRlLFBlLEZlLE5lKXt2YXIgTGUsQmU9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aDtpZigwPT09QmU/TGU9IkZhaWxlZCI6MT09PUJlPyhQZT1rZSxrZT12b2lkIDApOighMT09PVkmJihZPSEwLChLLmVtaXRXYXJuaW5nP0suZW1pdFdhcm5pbmc6Si53YXJuLmJpbmQoSikpKCJhc3NlcnQuZmFpbCgpIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBpcyBkZXBy''@;'; put 'put ''ZWNhdGVkLiBQbGVhc2UgdXNlIGFzc2VydC5zdHJpY3RFcXVhbCgpIGluc3RlYWQgb3Igb25seSBwYXNzIGEgbWVzc2FnZS4iLCJEZXByZWNhdGlvbldhcm5pbmciLCJERVAwMDk0IikpLDI9PT1CZSYmKEZlPSIhPSIpKSxQZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IFBlO3ZhciBIZT17YWN0''@;'; put 'put ''dWFsOmtlLGV4cGVjdGVkOlRlLG9wZXJhdG9yOnZvaWQgMD09PUZlPyJmYWlsIjpGZSxzdGFja1N0YXJ0Rm46TmV8fG1lfTt2b2lkIDAhPT1QZSYmKEhlLm1lc3NhZ2U9UGUpO3ZhciBRZT1uZXcgcShIZSk7dGhyb3cgTGUmJihRZS5tZXNzYWdlPUxlLFFlLmdlbmVyYXRlZE1lc3NhZ2U9ITAp''@;'; put 'put ''LFFlfSxiLkFzc2VydGlvbkVycm9yPXEsYi5vaz1nLGIuZXF1YWw9ZnVuY3Rpb24gbWUoa2UsVGUsUGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTtrZSE9VGUmJk4oe2FjdHVhbDprZSxleHBlY3RlZDpUZSxtZXNzYWdlOlBlLG9wZXJh''@;'; put 'put ''dG9yOiI9PSIsc3RhY2tTdGFydEZuOm1lfSl9LGIubm90RXF1YWw9ZnVuY3Rpb24gbWUoa2UsVGUsUGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTtrZT09VGUmJk4oe2FjdHVhbDprZSxleHBlY3RlZDpUZSxtZXNzYWdlOlBlLG9wZXJh''@;'; put 'put ''dG9yOiIhPSIsc3RhY2tTdGFydEZuOm1lfSl9LGIuZGVlcEVxdWFsPWZ1bmN0aW9uIG1lKGtlLFRlLFBlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFUoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09UiYmY2UoKSxSKGtlLFRlKXx8Tih7YWN0dWFsOmtlLGV4cGVjdGVk''@;'; put 'put ''OlRlLG1lc3NhZ2U6UGUsb3BlcmF0b3I6ImRlZXBFcXVhbCIsc3RhY2tTdGFydEZuOm1lfSl9LGIubm90RGVlcEVxdWFsPWZ1bmN0aW9uIG1lKGtlLFRlLFBlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFUoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09UiYmY2UoKSxS''@;'; put 'put ''KGtlLFRlKSYmTih7YWN0dWFsOmtlLGV4cGVjdGVkOlRlLG1lc3NhZ2U6UGUsb3BlcmF0b3I6Im5vdERlZXBFcXVhbCIsc3RhY2tTdGFydEZuOm1lfSl9LGIuZGVlcFN0cmljdEVxdWFsPWZ1bmN0aW9uIG1lKGtlLFRlLFBlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFUoImFj''@;'; put 'put ''dHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09UiYmY2UoKSxFKGtlLFRlKXx8Tih7YWN0dWFsOmtlLGV4cGVjdGVkOlRlLG1lc3NhZ2U6UGUsb3BlcmF0b3I6ImRlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOm1lfSl9LGIubm90RGVlcFN0cmljdEVxdWFsPWZ1bmN0aW9uIG1lKGtlLFRl''@;'; put 'put ''LFBlKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdGhyb3cgbmV3IFUoImFjdHVhbCIsImV4cGVjdGVkIik7dm9pZCAwPT09UiYmY2UoKSxFKGtlLFRlKSYmTih7YWN0dWFsOmtlLGV4cGVjdGVkOlRlLG1lc3NhZ2U6UGUsb3BlcmF0b3I6Im5vdERlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZu''@;'; put 'put ''Om1lfSl9LGIuc3RyaWN0RXF1YWw9ZnVuY3Rpb24gbWUoa2UsVGUsUGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt1ZShrZSxUZSl8fE4oe2FjdHVhbDprZSxleHBlY3RlZDpUZSxtZXNzYWdlOlBlLG9wZXJhdG9yOiJzdHJpY3RFcXVh''@;'; put 'put ''bCIsc3RhY2tTdGFydEZuOm1lfSl9LGIubm90U3RyaWN0RXF1YWw9ZnVuY3Rpb24gbWUoa2UsVGUsUGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt1ZShrZSxUZSkmJk4oe2FjdHVhbDprZSxleHBlY3RlZDpUZSxtZXNzYWdlOlBlLG9w''@;'; put 'put ''ZXJhdG9yOiJub3RTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOm1lfSl9O3ZhciBDPWZ1bmN0aW9uIG1lKGtlLFRlLFBlKXt2YXIgRmU9dGhpczsoZnVuY3Rpb24oTmUsTGUpe2lmKCEoTmUgaW5zdGFuY2VvZiBMZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh''@;'; put 'put ''cyBhIGZ1bmN0aW9uIil9KSh0aGlzLG1lKSxUZS5mb3JFYWNoKGZ1bmN0aW9uKE5lKXtOZSBpbiBrZSYmKEZlW05lXT12b2lkIDAhPT1QZSYmInN0cmluZyI9PXR5cGVvZiBQZVtOZV0mJmxlKGtlW05lXSkmJmtlW05lXS50ZXN0KFBlW05lXSk/UGVbTmVdOmtlW05lXSl9KX07ZnVuY3Rpb24g''@;'; put 'put ''TShtZSxrZSxUZSxQZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGtlKXtpZihsZShrZSkpcmV0dXJuIGtlLnRlc3QobWUpO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBWKCJleHBlY3RlZCIsWyJGdW5jdGlvbiIsIlJlZ0V4cCJdLGtlKTtpZigib2JqZWN0IiE9PUkobWUpfHxu''@;'; put 'put ''dWxsPT09bWUpe3ZhciBGZT1uZXcgcSh7YWN0dWFsOm1lLGV4cGVjdGVkOmtlLG1lc3NhZ2U6VGUsb3BlcmF0b3I6ImRlZXBTdHJpY3RFcXVhbCIsc3RhY2tTdGFydEZuOlBlfSk7dGhyb3cgRmUub3BlcmF0b3I9UGUubmFtZSxGZX12YXIgTmU9T2JqZWN0LmtleXMoa2UpO2lmKGtlIGluc3Rh''@;'; put 'put ''bmNlb2YgRXJyb3IpTmUucHVzaCgibmFtZSIsIm1lc3NhZ2UiKTtlbHNlIGlmKDA9PT1OZS5sZW5ndGgpdGhyb3cgbmV3IEcoImVycm9yIixrZSwibWF5IG5vdCBiZSBhbiBlbXB0eSBvYmplY3QiKTtyZXR1cm4gdm9pZCAwPT09UiYmY2UoKSxOZS5mb3JFYWNoKGZ1bmN0aW9uKExlKXsic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIG1lW0xlXSYmbGUoa2VbTGVdKSYma2VbTGVdLnRlc3QobWVbTGVdKXx8ZnVuY3Rpb24oQmUsSGUsUWUsbXQsS2Usd2Upe2lmKCEoUWUgaW4gQmUpfHwhRShCZVtRZV0sSGVbUWVdKSl7aWYoIW10KXt2YXIgSWU9bmV3IEMoQmUsS2UpLE9lPW5ldyBDKEhlLEtlLEJlKSxl''@;'; put 'put ''dD1uZXcgcSh7YWN0dWFsOkllLGV4cGVjdGVkOk9lLG9wZXJhdG9yOiJkZWVwU3RyaWN0RXF1YWwiLHN0YWNrU3RhcnRGbjp3ZX0pO3Rocm93IGV0LmFjdHVhbD1CZSxldC5leHBlY3RlZD1IZSxldC5vcGVyYXRvcj13ZS5uYW1lLGV0fU4oe2FjdHVhbDpCZSxleHBlY3RlZDpIZSxtZXNzYWdl''@;'; put 'put ''Om10LG9wZXJhdG9yOndlLm5hbWUsc3RhY2tTdGFydEZuOndlfSl9fShtZSxrZSxMZSxUZSxOZSxQZSl9KSwhMH1yZXR1cm4gdm9pZCAwIT09a2UucHJvdG90eXBlJiZtZSBpbnN0YW5jZW9mIGtlfHwhRXJyb3IuaXNQcm90b3R5cGVPZihrZSkmJiEwPT09a2UuY2FsbCh7fSxtZSl9ZnVuY3Rp''@;'; put 'put ''b24geShtZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG1lKXRocm93IG5ldyBWKCJmbiIsIkZ1bmN0aW9uIixtZSk7dHJ5e21lKCl9Y2F0Y2goa2Upe3JldHVybiBrZX1yZXR1cm4geH1mdW5jdGlvbiBwKG1lKXtyZXR1cm4gaWUobWUpfHxudWxsIT09bWUmJiJvYmplY3QiPT09SShtZSkmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBtZS50aGVuJiYiZnVuY3Rpb24iPT10eXBlb2YgbWUuY2F0Y2h9ZnVuY3Rpb24gUyhtZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXt2YXIga2U7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG1lKXtpZighcChrZT1tZSgpKSl0aHJvdyBu''@;'; put 'put ''ZXcgVygiaW5zdGFuY2Ugb2YgUHJvbWlzZSIsInByb21pc2VGbiIsa2UpfWVsc2V7aWYoIXAobWUpKXRocm93IG5ldyBWKCJwcm9taXNlRm4iLFsiRnVuY3Rpb24iLCJQcm9taXNlIl0sbWUpO2tlPW1lfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGtl''@;'; put 'put ''fSkudGhlbihmdW5jdGlvbigpe3JldHVybiB4fSkuY2F0Y2goZnVuY3Rpb24oVGUpe3JldHVybiBUZX0pfSl9ZnVuY3Rpb24gUShtZSxrZSxUZSxQZSl7aWYoInN0cmluZyI9PXR5cGVvZiBUZSl7aWYoND09PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFYoImVycm9yIixbIk9iamVjdCIs''@;'; put 'put ''IkVycm9yIiwiRnVuY3Rpb24iLCJSZWdFeHAiXSxUZSk7aWYoIm9iamVjdCI9PT1JKGtlKSYmbnVsbCE9PWtlKXtpZihrZS5tZXNzYWdlPT09VGUpdGhyb3cgbmV3IGooImVycm9yL21lc3NhZ2UiLCdUaGUgZXJyb3IgbWVzc2FnZSAiJy5jb25jYXQoa2UubWVzc2FnZSwnIiBpcyBpZGVudGlj''@;'; put 'put ''YWwgdG8gdGhlIG1lc3NhZ2UuJykpfWVsc2UgaWYoa2U9PT1UZSl0aHJvdyBuZXcgaigiZXJyb3IvbWVzc2FnZSIsJ1RoZSBlcnJvciAiJy5jb25jYXQoa2UsJyIgaXMgaWRlbnRpY2FsIHRvIHRoZSBtZXNzYWdlLicpKTtQZT1UZSxUZT12b2lkIDB9ZWxzZSBpZihudWxsIT1UZSYmIm9iamVj''@;'; put 'put ''dCIhPT1JKFRlKSYmImZ1bmN0aW9uIiE9dHlwZW9mIFRlKXRocm93IG5ldyBWKCJlcnJvciIsWyJPYmplY3QiLCJFcnJvciIsIkZ1bmN0aW9uIiwiUmVnRXhwIl0sVGUpO2lmKGtlPT09eCl7dmFyIEZlPSIiO1RlJiZUZS5uYW1lJiYoRmUrPSIgKCIuY29uY2F0KFRlLm5hbWUsIikiKSksRmUr''@;'; put 'put ''PVBlPyI6ICIuY29uY2F0KFBlKToiLiIsTih7YWN0dWFsOnZvaWQgMCxleHBlY3RlZDpUZSxvcGVyYXRvcjptZS5uYW1lLG1lc3NhZ2U6Ik1pc3NpbmcgZXhwZWN0ZWQgIi5jb25jYXQoInJlamVjdHMiPT09bWUubmFtZT8icmVqZWN0aW9uIjoiZXhjZXB0aW9uIikuY29uY2F0KEZlKSxzdGFj''@;'; put 'put ''a1N0YXJ0Rm46bWV9KX1pZihUZSYmIU0oa2UsVGUsUGUsbWUpKXRocm93IGtlfWZ1bmN0aW9uIHJlKG1lLGtlLFRlLFBlKXtpZihrZSE9PXgpe2lmKCJzdHJpbmciPT10eXBlb2YgVGUmJihQZT1UZSxUZT12b2lkIDApLCFUZXx8TShrZSxUZSkpe3ZhciBGZT1QZT8iOiAiLmNvbmNhdChQZSk6''@;'; put 'put ''Ii4iO04oe2FjdHVhbDprZSxleHBlY3RlZDpUZSxvcGVyYXRvcjptZS5uYW1lLG1lc3NhZ2U6IkdvdCB1bndhbnRlZCAiLmNvbmNhdCgiZG9lc05vdFJlamVjdCI9PT1tZS5uYW1lPyJyZWplY3Rpb24iOiJleGNlcHRpb24iKS5jb25jYXQoRmUsIlxuIikrJ0FjdHVhbCBtZXNzYWdlOiAiJy5j''@;'; put 'put ''b25jYXQoa2UmJmtlLm1lc3NhZ2UsJyInKSxzdGFja1N0YXJ0Rm46bWV9KX10aHJvdyBrZX19ZnVuY3Rpb24gZmUoKXtmb3IodmFyIG1lPWFyZ3VtZW50cy5sZW5ndGgsa2U9bmV3IEFycmF5KG1lKSxUZT0wO1RlPG1lO1RlKyspa2VbVGVdPWFyZ3VtZW50c1tUZV07Ri5hcHBseSh2b2lkIDAs''@;'; put 'put ''W2ZlLGtlLmxlbmd0aF0uY29uY2F0KGtlKSl9Yi50aHJvd3M9ZnVuY3Rpb24gbWUoa2Upe2Zvcih2YXIgVGU9YXJndW1lbnRzLmxlbmd0aCxQZT1uZXcgQXJyYXkoVGU+MT9UZS0xOjApLEZlPTE7RmU8VGU7RmUrKylQZVtGZS0xXT1hcmd1bWVudHNbRmVdO1EuYXBwbHkodm9pZCAwLFttZSx5''@;'; put 'put ''KGtlKV0uY29uY2F0KFBlKSl9LGIucmVqZWN0cz1mdW5jdGlvbiBtZShrZSl7Zm9yKHZhciBUZT1hcmd1bWVudHMubGVuZ3RoLFBlPW5ldyBBcnJheShUZT4xP1RlLTE6MCksRmU9MTtGZTxUZTtGZSsrKVBlW0ZlLTFdPWFyZ3VtZW50c1tGZV07cmV0dXJuIFMoa2UpLnRoZW4oZnVuY3Rpb24o''@;'; put 'put ''TmUpe3JldHVybiBRLmFwcGx5KHZvaWQgMCxbbWUsTmVdLmNvbmNhdChQZSkpfSl9LGIuZG9lc05vdFRocm93PWZ1bmN0aW9uIG1lKGtlKXtmb3IodmFyIFRlPWFyZ3VtZW50cy5sZW5ndGgsUGU9bmV3IEFycmF5KFRlPjE/VGUtMTowKSxGZT0xO0ZlPFRlO0ZlKyspUGVbRmUtMV09YXJndW1l''@;'; put 'put ''bnRzW0ZlXTtyZS5hcHBseSh2b2lkIDAsW21lLHkoa2UpXS5jb25jYXQoUGUpKX0sYi5kb2VzTm90UmVqZWN0PWZ1bmN0aW9uIG1lKGtlKXtmb3IodmFyIFRlPWFyZ3VtZW50cy5sZW5ndGgsUGU9bmV3IEFycmF5KFRlPjE/VGUtMTowKSxGZT0xO0ZlPFRlO0ZlKyspUGVbRmUtMV09YXJndW1l''@;'; put 'put ''bnRzW0ZlXTtyZXR1cm4gUyhrZSkudGhlbihmdW5jdGlvbihOZSl7cmV0dXJuIHJlLmFwcGx5KHZvaWQgMCxbbWUsTmVdLmNvbmNhdChQZSkpfSl9LGIuaWZFcnJvcj1mdW5jdGlvbiBtZShrZSl7aWYobnVsbCE9a2Upe3ZhciBUZT0iaWZFcnJvciBnb3QgdW53YW50ZWQgZXhjZXB0aW9uOiAi''@;'; put 'put ''OyJvYmplY3QiPT09SShrZSkmJiJzdHJpbmciPT10eXBlb2Yga2UubWVzc2FnZT9UZSs9MD09PWtlLm1lc3NhZ2UubGVuZ3RoJiZrZS5jb25zdHJ1Y3Rvcj9rZS5jb25zdHJ1Y3Rvci5uYW1lOmtlLm1lc3NhZ2U6VGUrPXRlKGtlKTt2YXIgUGU9bmV3IHEoe2FjdHVhbDprZSxleHBlY3RlZDpu''@;'; put 'put ''dWxsLG9wZXJhdG9yOiJpZkVycm9yIixtZXNzYWdlOlRlLHN0YWNrU3RhcnRGbjptZX0pLEZlPWtlLnN0YWNrO2lmKCJzdHJpbmciPT10eXBlb2YgRmUpe3ZhciBOZT1GZS5zcGxpdCgiXG4iKTtOZS5zaGlmdCgpO2Zvcih2YXIgTGU9UGUuc3RhY2suc3BsaXQoIlxuIiksQmU9MDtCZTxOZS5s''@;'; put 'put ''ZW5ndGg7QmUrKyl7dmFyIEhlPUxlLmluZGV4T2YoTmVbQmVdKTtpZigtMSE9PUhlKXtMZT1MZS5zbGljZSgwLEhlKTticmVha319UGUuc3RhY2s9IiIuY29uY2F0KExlLmpvaW4oIlxuIiksIlxuIikuY29uY2F0KE5lLmpvaW4oIlxuIikpfXRocm93IFBlfX0sYi5zdHJpY3Q9ZGUoZmUsYix7''@;'; put 'put ''ZXF1YWw6Yi5zdHJpY3RFcXVhbCxkZWVwRXF1YWw6Yi5kZWVwU3RyaWN0RXF1YWwsbm90RXF1YWw6Yi5ub3RTdHJpY3RFcXVhbCxub3REZWVwRXF1YWw6Yi5ub3REZWVwU3RyaWN0RXF1YWx9KSxiLnN0cmljdC5zdHJpY3Q9Yi5zdHJpY3R9LDU5NjE6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgSz1MKDQxNTUpO2Z1bmN0aW9uIEooRixnLEMpe3JldHVybiBnIGluIEY/T2JqZWN0LmRlZmluZVByb3BlcnR5KEYsZyx7dmFsdWU6QyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOkZbZ109QyxGfWZ1bmN0aW9uIFIoRixnKXtyZXR1cm4hZ3x8Im9iamVj''@;'; put 'put ''dCIhPT1XKGcpJiYiZnVuY3Rpb24iIT10eXBlb2YgZz9FKEYpOmd9ZnVuY3Rpb24gRShGKXtpZih2b2lkIDA9PT1GKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIEZ9ZnVu''@;'; put 'put ''Y3Rpb24geihGKXt2YXIgZz0iZnVuY3Rpb24iPT10eXBlb2YgTWFwP25ldyBNYXA6dm9pZCAwO3JldHVybiB6PWZ1bmN0aW9uKEMpe2lmKG51bGw9PT1DfHwtMT09PUZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoQykuaW5kZXhPZigiW25hdGl2ZSBjb2RlXSIpKXJldHVybiBDO2lmKCJmdW5jdGlv''@;'; put 'put ''biIhPXR5cGVvZiBDKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7aWYodm9pZCAwIT09Zyl7aWYoZy5oYXMoQykpcmV0dXJuIGcuZ2V0KEMpO2cuc2V0KEMseSl9ZnVuY3Rpb24geSgpe3JldHVybiBqKEMs''@;'; put 'put ''YXJndW1lbnRzLEcodGhpcykuY29uc3RydWN0b3IpfXJldHVybiB5LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6eSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxWKHksQyl9LHooRil9ZnVuY3Rpb24g''@;'; put 'put ''aihGLGcsQyl7cmV0dXJuKGo9ZnVuY3Rpb24oKXtpZih0eXBlb2YgUmVmbGVjdD4idSJ8fCFSZWZsZWN0LmNvbnN0cnVjdHx8UmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpP1JlZmxlY3QuY29uc3RydWN0OmZ1bmN0aW9uKE0seSxwKXt2YXIgUz1bbnVsbF07Uy5wdXNoLmFwcGx5KFMseSk7dmFyIFE9bmV3KEZ1bmN0aW9uLmJp''@;'; put 'put ''bmQuYXBwbHkoTSxTKSk7cmV0dXJuIHAmJlYoUSxwLnByb3RvdHlwZSksUX0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBWKEYsZyl7cmV0dXJuKFY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihDLE0pe3JldHVybiBDLl9fcHJvdG9fXz1NLEN9KShGLGcpfWZ1bmN0''@;'; put 'put ''aW9uIEcoRil7cmV0dXJuKEc9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihnKXtyZXR1cm4gZy5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihnKX0pKEYpfWZ1bmN0aW9uIFcoRil7cmV0dXJuKFc9ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiBnfTpmdW5jdGlvbihnKXtyZXR1cm4gZyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZy5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZyE9PVN5bWJvbC5wcm90b3R5cGU/''@;'; put 'put ''InN5bWJvbCI6dHlwZW9mIGd9KShGKX12YXIgVT1MKDk1MzkpLmluc3BlY3QscT1MKDIxMzYpLmNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFO2Z1bmN0aW9uIHRlKEYsZyxDKXtyZXR1cm4odm9pZCAwPT09Q3x8Qz5GLmxlbmd0aCkmJihDPUYubGVuZ3RoKSxGLnN1YnN0cmluZyhDLWcubGVu''@;'; put 'put ''Z3RoLEMpPT09Z312YXIgbmU9IiIsaWU9IiIsbGU9IiIsZGU9IiIsdWU9e2RlZXBTdHJpY3RFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGRlZXAtZXF1YWw6IixzdHJpY3RFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGVxdWFsOiIsc3RyaWN0RXF1''@;'; put 'put ''YWxPYmplY3Q6J0V4cGVjdGVkICJhY3R1YWwiIHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byAiZXhwZWN0ZWQiOicsZGVlcEVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsOiIsZXF1YWw6IkV4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29zZWx5IGVxdWFsOiIs''@;'; put 'put ''bm90RGVlcFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiBub3QgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbCB0bzonLG5vdFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBzdHJpY3RseSB1bmVxdWFsIHRvOicsbm90U3RyaWN0RXF1YWxPYmplY3Q6J0V4cGVjdGVk''@;'; put 'put ''ICJhY3R1YWwiIG5vdCB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gImV4cGVjdGVkIjonLG5vdERlZXBFcXVhbDonRXhwZWN0ZWQgImFjdHVhbCIgbm90IHRvIGJlIGxvb3NlbHkgZGVlcC1lcXVhbCB0bzonLG5vdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBsb29zZWx5IHVuZXF1''@;'; put 'put ''YWwgdG86Jyxub3RJZGVudGljYWw6IlZhbHVlcyBpZGVudGljYWwgYnV0IG5vdCByZWZlcmVuY2UtZXF1YWw6In07ZnVuY3Rpb24gWShGKXt2YXIgZz1PYmplY3Qua2V5cyhGKSxDPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKEYpKTtyZXR1cm4gZy5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKE0pe0NbTV09RltNXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDLCJtZXNzYWdlIix7dmFsdWU6Ri5tZXNzYWdlfSksQ31mdW5jdGlvbiBiKEYpe3JldHVybiBVKEYse2NvbXBhY3Q6ITEsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDoxZTMsbWF4QXJyYXlMZW5ndGg6MS8wLHNob3dIaWRk''@;'; put 'put ''ZW46ITEsYnJlYWtMZW5ndGg6MS8wLHNob3dQcm94eTohMSxzb3J0ZWQ6ITAsZ2V0dGVyczohMH0pfXZhciBOPWZ1bmN0aW9uKEYpe2Z1bmN0aW9uIGcocCl7dmFyIFM7aWYoZnVuY3Rpb24oSGUsUWUpe2lmKCEoSGUgaW5zdGFuY2VvZiBRZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90''@;'; put 'put ''IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZyksIm9iamVjdCIhPT1XKHApfHxudWxsPT09cCl0aHJvdyBuZXcgcSgib3B0aW9ucyIsIk9iamVjdCIscCk7dmFyIFE9cC5tZXNzYWdlLHJlPXAub3BlcmF0b3IsZmU9cC5zdGFja1N0YXJ0Rm4sbWU9cC5hY3R1YWwsa2U9cC5l''@;'; put 'put ''eHBlY3RlZCxUZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7aWYoRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTAsbnVsbCE9USlTPVIodGhpcyxHKGcpLmNhbGwodGhpcyxTdHJpbmcoUSkpKTtlbHNlIGlmKEsuc3RkZXJyJiZLLnN0ZGVyci5pc1RUWSYmKEsuc3RkZXJyJiZLLnN0ZGVyci5nZXRDb2xv''@;'; put 'put ''ckRlcHRoJiYxIT09Sy5zdGRlcnIuZ2V0Q29sb3JEZXB0aCgpPyhuZT0iXHgxYlszNG0iLGllPSJceDFiWzMybSIsZGU9Ilx4MWJbMzltIixsZT0iXHgxYlszMW0iKToobmU9IiIsaWU9IiIsZGU9IiIsbGU9IiIpKSwib2JqZWN0Ij09PVcobWUpJiZudWxsIT09bWUmJiJvYmplY3QiPT09Vyhr''@;'; put 'put ''ZSkmJm51bGwhPT1rZSYmInN0YWNrImluIG1lJiZtZSBpbnN0YW5jZW9mIEVycm9yJiYic3RhY2siaW4ga2UmJmtlIGluc3RhbmNlb2YgRXJyb3ImJihtZT1ZKG1lKSxrZT1ZKGtlKSksImRlZXBTdHJpY3RFcXVhbCI9PT1yZXx8InN0cmljdEVxdWFsIj09PXJlKVM9Uih0aGlzLEcoZykuY2Fs''@;'; put 'put ''bCh0aGlzLGZ1bmN0aW9uIHgoRixnLEMpe3ZhciBNPSIiLHk9IiIscD0wLFM9IiIsUT0hMSxyZT1iKEYpLGZlPXJlLnNwbGl0KCJcbiIpLG1lPWIoZykuc3BsaXQoIlxuIiksa2U9MCxUZT0iIjtpZigic3RyaWN0RXF1YWwiPT09QyYmIm9iamVjdCI9PT1XKEYpJiYib2JqZWN0Ij09PVcoZykm''@;'; put 'put ''Jm51bGwhPT1GJiZudWxsIT09ZyYmKEM9InN0cmljdEVxdWFsT2JqZWN0IiksMT09PWZlLmxlbmd0aCYmMT09PW1lLmxlbmd0aCYmZmVbMF0hPT1tZVswXSl7dmFyIFBlPWZlWzBdLmxlbmd0aCttZVswXS5sZW5ndGg7aWYoUGU8PTEwKXtpZighKCJvYmplY3QiPT09VyhGKSYmbnVsbCE9PUZ8''@;'; put 'put ''fCJvYmplY3QiPT09VyhnKSYmbnVsbCE9PWd8fDA9PT1GJiYwPT09ZykpcmV0dXJuIiIuY29uY2F0KHVlW0NdLCJcblxuIikrIiIuY29uY2F0KGZlWzBdLCIgIT09ICIpLmNvbmNhdChtZVswXSwiXG4iKX1lbHNlIGlmKCJzdHJpY3RFcXVhbE9iamVjdCIhPT1DJiZQZTwoSy5zdGRlcnImJksu''@;'; put 'put ''c3RkZXJyLmlzVFRZP0suc3RkZXJyLmNvbHVtbnM6ODApKXtmb3IoO2ZlWzBdW2tlXT09PW1lWzBdW2tlXTspa2UrKztrZT4yJiYoVGU9IlxuICAiLmNvbmNhdChmdW5jdGlvbihldCxudCl7aWYobnQ9TWF0aC5mbG9vcihudCksMD09ZXQubGVuZ3RofHwwPT1udClyZXR1cm4iIjt2YXIgcWU9''@;'; put 'put ''ZXQubGVuZ3RoKm50O2ZvcihudD1NYXRoLmZsb29yKE1hdGgubG9nKG50KS9NYXRoLmxvZygyKSk7bnQ7KWV0Kz1ldCxudC0tO3JldHVybiBldCtldC5zdWJzdHJpbmcoMCxxZS1ldC5sZW5ndGgpfSgiICIsa2UpLCJeIiksa2U9MCl9fWZvcih2YXIgRmU9ZmVbZmUubGVuZ3RoLTFdLE5lPW1l''@;'; put 'put ''W21lLmxlbmd0aC0xXTtGZT09PU5lJiYoa2UrKzwyP1M9IlxuICAiLmNvbmNhdChGZSkuY29uY2F0KFMpOk09RmUsZmUucG9wKCksbWUucG9wKCksMCE9PWZlLmxlbmd0aCYmMCE9PW1lLmxlbmd0aCk7KUZlPWZlW2ZlLmxlbmd0aC0xXSxOZT1tZVttZS5sZW5ndGgtMV07dmFyIExlPU1hdGgu''@;'; put 'put ''bWF4KGZlLmxlbmd0aCxtZS5sZW5ndGgpO2lmKDA9PT1MZSl7dmFyIEJlPXJlLnNwbGl0KCJcbiIpO2lmKEJlLmxlbmd0aD4zMClmb3IoQmVbMjZdPSIiLmNvbmNhdChuZSwiLi4uIikuY29uY2F0KGRlKTtCZS5sZW5ndGg+Mjc7KUJlLnBvcCgpO3JldHVybiIiLmNvbmNhdCh1ZS5ub3RJZGVu''@;'; put 'put ''dGljYWwsIlxuXG4iKS5jb25jYXQoQmUuam9pbigiXG4iKSwiXG4iKX1rZT4zJiYoUz0iXG4iLmNvbmNhdChuZSwiLi4uIikuY29uY2F0KGRlKS5jb25jYXQoUyksUT0hMCksIiIhPT1NJiYoUz0iXG4gICIuY29uY2F0KE0pLmNvbmNhdChTKSxNPSIiKTt2YXIgSGU9MCxRZT11ZVtDXSsiXG4i''@;'; put 'put ''LmNvbmNhdChpZSwiKyBhY3R1YWwiKS5jb25jYXQoZGUsIiAiKS5jb25jYXQobGUsIi0gZXhwZWN0ZWQiKS5jb25jYXQoZGUpLG10PSIgIi5jb25jYXQobmUsIi4uLiIpLmNvbmNhdChkZSwiIExpbmVzIHNraXBwZWQiKTtmb3Ioa2U9MDtrZTxMZTtrZSsrKXt2YXIgS2U9a2UtcDtpZihmZS5s''@;'; put 'put ''ZW5ndGg8a2UrMSlLZT4xJiZrZT4yJiYoS2U+ND8oeSs9IlxuIi5jb25jYXQobmUsIi4uLiIpLmNvbmNhdChkZSksUT0hMCk6S2U+MyYmKHkrPSJcbiAgIi5jb25jYXQobWVba2UtMl0pLEhlKyspLHkrPSJcbiAgIi5jb25jYXQobWVba2UtMV0pLEhlKyspLHA9a2UsTSs9IlxuIi5jb25jYXQo''@;'; put 'put ''bGUsIi0iKS5jb25jYXQoZGUsIiAiKS5jb25jYXQobWVba2VdKSxIZSsrO2Vsc2UgaWYobWUubGVuZ3RoPGtlKzEpS2U+MSYma2U+MiYmKEtlPjQ/KHkrPSJcbiIuY29uY2F0KG5lLCIuLi4iKS5jb25jYXQoZGUpLFE9ITApOktlPjMmJih5Kz0iXG4gICIuY29uY2F0KGZlW2tlLTJdKSxIZSsr''@;'; put 'put ''KSx5Kz0iXG4gICIuY29uY2F0KGZlW2tlLTFdKSxIZSsrKSxwPWtlLHkrPSJcbiIuY29uY2F0KGllLCIrIikuY29uY2F0KGRlLCIgIikuY29uY2F0KGZlW2tlXSksSGUrKztlbHNle3ZhciB3ZT1tZVtrZV0sSWU9ZmVba2VdLE9lPUllIT09d2UmJighdGUoSWUsIiwiKXx8SWUuc2xpY2UoMCwt''@;'; put 'put ''MSkhPT13ZSk7T2UmJnRlKHdlLCIsIikmJndlLnNsaWNlKDAsLTEpPT09SWUmJihPZT0hMSxJZSs9IiwiKSxPZT8oS2U+MSYma2U+MiYmKEtlPjQ/KHkrPSJcbiIuY29uY2F0KG5lLCIuLi4iKS5jb25jYXQoZGUpLFE9ITApOktlPjMmJih5Kz0iXG4gICIuY29uY2F0KGZlW2tlLTJdKSxIZSsr''@;'; put 'put ''KSx5Kz0iXG4gICIuY29uY2F0KGZlW2tlLTFdKSxIZSsrKSxwPWtlLHkrPSJcbiIuY29uY2F0KGllLCIrIikuY29uY2F0KGRlLCIgIikuY29uY2F0KEllKSxNKz0iXG4iLmNvbmNhdChsZSwiLSIpLmNvbmNhdChkZSwiICIpLmNvbmNhdCh3ZSksSGUrPTIpOih5Kz1NLE09IiIsMSE9PUtlJiYw''@;'; put 'put ''IT09a2V8fCh5Kz0iXG4gICIuY29uY2F0KEllKSxIZSsrKSl9aWYoSGU+MjAmJmtlPExlLTIpcmV0dXJuIiIuY29uY2F0KFFlKS5jb25jYXQobXQsIlxuIikuY29uY2F0KHksIlxuIikuY29uY2F0KG5lLCIuLi4iKS5jb25jYXQoZGUpLmNvbmNhdChNLCJcbiIpKyIiLmNvbmNhdChuZSwiLi4u''@;'; put 'put ''IikuY29uY2F0KGRlKX1yZXR1cm4iIi5jb25jYXQoUWUpLmNvbmNhdChRP210OiIiLCJcbiIpLmNvbmNhdCh5KS5jb25jYXQoTSkuY29uY2F0KFMpLmNvbmNhdChUZSl9KG1lLGtlLHJlKSkpO2Vsc2UgaWYoIm5vdERlZXBTdHJpY3RFcXVhbCI9PT1yZXx8Im5vdFN0cmljdEVxdWFsIj09PXJl''@;'; put 'put ''KXt2YXIgUGU9dWVbcmVdLEZlPWIobWUpLnNwbGl0KCJcbiIpO2lmKCJub3RTdHJpY3RFcXVhbCI9PT1yZSYmIm9iamVjdCI9PT1XKG1lKSYmbnVsbCE9PW1lJiYoUGU9dWUubm90U3RyaWN0RXF1YWxPYmplY3QpLEZlLmxlbmd0aD4zMClmb3IoRmVbMjZdPSIiLmNvbmNhdChuZSwiLi4uIiku''@;'; put 'put ''Y29uY2F0KGRlKTtGZS5sZW5ndGg+Mjc7KUZlLnBvcCgpO1M9Uih0aGlzLDE9PT1GZS5sZW5ndGg/RyhnKS5jYWxsKHRoaXMsIiIuY29uY2F0KFBlLCIgIikuY29uY2F0KEZlWzBdKSk6RyhnKS5jYWxsKHRoaXMsIiIuY29uY2F0KFBlLCJcblxuIikuY29uY2F0KEZlLmpvaW4oIlxuIiksIlxu''@;'; put 'put ''IikpKX1lbHNle3ZhciBOZT1iKG1lKSxMZT0iIixCZT11ZVtyZV07Im5vdERlZXBFcXVhbCI9PT1yZXx8Im5vdEVxdWFsIj09PXJlPyhOZT0iIi5jb25jYXQodWVbcmVdLCJcblxuIikuY29uY2F0KE5lKSkubGVuZ3RoPjEwMjQmJihOZT0iIi5jb25jYXQoTmUuc2xpY2UoMCwxMDIxKSwiLi4u''@;'; put 'put ''IikpOihMZT0iIi5jb25jYXQoYihrZSkpLE5lLmxlbmd0aD41MTImJihOZT0iIi5jb25jYXQoTmUuc2xpY2UoMCw1MDkpLCIuLi4iKSksTGUubGVuZ3RoPjUxMiYmKExlPSIiLmNvbmNhdChMZS5zbGljZSgwLDUwOSksIi4uLiIpKSwiZGVlcEVxdWFsIj09PXJlfHwiZXF1YWwiPT09cmU/TmU9''@;'; put 'put ''IiIuY29uY2F0KEJlLCJcblxuIikuY29uY2F0KE5lLCJcblxuc2hvdWxkIGVxdWFsXG5cbiIpOkxlPSIgIi5jb25jYXQocmUsIiAiKS5jb25jYXQoTGUpKSxTPVIodGhpcyxHKGcpLmNhbGwodGhpcywiIi5jb25jYXQoTmUpLmNvbmNhdChMZSkpKX1yZXR1cm4gRXJyb3Iuc3RhY2tUcmFjZUxp''@;'; put 'put ''bWl0PVRlLFMuZ2VuZXJhdGVkTWVzc2FnZT0hUSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRShTKSwibmFtZSIse3ZhbHVlOiJBc3NlcnRpb25FcnJvciBbRVJSX0FTU0VSVElPTl0iLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksUy5jb2RlPSJFUlJfQVNTRVJU''@;'; put 'put ''SU9OIixTLmFjdHVhbD1tZSxTLmV4cGVjdGVkPWtlLFMub3BlcmF0b3I9cmUsRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKEUoUyksZmUpLFMubmFtZT0iQXNzZXJ0aW9uRXJyb3IiLFIoUyl9dmFyIE07cmV0dXJuIGZ1bmN0aW9uKHAsUyl7aWYoImZ1''@;'; put 'put ''bmN0aW9uIiE9dHlwZW9mIFMmJm51bGwhPT1TKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7cC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTJiZTLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnAs''@;'; put 'put ''d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLFMmJlYocCxTKX0oZyxGKSxNPVt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIi5jb25jYXQodGhpcy5uYW1lLCIgWyIpLmNvbmNhdCh0aGlzLmNvZGUsIl06ICIpLmNvbmNhdCh0aGlzLm1lc3NhZ2UpfX0se2tl''@;'; put 'put ''eTpVLmN1c3RvbSx2YWx1ZTpmdW5jdGlvbihwLFMpe3JldHVybiBVKHRoaXMsZnVuY3Rpb24oUSl7Zm9yKHZhciByZT0xO3JlPGFyZ3VtZW50cy5sZW5ndGg7cmUrKyl7dmFyIGZlPW51bGwhPWFyZ3VtZW50c1tyZV0/YXJndW1lbnRzW3JlXTp7fSxtZT1PYmplY3Qua2V5cyhmZSk7ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihtZT1tZS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhmZSkuZmlsdGVyKGZ1bmN0aW9uKGtlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmZSxrZSkuZW51bWVyYWJs''@;'; put 'put ''ZX0pKSksbWUuZm9yRWFjaChmdW5jdGlvbihrZSl7SihRLGtlLGZlW2tlXSl9KX1yZXR1cm4gUX0oe30sUyx7Y3VzdG9tSW5zcGVjdDohMSxkZXB0aDowfSkpfX1dLE0mJmZ1bmN0aW9uIEkoRixnKXtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl7dmFyIE09Z1tDXTtNLmVudW1lcmFibGU9''@;'; put 'put ''TS5lbnVtZXJhYmxlfHwhMSxNLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gTSYmKE0ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLE0ua2V5LE0pfX0oZy5wcm90b3R5cGUsTSksZ30oeihFcnJvcikpO0guZXhwb3J0cz1OfSwyMTM2OihILEIsTCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7ZnVuY3Rpb24gSyhXKXtyZXR1cm4oSz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihVKXtyZXR1cm4gdHlwZW9mIFV9OmZ1bmN0aW9uKFUpe3JldHVybiBVJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZV''@;'; put 'put ''LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZVIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgVX0pKFcpfWZ1bmN0aW9uIEkoVyl7cmV0dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihVKXtyZXR1cm4gVS5fX3Byb3RvX198''@;'; put 'put ''fE9iamVjdC5nZXRQcm90b3R5cGVPZihVKX0pKFcpfWZ1bmN0aW9uIFIoVyxVKXtyZXR1cm4oUj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHEsdGUpe3JldHVybiBxLl9fcHJvdG9fXz10ZSxxfSkoVyxVKX12YXIgRSx6LGo9e307ZnVuY3Rpb24gVihXLFUscSl7cXx8KHE9RXJy''@;'; put 'put ''b3IpO3ZhciB0ZT1mdW5jdGlvbihuZSl7ZnVuY3Rpb24gaWUobGUsZGUsdWUpe3ZhciBjZTtyZXR1cm4gZnVuY3Rpb24oWSxiKXtpZighKFkgaW5zdGFuY2VvZiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxpZSksY2U9''@;'; put 'put ''ZnVuY3Rpb24gSihXLFUpe3JldHVybiFVfHwib2JqZWN0IiE9PUsoVSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBVP2Z1bmN0aW9uKHEpe2lmKHZvaWQgMD09PXEpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl''@;'; put 'put ''biBjYWxsZWQiKTtyZXR1cm4gcX0oVyk6VX0odGhpcyxJKGllKS5jYWxsKHRoaXMsInN0cmluZyI9PXR5cGVvZiBVP1U6VShsZSxkZSx1ZSkpKSxjZS5jb2RlPVcsY2V9cmV0dXJuIGZ1bmN0aW9uKGxlLGRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUmJm51bGwhPT1kZSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2xlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGRlJiZkZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpsZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZGUm''@;'; put 'put ''JlIobGUsZGUpfShpZSxuZSksaWV9KHEpO2pbV109dGV9ZnVuY3Rpb24gRyhXLFUpe2lmKEFycmF5LmlzQXJyYXkoVykpe3ZhciBxPVcubGVuZ3RoO3JldHVybiBXPVcubWFwKGZ1bmN0aW9uKHRlKXtyZXR1cm4gU3RyaW5nKHRlKX0pLHE+Mj8ib25lIG9mICIuY29uY2F0KFUsIiAiKS5jb25j''@;'; put 'put ''YXQoVy5zbGljZSgwLHEtMSkuam9pbigiLCAiKSwiLCBvciAiKStXW3EtMV06Mj09PXE/Im9uZSBvZiAiLmNvbmNhdChVLCIgIikuY29uY2F0KFdbMF0sIiBvciAiKS5jb25jYXQoV1sxXSk6Im9mICIuY29uY2F0KFUsIiAiKS5jb25jYXQoV1swXSl9cmV0dXJuIm9mICIuY29uY2F0KFUsIiAi''@;'; put 'put ''KS5jb25jYXQoU3RyaW5nKFcpKX1WKCJFUlJfQU1CSUdVT1VTX0FSR1VNRU5UIiwnVGhlICIlcyIgYXJndW1lbnQgaXMgYW1iaWd1b3VzLiAlcycsVHlwZUVycm9yKSxWKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oVyxVLHEpe3ZhciB0ZSxsZSx1ZSxZO2lmKHZvaWQgMD09PUUm''@;'; put 'put ''JihFPUwoOTI4MikpLEUoInN0cmluZyI9PXR5cGVvZiBXLCInbmFtZScgbXVzdCBiZSBhIHN0cmluZyIpLCJzdHJpbmciPT10eXBlb2YgVSYmIm5vdCAiPT09VS5zdWJzdHIoMCw0KT8odGU9Im11c3Qgbm90IGJlIixVPVUucmVwbGFjZSgvXm5vdCAvLCIiKSk6dGU9Im11c3QgYmUiLHVlPVcs''@;'; put 'put ''KHZvaWQgMD09PVl8fFk+dWUubGVuZ3RoKSYmKFk9dWUubGVuZ3RoKSwiIGFyZ3VtZW50Ij09PXVlLnN1YnN0cmluZyhZLTksWSkpbGU9IlRoZSAiLmNvbmNhdChXLCIgIikuY29uY2F0KHRlLCIgIikuY29uY2F0KEcoVSwidHlwZSIpKTtlbHNle3ZhciBkZT1mdW5jdGlvbih1ZSxjZSxZKXty''@;'; put 'put ''ZXR1cm4ibnVtYmVyIiE9dHlwZW9mIFkmJihZPTApLCEoWSsxPnVlLmxlbmd0aCkmJi0xIT09dWUuaW5kZXhPZigiLiIsWSl9KFcpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtsZT0nVGhlICInLmNvbmNhdChXLCciICcpLmNvbmNhdChkZSwiICIpLmNvbmNhdCh0ZSwiICIpLmNvbmNhdChHKFUs''@;'; put 'put ''InR5cGUiKSl9cmV0dXJuIGxlKyIuIFJlY2VpdmVkIHR5cGUgIi5jb25jYXQoSyhxKSl9LFR5cGVFcnJvciksVigiRVJSX0lOVkFMSURfQVJHX1ZBTFVFIixmdW5jdGlvbihXLFUpe3ZhciBxPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToi''@;'; put 'put ''aXMgaW52YWxpZCI7dm9pZCAwPT09eiYmKHo9TCg5NTM5KSk7dmFyIHRlPXouaW5zcGVjdChVKTtyZXR1cm4gdGUubGVuZ3RoPjEyOCYmKHRlPSIiLmNvbmNhdCh0ZS5zbGljZSgwLDEyOCksIi4uLiIpKSwiVGhlIGFyZ3VtZW50ICciLmNvbmNhdChXLCInICIpLmNvbmNhdChxLCIuIFJlY2Vp''@;'; put 'put ''dmVkICIpLmNvbmNhdCh0ZSl9LFR5cGVFcnJvcixSYW5nZUVycm9yKSxWKCJFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUiLGZ1bmN0aW9uKFcsVSxxKXt2YXIgdGU7cmV0dXJuIHRlPXEmJnEuY29uc3RydWN0b3ImJnEuY29uc3RydWN0b3IubmFtZT8iaW5zdGFuY2Ugb2YgIi5jb25jYXQocS5j''@;'; put 'put ''b25zdHJ1Y3Rvci5uYW1lKToidHlwZSAiLmNvbmNhdChLKHEpKSwiRXhwZWN0ZWQgIi5jb25jYXQoVywnIHRvIGJlIHJldHVybmVkIGZyb20gdGhlICInKS5jb25jYXQoVSwnIicpKyIgZnVuY3Rpb24gYnV0IGdvdCAiLmNvbmNhdCh0ZSwiLiIpfSxUeXBlRXJyb3IpLFYoIkVSUl9NSVNTSU5H''@;'; put 'put ''X0FSR1MiLGZ1bmN0aW9uKCl7Zm9yKHZhciBXPWFyZ3VtZW50cy5sZW5ndGgsVT1uZXcgQXJyYXkoVykscT0wO3E8VztxKyspVVtxXT1hcmd1bWVudHNbcV07dm9pZCAwPT09RSYmKEU9TCg5MjgyKSksRShVLmxlbmd0aD4wLCJBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmll''@;'; put 'put ''ZCIpO3ZhciB0ZT0iVGhlICIsbmU9VS5sZW5ndGg7c3dpdGNoKFU9VS5tYXAoZnVuY3Rpb24oaWUpe3JldHVybiciJy5jb25jYXQoaWUsJyInKX0pLG5lKXtjYXNlIDE6dGUrPSIiLmNvbmNhdChVWzBdLCIgYXJndW1lbnQiKTticmVhaztjYXNlIDI6dGUrPSIiLmNvbmNhdChVWzBdLCIgYW5k''@;'; put 'put ''ICIpLmNvbmNhdChVWzFdLCIgYXJndW1lbnRzIik7YnJlYWs7ZGVmYXVsdDp0ZSs9VS5zbGljZSgwLG5lLTEpLmpvaW4oIiwgIiksdGUrPSIsIGFuZCAiLmNvbmNhdChVW25lLTFdLCIgYXJndW1lbnRzIil9cmV0dXJuIiIuY29uY2F0KHRlLCIgbXVzdCBiZSBzcGVjaWZpZWQiKX0sVHlwZUVy''@;'; put 'put ''cm9yKSxILmV4cG9ydHMuY29kZXM9an0sOTE1ODooSCxCLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEsod2UsSWUpe3JldHVybiBmdW5jdGlvbihPZSl7aWYoQXJyYXkuaXNBcnJheShPZSkpcmV0dXJuIE9lfSh3ZSl8fGZ1bmN0aW9uKE9lLGV0KXt2YXIgbnQ9W10scWU9ITAsaHQ9ITEs''@;'; put 'put ''RWU9dm9pZCAwO3RyeXtmb3IodmFyIERlLCRlPU9lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHFlPShEZT0kZS5uZXh0KCkpLmRvbmUpJiYobnQucHVzaChEZS52YWx1ZSksIWV0fHxudC5sZW5ndGghPT1ldCk7cWU9ITApO31jYXRjaChhdCl7aHQ9ITAsRWU9YXR9ZmluYWxseXt0cnl7cWV8fG51''@;'; put 'put ''bGw9PSRlLnJldHVybnx8JGUucmV0dXJuKCl9ZmluYWxseXtpZihodCl0aHJvdyBFZX19cmV0dXJuIG50fSh3ZSxJZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfWZ1bmN0''@;'; put 'put ''aW9uIEood2Upe3JldHVybihKPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKEllKXtyZXR1cm4gdHlwZW9mIEllfTpmdW5jdGlvbihJZSl7cmV0dXJuIEllJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZJZS5j''@;'; put 'put ''b25zdHJ1Y3Rvcj09PVN5bWJvbCYmSWUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBJZX0pKHdlKX12YXIgST12b2lkIDAhPT0vYS9nLmZsYWdzLFI9ZnVuY3Rpb24od2Upe3ZhciBJZT1bXTtyZXR1cm4gd2UuZm9yRWFjaChmdW5jdGlvbihPZSl7cmV0dXJuIEllLnB1c2go''@;'; put 'put ''T2UpfSksSWV9LEU9ZnVuY3Rpb24od2Upe3ZhciBJZT1bXTtyZXR1cm4gd2UuZm9yRWFjaChmdW5jdGlvbihPZSxldCl7cmV0dXJuIEllLnB1c2goW2V0LE9lXSl9KSxJZX0sej1PYmplY3QuaXM/T2JqZWN0LmlzOkwoNjA5KSxqPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0''@;'; put 'put ''LmdldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbigpe3JldHVybltdfSxWPU51bWJlci5pc05hTj9OdW1iZXIuaXNOYU46TCgzNjApO2Z1bmN0aW9uIEcod2Upe3JldHVybiB3ZS5jYWxsLmJpbmQod2UpfXZhciBXPUcoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSksVT1HKE9i''@;'; put 'put ''amVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpLHE9RyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSx0ZT1MKDk1MzkpLnR5cGVzLG5lPXRlLmlzQW55QXJyYXlCdWZmZXIsaWU9dGUuaXNBcnJheUJ1ZmZlclZpZXcsbGU9dGUuaXNEYXRlLGRlPXRlLmlzTWFwLHVlPXRlLmlz''@;'; put 'put ''UmVnRXhwLGNlPXRlLmlzU2V0LFk9dGUuaXNOYXRpdmVFcnJvcixiPXRlLmlzQm94ZWRQcmltaXRpdmUseD10ZS5pc051bWJlck9iamVjdCxOPXRlLmlzU3RyaW5nT2JqZWN0LEY9dGUuaXNCb29sZWFuT2JqZWN0LGc9dGUuaXNCaWdJbnRPYmplY3QsQz10ZS5pc1N5bWJvbE9iamVjdCxNPXRl''@;'; put 'put ''LmlzRmxvYXQzMkFycmF5LHk9dGUuaXNGbG9hdDY0QXJyYXk7ZnVuY3Rpb24gcCh3ZSl7aWYoMD09PXdlLmxlbmd0aHx8d2UubGVuZ3RoPjEwKXJldHVybiEwO2Zvcih2YXIgSWU9MDtJZTx3ZS5sZW5ndGg7SWUrKyl7dmFyIE9lPXdlLmNoYXJDb2RlQXQoSWUpO2lmKE9lPDQ4fHxPZT41Nyly''@;'; put 'put ''ZXR1cm4hMH1yZXR1cm4gMTA9PT13ZS5sZW5ndGgmJndlPj1NYXRoLnBvdygyLDMyKX1mdW5jdGlvbiBTKHdlKXtyZXR1cm4gT2JqZWN0LmtleXMod2UpLmZpbHRlcihwKS5jb25jYXQoaih3ZSkuZmlsdGVyKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuYmluZCh3ZSkp''@;'; put 'put ''KX1mdW5jdGlvbiBRKHdlLEllKXtpZih3ZT09PUllKXJldHVybiAwO2Zvcih2YXIgT2U9d2UubGVuZ3RoLGV0PUllLmxlbmd0aCxudD0wLHFlPU1hdGgubWluKE9lLGV0KTtudDxxZTsrK250KWlmKHdlW250XSE9PUllW250XSl7T2U9d2VbbnRdLGV0PUllW250XTticmVha31yZXR1cm4gT2U8''@;'; put 'put ''ZXQ/LTE6ZXQ8T2U/MTowfXZhciBtZT0wLGtlPTEsVGU9MixQZT0zO2Z1bmN0aW9uIEZlKHdlLEllLE9lLGV0KXtpZih3ZT09PUllKXJldHVybiAwIT09d2V8fCFPZXx8eih3ZSxJZSk7aWYoT2Upe2lmKCJvYmplY3QiIT09Sih3ZSkpcmV0dXJuIm51bWJlciI9PXR5cGVvZiB3ZSYmVih3ZSkm''@;'; put 'put ''JlYoSWUpO2lmKCJvYmplY3QiIT09SihJZSl8fG51bGw9PT13ZXx8bnVsbD09PUllfHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2UpIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKEllKSlyZXR1cm4hMX1lbHNle2lmKG51bGw9PT13ZXx8Im9iamVjdCIhPT1KKHdlKSlyZXR1cm4obnVsbD09PUll''@;'; put 'put ''fHwib2JqZWN0IiE9PUooSWUpKSYmd2U9PUllO2lmKG51bGw9PT1JZXx8Im9iamVjdCIhPT1KKEllKSlyZXR1cm4hMX12YXIgbnQscWUsaHQsRWUsUHQsQXQsRGU9cSh3ZSk7aWYoRGUhPT1xKEllKSlyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KHdlKSl7aWYod2UubGVuZ3RoIT09SWUubGVu''@;'; put 'put ''Z3RoKXJldHVybiExO3ZhciAkZT1TKHdlKSxhdD1TKEllKTtyZXR1cm4gJGUubGVuZ3RoPT09YXQubGVuZ3RoJiZMZSh3ZSxJZSxPZSxldCxrZSwkZSl9aWYoIltvYmplY3QgT2JqZWN0XSI9PT1EZSYmKCFkZSh3ZSkmJmRlKEllKXx8IWNlKHdlKSYmY2UoSWUpKSlyZXR1cm4hMTtpZihsZSh3''@;'; put 'put ''ZSkpe2lmKCFsZShJZSl8fERhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbCh3ZSkhPT1EYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwoSWUpKXJldHVybiExfWVsc2UgaWYodWUod2UpKXtpZighdWUoSWUpfHwoaHQ9d2UsRWU9SWUsIShJP2h0LnNvdXJjZT09PUVlLnNvdXJjZSYmaHQuZmxh''@;'; put 'put ''Z3M9PT1FZS5mbGFnczpSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaHQpPT09UmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEVlKSkpKXJldHVybiExfWVsc2UgaWYoWSh3ZSl8fHdlIGluc3RhbmNlb2YgRXJyb3Ipe2lmKHdlLm1lc3NhZ2UhPT1JZS5tZXNzYWdlfHx3ZS5u''@;'; put 'put ''YW1lIT09SWUubmFtZSlyZXR1cm4hMX1lbHNle2lmKGllKHdlKSl7aWYoT2V8fCFNKHdlKSYmIXkod2UpKXtpZigoUHQ9d2UpLmJ5dGVMZW5ndGghPT0oQXQ9SWUpLmJ5dGVMZW5ndGh8fDAhPT1RKG5ldyBVaW50OEFycmF5KFB0LmJ1ZmZlcixQdC5ieXRlT2Zmc2V0LFB0LmJ5dGVMZW5ndGgp''@;'; put 'put ''LG5ldyBVaW50OEFycmF5KEF0LmJ1ZmZlcixBdC5ieXRlT2Zmc2V0LEF0LmJ5dGVMZW5ndGgpKSlyZXR1cm4hMX1lbHNlIGlmKCFmdW5jdGlvbihQdCxBdCl7aWYoUHQuYnl0ZUxlbmd0aCE9PUF0LmJ5dGVMZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBKdD0wO0p0PFB0LmJ5dGVMZW5ndGg7SnQr''@;'; put 'put ''KylpZihQdFtKdF0hPT1BdFtKdF0pcmV0dXJuITE7cmV0dXJuITB9KHdlLEllKSlyZXR1cm4hMTt2YXIgY3Q9Uyh3ZSksT3Q9UyhJZSk7cmV0dXJuIGN0Lmxlbmd0aD09PU90Lmxlbmd0aCYmTGUod2UsSWUsT2UsZXQsbWUsY3QpfWlmKGNlKHdlKSlyZXR1cm4hKCFjZShJZSl8fHdlLnNpemUh''@;'; put 'put ''PT1JZS5zaXplKSYmTGUod2UsSWUsT2UsZXQsVGUpO2lmKGRlKHdlKSlyZXR1cm4hKCFkZShJZSl8fHdlLnNpemUhPT1JZS5zaXplKSYmTGUod2UsSWUsT2UsZXQsUGUpO2lmKG5lKHdlKSl7aWYoKG50PXdlKS5ieXRlTGVuZ3RoIT09KHFlPUllKS5ieXRlTGVuZ3RofHwwIT09UShuZXcgVWlu''@;'; put 'put ''dDhBcnJheShudCksbmV3IFVpbnQ4QXJyYXkocWUpKSlyZXR1cm4hMX1lbHNlIGlmKGIod2UpJiYhZnVuY3Rpb24oUHQsQXQpe3JldHVybiB4KFB0KT94KEF0KSYmeihOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbChQdCksTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoQXQpKTpO''@;'; put 'put ''KFB0KT9OKEF0KSYmU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUHQpPT09U3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoQXQpOkYoUHQpP0YoQXQpJiZCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUHQpPT09Qm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKEF0''@;'; put 'put ''KTpnKFB0KT9nKEF0KSYmQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUHQpPT09QmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoQXQpOkMoQXQpJiZTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbChQdCk9PT1TeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbChBdCl9KHdl''@;'; put 'put ''LEllKSlyZXR1cm4hMX1yZXR1cm4gTGUod2UsSWUsT2UsZXQsbWUpfWZ1bmN0aW9uIE5lKHdlLEllKXtyZXR1cm4gSWUuZmlsdGVyKGZ1bmN0aW9uKE9lKXtyZXR1cm4gVSh3ZSxPZSl9KX1mdW5jdGlvbiBMZSh3ZSxJZSxPZSxldCxudCxxZSl7aWYoNT09PWFyZ3VtZW50cy5sZW5ndGgpe3Fl''@;'; put 'put ''PU9iamVjdC5rZXlzKHdlKTt2YXIgaHQ9T2JqZWN0LmtleXMoSWUpO2lmKHFlLmxlbmd0aCE9PWh0Lmxlbmd0aClyZXR1cm4hMX1mb3IodmFyIEVlPTA7RWU8cWUubGVuZ3RoO0VlKyspaWYoIVcoSWUscWVbRWVdKSlyZXR1cm4hMTtpZihPZSYmNT09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBE''@;'; put 'put ''ZT1qKHdlKTtpZigwIT09RGUubGVuZ3RoKXt2YXIgJGU9MDtmb3IoRWU9MDtFZTxEZS5sZW5ndGg7RWUrKyl7dmFyIGF0PURlW0VlXTtpZihVKHdlLGF0KSl7aWYoIVUoSWUsYXQpKXJldHVybiExO3FlLnB1c2goYXQpLCRlKyt9ZWxzZSBpZihVKEllLGF0KSlyZXR1cm4hMX12YXIgY3Q9aihJ''@;'; put 'put ''ZSk7aWYoRGUubGVuZ3RoIT09Y3QubGVuZ3RoJiZOZShJZSxjdCkubGVuZ3RoIT09JGUpcmV0dXJuITF9ZWxzZXt2YXIgT3Q9aihJZSk7aWYoMCE9PU90Lmxlbmd0aCYmMCE9PU5lKEllLE90KS5sZW5ndGgpcmV0dXJuITF9fWlmKDA9PT1xZS5sZW5ndGgmJihudD09PW1lfHxudD09PWtlJiYw''@;'; put 'put ''PT09d2UubGVuZ3RofHwwPT09d2Uuc2l6ZSkpcmV0dXJuITA7aWYodm9pZCAwPT09ZXQpZXQ9e3ZhbDE6bmV3IE1hcCx2YWwyOm5ldyBNYXAscG9zaXRpb246MH07ZWxzZXt2YXIgUHQ9ZXQudmFsMS5nZXQod2UpO2lmKHZvaWQgMCE9PVB0KXt2YXIgQXQ9ZXQudmFsMi5nZXQoSWUpO2lmKHZv''@;'; put 'put ''aWQgMCE9PUF0KXJldHVybiBQdD09PUF0fWV0LnBvc2l0aW9uKyt9ZXQudmFsMS5zZXQod2UsZXQucG9zaXRpb24pLGV0LnZhbDIuc2V0KEllLGV0LnBvc2l0aW9uKTt2YXIgSnQ9ZnVuY3Rpb24obW4sTnQsYm4sR24sb24sJG4pe3ZhciBObj0wO2lmKCRuPT09VGUpe2lmKCFmdW5jdGlvbihD''@;'; put 'put ''dCxlbixfdCxWdCl7Zm9yKHZhciBfbj1udWxsLG90PVIoQ3QpLEl0PTA7SXQ8b3QubGVuZ3RoO0l0Kyspe3ZhciBubj1vdFtJdF07aWYoIm9iamVjdCI9PT1KKG5uKSYmbnVsbCE9PW5uKW51bGw9PT1fbiYmKF9uPW5ldyBTZXQpLF9uLmFkZChubik7ZWxzZSBpZighZW4uaGFzKG5uKSl7aWYo''@;'; put 'put ''X3R8fCFRZShDdCxlbixubikpcmV0dXJuITE7bnVsbD09PV9uJiYoX249bmV3IFNldCksX24uYWRkKG5uKX19aWYobnVsbCE9PV9uKXtmb3IodmFyIER0PVIoZW4pLHZ0PTA7dnQ8RHQubGVuZ3RoO3Z0Kyspe3ZhciBHdD1EdFt2dF07aWYoIm9iamVjdCI9PT1KKEd0KSYmbnVsbCE9PUd0KXtp''@;'; put 'put ''ZighQmUoX24sR3QsX3QsVnQpKXJldHVybiExfWVsc2UgaWYoIV90JiYhQ3QuaGFzKEd0KSYmIUJlKF9uLEd0LF90LFZ0KSlyZXR1cm4hMX1yZXR1cm4gMD09PV9uLnNpemV9cmV0dXJuITB9KG1uLE50LGJuLG9uKSlyZXR1cm4hMX1lbHNlIGlmKCRuPT09UGUpe2lmKCFmdW5jdGlvbihDdCxl''@;'; put 'put ''bixfdCxWdCl7Zm9yKHZhciBfbj1udWxsLG90PUUoQ3QpLEl0PTA7SXQ8b3QubGVuZ3RoO0l0Kyspe3ZhciBubj1LKG90W0l0XSwyKSxEdD1ublswXSx2dD1ublsxXTtpZigib2JqZWN0Ij09PUooRHQpJiZudWxsIT09RHQpbnVsbD09PV9uJiYoX249bmV3IFNldCksX24uYWRkKER0KTtlbHNl''@;'; put 'put ''e3ZhciBHdD1lbi5nZXQoRHQpO2lmKHZvaWQgMD09PUd0JiYhZW4uaGFzKER0KXx8IUZlKHZ0LEd0LF90LFZ0KSl7aWYoX3R8fCFtdChDdCxlbixEdCx2dCxWdCkpcmV0dXJuITE7bnVsbD09PV9uJiYoX249bmV3IFNldCksX24uYWRkKER0KX19fWlmKG51bGwhPT1fbil7Zm9yKHZhciBMbj1F''@;'; put 'put ''KGVuKSx6dD0wO3p0PExuLmxlbmd0aDt6dCsrKXt2YXIgTW49SyhMblt6dF0sMiksVG49KER0PU1uWzBdLE1uWzFdKTtpZigib2JqZWN0Ij09PUooRHQpJiZudWxsIT09RHQpe2lmKCFLZShfbixDdCxEdCxUbixfdCxWdCkpcmV0dXJuITF9ZWxzZSBpZighKF90fHxDdC5oYXMoRHQpJiZGZShD''@;'; put 'put ''dC5nZXQoRHQpLFRuLCExLFZ0KXx8S2UoX24sQ3QsRHQsVG4sITEsVnQpKSlyZXR1cm4hMX1yZXR1cm4gMD09PV9uLnNpemV9cmV0dXJuITB9KG1uLE50LGJuLG9uKSlyZXR1cm4hMX1lbHNlIGlmKCRuPT09a2UpZm9yKDtObjxtbi5sZW5ndGg7Tm4rKyl7aWYoIVcobW4sTm4pKXtpZihXKE50''@;'; put 'put ''LE5uKSlyZXR1cm4hMTtmb3IodmFyIHB0PU9iamVjdC5rZXlzKG1uKTtObjxwdC5sZW5ndGg7Tm4rKyl7dmFyIHBuPXB0W05uXTtpZighVyhOdCxwbil8fCFGZShtbltwbl0sTnRbcG5dLGJuLG9uKSlyZXR1cm4hMX1yZXR1cm4gcHQubGVuZ3RoPT09T2JqZWN0LmtleXMoTnQpLmxlbmd0aH1p''@;'; put 'put ''ZighVyhOdCxObil8fCFGZShtbltObl0sTnRbTm5dLGJuLG9uKSlyZXR1cm4hMX1mb3IoTm49MDtObjxHbi5sZW5ndGg7Tm4rKyl7dmFyIGhuPUduW05uXTtpZighRmUobW5baG5dLE50W2huXSxibixvbikpcmV0dXJuITF9cmV0dXJuITB9KHdlLEllLE9lLHFlLGV0LG50KTtyZXR1cm4gZXQu''@;'; put 'put ''dmFsMS5kZWxldGUod2UpLGV0LnZhbDIuZGVsZXRlKEllKSxKdH1mdW5jdGlvbiBCZSh3ZSxJZSxPZSxldCl7Zm9yKHZhciBudD1SKHdlKSxxZT0wO3FlPG50Lmxlbmd0aDtxZSsrKXt2YXIgaHQ9bnRbcWVdO2lmKEZlKEllLGh0LE9lLGV0KSlyZXR1cm4gd2UuZGVsZXRlKGh0KSwhMH1yZXR1''@;'; put 'put ''cm4hMX1mdW5jdGlvbiBIZSh3ZSl7c3dpdGNoKEood2UpKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuIG51bGw7Y2FzZSJvYmplY3QiOnJldHVybjtjYXNlInN5bWJvbCI6cmV0dXJuITE7Y2FzZSJzdHJpbmciOndlPSt3ZTtjYXNlIm51bWJlciI6aWYoVih3ZSkpcmV0dXJuITF9cmV0dXJuITB9''@;'; put 'put ''ZnVuY3Rpb24gUWUod2UsSWUsT2Upe3ZhciBldD1IZShPZSk7cmV0dXJuIGV0Pz8oSWUuaGFzKGV0KSYmIXdlLmhhcyhldCkpfWZ1bmN0aW9uIG10KHdlLEllLE9lLGV0LG50KXt2YXIgcWU9SGUoT2UpO2lmKG51bGwhPXFlKXJldHVybiBxZTt2YXIgaHQ9SWUuZ2V0KHFlKTtyZXR1cm4hKHZv''@;'; put 'put ''aWQgMD09PWh0JiYhSWUuaGFzKHFlKXx8IUZlKGV0LGh0LCExLG50KSkmJiF3ZS5oYXMocWUpJiZGZShldCxodCwhMSxudCl9ZnVuY3Rpb24gS2Uod2UsSWUsT2UsZXQsbnQscWUpe2Zvcih2YXIgaHQ9Uih3ZSksRWU9MDtFZTxodC5sZW5ndGg7RWUrKyl7dmFyIERlPWh0W0VlXTtpZihGZShP''@;'; put 'put ''ZSxEZSxudCxxZSkmJkZlKGV0LEllLmdldChEZSksbnQscWUpKXJldHVybiB3ZS5kZWxldGUoRGUpLCEwfXJldHVybiExfUguZXhwb3J0cz17aXNEZWVwRXF1YWw6ZnVuY3Rpb24od2UsSWUpe3JldHVybiBGZSh3ZSxJZSwhMSl9LGlzRGVlcFN0cmljdEVxdWFsOmZ1bmN0aW9uKHdlLEllKXty''@;'; put 'put ''ZXR1cm4gRmUod2UsSWUsITApfX19LDgyMjQ6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ZnVuY3Rpb24oQil7cmV0dXJuIEJ9fSw5NjY5OihILEIsTCk9PntILmV4cG9ydHM9TCgxNjA5KX0sNTQ0ODooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDg2NyksSj1MKDYwMjYpLEk9''@;'; put 'put ''TCg0MzcyKSxSPUwoNTMyNyksRT1MKDQwOTcpLHo9TCg0MTA5KSxqPUwoNzk4NSksVj1MKDc4NzQpLEc9TCgyNjQ4KSxXPUwoNjQ0KSxVPUwoMjA1KTtILmV4cG9ydHM9ZnVuY3Rpb24ocSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHRlLG5lKXt2YXIgaWUsbGU9cS5kYXRhLGRlPXEu''@;'; put 'put ''aGVhZGVycyx1ZT1xLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiBjZSgpe3EuY2FuY2VsVG9rZW4mJnEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoaWUpLHEuc2lnbmFsJiZxLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsaWUpfUsuaXNGb3JtRGF0YShsZSkmJksuaXNTdGFuZGFy''@;'; put 'put ''ZEJyb3dzZXJFbnYoKSYmZGVsZXRlIGRlWyJDb250ZW50LVR5cGUiXTt2YXIgWT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYocS5hdXRoKXt2YXIgYj1xLmF1dGgudXNlcm5hbWV8fCIiLHg9cS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChxLmF1dGgucGFzc3dvcmQp''@;'; put 'put ''KToiIjtkZS5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYisiOiIreCl9dmFyIE49RShxLmJhc2VVUkwscS51cmwpO2Z1bmN0aW9uIEYoKXtpZihZKXt2YXIgTT0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIFk/eihZLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsO0ooZnVuY3Rp''@;'; put 'put ''b24ocCl7dGUocCksY2UoKX0sZnVuY3Rpb24ocCl7bmUocCksY2UoKX0se2RhdGE6dWUmJiJ0ZXh0IiE9PXVlJiYianNvbiIhPT11ZT9ZLnJlc3BvbnNlOlkucmVzcG9uc2VUZXh0LHN0YXR1czpZLnN0YXR1cyxzdGF0dXNUZXh0Olkuc3RhdHVzVGV4dCxoZWFkZXJzOk0sY29uZmlnOnEscmVx''@;'; put 'put ''dWVzdDpZfSksWT1udWxsfX1pZihZLm9wZW4ocS5tZXRob2QudG9VcHBlckNhc2UoKSxSKE4scS5wYXJhbXMscS5wYXJhbXNTZXJpYWxpemVyKSwhMCksWS50aW1lb3V0PXEudGltZW91dCwib25sb2FkZW5kImluIFk/WS5vbmxvYWRlbmQ9RjpZLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlv''@;'; put 'put ''bigpe1kmJjQ9PT1ZLnJlYWR5U3RhdGUmJigwIT09WS5zdGF0dXN8fFkucmVzcG9uc2VVUkwmJjA9PT1ZLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KEYpfSxZLm9uYWJvcnQ9ZnVuY3Rpb24oKXtZJiYobmUobmV3IEcoIlJlcXVlc3QgYWJvcnRlZCIsRy5FQ09O''@;'; put 'put ''TkFCT1JURUQscSxZKSksWT1udWxsKX0sWS5vbmVycm9yPWZ1bmN0aW9uKCl7bmUobmV3IEcoIk5ldHdvcmsgRXJyb3IiLEcuRVJSX05FVFdPUksscSxZLFkpKSxZPW51bGx9LFkub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIE09cS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrcS50aW1lb3V0KyJt''@;'; put 'put ''cyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiO3EudGltZW91dEVycm9yTWVzc2FnZSYmKE09cS50aW1lb3V0RXJyb3JNZXNzYWdlKSxuZShuZXcgRyhNLChxLnRyYW5zaXRpb25hbHx8VikuY2xhcmlmeVRpbWVvdXRFcnJvcj9HLkVUSU1FRE9VVDpHLkVDT05OQUJPUlRFRCxxLFkpKSxZ''@;'; put 'put ''PW51bGx9LEsuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIGc9KHEud2l0aENyZWRlbnRpYWxzfHxqKE4pKSYmcS54c3JmQ29va2llTmFtZT9JLnJlYWQocS54c3JmQ29va2llTmFtZSk6dm9pZCAwO2cmJihkZVtxLnhzcmZIZWFkZXJOYW1lXT1nKX0ic2V0UmVxdWVzdEhlYWRlciJpbiBZ''@;'; put 'put ''JiZLLmZvckVhY2goZGUsZnVuY3Rpb24oTSx5KXt2b2lkIDA9PT1sZSYmImNvbnRlbnQtdHlwZSI9PT15LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGRlW3ldOlkuc2V0UmVxdWVzdEhlYWRlcih5LE0pfSksSy5pc1VuZGVmaW5lZChxLndpdGhDcmVkZW50aWFscyl8fChZLndpdGhDcmVkZW50aWFs''@;'; put 'put ''cz0hIXEud2l0aENyZWRlbnRpYWxzKSx1ZSYmImpzb24iIT09dWUmJihZLnJlc3BvbnNlVHlwZT1xLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIHEub25Eb3dubG9hZFByb2dyZXNzJiZZLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixxLm9uRG93bmxvYWRQcm9ncmVzcyks''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIHEub25VcGxvYWRQcm9ncmVzcyYmWS51cGxvYWQmJlkudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixxLm9uVXBsb2FkUHJvZ3Jlc3MpLChxLmNhbmNlbFRva2VufHxxLnNpZ25hbCkmJihpZT1mdW5jdGlvbihNKXtZJiYobmUoIU18fE0mJk0u''@;'; put 'put ''dHlwZT9uZXcgVzpNKSxZLmFib3J0KCksWT1udWxsKX0scS5jYW5jZWxUb2tlbiYmcS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoaWUpLHEuc2lnbmFsJiYocS5zaWduYWwuYWJvcnRlZD9pZSgpOnEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixpZSkpKSxsZXx8KGxlPW51bGwpO3Zh''@;'; put 'put ''ciBDPVUoTik7QyYmLTE9PT1bImh0dHAiLCJodHRwcyIsImZpbGUiXS5pbmRleE9mKEMpP25lKG5ldyBHKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0MrIjoiLEcuRVJSX0JBRF9SRVFVRVNULHEpKTpZLnNlbmQobGUpfSl9fSwxNjA5OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0''@;'; put 'put ''ODY3KSxKPUwoMTg0OSksST1MKDMyMSksUj1MKDcxODUpLEU9ZnVuY3Rpb24geihqKXt2YXIgVj1uZXcgSShqKSxHPUooSS5wcm90b3R5cGUucmVxdWVzdCxWKTtyZXR1cm4gSy5leHRlbmQoRyxJLnByb3RvdHlwZSxWKSxLLmV4dGVuZChHLFYpLEcuY3JlYXRlPWZ1bmN0aW9uKFcpe3JldHVy''@;'; put 'put ''biB6KFIoaixXKSl9LEd9KEwoNTU0NikpO0UuQXhpb3M9SSxFLkNhbmNlbGVkRXJyb3I9TCg2NDQpLEUuQ2FuY2VsVG9rZW49TCg0OTcyKSxFLmlzQ2FuY2VsPUwoNjUwMiksRS5WRVJTSU9OPUwoNzI4OCkudmVyc2lvbixFLnRvRm9ybURhdGE9TCg3Njc1KSxFLkF4aW9zRXJyb3I9TCgyNjQ4''@;'; put 'put ''KSxFLkNhbmNlbD1FLkNhbmNlbGVkRXJyb3IsRS5hbGw9ZnVuY3Rpb24oeil7cmV0dXJuIFByb21pc2UuYWxsKHopfSxFLnNwcmVhZD1MKDg3MTMpLEUuaXNBeGlvc0Vycm9yPUwoNjI2OCksSC5leHBvcnRzPUUsSC5leHBvcnRzLmRlZmF1bHQ9RX0sNDk3MjooSCxCLEwpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBLPUwoNjQ0KTtmdW5jdGlvbiBKKEkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBJKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgUjt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oeil7Uj16fSk7dmFyIEU9dGhp''@;'; put 'put ''czt0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbih6KXtpZihFLl9saXN0ZW5lcnMpe3ZhciBqLFY9RS5fbGlzdGVuZXJzLmxlbmd0aDtmb3Ioaj0wO2o8VjtqKyspRS5fbGlzdGVuZXJzW2pdKHopO0UuX2xpc3RlbmVycz1udWxsfX0pLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKHope3Zh''@;'; put 'put ''ciBqLFY9bmV3IFByb21pc2UoZnVuY3Rpb24oRyl7RS5zdWJzY3JpYmUoRyksaj1HfSkudGhlbih6KTtyZXR1cm4gVi5jYW5jZWw9ZnVuY3Rpb24oKXtFLnVuc3Vic2NyaWJlKGopfSxWfSxJKGZ1bmN0aW9uKHope0UucmVhc29ufHwoRS5yZWFzb249bmV3IEsoeiksUihFLnJlYXNvbikpfSl9''@;'; put 'put ''Si5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxKLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oSSl7dGhpcy5yZWFzb24/SSh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVy''@;'; put 'put ''cy5wdXNoKEkpOnRoaXMuX2xpc3RlbmVycz1bSV19LEoucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKEkpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIFI9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoSSk7LTEhPT1SJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKFIsMSl9fSxKLnNvdXJj''@;'; put 'put ''ZT1mdW5jdGlvbigpe3ZhciBJO3JldHVybnt0b2tlbjpuZXcgSihmdW5jdGlvbihSKXtJPVJ9KSxjYW5jZWw6SX19LEguZXhwb3J0cz1KfSw2NDQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDI2NDgpO2Z1bmN0aW9uIEooSSl7Sy5jYWxsKHRoaXMsST8/ImNhbmNlbGVkIixLLkVS''@;'; put 'put ''Ul9DQU5DRUxFRCksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1MKDQ4NjcpLmluaGVyaXRzKEosSyx7X19DQU5DRUxfXzohMH0pLEguZXhwb3J0cz1KfSw2NTAyOkg9PnsidXNlIHN0cmljdCI7SC5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiEoIUJ8fCFCLl9fQ0FOQ0VMX18pfX0sMzIx''@;'; put 'put ''OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0ODY3KSxKPUwoNTMyNyksST1MKDc4MiksUj1MKDM1NzIpLEU9TCg3MTg1KSx6PUwoNDA5Nyksaj1MKDQ4NzUpLFY9ai52YWxpZGF0b3JzO2Z1bmN0aW9uIEcoVyl7dGhpcy5kZWZhdWx0cz1XLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1''@;'; put 'put ''ZXN0Om5ldyBJLHJlc3BvbnNlOm5ldyBJfX1HLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKFcsVSl7InN0cmluZyI9PXR5cGVvZiBXPyhVPVV8fHt9KS51cmw9VzpVPVd8fHt9LFUubWV0aG9kPShVPUUodGhpcy5kZWZhdWx0cyxVKSkubWV0aG9kP1UubWV0aG9kLnRvTG93ZXJDYXNlKCk6''@;'; put 'put ''dGhpcy5kZWZhdWx0cy5tZXRob2Q/dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKToiZ2V0Ijt2YXIgcT1VLnRyYW5zaXRpb25hbDt2b2lkIDAhPT1xJiZqLmFzc2VydE9wdGlvbnMocSx7c2lsZW50SlNPTlBhcnNpbmc6Vi50cmFuc2l0aW9uYWwoVi5ib29sZWFuKSxmb3JjZWRK''@;'; put 'put ''U09OUGFyc2luZzpWLnRyYW5zaXRpb25hbChWLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Vi50cmFuc2l0aW9uYWwoVi5ib29sZWFuKX0sITEpO3ZhciB0ZT1bXSxuZT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24oYil7ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIGIucnVuV2hlbiYmITE9PT1iLnJ1bldoZW4oVSl8fChuZT1uZSYmYi5zeW5jaHJvbm91cyx0ZS51bnNoaWZ0KGIuZnVsZmlsbGVkLGIucmVqZWN0ZWQpKX0pO3ZhciBpZSxsZT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2xlLnB1c2go''@;'; put 'put ''Yi5mdWxmaWxsZWQsYi5yZWplY3RlZCl9KSwhbmUpe3ZhciBkZT1bUix2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShkZSx0ZSksZGU9ZGUuY29uY2F0KGxlKSxpZT1Qcm9taXNlLnJlc29sdmUoVSk7ZGUubGVuZ3RoOylpZT1pZS50aGVuKGRlLnNoaWZ0KCksZGUu''@;'; put 'put ''c2hpZnQoKSk7cmV0dXJuIGllfWZvcih2YXIgdWU9VTt0ZS5sZW5ndGg7KXt2YXIgY2U9dGUuc2hpZnQoKSxZPXRlLnNoaWZ0KCk7dHJ5e3VlPWNlKHVlKX1jYXRjaChiKXtZKGIpO2JyZWFrfX10cnl7aWU9Uih1ZSl9Y2F0Y2goYil7cmV0dXJuIFByb21pc2UucmVqZWN0KGIpfWZvcig7bGUu''@;'; put 'put ''bGVuZ3RoOylpZT1pZS50aGVuKGxlLnNoaWZ0KCksbGUuc2hpZnQoKSk7cmV0dXJuIGllfSxHLnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oVyl7Vz1FKHRoaXMuZGVmYXVsdHMsVyk7dmFyIFU9eihXLmJhc2VVUkwsVy51cmwpO3JldHVybiBKKFUsVy5wYXJhbXMsVy5wYXJhbXNTZXJpYWxp''@;'; put 'put ''emVyKX0sSy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihXKXtHLnByb3RvdHlwZVtXXT1mdW5jdGlvbihVLHEpe3JldHVybiB0aGlzLnJlcXVlc3QoRShxfHx7fSx7bWV0aG9kOlcsdXJsOlUsZGF0YToocXx8e30pLmRhdGF9KSl9fSksSy5mb3JF''@;'; put 'put ''YWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oVyl7ZnVuY3Rpb24gVShxKXtyZXR1cm4gZnVuY3Rpb24odGUsbmUsaWUpe3JldHVybiB0aGlzLnJlcXVlc3QoRShpZXx8e30se21ldGhvZDpXLGhlYWRlcnM6cT97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEi''@;'; put 'put ''fTp7fSx1cmw6dGUsZGF0YTpuZX0pKX19Ry5wcm90b3R5cGVbV109VSgpLEcucHJvdG90eXBlW1crIkZvcm0iXT1VKCEwKX0pLEguZXhwb3J0cz1HfSwyNjQ4OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0ODY3KTtmdW5jdGlvbiBKKEUseixqLFYsRyl7RXJyb3IuY2FsbCh0aGlz''@;'; put 'put ''KSx0aGlzLm1lc3NhZ2U9RSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLHomJih0aGlzLmNvZGU9eiksaiYmKHRoaXMuY29uZmlnPWopLFYmJih0aGlzLnJlcXVlc3Q9ViksRyYmKHRoaXMucmVzcG9uc2U9Ryl9Sy5pbmhlcml0cyhKLEVycm9yLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57bWVz''@;'; put 'put ''c2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3Rh''@;'; put 'put ''Y2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBJPUoucHJvdG90eXBlLFI9e307WyJFUlJfQkFEX09QVElPTl9WQUxV''@;'; put 'put ''RSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIl0uZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihFKXtSW0VdPXt2YWx1ZTpFfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEosUiksT2JqZWN0LmRlZmluZVByb3BlcnR5KEksImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSksSi5mcm9tPWZ1bmN0aW9uKEUseixqLFYsRyxXKXt2YXIgVT1PYmplY3QuY3JlYXRlKEkpO3Jl''@;'; put 'put ''dHVybiBLLnRvRmxhdE9iamVjdChFLFUsZnVuY3Rpb24ocSl7cmV0dXJuIHEhPT1FcnJvci5wcm90b3R5cGV9KSxKLmNhbGwoVSxFLm1lc3NhZ2UseixqLFYsRyksVS5uYW1lPUUubmFtZSxXJiZPYmplY3QuYXNzaWduKFUsVyksVX0sSC5leHBvcnRzPUp9LDc4MjooSCxCLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBLPUwoNDg2Nyk7ZnVuY3Rpb24gSigpe3RoaXMuaGFuZGxlcnM9W119Si5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKEksUixFKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6SSxyZWplY3RlZDpSLHN5bmNocm9ub3VzOiEhRSYmRS5zeW5jaHJvbm91cyxy''@;'; put 'put ''dW5XaGVuOkU/RS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSxKLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihJKXt0aGlzLmhhbmRsZXJzW0ldJiYodGhpcy5oYW5kbGVyc1tJXT1udWxsKX0sSi5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihJKXtLLmZvckVhY2go''@;'; put 'put ''dGhpcy5oYW5kbGVycyxmdW5jdGlvbihSKXtudWxsIT09UiYmSShSKX0pfSxILmV4cG9ydHM9Sn0sNDA5NzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoMTc5MyksSj1MKDczMDMpO0guZXhwb3J0cz1mdW5jdGlvbihJLFIpe3JldHVybiBJJiYhSyhSKT9KKEksUik6Un19LDM1NzI6''@;'; put 'put ''KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpLEo9TCg4NTI3KSxJPUwoNjUwMiksUj1MKDU1NDYpLEU9TCg2NDQpO2Z1bmN0aW9uIHooail7aWYoai5jYW5jZWxUb2tlbiYmai5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksai5zaWduYWwmJmouc2lnbmFsLmFib3J0''@;'; put 'put ''ZWQpdGhyb3cgbmV3IEV9SC5leHBvcnRzPWZ1bmN0aW9uKGope3JldHVybiB6KGopLGouaGVhZGVycz1qLmhlYWRlcnN8fHt9LGouZGF0YT1KLmNhbGwoaixqLmRhdGEsai5oZWFkZXJzLGoudHJhbnNmb3JtUmVxdWVzdCksai5oZWFkZXJzPUsubWVyZ2Uoai5oZWFkZXJzLmNvbW1vbnx8e30s''@;'; put 'put ''ai5oZWFkZXJzW2oubWV0aG9kXXx8e30sai5oZWFkZXJzKSxLLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sZnVuY3Rpb24oVil7ZGVsZXRlIGouaGVhZGVyc1tWXX0pLChqLmFkYXB0ZXJ8fFIuYWRhcHRlcikoaikudGhlbihm''@;'; put 'put ''dW5jdGlvbihWKXtyZXR1cm4geihqKSxWLmRhdGE9Si5jYWxsKGosVi5kYXRhLFYuaGVhZGVycyxqLnRyYW5zZm9ybVJlc3BvbnNlKSxWfSxmdW5jdGlvbihWKXtyZXR1cm4gSShWKXx8KHooaiksViYmVi5yZXNwb25zZSYmKFYucmVzcG9uc2UuZGF0YT1KLmNhbGwoaixWLnJlc3BvbnNlLmRh''@;'; put 'put ''dGEsVi5yZXNwb25zZS5oZWFkZXJzLGoudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QoVil9KX19LDcxODU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpO0guZXhwb3J0cz1mdW5jdGlvbihKLEkpe0k9SXx8e307dmFyIFI9e307ZnVuY3Rpb24gRShVLHEp''@;'; put 'put ''e3JldHVybiBLLmlzUGxhaW5PYmplY3QoVSkmJksuaXNQbGFpbk9iamVjdChxKT9LLm1lcmdlKFUscSk6Sy5pc1BsYWluT2JqZWN0KHEpP0subWVyZ2Uoe30scSk6Sy5pc0FycmF5KHEpP3Euc2xpY2UoKTpxfWZ1bmN0aW9uIHooVSl7cmV0dXJuIEsuaXNVbmRlZmluZWQoSVtVXSk/Sy5pc1Vu''@;'; put 'put ''ZGVmaW5lZChKW1VdKT92b2lkIDA6RSh2b2lkIDAsSltVXSk6RShKW1VdLElbVV0pfWZ1bmN0aW9uIGooVSl7aWYoIUsuaXNVbmRlZmluZWQoSVtVXSkpcmV0dXJuIEUodm9pZCAwLElbVV0pfWZ1bmN0aW9uIFYoVSl7cmV0dXJuIEsuaXNVbmRlZmluZWQoSVtVXSk/Sy5pc1VuZGVmaW5lZChK''@;'; put 'put ''W1VdKT92b2lkIDA6RSh2b2lkIDAsSltVXSk6RSh2b2lkIDAsSVtVXSl9ZnVuY3Rpb24gRyhVKXtyZXR1cm4gVSBpbiBJP0UoSltVXSxJW1VdKTpVIGluIEo/RSh2b2lkIDAsSltVXSk6dm9pZCAwfXZhciBXPXt1cmw6aixtZXRob2Q6aixkYXRhOmosYmFzZVVSTDpWLHRyYW5zZm9ybVJlcXVl''@;'; put 'put ''c3Q6Vix0cmFuc2Zvcm1SZXNwb25zZTpWLHBhcmFtc1NlcmlhbGl6ZXI6Vix0aW1lb3V0OlYsdGltZW91dE1lc3NhZ2U6Vix3aXRoQ3JlZGVudGlhbHM6VixhZGFwdGVyOlYscmVzcG9uc2VUeXBlOlYseHNyZkNvb2tpZU5hbWU6Vix4c3JmSGVhZGVyTmFtZTpWLG9uVXBsb2FkUHJvZ3Jlc3M6''@;'; put 'put ''VixvbkRvd25sb2FkUHJvZ3Jlc3M6VixkZWNvbXByZXNzOlYsbWF4Q29udGVudExlbmd0aDpWLG1heEJvZHlMZW5ndGg6VixiZWZvcmVSZWRpcmVjdDpWLHRyYW5zcG9ydDpWLGh0dHBBZ2VudDpWLGh0dHBzQWdlbnQ6VixjYW5jZWxUb2tlbjpWLHNvY2tldFBhdGg6VixyZXNwb25zZUVuY29k''@;'; put 'put ''aW5nOlYsdmFsaWRhdGVTdGF0dXM6R307cmV0dXJuIEsuZm9yRWFjaChPYmplY3Qua2V5cyhKKS5jb25jYXQoT2JqZWN0LmtleXMoSSkpLGZ1bmN0aW9uKFUpe3ZhciBxPVdbVV18fHosdGU9cShVKTtLLmlzVW5kZWZpbmVkKHRlKSYmcSE9PUd8fChSW1VdPXRlKX0pLFJ9fSw2MDI2OihILEIs''@;'; put 'put ''TCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgyNjQ4KTtILmV4cG9ydHM9ZnVuY3Rpb24oSixJLFIpe3ZhciBFPVIuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1Iuc3RhdHVzJiZFJiYhRShSLnN0YXR1cyk/SShuZXcgSygiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK1Iuc3RhdHVz''@;'; put 'put ''LFtLLkVSUl9CQURfUkVRVUVTVCxLLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IoUi5zdGF0dXMvMTAwKS00XSxSLmNvbmZpZyxSLnJlcXVlc3QsUikpOkooUil9fSw4NTI3OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0ODY3KSxKPUwoNTU0Nik7SC5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKEksUixFKXt2YXIgej10aGlzfHxKO3JldHVybiBLLmZvckVhY2goRSxmdW5jdGlvbihqKXtJPWouY2FsbCh6LEksUil9KSxJfX0sNTU0NjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1MKDQ4NjcpLEk9TCg2MDE2KSxSPUwoMjY0OCksRT1MKDc4NzQpLHo9TCg3''@;'; put 'put ''Njc1KSxqPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gVihVLHEpeyFKLmlzVW5kZWZpbmVkKFUpJiZKLmlzVW5kZWZpbmVkKFVbIkNvbnRlbnQtVHlwZSJdKSYmKFVbIkNvbnRlbnQtVHlwZSJdPXEpfXZhciBHLFc9e3RyYW5z''@;'; put 'put ''aXRpb25hbDpFLGFkYXB0ZXI6KCh0eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUifHx2b2lkIDAhPT1LJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSykpJiYoRz1MKDU0NDgpKSxHKSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihVLHEpe2lm''@;'; put 'put ''KEkocSwiQWNjZXB0IiksSShxLCJDb250ZW50LVR5cGUiKSxKLmlzRm9ybURhdGEoVSl8fEouaXNBcnJheUJ1ZmZlcihVKXx8Si5pc0J1ZmZlcihVKXx8Si5pc1N0cmVhbShVKXx8Si5pc0ZpbGUoVSl8fEouaXNCbG9iKFUpKXJldHVybiBVO2lmKEouaXNBcnJheUJ1ZmZlclZpZXcoVSkpcmV0''@;'; put 'put ''dXJuIFUuYnVmZmVyO2lmKEouaXNVUkxTZWFyY2hQYXJhbXMoVSkpcmV0dXJuIFYocSwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxVLnRvU3RyaW5nKCk7dmFyIHRlLG5lPUouaXNPYmplY3QoVSksaWU9cSYmcVsiQ29udGVudC1UeXBlIl07aWYo''@;'; put 'put ''KHRlPUouaXNGaWxlTGlzdChVKSl8fG5lJiYibXVsdGlwYXJ0L2Zvcm0tZGF0YSI9PT1pZSl7dmFyIGxlPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4geih0ZT97ImZpbGVzW10iOlV9OlUsbGUmJm5ldyBsZSl9cmV0dXJuIG5lfHwiYXBwbGljYXRpb24vanNvbiI9PT1pZT8o''@;'; put 'put ''VihxLCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZGUsdWUsY2Upe2lmKEouaXNTdHJpbmcoZGUpKXRyeXtyZXR1cm4oMCxKU09OLnBhcnNlKShkZSksSi50cmltKGRlKX1jYXRjaChZKXtpZigiU3ludGF4RXJyb3IiIT09WS5uYW1lKXRocm93IFl9cmV0dXJuKDAsSlNPTi5zdHJpbmdp''@;'; put 'put ''ZnkpKGRlKX0oVSkpOlV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oVSl7dmFyIHE9dGhpcy50cmFuc2l0aW9uYWx8fFcudHJhbnNpdGlvbmFsLGllPSEocSYmcS5zaWxlbnRKU09OUGFyc2luZykmJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKGllfHxxJiZxLmZvcmNlZEpT''@;'; put 'put ''T05QYXJzaW5nJiZKLmlzU3RyaW5nKFUpJiZVLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoVSl9Y2F0Y2gobGUpe2lmKGllKXRocm93IlN5bnRheEVycm9yIj09PWxlLm5hbWU/Ui5mcm9tKGxlLFIuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6bGV9cmV0''@;'; put 'put ''dXJuIFV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOkwoMTYyMyl9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKFUpe3Jl''@;'; put 'put ''dHVybiBVPj0yMDAmJlU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtKLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sZnVuY3Rpb24oVSl7Vy5oZWFkZXJzW1VdPXt9fSksSi5mb3JFYWNoKFsicG9zdCIs''@;'; put 'put ''InB1dCIsInBhdGNoIl0sZnVuY3Rpb24oVSl7Vy5oZWFkZXJzW1VdPUoubWVyZ2Uoail9KSxILmV4cG9ydHM9V30sNzg3NDpIPT57InVzZSBzdHJpY3QiO0guZXhwb3J0cz17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX19''@;'; put 'put ''LDcyODg6SD0+e0guZXhwb3J0cz17dmVyc2lvbjoiMC4yNy4yIn19LDE4NDk6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ZnVuY3Rpb24oQixMKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIEs9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLEo9MDtKPEsubGVuZ3RoO0orKylLW0pd''@;'; put 'put ''PWFyZ3VtZW50c1tKXTtyZXR1cm4gQi5hcHBseShMLEspfX19LDUzMjc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpO2Z1bmN0aW9uIEooSSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChJKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJl''@;'; put 'put ''cGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9SC5leHBvcnRzPWZ1bmN0aW9uKEksUixFKXtpZighUilyZXR1cm4gSTt2YXIgejtpZihFKXo9RShSKTtlbHNlIGlmKEsuaXNVUkxTZWFyY2hQYXJh''@;'; put 'put ''bXMoUikpej1SLnRvU3RyaW5nKCk7ZWxzZXt2YXIgaj1bXTtLLmZvckVhY2goUixmdW5jdGlvbihHLFcpe251bGwhPUcmJihLLmlzQXJyYXkoRyk/Vys9IltdIjpHPVtHXSxLLmZvckVhY2goRyxmdW5jdGlvbihVKXtLLmlzRGF0ZShVKT9VPVUudG9JU09TdHJpbmcoKTpLLmlzT2JqZWN0KFUp''@;'; put 'put ''JiYoVT1KU09OLnN0cmluZ2lmeShVKSksai5wdXNoKEooVykrIj0iK0ooVSkpfSkpfSksej1qLmpvaW4oIiYiKX1pZih6KXt2YXIgVj1JLmluZGV4T2YoIiMiKTstMSE9PVYmJihJPUkuc2xpY2UoMCxWKSksSSs9KC0xPT09SS5pbmRleE9mKCI/Iik/Ij8iOiImIikren1yZXR1cm4gSX19LDcz''@;'; put 'put ''MDM6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ZnVuY3Rpb24oQixMKXtyZXR1cm4gTD9CLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrTC5yZXBsYWNlKC9eXC8rLywiIik6Qn19LDQzNzI6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpO0guZXhwb3J0cz1LLmlzU3RhbmRh''@;'; put 'put ''cmRCcm93c2VyRW52KCk/e3dyaXRlOmZ1bmN0aW9uKEosSSxSLEUseixqKXt2YXIgVj1bXTtWLnB1c2goSisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEkpKSxLLmlzTnVtYmVyKFIpJiZWLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShSKS50b0dNVFN0cmluZygpKSxLLmlzU3RyaW5nKEUpJiZW''@;'; put 'put ''LnB1c2goInBhdGg9IitFKSxLLmlzU3RyaW5nKHopJiZWLnB1c2goImRvbWFpbj0iK3opLCEwPT09aiYmVi5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9Vi5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKEope3ZhciBJPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIo''@;'; put 'put ''Xnw7XFxzKikoIitKKyIpPShbXjtdKikiKSk7cmV0dXJuIEk/ZGVjb2RlVVJJQ29tcG9uZW50KElbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihKKXt0aGlzLndyaXRlKEosIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX19LDE3OTM6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ZnVuY3Rpb24oQil7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChCKX19LDYyNjg6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpO0guZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihKKXtyZXR1cm4gSy5pc09iamVjdChKKSYmITA9PT1KLmlzQXhpb3NFcnJvcn19LDc5ODU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpO0guZXhwb3J0cz1LLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgSixJPS8obXNpZXx0''@;'; put 'put ''cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksUj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gRSh6KXt2YXIgaj16O3JldHVybiBJJiYoUi5zZXRBdHRyaWJ1dGUoImhyZWYiLGopLGo9Ui5ocmVmKSxSLnNldEF0dHJpYnV0ZSgiaHJlZiIsaikse2hyZWY6''@;'; put 'put ''Ui5ocmVmLHByb3RvY29sOlIucHJvdG9jb2w/Ui5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6Ui5ob3N0LHNlYXJjaDpSLnNlYXJjaD9SLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOlIuaGFzaD9SLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpS''@;'; put 'put ''Lmhvc3RuYW1lLHBvcnQ6Ui5wb3J0LHBhdGhuYW1lOiIvIj09PVIucGF0aG5hbWUuY2hhckF0KDApP1IucGF0aG5hbWU6Ii8iK1IucGF0aG5hbWV9fXJldHVybiBKPUUod2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHope3ZhciBqPUsuaXNTdHJpbmcoeik/RSh6KTp6O3JldHVybiBq''@;'; put 'put ''LnByb3RvY29sPT09Si5wcm90b2NvbCYmai5ob3N0PT09Si5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfX0sNjAxNjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDg2Nyk7SC5leHBvcnRzPWZ1bmN0aW9uKEosSSl7Sy5mb3JFYWNoKEosZnVuY3Rpb24oUixFKXtFIT09SSYm''@;'; put 'put ''RS50b1VwcGVyQ2FzZSgpPT09SS50b1VwcGVyQ2FzZSgpJiYoSltJXT1SLGRlbGV0ZSBKW0VdKX0pfX0sMTYyMzpIPT57SC5leHBvcnRzPW51bGx9LDQxMDk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQ4NjcpLEo9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5n''@;'; put 'put ''dGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIi''@;'; put 'put ''LCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXTtILmV4cG9ydHM9ZnVuY3Rpb24oSSl7dmFyIFIsRSx6LGo9e307cmV0dXJuIEkmJksuZm9yRWFjaChJLnNwbGl0KCJcbiIpLGZ1bmN0aW9uKFYpe2lmKHo9Vi5pbmRleE9mKCI6IiksUj1LLnRyaW0oVi5zdWJzdHIoMCx6KSkudG9Mb3dlckNh''@;'; put 'put ''c2UoKSxFPUsudHJpbShWLnN1YnN0cih6KzEpKSxSKXtpZihqW1JdJiZKLmluZGV4T2YoUik+PTApcmV0dXJuO2pbUl09InNldC1jb29raWUiPT09Uj8oaltSXT9qW1JdOltdKS5jb25jYXQoW0VdKTpqW1JdP2pbUl0rIiwgIitFOkV9fSksan19LDIwNTpIPT57InVzZSBzdHJpY3QiO0guZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihCKXt2YXIgTD0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhCKTtyZXR1cm4gTCYmTFsxXXx8IiJ9fSw4NzEzOkg9PnsidXNlIHN0cmljdCI7SC5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBmdW5jdGlvbihMKXtyZXR1cm4gQi5hcHBseShudWxsLEwp''@;'; put 'put ''fX19LDc2NzU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDg3NjQpLkJ1ZmZlcixKPUwoNDg2Nyk7SC5leHBvcnRzPWZ1bmN0aW9uKEksUil7Uj1SfHxuZXcgRm9ybURhdGE7dmFyIEU9W107ZnVuY3Rpb24geihqKXtyZXR1cm4gbnVsbD09PWo/IiI6Si5pc0RhdGUoaik/ai50b0lT''@;'; put 'put ''T1N0cmluZygpOkouaXNBcnJheUJ1ZmZlcihqKXx8Si5pc1R5cGVkQXJyYXkoaik/ImZ1bmN0aW9uIj09dHlwZW9mIEJsb2I/bmV3IEJsb2IoW2pdKTpLLmZyb20oaik6an1yZXR1cm4gZnVuY3Rpb24gaihWLEcpe2lmKEouaXNQbGFpbk9iamVjdChWKXx8Si5pc0FycmF5KFYpKXtpZigtMSE9''@;'; put 'put ''PUUuaW5kZXhPZihWKSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrRyk7RS5wdXNoKFYpLEouZm9yRWFjaChWLGZ1bmN0aW9uKFcsVSl7aWYoIUouaXNVbmRlZmluZWQoVykpe3ZhciBxLHRlPUc/RysiLiIrVTpVO2lmKFcmJiFHJiYib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mIFcpaWYoSi5lbmRzV2l0aChVLCJ7fSIpKVc9SlNPTi5zdHJpbmdpZnkoVyk7ZWxzZSBpZihKLmVuZHNXaXRoKFUsIltdIikmJihxPUoudG9BcnJheShXKSkpcmV0dXJuIHZvaWQgcS5mb3JFYWNoKGZ1bmN0aW9uKG5lKXshSi5pc1VuZGVmaW5lZChuZSkmJlIuYXBwZW5kKHRlLHoobmUp''@;'; put 'put ''KX0pO2ooVyx0ZSl9fSksRS5wb3AoKX1lbHNlIFIuYXBwZW5kKEcseihWKSl9KEkpLFJ9fSw0ODc1OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg1MTA4KSxKPUwoNzI4OCkudmVyc2lvbixJPUwoMjY0OCksUj17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlv''@;'; put 'put ''biIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goZnVuY3Rpb24oeixqKXtSW3pdPWZ1bmN0aW9uKFYpe3JldHVybiB0eXBlb2YgVj09PXp8fCJhIisoajwxPyJuICI6IiAiKSt6fX0pO3ZhciBFPXt9O1IudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKHosaixWKXtmdW5jdGlvbiBHKFcsVSl7cmV0''@;'; put 'put ''dXJuIltBeGlvcyB2IitKKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrVysiJyIrVSsoVj8iLiAiK1Y6IiIpfXJldHVybiBmdW5jdGlvbihXLFUscSl7aWYoITE9PT16KXRocm93IG5ldyBJKEcoVSwiIGhhcyBiZWVuIHJlbW92ZWQiKyhqPyIgaW4gIitqOiIiKSksSS5FUlJfREVQUkVDQVRF''@;'; put 'put ''RCk7cmV0dXJuIGomJiFFW1VdJiYoRVtVXT0hMCxLLndhcm4oRyhVLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2IitqKyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCF6fHx6KFcsVSxxKX19LEguZXhwb3J0cz17YXNzZXJ0T3B0aW9uczpmdW5jdGlv''@;'; put 'put ''bih6LGosVil7aWYoIm9iamVjdCIhPXR5cGVvZiB6KXRocm93IG5ldyBJKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixJLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtmb3IodmFyIEc9T2JqZWN0LmtleXMoeiksVz1HLmxlbmd0aDtXLS0gPjA7KXt2YXIgVT1HW1ddLHE9altVXTtpZihxKXt2''@;'; put 'put ''YXIgdGU9eltVXSxuZT12b2lkIDA9PT10ZXx8cSh0ZSxVLHopO2lmKCEwIT09bmUpdGhyb3cgbmV3IEkoIm9wdGlvbiAiK1UrIiBtdXN0IGJlICIrbmUsSS5FUlJfQkFEX09QVElPTl9WQUxVRSl9ZWxzZSBpZighMCE9PVYpdGhyb3cgbmV3IEkoIlVua25vd24gb3B0aW9uICIrVSxJLkVSUl9C''@;'; put 'put ''QURfT1BUSU9OKX19LHZhbGlkYXRvcnM6Un19LDQ4Njc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPUwoMTg0OSksST1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFI9KEs9T2JqZWN0LmNyZWF0ZShudWxsKSxmdW5jdGlvbihZKXt2YXIgYj1JLmNhbGwoWSk7cmV0dXJuIEtbYl18''@;'; put 'put ''fChLW2JdPWIuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KTtmdW5jdGlvbiBFKFkpe3JldHVybiBZPVkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXtyZXR1cm4gUihiKT09PVl9fWZ1bmN0aW9uIHooWSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoWSl9ZnVuY3Rpb24gaihZKXtyZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09WX12YXIgVj1FKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIEcoWSl7cmV0dXJuIG51bGwhPT1ZJiYib2JqZWN0Ij09dHlwZW9mIFl9ZnVuY3Rpb24gVyhZKXtpZigib2JqZWN0IiE9PVIoWSkpcmV0dXJuITE7dmFyIGI9T2JqZWN0LmdldFByb3RvdHlwZU9mKFkpO3JldHVybiBu''@;'; put 'put ''dWxsPT09Ynx8Yj09PU9iamVjdC5wcm90b3R5cGV9dmFyIFU9RSgiRGF0ZSIpLHE9RSgiRmlsZSIpLHRlPUUoIkJsb2IiKSxuZT1FKCJGaWxlTGlzdCIpO2Z1bmN0aW9uIGllKFkpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1JLmNhbGwoWSl9dmFyIGxlPUUoIlVSTFNlYXJjaFBhcmFt''@;'; put 'put ''cyIpO2Z1bmN0aW9uIGRlKFksYil7aWYobnVsbCE9WSlpZigib2JqZWN0IiE9dHlwZW9mIFkmJihZPVtZXSkseihZKSlmb3IodmFyIHg9MCxOPVkubGVuZ3RoO3g8Tjt4KyspYi5jYWxsKG51bGwsWVt4XSx4LFkpO2Vsc2UgZm9yKHZhciBGIGluIFkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eS5jYWxsKFksRikmJmIuY2FsbChudWxsLFlbRl0sRixZKX12YXIgdWUsY2U9KHVlPXR5cGVvZiBVaW50OEFycmF5PCJ1IiYmT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpLGZ1bmN0aW9uKFkpe3JldHVybiB1ZSYmWSBpbnN0YW5jZW9mIHVlfSk7SC5leHBvcnRzPXtp''@;'; put 'put ''c0FycmF5OnosaXNBcnJheUJ1ZmZlcjpWLGlzQnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBudWxsIT09WSYmIWooWSkmJm51bGwhPT1ZLmNvbnN0cnVjdG9yJiYhaihZLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIFkuY29uc3RydWN0b3IuaXNCdWZmZXImJlkuY29uc3RydWN0''@;'; put 'put ''b3IuaXNCdWZmZXIoWSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oWSl7dmFyIGI9IltvYmplY3QgRm9ybURhdGFdIjtyZXR1cm4gWSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBGb3JtRGF0YSYmWSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxJLmNhbGwoWSk9PT1ifHxpZShZLnRvU3RyaW5nKSYmWS50b1N0''@;'; put 'put ''cmluZygpPT09Yil9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKFkpe3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KFkpOlkmJlkuYnVmZmVyJiZWKFkuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oWSl7cmV0''@;'; put 'put ''dXJuInN0cmluZyI9PXR5cGVvZiBZfSxpc051bWJlcjpmdW5jdGlvbihZKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFl9LGlzT2JqZWN0OkcsaXNQbGFpbk9iamVjdDpXLGlzVW5kZWZpbmVkOmosaXNEYXRlOlUsaXNGaWxlOnEsaXNCbG9iOnRlLGlzRnVuY3Rpb246aWUsaXNTdHJlYW06ZnVu''@;'; put 'put ''Y3Rpb24oWSl7cmV0dXJuIEcoWSkmJmllKFkucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmxlLGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKHR5cGVvZiBuYXZpZ2F0b3I+InUifHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQi''@;'; put 'put ''IT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJnR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUifSxmb3JFYWNoOmRlLG1lcmdlOmZ1bmN0aW9uIFkoKXt2YXIgYj17fTtmdW5jdGlvbiB4KGcsQyl7YltDXT1XKGJbQ10pJiZXKGcpP1ko''@;'; put 'put ''YltDXSxnKTpXKGcpP1koe30sZyk6eihnKT9nLnNsaWNlKCk6Z31mb3IodmFyIE49MCxGPWFyZ3VtZW50cy5sZW5ndGg7TjxGO04rKylkZShhcmd1bWVudHNbTl0seCk7cmV0dXJuIGJ9LGV4dGVuZDpmdW5jdGlvbihZLGIseCl7cmV0dXJuIGRlKGIsZnVuY3Rpb24oTixGKXtZW0ZdPXgmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBOP0ooTix4KTpOfSksWX0sdHJpbTpmdW5jdGlvbihZKXtyZXR1cm4gWS50cmltP1kudHJpbSgpOlkucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihZKXtyZXR1cm4gNjUyNzk9PT1ZLmNoYXJDb2RlQXQoMCkmJihZPVkuc2xpY2Uo''@;'; put 'put ''MSkpLFl9LGluaGVyaXRzOmZ1bmN0aW9uKFksYix4LE4pe1kucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYi5wcm90b3R5cGUsTiksWS5wcm90b3R5cGUuY29uc3RydWN0b3I9WSx4JiZPYmplY3QuYXNzaWduKFkucHJvdG90eXBlLHgpfSx0b0ZsYXRPYmplY3Q6ZnVuY3Rpb24oWSxiLHgpe3Zh''@;'; put 'put ''ciBOLEYsZyxDPXt9O2I9Ynx8e307ZG97Zm9yKEY9KE49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoWSkpLmxlbmd0aDtGLS0gPjA7KUNbZz1OW0ZdXXx8KGJbZ109WVtnXSxDW2ddPSEwKTtZPU9iamVjdC5nZXRQcm90b3R5cGVPZihZKX13aGlsZShZJiYoIXh8fHgoWSxiKSkmJlkhPT1P''@;'; put 'put ''YmplY3QucHJvdG90eXBlKTtyZXR1cm4gYn0sa2luZE9mOlIsa2luZE9mVGVzdDpFLGVuZHNXaXRoOmZ1bmN0aW9uKFksYix4KXtZPVN0cmluZyhZKSwodm9pZCAwPT09eHx8eD5ZLmxlbmd0aCkmJih4PVkubGVuZ3RoKTt2YXIgTj1ZLmluZGV4T2YoYix4LT1iLmxlbmd0aCk7cmV0dXJuLTEh''@;'; put 'put ''PT1OJiZOPT09eH0sdG9BcnJheTpmdW5jdGlvbihZKXtpZighWSlyZXR1cm4gbnVsbDt2YXIgYj1ZLmxlbmd0aDtpZihqKGIpKXJldHVybiBudWxsO2Zvcih2YXIgeD1uZXcgQXJyYXkoYik7Yi0tID4wOyl4W2JdPVlbYl07cmV0dXJuIHh9LGlzVHlwZWRBcnJheTpjZSxpc0ZpbGVMaXN0Om5l''@;'; put 'put ''fX0sNTYyMzpIPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoSixJLFIpe0ogaW5zdGFuY2VvZiBSZWdFeHAmJihKPUwoSixSKSksSSBpbnN0YW5jZW9mIFJlZ0V4cCYmKEk9TChJLFIpKTt2YXIgRT1LKEosSSxSKTtyZXR1cm4gRSYme3N0YXJ0OkVbMF0sZW5kOkVbMV0scHJlOlIuc2xpY2Uo''@;'; put 'put ''MCxFWzBdKSxib2R5OlIuc2xpY2UoRVswXStKLmxlbmd0aCxFWzFdKSxwb3N0OlIuc2xpY2UoRVsxXStJLmxlbmd0aCl9fWZ1bmN0aW9uIEwoSixJKXt2YXIgUj1JLm1hdGNoKEopO3JldHVybiBSP1JbMF06bnVsbH1mdW5jdGlvbiBLKEosSSxSKXt2YXIgRSx6LGosVixHLFc9Ui5pbmRleE9m''@;'; put 'put ''KEopLFU9Ui5pbmRleE9mKEksVysxKSxxPVc7aWYoVz49MCYmVT4wKXtpZihKPT09SSlyZXR1cm5bVyxVXTtmb3IoRT1bXSxqPVIubGVuZ3RoO3E+PTAmJiFHOylxPT1XPyhFLnB1c2gocSksVz1SLmluZGV4T2YoSixxKzEpKToxPT1FLmxlbmd0aD9HPVtFLnBvcCgpLFVdOigoej1FLnBvcCgp''@;'; put 'put ''KTxqJiYoaj16LFY9VSksVT1SLmluZGV4T2YoSSxxKzEpKSxxPVc8VSYmVz49MD9XOlU7RS5sZW5ndGgmJihHPVtqLFZdKX1yZXR1cm4gR31ILmV4cG9ydHM9QixCLnJhbmdlPUt9LDk3NDI6KEgsQik9PnsidXNlIHN0cmljdCI7Qi5ieXRlTGVuZ3RoPWZ1bmN0aW9uKFYpe3ZhciBHPXooViks''@;'; put 'put ''VT1HWzFdO3JldHVybiAzKihHWzBdK1UpLzQtVX0sQi50b0J5dGVBcnJheT1mdW5jdGlvbihWKXt2YXIgRyxXLGNlLFU9eihWKSxxPVVbMF0sdGU9VVsxXSxuZT1uZXcgSigzKihxKyhjZT10ZSkpLzQtY2UpLGllPTAsbGU9dGU+MD9xLTQ6cTtmb3IoVz0wO1c8bGU7Vys9NClHPUtbVi5jaGFy''@;'; put 'put ''Q29kZUF0KFcpXTw8MTh8S1tWLmNoYXJDb2RlQXQoVysxKV08PDEyfEtbVi5jaGFyQ29kZUF0KFcrMildPDw2fEtbVi5jaGFyQ29kZUF0KFcrMyldLG5lW2llKytdPUc+PjE2JjI1NSxuZVtpZSsrXT1HPj44JjI1NSxuZVtpZSsrXT0yNTUmRztyZXR1cm4gMj09PXRlJiYoRz1LW1YuY2hhckNv''@;'; put 'put ''ZGVBdChXKV08PDJ8S1tWLmNoYXJDb2RlQXQoVysxKV0+PjQsbmVbaWUrK109MjU1JkcpLDE9PT10ZSYmKEc9S1tWLmNoYXJDb2RlQXQoVyldPDwxMHxLW1YuY2hhckNvZGVBdChXKzEpXTw8NHxLW1YuY2hhckNvZGVBdChXKzIpXT4+MixuZVtpZSsrXT1HPj44JjI1NSxuZVtpZSsrXT0yNTUm''@;'; put 'put ''RyksbmV9LEIuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbihWKXtmb3IodmFyIEcsVz1WLmxlbmd0aCxVPVclMyxxPVtdLG5lPTAsaWU9Vy1VO25lPGllO25lKz0xNjM4MylxLnB1c2goaihWLG5lLG5lKzE2MzgzPmllP2llOm5lKzE2MzgzKSk7cmV0dXJuIDE9PT1VP3EucHVzaChMWyhHPVZbVy0x''@;'; put 'put ''XSk+PjJdK0xbRzw8NCY2M10rIj09Iik6Mj09PVUmJnEucHVzaChMWyhHPShWW1ctMl08PDgpK1ZbVy0xXSk+PjEwXStMW0c+PjQmNjNdK0xbRzw8MiY2M10rIj0iKSxxLmpvaW4oIiIpfTtmb3IodmFyIEw9W10sSz1bXSxKPXR5cGVvZiBVaW50OEFycmF5PCJ1Ij9VaW50OEFycmF5OkFycmF5''@;'; put 'put ''LEk9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLFI9MDtSPDY0OysrUilMW1JdPUlbUl0sS1tJLmNoYXJDb2RlQXQoUildPVI7ZnVuY3Rpb24geihWKXt2YXIgRz1WLmxlbmd0aDtpZihHJTQ+MCl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgVz1WLmluZGV4T2YoIj0iKTtyZXR1cm4tMT09PVcmJihXPUcpLFtXLFc9PT1HPzA6NC1XJTRdfWZ1bmN0aW9uIGooVixHLFcpe2Zvcih2YXIgcSx0ZT1bXSxuZT1HO25lPFc7bmUrPTMpdGUu''@;'; put 'put ''cHVzaChMWyhxPShWW25lXTw8MTYmMTY3MTE2ODApKyhWW25lKzFdPDw4JjY1MjgwKSsoMjU1JlZbbmUrMl0pKT4+MTgmNjNdK0xbcT4+MTImNjNdK0xbcT4+NiY2M10rTFs2MyZxXSk7cmV0dXJuIHRlLmpvaW4oIiIpfUtbIi0iLmNoYXJDb2RlQXQoMCldPTYyLEtbIl8iLmNoYXJDb2RlQXQo''@;'; put 'put ''MCldPTYzfSwzNTUwOmZ1bmN0aW9uKEgsQixMKXshZnVuY3Rpb24oSyxKKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSSh5LHApe2lmKCF5KXRocm93IG5ldyBFcnJvcihwfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFIoeSxwKXt5LnN1cGVyXz1wO3ZhciBTPWZ1bmN0aW9uKCl7fTtT''@;'; put 'put ''LnByb3RvdHlwZT1wLnByb3RvdHlwZSx5LnByb3RvdHlwZT1uZXcgUyx5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj15fWZ1bmN0aW9uIEUoeSxwLFMpe2lmKEUuaXNCTih5KSlyZXR1cm4geTt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVs''@;'; put 'put ''bCxudWxsIT09eSYmKCJsZSIhPT1wJiYiYmUiIT09cHx8KFM9cCxwPTEwKSx0aGlzLl9pbml0KHl8fDAscHx8MTAsU3x8ImJlIikpfXZhciB6OyJvYmplY3QiPT10eXBlb2YgSz9LLmV4cG9ydHM9RTpKLkJOPUUsRS5CTj1FLEUud29yZFNpemU9MjY7dHJ5e3o9dHlwZW9mIHdpbmRvdzwidSIm''@;'; put 'put ''JnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDY2MDEpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gaih5LHApe3ZhciBTPXkuY2hhckNvZGVBdChwKTtyZXR1cm4gUz49NDgmJlM8PTU3P1MtNDg6Uz49NjUmJlM8PTcwP1MtNTU6Uz49OTcmJlM8PTEwMj9TLTg3OnZvaWQg''@;'; put 'put ''SSghMSwiSW52YWxpZCBjaGFyYWN0ZXIgaW4gIit5KX1mdW5jdGlvbiBWKHkscCxTKXt2YXIgUT1qKHksUyk7cmV0dXJuIFMtMT49cCYmKFF8PWooeSxTLTEpPDw0KSxRfWZ1bmN0aW9uIEcoeSxwLFMsUSl7Zm9yKHZhciByZT0wLGZlPTAsbWU9TWF0aC5taW4oeS5sZW5ndGgsUyksa2U9cDtr''@;'; put 'put ''ZTxtZTtrZSsrKXt2YXIgVGU9eS5jaGFyQ29kZUF0KGtlKS00ODtyZSo9USxmZT1UZT49NDk/VGUtNDkrMTA6VGU+PTE3P1RlLTE3KzEwOlRlLEkoVGU+PTAmJmZlPFEsIkludmFsaWQgY2hhcmFjdGVyIikscmUrPWZlfXJldHVybiByZX1mdW5jdGlvbiBXKHkscCl7eS53b3Jkcz1wLndvcmRz''@;'; put 'put ''LHkubGVuZ3RoPXAubGVuZ3RoLHkubmVnYXRpdmU9cC5uZWdhdGl2ZSx5LnJlZD1wLnJlZH1pZihFLmlzQk49ZnVuY3Rpb24oeSl7cmV0dXJuIHkgaW5zdGFuY2VvZiBFfHxudWxsIT09eSYmIm9iamVjdCI9PXR5cGVvZiB5JiZ5LmNvbnN0cnVjdG9yLndvcmRTaXplPT09RS53b3JkU2l6ZSYm''@;'; put 'put ''QXJyYXkuaXNBcnJheSh5LndvcmRzKX0sRS5tYXg9ZnVuY3Rpb24oeSxwKXtyZXR1cm4geS5jbXAocCk+MD95OnB9LEUubWluPWZ1bmN0aW9uKHkscCl7cmV0dXJuIHkuY21wKHApPDA/eTpwfSxFLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih5LHAsUyl7aWYoIm51bWJlciI9PXR5cGVvZiB5''@;'; put 'put ''KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKHkscCxTKTtpZigib2JqZWN0Ij09dHlwZW9mIHkpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh5LHAsUyk7ImhleCI9PT1wJiYocD0xNiksSShwPT09KDB8cCkmJnA+PTImJnA8PTM2KTt2YXIgUT0wOyItIj09PSh5PXkudG9TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KC9ccysvZywiIikpWzBdJiYoUSsrLHRoaXMubmVnYXRpdmU9MSksUTx5Lmxlbmd0aCYmKDE2PT09cD90aGlzLl9wYXJzZUhleCh5LFEsUyk6KHRoaXMuX3BhcnNlQmFzZSh5LHAsUSksImxlIj09PVMmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxwLFMpKSl9LEUucHJvdG90eXBl''@;'; put 'put ''Ll9pbml0TnVtYmVyPWZ1bmN0aW9uKHkscCxTKXt5PDAmJih0aGlzLm5lZ2F0aXZlPTEseT0teSkseTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmeV0sdGhpcy5sZW5ndGg9MSk6eTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ5LHkvNjcxMDg4NjQmNjcx''@;'; put 'put ''MDg4NjNdLHRoaXMubGVuZ3RoPTIpOihJKHk8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmeSx5LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1TJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkscCxTKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''X2luaXRBcnJheT1mdW5jdGlvbih5LHAsUyl7aWYoSSgibnVtYmVyIj09dHlwZW9mIHkubGVuZ3RoKSx5Lmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbCh5Lmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJh''@;'; put 'put ''eSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBRPTA7UTx0aGlzLmxlbmd0aDtRKyspdGhpcy53b3Jkc1tRXT0wO3ZhciByZSxmZSxtZT0wO2lmKCJiZSI9PT1TKWZvcihRPXkubGVuZ3RoLTEscmU9MDtRPj0wO1EtPTMpdGhpcy53b3Jkc1tyZV18PShmZT15W1FdfHlbUS0xXTw8OHx5W1EtMl08PDE2''@;'; put 'put ''KTw8bWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tyZSsxXT1mZT4+PjI2LW1lJjY3MTA4ODYzLChtZSs9MjQpPj0yNiYmKG1lLT0yNixyZSsrKTtlbHNlIGlmKCJsZSI9PT1TKWZvcihRPTAscmU9MDtRPHkubGVuZ3RoO1ErPTMpdGhpcy53b3Jkc1tyZV18PShmZT15W1FdfHlbUSsxXTw8OHx5W1Er''@;'; put 'put ''Ml08PDE2KTw8bWUmNjcxMDg4NjMsdGhpcy53b3Jkc1tyZSsxXT1mZT4+PjI2LW1lJjY3MTA4ODYzLChtZSs9MjQpPj0yNiYmKG1lLT0yNixyZSsrKTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHkscCxTKXt0aGlzLmxlbmd0aD1NYXRoLmNl''@;'; put 'put ''aWwoKHkubGVuZ3RoLXApLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIFE9MDtRPHRoaXMubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPTA7dmFyIHJlLGZlPTAsbWU9MDtpZigiYmUiPT09Uylmb3IoUT15Lmxlbmd0aC0xO1E+PXA7US09MilyZT1WKHkscCxR''@;'; put 'put ''KTw8ZmUsdGhpcy53b3Jkc1ttZV18PTY3MTA4ODYzJnJlLGZlPj0xOD8oZmUtPTE4LHRoaXMud29yZHNbbWUrPTFdfD1yZT4+PjI2KTpmZSs9ODtlbHNlIGZvcihRPSh5Lmxlbmd0aC1wKSUyPT0wP3ArMTpwO1E8eS5sZW5ndGg7USs9MilyZT1WKHkscCxRKTw8ZmUsdGhpcy53b3Jkc1ttZV18''@;'; put 'put ''PTY3MTA4ODYzJnJlLGZlPj0xOD8oZmUtPTE4LHRoaXMud29yZHNbbWUrPTFdfD1yZT4+PjI2KTpmZSs9ODt0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHkscCxTKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgUT0wLHJlPTE7cmU8''@;'; put 'put ''PTY3MTA4ODYzO3JlKj1wKVErKztRLS0scmU9cmUvcHwwO2Zvcih2YXIgZmU9eS5sZW5ndGgtUyxtZT1mZSVRLGtlPU1hdGgubWluKGZlLGZlLW1lKStTLFRlPTAsUGU9UztQZTxrZTtQZSs9USlUZT1HKHksUGUsUGUrUSxwKSx0aGlzLmltdWxuKHJlKSx0aGlzLndvcmRzWzBdK1RlPDY3MTA4''@;'; put 'put ''ODY0P3RoaXMud29yZHNbMF0rPVRlOnRoaXMuX2lhZGRuKFRlKTtpZigwIT09bWUpe3ZhciBGZT0xO2ZvcihUZT1HKHksUGUseS5sZW5ndGgscCksUGU9MDtQZTxtZTtQZSsrKUZlKj1wO3RoaXMuaW11bG4oRmUpLHRoaXMud29yZHNbMF0rVGU8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9VGU6''@;'; put 'put ''dGhpcy5faWFkZG4oVGUpfXRoaXMuX3N0cmlwKCl9LEUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oeSl7eS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8dGhpcy5sZW5ndGg7cCsrKXkud29yZHNbcF09dGhpcy53b3Jkc1twXTt5Lmxlbmd0aD10aGlzLmxlbmd0''@;'; put 'put ''aCx5Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUseS5yZWQ9dGhpcy5yZWR9LEUucHJvdG90eXBlLl9tb3ZlPWZ1bmN0aW9uKHkpe1coeSx0aGlzKX0sRS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgeT1uZXcgRShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHkpLHl9LEUucHJvdG90eXBl''@;'; put 'put ''Ll9leHBhbmQ9ZnVuY3Rpb24oeSl7Zm9yKDt0aGlzLmxlbmd0aDx5Oyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLl9zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRo''@;'; put 'put ''aXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSx0eXBlb2YgU3ltYm9sPCJ1IiYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFN5bWJvbC5mb3IpdHJ5e0UucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPVV9Y2F0Y2h7RS5wcm90b3R5cGUuaW5zcGVjdD1VfWVsc2UgRS5wcm90b3R5cGUuaW5zcGVjdD1VO2Z1bmN0aW9uIFUoKXtyZXR1cm4odGhpcy5yZWQ/''@;'; put 'put ''IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In12YXIgcT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx0ZT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYs''@;'; put 'put ''Niw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxuZT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkw''@;'; put 'put ''NjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUy''@;'; put 'put ''NTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBpZSh5LHAsUyl7Uy5uZWdhdGl2ZT1wLm5lZ2F0aXZlXnkubmVnYXRpdmU7dmFyIFE9eS5sZW5ndGgrcC5sZW5ndGh8MDtTLmxlbmd0aD1RLFE9US0xfDA7dmFyIHJlPTB8eS53b3Jkc1swXSxmZT0wfHAud29yZHNbMF0sbWU9cmUqZmUsVGU9bWUv''@;'; put 'put ''NjcxMDg4NjR8MDtTLndvcmRzWzBdPTY3MTA4ODYzJm1lO2Zvcih2YXIgUGU9MTtQZTxRO1BlKyspe2Zvcih2YXIgRmU9VGU+Pj4yNixOZT02NzEwODg2MyZUZSxMZT1NYXRoLm1pbihQZSxwLmxlbmd0aC0xKSxCZT1NYXRoLm1heCgwLFBlLXkubGVuZ3RoKzEpO0JlPD1MZTtCZSsrKUZlKz0o''@;'; put 'put ''bWU9KHJlPTB8eS53b3Jkc1tQZS1CZXwwXSkqKGZlPTB8cC53b3Jkc1tCZV0pK05lKS82NzEwODg2NHwwLE5lPTY3MTA4ODYzJm1lO1Mud29yZHNbUGVdPTB8TmUsVGU9MHxGZX1yZXR1cm4gMCE9PVRlP1Mud29yZHNbUGVdPTB8VGU6Uy5sZW5ndGgtLSxTLl9zdHJpcCgpfUUucHJvdG90eXBl''@;'; put 'put ''LnRvU3RyaW5nPWZ1bmN0aW9uKHkscCl7dmFyIFM7aWYocD0wfHB8fDEsMTY9PT0oeT15fHwxMCl8fCJoZXgiPT09eSl7Uz0iIjtmb3IodmFyIFE9MCxyZT0wLGZlPTA7ZmU8dGhpcy5sZW5ndGg7ZmUrKyl7dmFyIG1lPXRoaXMud29yZHNbZmVdLGtlPSgxNjc3NzIxNSYobWU8PFF8cmUpKS50''@;'; put 'put ''b1N0cmluZygxNik7cmU9bWU+Pj4yNC1RJjE2Nzc3MjE1LChRKz0yKT49MjYmJihRLT0yNixmZS0tKSxTPTAhPT1yZXx8ZmUhPT10aGlzLmxlbmd0aC0xP3FbNi1rZS5sZW5ndGhdK2tlK1M6a2UrU31mb3IoMCE9PXJlJiYoUz1yZS50b1N0cmluZygxNikrUyk7Uy5sZW5ndGglcCE9MDspUz0i''@;'; put 'put ''MCIrUztyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihTPSItIitTKSxTfWlmKHk9PT0oMHx5KSYmeT49MiYmeTw9MzYpe3ZhciBUZT10ZVt5XSxQZT1uZVt5XTtTPSIiO3ZhciBGZT10aGlzLmNsb25lKCk7Zm9yKEZlLm5lZ2F0aXZlPTA7IUZlLmlzWmVybygpOyl7dmFyIE5lPUZlLm1vZHJu''@;'; put 'put ''KFBlKS50b1N0cmluZyh5KTtTPShGZT1GZS5pZGl2bihQZSkpLmlzWmVybygpP05lK1M6cVtUZS1OZS5sZW5ndGhdK05lK1N9Zm9yKHRoaXMuaXNaZXJvKCkmJihTPSIwIitTKTtTLmxlbmd0aCVwIT0wOylTPSIwIitTO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKFM9Ii0iK1MpLFN9SSgh''@;'; put 'put ''MSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciB5PXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD95Kz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMu''@;'; put 'put ''d29yZHNbMl0/eSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy15Onl9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfSx6JiYoRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oeSxwKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZSh6LHkscCl9KSxFLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHkscCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2Uo''@;'; put 'put ''QXJyYXkseSxwKX0sRS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oeSxwLFMpe3RoaXMuX3N0cmlwKCk7dmFyIFE9dGhpcy5ieXRlTGVuZ3RoKCkscmU9U3x8TWF0aC5tYXgoMSxRKTtJKFE8PXJlLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksSShyZT4w''@;'; put 'put ''LCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgbWUsa2UsZmU9KGtlPXJlLChtZT15KS5hbGxvY1Vuc2FmZT9tZS5hbGxvY1Vuc2FmZShrZSk6bmV3IG1lKGtlKSk7cmV0dXJuIHRoaXNbIl90b0FycmF5TGlrZSIrKCJsZSI9PT1wPyJMRSI6IkJFIildKGZlLFEpLGZlfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5fdG9BcnJheUxpa2VMRT1mdW5jdGlvbih5LHApe2Zvcih2YXIgUz0wLFE9MCxyZT0wLGZlPTA7cmU8dGhpcy5sZW5ndGg7cmUrKyl7dmFyIG1lPXRoaXMud29yZHNbcmVdPDxmZXxRO3lbUysrXT0yNTUmbWUsUzx5Lmxlbmd0aCYmKHlbUysrXT1tZT4+OCYyNTUpLFM8eS5sZW5n''@;'; put 'put ''dGgmJih5W1MrK109bWU+PjE2JjI1NSksNj09PWZlPyhTPHkubGVuZ3RoJiYoeVtTKytdPW1lPj4yNCYyNTUpLFE9MCxmZT0wKTooUT1tZT4+PjI0LGZlKz0yKX1pZihTPHkubGVuZ3RoKWZvcih5W1MrK109UTtTPHkubGVuZ3RoOyl5W1MrK109MH0sRS5wcm90b3R5cGUuX3RvQXJyYXlMaWtl''@;'; put 'put ''QkU9ZnVuY3Rpb24oeSxwKXtmb3IodmFyIFM9eS5sZW5ndGgtMSxRPTAscmU9MCxmZT0wO3JlPHRoaXMubGVuZ3RoO3JlKyspe3ZhciBtZT10aGlzLndvcmRzW3JlXTw8ZmV8UTt5W1MtLV09MjU1Jm1lLFM+PTAmJih5W1MtLV09bWU+PjgmMjU1KSxTPj0wJiYoeVtTLS1dPW1lPj4xNiYyNTUp''@;'; put 'put ''LDY9PT1mZT8oUz49MCYmKHlbUy0tXT1tZT4+MjQmMjU1KSxRPTAsZmU9MCk6KFE9bWU+Pj4yNCxmZSs9Mil9aWYoUz49MClmb3IoeVtTLS1dPVE7Uz49MDspeVtTLS1dPTB9LEUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbih5KXtyZXR1cm4gMzItTWF0aC5jbHoz''@;'; put 'put ''Mih5KX06ZnVuY3Rpb24oeSl7dmFyIHA9eSxTPTA7cmV0dXJuIHA+PTQwOTYmJihTKz0xMyxwPj4+PTEzKSxwPj02NCYmKFMrPTcscD4+Pj03KSxwPj04JiYoUys9NCxwPj4+PTQpLHA+PTImJihTKz0yLHA+Pj49MiksUytwfSxFLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oeSl7aWYo''@;'; put 'put ''MD09PXkpcmV0dXJuIDI2O3ZhciBwPXksUz0wO3JldHVybiEoODE5MSZwKSYmKFMrPTEzLHA+Pj49MTMpLCEoMTI3JnApJiYoUys9NyxwPj4+PTcpLCEoMTUmcCkmJihTKz00LHA+Pj49NCksISgzJnApJiYoUys9MixwPj4+PTIpLCEoMSZwKSYmUysrLFN9LEUucHJvdG90eXBlLmJpdExlbmd0''@;'; put 'put ''aD1mdW5jdGlvbigpe3ZhciBwPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3B9LEUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHk9MCxwPTA7''@;'; put 'put ''cDx0aGlzLmxlbmd0aDtwKyspe3ZhciBTPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbcF0pO2lmKHkrPVMsMjYhPT1TKWJyZWFrfXJldHVybiB5fSxFLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS50b1R3b3M9ZnVuY3Rpb24oeSl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oeSkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy50ZXN0bih5LTEpP3RoaXMubm90bih5KS5pYWRk''@;'; put 'put ''bigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sRS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oeSl7Zm9yKDt0aGlzLmxlbmd0aDx5Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgcD0wO3A8eS5sZW5ndGg7cCsrKXRoaXMud29y''@;'; put 'put ''ZHNbcF09dGhpcy53b3Jkc1twXXx5LndvcmRzW3BdO3JldHVybiB0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oeSl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8eS5uZWdhdGl2ZSkpLHRoaXMuaXVvcih5KX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oeSl7cmV0''@;'; put 'put ''dXJuIHRoaXMubGVuZ3RoPnkubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoeSk6eS5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmxlbmd0aD55Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih5KTp5LmNsb25lKCkuaXVvcih0aGlzKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oeSl7dmFyIHA7cD10aGlzLmxlbmd0aD55Lmxlbmd0aD95OnRoaXM7Zm9yKHZhciBTPTA7UzxwLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT10aGlzLndvcmRzW1NdJnkud29yZHNbU107cmV0dXJuIHRoaXMubGVuZ3RoPXAubGVuZ3RoLHRoaXMu''@;'; put 'put ''X3N0cmlwKCl9LEUucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oeSl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8eS5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoeSl9LEUucHJvdG90eXBlLmFuZD1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5sZW5ndGg+eS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlh''@;'; put 'put ''bmQoeSk6eS5jbG9uZSgpLmlhbmQodGhpcyl9LEUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMubGVuZ3RoPnkubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh5KTp5LmNsb25lKCkuaXVhbmQodGhpcyl9LEUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHkpe3ZhciBw''@;'; put 'put ''LFM7dGhpcy5sZW5ndGg+eS5sZW5ndGg/KHA9dGhpcyxTPXkpOihwPXksUz10aGlzKTtmb3IodmFyIFE9MDtRPFMubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPXAud29yZHNbUV1eUy53b3Jkc1tRXTtpZih0aGlzIT09cClmb3IoO1E8cC5sZW5ndGg7USsrKXRoaXMud29yZHNbUV09cC53b3Jk''@;'; put 'put ''c1tRXTtyZXR1cm4gdGhpcy5sZW5ndGg9cC5sZW5ndGgsdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih5KXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXx5Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih5KX0sRS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHkpe3JldHVy''@;'; put 'put ''biB0aGlzLmxlbmd0aD55Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih5KTp5LmNsb25lKCkuaXhvcih0aGlzKX0sRS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5sZW5ndGg+eS5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHkpOnkuY2xvbmUoKS5pdXhvcih0aGlz''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oeSl7SSgibnVtYmVyIj09dHlwZW9mIHkmJnk+PTApO3ZhciBwPTB8TWF0aC5jZWlsKHkvMjYpLFM9eSUyNjt0aGlzLl9leHBhbmQocCksUz4wJiZwLS07Zm9yKHZhciBRPTA7UTxwO1ErKyl0aGlzLndvcmRzW1FdPTY3MTA4ODYzJn50aGlz''@;'; put 'put ''LndvcmRzW1FdO3JldHVybiBTPjAmJih0aGlzLndvcmRzW1FdPX50aGlzLndvcmRzW1FdJjY3MTA4ODYzPj4yNi1TKSx0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oeSl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rp''@;'; put 'put ''b24oeSxwKXtJKCJudW1iZXIiPT10eXBlb2YgeSYmeT49MCk7dmFyIFM9eS8yNnwwLFE9eSUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKFMrMSksdGhpcy53b3Jkc1tTXT1wP3RoaXMud29yZHNbU118MTw8UTp0aGlzLndvcmRzW1NdJn4oMTw8USksdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aWFkZD1mdW5jdGlvbih5KXt2YXIgcCxTLFE7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT15Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAscD10aGlzLmlzdWIoeSksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eS5u''@;'; put 'put ''ZWdhdGl2ZSlyZXR1cm4geS5uZWdhdGl2ZT0wLHA9dGhpcy5pc3ViKHkpLHkubmVnYXRpdmU9MSxwLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPnkubGVuZ3RoPyhTPXRoaXMsUT15KTooUz15LFE9dGhpcyk7Zm9yKHZhciByZT0wLGZlPTA7ZmU8US5sZW5ndGg7ZmUrKyl0aGlzLndvcmRzW2Zl''@;'; put 'put ''XT02NzEwODg2MyYocD0oMHxTLndvcmRzW2ZlXSkrKDB8US53b3Jkc1tmZV0pK3JlKSxyZT1wPj4+MjY7Zm9yKDswIT09cmUmJmZlPFMubGVuZ3RoO2ZlKyspdGhpcy53b3Jkc1tmZV09NjcxMDg4NjMmKHA9KDB8Uy53b3Jkc1tmZV0pK3JlKSxyZT1wPj4+MjY7aWYodGhpcy5sZW5ndGg9Uy5s''@;'; put 'put ''ZW5ndGgsMCE9PXJlKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXJlLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihTIT09dGhpcylmb3IoO2ZlPFMubGVuZ3RoO2ZlKyspdGhpcy53b3Jkc1tmZV09Uy53b3Jkc1tmZV07cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih5KXt2YXIg''@;'; put 'put ''cDtyZXR1cm4gMCE9PXkubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh5Lm5lZ2F0aXZlPTAscD10aGlzLnN1Yih5KSx5Lm5lZ2F0aXZlXj0xLHApOjA9PT15Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHA9eS5zdWIodGhpcyksdGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0xLHApOnRoaXMubGVuZ3RoPnkubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHkpOnkuY2xvbmUoKS5pYWRkKHRoaXMpfSxFLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHkpe2lmKDAhPT15Lm5lZ2F0aXZlKXt5Lm5lZ2F0aXZlPTA7dmFyIHA9dGhpcy5pYWRkKHkpO3JldHVybiB5Lm5lZ2F0''@;'; put 'put ''aXZlPTEscC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh5KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgUyxRLHJlPXRoaXMuY21wKHkpO2lmKDA9PT1yZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0w''@;'; put 'put ''LHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7cmU+MD8oUz10aGlzLFE9eSk6KFM9eSxRPXRoaXMpO2Zvcih2YXIgZmU9MCxtZT0wO21lPFEubGVuZ3RoO21lKyspZmU9KHA9KDB8Uy53b3Jkc1ttZV0pLSgwfFEud29yZHNbbWVdKStmZSk+PjI2LHRoaXMud29yZHNbbWVdPTY3''@;'; put 'put ''MTA4ODYzJnA7Zm9yKDswIT09ZmUmJm1lPFMubGVuZ3RoO21lKyspZmU9KHA9KDB8Uy53b3Jkc1ttZV0pK2ZlKT4+MjYsdGhpcy53b3Jkc1ttZV09NjcxMDg4NjMmcDtpZigwPT09ZmUmJm1lPFMubGVuZ3RoJiZTIT09dGhpcylmb3IoO21lPFMubGVuZ3RoO21lKyspdGhpcy53b3Jkc1ttZV09''@;'; put 'put ''Uy53b3Jkc1ttZV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLG1lKSxTIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Yih5KX07dmFyIGxlPWZ1''@;'; put 'put ''bmN0aW9uKHkscCxTKXt2YXIgUSxyZSxmZSxtZT15LndvcmRzLGtlPXAud29yZHMsVGU9Uy53b3JkcyxQZT0wLEZlPTB8bWVbMF0sTmU9ODE5MSZGZSxMZT1GZT4+PjEzLEJlPTB8bWVbMV0sSGU9ODE5MSZCZSxRZT1CZT4+PjEzLG10PTB8bWVbMl0sS2U9ODE5MSZtdCx3ZT1tdD4+PjEzLEll''@;'; put 'put ''PTB8bWVbM10sT2U9ODE5MSZJZSxldD1JZT4+PjEzLG50PTB8bWVbNF0scWU9ODE5MSZudCxodD1udD4+PjEzLEVlPTB8bWVbNV0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8bWVbNl0sY3Q9ODE5MSZhdCxPdD1hdD4+PjEzLFB0PTB8bWVbN10sQXQ9ODE5MSZQdCxKdD1QdD4+PjEzLG1u''@;'; put 'put ''PTB8bWVbOF0sTnQ9ODE5MSZtbixibj1tbj4+PjEzLEduPTB8bWVbOV0sb249ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8a2VbMF0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8a2VbMV0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8a2VbMl0sVnQ9ODE5MSZfdCxfbj1fdD4+PjEzLG90''@;'; put 'put ''PTB8a2VbM10sSXQ9ODE5MSZvdCxubj1vdD4+PjEzLER0PTB8a2VbNF0sdnQ9ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8a2VbNV0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8a2VbNl0sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8a2VbN10scXQ9ODE5MSZGbixIbj1Gbj4+PjEzLGlp''@;'; put 'put ''PTB8a2VbOF0sY249ODE5MSZpaSxqbj1paT4+PjEzLFhyPTB8a2VbOV0sdmk9ODE5MSZYcixFcj1Ycj4+PjEzO1MubmVnYXRpdmU9eS5uZWdhdGl2ZV5wLm5lZ2F0aXZlLFMubGVuZ3RoPTE5O3ZhciBZaT0oUGUrKFE9TWF0aC5pbXVsKE5lLHB0KSl8MCkrKCg4MTkxJihyZT0ocmU9TWF0aC5p''@;'; put 'put ''bXVsKE5lLHBuKSkrTWF0aC5pbXVsKExlLHB0KXwwKSk8PDEzKXwwO1BlPSgoZmU9TWF0aC5pbXVsKExlLHBuKSkrKHJlPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2MyxRPU1hdGguaW11bChIZSxwdCkscmU9KHJlPU1hdGguaW11bChIZSxwbikpK01hdGguaW11bChRZSxwdCl8''@;'; put 'put ''MCxmZT1NYXRoLmltdWwoUWUscG4pO3ZhciBKcj0oUGUrKFE9UStNYXRoLmltdWwoTmUsQ3QpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxlbil8MCkrTWF0aC5pbXVsKExlLEN0KXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVsKExlLGVuKXwwKSsocmU+Pj4x''@;'; put 'put ''Myl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFE9TWF0aC5pbXVsKEtlLHB0KSxyZT0ocmU9TWF0aC5pbXVsKEtlLHBuKSkrTWF0aC5pbXVsKHdlLHB0KXwwLGZlPU1hdGguaW11bCh3ZSxwbiksUT1RK01hdGguaW11bChIZSxDdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEhlLGVuKXww''@;'; put 'put ''KStNYXRoLmltdWwoUWUsQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKFFlLGVuKXwwO3ZhciBhbz0oUGUrKFE9UStNYXRoLmltdWwoTmUsVnQpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0''@;'; put 'put ''aC5pbXVsKExlLF9uKXwwKSsocmU+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKE9lLHB0KSxyZT0ocmU9TWF0aC5pbXVsKE9lLHBuKSkrTWF0aC5pbXVsKGV0LHB0KXwwLGZlPU1hdGguaW11bChldCxwbiksUT1RK01hdGguaW11bChLZSxDdCl8MCxyZT0o''@;'; put 'put ''cmU9cmUrTWF0aC5pbXVsKEtlLGVuKXwwKStNYXRoLmltdWwod2UsQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKHdlLGVuKXwwLFE9UStNYXRoLmltdWwoSGUsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChIZSxfbil8MCkrTWF0aC5pbXVsKFFlLFZ0KXwwLGZlPWZlK01hdGguaW11bChRZSxfbil8''@;'; put 'put ''MDt2YXIgQnI9KFBlKyhRPVErTWF0aC5pbXVsKE5lLEl0KXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoTmUsbm4pfDApK01hdGguaW11bChMZSxJdCl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChMZSxubil8MCkrKHJlPj4+MTMpfDApKyhCcj4+PjI2KXwwLEJy''@;'; put 'put ''Jj02NzEwODg2MyxRPU1hdGguaW11bChxZSxwdCkscmU9KHJlPU1hdGguaW11bChxZSxwbikpK01hdGguaW11bChodCxwdCl8MCxmZT1NYXRoLmltdWwoaHQscG4pLFE9UStNYXRoLmltdWwoT2UsQ3QpfDAscmU9KHJlPXJlK01hdGguaW11bChPZSxlbil8MCkrTWF0aC5pbXVsKGV0LEN0KXww''@;'; put 'put ''LGZlPWZlK01hdGguaW11bChldCxlbil8MCxRPVErTWF0aC5pbXVsKEtlLFZ0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoS2UsX24pfDApK01hdGguaW11bCh3ZSxWdCl8MCxmZT1mZStNYXRoLmltdWwod2UsX24pfDAsUT1RK01hdGguaW11bChIZSxJdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVs''@;'; put 'put ''KEhlLG5uKXwwKStNYXRoLmltdWwoUWUsSXQpfDAsZmU9ZmUrTWF0aC5pbXVsKFFlLG5uKXwwO3ZhciBKaT0oUGUrKFE9UStNYXRoLmltdWwoTmUsdnQpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxHdCl8MCkrTWF0aC5pbXVsKExlLHZ0KXwwKSk8PDEzKXwwO1BlPSgo''@;'; put 'put ''ZmU9ZmUrTWF0aC5pbXVsKExlLEd0KXwwKSsocmU+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLFE9TWF0aC5pbXVsKERlLHB0KSxyZT0ocmU9TWF0aC5pbXVsKERlLHBuKSkrTWF0aC5pbXVsKCRlLHB0KXwwLGZlPU1hdGguaW11bCgkZSxwbiksUT1RK01hdGguaW11bChxZSxD''@;'; put 'put ''dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKHFlLGVuKXwwKStNYXRoLmltdWwoaHQsQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKGh0LGVuKXwwLFE9UStNYXRoLmltdWwoT2UsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLGZlPWZlK01hdGguaW11''@;'; put 'put ''bChldCxfbil8MCxRPVErTWF0aC5pbXVsKEtlLEl0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoS2Usbm4pfDApK01hdGguaW11bCh3ZSxJdCl8MCxmZT1mZStNYXRoLmltdWwod2Usbm4pfDAsUT1RK01hdGguaW11bChIZSx2dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEhlLEd0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoUWUsdnQpfDAsZmU9ZmUrTWF0aC5pbXVsKFFlLEd0KXwwO3ZhciB0bz0oUGUrKFE9UStNYXRoLmltdWwoTmUsenQpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVs''@;'; put 'put ''KExlLE1uKXwwKSsocmU+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKGN0LHB0KSxyZT0ocmU9TWF0aC5pbXVsKGN0LHBuKSkrTWF0aC5pbXVsKE90LHB0KXwwLGZlPU1hdGguaW11bChPdCxwbiksUT1RK01hdGguaW11bChEZSxDdCl8MCxyZT0ocmU9cmUr''@;'; put 'put ''TWF0aC5pbXVsKERlLGVuKXwwKStNYXRoLmltdWwoJGUsQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKCRlLGVuKXwwLFE9UStNYXRoLmltdWwocWUsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChxZSxfbil8MCkrTWF0aC5pbXVsKGh0LFZ0KXwwLGZlPWZlK01hdGguaW11bChodCxfbil8MCxRPVEr''@;'; put 'put ''TWF0aC5pbXVsKE9lLEl0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoT2Usbm4pfDApK01hdGguaW11bChldCxJdCl8MCxmZT1mZStNYXRoLmltdWwoZXQsbm4pfDAsUT1RK01hdGguaW11bChLZSx2dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEtlLEd0KXwwKStNYXRoLmltdWwod2UsdnQpfDAs''@;'; put 'put ''ZmU9ZmUrTWF0aC5pbXVsKHdlLEd0KXwwLFE9UStNYXRoLmltdWwoSGUsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChIZSxNbil8MCkrTWF0aC5pbXVsKFFlLHp0KXwwLGZlPWZlK01hdGguaW11bChRZSxNbil8MDt2YXIgY289KFBlKyhRPVErTWF0aC5pbXVsKE5lLHNuKXwwKXwwKSsoKDgx''@;'; put 'put ''OTEmKHJlPShyZT1yZStNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChMZSxCbil8MCkrKHJlPj4+MTMpfDApKyhjbz4+PjI2KXwwLGNvJj02NzEwODg2MyxRPU1hdGguaW11bChBdCxwdCkscmU9KHJlPU1hdGguaW11''@;'; put 'put ''bChBdCxwbikpK01hdGguaW11bChKdCxwdCl8MCxmZT1NYXRoLmltdWwoSnQscG4pLFE9UStNYXRoLmltdWwoY3QsQ3QpfDAscmU9KHJlPXJlK01hdGguaW11bChjdCxlbil8MCkrTWF0aC5pbXVsKE90LEN0KXwwLGZlPWZlK01hdGguaW11bChPdCxlbil8MCxRPVErTWF0aC5pbXVsKERlLFZ0''@;'; put 'put ''KXwwLHJlPShyZT1yZStNYXRoLmltdWwoRGUsX24pfDApK01hdGguaW11bCgkZSxWdCl8MCxmZT1mZStNYXRoLmltdWwoJGUsX24pfDAsUT1RK01hdGguaW11bChxZSxJdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsZmU9ZmUrTWF0aC5pbXVs''@;'; put 'put ''KGh0LG5uKXwwLFE9UStNYXRoLmltdWwoT2UsdnQpfDAscmU9KHJlPXJlK01hdGguaW11bChPZSxHdCl8MCkrTWF0aC5pbXVsKGV0LHZ0KXwwLGZlPWZlK01hdGguaW11bChldCxHdCl8MCxRPVErTWF0aC5pbXVsKEtlLHp0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoS2UsTW4pfDApK01hdGgu''@;'; put 'put ''aW11bCh3ZSx6dCl8MCxmZT1mZStNYXRoLmltdWwod2UsTW4pfDAsUT1RK01hdGguaW11bChIZSxzbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEhlLEJuKXwwKStNYXRoLmltdWwoUWUsc24pfDAsZmU9ZmUrTWF0aC5pbXVsKFFlLEJuKXwwO3ZhciBsbz0oUGUrKFE9UStNYXRoLmltdWwoTmUs''@;'; put 'put ''cXQpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxIbil8MCkrTWF0aC5pbXVsKExlLHF0KXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVsKExlLEhuKXwwKSsocmU+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKE50LHB0KSxy''@;'; put 'put ''ZT0ocmU9TWF0aC5pbXVsKE50LHBuKSkrTWF0aC5pbXVsKGJuLHB0KXwwLGZlPU1hdGguaW11bChibixwbiksUT1RK01hdGguaW11bChBdCxDdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKEp0LGVuKXwwLFE9UStN''@;'; put 'put ''YXRoLmltdWwoY3QsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChjdCxfbil8MCkrTWF0aC5pbXVsKE90LFZ0KXwwLGZlPWZlK01hdGguaW11bChPdCxfbil8MCxRPVErTWF0aC5pbXVsKERlLEl0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoRGUsbm4pfDApK01hdGguaW11bCgkZSxJdCl8MCxm''@;'; put 'put ''ZT1mZStNYXRoLmltdWwoJGUsbm4pfDAsUT1RK01hdGguaW11bChxZSx2dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsZmU9ZmUrTWF0aC5pbXVsKGh0LEd0KXwwLFE9UStNYXRoLmltdWwoT2UsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChP''@;'; put 'put ''ZSxNbil8MCkrTWF0aC5pbXVsKGV0LHp0KXwwLGZlPWZlK01hdGguaW11bChldCxNbil8MCxRPVErTWF0aC5pbXVsKEtlLHNuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoS2UsQm4pfDApK01hdGguaW11bCh3ZSxzbil8MCxmZT1mZStNYXRoLmltdWwod2UsQm4pfDAsUT1RK01hdGguaW11bChI''@;'; put 'put ''ZSxxdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmltdWwoUWUscXQpfDAsZmU9ZmUrTWF0aC5pbXVsKFFlLEhuKXwwO3ZhciBzbz0oUGUrKFE9UStNYXRoLmltdWwoTmUsY24pfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChOZSxqbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKExlLGNuKXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVsKExlLGpuKXwwKSsocmU+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG9uLHB0KSxyZT0ocmU9TWF0aC5pbXVsKG9uLHBuKSkrTWF0aC5pbXVsKCRuLHB0KXwwLGZlPU1hdGguaW11''@;'; put 'put ''bCgkbixwbiksUT1RK01hdGguaW11bChOdCxDdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKE50LGVuKXwwKStNYXRoLmltdWwoYm4sQ3QpfDAsZmU9ZmUrTWF0aC5pbXVsKGJuLGVuKXwwLFE9UStNYXRoLmltdWwoQXQsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChBdCxfbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEp0LFZ0KXwwLGZlPWZlK01hdGguaW11bChKdCxfbil8MCxRPVErTWF0aC5pbXVsKGN0LEl0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoY3Qsbm4pfDApK01hdGguaW11bChPdCxJdCl8MCxmZT1mZStNYXRoLmltdWwoT3Qsbm4pfDAsUT1RK01hdGguaW11bChEZSx2dCl8MCxyZT0ocmU9''@;'; put 'put ''cmUrTWF0aC5pbXVsKERlLEd0KXwwKStNYXRoLmltdWwoJGUsdnQpfDAsZmU9ZmUrTWF0aC5pbXVsKCRlLEd0KXwwLFE9UStNYXRoLmltdWwocWUsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXwwLGZlPWZlK01hdGguaW11bChodCxNbil8MCxR''@;'; put 'put ''PVErTWF0aC5pbXVsKE9lLHNuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoT2UsQm4pfDApK01hdGguaW11bChldCxzbil8MCxmZT1mZStNYXRoLmltdWwoZXQsQm4pfDAsUT1RK01hdGguaW11bChLZSxxdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEtlLEhuKXwwKStNYXRoLmltdWwod2UscXQp''@;'; put 'put ''fDAsZmU9ZmUrTWF0aC5pbXVsKHdlLEhuKXwwLFE9UStNYXRoLmltdWwoSGUsY24pfDAscmU9KHJlPXJlK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwLGZlPWZlK01hdGguaW11bChRZSxqbil8MDt2YXIgWGk9KFBlKyhRPVErTWF0aC5pbXVsKE5lLHZpKXwwKXwwKSso''@;'; put 'put ''KDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoTmUsRXIpfDApK01hdGguaW11bChMZSx2aSl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChMZSxFcil8MCkrKHJlPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxRPU1hdGguaW11bChvbixDdCkscmU9KHJlPU1hdGgu''@;'; put 'put ''aW11bChvbixlbikpK01hdGguaW11bCgkbixDdCl8MCxmZT1NYXRoLmltdWwoJG4sZW4pLFE9UStNYXRoLmltdWwoTnQsVnQpfDAscmU9KHJlPXJlK01hdGguaW11bChOdCxfbil8MCkrTWF0aC5pbXVsKGJuLFZ0KXwwLGZlPWZlK01hdGguaW11bChibixfbil8MCxRPVErTWF0aC5pbXVsKEF0''@;'; put 'put ''LEl0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoQXQsbm4pfDApK01hdGguaW11bChKdCxJdCl8MCxmZT1mZStNYXRoLmltdWwoSnQsbm4pfDAsUT1RK01hdGguaW11bChjdCx2dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKGN0LEd0KXwwKStNYXRoLmltdWwoT3QsdnQpfDAsZmU9ZmUrTWF0aC5p''@;'; put 'put ''bXVsKE90LEd0KXwwLFE9UStNYXRoLmltdWwoRGUsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChEZSxNbil8MCkrTWF0aC5pbXVsKCRlLHp0KXwwLGZlPWZlK01hdGguaW11bCgkZSxNbil8MCxRPVErTWF0aC5pbXVsKHFlLHNuKXwwLHJlPShyZT1yZStNYXRoLmltdWwocWUsQm4pfDApK01h''@;'; put 'put ''dGguaW11bChodCxzbil8MCxmZT1mZStNYXRoLmltdWwoaHQsQm4pfDAsUT1RK01hdGguaW11bChPZSxxdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKE9lLEhuKXwwKStNYXRoLmltdWwoZXQscXQpfDAsZmU9ZmUrTWF0aC5pbXVsKGV0LEhuKXwwLFE9UStNYXRoLmltdWwoS2UsY24pfDAscmU9''@;'; put 'put ''KHJlPXJlK01hdGguaW11bChLZSxqbil8MCkrTWF0aC5pbXVsKHdlLGNuKXwwLGZlPWZlK01hdGguaW11bCh3ZSxqbil8MDt2YXIgcG89KFBlKyhRPVErTWF0aC5pbXVsKEhlLHZpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoSGUsRXIpfDApK01hdGguaW11bChRZSx2aSl8''@;'; put 'put ''MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChRZSxFcil8MCkrKHJlPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBvJj02NzEwODg2MyxRPU1hdGguaW11bChvbixWdCkscmU9KHJlPU1hdGguaW11bChvbixfbikpK01hdGguaW11bCgkbixWdCl8MCxmZT1NYXRoLmltdWwoJG4sX24pLFE9''@;'; put 'put ''UStNYXRoLmltdWwoTnQsSXQpfDAscmU9KHJlPXJlK01hdGguaW11bChOdCxubil8MCkrTWF0aC5pbXVsKGJuLEl0KXwwLGZlPWZlK01hdGguaW11bChibixubil8MCxRPVErTWF0aC5pbXVsKEF0LHZ0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoQXQsR3QpfDApK01hdGguaW11bChKdCx2dCl8''@;'; put 'put ''MCxmZT1mZStNYXRoLmltdWwoSnQsR3QpfDAsUT1RK01hdGguaW11bChjdCx6dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKGN0LE1uKXwwKStNYXRoLmltdWwoT3QsenQpfDAsZmU9ZmUrTWF0aC5pbXVsKE90LE1uKXwwLFE9UStNYXRoLmltdWwoRGUsc24pfDAscmU9KHJlPXJlK01hdGguaW11''@;'; put 'put ''bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLGZlPWZlK01hdGguaW11bCgkZSxCbil8MCxRPVErTWF0aC5pbXVsKHFlLHF0KXwwLHJlPShyZT1yZStNYXRoLmltdWwocWUsSG4pfDApK01hdGguaW11bChodCxxdCl8MCxmZT1mZStNYXRoLmltdWwoaHQsSG4pfDAsUT1RK01hdGguaW11''@;'; put 'put ''bChPZSxjbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKE9lLGpuKXwwKStNYXRoLmltdWwoZXQsY24pfDAsZmU9ZmUrTWF0aC5pbXVsKGV0LGpuKXwwO3ZhciBfcj0oUGUrKFE9UStNYXRoLmltdWwoS2UsdmkpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChLZSxFcil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKHdlLHZpKXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVsKHdlLEVyKXwwKSsocmU+Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG9uLEl0KSxyZT0ocmU9TWF0aC5pbXVsKG9uLG5uKSkrTWF0aC5pbXVsKCRuLEl0KXwwLGZlPU1hdGgu''@;'; put 'put ''aW11bCgkbixubiksUT1RK01hdGguaW11bChOdCx2dCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKE50LEd0KXwwKStNYXRoLmltdWwoYm4sdnQpfDAsZmU9ZmUrTWF0aC5pbXVsKGJuLEd0KXwwLFE9UStNYXRoLmltdWwoQXQsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChBdCxNbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEp0LHp0KXwwLGZlPWZlK01hdGguaW11bChKdCxNbil8MCxRPVErTWF0aC5pbXVsKGN0LHNuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoY3QsQm4pfDApK01hdGguaW11bChPdCxzbil8MCxmZT1mZStNYXRoLmltdWwoT3QsQm4pfDAsUT1RK01hdGguaW11bChEZSxxdCl8MCxyZT0o''@;'; put 'put ''cmU9cmUrTWF0aC5pbXVsKERlLEhuKXwwKStNYXRoLmltdWwoJGUscXQpfDAsZmU9ZmUrTWF0aC5pbXVsKCRlLEhuKXwwLFE9UStNYXRoLmltdWwocWUsY24pfDAscmU9KHJlPXJlK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNuKXwwLGZlPWZlK01hdGguaW11bChodCxqbil8''@;'; put 'put ''MDt2YXIgRmk9KFBlKyhRPVErTWF0aC5pbXVsKE9lLHZpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoT2UsRXIpfDApK01hdGguaW11bChldCx2aSl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChldCxFcil8MCkrKHJlPj4+MTMpfDApKyhGaT4+PjI2KXwwLEZp''@;'; put 'put ''Jj02NzEwODg2MyxRPU1hdGguaW11bChvbix2dCkscmU9KHJlPU1hdGguaW11bChvbixHdCkpK01hdGguaW11bCgkbix2dCl8MCxmZT1NYXRoLmltdWwoJG4sR3QpLFE9UStNYXRoLmltdWwoTnQsenQpfDAscmU9KHJlPXJlK01hdGguaW11bChOdCxNbil8MCkrTWF0aC5pbXVsKGJuLHp0KXww''@;'; put 'put ''LGZlPWZlK01hdGguaW11bChibixNbil8MCxRPVErTWF0aC5pbXVsKEF0LHNuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoQXQsQm4pfDApK01hdGguaW11bChKdCxzbil8MCxmZT1mZStNYXRoLmltdWwoSnQsQm4pfDAsUT1RK01hdGguaW11bChjdCxxdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVs''@;'; put 'put ''KGN0LEhuKXwwKStNYXRoLmltdWwoT3QscXQpfDAsZmU9ZmUrTWF0aC5pbXVsKE90LEhuKXwwLFE9UStNYXRoLmltdWwoRGUsY24pfDAscmU9KHJlPXJlK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwLGZlPWZlK01hdGguaW11bCgkZSxqbil8MDt2YXIgSG89KFBlKyhR''@;'; put 'put ''PVErTWF0aC5pbXVsKHFlLHZpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwocWUsRXIpfDApK01hdGguaW11bChodCx2aSl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChodCxFcil8MCkrKHJlPj4+MTMpfDApKyhIbz4+PjI2KXwwLEhvJj02NzEwODg2MyxRPU1h''@;'; put 'put ''dGguaW11bChvbix6dCkscmU9KHJlPU1hdGguaW11bChvbixNbikpK01hdGguaW11bCgkbix6dCl8MCxmZT1NYXRoLmltdWwoJG4sTW4pLFE9UStNYXRoLmltdWwoTnQsc24pfDAscmU9KHJlPXJlK01hdGguaW11bChOdCxCbil8MCkrTWF0aC5pbXVsKGJuLHNuKXwwLGZlPWZlK01hdGguaW11''@;'; put 'put ''bChibixCbil8MCxRPVErTWF0aC5pbXVsKEF0LHF0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoQXQsSG4pfDApK01hdGguaW11bChKdCxxdCl8MCxmZT1mZStNYXRoLmltdWwoSnQsSG4pfDAsUT1RK01hdGguaW11bChjdCxjbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKGN0LGpuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoT3QsY24pfDAsZmU9ZmUrTWF0aC5pbXVsKE90LGpuKXwwO3ZhciBnYT0oUGUrKFE9UStNYXRoLmltdWwoRGUsdmkpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChEZSxFcil8MCkrTWF0aC5pbXVsKCRlLHZpKXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVs''@;'; put 'put ''KCRlLEVyKXwwKSsocmU+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG9uLHNuKSxyZT0ocmU9TWF0aC5pbXVsKG9uLEJuKSkrTWF0aC5pbXVsKCRuLHNuKXwwLGZlPU1hdGguaW11bCgkbixCbiksUT1RK01hdGguaW11bChOdCxxdCl8MCxyZT0ocmU9cmUr''@;'; put 'put ''TWF0aC5pbXVsKE50LEhuKXwwKStNYXRoLmltdWwoYm4scXQpfDAsZmU9ZmUrTWF0aC5pbXVsKGJuLEhuKXwwLFE9UStNYXRoLmltdWwoQXQsY24pfDAscmU9KHJlPXJlK01hdGguaW11bChBdCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXwwLGZlPWZlK01hdGguaW11bChKdCxqbil8MDt2YXIg''@;'; put 'put ''bGE9KFBlKyhRPVErTWF0aC5pbXVsKGN0LHZpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoY3QsRXIpfDApK01hdGguaW11bChPdCx2aSl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChPdCxFcil8MCkrKHJlPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEw''@;'; put 'put ''ODg2MyxRPU1hdGguaW11bChvbixxdCkscmU9KHJlPU1hdGguaW11bChvbixIbikpK01hdGguaW11bCgkbixxdCl8MCxmZT1NYXRoLmltdWwoJG4sSG4pLFE9UStNYXRoLmltdWwoTnQsY24pfDAscmU9KHJlPXJlK01hdGguaW11bChOdCxqbil8MCkrTWF0aC5pbXVsKGJuLGNuKXwwLGZlPWZl''@;'; put 'put ''K01hdGguaW11bChibixqbil8MDt2YXIgVnU9KFBlKyhRPVErTWF0aC5pbXVsKEF0LHZpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoQXQsRXIpfDApK01hdGguaW11bChKdCx2aSl8MCkpPDwxMyl8MDtQZT0oKGZlPWZlK01hdGguaW11bChKdCxFcil8MCkrKHJlPj4+MTMp''@;'; put 'put ''fDApKyhWdT4+PjI2KXwwLFZ1Jj02NzEwODg2MyxRPU1hdGguaW11bChvbixjbikscmU9KHJlPU1hdGguaW11bChvbixqbikpK01hdGguaW11bCgkbixjbil8MCxmZT1NYXRoLmltdWwoJG4sam4pO3ZhciBncz0oUGUrKFE9UStNYXRoLmltdWwoTnQsdmkpfDApfDApKygoODE5MSYocmU9KHJl''@;'; put 'put ''PXJlK01hdGguaW11bChOdCxFcil8MCkrTWF0aC5pbXVsKGJuLHZpKXwwKSk8PDEzKXwwO1BlPSgoZmU9ZmUrTWF0aC5pbXVsKGJuLEVyKXwwKSsocmU+Pj4xMyl8MCkrKGdzPj4+MjYpfDAsZ3MmPTY3MTA4ODYzO3ZhciBCdT0oUGUrKFE9TWF0aC5pbXVsKG9uLHZpKSl8MCkrKCg4MTkxJihy''@;'; put 'put ''ZT0ocmU9TWF0aC5pbXVsKG9uLEVyKSkrTWF0aC5pbXVsKCRuLHZpKXwwKSk8PDEzKXwwO3JldHVybiBQZT0oKGZlPU1hdGguaW11bCgkbixFcikpKyhyZT4+PjEzKXwwKSsoQnU+Pj4yNil8MCxCdSY9NjcxMDg4NjMsVGVbMF09WWksVGVbMV09SnIsVGVbMl09YW8sVGVbM109QnIsVGVbNF09''@;'; put 'put ''SmksVGVbNV09dG8sVGVbNl09Y28sVGVbN109bG8sVGVbOF09c28sVGVbOV09WGksVGVbMTBdPXBvLFRlWzExXT1fcixUZVsxMl09RmksVGVbMTNdPUhvLFRlWzE0XT1nYSxUZVsxNV09bGEsVGVbMTZdPVZ1LFRlWzE3XT1ncyxUZVsxOF09QnUsMCE9PVBlJiYoVGVbMTldPVBlLFMubGVuZ3Ro''@;'; put 'put ''KyspLFN9O2Z1bmN0aW9uIGRlKHkscCxTKXtTLm5lZ2F0aXZlPXAubmVnYXRpdmVeeS5uZWdhdGl2ZSxTLmxlbmd0aD15Lmxlbmd0aCtwLmxlbmd0aDtmb3IodmFyIFE9MCxyZT0wLGZlPTA7ZmU8Uy5sZW5ndGgtMTtmZSsrKXt2YXIgbWU9cmU7cmU9MDtmb3IodmFyIGtlPTY3MTA4ODYzJlEs''@;'; put 'put ''VGU9TWF0aC5taW4oZmUscC5sZW5ndGgtMSksUGU9TWF0aC5tYXgoMCxmZS15Lmxlbmd0aCsxKTtQZTw9VGU7UGUrKyl7dmFyIE5lPSgwfHkud29yZHNbZmUtUGVdKSooMHxwLndvcmRzW1BlXSksTGU9NjcxMDg4NjMmTmU7a2U9NjcxMDg4NjMmKExlPUxlK2tlfDApLHJlKz0obWU9KG1lPW1l''@;'; put 'put ''KyhOZS82NzEwODg2NHwwKXwwKSsoTGU+Pj4yNil8MCk+Pj4yNixtZSY9NjcxMDg4NjN9Uy53b3Jkc1tmZV09a2UsUT1tZSxtZT1yZX1yZXR1cm4gMCE9PVE/Uy53b3Jkc1tmZV09UTpTLmxlbmd0aC0tLFMuX3N0cmlwKCl9ZnVuY3Rpb24gdWUoeSxwLFMpe3JldHVybiBkZSh5LHAsUyl9ZnVu''@;'; put 'put ''Y3Rpb24gY2UoeSxwKXt0aGlzLng9eSx0aGlzLnk9cH1NYXRoLmltdWx8fChsZT1pZSksRS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oeSxwKXt2YXIgUz10aGlzLmxlbmd0aCt5Lmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT15Lmxlbmd0aD9sZSh0aGlzLHkscCk6Uzw2''@;'; put 'put ''Mz9pZSh0aGlzLHkscCk6UzwxMDI0P2RlKHRoaXMseSxwKTp1ZSh0aGlzLHkscCl9LGNlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHkpe2Zvcih2YXIgcD1uZXcgQXJyYXkoeSksUz1FLnByb3RvdHlwZS5fY291bnRCaXRzKHkpLTEsUT0wO1E8eTtRKyspcFtRXT10aGlzLnJldkJpbihR''@;'; put 'put ''LFMseSk7cmV0dXJuIHB9LGNlLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oeSxwLFMpe2lmKDA9PT15fHx5PT09Uy0xKXJldHVybiB5O2Zvcih2YXIgUT0wLHJlPTA7cmU8cDtyZSsrKVF8PSgxJnkpPDxwLXJlLTEseT4+PTE7cmV0dXJuIFF9LGNlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0''@;'; put 'put ''aW9uKHkscCxTLFEscmUsZmUpe2Zvcih2YXIgbWU9MDttZTxmZTttZSsrKVFbbWVdPXBbeVttZV1dLHJlW21lXT1TW3lbbWVdXX0sY2UucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih5LHAsUyxRLHJlLGZlKXt0aGlzLnBlcm11dGUoZmUseSxwLFMsUSxyZSk7Zm9yKHZhciBtZT0xO21l''@;'; put 'put ''PHJlO21lPDw9MSlmb3IodmFyIGtlPW1lPDwxLFRlPU1hdGguY29zKDIqTWF0aC5QSS9rZSksUGU9TWF0aC5zaW4oMipNYXRoLlBJL2tlKSxGZT0wO0ZlPHJlO0ZlKz1rZSlmb3IodmFyIE5lPVRlLExlPVBlLEJlPTA7QmU8bWU7QmUrKyl7dmFyIEhlPVNbRmUrQmVdLFFlPVFbRmUrQmVdLG10''@;'; put 'put ''PVNbRmUrQmUrbWVdLEtlPVFbRmUrQmUrbWVdLHdlPU5lKm10LUxlKktlO0tlPU5lKktlK0xlKm10LFNbRmUrQmVdPUhlKyhtdD13ZSksUVtGZStCZV09UWUrS2UsU1tGZStCZSttZV09SGUtbXQsUVtGZStCZSttZV09UWUtS2UsQmUhPT1rZSYmKHdlPVRlKk5lLVBlKkxlLExlPVRlKkxlK1Bl''@;'; put 'put ''Kk5lLE5lPXdlKX19LGNlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbih5LHApe3ZhciBTPTF8TWF0aC5tYXgocCx5KSxRPTEmUyxyZT0wO2ZvcihTPVMvMnwwO1M7Uz4+Pj0xKXJlKys7cmV0dXJuIDE8PHJlKzErUX0sY2UucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih5LHAs''@;'; put 'put ''Uyl7aWYoIShTPD0xKSlmb3IodmFyIFE9MDtRPFMvMjtRKyspe3ZhciByZT15W1FdO3lbUV09eVtTLVEtMV0seVtTLVEtMV09cmUscmU9cFtRXSxwW1FdPS1wW1MtUS0xXSxwW1MtUS0xXT0tcmV9fSxjZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKHkscCl7Zm9yKHZhciBTPTAs''@;'; put 'put ''UT0wO1E8cC8yO1ErKyl7dmFyIHJlPTgxOTIqTWF0aC5yb3VuZCh5WzIqUSsxXS9wKStNYXRoLnJvdW5kKHlbMipRXS9wKStTO3lbUV09NjcxMDg4NjMmcmUsUz1yZTw2NzEwODg2ND8wOnJlLzY3MTA4ODY0fDB9cmV0dXJuIHl9LGNlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHks''@;'; put 'put ''cCxTLFEpe2Zvcih2YXIgcmU9MCxmZT0wO2ZlPHA7ZmUrKylTWzIqZmVdPTgxOTEmKHJlKz0wfHlbZmVdKSxTWzIqZmUrMV09ODE5MSYocmU+Pj49MTMpLHJlPj4+PTEzO2ZvcihmZT0yKnA7ZmU8UTsrK2ZlKVNbZmVdPTA7SSgwPT09cmUpLEkoMD09KC04MTkyJnJlKSl9LGNlLnByb3RvdHlw''@;'; put 'put ''ZS5zdHViPWZ1bmN0aW9uKHkpe2Zvcih2YXIgcD1uZXcgQXJyYXkoeSksUz0wO1M8eTtTKyspcFtTXT0wO3JldHVybiBwfSxjZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbih5LHAsUyl7dmFyIFE9Mip0aGlzLmd1ZXNzTGVuMTNiKHkubGVuZ3RoLHAubGVuZ3RoKSxyZT10aGlzLm1ha2VSQlQo''@;'; put 'put ''USksZmU9dGhpcy5zdHViKFEpLG1lPW5ldyBBcnJheShRKSxrZT1uZXcgQXJyYXkoUSksVGU9bmV3IEFycmF5KFEpLFBlPW5ldyBBcnJheShRKSxGZT1uZXcgQXJyYXkoUSksTmU9bmV3IEFycmF5KFEpLExlPVMud29yZHM7TGUubGVuZ3RoPVEsdGhpcy5jb252ZXJ0MTNiKHkud29yZHMseS5s''@;'; put 'put ''ZW5ndGgsbWUsUSksdGhpcy5jb252ZXJ0MTNiKHAud29yZHMscC5sZW5ndGgsUGUsUSksdGhpcy50cmFuc2Zvcm0obWUsZmUsa2UsVGUsUSxyZSksdGhpcy50cmFuc2Zvcm0oUGUsZmUsRmUsTmUsUSxyZSk7Zm9yKHZhciBCZT0wO0JlPFE7QmUrKyl7dmFyIEhlPWtlW0JlXSpGZVtCZV0tVGVb''@;'; put 'put ''QmVdKk5lW0JlXTtUZVtCZV09a2VbQmVdKk5lW0JlXStUZVtCZV0qRmVbQmVdLGtlW0JlXT1IZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoa2UsVGUsUSksdGhpcy50cmFuc2Zvcm0oa2UsVGUsTGUsZmUsUSxyZSksdGhpcy5jb25qdWdhdGUoTGUsZmUsUSksdGhpcy5ub3JtYWxpemUxM2IoTGUs''@;'; put 'put ''USksUy5uZWdhdGl2ZT15Lm5lZ2F0aXZlXnAubmVnYXRpdmUsUy5sZW5ndGg9eS5sZW5ndGgrcC5sZW5ndGgsUy5fc3RyaXAoKX0sRS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHkpe3ZhciBwPW5ldyBFKG51bGwpO3JldHVybiBwLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt5Lmxlbmd0''@;'; put 'put ''aCksdGhpcy5tdWxUbyh5LHApfSxFLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHkpe3ZhciBwPW5ldyBFKG51bGwpO3JldHVybiBwLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt5Lmxlbmd0aCksdWUodGhpcyx5LHApfSxFLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHkpe3JldHVybiB0''@;'; put 'put ''aGlzLmNsb25lKCkubXVsVG8oeSx0aGlzKX0sRS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oeSl7dmFyIHA9eTwwO3AmJih5PS15KSxJKCJudW1iZXIiPT10eXBlb2YgeSksSSh5PDY3MTA4ODY0KTtmb3IodmFyIFM9MCxRPTA7UTx0aGlzLmxlbmd0aDtRKyspe3ZhciByZT0oMHx0aGlzLndv''@;'; put 'put ''cmRzW1FdKSp5LGZlPSg2NzEwODg2MyZyZSkrKDY3MTA4ODYzJlMpO1M+Pj0yNixTKz1yZS82NzEwODg2NHwwLFMrPWZlPj4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZmZX1yZXR1cm4gMCE9PVMmJih0aGlzLndvcmRzW1FdPVMsdGhpcy5sZW5ndGgrKykscD90aGlzLmluZWcoKTp0aGlz''@;'; put 'put ''fSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oeSl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9u''@;'; put 'put ''ZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHkpe3ZhciBwPWZ1bmN0aW9uKGZlKXtmb3IodmFyIG1lPW5ldyBBcnJheShmZS5iaXRMZW5ndGgoKSksa2U9MDtrZTxtZS5sZW5ndGg7a2UrKyltZVtrZV09ZmUud29yZHNba2UvMjZ8MF0+Pj5rZSUyNiYxO3JldHVybiBtZX0oeSk7aWYo''@;'; put 'put ''MD09PXAubGVuZ3RoKXJldHVybiBuZXcgRSgxKTtmb3IodmFyIFM9dGhpcyxRPTA7UTxwLmxlbmd0aCYmMD09PXBbUV07USsrLFM9Uy5zcXIoKSk7aWYoKytRPHAubGVuZ3RoKWZvcih2YXIgcmU9Uy5zcXIoKTtRPHAubGVuZ3RoO1ErKyxyZT1yZS5zcXIoKSkwIT09cFtRXSYmKFM9Uy5tdWwo''@;'; put 'put ''cmUpKTtyZXR1cm4gU30sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKHkpe0koIm51bWJlciI9PXR5cGVvZiB5JiZ5Pj0wKTt2YXIgcCxTPXklMjYsUT0oeS1TKS8yNixyZT02NzEwODg2Mz4+PjI2LVM8PDI2LVM7aWYoMCE9PVMpe3ZhciBmZT0wO2ZvcihwPTA7cDx0aGlzLmxlbmd0aDtw''@;'; put 'put ''Kyspe3ZhciBtZT10aGlzLndvcmRzW3BdJnJlO3RoaXMud29yZHNbcF09KDB8dGhpcy53b3Jkc1twXSktbWU8PFN8ZmUsZmU9bWU+Pj4yNi1TfWZlJiYodGhpcy53b3Jkc1twXT1mZSx0aGlzLmxlbmd0aCsrKX1pZigwIT09USl7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wO3AtLSl0aGlzLndv''@;'; put 'put ''cmRzW3ArUV09dGhpcy53b3Jkc1twXTtmb3IocD0wO3A8UTtwKyspdGhpcy53b3Jkc1twXT0wO3RoaXMubGVuZ3RoKz1RfXJldHVybiB0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbih5KXtyZXR1cm4gSSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oeSl9''@;'; put 'put ''LEUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbih5LHAsUyl7dmFyIFE7SSgibnVtYmVyIj09dHlwZW9mIHkmJnk+PTApLFE9cD8ocC1wJTI2KS8yNjowO3ZhciByZT15JTI2LGZlPU1hdGgubWluKCh5LXJlKS8yNix0aGlzLmxlbmd0aCksbWU9NjcxMDg4NjNeNjcxMDg4NjM+Pj5yZTw8cmUs''@;'; put 'put ''a2U9UztpZihRLT1mZSxRPU1hdGgubWF4KDAsUSksa2Upe2Zvcih2YXIgVGU9MDtUZTxmZTtUZSsrKWtlLndvcmRzW1RlXT10aGlzLndvcmRzW1RlXTtrZS5sZW5ndGg9ZmV9aWYoMCE9PWZlKWlmKHRoaXMubGVuZ3RoPmZlKWZvcih0aGlzLmxlbmd0aC09ZmUsVGU9MDtUZTx0aGlzLmxlbmd0''@;'; put 'put ''aDtUZSsrKXRoaXMud29yZHNbVGVdPXRoaXMud29yZHNbVGUrZmVdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIFBlPTA7Zm9yKFRlPXRoaXMubGVuZ3RoLTE7VGU+PTAmJigwIT09UGV8fFRlPj1RKTtUZS0tKXt2YXIgRmU9MHx0aGlzLndvcmRzW1RlXTt0aGlzLndv''@;'; put 'put ''cmRzW1RlXT1QZTw8MjYtcmV8RmU+Pj5yZSxQZT1GZSZtZX1yZXR1cm4ga2UmJjAhPT1QZSYmKGtlLndvcmRzW2tlLmxlbmd0aCsrXT1QZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlwKCl9LEUucHJvdG90eXBlLmlzaHJuPWZ1''@;'; put 'put ''bmN0aW9uKHkscCxTKXtyZXR1cm4gSSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oeSxwLFMpfSxFLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oeSl9LEUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaXVzaGxuKHkpfSxFLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oeSl9LEUucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHkpfSxFLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih5''@;'; put 'put ''KXtJKCJudW1iZXIiPT10eXBlb2YgeSYmeT49MCk7dmFyIHA9eSUyNixTPSh5LXApLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PVN8fCEodGhpcy53b3Jkc1tTXSYxPDxwKSl9LEUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbih5KXtJKCJudW1iZXIiPT10eXBlb2YgeSYmeT49MCk7dmFyIHA9''@;'; put 'put ''eSUyNixTPSh5LXApLzI2O3JldHVybiBJKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Uz90aGlzOigwIT09cCYmUysrLHRoaXMubGVuZ3RoPU1hdGgubWluKFMsdGhpcy5sZW5ndGgpLDAhPT1wJiYodGhp''@;'; put 'put ''cy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwKSx0aGlzLl9zdHJpcCgpKX0sRS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oeSl9LEUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKHkpe3JldHVybiBJ''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgeSksSSh5PDY3MTA4ODY0KSx5PDA/dGhpcy5pc3VibigteSk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTw9eT8odGhpcy53b3Jkc1swXT15LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlz''@;'; put 'put ''KToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oeSksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHkpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oeSl7dGhpcy53b3Jkc1swXSs9eTtmb3IodmFyIHA9MDtwPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3BdPj02NzEw''@;'; put 'put ''ODg2NDtwKyspdGhpcy53b3Jkc1twXS09NjcxMDg4NjQscD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1twKzFdPTE6dGhpcy53b3Jkc1twKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHArMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24o''@;'; put 'put ''eSl7aWYoSSgibnVtYmVyIj09dHlwZW9mIHkpLEkoeTw2NzEwODg2NCkseTwwKXJldHVybiB0aGlzLmlhZGRuKC15KTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oeSksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09''@;'; put 'put ''eSwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgcD0wO3A8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbcF08MDtwKyspdGhpcy53b3Jkc1twXSs9NjcxMDg4NjQsdGhpcy53b3Jk''@;'; put 'put ''c1twKzFdLT0xO3JldHVybiB0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oeSl9LEUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih5KX0sRS5wcm90b3R5cGUuaWFi''@;'; put 'put ''cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sRS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih5LHAsUyl7dmFyIFEscmU7dGhpcy5fZXhwYW5kKHkubGVu''@;'; put 'put ''Z3RoK1MpO3ZhciBtZT0wO2ZvcihRPTA7UTx5Lmxlbmd0aDtRKyspe3JlPSgwfHRoaXMud29yZHNbUStTXSkrbWU7dmFyIGtlPSgwfHkud29yZHNbUV0pKnA7bWU9KChyZS09NjcxMDg4NjMma2UpPj4yNiktKGtlLzY3MTA4ODY0fDApLHRoaXMud29yZHNbUStTXT02NzEwODg2MyZyZX1mb3Io''@;'; put 'put ''O1E8dGhpcy5sZW5ndGgtUztRKyspbWU9KHJlPSgwfHRoaXMud29yZHNbUStTXSkrbWUpPj4yNix0aGlzLndvcmRzW1ErU109NjcxMDg4NjMmcmU7aWYoMD09PW1lKXJldHVybiB0aGlzLl9zdHJpcCgpO2ZvcihJKC0xPT09bWUpLG1lPTAsUT0wO1E8dGhpcy5sZW5ndGg7USsrKW1lPShyZT0t''@;'; put 'put ''KDB8dGhpcy53b3Jkc1tRXSkrbWUpPj4yNix0aGlzLndvcmRzW1FdPTY3MTA4ODYzJnJlO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oeSxwKXt2YXIgUyxRPXRoaXMuY2xvbmUoKSxyZT15LGZlPTB8cmUud29yZHNb''@;'; put 'put ''cmUubGVuZ3RoLTFdOzAhPShTPTI2LXRoaXMuX2NvdW50Qml0cyhmZSkpJiYocmU9cmUudXNobG4oUyksUS5pdXNobG4oUyksZmU9MHxyZS53b3Jkc1tyZS5sZW5ndGgtMV0pO3ZhciBtZSxrZT1RLmxlbmd0aC1yZS5sZW5ndGg7aWYoIm1vZCIhPT1wKXsobWU9bmV3IEUobnVsbCkpLmxlbmd0''@;'; put 'put ''aD1rZSsxLG1lLndvcmRzPW5ldyBBcnJheShtZS5sZW5ndGgpO2Zvcih2YXIgVGU9MDtUZTxtZS5sZW5ndGg7VGUrKyltZS53b3Jkc1tUZV09MH12YXIgUGU9US5jbG9uZSgpLl9pc2hsbnN1Ym11bChyZSwxLGtlKTswPT09UGUubmVnYXRpdmUmJihRPVBlLG1lJiYobWUud29yZHNba2VdPTEp''@;'; put 'put ''KTtmb3IodmFyIEZlPWtlLTE7RmU+PTA7RmUtLSl7dmFyIE5lPTY3MTA4ODY0KigwfFEud29yZHNbcmUubGVuZ3RoK0ZlXSkrKDB8US53b3Jkc1tyZS5sZW5ndGgrRmUtMV0pO2ZvcihOZT1NYXRoLm1pbihOZS9mZXwwLDY3MTA4ODYzKSxRLl9pc2hsbnN1Ym11bChyZSxOZSxGZSk7MCE9PVEu''@;'; put 'put ''bmVnYXRpdmU7KU5lLS0sUS5uZWdhdGl2ZT0wLFEuX2lzaGxuc3VibXVsKHJlLDEsRmUpLFEuaXNaZXJvKCl8fChRLm5lZ2F0aXZlXj0xKTttZSYmKG1lLndvcmRzW0ZlXT1OZSl9cmV0dXJuIG1lJiZtZS5fc3RyaXAoKSxRLl9zdHJpcCgpLCJkaXYiIT09cCYmMCE9PVMmJlEuaXVzaHJuKFMp''@;'; put 'put ''LHtkaXY6bWV8fG51bGwsbW9kOlF9fSxFLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oeSxwLFMpe3JldHVybiBJKCF5LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IEUoMCksbW9kOm5ldyBFKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PXkubmVnYXRpdmU/KGZlPXRoaXMu''@;'; put 'put ''bmVnKCkuZGl2bW9kKHkscCksIm1vZCIhPT1wJiYoUT1mZS5kaXYubmVnKCkpLCJkaXYiIT09cCYmKHJlPWZlLm1vZC5uZWcoKSxTJiYwIT09cmUubmVnYXRpdmUmJnJlLmlhZGQoeSkpLHtkaXY6USxtb2Q6cmV9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXkubmVnYXRpdmU/KGZlPXRoaXMu''@;'; put 'put ''ZGl2bW9kKHkubmVnKCkscCksIm1vZCIhPT1wJiYoUT1mZS5kaXYubmVnKCkpLHtkaXY6USxtb2Q6ZmUubW9kfSk6dGhpcy5uZWdhdGl2ZSZ5Lm5lZ2F0aXZlPyhmZT10aGlzLm5lZygpLmRpdm1vZCh5Lm5lZygpLHApLCJkaXYiIT09cCYmKHJlPWZlLm1vZC5uZWcoKSxTJiYwIT09cmUubmVn''@;'; put 'put ''YXRpdmUmJnJlLmlzdWIoeSkpLHtkaXY6ZmUuZGl2LG1vZDpyZX0pOnkubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh5KTwwP3tkaXY6bmV3IEUoMCksbW9kOnRoaXN9OjE9PT15Lmxlbmd0aD8iZGl2Ij09PXA/e2Rpdjp0aGlzLmRpdm4oeS53b3Jkc1swXSksbW9kOm51bGx9OiJtb2Qi''@;'; put 'put ''PT09cD97ZGl2Om51bGwsbW9kOm5ldyBFKHRoaXMubW9kcm4oeS53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bih5LndvcmRzWzBdKSxtb2Q6bmV3IEUodGhpcy5tb2Rybih5LndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoeSxwKTt2YXIgUSxyZSxmZX0sRS5wcm90b3R5cGUuZGl2PWZ1bmN0''@;'; put 'put ''aW9uKHkpe3JldHVybiB0aGlzLmRpdm1vZCh5LCJkaXYiLCExKS5kaXZ9LEUucHJvdG90eXBlLm1vZD1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5kaXZtb2QoeSwibW9kIiwhMSkubW9kfSxFLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmRpdm1vZCh5LCJtb2QiLCEw''@;'; put 'put ''KS5tb2R9LEUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHkpe3ZhciBwPXRoaXMuZGl2bW9kKHkpO2lmKHAubW9kLmlzWmVybygpKXJldHVybiBwLmRpdjt2YXIgUz0wIT09cC5kaXYubmVnYXRpdmU/cC5tb2QuaXN1Yih5KTpwLm1vZCxRPXkudXNocm4oMSkscmU9eS5hbmRsbigxKSxm''@;'; put 'put ''ZT1TLmNtcChRKTtyZXR1cm4gZmU8MHx8MT09PXJlJiYwPT09ZmU/cC5kaXY6MCE9PXAuZGl2Lm5lZ2F0aXZlP3AuZGl2LmlzdWJuKDEpOnAuZGl2LmlhZGRuKDEpfSxFLnByb3RvdHlwZS5tb2Rybj1mdW5jdGlvbih5KXt2YXIgcD15PDA7cCYmKHk9LXkpLEkoeTw9NjcxMDg4NjMpO2Zvcih2''@;'; put 'put ''YXIgUz02NzEwODg2NCV5LFE9MCxyZT10aGlzLmxlbmd0aC0xO3JlPj0wO3JlLS0pUT0oUypRKygwfHRoaXMud29yZHNbcmVdKSkleTtyZXR1cm4gcD8tUTpRfSxFLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLm1vZHJuKHkpfSxFLnByb3RvdHlwZS5pZGl2bj1mdW5j''@;'; put 'put ''dGlvbih5KXt2YXIgcD15PDA7cCYmKHk9LXkpLEkoeTw9NjcxMDg4NjMpO2Zvcih2YXIgUz0wLFE9dGhpcy5sZW5ndGgtMTtRPj0wO1EtLSl7dmFyIHJlPSgwfHRoaXMud29yZHNbUV0pKzY3MTA4ODY0KlM7dGhpcy53b3Jkc1tRXT1yZS95fDAsUz1yZSV5fXJldHVybiB0aGlzLl9zdHJpcCgp''@;'; put 'put ''LHA/dGhpcy5pbmVnKCk6dGhpc30sRS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHkpfSxFLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHkpe0koMD09PXkubmVnYXRpdmUpLEkoIXkuaXNaZXJvKCkpO3ZhciBwPXRoaXMsUz15LmNsb25lKCk7''@;'; put 'put ''cD0wIT09cC5uZWdhdGl2ZT9wLnVtb2QoeSk6cC5jbG9uZSgpO2Zvcih2YXIgUT1uZXcgRSgxKSxyZT1uZXcgRSgwKSxmZT1uZXcgRSgwKSxtZT1uZXcgRSgxKSxrZT0wO3AuaXNFdmVuKCkmJlMuaXNFdmVuKCk7KXAuaXVzaHJuKDEpLFMuaXVzaHJuKDEpLCsra2U7Zm9yKHZhciBUZT1TLmNs''@;'; put 'put ''b25lKCksUGU9cC5jbG9uZSgpOyFwLmlzWmVybygpOyl7Zm9yKHZhciBGZT0wLE5lPTE7IShwLndvcmRzWzBdJk5lKSYmRmU8MjY7KytGZSxOZTw8PTEpO2lmKEZlPjApZm9yKHAuaXVzaHJuKEZlKTtGZS0tID4wOykoUS5pc09kZCgpfHxyZS5pc09kZCgpKSYmKFEuaWFkZChUZSkscmUuaXN1''@;'; put 'put ''YihQZSkpLFEuaXVzaHJuKDEpLHJlLml1c2hybigxKTtmb3IodmFyIExlPTAsQmU9MTshKFMud29yZHNbMF0mQmUpJiZMZTwyNjsrK0xlLEJlPDw9MSk7aWYoTGU+MClmb3IoUy5pdXNocm4oTGUpO0xlLS0gPjA7KShmZS5pc09kZCgpfHxtZS5pc09kZCgpKSYmKGZlLmlhZGQoVGUpLG1lLmlz''@;'; put 'put ''dWIoUGUpKSxmZS5pdXNocm4oMSksbWUuaXVzaHJuKDEpO3AuY21wKFMpPj0wPyhwLmlzdWIoUyksUS5pc3ViKGZlKSxyZS5pc3ViKG1lKSk6KFMuaXN1YihwKSxmZS5pc3ViKFEpLG1lLmlzdWIocmUpKX1yZXR1cm57YTpmZSxiOm1lLGdjZDpTLml1c2hsbihrZSl9fSxFLnByb3RvdHlwZS5f''@;'; put 'put ''aW52bXA9ZnVuY3Rpb24oeSl7SSgwPT09eS5uZWdhdGl2ZSksSSgheS5pc1plcm8oKSk7dmFyIHA9dGhpcyxTPXkuY2xvbmUoKTtwPTAhPT1wLm5lZ2F0aXZlP3AudW1vZCh5KTpwLmNsb25lKCk7Zm9yKHZhciBRLHJlPW5ldyBFKDEpLGZlPW5ldyBFKDApLG1lPVMuY2xvbmUoKTtwLmNtcG4o''@;'; put 'put ''MSk+MCYmUy5jbXBuKDEpPjA7KXtmb3IodmFyIGtlPTAsVGU9MTshKHAud29yZHNbMF0mVGUpJiZrZTwyNjsrK2tlLFRlPDw9MSk7aWYoa2U+MClmb3IocC5pdXNocm4oa2UpO2tlLS0gPjA7KXJlLmlzT2RkKCkmJnJlLmlhZGQobWUpLHJlLml1c2hybigxKTtmb3IodmFyIFBlPTAsRmU9MTsh''@;'; put 'put ''KFMud29yZHNbMF0mRmUpJiZQZTwyNjsrK1BlLEZlPDw9MSk7aWYoUGU+MClmb3IoUy5pdXNocm4oUGUpO1BlLS0gPjA7KWZlLmlzT2RkKCkmJmZlLmlhZGQobWUpLGZlLml1c2hybigxKTtwLmNtcChTKT49MD8ocC5pc3ViKFMpLHJlLmlzdWIoZmUpKTooUy5pc3ViKHApLGZlLmlzdWIocmUp''@;'; put 'put ''KX1yZXR1cm4oUT0wPT09cC5jbXBuKDEpP3JlOmZlKS5jbXBuKDApPDAmJlEuaWFkZCh5KSxRfSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oeSl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4geS5hYnMoKTtpZih5LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBwPXRoaXMuY2xvbmUo''@;'; put 'put ''KSxTPXkuY2xvbmUoKTtwLm5lZ2F0aXZlPTAsUy5uZWdhdGl2ZT0wO2Zvcih2YXIgUT0wO3AuaXNFdmVuKCkmJlMuaXNFdmVuKCk7USsrKXAuaXVzaHJuKDEpLFMuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtwLmlzRXZlbigpOylwLml1c2hybigxKTtmb3IoO1MuaXNFdmVuKCk7KVMuaXVzaHJu''@;'; put 'put ''KDEpO3ZhciByZT1wLmNtcChTKTtpZihyZTwwKXt2YXIgZmU9cDtwPVMsUz1mZX1lbHNlIGlmKDA9PT1yZXx8MD09PVMuY21wbigxKSlicmVhaztwLmlzdWIoUyl9cmV0dXJuIFMuaXVzaGxuKFEpfSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmVnY2QoeSkuYS51''@;'; put 'put ''bW9kKHkpfSxFLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbih5KXtyZXR1cm4gdGhp''@;'; put 'put ''cy53b3Jkc1swXSZ5fSxFLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbih5KXtJKCJudW1iZXIiPT10eXBlb2YgeSk7dmFyIHA9eSUyNixTPSh5LXApLzI2LFE9MTw8cDtpZih0aGlzLmxlbmd0aDw9UylyZXR1cm4gdGhpcy5fZXhwYW5kKFMrMSksdGhpcy53b3Jkc1tTXXw9USx0aGlzO2Zvcih2''@;'; put 'put ''YXIgcmU9USxmZT1TOzAhPT1yZSYmZmU8dGhpcy5sZW5ndGg7ZmUrKyl7dmFyIG1lPTB8dGhpcy53b3Jkc1tmZV07cmU9KG1lKz1yZSk+Pj4yNix0aGlzLndvcmRzW2ZlXT1tZSY9NjcxMDg4NjN9cmV0dXJuIDAhPT1yZSYmKHRoaXMud29yZHNbZmVdPXJlLHRoaXMubGVuZ3RoKyspLHRoaXN9''@;'; put 'put ''LEUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxFLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHkpe3ZhciBwLFM9eTwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhUylyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSYmUylyZXR1cm4gMTtpZih0aGlzLl9zdHJpcCgpLHRoaXMubGVuZ3RoPjEpcD0xO2Vsc2V7UyYmKHk9LXkpLEkoeTw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIFE9MHx0aGlzLndvcmRzWzBdO3A9UT09PXk/MDpRPHk/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmU/MHwtcDpwfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oeSl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT15Lm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09eS5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgcD10aGlzLnVjbXAoeSk7cmV0dXJuIDAhPT10aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPzB8LXA6cH0sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbih5KXtpZih0aGlzLmxlbmd0aD55Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDx5Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHA9MCxTPXRoaXMubGVuZ3RoLTE7Uz49MDtTLS0pe3ZhciBRPTB8dGhpcy53''@;'; put 'put ''b3Jkc1tTXSxyZT0wfHkud29yZHNbU107aWYoUSE9PXJlKXtRPHJlP3A9LTE6UT5yZSYmKHA9MSk7YnJlYWt9fXJldHVybiBwfSxFLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oeSl7cmV0dXJuIDE9PT10aGlzLmNtcG4oeSl9LEUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHkpe3JldHVybiAxPT09''@;'; put 'put ''dGhpcy5jbXAoeSl9LEUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuY21wbih5KT49MH0sRS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNtcCh5KT49MH0sRS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHkpe3JldHVybi0xPT09dGhpcy5jbXBu''@;'; put 'put ''KHkpfSxFLnByb3RvdHlwZS5sdD1mdW5jdGlvbih5KXtyZXR1cm4tMT09PXRoaXMuY21wKHkpfSxFLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLmNtcG4oeSk8PTB9LEUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5jbXAoeSk8PTB9LEUucHJv''@;'; put 'put ''dG90eXBlLmVxbj1mdW5jdGlvbih5KXtyZXR1cm4gMD09PXRoaXMuY21wbih5KX0sRS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oeSl7cmV0dXJuIDA9PT10aGlzLmNtcCh5KX0sRS5yZWQ9ZnVuY3Rpb24oeSl7cmV0dXJuIG5ldyBDKHkpfSxFLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih5KXty''@;'; put 'put ''ZXR1cm4gSSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxJKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHkuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh5KX0sRS5wcm90b3R5cGUuZnJvbVJlZD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5yZWQ9eSx0''@;'; put 'put ''aGlzfSxFLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih5KXtyZXR1cm4gSSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZCh5KX0sRS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKHkpe3JldHVybiBJKHRoaXMucmVk''@;'; put 'put ''LCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMseSl9LEUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oeSl7cmV0dXJuIEkodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0''@;'; put 'put ''aGlzLHkpfSxFLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oeSl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyx5KX0sRS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbih5KXtyZXR1cm4gSSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMseSl9LEUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih5KXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0''@;'; put 'put ''aGlzLHkpfSxFLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oeSl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLHkpLHRoaXMucmVkLm11bCh0aGlzLHkpfSxFLnByb3RvdHlwZS5yZWRJTXVsPWZ1''@;'; put 'put ''bmN0aW9uKHkpe3JldHVybiBJKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx5KSx0aGlzLnJlZC5pbXVsKHRoaXMseSl9LEUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJz''@;'; put 'put ''IiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sRS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLnNxcnQodGhpcyl9LEUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRO''@;'; put 'put ''ZWc9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sRS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKHkpe3JldHVybiBJKHRoaXMucmVkJiYh''@;'; put 'put ''eS5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMseSl9O3ZhciBZPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gYih5LHApe3RoaXMubmFtZT15LHRoaXMucD1uZXcgRShw''@;'; put 'put ''LDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgRSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24geCgpe2IuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBOKCl7Yi5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIEYoKXtiLmNhbGwodGhpcywicDE5''@;'; put 'put ''MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gZygpe2IuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1m''@;'; put 'put ''dW5jdGlvbiBDKHkpe2lmKCJzdHJpbmciPT10eXBlb2YgeSl7dmFyIHA9RS5fcHJpbWUoeSk7dGhpcy5tPXAucCx0aGlzLnByaW1lPXB9ZWxzZSBJKHkuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09eSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gTSh5''@;'; put 'put ''KXtDLmNhbGwodGhpcyx5KSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBFKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRo''@;'; put 'put ''aXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWIucHJvdG90eXBlLl90bXA9''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgeT1uZXcgRShudWxsKTtyZXR1cm4geS53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHl9LGIucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oeSl7dmFyIHAsUz15O2Rve3RoaXMuc3BsaXQoUyx0aGlzLnRtcCkscD0oUz0oUz10aGlzLmltdWxL''@;'; put 'put ''KFMpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUocD50aGlzLm4pO3ZhciBRPXA8dGhpcy5uPy0xOlMudWNtcCh0aGlzLnApO3JldHVybiAwPT09UT8oUy53b3Jkc1swXT0wLFMubGVuZ3RoPTEpOlE+MD9TLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1TLnN0cmlwP1Muc3RyaXAo''@;'; put 'put ''KTpTLl9zdHJpcCgpLFN9LGIucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHkscCl7eS5pdXNocm4odGhpcy5uLDAscCl9LGIucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHkpe3JldHVybiB5LmltdWwodGhpcy5rKX0sUih4LGIpLHgucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHkscCl7Zm9y''@;'; put 'put ''KHZhciBTPTQxOTQzMDMsUT1NYXRoLm1pbih5Lmxlbmd0aCw5KSxyZT0wO3JlPFE7cmUrKylwLndvcmRzW3JlXT15LndvcmRzW3JlXTtpZihwLmxlbmd0aD1RLHkubGVuZ3RoPD05KXJldHVybiB5LndvcmRzWzBdPTAsdm9pZCh5Lmxlbmd0aD0xKTt2YXIgZmU9eS53b3Jkc1s5XTtmb3IocC53''@;'; put 'put ''b3Jkc1twLmxlbmd0aCsrXT1mZSZTLHJlPTEwO3JlPHkubGVuZ3RoO3JlKyspe3ZhciBtZT0wfHkud29yZHNbcmVdO3kud29yZHNbcmUtMTBdPShtZSZTKTw8NHxmZT4+PjIyLGZlPW1lfXkud29yZHNbcmUtMTBdPWZlPj4+PTIyLHkubGVuZ3RoLT0wPT09ZmUmJnkubGVuZ3RoPjEwPzEwOjl9''@;'; put 'put ''LHgucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHkpe3kud29yZHNbeS5sZW5ndGhdPTAseS53b3Jkc1t5Lmxlbmd0aCsxXT0wLHkubGVuZ3RoKz0yO2Zvcih2YXIgcD0wLFM9MDtTPHkubGVuZ3RoO1MrKyl7dmFyIFE9MHx5LndvcmRzW1NdO3kud29yZHNbU109NjcxMDg4NjMmKHArPTk3NypR''@;'; put 'put ''KSxwPTY0KlErKHAvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT15LndvcmRzW3kubGVuZ3RoLTFdJiYoeS5sZW5ndGgtLSwwPT09eS53b3Jkc1t5Lmxlbmd0aC0xXSYmeS5sZW5ndGgtLSkseX0sUihOLGIpLFIoRixiKSxSKGcsYiksZy5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oeSl7Zm9yKHZh''@;'; put 'put ''ciBwPTAsUz0wO1M8eS5sZW5ndGg7UysrKXt2YXIgUT0xOSooMHx5LndvcmRzW1NdKStwLHJlPTY3MTA4ODYzJlE7UT4+Pj0yNix5LndvcmRzW1NdPXJlLHA9UX1yZXR1cm4gMCE9PXAmJih5LndvcmRzW3kubGVuZ3RoKytdPXApLHl9LEUuX3ByaW1lPWZ1bmN0aW9uKHkpe2lmKFlbeV0pcmV0''@;'; put 'put ''dXJuIFlbeV07dmFyIHA7aWYoImsyNTYiPT09eSlwPW5ldyB4O2Vsc2UgaWYoInAyMjQiPT09eSlwPW5ldyBOO2Vsc2UgaWYoInAxOTIiPT09eSlwPW5ldyBGO2Vsc2V7aWYoInAyNTUxOSIhPT15KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK3kpO3A9bmV3IGd9cmV0dXJuIFlb''@;'; put 'put ''eV09cCxwfSxDLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih5KXtJKDA9PT15Lm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEkoeS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sQy5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24o''@;'; put 'put ''eSxwKXtJKDA9PSh5Lm5lZ2F0aXZlfHAubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEkoeS5yZWQmJnkucmVkPT09cC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sQy5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih5KXtyZXR1cm4gdGhp''@;'; put 'put ''cy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoeSkuX2ZvcmNlUmVkKHRoaXMpOihXKHkseS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKSx5KX0sQy5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHkpe3JldHVybiB5LmlzWmVybygpP3kuY2xvbmUoKTp0aGlzLm0uc3ViKHkpLl9mb3JjZVJl''@;'; put 'put ''ZCh0aGlzKX0sQy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHkscCl7dGhpcy5fdmVyaWZ5Mih5LHApO3ZhciBTPXkuYWRkKHApO3JldHVybiBTLmNtcCh0aGlzLm0pPj0wJiZTLmlzdWIodGhpcy5tKSxTLl9mb3JjZVJlZCh0aGlzKX0sQy5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih5LHApe3Ro''@;'; put 'put ''aXMuX3ZlcmlmeTIoeSxwKTt2YXIgUz15LmlhZGQocCk7cmV0dXJuIFMuY21wKHRoaXMubSk+PTAmJlMuaXN1Yih0aGlzLm0pLFN9LEMucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih5LHApe3RoaXMuX3ZlcmlmeTIoeSxwKTt2YXIgUz15LnN1YihwKTtyZXR1cm4gUy5jbXBuKDApPDAmJlMuaWFk''@;'; put 'put ''ZCh0aGlzLm0pLFMuX2ZvcmNlUmVkKHRoaXMpfSxDLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHkscCl7dGhpcy5fdmVyaWZ5Mih5LHApO3ZhciBTPXkuaXN1YihwKTtyZXR1cm4gUy5jbXBuKDApPDAmJlMuaWFkZCh0aGlzLm0pLFN9LEMucHJvdG90eXBlLnNobD1mdW5jdGlvbih5LHApe3Jl''@;'; put 'put ''dHVybiB0aGlzLl92ZXJpZnkxKHkpLHRoaXMuaW1vZCh5LnVzaGxuKHApKX0sQy5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih5LHApe3JldHVybiB0aGlzLl92ZXJpZnkyKHkscCksdGhpcy5pbW9kKHkuaW11bChwKSl9LEMucHJvdG90eXBlLm11bD1mdW5jdGlvbih5LHApe3JldHVybiB0aGlz''@;'; put 'put ''Ll92ZXJpZnkyKHkscCksdGhpcy5pbW9kKHkubXVsKHApKX0sQy5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5pbXVsKHkseS5jbG9uZSgpKX0sQy5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLm11bCh5LHkpfSxDLnByb3RvdHlwZS5zcXJ0PWZ1''@;'; put 'put ''bmN0aW9uKHkpe2lmKHkuaXNaZXJvKCkpcmV0dXJuIHkuY2xvbmUoKTt2YXIgcD10aGlzLm0uYW5kbG4oMyk7aWYoSShwJTI9PTEpLDM9PT1wKXt2YXIgUz10aGlzLm0uYWRkKG5ldyBFKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHksUyl9Zm9yKHZhciBRPXRoaXMubS5zdWJuKDEp''@;'; put 'put ''LHJlPTA7IVEuaXNaZXJvKCkmJjA9PT1RLmFuZGxuKDEpOylyZSsrLFEuaXVzaHJuKDEpO0koIVEuaXNaZXJvKCkpO3ZhciBmZT1uZXcgRSgxKS50b1JlZCh0aGlzKSxtZT1mZS5yZWROZWcoKSxrZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksVGU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihU''@;'; put 'put ''ZT1uZXcgRSgyKlRlKlRlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coVGUsa2UpLmNtcChtZSk7KVRlLnJlZElBZGQobWUpO2Zvcih2YXIgUGU9dGhpcy5wb3coVGUsUSksRmU9dGhpcy5wb3coeSxRLmFkZG4oMSkuaXVzaHJuKDEpKSxOZT10aGlzLnBvdyh5LFEpLExlPXJlOzAhPT1OZS5j''@;'; put 'put ''bXAoZmUpOyl7Zm9yKHZhciBCZT1OZSxIZT0wOzAhPT1CZS5jbXAoZmUpO0hlKyspQmU9QmUucmVkU3FyKCk7SShIZTxMZSk7dmFyIFFlPXRoaXMucG93KFBlLG5ldyBFKDEpLml1c2hsbihMZS1IZS0xKSk7RmU9RmUucmVkTXVsKFFlKSxQZT1RZS5yZWRTcXIoKSxOZT1OZS5yZWRNdWwoUGUp''@;'; put 'put ''LExlPUhlfXJldHVybiBGZX0sQy5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih5KXt2YXIgcD15Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09cC5uZWdhdGl2ZT8ocC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChwKS5yZWROZWcoKSk6dGhpcy5pbW9kKHApfSxDLnByb3RvdHlwZS5wb3c9ZnVuY3Rp''@;'; put 'put ''b24oeSxwKXtpZihwLmlzWmVybygpKXJldHVybiBuZXcgRSgxKS50b1JlZCh0aGlzKTtpZigwPT09cC5jbXBuKDEpKXJldHVybiB5LmNsb25lKCk7dmFyIFM9bmV3IEFycmF5KDE2KTtTWzBdPW5ldyBFKDEpLnRvUmVkKHRoaXMpLFNbMV09eTtmb3IodmFyIFE9MjtRPFMubGVuZ3RoO1ErKylT''@;'; put 'put ''W1FdPXRoaXMubXVsKFNbUS0xXSx5KTt2YXIgcmU9U1swXSxmZT0wLG1lPTAsa2U9cC5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PWtlJiYoa2U9MjYpLFE9cC5sZW5ndGgtMTtRPj0wO1EtLSl7Zm9yKHZhciBUZT1wLndvcmRzW1FdLFBlPWtlLTE7UGU+PTA7UGUtLSl7dmFyIEZlPVRlPj5QZSYx''@;'; put 'put ''O3JlIT09U1swXSYmKHJlPXRoaXMuc3FyKHJlKSksMCE9PUZlfHwwIT09ZmU/KGZlPDw9MSxmZXw9RmUsKDQ9PSsrbWV8fDA9PT1RJiYwPT09UGUpJiYocmU9dGhpcy5tdWwocmUsU1tmZV0pLG1lPTAsZmU9MCkpOm1lPTB9a2U9MjZ9cmV0dXJuIHJlfSxDLnByb3RvdHlwZS5jb252ZXJ0VG89''@;'; put 'put ''ZnVuY3Rpb24oeSl7dmFyIHA9eS51bW9kKHRoaXMubSk7cmV0dXJuIHA9PT15P3AuY2xvbmUoKTpwfSxDLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih5KXt2YXIgcD15LmNsb25lKCk7cmV0dXJuIHAucmVkPW51bGwscH0sRS5tb250PWZ1bmN0aW9uKHkpe3JldHVybiBuZXcgTSh5''@;'; put 'put ''KX0sUihNLEMpLE0ucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih5KXtyZXR1cm4gdGhpcy5pbW9kKHkudXNobG4odGhpcy5zaGlmdCkpfSxNLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih5KXt2YXIgcD10aGlzLmltb2QoeS5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHAucmVk''@;'; put 'put ''PW51bGwscH0sTS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih5LHApe2lmKHkuaXNaZXJvKCl8fHAuaXNaZXJvKCkpcmV0dXJuIHkud29yZHNbMF09MCx5Lmxlbmd0aD0xLHk7dmFyIFM9eS5pbXVsKHApLFE9Uy5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5z''@;'; put 'put ''aGlmdCkubXVsKHRoaXMubSkscmU9Uy5pc3ViKFEpLml1c2hybih0aGlzLnNoaWZ0KSxmZT1yZTtyZXR1cm4gcmUuY21wKHRoaXMubSk+PTA/ZmU9cmUuaXN1Yih0aGlzLm0pOnJlLmNtcG4oMCk8MCYmKGZlPXJlLmlhZGQodGhpcy5tKSksZmUuX2ZvcmNlUmVkKHRoaXMpfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5tdWw9ZnVuY3Rpb24oeSxwKXtpZih5LmlzWmVybygpfHxwLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIFM9eS5tdWwocCksUT1TLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxyZT1T''@;'; put 'put ''LmlzdWIoUSkuaXVzaHJuKHRoaXMuc2hpZnQpLGZlPXJlO3JldHVybiByZS5jbXAodGhpcy5tKT49MD9mZT1yZS5pc3ViKHRoaXMubSk6cmUuY21wbigwKTwwJiYoZmU9cmUuaWFkZCh0aGlzLm0pKSxmZS5fZm9yY2VSZWQodGhpcyl9LE0ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oeSl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaW1vZCh5Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sMzY0NDooSCxCLEwpPT57dmFyIEs9TCgxMDQ4KSxKPUwoNTYyMyk7SC5leHBvcnRzPWZ1bmN0aW9uKGxlKXtyZXR1cm4gbGU/KCJ7fSI9PT1sZS5z''@;'; put 'put ''dWJzdHIoMCwyKSYmKGxlPSJcXHtcXH0iK2xlLnN1YnN0cigyKSksaWUoKGRlPWxlLGRlLnNwbGl0KCJcXFxcIikuam9pbihJKS5zcGxpdCgiXFx7Iikuam9pbihSKS5zcGxpdCgiXFx9Iikuam9pbihFKS5zcGxpdCgiXFwsIikuam9pbih6KS5zcGxpdCgiXFwuIikuam9pbihqKSksITApLm1h''@;'; put 'put ''cChHKSk6W107dmFyIGRlfTt2YXIgST0iXDBTTEFTSCIrTWF0aC5yYW5kb20oKSsiXDAiLFI9IlwwT1BFTiIrTWF0aC5yYW5kb20oKSsiXDAiLEU9IlwwQ0xPU0UiK01hdGgucmFuZG9tKCkrIlwwIix6PSJcMENPTU1BIitNYXRoLnJhbmRvbSgpKyJcMCIsaj0iXDBQRVJJT0QiK01hdGgucmFu''@;'; put 'put ''ZG9tKCkrIlwwIjtmdW5jdGlvbiBWKGxlKXtyZXR1cm4gcGFyc2VJbnQobGUsMTApPT1sZT9wYXJzZUludChsZSwxMCk6bGUuY2hhckNvZGVBdCgwKX1mdW5jdGlvbiBHKGxlKXtyZXR1cm4gbGUuc3BsaXQoSSkuam9pbigiXFwiKS5zcGxpdChSKS5qb2luKCJ7Iikuc3BsaXQoRSkuam9pbigi''@;'; put 'put ''fSIpLnNwbGl0KHopLmpvaW4oIiwiKS5zcGxpdChqKS5qb2luKCIuIil9ZnVuY3Rpb24gVyhsZSl7aWYoIWxlKXJldHVyblsiIl07dmFyIGRlPVtdLHVlPUooInsiLCJ9IixsZSk7aWYoIXVlKXJldHVybiBsZS5zcGxpdCgiLCIpO3ZhciBZPXVlLmJvZHksYj11ZS5wb3N0LHg9dWUucHJlLnNw''@;'; put 'put ''bGl0KCIsIik7eFt4Lmxlbmd0aC0xXSs9InsiK1krIn0iO3ZhciBOPVcoYik7cmV0dXJuIGIubGVuZ3RoJiYoeFt4Lmxlbmd0aC0xXSs9Ti5zaGlmdCgpLHgucHVzaC5hcHBseSh4LE4pKSxkZS5wdXNoLmFwcGx5KGRlLHgpLGRlfWZ1bmN0aW9uIFUobGUpe3JldHVybiJ7IitsZSsifSJ9ZnVu''@;'; put 'put ''Y3Rpb24gcShsZSl7cmV0dXJuL14tPzBcZC8udGVzdChsZSl9ZnVuY3Rpb24gdGUobGUsZGUpe3JldHVybiBsZTw9ZGV9ZnVuY3Rpb24gbmUobGUsZGUpe3JldHVybiBsZT49ZGV9ZnVuY3Rpb24gaWUobGUsZGUpe3ZhciB1ZT1bXSxjZT1KKCJ7IiwifSIsbGUpO2lmKCFjZXx8L1wkJC8udGVz''@;'; put 'put ''dChjZS5wcmUpKXJldHVybltsZV07dmFyIFksYj0vXi0/XGQrXC5cLi0/XGQrKD86XC5cLi0/XGQrKT8kLy50ZXN0KGNlLmJvZHkpLHg9L15bYS16QS1aXVwuXC5bYS16QS1aXSg/OlwuXC4tP1xkKyk/JC8udGVzdChjZS5ib2R5KSxOPWJ8fHgsRj1jZS5ib2R5LmluZGV4T2YoIiwiKT49MDtp''@;'; put 'put ''ZighTiYmIUYpcmV0dXJuIGNlLnBvc3QubWF0Y2goLywuKlx9Lyk/aWUobGU9Y2UucHJlKyJ7IitjZS5ib2R5K0UrY2UucG9zdCk6W2xlXTtpZihOKVk9Y2UuYm9keS5zcGxpdCgvXC5cLi8pO2Vsc2UgaWYoMT09PShZPVcoY2UuYm9keSkpLmxlbmd0aCYmMT09PShZPWllKFlbMF0sITEpLm1h''@;'; put 'put ''cChVKSkubGVuZ3RoKXJldHVybihNPWNlLnBvc3QubGVuZ3RoP2llKGNlLnBvc3QsITEpOlsiIl0pLm1hcChmdW5jdGlvbihCZSl7cmV0dXJuIGNlLnByZStZWzBdK0JlfSk7dmFyIGcsQz1jZS5wcmUsTT1jZS5wb3N0Lmxlbmd0aD9pZShjZS5wb3N0LCExKTpbIiJdO2lmKE4pe3ZhciB5PVYo''@;'; put 'put ''WVswXSkscD1WKFlbMV0pLFM9TWF0aC5tYXgoWVswXS5sZW5ndGgsWVsxXS5sZW5ndGgpLFE9Mz09WS5sZW5ndGg/TWF0aC5hYnMoVihZWzJdKSk6MSxyZT10ZTtwPHkmJihRKj0tMSxyZT1uZSk7dmFyIGZlPVkuc29tZShxKTtnPVtdO2Zvcih2YXIgbWU9eTtyZShtZSxwKTttZSs9USl7dmFy''@;'; put 'put ''IGtlO2lmKHgpIlxcIj09PShrZT1TdHJpbmcuZnJvbUNoYXJDb2RlKG1lKSkmJihrZT0iIik7ZWxzZSBpZihrZT1TdHJpbmcobWUpLGZlKXt2YXIgVGU9Uy1rZS5sZW5ndGg7aWYoVGU+MCl7dmFyIFBlPW5ldyBBcnJheShUZSsxKS5qb2luKCIwIik7a2U9bWU8MD8iLSIrUGUra2Uuc2xpY2Uo''@;'; put 'put ''MSk6UGUra2V9fWcucHVzaChrZSl9fWVsc2UgZz1LKFksZnVuY3Rpb24oQmUpe3JldHVybiBpZShCZSwhMSl9KTtmb3IodmFyIEZlPTA7RmU8Zy5sZW5ndGg7RmUrKylmb3IodmFyIE5lPTA7TmU8TS5sZW5ndGg7TmUrKyl7dmFyIExlPUMrZ1tGZV0rTVtOZV07KCFkZXx8Tnx8TGUpJiZ1ZS5w''@;'; put 'put ''dXNoKExlKX1yZXR1cm4gdWV9fSw5OTMxOihILEIsTCk9Pnt2YXIgSztmdW5jdGlvbiBKKFIpe3RoaXMucmFuZD1SfWlmKEguZXhwb3J0cz1mdW5jdGlvbihSKXtyZXR1cm4gS3x8KEs9bmV3IEoobnVsbCkpLEsuZ2VuZXJhdGUoUil9LEguZXhwb3J0cy5SYW5kPUosSi5wcm90b3R5cGUuZ2Vu''@;'; put 'put ''ZXJhdGU9ZnVuY3Rpb24oUil7cmV0dXJuIHRoaXMuX3JhbmQoUil9LEoucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFIpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKFIpO2Zvcih2YXIgRT1uZXcgVWludDhBcnJheShSKSx6PTA7ejxFLmxlbmd0aDt6''@;'; put 'put ''KyspRVt6XT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiBFfSwib2JqZWN0Ij09dHlwZW9mIHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9KLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihSKXt2YXIgRT1uZXcgVWludDhBcnJheShSKTtyZXR1cm4gc2Vs''@;'; put 'put ''Zi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKEUpLEV9OnNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP0oucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFIpe3ZhciBFPW5ldyBVaW50OEFycmF5KFIpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVl''@;'; put 'put ''cyhFKSxFfToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKEoucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgST1MKDkyMTQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBJLnJhbmRvbUJ5dGVzKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCIpO0oucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKFIpe3JldHVybiBJLnJhbmRvbUJ5dGVzKFIpfX1jYXRjaHt9fSw0NDk3OihILEIsTCk9Pnt2YXIgSz1MKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBKKFYpe0suaXNCdWZmZXIoVil8fChWPUsu''@;'; put 'put ''ZnJvbShWKSk7Zm9yKHZhciBHPVYubGVuZ3RoLzR8MCxXPW5ldyBBcnJheShHKSxVPTA7VTxHO1UrKylXW1VdPVYucmVhZFVJbnQzMkJFKDQqVSk7cmV0dXJuIFd9ZnVuY3Rpb24gSShWKXtmb3IoOzA8Vi5sZW5ndGg7VisrKVZbMF09MH1mdW5jdGlvbiBSKFYsRyxXLFUscSl7Zm9yKHZhciB0''@;'; put 'put ''ZSxuZSxpZSxsZSxkZT1XWzBdLHVlPVdbMV0sY2U9V1syXSxZPVdbM10sYj1WWzBdXkdbMF0seD1WWzFdXkdbMV0sTj1WWzJdXkdbMl0sRj1WWzNdXkdbM10sZz00LEM9MTtDPHE7QysrKXRlPWRlW2I+Pj4yNF1edWVbeD4+PjE2JjI1NV1eY2VbTj4+PjgmMjU1XV5ZWzI1NSZGXV5HW2crK10s''@;'; put 'put ''bmU9ZGVbeD4+PjI0XV51ZVtOPj4+MTYmMjU1XV5jZVtGPj4+OCYyNTVdXllbMjU1JmJdXkdbZysrXSxpZT1kZVtOPj4+MjRdXnVlW0Y+Pj4xNiYyNTVdXmNlW2I+Pj44JjI1NV1eWVsyNTUmeF1eR1tnKytdLGxlPWRlW0Y+Pj4yNF1edWVbYj4+PjE2JjI1NV1eY2VbeD4+PjgmMjU1XV5ZWzI1''@;'; put 'put ''NSZOXV5HW2crK10sYj10ZSx4PW5lLE49aWUsRj1sZTtyZXR1cm4gdGU9KFVbYj4+PjI0XTw8MjR8VVt4Pj4+MTYmMjU1XTw8MTZ8VVtOPj4+OCYyNTVdPDw4fFVbMjU1JkZdKV5HW2crK10sbmU9KFVbeD4+PjI0XTw8MjR8VVtOPj4+MTYmMjU1XTw8MTZ8VVtGPj4+OCYyNTVdPDw4fFVbMjU1''@;'; put 'put ''JmJdKV5HW2crK10saWU9KFVbTj4+PjI0XTw8MjR8VVtGPj4+MTYmMjU1XTw8MTZ8VVtiPj4+OCYyNTVdPDw4fFVbMjU1JnhdKV5HW2crK10sbGU9KFVbRj4+PjI0XTw8MjR8VVtiPj4+MTYmMjU1XTw8MTZ8VVt4Pj4+OCYyNTVdPDw4fFVbMjU1Jk5dKV5HW2crK10sW3RlPj4+PTAsbmU+Pj49''@;'; put 'put ''MCxpZT4+Pj0wLGxlPj4+PTBdfXZhciBFPVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSx6PWZ1bmN0aW9uKCl7Zm9yKHZhciBWPW5ldyBBcnJheSgyNTYpLEc9MDtHPDI1NjtHKyspVltHXT1HPDEyOD9HPDwxOkc8PDFeMjgzO2Zvcih2YXIgVz1bXSxVPVtdLHE9W1tdLFtdLFtdLFtd''@;'; put 'put ''XSx0ZT1bW10sW10sW10sW11dLG5lPTAsaWU9MCxsZT0wO2xlPDI1NjsrK2xlKXt2YXIgZGU9aWVeaWU8PDFeaWU8PDJeaWU8PDNeaWU8PDQ7V1tuZV09ZGU9ZGU+Pj44XjI1NSZkZV45OSxVW2RlXT1uZTt2YXIgdWU9VltuZV0sY2U9Vlt1ZV0sWT1WW2NlXSxiPTI1NypWW2RlXV4xNjg0MzAw''@;'; put 'put ''OCpkZTtxWzBdW25lXT1iPDwyNHxiPj4+OCxxWzFdW25lXT1iPDwxNnxiPj4+MTYscVsyXVtuZV09Yjw8OHxiPj4+MjQscVszXVtuZV09Yix0ZVswXVtkZV09KGI9MTY4NDMwMDkqWV42NTUzNypjZV4yNTcqdWVeMTY4NDMwMDgqbmUpPDwyNHxiPj4+OCx0ZVsxXVtkZV09Yjw8MTZ8Yj4+PjE2''@;'; put 'put ''LHRlWzJdW2RlXT1iPDw4fGI+Pj4yNCx0ZVszXVtkZV09YiwwPT09bmU/bmU9aWU9MToobmU9dWVeVltWW1ZbWV51ZV1dXSxpZV49VltWW2llXV0pfXJldHVybntTQk9YOlcsSU5WX1NCT1g6VSxTVUJfTUlYOnEsSU5WX1NVQl9NSVg6dGV9fSgpO2Z1bmN0aW9uIGooVil7dGhpcy5fa2V5PUoo''@;'; put 'put ''ViksdGhpcy5fcmVzZXQoKX1qLmJsb2NrU2l6ZT0xNixqLmtleVNpemU9MzIsai5wcm90b3R5cGUuYmxvY2tTaXplPWouYmxvY2tTaXplLGoucHJvdG90eXBlLmtleVNpemU9ai5rZXlTaXplLGoucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgVj10aGlzLl9rZXksRz1WLmxl''@;'; put 'put ''bmd0aCxXPUcrNixVPTQqKFcrMSkscT1bXSx0ZT0wO3RlPEc7dGUrKylxW3RlXT1WW3RlXTtmb3IodGU9Rzt0ZTxVO3RlKyspe3ZhciBuZT1xW3RlLTFdO3RlJUc9PTA/KG5lPXouU0JPWFsobmU9bmU8PDh8bmU+Pj4yNCk+Pj4yNF08PDI0fHouU0JPWFtuZT4+PjE2JjI1NV08PDE2fHouU0JP''@;'; put 'put ''WFtuZT4+PjgmMjU1XTw8OHx6LlNCT1hbMjU1Jm5lXSxuZV49RVt0ZS9HfDBdPDwyNCk6Rz42JiZ0ZSVHPT00JiYobmU9ei5TQk9YW25lPj4+MjRdPDwyNHx6LlNCT1hbbmU+Pj4xNiYyNTVdPDwxNnx6LlNCT1hbbmU+Pj44JjI1NV08PDh8ei5TQk9YWzI1NSZuZV0pLHFbdGVdPXFbdGUtR11e''@;'; put 'put ''bmV9Zm9yKHZhciBpZT1bXSxsZT0wO2xlPFU7bGUrKyl7dmFyIGRlPVUtbGUsdWU9cVtkZS0obGUlND8wOjQpXTtpZVtsZV09bGU8NHx8ZGU8PTQ/dWU6ei5JTlZfU1VCX01JWFswXVt6LlNCT1hbdWU+Pj4yNF1dXnouSU5WX1NVQl9NSVhbMV1bei5TQk9YW3VlPj4+MTYmMjU1XV1eei5JTlZf''@;'; put 'put ''U1VCX01JWFsyXVt6LlNCT1hbdWU+Pj44JjI1NV1dXnouSU5WX1NVQl9NSVhbM11bei5TQk9YWzI1NSZ1ZV1dfXRoaXMuX25Sb3VuZHM9Vyx0aGlzLl9rZXlTY2hlZHVsZT1xLHRoaXMuX2ludktleVNjaGVkdWxlPWllfSxqLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24oVil7''@;'; put 'put ''cmV0dXJuIFIoVj1KKFYpLHRoaXMuX2tleVNjaGVkdWxlLHouU1VCX01JWCx6LlNCT1gsdGhpcy5fblJvdW5kcyl9LGoucHJvdG90eXBlLmVuY3J5cHRCbG9jaz1mdW5jdGlvbihWKXt2YXIgRz10aGlzLmVuY3J5cHRCbG9ja1JhdyhWKSxXPUsuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBXLndy''@;'; put 'put ''aXRlVUludDMyQkUoR1swXSwwKSxXLndyaXRlVUludDMyQkUoR1sxXSw0KSxXLndyaXRlVUludDMyQkUoR1syXSw4KSxXLndyaXRlVUludDMyQkUoR1szXSwxMiksV30sai5wcm90b3R5cGUuZGVjcnlwdEJsb2NrPWZ1bmN0aW9uKFYpe3ZhciBHPShWPUooVikpWzFdO1ZbMV09VlszXSxWWzNd''@;'; put 'put ''PUc7dmFyIFc9UihWLHRoaXMuX2ludktleVNjaGVkdWxlLHouSU5WX1NVQl9NSVgsei5JTlZfU0JPWCx0aGlzLl9uUm91bmRzKSxVPUsuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBVLndyaXRlVUludDMyQkUoV1swXSwwKSxVLndyaXRlVUludDMyQkUoV1szXSw0KSxVLndyaXRlVUludDMyQkUo''@;'; put 'put ''V1syXSw4KSxVLndyaXRlVUludDMyQkUoV1sxXSwxMiksVX0sai5wcm90b3R5cGUuc2NydWI9ZnVuY3Rpb24oKXtJKHRoaXMuX2tleVNjaGVkdWxlKSxJKHRoaXMuX2ludktleVNjaGVkdWxlKSxJKHRoaXMuX2tleSl9LEguZXhwb3J0cy5BRVM9an0sNDg0ODooSCxCLEwpPT57dmFyIEs9TCg0''@;'; put 'put ''NDk3KSxKPUwoOTUwOSkuQnVmZmVyLEk9TCgxMDI3KSxSPUwoNTcxNyksRT1MKDMyODgpLHo9TCg3Mjk1KSxqPUwoNjg1KTtmdW5jdGlvbiBWKEcsVyxVLHEpe0kuY2FsbCh0aGlzKTt2YXIgdGU9Si5hbGxvYyg0LDApO3RoaXMuX2NpcGhlcj1uZXcgSy5BRVMoVyk7dmFyIG5lPXRoaXMuX2Np''@;'; put 'put ''cGhlci5lbmNyeXB0QmxvY2sodGUpO3RoaXMuX2doYXNoPW5ldyBFKG5lKSxVPWZ1bmN0aW9uKGllLGxlLGRlKXtpZigxMj09PWxlLmxlbmd0aClyZXR1cm4gaWUuX2ZpbklEPUouY29uY2F0KFtsZSxKLmZyb20oWzAsMCwwLDFdKV0pLEouY29uY2F0KFtsZSxKLmZyb20oWzAsMCwwLDJdKV0p''@;'; put 'put ''O3ZhciB1ZT1uZXcgRShkZSksY2U9bGUubGVuZ3RoLFk9Y2UlMTY7dWUudXBkYXRlKGxlKSxZJiZ1ZS51cGRhdGUoSi5hbGxvYyhZPTE2LVksMCkpLHVlLnVwZGF0ZShKLmFsbG9jKDgsMCkpO3ZhciBiPTgqY2UseD1KLmFsbG9jKDgpO3gud3JpdGVVSW50QkUoYiwwLDgpLHVlLnVwZGF0ZSh4''@;'; put 'put ''KSxpZS5fZmluSUQ9dWUuc3RhdGU7dmFyIE49Si5mcm9tKGllLl9maW5JRCk7cmV0dXJuIGooTiksTn0odGhpcyxVLG5lKSx0aGlzLl9wcmV2PUouZnJvbShVKSx0aGlzLl9jYWNoZT1KLmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPUouYWxsb2NVbnNhZmUoMCksdGhpcy5fZGVjcnlw''@;'; put 'put ''dD1xLHRoaXMuX2FsZW49MCx0aGlzLl9sZW49MCx0aGlzLl9tb2RlPUcsdGhpcy5fYXV0aFRhZz1udWxsLHRoaXMuX2NhbGxlZD0hMX1SKFYsSSksVi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihHKXtpZighdGhpcy5fY2FsbGVkJiZ0aGlzLl9hbGVuKXt2YXIgVz0xNi10aGlzLl9hbGVu''@;'; put 'put ''JTE2O1c8MTYmJihXPUouYWxsb2MoVywwKSx0aGlzLl9naGFzaC51cGRhdGUoVykpfXRoaXMuX2NhbGxlZD0hMDt2YXIgVT10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxHKTtyZXR1cm4gdGhpcy5fZ2hhc2gudXBkYXRlKHRoaXMuX2RlY3J5cHQ/RzpVKSx0aGlzLl9sZW4rPUcubGVuZ3RoLFV9''@;'; put 'put ''LFYucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dmFyIEc9eih0aGlzLl9naGFzaC5maW5hbCg4KnRoaXMu''@;'; put 'put ''X2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlzLl9kZWNyeXB0JiZmdW5jdGlvbihXLFUpe3ZhciBxPTA7Vy5sZW5ndGghPT1VLmxlbmd0aCYmcSsrO2Zvcih2YXIgdGU9TWF0aC5taW4oVy5sZW5ndGgsVS5sZW5ndGgpLG5l''@;'; put 'put ''PTA7bmU8dGU7KytuZSlxKz1XW25lXV5VW25lXTtyZXR1cm4gcX0oRyx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3RoaXMuX2F1dGhUYWc9Ryx0aGlzLl9jaXBoZXIuc2NydWIoKX0sVi5w''@;'; put 'put ''cm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHR8fCFKLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTtyZXR1cm4gdGhpcy5fYXV0aFRhZ30s''@;'; put 'put ''Vi5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbihHKXtpZighdGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fYXV0aFRhZz1HfSxWLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24o''@;'; put 'put ''Ryl7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7dGhpcy5fZ2hhc2gudXBkYXRlKEcpLHRoaXMuX2FsZW4rPUcubGVuZ3RofSxILmV4cG9ydHM9Vn0sNDY5NjooSCxCLEwpPT57dmFyIEs9TCgxNDk0''@;'; put 'put ''KSxKPUwoNjE5MyksST1MKDQ5NDYpO0IuY3JlYXRlQ2lwaGVyPUIuQ2lwaGVyPUsuY3JlYXRlQ2lwaGVyLEIuY3JlYXRlQ2lwaGVyaXY9Qi5DaXBoZXJpdj1LLmNyZWF0ZUNpcGhlcml2LEIuY3JlYXRlRGVjaXBoZXI9Qi5EZWNpcGhlcj1KLmNyZWF0ZURlY2lwaGVyLEIuY3JlYXRlRGVjaXBo''@;'; put 'put ''ZXJpdj1CLkRlY2lwaGVyaXY9Si5jcmVhdGVEZWNpcGhlcml2LEIubGlzdENpcGhlcnM9Qi5nZXRDaXBoZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKEkpfX0sNjE5MzooSCxCLEwpPT57dmFyIEs9TCg0ODQ4KSxKPUwoOTUwOSkuQnVmZmVyLEk9TCg0NSksUj1MKDU5NjkpLEU9''@;'; put 'put ''TCgxMDI3KSx6PUwoNDQ5Nyksaj1MKDMwNDgpO2Z1bmN0aW9uIFYoVSxxLHRlKXtFLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IEcsdGhpcy5fbGFzdD12b2lkIDAsdGhpcy5fY2lwaGVyPW5ldyB6LkFFUyhxKSx0aGlzLl9wcmV2PUouZnJvbSh0ZSksdGhpcy5fbW9kZT1VLHRoaXMuX2F1''@;'; put 'put ''dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIEcoKXt0aGlzLmNhY2hlPUouYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gVyhVLHEsdGUpe3ZhciBuZT1JW1UudG9Mb3dlckNhc2UoKV07aWYoIW5lKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgdGUmJih0ZT1KLmZyb20odGUpKSwiR0NNIiE9PW5lLm1vZGUmJnRlLmxlbmd0aCE9PW5lLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrdGUubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIHEmJihxPUouZnJvbShxKSkscS5sZW5ndGghPT1uZS5rZXkv''@;'; put 'put ''OCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIitxLmxlbmd0aCk7cmV0dXJuInN0cmVhbSI9PT1uZS50eXBlP25ldyBSKG5lLm1vZHVsZSxxLHRlLCEwKToiYXV0aCI9PT1uZS50eXBlP25ldyBLKG5lLm1vZHVsZSxxLHRlLCEwKTpuZXcgVihuZS5tb2R1bGUscSx0''@;'; put 'put ''ZSl9TCg1NzE3KShWLEUpLFYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVSl7dmFyIHEsdGU7dGhpcy5fY2FjaGUuYWRkKFUpO2Zvcih2YXIgbmU9W107cT10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOyl0ZT10aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxxKSxuZS5wdXNo''@;'; put 'put ''KHRlKTtyZXR1cm4gSi5jb25jYXQobmUpfSxWLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgVT10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBmdW5jdGlvbihxKXt2YXIgdGU9cVsxNV07aWYodGU8MXx8dGU+MTYpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7Zm9yKHZhciBuZT0tMTsrK25lPHRlOylpZihxW25lKygxNi10ZSldIT09dGUpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTYhPT10ZSlyZXR1cm4gcS5zbGljZSgwLDE2LXRlKX0odGhpcy5fbW9kZS5kZWNy''@;'; put 'put ''eXB0KHRoaXMsVSkpO2lmKFUpdGhyb3cgbmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sVi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oVSl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhVSx0aGlzfSxHLnByb3RvdHlwZS5hZGQ9ZnVu''@;'; put 'put ''Y3Rpb24oVSl7dGhpcy5jYWNoZT1KLmNvbmNhdChbdGhpcy5jYWNoZSxVXSl9LEcucHJvdG90eXBlLmdldD1mdW5jdGlvbihVKXt2YXIgcTtpZihVKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNilyZXR1cm4gcT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5z''@;'; put 'put ''bGljZSgxNikscX1lbHNlIGlmKHRoaXMuY2FjaGUubGVuZ3RoPj0xNilyZXR1cm4gcT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNikscTtyZXR1cm4gbnVsbH0sRy5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxl''@;'; put 'put ''bmd0aClyZXR1cm4gdGhpcy5jYWNoZX0sQi5jcmVhdGVEZWNpcGhlcj1mdW5jdGlvbihVLHEpe3ZhciB0ZT1JW1UudG9Mb3dlckNhc2UoKV07aWYoIXRlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBuZT1qKHEsITEsdGUua2V5LHRlLml2KTtyZXR1cm4g''@;'; put 'put ''VyhVLG5lLmtleSxuZS5pdil9LEIuY3JlYXRlRGVjaXBoZXJpdj1XfSwxNDk0OihILEIsTCk9Pnt2YXIgSz1MKDQ1KSxKPUwoNDg0OCksST1MKDk1MDkpLkJ1ZmZlcixSPUwoNTk2OSksRT1MKDEwMjcpLHo9TCg0NDk3KSxqPUwoMzA0OCk7ZnVuY3Rpb24gVihxLHRlLG5lKXtFLmNhbGwodGhp''@;'; put 'put ''cyksdGhpcy5fY2FjaGU9bmV3IFcsdGhpcy5fY2lwaGVyPW5ldyB6LkFFUyh0ZSksdGhpcy5fcHJldj1JLmZyb20obmUpLHRoaXMuX21vZGU9cSx0aGlzLl9hdXRvcGFkZGluZz0hMH1MKDU3MTcpKFYsRSksVi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihxKXt2YXIgdGUsbmU7dGhpcy5f''@;'; put 'put ''Y2FjaGUuYWRkKHEpO2Zvcih2YXIgaWU9W107dGU9dGhpcy5fY2FjaGUuZ2V0KCk7KW5lPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHRlKSxpZS5wdXNoKG5lKTtyZXR1cm4gSS5jb25jYXQoaWUpfTt2YXIgRz1JLmFsbG9jKDE2LDE2KTtmdW5jdGlvbiBXKCl7dGhpcy5jYWNoZT1JLmFsbG9j''@;'; put 'put ''VW5zYWZlKDApfWZ1bmN0aW9uIFUocSx0ZSxuZSl7dmFyIGllPUtbcS50b0xvd2VyQ2FzZSgpXTtpZighaWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0ZSYmKHRlPUkuZnJvbSh0ZSkpLHRlLmxlbmd0aCE9PWllLmtleS84''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK3RlLmxlbmd0aCk7aWYoInN0cmluZyI9PXR5cGVvZiBuZSYmKG5lPUkuZnJvbShuZSkpLCJHQ00iIT09aWUubW9kZSYmbmUubGVuZ3RoIT09aWUuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5n''@;'; put 'put ''dGggIituZS5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09aWUudHlwZT9uZXcgUihpZS5tb2R1bGUsdGUsbmUpOiJhdXRoIj09PWllLnR5cGU/bmV3IEooaWUubW9kdWxlLHRlLG5lKTpuZXcgVihpZS5tb2R1bGUsdGUsbmUpfVYucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBxPXRo''@;'; put 'put ''aXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIHE9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMscSksdGhpcy5fY2lwaGVyLnNjcnViKCkscTtpZighcS5lcXVhbHMoRykpdGhyb3cgdGhpcy5fY2lwaGVyLnNjcnViKCksbmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0''@;'; put 'put ''aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sVi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24ocSl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhcSx0aGlzfSxXLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24ocSl7dGhpcy5jYWNoZT1JLmNvbmNhdChbdGhpcy5jYWNoZSxxXSl9LFcu''@;'; put 'put ''cHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE1KXt2YXIgcT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHF9cmV0dXJuIG51bGx9LFcucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9y''@;'; put 'put ''KHZhciBxPTE2LXRoaXMuY2FjaGUubGVuZ3RoLHRlPUkuYWxsb2NVbnNhZmUocSksbmU9LTE7KytuZTxxOyl0ZS53cml0ZVVJbnQ4KHEsbmUpO3JldHVybiBJLmNvbmNhdChbdGhpcy5jYWNoZSx0ZV0pfSxCLmNyZWF0ZUNpcGhlcml2PVUsQi5jcmVhdGVDaXBoZXI9ZnVuY3Rpb24ocSx0ZSl7''@;'; put 'put ''dmFyIG5lPUtbcS50b0xvd2VyQ2FzZSgpXTtpZighbmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIGllPWoodGUsITEsbmUua2V5LG5lLml2KTtyZXR1cm4gVShxLGllLmtleSxpZS5pdil9fSwzMjg4OihILEIsTCk9Pnt2YXIgSz1MKDk1MDkpLkJ1ZmZl''@;'; put 'put ''cixKPUsuYWxsb2MoMTYsMCk7ZnVuY3Rpb24gSShFKXt2YXIgej1LLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gei53cml0ZVVJbnQzMkJFKEVbMF0+Pj4wLDApLHoud3JpdGVVSW50MzJCRShFWzFdPj4+MCw0KSx6LndyaXRlVUludDMyQkUoRVsyXT4+PjAsOCksei53cml0ZVVJbnQzMkJFKEVb''@;'; put 'put ''M10+Pj4wLDEyKSx6fWZ1bmN0aW9uIFIoRSl7dGhpcy5oPUUsdGhpcy5zdGF0ZT1LLmFsbG9jKDE2LDApLHRoaXMuY2FjaGU9Sy5hbGxvY1Vuc2FmZSgwKX1SLnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihFKXtmb3IodmFyIHo9LTE7Kyt6PEUubGVuZ3RoOyl0aGlzLnN0YXRlW3pdXj1FW3pd''@;'; put 'put ''O3RoaXMuX211bHRpcGx5KCl9LFIucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgRSx6LGosVj1bKEU9dGhpcy5oKS5yZWFkVUludDMyQkUoMCksRS5yZWFkVUludDMyQkUoNCksRS5yZWFkVUludDMyQkUoOCksRS5yZWFkVUludDMyQkUoMTIpXSxHPVswLDAsMCwwXSxX''@;'; put 'put ''PS0xOysrVzwxMjg7KXtmb3IodGhpcy5zdGF0ZVt+fihXLzgpXSYxPDw3LVclOCYmKEdbMF1ePVZbMF0sR1sxXV49VlsxXSxHWzJdXj1WWzJdLEdbM11ePVZbM10pLGo9MCE9KDEmVlszXSksej0zO3o+MDt6LS0pVlt6XT1WW3pdPj4+MXwoMSZWW3otMV0pPDwzMTtWWzBdPVZbMF0+Pj4xLGom''@;'; put 'put ''JihWWzBdPS01MjAwOTM2OTZeVlswXSl9dGhpcy5zdGF0ZT1JKEcpfSxSLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oRSl7dmFyIHo7Zm9yKHRoaXMuY2FjaGU9Sy5jb25jYXQoW3RoaXMuY2FjaGUsRV0pO3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspej10aGlzLmNhY2hlLnNsaWNlKDAsMTYp''@;'; put 'put ''LHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaCh6KX0sUi5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oRSx6KXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2goSy5jb25jYXQoW3RoaXMuY2FjaGUsSl0sMTYpKSx0aGlzLmdoYXNoKEkoWzAsRSww''@;'; put 'put ''LHpdKSksdGhpcy5zdGF0ZX0sSC5leHBvcnRzPVJ9LDY4NTpIPT57SC5leHBvcnRzPWZ1bmN0aW9uKEIpe2Zvcih2YXIgTCxLPUIubGVuZ3RoO0stLTspe2lmKDI1NSE9PShMPUIucmVhZFVJbnQ4KEspKSl7TCsrLEIud3JpdGVVSW50OChMLEspO2JyZWFrfUIud3JpdGVVSW50OCgwLEspfX19''@;'; put 'put ''LDUyOTI6KEgsQixMKT0+e3ZhciBLPUwoNzI5NSk7Qi5lbmNyeXB0PWZ1bmN0aW9uKEosSSl7dmFyIFI9SyhJLEouX3ByZXYpO3JldHVybiBKLl9wcmV2PUouX2NpcGhlci5lbmNyeXB0QmxvY2soUiksSi5fcHJldn0sQi5kZWNyeXB0PWZ1bmN0aW9uKEosSSl7dmFyIFI9Si5fcHJldjtKLl9w''@;'; put 'put ''cmV2PUk7dmFyIEU9Si5fY2lwaGVyLmRlY3J5cHRCbG9jayhJKTtyZXR1cm4gSyhFLFIpfX0sNjMxMTooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXIsSj1MKDcyOTUpO2Z1bmN0aW9uIEkoUixFLHope3ZhciBqPUUubGVuZ3RoLFY9SihFLFIuX2NhY2hlKTtyZXR1cm4gUi5fY2FjaGU9''@;'; put 'put ''Ui5fY2FjaGUuc2xpY2UoaiksUi5fcHJldj1LLmNvbmNhdChbUi5fcHJldix6P0U6Vl0pLFZ9Qi5lbmNyeXB0PWZ1bmN0aW9uKFIsRSx6KXtmb3IodmFyIGosVj1LLmFsbG9jVW5zYWZlKDApO0UubGVuZ3RoOyl7aWYoMD09PVIuX2NhY2hlLmxlbmd0aCYmKFIuX2NhY2hlPVIuX2NpcGhlci5l''@;'; put 'put ''bmNyeXB0QmxvY2soUi5fcHJldiksUi5fcHJldj1LLmFsbG9jVW5zYWZlKDApKSwhKFIuX2NhY2hlLmxlbmd0aDw9RS5sZW5ndGgpKXtWPUsuY29uY2F0KFtWLEkoUixFLHopXSk7YnJlYWt9Vj1LLmNvbmNhdChbVixJKFIsRS5zbGljZSgwLGo9Ui5fY2FjaGUubGVuZ3RoKSx6KV0pLEU9RS5z''@;'; put 'put ''bGljZShqKX1yZXR1cm4gVn19LDE1MTA6KEgsQixMKT0+e3ZhciBLPUwoOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIEooUixFLHope2Zvcih2YXIgaixWLEc9LTEsVz0wOysrRzw4OylqPUUmMTw8Ny1HPzEyODowLFcrPSgxMjgmKFY9Ui5fY2lwaGVyLmVuY3J5cHRCbG9jayhSLl9wcmV2KVswXV5q''@;'; put 'put ''KSk+PkclOCxSLl9wcmV2PUkoUi5fcHJldix6P2o6Vik7cmV0dXJuIFd9ZnVuY3Rpb24gSShSLEUpe3ZhciB6PVIubGVuZ3RoLGo9LTEsVj1LLmFsbG9jVW5zYWZlKFIubGVuZ3RoKTtmb3IoUj1LLmNvbmNhdChbUixLLmZyb20oW0VdKV0pOysrajx6OylWW2pdPVJbal08PDF8UltqKzFdPj43''@;'; put 'put ''O3JldHVybiBWfUIuZW5jcnlwdD1mdW5jdGlvbihSLEUseil7Zm9yKHZhciBqPUUubGVuZ3RoLFY9Sy5hbGxvY1Vuc2FmZShqKSxHPS0xOysrRzxqOylWW0ddPUooUixFW0ddLHopO3JldHVybiBWfX0sMTk2NDooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gSihJLFIs''@;'; put 'put ''RSl7dmFyIHo9SS5fY2lwaGVyLmVuY3J5cHRCbG9jayhJLl9wcmV2KVswXV5SO3JldHVybiBJLl9wcmV2PUsuY29uY2F0KFtJLl9wcmV2LnNsaWNlKDEpLEsuZnJvbShbRT9SOnpdKV0pLHp9Qi5lbmNyeXB0PWZ1bmN0aW9uKEksUixFKXtmb3IodmFyIHo9Ui5sZW5ndGgsaj1LLmFsbG9jVW5z''@;'; put 'put ''YWZlKHopLFY9LTE7KytWPHo7KWpbVl09SihJLFJbVl0sRSk7cmV0dXJuIGp9fSw2MDA5OihILEIsTCk9Pnt2YXIgSz1MKDcyOTUpLEo9TCg5NTA5KS5CdWZmZXIsST1MKDY4NSk7ZnVuY3Rpb24gUihFKXt2YXIgej1FLl9jaXBoZXIuZW5jcnlwdEJsb2NrUmF3KEUuX3ByZXYpO3JldHVybiBJ''@;'; put 'put ''KEUuX3ByZXYpLHp9Qi5lbmNyeXB0PWZ1bmN0aW9uKEUseil7dmFyIGo9TWF0aC5jZWlsKHoubGVuZ3RoLzE2KSxWPUUuX2NhY2hlLmxlbmd0aDtFLl9jYWNoZT1KLmNvbmNhdChbRS5fY2FjaGUsSi5hbGxvY1Vuc2FmZSgxNipqKV0pO2Zvcih2YXIgRz0wO0c8ajtHKyspe3ZhciBXPVIoRSks''@;'; put 'put ''VT1WKzE2Kkc7RS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzBdLFUrMCksRS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzFdLFUrNCksRS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzJdLFUrOCksRS5fY2FjaGUud3JpdGVVSW50MzJCRShXWzNdLFUrMTIpfXZhciBxPUUuX2NhY2hlLnNsaWNlKDAs''@;'; put 'put ''ei5sZW5ndGgpO3JldHVybiBFLl9jYWNoZT1FLl9jYWNoZS5zbGljZSh6Lmxlbmd0aCksSyh6LHEpfX0sMTA4NDooSCxCKT0+e0IuZW5jcnlwdD1mdW5jdGlvbihMLEspe3JldHVybiBMLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEspfSxCLmRlY3J5cHQ9ZnVuY3Rpb24oTCxLKXtyZXR1cm4gTC5f''@;'; put 'put ''Y2lwaGVyLmRlY3J5cHRCbG9jayhLKX19LDQ1OihILEIsTCk9Pnt2YXIgSz17RUNCOkwoMTA4NCksQ0JDOkwoNTI5MiksQ0ZCOkwoNjMxMSksQ0ZCODpMKDE5NjQpLENGQjE6TCgxNTEwKSxPRkI6TCg4ODYxKSxDVFI6TCg2MDA5KSxHQ006TCg2MDA5KX0sSj1MKDQ5NDYpO2Zvcih2YXIgSSBp''@;'; put 'put ''biBKKUpbSV0ubW9kdWxlPUtbSltJXS5tb2RlXTtILmV4cG9ydHM9Sn0sODg2MTooSCxCLEwpPT57dmFyIEs9TCg4NzY0KS5CdWZmZXIsSj1MKDcyOTUpO2Z1bmN0aW9uIEkoUil7cmV0dXJuIFIuX3ByZXY9Ui5fY2lwaGVyLmVuY3J5cHRCbG9jayhSLl9wcmV2KSxSLl9wcmV2fUIuZW5jcnlw''@;'; put 'put ''dD1mdW5jdGlvbihSLEUpe2Zvcig7Ui5fY2FjaGUubGVuZ3RoPEUubGVuZ3RoOylSLl9jYWNoZT1LLmNvbmNhdChbUi5fY2FjaGUsSShSKV0pO3ZhciB6PVIuX2NhY2hlLnNsaWNlKDAsRS5sZW5ndGgpO3JldHVybiBSLl9jYWNoZT1SLl9jYWNoZS5zbGljZShFLmxlbmd0aCksSihFLHopfX0s''@;'; put 'put ''NTk2OTooSCxCLEwpPT57dmFyIEs9TCg0NDk3KSxKPUwoOTUwOSkuQnVmZmVyLEk9TCgxMDI3KTtmdW5jdGlvbiBSKEUseixqLFYpe0kuY2FsbCh0aGlzKSx0aGlzLl9jaXBoZXI9bmV3IEsuQUVTKHopLHRoaXMuX3ByZXY9Si5mcm9tKGopLHRoaXMuX2NhY2hlPUouYWxsb2NVbnNhZmUoMCks''@;'; put 'put ''dGhpcy5fc2VjQ2FjaGU9Si5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PVYsdGhpcy5fbW9kZT1FfUwoNTcxNykoUixJKSxSLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxFLHRoaXMuX2RlY3J5cHQpfSxSLnByb3RvdHlw''@;'; put 'put ''ZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX0sSC5leHBvcnRzPVJ9LDM2MTQ6KEgsQixMKT0+e3ZhciBLPUwoNzY2NyksSj1MKDQ2OTYpLEk9TCg0NSksUj1MKDk3MTUpLEU9TCgzMDQ4KTtmdW5jdGlvbiB6KFYsRyxXKXtpZihWPVYudG9Mb3dlckNhc2UoKSxJW1Zd''@;'; put 'put ''KXJldHVybiBKLmNyZWF0ZUNpcGhlcml2KFYsRyxXKTtpZihSW1ZdKXJldHVybiBuZXcgSyh7a2V5OkcsaXY6Vyxtb2RlOlZ9KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKX1mdW5jdGlvbiBqKFYsRyxXKXtpZihWPVYudG9Mb3dlckNhc2UoKSxJW1ZdKXJldHVy''@;'; put 'put ''biBKLmNyZWF0ZURlY2lwaGVyaXYoVixHLFcpO2lmKFJbVl0pcmV0dXJuIG5ldyBLKHtrZXk6RyxpdjpXLG1vZGU6VixkZWNyeXB0OiEwfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9Qi5jcmVhdGVDaXBoZXI9Qi5DaXBoZXI9ZnVuY3Rpb24oVixHKXt2YXIg''@;'; put 'put ''VyxVO2lmKFY9Vi50b0xvd2VyQ2FzZSgpLElbVl0pVz1JW1ZdLmtleSxVPUlbVl0uaXY7ZWxzZXtpZighUltWXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtXPTgqUltWXS5rZXksVT1SW1ZdLml2fXZhciBxPUUoRywhMSxXLFUpO3JldHVybiB6KFYscS5rZXks''@;'; put 'put ''cS5pdil9LEIuY3JlYXRlQ2lwaGVyaXY9Qi5DaXBoZXJpdj16LEIuY3JlYXRlRGVjaXBoZXI9Qi5EZWNpcGhlcj1mdW5jdGlvbihWLEcpe3ZhciBXLFU7aWYoVj1WLnRvTG93ZXJDYXNlKCksSVtWXSlXPUlbVl0ua2V5LFU9SVtWXS5pdjtlbHNle2lmKCFSW1ZdKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoImludmFsaWQgc3VpdGUgdHlwZSIpO1c9OCpSW1ZdLmtleSxVPVJbVl0uaXZ9dmFyIHE9RShHLCExLFcsVSk7cmV0dXJuIGooVixxLmtleSxxLml2KX0sQi5jcmVhdGVEZWNpcGhlcml2PUIuRGVjaXBoZXJpdj1qLEIubGlzdENpcGhlcnM9Qi5nZXRDaXBoZXJzPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIE9iamVjdC5rZXlzKFIpLmNvbmNhdChKLmdldENpcGhlcnMoKSl9fSw3NjY3OihILEIsTCk9Pnt2YXIgSz1MKDEwMjcpLEo9TCg1MjUxKSxJPUwoNTcxNyksUj1MKDk1MDkpLkJ1ZmZlcixFPXsiZGVzLWVkZTMtY2JjIjpKLkNCQy5pbnN0YW50aWF0ZShKLkVERSksImRlcy1lZGUzIjpK''@;'; put 'put ''LkVERSwiZGVzLWVkZS1jYmMiOkouQ0JDLmluc3RhbnRpYXRlKEouRURFKSwiZGVzLWVkZSI6Si5FREUsImRlcy1jYmMiOkouQ0JDLmluc3RhbnRpYXRlKEouREVTKSwiZGVzLWVjYiI6Si5ERVN9O2Z1bmN0aW9uIHooail7Sy5jYWxsKHRoaXMpO3ZhciBWLEc9ai5tb2RlLnRvTG93ZXJDYXNl''@;'; put 'put ''KCksVz1FW0ddO1Y9ai5kZWNyeXB0PyJkZWNyeXB0IjoiZW5jcnlwdCI7dmFyIFU9ai5rZXk7Ui5pc0J1ZmZlcihVKXx8KFU9Ui5mcm9tKFUpKSwiZGVzLWVkZSIhPT1HJiYiZGVzLWVkZS1jYmMiIT09R3x8KFU9Ui5jb25jYXQoW1UsVS5zbGljZSgwLDgpXSkpO3ZhciBxPWouaXY7Ui5pc0J1''@;'; put 'put ''ZmZlcihxKXx8KHE9Ui5mcm9tKHEpKSx0aGlzLl9kZXM9Vy5jcmVhdGUoe2tleTpVLGl2OnEsdHlwZTpWfSl9RS5kZXM9RVsiZGVzLWNiYyJdLEUuZGVzMz1FWyJkZXMtZWRlMy1jYmMiXSxILmV4cG9ydHM9eixJKHosSyksei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihqKXtyZXR1cm4g''@;'; put 'put ''Ui5mcm9tKHRoaXMuX2Rlcy51cGRhdGUoaikpfSx6LnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gUi5mcm9tKHRoaXMuX2Rlcy5maW5hbCgpKX19LDk3MTU6KEgsQik9PntCWyJkZXMtZWNiIl09e2tleTo4LGl2OjB9LEJbImRlcy1jYmMiXT1CLmRlcz17a2V5OjgsaXY6OH0s''@;'; put 'put ''QlsiZGVzLWVkZTMtY2JjIl09Qi5kZXMzPXtrZXk6MjQsaXY6OH0sQlsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LEJbImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSxCWyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sMzY2MzooSCxCLEwpPT57dmFyIEs9TCg4NzY0KS5CdWZmZXIsSj1M''@;'; put 'put ''KDM1NTApLEk9TCgxNzk4KTtmdW5jdGlvbiBSKHope3ZhciBqLFY9ei5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtkb3tqPW5ldyBKKEkoVikpfXdoaWxlKGouY21wKHoubW9kdWx1cyk+PTB8fCFqLnVtb2Qoei5wcmltZTEpfHwhai51bW9kKHoucHJpbWUyKSk7cmV0dXJuIGp9ZnVuY3Rpb24gRSh6''@;'; put 'put ''LGope3ZhciBjZSxZLFY9e2JsaW5kZXI6KFk9UihjZT1qKSkudG9SZWQoSi5tb250KGNlLm1vZHVsdXMpKS5yZWRQb3cobmV3IEooY2UucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCksdW5ibGluZGVyOlkuaW52bShjZS5tb2R1bHVzKX0sRz1qLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLFc9bmV3''@;'; put 'put ''IEooeikubXVsKFYuYmxpbmRlcikudW1vZChqLm1vZHVsdXMpLFU9Vy50b1JlZChKLm1vbnQoai5wcmltZTEpKSxxPVcudG9SZWQoSi5tb250KGoucHJpbWUyKSksdGU9ai5jb2VmZmljaWVudCxuZT1qLnByaW1lMSxpZT1qLnByaW1lMixsZT1VLnJlZFBvdyhqLmV4cG9uZW50MSkuZnJvbVJl''@;'; put 'put ''ZCgpLGRlPXEucmVkUG93KGouZXhwb25lbnQyKS5mcm9tUmVkKCksdWU9bGUuaXN1YihkZSkuaW11bCh0ZSkudW1vZChuZSkuaW11bChpZSk7cmV0dXJuIGRlLmlhZGQodWUpLmltdWwoVi51bmJsaW5kZXIpLnVtb2Qoai5tb2R1bHVzKS50b0FycmF5TGlrZShLLCJiZSIsRyl9RS5nZXRyPVIs''@;'; put 'put ''SC5leHBvcnRzPUV9LDYwNDI6KEgsQixMKT0+e0guZXhwb3J0cz1MKDUyMDcpfSw0NzQzOihILEIsTCk9Pnt2YXIgSz1MKDk1MDkpLkJ1ZmZlcixKPUwoMzQ4MiksST1MKDg0NzMpLFI9TCg1NzE3KSxFPUwoMjk1Nyksej1MKDc3NTMpLGo9TCg1MjA3KTtmdW5jdGlvbiBWKHEpe0kuV3JpdGFi''@;'; put 'put ''bGUuY2FsbCh0aGlzKTt2YXIgdGU9altxXTtpZighdGUpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaFR5cGU9dGUuaGFzaCx0aGlzLl9oYXNoPUoodGUuaGFzaCksdGhpcy5fdGFnPXRlLmlkLHRoaXMuX3NpZ25UeXBlPXRlLnNpZ259ZnVuY3Rp''@;'; put 'put ''b24gRyhxKXtJLldyaXRhYmxlLmNhbGwodGhpcyk7dmFyIHRlPWpbcV07aWYoIXRlKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2g9Sih0ZS5oYXNoKSx0aGlzLl90YWc9dGUuaWQsdGhpcy5fc2lnblR5cGU9dGUuc2lnbn1mdW5jdGlvbiBXKHEp''@;'; put 'put ''e3JldHVybiBuZXcgVihxKX1mdW5jdGlvbiBVKHEpe3JldHVybiBuZXcgRyhxKX1PYmplY3Qua2V5cyhqKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2pbcV0uaWQ9Sy5mcm9tKGpbcV0uaWQsImhleCIpLGpbcS50b0xvd2VyQ2FzZSgpXT1qW3FdfSksUihWLEkuV3JpdGFibGUpLFYucHJvdG90eXBl''@;'; put 'put ''Ll93cml0ZT1mdW5jdGlvbihxLHRlLG5lKXt0aGlzLl9oYXNoLnVwZGF0ZShxKSxuZSgpfSxWLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24ocSx0ZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBxJiYocT1LLmZyb20ocSx0ZSkpLHRoaXMuX2hhc2gudXBkYXRlKHEpLHRoaXN9LFYucHJvdG90''@;'; put 'put ''eXBlLnNpZ249ZnVuY3Rpb24ocSx0ZSl7dGhpcy5lbmQoKTt2YXIgbmU9dGhpcy5faGFzaC5kaWdlc3QoKSxpZT1FKG5lLHEsdGhpcy5faGFzaFR5cGUsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKTtyZXR1cm4gdGU/aWUudG9TdHJpbmcodGUpOmllfSxSKEcsSS5Xcml0YWJsZSksRy5wcm90''@;'; put 'put ''b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHEsdGUsbmUpe3RoaXMuX2hhc2gudXBkYXRlKHEpLG5lKCl9LEcucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihxLHRlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHEmJihxPUsuZnJvbShxLHRlKSksdGhpcy5faGFzaC51cGRhdGUocSksdGhpc30sRy5w''@;'; put 'put ''cm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHEsdGUsbmUpeyJzdHJpbmciPT10eXBlb2YgdGUmJih0ZT1LLmZyb20odGUsbmUpKSx0aGlzLmVuZCgpO3ZhciBpZT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiB6KHRlLGllLHEsdGhpcy5fc2lnblR5cGUsdGhpcy5fdGFnKX0sSC5leHBvcnRz''@;'; put 'put ''PXtTaWduOlcsVmVyaWZ5OlUsY3JlYXRlU2lnbjpXLGNyZWF0ZVZlcmlmeTpVfX0sMjk1NzooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXIsSj1MKDgzNTUpLEk9TCgzNjYzKSxSPUwoNjk0OCkuZWMsRT1MKDM1NTApLHo9TCg5ODApLGo9TCgxMzA4KTtmdW5jdGlvbiBWKHEsdGUsbmUs''@;'; put 'put ''aWUpe2lmKChxPUsuZnJvbShxLnRvQXJyYXkoKSkpLmxlbmd0aDx0ZS5ieXRlTGVuZ3RoKCkpe3ZhciBsZT1LLmFsbG9jKHRlLmJ5dGVMZW5ndGgoKS1xLmxlbmd0aCk7cT1LLmNvbmNhdChbbGUscV0pfXZhciBkZT1uZS5sZW5ndGgsdWU9ZnVuY3Rpb24oYix4KXtiPShiPUcoYix4KSkubW9k''@;'; put 'put ''KHgpO3ZhciBOPUsuZnJvbShiLnRvQXJyYXkoKSk7aWYoTi5sZW5ndGg8eC5ieXRlTGVuZ3RoKCkpe3ZhciBGPUsuYWxsb2MoeC5ieXRlTGVuZ3RoKCktTi5sZW5ndGgpO049Sy5jb25jYXQoW0YsTl0pfXJldHVybiBOfShuZSx0ZSksY2U9Sy5hbGxvYyhkZSk7Y2UuZmlsbCgxKTt2YXIgWT1L''@;'; put 'put ''LmFsbG9jKGRlKTtyZXR1cm4gWT1KKGllLFkpLnVwZGF0ZShjZSkudXBkYXRlKEsuZnJvbShbMF0pKS51cGRhdGUocSkudXBkYXRlKHVlKS5kaWdlc3QoKSxjZT1KKGllLFkpLnVwZGF0ZShjZSkuZGlnZXN0KCkse2s6WT1KKGllLFkpLnVwZGF0ZShjZSkudXBkYXRlKEsuZnJvbShbMV0pKS51''@;'; put 'put ''cGRhdGUocSkudXBkYXRlKHVlKS5kaWdlc3QoKSx2OmNlPUooaWUsWSkudXBkYXRlKGNlKS5kaWdlc3QoKX19ZnVuY3Rpb24gRyhxLHRlKXt2YXIgbmU9bmV3IEUocSksaWU9KHEubGVuZ3RoPDwzKS10ZS5iaXRMZW5ndGgoKTtyZXR1cm4gaWU+MCYmbmUuaXNocm4oaWUpLG5lfWZ1bmN0aW9u''@;'; put 'put ''IFcocSx0ZSxuZSl7dmFyIGllLGxlO2Rve2ZvcihpZT1LLmFsbG9jKDApOzgqaWUubGVuZ3RoPHEuYml0TGVuZ3RoKCk7KXRlLnY9SihuZSx0ZS5rKS51cGRhdGUodGUudikuZGlnZXN0KCksaWU9Sy5jb25jYXQoW2llLHRlLnZdKTtsZT1HKGllLHEpLHRlLms9SihuZSx0ZS5rKS51cGRhdGUo''@;'; put 'put ''dGUudikudXBkYXRlKEsuZnJvbShbMF0pKS5kaWdlc3QoKSx0ZS52PUoobmUsdGUuaykudXBkYXRlKHRlLnYpLmRpZ2VzdCgpfXdoaWxlKC0xIT09bGUuY21wKHEpKTtyZXR1cm4gbGV9ZnVuY3Rpb24gVShxLHRlLG5lLGllKXtyZXR1cm4gcS50b1JlZChFLm1vbnQobmUpKS5yZWRQb3codGUp''@;'; put 'put ''LmZyb21SZWQoKS5tb2QoaWUpfUguZXhwb3J0cz1mdW5jdGlvbihxLHRlLG5lLGllLGxlKXt2YXIgZGU9eih0ZSk7aWYoZGUuY3VydmUpe2lmKCJlY2RzYSIhPT1pZSYmImVjZHNhL3JzYSIhPT1pZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oYix4KXt2YXIgTj1qW3guY3VydmUuam9pbigiLiIpXTtpZighTil0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUgIit4LmN1cnZlLmpvaW4oIi4iKSk7dmFyIGc9bmV3IFIoTikua2V5RnJvbVByaXZhdGUoeC5wcml2YXRlS2V5KS5zaWduKGIpO3JldHVybiBLLmZyb20oZy50''@;'; put 'put ''b0RFUigpKX0ocSxkZSl9aWYoImRzYSI9PT1kZS50eXBlKXtpZigiZHNhIiE9PWllKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihiLHgsTil7Zm9yKHZhciBGLGc9eC5wYXJhbXMucHJpdl9rZXksQz14LnBhcmFtcy5wLE09eC5wYXJh''@;'; put 'put ''bXMucSx5PXgucGFyYW1zLmcscD1uZXcgRSgwKSxTPUcoYixNKS5tb2QoTSksUT0hMSxyZT1WKGcsTSxiLE4pOyExPT09UTspcD1VKHksRj1XKE0scmUsTiksQyxNKSwwPT09KFE9Ri5pbnZtKE0pLmltdWwoUy5hZGQoZy5tdWwocCkpKS5tb2QoTSkpLmNtcG4oMCkmJihRPSExLHA9bmV3IEUo''@;'; put 'put ''MCkpO3JldHVybiBmdW5jdGlvbihmZSxtZSl7ZmU9ZmUudG9BcnJheSgpLG1lPW1lLnRvQXJyYXkoKSwxMjgmZmVbMF0mJihmZT1bMF0uY29uY2F0KGZlKSksMTI4Jm1lWzBdJiYobWU9WzBdLmNvbmNhdChtZSkpO3ZhciBUZT1bNDgsZmUubGVuZ3RoK21lLmxlbmd0aCs0LDIsZmUubGVuZ3Ro''@;'; put 'put ''XTtyZXR1cm4gVGU9VGUuY29uY2F0KGZlLFsyLG1lLmxlbmd0aF0sbWUpLEsuZnJvbShUZSl9KHAsUSl9KHEsZGUsbmUpfWlmKCJyc2EiIT09aWUmJiJlY2RzYS9yc2EiIT09aWUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7cT1LLmNvbmNhdChbbGUscV0pO2Zv''@;'; put 'put ''cih2YXIgdWU9ZGUubW9kdWx1cy5ieXRlTGVuZ3RoKCksY2U9WzAsMV07cS5sZW5ndGgrY2UubGVuZ3RoKzE8dWU7KWNlLnB1c2goMjU1KTtjZS5wdXNoKDApO2Zvcih2YXIgWT0tMTsrK1k8cS5sZW5ndGg7KWNlLnB1c2gocVtZXSk7cmV0dXJuIEkoY2UsZGUpfSxILmV4cG9ydHMuZ2V0S2V5''@;'; put 'put ''PVYsSC5leHBvcnRzLm1ha2VLZXk9V30sNzc1MzooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXIsSj1MKDM1NTApLEk9TCg2OTQ4KS5lYyxSPUwoOTgwKSxFPUwoMTMwOCk7ZnVuY3Rpb24geihqLFYpe2lmKGouY21wbigwKTw9MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIik7''@;'; put 'put ''aWYoai5jbXAoVik+PVYpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZyIpfUguZXhwb3J0cz1mdW5jdGlvbihqLFYsRyxXLFUpe3ZhciBxPVIoRyk7aWYoImVjIj09PXEudHlwZSl7aWYoImVjZHNhIiE9PVcmJiJlY2RzYS9yc2EiIT09Vyl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1Ymxp''@;'; put 'put ''YyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihjZSxZLGIpe3ZhciB4PUVbYi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCIuIildO2lmKCF4KXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK2IuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpKTtyZXR1cm4gbmV3IEko''@;'; put 'put ''eCkudmVyaWZ5KFksY2UsYi5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGEpfShqLFYscSl9aWYoImRzYSI9PT1xLnR5cGUpe2lmKCJkc2EiIT09Vyl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbihjZSxZLGIpe3ZhciB4PWIuZGF0YS5w''@;'; put 'put ''LE49Yi5kYXRhLnEsRj1iLmRhdGEuZyxnPWIuZGF0YS5wdWJfa2V5LEM9Ui5zaWduYXR1cmUuZGVjb2RlKGNlLCJkZXIiKSxNPUMucyx5PUMucjt6KE0sTikseih5LE4pO3ZhciBwPUoubW9udCh4KSxTPU0uaW52bShOKTtyZXR1cm4gMD09PUYudG9SZWQocCkucmVkUG93KG5ldyBKKFkpLm11''@;'; put 'put ''bChTKS5tb2QoTikpLmZyb21SZWQoKS5tdWwoZy50b1JlZChwKS5yZWRQb3coeS5tdWwoUykubW9kKE4pKS5mcm9tUmVkKCkpLm1vZCh4KS5tb2QoTikuY21wKHkpfShqLFYscSl9aWYoInJzYSIhPT1XJiYiZWNkc2EvcnNhIiE9PVcpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5''@;'; put 'put ''IHR5cGUiKTtWPUsuY29uY2F0KFtVLFZdKTtmb3IodmFyIHRlPXEubW9kdWx1cy5ieXRlTGVuZ3RoKCksbmU9WzFdLGllPTA7Vi5sZW5ndGgrbmUubGVuZ3RoKzI8dGU7KW5lLnB1c2goMjU1KSxpZSsrO25lLnB1c2goMCk7Zm9yKHZhciBsZT0tMTsrK2xlPFYubGVuZ3RoOyluZS5wdXNoKFZb''@;'; put 'put ''bGVdKTtuZT1LLmZyb20obmUpO3ZhciBkZT1KLm1vbnQocS5tb2R1bHVzKTtqPShqPW5ldyBKKGopLnRvUmVkKGRlKSkucmVkUG93KG5ldyBKKHEucHVibGljRXhwb25lbnQpKSxqPUsuZnJvbShqLmZyb21SZWQoKS50b0FycmF5KCkpO3ZhciB1ZT1pZTw4PzE6MDtmb3IodGU9TWF0aC5taW4o''@;'; put 'put ''ai5sZW5ndGgsbmUubGVuZ3RoKSxqLmxlbmd0aCE9PW5lLmxlbmd0aCYmKHVlPTEpLGxlPS0xOysrbGU8dGU7KXVlfD1qW2xlXV5uZVtsZV07cmV0dXJuIDA9PT11ZX19LDcyOTU6KEgsQixMKT0+e3ZhciBLPUwoODc2NCkuQnVmZmVyO0guZXhwb3J0cz1mdW5jdGlvbihKLEkpe2Zvcih2YXIg''@;'; put 'put ''Uj1NYXRoLm1pbihKLmxlbmd0aCxJLmxlbmd0aCksRT1uZXcgSyhSKSx6PTA7ejxSOysreilFW3pdPUpbel1eSVt6XTtyZXR1cm4gRX19LDg3NjQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDUxMDgpO2NvbnN0IEo9TCg5NzQyKSxJPUwoNjQ1KSxSPSJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDtCLkJ1ZmZlcj1qLEIuU2xvd0J1ZmZlcj1mdW5jdGlvbihFZSl7cmV0dXJuK0VlIT1FZSYmKEVlPTApLGouYWxsb2MoK0VlKX0sQi5JTlNQ''@;'; put 'put ''RUNUX01BWF9CWVRFUz01MDtjb25zdCBFPTIxNDc0ODM2NDc7ZnVuY3Rpb24geihFZSl7aWYoRWU+RSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0VlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTtjb25zdCBEZT1uZXcgVWludDhBcnJheShFZSk7cmV0dXJu''@;'; put 'put ''IE9iamVjdC5zZXRQcm90b3R5cGVPZihEZSxqLnByb3RvdHlwZSksRGV9ZnVuY3Rpb24gaihFZSxEZSwkZSl7aWYoIm51bWJlciI9PXR5cGVvZiBFZSl7aWYoInN0cmluZyI9PXR5cGVvZiBEZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0''@;'; put 'put ''eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gVyhFZSl9cmV0dXJuIFYoRWUsRGUsJGUpfWZ1bmN0aW9uIFYoRWUsRGUsJGUpe2lmKCJzdHJpbmciPT10eXBlb2YgRWUpcmV0dXJuIGZ1bmN0aW9uKE90LFB0KXtpZigic3RyaW5nIj09dHlwZW9mIFB0JiYiIiE9PVB0''@;'; put 'put ''fHwoUHQ9InV0ZjgiKSwhai5pc0VuY29kaW5nKFB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK1B0KTtjb25zdCBBdD0wfG5lKE90LFB0KTtsZXQgSnQ9eihBdCk7Y29uc3QgbW49SnQud3JpdGUoT3QsUHQpO3JldHVybiBtbiE9PUF0JiYoSnQ9SnQuc2xpY2Uo''@;'; put 'put ''MCxtbikpLEp0fShFZSxEZSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KEVlKSlyZXR1cm4gZnVuY3Rpb24oT3Qpe2lmKE9lKE90LFVpbnQ4QXJyYXkpKXtjb25zdCBQdD1uZXcgVWludDhBcnJheShPdCk7cmV0dXJuIHEoUHQuYnVmZmVyLFB0LmJ5dGVPZmZzZXQsUHQuYnl0ZUxlbmd0aCl9cmV0''@;'; put 'put ''dXJuIFUoT3QpfShFZSk7aWYobnVsbD09RWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBl''@;'; put 'put ''b2YgRWUpO2lmKE9lKEVlLEFycmF5QnVmZmVyKXx8RWUmJk9lKEVlLmJ1ZmZlcixBcnJheUJ1ZmZlcil8fHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcjwidSImJihPZShFZSxTaGFyZWRBcnJheUJ1ZmZlcil8fEVlJiZPZShFZS5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSlyZXR1cm4gcShF''@;'; put 'put ''ZSxEZSwkZSk7aWYoIm51bWJlciI9PXR5cGVvZiBFZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtjb25zdCBhdD1FZS52YWx1ZU9mJiZFZS52YWx1ZU9mKCk7aWYobnVs''@;'; put 'put ''bCE9YXQmJmF0IT09RWUpcmV0dXJuIGouZnJvbShhdCxEZSwkZSk7Y29uc3QgY3Q9ZnVuY3Rpb24oT3Qpe2lmKGouaXNCdWZmZXIoT3QpKXtjb25zdCBQdD0wfHRlKE90Lmxlbmd0aCksQXQ9eihQdCk7cmV0dXJuIDA9PT1BdC5sZW5ndGh8fE90LmNvcHkoQXQsMCwwLFB0KSxBdH1yZXR1cm4g''@;'; put 'put ''dm9pZCAwIT09T3QubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgT3QubGVuZ3RofHxldChPdC5sZW5ndGgpP3ooMCk6VShPdCk6IkJ1ZmZlciI9PT1PdC50eXBlJiZBcnJheS5pc0FycmF5KE90LmRhdGEpP1UoT3QuZGF0YSk6dm9pZCAwfShFZSk7aWYoY3QpcmV0dXJuIGN0O2lmKHR5cGVvZiBT''@;'; put 'put ''eW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBFZVtTeW1ib2wudG9QcmltaXRpdmVdKXJldHVybiBqLmZyb20oRWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgic3RyaW5nIiksRGUsJGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBh''@;'; put 'put ''cmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIEVlKX1mdW5jdGlvbiBHKEVlKXtpZigibnVtYmVyIiE9dHlwZW9mIEVlKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoRWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0VlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBXKEVlKXtyZXR1cm4gRyhFZSkseihFZTwwPzA6''@;'; put 'put ''MHx0ZShFZSkpfWZ1bmN0aW9uIFUoRWUpe2NvbnN0IERlPUVlLmxlbmd0aDwwPzA6MHx0ZShFZS5sZW5ndGgpLCRlPXooRGUpO2ZvcihsZXQgYXQ9MDthdDxEZTthdCs9MSkkZVthdF09MjU1JkVlW2F0XTtyZXR1cm4gJGV9ZnVuY3Rpb24gcShFZSxEZSwkZSl7aWYoRGU8MHx8RWUuYnl0ZUxl''@;'; put 'put ''bmd0aDxEZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoRWUuYnl0ZUxlbmd0aDxEZSsoJGV8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtsZXQgYXQ7''@;'; put 'put ''cmV0dXJuIGF0PXZvaWQgMD09PURlJiZ2b2lkIDA9PT0kZT9uZXcgVWludDhBcnJheShFZSk6dm9pZCAwPT09JGU/bmV3IFVpbnQ4QXJyYXkoRWUsRGUpOm5ldyBVaW50OEFycmF5KEVlLERlLCRlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoYXQsai5wcm90b3R5cGUpLGF0fWZ1bmN0aW9uIHRl''@;'; put 'put ''KEVlKXtpZihFZT49RSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrRS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfEVlfWZ1bmN0aW9uIG5lKEVlLERlKXtpZihqLmlzQnVmZmVyKEVl''@;'; put 'put ''KSlyZXR1cm4gRWUubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyhFZSl8fE9lKEVlLEFycmF5QnVmZmVyKSlyZXR1cm4gRWUuYnl0ZUxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIEVlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBv''@;'; put 'put ''ZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBFZSk7Y29uc3QgJGU9RWUubGVuZ3RoLGF0PWFyZ3VtZW50cy5sZW5ndGg+MiYmITA9PT1hcmd1bWVudHNbMl07aWYoIWF0JiYwPT09JGUpcmV0dXJuIDA7bGV0IGN0PSExO2Zvcig7''@;'; put 'put ''Oylzd2l0Y2goRGUpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuICRlO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEtlKEVlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAy''@;'; put 'put ''KiRlO2Nhc2UiaGV4IjpyZXR1cm4gJGU+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gd2UoRWUpLmxlbmd0aDtkZWZhdWx0OmlmKGN0KXJldHVybiBhdD8tMTpLZShFZSkubGVuZ3RoO0RlPSgiIitEZSkudG9Mb3dlckNhc2UoKSxjdD0hMH19ZnVuY3Rpb24gaWUoRWUsRGUsJGUpe2xldCBhdD0h''@;'; put 'put ''MTtpZigodm9pZCAwPT09RGV8fERlPDApJiYoRGU9MCksRGU+dGhpcy5sZW5ndGh8fCgodm9pZCAwPT09JGV8fCRlPnRoaXMubGVuZ3RoKSYmKCRlPXRoaXMubGVuZ3RoKSwkZTw9MCl8fCgkZT4+Pj0wKTw9KERlPj4+PTApKXJldHVybiIiO2ZvcihFZXx8KEVlPSJ1dGY4Iik7Oylzd2l0Y2go''@;'; put 'put ''RWUpe2Nhc2UiaGV4IjpyZXR1cm4gcCh0aGlzLERlLCRlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBnKHRoaXMsRGUsJGUpO2Nhc2UiYXNjaWkiOnJldHVybiBNKHRoaXMsRGUsJGUpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHkodGhpcyxEZSwkZSk7Y2FzZSJi''@;'; put 'put ''YXNlNjQiOnJldHVybiBGKHRoaXMsRGUsJGUpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gUyh0aGlzLERlLCRlKTtkZWZhdWx0OmlmKGF0KXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrRWUpO0VlPShF''@;'; put 'put ''ZSsiIikudG9Mb3dlckNhc2UoKSxhdD0hMH19ZnVuY3Rpb24gbGUoRWUsRGUsJGUpe2NvbnN0IGF0PUVlW0RlXTtFZVtEZV09RWVbJGVdLEVlWyRlXT1hdH1mdW5jdGlvbiBkZShFZSxEZSwkZSxhdCxjdCl7aWYoMD09PUVlLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mICRl''@;'; put 'put ''PyhhdD0kZSwkZT0wKTokZT4yMTQ3NDgzNjQ3PyRlPTIxNDc0ODM2NDc6JGU8LTIxNDc0ODM2NDgmJigkZT0tMjE0NzQ4MzY0OCksZXQoJGU9KyRlKSYmKCRlPWN0PzA6RWUubGVuZ3RoLTEpLCRlPDAmJigkZT1FZS5sZW5ndGgrJGUpLCRlPj1FZS5sZW5ndGgpe2lmKGN0KXJldHVybi0xOyRl''@;'; put 'put ''PUVlLmxlbmd0aC0xfWVsc2UgaWYoJGU8MCl7aWYoIWN0KXJldHVybi0xOyRlPTB9aWYoInN0cmluZyI9PXR5cGVvZiBEZSYmKERlPWouZnJvbShEZSxhdCkpLGouaXNCdWZmZXIoRGUpKXJldHVybiAwPT09RGUubGVuZ3RoPy0xOnVlKEVlLERlLCRlLGF0LGN0KTtpZigibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIERlKXJldHVybiBEZSY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2N0P1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChFZSxEZSwkZSk6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChFZSxEZSwkZSk6''@;'; put 'put ''dWUoRWUsW0RlXSwkZSxhdCxjdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gdWUoRWUsRGUsJGUsYXQsY3Qpe2xldCBPdCxQdD0xLEF0PUVlLmxlbmd0aCxKdD1EZS5sZW5ndGg7aWYodm9pZCAwIT09YXQmJigi''@;'; put 'put ''dWNzMiI9PT0oYXQ9U3RyaW5nKGF0KS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PWF0fHwidXRmMTZsZSI9PT1hdHx8InV0Zi0xNmxlIj09PWF0KSl7aWYoRWUubGVuZ3RoPDJ8fERlLmxlbmd0aDwyKXJldHVybi0xO1B0PTIsQXQvPTIsSnQvPTIsJGUvPTJ9ZnVuY3Rpb24gbW4oTnQsYm4p''@;'; put 'put ''e3JldHVybiAxPT09UHQ/TnRbYm5dOk50LnJlYWRVSW50MTZCRShibipQdCl9aWYoY3Qpe2xldCBOdD0tMTtmb3IoT3Q9JGU7T3Q8QXQ7T3QrKylpZihtbihFZSxPdCk9PT1tbihEZSwtMT09PU50PzA6T3QtTnQpKXtpZigtMT09PU50JiYoTnQ9T3QpLE90LU50KzE9PT1KdClyZXR1cm4gTnQq''@;'; put 'put ''UHR9ZWxzZS0xIT09TnQmJihPdC09T3QtTnQpLE50PS0xfWVsc2UgZm9yKCRlK0p0PkF0JiYoJGU9QXQtSnQpLE90PSRlO090Pj0wO090LS0pe2xldCBOdD0hMDtmb3IobGV0IGJuPTA7Ym48SnQ7Ym4rKylpZihtbihFZSxPdCtibikhPT1tbihEZSxibikpe050PSExO2JyZWFrfWlmKE50KXJl''@;'; put 'put ''dHVybiBPdH1yZXR1cm4tMX1mdW5jdGlvbiBjZShFZSxEZSwkZSxhdCl7JGU9TnVtYmVyKCRlKXx8MDtjb25zdCBjdD1FZS5sZW5ndGgtJGU7YXQ/KGF0PU51bWJlcihhdCkpPmN0JiYoYXQ9Y3QpOmF0PWN0O2NvbnN0IE90PURlLmxlbmd0aDtsZXQgUHQ7Zm9yKGF0Pk90LzImJihhdD1PdC8y''@;'; put 'put ''KSxQdD0wO1B0PGF0OysrUHQpe2NvbnN0IEF0PXBhcnNlSW50KERlLnN1YnN0cigyKlB0LDIpLDE2KTtpZihldChBdCkpcmV0dXJuIFB0O0VlWyRlK1B0XT1BdH1yZXR1cm4gUHR9ZnVuY3Rpb24gWShFZSxEZSwkZSxhdCl7cmV0dXJuIEllKEtlKERlLEVlLmxlbmd0aC0kZSksRWUsJGUsYXQp''@;'; put 'put ''fWZ1bmN0aW9uIGIoRWUsRGUsJGUsYXQpe3JldHVybiBJZShmdW5jdGlvbihjdCl7Y29uc3QgT3Q9W107Zm9yKGxldCBQdD0wO1B0PGN0Lmxlbmd0aDsrK1B0KU90LnB1c2goMjU1JmN0LmNoYXJDb2RlQXQoUHQpKTtyZXR1cm4gT3R9KERlKSxFZSwkZSxhdCl9ZnVuY3Rpb24geChFZSxEZSwk''@;'; put 'put ''ZSxhdCl7cmV0dXJuIEllKHdlKERlKSxFZSwkZSxhdCl9ZnVuY3Rpb24gTihFZSxEZSwkZSxhdCl7cmV0dXJuIEllKGZ1bmN0aW9uKGN0LE90KXtsZXQgUHQsQXQsSnQ7Y29uc3QgbW49W107Zm9yKGxldCBOdD0wO050PGN0Lmxlbmd0aCYmISgoT3QtPTIpPDApOysrTnQpUHQ9Y3QuY2hhckNv''@;'; put 'put ''ZGVBdChOdCksQXQ9UHQ+PjgsSnQ9UHQlMjU2LG1uLnB1c2goSnQpLG1uLnB1c2goQXQpO3JldHVybiBtbn0oRGUsRWUubGVuZ3RoLSRlKSxFZSwkZSxhdCl9ZnVuY3Rpb24gRihFZSxEZSwkZSl7cmV0dXJuIEouZnJvbUJ5dGVBcnJheSgwPT09RGUmJiRlPT09RWUubGVuZ3RoP0VlOkVlLnNs''@;'; put 'put ''aWNlKERlLCRlKSl9ZnVuY3Rpb24gZyhFZSxEZSwkZSl7JGU9TWF0aC5taW4oRWUubGVuZ3RoLCRlKTtjb25zdCBhdD1bXTtsZXQgY3Q9RGU7Zm9yKDtjdDwkZTspe2NvbnN0IE90PUVlW2N0XTtsZXQgUHQ9bnVsbCxBdD1PdD4yMzk/NDpPdD4yMjM/MzpPdD4xOTE/MjoxO2lmKGN0K0F0PD0k''@;'; put 'put ''ZSl7bGV0IEp0LG1uLE50LGJuO3N3aXRjaChBdCl7Y2FzZSAxOk90PDEyOCYmKFB0PU90KTticmVhaztjYXNlIDI6SnQ9RWVbY3QrMV0sMTI4PT0oMTkyJkp0KSYmKGJuPSgzMSZPdCk8PDZ8NjMmSnQsYm4+MTI3JiYoUHQ9Ym4pKTticmVhaztjYXNlIDM6SnQ9RWVbY3QrMV0sbW49RWVbY3Qr''@;'; put 'put ''Ml0sMTI4PT0oMTkyJkp0KSYmMTI4PT0oMTkyJm1uKSYmKGJuPSgxNSZPdCk8PDEyfCg2MyZKdCk8PDZ8NjMmbW4sYm4+MjA0NyYmKGJuPDU1Mjk2fHxibj41NzM0MykmJihQdD1ibikpO2JyZWFrO2Nhc2UgNDpKdD1FZVtjdCsxXSxtbj1FZVtjdCsyXSxOdD1FZVtjdCszXSwxMjg9PSgxOTIm''@;'; put 'put ''SnQpJiYxMjg9PSgxOTImbW4pJiYxMjg9PSgxOTImTnQpJiYoYm49KDE1Jk90KTw8MTh8KDYzJkp0KTw8MTJ8KDYzJm1uKTw8Nnw2MyZOdCxibj42NTUzNSYmYm48MTExNDExMiYmKFB0PWJuKSl9fW51bGw9PT1QdD8oUHQ9NjU1MzMsQXQ9MSk6UHQ+NjU1MzUmJihQdC09NjU1MzYsYXQucHVz''@;'; put 'put ''aChQdD4+PjEwJjEwMjN8NTUyOTYpLFB0PTU2MzIwfDEwMjMmUHQpLGF0LnB1c2goUHQpLGN0Kz1BdH1yZXR1cm4gZnVuY3Rpb24oT3Qpe2NvbnN0IFB0PU90Lmxlbmd0aDtpZihQdDw9QylyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsT3QpO2xldCBBdD0iIixKdD0w''@;'; put 'put ''O2Zvcig7SnQ8UHQ7KUF0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxPdC5zbGljZShKdCxKdCs9QykpO3JldHVybiBBdH0oYXQpfUIua01heExlbmd0aD1FLChqLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24oKXt0cnl7Y29uc3QgRWU9bmV3IFVpbnQ4QXJyYXkoMSks''@;'; put 'put ''RGU9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoRGUsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihFZSxEZSksNDI9PT1FZS5mb28oKX1jYXRjaHtyZXR1cm4hMX19KCkpfHx2b2lkIDA9PT1LfHwiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgSy5lcnJvcnx8Sy5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2Vy''@;'; put 'put ''IHN1cHBvcnQuIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGoucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGouaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLnByb3RvdHlwZSwib2Zm''@;'; put 'put ''c2V0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihqLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9fSksai5wb29sU2l6ZT04MTkyLGouZnJvbT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIFYoRWUsRGUsJGUpfSxPYmplY3Quc2V0UHJvdG90eXBlT2Yo''@;'; put 'put ''ai5wcm90b3R5cGUsVWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihqLFVpbnQ4QXJyYXkpLGouYWxsb2M9ZnVuY3Rpb24oRWUsRGUsJGUpe3JldHVybiBjdD1EZSxPdD0kZSxHKGF0PUVlKSxhdDw9MD96KGF0KTp2b2lkIDAhPT1jdD8ic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IE90P3ooYXQpLmZpbGwoY3QsT3QpOnooYXQpLmZpbGwoY3QpOnooYXQpO3ZhciBhdCxjdCxPdH0sai5hbGxvY1Vuc2FmZT1mdW5jdGlvbihFZSl7cmV0dXJuIFcoRWUpfSxqLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihFZSl7cmV0dXJuIFcoRWUpfSxqLmlzQnVmZmVyPWZ1bmN0aW9uKEVl''@;'; put 'put ''KXtyZXR1cm4gbnVsbCE9RWUmJiEwPT09RWUuX2lzQnVmZmVyJiZFZSE9PWoucHJvdG90eXBlfSxqLmNvbXBhcmU9ZnVuY3Rpb24oRWUsRGUpe2lmKE9lKEVlLFVpbnQ4QXJyYXkpJiYoRWU9ai5mcm9tKEVlLEVlLm9mZnNldCxFZS5ieXRlTGVuZ3RoKSksT2UoRGUsVWludDhBcnJheSkmJihE''@;'; put 'put ''ZT1qLmZyb20oRGUsRGUub2Zmc2V0LERlLmJ5dGVMZW5ndGgpKSwhai5pc0J1ZmZlcihFZSl8fCFqLmlzQnVmZmVyKERlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtp''@;'; put 'put ''ZihFZT09PURlKXJldHVybiAwO2xldCAkZT1FZS5sZW5ndGgsYXQ9RGUubGVuZ3RoO2ZvcihsZXQgY3Q9MCxPdD1NYXRoLm1pbigkZSxhdCk7Y3Q8T3Q7KytjdClpZihFZVtjdF0hPT1EZVtjdF0peyRlPUVlW2N0XSxhdD1EZVtjdF07YnJlYWt9cmV0dXJuICRlPGF0Py0xOmF0PCRlPzE6MH0s''@;'; put 'put ''ai5pc0VuY29kaW5nPWZ1bmN0aW9uKEVlKXtzd2l0Y2goU3RyaW5nKEVlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIi''@;'; put 'put ''OmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGouY29uY2F0PWZ1bmN0aW9uKEVlLERlKXtpZighQXJyYXkuaXNBcnJheShFZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVm''@;'; put 'put ''ZmVycycpO2lmKDA9PT1FZS5sZW5ndGgpcmV0dXJuIGouYWxsb2MoMCk7bGV0ICRlO2lmKHZvaWQgMD09PURlKWZvcihEZT0wLCRlPTA7JGU8RWUubGVuZ3RoOysrJGUpRGUrPUVlWyRlXS5sZW5ndGg7Y29uc3QgYXQ9ai5hbGxvY1Vuc2FmZShEZSk7bGV0IGN0PTA7Zm9yKCRlPTA7JGU8RWUu''@;'; put 'put ''bGVuZ3RoOysrJGUpe2xldCBPdD1FZVskZV07aWYoT2UoT3QsVWludDhBcnJheSkpY3QrT3QubGVuZ3RoPmF0Lmxlbmd0aD8oai5pc0J1ZmZlcihPdCl8fChPdD1qLmZyb20oT3QpKSxPdC5jb3B5KGF0LGN0KSk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoYXQsT3QsY3QpO2Vsc2V7''@;'; put 'put ''aWYoIWouaXNCdWZmZXIoT3QpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtPdC5jb3B5KGF0LGN0KX1jdCs9T3QubGVuZ3RofXJldHVybiBhdH0sai5ieXRlTGVuZ3RoPW5lLGoucHJvdG90eXBlLl9pc0J1ZmZlcj0h''@;'; put 'put ''MCxqLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXtjb25zdCBFZT10aGlzLmxlbmd0aDtpZihFZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2ZvcihsZXQgRGU9MDtEZTxFZTtEZSs9MilsZSh0aGlzLERl''@;'; put 'put ''LERlKzEpO3JldHVybiB0aGlzfSxqLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCBFZT10aGlzLmxlbmd0aDtpZihFZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2ZvcihsZXQgRGU9MDtEZTxF''@;'; put 'put ''ZTtEZSs9NClsZSh0aGlzLERlLERlKzMpLGxlKHRoaXMsRGUrMSxEZSsyKTtyZXR1cm4gdGhpc30sai5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7Y29uc3QgRWU9dGhpcy5sZW5ndGg7aWYoRWUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11''@;'; put 'put ''bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IobGV0IERlPTA7RGU8RWU7RGUrPTgpbGUodGhpcyxEZSxEZSs3KSxsZSh0aGlzLERlKzEsRGUrNiksbGUodGhpcyxEZSsyLERlKzUpLGxlKHRoaXMsRGUrMyxEZSs0KTtyZXR1cm4gdGhpc30sai5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9ai5wcm90''@;'; put 'put ''b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtjb25zdCBFZT10aGlzLmxlbmd0aDtyZXR1cm4gMD09PUVlPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP2codGhpcywwLEVlKTppZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGoucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihFZSl7aWYoIWouaXNC''@;'; put 'put ''dWZmZXIoRWUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PUVlfHwwPT09ai5jb21wYXJlKHRoaXMsRWUpfSxqLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7bGV0IEVlPSIiO2NvbnN0IERlPUIuSU5TUEVDVF9NQVhf''@;'; put 'put ''QllURVM7cmV0dXJuIEVlPXRoaXMudG9TdHJpbmcoImhleCIsMCxEZSkucmVwbGFjZSgvKC57Mn0pL2csIiQxICIpLnRyaW0oKSx0aGlzLmxlbmd0aD5EZSYmKEVlKz0iIC4uLiAiKSwiPEJ1ZmZlciAiK0VlKyI+In0sUiYmKGoucHJvdG90eXBlW1JdPWoucHJvdG90eXBlLmluc3BlY3QpLGou''@;'; put 'put ''cHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oRWUsRGUsJGUsYXQsY3Qpe2lmKE9lKEVlLFVpbnQ4QXJyYXkpJiYoRWU9ai5mcm9tKEVlLEVlLm9mZnNldCxFZS5ieXRlTGVuZ3RoKSksIWouaXNCdWZmZXIoRWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBt''@;'; put 'put ''dXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIEVlKTtpZih2b2lkIDA9PT1EZSYmKERlPTApLHZvaWQgMD09PSRlJiYoJGU9RWU/RWUubGVuZ3RoOjApLHZvaWQgMD09PWF0JiYoYXQ9MCksdm9pZCAwPT09Y3QmJihjdD10aGlz''@;'; put 'put ''Lmxlbmd0aCksRGU8MHx8JGU+RWUubGVuZ3RofHxhdDwwfHxjdD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYoYXQ+PWN0JiZEZT49JGUpcmV0dXJuIDA7aWYoYXQ+PWN0KXJldHVybi0xO2lmKERlPj0kZSlyZXR1cm4gMTtpZih0aGlz''@;'; put 'put ''PT09RWUpcmV0dXJuIDA7bGV0IE90PShjdD4+Pj0wKS0oYXQ+Pj49MCksUHQ9KCRlPj4+PTApLShEZT4+Pj0wKTtjb25zdCBBdD1NYXRoLm1pbihPdCxQdCksSnQ9dGhpcy5zbGljZShhdCxjdCksbW49RWUuc2xpY2UoRGUsJGUpO2ZvcihsZXQgTnQ9MDtOdDxBdDsrK050KWlmKEp0W050XSE9''@;'; put 'put ''PW1uW050XSl7T3Q9SnRbTnRdLFB0PW1uW050XTticmVha31yZXR1cm4gT3Q8UHQ/LTE6UHQ8T3Q/MTowfSxqLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoRWUsRGUsJGUpfSxqLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9u''@;'; put 'put ''KEVlLERlLCRlKXtyZXR1cm4gZGUodGhpcyxFZSxEZSwkZSwhMCl9LGoucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKEVlLERlLCRlKXtyZXR1cm4gZGUodGhpcyxFZSxEZSwkZSwhMSl9LGoucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEVlLERlLCRlLGF0KXtpZih2b2lkIDA9PT1E''@;'; put 'put ''ZSlhdD0idXRmOCIsJGU9dGhpcy5sZW5ndGgsRGU9MDtlbHNlIGlmKHZvaWQgMD09PSRlJiYic3RyaW5nIj09dHlwZW9mIERlKWF0PURlLCRlPXRoaXMubGVuZ3RoLERlPTA7ZWxzZXtpZighaXNGaW5pdGUoRGUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2Rp''@;'; put 'put ''bmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtEZT4+Pj0wLGlzRmluaXRlKCRlKT8oJGU+Pj49MCx2b2lkIDA9PT1hdCYmKGF0PSJ1dGY4IikpOihhdD0kZSwkZT12b2lkIDApfWNvbnN0IGN0PXRoaXMubGVuZ3RoLURlO2lmKCh2b2lkIDA9PT0kZXx8JGU+''@;'; put 'put ''Y3QpJiYoJGU9Y3QpLEVlLmxlbmd0aD4wJiYoJGU8MHx8RGU8MCl8fERlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO2F0fHwoYXQ9InV0ZjgiKTtsZXQgT3Q9ITE7Zm9yKDs7KXN3aXRjaChhdCl7Y2Fz''@;'; put 'put ''ZSJoZXgiOnJldHVybiBjZSh0aGlzLEVlLERlLCRlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBZKHRoaXMsRWUsRGUsJGUpO2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGIodGhpcyxFZSxEZSwkZSk7Y2FzZSJiYXNlNjQiOnJldHVybiB4KHRo''@;'; put 'put ''aXMsRWUsRGUsJGUpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gTih0aGlzLEVlLERlLCRlKTtkZWZhdWx0OmlmKE90KXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrYXQpO2F0PSgiIithdCkudG9Mb3dl''@;'; put 'put ''ckNhc2UoKSxPdD0hMH19LGoucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07Y29uc3QgQz00MDk2O2Z1bmN0aW9uIE0oRWUsRGUsJGUpe2xldCBhdD0iIjsk''@;'; put 'put ''ZT1NYXRoLm1pbihFZS5sZW5ndGgsJGUpO2ZvcihsZXQgY3Q9RGU7Y3Q8JGU7KytjdClhdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmRWVbY3RdKTtyZXR1cm4gYXR9ZnVuY3Rpb24geShFZSxEZSwkZSl7bGV0IGF0PSIiOyRlPU1hdGgubWluKEVlLmxlbmd0aCwkZSk7Zm9yKGxldCBjdD1E''@;'; put 'put ''ZTtjdDwkZTsrK2N0KWF0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKEVlW2N0XSk7cmV0dXJuIGF0fWZ1bmN0aW9uIHAoRWUsRGUsJGUpe2NvbnN0IGF0PUVlLmxlbmd0aDsoIURlfHxEZTwwKSYmKERlPTApLCghJGV8fCRlPDB8fCRlPmF0KSYmKCRlPWF0KTtsZXQgY3Q9IiI7Zm9yKGxldCBPdD1E''@;'; put 'put ''ZTtPdDwkZTsrK090KWN0Kz1udFtFZVtPdF1dO3JldHVybiBjdH1mdW5jdGlvbiBTKEVlLERlLCRlKXtjb25zdCBhdD1FZS5zbGljZShEZSwkZSk7bGV0IGN0PSIiO2ZvcihsZXQgT3Q9MDtPdDxhdC5sZW5ndGgtMTtPdCs9MiljdCs9U3RyaW5nLmZyb21DaGFyQ29kZShhdFtPdF0rMjU2KmF0''@;'; put 'put ''W090KzFdKTtyZXR1cm4gY3R9ZnVuY3Rpb24gUShFZSxEZSwkZSl7aWYoRWUlMSE9MHx8RWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoRWUrRGU+JGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBs''@;'; put 'put ''ZW5ndGgiKX1mdW5jdGlvbiByZShFZSxEZSwkZSxhdCxjdCxPdCl7aWYoIWouaXNCdWZmZXIoRWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihEZT5jdHx8RGU8T3QpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2''@;'; put 'put ''YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKCRlK2F0PkVlLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gZmUoRWUsRGUsJGUsYXQsY3Qpe0JlKERlLGF0LGN0LEVlLCRlLDcpO2xldCBPdD1OdW1iZXIoRGUmQmln''@;'; put 'put ''SW50KDQyOTQ5NjcyOTUpKTtFZVskZSsrXT1PdCxPdD4+PTgsRWVbJGUrK109T3QsT3Q+Pj04LEVlWyRlKytdPU90LE90Pj49OCxFZVskZSsrXT1PdDtsZXQgUHQ9TnVtYmVyKERlPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIEVlWyRlKytdPVB0LFB0Pj49OCxFZVsk''@;'; put 'put ''ZSsrXT1QdCxQdD4+PTgsRWVbJGUrK109UHQsUHQ+Pj04LEVlWyRlKytdPVB0LCRlfWZ1bmN0aW9uIG1lKEVlLERlLCRlLGF0LGN0KXtCZShEZSxhdCxjdCxFZSwkZSw3KTtsZXQgT3Q9TnVtYmVyKERlJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7RWVbJGUrN109T3QsT3Q+Pj04LEVlWyRlKzZdPU90''@;'; put 'put ''LE90Pj49OCxFZVskZSs1XT1PdCxPdD4+PTgsRWVbJGUrNF09T3Q7bGV0IFB0PU51bWJlcihEZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiBFZVskZSszXT1QdCxQdD4+PTgsRWVbJGUrMl09UHQsUHQ+Pj04LEVlWyRlKzFdPVB0LFB0Pj49OCxFZVskZV09UHQsJGUr''@;'; put 'put ''OH1mdW5jdGlvbiBrZShFZSxEZSwkZSxhdCxjdCxPdCl7aWYoJGUrYXQ+RWUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZigkZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBUZShFZSxEZSwk''@;'; put 'put ''ZSxhdCxjdCl7cmV0dXJuIERlPStEZSwkZT4+Pj0wLGN0fHxrZShFZSwwLCRlLDQpLEkud3JpdGUoRWUsRGUsJGUsYXQsMjMsNCksJGUrNH1mdW5jdGlvbiBQZShFZSxEZSwkZSxhdCxjdCl7cmV0dXJuIERlPStEZSwkZT4+Pj0wLGN0fHxrZShFZSwwLCRlLDgpLEkud3JpdGUoRWUsRGUsJGUs''@;'; put 'put ''YXQsNTIsOCksJGUrOH1qLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihFZSxEZSl7Y29uc3QgJGU9dGhpcy5sZW5ndGg7KEVlPX5+RWUpPDA/KEVlKz0kZSk8MCYmKEVlPTApOkVlPiRlJiYoRWU9JGUpLChEZT12b2lkIDA9PT1EZT8kZTp+fkRlKTwwPyhEZSs9JGUpPDAmJihEZT0wKTpEZT4k''@;'; put 'put ''ZSYmKERlPSRlKSxEZTxFZSYmKERlPUVlKTtjb25zdCBhdD10aGlzLnN1YmFycmF5KEVlLERlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGF0LGoucHJvdG90eXBlKSxhdH0sai5wcm90b3R5cGUucmVhZFVpbnRMRT1qLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKEVlLERl''@;'; put 'put ''LCRlKXtFZT4+Pj0wLERlPj4+PTAsJGV8fFEoRWUsRGUsdGhpcy5sZW5ndGgpO2xldCBhdD10aGlzW0VlXSxjdD0xLE90PTA7Zm9yKDsrK090PERlJiYoY3QqPTI1Nik7KWF0Kz10aGlzW0VlK090XSpjdDtyZXR1cm4gYXR9LGoucHJvdG90eXBlLnJlYWRVaW50QkU9ai5wcm90b3R5cGUucmVh''@;'; put 'put ''ZFVJbnRCRT1mdW5jdGlvbihFZSxEZSwkZSl7RWU+Pj49MCxEZT4+Pj0wLCRlfHxRKEVlLERlLHRoaXMubGVuZ3RoKTtsZXQgYXQ9dGhpc1tFZSstLURlXSxjdD0xO2Zvcig7RGU+MCYmKGN0Kj0yNTYpOylhdCs9dGhpc1tFZSstLURlXSpjdDtyZXR1cm4gYXR9LGoucHJvdG90eXBlLnJlYWRV''@;'; put 'put ''aW50OD1qLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oRWUsRGUpe3JldHVybiBFZT4+Pj0wLERlfHxRKEVlLDEsdGhpcy5sZW5ndGgpLHRoaXNbRWVdfSxqLnByb3RvdHlwZS5yZWFkVWludDE2TEU9ai5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKEVlLERlKXtyZXR1cm4g''@;'; put 'put ''RWU+Pj49MCxEZXx8UShFZSwyLHRoaXMubGVuZ3RoKSx0aGlzW0VlXXx0aGlzW0VlKzFdPDw4fSxqLnByb3RvdHlwZS5yZWFkVWludDE2QkU9ai5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKEVlLERlKXtyZXR1cm4gRWU+Pj49MCxEZXx8UShFZSwyLHRoaXMubGVuZ3RoKSx0aGlz''@;'; put 'put ''W0VlXTw8OHx0aGlzW0VlKzFdfSxqLnByb3RvdHlwZS5yZWFkVWludDMyTEU9ai5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKEVlLERlKXtyZXR1cm4gRWU+Pj49MCxEZXx8UShFZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tFZV18dGhpc1tFZSsxXTw8OHx0aGlzW0VlKzJdPDwxNikr''@;'; put 'put ''MTY3NzcyMTYqdGhpc1tFZSszXX0sai5wcm90b3R5cGUucmVhZFVpbnQzMkJFPWoucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihFZSxEZSl7cmV0dXJuIEVlPj4+PTAsRGV8fFEoRWUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tFZV0rKHRoaXNbRWUrMV08PDE2fHRoaXNb''@;'; put 'put ''RWUrMl08PDh8dGhpc1tFZSszXSl9LGoucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRT1xZShmdW5jdGlvbihFZSl7SGUoRWU+Pj49MCwib2Zmc2V0Iik7Y29uc3QgRGU9dGhpc1tFZV0sJGU9dGhpc1tFZSs3XTt2b2lkIDAhPT1EZSYmdm9pZCAwIT09JGV8fFFlKEVlLHRoaXMubGVuZ3RoLTgp''@;'; put 'put ''O2NvbnN0IGF0PURlKzI1Nip0aGlzWysrRWVdKzY1NTM2KnRoaXNbKytFZV0rdGhpc1srK0VlXSoyKioyNCxjdD10aGlzWysrRWVdKzI1Nip0aGlzWysrRWVdKzY1NTM2KnRoaXNbKytFZV0rJGUqMioqMjQ7cmV0dXJuIEJpZ0ludChhdCkrKEJpZ0ludChjdCk8PEJpZ0ludCgzMikpfSksai5w''@;'; put 'put ''cm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPXFlKGZ1bmN0aW9uKEVlKXtIZShFZT4+Pj0wLCJvZmZzZXQiKTtjb25zdCBEZT10aGlzW0VlXSwkZT10aGlzW0VlKzddO3ZvaWQgMCE9PURlJiZ2b2lkIDAhPT0kZXx8UWUoRWUsdGhpcy5sZW5ndGgtOCk7Y29uc3QgYXQ9RGUqMioqMjQrNjU1MzYq''@;'; put 'put ''dGhpc1srK0VlXSsyNTYqdGhpc1srK0VlXSt0aGlzWysrRWVdLGN0PXRoaXNbKytFZV0qMioqMjQrNjU1MzYqdGhpc1srK0VlXSsyNTYqdGhpc1srK0VlXSskZTtyZXR1cm4oQmlnSW50KGF0KTw8QmlnSW50KDMyKSkrQmlnSW50KGN0KX0pLGoucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlv''@;'; put 'put ''bihFZSxEZSwkZSl7RWU+Pj49MCxEZT4+Pj0wLCRlfHxRKEVlLERlLHRoaXMubGVuZ3RoKTtsZXQgYXQ9dGhpc1tFZV0sY3Q9MSxPdD0wO2Zvcig7KytPdDxEZSYmKGN0Kj0yNTYpOylhdCs9dGhpc1tFZStPdF0qY3Q7cmV0dXJuIGN0Kj0xMjgsYXQ+PWN0JiYoYXQtPU1hdGgucG93KDIsOCpE''@;'; put 'put ''ZSkpLGF0fSxqLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oRWUsRGUsJGUpe0VlPj4+PTAsRGU+Pj49MCwkZXx8UShFZSxEZSx0aGlzLmxlbmd0aCk7bGV0IGF0PURlLGN0PTEsT3Q9dGhpc1tFZSstLWF0XTtmb3IoO2F0PjAmJihjdCo9MjU2KTspT3QrPXRoaXNbRWUrLS1hdF0qY3Q7''@;'; put 'put ''cmV0dXJuIGN0Kj0xMjgsT3Q+PWN0JiYoT3QtPU1hdGgucG93KDIsOCpEZSkpLE90fSxqLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihFZSxEZSl7cmV0dXJuIEVlPj4+PTAsRGV8fFEoRWUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbRWVdPy0xKigyNTUtdGhpc1tFZV0rMSk6dGhpc1tF''@;'; put 'put ''ZV19LGoucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKEVlLERlKXtFZT4+Pj0wLERlfHxRKEVlLDIsdGhpcy5sZW5ndGgpO2NvbnN0ICRlPXRoaXNbRWVdfHRoaXNbRWUrMV08PDg7cmV0dXJuIDMyNzY4JiRlPzQyOTQ5MDE3NjB8JGU6JGV9LGoucHJvdG90eXBlLnJlYWRJbnQxNkJF''@;'; put 'put ''PWZ1bmN0aW9uKEVlLERlKXtFZT4+Pj0wLERlfHxRKEVlLDIsdGhpcy5sZW5ndGgpO2NvbnN0ICRlPXRoaXNbRWUrMV18dGhpc1tFZV08PDg7cmV0dXJuIDMyNzY4JiRlPzQyOTQ5MDE3NjB8JGU6JGV9LGoucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKEVlLERlKXtyZXR1cm4gRWU+''@;'; put 'put ''Pj49MCxEZXx8UShFZSw0LHRoaXMubGVuZ3RoKSx0aGlzW0VlXXx0aGlzW0VlKzFdPDw4fHRoaXNbRWUrMl08PDE2fHRoaXNbRWUrM108PDI0fSxqLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihFZSxEZSl7cmV0dXJuIEVlPj4+PTAsRGV8fFEoRWUsNCx0aGlzLmxlbmd0aCksdGhp''@;'; put 'put ''c1tFZV08PDI0fHRoaXNbRWUrMV08PDE2fHRoaXNbRWUrMl08PDh8dGhpc1tFZSszXX0sai5wcm90b3R5cGUucmVhZEJpZ0ludDY0TEU9cWUoZnVuY3Rpb24oRWUpe0hlKEVlPj4+PTAsIm9mZnNldCIpO2NvbnN0IERlPXRoaXNbRWVdLCRlPXRoaXNbRWUrN107cmV0dXJuIHZvaWQgMCE9PURl''@;'; put 'put ''JiZ2b2lkIDAhPT0kZXx8UWUoRWUsdGhpcy5sZW5ndGgtOCksKEJpZ0ludCh0aGlzW0VlKzRdKzI1Nip0aGlzW0VlKzVdKzY1NTM2KnRoaXNbRWUrNl0rKCRlPDwyNCkpPDxCaWdJbnQoMzIpKStCaWdJbnQoRGUrMjU2KnRoaXNbKytFZV0rNjU1MzYqdGhpc1srK0VlXSsxNjc3NzIxNip0aGlz''@;'; put 'put ''WysrRWVdKX0pLGoucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFPXFlKGZ1bmN0aW9uKEVlKXtIZShFZT4+Pj0wLCJvZmZzZXQiKTtjb25zdCBEZT10aGlzW0VlXSwkZT10aGlzW0VlKzddO3ZvaWQgMCE9PURlJiZ2b2lkIDAhPT0kZXx8UWUoRWUsdGhpcy5sZW5ndGgtOCk7Y29uc3QgYXQ9KERl''@;'; put 'put ''PDwyNCkrNjU1MzYqdGhpc1srK0VlXSsyNTYqdGhpc1srK0VlXSt0aGlzWysrRWVdO3JldHVybihCaWdJbnQoYXQpPDxCaWdJbnQoMzIpKStCaWdJbnQoMTY3NzcyMTYqdGhpc1srK0VlXSs2NTUzNip0aGlzWysrRWVdKzI1Nip0aGlzWysrRWVdKyRlKX0pLGoucHJvdG90eXBlLnJlYWRGbG9h''@;'; put 'put ''dExFPWZ1bmN0aW9uKEVlLERlKXtyZXR1cm4gRWU+Pj49MCxEZXx8UShFZSw0LHRoaXMubGVuZ3RoKSxJLnJlYWQodGhpcyxFZSwhMCwyMyw0KX0sai5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oRWUsRGUpe3JldHVybiBFZT4+Pj0wLERlfHxRKEVlLDQsdGhpcy5sZW5ndGgpLEku''@;'; put 'put ''cmVhZCh0aGlzLEVlLCExLDIzLDQpfSxqLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oRWUsRGUpe3JldHVybiBFZT4+Pj0wLERlfHxRKEVlLDgsdGhpcy5sZW5ndGgpLEkucmVhZCh0aGlzLEVlLCEwLDUyLDgpfSxqLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oRWUs''@;'; put 'put ''RGUpe3JldHVybiBFZT4+Pj0wLERlfHxRKEVlLDgsdGhpcy5sZW5ndGgpLEkucmVhZCh0aGlzLEVlLCExLDUyLDgpfSxqLnByb3RvdHlwZS53cml0ZVVpbnRMRT1qLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihFZSxEZSwkZSxhdCl7RWU9K0VlLERlPj4+PTAsJGU+Pj49MCwhYXQm''@;'; put 'put ''JnJlKHRoaXMsRWUsRGUsJGUsTWF0aC5wb3coMiw4KiRlKS0xLDApO2xldCBjdD0xLE90PTA7Zm9yKHRoaXNbRGVdPTI1NSZFZTsrK090PCRlJiYoY3QqPTI1Nik7KXRoaXNbRGUrT3RdPUVlL2N0JjI1NTtyZXR1cm4gRGUrJGV9LGoucHJvdG90eXBlLndyaXRlVWludEJFPWoucHJvdG90eXBl''@;'; put 'put ''LndyaXRlVUludEJFPWZ1bmN0aW9uKEVlLERlLCRlLGF0KXtFZT0rRWUsRGU+Pj49MCwkZT4+Pj0wLCFhdCYmcmUodGhpcyxFZSxEZSwkZSxNYXRoLnBvdygyLDgqJGUpLTEsMCk7bGV0IGN0PSRlLTEsT3Q9MTtmb3IodGhpc1tEZStjdF09MjU1JkVlOy0tY3Q+PTAmJihPdCo9MjU2KTspdGhp''@;'; put 'put ''c1tEZStjdF09RWUvT3QmMjU1O3JldHVybiBEZSskZX0sai5wcm90b3R5cGUud3JpdGVVaW50OD1qLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKEVlLERlLCRlKXtyZXR1cm4gRWU9K0VlLERlPj4+PTAsJGV8fHJlKHRoaXMsRWUsRGUsMSwyNTUsMCksdGhpc1tEZV09MjU1JkVlLERl''@;'; put 'put ''KzF9LGoucHJvdG90eXBlLndyaXRlVWludDE2TEU9ai5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIEVlPStFZSxEZT4+Pj0wLCRlfHxyZSh0aGlzLEVlLERlLDIsNjU1MzUsMCksdGhpc1tEZV09MjU1JkVlLHRoaXNbRGUrMV09RWU+Pj44LERlKzJ9''@;'; put 'put ''LGoucHJvdG90eXBlLndyaXRlVWludDE2QkU9ai5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIEVlPStFZSxEZT4+Pj0wLCRlfHxyZSh0aGlzLEVlLERlLDIsNjU1MzUsMCksdGhpc1tEZV09RWU+Pj44LHRoaXNbRGUrMV09MjU1JkVlLERlKzJ9LGou''@;'; put 'put ''cHJvdG90eXBlLndyaXRlVWludDMyTEU9ai5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIEVlPStFZSxEZT4+Pj0wLCRlfHxyZSh0aGlzLEVlLERlLDQsNDI5NDk2NzI5NSwwKSx0aGlzW0RlKzNdPUVlPj4+MjQsdGhpc1tEZSsyXT1FZT4+PjE2LHRo''@;'; put 'put ''aXNbRGUrMV09RWU+Pj44LHRoaXNbRGVdPTI1NSZFZSxEZSs0fSxqLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFPWoucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oRWUsRGUsJGUpe3JldHVybiBFZT0rRWUsRGU+Pj49MCwkZXx8cmUodGhpcyxFZSxEZSw0LDQyOTQ5NjcyOTUsMCks''@;'; put 'put ''dGhpc1tEZV09RWU+Pj4yNCx0aGlzW0RlKzFdPUVlPj4+MTYsdGhpc1tEZSsyXT1FZT4+PjgsdGhpc1tEZSszXT0yNTUmRWUsRGUrNH0sai5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRT1xZShmdW5jdGlvbihFZSxEZT0wKXtyZXR1cm4gZmUodGhpcyxFZSxEZSxCaWdJbnQoMCksQmlnSW50''@;'; put 'put ''KCIweGZmZmZmZmZmZmZmZmZmZmYiKSl9KSxqLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NEJFPXFlKGZ1bmN0aW9uKEVlLERlPTApe3JldHVybiBtZSh0aGlzLEVlLERlLEJpZ0ludCgwKSxCaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLGoucHJvdG90eXBlLndyaXRlSW50TEU9ZnVu''@;'; put 'put ''Y3Rpb24oRWUsRGUsJGUsYXQpe2lmKEVlPStFZSxEZT4+Pj0wLCFhdCl7Y29uc3QgQXQ9TWF0aC5wb3coMiw4KiRlLTEpO3JlKHRoaXMsRWUsRGUsJGUsQXQtMSwtQXQpfWxldCBjdD0wLE90PTEsUHQ9MDtmb3IodGhpc1tEZV09MjU1JkVlOysrY3Q8JGUmJihPdCo9MjU2KTspRWU8MCYmMD09''@;'; put 'put ''PVB0JiYwIT09dGhpc1tEZStjdC0xXSYmKFB0PTEpLHRoaXNbRGUrY3RdPShFZS9PdD4+MCktUHQmMjU1O3JldHVybiBEZSskZX0sai5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihFZSxEZSwkZSxhdCl7aWYoRWU9K0VlLERlPj4+PTAsIWF0KXtjb25zdCBBdD1NYXRoLnBvdygyLDgq''@;'; put 'put ''JGUtMSk7cmUodGhpcyxFZSxEZSwkZSxBdC0xLC1BdCl9bGV0IGN0PSRlLTEsT3Q9MSxQdD0wO2Zvcih0aGlzW0RlK2N0XT0yNTUmRWU7LS1jdD49MCYmKE90Kj0yNTYpOylFZTwwJiYwPT09UHQmJjAhPT10aGlzW0RlK2N0KzFdJiYoUHQ9MSksdGhpc1tEZStjdF09KEVlL090Pj4wKS1QdCYy''@;'; put 'put ''NTU7cmV0dXJuIERlKyRlfSxqLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oRWUsRGUsJGUpe3JldHVybiBFZT0rRWUsRGU+Pj49MCwkZXx8cmUodGhpcyxFZSxEZSwxLDEyNywtMTI4KSxFZTwwJiYoRWU9MjU1K0VlKzEpLHRoaXNbRGVdPTI1NSZFZSxEZSsxfSxqLnByb3RvdHlwZS53''@;'; put 'put ''cml0ZUludDE2TEU9ZnVuY3Rpb24oRWUsRGUsJGUpe3JldHVybiBFZT0rRWUsRGU+Pj49MCwkZXx8cmUodGhpcyxFZSxEZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tEZV09MjU1JkVlLHRoaXNbRGUrMV09RWU+Pj44LERlKzJ9LGoucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihFZSxE''@;'; put 'put ''ZSwkZSl7cmV0dXJuIEVlPStFZSxEZT4+Pj0wLCRlfHxyZSh0aGlzLEVlLERlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW0RlXT1FZT4+PjgsdGhpc1tEZSsxXT0yNTUmRWUsRGUrMn0sai5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKEVlLERlLCRlKXtyZXR1cm4gRWU9K0VlLERlPj4+''@;'; put 'put ''PTAsJGV8fHJlKHRoaXMsRWUsRGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW0RlXT0yNTUmRWUsdGhpc1tEZSsxXT1FZT4+PjgsdGhpc1tEZSsyXT1FZT4+PjE2LHRoaXNbRGUrM109RWU+Pj4yNCxEZSs0fSxqLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oRWUsRGUs''@;'; put 'put ''JGUpe3JldHVybiBFZT0rRWUsRGU+Pj49MCwkZXx8cmUodGhpcyxFZSxEZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLEVlPDAmJihFZT00Mjk0OTY3Mjk1K0VlKzEpLHRoaXNbRGVdPUVlPj4+MjQsdGhpc1tEZSsxXT1FZT4+PjE2LHRoaXNbRGUrMl09RWU+Pj44LHRoaXNbRGUrM109MjU1''@;'; put 'put ''JkVlLERlKzR9LGoucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRT1xZShmdW5jdGlvbihFZSxEZT0wKXtyZXR1cm4gZmUodGhpcyxFZSxEZSwtQmlnSW50KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLGoucHJvdG90eXBlLndyaXRlQmlnSW50''@;'; put 'put ''NjRCRT1xZShmdW5jdGlvbihFZSxEZT0wKXtyZXR1cm4gbWUodGhpcyxFZSxEZSwtQmlnSW50KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLGoucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIFRlKHRo''@;'; put 'put ''aXMsRWUsRGUsITAsJGUpfSxqLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oRWUsRGUsJGUpe3JldHVybiBUZSh0aGlzLEVlLERlLCExLCRlKX0sai5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuIFBlKHRoaXMsRWUsRGUsITAsJGUpfSxq''@;'; put 'put ''LnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKEVlLERlLCRlKXtyZXR1cm4gUGUodGhpcyxFZSxEZSwhMSwkZSl9LGoucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oRWUsRGUsJGUsYXQpe2lmKCFqLmlzQnVmZmVyKEVlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91''@;'; put 'put ''bGQgYmUgYSBCdWZmZXIiKTtpZigkZXx8KCRlPTApLGF0fHwwPT09YXR8fChhdD10aGlzLmxlbmd0aCksRGU+PUVlLmxlbmd0aCYmKERlPUVlLmxlbmd0aCksRGV8fChEZT0wKSxhdD4wJiZhdDwkZSYmKGF0PSRlKSxhdD09PSRlfHwwPT09RWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIDA7aWYoRGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKCRlPDB8fCRlPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoYXQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291''@;'; put 'put ''cmNlRW5kIG91dCBvZiBib3VuZHMiKTthdD50aGlzLmxlbmd0aCYmKGF0PXRoaXMubGVuZ3RoKSxFZS5sZW5ndGgtRGU8YXQtJGUmJihhdD1FZS5sZW5ndGgtRGUrJGUpO2NvbnN0IGN0PWF0LSRlO3JldHVybiB0aGlzPT09RWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3Rv''@;'; put 'put ''dHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihEZSwkZSxhdCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoRWUsdGhpcy5zdWJhcnJheSgkZSxhdCksRGUpLGN0fSxqLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKEVlLERlLCRlLGF0KXtpZigic3RyaW5nIj09dHlwZW9mIEVl''@;'; put 'put ''KXtpZigic3RyaW5nIj09dHlwZW9mIERlPyhhdD1EZSxEZT0wLCRlPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mICRlJiYoYXQ9JGUsJGU9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PWF0JiYic3RyaW5nIiE9dHlwZW9mIGF0KXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3Qg''@;'; put 'put ''YmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIGF0JiYhai5pc0VuY29kaW5nKGF0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2F0KTtpZigxPT09RWUubGVuZ3RoKXtjb25zdCBPdD1FZS5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1hdCYmT3Q8MTI4''@;'; put 'put ''fHwibGF0aW4xIj09PWF0KSYmKEVlPU90KX19ZWxzZSJudW1iZXIiPT10eXBlb2YgRWU/RWUmPTI1NToiYm9vbGVhbiI9PXR5cGVvZiBFZSYmKEVlPU51bWJlcihFZSkpO2lmKERlPDB8fHRoaXMubGVuZ3RoPERlfHx0aGlzLmxlbmd0aDwkZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9m''@;'; put 'put ''IHJhbmdlIGluZGV4Iik7aWYoJGU8PURlKXJldHVybiB0aGlzO2xldCBjdDtpZihEZT4+Pj0wLCRlPXZvaWQgMD09PSRlP3RoaXMubGVuZ3RoOiRlPj4+MCxFZXx8KEVlPTApLCJudW1iZXIiPT10eXBlb2YgRWUpZm9yKGN0PURlO2N0PCRlOysrY3QpdGhpc1tjdF09RWU7ZWxzZXtjb25zdCBP''@;'; put 'put ''dD1qLmlzQnVmZmVyKEVlKT9FZTpqLmZyb20oRWUsYXQpLFB0PU90Lmxlbmd0aDtpZigwPT09UHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK0VlKyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IoY3Q9MDtjdDwkZS1EZTsrK2N0KXRoaXNbY3QrRGVd''@;'; put 'put ''PU90W2N0JVB0XX1yZXR1cm4gdGhpc307Y29uc3QgRmU9e307ZnVuY3Rpb24gTmUoRWUsRGUsJGUpe0ZlW0VlXT1jbGFzcyBleHRlbmRzICRle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWVzc2FnZSIse3ZhbHVlOkRlLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0aGlzLm5hbWU9YCR7dGhpcy5uYW1lfSBbJHtFZX1dYCxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIEVlfXNldCBjb2RlKGF0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29kZSIse2NvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmF0LHdyaXRhYmxlOiEwfSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske0VlfV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiBMZShFZSl7bGV0IERlPSIiLCRlPUVlLmxlbmd0aDtjb25zdCBhdD0iLSI9PT1FZVswXT8x''@;'; put 'put ''OjA7Zm9yKDskZT49YXQrNDskZS09MylEZT1gXyR7RWUuc2xpY2UoJGUtMywkZSl9JHtEZX1gO3JldHVybmAke0VlLnNsaWNlKDAsJGUpfSR7RGV9YH1mdW5jdGlvbiBCZShFZSxEZSwkZSxhdCxjdCxPdCl7aWYoRWU+JGV8fEVlPERlKXtjb25zdCBQdD0iYmlnaW50Ij09dHlwZW9mIERlPyJu''@;'; put 'put ''IjoiIjtsZXQgQXQ7dGhyb3cgQXQ9T3Q+Mz8wPT09RGV8fERlPT09QmlnSW50KDApP2A+PSAwJHtQdH0gYW5kIDwgMiR7UHR9ICoqICR7OCooT3QrMSl9JHtQdH1gOmA+PSAtKDIke1B0fSAqKiAkezgqKE90KzEpLTF9JHtQdH0pIGFuZCA8IDIgKiogJHs4KihPdCsxKS0xfSR7UHR9YDpgPj0g''@;'; put 'put ''JHtEZX0ke1B0fSBhbmQgPD0gJHskZX0ke1B0fWAsbmV3IEZlLkVSUl9PVVRfT0ZfUkFOR0UoInZhbHVlIixBdCxFZSl9dmFyIFB0LEF0LEp0O1B0PWF0LEp0PU90LEhlKEF0PWN0LCJvZmZzZXQiKSx2b2lkIDAhPT1QdFtBdF0mJnZvaWQgMCE9PVB0W0F0K0p0XXx8UWUoQXQsUHQubGVuZ3Ro''@;'; put 'put ''LShKdCsxKSl9ZnVuY3Rpb24gSGUoRWUsRGUpe2lmKCJudW1iZXIiIT10eXBlb2YgRWUpdGhyb3cgbmV3IEZlLkVSUl9JTlZBTElEX0FSR19UWVBFKERlLCJudW1iZXIiLEVlKX1mdW5jdGlvbiBRZShFZSxEZSwkZSl7dGhyb3cgTWF0aC5mbG9vcihFZSkhPT1FZT8oSGUoRWUsJGUpLG5ldyBG''@;'; put 'put ''ZS5FUlJfT1VUX09GX1JBTkdFKCRlfHwib2Zmc2V0IiwiYW4gaW50ZWdlciIsRWUpKTpEZTwwP25ldyBGZS5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM6bmV3IEZlLkVSUl9PVVRfT0ZfUkFOR0UoJGV8fCJvZmZzZXQiLGA+PSAkeyRlPzE6MH0gYW5kIDw9ICR7RGV9YCxFZSl9TmUoIkVSUl9C''@;'; put 'put ''VUZGRVJfT1VUX09GX0JPVU5EUyIsZnVuY3Rpb24oRWUpe3JldHVybiBFZT9gJHtFZX0gaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzYDoiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kcyJ9LFJhbmdlRXJyb3IpLE5lKCJFUlJfSU5WQUxJRF9BUkdfVFlQ''@;'; put 'put ''RSIsZnVuY3Rpb24oRWUsRGUpe3JldHVybmBUaGUgIiR7RWV9IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIERlfWB9LFR5cGVFcnJvciksTmUoIkVSUl9PVVRfT0ZfUkFOR0UiLGZ1bmN0aW9uKEVlLERlLCRlKXtsZXQgYXQ9YFRoZSB2''@;'; put 'put ''YWx1ZSBvZiAiJHtFZX0iIGlzIG91dCBvZiByYW5nZS5gLGN0PSRlO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKCRlKSYmTWF0aC5hYnMoJGUpPjQyOTQ5NjcyOTY/Y3Q9TGUoU3RyaW5nKCRlKSk6ImJpZ2ludCI9PXR5cGVvZiAkZSYmKGN0PVN0cmluZygkZSksKCRlPkJpZ0ludCgyKSoqQmln''@;'; put 'put ''SW50KDMyKXx8JGU8LShCaWdJbnQoMikqKkJpZ0ludCgzMikpKSYmKGN0PUxlKGN0KSksY3QrPSJuIiksYXQrPWAgSXQgbXVzdCBiZSAke0RlfS4gUmVjZWl2ZWQgJHtjdH1gLGF0fSxSYW5nZUVycm9yKTtjb25zdCBtdD0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIEtlKEVlLERlKXts''@;'; put 'put ''ZXQgJGU7RGU9RGV8fDEvMDtjb25zdCBhdD1FZS5sZW5ndGg7bGV0IGN0PW51bGw7Y29uc3QgT3Q9W107Zm9yKGxldCBQdD0wO1B0PGF0OysrUHQpe2lmKCRlPUVlLmNoYXJDb2RlQXQoUHQpLCRlPjU1Mjk1JiYkZTw1NzM0NCl7aWYoIWN0KXtpZigkZT41NjMxOSl7KERlLT0zKT4tMSYmT3Qu''@;'; put 'put ''cHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoUHQrMT09PWF0KXsoRGUtPTMpPi0xJiZPdC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1jdD0kZTtjb250aW51ZX1pZigkZTw1NjMyMCl7KERlLT0zKT4tMSYmT3QucHVzaCgyMzksMTkxLDE4OSksY3Q9JGU7Y29udGludWV9JGU9NjU1''@;'; put 'put ''MzYrKGN0LTU1Mjk2PDwxMHwkZS01NjMyMCl9ZWxzZSBjdCYmKERlLT0zKT4tMSYmT3QucHVzaCgyMzksMTkxLDE4OSk7aWYoY3Q9bnVsbCwkZTwxMjgpe2lmKChEZS09MSk8MClicmVhaztPdC5wdXNoKCRlKX1lbHNlIGlmKCRlPDIwNDgpe2lmKChEZS09Mik8MClicmVhaztPdC5wdXNoKCRl''@;'; put 'put ''Pj42fDE5Miw2MyYkZXwxMjgpfWVsc2UgaWYoJGU8NjU1MzYpe2lmKChEZS09Myk8MClicmVhaztPdC5wdXNoKCRlPj4xMnwyMjQsJGU+PjYmNjN8MTI4LDYzJiRlfDEyOCl9ZWxzZXtpZighKCRlPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKERl''@;'; put 'put ''LT00KTwwKWJyZWFrO090LnB1c2goJGU+PjE4fDI0MCwkZT4+MTImNjN8MTI4LCRlPj42JjYzfDEyOCw2MyYkZXwxMjgpfX1yZXR1cm4gT3R9ZnVuY3Rpb24gd2UoRWUpe3JldHVybiBKLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKERlKXtpZigoRGU9KERlPURlLnNwbGl0KCI9IilbMF0pLnRyaW0o''@;'; put 'put ''KS5yZXBsYWNlKG10LCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtEZS5sZW5ndGglNCE9MDspRGUrPSI9IjtyZXR1cm4gRGV9KEVlKSl9ZnVuY3Rpb24gSWUoRWUsRGUsJGUsYXQpe2xldCBjdDtmb3IoY3Q9MDtjdDxhdCYmIShjdCskZT49RGUubGVuZ3RofHxjdD49RWUubGVuZ3RoKTsr''@;'; put 'put ''K2N0KURlW2N0KyRlXT1FZVtjdF07cmV0dXJuIGN0fWZ1bmN0aW9uIE9lKEVlLERlKXtyZXR1cm4gRWUgaW5zdGFuY2VvZiBEZXx8bnVsbCE9RWUmJm51bGwhPUVlLmNvbnN0cnVjdG9yJiZudWxsIT1FZS5jb25zdHJ1Y3Rvci5uYW1lJiZFZS5jb25zdHJ1Y3Rvci5uYW1lPT09RGUubmFtZX1m''@;'; put 'put ''dW5jdGlvbiBldChFZSl7cmV0dXJuIEVlIT1FZX1jb25zdCBudD1mdW5jdGlvbigpe2NvbnN0IEVlPSIwMTIzNDU2Nzg5YWJjZGVmIixEZT1uZXcgQXJyYXkoMjU2KTtmb3IobGV0ICRlPTA7JGU8MTY7KyskZSl7Y29uc3QgYXQ9MTYqJGU7Zm9yKGxldCBjdD0wO2N0PDE2OysrY3QpRGVbYXQr''@;'; put 'put ''Y3RdPUVlWyRlXStFZVtjdF19cmV0dXJuIERlfSgpO2Z1bmN0aW9uIHFlKEVlKXtyZXR1cm4gdHlwZW9mIEJpZ0ludD4idSI/aHQ6RWV9ZnVuY3Rpb24gaHQoKXt0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBub3Qgc3VwcG9ydGVkIil9fSwxOTI0OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IEs9TCgyMTApLEo9TCg1NTU5KSxJPUooSygiU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mIikpO0guZXhwb3J0cz1mdW5jdGlvbihSLEUpe3ZhciB6PUsoUiwhIUUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB6JiZJKFIsIi5wcm90b3R5cGUuIik+LTE/Sih6KTp6fX0sNTU1OTooSCxCLEwp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBLPUwoODYxMiksSj1MKDIxMCksST1KKCIlRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JSIpLFI9SigiJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJSIpLEU9SigiJVJlZmxlY3QuYXBwbHklIiwhMCl8fEsuY2FsbChSLEkpLHo9SigiJU9iamVjdC5nZXRPd25Q''@;'; put 'put ''cm9wZXJ0eURlc2NyaXB0b3IlIiwhMCksaj1KKCIlT2JqZWN0LmRlZmluZVByb3BlcnR5JSIsITApLFY9SigiJU1hdGgubWF4JSIpO2lmKGopdHJ5e2ooe30sImEiLHt2YWx1ZToxfSl9Y2F0Y2h7aj1udWxsfUguZXhwb3J0cz1mdW5jdGlvbihXKXt2YXIgVT1FKEssUixhcmd1bWVudHMpO3Jl''@;'; put 'put ''dHVybiB6JiZqJiZ6KFUsImxlbmd0aCIpLmNvbmZpZ3VyYWJsZSYmaihVLCJsZW5ndGgiLHt2YWx1ZToxK1YoMCxXLmxlbmd0aC0oYXJndW1lbnRzLmxlbmd0aC0xKSl9KSxVfTt2YXIgRz1mdW5jdGlvbigpe3JldHVybiBFKEssSSxhcmd1bWVudHMpfTtqP2ooSC5leHBvcnRzLCJhcHBseSIs''@;'; put 'put ''e3ZhbHVlOkd9KTpILmV4cG9ydHMuYXBwbHk9R30sMTAyNzooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXIsSj1MKDI4MzApLlRyYW5zZm9ybSxJPUwoMjU1MykuU3RyaW5nRGVjb2RlcjtmdW5jdGlvbiBSKEUpe0ouY2FsbCh0aGlzKSx0aGlzLmhhc2hNb2RlPSJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgRSx0aGlzLmhhc2hNb2RlP3RoaXNbRV09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZmluYWwmJih0aGlzLl9fZmluYWw9dGhpcy5fZmluYWwsdGhpcy5fZmluYWw9bnVsbCksdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29k''@;'; put 'put ''aW5nPW51bGx9TCg1NzE3KShSLEopLFIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihFLHosail7InN0cmluZyI9PXR5cGVvZiBFJiYoRT1LLmZyb20oRSx6KSk7dmFyIFY9dGhpcy5fdXBkYXRlKEUpO3JldHVybiB0aGlzLmhhc2hNb2RlP3RoaXM6KGomJihWPXRoaXMuX3RvU3RyaW5nKFYs''@;'; put 'put ''aikpLFYpfSxSLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbigpe30sUi5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxSLnByb3RvdHlwZS5zZXRBdXRo''@;'; put 'put ''VGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LFIucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUi''@;'; put 'put ''KX0sUi5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihFLHosail7dmFyIFY7dHJ5e3RoaXMuaGFzaE1vZGU/dGhpcy5fdXBkYXRlKEUpOnRoaXMucHVzaCh0aGlzLl91cGRhdGUoRSkpfWNhdGNoKEcpe1Y9R31maW5hbGx5e2ooVil9fSxSLnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24o''@;'; put 'put ''RSl7dmFyIHo7dHJ5e3RoaXMucHVzaCh0aGlzLl9fZmluYWwoKSl9Y2F0Y2goail7ej1qfUUoeil9LFIucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKEUpe3ZhciB6PXRoaXMuX19maW5hbCgpfHxLLmFsbG9jKDApO3JldHVybiBFJiYoej10aGlzLl90b1N0cmluZyh6LEUsITAp''@;'; put 'put ''KSx6fSxSLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24oRSx6LGope2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBJKHopLHRoaXMuX2VuY29kaW5nPXopLHRoaXMuX2VuY29kaW5nIT09eil0aHJvdyBuZXcgRXJyb3IoImNhbid0IHN3aXRjaCBlbmNvZGluZ3MiKTt2''@;'; put 'put ''YXIgVj10aGlzLl9kZWNvZGVyLndyaXRlKEUpO3JldHVybiBqJiYoVis9dGhpcy5fZGVjb2Rlci5lbmQoKSksVn0sSC5leHBvcnRzPVJ9LDEwNDg6SD0+e0guZXhwb3J0cz1mdW5jdGlvbihMLEspe2Zvcih2YXIgSj1bXSxJPTA7STxMLmxlbmd0aDtJKyspe3ZhciBSPUsoTFtJXSxJKTtCKFIp''@;'; put 'put ''P0oucHVzaC5hcHBseShKLFIpOkoucHVzaChSKX1yZXR1cm4gSn07dmFyIEI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oTCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChMKX19LDUxMDg6KEgsQixMKT0+e3ZhciBLPUwoOTUzOSksSj1M''@;'; put 'put ''KDkyODIpO2Z1bmN0aW9uIEkoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX12YXIgUixFPUFycmF5LnByb3RvdHlwZS5zbGljZSx6PXt9O1I9dm9pZCAwIT09TC5nJiZMLmcuY29uc29sZT9MLmcuY29uc29sZTp0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmNvbnNvbGU/d2luZG93LmNv''@;'; put 'put ''bnNvbGU6e307Zm9yKHZhciBqPVtbZnVuY3Rpb24oKXt9LCJsb2ciXSxbZnVuY3Rpb24oKXtSLmxvZy5hcHBseShSLGFyZ3VtZW50cyl9LCJpbmZvIl0sW2Z1bmN0aW9uKCl7Ui5sb2cuYXBwbHkoUixhcmd1bWVudHMpfSwid2FybiJdLFtmdW5jdGlvbigpe1Iud2Fybi5hcHBseShSLGFyZ3Vt''@;'; put 'put ''ZW50cyl9LCJlcnJvciJdLFtmdW5jdGlvbihxKXt6W3FdPUkoKX0sInRpbWUiXSxbZnVuY3Rpb24ocSl7dmFyIHRlPXpbcV07aWYoIXRlKXRocm93IG5ldyBFcnJvcigiTm8gc3VjaCBsYWJlbDogIitxKTtkZWxldGUgeltxXTt2YXIgbmU9SSgpLXRlO1IubG9nKHErIjogIituZSsibXMiKX0s''@;'; put 'put ''InRpbWVFbmQiXSxbZnVuY3Rpb24oKXt2YXIgcT1uZXcgRXJyb3I7cS5uYW1lPSJUcmFjZSIscS5tZXNzYWdlPUsuZm9ybWF0LmFwcGx5KG51bGwsYXJndW1lbnRzKSxSLmVycm9yKHEuc3RhY2spfSwidHJhY2UiXSxbZnVuY3Rpb24ocSl7Ui5sb2coSy5pbnNwZWN0KHEpKyJcbiIpfSwiZGly''@;'; put 'put ''Il0sW2Z1bmN0aW9uKHEpe2lmKCFxKXt2YXIgdGU9RS5jYWxsKGFyZ3VtZW50cywxKTtKLm9rKCExLEsuZm9ybWF0LmFwcGx5KG51bGwsdGUpKX19LCJhc3NlcnQiXV0sVj0wO1Y8ai5sZW5ndGg7VisrKXt2YXIgRz1qW1ZdLFU9R1sxXTtSW1VdfHwoUltVXT1HWzBdKX1ILmV4cG9ydHM9Un0s''@;'; put 'put ''NjM5MzooSCxCLEwpPT57dmFyIEs9TCg4NzY0KS5CdWZmZXIsSj1MKDY5NDgpLEk9TCg2NDI2KTtILmV4cG9ydHM9ZnVuY3Rpb24oail7cmV0dXJuIG5ldyBFKGopfTt2YXIgUj17c2VjcDI1NmsxOntuYW1lOiJzZWNwMjU2azEiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AyMjRyMTp7bmFtZToicDIy''@;'; put 'put ''NCIsYnl0ZUxlbmd0aDoyOH0scHJpbWUyNTZ2MTp7bmFtZToicDI1NiIsYnl0ZUxlbmd0aDozMn0scHJpbWUxOTJ2MTp7bmFtZToicDE5MiIsYnl0ZUxlbmd0aDoyNH0sZWQyNTUxOTp7bmFtZToiZWQyNTUxOSIsYnl0ZUxlbmd0aDozMn0sc2VjcDM4NHIxOntuYW1lOiJwMzg0IixieXRlTGVu''@;'; put 'put ''Z3RoOjQ4fSxzZWNwNTIxcjE6e25hbWU6InA1MjEiLGJ5dGVMZW5ndGg6NjZ9fTtmdW5jdGlvbiBFKGope3RoaXMuY3VydmVUeXBlPVJbal0sdGhpcy5jdXJ2ZVR5cGV8fCh0aGlzLmN1cnZlVHlwZT17bmFtZTpqfSksdGhpcy5jdXJ2ZT1uZXcgSi5lYyh0aGlzLmN1cnZlVHlwZS5uYW1lKSx0''@;'; put 'put ''aGlzLmtleXM9dm9pZCAwfWZ1bmN0aW9uIHooaixWLEcpe0FycmF5LmlzQXJyYXkoail8fChqPWoudG9BcnJheSgpKTt2YXIgVz1uZXcgSyhqKTtpZihHJiZXLmxlbmd0aDxHKXt2YXIgVT1uZXcgSyhHLVcubGVuZ3RoKTtVLmZpbGwoMCksVz1LLmNvbmNhdChbVSxXXSl9cmV0dXJuIFY/Vy50''@;'; put 'put ''b1N0cmluZyhWKTpXfVIucDIyND1SLnNlY3AyMjRyMSxSLnAyNTY9Ui5zZWNwMjU2cjE9Ui5wcmltZTI1NnYxLFIucDE5Mj1SLnNlY3AxOTJyMT1SLnByaW1lMTkydjEsUi5wMzg0PVIuc2VjcDM4NHIxLFIucDUyMT1SLnNlY3A1MjFyMSxFLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rp''@;'; put 'put ''b24oaixWKXtyZXR1cm4gdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMuZ2V0UHVibGljS2V5KGosVil9LEUucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9ZnVuY3Rpb24oaixWLEcpe3JldHVybiBWPVZ8fCJ1dGY4IixLLmlzQnVmZmVyKGopfHwoaj1uZXcgSyhqLFYpKSx6''@;'; put 'put ''KHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhqKS5nZXRQdWJsaWMoKS5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpLEcsdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCl9LEUucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihqLFYpe3ZhciBHPXRoaXMua2V5cy5nZXRQ''@;'; put 'put ''dWJsaWMoImNvbXByZXNzZWQiPT09ViwhMCk7cmV0dXJuImh5YnJpZCI9PT1WJiYoR1swXT1HW0cubGVuZ3RoLTFdJTI/Nzo2KSx6KEcsail9LEUucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oail7cmV0dXJuIHoodGhpcy5rZXlzLmdldFByaXZhdGUoKSxqKX0sRS5wcm90b3R5''@;'; put 'put ''cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKGosVil7cmV0dXJuIFY9Vnx8InV0ZjgiLEsuaXNCdWZmZXIoail8fChqPW5ldyBLKGosVikpLHRoaXMua2V5cy5faW1wb3J0UHVibGljKGopLHRoaXN9LEUucHJvdG90eXBlLnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oaixWKXtWPVZ8fCJ1dGY4IixL''@;'; put 'put ''LmlzQnVmZmVyKGopfHwoaj1uZXcgSyhqLFYpKTt2YXIgRz1uZXcgSShqKTtyZXR1cm4gRz1HLnRvU3RyaW5nKDE2KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKEcpLHRoaXN9fSw2NDI2OmZ1bmN0aW9uKEgsQixMKXshZnVuY3Rp''@;'; put 'put ''b24oSyxKKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSShnLEMpe2lmKCFnKXRocm93IG5ldyBFcnJvcihDfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFIoZyxDKXtnLnN1cGVyXz1DO3ZhciBNPWZ1bmN0aW9uKCl7fTtNLnByb3RvdHlwZT1DLnByb3RvdHlwZSxnLnByb3RvdHlwZT1u''@;'; put 'put ''ZXcgTSxnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nfWZ1bmN0aW9uIEUoZyxDLE0pe2lmKEUuaXNCTihnKSlyZXR1cm4gZzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09ZyYmKCJsZSIhPT1DJiYiYmUiIT09Q3x8KE09''@;'; put 'put ''QyxDPTEwKSx0aGlzLl9pbml0KGd8fDAsQ3x8MTAsTXx8ImJlIikpfXZhciB6OyJvYmplY3QiPT10eXBlb2YgSz9LLmV4cG9ydHM9RTpKLkJOPUUsRS5CTj1FLEUud29yZFNpemU9MjY7dHJ5e3o9dHlwZW9mIHdpbmRvdzwidSImJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZl''@;'; put 'put ''cjpMKDg2MjMpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gaihnLEMpe3ZhciBNPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gTT49NjUmJk08PTcwP00tNTU6TT49OTcmJk08PTEwMj9NLTg3Ok0tNDgmMTV9ZnVuY3Rpb24gVihnLEMsTSl7dmFyIHk9aihnLE0pO3JldHVybiBNLTE+PUMmJih5fD1q''@;'; put 'put ''KGcsTS0xKTw8NCkseX1mdW5jdGlvbiBHKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9TWF0aC5taW4oZy5sZW5ndGgsTSksUT1DO1E8UztRKyspe3ZhciByZT1nLmNoYXJDb2RlQXQoUSktNDg7cCo9eSxwKz1yZT49NDk/cmUtNDkrMTA6cmU+PTE3P3JlLTE3KzEwOnJlfXJldHVybiBwfUUuaXNC''@;'; put 'put ''Tj1mdW5jdGlvbihnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1heD1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4w''@;'; put 'put ''P2c6Q30sRS5taW49ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxNKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxDLE0pO2lmKCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4g''@;'; put 'put ''dGhpcy5faW5pdEFycmF5KGcsQyxNKTsiaGV4Ij09PUMmJihDPTE2KSxJKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciB5PTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih5KyssdGhpcy5uZWdhdGl2ZT0xKSx5PGcubGVuZ3RoJiYoMTY9PT1DP3Ro''@;'; put 'put ''aXMuX3BhcnNlSGV4KGcseSxNKToodGhpcy5fcGFyc2VCYXNlKGcsQyx5KSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsTSkpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLE0pe2c8MCYmKHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3''@;'; put 'put ''MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEkoZzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEw''@;'; put 'put ''ODg2MyZnLGcvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU0mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLE0pfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxNKXtpZihJKCJudW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcu''@;'; put 'put ''bGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHk9MDt5PHRoaXMubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPTA7''@;'; put 'put ''dmFyIHAsUyxRPTA7aWYoImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMSxwPTA7eT49MDt5LT0zKXRoaXMud29yZHNbcF18PShTPWdbeV18Z1t5LTFdPDw4fGdbeS0yXTw8MTYpPDxRJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT1TPj4+MjYtUSY2NzEwODg2MywoUSs9MjQpPj0yNiYmKFEtPTI2''@;'; put 'put ''LHArKyk7ZWxzZSBpZigibGUiPT09TSlmb3IoeT0wLHA9MDt5PGcubGVuZ3RoO3krPTMpdGhpcy53b3Jkc1twXXw9KFM9Z1t5XXxnW3krMV08PDh8Z1t5KzJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1RJjY3MTA4ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsr''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLE0pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRo''@;'; put 'put ''aXMud29yZHNbeV09MDt2YXIgcCxTPTAsUT0wO2lmKCJiZSI9PT1NKWZvcih5PWcubGVuZ3RoLTE7eT49Qzt5LT0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O2Vsc2UgZm9yKHk9KGcu''@;'; put 'put ''bGVuZ3RoLUMpJTI9PTA/QysxOkM7eTxnLmxlbmd0aDt5Kz0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O3RoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlv''@;'; put 'put ''bihnLEMsTSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCxwPTE7cDw9NjcxMDg4NjM7cCo9Qyl5Kys7eS0tLHA9cC9DfDA7Zm9yKHZhciBTPWcubGVuZ3RoLU0sUT1TJXkscmU9TWF0aC5taW4oUyxTLVEpK00sZmU9MCxtZT1NO21lPHJlO21lKz15KWZlPUcoZyxt''@;'; put 'put ''ZSxtZSt5LEMpLHRoaXMuaW11bG4ocCksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSk7aWYoMCE9PVEpe3ZhciBrZT0xO2ZvcihmZT1HKGcsbWUsZy5sZW5ndGgsQyksbWU9MDttZTxRO21lKyspa2UqPUM7dGhpcy5pbXVsbihrZSks''@;'; put 'put ''dGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKyln''@;'; put 'put ''LndvcmRzW0NdPXRoaXMud29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5''@;'; put 'put ''cGUuX2V4cGFuZD1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0''@;'; put 'put ''aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sRS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgVz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAs''@;'; put 'put ''OSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3''@;'; put 'put ''NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwz''@;'; put 'put ''OTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdGUoZyxDLE0pe00ubmVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciB5PWcubGVuZ3RoK0MubGVuZ3RofDA7TS5sZW5ndGg9eSx5PXktMXwwO3ZhciBwPTB8Zy53b3Jkc1swXSxTPTB8Qy53b3Jkc1sw''@;'; put 'put ''XSxRPXAqUyxmZT1RLzY3MTA4ODY0fDA7TS53b3Jkc1swXT02NzEwODg2MyZRO2Zvcih2YXIgbWU9MTttZTx5O21lKyspe2Zvcih2YXIga2U9ZmU+Pj4yNixUZT02NzEwODg2MyZmZSxQZT1NYXRoLm1pbihtZSxDLmxlbmd0aC0xKSxGZT1NYXRoLm1heCgwLG1lLWcubGVuZ3RoKzEpO0ZlPD1Q''@;'; put 'put ''ZTtGZSsrKWtlKz0oUT0ocD0wfGcud29yZHNbbWUtRmV8MF0pKihTPTB8Qy53b3Jkc1tGZV0pK1RlKS82NzEwODg2NHwwLFRlPTY3MTA4ODYzJlE7TS53b3Jkc1ttZV09MHxUZSxmZT0wfGtlfXJldHVybiAwIT09ZmU/TS53b3Jkc1ttZV09MHxmZTpNLmxlbmd0aC0tLE0uc3RyaXAoKX1FLnBy''@;'; put 'put ''b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBNO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe009IiI7Zm9yKHZhciB5PTAscD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIFE9dGhpcy53b3Jkc1tTXSxyZT0oMTY3NzcyMTUmKFE8PHl8cCkpLnRv''@;'; put 'put ''U3RyaW5nKDE2KTtNPTAhPShwPVE+Pj4yNC15JjE2Nzc3MjE1KXx8UyE9PXRoaXMubGVuZ3RoLTE/V1s2LXJlLmxlbmd0aF0rcmUrTTpyZStNLCh5Kz0yKT49MjYmJih5LT0yNixTLS0pfWZvcigwIT09cCYmKE09cC50b1N0cmluZygxNikrTSk7TS5sZW5ndGglQyE9MDspTT0iMCIrTTtyZXR1''@;'; put 'put ''cm4gMCE9PXRoaXMubmVnYXRpdmUmJihNPSItIitNKSxNfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBmZT1VW2ddLG1lPXFbZ107TT0iIjt2YXIga2U9dGhpcy5jbG9uZSgpO2ZvcihrZS5uZWdhdGl2ZT0wOyFrZS5pc1plcm8oKTspe3ZhciBUZT1rZS5tb2RuKG1lKS50b1N0cmlu''@;'; put 'put ''ZyhnKTtNPShrZT1rZS5pZGl2bihtZSkpLmlzWmVybygpP1RlK006V1tmZS1UZS5sZW5ndGhdK1RlK019Zm9yKHRoaXMuaXNaZXJvKCkmJihNPSIwIitNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKE09Ii0iK00pLE19SSghMSwiQmFzZSBzaG91''@;'; put 'put ''bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9''@;'; put 'put ''NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gSSh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5''@;'; put 'put ''LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT10aGlzLmJ5dGVMZW5ndGgoKSxwPU18fE1hdGgubWF4KDEseSk7SSh5PD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksSShwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5n''@;'; put 'put ''dGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgUyxRLHJlPSJsZSI9PT1DLGZlPW5ldyBnKHApLG1lPXRoaXMuY2xvbmUoKTtpZihyZSl7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbUV09Uztmb3IoO1E8cDtRKyspZmVbUV09MH1lbHNl''@;'; put 'put ''e2ZvcihRPTA7UTxwLXk7USsrKWZlW1FdPTA7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbcC1RLTFdPVN9cmV0dXJuIGZlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGgu''@;'; put 'put ''Y2x6MzIoZyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsTT0wO3JldHVybiBDPj00MDk2JiYoTSs9MTMsQz4+Pj0xMyksQz49NjQmJihNKz03LEM+Pj49NyksQz49OCYmKE0rPTQsQz4+Pj00KSxDPj0yJiYoTSs9MixDPj4+PTIpLE0rQ30sRS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcp''@;'; put 'put ''e2lmKDA9PT1nKXJldHVybiAyNjt2YXIgQz1nLE09MDtyZXR1cm4hKDgxOTEmQykmJihNKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKE0rPTcsQz4+Pj03KSwhKDE1JkMpJiYoTSs9NCxDPj4+PTQpLCEoMyZDKSYmKE0rPTIsQz4+Pj0yKSwhKDEmQykmJk0rKyxNfSxFLnByb3RvdHlwZS5iaXRM''@;'; put 'put ''ZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAs''@;'; put 'put ''Qz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1NLDI2IT09TSlicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5w''@;'; put 'put ''cm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZyku''@;'; put 'put ''aWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlz''@;'; put 'put ''LndvcmRzW0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVvcihnKX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlz''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dJmcud29yZHNbTV07cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRo''@;'; put 'put ''aXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCku''@;'; put 'put ''aWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFy''@;'; put 'put ''IEMsTTt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLE09Zyk6KEM9ZyxNPXRoaXMpO2Zvcih2YXIgeT0wO3k8TS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09Qy53b3Jkc1t5XV5NLndvcmRzW3ldO2lmKHRoaXMhPT1DKWZvcig7eTxDLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT1DLndv''@;'; put 'put ''cmRzW3ldO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhp''@;'; put 'put ''cyl9LEUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxNPWclMjY7dGhpcy5fZXhwYW5kKEMpLE0+MCYmQy0tO2Zvcih2YXIgeT0wO3k8Qzt5KyspdGhpcy53b3Jkc1t5XT02NzEwODg2MyZ+dGhp''@;'; put 'put ''cy53b3Jkc1t5XTtyZXR1cm4gTT4wJiYodGhpcy53b3Jkc1t5XT1+dGhpcy53b3Jkc1t5XSY2NzEwODg2Mz4+MjYtTSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rp''@;'; put 'put ''b24oZyxDKXtJKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIE09Zy8yNnwwLHk9ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXT1DP3RoaXMud29yZHNbTV18MTw8eTp0aGlzLndvcmRzW01dJn4oMTw8eSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5p''@;'; put 'put ''YWRkPWZ1bmN0aW9uKGcpe3ZhciBDLE0seTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5l''@;'; put 'put ''Z2F0aXZlKXJldHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIHA9MCxTPTA7Uzx5Lmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT02NzEw''@;'; put 'put ''ODg2MyYoQz0oMHxNLndvcmRzW1NdKSsoMHx5LndvcmRzW1NdKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZTPE0ubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMubGVuZ3RoPU0ubGVuZ3RoLDAhPT1wKXRoaXMu''@;'; put 'put ''d29yZHNbdGhpcy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE0hPT10aGlzKWZvcig7UzxNLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1NLndvcmRzW1NdO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZl''@;'; put 'put ''JiYwPT09dGhpcy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxl''@;'; put 'put ''bmd0aD90aGlzLmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYo''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0seSxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRz''@;'; put 'put ''WzBdPTAsdGhpcztwPjA/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIFM9MCxRPTA7UTx5Lmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKS0oMHx5LndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZDO2Zvcig7MCE9PVMmJlE8TS5sZW5ndGg7USsr''@;'; put 'put ''KVM9KEM9KDB8TS53b3Jkc1tRXSkrUyk+PjI2LHRoaXMud29yZHNbUV09NjcxMDg4NjMmQztpZigwPT09UyYmUTxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtRPE0ubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPU0ud29yZHNbUV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVu''@;'; put 'put ''Z3RoLFEpLE0hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBuZT1mdW5jdGlvbihnLEMsTSl7dmFyIHkscCxTLFE9Zy53b3JkcyxyZT1DLndvcmRzLGZlPU0u''@;'; put 'put ''d29yZHMsbWU9MCxrZT0wfFFbMF0sVGU9ODE5MSZrZSxQZT1rZT4+PjEzLEZlPTB8UVsxXSxOZT04MTkxJkZlLExlPUZlPj4+MTMsQmU9MHxRWzJdLEhlPTgxOTEmQmUsUWU9QmU+Pj4xMyxtdD0wfFFbM10sS2U9ODE5MSZtdCx3ZT1tdD4+PjEzLEllPTB8UVs0XSxPZT04MTkxJkllLGV0PUll''@;'; put 'put ''Pj4+MTMsbnQ9MHxRWzVdLHFlPTgxOTEmbnQsaHQ9bnQ+Pj4xMyxFZT0wfFFbNl0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8UVs3XSxjdD04MTkxJmF0LE90PWF0Pj4+MTMsUHQ9MHxRWzhdLEF0PTgxOTEmUHQsSnQ9UHQ+Pj4xMyxtbj0wfFFbOV0sTnQ9ODE5MSZtbixibj1tbj4+PjEz''@;'; put 'put ''LEduPTB8cmVbMF0sb249ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8cmVbMV0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8cmVbMl0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8cmVbM10sVnQ9ODE5MSZfdCxfbj1fdD4+PjEzLG90PTB8cmVbNF0sSXQ9ODE5MSZvdCxubj1vdD4+PjEz''@;'; put 'put ''LER0PTB8cmVbNV0sdnQ9ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8cmVbNl0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8cmVbN10sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8cmVbOF0scXQ9ODE5MSZGbixIbj1Gbj4+PjEzLGlpPTB8cmVbOV0sY249ODE5MSZpaSxqbj1paT4+PjEz''@;'; put 'put ''O00ubmVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPTE5O3ZhciBYcj0obWUrKHk9TWF0aC5pbXVsKFRlLG9uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChUZSwkbikpK01hdGguaW11bChQZSxvbil8MCkpPDwxMyl8MDttZT0oKFM9TWF0aC5pbXVsKFBlLCRuKSkr''@;'; put 'put ''KHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE5lLG9uKSxwPShwPU1hdGguaW11bChOZSwkbikpK01hdGguaW11bChMZSxvbil8MCxTPU1hdGguaW11bChMZSwkbik7dmFyIHZpPShtZSsoeT15K01hdGguaW11bChUZSxwdCl8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKFRlLHBuKXwwKStNYXRoLmltdWwoUGUscHQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLHBuKXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4NjMseT1NYXRoLmltdWwoSGUsb24pLHA9KHA9TWF0aC5pbXVsKEhlLCRuKSkrTWF0''@;'; put 'put ''aC5pbXVsKFFlLG9uKXwwLFM9TWF0aC5pbXVsKFFlLCRuKSx5PXkrTWF0aC5pbXVsKE5lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUscG4pfDApK01hdGguaW11bChMZSxwdCl8MCxTPVMrTWF0aC5pbXVsKExlLHBuKXwwO3ZhciBFcj0obWUrKHk9eStNYXRoLmltdWwoVGUsQ3QpfDApfDAp''@;'; put 'put ''KygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxlbil8MCkrTWF0aC5pbXVsKFBlLEN0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxlbil8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEtlLG9uKSxwPShwPU1hdGguaW11bChL''@;'; put 'put ''ZSwkbikpK01hdGguaW11bCh3ZSxvbil8MCxTPU1hdGguaW11bCh3ZSwkbikseT15K01hdGguaW11bChIZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLHBuKXwwKStNYXRoLmltdWwoUWUscHQpfDAsUz1TK01hdGguaW11bChRZSxwbil8MCx5PXkrTWF0aC5pbXVsKE5lLEN0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoTmUsZW4pfDApK01hdGguaW11bChMZSxDdCl8MCxTPVMrTWF0aC5pbXVsKExlLGVuKXwwO3ZhciBZaT0obWUrKHk9eStNYXRoLmltdWwoVGUsVnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxfbil8MCkrTWF0aC5pbXVsKFBlLFZ0KXwwKSk8PDEzKXww''@;'; put 'put ''O21lPSgoUz1TK01hdGguaW11bChQZSxfbil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE9lLG9uKSxwPShwPU1hdGguaW11bChPZSwkbikpK01hdGguaW11bChldCxvbil8MCxTPU1hdGguaW11bChldCwkbikseT15K01hdGguaW11bChLZSxw''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsUz1TK01hdGguaW11bCh3ZSxwbil8MCx5PXkrTWF0aC5pbXVsKEhlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsZW4pfDApK01hdGguaW11bChRZSxDdCl8MCxTPVMrTWF0aC5pbXVsKFFlLGVuKXww''@;'; put 'put ''LHk9eStNYXRoLmltdWwoTmUsVnQpfDAscD0ocD1wK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwLFM9UytNYXRoLmltdWwoTGUsX24pfDA7dmFyIEpyPShtZSsoeT15K01hdGguaW11bChUZSxJdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLG5uKXww''@;'; put 'put ''KStNYXRoLmltdWwoUGUsSXQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLG5uKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwocWUsb24pLHA9KHA9TWF0aC5pbXVsKHFlLCRuKSkrTWF0aC5pbXVsKGh0LG9uKXwwLFM9TWF0aC5p''@;'; put 'put ''bXVsKGh0LCRuKSx5PXkrTWF0aC5pbXVsKE9lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UscG4pfDApK01hdGguaW11bChldCxwdCl8MCxTPVMrTWF0aC5pbXVsKGV0LHBuKXwwLHk9eStNYXRoLmltdWwoS2UsQ3QpfDAscD0ocD1wK01hdGguaW11bChLZSxlbil8MCkrTWF0aC5pbXVsKHdl''@;'; put 'put ''LEN0KXwwLFM9UytNYXRoLmltdWwod2UsZW4pfDAseT15K01hdGguaW11bChIZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLF9uKXwwKStNYXRoLmltdWwoUWUsVnQpfDAsUz1TK01hdGguaW11bChRZSxfbil8MCx5PXkrTWF0aC5pbXVsKE5lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUs''@;'; put 'put ''bm4pfDApK01hdGguaW11bChMZSxJdCl8MCxTPVMrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbz0obWUrKHk9eStNYXRoLmltdWwoVGUsdnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxHdCl8MCkrTWF0aC5pbXVsKFBlLHZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGgu''@;'; put 'put ''aW11bChQZSxHdCl8MCkrKHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKERlLG9uKSxwPShwPU1hdGguaW11bChEZSwkbikpK01hdGguaW11bCgkZSxvbil8MCxTPU1hdGguaW11bCgkZSwkbikseT15K01hdGguaW11bChxZSxwdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKHFlLHBuKXwwKStNYXRoLmltdWwoaHQscHQpfDAsUz1TK01hdGguaW11bChodCxwbil8MCx5PXkrTWF0aC5pbXVsKE9lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsZW4pfDApK01hdGguaW11bChldCxDdCl8MCxTPVMrTWF0aC5pbXVsKGV0LGVuKXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''S2UsVnQpfDAscD0ocD1wK01hdGguaW11bChLZSxfbil8MCkrTWF0aC5pbXVsKHdlLFZ0KXwwLFM9UytNYXRoLmltdWwod2UsX24pfDAseT15K01hdGguaW11bChIZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLG5uKXwwKStNYXRoLmltdWwoUWUsSXQpfDAsUz1TK01hdGguaW11bChRZSxu''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKE5lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsR3QpfDApK01hdGguaW11bChMZSx2dCl8MCxTPVMrTWF0aC5pbXVsKExlLEd0KXwwO3ZhciBCcj0obWUrKHk9eStNYXRoLmltdWwoVGUsenQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxN''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKFBlLHp0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxNbil8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGN0LG9uKSxwPShwPU1hdGguaW11bChjdCwkbikpK01hdGguaW11bChPdCxvbil8MCxTPU1h''@;'; put 'put ''dGguaW11bChPdCwkbikseT15K01hdGguaW11bChEZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoJGUscHQpfDAsUz1TK01hdGguaW11bCgkZSxwbil8MCx5PXkrTWF0aC5pbXVsKHFlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11''@;'; put 'put ''bChodCxDdCl8MCxTPVMrTWF0aC5pbXVsKGh0LGVuKXwwLHk9eStNYXRoLmltdWwoT2UsVnQpfDAscD0ocD1wK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLFM9UytNYXRoLmltdWwoZXQsX24pfDAseT15K01hdGguaW11bChLZSxJdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEtlLG5uKXwwKStNYXRoLmltdWwod2UsSXQpfDAsUz1TK01hdGguaW11bCh3ZSxubil8MCx5PXkrTWF0aC5pbXVsKEhlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsR3QpfDApK01hdGguaW11bChRZSx2dCl8MCxTPVMrTWF0aC5pbXVsKFFlLEd0KXwwLHk9eStNYXRoLmltdWwoTmUsenQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwLFM9UytNYXRoLmltdWwoTGUsTW4pfDA7dmFyIEppPShtZSsoeT15K01hdGguaW11bChUZSxzbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLEJuKXwwKStNYXRoLmltdWwoUGUsc24pfDAp''@;'; put 'put ''KTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEJuKXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoQXQsb24pLHA9KHA9TWF0aC5pbXVsKEF0LCRuKSkrTWF0aC5pbXVsKEp0LG9uKXwwLFM9TWF0aC5pbXVsKEp0LCRuKSx5PXkrTWF0aC5p''@;'; put 'put ''bXVsKGN0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QscG4pfDApK01hdGguaW11bChPdCxwdCl8MCxTPVMrTWF0aC5pbXVsKE90LHBuKXwwLHk9eStNYXRoLmltdWwoRGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkrTWF0aC5pbXVsKCRlLEN0KXwwLFM9UytNYXRoLmltdWwo''@;'; put 'put ''JGUsZW4pfDAseT15K01hdGguaW11bChxZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLF9uKXwwKStNYXRoLmltdWwoaHQsVnQpfDAsUz1TK01hdGguaW11bChodCxfbil8MCx5PXkrTWF0aC5pbXVsKE9lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2Usbm4pfDApK01hdGguaW11bChldCxJ''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKGV0LG5uKXwwLHk9eStNYXRoLmltdWwoS2UsdnQpfDAscD0ocD1wK01hdGguaW11bChLZSxHdCl8MCkrTWF0aC5pbXVsKHdlLHZ0KXwwLFM9UytNYXRoLmltdWwod2UsR3QpfDAseT15K01hdGguaW11bChIZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLE1u''@;'; put 'put ''KXwwKStNYXRoLmltdWwoUWUsenQpfDAsUz1TK01hdGguaW11bChRZSxNbil8MCx5PXkrTWF0aC5pbXVsKE5lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCxTPVMrTWF0aC5pbXVsKExlLEJuKXwwO3ZhciB0bz0obWUrKHk9eStNYXRoLmltdWwo''@;'; put 'put ''VGUscXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxIbil8MCkrTWF0aC5pbXVsKFBlLHF0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxIbil8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LG9uKSxwPShw''@;'; put 'put ''PU1hdGguaW11bChOdCwkbikpK01hdGguaW11bChibixvbil8MCxTPU1hdGguaW11bChibiwkbikseT15K01hdGguaW11bChBdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoSnQscHQpfDAsUz1TK01hdGguaW11bChKdCxwbil8MCx5PXkrTWF0aC5pbXVsKGN0''@;'; put 'put ''LEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsZW4pfDApK01hdGguaW11bChPdCxDdCl8MCxTPVMrTWF0aC5pbXVsKE90LGVuKXwwLHk9eStNYXRoLmltdWwoRGUsVnQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLFM9UytNYXRoLmltdWwoJGUsX24p''@;'; put 'put ''fDAseT15K01hdGguaW11bChxZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsUz1TK01hdGguaW11bChodCxubil8MCx5PXkrTWF0aC5pbXVsKE9lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsR3QpfDApK01hdGguaW11bChldCx2dCl8MCxT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGV0LEd0KXwwLHk9eStNYXRoLmltdWwoS2UsenQpfDAscD0ocD1wK01hdGguaW11bChLZSxNbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLFM9UytNYXRoLmltdWwod2UsTW4pfDAseT15K01hdGguaW11bChIZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKEhlLEJuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoUWUsc24pfDAsUz1TK01hdGguaW11bChRZSxCbil8MCx5PXkrTWF0aC5pbXVsKE5lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsSG4pfDApK01hdGguaW11bChMZSxxdCl8MCxTPVMrTWF0aC5pbXVsKExlLEhuKXwwO3ZhciBjbz0obWUrKHk9eStNYXRoLmltdWwoVGUsY24p''@;'; put 'put ''fDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxqbil8MCkrTWF0aC5pbXVsKFBlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHB0KSxwPShwPU1hdGgu''@;'; put 'put ''aW11bChOdCxwbikpK01hdGguaW11bChibixwdCl8MCxTPU1hdGguaW11bChibixwbikseT15K01hdGguaW11bChBdCxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsUz1TK01hdGguaW11bChKdCxlbil8MCx5PXkrTWF0aC5pbXVsKGN0LFZ0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoY3QsX24pfDApK01hdGguaW11bChPdCxWdCl8MCxTPVMrTWF0aC5pbXVsKE90LF9uKXwwLHk9eStNYXRoLmltdWwoRGUsSXQpfDAscD0ocD1wK01hdGguaW11bChEZSxubil8MCkrTWF0aC5pbXVsKCRlLEl0KXwwLFM9UytNYXRoLmltdWwoJGUsbm4pfDAseT15''@;'; put 'put ''K01hdGguaW11bChxZSx2dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsUz1TK01hdGguaW11bChodCxHdCl8MCx5PXkrTWF0aC5pbXVsKE9lLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsTW4pfDApK01hdGguaW11bChldCx6dCl8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGV0LE1uKXwwLHk9eStNYXRoLmltdWwoS2Usc24pfDAscD0ocD1wK01hdGguaW11bChLZSxCbil8MCkrTWF0aC5pbXVsKHdlLHNuKXwwLFM9UytNYXRoLmltdWwod2UsQm4pfDAseT15K01hdGguaW11bChIZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoUWUscXQpfDAsUz1TK01hdGguaW11bChRZSxIbil8MDt2YXIgbG89KG1lKyh5PXkrTWF0aC5pbXVsKE5lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTmUsam4pfDApK01hdGguaW11bChMZSxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoTGUsam4pfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxDdCkscD0ocD1NYXRoLmltdWwoTnQsZW4pKStNYXRoLmltdWwoYm4sQ3QpfDAsUz1NYXRoLmltdWwoYm4sZW4pLHk9eStNYXRoLmltdWwoQXQsVnQpfDAscD0ocD1wK01hdGguaW11bChBdCxfbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEp0LFZ0KXwwLFM9UytNYXRoLmltdWwoSnQsX24pfDAseT15K01hdGguaW11bChjdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKGN0LG5uKXwwKStNYXRoLmltdWwoT3QsSXQpfDAsUz1TK01hdGguaW11bChPdCxubil8MCx5PXkrTWF0aC5pbXVsKERlLHZ0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoRGUsR3QpfDApK01hdGguaW11bCgkZSx2dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEd0KXwwLHk9eStNYXRoLmltdWwocWUsenQpfDAscD0ocD1wK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXwwLFM9UytNYXRoLmltdWwoaHQsTW4pfDAseT15K01hdGgu''@;'; put 'put ''aW11bChPZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKE9lLEJuKXwwKStNYXRoLmltdWwoZXQsc24pfDAsUz1TK01hdGguaW11bChldCxCbil8MCx5PXkrTWF0aC5pbXVsKEtlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UsSG4pfDApK01hdGguaW11bCh3ZSxxdCl8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KHdlLEhuKXwwO3ZhciBzbz0obWUrKHk9eStNYXRoLmltdWwoSGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChRZSxqbil8MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAs''@;'; put 'put ''c28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LFZ0KSxwPShwPU1hdGguaW11bChOdCxfbikpK01hdGguaW11bChibixWdCl8MCxTPU1hdGguaW11bChibixfbikseT15K01hdGguaW11bChBdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LG5uKXwwKStNYXRoLmltdWwoSnQsSXQpfDAsUz1T''@;'; put 'put ''K01hdGguaW11bChKdCxubil8MCx5PXkrTWF0aC5pbXVsKGN0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsR3QpfDApK01hdGguaW11bChPdCx2dCl8MCxTPVMrTWF0aC5pbXVsKE90LEd0KXwwLHk9eStNYXRoLmltdWwoRGUsenQpfDAscD0ocD1wK01hdGguaW11bChEZSxNbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKCRlLHp0KXwwLFM9UytNYXRoLmltdWwoJGUsTW4pfDAseT15K01hdGguaW11bChxZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKHFlLEJuKXwwKStNYXRoLmltdWwoaHQsc24pfDAsUz1TK01hdGguaW11bChodCxCbil8MCx5PXkrTWF0aC5pbXVsKE9lLHF0KXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoT2UsSG4pfDApK01hdGguaW11bChldCxxdCl8MCxTPVMrTWF0aC5pbXVsKGV0LEhuKXwwO3ZhciBYaT0obWUrKHk9eStNYXRoLmltdWwoS2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChLZSxqbil8MCkrTWF0aC5pbXVsKHdlLGNuKXwwKSk8PDEzKXwwO21lPSgo''@;'; put 'put ''Uz1TK01hdGguaW11bCh3ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEl0KSxwPShwPU1hdGguaW11bChOdCxubikpK01hdGguaW11bChibixJdCl8MCxTPU1hdGguaW11bChibixubikseT15K01hdGguaW11bChBdCx2dCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoSnQsdnQpfDAsUz1TK01hdGguaW11bChKdCxHdCl8MCx5PXkrTWF0aC5pbXVsKGN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsTW4pfDApK01hdGguaW11bChPdCx6dCl8MCxTPVMrTWF0aC5pbXVsKE90LE1uKXwwLHk9eStN''@;'; put 'put ''YXRoLmltdWwoRGUsc24pfDAscD0ocD1wK01hdGguaW11bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLFM9UytNYXRoLmltdWwoJGUsQm4pfDAseT15K01hdGguaW11bChxZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEhuKXwwKStNYXRoLmltdWwoaHQscXQpfDAsUz1TK01hdGgu''@;'; put 'put ''aW11bChodCxIbil8MDt2YXIgcG89KG1lKyh5PXkrTWF0aC5pbXVsKE9lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT2Usam4pfDApK01hdGguaW11bChldCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoZXQsam4pfDApKyhwPj4+MTMpfDApKyhwbz4+PjI2''@;'; put 'put ''KXwwLHBvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCx2dCkscD0ocD1NYXRoLmltdWwoTnQsR3QpKStNYXRoLmltdWwoYm4sdnQpfDAsUz1NYXRoLmltdWwoYm4sR3QpLHk9eStNYXRoLmltdWwoQXQsenQpfDAscD0ocD1wK01hdGguaW11bChBdCxNbil8MCkrTWF0aC5pbXVsKEp0LHp0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoSnQsTW4pfDAseT15K01hdGguaW11bChjdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKGN0LEJuKXwwKStNYXRoLmltdWwoT3Qsc24pfDAsUz1TK01hdGguaW11bChPdCxCbil8MCx5PXkrTWF0aC5pbXVsKERlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSG4pfDAp''@;'; put 'put ''K01hdGguaW11bCgkZSxxdCl8MCxTPVMrTWF0aC5pbXVsKCRlLEhuKXwwO3ZhciBfcj0obWUrKHk9eStNYXRoLmltdWwocWUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCho''@;'; put 'put ''dCxqbil8MCkrKHA+Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHp0KSxwPShwPU1hdGguaW11bChOdCxNbikpK01hdGguaW11bChibix6dCl8MCxTPU1hdGguaW11bChibixNbikseT15K01hdGguaW11bChBdCxzbil8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEF0LEJuKXwwKStNYXRoLmltdWwoSnQsc24pfDAsUz1TK01hdGguaW11bChKdCxCbil8MCx5PXkrTWF0aC5pbXVsKGN0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsSG4pfDApK01hdGguaW11bChPdCxxdCl8MCxTPVMrTWF0aC5pbXVsKE90LEhuKXwwO3ZhciBGaT0obWUrKHk9eStNYXRo''@;'; put 'put ''LmltdWwoRGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCgkZSxqbil8MCkrKHA+Pj4xMyl8MCkrKEZpPj4+MjYpfDAsRmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHNu''@;'; put 'put ''KSxwPShwPU1hdGguaW11bChOdCxCbikpK01hdGguaW11bChibixzbil8MCxTPU1hdGguaW11bChibixCbikseT15K01hdGguaW11bChBdCxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEhuKXwwKStNYXRoLmltdWwoSnQscXQpfDAsUz1TK01hdGguaW11bChKdCxIbil8MDt2YXIgSG89KG1l''@;'; put 'put ''Kyh5PXkrTWF0aC5pbXVsKGN0LGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoY3Qsam4pfDApK01hdGguaW11bChPdCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoT3Qsam4pfDApKyhwPj4+MTMpfDApKyhIbz4+PjI2KXwwLEhvJj02NzEwODg2Myx5PU1hdGgu''@;'; put 'put ''aW11bChOdCxxdCkscD0ocD1NYXRoLmltdWwoTnQsSG4pKStNYXRoLmltdWwoYm4scXQpfDAsUz1NYXRoLmltdWwoYm4sSG4pO3ZhciBnYT0obWUrKHk9eStNYXRoLmltdWwoQXQsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChBdCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXww''@;'; put 'put ''KSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChKdCxqbil8MCkrKHA+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzO3ZhciBsYT0obWUrKHk9TWF0aC5pbXVsKE50LGNuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChOdCxqbikpK01hdGguaW11bChibixjbil8MCkpPDwx''@;'; put 'put ''Myl8MDtyZXR1cm4gbWU9KChTPU1hdGguaW11bChibixqbikpKyhwPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEwODg2MyxmZVswXT1YcixmZVsxXT12aSxmZVsyXT1FcixmZVszXT1ZaSxmZVs0XT1KcixmZVs1XT1hbyxmZVs2XT1CcixmZVs3XT1KaSxmZVs4XT10byxmZVs5XT1jbyxm''@;'; put 'put ''ZVsxMF09bG8sZmVbMTFdPXNvLGZlWzEyXT1YaSxmZVsxM109cG8sZmVbMTRdPV9yLGZlWzE1XT1GaSxmZVsxNl09SG8sZmVbMTddPWdhLGZlWzE4XT1sYSwwIT09bWUmJihmZVsxOV09bWUsTS5sZW5ndGgrKyksTX07ZnVuY3Rpb24gaWUoZyxDLE0pe3JldHVybihuZXcgbGUpLm11bHAoZyxD''@;'; put 'put ''LE0pfWZ1bmN0aW9uIGxlKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwobmU9dGUpLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIHk9dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/bmUodGhpcyxn''@;'; put 'put ''LEMpOnk8NjM/dGUodGhpcyxnLEMpOnk8MTAyND9mdW5jdGlvbihwLFMsUSl7US5uZWdhdGl2ZT1TLm5lZ2F0aXZlXnAubmVnYXRpdmUsUS5sZW5ndGg9cC5sZW5ndGgrUy5sZW5ndGg7Zm9yKHZhciByZT0wLGZlPTAsbWU9MDttZTxRLmxlbmd0aC0xO21lKyspe3ZhciBrZT1mZTtmZT0wO2Zv''@;'; put 'put ''cih2YXIgVGU9NjcxMDg4NjMmcmUsUGU9TWF0aC5taW4obWUsUy5sZW5ndGgtMSksRmU9TWF0aC5tYXgoMCxtZS1wLmxlbmd0aCsxKTtGZTw9UGU7RmUrKyl7dmFyIExlPSgwfHAud29yZHNbbWUtRmVdKSooMHxTLndvcmRzW0ZlXSksQmU9NjcxMDg4NjMmTGU7VGU9NjcxMDg4NjMmKEJlPUJl''@;'; put 'put ''K1RlfDApLGZlKz0oa2U9KGtlPWtlKyhMZS82NzEwODg2NHwwKXwwKSsoQmU+Pj4yNil8MCk+Pj4yNixrZSY9NjcxMDg4NjN9US53b3Jkc1ttZV09VGUscmU9a2Usa2U9ZmV9cmV0dXJuIDAhPT1yZT9RLndvcmRzW21lXT1yZTpRLmxlbmd0aC0tLFEuc3RyaXAoKX0odGhpcyxnLEMpOmllKHRo''@;'; put 'put ''aXMsZyxDKX0sbGUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSx5PTA7eTxnO3krKylDW3ldPXRoaXMucmV2QmluKHksTSxnKTtyZXR1cm4gQ30sbGUucHJvdG90eXBlLnJldkJpbj1mdW5j''@;'; put 'put ''dGlvbihnLEMsTSl7aWYoMD09PWd8fGc9PT1NLTEpcmV0dXJuIGc7Zm9yKHZhciB5PTAscD0wO3A8QztwKyspeXw9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiB5fSxsZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsTSx5LHAsUyl7Zm9yKHZhciBRPTA7UTxTO1ErKyl5W1FdPUNb''@;'; put 'put ''Z1tRXV0scFtRXT1NW2dbUV1dfSxsZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXt0aGlzLnBlcm11dGUoUyxnLEMsTSx5LHApO2Zvcih2YXIgUT0xO1E8cDtRPDw9MSlmb3IodmFyIHJlPVE8PDEsZmU9TWF0aC5jb3MoMipNYXRoLlBJL3JlKSxtZT1NYXRoLnNp''@;'; put 'put ''bigyKk1hdGguUEkvcmUpLGtlPTA7a2U8cDtrZSs9cmUpZm9yKHZhciBUZT1mZSxQZT1tZSxGZT0wO0ZlPFE7RmUrKyl7dmFyIE5lPU1ba2UrRmVdLExlPXlba2UrRmVdLEJlPU1ba2UrRmUrUV0sSGU9eVtrZStGZStRXSxRZT1UZSpCZS1QZSpIZTtIZT1UZSpIZStQZSpCZSxNW2tlK0ZlXT1O''@;'; put 'put ''ZSsoQmU9UWUpLHlba2UrRmVdPUxlK0hlLE1ba2UrRmUrUV09TmUtQmUseVtrZStGZStRXT1MZS1IZSxGZSE9PXJlJiYoUWU9ZmUqVGUtbWUqUGUsUGU9ZmUqUGUrbWUqVGUsVGU9UWUpfX0sbGUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGcsQyl7dmFyIE09MXxNYXRoLm1heChD''@;'; put 'put ''LGcpLHk9MSZNLHA9MDtmb3IoTT1NLzJ8MDtNO00+Pj49MSlwKys7cmV0dXJuIDE8PHArMSt5fSxsZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxNKXtpZighKE08PTEpKWZvcih2YXIgeT0wO3k8TS8yO3krKyl7dmFyIHA9Z1t5XTtnW3ldPWdbTS15LTFdLGdbTS15LTFdPXAs''@;'; put 'put ''cD1DW3ldLENbeV09LUNbTS15LTFdLENbTS15LTFdPS1wfX0sbGUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT0wLHk9MDt5PEMvMjt5Kyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqeSsxXS9DKStNYXRoLnJvdW5kKGdbMip5XS9DKStNO2dbeV09''@;'; put 'put ''NjcxMDg4NjMmcCxNPXA8NjcxMDg4NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGxlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9MDtTPEM7UysrKU1bMipTXT04MTkxJihwKz0wfGdbU10pLE1bMipTKzFdPTgxOTEmKHA+Pj49MTMpLHA+''@;'; put 'put ''Pj49MTM7Zm9yKFM9MipDO1M8eTsrK1MpTVtTXT0wO0koMD09PXApLEkoMD09KC04MTkyJnApKX0sbGUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPTA7TTxnO00rKylDW01dPTA7cmV0dXJuIEN9LGxlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9u''@;'; put 'put ''KGcsQyxNKXt2YXIgeT0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKHkpLFM9dGhpcy5zdHViKHkpLFE9bmV3IEFycmF5KHkpLHJlPW5ldyBBcnJheSh5KSxmZT1uZXcgQXJyYXkoeSksbWU9bmV3IEFycmF5KHkpLGtlPW5ldyBBcnJheSh5KSxU''@;'; put 'put ''ZT1uZXcgQXJyYXkoeSksUGU9TS53b3JkcztQZS5sZW5ndGg9eSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxRLHkpLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLG1lLHkpLHRoaXMudHJhbnNmb3JtKFEsUyxyZSxmZSx5LHApLHRoaXMudHJhbnNmb3JtKG1lLFMs''@;'; put 'put ''a2UsVGUseSxwKTtmb3IodmFyIEZlPTA7RmU8eTtGZSsrKXt2YXIgTmU9cmVbRmVdKmtlW0ZlXS1mZVtGZV0qVGVbRmVdO2ZlW0ZlXT1yZVtGZV0qVGVbRmVdK2ZlW0ZlXSprZVtGZV0scmVbRmVdPU5lfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShyZSxmZSx5KSx0aGlzLnRyYW5zZm9ybShyZSxm''@;'; put 'put ''ZSxQZSxTLHkscCksdGhpcy5jb25qdWdhdGUoUGUsUyx5KSx0aGlzLm5vcm1hbGl6ZTEzYihQZSx5KSxNLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxNLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxNLnN0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1u''@;'; put 'put ''ZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5n''@;'; put 'put ''dGgpLGllKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnKSxJKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLE09MDtN''@;'; put 'put ''PHRoaXMubGVuZ3RoO00rKyl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkqZyxwPSg2NzEwODg2MyZ5KSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPXkvNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNbTV09Qyx0aGlz''@;'; put 'put ''Lmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKFMpe2Zvcih2YXIgUT1uZXcgQXJyYXkoUy5iaXRMZW5ndGgoKSkscmU9MDtyZTxRLmxlbmd0aDtyZSsrKXt2YXIgbWU9cmUlMjY7UVtyZV09KFMud29yZHNbcmUvMjZ8MF0mMTw8''@;'; put 'put ''bWUpPj4+bWV9cmV0dXJuIFF9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBNPXRoaXMseT0wO3k8Qy5sZW5ndGgmJjA9PT1DW3ldO3krKyxNPU0uc3FyKCkpO2lmKCsreTxDLmxlbmd0aClmb3IodmFyIHA9TS5zcXIoKTt5PEMubGVuZ3RoO3krKyxwPXAuc3Fy''@;'; put 'put ''KCkpMCE9PUNbeV0mJihNPU0ubXVsKHApKTtyZXR1cm4gTX0sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxNPWclMjYseT0oZy1NKS8yNixwPTY3MTA4ODYzPj4+MjYtTTw8MjYtTTtpZigwIT09TSl7dmFyIFM9MDtmb3Io''@;'; put 'put ''Qz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgUT10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1RPDxNfFMsUz1RPj4+MjYtTX1TJiYodGhpcy53b3Jkc1tDXT1TLHRoaXMubGVuZ3RoKyspfWlmKDAhPT15KXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7''@;'; put 'put ''Qy0tKXRoaXMud29yZHNbQyt5XT10aGlzLndvcmRzW0NdO2ZvcihDPTA7Qzx5O0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPXl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMu''@;'; put 'put ''aXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLE0pe3ZhciB5O0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSx5PUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LFM9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLFE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5w''@;'; put 'put ''PDxwLHJlPU07aWYoeS09Uyx5PU1hdGgubWF4KDAseSkscmUpe2Zvcih2YXIgZmU9MDtmZTxTO2ZlKyspcmUud29yZHNbZmVdPXRoaXMud29yZHNbZmVdO3JlLmxlbmd0aD1TfWlmKDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRoaXMubGVuZ3RoLT1TLGZlPTA7ZmU8dGhpcy5sZW5ndGg7''@;'; put 'put ''ZmUrKyl0aGlzLndvcmRzW2ZlXT10aGlzLndvcmRzW2ZlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIG1lPTA7Zm9yKGZlPXRoaXMubGVuZ3RoLTE7ZmU+PTAmJigwIT09bWV8fGZlPj15KTtmZS0tKXt2YXIga2U9MHx0aGlzLndvcmRzW2ZlXTt0aGlzLndvcmRz''@;'; put 'put ''W2ZlXT1tZTw8MjYtcHxrZT4+PnAsbWU9a2UmUX1yZXR1cm4gcmUmJjAhPT1tZSYmKHJlLndvcmRzW3JlLmxlbmd0aCsrXT1tZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24o''@;'; put 'put ''ZyxDLE0pe3JldHVybiBJKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsTSl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''dXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0koIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9TXx8ISh0aGlzLndvcmRzW01dJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09''@;'; put 'put ''KGctQykvMjY7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1NP3RoaXM6KDAhPT1DJiZNKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oTSx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRz''@;'; put 'put ''W3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gSSgibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKysp''@;'; put 'put ''dGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoSSgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0x''@;'; put 'put ''O3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeSxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtNKTt2YXIg''@;'; put 'put ''UT0wO2Zvcih5PTA7eTxnLmxlbmd0aDt5Kyspe3A9KDB8dGhpcy53b3Jkc1t5K01dKStRO3ZhciByZT0oMHxnLndvcmRzW3ldKSpDO1E9KChwLT02NzEwODg2MyZyZSk+PjI2KS0ocmUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnB9Zm9yKDt5PHRoaXMubGVuZ3RoLU07''@;'; put 'put ''eSsrKVE9KHA9KDB8dGhpcy53b3Jkc1t5K01dKStRKT4+MjYsdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnA7aWYoMD09PVEpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoSSgtMT09PVEpLFE9MCx5PTA7eTx0aGlzLmxlbmd0aDt5KyspUT0ocD0tKDB8dGhpcy53b3Jkc1t5XSkrUSk+PjI2LHRo''@;'; put 'put ''aXMud29yZHNbeV09NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgTSx5PXRoaXMuY2xvbmUoKSxwPWcsUz0wfHAud29yZHNbcC5sZW5ndGgtMV07MCE9KE09MjYtdGhpcy5fY291bnRC''@;'; put 'put ''aXRzKFMpKSYmKHA9cC51c2hsbihNKSx5Lml1c2hsbihNKSxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIFEscmU9eS5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoUT1uZXcgRShudWxsKSkubGVuZ3RoPXJlKzEsUS53b3Jkcz1uZXcgQXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''ZmU9MDtmZTxRLmxlbmd0aDtmZSsrKVEud29yZHNbZmVdPTB9dmFyIG1lPXkuY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHJlKTswPT09bWUubmVnYXRpdmUmJih5PW1lLFEmJihRLndvcmRzW3JlXT0xKSk7Zm9yKHZhciBrZT1yZS0xO2tlPj0wO2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHx5''@;'; put 'put ''LndvcmRzW3AubGVuZ3RoK2tlXSkrKDB8eS53b3Jkc1twLmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL1N8MCw2NzEwODg2MykseS5faXNobG5zdWJtdWwocCxUZSxrZSk7MCE9PXkubmVnYXRpdmU7KVRlLS0seS5uZWdhdGl2ZT0wLHkuX2lzaGxuc3VibXVsKHAsMSxrZSkseS5p''@;'; put 'put ''c1plcm8oKXx8KHkubmVnYXRpdmVePTEpO1EmJihRLndvcmRzW2tlXT1UZSl9cmV0dXJuIFEmJlEuc3RyaXAoKSx5LnN0cmlwKCksImRpdiIhPT1DJiYwIT09TSYmeS5pdXNocm4oTSkse2RpdjpRfHxudWxsLG1vZDp5fX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxNKXtyZXR1''@;'; put 'put ''cm4gSSghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoeT1TLmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD1TLm1v''@;'; put 'put ''ZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2OnksbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KFM9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJih5PVMuZGl2Lm5lZygpKSx7ZGl2OnksbW9kOlMubW9kfSk6dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSZnLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OlMuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2Rp''@;'; put 'put ''djpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9k''@;'; put 'put ''Om5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgeSxwLFN9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1''@;'; put 'put ''cm4gQy5kaXY7dmFyIE09MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QseT1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSxTPU0uY21wKHkpO3JldHVybiBTPDB8fDE9PT1wJiYwPT09Uz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFk''@;'; put 'put ''ZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsTT0wLHk9dGhpcy5sZW5ndGgtMTt5Pj0wO3ktLSlNPShDKk0rKDB8dGhpcy53b3Jkc1t5XSkpJWc7cmV0dXJuIE19LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9u''@;'; put 'put ''KGcpe0koZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvZ3wwLEM9eSVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHk9''@;'; put 'put ''bmV3IEUoMSkscD1uZXcgRSgwKSxTPW5ldyBFKDApLFE9bmV3IEUoMSkscmU9MDtDLmlzRXZlbigpJiZNLmlzRXZlbigpOylDLml1c2hybigxKSxNLml1c2hybigxKSwrK3JlO2Zvcih2YXIgZmU9TS5jbG9uZSgpLG1lPUMuY2xvbmUoKTshQy5pc1plcm8oKTspe2Zvcih2YXIga2U9MCxUZT0x''@;'; put 'put ''OyEoQy53b3Jkc1swXSZUZSkmJmtlPDI2Oysra2UsVGU8PD0xKTtpZihrZT4wKWZvcihDLml1c2hybihrZSk7a2UtLSA+MDspKHkuaXNPZGQoKXx8cC5pc09kZCgpKSYmKHkuaWFkZChmZSkscC5pc3ViKG1lKSkseS5pdXNocm4oMSkscC5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLEZlPTE7IShN''@;'; put 'put ''LndvcmRzWzBdJkZlKSYmUGU8MjY7KytQZSxGZTw8PTEpO2lmKFBlPjApZm9yKE0uaXVzaHJuKFBlKTtQZS0tID4wOykoUy5pc09kZCgpfHxRLmlzT2RkKCkpJiYoUy5pYWRkKGZlKSxRLmlzdWIobWUpKSxTLml1c2hybigxKSxRLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHku''@;'; put 'put ''aXN1YihTKSxwLmlzdWIoUSkpOihNLmlzdWIoQyksUy5pc3ViKHkpLFEuaXN1YihwKSl9cmV0dXJue2E6UyxiOlEsZ2NkOk0uaXVzaGxuKHJlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5j''@;'; put 'put ''bG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHkscD1uZXcgRSgxKSxTPW5ldyBFKDApLFE9TS5jbG9uZSgpO0MuY21wbigxKT4wJiZNLmNtcG4oMSk+MDspe2Zvcih2YXIgcmU9MCxmZT0xOyEoQy53b3Jkc1swXSZmZSkmJnJlPDI2OysrcmUsZmU8''@;'; put 'put ''PD0xKTtpZihyZT4wKWZvcihDLml1c2hybihyZSk7cmUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoUSkscC5pdXNocm4oMSk7Zm9yKHZhciBtZT0wLGtlPTE7IShNLndvcmRzWzBdJmtlKSYmbWU8MjY7KyttZSxrZTw8PTEpO2lmKG1lPjApZm9yKE0uaXVzaHJuKG1lKTttZS0tID4wOylTLmlz''@;'; put 'put ''T2RkKCkmJlMuaWFkZChRKSxTLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHAuaXN1YihTKSk6KE0uaXN1YihDKSxTLmlzdWIocCkpfXJldHVybih5PTA9PT1DLmNtcG4oMSk/cDpTKS5jbXBuKDApPDAmJnkuaWFkZChnKSx5fSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7''@;'; put 'put ''aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxNPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsTS5uZWdhdGl2ZT0wO2Zvcih2YXIgeT0wO0MuaXNFdmVuKCkmJk0uaXNFdmVuKCk7eSsrKUMuaXVz''@;'; put 'put ''aHJuKDEpLE0uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO3ZhciBwPUMuY21wKE0pO2lmKHA8MCl7dmFyIFM9QztDPU0sTT1TfWVsc2UgaWYoMD09PXB8fDA9PT1NLmNtcG4oMSkpYnJlYWs7Qy5pc3Vi''@;'; put 'put ''KE0pfXJldHVybiBNLml1c2hsbih5KX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcpO3ZhciBDPWclMjYsTT0oZy1DKS8yNix5''@;'; put 'put ''PTE8PEM7aWYodGhpcy5sZW5ndGg8PU0pcmV0dXJuIHRoaXMuX2V4cGFuZChNKzEpLHRoaXMud29yZHNbTV18PXksdGhpcztmb3IodmFyIHA9eSxTPU07MCE9PXAmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT0wfHRoaXMud29yZHNbU107cD0oUSs9cCk+Pj4yNix0aGlzLndvcmRzW1NdPVEm''@;'; put 'put ''PTY3MTA4ODYzfXJldHVybiAwIT09cCYmKHRoaXMud29yZHNbU109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2''@;'; put 'put ''YXIgQyxNPWc8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIU0pcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJk0pcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7TSYmKGc9LWcpLEkoZzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFy''@;'; put 'put ''IHk9MHx0aGlzLndvcmRzWzBdO0M9eT09PWc/MDp5PGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''JiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4tMTtmb3IodmFyIEM9MCxNPXRoaXMubGVuZ3RoLTE7TT49MDtNLS0pe3ZhciB5PTB8dGhpcy53b3Jkc1tNXSxwPTB8Zy53b3Jkc1tNXTtpZih5IT09cCl7eTxwP0M9LTE6eT5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''MT09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21w''@;'; put 'put ''KGcpPj0wfSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0s''@;'; put 'put ''RS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gbmV3IE4oZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEkoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVz''@;'; put 'put ''IiksZy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlz''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNl''@;'; put 'put ''UmVkKGcpfSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0''@;'; put 'put ''aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMu''@;'; put 'put ''cmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJp''@;'; put 'put ''ZnkyKHRoaXMsZyksdGhpcy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhp''@;'; put 'put ''cyxnKX0sRS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxcnQgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu''@;'; put 'put ''cmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRo''@;'; put 'put ''aXMpfSxFLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVs''@;'; put 'put ''bCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdWUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGNl''@;'; put 'put ''KCl7dWUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBZKCl7dWUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7dWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB4KCl7dWUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBOKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1lPUN9ZWxzZSBJKGcuZ3RuKDEpLCJtb2R1bHVz''@;'; put 'put ''IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRihnKXtOLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5y''@;'; put 'put ''PW5ldyBFKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52''@;'; put 'put ''LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXVlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxnfSx1ZS5wcm90b3R5cGUuaXJlZHVjZT1m''@;'; put 'put ''dW5jdGlvbihnKXt2YXIgQyxNPWc7ZG97dGhpcy5zcGxpdChNLHRoaXMudG1wKSxDPShNPShNPXRoaXMuaW11bEsoTSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIHk9Qzx0aGlzLm4/LTE6TS51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT15PyhNLndv''@;'; put 'put ''cmRzWzBdPTAsTS5sZW5ndGg9MSk6eT4wP00uaXN1Yih0aGlzLnApOnZvaWQgMCE9PU0uc3RyaXA/TS5zdHJpcCgpOk0uX3N0cmlwKCksTX0sdWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gZy5pbXVsKHRoaXMuayl9LFIoY2UsdWUpLGNlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT00MTk0MzAzLHk9TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8eTtwKyspQy53b3Jkc1twXT1nLndvcmRzW3BdO2lmKEMubGVuZ3RoPXksZy5sZW5ndGg8''@;'; put 'put ''PTkpcmV0dXJuIGcud29yZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciBTPWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109UyZNLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBRPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBdPShRJk0pPDw0fFM+Pj4yMixTPVF9Zy53b3Jk''@;'; put 'put ''c1twLTEwXT1TPj4+PTIyLGcubGVuZ3RoLT0wPT09UyYmZy5sZW5ndGg+MTA/MTA6OX0sY2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00r''@;'; put 'put ''Kyl7dmFyIHk9MHxnLndvcmRzW01dO2cud29yZHNbTV09NjcxMDg4NjMmKEMrPTk3Nyp5KSxDPTY0KnkrKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sUihZLHVl''@;'; put 'put ''KSxSKGIsdWUpLFIoeCx1ZSkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0xOSooMHxnLndvcmRzW01dKStDLHA9NjcxMDg4NjMmeTt5Pj4+PTI2LGcud29yZHNbTV09cCxDPXl9cmV0dXJuIDAhPT1DJiYoZy53b3Jk''@;'; put 'put ''c1tnLmxlbmd0aCsrXT1DKSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZihkZVtnXSlyZXR1cm4gZGVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBjZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgWTtlbHNlIGlmKCJwMTkyIj09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09''@;'; put 'put ''Zyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyB4fXJldHVybiBkZVtnXT1DLEN9LE4ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCwicmVkIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0koMD09KGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCYmZy5yZWQ9PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIGcuaXNaZXJvKCk/Zy5jbG9uZSgpOnRoaXMubS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5hZGQoQyk7cmV0dXJuIE0uY21wKHRoaXMubSk+PTAmJk0uaXN1Yih0aGlzLm0pLE0uX2Zv''@;'; put 'put ''cmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuaWFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5''@;'; put 'put ''MihnLEMpO3ZhciBNPWcuc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5pc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5p''@;'; put 'put ''YWRkKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVs''@;'; put 'put ''KEMpKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxnLmNsb25lKCkpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIHRoaXMubXVsKGcsZyl9LE4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihJKEMlMj09MSksMz09PUMpe3ZhciBNPXRoaXMubS5hZGQobmV3IEUoMSkpLml1c2hybigy''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5wb3coZyxNKX1mb3IodmFyIHk9dGhpcy5tLnN1Ym4oMSkscD0wOyF5LmlzWmVybygpJiYwPT09eS5hbmRsbigxKTspcCsrLHkuaXVzaHJuKDEpO0koIXkuaXNaZXJvKCkpO3ZhciBTPW5ldyBFKDEpLnRvUmVkKHRoaXMpLFE9Uy5yZWROZWcoKSxyZT10aGlzLm0uc3Vi''@;'; put 'put ''bigxKS5pdXNocm4oMSksZmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihmZT1uZXcgRSgyKmZlKmZlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coZmUscmUpLmNtcChRKTspZmUucmVkSUFkZChRKTtmb3IodmFyIG1lPXRoaXMucG93KGZlLHkpLGtlPXRoaXMucG93KGcseS5hZGRuKDEpLml1''@;'; put 'put ''c2hybigxKSksVGU9dGhpcy5wb3coZyx5KSxQZT1wOzAhPT1UZS5jbXAoUyk7KXtmb3IodmFyIEZlPVRlLE5lPTA7MCE9PUZlLmNtcChTKTtOZSsrKUZlPUZlLnJlZFNxcigpO0koTmU8UGUpO3ZhciBMZT10aGlzLnBvdyhtZSxuZXcgRSgxKS5pdXNobG4oUGUtTmUtMSkpO2tlPWtlLnJlZE11''@;'; put 'put ''bChMZSksbWU9TGUucmVkU3FyKCksVGU9VGUucmVkTXVsKG1lKSxQZT1OZX1yZXR1cm4ga2V9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMubmVnYXRpdmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkp''@;'; put 'put ''OnRoaXMuaW1vZChDKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgxNik7TVswXT1uZXcgRSgxKS50b1JlZCh0aGlz''@;'; put 'put ''KSxNWzFdPWc7Zm9yKHZhciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sZyk7dmFyIHA9TVswXSxTPTAsUT0wLHJlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PUMubGVuZ3RoLTE7eT49MDt5LS0pe2Zvcih2YXIgZmU9Qy53b3Jkc1t5XSxt''@;'; put 'put ''ZT1yZS0xO21lPj0wO21lLS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10pLFE9MCxTPTApKTpRPTB9cmU9MjZ9cmV0dXJuIHB9LE4u''@;'; put 'put ''cHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LE4ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIG5ldyBGKGcpfSxSKEYsTiksRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlz''@;'; put 'put ''LnJpbnYpKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgTT1nLmltdWwoQykseT1NLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlz''@;'; put 'put ''Lm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAuaWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0s''@;'; put 'put ''Ri5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBNPWcubXVsKEMpLHk9TS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRo''@;'; put 'put ''aXMubSkscD1NLmlzdWIoeSkuaXVzaHJuKHRoaXMuc2hpZnQpLFM9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD9TPXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYoUz1wLmlhZGQodGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaW1vZChnLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sMzQ4MjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNTcxNyksSj1MKDIzMTgpLEk9TCg5Nzg1KSxSPUwoOTA3MiksRT1MKDEwMjcpO2Z1''@;'; put 'put ''bmN0aW9uIHooail7RS5jYWxsKHRoaXMsImRpZ2VzdCIpLHRoaXMuX2hhc2g9an1LKHosRSksei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihqKXt0aGlzLl9oYXNoLnVwZGF0ZShqKX0sei5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9''@;'; put 'put ''LEguZXhwb3J0cz1mdW5jdGlvbihqKXtyZXR1cm4ibWQ1Ij09PShqPWoudG9Mb3dlckNhc2UoKSk/bmV3IEo6InJtZDE2MCI9PT1qfHwicmlwZW1kMTYwIj09PWo/bmV3IEk6bmV3IHooUihqKSl9fSw4MDI4OihILEIsTCk9Pnt2YXIgSz1MKDIzMTgpO0guZXhwb3J0cz1mdW5jdGlvbihKKXty''@;'; put 'put ''ZXR1cm4obmV3IEspLnVwZGF0ZShKKS5kaWdlc3QoKX19LDgzNTU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDU3MTcpLEo9TCgxMDMxKSxJPUwoMTAyNyksUj1MKDk1MDkpLkJ1ZmZlcixFPUwoODAyOCksej1MKDk3ODUpLGo9TCg5MDcyKSxWPVIuYWxsb2MoMTI4KTtmdW5jdGlv''@;'; put 'put ''biBHKFcsVSl7SS5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgVSYmKFU9Ui5mcm9tKFUpKTt2YXIgcT0ic2hhNTEyIj09PVd8fCJzaGEzODQiPT09Vz8xMjg6NjQ7dGhpcy5fYWxnPVcsdGhpcy5fa2V5PVUsVS5sZW5ndGg+cT9VPSgicm1kMTYwIj09PVc/bmV3IHo6aihX''@;'; put 'put ''KSkudXBkYXRlKFUpLmRpZ2VzdCgpOlUubGVuZ3RoPHEmJihVPVIuY29uY2F0KFtVLFZdLHEpKTtmb3IodmFyIHRlPXRoaXMuX2lwYWQ9Ui5hbGxvY1Vuc2FmZShxKSxuZT10aGlzLl9vcGFkPVIuYWxsb2NVbnNhZmUocSksaWU9MDtpZTxxO2llKyspdGVbaWVdPTU0XlVbaWVdLG5lW2llXT05''@;'; put 'put ''Ml5VW2llXTt0aGlzLl9oYXNoPSJybWQxNjAiPT09Vz9uZXcgejpqKFcpLHRoaXMuX2hhc2gudXBkYXRlKHRlKX1LKEcsSSksRy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihXKXt0aGlzLl9oYXNoLnVwZGF0ZShXKX0sRy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIFc9dGhp''@;'; put 'put ''cy5faGFzaC5kaWdlc3QoKTtyZXR1cm4oInJtZDE2MCI9PT10aGlzLl9hbGc/bmV3IHo6aih0aGlzLl9hbGcpKS51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKFcpLmRpZ2VzdCgpfSxILmV4cG9ydHM9ZnVuY3Rpb24oVyxVKXtyZXR1cm4icm1kMTYwIj09PShXPVcudG9Mb3dlckNhc2UoKSl8''@;'; put 'put ''fCJyaXBlbWQxNjAiPT09Vz9uZXcgRygicm1kMTYwIixVKToibWQ1Ij09PVc/bmV3IEooRSxVKTpuZXcgRyhXLFUpfX0sMTAzMTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNTcxNyksSj1MKDk1MDkpLkJ1ZmZlcixJPUwoMTAyNyksUj1KLmFsbG9jKDEyOCksRT02NDtmdW5jdGlv''@;'; put 'put ''biB6KGosVil7SS5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgViYmKFY9Si5mcm9tKFYpKSx0aGlzLl9hbGc9aix0aGlzLl9rZXk9VixWLmxlbmd0aD5FP1Y9aihWKTpWLmxlbmd0aDxFJiYoVj1KLmNvbmNhdChbVixSXSxFKSk7Zm9yKHZhciBHPXRoaXMuX2lwYWQ9Si5h''@;'; put 'put ''bGxvY1Vuc2FmZShFKSxXPXRoaXMuX29wYWQ9Si5hbGxvY1Vuc2FmZShFKSxVPTA7VTxFO1UrKylHW1VdPTU0XlZbVV0sV1tVXT05Ml5WW1VdO3RoaXMuX2hhc2g9W0ddfUsoeixJKSx6LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGope3RoaXMuX2hhc2gucHVzaChqKX0sei5wcm90b3R5''@;'; put 'put ''cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGo9dGhpcy5fYWxnKEouY29uY2F0KHRoaXMuX2hhc2gpKTtyZXR1cm4gdGhpcy5fYWxnKEouY29uY2F0KFt0aGlzLl9vcGFkLGpdKSl9LEguZXhwb3J0cz16fSw1ODM1OihILEIsTCk9PnsidXNlIHN0cmljdCI7Qi5yYW5kb21CeXRlcz1CLnJuZz1C''@;'; put 'put ''LnBzZXVkb1JhbmRvbUJ5dGVzPUIucHJuZz1MKDE3OTgpLEIuY3JlYXRlSGFzaD1CLkhhc2g9TCgzNDgyKSxCLmNyZWF0ZUhtYWM9Qi5IbWFjPUwoODM1NSk7dmFyIEs9TCg2MDQyKSxKPU9iamVjdC5rZXlzKEspLEk9WyJzaGExIiwic2hhMjI0Iiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEy''@;'; put 'put ''IiwibWQ1Iiwicm1kMTYwIl0uY29uY2F0KEopO0IuZ2V0SGFzaGVzPWZ1bmN0aW9uKCl7cmV0dXJuIEl9O3ZhciBSPUwoNTYzMik7Qi5wYmtkZjI9Ui5wYmtkZjIsQi5wYmtkZjJTeW5jPVIucGJrZGYyU3luYzt2YXIgRT1MKDM2MTQpO0IuQ2lwaGVyPUUuQ2lwaGVyLEIuY3JlYXRlQ2lwaGVy''@;'; put 'put ''PUUuY3JlYXRlQ2lwaGVyLEIuQ2lwaGVyaXY9RS5DaXBoZXJpdixCLmNyZWF0ZUNpcGhlcml2PUUuY3JlYXRlQ2lwaGVyaXYsQi5EZWNpcGhlcj1FLkRlY2lwaGVyLEIuY3JlYXRlRGVjaXBoZXI9RS5jcmVhdGVEZWNpcGhlcixCLkRlY2lwaGVyaXY9RS5EZWNpcGhlcml2LEIuY3JlYXRlRGVj''@;'; put 'put ''aXBoZXJpdj1FLmNyZWF0ZURlY2lwaGVyaXYsQi5nZXRDaXBoZXJzPUUuZ2V0Q2lwaGVycyxCLmxpc3RDaXBoZXJzPUUubGlzdENpcGhlcnM7dmFyIHo9TCgyNjA3KTtCLkRpZmZpZUhlbGxtYW5Hcm91cD16LkRpZmZpZUhlbGxtYW5Hcm91cCxCLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD16''@;'; put 'put ''LmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCxCLmdldERpZmZpZUhlbGxtYW49ei5nZXREaWZmaWVIZWxsbWFuLEIuY3JlYXRlRGlmZmllSGVsbG1hbj16LmNyZWF0ZURpZmZpZUhlbGxtYW4sQi5EaWZmaWVIZWxsbWFuPXouRGlmZmllSGVsbG1hbjt2YXIgaj1MKDQ3NDMpO0IuY3JlYXRlU2ln''@;'; put 'put ''bj1qLmNyZWF0ZVNpZ24sQi5TaWduPWouU2lnbixCLmNyZWF0ZVZlcmlmeT1qLmNyZWF0ZVZlcmlmeSxCLlZlcmlmeT1qLlZlcmlmeSxCLmNyZWF0ZUVDREg9TCg2MzkzKTt2YXIgVj1MKDc5MDApO0IucHVibGljRW5jcnlwdD1WLnB1YmxpY0VuY3J5cHQsQi5wcml2YXRlRW5jcnlwdD1WLnBy''@;'; put 'put ''aXZhdGVFbmNyeXB0LEIucHVibGljRGVjcnlwdD1WLnB1YmxpY0RlY3J5cHQsQi5wcml2YXRlRGVjcnlwdD1WLnByaXZhdGVEZWNyeXB0O3ZhciBHPUwoNzk2Myk7Qi5yYW5kb21GaWxsPUcucmFuZG9tRmlsbCxCLnJhbmRvbUZpbGxTeW5jPUcucmFuZG9tRmlsbFN5bmMsQi5jcmVhdGVDcmVk''@;'; put 'put ''ZW50aWFscz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihbInNvcnJ5LCBjcmVhdGVDcmVkZW50aWFscyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Iiwid2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMiLCJodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJp''@;'; put 'put ''ZnkiXS5qb2luKCJcbiIpKX0sQi5jb25zdGFudHM9e0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUU6MixESF9DSEVDS19QX05PVF9QUklNRToxLERIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1I6NCxESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SOjgsTlBOX0VOQUJMRUQ6MSxBTFBOX0VOQUJM''@;'; put 'put ''RUQ6MSxSU0FfUEtDUzFfUEFERElORzoxLFJTQV9TU0xWMjNfUEFERElORzoyLFJTQV9OT19QQURESU5HOjMsUlNBX1BLQ1MxX09BRVBfUEFERElORzo0LFJTQV9YOTMxX1BBRERJTkc6NSxSU0FfUEtDUzFfUFNTX1BBRERJTkc6NixQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQ6MixQT0lO''@;'; put 'put ''VF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRDo0LFBPSU5UX0NPTlZFUlNJT05fSFlCUklEOjZ9fSw1MDU2OihILEIsTCk9Pnt2YXIgSz1MKDg3NjQpLkJ1ZmZlcjtjb25zdHtUcmFuc2Zvcm06Sn09TCgyODMwKSxJPUsuZnJvbShbMjM5LDE4NywxOTFdKTtjbGFzcyBSIGV4dGVuZHMgSntjb25z''@;'; put 'put ''dHJ1Y3RvcihjZT17fSl7c3VwZXIoe3dyaXRhYmxlT2JqZWN0TW9kZTohMCwuLi5jZX0pO2NvbnN0IFk9e307bGV0IGI7Zm9yKGxldCB4IGluIGNlKVlbVih4KV09Y2VbeF07aWYoYj10aGlzLm5vcm1hbGl6ZShZKSl0aHJvdyBiO3N3aXRjaChZLnJlY29yZF9kZWxpbWl0ZXIpe2Nhc2UiYXV0''@;'; put 'put ''byI6WS5yZWNvcmRfZGVsaW1pdGVyPW51bGw7YnJlYWs7Y2FzZSJ1bml4IjpZLnJlY29yZF9kZWxpbWl0ZXI9IlxuIjticmVhaztjYXNlIm1hYyI6WS5yZWNvcmRfZGVsaW1pdGVyPSJcciI7YnJlYWs7Y2FzZSJ3aW5kb3dzIjpZLnJlY29yZF9kZWxpbWl0ZXI9IlxyXG4iO2JyZWFrO2Nhc2Ui''@;'; put 'put ''YXNjaWkiOlkucmVjb3JkX2RlbGltaXRlcj0iXHgxZSI7YnJlYWs7Y2FzZSJ1bmljb2RlIjpZLnJlY29yZF9kZWxpbWl0ZXI9Ilx1MjAyOCJ9dGhpcy5vcHRpb25zPVksdGhpcy5zdGF0ZT17c3RvcDohMX0sdGhpcy5pbmZvPXtyZWNvcmRzOjB9fW5vcm1hbGl6ZShjZSl7aWYobnVsbD09Y2Uu''@;'; put 'put ''Ym9tfHwhMT09PWNlLmJvbSljZS5ib209ITE7ZWxzZSBpZighMCE9PWNlLmJvbSlyZXR1cm4gbmV3IHooIkNTVl9PUFRJT05fQk9PTEVBTl9JTlZBTElEX1RZUEUiLFsib3B0aW9uIGBib21gIGlzIG9wdGlvbmFsIGFuZCBtdXN0IGJlIGEgYm9vbGVhbiB2YWx1ZSwiLGBnb3QgJHtKU09OLnN0''@;'; put 'put ''cmluZ2lmeShjZS5ib20pfWBdKTtpZihudWxsPT1jZS5kZWxpbWl0ZXIpY2UuZGVsaW1pdGVyPSIsIjtlbHNlIGlmKEsuaXNCdWZmZXIoY2UuZGVsaW1pdGVyKSljZS5kZWxpbWl0ZXI9Y2UuZGVsaW1pdGVyLnRvU3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGNlLmRlbGltaXRl''@;'; put 'put ''cilyZXR1cm4gbmV3IHooIkNTVl9PUFRJT05fREVMSU1JVEVSX0lOVkFMSURfVFlQRSIsWyJvcHRpb24gYGRlbGltaXRlcmAgbXVzdCBiZSBhIGJ1ZmZlciBvciBhIHN0cmluZywiLGBnb3QgJHtKU09OLnN0cmluZ2lmeShjZS5kZWxpbWl0ZXIpfWBdKTtpZihudWxsPT1jZS5xdW90ZSljZS5x''@;'; put 'put ''dW90ZT0nIic7ZWxzZSBpZighMD09PWNlLnF1b3RlKWNlLnF1b3RlPSciJztlbHNlIGlmKCExPT09Y2UucXVvdGUpY2UucXVvdGU9IiI7ZWxzZSBpZihLLmlzQnVmZmVyKGNlLnF1b3RlKSljZS5xdW90ZT1jZS5xdW90ZS50b1N0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBjZS5x''@;'; put 'put ''dW90ZSlyZXR1cm4gbmV3IHooIkNTVl9PUFRJT05fUVVPVEVfSU5WQUxJRF9UWVBFIixbIm9wdGlvbiBgcXVvdGVgIG11c3QgYmUgYSBib29sZWFuLCBhIGJ1ZmZlciBvciBhIHN0cmluZywiLGBnb3QgJHtKU09OLnN0cmluZ2lmeShjZS5xdW90ZSl9YF0pO2lmKG51bGwhPWNlLnF1b3RlZHx8''@;'; put 'put ''KGNlLnF1b3RlZD0hMSksbnVsbCE9Y2UucXVvdGVkX2VtcHR5fHwoY2UucXVvdGVkX2VtcHR5PXZvaWQgMCksbnVsbD09Y2UucXVvdGVkX21hdGNofHwhMT09PWNlLnF1b3RlZF9tYXRjaD9jZS5xdW90ZWRfbWF0Y2g9bnVsbDpBcnJheS5pc0FycmF5KGNlLnF1b3RlZF9tYXRjaCl8fChjZS5x''@;'; put 'put ''dW90ZWRfbWF0Y2g9W2NlLnF1b3RlZF9tYXRjaF0pLGNlLnF1b3RlZF9tYXRjaClmb3IobGV0IFkgb2YgY2UucXVvdGVkX21hdGNoKXtjb25zdCBiPVkgaW5zdGFuY2VvZiBSZWdFeHA7aWYoInN0cmluZyIhPXR5cGVvZiBZJiYhYilyZXR1cm4gRXJyb3IoYEludmFsaWQgT3B0aW9uOiBxdW90''@;'; put 'put ''ZWRfbWF0Y2ggbXVzdCBiZSBhIHN0cmluZyBvciBhIHJlZ2V4LCBnb3QgJHtKU09OLnN0cmluZ2lmeShZKX1gKX1pZihudWxsIT1jZS5xdW90ZWRfc3RyaW5nfHwoY2UucXVvdGVkX3N0cmluZz0hMSksbnVsbCE9Y2UuZW9mfHwoY2UuZW9mPSEwKSxudWxsPT1jZS5lc2NhcGUpY2UuZXNjYXBl''@;'; put 'put ''PSciJztlbHNlIGlmKEsuaXNCdWZmZXIoY2UuZXNjYXBlKSljZS5lc2NhcGU9Y2UuZXNjYXBlLnRvU3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGNlLmVzY2FwZSlyZXR1cm4gRXJyb3IoYEludmFsaWQgT3B0aW9uOiBlc2NhcGUgbXVzdCBiZSBhIGJ1ZmZlciBvciBhIHN0cmlu''@;'; put 'put ''ZywgZ290ICR7SlNPTi5zdHJpbmdpZnkoY2UuZXNjYXBlKX1gKTtpZihjZS5lc2NhcGUubGVuZ3RoPjEpcmV0dXJuIEVycm9yKGBJbnZhbGlkIE9wdGlvbjogZXNjYXBlIG11c3QgYmUgb25lIGNoYXJhY3RlciwgZ290ICR7Y2UuZXNjYXBlLmxlbmd0aH0gY2hhcmFjdGVyc2ApO2lmKG51bGwh''@;'; put 'put ''PWNlLmhlYWRlcnx8KGNlLmhlYWRlcj0hMSksY2UuY29sdW1ucz10aGlzLm5vcm1hbGl6ZV9jb2x1bW5zKGNlLmNvbHVtbnMpLG51bGwhPWNlLnF1b3RlZHx8KGNlLnF1b3RlZD0hMSksbnVsbCE9Y2UuY2FzdHx8KGNlLmNhc3Q9e30pLG51bGwhPWNlLmNhc3QuYmlnaW50fHwoY2UuY2FzdC5i''@;'; put 'put ''aWdpbnQ9WT0+IiIrWSksbnVsbCE9Y2UuY2FzdC5ib29sZWFufHwoY2UuY2FzdC5ib29sZWFuPVk9Plk/IjEiOiIiKSxudWxsIT1jZS5jYXN0LmRhdGV8fChjZS5jYXN0LmRhdGU9WT0+IiIrWS5nZXRUaW1lKCkpLG51bGwhPWNlLmNhc3QubnVtYmVyfHwoY2UuY2FzdC5udW1iZXI9WT0+IiIr''@;'; put 'put ''WSksbnVsbCE9Y2UuY2FzdC5vYmplY3R8fChjZS5jYXN0Lm9iamVjdD1ZPT5KU09OLnN0cmluZ2lmeShZKSksbnVsbCE9Y2UuY2FzdC5zdHJpbmd8fChjZS5jYXN0LnN0cmluZz1mdW5jdGlvbihZKXtyZXR1cm4gWX0pLG51bGw9PWNlLnJlY29yZF9kZWxpbWl0ZXIpY2UucmVjb3JkX2RlbGlt''@;'; put 'put ''aXRlcj0iXG4iO2Vsc2UgaWYoSy5pc0J1ZmZlcihjZS5yZWNvcmRfZGVsaW1pdGVyKSljZS5yZWNvcmRfZGVsaW1pdGVyPWNlLnJlY29yZF9kZWxpbWl0ZXIudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgY2UucmVjb3JkX2RlbGltaXRlcilyZXR1cm4gRXJyb3IoYEludmFs''@;'; put 'put ''aWQgT3B0aW9uOiByZWNvcmRfZGVsaW1pdGVyIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KGNlLnJlY29yZF9kZWxpbWl0ZXIpfWApfV90cmFuc2Zvcm0oY2UsWSxiKXtpZighMD09PXRoaXMuc3RhdGUuc3RvcClyZXR1cm47aWYoIUFycmF5Lmlz''@;'; put 'put ''QXJyYXkoY2UpJiYib2JqZWN0IiE9dHlwZW9mIGNlKXJldHVybiB0aGlzLnN0YXRlLnN0b3A9ITAsYihFcnJvcihgSW52YWxpZCBSZWNvcmQ6IGV4cGVjdCBhbiBhcnJheSBvciBhbiBvYmplY3QsIGdvdCAke0pTT04uc3RyaW5naWZ5KGNlKX1gKSk7aWYoMD09PXRoaXMuaW5mby5yZWNvcmRz''@;'; put 'put ''KWlmKEFycmF5LmlzQXJyYXkoY2UpKXtpZighMD09PXRoaXMub3B0aW9ucy5oZWFkZXImJiF0aGlzLm9wdGlvbnMuY29sdW1ucylyZXR1cm4gdGhpcy5zdGF0ZS5zdG9wPSEwLGIoRXJyb3IoIlVuZGlzY292ZXJhYmxlIENvbHVtbnM6IGhlYWRlciBvcHRpb24gcmVxdWlyZXMgY29sdW1uIG9w''@;'; put 'put ''dGlvbiBvciBvYmplY3QgcmVjb3JkcyIpKX1lbHNlIG51bGwhPXRoaXMub3B0aW9ucy5jb2x1bW5zfHwodGhpcy5vcHRpb25zLmNvbHVtbnM9dGhpcy5ub3JtYWxpemVfY29sdW1ucyhPYmplY3Qua2V5cyhjZSkpKTswPT09dGhpcy5pbmZvLnJlY29yZHMmJih0aGlzLmJvbSgpLHRoaXMuaGVh''@;'; put 'put ''ZGVycygpKTt0cnl7dGhpcy5lbWl0KCJyZWNvcmQiLGNlLHRoaXMuaW5mby5yZWNvcmRzKX1jYXRjaChOKXtyZXR1cm4gdGhpcy5zdGF0ZS5zdG9wPSEwLHRoaXMuZW1pdCgiZXJyb3IiLE4pfWxldCB4O2lmKHRoaXMub3B0aW9ucy5lb2Ype2lmKHg9dGhpcy5zdHJpbmdpZnkoY2UpLHZvaWQg''@;'; put 'put ''MD09PXgpcmV0dXJuO3grPXRoaXMub3B0aW9ucy5yZWNvcmRfZGVsaW1pdGVyfWVsc2V7aWYoeD10aGlzLnN0cmluZ2lmeShjZSksdm9pZCAwPT09eClyZXR1cm47KHRoaXMub3B0aW9ucy5oZWFkZXJ8fHRoaXMuaW5mby5yZWNvcmRzKSYmKHg9dGhpcy5vcHRpb25zLnJlY29yZF9kZWxpbWl0''@;'; put 'put ''ZXIreCl9dGhpcy5pbmZvLnJlY29yZHMrKyx0aGlzLnB1c2goeCksYigpfV9mbHVzaChjZSl7MD09PXRoaXMuaW5mby5yZWNvcmRzJiYodGhpcy5ib20oKSx0aGlzLmhlYWRlcnMoKSksY2UoKX1zdHJpbmdpZnkoY2UsWT0hMSl7aWYoIm9iamVjdCIhPXR5cGVvZiBjZSlyZXR1cm4gY2U7Y29u''@;'; put 'put ''c3R7Y29sdW1uczpifT10aGlzLm9wdGlvbnMsTj1bXTtpZihBcnJheS5pc0FycmF5KGNlKSl7YiYmY2Uuc3BsaWNlKGIubGVuZ3RoKTtmb3IobGV0IGc9MDtnPGNlLmxlbmd0aDtnKyspe2NvbnN0IEM9Y2VbZ10sW00seV09dGhpcy5fX2Nhc3QoQyx7aW5kZXg6Zyxjb2x1bW46ZyxyZWNvcmRz''@;'; put 'put ''OnRoaXMuaW5mby5yZWNvcmRzLGhlYWRlcjpZfSk7aWYoTSlyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixNKTtOW2ddPVt5LENdfX1lbHNlIGlmKGIpZm9yKGxldCBnPTA7ZzxiLmxlbmd0aDtnKyspe2NvbnN0IEM9ZGUoY2UsYltnXS5rZXkpLFtNLHldPXRoaXMuX19jYXN0KEMse2lu''@;'; put 'put ''ZGV4OmcsY29sdW1uOmJbZ10ua2V5LHJlY29yZHM6dGhpcy5pbmZvLnJlY29yZHMsaGVhZGVyOll9KTtpZihNKXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLE0pO05bZ109W3ksQ119ZWxzZSBmb3IobGV0IGcgb2YgY2Upe2NvbnN0IEM9Y2VbZ10sW00seV09dGhpcy5fX2Nhc3QoQyx7''@;'; put 'put ''aW5kZXg6aSxjb2x1bW46YltpXS5rZXkscmVjb3Jkczp0aGlzLmluZm8ucmVjb3JkcyxoZWFkZXI6WX0pO2lmKE0pcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsTSk7Ti5wdXNoKFt5LENdKX1sZXQgRj0iIjtmb3IobGV0IGc9MDtnPE4ubGVuZ3RoO2crKyl7bGV0IEMsTSxbeSxwXT1O''@;'; put 'put ''W2ddO2lmKCJzdHJpbmciPT10eXBlb2YgeSlDPXRoaXMub3B0aW9ucztlbHNlIGlmKGooeSkpe2lmKEM9eSx5PUMudmFsdWUsZGVsZXRlIEMudmFsdWUsInN0cmluZyIhPXR5cGVvZiB5JiZudWxsIT15KXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLEVycm9yKGBJbnZhbGlkIENhc3Rp''@;'; put 'put ''bmcgVmFsdWU6IHJldHVybmVkIHZhbHVlIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBudWxsIG9yIHVuZGVmaW5lZCwgZ290ICR7SlNPTi5zdHJpbmdpZnkoeSl9YCkpO2lmKEM9ey4uLnRoaXMub3B0aW9ucywuLi5DfSxNPXRoaXMubm9ybWFsaXplKEMpKXJldHVybiB2b2lkIHRoaXMuZW1pdCgi''@;'; put 'put ''ZXJyb3IiLE0pfWVsc2V7aWYobnVsbCE9eSlyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixFcnJvcihgSW52YWxpZCBDYXN0aW5nIFZhbHVlOiByZXR1cm5lZCB2YWx1ZSBtdXN0IHJldHVybiBhIHN0cmluZywgYW4gb2JqZWN0LCBudWxsIG9yIHVuZGVmaW5lZCwgZ290ICR7SlNPTi5z''@;'; put 'put ''dHJpbmdpZnkoeSl9YCkpO0M9dGhpcy5vcHRpb25zfWNvbnN0e2RlbGltaXRlcjpTLGVzY2FwZTpRLHF1b3RlOnJlLHF1b3RlZDpmZSxxdW90ZWRfZW1wdHk6bWUscXVvdGVkX3N0cmluZzprZSxxdW90ZWRfbWF0Y2g6VGUscmVjb3JkX2RlbGltaXRlcjpQZX09QztpZih5KXtpZigic3RyaW5n''@;'; put 'put ''IiE9dHlwZW9mIHkpcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLEVycm9yKGBGb3JtYXR0ZXIgbXVzdCByZXR1cm4gYSBzdHJpbmcsIG51bGwgb3IgdW5kZWZpbmVkLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh5KX1gKSksbnVsbDtjb25zdCBGZT1TLmxlbmd0aCYmeS5pbmRleE9mKFMpPj0wLE5l''@;'; put 'put ''PSIiIT09cmUmJnkuaW5kZXhPZihyZSk+PTAsTGU9eS5pbmRleE9mKFEpPj0wJiZRIT09cmUsQmU9eS5pbmRleE9mKFBlKT49MCxIZT1rZSYmInN0cmluZyI9PXR5cGVvZiBwO2xldCBRZT1UZSYmVGUuZmlsdGVyKEtlPT4ic3RyaW5nIj09dHlwZW9mIEtlPy0xIT09eS5pbmRleE9mKEtlKTpL''@;'; put 'put ''ZS50ZXN0KHkpKTtRZT1RZSYmUWUubGVuZ3RoPjA7Y29uc3QgbXQ9ITA9PT1OZXx8RmV8fEJlfHxmZXx8SGV8fFFlO2lmKCEwPT09bXQmJiEwPT09TGUpe2NvbnN0IEtlPSJcXCI9PT1RP25ldyBSZWdFeHAoUStRLCJnIik6bmV3IFJlZ0V4cChRLCJnIik7eT15LnJlcGxhY2UoS2UsUStRKX1p''@;'; put 'put ''ZighMD09PU5lKXtjb25zdCBLZT1uZXcgUmVnRXhwKHJlLCJnIik7eT15LnJlcGxhY2UoS2UsUStyZSl9ITA9PT1tdCYmKHk9cmUreStyZSksRis9eX1lbHNlKCEwPT09bWV8fCIiPT09cCYmITA9PT1rZSYmITEhPT1tZSkmJihGKz1yZStyZSk7ZyE9PU4ubGVuZ3RoLTEmJihGKz1TKX1yZXR1''@;'; put 'put ''cm4gRn1ib20oKXshMD09PXRoaXMub3B0aW9ucy5ib20mJnRoaXMucHVzaChJKX1oZWFkZXJzKCl7aWYoITE9PT10aGlzLm9wdGlvbnMuaGVhZGVyfHx2b2lkIDA9PT10aGlzLm9wdGlvbnMuY29sdW1ucylyZXR1cm47bGV0IGNlPXRoaXMub3B0aW9ucy5jb2x1bW5zLm1hcChZPT5ZLmhlYWRl''@;'; put 'put ''cik7Y2U9dGhpcy5vcHRpb25zLmVvZj90aGlzLnN0cmluZ2lmeShjZSwhMCkrdGhpcy5vcHRpb25zLnJlY29yZF9kZWxpbWl0ZXI6dGhpcy5zdHJpbmdpZnkoY2UpLHRoaXMucHVzaChjZSl9X19jYXN0KGNlLFkpe2NvbnN0IGI9dHlwZW9mIGNlO3RyeXtyZXR1cm4ic3RyaW5nIj09PWI/W3Zv''@;'; put 'put ''aWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5zdHJpbmcoY2UsWSldOiJiaWdpbnQiPT09Yj9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LmJpZ2ludChjZSxZKV06Im51bWJlciI9PT1iP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3QubnVtYmVyKGNlLFkpXToiYm9vbGVhbiI9PT1iP1t2b2lkIDAs''@;'; put 'put ''dGhpcy5vcHRpb25zLmNhc3QuYm9vbGVhbihjZSxZKV06Y2UgaW5zdGFuY2VvZiBEYXRlP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3QuZGF0ZShjZSxZKV06Im9iamVjdCI9PT1iJiZudWxsIT09Y2U/W3ZvaWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5vYmplY3QoY2UsWSldOlt2b2lkIDAsY2Us''@;'; put 'put ''Y2VdfWNhdGNoKHgpe3JldHVyblt4XX19bm9ybWFsaXplX2NvbHVtbnMoY2Upe2lmKG51bGwhPWNlKXtpZigib2JqZWN0IiE9dHlwZW9mIGNlKXRocm93IEVycm9yKCdJbnZhbGlkIG9wdGlvbiAiY29sdW1ucyI6IGV4cGVjdCBhbiBhcnJheSBvciBhbiBvYmplY3QnKTtpZihBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGNlKSl7Y29uc3QgWT1bXTtmb3IobGV0IGIgb2YgY2UpaWYoInN0cmluZyI9PXR5cGVvZiBiKVkucHVzaCh7a2V5OmIsaGVhZGVyOmJ9KTtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgYnx8dm9pZCAwPT09Ynx8QXJyYXkuaXNBcnJheShiKSl0aHJvdyBFcnJvcigiSW52YWxpZCBjb2x1''@;'; put 'put ''bW4gZGVmaW5pdGlvbjogZXhwZWN0IGEgc3RyaW5nIG9yIGFuIG9iamVjdCIpO2lmKCFiLmtleSl0aHJvdyBFcnJvcignSW52YWxpZCBjb2x1bW4gZGVmaW5pdGlvbjogcHJvcGVydHkgImtleSIgaXMgcmVxdWlyZWQnKTt2b2lkIDA9PT1iLmhlYWRlciYmKGIuaGVhZGVyPWIua2V5KSxZLnB1''@;'; put 'put ''c2goYil9Y2U9WX1lbHNle2NvbnN0IFk9W107Zm9yKGxldCBiIGluIGNlKVkucHVzaCh7a2V5OmIsaGVhZGVyOmNlW2JdfSk7Y2U9WX1yZXR1cm4gY2V9fX1jb25zdCBFPWZ1bmN0aW9uKCl7bGV0IHVlLGNlLFk7Zm9yKGxldCB4IGluIGFyZ3VtZW50cyl7Y29uc3QgTj1hcmd1bWVudHNbeF0s''@;'; put 'put ''Rj10eXBlb2YgTjtpZih2b2lkIDA9PT11ZSYmQXJyYXkuaXNBcnJheShOKSl1ZT1OO2Vsc2UgaWYodm9pZCAwPT09Y2UmJmooTikpY2U9TjtlbHNle2lmKHZvaWQgMCE9PVl8fCJmdW5jdGlvbiIhPT1GKXRocm93IG5ldyB6KCJDU1ZfSU5WQUxJRF9BUkdVTUVOVCIsWyJJbnZhbGlkIGFyZ3Vt''@;'; put 'put ''ZW50OiIsYGdvdCAke0pTT04uc3RyaW5naWZ5KE4pfSBhdCBpbmRleCAke3h9YF0pO1k9Tn19Y29uc3QgYj1uZXcgUihjZSk7aWYoWSl7Y29uc3QgeD1bXTtiLm9uKCJyZWFkYWJsZSIsZnVuY3Rpb24oKXtsZXQgTjtmb3IoO251bGwhPT0oTj10aGlzLnJlYWQoKSk7KXgucHVzaChOKX0pLGIu''@;'; put 'put ''b24oImVycm9yIixmdW5jdGlvbihOKXtZKE4pfSksYi5vbigiZW5kIixmdW5jdGlvbigpe1kodm9pZCAwLHguam9pbigiIikpfSl9aWYodm9pZCAwIT09dWUpaWYoImZ1bmN0aW9uIj09dHlwZW9mIHNldEltbWVkaWF0ZSlzZXRJbW1lZGlhdGUoZnVuY3Rpb24oKXtmb3IobGV0IHggb2YgdWUp''@;'; put 'put ''Yi53cml0ZSh4KTtiLmVuZCgpfSk7ZWxzZXtmb3IobGV0IHggb2YgdWUpYi53cml0ZSh4KTtiLmVuZCgpfXJldHVybiBifTtjbGFzcyB6IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoY2UsWSwuLi5iKXtBcnJheS5pc0FycmF5KFkpJiYoWT1ZLmpvaW4oIiAiKSksc3VwZXIoWSksdm9pZCAw''@;'; put 'put ''IT09RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMseiksdGhpcy5jb2RlPWNlO2Zvcihjb25zdCB4IG9mIGIpZm9yKGNvbnN0IE4gaW4geCl7Y29uc3QgRj14W05dO3RoaXNbTl09Sy5pc0J1ZmZlcihGKT9GLnRvU3RyaW5nKCk6bnVsbD09Rj9G''@;'; put 'put ''OkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoRikpfX19RS5TdHJpbmdpZmllcj1SLEUuQ3N2RXJyb3I9eixILmV4cG9ydHM9RTtjb25zdCBqPWZ1bmN0aW9uKHVlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHVlJiZudWxsIT09dWUmJiFBcnJheS5pc0FycmF5KHVlKX0sVj1mdW5jdGlvbih1''@;'; put 'put ''ZSl7cmV0dXJuIHVlLnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbihjZSxZKXtyZXR1cm4iXyIrWS50b0xvd2VyQ2FzZSgpfSl9LEc9Ii4iLmNoYXJDb2RlQXQoMCksVz0vXFwoXFwpPy9nLFU9UmVnRXhwKCJbXi5bXFxdXSt8XFxbKD86KFteXCInXVteW10qKXwoW1wiJ10pKCg/Oig/IVxc''@;'; put 'put ''MilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKSIsImciKSxxPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHRlPS9eXHcqJC8sbmU9ZnVuY3Rpb24odWUpe2NvbnN0IGNlPXR5cGVvZiB1''@;'; put 'put ''ZTtyZXR1cm4ic3ltYm9sIj09PWNlfHwib2JqZWN0Ij09PWNlJiZ1ZSYmIltvYmplY3QgU3ltYm9sXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodWUpfSxsZT1mdW5jdGlvbih1ZSl7aWYoInN0cmluZyI9PXR5cGVvZiB1ZXx8bmUodWUpKXJldHVybiB1ZTtjb25zdCBjZT1g''@;'; put 'put ''JHt1ZX1gO3JldHVybiIwIj09Y2UmJjEvdWU9PS1JTkZJTklUWT8iLTAiOmNlfSxkZT1mdW5jdGlvbih1ZSxjZSl7bGV0IFk9MDtjb25zdCBiPShjZT1mdW5jdGlvbih1ZSxjZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodWUpP3VlOmZ1bmN0aW9uKFksYil7aWYoQXJyYXkuaXNBcnJheShZKSly''@;'; put 'put ''ZXR1cm4hMTtjb25zdCB4PXR5cGVvZiBZO3JldHVybiEoIm51bWJlciIhPT14JiYic3ltYm9sIiE9PXgmJiJib29sZWFuIiE9PXgmJlkmJiFuZShZKSl8fHRlLnRlc3QoWSl8fCFxLnRlc3QoWSl8fG51bGwhPWImJlkgaW4gT2JqZWN0KGIpfSh1ZSxjZSk/W3VlXTpmdW5jdGlvbihZKXtjb25z''@;'; put 'put ''dCBiPVtdO3JldHVybiBZLmNoYXJDb2RlQXQoMCk9PT1HJiZiLnB1c2goIiIpLFkucmVwbGFjZShVLGZ1bmN0aW9uKHgsTixGLGcpe2xldCBDPXg7Rj9DPWcucmVwbGFjZShXLCIkMSIpOk4mJihDPU4udHJpbSgpKSxiLnB1c2goQyl9KSxifSh1ZSl9KGNlLHVlKSkubGVuZ3RoO2Zvcig7bnVs''@;'; put 'put ''bCE9dWUmJlk8YjspdWU9dWVbbGUoY2VbWSsrXSldO3JldHVybiBZJiZZPT09Yj91ZTp2b2lkIDB9fSw3NTY1OihILEIsTCk9Pnt2YXIgSz1MKDg3NjQpLkJ1ZmZlcjtjb25zdCBKPUwoNTA1Nikse1N0cmluZ0RlY29kZXI6SX09TCgyNTUzKTtILmV4cG9ydHM9ZnVuY3Rpb24oUixFPXt9KXtj''@;'; put 'put ''b25zdCB6PVtdO2Z1bmN0aW9uIGooRyl7RyYmei5wdXNoKEcudG9TdHJpbmcoKSl9Sy5pc0J1ZmZlcihSKSYmKFI9KG5ldyBJKS53cml0ZShSKSk7bGV0IFY9bmV3IEouU3RyaW5naWZpZXIoRSk7Vi5vbigiZGF0YSIsaik7Zm9yKGxldCBHIG9mIFIpVi53cml0ZShHKTtyZXR1cm4gVi5lbmQo''@;'; put 'put ''KSxWLm9mZigiZGF0YSIsaiksei5qb2luKCIiKX19LDQyODk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDIyMTUpLEo9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2woImZvbyIpLEk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxSPUFy''@;'; put 'put ''cmF5LnByb3RvdHlwZS5jb25jYXQsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksej1MKDEwNDQpKCksaj1FJiZ6LFY9ZnVuY3Rpb24oVyxVLHEsdGUpe2lmKFUgaW4gVylpZighMD09PXRlKXtpZihXW1VdPT09cSlyZXR1cm59ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2YobmU9dGUpfHwiW29i''@;'; put 'put ''amVjdCBGdW5jdGlvbl0iIT09SS5jYWxsKG5lKXx8IXRlKCkpcmV0dXJuO3ZhciBuZTtqP0UoVyxVLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpxLHdyaXRhYmxlOiEwfSk6V1tVXT1xfSxHPWZ1bmN0aW9uKFcsVSl7dmFyIHE9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3Vt''@;'; put 'put ''ZW50c1syXTp7fSx0ZT1LKFUpO0omJih0ZT1SLmNhbGwodGUsT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhVKSkpO2Zvcih2YXIgbmU9MDtuZTx0ZS5sZW5ndGg7bmUrPTEpVihXLHRlW25lXSxVW3RlW25lXV0scVt0ZVtuZV1dKX07Ry5zdXBwb3J0c0Rlc2NyaXB0b3JzPSEhaixILmV4''@;'; put 'put ''cG9ydHM9R30sNTI1MTooSCxCLEwpPT57InVzZSBzdHJpY3QiO0IudXRpbHM9TCgxMjc4KSxCLkNpcGhlcj1MKDU3NTYpLEIuREVTPUwoMzI3KSxCLkNCQz1MKDkwNTEpLEIuRURFPUwoNjUxKX0sOTA1MTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTc0NiksSj1MKDU3MTcpLEk9''@;'; put 'put ''e307ZnVuY3Rpb24gUihFKXtLLmVxdWFsKEUubGVuZ3RoLDgsIkludmFsaWQgSVYgbGVuZ3RoIiksdGhpcy5pdj1uZXcgQXJyYXkoOCk7Zm9yKHZhciB6PTA7ejx0aGlzLml2Lmxlbmd0aDt6KyspdGhpcy5pdlt6XT1FW3pdfUIuaW5zdGFudGlhdGU9ZnVuY3Rpb24oRSl7ZnVuY3Rpb24geihX''@;'; put 'put ''KXtFLmNhbGwodGhpcyxXKSx0aGlzLl9jYmNJbml0KCl9Sih6LEUpO2Zvcih2YXIgaj1PYmplY3Qua2V5cyhJKSxWPTA7VjxqLmxlbmd0aDtWKyspe3ZhciBHPWpbVl07ei5wcm90b3R5cGVbR109SVtHXX1yZXR1cm4gei5jcmVhdGU9ZnVuY3Rpb24oVyl7cmV0dXJuIG5ldyB6KFcpfSx6fSxJ''@;'; put 'put ''Ll9jYmNJbml0PWZ1bmN0aW9uKCl7dmFyIEU9bmV3IFIodGhpcy5vcHRpb25zLml2KTt0aGlzLl9jYmNTdGF0ZT1FfSxJLl91cGRhdGU9ZnVuY3Rpb24oRSx6LGosVil7dmFyIFc9dGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlLFU9dGhpcy5fY2JjU3RhdGUuaXY7aWYoImVuY3J5''@;'; put 'put ''cHQiPT09dGhpcy50eXBlKXtmb3IodmFyIHE9MDtxPHRoaXMuYmxvY2tTaXplO3ErKylVW3FdXj1FW3orcV07Zm9yKFcuX3VwZGF0ZS5jYWxsKHRoaXMsVSwwLGosVikscT0wO3E8dGhpcy5ibG9ja1NpemU7cSsrKVVbcV09altWK3FdfWVsc2V7Zm9yKFcuX3VwZGF0ZS5jYWxsKHRoaXMsRSx6''@;'; put 'put ''LGosVikscT0wO3E8dGhpcy5ibG9ja1NpemU7cSsrKWpbVitxXV49VVtxXTtmb3IocT0wO3E8dGhpcy5ibG9ja1NpemU7cSsrKVVbcV09RVt6K3FdfX19LDU3NTY6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDk3NDYpO2Z1bmN0aW9uIEooSSl7dGhpcy5vcHRpb25zPUksdGhpcy50''@;'; put 'put ''eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxvY2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MH1ILmV4cG9ydHM9SixKLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30sSi5wcm90b3R5cGUudXBk''@;'; put 'put ''YXRlPWZ1bmN0aW9uKEkpe3JldHVybiAwPT09SS5sZW5ndGg/W106ImRlY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX3VwZGF0ZURlY3J5cHQoSSk6dGhpcy5fdXBkYXRlRW5jcnlwdChJKX0sSi5wcm90b3R5cGUuX2J1ZmZlcj1mdW5jdGlvbihJLFIpe2Zvcih2YXIgRT1NYXRoLm1pbih0aGlz''@;'; put 'put ''LmJ1ZmZlci5sZW5ndGgtdGhpcy5idWZmZXJPZmYsSS5sZW5ndGgtUiksej0wO3o8RTt6KyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYrel09SVtSK3pdO3JldHVybiB0aGlzLmJ1ZmZlck9mZis9RSxFfSxKLnByb3RvdHlwZS5fZmx1c2hCdWZmZXI9ZnVuY3Rpb24oSSxSKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsSSxSKSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMuYmxvY2tTaXplfSxKLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdD1mdW5jdGlvbihJKXt2YXIgUj0wLEU9MCxqPW5ldyBBcnJheSgoKHRoaXMuYnVmZmVyT2ZmK0kubGVuZ3RoKS90aGlzLmJsb2Nr''@;'; put 'put ''U2l6ZXwwKSp0aGlzLmJsb2NrU2l6ZSk7MCE9PXRoaXMuYnVmZmVyT2ZmJiYoUis9dGhpcy5fYnVmZmVyKEksUiksdGhpcy5idWZmZXJPZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJihFKz10aGlzLl9mbHVzaEJ1ZmZlcihqLEUpKSk7Zm9yKHZhciBWPUkubGVuZ3RoLShJLmxlbmd0aC1SKSV0''@;'; put 'put ''aGlzLmJsb2NrU2l6ZTtSPFY7Uis9dGhpcy5ibG9ja1NpemUpdGhpcy5fdXBkYXRlKEksUixqLEUpLEUrPXRoaXMuYmxvY2tTaXplO2Zvcig7UjxJLmxlbmd0aDtSKyssdGhpcy5idWZmZXJPZmYrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl09SVtSXTtyZXR1cm4gan0sSi5wcm90b3R5''@;'; put 'put ''cGUuX3VwZGF0ZURlY3J5cHQ9ZnVuY3Rpb24oSSl7Zm9yKHZhciBSPTAsRT0wLHo9TWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZitJLmxlbmd0aCkvdGhpcy5ibG9ja1NpemUpLTEsaj1uZXcgQXJyYXkoeip0aGlzLmJsb2NrU2l6ZSk7ej4wO3otLSlSKz10aGlzLl9idWZmZXIoSSxSKSxFKz10''@;'; put 'put ''aGlzLl9mbHVzaEJ1ZmZlcihqLEUpO3JldHVybiBSKz10aGlzLl9idWZmZXIoSSxSKSxqfSxKLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihJKXt2YXIgUixFO3JldHVybiBJJiYoUj10aGlzLnVwZGF0ZShJKSksRT0iZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZmluYWxFbmNyeXB0KCk6''@;'; put 'put ''dGhpcy5fZmluYWxEZWNyeXB0KCksUj9SLmNvbmNhdChFKTpFfSxKLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKEksUil7aWYoMD09PVIpcmV0dXJuITE7Zm9yKDtSPEkubGVuZ3RoOylJW1IrK109MDtyZXR1cm4hMH0sSi5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdD1mdW5jdGlvbigpe2lmKCF0''@;'; put 'put ''aGlzLl9wYWQodGhpcy5idWZmZXIsdGhpcy5idWZmZXJPZmYpKXJldHVybltdO3ZhciBJPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLEksMCksSX0sSi5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKEkpe3JldHVybiBJfSxKLnBy''@;'; put 'put ''b3RvdHlwZS5fZmluYWxEZWNyeXB0PWZ1bmN0aW9uKCl7Sy5lcXVhbCh0aGlzLmJ1ZmZlck9mZix0aGlzLmJsb2NrU2l6ZSwiTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQiKTt2YXIgST1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl9mbHVzaEJ1ZmZlcihJLDApLHRo''@;'; put 'put ''aXMuX3VucGFkKEkpfX0sMzI3OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg5NzQ2KSxKPUwoNTcxNyksST1MKDEyNzgpLFI9TCg1NzU2KTtmdW5jdGlvbiBFKCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIHooVil7Ui5jYWxsKHRoaXMsVik7''@;'; put 'put ''dmFyIEc9bmV3IEU7dGhpcy5fZGVzU3RhdGU9Ryx0aGlzLmRlcml2ZUtleXMoRyxWLmtleSl9Sih6LFIpLEguZXhwb3J0cz16LHouY3JlYXRlPWZ1bmN0aW9uKFYpe3JldHVybiBuZXcgeihWKX07dmFyIGo9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO3oucHJvdG90eXBlLmRl''@;'; put 'put ''cml2ZUtleXM9ZnVuY3Rpb24oVixHKXtWLmtleXM9bmV3IEFycmF5KDMyKSxLLmVxdWFsKEcubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgVz1JLnJlYWRVSW50MzJCRShHLDApLFU9SS5yZWFkVUludDMyQkUoRyw0KTtJLnBjMShXLFUsVi50bXAsMCks''@;'; put 'put ''Vz1WLnRtcFswXSxVPVYudG1wWzFdO2Zvcih2YXIgcT0wO3E8Vi5rZXlzLmxlbmd0aDtxKz0yKXt2YXIgdGU9altxPj4+MV07Vz1JLnIyOHNobChXLHRlKSxVPUkucjI4c2hsKFUsdGUpLEkucGMyKFcsVSxWLmtleXMscSl9fSx6LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFYsRyxXLFUp''@;'; put 'put ''e3ZhciBxPXRoaXMuX2Rlc1N0YXRlLHRlPUkucmVhZFVJbnQzMkJFKFYsRyksbmU9SS5yZWFkVUludDMyQkUoVixHKzQpO0kuaXAodGUsbmUscS50bXAsMCksdGU9cS50bXBbMF0sbmU9cS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQocSx0ZSxuZSxxLnRtcCww''@;'; put 'put ''KTp0aGlzLl9kZWNyeXB0KHEsdGUsbmUscS50bXAsMCksbmU9cS50bXBbMV0sSS53cml0ZVVJbnQzMkJFKFcsdGU9cS50bXBbMF0sVSksSS53cml0ZVVJbnQzMkJFKFcsbmUsVSs0KX0sei5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbihWLEcpe2Zvcih2YXIgVz1WLmxlbmd0aC1HLFU9RztVPFYu''@;'; put 'put ''bGVuZ3RoO1UrKylWW1VdPVc7cmV0dXJuITB9LHoucHJvdG90eXBlLl91bnBhZD1mdW5jdGlvbihWKXtmb3IodmFyIEc9VltWLmxlbmd0aC0xXSxXPVYubGVuZ3RoLUc7VzxWLmxlbmd0aDtXKyspSy5lcXVhbChWW1ddLEcpO3JldHVybiBWLnNsaWNlKDAsVi5sZW5ndGgtRyl9LHoucHJvdG90''@;'; put 'put ''eXBlLl9lbmNyeXB0PWZ1bmN0aW9uKFYsRyxXLFUscSl7Zm9yKHZhciB0ZT1HLG5lPVcsaWU9MDtpZTxWLmtleXMubGVuZ3RoO2llKz0yKXt2YXIgbGU9Vi5rZXlzW2llXSxkZT1WLmtleXNbaWUrMV07SS5leHBhbmQobmUsVi50bXAsMCk7dmFyIHVlPUkuc3Vic3RpdHV0ZShsZV49Vi50bXBb''@;'; put 'put ''MF0sZGVePVYudG1wWzFdKSxjZT1uZTtuZT0odGVeSS5wZXJtdXRlKHVlKSk+Pj4wLHRlPWNlfUkucmlwKG5lLHRlLFUscSl9LHoucHJvdG90eXBlLl9kZWNyeXB0PWZ1bmN0aW9uKFYsRyxXLFUscSl7Zm9yKHZhciB0ZT1XLG5lPUcsaWU9Vi5rZXlzLmxlbmd0aC0yO2llPj0wO2llLT0yKXt2''@;'; put 'put ''YXIgbGU9Vi5rZXlzW2llXSxkZT1WLmtleXNbaWUrMV07SS5leHBhbmQodGUsVi50bXAsMCk7dmFyIHVlPUkuc3Vic3RpdHV0ZShsZV49Vi50bXBbMF0sZGVePVYudG1wWzFdKSxjZT10ZTt0ZT0obmVeSS5wZXJtdXRlKHVlKSk+Pj4wLG5lPWNlfUkucmlwKHRlLG5lLFUscSl9fSw2NTE6KEgs''@;'; put 'put ''QixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDk3NDYpLEo9TCg1NzE3KSxJPUwoNTc1NiksUj1MKDMyNyk7ZnVuY3Rpb24gRShqLFYpe0suZXF1YWwoVi5sZW5ndGgsMjQsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBHPVYuc2xpY2UoMCw4KSxXPVYuc2xpY2UoOCwxNiksVT1WLnNsaWNl''@;'; put 'put ''KDE2LDI0KTt0aGlzLmNpcGhlcnM9ImVuY3J5cHQiPT09aj9bUi5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpHfSksUi5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpXfSksUi5jcmVhdGUoe3R5cGU6ImVuY3J5cHQiLGtleTpVfSldOltSLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5''@;'; put 'put ''OlV9KSxSLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Old9KSxSLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Okd9KV19ZnVuY3Rpb24geihqKXtJLmNhbGwodGhpcyxqKTt2YXIgVj1uZXcgRSh0aGlzLnR5cGUsdGhpcy5vcHRpb25zLmtleSk7dGhpcy5fZWRlU3RhdGU9Vn1KKHosSSks''@;'; put 'put ''SC5leHBvcnRzPXosei5jcmVhdGU9ZnVuY3Rpb24oail7cmV0dXJuIG5ldyB6KGopfSx6LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGosVixHLFcpe3ZhciBVPXRoaXMuX2VkZVN0YXRlO1UuY2lwaGVyc1swXS5fdXBkYXRlKGosVixHLFcpLFUuY2lwaGVyc1sxXS5fdXBkYXRlKEcsVyxH''@;'; put 'put ''LFcpLFUuY2lwaGVyc1syXS5fdXBkYXRlKEcsVyxHLFcpfSx6LnByb3RvdHlwZS5fcGFkPVIucHJvdG90eXBlLl9wYWQsei5wcm90b3R5cGUuX3VucGFkPVIucHJvdG90eXBlLl91bnBhZH0sMTI3ODooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtCLnJlYWRVSW50MzJCRT1mdW5jdGlvbihJLFIpe3Jl''@;'; put 'put ''dHVybihJWzArUl08PDI0fElbMStSXTw8MTZ8SVsyK1JdPDw4fElbMytSXSk+Pj4wfSxCLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oSSxSLEUpe0lbMCtFXT1SPj4+MjQsSVsxK0VdPVI+Pj4xNiYyNTUsSVsyK0VdPVI+Pj44JjI1NSxJWzMrRV09MjU1JlJ9LEIuaXA9ZnVuY3Rpb24oSSxSLEUs''@;'; put 'put ''eil7Zm9yKHZhciBqPTAsVj0wLEc9NjtHPj0wO0ctPTIpe2Zvcih2YXIgVz0wO1c8PTI0O1crPTgpajw8PTEsanw9Uj4+PlcrRyYxO2ZvcihXPTA7Vzw9MjQ7Vys9OClqPDw9MSxqfD1JPj4+VytHJjF9Zm9yKEc9NjtHPj0wO0ctPTIpe2ZvcihXPTE7Vzw9MjU7Vys9OClWPDw9MSxWfD1SPj4+''@;'; put 'put ''VytHJjE7Zm9yKFc9MTtXPD0yNTtXKz04KVY8PD0xLFZ8PUk+Pj5XK0cmMX1FW3orMF09aj4+PjAsRVt6KzFdPVY+Pj4wfSxCLnJpcD1mdW5jdGlvbihJLFIsRSx6KXtmb3IodmFyIGo9MCxWPTAsRz0wO0c8NDtHKyspZm9yKHZhciBXPTI0O1c+PTA7Vy09OClqPDw9MSxqfD1SPj4+VytHJjEs''@;'; put 'put ''ajw8PTEsanw9ST4+PlcrRyYxO2ZvcihHPTQ7Rzw4O0crKylmb3IoVz0yNDtXPj0wO1ctPTgpVjw8PTEsVnw9Uj4+PlcrRyYxLFY8PD0xLFZ8PUk+Pj5XK0cmMTtFW3orMF09aj4+PjAsRVt6KzFdPVY+Pj4wfSxCLnBjMT1mdW5jdGlvbihJLFIsRSx6KXtmb3IodmFyIGo9MCxWPTAsRz03O0c+''@;'; put 'put ''PTU7Ry0tKXtmb3IodmFyIFc9MDtXPD0yNDtXKz04KWo8PD0xLGp8PVI+PlcrRyYxO2ZvcihXPTA7Vzw9MjQ7Vys9OClqPDw9MSxqfD1JPj5XK0cmMX1mb3IoVz0wO1c8PTI0O1crPTgpajw8PTEsanw9Uj4+VytHJjE7Zm9yKEc9MTtHPD0zO0crKyl7Zm9yKFc9MDtXPD0yNDtXKz04KVY8PD0x''@;'; put 'put ''LFZ8PVI+PlcrRyYxO2ZvcihXPTA7Vzw9MjQ7Vys9OClWPDw9MSxWfD1JPj5XK0cmMX1mb3IoVz0wO1c8PTI0O1crPTgpVjw8PTEsVnw9ST4+VytHJjE7RVt6KzBdPWo+Pj4wLEVbeisxXT1WPj4+MH0sQi5yMjhzaGw9ZnVuY3Rpb24oSSxSKXtyZXR1cm4gSTw8UiYyNjg0MzU0NTV8ST4+PjI4''@;'; put 'put ''LVJ9O3ZhciBMPVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUsMjYsMTUsNCwyNSwxOSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO0IucGMyPWZ1bmN0aW9uKEksUixFLHope2Zv''@;'; put 'put ''cih2YXIgaj0wLFY9MCxHPUwubGVuZ3RoPj4+MSxXPTA7VzxHO1crKylqPDw9MSxqfD1JPj4+TFtXXSYxO2ZvcihXPUc7VzxMLmxlbmd0aDtXKyspVjw8PTEsVnw9Uj4+PkxbV10mMTtFW3orMF09aj4+PjAsRVt6KzFdPVY+Pj4wfSxCLmV4cGFuZD1mdW5jdGlvbihJLFIsRSl7dmFyIHo9MCxq''@;'; put 'put ''PTA7ej0oMSZJKTw8NXxJPj4+Mjc7Zm9yKHZhciBWPTIzO1Y+PTE1O1YtPTQpejw8PTYsenw9ST4+PlYmNjM7Zm9yKFY9MTE7Vj49MztWLT00KWp8PUk+Pj5WJjYzLGo8PD02O2p8PSgzMSZJKTw8MXxJPj4+MzEsUltFKzBdPXo+Pj4wLFJbRSsxXT1qPj4+MH07dmFyIEs9WzE0LDAsNCwxNSwx''@;'; put 'put ''Myw3LDEsNCwyLDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUsOSw5LDUsMCwzLDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUs''@;'; put 'put ''MTEsMiwzLDgsNCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1LDAsMTMsMTQsOCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMywwLDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAs''@;'; put 'put ''MSwyLDEzLDgsMTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQsMTMsOSwwLDgsNiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUsMCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIs''@;'; put 'put ''NSwxMiwxMSwxLDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwxMSwxLDcsMTMsMTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwxMyw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMs''@;'; put 'put ''MCw5LDE0LDgsOSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEzLDE1LDYsOSwxNSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywxLDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgs''@;'; put 'put ''OSw0LDE0LDMsMTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwxLDEwLDcsMSw2LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwx''@;'; put 'put ''MywxMyw4LDEyLDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1LDIsOSwzLDIsMTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDksNywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwx''@;'; put 'put ''MCwxNCw4LDIsMTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07Qi5zdWJzdGl0dXRlPWZ1bmN0aW9uKEksUil7Zm9yKHZhciBFPTAsej0wO3o8NDt6KyspRTw8PTQsRXw9S1s2NCp6KyhJPj4+MTgtNip6JjYzKV07Zm9yKHo9MDt6PDQ7eisrKUU8PD00LEV8PUtbMjU2''@;'; put 'put ''KzY0KnorKFI+Pj4xOC02KnomNjMpXTtyZXR1cm4gRT4+PjB9O3ZhciBKPVsxNiwyNSwxMiwxMSwzLDIwLDQsMTUsMzEsMTcsOSw2LDI3LDE0LDEsMjIsMzAsMjQsOCwxOCwwLDUsMjksMjMsMTMsMTksMiwyNiwxMCwyMSwyOCw3XTtCLnBlcm11dGU9ZnVuY3Rpb24oSSl7Zm9yKHZhciBSPTAs''@;'; put 'put ''RT0wO0U8Si5sZW5ndGg7RSsrKVI8PD0xLFJ8PUk+Pj5KW0VdJjE7cmV0dXJuIFI+Pj4wfSxCLnBhZFNwbGl0PWZ1bmN0aW9uKEksUixFKXtmb3IodmFyIHo9SS50b1N0cmluZygyKTt6Lmxlbmd0aDxSOyl6PSIwIit6O2Zvcih2YXIgaj1bXSxWPTA7VjxSO1YrPUUpai5wdXNoKHouc2xpY2Uo''@;'; put 'put ''VixWK0UpKTtyZXR1cm4gai5qb2luKCIgIil9fSwyNjA3OihILEIsTCk9Pnt2YXIgSz1MKDg3NjQpLkJ1ZmZlcixKPUwoMzU5MCksST1MKDk3OTkpLFI9TCg3NDI2KSxFPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07Qi5EaWZmaWVIZWxsbWFuR3JvdXA9Qi5jcmVhdGVEaWZmaWVIZWxs''@;'; put 'put ''bWFuR3JvdXA9Qi5nZXREaWZmaWVIZWxsbWFuPWZ1bmN0aW9uKHope3ZhciBqPW5ldyBLKElbel0ucHJpbWUsImhleCIpLFY9bmV3IEsoSVt6XS5nZW4sImhleCIpO3JldHVybiBuZXcgUihqLFYpfSxCLmNyZWF0ZURpZmZpZUhlbGxtYW49Qi5EaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIHooaixW''@;'; put 'put ''LEcsVyl7cmV0dXJuIEsuaXNCdWZmZXIoVil8fHZvaWQgMD09PUVbVl0/eihqLCJiaW5hcnkiLFYsRyk6KFY9Vnx8ImJpbmFyeSIsVz1XfHwiYmluYXJ5IixHPUd8fG5ldyBLKFsyXSksSy5pc0J1ZmZlcihHKXx8KEc9bmV3IEsoRyxXKSksIm51bWJlciI9PXR5cGVvZiBqP25ldyBSKEooaixH''@;'; put 'put ''KSxHLCEwKTooSy5pc0J1ZmZlcihqKXx8KGo9bmV3IEsoaixWKSksbmV3IFIoaixHLCEwKSkpfX0sNzQyNjooSCxCLEwpPT57dmFyIEs9TCg4NzY0KS5CdWZmZXIsSj1MKDM2MjApLEk9bmV3KEwoMzA0NykpLFI9bmV3IEooMjQpLEU9bmV3IEooMTEpLHo9bmV3IEooMTApLGo9bmV3IEooMyks''@;'; put 'put ''Vj1uZXcgSig3KSxHPUwoMzU5MCksVz1MKDE3OTgpO2Z1bmN0aW9uIFUobGUsZGUpe3JldHVybiBkZT1kZXx8InV0ZjgiLEsuaXNCdWZmZXIobGUpfHwobGU9bmV3IEsobGUsZGUpKSx0aGlzLl9wdWI9bmV3IEoobGUpLHRoaXN9ZnVuY3Rpb24gcShsZSxkZSl7cmV0dXJuIGRlPWRlfHwidXRm''@;'; put 'put ''OCIsSy5pc0J1ZmZlcihsZSl8fChsZT1uZXcgSyhsZSxkZSkpLHRoaXMuX3ByaXY9bmV3IEoobGUpLHRoaXN9SC5leHBvcnRzPW5lO3ZhciB0ZT17fTtmdW5jdGlvbiBuZShsZSxkZSx1ZSl7dGhpcy5zZXRHZW5lcmF0b3IoZGUpLHRoaXMuX19wcmltZT1uZXcgSihsZSksdGhpcy5fcHJpbWU9''@;'; put 'put ''Si5tb250KHRoaXMuX19wcmltZSksdGhpcy5fcHJpbWVMZW49bGUubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJpbWVDb2RlPXZvaWQgMCx1ZT8odGhpcy5zZXRQdWJsaWNLZXk9VSx0aGlzLnNldFByaXZhdGVLZXk9cSk6dGhpcy5fcHJpbWVDb2Rl''@;'; put 'put ''PTh9ZnVuY3Rpb24gaWUobGUsZGUpe3ZhciB1ZT1uZXcgSyhsZS50b0FycmF5KCkpO3JldHVybiBkZT91ZS50b1N0cmluZyhkZSk6dWV9T2JqZWN0LmRlZmluZVByb3BlcnR5KG5lLnByb3RvdHlwZSwidmVyaWZ5RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJu''@;'; put 'put ''dW1iZXIiIT10eXBlb2YgdGhpcy5fcHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPWZ1bmN0aW9uKGxlLGRlKXt2YXIgdWU9ZGUudG9TdHJpbmcoImhleCIpLGNlPVt1ZSxsZS50b1N0cmluZygxNildLmpvaW4oIl8iKTtpZihjZSBpbiB0ZSlyZXR1cm4gdGVbY2VdO3ZhciBZLGI9MDtpZihs''@;'; put 'put ''ZS5pc0V2ZW4oKXx8IUcuc2ltcGxlU2lldmV8fCFHLmZlcm1hdFRlc3QobGUpfHwhSS50ZXN0KGxlKSlyZXR1cm4gYis9MSx0ZVtjZV09Yis9IjAyIj09PXVlfHwiMDUiPT09dWU/ODo0LGI7c3dpdGNoKEkudGVzdChsZS5zaHJuKDEpKXx8KGIrPTIpLHVlKXtjYXNlIjAyIjpsZS5tb2QoUiku''@;'; put 'put ''Y21wKEUpJiYoYis9OCk7YnJlYWs7Y2FzZSIwNSI6KFk9bGUubW9kKHopKS5jbXAoaikmJlkuY21wKFYpJiYoYis9OCk7YnJlYWs7ZGVmYXVsdDpiKz00fXJldHVybiB0ZVtjZV09YixifSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1lQ29kZX19KSxuZS5wcm90b3R5cGUu''@;'; put 'put ''Z2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBKKFcodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tl''@;'; put 'put ''eSgpfSxuZS5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihsZSl7dmFyIGRlPShsZT0obGU9bmV3IEoobGUpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksdWU9bmV3IEsoZGUudG9BcnJheSgpKSxjZT10aGlzLmdldFByaW1lKCk7aWYo''@;'; put 'put ''dWUubGVuZ3RoPGNlLmxlbmd0aCl7dmFyIFk9bmV3IEsoY2UubGVuZ3RoLXVlLmxlbmd0aCk7WS5maWxsKDApLHVlPUsuY29uY2F0KFtZLHVlXSl9cmV0dXJuIHVlfSxuZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKGxlKXtyZXR1cm4gaWUodGhpcy5fcHViLGxlKX0sbmUucHJv''@;'; put 'put ''dG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24obGUpe3JldHVybiBpZSh0aGlzLl9wcml2LGxlKX0sbmUucHJvdG90eXBlLmdldFByaW1lPWZ1bmN0aW9uKGxlKXtyZXR1cm4gaWUodGhpcy5fX3ByaW1lLGxlKX0sbmUucHJvdG90eXBlLmdldEdlbmVyYXRvcj1mdW5jdGlvbihsZSl7cmV0''@;'; put 'put ''dXJuIGllKHRoaXMuX2dlbixsZSl9LG5lLnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24obGUsZGUpe3JldHVybiBkZT1kZXx8InV0ZjgiLEsuaXNCdWZmZXIobGUpfHwobGU9bmV3IEsobGUsZGUpKSx0aGlzLl9fZ2VuPWxlLHRoaXMuX2dlbj1uZXcgSihsZSksdGhpc319LDM1OTA6''@;'; put 'put ''KEgsQixMKT0+e3ZhciBLPUwoMTc5OCk7SC5leHBvcnRzPWxlLGxlLnNpbXBsZVNpZXZlPW5lLGxlLmZlcm1hdFRlc3Q9aWU7dmFyIEo9TCgzNjIwKSxJPW5ldyBKKDI0KSxSPW5ldyhMKDMwNDcpKSxFPW5ldyBKKDEpLHo9bmV3IEooMiksaj1uZXcgSig1KSxWPShuZXcgSigxNiksbmV3IEoo''@;'; put 'put ''OCksbmV3IEooMTApKSxHPW5ldyBKKDMpLFc9KG5ldyBKKDcpLG5ldyBKKDExKSksVT1uZXcgSig0KSxxPShuZXcgSigxMiksbnVsbCk7ZnVuY3Rpb24gbmUoZGUpe2Zvcih2YXIgdWU9ZnVuY3Rpb24gdGUoKXtpZihudWxsIT09cSlyZXR1cm4gcTt2YXIgZGU9W107ZGVbMF09Mjtmb3IodmFy''@;'; put 'put ''IHVlPTEsY2U9MztjZTwxMDQ4NTc2O2NlKz0yKXtmb3IodmFyIFk9TWF0aC5jZWlsKE1hdGguc3FydChjZSkpLGI9MDtiPHVlJiZkZVtiXTw9WSYmY2UlZGVbYl0hPTA7YisrKTt1ZSE9PWImJmRlW2JdPD1ZfHwoZGVbdWUrK109Y2UpfXJldHVybiBxPWRlLGRlfSgpLGNlPTA7Y2U8dWUubGVu''@;'; put 'put ''Z3RoO2NlKyspaWYoMD09PWRlLm1vZG4odWVbY2VdKSlyZXR1cm4gMD09PWRlLmNtcG4odWVbY2VdKTtyZXR1cm4hMH1mdW5jdGlvbiBpZShkZSl7dmFyIHVlPUoubW9udChkZSk7cmV0dXJuIDA9PT16LnRvUmVkKHVlKS5yZWRQb3coZGUuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSl9ZnVu''@;'; put 'put ''Y3Rpb24gbGUoZGUsdWUpe2lmKGRlPDE2KXJldHVybiBuZXcgSigyPT09dWV8fDU9PT11ZT9bMTQwLDEyM106WzE0MCwzOV0pO3ZhciBjZSxZO2Zvcih1ZT1uZXcgSih1ZSk7Oyl7Zm9yKGNlPW5ldyBKKEsoTWF0aC5jZWlsKGRlLzgpKSk7Y2UuYml0TGVuZ3RoKCk+ZGU7KWNlLmlzaHJuKDEp''@;'; put 'put ''O2lmKGNlLmlzRXZlbigpJiZjZS5pYWRkKEUpLGNlLnRlc3RuKDEpfHxjZS5pYWRkKHopLHVlLmNtcCh6KSl7aWYoIXVlLmNtcChqKSlmb3IoO2NlLm1vZChWKS5jbXAoRyk7KWNlLmlhZGQoVSl9ZWxzZSBmb3IoO2NlLm1vZChJKS5jbXAoVyk7KWNlLmlhZGQoVSk7aWYobmUoWT1jZS5zaHJu''@;'; put 'put ''KDEpKSYmbmUoY2UpJiZpZShZKSYmaWUoY2UpJiZSLnRlc3QoWSkmJlIudGVzdChjZSkpcmV0dXJuIGNlfX19LDM2MjA6ZnVuY3Rpb24oSCxCLEwpeyFmdW5jdGlvbihLLEopeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBJKGcsQyl7aWYoIWcpdGhyb3cgbmV3IEVycm9yKEN8fCJBc3NlcnRpb24g''@;'; put 'put ''ZmFpbGVkIil9ZnVuY3Rpb24gUihnLEMpe2cuc3VwZXJfPUM7dmFyIE09ZnVuY3Rpb24oKXt9O00ucHJvdG90eXBlPUMucHJvdG90eXBlLGcucHJvdG90eXBlPW5ldyBNLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWd9ZnVuY3Rpb24gRShnLEMsTSl7aWYoRS5pc0JOKGcpKXJldHVybiBnO3Ro''@;'; put 'put ''aXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1nJiYoImxlIiE9PUMmJiJiZSIhPT1DfHwoTT1DLEM9MTApLHRoaXMuX2luaXQoZ3x8MCxDfHwxMCxNfHwiYmUiKSl9dmFyIHo7Im9iamVjdCI9PXR5cGVvZiBLP0suZXhwb3J0''@;'; put 'put ''cz1FOkouQk49RSxFLkJOPUUsRS53b3JkU2l6ZT0yNjt0cnl7ej10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkwoNzc0OCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBqKGcsQyl7dmFyIE09Zy5jaGFyQ29kZUF0KEMpO3JldHVybiBNPj02''@;'; put 'put ''NSYmTTw9NzA/TS01NTpNPj05NyYmTTw9MTAyP00tODc6TS00OCYxNX1mdW5jdGlvbiBWKGcsQyxNKXt2YXIgeT1qKGcsTSk7cmV0dXJuIE0tMT49QyYmKHl8PWooZyxNLTEpPDw0KSx5fWZ1bmN0aW9uIEcoZyxDLE0seSl7Zm9yKHZhciBwPTAsUz1NYXRoLm1pbihnLmxlbmd0aCxNKSxRPUM7''@;'; put 'put ''UTxTO1ErKyl7dmFyIHJlPWcuY2hhckNvZGVBdChRKS00ODtwKj15LHArPXJlPj00OT9yZS00OSsxMDpyZT49MTc/cmUtMTcrMTA6cmV9cmV0dXJuIHB9RS5pc0JOPWZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgRXx8bnVsbCE9PWcmJiJvYmplY3QiPT10eXBlb2YgZyYmZy5jb25z''@;'; put 'put ''dHJ1Y3Rvci53b3JkU2l6ZT09PUUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZy53b3Jkcyl9LEUubWF4PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPjA/ZzpDfSxFLm1pbj1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKTwwP2c6Q30sRS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rp''@;'; put 'put ''b24oZyxDLE0pe2lmKCJudW1iZXIiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihnLEMsTSk7aWYoIm9iamVjdCI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZyxDLE0pOyJoZXgiPT09QyYmKEM9MTYpLEkoQz09PSgwfEMpJiZDPj0yJiZDPD0zNik7dmFyIHk9''@;'; put 'put ''MDsiLSI9PT0oZz1nLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKHkrKyx0aGlzLm5lZ2F0aXZlPTEpLHk8Zy5sZW5ndGgmJigxNj09PUM/dGhpcy5fcGFyc2VIZXgoZyx5LE0pOih0aGlzLl9wYXJzZUJhc2UoZyxDLHkpLCJsZSI9PT1NJiZ0aGlzLl9pbml0QXJyYXkodGhp''@;'; put 'put ''cy50b0FycmF5KCksQyxNKSkpfSxFLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihnLEMsTSl7ZzwwJiYodGhpcy5uZWdhdGl2ZT0xLGc9LWcpLGc8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmddLHRoaXMubGVuZ3RoPTEpOmc8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53''@;'; put 'put ''b3Jkcz1bNjcxMDg4NjMmZyxnLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooSShnPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRo''@;'; put 'put ''aXMudG9BcnJheSgpLEMsTSl9LEUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZyxDLE0pe2lmKEkoIm51bWJlciI9PXR5cGVvZiBnLmxlbmd0aCksZy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwo''@;'; put 'put ''Zy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09MDt2YXIgcCxTLFE9MDtpZigiYmUiPT09TSlmb3IoeT1nLmxlbmd0aC0xLHA9MDt5Pj0wO3ktPTMpdGhpcy53b3Jkc1twXXw9KFM9''@;'; put 'put ''Z1t5XXxnW3ktMV08PDh8Z1t5LTJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1RJjY3MTA4ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsrKTtlbHNlIGlmKCJsZSI9PT1NKWZvcih5PTAscD0wO3k8Zy5sZW5ndGg7eSs9Myl0aGlzLndvcmRzW3BdfD0oUz1nW3ld''@;'; put 'put ''fGdbeSsxXTw8OHxnW3krMl08PDE2KTw8USY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09Uz4+PjI2LVEmNjcxMDg4NjMsKFErPTI0KT49MjYmJihRLT0yNixwKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihnLEMsTSl7dGhpcy5sZW5ndGg9''@;'; put 'put ''TWF0aC5jZWlsKChnLmxlbmd0aC1DKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB5PTA7eTx0aGlzLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT0wO3ZhciBwLFM9MCxRPTA7aWYoImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMTt5Pj1DO3ktPTIpcD1WKGcs''@;'; put 'put ''Qyx5KTw8Uyx0aGlzLndvcmRzW1FdfD02NzEwODg2MyZwLFM+PTE4PyhTLT0xOCx0aGlzLndvcmRzW1ErPTFdfD1wPj4+MjYpOlMrPTg7ZWxzZSBmb3IoeT0oZy5sZW5ndGgtQyklMj09MD9DKzE6Qzt5PGcubGVuZ3RoO3krPTIpcD1WKGcsQyx5KTw8Uyx0aGlzLndvcmRzW1FdfD02NzEwODg2''@;'; put 'put ''MyZwLFM+PTE4PyhTLT0xOCx0aGlzLndvcmRzW1ErPTFdfD1wPj4+MjYpOlMrPTg7dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGcsQyxNKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgeT0wLHA9MTtwPD02NzEwODg2MztwKj1DKXkr''@;'; put 'put ''Kzt5LS0scD1wL0N8MDtmb3IodmFyIFM9Zy5sZW5ndGgtTSxRPVMleSxyZT1NYXRoLm1pbihTLFMtUSkrTSxmZT0wLG1lPU07bWU8cmU7bWUrPXkpZmU9RyhnLG1lLG1lK3ksQyksdGhpcy5pbXVsbihwKSx0aGlzLndvcmRzWzBdK2ZlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWZlOnRoaXMu''@;'; put 'put ''X2lhZGRuKGZlKTtpZigwIT09USl7dmFyIGtlPTE7Zm9yKGZlPUcoZyxtZSxnLmxlbmd0aCxDKSxtZT0wO21lPFE7bWUrKylrZSo9Qzt0aGlzLmltdWxuKGtlKSx0aGlzLndvcmRzWzBdK2ZlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWZlOnRoaXMuX2lhZGRuKGZlKX10aGlzLnN0cmlwKCl9''@;'; put 'put ''LEUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZyl7Zy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGg7QysrKWcud29yZHNbQ109dGhpcy53b3Jkc1tDXTtnLmxlbmd0aD10aGlzLmxlbmd0aCxnLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZy5y''@;'; put 'put ''ZWQ9dGhpcy5yZWR9LEUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIHRoaXMuY29weShnKSxnfSxFLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8ZzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3Jl''@;'; put 'put ''dHVybiB0aGlzfSxFLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxFLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBXPVsiIiwi''@;'; put 'put ''MCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwi''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLFU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0scT1bMCwwLDMzNTU0''@;'; put 'put ''NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1''@;'; put 'put ''MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiB0ZShnLEMsTSl7TS5uZWdhdGl2ZT1DLm5lZ2F0''@;'; put 'put ''aXZlXmcubmVnYXRpdmU7dmFyIHk9Zy5sZW5ndGgrQy5sZW5ndGh8MDtNLmxlbmd0aD15LHk9eS0xfDA7dmFyIHA9MHxnLndvcmRzWzBdLFM9MHxDLndvcmRzWzBdLFE9cCpTLGZlPVEvNjcxMDg4NjR8MDtNLndvcmRzWzBdPTY3MTA4ODYzJlE7Zm9yKHZhciBtZT0xO21lPHk7bWUrKyl7Zm9y''@;'; put 'put ''KHZhciBrZT1mZT4+PjI2LFRlPTY3MTA4ODYzJmZlLFBlPU1hdGgubWluKG1lLEMubGVuZ3RoLTEpLEZlPU1hdGgubWF4KDAsbWUtZy5sZW5ndGgrMSk7RmU8PVBlO0ZlKyspa2UrPShRPShwPTB8Zy53b3Jkc1ttZS1GZXwwXSkqKFM9MHxDLndvcmRzW0ZlXSkrVGUpLzY3MTA4ODY0fDAsVGU9''@;'; put 'put ''NjcxMDg4NjMmUTtNLndvcmRzW21lXT0wfFRlLGZlPTB8a2V9cmV0dXJuIDAhPT1mZT9NLndvcmRzW21lXT0wfGZlOk0ubGVuZ3RoLS0sTS5zdHJpcCgpfUUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGcsQyl7dmFyIE07aWYoQz0wfEN8fDEsMTY9PT0oZz1nfHwxMCl8fCJoZXgiPT09''@;'; put 'put ''Zyl7TT0iIjtmb3IodmFyIHk9MCxwPTAsUz0wO1M8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT10aGlzLndvcmRzW1NdLHJlPSgxNjc3NzIxNSYoUTw8eXxwKSkudG9TdHJpbmcoMTYpO009MCE9KHA9UT4+PjI0LXkmMTY3NzcyMTUpfHxTIT09dGhpcy5sZW5ndGgtMT9XWzYtcmUubGVuZ3RoXSty''@;'; put 'put ''ZStNOnJlK00sKHkrPTIpPj0yNiYmKHktPTI2LFMtLSl9Zm9yKDAhPT1wJiYoTT1wLnRvU3RyaW5nKDE2KStNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKE09Ii0iK00pLE19aWYoZz09PSgwfGcpJiZnPj0yJiZnPD0zNil7dmFyIGZlPVVbZ10s''@;'; put 'put ''bWU9cVtnXTtNPSIiO3ZhciBrZT10aGlzLmNsb25lKCk7Zm9yKGtlLm5lZ2F0aXZlPTA7IWtlLmlzWmVybygpOyl7dmFyIFRlPWtlLm1vZG4obWUpLnRvU3RyaW5nKGcpO009KGtlPWtlLmlkaXZuKG1lKSkuaXNaZXJvKCk/VGUrTTpXW2ZlLVRlLmxlbmd0aF0rVGUrTX1mb3IodGhpcy5pc1pl''@;'; put 'put ''cm8oKSYmKE09IjAiK00pO00ubGVuZ3RoJUMhPTA7KU09IjAiK007cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTT0iLSIrTSksTX1JKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy53b3Jk''@;'; put 'put ''c1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2crPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9nKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmSSghMSwiTnVtYmVyIGNhbiBv''@;'; put 'put ''bmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWc6Z30sRS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxFLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihnLEMpe3JldHVybiBJKHZvaWQgMCE9''@;'; put 'put ''PXopLHRoaXMudG9BcnJheUxpa2UoeixnLEMpfSxFLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZyxDLE0pe3ZhciB5PXRoaXMuYnl0ZUxlbmd0aCgpLHA9''@;'; put 'put ''TXx8TWF0aC5tYXgoMSx5KTtJKHk8PXAsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxJKHA+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBTLFEscmU9ImxlIj09PUMsZmU9bmV3IGcocCksbWU9dGhpcy5jbG9uZSgpO2lm''@;'; put 'put ''KHJlKXtmb3IoUT0wOyFtZS5pc1plcm8oKTtRKyspUz1tZS5hbmRsbigyNTUpLG1lLml1c2hybig4KSxmZVtRXT1TO2Zvcig7UTxwO1ErKylmZVtRXT0wfWVsc2V7Zm9yKFE9MDtRPHAteTtRKyspZmVbUV09MDtmb3IoUT0wOyFtZS5pc1plcm8oKTtRKyspUz1tZS5hbmRsbigyNTUpLG1lLml1''@;'; put 'put ''c2hybig4KSxmZVtwLVEtMV09U31yZXR1cm4gZmV9LEUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihnKXtyZXR1cm4gMzItTWF0aC5jbHozMihnKX06ZnVuY3Rpb24oZyl7dmFyIEM9ZyxNPTA7cmV0dXJuIEM+PTQwOTYmJihNKz0xMyxDPj4+PTEzKSxDPj02NCYm''@;'; put 'put ''KE0rPTcsQz4+Pj03KSxDPj04JiYoTSs9NCxDPj4+PTQpLEM+PTImJihNKz0yLEM+Pj49MiksTStDfSxFLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZyl7aWYoMD09PWcpcmV0dXJuIDI2O3ZhciBDPWcsTT0wO3JldHVybiEoODE5MSZDKSYmKE0rPTEzLEM+Pj49MTMpLCEoMTI3JkMp''@;'; put 'put ''JiYoTSs9NyxDPj4+PTcpLCEoMTUmQykmJihNKz00LEM+Pj49NCksISgzJkMpJiYoTSs9MixDPj4+PTIpLCEoMSZDKSYmTSsrLE19LEUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBDPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4g''@;'; put 'put ''MjYqKHRoaXMubGVuZ3RoLTEpK0N9LEUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGc9MCxDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBNPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbQ10pO2lmKGcrPU0sMjYhPT1N''@;'; put 'put ''KWJyZWFrfXJldHVybiBnfSxFLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxFLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZyku''@;'; put 'put ''aWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy50ZXN0bihnLTEpP3RoaXMubm90bihnKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZX0sRS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEUucHJvdG90eXBlLml1b3I9ZnVuY3Rp''@;'; put 'put ''b24oZyl7Zm9yKDt0aGlzLmxlbmd0aDxnLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgQz0wO0M8Zy5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109dGhpcy53b3Jkc1tDXXxnLndvcmRzW0NdO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlvcj1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGcpfSxFLnByb3RvdHlwZS5vcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihnKTpnLmNsb25lKCkuaW9yKHRoaXMpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS51b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGcpOmcuY2xvbmUoKS5pdW9yKHRoaXMpfSxFLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihnKXt2YXIgQztDPXRoaXMubGVuZ3RoPmcubGVuZ3RoP2c6dGhpcztmb3Io''@;'; put 'put ''dmFyIE09MDtNPEMubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPXRoaXMud29yZHNbTV0mZy53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9Qy5sZW5ndGgsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGcpe3JldHVybiBJKDA9PSh0aGlzLm5lZ2F0aXZlfGcubmVn''@;'; put 'put ''YXRpdmUpKSx0aGlzLml1YW5kKGcpfSxFLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGcpOmcuY2xvbmUoKS5pYW5kKHRoaXMpfSxFLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoZyk6Zy5jbG9uZSgpLml1YW5kKHRoaXMpfSxFLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihnKXt2YXIgQyxNO3RoaXMubGVuZ3RoPmcubGVuZ3RoPyhDPXRoaXMsTT1nKTooQz1nLE09dGhpcyk7Zm9yKHZhciB5PTA7eTxNLmxlbmd0''@;'; put 'put ''aDt5KyspdGhpcy53b3Jkc1t5XT1DLndvcmRzW3ldXk0ud29yZHNbeV07aWYodGhpcyE9PUMpZm9yKDt5PEMubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPUMud29yZHNbeV07cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXhvcj1mdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihnKX0sRS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihnKTpnLmNsb25lKCkuaXhvcih0aGlzKX0sRS5wcm90''@;'; put 'put ''b3R5cGUudXhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGcpOmcuY2xvbmUoKS5pdXhvcih0aGlzKX0sRS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPTB8TWF0''@;'; put 'put ''aC5jZWlsKGcvMjYpLE09ZyUyNjt0aGlzLl9leHBhbmQoQyksTT4wJiZDLS07Zm9yKHZhciB5PTA7eTxDO3krKyl0aGlzLndvcmRzW3ldPTY3MTA4ODYzJn50aGlzLndvcmRzW3ldO3JldHVybiBNPjAmJih0aGlzLndvcmRzW3ldPX50aGlzLndvcmRzW3ldJjY3MTA4ODYzPj4yNi1NKSx0aGlz''@;'; put 'put ''LnN0cmlwKCl9LEUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihnKX0sRS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihnLEMpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgTT1nLzI2fDAseT1nJTI2O3JldHVybiB0aGlzLl9leHBh''@;'; put 'put ''bmQoTSsxKSx0aGlzLndvcmRzW01dPUM/dGhpcy53b3Jkc1tNXXwxPDx5OnRoaXMud29yZHNbTV0mfigxPDx5KSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyl7dmFyIEMsTSx5O2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZSlyZXR1cm4gdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0wLEM9dGhpcy5pc3ViKGcpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmUpcmV0dXJuIGcubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSxnLm5lZ2F0aXZlPTEsQy5fbm9ybVNpZ24oKTt0aGlz''@;'; put 'put ''Lmxlbmd0aD5nLmxlbmd0aD8oTT10aGlzLHk9Zyk6KE09Zyx5PXRoaXMpO2Zvcih2YXIgcD0wLFM9MDtTPHkubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pKygwfHkud29yZHNbU10pK3ApLHA9Qz4+PjI2O2Zvcig7MCE9PXAmJlM8TS5sZW5ndGg7''@;'; put 'put ''UysrKXRoaXMud29yZHNbU109NjcxMDg4NjMmKEM9KDB8TS53b3Jkc1tTXSkrcCkscD1DPj4+MjY7aWYodGhpcy5sZW5ndGg9TS5sZW5ndGgsMCE9PXApdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09cCx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoTSE9PXRoaXMpZm9yKDtTPE0ubGVuZ3RoO1MrKyl0''@;'; put 'put ''aGlzLndvcmRzW1NdPU0ud29yZHNbU107cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihnKXt2YXIgQztyZXR1cm4gMCE9PWcubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhnLm5lZ2F0aXZlPTAsQz10aGlzLnN1YihnKSxnLm5lZ2F0aXZlXj0xLEMpOjA9PT1nLm5l''@;'; put 'put ''Z2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLEM9Zy5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLEMpOnRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGcpOmcuY2xvbmUoKS5pYWRkKHRoaXMpfSxFLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9u''@;'; put 'put ''KGcpe2lmKDAhPT1nLm5lZ2F0aXZlKXtnLm5lZ2F0aXZlPTA7dmFyIEM9dGhpcy5pYWRkKGcpO3JldHVybiBnLm5lZ2F0aXZlPTEsQy5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChnKSx0aGlzLm5lZ2F0aXZlPTEsdGhp''@;'; put 'put ''cy5fbm9ybVNpZ24oKTt2YXIgTSx5LHA9dGhpcy5jbXAoZyk7aWYoMD09PXApcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO3A+MD8oTT10aGlzLHk9Zyk6KE09Zyx5PXRoaXMpO2Zvcih2YXIgUz0wLFE9MDtRPHkubGVuZ3RoO1ErKylT''@;'; put 'put ''PShDPSgwfE0ud29yZHNbUV0pLSgwfHkud29yZHNbUV0pK1MpPj4yNix0aGlzLndvcmRzW1FdPTY3MTA4ODYzJkM7Zm9yKDswIT09UyYmUTxNLmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZDO2lmKDA9PT1TJiZRPE0ubGVuZ3Ro''@;'; put 'put ''JiZNIT09dGhpcylmb3IoO1E8TS5sZW5ndGg7USsrKXRoaXMud29yZHNbUV09TS53b3Jkc1tRXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsUSksTSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9u''@;'; put 'put ''KGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihnKX07dmFyIG5lPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeSxwLFMsUT1nLndvcmRzLHJlPUMud29yZHMsZmU9TS53b3JkcyxtZT0wLGtlPTB8UVswXSxUZT04MTkxJmtlLFBlPWtlPj4+MTMsRmU9MHxRWzFdLE5lPTgxOTEmRmUsTGU9RmU+Pj4x''@;'; put 'put ''MyxCZT0wfFFbMl0sSGU9ODE5MSZCZSxRZT1CZT4+PjEzLG10PTB8UVszXSxLZT04MTkxJm10LHdlPW10Pj4+MTMsSWU9MHxRWzRdLE9lPTgxOTEmSWUsZXQ9SWU+Pj4xMyxudD0wfFFbNV0scWU9ODE5MSZudCxodD1udD4+PjEzLEVlPTB8UVs2XSxEZT04MTkxJkVlLCRlPUVlPj4+MTMsYXQ9''@;'; put 'put ''MHxRWzddLGN0PTgxOTEmYXQsT3Q9YXQ+Pj4xMyxQdD0wfFFbOF0sQXQ9ODE5MSZQdCxKdD1QdD4+PjEzLG1uPTB8UVs5XSxOdD04MTkxJm1uLGJuPW1uPj4+MTMsR249MHxyZVswXSxvbj04MTkxJkduLCRuPUduPj4+MTMsTm49MHxyZVsxXSxwdD04MTkxJk5uLHBuPU5uPj4+MTMsaG49MHxy''@;'; put 'put ''ZVsyXSxDdD04MTkxJmhuLGVuPWhuPj4+MTMsX3Q9MHxyZVszXSxWdD04MTkxJl90LF9uPV90Pj4+MTMsb3Q9MHxyZVs0XSxJdD04MTkxJm90LG5uPW90Pj4+MTMsRHQ9MHxyZVs1XSx2dD04MTkxJkR0LEd0PUR0Pj4+MTMsTG49MHxyZVs2XSx6dD04MTkxJkxuLE1uPUxuPj4+MTMsVG49MHxy''@;'; put 'put ''ZVs3XSxzbj04MTkxJlRuLEJuPVRuPj4+MTMsRm49MHxyZVs4XSxxdD04MTkxJkZuLEhuPUZuPj4+MTMsaWk9MHxyZVs5XSxjbj04MTkxJmlpLGpuPWlpPj4+MTM7TS5uZWdhdGl2ZT1nLm5lZ2F0aXZlXkMubmVnYXRpdmUsTS5sZW5ndGg9MTk7dmFyIFhyPShtZSsoeT1NYXRoLmltdWwoVGUs''@;'; put 'put ''b24pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKFRlLCRuKSkrTWF0aC5pbXVsKFBlLG9uKXwwKSk8PDEzKXwwO21lPSgoUz1NYXRoLmltdWwoUGUsJG4pKSsocD4+PjEzKXwwKSsoWHI+Pj4yNil8MCxYciY9NjcxMDg4NjMseT1NYXRoLmltdWwoTmUsb24pLHA9KHA9TWF0aC5pbXVsKE5l''@;'; put 'put ''LCRuKSkrTWF0aC5pbXVsKExlLG9uKXwwLFM9TWF0aC5pbXVsKExlLCRuKTt2YXIgdmk9KG1lKyh5PXkrTWF0aC5pbXVsKFRlLHB0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoVGUscG4pfDApK01hdGguaW11bChQZSxwdCl8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwo''@;'; put 'put ''UGUscG4pfDApKyhwPj4+MTMpfDApKyh2aT4+PjI2KXwwLHZpJj02NzEwODg2Myx5PU1hdGguaW11bChIZSxvbikscD0ocD1NYXRoLmltdWwoSGUsJG4pKStNYXRoLmltdWwoUWUsb24pfDAsUz1NYXRoLmltdWwoUWUsJG4pLHk9eStNYXRoLmltdWwoTmUscHQpfDAscD0ocD1wK01hdGguaW11''@;'; put 'put ''bChOZSxwbil8MCkrTWF0aC5pbXVsKExlLHB0KXwwLFM9UytNYXRoLmltdWwoTGUscG4pfDA7dmFyIEVyPShtZSsoeT15K01hdGguaW11bChUZSxDdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLGVuKXwwKStNYXRoLmltdWwoUGUsQ3QpfDApKTw8MTMpfDA7bWU9KChTPVMr''@;'; put 'put ''TWF0aC5pbXVsKFBlLGVuKXwwKSsocD4+PjEzKXwwKSsoRXI+Pj4yNil8MCxFciY9NjcxMDg4NjMseT1NYXRoLmltdWwoS2Usb24pLHA9KHA9TWF0aC5pbXVsKEtlLCRuKSkrTWF0aC5pbXVsKHdlLG9uKXwwLFM9TWF0aC5pbXVsKHdlLCRuKSx5PXkrTWF0aC5pbXVsKEhlLHB0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoSGUscG4pfDApK01hdGguaW11bChRZSxwdCl8MCxTPVMrTWF0aC5pbXVsKFFlLHBuKXwwLHk9eStNYXRoLmltdWwoTmUsQ3QpfDAscD0ocD1wK01hdGguaW11bChOZSxlbil8MCkrTWF0aC5pbXVsKExlLEN0KXwwLFM9UytNYXRoLmltdWwoTGUsZW4pfDA7dmFyIFlpPSht''@;'; put 'put ''ZSsoeT15K01hdGguaW11bChUZSxWdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLF9uKXwwKStNYXRoLmltdWwoUGUsVnQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLF9uKXwwKSsocD4+PjEzKXwwKSsoWWk+Pj4yNil8MCxZaSY9NjcxMDg4NjMseT1NYXRo''@;'; put 'put ''LmltdWwoT2Usb24pLHA9KHA9TWF0aC5pbXVsKE9lLCRuKSkrTWF0aC5pbXVsKGV0LG9uKXwwLFM9TWF0aC5pbXVsKGV0LCRuKSx5PXkrTWF0aC5pbXVsKEtlLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UscG4pfDApK01hdGguaW11bCh3ZSxwdCl8MCxTPVMrTWF0aC5pbXVsKHdlLHBuKXww''@;'; put 'put ''LHk9eStNYXRoLmltdWwoSGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChIZSxlbil8MCkrTWF0aC5pbXVsKFFlLEN0KXwwLFM9UytNYXRoLmltdWwoUWUsZW4pfDAseT15K01hdGguaW11bChOZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKE5lLF9uKXwwKStNYXRoLmltdWwoTGUsVnQpfDAsUz1T''@;'; put 'put ''K01hdGguaW11bChMZSxfbil8MDt2YXIgSnI9KG1lKyh5PXkrTWF0aC5pbXVsKFRlLEl0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoVGUsbm4pfDApK01hdGguaW11bChQZSxJdCl8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoUGUsbm4pfDApKyhwPj4+MTMpfDApKyhK''@;'; put 'put ''cj4+PjI2KXwwLEpyJj02NzEwODg2Myx5PU1hdGguaW11bChxZSxvbikscD0ocD1NYXRoLmltdWwocWUsJG4pKStNYXRoLmltdWwoaHQsb24pfDAsUz1NYXRoLmltdWwoaHQsJG4pLHk9eStNYXRoLmltdWwoT2UscHQpfDAscD0ocD1wK01hdGguaW11bChPZSxwbil8MCkrTWF0aC5pbXVsKGV0''@;'; put 'put ''LHB0KXwwLFM9UytNYXRoLmltdWwoZXQscG4pfDAseT15K01hdGguaW11bChLZSxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLGVuKXwwKStNYXRoLmltdWwod2UsQ3QpfDAsUz1TK01hdGguaW11bCh3ZSxlbil8MCx5PXkrTWF0aC5pbXVsKEhlLFZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUs''@;'; put 'put ''X24pfDApK01hdGguaW11bChRZSxWdCl8MCxTPVMrTWF0aC5pbXVsKFFlLF9uKXwwLHk9eStNYXRoLmltdWwoTmUsSXQpfDAscD0ocD1wK01hdGguaW11bChOZSxubil8MCkrTWF0aC5pbXVsKExlLEl0KXwwLFM9UytNYXRoLmltdWwoTGUsbm4pfDA7dmFyIGFvPShtZSsoeT15K01hdGguaW11''@;'; put 'put ''bChUZSx2dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLEd0KXwwKStNYXRoLmltdWwoUGUsdnQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEd0KXwwKSsocD4+PjEzKXwwKSsoYW8+Pj4yNil8MCxhbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoRGUsb24pLHA9''@;'; put 'put ''KHA9TWF0aC5pbXVsKERlLCRuKSkrTWF0aC5pbXVsKCRlLG9uKXwwLFM9TWF0aC5pbXVsKCRlLCRuKSx5PXkrTWF0aC5pbXVsKHFlLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUscG4pfDApK01hdGguaW11bChodCxwdCl8MCxTPVMrTWF0aC5pbXVsKGh0LHBuKXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''T2UsQ3QpfDAscD0ocD1wK01hdGguaW11bChPZSxlbil8MCkrTWF0aC5pbXVsKGV0LEN0KXwwLFM9UytNYXRoLmltdWwoZXQsZW4pfDAseT15K01hdGguaW11bChLZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLF9uKXwwKStNYXRoLmltdWwod2UsVnQpfDAsUz1TK01hdGguaW11bCh3ZSxf''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKEhlLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsbm4pfDApK01hdGguaW11bChRZSxJdCl8MCxTPVMrTWF0aC5pbXVsKFFlLG5uKXwwLHk9eStNYXRoLmltdWwoTmUsdnQpfDAscD0ocD1wK01hdGguaW11bChOZSxHdCl8MCkrTWF0aC5pbXVsKExlLHZ0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoTGUsR3QpfDA7dmFyIEJyPShtZSsoeT15K01hdGguaW11bChUZSx6dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLE1uKXwwKStNYXRoLmltdWwoUGUsenQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLE1uKXwwKSsocD4+PjEzKXww''@;'; put 'put ''KSsoQnI+Pj4yNil8MCxCciY9NjcxMDg4NjMseT1NYXRoLmltdWwoY3Qsb24pLHA9KHA9TWF0aC5pbXVsKGN0LCRuKSkrTWF0aC5pbXVsKE90LG9uKXwwLFM9TWF0aC5pbXVsKE90LCRuKSx5PXkrTWF0aC5pbXVsKERlLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUscG4pfDApK01hdGguaW11''@;'; put 'put ''bCgkZSxwdCl8MCxTPVMrTWF0aC5pbXVsKCRlLHBuKXwwLHk9eStNYXRoLmltdWwocWUsQ3QpfDAscD0ocD1wK01hdGguaW11bChxZSxlbil8MCkrTWF0aC5pbXVsKGh0LEN0KXwwLFM9UytNYXRoLmltdWwoaHQsZW4pfDAseT15K01hdGguaW11bChPZSxWdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KE9lLF9uKXwwKStNYXRoLmltdWwoZXQsVnQpfDAsUz1TK01hdGguaW11bChldCxfbil8MCx5PXkrTWF0aC5pbXVsKEtlLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2Usbm4pfDApK01hdGguaW11bCh3ZSxJdCl8MCxTPVMrTWF0aC5pbXVsKHdlLG5uKXwwLHk9eStNYXRoLmltdWwoSGUsdnQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChIZSxHdCl8MCkrTWF0aC5pbXVsKFFlLHZ0KXwwLFM9UytNYXRoLmltdWwoUWUsR3QpfDAseT15K01hdGguaW11bChOZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKE5lLE1uKXwwKStNYXRoLmltdWwoTGUsenQpfDAsUz1TK01hdGguaW11bChMZSxNbil8MDt2''@;'; put 'put ''YXIgSmk9KG1lKyh5PXkrTWF0aC5pbXVsKFRlLHNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoVGUsQm4pfDApK01hdGguaW11bChQZSxzbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoUGUsQm4pfDApKyhwPj4+MTMpfDApKyhKaT4+PjI2KXwwLEppJj02NzEwODg2''@;'; put 'put ''Myx5PU1hdGguaW11bChBdCxvbikscD0ocD1NYXRoLmltdWwoQXQsJG4pKStNYXRoLmltdWwoSnQsb24pfDAsUz1NYXRoLmltdWwoSnQsJG4pLHk9eStNYXRoLmltdWwoY3QscHQpfDAscD0ocD1wK01hdGguaW11bChjdCxwbil8MCkrTWF0aC5pbXVsKE90LHB0KXwwLFM9UytNYXRoLmltdWwo''@;'; put 'put ''T3QscG4pfDAseT15K01hdGguaW11bChEZSxDdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGVuKXwwKStNYXRoLmltdWwoJGUsQ3QpfDAsUz1TK01hdGguaW11bCgkZSxlbil8MCx5PXkrTWF0aC5pbXVsKHFlLFZ0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsX24pfDApK01hdGguaW11bChodCxW''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKGh0LF9uKXwwLHk9eStNYXRoLmltdWwoT2UsSXQpfDAscD0ocD1wK01hdGguaW11bChPZSxubil8MCkrTWF0aC5pbXVsKGV0LEl0KXwwLFM9UytNYXRoLmltdWwoZXQsbm4pfDAseT15K01hdGguaW11bChLZSx2dCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLEd0''@;'; put 'put ''KXwwKStNYXRoLmltdWwod2UsdnQpfDAsUz1TK01hdGguaW11bCh3ZSxHdCl8MCx5PXkrTWF0aC5pbXVsKEhlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsTW4pfDApK01hdGguaW11bChRZSx6dCl8MCxTPVMrTWF0aC5pbXVsKFFlLE1uKXwwLHk9eStNYXRoLmltdWwoTmUsc24pfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChOZSxCbil8MCkrTWF0aC5pbXVsKExlLHNuKXwwLFM9UytNYXRoLmltdWwoTGUsQm4pfDA7dmFyIHRvPShtZSsoeT15K01hdGguaW11bChUZSxxdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLEhuKXwwKStNYXRoLmltdWwoUGUscXQpfDApKTw8MTMp''@;'; put 'put ''fDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEhuKXwwKSsocD4+PjEzKXwwKSsodG8+Pj4yNil8MCx0byY9NjcxMDg4NjMseT1NYXRoLmltdWwoTnQsb24pLHA9KHA9TWF0aC5pbXVsKE50LCRuKSkrTWF0aC5pbXVsKGJuLG9uKXwwLFM9TWF0aC5pbXVsKGJuLCRuKSx5PXkrTWF0aC5pbXVsKEF0''@;'; put 'put ''LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoQXQscG4pfDApK01hdGguaW11bChKdCxwdCl8MCxTPVMrTWF0aC5pbXVsKEp0LHBuKXwwLHk9eStNYXRoLmltdWwoY3QsQ3QpfDAscD0ocD1wK01hdGguaW11bChjdCxlbil8MCkrTWF0aC5pbXVsKE90LEN0KXwwLFM9UytNYXRoLmltdWwoT3QsZW4p''@;'; put 'put ''fDAseT15K01hdGguaW11bChEZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLF9uKXwwKStNYXRoLmltdWwoJGUsVnQpfDAsUz1TK01hdGguaW11bCgkZSxfbil8MCx5PXkrTWF0aC5pbXVsKHFlLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsbm4pfDApK01hdGguaW11bChodCxJdCl8MCxT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGh0LG5uKXwwLHk9eStNYXRoLmltdWwoT2UsdnQpfDAscD0ocD1wK01hdGguaW11bChPZSxHdCl8MCkrTWF0aC5pbXVsKGV0LHZ0KXwwLFM9UytNYXRoLmltdWwoZXQsR3QpfDAseT15K01hdGguaW11bChLZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLE1uKXwwKStN''@;'; put 'put ''YXRoLmltdWwod2UsenQpfDAsUz1TK01hdGguaW11bCh3ZSxNbil8MCx5PXkrTWF0aC5pbXVsKEhlLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsQm4pfDApK01hdGguaW11bChRZSxzbil8MCxTPVMrTWF0aC5pbXVsKFFlLEJuKXwwLHk9eStNYXRoLmltdWwoTmUscXQpfDAscD0ocD1wK01h''@;'; put 'put ''dGguaW11bChOZSxIbil8MCkrTWF0aC5pbXVsKExlLHF0KXwwLFM9UytNYXRoLmltdWwoTGUsSG4pfDA7dmFyIGNvPShtZSsoeT15K01hdGguaW11bChUZSxjbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLGpuKXwwKStNYXRoLmltdWwoUGUsY24pfDApKTw8MTMpfDA7bWU9''@;'; put 'put ''KChTPVMrTWF0aC5pbXVsKFBlLGpuKXwwKSsocD4+PjEzKXwwKSsoY28+Pj4yNil8MCxjbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoTnQscHQpLHA9KHA9TWF0aC5pbXVsKE50LHBuKSkrTWF0aC5pbXVsKGJuLHB0KXwwLFM9TWF0aC5pbXVsKGJuLHBuKSx5PXkrTWF0aC5pbXVsKEF0LEN0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoQXQsZW4pfDApK01hdGguaW11bChKdCxDdCl8MCxTPVMrTWF0aC5pbXVsKEp0LGVuKXwwLHk9eStNYXRoLmltdWwoY3QsVnQpfDAscD0ocD1wK01hdGguaW11bChjdCxfbil8MCkrTWF0aC5pbXVsKE90LFZ0KXwwLFM9UytNYXRoLmltdWwoT3QsX24pfDAseT15''@;'; put 'put ''K01hdGguaW11bChEZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLG5uKXwwKStNYXRoLmltdWwoJGUsSXQpfDAsUz1TK01hdGguaW11bCgkZSxubil8MCx5PXkrTWF0aC5pbXVsKHFlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsR3QpfDApK01hdGguaW11bChodCx2dCl8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGh0LEd0KXwwLHk9eStNYXRoLmltdWwoT2UsenQpfDAscD0ocD1wK01hdGguaW11bChPZSxNbil8MCkrTWF0aC5pbXVsKGV0LHp0KXwwLFM9UytNYXRoLmltdWwoZXQsTW4pfDAseT15K01hdGguaW11bChLZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKEtlLEJuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwod2Usc24pfDAsUz1TK01hdGguaW11bCh3ZSxCbil8MCx5PXkrTWF0aC5pbXVsKEhlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsSG4pfDApK01hdGguaW11bChRZSxxdCl8MCxTPVMrTWF0aC5pbXVsKFFlLEhuKXwwO3ZhciBsbz0obWUrKHk9eStNYXRoLmltdWwoTmUsY24pfDApfDAp''@;'; put 'put ''KygoODE5MSYocD0ocD1wK01hdGguaW11bChOZSxqbil8MCkrTWF0aC5pbXVsKExlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChMZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEN0KSxwPShwPU1hdGguaW11bChO''@;'; put 'put ''dCxlbikpK01hdGguaW11bChibixDdCl8MCxTPU1hdGguaW11bChibixlbikseT15K01hdGguaW11bChBdCxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LF9uKXwwKStNYXRoLmltdWwoSnQsVnQpfDAsUz1TK01hdGguaW11bChKdCxfbil8MCx5PXkrTWF0aC5pbXVsKGN0LEl0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoY3Qsbm4pfDApK01hdGguaW11bChPdCxJdCl8MCxTPVMrTWF0aC5pbXVsKE90LG5uKXwwLHk9eStNYXRoLmltdWwoRGUsdnQpfDAscD0ocD1wK01hdGguaW11bChEZSxHdCl8MCkrTWF0aC5pbXVsKCRlLHZ0KXwwLFM9UytNYXRoLmltdWwoJGUsR3QpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChxZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLE1uKXwwKStNYXRoLmltdWwoaHQsenQpfDAsUz1TK01hdGguaW11bChodCxNbil8MCx5PXkrTWF0aC5pbXVsKE9lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsQm4pfDApK01hdGguaW11bChldCxzbil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KGV0LEJuKXwwLHk9eStNYXRoLmltdWwoS2UscXQpfDAscD0ocD1wK01hdGguaW11bChLZSxIbil8MCkrTWF0aC5pbXVsKHdlLHF0KXwwLFM9UytNYXRoLmltdWwod2UsSG4pfDA7dmFyIHNvPShtZSsoeT15K01hdGguaW11bChIZSxjbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEhlLGpuKXwwKStNYXRoLmltdWwoUWUsY24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFFlLGpuKXwwKSsocD4+PjEzKXwwKSsoc28+Pj4yNil8MCxzbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoTnQsVnQpLHA9KHA9TWF0aC5pbXVsKE50LF9uKSkrTWF0aC5pbXVsKGJuLFZ0KXww''@;'; put 'put ''LFM9TWF0aC5pbXVsKGJuLF9uKSx5PXkrTWF0aC5pbXVsKEF0LEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoQXQsbm4pfDApK01hdGguaW11bChKdCxJdCl8MCxTPVMrTWF0aC5pbXVsKEp0LG5uKXwwLHk9eStNYXRoLmltdWwoY3QsdnQpfDAscD0ocD1wK01hdGguaW11bChjdCxHdCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKE90LHZ0KXwwLFM9UytNYXRoLmltdWwoT3QsR3QpfDAseT15K01hdGguaW11bChEZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLE1uKXwwKStNYXRoLmltdWwoJGUsenQpfDAsUz1TK01hdGguaW11bCgkZSxNbil8MCx5PXkrTWF0aC5pbXVsKHFlLHNuKXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwocWUsQm4pfDApK01hdGguaW11bChodCxzbil8MCxTPVMrTWF0aC5pbXVsKGh0LEJuKXwwLHk9eStNYXRoLmltdWwoT2UscXQpfDAscD0ocD1wK01hdGguaW11bChPZSxIbil8MCkrTWF0aC5pbXVsKGV0LHF0KXwwLFM9UytNYXRoLmltdWwoZXQsSG4pfDA7dmFyIFhpPShtZSsoeT15''@;'; put 'put ''K01hdGguaW11bChLZSxjbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEtlLGpuKXwwKStNYXRoLmltdWwod2UsY24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKHdlLGpuKXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMseT1NYXRoLmltdWwo''@;'; put 'put ''TnQsSXQpLHA9KHA9TWF0aC5pbXVsKE50LG5uKSkrTWF0aC5pbXVsKGJuLEl0KXwwLFM9TWF0aC5pbXVsKGJuLG5uKSx5PXkrTWF0aC5pbXVsKEF0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoQXQsR3QpfDApK01hdGguaW11bChKdCx2dCl8MCxTPVMrTWF0aC5pbXVsKEp0LEd0KXwwLHk9eStN''@;'; put 'put ''YXRoLmltdWwoY3QsenQpfDAscD0ocD1wK01hdGguaW11bChjdCxNbil8MCkrTWF0aC5pbXVsKE90LHp0KXwwLFM9UytNYXRoLmltdWwoT3QsTW4pfDAseT15K01hdGguaW11bChEZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKERlLEJuKXwwKStNYXRoLmltdWwoJGUsc24pfDAsUz1TK01hdGgu''@;'; put 'put ''aW11bCgkZSxCbil8MCx5PXkrTWF0aC5pbXVsKHFlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsSG4pfDApK01hdGguaW11bChodCxxdCl8MCxTPVMrTWF0aC5pbXVsKGh0LEhuKXwwO3ZhciBwbz0obWUrKHk9eStNYXRoLmltdWwoT2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChPZSxqbil8MCkrTWF0aC5pbXVsKGV0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChldCxqbil8MCkrKHA+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHZ0KSxwPShwPU1hdGguaW11bChOdCxHdCkpK01hdGguaW11bChibix2''@;'; put 'put ''dCl8MCxTPU1hdGguaW11bChibixHdCkseT15K01hdGguaW11bChBdCx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LE1uKXwwKStNYXRoLmltdWwoSnQsenQpfDAsUz1TK01hdGguaW11bChKdCxNbil8MCx5PXkrTWF0aC5pbXVsKGN0LHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsQm4pfDAp''@;'; put 'put ''K01hdGguaW11bChPdCxzbil8MCxTPVMrTWF0aC5pbXVsKE90LEJuKXwwLHk9eStNYXRoLmltdWwoRGUscXQpfDAscD0ocD1wK01hdGguaW11bChEZSxIbil8MCkrTWF0aC5pbXVsKCRlLHF0KXwwLFM9UytNYXRoLmltdWwoJGUsSG4pfDA7dmFyIF9yPShtZSsoeT15K01hdGguaW11bChxZSxj''@;'; put 'put ''bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHFlLGpuKXwwKStNYXRoLmltdWwoaHQsY24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKGh0LGpuKXwwKSsocD4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMseT1NYXRoLmltdWwoTnQsenQpLHA9KHA9TWF0''@;'; put 'put ''aC5pbXVsKE50LE1uKSkrTWF0aC5pbXVsKGJuLHp0KXwwLFM9TWF0aC5pbXVsKGJuLE1uKSx5PXkrTWF0aC5pbXVsKEF0LHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoQXQsQm4pfDApK01hdGguaW11bChKdCxzbil8MCxTPVMrTWF0aC5pbXVsKEp0LEJuKXwwLHk9eStNYXRoLmltdWwoY3QscXQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChjdCxIbil8MCkrTWF0aC5pbXVsKE90LHF0KXwwLFM9UytNYXRoLmltdWwoT3QsSG4pfDA7dmFyIEZpPShtZSsoeT15K01hdGguaW11bChEZSxjbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKERlLGpuKXwwKStNYXRoLmltdWwoJGUsY24pfDAp''@;'; put 'put ''KTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKCRlLGpuKXwwKSsocD4+PjEzKXwwKSsoRmk+Pj4yNil8MCxGaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoTnQsc24pLHA9KHA9TWF0aC5pbXVsKE50LEJuKSkrTWF0aC5pbXVsKGJuLHNuKXwwLFM9TWF0aC5pbXVsKGJuLEJuKSx5PXkrTWF0aC5p''@;'; put 'put ''bXVsKEF0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoQXQsSG4pfDApK01hdGguaW11bChKdCxxdCl8MCxTPVMrTWF0aC5pbXVsKEp0LEhuKXwwO3ZhciBIbz0obWUrKHk9eStNYXRoLmltdWwoY3QsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChjdCxqbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KE90LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChPdCxqbil8MCkrKHA+Pj4xMyl8MCkrKEhvPj4+MjYpfDAsSG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHF0KSxwPShwPU1hdGguaW11bChOdCxIbikpK01hdGguaW11bChibixxdCl8MCxTPU1hdGguaW11bChibixIbik7''@;'; put 'put ''dmFyIGdhPShtZSsoeT15K01hdGguaW11bChBdCxjbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEF0LGpuKXwwKStNYXRoLmltdWwoSnQsY24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKEp0LGpuKXwwKSsocD4+PjEzKXwwKSsoZ2E+Pj4yNil8MCxnYSY9NjcxMDg4''@;'; put 'put ''NjM7dmFyIGxhPShtZSsoeT1NYXRoLmltdWwoTnQsY24pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKE50LGpuKSkrTWF0aC5pbXVsKGJuLGNuKXwwKSk8PDEzKXwwO3JldHVybiBtZT0oKFM9TWF0aC5pbXVsKGJuLGpuKSkrKHA+Pj4xMyl8MCkrKGxhPj4+MjYpfDAsbGEmPTY3MTA4ODYz''@;'; put 'put ''LGZlWzBdPVhyLGZlWzFdPXZpLGZlWzJdPUVyLGZlWzNdPVlpLGZlWzRdPUpyLGZlWzVdPWFvLGZlWzZdPUJyLGZlWzddPUppLGZlWzhdPXRvLGZlWzldPWNvLGZlWzEwXT1sbyxmZVsxMV09c28sZmVbMTJdPVhpLGZlWzEzXT1wbyxmZVsxNF09X3IsZmVbMTVdPUZpLGZlWzE2XT1IbyxmZVsx''@;'; put 'put ''N109Z2EsZmVbMThdPWxhLDAhPT1tZSYmKGZlWzE5XT1tZSxNLmxlbmd0aCsrKSxNfTtmdW5jdGlvbiBpZShnLEMsTSl7cmV0dXJuKG5ldyBsZSkubXVscChnLEMsTSl9ZnVuY3Rpb24gbGUoZyxDKXt0aGlzLng9Zyx0aGlzLnk9Q31NYXRoLmltdWx8fChuZT10ZSksRS5wcm90b3R5cGUubXVs''@;'; put 'put ''VG89ZnVuY3Rpb24oZyxDKXt2YXIgeT10aGlzLmxlbmd0aCtnLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1nLmxlbmd0aD9uZSh0aGlzLGcsQyk6eTw2Mz90ZSh0aGlzLGcsQyk6eTwxMDI0P2Z1bmN0aW9uKHAsUyxRKXtRLm5lZ2F0aXZlPVMubmVnYXRpdmVecC5uZWdh''@;'; put 'put ''dGl2ZSxRLmxlbmd0aD1wLmxlbmd0aCtTLmxlbmd0aDtmb3IodmFyIHJlPTAsZmU9MCxtZT0wO21lPFEubGVuZ3RoLTE7bWUrKyl7dmFyIGtlPWZlO2ZlPTA7Zm9yKHZhciBUZT02NzEwODg2MyZyZSxQZT1NYXRoLm1pbihtZSxTLmxlbmd0aC0xKSxGZT1NYXRoLm1heCgwLG1lLXAubGVuZ3Ro''@;'; put 'put ''KzEpO0ZlPD1QZTtGZSsrKXt2YXIgTGU9KDB8cC53b3Jkc1ttZS1GZV0pKigwfFMud29yZHNbRmVdKSxCZT02NzEwODg2MyZMZTtUZT02NzEwODg2MyYoQmU9QmUrVGV8MCksZmUrPShrZT0oa2U9a2UrKExlLzY3MTA4ODY0fDApfDApKyhCZT4+PjI2KXwwKT4+PjI2LGtlJj02NzEwODg2M31R''@;'; put 'put ''LndvcmRzW21lXT1UZSxyZT1rZSxrZT1mZX1yZXR1cm4gMCE9PXJlP1Eud29yZHNbbWVdPXJlOlEubGVuZ3RoLS0sUS5zdHJpcCgpfSh0aGlzLGcsQyk6aWUodGhpcyxnLEMpfSxsZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLE09RS5wcm90''@;'; put 'put ''b3R5cGUuX2NvdW50Qml0cyhnKS0xLHk9MDt5PGc7eSsrKUNbeV09dGhpcy5yZXZCaW4oeSxNLGcpO3JldHVybiBDfSxsZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGcsQyxNKXtpZigwPT09Z3x8Zz09PU0tMSlyZXR1cm4gZztmb3IodmFyIHk9MCxwPTA7cDxDO3ArKyl5fD0oMSZnKTw8''@;'; put 'put ''Qy1wLTEsZz4+PTE7cmV0dXJuIHl9LGxlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXtmb3IodmFyIFE9MDtRPFM7USsrKXlbUV09Q1tnW1FdXSxwW1FdPU1bZ1tRXV19LGxlLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZyxDLE0seSxwLFMpe3RoaXMucGVy''@;'; put 'put ''bXV0ZShTLGcsQyxNLHkscCk7Zm9yKHZhciBRPTE7UTxwO1E8PD0xKWZvcih2YXIgcmU9UTw8MSxmZT1NYXRoLmNvcygyKk1hdGguUEkvcmUpLG1lPU1hdGguc2luKDIqTWF0aC5QSS9yZSksa2U9MDtrZTxwO2tlKz1yZSlmb3IodmFyIFRlPWZlLFBlPW1lLEZlPTA7RmU8UTtGZSsrKXt2YXIg''@;'; put 'put ''TmU9TVtrZStGZV0sTGU9eVtrZStGZV0sQmU9TVtrZStGZStRXSxIZT15W2tlK0ZlK1FdLFFlPVRlKkJlLVBlKkhlO0hlPVRlKkhlK1BlKkJlLE1ba2UrRmVdPU5lKyhCZT1RZSkseVtrZStGZV09TGUrSGUsTVtrZStGZStRXT1OZS1CZSx5W2tlK0ZlK1FdPUxlLUhlLEZlIT09cmUmJihRZT1m''@;'; put 'put ''ZSpUZS1tZSpQZSxQZT1mZSpQZSttZSpUZSxUZT1RZSl9fSxsZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZyxDKXt2YXIgTT0xfE1hdGgubWF4KEMsZykseT0xJk0scD0wO2ZvcihNPU0vMnwwO007TT4+Pj0xKXArKztyZXR1cm4gMTw8cCsxK3l9LGxlLnByb3RvdHlwZS5jb25q''@;'; put 'put ''dWdhdGU9ZnVuY3Rpb24oZyxDLE0pe2lmKCEoTTw9MSkpZm9yKHZhciB5PTA7eTxNLzI7eSsrKXt2YXIgcD1nW3ldO2dbeV09Z1tNLXktMV0sZ1tNLXktMV09cCxwPUNbeV0sQ1t5XT0tQ1tNLXktMV0sQ1tNLXktMV09LXB9fSxsZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGcs''@;'; put 'put ''Qyl7Zm9yKHZhciBNPTAseT0wO3k8Qy8yO3krKyl7dmFyIHA9ODE5MipNYXRoLnJvdW5kKGdbMip5KzFdL0MpK01hdGgucm91bmQoZ1syKnldL0MpK007Z1t5XT02NzEwODg2MyZwLE09cDw2NzEwODg2ND8wOnAvNjcxMDg4NjR8MH1yZXR1cm4gZ30sbGUucHJvdG90eXBlLmNvbnZlcnQxM2I9''@;'; put 'put ''ZnVuY3Rpb24oZyxDLE0seSl7Zm9yKHZhciBwPTAsUz0wO1M8QztTKyspTVsyKlNdPTgxOTEmKHArPTB8Z1tTXSksTVsyKlMrMV09ODE5MSYocD4+Pj0xMykscD4+Pj0xMztmb3IoUz0yKkM7Uzx5OysrUylNW1NdPTA7SSgwPT09cCksSSgwPT0oLTgxOTImcCkpfSxsZS5wcm90b3R5cGUuc3R1''@;'; put 'put ''Yj1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLE09MDtNPGc7TSsrKUNbTV09MDtyZXR1cm4gQ30sbGUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oZyxDLE0pe3ZhciB5PTIqdGhpcy5ndWVzc0xlbjEzYihnLmxlbmd0aCxDLmxlbmd0aCkscD10aGlzLm1ha2VSQlQoeSksUz10''@;'; put 'put ''aGlzLnN0dWIoeSksUT1uZXcgQXJyYXkoeSkscmU9bmV3IEFycmF5KHkpLGZlPW5ldyBBcnJheSh5KSxtZT1uZXcgQXJyYXkoeSksa2U9bmV3IEFycmF5KHkpLFRlPW5ldyBBcnJheSh5KSxQZT1NLndvcmRzO1BlLmxlbmd0aD15LHRoaXMuY29udmVydDEzYihnLndvcmRzLGcubGVuZ3RoLFEs''@;'; put 'put ''eSksdGhpcy5jb252ZXJ0MTNiKEMud29yZHMsQy5sZW5ndGgsbWUseSksdGhpcy50cmFuc2Zvcm0oUSxTLHJlLGZlLHkscCksdGhpcy50cmFuc2Zvcm0obWUsUyxrZSxUZSx5LHApO2Zvcih2YXIgRmU9MDtGZTx5O0ZlKyspe3ZhciBOZT1yZVtGZV0qa2VbRmVdLWZlW0ZlXSpUZVtGZV07ZmVb''@;'; put 'put ''RmVdPXJlW0ZlXSpUZVtGZV0rZmVbRmVdKmtlW0ZlXSxyZVtGZV09TmV9cmV0dXJuIHRoaXMuY29uanVnYXRlKHJlLGZlLHkpLHRoaXMudHJhbnNmb3JtKHJlLGZlLFBlLFMseSxwKSx0aGlzLmNvbmp1Z2F0ZShQZSxTLHkpLHRoaXMubm9ybWFsaXplMTNiKFBlLHkpLE0ubmVnYXRpdmU9Zy5u''@;'; put 'put ''ZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPWcubGVuZ3RoK0MubGVuZ3RoLE0uc3RyaXAoKX0sRS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcpe3ZhciBDPW5ldyBFKG51bGwpO3JldHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxlbmd0aCksdGhpcy5tdWxUbyhnLEMp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGcpe3ZhciBDPW5ldyBFKG51bGwpO3JldHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxlbmd0aCksaWUodGhpcyxnLEMpfSxFLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8o''@;'; put 'put ''Zyx0aGlzKX0sRS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCk7Zm9yKHZhciBDPTAsTT0wO008dGhpcy5sZW5ndGg7TSsrKXt2YXIgeT0oMHx0aGlzLndvcmRzW01dKSpnLHA9KDY3MTA4ODYzJnkpKyg2NzEwODg2MyZDKTtD''@;'; put 'put ''Pj49MjYsQys9eS82NzEwODg2NHwwLEMrPXA+Pj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJnB9cmV0dXJuIDAhPT1DJiYodGhpcy53b3Jkc1tNXT1DLHRoaXMubGVuZ3RoKyspLHRoaXN9LEUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihn''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxFLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxFLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyl7dmFyIEM9ZnVuY3Rpb24oUyl7Zm9yKHZh''@;'; put 'put ''ciBRPW5ldyBBcnJheShTLmJpdExlbmd0aCgpKSxyZT0wO3JlPFEubGVuZ3RoO3JlKyspe3ZhciBtZT1yZSUyNjtRW3JlXT0oUy53b3Jkc1tyZS8yNnwwXSYxPDxtZSk+Pj5tZX1yZXR1cm4gUX0oZyk7aWYoMD09PUMubGVuZ3RoKXJldHVybiBuZXcgRSgxKTtmb3IodmFyIE09dGhpcyx5PTA7''@;'; put 'put ''eTxDLmxlbmd0aCYmMD09PUNbeV07eSsrLE09TS5zcXIoKSk7aWYoKyt5PEMubGVuZ3RoKWZvcih2YXIgcD1NLnNxcigpO3k8Qy5sZW5ndGg7eSsrLHA9cC5zcXIoKSkwIT09Q1t5XSYmKE09TS5tdWwocCkpO3JldHVybiBNfSxFLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZyl7SSgibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDLE09ZyUyNix5PShnLU0pLzI2LHA9NjcxMDg4NjM+Pj4yNi1NPDwyNi1NO2lmKDAhPT1NKXt2YXIgUz0wO2ZvcihDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBRPXRoaXMud29yZHNbQ10mcDt0aGlzLndvcmRzW0NdPSgwfHRoaXMud29yZHNb''@;'; put 'put ''Q10pLVE8PE18UyxTPVE+Pj4yNi1NfVMmJih0aGlzLndvcmRzW0NdPVMsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PXkpe2ZvcihDPXRoaXMubGVuZ3RoLTE7Qz49MDtDLS0pdGhpcy53b3Jkc1tDK3ldPXRoaXMud29yZHNbQ107Zm9yKEM9MDtDPHk7QysrKXRoaXMud29yZHNbQ109MDt0aGlzLmxl''@;'; put 'put ''bmd0aCs9eX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZyl9LEUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihnLEMsTSl7dmFyIHk7SSgibnVtYmVyIj09dHlwZW9mIGcm''@;'; put 'put ''Jmc+PTApLHk9Qz8oQy1DJTI2KS8yNjowO3ZhciBwPWclMjYsUz1NYXRoLm1pbigoZy1wKS8yNix0aGlzLmxlbmd0aCksUT02NzEwODg2M142NzEwODg2Mz4+PnA8PHAscmU9TTtpZih5LT1TLHk9TWF0aC5tYXgoMCx5KSxyZSl7Zm9yKHZhciBmZT0wO2ZlPFM7ZmUrKylyZS53b3Jkc1tmZV09''@;'; put 'put ''dGhpcy53b3Jkc1tmZV07cmUubGVuZ3RoPVN9aWYoMCE9PVMpaWYodGhpcy5sZW5ndGg+Uylmb3IodGhpcy5sZW5ndGgtPVMsZmU9MDtmZTx0aGlzLmxlbmd0aDtmZSsrKXRoaXMud29yZHNbZmVdPXRoaXMud29yZHNbZmUrU107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2''@;'; put 'put ''YXIgbWU9MDtmb3IoZmU9dGhpcy5sZW5ndGgtMTtmZT49MCYmKDAhPT1tZXx8ZmU+PXkpO2ZlLS0pe3ZhciBrZT0wfHRoaXMud29yZHNbZmVdO3RoaXMud29yZHNbZmVdPW1lPDwyNi1wfGtlPj4+cCxtZT1rZSZRfXJldHVybiByZSYmMCE9PW1lJiYocmUud29yZHNbcmUubGVuZ3RoKytdPW1l''@;'; put 'put ''KSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihnLEMsTSl7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGcsQyxNKX0sRS5wcm90b3R5cGUuc2hsbj1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGcpfSxFLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihnKX0sRS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGcpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS51c2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihnKX0sRS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPWclMjYsTT0oZy1DKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1NfHwhKHRo''@;'; put 'put ''aXMud29yZHNbTV0mMTw8QykpfSxFLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPWclMjYsTT0oZy1DKS8yNjtyZXR1cm4gSSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5sZW5ndGg8PU0/dGhpczooMCE9PUMmJk0rKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihNLHRoaXMubGVuZ3RoKSwwIT09QyYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+Qzw8QyksdGhpcy5zdHJpcCgpKX0sRS5wcm90b3R5cGUubWFz''@;'; put 'put ''a249ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oZyl9LEUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGcpe3JldHVybiBJKCJudW1iZXIiPT10eXBlb2YgZyksSShnPDY3MTA4ODY0KSxnPDA/dGhpcy5pc3VibigtZyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxnPyh0aGlzLndvcmRzWzBdPWctKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oZyl9LEUucHJvdG90eXBl''@;'; put 'put ''Ll9pYWRkbj1mdW5jdGlvbihnKXt0aGlzLndvcmRzWzBdKz1nO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ10+PTY3MTA4ODY0O0MrKyl0aGlzLndvcmRzW0NdLT02NzEwODg2NCxDPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW0MrMV09MTp0aGlzLndvcmRzW0Mr''@;'; put 'put ''MV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsQysxKSx0aGlzfSxFLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihnKXtpZihJKCJudW1iZXIiPT10eXBlb2YgZyksSShnPDY3MTA4ODY0KSxnPDApcmV0dXJuIHRoaXMuaWFkZG4oLWcpO2lmKDAhPT10aGlzLm5l''@;'; put 'put ''Z2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1nLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vs''@;'; put 'put ''c2UgZm9yKHZhciBDPTA7Qzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tDXTwwO0MrKyl0aGlzLndvcmRzW0NdKz02NzEwODg2NCx0aGlzLndvcmRzW0MrMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlh''@;'; put 'put ''ZGRuKGcpfSxFLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oZyl9LEUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LEUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaWFicygpfSxFLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oZyxDLE0pe3ZhciB5LHA7dGhpcy5fZXhwYW5kKGcubGVuZ3RoK00pO3ZhciBRPTA7Zm9yKHk9MDt5PGcubGVuZ3RoO3krKyl7cD0oMHx0aGlzLndvcmRzW3krTV0pK1E7dmFyIHJlPSgwfGcud29yZHNbeV0p''@;'; put 'put ''KkM7UT0oKHAtPTY3MTA4ODYzJnJlKT4+MjYpLShyZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW3krTV09NjcxMDg4NjMmcH1mb3IoO3k8dGhpcy5sZW5ndGgtTTt5KyspUT0ocD0oMHx0aGlzLndvcmRzW3krTV0pK1EpPj4yNix0aGlzLndvcmRzW3krTV09NjcxMDg4NjMmcDtpZigwPT09USly''@;'; put 'put ''ZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihJKC0xPT09USksUT0wLHk9MDt5PHRoaXMubGVuZ3RoO3krKylRPShwPS0oMHx0aGlzLndvcmRzW3ldKStRKT4+MjYsdGhpcy53b3Jkc1t5XT02NzEwODg2MyZwO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5f''@;'; put 'put ''d29yZERpdj1mdW5jdGlvbihnLEMpe3ZhciBNLHk9dGhpcy5jbG9uZSgpLHA9ZyxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXTswIT0oTT0yNi10aGlzLl9jb3VudEJpdHMoUykpJiYocD1wLnVzaGxuKE0pLHkuaXVzaGxuKE0pLFM9MHxwLndvcmRzW3AubGVuZ3RoLTFdKTt2YXIgUSxyZT15Lmxl''@;'; put 'put ''bmd0aC1wLmxlbmd0aDtpZigibW9kIiE9PUMpeyhRPW5ldyBFKG51bGwpKS5sZW5ndGg9cmUrMSxRLndvcmRzPW5ldyBBcnJheShRLmxlbmd0aCk7Zm9yKHZhciBmZT0wO2ZlPFEubGVuZ3RoO2ZlKyspUS53b3Jkc1tmZV09MH12YXIgbWU9eS5jbG9uZSgpLl9pc2hsbnN1Ym11bChwLDEscmUp''@;'; put 'put ''OzA9PT1tZS5uZWdhdGl2ZSYmKHk9bWUsUSYmKFEud29yZHNbcmVdPTEpKTtmb3IodmFyIGtlPXJlLTE7a2U+PTA7a2UtLSl7dmFyIFRlPTY3MTA4ODY0KigwfHkud29yZHNbcC5sZW5ndGgra2VdKSsoMHx5LndvcmRzW3AubGVuZ3RoK2tlLTFdKTtmb3IoVGU9TWF0aC5taW4oVGUvU3wwLDY3''@;'; put 'put ''MTA4ODYzKSx5Ll9pc2hsbnN1Ym11bChwLFRlLGtlKTswIT09eS5uZWdhdGl2ZTspVGUtLSx5Lm5lZ2F0aXZlPTAseS5faXNobG5zdWJtdWwocCwxLGtlKSx5LmlzWmVybygpfHwoeS5uZWdhdGl2ZV49MSk7USYmKFEud29yZHNba2VdPVRlKX1yZXR1cm4gUSYmUS5zdHJpcCgpLHkuc3RyaXAo''@;'; put 'put ''KSwiZGl2IiE9PUMmJjAhPT1NJiZ5Lml1c2hybihNKSx7ZGl2OlF8fG51bGwsbW9kOnl9fSxFLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oZyxDLE0pe3JldHVybiBJKCFnLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IEUoMCksbW9kOm5ldyBFKDApfTowIT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSYmMD09PWcubmVnYXRpdmU/KFM9dGhpcy5uZWcoKS5kaXZtb2QoZyxDKSwibW9kIiE9PUMmJih5PVMuZGl2Lm5lZygpKSwiZGl2IiE9PUMmJihwPVMubW9kLm5lZygpLE0mJjAhPT1wLm5lZ2F0aXZlJiZwLmlhZGQoZykpLHtkaXY6eSxtb2Q6cH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYw''@;'; put 'put ''IT09Zy5uZWdhdGl2ZT8oUz10aGlzLmRpdm1vZChnLm5lZygpLEMpLCJtb2QiIT09QyYmKHk9Uy5kaXYubmVnKCkpLHtkaXY6eSxtb2Q6Uy5tb2R9KTp0aGlzLm5lZ2F0aXZlJmcubmVnYXRpdmU/KFM9dGhpcy5uZWcoKS5kaXZtb2QoZy5uZWcoKSxDKSwiZGl2IiE9PUMmJihwPVMubW9kLm5l''@;'; put 'put ''ZygpLE0mJjAhPT1wLm5lZ2F0aXZlJiZwLmlzdWIoZykpLHtkaXY6Uy5kaXYsbW9kOnB9KTpnLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoZyk8MD97ZGl2Om5ldyBFKDApLG1vZDp0aGlzfToxPT09Zy5sZW5ndGg/ImRpdiI9PT1DP3tkaXY6dGhpcy5kaXZuKGcud29yZHNbMF0pLG1v''@;'; put 'put ''ZDpudWxsfToibW9kIj09PUM/e2RpdjpudWxsLG1vZDpuZXcgRSh0aGlzLm1vZG4oZy53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihnLEMpO3ZhciB5LHAsU30sRS5wcm90b3R5cGUu''@;'; put 'put ''ZGl2PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJkaXYiLCExKS5kaXZ9LEUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMSkubW9kfSxFLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChn''@;'; put 'put ''LCJtb2QiLCEwKS5tb2R9LEUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuZGl2bW9kKGcpO2lmKEMubW9kLmlzWmVybygpKXJldHVybiBDLmRpdjt2YXIgTT0wIT09Qy5kaXYubmVnYXRpdmU/Qy5tb2QuaXN1YihnKTpDLm1vZCx5PWcudXNocm4oMSkscD1nLmFu''@;'; put 'put ''ZGxuKDEpLFM9TS5jbXAoeSk7cmV0dXJuIFM8MHx8MT09PXAmJjA9PT1TP0MuZGl2OjAhPT1DLmRpdi5uZWdhdGl2ZT9DLmRpdi5pc3VibigxKTpDLmRpdi5pYWRkbigxKX0sRS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihnKXtJKGc8PTY3MTA4ODYzKTtmb3IodmFyIEM9NjcxMDg4NjQlZyxN''@;'; put 'put ''PTAseT10aGlzLmxlbmd0aC0xO3k+PTA7eS0tKU09KEMqTSsoMHx0aGlzLndvcmRzW3ldKSklZztyZXR1cm4gTX0sRS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTAsTT10aGlzLmxlbmd0aC0xO00+PTA7TS0tKXt2YXIgeT0oMHx0aGlzLndv''@;'; put 'put ''cmRzW01dKSs2NzEwODg2NCpDO3RoaXMud29yZHNbTV09eS9nfDAsQz15JWd9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGcpfSxFLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGcpe0koMD09PWcubmVn''@;'; put 'put ''YXRpdmUpLEkoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsTT1nLmNsb25lKCk7Qz0wIT09Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIgeT1uZXcgRSgxKSxwPW5ldyBFKDApLFM9bmV3IEUoMCksUT1uZXcgRSgxKSxyZT0wO0MuaXNFdmVuKCkmJk0uaXNFdmVuKCk7KUMu''@;'; put 'put ''aXVzaHJuKDEpLE0uaXVzaHJuKDEpLCsrcmU7Zm9yKHZhciBmZT1NLmNsb25lKCksbWU9Qy5jbG9uZSgpOyFDLmlzWmVybygpOyl7Zm9yKHZhciBrZT0wLFRlPTE7IShDLndvcmRzWzBdJlRlKSYma2U8MjY7KytrZSxUZTw8PTEpO2lmKGtlPjApZm9yKEMuaXVzaHJuKGtlKTtrZS0tID4wOyko''@;'; put 'put ''eS5pc09kZCgpfHxwLmlzT2RkKCkpJiYoeS5pYWRkKGZlKSxwLmlzdWIobWUpKSx5Lml1c2hybigxKSxwLml1c2hybigxKTtmb3IodmFyIFBlPTAsRmU9MTshKE0ud29yZHNbMF0mRmUpJiZQZTwyNjsrK1BlLEZlPDw9MSk7aWYoUGU+MClmb3IoTS5pdXNocm4oUGUpO1BlLS0gPjA7KShTLmlz''@;'; put 'put ''T2RkKCl8fFEuaXNPZGQoKSkmJihTLmlhZGQoZmUpLFEuaXN1YihtZSkpLFMuaXVzaHJuKDEpLFEuaXVzaHJuKDEpO0MuY21wKE0pPj0wPyhDLmlzdWIoTSkseS5pc3ViKFMpLHAuaXN1YihRKSk6KE0uaXN1YihDKSxTLmlzdWIoeSksUS5pc3ViKHApKX1yZXR1cm57YTpTLGI6USxnY2Q6TS5p''@;'; put 'put ''dXNobG4ocmUpfX0sRS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUpLEkoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsTT1nLmNsb25lKCk7Qz0wIT09Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIgeSxwPW5ldyBFKDEpLFM9bmV3IEUo''@;'; put 'put ''MCksUT1NLmNsb25lKCk7Qy5jbXBuKDEpPjAmJk0uY21wbigxKT4wOyl7Zm9yKHZhciByZT0wLGZlPTE7IShDLndvcmRzWzBdJmZlKSYmcmU8MjY7KytyZSxmZTw8PTEpO2lmKHJlPjApZm9yKEMuaXVzaHJuKHJlKTtyZS0tID4wOylwLmlzT2RkKCkmJnAuaWFkZChRKSxwLml1c2hybigxKTtm''@;'; put 'put ''b3IodmFyIG1lPTAsa2U9MTshKE0ud29yZHNbMF0ma2UpJiZtZTwyNjsrK21lLGtlPDw9MSk7aWYobWU+MClmb3IoTS5pdXNocm4obWUpO21lLS0gPjA7KVMuaXNPZGQoKSYmUy5pYWRkKFEpLFMuaXVzaHJuKDEpO0MuY21wKE0pPj0wPyhDLmlzdWIoTSkscC5pc3ViKFMpKTooTS5pc3ViKEMp''@;'; put 'put ''LFMuaXN1YihwKSl9cmV0dXJuKHk9MD09PUMuY21wbigxKT9wOlMpLmNtcG4oMCk8MCYmeS5pYWRkKGcpLHl9LEUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihnKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBnLmFicygpO2lmKGcuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEM9dGhp''@;'; put 'put ''cy5jbG9uZSgpLE09Zy5jbG9uZSgpO0MubmVnYXRpdmU9MCxNLm5lZ2F0aXZlPTA7Zm9yKHZhciB5PTA7Qy5pc0V2ZW4oKSYmTS5pc0V2ZW4oKTt5KyspQy5pdXNocm4oMSksTS5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO0MuaXNFdmVuKCk7KUMuaXVzaHJuKDEpO2Zvcig7TS5pc0V2ZW4oKTsp''@;'; put 'put ''TS5pdXNocm4oMSk7dmFyIHA9Qy5jbXAoTSk7aWYocDwwKXt2YXIgUz1DO0M9TSxNPVN9ZWxzZSBpZigwPT09cHx8MD09PU0uY21wbigxKSlicmVhaztDLmlzdWIoTSl9cmV0dXJuIE0uaXVzaGxuKHkpfSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmVnY2QoZyku''@;'; put 'put ''YS51bW9kKGcpfSxFLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''dGhpcy53b3Jkc1swXSZnfSxFLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihnKXtJKCJudW1iZXIiPT10eXBlb2YgZyk7dmFyIEM9ZyUyNixNPShnLUMpLzI2LHk9MTw8QztpZih0aGlzLmxlbmd0aDw9TSlyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXXw9eSx0aGlzO2Zv''@;'; put 'put ''cih2YXIgcD15LFM9TTswIT09cCYmUzx0aGlzLmxlbmd0aDtTKyspe3ZhciBRPTB8dGhpcy53b3Jkc1tTXTtwPShRKz1wKT4+PjI2LHRoaXMud29yZHNbU109USY9NjcxMDg4NjN9cmV0dXJuIDAhPT1wJiYodGhpcy53b3Jkc1tTXT1wLHRoaXMubGVuZ3RoKyspLHRoaXN9LEUucHJvdG90eXBl''@;'; put 'put ''LmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxFLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKGcpe3ZhciBDLE09ZzwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhTSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmTSlyZXR1''@;'; put 'put ''cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlDPTE7ZWxzZXtNJiYoZz0tZyksSShnPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgeT0wfHRoaXMud29yZHNbMF07Qz15PT09Zz8wOnk8Zz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1DOkN9LEUu''@;'; put 'put ''cHJvdG90eXBlLmNtcD1mdW5jdGlvbihnKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJldHVybiAxO3ZhciBDPXRoaXMudWNtcChnKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwt''@;'; put 'put ''QzpDfSxFLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKGcpe2lmKHRoaXMubGVuZ3RoPmcubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPGcubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9MHx0aGlzLndvcmRzW01dLHA9MHxn''@;'; put 'put ''LndvcmRzW01dO2lmKHkhPT1wKXt5PHA/Qz0tMTp5PnAmJihDPTEpO2JyZWFrfX1yZXR1cm4gQ30sRS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKGcpe3JldHVybiAxPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5ndD1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wKGcpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5ndGVuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcG4oZyk+PTB9LEUucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXAoZyk+PTB9LEUucHJvdG90eXBlLmx0bj1mdW5jdGlvbihnKXtyZXR1cm4tMT09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''bHQ9ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPD0wfSxFLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPD0wfSxFLnByb3RvdHlwZS5lcW49ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIDA9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXAoZyl9LEUucmVkPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgTihnKX0sRS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoIXRoaXMucmVk''@;'; put 'put ''LCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksSSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxnLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZyl9LEUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''SSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxFLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMucmVkPWcsdGhpc30sRS5wcm90b3R5cGUu''@;'; put 'put ''Zm9yY2VSZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZyl9LEUucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9u''@;'; put 'put ''bHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxnKX0sRS5wcm90b3R5''@;'; put 'put ''cGUucmVkU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZElTdWIgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxnKX0sRS5wcm90b3R5''@;'; put 'put ''cGUucmVkTXVsPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxnKSx0aGlzLnJlZC5tdWwodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''SSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhpcy5yZWQuaW11bCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sRS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJp''@;'; put 'put ''ZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxF''@;'; put 'put ''LnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sRS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEkodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LEUucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCYmIWcucmVkLCJyZWRQb3cobm9y''@;'; put 'put ''bWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGcpfTt2YXIgZGU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB1ZShnLEMpe3RoaXMubmFtZT1nLHRoaXMucD1uZXcgRShDLDE2KSx0aGlzLm49dGhp''@;'; put 'put ''cy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgRSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gY2UoKXt1ZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIFkoKXt1ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGIoKXt1ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHgoKXt1ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIE4o''@;'; put 'put ''Zyl7aWYoInN0cmluZyI9PXR5cGVvZiBnKXt2YXIgQz1FLl9wcmltZShnKTt0aGlzLm09Qy5wLHRoaXMucHJpbWU9Q31lbHNlIEkoZy5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1nLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBGKGcpe04uY2FsbCh0''@;'; put 'put ''aGlzLGcpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IEUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRo''@;'; put 'put ''aXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dWUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgZz1uZXcgRShudWxsKTtyZXR1cm4gZy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGd9LHVlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGcpe3ZhciBDLE09Zztkb3t0aGlzLnNwbGl0KE0sdGhpcy50bXApLEM9KE09KE09dGhpcy5pbXVsSyhNKSkuaWFk''@;'; put 'put ''ZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKEM+dGhpcy5uKTt2YXIgeT1DPHRoaXMubj8tMTpNLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PXk/KE0ud29yZHNbMF09MCxNLmxlbmd0aD0xKTp5PjA/TS5pc3ViKHRoaXMucCk6dm9pZCAwIT09TS5zdHJpcD9NLnN0cmlwKCk6TS5fc3Ry''@;'; put 'put ''aXAoKSxNfSx1ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZyxDKXtnLml1c2hybih0aGlzLm4sMCxDKX0sdWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe3JldHVybiBnLmltdWwodGhpcy5rKX0sUihjZSx1ZSksY2UucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zm9yKHZh''@;'; put 'put ''ciBNPTQxOTQzMDMseT1NYXRoLm1pbihnLmxlbmd0aCw5KSxwPTA7cDx5O3ArKylDLndvcmRzW3BdPWcud29yZHNbcF07aWYoQy5sZW5ndGg9eSxnLmxlbmd0aDw9OSlyZXR1cm4gZy53b3Jkc1swXT0wLHZvaWQoZy5sZW5ndGg9MSk7dmFyIFM9Zy53b3Jkc1s5XTtmb3IoQy53b3Jkc1tDLmxl''@;'; put 'put ''bmd0aCsrXT1TJk0scD0xMDtwPGcubGVuZ3RoO3ArKyl7dmFyIFE9MHxnLndvcmRzW3BdO2cud29yZHNbcC0xMF09KFEmTSk8PDR8Uz4+PjIyLFM9UX1nLndvcmRzW3AtMTBdPVM+Pj49MjIsZy5sZW5ndGgtPTA9PT1TJiZnLmxlbmd0aD4xMD8xMDo5fSxjZS5wcm90b3R5cGUuaW11bEs9ZnVu''@;'; put 'put ''Y3Rpb24oZyl7Zy53b3Jkc1tnLmxlbmd0aF09MCxnLndvcmRzW2cubGVuZ3RoKzFdPTAsZy5sZW5ndGgrPTI7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0wfGcud29yZHNbTV07Zy53b3Jkc1tNXT02NzEwODg2MyYoQys9OTc3KnkpLEM9NjQqeSsoQy82NzEwODg2NHww''@;'; put 'put ''KX1yZXR1cm4gMD09PWcud29yZHNbZy5sZW5ndGgtMV0mJihnLmxlbmd0aC0tLDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiZnLmxlbmd0aC0tKSxnfSxSKFksdWUpLFIoYix1ZSksUih4LHVlKSx4LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtmb3IodmFyIEM9MCxNPTA7TTxnLmxlbmd0''@;'; put 'put ''aDtNKyspe3ZhciB5PTE5KigwfGcud29yZHNbTV0pK0MscD02NzEwODg2MyZ5O3k+Pj49MjYsZy53b3Jkc1tNXT1wLEM9eX1yZXR1cm4gMCE9PUMmJihnLndvcmRzW2cubGVuZ3RoKytdPUMpLGd9LEUuX3ByaW1lPWZ1bmN0aW9uKGcpe2lmKGRlW2ddKXJldHVybiBkZVtnXTt2YXIgQztpZigi''@;'; put 'put ''azI1NiI9PT1nKUM9bmV3IGNlO2Vsc2UgaWYoInAyMjQiPT09ZylDPW5ldyBZO2Vsc2UgaWYoInAxOTIiPT09ZylDPW5ldyBiO2Vsc2V7aWYoInAyNTUxOSIhPT1nKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2cpO0M9bmV3IHh9cmV0dXJuIGRlW2ddPUMsQ30sTi5wcm90b3R5''@;'; put 'put ''cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZyl7SSgwPT09Zy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxJKGcucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LE4ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKGcsQyl7SSgwPT0oZy5uZWdh''@;'; put 'put ''dGl2ZXxDLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxJKGcucmVkJiZnLnJlZD09PUMucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LE4ucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmlt''@;'; put 'put ''ZS5pcmVkdWNlKGcpLl9mb3JjZVJlZCh0aGlzKTpnLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pc1plcm8oKT9nLmNsb25lKCk6dGhpcy5tLnN1YihnKS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmFkZD1m''@;'; put 'put ''dW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgTT1nLmFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5p''@;'; put 'put ''YWRkKEMpO3JldHVybiBNLmNtcCh0aGlzLm0pPj0wJiZNLmlzdWIodGhpcy5tKSxNfSxOLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5zdWIoQyk7cmV0dXJuIE0uY21wbigwKTwwJiZNLmlhZGQodGhpcy5tKSxNLl9mb3JjZVJlZCh0aGlz''@;'; put 'put ''KX0sTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgTT1nLmlzdWIoQyk7cmV0dXJuIE0uY21wbigwKTwwJiZNLmlhZGQodGhpcy5tKSxNfSxOLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShnKSx0aGlz''@;'; put 'put ''Lmltb2QoZy51c2hsbihDKSl9LE4ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLmltdWwoQykpfSxOLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChn''@;'; put 'put ''Lm11bChDKSl9LE4ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW11bChnLGcuY2xvbmUoKSl9LE4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5tdWwoZyxnKX0sTi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihnKXtpZihnLmlzWmVybygpKXJl''@;'; put 'put ''dHVybiBnLmNsb25lKCk7dmFyIEM9dGhpcy5tLmFuZGxuKDMpO2lmKEkoQyUyPT0xKSwzPT09Qyl7dmFyIE09dGhpcy5tLmFkZChuZXcgRSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhnLE0pfWZvcih2YXIgeT10aGlzLm0uc3VibigxKSxwPTA7IXkuaXNaZXJvKCkmJjA9PT15LmFu''@;'; put 'put ''ZGxuKDEpOylwKysseS5pdXNocm4oMSk7SSgheS5pc1plcm8oKSk7dmFyIFM9bmV3IEUoMSkudG9SZWQodGhpcyksUT1TLnJlZE5lZygpLHJlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxmZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGZlPW5ldyBFKDIqZmUqZmUpLnRvUmVkKHRoaXMpOzAh''@;'; put 'put ''PT10aGlzLnBvdyhmZSxyZSkuY21wKFEpOylmZS5yZWRJQWRkKFEpO2Zvcih2YXIgbWU9dGhpcy5wb3coZmUseSksa2U9dGhpcy5wb3coZyx5LmFkZG4oMSkuaXVzaHJuKDEpKSxUZT10aGlzLnBvdyhnLHkpLFBlPXA7MCE9PVRlLmNtcChTKTspe2Zvcih2YXIgRmU9VGUsTmU9MDswIT09RmUu''@;'; put 'put ''Y21wKFMpO05lKyspRmU9RmUucmVkU3FyKCk7SShOZTxQZSk7dmFyIExlPXRoaXMucG93KG1lLG5ldyBFKDEpLml1c2hsbihQZS1OZS0xKSk7a2U9a2UucmVkTXVsKExlKSxtZT1MZS5yZWRTcXIoKSxUZT1UZS5yZWRNdWwobWUpLFBlPU5lfXJldHVybiBrZX0sTi5wcm90b3R5cGUuaW52bT1m''@;'; put 'put ''dW5jdGlvbihnKXt2YXIgQz1nLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09Qy5uZWdhdGl2ZT8oQy5uZWdhdGl2ZT0wLHRoaXMuaW1vZChDKS5yZWROZWcoKSk6dGhpcy5pbW9kKEMpfSxOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyxDKXtpZihDLmlzWmVybygpKXJldHVybiBuZXcgRSgx''@;'; put 'put ''KS50b1JlZCh0aGlzKTtpZigwPT09Qy5jbXBuKDEpKXJldHVybiBnLmNsb25lKCk7dmFyIE09bmV3IEFycmF5KDE2KTtNWzBdPW5ldyBFKDEpLnRvUmVkKHRoaXMpLE1bMV09Zztmb3IodmFyIHk9Mjt5PE0ubGVuZ3RoO3krKylNW3ldPXRoaXMubXVsKE1beS0xXSxnKTt2YXIgcD1NWzBdLFM9''@;'; put 'put ''MCxRPTAscmU9Qy5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXJlJiYocmU9MjYpLHk9Qy5sZW5ndGgtMTt5Pj0wO3ktLSl7Zm9yKHZhciBmZT1DLndvcmRzW3ldLG1lPXJlLTE7bWU+PTA7bWUtLSl7dmFyIGtlPWZlPj5tZSYxO3AhPT1NWzBdJiYocD10aGlzLnNxcihwKSksMCE9PWtlfHwwIT09''@;'; put 'put ''Uz8oUzw8PTEsU3w9a2UsKDQ9PSsrUXx8MD09PXkmJjA9PT1tZSkmJihwPXRoaXMubXVsKHAsTVtTXSksUT0wLFM9MCkpOlE9MH1yZT0yNn1yZXR1cm4gcH0sTi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3ZhciBDPWcudW1vZCh0aGlzLm0pO3JldHVybiBDPT09Zz9DLmNsb25l''@;'; put 'put ''KCk6Q30sTi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9Zy5jbG9uZSgpO3JldHVybiBDLnJlZD1udWxsLEN9LEUubW9udD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IEYoZyl9LFIoRixOKSxGLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW1vZChnLnVzaGxuKHRoaXMuc2hpZnQpKX0sRi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9dGhpcy5pbW9kKGcubXVsKHRoaXMucmludikpO3JldHVybiBDLnJlZD1udWxsLEN9LEYucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygp''@;'; put 'put ''fHxDLmlzWmVybygpKXJldHVybiBnLndvcmRzWzBdPTAsZy5sZW5ndGg9MSxnO3ZhciBNPWcuaW11bChDKSx5PU0ubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHA9TS5pc3ViKHkpLml1c2hybih0aGlzLnNoaWZ0KSxTPXA7''@;'; put 'put ''cmV0dXJuIHAuY21wKHRoaXMubSk+PTA/Uz1wLmlzdWIodGhpcy5tKTpwLmNtcG4oMCk8MCYmKFM9cC5pYWRkKHRoaXMubSkpLFMuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5f''@;'; put 'put ''Zm9yY2VSZWQodGhpcyk7dmFyIE09Zy5tdWwoQykseT1NLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3Vi''@;'; put 'put ''KHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAuaWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShIPUwubm1kKEgp''@;'; put 'put ''LHRoaXMpfSw2OTQ4OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9QjtLLnZlcnNpb249TCg4NTk3KS5pOCxLLnV0aWxzPUwoOTUzKSxLLnJhbmQ9TCg5OTMxKSxLLmN1cnZlPUwoODI1NCksSy5jdXJ2ZXM9TCg1NDI3KSxLLmVjPUwoNzk1NCksSy5lZGRzYT1MKDU5ODApfSw0OTE4OihI''@;'; put 'put ''LEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgzNzg1KSxKPUwoOTUzKSxJPUouZ2V0TkFGLFI9Si5nZXRKU0YsRT1KLmFzc2VydDtmdW5jdGlvbiB6KFYsRyl7dGhpcy50eXBlPVYsdGhpcy5wPW5ldyBLKEcucCwxNiksdGhpcy5yZWQ9Ry5wcmltZT9LLnJlZChHLnByaW1lKTpLLm1vbnQo''@;'; put 'put ''dGhpcy5wKSx0aGlzLnplcm89bmV3IEsoMCkudG9SZWQodGhpcy5yZWQpLHRoaXMub25lPW5ldyBLKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgSygyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5uPUcubiYmbmV3IEsoRy5uLDE2KSx0aGlzLmc9Ry5nJiZ0aGlzLnBvaW50RnJvbUpT''@;'; put 'put ''T04oRy5nLEcuZ1JlZCksdGhpcy5fd25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDI9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMz1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQ0PW5ldyBBcnJheSg0KSx0aGlzLl9iaXRMZW5ndGg9dGhpcy5uP3RoaXMubi5iaXRMZW5ndGgoKTowO3Zh''@;'; put 'put ''ciBXPXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pOyFXfHxXLmNtcG4oMTAwKT4wP3RoaXMucmVkTj1udWxsOih0aGlzLl9tYXh3ZWxsVHJpY2s9ITAsdGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCkpfWZ1bmN0aW9uIGooVixHKXt0aGlzLmN1cnZlPVYsdGhpcy50eXBlPUcsdGhp''@;'; put 'put ''cy5wcmVjb21wdXRlZD1udWxsfUguZXhwb3J0cz16LHoucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sei5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSx6''@;'; put 'put ''LnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oVixHKXtFKFYucHJlY29tcHV0ZWQpO3ZhciBXPVYuX2dldERvdWJsZXMoKSxVPUkoRywxLHRoaXMuX2JpdExlbmd0aCkscT0oMTw8Vy5zdGVwKzEpLShXLnN0ZXAlMj09MD8yOjEpO3EvPTM7dmFyIHRlLG5lLGllPVtdO2Zvcih0ZT0w''@;'; put 'put ''O3RlPFUubGVuZ3RoO3RlKz1XLnN0ZXApe25lPTA7Zm9yKHZhciBsZT10ZStXLnN0ZXAtMTtsZT49dGU7bGUtLSluZT0obmU8PDEpK1VbbGVdO2llLnB1c2gobmUpfWZvcih2YXIgZGU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHVlPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxj''@;'; put 'put ''ZT1xO2NlPjA7Y2UtLSl7Zm9yKHRlPTA7dGU8aWUubGVuZ3RoO3RlKyspKG5lPWllW3RlXSk9PT1jZT91ZT11ZS5taXhlZEFkZChXLnBvaW50c1t0ZV0pOm5lPT09LWNlJiYodWU9dWUubWl4ZWRBZGQoVy5wb2ludHNbdGVdLm5lZygpKSk7ZGU9ZGUuYWRkKHVlKX1yZXR1cm4gZGUudG9QKCl9''@;'; put 'put ''LHoucHJvdG90eXBlLl93bmFmTXVsPWZ1bmN0aW9uKFYsRyl7Zm9yKHZhciBXPTQsVT1WLl9nZXROQUZQb2ludHMoVykscT1VLnBvaW50cyx0ZT1JKEcsVz1VLnduZCx0aGlzLl9iaXRMZW5ndGgpLG5lPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxpZT10ZS5sZW5ndGgtMTtpZT49MDtp''@;'; put 'put ''ZS0tKXtmb3IodmFyIGxlPTA7aWU+PTAmJjA9PT10ZVtpZV07aWUtLSlsZSsrO2lmKGllPj0wJiZsZSsrLG5lPW5lLmRibHAobGUpLGllPDApYnJlYWs7dmFyIGRlPXRlW2llXTtFKDAhPT1kZSksbmU9ImFmZmluZSI9PT1WLnR5cGU/bmUubWl4ZWRBZGQoZGU+MD9xW2RlLTE+PjFdOnFbLWRl''@;'; put 'put ''LTE+PjFdLm5lZygpKTpuZS5hZGQoZGU+MD9xW2RlLTE+PjFdOnFbLWRlLTE+PjFdLm5lZygpKX1yZXR1cm4iYWZmaW5lIj09PVYudHlwZT9uZS50b1AoKTpuZX0sei5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24oVixHLFcsVSxxKXt2YXIgdGUsbmUsaWUsbGU9dGhpcy5fd25hZlQx''@;'; put 'put ''LGRlPXRoaXMuX3duYWZUMix1ZT10aGlzLl93bmFmVDMsY2U9MDtmb3IodGU9MDt0ZTxVO3RlKyspe3ZhciBZPShpZT1HW3RlXSkuX2dldE5BRlBvaW50cyhWKTtsZVt0ZV09WS53bmQsZGVbdGVdPVkucG9pbnRzfWZvcih0ZT1VLTE7dGU+PTE7dGUtPTIpe3ZhciBiPXRlLTEseD10ZTtpZigx''@;'; put 'put ''PT09bGVbYl0mJjE9PT1sZVt4XSl7dmFyIE49W0dbYl0sbnVsbCxudWxsLEdbeF1dOzA9PT1HW2JdLnkuY21wKEdbeF0ueSk/KE5bMV09R1tiXS5hZGQoR1t4XSksTlsyXT1HW2JdLnRvSigpLm1peGVkQWRkKEdbeF0ubmVnKCkpKTowPT09R1tiXS55LmNtcChHW3hdLnkucmVkTmVnKCkpPyhO''@;'; put 'put ''WzFdPUdbYl0udG9KKCkubWl4ZWRBZGQoR1t4XSksTlsyXT1HW2JdLmFkZChHW3hdLm5lZygpKSk6KE5bMV09R1tiXS50b0ooKS5taXhlZEFkZChHW3hdKSxOWzJdPUdbYl0udG9KKCkubWl4ZWRBZGQoR1t4XS5uZWcoKSkpO3ZhciBGPVstMywtMSwtNSwtNywwLDcsNSwxLDNdLGc9UihXW2Jd''@;'; put 'put ''LFdbeF0pO2ZvcihjZT1NYXRoLm1heChnWzBdLmxlbmd0aCxjZSksdWVbYl09bmV3IEFycmF5KGNlKSx1ZVt4XT1uZXcgQXJyYXkoY2UpLG5lPTA7bmU8Y2U7bmUrKyl1ZVtiXVtuZV09RlszKigxKygwfGdbMF1bbmVdKSkrKDErKDB8Z1sxXVtuZV0pKV0sdWVbeF1bbmVdPTAsZGVbYl09Tn1l''@;'; put 'put ''bHNlIHVlW2JdPUkoV1tiXSxsZVtiXSx0aGlzLl9iaXRMZW5ndGgpLHVlW3hdPUkoV1t4XSxsZVt4XSx0aGlzLl9iaXRMZW5ndGgpLGNlPU1hdGgubWF4KHVlW2JdLmxlbmd0aCxjZSksY2U9TWF0aC5tYXgodWVbeF0ubGVuZ3RoLGNlKX12YXIgeT10aGlzLmpwb2ludChudWxsLG51bGwsbnVs''@;'; put 'put ''bCkscD10aGlzLl93bmFmVDQ7Zm9yKHRlPWNlO3RlPj0wO3RlLS0pe2Zvcih2YXIgUz0wO3RlPj0wOyl7dmFyIFE9ITA7Zm9yKG5lPTA7bmU8VTtuZSsrKXBbbmVdPTB8dWVbbmVdW3RlXSwwIT09cFtuZV0mJihRPSExKTtpZighUSlicmVhaztTKyssdGUtLX1pZih0ZT49MCYmUysrLHk9eS5k''@;'; put 'put ''YmxwKFMpLHRlPDApYnJlYWs7Zm9yKG5lPTA7bmU8VTtuZSsrKXt2YXIgcmU9cFtuZV07MCE9PXJlJiYocmU+MD9pZT1kZVtuZV1bcmUtMT4+MV06cmU8MCYmKGllPWRlW25lXVstcmUtMT4+MV0ubmVnKCkpLHk9ImFmZmluZSI9PT1pZS50eXBlP3kubWl4ZWRBZGQoaWUpOnkuYWRkKGllKSl9''@;'; put 'put ''fWZvcih0ZT0wO3RlPFU7dGUrKylkZVt0ZV09bnVsbDtyZXR1cm4gcT95OnkudG9QKCl9LHouQmFzZVBvaW50PWosai5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxqLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfSx6LnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihWLEcpe1Y9Si50b0FycmF5KFYsRyk7dmFyIFc9dGhpcy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PVZbMF18fDY9PT1WWzBdfHw3PT09VlswXSkmJlYubGVuZ3RoLTE9PTIqVylyZXR1''@;'; put 'put ''cm4gNj09PVZbMF0/RShWW1YubGVuZ3RoLTFdJTI9PTApOjc9PT1WWzBdJiZFKFZbVi5sZW5ndGgtMV0lMj09MSksdGhpcy5wb2ludChWLnNsaWNlKDEsMStXKSxWLnNsaWNlKDErVywxKzIqVykpO2lmKCgyPT09VlswXXx8Mz09PVZbMF0pJiZWLmxlbmd0aC0xPT09VylyZXR1cm4gdGhpcy5w''@;'; put 'put ''b2ludEZyb21YKFYuc2xpY2UoMSwxK1cpLDM9PT1WWzBdKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcG9pbnQgZm9ybWF0Iil9LGoucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQ9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMuZW5jb2RlKFYsITApfSxqLnByb3RvdHlwZS5fZW5jb2RlPWZ1''@;'; put 'put ''bmN0aW9uKFYpe3ZhciBHPXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCksVz10aGlzLmdldFgoKS50b0FycmF5KCJiZSIsRyk7cmV0dXJuIFY/W3RoaXMuZ2V0WSgpLmlzRXZlbigpPzI6M10uY29uY2F0KFcpOls0XS5jb25jYXQoVyx0aGlzLmdldFkoKS50b0FycmF5KCJiZSIsRykpfSxqLnBy''@;'; put 'put ''b3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oVixHKXtyZXR1cm4gSi5lbmNvZGUodGhpcy5fZW5jb2RlKEcpLFYpfSxqLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKFYpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIEc9e2RvdWJsZXM6bnVsbCxuYWY6bnVsbCxiZXRh''@;'; put 'put ''Om51bGx9O3JldHVybiBHLm5hZj10aGlzLl9nZXROQUZQb2ludHMoOCksRy5kb3VibGVzPXRoaXMuX2dldERvdWJsZXMoNCxWKSxHLmJldGE9dGhpcy5fZ2V0QmV0YSgpLHRoaXMucHJlY29tcHV0ZWQ9Ryx0aGlzfSxqLnByb3RvdHlwZS5faGFzRG91Ymxlcz1mdW5jdGlvbihWKXtpZighdGhp''@;'; put 'put ''cy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgRz10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISFHJiZHLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgoVi5iaXRMZW5ndGgoKSsxKS9HLnN0ZXApfSxqLnByb3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbihWLEcpe2lmKHRoaXMu''@;'; put 'put ''cHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO2Zvcih2YXIgVz1bdGhpc10sVT10aGlzLHE9MDtxPEc7cSs9Vil7Zm9yKHZhciB0ZT0wO3RlPFY7dGUrKylVPVUuZGJsKCk7Vy5wdXNoKFUpfXJldHVybntzdGVwOlYs''@;'; put 'put ''cG9pbnRzOld9fSxqLnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzPWZ1bmN0aW9uKFYpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtmb3IodmFyIEc9W3RoaXNdLFc9KDE8PFYpLTEsVT0xPT09Vz9udWxsOnRoaXMu''@;'; put 'put ''ZGJsKCkscT0xO3E8VztxKyspR1txXT1HW3EtMV0uYWRkKFUpO3JldHVybnt3bmQ6Vixwb2ludHM6R319LGoucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGoucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oVil7Zm9yKHZhciBHPXRoaXMsVz0wO1c8VjtXKyspRz1H''@;'; put 'put ''LmRibCgpO3JldHVybiBHfX0sMTEzODooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTUzKSxKPUwoMzc4NSksST1MKDU3MTcpLFI9TCg0OTE4KSxFPUsuYXNzZXJ0O2Z1bmN0aW9uIHooVil7dGhpcy50d2lzdGVkPTEhPSgwfFYuYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJi0x''@;'; put 'put ''PT0oMHxWLmEpLHRoaXMuZXh0ZW5kZWQ9dGhpcy5tT25lQSxSLmNhbGwodGhpcywiZWR3YXJkcyIsViksdGhpcy5hPW5ldyBKKFYuYSwxNikudW1vZCh0aGlzLnJlZC5tKSx0aGlzLmE9dGhpcy5hLnRvUmVkKHRoaXMucmVkKSx0aGlzLmM9bmV3IEooVi5jLDE2KS50b1JlZCh0aGlzLnJlZCks''@;'; put 'put ''dGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyBKKFYuZCwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuZGQ9dGhpcy5kLnJlZEFkZCh0aGlzLmQpLEUoIXRoaXMudHdpc3RlZHx8MD09PXRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSksdGhpcy5vbmVDPTE9PSgwfFYuYyl9ZnVuY3Rp''@;'; put 'put ''b24gaihWLEcsVyxVLHEpe1IuQmFzZVBvaW50LmNhbGwodGhpcyxWLCJwcm9qZWN0aXZlIiksbnVsbD09PUcmJm51bGw9PT1XJiZudWxsPT09VT8odGhpcy54PXRoaXMuY3VydmUuemVybyx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMudD10aGlzLmN1''@;'; put 'put ''cnZlLnplcm8sdGhpcy56T25lPSEwKToodGhpcy54PW5ldyBKKEcsMTYpLHRoaXMueT1uZXcgSihXLDE2KSx0aGlzLno9VT9uZXcgSihVLDE2KTp0aGlzLmN1cnZlLm9uZSx0aGlzLnQ9cSYmbmV3IEoocSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5y''@;'; put 'put ''ZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy50JiYhdGhpcy50LnJlZCYmKHRoaXMudD10aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0''@;'; put 'put ''aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmUsdGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCYmKHRoaXMudD10aGlzLngucmVkTXVsKHRoaXMueSksdGhpcy56T25lfHwodGhpcy50PXRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSkpKSl9SSh6LFIpLEguZXhwb3J0cz16''@;'; put 'put ''LHoucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKFYpe3JldHVybiB0aGlzLm1PbmVBP1YucmVkTmVnKCk6dGhpcy5hLnJlZE11bChWKX0sei5wcm90b3R5cGUuX211bEM9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMub25lQz9WOnRoaXMuYy5yZWRNdWwoVil9LHoucHJvdG90eXBlLmpwb2ludD1m''@;'; put 'put ''dW5jdGlvbihWLEcsVyxVKXtyZXR1cm4gdGhpcy5wb2ludChWLEcsVyxVKX0sei5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihWLEcpeyhWPW5ldyBKKFYsMTYpKS5yZWR8fChWPVYudG9SZWQodGhpcy5yZWQpKTt2YXIgVz1WLnJlZFNxcigpLFU9dGhpcy5jMi5yZWRTdWIodGhpcy5h''@;'; put 'put ''LnJlZE11bChXKSkscT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoVykpLHRlPVUucmVkTXVsKHEucmVkSW52bSgpKSxuZT10ZS5yZWRTcXJ0KCk7aWYoMCE9PW5lLnJlZFNxcigpLnJlZFN1Yih0ZSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJpbnZhbGlkIHBvaW50Iik7dmFyIGllPW5lLmZyb21SZWQoKS5pc09kZCgpO3JldHVybihHJiYhaWV8fCFHJiZpZSkmJihuZT1uZS5yZWROZWcoKSksdGhpcy5wb2ludChWLG5lKX0sei5wcm90b3R5cGUucG9pbnRGcm9tWT1mdW5jdGlvbihWLEcpeyhWPW5ldyBKKFYsMTYpKS5yZWR8fChW''@;'; put 'put ''PVYudG9SZWQodGhpcy5yZWQpKTt2YXIgVz1WLnJlZFNxcigpLFU9Vy5yZWRTdWIodGhpcy5jMikscT1XLnJlZE11bCh0aGlzLmQpLnJlZE11bCh0aGlzLmMyKS5yZWRTdWIodGhpcy5hKSx0ZT1VLnJlZE11bChxLnJlZEludm0oKSk7aWYoMD09PXRlLmNtcCh0aGlzLnplcm8pKXtpZihHKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiB0aGlzLnBvaW50KHRoaXMuemVybyxWKX12YXIgbmU9dGUucmVkU3FydCgpO2lmKDAhPT1uZS5yZWRTcXIoKS5yZWRTdWIodGUpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVy''@;'; put 'put ''biBuZS5mcm9tUmVkKCkuaXNPZGQoKSE9PUcmJihuZT1uZS5yZWROZWcoKSksdGhpcy5wb2ludChuZSxWKX0sei5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oVil7aWYoVi5pc0luZmluaXR5KCkpcmV0dXJuITA7Vi5ub3JtYWxpemUoKTt2YXIgRz1WLngucmVkU3FyKCksVz1WLnkucmVk''@;'; put 'put ''U3FyKCksVT1HLnJlZE11bCh0aGlzLmEpLnJlZEFkZChXKSxxPXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKEcpLnJlZE11bChXKSkpO3JldHVybiAwPT09VS5jbXAocSl9LEkoaixSLkJhc2VQb2ludCksei5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5j''@;'; put 'put ''dGlvbihWKXtyZXR1cm4gai5mcm9tSlNPTih0aGlzLFYpfSx6LnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihWLEcsVyxVKXtyZXR1cm4gbmV3IGoodGhpcyxWLEcsVyxVKX0sai5mcm9tSlNPTj1mdW5jdGlvbihWLEcpe3JldHVybiBuZXcgaihWLEdbMF0sR1sxXSxHWzJdKX0sai5wcm90b3R5''@;'; put 'put ''cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3Ro''@;'; put 'put ''aXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxqLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnguY21wbigwKSYmKDA9PT10aGlzLnkuY21wKHRoaXMueil8fHRoaXMuek9uZSYmMD09PXRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSl9LGou''@;'; put 'put ''cHJvdG90eXBlLl9leHREYmw9ZnVuY3Rpb24oKXt2YXIgVj10aGlzLngucmVkU3FyKCksRz10aGlzLnkucmVkU3FyKCksVz10aGlzLnoucmVkU3FyKCk7Vz1XLnJlZElBZGQoVyk7dmFyIFU9dGhpcy5jdXJ2ZS5fbXVsQShWKSxxPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJ''@;'; put 'put ''U3ViKFYpLnJlZElTdWIoRyksdGU9VS5yZWRBZGQoRyksbmU9dGUucmVkU3ViKFcpLGllPVUucmVkU3ViKEcpLGxlPXEucmVkTXVsKG5lKSxkZT10ZS5yZWRNdWwoaWUpLHVlPXEucmVkTXVsKGllKSxjZT1uZS5yZWRNdWwodGUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGxlLGRlLGNlLHVl''@;'; put 'put ''KX0sai5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgVixHLFcsVSxxLHRlLG5lPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKSxpZT10aGlzLngucmVkU3FyKCksbGU9dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7dmFyIGRlPShVPXRoaXMuY3Vy''@;'; put 'put ''dmUuX211bEEoaWUpKS5yZWRBZGQobGUpO3RoaXMuek9uZT8oVj1uZS5yZWRTdWIoaWUpLnJlZFN1YihsZSkucmVkTXVsKGRlLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLEc9ZGUucmVkTXVsKFUucmVkU3ViKGxlKSksVz1kZS5yZWRTcXIoKS5yZWRTdWIoZGUpLnJlZFN1YihkZSkpOihxPXRo''@;'; put 'put ''aXMuei5yZWRTcXIoKSx0ZT1kZS5yZWRTdWIocSkucmVkSVN1YihxKSxWPW5lLnJlZFN1YihpZSkucmVkSVN1YihsZSkucmVkTXVsKHRlKSxHPWRlLnJlZE11bChVLnJlZFN1YihsZSkpLFc9ZGUucmVkTXVsKHRlKSl9ZWxzZSBVPWllLnJlZEFkZChsZSkscT10aGlzLmN1cnZlLl9tdWxDKHRo''@;'; put 'put ''aXMueikucmVkU3FyKCksdGU9VS5yZWRTdWIocSkucmVkU3ViKHEpLFY9dGhpcy5jdXJ2ZS5fbXVsQyhuZS5yZWRJU3ViKFUpKS5yZWRNdWwodGUpLEc9dGhpcy5jdXJ2ZS5fbXVsQyhVKS5yZWRNdWwoaWUucmVkSVN1YihsZSkpLFc9VS5yZWRNdWwodGUpO3JldHVybiB0aGlzLmN1cnZlLnBv''@;'; put 'put ''aW50KFYsRyxXKX0sai5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LGoucHJvdG90eXBlLl9leHRBZGQ9ZnVuY3Rpb24oVil7dmFyIEc9dGhpcy55''@;'; put 'put ''LnJlZFN1Yih0aGlzLngpLnJlZE11bChWLnkucmVkU3ViKFYueCkpLFc9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChWLnkucmVkQWRkKFYueCkpLFU9dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoVi50KSxxPXRoaXMuei5yZWRNdWwoVi56LnJlZEFkZChWLnopKSx0''@;'; put 'put ''ZT1XLnJlZFN1YihHKSxuZT1xLnJlZFN1YihVKSxpZT1xLnJlZEFkZChVKSxsZT1XLnJlZEFkZChHKSxkZT10ZS5yZWRNdWwobmUpLHVlPWllLnJlZE11bChsZSksY2U9dGUucmVkTXVsKGxlKSxZPW5lLnJlZE11bChpZSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZGUsdWUsWSxjZSl9LGou''@;'; put 'put ''cHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9uKFYpe3ZhciBHLFcsVT10aGlzLnoucmVkTXVsKFYueikscT1VLnJlZFNxcigpLHRlPXRoaXMueC5yZWRNdWwoVi54KSxuZT10aGlzLnkucmVkTXVsKFYueSksaWU9dGhpcy5jdXJ2ZS5kLnJlZE11bCh0ZSkucmVkTXVsKG5lKSxsZT1xLnJlZFN1''@;'; put 'put ''YihpZSksZGU9cS5yZWRBZGQoaWUpLHVlPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwoVi54LnJlZEFkZChWLnkpKS5yZWRJU3ViKHRlKS5yZWRJU3ViKG5lKSxjZT1VLnJlZE11bChsZSkucmVkTXVsKHVlKTtyZXR1cm4gdGhpcy5jdXJ2ZS50d2lzdGVkPyhHPVUucmVkTXVsKGRlKS5y''@;'; put 'put ''ZWRNdWwobmUucmVkU3ViKHRoaXMuY3VydmUuX211bEEodGUpKSksVz1sZS5yZWRNdWwoZGUpKTooRz1VLnJlZE11bChkZSkucmVkTXVsKG5lLnJlZFN1Yih0ZSkpLFc9dGhpcy5jdXJ2ZS5fbXVsQyhsZSkucmVkTXVsKGRlKSksdGhpcy5jdXJ2ZS5wb2ludChjZSxHLFcpfSxqLnByb3RvdHlw''@;'; put 'put ''ZS5hZGQ9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1Y6Vi5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dEFkZChWKTp0aGlzLl9wcm9qQWRkKFYpfSxqLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oVil7cmV0dXJuIHRoaXMuX2hhc0Rv''@;'; put 'put ''dWJsZXMoVik/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxWKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsVil9LGoucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihWLEcsVyl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxHXSxbVixXXSwyLCExKX0sai5wcm90''@;'; put 'put ''b3R5cGUuam11bEFkZD1mdW5jdGlvbihWLEcsVyl7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSxbdGhpcyxHXSxbVixXXSwyLCEwKX0sai5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7aWYodGhpcy56T25lKXJldHVybiB0aGlzO3ZhciBWPXRoaXMuei5yZWRJbnZtKCk7''@;'; put 'put ''cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKFYpLHRoaXMueT10aGlzLnkucmVkTXVsKFYpLHRoaXMudCYmKHRoaXMudD10aGlzLnQucmVkTXVsKFYpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56T25lPSEwLHRoaXN9LGoucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSx0aGlzLnksdGhpcy56LHRoaXMudCYmdGhpcy50LnJlZE5lZygpKX0sai5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9LGoucHJvdG90eXBlLmdldFk9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnkuZnJvbVJlZCgpfSxqLnByb3RvdHlwZS5lcT1mdW5jdGlvbihWKXtyZXR1cm4gdGhpcz09PVZ8fDA9PT10aGlzLmdldFgoKS5jbXAoVi5nZXRYKCkpJiYwPT09dGhpcy5nZXRZKCkuY21wKFYuZ2V0WSgpKX0sai5wcm90b3R5cGUu''@;'; put 'put ''ZXFYVG9QPWZ1bmN0aW9uKFYpe3ZhciBHPVYudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO2lmKDA9PT10aGlzLnguY21wKEcpKXJldHVybiEwO2Zvcih2YXIgVz1WLmNsb25lKCksVT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7Oyl7aWYoVy5pYWRkKHRoaXMu''@;'; put 'put ''Y3VydmUubiksVy5jbXAodGhpcy5jdXJ2ZS5wKT49MClyZXR1cm4hMTtpZihHLnJlZElBZGQoVSksMD09PXRoaXMueC5jbXAoRykpcmV0dXJuITB9fSxqLnByb3RvdHlwZS50b1A9ai5wcm90b3R5cGUubm9ybWFsaXplLGoucHJvdG90eXBlLm1peGVkQWRkPWoucHJvdG90eXBlLmFkZH0sODI1''@;'; put 'put ''NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUI7Sy5iYXNlPUwoNDkxOCksSy5zaG9ydD1MKDY2NzMpLEsubW9udD1MKDI4ODEpLEsuZWR3YXJkcz1MKDExMzgpfSwyODgxOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgzNzg1KSxKPUwoNTcxNyksST1MKDQ5MTgpLFI9TCg5''@;'; put 'put ''NTMpO2Z1bmN0aW9uIEUoail7SS5jYWxsKHRoaXMsIm1vbnQiLGopLHRoaXMuYT1uZXcgSyhqLmEsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IEsoai5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5pND1uZXcgSyg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpLHRoaXMudHdv''@;'; put 'put ''PW5ldyBLKDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmEyND10aGlzLmk0LnJlZE11bCh0aGlzLmEucmVkQWRkKHRoaXMudHdvKSl9ZnVuY3Rpb24geihqLFYsRyl7SS5CYXNlUG9pbnQuY2FsbCh0aGlzLGosInByb2plY3RpdmUiKSxudWxsPT09ViYmbnVsbD09PUc/KHRoaXMueD10aGlzLmN1''@;'; put 'put ''cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS56ZXJvKToodGhpcy54PW5ldyBLKFYsMTYpLHRoaXMuej1uZXcgSyhHLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUu''@;'; put 'put ''cmVkKSkpfUooRSxJKSxILmV4cG9ydHM9RSxFLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihqKXt2YXIgVj1qLm5vcm1hbGl6ZSgpLngsRz1WLnJlZFNxcigpLFc9Ry5yZWRNdWwoVikucmVkQWRkKEcucmVkTXVsKHRoaXMuYSkpLnJlZEFkZChWKTtyZXR1cm4gMD09PVcucmVkU3FydCgp''@;'; put 'put ''LnJlZFNxcigpLmNtcChXKX0sSih6LEkuQmFzZVBvaW50KSxFLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihqLFYpe3JldHVybiB0aGlzLnBvaW50KFIudG9BcnJheShqLFYpLDEpfSxFLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihqLFYpe3JldHVybiBuZXcgeih0aGlzLGosVil9''@;'; put 'put ''LEUucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oail7cmV0dXJuIHouZnJvbUpTT04odGhpcyxqKX0sei5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30sei5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCJiZSIs''@;'; put 'put ''dGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSl9LHouZnJvbUpTT049ZnVuY3Rpb24oaixWKXtyZXR1cm4gbmV3IHooaixWWzBdLFZbMV18fGoub25lKX0sei5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6''@;'; put 'put ''IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSx6LnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX0sei5wcm90b3R5cGUu''@;'; put 'put ''ZGJsPWZ1bmN0aW9uKCl7dmFyIGo9dGhpcy54LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLFY9dGhpcy54LnJlZFN1Yih0aGlzLnopLnJlZFNxcigpLEc9ai5yZWRTdWIoViksVz1qLnJlZE11bChWKSxVPUcucmVkTXVsKFYucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChHKSkpO3JldHVy''@;'; put 'put ''biB0aGlzLmN1cnZlLnBvaW50KFcsVSl9LHoucHJvdG90eXBlLmFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LHoucHJvdG90eXBlLmRpZmZBZGQ9ZnVuY3Rpb24oaixWKXt2YXIgRz10aGlzLngucmVkQWRkKHRoaXMu''@;'; put 'put ''eiksVz10aGlzLngucmVkU3ViKHRoaXMueiksVT1qLngucmVkQWRkKGoueikscT1qLngucmVkU3ViKGoueikucmVkTXVsKEcpLHRlPVUucmVkTXVsKFcpLG5lPVYuei5yZWRNdWwocS5yZWRBZGQodGUpLnJlZFNxcigpKSxpZT1WLngucmVkTXVsKHEucmVkSVN1Yih0ZSkucmVkU3FyKCkpO3Jl''@;'; put 'put ''dHVybiB0aGlzLmN1cnZlLnBvaW50KG5lLGllKX0sei5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGope2Zvcih2YXIgVj1qLmNsb25lKCksRz10aGlzLFc9dGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpLFU9W107MCE9PVYuY21wbigwKTtWLml1c2hybigxKSlVLnB1c2goVi5hbmRsbigxKSk7''@;'; put 'put ''Zm9yKHZhciBxPVUubGVuZ3RoLTE7cT49MDtxLS0pMD09PVVbcV0/KEc9Ry5kaWZmQWRkKFcsdGhpcyksVz1XLmRibCgpKTooVz1HLmRpZmZBZGQoVyx0aGlzKSxHPUcuZGJsKCkpO3JldHVybiBXfSx6LnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBz''@;'; put 'put ''dXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSx6LnByb3RvdHlwZS5qdW1sQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sei5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oail7cmV0dXJuIDA9PT10aGlzLmdldFgo''@;'; put 'put ''KS5jbXAoai5nZXRYKCkpfSx6LnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LHoucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5u''@;'; put 'put ''b3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfX0sNjY3MzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTUzKSxKPUwoMzc4NSksST1MKDU3MTcpLFI9TCg0OTE4KSxFPUsuYXNzZXJ0O2Z1bmN0aW9uIHooRyl7Ui5jYWxsKHRoaXMsInNob3J0IixHKSx0aGlzLmE9bmV3IEooRy5h''@;'; put 'put ''LDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBKKEcuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0''@;'; put 'put ''aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20oRyksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gaihHLFcsVSxxKXtSLkJhc2VQb2ludC5jYWxsKHRoaXMsRywiYWZmaW5lIiks''@;'; put 'put ''bnVsbD09PVcmJm51bGw9PT1VPyh0aGlzLng9bnVsbCx0aGlzLnk9bnVsbCx0aGlzLmluZj0hMCk6KHRoaXMueD1uZXcgSihXLDE2KSx0aGlzLnk9bmV3IEooVSwxNikscSYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSks''@;'; put 'put ''dGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiBWKEcsVyxVLHEpe1IuQmFzZVBvaW50LmNhbGwodGhpcyxHLCJqYWNvYmlh''@;'; put 'put ''biIpLG51bGw9PT1XJiZudWxsPT09VSYmbnVsbD09PXE/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PW5ldyBKKDApKToodGhpcy54PW5ldyBKKFcsMTYpLHRoaXMueT1uZXcgSihVLDE2KSx0aGlzLno9bmV3IEoocSwxNikpLHRoaXMueC5yZWR8''@;'; put 'put ''fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1''@;'; put 'put ''cnZlLm9uZX1JKHosUiksSC5leHBvcnRzPXosei5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbihHKXtpZih0aGlzLnplcm9BJiZ0aGlzLmcmJnRoaXMubiYmMT09PXRoaXMucC5tb2RuKDMpKXt2YXIgVyxVO2lmKEcuYmV0YSlXPW5ldyBKKEcuYmV0YSwxNikudG9SZWQodGhp''@;'; put 'put ''cy5yZWQpO2Vsc2V7dmFyIHE9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7Vz0oVz1xWzBdLmNtcChxWzFdKTwwP3FbMF06cVsxXSkudG9SZWQodGhpcy5yZWQpfWlmKEcubGFtYmRhKVU9bmV3IEooRy5sYW1iZGEsMTYpO2Vsc2V7dmFyIHRlPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4p''@;'; put 'put ''OzA9PT10aGlzLmcubXVsKHRlWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoVykpP1U9dGVbMF06RSgwPT09dGhpcy5nLm11bChVPXRlWzFdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoVykpKX1yZXR1cm57YmV0YTpXLGxhbWJkYTpVLGJhc2lzOkcuYmFzaXM/Ry5iYXNpcy5tYXAoZnVuY3Rp''@;'; put 'put ''b24obmUpe3JldHVybnthOm5ldyBKKG5lLmEsMTYpLGI6bmV3IEoobmUuYiwxNil9fSk6dGhpcy5fZ2V0RW5kb0Jhc2lzKFUpfX19LHoucHJvdG90eXBlLl9nZXRFbmRvUm9vdHM9ZnVuY3Rpb24oRyl7dmFyIFc9Rz09PXRoaXMucD90aGlzLnJlZDpKLm1vbnQoRyksVT1uZXcgSigyKS50b1Jl''@;'; put 'put ''ZChXKS5yZWRJbnZtKCkscT1VLnJlZE5lZygpLHRlPW5ldyBKKDMpLnRvUmVkKFcpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwoVSk7cmV0dXJuW3EucmVkQWRkKHRlKS5mcm9tUmVkKCkscS5yZWRTdWIodGUpLmZyb21SZWQoKV19LHoucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rp''@;'; put 'put ''b24oRyl7Zm9yKHZhciBXLFUscSx0ZSxuZSxpZSxsZSxkZSx1ZSxjZT10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLFk9RyxiPXRoaXMubi5jbG9uZSgpLHg9bmV3IEooMSksTj1uZXcgSigwKSxGPW5ldyBKKDApLGc9bmV3IEooMSksQz0wOzAhPT1ZLmNt''@;'; put 'put ''cG4oMCk7KXt2YXIgTT1iLmRpdihZKTtkZT1iLnN1YihNLm11bChZKSksdWU9Ri5zdWIoTS5tdWwoeCkpO3ZhciB5PWcuc3ViKE0ubXVsKE4pKTtpZighcSYmZGUuY21wKGNlKTwwKVc9bGUubmVnKCksVT14LHE9ZGUubmVnKCksdGU9dWU7ZWxzZSBpZihxJiYyPT0rK0MpYnJlYWs7bGU9ZGUs''@;'; put 'put ''Yj1ZLFk9ZGUsRj14LHg9dWUsZz1OLE49eX1uZT1kZS5uZWcoKSxpZT11ZTt2YXIgcD1xLnNxcigpLmFkZCh0ZS5zcXIoKSk7cmV0dXJuIG5lLnNxcigpLmFkZChpZS5zcXIoKSkuY21wKHApPj0wJiYobmU9VyxpZT1VKSxxLm5lZ2F0aXZlJiYocT1xLm5lZygpLHRlPXRlLm5lZygpKSxuZS5u''@;'; put 'put ''ZWdhdGl2ZSYmKG5lPW5lLm5lZygpLGllPWllLm5lZygpKSxbe2E6cSxiOnRlfSx7YTpuZSxiOmllfV19LHoucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24oRyl7dmFyIFc9dGhpcy5lbmRvLmJhc2lzLFU9V1swXSxxPVdbMV0sdGU9cS5iLm11bChHKS5kaXZSb3VuZCh0aGlzLm4pLG5l''@;'; put 'put ''PVUuYi5uZWcoKS5tdWwoRykuZGl2Um91bmQodGhpcy5uKSxpZT10ZS5tdWwoVS5hKSxsZT1uZS5tdWwocS5hKSxkZT10ZS5tdWwoVS5iKSx1ZT1uZS5tdWwocS5iKTtyZXR1cm57azE6Ry5zdWIoaWUpLnN1YihsZSksazI6ZGUuYWRkKHVlKS5uZWcoKX19LHoucHJvdG90eXBlLnBvaW50RnJv''@;'; put 'put ''bVg9ZnVuY3Rpb24oRyxXKXsoRz1uZXcgSihHLDE2KSkucmVkfHwoRz1HLnRvUmVkKHRoaXMucmVkKSk7dmFyIFU9Ry5yZWRTcXIoKS5yZWRNdWwoRykucmVkSUFkZChHLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYikscT1VLnJlZFNxcnQoKTtpZigwIT09cS5yZWRTcXIoKS5yZWRT''@;'; put 'put ''dWIoVSkuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIHRlPXEuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKFcmJiF0ZXx8IVcmJnRlKSYmKHE9cS5yZWROZWcoKSksdGhpcy5wb2ludChHLHEpfSx6LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlv''@;'; put 'put ''bihHKXtpZihHLmluZilyZXR1cm4hMDt2YXIgVz1HLngsVT1HLnkscT10aGlzLmEucmVkTXVsKFcpLHRlPVcucmVkU3FyKCkucmVkTXVsKFcpLnJlZElBZGQocSkucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09VS5yZWRTcXIoKS5yZWRJU3ViKHRlKS5jbXBuKDApfSx6LnByb3RvdHlwZS5f''@;'; put 'put ''ZW5kb1duYWZNdWxBZGQ9ZnVuY3Rpb24oRyxXLFUpe2Zvcih2YXIgcT10aGlzLl9lbmRvV25hZlQxLHRlPXRoaXMuX2VuZG9XbmFmVDIsbmU9MDtuZTxHLmxlbmd0aDtuZSsrKXt2YXIgaWU9dGhpcy5fZW5kb1NwbGl0KFdbbmVdKSxsZT1HW25lXSxkZT1sZS5fZ2V0QmV0YSgpO2llLmsxLm5l''@;'; put 'put ''Z2F0aXZlJiYoaWUuazEuaW5lZygpLGxlPWxlLm5lZyghMCkpLGllLmsyLm5lZ2F0aXZlJiYoaWUuazIuaW5lZygpLGRlPWRlLm5lZyghMCkpLHFbMipuZV09bGUscVsyKm5lKzFdPWRlLHRlWzIqbmVdPWllLmsxLHRlWzIqbmUrMV09aWUuazJ9Zm9yKHZhciB1ZT10aGlzLl93bmFmTXVsQWRk''@;'; put 'put ''KDEscSx0ZSwyKm5lLFUpLGNlPTA7Y2U8MipuZTtjZSsrKXFbY2VdPW51bGwsdGVbY2VdPW51bGw7cmV0dXJuIHVlfSxJKGosUi5CYXNlUG9pbnQpLHoucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKEcsVyxVKXtyZXR1cm4gbmV3IGoodGhpcyxHLFcsVSl9LHoucHJvdG90eXBlLnBvaW50RnJv''@;'; put 'put ''bUpTT049ZnVuY3Rpb24oRyxXKXtyZXR1cm4gai5mcm9tSlNPTih0aGlzLEcsVyl9LGoucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXJ2ZS5lbmRvKXt2YXIgRz10aGlzLnByZWNvbXB1dGVkO2lmKEcmJkcuYmV0YSlyZXR1cm4gRy5iZXRhO3ZhciBXPXRoaXMuY3Vy''@;'; put 'put ''dmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihHKXt2YXIgVT10aGlzLmN1cnZlLHE9ZnVuY3Rpb24odGUpe3JldHVybiBVLnBvaW50KHRlLngucmVkTXVsKFUuZW5kby5iZXRhKSx0ZS55KX07Ry5iZXRhPVcsVy5wcmVjb21wdXRlZD17YmV0''@;'; put 'put ''YTpudWxsLG5hZjpHLm5hZiYme3duZDpHLm5hZi53bmQscG9pbnRzOkcubmFmLnBvaW50cy5tYXAocSl9LGRvdWJsZXM6Ry5kb3VibGVzJiZ7c3RlcDpHLmRvdWJsZXMuc3RlcCxwb2ludHM6Ry5kb3VibGVzLnBvaW50cy5tYXAocSl9fX1yZXR1cm4gV319LGoucHJvdG90eXBlLnRvSlNPTj1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLnByZWNvbXB1dGVkP1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91''@;'; put 'put ''Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LGouZnJvbUpTT049ZnVuY3Rpb24oRyxX''@;'; put 'put ''LFUpeyJzdHJpbmciPT10eXBlb2YgVyYmKFc9SlNPTi5wYXJzZShXKSk7dmFyIHE9Ry5wb2ludChXWzBdLFdbMV0sVSk7aWYoIVdbMl0pcmV0dXJuIHE7ZnVuY3Rpb24gdGUoaWUpe3JldHVybiBHLnBvaW50KGllWzBdLGllWzFdLFUpfXZhciBuZT1XWzJdO3JldHVybiBxLnByZWNvbXB1dGVk''@;'; put 'put ''PXtiZXRhOm51bGwsZG91YmxlczpuZS5kb3VibGVzJiZ7c3RlcDpuZS5kb3VibGVzLnN0ZXAscG9pbnRzOltxXS5jb25jYXQobmUuZG91Ymxlcy5wb2ludHMubWFwKHRlKSl9LG5hZjpuZS5uYWYmJnt3bmQ6bmUubmFmLnduZCxwb2ludHM6W3FdLmNvbmNhdChuZS5uYWYucG9pbnRzLm1hcCh0''@;'; put 'put ''ZSkpfX0scX0sai5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJp''@;'; put 'put ''bmcoMTYsMikrIj4ifSxqLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSxqLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oRyl7aWYodGhpcy5pbmYpcmV0dXJuIEc7aWYoRy5pbmYpcmV0dXJuIHRoaXM7aWYodGhpcy5lcShHKSlyZXR1cm4gdGhpcy5kYmwo''@;'; put 'put ''KTtpZih0aGlzLm5lZygpLmVxKEcpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAoRy54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBXPXRoaXMueS5yZWRTdWIoRy55KTswIT09Vy5jbXBuKDApJiYoVz1XLnJlZE11''@;'; put 'put ''bCh0aGlzLngucmVkU3ViKEcueCkucmVkSW52bSgpKSk7dmFyIFU9Vy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihHLngpLHE9Vy5yZWRNdWwodGhpcy54LnJlZFN1YihVKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KFUscSl9LGoucHJvdG90eXBl''@;'; put 'put ''LmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBHPXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09Ry5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFc9dGhpcy5jdXJ2ZS5hLFU9dGhpcy54LnJlZFNxcigpLHE9Ry5yZWRJ''@;'; put 'put ''bnZtKCksdGU9VS5yZWRBZGQoVSkucmVkSUFkZChVKS5yZWRJQWRkKFcpLnJlZE11bChxKSxuZT10ZS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSksaWU9dGUucmVkTXVsKHRoaXMueC5yZWRTdWIobmUpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUu''@;'; put 'put ''cG9pbnQobmUsaWUpfSxqLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LGoucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55LmZyb21SZWQoKX0sai5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEcpe3JldHVybiBHPW5ldyBKKEcs''@;'; put 'put ''MTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91YmxlcyhHKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLEcpOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW0ddKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsRyl9LGou''@;'; put 'put ''cHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihHLFcsVSl7dmFyIHE9W3RoaXMsV10sdGU9W0csVV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChxLHRlKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEscSx0ZSwyKX0sai5wcm90b3R5cGUuam11bEFk''@;'; put 'put ''ZD1mdW5jdGlvbihHLFcsVSl7dmFyIHE9W3RoaXMsV10sdGU9W0csVV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChxLHRlLCEwKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEscSx0ZSwyLCEwKX0sai5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oRyl7''@;'; put 'put ''cmV0dXJuIHRoaXM9PT1HfHx0aGlzLmluZj09PUcuaW5mJiYodGhpcy5pbmZ8fDA9PT10aGlzLnguY21wKEcueCkmJjA9PT10aGlzLnkuY21wKEcueSkpfSxqLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oRyl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIFc9dGhpcy5jdXJ2ZS5wb2ludCh0''@;'; put 'put ''aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihHJiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgVT10aGlzLnByZWNvbXB1dGVkLHE9ZnVuY3Rpb24odGUpe3JldHVybiB0ZS5uZWcoKX07Vy5wcmVjb21wdXRlZD17bmFmOlUubmFmJiZ7d25kOlUubmFmLnduZCxwb2ludHM6VS5uYWYucG9pbnRzLm1h''@;'; put 'put ''cChxKX0sZG91YmxlczpVLmRvdWJsZXMmJntzdGVwOlUuZG91Ymxlcy5zdGVwLHBvaW50czpVLmRvdWJsZXMucG9pbnRzLm1hcChxKX19fXJldHVybiBXfSxqLnByb3RvdHlwZS50b0o9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmY/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwp''@;'; put 'put ''OnRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpfSxJKFYsUi5CYXNlUG9pbnQpLHoucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihHLFcsVSl7cmV0dXJuIG5ldyBWKHRoaXMsRyxXLFUpfSxWLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlz''@;'; put 'put ''SW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBHPXRoaXMuei5yZWRJbnZtKCksVz1HLnJlZFNxcigpLFU9dGhpcy54LnJlZE11bChXKSxxPXRoaXMueS5yZWRNdWwoVykucmVkTXVsKEcpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KFUscSl9LFYucHJv''@;'; put 'put ''dG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LFYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihHKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gRztpZihHLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhp''@;'; put 'put ''czt2YXIgVz1HLnoucmVkU3FyKCksVT10aGlzLnoucmVkU3FyKCkscT10aGlzLngucmVkTXVsKFcpLHRlPUcueC5yZWRNdWwoVSksbmU9dGhpcy55LnJlZE11bChXLnJlZE11bChHLnopKSxpZT1HLnkucmVkTXVsKFUucmVkTXVsKHRoaXMueikpLGxlPXEucmVkU3ViKHRlKSxkZT1uZS5yZWRT''@;'; put 'put ''dWIoaWUpO2lmKDA9PT1sZS5jbXBuKDApKXJldHVybiAwIT09ZGUuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgdWU9bGUucmVkU3FyKCksY2U9dWUucmVkTXVsKGxlKSxZPXEucmVkTXVsKHVlKSxiPWRlLnJlZFNxcigpLnJlZElBZGQo''@;'; put 'put ''Y2UpLnJlZElTdWIoWSkucmVkSVN1YihZKSx4PWRlLnJlZE11bChZLnJlZElTdWIoYikpLnJlZElTdWIobmUucmVkTXVsKGNlKSksTj10aGlzLnoucmVkTXVsKEcueikucmVkTXVsKGxlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoYix4LE4pfSxWLnByb3RvdHlwZS5taXhlZEFkZD1mdW5j''@;'; put 'put ''dGlvbihHKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gRy50b0ooKTtpZihHLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgVz10aGlzLnoucmVkU3FyKCksVT10aGlzLngscT1HLngucmVkTXVsKFcpLHRlPXRoaXMueSxuZT1HLnkucmVkTXVsKFcpLnJlZE11bCh0aGlzLnopLGll''@;'; put 'put ''PVUucmVkU3ViKHEpLGxlPXRlLnJlZFN1YihuZSk7aWYoMD09PWllLmNtcG4oMCkpcmV0dXJuIDAhPT1sZS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBkZT1pZS5yZWRTcXIoKSx1ZT1kZS5yZWRNdWwoaWUpLGNlPVUucmVkTXVsKGRl''@;'; put 'put ''KSxZPWxlLnJlZFNxcigpLnJlZElBZGQodWUpLnJlZElTdWIoY2UpLnJlZElTdWIoY2UpLGI9bGUucmVkTXVsKGNlLnJlZElTdWIoWSkpLnJlZElTdWIodGUucmVkTXVsKHVlKSkseD10aGlzLnoucmVkTXVsKGllKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoWSxiLHgpfSxWLnByb3RvdHlw''@;'; put 'put ''ZS5kYmxwPWZ1bmN0aW9uKEcpe2lmKDA9PT1HKXJldHVybiB0aGlzO2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2lmKCFHKXJldHVybiB0aGlzLmRibCgpO3ZhciBXO2lmKHRoaXMuY3VydmUuemVyb0F8fHRoaXMuY3VydmUudGhyZWVBKXt2YXIgVT10aGlzO2ZvcihXPTA7VzxH''@;'; put 'put ''O1crKylVPVUuZGJsKCk7cmV0dXJuIFV9dmFyIHE9dGhpcy5jdXJ2ZS5hLHRlPXRoaXMuY3VydmUudGludixuZT10aGlzLngsaWU9dGhpcy55LGxlPXRoaXMueixkZT1sZS5yZWRTcXIoKS5yZWRTcXIoKSx1ZT1pZS5yZWRBZGQoaWUpO2ZvcihXPTA7VzxHO1crKyl7dmFyIGNlPW5lLnJlZFNx''@;'; put 'put ''cigpLFk9dWUucmVkU3FyKCksYj1ZLnJlZFNxcigpLHg9Y2UucmVkQWRkKGNlKS5yZWRJQWRkKGNlKS5yZWRJQWRkKHEucmVkTXVsKGRlKSksTj1uZS5yZWRNdWwoWSksRj14LnJlZFNxcigpLnJlZElTdWIoTi5yZWRBZGQoTikpLGc9Ti5yZWRJU3ViKEYpLEM9eC5yZWRNdWwoZyk7Qz1DLnJl''@;'; put 'put ''ZElBZGQoQykucmVkSVN1YihiKTt2YXIgTT11ZS5yZWRNdWwobGUpO1crMTxHJiYoZGU9ZGUucmVkTXVsKGIpKSxuZT1GLGxlPU0sdWU9Q31yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobmUsdWUucmVkTXVsKHRlKSxsZSl9LFYucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LFYucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0aW9uKCl7dmFyIEcsVyxVO2lmKHRoaXMuek9uZSl7dmFyIHE9dGhp''@;'; put 'put ''cy54LnJlZFNxcigpLHRlPXRoaXMueS5yZWRTcXIoKSxuZT10ZS5yZWRTcXIoKSxpZT10aGlzLngucmVkQWRkKHRlKS5yZWRTcXIoKS5yZWRJU3ViKHEpLnJlZElTdWIobmUpO2llPWllLnJlZElBZGQoaWUpO3ZhciBsZT1xLnJlZEFkZChxKS5yZWRJQWRkKHEpLGRlPWxlLnJlZFNxcigpLnJl''@;'; put 'put ''ZElTdWIoaWUpLnJlZElTdWIoaWUpLHVlPW5lLnJlZElBZGQobmUpO3VlPSh1ZT11ZS5yZWRJQWRkKHVlKSkucmVkSUFkZCh1ZSksRz1kZSxXPWxlLnJlZE11bChpZS5yZWRJU3ViKGRlKSkucmVkSVN1Yih1ZSksVT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgY2U9dGhpcy54LnJl''@;'; put 'put ''ZFNxcigpLFk9dGhpcy55LnJlZFNxcigpLGI9WS5yZWRTcXIoKSx4PXRoaXMueC5yZWRBZGQoWSkucmVkU3FyKCkucmVkSVN1YihjZSkucmVkSVN1YihiKTt4PXgucmVkSUFkZCh4KTt2YXIgTj1jZS5yZWRBZGQoY2UpLnJlZElBZGQoY2UpLEY9Ti5yZWRTcXIoKSxnPWIucmVkSUFkZChiKTtn''@;'; put 'put ''PShnPWcucmVkSUFkZChnKSkucmVkSUFkZChnKSxHPUYucmVkSVN1Yih4KS5yZWRJU3ViKHgpLFc9Ti5yZWRNdWwoeC5yZWRJU3ViKEcpKS5yZWRJU3ViKGcpLFU9KFU9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKFUpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChHLFcsVSl9LFYu''@;'; put 'put ''cHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBHLFcsVTtpZih0aGlzLnpPbmUpe3ZhciBxPXRoaXMueC5yZWRTcXIoKSx0ZT10aGlzLnkucmVkU3FyKCksbmU9dGUucmVkU3FyKCksaWU9dGhpcy54LnJlZEFkZCh0ZSkucmVkU3FyKCkucmVkSVN1YihxKS5yZWRJU3ViKG5lKTtp''@;'; put 'put ''ZT1pZS5yZWRJQWRkKGllKTt2YXIgbGU9cS5yZWRBZGQocSkucmVkSUFkZChxKS5yZWRJQWRkKHRoaXMuY3VydmUuYSksZGU9bGUucmVkU3FyKCkucmVkSVN1YihpZSkucmVkSVN1YihpZSk7Rz1kZTt2YXIgdWU9bmUucmVkSUFkZChuZSk7dWU9KHVlPXVlLnJlZElBZGQodWUpKS5yZWRJQWRk''@;'; put 'put ''KHVlKSxXPWxlLnJlZE11bChpZS5yZWRJU3ViKGRlKSkucmVkSVN1Yih1ZSksVT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgY2U9dGhpcy56LnJlZFNxcigpLFk9dGhpcy55LnJlZFNxcigpLGI9dGhpcy54LnJlZE11bChZKSx4PXRoaXMueC5yZWRTdWIoY2UpLnJlZE11bCh0aGlz''@;'; put 'put ''LngucmVkQWRkKGNlKSk7eD14LnJlZEFkZCh4KS5yZWRJQWRkKHgpO3ZhciBOPWIucmVkSUFkZChiKSxGPShOPU4ucmVkSUFkZChOKSkucmVkQWRkKE4pO0c9eC5yZWRTcXIoKS5yZWRJU3ViKEYpLFU9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoWSkucmVkSVN1Yihj''@;'; put 'put ''ZSk7dmFyIGc9WS5yZWRTcXIoKTtnPShnPShnPWcucmVkSUFkZChnKSkucmVkSUFkZChnKSkucmVkSUFkZChnKSxXPXgucmVkTXVsKE4ucmVkSVN1YihHKSkucmVkSVN1YihnKX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoRyxXLFUpfSxWLnByb3RvdHlwZS5fZGJsPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IEc9dGhpcy5jdXJ2ZS5hLFc9dGhpcy54LFU9dGhpcy55LHE9dGhpcy56LHRlPXEucmVkU3FyKCkucmVkU3FyKCksbmU9Vy5yZWRTcXIoKSxpZT1VLnJlZFNxcigpLGxlPW5lLnJlZEFkZChuZSkucmVkSUFkZChuZSkucmVkSUFkZChHLnJlZE11bCh0ZSkpLGRlPVcucmVkQWRkKFcpLHVlPShk''@;'; put 'put ''ZT1kZS5yZWRJQWRkKGRlKSkucmVkTXVsKGllKSxjZT1sZS5yZWRTcXIoKS5yZWRJU3ViKHVlLnJlZEFkZCh1ZSkpLFk9dWUucmVkSVN1YihjZSksYj1pZS5yZWRTcXIoKTtiPShiPShiPWIucmVkSUFkZChiKSkucmVkSUFkZChiKSkucmVkSUFkZChiKTt2YXIgeD1sZS5yZWRNdWwoWSkucmVk''@;'; put 'put ''SVN1YihiKSxOPVUucmVkQWRkKFUpLnJlZE11bChxKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoY2UseCxOKX0sVi5wcm90b3R5cGUudHJwbD1mdW5jdGlvbigpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgRz10aGlzLngucmVkU3FyKCks''@;'; put 'put ''Vz10aGlzLnkucmVkU3FyKCksVT10aGlzLnoucmVkU3FyKCkscT1XLnJlZFNxcigpLHRlPUcucmVkQWRkKEcpLnJlZElBZGQoRyksbmU9dGUucmVkU3FyKCksaWU9dGhpcy54LnJlZEFkZChXKS5yZWRTcXIoKS5yZWRJU3ViKEcpLnJlZElTdWIocSksbGU9KGllPShpZT0oaWU9aWUucmVkSUFk''@;'; put 'put ''ZChpZSkpLnJlZEFkZChpZSkucmVkSUFkZChpZSkpLnJlZElTdWIobmUpKS5yZWRTcXIoKSxkZT1xLnJlZElBZGQocSk7ZGU9KGRlPShkZT1kZS5yZWRJQWRkKGRlKSkucmVkSUFkZChkZSkpLnJlZElBZGQoZGUpO3ZhciB1ZT10ZS5yZWRJQWRkKGllKS5yZWRTcXIoKS5yZWRJU3ViKG5lKS5y''@;'; put 'put ''ZWRJU3ViKGxlKS5yZWRJU3ViKGRlKSxjZT1XLnJlZE11bCh1ZSk7Y2U9KGNlPWNlLnJlZElBZGQoY2UpKS5yZWRJQWRkKGNlKTt2YXIgWT10aGlzLngucmVkTXVsKGxlKS5yZWRJU3ViKGNlKTtZPShZPVkucmVkSUFkZChZKSkucmVkSUFkZChZKTt2YXIgYj10aGlzLnkucmVkTXVsKHVlLnJl''@;'; put 'put ''ZE11bChkZS5yZWRJU3ViKHVlKSkucmVkSVN1YihpZS5yZWRNdWwobGUpKSk7Yj0oYj0oYj1iLnJlZElBZGQoYikpLnJlZElBZGQoYikpLnJlZElBZGQoYik7dmFyIHg9dGhpcy56LnJlZEFkZChpZSkucmVkU3FyKCkucmVkSVN1YihVKS5yZWRJU3ViKGxlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5q''@;'; put 'put ''cG9pbnQoWSxiLHgpfSxWLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oRyxXKXtyZXR1cm4gRz1uZXcgSihHLFcpLHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxHKX0sVi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oRyl7aWYoImFmZmluZSI9PT1HLnR5cGUpcmV0dXJuIHRoaXMuZXEoRy50b0ooKSk7''@;'; put 'put ''aWYodGhpcz09PUcpcmV0dXJuITA7dmFyIFc9dGhpcy56LnJlZFNxcigpLFU9Ry56LnJlZFNxcigpO2lmKDAhPT10aGlzLngucmVkTXVsKFUpLnJlZElTdWIoRy54LnJlZE11bChXKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgcT1XLnJlZE11bCh0aGlzLnopLHRlPVUucmVkTXVsKEcueik7cmV0''@;'; put 'put ''dXJuIDA9PT10aGlzLnkucmVkTXVsKHRlKS5yZWRJU3ViKEcueS5yZWRNdWwocSkpLmNtcG4oMCl9LFYucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihHKXt2YXIgVz10aGlzLnoucmVkU3FyKCksVT1HLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoVyk7aWYoMD09PXRoaXMueC5jbXAo''@;'; put 'put ''VSkpcmV0dXJuITA7Zm9yKHZhciBxPUcuY2xvbmUoKSx0ZT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKFcpOzspe2lmKHEuaWFkZCh0aGlzLmN1cnZlLm4pLHEuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoVS5yZWRJQWRkKHRlKSwwPT09dGhpcy54LmNtcChVKSlyZXR1cm4hMH19''@;'; put 'put ''LFYucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQgSW5maW5pdHk+IjoiPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9T''@;'; put 'put ''dHJpbmcoMTYsMikrIj4ifSxWLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX19LDU0Mjc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPUIsST1MKDM3MTUpLFI9TCg4MjU0KSxFPUwoOTUzKS5hc3NlcnQ7ZnVuY3Rpb24geihW''@;'; put 'put ''KXt0aGlzLmN1cnZlPSJzaG9ydCI9PT1WLnR5cGU/bmV3IFIuc2hvcnQoVik6ImVkd2FyZHMiPT09Vi50eXBlP25ldyBSLmVkd2FyZHMoVik6bmV3IFIubW9udChWKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPVYuaGFzaCxFKHRoaXMuZy52YWxp''@;'; put 'put ''ZGF0ZSgpLCJJbnZhbGlkIGN1cnZlIiksRSh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIGooVixHKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoSixWLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgVz1uZXcgeihHKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KEosVix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6V30pLFd9fSl9Si5QcmVzZXRDdXJ2ZT16LGooInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46''@;'; put 'put ''ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixoYXNoOkkuc2hhMjU2LGdSZWQ6ITEsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQg''@;'; put 'put ''NmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEiXX0pLGooInAyMjQiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAyMjQiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMy''@;'; put 'put ''YTNkIixoYXNoOkkuc2hhMjU2LGdSZWQ6ITEsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pLGoo''@;'; put 'put ''InAyNTYiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYz''@;'; put 'put ''MjU1MSIsaGFzaDpJLnNoYTI1NixnUmVkOiExLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0''@;'; put 'put ''MDY4IDM3YmY1MWY1Il19KSxqKCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6''@;'; put 'put ''ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDEx''@;'; put 'put ''MiAwMzE0MDg4ZiA1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5''@;'; put 'put ''NzMiLGhhc2g6SS5zaGEzODQsZ1JlZDohMSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThi''@;'; put 'put ''ZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZiJdfSksaigicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTli''@;'; put 'put ''MzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOkkuc2hhNTEyLGdSZWQ6ITEsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4''@;'; put 'put ''MTM5IDA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3IGEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0''@;'; put 'put ''NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pLGooImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIsYjoiMSIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpJLnNoYTI1NixnUmVkOiExLGc6WyI5Il19''@;'; put 'put ''KSxqKCJlZDI1NTE5Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5''@;'; put 'put ''OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6SS5zaGEyNTYsZ1JlZDohMSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRj''@;'; put 'put ''NWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3RyeXtLPUwoMTAzNyl9Y2F0Y2h7Sz12b2lkIDB9aigic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHBy''@;'; put 'put ''aW1lOiJrMjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMg''@;'; put 'put ''ZDAzNjQxNDEiLGg6IjEiLGhhc2g6SS5zaGEyNTYsYmV0YToiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZSIsbGFtYmRhOiI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3''@;'; put 'put ''YzFiMjNiZDcyIixiYXNpczpbe2E6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1IixiOiItZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMifSx7YToiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IixiOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0''@;'; put 'put ''ZWIxNSJ9XSxnUmVkOiExLGc6WyI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCIsS119KX0sNzk1NDoo''@;'; put 'put ''SCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoMzc4NSksSj1MKDIxNTYpLEk9TCg5NTMpLFI9TCg1NDI3KSxFPUwoOTkzMSksej1JLmFzc2VydCxqPUwoMTI1MSksVj1MKDYxMSk7ZnVuY3Rpb24gRyhXKXtpZighKHRoaXMgaW5zdGFuY2VvZiBHKSlyZXR1cm4gbmV3IEcoVyk7InN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBXJiYoeihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUixXKSwiVW5rbm93biBjdXJ2ZSAiK1cpLFc9UltXXSksVyBpbnN0YW5jZW9mIFIuUHJlc2V0Q3VydmUmJihXPXtjdXJ2ZTpXfSksdGhpcy5jdXJ2ZT1XLmN1cnZlLmN1cnZlLHRoaXMubj10aGlz''@;'; put 'put ''LmN1cnZlLm4sdGhpcy5uaD10aGlzLm4udXNocm4oMSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLmc9Vy5jdXJ2ZS5nLHRoaXMuZy5wcmVjb21wdXRlKFcuY3VydmUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLmhhc2g9Vy5oYXNofHxXLmN1cnZlLmhhc2h9SC5leHBvcnRzPUcsRy5wcm90b3R5''@;'; put 'put ''cGUua2V5UGFpcj1mdW5jdGlvbihXKXtyZXR1cm4gbmV3IGoodGhpcyxXKX0sRy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24oVyxVKXtyZXR1cm4gai5mcm9tUHJpdmF0ZSh0aGlzLFcsVSl9LEcucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oVyxVKXtyZXR1cm4g''@;'; put 'put ''ai5mcm9tUHVibGljKHRoaXMsVyxVKX0sRy5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihXKXtXfHwoVz17fSk7Zm9yKHZhciBVPW5ldyBKKHtoYXNoOnRoaXMuaGFzaCxwZXJzOlcucGVycyxwZXJzRW5jOlcucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6Vy5lbnRyb3B5fHxFKHRoaXMu''@;'; put 'put ''aGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6Vy5lbnRyb3B5JiZXLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSkscT10aGlzLm4uYnl0ZUxlbmd0aCgpLHRlPXRoaXMubi5zdWIobmV3IEsoMikpOzspe3ZhciBuZT1uZXcgSyhVLmdlbmVyYXRlKHEpKTtp''@;'; put 'put ''ZighKG5lLmNtcCh0ZSk+MCkpcmV0dXJuIG5lLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUobmUpfX0sRy5wcm90b3R5cGUuX3RydW5jYXRlVG9OPWZ1bmN0aW9uKFcsVSl7dmFyIHE9OCpXLmJ5dGVMZW5ndGgoKS10aGlzLm4uYml0TGVuZ3RoKCk7cmV0dXJuIHE+MCYmKFc9Vy51c2hy''@;'; put 'put ''bihxKSksIVUmJlcuY21wKHRoaXMubik+PTA/Vy5zdWIodGhpcy5uKTpXfSxHLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFcsVSxxLHRlKXsib2JqZWN0Ij09dHlwZW9mIHEmJih0ZT1xLHE9bnVsbCksdGV8fCh0ZT17fSksVT10aGlzLmtleUZyb21Qcml2YXRlKFUscSksVz10aGlzLl90cnVu''@;'; put 'put ''Y2F0ZVRvTihuZXcgSyhXLDE2KSk7Zm9yKHZhciBuZT10aGlzLm4uYnl0ZUxlbmd0aCgpLGllPVUuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIixuZSksbGU9Vy50b0FycmF5KCJiZSIsbmUpLGRlPW5ldyBKKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5OmllLG5vbmNlOmxlLHBlcnM6dGUucGVy''@;'; put 'put ''cyxwZXJzRW5jOnRlLnBlcnNFbmN8fCJ1dGY4In0pLHVlPXRoaXMubi5zdWIobmV3IEsoMSkpLGNlPTA7O2NlKyspe3ZhciBZPXRlLms/dGUuayhjZSk6bmV3IEsoZGUuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO2lmKCEoKFk9dGhpcy5fdHJ1bmNhdGVUb04oWSwhMCkpLmNtcG4o''@;'; put 'put ''MSk8PTB8fFkuY21wKHVlKT49MCkpe3ZhciBiPXRoaXMuZy5tdWwoWSk7aWYoIWIuaXNJbmZpbml0eSgpKXt2YXIgeD1iLmdldFgoKSxOPXgudW1vZCh0aGlzLm4pO2lmKDAhPT1OLmNtcG4oMCkpe3ZhciBGPVkuaW52bSh0aGlzLm4pLm11bChOLm11bChVLmdldFByaXZhdGUoKSkuaWFkZChX''@;'; put 'put ''KSk7aWYoMCE9PShGPUYudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgZz0oYi5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09eC5jbXAoTik/MjowKTtyZXR1cm4gdGUuY2Fub25pY2FsJiZGLmNtcCh0aGlzLm5oKT4wJiYoRj10aGlzLm4uc3ViKEYpLGdePTEpLG5ldyBWKHtyOk4sczpGLHJl''@;'; put 'put ''Y292ZXJ5UGFyYW06Z30pfX19fX19LEcucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihXLFUscSx0ZSl7Vz10aGlzLl90cnVuY2F0ZVRvTihuZXcgSyhXLDE2KSkscT10aGlzLmtleUZyb21QdWJsaWMocSx0ZSk7dmFyIG5lPShVPW5ldyBWKFUsImhleCIpKS5yLGllPVUucztpZihuZS5jbXBu''@;'; put 'put ''KDEpPDB8fG5lLmNtcCh0aGlzLm4pPj0wfHxpZS5jbXBuKDEpPDB8fGllLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciBsZSxkZT1pZS5pbnZtKHRoaXMubiksdWU9ZGUubXVsKFcpLnVtb2QodGhpcy5uKSxjZT1kZS5tdWwobmUpLnVtb2QodGhpcy5uKTtyZXR1cm4gdGhpcy5jdXJ2ZS5f''@;'; put 'put ''bWF4d2VsbFRyaWNrPyEobGU9dGhpcy5nLmptdWxBZGQodWUscS5nZXRQdWJsaWMoKSxjZSkpLmlzSW5maW5pdHkoKSYmbGUuZXFYVG9QKG5lKTohKGxlPXRoaXMuZy5tdWxBZGQodWUscS5nZXRQdWJsaWMoKSxjZSkpLmlzSW5maW5pdHkoKSYmMD09PWxlLmdldFgoKS51bW9kKHRoaXMubiku''@;'; put 'put ''Y21wKG5lKX0sRy5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihXLFUscSx0ZSl7eigoMyZxKT09PXEsIlRoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMiKSxVPW5ldyBWKFUsdGUpO3ZhciBuZT10aGlzLm4saWU9bmV3IEsoVyksbGU9VS5yLGRlPVUucyx1''@;'; put 'put ''ZT0xJnEsY2U9cT4+MTtpZihsZS5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmNlKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlIik7bGU9dGhpcy5jdXJ2ZS5wb2ludEZyb21YKGNlP2xlLmFkZCh0aGlzLmN1cnZl''@;'; put 'put ''Lm4pOmxlLHVlKTt2YXIgWT1VLnIuaW52bShuZSksYj1uZS5zdWIoaWUpLm11bChZKS51bW9kKG5lKSx4PWRlLm11bChZKS51bW9kKG5lKTtyZXR1cm4gdGhpcy5nLm11bEFkZChiLGxlLHgpfSxHLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKFcsVSxxLHRlKXtpZihu''@;'; put 'put ''dWxsIT09KFU9bmV3IFYoVSx0ZSkpLnJlY292ZXJ5UGFyYW0pcmV0dXJuIFUucmVjb3ZlcnlQYXJhbTtmb3IodmFyIG5lPTA7bmU8NDtuZSsrKXt2YXIgaWU7dHJ5e2llPXRoaXMucmVjb3ZlclB1YktleShXLFUsbmUpfWNhdGNoe2NvbnRpbnVlfWlmKGllLmVxKHEpKXJldHVybiBuZX10aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZhbGlkIHJlY292ZXJ5IGZhY3RvciIpfX0sMTI1MTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoMzc4NSksSj1MKDk1MykuYXNzZXJ0O2Z1bmN0aW9uIEkoUixFKXt0aGlzLmVjPVIsdGhpcy5wcml2PW51bGwsdGhpcy5wdWI9bnVs''@;'; put 'put ''bCxFLnByaXYmJnRoaXMuX2ltcG9ydFByaXZhdGUoRS5wcml2LEUucHJpdkVuYyksRS5wdWImJnRoaXMuX2ltcG9ydFB1YmxpYyhFLnB1YixFLnB1YkVuYyl9SC5leHBvcnRzPUksSS5mcm9tUHVibGljPWZ1bmN0aW9uKFIsRSx6KXtyZXR1cm4gRSBpbnN0YW5jZW9mIEk/RTpuZXcgSShSLHtw''@;'; put 'put ''dWI6RSxwdWJFbmM6en0pfSxJLmZyb21Qcml2YXRlPWZ1bmN0aW9uKFIsRSx6KXtyZXR1cm4gRSBpbnN0YW5jZW9mIEk/RTpuZXcgSShSLHtwcml2OkUscHJpdkVuYzp6fSl9LEkucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5nZXRQdWJsaWMoKTtyZXR1cm4gUi5p''@;'; put 'put ''c0luZmluaXR5KCk/e3Jlc3VsdDohMSxyZWFzb246IkludmFsaWQgcHVibGljIGtleSJ9OlIudmFsaWRhdGUoKT9SLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKT97cmVzdWx0OiEwLHJlYXNvbjpudWxsfTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSAqIE4gIT0gTyJ9''@;'; put 'put ''OntyZXN1bHQ6ITEscmVhc29uOiJQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50In19LEkucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbihSLEUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgUiYmKEU9UixSPW51bGwpLHRoaXMucHVifHwodGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnBy''@;'; put 'put ''aXYpKSxFP3RoaXMucHViLmVuY29kZShFLFIpOnRoaXMucHVifSxJLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKFIpe3JldHVybiJoZXgiPT09Uj90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxJLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbihSLEUp''@;'; put 'put ''e3RoaXMucHJpdj1uZXcgSyhSLEV8fDE2KSx0aGlzLnByaXY9dGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKX0sSS5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihSLEUpe2lmKFIueHx8Ui55KXJldHVybiJtb250Ij09PXRoaXMuZWMuY3VydmUudHlwZT9KKFIueCwiTmVl''@;'; put 'put ''ZCB4IGNvb3JkaW5hdGUiKToic2hvcnQiIT09dGhpcy5lYy5jdXJ2ZS50eXBlJiYiZWR3YXJkcyIhPT10aGlzLmVjLmN1cnZlLnR5cGV8fEooUi54JiZSLnksIk5lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUiKSx2b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoUi54LFIueSkp''@;'; put 'put ''O3RoaXMucHViPXRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoUixFKX0sSS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKFIpe3JldHVybiBSLnZhbGlkYXRlKCl8fEooUi52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCIpLFIubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxJ''@;'; put 'put ''LnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFIsRSx6KXtyZXR1cm4gdGhpcy5lYy5zaWduKFIsdGhpcyxFLHopfSxJLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oUixFKXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkoUixFLHRoaXMpfSxJLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIjxLZXkgcHJpdjogIisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpKyIgcHViOiAiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKSsiID4ifX0sNjExOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgzNzg1KSxKPUwoOTUzKSxJPUouYXNzZXJ0O2Z1''@;'; put 'put ''bmN0aW9uIFIoRyxXKXtpZihHIGluc3RhbmNlb2YgUilyZXR1cm4gRzt0aGlzLl9pbXBvcnRERVIoRyxXKXx8KEkoRy5yJiZHLnMsIlNpZ25hdHVyZSB3aXRob3V0IHIgb3IgcyIpLHRoaXMucj1uZXcgSyhHLnIsMTYpLHRoaXMucz1uZXcgSyhHLnMsMTYpLHRoaXMucmVjb3ZlcnlQYXJhbT12''@;'; put 'put ''b2lkIDA9PT1HLnJlY292ZXJ5UGFyYW0/bnVsbDpHLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIEUoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24geihHLFcpe3ZhciBVPUdbVy5wbGFjZSsrXTtpZighKDEyOCZVKSlyZXR1cm4gVTt2YXIgcT0xNSZVO2lmKDA9PT1xfHxxPjQpcmV0dXJuITE7Zm9y''@;'; put 'put ''KHZhciB0ZT0wLG5lPTAsaWU9Vy5wbGFjZTtuZTxxO25lKyssaWUrKyl0ZTw8PTgsdGV8PUdbaWVdLHRlPj4+PTA7cmV0dXJuISh0ZTw9MTI3KSYmKFcucGxhY2U9aWUsdGUpfWZ1bmN0aW9uIGooRyl7Zm9yKHZhciBXPTAsVT1HLmxlbmd0aC0xOyFHW1ddJiYhKDEyOCZHW1crMV0pJiZXPFU7''@;'; put 'put ''KVcrKztyZXR1cm4gMD09PVc/RzpHLnNsaWNlKFcpfWZ1bmN0aW9uIFYoRyxXKXtpZihXPDEyOClHLnB1c2goVyk7ZWxzZXt2YXIgVT0xKyhNYXRoLmxvZyhXKS9NYXRoLkxOMj4+PjMpO2ZvcihHLnB1c2goMTI4fFUpOy0tVTspRy5wdXNoKFc+Pj4oVTw8MykmMjU1KTtHLnB1c2goVyl9fUgu''@;'; put 'put ''ZXhwb3J0cz1SLFIucHJvdG90eXBlLl9pbXBvcnRERVI9ZnVuY3Rpb24oRyxXKXtHPUoudG9BcnJheShHLFcpO3ZhciBVPW5ldyBFO2lmKDQ4IT09R1tVLnBsYWNlKytdKXJldHVybiExO3ZhciBxPXooRyxVKTtpZighMT09PXF8fHErVS5wbGFjZSE9PUcubGVuZ3RofHwyIT09R1tVLnBsYWNl''@;'; put 'put ''KytdKXJldHVybiExO3ZhciB0ZT16KEcsVSk7aWYoITE9PT10ZSlyZXR1cm4hMTt2YXIgbmU9Ry5zbGljZShVLnBsYWNlLHRlK1UucGxhY2UpO2lmKFUucGxhY2UrPXRlLDIhPT1HW1UucGxhY2UrK10pcmV0dXJuITE7dmFyIGllPXooRyxVKTtpZighMT09PWllfHxHLmxlbmd0aCE9PWllK1Uu''@;'; put 'put ''cGxhY2UpcmV0dXJuITE7dmFyIGxlPUcuc2xpY2UoVS5wbGFjZSxpZStVLnBsYWNlKTtpZigwPT09bmVbMF0pe2lmKCEoMTI4Jm5lWzFdKSlyZXR1cm4hMTtuZT1uZS5zbGljZSgxKX1pZigwPT09bGVbMF0pe2lmKCEoMTI4JmxlWzFdKSlyZXR1cm4hMTtsZT1sZS5zbGljZSgxKX1yZXR1cm4g''@;'; put 'put ''dGhpcy5yPW5ldyBLKG5lKSx0aGlzLnM9bmV3IEsobGUpLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEwfSxSLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihHKXt2YXIgVz10aGlzLnIudG9BcnJheSgpLFU9dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JldbMF0mJihXPVswXS5jb25jYXQoVykp''@;'; put 'put ''LDEyOCZVWzBdJiYoVT1bMF0uY29uY2F0KFUpKSxXPWooVyksVT1qKFUpOyEoVVswXXx8MTI4JlVbMV0pOylVPVUuc2xpY2UoMSk7dmFyIHE9WzJdO1YocSxXLmxlbmd0aCksKHE9cS5jb25jYXQoVykpLnB1c2goMiksVihxLFUubGVuZ3RoKTt2YXIgdGU9cS5jb25jYXQoVSksbmU9WzQ4XTty''@;'; put 'put ''ZXR1cm4gVihuZSx0ZS5sZW5ndGgpLG5lPW5lLmNvbmNhdCh0ZSksSi5lbmNvZGUobmUsRyl9fSw1OTgwOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgzNzE1KSxKPUwoNTQyNyksST1MKDk1MyksUj1JLmFzc2VydCxFPUkucGFyc2VCeXRlcyx6PUwoOTA4Nyksaj1MKDM2MjIpO2Z1''@;'; put 'put ''bmN0aW9uIFYoRyl7aWYoUigiZWQyNTUxOSI9PT1HLCJvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyIiksISh0aGlzIGluc3RhbmNlb2YgVikpcmV0dXJuIG5ldyBWKEcpO3RoaXMuY3VydmU9Rz1KW0ddLmN1cnZlLHRoaXMuZz1HLmcsdGhpcy5nLnByZWNvbXB1dGUoRy5uLmJpdExl''@;'; put 'put ''bmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz1HLnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwoRy5uLmJpdExlbmd0aCgpLzgpLHRoaXMuaGFzaD1LLnNoYTUxMn1ILmV4cG9ydHM9VixWLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKEcsVyl7Rz1FKEcp''@;'; put 'put ''O3ZhciBVPXRoaXMua2V5RnJvbVNlY3JldChXKSxxPXRoaXMuaGFzaEludChVLm1lc3NhZ2VQcmVmaXgoKSxHKSx0ZT10aGlzLmcubXVsKHEpLG5lPXRoaXMuZW5jb2RlUG9pbnQodGUpLGllPXRoaXMuaGFzaEludChuZSxVLnB1YkJ5dGVzKCksRykubXVsKFUucHJpdigpKSxsZT1xLmFkZChp''@;'; put 'put ''ZSkudW1vZCh0aGlzLmN1cnZlLm4pO3JldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoe1I6dGUsUzpsZSxSZW5jb2RlZDpuZX0pfSxWLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oRyxXLFUpe0c9RShHKSxXPXRoaXMubWFrZVNpZ25hdHVyZShXKTt2YXIgcT10aGlzLmtleUZyb21QdWJsaWMo''@;'; put 'put ''VSksdGU9dGhpcy5oYXNoSW50KFcuUmVuY29kZWQoKSxxLnB1YkJ5dGVzKCksRyksbmU9dGhpcy5nLm11bChXLlMoKSk7cmV0dXJuIFcuUigpLmFkZChxLnB1YigpLm11bCh0ZSkpLmVxKG5lKX0sVi5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2YXIgRz10aGlzLmhhc2goKSxX''@;'; put 'put ''PTA7Vzxhcmd1bWVudHMubGVuZ3RoO1crKylHLnVwZGF0ZShhcmd1bWVudHNbV10pO3JldHVybiBJLmludEZyb21MRShHLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LFYucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oRyl7cmV0dXJuIHouZnJvbVB1YmxpYyh0aGlzLEcp''@;'; put 'put ''fSxWLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKEcpe3JldHVybiB6LmZyb21TZWNyZXQodGhpcyxHKX0sVi5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihHKXtyZXR1cm4gRyBpbnN0YW5jZW9mIGo/RzpuZXcgaih0aGlzLEcpfSxWLnByb3RvdHlwZS5lbmNvZGVQ''@;'; put 'put ''b2ludD1mdW5jdGlvbihHKXt2YXIgVz1HLmdldFkoKS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIFdbdGhpcy5lbmNvZGluZ0xlbmd0aC0xXXw9Ry5nZXRYKCkuaXNPZGQoKT8xMjg6MCxXfSxWLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihHKXt2YXIg''@;'; put 'put ''Vz0oRz1JLnBhcnNlQnl0ZXMoRykpLmxlbmd0aC0xLFU9Ry5zbGljZSgwLFcpLmNvbmNhdCgtMTI5JkdbV10pLHE9MCE9KDEyOCZHW1ddKSx0ZT1JLmludEZyb21MRShVKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHRlLHEpfSxWLnByb3RvdHlwZS5lbmNvZGVJbnQ9ZnVuY3Rpb24o''@;'; put 'put ''Ryl7cmV0dXJuIEcudG9BcnJheSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpfSxWLnByb3RvdHlwZS5kZWNvZGVJbnQ9ZnVuY3Rpb24oRyl7cmV0dXJuIEkuaW50RnJvbUxFKEcpfSxWLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uKEcpe3JldHVybiBHIGluc3RhbmNlb2YgdGhpcy5wb2lu''@;'; put 'put ''dENsYXNzfX0sOTA4NzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTUzKSxKPUsuYXNzZXJ0LEk9Sy5wYXJzZUJ5dGVzLFI9Sy5jYWNoZWRQcm9wZXJ0eTtmdW5jdGlvbiBFKHosail7dGhpcy5lZGRzYT16LHRoaXMuX3NlY3JldD1JKGouc2VjcmV0KSx6LmlzUG9pbnQoai5wdWIp''@;'; put 'put ''P3RoaXMuX3B1Yj1qLnB1Yjp0aGlzLl9wdWJCeXRlcz1JKGoucHViKX1FLmZyb21QdWJsaWM9ZnVuY3Rpb24oeixqKXtyZXR1cm4gaiBpbnN0YW5jZW9mIEU/ajpuZXcgRSh6LHtwdWI6an0pfSxFLmZyb21TZWNyZXQ9ZnVuY3Rpb24oeixqKXtyZXR1cm4gaiBpbnN0YW5jZW9mIEU/ajpuZXcg''@;'; put 'put ''RSh6LHtzZWNyZXQ6an0pfSxFLnByb3RvdHlwZS5zZWNyZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VjcmV0fSxSKEUsInB1YkJ5dGVzIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpfSksUihFLCJwdWIiLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3B1YkJ5dGVzP3RoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpOnRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpfSksUihFLCJwcml2Qnl0ZXMiLGZ1bmN0aW9uKCl7dmFyIHo9dGhpcy5lZGRzYSxqPXRoaXMuaGFzaCgpLFY9ei5lbmNvZGluZ0xlbmd0aC0x''@;'; put 'put ''LEc9ai5zbGljZSgwLHouZW5jb2RpbmdMZW5ndGgpO3JldHVybiBHWzBdJj0yNDgsR1tWXSY9MTI3LEdbVl18PTY0LEd9KSxSKEUsInByaXYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpfSksUihFLCJoYXNoIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCl9KSxSKEUsIm1lc3NhZ2VQcmVmaXgiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpfSksRS5wcm90b3R5cGUuc2lnbj1mdW5jdGlv''@;'; put 'put ''bih6KXtyZXR1cm4gSih0aGlzLl9zZWNyZXQsIktleVBhaXIgY2FuIG9ubHkgdmVyaWZ5IiksdGhpcy5lZGRzYS5zaWduKHosdGhpcyl9LEUucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih6LGope3JldHVybiB0aGlzLmVkZHNhLnZlcmlmeSh6LGosdGhpcyl9LEUucHJvdG90eXBlLmdldFNl''@;'; put 'put ''Y3JldD1mdW5jdGlvbih6KXtyZXR1cm4gSih0aGlzLl9zZWNyZXQsIktleVBhaXIgaXMgcHVibGljIG9ubHkiKSxLLmVuY29kZSh0aGlzLnNlY3JldCgpLHopfSxFLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oeil7cmV0dXJuIEsuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSx6KX0sSC5l''@;'; put 'put ''eHBvcnRzPUV9LDM2MjI6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDM3ODUpLEo9TCg5NTMpLEk9Si5hc3NlcnQsUj1KLmNhY2hlZFByb3BlcnR5LEU9Si5wYXJzZUJ5dGVzO2Z1bmN0aW9uIHooaixWKXt0aGlzLmVkZHNhPWosIm9iamVjdCIhPXR5cGVvZiBWJiYoVj1FKFYpKSxB''@;'; put 'put ''cnJheS5pc0FycmF5KFYpJiYoVj17UjpWLnNsaWNlKDAsai5lbmNvZGluZ0xlbmd0aCksUzpWLnNsaWNlKGouZW5jb2RpbmdMZW5ndGgpfSksSShWLlImJlYuUywiU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTIiksai5pc1BvaW50KFYuUikmJih0aGlzLl9SPVYuUiksVi5TIGluc3RhbmNlb2Yg''@;'; put 'put ''SyYmKHRoaXMuX1M9Vi5TKSx0aGlzLl9SZW5jb2RlZD1BcnJheS5pc0FycmF5KFYuUik/Vi5SOlYuUmVuY29kZWQsdGhpcy5fU2VuY29kZWQ9QXJyYXkuaXNBcnJheShWLlMpP1YuUzpWLlNlbmNvZGVkfVIoeiwiUyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhp''@;'; put 'put ''cy5TZW5jb2RlZCgpKX0pLFIoeiwiUiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpfSksUih6LCJSZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSl9KSxSKHosIlNlbmNvZGVk''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSx6LnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKX0sei5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSi5lbmNvZGUodGhpcy50b0J5dGVzKCksImhleCIpLnRvVXBwZXJDYXNlKCl9LEguZXhwb3J0cz16fSwxMDM3Okg9PntILmV4cG9ydHM9e2RvdWJsZXM6e3N0ZXA6NCxwb2ludHM6W1siZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUy''@;'; put 'put ''YTZkZWMwYSIsImY3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEiXSxbIjgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgiLCIxMWY4YTgwOTg1NTdkZmU0NWU4''@;'; put 'put ''MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmIl0sWyIxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5IiwiZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVj''@;'; put 'put ''NmVmYTZmZmVlOWZlZDY5NSJdLFsiMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MCIsIjRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSJdLFsiOGI0YjVmMTY1''@;'; put 'put ''ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYyIsIjRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYiXSxbIjcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRi''@;'; put 'put ''ZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEiLCI5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmIl0sWyJlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhIiwi''@;'; put 'put ''NWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSJdLFsiMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCIsImNkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkw''@;'; put 'put ''NjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDkiXSxbImUxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQiLCI5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0''@;'; put 'put ''NTZhMDBkIl0sWyJmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkIiwiZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCJdLFsiZGE2N2E5MWQ5MTA0OWNkY2Iz''@;'; put 'put ''NjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMSIsIjliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQiXSxbIjUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5''@;'; put 'put ''ZjU3NTQ1Y2NjMWEzN2I3YzAiLCI1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4Il0sWyI4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3IiwiMTBiNzc3MGIy''@;'; put 'put ''YTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSJdLFsiMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MiIsIjI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRl''@;'; put 'put ''ZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMiXSxbIjZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNyIsIjdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAiXSxb''@;'; put 'put ''IjMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmQiLCI1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwIl0sWyI4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2''@;'; put 'put ''NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzIiwiN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNiJdLFsiOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYw''@;'; put 'put ''YzgyYTBhIiwiNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSJdLFsiNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOCIsImJjMmRhODJiNmZhNWI1NzFhN2Yw''@;'; put 'put ''OTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTciXSxbImU1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQiLCI0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBl''@;'; put 'put ''MGU1ZGM4NDFkNzU1YmRhIl0sWyJlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1IiwiN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCJdLFsiMjEzYzdhNzE1''@;'; put 'put ''Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NCIsIjRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjIiXSxbIjRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4Mzhj''@;'; put 'put ''NzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MiLCIxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2Il0sWyJmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2Iiwi''@;'; put 'put ''NmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZiJdLFsiNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOSIsImM5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFm''@;'; put 'put ''MGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEiXSxbImM3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEiLCI4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5''@;'; put 'put ''OWE4NGMzIl0sWyJkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiIiwiZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZiJdLFsiYjhkYTk0MDMyYTk1NzUxOGVi''@;'; put 'put ''MGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwMyIsIjI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTciXSxbImU4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5''@;'; put 'put ''MmYxYTExNzc4ZTNjMGRmNWQiLCJlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4Il0sWyJhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwIiwiNzM3MGY5MWNm''@;'; put 'put ''YjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSJdLFsiOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNCIsImU1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFi''@;'; put 'put ''ZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCJdLFsiOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYSIsIjY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODIiXSxb''@;'; put 'put ''ImU0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEiLCIxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjIl0sWyI4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVh''@;'; put 'put ''NDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllIiwiZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YiJdLFsiZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2''@;'; put 'put ''MGNiM2U0MSIsIjJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEiXSxbImI2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYiLCI2N2M4NzZkMDZmM2UwNmRlMWRh''@;'; put 'put ''ZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUiXSxbImQ2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZTgiLCJkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEy''@;'; put 'put ''OTRjODQyNjZiMTMzMTIwIl0sWyIzMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkIiwiNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCJdLFsiNGRmOWMxNDkx''@;'; put 'put ''OWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NiIsIjM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkIl0sWyI5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1''@;'; put 'put ''NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkIiwiZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCJdLFsiNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNSIsIjlh''@;'; put 'put ''MWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgiXSxbImE1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYiLCI0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgy''@;'; put 'put ''YzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4Il0sWyI3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxIiwiMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlm''@;'; put 'put ''NDNhYyJdLFsiOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjIiwiYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZiJdLFsiODVkMGZlZjNlYzZkYjEwOTM5OTA2''@;'; put 'put ''NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MSIsIjFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjIiXSxbImZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhm''@;'; put 'put ''NTQwNDgyNDUyNjA4N2UiLCI0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3Il0sWyI4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxIiwiYzYwZjljOTIzYzcy''@;'; put 'put ''N2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYyJdLFsiZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMyIsImJlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVm''@;'; put 'put ''MTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QiXSxbImU0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGYiLCI0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0Il0sWyIx''@;'; put 'put ''ZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5IiwiYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCJdLFsiMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZh''@;'; put 'put ''OGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZSIsImIzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAiXSxbImZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4''@;'; put 'put ''MGVlZjkiLCI2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExIl0sWyJkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyIiwiODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3''@;'; put 'put ''NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSJdLFsiYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMyIsIjdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNl''@;'; put 'put ''ZjdjNzMxMTFmNGNjMGMiXSxbIjE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2MiLCJjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczIl0sWyI5NTkzOTY5ODE5''@;'; put 'put ''NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhIiwiMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCJdLFsiZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQz''@;'; put 'put ''ZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MSIsImU4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUiXSxbIjY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzMiLCJk''@;'; put 'put ''OTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5Il0sWyI4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4IiwiMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2Iy''@;'; put 'put ''Y2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSJdLFsiMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YiIsIjY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2''@;'; put 'put ''ZWNjMjciXSxbImJjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjYiLCJkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEiXSxbIjhjMjhhOTdiZjgyOThiYzBkMjNk''@;'; put 'put ''OGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEiLCI0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyIl0sWyI4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4''@;'; put 'put ''YzRiYTExMWZhY2NhZTAiLCI2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1Il0sWyJkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3IiwiN2ExODhmYTM1MjBl''@;'; put 'put ''MzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MyJdLFsiZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZSIsImVhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIx''@;'; put 'put ''ODUxNjE3NTI2YWU0N2E5Yzc3YmZjODIiXV19LG5hZjp7d25kOjcscG9pbnRzOltbImY5MzA4YTAxOTI1OGMzMTA0OTM0NGY4NWY4OWQ1MjI5YjUzMWM4NDU4MzZmOTliMDg2MDFmMTEzYmNlMDM2ZjkiLCIzODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2''@;'; put 'put ''Y2I5ZmQ3NTg0YjhlNjcyIl0sWyIyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0IiwiZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNiJdLFsiNWNiZGYwNjQ2''@;'; put 'put ''ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYyIsIjZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGEiXSxbImFjZDQ4NGUyZjBjN2Y2NTMwOWFkMTc4YTlmNTU5YWJkZTA5Nzk2''@;'; put 'put ''OTc0YzU3ZTcxNGMzNWYxMTBkZmMyN2NjYmUiLCJjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3Il0sWyI3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiIiwi''@;'; put 'put ''ZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYiJdLFsiZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCIsImFiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFm''@;'; put 'put ''NDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MSJdLFsiZDc5MjRkNGY3ZDQzZWE5NjVhNDY1YWUzMDk1ZmY0MTEzMWU1OTQ2ZjNjODVmNzllNDRhZGJjZjhlMjdlMDgwZSIsIjU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZh''@;'; put 'put ''MjZiNTgiXSxbImRlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzQiLCI0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3Il0sWyIyYjRlYTBhNzk3YTQ0M2QyOTNl''@;'; put 'put ''ZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjIiwiODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YSJdLFsiMzUyYmJmNGE0Y2RkMTI1NjRmOTNmYTMzMmNlMzMzMzAxZDlhZDQwMjcxZjgxMDcx''@;'; put 'put ''ODEzNDBhZWYyNWJlNTlkNSIsIjMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMiXSxbIjJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2YiLCIyZGUxMDY4Mjk1''@;'; put 'put ''ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjciXSxbIjkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQiLCI3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJh''@;'; put 'put ''ODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyIl0sWyJkYWVkNGYyYmUzYThiZjI3OGU3MDEzMmZiMGJlYjc1MjJmNTcwZTE0NGJmNjE1YzA3ZTk5NmQ0NDNkZWU4NzI5IiwiYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NSJdLFsi''@;'; put 'put ''YzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYiIsIjIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODIiXSxbIjZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYw''@;'; put 'put ''ODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQiLCJlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyIl0sWyIxNjk3ZmZhNmZkOWRlNjI3YzA3N2UzZDJmZTU0MTA4NGNlMTMzMDBiMGJlYzExNDZmOTVhZTU3ZjBk''@;'; put 'put ''MGJkNmE1IiwiYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NiJdLFsiNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OSIsIjI5NzJkMmRlNGY4ZDIwNjgxYTc4''@;'; put 'put ''ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OSJdLFsiNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCIsIjgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1''@;'; put 'put ''ZjU2NDI0ODNiMjVlYWYiXSxbIjgwYzYwYWQwMDQwZjI3ZGFkZTViNGIwNmM0MDhlNTZiMmM1MGU5ZjU2YjliOGI0MjVlNTU1YzJmODYzMDhiNmYiLCIxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhIl0sWyI3YTkzNzVhZDYx''@;'; put 'put ''NjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiIiwiZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3Il0sWyJkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMz''@;'; put 'put ''OWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5IiwiZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzMyJdLFsiNDkzNzBhNGI1ZjQzNDEyZWEyNWY1MTRlOGVjZGFkMDUyNjYxMTVlNGE3ZWNiMTM4NzIzMTgwOGY4YjQ1OTYzIiwiNzU4''@;'; put 'put ''ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YSJdLFsiNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NCIsIjk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4''@;'; put 'put ''OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYiXSxbImYyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAiLCJlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2Ez''@;'; put 'put ''YzM3Il0sWyI0NjNiM2Q5ZjY2MjYyMWZiMWI0YmU4ZmJiZTI1MjAxMjVhMjE2Y2RmYzlkYWUzZGViY2JhNDg1MGM2OTBkNDViIiwiNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZSJdLFsiZjE2ZjgwNDI0NGU0NmUyYTA5MjMy''@;'; put 'put ''ZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0NyIsImNlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYiXSxbImNhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2''@;'; put 'put ''OWUxNWY3MTUxZDQxZDEiLCJjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2Il0sWyIyNjAwY2E0YjI4MmNiOTg2Zjg1ZDBmMTcwOTk3OWQ4YjQ0YTA5YzA3Y2I4NmQ3YzEyNDQ5N2JjODZmMDgyMTIwIiwiNDExOWI4ODc1M2Mx''@;'; put 'put ''NWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCJdLFsiNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNSIsIjkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1''@;'; put 'put ''NzA0OGJhZDllNzZmMzAyYzViOWM2MSJdLFsiNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCIsIjY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4MyJdLFsiZTNl''@;'; put 'put ''NmJkMTA3MWExZTk2YWZmNTc4NTljODJkNTcwZjAzMzA4MDA2NjFkMWM5NTJmOWZlMjY5NDY5MWQ5YjllOCIsIjU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUiXSxbIjE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1''@;'; put 'put ''YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWIiLCIzYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiIl0sWyJkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5''@;'; put 'put ''NjNmIiwiNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxNyJdLFsiNWVkZDVjYzIzYzUxZTg3YTQ5N2NhODE1ZDVkY2UwZjhhYjUyNTU0Zjg0OWVkODk5NWRlNjRjNWYzNGNlNzE0MyIsImVmYWU5YzhkYmMxNDEzMDY2MWU4Y2Vj''@;'; put 'put ''MDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgiXSxbIjI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmEiLCJlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAw''@;'; put 'put ''M2FmZDQxOTQzZTdhIl0sWyJhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1IiwiZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNiJdLFsiNzY2ZGJiMjRkMTM0''@;'; put 'put ''ZTc0NWNjY2FhMjhjOTliZjI3NDkwNmJiNjZiMjZkY2Y5OGRmOGQyZmVkNTBkODg0MjQ5YSIsIjc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYiXSxbIjU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2''@;'; put 'put ''YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2UiLCJjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlIl0sWyJmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4IiwiZTEz''@;'; put 'put ''ODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZCJdLFsiNzc1NGI0ZmEwZThhY2VkMDZkNDE2N2EyYzU5Y2NhNGNkYTE4NjljMDZlYmFkZmI2NDg4NTUwMDE1YTg4NTIyYyIsIjMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZh''@;'; put 'put ''OGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTIiXSxbIjk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTkiLCJlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdk''@;'; put 'put ''NTdlIl0sWyI3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiIiwiMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzNyJdLFsiMzUxNDA4NzgzNDk2NGI1NGIxNWIx''@;'; put 'put ''NjA2NDRkOTE1NDg1YTE2OTc3MjI1Yjg4NDdiYjBkZDA4NTEzN2VjNDdjYSIsImVmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEiXSxbImQzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQy''@;'; put 'put ''OTQzZDNmN2I1MjdlYWYiLCI4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0Il0sWyIxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwIiwiNjg2NTFjZjliNmRh''@;'; put 'put ''OTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NSJdLFsiNzMzY2U4MGRhOTU1YThhMjY5MDJjOTU2MzNlNjJhOTg1MTkyNDc0YjVhZjIwN2RhNmRmN2I0ZmQ1ZmM2MWNkNCIsImY1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAy''@;'; put 'put ''MDFlNDU3OGM1NDY3M2JjMWRjNWVhMWQiXSxbIjE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWMiLCJkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkIl0sWyJh''@;'; put 'put ''MWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwIiwiZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOSJdLFsiZTIyZmJlMTVjMGFmOGNjYzU3ODBjMDczNWY4NGRi''@;'; put 'put ''ZTlhNzkwYmFkZWU4MjQ1YzA2YzdjYTM3MzMxY2IzNjk4MCIsImE4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNiJdLFsiMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNm''@;'; put 'put ''YTliMyIsIjY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQiXSxbIjM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYiLCI5NDE0Njg1ZTk3YjFiNTk1NGJkNDZm''@;'; put 'put ''NzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWUiXSxbImYyMTllYTVkNmI1NDcwMWMxYzE0ZGU1YjU1N2ViNDJhOGQxM2YzYWJiY2QwOGFmZmNjMmE1ZTZiMDQ5YjhkNjMiLCI0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMy''@;'; put 'put ''OTYyYTQwMDc2NmQxIl0sWyJkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4IiwiZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYiJdLFsiMzJkMzFjMjIyZjhm''@;'; put 'put ''NmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZiIsIjVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjEiXSxbIjc0NjFmMzcxOTE0YWIzMjY3MTA0NWExNTVkOTgzMWVhODc5M2Q3N2Nk''@;'; put 'put ''NTk1OTJjNDM0MGY4NmNiYzE4MzQ3YjUiLCI4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2Il0sWyJlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2IiwiOGRj''@;'; put 'put ''MjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZSJdLFsiMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNSIsIjVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEz''@;'; put 'put ''OWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGQiXSxbImVhYTVmOTgwYzI0NWY2ZjAzODk3ODI5MGFmYTcwYjZiZDg4NTU4OTdmOThiNmFhNDg1Yjk2MDY1ZDUzN2JkOTkiLCJmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMw''@;'; put 'put ''N2RjIl0sWyI3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTEiLCJmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0Il0sWyI0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4''@;'; put 'put ''Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1IiwiNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyYyJdLFsiYTU5OGE4MDMwZGE2ZDg2YzZiYzdmMmY1MTQ0ZWE1NDlkMjgyMTFlYTU4ZmFhNzBlYmY0''@;'; put 'put ''YzFlNjY1YzFmZTliNSIsIjIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmIiXSxbImM0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTciLCI0ZjE0MzUxZDAwODdl''@;'; put 'put ''ZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMiXSxbIjg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEiLCI3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRj''@;'; put 'put ''MTY5Y2U3YTM2ZGUwMWE4ZDYxNTQiXSxbIjVlOTViYjM5OWE2OTcxZDM3NjAyNjk0N2Y4OWJkZTJmMjgyYjMzODEwOTI4YmU0ZGVkMTEyYWM0ZDcwZTIwZDUiLCIzOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1Il0sWyIzNmU0''@;'; put 'put ''NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2IiwiZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYyJdLFsiMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1''@;'; put 'put ''NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2IiwiZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNCJdLFsiOGFiODk4MTZkYWRmZDZiNmExZjI2MzRmY2YwMGVjODQwMzc4MTAyNWVkNjg5MGM0ODQ5NzQyNzA2YmQ0M2Vk''@;'; put 'put ''ZSIsIjZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUiXSxbIjFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTQiLCI2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThk''@;'; put 'put ''MjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYiXSxbIjg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEiLCIzZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNj''@;'; put 'put ''MzVlOTk5NTExIl0sWyIyOWRmOWZiZDhkOWU0NjUwOTI3NWY0YjEyNWQ2ZDQ1ZDdmYmU5YTNiODc4YTdhZjg3MmEyODAwNjYxYWM1ZjUxIiwiYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiIl0sWyJhMGIxY2FlMDZiMGE4NDdh''@;'; put 'put ''M2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyIiwiYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMiJdLFsiNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNl''@;'; put 'put ''NGJhMTEzZjJlNGMwZTEyMWU1IiwiY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzYyJdLFsiZDI0YTQ0ZTA0N2UxOWI2ZjVhZmI4MWM3Y2EyZjY5MDgwYTUwNzY2ODlhMDEwOTE5ZjQyNzI1YzJiNzg5YTMzYiIsIjZmYjhkNTU5''@;'; put 'put ''MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMiXSxbImVhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDQiLCIzMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0''@;'; put 'put ''OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkIl0sWyJhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmIiwiNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMCJd''@;'; put 'put ''LFsiZTNhZTE5NzQ1NjZjYTA2Y2M1MTZkNDdlMGZiMTY1YTY3NGEzZGFiY2ZjYTE1ZTcyMmYwZTM0NTBmNDU4ODkiLCIyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0Il0sWyI1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQx''@;'; put 'put ''ZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2IiwiYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NiJdLFsiMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1''@;'; put 'put ''NWI1Mjk4NCIsIjk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTQiXSxbIjNjNWQyYTFiYTM5YzVhMTc5MDAwMDczOGM5ZTBjNDBiOGRjZGZkNTQ2ODc1NGI2NDA1NTQwMTU3ZTAxN2FhN2EiLCJiMjI4NDI3OTk5NWEzNGUyZjlk''@;'; put 'put ''NGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3Il0sWyJjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwIiwiYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRl''@;'; put 'put ''OTQwYjc0ZTNhYzFmMWIxMyJdLFsiYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NyIsIjZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTYiXSxbImMxNGY4ZjJj''@;'; put 'put ''Y2IyN2Q2ZjEwOWY2ZDA4ZDAzY2M5NmE2OWJhOGMzNGVlYzA3YmJjZjU2NmQ0OGUzM2RhNjU5MyIsImMzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgiXSxbImE2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5''@;'; put 'put ''ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWYiLCIyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYiXSxbIjM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgiLCI2''@;'; put 'put ''MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4Il0sWyJkYTY1NDVkMjE4MWRiOGQ5ODNmN2RjYjM3NWVmNTg2NmQ0N2M2N2IxYmYzMWM4Y2Y4NTVlZjc0MzdiNzI2NTZhIiwiNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBj''@;'; put 'put ''NWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YSJdLFsiYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMSIsIjVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2Uw''@;'; put 'put ''ZmEyZDQiXSxbIjRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDIiLCI3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3Il0sWyIzNzc1YWI3MDg5YmM2YWY4MjNh''@;'; put 'put ''YmEyZTFhZjcwYjIzNmQyNTFjYWRiMGM4Njc0MzI4NzUyMmExYjNiMGRlZGVhIiwiYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNyJdLFsiY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4''@;'; put 'put ''NDY5NTllM2U4MmY3NGUyNiIsIjhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQiXSxbImI0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYiLCIzOWU1Yzk5MjVi''@;'; put 'put ''NWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhIl0sWyJkNDI2M2RmYzNkMmRmOTIzYTAxNzlhNDg5NjZkMzBjZTg0ZTI1MTVhZmMzZGNjYzFiNzc5MDc3OTJlYmNjNjBlIiwiNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3''@;'; put 'put ''NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCJdLFsiNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNCIsIjI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzciXSxb''@;'; put 'put ''ImRmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEiLCJlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3Il0sWyI2ZDdlZjZiMTc1NDNmODM3M2M1NzNmNDRlMWYz''@;'; put 'put ''ODk4MzVkODliY2JjNjA2MmNlZDM2YzgyZGY4M2I4ZmFlODU5IiwiY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCJdLFsiZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2''@;'; put 'put ''ZTA0NTQxZiIsImY1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUiXSxbImViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMiLCI2Y2I5YTg4NzZkOWNiODUyMDYw''@;'; put 'put ''OWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlIl0sWyIxM2U4N2IwMjdkODUxNGQzNTkzOWYyZTY4OTJiMTk5MjIxNTQ1OTY5NDE4ODgzMzZkYzM1NjNlM2I4ZGJhOTQyIiwiZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmVi''@;'; put 'put ''MjU3MGQ1NTY0NmI4YWRmMSJdLFsiZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YSIsIjFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjIiXSxbImIyNjhmNWVm''@;'; put 'put ''OWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAiLCI1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzIl0sWyJmZjA3ZjMxMThhOWRmMDM1ZTlmYWQ4NWViNmM3YmZlNDJiMDJm''@;'; put 'put ''MDFjYTk5Y2VlYTNiZjdmZmRiYTkzYzQ3NTBkIiwiNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCJdLFsiOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMSIs''@;'; put 'put ''ImNkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgiXSxbIjUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMiLCJjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5''@;'; put 'put ''ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzUiXSxbImU2MmY5NDkwZDNkNTFkYTYzOTVlZmQyNGU4MDkxOWNjN2QwZjI5YzNmM2ZhNDhjNmZmZjU0M2JlY2JkNDMzNTIiLCI2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDlj''@;'; put 'put ''Y2FmYTdkIl0sWyI3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzIiwiY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYyJdLFsiNTA5OGZmMWUxZDlmMTRmYjQ2''@;'; put 'put ''YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCIsIjk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMCJdLFsiMzJiNzhjN2RlOWVlNTEyYTcyODk1YmU2YjljYmVmYTZlMmYzYzRjY2NlNDQ1Yzk2''@;'; put 'put ''YjlmMmM4MWUyNzc4YWQ1OCIsImVlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MiXSxbImUyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjciLCJkM2FhMmVkNzFj''@;'; put 'put ''OWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0Il0sWyI4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4IiwiYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3''@;'; put 'put ''OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZiJdLFsiNDE2MmQ0ODhiODk0MDIwMzliNTg0YzZmYzZjMzA4ODcwNTg3ZDljNDZmNjYwYjg3OGFiNjVjODJjNzExZDY3ZSIsIjY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDkiXSxb''@;'; put 'put ''IjNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2QiLCJjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYiXSxbIjY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQw''@;'; put 'put ''ODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmIiLCIyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1Il0sWyJkMzJmNGRhNTRhZGU3NGFiYjgxYjgxNWFkMWZiM2IyNjNkODJkNmM2OTI3MTRiY2ZmODdkMjliZDVl''@;'; put 'put ''ZTlmMDhmIiwiZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NyJdLFsiMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNiIsIjQ2MmY5YmNlNjE5ODk4NjM4NDk5''@;'; put 'put ''MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2IiXSxbImJlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTciLCI2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBk''@;'; put 'put ''NTU1OGVkNzJkY2NiOWJjIl0sWyI5MzE0NDQyM2FjZTM0NTFlZDI5ZTBmYjlhYzJhZjIxMWNiNmU4NGE2MDFkZjU5OTNjNDE5ODU5ZmZmNWRmMDRhIiwiN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YyJdLFsiYjAxNWY4MDQ0''@;'; put 'put ''ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyYyIsImFiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYiXSxbImQ1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4''@;'; put 'put ''ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTIiLCI0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhIl0sWyJkM2FlNDEwNDdkZDdjYTA2NWRiZjhlZDc3Yjk5MjQzOTk4MzAwNWNkNzJlMTZkNmY5OTZhNTMxNmQzNjk2NmJiIiwi''@;'; put 'put ''YmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NiJdLFsiNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NSIsImJmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUw''@;'; put 'put ''NjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YiXSxbIjc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTciLCI2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1Njdm''@;'; put 'put ''MzJlZDAzIl0sWyI3NGExYWQ2YjVmNzZlMzlkYjJkZDI0OTQxMGVhYzdmOTllNzRjNTljYjgzZDJkMGVkNWZmMTU0M2RhNzcwM2U5IiwiY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCJdLFsiMzA2ODJhNTA3MDMzNzVmNjAy''@;'; put 'put ''ZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhMyIsIjU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgiXSxbIjllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUy''@;'; put 'put ''YjFlZTZjMTM0Nzc2OWVmNTciLCI3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzMiXSxbIjE3NmUyNjk4OWE0M2M5Y2ZlYmE0MDI5YzIwMjUzOGMyODE3MmU1NjZlM2M0ZmNlNzMyMjg1N2YzYmUzMjdkNjYiLCJlZDhjYzlkMDRi''@;'; put 'put ''MjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzIl0sWyI3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4IiwiOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIy''@;'; put 'put ''MTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCJdLFsiODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMSIsIjllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzEiXSxb''@;'; put 'put ''IjFiMzg5MDNhNDNmN2YxMTRlZDQ1MDBiNGVhYzcwODNmZGVmZWNlMWNmMjljNjM1MjhkNTYzNDQ2Zjk3MmMxODAiLCI0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5Il1dfX19LDk1MzooSCxCLEwpPT57InVzZSBzdHJpY3Qi''@;'; put 'put ''O3ZhciBLPUIsSj1MKDM3ODUpLEk9TCg5NzQ2KSxSPUwoNDUwNCk7Sy5hc3NlcnQ9SSxLLnRvQXJyYXk9Ui50b0FycmF5LEsuemVybzI9Ui56ZXJvMixLLnRvSGV4PVIudG9IZXgsSy5lbmNvZGU9Ui5lbmNvZGUsSy5nZXROQUY9ZnVuY3Rpb24oRSx6LGope3ZhciBWPW5ldyBBcnJheShNYXRo''@;'; put 'put ''Lm1heChFLmJpdExlbmd0aCgpLGopKzEpO1YuZmlsbCgwKTtmb3IodmFyIEc9MTw8eisxLFc9RS5jbG9uZSgpLFU9MDtVPFYubGVuZ3RoO1UrKyl7dmFyIHEsdGU9Vy5hbmRsbihHLTEpO1cuaXNPZGQoKT9XLmlzdWJuKHE9dGU+KEc+PjEpLTE/KEc+PjEpLXRlOnRlKTpxPTAsVltVXT1xLFcu''@;'; put 'put ''aXVzaHJuKDEpfXJldHVybiBWfSxLLmdldEpTRj1mdW5jdGlvbihFLHope3ZhciBqPVtbXSxbXV07RT1FLmNsb25lKCksej16LmNsb25lKCk7Zm9yKHZhciBWLEc9MCxXPTA7RS5jbXBuKC1HKT4wfHx6LmNtcG4oLVcpPjA7KXt2YXIgVSxxLHRlPUUuYW5kbG4oMykrRyYzLG5lPXouYW5kbG4o''@;'; put 'put ''MykrVyYzOzM9PT10ZSYmKHRlPS0xKSwzPT09bmUmJihuZT0tMSksVT0xJnRlPzMhPShWPUUuYW5kbG4oNykrRyY3KSYmNSE9PVZ8fDIhPT1uZT90ZTotdGU6MCxqWzBdLnB1c2goVSkscT0xJm5lPzMhPShWPXouYW5kbG4oNykrVyY3KSYmNSE9PVZ8fDIhPT10ZT9uZTotbmU6MCxqWzFdLnB1''@;'; put 'put ''c2gocSksMipHPT09VSsxJiYoRz0xLUcpLDIqVz09PXErMSYmKFc9MS1XKSxFLml1c2hybigxKSx6Lml1c2hybigxKX1yZXR1cm4gan0sSy5jYWNoZWRQcm9wZXJ0eT1mdW5jdGlvbihFLHosail7dmFyIFY9Il8iK3o7RS5wcm90b3R5cGVbel09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09''@;'; put 'put ''dGhpc1tWXT90aGlzW1ZdOnRoaXNbVl09ai5jYWxsKHRoaXMpfX0sSy5wYXJzZUJ5dGVzPWZ1bmN0aW9uKEUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgRT9LLnRvQXJyYXkoRSwiaGV4Iik6RX0sSy5pbnRGcm9tTEU9ZnVuY3Rpb24oRSl7cmV0dXJuIG5ldyBKKEUsImhleCIsImxlIil9fSwz''@;'; put 'put ''Nzg1OmZ1bmN0aW9uKEgsQixMKXshZnVuY3Rpb24oSyxKKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSShnLEMpe2lmKCFnKXRocm93IG5ldyBFcnJvcihDfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFIoZyxDKXtnLnN1cGVyXz1DO3ZhciBNPWZ1bmN0aW9uKCl7fTtNLnByb3RvdHlw''@;'; put 'put ''ZT1DLnByb3RvdHlwZSxnLnByb3RvdHlwZT1uZXcgTSxnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nfWZ1bmN0aW9uIEUoZyxDLE0pe2lmKEUuaXNCTihnKSlyZXR1cm4gZzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09''@;'; put 'put ''ZyYmKCJsZSIhPT1DJiYiYmUiIT09Q3x8KE09QyxDPTEwKSx0aGlzLl9pbml0KGd8fDAsQ3x8MTAsTXx8ImJlIikpfXZhciB6OyJvYmplY3QiPT10eXBlb2YgSz9LLmV4cG9ydHM9RTpKLkJOPUUsRS5CTj1FLEUud29yZFNpemU9MjY7dHJ5e3o9dHlwZW9mIHdpbmRvdzwidSImJnZvaWQgMCE9''@;'; put 'put ''PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDU1NjgpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gaihnLEMpe3ZhciBNPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gTT49NjUmJk08PTcwP00tNTU6TT49OTcmJk08PTEwMj9NLTg3Ok0tNDgmMTV9ZnVuY3Rpb24gVihnLEMsTSl7dmFyIHk9''@;'; put 'put ''aihnLE0pO3JldHVybiBNLTE+PUMmJih5fD1qKGcsTS0xKTw8NCkseX1mdW5jdGlvbiBHKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9TWF0aC5taW4oZy5sZW5ndGgsTSksUT1DO1E8UztRKyspe3ZhciByZT1nLmNoYXJDb2RlQXQoUSktNDg7cCo9eSxwKz1yZT49NDk/cmUtNDkrMTA6cmU+PTE3''@;'; put 'put ''P3JlLTE3KzEwOnJlfXJldHVybiBwfUUuaXNCTj1mdW5jdGlvbihnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1heD1mdW5j''@;'; put 'put ''dGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4wP2c6Q30sRS5taW49ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxNKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxDLE0pO2lm''@;'; put 'put ''KCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdEFycmF5KGcsQyxNKTsiaGV4Ij09PUMmJihDPTE2KSxJKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciB5PTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih5KyssdGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0xKSx5PGcubGVuZ3RoJiYoMTY9PT1DP3RoaXMuX3BhcnNlSGV4KGcseSxNKToodGhpcy5fcGFyc2VCYXNlKGcsQyx5KSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsTSkpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLE0pe2c8MCYm''@;'; put 'put ''KHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEkoZzw5MDA3MTk5''@;'; put 'put ''MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU0mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLE0pfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxNKXtpZihJKCJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHk9MDt5PHRoaXMu''@;'; put 'put ''bGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPTA7dmFyIHAsUyxRPTA7aWYoImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMSxwPTA7eT49MDt5LT0zKXRoaXMud29yZHNbcF18PShTPWdbeV18Z1t5LTFdPDw4fGdbeS0yXTw8MTYpPDxRJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT1TPj4+MjYtUSY2''@;'; put 'put ''NzEwODg2MywoUSs9MjQpPj0yNiYmKFEtPTI2LHArKyk7ZWxzZSBpZigibGUiPT09TSlmb3IoeT0wLHA9MDt5PGcubGVuZ3RoO3krPTMpdGhpcy53b3Jkc1twXXw9KFM9Z1t5XXxnW3krMV08PDh8Z1t5KzJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1RJjY3MTA4''@;'; put 'put ''ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLE0pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2''@;'; put 'put ''YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09MDt2YXIgcCxTPTAsUT0wO2lmKCJiZSI9PT1NKWZvcih5PWcubGVuZ3RoLTE7eT49Qzt5LT0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9''@;'; put 'put ''cD4+PjI2KTpTKz04O2Vsc2UgZm9yKHk9KGcubGVuZ3RoLUMpJTI9PTA/QysxOkM7eTxnLmxlbmd0aDt5Kz0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O3RoaXMuc3RyaXAoKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihnLEMsTSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCxwPTE7cDw9NjcxMDg4NjM7cCo9Qyl5Kys7eS0tLHA9cC9DfDA7Zm9yKHZhciBTPWcubGVuZ3RoLU0sUT1TJXkscmU9TWF0aC5taW4oUyxTLVEpK00sZmU9''@;'; put 'put ''MCxtZT1NO21lPHJlO21lKz15KWZlPUcoZyxtZSxtZSt5LEMpLHRoaXMuaW11bG4ocCksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSk7aWYoMCE9PVEpe3ZhciBrZT0xO2ZvcihmZT1HKGcsbWUsZy5sZW5ndGgsQyksbWU9MDttZTxR''@;'; put 'put ''O21lKyspa2UqPUM7dGhpcy5pbXVsbihrZSksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3Io''@;'; put 'put ''dmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKylnLndvcmRzW0NdPXRoaXMud29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVy''@;'; put 'put ''biB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10''@;'; put 'put ''aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30s''@;'; put 'put ''RS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgVz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0Njcy''@;'; put 'put ''MSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0''@;'; put 'put ''OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdGUoZyxDLE0pe00ubmVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciB5PWcubGVuZ3RoK0MubGVuZ3RofDA7TS5sZW5ndGg9eSx5PXktMXwwO3ZhciBw''@;'; put 'put ''PTB8Zy53b3Jkc1swXSxTPTB8Qy53b3Jkc1swXSxRPXAqUyxmZT1RLzY3MTA4ODY0fDA7TS53b3Jkc1swXT02NzEwODg2MyZRO2Zvcih2YXIgbWU9MTttZTx5O21lKyspe2Zvcih2YXIga2U9ZmU+Pj4yNixUZT02NzEwODg2MyZmZSxQZT1NYXRoLm1pbihtZSxDLmxlbmd0aC0xKSxGZT1NYXRo''@;'; put 'put ''Lm1heCgwLG1lLWcubGVuZ3RoKzEpO0ZlPD1QZTtGZSsrKWtlKz0oUT0ocD0wfGcud29yZHNbbWUtRmV8MF0pKihTPTB8Qy53b3Jkc1tGZV0pK1RlKS82NzEwODg2NHwwLFRlPTY3MTA4ODYzJlE7TS53b3Jkc1ttZV09MHxUZSxmZT0wfGtlfXJldHVybiAwIT09ZmU/TS53b3Jkc1ttZV09MHxm''@;'; put 'put ''ZTpNLmxlbmd0aC0tLE0uc3RyaXAoKX1FLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBNO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe009IiI7Zm9yKHZhciB5PTAscD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIFE9dGhpcy53b3Jkc1tT''@;'; put 'put ''XSxyZT0oMTY3NzcyMTUmKFE8PHl8cCkpLnRvU3RyaW5nKDE2KTtNPTAhPShwPVE+Pj4yNC15JjE2Nzc3MjE1KXx8UyE9PXRoaXMubGVuZ3RoLTE/V1s2LXJlLmxlbmd0aF0rcmUrTTpyZStNLCh5Kz0yKT49MjYmJih5LT0yNixTLS0pfWZvcigwIT09cCYmKE09cC50b1N0cmluZygxNikrTSk7''@;'; put 'put ''TS5sZW5ndGglQyE9MDspTT0iMCIrTTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihNPSItIitNKSxNfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBmZT1VW2ddLG1lPXFbZ107TT0iIjt2YXIga2U9dGhpcy5jbG9uZSgpO2ZvcihrZS5uZWdhdGl2ZT0wOyFrZS5pc1plcm8oKTsp''@;'; put 'put ''e3ZhciBUZT1rZS5tb2RuKG1lKS50b1N0cmluZyhnKTtNPShrZT1rZS5pZGl2bihtZSkpLmlzWmVybygpP1RlK006V1tmZS1UZS5sZW5ndGhdK1RlK019Zm9yKHRoaXMuaXNaZXJvKCkmJihNPSIwIitNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYm''@;'; put 'put ''KE09Ii0iK00pLE19SSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxl''@;'; put 'put ''bmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90''@;'; put 'put ''eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gSSh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3Jl''@;'; put 'put ''dHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT10aGlzLmJ5dGVMZW5ndGgoKSxwPU18fE1hdGgubWF4KDEseSk7SSh5PD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiks''@;'; put 'put ''SShwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgUyxRLHJlPSJsZSI9PT1DLGZlPW5ldyBnKHApLG1lPXRoaXMuY2xvbmUoKTtpZihyZSl7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbUV09''@;'; put 'put ''Uztmb3IoO1E8cDtRKyspZmVbUV09MH1lbHNle2ZvcihRPTA7UTxwLXk7USsrKWZlW1FdPTA7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbcC1RLTFdPVN9cmV0dXJuIGZlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsTT0wO3JldHVybiBDPj00MDk2JiYoTSs9MTMsQz4+Pj0xMyksQz49NjQmJihNKz03LEM+Pj49NyksQz49OCYmKE0rPTQsQz4+Pj00KSxDPj0yJiYoTSs9MixDPj4+PTIpLE0rQ30sRS5wcm90''@;'; put 'put ''b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcpe2lmKDA9PT1nKXJldHVybiAyNjt2YXIgQz1nLE09MDtyZXR1cm4hKDgxOTEmQykmJihNKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKE0rPTcsQz4+Pj03KSwhKDE1JkMpJiYoTSs9NCxDPj4+PTQpLCEoMyZDKSYmKE0rPTIsQz4+Pj0yKSwhKDEm''@;'; put 'put ''QykmJk0rKyxNfSxFLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNa''@;'; put 'put ''ZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1NLDI2IT09TSlicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNl''@;'; put 'put ''aWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRo''@;'; put 'put ''aXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3Io''@;'; put 'put ''dmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVvcihnKX0s''@;'; put 'put ''RS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCku''@;'; put 'put ''aXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlzKX0sRS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dJmcud29yZHNbTV07cmV0''@;'; put 'put ''dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90''@;'; put 'put ''b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsTTt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLE09Zyk6KEM9ZyxNPXRoaXMpO2Zvcih2YXIgeT0wO3k8TS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09Qy53b3Jkc1t5XV5NLndvcmRzW3ldO2lmKHRoaXMhPT1DKWZvcig7eTxDLmxl''@;'; put 'put ''bmd0aDt5KyspdGhpcy53b3Jkc1t5XT1DLndvcmRzW3ldO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJv''@;'; put 'put ''dG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5p''@;'; put 'put ''dXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhpcyl9LEUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxNPWclMjY7dGhpcy5fZXhwYW5kKEMpLE0+MCYmQy0tO2Zvcih2YXIgeT0wO3k8Qzt5Kysp''@;'; put 'put ''dGhpcy53b3Jkc1t5XT02NzEwODg2MyZ+dGhpcy53b3Jkc1t5XTtyZXR1cm4gTT4wJiYodGhpcy53b3Jkc1t5XT1+dGhpcy53b3Jkc1t5XSY2NzEwODg2Mz4+MjYtTSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4o''@;'; put 'put ''Zyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZyxDKXtJKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIE09Zy8yNnwwLHk9ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXT1DP3RoaXMud29yZHNbTV18MTw8eTp0aGlzLndvcmRzW01dJn4oMTw8eSks''@;'; put 'put ''dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcpe3ZhciBDLE0seTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYo''@;'; put 'put ''MD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJldHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIHA9MCxTPTA7Uzx5Lmxl''@;'; put 'put ''bmd0aDtTKyspdGhpcy53b3Jkc1tTXT02NzEwODg2MyYoQz0oMHxNLndvcmRzW1NdKSsoMHx5LndvcmRzW1NdKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZTPE0ubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMu''@;'; put 'put ''bGVuZ3RoPU0ubGVuZ3RoLDAhPT1wKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE0hPT10aGlzKWZvcig7UzxNLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1NLndvcmRzW1NdO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7''@;'; put 'put ''dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5u''@;'; put 'put ''ZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0seSxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztwPjA/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIFM9MCxRPTA7UTx5Lmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKS0oMHx5LndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZD''@;'; put 'put ''O2Zvcig7MCE9PVMmJlE8TS5sZW5ndGg7USsrKVM9KEM9KDB8TS53b3Jkc1tRXSkrUyk+PjI2LHRoaXMud29yZHNbUV09NjcxMDg4NjMmQztpZigwPT09UyYmUTxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtRPE0ubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPU0ud29yZHNbUV07cmV0dXJuIHRo''@;'; put 'put ''aXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFEpLE0hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBuZT1mdW5jdGlvbihnLEMsTSl7dmFyIHkscCxT''@;'; put 'put ''LFE9Zy53b3JkcyxyZT1DLndvcmRzLGZlPU0ud29yZHMsbWU9MCxrZT0wfFFbMF0sVGU9ODE5MSZrZSxQZT1rZT4+PjEzLEZlPTB8UVsxXSxOZT04MTkxJkZlLExlPUZlPj4+MTMsQmU9MHxRWzJdLEhlPTgxOTEmQmUsUWU9QmU+Pj4xMyxtdD0wfFFbM10sS2U9ODE5MSZtdCx3ZT1tdD4+PjEz''@;'; put 'put ''LEllPTB8UVs0XSxPZT04MTkxJkllLGV0PUllPj4+MTMsbnQ9MHxRWzVdLHFlPTgxOTEmbnQsaHQ9bnQ+Pj4xMyxFZT0wfFFbNl0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8UVs3XSxjdD04MTkxJmF0LE90PWF0Pj4+MTMsUHQ9MHxRWzhdLEF0PTgxOTEmUHQsSnQ9UHQ+Pj4xMyxtbj0w''@;'; put 'put ''fFFbOV0sTnQ9ODE5MSZtbixibj1tbj4+PjEzLEduPTB8cmVbMF0sb249ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8cmVbMV0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8cmVbMl0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8cmVbM10sVnQ9ODE5MSZfdCxfbj1fdD4+PjEzLG90PTB8''@;'; put 'put ''cmVbNF0sSXQ9ODE5MSZvdCxubj1vdD4+PjEzLER0PTB8cmVbNV0sdnQ9ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8cmVbNl0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8cmVbN10sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8cmVbOF0scXQ9ODE5MSZGbixIbj1Gbj4+PjEzLGlpPTB8''@;'; put 'put ''cmVbOV0sY249ODE5MSZpaSxqbj1paT4+PjEzO00ubmVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPTE5O3ZhciBYcj0obWUrKHk9TWF0aC5pbXVsKFRlLG9uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChUZSwkbikpK01hdGguaW11bChQZSxvbil8MCkpPDwxMyl8''@;'; put 'put ''MDttZT0oKFM9TWF0aC5pbXVsKFBlLCRuKSkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE5lLG9uKSxwPShwPU1hdGguaW11bChOZSwkbikpK01hdGguaW11bChMZSxvbil8MCxTPU1hdGguaW11bChMZSwkbik7dmFyIHZpPShtZSsoeT15K01hdGgu''@;'; put 'put ''aW11bChUZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLHBuKXwwKStNYXRoLmltdWwoUGUscHQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLHBuKXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4NjMseT1NYXRoLmltdWwoSGUsb24p''@;'; put 'put ''LHA9KHA9TWF0aC5pbXVsKEhlLCRuKSkrTWF0aC5pbXVsKFFlLG9uKXwwLFM9TWF0aC5pbXVsKFFlLCRuKSx5PXkrTWF0aC5pbXVsKE5lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUscG4pfDApK01hdGguaW11bChMZSxwdCl8MCxTPVMrTWF0aC5pbXVsKExlLHBuKXwwO3ZhciBFcj0obWUr''@;'; put 'put ''KHk9eStNYXRoLmltdWwoVGUsQ3QpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxlbil8MCkrTWF0aC5pbXVsKFBlLEN0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxlbil8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9TWF0aC5p''@;'; put 'put ''bXVsKEtlLG9uKSxwPShwPU1hdGguaW11bChLZSwkbikpK01hdGguaW11bCh3ZSxvbil8MCxTPU1hdGguaW11bCh3ZSwkbikseT15K01hdGguaW11bChIZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLHBuKXwwKStNYXRoLmltdWwoUWUscHQpfDAsUz1TK01hdGguaW11bChRZSxwbil8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKE5lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsZW4pfDApK01hdGguaW11bChMZSxDdCl8MCxTPVMrTWF0aC5pbXVsKExlLGVuKXwwO3ZhciBZaT0obWUrKHk9eStNYXRoLmltdWwoVGUsVnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxfbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKFBlLFZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxfbil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE9lLG9uKSxwPShwPU1hdGguaW11bChPZSwkbikpK01hdGguaW11bChldCxvbil8MCxTPU1hdGguaW11''@;'; put 'put ''bChldCwkbikseT15K01hdGguaW11bChLZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsUz1TK01hdGguaW11bCh3ZSxwbil8MCx5PXkrTWF0aC5pbXVsKEhlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsZW4pfDApK01hdGguaW11bChRZSxD''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKFFlLGVuKXwwLHk9eStNYXRoLmltdWwoTmUsVnQpfDAscD0ocD1wK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwLFM9UytNYXRoLmltdWwoTGUsX24pfDA7dmFyIEpyPShtZSsoeT15K01hdGguaW11bChUZSxJdCl8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKFRlLG5uKXwwKStNYXRoLmltdWwoUGUsSXQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLG5uKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwocWUsb24pLHA9KHA9TWF0aC5pbXVsKHFlLCRuKSkr''@;'; put 'put ''TWF0aC5pbXVsKGh0LG9uKXwwLFM9TWF0aC5pbXVsKGh0LCRuKSx5PXkrTWF0aC5pbXVsKE9lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UscG4pfDApK01hdGguaW11bChldCxwdCl8MCxTPVMrTWF0aC5pbXVsKGV0LHBuKXwwLHk9eStNYXRoLmltdWwoS2UsQ3QpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChLZSxlbil8MCkrTWF0aC5pbXVsKHdlLEN0KXwwLFM9UytNYXRoLmltdWwod2UsZW4pfDAseT15K01hdGguaW11bChIZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLF9uKXwwKStNYXRoLmltdWwoUWUsVnQpfDAsUz1TK01hdGguaW11bChRZSxfbil8MCx5PXkrTWF0aC5pbXVsKE5l''@;'; put 'put ''LEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsbm4pfDApK01hdGguaW11bChMZSxJdCl8MCxTPVMrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbz0obWUrKHk9eStNYXRoLmltdWwoVGUsdnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxHdCl8MCkrTWF0aC5pbXVsKFBlLHZ0''@;'; put 'put ''KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxHdCl8MCkrKHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKERlLG9uKSxwPShwPU1hdGguaW11bChEZSwkbikpK01hdGguaW11bCgkZSxvbil8MCxTPU1hdGguaW11bCgkZSwkbikseT15K01h''@;'; put 'put ''dGguaW11bChxZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLHBuKXwwKStNYXRoLmltdWwoaHQscHQpfDAsUz1TK01hdGguaW11bChodCxwbil8MCx5PXkrTWF0aC5pbXVsKE9lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsZW4pfDApK01hdGguaW11bChldCxDdCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKGV0LGVuKXwwLHk9eStNYXRoLmltdWwoS2UsVnQpfDAscD0ocD1wK01hdGguaW11bChLZSxfbil8MCkrTWF0aC5pbXVsKHdlLFZ0KXwwLFM9UytNYXRoLmltdWwod2UsX24pfDAseT15K01hdGguaW11bChIZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLG5uKXwwKStNYXRoLmltdWwo''@;'; put 'put ''UWUsSXQpfDAsUz1TK01hdGguaW11bChRZSxubil8MCx5PXkrTWF0aC5pbXVsKE5lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsR3QpfDApK01hdGguaW11bChMZSx2dCl8MCxTPVMrTWF0aC5pbXVsKExlLEd0KXwwO3ZhciBCcj0obWUrKHk9eStNYXRoLmltdWwoVGUsenQpfDApfDApKygo''@;'; put 'put ''ODE5MSYocD0ocD1wK01hdGguaW11bChUZSxNbil8MCkrTWF0aC5pbXVsKFBlLHp0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxNbil8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGN0LG9uKSxwPShwPU1hdGguaW11bChjdCwk''@;'; put 'put ''bikpK01hdGguaW11bChPdCxvbil8MCxTPU1hdGguaW11bChPdCwkbikseT15K01hdGguaW11bChEZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoJGUscHQpfDAsUz1TK01hdGguaW11bCgkZSxwbil8MCx5PXkrTWF0aC5pbXVsKHFlLEN0KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChodCxDdCl8MCxTPVMrTWF0aC5pbXVsKGh0LGVuKXwwLHk9eStNYXRoLmltdWwoT2UsVnQpfDAscD0ocD1wK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLFM9UytNYXRoLmltdWwoZXQsX24pfDAseT15K01hdGguaW11''@;'; put 'put ''bChLZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLG5uKXwwKStNYXRoLmltdWwod2UsSXQpfDAsUz1TK01hdGguaW11bCh3ZSxubil8MCx5PXkrTWF0aC5pbXVsKEhlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsR3QpfDApK01hdGguaW11bChRZSx2dCl8MCxTPVMrTWF0aC5pbXVsKFFl''@;'; put 'put ''LEd0KXwwLHk9eStNYXRoLmltdWwoTmUsenQpfDAscD0ocD1wK01hdGguaW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwLFM9UytNYXRoLmltdWwoTGUsTW4pfDA7dmFyIEppPShtZSsoeT15K01hdGguaW11bChUZSxzbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRl''@;'; put 'put ''LEJuKXwwKStNYXRoLmltdWwoUGUsc24pfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEJuKXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoQXQsb24pLHA9KHA9TWF0aC5pbXVsKEF0LCRuKSkrTWF0aC5pbXVsKEp0LG9uKXwwLFM9''@;'; put 'put ''TWF0aC5pbXVsKEp0LCRuKSx5PXkrTWF0aC5pbXVsKGN0LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QscG4pfDApK01hdGguaW11bChPdCxwdCl8MCxTPVMrTWF0aC5pbXVsKE90LHBuKXwwLHk9eStNYXRoLmltdWwoRGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKCRlLEN0KXwwLFM9UytNYXRoLmltdWwoJGUsZW4pfDAseT15K01hdGguaW11bChxZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLF9uKXwwKStNYXRoLmltdWwoaHQsVnQpfDAsUz1TK01hdGguaW11bChodCxfbil8MCx5PXkrTWF0aC5pbXVsKE9lLEl0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoT2Usbm4pfDApK01hdGguaW11bChldCxJdCl8MCxTPVMrTWF0aC5pbXVsKGV0LG5uKXwwLHk9eStNYXRoLmltdWwoS2UsdnQpfDAscD0ocD1wK01hdGguaW11bChLZSxHdCl8MCkrTWF0aC5pbXVsKHdlLHZ0KXwwLFM9UytNYXRoLmltdWwod2UsR3QpfDAseT15K01hdGguaW11bChIZSx6''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLE1uKXwwKStNYXRoLmltdWwoUWUsenQpfDAsUz1TK01hdGguaW11bChRZSxNbil8MCx5PXkrTWF0aC5pbXVsKE5lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCxTPVMrTWF0aC5pbXVsKExlLEJuKXww''@;'; put 'put ''O3ZhciB0bz0obWUrKHk9eStNYXRoLmltdWwoVGUscXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxIbil8MCkrTWF0aC5pbXVsKFBlLHF0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxIbil8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4''@;'; put 'put ''ODYzLHk9TWF0aC5pbXVsKE50LG9uKSxwPShwPU1hdGguaW11bChOdCwkbikpK01hdGguaW11bChibixvbil8MCxTPU1hdGguaW11bChibiwkbikseT15K01hdGguaW11bChBdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoSnQscHQpfDAsUz1TK01hdGguaW11''@;'; put 'put ''bChKdCxwbil8MCx5PXkrTWF0aC5pbXVsKGN0LEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsZW4pfDApK01hdGguaW11bChPdCxDdCl8MCxTPVMrTWF0aC5pbXVsKE90LGVuKXwwLHk9eStNYXRoLmltdWwoRGUsVnQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKCRl''@;'; put 'put ''LFZ0KXwwLFM9UytNYXRoLmltdWwoJGUsX24pfDAseT15K01hdGguaW11bChxZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsUz1TK01hdGguaW11bChodCxubil8MCx5PXkrTWF0aC5pbXVsKE9lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2Us''@;'; put 'put ''R3QpfDApK01hdGguaW11bChldCx2dCl8MCxTPVMrTWF0aC5pbXVsKGV0LEd0KXwwLHk9eStNYXRoLmltdWwoS2UsenQpfDAscD0ocD1wK01hdGguaW11bChLZSxNbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLFM9UytNYXRoLmltdWwod2UsTW4pfDAseT15K01hdGguaW11bChIZSxzbil8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEhlLEJuKXwwKStNYXRoLmltdWwoUWUsc24pfDAsUz1TK01hdGguaW11bChRZSxCbil8MCx5PXkrTWF0aC5pbXVsKE5lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsSG4pfDApK01hdGguaW11bChMZSxxdCl8MCxTPVMrTWF0aC5pbXVsKExlLEhuKXwwO3ZhciBj''@;'; put 'put ''bz0obWUrKHk9eStNYXRoLmltdWwoVGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxqbil8MCkrTWF0aC5pbXVsKFBlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9''@;'; put 'put ''TWF0aC5pbXVsKE50LHB0KSxwPShwPU1hdGguaW11bChOdCxwbikpK01hdGguaW11bChibixwdCl8MCxTPU1hdGguaW11bChibixwbikseT15K01hdGguaW11bChBdCxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsUz1TK01hdGguaW11bChKdCxl''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKGN0LFZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsX24pfDApK01hdGguaW11bChPdCxWdCl8MCxTPVMrTWF0aC5pbXVsKE90LF9uKXwwLHk9eStNYXRoLmltdWwoRGUsSXQpfDAscD0ocD1wK01hdGguaW11bChEZSxubil8MCkrTWF0aC5pbXVsKCRlLEl0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoJGUsbm4pfDAseT15K01hdGguaW11bChxZSx2dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsUz1TK01hdGguaW11bChodCxHdCl8MCx5PXkrTWF0aC5pbXVsKE9lLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsTW4pfDAp''@;'; put 'put ''K01hdGguaW11bChldCx6dCl8MCxTPVMrTWF0aC5pbXVsKGV0LE1uKXwwLHk9eStNYXRoLmltdWwoS2Usc24pfDAscD0ocD1wK01hdGguaW11bChLZSxCbil8MCkrTWF0aC5pbXVsKHdlLHNuKXwwLFM9UytNYXRoLmltdWwod2UsQm4pfDAseT15K01hdGguaW11bChIZSxxdCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmltdWwoUWUscXQpfDAsUz1TK01hdGguaW11bChRZSxIbil8MDt2YXIgbG89KG1lKyh5PXkrTWF0aC5pbXVsKE5lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTmUsam4pfDApK01hdGguaW11bChMZSxjbil8MCkpPDwxMyl8MDtt''@;'; put 'put ''ZT0oKFM9UytNYXRoLmltdWwoTGUsam4pfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxDdCkscD0ocD1NYXRoLmltdWwoTnQsZW4pKStNYXRoLmltdWwoYm4sQ3QpfDAsUz1NYXRoLmltdWwoYm4sZW4pLHk9eStNYXRoLmltdWwoQXQsVnQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChBdCxfbil8MCkrTWF0aC5pbXVsKEp0LFZ0KXwwLFM9UytNYXRoLmltdWwoSnQsX24pfDAseT15K01hdGguaW11bChjdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKGN0LG5uKXwwKStNYXRoLmltdWwoT3QsSXQpfDAsUz1TK01hdGguaW11bChPdCxubil8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKERlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsR3QpfDApK01hdGguaW11bCgkZSx2dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEd0KXwwLHk9eStNYXRoLmltdWwocWUsenQpfDAscD0ocD1wK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoaHQsTW4pfDAseT15K01hdGguaW11bChPZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKE9lLEJuKXwwKStNYXRoLmltdWwoZXQsc24pfDAsUz1TK01hdGguaW11bChldCxCbil8MCx5PXkrTWF0aC5pbXVsKEtlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UsSG4pfDApK01hdGgu''@;'; put 'put ''aW11bCh3ZSxxdCl8MCxTPVMrTWF0aC5pbXVsKHdlLEhuKXwwO3ZhciBzbz0obWUrKHk9eStNYXRoLmltdWwoSGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChRZSxqbil8''@;'; put 'put ''MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LFZ0KSxwPShwPU1hdGguaW11bChOdCxfbikpK01hdGguaW11bChibixWdCl8MCxTPU1hdGguaW11bChibixfbikseT15K01hdGguaW11bChBdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LG5u''@;'; put 'put ''KXwwKStNYXRoLmltdWwoSnQsSXQpfDAsUz1TK01hdGguaW11bChKdCxubil8MCx5PXkrTWF0aC5pbXVsKGN0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsR3QpfDApK01hdGguaW11bChPdCx2dCl8MCxTPVMrTWF0aC5pbXVsKE90LEd0KXwwLHk9eStNYXRoLmltdWwoRGUsenQpfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChEZSxNbil8MCkrTWF0aC5pbXVsKCRlLHp0KXwwLFM9UytNYXRoLmltdWwoJGUsTW4pfDAseT15K01hdGguaW11bChxZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKHFlLEJuKXwwKStNYXRoLmltdWwoaHQsc24pfDAsUz1TK01hdGguaW11bChodCxCbil8MCx5PXkrTWF0''@;'; put 'put ''aC5pbXVsKE9lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsSG4pfDApK01hdGguaW11bChldCxxdCl8MCxTPVMrTWF0aC5pbXVsKGV0LEhuKXwwO3ZhciBYaT0obWUrKHk9eStNYXRoLmltdWwoS2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChLZSxqbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKHdlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCh3ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEl0KSxwPShwPU1hdGguaW11bChOdCxubikpK01hdGguaW11bChibixJdCl8MCxTPU1hdGguaW11bChibixu''@;'; put 'put ''bikseT15K01hdGguaW11bChBdCx2dCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoSnQsdnQpfDAsUz1TK01hdGguaW11bChKdCxHdCl8MCx5PXkrTWF0aC5pbXVsKGN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsTW4pfDApK01hdGguaW11bChPdCx6dCl8MCxT''@;'; put 'put ''PVMrTWF0aC5pbXVsKE90LE1uKXwwLHk9eStNYXRoLmltdWwoRGUsc24pfDAscD0ocD1wK01hdGguaW11bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLFM9UytNYXRoLmltdWwoJGUsQm4pfDAseT15K01hdGguaW11bChxZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEhuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoaHQscXQpfDAsUz1TK01hdGguaW11bChodCxIbil8MDt2YXIgcG89KG1lKyh5PXkrTWF0aC5pbXVsKE9lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT2Usam4pfDApK01hdGguaW11bChldCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoZXQs''@;'; put 'put ''am4pfDApKyhwPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCx2dCkscD0ocD1NYXRoLmltdWwoTnQsR3QpKStNYXRoLmltdWwoYm4sdnQpfDAsUz1NYXRoLmltdWwoYm4sR3QpLHk9eStNYXRoLmltdWwoQXQsenQpfDAscD0ocD1wK01hdGguaW11bChB''@;'; put 'put ''dCxNbil8MCkrTWF0aC5pbXVsKEp0LHp0KXwwLFM9UytNYXRoLmltdWwoSnQsTW4pfDAseT15K01hdGguaW11bChjdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKGN0LEJuKXwwKStNYXRoLmltdWwoT3Qsc24pfDAsUz1TK01hdGguaW11bChPdCxCbil8MCx5PXkrTWF0aC5pbXVsKERlLHF0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoRGUsSG4pfDApK01hdGguaW11bCgkZSxxdCl8MCxTPVMrTWF0aC5pbXVsKCRlLEhuKXwwO3ZhciBfcj0obWUrKHk9eStNYXRoLmltdWwocWUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNuKXwwKSk8''@;'; put 'put ''PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChodCxqbil8MCkrKHA+Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHp0KSxwPShwPU1hdGguaW11bChOdCxNbikpK01hdGguaW11bChibix6dCl8MCxTPU1hdGguaW11bChibixNbikseT15K01hdGguaW11''@;'; put 'put ''bChBdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRoLmltdWwoSnQsc24pfDAsUz1TK01hdGguaW11bChKdCxCbil8MCx5PXkrTWF0aC5pbXVsKGN0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsSG4pfDApK01hdGguaW11bChPdCxxdCl8MCxTPVMrTWF0aC5pbXVsKE90''@;'; put 'put ''LEhuKXwwO3ZhciBGaT0obWUrKHk9eStNYXRoLmltdWwoRGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCgkZSxqbil8MCkrKHA+Pj4xMyl8MCkrKEZpPj4+MjYpfDAsRmkm''@;'; put 'put ''PTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHNuKSxwPShwPU1hdGguaW11bChOdCxCbikpK01hdGguaW11bChibixzbil8MCxTPU1hdGguaW11bChibixCbikseT15K01hdGguaW11bChBdCxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEhuKXwwKStNYXRoLmltdWwoSnQscXQpfDAsUz1TK01h''@;'; put 'put ''dGguaW11bChKdCxIbil8MDt2YXIgSG89KG1lKyh5PXkrTWF0aC5pbXVsKGN0LGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoY3Qsam4pfDApK01hdGguaW11bChPdCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoT3Qsam4pfDApKyhwPj4+MTMpfDApKyhIbz4+''@;'; put 'put ''PjI2KXwwLEhvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxxdCkscD0ocD1NYXRoLmltdWwoTnQsSG4pKStNYXRoLmltdWwoYm4scXQpfDAsUz1NYXRoLmltdWwoYm4sSG4pO3ZhciBnYT0obWUrKHk9eStNYXRoLmltdWwoQXQsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChB''@;'; put 'put ''dCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChKdCxqbil8MCkrKHA+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzO3ZhciBsYT0obWUrKHk9TWF0aC5pbXVsKE50LGNuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChOdCxq''@;'; put 'put ''bikpK01hdGguaW11bChibixjbil8MCkpPDwxMyl8MDtyZXR1cm4gbWU9KChTPU1hdGguaW11bChibixqbikpKyhwPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEwODg2MyxmZVswXT1YcixmZVsxXT12aSxmZVsyXT1FcixmZVszXT1ZaSxmZVs0XT1KcixmZVs1XT1hbyxmZVs2XT1Ccixm''@;'; put 'put ''ZVs3XT1KaSxmZVs4XT10byxmZVs5XT1jbyxmZVsxMF09bG8sZmVbMTFdPXNvLGZlWzEyXT1YaSxmZVsxM109cG8sZmVbMTRdPV9yLGZlWzE1XT1GaSxmZVsxNl09SG8sZmVbMTddPWdhLGZlWzE4XT1sYSwwIT09bWUmJihmZVsxOV09bWUsTS5sZW5ndGgrKyksTX07ZnVuY3Rpb24gaWUoZyxD''@;'; put 'put ''LE0pe3JldHVybihuZXcgbGUpLm11bHAoZyxDLE0pfWZ1bmN0aW9uIGxlKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwobmU9dGUpLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIHk9dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5n''@;'; put 'put ''dGgmJjEwPT09Zy5sZW5ndGg/bmUodGhpcyxnLEMpOnk8NjM/dGUodGhpcyxnLEMpOnk8MTAyND9mdW5jdGlvbihwLFMsUSl7US5uZWdhdGl2ZT1TLm5lZ2F0aXZlXnAubmVnYXRpdmUsUS5sZW5ndGg9cC5sZW5ndGgrUy5sZW5ndGg7Zm9yKHZhciByZT0wLGZlPTAsbWU9MDttZTxRLmxlbmd0''@;'; put 'put ''aC0xO21lKyspe3ZhciBrZT1mZTtmZT0wO2Zvcih2YXIgVGU9NjcxMDg4NjMmcmUsUGU9TWF0aC5taW4obWUsUy5sZW5ndGgtMSksRmU9TWF0aC5tYXgoMCxtZS1wLmxlbmd0aCsxKTtGZTw9UGU7RmUrKyl7dmFyIExlPSgwfHAud29yZHNbbWUtRmVdKSooMHxTLndvcmRzW0ZlXSksQmU9Njcx''@;'; put 'put ''MDg4NjMmTGU7VGU9NjcxMDg4NjMmKEJlPUJlK1RlfDApLGZlKz0oa2U9KGtlPWtlKyhMZS82NzEwODg2NHwwKXwwKSsoQmU+Pj4yNil8MCk+Pj4yNixrZSY9NjcxMDg4NjN9US53b3Jkc1ttZV09VGUscmU9a2Usa2U9ZmV9cmV0dXJuIDAhPT1yZT9RLndvcmRzW21lXT1yZTpRLmxlbmd0aC0t''@;'; put 'put ''LFEuc3RyaXAoKX0odGhpcyxnLEMpOmllKHRoaXMsZyxDKX0sbGUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSx5PTA7eTxnO3krKylDW3ldPXRoaXMucmV2QmluKHksTSxnKTtyZXR1cm4g''@;'; put 'put ''Q30sbGUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihnLEMsTSl7aWYoMD09PWd8fGc9PT1NLTEpcmV0dXJuIGc7Zm9yKHZhciB5PTAscD0wO3A8QztwKyspeXw9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiB5fSxsZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsTSx5LHAsUyl7''@;'; put 'put ''Zm9yKHZhciBRPTA7UTxTO1ErKyl5W1FdPUNbZ1tRXV0scFtRXT1NW2dbUV1dfSxsZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXt0aGlzLnBlcm11dGUoUyxnLEMsTSx5LHApO2Zvcih2YXIgUT0xO1E8cDtRPDw9MSlmb3IodmFyIHJlPVE8PDEsZmU9TWF0aC5j''@;'; put 'put ''b3MoMipNYXRoLlBJL3JlKSxtZT1NYXRoLnNpbigyKk1hdGguUEkvcmUpLGtlPTA7a2U8cDtrZSs9cmUpZm9yKHZhciBUZT1mZSxQZT1tZSxGZT0wO0ZlPFE7RmUrKyl7dmFyIE5lPU1ba2UrRmVdLExlPXlba2UrRmVdLEJlPU1ba2UrRmUrUV0sSGU9eVtrZStGZStRXSxRZT1UZSpCZS1QZSpI''@;'; put 'put ''ZTtIZT1UZSpIZStQZSpCZSxNW2tlK0ZlXT1OZSsoQmU9UWUpLHlba2UrRmVdPUxlK0hlLE1ba2UrRmUrUV09TmUtQmUseVtrZStGZStRXT1MZS1IZSxGZSE9PXJlJiYoUWU9ZmUqVGUtbWUqUGUsUGU9ZmUqUGUrbWUqVGUsVGU9UWUpfX0sbGUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0''@;'; put 'put ''aW9uKGcsQyl7dmFyIE09MXxNYXRoLm1heChDLGcpLHk9MSZNLHA9MDtmb3IoTT1NLzJ8MDtNO00+Pj49MSlwKys7cmV0dXJuIDE8PHArMSt5fSxsZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxNKXtpZighKE08PTEpKWZvcih2YXIgeT0wO3k8TS8yO3krKyl7dmFyIHA9Z1t5''@;'; put 'put ''XTtnW3ldPWdbTS15LTFdLGdbTS15LTFdPXAscD1DW3ldLENbeV09LUNbTS15LTFdLENbTS15LTFdPS1wfX0sbGUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT0wLHk9MDt5PEMvMjt5Kyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqeSsxXS9DKStN''@;'; put 'put ''YXRoLnJvdW5kKGdbMip5XS9DKStNO2dbeV09NjcxMDg4NjMmcCxNPXA8NjcxMDg4NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGxlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9MDtTPEM7UysrKU1bMipTXT04MTkxJihwKz0wfGdbU10p''@;'; put 'put ''LE1bMipTKzFdPTgxOTEmKHA+Pj49MTMpLHA+Pj49MTM7Zm9yKFM9MipDO1M8eTsrK1MpTVtTXT0wO0koMD09PXApLEkoMD09KC04MTkyJnApKX0sbGUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPTA7TTxnO00rKylDW01dPTA7cmV0dXJuIEN9''@;'; put 'put ''LGxlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKHkpLFM9dGhpcy5zdHViKHkpLFE9bmV3IEFycmF5KHkpLHJlPW5ldyBBcnJheSh5KSxmZT1uZXcgQXJyYXkoeSksbWU9bmV3''@;'; put 'put ''IEFycmF5KHkpLGtlPW5ldyBBcnJheSh5KSxUZT1uZXcgQXJyYXkoeSksUGU9TS53b3JkcztQZS5sZW5ndGg9eSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxRLHkpLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLG1lLHkpLHRoaXMudHJhbnNmb3JtKFEsUyxyZSxm''@;'; put 'put ''ZSx5LHApLHRoaXMudHJhbnNmb3JtKG1lLFMsa2UsVGUseSxwKTtmb3IodmFyIEZlPTA7RmU8eTtGZSsrKXt2YXIgTmU9cmVbRmVdKmtlW0ZlXS1mZVtGZV0qVGVbRmVdO2ZlW0ZlXT1yZVtGZV0qVGVbRmVdK2ZlW0ZlXSprZVtGZV0scmVbRmVdPU5lfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShy''@;'; put 'put ''ZSxmZSx5KSx0aGlzLnRyYW5zZm9ybShyZSxmZSxQZSxTLHkscCksdGhpcy5jb25qdWdhdGUoUGUsUyx5KSx0aGlzLm5vcm1hbGl6ZTEzYihQZSx5KSxNLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxNLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxNLnN0cmlwKCl9LEUucHJvdG90''@;'; put 'put ''eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1u''@;'; put 'put ''ZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLGllKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnKSxJKGc8''@;'; put 'put ''NjcxMDg4NjQpO2Zvcih2YXIgQz0wLE09MDtNPHRoaXMubGVuZ3RoO00rKyl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkqZyxwPSg2NzEwODg2MyZ5KSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPXkvNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZwfXJldHVybiAw''@;'; put 'put ''IT09QyYmKHRoaXMud29yZHNbTV09Qyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKFMpe2Zvcih2YXIgUT1uZXcgQXJyYXkoUy5iaXRMZW5ndGgoKSkscmU9MDtyZTxRLmxlbmd0aDtyZSsrKXt2YXIgbWU9cmUlMjY7''@;'; put 'put ''UVtyZV09KFMud29yZHNbcmUvMjZ8MF0mMTw8bWUpPj4+bWV9cmV0dXJuIFF9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBNPXRoaXMseT0wO3k8Qy5sZW5ndGgmJjA9PT1DW3ldO3krKyxNPU0uc3FyKCkpO2lmKCsreTxDLmxlbmd0aClmb3IodmFyIHA9TS5z''@;'; put 'put ''cXIoKTt5PEMubGVuZ3RoO3krKyxwPXAuc3FyKCkpMCE9PUNbeV0mJihNPU0ubXVsKHApKTtyZXR1cm4gTX0sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxNPWclMjYseT0oZy1NKS8yNixwPTY3MTA4ODYzPj4+MjYtTTw8''@;'; put 'put ''MjYtTTtpZigwIT09TSl7dmFyIFM9MDtmb3IoQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgUT10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1RPDxNfFMsUz1RPj4+MjYtTX1TJiYodGhpcy53b3Jkc1tDXT1TLHRoaXMubGVuZ3RoKyspfWlmKDAhPT15''@;'; put 'put ''KXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNbQyt5XT10aGlzLndvcmRzW0NdO2ZvcihDPTA7Qzx5O0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPXl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJu''@;'; put 'put ''IEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLE0pe3ZhciB5O0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSx5PUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LFM9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5n''@;'; put 'put ''dGgpLFE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHJlPU07aWYoeS09Uyx5PU1hdGgubWF4KDAseSkscmUpe2Zvcih2YXIgZmU9MDtmZTxTO2ZlKyspcmUud29yZHNbZmVdPXRoaXMud29yZHNbZmVdO3JlLmxlbmd0aD1TfWlmKDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRoaXMubGVu''@;'; put 'put ''Z3RoLT1TLGZlPTA7ZmU8dGhpcy5sZW5ndGg7ZmUrKyl0aGlzLndvcmRzW2ZlXT10aGlzLndvcmRzW2ZlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIG1lPTA7Zm9yKGZlPXRoaXMubGVuZ3RoLTE7ZmU+PTAmJigwIT09bWV8fGZlPj15KTtmZS0tKXt2YXIga2U9''@;'; put 'put ''MHx0aGlzLndvcmRzW2ZlXTt0aGlzLndvcmRzW2ZlXT1tZTw8MjYtcHxrZT4+PnAsbWU9a2UmUX1yZXR1cm4gcmUmJjAhPT1tZSYmKHJlLndvcmRzW3JlLmxlbmd0aCsrXT1tZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLE0pe3JldHVybiBJKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsTSl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90''@;'; put 'put ''eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9TXx8ISh0aGlzLndvcmRzW01dJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1NP3RoaXM6KDAhPT1DJiZNKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oTSx0aGlz''@;'; put 'put ''Lmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gSSgibnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRo''@;'; put 'put ''aXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0''@;'; put 'put ''aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5''@;'; put 'put ''cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoSSgibnVtYmVyIj09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7''@;'; put 'put ''aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9''@;'; put 'put ''NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeSxwO3Ro''@;'; put 'put ''aXMuX2V4cGFuZChnLmxlbmd0aCtNKTt2YXIgUT0wO2Zvcih5PTA7eTxnLmxlbmd0aDt5Kyspe3A9KDB8dGhpcy53b3Jkc1t5K01dKStRO3ZhciByZT0oMHxnLndvcmRzW3ldKSpDO1E9KChwLT02NzEwODg2MyZyZSk+PjI2KS0ocmUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5K01dPTY3MTA4''@;'; put 'put ''ODYzJnB9Zm9yKDt5PHRoaXMubGVuZ3RoLU07eSsrKVE9KHA9KDB8dGhpcy53b3Jkc1t5K01dKStRKT4+MjYsdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnA7aWYoMD09PVEpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoSSgtMT09PVEpLFE9MCx5PTA7eTx0aGlzLmxlbmd0aDt5KyspUT0ocD0t''@;'; put 'put ''KDB8dGhpcy53b3Jkc1t5XSkrUSk+PjI2LHRoaXMud29yZHNbeV09NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgTSx5PXRoaXMuY2xvbmUoKSxwPWcsUz0wfHAud29yZHNbcC5sZW5n''@;'; put 'put ''dGgtMV07MCE9KE09MjYtdGhpcy5fY291bnRCaXRzKFMpKSYmKHA9cC51c2hsbihNKSx5Lml1c2hsbihNKSxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIFEscmU9eS5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoUT1uZXcgRShudWxsKSkubGVuZ3RoPXJlKzEsUS53b3Jkcz1u''@;'; put 'put ''ZXcgQXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgZmU9MDtmZTxRLmxlbmd0aDtmZSsrKVEud29yZHNbZmVdPTB9dmFyIG1lPXkuY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHJlKTswPT09bWUubmVnYXRpdmUmJih5PW1lLFEmJihRLndvcmRzW3JlXT0xKSk7Zm9yKHZhciBrZT1yZS0xO2tlPj0w''@;'; put 'put ''O2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHx5LndvcmRzW3AubGVuZ3RoK2tlXSkrKDB8eS53b3Jkc1twLmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL1N8MCw2NzEwODg2MykseS5faXNobG5zdWJtdWwocCxUZSxrZSk7MCE9PXkubmVnYXRpdmU7KVRlLS0seS5uZWdhdGl2ZT0w''@;'; put 'put ''LHkuX2lzaGxuc3VibXVsKHAsMSxrZSkseS5pc1plcm8oKXx8KHkubmVnYXRpdmVePTEpO1EmJihRLndvcmRzW2tlXT1UZSl9cmV0dXJuIFEmJlEuc3RyaXAoKSx5LnN0cmlwKCksImRpdiIhPT1DJiYwIT09TSYmeS5pdXNocm4oTSkse2RpdjpRfHxudWxsLG1vZDp5fX0sRS5wcm90b3R5cGUu''@;'; put 'put ''ZGl2bW9kPWZ1bmN0aW9uKGcsQyxNKXtyZXR1cm4gSSghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoeT1TLmRp''@;'; put 'put ''di5uZWcoKSksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2OnksbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KFM9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJih5PVMuZGl2Lm5lZygp''@;'; put 'put ''KSx7ZGl2OnksbW9kOlMubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OlMuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhp''@;'; put 'put ''cy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rp''@;'; put 'put ''djp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgeSxwLFN9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5t''@;'; put 'put ''b2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1v''@;'; put 'put ''ZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIE09MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QseT1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSxTPU0uY21wKHkpO3JldHVybiBTPDB8fDE9PT1wJiYwPT09Uz9DLmRpdjowIT09Qy5kaXYubmVnYXRp''@;'; put 'put ''dmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsTT0wLHk9dGhpcy5sZW5ndGgtMTt5Pj0wO3ktLSlNPShDKk0rKDB8dGhpcy53b3Jkc1t5XSkpJWc7cmV0dXJuIE19''@;'; put 'put ''LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0koZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvZ3wwLEM9eSVnfXJldHVybiB0aGlzLnN0cmlwKCl9''@;'; put 'put ''LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51''@;'; put 'put ''bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHk9bmV3IEUoMSkscD1uZXcgRSgwKSxTPW5ldyBFKDApLFE9bmV3IEUoMSkscmU9MDtDLmlzRXZlbigpJiZNLmlzRXZlbigpOylDLml1c2hybigxKSxNLml1c2hybigxKSwrK3JlO2Zvcih2YXIgZmU9TS5jbG9uZSgpLG1lPUMuY2xvbmUoKTshQy5p''@;'; put 'put ''c1plcm8oKTspe2Zvcih2YXIga2U9MCxUZT0xOyEoQy53b3Jkc1swXSZUZSkmJmtlPDI2Oysra2UsVGU8PD0xKTtpZihrZT4wKWZvcihDLml1c2hybihrZSk7a2UtLSA+MDspKHkuaXNPZGQoKXx8cC5pc09kZCgpKSYmKHkuaWFkZChmZSkscC5pc3ViKG1lKSkseS5pdXNocm4oMSkscC5pdXNo''@;'; put 'put ''cm4oMSk7Zm9yKHZhciBQZT0wLEZlPTE7IShNLndvcmRzWzBdJkZlKSYmUGU8MjY7KytQZSxGZTw8PTEpO2lmKFBlPjApZm9yKE0uaXVzaHJuKFBlKTtQZS0tID4wOykoUy5pc09kZCgpfHxRLmlzT2RkKCkpJiYoUy5pYWRkKGZlKSxRLmlzdWIobWUpKSxTLml1c2hybigxKSxRLml1c2hybigx''@;'; put 'put ''KTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHkuaXN1YihTKSxwLmlzdWIoUSkpOihNLmlzdWIoQyksUy5pc3ViKHkpLFEuaXN1YihwKSl9cmV0dXJue2E6UyxiOlEsZ2NkOk0uaXVzaGxuKHJlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFn''@;'; put 'put ''LmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHkscD1uZXcgRSgxKSxTPW5ldyBFKDApLFE9TS5jbG9uZSgpO0MuY21wbigxKT4wJiZNLmNtcG4oMSk+MDspe2Zvcih2YXIgcmU9MCxmZT0xOyEoQy53''@;'; put 'put ''b3Jkc1swXSZmZSkmJnJlPDI2OysrcmUsZmU8PD0xKTtpZihyZT4wKWZvcihDLml1c2hybihyZSk7cmUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoUSkscC5pdXNocm4oMSk7Zm9yKHZhciBtZT0wLGtlPTE7IShNLndvcmRzWzBdJmtlKSYmbWU8MjY7KyttZSxrZTw8PTEpO2lmKG1lPjApZm9y''@;'; put 'put ''KE0uaXVzaHJuKG1lKTttZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZChRKSxTLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHAuaXN1YihTKSk6KE0uaXN1YihDKSxTLmlzdWIocCkpfXJldHVybih5PTA9PT1DLmNtcG4oMSk/cDpTKS5jbXBuKDApPDAmJnkuaWFkZChnKSx5fSxF''@;'; put 'put ''LnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxNPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsTS5uZWdhdGl2ZT0wO2Zvcih2YXIgeT0wO0MuaXNF''@;'; put 'put ''dmVuKCkmJk0uaXNFdmVuKCk7eSsrKUMuaXVzaHJuKDEpLE0uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO3ZhciBwPUMuY21wKE0pO2lmKHA8MCl7dmFyIFM9QztDPU0sTT1TfWVsc2UgaWYoMD09PXB8''@;'; put 'put ''fDA9PT1NLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKE0pfXJldHVybiBNLml1c2hsbih5KX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNb''@;'; put 'put ''MF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGcpO3ZhciBDPWclMjYsTT0oZy1DKS8yNix5PTE8PEM7aWYodGhpcy5sZW5ndGg8PU0pcmV0dXJuIHRoaXMuX2V4cGFuZChNKzEpLHRoaXMud29yZHNbTV18PXksdGhpcztmb3IodmFyIHA9eSxTPU07MCE9PXAmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT0wfHRoaXMud29yZHNbU107cD0o''@;'; put 'put ''USs9cCk+Pj4yNix0aGlzLndvcmRzW1NdPVEmPTY3MTA4ODYzfXJldHVybiAwIT09cCYmKHRoaXMud29yZHNbU109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5w''@;'; put 'put ''cm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIgQyxNPWc8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIU0pcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJk0pcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7TSYmKGc9LWcpLEkoZzw9NjcxMDg4''@;'; put 'put ''NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHk9MHx0aGlzLndvcmRzWzBdO0M9eT09PWc/MDp5PGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJl''@;'; put 'put ''dHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4g''@;'; put 'put ''MTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEM9MCxNPXRoaXMubGVuZ3RoLTE7TT49MDtNLS0pe3ZhciB5PTB8dGhpcy53b3Jkc1tNXSxwPTB8Zy53b3Jkc1tNXTtpZih5IT09cCl7eTxwP0M9LTE6eT5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90''@;'; put 'put ''eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPj0wfSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''MD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IE4oZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEkoMD09PXRoaXMubmVnYXRpdmUsInJl''@;'; put 'put ''ZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQi''@;'; put 'put ''KSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1''@;'; put 'put ''Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hs''@;'; put 'put ''PWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhpcy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5''@;'; put 'put ''Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9u''@;'; put 'put ''bHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3Zl''@;'; put 'put ''cmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIGRlPXtr''@;'; put 'put ''MjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdWUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMu''@;'; put 'put ''dG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGNlKCl7dWUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBZKCl7dWUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7dWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB4KCl7dWUu''@;'; put 'put ''Y2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBOKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1l''@;'; put 'put ''PUN9ZWxzZSBJKGcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRihnKXtOLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlm''@;'; put 'put ''dCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBFKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYo''@;'; put 'put ''dGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXVlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMp''@;'; put 'put ''KSxnfSx1ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihnKXt2YXIgQyxNPWc7ZG97dGhpcy5zcGxpdChNLHRoaXMudG1wKSxDPShNPShNPXRoaXMuaW11bEsoTSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIHk9Qzx0aGlzLm4/LTE6TS51Y21w''@;'; put 'put ''KHRoaXMucCk7cmV0dXJuIDA9PT15PyhNLndvcmRzWzBdPTAsTS5sZW5ndGg9MSk6eT4wP00uaXN1Yih0aGlzLnApOnZvaWQgMCE9PU0uc3RyaXA/TS5zdHJpcCgpOk0uX3N0cmlwKCksTX0sdWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LHVl''@;'; put 'put ''LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pbXVsKHRoaXMuayl9LFIoY2UsdWUpLGNlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT00MTk0MzAzLHk9TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8eTtwKyspQy53b3Jkc1twXT1nLndvcmRz''@;'; put 'put ''W3BdO2lmKEMubGVuZ3RoPXksZy5sZW5ndGg8PTkpcmV0dXJuIGcud29yZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciBTPWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109UyZNLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBRPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBd''@;'; put 'put ''PShRJk0pPDw0fFM+Pj4yMixTPVF9Zy53b3Jkc1twLTEwXT1TPj4+PTIyLGcubGVuZ3RoLT0wPT09UyYmZy5sZW5ndGg+MTA/MTA6OX0sY2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zv''@;'; put 'put ''cih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKyl7dmFyIHk9MHxnLndvcmRzW01dO2cud29yZHNbTV09NjcxMDg4NjMmKEMrPTk3Nyp5KSxDPTY0KnkrKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0''@;'; put 'put ''aC0xXSYmZy5sZW5ndGgtLSksZ30sUihZLHVlKSxSKGIsdWUpLFIoeCx1ZSkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0xOSooMHxnLndvcmRzW01dKStDLHA9NjcxMDg4NjMmeTt5Pj4+PTI2LGcud29yZHNbTV09''@;'; put 'put ''cCxDPXl9cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tnLmxlbmd0aCsrXT1DKSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZihkZVtnXSlyZXR1cm4gZGVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBjZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgWTtlbHNlIGlmKCJwMTkyIj09PWcp''@;'; put 'put ''Qz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyB4fXJldHVybiBkZVtnXT1DLEN9LE4ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9z''@;'; put 'put ''aXRpdmVzIiksSShnLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0koMD09KGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCYmZy5yZWQ9''@;'; put 'put ''PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaXNaZXJvKCk/Zy5jbG9uZSgpOnRoaXMubS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5hZGQoQyk7cmV0dXJuIE0uY21wKHRoaXMu''@;'; put 'put ''bSk+PTAmJk0uaXN1Yih0aGlzLm0pLE0uX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuaWFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc3Vi''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5pc3Vi''@;'; put 'put ''KEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3Zl''@;'; put 'put ''cmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVsKEMpKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxnLmNsb25l''@;'; put 'put ''KCkpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubXVsKGcsZyl9LE4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihJKEMlMj09MSksMz09PUMpe3ZhciBNPXRo''@;'; put 'put ''aXMubS5hZGQobmV3IEUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZyxNKX1mb3IodmFyIHk9dGhpcy5tLnN1Ym4oMSkscD0wOyF5LmlzWmVybygpJiYwPT09eS5hbmRsbigxKTspcCsrLHkuaXVzaHJuKDEpO0koIXkuaXNaZXJvKCkpO3ZhciBTPW5ldyBFKDEpLnRvUmVkKHRoaXMp''@;'; put 'put ''LFE9Uy5yZWROZWcoKSxyZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksZmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihmZT1uZXcgRSgyKmZlKmZlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coZmUscmUpLmNtcChRKTspZmUucmVkSUFkZChRKTtmb3IodmFyIG1lPXRoaXMucG93KGZlLHkp''@;'; put 'put ''LGtlPXRoaXMucG93KGcseS5hZGRuKDEpLml1c2hybigxKSksVGU9dGhpcy5wb3coZyx5KSxQZT1wOzAhPT1UZS5jbXAoUyk7KXtmb3IodmFyIEZlPVRlLE5lPTA7MCE9PUZlLmNtcChTKTtOZSsrKUZlPUZlLnJlZFNxcigpO0koTmU8UGUpO3ZhciBMZT10aGlzLnBvdyhtZSxuZXcgRSgxKS5p''@;'; put 'put ''dXNobG4oUGUtTmUtMSkpO2tlPWtlLnJlZE11bChMZSksbWU9TGUucmVkU3FyKCksVGU9VGUucmVkTXVsKG1lKSxQZT1OZX1yZXR1cm4ga2V9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMubmVnYXRp''@;'; put 'put ''dmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkpOnRoaXMuaW1vZChDKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgx''@;'; put 'put ''Nik7TVswXT1uZXcgRSgxKS50b1JlZCh0aGlzKSxNWzFdPWc7Zm9yKHZhciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sZyk7dmFyIHA9TVswXSxTPTAsUT0wLHJlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PUMubGVuZ3RoLTE7eT49MDt5''@;'; put 'put ''LS0pe2Zvcih2YXIgZmU9Qy53b3Jkc1t5XSxtZT1yZS0xO21lPj0wO21lLS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10pLFE9MCxT''@;'; put 'put ''PTApKTpRPTB9cmU9MjZ9cmV0dXJuIHB9LE4ucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LE4ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTtyZXR1cm4g''@;'; put 'put ''Qy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBGKGcpfSxSKEYsTiksRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcp''@;'; put 'put ''e3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgTT1nLmltdWwoQykseT1N''@;'; put 'put ''Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAuaWFkZCh0''@;'; put 'put ''aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBNPWcubXVsKEMpLHk9TS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52''@;'; put 'put ''KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkscD1NLmlzdWIoeSkuaXVzaHJuKHRoaXMuc2hpZnQpLFM9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD9TPXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYoUz1wLmlhZGQodGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9LEYucHJv''@;'; put 'put ''dG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChnLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sODA5MTpIPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoTCxLKXtpZihudWxsPT1MKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGZpcnN0IGFyZ3VtZW50IHRvIG9iamVjdCIpO2Zvcih2YXIgSj1PYmplY3QoTCksST0xO0k8YXJndW1lbnRzLmxlbmd0aDtJKyspe3ZhciBSPWFyZ3VtZW50c1tJXTtpZihudWxsIT1SKWZvcih2YXIgRT1PYmplY3Qua2V5cyhPYmplY3QoUikp''@;'; put 'put ''LHo9MCxqPUUubGVuZ3RoO3o8ajt6Kyspe3ZhciBWPUVbel0sRz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFIsVik7dm9pZCAwIT09RyYmRy5lbnVtZXJhYmxlJiYoSltWXT1SW1ZdKX19cmV0dXJuIEp9SC5leHBvcnRzPXthc3NpZ246Qixwb2x5ZmlsbDpmdW5jdGlvbigpe09i''@;'; put 'put ''amVjdC5hc3NpZ258fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QsImFzc2lnbiIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkJ9KX19fSw3MTg3OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEssSj1MKDUxMDgpLEk9Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxSPUkmJiJmdW5jdGlvbiI9PXR5cGVvZiBJLmFwcGx5P0kuYXBwbHk6ZnVuY3Rpb24oZGUsdWUsY2Upe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChkZSx1ZSxjZSl9O0s9SSYmImZ1bmN0aW9uIj09dHlwZW9mIEkub3duS2V5''@;'; put 'put ''cz9JLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbihkZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkZSkpfTpmdW5jdGlvbihkZSl7cmV0dXJuIE9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eU5hbWVzKGRlKX07dmFyIEU9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihkZSl7cmV0dXJuIGRlIT1kZX07ZnVuY3Rpb24geigpe3ouaW5pdC5jYWxsKHRoaXMpfUguZXhwb3J0cz16LEguZXhwb3J0cy5vbmNlPWZ1bmN0aW9uKGRlLHVlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVu''@;'; put 'put ''Y3Rpb24oY2UsWSl7ZnVuY3Rpb24gYihOKXtkZS5yZW1vdmVMaXN0ZW5lcih1ZSx4KSxZKE4pfWZ1bmN0aW9uIHgoKXsiZnVuY3Rpb24iPT10eXBlb2YgZGUucmVtb3ZlTGlzdGVuZXImJmRlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsYiksY2UoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX12''@;'; put 'put ''YXIgTjtsZShkZSx1ZSx4LHtvbmNlOiEwfSksImVycm9yIiE9PXVlJiYiZnVuY3Rpb24iPT10eXBlb2YoTj1kZSkub24mJmxlKE4sImVycm9yIixiLHtvbmNlOiEwfSl9KX0sei5FdmVudEVtaXR0ZXI9eix6LnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCx6LnByb3RvdHlwZS5fZXZlbnRzQ291''@;'; put 'put ''bnQ9MCx6LnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgaj0xMDtmdW5jdGlvbiBWKGRlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJsaXN0ZW5lciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZl''@;'; put 'put ''ZCB0eXBlICcrdHlwZW9mIGRlKX1mdW5jdGlvbiBHKGRlKXtyZXR1cm4gdm9pZCAwPT09ZGUuX21heExpc3RlbmVycz96LmRlZmF1bHRNYXhMaXN0ZW5lcnM6ZGUuX21heExpc3RlbmVyc31mdW5jdGlvbiBXKGRlLHVlLGNlLFkpe3ZhciBiLHgsTjtpZihWKGNlKSx2b2lkIDA9PT0oeD1kZS5f''@;'; put 'put ''ZXZlbnRzKT8oeD1kZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT14Lm5ld0xpc3RlbmVyJiYoZGUuZW1pdCgibmV3TGlzdGVuZXIiLHVlLGNlLmxpc3RlbmVyP2NlLmxpc3RlbmVyOmNlKSx4PWRlLl9ldmVudHMpLE49eFt1ZV0pLHZv''@;'; put 'put ''aWQgMD09PU4pTj14W3VlXT1jZSwrK2RlLl9ldmVudHNDb3VudDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBOP049eFt1ZV09WT9bY2UsTl06W04sY2VdOlk/Ti51bnNoaWZ0KGNlKTpOLnB1c2goY2UpLChiPUcoZGUpKT4wJiZOLmxlbmd0aD5iJiYhTi53YXJuZWQpe04ud2FybmVkPSEw''@;'; put 'put ''O3ZhciBnPW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK04ubGVuZ3RoKyIgIitTdHJpbmcodWUpKyIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdCIpO2cubmFtZT0i''@;'; put 'put ''TWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nIixnLmVtaXR0ZXI9ZGUsZy50eXBlPXVlLGcuY291bnQ9Ti5sZW5ndGgsSiYmSi53YXJuJiZKLndhcm4oZyl9cmV0dXJuIGRlfWZ1bmN0aW9uIFUoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhp''@;'; put 'put ''cy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIHEoZGUsdWUsY2Upe3ZhciBZPXtmaXJlZDoh''@;'; put 'put ''MSx3cmFwRm46dm9pZCAwLHRhcmdldDpkZSx0eXBlOnVlLGxpc3RlbmVyOmNlfSxiPVUuYmluZChZKTtyZXR1cm4gYi5saXN0ZW5lcj1jZSxZLndyYXBGbj1iLGJ9ZnVuY3Rpb24gdGUoZGUsdWUsY2Upe3ZhciBZPWRlLl9ldmVudHM7aWYodm9pZCAwPT09WSlyZXR1cm5bXTt2YXIgYj1ZW3Vl''@;'; put 'put ''XTtyZXR1cm4gdm9pZCAwPT09Yj9bXToiZnVuY3Rpb24iPT10eXBlb2YgYj9jZT9bYi5saXN0ZW5lcnx8Yl06W2JdOmNlP2Z1bmN0aW9uKHgpe2Zvcih2YXIgTj1uZXcgQXJyYXkoeC5sZW5ndGgpLEY9MDtGPE4ubGVuZ3RoOysrRilOW0ZdPXhbRl0ubGlzdGVuZXJ8fHhbRl07cmV0dXJuIE59''@;'; put 'put ''KGIpOmllKGIsYi5sZW5ndGgpfWZ1bmN0aW9uIG5lKGRlKXt2YXIgdWU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXVlKXt2YXIgY2U9dWVbZGVdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjZSlyZXR1cm4gMTtpZih2b2lkIDAhPT1jZSlyZXR1cm4gY2UubGVuZ3RofXJldHVybiAwfWZ1bmN0''@;'; put 'put ''aW9uIGllKGRlLHVlKXtmb3IodmFyIGNlPW5ldyBBcnJheSh1ZSksWT0wO1k8dWU7KytZKWNlW1ldPWRlW1ldO3JldHVybiBjZX1mdW5jdGlvbiBsZShkZSx1ZSxjZSxZKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGUub24pWS5vbmNlP2RlLm9uY2UodWUsY2UpOmRlLm9uKHVlLGNlKTtlbHNl''@;'; put 'put ''e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBkZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBkZSk7ZGUuYWRkRXZlbnRMaXN0ZW5lcih1''@;'; put 'put ''ZSxmdW5jdGlvbiBiKHgpe1kub25jZSYmZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih1ZSxiKSxjZSh4KX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoeiwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGp9LHNldDpmdW5jdGlvbihkZSl7''@;'; put 'put ''aWYoIm51bWJlciIhPXR5cGVvZiBkZXx8ZGU8MHx8RShkZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytkZSsiLiIpO2o9''@;'; put 'put ''ZGV9fSksei5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExp''@;'; put 'put ''c3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sei5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKGRlKXtpZigibnVtYmVyIiE9dHlwZW9mIGRlfHxkZTwwfHxFKGRlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mICJuIiBpcyBvdXQgb2YgcmFu''@;'; put 'put ''Z2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK2RlKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1kZSx0aGlzfSx6LnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzKX0sei5wcm90b3R5cGUuZW1pdD1m''@;'; put 'put ''dW5jdGlvbihkZSl7Zm9yKHZhciB1ZT1bXSxjZT0xO2NlPGFyZ3VtZW50cy5sZW5ndGg7Y2UrKyl1ZS5wdXNoKGFyZ3VtZW50c1tjZV0pO3ZhciBZPSJlcnJvciI9PT1kZSxiPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1iKVk9WSYmdm9pZCAwPT09Yi5lcnJvcjtlbHNlIGlmKCFZKXJldHVy''@;'; put 'put ''biExO2lmKFkpe3ZhciB4O2lmKHVlLmxlbmd0aD4wJiYoeD11ZVswXSkseCBpbnN0YW5jZW9mIEVycm9yKXRocm93IHg7dmFyIE49bmV3IEVycm9yKCJVbmhhbmRsZWQgZXJyb3IuIisoeD8iICgiK3gubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBOLmNvbnRleHQ9eCxOfXZhciBGPWJbZGVdO2lm''@;'; put 'put ''KHZvaWQgMD09PUYpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEYpUihGLHRoaXMsdWUpO2Vsc2V7dmFyIGc9Ri5sZW5ndGgsQz1pZShGLGcpO2ZvcihjZT0wO2NlPGc7KytjZSlSKENbY2VdLHRoaXMsdWUpfXJldHVybiEwfSx6LnByb3RvdHlwZS5vbj16LnByb3RvdHlwZS5hZGRM''@;'; put 'put ''aXN0ZW5lcj1mdW5jdGlvbihkZSx1ZSl7cmV0dXJuIFcodGhpcyxkZSx1ZSwhMSl9LHoucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbihkZSx1ZSl7cmV0dXJuIFcodGhpcyxkZSx1ZSwhMCl9LHoucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZGUsdWUpe3JldHVybiBWKHVlKSx0''@;'; put 'put ''aGlzLm9uKGRlLHEodGhpcyxkZSx1ZSkpLHRoaXN9LHoucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oZGUsdWUpe3JldHVybiBWKHVlKSx0aGlzLnByZXBlbmRMaXN0ZW5lcihkZSxxKHRoaXMsZGUsdWUpKSx0aGlzfSx6LnByb3RvdHlwZS5vZmY9ei5wcm90b3R5cGUu''@;'; put 'put ''cmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZGUsdWUpe3ZhciBjZSxZLGIseCxOO2lmKFYodWUpLHZvaWQgMD09PShZPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KGNlPVlbZGVdKSlyZXR1cm4gdGhpcztpZihjZT09PXVlfHxjZS5saXN0ZW5lcj09PXVlKTA9PS0tdGhp''@;'; put 'put ''cy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBZW2RlXSxZLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixkZSxjZS5saXN0ZW5lcnx8dWUpKTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiBjZSl7Zm9yKGI9''@;'; put 'put ''LTEseD1jZS5sZW5ndGgtMTt4Pj0wO3gtLSlpZihjZVt4XT09PXVlfHxjZVt4XS5saXN0ZW5lcj09PXVlKXtOPWNlW3hdLmxpc3RlbmVyLGI9eDticmVha31pZihiPDApcmV0dXJuIHRoaXM7MD09PWI/Y2Uuc2hpZnQoKTpmdW5jdGlvbihGLGcpe2Zvcig7ZysxPEYubGVuZ3RoO2crKylGW2dd''@;'; put 'put ''PUZbZysxXTtGLnBvcCgpfShjZSxiKSwxPT09Y2UubGVuZ3RoJiYoWVtkZV09Y2VbMF0pLHZvaWQgMCE9PVkucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGRlLE58fHVlKX1yZXR1cm4gdGhpc30sei5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0''@;'; put 'put ''aW9uKGRlKXt2YXIgdWUsY2UsWTtpZih2b2lkIDA9PT0oY2U9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1jZS5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50''@;'; put 'put ''c0NvdW50PTApOnZvaWQgMCE9PWNlW2RlXSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIGNlW2RlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGIseD1PYmplY3Qua2V5cyhjZSk7Zm9yKFk9MDtZPHgu''@;'; put 'put ''bGVuZ3RoOysrWSkicmVtb3ZlTGlzdGVuZXIiIT09KGI9eFtZXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGIpO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3Vu''@;'; put 'put ''dD0wLHRoaXN9aWYoImZ1bmN0aW9uIj09dHlwZW9mKHVlPWNlW2RlXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihkZSx1ZSk7ZWxzZSBpZih2b2lkIDAhPT11ZSlmb3IoWT11ZS5sZW5ndGgtMTtZPj0wO1ktLSl0aGlzLnJlbW92ZUxpc3RlbmVyKGRlLHVlW1ldKTtyZXR1cm4gdGhpc30sei5wcm90''@;'; put 'put ''b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGRlKXtyZXR1cm4gdGUodGhpcyxkZSwhMCl9LHoucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihkZSl7cmV0dXJuIHRlKHRoaXMsZGUsITEpfSx6Lmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZGUsdWUpe3JldHVybiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBkZS5saXN0ZW5lckNvdW50P2RlLmxpc3RlbmVyQ291bnQodWUpOm5lLmNhbGwoZGUsdWUpfSx6LnByb3RvdHlwZS5saXN0ZW5lckNvdW50PW5lLHoucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9LKHRoaXMuX2V2ZW50cyk6''@;'; put 'put ''W119fSwzMDQ4OihILEIsTCk9Pnt2YXIgSz1MKDk1MDkpLkJ1ZmZlcixKPUwoMjMxOCk7SC5leHBvcnRzPWZ1bmN0aW9uKEksUixFLHope2lmKEsuaXNCdWZmZXIoSSl8fChJPUsuZnJvbShJLCJiaW5hcnkiKSksUiYmKEsuaXNCdWZmZXIoUil8fChSPUsuZnJvbShSLCJiaW5hcnkiKSksOCE9''@;'; put 'put ''PVIubGVuZ3RoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCIpO2Zvcih2YXIgaj1FLzgsVj1LLmFsbG9jKGopLEc9Sy5hbGxvYyh6fHwwKSxXPUsuYWxsb2MoMCk7aj4wfHx6PjA7KXt2YXIgVT1uZXcgSjtVLnVwZGF0ZShX''@;'; put 'put ''KSxVLnVwZGF0ZShJKSxSJiZVLnVwZGF0ZShSKSxXPVUuZGlnZXN0KCk7dmFyIHE9MDtpZihqPjApe3ZhciB0ZT1WLmxlbmd0aC1qO3E9TWF0aC5taW4oaixXLmxlbmd0aCksVy5jb3B5KFYsdGUsMCxxKSxqLT1xfWlmKHE8Vy5sZW5ndGgmJno+MCl7dmFyIG5lPUcubGVuZ3RoLXosaWU9TWF0''@;'; put 'put ''aC5taW4oeixXLmxlbmd0aC1xKTtXLmNvcHkoRyxuZSxxLHEraWUpLHotPWllfX1yZXR1cm4gVy5maWxsKDApLHtrZXk6VixpdjpHfX19LDQwMjk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDUzMjApLEo9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxJPU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUuaGFzT3duUHJvcGVydHk7SC5leHBvcnRzPWZ1bmN0aW9uKFIsRSx6KXtpZighSyhFKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgajthcmd1bWVudHMubGVuZ3RoPj0zJiYoaj16KSwiW29iamVjdCBBcnJheV0iPT09Si5jYWxsKFIp''@;'; put 'put ''P2Z1bmN0aW9uKFYsRyxXKXtmb3IodmFyIFU9MCxxPVYubGVuZ3RoO1U8cTtVKyspSS5jYWxsKFYsVSkmJihudWxsPT1XP0coVltVXSxVLFYpOkcuY2FsbChXLFZbVV0sVSxWKSl9KFIsRSxqKToic3RyaW5nIj09dHlwZW9mIFI/ZnVuY3Rpb24oVixHLFcpe2Zvcih2YXIgVT0wLHE9Vi5sZW5n''@;'; put 'put ''dGg7VTxxO1UrKyludWxsPT1XP0coVi5jaGFyQXQoVSksVSxWKTpHLmNhbGwoVyxWLmNoYXJBdChVKSxVLFYpfShSLEUsaik6ZnVuY3Rpb24oVixHLFcpe2Zvcih2YXIgVSBpbiBWKUkuY2FsbChWLFUpJiYobnVsbD09Vz9HKFZbVV0sVSxWKTpHLmNhbGwoVyxWW1VdLFUsVikpfShSLEUsail9''@;'; put 'put ''fSw2MjMwOkg9PntILmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGYuRm9ybURhdGE6d2luZG93LkZvcm1EYXRhfSw1MzAyOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KSxKPUwoNTEwOCk7Y29uc3QgST1MKDc3KSxSPUwoMjUyMCksRT1MKDEzODEpLm1rZGly''@;'; put 'put ''c1N5bmMsej1MKDMxOCkudXRpbWVzTWlsbGlzU3luYyxqPUwoMjczMyk7ZnVuY3Rpb24gVihxLHRlLG5lLGllKXtjb25zdCBsZT0oaWUuZGVyZWZlcmVuY2U/SS5zdGF0U3luYzpJLmxzdGF0U3luYykodGUpO2lmKGxlLmlzRGlyZWN0b3J5KCkpcmV0dXJuIGRlPWxlLGNlPXRlLFk9bmUsYj1p''@;'; put 'put ''ZSxxP1UoY2UsWSxiKTooeD1kZS5tb2RlLE49Y2UsZz1iLEkubWtkaXJTeW5jKEY9WSksVShOLEYsZyksVyhGLHgpKTt2YXIgZGUsY2UsWSxiLHgsTixGLGc7aWYobGUuaXNGaWxlKCl8fGxlLmlzQ2hhcmFjdGVyRGV2aWNlKCl8fGxlLmlzQmxvY2tEZXZpY2UoKSlyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''ZGUsdWUsY2UsWSxiKXtyZXR1cm4gdWU/ZnVuY3Rpb24oeCxOLEYsZyl7aWYoZy5vdmVyd3JpdGUpcmV0dXJuIEkudW5saW5rU3luYyhGKSxHKHgsTixGLGcpO2lmKGcuZXJyb3JPbkV4aXN0KXRocm93IG5ldyBFcnJvcihgJyR7Rn0nIGFscmVhZHkgZXhpc3RzYCl9KGRlLGNlLFksYik6Ryhk''@;'; put 'put ''ZSxjZSxZLGIpfShsZSxxLHRlLG5lLGllKTtpZihsZS5pc1N5bWJvbGljTGluaygpKXJldHVybiBmdW5jdGlvbihkZSx1ZSxjZSxZKXtsZXQgYj1JLnJlYWRsaW5rU3luYyh1ZSk7aWYoWS5kZXJlZmVyZW5jZSYmKGI9Ui5yZXNvbHZlKEsuY3dkKCksYikpLGRlKXtsZXQgeDt0cnl7eD1JLnJl''@;'; put 'put ''YWRsaW5rU3luYyhjZSl9Y2F0Y2goTil7aWYoIkVJTlZBTCI9PT1OLmNvZGV8fCJVTktOT1dOIj09PU4uY29kZSlyZXR1cm4gSS5zeW1saW5rU3luYyhiLGNlKTt0aHJvdyBOfWlmKFkuZGVyZWZlcmVuY2UmJih4PVIucmVzb2x2ZShLLmN3ZCgpLHgpKSxqLmlzU3JjU3ViZGlyKGIseCkpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKGBDYW5ub3QgY29weSAnJHtifScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHt4fScuYCk7aWYoSS5zdGF0U3luYyhjZSkuaXNEaXJlY3RvcnkoKSYmai5pc1NyY1N1YmRpcih4LGIpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHt4fScg''@;'; put 'put ''d2l0aCAnJHtifScuYCk7cmV0dXJuIGZ1bmN0aW9uKE4sRil7cmV0dXJuIEkudW5saW5rU3luYyhGKSxJLnN5bWxpbmtTeW5jKE4sRil9KGIsY2UpfXJldHVybiBJLnN5bWxpbmtTeW5jKGIsY2UpfShxLHRlLG5lLGllKTt0aHJvdyBsZS5pc1NvY2tldCgpP25ldyBFcnJvcihgQ2Fubm90IGNv''@;'; put 'put ''cHkgYSBzb2NrZXQgZmlsZTogJHt0ZX1gKTpsZS5pc0ZJRk8oKT9uZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgRklGTyBwaXBlOiAke3RlfWApOm5ldyBFcnJvcihgVW5rbm93biBmaWxlOiAke3RlfWApfWZ1bmN0aW9uIEcocSx0ZSxuZSxpZSl7cmV0dXJuIEkuY29weUZpbGVTeW5jKHRlLG5l''@;'; put 'put ''KSxpZS5wcmVzZXJ2ZVRpbWVzdGFtcHMmJihkZT10ZSx1ZT1uZSwwPT0oMTI4JihsZT1xLm1vZGUpKSYmVyh1ZSwxMjh8bGUpLGZ1bmN0aW9uKGNlLFkpe2NvbnN0IGI9SS5zdGF0U3luYyhjZSk7eihZLGIuYXRpbWUsYi5tdGltZSl9KGRlLHVlKSksVyhuZSxxLm1vZGUpO3ZhciBsZSxkZSx1''@;'; put 'put ''ZX1mdW5jdGlvbiBXKHEsdGUpe3JldHVybiBJLmNobW9kU3luYyhxLHRlKX1mdW5jdGlvbiBVKHEsdGUsbmUpe0kucmVhZGRpclN5bmMocSkuZm9yRWFjaChpZT0+ZnVuY3Rpb24obGUsZGUsdWUsY2Upe2NvbnN0IFk9Ui5qb2luKGRlLGxlKSxiPVIuam9pbih1ZSxsZSkse2Rlc3RTdGF0Onh9''@;'; put 'put ''PWouY2hlY2tQYXRoc1N5bmMoWSxiLCJjb3B5IixjZSk7cmV0dXJuIGZ1bmN0aW9uKE4sRixnLEMpe2lmKCFDLmZpbHRlcnx8Qy5maWx0ZXIoRixnKSlyZXR1cm4gVihOLEYsZyxDKX0oeCxZLGIsY2UpfShpZSxxLHRlLG5lKSl9SC5leHBvcnRzPWZ1bmN0aW9uKHEsdGUsbmUpeyJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBuZSYmKG5lPXtmaWx0ZXI6bmV9KSwobmU9bmV8fHt9KS5jbG9iYmVyPSEoImNsb2JiZXIiaW4gbmUpfHwhIW5lLmNsb2JiZXIsbmUub3ZlcndyaXRlPSJvdmVyd3JpdGUiaW4gbmU/ISFuZS5vdmVyd3JpdGU6bmUuY2xvYmJlcixuZS5wcmVzZXJ2ZVRpbWVzdGFtcHMmJiJp''@;'; put 'put ''YTMyIj09PUsuYXJjaCYmSi53YXJuKCJmcy1leHRyYTogVXNpbmcgdGhlIHByZXNlcnZlVGltZXN0YW1wcyBvcHRpb24gaW4gMzItYml0IG5vZGUgaXMgbm90IHJlY29tbWVuZGVkO1xuXG4gICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRyYS9pc3N1''@;'; put 'put ''ZXMvMjY5Iik7Y29uc3R7c3JjU3RhdDppZSxkZXN0U3RhdDpsZX09ai5jaGVja1BhdGhzU3luYyhxLHRlLCJjb3B5IixuZSk7cmV0dXJuIGouY2hlY2tQYXJlbnRQYXRoc1N5bmMocSxpZSx0ZSwiY29weSIpLGZ1bmN0aW9uKGRlLHVlLGNlLFkpe2lmKFkuZmlsdGVyJiYhWS5maWx0ZXIodWUs''@;'; put 'put ''Y2UpKXJldHVybjtjb25zdCBiPVIuZGlybmFtZShjZSk7cmV0dXJuIEkuZXhpc3RzU3luYyhiKXx8RShiKSxWKGRlLHVlLGNlLFkpfShsZSxxLHRlLG5lKX19LDg2OTA6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9e2NvcHlTeW5jOkwoNTMwMil9fSw3MTg5OihILEIsTCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KSxKPUwoNTEwOCk7Y29uc3QgST1MKDc3KSxSPUwoMjUyMCksRT1MKDEzODEpLm1rZGlycyx6PUwoOTI1NykucGF0aEV4aXN0cyxqPUwoMzE4KS51dGltZXNNaWxsaXMsVj1MKDI3MzMpO2Z1bmN0aW9uIEcodWUsY2UsWSxiLHgpe2NvbnN0IE49Ui5k''@;'; put 'put ''aXJuYW1lKFkpO3ooTiwoRixnKT0+Rj94KEYpOmc/VSh1ZSxjZSxZLGIseCk6dm9pZCBFKE4sQz0+Qz94KEMpOlUodWUsY2UsWSxiLHgpKSl9ZnVuY3Rpb24gVyh1ZSxjZSxZLGIseCxOKXtQcm9taXNlLnJlc29sdmUoeC5maWx0ZXIoWSxiKSkudGhlbihGPT5GP3VlKGNlLFksYix4LE4pOk4o''@;'; put 'put ''KSxGPT5OKEYpKX1mdW5jdGlvbiBVKHVlLGNlLFksYix4KXsoYi5kZXJlZmVyZW5jZT9JLnN0YXQ6SS5sc3RhdCkoY2UsKE4sRik9PntyZXR1cm4gTj94KE4pOkYuaXNEaXJlY3RvcnkoKT8oZz1GLE09Y2UseT1ZLHA9YixTPXgsdWU/aWUoTSx5LHAsUyk6KFE9Zy5tb2RlLHJlPU0sbWU9cCxr''@;'; put 'put ''ZT1TLHZvaWQgSS5ta2RpcihmZT15LFRlPT57aWYoVGUpcmV0dXJuIGtlKFRlKTtpZShyZSxmZSxtZSxQZT0+UGU/a2UoUGUpOm5lKGZlLFEsa2UpKX0pKSk6Ri5pc0ZpbGUoKXx8Ri5pc0NoYXJhY3RlckRldmljZSgpfHxGLmlzQmxvY2tEZXZpY2UoKT9mdW5jdGlvbihnLEMsTSx5LHAsUyl7''@;'; put 'put ''cmV0dXJuIEM/ZnVuY3Rpb24oUSxyZSxmZSxtZSxrZSl7aWYoIW1lLm92ZXJ3cml0ZSlyZXR1cm4gbWUuZXJyb3JPbkV4aXN0P2tlKG5ldyBFcnJvcihgJyR7ZmV9JyBhbHJlYWR5IGV4aXN0c2ApKTprZSgpO0kudW5saW5rKGZlLFRlPT5UZT9rZShUZSk6cShRLHJlLGZlLG1lLGtlKSl9KGcs''@;'; put 'put ''TSx5LHAsUyk6cShnLE0seSxwLFMpfShGLHVlLGNlLFksYix4KTpGLmlzU3ltYm9saWNMaW5rKCk/ZnVuY3Rpb24gZGUodWUsY2UsWSxiLHgpe0kucmVhZGxpbmsoY2UsKE4sRik9Pk4/eChOKTooYi5kZXJlZmVyZW5jZSYmKEY9Ui5yZXNvbHZlKEsuY3dkKCksRikpLHVlP3ZvaWQgSS5yZWFk''@;'; put 'put ''bGluayhZLChnLEMpPT5nPyJFSU5WQUwiPT09Zy5jb2RlfHwiVU5LTk9XTiI9PT1nLmNvZGU/SS5zeW1saW5rKEYsWSx4KTp4KGcpOihiLmRlcmVmZXJlbmNlJiYoQz1SLnJlc29sdmUoSy5jd2QoKSxDKSksVi5pc1NyY1N1YmRpcihGLEMpP3gobmV3IEVycm9yKGBDYW5ub3QgY29weSAnJHtG''@;'; put 'put ''fScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtDfScuYCkpOnVlLmlzRGlyZWN0b3J5KCkmJlYuaXNTcmNTdWJkaXIoQyxGKT94KG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHtDfScgd2l0aCAnJHtGfScuYCkpOmZ1bmN0aW9uKE0seSxwKXtJLnVubGluayh5LFM9PlM/''@;'; put 'put ''cChTKTpJLnN5bWxpbmsoTSx5LHApKX0oRixZLHgpKSk6SS5zeW1saW5rKEYsWSx4KSkpfSh1ZSxjZSxZLGIseCk6Ri5pc1NvY2tldCgpP3gobmV3IEVycm9yKGBDYW5ub3QgY29weSBhIHNvY2tldCBmaWxlOiAke2NlfWApKTpGLmlzRklGTygpP3gobmV3IEVycm9yKGBDYW5ub3QgY29weSBh''@;'; put 'put ''IEZJRk8gcGlwZTogJHtjZX1gKSk6eChuZXcgRXJyb3IoYFVua25vd24gZmlsZTogJHtjZX1gKSk7dmFyIGcsTSx5LHAsUyxRLHJlLGZlLG1lLGtlfSl9ZnVuY3Rpb24gcSh1ZSxjZSxZLGIseCl7SS5jb3B5RmlsZShjZSxZLE49PntyZXR1cm4gTj94KE4pOmIucHJlc2VydmVUaW1lc3RhbXBz''@;'; put 'put ''PyhnPWNlLEM9WSxNPXgsMD09KDEyOCYoRj11ZS5tb2RlKSk/bmUoQywxMjh8Rix5PT55P00oeSk6dGUoRixnLEMsTSkpOnRlKEYsZyxDLE0pKTpuZShZLHVlLm1vZGUseCk7dmFyIEYsZyxDLE19KX1mdW5jdGlvbiB0ZSh1ZSxjZSxZLGIpe3ZhciBOLEY7Tj1ZLEY9eD0+eD9iKHgpOm5lKFks''@;'; put 'put ''dWUsYiksSS5zdGF0KGNlLChnLEMpPT5nP0YoZyk6aihOLEMuYXRpbWUsQy5tdGltZSxGKSl9ZnVuY3Rpb24gbmUodWUsY2UsWSl7cmV0dXJuIEkuY2htb2QodWUsY2UsWSl9ZnVuY3Rpb24gaWUodWUsY2UsWSxiKXtJLnJlYWRkaXIodWUsKHgsTik9Png/Yih4KTpsZShOLHVlLGNlLFksYikp''@;'; put 'put ''fWZ1bmN0aW9uIGxlKHVlLGNlLFksYix4KXtjb25zdCBOPXVlLnBvcCgpO3JldHVybiBOP2Z1bmN0aW9uKEYsZyxDLE0seSxwKXtjb25zdCBTPVIuam9pbihDLGcpLFE9Ui5qb2luKE0sZyk7Vi5jaGVja1BhdGhzKFMsUSwiY29weSIseSwocmUsZmUpPT57aWYocmUpcmV0dXJuIHAocmUpO2Nv''@;'; put 'put ''bnN0e2Rlc3RTdGF0Om1lfT1mZTt2YXIga2UsVGUsUGUsRmUsTmU7a2U9bWUsVGU9UyxQZT1RLE5lPWtlPT5rZT9wKGtlKTpsZShGLEMsTSx5LHApLChGZT15KS5maWx0ZXI/VyhVLGtlLFRlLFBlLEZlLE5lKTpVKGtlLFRlLFBlLEZlLE5lKX0pfSh1ZSxOLGNlLFksYix4KTp4KCl9SC5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKHVlLGNlLFksYil7ImZ1bmN0aW9uIiE9dHlwZW9mIFl8fGI/ImZ1bmN0aW9uIj09dHlwZW9mIFkmJihZPXtmaWx0ZXI6WX0pOihiPVksWT17fSksYj1ifHxmdW5jdGlvbigpe30sKFk9WXx8e30pLmNsb2JiZXI9ISgiY2xvYmJlciJpbiBZKXx8ISFZLmNsb2JiZXIsWS5v''@;'; put 'put ''dmVyd3JpdGU9Im92ZXJ3cml0ZSJpbiBZPyEhWS5vdmVyd3JpdGU6WS5jbG9iYmVyLFkucHJlc2VydmVUaW1lc3RhbXBzJiYiaWEzMiI9PT1LLmFyY2gmJkoud2FybigiZnMtZXh0cmE6IFVzaW5nIHRoZSBwcmVzZXJ2ZVRpbWVzdGFtcHMgb3B0aW9uIGluIDMyLWJpdCBub2RlIGlzIG5vdCBy''@;'; put 'put ''ZWNvbW1lbmRlZDtcblxuICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vanByaWNoYXJkc29uL25vZGUtZnMtZXh0cmEvaXNzdWVzLzI2OSIpLFYuY2hlY2tQYXRocyh1ZSxjZSwiY29weSIsWSwoeCxOKT0+e2lmKHgpcmV0dXJuIGIoeCk7Y29uc3R7c3JjU3RhdDpGLGRlc3RTdGF0Omd9PU47''@;'; put 'put ''Vi5jaGVja1BhcmVudFBhdGhzKHVlLEYsY2UsImNvcHkiLEM9PkM/YihDKTpZLmZpbHRlcj9XKEcsZyx1ZSxjZSxZLGIpOkcoZyx1ZSxjZSxZLGIpKX0pfX0sNjQ2NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg4OTgxKS5mcm9tQ2FsbGJhY2s7SC5leHBvcnRzPXtjb3B5Okso''@;'; put 'put ''TCg3MTg5KSl9fSw1NTkwOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDg5ODEpLmZyb21Qcm9taXNlLEo9TCg3NzQ5KSxJPUwoMjUyMCksUj1MKDEzODEpLEU9TCg0NTQyKSx6PUsoZnVuY3Rpb24oKXt2YXIgVj1zZShmdW5jdGlvbiooRyl7bGV0IFc7dHJ5e1c9eWllbGQgSi5y''@;'; put 'put ''ZWFkZGlyKEcpfWNhdGNoe3JldHVybiBSLm1rZGlycyhHKX1yZXR1cm4gUHJvbWlzZS5hbGwoVy5tYXAoVT0+RS5yZW1vdmUoSS5qb2luKEcsVSkpKSl9KTtyZXR1cm4gZnVuY3Rpb24oRyl7cmV0dXJuIFYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSk7ZnVuY3Rpb24gaihWKXtsZXQgRzt0''@;'; put 'put ''cnl7Rz1KLnJlYWRkaXJTeW5jKFYpfWNhdGNoe3JldHVybiBSLm1rZGlyc1N5bmMoVil9Ry5mb3JFYWNoKFc9PntXPUkuam9pbihWLFcpLEUucmVtb3ZlU3luYyhXKX0pfUguZXhwb3J0cz17ZW1wdHlEaXJTeW5jOmosZW1wdHlkaXJTeW5jOmosZW1wdHlEaXI6eixlbXB0eWRpcjp6fX0sNjUz''@;'; put 'put ''MDooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg4OTgxKS5mcm9tQ2FsbGJhY2ssSj1MKDI1MjApLEk9TCg3NyksUj1MKDEzODEpO0guZXhwb3J0cz17Y3JlYXRlRmlsZTpLKGZ1bmN0aW9uKEUseil7ZnVuY3Rpb24gaigpe0kud3JpdGVGaWxlKEUsIiIsVj0+e2lmKFYpcmV0dXJu''@;'; put 'put ''IHooVik7eigpfSl9SS5zdGF0KEUsKFYsRyk9PntpZighViYmRy5pc0ZpbGUoKSlyZXR1cm4geigpO2NvbnN0IFc9Si5kaXJuYW1lKEUpO0kuc3RhdChXLChVLHEpPT57aWYoVSlyZXR1cm4iRU5PRU5UIj09PVUuY29kZT9SLm1rZGlycyhXLHRlPT57aWYodGUpcmV0dXJuIHoodGUpO2ooKX0p''@;'; put 'put ''OnooVSk7cS5pc0RpcmVjdG9yeSgpP2ooKTpJLnJlYWRkaXIoVyx0ZT0+e2lmKHRlKXJldHVybiB6KHRlKX0pfSl9KX0pLGNyZWF0ZUZpbGVTeW5jOmZ1bmN0aW9uKEUpe2xldCB6O3RyeXt6PUkuc3RhdFN5bmMoRSl9Y2F0Y2h7fWlmKHomJnouaXNGaWxlKCkpcmV0dXJuO2NvbnN0IGo9Si5k''@;'; put 'put ''aXJuYW1lKEUpO3RyeXtJLnN0YXRTeW5jKGopLmlzRGlyZWN0b3J5KCl8fEkucmVhZGRpclN5bmMoail9Y2F0Y2goVil7aWYoIVZ8fCJFTk9FTlQiIT09Vi5jb2RlKXRocm93IFY7Ui5ta2RpcnNTeW5jKGopfUkud3JpdGVGaWxlU3luYyhFLCIiKX19fSwxNzIwOihILEIsTCk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7Y29uc3QgSz1MKDY1MzApLEo9TCg0MTQ3KSxJPUwoMzYzNSk7SC5leHBvcnRzPXtjcmVhdGVGaWxlOksuY3JlYXRlRmlsZSxjcmVhdGVGaWxlU3luYzpLLmNyZWF0ZUZpbGVTeW5jLGVuc3VyZUZpbGU6Sy5jcmVhdGVGaWxlLGVuc3VyZUZpbGVTeW5jOksuY3JlYXRlRmlsZVN5bmMs''@;'; put 'put ''Y3JlYXRlTGluazpKLmNyZWF0ZUxpbmssY3JlYXRlTGlua1N5bmM6Si5jcmVhdGVMaW5rU3luYyxlbnN1cmVMaW5rOkouY3JlYXRlTGluayxlbnN1cmVMaW5rU3luYzpKLmNyZWF0ZUxpbmtTeW5jLGNyZWF0ZVN5bWxpbms6SS5jcmVhdGVTeW1saW5rLGNyZWF0ZVN5bWxpbmtTeW5jOkkuY3Jl''@;'; put 'put ''YXRlU3ltbGlua1N5bmMsZW5zdXJlU3ltbGluazpJLmNyZWF0ZVN5bWxpbmssZW5zdXJlU3ltbGlua1N5bmM6SS5jcmVhdGVTeW1saW5rU3luY319LDQxNDc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoODk4MSkuZnJvbUNhbGxiYWNrLEo9TCgyNTIwKSxJPUwoNzcpLFI9TCgx''@;'; put 'put ''MzgxKSxFPUwoOTI1NykucGF0aEV4aXN0cyx7YXJlSWRlbnRpY2FsOnp9PUwoMjczMyk7SC5leHBvcnRzPXtjcmVhdGVMaW5rOksoZnVuY3Rpb24oaixWLEcpe2Z1bmN0aW9uIFcoVSxxKXtJLmxpbmsoVSxxLHRlPT57aWYodGUpcmV0dXJuIEcodGUpO0cobnVsbCl9KX1JLmxzdGF0KFYsKFUs''@;'; put 'put ''cSk9PntJLmxzdGF0KGosKHRlLG5lKT0+e2lmKHRlKXJldHVybiB0ZS5tZXNzYWdlPXRlLm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVMaW5rIiksRyh0ZSk7aWYocSYmeihuZSxxKSlyZXR1cm4gRyhudWxsKTtjb25zdCBpZT1KLmRpcm5hbWUoVik7RShpZSwobGUsZGUpPT5sZT9H''@;'; put 'put ''KGxlKTpkZT9XKGosVik6dm9pZCBSLm1rZGlycyhpZSx1ZT0+e2lmKHVlKXJldHVybiBHKHVlKTtXKGosVil9KSl9KX0pfSksY3JlYXRlTGlua1N5bmM6ZnVuY3Rpb24oaixWKXtsZXQgRzt0cnl7Rz1JLmxzdGF0U3luYyhWKX1jYXRjaHt9dHJ5e2NvbnN0IFU9SS5sc3RhdFN5bmMoaik7aWYo''@;'; put 'put ''RyYmeihVLEcpKXJldHVybn1jYXRjaChVKXt0aHJvdyBVLm1lc3NhZ2U9VS5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlTGluayIpLFV9Y29uc3QgVz1KLmRpcm5hbWUoVik7cmV0dXJuIEkuZXhpc3RzU3luYyhXKXx8Ui5ta2RpcnNTeW5jKFcpLEkubGlua1N5bmMoaixWKX19fSw2''@;'; put 'put ''MDcyOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDI1MjApLEo9TCg3NyksST1MKDkyNTcpLnBhdGhFeGlzdHM7SC5leHBvcnRzPXtzeW1saW5rUGF0aHM6ZnVuY3Rpb24oUixFLHope2lmKEsuaXNBYnNvbHV0ZShSKSlyZXR1cm4gSi5sc3RhdChSLGo9Pmo/KGoubWVzc2FnZT1q''@;'; put 'put ''Lm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVTeW1saW5rIikseihqKSk6eihudWxsLHt0b0N3ZDpSLHRvRHN0OlJ9KSk7e2NvbnN0IGo9Sy5kaXJuYW1lKEUpLFY9Sy5qb2luKGosUik7cmV0dXJuIEkoViwoRyxXKT0+Rz96KEcpOlc/eihudWxsLHt0b0N3ZDpWLHRvRHN0OlJ9KTpK''@;'; put 'put ''LmxzdGF0KFIsVT0+VT8oVS5tZXNzYWdlPVUubWVzc2FnZS5yZXBsYWNlKCJsc3RhdCIsImVuc3VyZVN5bWxpbmsiKSx6KFUpKTp6KG51bGwse3RvQ3dkOlIsdG9Ec3Q6Sy5yZWxhdGl2ZShqLFIpfSkpKX19LHN5bWxpbmtQYXRoc1N5bmM6ZnVuY3Rpb24oUixFKXtsZXQgejtpZihLLmlzQWJz''@;'; put 'put ''b2x1dGUoUikpe2lmKHo9Si5leGlzdHNTeW5jKFIpLCF6KXRocm93IG5ldyBFcnJvcigiYWJzb2x1dGUgc3JjcGF0aCBkb2VzIG5vdCBleGlzdCIpO3JldHVybnt0b0N3ZDpSLHRvRHN0OlJ9fXtjb25zdCBqPUsuZGlybmFtZShFKSxWPUsuam9pbihqLFIpO2lmKHo9Si5leGlzdHNTeW5jKFYp''@;'; put 'put ''LHopcmV0dXJue3RvQ3dkOlYsdG9Ec3Q6Un07aWYoej1KLmV4aXN0c1N5bmMoUiksIXopdGhyb3cgbmV3IEVycm9yKCJyZWxhdGl2ZSBzcmNwYXRoIGRvZXMgbm90IGV4aXN0Iik7cmV0dXJue3RvQ3dkOlIsdG9Ec3Q6Sy5yZWxhdGl2ZShqLFIpfX19fX0sOTI1OTooSCxCLEwpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO2NvbnN0IEs9TCg3Nyk7SC5leHBvcnRzPXtzeW1saW5rVHlwZTpmdW5jdGlvbihKLEksUil7aWYoUj0iZnVuY3Rpb24iPT10eXBlb2YgST9JOlIsST0iZnVuY3Rpb24iIT10eXBlb2YgSSYmSSlyZXR1cm4gUihudWxsLEkpO0subHN0YXQoSiwoRSx6KT0+e2lmKEUpcmV0dXJuIFIo''@;'; put 'put ''bnVsbCwiZmlsZSIpO0k9eiYmei5pc0RpcmVjdG9yeSgpPyJkaXIiOiJmaWxlIixSKG51bGwsSSl9KX0sc3ltbGlua1R5cGVTeW5jOmZ1bmN0aW9uKEosSSl7bGV0IFI7aWYoSSlyZXR1cm4gSTt0cnl7Uj1LLmxzdGF0U3luYyhKKX1jYXRjaHtyZXR1cm4iZmlsZSJ9cmV0dXJuIFImJlIuaXNE''@;'; put 'put ''aXJlY3RvcnkoKT8iZGlyIjoiZmlsZSJ9fX0sMzYzNTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg4OTgxKS5mcm9tQ2FsbGJhY2ssSj1MKDI1MjApLEk9TCg3NzQ5KSxSPUwoMTM4MSksRT1SLm1rZGlycyx6PVIubWtkaXJzU3luYyxqPUwoNjA3MiksVj1qLnN5bWxpbmtQYXRo''@;'; put 'put ''cyxHPWouc3ltbGlua1BhdGhzU3luYyxXPUwoOTI1OSksVT1XLnN5bWxpbmtUeXBlLHE9Vy5zeW1saW5rVHlwZVN5bmMsdGU9TCg5MjU3KS5wYXRoRXhpc3RzLHthcmVJZGVudGljYWw6bmV9PUwoMjczMyk7ZnVuY3Rpb24gaWUobGUsZGUsdWUsY2Upe1YobGUsZGUsKFksYik9PntpZihZKXJl''@;'; put 'put ''dHVybiBjZShZKTtsZT1iLnRvRHN0LFUoYi50b0N3ZCx1ZSwoeCxOKT0+e2lmKHgpcmV0dXJuIGNlKHgpO2NvbnN0IEY9Si5kaXJuYW1lKGRlKTt0ZShGLChnLEMpPT5nP2NlKGcpOkM/SS5zeW1saW5rKGxlLGRlLE4sY2UpOnZvaWQgRShGLE09PntpZihNKXJldHVybiBjZShNKTtJLnN5bWxp''@;'; put 'put ''bmsobGUsZGUsTixjZSl9KSl9KX0pfUguZXhwb3J0cz17Y3JlYXRlU3ltbGluazpLKGZ1bmN0aW9uKGxlLGRlLHVlLGNlKXtjZT0iZnVuY3Rpb24iPT10eXBlb2YgdWU/dWU6Y2UsdWU9ImZ1bmN0aW9uIiE9dHlwZW9mIHVlJiZ1ZSxJLmxzdGF0KGRlLChZLGIpPT57IVkmJmIuaXNTeW1ib2xp''@;'; put 'put ''Y0xpbmsoKT9Qcm9taXNlLmFsbChbSS5zdGF0KGxlKSxJLnN0YXQoZGUpXSkudGhlbigoW3gsTl0pPT57aWYobmUoeCxOKSlyZXR1cm4gY2UobnVsbCk7aWUobGUsZGUsdWUsY2UpfSk6aWUobGUsZGUsdWUsY2UpfSl9KSxjcmVhdGVTeW1saW5rU3luYzpmdW5jdGlvbihsZSxkZSx1ZSl7bGV0''@;'; put 'put ''IGNlO3RyeXtjZT1JLmxzdGF0U3luYyhkZSl9Y2F0Y2h7fWlmKGNlJiZjZS5pc1N5bWJvbGljTGluaygpKXtjb25zdCB4PUkuc3RhdFN5bmMobGUpLE49SS5zdGF0U3luYyhkZSk7aWYobmUoeCxOKSlyZXR1cm59Y29uc3QgWT1HKGxlLGRlKTtsZT1ZLnRvRHN0LHVlPXEoWS50b0N3ZCx1ZSk7''@;'; put 'put ''Y29uc3QgYj1KLmRpcm5hbWUoZGUpO3JldHVybiBJLmV4aXN0c1N5bmMoYil8fHooYiksSS5zeW1saW5rU3luYyhsZSxkZSx1ZSl9fX0sNzc0OTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCg4OTgxKS5mcm9tQ2FsbGJhY2ssSj1MKDc3KSxJPVsiYWNjZXNzIiwiYXBwZW5kRmls''@;'; put 'put ''ZSIsImNobW9kIiwiY2hvd24iLCJjbG9zZSIsImNvcHlGaWxlIiwiZmNobW9kIiwiZmNob3duIiwiZmRhdGFzeW5jIiwiZnN0YXQiLCJmc3luYyIsImZ0cnVuY2F0ZSIsImZ1dGltZXMiLCJsY2htb2QiLCJsY2hvd24iLCJsaW5rIiwibHN0YXQiLCJta2RpciIsIm1rZHRlbXAiLCJvcGVuIiwi''@;'; put 'put ''b3BlbmRpciIsInJlYWRkaXIiLCJyZWFkRmlsZSIsInJlYWRsaW5rIiwicmVhbHBhdGgiLCJyZW5hbWUiLCJybSIsInJtZGlyIiwic3RhdCIsInN5bWxpbmsiLCJ0cnVuY2F0ZSIsInVubGluayIsInV0aW1lcyIsIndyaXRlRmlsZSJdLmZpbHRlcihSPT4iZnVuY3Rpb24iPT10eXBlb2YgSltS''@;'; put 'put ''XSk7T2JqZWN0LmFzc2lnbihCLEopLEkuZm9yRWFjaChSPT57QltSXT1LKEpbUl0pfSksQi5yZWFscGF0aC5uYXRpdmU9SyhKLnJlYWxwYXRoLm5hdGl2ZSksQi5leGlzdHM9ZnVuY3Rpb24oUixFKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgRT9KLmV4aXN0cyhSLEUpOm5ldyBQcm9taXNl''@;'; put 'put ''KHo9PkouZXhpc3RzKFIseikpfSxCLnJlYWQ9ZnVuY3Rpb24oUixFLHosaixWLEcpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBHP0oucmVhZChSLEUseixqLFYsRyk6bmV3IFByb21pc2UoKFcsVSk9PntKLnJlYWQoUixFLHosaixWLChxLHRlLG5lKT0+e2lmKHEpcmV0dXJuIFUocSk7Vyh7''@;'; put 'put ''Ynl0ZXNSZWFkOnRlLGJ1ZmZlcjpuZX0pfSl9KX0sQi53cml0ZT1mdW5jdGlvbihSLEUsLi4ueil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHpbei5sZW5ndGgtMV0/Si53cml0ZShSLEUsLi4ueik6bmV3IFByb21pc2UoKGosVik9PntKLndyaXRlKFIsRSwuLi56LChHLFcsVSk9PntpZihH''@;'; put 'put ''KXJldHVybiBWKEcpO2ooe2J5dGVzV3JpdHRlbjpXLGJ1ZmZlcjpVfSl9KX0pfSwiZnVuY3Rpb24iPT10eXBlb2YgSi53cml0ZXYmJihCLndyaXRldj1mdW5jdGlvbihSLEUsLi4ueil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHpbei5sZW5ndGgtMV0/Si53cml0ZXYoUixFLC4uLnopOm5l''@;'; put 'put ''dyBQcm9taXNlKChqLFYpPT57Si53cml0ZXYoUixFLC4uLnosKEcsVyxVKT0+e2lmKEcpcmV0dXJuIFYoRyk7aih7Ynl0ZXNXcml0dGVuOlcsYnVmZmVyczpVfSl9KX0pfSl9LDU2NzQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ey4uLkwoNzc0OSksLi4uTCg4NjkwKSwuLi5M''@;'; put 'put ''KDY0NjQpLC4uLkwoNTU5MCksLi4uTCgxNzIwKSwuLi5MKDY1NzMpLC4uLkwoMTM4MSksLi4uTCg0MDI2KSwuLi5MKDUzMCksLi4uTCgxMzE1KSwuLi5MKDkyNTcpLC4uLkwoNDU0Mil9fSw2NTczOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDg5ODEpLmZyb21Qcm9taXNlLEo9''@;'; put 'put ''TCg3MTgzKTtKLm91dHB1dEpzb249SyhMKDM1MDgpKSxKLm91dHB1dEpzb25TeW5jPUwoOTU3OCksSi5vdXRwdXRKU09OPUoub3V0cHV0SnNvbixKLm91dHB1dEpTT05TeW5jPUoub3V0cHV0SnNvblN5bmMsSi53cml0ZUpTT049Si53cml0ZUpzb24sSi53cml0ZUpTT05TeW5jPUoud3JpdGVK''@;'; put 'put ''c29uU3luYyxKLnJlYWRKU09OPUoucmVhZEpzb24sSi5yZWFkSlNPTlN5bmM9Si5yZWFkSnNvblN5bmMsSC5leHBvcnRzPUp9LDcxODM6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNjgxMyk7SC5leHBvcnRzPXtyZWFkSnNvbjpLLnJlYWRGaWxlLHJlYWRKc29uU3luYzpLLnJl''@;'; put 'put ''YWRGaWxlU3luYyx3cml0ZUpzb246Sy53cml0ZUZpbGUsd3JpdGVKc29uU3luYzpLLndyaXRlRmlsZVN5bmN9fSw5NTc4OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3R7c3RyaW5naWZ5Okt9PUwoNjc4MCkse291dHB1dEZpbGVTeW5jOkp9PUwoMTMxNSk7SC5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KEksUixFKXtjb25zdCB6PUsoUixFKTtKKEkseixFKX19LDM1MDg6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdHtzdHJpbmdpZnk6S309TCg2NzgwKSx7b3V0cHV0RmlsZTpKfT1MKDEzMTUpO0guZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBJPXNlKGZ1bmN0aW9uKihSLEUsej17fSl7Y29u''@;'; put 'put ''c3Qgaj1LKEUseik7eWllbGQgSihSLGoseil9KTtyZXR1cm4gZnVuY3Rpb24oUixFKXtyZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSwxMzgxOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDg5ODEpLmZyb21Qcm9taXNlLHttYWtlRGlyOkosbWFrZURpclN5bmM6''@;'; put 'put ''SX09TCg4MjMzKSxSPUsoSik7SC5leHBvcnRzPXtta2RpcnM6Uixta2RpcnNTeW5jOkksbWtkaXJwOlIsbWtkaXJwU3luYzpJLGVuc3VyZURpcjpSLGVuc3VyZURpclN5bmM6SX19LDgyMzM6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNzc0OSkse2NoZWNrUGF0aDpKfT1MKDM0''@;'; put 'put ''NjgpLEk9Uj0+Im51bWJlciI9PXR5cGVvZiBSP1I6e21vZGU6NTExLC4uLlJ9Lm1vZGU7SC5leHBvcnRzLm1ha2VEaXI9ZnVuY3Rpb24oKXt2YXIgUj1zZShmdW5jdGlvbiooRSx6KXtyZXR1cm4gSihFKSxLLm1rZGlyKEUse21vZGU6SSh6KSxyZWN1cnNpdmU6ITB9KX0pO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihFLHope3JldHVybiBSLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksSC5leHBvcnRzLm1ha2VEaXJTeW5jPShSLEUpPT4oSihSKSxLLm1rZGlyU3luYyhSLHttb2RlOkkoRSkscmVjdXJzaXZlOiEwfSkpfSwzNDY4OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KTtj''@;'; put 'put ''b25zdCBKPUwoMjUyMCk7SC5leHBvcnRzLmNoZWNrUGF0aD1mdW5jdGlvbihJKXtpZigid2luMzIiPT09Sy5wbGF0Zm9ybSYmL1s8PjoifD8qXS8udGVzdChJLnJlcGxhY2UoSi5wYXJzZShJKS5yb290LCIiKSkpe2NvbnN0IFI9bmV3IEVycm9yKGBQYXRoIGNvbnRhaW5zIGludmFsaWQgY2hh''@;'; put 'put ''cmFjdGVyczogJHtJfWApO3Rocm93IFIuY29kZT0iRUlOVkFMIixSfX19LDQwMjY6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9e21vdmVTeW5jOkwoNjAwNil9fSw2MDA2OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDc3KSxKPUwoMjUyMCksST1MKDg2OTApLmNv''@;'; put 'put ''cHlTeW5jLFI9TCg0NTQyKS5yZW1vdmVTeW5jLEU9TCgxMzgxKS5ta2RpcnBTeW5jLHo9TCgyNzMzKTtmdW5jdGlvbiBqKFYsRyxXKXt0cnl7Sy5yZW5hbWVTeW5jKFYsRyl9Y2F0Y2goVSl7aWYoIkVYREVWIiE9PVUuY29kZSl0aHJvdyBVO3JldHVybiBJKHE9VixHLHtvdmVyd3JpdGU6Vyxl''@;'; put 'put ''cnJvck9uRXhpc3Q6ITB9KSxSKHEpfXZhciBxfUguZXhwb3J0cz1mdW5jdGlvbihWLEcsVyl7Y29uc3QgVT0oVz1XfHx7fSkub3ZlcndyaXRlfHxXLmNsb2JiZXJ8fCExLHtzcmNTdGF0OnEsaXNDaGFuZ2luZ0Nhc2U6dGU9ITF9PXouY2hlY2tQYXRoc1N5bmMoVixHLCJtb3ZlIixXKTtyZXR1''@;'; put 'put ''cm4gei5jaGVja1BhcmVudFBhdGhzU3luYyhWLHEsRywibW92ZSIpLGZ1bmN0aW9uKG5lKXtjb25zdCBpZT1KLmRpcm5hbWUobmUpO3JldHVybiBKLnBhcnNlKGllKS5yb290PT09aWV9KEcpfHxFKEouZGlybmFtZShHKSksZnVuY3Rpb24obmUsaWUsbGUsZGUpe2lmKGRlKXJldHVybiBqKG5l''@;'; put 'put ''LGllLGxlKTtpZihsZSlyZXR1cm4gUihpZSksaihuZSxpZSxsZSk7aWYoSy5leGlzdHNTeW5jKGllKSl0aHJvdyBuZXcgRXJyb3IoImRlc3QgYWxyZWFkeSBleGlzdHMuIik7cmV0dXJuIGoobmUsaWUsbGUpfShWLEcsVSx0ZSl9fSw1MzA6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBL''@;'; put 'put ''PUwoODk4MSkuZnJvbUNhbGxiYWNrO0guZXhwb3J0cz17bW92ZTpLKEwoNDM2KSl9fSw0MzY6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNzcpLEo9TCgyNTIwKSxJPUwoNjQ2NCkuY29weSxSPUwoNDU0MikucmVtb3ZlLEU9TCgxMzgxKS5ta2RpcnAsej1MKDkyNTcpLnBhdGhF''@;'; put 'put ''eGlzdHMsaj1MKDI3MzMpO2Z1bmN0aW9uIFYoVyxVLHEsdGUsbmUpe3JldHVybiB0ZT9HKFcsVSxxLG5lKTpxP1IoVSxpZT0+aWU/bmUoaWUpOkcoVyxVLHEsbmUpKTp2b2lkIHooVSwoaWUsbGUpPT5pZT9uZShpZSk6bGU/bmUobmV3IEVycm9yKCJkZXN0IGFscmVhZHkgZXhpc3RzLiIpKTpH''@;'; put 'put ''KFcsVSxxLG5lKSl9ZnVuY3Rpb24gRyhXLFUscSx0ZSl7Sy5yZW5hbWUoVyxVLG5lPT57cmV0dXJuIG5lPyJFWERFViIhPT1uZS5jb2RlP3RlKG5lKToodWU9dGUsdm9pZCBJKGllPVcsVSx7b3ZlcndyaXRlOnEsZXJyb3JPbkV4aXN0OiEwfSxZPT5ZP3VlKFkpOlIoaWUsdWUpKSk6dGUoKTt2''@;'; put 'put ''YXIgaWUsdWV9KX1ILmV4cG9ydHM9ZnVuY3Rpb24oVyxVLHEsdGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBxJiYodGU9cSxxPXt9KTtjb25zdCBuZT1xLm92ZXJ3cml0ZXx8cS5jbG9iYmVyfHwhMTtqLmNoZWNrUGF0aHMoVyxVLCJtb3ZlIixxLChpZSxsZSk9PntpZihpZSlyZXR1cm4gdGUoaWUp''@;'; put 'put ''O2NvbnN0e3NyY1N0YXQ6ZGUsaXNDaGFuZ2luZ0Nhc2U6dWU9ITF9PWxlO2ouY2hlY2tQYXJlbnRQYXRocyhXLGRlLFUsIm1vdmUiLGNlPT5jZT90ZShjZSk6ZnVuY3Rpb24oWSl7Y29uc3QgYj1KLmRpcm5hbWUoWSk7cmV0dXJuIEoucGFyc2UoYikucm9vdD09PWJ9KFUpP1YoVyxVLG5lLHVl''@;'; put 'put ''LHRlKTp2b2lkIEUoSi5kaXJuYW1lKFUpLFk9Plk/dGUoWSk6VihXLFUsbmUsdWUsdGUpKSl9KX19LDEzMTU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoODk4MSkuZnJvbUNhbGxiYWNrLEo9TCg3NyksST1MKDI1MjApLFI9TCgxMzgxKSxFPUwoOTI1NykucGF0aEV4aXN0cztI''@;'; put 'put ''LmV4cG9ydHM9e291dHB1dEZpbGU6SyhmdW5jdGlvbih6LGosVixHKXsiZnVuY3Rpb24iPT10eXBlb2YgViYmKEc9VixWPSJ1dGY4Iik7Y29uc3QgVz1JLmRpcm5hbWUoeik7RShXLChVLHEpPT5VP0coVSk6cT9KLndyaXRlRmlsZSh6LGosVixHKTp2b2lkIFIubWtkaXJzKFcsdGU9PntpZih0''@;'; put 'put ''ZSlyZXR1cm4gRyh0ZSk7Si53cml0ZUZpbGUoeixqLFYsRyl9KSl9KSxvdXRwdXRGaWxlU3luYzpmdW5jdGlvbih6LC4uLmope2NvbnN0IFY9SS5kaXJuYW1lKHopO2lmKEouZXhpc3RzU3luYyhWKSlyZXR1cm4gSi53cml0ZUZpbGVTeW5jKHosLi4uaik7Ui5ta2RpcnNTeW5jKFYpLEoud3Jp''@;'; put 'put ''dGVGaWxlU3luYyh6LC4uLmopfX19LDkyNTc6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoODk4MSkuZnJvbVByb21pc2UsSj1MKDc3NDkpO0guZXhwb3J0cz17cGF0aEV4aXN0czpLKGZ1bmN0aW9uKEkpe3JldHVybiBKLmFjY2VzcyhJKS50aGVuKCgpPT4hMCkuY2F0Y2goKCk9''@;'; put 'put ''PiExKX0pLHBhdGhFeGlzdHNTeW5jOkouZXhpc3RzU3luY319LDQ1NDI6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNzcpLEo9TCg4OTgxKS5mcm9tQ2FsbGJhY2ssST1MKDM0NTYpO0guZXhwb3J0cz17cmVtb3ZlOkooZnVuY3Rpb24oUixFKXtpZihLLnJtKXJldHVybiBLLnJt''@;'; put 'put ''KFIse3JlY3Vyc2l2ZTohMCxmb3JjZTohMH0sRSk7SShSLEUpfSkscmVtb3ZlU3luYzpmdW5jdGlvbihSKXtpZihLLnJtU3luYylyZXR1cm4gSy5ybVN5bmMoUix7cmVjdXJzaXZlOiEwLGZvcmNlOiEwfSk7SS5zeW5jKFIpfX19LDM0NTY6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1M''@;'; put 'put ''KDQxNTUpO2NvbnN0IEo9TCg3NyksST1MKDI1MjApLFI9TCg5MjgyKSxFPSJ3aW4zMiI9PT1LLnBsYXRmb3JtO2Z1bmN0aW9uIHoobmUpe1sidW5saW5rIiwiY2htb2QiLCJzdGF0IiwibHN0YXQiLCJybWRpciIsInJlYWRkaXIiXS5mb3JFYWNoKGllPT57bmVbaWVdPW5lW2llXXx8SltpZV0s''@;'; put 'put ''bmVbaWUrPSJTeW5jIl09bmVbaWVdfHxKW2llXX0pLG5lLm1heEJ1c3lUcmllcz1uZS5tYXhCdXN5VHJpZXN8fDN9ZnVuY3Rpb24gaihuZSxpZSxsZSl7bGV0IGRlPTA7ImZ1bmN0aW9uIj09dHlwZW9mIGllJiYobGU9aWUsaWU9e30pLFIobmUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksUi5z''@;'; put 'put ''dHJpY3RFcXVhbCh0eXBlb2YgbmUsInN0cmluZyIsInJpbXJhZjogcGF0aCBzaG91bGQgYmUgYSBzdHJpbmciKSxSLnN0cmljdEVxdWFsKHR5cGVvZiBsZSwiZnVuY3Rpb24iLCJyaW1yYWY6IGNhbGxiYWNrIGZ1bmN0aW9uIHJlcXVpcmVkIiksUihpZSwicmltcmFmOiBpbnZhbGlkIG9wdGlv''@;'; put 'put ''bnMgYXJndW1lbnQgcHJvdmlkZWQiKSxSLnN0cmljdEVxdWFsKHR5cGVvZiBpZSwib2JqZWN0IiwicmltcmFmOiBvcHRpb25zIHNob3VsZCBiZSBvYmplY3QiKSx6KGllKSxWKG5lLGllLGZ1bmN0aW9uIHVlKGNlKXtpZihjZSl7aWYoKCJFQlVTWSI9PT1jZS5jb2RlfHwiRU5PVEVNUFRZIj09''@;'; put 'put ''PWNlLmNvZGV8fCJFUEVSTSI9PT1jZS5jb2RlKSYmZGU8aWUubWF4QnVzeVRyaWVzKXJldHVybiBkZSsrLHNldFRpbWVvdXQoKCk9PlYobmUsaWUsdWUpLDEwMCpkZSk7IkVOT0VOVCI9PT1jZS5jb2RlJiYoY2U9bnVsbCl9bGUoY2UpfSl9ZnVuY3Rpb24gVihuZSxpZSxsZSl7UihuZSksUihp''@;'; put 'put ''ZSksUigiZnVuY3Rpb24iPT10eXBlb2YgbGUpLGllLmxzdGF0KG5lLChkZSx1ZSk9PmRlJiYiRU5PRU5UIj09PWRlLmNvZGU/bGUobnVsbCk6ZGUmJiJFUEVSTSI9PT1kZS5jb2RlJiZFP0cobmUsaWUsZGUsbGUpOnVlJiZ1ZS5pc0RpcmVjdG9yeSgpP1UobmUsaWUsZGUsbGUpOnZvaWQgaWUu''@;'; put 'put ''dW5saW5rKG5lLGNlPT57aWYoY2Upe2lmKCJFTk9FTlQiPT09Y2UuY29kZSlyZXR1cm4gbGUobnVsbCk7aWYoIkVQRVJNIj09PWNlLmNvZGUpcmV0dXJuIEU/RyhuZSxpZSxjZSxsZSk6VShuZSxpZSxjZSxsZSk7aWYoIkVJU0RJUiI9PT1jZS5jb2RlKXJldHVybiBVKG5lLGllLGNlLGxlKX1y''@;'; put 'put ''ZXR1cm4gbGUoY2UpfSkpfWZ1bmN0aW9uIEcobmUsaWUsbGUsZGUpe1IobmUpLFIoaWUpLFIoImZ1bmN0aW9uIj09dHlwZW9mIGRlKSxpZS5jaG1vZChuZSw0MzgsdWU9Pnt1ZT9kZSgiRU5PRU5UIj09PXVlLmNvZGU/bnVsbDpsZSk6aWUuc3RhdChuZSwoY2UsWSk9PntjZT9kZSgiRU5PRU5U''@;'; put 'put ''Ij09PWNlLmNvZGU/bnVsbDpsZSk6WS5pc0RpcmVjdG9yeSgpP1UobmUsaWUsbGUsZGUpOmllLnVubGluayhuZSxkZSl9KX0pfWZ1bmN0aW9uIFcobmUsaWUsbGUpe2xldCBkZTtSKG5lKSxSKGllKTt0cnl7aWUuY2htb2RTeW5jKG5lLDQzOCl9Y2F0Y2godWUpe2lmKCJFTk9FTlQiPT09dWUu''@;'; put 'put ''Y29kZSlyZXR1cm47dGhyb3cgbGV9dHJ5e2RlPWllLnN0YXRTeW5jKG5lKX1jYXRjaCh1ZSl7aWYoIkVOT0VOVCI9PT11ZS5jb2RlKXJldHVybjt0aHJvdyBsZX1kZS5pc0RpcmVjdG9yeSgpP3RlKG5lLGllLGxlKTppZS51bmxpbmtTeW5jKG5lKX1mdW5jdGlvbiBVKG5lLGllLGxlLGRlKXtS''@;'; put 'put ''KG5lKSxSKGllKSxSKCJmdW5jdGlvbiI9PXR5cGVvZiBkZSksaWUucm1kaXIobmUsdWU9Pnt2YXIgY2UsWSxiOyF1ZXx8IkVOT1RFTVBUWSIhPT11ZS5jb2RlJiYiRUVYSVNUIiE9PXVlLmNvZGUmJiJFUEVSTSIhPT11ZS5jb2RlP2RlKHVlJiYiRU5PVERJUiI9PT11ZS5jb2RlP2xlOnVlKToo''@;'; put 'put ''WT1pZSxiPWRlLFIoY2U9bmUpLFIoWSksUigiZnVuY3Rpb24iPT10eXBlb2YgYiksWS5yZWFkZGlyKGNlLCh4LE4pPT57aWYoeClyZXR1cm4gYih4KTtsZXQgRixnPU4ubGVuZ3RoO2lmKDA9PT1nKXJldHVybiBZLnJtZGlyKGNlLGIpO04uZm9yRWFjaChDPT57aihJLmpvaW4oY2UsQyksWSxN''@;'; put 'put ''PT57aWYoIUYpcmV0dXJuIE0/YihGPU0pOnZvaWQoMD09LS1nJiZZLnJtZGlyKGNlLGIpKX0pfSl9KSl9KX1mdW5jdGlvbiBxKG5lLGllKXtsZXQgbGU7eihpZT1pZXx8e30pLFIobmUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksUi5zdHJpY3RFcXVhbCh0eXBlb2YgbmUsInN0cmluZyIsInJp''@;'; put 'put ''bXJhZjogcGF0aCBzaG91bGQgYmUgYSBzdHJpbmciKSxSKGllLCJyaW1yYWY6IG1pc3Npbmcgb3B0aW9ucyIpLFIuc3RyaWN0RXF1YWwodHlwZW9mIGllLCJvYmplY3QiLCJyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpO3RyeXtsZT1pZS5sc3RhdFN5bmMobmUpfWNhdGNoKGRl''@;'; put 'put ''KXtpZigiRU5PRU5UIj09PWRlLmNvZGUpcmV0dXJuOyJFUEVSTSI9PT1kZS5jb2RlJiZFJiZXKG5lLGllLGRlKX10cnl7bGUmJmxlLmlzRGlyZWN0b3J5KCk/dGUobmUsaWUsbnVsbCk6aWUudW5saW5rU3luYyhuZSl9Y2F0Y2goZGUpe2lmKCJFTk9FTlQiPT09ZGUuY29kZSlyZXR1cm47aWYo''@;'; put 'put ''IkVQRVJNIj09PWRlLmNvZGUpcmV0dXJuIEU/VyhuZSxpZSxkZSk6dGUobmUsaWUsZGUpO2lmKCJFSVNESVIiIT09ZGUuY29kZSl0aHJvdyBkZTt0ZShuZSxpZSxkZSl9fWZ1bmN0aW9uIHRlKG5lLGllLGxlKXtSKG5lKSxSKGllKTt0cnl7aWUucm1kaXJTeW5jKG5lKX1jYXRjaChkZSl7aWYo''@;'; put 'put ''IkVOT1RESVIiPT09ZGUuY29kZSl0aHJvdyBsZTtpZigiRU5PVEVNUFRZIj09PWRlLmNvZGV8fCJFRVhJU1QiPT09ZGUuY29kZXx8IkVQRVJNIj09PWRlLmNvZGUpIWZ1bmN0aW9uKHVlLGNlKXtpZihSKHVlKSxSKGNlKSxjZS5yZWFkZGlyU3luYyh1ZSkuZm9yRWFjaChZPT5xKEkuam9pbih1''@;'; put 'put ''ZSxZKSxjZSkpLCFFKXJldHVybiBjZS5ybWRpclN5bmModWUsY2UpO3tjb25zdCBZPURhdGUubm93KCk7ZG97dHJ5e3JldHVybiBjZS5ybWRpclN5bmModWUsY2UpfWNhdGNoe319d2hpbGUoRGF0ZS5ub3coKS1ZPDUwMCl9fShuZSxpZSk7ZWxzZSBpZigiRU5PRU5UIiE9PWRlLmNvZGUpdGhy''@;'; put 'put ''b3cgZGV9fUguZXhwb3J0cz1qLGouc3luYz1xfSwyNzMzOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDc3NDkpLEo9TCgyNTIwKSxJPUwoOTUzOSk7ZnVuY3Rpb24gUihWLEcsVyl7Y29uc3QgVT1XLmRlcmVmZXJlbmNlP3E9Pksuc3RhdChxLHtiaWdpbnQ6ITB9KTpxPT5LLmxz''@;'; put 'put ''dGF0KHEse2JpZ2ludDohMH0pO3JldHVybiBQcm9taXNlLmFsbChbVShWKSxVKEcpLmNhdGNoKHE9PntpZigiRU5PRU5UIj09PXEuY29kZSlyZXR1cm4gbnVsbDt0aHJvdyBxfSldKS50aGVuKChbcSx0ZV0pPT4oe3NyY1N0YXQ6cSxkZXN0U3RhdDp0ZX0pKX1mdW5jdGlvbiBFKFYsRyl7cmV0''@;'; put 'put ''dXJuIEcuaW5vJiZHLmRldiYmRy5pbm89PT1WLmlubyYmRy5kZXY9PT1WLmRldn1mdW5jdGlvbiB6KFYsRyl7Y29uc3QgVz1KLnJlc29sdmUoVikuc3BsaXQoSi5zZXApLmZpbHRlcihxPT5xKSxVPUoucmVzb2x2ZShHKS5zcGxpdChKLnNlcCkuZmlsdGVyKHE9PnEpO3JldHVybiBXLnJlZHVj''@;'; put 'put ''ZSgocSx0ZSxuZSk9PnEmJlVbbmVdPT09dGUsITApfWZ1bmN0aW9uIGooVixHLFcpe3JldHVybmBDYW5ub3QgJHtXfSAnJHtWfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtHfScuYH1ILmV4cG9ydHM9e2NoZWNrUGF0aHM6ZnVuY3Rpb24oVixHLFcsVSxxKXtJLmNhbGxiYWNr''@;'; put 'put ''aWZ5KFIpKFYsRyxVLCh0ZSxuZSk9PntpZih0ZSlyZXR1cm4gcSh0ZSk7Y29uc3R7c3JjU3RhdDppZSxkZXN0U3RhdDpsZX09bmU7aWYobGUpe2lmKEUoaWUsbGUpKXtjb25zdCBkZT1KLmJhc2VuYW1lKFYpLHVlPUouYmFzZW5hbWUoRyk7cmV0dXJuIm1vdmUiPT09VyYmZGUhPT11ZSYmZGUu''@;'; put 'put ''dG9Mb3dlckNhc2UoKT09PXVlLnRvTG93ZXJDYXNlKCk/cShudWxsLHtzcmNTdGF0OmllLGRlc3RTdGF0OmxlLGlzQ2hhbmdpbmdDYXNlOiEwfSk6cShuZXcgRXJyb3IoIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gbXVzdCBub3QgYmUgdGhlIHNhbWUuIikpfWlmKGllLmlzRGlyZWN0b3J5KCkm''@;'; put 'put ''JiFsZS5pc0RpcmVjdG9yeSgpKXJldHVybiBxKG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSBub24tZGlyZWN0b3J5ICcke0d9JyB3aXRoIGRpcmVjdG9yeSAnJHtWfScuYCkpO2lmKCFpZS5pc0RpcmVjdG9yeSgpJiZsZS5pc0RpcmVjdG9yeSgpKXJldHVybiBxKG5ldyBFcnJvcihgQ2Fu''@;'; put 'put ''bm90IG92ZXJ3cml0ZSBkaXJlY3RvcnkgJyR7R30nIHdpdGggbm9uLWRpcmVjdG9yeSAnJHtWfScuYCkpfXJldHVybiBpZS5pc0RpcmVjdG9yeSgpJiZ6KFYsRyk/cShuZXcgRXJyb3IoaihWLEcsVykpKTpxKG51bGwse3NyY1N0YXQ6aWUsZGVzdFN0YXQ6bGV9KX0pfSxjaGVja1BhdGhzU3lu''@;'; put 'put ''YzpmdW5jdGlvbihWLEcsVyxVKXtjb25zdHtzcmNTdGF0OnEsZGVzdFN0YXQ6dGV9PWZ1bmN0aW9uKG5lLGllLGxlKXtsZXQgZGU7Y29uc3QgdWU9bGUuZGVyZWZlcmVuY2U/WT0+Sy5zdGF0U3luYyhZLHtiaWdpbnQ6ITB9KTpZPT5LLmxzdGF0U3luYyhZLHtiaWdpbnQ6ITB9KSxjZT11ZShu''@;'; put 'put ''ZSk7dHJ5e2RlPXVlKGllKX1jYXRjaChZKXtpZigiRU5PRU5UIj09PVkuY29kZSlyZXR1cm57c3JjU3RhdDpjZSxkZXN0U3RhdDpudWxsfTt0aHJvdyBZfXJldHVybntzcmNTdGF0OmNlLGRlc3RTdGF0OmRlfX0oVixHLFUpO2lmKHRlKXtpZihFKHEsdGUpKXtjb25zdCBuZT1KLmJhc2VuYW1l''@;'; put 'put ''KFYpLGllPUouYmFzZW5hbWUoRyk7aWYoIm1vdmUiPT09VyYmbmUhPT1pZSYmbmUudG9Mb3dlckNhc2UoKT09PWllLnRvTG93ZXJDYXNlKCkpcmV0dXJue3NyY1N0YXQ6cSxkZXN0U3RhdDp0ZSxpc0NoYW5naW5nQ2FzZTohMH07dGhyb3cgbmV3IEVycm9yKCJTb3VyY2UgYW5kIGRlc3RpbmF0''@;'; put 'put ''aW9uIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpfWlmKHEuaXNEaXJlY3RvcnkoKSYmIXRlLmlzRGlyZWN0b3J5KCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7R30nIHdpdGggZGlyZWN0b3J5ICcke1Z9Jy5gKTtpZighcS5pc0RpcmVjdG9yeSgp''@;'; put 'put ''JiZ0ZS5pc0RpcmVjdG9yeSgpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSBkaXJlY3RvcnkgJyR7R30nIHdpdGggbm9uLWRpcmVjdG9yeSAnJHtWfScuYCl9aWYocS5pc0RpcmVjdG9yeSgpJiZ6KFYsRykpdGhyb3cgbmV3IEVycm9yKGooVixHLFcpKTtyZXR1cm57c3JjU3Rh''@;'; put 'put ''dDpxLGRlc3RTdGF0OnRlfX0sY2hlY2tQYXJlbnRQYXRoczpmdW5jdGlvbiBWKEcsVyxVLHEsdGUpe2NvbnN0IG5lPUoucmVzb2x2ZShKLmRpcm5hbWUoRykpLGllPUoucmVzb2x2ZShKLmRpcm5hbWUoVSkpO2lmKGllPT09bmV8fGllPT09Si5wYXJzZShpZSkucm9vdClyZXR1cm4gdGUoKTtL''@;'; put 'put ''LnN0YXQoaWUse2JpZ2ludDohMH0sKGxlLGRlKT0+bGU/IkVOT0VOVCI9PT1sZS5jb2RlP3RlKCk6dGUobGUpOkUoVyxkZSk/dGUobmV3IEVycm9yKGooRyxVLHEpKSk6VihHLFcsaWUscSx0ZSkpfSxjaGVja1BhcmVudFBhdGhzU3luYzpmdW5jdGlvbiBWKEcsVyxVLHEpe2NvbnN0IHRlPUou''@;'; put 'put ''cmVzb2x2ZShKLmRpcm5hbWUoRykpLG5lPUoucmVzb2x2ZShKLmRpcm5hbWUoVSkpO2lmKG5lPT09dGV8fG5lPT09Si5wYXJzZShuZSkucm9vdClyZXR1cm47bGV0IGllO3RyeXtpZT1LLnN0YXRTeW5jKG5lLHtiaWdpbnQ6ITB9KX1jYXRjaChsZSl7aWYoIkVOT0VOVCI9PT1sZS5jb2RlKXJl''@;'; put 'put ''dHVybjt0aHJvdyBsZX1pZihFKFcsaWUpKXRocm93IG5ldyBFcnJvcihqKEcsVSxxKSk7cmV0dXJuIFYoRyxXLG5lLHEpfSxpc1NyY1N1YmRpcjp6LGFyZUlkZW50aWNhbDpFfX0sMzE4OihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDc3KTtILmV4cG9ydHM9e3V0aW1lc01pbGxp''@;'; put 'put ''czpmdW5jdGlvbihKLEksUixFKXtLLm9wZW4oSiwicisiLCh6LGopPT57aWYoeilyZXR1cm4gRSh6KTtLLmZ1dGltZXMoaixJLFIsVj0+e0suY2xvc2UoaixHPT57RSYmRShWfHxHKX0pfSl9KX0sdXRpbWVzTWlsbGlzU3luYzpmdW5jdGlvbihKLEksUil7Y29uc3QgRT1LLm9wZW5TeW5jKEos''@;'; put 'put ''InIrIik7cmV0dXJuIEsuZnV0aW1lc1N5bmMoRSxJLFIpLEsuY2xvc2VTeW5jKEUpfX19LDczMzQ6KEgsQixMKT0+e3ZhciBLPUwoNDE1NSk7SC5leHBvcnRzPUcsRy5yZWFscGF0aD1HLEcuc3luYz1XLEcucmVhbHBhdGhTeW5jPVcsRy5tb25rZXlwYXRjaD1mdW5jdGlvbigpe0oucmVhbHBh''@;'; put 'put ''dGg9RyxKLnJlYWxwYXRoU3luYz1XfSxHLnVubW9ua2V5cGF0Y2g9ZnVuY3Rpb24oKXtKLnJlYWxwYXRoPUksSi5yZWFscGF0aFN5bmM9Un07dmFyIEo9TCgyNTM1KSxJPUoucmVhbHBhdGgsUj1KLnJlYWxwYXRoU3luYyx6PS9edlswLTVdXC4vLnRlc3QoSy52ZXJzaW9uKSxqPUwoNzA1OSk7''@;'; put 'put ''ZnVuY3Rpb24gVihVKXtyZXR1cm4gVSYmInJlYWxwYXRoIj09PVUuc3lzY2FsbCYmKCJFTE9PUCI9PT1VLmNvZGV8fCJFTk9NRU0iPT09VS5jb2RlfHwiRU5BTUVUT09MT05HIj09PVUuY29kZSl9ZnVuY3Rpb24gRyhVLHEsdGUpe2lmKHopcmV0dXJuIEkoVSxxLHRlKTsiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgcSYmKHRlPXEscT1udWxsKSxJKFUscSxmdW5jdGlvbihuZSxpZSl7VihuZSk/ai5yZWFscGF0aChVLHEsdGUpOnRlKG5lLGllKX0pfWZ1bmN0aW9uIFcoVSxxKXtpZih6KXJldHVybiBSKFUscSk7dHJ5e3JldHVybiBSKFUscSl9Y2F0Y2godGUpe2lmKFYodGUpKXJldHVybiBqLnJl''@;'; put 'put ''YWxwYXRoU3luYyhVLHEpO3Rocm93IHRlfX19LDcwNTk6KEgsQixMKT0+e3ZhciBLPUwoNDE1NSksSj1MKDUxMDgpLEk9TCgyNTIwKSxSPSJ3aW4zMiI9PT1LLnBsYXRmb3JtLEU9TCgyNTM1KSx6PUsuZW52Lk5PREVfREVCVUcmJi9mcy8udGVzdChLLmVudi5OT0RFX0RFQlVHKTtpZihSKXZh''@;'; put 'put ''ciBWPS8oLio/KSg/OltcL1xcXSt8JCkvZztlbHNlIFY9LyguKj8pKD86W1wvXSt8JCkvZztpZihSKXZhciBHPS9eKD86W2EtekEtWl06fFtcXFwvXXsyfVteXFxcL10rW1xcXC9dW15cXFwvXSspP1tcXFwvXSovO2Vsc2UgRz0vXltcL10qLztCLnJlYWxwYXRoU3luYz1mdW5jdGlvbihXLFUp''@;'; put 'put ''e2lmKFc9SS5yZXNvbHZlKFcpLFUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChVLFcpKXJldHVybiBVW1ddO3ZhciBxLHRlLG5lLGllLGxlPVcsZGU9e30sdWU9e307ZnVuY3Rpb24gY2UoKXt2YXIgZz1HLmV4ZWMoVyk7cT1nWzBdLmxlbmd0aCx0ZT1nWzBdLG5lPWdb''@;'; put 'put ''MF0saWU9IiIsUiYmIXVlW25lXSYmKEUubHN0YXRTeW5jKG5lKSx1ZVtuZV09ITApfWZvcihjZSgpO3E8Vy5sZW5ndGg7KXtWLmxhc3RJbmRleD1xO3ZhciBZPVYuZXhlYyhXKTtpZihpZT10ZSx0ZSs9WVswXSxxPVYubGFzdEluZGV4LCEodWVbbmU9aWUrWVsxXV18fFUmJlVbbmVdPT09bmUp''@;'; put 'put ''KXt2YXIgYjtpZihVJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVSxuZSkpYj1VW25lXTtlbHNle3ZhciB4PUUubHN0YXRTeW5jKG5lKTtpZigheC5pc1N5bWJvbGljTGluaygpKXt1ZVtuZV09ITAsVSYmKFVbbmVdPW5lKTtjb250aW51ZX12YXIgTj1udWxsO2lmKCFS''@;'; put 'put ''KXt2YXIgRj14LmRldi50b1N0cmluZygzMikrIjoiK3guaW5vLnRvU3RyaW5nKDMyKTtkZS5oYXNPd25Qcm9wZXJ0eShGKSYmKE49ZGVbRl0pfW51bGw9PT1OJiYoRS5zdGF0U3luYyhuZSksTj1FLnJlYWRsaW5rU3luYyhuZSkpLGI9SS5yZXNvbHZlKGllLE4pLFUmJihVW25lXT1iKSxSfHwo''@;'; put 'put ''ZGVbRl09Til9Vz1JLnJlc29sdmUoYixXLnNsaWNlKHEpKSxjZSgpfX1yZXR1cm4gVSYmKFVbbGVdPVcpLFd9LEIucmVhbHBhdGg9ZnVuY3Rpb24oVyxVLHEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBxJiYocT1mdW5jdGlvbiBqKFcpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXP1c6ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgVTtpZih6KXt2YXIgcT1uZXcgRXJyb3I7VT1mdW5jdGlvbihuZSl7bmUmJihxLm1lc3NhZ2U9bmUubWVzc2FnZSx0ZShuZT1xKSl9fWVsc2UgVT10ZTtyZXR1cm4gVTtmdW5jdGlvbiB0ZShuZSl7aWYobmUpe2lmKEsudGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZTtpZigh''@;'; put 'put ''Sy5ub0RlcHJlY2F0aW9uKXt2YXIgaWU9ImZzOiBtaXNzaW5nIGNhbGxiYWNrICIrKG5lLnN0YWNrfHxuZS5tZXNzYWdlKTtLLnRyYWNlRGVwcmVjYXRpb24/Si50cmFjZShpZSk6Si5lcnJvcihpZSl9fX19KCl9KFUpLFU9bnVsbCksVz1JLnJlc29sdmUoVyksVSYmT2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUsVykpcmV0dXJuIEsubmV4dFRpY2socS5iaW5kKG51bGwsbnVsbCxVW1ddKSk7dmFyIHRlLG5lLGllLGxlLGRlPVcsdWU9e30sY2U9e307ZnVuY3Rpb24gWSgpe3ZhciBnPUcuZXhlYyhXKTt0ZT1nWzBdLmxlbmd0aCxuZT1nWzBdLGllPWdbMF0sbGU9''@;'; put 'put ''IiIsUiYmIWNlW2llXT9FLmxzdGF0KGllLGZ1bmN0aW9uKEMpe2lmKEMpcmV0dXJuIHEoQyk7Y2VbaWVdPSEwLGIoKX0pOksubmV4dFRpY2soYil9ZnVuY3Rpb24gYigpe2lmKHRlPj1XLmxlbmd0aClyZXR1cm4gVSYmKFVbZGVdPVcpLHEobnVsbCxXKTtWLmxhc3RJbmRleD10ZTt2YXIgZz1W''@;'; put 'put ''LmV4ZWMoVyk7cmV0dXJuIGxlPW5lLG5lKz1nWzBdLHRlPVYubGFzdEluZGV4LGNlW2llPWxlK2dbMV1dfHxVJiZVW2llXT09PWllP0submV4dFRpY2soYik6VSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUsaWUpP0YoVVtpZV0pOkUubHN0YXQoaWUseCl9ZnVuY3Rp''@;'; put 'put ''b24geChnLEMpe2lmKGcpcmV0dXJuIHEoZyk7aWYoIUMuaXNTeW1ib2xpY0xpbmsoKSlyZXR1cm4gY2VbaWVdPSEwLFUmJihVW2llXT1pZSksSy5uZXh0VGljayhiKTtpZighUil7dmFyIE09Qy5kZXYudG9TdHJpbmcoMzIpKyI6IitDLmluby50b1N0cmluZygzMik7aWYodWUuaGFzT3duUHJv''@;'; put 'put ''cGVydHkoTSkpcmV0dXJuIE4obnVsbCx1ZVtNXSxpZSl9RS5zdGF0KGllLGZ1bmN0aW9uKHkpe2lmKHkpcmV0dXJuIHEoeSk7RS5yZWFkbGluayhpZSxmdW5jdGlvbihwLFMpe1J8fCh1ZVtNXT1TKSxOKHAsUyl9KX0pfWZ1bmN0aW9uIE4oZyxDLE0pe2lmKGcpcmV0dXJuIHEoZyk7dmFyIHk9''@;'; put 'put ''SS5yZXNvbHZlKGxlLEMpO1UmJihVW01dPXkpLEYoeSl9ZnVuY3Rpb24gRihnKXtXPUkucmVzb2x2ZShnLFcuc2xpY2UodGUpKSxZKCl9WSgpfX0sNzY0ODpIPT57InVzZSBzdHJpY3QiO3ZhciBCPUFycmF5LnByb3RvdHlwZS5zbGljZSxMPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7SC5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uKEspe3ZhciBKPXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEp8fCJbb2JqZWN0IEZ1bmN0aW9uXSIhPT1MLmNhbGwoSikpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAiK0opO2Zvcih2''@;'; put 'put ''YXIgSSxSPUIuY2FsbChhcmd1bWVudHMsMSksRT1NYXRoLm1heCgwLEoubGVuZ3RoLVIubGVuZ3RoKSx6PVtdLGo9MDtqPEU7aisrKXoucHVzaCgiJCIraik7aWYoST1GdW5jdGlvbigiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK3ouam9pbigiLCIpKyIpeyByZXR1cm4gYmluZGVyLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKTsgfSIpKGZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIEkpe3ZhciBHPUouYXBwbHkodGhpcyxSLmNvbmNhdChCLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBPYmplY3QoRyk9PT1HP0c6dGhpc31yZXR1cm4gSi5hcHBseShLLFIuY29uY2F0KEIuY2Fs''@;'; put 'put ''bChhcmd1bWVudHMpKSl9KSxKLnByb3RvdHlwZSl7dmFyIFY9ZnVuY3Rpb24oKXt9O1YucHJvdG90eXBlPUoucHJvdG90eXBlLEkucHJvdG90eXBlPW5ldyBWLFYucHJvdG90eXBlPW51bGx9cmV0dXJuIEl9fSw4NjEyOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg3NjQ4KTtILmV4''@;'; put 'put ''cG9ydHM9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fEt9LDIxMDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLLEo9U3ludGF4RXJyb3IsST1GdW5jdGlvbixSPVR5cGVFcnJvcixFPWZ1bmN0aW9uKE0pe3RyeXtyZXR1cm4gSSgnInVzZSBzdHJpY3QiOyByZXR1cm4gKCcrTSsiKS5jb25z''@;'; put 'put ''dHJ1Y3RvcjsiKSgpfWNhdGNoe319LHo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtpZih6KXRyeXt6KHt9LCIiKX1jYXRjaHt6PW51bGx9dmFyIGo9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgUn0sVj16P2Z1bmN0aW9uKCl7dHJ5e3JldHVybiBqfWNhdGNoe3RyeXtyZXR1cm4geihh''@;'; put 'put ''cmd1bWVudHMsImNhbGxlZSIpLmdldH1jYXRjaHtyZXR1cm4gan19fSgpOmosRz1MKDE0MDUpKCksVz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKE0pe3JldHVybiBNLl9fcHJvdG9fX30sVT17fSxxPXR5cGVvZiBVaW50OEFycmF5PiJ1Ij9LOlcoVWludDhBcnJheSksdGU9eyIl''@;'; put 'put ''QWdncmVnYXRlRXJyb3IlIjp0eXBlb2YgQWdncmVnYXRlRXJyb3I+InUiP0s6QWdncmVnYXRlRXJyb3IsIiVBcnJheSUiOkFycmF5LCIlQXJyYXlCdWZmZXIlIjp0eXBlb2YgQXJyYXlCdWZmZXI+InUiP0s6QXJyYXlCdWZmZXIsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6Rz9XKFtdW1N5''@;'; put 'put ''bWJvbC5pdGVyYXRvcl0oKSk6SywiJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUiOkssIiVBc3luY0Z1bmN0aW9uJSI6VSwiJUFzeW5jR2VuZXJhdG9yJSI6VSwiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIjpVLCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiOlUsIiVBdG9taWNz''@;'; put 'put ''JSI6dHlwZW9mIEF0b21pY3M+InUiP0s6QXRvbWljcywiJUJpZ0ludCUiOnR5cGVvZiBCaWdJbnQ+InUiP0s6QmlnSW50LCIlQmlnSW50NjRBcnJheSUiOnR5cGVvZiBCaWdJbnQ2NEFycmF5PiJ1Ij9LOkJpZ0ludDY0QXJyYXksIiVCaWdVaW50NjRBcnJheSUiOnR5cGVvZiBCaWdVaW50NjRB''@;'; put 'put ''cnJheT4idSI/SzpCaWdVaW50NjRBcnJheSwiJUJvb2xlYW4lIjpCb29sZWFuLCIlRGF0YVZpZXclIjp0eXBlb2YgRGF0YVZpZXc+InUiP0s6RGF0YVZpZXcsIiVEYXRlJSI6RGF0ZSwiJWRlY29kZVVSSSUiOmRlY29kZVVSSSwiJWRlY29kZVVSSUNvbXBvbmVudCUiOmRlY29kZVVSSUNvbXBv''@;'; put 'put ''bmVudCwiJWVuY29kZVVSSSUiOmVuY29kZVVSSSwiJWVuY29kZVVSSUNvbXBvbmVudCUiOmVuY29kZVVSSUNvbXBvbmVudCwiJUVycm9yJSI6RXJyb3IsIiVldmFsJSI6ZXZhbCwiJUV2YWxFcnJvciUiOkV2YWxFcnJvciwiJUZsb2F0MzJBcnJheSUiOnR5cGVvZiBGbG9hdDMyQXJyYXk+InUi''@;'; put 'put ''P0s6RmxvYXQzMkFycmF5LCIlRmxvYXQ2NEFycmF5JSI6dHlwZW9mIEZsb2F0NjRBcnJheT4idSI/SzpGbG9hdDY0QXJyYXksIiVGaW5hbGl6YXRpb25SZWdpc3RyeSUiOnR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeT4idSI/SzpGaW5hbGl6YXRpb25SZWdpc3RyeSwiJUZ1bmN0aW9uJSI6''@;'; put 'put ''SSwiJUdlbmVyYXRvckZ1bmN0aW9uJSI6VSwiJUludDhBcnJheSUiOnR5cGVvZiBJbnQ4QXJyYXk+InUiP0s6SW50OEFycmF5LCIlSW50MTZBcnJheSUiOnR5cGVvZiBJbnQxNkFycmF5PiJ1Ij9LOkludDE2QXJyYXksIiVJbnQzMkFycmF5JSI6dHlwZW9mIEludDMyQXJyYXk+InUiP0s6SW50''@;'; put 'put ''MzJBcnJheSwiJWlzRmluaXRlJSI6aXNGaW5pdGUsIiVpc05hTiUiOmlzTmFOLCIlSXRlcmF0b3JQcm90b3R5cGUlIjpHP1coVyhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKTpLLCIlSlNPTiUiOiJvYmplY3QiPT10eXBlb2YgSlNPTj9KU09OOkssIiVNYXAlIjp0eXBlb2YgTWFwPiJ1Ij9LOk1h''@;'; put 'put ''cCwiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJSI6dHlwZW9mIE1hcDwidSImJkc/VygobmV3IE1hcClbU3ltYm9sLml0ZXJhdG9yXSgpKTpLLCIlTWF0aCUiOk1hdGgsIiVOdW1iZXIlIjpOdW1iZXIsIiVPYmplY3QlIjpPYmplY3QsIiVwYXJzZUZsb2F0JSI6cGFyc2VGbG9hdCwiJXBhcnNlSW50''@;'; put 'put ''JSI6cGFyc2VJbnQsIiVQcm9taXNlJSI6dHlwZW9mIFByb21pc2U+InUiP0s6UHJvbWlzZSwiJVByb3h5JSI6dHlwZW9mIFByb3h5PiJ1Ij9LOlByb3h5LCIlUmFuZ2VFcnJvciUiOlJhbmdlRXJyb3IsIiVSZWZlcmVuY2VFcnJvciUiOlJlZmVyZW5jZUVycm9yLCIlUmVmbGVjdCUiOnR5cGVv''@;'; put 'put ''ZiBSZWZsZWN0PiJ1Ij9LOlJlZmxlY3QsIiVSZWdFeHAlIjpSZWdFeHAsIiVTZXQlIjp0eXBlb2YgU2V0PiJ1Ij9LOlNldCwiJVNldEl0ZXJhdG9yUHJvdG90eXBlJSI6dHlwZW9mIFNldDwidSImJkc/VygobmV3IFNldClbU3ltYm9sLml0ZXJhdG9yXSgpKTpLLCIlU2hhcmVkQXJyYXlCdWZm''@;'; put 'put ''ZXIlIjp0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI+InUiP0s6U2hhcmVkQXJyYXlCdWZmZXIsIiVTdHJpbmclIjpTdHJpbmcsIiVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUiOkc/VygiIltTeW1ib2wuaXRlcmF0b3JdKCkpOkssIiVTeW1ib2wlIjpHP1N5bWJvbDpLLCIlU3ludGF4RXJyb3Il''@;'; put 'put ''IjpKLCIlVGhyb3dUeXBlRXJyb3IlIjpWLCIlVHlwZWRBcnJheSUiOnEsIiVUeXBlRXJyb3IlIjpSLCIlVWludDhBcnJheSUiOnR5cGVvZiBVaW50OEFycmF5PiJ1Ij9LOlVpbnQ4QXJyYXksIiVVaW50OENsYW1wZWRBcnJheSUiOnR5cGVvZiBVaW50OENsYW1wZWRBcnJheT4idSI/SzpVaW50''@;'; put 'put ''OENsYW1wZWRBcnJheSwiJVVpbnQxNkFycmF5JSI6dHlwZW9mIFVpbnQxNkFycmF5PiJ1Ij9LOlVpbnQxNkFycmF5LCIlVWludDMyQXJyYXklIjp0eXBlb2YgVWludDMyQXJyYXk+InUiP0s6VWludDMyQXJyYXksIiVVUklFcnJvciUiOlVSSUVycm9yLCIlV2Vha01hcCUiOnR5cGVvZiBXZWFr''@;'; put 'put ''TWFwPiJ1Ij9LOldlYWtNYXAsIiVXZWFrUmVmJSI6dHlwZW9mIFdlYWtSZWY+InUiP0s6V2Vha1JlZiwiJVdlYWtTZXQlIjp0eXBlb2YgV2Vha1NldD4idSI/SzpXZWFrU2V0fTt0cnl7bnVsbC5lcnJvcn1jYXRjaChNKXt2YXIgbmU9VyhXKE0pKTt0ZVsiJUVycm9yLnByb3RvdHlwZSUiXT1u''@;'; put 'put ''ZX12YXIgaWU9ZnVuY3Rpb24gTSh5KXt2YXIgcDtpZigiJUFzeW5jRnVuY3Rpb24lIj09PXkpcD1FKCJhc3luYyBmdW5jdGlvbiAoKSB7fSIpO2Vsc2UgaWYoIiVHZW5lcmF0b3JGdW5jdGlvbiUiPT09eSlwPUUoImZ1bmN0aW9uKiAoKSB7fSIpO2Vsc2UgaWYoIiVBc3luY0dlbmVyYXRvckZ1''@;'; put 'put ''bmN0aW9uJSI9PT15KXA9RSgiYXN5bmMgZnVuY3Rpb24qICgpIHt9Iik7ZWxzZSBpZigiJUFzeW5jR2VuZXJhdG9yJSI9PT15KXt2YXIgUz1NKCIlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUiKTtTJiYocD1TLnByb3RvdHlwZSl9ZWxzZSBpZigiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlIj09''@;'; put 'put ''PXkpe3ZhciBRPU0oIiVBc3luY0dlbmVyYXRvciUiKTtRJiYocD1XKFEucHJvdG90eXBlKSl9cmV0dXJuIHRlW3ldPXAscH0sbGU9eyIlQXJyYXlCdWZmZXJQcm90b3R5cGUlIjpbIkFycmF5QnVmZmVyIiwicHJvdG90eXBlIl0sIiVBcnJheVByb3RvdHlwZSUiOlsiQXJyYXkiLCJwcm90b3R5''@;'; put 'put ''cGUiXSwiJUFycmF5UHJvdG9fZW50cmllcyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJlbnRyaWVzIl0sIiVBcnJheVByb3RvX2ZvckVhY2glIjpbIkFycmF5IiwicHJvdG90eXBlIiwiZm9yRWFjaCJdLCIlQXJyYXlQcm90b19rZXlzJSI6WyJBcnJheSIsInByb3RvdHlwZSIsImtleXMiXSwi''@;'; put 'put ''JUFycmF5UHJvdG9fdmFsdWVzJSI6WyJBcnJheSIsInByb3RvdHlwZSIsInZhbHVlcyJdLCIlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUiOlsiQXN5bmNGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlQXN5bmNHZW5lcmF0b3IlIjpbIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iLCJwcm90b3R5cGUi''@;'; put 'put ''XSwiJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJSI6WyJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIiwicHJvdG90eXBlIl0sIiVCb29sZWFuUHJvdG90eXBlJSI6WyJCb29sZWFuIiwicHJvdG90eXBlIl0sIiVEYXRhVmlld1Byb3RvdHlwZSUiOlsiRGF0YVZpZXciLCJwcm90''@;'; put 'put ''b3R5cGUiXSwiJURhdGVQcm90b3R5cGUlIjpbIkRhdGUiLCJwcm90b3R5cGUiXSwiJUVycm9yUHJvdG90eXBlJSI6WyJFcnJvciIsInByb3RvdHlwZSJdLCIlRXZhbEVycm9yUHJvdG90eXBlJSI6WyJFdmFsRXJyb3IiLCJwcm90b3R5cGUiXSwiJUZsb2F0MzJBcnJheVByb3RvdHlwZSUiOlsi''@;'; put 'put ''RmxvYXQzMkFycmF5IiwicHJvdG90eXBlIl0sIiVGbG9hdDY0QXJyYXlQcm90b3R5cGUlIjpbIkZsb2F0NjRBcnJheSIsInByb3RvdHlwZSJdLCIlRnVuY3Rpb25Qcm90b3R5cGUlIjpbIkZ1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVHZW5lcmF0b3IlIjpbIkdlbmVyYXRvckZ1bmN0aW9uIiwi''@;'; put 'put ''cHJvdG90eXBlIl0sIiVHZW5lcmF0b3JQcm90b3R5cGUlIjpbIkdlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIiwicHJvdG90eXBlIl0sIiVJbnQ4QXJyYXlQcm90b3R5cGUlIjpbIkludDhBcnJheSIsInByb3RvdHlwZSJdLCIlSW50MTZBcnJheVByb3RvdHlwZSUiOlsiSW50MTZBcnJh''@;'; put 'put ''eSIsInByb3RvdHlwZSJdLCIlSW50MzJBcnJheVByb3RvdHlwZSUiOlsiSW50MzJBcnJheSIsInByb3RvdHlwZSJdLCIlSlNPTlBhcnNlJSI6WyJKU09OIiwicGFyc2UiXSwiJUpTT05TdHJpbmdpZnklIjpbIkpTT04iLCJzdHJpbmdpZnkiXSwiJU1hcFByb3RvdHlwZSUiOlsiTWFwIiwicHJv''@;'; put 'put ''dG90eXBlIl0sIiVOdW1iZXJQcm90b3R5cGUlIjpbIk51bWJlciIsInByb3RvdHlwZSJdLCIlT2JqZWN0UHJvdG90eXBlJSI6WyJPYmplY3QiLCJwcm90b3R5cGUiXSwiJU9ialByb3RvX3RvU3RyaW5nJSI6WyJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyJdLCIlT2JqUHJvdG9fdmFs''@;'; put 'put ''dWVPZiUiOlsiT2JqZWN0IiwicHJvdG90eXBlIiwidmFsdWVPZiJdLCIlUHJvbWlzZVByb3RvdHlwZSUiOlsiUHJvbWlzZSIsInByb3RvdHlwZSJdLCIlUHJvbWlzZVByb3RvX3RoZW4lIjpbIlByb21pc2UiLCJwcm90b3R5cGUiLCJ0aGVuIl0sIiVQcm9taXNlX2FsbCUiOlsiUHJvbWlzZSIs''@;'; put 'put ''ImFsbCJdLCIlUHJvbWlzZV9yZWplY3QlIjpbIlByb21pc2UiLCJyZWplY3QiXSwiJVByb21pc2VfcmVzb2x2ZSUiOlsiUHJvbWlzZSIsInJlc29sdmUiXSwiJVJhbmdlRXJyb3JQcm90b3R5cGUlIjpbIlJhbmdlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVJlZmVyZW5jZUVycm9yUHJvdG90eXBl''@;'; put 'put ''JSI6WyJSZWZlcmVuY2VFcnJvciIsInByb3RvdHlwZSJdLCIlUmVnRXhwUHJvdG90eXBlJSI6WyJSZWdFeHAiLCJwcm90b3R5cGUiXSwiJVNldFByb3RvdHlwZSUiOlsiU2V0IiwicHJvdG90eXBlIl0sIiVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUiOlsiU2hhcmVkQXJyYXlCdWZmZXIi''@;'; put 'put ''LCJwcm90b3R5cGUiXSwiJVN0cmluZ1Byb3RvdHlwZSUiOlsiU3RyaW5nIiwicHJvdG90eXBlIl0sIiVTeW1ib2xQcm90b3R5cGUlIjpbIlN5bWJvbCIsInByb3RvdHlwZSJdLCIlU3ludGF4RXJyb3JQcm90b3R5cGUlIjpbIlN5bnRheEVycm9yIiwicHJvdG90eXBlIl0sIiVUeXBlZEFycmF5''@;'; put 'put ''UHJvdG90eXBlJSI6WyJUeXBlZEFycmF5IiwicHJvdG90eXBlIl0sIiVUeXBlRXJyb3JQcm90b3R5cGUlIjpbIlR5cGVFcnJvciIsInByb3RvdHlwZSJdLCIlVWludDhBcnJheVByb3RvdHlwZSUiOlsiVWludDhBcnJheSIsInByb3RvdHlwZSJdLCIlVWludDhDbGFtcGVkQXJyYXlQcm90b3R5''@;'; put 'put ''cGUlIjpbIlVpbnQ4Q2xhbXBlZEFycmF5IiwicHJvdG90eXBlIl0sIiVVaW50MTZBcnJheVByb3RvdHlwZSUiOlsiVWludDE2QXJyYXkiLCJwcm90b3R5cGUiXSwiJVVpbnQzMkFycmF5UHJvdG90eXBlJSI6WyJVaW50MzJBcnJheSIsInByb3RvdHlwZSJdLCIlVVJJRXJyb3JQcm90b3R5cGUl''@;'; put 'put ''IjpbIlVSSUVycm9yIiwicHJvdG90eXBlIl0sIiVXZWFrTWFwUHJvdG90eXBlJSI6WyJXZWFrTWFwIiwicHJvdG90eXBlIl0sIiVXZWFrU2V0UHJvdG90eXBlJSI6WyJXZWFrU2V0IiwicHJvdG90eXBlIl19LGRlPUwoODYxMiksdWU9TCg3NjQyKSxjZT1kZS5jYWxsKEZ1bmN0aW9uLmNhbGws''@;'; put 'put ''QXJyYXkucHJvdG90eXBlLmNvbmNhdCksWT1kZS5jYWxsKEZ1bmN0aW9uLmFwcGx5LEFycmF5LnByb3RvdHlwZS5zcGxpY2UpLGI9ZGUuY2FsbChGdW5jdGlvbi5jYWxsLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSkseD1kZS5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5z''@;'; put 'put ''bGljZSksTj1kZS5jYWxsKEZ1bmN0aW9uLmNhbGwsUmVnRXhwLnByb3RvdHlwZS5leGVjKSxGPS9bXiUuW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwlJCkpL2csZz0vXFwoXFwp''@;'; put 'put ''Py9nLEM9ZnVuY3Rpb24oTSx5KXt2YXIgcCxTPU07aWYodWUobGUsUykmJihTPSIlIisocD1sZVtTXSlbMF0rIiUiKSx1ZSh0ZSxTKSl7dmFyIFE9dGVbU107aWYoUT09PVUmJihRPWllKFMpKSx2b2lkIDA9PT1RJiYheSl0aHJvdyBuZXcgUigiaW50cmluc2ljICIrTSsiIGV4aXN0cywgYnV0''@;'; put 'put ''IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlISIpO3JldHVybnthbGlhczpwLG5hbWU6Uyx2YWx1ZTpRfX10aHJvdyBuZXcgSigiaW50cmluc2ljICIrTSsiIGRvZXMgbm90IGV4aXN0ISIpfTtILmV4cG9ydHM9ZnVuY3Rpb24oTSx5KXtpZigic3RyaW5nIiE9dHlwZW9m''@;'; put 'put ''IE18fDA9PT1NLmxlbmd0aCl0aHJvdyBuZXcgUigiaW50cmluc2ljIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtpZihhcmd1bWVudHMubGVuZ3RoPjEmJiJib29sZWFuIiE9dHlwZW9mIHkpdGhyb3cgbmV3IFIoJyJhbGxvd01pc3NpbmciIGFyZ3VtZW50IG11c3QgYmUgYSBi''@;'; put 'put ''b29sZWFuJyk7aWYobnVsbD09PU4oL14lP1teJV0qJT8kLyxNKSl0aHJvdyBuZXcgSigiYCVgIG1heSBub3QgYmUgcHJlc2VudCBhbnl3aGVyZSBidXQgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBpbnRyaW5zaWMgbmFtZSIpO3ZhciBwPWZ1bmN0aW9uKEhlKXt2YXIgUWU9eChI''@;'; put 'put ''ZSwwLDEpLG10PXgoSGUsLTEpO2lmKCIlIj09PVFlJiYiJSIhPT1tdCl0aHJvdyBuZXcgSigiaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBjbG9zaW5nIGAlYCIpO2lmKCIlIj09PW10JiYiJSIhPT1RZSl0aHJvdyBuZXcgSigiaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBl''@;'; put 'put ''eHBlY3RlZCBvcGVuaW5nIGAlYCIpO3ZhciBLZT1bXTtyZXR1cm4gYihIZSxGLGZ1bmN0aW9uKHdlLEllLE9lLGV0KXtLZVtLZS5sZW5ndGhdPU9lP2IoZXQsZywiJDEiKTpJZXx8d2V9KSxLZX0oTSksUz1wLmxlbmd0aD4wP3BbMF06IiIsUT1DKCIlIitTKyIlIix5KSxyZT1RLm5hbWUsZmU9''@;'; put 'put ''US52YWx1ZSxtZT0hMSxrZT1RLmFsaWFzO2tlJiYoUz1rZVswXSxZKHAsY2UoWzAsMV0sa2UpKSk7Zm9yKHZhciBUZT0xLFBlPSEwO1RlPHAubGVuZ3RoO1RlKz0xKXt2YXIgRmU9cFtUZV0sTmU9eChGZSwwLDEpLExlPXgoRmUsLTEpO2lmKCgnIic9PT1OZXx8IiciPT09TmV8fCJgIj09PU5l''@;'; put 'put ''fHwnIic9PT1MZXx8IiciPT09TGV8fCJgIj09PUxlKSYmTmUhPT1MZSl0aHJvdyBuZXcgSigicHJvcGVydHkgbmFtZXMgd2l0aCBxdW90ZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHF1b3RlcyIpO2lmKCJjb25zdHJ1Y3RvciIhPT1GZSYmUGV8fChtZT0hMCksdWUodGUscmU9IiUiKyhTKz0iLiIr''@;'; put 'put ''RmUpKyIlIikpZmU9dGVbcmVdO2Vsc2UgaWYobnVsbCE9ZmUpe2lmKCEoRmUgaW4gZmUpKXtpZigheSl0aHJvdyBuZXcgUigiYmFzZSBpbnRyaW5zaWMgZm9yICIrTSsiIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLiIpO3JldHVybn1pZih6JiZUZSsxPj1wLmxl''@;'; put 'put ''bmd0aCl7dmFyIEJlPXooZmUsRmUpO2ZlPShQZT0hIUJlKSYmImdldCJpbiBCZSYmISgib3JpZ2luYWxWYWx1ZSJpbiBCZS5nZXQpP0JlLmdldDpmZVtGZV19ZWxzZSBQZT11ZShmZSxGZSksZmU9ZmVbRmVdO1BlJiYhbWUmJih0ZVtyZV09ZmUpfX1yZXR1cm4gZmV9fSw2NzcyOihILEIsTCk9''@;'; put 'put ''Pnt2YXIgSz1MKDQxNTUpO2Z1bmN0aW9uIEoocSx0ZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChxLHRlKX1CLnNldG9wdHM9ZnVuY3Rpb24ocSx0ZSxuZSl7aWYobmV8fChuZT17fSksbmUubWF0Y2hCYXNlJiYtMT09PXRlLmluZGV4T2YoIi8iKSl7aWYo''@;'; put 'put ''bmUubm9nbG9ic3Rhcil0aHJvdyBuZXcgRXJyb3IoImJhc2UgbWF0Y2hpbmcgcmVxdWlyZXMgZ2xvYnN0YXIiKTt0ZT0iKiovIit0ZX12YXIgbGU7cS5zaWxlbnQ9ISFuZS5zaWxlbnQscS5wYXR0ZXJuPXRlLHEuc3RyaWN0PSExIT09bmUuc3RyaWN0LHEucmVhbHBhdGg9ISFuZS5yZWFscGF0''@;'; put 'put ''aCxxLnJlYWxwYXRoQ2FjaGU9bmUucmVhbHBhdGhDYWNoZXx8T2JqZWN0LmNyZWF0ZShudWxsKSxxLmZvbGxvdz0hIW5lLmZvbGxvdyxxLmRvdD0hIW5lLmRvdCxxLm1hcms9ISFuZS5tYXJrLHEubm9kaXI9ISFuZS5ub2RpcixxLm5vZGlyJiYocS5tYXJrPSEwKSxxLnN5bmM9ISFuZS5zeW5j''@;'; put 'put ''LHEubm91bmlxdWU9ISFuZS5ub3VuaXF1ZSxxLm5vbnVsbD0hIW5lLm5vbnVsbCxxLm5vc29ydD0hIW5lLm5vc29ydCxxLm5vY2FzZT0hIW5lLm5vY2FzZSxxLnN0YXQ9ISFuZS5zdGF0LHEubm9wcm9jZXNzPSEhbmUubm9wcm9jZXNzLHEuYWJzb2x1dGU9ISFuZS5hYnNvbHV0ZSxxLmZzPW5l''@;'; put 'put ''LmZzfHxJLHEubWF4TGVuZ3RoPW5lLm1heExlbmd0aHx8MS8wLHEuY2FjaGU9bmUuY2FjaGV8fE9iamVjdC5jcmVhdGUobnVsbCkscS5zdGF0Q2FjaGU9bmUuc3RhdENhY2hlfHxPYmplY3QuY3JlYXRlKG51bGwpLHEuc3ltbGlua3M9bmUuc3ltbGlua3N8fE9iamVjdC5jcmVhdGUobnVsbCks''@;'; put 'put ''KGxlPXEpLmlnbm9yZT1uZS5pZ25vcmV8fFtdLEFycmF5LmlzQXJyYXkobGUuaWdub3JlKXx8KGxlLmlnbm9yZT1bbGUuaWdub3JlXSksbGUuaWdub3JlLmxlbmd0aCYmKGxlLmlnbm9yZT1sZS5pZ25vcmUubWFwKEcpKSxxLmNoYW5nZWRDd2Q9ITE7dmFyIGllPUsuY3dkKCk7SihuZSwiY3dk''@;'; put 'put ''Iik/KHEuY3dkPVIucmVzb2x2ZShuZS5jd2QpLHEuY2hhbmdlZEN3ZD1xLmN3ZCE9PWllKTpxLmN3ZD1pZSxxLnJvb3Q9bmUucm9vdHx8Ui5yZXNvbHZlKHEuY3dkLCIvIikscS5yb290PVIucmVzb2x2ZShxLnJvb3QpLCJ3aW4zMiI9PT1LLnBsYXRmb3JtJiYocS5yb290PXEucm9vdC5yZXBs''@;'; put 'put ''YWNlKC9cXC9nLCIvIikpLHEuY3dkQWJzPXoocS5jd2QpP3EuY3dkOlcocSxxLmN3ZCksIndpbjMyIj09PUsucGxhdGZvcm0mJihxLmN3ZEFicz1xLmN3ZEFicy5yZXBsYWNlKC9cXC9nLCIvIikpLHEubm9tb3VudD0hIW5lLm5vbW91bnQsbmUubm9uZWdhdGU9ITAsbmUubm9jb21tZW50PSEw''@;'; put 'put ''LG5lLmFsbG93V2luZG93c0VzY2FwZT0hMSxxLm1pbmltYXRjaD1uZXcgaih0ZSxuZSkscS5vcHRpb25zPXEubWluaW1hdGNoLm9wdGlvbnN9LEIub3duUHJvcD1KLEIubWFrZUFicz1XLEIuZmluaXNoPWZ1bmN0aW9uKHEpe2Zvcih2YXIgdGU9cS5ub3VuaXF1ZSxuZT10ZT9bXTpPYmplY3Qu''@;'; put 'put ''Y3JlYXRlKG51bGwpLGllPTAsbGU9cS5tYXRjaGVzLmxlbmd0aDtpZTxsZTtpZSsrKXt2YXIgZGU9cS5tYXRjaGVzW2llXTtpZihkZSYmMCE9PU9iamVjdC5rZXlzKGRlKS5sZW5ndGgpe3ZhciB1ZT1PYmplY3Qua2V5cyhkZSk7dGU/bmUucHVzaC5hcHBseShuZSx1ZSk6dWUuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihZKXtuZVtZXT0hMH0pfWVsc2UgaWYocS5ub251bGwpe3ZhciBjZT1xLm1pbmltYXRjaC5nbG9iU2V0W2llXTt0ZT9uZS5wdXNoKGNlKTpuZVtjZV09ITB9fWlmKHRlfHwobmU9T2JqZWN0LmtleXMobmUpKSxxLm5vc29ydHx8KG5lPW5lLnNvcnQoVikpLHEubWFyayl7Zm9yKGll''@;'; put 'put ''PTA7aWU8bmUubGVuZ3RoO2llKyspbmVbaWVdPXEuX21hcmsobmVbaWVdKTtxLm5vZGlyJiYobmU9bmUuZmlsdGVyKGZ1bmN0aW9uKFkpe3ZhciBiPSEvXC8kLy50ZXN0KFkpLHg9cS5jYWNoZVtZXXx8cS5jYWNoZVtXKHEsWSldO3JldHVybiBiJiZ4JiYoYj0iRElSIiE9PXgmJiFBcnJheS5p''@;'; put 'put ''c0FycmF5KHgpKSxifSkpfXEuaWdub3JlLmxlbmd0aCYmKG5lPW5lLmZpbHRlcihmdW5jdGlvbihZKXtyZXR1cm4hVShxLFkpfSkpLHEuZm91bmQ9bmV9LEIubWFyaz1mdW5jdGlvbihxLHRlKXt2YXIgbmU9VyhxLHRlKSxpZT1xLmNhY2hlW25lXSxsZT10ZTtpZihpZSl7dmFyIGRlPSJESVIi''@;'; put 'put ''PT09aWV8fEFycmF5LmlzQXJyYXkoaWUpLHVlPSIvIj09PXRlLnNsaWNlKC0xKTtpZihkZSYmIXVlP2xlKz0iLyI6IWRlJiZ1ZSYmKGxlPWxlLnNsaWNlKDAsLTEpKSxsZSE9PXRlKXt2YXIgY2U9VyhxLGxlKTtxLnN0YXRDYWNoZVtjZV09cS5zdGF0Q2FjaGVbbmVdLHEuY2FjaGVbY2VdPXEu''@;'; put 'put ''Y2FjaGVbbmVdfX1yZXR1cm4gbGV9LEIuaXNJZ25vcmVkPVUsQi5jaGlsZHJlbklnbm9yZWQ9ZnVuY3Rpb24ocSx0ZSl7cmV0dXJuISFxLmlnbm9yZS5sZW5ndGgmJnEuaWdub3JlLnNvbWUoZnVuY3Rpb24obmUpe3JldHVybiEoIW5lLmdtYXRjaGVyfHwhbmUuZ21hdGNoZXIubWF0Y2godGUp''@;'; put 'put ''KX0pfTt2YXIgST1MKDM3MTApLFI9TCgyNTIwKSxFPUwoMTE3MSksej1MKDQwOTUpLGo9RS5NaW5pbWF0Y2g7ZnVuY3Rpb24gVihxLHRlKXtyZXR1cm4gcS5sb2NhbGVDb21wYXJlKHRlLCJlbiIpfWZ1bmN0aW9uIEcocSl7dmFyIHRlPW51bGw7aWYoIi8qKiI9PT1xLnNsaWNlKC0zKSl7dmFy''@;'; put 'put ''IG5lPXEucmVwbGFjZSgvKFwvXCpcKikrJC8sIiIpO3RlPW5ldyBqKG5lLHtkb3Q6ITB9KX1yZXR1cm57bWF0Y2hlcjpuZXcgaihxLHtkb3Q6ITB9KSxnbWF0Y2hlcjp0ZX19ZnVuY3Rpb24gVyhxLHRlKXt2YXIgbmU9dGU7cmV0dXJuIG5lPSIvIj09PXRlLmNoYXJBdCgwKT9SLmpvaW4ocS5y''@;'; put 'put ''b290LHRlKTp6KHRlKXx8IiI9PT10ZT90ZTpxLmNoYW5nZWRDd2Q/Ui5yZXNvbHZlKHEuY3dkLHRlKTpSLnJlc29sdmUodGUpLCJ3aW4zMiI9PT1LLnBsYXRmb3JtJiYobmU9bmUucmVwbGFjZSgvXFwvZywiLyIpKSxuZX1mdW5jdGlvbiBVKHEsdGUpe3JldHVybiEhcS5pZ25vcmUubGVuZ3Ro''@;'; put 'put ''JiZxLmlnbm9yZS5zb21lKGZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUubWF0Y2hlci5tYXRjaCh0ZSl8fCEoIW5lLmdtYXRjaGVyfHwhbmUuZ21hdGNoZXIubWF0Y2godGUpKX0pfX0sMjg4NDooSCxCLEwpPT57dmFyIEs9TCg0MTU1KSxKPUwoNTEwOCk7SC5leHBvcnRzPXVlO3ZhciBJPUwoNzMz''@;'; put 'put ''NCksUj1MKDExNzEpLEU9TCg1NzE3KSx6PUwoNzE4NykuRXZlbnRFbWl0dGVyLGo9TCgyNTIwKSxWPUwoOTI4MiksRz1MKDQwOTUpLFc9TCg0NzUxKSxVPUwoNjc3MikscT1VLnNldG9wdHMsdGU9VS5vd25Qcm9wLG5lPUwoNzg0NCksaWU9KEwoOTUzOSksVS5jaGlsZHJlbklnbm9yZWQpLGxl''@;'; put 'put ''PVUuaXNJZ25vcmVkLGRlPUwoNzc4KTtmdW5jdGlvbiB1ZShiLHgsTil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgmJihOPXgseD17fSkseHx8KHg9e30pLHguc3luYyl7aWYoTil0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92aWRlZCB0byBzeW5jIGdsb2IiKTtyZXR1cm4gVyhi''@;'; put 'put ''LHgpfXJldHVybiBuZXcgWShiLHgsTil9dWUuc3luYz1XO3ZhciBjZT11ZS5HbG9iU3luYz1XLkdsb2JTeW5jO2Z1bmN0aW9uIFkoYix4LE4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB4JiYoTj14LHg9bnVsbCkseCYmeC5zeW5jKXtpZihOKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNr''@;'; put 'put ''IHByb3ZpZGVkIHRvIHN5bmMgZ2xvYiIpO3JldHVybiBuZXcgY2UoYix4KX1pZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFkoYix4LE4pO3EodGhpcyxiLHgpLHRoaXMuX2RpZFJlYWxQYXRoPSExO3ZhciBGPXRoaXMubWluaW1hdGNoLnNldC5sZW5ndGg7dGhpcy5tYXRjaGVz''@;'; put 'put ''PW5ldyBBcnJheShGKSwiZnVuY3Rpb24iPT10eXBlb2YgTiYmKE49ZGUoTiksdGhpcy5vbigiZXJyb3IiLE4pLHRoaXMub24oImVuZCIsZnVuY3Rpb24ocCl7TihudWxsLHApfSkpO3ZhciBnPXRoaXM7aWYodGhpcy5fcHJvY2Vzc2luZz0wLHRoaXMuX2VtaXRRdWV1ZT1bXSx0aGlzLl9wcm9j''@;'; put 'put ''ZXNzUXVldWU9W10sdGhpcy5wYXVzZWQ9ITEsdGhpcy5ub3Byb2Nlc3MpcmV0dXJuIHRoaXM7aWYoMD09PUYpcmV0dXJuIHkoKTtmb3IodmFyIEM9ITAsTT0wO008RjtNKyspdGhpcy5fcHJvY2Vzcyh0aGlzLm1pbmltYXRjaC5zZXRbTV0sTSwhMSx5KTtmdW5jdGlvbiB5KCl7LS1nLl9wcm9j''@;'; put 'put ''ZXNzaW5nLGcuX3Byb2Nlc3Npbmc8PTAmJihDP0submV4dFRpY2soZnVuY3Rpb24oKXtnLl9maW5pc2goKX0pOmcuX2ZpbmlzaCgpKX1DPSExfXVlLmdsb2I9dWUsdWUuaGFzTWFnaWM9ZnVuY3Rpb24oYix4KXt2YXIgTj1mdW5jdGlvbihDLE0pe2lmKG51bGw9PT1NfHwib2JqZWN0IiE9dHlw''@;'; put 'put ''ZW9mIE0pcmV0dXJuIEM7Zm9yKHZhciB5PU9iamVjdC5rZXlzKE0pLHA9eS5sZW5ndGg7cC0tOylDW3lbcF1dPU1beVtwXV07cmV0dXJuIEN9KHt9LHgpO04ubm9wcm9jZXNzPSEwO3ZhciBGPW5ldyBZKGIsTikubWluaW1hdGNoLnNldDtpZighYilyZXR1cm4hMTtpZihGLmxlbmd0aD4xKXJl''@;'; put 'put ''dHVybiEwO2Zvcih2YXIgZz0wO2c8RlswXS5sZW5ndGg7ZysrKWlmKCJzdHJpbmciIT10eXBlb2YgRlswXVtnXSlyZXR1cm4hMDtyZXR1cm4hMX0sdWUuR2xvYj1ZLEUoWSx6KSxZLnByb3RvdHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7aWYoVih0aGlzIGluc3RhbmNlb2YgWSksIXRoaXMuYWJv''@;'; put 'put ''cnRlZCl7aWYodGhpcy5yZWFscGF0aCYmIXRoaXMuX2RpZFJlYWxwYXRoKXJldHVybiB0aGlzLl9yZWFscGF0aCgpO1UuZmluaXNoKHRoaXMpLHRoaXMuZW1pdCgiZW5kIix0aGlzLmZvdW5kKX19LFkucHJvdG90eXBlLl9yZWFscGF0aD1mdW5jdGlvbigpe2lmKCF0aGlzLl9kaWRSZWFscGF0''@;'; put 'put ''aCl7dGhpcy5fZGlkUmVhbHBhdGg9ITA7dmFyIGI9dGhpcy5tYXRjaGVzLmxlbmd0aDtpZigwPT09YilyZXR1cm4gdGhpcy5fZmluaXNoKCk7Zm9yKHZhciB4PXRoaXMsTj0wO048dGhpcy5tYXRjaGVzLmxlbmd0aDtOKyspdGhpcy5fcmVhbHBhdGhTZXQoTixGKX1mdW5jdGlvbiBGKCl7MD09''@;'; put 'put ''LS1iJiZ4Ll9maW5pc2goKX19LFkucHJvdG90eXBlLl9yZWFscGF0aFNldD1mdW5jdGlvbihiLHgpe3ZhciBOPXRoaXMubWF0Y2hlc1tiXTtpZighTilyZXR1cm4geCgpO3ZhciBGPU9iamVjdC5rZXlzKE4pLGc9dGhpcyxDPUYubGVuZ3RoO2lmKDA9PT1DKXJldHVybiB4KCk7dmFyIE09dGhp''@;'; put 'put ''cy5tYXRjaGVzW2JdPU9iamVjdC5jcmVhdGUobnVsbCk7Ri5mb3JFYWNoKGZ1bmN0aW9uKHkscCl7eT1nLl9tYWtlQWJzKHkpLEkucmVhbHBhdGgoeSxnLnJlYWxwYXRoQ2FjaGUsZnVuY3Rpb24oUyxRKXtTPyJzdGF0Ij09PVMuc3lzY2FsbD9NW3ldPSEwOmcuZW1pdCgiZXJyb3IiLFMpOk1b''@;'; put 'put ''UV09ITAsMD09LS1DJiYoZy5tYXRjaGVzW2JdPU0seCgpKX0pfSl9LFkucHJvdG90eXBlLl9tYXJrPWZ1bmN0aW9uKGIpe3JldHVybiBVLm1hcmsodGhpcyxiKX0sWS5wcm90b3R5cGUuX21ha2VBYnM9ZnVuY3Rpb24oYil7cmV0dXJuIFUubWFrZUFicyh0aGlzLGIpfSxZLnByb3RvdHlwZS5h''@;'; put 'put ''Ym9ydD1mdW5jdGlvbigpe3RoaXMuYWJvcnRlZD0hMCx0aGlzLmVtaXQoImFib3J0Iil9LFkucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5wYXVzZWR8fCh0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXQoInBhdXNlIikpfSxZLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtpZih0''@;'; put 'put ''aGlzLnBhdXNlZCl7aWYodGhpcy5lbWl0KCJyZXN1bWUiKSx0aGlzLnBhdXNlZD0hMSx0aGlzLl9lbWl0UXVldWUubGVuZ3RoKXt2YXIgYj10aGlzLl9lbWl0UXVldWUuc2xpY2UoMCk7dGhpcy5fZW1pdFF1ZXVlLmxlbmd0aD0wO2Zvcih2YXIgeD0wO3g8Yi5sZW5ndGg7eCsrKXt2YXIgTj1i''@;'; put 'put ''W3hdO3RoaXMuX2VtaXRNYXRjaChOWzBdLE5bMV0pfX1pZih0aGlzLl9wcm9jZXNzUXVldWUubGVuZ3RoKXt2YXIgRj10aGlzLl9wcm9jZXNzUXVldWUuc2xpY2UoMCk7Zm9yKHRoaXMuX3Byb2Nlc3NRdWV1ZS5sZW5ndGg9MCx4PTA7eDxGLmxlbmd0aDt4Kyspe3ZhciBnPUZbeF07dGhpcy5f''@;'; put 'put ''cHJvY2Vzc2luZy0tLHRoaXMuX3Byb2Nlc3MoZ1swXSxnWzFdLGdbMl0sZ1szXSl9fX19LFkucHJvdG90eXBlLl9wcm9jZXNzPWZ1bmN0aW9uKGIseCxOLEYpe2lmKFYodGhpcyBpbnN0YW5jZW9mIFkpLFYoImZ1bmN0aW9uIj09dHlwZW9mIEYpLCF0aGlzLmFib3J0ZWQpaWYodGhpcy5fcHJv''@;'; put 'put ''Y2Vzc2luZysrLHRoaXMucGF1c2VkKXRoaXMuX3Byb2Nlc3NRdWV1ZS5wdXNoKFtiLHgsTixGXSk7ZWxzZXtmb3IodmFyIGcsQz0wOyJzdHJpbmciPT10eXBlb2YgYltDXTspQysrO3N3aXRjaChDKXtjYXNlIGIubGVuZ3RoOnJldHVybiB2b2lkIHRoaXMuX3Byb2Nlc3NTaW1wbGUoYi5qb2lu''@;'; put 'put ''KCIvIikseCxGKTtjYXNlIDA6Zz1udWxsO2JyZWFrO2RlZmF1bHQ6Zz1iLnNsaWNlKDAsQykuam9pbigiLyIpfXZhciBNLHk9Yi5zbGljZShDKTtudWxsPT09Zz9NPSIuIjooKEcoZyl8fEcoYi5tYXAoZnVuY3Rpb24oUyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBTP1M6IlsqXSJ9KS5qb2lu''@;'; put 'put ''KCIvIikpKSYmKGcmJkcoZyl8fChnPSIvIitnKSksTT1nKTt2YXIgcD10aGlzLl9tYWtlQWJzKE0pO2lmKGllKHRoaXMsTSkpcmV0dXJuIEYoKTt5WzBdPT09Ui5HTE9CU1RBUj90aGlzLl9wcm9jZXNzR2xvYlN0YXIoZyxNLHAseSx4LE4sRik6dGhpcy5fcHJvY2Vzc1JlYWRkaXIoZyxNLHAs''@;'; put 'put ''eSx4LE4sRil9fSxZLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRkaXI9ZnVuY3Rpb24oYix4LE4sRixnLEMsTSl7dmFyIHk9dGhpczt0aGlzLl9yZWFkZGlyKE4sQyxmdW5jdGlvbihwLFMpe3JldHVybiB5Ll9wcm9jZXNzUmVhZGRpcjIoYix4LE4sRixnLEMsUyxNKX0pfSxZLnByb3RvdHlwZS5f''@;'; put 'put ''cHJvY2Vzc1JlYWRkaXIyPWZ1bmN0aW9uKGIseCxOLEYsZyxDLE0seSl7aWYoIU0pcmV0dXJuIHkoKTtmb3IodmFyIHA9RlswXSxTPSEhdGhpcy5taW5pbWF0Y2gubmVnYXRlLHJlPXRoaXMuZG90fHwiLiI9PT1wLl9nbG9iLmNoYXJBdCgwKSxmZT1bXSxtZT0wO21lPE0ubGVuZ3RoO21lKysp''@;'; put 'put ''KCIuIiE9PShUZT1NW21lXSkuY2hhckF0KDApfHxyZSkmJihTJiYhYj8hVGUubWF0Y2gocCk6VGUubWF0Y2gocCkpJiZmZS5wdXNoKFRlKTt2YXIga2U9ZmUubGVuZ3RoO2lmKDA9PT1rZSlyZXR1cm4geSgpO2lmKDE9PT1GLmxlbmd0aCYmIXRoaXMubWFyayYmIXRoaXMuc3RhdCl7Zm9yKHRo''@;'; put 'put ''aXMubWF0Y2hlc1tnXXx8KHRoaXMubWF0Y2hlc1tnXT1PYmplY3QuY3JlYXRlKG51bGwpKSxtZT0wO21lPGtlO21lKyspe3ZhciBUZT1mZVttZV07YiYmKFRlPSIvIiE9PWI/YisiLyIrVGU6YitUZSksIi8iIT09VGUuY2hhckF0KDApfHx0aGlzLm5vbW91bnR8fChUZT1qLmpvaW4odGhpcy5y''@;'; put 'put ''b290LFRlKSksdGhpcy5fZW1pdE1hdGNoKGcsVGUpfXJldHVybiB5KCl9Zm9yKEYuc2hpZnQoKSxtZT0wO21lPGtlO21lKyspVGU9ZmVbbWVdLGImJihUZT0iLyIhPT1iP2IrIi8iK1RlOmIrVGUpLHRoaXMuX3Byb2Nlc3MoW1RlXS5jb25jYXQoRiksZyxDLHkpO3koKX0sWS5wcm90b3R5cGUu''@;'; put 'put ''X2VtaXRNYXRjaD1mdW5jdGlvbihiLHgpe2lmKCF0aGlzLmFib3J0ZWQmJiFsZSh0aGlzLHgpKWlmKHRoaXMucGF1c2VkKXRoaXMuX2VtaXRRdWV1ZS5wdXNoKFtiLHhdKTtlbHNle3ZhciBOPUcoeCk/eDp0aGlzLl9tYWtlQWJzKHgpO2lmKHRoaXMubWFyayYmKHg9dGhpcy5fbWFyayh4KSks''@;'; put 'put ''dGhpcy5hYnNvbHV0ZSYmKHg9TiksIXRoaXMubWF0Y2hlc1tiXVt4XSl7aWYodGhpcy5ub2Rpcil7dmFyIEY9dGhpcy5jYWNoZVtOXTtpZigiRElSIj09PUZ8fEFycmF5LmlzQXJyYXkoRikpcmV0dXJufXRoaXMubWF0Y2hlc1tiXVt4XT0hMDt2YXIgZz10aGlzLnN0YXRDYWNoZVtOXTtnJiZ0''@;'; put 'put ''aGlzLmVtaXQoInN0YXQiLHgsZyksdGhpcy5lbWl0KCJtYXRjaCIseCl9fX0sWS5wcm90b3R5cGUuX3JlYWRkaXJJbkdsb2JTdGFyPWZ1bmN0aW9uKGIseCl7aWYoIXRoaXMuYWJvcnRlZCl7aWYodGhpcy5mb2xsb3cpcmV0dXJuIHRoaXMuX3JlYWRkaXIoYiwhMSx4KTt2YXIgTj10aGlzLEY9''@;'; put 'put ''bmUoImxzdGF0XDAiK2IsZnVuY3Rpb24oZyxDKXtpZihnJiYiRU5PRU5UIj09PWcuY29kZSlyZXR1cm4geCgpO3ZhciBNPUMmJkMuaXNTeW1ib2xpY0xpbmsoKTtOLnN5bWxpbmtzW2JdPU0sTXx8IUN8fEMuaXNEaXJlY3RvcnkoKT9OLl9yZWFkZGlyKGIsITEseCk6KE4uY2FjaGVbYl09IkZJ''@;'; put 'put ''TEUiLHgoKSl9KTtGJiZOLmZzLmxzdGF0KGIsRil9fSxZLnByb3RvdHlwZS5fcmVhZGRpcj1mdW5jdGlvbihiLHgsTil7aWYoIXRoaXMuYWJvcnRlZCYmKE49bmUoInJlYWRkaXJcMCIrYisiXDAiK3gsTikpKXtpZih4JiYhdGUodGhpcy5zeW1saW5rcyxiKSlyZXR1cm4gdGhpcy5fcmVhZGRp''@;'; put 'put ''ckluR2xvYlN0YXIoYixOKTtpZih0ZSh0aGlzLmNhY2hlLGIpKXt2YXIgRj10aGlzLmNhY2hlW2JdO2lmKCFGfHwiRklMRSI9PT1GKXJldHVybiBOKCk7aWYoQXJyYXkuaXNBcnJheShGKSlyZXR1cm4gTihudWxsLEYpfXRoaXMuZnMucmVhZGRpcihiLChnPXRoaXMsQz1iLE09TixmdW5jdGlv''@;'; put 'put ''bih5LHApe3k/Zy5fcmVhZGRpckVycm9yKEMseSxNKTpnLl9yZWFkZGlyRW50cmllcyhDLHAsTSl9KSl9dmFyIGcsQyxNfSxZLnByb3RvdHlwZS5fcmVhZGRpckVudHJpZXM9ZnVuY3Rpb24oYix4LE4pe2lmKCF0aGlzLmFib3J0ZWQpe2lmKCF0aGlzLm1hcmsmJiF0aGlzLnN0YXQpZm9yKHZh''@;'; put 'put ''ciBGPTA7Rjx4Lmxlbmd0aDtGKyspe3ZhciBnPXhbRl07dGhpcy5jYWNoZVtnPSIvIj09PWI/YitnOmIrIi8iK2ddPSEwfXJldHVybiB0aGlzLmNhY2hlW2JdPXgsTihudWxsLHgpfX0sWS5wcm90b3R5cGUuX3JlYWRkaXJFcnJvcj1mdW5jdGlvbihiLHgsTil7aWYoIXRoaXMuYWJvcnRlZCl7''@;'; put 'put ''c3dpdGNoKHguY29kZSl7Y2FzZSJFTk9UU1VQIjpjYXNlIkVOT1RESVIiOnZhciBGPXRoaXMuX21ha2VBYnMoYik7aWYodGhpcy5jYWNoZVtGXT0iRklMRSIsRj09PXRoaXMuY3dkQWJzKXt2YXIgZz1uZXcgRXJyb3IoeC5jb2RlKyIgaW52YWxpZCBjd2QgIit0aGlzLmN3ZCk7Zy5wYXRoPXRo''@;'; put 'put ''aXMuY3dkLGcuY29kZT14LmNvZGUsdGhpcy5lbWl0KCJlcnJvciIsZyksdGhpcy5hYm9ydCgpfWJyZWFrO2Nhc2UiRU5PRU5UIjpjYXNlIkVMT09QIjpjYXNlIkVOQU1FVE9PTE9ORyI6Y2FzZSJVTktOT1dOIjp0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMoYildPSExO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''dGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGIpXT0hMSx0aGlzLnN0cmljdCYmKHRoaXMuZW1pdCgiZXJyb3IiLHgpLHRoaXMuYWJvcnQoKSksdGhpcy5zaWxlbnR8fEouZXJyb3IoImdsb2IgZXJyb3IiLHgpfXJldHVybiBOKCl9fSxZLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyPWZ1bmN0''@;'; put 'put ''aW9uKGIseCxOLEYsZyxDLE0pe3ZhciB5PXRoaXM7dGhpcy5fcmVhZGRpcihOLEMsZnVuY3Rpb24ocCxTKXt5Ll9wcm9jZXNzR2xvYlN0YXIyKGIseCxOLEYsZyxDLFMsTSl9KX0sWS5wcm90b3R5cGUuX3Byb2Nlc3NHbG9iU3RhcjI9ZnVuY3Rpb24oYix4LE4sRixnLEMsTSx5KXtpZighTSly''@;'; put 'put ''ZXR1cm4geSgpO3ZhciBwPUYuc2xpY2UoMSksUz1iP1tiXTpbXSxRPVMuY29uY2F0KHApO3RoaXMuX3Byb2Nlc3MoUSxnLCExLHkpO3ZhciBmZT1NLmxlbmd0aDtpZih0aGlzLnN5bWxpbmtzW05dJiZDKXJldHVybiB5KCk7Zm9yKHZhciBtZT0wO21lPGZlO21lKyspaWYoIi4iIT09TVttZV0u''@;'; put 'put ''Y2hhckF0KDApfHx0aGlzLmRvdCl7dmFyIGtlPVMuY29uY2F0KE1bbWVdLHApO3RoaXMuX3Byb2Nlc3Moa2UsZywhMCx5KTt2YXIgVGU9Uy5jb25jYXQoTVttZV0sRik7dGhpcy5fcHJvY2VzcyhUZSxnLCEwLHkpfXkoKX0sWS5wcm90b3R5cGUuX3Byb2Nlc3NTaW1wbGU9ZnVuY3Rpb24oYix4''@;'; put 'put ''LE4pe3ZhciBGPXRoaXM7dGhpcy5fc3RhdChiLGZ1bmN0aW9uKGcsQyl7Ri5fcHJvY2Vzc1NpbXBsZTIoYix4LGcsQyxOKX0pfSxZLnByb3RvdHlwZS5fcHJvY2Vzc1NpbXBsZTI9ZnVuY3Rpb24oYix4LE4sRixnKXtpZih0aGlzLm1hdGNoZXNbeF18fCh0aGlzLm1hdGNoZXNbeF09T2JqZWN0''@;'; put 'put ''LmNyZWF0ZShudWxsKSksIUYpcmV0dXJuIGcoKTtpZihiJiZHKGIpJiYhdGhpcy5ub21vdW50KXt2YXIgQz0vW1wvXFxdJC8udGVzdChiKTsiLyI9PT1iLmNoYXJBdCgwKT9iPWouam9pbih0aGlzLnJvb3QsYik6KGI9ai5yZXNvbHZlKHRoaXMucm9vdCxiKSxDJiYoYis9Ii8iKSl9IndpbjMy''@;'; put 'put ''Ij09PUsucGxhdGZvcm0mJihiPWIucmVwbGFjZSgvXFwvZywiLyIpKSx0aGlzLl9lbWl0TWF0Y2goeCxiKSxnKCl9LFkucHJvdG90eXBlLl9zdGF0PWZ1bmN0aW9uKGIseCl7dmFyIE49dGhpcy5fbWFrZUFicyhiKSxGPSIvIj09PWIuc2xpY2UoLTEpO2lmKGIubGVuZ3RoPnRoaXMubWF4TGVu''@;'; put 'put ''Z3RoKXJldHVybiB4KCk7aWYoIXRoaXMuc3RhdCYmdGUodGhpcy5jYWNoZSxOKSl7dmFyIGc9dGhpcy5jYWNoZVtOXTtpZihBcnJheS5pc0FycmF5KGcpJiYoZz0iRElSIiksIUZ8fCJESVIiPT09ZylyZXR1cm4geChudWxsLGcpO2lmKEYmJiJGSUxFIj09PWcpcmV0dXJuIHgoKX12YXIgQz10''@;'; put 'put ''aGlzLnN0YXRDYWNoZVtOXTtpZih2b2lkIDAhPT1DKXtpZighMT09PUMpcmV0dXJuIHgobnVsbCxDKTt2YXIgTT1DLmlzRGlyZWN0b3J5KCk/IkRJUiI6IkZJTEUiO3JldHVybiBGJiYiRklMRSI9PT1NP3goKTp4KG51bGwsTSxDKX12YXIgeT10aGlzLHA9bmUoInN0YXRcMCIrTixmdW5jdGlv''@;'; put 'put ''bihTLFEpe2lmKFEmJlEuaXNTeW1ib2xpY0xpbmsoKSlyZXR1cm4geS5mcy5zdGF0KE4sZnVuY3Rpb24ocmUsZmUpe3JlP3kuX3N0YXQyKGIsTixudWxsLFEseCk6eS5fc3RhdDIoYixOLHJlLGZlLHgpfSk7eS5fc3RhdDIoYixOLFMsUSx4KX0pO3AmJnkuZnMubHN0YXQoTixwKX0sWS5wcm90''@;'; put 'put ''b3R5cGUuX3N0YXQyPWZ1bmN0aW9uKGIseCxOLEYsZyl7aWYoTiYmKCJFTk9FTlQiPT09Ti5jb2RlfHwiRU5PVERJUiI9PT1OLmNvZGUpKXJldHVybiB0aGlzLnN0YXRDYWNoZVt4XT0hMSxnKCk7dmFyIEM9Ii8iPT09Yi5zbGljZSgtMSk7aWYodGhpcy5zdGF0Q2FjaGVbeF09RiwiLyI9PT14''@;'; put 'put ''LnNsaWNlKC0xKSYmRiYmIUYuaXNEaXJlY3RvcnkoKSlyZXR1cm4gZyhudWxsLCExLEYpO3ZhciBNPSEwO3JldHVybiBGJiYoTT1GLmlzRGlyZWN0b3J5KCk/IkRJUiI6IkZJTEUiKSx0aGlzLmNhY2hlW3hdPXRoaXMuY2FjaGVbeF18fE0sQyYmIkZJTEUiPT09TT9nKCk6ZyhudWxsLE0sRil9''@;'; put 'put ''fSw0NzUxOihILEIsTCk9Pnt2YXIgSz1MKDUxMDgpLEo9TCg0MTU1KTtILmV4cG9ydHM9dGUsdGUuR2xvYlN5bmM9bmU7dmFyIEk9TCg3MzM0KSxSPUwoMTE3MSksRT0oTCgyODg0KSxMKDk1MzkpLEwoMjUyMCkpLHo9TCg5MjgyKSxqPUwoNDA5NSksVj1MKDY3NzIpLEc9Vi5zZXRvcHRzLFc9''@;'; put 'put ''Vi5vd25Qcm9wLFU9Vi5jaGlsZHJlbklnbm9yZWQscT1WLmlzSWdub3JlZDtmdW5jdGlvbiB0ZShpZSxsZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGxlfHwzPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92aWRlZCB0byBzeW5jIGdsb2JcblNl''@;'; put 'put ''ZTogaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ub2RlLWdsb2IvaXNzdWVzLzE2NyIpO3JldHVybiBuZXcgbmUoaWUsbGUpLmZvdW5kfWZ1bmN0aW9uIG5lKGllLGxlKXtpZighaWUpdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3ZpZGUgcGF0dGVybiIpO2lmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBsZXx8Mz09PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgcHJvdmlkZWQgdG8gc3luYyBnbG9iXG5TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3Mvbm9kZS1nbG9iL2lzc3Vlcy8xNjciKTtpZighKHRoaXMgaW5zdGFuY2VvZiBuZSkpcmV0dXJu''@;'; put 'put ''IG5ldyBuZShpZSxsZSk7aWYoRyh0aGlzLGllLGxlKSx0aGlzLm5vcHJvY2VzcylyZXR1cm4gdGhpczt2YXIgZGU9dGhpcy5taW5pbWF0Y2guc2V0Lmxlbmd0aDt0aGlzLm1hdGNoZXM9bmV3IEFycmF5KGRlKTtmb3IodmFyIHVlPTA7dWU8ZGU7dWUrKyl0aGlzLl9wcm9jZXNzKHRoaXMubWlu''@;'; put 'put ''aW1hdGNoLnNldFt1ZV0sdWUsITEpO3RoaXMuX2ZpbmlzaCgpfW5lLnByb3RvdHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7aWYoei5vayh0aGlzIGluc3RhbmNlb2YgbmUpLHRoaXMucmVhbHBhdGgpe3ZhciBpZT10aGlzO3RoaXMubWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKGxlLGRlKXt2YXIg''@;'; put 'put ''dWU9aWUubWF0Y2hlc1tkZV09T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IodmFyIGNlIGluIGxlKXRyeXtjZT1pZS5fbWFrZUFicyhjZSksdWVbSS5yZWFscGF0aFN5bmMoY2UsaWUucmVhbHBhdGhDYWNoZSldPSEwfWNhdGNoKFkpe2lmKCJzdGF0IiE9PVkuc3lzY2FsbCl0aHJvdyBZO3VlW2ll''@;'; put 'put ''Ll9tYWtlQWJzKGNlKV09ITB9fSl9Vi5maW5pc2godGhpcyl9LG5lLnByb3RvdHlwZS5fcHJvY2Vzcz1mdW5jdGlvbihpZSxsZSxkZSl7ei5vayh0aGlzIGluc3RhbmNlb2YgbmUpO2Zvcih2YXIgdWUsY2U9MDsic3RyaW5nIj09dHlwZW9mIGllW2NlXTspY2UrKztzd2l0Y2goY2Upe2Nhc2Ug''@;'; put 'put ''aWUubGVuZ3RoOnJldHVybiB2b2lkIHRoaXMuX3Byb2Nlc3NTaW1wbGUoaWUuam9pbigiLyIpLGxlKTtjYXNlIDA6dWU9bnVsbDticmVhaztkZWZhdWx0OnVlPWllLnNsaWNlKDAsY2UpLmpvaW4oIi8iKX12YXIgWSxiPWllLnNsaWNlKGNlKTtudWxsPT09dWU/WT0iLiI6KChqKHVlKXx8aihp''@;'; put 'put ''ZS5tYXAoZnVuY3Rpb24oTil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBOP046IlsqXSJ9KS5qb2luKCIvIikpKSYmKHVlJiZqKHVlKXx8KHVlPSIvIit1ZSkpLFk9dWUpO3ZhciB4PXRoaXMuX21ha2VBYnMoWSk7VSh0aGlzLFkpfHwoYlswXT09PVIuR0xPQlNUQVI/dGhpcy5fcHJvY2Vzc0ds''@;'; put 'put ''b2JTdGFyKHVlLFkseCxiLGxlLGRlKTp0aGlzLl9wcm9jZXNzUmVhZGRpcih1ZSxZLHgsYixsZSxkZSkpfSxuZS5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkZGlyPWZ1bmN0aW9uKGllLGxlLGRlLHVlLGNlLFkpe3ZhciBiPXRoaXMuX3JlYWRkaXIoZGUsWSk7aWYoYil7Zm9yKHZhciB4PXVlWzBd''@;'; put 'put ''LE49ISF0aGlzLm1pbmltYXRjaC5uZWdhdGUsZz10aGlzLmRvdHx8Ii4iPT09eC5fZ2xvYi5jaGFyQXQoMCksQz1bXSxNPTA7TTxiLmxlbmd0aDtNKyspKCIuIiE9PShTPWJbTV0pLmNoYXJBdCgwKXx8ZykmJihOJiYhaWU/IVMubWF0Y2goeCk6Uy5tYXRjaCh4KSkmJkMucHVzaChTKTt2YXIg''@;'; put 'put ''eT1DLmxlbmd0aDtpZigwIT09eSlpZigxIT09dWUubGVuZ3RofHx0aGlzLm1hcmt8fHRoaXMuc3RhdClmb3IodWUuc2hpZnQoKSxNPTA7TTx5O00rKylTPUNbTV0sdGhpcy5fcHJvY2VzcygoaWU/W2llLFNdOltTXSkuY29uY2F0KHVlKSxjZSxZKTtlbHNlIGZvcih0aGlzLm1hdGNoZXNbY2Vd''@;'; put 'put ''fHwodGhpcy5tYXRjaGVzW2NlXT1PYmplY3QuY3JlYXRlKG51bGwpKSxNPTA7TTx5O00rKyl7dmFyIFM9Q1tNXTtpZSYmKFM9Ii8iIT09aWUuc2xpY2UoLTEpP2llKyIvIitTOmllK1MpLCIvIiE9PVMuY2hhckF0KDApfHx0aGlzLm5vbW91bnR8fChTPUUuam9pbih0aGlzLnJvb3QsUykpLHRo''@;'; put 'put ''aXMuX2VtaXRNYXRjaChjZSxTKX19fSxuZS5wcm90b3R5cGUuX2VtaXRNYXRjaD1mdW5jdGlvbihpZSxsZSl7aWYoIXEodGhpcyxsZSkpe3ZhciBkZT10aGlzLl9tYWtlQWJzKGxlKTtpZih0aGlzLm1hcmsmJihsZT10aGlzLl9tYXJrKGxlKSksdGhpcy5hYnNvbHV0ZSYmKGxlPWRlKSwhdGhp''@;'; put 'put ''cy5tYXRjaGVzW2llXVtsZV0pe2lmKHRoaXMubm9kaXIpe3ZhciB1ZT10aGlzLmNhY2hlW2RlXTtpZigiRElSIj09PXVlfHxBcnJheS5pc0FycmF5KHVlKSlyZXR1cm59dGhpcy5tYXRjaGVzW2llXVtsZV09ITAsdGhpcy5zdGF0JiZ0aGlzLl9zdGF0KGxlKX19fSxuZS5wcm90b3R5cGUuX3Jl''@;'; put 'put ''YWRkaXJJbkdsb2JTdGFyPWZ1bmN0aW9uKGllKXtpZih0aGlzLmZvbGxvdylyZXR1cm4gdGhpcy5fcmVhZGRpcihpZSwhMSk7dmFyIGxlLGRlO3RyeXtkZT10aGlzLmZzLmxzdGF0U3luYyhpZSl9Y2F0Y2goY2Upe2lmKCJFTk9FTlQiPT09Y2UuY29kZSlyZXR1cm4gbnVsbH12YXIgdWU9ZGUm''@;'; put 'put ''JmRlLmlzU3ltYm9saWNMaW5rKCk7cmV0dXJuIHRoaXMuc3ltbGlua3NbaWVdPXVlLHVlfHwhZGV8fGRlLmlzRGlyZWN0b3J5KCk/bGU9dGhpcy5fcmVhZGRpcihpZSwhMSk6dGhpcy5jYWNoZVtpZV09IkZJTEUiLGxlfSxuZS5wcm90b3R5cGUuX3JlYWRkaXI9ZnVuY3Rpb24oaWUsbGUpe2lm''@;'; put 'put ''KGxlJiYhVyh0aGlzLnN5bWxpbmtzLGllKSlyZXR1cm4gdGhpcy5fcmVhZGRpckluR2xvYlN0YXIoaWUpO2lmKFcodGhpcy5jYWNoZSxpZSkpe3ZhciBkZT10aGlzLmNhY2hlW2llXTtpZighZGV8fCJGSUxFIj09PWRlKXJldHVybiBudWxsO2lmKEFycmF5LmlzQXJyYXkoZGUpKXJldHVybiBk''@;'; put 'put ''ZX10cnl7cmV0dXJuIHRoaXMuX3JlYWRkaXJFbnRyaWVzKGllLHRoaXMuZnMucmVhZGRpclN5bmMoaWUpKX1jYXRjaCh1ZSl7cmV0dXJuIHRoaXMuX3JlYWRkaXJFcnJvcihpZSx1ZSksbnVsbH19LG5lLnByb3RvdHlwZS5fcmVhZGRpckVudHJpZXM9ZnVuY3Rpb24oaWUsbGUpe2lmKCF0aGlz''@;'; put 'put ''Lm1hcmsmJiF0aGlzLnN0YXQpZm9yKHZhciBkZT0wO2RlPGxlLmxlbmd0aDtkZSsrKXt2YXIgdWU9bGVbZGVdO3RoaXMuY2FjaGVbdWU9Ii8iPT09aWU/aWUrdWU6aWUrIi8iK3VlXT0hMH1yZXR1cm4gdGhpcy5jYWNoZVtpZV09bGUsbGV9LG5lLnByb3RvdHlwZS5fcmVhZGRpckVycm9yPWZ1''@;'; put 'put ''bmN0aW9uKGllLGxlKXtzd2l0Y2gobGUuY29kZSl7Y2FzZSJFTk9UU1VQIjpjYXNlIkVOT1RESVIiOnZhciBkZT10aGlzLl9tYWtlQWJzKGllKTtpZih0aGlzLmNhY2hlW2RlXT0iRklMRSIsZGU9PT10aGlzLmN3ZEFicyl7dmFyIHVlPW5ldyBFcnJvcihsZS5jb2RlKyIgaW52YWxpZCBjd2Qg''@;'; put 'put ''Iit0aGlzLmN3ZCk7dGhyb3cgdWUucGF0aD10aGlzLmN3ZCx1ZS5jb2RlPWxlLmNvZGUsdWV9YnJlYWs7Y2FzZSJFTk9FTlQiOmNhc2UiRUxPT1AiOmNhc2UiRU5BTUVUT09MT05HIjpjYXNlIlVOS05PV04iOnRoaXMuY2FjaGVbdGhpcy5fbWFrZUFicyhpZSldPSExO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''aWYodGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGllKV09ITEsdGhpcy5zdHJpY3QpdGhyb3cgbGU7dGhpcy5zaWxlbnR8fEsuZXJyb3IoImdsb2IgZXJyb3IiLGxlKX19LG5lLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyPWZ1bmN0aW9uKGllLGxlLGRlLHVlLGNlLFkpe3ZhciBiPXRoaXMu''@;'; put 'put ''X3JlYWRkaXIoZGUsWSk7aWYoYil7dmFyIHg9dWUuc2xpY2UoMSksTj1pZT9baWVdOltdLEY9Ti5jb25jYXQoeCk7dGhpcy5fcHJvY2VzcyhGLGNlLCExKTt2YXIgZz1iLmxlbmd0aDtpZighdGhpcy5zeW1saW5rc1tkZV18fCFZKWZvcih2YXIgQz0wO0M8ZztDKyspaWYoIi4iIT09YltDXS5j''@;'; put 'put ''aGFyQXQoMCl8fHRoaXMuZG90KXt2YXIgTT1OLmNvbmNhdChiW0NdLHgpO3RoaXMuX3Byb2Nlc3MoTSxjZSwhMCk7dmFyIHk9Ti5jb25jYXQoYltDXSx1ZSk7dGhpcy5fcHJvY2Vzcyh5LGNlLCEwKX19fSxuZS5wcm90b3R5cGUuX3Byb2Nlc3NTaW1wbGU9ZnVuY3Rpb24oaWUsbGUpe3ZhciBk''@;'; put 'put ''ZT10aGlzLl9zdGF0KGllKTtpZih0aGlzLm1hdGNoZXNbbGVdfHwodGhpcy5tYXRjaGVzW2xlXT1PYmplY3QuY3JlYXRlKG51bGwpKSxkZSl7aWYoaWUmJmooaWUpJiYhdGhpcy5ub21vdW50KXt2YXIgdWU9L1tcL1xcXSQvLnRlc3QoaWUpOyIvIj09PWllLmNoYXJBdCgwKT9pZT1FLmpvaW4o''@;'; put 'put ''dGhpcy5yb290LGllKTooaWU9RS5yZXNvbHZlKHRoaXMucm9vdCxpZSksdWUmJihpZSs9Ii8iKSl9IndpbjMyIj09PUoucGxhdGZvcm0mJihpZT1pZS5yZXBsYWNlKC9cXC9nLCIvIikpLHRoaXMuX2VtaXRNYXRjaChsZSxpZSl9fSxuZS5wcm90b3R5cGUuX3N0YXQ9ZnVuY3Rpb24oaWUpe3Zh''@;'; put 'put ''ciBsZT10aGlzLl9tYWtlQWJzKGllKSxkZT0iLyI9PT1pZS5zbGljZSgtMSk7aWYoaWUubGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiExO2lmKCF0aGlzLnN0YXQmJlcodGhpcy5jYWNoZSxsZSkpe3ZhciB1ZT10aGlzLmNhY2hlW2xlXTtpZihBcnJheS5pc0FycmF5KHVlKSYmKHVlPSJE''@;'; put 'put ''SVIiKSwhZGV8fCJESVIiPT09dWUpcmV0dXJuIHVlO2lmKGRlJiYiRklMRSI9PT11ZSlyZXR1cm4hMX12YXIgY2U9dGhpcy5zdGF0Q2FjaGVbbGVdO2lmKCFjZSl7dmFyIFk7dHJ5e1k9dGhpcy5mcy5sc3RhdFN5bmMobGUpfWNhdGNoKGIpe2lmKGImJigiRU5PRU5UIj09PWIuY29kZXx8IkVO''@;'; put 'put ''T1RESVIiPT09Yi5jb2RlKSlyZXR1cm4gdGhpcy5zdGF0Q2FjaGVbbGVdPSExLCExfWlmKFkmJlkuaXNTeW1ib2xpY0xpbmsoKSl0cnl7Y2U9dGhpcy5mcy5zdGF0U3luYyhsZSl9Y2F0Y2h7Y2U9WX1lbHNlIGNlPVl9cmV0dXJuIHRoaXMuc3RhdENhY2hlW2xlXT1jZSx1ZT0hMCxjZSYmKHVl''@;'; put 'put ''PWNlLmlzRGlyZWN0b3J5KCk/IkRJUiI6IkZJTEUiKSx0aGlzLmNhY2hlW2xlXT10aGlzLmNhY2hlW2xlXXx8dWUsKCFkZXx8IkZJTEUiIT09dWUpJiZ1ZX0sbmUucHJvdG90eXBlLl9tYXJrPWZ1bmN0aW9uKGllKXtyZXR1cm4gVi5tYXJrKHRoaXMsaWUpfSxuZS5wcm90b3R5cGUuX21ha2VB''@;'; put 'put ''YnM9ZnVuY3Rpb24oaWUpe3JldHVybiBWLm1ha2VBYnModGhpcyxpZSl9fSw3Mjk2OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgyMTApKCIlT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciUiLCEwKTtpZihLKXRyeXtLKFtdLCJsZW5ndGgiKX1jYXRjaHtLPW51bGx9SC5l''@;'; put 'put ''eHBvcnRzPUt9LDY0NTg6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9ZnVuY3Rpb24oTCl7aWYobnVsbD09PUx8fCJvYmplY3QiIT10eXBlb2YgTClyZXR1cm4gTDtpZihMIGluc3RhbmNlb2YgT2JqZWN0KXZhciBLPXtfX3Byb3RvX186QihMKX07ZWxzZSBLPU9iamVjdC5jcmVhdGUobnVs''@;'; put 'put ''bCk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEwpLmZvckVhY2goZnVuY3Rpb24oSil7T2JqZWN0LmRlZmluZVByb3BlcnR5KEssSixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEwsSikpfSksS307dmFyIEI9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlv''@;'; put 'put ''bihMKXtyZXR1cm4gTC5fX3Byb3RvX199fSw3NzooSCxCLEwpPT57dmFyIEssSixJPUwoNDE1NSksUj1MKDUxMDgpLEU9TCg1NDQzKSx6PUwoMjE2MSksaj1MKDg1MjApLFY9TCg2NDU4KSxHPUwoOTUzOSk7ZnVuY3Rpb24gVyh1ZSxjZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHVlLEsse2dl''@;'; put 'put ''dDpmdW5jdGlvbigpe3JldHVybiBjZX19KX0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj8oSz1TeW1ib2wuZm9yKCJncmFjZWZ1bC1mcy5xdWV1ZSIpLEo9U3ltYm9sLmZvcigiZ3JhY2VmdWwtZnMucHJldmlvdXMiKSk6KEs9Il9fX2dy''@;'; put 'put ''YWNlZnVsLWZzLnF1ZXVlIixKPSJfX19ncmFjZWZ1bC1mcy5wcmV2aW91cyIpO3ZhciBVLHE9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIG5lKHVlKXt6KHVlKSx1ZS5ncmFjZWZ1bGlmeT1uZSx1ZS5jcmVhdGVSZWFkU3RyZWFtPWZ1bmN0aW9uKG1lLGtlKXtyZXR1cm4gbmV3IHVlLlJlYWRTdHJl''@;'; put 'put ''YW0obWUsa2UpfSx1ZS5jcmVhdGVXcml0ZVN0cmVhbT1mdW5jdGlvbihtZSxrZSl7cmV0dXJuIG5ldyB1ZS5Xcml0ZVN0cmVhbShtZSxrZSl9O3ZhciBjZT11ZS5yZWFkRmlsZTt1ZS5yZWFkRmlsZT1mdW5jdGlvbihtZSxrZSxUZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGtlJiYoVGU9''@;'; put 'put ''a2Usa2U9bnVsbCksZnVuY3Rpb24gUGUoRmUsTmUsTGUsQmUpe3JldHVybiBjZShGZSxOZSxmdW5jdGlvbihIZSl7IUhlfHwiRU1GSUxFIiE9PUhlLmNvZGUmJiJFTkZJTEUiIT09SGUuY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgTGUmJkxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppZShbUGUs''@;'; put 'put ''W0ZlLE5lLExlXSxIZSxCZXx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9KX0obWUsa2UsVGUpfTt2YXIgWT11ZS53cml0ZUZpbGU7dWUud3JpdGVGaWxlPWZ1bmN0aW9uKG1lLGtlLFRlLFBlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgVGUmJihQZT1UZSxUZT1udWxsKSxmdW5jdGlvbiBG''@;'; put 'put ''ZShOZSxMZSxCZSxIZSxRZSl7cmV0dXJuIFkoTmUsTGUsQmUsZnVuY3Rpb24obXQpeyFtdHx8IkVNRklMRSIhPT1tdC5jb2RlJiYiRU5GSUxFIiE9PW10LmNvZGU/ImZ1bmN0aW9uIj09dHlwZW9mIEhlJiZIZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6aWUoW0ZlLFtOZSxMZSxCZSxIZV0sbXQs''@;'; put 'put ''UWV8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KG1lLGtlLFRlLFBlKX07dmFyIGI9dWUuYXBwZW5kRmlsZTtiJiYodWUuYXBwZW5kRmlsZT1mdW5jdGlvbihtZSxrZSxUZSxQZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFRlJiYoUGU9VGUsVGU9bnVsbCksZnVuY3Rpb24gRmUoTmUs''@;'; put 'put ''TGUsQmUsSGUsUWUpe3JldHVybiBiKE5lLExlLEJlLGZ1bmN0aW9uKG10KXshbXR8fCJFTUZJTEUiIT09bXQuY29kZSYmIkVORklMRSIhPT1tdC5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBIZSYmSGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmllKFtGZSxbTmUsTGUsQmUsSGVdLG10LFFlfHxE''@;'; put 'put ''YXRlLm5vdygpLERhdGUubm93KCldKX0pfShtZSxrZSxUZSxQZSl9KTt2YXIgeD11ZS5jb3B5RmlsZTt4JiYodWUuY29weUZpbGU9ZnVuY3Rpb24obWUsa2UsVGUsUGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBUZSYmKFBlPVRlLFRlPTApLGZ1bmN0aW9uIEZlKE5lLExlLEJlLEhlLFFl''@;'; put 'put ''KXtyZXR1cm4geChOZSxMZSxCZSxmdW5jdGlvbihtdCl7IW10fHwiRU1GSUxFIiE9PW10LmNvZGUmJiJFTkZJTEUiIT09bXQuY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgSGUmJkhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppZShbRmUsW05lLExlLEJlLEhlXSxtdCxRZXx8RGF0ZS5ub3coKSxE''@;'; put 'put ''YXRlLm5vdygpXSl9KX0obWUsa2UsVGUsUGUpfSk7dmFyIE49dWUucmVhZGRpcjt1ZS5yZWFkZGlyPWZ1bmN0aW9uKG1lLGtlLFRlKXsiZnVuY3Rpb24iPT10eXBlb2Yga2UmJihUZT1rZSxrZT1udWxsKTt2YXIgUGU9Ri50ZXN0KEkudmVyc2lvbik/ZnVuY3Rpb24oTmUsTGUsQmUsSGUpe3Jl''@;'; put 'put ''dHVybiBOKE5lLEZlKE5lLExlLEJlLEhlKSl9OmZ1bmN0aW9uKE5lLExlLEJlLEhlKXtyZXR1cm4gTihOZSxMZSxGZShOZSxMZSxCZSxIZSkpfTtyZXR1cm4gUGUobWUsa2UsVGUpO2Z1bmN0aW9uIEZlKE5lLExlLEJlLEhlKXtyZXR1cm4gZnVuY3Rpb24oUWUsbXQpeyFRZXx8IkVNRklMRSIh''@;'; put 'put ''PT1RZS5jb2RlJiYiRU5GSUxFIiE9PVFlLmNvZGU/KG10JiZtdC5zb3J0JiZtdC5zb3J0KCksImZ1bmN0aW9uIj09dHlwZW9mIEJlJiZCZS5jYWxsKHRoaXMsUWUsbXQpKTppZShbUGUsW05lLExlLEJlXSxRZSxIZXx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9fX07dmFyIEY9L152WzAtNV1c''@;'; put 'put ''Li87aWYoInYwLjgiPT09SS52ZXJzaW9uLnN1YnN0cigwLDQpKXt2YXIgZz1qKHVlKTtTPWcuUmVhZFN0cmVhbSxRPWcuV3JpdGVTdHJlYW19dmFyIEM9dWUuUmVhZFN0cmVhbTtDJiYoUy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShDLnByb3RvdHlwZSksUy5wcm90b3R5cGUub3Blbj1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBtZT10aGlzO2ZlKG1lLnBhdGgsbWUuZmxhZ3MsbWUubW9kZSxmdW5jdGlvbihrZSxUZSl7a2U/KG1lLmF1dG9DbG9zZSYmbWUuZGVzdHJveSgpLG1lLmVtaXQoImVycm9yIixrZSkpOihtZS5mZD1UZSxtZS5lbWl0KCJvcGVuIixUZSksbWUucmVhZCgpKX0pfSk7dmFyIE09''@;'; put 'put ''dWUuV3JpdGVTdHJlYW07TSYmKFEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTS5wcm90b3R5cGUpLFEucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgbWU9dGhpcztmZShtZS5wYXRoLG1lLmZsYWdzLG1lLm1vZGUsZnVuY3Rpb24oa2UsVGUpe2tlPyhtZS5kZXN0cm95KCksbWUuZW1p''@;'; put 'put ''dCgiZXJyb3IiLGtlKSk6KG1lLmZkPVRlLG1lLmVtaXQoIm9wZW4iLFRlKSl9KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1ZSwiUmVhZFN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBTfSxzZXQ6ZnVuY3Rpb24obWUpe1M9bWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw''@;'; put 'put ''fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHVlLCJXcml0ZVN0cmVhbSIse2dldDpmdW5jdGlvbigpe3JldHVybiBRfSxzZXQ6ZnVuY3Rpb24obWUpe1E9bWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7dmFyIHk9UztPYmplY3QuZGVmaW5lUHJvcGVydHkodWUsIkZpbGVSZWFk''@;'; put 'put ''U3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHl9LHNldDpmdW5jdGlvbihtZSl7eT1tZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgcD1RO2Z1bmN0aW9uIFMobWUsa2Upe3JldHVybiB0aGlzIGluc3RhbmNlb2YgUz8oQy5hcHBseSh0aGlzLGFyZ3VtZW50cyks''@;'; put 'put ''dGhpcyk6Uy5hcHBseShPYmplY3QuY3JlYXRlKFMucHJvdG90eXBlKSxhcmd1bWVudHMpfWZ1bmN0aW9uIFEobWUsa2Upe3JldHVybiB0aGlzIGluc3RhbmNlb2YgUT8oTS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcyk6US5hcHBseShPYmplY3QuY3JlYXRlKFEucHJvdG90eXBlKSxhcmd1''@;'; put 'put ''bWVudHMpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1ZSwiRmlsZVdyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHB9LHNldDpmdW5jdGlvbihtZSl7cD1tZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgcmU9dWUub3BlbjtmdW5jdGlvbiBmZShtZSxrZSxU''@;'; put 'put ''ZSxQZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFRlJiYoUGU9VGUsVGU9bnVsbCksZnVuY3Rpb24gRmUoTmUsTGUsQmUsSGUsUWUpe3JldHVybiByZShOZSxMZSxCZSxmdW5jdGlvbihtdCxLZSl7IW10fHwiRU1GSUxFIiE9PW10LmNvZGUmJiJFTkZJTEUiIT09bXQuY29kZT8iZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgSGUmJkhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppZShbRmUsW05lLExlLEJlLEhlXSxtdCxRZXx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9KX0obWUsa2UsVGUsUGUpfXJldHVybiB1ZS5vcGVuPWZlLHVlfWZ1bmN0aW9uIGllKHVlKXtxKCJFTlFVRVVFIix1ZVswXS5u''@;'; put 'put ''YW1lLHVlWzFdKSxFW0tdLnB1c2godWUpLGRlKCl9ZnVuY3Rpb24gbGUoKXtmb3IodmFyIHVlPURhdGUubm93KCksY2U9MDtjZTxFW0tdLmxlbmd0aDsrK2NlKUVbS11bY2VdLmxlbmd0aD4yJiYoRVtLXVtjZV1bM109dWUsRVtLXVtjZV1bNF09dWUpO2RlKCl9ZnVuY3Rpb24gZGUoKXtpZihj''@;'; put 'put ''bGVhclRpbWVvdXQoVSksVT12b2lkIDAsMCE9PUVbS10ubGVuZ3RoKXt2YXIgdWU9RVtLXS5zaGlmdCgpLGNlPXVlWzBdLFk9dWVbMV0sYj11ZVsyXSx4PXVlWzNdLE49dWVbNF07aWYodm9pZCAwPT09eClxKCJSRVRSWSIsY2UubmFtZSxZKSxjZS5hcHBseShudWxsLFkpO2Vsc2UgaWYoRGF0''@;'; put 'put ''ZS5ub3coKS14Pj02ZTQpe3EoIlRJTUVPVVQiLGNlLm5hbWUsWSk7dmFyIEY9WS5wb3AoKTsiZnVuY3Rpb24iPT10eXBlb2YgRiYmRi5jYWxsKG51bGwsYil9ZWxzZXt2YXIgZz1EYXRlLm5vdygpLU4sQz1NYXRoLm1heChOLXgsMSk7Zz49TWF0aC5taW4oMS4yKkMsMTAwKT8ocSgiUkVUUlki''@;'; put 'put ''LGNlLm5hbWUsWSksY2UuYXBwbHkobnVsbCxZLmNvbmNhdChbeF0pKSk6RVtLXS5wdXNoKHVlKX12b2lkIDA9PT1VJiYoVT1zZXRUaW1lb3V0KGRlLDApKX19Ry5kZWJ1Z2xvZz9xPUcuZGVidWdsb2coImdmczQiKTovXGJnZnM0XGIvaS50ZXN0KEkuZW52Lk5PREVfREVCVUd8fCIiKSYmKHE9''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgdWU9Ry5mb3JtYXQuYXBwbHkoRyxhcmd1bWVudHMpO3VlPSJHRlM0OiAiK3VlLnNwbGl0KC9cbi8pLmpvaW4oIlxuR0ZTNDogIiksUi5lcnJvcih1ZSl9KSxFW0tdfHwoVyhFLEwuZ1tLXXx8W10pLEUuY2xvc2U9ZnVuY3Rpb24odWUpe2Z1bmN0aW9uIGNlKFksYil7''@;'; put 'put ''cmV0dXJuIHVlLmNhbGwoRSxZLGZ1bmN0aW9uKHgpe3h8fGxlKCksImZ1bmN0aW9uIj09dHlwZW9mIGImJmIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjZSxKLHt2YWx1ZTp1ZX0pLGNlfShFLmNsb3NlKSxFLmNsb3NlU3luYz1mdW5jdGlv''@;'; put 'put ''bih1ZSl7ZnVuY3Rpb24gY2UoWSl7dWUuYXBwbHkoRSxhcmd1bWVudHMpLGxlKCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjZSxKLHt2YWx1ZTp1ZX0pLGNlfShFLmNsb3NlU3luYyksL1xiZ2ZzNFxiL2kudGVzdChJLmVudi5OT0RFX0RFQlVHfHwiIikmJkkub24oImV4aXQiLGZ1''@;'; put 'put ''bmN0aW9uKCl7cShFW0tdKSxMKDkyODIpLmVxdWFsKEVbS10ubGVuZ3RoLDApfSkpLEwuZ1tLXXx8VyhMLmcsRVtLXSksSC5leHBvcnRzPW5lKFYoRSkpLEkuZW52LlRFU1RfR1JBQ0VGVUxfRlNfR0xPQkFMX1BBVENIJiYhRS5fX3BhdGNoZWQmJihILmV4cG9ydHM9bmUoRSksRS5fX3BhdGNo''@;'; put 'put ''ZWQ9ITApfSw4NTIwOihILEIsTCk9Pnt2YXIgSz1MKDQxNTUpLEo9TCgyODMwKS5TdHJlYW07SC5leHBvcnRzPWZ1bmN0aW9uKEkpe3JldHVybntSZWFkU3RyZWFtOmZ1bmN0aW9uIFIoRSx6KXtpZighKHRoaXMgaW5zdGFuY2VvZiBSKSlyZXR1cm4gbmV3IFIoRSx6KTtKLmNhbGwodGhpcyk7''@;'; put 'put ''dmFyIGo9dGhpczt0aGlzLnBhdGg9RSx0aGlzLmZkPW51bGwsdGhpcy5yZWFkYWJsZT0hMCx0aGlzLnBhdXNlZD0hMSx0aGlzLmZsYWdzPSJyIix0aGlzLm1vZGU9NDM4LHRoaXMuYnVmZmVyU2l6ZT02NTUzNix6PXp8fHt9O2Zvcih2YXIgVj1PYmplY3Qua2V5cyh6KSxHPTAsVz1WLmxlbmd0''@;'; put 'put ''aDtHPFc7RysrKXt2YXIgVT1WW0ddO3RoaXNbVV09eltVXX1pZih0aGlzLmVuY29kaW5nJiZ0aGlzLnNldEVuY29kaW5nKHRoaXMuZW5jb2RpbmcpLHZvaWQgMCE9PXRoaXMuc3RhcnQpe2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5zdGFydCl0aHJvdyBUeXBlRXJyb3IoInN0YXJ0IG11c3Qg''@;'; put 'put ''YmUgYSBOdW1iZXIiKTtpZih2b2lkIDA9PT10aGlzLmVuZCl0aGlzLmVuZD0xLzA7ZWxzZSBpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuZW5kKXRocm93IFR5cGVFcnJvcigiZW5kIG11c3QgYmUgYSBOdW1iZXIiKTtpZih0aGlzLnN0YXJ0PnRoaXMuZW5kKXRocm93IG5ldyBFcnJvcigic3Rh''@;'; put 'put ''cnQgbXVzdCBiZSA8PSBlbmQiKTt0aGlzLnBvcz10aGlzLnN0YXJ0fW51bGw9PT10aGlzLmZkP0kub3Blbih0aGlzLnBhdGgsdGhpcy5mbGFncyx0aGlzLm1vZGUsZnVuY3Rpb24ocSx0ZSl7aWYocSlyZXR1cm4gai5lbWl0KCJlcnJvciIscSksdm9pZChqLnJlYWRhYmxlPSExKTtqLmZkPXRl''@;'; put 'put ''LGouZW1pdCgib3BlbiIsdGUpLGouX3JlYWQoKX0pOksubmV4dFRpY2soZnVuY3Rpb24oKXtqLl9yZWFkKCl9KX0sV3JpdGVTdHJlYW06ZnVuY3Rpb24gUihFLHope2lmKCEodGhpcyBpbnN0YW5jZW9mIFIpKXJldHVybiBuZXcgUihFLHopO0ouY2FsbCh0aGlzKSx0aGlzLnBhdGg9RSx0aGlz''@;'; put 'put ''LmZkPW51bGwsdGhpcy53cml0YWJsZT0hMCx0aGlzLmZsYWdzPSJ3Iix0aGlzLmVuY29kaW5nPSJiaW5hcnkiLHRoaXMubW9kZT00MzgsdGhpcy5ieXRlc1dyaXR0ZW49MCx6PXp8fHt9O2Zvcih2YXIgaj1PYmplY3Qua2V5cyh6KSxWPTAsRz1qLmxlbmd0aDtWPEc7VisrKXt2YXIgVz1qW1Zd''@;'; put 'put ''O3RoaXNbV109eltXXX1pZih2b2lkIDAhPT10aGlzLnN0YXJ0KXtpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMuc3RhcnQpdGhyb3cgVHlwZUVycm9yKCJzdGFydCBtdXN0IGJlIGEgTnVtYmVyIik7aWYodGhpcy5zdGFydDwwKXRocm93IG5ldyBFcnJvcigic3RhcnQgbXVzdCBiZSA+PSB6ZXJv''@;'; put 'put ''Iik7dGhpcy5wb3M9dGhpcy5zdGFydH10aGlzLmJ1c3k9ITEsdGhpcy5fcXVldWU9W10sbnVsbD09PXRoaXMuZmQmJih0aGlzLl9vcGVuPUkub3Blbix0aGlzLl9xdWV1ZS5wdXNoKFt0aGlzLl9vcGVuLHRoaXMucGF0aCx0aGlzLmZsYWdzLHRoaXMubW9kZSx2b2lkIDBdKSx0aGlzLmZsdXNo''@;'; put 'put ''KCkpfX19fSwyMTYxOihILEIsTCk9Pnt2YXIgSz1MKDQxNTUpLEo9TCgzMjA4KSxJPUsuY3dkLFI9bnVsbCxFPUsuZW52LkdSQUNFRlVMX0ZTX1BMQVRGT1JNfHxLLnBsYXRmb3JtO0suY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIFJ8fChSPUkuY2FsbChLKSksUn07dHJ5e0suY3dkKCl9Y2F0Y2h7''@;'; put 'put ''fWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBLLmNoZGlyKXt2YXIgej1LLmNoZGlyO0suY2hkaXI9ZnVuY3Rpb24oail7Uj1udWxsLHouY2FsbChLLGopfSxPYmplY3Quc2V0UHJvdG90eXBlT2YmJk9iamVjdC5zZXRQcm90b3R5cGVPZihLLmNoZGlyLHopfUguZXhwb3J0cz1mdW5jdGlvbihqKXt2''@;'; put 'put ''YXIgbGUsaWU7ZnVuY3Rpb24gVihsZSl7cmV0dXJuIGxlJiZmdW5jdGlvbihkZSx1ZSxjZSl7cmV0dXJuIGxlLmNhbGwoaixkZSx1ZSxmdW5jdGlvbihZKXtuZShZKSYmKFk9bnVsbCksY2UmJmNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfX1mdW5jdGlvbiBHKGxlKXtyZXR1cm4gbGUmJmZ1''@;'; put 'put ''bmN0aW9uKGRlLHVlKXt0cnl7cmV0dXJuIGxlLmNhbGwoaixkZSx1ZSl9Y2F0Y2goY2Upe2lmKCFuZShjZSkpdGhyb3cgY2V9fX1mdW5jdGlvbiBXKGxlKXtyZXR1cm4gbGUmJmZ1bmN0aW9uKGRlLHVlLGNlLFkpe3JldHVybiBsZS5jYWxsKGosZGUsdWUsY2UsZnVuY3Rpb24oYil7bmUoYikm''@;'; put 'put ''JihiPW51bGwpLFkmJlkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9fWZ1bmN0aW9uIFUobGUpe3JldHVybiBsZSYmZnVuY3Rpb24oZGUsdWUsY2Upe3RyeXtyZXR1cm4gbGUuY2FsbChqLGRlLHVlLGNlKX1jYXRjaChZKXtpZighbmUoWSkpdGhyb3cgWX19fWZ1bmN0aW9uIHEobGUpe3JldHVy''@;'; put 'put ''biBsZSYmZnVuY3Rpb24oZGUsdWUsY2Upe2Z1bmN0aW9uIFkoYix4KXt4JiYoeC51aWQ8MCYmKHgudWlkKz00Mjk0OTY3Mjk2KSx4LmdpZDwwJiYoeC5naWQrPTQyOTQ5NjcyOTYpKSxjZSYmY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB1ZSYmKGNl''@;'; put 'put ''PXVlLHVlPW51bGwpLHVlP2xlLmNhbGwoaixkZSx1ZSxZKTpsZS5jYWxsKGosZGUsWSl9fWZ1bmN0aW9uIHRlKGxlKXtyZXR1cm4gbGUmJmZ1bmN0aW9uKGRlLHVlKXt2YXIgY2U9dWU/bGUuY2FsbChqLGRlLHVlKTpsZS5jYWxsKGosZGUpO3JldHVybiBjZSYmKGNlLnVpZDwwJiYoY2UudWlk''@;'; put 'put ''Kz00Mjk0OTY3Mjk2KSxjZS5naWQ8MCYmKGNlLmdpZCs9NDI5NDk2NzI5NikpLGNlfX1mdW5jdGlvbiBuZShsZSl7cmV0dXJuIWxlfHwiRU5PU1lTIj09PWxlLmNvZGV8fCEoSy5nZXR1aWQmJjA9PT1LLmdldHVpZCgpfHwiRUlOVkFMIiE9PWxlLmNvZGUmJiJFUEVSTSIhPT1sZS5jb2RlKX1K''@;'; put 'put ''Lmhhc093blByb3BlcnR5KCJPX1NZTUxJTksiKSYmSy52ZXJzaW9uLm1hdGNoKC9edjBcLjZcLlswLTJdfF52MFwuNVwuLykmJigobGU9aikubGNobW9kPWZ1bmN0aW9uKGRlLHVlLGNlKXtsZS5vcGVuKGRlLEouT19XUk9OTFl8Si5PX1NZTUxJTkssdWUsZnVuY3Rpb24oWSxiKXtZP2NlJiZj''@;'; put 'put ''ZShZKTpsZS5mY2htb2QoYix1ZSxmdW5jdGlvbih4KXtsZS5jbG9zZShiLGZ1bmN0aW9uKE4pe2NlJiZjZSh4fHxOKX0pfSl9KX0sbGUubGNobW9kU3luYz1mdW5jdGlvbihkZSx1ZSl7dmFyIGNlLFk9bGUub3BlblN5bmMoZGUsSi5PX1dST05MWXxKLk9fU1lNTElOSyx1ZSksYj0hMDt0cnl7''@;'; put 'put ''Y2U9bGUuZmNobW9kU3luYyhZLHVlKSxiPSExfWZpbmFsbHl7aWYoYil0cnl7bGUuY2xvc2VTeW5jKFkpfWNhdGNoe31lbHNlIGxlLmNsb3NlU3luYyhZKX1yZXR1cm4gY2V9KSxqLmx1dGltZXN8fGZ1bmN0aW9uKGxlKXtKLmhhc093blByb3BlcnR5KCJPX1NZTUxJTksiKSYmbGUuZnV0aW1l''@;'; put 'put ''cz8obGUubHV0aW1lcz1mdW5jdGlvbihkZSx1ZSxjZSxZKXtsZS5vcGVuKGRlLEouT19TWU1MSU5LLGZ1bmN0aW9uKGIseCl7Yj9ZJiZZKGIpOmxlLmZ1dGltZXMoeCx1ZSxjZSxmdW5jdGlvbihOKXtsZS5jbG9zZSh4LGZ1bmN0aW9uKEYpe1kmJlkoTnx8Ril9KX0pfSl9LGxlLmx1dGltZXNT''@;'; put 'put ''eW5jPWZ1bmN0aW9uKGRlLHVlLGNlKXt2YXIgWSxiPWxlLm9wZW5TeW5jKGRlLEouT19TWU1MSU5LKSx4PSEwO3RyeXtZPWxlLmZ1dGltZXNTeW5jKGIsdWUsY2UpLHg9ITF9ZmluYWxseXtpZih4KXRyeXtsZS5jbG9zZVN5bmMoYil9Y2F0Y2h7fWVsc2UgbGUuY2xvc2VTeW5jKGIpfXJldHVy''@;'; put 'put ''biBZfSk6bGUuZnV0aW1lcyYmKGxlLmx1dGltZXM9ZnVuY3Rpb24oZGUsdWUsY2UsWSl7WSYmSy5uZXh0VGljayhZKX0sbGUubHV0aW1lc1N5bmM9ZnVuY3Rpb24oKXt9KX0oaiksai5jaG93bj1XKGouY2hvd24pLGouZmNob3duPVcoai5mY2hvd24pLGoubGNob3duPVcoai5sY2hvd24pLGou''@;'; put 'put ''Y2htb2Q9VihqLmNobW9kKSxqLmZjaG1vZD1WKGouZmNobW9kKSxqLmxjaG1vZD1WKGoubGNobW9kKSxqLmNob3duU3luYz1VKGouY2hvd25TeW5jKSxqLmZjaG93blN5bmM9VShqLmZjaG93blN5bmMpLGoubGNob3duU3luYz1VKGoubGNob3duU3luYyksai5jaG1vZFN5bmM9RyhqLmNobW9k''@;'; put 'put ''U3luYyksai5mY2htb2RTeW5jPUcoai5mY2htb2RTeW5jKSxqLmxjaG1vZFN5bmM9RyhqLmxjaG1vZFN5bmMpLGouc3RhdD1xKGouc3RhdCksai5mc3RhdD1xKGouZnN0YXQpLGoubHN0YXQ9cShqLmxzdGF0KSxqLnN0YXRTeW5jPXRlKGouc3RhdFN5bmMpLGouZnN0YXRTeW5jPXRlKGouZnN0''@;'; put 'put ''YXRTeW5jKSxqLmxzdGF0U3luYz10ZShqLmxzdGF0U3luYyksai5jaG1vZCYmIWoubGNobW9kJiYoai5sY2htb2Q9ZnVuY3Rpb24obGUsZGUsdWUpe3VlJiZLLm5leHRUaWNrKHVlKX0sai5sY2htb2RTeW5jPWZ1bmN0aW9uKCl7fSksai5jaG93biYmIWoubGNob3duJiYoai5sY2hvd249ZnVu''@;'; put 'put ''Y3Rpb24obGUsZGUsdWUsY2Upe2NlJiZLLm5leHRUaWNrKGNlKX0sai5sY2hvd25TeW5jPWZ1bmN0aW9uKCl7fSksIndpbjMyIj09PUUmJihqLnJlbmFtZT0iZnVuY3Rpb24iIT10eXBlb2Ygai5yZW5hbWU/ai5yZW5hbWU6ZnVuY3Rpb24obGUpe2Z1bmN0aW9uIGRlKHVlLGNlLFkpe3ZhciBi''@;'; put 'put ''PURhdGUubm93KCkseD0wO2xlKHVlLGNlLGZ1bmN0aW9uIE4oRil7aWYoRiYmKCJFQUNDRVMiPT09Ri5jb2RlfHwiRVBFUk0iPT09Ri5jb2RlKSYmRGF0ZS5ub3coKS1iPDZlNClyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2ouc3RhdChjZSxmdW5jdGlvbihnLEMpe2cmJiJFTk9FTlQi''@;'; put 'put ''PT09Zy5jb2RlP2xlKHVlLGNlLE4pOlkoRil9KX0seCksdm9pZCh4PDEwMCYmKHgrPTEwKSk7WSYmWShGKX0pfXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YmJk9iamVjdC5zZXRQcm90b3R5cGVPZihkZSxsZSksZGV9KGoucmVuYW1lKSksai5yZWFkPSJmdW5jdGlvbiIhPXR5cGVvZiBq''@;'; put 'put ''LnJlYWQ/ai5yZWFkOmZ1bmN0aW9uKGxlKXtmdW5jdGlvbiBkZSh1ZSxjZSxZLGIseCxOKXt2YXIgRjtpZihOJiYiZnVuY3Rpb24iPT10eXBlb2YgTil7dmFyIGc9MDtGPWZ1bmN0aW9uKEMsTSx5KXtpZihDJiYiRUFHQUlOIj09PUMuY29kZSYmZzwxMClyZXR1cm4gZysrLGxlLmNhbGwoaix1''@;'; put 'put ''ZSxjZSxZLGIseCxGKTtOLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19cmV0dXJuIGxlLmNhbGwoaix1ZSxjZSxZLGIseCxGKX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YoZGUsbGUpLGRlfShqLnJlYWQpLGoucmVhZFN5bmM9ImZ1bmN0aW9uIiE9''@;'; put 'put ''dHlwZW9mIGoucmVhZFN5bmM/ai5yZWFkU3luYzooaWU9ai5yZWFkU3luYyxmdW5jdGlvbihsZSxkZSx1ZSxjZSxZKXtmb3IodmFyIGI9MDs7KXRyeXtyZXR1cm4gaWUuY2FsbChqLGxlLGRlLHVlLGNlLFkpfWNhdGNoKHgpe2lmKCJFQUdBSU4iPT09eC5jb2RlJiZiPDEwKXtiKys7Y29udGlu''@;'; put 'put ''dWV9dGhyb3cgeH19KX19LDEwNDQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDIxMCkoIiVPYmplY3QuZGVmaW5lUHJvcGVydHklIiwhMCksSj1mdW5jdGlvbigpe2lmKEspdHJ5e3JldHVybiBLKHt9LCJhIix7dmFsdWU6MX0pLCEwfWNhdGNoe3JldHVybiExfXJldHVybiExfTtK''@;'; put 'put ''Lmhhc0FycmF5TGVuZ3RoRGVmaW5lQnVnPWZ1bmN0aW9uKCl7aWYoIUooKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIDEhPT1LKFtdLCJsZW5ndGgiLHt2YWx1ZToxfSkubGVuZ3RofWNhdGNoe3JldHVybiEwfX0sSC5leHBvcnRzPUp9LDE0MDU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''Sz10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLEo9TCg1NDE5KTtILmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgSyYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBLKCJmb28iKSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wo''@;'; put 'put ''ImJhciIpJiZKKCl9fSw1NDE5Okg9PnsidXNlIHN0cmljdCI7SC5leHBvcnRzPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFN5bWJvbHx8ImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpcmV0dXJuITE7aWYoInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3IpcmV0dXJuITA7dmFyIEI9e30sTD1TeW1ib2woInRlc3QiKSxLPU9iamVjdChMKTtpZigic3RyaW5nIj09dHlwZW9mIEx8fCJbb2JqZWN0IFN5bWJvbF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEwpfHwiW29iamVjdCBTeW1ib2xdIiE9PU9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChLKSlyZXR1cm4hMTtmb3IoTCBpbiBCW0xdPTQyLEIpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5rZXlzJiYwIT09T2JqZWN0LmtleXMoQikubGVuZ3RofHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5TmFtZXMmJjAhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhCKS5sZW5ndGgpcmV0dXJuITE7dmFyIEo9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhCKTtpZigxIT09Si5sZW5ndGh8fEpbMF0hPT1MfHwhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5j''@;'; put 'put ''YWxsKEIsTCkpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBJPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQixMKTtpZig0MiE9PUkudmFsdWV8fCEwIT09SS5lbnVtZXJhYmxlKXJldHVybiExfXJldHVy''@;'; put 'put ''biEwfX0sNjQxMDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNTQxOSk7SC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIEsoKSYmISFTeW1ib2wudG9TdHJpbmdUYWd9fSw3NjQyOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg4NjEyKTtILmV4cG9ydHM9Sy5jYWxsKEZ1''@;'; put 'put ''bmN0aW9uLmNhbGwsT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSl9LDMzNDk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDk1MDkpLkJ1ZmZlcixKPUwoODQ3MykuVHJhbnNmb3JtO2Z1bmN0aW9uIEkoUil7Si5jYWxsKHRoaXMpLHRoaXMuX2Jsb2NrPUsuYWxsb2NVbnNh''@;'; put 'put ''ZmUoUiksdGhpcy5fYmxvY2tTaXplPVIsdGhpcy5fYmxvY2tPZmZzZXQ9MCx0aGlzLl9sZW5ndGg9WzAsMCwwLDBdLHRoaXMuX2ZpbmFsaXplZD0hMX1MKDU3MTcpKEksSiksSS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihSLEUseil7dmFyIGo9bnVsbDt0cnl7dGhpcy51cGRhdGUo''@;'; put 'put ''UixFKX1jYXRjaChWKXtqPVZ9eihqKX0sSS5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKFIpe3ZhciBFPW51bGw7dHJ5e3RoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKX1jYXRjaCh6KXtFPXp9UihFKX0sSS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFIsRSl7aWYoZnVuY3Rpb24oVSxxKXtp''@;'; put 'put ''ZighSy5pc0J1ZmZlcihVKSYmInN0cmluZyIhPXR5cGVvZiBVKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhIHN0cmluZyBvciBhIGJ1ZmZlciIpfShSKSx0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtLLmlzQnVmZmVy''@;'; put 'put ''KFIpfHwoUj1LLmZyb20oUixFKSk7Zm9yKHZhciB6PXRoaXMuX2Jsb2NrLGo9MDt0aGlzLl9ibG9ja09mZnNldCtSLmxlbmd0aC1qPj10aGlzLl9ibG9ja1NpemU7KXtmb3IodmFyIFY9dGhpcy5fYmxvY2tPZmZzZXQ7Vjx0aGlzLl9ibG9ja1NpemU7KXpbVisrXT1SW2orK107dGhpcy5fdXBk''@;'; put 'put ''YXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MH1mb3IoO2o8Ui5sZW5ndGg7KXpbdGhpcy5fYmxvY2tPZmZzZXQrK109UltqKytdO2Zvcih2YXIgRz0wLFc9OCpSLmxlbmd0aDtXPjA7KytHKXRoaXMuX2xlbmd0aFtHXSs9VywoVz10aGlzLl9sZW5ndGhbR10vNDI5NDk2NzI5NnwwKT4wJiYodGhp''@;'; put 'put ''cy5fbGVuZ3RoW0ddLT00Mjk0OTY3Mjk2KlcpO3JldHVybiB0aGlzfSxJLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIGlzIG5vdCBpbXBsZW1lbnRlZCIpfSxJLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oUil7aWYodGhpcy5fZmluYWxp''@;'; put 'put ''emVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFscmVhZHkgY2FsbGVkIik7dGhpcy5fZmluYWxpemVkPSEwO3ZhciBFPXRoaXMuX2RpZ2VzdCgpO3ZvaWQgMCE9PVImJihFPUUudG9TdHJpbmcoUikpLHRoaXMuX2Jsb2NrLmZpbGwoMCksdGhpcy5fYmxvY2tPZmZzZXQ9MDtmb3IodmFyIHo9''@;'; put 'put ''MDt6PDQ7Kyt6KXRoaXMuX2xlbmd0aFt6XT0wO3JldHVybiBFfSxJLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfZGlnZXN0IGlzIG5vdCBpbXBsZW1lbnRlZCIpfSxILmV4cG9ydHM9SX0sMzcxNTooSCxCLEwpPT57dmFyIEs9QjtLLnV0aWxzPUwoNjQz''@;'; put 'put ''NiksSy5jb21tb249TCg1NzcyKSxLLnNoYT1MKDkwNDEpLEsucmlwZW1kPUwoMjk0OSksSy5obWFjPUwoMjM0NCksSy5zaGExPUsuc2hhLnNoYTEsSy5zaGEyNTY9Sy5zaGEuc2hhMjU2LEsuc2hhMjI0PUsuc2hhLnNoYTIyNCxLLnNoYTM4ND1LLnNoYS5zaGEzODQsSy5zaGE1MTI9Sy5zaGEu''@;'; put 'put ''c2hhNTEyLEsucmlwZW1kMTYwPUsucmlwZW1kLnJpcGVtZDE2MH0sNTc3MjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNjQzNiksSj1MKDk3NDYpO2Z1bmN0aW9uIEkoKXt0aGlzLnBlbmRpbmc9bnVsbCx0aGlzLnBlbmRpbmdUb3RhbD0wLHRoaXMuYmxvY2tTaXplPXRoaXMuY29u''@;'; put 'put ''c3RydWN0b3IuYmxvY2tTaXplLHRoaXMub3V0U2l6ZT10aGlzLmNvbnN0cnVjdG9yLm91dFNpemUsdGhpcy5obWFjU3RyZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGgsdGhpcy5wYWRMZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGgvOCx0aGlzLmVuZGlhbj0iYmln''@;'; put 'put ''Iix0aGlzLl9kZWx0YTg9dGhpcy5ibG9ja1NpemUvOCx0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfUIuQmxvY2tIYXNoPUksSS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFIsRSl7aWYoUj1LLnRvQXJyYXkoUixFKSx0aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nP3RoaXMucGVu''@;'; put 'put ''ZGluZy5jb25jYXQoUik6Uix0aGlzLnBlbmRpbmdUb3RhbCs9Ui5sZW5ndGgsdGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXt2YXIgej0oUj10aGlzLnBlbmRpbmcpLmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPVIuc2xpY2UoUi5sZW5ndGgteixSLmxlbmd0aCks''@;'; put 'put ''MD09PXRoaXMucGVuZGluZy5sZW5ndGgmJih0aGlzLnBlbmRpbmc9bnVsbCksUj1LLmpvaW4zMihSLDAsUi5sZW5ndGgteix0aGlzLmVuZGlhbik7Zm9yKHZhciBqPTA7ajxSLmxlbmd0aDtqKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZShSLGosait0aGlzLl9kZWx0YTMyKX1yZXR1cm4g''@;'; put 'put ''dGhpc30sSS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFIpe3JldHVybiB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSksSihudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlzLl9kaWdlc3QoUil9LEkucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgUj10aGlzLnBlbmRpbmdUb3RhbCxFPXRo''@;'; put 'put ''aXMuX2RlbHRhOCx6PUUtKFIrdGhpcy5wYWRMZW5ndGgpJUUsaj1uZXcgQXJyYXkoeit0aGlzLnBhZExlbmd0aCk7alswXT0xMjg7Zm9yKHZhciBWPTE7Vjx6O1YrKylqW1ZdPTA7aWYoUjw8PTMsImJpZyI9PT10aGlzLmVuZGlhbil7Zm9yKHZhciBHPTg7Rzx0aGlzLnBhZExlbmd0aDtHKysp''@;'; put 'put ''altWKytdPTA7altWKytdPTAsaltWKytdPTAsaltWKytdPTAsaltWKytdPTAsaltWKytdPVI+Pj4yNCYyNTUsaltWKytdPVI+Pj4xNiYyNTUsaltWKytdPVI+Pj44JjI1NSxqW1YrK109MjU1JlJ9ZWxzZSBmb3IoaltWKytdPTI1NSZSLGpbVisrXT1SPj4+OCYyNTUsaltWKytdPVI+Pj4xNiYy''@;'; put 'put ''NTUsaltWKytdPVI+Pj4yNCYyNTUsaltWKytdPTAsaltWKytdPTAsaltWKytdPTAsaltWKytdPTAsRz04O0c8dGhpcy5wYWRMZW5ndGg7RysrKWpbVisrXT0wO3JldHVybiBqfX0sMjM0NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNjQzNiksSj1MKDk3NDYpO2Z1bmN0aW9uIEko''@;'; put 'put ''UixFLHope2lmKCEodGhpcyBpbnN0YW5jZW9mIEkpKXJldHVybiBuZXcgSShSLEUseik7dGhpcy5IYXNoPVIsdGhpcy5ibG9ja1NpemU9Ui5ibG9ja1NpemUvOCx0aGlzLm91dFNpemU9Ui5vdXRTaXplLzgsdGhpcy5pbm5lcj1udWxsLHRoaXMub3V0ZXI9bnVsbCx0aGlzLl9pbml0KEsudG9B''@;'; put 'put ''cnJheShFLHopKX1ILmV4cG9ydHM9SSxJLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihSKXtSLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSYmKFI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShSKS5kaWdlc3QoKSksSihSLmxlbmd0aDw9dGhpcy5ibG9ja1NpemUpO2Zvcih2YXIgRT1SLmxlbmd0aDtF''@;'; put 'put ''PHRoaXMuYmxvY2tTaXplO0UrKylSLnB1c2goMCk7Zm9yKEU9MDtFPFIubGVuZ3RoO0UrKylSW0VdXj01NDtmb3IodGhpcy5pbm5lcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKFIpLEU9MDtFPFIubGVuZ3RoO0UrKylSW0VdXj0xMDY7dGhpcy5vdXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRl''@;'; put 'put ''KFIpfSxJLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oUixFKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoUixFKSx0aGlzfSxJLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oUil7cmV0dXJuIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpLHRoaXMub3V0ZXIuZGln''@;'; put 'put ''ZXN0KFIpfX0sMjk0OTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNjQzNiksSj1MKDU3NzIpLEk9Sy5yb3RsMzIsUj1LLnN1bTMyLEU9Sy5zdW0zMl8zLHo9Sy5zdW0zMl80LGo9Si5CbG9ja0hhc2g7ZnVuY3Rpb24gVigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFYpKXJldHVybiBu''@;'; put 'put ''ZXcgVjtqLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5lbmRpYW49ImxpdHRsZSJ9ZnVuY3Rpb24gRyhsZSxkZSx1ZSxjZSl7cmV0dXJuIGxlPD0xNT9kZV51ZV5jZTpsZTw9MzE/ZGUmdWV8fmRl''@;'; put 'put ''JmNlOmxlPD00Nz8oZGV8fnVlKV5jZTpsZTw9NjM/ZGUmY2V8dWUmfmNlOmRlXih1ZXx+Y2UpfWZ1bmN0aW9uIFcobGUpe3JldHVybiBsZTw9MTU/MDpsZTw9MzE/MTUxODUwMDI0OTpsZTw9NDc/MTg1OTc3NTM5MzpsZTw9NjM/MjQwMDk1OTcwODoyODQwODUzODM4fWZ1bmN0aW9uIFUobGUp''@;'; put 'put ''e3JldHVybiBsZTw9MTU/MTM1MjgyOTkyNjpsZTw9MzE/MTU0ODYwMzY4NDpsZTw9NDc/MTgzNjA3MjY5MTpsZTw9NjM/MjA1Mzk5NDIxNzowfUsuaW5oZXJpdHMoVixqKSxCLnJpcGVtZDE2MD1WLFYuYmxvY2tTaXplPTUxMixWLm91dFNpemU9MTYwLFYuaG1hY1N0cmVuZ3RoPTE5MixWLnBh''@;'; put 'put ''ZExlbmd0aD02NCxWLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGxlLGRlKXtmb3IodmFyIHVlPXRoaXMuaFswXSxjZT10aGlzLmhbMV0sWT10aGlzLmhbMl0sYj10aGlzLmhbM10seD10aGlzLmhbNF0sTj11ZSxGPWNlLGc9WSxDPWIsTT14LHk9MDt5PDgwO3krKyl7dmFyIHA9UihJKHoo''@;'; put 'put ''dWUsRyh5LGNlLFksYiksbGVbcVt5XStkZV0sVyh5KSksbmVbeV0pLHgpO3VlPXgseD1iLGI9SShZLDEwKSxZPWNlLGNlPXAscD1SKEkoeihOLEcoNzkteSxGLGcsQyksbGVbdGVbeV0rZGVdLFUoeSkpLGllW3ldKSxNKSxOPU0sTT1DLEM9SShnLDEwKSxnPUYsRj1wfXA9RSh0aGlzLmhbMV0s''@;'; put 'put ''WSxDKSx0aGlzLmhbMV09RSh0aGlzLmhbMl0sYixNKSx0aGlzLmhbMl09RSh0aGlzLmhbM10seCxOKSx0aGlzLmhbM109RSh0aGlzLmhbNF0sdWUsRiksdGhpcy5oWzRdPUUodGhpcy5oWzBdLGNlLGcpLHRoaXMuaFswXT1wfSxWLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGxlKXtyZXR1''@;'; put 'put ''cm4iaGV4Ij09PWxlP0sudG9IZXgzMih0aGlzLmgsImxpdHRsZSIpOksuc3BsaXQzMih0aGlzLmgsImxpdHRsZSIpfTt2YXIgcT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1''@;'; put 'put ''LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSx0ZT1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQs''@;'; put 'put ''MTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxuZT1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwx''@;'; put 'put ''NSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4''@;'; put 'put ''LDUsNl0saWU9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUs''@;'; put 'put ''MTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSw5MDQxOihILEIsTCk9PnsidXNlIHN0cmljdCI7Qi5zaGExPUwoNDc2MSksQi5zaGEyMjQ9TCg3OTkpLEIuc2hhMjU2PUwoOTM0NCksQi5zaGEzODQ9TCg3NzIpLEIuc2hhNTEyPUwoNTkwMCl9LDQ3NjE6KEgs''@;'; put 'put ''QixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDY0MzYpLEo9TCg1NzcyKSxJPUwoNzAzOCksUj1LLnJvdGwzMixFPUsuc3VtMzIsej1LLnN1bTMyXzUsaj1JLmZ0XzEsVj1KLkJsb2NrSGFzaCxHPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwzMzk1NDY5NzgyXTtmdW5jdGlv''@;'; put 'put ''biBXKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgVykpcmV0dXJuIG5ldyBXO1YuY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx0aGlzLlc9bmV3IEFycmF5KDgwKX1LLmluaGVyaXRzKFcsViksSC5leHBvcnRz''@;'; put 'put ''PVcsVy5ibG9ja1NpemU9NTEyLFcub3V0U2l6ZT0xNjAsVy5obWFjU3RyZW5ndGg9ODAsVy5wYWRMZW5ndGg9NjQsVy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihVLHEpe2Zvcih2YXIgdGU9dGhpcy5XLG5lPTA7bmU8MTY7bmUrKyl0ZVtuZV09VVtxK25lXTtmb3IoO25lPHRlLmxlbmd0''@;'; put 'put ''aDtuZSsrKXRlW25lXT1SKHRlW25lLTNdXnRlW25lLThdXnRlW25lLTE0XV50ZVtuZS0xNl0sMSk7dmFyIGllPXRoaXMuaFswXSxsZT10aGlzLmhbMV0sZGU9dGhpcy5oWzJdLHVlPXRoaXMuaFszXSxjZT10aGlzLmhbNF07Zm9yKG5lPTA7bmU8dGUubGVuZ3RoO25lKyspe3ZhciBZPX5+KG5l''@;'; put 'put ''LzIwKSxiPXooUihpZSw1KSxqKFksbGUsZGUsdWUpLGNlLHRlW25lXSxHW1ldKTtjZT11ZSx1ZT1kZSxkZT1SKGxlLDMwKSxsZT1pZSxpZT1ifXRoaXMuaFswXT1FKHRoaXMuaFswXSxpZSksdGhpcy5oWzFdPUUodGhpcy5oWzFdLGxlKSx0aGlzLmhbMl09RSh0aGlzLmhbMl0sZGUpLHRoaXMu''@;'; put 'put ''aFszXT1FKHRoaXMuaFszXSx1ZSksdGhpcy5oWzRdPUUodGhpcy5oWzRdLGNlKX0sVy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihVKXtyZXR1cm4iaGV4Ij09PVU/Sy50b0hleDMyKHRoaXMuaCwiYmlnIik6Sy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3OTk6KEgsQixMKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgSz1MKDY0MzYpLEo9TCg5MzQ0KTtmdW5jdGlvbiBJKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgSSkpcmV0dXJuIG5ldyBJO0ouY2FsbCh0aGlzKSx0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAy''@;'; put 'put ''NSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdfUsuaW5oZXJpdHMoSSxKKSxILmV4cG9ydHM9SSxJLmJsb2NrU2l6ZT01MTIsSS5vdXRTaXplPTIyNCxJLmhtYWNTdHJlbmd0aD0xOTIsSS5wYWRMZW5ndGg9NjQsSS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihSKXtyZXR1cm4iaGV4Ij09PVI/''@;'; put 'put ''Sy50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKTpLLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpfX0sOTM0NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNjQzNiksSj1MKDU3NzIpLEk9TCg3MDM4KSxSPUwoOTc0NiksRT1LLnN1bTMyLHo9Sy5zdW0zMl80''@;'; put 'put ''LGo9Sy5zdW0zMl81LFY9SS5jaDMyLEc9SS5tYWozMixXPUkuczBfMjU2LFU9SS5zMV8yNTYscT1JLmcwXzI1Nix0ZT1JLmcxXzI1NixuZT1KLkJsb2NrSGFzaCxpZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUz''@;'; put 'put ''NjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEy''@;'; put 'put ''MiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5''@;'; put 'put ''ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1''@;'; put 'put ''NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtmdW5jdGlvbiBsZSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGxlKSly''@;'; put 'put ''ZXR1cm4gbmV3IGxlO25lLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0sdGhpcy5rPWllLHRoaXMuVz1uZXcgQXJyYXkoNjQpfUsuaW5oZXJpdHMo''@;'; put 'put ''bGUsbmUpLEguZXhwb3J0cz1sZSxsZS5ibG9ja1NpemU9NTEyLGxlLm91dFNpemU9MjU2LGxlLmhtYWNTdHJlbmd0aD0xOTIsbGUucGFkTGVuZ3RoPTY0LGxlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGRlLHVlKXtmb3IodmFyIGNlPXRoaXMuVyxZPTA7WTwxNjtZKyspY2VbWV09ZGVb''@;'; put 'put ''dWUrWV07Zm9yKDtZPGNlLmxlbmd0aDtZKyspY2VbWV09eih0ZShjZVtZLTJdKSxjZVtZLTddLHEoY2VbWS0xNV0pLGNlW1ktMTZdKTt2YXIgYj10aGlzLmhbMF0seD10aGlzLmhbMV0sTj10aGlzLmhbMl0sRj10aGlzLmhbM10sZz10aGlzLmhbNF0sQz10aGlzLmhbNV0sTT10aGlzLmhbNl0s''@;'; put 'put ''eT10aGlzLmhbN107Zm9yKFIodGhpcy5rLmxlbmd0aD09PWNlLmxlbmd0aCksWT0wO1k8Y2UubGVuZ3RoO1krKyl7dmFyIHA9aih5LFUoZyksVihnLEMsTSksdGhpcy5rW1ldLGNlW1ldKSxTPUUoVyhiKSxHKGIseCxOKSk7eT1NLE09QyxDPWcsZz1FKEYscCksRj1OLE49eCx4PWIsYj1FKHAs''@;'; put 'put ''Uyl9dGhpcy5oWzBdPUUodGhpcy5oWzBdLGIpLHRoaXMuaFsxXT1FKHRoaXMuaFsxXSx4KSx0aGlzLmhbMl09RSh0aGlzLmhbMl0sTiksdGhpcy5oWzNdPUUodGhpcy5oWzNdLEYpLHRoaXMuaFs0XT1FKHRoaXMuaFs0XSxnKSx0aGlzLmhbNV09RSh0aGlzLmhbNV0sQyksdGhpcy5oWzZdPUUo''@;'; put 'put ''dGhpcy5oWzZdLE0pLHRoaXMuaFs3XT1FKHRoaXMuaFs3XSx5KX0sbGUucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oZGUpe3JldHVybiJoZXgiPT09ZGU/Sy50b0hleDMyKHRoaXMuaCwiYmlnIik6Sy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3NzI6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgSz1MKDY0MzYpLEo9TCg1OTAwKTtmdW5jdGlvbiBJKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgSSkpcmV0dXJuIG5ldyBJO0ouY2FsbCh0aGlzKSx0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0''@;'; put 'put ''NjIzNjAsNDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdfUsuaW5oZXJpdHMoSSxKKSxILmV4cG9ydHM9SSxJLmJsb2NrU2l6ZT0xMDI0LEkub3V0U2l6ZT0zODQs''@;'; put 'put ''SS5obWFjU3RyZW5ndGg9MTkyLEkucGFkTGVuZ3RoPTEyOCxJLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKFIpe3JldHVybiJoZXgiPT09Uj9LLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKTpLLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKX19LDU5MDA6KEgs''@;'; put 'put ''QixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDY0MzYpLEo9TCg1NzcyKSxJPUwoOTc0NiksUj1LLnJvdHI2NF9oaSxFPUsucm90cjY0X2xvLHo9Sy5zaHI2NF9oaSxqPUsuc2hyNjRfbG8sVj1LLnN1bTY0LEc9Sy5zdW02NF9oaSxXPUsuc3VtNjRfbG8sVT1LLnN1bTY0XzRfaGkscT1LLnN1''@;'; put 'put ''bTY0XzRfbG8sdGU9Sy5zdW02NF81X2hpLG5lPUsuc3VtNjRfNV9sbyxpZT1KLkJsb2NrSGFzaCxsZT1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0''@;'; put 'put ''NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4''@;'; put 'put ''LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAy''@;'; put 'put ''NTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMz''@;'; put 'put ''Nzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEs''@;'; put 'put ''MjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1Nywz''@;'; put 'put ''MzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1''@;'; put 'put ''NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1''@;'; put 'put ''MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwz''@;'; put 'put ''OTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1''@;'; put 'put ''MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdO2Z1bmN0aW9uIGRlKCl7aWYoISh0aGlzIGluc3RhbmNl''@;'; put 'put ''b2YgZGUpKXJldHVybiBuZXcgZGU7aWUuY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsNDA4OTIzNTcyMCwzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUsMTAxMzkwNDI0Miw0MjcxMTc1NzIzLDI3NzM0ODA3NjIsMTU5NTc1MDEyOSwxMzU5ODkzMTE5LDI5MTc1NjUxMzcsMjYwMDgyMjkyNCw3''@;'; put 'put ''MjU1MTExOTksNTI4NzM0NjM1LDQyMTUzODk1NDcsMTU0MTQ1OTIyNSwzMjcwMzMyMDldLHRoaXMuaz1sZSx0aGlzLlc9bmV3IEFycmF5KDE2MCl9ZnVuY3Rpb24gdWUoUyxRLHJlLGZlLG1lKXt2YXIga2U9UyZyZV5+UyZtZTtyZXR1cm4ga2U8MCYmKGtlKz00Mjk0OTY3Mjk2KSxrZX1mdW5j''@;'; put 'put ''dGlvbiBjZShTLFEscmUsZmUsbWUsa2Upe3ZhciBUZT1RJmZlXn5RJmtlO3JldHVybiBUZTwwJiYoVGUrPTQyOTQ5NjcyOTYpLFRlfWZ1bmN0aW9uIFkoUyxRLHJlLGZlLG1lKXt2YXIga2U9UyZyZV5TJm1lXnJlJm1lO3JldHVybiBrZTwwJiYoa2UrPTQyOTQ5NjcyOTYpLGtlfWZ1bmN0aW9u''@;'; put 'put ''IGIoUyxRLHJlLGZlLG1lLGtlKXt2YXIgVGU9USZmZV5RJmtlXmZlJmtlO3JldHVybiBUZTwwJiYoVGUrPTQyOTQ5NjcyOTYpLFRlfWZ1bmN0aW9uIHgoUyxRKXt2YXIgcmU9UihTLFEsMjgpXlIoUSxTLDIpXlIoUSxTLDcpO3JldHVybiByZTwwJiYocmUrPTQyOTQ5NjcyOTYpLHJlfWZ1bmN0''@;'; put 'put ''aW9uIE4oUyxRKXt2YXIgcmU9RShTLFEsMjgpXkUoUSxTLDIpXkUoUSxTLDcpO3JldHVybiByZTwwJiYocmUrPTQyOTQ5NjcyOTYpLHJlfWZ1bmN0aW9uIEYoUyxRKXt2YXIgcmU9UihTLFEsMTQpXlIoUyxRLDE4KV5SKFEsUyw5KTtyZXR1cm4gcmU8MCYmKHJlKz00Mjk0OTY3Mjk2KSxyZX1m''@;'; put 'put ''dW5jdGlvbiBnKFMsUSl7dmFyIHJlPUUoUyxRLDE0KV5FKFMsUSwxOCleRShRLFMsOSk7cmV0dXJuIHJlPDAmJihyZSs9NDI5NDk2NzI5NikscmV9ZnVuY3Rpb24gQyhTLFEpe3ZhciByZT1SKFMsUSwxKV5SKFMsUSw4KV56KFMsUSw3KTtyZXR1cm4gcmU8MCYmKHJlKz00Mjk0OTY3Mjk2KSxy''@;'; put 'put ''ZX1mdW5jdGlvbiBNKFMsUSl7dmFyIHJlPUUoUyxRLDEpXkUoUyxRLDgpXmooUyxRLDcpO3JldHVybiByZTwwJiYocmUrPTQyOTQ5NjcyOTYpLHJlfWZ1bmN0aW9uIHkoUyxRKXt2YXIgcmU9UihTLFEsMTkpXlIoUSxTLDI5KV56KFMsUSw2KTtyZXR1cm4gcmU8MCYmKHJlKz00Mjk0OTY3Mjk2''@;'; put 'put ''KSxyZX1mdW5jdGlvbiBwKFMsUSl7dmFyIHJlPUUoUyxRLDE5KV5FKFEsUywyOSleaihTLFEsNik7cmV0dXJuIHJlPDAmJihyZSs9NDI5NDk2NzI5NikscmV9Sy5pbmhlcml0cyhkZSxpZSksSC5leHBvcnRzPWRlLGRlLmJsb2NrU2l6ZT0xMDI0LGRlLm91dFNpemU9NTEyLGRlLmhtYWNTdHJl''@;'; put 'put ''bmd0aD0xOTIsZGUucGFkTGVuZ3RoPTEyOCxkZS5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbihTLFEpe2Zvcih2YXIgcmU9dGhpcy5XLGZlPTA7ZmU8MzI7ZmUrKylyZVtmZV09U1tRK2ZlXTtmb3IoO2ZlPHJlLmxlbmd0aDtmZSs9Mil7dmFyIG1lPXkocmVbZmUtNF0scmVbZmUt''@;'; put 'put ''M10pLGtlPXAocmVbZmUtNF0scmVbZmUtM10pLFRlPXJlW2ZlLTE0XSxQZT1yZVtmZS0xM10sRmU9QyhyZVtmZS0zMF0scmVbZmUtMjldKSxOZT1NKHJlW2ZlLTMwXSxyZVtmZS0yOV0pLExlPXJlW2ZlLTMyXSxCZT1yZVtmZS0zMV07cmVbZmVdPVUobWUsa2UsVGUsUGUsRmUsTmUsTGUsQmUp''@;'; put 'put ''LHJlW2ZlKzFdPXEobWUsa2UsVGUsUGUsRmUsTmUsTGUsQmUpfX0sZGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUyxRKXt0aGlzLl9wcmVwYXJlQmxvY2soUyxRKTt2YXIgcmU9dGhpcy5XLGZlPXRoaXMuaFswXSxtZT10aGlzLmhbMV0sa2U9dGhpcy5oWzJdLFRlPXRoaXMuaFszXSxQ''@;'; put 'put ''ZT10aGlzLmhbNF0sRmU9dGhpcy5oWzVdLE5lPXRoaXMuaFs2XSxMZT10aGlzLmhbN10sQmU9dGhpcy5oWzhdLEhlPXRoaXMuaFs5XSxRZT10aGlzLmhbMTBdLG10PXRoaXMuaFsxMV0sS2U9dGhpcy5oWzEyXSx3ZT10aGlzLmhbMTNdLEllPXRoaXMuaFsxNF0sT2U9dGhpcy5oWzE1XTtJKHRo''@;'; put 'put ''aXMuay5sZW5ndGg9PT1yZS5sZW5ndGgpO2Zvcih2YXIgZXQ9MDtldDxyZS5sZW5ndGg7ZXQrPTIpe3ZhciBudD1JZSxxZT1PZSxodD1GKEJlLEhlKSxFZT1nKEJlLEhlKSxEZT11ZShCZSwwLFFlLDAsS2UpLCRlPWNlKDAsSGUsMCxtdCwwLHdlKSxhdD10aGlzLmtbZXRdLGN0PXRoaXMua1tl''@;'; put 'put ''dCsxXSxPdD1yZVtldF0sUHQ9cmVbZXQrMV0sQXQ9dGUobnQscWUsaHQsRWUsRGUsJGUsYXQsY3QsT3QsUHQpLEp0PW5lKG50LHFlLGh0LEVlLERlLCRlLGF0LGN0LE90LFB0KTtudD14KGZlLG1lKSxxZT1OKGZlLG1lKSxodD1ZKGZlLDAsa2UsMCxQZSksRWU9YigwLG1lLDAsVGUsMCxGZSk7''@;'; put 'put ''dmFyIG1uPUcobnQscWUsaHQsRWUpLE50PVcobnQscWUsaHQsRWUpO0llPUtlLE9lPXdlLEtlPVFlLHdlPW10LFFlPUJlLG10PUhlLEJlPUcoTmUsTGUsQXQsSnQpLEhlPVcoTGUsTGUsQXQsSnQpLE5lPVBlLExlPUZlLFBlPWtlLEZlPVRlLGtlPWZlLFRlPW1lLGZlPUcoQXQsSnQsbW4sTnQp''@;'; put 'put ''LG1lPVcoQXQsSnQsbW4sTnQpfVYodGhpcy5oLDAsZmUsbWUpLFYodGhpcy5oLDIsa2UsVGUpLFYodGhpcy5oLDQsUGUsRmUpLFYodGhpcy5oLDYsTmUsTGUpLFYodGhpcy5oLDgsQmUsSGUpLFYodGhpcy5oLDEwLFFlLG10KSxWKHRoaXMuaCwxMixLZSx3ZSksVih0aGlzLmgsMTQsSWUsT2Up''@;'; put 'put ''fSxkZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihTKXtyZXR1cm4iaGV4Ij09PVM/Sy50b0hleDMyKHRoaXMuaCwiYmlnIik6Sy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3MDM4OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg2NDM2KS5yb3RyMzI7ZnVuY3Rpb24gSihFLHos''@;'; put 'put ''ail7cmV0dXJuIEUmel5+RSZqfWZ1bmN0aW9uIEkoRSx6LGope3JldHVybiBFJnpeRSZqXnoman1mdW5jdGlvbiBSKEUseixqKXtyZXR1cm4gRV56Xmp9Qi5mdF8xPWZ1bmN0aW9uKEUseixqLFYpe3JldHVybiAwPT09RT9KKHosaixWKToxPT09RXx8Mz09PUU/Uih6LGosVik6Mj09PUU/SSh6''@;'; put 'put ''LGosVik6dm9pZCAwfSxCLmNoMzI9SixCLm1hajMyPUksQi5wMzI9UixCLnMwXzI1Nj1mdW5jdGlvbihFKXtyZXR1cm4gSyhFLDIpXksoRSwxMyleSyhFLDIyKX0sQi5zMV8yNTY9ZnVuY3Rpb24oRSl7cmV0dXJuIEsoRSw2KV5LKEUsMTEpXksoRSwyNSl9LEIuZzBfMjU2PWZ1bmN0aW9uKEUp''@;'; put 'put ''e3JldHVybiBLKEUsNyleSyhFLDE4KV5FPj4+M30sQi5nMV8yNTY9ZnVuY3Rpb24oRSl7cmV0dXJuIEsoRSwxNyleSyhFLDE5KV5FPj4+MTB9fSw2NDM2OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg5NzQ2KSxKPUwoNTcxNyk7ZnVuY3Rpb24gSShqLFYpe3JldHVybiA1NTI5Nj09''@;'; put 'put ''KDY0NTEyJmouY2hhckNvZGVBdChWKSkmJiEoVjwwfHxWKzE+PWoubGVuZ3RoKSYmNTYzMjA9PSg2NDUxMiZqLmNoYXJDb2RlQXQoVisxKSl9ZnVuY3Rpb24gUihqKXtyZXR1cm4oaj4+PjI0fGo+Pj44JjY1MjgwfGo8PDgmMTY3MTE2ODB8KDI1NSZqKTw8MjQpPj4+MH1mdW5jdGlvbiBFKGop''@;'; put 'put ''e3JldHVybiAxPT09ai5sZW5ndGg/IjAiK2o6an1mdW5jdGlvbiB6KGope3JldHVybiA3PT09ai5sZW5ndGg/IjAiK2o6Nj09PWoubGVuZ3RoPyIwMCIrajo1PT09ai5sZW5ndGg/IjAwMCIrajo0PT09ai5sZW5ndGg/IjAwMDAiK2o6Mz09PWoubGVuZ3RoPyIwMDAwMCIrajoyPT09ai5sZW5n''@;'; put 'put ''dGg/IjAwMDAwMCIrajoxPT09ai5sZW5ndGg/IjAwMDAwMDAiK2o6an1CLmluaGVyaXRzPUosQi50b0FycmF5PWZ1bmN0aW9uKGosVil7aWYoQXJyYXkuaXNBcnJheShqKSlyZXR1cm4gai5zbGljZSgpO2lmKCFqKXJldHVybltdO3ZhciBHPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgailpZihW''@;'; put 'put ''KXtpZigiaGV4Ij09PVYpZm9yKChqPWoucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoaj0iMCIraiksVT0wO1U8ai5sZW5ndGg7VSs9MilHLnB1c2gocGFyc2VJbnQoaltVXStqW1UrMV0sMTYpKX1lbHNlIGZvcih2YXIgVz0wLFU9MDtVPGoubGVuZ3RoO1UrKyl7''@;'; put 'put ''dmFyIHE9ai5jaGFyQ29kZUF0KFUpO3E8MTI4P0dbVysrXT1xOnE8MjA0OD8oR1tXKytdPXE+PjZ8MTkyLEdbVysrXT02MyZxfDEyOCk6SShqLFUpPyhxPTY1NTM2KygoMTAyMyZxKTw8MTApKygxMDIzJmouY2hhckNvZGVBdCgrK1UpKSxHW1crK109cT4+MTh8MjQwLEdbVysrXT1xPj4xMiY2''@;'; put 'put ''M3wxMjgsR1tXKytdPXE+PjYmNjN8MTI4LEdbVysrXT02MyZxfDEyOCk6KEdbVysrXT1xPj4xMnwyMjQsR1tXKytdPXE+PjYmNjN8MTI4LEdbVysrXT02MyZxfDEyOCl9ZWxzZSBmb3IoVT0wO1U8ai5sZW5ndGg7VSsrKUdbVV09MHxqW1VdO3JldHVybiBHfSxCLnRvSGV4PWZ1bmN0aW9uKGop''@;'; put 'put ''e2Zvcih2YXIgVj0iIixHPTA7RzxqLmxlbmd0aDtHKyspVis9RShqW0ddLnRvU3RyaW5nKDE2KSk7cmV0dXJuIFZ9LEIuaHRvbmw9UixCLnRvSGV4MzI9ZnVuY3Rpb24oaixWKXtmb3IodmFyIEc9IiIsVz0wO1c8ai5sZW5ndGg7VysrKXt2YXIgVT1qW1ddOyJsaXR0bGUiPT09ViYmKFU9UihV''@;'; put 'put ''KSksRys9eihVLnRvU3RyaW5nKDE2KSl9cmV0dXJuIEd9LEIuemVybzI9RSxCLnplcm84PXosQi5qb2luMzI9ZnVuY3Rpb24oaixWLEcsVyl7dmFyIFU9Ry1WO0soVSU0PT0wKTtmb3IodmFyIHE9bmV3IEFycmF5KFUvNCksdGU9MCxuZT1WO3RlPHEubGVuZ3RoO3RlKyssbmUrPTQpcVt0ZV09''@;'; put 'put ''KCJiaWciPT09Vz9qW25lXTw8MjR8altuZSsxXTw8MTZ8altuZSsyXTw8OHxqW25lKzNdOmpbbmUrM108PDI0fGpbbmUrMl08PDE2fGpbbmUrMV08PDh8altuZV0pPj4+MDtyZXR1cm4gcX0sQi5zcGxpdDMyPWZ1bmN0aW9uKGosVil7Zm9yKHZhciBHPW5ldyBBcnJheSg0KmoubGVuZ3RoKSxX''@;'; put 'put ''PTAsVT0wO1c8ai5sZW5ndGg7VysrLFUrPTQpe3ZhciBxPWpbV107ImJpZyI9PT1WPyhHW1VdPXE+Pj4yNCxHW1UrMV09cT4+PjE2JjI1NSxHW1UrMl09cT4+PjgmMjU1LEdbVSszXT0yNTUmcSk6KEdbVSszXT1xPj4+MjQsR1tVKzJdPXE+Pj4xNiYyNTUsR1tVKzFdPXE+Pj44JjI1NSxHW1Vd''@;'; put 'put ''PTI1NSZxKX1yZXR1cm4gR30sQi5yb3RyMzI9ZnVuY3Rpb24oaixWKXtyZXR1cm4gaj4+PlZ8ajw8MzItVn0sQi5yb3RsMzI9ZnVuY3Rpb24oaixWKXtyZXR1cm4gajw8VnxqPj4+MzItVn0sQi5zdW0zMj1mdW5jdGlvbihqLFYpe3JldHVybiBqK1Y+Pj4wfSxCLnN1bTMyXzM9ZnVuY3Rpb24o''@;'; put 'put ''aixWLEcpe3JldHVybiBqK1YrRz4+PjB9LEIuc3VtMzJfND1mdW5jdGlvbihqLFYsRyxXKXtyZXR1cm4gaitWK0crVz4+PjB9LEIuc3VtMzJfNT1mdW5jdGlvbihqLFYsRyxXLFUpe3JldHVybiBqK1YrRytXK1U+Pj4wfSxCLnN1bTY0PWZ1bmN0aW9uKGosVixHLFcpe3ZhciBxPVcraltWKzFd''@;'; put 'put ''Pj4+MDtqW1ZdPShxPFc/MTowKStHK2pbVl0+Pj4wLGpbVisxXT1xfSxCLnN1bTY0X2hpPWZ1bmN0aW9uKGosVixHLFcpe3JldHVybihWK1c+Pj4wPFY/MTowKStqK0c+Pj4wfSxCLnN1bTY0X2xvPWZ1bmN0aW9uKGosVixHLFcpe3JldHVybiBWK1c+Pj4wfSxCLnN1bTY0XzRfaGk9ZnVuY3Rp''@;'; put 'put ''b24oaixWLEcsVyxVLHEsdGUsbmUpe3ZhciBpZT0wLGxlPVY7cmV0dXJuIGllKz0obGU9bGUrVz4+PjApPFY/MTowLGllKz0obGU9bGUrcT4+PjApPHE/MTowLGorRytVK3RlKyhpZSs9KGxlPWxlK25lPj4+MCk8bmU/MTowKT4+PjB9LEIuc3VtNjRfNF9sbz1mdW5jdGlvbihqLFYsRyxXLFUs''@;'; put 'put ''cSx0ZSxuZSl7cmV0dXJuIFYrVytxK25lPj4+MH0sQi5zdW02NF81X2hpPWZ1bmN0aW9uKGosVixHLFcsVSxxLHRlLG5lLGllLGxlKXt2YXIgZGU9MCx1ZT1WO3JldHVybiBkZSs9KHVlPXVlK1c+Pj4wKTxWPzE6MCxkZSs9KHVlPXVlK3E+Pj4wKTxxPzE6MCxkZSs9KHVlPXVlK25lPj4+MCk8''@;'; put 'put ''bmU/MTowLGorRytVK3RlK2llKyhkZSs9KHVlPXVlK2xlPj4+MCk8bGU/MTowKT4+PjB9LEIuc3VtNjRfNV9sbz1mdW5jdGlvbihqLFYsRyxXLFUscSx0ZSxuZSxpZSxsZSl7cmV0dXJuIFYrVytxK25lK2xlPj4+MH0sQi5yb3RyNjRfaGk9ZnVuY3Rpb24oaixWLEcpe3JldHVybihWPDwzMi1H''@;'; put 'put ''fGo+Pj5HKT4+PjB9LEIucm90cjY0X2xvPWZ1bmN0aW9uKGosVixHKXtyZXR1cm4oajw8MzItR3xWPj4+Ryk+Pj4wfSxCLnNocjY0X2hpPWZ1bmN0aW9uKGosVixHKXtyZXR1cm4gaj4+Pkd9LEIuc2hyNjRfbG89ZnVuY3Rpb24oaixWLEcpe3JldHVybihqPDwzMi1HfFY+Pj5HKT4+PjB9fSwy''@;'; put 'put ''MTU2OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCgzNzE1KSxKPUwoNDUwNCksST1MKDk3NDYpO2Z1bmN0aW9uIFIoRSl7aWYoISh0aGlzIGluc3RhbmNlb2YgUikpcmV0dXJuIG5ldyBSKEUpO3RoaXMuaGFzaD1FLmhhc2gsdGhpcy5wcmVkUmVzaXN0PSEhRS5wcmVkUmVzaXN0LHRo''@;'; put 'put ''aXMub3V0TGVuPXRoaXMuaGFzaC5vdXRTaXplLHRoaXMubWluRW50cm9weT1FLm1pbkVudHJvcHl8fHRoaXMuaGFzaC5obWFjU3RyZW5ndGgsdGhpcy5fcmVzZWVkPW51bGwsdGhpcy5yZXNlZWRJbnRlcnZhbD1udWxsLHRoaXMuSz1udWxsLHRoaXMuVj1udWxsO3ZhciB6PUoudG9BcnJheShF''@;'; put 'put ''LmVudHJvcHksRS5lbnRyb3B5RW5jfHwiaGV4Iiksaj1KLnRvQXJyYXkoRS5ub25jZSxFLm5vbmNlRW5jfHwiaGV4IiksVj1KLnRvQXJyYXkoRS5wZXJzLEUucGVyc0VuY3x8ImhleCIpO0koei5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0g''@;'; put 'put ''aXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX2luaXQoeixqLFYpfUguZXhwb3J0cz1SLFIucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKEUseixqKXt2YXIgVj1FLmNvbmNhdCh6KS5jb25jYXQoaik7dGhpcy5LPW5ldyBBcnJheSh0aGlzLm91dExlbi84KSx0aGlzLlY9bmV3''@;'; put 'put ''IEFycmF5KHRoaXMub3V0TGVuLzgpO2Zvcih2YXIgRz0wO0c8dGhpcy5WLmxlbmd0aDtHKyspdGhpcy5LW0ddPTAsdGhpcy5WW0ddPTE7dGhpcy5fdXBkYXRlKFYpLHRoaXMuX3Jlc2VlZD0xLHRoaXMucmVzZWVkSW50ZXJ2YWw9MjgxNDc0OTc2NzEwNjU2fSxSLnByb3RvdHlwZS5faG1hYz1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBuZXcgSy5obWFjKHRoaXMuaGFzaCx0aGlzLkspfSxSLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEUpe3ZhciB6PXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzBdKTtFJiYoej16LnVwZGF0ZShFKSksdGhpcy5LPXouZGlnZXN0KCksdGhp''@;'; put 'put ''cy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSxFJiYodGhpcy5LPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzFdKS51cGRhdGUoRSkuZGlnZXN0KCksdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKSl9LFIucHJvdG90''@;'; put 'put ''eXBlLnJlc2VlZD1mdW5jdGlvbihFLHosaixWKXsic3RyaW5nIiE9dHlwZW9mIHomJihWPWosaj16LHo9bnVsbCksRT1KLnRvQXJyYXkoRSx6KSxqPUoudG9BcnJheShqLFYpLEkoRS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIr''@;'; put 'put ''dGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX3VwZGF0ZShFLmNvbmNhdChqfHxbXSkpLHRoaXMuX3Jlc2VlZD0xfSxSLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbihFLHosaixWKXtpZih0aGlzLl9yZXNlZWQ+dGhpcy5yZXNlZWRJbnRlcnZhbCl0aHJvdyBuZXcgRXJyb3IoIlJl''@;'; put 'put ''c2VlZCBpcyByZXF1aXJlZCIpOyJzdHJpbmciIT10eXBlb2YgeiYmKFY9aixqPXosej1udWxsKSxqJiYoaj1KLnRvQXJyYXkoaixWfHwiaGV4IiksdGhpcy5fdXBkYXRlKGopKTtmb3IodmFyIEc9W107Ry5sZW5ndGg8RTspdGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdl''@;'; put 'put ''c3QoKSxHPUcuY29uY2F0KHRoaXMuVik7dmFyIFc9Ry5zbGljZSgwLEUpO3JldHVybiB0aGlzLl91cGRhdGUoaiksdGhpcy5fcmVzZWVkKyssSi5lbmNvZGUoVyx6KX19LDY0NTooSCxCKT0+e0IucmVhZD1mdW5jdGlvbihMLEssSixJLFIpe3ZhciBFLHosaj04KlItSS0xLFY9KDE8PGopLTEs''@;'; put 'put ''Rz1WPj4xLFc9LTcsVT1KP1ItMTowLHE9Sj8tMToxLHRlPUxbSytVXTtmb3IoVSs9cSxFPXRlJigxPDwtVyktMSx0ZT4+PS1XLFcrPWo7Vz4wO0U9MjU2KkUrTFtLK1VdLFUrPXEsVy09OCk7Zm9yKHo9RSYoMTw8LVcpLTEsRT4+PS1XLFcrPUk7Vz4wO3o9MjU2KnorTFtLK1VdLFUrPXEsVy09''@;'; put 'put ''OCk7aWYoMD09PUUpRT0xLUc7ZWxzZXtpZihFPT09VilyZXR1cm4gej9OYU46MS8wKih0ZT8tMToxKTt6Kz1NYXRoLnBvdygyLEkpLEUtPUd9cmV0dXJuKHRlPy0xOjEpKnoqTWF0aC5wb3coMixFLUkpfSxCLndyaXRlPWZ1bmN0aW9uKEwsSyxKLEksUixFKXt2YXIgeixqLFYsRz04KkUtUi0x''@;'; put 'put ''LFc9KDE8PEcpLTEsVT1XPj4xLHE9MjM9PT1SP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCx0ZT1JPzA6RS0xLG5lPUk/MTotMSxpZT1LPDB8fDA9PT1LJiYxL0s8MD8xOjA7Zm9yKEs9TWF0aC5hYnMoSyksaXNOYU4oSyl8fEs9PT0xLzA/KGo9aXNOYU4oSyk/MTowLHo9Vyk6''@;'; put 'put ''KHo9TWF0aC5mbG9vcihNYXRoLmxvZyhLKS9NYXRoLkxOMiksSyooVj1NYXRoLnBvdygyLC16KSk8MSYmKHotLSxWKj0yKSwoSys9eitVPj0xP3EvVjpxKk1hdGgucG93KDIsMS1VKSkqVj49MiYmKHorKyxWLz0yKSx6K1U+PVc/KGo9MCx6PVcpOnorVT49MT8oaj0oSypWLTEpKk1hdGgucG93''@;'; put 'put ''KDIsUikseis9VSk6KGo9SypNYXRoLnBvdygyLFUtMSkqTWF0aC5wb3coMixSKSx6PTApKTtSPj04O0xbSit0ZV09MjU1JmosdGUrPW5lLGovPTI1NixSLT04KTtmb3Ioej16PDxSfGosRys9UjtHPjA7TFtKK3RlXT0yNTUmeix0ZSs9bmUsei89MjU2LEctPTgpO0xbSit0ZS1uZV18PTEyOCpp''@;'; put 'put ''ZX19LDc4NDQ6KEgsQixMKT0+e3ZhciBLPUwoNDE1NSksSj1MKDI0NzkpLEk9T2JqZWN0LmNyZWF0ZShudWxsKSxSPUwoNzc4KTtILmV4cG9ydHM9SihmdW5jdGlvbihFLHope3JldHVybiBJW0VdPyhJW0VdLnB1c2goeiksbnVsbCk6KElbRV09W3pdLGo9RSxSKGZ1bmN0aW9uIFYoKXt2YXIg''@;'; put 'put ''Rz1JW2pdLFc9Ry5sZW5ndGgsVT1mdW5jdGlvbih0ZSl7Zm9yKHZhciBuZT10ZS5sZW5ndGgsaWU9W10sbGU9MDtsZTxuZTtsZSsrKWllW2xlXT10ZVtsZV07cmV0dXJuIGllfShhcmd1bWVudHMpO3RyeXtmb3IodmFyIHE9MDtxPFc7cSsrKUdbcV0uYXBwbHkobnVsbCxVKX1maW5hbGx5e0cu''@;'; put 'put ''bGVuZ3RoPlc/KEcuc3BsaWNlKDAsVyksSy5uZXh0VGljayhmdW5jdGlvbigpe1YuYXBwbHkobnVsbCxVKX0pKTpkZWxldGUgSVtqXX19KSk7dmFyIGp9KX0sNTcxNzpIPT57SC5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEIsTCl7TCYmKEIuc3Vw''@;'; put 'put ''ZXJfPUwsQi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShMLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOkIsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTpmdW5jdGlvbihCLEwpe2lmKEwpe0Iuc3VwZXJfPUw7dmFyIEs9ZnVuY3Rpb24oKXt9O0su''@;'; put 'put ''cHJvdG90eXBlPUwucHJvdG90eXBlLEIucHJvdG90eXBlPW5ldyBLLEIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUJ9fX0sMjU4NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNjQxMCkoKSxKPUwoMTkyNCkoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSxJPWZ1bmN0aW9uKHop''@;'; put 'put ''e3JldHVybiEoSyYmeiYmIm9iamVjdCI9PXR5cGVvZiB6JiZTeW1ib2wudG9TdHJpbmdUYWcgaW4geikmJiJbb2JqZWN0IEFyZ3VtZW50c10iPT09Sih6KX0sUj1mdW5jdGlvbih6KXtyZXR1cm4hIUkoeil8fG51bGwhPT16JiYib2JqZWN0Ij09dHlwZW9mIHomJiJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''ei5sZW5ndGgmJnoubGVuZ3RoPj0wJiYiW29iamVjdCBBcnJheV0iIT09Sih6KSYmIltvYmplY3QgRnVuY3Rpb25dIj09PUooei5jYWxsZWUpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIEkoYXJndW1lbnRzKX0oKTtJLmlzTGVnYWN5QXJndW1lbnRzPVIsSC5leHBvcnRzPUU/STpSfSw1MzIwOkg9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIEIsTCxLPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxKPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmbnVsbCE9PVJlZmxlY3QmJlJlZmxlY3QuYXBwbHk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEomJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkpdHJ5e0I9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyBMfX0pLEw9e30sSihmdW5jdGlvbigpe3Rocm93IDQyfSxudWxsLEIpfWNhdGNoKFUpe1UhPT1MJiYoSj1udWxsKX1lbHNlIEo9bnVsbDt2YXIgST0vXlxzKmNs''@;'; put 'put ''YXNzXGIvLFI9ZnVuY3Rpb24oVSl7dHJ5e3ZhciBxPUsuY2FsbChVKTtyZXR1cm4gSS50ZXN0KHEpfWNhdGNoe3JldHVybiExfX0sRT1mdW5jdGlvbihVKXt0cnl7cmV0dXJuIVIoVSkmJihLLmNhbGwoVSksITApfWNhdGNoe3JldHVybiExfX0sej1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5n''@;'; put 'put ''LGo9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmISFTeW1ib2wudG9TdHJpbmdUYWcsVj0hKDAgaW5bLF0pLEc9ZnVuY3Rpb24oKXtyZXR1cm4hMX07aWYoIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCl7dmFyIFc9ZG9jdW1lbnQuYWxsO3ouY2FsbChXKT09PXouY2FsbChkb2N1bWVudC5h''@;'; put 'put ''bGwpJiYoRz1mdW5jdGlvbihVKXtpZigoVnx8IVUpJiYodm9pZCAwPT09VXx8Im9iamVjdCI9PXR5cGVvZiBVKSl0cnl7dmFyIHE9ei5jYWxsKFUpO3JldHVybigiW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0iPT09cXx8IltvYmplY3QgSFRNTCBkb2N1bWVudC5hbGwgY2xhc3NdIj09PXF8''@;'; put 'put ''fCJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXSI9PT1xfHwiW29iamVjdCBPYmplY3RdIj09PXEpJiZudWxsPT1VKCIiKX1jYXRjaHt9cmV0dXJuITF9KX1ILmV4cG9ydHM9Sj9mdW5jdGlvbihVKXtpZihHKFUpKXJldHVybiEwO2lmKCFVfHwiZnVuY3Rpb24iIT10eXBlb2YgVSYmIm9iamVjdCIh''@;'; put 'put ''PXR5cGVvZiBVKXJldHVybiExO3RyeXtKKFUsbnVsbCxCKX1jYXRjaChxKXtpZihxIT09TClyZXR1cm4hMX1yZXR1cm4hUihVKSYmRShVKX06ZnVuY3Rpb24oVSl7aWYoRyhVKSlyZXR1cm4hMDtpZighVXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFUmJiJvYmplY3QiIT10eXBlb2YgVSlyZXR1cm4h''@;'; put 'put ''MTtpZihqKXJldHVybiBFKFUpO2lmKFIoVSkpcmV0dXJuITE7dmFyIHE9ei5jYWxsKFUpO3JldHVybiEoIltvYmplY3QgRnVuY3Rpb25dIiE9PXEmJiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIhPT1xJiYhL15cW29iamVjdCBIVE1MLy50ZXN0KHEpKSYmRShVKX19LDg2NjI6KEgsQixM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsST1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsUj0vXlxzKig/OmZ1bmN0aW9uKT9cKi8sRT1MKDY0MTApKCksej1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7SC5leHBvcnRzPWZ1bmN0aW9uKGope2lm''@;'; put 'put ''KCJmdW5jdGlvbiIhPXR5cGVvZiBqKXJldHVybiExO2lmKFIudGVzdChJLmNhbGwoaikpKXJldHVybiEwO2lmKCFFKXJldHVybiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PT1KLmNhbGwoaik7aWYoIXopcmV0dXJuITE7aWYodm9pZCAwPT09Syl7dmFyIFY9ZnVuY3Rpb24oKXtpZigh''@;'; put 'put ''RSlyZXR1cm4hMTt0cnl7cmV0dXJuIEZ1bmN0aW9uKCJyZXR1cm4gZnVuY3Rpb24qKCkge30iKSgpfWNhdGNoe319KCk7Sz0hIVYmJnooVil9cmV0dXJuIHooaik9PT1LfX0sODYxMTpIPT57InVzZSBzdHJpY3QiO0guZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm4gQiE9Qn19LDM2MDooSCxC''@;'; put 'put ''LEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNTU1OSksSj1MKDQyODkpLEk9TCg4NjExKSxSPUwoOTQxNSksRT1MKDMxOTQpLHo9SyhSKCksTnVtYmVyKTtKKHose2dldFBvbHlmaWxsOlIsaW1wbGVtZW50YXRpb246SSxzaGltOkV9KSxILmV4cG9ydHM9en0sOTQxNTooSCxCLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBLPUwoODYxMSk7SC5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlci5pc05hTiYmTnVtYmVyLmlzTmFOKE5hTikmJiFOdW1iZXIuaXNOYU4oImEiKT9OdW1iZXIuaXNOYU46S319LDMxOTQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQyODkpLEo9''@;'; put 'put ''TCg5NDE1KTtILmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgST1KKCk7cmV0dXJuIEsoTnVtYmVyLHtpc05hTjpJfSx7aXNOYU46ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLmlzTmFOIT09SX19KSxJfX0sNTY5MjooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDAyOSksSj1MKDMwODMp''@;'; put 'put ''LEk9TCgxOTI0KSxSPUkoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSxFPUwoNjQxMCkoKSx6PUwoNzI5Niksaj10eXBlb2YgZ2xvYmFsVGhpcz4idSI/TC5nOmdsb2JhbFRoaXMsVj1KKCksRz1JKCJBcnJheS5wcm90b3R5cGUuaW5kZXhPZiIsITApfHxmdW5jdGlvbih0ZSxuZSl7Zm9y''@;'; put 'put ''KHZhciBpZT0wO2llPHRlLmxlbmd0aDtpZSs9MSlpZih0ZVtpZV09PT1uZSlyZXR1cm4gaWU7cmV0dXJuLTF9LFc9SSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLFU9e30scT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7RSYmeiYmcSYmSyhWLGZ1bmN0aW9uKHRlKXt2YXIgbmU9bmV3IGpbdGVd''@;'; put 'put ''O2lmKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBuZSl7dmFyIGllPXEobmUpLGxlPXooaWUsU3ltYm9sLnRvU3RyaW5nVGFnKTtpZighbGUpe3ZhciBkZT1xKGllKTtsZT16KGRlLFN5bWJvbC50b1N0cmluZ1RhZyl9VVt0ZV09bGUuZ2V0fX0pLEguZXhwb3J0cz1mdW5jdGlvbih0ZSl7aWYoIXRl''@;'; put 'put ''fHwib2JqZWN0IiE9dHlwZW9mIHRlKXJldHVybiExO2lmKCFFfHwhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB0ZSkpe3ZhciBuZT1XKFIodGUpLDgsLTEpO3JldHVybiBHKFYsbmUpPi0xfXJldHVybiEheiYmKGllPXRlLGxlPSExLEsoVSxmdW5jdGlvbihkZSx1ZSl7aWYoIWxlKXRyeXtsZT1k''@;'; put 'put ''ZS5jYWxsKGllKT09PXVlfWNhdGNoe319KSxsZSk7dmFyIGllLGxlfX0sNjgxMzooSCxCLEwpPT57bGV0IEs7dHJ5e0s9TCg3Nyl9Y2F0Y2h7Sz1MKDQxMjkpfWNvbnN0IEo9TCg4OTgxKSx7c3RyaW5naWZ5Okksc3RyaXBCb206Un09TCg2NzgwKSxFPXtyZWFkRmlsZTpKLmZyb21Qcm9taXNl''@;'; put 'put ''KGZ1bmN0aW9uKCl7dmFyIHo9c2UoZnVuY3Rpb24qKGosVj17fSl7InN0cmluZyI9PXR5cGVvZiBWJiYoVj17ZW5jb2Rpbmc6Vn0pO2NvbnN0IEc9Vi5mc3x8SyxXPSEoInRocm93cyJpbiBWKXx8Vi50aHJvd3M7bGV0IFUscT15aWVsZCBKLmZyb21DYWxsYmFjayhHLnJlYWRGaWxlKShqLFYp''@;'; put 'put ''O3E9UihxKTt0cnl7VT1KU09OLnBhcnNlKHEsVj9WLnJldml2ZXI6bnVsbCl9Y2F0Y2godGUpe2lmKFcpdGhyb3cgdGUubWVzc2FnZT1gJHtqfTogJHt0ZS5tZXNzYWdlfWAsdGU7cmV0dXJuIG51bGx9cmV0dXJuIFV9KTtyZXR1cm4gZnVuY3Rpb24oail7cmV0dXJuIHouYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpfX0oKSkscmVhZEZpbGVTeW5jOmZ1bmN0aW9uKHosaj17fSl7InN0cmluZyI9PXR5cGVvZiBqJiYoaj17ZW5jb2Rpbmc6an0pO2NvbnN0IFY9ai5mc3x8SyxHPSEoInRocm93cyJpbiBqKXx8ai50aHJvd3M7dHJ5e2xldCBXPVYucmVhZEZpbGVTeW5jKHosaik7cmV0dXJuIFc9''@;'; put 'put ''UihXKSxKU09OLnBhcnNlKFcsai5yZXZpdmVyKX1jYXRjaChXKXtpZihHKXRocm93IFcubWVzc2FnZT1gJHt6fTogJHtXLm1lc3NhZ2V9YCxXO3JldHVybiBudWxsfX0sd3JpdGVGaWxlOkouZnJvbVByb21pc2UoZnVuY3Rpb24oKXt2YXIgej1zZShmdW5jdGlvbiooaixWLEc9e30pe2NvbnN0''@;'; put 'put ''IFc9Ry5mc3x8SyxVPUkoVixHKTt5aWVsZCBKLmZyb21DYWxsYmFjayhXLndyaXRlRmlsZSkoaixVLEcpfSk7cmV0dXJuIGZ1bmN0aW9uKGosVil7cmV0dXJuIHouYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSksd3JpdGVGaWxlU3luYzpmdW5jdGlvbih6LGosVj17fSl7Y29uc3QgRz1WLmZz''@;'; put 'put ''fHxLLFc9SShqLFYpO3JldHVybiBHLndyaXRlRmlsZVN5bmMoeixXLFYpfX07SC5leHBvcnRzPUV9LDY3ODA6KEgsQixMKT0+e3ZhciBLPUwoODc2NCkuQnVmZmVyO0guZXhwb3J0cz17c3RyaW5naWZ5OmZ1bmN0aW9uKEose0VPTDpJPSJcbiIsZmluYWxFT0w6Uj0hMCxyZXBsYWNlcjpFPW51''@;'; put 'put ''bGwsc3BhY2VzOnp9PXt9KXtjb25zdCBqPVI/SToiIjtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoSixFLHopLnJlcGxhY2UoL1xuL2csSSkran0sc3RyaXBCb206ZnVuY3Rpb24oSil7cmV0dXJuIEsuaXNCdWZmZXIoSikmJihKPUoudG9TdHJpbmcoInV0ZjgiKSksSi5yZXBsYWNlKC9eXHVGRUZG''@;'; put 'put ''LywiIil9fX0sNjI0NTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEsoeil7dGhpcy5tZXNzYWdlPXp9TC5yKEIpLEwuZChCLHtJbnZhbGlkVG9rZW5FcnJvcjooKT0+UixkZWZhdWx0OigpPT5FfSksKEsucHJvdG90eXBlPW5ldyBFcnJvcikubmFtZT0iSW52YWxpZENoYXJhY3Rl''@;'; put 'put ''ckVycm9yIjt2YXIgSj10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmF0b2ImJndpbmRvdy5hdG9iLmJpbmQod2luZG93KXx8ZnVuY3Rpb24oeil7dmFyIGo9U3RyaW5nKHopLnJlcGxhY2UoLz0rJC8sIiIpO2lmKGoubGVuZ3RoJTQ9PTEpdGhyb3cgbmV3IEsoIidhdG9iJyBmYWlsZWQ6IFRo''@;'; put 'put ''ZSBzdHJpbmcgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuIik7Zm9yKHZhciBWLEcsVz0wLFU9MCxxPSIiO0c9ai5jaGFyQXQoVSsrKTt+RyYmKFY9VyU0PzY0KlYrRzpHLFcrKyU0KT9xKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZWPj4oLTIqVyY2KSk6MClHPSJB''@;'; put 'put ''QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuaW5kZXhPZihHKTtyZXR1cm4gcX07ZnVuY3Rpb24gUih6KXt0aGlzLm1lc3NhZ2U9en0oUi5wcm90b3R5cGU9bmV3IEVycm9yKS5uYW1lPSJJbnZhbGlkVG9rZW5FcnJvciI7''@;'; put 'put ''Y29uc3QgRT1mdW5jdGlvbih6LGope2lmKCJzdHJpbmciIT10eXBlb2Ygeil0aHJvdyBuZXcgUigiSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQiKTt2YXIgVj0hMD09PShqPWp8fHt9KS5oZWFkZXI/MDoxO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShmdW5jdGlvbiBJKHope3ZhciBqPXoucmVwbGFj''@;'; put 'put ''ZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIik7c3dpdGNoKGoubGVuZ3RoJTQpe2Nhc2UgMDpicmVhaztjYXNlIDI6ais9Ij09IjticmVhaztjYXNlIDM6ais9Ij0iO2JyZWFrO2RlZmF1bHQ6dGhyb3ciSWxsZWdhbCBiYXNlNjR1cmwgc3RyaW5nISJ9dHJ5e3JldHVybiBkZWNvZGVVUklD''@;'; put 'put ''b21wb25lbnQoSihqKS5yZXBsYWNlKC8oLikvZyxmdW5jdGlvbihHLFcpe3ZhciBVPVcuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtyZXR1cm4gVS5sZW5ndGg8MiYmKFU9IjAiK1UpLCIlIitVfSkpfWNhdGNoe3JldHVybiBKKGopfX0oei5zcGxpdCgiLiIpW1Zd''@;'; put 'put ''KSl9Y2F0Y2goRyl7dGhyb3cgbmV3IFIoIkludmFsaWQgdG9rZW4gc3BlY2lmaWVkOiAiK0cubWVzc2FnZSl9fX0sMjMxODooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNTcxNyksSj1MKDMzNDkpLEk9TCg5NTA5KS5CdWZmZXIsUj1uZXcgQXJyYXkoMTYpO2Z1bmN0aW9uIEUoKXtK''@;'; put 'put ''LmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4Nzh9ZnVuY3Rpb24geihVLHEpe3JldHVybiBVPDxxfFU+Pj4zMi1xfWZ1bmN0aW9uIGooVSxxLHRlLG5lLGllLGxlLGRlKXtyZXR1cm4g''@;'; put 'put ''eihVKyhxJnRlfH5xJm5lKStpZStsZXwwLGRlKStxfDB9ZnVuY3Rpb24gVihVLHEsdGUsbmUsaWUsbGUsZGUpe3JldHVybiB6KFUrKHEmbmV8dGUmfm5lKStpZStsZXwwLGRlKStxfDB9ZnVuY3Rpb24gRyhVLHEsdGUsbmUsaWUsbGUsZGUpe3JldHVybiB6KFUrKHFedGVebmUpK2llK2xlfDAs''@;'; put 'put ''ZGUpK3F8MH1mdW5jdGlvbiBXKFUscSx0ZSxuZSxpZSxsZSxkZSl7cmV0dXJuIHooVSsodGVeKHF8fm5lKSkraWUrbGV8MCxkZSkrcXwwfUsoRSxKKSxFLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBVPVIscT0wO3E8MTY7KytxKVVbcV09dGhpcy5fYmxvY2sucmVhZElu''@;'; put 'put ''dDMyTEUoNCpxKTt2YXIgdGU9dGhpcy5fYSxuZT10aGlzLl9iLGllPXRoaXMuX2MsbGU9dGhpcy5fZDt0ZT1qKHRlLG5lLGllLGxlLFVbMF0sMzYxNDA5MDM2MCw3KSxsZT1qKGxlLHRlLG5lLGllLFVbMV0sMzkwNTQwMjcxMCwxMiksaWU9aihpZSxsZSx0ZSxuZSxVWzJdLDYwNjEwNTgxOSwx''@;'; put 'put ''NyksbmU9aihuZSxpZSxsZSx0ZSxVWzNdLDMyNTA0NDE5NjYsMjIpLHRlPWoodGUsbmUsaWUsbGUsVVs0XSw0MTE4NTQ4Mzk5LDcpLGxlPWoobGUsdGUsbmUsaWUsVVs1XSwxMjAwMDgwNDI2LDEyKSxpZT1qKGllLGxlLHRlLG5lLFVbNl0sMjgyMTczNTk1NSwxNyksbmU9aihuZSxpZSxsZSx0''@;'; put 'put ''ZSxVWzddLDQyNDkyNjEzMTMsMjIpLHRlPWoodGUsbmUsaWUsbGUsVVs4XSwxNzcwMDM1NDE2LDcpLGxlPWoobGUsdGUsbmUsaWUsVVs5XSwyMzM2NTUyODc5LDEyKSxpZT1qKGllLGxlLHRlLG5lLFVbMTBdLDQyOTQ5MjUyMzMsMTcpLG5lPWoobmUsaWUsbGUsdGUsVVsxMV0sMjMwNDU2MzEz''@;'; put 'put ''NCwyMiksdGU9aih0ZSxuZSxpZSxsZSxVWzEyXSwxODA0NjAzNjgyLDcpLGxlPWoobGUsdGUsbmUsaWUsVVsxM10sNDI1NDYyNjE5NSwxMiksaWU9aihpZSxsZSx0ZSxuZSxVWzE0XSwyNzkyOTY1MDA2LDE3KSx0ZT1WKHRlLG5lPWoobmUsaWUsbGUsdGUsVVsxNV0sMTIzNjUzNTMyOSwyMiks''@;'; put 'put ''aWUsbGUsVVsxXSw0MTI5MTcwNzg2LDUpLGxlPVYobGUsdGUsbmUsaWUsVVs2XSwzMjI1NDY1NjY0LDkpLGllPVYoaWUsbGUsdGUsbmUsVVsxMV0sNjQzNzE3NzEzLDE0KSxuZT1WKG5lLGllLGxlLHRlLFVbMF0sMzkyMTA2OTk5NCwyMCksdGU9Vih0ZSxuZSxpZSxsZSxVWzVdLDM1OTM0MDg2''@;'; put 'put ''MDUsNSksbGU9VihsZSx0ZSxuZSxpZSxVWzEwXSwzODAxNjA4Myw5KSxpZT1WKGllLGxlLHRlLG5lLFVbMTVdLDM2MzQ0ODg5NjEsMTQpLG5lPVYobmUsaWUsbGUsdGUsVVs0XSwzODg5NDI5NDQ4LDIwKSx0ZT1WKHRlLG5lLGllLGxlLFVbOV0sNTY4NDQ2NDM4LDUpLGxlPVYobGUsdGUsbmUs''@;'; put 'put ''aWUsVVsxNF0sMzI3NTE2MzYwNiw5KSxpZT1WKGllLGxlLHRlLG5lLFVbM10sNDEwNzYwMzMzNSwxNCksbmU9VihuZSxpZSxsZSx0ZSxVWzhdLDExNjM1MzE1MDEsMjApLHRlPVYodGUsbmUsaWUsbGUsVVsxM10sMjg1MDI4NTgyOSw1KSxsZT1WKGxlLHRlLG5lLGllLFVbMl0sNDI0MzU2MzUx''@;'; put 'put ''Miw5KSxpZT1WKGllLGxlLHRlLG5lLFVbN10sMTczNTMyODQ3MywxNCksdGU9Ryh0ZSxuZT1WKG5lLGllLGxlLHRlLFVbMTJdLDIzNjgzNTk1NjIsMjApLGllLGxlLFVbNV0sNDI5NDU4ODczOCw0KSxsZT1HKGxlLHRlLG5lLGllLFVbOF0sMjI3MjM5MjgzMywxMSksaWU9RyhpZSxsZSx0ZSxu''@;'; put 'put ''ZSxVWzExXSwxODM5MDMwNTYyLDE2KSxuZT1HKG5lLGllLGxlLHRlLFVbMTRdLDQyNTk2NTc3NDAsMjMpLHRlPUcodGUsbmUsaWUsbGUsVVsxXSwyNzYzOTc1MjM2LDQpLGxlPUcobGUsdGUsbmUsaWUsVVs0XSwxMjcyODkzMzUzLDExKSxpZT1HKGllLGxlLHRlLG5lLFVbN10sNDEzOTQ2OTY2''@;'; put 'put ''NCwxNiksbmU9RyhuZSxpZSxsZSx0ZSxVWzEwXSwzMjAwMjM2NjU2LDIzKSx0ZT1HKHRlLG5lLGllLGxlLFVbMTNdLDY4MTI3OTE3NCw0KSxsZT1HKGxlLHRlLG5lLGllLFVbMF0sMzkzNjQzMDA3NCwxMSksaWU9RyhpZSxsZSx0ZSxuZSxVWzNdLDM1NzI0NDUzMTcsMTYpLG5lPUcobmUsaWUs''@;'; put 'put ''bGUsdGUsVVs2XSw3NjAyOTE4OSwyMyksdGU9Ryh0ZSxuZSxpZSxsZSxVWzldLDM2NTQ2MDI4MDksNCksbGU9RyhsZSx0ZSxuZSxpZSxVWzEyXSwzODczMTUxNDYxLDExKSxpZT1HKGllLGxlLHRlLG5lLFVbMTVdLDUzMDc0MjUyMCwxNiksdGU9Vyh0ZSxuZT1HKG5lLGllLGxlLHRlLFVbMl0s''@;'; put 'put ''MzI5OTYyODY0NSwyMyksaWUsbGUsVVswXSw0MDk2MzM2NDUyLDYpLGxlPVcobGUsdGUsbmUsaWUsVVs3XSwxMTI2ODkxNDE1LDEwKSxpZT1XKGllLGxlLHRlLG5lLFVbMTRdLDI4Nzg2MTIzOTEsMTUpLG5lPVcobmUsaWUsbGUsdGUsVVs1XSw0MjM3NTMzMjQxLDIxKSx0ZT1XKHRlLG5lLGll''@;'; put 'put ''LGxlLFVbMTJdLDE3MDA0ODU1NzEsNiksbGU9VyhsZSx0ZSxuZSxpZSxVWzNdLDIzOTk5ODA2OTAsMTApLGllPVcoaWUsbGUsdGUsbmUsVVsxMF0sNDI5MzkxNTc3MywxNSksbmU9VyhuZSxpZSxsZSx0ZSxVWzFdLDIyNDAwNDQ0OTcsMjEpLHRlPVcodGUsbmUsaWUsbGUsVVs4XSwxODczMzEz''@;'; put 'put ''MzU5LDYpLGxlPVcobGUsdGUsbmUsaWUsVVsxNV0sNDI2NDM1NTU1MiwxMCksaWU9VyhpZSxsZSx0ZSxuZSxVWzZdLDI3MzQ3Njg5MTYsMTUpLG5lPVcobmUsaWUsbGUsdGUsVVsxM10sMTMwOTE1MTY0OSwyMSksdGU9Vyh0ZSxuZSxpZSxsZSxVWzRdLDQxNDk0NDQyMjYsNiksbGU9VyhsZSx0''@;'; put 'put ''ZSxuZSxpZSxVWzExXSwzMTc0NzU2OTE3LDEwKSxpZT1XKGllLGxlLHRlLG5lLFVbMl0sNzE4Nzg3MjU5LDE1KSxuZT1XKG5lLGllLGxlLHRlLFVbOV0sMzk1MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK3RlfDAsdGhpcy5fYj10aGlzLl9iK25lfDAsdGhpcy5fYz10aGlzLl9jK2llfDAs''@;'; put 'put ''dGhpcy5fZD10aGlzLl9kK2xlfDB9LEUucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXT0xMjgsdGhpcy5fYmxvY2tPZmZzZXQ+NTYmJih0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNjQpLHRoaXMuX3VwZGF0''@;'; put 'put ''ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTApLHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLDYwKSx0aGlzLl91''@;'; put 'put ''cGRhdGUoKTt2YXIgVT1JLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gVS53cml0ZUludDMyTEUodGhpcy5fYSwwKSxVLndyaXRlSW50MzJMRSh0aGlzLl9iLDQpLFUud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksVS53cml0ZUludDMyTEUodGhpcy5fZCwxMiksVX0sSC5leHBvcnRzPUV9LDMwNDc6''@;'; put 'put ''KEgsQixMKT0+e3ZhciBLPUwoNjI0MCksSj1MKDk5MzEpO2Z1bmN0aW9uIEkoUil7dGhpcy5yYW5kPVJ8fG5ldyBKLlJhbmR9SC5leHBvcnRzPUksSS5jcmVhdGU9ZnVuY3Rpb24oUil7cmV0dXJuIG5ldyBJKFIpfSxJLnByb3RvdHlwZS5fcmFuZGJlbG93PWZ1bmN0aW9uKFIpe3ZhciBFPVIu''@;'; put 'put ''Yml0TGVuZ3RoKCksej1NYXRoLmNlaWwoRS84KTtkb3t2YXIgaj1uZXcgSyh0aGlzLnJhbmQuZ2VuZXJhdGUoeikpfXdoaWxlKGouY21wKFIpPj0wKTtyZXR1cm4gan0sSS5wcm90b3R5cGUuX3JhbmRyYW5nZT1mdW5jdGlvbihSLEUpe3ZhciB6PUUuc3ViKFIpO3JldHVybiBSLmFkZCh0aGlz''@;'; put 'put ''Ll9yYW5kYmVsb3coeikpfSxJLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKFIsRSx6KXt2YXIgaj1SLmJpdExlbmd0aCgpLFY9Sy5tb250KFIpLEc9bmV3IEsoMSkudG9SZWQoVik7RXx8KEU9TWF0aC5tYXgoMSxqLzQ4fDApKTtmb3IodmFyIFc9Ui5zdWJuKDEpLFU9MDshVy50ZXN0bihVKTtV''@;'; put 'put ''KyspO2Zvcih2YXIgcT1SLnNocm4oVSksdGU9Vy50b1JlZChWKTtFPjA7RS0tKXt2YXIgbmU9dGhpcy5fcmFuZHJhbmdlKG5ldyBLKDIpLFcpO3omJnoobmUpO3ZhciBpZT1uZS50b1JlZChWKS5yZWRQb3cocSk7aWYoMCE9PWllLmNtcChHKSYmMCE9PWllLmNtcCh0ZSkpe2Zvcih2YXIgbGU9''@;'; put 'put ''MTtsZTxVO2xlKyspe2lmKDA9PT0oaWU9aWUucmVkU3FyKCkpLmNtcChHKSlyZXR1cm4hMTtpZigwPT09aWUuY21wKHRlKSlicmVha31pZihsZT09PVUpcmV0dXJuITF9fXJldHVybiEwfSxJLnByb3RvdHlwZS5nZXREaXZpc29yPWZ1bmN0aW9uKFIsRSl7dmFyIHo9Ui5iaXRMZW5ndGgoKSxq''@;'; put 'put ''PUsubW9udChSKSxWPW5ldyBLKDEpLnRvUmVkKGopO0V8fChFPU1hdGgubWF4KDEsei80OHwwKSk7Zm9yKHZhciBHPVIuc3VibigxKSxXPTA7IUcudGVzdG4oVyk7VysrKTtmb3IodmFyIFU9Ui5zaHJuKFcpLHE9Ry50b1JlZChqKTtFPjA7RS0tKXt2YXIgdGU9dGhpcy5fcmFuZHJhbmdlKG5l''@;'; put 'put ''dyBLKDIpLEcpLG5lPVIuZ2NkKHRlKTtpZigwIT09bmUuY21wbigxKSlyZXR1cm4gbmU7dmFyIGllPXRlLnRvUmVkKGopLnJlZFBvdyhVKTtpZigwIT09aWUuY21wKFYpJiYwIT09aWUuY21wKHEpKXtmb3IodmFyIGxlPTE7bGU8VztsZSsrKXtpZigwPT09KGllPWllLnJlZFNxcigpKS5jbXAo''@;'; put 'put ''VikpcmV0dXJuIGllLmZyb21SZWQoKS5zdWJuKDEpLmdjZChSKTtpZigwPT09aWUuY21wKHEpKWJyZWFrfWlmKGxlPT09VylyZXR1cm4oaWU9aWUucmVkU3FyKCkpLmZyb21SZWQoKS5zdWJuKDEpLmdjZChSKX19cmV0dXJuITF9fSw2MjQwOmZ1bmN0aW9uKEgsQixMKXshZnVuY3Rpb24oSyxK''@;'; put 'put ''KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSShnLEMpe2lmKCFnKXRocm93IG5ldyBFcnJvcihDfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFIoZyxDKXtnLnN1cGVyXz1DO3ZhciBNPWZ1bmN0aW9uKCl7fTtNLnByb3RvdHlwZT1DLnByb3RvdHlwZSxnLnByb3RvdHlwZT1uZXcgTSxn''@;'; put 'put ''LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nfWZ1bmN0aW9uIEUoZyxDLE0pe2lmKEUuaXNCTihnKSlyZXR1cm4gZzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09ZyYmKCJsZSIhPT1DJiYiYmUiIT09Q3x8KE09QyxDPTEw''@;'; put 'put ''KSx0aGlzLl9pbml0KGd8fDAsQ3x8MTAsTXx8ImJlIikpfXZhciB6OyJvYmplY3QiPT10eXBlb2YgSz9LLmV4cG9ydHM9RTpKLkJOPUUsRS5CTj1FLEUud29yZFNpemU9MjY7dHJ5e3o9dHlwZW9mIHdpbmRvdzwidSImJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDY2''@;'; put 'put ''MTkpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gaihnLEMpe3ZhciBNPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gTT49NjUmJk08PTcwP00tNTU6TT49OTcmJk08PTEwMj9NLTg3Ok0tNDgmMTV9ZnVuY3Rpb24gVihnLEMsTSl7dmFyIHk9aihnLE0pO3JldHVybiBNLTE+PUMmJih5fD1qKGcsTS0x''@;'; put 'put ''KTw8NCkseX1mdW5jdGlvbiBHKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9TWF0aC5taW4oZy5sZW5ndGgsTSksUT1DO1E8UztRKyspe3ZhciByZT1nLmNoYXJDb2RlQXQoUSktNDg7cCo9eSxwKz1yZT49NDk/cmUtNDkrMTA6cmU+PTE3P3JlLTE3KzEwOnJlfXJldHVybiBwfUUuaXNCTj1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1heD1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4wP2c6Q30s''@;'; put 'put ''RS5taW49ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxNKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxDLE0pO2lmKCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5f''@;'; put 'put ''aW5pdEFycmF5KGcsQyxNKTsiaGV4Ij09PUMmJihDPTE2KSxJKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciB5PTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih5KyssdGhpcy5uZWdhdGl2ZT0xKSx5PGcubGVuZ3RoJiYoMTY9PT1DP3RoaXMuX3Bh''@;'; put 'put ''cnNlSGV4KGcseSxNKToodGhpcy5fcGFyc2VCYXNlKGcsQyx5KSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsTSkpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLE0pe2c8MCYmKHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3MTA4ODY0''@;'; put 'put ''Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEkoZzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZn''@;'; put 'put ''LGcvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU0mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLE0pfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxNKXtpZihJKCJudW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcubGVuZ3Ro''@;'; put 'put ''PD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHk9MDt5PHRoaXMubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPTA7dmFyIHAs''@;'; put 'put ''UyxRPTA7aWYoImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMSxwPTA7eT49MDt5LT0zKXRoaXMud29yZHNbcF18PShTPWdbeV18Z1t5LTFdPDw4fGdbeS0yXTw8MTYpPDxRJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT1TPj4+MjYtUSY2NzEwODg2MywoUSs9MjQpPj0yNiYmKFEtPTI2LHArKyk7''@;'; put 'put ''ZWxzZSBpZigibGUiPT09TSlmb3IoeT0wLHA9MDt5PGcubGVuZ3RoO3krPTMpdGhpcy53b3Jkc1twXXw9KFM9Z1t5XXxnW3krMV08PDh8Z1t5KzJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1RJjY3MTA4ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsrKTtyZXR1''@;'; put 'put ''cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLE0pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRoaXMud29y''@;'; put 'put ''ZHNbeV09MDt2YXIgcCxTPTAsUT0wO2lmKCJiZSI9PT1NKWZvcih5PWcubGVuZ3RoLTE7eT49Qzt5LT0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O2Vsc2UgZm9yKHk9KGcubGVuZ3Ro''@;'; put 'put ''LUMpJTI9PTA/QysxOkM7eTxnLmxlbmd0aDt5Kz0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O3RoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihnLEMs''@;'; put 'put ''TSl7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCxwPTE7cDw9NjcxMDg4NjM7cCo9Qyl5Kys7eS0tLHA9cC9DfDA7Zm9yKHZhciBTPWcubGVuZ3RoLU0sUT1TJXkscmU9TWF0aC5taW4oUyxTLVEpK00sZmU9MCxtZT1NO21lPHJlO21lKz15KWZlPUcoZyxtZSxtZSt5''@;'; put 'put ''LEMpLHRoaXMuaW11bG4ocCksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSk7aWYoMCE9PVEpe3ZhciBrZT0xO2ZvcihmZT1HKGcsbWUsZy5sZW5ndGgsQyksbWU9MDttZTxRO21lKyspa2UqPUM7dGhpcy5pbXVsbihrZSksdGhpcy53''@;'; put 'put ''b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKylnLndvcmRz''@;'; put 'put ''W0NdPXRoaXMud29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5cGUuX2V4''@;'; put 'put ''cGFuZD1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxl''@;'; put 'put ''bmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sRS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgVz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgs''@;'; put 'put ''Nyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcs''@;'; put 'put ''NzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5''@;'; put 'put ''Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdGUoZyxDLE0pe00ubmVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciB5PWcubGVuZ3RoK0MubGVuZ3RofDA7TS5sZW5ndGg9eSx5PXktMXwwO3ZhciBwPTB8Zy53b3Jkc1swXSxTPTB8Qy53b3Jkc1swXSxRPXAq''@;'; put 'put ''UyxmZT1RLzY3MTA4ODY0fDA7TS53b3Jkc1swXT02NzEwODg2MyZRO2Zvcih2YXIgbWU9MTttZTx5O21lKyspe2Zvcih2YXIga2U9ZmU+Pj4yNixUZT02NzEwODg2MyZmZSxQZT1NYXRoLm1pbihtZSxDLmxlbmd0aC0xKSxGZT1NYXRoLm1heCgwLG1lLWcubGVuZ3RoKzEpO0ZlPD1QZTtGZSsr''@;'; put 'put ''KWtlKz0oUT0ocD0wfGcud29yZHNbbWUtRmV8MF0pKihTPTB8Qy53b3Jkc1tGZV0pK1RlKS82NzEwODg2NHwwLFRlPTY3MTA4ODYzJlE7TS53b3Jkc1ttZV09MHxUZSxmZT0wfGtlfXJldHVybiAwIT09ZmU/TS53b3Jkc1ttZV09MHxmZTpNLmxlbmd0aC0tLE0uc3RyaXAoKX1FLnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBNO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe009IiI7Zm9yKHZhciB5PTAscD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIFE9dGhpcy53b3Jkc1tTXSxyZT0oMTY3NzcyMTUmKFE8PHl8cCkpLnRvU3RyaW5n''@;'; put 'put ''KDE2KTtNPTAhPShwPVE+Pj4yNC15JjE2Nzc3MjE1KXx8UyE9PXRoaXMubGVuZ3RoLTE/V1s2LXJlLmxlbmd0aF0rcmUrTTpyZStNLCh5Kz0yKT49MjYmJih5LT0yNixTLS0pfWZvcigwIT09cCYmKE09cC50b1N0cmluZygxNikrTSk7TS5sZW5ndGglQyE9MDspTT0iMCIrTTtyZXR1cm4gMCE9''@;'; put 'put ''PXRoaXMubmVnYXRpdmUmJihNPSItIitNKSxNfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBmZT1VW2ddLG1lPXFbZ107TT0iIjt2YXIga2U9dGhpcy5jbG9uZSgpO2ZvcihrZS5uZWdhdGl2ZT0wOyFrZS5pc1plcm8oKTspe3ZhciBUZT1rZS5tb2RuKG1lKS50b1N0cmluZyhnKTtN''@;'; put 'put ''PShrZT1rZS5pZGl2bihtZSkpLmlzWmVybygpP1RlK006V1tmZS1UZS5sZW5ndGhdK1RlK019Zm9yKHRoaXMuaXNaZXJvKCkmJihNPSIwIitNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKE09Ii0iK00pLE19SSghMSwiQmFzZSBzaG91bGQgYmUg''@;'; put 'put ''YmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9NDUwMzU5''@;'; put 'put ''OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gSSh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGcsQyl9''@;'; put 'put ''LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT10aGlzLmJ5dGVMZW5ndGgoKSxwPU18fE1hdGgubWF4KDEseSk7SSh5PD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksSShwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0g''@;'; put 'put ''MCIpLHRoaXMuc3RyaXAoKTt2YXIgUyxRLHJlPSJsZSI9PT1DLGZlPW5ldyBnKHApLG1lPXRoaXMuY2xvbmUoKTtpZihyZSl7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbUV09Uztmb3IoO1E8cDtRKyspZmVbUV09MH1lbHNle2ZvcihR''@;'; put 'put ''PTA7UTxwLXk7USsrKWZlW1FdPTA7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbcC1RLTFdPVN9cmV0dXJuIGZlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGguY2x6MzIo''@;'; put 'put ''Zyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsTT0wO3JldHVybiBDPj00MDk2JiYoTSs9MTMsQz4+Pj0xMyksQz49NjQmJihNKz03LEM+Pj49NyksQz49OCYmKE0rPTQsQz4+Pj00KSxDPj0yJiYoTSs9MixDPj4+PTIpLE0rQ30sRS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcpe2lmKDA9''@;'; put 'put ''PT1nKXJldHVybiAyNjt2YXIgQz1nLE09MDtyZXR1cm4hKDgxOTEmQykmJihNKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKE0rPTcsQz4+Pj03KSwhKDE1JkMpJiYoTSs9NCxDPj4+PTQpLCEoMyZDKSYmKE0rPTIsQz4+Pj0yKSwhKDEmQykmJk0rKyxNfSxFLnByb3RvdHlwZS5iaXRMZW5ndGg9''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAsQz0wO0M8''@;'; put 'put ''dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1NLDI2IT09TSlicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5wcm90b3R5''@;'; put 'put ''cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZykuaWFkZG4o''@;'; put 'put ''MSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlzLndvcmRz''@;'; put 'put ''W0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVvcihnKX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlzKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dJmcud29yZHNbTV07cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3Ry''@;'; put 'put ''aXAoKX0sRS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChn''@;'; put 'put ''KTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsTTt0''@;'; put 'put ''aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLE09Zyk6KEM9ZyxNPXRoaXMpO2Zvcih2YXIgeT0wO3k8TS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09Qy53b3Jkc1t5XV5NLndvcmRzW3ldO2lmKHRoaXMhPT1DKWZvcig7eTxDLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT1DLndvcmRzW3ld''@;'; put 'put ''O3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhpcyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxNPWclMjY7dGhpcy5fZXhwYW5kKEMpLE0+MCYmQy0tO2Zvcih2YXIgeT0wO3k8Qzt5KyspdGhpcy53b3Jkc1t5XT02NzEwODg2MyZ+dGhpcy53b3Jk''@;'; put 'put ''c1t5XTtyZXR1cm4gTT4wJiYodGhpcy53b3Jkc1t5XT1+dGhpcy53b3Jkc1t5XSY2NzEwODg2Mz4+MjYtTSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZyxD''@;'; put 'put ''KXtJKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIE09Zy8yNnwwLHk9ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXT1DP3RoaXMud29yZHNbTV18MTw8eTp0aGlzLndvcmRzW01dJn4oMTw8eSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYWRkPWZ1''@;'; put 'put ''bmN0aW9uKGcpe3ZhciBDLE0seTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZl''@;'; put 'put ''KXJldHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIHA9MCxTPTA7Uzx5Lmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT02NzEwODg2MyYo''@;'; put 'put ''Qz0oMHxNLndvcmRzW1NdKSsoMHx5LndvcmRzW1NdKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZTPE0ubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMubGVuZ3RoPU0ubGVuZ3RoLDAhPT1wKXRoaXMud29yZHNb''@;'; put 'put ''dGhpcy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE0hPT10aGlzKWZvcig7UzxNLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1NLndvcmRzW1NdO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlJiYwPT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxlbmd0aD90''@;'; put 'put ''aGlzLmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYoMCE9PXRo''@;'; put 'put ''aXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0seSxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAs''@;'; put 'put ''dGhpcztwPjA/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIFM9MCxRPTA7UTx5Lmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKS0oMHx5LndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZDO2Zvcig7MCE9PVMmJlE8TS5sZW5ndGg7USsrKVM9KEM9''@;'; put 'put ''KDB8TS53b3Jkc1tRXSkrUyk+PjI2LHRoaXMud29yZHNbUV09NjcxMDg4NjMmQztpZigwPT09UyYmUTxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtRPE0ubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPU0ud29yZHNbUV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFEp''@;'; put 'put ''LE0hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBuZT1mdW5jdGlvbihnLEMsTSl7dmFyIHkscCxTLFE9Zy53b3JkcyxyZT1DLndvcmRzLGZlPU0ud29yZHMs''@;'; put 'put ''bWU9MCxrZT0wfFFbMF0sVGU9ODE5MSZrZSxQZT1rZT4+PjEzLEZlPTB8UVsxXSxOZT04MTkxJkZlLExlPUZlPj4+MTMsQmU9MHxRWzJdLEhlPTgxOTEmQmUsUWU9QmU+Pj4xMyxtdD0wfFFbM10sS2U9ODE5MSZtdCx3ZT1tdD4+PjEzLEllPTB8UVs0XSxPZT04MTkxJkllLGV0PUllPj4+MTMs''@;'; put 'put ''bnQ9MHxRWzVdLHFlPTgxOTEmbnQsaHQ9bnQ+Pj4xMyxFZT0wfFFbNl0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8UVs3XSxjdD04MTkxJmF0LE90PWF0Pj4+MTMsUHQ9MHxRWzhdLEF0PTgxOTEmUHQsSnQ9UHQ+Pj4xMyxtbj0wfFFbOV0sTnQ9ODE5MSZtbixibj1tbj4+PjEzLEduPTB8''@;'; put 'put ''cmVbMF0sb249ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8cmVbMV0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8cmVbMl0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8cmVbM10sVnQ9ODE5MSZfdCxfbj1fdD4+PjEzLG90PTB8cmVbNF0sSXQ9ODE5MSZvdCxubj1vdD4+PjEzLER0PTB8''@;'; put 'put ''cmVbNV0sdnQ9ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8cmVbNl0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8cmVbN10sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8cmVbOF0scXQ9ODE5MSZGbixIbj1Gbj4+PjEzLGlpPTB8cmVbOV0sY249ODE5MSZpaSxqbj1paT4+PjEzO00ubmVn''@;'; put 'put ''YXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPTE5O3ZhciBYcj0obWUrKHk9TWF0aC5pbXVsKFRlLG9uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChUZSwkbikpK01hdGguaW11bChQZSxvbil8MCkpPDwxMyl8MDttZT0oKFM9TWF0aC5pbXVsKFBlLCRuKSkrKHA+Pj4x''@;'; put 'put ''Myl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE5lLG9uKSxwPShwPU1hdGguaW11bChOZSwkbikpK01hdGguaW11bChMZSxvbil8MCxTPU1hdGguaW11bChMZSwkbik7dmFyIHZpPShtZSsoeT15K01hdGguaW11bChUZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKFRlLHBuKXwwKStNYXRoLmltdWwoUGUscHQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLHBuKXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4NjMseT1NYXRoLmltdWwoSGUsb24pLHA9KHA9TWF0aC5pbXVsKEhlLCRuKSkrTWF0aC5pbXVs''@;'; put 'put ''KFFlLG9uKXwwLFM9TWF0aC5pbXVsKFFlLCRuKSx5PXkrTWF0aC5pbXVsKE5lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUscG4pfDApK01hdGguaW11bChMZSxwdCl8MCxTPVMrTWF0aC5pbXVsKExlLHBuKXwwO3ZhciBFcj0obWUrKHk9eStNYXRoLmltdWwoVGUsQ3QpfDApfDApKygoODE5''@;'; put 'put ''MSYocD0ocD1wK01hdGguaW11bChUZSxlbil8MCkrTWF0aC5pbXVsKFBlLEN0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxlbil8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEtlLG9uKSxwPShwPU1hdGguaW11bChLZSwkbikp''@;'; put 'put ''K01hdGguaW11bCh3ZSxvbil8MCxTPU1hdGguaW11bCh3ZSwkbikseT15K01hdGguaW11bChIZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLHBuKXwwKStNYXRoLmltdWwoUWUscHQpfDAsUz1TK01hdGguaW11bChRZSxwbil8MCx5PXkrTWF0aC5pbXVsKE5lLEN0KXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoTmUsZW4pfDApK01hdGguaW11bChMZSxDdCl8MCxTPVMrTWF0aC5pbXVsKExlLGVuKXwwO3ZhciBZaT0obWUrKHk9eStNYXRoLmltdWwoVGUsVnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxfbil8MCkrTWF0aC5pbXVsKFBlLFZ0KXwwKSk8PDEzKXwwO21lPSgo''@;'; put 'put ''Uz1TK01hdGguaW11bChQZSxfbil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE9lLG9uKSxwPShwPU1hdGguaW11bChPZSwkbikpK01hdGguaW11bChldCxvbil8MCxTPU1hdGguaW11bChldCwkbikseT15K01hdGguaW11bChLZSxwdCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEtlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsUz1TK01hdGguaW11bCh3ZSxwbil8MCx5PXkrTWF0aC5pbXVsKEhlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsZW4pfDApK01hdGguaW11bChRZSxDdCl8MCxTPVMrTWF0aC5pbXVsKFFlLGVuKXwwLHk9eStN''@;'; put 'put ''YXRoLmltdWwoTmUsVnQpfDAscD0ocD1wK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwLFM9UytNYXRoLmltdWwoTGUsX24pfDA7dmFyIEpyPShtZSsoeT15K01hdGguaW11bChUZSxJdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLG5uKXwwKStNYXRo''@;'; put 'put ''LmltdWwoUGUsSXQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLG5uKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwocWUsb24pLHA9KHA9TWF0aC5pbXVsKHFlLCRuKSkrTWF0aC5pbXVsKGh0LG9uKXwwLFM9TWF0aC5pbXVsKGh0''@;'; put 'put ''LCRuKSx5PXkrTWF0aC5pbXVsKE9lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UscG4pfDApK01hdGguaW11bChldCxwdCl8MCxTPVMrTWF0aC5pbXVsKGV0LHBuKXwwLHk9eStNYXRoLmltdWwoS2UsQ3QpfDAscD0ocD1wK01hdGguaW11bChLZSxlbil8MCkrTWF0aC5pbXVsKHdlLEN0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwod2UsZW4pfDAseT15K01hdGguaW11bChIZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLF9uKXwwKStNYXRoLmltdWwoUWUsVnQpfDAsUz1TK01hdGguaW11bChRZSxfbil8MCx5PXkrTWF0aC5pbXVsKE5lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsbm4pfDAp''@;'; put 'put ''K01hdGguaW11bChMZSxJdCl8MCxTPVMrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbz0obWUrKHk9eStNYXRoLmltdWwoVGUsdnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxHdCl8MCkrTWF0aC5pbXVsKFBlLHZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQ''@;'; put 'put ''ZSxHdCl8MCkrKHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKERlLG9uKSxwPShwPU1hdGguaW11bChEZSwkbikpK01hdGguaW11bCgkZSxvbil8MCxTPU1hdGguaW11bCgkZSwkbikseT15K01hdGguaW11bChxZSxwdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KHFlLHBuKXwwKStNYXRoLmltdWwoaHQscHQpfDAsUz1TK01hdGguaW11bChodCxwbil8MCx5PXkrTWF0aC5pbXVsKE9lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsZW4pfDApK01hdGguaW11bChldCxDdCl8MCxTPVMrTWF0aC5pbXVsKGV0LGVuKXwwLHk9eStNYXRoLmltdWwoS2UsVnQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChLZSxfbil8MCkrTWF0aC5pbXVsKHdlLFZ0KXwwLFM9UytNYXRoLmltdWwod2UsX24pfDAseT15K01hdGguaW11bChIZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLG5uKXwwKStNYXRoLmltdWwoUWUsSXQpfDAsUz1TK01hdGguaW11bChRZSxubil8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKE5lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsR3QpfDApK01hdGguaW11bChMZSx2dCl8MCxTPVMrTWF0aC5pbXVsKExlLEd0KXwwO3ZhciBCcj0obWUrKHk9eStNYXRoLmltdWwoVGUsenQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxNbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKFBlLHp0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxNbil8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGN0LG9uKSxwPShwPU1hdGguaW11bChjdCwkbikpK01hdGguaW11bChPdCxvbil8MCxTPU1hdGguaW11''@;'; put 'put ''bChPdCwkbikseT15K01hdGguaW11bChEZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoJGUscHQpfDAsUz1TK01hdGguaW11bCgkZSxwbil8MCx5PXkrTWF0aC5pbXVsKHFlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChodCxD''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKGh0LGVuKXwwLHk9eStNYXRoLmltdWwoT2UsVnQpfDAscD0ocD1wK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLFM9UytNYXRoLmltdWwoZXQsX24pfDAseT15K01hdGguaW11bChLZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLG5u''@;'; put 'put ''KXwwKStNYXRoLmltdWwod2UsSXQpfDAsUz1TK01hdGguaW11bCh3ZSxubil8MCx5PXkrTWF0aC5pbXVsKEhlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsR3QpfDApK01hdGguaW11bChRZSx2dCl8MCxTPVMrTWF0aC5pbXVsKFFlLEd0KXwwLHk9eStNYXRoLmltdWwoTmUsenQpfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwLFM9UytNYXRoLmltdWwoTGUsTW4pfDA7dmFyIEppPShtZSsoeT15K01hdGguaW11bChUZSxzbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLEJuKXwwKStNYXRoLmltdWwoUGUsc24pfDApKTw8MTMp''@;'; put 'put ''fDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLEJuKXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoQXQsb24pLHA9KHA9TWF0aC5pbXVsKEF0LCRuKSkrTWF0aC5pbXVsKEp0LG9uKXwwLFM9TWF0aC5pbXVsKEp0LCRuKSx5PXkrTWF0aC5pbXVsKGN0''@;'; put 'put ''LHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QscG4pfDApK01hdGguaW11bChPdCxwdCl8MCxTPVMrTWF0aC5pbXVsKE90LHBuKXwwLHk9eStNYXRoLmltdWwoRGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkrTWF0aC5pbXVsKCRlLEN0KXwwLFM9UytNYXRoLmltdWwoJGUsZW4p''@;'; put 'put ''fDAseT15K01hdGguaW11bChxZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLF9uKXwwKStNYXRoLmltdWwoaHQsVnQpfDAsUz1TK01hdGguaW11bChodCxfbil8MCx5PXkrTWF0aC5pbXVsKE9lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2Usbm4pfDApK01hdGguaW11bChldCxJdCl8MCxT''@;'; put 'put ''PVMrTWF0aC5pbXVsKGV0LG5uKXwwLHk9eStNYXRoLmltdWwoS2UsdnQpfDAscD0ocD1wK01hdGguaW11bChLZSxHdCl8MCkrTWF0aC5pbXVsKHdlLHZ0KXwwLFM9UytNYXRoLmltdWwod2UsR3QpfDAseT15K01hdGguaW11bChIZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLE1uKXwwKStN''@;'; put 'put ''YXRoLmltdWwoUWUsenQpfDAsUz1TK01hdGguaW11bChRZSxNbil8MCx5PXkrTWF0aC5pbXVsKE5lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCxTPVMrTWF0aC5pbXVsKExlLEJuKXwwO3ZhciB0bz0obWUrKHk9eStNYXRoLmltdWwoVGUscXQp''@;'; put 'put ''fDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxIbil8MCkrTWF0aC5pbXVsKFBlLHF0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxIbil8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LG9uKSxwPShwPU1hdGgu''@;'; put 'put ''aW11bChOdCwkbikpK01hdGguaW11bChibixvbil8MCxTPU1hdGguaW11bChibiwkbikseT15K01hdGguaW11bChBdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoSnQscHQpfDAsUz1TK01hdGguaW11bChKdCxwbil8MCx5PXkrTWF0aC5pbXVsKGN0LEN0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoY3QsZW4pfDApK01hdGguaW11bChPdCxDdCl8MCxTPVMrTWF0aC5pbXVsKE90LGVuKXwwLHk9eStNYXRoLmltdWwoRGUsVnQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLFM9UytNYXRoLmltdWwoJGUsX24pfDAseT15''@;'; put 'put ''K01hdGguaW11bChxZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsUz1TK01hdGguaW11bChodCxubil8MCx5PXkrTWF0aC5pbXVsKE9lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsR3QpfDApK01hdGguaW11bChldCx2dCl8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKGV0LEd0KXwwLHk9eStNYXRoLmltdWwoS2UsenQpfDAscD0ocD1wK01hdGguaW11bChLZSxNbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLFM9UytNYXRoLmltdWwod2UsTW4pfDAseT15K01hdGguaW11bChIZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKEhlLEJuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoUWUsc24pfDAsUz1TK01hdGguaW11bChRZSxCbil8MCx5PXkrTWF0aC5pbXVsKE5lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsSG4pfDApK01hdGguaW11bChMZSxxdCl8MCxTPVMrTWF0aC5pbXVsKExlLEhuKXwwO3ZhciBjbz0obWUrKHk9eStNYXRoLmltdWwoVGUsY24pfDApfDAp''@;'; put 'put ''KygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxqbil8MCkrTWF0aC5pbXVsKFBlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHB0KSxwPShwPU1hdGguaW11bChO''@;'; put 'put ''dCxwbikpK01hdGguaW11bChibixwdCl8MCxTPU1hdGguaW11bChibixwbikseT15K01hdGguaW11bChBdCxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsUz1TK01hdGguaW11bChKdCxlbil8MCx5PXkrTWF0aC5pbXVsKGN0LFZ0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoY3QsX24pfDApK01hdGguaW11bChPdCxWdCl8MCxTPVMrTWF0aC5pbXVsKE90LF9uKXwwLHk9eStNYXRoLmltdWwoRGUsSXQpfDAscD0ocD1wK01hdGguaW11bChEZSxubil8MCkrTWF0aC5pbXVsKCRlLEl0KXwwLFM9UytNYXRoLmltdWwoJGUsbm4pfDAseT15K01hdGgu''@;'; put 'put ''aW11bChxZSx2dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsUz1TK01hdGguaW11bChodCxHdCl8MCx5PXkrTWF0aC5pbXVsKE9lLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsTW4pfDApK01hdGguaW11bChldCx6dCl8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KGV0LE1uKXwwLHk9eStNYXRoLmltdWwoS2Usc24pfDAscD0ocD1wK01hdGguaW11bChLZSxCbil8MCkrTWF0aC5pbXVsKHdlLHNuKXwwLFM9UytNYXRoLmltdWwod2UsQm4pfDAseT15K01hdGguaW11bChIZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmltdWwoUWUs''@;'; put 'put ''cXQpfDAsUz1TK01hdGguaW11bChRZSxIbil8MDt2YXIgbG89KG1lKyh5PXkrTWF0aC5pbXVsKE5lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTmUsam4pfDApK01hdGguaW11bChMZSxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoTGUsam4pfDApKyhwPj4+''@;'; put 'put ''MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxDdCkscD0ocD1NYXRoLmltdWwoTnQsZW4pKStNYXRoLmltdWwoYm4sQ3QpfDAsUz1NYXRoLmltdWwoYm4sZW4pLHk9eStNYXRoLmltdWwoQXQsVnQpfDAscD0ocD1wK01hdGguaW11bChBdCxfbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEp0LFZ0KXwwLFM9UytNYXRoLmltdWwoSnQsX24pfDAseT15K01hdGguaW11bChjdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKGN0LG5uKXwwKStNYXRoLmltdWwoT3QsSXQpfDAsUz1TK01hdGguaW11bChPdCxubil8MCx5PXkrTWF0aC5pbXVsKERlLHZ0KXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoRGUsR3QpfDApK01hdGguaW11bCgkZSx2dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEd0KXwwLHk9eStNYXRoLmltdWwocWUsenQpfDAscD0ocD1wK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXwwLFM9UytNYXRoLmltdWwoaHQsTW4pfDAseT15K01hdGguaW11bChP''@;'; put 'put ''ZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKE9lLEJuKXwwKStNYXRoLmltdWwoZXQsc24pfDAsUz1TK01hdGguaW11bChldCxCbil8MCx5PXkrTWF0aC5pbXVsKEtlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UsSG4pfDApK01hdGguaW11bCh3ZSxxdCl8MCxTPVMrTWF0aC5pbXVsKHdlLEhu''@;'; put 'put ''KXwwO3ZhciBzbz0obWUrKHk9eStNYXRoLmltdWwoSGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChRZSxqbil8MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3''@;'; put 'put ''MTA4ODYzLHk9TWF0aC5pbXVsKE50LFZ0KSxwPShwPU1hdGguaW11bChOdCxfbikpK01hdGguaW11bChibixWdCl8MCxTPU1hdGguaW11bChibixfbikseT15K01hdGguaW11bChBdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LG5uKXwwKStNYXRoLmltdWwoSnQsSXQpfDAsUz1TK01hdGgu''@;'; put 'put ''aW11bChKdCxubil8MCx5PXkrTWF0aC5pbXVsKGN0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsR3QpfDApK01hdGguaW11bChPdCx2dCl8MCxTPVMrTWF0aC5pbXVsKE90LEd0KXwwLHk9eStNYXRoLmltdWwoRGUsenQpfDAscD0ocD1wK01hdGguaW11bChEZSxNbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KCRlLHp0KXwwLFM9UytNYXRoLmltdWwoJGUsTW4pfDAseT15K01hdGguaW11bChxZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKHFlLEJuKXwwKStNYXRoLmltdWwoaHQsc24pfDAsUz1TK01hdGguaW11bChodCxCbil8MCx5PXkrTWF0aC5pbXVsKE9lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwo''@;'; put 'put ''T2UsSG4pfDApK01hdGguaW11bChldCxxdCl8MCxTPVMrTWF0aC5pbXVsKGV0LEhuKXwwO3ZhciBYaT0obWUrKHk9eStNYXRoLmltdWwoS2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChLZSxqbil8MCkrTWF0aC5pbXVsKHdlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01h''@;'; put 'put ''dGguaW11bCh3ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEl0KSxwPShwPU1hdGguaW11bChOdCxubikpK01hdGguaW11bChibixJdCl8MCxTPU1hdGguaW11bChibixubikseT15K01hdGguaW11bChBdCx2dCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKEF0LEd0KXwwKStNYXRoLmltdWwoSnQsdnQpfDAsUz1TK01hdGguaW11bChKdCxHdCl8MCx5PXkrTWF0aC5pbXVsKGN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsTW4pfDApK01hdGguaW11bChPdCx6dCl8MCxTPVMrTWF0aC5pbXVsKE90LE1uKXwwLHk9eStNYXRoLmlt''@;'; put 'put ''dWwoRGUsc24pfDAscD0ocD1wK01hdGguaW11bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLFM9UytNYXRoLmltdWwoJGUsQm4pfDAseT15K01hdGguaW11bChxZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEhuKXwwKStNYXRoLmltdWwoaHQscXQpfDAsUz1TK01hdGguaW11bCho''@;'; put 'put ''dCxIbil8MDt2YXIgcG89KG1lKyh5PXkrTWF0aC5pbXVsKE9lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT2Usam4pfDApK01hdGguaW11bChldCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoZXQsam4pfDApKyhwPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBv''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChOdCx2dCkscD0ocD1NYXRoLmltdWwoTnQsR3QpKStNYXRoLmltdWwoYm4sdnQpfDAsUz1NYXRoLmltdWwoYm4sR3QpLHk9eStNYXRoLmltdWwoQXQsenQpfDAscD0ocD1wK01hdGguaW11bChBdCxNbil8MCkrTWF0aC5pbXVsKEp0LHp0KXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoSnQsTW4pfDAseT15K01hdGguaW11bChjdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKGN0LEJuKXwwKStNYXRoLmltdWwoT3Qsc24pfDAsUz1TK01hdGguaW11bChPdCxCbil8MCx5PXkrTWF0aC5pbXVsKERlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSG4pfDApK01hdGgu''@;'; put 'put ''aW11bCgkZSxxdCl8MCxTPVMrTWF0aC5pbXVsKCRlLEhuKXwwO3ZhciBfcj0obWUrKHk9eStNYXRoLmltdWwocWUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChodCxqbil8''@;'; put 'put ''MCkrKHA+Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHp0KSxwPShwPU1hdGguaW11bChOdCxNbikpK01hdGguaW11bChibix6dCl8MCxTPU1hdGguaW11bChibixNbikseT15K01hdGguaW11bChBdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKEF0LEJu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoSnQsc24pfDAsUz1TK01hdGguaW11bChKdCxCbil8MCx5PXkrTWF0aC5pbXVsKGN0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsSG4pfDApK01hdGguaW11bChPdCxxdCl8MCxTPVMrTWF0aC5pbXVsKE90LEhuKXwwO3ZhciBGaT0obWUrKHk9eStNYXRoLmltdWwo''@;'; put 'put ''RGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCgkZSxqbil8MCkrKHA+Pj4xMyl8MCkrKEZpPj4+MjYpfDAsRmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHNuKSxwPShw''@;'; put 'put ''PU1hdGguaW11bChOdCxCbikpK01hdGguaW11bChibixzbil8MCxTPU1hdGguaW11bChibixCbikseT15K01hdGguaW11bChBdCxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEhuKXwwKStNYXRoLmltdWwoSnQscXQpfDAsUz1TK01hdGguaW11bChKdCxIbil8MDt2YXIgSG89KG1lKyh5PXkr''@;'; put 'put ''TWF0aC5pbXVsKGN0LGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoY3Qsam4pfDApK01hdGguaW11bChPdCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoT3Qsam4pfDApKyhwPj4+MTMpfDApKyhIbz4+PjI2KXwwLEhvJj02NzEwODg2Myx5PU1hdGguaW11bChO''@;'; put 'put ''dCxxdCkscD0ocD1NYXRoLmltdWwoTnQsSG4pKStNYXRoLmltdWwoYm4scXQpfDAsUz1NYXRoLmltdWwoYm4sSG4pO3ZhciBnYT0obWUrKHk9eStNYXRoLmltdWwoQXQsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChBdCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXwwKSk8PDEz''@;'; put 'put ''KXwwO21lPSgoUz1TK01hdGguaW11bChKdCxqbil8MCkrKHA+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzO3ZhciBsYT0obWUrKHk9TWF0aC5pbXVsKE50LGNuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChOdCxqbikpK01hdGguaW11bChibixjbil8MCkpPDwxMyl8MDty''@;'; put 'put ''ZXR1cm4gbWU9KChTPU1hdGguaW11bChibixqbikpKyhwPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEwODg2MyxmZVswXT1YcixmZVsxXT12aSxmZVsyXT1FcixmZVszXT1ZaSxmZVs0XT1KcixmZVs1XT1hbyxmZVs2XT1CcixmZVs3XT1KaSxmZVs4XT10byxmZVs5XT1jbyxmZVsxMF09''@;'; put 'put ''bG8sZmVbMTFdPXNvLGZlWzEyXT1YaSxmZVsxM109cG8sZmVbMTRdPV9yLGZlWzE1XT1GaSxmZVsxNl09SG8sZmVbMTddPWdhLGZlWzE4XT1sYSwwIT09bWUmJihmZVsxOV09bWUsTS5sZW5ndGgrKyksTX07ZnVuY3Rpb24gaWUoZyxDLE0pe3JldHVybihuZXcgbGUpLm11bHAoZyxDLE0pfWZ1''@;'; put 'put ''bmN0aW9uIGxlKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwobmU9dGUpLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIHk9dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/bmUodGhpcyxnLEMpOnk8''@;'; put 'put ''NjM/dGUodGhpcyxnLEMpOnk8MTAyND9mdW5jdGlvbihwLFMsUSl7US5uZWdhdGl2ZT1TLm5lZ2F0aXZlXnAubmVnYXRpdmUsUS5sZW5ndGg9cC5sZW5ndGgrUy5sZW5ndGg7Zm9yKHZhciByZT0wLGZlPTAsbWU9MDttZTxRLmxlbmd0aC0xO21lKyspe3ZhciBrZT1mZTtmZT0wO2Zvcih2YXIg''@;'; put 'put ''VGU9NjcxMDg4NjMmcmUsUGU9TWF0aC5taW4obWUsUy5sZW5ndGgtMSksRmU9TWF0aC5tYXgoMCxtZS1wLmxlbmd0aCsxKTtGZTw9UGU7RmUrKyl7dmFyIExlPSgwfHAud29yZHNbbWUtRmVdKSooMHxTLndvcmRzW0ZlXSksQmU9NjcxMDg4NjMmTGU7VGU9NjcxMDg4NjMmKEJlPUJlK1RlfDAp''@;'; put 'put ''LGZlKz0oa2U9KGtlPWtlKyhMZS82NzEwODg2NHwwKXwwKSsoQmU+Pj4yNil8MCk+Pj4yNixrZSY9NjcxMDg4NjN9US53b3Jkc1ttZV09VGUscmU9a2Usa2U9ZmV9cmV0dXJuIDAhPT1yZT9RLndvcmRzW21lXT1yZTpRLmxlbmd0aC0tLFEuc3RyaXAoKX0odGhpcyxnLEMpOmllKHRoaXMsZyxD''@;'; put 'put ''KX0sbGUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSx5PTA7eTxnO3krKylDW3ldPXRoaXMucmV2QmluKHksTSxnKTtyZXR1cm4gQ30sbGUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihn''@;'; put 'put ''LEMsTSl7aWYoMD09PWd8fGc9PT1NLTEpcmV0dXJuIGc7Zm9yKHZhciB5PTAscD0wO3A8QztwKyspeXw9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiB5fSxsZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsTSx5LHAsUyl7Zm9yKHZhciBRPTA7UTxTO1ErKyl5W1FdPUNbZ1tRXV0s''@;'; put 'put ''cFtRXT1NW2dbUV1dfSxsZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXt0aGlzLnBlcm11dGUoUyxnLEMsTSx5LHApO2Zvcih2YXIgUT0xO1E8cDtRPDw9MSlmb3IodmFyIHJlPVE8PDEsZmU9TWF0aC5jb3MoMipNYXRoLlBJL3JlKSxtZT1NYXRoLnNpbigyKk1h''@;'; put 'put ''dGguUEkvcmUpLGtlPTA7a2U8cDtrZSs9cmUpZm9yKHZhciBUZT1mZSxQZT1tZSxGZT0wO0ZlPFE7RmUrKyl7dmFyIE5lPU1ba2UrRmVdLExlPXlba2UrRmVdLEJlPU1ba2UrRmUrUV0sSGU9eVtrZStGZStRXSxRZT1UZSpCZS1QZSpIZTtIZT1UZSpIZStQZSpCZSxNW2tlK0ZlXT1OZSsoQmU9''@;'; put 'put ''UWUpLHlba2UrRmVdPUxlK0hlLE1ba2UrRmUrUV09TmUtQmUseVtrZStGZStRXT1MZS1IZSxGZSE9PXJlJiYoUWU9ZmUqVGUtbWUqUGUsUGU9ZmUqUGUrbWUqVGUsVGU9UWUpfX0sbGUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGcsQyl7dmFyIE09MXxNYXRoLm1heChDLGcpLHk9''@;'; put 'put ''MSZNLHA9MDtmb3IoTT1NLzJ8MDtNO00+Pj49MSlwKys7cmV0dXJuIDE8PHArMSt5fSxsZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxNKXtpZighKE08PTEpKWZvcih2YXIgeT0wO3k8TS8yO3krKyl7dmFyIHA9Z1t5XTtnW3ldPWdbTS15LTFdLGdbTS15LTFdPXAscD1DW3ld''@;'; put 'put ''LENbeV09LUNbTS15LTFdLENbTS15LTFdPS1wfX0sbGUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT0wLHk9MDt5PEMvMjt5Kyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqeSsxXS9DKStNYXRoLnJvdW5kKGdbMip5XS9DKStNO2dbeV09NjcxMDg4''@;'; put 'put ''NjMmcCxNPXA8NjcxMDg4NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGxlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9MDtTPEM7UysrKU1bMipTXT04MTkxJihwKz0wfGdbU10pLE1bMipTKzFdPTgxOTEmKHA+Pj49MTMpLHA+Pj49MTM7''@;'; put 'put ''Zm9yKFM9MipDO1M8eTsrK1MpTVtTXT0wO0koMD09PXApLEkoMD09KC04MTkyJnApKX0sbGUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPTA7TTxnO00rKylDW01dPTA7cmV0dXJuIEN9LGxlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxN''@;'; put 'put ''KXt2YXIgeT0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKHkpLFM9dGhpcy5zdHViKHkpLFE9bmV3IEFycmF5KHkpLHJlPW5ldyBBcnJheSh5KSxmZT1uZXcgQXJyYXkoeSksbWU9bmV3IEFycmF5KHkpLGtlPW5ldyBBcnJheSh5KSxUZT1uZXcg''@;'; put 'put ''QXJyYXkoeSksUGU9TS53b3JkcztQZS5sZW5ndGg9eSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxRLHkpLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLG1lLHkpLHRoaXMudHJhbnNmb3JtKFEsUyxyZSxmZSx5LHApLHRoaXMudHJhbnNmb3JtKG1lLFMsa2UsVGUs''@;'; put 'put ''eSxwKTtmb3IodmFyIEZlPTA7RmU8eTtGZSsrKXt2YXIgTmU9cmVbRmVdKmtlW0ZlXS1mZVtGZV0qVGVbRmVdO2ZlW0ZlXT1yZVtGZV0qVGVbRmVdK2ZlW0ZlXSprZVtGZV0scmVbRmVdPU5lfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShyZSxmZSx5KSx0aGlzLnRyYW5zZm9ybShyZSxmZSxQZSxT''@;'; put 'put ''LHkscCksdGhpcy5jb25qdWdhdGUoUGUsUyx5KSx0aGlzLm5vcm1hbGl6ZTEzYihQZSx5KSxNLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxNLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxNLnN0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShu''@;'; put 'put ''dWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLGll''@;'; put 'put ''KHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnKSxJKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLE09MDtNPHRoaXMu''@;'; put 'put ''bGVuZ3RoO00rKyl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkqZyxwPSg2NzEwODg2MyZ5KSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPXkvNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNbTV09Qyx0aGlzLmxlbmd0''@;'; put 'put ''aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwo''@;'; put 'put ''dGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKFMpe2Zvcih2YXIgUT1uZXcgQXJyYXkoUy5iaXRMZW5ndGgoKSkscmU9MDtyZTxRLmxlbmd0aDtyZSsrKXt2YXIgbWU9cmUlMjY7UVtyZV09KFMud29yZHNbcmUvMjZ8MF0mMTw8bWUpPj4+''@;'; put 'put ''bWV9cmV0dXJuIFF9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBNPXRoaXMseT0wO3k8Qy5sZW5ndGgmJjA9PT1DW3ldO3krKyxNPU0uc3FyKCkpO2lmKCsreTxDLmxlbmd0aClmb3IodmFyIHA9TS5zcXIoKTt5PEMubGVuZ3RoO3krKyxwPXAuc3FyKCkpMCE9''@;'; put 'put ''PUNbeV0mJihNPU0ubXVsKHApKTtyZXR1cm4gTX0sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxNPWclMjYseT0oZy1NKS8yNixwPTY3MTA4ODYzPj4+MjYtTTw8MjYtTTtpZigwIT09TSl7dmFyIFM9MDtmb3IoQz0wO0M8''@;'; put 'put ''dGhpcy5sZW5ndGg7QysrKXt2YXIgUT10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1RPDxNfFMsUz1RPj4+MjYtTX1TJiYodGhpcy53b3Jkc1tDXT1TLHRoaXMubGVuZ3RoKyspfWlmKDAhPT15KXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRo''@;'; put 'put ''aXMud29yZHNbQyt5XT10aGlzLndvcmRzW0NdO2ZvcihDPTA7Qzx5O0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPXl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxu''@;'; put 'put ''KGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLE0pe3ZhciB5O0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSx5PUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LFM9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLFE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHJl''@;'; put 'put ''PU07aWYoeS09Uyx5PU1hdGgubWF4KDAseSkscmUpe2Zvcih2YXIgZmU9MDtmZTxTO2ZlKyspcmUud29yZHNbZmVdPXRoaXMud29yZHNbZmVdO3JlLmxlbmd0aD1TfWlmKDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRoaXMubGVuZ3RoLT1TLGZlPTA7ZmU8dGhpcy5sZW5ndGg7ZmUrKyl0''@;'; put 'put ''aGlzLndvcmRzW2ZlXT10aGlzLndvcmRzW2ZlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIG1lPTA7Zm9yKGZlPXRoaXMubGVuZ3RoLTE7ZmU+PTAmJigwIT09bWV8fGZlPj15KTtmZS0tKXt2YXIga2U9MHx0aGlzLndvcmRzW2ZlXTt0aGlzLndvcmRzW2ZlXT1t''@;'; put 'put ''ZTw8MjYtcHxrZT4+PnAsbWU9a2UmUX1yZXR1cm4gcmUmJjAhPT1tZSYmKHJlLndvcmRzW3JlLmxlbmd0aCsrXT1tZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLE0p''@;'; put 'put ''e3JldHVybiBJKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsTSl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4o''@;'; put 'put ''Zyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9TXx8ISh0aGlzLndvcmRzW01dJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykv''@;'; put 'put ''MjY7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1NP3RoaXM6KDAhPT1DJiZNKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oTSx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMu''@;'; put 'put ''bGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gSSgibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53''@;'; put 'put ''b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoSSgibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIGcpLEkoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5n''@;'; put 'put ''dGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVy''@;'; put 'put ''biB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeSxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtNKTt2YXIgUT0wO2Zv''@;'; put 'put ''cih5PTA7eTxnLmxlbmd0aDt5Kyspe3A9KDB8dGhpcy53b3Jkc1t5K01dKStRO3ZhciByZT0oMHxnLndvcmRzW3ldKSpDO1E9KChwLT02NzEwODg2MyZyZSk+PjI2KS0ocmUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnB9Zm9yKDt5PHRoaXMubGVuZ3RoLU07eSsrKVE9''@;'; put 'put ''KHA9KDB8dGhpcy53b3Jkc1t5K01dKStRKT4+MjYsdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnA7aWYoMD09PVEpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoSSgtMT09PVEpLFE9MCx5PTA7eTx0aGlzLmxlbmd0aDt5KyspUT0ocD0tKDB8dGhpcy53b3Jkc1t5XSkrUSk+PjI2LHRoaXMud29y''@;'; put 'put ''ZHNbeV09NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgTSx5PXRoaXMuY2xvbmUoKSxwPWcsUz0wfHAud29yZHNbcC5sZW5ndGgtMV07MCE9KE09MjYtdGhpcy5fY291bnRCaXRzKFMp''@;'; put 'put ''KSYmKHA9cC51c2hsbihNKSx5Lml1c2hsbihNKSxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIFEscmU9eS5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoUT1uZXcgRShudWxsKSkubGVuZ3RoPXJlKzEsUS53b3Jkcz1uZXcgQXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgZmU9MDtm''@;'; put 'put ''ZTxRLmxlbmd0aDtmZSsrKVEud29yZHNbZmVdPTB9dmFyIG1lPXkuY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHJlKTswPT09bWUubmVnYXRpdmUmJih5PW1lLFEmJihRLndvcmRzW3JlXT0xKSk7Zm9yKHZhciBrZT1yZS0xO2tlPj0wO2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHx5LndvcmRz''@;'; put 'put ''W3AubGVuZ3RoK2tlXSkrKDB8eS53b3Jkc1twLmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL1N8MCw2NzEwODg2MykseS5faXNobG5zdWJtdWwocCxUZSxrZSk7MCE9PXkubmVnYXRpdmU7KVRlLS0seS5uZWdhdGl2ZT0wLHkuX2lzaGxuc3VibXVsKHAsMSxrZSkseS5pc1plcm8o''@;'; put 'put ''KXx8KHkubmVnYXRpdmVePTEpO1EmJihRLndvcmRzW2tlXT1UZSl9cmV0dXJuIFEmJlEuc3RyaXAoKSx5LnN0cmlwKCksImRpdiIhPT1DJiYwIT09TSYmeS5pdXNocm4oTSkse2RpdjpRfHxudWxsLG1vZDp5fX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxNKXtyZXR1cm4gSSgh''@;'; put 'put ''Zy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoeT1TLmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD1TLm1vZC5uZWco''@;'; put 'put ''KSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2OnksbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KFM9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJih5PVMuZGl2Lm5lZygpKSx7ZGl2OnksbW9kOlMubW9kfSk6dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSZnLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OlMuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcg''@;'; put 'put ''RSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBF''@;'; put 'put ''KHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgeSxwLFN9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9k''@;'; put 'put ''KGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5k''@;'; put 'put ''aXY7dmFyIE09MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QseT1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSxTPU0uY21wKHkpO3JldHVybiBTPDB8fDE9PT1wJiYwPT09Uz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9''@;'; put 'put ''LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsTT0wLHk9dGhpcy5sZW5ndGgtMTt5Pj0wO3ktLSlNPShDKk0rKDB8dGhpcy53b3Jkc1t5XSkpJWc7cmV0dXJuIE19LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0ko''@;'; put 'put ''Zzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvZ3wwLEM9eSVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHk9bmV3IEUo''@;'; put 'put ''MSkscD1uZXcgRSgwKSxTPW5ldyBFKDApLFE9bmV3IEUoMSkscmU9MDtDLmlzRXZlbigpJiZNLmlzRXZlbigpOylDLml1c2hybigxKSxNLml1c2hybigxKSwrK3JlO2Zvcih2YXIgZmU9TS5jbG9uZSgpLG1lPUMuY2xvbmUoKTshQy5pc1plcm8oKTspe2Zvcih2YXIga2U9MCxUZT0xOyEoQy53''@;'; put 'put ''b3Jkc1swXSZUZSkmJmtlPDI2Oysra2UsVGU8PD0xKTtpZihrZT4wKWZvcihDLml1c2hybihrZSk7a2UtLSA+MDspKHkuaXNPZGQoKXx8cC5pc09kZCgpKSYmKHkuaWFkZChmZSkscC5pc3ViKG1lKSkseS5pdXNocm4oMSkscC5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLEZlPTE7IShNLndvcmRz''@;'; put 'put ''WzBdJkZlKSYmUGU8MjY7KytQZSxGZTw8PTEpO2lmKFBlPjApZm9yKE0uaXVzaHJuKFBlKTtQZS0tID4wOykoUy5pc09kZCgpfHxRLmlzT2RkKCkpJiYoUy5pYWRkKGZlKSxRLmlzdWIobWUpKSxTLml1c2hybigxKSxRLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHkuaXN1YihT''@;'; put 'put ''KSxwLmlzdWIoUSkpOihNLmlzdWIoQyksUy5pc3ViKHkpLFEuaXN1YihwKSl9cmV0dXJue2E6UyxiOlEsZ2NkOk0uaXVzaGxuKHJlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgp''@;'; put 'put ''O0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHkscD1uZXcgRSgxKSxTPW5ldyBFKDApLFE9TS5jbG9uZSgpO0MuY21wbigxKT4wJiZNLmNtcG4oMSk+MDspe2Zvcih2YXIgcmU9MCxmZT0xOyEoQy53b3Jkc1swXSZmZSkmJnJlPDI2OysrcmUsZmU8PD0xKTtp''@;'; put 'put ''ZihyZT4wKWZvcihDLml1c2hybihyZSk7cmUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoUSkscC5pdXNocm4oMSk7Zm9yKHZhciBtZT0wLGtlPTE7IShNLndvcmRzWzBdJmtlKSYmbWU8MjY7KyttZSxrZTw8PTEpO2lmKG1lPjApZm9yKE0uaXVzaHJuKG1lKTttZS0tID4wOylTLmlzT2RkKCkm''@;'; put 'put ''JlMuaWFkZChRKSxTLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHAuaXN1YihTKSk6KE0uaXN1YihDKSxTLmlzdWIocCkpfXJldHVybih5PTA9PT1DLmNtcG4oMSk/cDpTKS5jbXBuKDApPDAmJnkuaWFkZChnKSx5fSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhp''@;'; put 'put ''cy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxNPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsTS5uZWdhdGl2ZT0wO2Zvcih2YXIgeT0wO0MuaXNFdmVuKCkmJk0uaXNFdmVuKCk7eSsrKUMuaXVzaHJuKDEp''@;'; put 'put ''LE0uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO3ZhciBwPUMuY21wKE0pO2lmKHA8MCl7dmFyIFM9QztDPU0sTT1TfWVsc2UgaWYoMD09PXB8fDA9PT1NLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKE0pfXJl''@;'; put 'put ''dHVybiBNLml1c2hsbih5KX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcpO3ZhciBDPWclMjYsTT0oZy1DKS8yNix5PTE8PEM7''@;'; put 'put ''aWYodGhpcy5sZW5ndGg8PU0pcmV0dXJuIHRoaXMuX2V4cGFuZChNKzEpLHRoaXMud29yZHNbTV18PXksdGhpcztmb3IodmFyIHA9eSxTPU07MCE9PXAmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT0wfHRoaXMud29yZHNbU107cD0oUSs9cCk+Pj4yNix0aGlzLndvcmRzW1NdPVEmPTY3MTA4''@;'; put 'put ''ODYzfXJldHVybiAwIT09cCYmKHRoaXMud29yZHNbU109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIgQyxN''@;'; put 'put ''PWc8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIU0pcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJk0pcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7TSYmKGc9LWcpLEkoZzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHk9MHx0''@;'; put 'put ''aGlzLndvcmRzWzBdO0M9eT09PWc/MDp5PGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09''@;'; put 'put ''Zy5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1cm4t''@;'; put 'put ''MTtmb3IodmFyIEM9MCxNPXRoaXMubGVuZ3RoLTE7TT49MDtNLS0pe3ZhciB5PTB8dGhpcy53b3Jkc1tNXSxwPTB8Zy53b3Jkc1tNXTtpZih5IT09cCl7eTxwP0M9LTE6eT5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRo''@;'; put 'put ''aXMuY21wbihnKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPj0w''@;'; put 'put ''fSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5wcm90''@;'; put 'put ''b3R5cGUubHRlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gbmV3IE4oZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEkoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZy5j''@;'; put 'put ''b252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGcp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVk''@;'; put 'put ''SUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGcp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRo''@;'; put 'put ''aXMsZyksdGhpcy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxnKX0s''@;'; put 'put ''RS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92''@;'; put 'put ''ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxF''@;'; put 'put ''LnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1''@;'; put 'put ''MTk6bnVsbH07ZnVuY3Rpb24gdWUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGNlKCl7dWUu''@;'; put 'put ''Y2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBZKCl7dWUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAw''@;'; put 'put ''MDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7dWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB4KCl7dWUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBOKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1lPUN9ZWxzZSBJKGcuZ3RuKDEpLCJtb2R1bHVzIG11c3Qg''@;'; put 'put ''YmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRihnKXtOLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBF''@;'; put 'put ''KDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2Qo''@;'; put 'put ''dGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXVlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxnfSx1ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlv''@;'; put 'put ''bihnKXt2YXIgQyxNPWc7ZG97dGhpcy5zcGxpdChNLHRoaXMudG1wKSxDPShNPShNPXRoaXMuaW11bEsoTSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIHk9Qzx0aGlzLm4/LTE6TS51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT15PyhNLndvcmRzWzBd''@;'; put 'put ''PTAsTS5sZW5ndGg9MSk6eT4wP00uaXN1Yih0aGlzLnApOnZvaWQgMCE9PU0uc3RyaXA/TS5zdHJpcCgpOk0uX3N0cmlwKCksTX0sdWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtyZXR1''@;'; put 'put ''cm4gZy5pbXVsKHRoaXMuayl9LFIoY2UsdWUpLGNlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT00MTk0MzAzLHk9TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8eTtwKyspQy53b3Jkc1twXT1nLndvcmRzW3BdO2lmKEMubGVuZ3RoPXksZy5sZW5ndGg8PTkpcmV0''@;'; put 'put ''dXJuIGcud29yZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciBTPWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109UyZNLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBRPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBdPShRJk0pPDw0fFM+Pj4yMixTPVF9Zy53b3Jkc1twLTEw''@;'; put 'put ''XT1TPj4+PTIyLGcubGVuZ3RoLT0wPT09UyYmZy5sZW5ndGg+MTA/MTA6OX0sY2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKyl7dmFy''@;'; put 'put ''IHk9MHxnLndvcmRzW01dO2cud29yZHNbTV09NjcxMDg4NjMmKEMrPTk3Nyp5KSxDPTY0KnkrKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sUihZLHVlKSxSKGIs''@;'; put 'put ''dWUpLFIoeCx1ZSkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0xOSooMHxnLndvcmRzW01dKStDLHA9NjcxMDg4NjMmeTt5Pj4+PTI2LGcud29yZHNbTV09cCxDPXl9cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tnLmxl''@;'; put 'put ''bmd0aCsrXT1DKSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZihkZVtnXSlyZXR1cm4gZGVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBjZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgWTtlbHNlIGlmKCJwMTkyIj09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyB4fXJldHVybiBkZVtnXT1DLEN9LE4ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCwicmVkIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpfSxOLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0koMD09KGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCYmZy5yZWQ9PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQg''@;'; put 'put ''bnVtYmVycyIpfSxOLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0dXJuIGcu''@;'; put 'put ''aXNaZXJvKCk/Zy5jbG9uZSgpOnRoaXMubS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5hZGQoQyk7cmV0dXJuIE0uY21wKHRoaXMubSk+PTAmJk0uaXN1Yih0aGlzLm0pLE0uX2ZvcmNlUmVk''@;'; put 'put ''KHRoaXMpfSxOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuaWFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMp''@;'; put 'put ''O3ZhciBNPWcuc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5pc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRo''@;'; put 'put ''aXMubSksTX0sTi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVsKEMpKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxnLmNsb25lKCkpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIHRoaXMubXVsKGcsZyl9LE4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihJKEMlMj09MSksMz09PUMpe3ZhciBNPXRoaXMubS5hZGQobmV3IEUoMSkpLml1c2hybigyKTtyZXR1''@;'; put 'put ''cm4gdGhpcy5wb3coZyxNKX1mb3IodmFyIHk9dGhpcy5tLnN1Ym4oMSkscD0wOyF5LmlzWmVybygpJiYwPT09eS5hbmRsbigxKTspcCsrLHkuaXVzaHJuKDEpO0koIXkuaXNaZXJvKCkpO3ZhciBTPW5ldyBFKDEpLnRvUmVkKHRoaXMpLFE9Uy5yZWROZWcoKSxyZT10aGlzLm0uc3VibigxKS5p''@;'; put 'put ''dXNocm4oMSksZmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihmZT1uZXcgRSgyKmZlKmZlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coZmUscmUpLmNtcChRKTspZmUucmVkSUFkZChRKTtmb3IodmFyIG1lPXRoaXMucG93KGZlLHkpLGtlPXRoaXMucG93KGcseS5hZGRuKDEpLml1c2hybigx''@;'; put 'put ''KSksVGU9dGhpcy5wb3coZyx5KSxQZT1wOzAhPT1UZS5jbXAoUyk7KXtmb3IodmFyIEZlPVRlLE5lPTA7MCE9PUZlLmNtcChTKTtOZSsrKUZlPUZlLnJlZFNxcigpO0koTmU8UGUpO3ZhciBMZT10aGlzLnBvdyhtZSxuZXcgRSgxKS5pdXNobG4oUGUtTmUtMSkpO2tlPWtlLnJlZE11bChMZSks''@;'; put 'put ''bWU9TGUucmVkU3FyKCksVGU9VGUucmVkTXVsKG1lKSxQZT1OZX1yZXR1cm4ga2V9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMubmVnYXRpdmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkpOnRoaXMu''@;'; put 'put ''aW1vZChDKX0sTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgxNik7TVswXT1uZXcgRSgxKS50b1JlZCh0aGlzKSxNWzFd''@;'; put 'put ''PWc7Zm9yKHZhciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sZyk7dmFyIHA9TVswXSxTPTAsUT0wLHJlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PUMubGVuZ3RoLTE7eT49MDt5LS0pe2Zvcih2YXIgZmU9Qy53b3Jkc1t5XSxtZT1yZS0x''@;'; put 'put ''O21lPj0wO21lLS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10pLFE9MCxTPTApKTpRPTB9cmU9MjZ9cmV0dXJuIHB9LE4ucHJvdG90''@;'; put 'put ''eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LE4ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIG5ldyBGKGcpfSxSKEYsTiksRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlzLnJpbnYp''@;'; put 'put ''KTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgTT1nLmltdWwoQykseT1NLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYp''@;'; put 'put ''LmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAuaWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90''@;'; put 'put ''b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBNPWcubXVsKEMpLHk9TS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSks''@;'; put 'put ''cD1NLmlzdWIoeSkuaXVzaHJuKHRoaXMuc2hpZnQpLFM9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD9TPXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYoUz1wLmlhZGQodGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW1vZChnLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sOTc0NjpIPT57ZnVuY3Rpb24gQihMLEspe2lmKCFMKXRocm93IG5ldyBFcnJvcihLfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfUguZXhwb3J0cz1CLEIuZXF1YWw9''@;'; put 'put ''ZnVuY3Rpb24oTCxLLEope2lmKEwhPUspdGhyb3cgbmV3IEVycm9yKEp8fCJBc3NlcnRpb24gZmFpbGVkOiAiK0wrIiAhPSAiK0spfX0sNDUwNDooSCxCKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTD1CO2Z1bmN0aW9uIEsoSSl7cmV0dXJuIDE9PT1JLmxlbmd0aD8iMCIrSTpJfWZ1bmN0aW9uIEoo''@;'; put 'put ''SSl7Zm9yKHZhciBSPSIiLEU9MDtFPEkubGVuZ3RoO0UrKylSKz1LKElbRV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gUn1MLnRvQXJyYXk9ZnVuY3Rpb24oSSxSKXtpZihBcnJheS5pc0FycmF5KEkpKXJldHVybiBJLnNsaWNlKCk7aWYoIUkpcmV0dXJuW107dmFyIEU9W107aWYoInN0cmluZyIh''@;'; put 'put ''PXR5cGVvZiBJKXtmb3IodmFyIHo9MDt6PEkubGVuZ3RoO3orKylFW3pdPTB8SVt6XTtyZXR1cm4gRX1pZigiaGV4Ij09PVIpZm9yKChJPUkucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoST0iMCIrSSksej0wO3o8SS5sZW5ndGg7eis9MilFLnB1c2gocGFyc2VJ''@;'; put 'put ''bnQoSVt6XStJW3orMV0sMTYpKTtlbHNlIGZvcih6PTA7ejxJLmxlbmd0aDt6Kyspe3ZhciBqPUkuY2hhckNvZGVBdCh6KSxWPWo+PjgsRz0yNTUmajtWP0UucHVzaChWLEcpOkUucHVzaChHKX1yZXR1cm4gRX0sTC56ZXJvMj1LLEwudG9IZXg9SixMLmVuY29kZT1mdW5jdGlvbihJLFIpe3Jl''@;'; put 'put ''dHVybiJoZXgiPT09Uj9KKEkpOkl9fSwxMTcxOihILEIsTCk9Pnt2YXIgSz1MKDUxMDgpO0guZXhwb3J0cz10ZSx0ZS5NaW5pbWF0Y2g9bmU7dmFyIEo9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEwoMjUyMCl9Y2F0Y2h7fX0oKXx8e3NlcDoiLyJ9O3RlLnNlcD1KLnNlcDt2YXIgST10ZS5HTE9C''@;'; put 'put ''U1RBUj1uZS5HTE9CU1RBUj17fSxSPUwoMzY0NCksRT17IiEiOntvcGVuOiIoPzooPyEoPzoiLGNsb3NlOiIpKVteL10qPykifSwiPyI6e29wZW46Iig/OiIsY2xvc2U6Iik/In0sIisiOntvcGVuOiIoPzoiLGNsb3NlOiIpKyJ9LCIqIjp7b3BlbjoiKD86IixjbG9zZToiKSoifSwiQCI6e29w''@;'; put 'put ''ZW46Iig/OiIsY2xvc2U6IikifX0sej0iW14vXSIsaj16KyIqPyIsVz0iKCkuKnt9Kz9bXV4kXFwhIi5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKHVlLGNlKXtyZXR1cm4gdWVbY2VdPSEwLHVlfSx7fSksVT0vXC8rLztmdW5jdGlvbiBxKHVlLGNlKXtjZT1jZXx8e307dmFyIFk9e307cmV0''@;'; put 'put ''dXJuIE9iamVjdC5rZXlzKHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1lbYl09dWVbYl19KSxPYmplY3Qua2V5cyhjZSkuZm9yRWFjaChmdW5jdGlvbihiKXtZW2JdPWNlW2JdfSksWX1mdW5jdGlvbiB0ZSh1ZSxjZSxZKXtyZXR1cm4gbGUoY2UpLFl8fChZPXt9KSwhKCFZLm5vY29tbWVudCYm''@;'; put 'put ''IiMiPT09Y2UuY2hhckF0KDApKSYmbmV3IG5lKGNlLFkpLm1hdGNoKHVlKX1mdW5jdGlvbiBuZSh1ZSxjZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgbmUpKXJldHVybiBuZXcgbmUodWUsY2UpO2xlKHVlKSxjZXx8KGNlPXt9KSx1ZT11ZS50cmltKCksY2UuYWxsb3dXaW5kb3dzRXNjYXBlfHwi''@;'; put 'put ''LyI9PT1KLnNlcHx8KHVlPXVlLnNwbGl0KEouc2VwKS5qb2luKCIvIikpLHRoaXMub3B0aW9ucz1jZSx0aGlzLnNldD1bXSx0aGlzLnBhdHRlcm49dWUsdGhpcy5yZWdleHA9bnVsbCx0aGlzLm5lZ2F0ZT0hMSx0aGlzLmNvbW1lbnQ9ITEsdGhpcy5lbXB0eT0hMSx0aGlzLnBhcnRpYWw9ISFj''@;'; put 'put ''ZS5wYXJ0aWFsLHRoaXMubWFrZSgpfWZ1bmN0aW9uIGllKHVlLGNlKXtyZXR1cm4gY2V8fChjZT10aGlzIGluc3RhbmNlb2YgbmU/dGhpcy5vcHRpb25zOnt9KSxsZSh1ZT12b2lkIDA9PT11ZT90aGlzLnBhdHRlcm46dWUpLGNlLm5vYnJhY2V8fCEvXHsoPzooPyFceykuKSpcfS8udGVzdCh1''@;'; put 'put ''ZSk/W3VlXTpSKHVlKX10ZS5maWx0ZXI9ZnVuY3Rpb24odWUsY2Upe3JldHVybiBjZT1jZXx8e30sZnVuY3Rpb24oWSxiLHgpe3JldHVybiB0ZShZLHVlLGNlKX19LHRlLmRlZmF1bHRzPWZ1bmN0aW9uKHVlKXtpZighdWV8fCJvYmplY3QiIT10eXBlb2YgdWV8fCFPYmplY3Qua2V5cyh1ZSku''@;'; put 'put ''bGVuZ3RoKXJldHVybiB0ZTt2YXIgY2U9dGUsWT1mdW5jdGlvbihiLHgsTil7cmV0dXJuIGNlKGIseCxxKHVlLE4pKX07cmV0dXJuKFkuTWluaW1hdGNoPWZ1bmN0aW9uKGIseCl7cmV0dXJuIG5ldyBjZS5NaW5pbWF0Y2goYixxKHVlLHgpKX0pLmRlZmF1bHRzPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biBjZS5kZWZhdWx0cyhxKHVlLGIpKS5NaW5pbWF0Y2h9LFkuZmlsdGVyPWZ1bmN0aW9uKGIseCl7cmV0dXJuIGNlLmZpbHRlcihiLHEodWUseCkpfSxZLmRlZmF1bHRzPWZ1bmN0aW9uKGIpe3JldHVybiBjZS5kZWZhdWx0cyhxKHVlLGIpKX0sWS5tYWtlUmU9ZnVuY3Rpb24oYix4KXtyZXR1''@;'; put 'put ''cm4gY2UubWFrZVJlKGIscSh1ZSx4KSl9LFkuYnJhY2VFeHBhbmQ9ZnVuY3Rpb24oYix4KXtyZXR1cm4gY2UuYnJhY2VFeHBhbmQoYixxKHVlLHgpKX0sWS5tYXRjaD1mdW5jdGlvbihiLHgsTil7cmV0dXJuIGNlLm1hdGNoKGIseCxxKHVlLE4pKX0sWX0sbmUuZGVmYXVsdHM9ZnVuY3Rpb24o''@;'; put 'put ''dWUpe3JldHVybiB0ZS5kZWZhdWx0cyh1ZSkuTWluaW1hdGNofSxuZS5wcm90b3R5cGUuZGVidWc9ZnVuY3Rpb24oKXt9LG5lLnByb3RvdHlwZS5tYWtlPWZ1bmN0aW9uKCl7dmFyIHVlPXRoaXMucGF0dGVybixjZT10aGlzLm9wdGlvbnM7aWYoY2Uubm9jb21tZW50fHwiIyIhPT11ZS5jaGFy''@;'; put 'put ''QXQoMCkpaWYodWUpe3RoaXMucGFyc2VOZWdhdGUoKTt2YXIgWT10aGlzLmdsb2JTZXQ9dGhpcy5icmFjZUV4cGFuZCgpO2NlLmRlYnVnJiYodGhpcy5kZWJ1Zz1mdW5jdGlvbigpe0suZXJyb3IuYXBwbHkoSyxhcmd1bWVudHMpfSksdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sWSksWT10aGlz''@;'; put 'put ''Lmdsb2JQYXJ0cz1ZLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5zcGxpdChVKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFkpLFk9WS5tYXAoZnVuY3Rpb24oYix4LE4pe3JldHVybiBiLm1hcCh0aGlzLnBhcnNlLHRoaXMpfSx0aGlzKSx0aGlzLmRlYnVnKHRoaXMucGF0dGVybixZKSxZ''@;'; put 'put ''PVkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybi0xPT09Yi5pbmRleE9mKCExKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFkpLHRoaXMuc2V0PVl9ZWxzZSB0aGlzLmVtcHR5PSEwO2Vsc2UgdGhpcy5jb21tZW50PSEwfSxuZS5wcm90b3R5cGUucGFyc2VOZWdhdGU9ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgdWU9dGhpcy5wYXR0ZXJuLGNlPSExLGI9MDtpZighdGhpcy5vcHRpb25zLm5vbmVnYXRlKXtmb3IodmFyIHg9MCxOPXVlLmxlbmd0aDt4PE4mJiIhIj09PXVlLmNoYXJBdCh4KTt4KyspY2U9IWNlLGIrKztiJiYodGhpcy5wYXR0ZXJuPXVlLnN1YnN0cihiKSksdGhpcy5uZWdhdGU9Y2V9''@;'; put 'put ''fSx0ZS5icmFjZUV4cGFuZD1mdW5jdGlvbih1ZSxjZSl7cmV0dXJuIGllKHVlLGNlKX0sbmUucHJvdG90eXBlLmJyYWNlRXhwYW5kPWllO3ZhciBsZT1mdW5jdGlvbih1ZSl7aWYoInN0cmluZyIhPXR5cGVvZiB1ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHBhdHRlcm4iKTtpZih1''@;'; put 'put ''ZS5sZW5ndGg+NjU1MzYpdGhyb3cgbmV3IFR5cGVFcnJvcigicGF0dGVybiBpcyB0b28gbG9uZyIpfTtuZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odWUsY2Upe2xlKHVlKTt2YXIgWT10aGlzLm9wdGlvbnM7aWYoIioqIj09PXVlKXtpZighWS5ub2dsb2JzdGFyKXJldHVybiBJO3VlPSIq''@;'; put 'put ''In1pZigiIj09PXVlKXJldHVybiIiO3ZhciBiLHg9IiIsTj0hIVkubm9jYXNlLEY9ITEsZz1bXSxDPVtdLE09ITEseT0tMSxwPS0xLFM9Ii4iPT09dWUuY2hhckF0KDApPyIiOlkuZG90PyIoPyEoPzpefFxcLylcXC57MSwyfSg/OiR8XFwvKSkiOiIoPyFcXC4pIixRPXRoaXM7ZnVuY3Rpb24g''@;'; put 'put ''cmUoKXtpZihiKXtzd2l0Y2goYil7Y2FzZSIqIjp4Kz1qLE49ITA7YnJlYWs7Y2FzZSI/Ijp4Kz16LE49ITA7YnJlYWs7ZGVmYXVsdDp4Kz0iXFwiK2J9US5kZWJ1ZygiY2xlYXJTdGF0ZUNoYXIgJWogJWoiLGIseCksYj0hMX19Zm9yKHZhciBmZSxtZT0wLGtlPXVlLmxlbmd0aDttZTxrZSYm''@;'; put 'put ''KGZlPXVlLmNoYXJBdChtZSkpO21lKyspaWYodGhpcy5kZWJ1ZygiJXNcdCVzICVzICVqIix1ZSxtZSx4LGZlKSxGJiZXW2ZlXSl4Kz0iXFwiK2ZlLEY9ITE7ZWxzZSBzd2l0Y2goZmUpe2Nhc2UiLyI6cmV0dXJuITE7Y2FzZSJcXCI6cmUoKSxGPSEwO2NvbnRpbnVlO2Nhc2UiPyI6Y2FzZSIq''@;'; put 'put ''IjpjYXNlIisiOmNhc2UiQCI6Y2FzZSIhIjppZih0aGlzLmRlYnVnKCIlc1x0JXMgJXMgJWogPC0tIHN0YXRlQ2hhciIsdWUsbWUseCxmZSksTSl7dGhpcy5kZWJ1ZygiICBpbiBjbGFzcyIpLCIhIj09PWZlJiZtZT09PXArMSYmKGZlPSJeIikseCs9ZmU7Y29udGludWV9US5kZWJ1ZygiY2Fs''@;'; put 'put ''bCBjbGVhclN0YXRlQ2hhciAlaiIsYikscmUoKSxiPWZlLFkubm9leHQmJnJlKCk7Y29udGludWU7Y2FzZSIoIjppZihNKXt4Kz0iKCI7Y29udGludWV9aWYoIWIpe3grPSJcXCgiO2NvbnRpbnVlfWcucHVzaCh7dHlwZTpiLHN0YXJ0Om1lLTEscmVTdGFydDp4Lmxlbmd0aCxvcGVuOkVbYl0u''@;'; put 'put ''b3BlbixjbG9zZTpFW2JdLmNsb3NlfSksdGhpcy5kZWJ1ZygicGxUeXBlICVqICVqIixiLHgrPSIhIj09PWI/Iig/Oig/ISg/OiI6Iig/OiIpLGI9ITE7Y29udGludWU7Y2FzZSIpIjppZihNfHwhZy5sZW5ndGgpe3grPSJcXCkiO2NvbnRpbnVlfXJlKCksTj0hMDt2YXIgVGU9Zy5wb3AoKTt4''@;'; put 'put ''Kz1UZS5jbG9zZSwiISI9PT1UZS50eXBlJiZDLnB1c2goVGUpLFRlLnJlRW5kPXgubGVuZ3RoO2NvbnRpbnVlO2Nhc2UifCI6aWYoTXx8IWcubGVuZ3RofHxGKXt4Kz0iXFx8IixGPSExO2NvbnRpbnVlfXJlKCkseCs9InwiO2NvbnRpbnVlO2Nhc2UiWyI6aWYocmUoKSxNKXt4Kz0iXFwiK2Zl''@;'; put 'put ''O2NvbnRpbnVlfU09ITAscD1tZSx5PXgubGVuZ3RoLHgrPWZlO2NvbnRpbnVlO2Nhc2UiXSI6aWYobWU9PT1wKzF8fCFNKXt4Kz0iXFwiK2ZlLEY9ITE7Y29udGludWV9dmFyIFBlPXVlLnN1YnN0cmluZyhwKzEsbWUpO3RyeXtSZWdFeHAoIlsiK1BlKyJdIil9Y2F0Y2h7dmFyIEZlPXRoaXMu''@;'; put 'put ''cGFyc2UoUGUsZGUpO3g9eC5zdWJzdHIoMCx5KSsiXFxbIitGZVswXSsiXFxdIixOPU58fEZlWzFdLE09ITE7Y29udGludWV9Tj0hMCxNPSExLHgrPWZlO2NvbnRpbnVlO2RlZmF1bHQ6cmUoKSxGP0Y9ITE6IVdbZmVdfHwiXiI9PT1mZSYmTXx8KHgrPSJcXCIpLHgrPWZlfWZvcihNJiYoUGU9''@;'; put 'put ''dWUuc3Vic3RyKHArMSksRmU9dGhpcy5wYXJzZShQZSxkZSkseD14LnN1YnN0cigwLHkpKyJcXFsiK0ZlWzBdLE49Tnx8RmVbMV0pLFRlPWcucG9wKCk7VGU7VGU9Zy5wb3AoKSl7dmFyIE5lPXguc2xpY2UoVGUucmVTdGFydCtUZS5vcGVuLmxlbmd0aCk7dGhpcy5kZWJ1Zygic2V0dGluZyB0''@;'; put 'put ''YWlsIix4LFRlKSxOZT1OZS5yZXBsYWNlKC8oKD86XFx7Mn0pezAsNjR9KShcXD8pXHwvZyxmdW5jdGlvbihFZSxEZSwkZSl7cmV0dXJuICRlfHwoJGU9IlxcIiksRGUrRGUrJGUrInwifSksdGhpcy5kZWJ1ZygidGFpbD0lalxuICAgJXMiLE5lLE5lLFRlLHgpO3ZhciBMZT0iKiI9PT1UZS50''@;'; put 'put ''eXBlP2o6Ij8iPT09VGUudHlwZT96OiJcXCIrVGUudHlwZTtOPSEwLHg9eC5zbGljZSgwLFRlLnJlU3RhcnQpK0xlKyJcXCgiK05lfXJlKCksRiYmKHgrPSJcXFxcIik7dmFyIEJlPSExO3N3aXRjaCh4LmNoYXJBdCgwKSl7Y2FzZSJbIjpjYXNlIi4iOmNhc2UiKCI6QmU9ITB9Zm9yKHZhciBI''@;'; put 'put ''ZT1DLmxlbmd0aC0xO0hlPi0xO0hlLS0pe3ZhciBRZT1DW0hlXSxtdD14LnNsaWNlKDAsUWUucmVTdGFydCksS2U9eC5zbGljZShRZS5yZVN0YXJ0LFFlLnJlRW5kLTgpLHdlPXguc2xpY2UoUWUucmVFbmQtOCxRZS5yZUVuZCksSWU9eC5zbGljZShRZS5yZUVuZCk7d2UrPUllO3ZhciBPZT1t''@;'; put 'put ''dC5zcGxpdCgiKCIpLmxlbmd0aC0xLGV0PUllO2ZvcihtZT0wO21lPE9lO21lKyspZXQ9ZXQucmVwbGFjZSgvXClbKyo/XT8vLCIiKTt2YXIgbnQ9IiI7IiI9PT0oSWU9ZXQpJiZjZSE9PWRlJiYobnQ9IiQiKSx4PW10K0tlK0llK250K3dlfWlmKCIiIT09eCYmTiYmKHg9Iig/PS4pIit4KSxC''@;'; put 'put ''ZSYmKHg9Uyt4KSxjZT09PWRlKXJldHVyblt4LE5dO2lmKCFOKXJldHVybiB1ZS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpO3ZhciBxZT1ZLm5vY2FzZT8iaSI6IiI7dHJ5e3ZhciBodD1uZXcgUmVnRXhwKCJeIit4KyIkIixxZSl9Y2F0Y2h7cmV0dXJuIG5ldyBSZWdFeHAoIiQuIil9cmV0dXJu''@;'; put 'put ''IGh0Ll9nbG9iPXVlLGh0Ll9zcmM9eCxodH07dmFyIGRlPXt9O3RlLm1ha2VSZT1mdW5jdGlvbih1ZSxjZSl7cmV0dXJuIG5ldyBuZSh1ZSxjZXx8e30pLm1ha2VSZSgpfSxuZS5wcm90b3R5cGUubWFrZVJlPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWdleHB8fCExPT09dGhpcy5yZWdleHApcmV0''@;'; put 'put ''dXJuIHRoaXMucmVnZXhwO3ZhciB1ZT10aGlzLnNldDtpZighdWUubGVuZ3RoKXJldHVybiB0aGlzLnJlZ2V4cD0hMSx0aGlzLnJlZ2V4cDt2YXIgY2U9dGhpcy5vcHRpb25zLFk9Y2Uubm9nbG9ic3Rhcj9qOmNlLmRvdD8iKD86KD8hKD86XFwvfF4pKD86XFwuezEsMn0pKCR8XFwvKSkuKSo/''@;'; put 'put ''IjoiKD86KD8hKD86XFwvfF4pXFwuKS4pKj8iLGI9Y2Uubm9jYXNlPyJpIjoiIix4PXVlLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIEY9PT1JP1k6InN0cmluZyI9PXR5cGVvZiBGP0YucmVwbGFjZSgvWy1bXF17fSgpKis/LixcXF4kfCNcc10vZywi''@;'; put 'put ''XFwkJiIpOkYuX3NyY30pLmpvaW4oIlxcLyIpfSkuam9pbigifCIpO3g9Il4oPzoiK3grIikkIix0aGlzLm5lZ2F0ZSYmKHg9Il4oPyEiK3grIikuKiQiKTt0cnl7dGhpcy5yZWdleHA9bmV3IFJlZ0V4cCh4LGIpfWNhdGNoe3RoaXMucmVnZXhwPSExfXJldHVybiB0aGlzLnJlZ2V4cH0sdGUu''@;'; put 'put ''bWF0Y2g9ZnVuY3Rpb24odWUsY2UsWSl7dmFyIGI9bmV3IG5lKGNlLFk9WXx8e30pO3JldHVybiB1ZT11ZS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGIubWF0Y2goeCl9KSxiLm9wdGlvbnMubm9udWxsJiYhdWUubGVuZ3RoJiZ1ZS5wdXNoKGNlKSx1ZX0sbmUucHJvdG90eXBlLm1hdGNo''@;'; put 'put ''PWZ1bmN0aW9uKHVlLGNlKXtpZih2b2lkIDA9PT1jZSYmKGNlPXRoaXMucGFydGlhbCksdGhpcy5kZWJ1ZygibWF0Y2giLHVlLHRoaXMucGF0dGVybiksdGhpcy5jb21tZW50KXJldHVybiExO2lmKHRoaXMuZW1wdHkpcmV0dXJuIiI9PT11ZTtpZigiLyI9PT11ZSYmY2UpcmV0dXJuITA7dmFy''@;'; put 'put ''IFk9dGhpcy5vcHRpb25zOyIvIiE9PUouc2VwJiYodWU9dWUuc3BsaXQoSi5zZXApLmpvaW4oIi8iKSksdWU9dWUuc3BsaXQoVSksdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sInNwbGl0Iix1ZSk7dmFyIGIseCxOPXRoaXMuc2V0O2Zvcih0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwic2V0IixO''@;'; put 'put ''KSx4PXVlLmxlbmd0aC0xO3g+PTAmJiEoYj11ZVt4XSk7eC0tKTtmb3IoeD0wO3g8Ti5sZW5ndGg7eCsrKXt2YXIgRj1OW3hdLGc9dWU7aWYoWS5tYXRjaEJhc2UmJjE9PT1GLmxlbmd0aCYmKGc9W2JdKSx0aGlzLm1hdGNoT25lKGcsRixjZSkpcmV0dXJuISFZLmZsaXBOZWdhdGV8fCF0aGlz''@;'; put 'put ''Lm5lZ2F0ZX1yZXR1cm4hWS5mbGlwTmVnYXRlJiZ0aGlzLm5lZ2F0ZX0sbmUucHJvdG90eXBlLm1hdGNoT25lPWZ1bmN0aW9uKHVlLGNlLFkpe3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLmRlYnVnKCJtYXRjaE9uZSIse3RoaXM6dGhpcyxmaWxlOnVlLHBhdHRlcm46Y2V9KSx0aGlzLmRlYnVn''@;'; put 'put ''KCJtYXRjaE9uZSIsdWUubGVuZ3RoLGNlLmxlbmd0aCk7Zm9yKHZhciB4PTAsTj0wLEY9dWUubGVuZ3RoLGc9Y2UubGVuZ3RoO3g8RiYmTjxnO3grKyxOKyspe3RoaXMuZGVidWcoIm1hdGNoT25lIGxvb3AiKTt2YXIgQyxNPWNlW05dLHk9dWVbeF07aWYodGhpcy5kZWJ1ZyhjZSxNLHkpLCEx''@;'; put 'put ''PT09TSlyZXR1cm4hMTtpZihNPT09SSl7dGhpcy5kZWJ1ZygiR0xPQlNUQVIiLFtjZSxNLHldKTt2YXIgcD14LFM9TisxO2lmKFM9PT1nKXtmb3IodGhpcy5kZWJ1ZygiKiogYXQgdGhlIGVuZCIpO3g8Rjt4KyspaWYoIi4iPT09dWVbeF18fCIuLiI9PT11ZVt4XXx8IWIuZG90JiYiLiI9PT11''@;'; put 'put ''ZVt4XS5jaGFyQXQoMCkpcmV0dXJuITE7cmV0dXJuITB9Zm9yKDtwPEY7KXt2YXIgUT11ZVtwXTtpZih0aGlzLmRlYnVnKCJcbmdsb2JzdGFyIHdoaWxlIix1ZSxwLGNlLFMsUSksdGhpcy5tYXRjaE9uZSh1ZS5zbGljZShwKSxjZS5zbGljZShTKSxZKSlyZXR1cm4gdGhpcy5kZWJ1ZygiZ2xv''@;'; put 'put ''YnN0YXIgZm91bmQgbWF0Y2ghIixwLEYsUSksITA7aWYoIi4iPT09UXx8Ii4uIj09PVF8fCFiLmRvdCYmIi4iPT09US5jaGFyQXQoMCkpe3RoaXMuZGVidWcoImRvdCBkZXRlY3RlZCEiLHVlLHAsY2UsUyk7YnJlYWt9dGhpcy5kZWJ1ZygiZ2xvYnN0YXIgc3dhbGxvdyBhIHNlZ21lbnQsIGFu''@;'; put 'put ''ZCBjb250aW51ZSIpLHArK31yZXR1cm4hKCFZfHwodGhpcy5kZWJ1ZygiXG4+Pj4gbm8gbWF0Y2gsIHBhcnRpYWw/Iix1ZSxwLGNlLFMpLHAhPT1GKSl9aWYoInN0cmluZyI9PXR5cGVvZiBNP3RoaXMuZGVidWcoInN0cmluZyBtYXRjaCIsTSx5LEM9eT09PU0pOihDPXkubWF0Y2goTSksdGhp''@;'; put 'put ''cy5kZWJ1ZygicGF0dGVybiBtYXRjaCIsTSx5LEMpKSwhQylyZXR1cm4hMX1pZih4PT09RiYmTj09PWcpcmV0dXJuITA7aWYoeD09PUYpcmV0dXJuIFk7aWYoTj09PWcpcmV0dXJuIHg9PT1GLTEmJiIiPT09dWVbeF07dGhyb3cgbmV3IEVycm9yKCJ3dGY/Iil9fSw0MjQ0Okg9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIEI9ZnVuY3Rpb24oTCl7cmV0dXJuIEwhPUx9O0guZXhwb3J0cz1mdW5jdGlvbihMLEspe3JldHVybiAwPT09TCYmMD09PUs/MS9MPT0xL0s6TD09PUt8fCEoIUIoTCl8fCFCKEspKX19LDYwOTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDI4OSksSj1MKDU1NTkp''@;'; put 'put ''LEk9TCg0MjQ0KSxSPUwoNTYyNCksRT1MKDIyODEpLHo9SihSKCksT2JqZWN0KTtLKHose2dldFBvbHlmaWxsOlIsaW1wbGVtZW50YXRpb246SSxzaGltOkV9KSxILmV4cG9ydHM9en0sNTYyNDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDI0NCk7SC5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6S319LDIyODE6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDU2MjQpLEo9TCg0Mjg5KTtILmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgST1LKCk7cmV0dXJuIEooT2JqZWN0LHtpczpJfSx7aXM6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzIT09SX19KSxJfX0sODk4NzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLO2lmKCFPYmplY3Qua2V5cyl7dmFyIEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxJPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsUj1MKDE0MTQpLEU9''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSx6PSFFLmNhbGwoe3RvU3RyaW5nOm51bGx9LCJ0b1N0cmluZyIpLGo9RS5jYWxsKGZ1bmN0aW9uKCl7fSwicHJvdG90eXBlIiksVj1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVy''@;'; put 'put ''dHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLEc9ZnVuY3Rpb24ocSl7dmFyIHRlPXEuY29uc3RydWN0b3I7cmV0dXJuIHRlJiZ0ZS5wcm90b3R5cGU9PT1xfSxXPXskYXBwbGljYXRpb25DYWNoZTohMCwkY29uc29sZTohMCwkZXh0ZXJu''@;'; put 'put ''YWw6ITAsJGZyYW1lOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJGZyYW1lczohMCwkaW5uZXJIZWlnaHQ6ITAsJGlubmVyV2lkdGg6ITAsJG9ubW96ZnVsbHNjcmVlbmNoYW5nZTohMCwkb25tb3pmdWxsc2NyZWVuZXJyb3I6ITAsJG91dGVySGVpZ2h0OiEwLCRvdXRlcldpZHRoOiEwLCRwYWdlWE9m''@;'; put 'put ''ZnNldDohMCwkcGFnZVlPZmZzZXQ6ITAsJHBhcmVudDohMCwkc2Nyb2xsTGVmdDohMCwkc2Nyb2xsVG9wOiEwLCRzY3JvbGxYOiEwLCRzY3JvbGxZOiEwLCRzZWxmOiEwLCR3ZWJraXRJbmRleGVkREI6ITAsJHdlYmtpdFN0b3JhZ2VJbmZvOiEwLCR3aW5kb3c6ITB9LFU9ZnVuY3Rpb24oKXtp''@;'; put 'put ''Zih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4hMTtmb3IodmFyIHEgaW4gd2luZG93KXRyeXtpZighV1siJCIrcV0mJkouY2FsbCh3aW5kb3cscSkmJm51bGwhPT13aW5kb3dbcV0mJiJvYmplY3QiPT10eXBlb2Ygd2luZG93W3FdKXRyeXtHKHdpbmRvd1txXSl9Y2F0Y2h7cmV0dXJuITB9fWNh''@;'; put 'put ''dGNoe3JldHVybiEwfXJldHVybiExfSgpO0s9ZnVuY3Rpb24ocSl7dmFyIHRlPW51bGwhPT1xJiYib2JqZWN0Ij09dHlwZW9mIHEsbmU9IltvYmplY3QgRnVuY3Rpb25dIj09PUkuY2FsbChxKSxpZT1SKHEpLGxlPXRlJiYiW29iamVjdCBTdHJpbmddIj09PUkuY2FsbChxKSxkZT1bXTtpZigh''@;'; put 'put ''dGUmJiFuZSYmIWllKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QiKTt2YXIgdWU9aiYmbmU7aWYobGUmJnEubGVuZ3RoPjAmJiFKLmNhbGwocSwwKSlmb3IodmFyIGNlPTA7Y2U8cS5sZW5ndGg7KytjZSlkZS5wdXNoKFN0cmluZyhjZSkp''@;'; put 'put ''O2lmKGllJiZxLmxlbmd0aD4wKWZvcih2YXIgWT0wO1k8cS5sZW5ndGg7KytZKWRlLnB1c2goU3RyaW5nKFkpKTtlbHNlIGZvcih2YXIgYiBpbiBxKXVlJiYicHJvdG90eXBlIj09PWJ8fCFKLmNhbGwocSxiKXx8ZGUucHVzaChTdHJpbmcoYikpO2lmKHopZm9yKHZhciB4PWZ1bmN0aW9uKEYp''@;'; put 'put ''e2lmKHR5cGVvZiB3aW5kb3c+InUifHwhVSlyZXR1cm4gRyhGKTt0cnl7cmV0dXJuIEcoRil9Y2F0Y2h7cmV0dXJuITF9fShxKSxOPTA7TjxWLmxlbmd0aDsrK04peCYmImNvbnN0cnVjdG9yIj09PVZbTl18fCFKLmNhbGwocSxWW05dKXx8ZGUucHVzaChWW05dKTtyZXR1cm4gZGV9fUguZXhw''@;'; put 'put ''b3J0cz1LfSwyMjE1OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9QXJyYXkucHJvdG90eXBlLnNsaWNlLEo9TCgxNDE0KSxJPU9iamVjdC5rZXlzLFI9ST9mdW5jdGlvbih6KXtyZXR1cm4gSSh6KX06TCg4OTg3KSxFPU9iamVjdC5rZXlzO1Iuc2hpbT1mdW5jdGlvbigpe2lmKE9iamVj''@;'; put 'put ''dC5rZXlzKXt2YXIgej1mdW5jdGlvbigpe3ZhciBqPU9iamVjdC5rZXlzKGFyZ3VtZW50cyk7cmV0dXJuIGomJmoubGVuZ3RoPT09YXJndW1lbnRzLmxlbmd0aH0oMSwyKTt6fHwoT2JqZWN0LmtleXM9ZnVuY3Rpb24oail7cmV0dXJuIEooaik/RShLLmNhbGwoaikpOkUoail9KX1lbHNlIE9i''@;'; put 'put ''amVjdC5rZXlzPVI7cmV0dXJuIE9iamVjdC5rZXlzfHxSfSxILmV4cG9ydHM9Un0sMTQxNDpIPT57InVzZSBzdHJpY3QiO3ZhciBCPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7SC5leHBvcnRzPWZ1bmN0aW9uKEwpe3ZhciBLPUIuY2FsbChMKSxKPSJbb2JqZWN0IEFyZ3VtZW50c10iPT09''@;'; put 'put ''SztyZXR1cm4gSnx8KEo9IltvYmplY3QgQXJyYXldIiE9PUsmJm51bGwhPT1MJiYib2JqZWN0Ij09dHlwZW9mIEwmJiJudW1iZXIiPT10eXBlb2YgTC5sZW5ndGgmJkwubGVuZ3RoPj0wJiYiW29iamVjdCBGdW5jdGlvbl0iPT09Qi5jYWxsKEwuY2FsbGVlKSksSn19LDc3ODooSCxCLEwpPT57''@;'; put 'put ''dmFyIEs9TCgyNDc5KTtmdW5jdGlvbiBKKFIpe3ZhciBFPWZ1bmN0aW9uKCl7cmV0dXJuIEUuY2FsbGVkP0UudmFsdWU6KEUuY2FsbGVkPSEwLEUudmFsdWU9Ui5hcHBseSh0aGlzLGFyZ3VtZW50cykpfTtyZXR1cm4gRS5jYWxsZWQ9ITEsRX1mdW5jdGlvbiBJKFIpe3ZhciBFPWZ1bmN0aW9u''@;'; put 'put ''KCl7aWYoRS5jYWxsZWQpdGhyb3cgbmV3IEVycm9yKEUub25jZUVycm9yKTtyZXR1cm4gRS5jYWxsZWQ9ITAsRS52YWx1ZT1SLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIEUub25jZUVycm9yPShSLm5hbWV8fCJGdW5jdGlvbiB3cmFwcGVkIHdpdGggYG9uY2VgIikrIiBzaG91bGRu''@;'; put 'put ''J3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIixFLmNhbGxlZD0hMSxFfUguZXhwb3J0cz1LKEopLEguZXhwb3J0cy5zdHJpY3Q9SyhJKSxKLnByb3RvPUooZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCJvbmNlIix7dmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gSih0aGlzKX0sY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwib25jZVN0cmljdCIse3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9LDc0MzU6KEgsQik9PntCLmVuZGlh''@;'; put 'put ''bm5lc3M9ZnVuY3Rpb24oKXtyZXR1cm4iTEUifSxCLmhvc3RuYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsb2NhdGlvbjwidSI/bG9jYXRpb24uaG9zdG5hbWU6IiJ9LEIubG9hZGF2Zz1mdW5jdGlvbigpe3JldHVybltdfSxCLnVwdGltZT1mdW5jdGlvbigpe3JldHVybiAwfSxCLmZy''@;'; put 'put ''ZWVtZW09ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX0sQi50b3RhbG1lbT1mdW5jdGlvbigpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfSxCLmNwdXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sQi50eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIkJyb3dzZXIifSxCLnJlbGVhc2U9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSI/bmF2aWdhdG9yLmFwcFZlcnNpb246IiJ9LEIubmV0d29ya0ludGVyZmFjZXM9Qi5nZXROZXR3b3JrSW50ZXJmYWNlcz1mdW5jdGlvbigpe3JldHVybnt9fSxCLmFyY2g9ZnVuY3Rpb24oKXtyZXR1cm4iamF2YXNjcmlwdCJ9LEIu''@;'; put 'put ''cGxhdGZvcm09ZnVuY3Rpb24oKXtyZXR1cm4iYnJvd3NlciJ9LEIudG1wZGlyPUIudG1wRGlyPWZ1bmN0aW9uKCl7cmV0dXJuIi90bXAifSxCLkVPTD0iXG4iLEIuaG9tZWRpcj1mdW5jdGlvbigpe3JldHVybiIvIn19LDI4MTg6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDk4MDkp''@;'; put 'put ''O0IuY2VydGlmaWNhdGU9TCgxOTM0KTt2YXIgSj1LLmRlZmluZSgiUlNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCks''@;'; put 'put ''dGhpcy5rZXkoInByaXZhdGVFeHBvbmVudCIpLmludCgpLHRoaXMua2V5KCJwcmltZTEiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUyIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MSIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDIiKS5pbnQoKSx0aGlzLmtleSgiY29lZmZpY2llbnQiKS5p''@;'; put 'put ''bnQoKSl9KTtCLlJTQVByaXZhdGVLZXk9Sjt2YXIgST1LLmRlZmluZSgiUlNBUHVibGljS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCkpfSk7Qi5SU0FQdWJsaWNLZXk9STt2YXIg''@;'; put 'put ''Uj1LLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShFKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pO0IuUHVibGljS2V5PVI7dmFyIEU9Sy5kZWZpbmUoIkFsZ29y''@;'; put 'put ''aXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5rZXkoIm5vbmUiKS5udWxsXygpLm9wdGlvbmFsKCksdGhpcy5rZXkoImN1cnZlIikub2JqaWQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJwYXJhbXMiKS5z''@;'; put 'put ''ZXEoKS5vYmoodGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCkpLm9wdGlvbmFsKCkpfSksej1LLmRlZmluZSgiUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0''@;'; put 'put ''aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKEUpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO0IuUHJpdmF0ZUtleT16O3ZhciBqPUsuZGVmaW5lKCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxn''@;'; put 'put ''b3JpdGhtIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImRlY3J5cHQiKS5zZXEoKS5vYmoodGhpcy5rZXkoImtkZSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJrZGVwYXJhbXMiKS5zZXEoKS5vYmoodGhpcy5rZXkoInNh''@;'; put 'put ''bHQiKS5vY3RzdHIoKSx0aGlzLmtleSgiaXRlcnMiKS5pbnQoKSkpLHRoaXMua2V5KCJjaXBoZXIiKS5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ28iKS5vYmppZCgpLHRoaXMua2V5KCJpdiIpLm9jdHN0cigpKSkpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO0Iu''@;'; put 'put ''RW5jcnlwdGVkUHJpdmF0ZUtleT1qO3ZhciBWPUsuZGVmaW5lKCJEU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCks''@;'; put 'put ''dGhpcy5rZXkoInB1Yl9rZXkiKS5pbnQoKSx0aGlzLmtleSgicHJpdl9rZXkiKS5pbnQoKSl9KTtCLkRTQVByaXZhdGVLZXk9VixCLkRTQXBhcmFtPUsuZGVmaW5lKCJEU0FwYXJhbSIsZnVuY3Rpb24oKXt0aGlzLmludCgpfSk7dmFyIEc9Sy5kZWZpbmUoIkVDUHJpdmF0ZUtleSIsZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlS2V5Iikub2N0c3RyKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShXKSx0aGlzLmtleSgicHVibGljS2V5Iikub3B0aW9uYWwoKS5l''@;'; put 'put ''eHBsaWNpdCgxKS5iaXRzdHIoKSl9KTtCLkVDUHJpdmF0ZUtleT1HO3ZhciBXPUsuZGVmaW5lKCJFQ1BhcmFtZXRlcnMiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe25hbWVkQ3VydmU6dGhpcy5vYmppZCgpfSl9KTtCLnNpZ25hdHVyZT1LLmRlZmluZSgic2lnbmF0dXJlIixmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJyIikuaW50KCksdGhpcy5rZXkoInMiKS5pbnQoKSl9KX0sMTkzNDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTgwOSksSj1LLmRlZmluZSgiVGltZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7dXRjVGltZTp0aGlzLnV0Y3RpbWUo''@;'; put 'put ''KSxnZW5lcmFsVGltZTp0aGlzLmdlbnRpbWUoKX0pfSksST1LLmRlZmluZSgiQXR0cmlidXRlVHlwZVZhbHVlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0eXBlIikub2JqaWQoKSx0aGlzLmtleSgidmFsdWUiKS5hbnkoKSl9KSxSPUsuZGVmaW5lKCJBbGdvcml0aG1J''@;'; put 'put ''ZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCkpfSksRT1LLmRlZmluZSgiU3ViamVjdFB1Ymxp''@;'; put 'put ''Y0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShSKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pLHo9Sy5kZWZpbmUoIlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXRv''@;'; put 'put ''ZihJKX0pLGo9Sy5kZWZpbmUoIlJETlNlcXVlbmNlIixmdW5jdGlvbigpe3RoaXMuc2Vxb2Yoeil9KSxWPUsuZGVmaW5lKCJOYW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtyZG5TZXF1ZW5jZTp0aGlzLnVzZShqKX0pfSksRz1LLmRlZmluZSgiVmFsaWRpdHkiLGZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5zZXEoKS5vYmoodGhpcy5rZXkoIm5vdEJlZm9yZSIpLnVzZShKKSx0aGlzLmtleSgibm90QWZ0ZXIiKS51c2UoSikpfSksVz1LLmRlZmluZSgiRXh0ZW5zaW9uIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJleHRuSUQiKS5vYmppZCgpLHRoaXMua2V5KCJjcml0aWNh''@;'; put 'put ''bCIpLmJvb2woKS5kZWYoITEpLHRoaXMua2V5KCJleHRuVmFsdWUiKS5vY3RzdHIoKSl9KSxVPUsuZGVmaW5lKCJUQlNDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmV4cGxpY2l0KDApLmludCgpLm9wdGlvbmFsKCksdGhpcy5rZXko''@;'; put 'put ''InNlcmlhbE51bWJlciIpLmludCgpLHRoaXMua2V5KCJzaWduYXR1cmUiKS51c2UoUiksdGhpcy5rZXkoImlzc3VlciIpLnVzZShWKSx0aGlzLmtleSgidmFsaWRpdHkiKS51c2UoRyksdGhpcy5rZXkoInN1YmplY3QiKS51c2UoViksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXlJbmZvIiku''@;'; put 'put ''dXNlKEUpLHRoaXMua2V5KCJpc3N1ZXJVbmlxdWVJRCIpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoInN1YmplY3RVbmlxdWVJRCIpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoImV4dGVuc2lvbnMiKS5leHBsaWNpdCgzKS5zZXFv''@;'; put 'put ''ZihXKS5vcHRpb25hbCgpKX0pLHE9Sy5kZWZpbmUoIlg1MDlDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidGJzQ2VydGlmaWNhdGUiKS51c2UoVSksdGhpcy5rZXkoInNpZ25hdHVyZUFsZ29yaXRobSIpLnVzZShSKSx0aGlzLmtleSgic2lnbmF0dXJl''@;'; put 'put ''VmFsdWUiKS5iaXRzdHIoKSl9KTtILmV4cG9ydHM9cX0sNzYzMTooSCxCLEwpPT57dmFyIEs9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXG5ccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcblxyXSsoWzAtOUEtelxuXHIrLz1dKylb''@;'; put 'put ''XG5ccl0rL20sSj0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL20sST0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxyKy89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxSPUwoMzA0OCksRT1MKDQ2OTYpLHo9TCg5''@;'; put 'put ''NTA5KS5CdWZmZXI7SC5leHBvcnRzPWZ1bmN0aW9uKGosVil7dmFyIEcsVz1qLnRvU3RyaW5nKCksVT1XLm1hdGNoKEspO2lmKFUpe3ZhciBxPSJhZXMiK1VbMV0sdGU9ei5mcm9tKFVbMl0sImhleCIpLG5lPXouZnJvbShVWzNdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0IiksaWU9''@;'; put 'put ''UihWLHRlLnNsaWNlKDAsOCkscGFyc2VJbnQoVVsxXSwxMCkpLmtleSxsZT1bXSxkZT1FLmNyZWF0ZURlY2lwaGVyaXYocSxpZSx0ZSk7bGUucHVzaChkZS51cGRhdGUobmUpKSxsZS5wdXNoKGRlLmZpbmFsKCkpLEc9ei5jb25jYXQobGUpfWVsc2V7dmFyIHVlPVcubWF0Y2goSSk7Rz16LmZy''@;'; put 'put ''b20odWVbMl0ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKX1yZXR1cm57dGFnOlcubWF0Y2goSilbMV0sZGF0YTpHfX19LDk4MDooSCxCLEwpPT57dmFyIEs9TCgyODE4KSxKPUwoMjU2MiksST1MKDc2MzEpLFI9TCg0Njk2KSxFPUwoNTYzMiksej1MKDk1MDkpLkJ1ZmZlcjtmdW5j''@;'; put 'put ''dGlvbiBqKFYpe3ZhciBHOyJvYmplY3QiIT10eXBlb2YgVnx8ei5pc0J1ZmZlcihWKXx8KEc9Vi5wYXNzcGhyYXNlLFY9Vi5rZXkpLCJzdHJpbmciPT10eXBlb2YgViYmKFY9ei5mcm9tKFYpKTt2YXIgVyxVLGllLGxlLGRlLHVlLGNlLFksYix4LE4sRixnLHE9SShWLEcpLHRlPXEudGFnLG5l''@;'; put 'put ''PXEuZGF0YTtzd2l0Y2godGUpe2Nhc2UiQ0VSVElGSUNBVEUiOlU9Sy5jZXJ0aWZpY2F0ZS5kZWNvZGUobmUsImRlciIpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvO2Nhc2UiUFVCTElDIEtFWSI6c3dpdGNoKFV8fChVPUsuUHVibGljS2V5LmRlY29kZShuZSwiZGVyIikp''@;'; put 'put ''LFc9VS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4xLjEuMSI6cmV0dXJuIEsuUlNBUHVibGljS2V5LmRlY29kZShVLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJuIFUuc3ViamVjdFBy''@;'; put 'put ''aXZhdGVLZXk9VS5zdWJqZWN0UHVibGljS2V5LHt0eXBlOiJlYyIsZGF0YTpVfTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gVS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXk9Sy5EU0FwYXJhbS5kZWNvZGUoVS5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpLHt0eXBlOiJkc2Ei''@;'; put 'put ''LGRhdGE6VS5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitXKX1jYXNlIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSI6bGU9RyxkZT0oaWU9bmU9Sy5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShuZSwiZGVyIikpLmFsZ29yaXRobS5k''@;'; put 'put ''ZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdCx1ZT1wYXJzZUludChpZS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksMTApLGNlPUpbaWUuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbigiLiIpXSxZPWllLmFsZ29yaXRobS5kZWNyeXB0''@;'; put 'put ''LmNpcGhlci5pdixiPWllLnN1YmplY3RQcml2YXRlS2V5LHg9cGFyc2VJbnQoY2Uuc3BsaXQoIi0iKVsxXSwxMCkvOCxOPUUucGJrZGYyU3luYyhsZSxkZSx1ZSx4LCJzaGExIiksRj1SLmNyZWF0ZURlY2lwaGVyaXYoY2UsTixZKSwoZz1bXSkucHVzaChGLnVwZGF0ZShiKSksZy5wdXNoKEYu''@;'; put 'put ''ZmluYWwoKSksbmU9ei5jb25jYXQoZyk7Y2FzZSJQUklWQVRFIEtFWSI6c3dpdGNoKFc9KFU9Sy5Qcml2YXRlS2V5LmRlY29kZShuZSwiZGVyIikpLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtjYXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gSy5SU0FQcml2YXRlS2V5''@;'; put 'put ''LmRlY29kZShVLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKTtjYXNlIjEuMi44NDAuMTAwNDUuMi4xIjpyZXR1cm57Y3VydmU6VS5hbGdvcml0aG0uY3VydmUscHJpdmF0ZUtleTpLLkVDUHJpdmF0ZUtleS5kZWNvZGUoVS5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIikucHJpdmF0ZUtleX07Y2Fz''@;'; put 'put ''ZSIxLjIuODQwLjEwMDQwLjQuMSI6cmV0dXJuIFUuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleT1LLkRTQXBhcmFtLmRlY29kZShVLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKSx7dHlwZToiZHNhIixwYXJhbXM6VS5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''dW5rbm93biBrZXkgaWQgIitXKX1jYXNlIlJTQSBQVUJMSUMgS0VZIjpyZXR1cm4gSy5SU0FQdWJsaWNLZXkuZGVjb2RlKG5lLCJkZXIiKTtjYXNlIlJTQSBQUklWQVRFIEtFWSI6cmV0dXJuIEsuUlNBUHJpdmF0ZUtleS5kZWNvZGUobmUsImRlciIpO2Nhc2UiRFNBIFBSSVZBVEUgS0VZIjpy''@;'; put 'put ''ZXR1cm57dHlwZToiZHNhIixwYXJhbXM6Sy5EU0FQcml2YXRlS2V5LmRlY29kZShuZSwiZGVyIil9O2Nhc2UiRUMgUFJJVkFURSBLRVkiOnJldHVybntjdXJ2ZToobmU9Sy5FQ1ByaXZhdGVLZXkuZGVjb2RlKG5lLCJkZXIiKSkucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5Om5lLnByaXZh''@;'; put 'put ''dGVLZXl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSB0eXBlICIrdGUpfX1ILmV4cG9ydHM9aixqLnNpZ25hdHVyZT1LLnNpZ25hdHVyZX0sNDA5NTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSk7ZnVuY3Rpb24gSihSKXtyZXR1cm4iLyI9PT1SLmNo''@;'; put 'put ''YXJBdCgwKX1mdW5jdGlvbiBJKFIpe3ZhciBFPS9eKFthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXStbXlxcXC9dKyk/KFtcXFwvXSk/KFtcc1xTXSo/KSQvLmV4ZWMoUiksej1FWzFdfHwiIixqPSEoIXp8fCI6Ij09PXouY2hhckF0KDEpKTtyZXR1cm4hKCFFWzJdJiYhail9SC5l''@;'; put 'put ''eHBvcnRzPSJ3aW4zMiI9PT1LLnBsYXRmb3JtP0k6SixILmV4cG9ydHMucG9zaXg9SixILmV4cG9ydHMud2luMzI9SX0sMTcyNTpIPT57SC5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEIsTCl7Qi5zdXBlcl89TCxCLnByb3RvdHlwZT1PYmplY3Qu''@;'; put 'put ''Y3JlYXRlKEwucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6QixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZnVuY3Rpb24oQixMKXtCLnN1cGVyXz1MO3ZhciBLPWZ1bmN0aW9uKCl7fTtLLnByb3RvdHlwZT1MLnByb3RvdHlwZSxCLnByb3RvdHlw''@;'; put 'put ''ZT1uZXcgSyxCLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1CfX0sMjk3NDpIPT57SC5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBCJiYib2JqZWN0Ij09dHlwZW9mIEImJiJmdW5jdGlvbiI9PXR5cGVvZiBCLmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBCLmZpbGwmJiJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBCLnJlYWRVSW50OH19LDgwNTk6KEgsQixMKT0+e3ZhciBLPUwoNDE1NSksSj1MKDUxMDgpLEk9LyVbc2RqJV0vZztCLmZvcm1hdD1mdW5jdGlvbihNKXtpZighbGUoTSkpe2Zvcih2YXIgeT1bXSxwPTA7cDxhcmd1bWVudHMubGVuZ3RoO3ArKyl5LnB1c2goeihhcmd1bWVudHNbcF0p''@;'; put 'put ''KTtyZXR1cm4geS5qb2luKCIgIil9cD0xO2Zvcih2YXIgUz1hcmd1bWVudHMsUT1TLmxlbmd0aCxyZT1TdHJpbmcoTSkucmVwbGFjZShJLGZ1bmN0aW9uKG1lKXtpZigiJSUiPT09bWUpcmV0dXJuIiUiO2lmKHA+PVEpcmV0dXJuIG1lO3N3aXRjaChtZSl7Y2FzZSIlcyI6cmV0dXJuIFN0cmlu''@;'; put 'put ''ZyhTW3ArK10pO2Nhc2UiJWQiOnJldHVybiBOdW1iZXIoU1twKytdKTtjYXNlIiVqIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFNbcCsrXSl9Y2F0Y2h7cmV0dXJuIltDaXJjdWxhcl0ifWRlZmF1bHQ6cmV0dXJuIG1lfX0pLGZlPVNbcF07cDxRO2ZlPVNbKytwXSluZShmZSl8fCFjZShm''@;'; put 'put ''ZSk/cmUrPSIgIitmZTpyZSs9IiAiK3ooZmUpO3JldHVybiByZX0sQi5kZXByZWNhdGU9ZnVuY3Rpb24oTSx5KXtpZihkZShMLmcucHJvY2VzcykpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEIuZGVwcmVjYXRlKE0seSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtpZighMD09PUsubm9EZXBy''@;'; put 'put ''ZWNhdGlvbilyZXR1cm4gTTt2YXIgcD0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighcCl7aWYoSy50aHJvd0RlcHJlY2F0aW9uKXRocm93IG5ldyBFcnJvcih5KTtLLnRyYWNlRGVwcmVjYXRpb24/Si50cmFjZSh5KTpKLmVycm9yKHkpLHA9ITB9cmV0dXJuIE0uYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfX07dmFyIFIsRT17fTtmdW5jdGlvbiB6KE0seSl7dmFyIHA9e3NlZW46W10sc3R5bGl6ZTpWfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKHAuZGVwdGg9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPj00JiYocC5jb2xvcnM9YXJndW1lbnRzWzNdKSx0ZSh5KT9wLnNo''@;'; put 'put ''b3dIaWRkZW49eTp5JiZCLl9leHRlbmQocCx5KSxkZShwLnNob3dIaWRkZW4pJiYocC5zaG93SGlkZGVuPSExKSxkZShwLmRlcHRoKSYmKHAuZGVwdGg9MiksZGUocC5jb2xvcnMpJiYocC5jb2xvcnM9ITEpLGRlKHAuY3VzdG9tSW5zcGVjdCkmJihwLmN1c3RvbUluc3BlY3Q9ITApLHAuY29s''@;'; put 'put ''b3JzJiYocC5zdHlsaXplPWopLEcocCxNLHAuZGVwdGgpfWZ1bmN0aW9uIGooTSx5KXt2YXIgcD16LnN0eWxlc1t5XTtyZXR1cm4gcD8iXHgxYlsiK3ouY29sb3JzW3BdWzBdKyJtIitNKyJceDFiWyIrei5jb2xvcnNbcF1bMV0rIm0iOk19ZnVuY3Rpb24gVihNLHkpe3JldHVybiBNfWZ1bmN0''@;'; put 'put ''aW9uIEcoTSx5LHApe2lmKE0uY3VzdG9tSW5zcGVjdCYmeSYmeCh5Lmluc3BlY3QpJiZ5Lmluc3BlY3QhPT1CLmluc3BlY3QmJigheS5jb25zdHJ1Y3Rvcnx8eS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT15KSl7dmFyIFM9eS5pbnNwZWN0KHAsTSk7cmV0dXJuIGxlKFMpfHwoUz1HKE0sUyxw''@;'; put 'put ''KSksU312YXIgUT1mdW5jdGlvbihOZSxMZSl7aWYoZGUoTGUpKXJldHVybiBOZS5zdHlsaXplKCJ1bmRlZmluZWQiLCJ1bmRlZmluZWQiKTtpZihsZShMZSkpe3ZhciBCZT0iJyIrSlNPTi5zdHJpbmdpZnkoTGUpLnJlcGxhY2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIikucmVw''@;'; put 'put ''bGFjZSgvXFwiL2csJyInKSsiJyI7cmV0dXJuIE5lLnN0eWxpemUoQmUsInN0cmluZyIpfXJldHVybiBpZShMZSk/TmUuc3R5bGl6ZSgiIitMZSwibnVtYmVyIik6dGUoTGUpP05lLnN0eWxpemUoIiIrTGUsImJvb2xlYW4iKTpuZShMZSk/TmUuc3R5bGl6ZSgibnVsbCIsIm51bGwiKTp2b2lk''@;'; put 'put ''IDB9KE0seSk7aWYoUSlyZXR1cm4gUTt2YXIgTGUscmU9T2JqZWN0LmtleXMoeSksZmU9KExlPXt9LHJlLmZvckVhY2goZnVuY3Rpb24oQmUsSGUpe0xlW0JlXT0hMH0pLExlKTtpZihNLnNob3dIaWRkZW4mJihyZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh5KSksYih5KSYmKHJlLmlu''@;'; put 'put ''ZGV4T2YoIm1lc3NhZ2UiKT49MHx8cmUuaW5kZXhPZigiZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIFcoeSk7aWYoMD09PXJlLmxlbmd0aCl7aWYoeCh5KSlyZXR1cm4gTS5zdHlsaXplKCJbRnVuY3Rpb24iKyh5Lm5hbWU/IjogIit5Lm5hbWU6IiIpKyJdIiwic3BlY2lhbCIpO2lmKHVlKHkp''@;'; put 'put ''KXJldHVybiBNLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHkpLCJyZWdleHAiKTtpZihZKHkpKXJldHVybiBNLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KSwiZGF0ZSIpO2lmKGIoeSkpcmV0dXJuIFcoeSl9dmFyIGtlLFRlPSIiLFBlPSEx''@;'; put 'put ''LEZlPVsieyIsIn0iXTtyZXR1cm4gcSh5KSYmKFBlPSEwLEZlPVsiWyIsIl0iXSkseCh5KSYmKFRlPSIgW0Z1bmN0aW9uIisoeS5uYW1lPyI6ICIreS5uYW1lOiIiKSsiXSIpLHVlKHkpJiYoVGU9IiAiK1JlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KSksWSh5KSYmKFRlPSIgIitE''@;'; put 'put ''YXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHkpKSxiKHkpJiYoVGU9IiAiK1coeSkpLDAhPT1yZS5sZW5ndGh8fFBlJiYwIT15Lmxlbmd0aD9wPDA/dWUoeSk/TS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh5KSwicmVnZXhwIik6TS5zdHlsaXplKCJbT2Jq''@;'; put 'put ''ZWN0XSIsInNwZWNpYWwiKTooTS5zZWVuLnB1c2goeSksa2U9UGU/ZnVuY3Rpb24oTmUsTGUsQmUsSGUsUWUpe2Zvcih2YXIgbXQ9W10sS2U9MCx3ZT1MZS5sZW5ndGg7S2U8d2U7KytLZSlDKExlLFN0cmluZyhLZSkpP210LnB1c2goVShOZSxMZSxCZSxIZSxTdHJpbmcoS2UpLCEwKSk6bXQu''@;'; put 'put ''cHVzaCgiIik7cmV0dXJuIFFlLmZvckVhY2goZnVuY3Rpb24oSWUpe0llLm1hdGNoKC9eXGQrJC8pfHxtdC5wdXNoKFUoTmUsTGUsQmUsSGUsSWUsITApKX0pLG10fShNLHkscCxmZSxyZSk6cmUubWFwKGZ1bmN0aW9uKE5lKXtyZXR1cm4gVShNLHkscCxmZSxOZSxQZSl9KSxNLnNlZW4ucG9w''@;'; put 'put ''KCksZnVuY3Rpb24oTmUsTGUsQmUpe3JldHVybiBOZS5yZWR1Y2UoZnVuY3Rpb24oUWUsbXQpe3JldHVybiBtdC5pbmRleE9mKCJcbiIpLFFlK210LnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csIiIpLmxlbmd0aCsxfSwwKT42MD9CZVswXSsoIiI9PT1MZT8iIjpMZSsiXG4gIikrIiAiK05l''@;'; put 'put ''LmpvaW4oIixcbiAgIikrIiAiK0JlWzFdOkJlWzBdK0xlKyIgIitOZS5qb2luKCIsICIpKyIgIitCZVsxXX0oa2UsVGUsRmUpKTpGZVswXStUZStGZVsxXX1mdW5jdGlvbiBXKE0pe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChNKSsiXSJ9ZnVuY3Rpb24gVShNLHks''@;'; put 'put ''cCxTLFEscmUpe3ZhciBmZSxtZSxrZTtpZigoa2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih5LFEpfHx7dmFsdWU6eVtRXX0pLmdldD9tZT1NLnN0eWxpemUoa2Uuc2V0PyJbR2V0dGVyL1NldHRlcl0iOiJbR2V0dGVyXSIsInNwZWNpYWwiKTprZS5zZXQmJihtZT1NLnN0eWxp''@;'; put 'put ''emUoIltTZXR0ZXJdIiwic3BlY2lhbCIpKSxDKFMsUSl8fChmZT0iWyIrUSsiXSIpLG1lfHwoTS5zZWVuLmluZGV4T2Yoa2UudmFsdWUpPDA/KG1lPW5lKHApP0coTSxrZS52YWx1ZSxudWxsKTpHKE0sa2UudmFsdWUscC0xKSkuaW5kZXhPZigiXG4iKT4tMSYmKG1lPXJlP21lLnNwbGl0KCJc''@;'; put 'put ''biIpLm1hcChmdW5jdGlvbihUZSl7cmV0dXJuIiAgIitUZX0pLmpvaW4oIlxuIikuc3Vic3RyKDIpOiJcbiIrbWUuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKFRlKXtyZXR1cm4iICAgIitUZX0pLmpvaW4oIlxuIikpOm1lPU0uc3R5bGl6ZSgiW0NpcmN1bGFyXSIsInNwZWNpYWwiKSksZGUo''@;'; put 'put ''ZmUpKXtpZihyZSYmUS5tYXRjaCgvXlxkKyQvKSlyZXR1cm4gbWU7KGZlPUpTT04uc3RyaW5naWZ5KCIiK1EpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhmZT1mZS5zdWJzdHIoMSxmZS5sZW5ndGgtMiksZmU9TS5zdHlsaXplKGZlLCJuYW1lIikpOihmZT1mZS5y''@;'; put 'put ''ZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIiksZmU9TS5zdHlsaXplKGZlLCJzdHJpbmciKSl9cmV0dXJuIGZlKyI6ICIrbWV9ZnVuY3Rpb24gcShNKXtyZXR1cm4gQXJyYXkuaXNBcnJheShNKX1mdW5jdGlvbiB0ZShNKXtyZXR1''@;'; put 'put ''cm4iYm9vbGVhbiI9PXR5cGVvZiBNfWZ1bmN0aW9uIG5lKE0pe3JldHVybiBudWxsPT09TX1mdW5jdGlvbiBpZShNKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIE19ZnVuY3Rpb24gbGUoTSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBNfWZ1bmN0aW9uIGRlKE0pe3JldHVybiB2b2lkIDA9PT1N''@;'; put 'put ''fWZ1bmN0aW9uIHVlKE0pe3JldHVybiBjZShNKSYmIltvYmplY3QgUmVnRXhwXSI9PT1OKE0pfWZ1bmN0aW9uIGNlKE0pe3JldHVybiJvYmplY3QiPT10eXBlb2YgTSYmbnVsbCE9PU19ZnVuY3Rpb24gWShNKXtyZXR1cm4gY2UoTSkmJiJbb2JqZWN0IERhdGVdIj09PU4oTSl9ZnVuY3Rpb24g''@;'; put 'put ''YihNKXtyZXR1cm4gY2UoTSkmJigiW29iamVjdCBFcnJvcl0iPT09TihNKXx8TSBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiB4KE0pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBNfWZ1bmN0aW9uIE4oTSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChNKX1mdW5j''@;'; put 'put ''dGlvbiBGKE0pe3JldHVybiBNPDEwPyIwIitNLnRvU3RyaW5nKDEwKTpNLnRvU3RyaW5nKDEwKX1CLmRlYnVnbG9nPWZ1bmN0aW9uKE0pe2lmKGRlKFIpJiYoUj1LLmVudi5OT0RFX0RFQlVHfHwiIiksTT1NLnRvVXBwZXJDYXNlKCksIUVbTV0paWYobmV3IFJlZ0V4cCgiXFxiIitNKyJcXGIi''@;'; put 'put ''LCJpIikudGVzdChSKSl7dmFyIHk9Sy5waWQ7RVtNXT1mdW5jdGlvbigpe3ZhciBwPUIuZm9ybWF0LmFwcGx5KEIsYXJndW1lbnRzKTtKLmVycm9yKCIlcyAlZDogJXMiLE0seSxwKX19ZWxzZSBFW01dPWZ1bmN0aW9uKCl7fTtyZXR1cm4gRVtNXX0sQi5pbnNwZWN0PXosei5jb2xvcnM9e2Jv''@;'; put 'put ''bGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0s''@;'; put 'put ''eWVsbG93OlszMywzOV19LHouc3R5bGVzPXtzcGVjaWFsOiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3JlZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sQi5pc0FycmF5PXEsQi5pc0Jv''@;'; put 'put ''b2xlYW49dGUsQi5pc051bGw9bmUsQi5pc051bGxPclVuZGVmaW5lZD1mdW5jdGlvbihNKXtyZXR1cm4gbnVsbD09TX0sQi5pc051bWJlcj1pZSxCLmlzU3RyaW5nPWxlLEIuaXNTeW1ib2w9ZnVuY3Rpb24oTSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBNfSxCLmlzVW5kZWZpbmVkPWRlLEIu''@;'; put 'put ''aXNSZWdFeHA9dWUsQi5pc09iamVjdD1jZSxCLmlzRGF0ZT1ZLEIuaXNFcnJvcj1iLEIuaXNGdW5jdGlvbj14LEIuaXNQcmltaXRpdmU9ZnVuY3Rpb24oTSl7cmV0dXJuIG51bGw9PT1NfHwiYm9vbGVhbiI9PXR5cGVvZiBNfHwibnVtYmVyIj09dHlwZW9mIE18fCJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''TXx8InN5bWJvbCI9PXR5cGVvZiBNfHx2b2lkIDA9PT1NfSxCLmlzQnVmZmVyPUwoMjk3NCk7dmFyIGc9WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXTtmdW5jdGlvbiBDKE0seSl7cmV0dXJuIE9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChNLHkpfUIubG9nPWZ1bmN0aW9uKCl7dmFyIE0seTtKLmxvZygiJXMgLSAlcyIsKHk9W0YoKE09bmV3IERhdGUpLmdldEhvdXJzKCkpLEYoTS5nZXRNaW51dGVzKCkpLEYoTS5nZXRTZWNvbmRzKCkpXS5qb2luKCI6IiksW00uZ2V0RGF0ZSgp''@;'; put 'put ''LGdbTS5nZXRNb250aCgpXSx5XS5qb2luKCIgIikpLEIuZm9ybWF0LmFwcGx5KEIsYXJndW1lbnRzKSl9LEIuaW5oZXJpdHM9TCgxNzI1KSxCLl9leHRlbmQ9ZnVuY3Rpb24oTSx5KXtpZigheXx8IWNlKHkpKXJldHVybiBNO2Zvcih2YXIgcD1PYmplY3Qua2V5cyh5KSxTPXAubGVuZ3RoO1Mt''@;'; put 'put ''LTspTVtwW1NdXT15W3BbU11dO3JldHVybiBNfX0sMjUyMDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj0id2luMzIiPT09Sy5wbGF0Zm9ybSxJPUwoODA1OSk7ZnVuY3Rpb24gUihpZSxsZSl7Zm9yKHZhciBkZT1bXSx1ZT0wO3VlPGllLmxlbmd0aDt1ZSsrKXt2YXIg''@;'; put 'put ''Y2U9aWVbdWVdO2NlJiYiLiIhPT1jZSYmKCIuLiI9PT1jZT9kZS5sZW5ndGgmJiIuLiIhPT1kZVtkZS5sZW5ndGgtMV0/ZGUucG9wKCk6bGUmJmRlLnB1c2goIi4uIik6ZGUucHVzaChjZSkpfXJldHVybiBkZX1mdW5jdGlvbiBFKGllKXtmb3IodmFyIGxlPWllLmxlbmd0aC0xLGRlPTA7ZGU8''@;'; put 'put ''PWxlJiYhaWVbZGVdO2RlKyspO2Zvcih2YXIgdWU9bGU7dWU+PTAmJiFpZVt1ZV07dWUtLSk7cmV0dXJuIDA9PT1kZSYmdWU9PT1sZT9pZTpkZT51ZT9bXTppZS5zbGljZShkZSx1ZSsxKX12YXIgej0vXihbYS16QS1aXTp8W1xcXC9dezJ9W15cXFwvXStbXFxcL10rW15cXFwvXSspPyhbXFxc''@;'; put 'put ''L10pPyhbXHNcU10qPykkLyxqPS9eKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXFxcL10rP3wpKFwuW14uXC9cXF0qfCkpKD86W1xcXC9dKikkLyxWPXt9O2Z1bmN0aW9uIEcoaWUpe3ZhciBsZT16LmV4ZWMoaWUpLGRlPShsZVsxXXx8IiIpKyhsZVsyXXx8IiIpLGNlPWouZXhlYyhsZVszXXx8''@;'; put 'put ''IiIpO3JldHVybltkZSxjZVsxXSxjZVsyXSxjZVszXV19ZnVuY3Rpb24gVyhpZSl7dmFyIGxlPXouZXhlYyhpZSksZGU9bGVbMV18fCIiLHVlPSEhZGUmJiI6IiE9PWRlWzFdO3JldHVybntkZXZpY2U6ZGUsaXNVbmM6dWUsaXNBYnNvbHV0ZTp1ZXx8ISFsZVsyXSx0YWlsOmxlWzNdfX1mdW5j''@;'; put 'put ''dGlvbiBVKGllKXtyZXR1cm4iXFxcXCIraWUucmVwbGFjZSgvXltcXFwvXSsvLCIiKS5yZXBsYWNlKC9bXFxcL10rL2csIlxcIil9Vi5yZXNvbHZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBpZT0iIixsZT0iIixkZT0hMSx1ZT1hcmd1bWVudHMubGVuZ3RoLTE7dWU+PS0xO3VlLS0pe3ZhciBjZTtp''@;'; put 'put ''Zih1ZT49MD9jZT1hcmd1bWVudHNbdWVdOmllPyhjZT1LLmVudlsiPSIraWVdKSYmY2Uuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKT09PWllLnRvTG93ZXJDYXNlKCkrIlxcInx8KGNlPWllKyJcXCIpOmNlPUsuY3dkKCksIUkuaXNTdHJpbmcoY2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFy''@;'; put 'put ''Z3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYoY2Upe3ZhciBZPVcoY2UpLGI9WS5kZXZpY2UseD1ZLmlzVW5jLE49WS5pc0Fic29sdXRlLEY9WS50YWlsO2lmKCghYnx8IWllfHxiLnRvTG93ZXJDYXNlKCk9PT1pZS50b0xvd2VyQ2FzZSgpKSYmKGllfHwoaWU9''@;'; put 'put ''YiksZGV8fChsZT1GKyJcXCIrbGUsZGU9TiksaWUmJmRlKSlicmVha319cmV0dXJuIHgmJihpZT1VKGllKSksaWUrKGRlPyJcXCI6IiIpKyhsZT1SKGxlLnNwbGl0KC9bXFxcL10rLyksIWRlKS5qb2luKCJcXCIpKXx8Ii4ifSxWLm5vcm1hbGl6ZT1mdW5jdGlvbihpZSl7dmFyIGxlPVcoaWUp''@;'; put 'put ''LGRlPWxlLmRldmljZSx1ZT1sZS5pc1VuYyxjZT1sZS5pc0Fic29sdXRlLFk9bGUudGFpbCxiPS9bXFxcL10kLy50ZXN0KFkpO3JldHVybihZPVIoWS5zcGxpdCgvW1xcXC9dKy8pLCFjZSkuam9pbigiXFwiKSl8fGNlfHwoWT0iLiIpLFkmJmImJihZKz0iXFwiKSx1ZSYmKGRlPVUoZGUpKSxk''@;'; put 'put ''ZSsoY2U/IlxcIjoiIikrWX0sVi5pc0Fic29sdXRlPWZ1bmN0aW9uKGllKXtyZXR1cm4gVyhpZSkuaXNBYnNvbHV0ZX0sVi5qb2luPWZ1bmN0aW9uKCl7Zm9yKHZhciBpZT1bXSxsZT0wO2xlPGFyZ3VtZW50cy5sZW5ndGg7bGUrKyl7dmFyIGRlPWFyZ3VtZW50c1tsZV07aWYoIUkuaXNTdHJp''@;'; put 'put ''bmcoZGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzIik7ZGUmJmllLnB1c2goZGUpfXZhciB1ZT1pZS5qb2luKCJcXCIpO3JldHVybi9eW1xcXC9dezJ9W15cXFwvXS8udGVzdChpZVswXSl8fCh1ZT11ZS5yZXBsYWNlKC9eW1xc''@;'; put 'put ''XC9dezIsfS8sIlxcIikpLFYubm9ybWFsaXplKHVlKX0sVi5yZWxhdGl2ZT1mdW5jdGlvbihpZSxsZSl7aWU9Vi5yZXNvbHZlKGllKSxsZT1WLnJlc29sdmUobGUpO2Zvcih2YXIgZGU9aWUudG9Mb3dlckNhc2UoKSx1ZT1sZS50b0xvd2VyQ2FzZSgpLGNlPUUobGUuc3BsaXQoIlxcIikpLFk9''@;'; put 'put ''RShkZS5zcGxpdCgiXFwiKSksYj1FKHVlLnNwbGl0KCJcXCIpKSx4PU1hdGgubWluKFkubGVuZ3RoLGIubGVuZ3RoKSxOPXgsRj0wO0Y8eDtGKyspaWYoWVtGXSE9PWJbRl0pe049RjticmVha31pZigwPT1OKXJldHVybiBsZTt2YXIgZz1bXTtmb3IoRj1OO0Y8WS5sZW5ndGg7RisrKWcucHVz''@;'; put 'put ''aCgiLi4iKTtyZXR1cm4oZz1nLmNvbmNhdChjZS5zbGljZShOKSkpLmpvaW4oIlxcIil9LFYuX21ha2VMb25nPWZ1bmN0aW9uKGllKXtpZighSS5pc1N0cmluZyhpZSkpcmV0dXJuIGllO2lmKCFpZSlyZXR1cm4iIjt2YXIgbGU9Vi5yZXNvbHZlKGllKTtyZXR1cm4vXlthLXpBLVpdXDpcXC8u''@;'; put 'put ''dGVzdChsZSk/IlxcXFw/XFwiK2xlOi9eXFxcXFtePy5dLy50ZXN0KGxlKT8iXFxcXD9cXFVOQ1xcIitsZS5zdWJzdHJpbmcoMik6aWV9LFYuZGlybmFtZT1mdW5jdGlvbihpZSl7dmFyIGxlPUcoaWUpLGRlPWxlWzBdLHVlPWxlWzFdO3JldHVybiBkZXx8dWU/KHVlJiYodWU9dWUuc3Vic3Ry''@;'; put 'put ''KDAsdWUubGVuZ3RoLTEpKSxkZSt1ZSk6Ii4ifSxWLmJhc2VuYW1lPWZ1bmN0aW9uKGllLGxlKXt2YXIgZGU9RyhpZSlbMl07cmV0dXJuIGxlJiZkZS5zdWJzdHIoLTEqbGUubGVuZ3RoKT09PWxlJiYoZGU9ZGUuc3Vic3RyKDAsZGUubGVuZ3RoLWxlLmxlbmd0aCkpLGRlfSxWLmV4dG5hbWU9''@;'; put 'put ''ZnVuY3Rpb24oaWUpe3JldHVybiBHKGllKVszXX0sVi5mb3JtYXQ9ZnVuY3Rpb24oaWUpe2lmKCFJLmlzT2JqZWN0KGllKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3BhdGhPYmplY3QnIG11c3QgYmUgYW4gb2JqZWN0LCBub3QgIit0eXBlb2YgaWUpO2lmKCFJLmlzU3RyaW5n''@;'; put 'put ''KGllLnJvb3R8fCIiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCIncGF0aE9iamVjdC5yb290JyBtdXN0IGJlIGEgc3RyaW5nIG9yIHVuZGVmaW5lZCwgbm90ICIrdHlwZW9mIGllLnJvb3QpO3ZhciBkZT1pZS5kaXIsdWU9aWUuYmFzZXx8IiI7cmV0dXJuIGRlP2RlW2RlLmxlbmd0aC0xXT09PVYu''@;'; put 'put ''c2VwP2RlK3VlOmRlK1Yuc2VwK3VlOnVlfSxWLnBhcnNlPWZ1bmN0aW9uKGllKXtpZighSS5pc1N0cmluZyhpZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoU3RyaW5nJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgIit0eXBlb2YgaWUpO3ZhciBsZT1HKGllKTtpZighbGV8''@;'; put 'put ''fDQhPT1sZS5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBwYXRoICciK2llKyInIik7cmV0dXJue3Jvb3Q6bGVbMF0sZGlyOmxlWzBdK2xlWzFdLnNsaWNlKDAsLTEpLGJhc2U6bGVbMl0sZXh0OmxlWzNdLG5hbWU6bGVbMl0uc2xpY2UoMCxsZVsyXS5sZW5ndGgtbGVbM10u''@;'; put 'put ''bGVuZ3RoKX19LFYuc2VwPSJcXCIsVi5kZWxpbWl0ZXI9IjsiO3ZhciBxPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLyx0ZT17fTtmdW5jdGlvbiBuZShpZSl7cmV0dXJuIHEuZXhlYyhpZSkuc2xpY2UoMSl9dGUucmVzb2x2''@;'; put 'put ''ZT1mdW5jdGlvbigpe2Zvcih2YXIgaWU9IiIsbGU9ITEsZGU9YXJndW1lbnRzLmxlbmd0aC0xO2RlPj0tMSYmIWxlO2RlLS0pe3ZhciB1ZT1kZT49MD9hcmd1bWVudHNbZGVdOksuY3dkKCk7aWYoIUkuaXNTdHJpbmcodWUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRo''@;'; put 'put ''LnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7dWUmJihpZT11ZSsiLyIraWUsbGU9Ii8iPT09dWVbMF0pfXJldHVybihsZT8iLyI6IiIpKyhpZT1SKGllLnNwbGl0KCIvIiksIWxlKS5qb2luKCIvIikpfHwiLiJ9LHRlLm5vcm1hbGl6ZT1mdW5jdGlvbihpZSl7dmFyIGxlPXRlLmlzQWJzb2x1''@;'; put 'put ''dGUoaWUpLGRlPWllJiYiLyI9PT1pZVtpZS5sZW5ndGgtMV07cmV0dXJuKGllPVIoaWUuc3BsaXQoIi8iKSwhbGUpLmpvaW4oIi8iKSl8fGxlfHwoaWU9Ii4iKSxpZSYmZGUmJihpZSs9Ii8iKSwobGU/Ii8iOiIiKStpZX0sdGUuaXNBYnNvbHV0ZT1mdW5jdGlvbihpZSl7cmV0dXJuIi8iPT09''@;'; put 'put ''aWUuY2hhckF0KDApfSx0ZS5qb2luPWZ1bmN0aW9uKCl7Zm9yKHZhciBpZT0iIixsZT0wO2xlPGFyZ3VtZW50cy5sZW5ndGg7bGUrKyl7dmFyIGRlPWFyZ3VtZW50c1tsZV07aWYoIUkuaXNTdHJpbmcoZGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVz''@;'; put 'put ''dCBiZSBzdHJpbmdzIik7ZGUmJihpZSs9aWU/Ii8iK2RlOmRlKX1yZXR1cm4gdGUubm9ybWFsaXplKGllKX0sdGUucmVsYXRpdmU9ZnVuY3Rpb24oaWUsbGUpe2llPXRlLnJlc29sdmUoaWUpLnN1YnN0cigxKSxsZT10ZS5yZXNvbHZlKGxlKS5zdWJzdHIoMSk7Zm9yKHZhciBkZT1FKGllLnNw''@;'; put 'put ''bGl0KCIvIikpLHVlPUUobGUuc3BsaXQoIi8iKSksY2U9TWF0aC5taW4oZGUubGVuZ3RoLHVlLmxlbmd0aCksWT1jZSxiPTA7YjxjZTtiKyspaWYoZGVbYl0hPT11ZVtiXSl7WT1iO2JyZWFrfXZhciB4PVtdO2ZvcihiPVk7YjxkZS5sZW5ndGg7YisrKXgucHVzaCgiLi4iKTtyZXR1cm4oeD14''@;'; put 'put ''LmNvbmNhdCh1ZS5zbGljZShZKSkpLmpvaW4oIi8iKX0sdGUuX21ha2VMb25nPWZ1bmN0aW9uKGllKXtyZXR1cm4gaWV9LHRlLmRpcm5hbWU9ZnVuY3Rpb24oaWUpe3ZhciBsZT1uZShpZSksZGU9bGVbMF0sdWU9bGVbMV07cmV0dXJuIGRlfHx1ZT8odWUmJih1ZT11ZS5zdWJzdHIoMCx1ZS5s''@;'; put 'put ''ZW5ndGgtMSkpLGRlK3VlKToiLiJ9LHRlLmJhc2VuYW1lPWZ1bmN0aW9uKGllLGxlKXt2YXIgZGU9bmUoaWUpWzJdO3JldHVybiBsZSYmZGUuc3Vic3RyKC0xKmxlLmxlbmd0aCk9PT1sZSYmKGRlPWRlLnN1YnN0cigwLGRlLmxlbmd0aC1sZS5sZW5ndGgpKSxkZX0sdGUuZXh0bmFtZT1mdW5j''@;'; put 'put ''dGlvbihpZSl7cmV0dXJuIG5lKGllKVszXX0sdGUuZm9ybWF0PWZ1bmN0aW9uKGllKXtpZighSS5pc09iamVjdChpZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoT2JqZWN0JyBtdXN0IGJlIGFuIG9iamVjdCwgbm90ICIrdHlwZW9mIGllKTtpZighSS5pc1N0cmluZyhp''@;'; put 'put ''ZS5yb290fHwiIikpdGhyb3cgbmV3IFR5cGVFcnJvcigiJ3BhdGhPYmplY3Qucm9vdCcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQsIG5vdCAiK3R5cGVvZiBpZS5yb290KTtyZXR1cm4oaWUuZGlyP2llLmRpcit0ZS5zZXA6IiIpKyhpZS5iYXNlfHwiIil9LHRlLnBhcnNlPWZ1bmN0''@;'; put 'put ''aW9uKGllKXtpZighSS5pc1N0cmluZyhpZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoU3RyaW5nJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgIit0eXBlb2YgaWUpO3ZhciBsZT1uZShpZSk7aWYoIWxlfHw0IT09bGUubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIklu''@;'; put 'put ''dmFsaWQgcGF0aCAnIitpZSsiJyIpO3JldHVybiBsZVsxXT1sZVsxXXx8IiIsbGVbMl09bGVbMl18fCIiLGxlWzNdPWxlWzNdfHwiIix7cm9vdDpsZVswXSxkaXI6bGVbMF0rbGVbMV0uc2xpY2UoMCwtMSksYmFzZTpsZVsyXSxleHQ6bGVbM10sbmFtZTpsZVsyXS5zbGljZSgwLGxlWzJdLmxl''@;'; put 'put ''bmd0aC1sZVszXS5sZW5ndGgpfX0sdGUuc2VwPSIvIix0ZS5kZWxpbWl0ZXI9IjoiLEguZXhwb3J0cz1KP1Y6dGUsSC5leHBvcnRzLnBvc2l4PXRlLEguZXhwb3J0cy53aW4zMj1WfSw1NjMyOihILEIsTCk9PntCLnBia2RmMj1MKDg2MzgpLEIucGJrZGYyU3luYz1MKDEyNTcpfSw4NjM4OihI''@;'; put 'put ''LEIsTCk9Pnt2YXIgSyxKLEk9TCg5NTA5KS5CdWZmZXIsUj1MKDczNTcpLEU9TCgyMzY4KSx6PUwoMTI1Nyksaj1MKDc3NzcpLFY9TC5nLmNyeXB0byYmTC5nLmNyeXB0by5zdWJ0bGUsRz17c2hhOiJTSEEtMSIsInNoYS0xIjoiU0hBLTEiLHNoYTE6IlNIQS0xIixzaGEyNTY6IlNIQS0yNTYi''@;'; put 'put ''LCJzaGEtMjU2IjoiU0hBLTI1NiIsc2hhMzg0OiJTSEEtMzg0Iiwic2hhLTM4NCI6IlNIQS0zODQiLCJzaGEtNTEyIjoiU0hBLTUxMiIsc2hhNTEyOiJTSEEtNTEyIn0sVz1bXTtmdW5jdGlvbiBVKCl7cmV0dXJuIEp8fChKPUwuZy5wcm9jZXNzJiZMLmcucHJvY2Vzcy5uZXh0VGljaz9MLmcu''@;'; put 'put ''cHJvY2Vzcy5uZXh0VGljazpMLmcucXVldWVNaWNyb3Rhc2s/TC5nLnF1ZXVlTWljcm90YXNrOkwuZy5zZXRJbW1lZGlhdGU/TC5nLnNldEltbWVkaWF0ZTpMLmcuc2V0VGltZW91dCl9ZnVuY3Rpb24gcSh0ZSxuZSxpZSxsZSxkZSl7cmV0dXJuIFYuaW1wb3J0S2V5KCJyYXciLHRlLHtuYW1l''@;'; put 'put ''OiJQQktERjIifSwhMSxbImRlcml2ZUJpdHMiXSkudGhlbihmdW5jdGlvbih1ZSl7cmV0dXJuIFYuZGVyaXZlQml0cyh7bmFtZToiUEJLREYyIixzYWx0Om5lLGl0ZXJhdGlvbnM6aWUsaGFzaDp7bmFtZTpkZX19LHVlLGxlPDwzKX0pLnRoZW4oZnVuY3Rpb24odWUpe3JldHVybiBJLmZyb20o''@;'; put 'put ''dWUpfSl9SC5leHBvcnRzPWZ1bmN0aW9uKHRlLG5lLGllLGxlLGRlLHVlKXsiZnVuY3Rpb24iPT10eXBlb2YgZGUmJih1ZT1kZSxkZT12b2lkIDApO3ZhciBZLGIsY2U9R1soZGU9ZGV8fCJzaGExIikudG9Mb3dlckNhc2UoKV07aWYoY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLmcuUHJvbWlz''@;'; put 'put ''ZSl7aWYoUihpZSxsZSksdGU9aih0ZSxFLCJQYXNzd29yZCIpLG5lPWoobmUsRSwiU2FsdCIpLCJmdW5jdGlvbiIhPXR5cGVvZiB1ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpO1k9ZnVuY3Rpb24oWSl7aWYoTC5nLnByb2Nlc3MmJiFMLmcucHJv''@;'; put 'put ''Y2Vzcy5icm93c2VyfHwhVnx8IVYuaW1wb3J0S2V5fHwhVi5kZXJpdmVCaXRzKXJldHVybiBQcm9taXNlLnJlc29sdmUoITEpO2lmKHZvaWQgMCE9PVdbWV0pcmV0dXJuIFdbWV07dmFyIGI9cShLPUt8fEkuYWxsb2MoOCksSywxMCwxMjgsWSkudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSku''@;'; put 'put ''Y2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pO3JldHVybiBXW1ldPWIsYn0oY2UpLnRoZW4oZnVuY3Rpb24oWSl7cmV0dXJuIFk/cSh0ZSxuZSxpZSxsZSxjZSk6eih0ZSxuZSxpZSxsZSxkZSl9KSxiPXVlLFkudGhlbihmdW5jdGlvbih4KXtVKCkoZnVuY3Rpb24oKXtiKG51bGwseCl9KX0s''@;'; put 'put ''ZnVuY3Rpb24oeCl7VSgpKGZ1bmN0aW9uKCl7Yih4KX0pfSl9ZWxzZSBVKCkoZnVuY3Rpb24oKXt2YXIgWTt0cnl7WT16KHRlLG5lLGllLGxlLGRlKX1jYXRjaChiKXtyZXR1cm4gdWUoYil9dWUobnVsbCxZKX0pfX0sMjM2ODooSCxCLEwpPT57dmFyIEssSj1MKDQxNTUpO0s9TC5nLnByb2Nl''@;'; put 'put ''c3MmJkwuZy5wcm9jZXNzLmJyb3dzZXI/InV0Zi04IjpMLmcucHJvY2VzcyYmTC5nLnByb2Nlc3MudmVyc2lvbj9wYXJzZUludChKLnZlcnNpb24uc3BsaXQoIi4iKVswXS5zbGljZSgxKSwxMCk+PTY/InV0Zi04IjoiYmluYXJ5IjoidXRmLTgiLEguZXhwb3J0cz1LfSw3MzU3Okg9Pnt2YXIg''@;'; put 'put ''Qj1NYXRoLnBvdygyLDMwKS0xO0guZXhwb3J0cz1mdW5jdGlvbihMLEspe2lmKCJudW1iZXIiIT10eXBlb2YgTCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRpb25zIG5vdCBhIG51bWJlciIpO2lmKEw8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQgaXRlcmF0aW9ucyIpO2lmKCJudW1i''@;'; put 'put ''ZXIiIT10eXBlb2YgSyl0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXkgbGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKEs8MHx8Sz5CfHxLIT1LKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBrZXkgbGVuZ3RoIil9fSwxMjU3OihILEIsTCk9Pnt2YXIgSz1MKDgwMjgpLEo9TCg5Nzg1KSxJPUwoOTA3''@;'; put 'put ''MiksUj1MKDk1MDkpLkJ1ZmZlcixFPUwoNzM1Nyksej1MKDIzNjgpLGo9TCg3Nzc3KSxWPVIuYWxsb2MoMTI4KSxHPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07ZnVuY3Rpb24gVyhVLHEsdGUp''@;'; put 'put ''e3ZhciBZLG5lPSJybWQxNjAiPT09KFk9VSl8fCJyaXBlbWQxNjAiPT09WT9mdW5jdGlvbiB4KE4pe3JldHVybihuZXcgSikudXBkYXRlKE4pLmRpZ2VzdCgpfToibWQ1Ij09PVk/SzpmdW5jdGlvbiBiKE4pe3JldHVybiBJKFkpLnVwZGF0ZShOKS5kaWdlc3QoKX0saWU9InNoYTUxMiI9PT1V''@;'; put 'put ''fHwic2hhMzg0Ij09PVU/MTI4OjY0O3EubGVuZ3RoPmllP3E9bmUocSk6cS5sZW5ndGg8aWUmJihxPVIuY29uY2F0KFtxLFZdLGllKSk7Zm9yKHZhciBsZT1SLmFsbG9jVW5zYWZlKGllK0dbVV0pLGRlPVIuYWxsb2NVbnNhZmUoaWUrR1tVXSksdWU9MDt1ZTxpZTt1ZSsrKWxlW3VlXT01NF5x''@;'; put 'put ''W3VlXSxkZVt1ZV09OTJecVt1ZV07dmFyIGNlPVIuYWxsb2NVbnNhZmUoaWUrdGUrNCk7bGUuY29weShjZSwwLDAsaWUpLHRoaXMuaXBhZDE9Y2UsdGhpcy5pcGFkMj1sZSx0aGlzLm9wYWQ9ZGUsdGhpcy5hbGc9VSx0aGlzLmJsb2Nrc2l6ZT1pZSx0aGlzLmhhc2g9bmUsdGhpcy5zaXplPUdb''@;'; put 'put ''VV19Vy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKFUscSl7cmV0dXJuIFUuY29weShxLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2gocSkuY29weSh0aGlzLm9wYWQsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaCh0aGlzLm9wYWQpfSxILmV4cG9ydHM9ZnVuY3Rpb24oVSxxLHRlLG5lLGllKXtF''@;'; put 'put ''KHRlLG5lKTt2YXIgbGU9bmV3IFcoaWU9aWV8fCJzaGExIixVPWooVSx6LCJQYXNzd29yZCIpLChxPWoocSx6LCJTYWx0IikpLmxlbmd0aCksZGU9Ui5hbGxvY1Vuc2FmZShuZSksdWU9Ui5hbGxvY1Vuc2FmZShxLmxlbmd0aCs0KTtxLmNvcHkodWUsMCwwLHEubGVuZ3RoKTtmb3IodmFyIGNl''@;'; put 'put ''PTAsWT1HW2llXSxiPU1hdGguY2VpbChuZS9ZKSx4PTE7eDw9Yjt4Kyspe3VlLndyaXRlVUludDMyQkUoeCxxLmxlbmd0aCk7Zm9yKHZhciBOPWxlLnJ1bih1ZSxsZS5pcGFkMSksRj1OLGc9MTtnPHRlO2crKyl7Rj1sZS5ydW4oRixsZS5pcGFkMik7Zm9yKHZhciBDPTA7QzxZO0MrKylOW0Nd''@;'; put 'put ''Xj1GW0NdfU4uY29weShkZSxjZSksY2UrPVl9cmV0dXJuIGRlfX0sNzc3NzooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXI7SC5leHBvcnRzPWZ1bmN0aW9uKEosSSxSKXtpZihLLmlzQnVmZmVyKEopKXJldHVybiBKO2lmKCJzdHJpbmciPT10eXBlb2YgSilyZXR1cm4gSy5mcm9tKEos''@;'; put 'put ''SSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KEopKXJldHVybiBLLmZyb20oSi5idWZmZXIpO3Rocm93IG5ldyBUeXBlRXJyb3IoUisiIG11c3QgYmUgYSBzdHJpbmcsIGEgQnVmZmVyLCBhIHR5cGVkIGFycmF5IG9yIGEgRGF0YVZpZXciKX19LDQxNTU6SD0+e3ZhciBCLEwsSz1ILmV4cG9ydHM9''@;'; put 'put ''e307ZnVuY3Rpb24gSigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIEkoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIFIodGUpe2lmKEI9PT1zZXRUaW1lb3V0''@;'; put 'put ''KXJldHVybiBzZXRUaW1lb3V0KHRlLDApO2lmKChCPT09Snx8IUIpJiZzZXRUaW1lb3V0KXJldHVybiBCPXNldFRpbWVvdXQsc2V0VGltZW91dCh0ZSwwKTt0cnl7cmV0dXJuIEIodGUsMCl9Y2F0Y2h7dHJ5e3JldHVybiBCLmNhbGwobnVsbCx0ZSwwKX1jYXRjaHtyZXR1cm4gQi5jYWxsKHRo''@;'; put 'put ''aXMsdGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7Qj0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Okp9Y2F0Y2h7Qj1KfXRyeXtMPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Okl9Y2F0Y2h7TD1JfX0oKTt2YXIgRSx6PVtdLGo9ITEs''@;'; put 'put ''Vj0tMTtmdW5jdGlvbiBHKCl7aiYmRSYmKGo9ITEsRS5sZW5ndGg/ej1FLmNvbmNhdCh6KTpWPS0xLHoubGVuZ3RoJiZXKCkpfWZ1bmN0aW9uIFcoKXtpZighail7dmFyIHRlPVIoRyk7aj0hMDtmb3IodmFyIG5lPXoubGVuZ3RoO25lOyl7Zm9yKEU9eix6PVtdOysrVjxuZTspRSYmRVtWXS5y''@;'; put 'put ''dW4oKTtWPS0xLG5lPXoubGVuZ3RofUU9bnVsbCxqPSExLGZ1bmN0aW9uKGllKXtpZihMPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoaWUpO2lmKChMPT09SXx8IUwpJiZjbGVhclRpbWVvdXQpcmV0dXJuIEw9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChpZSk7dHJ5e3Jl''@;'; put 'put ''dHVybiBMKGllKX1jYXRjaHt0cnl7cmV0dXJuIEwuY2FsbChudWxsLGllKX1jYXRjaHtyZXR1cm4gTC5jYWxsKHRoaXMsaWUpfX19KHRlKX19ZnVuY3Rpb24gVSh0ZSxuZSl7dGhpcy5mdW49dGUsdGhpcy5hcnJheT1uZX1mdW5jdGlvbiBxKCl7fUsubmV4dFRpY2s9ZnVuY3Rpb24odGUpe3Zh''@;'; put 'put ''ciBuZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBpZT0xO2llPGFyZ3VtZW50cy5sZW5ndGg7aWUrKyluZVtpZS0xXT1hcmd1bWVudHNbaWVdO3oucHVzaChuZXcgVSh0ZSxuZSkpLDEhPT16Lmxlbmd0aHx8anx8UihXKX0sVS5w''@;'; put 'put ''cm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sSy50aXRsZT0iYnJvd3NlciIsSy5icm93c2VyPSEwLEsuZW52PXt9LEsuYXJndj1bXSxLLnZlcnNpb249IiIsSy52ZXJzaW9ucz17fSxLLm9uPXEsSy5hZGRMaXN0ZW5lcj1xLEsub25jZT1x''@;'; put 'put ''LEsub2ZmPXEsSy5yZW1vdmVMaXN0ZW5lcj1xLEsucmVtb3ZlQWxsTGlzdGVuZXJzPXEsSy5lbWl0PXEsSy5wcmVwZW5kTGlzdGVuZXI9cSxLLnByZXBlbmRPbmNlTGlzdGVuZXI9cSxLLmxpc3RlbmVycz1mdW5jdGlvbih0ZSl7cmV0dXJuW119LEsuYmluZGluZz1mdW5jdGlvbih0ZSl7dGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxLLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sSy5jaGRpcj1mdW5jdGlvbih0ZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sSy51bWFzaz1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiAwfX0sNjI0NDooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoMzY4OSksSj17fTtKLnJ1bGVzPUwoMzcwNCkubWFwKGZ1bmN0aW9uKEkpe3JldHVybntydWxlOkksc3VmZml4OkkucmVwbGFjZSgvXihcKlwufFwhKS8sIiIpLHB1bnlTdWZmaXg6LTEsd2lsZGNhcmQ6''@;'; put 'put ''IioiPT09SS5jaGFyQXQoMCksZXhjZXB0aW9uOiIhIj09PUkuY2hhckF0KDApfX0pLEouZW5kc1dpdGg9ZnVuY3Rpb24oSSxSKXtyZXR1cm4tMSE9PUkuaW5kZXhPZihSLEkubGVuZ3RoLVIubGVuZ3RoKX0sSi5maW5kUnVsZT1mdW5jdGlvbihJKXt2YXIgUj1LLnRvQVNDSUkoSSk7cmV0dXJu''@;'; put 'put ''IEoucnVsZXMucmVkdWNlKGZ1bmN0aW9uKEUseil7cmV0dXJuLTE9PT16LnB1bnlTdWZmaXgmJih6LnB1bnlTdWZmaXg9Sy50b0FTQ0lJKHouc3VmZml4KSksSi5lbmRzV2l0aChSLCIuIit6LnB1bnlTdWZmaXgpfHxSPT09ei5wdW55U3VmZml4P3o6RX0sbnVsbCl9LEIuZXJyb3JDb2Rlcz17''@;'; put 'put ''RE9NQUlOX1RPT19TSE9SVDoiRG9tYWluIG5hbWUgdG9vIHNob3J0LiIsRE9NQUlOX1RPT19MT05HOiJEb21haW4gbmFtZSB0b28gbG9uZy4gSXQgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAyNTUgY2hhcnMuIixMQUJFTF9TVEFSVFNfV0lUSF9EQVNIOiJEb21haW4gbmFtZSBsYWJlbCBjYW4g''@;'; put 'put ''bm90IHN0YXJ0IHdpdGggYSBkYXNoLiIsTEFCRUxfRU5EU19XSVRIX0RBU0g6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBub3QgZW5kIHdpdGggYSBkYXNoLiIsTEFCRUxfVE9PX0xPTkc6IkRvbWFpbiBuYW1lIGxhYmVsIHNob3VsZCBiZSBhdCBtb3N0IDYzIGNoYXJzIGxvbmcuIixMQUJFTF9U''@;'; put 'put ''T09fU0hPUlQ6IkRvbWFpbiBuYW1lIGxhYmVsIHNob3VsZCBiZSBhdCBsZWFzdCAxIGNoYXJhY3RlciBsb25nLiIsTEFCRUxfSU5WQUxJRF9DSEFSUzoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciBkYXNoZXMuIn0sSi52YWxp''@;'; put 'put ''ZGF0ZT1mdW5jdGlvbihJKXt2YXIgUj1LLnRvQVNDSUkoSSk7aWYoUi5sZW5ndGg8MSlyZXR1cm4iRE9NQUlOX1RPT19TSE9SVCI7aWYoUi5sZW5ndGg+MjU1KXJldHVybiJET01BSU5fVE9PX0xPTkciO2Zvcih2YXIgRSx6PVIuc3BsaXQoIi4iKSxqPTA7ajx6Lmxlbmd0aDsrK2ope2lmKCEo''@;'; put 'put ''RT16W2pdKS5sZW5ndGgpcmV0dXJuIkxBQkVMX1RPT19TSE9SVCI7aWYoRS5sZW5ndGg+NjMpcmV0dXJuIkxBQkVMX1RPT19MT05HIjtpZigiLSI9PT1FLmNoYXJBdCgwKSlyZXR1cm4iTEFCRUxfU1RBUlRTX1dJVEhfREFTSCI7aWYoIi0iPT09RS5jaGFyQXQoRS5sZW5ndGgtMSkpcmV0dXJu''@;'; put 'put ''IkxBQkVMX0VORFNfV0lUSF9EQVNIIjtpZighL15bYS16MC05XC1dKyQvLnRlc3QoRSkpcmV0dXJuIkxBQkVMX0lOVkFMSURfQ0hBUlMifX0sQi5wYXJzZT1mdW5jdGlvbihJKXtpZigic3RyaW5nIiE9dHlwZW9mIEkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWluIG5hbWUgbXVzdCBiZSBh''@;'; put 'put ''IHN0cmluZy4iKTt2YXIgUj1JLnNsaWNlKDApLnRvTG93ZXJDYXNlKCk7Ii4iPT09Ui5jaGFyQXQoUi5sZW5ndGgtMSkmJihSPVIuc2xpY2UoMCxSLmxlbmd0aC0xKSk7dmFyIEU9Si52YWxpZGF0ZShSKTtpZihFKXJldHVybntpbnB1dDpJLGVycm9yOnttZXNzYWdlOkIuZXJyb3JDb2Rlc1tF''@;'; put 'put ''XSxjb2RlOkV9fTt2YXIgej17aW5wdXQ6SSx0bGQ6bnVsbCxzbGQ6bnVsbCxkb21haW46bnVsbCxzdWJkb21haW46bnVsbCxsaXN0ZWQ6ITF9LGo9Ui5zcGxpdCgiLiIpO2lmKCJsb2NhbCI9PT1qW2oubGVuZ3RoLTFdKXJldHVybiB6O3ZhciBWPWZ1bmN0aW9uKCl7cmV0dXJuL3huLS0vLnRl''@;'; put 'put ''c3QoUikmJih6LmRvbWFpbiYmKHouZG9tYWluPUsudG9BU0NJSSh6LmRvbWFpbikpLHouc3ViZG9tYWluJiYoei5zdWJkb21haW49Sy50b0FTQ0lJKHouc3ViZG9tYWluKSkpLHp9LEc9Si5maW5kUnVsZShSKTtpZighRylyZXR1cm4gai5sZW5ndGg8Mj96Oih6LnRsZD1qLnBvcCgpLHouc2xk''@;'; put 'put ''PWoucG9wKCksei5kb21haW49W3ouc2xkLHoudGxkXS5qb2luKCIuIiksai5sZW5ndGgmJih6LnN1YmRvbWFpbj1qLnBvcCgpKSxWKCkpO3oubGlzdGVkPSEwO3ZhciBXPUcuc3VmZml4LnNwbGl0KCIuIiksVT1qLnNsaWNlKDAsai5sZW5ndGgtVy5sZW5ndGgpO3JldHVybiBHLmV4Y2VwdGlv''@;'; put 'put ''biYmVS5wdXNoKFcuc2hpZnQoKSksei50bGQ9Vy5qb2luKCIuIiksVS5sZW5ndGg/KEcud2lsZGNhcmQmJihXLnVuc2hpZnQoVS5wb3AoKSksei50bGQ9Vy5qb2luKCIuIikpLFUubGVuZ3RoJiYoei5zbGQ9VS5wb3AoKSx6LmRvbWFpbj1bei5zbGQsei50bGRdLmpvaW4oIi4iKSxVLmxlbmd0''@;'; put 'put ''aCYmKHouc3ViZG9tYWluPVUuam9pbigiLiIpKSksVigpKTpWKCl9LEIuZ2V0PWZ1bmN0aW9uKEkpe3JldHVybiBJJiZCLnBhcnNlKEkpLmRvbWFpbnx8bnVsbH0sQi5pc1ZhbGlkPWZ1bmN0aW9uKEkpe3ZhciBSPUIucGFyc2UoSSk7cmV0dXJuISghUi5kb21haW58fCFSLmxpc3RlZCl9fSw3''@;'; put 'put ''OTAwOihILEIsTCk9PntCLnB1YmxpY0VuY3J5cHQ9TCg2NTU5KSxCLnByaXZhdGVEZWNyeXB0PUwoNjEzOCksQi5wcml2YXRlRW5jcnlwdD1mdW5jdGlvbihLLEope3JldHVybiBCLnB1YmxpY0VuY3J5cHQoSyxKLCEwKX0sQi5wdWJsaWNEZWNyeXB0PWZ1bmN0aW9uKEssSil7cmV0dXJuIEIu''@;'; put 'put ''cHJpdmF0ZURlY3J5cHQoSyxKLCEwKX19LDkxOTk6KEgsQixMKT0+e3ZhciBLPUwoMzQ4MiksSj1MKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBJKFIpe3ZhciBFPUouYWxsb2NVbnNhZmUoNCk7cmV0dXJuIEUud3JpdGVVSW50MzJCRShSLDApLEV9SC5leHBvcnRzPWZ1bmN0aW9uKFIsRSl7Zm9y''@;'; put 'put ''KHZhciB6LGo9Si5hbGxvYygwKSxWPTA7ai5sZW5ndGg8RTspej1JKFYrKyksaj1KLmNvbmNhdChbaixLKCJzaGExIikudXBkYXRlKFIpLnVwZGF0ZSh6KS5kaWdlc3QoKV0pO3JldHVybiBqLnNsaWNlKDAsRSl9fSwyMTQ0OmZ1bmN0aW9uKEgsQixMKXshZnVuY3Rpb24oSyxKKXsidXNlIHN0''@;'; put 'put ''cmljdCI7ZnVuY3Rpb24gSShnLEMpe2lmKCFnKXRocm93IG5ldyBFcnJvcihDfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIFIoZyxDKXtnLnN1cGVyXz1DO3ZhciBNPWZ1bmN0aW9uKCl7fTtNLnByb3RvdHlwZT1DLnByb3RvdHlwZSxnLnByb3RvdHlwZT1uZXcgTSxnLnByb3RvdHlw''@;'; put 'put ''ZS5jb25zdHJ1Y3Rvcj1nfWZ1bmN0aW9uIEUoZyxDLE0pe2lmKEUuaXNCTihnKSlyZXR1cm4gZzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09ZyYmKCJsZSIhPT1DJiYiYmUiIT09Q3x8KE09QyxDPTEwKSx0aGlzLl9p''@;'; put 'put ''bml0KGd8fDAsQ3x8MTAsTXx8ImJlIikpfXZhciB6OyJvYmplY3QiPT10eXBlb2YgSz9LLmV4cG9ydHM9RTpKLkJOPUUsRS5CTj1FLEUud29yZFNpemU9MjY7dHJ5e3o9dHlwZW9mIHdpbmRvdzwidSImJnZvaWQgMCE9PXdpbmRvdy5CdWZmZXI/d2luZG93LkJ1ZmZlcjpMKDcxMDgpLkJ1ZmZl''@;'; put 'put ''cn1jYXRjaHt9ZnVuY3Rpb24gaihnLEMpe3ZhciBNPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gTT49NjUmJk08PTcwP00tNTU6TT49OTcmJk08PTEwMj9NLTg3Ok0tNDgmMTV9ZnVuY3Rpb24gVihnLEMsTSl7dmFyIHk9aihnLE0pO3JldHVybiBNLTE+PUMmJih5fD1qKGcsTS0xKTw8NCkseX1m''@;'; put 'put ''dW5jdGlvbiBHKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9TWF0aC5taW4oZy5sZW5ndGgsTSksUT1DO1E8UztRKyspe3ZhciByZT1nLmNoYXJDb2RlQXQoUSktNDg7cCo9eSxwKz1yZT49NDk/cmUtNDkrMTA6cmU+PTE3P3JlLTE3KzEwOnJlfXJldHVybiBwfUUuaXNCTj1mdW5jdGlvbihnKXty''@;'; put 'put ''ZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1heD1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4wP2c6Q30sRS5taW49ZnVu''@;'; put 'put ''Y3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxNKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxDLE0pO2lmKCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdEFycmF5''@;'; put 'put ''KGcsQyxNKTsiaGV4Ij09PUMmJihDPTE2KSxJKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciB5PTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJih5KyssdGhpcy5uZWdhdGl2ZT0xKSx5PGcubGVuZ3RoJiYoMTY9PT1DP3RoaXMuX3BhcnNlSGV4KGcs''@;'; put 'put ''eSxNKToodGhpcy5fcGFyc2VCYXNlKGcsQyx5KSwibGUiPT09TSYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsTSkpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLE0pe2c8MCYmKHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3MTA4ODY0Pyh0aGlzLndv''@;'; put 'put ''cmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEkoZzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcxMDg4''@;'; put 'put ''NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU0mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLE0pfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxNKXtpZihJKCJudW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcubGVuZ3RoPD0wKXJldHVy''@;'; put 'put ''biB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHk9MDt5PHRoaXMubGVuZ3RoO3krKyl0aGlzLndvcmRzW3ldPTA7dmFyIHAsUyxRPTA7aWYo''@;'; put 'put ''ImJlIj09PU0pZm9yKHk9Zy5sZW5ndGgtMSxwPTA7eT49MDt5LT0zKXRoaXMud29yZHNbcF18PShTPWdbeV18Z1t5LTFdPDw4fGdbeS0yXTw8MTYpPDxRJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT1TPj4+MjYtUSY2NzEwODg2MywoUSs9MjQpPj0yNiYmKFEtPTI2LHArKyk7ZWxzZSBpZigi''@;'; put 'put ''bGUiPT09TSlmb3IoeT0wLHA9MDt5PGcubGVuZ3RoO3krPTMpdGhpcy53b3Jkc1twXXw9KFM9Z1t5XXxnW3krMV08PDh8Z1t5KzJdPDwxNik8PFEmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPVM+Pj4yNi1RJjY3MTA4ODYzLChRKz0yNCk+PTI2JiYoUS09MjYscCsrKTtyZXR1cm4gdGhpcy5z''@;'; put 'put ''dHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLE0pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09MDt2''@;'; put 'put ''YXIgcCxTPTAsUT0wO2lmKCJiZSI9PT1NKWZvcih5PWcubGVuZ3RoLTE7eT49Qzt5LT0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O2Vsc2UgZm9yKHk9KGcubGVuZ3RoLUMpJTI9PTA/''@;'; put 'put ''QysxOkM7eTxnLmxlbmd0aDt5Kz0yKXA9VihnLEMseSk8PFMsdGhpcy53b3Jkc1tRXXw9NjcxMDg4NjMmcCxTPj0xOD8oUy09MTgsdGhpcy53b3Jkc1tRKz0xXXw9cD4+PjI2KTpTKz04O3RoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihnLEMsTSl7dGhpcy53''@;'; put 'put ''b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIHk9MCxwPTE7cDw9NjcxMDg4NjM7cCo9Qyl5Kys7eS0tLHA9cC9DfDA7Zm9yKHZhciBTPWcubGVuZ3RoLU0sUT1TJXkscmU9TWF0aC5taW4oUyxTLVEpK00sZmU9MCxtZT1NO21lPHJlO21lKz15KWZlPUcoZyxtZSxtZSt5LEMpLHRoaXMu''@;'; put 'put ''aW11bG4ocCksdGhpcy53b3Jkc1swXStmZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSk7aWYoMCE9PVEpe3ZhciBrZT0xO2ZvcihmZT1HKGcsbWUsZy5sZW5ndGgsQyksbWU9MDttZTxRO21lKyspa2UqPUM7dGhpcy5pbXVsbihrZSksdGhpcy53b3Jkc1swXStm''@;'; put 'put ''ZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1mZTp0aGlzLl9pYWRkbihmZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKylnLndvcmRzW0NdPXRoaXMu''@;'; put 'put ''d29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5cGUuX2V4cGFuZD1mdW5j''@;'; put 'put ''dGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3Jl''@;'; put 'put ''dHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sRS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlz''@;'; put 'put ''LnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgVz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2''@;'; put 'put ''LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwx''@;'; put 'put ''MTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQy''@;'; put 'put ''NCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gdGUoZyxDLE0pe00ubmVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciB5PWcubGVuZ3RoK0MubGVuZ3RofDA7TS5sZW5ndGg9eSx5PXktMXwwO3ZhciBwPTB8Zy53b3Jkc1swXSxTPTB8Qy53b3Jkc1swXSxRPXAqUyxmZT1RLzY3''@;'; put 'put ''MTA4ODY0fDA7TS53b3Jkc1swXT02NzEwODg2MyZRO2Zvcih2YXIgbWU9MTttZTx5O21lKyspe2Zvcih2YXIga2U9ZmU+Pj4yNixUZT02NzEwODg2MyZmZSxQZT1NYXRoLm1pbihtZSxDLmxlbmd0aC0xKSxGZT1NYXRoLm1heCgwLG1lLWcubGVuZ3RoKzEpO0ZlPD1QZTtGZSsrKWtlKz0oUT0o''@;'; put 'put ''cD0wfGcud29yZHNbbWUtRmV8MF0pKihTPTB8Qy53b3Jkc1tGZV0pK1RlKS82NzEwODg2NHwwLFRlPTY3MTA4ODYzJlE7TS53b3Jkc1ttZV09MHxUZSxmZT0wfGtlfXJldHVybiAwIT09ZmU/TS53b3Jkc1ttZV09MHxmZTpNLmxlbmd0aC0tLE0uc3RyaXAoKX1FLnByb3RvdHlwZS50b1N0cmlu''@;'; put 'put ''Zz1mdW5jdGlvbihnLEMpe3ZhciBNO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe009IiI7Zm9yKHZhciB5PTAscD0wLFM9MDtTPHRoaXMubGVuZ3RoO1MrKyl7dmFyIFE9dGhpcy53b3Jkc1tTXSxyZT0oMTY3NzcyMTUmKFE8PHl8cCkpLnRvU3RyaW5nKDE2KTtNPTAh''@;'; put 'put ''PShwPVE+Pj4yNC15JjE2Nzc3MjE1KXx8UyE9PXRoaXMubGVuZ3RoLTE/V1s2LXJlLmxlbmd0aF0rcmUrTTpyZStNLCh5Kz0yKT49MjYmJih5LT0yNixTLS0pfWZvcigwIT09cCYmKE09cC50b1N0cmluZygxNikrTSk7TS5sZW5ndGglQyE9MDspTT0iMCIrTTtyZXR1cm4gMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmUmJihNPSItIitNKSxNfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBmZT1VW2ddLG1lPXFbZ107TT0iIjt2YXIga2U9dGhpcy5jbG9uZSgpO2ZvcihrZS5uZWdhdGl2ZT0wOyFrZS5pc1plcm8oKTspe3ZhciBUZT1rZS5tb2RuKG1lKS50b1N0cmluZyhnKTtNPShrZT1rZS5p''@;'; put 'put ''ZGl2bihtZSkpLmlzWmVybygpP1RlK006V1tmZS1UZS5sZW5ndGhdK1RlK019Zm9yKHRoaXMuaXNaZXJvKCkmJihNPSIwIitNKTtNLmxlbmd0aCVDIT0wOylNPSIwIitNO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKE09Ii0iK00pLE19SSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAy''@;'; put 'put ''IGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9NDUwMzU5OTYyNzM3MDQ5''@;'; put 'put ''Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkkoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5n''@;'; put 'put ''KDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gSSh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGcsQyl9LEUucHJvdG90''@;'; put 'put ''eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT10aGlzLmJ5dGVMZW5ndGgoKSxwPU18fE1hdGgubWF4KDEseSk7SSh5PD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksSShwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMu''@;'; put 'put ''c3RyaXAoKTt2YXIgUyxRLHJlPSJsZSI9PT1DLGZlPW5ldyBnKHApLG1lPXRoaXMuY2xvbmUoKTtpZihyZSl7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbUV09Uztmb3IoO1E8cDtRKyspZmVbUV09MH1lbHNle2ZvcihRPTA7UTxwLXk7''@;'; put 'put ''USsrKWZlW1FdPTA7Zm9yKFE9MDshbWUuaXNaZXJvKCk7USsrKVM9bWUuYW5kbG4oMjU1KSxtZS5pdXNocm4oOCksZmVbcC1RLTFdPVN9cmV0dXJuIGZlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZyl9OmZ1bmN0''@;'; put 'put ''aW9uKGcpe3ZhciBDPWcsTT0wO3JldHVybiBDPj00MDk2JiYoTSs9MTMsQz4+Pj0xMyksQz49NjQmJihNKz03LEM+Pj49NyksQz49OCYmKE0rPTQsQz4+Pj00KSxDPj0yJiYoTSs9MixDPj4+PTIpLE0rQ30sRS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcpe2lmKDA9PT1nKXJldHVy''@;'; put 'put ''biAyNjt2YXIgQz1nLE09MDtyZXR1cm4hKDgxOTEmQykmJihNKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKE0rPTcsQz4+Pj03KSwhKDE1JkMpJiYoTSs9NCxDPj4+PTQpLCEoMyZDKSYmKE0rPTIsQz4+Pj0yKSwhKDEmQykmJk0rKyxNfSxFLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAsQz0wO0M8dGhpcy5sZW5n''@;'; put 'put ''dGg7QysrKXt2YXIgTT10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1NLDI2IT09TSlicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5wcm90b3R5cGUudG9Ud29z''@;'; put 'put ''PWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZykuaWFkZG4oMSkuaW5lZygp''@;'; put 'put ''OnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPXRoaXMu''@;'; put 'put ''d29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVvcihnKX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVu''@;'; put 'put ''Z3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlzKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT10aGlzLndvcmRzW01dJmcud29yZHNbTV07cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gSSgwPT0odGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25l''@;'; put 'put ''KCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsTTt0aGlzLmxlbmd0''@;'; put 'put ''aD5nLmxlbmd0aD8oQz10aGlzLE09Zyk6KEM9ZyxNPXRoaXMpO2Zvcih2YXIgeT0wO3k8TS5sZW5ndGg7eSsrKXRoaXMud29yZHNbeV09Qy53b3Jkc1t5XV5NLndvcmRzW3ldO2lmKHRoaXMhPT1DKWZvcig7eTxDLmxlbmd0aDt5KyspdGhpcy53b3Jkc1t5XT1DLndvcmRzW3ldO3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09KHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+''@;'; put 'put ''Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhpcyl9LEUucHJvdG90eXBl''@;'; put 'put ''Lmlub3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxNPWclMjY7dGhpcy5fZXhwYW5kKEMpLE0+MCYmQy0tO2Zvcih2YXIgeT0wO3k8Qzt5KyspdGhpcy53b3Jkc1t5XT02NzEwODg2MyZ+dGhpcy53b3Jkc1t5XTtyZXR1''@;'; put 'put ''cm4gTT4wJiYodGhpcy53b3Jkc1t5XT1+dGhpcy53b3Jkc1t5XSY2NzEwODg2Mz4+MjYtTSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZyxDKXtJKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIE09Zy8yNnwwLHk9ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE0rMSksdGhpcy53b3Jkc1tNXT1DP3RoaXMud29yZHNbTV18MTw8eTp0aGlzLndvcmRzW01dJn4oMTw8eSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcp''@;'; put 'put ''e3ZhciBDLE0seTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJldHVybiBn''@;'; put 'put ''Lm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIHA9MCxTPTA7Uzx5Lmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT02NzEwODg2MyYoQz0oMHxNLndv''@;'; put 'put ''cmRzW1NdKSsoMHx5LndvcmRzW1NdKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZTPE0ubGVuZ3RoO1MrKyl0aGlzLndvcmRzW1NdPTY3MTA4ODYzJihDPSgwfE0ud29yZHNbU10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMubGVuZ3RoPU0ubGVuZ3RoLDAhPT1wKXRoaXMud29yZHNbdGhpcy5sZW5n''@;'; put 'put ''dGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE0hPT10aGlzKWZvcig7UzxNLmxlbmd0aDtTKyspdGhpcy53b3Jkc1tTXT1NLndvcmRzW1NdO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25l''@;'; put 'put ''KCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIE0seSxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztwPjA/''@;'; put 'put ''KE09dGhpcyx5PWcpOihNPWcseT10aGlzKTtmb3IodmFyIFM9MCxRPTA7UTx5Lmxlbmd0aDtRKyspUz0oQz0oMHxNLndvcmRzW1FdKS0oMHx5LndvcmRzW1FdKStTKT4+MjYsdGhpcy53b3Jkc1tRXT02NzEwODg2MyZDO2Zvcig7MCE9PVMmJlE8TS5sZW5ndGg7USsrKVM9KEM9KDB8TS53b3Jk''@;'; put 'put ''c1tRXSkrUyk+PjI2LHRoaXMud29yZHNbUV09NjcxMDg4NjMmQztpZigwPT09UyYmUTxNLmxlbmd0aCYmTSE9PXRoaXMpZm9yKDtRPE0ubGVuZ3RoO1ErKyl0aGlzLndvcmRzW1FdPU0ud29yZHNbUV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLFEpLE0hPT10aGlz''@;'; put 'put ''JiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBuZT1mdW5jdGlvbihnLEMsTSl7dmFyIHkscCxTLFE9Zy53b3JkcyxyZT1DLndvcmRzLGZlPU0ud29yZHMsbWU9MCxrZT0w''@;'; put 'put ''fFFbMF0sVGU9ODE5MSZrZSxQZT1rZT4+PjEzLEZlPTB8UVsxXSxOZT04MTkxJkZlLExlPUZlPj4+MTMsQmU9MHxRWzJdLEhlPTgxOTEmQmUsUWU9QmU+Pj4xMyxtdD0wfFFbM10sS2U9ODE5MSZtdCx3ZT1tdD4+PjEzLEllPTB8UVs0XSxPZT04MTkxJkllLGV0PUllPj4+MTMsbnQ9MHxRWzVd''@;'; put 'put ''LHFlPTgxOTEmbnQsaHQ9bnQ+Pj4xMyxFZT0wfFFbNl0sRGU9ODE5MSZFZSwkZT1FZT4+PjEzLGF0PTB8UVs3XSxjdD04MTkxJmF0LE90PWF0Pj4+MTMsUHQ9MHxRWzhdLEF0PTgxOTEmUHQsSnQ9UHQ+Pj4xMyxtbj0wfFFbOV0sTnQ9ODE5MSZtbixibj1tbj4+PjEzLEduPTB8cmVbMF0sb249''@;'; put 'put ''ODE5MSZHbiwkbj1Hbj4+PjEzLE5uPTB8cmVbMV0scHQ9ODE5MSZObixwbj1Obj4+PjEzLGhuPTB8cmVbMl0sQ3Q9ODE5MSZobixlbj1obj4+PjEzLF90PTB8cmVbM10sVnQ9ODE5MSZfdCxfbj1fdD4+PjEzLG90PTB8cmVbNF0sSXQ9ODE5MSZvdCxubj1vdD4+PjEzLER0PTB8cmVbNV0sdnQ9''@;'; put 'put ''ODE5MSZEdCxHdD1EdD4+PjEzLExuPTB8cmVbNl0senQ9ODE5MSZMbixNbj1Mbj4+PjEzLFRuPTB8cmVbN10sc249ODE5MSZUbixCbj1Ubj4+PjEzLEZuPTB8cmVbOF0scXQ9ODE5MSZGbixIbj1Gbj4+PjEzLGlpPTB8cmVbOV0sY249ODE5MSZpaSxqbj1paT4+PjEzO00ubmVnYXRpdmU9Zy5u''@;'; put 'put ''ZWdhdGl2ZV5DLm5lZ2F0aXZlLE0ubGVuZ3RoPTE5O3ZhciBYcj0obWUrKHk9TWF0aC5pbXVsKFRlLG9uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChUZSwkbikpK01hdGguaW11bChQZSxvbil8MCkpPDwxMyl8MDttZT0oKFM9TWF0aC5pbXVsKFBlLCRuKSkrKHA+Pj4xMyl8MCkrKFhy''@;'; put 'put ''Pj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE5lLG9uKSxwPShwPU1hdGguaW11bChOZSwkbikpK01hdGguaW11bChMZSxvbil8MCxTPU1hdGguaW11bChMZSwkbik7dmFyIHZpPShtZSsoeT15K01hdGguaW11bChUZSxwdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KFRlLHBuKXwwKStNYXRoLmltdWwoUGUscHQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLHBuKXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4NjMseT1NYXRoLmltdWwoSGUsb24pLHA9KHA9TWF0aC5pbXVsKEhlLCRuKSkrTWF0aC5pbXVsKFFlLG9uKXww''@;'; put 'put ''LFM9TWF0aC5pbXVsKFFlLCRuKSx5PXkrTWF0aC5pbXVsKE5lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUscG4pfDApK01hdGguaW11bChMZSxwdCl8MCxTPVMrTWF0aC5pbXVsKExlLHBuKXwwO3ZhciBFcj0obWUrKHk9eStNYXRoLmltdWwoVGUsQ3QpfDApfDApKygoODE5MSYocD0ocD1w''@;'; put 'put ''K01hdGguaW11bChUZSxlbil8MCkrTWF0aC5pbXVsKFBlLEN0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxlbil8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEtlLG9uKSxwPShwPU1hdGguaW11bChLZSwkbikpK01hdGguaW11''@;'; put 'put ''bCh3ZSxvbil8MCxTPU1hdGguaW11bCh3ZSwkbikseT15K01hdGguaW11bChIZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLHBuKXwwKStNYXRoLmltdWwoUWUscHQpfDAsUz1TK01hdGguaW11bChRZSxwbil8MCx5PXkrTWF0aC5pbXVsKE5lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUs''@;'; put 'put ''ZW4pfDApK01hdGguaW11bChMZSxDdCl8MCxTPVMrTWF0aC5pbXVsKExlLGVuKXwwO3ZhciBZaT0obWUrKHk9eStNYXRoLmltdWwoVGUsVnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxfbil8MCkrTWF0aC5pbXVsKFBlLFZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGgu''@;'; put 'put ''aW11bChQZSxfbil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE9lLG9uKSxwPShwPU1hdGguaW11bChPZSwkbikpK01hdGguaW11bChldCxvbil8MCxTPU1hdGguaW11bChldCwkbikseT15K01hdGguaW11bChLZSxwdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEtlLHBuKXwwKStNYXRoLmltdWwod2UscHQpfDAsUz1TK01hdGguaW11bCh3ZSxwbil8MCx5PXkrTWF0aC5pbXVsKEhlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsZW4pfDApK01hdGguaW11bChRZSxDdCl8MCxTPVMrTWF0aC5pbXVsKFFlLGVuKXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''TmUsVnQpfDAscD0ocD1wK01hdGguaW11bChOZSxfbil8MCkrTWF0aC5pbXVsKExlLFZ0KXwwLFM9UytNYXRoLmltdWwoTGUsX24pfDA7dmFyIEpyPShtZSsoeT15K01hdGguaW11bChUZSxJdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLG5uKXwwKStNYXRoLmltdWwoUGUs''@;'; put 'put ''SXQpfDApKTw8MTMpfDA7bWU9KChTPVMrTWF0aC5pbXVsKFBlLG5uKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwocWUsb24pLHA9KHA9TWF0aC5pbXVsKHFlLCRuKSkrTWF0aC5pbXVsKGh0LG9uKXwwLFM9TWF0aC5pbXVsKGh0LCRuKSx5PXkr''@;'; put 'put ''TWF0aC5pbXVsKE9lLHB0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UscG4pfDApK01hdGguaW11bChldCxwdCl8MCxTPVMrTWF0aC5pbXVsKGV0LHBuKXwwLHk9eStNYXRoLmltdWwoS2UsQ3QpfDAscD0ocD1wK01hdGguaW11bChLZSxlbil8MCkrTWF0aC5pbXVsKHdlLEN0KXwwLFM9UytNYXRo''@;'; put 'put ''LmltdWwod2UsZW4pfDAseT15K01hdGguaW11bChIZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLF9uKXwwKStNYXRoLmltdWwoUWUsVnQpfDAsUz1TK01hdGguaW11bChRZSxfbil8MCx5PXkrTWF0aC5pbXVsKE5lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsbm4pfDApK01hdGguaW11''@;'; put 'put ''bChMZSxJdCl8MCxTPVMrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbz0obWUrKHk9eStNYXRoLmltdWwoVGUsdnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxHdCl8MCkrTWF0aC5pbXVsKFBlLHZ0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxHdCl8MCkr''@;'; put 'put ''KHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKERlLG9uKSxwPShwPU1hdGguaW11bChEZSwkbikpK01hdGguaW11bCgkZSxvbil8MCxTPU1hdGguaW11bCgkZSwkbikseT15K01hdGguaW11bChxZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLHBuKXww''@;'; put 'put ''KStNYXRoLmltdWwoaHQscHQpfDAsUz1TK01hdGguaW11bChodCxwbil8MCx5PXkrTWF0aC5pbXVsKE9lLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsZW4pfDApK01hdGguaW11bChldCxDdCl8MCxTPVMrTWF0aC5pbXVsKGV0LGVuKXwwLHk9eStNYXRoLmltdWwoS2UsVnQpfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bChLZSxfbil8MCkrTWF0aC5pbXVsKHdlLFZ0KXwwLFM9UytNYXRoLmltdWwod2UsX24pfDAseT15K01hdGguaW11bChIZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLG5uKXwwKStNYXRoLmltdWwoUWUsSXQpfDAsUz1TK01hdGguaW11bChRZSxubil8MCx5PXkrTWF0aC5p''@;'; put 'put ''bXVsKE5lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsR3QpfDApK01hdGguaW11bChMZSx2dCl8MCxTPVMrTWF0aC5pbXVsKExlLEd0KXwwO3ZhciBCcj0obWUrKHk9eStNYXRoLmltdWwoVGUsenQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChUZSxNbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KFBlLHp0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxNbil8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGN0LG9uKSxwPShwPU1hdGguaW11bChjdCwkbikpK01hdGguaW11bChPdCxvbil8MCxTPU1hdGguaW11bChPdCwkbiks''@;'; put 'put ''eT15K01hdGguaW11bChEZSxwdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoJGUscHQpfDAsUz1TK01hdGguaW11bCgkZSxwbil8MCx5PXkrTWF0aC5pbXVsKHFlLEN0KXwwLHA9KHA9cCtNYXRoLmltdWwocWUsZW4pfDApK01hdGguaW11bChodCxDdCl8MCxTPVMr''@;'; put 'put ''TWF0aC5pbXVsKGh0LGVuKXwwLHk9eStNYXRoLmltdWwoT2UsVnQpfDAscD0ocD1wK01hdGguaW11bChPZSxfbil8MCkrTWF0aC5pbXVsKGV0LFZ0KXwwLFM9UytNYXRoLmltdWwoZXQsX24pfDAseT15K01hdGguaW11bChLZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEtlLG5uKXwwKStNYXRo''@;'; put 'put ''LmltdWwod2UsSXQpfDAsUz1TK01hdGguaW11bCh3ZSxubil8MCx5PXkrTWF0aC5pbXVsKEhlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSGUsR3QpfDApK01hdGguaW11bChRZSx2dCl8MCxTPVMrTWF0aC5pbXVsKFFlLEd0KXwwLHk9eStNYXRoLmltdWwoTmUsenQpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChOZSxNbil8MCkrTWF0aC5pbXVsKExlLHp0KXwwLFM9UytNYXRoLmltdWwoTGUsTW4pfDA7dmFyIEppPShtZSsoeT15K01hdGguaW11bChUZSxzbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFRlLEJuKXwwKStNYXRoLmltdWwoUGUsc24pfDApKTw8MTMpfDA7bWU9KChT''@;'; put 'put ''PVMrTWF0aC5pbXVsKFBlLEJuKXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoQXQsb24pLHA9KHA9TWF0aC5pbXVsKEF0LCRuKSkrTWF0aC5pbXVsKEp0LG9uKXwwLFM9TWF0aC5pbXVsKEp0LCRuKSx5PXkrTWF0aC5pbXVsKGN0LHB0KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoY3QscG4pfDApK01hdGguaW11bChPdCxwdCl8MCxTPVMrTWF0aC5pbXVsKE90LHBuKXwwLHk9eStNYXRoLmltdWwoRGUsQ3QpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkrTWF0aC5pbXVsKCRlLEN0KXwwLFM9UytNYXRoLmltdWwoJGUsZW4pfDAseT15K01h''@;'; put 'put ''dGguaW11bChxZSxWdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLF9uKXwwKStNYXRoLmltdWwoaHQsVnQpfDAsUz1TK01hdGguaW11bChodCxfbil8MCx5PXkrTWF0aC5pbXVsKE9lLEl0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2Usbm4pfDApK01hdGguaW11bChldCxJdCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKGV0LG5uKXwwLHk9eStNYXRoLmltdWwoS2UsdnQpfDAscD0ocD1wK01hdGguaW11bChLZSxHdCl8MCkrTWF0aC5pbXVsKHdlLHZ0KXwwLFM9UytNYXRoLmltdWwod2UsR3QpfDAseT15K01hdGguaW11bChIZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLE1uKXwwKStNYXRoLmltdWwo''@;'; put 'put ''UWUsenQpfDAsUz1TK01hdGguaW11bChRZSxNbil8MCx5PXkrTWF0aC5pbXVsKE5lLHNuKXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsQm4pfDApK01hdGguaW11bChMZSxzbil8MCxTPVMrTWF0aC5pbXVsKExlLEJuKXwwO3ZhciB0bz0obWUrKHk9eStNYXRoLmltdWwoVGUscXQpfDApfDApKygo''@;'; put 'put ''ODE5MSYocD0ocD1wK01hdGguaW11bChUZSxIbil8MCkrTWF0aC5pbXVsKFBlLHF0KXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxIbil8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LG9uKSxwPShwPU1hdGguaW11bChOdCwk''@;'; put 'put ''bikpK01hdGguaW11bChibixvbil8MCxTPU1hdGguaW11bChibiwkbikseT15K01hdGguaW11bChBdCxwdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LHBuKXwwKStNYXRoLmltdWwoSnQscHQpfDAsUz1TK01hdGguaW11bChKdCxwbil8MCx5PXkrTWF0aC5pbXVsKGN0LEN0KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoY3QsZW4pfDApK01hdGguaW11bChPdCxDdCl8MCxTPVMrTWF0aC5pbXVsKE90LGVuKXwwLHk9eStNYXRoLmltdWwoRGUsVnQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKCRlLFZ0KXwwLFM9UytNYXRoLmltdWwoJGUsX24pfDAseT15K01hdGguaW11''@;'; put 'put ''bChxZSxJdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLG5uKXwwKStNYXRoLmltdWwoaHQsSXQpfDAsUz1TK01hdGguaW11bChodCxubil8MCx5PXkrTWF0aC5pbXVsKE9lLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsR3QpfDApK01hdGguaW11bChldCx2dCl8MCxTPVMrTWF0aC5pbXVsKGV0''@;'; put 'put ''LEd0KXwwLHk9eStNYXRoLmltdWwoS2UsenQpfDAscD0ocD1wK01hdGguaW11bChLZSxNbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLFM9UytNYXRoLmltdWwod2UsTW4pfDAseT15K01hdGguaW11bChIZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKEhlLEJuKXwwKStNYXRoLmltdWwoUWUsc24p''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChRZSxCbil8MCx5PXkrTWF0aC5pbXVsKE5lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoTmUsSG4pfDApK01hdGguaW11bChMZSxxdCl8MCxTPVMrTWF0aC5pbXVsKExlLEhuKXwwO3ZhciBjbz0obWUrKHk9eStNYXRoLmltdWwoVGUsY24pfDApfDApKygoODE5MSYo''@;'; put 'put ''cD0ocD1wK01hdGguaW11bChUZSxqbil8MCkrTWF0aC5pbXVsKFBlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChQZSxqbil8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHB0KSxwPShwPU1hdGguaW11bChOdCxwbikpK01h''@;'; put 'put ''dGguaW11bChibixwdCl8MCxTPU1hdGguaW11bChibixwbikseT15K01hdGguaW11bChBdCxDdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LGVuKXwwKStNYXRoLmltdWwoSnQsQ3QpfDAsUz1TK01hdGguaW11bChKdCxlbil8MCx5PXkrTWF0aC5pbXVsKGN0LFZ0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoY3QsX24pfDApK01hdGguaW11bChPdCxWdCl8MCxTPVMrTWF0aC5pbXVsKE90LF9uKXwwLHk9eStNYXRoLmltdWwoRGUsSXQpfDAscD0ocD1wK01hdGguaW11bChEZSxubil8MCkrTWF0aC5pbXVsKCRlLEl0KXwwLFM9UytNYXRoLmltdWwoJGUsbm4pfDAseT15K01hdGguaW11bChxZSx2''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEd0KXwwKStNYXRoLmltdWwoaHQsdnQpfDAsUz1TK01hdGguaW11bChodCxHdCl8MCx5PXkrTWF0aC5pbXVsKE9lLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsTW4pfDApK01hdGguaW11bChldCx6dCl8MCxTPVMrTWF0aC5pbXVsKGV0LE1uKXww''@;'; put 'put ''LHk9eStNYXRoLmltdWwoS2Usc24pfDAscD0ocD1wK01hdGguaW11bChLZSxCbil8MCkrTWF0aC5pbXVsKHdlLHNuKXwwLFM9UytNYXRoLmltdWwod2UsQm4pfDAseT15K01hdGguaW11bChIZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEhlLEhuKXwwKStNYXRoLmltdWwoUWUscXQpfDAsUz1T''@;'; put 'put ''K01hdGguaW11bChRZSxIbil8MDt2YXIgbG89KG1lKyh5PXkrTWF0aC5pbXVsKE5lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTmUsam4pfDApK01hdGguaW11bChMZSxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoTGUsam4pfDApKyhwPj4+MTMpfDApKyhs''@;'; put 'put ''bz4+PjI2KXwwLGxvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxDdCkscD0ocD1NYXRoLmltdWwoTnQsZW4pKStNYXRoLmltdWwoYm4sQ3QpfDAsUz1NYXRoLmltdWwoYm4sZW4pLHk9eStNYXRoLmltdWwoQXQsVnQpfDAscD0ocD1wK01hdGguaW11bChBdCxfbil8MCkrTWF0aC5pbXVsKEp0''@;'; put 'put ''LFZ0KXwwLFM9UytNYXRoLmltdWwoSnQsX24pfDAseT15K01hdGguaW11bChjdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKGN0LG5uKXwwKStNYXRoLmltdWwoT3QsSXQpfDAsUz1TK01hdGguaW11bChPdCxubil8MCx5PXkrTWF0aC5pbXVsKERlLHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUs''@;'; put 'put ''R3QpfDApK01hdGguaW11bCgkZSx2dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEd0KXwwLHk9eStNYXRoLmltdWwocWUsenQpfDAscD0ocD1wK01hdGguaW11bChxZSxNbil8MCkrTWF0aC5pbXVsKGh0LHp0KXwwLFM9UytNYXRoLmltdWwoaHQsTW4pfDAseT15K01hdGguaW11bChPZSxzbil8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKE9lLEJuKXwwKStNYXRoLmltdWwoZXQsc24pfDAsUz1TK01hdGguaW11bChldCxCbil8MCx5PXkrTWF0aC5pbXVsKEtlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoS2UsSG4pfDApK01hdGguaW11bCh3ZSxxdCl8MCxTPVMrTWF0aC5pbXVsKHdlLEhuKXwwO3ZhciBz''@;'; put 'put ''bz0obWUrKHk9eStNYXRoLmltdWwoSGUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChIZSxqbil8MCkrTWF0aC5pbXVsKFFlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChRZSxqbil8MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3MTA4ODYzLHk9''@;'; put 'put ''TWF0aC5pbXVsKE50LFZ0KSxwPShwPU1hdGguaW11bChOdCxfbikpK01hdGguaW11bChibixWdCl8MCxTPU1hdGguaW11bChibixfbikseT15K01hdGguaW11bChBdCxJdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LG5uKXwwKStNYXRoLmltdWwoSnQsSXQpfDAsUz1TK01hdGguaW11bChKdCxu''@;'; put 'put ''bil8MCx5PXkrTWF0aC5pbXVsKGN0LHZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsR3QpfDApK01hdGguaW11bChPdCx2dCl8MCxTPVMrTWF0aC5pbXVsKE90LEd0KXwwLHk9eStNYXRoLmltdWwoRGUsenQpfDAscD0ocD1wK01hdGguaW11bChEZSxNbil8MCkrTWF0aC5pbXVsKCRlLHp0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoJGUsTW4pfDAseT15K01hdGguaW11bChxZSxzbil8MCxwPShwPXArTWF0aC5pbXVsKHFlLEJuKXwwKStNYXRoLmltdWwoaHQsc24pfDAsUz1TK01hdGguaW11bChodCxCbil8MCx5PXkrTWF0aC5pbXVsKE9lLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoT2UsSG4pfDAp''@;'; put 'put ''K01hdGguaW11bChldCxxdCl8MCxTPVMrTWF0aC5pbXVsKGV0LEhuKXwwO3ZhciBYaT0obWUrKHk9eStNYXRoLmltdWwoS2UsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChLZSxqbil8MCkrTWF0aC5pbXVsKHdlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCh3''@;'; put 'put ''ZSxqbil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LEl0KSxwPShwPU1hdGguaW11bChOdCxubikpK01hdGguaW11bChibixJdCl8MCxTPU1hdGguaW11bChibixubikseT15K01hdGguaW11bChBdCx2dCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEF0LEd0KXwwKStNYXRoLmltdWwoSnQsdnQpfDAsUz1TK01hdGguaW11bChKdCxHdCl8MCx5PXkrTWF0aC5pbXVsKGN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsTW4pfDApK01hdGguaW11bChPdCx6dCl8MCxTPVMrTWF0aC5pbXVsKE90LE1uKXwwLHk9eStNYXRoLmltdWwoRGUsc24p''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChEZSxCbil8MCkrTWF0aC5pbXVsKCRlLHNuKXwwLFM9UytNYXRoLmltdWwoJGUsQm4pfDAseT15K01hdGguaW11bChxZSxxdCl8MCxwPShwPXArTWF0aC5pbXVsKHFlLEhuKXwwKStNYXRoLmltdWwoaHQscXQpfDAsUz1TK01hdGguaW11bChodCxIbil8MDt2''@;'; put 'put ''YXIgcG89KG1lKyh5PXkrTWF0aC5pbXVsKE9lLGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT2Usam4pfDApK01hdGguaW11bChldCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoZXQsam4pfDApKyhwPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBvJj02NzEwODg2''@;'; put 'put ''Myx5PU1hdGguaW11bChOdCx2dCkscD0ocD1NYXRoLmltdWwoTnQsR3QpKStNYXRoLmltdWwoYm4sdnQpfDAsUz1NYXRoLmltdWwoYm4sR3QpLHk9eStNYXRoLmltdWwoQXQsenQpfDAscD0ocD1wK01hdGguaW11bChBdCxNbil8MCkrTWF0aC5pbXVsKEp0LHp0KXwwLFM9UytNYXRoLmltdWwo''@;'; put 'put ''SnQsTW4pfDAseT15K01hdGguaW11bChjdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKGN0LEJuKXwwKStNYXRoLmltdWwoT3Qsc24pfDAsUz1TK01hdGguaW11bChPdCxCbil8MCx5PXkrTWF0aC5pbXVsKERlLHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSG4pfDApK01hdGguaW11bCgkZSxx''@;'; put 'put ''dCl8MCxTPVMrTWF0aC5pbXVsKCRlLEhuKXwwO3ZhciBfcj0obWUrKHk9eStNYXRoLmltdWwocWUsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChxZSxqbil8MCkrTWF0aC5pbXVsKGh0LGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bChodCxqbil8MCkrKHA+Pj4x''@;'; put 'put ''Myl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHp0KSxwPShwPU1hdGguaW11bChOdCxNbikpK01hdGguaW11bChibix6dCl8MCxTPU1hdGguaW11bChibixNbikseT15K01hdGguaW11bChBdCxzbil8MCxwPShwPXArTWF0aC5pbXVsKEF0LEJuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoSnQsc24pfDAsUz1TK01hdGguaW11bChKdCxCbil8MCx5PXkrTWF0aC5pbXVsKGN0LHF0KXwwLHA9KHA9cCtNYXRoLmltdWwoY3QsSG4pfDApK01hdGguaW11bChPdCxxdCl8MCxTPVMrTWF0aC5pbXVsKE90LEhuKXwwO3ZhciBGaT0obWUrKHk9eStNYXRoLmltdWwoRGUsY24pfDAp''@;'; put 'put ''fDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSxqbil8MCkrTWF0aC5pbXVsKCRlLGNuKXwwKSk8PDEzKXwwO21lPSgoUz1TK01hdGguaW11bCgkZSxqbil8MCkrKHA+Pj4xMyl8MCkrKEZpPj4+MjYpfDAsRmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKE50LHNuKSxwPShwPU1hdGguaW11''@;'; put 'put ''bChOdCxCbikpK01hdGguaW11bChibixzbil8MCxTPU1hdGguaW11bChibixCbikseT15K01hdGguaW11bChBdCxxdCl8MCxwPShwPXArTWF0aC5pbXVsKEF0LEhuKXwwKStNYXRoLmltdWwoSnQscXQpfDAsUz1TK01hdGguaW11bChKdCxIbil8MDt2YXIgSG89KG1lKyh5PXkrTWF0aC5pbXVs''@;'; put 'put ''KGN0LGNuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoY3Qsam4pfDApK01hdGguaW11bChPdCxjbil8MCkpPDwxMyl8MDttZT0oKFM9UytNYXRoLmltdWwoT3Qsam4pfDApKyhwPj4+MTMpfDApKyhIbz4+PjI2KXwwLEhvJj02NzEwODg2Myx5PU1hdGguaW11bChOdCxxdCkscD0o''@;'; put 'put ''cD1NYXRoLmltdWwoTnQsSG4pKStNYXRoLmltdWwoYm4scXQpfDAsUz1NYXRoLmltdWwoYm4sSG4pO3ZhciBnYT0obWUrKHk9eStNYXRoLmltdWwoQXQsY24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChBdCxqbil8MCkrTWF0aC5pbXVsKEp0LGNuKXwwKSk8PDEzKXwwO21lPSgo''@;'; put 'put ''Uz1TK01hdGguaW11bChKdCxqbil8MCkrKHA+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3MTA4ODYzO3ZhciBsYT0obWUrKHk9TWF0aC5pbXVsKE50LGNuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChOdCxqbikpK01hdGguaW11bChibixjbil8MCkpPDwxMyl8MDtyZXR1cm4gbWU9''@;'; put 'put ''KChTPU1hdGguaW11bChibixqbikpKyhwPj4+MTMpfDApKyhsYT4+PjI2KXwwLGxhJj02NzEwODg2MyxmZVswXT1YcixmZVsxXT12aSxmZVsyXT1FcixmZVszXT1ZaSxmZVs0XT1KcixmZVs1XT1hbyxmZVs2XT1CcixmZVs3XT1KaSxmZVs4XT10byxmZVs5XT1jbyxmZVsxMF09bG8sZmVbMTFd''@;'; put 'put ''PXNvLGZlWzEyXT1YaSxmZVsxM109cG8sZmVbMTRdPV9yLGZlWzE1XT1GaSxmZVsxNl09SG8sZmVbMTddPWdhLGZlWzE4XT1sYSwwIT09bWUmJihmZVsxOV09bWUsTS5sZW5ndGgrKyksTX07ZnVuY3Rpb24gaWUoZyxDLE0pe3JldHVybihuZXcgbGUpLm11bHAoZyxDLE0pfWZ1bmN0aW9uIGxl''@;'; put 'put ''KGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwobmU9dGUpLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIHk9dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/bmUodGhpcyxnLEMpOnk8NjM/dGUodGhp''@;'; put 'put ''cyxnLEMpOnk8MTAyND9mdW5jdGlvbihwLFMsUSl7US5uZWdhdGl2ZT1TLm5lZ2F0aXZlXnAubmVnYXRpdmUsUS5sZW5ndGg9cC5sZW5ndGgrUy5sZW5ndGg7Zm9yKHZhciByZT0wLGZlPTAsbWU9MDttZTxRLmxlbmd0aC0xO21lKyspe3ZhciBrZT1mZTtmZT0wO2Zvcih2YXIgVGU9NjcxMDg4''@;'; put 'put ''NjMmcmUsUGU9TWF0aC5taW4obWUsUy5sZW5ndGgtMSksRmU9TWF0aC5tYXgoMCxtZS1wLmxlbmd0aCsxKTtGZTw9UGU7RmUrKyl7dmFyIExlPSgwfHAud29yZHNbbWUtRmVdKSooMHxTLndvcmRzW0ZlXSksQmU9NjcxMDg4NjMmTGU7VGU9NjcxMDg4NjMmKEJlPUJlK1RlfDApLGZlKz0oa2U9''@;'; put 'put ''KGtlPWtlKyhMZS82NzEwODg2NHwwKXwwKSsoQmU+Pj4yNil8MCk+Pj4yNixrZSY9NjcxMDg4NjN9US53b3Jkc1ttZV09VGUscmU9a2Usa2U9ZmV9cmV0dXJuIDAhPT1yZT9RLndvcmRzW21lXT1yZTpRLmxlbmd0aC0tLFEuc3RyaXAoKX0odGhpcyxnLEMpOmllKHRoaXMsZyxDKX0sbGUucHJv''@;'; put 'put ''dG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSx5PTA7eTxnO3krKylDW3ldPXRoaXMucmV2QmluKHksTSxnKTtyZXR1cm4gQ30sbGUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihnLEMsTSl7aWYo''@;'; put 'put ''MD09PWd8fGc9PT1NLTEpcmV0dXJuIGc7Zm9yKHZhciB5PTAscD0wO3A8QztwKyspeXw9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiB5fSxsZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsTSx5LHAsUyl7Zm9yKHZhciBRPTA7UTxTO1ErKyl5W1FdPUNbZ1tRXV0scFtRXT1NW2db''@;'; put 'put ''UV1dfSxsZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxNLHkscCxTKXt0aGlzLnBlcm11dGUoUyxnLEMsTSx5LHApO2Zvcih2YXIgUT0xO1E8cDtRPDw9MSlmb3IodmFyIHJlPVE8PDEsZmU9TWF0aC5jb3MoMipNYXRoLlBJL3JlKSxtZT1NYXRoLnNpbigyKk1hdGguUEkvcmUp''@;'; put 'put ''LGtlPTA7a2U8cDtrZSs9cmUpZm9yKHZhciBUZT1mZSxQZT1tZSxGZT0wO0ZlPFE7RmUrKyl7dmFyIE5lPU1ba2UrRmVdLExlPXlba2UrRmVdLEJlPU1ba2UrRmUrUV0sSGU9eVtrZStGZStRXSxRZT1UZSpCZS1QZSpIZTtIZT1UZSpIZStQZSpCZSxNW2tlK0ZlXT1OZSsoQmU9UWUpLHlba2Ur''@;'; put 'put ''RmVdPUxlK0hlLE1ba2UrRmUrUV09TmUtQmUseVtrZStGZStRXT1MZS1IZSxGZSE9PXJlJiYoUWU9ZmUqVGUtbWUqUGUsUGU9ZmUqUGUrbWUqVGUsVGU9UWUpfX0sbGUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGcsQyl7dmFyIE09MXxNYXRoLm1heChDLGcpLHk9MSZNLHA9MDtm''@;'; put 'put ''b3IoTT1NLzJ8MDtNO00+Pj49MSlwKys7cmV0dXJuIDE8PHArMSt5fSxsZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxNKXtpZighKE08PTEpKWZvcih2YXIgeT0wO3k8TS8yO3krKyl7dmFyIHA9Z1t5XTtnW3ldPWdbTS15LTFdLGdbTS15LTFdPXAscD1DW3ldLENbeV09LUNb''@;'; put 'put ''TS15LTFdLENbTS15LTFdPS1wfX0sbGUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT0wLHk9MDt5PEMvMjt5Kyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqeSsxXS9DKStNYXRoLnJvdW5kKGdbMip5XS9DKStNO2dbeV09NjcxMDg4NjMmcCxNPXA8''@;'; put 'put ''NjcxMDg4NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGxlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxNLHkpe2Zvcih2YXIgcD0wLFM9MDtTPEM7UysrKU1bMipTXT04MTkxJihwKz0wfGdbU10pLE1bMipTKzFdPTgxOTEmKHA+Pj49MTMpLHA+Pj49MTM7Zm9yKFM9MipD''@;'; put 'put ''O1M8eTsrK1MpTVtTXT0wO0koMD09PXApLEkoMD09KC04MTkyJnApKX0sbGUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxNPTA7TTxnO00rKylDW01dPTA7cmV0dXJuIEN9LGxlLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeT0y''@;'; put 'put ''KnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKHkpLFM9dGhpcy5zdHViKHkpLFE9bmV3IEFycmF5KHkpLHJlPW5ldyBBcnJheSh5KSxmZT1uZXcgQXJyYXkoeSksbWU9bmV3IEFycmF5KHkpLGtlPW5ldyBBcnJheSh5KSxUZT1uZXcgQXJyYXkoeSks''@;'; put 'put ''UGU9TS53b3JkcztQZS5sZW5ndGg9eSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxRLHkpLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLG1lLHkpLHRoaXMudHJhbnNmb3JtKFEsUyxyZSxmZSx5LHApLHRoaXMudHJhbnNmb3JtKG1lLFMsa2UsVGUseSxwKTtmb3Io''@;'; put 'put ''dmFyIEZlPTA7RmU8eTtGZSsrKXt2YXIgTmU9cmVbRmVdKmtlW0ZlXS1mZVtGZV0qVGVbRmVdO2ZlW0ZlXT1yZVtGZV0qVGVbRmVdK2ZlW0ZlXSprZVtGZV0scmVbRmVdPU5lfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShyZSxmZSx5KSx0aGlzLnRyYW5zZm9ybShyZSxmZSxQZSxTLHkscCksdGhp''@;'; put 'put ''cy5jb25qdWdhdGUoUGUsUyx5KSx0aGlzLm5vcm1hbGl6ZTEzYihQZSx5KSxNLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxNLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxNLnN0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1''@;'; put 'put ''cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLGllKHRoaXMsZyxD''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnKSxJKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLE09MDtNPHRoaXMubGVuZ3RoO00r''@;'; put 'put ''Kyl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkqZyxwPSg2NzEwODg2MyZ5KSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPXkvNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNbTV09Qyx0aGlzLmxlbmd0aCsrKSx0aGlz''@;'; put 'put ''fSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9u''@;'; put 'put ''ZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKFMpe2Zvcih2YXIgUT1uZXcgQXJyYXkoUy5iaXRMZW5ndGgoKSkscmU9MDtyZTxRLmxlbmd0aDtyZSsrKXt2YXIgbWU9cmUlMjY7UVtyZV09KFMud29yZHNbcmUvMjZ8MF0mMTw8bWUpPj4+bWV9cmV0dXJu''@;'; put 'put ''IFF9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBNPXRoaXMseT0wO3k8Qy5sZW5ndGgmJjA9PT1DW3ldO3krKyxNPU0uc3FyKCkpO2lmKCsreTxDLmxlbmd0aClmb3IodmFyIHA9TS5zcXIoKTt5PEMubGVuZ3RoO3krKyxwPXAuc3FyKCkpMCE9PUNbeV0mJihN''@;'; put 'put ''PU0ubXVsKHApKTtyZXR1cm4gTX0sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxNPWclMjYseT0oZy1NKS8yNixwPTY3MTA4ODYzPj4+MjYtTTw8MjYtTTtpZigwIT09TSl7dmFyIFM9MDtmb3IoQz0wO0M8dGhpcy5sZW5n''@;'; put 'put ''dGg7QysrKXt2YXIgUT10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1RPDxNfFMsUz1RPj4+MjYtTX1TJiYodGhpcy53b3Jkc1tDXT1TLHRoaXMubGVuZ3RoKyspfWlmKDAhPT15KXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNb''@;'; put 'put ''Qyt5XT10aGlzLndvcmRzW0NdO2ZvcihDPTA7Qzx5O0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPXl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEkoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLE0pe3ZhciB5O0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSx5PUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LFM9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLFE9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHJlPU07aWYoeS09''@;'; put 'put ''Uyx5PU1hdGgubWF4KDAseSkscmUpe2Zvcih2YXIgZmU9MDtmZTxTO2ZlKyspcmUud29yZHNbZmVdPXRoaXMud29yZHNbZmVdO3JlLmxlbmd0aD1TfWlmKDAhPT1TKWlmKHRoaXMubGVuZ3RoPlMpZm9yKHRoaXMubGVuZ3RoLT1TLGZlPTA7ZmU8dGhpcy5sZW5ndGg7ZmUrKyl0aGlzLndvcmRz''@;'; put 'put ''W2ZlXT10aGlzLndvcmRzW2ZlK1NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIG1lPTA7Zm9yKGZlPXRoaXMubGVuZ3RoLTE7ZmU+PTAmJigwIT09bWV8fGZlPj15KTtmZS0tKXt2YXIga2U9MHx0aGlzLndvcmRzW2ZlXTt0aGlzLndvcmRzW2ZlXT1tZTw8MjYtcHxr''@;'; put 'put ''ZT4+PnAsbWU9a2UmUX1yZXR1cm4gcmUmJjAhPT1tZSYmKHJlLndvcmRzW3JlLmxlbmd0aCsrXT1tZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLE0pe3JldHVybiBJ''@;'; put 'put ''KDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsTSl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJv''@;'; put 'put ''dG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBn''@;'; put 'put ''JiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9TXx8ISh0aGlzLndvcmRzW01dJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0koIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LE09KGctQykvMjY7cmV0dXJu''@;'; put 'put ''IEkoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1NP3RoaXM6KDAhPT1DJiZNKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oTSx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFd''@;'; put 'put ''Jj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gSSgibnVtYmVyIj09dHlwZW9mIGcpLEko''@;'; put 'put ''Zzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMu''@;'; put 'put ''aXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09''@;'; put 'put ''NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoSSgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGcpLEkoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMu''@;'; put 'put ''d29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0''@;'; put 'put ''cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxNKXt2YXIgeSxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtNKTt2YXIgUT0wO2Zvcih5PTA7eTxn''@;'; put 'put ''Lmxlbmd0aDt5Kyspe3A9KDB8dGhpcy53b3Jkc1t5K01dKStRO3ZhciByZT0oMHxnLndvcmRzW3ldKSpDO1E9KChwLT02NzEwODg2MyZyZSk+PjI2KS0ocmUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnB9Zm9yKDt5PHRoaXMubGVuZ3RoLU07eSsrKVE9KHA9KDB8dGhp''@;'; put 'put ''cy53b3Jkc1t5K01dKStRKT4+MjYsdGhpcy53b3Jkc1t5K01dPTY3MTA4ODYzJnA7aWYoMD09PVEpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoSSgtMT09PVEpLFE9MCx5PTA7eTx0aGlzLmxlbmd0aDt5KyspUT0ocD0tKDB8dGhpcy53b3Jkc1t5XSkrUSk+PjI2LHRoaXMud29yZHNbeV09Njcx''@;'; put 'put ''MDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgTSx5PXRoaXMuY2xvbmUoKSxwPWcsUz0wfHAud29yZHNbcC5sZW5ndGgtMV07MCE9KE09MjYtdGhpcy5fY291bnRCaXRzKFMpKSYmKHA9cC51''@;'; put 'put ''c2hsbihNKSx5Lml1c2hsbihNKSxTPTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIFEscmU9eS5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoUT1uZXcgRShudWxsKSkubGVuZ3RoPXJlKzEsUS53b3Jkcz1uZXcgQXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgZmU9MDtmZTxRLmxlbmd0''@;'; put 'put ''aDtmZSsrKVEud29yZHNbZmVdPTB9dmFyIG1lPXkuY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHJlKTswPT09bWUubmVnYXRpdmUmJih5PW1lLFEmJihRLndvcmRzW3JlXT0xKSk7Zm9yKHZhciBrZT1yZS0xO2tlPj0wO2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHx5LndvcmRzW3AubGVuZ3Ro''@;'; put 'put ''K2tlXSkrKDB8eS53b3Jkc1twLmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL1N8MCw2NzEwODg2MykseS5faXNobG5zdWJtdWwocCxUZSxrZSk7MCE9PXkubmVnYXRpdmU7KVRlLS0seS5uZWdhdGl2ZT0wLHkuX2lzaGxuc3VibXVsKHAsMSxrZSkseS5pc1plcm8oKXx8KHkubmVn''@;'; put 'put ''YXRpdmVePTEpO1EmJihRLndvcmRzW2tlXT1UZSl9cmV0dXJuIFEmJlEuc3RyaXAoKSx5LnN0cmlwKCksImRpdiIhPT1DJiYwIT09TSYmeS5pdXNocm4oTSkse2RpdjpRfHxudWxsLG1vZDp5fX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxNKXtyZXR1cm4gSSghZy5pc1plcm8o''@;'; put 'put ''KSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoeT1TLmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09''@;'; put 'put ''cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2OnksbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KFM9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJih5PVMuZGl2Lm5lZygpKSx7ZGl2OnksbW9kOlMubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0''@;'; put 'put ''aXZlPyhTPXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD1TLm1vZC5uZWcoKSxNJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OlMuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6''@;'; put 'put ''dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9k''@;'; put 'put ''bihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgeSxwLFN9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIs''@;'; put 'put ''ITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIE09''@;'; put 'put ''MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QseT1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSxTPU0uY21wKHkpO3JldHVybiBTPDB8fDE9PT1wJiYwPT09Uz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90''@;'; put 'put ''eXBlLm1vZG49ZnVuY3Rpb24oZyl7SShnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsTT0wLHk9dGhpcy5sZW5ndGgtMTt5Pj0wO3ktLSlNPShDKk0rKDB8dGhpcy53b3Jkc1t5XSkpJWc7cmV0dXJuIE19LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0koZzw9NjcxMDg4''@;'; put 'put ''NjMpO2Zvcih2YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvZ3wwLEM9eSVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHk9bmV3IEUoMSkscD1uZXcg''@;'; put 'put ''RSgwKSxTPW5ldyBFKDApLFE9bmV3IEUoMSkscmU9MDtDLmlzRXZlbigpJiZNLmlzRXZlbigpOylDLml1c2hybigxKSxNLml1c2hybigxKSwrK3JlO2Zvcih2YXIgZmU9TS5jbG9uZSgpLG1lPUMuY2xvbmUoKTshQy5pc1plcm8oKTspe2Zvcih2YXIga2U9MCxUZT0xOyEoQy53b3Jkc1swXSZU''@;'; put 'put ''ZSkmJmtlPDI2Oysra2UsVGU8PD0xKTtpZihrZT4wKWZvcihDLml1c2hybihrZSk7a2UtLSA+MDspKHkuaXNPZGQoKXx8cC5pc09kZCgpKSYmKHkuaWFkZChmZSkscC5pc3ViKG1lKSkseS5pdXNocm4oMSkscC5pdXNocm4oMSk7Zm9yKHZhciBQZT0wLEZlPTE7IShNLndvcmRzWzBdJkZlKSYm''@;'; put 'put ''UGU8MjY7KytQZSxGZTw8PTEpO2lmKFBlPjApZm9yKE0uaXVzaHJuKFBlKTtQZS0tID4wOykoUy5pc09kZCgpfHxRLmlzT2RkKCkpJiYoUy5pYWRkKGZlKSxRLmlzdWIobWUpKSxTLml1c2hybigxKSxRLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHkuaXN1YihTKSxwLmlzdWIo''@;'; put 'put ''USkpOihNLmlzdWIoQyksUy5pc3ViKHkpLFEuaXN1YihwKSl9cmV0dXJue2E6UyxiOlEsZ2NkOk0uaXVzaGxuKHJlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtJKDA9PT1nLm5lZ2F0aXZlKSxJKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLE09Zy5jbG9uZSgpO0M9MCE9PUMu''@;'; put 'put ''bmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIHkscD1uZXcgRSgxKSxTPW5ldyBFKDApLFE9TS5jbG9uZSgpO0MuY21wbigxKT4wJiZNLmNtcG4oMSk+MDspe2Zvcih2YXIgcmU9MCxmZT0xOyEoQy53b3Jkc1swXSZmZSkmJnJlPDI2OysrcmUsZmU8PD0xKTtpZihyZT4wKWZv''@;'; put 'put ''cihDLml1c2hybihyZSk7cmUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoUSkscC5pdXNocm4oMSk7Zm9yKHZhciBtZT0wLGtlPTE7IShNLndvcmRzWzBdJmtlKSYmbWU8MjY7KyttZSxrZTw8PTEpO2lmKG1lPjApZm9yKE0uaXVzaHJuKG1lKTttZS0tID4wOylTLmlzT2RkKCkmJlMuaWFkZChR''@;'; put 'put ''KSxTLml1c2hybigxKTtDLmNtcChNKT49MD8oQy5pc3ViKE0pLHAuaXN1YihTKSk6KE0uaXN1YihDKSxTLmlzdWIocCkpfXJldHVybih5PTA9PT1DLmNtcG4oMSk/cDpTKS5jbXBuKDApPDAmJnkuaWFkZChnKSx5fSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8o''@;'; put 'put ''KSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxNPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsTS5uZWdhdGl2ZT0wO2Zvcih2YXIgeT0wO0MuaXNFdmVuKCkmJk0uaXNFdmVuKCk7eSsrKUMuaXVzaHJuKDEpLE0uaXVzaHJu''@;'; put 'put ''KDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO00uaXNFdmVuKCk7KU0uaXVzaHJuKDEpO3ZhciBwPUMuY21wKE0pO2lmKHA8MCl7dmFyIFM9QztDPU0sTT1TfWVsc2UgaWYoMD09PXB8fDA9PT1NLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKE0pfXJldHVybiBNLml1''@;'; put 'put ''c2hsbih5KX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAx''@;'; put 'put ''PT0oMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7SSgibnVtYmVyIj09dHlwZW9mIGcpO3ZhciBDPWclMjYsTT0oZy1DKS8yNix5PTE8PEM7aWYodGhpcy5s''@;'; put 'put ''ZW5ndGg8PU0pcmV0dXJuIHRoaXMuX2V4cGFuZChNKzEpLHRoaXMud29yZHNbTV18PXksdGhpcztmb3IodmFyIHA9eSxTPU07MCE9PXAmJlM8dGhpcy5sZW5ndGg7UysrKXt2YXIgUT0wfHRoaXMud29yZHNbU107cD0oUSs9cCk+Pj4yNix0aGlzLndvcmRzW1NdPVEmPTY3MTA4ODYzfXJldHVy''@;'; put 'put ''biAwIT09cCYmKHRoaXMud29yZHNbU109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIgQyxNPWc8MDtpZigw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZSYmIU0pcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJk0pcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7TSYmKGc9LWcpLEkoZzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHk9MHx0aGlzLndvcmRz''@;'; put 'put ''WzBdO0M9eT09PWc/MDp5PGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2''@;'; put 'put ''ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1cm4tMTtmb3IodmFy''@;'; put 'put ''IEM9MCxNPXRoaXMubGVuZ3RoLTE7TT49MDtNLS0pe3ZhciB5PTB8dGhpcy53b3Jkc1tNXSxwPTB8Zy53b3Jkc1tNXTtpZih5IT09cCl7eTxwP0M9LTE6eT5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wbihn''@;'; put 'put ''KX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPj0wfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5wcm90b3R5cGUubHRl''@;'; put 'put ''PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlvbihnKXtyZXR1cm4g''@;'; put 'put ''bmV3IE4oZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEkoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZy5jb252ZXJ0VG8o''@;'; put 'put ''dGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''X2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBJKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGcpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkSUFkZCB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGcpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBJKHRoaXMucmVkLCJyZWRTaGwgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gSSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhp''@;'; put 'put ''cy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxnKX0sRS5wcm90b3R5''@;'; put 'put ''cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlz''@;'; put 'put ''LnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJl''@;'; put 'put ''ZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRo''@;'; put 'put ''aXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEkodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIGRlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07''@;'; put 'put ''ZnVuY3Rpb24gdWUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGNlKCl7dWUuY2FsbCh0aGlz''@;'; put 'put ''LCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBZKCl7dWUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAw''@;'; put 'put ''MDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7dWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB4KCl7dWUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBOKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1lPUN9ZWxzZSBJKGcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRl''@;'; put 'put ''ciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gRihnKXtOLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBFKDEpLml1c2hs''@;'; put 'put ''bih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0''@;'; put 'put ''aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXVlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxnfSx1ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihnKXt2YXIg''@;'; put 'put ''QyxNPWc7ZG97dGhpcy5zcGxpdChNLHRoaXMudG1wKSxDPShNPShNPXRoaXMuaW11bEsoTSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIHk9Qzx0aGlzLm4/LTE6TS51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT15PyhNLndvcmRzWzBdPTAsTS5sZW5n''@;'; put 'put ''dGg9MSk6eT4wP00uaXN1Yih0aGlzLnApOnZvaWQgMCE9PU0uc3RyaXA/TS5zdHJpcCgpOk0uX3N0cmlwKCksTX0sdWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pbXVs''@;'; put 'put ''KHRoaXMuayl9LFIoY2UsdWUpLGNlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgTT00MTk0MzAzLHk9TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8eTtwKyspQy53b3Jkc1twXT1nLndvcmRzW3BdO2lmKEMubGVuZ3RoPXksZy5sZW5ndGg8PTkpcmV0dXJuIGcud29y''@;'; put 'put ''ZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciBTPWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109UyZNLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBRPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBdPShRJk0pPDw0fFM+Pj4yMixTPVF9Zy53b3Jkc1twLTEwXT1TPj4+PTIy''@;'; put 'put ''LGcubGVuZ3RoLT0wPT09UyYmZy5sZW5ndGg+MTA/MTA6OX0sY2UucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKyl7dmFyIHk9MHxnLndv''@;'; put 'put ''cmRzW01dO2cud29yZHNbTV09NjcxMDg4NjMmKEMrPTk3Nyp5KSxDPTY0KnkrKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sUihZLHVlKSxSKGIsdWUpLFIoeCx1''@;'; put 'put ''ZSkseC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKXt2YXIgeT0xOSooMHxnLndvcmRzW01dKStDLHA9NjcxMDg4NjMmeTt5Pj4+PTI2LGcud29yZHNbTV09cCxDPXl9cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tnLmxlbmd0aCsrXT1D''@;'; put 'put ''KSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZihkZVtnXSlyZXR1cm4gZGVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBjZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgWTtlbHNlIGlmKCJwMTkyIj09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyB4fXJldHVybiBkZVtnXT1DLEN9LE4ucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0koMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQg''@;'; put 'put ''bnVtYmVycyIpfSxOLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0koMD09KGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksSShnLnJlZCYmZy5yZWQ9PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaXNaZXJvKCk/''@;'; put 'put ''Zy5jbG9uZSgpOnRoaXMubS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5hZGQoQyk7cmV0dXJuIE0uY21wKHRoaXMubSk+PTAmJk0uaXN1Yih0aGlzLm0pLE0uX2ZvcmNlUmVkKHRoaXMpfSxO''@;'; put 'put ''LnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcuaWFkZChDKTtyZXR1cm4gTS5jbXAodGhpcy5tKT49MCYmTS5pc3ViKHRoaXMubSksTX0sTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBNPWcu''@;'; put 'put ''c3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTS5fZm9yY2VSZWQodGhpcyl9LE4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIE09Zy5pc3ViKEMpO3JldHVybiBNLmNtcG4oMCk8MCYmTS5pYWRkKHRoaXMubSksTX0s''@;'; put 'put ''Ti5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVsKEMpKX0sTi5wcm90b3R5''@;'; put 'put ''cGUubXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxnLmNsb25lKCkpfSxOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRo''@;'; put 'put ''aXMubXVsKGcsZyl9LE4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihJKEMlMj09MSksMz09PUMpe3ZhciBNPXRoaXMubS5hZGQobmV3IEUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5w''@;'; put 'put ''b3coZyxNKX1mb3IodmFyIHk9dGhpcy5tLnN1Ym4oMSkscD0wOyF5LmlzWmVybygpJiYwPT09eS5hbmRsbigxKTspcCsrLHkuaXVzaHJuKDEpO0koIXkuaXNaZXJvKCkpO3ZhciBTPW5ldyBFKDEpLnRvUmVkKHRoaXMpLFE9Uy5yZWROZWcoKSxyZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSks''@;'; put 'put ''ZmU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihmZT1uZXcgRSgyKmZlKmZlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coZmUscmUpLmNtcChRKTspZmUucmVkSUFkZChRKTtmb3IodmFyIG1lPXRoaXMucG93KGZlLHkpLGtlPXRoaXMucG93KGcseS5hZGRuKDEpLml1c2hybigxKSksVGU9dGhp''@;'; put 'put ''cy5wb3coZyx5KSxQZT1wOzAhPT1UZS5jbXAoUyk7KXtmb3IodmFyIEZlPVRlLE5lPTA7MCE9PUZlLmNtcChTKTtOZSsrKUZlPUZlLnJlZFNxcigpO0koTmU8UGUpO3ZhciBMZT10aGlzLnBvdyhtZSxuZXcgRSgxKS5pdXNobG4oUGUtTmUtMSkpO2tlPWtlLnJlZE11bChMZSksbWU9TGUucmVk''@;'; put 'put ''U3FyKCksVGU9VGUucmVkTXVsKG1lKSxQZT1OZX1yZXR1cm4ga2V9LE4ucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMubmVnYXRpdmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkpOnRoaXMuaW1vZChDKX0s''@;'; put 'put ''Ti5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgxNik7TVswXT1uZXcgRSgxKS50b1JlZCh0aGlzKSxNWzFdPWc7Zm9yKHZh''@;'; put 'put ''ciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sZyk7dmFyIHA9TVswXSxTPTAsUT0wLHJlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PUMubGVuZ3RoLTE7eT49MDt5LS0pe2Zvcih2YXIgZmU9Qy53b3Jkc1t5XSxtZT1yZS0xO21lPj0wO21l''@;'; put 'put ''LS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10pLFE9MCxTPTApKTpRPTB9cmU9MjZ9cmV0dXJuIHB9LE4ucHJvdG90eXBlLmNvbnZl''@;'; put 'put ''cnRUbz1mdW5jdGlvbihnKXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LE4ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5l''@;'; put 'put ''dyBGKGcpfSxSKEYsTiksRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4g''@;'; put 'put ''Qy5yZWQ9bnVsbCxDfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgTT1nLmltdWwoQykseT1NLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0''@;'; put 'put ''aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPU0uaXN1Yih5KS5pdXNocm4odGhpcy5zaGlmdCksUz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP1M9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJihTPXAuaWFkZCh0aGlzLm0pKSxTLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUubXVs''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBNPWcubXVsKEMpLHk9TS5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkscD1NLmlzdWIo''@;'; put 'put ''eSkuaXVzaHJuKHRoaXMuc2hpZnQpLFM9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD9TPXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYoUz1wLmlhZGQodGhpcy5tKSksUy5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChn''@;'; put 'put ''Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oSD1MLm5tZChIKSx0aGlzKX0sNjEzODooSCxCLEwpPT57dmFyIEs9TCg5ODApLEo9TCg5MTk5KSxJPUwoNzg1OSksUj1MKDIxNDQpLEU9TCgzNjYzKSx6PUwoMzQ4Miksaj1MKDQ4MTgpLFY9TCg5NTA5KS5C''@;'; put 'put ''dWZmZXI7SC5leHBvcnRzPWZ1bmN0aW9uKEcsVyxVKXt2YXIgcTtxPUcucGFkZGluZz9HLnBhZGRpbmc6VT8xOjQ7dmFyIHRlLG5lPUsoRyksaWU9bmUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYoVy5sZW5ndGg+aWV8fG5ldyBSKFcpLmNtcChuZS5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoImRlY3J5cHRpb24gZXJyb3IiKTt0ZT1VP2oobmV3IFIoVyksbmUpOkUoVyxuZSk7dmFyIGxlPVYuYWxsb2MoaWUtdGUubGVuZ3RoKTtpZih0ZT1WLmNvbmNhdChbbGUsdGVdLGllKSw0PT09cSlyZXR1cm4gZnVuY3Rpb24oZGUsdWUpe3ZhciBjZT1kZS5tb2R1bHVzLmJ5dGVMZW5ndGgo''@;'; put 'put ''KSxZPXooInNoYTEiKS51cGRhdGUoVi5hbGxvYygwKSkuZGlnZXN0KCksYj1ZLmxlbmd0aDtpZigwIT09dWVbMF0pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIHg9dWUuc2xpY2UoMSxiKzEpLE49dWUuc2xpY2UoYisxKSxGPUkoeCxKKE4sYikpLGc9SShOLEooRixj''@;'; put 'put ''ZS1iLTEpKTtpZihmdW5jdGlvbihNLHkpe009Vi5mcm9tKE0pLHk9Vi5mcm9tKHkpO3ZhciBwPTAsUz1NLmxlbmd0aDtNLmxlbmd0aCE9PXkubGVuZ3RoJiYocCsrLFM9TWF0aC5taW4oTS5sZW5ndGgseS5sZW5ndGgpKTtmb3IodmFyIFE9LTE7KytRPFM7KXArPU1bUV1eeVtRXTtyZXR1cm4g''@;'; put 'put ''cH0oWSxnLnNsaWNlKDAsYikpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgQz1iOzA9PT1nW0NdOylDKys7aWYoMSE9PWdbQysrXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gZy5zbGljZShDKX0obmUsdGUpO2lmKDE9PT1x''@;'; put 'put ''KXJldHVybiBmdW5jdGlvbihkZSx1ZSxjZSl7Zm9yKHZhciBZPXVlLnNsaWNlKDAsMiksYj0yLHg9MDswIT09dWVbYisrXTspaWYoYj49dWUubGVuZ3RoKXt4Kys7YnJlYWt9dmFyIE49dWUuc2xpY2UoMixiLTEpO2lmKCgiMDAwMiIhPT1ZLnRvU3RyaW5nKCJoZXgiKSYmIWNlfHwiMDAwMSIh''@;'; put 'put ''PT1ZLnRvU3RyaW5nKCJoZXgiKSYmY2UpJiZ4KyssTi5sZW5ndGg8OCYmeCsrLHgpdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIHVlLnNsaWNlKGIpfSgwLHRlLFUpO2lmKDM9PT1xKXJldHVybiB0ZTt0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIp''@;'; put 'put ''fX0sNjU1OTooSCxCLEwpPT57dmFyIEs9TCg5ODApLEo9TCgxNzk4KSxJPUwoMzQ4MiksUj1MKDkxOTkpLEU9TCg3ODU5KSx6PUwoMjE0NCksaj1MKDQ4MTgpLFY9TCgzNjYzKSxHPUwoOTUwOSkuQnVmZmVyO0guZXhwb3J0cz1mdW5jdGlvbihXLFUscSl7dmFyIHRlO3RlPVcucGFkZGluZz9X''@;'; put 'put ''LnBhZGRpbmc6cT8xOjQ7dmFyIG5lLGllPUsoVyk7aWYoND09PXRlKW5lPWZ1bmN0aW9uKGxlLGRlKXt2YXIgdWU9bGUubW9kdWx1cy5ieXRlTGVuZ3RoKCksY2U9ZGUubGVuZ3RoLFk9SSgic2hhMSIpLnVwZGF0ZShHLmFsbG9jKDApKS5kaWdlc3QoKSxiPVkubGVuZ3RoLHg9MipiO2lmKGNl''@;'; put 'put ''PnVlLXgtMil0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTt2YXIgTj1HLmFsbG9jKHVlLWNlLXgtMiksRj11ZS1iLTEsZz1KKGIpLEM9RShHLmNvbmNhdChbWSxOLEcuYWxsb2MoMSwxKSxkZV0sRiksUihnLEYpKSxNPUUoZyxSKEMsYikpO3JldHVybiBuZXcgeihHLmNvbmNh''@;'; put 'put ''dChbRy5hbGxvYygxKSxNLENdLHVlKSl9KGllLFUpO2Vsc2UgaWYoMT09PXRlKW5lPWZ1bmN0aW9uKGxlLGRlLHVlKXt2YXIgY2UsWT1kZS5sZW5ndGgsYj1sZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihZPmItMTEpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7cmV0dXJu''@;'; put 'put ''IGNlPXVlP0cuYWxsb2MoYi1ZLTMsMjU1KTpmdW5jdGlvbih4KXtmb3IodmFyIE4sRj1HLmFsbG9jVW5zYWZlKHgpLGc9MCxDPUooMip4KSxNPTA7Zzx4OylNPT09Qy5sZW5ndGgmJihDPUooMip4KSxNPTApLChOPUNbTSsrXSkmJihGW2crK109Tik7cmV0dXJuIEZ9KGItWS0zKSxuZXcgeihH''@;'; put 'put ''LmNvbmNhdChbRy5mcm9tKFswLHVlPzE6Ml0pLGNlLEcuYWxsb2MoMSksZGVdLGIpKX0oaWUsVSxxKTtlbHNle2lmKDMhPT10ZSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpO2lmKChuZT1uZXcgeihVKSkuY21wKGllLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGF0''@;'; put 'put ''YSB0b28gbG9uZyBmb3IgbW9kdWx1cyIpfXJldHVybiBxP1YobmUsaWUpOmoobmUsaWUpfX0sNDgxODooSCxCLEwpPT57dmFyIEs9TCgyMTQ0KSxKPUwoOTUwOSkuQnVmZmVyO0guZXhwb3J0cz1mdW5jdGlvbihJLFIpe3JldHVybiBKLmZyb20oSS50b1JlZChLLm1vbnQoUi5tb2R1bHVzKSku''@;'; put 'put ''cmVkUG93KG5ldyBLKFIucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCkudG9BcnJheSgpKX19LDc4NTk6SD0+e0guZXhwb3J0cz1mdW5jdGlvbihCLEwpe2Zvcih2YXIgSz1CLmxlbmd0aCxKPS0xOysrSjxLOylCW0pdXj1MW0pdO3JldHVybiBCfX0sMzY4OTooSCxCLEwpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO0wucihCKSxMLmQoQix7ZGVjb2RlOigpPT5pZSxkZWZhdWx0OigpPT5jZSxlbmNvZGU6KCk9PmxlLHRvQVNDSUk6KCk9PnVlLHRvVW5pY29kZTooKT0+ZGUsdWNzMmRlY29kZTooKT0+VSx1Y3MyZW5jb2RlOigpPT5xfSk7Y29uc3QgSz0yMTQ3NDgzNjQ3LEo9MzYsST0vXnhuLS0vLFI9''@;'; put 'put ''L1teXDAtXHg3Rl0vLEU9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLHo9e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCki''@;'; put 'put ''LCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LGo9TWF0aC5mbG9vcixWPVN0cmluZy5mcm9tQ2hhckNvZGU7ZnVuY3Rpb24gRyhZKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcih6W1ldKX1mdW5jdGlvbiBXKFksYil7Y29uc3QgeD1ZLnNwbGl0KCJAIik7bGV0IE49IiI7cmV0dXJuIHgu''@;'; put 'put ''bGVuZ3RoPjEmJihOPXhbMF0rIkAiLFk9eFsxXSksTitmdW5jdGlvbihnLEMpe2NvbnN0IE09W107bGV0IHk9Zy5sZW5ndGg7Zm9yKDt5LS07KU1beV09QyhnW3ldKTtyZXR1cm4gTX0oKFk9WS5yZXBsYWNlKEUsIi4iKSkuc3BsaXQoIi4iKSxiKS5qb2luKCIuIil9ZnVuY3Rpb24gVShZKXtj''@;'; put 'put ''b25zdCBiPVtdO2xldCB4PTA7Y29uc3QgTj1ZLmxlbmd0aDtmb3IoO3g8Tjspe2NvbnN0IEY9WS5jaGFyQ29kZUF0KHgrKyk7aWYoRj49NTUyOTYmJkY8PTU2MzE5JiZ4PE4pe2NvbnN0IGc9WS5jaGFyQ29kZUF0KHgrKyk7NTYzMjA9PSg2NDUxMiZnKT9iLnB1c2goKCgxMDIzJkYpPDwxMCkr''@;'; put 'put ''KDEwMjMmZykrNjU1MzYpOihiLnB1c2goRikseC0tKX1lbHNlIGIucHVzaChGKX1yZXR1cm4gYn1jb25zdCBxPVk9PlN0cmluZy5mcm9tQ29kZVBvaW50KC4uLlkpLHRlPWZ1bmN0aW9uKFksYil7cmV0dXJuIFkrMjIrNzUqKFk8MjYpLSgoMCE9Yik8PDUpfSxuZT1mdW5jdGlvbihZLGIseCl7''@;'; put 'put ''bGV0IE49MDtmb3IoWT14P2ooWS83MDApOlk+PjEsWSs9aihZL2IpO1k+NDU1O04rPUopWT1qKFkvMzUpO3JldHVybiBqKE4rMzYqWS8oWSszOCkpfSxpZT1mdW5jdGlvbihZKXtjb25zdCBiPVtdLHg9WS5sZW5ndGg7bGV0IE49MCxGPTEyOCxnPTcyLEM9WS5sYXN0SW5kZXhPZigiLSIpO0M8''@;'; put 'put ''MCYmKEM9MCk7Zm9yKGxldCB5PTA7eTxDOysreSlZLmNoYXJDb2RlQXQoeSk+PTEyOCYmRygibm90LWJhc2ljIiksYi5wdXNoKFkuY2hhckNvZGVBdCh5KSk7Zm9yKGxldCB5PUM+MD9DKzE6MDt5PHg7KXtjb25zdCBwPU47Zm9yKGxldCBRPTEscmU9Sjs7cmUrPUope3k+PXgmJkcoImludmFs''@;'; put 'put ''aWQtaW5wdXQiKTtjb25zdCBmZT0oTT1ZLmNoYXJDb2RlQXQoeSsrKSk+PTQ4JiZNPDU4P00tNDgrMjY6TT49NjUmJk08OTE/TS02NTpNPj05NyYmTTwxMjM/TS05NzpKO2ZlPj1KJiZHKCJpbnZhbGlkLWlucHV0IiksZmU+aigoSy1OKS9RKSYmRygib3ZlcmZsb3ciKSxOKz1mZSpRO2NvbnN0''@;'; put 'put ''IG1lPXJlPD1nPzE6cmU+PWcrMjY/MjY6cmUtZztpZihmZTxtZSlicmVhaztjb25zdCBrZT1KLW1lO1E+aihLL2tlKSYmRygib3ZlcmZsb3ciKSxRKj1rZX1jb25zdCBTPWIubGVuZ3RoKzE7Zz1uZShOLXAsUywwPT1wKSxqKE4vUyk+Sy1GJiZHKCJvdmVyZmxvdyIpLEYrPWooTi9TKSxOJT1T''@;'; put 'put ''LGIuc3BsaWNlKE4rKywwLEYpfXZhciBNO3JldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5iKX0sbGU9ZnVuY3Rpb24oWSl7Y29uc3QgYj1bXSx4PShZPVUoWSkpLmxlbmd0aDtsZXQgTj0xMjgsRj0wLGc9NzI7Zm9yKGNvbnN0IHkgb2YgWSl5PDEyOCYmYi5wdXNoKFYoeSkpO2NvbnN0''@;'; put 'put ''IEM9Yi5sZW5ndGg7bGV0IE09Qztmb3IoQyYmYi5wdXNoKCItIik7TTx4Oyl7bGV0IHk9Sztmb3IoY29uc3QgUyBvZiBZKVM+PU4mJlM8eSYmKHk9Uyk7Y29uc3QgcD1NKzE7eS1OPmooKEstRikvcCkmJkcoIm92ZXJmbG93IiksRis9KHktTikqcCxOPXk7Zm9yKGNvbnN0IFMgb2YgWSlpZihT''@;'; put 'put ''PE4mJisrRj5LJiZHKCJvdmVyZmxvdyIpLFM9PT1OKXtsZXQgUT1GO2ZvcihsZXQgcmU9Sjs7cmUrPUope2NvbnN0IGZlPXJlPD1nPzE6cmU+PWcrMjY/MjY6cmUtZztpZihRPGZlKWJyZWFrO2NvbnN0IG1lPVEtZmUsa2U9Si1mZTtiLnB1c2goVih0ZShmZSttZSVrZSwwKSkpLFE9aihtZS9r''@;'; put 'put ''ZSl9Yi5wdXNoKFYodGUoUSwwKSkpLGc9bmUoRixwLE09PT1DKSxGPTAsKytNfSsrRiwrK059cmV0dXJuIGIuam9pbigiIil9LGRlPWZ1bmN0aW9uKFkpe3JldHVybiBXKFksZnVuY3Rpb24oYil7cmV0dXJuIEkudGVzdChiKT9pZShiLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpOmJ9KX0sdWU9''@;'; put 'put ''ZnVuY3Rpb24oWSl7cmV0dXJuIFcoWSxmdW5jdGlvbihiKXtyZXR1cm4gUi50ZXN0KGIpPyJ4bi0tIitsZShiKTpifSl9LGNlPXt2ZXJzaW9uOiIyLjEuMCIsdWNzMjp7ZGVjb2RlOlUsZW5jb2RlOnF9LGRlY29kZTppZSxlbmNvZGU6bGUsdG9BU0NJSTp1ZSx0b1VuaWNvZGU6ZGV9fSwyNTg3''@;'; put 'put ''Okg9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQihMLEspe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoTCxLKX1ILmV4cG9ydHM9ZnVuY3Rpb24oTCxLLEosSSl7Sj1KfHwiPSI7dmFyIFI9e307aWYoInN0cmluZyIhPXR5cGVvZiBMfHwwPT09TC5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIFI7dmFyIEU9L1wrL2c7TD1MLnNwbGl0KEs9S3x8IiYiKTt2YXIgej0xZTM7SSYmIm51bWJlciI9PXR5cGVvZiBJLm1heEtleXMmJih6PUkubWF4S2V5cyk7dmFyIGo9TC5sZW5ndGg7ej4wJiZqPnomJihqPXopO2Zvcih2YXIgVj0wO1Y8ajsrK1Ype3ZhciBHLFcsVSxxLHRlPUxb''@;'; put 'put ''Vl0ucmVwbGFjZShFLCIlMjAiKSxuZT10ZS5pbmRleE9mKEopO25lPj0wPyhHPXRlLnN1YnN0cigwLG5lKSxXPXRlLnN1YnN0cihuZSsxKSk6KEc9dGUsVz0iIiksVT1kZWNvZGVVUklDb21wb25lbnQoRykscT1kZWNvZGVVUklDb21wb25lbnQoVyksQihSLFUpP0FycmF5LmlzQXJyYXkoUltV''@;'; put 'put ''XSk/UltVXS5wdXNoKHEpOlJbVV09W1JbVV0scV06UltVXT1xfXJldHVybiBSfX0sMjE4MjpIPT57InVzZSBzdHJpY3QiO3ZhciBCPWZ1bmN0aW9uKEwpe3N3aXRjaCh0eXBlb2YgTCl7Y2FzZSJzdHJpbmciOnJldHVybiBMO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIEw/InRydWUiOiJmYWxzZSI7''@;'; put 'put ''Y2FzZSJudW1iZXIiOnJldHVybiBpc0Zpbml0ZShMKT9MOiIiO2RlZmF1bHQ6cmV0dXJuIiJ9fTtILmV4cG9ydHM9ZnVuY3Rpb24oTCxLLEosSSl7cmV0dXJuIEs9S3x8IiYiLEo9Snx8Ij0iLG51bGw9PT1MJiYoTD12b2lkIDApLCJvYmplY3QiPT10eXBlb2YgTD9PYmplY3Qua2V5cyhMKS5t''@;'; put 'put ''YXAoZnVuY3Rpb24oUil7dmFyIEU9ZW5jb2RlVVJJQ29tcG9uZW50KEIoUikpK0o7cmV0dXJuIEFycmF5LmlzQXJyYXkoTFtSXSk/TFtSXS5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIEUrZW5jb2RlVVJJQ29tcG9uZW50KEIoeikpfSkuam9pbihLKTpFK2VuY29kZVVSSUNvbXBvbmVudChCKExb''@;'; put 'put ''Ul0pKX0pLmpvaW4oSyk6ST9lbmNvZGVVUklDb21wb25lbnQoQihJKSkrSitlbmNvZGVVUklDb21wb25lbnQoQihMKSk6IiJ9fSw3NjczOihILEIsTCk9PnsidXNlIHN0cmljdCI7Qi5kZWNvZGU9Qi5wYXJzZT1MKDI1ODcpLEIuZW5jb2RlPUIuc3RyaW5naWZ5PUwoMjE4Mil9LDE3OTg6KEgs''@;'; put 'put ''QixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQxNTUpLEo9NjU1MzYsUj1MKDk1MDkpLkJ1ZmZlcixFPUwuZy5jcnlwdG98fEwuZy5tc0NyeXB0bztILmV4cG9ydHM9RSYmRS5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24oeixqKXtpZih6PjQyOTQ5NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJy''@;'; put 'put ''b3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgVj1SLmFsbG9jVW5zYWZlKHopO2lmKHo+MClpZih6PkopZm9yKHZhciBHPTA7Rzx6O0crPUopRS5nZXRSYW5kb21WYWx1ZXMoVi5zbGljZShHLEcrSikpO2Vsc2UgRS5nZXRSYW5kb21WYWx1ZXMoVik7cmV0dXJuImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGo/Sy5uZXh0VGljayhmdW5jdGlvbigpe2oobnVsbCxWKX0pOlZ9OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmly''@;'; put 'put ''ZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfX0sNzk2MzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSk7ZnVuY3Rpb24gSigpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nl''@;'; put 'put ''clxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBJPUwoOTUwOSksUj1MKDE3OTgpLEU9SS5CdWZmZXIsej1JLmtNYXhMZW5ndGgsaj1MLmcuY3J5cHRvfHxMLmcubXNDcnlwdG8sVj1NYXRoLnBvdygyLDMyKS0xO2Z1bmN0aW9uIEcocSx0ZSl7aWYo''@;'; put 'put ''Im51bWJlciIhPXR5cGVvZiBxfHxxIT1xKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgbnVtYmVyIik7aWYocT5WfHxxPDApdGhyb3cgbmV3IFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB1aW50MzIiKTtpZihxPnp8fHE+dGUpdGhyb3cgbmV3IFJhbmdlRXJyb3Io''@;'; put 'put ''Im9mZnNldCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBXKHEsdGUsbmUpe2lmKCJudW1iZXIiIT10eXBlb2YgcXx8cSE9cSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZihxPlZ8fHE8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSB1''@;'; put 'put ''aW50MzIiKTtpZihxK3RlPm5lfHxxPnopdGhyb3cgbmV3IFJhbmdlRXJyb3IoImJ1ZmZlciB0b28gc21hbGwiKX1mdW5jdGlvbiBVKHEsdGUsbmUsaWUpe2lmKEsuYnJvd3Nlcil7dmFyIGRlPW5ldyBVaW50OEFycmF5KHEuYnVmZmVyLHRlLG5lKTtyZXR1cm4gai5nZXRSYW5kb21WYWx1ZXMo''@;'; put 'put ''ZGUpLGllP3ZvaWQgSy5uZXh0VGljayhmdW5jdGlvbigpe2llKG51bGwscSl9KTpxfWlmKCFpZSlyZXR1cm4gUihuZSkuY29weShxLHRlKSxxO1IobmUsZnVuY3Rpb24odWUsY2Upe2lmKHVlKXJldHVybiBpZSh1ZSk7Y2UuY29weShxLHRlKSxpZShudWxsLHEpfSl9aiYmai5nZXRSYW5kb21W''@;'; put 'put ''YWx1ZXN8fCFLLmJyb3dzZXI/KEIucmFuZG9tRmlsbD1mdW5jdGlvbihxLHRlLG5lLGllKXtpZighKEUuaXNCdWZmZXIocSl8fHEgaW5zdGFuY2VvZiBMLmcuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFy''@;'; put 'put ''cmF5Jyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRlKWllPXRlLHRlPTAsbmU9cS5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgbmUpaWU9bmUsbmU9cS5sZW5ndGgtdGU7ZWxzZSBpZigiZnVuY3Rpb24iIT10eXBlb2YgaWUpdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1''@;'; put 'put ''bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gRyh0ZSxxLmxlbmd0aCksVyhuZSx0ZSxxLmxlbmd0aCksVShxLHRlLG5lLGllKX0sQi5yYW5kb21GaWxsU3luYz1mdW5jdGlvbihxLHRlLG5lKXtpZih2b2lkIDA9PT10ZSYmKHRlPTApLCEoRS5pc0J1ZmZlcihxKXx8cSBpbnN0YW5j''@;'; put 'put ''ZW9mIEwuZy5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtyZXR1cm4gRyh0ZSxxLmxlbmd0aCksdm9pZCAwPT09bmUmJihuZT1xLmxlbmd0aC10ZSksVyhuZSx0ZSxxLmxlbmd0aCksVShxLHRl''@;'; put 'put ''LG5lKX0pOihCLnJhbmRvbUZpbGw9SixCLnJhbmRvbUZpbGxTeW5jPUopfSw0MjgxOkg9PnsidXNlIHN0cmljdCI7dmFyIEI9e307ZnVuY3Rpb24gTChKLEksUil7Unx8KFI9RXJyb3IpO3ZhciBFPWZ1bmN0aW9uKHope3ZhciBqLFY7ZnVuY3Rpb24gRyhXLFUscSl7cmV0dXJuIHouY2FsbCh0''@;'; put 'put ''aGlzLCJzdHJpbmciPT10eXBlb2YgST9JOkkoVyxVLHEpKXx8dGhpc31yZXR1cm4gVj16LChqPUcpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFYucHJvdG90eXBlKSxqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qLGouX19wcm90b19fPVYsR30oUik7RS5wcm90b3R5cGUubmFtZT1SLm5hbWUs''@;'; put 'put ''RS5wcm90b3R5cGUuY29kZT1KLEJbSl09RX1mdW5jdGlvbiBLKEosSSl7aWYoQXJyYXkuaXNBcnJheShKKSl7dmFyIFI9Si5sZW5ndGg7cmV0dXJuIEo9Si5tYXAoZnVuY3Rpb24oRSl7cmV0dXJuIFN0cmluZyhFKX0pLFI+Mj8ib25lIG9mICIuY29uY2F0KEksIiAiKS5jb25jYXQoSi5zbGlj''@;'; put 'put ''ZSgwLFItMSkuam9pbigiLCAiKSwiLCBvciAiKStKW1ItMV06Mj09PVI/Im9uZSBvZiAiLmNvbmNhdChJLCIgIikuY29uY2F0KEpbMF0sIiBvciAiKS5jb25jYXQoSlsxXSk6Im9mICIuY29uY2F0KEksIiAiKS5jb25jYXQoSlswXSl9cmV0dXJuIm9mICIuY29uY2F0KEksIiAiKS5jb25jYXQo''@;'; put 'put ''U3RyaW5nKEopKX1MKCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLGZ1bmN0aW9uKEosSSl7cmV0dXJuJ1RoZSB2YWx1ZSAiJytJKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAiJytKKyciJ30sVHlwZUVycm9yKSxMKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oSixJLFIpe3ZhciBF''@;'; put 'put ''LFYsVyxxO2lmKCJzdHJpbmciPT10eXBlb2YgSSYmIm5vdCAiPT09SS5zdWJzdHIoMCw0KT8oRT0ibXVzdCBub3QgYmUiLEk9SS5yZXBsYWNlKC9ebm90IC8sIiIpKTpFPSJtdXN0IGJlIixXPUosKHZvaWQgMD09PXF8fHE+Vy5sZW5ndGgpJiYocT1XLmxlbmd0aCksIiBhcmd1bWVudCI9PT1X''@;'; put 'put ''LnN1YnN0cmluZyhxLTkscSkpVj0iVGhlICIuY29uY2F0KEosIiAiKS5jb25jYXQoRSwiICIpLmNvbmNhdChLKEksInR5cGUiKSk7ZWxzZXt2YXIgRz1mdW5jdGlvbihXLFUscSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBxJiYocT0wKSwhKHErMT5XLmxlbmd0aCkmJi0xIT09Vy5pbmRleE9m''@;'; put 'put ''KCIuIixxKX0oSik/InByb3BlcnR5IjoiYXJndW1lbnQiO1Y9J1RoZSAiJy5jb25jYXQoSiwnIiAnKS5jb25jYXQoRywiICIpLmNvbmNhdChFLCIgIikuY29uY2F0KEsoSSwidHlwZSIpKX1yZXR1cm4gVisiLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5cGVvZiBSKX0sVHlwZUVycm9yKSxM''@;'; put 'put ''KCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GIiwic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSxMKCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsZnVuY3Rpb24oSil7cmV0dXJuIlRoZSAiK0orIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIn0pLEwoIkVSUl9TVFJFQU1fUFJFTUFU''@;'; put 'put ''VVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3NlIiksTCgiRVJSX1NUUkVBTV9ERVNUUk9ZRUQiLGZ1bmN0aW9uKEope3JldHVybiJDYW5ub3QgY2FsbCAiK0orIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkIn0pLEwoIkVSUl9NVUxUSVBMRV9DQUxMQkFDSyIsIkNhbGxiYWNrIGNhbGxl''@;'; put 'put ''ZCBtdWx0aXBsZSB0aW1lcyIpLEwoIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIiksTCgiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQiLCJ3cml0ZSBhZnRlciBlbmQiKSxMKCJFUlJfU1RSRUFNX05VTExfVkFMVUVTIiwiTWF5IG5vdCB3cml0''@;'; put 'put ''ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iLFR5cGVFcnJvciksTCgiRVJSX1VOS05PV05fRU5DT0RJTkciLGZ1bmN0aW9uKEope3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK0p9LFR5cGVFcnJvciksTCgiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsInN0cmVhbS51bnNo''@;'; put 'put ''aWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IiksSC5leHBvcnRzLnE9Qn0sNjc1MzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oVSl7dmFyIHE9W107Zm9yKHZhciB0ZSBpbiBVKXEucHVzaCh0ZSk7cmV0dXJuIHF9O0guZXhwb3J0cz1W''@;'; put 'put ''O3ZhciBJPUwoOTQ4MSksUj1MKDQyMjkpO0woNTcxNykoVixJKTtmb3IodmFyIEU9SihSLnByb3RvdHlwZSksej0wO3o8RS5sZW5ndGg7eisrKXt2YXIgaj1FW3pdO1YucHJvdG90eXBlW2pdfHwoVi5wcm90b3R5cGVbal09Ui5wcm90b3R5cGVbal0pfWZ1bmN0aW9uIFYoVSl7aWYoISh0aGlz''@;'; put 'put ''IGluc3RhbmNlb2YgVikpcmV0dXJuIG5ldyBWKFUpO0kuY2FsbCh0aGlzLFUpLFIuY2FsbCh0aGlzLFUpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCxVJiYoITE9PT1VLnJlYWRhYmxlJiYodGhpcy5yZWFkYWJsZT0hMSksITE9PT1VLndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSksITE9PT1V''@;'; put 'put ''LmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEsdGhpcy5vbmNlKCJlbmQiLEcpKSl9ZnVuY3Rpb24gRygpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fEsubmV4dFRpY2soVyx0aGlzKX1mdW5jdGlvbiBXKFUpe1UuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFYu''@;'; put 'put ''cHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFYucHJvdG90eXBlLCJ3cml0YWJsZUJ1ZmZlciIse2VudW1l''@;'; put 'put ''cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFYucHJvdG90eXBlLCJ3cml0YWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhp''@;'; put 'put ''cy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oVSl7dm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3Jl''@;'; put 'put ''YWRhYmxlU3RhdGUuZGVzdHJveWVkPVUsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9VSl9fSl9LDI3MjU6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9Sjt2YXIgSz1MKDQ2MDUpO2Z1bmN0aW9uIEooSSl7aWYoISh0aGlzIGluc3RhbmNlb2YgSikpcmV0dXJuIG5ldyBK''@;'; put 'put ''KEkpO0suY2FsbCh0aGlzLEkpfUwoNTcxNykoSixLKSxKLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKEksUixFKXtFKG51bGwsSSl9fSw5NDgxOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEssSj1MKDQxNTUpO0guZXhwb3J0cz1OLE4uUmVhZGFibGVTdGF0ZT14LEwoNzE4Nyk7''@;'; put 'put ''dmFyIGosST1mdW5jdGlvbihMZSxCZSl7cmV0dXJuIExlLmxpc3RlbmVycyhCZSkubGVuZ3RofSxSPUwoMjUwMyksRT1MKDg3NjQpLkJ1ZmZlcix6PSh2b2lkIDAhPT1MLmc/TC5nOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8''@;'; put 'put ''ZnVuY3Rpb24oKXt9LFY9TCg0NjE2KTtqPVYmJlYuZGVidWdsb2c/Vi5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBHLFcsVSxxPUwoNzMyNyksdGU9TCgxMTk1KSxuZT1MKDI0NTcpLmdldEhpZ2hXYXRlck1hcmssaWU9TCg0MjgxKS5xLGxlPWllLkVSUl9JTlZBTElEX0FS''@;'; put 'put ''R19UWVBFLGRlPWllLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsdWU9aWUuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsY2U9aWUuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDtMKDU3MTcpKE4sUik7dmFyIFk9dGUuZXJyb3JPckRlc3Ryb3ksYj1bImVycm9yIiwiY2xv''@;'; put 'put ''c2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtmdW5jdGlvbiB4KExlLEJlLEhlKXtLPUt8fEwoNjc1MyksImJvb2xlYW4iIT10eXBlb2YgSGUmJihIZT1CZSBpbnN0YW5jZW9mIEspLHRoaXMub2JqZWN0TW9kZT0hIShMZT1MZXx8e30pLm9iamVjdE1vZGUsSGUmJih0aGlzLm9iamVj''@;'; put 'put ''dE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIUxlLnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPW5lKHRoaXMsTGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsSGUpLHRoaXMuYnVmZmVyPW5ldyBxLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXND''@;'; put 'put ''b3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJl''@;'; put 'put ''c3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PUxlLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhTGUuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9TGUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIs''@;'; put 'put ''dGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwsTGUuZW5jb2RpbmcmJihHfHwoRz1MKDI1NTMpLlN0cmluZ0RlY29kZXIpLHRoaXMuZGVjb2Rlcj1uZXcgRyhMZS5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1M''@;'; put 'put ''ZS5lbmNvZGluZyl9ZnVuY3Rpb24gTihMZSl7aWYoSz1LfHxMKDY3NTMpLCEodGhpcyBpbnN0YW5jZW9mIE4pKXJldHVybiBuZXcgTihMZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgeChMZSx0aGlzLHRoaXMgaW5zdGFuY2VvZiBLKSx0aGlzLnJlYWRhYmxlPSEwLExlJiYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIExlLnJlYWQmJih0aGlzLl9yZWFkPUxlLnJlYWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBMZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1MZS5kZXN0cm95KSksUi5jYWxsKHRoaXMpfWZ1bmN0aW9uIEYoTGUsQmUsSGUsUWUsbXQpe2ooInJlYWRhYmxlQWRkQ2h1bmsiLEJlKTt2''@;'; put 'put ''YXIgS2UsSWUsT2UsZXQsbnQsd2U9TGUuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PUJlKXdlLnJlYWRpbmc9ITEsZnVuY3Rpb24oSWUsT2Upe2lmKGooIm9uRW9mQ2h1bmsiKSwhT2UuZW5kZWQpe2lmKE9lLmRlY29kZXIpe3ZhciBldD1PZS5kZWNvZGVyLmVuZCgpO2V0JiZldC5sZW5ndGgm''@;'; put 'put ''JihPZS5idWZmZXIucHVzaChldCksT2UubGVuZ3RoKz1PZS5vYmplY3RNb2RlPzE6ZXQubGVuZ3RoKX1PZS5lbmRlZD0hMCxPZS5zeW5jP3koSWUpOihPZS5uZWVkUmVhZGFibGU9ITEsT2UuZW1pdHRlZFJlYWRhYmxlfHwoT2UuZW1pdHRlZFJlYWRhYmxlPSEwLHAoSWUpKSl9fShMZSx3ZSk7''@;'; put 'put ''ZWxzZSBpZihtdHx8KEllPXdlLEUuaXNCdWZmZXIobnQ9T2U9QmUpfHxudCBpbnN0YW5jZW9mIHp8fCJzdHJpbmciPT10eXBlb2YgT2V8fHZvaWQgMD09PU9lfHxJZS5vYmplY3RNb2RlfHwoZXQ9bmV3IGxlKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiLCJVaW50OEFycmF5Il0sT2UpKSxL''@;'; put 'put ''ZT1ldCksS2UpWShMZSxLZSk7ZWxzZSBpZih3ZS5vYmplY3RNb2RlfHxCZSYmQmUubGVuZ3RoPjApaWYoInN0cmluZyI9PXR5cGVvZiBCZXx8d2Uub2JqZWN0TW9kZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEJlKT09PUUucHJvdG90eXBlfHwoQmU9ZnVuY3Rpb24oSWUpe3JldHVybiBFLmZy''@;'; put 'put ''b20oSWUpfShCZSkpLFFlKXdlLmVuZEVtaXR0ZWQ/WShMZSxuZXcgY2UpOmcoTGUsd2UsQmUsITApO2Vsc2UgaWYod2UuZW5kZWQpWShMZSxuZXcgZGUpO2Vsc2V7aWYod2UuZGVzdHJveWVkKXJldHVybiExO3dlLnJlYWRpbmc9ITEsd2UuZGVjb2RlciYmIUhlPyhCZT13ZS5kZWNvZGVyLndy''@;'; put 'put ''aXRlKEJlKSx3ZS5vYmplY3RNb2RlfHwwIT09QmUubGVuZ3RoP2coTGUsd2UsQmUsITEpOlMoTGUsd2UpKTpnKExlLHdlLEJlLCExKX1lbHNlIFFlfHwod2UucmVhZGluZz0hMSxTKExlLHdlKSk7cmV0dXJuIXdlLmVuZGVkJiYod2UubGVuZ3RoPHdlLmhpZ2hXYXRlck1hcmt8fDA9PT13ZS5s''@;'; put 'put ''ZW5ndGgpfWZ1bmN0aW9uIGcoTGUsQmUsSGUsUWUpe0JlLmZsb3dpbmcmJjA9PT1CZS5sZW5ndGgmJiFCZS5zeW5jPyhCZS5hd2FpdERyYWluPTAsTGUuZW1pdCgiZGF0YSIsSGUpKTooQmUubGVuZ3RoKz1CZS5vYmplY3RNb2RlPzE6SGUubGVuZ3RoLFFlP0JlLmJ1ZmZlci51bnNoaWZ0KEhl''@;'; put 'put ''KTpCZS5idWZmZXIucHVzaChIZSksQmUubmVlZFJlYWRhYmxlJiZ5KExlKSksUyhMZSxCZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRl''@;'; put 'put ''JiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKExlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9TGUpfX0pLE4ucHJvdG90eXBlLmRlc3Ryb3k9dGUuZGVzdHJveSxOLnByb3RvdHlwZS5fdW5kZXN0cm95PXRl''@;'; put 'put ''LnVuZGVzdHJveSxOLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihMZSxCZSl7QmUoTGUpfSxOLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKExlLEJlKXt2YXIgSGUsUWU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gUWUub2JqZWN0TW9kZT9IZT0hMDoic3RyaW5nIj09dHlwZW9mIExl''@;'; put 'put ''JiYoKEJlPUJlfHxRZS5kZWZhdWx0RW5jb2RpbmcpIT09UWUuZW5jb2RpbmcmJihMZT1FLmZyb20oTGUsQmUpLEJlPSIiKSxIZT0hMCksRih0aGlzLExlLEJlLCExLEhlKX0sTi5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihMZSl7cmV0dXJuIEYodGhpcyxMZSxudWxsLCEwLCExKX0sTi5w''@;'; put 'put ''cm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sTi5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24oTGUpe0d8fChHPUwoMjU1MykuU3RyaW5nRGVjb2Rlcik7dmFyIEJlPW5ldyBHKExlKTt0aGlzLl9yZWFkYWJs''@;'; put 'put ''ZVN0YXRlLmRlY29kZXI9QmUsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9yKHZhciBIZT10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkLFFlPSIiO251bGwhPT1IZTspUWUrPUJlLndyaXRlKEhlLmRhdGEp''@;'; put 'put ''LEhlPUhlLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1RZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChRZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9UWUubGVuZ3RoLHRoaXN9O3ZhciBDPTEwNzM3NDE4MjQ7ZnVuY3Rp''@;'; put 'put ''b24gTShMZSxCZSl7cmV0dXJuIExlPD0wfHwwPT09QmUubGVuZ3RoJiZCZS5lbmRlZD8wOkJlLm9iamVjdE1vZGU/MTpMZSE9TGU/QmUuZmxvd2luZyYmQmUubGVuZ3RoP0JlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOkJlLmxlbmd0aDooTGU+QmUuaGlnaFdhdGVyTWFyayYmKEJlLmhpZ2hX''@;'; put 'put ''YXRlck1hcms9KChIZT1MZSk+PUM/SGU9QzooSGUtLSxIZXw9SGU+Pj4xLEhlfD1IZT4+PjIsSGV8PUhlPj4+NCxIZXw9SGU+Pj44LEhlfD1IZT4+PjE2LEhlKyspLEhlKSksTGU8PUJlLmxlbmd0aD9MZTpCZS5lbmRlZD9CZS5sZW5ndGg6KEJlLm5lZWRSZWFkYWJsZT0hMCwwKSk7dmFyIEhl''@;'; put 'put ''fWZ1bmN0aW9uIHkoTGUpe3ZhciBCZT1MZS5fcmVhZGFibGVTdGF0ZTtqKCJlbWl0UmVhZGFibGUiLEJlLm5lZWRSZWFkYWJsZSxCZS5lbWl0dGVkUmVhZGFibGUpLEJlLm5lZWRSZWFkYWJsZT0hMSxCZS5lbWl0dGVkUmVhZGFibGV8fChqKCJlbWl0UmVhZGFibGUiLEJlLmZsb3dpbmcpLEJl''@;'; put 'put ''LmVtaXR0ZWRSZWFkYWJsZT0hMCxKLm5leHRUaWNrKHAsTGUpKX1mdW5jdGlvbiBwKExlKXt2YXIgQmU9TGUuX3JlYWRhYmxlU3RhdGU7aigiZW1pdFJlYWRhYmxlXyIsQmUuZGVzdHJveWVkLEJlLmxlbmd0aCxCZS5lbmRlZCksQmUuZGVzdHJveWVkfHwhQmUubGVuZ3RoJiYhQmUuZW5kZWR8''@;'; put 'put ''fChMZS5lbWl0KCJyZWFkYWJsZSIpLEJlLmVtaXR0ZWRSZWFkYWJsZT0hMSksQmUubmVlZFJlYWRhYmxlPSFCZS5mbG93aW5nJiYhQmUuZW5kZWQmJkJlLmxlbmd0aDw9QmUuaGlnaFdhdGVyTWFyayxrZShMZSl9ZnVuY3Rpb24gUyhMZSxCZSl7QmUucmVhZGluZ01vcmV8fChCZS5yZWFkaW5n''@;'; put 'put ''TW9yZT0hMCxKLm5leHRUaWNrKFEsTGUsQmUpKX1mdW5jdGlvbiBRKExlLEJlKXtmb3IoOyFCZS5yZWFkaW5nJiYhQmUuZW5kZWQmJihCZS5sZW5ndGg8QmUuaGlnaFdhdGVyTWFya3x8QmUuZmxvd2luZyYmMD09PUJlLmxlbmd0aCk7KXt2YXIgSGU9QmUubGVuZ3RoO2lmKGooIm1heWJlUmVh''@;'; put 'put ''ZE1vcmUgcmVhZCAwIiksTGUucmVhZCgwKSxIZT09PUJlLmxlbmd0aClicmVha31CZS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiByZShMZSl7dmFyIEJlPUxlLl9yZWFkYWJsZVN0YXRlO0JlLnJlYWRhYmxlTGlzdGVuaW5nPUxlLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCxCZS5yZXN1''@;'; put 'put ''bWVTY2hlZHVsZWQmJiFCZS5wYXVzZWQ/QmUuZmxvd2luZz0hMDpMZS5saXN0ZW5lckNvdW50KCJkYXRhIik+MCYmTGUucmVzdW1lKCl9ZnVuY3Rpb24gZmUoTGUpe2ooInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCIpLExlLnJlYWQoMCl9ZnVuY3Rpb24gbWUoTGUsQmUpe2ooInJlc3VtZSIs''@;'; put 'put ''QmUucmVhZGluZyksQmUucmVhZGluZ3x8TGUucmVhZCgwKSxCZS5yZXN1bWVTY2hlZHVsZWQ9ITEsTGUuZW1pdCgicmVzdW1lIiksa2UoTGUpLEJlLmZsb3dpbmcmJiFCZS5yZWFkaW5nJiZMZS5yZWFkKDApfWZ1bmN0aW9uIGtlKExlKXt2YXIgQmU9TGUuX3JlYWRhYmxlU3RhdGU7Zm9yKGoo''@;'; put 'put ''ImZsb3ciLEJlLmZsb3dpbmcpO0JlLmZsb3dpbmcmJm51bGwhPT1MZS5yZWFkKCk7KTt9ZnVuY3Rpb24gVGUoTGUsQmUpe3JldHVybiAwPT09QmUubGVuZ3RoP251bGw6KEJlLm9iamVjdE1vZGU/SGU9QmUuYnVmZmVyLnNoaWZ0KCk6IUxlfHxMZT49QmUubGVuZ3RoPyhIZT1CZS5kZWNvZGVy''@;'; put 'put ''P0JlLmJ1ZmZlci5qb2luKCIiKToxPT09QmUuYnVmZmVyLmxlbmd0aD9CZS5idWZmZXIuZmlyc3QoKTpCZS5idWZmZXIuY29uY2F0KEJlLmxlbmd0aCksQmUuYnVmZmVyLmNsZWFyKCkpOkhlPUJlLmJ1ZmZlci5jb25zdW1lKExlLEJlLmRlY29kZXIpLEhlKTt2YXIgSGV9ZnVuY3Rpb24gUGUo''@;'; put 'put ''TGUpe3ZhciBCZT1MZS5fcmVhZGFibGVTdGF0ZTtqKCJlbmRSZWFkYWJsZSIsQmUuZW5kRW1pdHRlZCksQmUuZW5kRW1pdHRlZHx8KEJlLmVuZGVkPSEwLEoubmV4dFRpY2soRmUsQmUsTGUpKX1mdW5jdGlvbiBGZShMZSxCZSl7aWYoaigiZW5kUmVhZGFibGVOVCIsTGUuZW5kRW1pdHRlZCxM''@;'; put 'put ''ZS5sZW5ndGgpLCFMZS5lbmRFbWl0dGVkJiYwPT09TGUubGVuZ3RoJiYoTGUuZW5kRW1pdHRlZD0hMCxCZS5yZWFkYWJsZT0hMSxCZS5lbWl0KCJlbmQiKSxMZS5hdXRvRGVzdHJveSkpe3ZhciBIZT1CZS5fd3JpdGFibGVTdGF0ZTsoIUhlfHxIZS5hdXRvRGVzdHJveSYmSGUuZmluaXNoZWQp''@;'; put 'put ''JiZCZS5kZXN0cm95KCl9fWZ1bmN0aW9uIE5lKExlLEJlKXtmb3IodmFyIEhlPTAsUWU9TGUubGVuZ3RoO0hlPFFlO0hlKyspaWYoTGVbSGVdPT09QmUpcmV0dXJuIEhlO3JldHVybi0xfU4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oTGUpe2ooInJlYWQiLExlKSxMZT1wYXJzZUludChMZSwx''@;'; put 'put ''MCk7dmFyIEJlPXRoaXMuX3JlYWRhYmxlU3RhdGUsSGU9TGU7aWYoMCE9PUxlJiYoQmUuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09TGUmJkJlLm5lZWRSZWFkYWJsZSYmKCgwIT09QmUuaGlnaFdhdGVyTWFyaz9CZS5sZW5ndGg+PUJlLmhpZ2hXYXRlck1hcms6QmUubGVuZ3RoPjApfHxCZS5l''@;'; put 'put ''bmRlZCkpcmV0dXJuIGooInJlYWQ6IGVtaXRSZWFkYWJsZSIsQmUubGVuZ3RoLEJlLmVuZGVkKSwwPT09QmUubGVuZ3RoJiZCZS5lbmRlZD9QZSh0aGlzKTp5KHRoaXMpLG51bGw7aWYoMD09PShMZT1NKExlLEJlKSkmJkJlLmVuZGVkKXJldHVybiAwPT09QmUubGVuZ3RoJiZQZSh0aGlzKSxu''@;'; put 'put ''dWxsO3ZhciBRZSxtdD1CZS5uZWVkUmVhZGFibGU7cmV0dXJuIGooIm5lZWQgcmVhZGFibGUiLG10KSwoMD09PUJlLmxlbmd0aHx8QmUubGVuZ3RoLUxlPEJlLmhpZ2hXYXRlck1hcmspJiZqKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsbXQ9ITApLEJlLmVuZGVkfHxCZS5yZWFkaW5n''@;'; put 'put ''P2ooInJlYWRpbmcgb3IgZW5kZWQiLG10PSExKTptdCYmKGooImRvIHJlYWQiKSxCZS5yZWFkaW5nPSEwLEJlLnN5bmM9ITAsMD09PUJlLmxlbmd0aCYmKEJlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChCZS5oaWdoV2F0ZXJNYXJrKSxCZS5zeW5jPSExLEJlLnJlYWRpbmd8fChMZT1N''@;'; put 'put ''KEhlLEJlKSkpLG51bGw9PT0oUWU9TGU+MD9UZShMZSxCZSk6bnVsbCk/KEJlLm5lZWRSZWFkYWJsZT1CZS5sZW5ndGg8PUJlLmhpZ2hXYXRlck1hcmssTGU9MCk6KEJlLmxlbmd0aC09TGUsQmUuYXdhaXREcmFpbj0wKSwwPT09QmUubGVuZ3RoJiYoQmUuZW5kZWR8fChCZS5uZWVkUmVhZGFi''@;'; put 'put ''bGU9ITApLEhlIT09TGUmJkJlLmVuZGVkJiZQZSh0aGlzKSksbnVsbCE9PVFlJiZ0aGlzLmVtaXQoImRhdGEiLFFlKSxRZX0sTi5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oTGUpe1kodGhpcyxuZXcgdWUoIl9yZWFkKCkiKSl9LE4ucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oTGUsQmUpe3Zh''@;'; put 'put ''ciBIZT10aGlzLFFlPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKFFlLnBpcGVzQ291bnQpe2Nhc2UgMDpRZS5waXBlcz1MZTticmVhaztjYXNlIDE6UWUucGlwZXM9W1FlLnBpcGVzLExlXTticmVhaztkZWZhdWx0OlFlLnBpcGVzLnB1c2goTGUpfVFlLnBpcGVzQ291bnQrPTEsaigicGlw''@;'; put 'put ''ZSBjb3VudD0lZCBvcHRzPSVqIixRZS5waXBlc0NvdW50LEJlKTt2YXIgbXQ9QmUmJiExPT09QmUuZW5kfHxMZT09PUouc3Rkb3V0fHxMZT09PUouc3RkZXJyP0VlOndlO2Z1bmN0aW9uIHdlKCl7aigib25lbmQiKSxMZS5lbmQoKX1RZS5lbmRFbWl0dGVkP0oubmV4dFRpY2sobXQpOkhlLm9u''@;'; put 'put ''Y2UoImVuZCIsbXQpLExlLm9uKCJ1bnBpcGUiLGZ1bmN0aW9uIEtlKERlLCRlKXtqKCJvbnVucGlwZSIpLERlPT09SGUmJiRlJiYhMT09PSRlLmhhc1VucGlwZWQmJigkZS5oYXNVbnBpcGVkPSEwLGooImNsZWFudXAiKSxMZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHFlKSxMZS5yZW1vdmVM''@;'; put 'put ''aXN0ZW5lcigiZmluaXNoIixodCksTGUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixJZSksTGUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixudCksTGUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsS2UpLEhlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHdlKSxIZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixF''@;'; put 'put ''ZSksSGUucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGV0KSxPZT0hMCwhUWUuYXdhaXREcmFpbnx8TGUuX3dyaXRhYmxlU3RhdGUmJiFMZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fEllKCkpfSk7dmFyIERlLEllPShEZT1IZSxmdW5jdGlvbigpe3ZhciAkZT1EZS5fcmVhZGFibGVTdGF0ZTtq''@;'; put 'put ''KCJwaXBlT25EcmFpbiIsJGUuYXdhaXREcmFpbiksJGUuYXdhaXREcmFpbiYmJGUuYXdhaXREcmFpbi0tLDA9PT0kZS5hd2FpdERyYWluJiZJKERlLCJkYXRhIikmJigkZS5mbG93aW5nPSEwLGtlKERlKSl9KTtMZS5vbigiZHJhaW4iLEllKTt2YXIgT2U9ITE7ZnVuY3Rpb24gZXQoRGUpe2oo''@;'; put 'put ''Im9uZGF0YSIpO3ZhciAkZT1MZS53cml0ZShEZSk7aigiZGVzdC53cml0ZSIsJGUpLCExPT09JGUmJigoMT09PVFlLnBpcGVzQ291bnQmJlFlLnBpcGVzPT09TGV8fFFlLnBpcGVzQ291bnQ+MSYmLTEhPT1OZShRZS5waXBlcyxMZSkpJiYhT2UmJihqKCJmYWxzZSB3cml0ZSByZXNwb25zZSwg''@;'; put 'put ''cGF1c2UiLFFlLmF3YWl0RHJhaW4pLFFlLmF3YWl0RHJhaW4rKyksSGUucGF1c2UoKSl9ZnVuY3Rpb24gbnQoRGUpe2ooIm9uZXJyb3IiLERlKSxFZSgpLExlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsbnQpLDA9PT1JKExlLCJlcnJvciIpJiZZKExlLERlKX1mdW5jdGlvbiBxZSgpe0xlLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyKCJmaW5pc2giLGh0KSxFZSgpfWZ1bmN0aW9uIGh0KCl7aigib25maW5pc2giKSxMZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHFlKSxFZSgpfWZ1bmN0aW9uIEVlKCl7aigidW5waXBlIiksSGUudW5waXBlKExlKX1yZXR1cm4gSGUub24oImRhdGEiLGV0KSxmdW5jdGlv''@;'; put 'put ''bihEZSwkZSxhdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIERlLnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gRGUucHJlcGVuZExpc3RlbmVyKCRlLGF0KTtEZS5fZXZlbnRzJiZEZS5fZXZlbnRzWyRlXT9BcnJheS5pc0FycmF5KERlLl9ldmVudHNbJGVdKT9EZS5fZXZlbnRzWyRlXS51bnNoaWZ0''@;'; put 'put ''KGF0KTpEZS5fZXZlbnRzWyRlXT1bYXQsRGUuX2V2ZW50c1skZV1dOkRlLm9uKCRlLGF0KX0oTGUsImVycm9yIixudCksTGUub25jZSgiY2xvc2UiLHFlKSxMZS5vbmNlKCJmaW5pc2giLGh0KSxMZS5lbWl0KCJwaXBlIixIZSksUWUuZmxvd2luZ3x8KGooInBpcGUgcmVzdW1lIiksSGUucmVz''@;'; put 'put ''dW1lKCkpLExlfSxOLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oTGUpe3ZhciBCZT10aGlzLl9yZWFkYWJsZVN0YXRlLEhlPXtoYXNVbnBpcGVkOiExfTtpZigwPT09QmUucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09QmUucGlwZXNDb3VudClyZXR1cm4gTGUmJkxlIT09QmUucGlw''@;'; put 'put ''ZXN8fChMZXx8KExlPUJlLnBpcGVzKSxCZS5waXBlcz1udWxsLEJlLnBpcGVzQ291bnQ9MCxCZS5mbG93aW5nPSExLExlJiZMZS5lbWl0KCJ1bnBpcGUiLHRoaXMsSGUpKSx0aGlzO2lmKCFMZSl7dmFyIFFlPUJlLnBpcGVzLG10PUJlLnBpcGVzQ291bnQ7QmUucGlwZXM9bnVsbCxCZS5waXBl''@;'; put 'put ''c0NvdW50PTAsQmUuZmxvd2luZz0hMTtmb3IodmFyIEtlPTA7S2U8bXQ7S2UrKylRZVtLZV0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIHdlPU5lKEJlLnBpcGVzLExlKTtyZXR1cm4tMT09PXdlfHwoQmUucGlwZXMuc3BsaWNlKHdlLDEpLEJl''@;'; put 'put ''LnBpcGVzQ291bnQtPTEsMT09PUJlLnBpcGVzQ291bnQmJihCZS5waXBlcz1CZS5waXBlc1swXSksTGUuZW1pdCgidW5waXBlIix0aGlzLEhlKSksdGhpc30sTi5wcm90b3R5cGUuYWRkTGlzdGVuZXI9Ti5wcm90b3R5cGUub249ZnVuY3Rpb24oTGUsQmUpe3ZhciBIZT1SLnByb3RvdHlwZS5v''@;'; put 'put ''bi5jYWxsKHRoaXMsTGUsQmUpLFFlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuImRhdGEiPT09TGU/KFFlLnJlYWRhYmxlTGlzdGVuaW5nPXRoaXMubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLCExIT09UWUuZmxvd2luZyYmdGhpcy5yZXN1bWUoKSk6InJlYWRhYmxlIj09PUxlJiYo''@;'; put 'put ''UWUuZW5kRW1pdHRlZHx8UWUucmVhZGFibGVMaXN0ZW5pbmd8fChRZS5yZWFkYWJsZUxpc3RlbmluZz1RZS5uZWVkUmVhZGFibGU9ITAsUWUuZmxvd2luZz0hMSxRZS5lbWl0dGVkUmVhZGFibGU9ITEsaigib24gcmVhZGFibGUiLFFlLmxlbmd0aCxRZS5yZWFkaW5nKSxRZS5sZW5ndGg/eSh0''@;'; put 'put ''aGlzKTpRZS5yZWFkaW5nfHxKLm5leHRUaWNrKGZlLHRoaXMpKSksSGV9LE4ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKExlLEJlKXt2YXIgSGU9Ui5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLExlLEJlKTtyZXR1cm4icmVhZGFibGUiPT09TGUmJkoubmV4''@;'; put 'put ''dFRpY2socmUsdGhpcyksSGV9LE4ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihMZSl7dmFyIEJlPVIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuInJlYWRhYmxlIiE9PUxlJiZ2b2lkIDAhPT1MZXx8Si5uZXh0''@;'; put 'put ''VGljayhyZSx0aGlzKSxCZX0sTi5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIEhlLExlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIExlLmZsb3dpbmd8fChqKCJyZXN1bWUiKSxMZS5mbG93aW5nPSFMZS5yZWFkYWJsZUxpc3RlbmluZywoSGU9TGUpLnJlc3VtZVNjaGVkdWxl''@;'; put 'put ''ZHx8KEhlLnJlc3VtZVNjaGVkdWxlZD0hMCxKLm5leHRUaWNrKG1lLHRoaXMsSGUpKSksTGUucGF1c2VkPSExLHRoaXN9LE4ucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIGooImNhbGwgcGF1c2UgZmxvd2luZz0laiIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9''@;'; put 'put ''PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKGooInBhdXNlIiksdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPSExLHRoaXMuZW1pdCgicGF1c2UiKSksdGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30sTi5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihMZSl7dmFyIEJl''@;'; put 'put ''PXRoaXMsSGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxRZT0hMTtmb3IodmFyIG10IGluIExlLm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYoaigid3JhcHBlZCBlbmQiKSxIZS5kZWNvZGVyJiYhSGUuZW5kZWQpe3ZhciB3ZT1IZS5kZWNvZGVyLmVuZCgpO3dlJiZ3ZS5sZW5ndGgmJkJlLnB1c2god2Up''@;'; put 'put ''fUJlLnB1c2gobnVsbCl9KSxMZS5vbigiZGF0YSIsZnVuY3Rpb24od2Upe2ooIndyYXBwZWQgZGF0YSIpLEhlLmRlY29kZXImJih3ZT1IZS5kZWNvZGVyLndyaXRlKHdlKSksSGUub2JqZWN0TW9kZSYmbnVsbD09d2V8fChIZS5vYmplY3RNb2RlfHx3ZSYmd2UubGVuZ3RoKSYmKEJlLnB1c2go''@;'; put 'put ''d2UpfHwoUWU9ITAsTGUucGF1c2UoKSkpfSksTGUpdm9pZCAwPT09dGhpc1ttdF0mJiJmdW5jdGlvbiI9PXR5cGVvZiBMZVttdF0mJih0aGlzW210XT1mdW5jdGlvbih3ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIExlW3dlXS5hcHBseShMZSxhcmd1bWVudHMpfX0obXQpKTtmb3IodmFy''@;'; put 'put ''IEtlPTA7S2U8Yi5sZW5ndGg7S2UrKylMZS5vbihiW0tlXSx0aGlzLmVtaXQuYmluZCh0aGlzLGJbS2VdKSk7cmV0dXJuIHRoaXMuX3JlYWQ9ZnVuY3Rpb24od2Upe2ooIndyYXBwZWQgX3JlYWQiLHdlKSxRZSYmKFFlPSExLExlLnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IFN5bWJvbCYmKE4ucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1XJiYoVz1MKDU4NTApKSxXKHRoaXMpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBlLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxl''@;'; put 'put ''OiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBlLCJyZWFkYWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOLnByb3RvdHlwZSwicmVhZGFibGVGbG93aW5nIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rp''@;'; put 'put ''b24oTGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9TGUpfX0pLE4uX2Zyb21MaXN0PVRlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOLnByb3RvdHlwZSwicmVhZGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aH19KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoTi5mcm9tPWZ1bmN0aW9uKExlLEJlKXtyZXR1cm4gdm9pZCAwPT09VSYmKFU9TCg1MTY3KSksVShOLExlLEJlKX0pfSw0NjA1OihILEIsTCk9PnsidXNlIHN0cmljdCI7SC5leHBvcnRz''@;'; put 'put ''PVY7dmFyIEs9TCg0MjgxKS5xLEo9Sy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxJPUsuRVJSX01VTFRJUExFX0NBTExCQUNLLFI9Sy5FUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HLEU9Sy5FUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAsej1MKDY3NTMpO2Z1bmN0aW9u''@;'; put 'put ''IGooVSxxKXt2YXIgdGU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7dGUudHJhbnNmb3JtaW5nPSExO3ZhciBuZT10ZS53cml0ZWNiO2lmKG51bGw9PT1uZSlyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsbmV3IEkpO3RlLndyaXRlY2h1bms9bnVsbCx0ZS53cml0ZWNiPW51bGwsbnVsbCE9cSYmdGhp''@;'; put 'put ''cy5wdXNoKHEpLG5lKFUpO3ZhciBpZT10aGlzLl9yZWFkYWJsZVN0YXRlO2llLnJlYWRpbmc9ITEsKGllLm5lZWRSZWFkYWJsZXx8aWUubGVuZ3RoPGllLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGllLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIFYoVSl7aWYoISh0aGlzIGluc3RhbmNl''@;'; put 'put ''b2YgVikpcmV0dXJuIG5ldyBWKFUpO3ouY2FsbCh0aGlzLFUpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpqLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51''@;'; put 'put ''bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxVJiYoImZ1bmN0aW9uIj09dHlwZW9mIFUudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPVUudHJhbnNmb3JtKSwiZnVuY3Rpb24iPT10eXBlb2YgVS5mbHVzaCYmKHRo''@;'; put 'put ''aXMuX2ZsdXNoPVUuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2giLEcpfWZ1bmN0aW9uIEcoKXt2YXIgVT10aGlzOyJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/Vyh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2goZnVuY3Rp''@;'; put 'put ''b24ocSx0ZSl7VyhVLHEsdGUpfSl9ZnVuY3Rpb24gVyhVLHEsdGUpe2lmKHEpcmV0dXJuIFUuZW1pdCgiZXJyb3IiLHEpO2lmKG51bGwhPXRlJiZVLnB1c2godGUpLFUuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBFO2lmKFUuX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZyl0''@;'; put 'put ''aHJvdyBuZXcgUjtyZXR1cm4gVS5wdXNoKG51bGwpfUwoNTcxNykoVix6KSxWLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKFUscSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsei5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsVSxxKX0sVi5wcm90b3R5cGUu''@;'; put 'put ''X3RyYW5zZm9ybT1mdW5jdGlvbihVLHEsdGUpe3RlKG5ldyBKKCJfdHJhbnNmb3JtKCkiKSl9LFYucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihVLHEsdGUpe3ZhciBuZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZihuZS53cml0ZWNiPXRlLG5lLndyaXRlY2h1bms9VSxuZS53cml0ZWVuY29k''@;'; put 'put ''aW5nPXEsIW5lLnRyYW5zZm9ybWluZyl7dmFyIGllPXRoaXMuX3JlYWRhYmxlU3RhdGU7KG5lLm5lZWRUcmFuc2Zvcm18fGllLm5lZWRSZWFkYWJsZXx8aWUubGVuZ3RoPGllLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGllLmhpZ2hXYXRlck1hcmspfX0sVi5wcm90b3R5cGUuX3JlYWQ9''@;'; put 'put ''ZnVuY3Rpb24oVSl7dmFyIHE9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PXEud3JpdGVjaHVua3x8cS50cmFuc2Zvcm1pbmc/cS5uZWVkVHJhbnNmb3JtPSEwOihxLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0ocS53cml0ZWNodW5rLHEud3JpdGVlbmNvZGluZyxxLmFmdGVy''@;'; put 'put ''VHJhbnNmb3JtKSl9LFYucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFUscSl7ei5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLFUsZnVuY3Rpb24odGUpe3EodGUpfSl9fSw0MjI5OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEssSj1MKDQxNTUpO2Z1bmN0aW9uIEkoUyl7dmFy''@;'; put 'put ''IFE9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24ocmUsZmUsbWUpe3ZhciBrZT1yZS5lbnRyeTtmb3IocmUuZW50cnk9bnVsbDtrZTspe3ZhciBUZT1rZS5jYWxsYmFjaztmZS5wZW5kaW5nY2ItLSxUZSh2b2lkIDAp''@;'; put 'put ''LGtlPWtlLm5leHR9ZmUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9cmV9KFEsUyl9fUguZXhwb3J0cz1OLE4uV3JpdGFibGVTdGF0ZT14O3ZhciBWLFI9e2RlcHJlY2F0ZTpMKDQ5MjcpfSxFPUwoMjUwMyksej1MKDg3NjQpLkJ1ZmZlcixqPSh2b2lkIDAhPT1MLmc/TC5nOnR5cGVvZiB3aW5k''@;'; put 'put ''b3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LEc9TCgxMTk1KSxXPUwoMjQ1NykuZ2V0SGlnaFdhdGVyTWFyayxVPUwoNDI4MSkucSxxPVUuRVJSX0lOVkFMSURfQVJHX1RZUEUsdGU9VS5FUlJfTUVUSE9EX05PVF9JTVBMRU1F''@;'; put 'put ''TlRFRCxuZT1VLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxpZT1VLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsbGU9VS5FUlJfU1RSRUFNX0RFU1RST1lFRCxkZT1VLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsdWU9VS5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxjZT1VLkVSUl9VTktOT1dOX0VO''@;'; put 'put ''Q09ESU5HLFk9Ry5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIHgoUyxRLHJlKXtLPUt8fEwoNjc1MyksImJvb2xlYW4iIT10eXBlb2YgcmUmJihyZT1RIGluc3RhbmNlb2YgSyksdGhpcy5vYmplY3RNb2RlPSEhKFM9U3x8e30pLm9iamVjdE1vZGUscmUmJih0aGlzLm9i''@;'; put 'put ''amVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIVMud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9Vyh0aGlzLFMsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIscmUpLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5l''@;'; put 'put ''bmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2RlU3RyaW5ncz0hKCExPT09Uy5kZWNvZGVTdHJpbmdzKSx0aGlzLmRlZmF1bHRFbmNvZGluZz1TLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRo''@;'; put 'put ''aXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24obWUpeyFmdW5jdGlvbihrZSxUZSl7dmFyIEJlLFBlPWtlLl93cml0YWJsZVN0YXRlLEZlPVBlLnN5bmMsTmU9UGUud3JpdGVjYjtpZigiZnVuY3Rpb24iIT10eXBl''@;'; put 'put ''b2YgTmUpdGhyb3cgbmV3IG5lO2lmKChCZT1QZSkud3JpdGluZz0hMSxCZS53cml0ZWNiPW51bGwsQmUubGVuZ3RoLT1CZS53cml0ZWxlbixCZS53cml0ZWxlbj0wLFRlKSFmdW5jdGlvbihCZSxIZSxRZSxtdCxLZSl7LS1IZS5wZW5kaW5nY2IsUWU/KEoubmV4dFRpY2soS2UsbXQpLEoubmV4''@;'; put 'put ''dFRpY2socCxCZSxIZSksQmUuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLFkoQmUsbXQpKTooS2UobXQpLEJlLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxZKEJlLG10KSxwKEJlLEhlKSl9KGtlLFBlLEZlLFRlLE5lKTtlbHNle3ZhciBMZT1NKFBlKXx8a2UuZGVzdHJv''@;'; put 'put ''eWVkO0xlfHxQZS5jb3JrZWR8fFBlLmJ1ZmZlclByb2Nlc3Npbmd8fCFQZS5idWZmZXJlZFJlcXVlc3R8fEMoa2UsUGUpLEZlP0oubmV4dFRpY2soZyxrZSxQZSxMZSxOZSk6ZyhrZSxQZSxMZSxOZSl9fShRLG1lKX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVm''@;'; put 'put ''ZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09Uy5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIVMuYXV0b0Rl''@;'; put 'put ''c3Ryb3ksdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBJKHRoaXMpfWZ1bmN0aW9uIE4oUyl7dmFyIFE9dGhpcyBpbnN0YW5jZW9mKEs9S3x8TCg2NzUzKSk7aWYoIVEmJiFWLmNhbGwoTix0aGlzKSlyZXR1cm4gbmV3IE4oUyk7dGhpcy5f''@;'; put 'put ''d3JpdGFibGVTdGF0ZT1uZXcgeChTLHRoaXMsUSksdGhpcy53cml0YWJsZT0hMCxTJiYoImZ1bmN0aW9uIj09dHlwZW9mIFMud3JpdGUmJih0aGlzLl93cml0ZT1TLndyaXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgUy53cml0ZXYmJih0aGlzLl93cml0ZXY9Uy53cml0ZXYpLCJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PVMuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIFMuZmluYWwmJih0aGlzLl9maW5hbD1TLmZpbmFsKSksRS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEYoUyxRLHJlLGZlLG1lLGtlLFRlKXtRLndyaXRlbGVuPWZlLFEud3JpdGVjYj1U''@;'; put 'put ''ZSxRLndyaXRpbmc9ITAsUS5zeW5jPSEwLFEuZGVzdHJveWVkP1Eub253cml0ZShuZXcgbGUoIndyaXRlIikpOnJlP1MuX3dyaXRldihtZSxRLm9ud3JpdGUpOlMuX3dyaXRlKG1lLGtlLFEub253cml0ZSksUS5zeW5jPSExfWZ1bmN0aW9uIGcoUyxRLHJlLGZlKXt2YXIgbWUsa2U7cmV8fCht''@;'; put 'put ''ZT1TLDA9PT0oa2U9USkubGVuZ3RoJiZrZS5uZWVkRHJhaW4mJihrZS5uZWVkRHJhaW49ITEsbWUuZW1pdCgiZHJhaW4iKSkpLFEucGVuZGluZ2NiLS0sZmUoKSxwKFMsUSl9ZnVuY3Rpb24gQyhTLFEpe1EuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgcmU9US5idWZmZXJlZFJlcXVlc3Q7aWYo''@;'; put 'put ''Uy5fd3JpdGV2JiZyZSYmcmUubmV4dCl7dmFyIG1lPW5ldyBBcnJheShRLmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxrZT1RLmNvcmtlZFJlcXVlc3RzRnJlZTtrZS5lbnRyeT1yZTtmb3IodmFyIFRlPTAsUGU9ITA7cmU7KW1lW1RlXT1yZSxyZS5pc0J1Znx8KFBlPSExKSxyZT1yZS5uZXh0LFRl''@;'; put 'put ''Kz0xO21lLmFsbEJ1ZmZlcnM9UGUsRihTLFEsITAsUS5sZW5ndGgsbWUsIiIsa2UuZmluaXNoKSxRLnBlbmRpbmdjYisrLFEubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLGtlLm5leHQ/KFEuY29ya2VkUmVxdWVzdHNGcmVlPWtlLm5leHQsa2UubmV4dD1udWxsKTpRLmNvcmtlZFJlcXVlc3Rz''@;'; put 'put ''RnJlZT1uZXcgSShRKSxRLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO3JlOyl7dmFyIEZlPXJlLmNodW5rO2lmKEYoUyxRLCExLFEub2JqZWN0TW9kZT8xOkZlLmxlbmd0aCxGZSxyZS5lbmNvZGluZyxyZS5jYWxsYmFjaykscmU9cmUubmV4dCxRLmJ1ZmZlcmVkUmVxdWVzdENv''@;'; put 'put ''dW50LS0sUS53cml0aW5nKWJyZWFrfW51bGw9PT1yZSYmKFEubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX1RLmJ1ZmZlcmVkUmVxdWVzdD1yZSxRLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gTShTKXtyZXR1cm4gUy5lbmRpbmcmJjA9PT1TLmxlbmd0aCYmbnVsbD09PVMuYnVmZmVy''@;'; put 'put ''ZWRSZXF1ZXN0JiYhUy5maW5pc2hlZCYmIVMud3JpdGluZ31mdW5jdGlvbiB5KFMsUSl7Uy5fZmluYWwoZnVuY3Rpb24ocmUpe1EucGVuZGluZ2NiLS0scmUmJlkoUyxyZSksUS5wcmVmaW5pc2hlZD0hMCxTLmVtaXQoInByZWZpbmlzaCIpLHAoUyxRKX0pfWZ1bmN0aW9uIHAoUyxRKXt2YXIg''@;'; put 'put ''bWUsa2UscmU9TShRKTtpZihyZSYmKG1lPVMsKGtlPVEpLnByZWZpbmlzaGVkfHxrZS5maW5hbENhbGxlZHx8KCJmdW5jdGlvbiIhPXR5cGVvZiBtZS5fZmluYWx8fGtlLmRlc3Ryb3llZD8oa2UucHJlZmluaXNoZWQ9ITAsbWUuZW1pdCgicHJlZmluaXNoIikpOihrZS5wZW5kaW5nY2IrKyxr''@;'; put 'put ''ZS5maW5hbENhbGxlZD0hMCxKLm5leHRUaWNrKHksbWUsa2UpKSksMD09PVEucGVuZGluZ2NiJiYoUS5maW5pc2hlZD0hMCxTLmVtaXQoImZpbmlzaCIpLFEuYXV0b0Rlc3Ryb3kpKSl7dmFyIGZlPVMuX3JlYWRhYmxlU3RhdGU7KCFmZXx8ZmUuYXV0b0Rlc3Ryb3kmJmZlLmVuZEVtaXR0ZWQp''@;'; put 'put ''JiZTLmRlc3Ryb3koKX1yZXR1cm4gcmV9TCg1NzE3KShOLEUpLHgucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgUz10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxRPVtdO1M7KVEucHVzaChTKSxTPVMubmV4dDtyZXR1cm4gUX0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KHgucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6Ui5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQ''@;'; put 'put ''MDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8oVj1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNl''@;'; put 'put ''XSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTixTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKFMpe3JldHVybiEhVi5jYWxsKHRoaXMsUyl8fHRoaXM9PT1OJiZTJiZTLl93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgeH19KSk6Vj1mdW5jdGlvbihTKXtyZXR1cm4gUyBpbnN0YW5j''@;'; put 'put ''ZW9mIHRoaXN9LE4ucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtZKHRoaXMsbmV3IGllKX0sTi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oUyxRLHJlKXt2YXIgZmUsUGUsRmUsTmUsbWU9dGhpcy5fd3JpdGFibGVTdGF0ZSxrZT0hMSxUZT0hbWUub2JqZWN0TW9kZSYmKHouaXNCdWZmZXIo''@;'; put 'put ''ZmU9Uyl8fGZlIGluc3RhbmNlb2Ygaik7cmV0dXJuIFRlJiYhei5pc0J1ZmZlcihTKSYmKFM9ei5mcm9tKFMpKSwiZnVuY3Rpb24iPT10eXBlb2YgUSYmKHJlPVEsUT1udWxsKSxUZT9RPSJidWZmZXIiOlF8fChRPW1lLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIHJlJiYo''@;'; put 'put ''cmU9YiksbWUuZW5kaW5nPyhQZT10aGlzLEZlPXJlLE5lPW5ldyB1ZSxZKFBlLE5lKSxKLm5leHRUaWNrKEZlLE5lKSk6KFRlfHxmdW5jdGlvbihQZSxGZSxOZSxMZSl7dmFyIEJlO3JldHVybiBudWxsPT09TmU/QmU9bmV3IGRlOiJzdHJpbmciPT10eXBlb2YgTmV8fEZlLm9iamVjdE1vZGV8''@;'; put 'put ''fChCZT1uZXcgcSgiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIl0sTmUpKSwhQmV8fChZKFBlLEJlKSxKLm5leHRUaWNrKExlLEJlKSwhMSl9KHRoaXMsbWUsUyxyZSkpJiYobWUucGVuZGluZ2NiKyssa2U9ZnVuY3Rpb24oUGUsRmUsTmUsTGUsQmUsSGUpe2lmKCFOZSl7dmFyIFFlPShPZT1M''@;'; put 'put ''ZSwoSWU9RmUpLm9iamVjdE1vZGV8fCExPT09SWUuZGVjb2RlU3RyaW5nc3x8InN0cmluZyIhPXR5cGVvZiBPZXx8KE9lPXouZnJvbShPZSxCZSkpLE9lKTtMZSE9PVFlJiYoTmU9ITAsQmU9ImJ1ZmZlciIsTGU9UWUpfXZhciBJZSxPZSxtdD1GZS5vYmplY3RNb2RlPzE6TGUubGVuZ3RoO0Zl''@;'; put 'put ''Lmxlbmd0aCs9bXQ7dmFyIEtlPUZlLmxlbmd0aDxGZS5oaWdoV2F0ZXJNYXJrO2lmKEtlfHwoRmUubmVlZERyYWluPSEwKSxGZS53cml0aW5nfHxGZS5jb3JrZWQpe3ZhciB3ZT1GZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O0ZlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOkxlLGVuY29kaW5n''@;'; put 'put ''OkJlLGlzQnVmOk5lLGNhbGxiYWNrOkhlLG5leHQ6bnVsbH0sd2U/d2UubmV4dD1GZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OkZlLmJ1ZmZlcmVkUmVxdWVzdD1GZS5sYXN0QnVmZmVyZWRSZXF1ZXN0LEZlLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgRihQZSxGZSwhMSxtdCxMZSxCZSxI''@;'; put 'put ''ZSk7cmV0dXJuIEtlfSh0aGlzLG1lLFRlLFMsUSxyZSkpLGtlfSxOLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sTi5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5fd3JpdGFibGVTdGF0ZTtTLmNvcmtlZCYmKFMu''@;'; put 'put ''Y29ya2VkLS0sUy53cml0aW5nfHxTLmNvcmtlZHx8Uy5idWZmZXJQcm9jZXNzaW5nfHwhUy5idWZmZXJlZFJlcXVlc3R8fEModGhpcyxTKSl9LE4ucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbihTKXtpZigic3RyaW5nIj09dHlwZW9mIFMmJihTPVMudG9Mb3dlckNhc2Uo''@;'; put 'put ''KSksIShbImhleCIsInV0ZjgiLCJ1dGYtOCIsImFzY2lpIiwiYmluYXJ5IiwiYmFzZTY0IiwidWNzMiIsInVjcy0yIiwidXRmMTZsZSIsInV0Zi0xNmxlIiwicmF3Il0uaW5kZXhPZigoUysiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBjZShTKTtyZXR1cm4gdGhpcy5fd3JpdGFi''@;'; put 'put ''bGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9Uyx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTi5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRC''@;'; put 'put ''dWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTi5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxOLnByb3RvdHlwZS5fd3JpdGU9ZnVu''@;'; put 'put ''Y3Rpb24oUyxRLHJlKXtyZShuZXcgdGUoIl93cml0ZSgpIikpfSxOLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsTi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKFMsUSxyZSl7dmFyIGtlLFRlLGZlPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFM/KHJlPVMsUz1u''@;'; put 'put ''dWxsLFE9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIFEmJihyZT1RLFE9bnVsbCksbnVsbCE9UyYmdGhpcy53cml0ZShTLFEpLGZlLmNvcmtlZCYmKGZlLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLGZlLmVuZGluZ3x8KFRlPXJlLChrZT1mZSkuZW5kaW5nPSEwLHAodGhpcyxrZSksVGUmJihr''@;'; put 'put ''ZS5maW5pc2hlZD9KLm5leHRUaWNrKFRlKTp0aGlzLm9uY2UoImZpbmlzaCIsVGUpKSxrZS5lbmRlZD0hMCx0aGlzLndyaXRhYmxlPSExKSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTi5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJs''@;'; put 'put ''ZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKFMpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1TKX19KSxOLnByb3RvdHlwZS5kZXN0cm95PUcuZGVzdHJveSxOLnByb3RvdHlwZS5fdW5kZXN0cm95PUcudW5kZXN0cm95LE4ucHJvdG90''@;'; put 'put ''eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFMsUSl7UShTKX19LDU4NTA6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPUwoNDE1NSk7ZnVuY3Rpb24gSShkZSx1ZSxjZSl7cmV0dXJuKHVlPSJzeW1ib2wiPT10eXBlb2YoYj1mdW5jdGlvbih4LE4pe2lmKCJvYmplY3QiIT10eXBlb2YgeHx8''@;'; put 'put ''bnVsbD09PXgpcmV0dXJuIHg7dmFyIEY9eFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PUYpe3ZhciBnPUYuY2FsbCh4LCJzdHJpbmciKTtpZigib2JqZWN0IiE9dHlwZW9mIGcpcmV0dXJuIGc7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBh''@;'; put 'put ''IHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKHgpfSh1ZSkpP2I6U3RyaW5nKGIpKWluIGRlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShkZSx1ZSx7dmFsdWU6Y2UsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpkZVt1ZV09Y2UsZGU7dmFyIGJ9dmFy''@;'; put 'put ''IFI9TCg4NjEwKSxFPVN5bWJvbCgibGFzdFJlc29sdmUiKSx6PVN5bWJvbCgibGFzdFJlamVjdCIpLGo9U3ltYm9sKCJlcnJvciIpLFY9U3ltYm9sKCJlbmRlZCIpLEc9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLFc9U3ltYm9sKCJoYW5kbGVQcm9taXNlIiksVT1TeW1ib2woInN0cmVhbSIpO2Z1''@;'; put 'put ''bmN0aW9uIHEoZGUsdWUpe3JldHVybnt2YWx1ZTpkZSxkb25lOnVlfX1mdW5jdGlvbiB0ZShkZSl7dmFyIHVlPWRlW0VdO2lmKG51bGwhPT11ZSl7dmFyIGNlPWRlW1VdLnJlYWQoKTtudWxsIT09Y2UmJihkZVtHXT1udWxsLGRlW0VdPW51bGwsZGVbel09bnVsbCx1ZShxKGNlLCExKSkpfX1m''@;'; put 'put ''dW5jdGlvbiBuZShkZSl7Si5uZXh0VGljayh0ZSxkZSl9dmFyIGllPU9iamVjdC5nZXRQcm90b3R5cGVPZihmdW5jdGlvbigpe30pLGxlPU9iamVjdC5zZXRQcm90b3R5cGVPZigoSShLPXtnZXQgc3RyZWFtKCl7cmV0dXJuIHRoaXNbVV19LG5leHQ6ZnVuY3Rpb24oKXt2YXIgZGU9dGhpcyx1''@;'; put 'put ''ZT10aGlzW2pdO2lmKG51bGwhPT11ZSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodWUpO2lmKHRoaXNbVl0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShxKHZvaWQgMCwhMCkpO2lmKHRoaXNbVV0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih4LE4pe0oubmV4dFRpY2soZnVu''@;'; put 'put ''Y3Rpb24oKXtkZVtqXT9OKGRlW2pdKTp4KHEodm9pZCAwLCEwKSl9KX0pO3ZhciBjZSx4LE4sWT10aGlzW0ddO2lmKFkpY2U9bmV3IFByb21pc2UoKHg9WSxOPXRoaXMsZnVuY3Rpb24oRixnKXt4LnRoZW4oZnVuY3Rpb24oKXtOW1ZdP0YocSh2b2lkIDAsITApKTpOW1ddKEYsZyl9LGcpfSkp''@;'; put 'put ''O2Vsc2V7dmFyIGI9dGhpc1tVXS5yZWFkKCk7aWYobnVsbCE9PWIpcmV0dXJuIFByb21pc2UucmVzb2x2ZShxKGIsITEpKTtjZT1uZXcgUHJvbWlzZSh0aGlzW1ddKX1yZXR1cm4gdGhpc1tHXT1jZSxjZX19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxJ''@;'; put 'put ''KEssInJldHVybiIsZnVuY3Rpb24oKXt2YXIgZGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odWUsY2Upe2RlW1VdLmRlc3Ryb3kobnVsbCxmdW5jdGlvbihZKXtZP2NlKFkpOnVlKHEodm9pZCAwLCEwKSl9KX0pfSksSyksaWUpO0guZXhwb3J0cz1mdW5jdGlvbihkZSl7dmFy''@;'; put 'put ''IHVlLGNlPU9iamVjdC5jcmVhdGUobGUsKEkodWU9e30sVSx7dmFsdWU6ZGUsd3JpdGFibGU6ITB9KSxJKHVlLEUse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxJKHVlLHose3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxJKHVlLGose3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxJKHVlLFYs''@;'; put 'put ''e3ZhbHVlOmRlLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsd3JpdGFibGU6ITB9KSxJKHVlLFcse3ZhbHVlOmZ1bmN0aW9uKFksYil7dmFyIHg9Y2VbVV0ucmVhZCgpO3g/KGNlW0ddPW51bGwsY2VbRV09bnVsbCxjZVt6XT1udWxsLFkocSh4LCExKSkpOihjZVtFXT1ZLGNlW3pdPWIpfSx3''@;'; put 'put ''cml0YWJsZTohMH0pLHVlKSk7cmV0dXJuIGNlW0ddPW51bGwsUihkZSxmdW5jdGlvbihZKXtpZihZJiYiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiIT09WS5jb2RlKXt2YXIgYj1jZVt6XTtyZXR1cm4gbnVsbCE9PWImJihjZVtHXT1udWxsLGNlW0VdPW51bGwsY2Vbel09bnVsbCxiKFkp''@;'; put 'put ''KSx2b2lkKGNlW2pdPVkpfXZhciB4PWNlW0VdO251bGwhPT14JiYoY2VbR109bnVsbCxjZVtFXT1udWxsLGNlW3pdPW51bGwseChxKHZvaWQgMCwhMCkpKSxjZVtWXT0hMH0pLGRlLm9uKCJyZWFkYWJsZSIsbmUuYmluZChudWxsLGNlKSksY2V9fSw3MzI3OihILEIsTCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7ZnVuY3Rpb24gSyhHLFcpe3ZhciBVPU9iamVjdC5rZXlzKEcpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBxPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoRyk7VyYmKHE9cS5maWx0ZXIoZnVuY3Rpb24odGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlEZXNjcmlwdG9yKEcsdGUpLmVudW1lcmFibGV9KSksVS5wdXNoLmFwcGx5KFUscSl9cmV0dXJuIFV9ZnVuY3Rpb24gSihHKXtmb3IodmFyIFc9MTtXPGFyZ3VtZW50cy5sZW5ndGg7VysrKXt2YXIgVT1udWxsIT1hcmd1bWVudHNbV10/YXJndW1lbnRzW1ddOnt9O1clMj9LKE9iamVjdChV''@;'; put 'put ''KSwhMCkuZm9yRWFjaChmdW5jdGlvbihxKXtJKEcscSxVW3FdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEcsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoVSkpOksoT2JqZWN0KFUpKS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KHEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShHLHEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVLHEpKX0pfXJldHVybiBHfWZ1bmN0aW9uIEkoRyxXLFUpe3JldHVybihXPUUoVykpaW4gRz9PYmplY3QuZGVmaW5lUHJvcGVydHkoRyxXLHt2YWx1ZTpVLGVudW1lcmFibGU6ITAs''@;'; put 'put ''Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6R1tXXT1VLEd9ZnVuY3Rpb24gRShHKXt2YXIgVz1mdW5jdGlvbihVLHEpe2lmKCJvYmplY3QiIT10eXBlb2YgVXx8bnVsbD09PVUpcmV0dXJuIFU7dmFyIHRlPVVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT10ZSl7dmFyIG5l''@;'; put 'put ''PXRlLmNhbGwoVSwic3RyaW5nIik7aWYoIm9iamVjdCIhPXR5cGVvZiBuZSlyZXR1cm4gbmU7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4gU3RyaW5nKFUpfShHKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9m''@;'; put 'put ''IFc/VzpTdHJpbmcoVyl9dmFyIHo9TCg4NzY0KS5CdWZmZXIsaj1MKDIzNjEpLmluc3BlY3QsVj1qJiZqLmN1c3RvbXx8Imluc3BlY3QiO0guZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIEcoKXsoZnVuY3Rpb24odGUsbmUpe2lmKCEodGUgaW5zdGFuY2VvZiBuZSkpdGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLEcpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIFcsVTtyZXR1cm4gVz1HLChVPVt7a2V5OiJwdXNoIix2YWx1ZTpmdW5jdGlvbih0ZSl7dmFyIG5lPXtkYXRh''@;'; put 'put ''OnRlLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1uZTp0aGlzLmhlYWQ9bmUsdGhpcy50YWlsPW5lLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJ1bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbih0ZSl7dmFyIG5lPXtkYXRhOnRlLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5s''@;'; put 'put ''ZW5ndGgmJih0aGlzLnRhaWw9bmUpLHRoaXMuaGVhZD1uZSwrK3RoaXMubGVuZ3RofX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdGU9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIHRoaXMuaGVhZD0xPT09dGhpcy5sZW5ndGg/dGhpcy50YWls''@;'; put 'put ''PW51bGw6dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCx0ZX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0aW9uKHRlKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0''@;'; put 'put ''dXJuIiI7Zm9yKHZhciBuZT10aGlzLmhlYWQsaWU9IiIrbmUuZGF0YTtuZT1uZS5uZXh0OylpZSs9dGUrbmUuZGF0YTtyZXR1cm4gaWV9fSx7a2V5OiJjb25jYXQiLHZhbHVlOmZ1bmN0aW9uKHRlKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIHouYWxsb2MoMCk7Zm9yKHZhciBkZT16LmFs''@;'; put 'put ''bG9jVW5zYWZlKHRlPj4+MCksdWU9dGhpcy5oZWFkLGNlPTA7dWU7KXoucHJvdG90eXBlLmNvcHkuY2FsbCh1ZS5kYXRhLGRlLGNlKSxjZSs9dWUuZGF0YS5sZW5ndGgsdWU9dWUubmV4dDtyZXR1cm4gZGV9fSx7a2V5OiJjb25zdW1lIix2YWx1ZTpmdW5jdGlvbih0ZSxuZSl7dmFyIGllO3Jl''@;'; put 'put ''dHVybiB0ZTx0aGlzLmhlYWQuZGF0YS5sZW5ndGg/KGllPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsdGUpLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKHRlKSk6aWU9dGU9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOm5lP3RoaXMuX2dldFN0cmluZyh0''@;'; put 'put ''ZSk6dGhpcy5fZ2V0QnVmZmVyKHRlKSxpZX19LHtrZXk6ImZpcnN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKHRlKXt2YXIgbmU9dGhpcy5oZWFkLGllPTEsbGU9bmUuZGF0YTtmb3IodGUtPWxlLmxl''@;'; put 'put ''bmd0aDtuZT1uZS5uZXh0Oyl7dmFyIGRlPW5lLmRhdGEsdWU9dGU+ZGUubGVuZ3RoP2RlLmxlbmd0aDp0ZTtpZihsZSs9dWU9PT1kZS5sZW5ndGg/ZGU6ZGUuc2xpY2UoMCx0ZSksMD09KHRlLT11ZSkpe3VlPT09ZGUubGVuZ3RoPygrK2llLHRoaXMuaGVhZD1uZS5uZXh0P25lLm5leHQ6dGhp''@;'; put 'put ''cy50YWlsPW51bGwpOih0aGlzLmhlYWQ9bmUsbmUuZGF0YT1kZS5zbGljZSh1ZSkpO2JyZWFrfSsraWV9cmV0dXJuIHRoaXMubGVuZ3RoLT1pZSxsZX19LHtrZXk6Il9nZXRCdWZmZXIiLHZhbHVlOmZ1bmN0aW9uKHRlKXt2YXIgbmU9ei5hbGxvY1Vuc2FmZSh0ZSksaWU9dGhpcy5oZWFkLGxl''@;'; put 'put ''PTE7Zm9yKGllLmRhdGEuY29weShuZSksdGUtPWllLmRhdGEubGVuZ3RoO2llPWllLm5leHQ7KXt2YXIgZGU9aWUuZGF0YSx1ZT10ZT5kZS5sZW5ndGg/ZGUubGVuZ3RoOnRlO2lmKGRlLmNvcHkobmUsbmUubGVuZ3RoLXRlLDAsdWUpLDA9PSh0ZS09dWUpKXt1ZT09PWRlLmxlbmd0aD8oKyts''@;'; put 'put ''ZSx0aGlzLmhlYWQ9aWUubmV4dD9pZS5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWllLGllLmRhdGE9ZGUuc2xpY2UodWUpKTticmVha30rK2xlfXJldHVybiB0aGlzLmxlbmd0aC09bGUsbmV9fSx7a2V5OlYsdmFsdWU6ZnVuY3Rpb24odGUsbmUpe3JldHVybiBqKHRoaXMsSihK''@;'; put 'put ''KHt9LG5lKSx7fSx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OiExfSkpfX1dKSYmZnVuY3Rpb24gUihHLFcpe2Zvcih2YXIgVT0wO1U8Vy5sZW5ndGg7VSsrKXt2YXIgcT1XW1VdO3EuZW51bWVyYWJsZT1xLmVudW1lcmFibGV8fCExLHEuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBxJiYocS53''@;'; put 'put ''cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KEcsRShxLmtleSkscSl9fShXLnByb3RvdHlwZSxVKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVywicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxHfSgpfSwxMTk1OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KTtm''@;'; put 'put ''dW5jdGlvbiBKKEUseil7UihFLHopLEkoRSl9ZnVuY3Rpb24gSShFKXtFLl93cml0YWJsZVN0YXRlJiYhRS5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2V8fEUuX3JlYWRhYmxlU3RhdGUmJiFFLl9yZWFkYWJsZVN0YXRlLmVtaXRDbG9zZXx8RS5lbWl0KCJjbG9zZSIpfWZ1bmN0aW9uIFIoRSx6''@;'; put 'put ''KXtFLmVtaXQoImVycm9yIix6KX1ILmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24oRSx6KXt2YXIgaj10aGlzO3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZHx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5k''@;'; put 'put ''ZXN0cm95ZWQ/KHo/eihFKTpFJiYodGhpcy5fd3JpdGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZHx8KHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLEsubmV4dFRpY2soUix0aGlzLEUpKTpLLm5leHRUaWNrKFIsdGhpcyxFKSksdGhpcyk6KHRo''@;'; put 'put ''aXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl9kZXN0cm95KEV8fG51bGwsZnVuY3Rpb24oVyl7IXomJlc/ai5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZT9qLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9LLm5leHRUaWNrKEksaik6KGouX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLEsubmV4dFRpY2soSixqLFcpKTpLLm5leHRUaWNrKEosaixXKTp6PyhLLm5leHRUaWNrKEksaikseihXKSk6Sy5uZXh0VGljayhJLGopfSksdGhp''@;'; put 'put ''cyl9LHVuZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVt''@;'; put 'put ''aXR0ZWQ9ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5f''@;'; put 'put ''d3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24oRSx6KXt2YXIgaj1FLl9yZWFkYWJsZVN0YXRlLFY9RS5fd3JpdGFibGVT''@;'; put 'put ''dGF0ZTtqJiZqLmF1dG9EZXN0cm95fHxWJiZWLmF1dG9EZXN0cm95P0UuZGVzdHJveSh6KTpFLmVtaXQoImVycm9yIix6KX19fSw4NjEwOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0MjgxKS5xLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIEooKXt9SC5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uIEkoUixFLHope2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBFKXJldHVybiBJKFIsbnVsbCxFKTt2YXIgZGUsdWU7RXx8KEU9e30pLGRlPXp8fEosdWU9ITEsej1mdW5jdGlvbigpe2lmKCF1ZSl7dWU9ITA7Zm9yKHZhciBjZT1hcmd1bWVudHMubGVuZ3RoLFk9bmV3IEFycmF5''@;'; put 'put ''KGNlKSxiPTA7YjxjZTtiKyspWVtiXT1hcmd1bWVudHNbYl07ZGUuYXBwbHkodGhpcyxZKX19O3ZhciBqPUUucmVhZGFibGV8fCExIT09RS5yZWFkYWJsZSYmUi5yZWFkYWJsZSxWPUUud3JpdGFibGV8fCExIT09RS53cml0YWJsZSYmUi53cml0YWJsZSxHPWZ1bmN0aW9uKCl7Ui53cml0YWJs''@;'; put 'put ''ZXx8VSgpfSxXPVIuX3dyaXRhYmxlU3RhdGUmJlIuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsVT1mdW5jdGlvbigpe1Y9ITEsVz0hMCxqfHx6LmNhbGwoUil9LHE9Ui5fcmVhZGFibGVTdGF0ZSYmUi5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHRlPWZ1bmN0aW9uKCl7aj0hMSxxPSEwLFZ8''@;'; put 'put ''fHouY2FsbChSKX0sbmU9ZnVuY3Rpb24oZGUpe3ouY2FsbChSLGRlKX0saWU9ZnVuY3Rpb24oKXt2YXIgZGU7cmV0dXJuIGomJiFxPyhSLl9yZWFkYWJsZVN0YXRlJiZSLl9yZWFkYWJsZVN0YXRlLmVuZGVkfHwoZGU9bmV3IEspLHouY2FsbChSLGRlKSk6ViYmIVc/KFIuX3dyaXRhYmxlU3Rh''@;'; put 'put ''dGUmJlIuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fChkZT1uZXcgSyksei5jYWxsKFIsZGUpKTp2b2lkIDB9LGxlPWZ1bmN0aW9uKCl7Ui5yZXEub24oImZpbmlzaCIsVSl9O3JldHVybiBmdW5jdGlvbihkZSl7cmV0dXJuIGRlLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIGRlLmFib3J0''@;'; put 'put ''fShSKT8oUi5vbigiY29tcGxldGUiLFUpLFIub24oImFib3J0IixpZSksUi5yZXE/bGUoKTpSLm9uKCJyZXF1ZXN0IixsZSkpOlYmJiFSLl93cml0YWJsZVN0YXRlJiYoUi5vbigiZW5kIixHKSxSLm9uKCJjbG9zZSIsRykpLFIub24oImVuZCIsdGUpLFIub24oImZpbmlzaCIsVSksITEhPT1F''@;'; put 'put ''LmVycm9yJiZSLm9uKCJlcnJvciIsbmUpLFIub24oImNsb3NlIixpZSksZnVuY3Rpb24oKXtSLnJlbW92ZUxpc3RlbmVyKCJjb21wbGV0ZSIsVSksUi5yZW1vdmVMaXN0ZW5lcigiYWJvcnQiLGllKSxSLnJlbW92ZUxpc3RlbmVyKCJyZXF1ZXN0IixsZSksUi5yZXEmJlIucmVxLnJlbW92ZUxp''@;'; put 'put ''c3RlbmVyKCJmaW5pc2giLFUpLFIucmVtb3ZlTGlzdGVuZXIoImVuZCIsRyksUi5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLEcpLFIucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsVSksUi5yZW1vdmVMaXN0ZW5lcigiZW5kIix0ZSksUi5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLG5lKSxSLnJlbW92''@;'; put 'put ''ZUxpc3RlbmVyKCJjbG9zZSIsaWUpfX19LDUxNjc6SD0+e0guZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSw5OTQ2OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEssSj1MKDQyODEp''@;'; put 'put ''LnEsST1KLkVSUl9NSVNTSU5HX0FSR1MsUj1KLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIEUoVil7aWYoVil0aHJvdyBWfWZ1bmN0aW9uIHooVil7VigpfWZ1bmN0aW9uIGooVixHKXtyZXR1cm4gVi5waXBlKEcpfUguZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgVj1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoLEc9bmV3IEFycmF5KFYpLFc9MDtXPFY7VysrKUdbV109YXJndW1lbnRzW1ddO3ZhciBVLG5lLHE9KG5lPUcpLmxlbmd0aD8iZnVuY3Rpb24iIT10eXBlb2YgbmVbbmUubGVuZ3RoLTFdP0U6bmUucG9wKCk6RTtpZihBcnJheS5pc0FycmF5KEdbMF0pJiYoRz1HWzBdKSxHLmxl''@;'; put 'put ''bmd0aDwyKXRocm93IG5ldyBJKCJzdHJlYW1zIik7dmFyIHRlPUcubWFwKGZ1bmN0aW9uKG5lLGllKXt2YXIgbGU9aWU8Ry5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24oZGUsdWUsY2UsWSl7dmFyIE4sRjtOPVksRj0hMSxZPWZ1bmN0aW9uKCl7Rnx8KEY9ITAsTi5hcHBseSh2b2lkIDAsYXJn''@;'; put 'put ''dW1lbnRzKSl9O3ZhciBiPSExO2RlLm9uKCJjbG9zZSIsZnVuY3Rpb24oKXtiPSEwfSksdm9pZCAwPT09SyYmKEs9TCg4NjEwKSksSyhkZSx7cmVhZGFibGU6dWUsd3JpdGFibGU6Y2V9LGZ1bmN0aW9uKE4pe2lmKE4pcmV0dXJuIFkoTik7Yj0hMCxZKCl9KTt2YXIgeD0hMTtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oTil7aWYoIWImJiF4KXJldHVybiB4PSEwLGZ1bmN0aW9uKEYpe3JldHVybiBGLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIEYuYWJvcnR9KGRlKT9kZS5hYm9ydCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZS5kZXN0cm95P2RlLmRlc3Ryb3koKTp2b2lkIFkoTnx8bmV3IFIo''@;'; put 'put ''InBpcGUiKSl9fShuZSxsZSxpZT4wLGZ1bmN0aW9uKGRlKXtVfHwoVT1kZSksZGUmJnRlLmZvckVhY2goeiksbGV8fCh0ZS5mb3JFYWNoKHopLHEoVSkpfSl9KTtyZXR1cm4gRy5yZWR1Y2Uoail9fSwyNDU3OihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg0MjgxKS5xLkVSUl9JTlZB''@;'; put 'put ''TElEX09QVF9WQUxVRTtILmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24oSixJLFIsRSl7dmFyIGosej1udWxsIT0oaj1JKS5oaWdoV2F0ZXJNYXJrP2ouaGlnaFdhdGVyTWFyazpFP2pbUl06bnVsbDtpZihudWxsIT16KXtpZighaXNGaW5pdGUoeil8fE1hdGguZmxvb3Ioeikh''@;'; put 'put ''PT16fHx6PDApdGhyb3cgbmV3IEsoRT9SOiJoaWdoV2F0ZXJNYXJrIix6KTtyZXR1cm4gTWF0aC5mbG9vcih6KX1yZXR1cm4gSi5vYmplY3RNb2RlPzE2OjE2Mzg0fX19LDI1MDM6KEgsQixMKT0+e0guZXhwb3J0cz1MKDcxODcpLkV2ZW50RW1pdHRlcn0sODQ3MzooSCxCLEwpPT57KEI9SC5l''@;'; put 'put ''eHBvcnRzPUwoOTQ4MSkpLlN0cmVhbT1CLEIuUmVhZGFibGU9QixCLldyaXRhYmxlPUwoNDIyOSksQi5EdXBsZXg9TCg2NzUzKSxCLlRyYW5zZm9ybT1MKDQ2MDUpLEIuUGFzc1Rocm91Z2g9TCgyNzI1KSxCLmZpbmlzaGVkPUwoODYxMCksQi5waXBlbGluZT1MKDk5NDYpfSw5ODQ6KEgsQixM''@;'; put 'put ''KT0+e3ZhciBLPUwoNDE1NSk7Y29uc3QgSj1MKDkyODIpLEk9TCgyNTIwKSxSPUwoNzIxNyk7bGV0IEU7dHJ5e0U9TCgyODg0KX1jYXRjaHt9Y29uc3Qgej17bm9zb3J0OiEwLHNpbGVudDohMH07bGV0IGo9MDtjb25zdCBWPSJ3aW4zMiI9PT1LLnBsYXRmb3JtLEc9Y2U9PntpZihbInVubGlu''@;'; put 'put ''ayIsImNobW9kIiwic3RhdCIsImxzdGF0Iiwicm1kaXIiLCJyZWFkZGlyIl0uZm9yRWFjaChZPT57Y2VbWV09Y2VbWV18fFJbWV0sY2VbWSs9IlN5bmMiXT1jZVtZXXx8UltZXX0pLGNlLm1heEJ1c3lUcmllcz1jZS5tYXhCdXN5VHJpZXN8fDMsY2UuZW1maWxlV2FpdD1jZS5lbWZpbGVXYWl0''@;'; put 'put ''fHwxZTMsITE9PT1jZS5nbG9iJiYoY2UuZGlzYWJsZUdsb2I9ITApLCEwIT09Y2UuZGlzYWJsZUdsb2ImJnZvaWQgMD09PUUpdGhyb3cgRXJyb3IoImdsb2IgZGVwZW5kZW5jeSBub3QgZm91bmQsIHNldCBgb3B0aW9ucy5kaXNhYmxlR2xvYiA9IHRydWVgIGlmIGludGVudGlvbmFsIik7Y2Uu''@;'; put 'put ''ZGlzYWJsZUdsb2I9Y2UuZGlzYWJsZUdsb2J8fCExLGNlLmdsb2I9Y2UuZ2xvYnx8en0sVz0oY2UsWSxiKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiBZJiYoYj1ZLFk9e30pLEooY2UsInJpbXJhZjogbWlzc2luZyBwYXRoIiksSi5lcXVhbCh0eXBlb2YgY2UsInN0cmluZyIsInJpbXJhZjogcGF0''@;'; put 'put ''aCBzaG91bGQgYmUgYSBzdHJpbmciKSxKLmVxdWFsKHR5cGVvZiBiLCJmdW5jdGlvbiIsInJpbXJhZjogY2FsbGJhY2sgZnVuY3Rpb24gcmVxdWlyZWQiKSxKKFksInJpbXJhZjogaW52YWxpZCBvcHRpb25zIGFyZ3VtZW50IHByb3ZpZGVkIiksSi5lcXVhbCh0eXBlb2YgWSwib2JqZWN0Iiwi''@;'; put 'put ''cmltcmFmOiBvcHRpb25zIHNob3VsZCBiZSBvYmplY3QiKSxHKFkpO2xldCB4PTAsTj1udWxsLEY9MDtjb25zdCBnPShDLE0pPT5DP2IoQyk6KEY9TS5sZW5ndGgsMD09PUY/YigpOnZvaWQgTS5mb3JFYWNoKHk9Pntjb25zdCBwPVM9PntpZihTKXtpZigoIkVCVVNZIj09PVMuY29kZXx8IkVO''@;'; put 'put ''T1RFTVBUWSI9PT1TLmNvZGV8fCJFUEVSTSI9PT1TLmNvZGUpJiZ4PFkubWF4QnVzeVRyaWVzKXJldHVybiB4Kyssc2V0VGltZW91dCgoKT0+VSh5LFkscCksMTAwKngpO2lmKCJFTUZJTEUiPT09Uy5jb2RlJiZqPFkuZW1maWxlV2FpdClyZXR1cm4gc2V0VGltZW91dCgoKT0+VSh5LFkscCks''@;'; put 'put ''aisrKTsiRU5PRU5UIj09PVMuY29kZSYmKFM9bnVsbCl9aj0wLE49Tnx8UywwPT0tLUYmJmIoTil9O1UoeSxZLHApfSkpO2lmKFkuZGlzYWJsZUdsb2J8fCFFLmhhc01hZ2ljKGNlKSlyZXR1cm4gZyhudWxsLFtjZV0pO1kubHN0YXQoY2UsKEMsTSk9PntpZighQylyZXR1cm4gZyhudWxsLFtj''@;'; put 'put ''ZV0pO0UoY2UsWS5nbG9iLGcpfSl9LFU9KGNlLFksYik9PntKKGNlKSxKKFkpLEooImZ1bmN0aW9uIj09dHlwZW9mIGIpLFkubHN0YXQoY2UsKHgsTik9PngmJiJFTk9FTlQiPT09eC5jb2RlP2IobnVsbCk6KHgmJiJFUEVSTSI9PT14LmNvZGUmJlYmJnEoY2UsWSx4LGIpLE4mJk4uaXNEaXJl''@;'; put 'put ''Y3RvcnkoKT9uZShjZSxZLHgsYik6dm9pZCBZLnVubGluayhjZSxGPT57aWYoRil7aWYoIkVOT0VOVCI9PT1GLmNvZGUpcmV0dXJuIGIobnVsbCk7aWYoIkVQRVJNIj09PUYuY29kZSlyZXR1cm4gVj9xKGNlLFksRixiKTpuZShjZSxZLEYsYik7aWYoIkVJU0RJUiI9PT1GLmNvZGUpcmV0dXJu''@;'; put 'put ''IG5lKGNlLFksRixiKX1yZXR1cm4gYihGKX0pKSl9LHE9KGNlLFksYix4KT0+e0ooY2UpLEooWSksSigiZnVuY3Rpb24iPT10eXBlb2YgeCksWS5jaG1vZChjZSw0MzgsTj0+e04/eCgiRU5PRU5UIj09PU4uY29kZT9udWxsOmIpOlkuc3RhdChjZSwoRixnKT0+e0Y/eCgiRU5PRU5UIj09PUYu''@;'; put 'put ''Y29kZT9udWxsOmIpOmcuaXNEaXJlY3RvcnkoKT9uZShjZSxZLGIseCk6WS51bmxpbmsoY2UseCl9KX0pfSx0ZT0oY2UsWSxiKT0+e0ooY2UpLEooWSk7dHJ5e1kuY2htb2RTeW5jKGNlLDQzOCl9Y2F0Y2goTil7aWYoIkVOT0VOVCI9PT1OLmNvZGUpcmV0dXJuO3Rocm93IGJ9bGV0IHg7dHJ5''@;'; put 'put ''e3g9WS5zdGF0U3luYyhjZSl9Y2F0Y2goTil7aWYoIkVOT0VOVCI9PT1OLmNvZGUpcmV0dXJuO3Rocm93IGJ9eC5pc0RpcmVjdG9yeSgpP2RlKGNlLFksYik6WS51bmxpbmtTeW5jKGNlKX0sbmU9KGNlLFksYix4KT0+e0ooY2UpLEooWSksSigiZnVuY3Rpb24iPT10eXBlb2YgeCksWS5ybWRp''@;'; put 'put ''cihjZSxOPT57IU58fCJFTk9URU1QVFkiIT09Ti5jb2RlJiYiRUVYSVNUIiE9PU4uY29kZSYmIkVQRVJNIiE9PU4uY29kZT94KE4mJiJFTk9URElSIj09PU4uY29kZT9iOk4pOmllKGNlLFkseCl9KX0saWU9KGNlLFksYik9PntKKGNlKSxKKFkpLEooImZ1bmN0aW9uIj09dHlwZW9mIGIpLFku''@;'; put 'put ''cmVhZGRpcihjZSwoeCxOKT0+e2lmKHgpcmV0dXJuIGIoeCk7bGV0IEYsZz1OLmxlbmd0aDtpZigwPT09ZylyZXR1cm4gWS5ybWRpcihjZSxiKTtOLmZvckVhY2goQz0+e1coSS5qb2luKGNlLEMpLFksTT0+e2lmKCFGKXJldHVybiBNP2IoRj1NKTp2b2lkKDA9PS0tZyYmWS5ybWRpcihjZSxi''@;'; put 'put ''KSl9KX0pfSl9LGxlPShjZSxZKT0+e2xldCBiO2lmKEcoWT1ZfHx7fSksSihjZSwicmltcmFmOiBtaXNzaW5nIHBhdGgiKSxKLmVxdWFsKHR5cGVvZiBjZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBhIHN0cmluZyIpLEooWSwicmltcmFmOiBtaXNzaW5nIG9wdGlvbnMiKSxK''@;'; put 'put ''LmVxdWFsKHR5cGVvZiBZLCJvYmplY3QiLCJyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpLFkuZGlzYWJsZUdsb2J8fCFFLmhhc01hZ2ljKGNlKSliPVtjZV07ZWxzZSB0cnl7WS5sc3RhdFN5bmMoY2UpLGI9W2NlXX1jYXRjaHtiPUUuc3luYyhjZSxZLmdsb2IpfWlmKGIubGVu''@;'; put 'put ''Z3RoKWZvcihsZXQgeD0wO3g8Yi5sZW5ndGg7eCsrKXtjb25zdCBOPWJbeF07bGV0IEY7dHJ5e0Y9WS5sc3RhdFN5bmMoTil9Y2F0Y2goZyl7aWYoIkVOT0VOVCI9PT1nLmNvZGUpcmV0dXJuOyJFUEVSTSI9PT1nLmNvZGUmJlYmJnRlKE4sWSxnKX10cnl7RiYmRi5pc0RpcmVjdG9yeSgpP2Rl''@;'; put 'put ''KE4sWSxudWxsKTpZLnVubGlua1N5bmMoTil9Y2F0Y2goZyl7aWYoIkVOT0VOVCI9PT1nLmNvZGUpcmV0dXJuO2lmKCJFUEVSTSI9PT1nLmNvZGUpcmV0dXJuIFY/dGUoTixZLGcpOmRlKE4sWSxnKTtpZigiRUlTRElSIiE9PWcuY29kZSl0aHJvdyBnO2RlKE4sWSxnKX19fSxkZT0oY2UsWSxi''@;'; put 'put ''KT0+e0ooY2UpLEooWSk7dHJ5e1kucm1kaXJTeW5jKGNlKX1jYXRjaCh4KXtpZigiRU5PRU5UIj09PXguY29kZSlyZXR1cm47aWYoIkVOT1RESVIiPT09eC5jb2RlKXRocm93IGI7IkVOT1RFTVBUWSIhPT14LmNvZGUmJiJFRVhJU1QiIT09eC5jb2RlJiYiRVBFUk0iIT09eC5jb2RlfHx1ZShj''@;'; put 'put ''ZSxZKX19LHVlPShjZSxZKT0+e0ooY2UpLEooWSksWS5yZWFkZGlyU3luYyhjZSkuZm9yRWFjaChOPT5sZShJLmpvaW4oY2UsTiksWSkpO2NvbnN0IGI9Vj8xMDA6MTtsZXQgeD0wO2Zvcig7Oyl7bGV0IE49ITA7dHJ5e2NvbnN0IEY9WS5ybWRpclN5bmMoY2UsWSk7cmV0dXJuIE49ITEsRn1m''@;'; put 'put ''aW5hbGx5e2lmKCsreDxiJiZOKWNvbnRpbnVlfX19O0guZXhwb3J0cz1XLFcuc3luYz1sZX0sOTc4NTooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoODc2NCkuQnVmZmVyLEo9TCg1NzE3KSxJPUwoMzM0OSksUj1uZXcgQXJyYXkoMTYpLEU9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAs''@;'; put 'put ''MTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwx''@;'; put 'put ''M10sej1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwx''@;'; put 'put ''MCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxqPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwx''@;'; put 'put ''NSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxWPVs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4''@;'; put 'put ''LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSxHPVswLDE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDI4NDA4NTM4MzhdLFc9WzEz''@;'; put 'put ''NTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF07ZnVuY3Rpb24gVSgpe0kuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1''@;'; put 'put ''MjB9ZnVuY3Rpb24gcSh1ZSxjZSl7cmV0dXJuIHVlPDxjZXx1ZT4+PjMyLWNlfWZ1bmN0aW9uIHRlKHVlLGNlLFksYix4LE4sRixnKXtyZXR1cm4gcSh1ZSsoY2VeWV5iKStOK0Z8MCxnKSt4fDB9ZnVuY3Rpb24gbmUodWUsY2UsWSxiLHgsTixGLGcpe3JldHVybiBxKHVlKyhjZSZZfH5jZSZi''@;'; put 'put ''KStOK0Z8MCxnKSt4fDB9ZnVuY3Rpb24gaWUodWUsY2UsWSxiLHgsTixGLGcpe3JldHVybiBxKHVlKygoY2V8flkpXmIpK04rRnwwLGcpK3h8MH1mdW5jdGlvbiBsZSh1ZSxjZSxZLGIseCxOLEYsZyl7cmV0dXJuIHEodWUrKGNlJmJ8WSZ+YikrTitGfDAsZykreHwwfWZ1bmN0aW9uIGRlKHVl''@;'; put 'put ''LGNlLFksYix4LE4sRixnKXtyZXR1cm4gcSh1ZSsoY2VeKFl8fmIpKStOK0Z8MCxnKSt4fDB9SihVLEkpLFUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIHVlPVIsY2U9MDtjZTwxNjsrK2NlKXVlW2NlXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KmNlKTtmb3IodmFy''@;'; put 'put ''IFk9MHx0aGlzLl9hLGI9MHx0aGlzLl9iLHg9MHx0aGlzLl9jLE49MHx0aGlzLl9kLEY9MHx0aGlzLl9lLGc9MHx0aGlzLl9hLEM9MHx0aGlzLl9iLE09MHx0aGlzLl9jLHk9MHx0aGlzLl9kLHA9MHx0aGlzLl9lLFM9MDtTPDgwO1MrPTEpe3ZhciBRLHJlO1M8MTY/KFE9dGUoWSxiLHgsTixG''@;'; put 'put ''LHVlW0VbU11dLEdbMF0saltTXSkscmU9ZGUoZyxDLE0seSxwLHVlW3pbU11dLFdbMF0sVltTXSkpOlM8MzI/KFE9bmUoWSxiLHgsTixGLHVlW0VbU11dLEdbMV0saltTXSkscmU9bGUoZyxDLE0seSxwLHVlW3pbU11dLFdbMV0sVltTXSkpOlM8NDg/KFE9aWUoWSxiLHgsTixGLHVlW0VbU11d''@;'; put 'put ''LEdbMl0saltTXSkscmU9aWUoZyxDLE0seSxwLHVlW3pbU11dLFdbMl0sVltTXSkpOlM8NjQ/KFE9bGUoWSxiLHgsTixGLHVlW0VbU11dLEdbM10saltTXSkscmU9bmUoZyxDLE0seSxwLHVlW3pbU11dLFdbM10sVltTXSkpOihRPWRlKFksYix4LE4sRix1ZVtFW1NdXSxHWzRdLGpbU10pLHJl''@;'; put 'put ''PXRlKGcsQyxNLHkscCx1ZVt6W1NdXSxXWzRdLFZbU10pKSxZPUYsRj1OLE49cSh4LDEwKSx4PWIsYj1RLGc9cCxwPXkseT1xKE0sMTApLE09QyxDPXJlfXZhciBmZT10aGlzLl9iK3greXwwO3RoaXMuX2I9dGhpcy5fYytOK3B8MCx0aGlzLl9jPXRoaXMuX2QrRitnfDAsdGhpcy5fZD10aGlz''@;'; put 'put ''Ll9lK1krQ3wwLHRoaXMuX2U9dGhpcy5fYStiK018MCx0aGlzLl9hPWZlfSxVLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2Nr''@;'; put 'put ''T2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMu''@;'; put 'put ''X2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIHVlPUsuYWxsb2M/Sy5hbGxvYygyMCk6bmV3IEsoMjApO3JldHVybiB1ZS53cml0ZUludDMyTEUodGhpcy5fYSwwKSx1ZS53cml0ZUludDMyTEUodGhpcy5fYiw0KSx1ZS53cml0ZUludDMyTEUodGhpcy5fYyw4KSx1ZS53cml0ZUlu''@;'; put 'put ''dDMyTEUodGhpcy5fZCwxMiksdWUud3JpdGVJbnQzMkxFKHRoaXMuX2UsMTYpLHVlfSxILmV4cG9ydHM9VX0sOTUwOTooSCxCLEwpPT57dmFyIEs9TCg4NzY0KSxKPUsuQnVmZmVyO2Z1bmN0aW9uIEkoRSx6KXtmb3IodmFyIGogaW4gRSl6W2pdPUVbal19ZnVuY3Rpb24gUihFLHosail7cmV0''@;'; put 'put ''dXJuIEooRSx6LGopfUouZnJvbSYmSi5hbGxvYyYmSi5hbGxvY1Vuc2FmZSYmSi5hbGxvY1Vuc2FmZVNsb3c/SC5leHBvcnRzPUs6KEkoSyxCKSxCLkJ1ZmZlcj1SKSxSLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEoucHJvdG90eXBlKSxJKEosUiksUi5mcm9tPWZ1bmN0aW9uKEUseixqKXtp''@;'; put 'put ''ZigibnVtYmVyIj09dHlwZW9mIEUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gSihFLHosail9LFIuYWxsb2M9ZnVuY3Rpb24oRSx6LGope2lmKCJudW1iZXIiIT10eXBlb2YgRSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVu''@;'; put 'put ''dCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIFY9SihFKTtyZXR1cm4gdm9pZCAwIT09ej8ic3RyaW5nIj09dHlwZW9mIGo/Vi5maWxsKHosaik6Vi5maWxsKHopOlYuZmlsbCgwKSxWfSxSLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKEUpe2lmKCJudW1iZXIiIT10eXBlb2YgRSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIEooRSl9LFIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKEUpe2lmKCJudW1iZXIiIT10eXBlb2YgRSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIEsuU2xvd0J1''@;'; put 'put ''ZmZlcihFKX19LDIzOTk6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPUwoNDE1NSksST1MKDg3NjQpLFI9SS5CdWZmZXIsRT17fTtmb3IoSyBpbiBJKUkuaGFzT3duUHJvcGVydHkoSykmJiJTbG93QnVmZmVyIiE9PUsmJiJCdWZmZXIiIT09SyYmKEVbS109SVtLXSk7dmFyIHo9RS5C''@;'; put 'put ''dWZmZXI9e307Zm9yKEsgaW4gUilSLmhhc093blByb3BlcnR5KEspJiYiYWxsb2NVbnNhZmUiIT09SyYmImFsbG9jVW5zYWZlU2xvdyIhPT1LJiYoeltLXT1SW0tdKTtpZihFLkJ1ZmZlci5wcm90b3R5cGU9Ui5wcm90b3R5cGUsei5mcm9tJiZ6LmZyb20hPT1VaW50OEFycmF5LmZyb218fCh6''@;'; put 'put ''LmZyb209ZnVuY3Rpb24oaixWLEcpe2lmKCJudW1iZXIiPT10eXBlb2Ygail0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBqKTtpZihqJiZ2b2lkIDA9PT1qLmxlbmd0aCl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBqKTtyZXR1cm4gUihqLFYsRyl9KSx6LmFs''@;'; put 'put ''bG9jfHwoei5hbGxvYz1mdW5jdGlvbihqLFYsRyl7aWYoIm51bWJlciIhPXR5cGVvZiBqKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBqKTtpZihqPDB8fGo+PTIxNDc0ODM2NDgp''@;'; put 'put ''dGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytqKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgVz1SKGopO3JldHVybiBWJiYwIT09Vi5sZW5ndGg/InN0cmluZyI9PXR5cGVvZiBHP1cuZmlsbChWLEcpOlcuZmlsbChWKTpXLmZpbGwoMCksV30pLCFFLmtT''@;'; put 'put ''dHJpbmdNYXhMZW5ndGgpdHJ5e0Uua1N0cmluZ01heExlbmd0aD1KLmJpbmRpbmcoImJ1ZmZlciIpLmtTdHJpbmdNYXhMZW5ndGh9Y2F0Y2h7fUUuY29uc3RhbnRzfHwoRS5jb25zdGFudHM9e01BWF9MRU5HVEg6RS5rTWF4TGVuZ3RofSxFLmtTdHJpbmdNYXhMZW5ndGgmJihFLmNvbnN0YW50''@;'; put 'put ''cy5NQVhfU1RSSU5HX0xFTkdUSD1FLmtTdHJpbmdNYXhMZW5ndGgpKSxILmV4cG9ydHM9RX0sNDE4OTooSCxCLEwpPT57dmFyIEs9TCg5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gSihJLFIpe3RoaXMuX2Jsb2NrPUsuYWxsb2MoSSksdGhpcy5fZmluYWxTaXplPVIsdGhpcy5fYmxvY2tTaXplPUks''@;'; put 'put ''dGhpcy5fbGVuPTB9Si5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEksUil7InN0cmluZyI9PXR5cGVvZiBJJiYoST1LLmZyb20oSSxSPVJ8fCJ1dGY4IikpO2Zvcih2YXIgRT10aGlzLl9ibG9jayx6PXRoaXMuX2Jsb2NrU2l6ZSxqPUkubGVuZ3RoLFY9dGhpcy5fbGVuLEc9MDtHPGo7KXtm''@;'; put 'put ''b3IodmFyIFc9ViV6LFU9TWF0aC5taW4oai1HLHotVykscT0wO3E8VTtxKyspRVtXK3FdPUlbRytxXTtHKz1VLChWKz1VKSV6PT0wJiZ0aGlzLl91cGRhdGUoRSl9cmV0dXJuIHRoaXMuX2xlbis9aix0aGlzfSxKLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oSSl7dmFyIFI9dGhpcy5fbGVu''@;'; put 'put ''JXRoaXMuX2Jsb2NrU2l6ZTt0aGlzLl9ibG9ja1tSXT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLFIrMSksUj49dGhpcy5fZmluYWxTaXplJiYodGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSx0aGlzLl9ibG9jay5maWxsKDApKTt2YXIgRT04KnRoaXMuX2xlbjtpZihFPD00Mjk0OTY3Mjk1KXRo''@;'; put 'put ''aXMuX2Jsb2NrLndyaXRlVUludDMyQkUoRSx0aGlzLl9ibG9ja1NpemUtNCk7ZWxzZXt2YXIgej0oNDI5NDk2NzI5NSZFKT4+PjA7dGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRSgoRS16KS80Mjk0OTY3Mjk2LHRoaXMuX2Jsb2NrU2l6ZS04KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKHos''@;'; put 'put ''dGhpcy5fYmxvY2tTaXplLTQpfXRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayk7dmFyIFY9dGhpcy5faGFzaCgpO3JldHVybiBJP1YudG9TdHJpbmcoSSk6Vn0sSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVk''@;'; put 'put ''IGJ5IHN1YmNsYXNzIil9LEguZXhwb3J0cz1KfSw5MDcyOihILEIsTCk9Pnt2YXIgSz1ILmV4cG9ydHM9ZnVuY3Rpb24oSil7Sj1KLnRvTG93ZXJDYXNlKCk7dmFyIEk9S1tKXTtpZighSSl0aHJvdyBuZXcgRXJyb3IoSisiIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVl''@;'; put 'put ''c3RzKSIpO3JldHVybiBuZXcgSX07Sy5zaGE9TCg0NDQ4KSxLLnNoYTE9TCg4MzM2KSxLLnNoYTIyND1MKDg0MzIpLEsuc2hhMjU2PUwoNzQ5OSksSy5zaGEzODQ9TCgxNjg2KSxLLnNoYTUxMj1MKDc4MTYpfSw0NDQ4OihILEIsTCk9Pnt2YXIgSz1MKDU3MTcpLEo9TCg0MTg5KSxJPUwoOTUw''@;'; put 'put ''OSkuQnVmZmVyLFI9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxFPW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxKLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gaihHKXtyZXR1cm4gRzw8MzB8Rz4+PjJ9ZnVu''@;'; put 'put ''Y3Rpb24gVihHLFcsVSxxKXtyZXR1cm4gMD09PUc/VyZVfH5XJnE6Mj09PUc/VyZVfFcmcXxVJnE6V15VXnF9Syh6LEopLHoucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhp''@;'; put 'put ''cy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRyl7Zm9yKHZhciBXLFU9dGhpcy5fdyxxPTB8dGhpcy5fYSx0ZT0wfHRoaXMuX2IsbmU9MHx0aGlzLl9jLGllPTB8dGhpcy5fZCxsZT0wfHRoaXMuX2UsZGU9MDtkZTwx''@;'; put 'put ''NjsrK2RlKVVbZGVdPUcucmVhZEludDMyQkUoNCpkZSk7Zm9yKDtkZTw4MDsrK2RlKVVbZGVdPVVbZGUtM11eVVtkZS04XV5VW2RlLTE0XV5VW2RlLTE2XTtmb3IodmFyIHVlPTA7dWU8ODA7Kyt1ZSl7dmFyIGNlPX5+KHVlLzIwKSxZPTB8KChXPXEpPDw1fFc+Pj4yNykrVihjZSx0ZSxuZSxp''@;'; put 'put ''ZSkrbGUrVVt1ZV0rUltjZV07bGU9aWUsaWU9bmUsbmU9aih0ZSksdGU9cSxxPVl9dGhpcy5fYT1xK3RoaXMuX2F8MCx0aGlzLl9iPXRlK3RoaXMuX2J8MCx0aGlzLl9jPW5lK3RoaXMuX2N8MCx0aGlzLl9kPWllK3RoaXMuX2R8MCx0aGlzLl9lPWxlK3RoaXMuX2V8MH0sei5wcm90b3R5cGUu''@;'; put 'put ''X2hhc2g9ZnVuY3Rpb24oKXt2YXIgRz1JLmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gRy53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLEcud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxHLndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksRy53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEyKSxHLndy''@;'; put 'put ''aXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLEd9LEguZXhwb3J0cz16fSw4MzM2OihILEIsTCk9Pnt2YXIgSz1MKDU3MTcpLEo9TCg0MTg5KSxJPUwoOTUwOSkuQnVmZmVyLFI9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxFPW5ldyBBcnJheSg4MCk7ZnVu''@;'; put 'put ''Y3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxKLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gaihXKXtyZXR1cm4gVzw8NXxXPj4+Mjd9ZnVuY3Rpb24gVihXKXtyZXR1cm4gVzw8MzB8Vz4+PjJ9ZnVuY3Rpb24gRyhXLFUscSx0ZSl7cmV0dXJuIDA9PT1XP1UmcXx+VSZ0ZToyPT09''@;'; put 'put ''Vz9VJnF8VSZ0ZXxxJnRlOlVecV50ZX1LKHosSiksei5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30s''@;'; put 'put ''ei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihXKXtmb3IodmFyIFUscT10aGlzLl93LHRlPTB8dGhpcy5fYSxuZT0wfHRoaXMuX2IsaWU9MHx0aGlzLl9jLGxlPTB8dGhpcy5fZCxkZT0wfHRoaXMuX2UsdWU9MDt1ZTwxNjsrK3VlKXFbdWVdPVcucmVhZEludDMyQkUoNCp1ZSk7Zm9yKDt1''@;'; put 'put ''ZTw4MDsrK3VlKXFbdWVdPShVPXFbdWUtM11ecVt1ZS04XV5xW3VlLTE0XV5xW3VlLTE2XSk8PDF8VT4+PjMxO2Zvcih2YXIgY2U9MDtjZTw4MDsrK2NlKXt2YXIgWT1+fihjZS8yMCksYj1qKHRlKStHKFksbmUsaWUsbGUpK2RlK3FbY2VdK1JbWV18MDtkZT1sZSxsZT1pZSxpZT1WKG5lKSxu''@;'; put 'put ''ZT10ZSx0ZT1ifXRoaXMuX2E9dGUrdGhpcy5fYXwwLHRoaXMuX2I9bmUrdGhpcy5fYnwwLHRoaXMuX2M9aWUrdGhpcy5fY3wwLHRoaXMuX2Q9bGUrdGhpcy5fZHwwLHRoaXMuX2U9ZGUrdGhpcy5fZXwwfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBXPUkuYWxsb2NVbnNhZmUo''@;'; put 'put ''MjApO3JldHVybiBXLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksVy53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLFcud3JpdGVJbnQzMkJFKDB8dGhpcy5fYyw4KSxXLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLFcud3JpdGVJbnQzMkJFKDB8dGhpcy5fZSwxNiksV30sSC5leHBvcnRz''@;'; put 'put ''PXp9LDg0MzI6KEgsQixMKT0+e3ZhciBLPUwoNTcxNyksSj1MKDc0OTkpLEk9TCg0MTg5KSxSPUwoOTUwOSkuQnVmZmVyLEU9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiB6KCl7dGhpcy5pbml0KCksdGhpcy5fdz1FLEkuY2FsbCh0aGlzLDY0LDU2KX1LKHosSiksei5wcm90b3R5cGUuaW5pdD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTMyMzgzNzEwMzIsdGhpcy5fYj05MTQxNTA2NjMsdGhpcy5fYz04MTI3MDI5OTksdGhpcy5fZD00MTQ0OTEyNjk3LHRoaXMuX2U9NDI5MDc3NTg1Nyx0aGlzLl9mPTE3NTA2MDMwMjUsdGhpcy5fZz0xNjk0MDc2ODM5LHRoaXMuX2g9MzIwNDA3NTQy''@;'; put 'put ''OCx0aGlzfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBqPVIuYWxsb2NVbnNhZmUoMjgpO3JldHVybiBqLndyaXRlSW50MzJCRSh0aGlzLl9hLDApLGoud3JpdGVJbnQzMkJFKHRoaXMuX2IsNCksai53cml0ZUludDMyQkUodGhpcy5fYyw4KSxqLndyaXRlSW50MzJCRSh0aGlz''@;'; put 'put ''Ll9kLDEyKSxqLndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KSxqLndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKSxqLndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KSxqfSxILmV4cG9ydHM9en0sNzQ5OTooSCxCLEwpPT57dmFyIEs9TCg1NzE3KSxKPUwoNDE4OSksST1MKDk1MDkpLkJ1ZmZlcixSPVsx''@;'; put 'put ''MTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4''@;'; put 'put ''MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5''@;'; put 'put ''OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQs''@;'; put 'put ''NDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1Njcz''@;'; put 'put ''NDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdLEU9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiB6KCl7dGhpcy5pbml0KCksdGhpcy5fdz1FLEouY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBqKHEsdGUsbmUpe3JldHVybiBuZV5xJih0ZV5uZSl9ZnVuY3Rpb24gVihxLHRlLG5lKXtyZXR1cm4g''@;'; put 'put ''cSZ0ZXxuZSYocXx0ZSl9ZnVuY3Rpb24gRyhxKXtyZXR1cm4ocT4+PjJ8cTw8MzApXihxPj4+MTN8cTw8MTkpXihxPj4+MjJ8cTw8MTApfWZ1bmN0aW9uIFcocSl7cmV0dXJuKHE+Pj42fHE8PDI2KV4ocT4+PjExfHE8PDIxKV4ocT4+PjI1fHE8PDcpfWZ1bmN0aW9uIFUocSl7cmV0dXJuKHE+''@;'; put 'put ''Pj43fHE8PDI1KV4ocT4+PjE4fHE8PDE0KV5xPj4+M31LKHosSiksei5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkz''@;'; put 'put ''MTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihxKXtmb3IodmFyIHRlLG5lPXRoaXMuX3csaWU9MHx0aGlzLl9hLGxlPTB8dGhpcy5fYixkZT0wfHRoaXMuX2MsdWU9MHx0''@;'; put 'put ''aGlzLl9kLGNlPTB8dGhpcy5fZSxZPTB8dGhpcy5fZixiPTB8dGhpcy5fZyx4PTB8dGhpcy5faCxOPTA7TjwxNjsrK04pbmVbTl09cS5yZWFkSW50MzJCRSg0Kk4pO2Zvcig7Tjw2NDsrK04pbmVbTl09MHwoKCh0ZT1uZVtOLTJdKT4+PjE3fHRlPDwxNSleKHRlPj4+MTl8dGU8PDEzKV50ZT4+''@;'; put 'put ''PjEwKStuZVtOLTddK1UobmVbTi0xNV0pK25lW04tMTZdO2Zvcih2YXIgRj0wO0Y8NjQ7KytGKXt2YXIgZz14K1coY2UpK2ooY2UsWSxiKStSW0ZdK25lW0ZdfDAsQz1HKGllKStWKGllLGxlLGRlKXwwO3g9YixiPVksWT1jZSxjZT11ZStnfDAsdWU9ZGUsZGU9bGUsbGU9aWUsaWU9ZytDfDB9''@;'; put 'put ''dGhpcy5fYT1pZSt0aGlzLl9hfDAsdGhpcy5fYj1sZSt0aGlzLl9ifDAsdGhpcy5fYz1kZSt0aGlzLl9jfDAsdGhpcy5fZD11ZSt0aGlzLl9kfDAsdGhpcy5fZT1jZSt0aGlzLl9lfDAsdGhpcy5fZj1ZK3RoaXMuX2Z8MCx0aGlzLl9nPWIrdGhpcy5fZ3wwLHRoaXMuX2g9eCt0aGlzLl9ofDB9''@;'; put 'put ''LHoucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIHE9SS5hbGxvY1Vuc2FmZSgzMik7cmV0dXJuIHEud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCkscS53cml0ZUludDMyQkUodGhpcy5fYiw0KSxxLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLHEud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIp''@;'; put 'put ''LHEud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLHEud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLHEud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLHEud3JpdGVJbnQzMkJFKHRoaXMuX2gsMjgpLHF9LEguZXhwb3J0cz16fSwxNjg2OihILEIsTCk9Pnt2YXIgSz1MKDU3MTcpLEo9TCg3ODE2KSxJ''@;'; put 'put ''PUwoNDE4OSksUj1MKDk1MDkpLkJ1ZmZlcixFPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIHooKXt0aGlzLmluaXQoKSx0aGlzLl93PUUsSS5jYWxsKHRoaXMsMTI4LDExMil9Syh6LEopLHoucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlz''@;'; put 'put ''Ll9iaD0xNjU0MjcwMjUwLHRoaXMuX2NoPTI0Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05''@;'; put 'put ''MTQxNTA2NjMsdGhpcy5fY2w9ODEyNzAyOTk5LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBqPVIuYWxsb2NVbnNhZmUoNDgpO2Z1bmN0aW9uIFYoRyxXLFUpe2oud3JpdGVJbnQzMkJFKEcsVSksai53cml0ZUludDMyQkUoVyxVKzQpfXJldHVybiBWKHRoaXMuX2FoLHRoaXMuX2FsLDApLFYodGhpcy5fYmgsdGhpcy5fYmwsOCksVih0aGlzLl9jaCx0aGlzLl9jbCwxNiksVih0aGlz''@;'; put 'put ''Ll9kaCx0aGlzLl9kbCwyNCksVih0aGlzLl9laCx0aGlzLl9lbCwzMiksVih0aGlzLl9maCx0aGlzLl9mbCw0MCksan0sSC5leHBvcnRzPXp9LDc4MTY6KEgsQixMKT0+e3ZhciBLPUwoNTcxNyksSj1MKDQxODkpLEk9TCg5NTA5KS5CdWZmZXIsUj1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4''@;'; put 'put ''OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0''@;'; put 'put ''ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0''@;'; put 'put ''MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywy''@;'; put 'put ''NTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3''@;'; put 'put ''MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2''@;'; put 'put ''MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5''@;'; put 'put ''NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMw''@;'; put 'put ''MzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMx''@;'; put 'put ''NDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1Mjcw''@;'; put 'put ''LDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUw''@;'; put 'put ''OTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdLEU9bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxKLmNhbGwodGhpcywxMjgsMTEyKX1mdW5jdGlvbiBqKGxlLGRlLHVlKXtyZXR1cm4gdWVebGUmKGRlXnVlKX1m''@;'; put 'put ''dW5jdGlvbiBWKGxlLGRlLHVlKXtyZXR1cm4gbGUmZGV8dWUmKGxlfGRlKX1mdW5jdGlvbiBHKGxlLGRlKXtyZXR1cm4obGU+Pj4yOHxkZTw8NCleKGRlPj4+MnxsZTw8MzApXihkZT4+Pjd8bGU8PDI1KX1mdW5jdGlvbiBXKGxlLGRlKXtyZXR1cm4obGU+Pj4xNHxkZTw8MTgpXihsZT4+PjE4''@;'; put 'put ''fGRlPDwxNCleKGRlPj4+OXxsZTw8MjMpfWZ1bmN0aW9uIFUobGUsZGUpe3JldHVybihsZT4+PjF8ZGU8PDMxKV4obGU+Pj44fGRlPDwyNClebGU+Pj43fWZ1bmN0aW9uIHEobGUsZGUpe3JldHVybihsZT4+PjF8ZGU8PDMxKV4obGU+Pj44fGRlPDwyNCleKGxlPj4+N3xkZTw8MjUpfWZ1bmN0''@;'; put 'put ''aW9uIHRlKGxlLGRlKXtyZXR1cm4obGU+Pj4xOXxkZTw8MTMpXihkZT4+PjI5fGxlPDwzKV5sZT4+PjZ9ZnVuY3Rpb24gbmUobGUsZGUpe3JldHVybihsZT4+PjE5fGRlPDwxMyleKGRlPj4+Mjl8bGU8PDMpXihsZT4+PjZ8ZGU8PDI2KX1mdW5jdGlvbiBpZShsZSxkZSl7cmV0dXJuIGxlPj4+''@;'; put 'put ''MDxkZT4+PjA/MTowfUsoeixKKSx6LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0y''@;'; put 'put ''NjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTEx''@;'; put 'put ''OTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihsZSl7Zm9yKHZhciBkZT10aGlzLl93LHVlPTB8dGhpcy5fYWgsY2U9MHx0aGlzLl9iaCxZPTB8dGhpcy5fY2gsYj0wfHRoaXMuX2RoLHg9MHx0aGlzLl9l''@;'; put 'put ''aCxOPTB8dGhpcy5fZmgsRj0wfHRoaXMuX2doLGc9MHx0aGlzLl9oaCxDPTB8dGhpcy5fYWwsTT0wfHRoaXMuX2JsLHk9MHx0aGlzLl9jbCxwPTB8dGhpcy5fZGwsUz0wfHRoaXMuX2VsLFE9MHx0aGlzLl9mbCxyZT0wfHRoaXMuX2dsLGZlPTB8dGhpcy5faGwsbWU9MDttZTwzMjttZSs9Milk''@;'; put 'put ''ZVttZV09bGUucmVhZEludDMyQkUoNCptZSksZGVbbWUrMV09bGUucmVhZEludDMyQkUoNCptZSs0KTtmb3IoO21lPDE2MDttZSs9Mil7dmFyIGtlPWRlW21lLTMwXSxUZT1kZVttZS0zMCsxXSxQZT1VKGtlLFRlKSxGZT1xKFRlLGtlKSxOZT10ZShrZT1kZVttZS00XSxUZT1kZVttZS00KzFd''@;'; put 'put ''KSxMZT1uZShUZSxrZSksUWU9ZGVbbWUtMzJdLG10PWRlW21lLTMyKzFdLEtlPUZlK2RlW21lLTE0KzFdfDAsd2U9UGUrZGVbbWUtMTRdK2llKEtlLEZlKXwwO3dlPSh3ZT13ZStOZStpZShLZT1LZStMZXwwLExlKXwwKStRZStpZShLZT1LZSttdHwwLG10KXwwLGRlW21lXT13ZSxkZVttZSsx''@;'; put 'put ''XT1LZX1mb3IodmFyIEllPTA7SWU8MTYwO0llKz0yKXt3ZT1kZVtJZV0sS2U9ZGVbSWUrMV07dmFyIE9lPVYodWUsY2UsWSksZXQ9VihDLE0seSksbnQ9Ryh1ZSxDKSxxZT1HKEMsdWUpLGh0PVcoeCxTKSxFZT1XKFMseCksRGU9UltJZV0sJGU9UltJZSsxXSxhdD1qKHgsTixGKSxjdD1qKFMs''@;'; put 'put ''USxyZSksT3Q9ZmUrRWV8MCxQdD1nK2h0K2llKE90LGZlKXwwO1B0PShQdD0oUHQ9UHQrYXQraWUoT3Q9T3QrY3R8MCxjdCl8MCkrRGUraWUoT3Q9T3QrJGV8MCwkZSl8MCkrd2UraWUoT3Q9T3QrS2V8MCxLZSl8MDt2YXIgQXQ9cWUrZXR8MCxKdD1udCtPZStpZShBdCxxZSl8MDtnPUYsZmU9''@;'; put 'put ''cmUsRj1OLHJlPVEsTj14LFE9Uyx4PWIrUHQraWUoUz1wK090fDAscCl8MCxiPVkscD15LFk9Y2UseT1NLGNlPXVlLE09Qyx1ZT1QdCtKdCtpZShDPU90K0F0fDAsT3QpfDB9dGhpcy5fYWw9dGhpcy5fYWwrQ3wwLHRoaXMuX2JsPXRoaXMuX2JsK018MCx0aGlzLl9jbD10aGlzLl9jbCt5fDAs''@;'; put 'put ''dGhpcy5fZGw9dGhpcy5fZGwrcHwwLHRoaXMuX2VsPXRoaXMuX2VsK1N8MCx0aGlzLl9mbD10aGlzLl9mbCtRfDAsdGhpcy5fZ2w9dGhpcy5fZ2wrcmV8MCx0aGlzLl9obD10aGlzLl9obCtmZXwwLHRoaXMuX2FoPXRoaXMuX2FoK3VlK2llKHRoaXMuX2FsLEMpfDAsdGhpcy5fYmg9dGhpcy5f''@;'; put 'put ''YmgrY2UraWUodGhpcy5fYmwsTSl8MCx0aGlzLl9jaD10aGlzLl9jaCtZK2llKHRoaXMuX2NsLHkpfDAsdGhpcy5fZGg9dGhpcy5fZGgrYitpZSh0aGlzLl9kbCxwKXwwLHRoaXMuX2VoPXRoaXMuX2VoK3graWUodGhpcy5fZWwsUyl8MCx0aGlzLl9maD10aGlzLl9maCtOK2llKHRoaXMuX2Zs''@;'; put 'put ''LFEpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grRitpZSh0aGlzLl9nbCxyZSl8MCx0aGlzLl9oaD10aGlzLl9oaCtnK2llKHRoaXMuX2hsLGZlKXwwfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBsZT1JLmFsbG9jVW5zYWZlKDY0KTtmdW5jdGlvbiBkZSh1ZSxjZSxZKXtsZS53cml0''@;'; put 'put ''ZUludDMyQkUodWUsWSksbGUud3JpdGVJbnQzMkJFKGNlLFkrNCl9cmV0dXJuIGRlKHRoaXMuX2FoLHRoaXMuX2FsLDApLGRlKHRoaXMuX2JoLHRoaXMuX2JsLDgpLGRlKHRoaXMuX2NoLHRoaXMuX2NsLDE2KSxkZSh0aGlzLl9kaCx0aGlzLl9kbCwyNCksZGUodGhpcy5fZWgsdGhpcy5fZWws''@;'; put 'put ''MzIpLGRlKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSxkZSh0aGlzLl9naCx0aGlzLl9nbCw0OCksZGUodGhpcy5faGgsdGhpcy5faGwsNTYpLGxlfSxILmV4cG9ydHM9en0sMjgzMDooSCxCLEwpPT57SC5leHBvcnRzPUo7dmFyIEs9TCg3MTg3KS5FdmVudEVtaXR0ZXI7ZnVuY3Rpb24gSigpe0su''@;'; put 'put ''Y2FsbCh0aGlzKX1MKDU3MTcpKEosSyksSi5SZWFkYWJsZT1MKDk0ODEpLEouV3JpdGFibGU9TCg0MjI5KSxKLkR1cGxleD1MKDY3NTMpLEouVHJhbnNmb3JtPUwoNDYwNSksSi5QYXNzVGhyb3VnaD1MKDI3MjUpLEouZmluaXNoZWQ9TCg4NjEwKSxKLnBpcGVsaW5lPUwoOTk0NiksSi5TdHJl''@;'; put 'put ''YW09SixKLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKEksUil7dmFyIEU9dGhpcztmdW5jdGlvbiB6KHRlKXtJLndyaXRhYmxlJiYhMT09PUkud3JpdGUodGUpJiZFLnBhdXNlJiZFLnBhdXNlKCl9ZnVuY3Rpb24gaigpe0UucmVhZGFibGUmJkUucmVzdW1lJiZFLnJlc3VtZSgpfUUub24oImRh''@;'; put 'put ''dGEiLHopLEkub24oImRyYWluIixqKSxJLl9pc1N0ZGlvfHxSJiYhMT09PVIuZW5kfHwoRS5vbigiZW5kIixHKSxFLm9uKCJjbG9zZSIsVykpO3ZhciBWPSExO2Z1bmN0aW9uIEcoKXtWfHwoVj0hMCxJLmVuZCgpKX1mdW5jdGlvbiBXKCl7Vnx8KFY9ITAsImZ1bmN0aW9uIj09dHlwZW9mIEku''@;'; put 'put ''ZGVzdHJveSYmSS5kZXN0cm95KCkpfWZ1bmN0aW9uIFUodGUpe2lmKHEoKSwwPT09Sy5saXN0ZW5lckNvdW50KHRoaXMsImVycm9yIikpdGhyb3cgdGV9ZnVuY3Rpb24gcSgpe0UucmVtb3ZlTGlzdGVuZXIoImRhdGEiLHopLEkucmVtb3ZlTGlzdGVuZXIoImRyYWluIixqKSxFLnJlbW92ZUxp''@;'; put 'put ''c3RlbmVyKCJlbmQiLEcpLEUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixXKSxFLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsVSksSS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLFUpLEUucmVtb3ZlTGlzdGVuZXIoImVuZCIscSksRS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHEpLEkucmVtb3ZlTGlz''@;'; put 'put ''dGVuZXIoImNsb3NlIixxKX1yZXR1cm4gRS5vbigiZXJyb3IiLFUpLEkub24oImVycm9yIixVKSxFLm9uKCJlbmQiLHEpLEUub24oImNsb3NlIixxKSxJLm9uKCJjbG9zZSIscSksSS5lbWl0KCJwaXBlIixFKSxJfX0sMjU1MzooSCxCLEwpPT57InVzZSBzdHJpY3QiO3ZhciBLPUwoOTUwOSku''@;'; put 'put ''QnVmZmVyLEo9Sy5pc0VuY29kaW5nfHxmdW5jdGlvbihxKXtzd2l0Y2goKHE9IiIrcSkmJnEudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNh''@;'; put 'put ''c2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiBJKHEpe3ZhciB0ZTtzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbihuZSl7dmFyIGllPWZ1bmN0aW9uKGxlKXtpZighbGUpcmV0dXJuInV0ZjgiO2Zvcih2''@;'; put 'put ''YXIgZGU7Oylzd2l0Y2gobGUpe2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuInV0ZjgiO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4idXRmMTZsZSI7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ibGF0aW4xIjtj''@;'; put 'put ''YXNlImJhc2U2NCI6Y2FzZSJhc2NpaSI6Y2FzZSJoZXgiOnJldHVybiBsZTtkZWZhdWx0OmlmKGRlKXJldHVybjtsZT0oIiIrbGUpLnRvTG93ZXJDYXNlKCksZGU9ITB9fShuZSk7aWYoInN0cmluZyIhPXR5cGVvZiBpZSYmKEsuaXNFbmNvZGluZz09PUp8fCFKKG5lKSkpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJVbmtub3duIGVuY29kaW5nOiAiK25lKTtyZXR1cm4gaWV8fG5lfShxKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRoaXMudGV4dD16LHRoaXMuZW5kPWosdGU9NDticmVhaztjYXNlInV0ZjgiOnRoaXMuZmlsbExhc3Q9RSx0ZT00O2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlz''@;'; put 'put ''LnRleHQ9Vix0aGlzLmVuZD1HLHRlPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT1XLHZvaWQodGhpcy5lbmQ9VSl9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj1LLmFsbG9jVW5zYWZlKHRlKX1mdW5jdGlvbiBSKHEpe3JldHVybiBxPD0x''@;'; put 'put ''Mjc/MDpxPj41PT02PzI6cT4+ND09MTQ/MzpxPj4zPT0zMD80OnE+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gRShxKXt2YXIgdGU9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxuZT1mdW5jdGlvbihpZSxsZSxkZSl7aWYoMTI4IT0oMTkyJmxlWzBdKSlyZXR1cm4gaWUubGFzdE5lZWQ9MCwi''@;'; put 'put ''XHVmZmZkIjtpZihpZS5sYXN0TmVlZD4xJiZsZS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJmxlWzFdKSlyZXR1cm4gaWUubGFzdE5lZWQ9MSwiXHVmZmZkIjtpZihpZS5sYXN0TmVlZD4yJiZsZS5sZW5ndGg+MiYmMTI4IT0oMTkyJmxlWzJdKSlyZXR1cm4gaWUubGFzdE5lZWQ9MiwiXHVmZmZk''@;'; put 'put ''In19KHRoaXMscSk7cmV0dXJuIHZvaWQgMCE9PW5lP25lOnRoaXMubGFzdE5lZWQ8PXEubGVuZ3RoPyhxLmNvcHkodGhpcy5sYXN0Q2hhcix0ZSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KHEuY29weSh0''@;'; put 'put ''aGlzLmxhc3RDaGFyLHRlLDAscS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09cS5sZW5ndGgpKX1mdW5jdGlvbiB6KHEsdGUpe2lmKChxLmxlbmd0aC10ZSklMj09MCl7dmFyIG5lPXEudG9TdHJpbmcoInV0ZjE2bGUiLHRlKTtpZihuZSl7dmFyIGllPW5lLmNoYXJDb2RlQXQobmUubGVu''@;'; put 'put ''Z3RoLTEpO2lmKGllPj01NTI5NiYmaWU8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPXFbcS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1xW3EubGVuZ3RoLTFdLG5lLnNsaWNlKDAsLTEpfXJldHVybiBuZX1yZXR1cm4g''@;'; put 'put ''dGhpcy5sYXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1xW3EubGVuZ3RoLTFdLHEudG9TdHJpbmcoInV0ZjE2bGUiLHRlLHEubGVuZ3RoLTEpfWZ1bmN0aW9uIGoocSl7dmFyIHRlPXEmJnEubGVuZ3RoP3RoaXMud3JpdGUocSk6IiI7cmV0dXJuIHRoaXMubGFz''@;'; put 'put ''dE5lZWQ/dGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCx0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkKTp0ZX1mdW5jdGlvbiBWKHEsdGUpe3ZhciBuZT0ocS5sZW5ndGgtdGUpJTM7cmV0dXJuIDA9PT1uZT9xLnRvU3RyaW5nKCJiYXNlNjQiLHRlKToodGhpcy5sYXN0''@;'; put 'put ''TmVlZD0zLW5lLHRoaXMubGFzdFRvdGFsPTMsMT09PW5lP3RoaXMubGFzdENoYXJbMF09cVtxLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1xW3EubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09cVtxLmxlbmd0aC0xXSkscS50b1N0cmluZygiYmFzZTY0Iix0ZSxxLmxlbmd0aC1uZSkp''@;'; put 'put ''fWZ1bmN0aW9uIEcocSl7dmFyIHRlPXEmJnEubGVuZ3RoP3RoaXMud3JpdGUocSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZygiYmFzZTY0IiwwLDMtdGhpcy5sYXN0TmVlZCk6dGV9ZnVuY3Rpb24gVyhxKXtyZXR1cm4gcS50b1N0cmluZyh0aGlz''@;'; put 'put ''LmVuY29kaW5nKX1mdW5jdGlvbiBVKHEpe3JldHVybiBxJiZxLmxlbmd0aD90aGlzLndyaXRlKHEpOiIifUIuU3RyaW5nRGVjb2Rlcj1JLEkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHEpe2lmKDA9PT1xLmxlbmd0aClyZXR1cm4iIjt2YXIgdGUsbmU7aWYodGhpcy5sYXN0TmVlZCl7aWYo''@;'; put 'put ''dm9pZCAwPT09KHRlPXRoaXMuZmlsbExhc3QocSkpKXJldHVybiIiO25lPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2UgbmU9MDtyZXR1cm4gbmU8cS5sZW5ndGg/dGU/dGUrdGhpcy50ZXh0KHEsbmUpOnRoaXMudGV4dChxLG5lKTp0ZXx8IiJ9LEkucHJvdG90eXBlLmVuZD1m''@;'; put 'put ''dW5jdGlvbihxKXt2YXIgdGU9cSYmcS5sZW5ndGg/dGhpcy53cml0ZShxKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD90ZSsiXHVmZmZkIjp0ZX0sSS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbihxLHRlKXt2YXIgbmU9ZnVuY3Rpb24obGUsZGUsdWUpe3ZhciBjZT1kZS5sZW5ndGgtMTtpZihj''@;'; put 'put ''ZTx1ZSlyZXR1cm4gMDt2YXIgWT1SKGRlW2NlXSk7cmV0dXJuIFk+PTA/KFk+MCYmKGxlLmxhc3ROZWVkPVktMSksWSk6LS1jZTx1ZXx8LTI9PT1ZPzA6KFk9UihkZVtjZV0pKT49MD8oWT4wJiYobGUubGFzdE5lZWQ9WS0yKSxZKTotLWNlPHVlfHwtMj09PVk/MDooWT1SKGRlW2NlXSkpPj0w''@;'; put 'put ''PyhZPjAmJigyPT09WT9ZPTA6bGUubGFzdE5lZWQ9WS0zKSxZKTowfSh0aGlzLHEsdGUpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBxLnRvU3RyaW5nKCJ1dGY4Iix0ZSk7dGhpcy5sYXN0VG90YWw9bmU7dmFyIGllPXEubGVuZ3RoLShuZS10aGlzLmxhc3ROZWVkKTtyZXR1cm4gcS5jb3B5''@;'; put 'put ''KHRoaXMubGFzdENoYXIsMCxpZSkscS50b1N0cmluZygidXRmOCIsdGUsaWUpfSxJLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihxKXtpZih0aGlzLmxhc3ROZWVkPD1xLmxlbmd0aClyZXR1cm4gcS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCww''@;'; put 'put ''LHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtxLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAscS5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPXEubGVuZ3RofX0sNzg1Nzoo''@;'; put 'put ''SCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0IEs9TCgzNjg5KSxKPUwoODU3NSkuUWMsST1MKDk1MzkpLFI9TCg3NTIpLEU9TCgyMjI0KS55LHo9TCg1NzYxKS5tLGo9TCg4OTcxKS5VLFY9TCg0NTYpLHtmcm9tQ2FsbGJhY2s6R309TCg3MDQxKSxXPS9eW1x4MjFceDIzLVx4MkJceDJELVx4''@;'; put 'put ''M0FceDNDLVx4NUJceDVELVx4N0VdKyQvLFU9L1tceDAwLVx4MUZdLyxxPVsiXG4iLCJcciIsIlwwIl0sdGU9L1tceDIwLVx4M0FceDNDLVx4N0VdKy8sbmU9L1tceDA5XHgyMC1ceDJGXHgzQi1ceDQwXHg1Qi1ceDYwXHg3Qi1ceDdFXS8saWU9e2phbjowLGZlYjoxLG1hcjoyLGFwcjozLG1h''@;'; put 'put ''eTo0LGp1bjo1LGp1bDo2LGF1Zzo3LHNlcDo4LG9jdDo5LG5vdjoxMCxkZWM6MTF9LGxlPTIxNDc0ODM2NDdlMyxkZT0nSW52YWxpZCBzYW1lU2l0ZUNvbnRleHQgb3B0aW9uIGZvciBnZXRDb29raWVzKCk7IGV4cGVjdGVkIG9uZSBvZiAic3RyaWN0IiwgImxheCIsIG9yICJub25lIic7ZnVu''@;'; put 'put ''Y3Rpb24gdWUoTmUpe2NvbnN0IExlPVN0cmluZyhOZSkudG9Mb3dlckNhc2UoKTtyZXR1cm4ibm9uZSI9PT1MZXx8ImxheCI9PT1MZXx8InN0cmljdCI9PT1MZT9MZTpudWxsfWNvbnN0IGNlPU9iamVjdC5mcmVlemUoe1NJTEVOVDoic2lsZW50IixTVFJJQ1Q6InN0cmljdCIsRElTQUJMRUQ6''@;'; put 'put ''InVuc2FmZS1kaXNhYmxlZCJ9KTt2YXIgWT0vKD86Xig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkpezN9JCl8KD86Xig/Oig/OlthLWZcZF17MSw0fTopezd9KD86W2EtZlxkXXsxLDR9fDopfCg/''@;'; put 'put ''OlthLWZcZF17MSw0fTopezZ9KD86KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318OlthLWZcZF17MSw0fXw6KXwoPzpbYS1mXGRdezEsNH06KXs1fSg/OjooPzoyNVswLTVdfDJbMC00XVxk''@;'; put 'put ''fDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDJ9fDopfCg/OlthLWZcZF17MSw0fTopezR9KD86KD86OlthLWZcZF17MSw0fSl7MCwxfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsx''@;'; put 'put ''LTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDN9fDopfCg/OlthLWZcZF17MSw0fTopezN9KD86KD86OlthLWZcZF17MSw0fSl7MCwyfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQp''@;'; put 'put ''KD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDR9fDopfCg/OlthLWZcZF17MSw0fTopezJ9KD86KD86OlthLWZcZF17MSw0fSl7MCwzfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoy''@;'; put 'put ''NVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDV9fDopfCg/OlthLWZcZF17MSw0fTopezF9KD86KD86OlthLWZcZF17MSw0fSl7MCw0fTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJb''@;'; put 'put ''MC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDZ9fDopfCg/OjooPzooPzo6W2EtZlxkXXsxLDR9KXswLDV9Oig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkp''@;'; put 'put ''ezN9fCg/OjpbYS1mXGRdezEsNH0pezEsN318OikpKSQpLztmdW5jdGlvbiBiKE5lLExlLEJlLEhlKXtsZXQgUWU9MDtmb3IoO1FlPE5lLmxlbmd0aDspe2NvbnN0IG10PU5lLmNoYXJDb2RlQXQoUWUpO2lmKG10PD00N3x8bXQ+PTU4KWJyZWFrO1FlKyt9cmV0dXJuIFFlPExlfHxRZT5CZT9u''@;'; put 'put ''dWxsOkhlfHxRZT09TmUubGVuZ3RoP3BhcnNlSW50KE5lLnN1YnN0cigwLFFlKSwxMCk6bnVsbH1mdW5jdGlvbiB4KE5lKXtjb25zdCBMZT1OZS5zcGxpdCgiOiIpLEJlPVswLDAsMF07aWYoMyE9PUxlLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IEhlPTA7SGU8MztIZSsrKXtjb25zdCBt''@;'; put 'put ''dD1iKExlW0hlXSwxLDIsMj09SGUpO2lmKG51bGw9PT1tdClyZXR1cm4gbnVsbDtCZVtIZV09bXR9cmV0dXJuIEJlfWZ1bmN0aW9uIE4oTmUpe05lPVN0cmluZyhOZSkuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKTtjb25zdCBMZT1pZVtOZV07cmV0dXJuIExlPj0wP0xlOm51bGx9ZnVuY3Rp''@;'; put 'put ''b24gRihOZSl7aWYoIU5lKXJldHVybjtjb25zdCBMZT1OZS5zcGxpdChuZSk7aWYoIUxlKXJldHVybjtsZXQgQmU9bnVsbCxIZT1udWxsLFFlPW51bGwsbXQ9bnVsbCxLZT1udWxsLHdlPW51bGw7Zm9yKGxldCBJZT0wO0llPExlLmxlbmd0aDtJZSsrKXtjb25zdCBPZT1MZVtJZV0udHJpbSgp''@;'; put 'put ''O2lmKCFPZS5sZW5ndGgpY29udGludWU7bGV0IGV0O251bGw9PT1RZSYmKGV0PXgoT2UpLGV0KT8oQmU9ZXRbMF0sSGU9ZXRbMV0sUWU9ZXRbMl0pOm51bGwhPT1tdHx8KGV0PWIoT2UsMSwyLCEwKSxudWxsPT09ZXQpP251bGwhPT1LZXx8KGV0PU4oT2UpLG51bGw9PT1ldCk/bnVsbD09PXdl''@;'; put 'put ''JiYoZXQ9YihPZSwyLDQsITApLG51bGwhPT1ldCYmKHdlPWV0LHdlPj03MCYmd2U8PTk5P3dlKz0xOTAwOndlPj0wJiZ3ZTw9NjkmJih3ZSs9MmUzKSkpOktlPWV0Om10PWV0fXJldHVybiBudWxsPT09bXR8fG51bGw9PT1LZXx8bnVsbD09PXdlfHxudWxsPT09UWV8fG10PDF8fG10PjMxfHx3''@;'; put 'put ''ZTwxNjAxfHxCZT4yM3x8SGU+NTl8fFFlPjU5P3ZvaWQgMDpuZXcgRGF0ZShEYXRlLlVUQyh3ZSxLZSxtdCxCZSxIZSxRZSkpfWZ1bmN0aW9uIGcoTmUpe3JldHVybiBOZS50b1VUQ1N0cmluZygpfWZ1bmN0aW9uIEMoTmUpe3JldHVybiBudWxsPT1OZT9udWxsOihOZT1OZS50cmltKCkucmVw''@;'; put 'put ''bGFjZSgvXlwuLywiIiksSyYmL1teXHUwMDAxLVx1MDA3Zl0vLnRlc3QoTmUpJiYoTmU9Sy50b0FTQ0lJKE5lKSksTmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gTShOZSxMZSxCZSl7aWYobnVsbD09TmV8fG51bGw9PUxlKXJldHVybiBudWxsO2lmKCExIT09QmUmJihOZT1DKE5lKSxMZT1D''@;'; put 'put ''KExlKSksTmU9PUxlKXJldHVybiEwO2NvbnN0IEhlPU5lLmluZGV4T2YoTGUpO3JldHVybiEoSGU8PTB8fE5lLmxlbmd0aCE9PUxlLmxlbmd0aCtIZXx8Ii4iIT09TmUuc3Vic3RyKEhlLTEsMSl8fFkudGVzdChOZSkpfWZ1bmN0aW9uIHkoTmUpe2lmKCFOZXx8Ii8iIT09TmUuc3Vic3RyKDAs''@;'; put 'put ''MSkpcmV0dXJuIi8iO2lmKCIvIj09PU5lKXJldHVybiBOZTtjb25zdCBMZT1OZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiAwPT09TGU/Ii8iOk5lLnNsaWNlKDAsTGUpfWZ1bmN0aW9uIFMoTmUsTGUpe0xlJiYib2JqZWN0Ij09dHlwZW9mIExlfHwoTGU9e30pO2NvbnN0IEJlPShOZT1OZS50''@;'; put 'put ''cmltKCkpLmluZGV4T2YoIjsiKSxIZT1mdW5jdGlvbiBwKE5lLExlKXtsZXQgQmUsSGUsUWU9KE5lPWZ1bmN0aW9uKEtlKXtmb3IobGV0IHdlPTA7d2U8cS5sZW5ndGg7d2UrKyl7Y29uc3QgSWU9S2UuaW5kZXhPZihxW3dlXSk7LTEhPT1JZSYmKEtlPUtlLnN1YnN0cigwLEllKSl9cmV0dXJu''@;'; put 'put ''IEtlfShOZSkpLmluZGV4T2YoIj0iKTtpZihMZSkwPT09UWUmJihRZT0oTmU9TmUuc3Vic3RyKDEpKS5pbmRleE9mKCI9IikpO2Vsc2UgaWYoUWU8PTApcmV0dXJuO2lmKFFlPD0wPyhCZT0iIixIZT1OZS50cmltKCkpOihCZT1OZS5zdWJzdHIoMCxRZSkudHJpbSgpLEhlPU5lLnN1YnN0cihR''@;'; put 'put ''ZSsxKS50cmltKCkpLFUudGVzdChCZSl8fFUudGVzdChIZSkpcmV0dXJuO2NvbnN0IG10PW5ldyBUZTtyZXR1cm4gbXQua2V5PUJlLG10LnZhbHVlPUhlLG10fSgtMT09PUJlP05lOk5lLnN1YnN0cigwLEJlKSwhIUxlLmxvb3NlKTtpZighSGUpcmV0dXJuO2lmKC0xPT09QmUpcmV0dXJuIEhl''@;'; put 'put ''O2NvbnN0IFFlPU5lLnNsaWNlKEJlKzEpLnRyaW0oKTtpZigwPT09UWUubGVuZ3RoKXJldHVybiBIZTtjb25zdCBtdD1RZS5zcGxpdCgiOyIpO2Zvcig7bXQubGVuZ3RoOyl7Y29uc3QgS2U9bXQuc2hpZnQoKS50cmltKCk7aWYoMD09PUtlLmxlbmd0aCljb250aW51ZTtjb25zdCB3ZT1LZS5p''@;'; put 'put ''bmRleE9mKCI9Iik7bGV0IEllLE9lO3N3aXRjaCgtMT09PXdlPyhJZT1LZSxPZT1udWxsKTooSWU9S2Uuc3Vic3RyKDAsd2UpLE9lPUtlLnN1YnN0cih3ZSsxKSksSWU9SWUudHJpbSgpLnRvTG93ZXJDYXNlKCksT2UmJihPZT1PZS50cmltKCkpLEllKXtjYXNlImV4cGlyZXMiOmlmKE9lKXtj''@;'; put 'put ''b25zdCBldD1GKE9lKTtldCYmKEhlLmV4cGlyZXM9ZXQpfWJyZWFrO2Nhc2UibWF4LWFnZSI6aWYoT2UmJi9eLT9bMC05XSskLy50ZXN0KE9lKSl7Y29uc3QgZXQ9cGFyc2VJbnQoT2UsMTApO0hlLnNldE1heEFnZShldCl9YnJlYWs7Y2FzZSJkb21haW4iOmlmKE9lKXtjb25zdCBldD1PZS50''@;'; put 'put ''cmltKCkucmVwbGFjZSgvXlwuLywiIik7ZXQmJihIZS5kb21haW49ZXQudG9Mb3dlckNhc2UoKSl9YnJlYWs7Y2FzZSJwYXRoIjpIZS5wYXRoPU9lJiYiLyI9PT1PZVswXT9PZTpudWxsO2JyZWFrO2Nhc2Uic2VjdXJlIjpIZS5zZWN1cmU9ITA7YnJlYWs7Y2FzZSJodHRwb25seSI6SGUuaHR0''@;'; put 'put ''cE9ubHk9ITA7YnJlYWs7Y2FzZSJzYW1lc2l0ZSI6c3dpdGNoKE9lP09lLnRvTG93ZXJDYXNlKCk6IiIpe2Nhc2Uic3RyaWN0IjpIZS5zYW1lU2l0ZT0ic3RyaWN0IjticmVhaztjYXNlImxheCI6SGUuc2FtZVNpdGU9ImxheCJ9YnJlYWs7ZGVmYXVsdDpIZS5leHRlbnNpb25zPUhlLmV4dGVu''@;'; put 'put ''c2lvbnN8fFtdLEhlLmV4dGVuc2lvbnMucHVzaChLZSl9fXJldHVybiBIZX1mdW5jdGlvbiBRKE5lKXtsZXQgTGU7dHJ5e0xlPUpTT04ucGFyc2UoTmUpfWNhdGNoKEJlKXtyZXR1cm4gQmV9cmV0dXJuIExlfWZ1bmN0aW9uIHJlKE5lKXtpZighTmUpcmV0dXJuIG51bGw7bGV0IExlO2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgTmUpe2lmKExlPVEoTmUpLExlIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIG51bGx9ZWxzZSBMZT1OZTtjb25zdCBCZT1uZXcgVGU7Zm9yKGxldCBIZT0wO0hlPFRlLnNlcmlhbGl6YWJsZVByb3BlcnRpZXMubGVuZ3RoO0hlKyspe2NvbnN0IFFlPVRlLnNlcmlhbGl6''@;'; put 'put ''YWJsZVByb3BlcnRpZXNbSGVdO3ZvaWQgMCE9PUxlW1FlXSYmTGVbUWVdIT09a2VbUWVdJiYoQmVbUWVdPSJleHBpcmVzIj09PVFlfHwiY3JlYXRpb24iPT09UWV8fCJsYXN0QWNjZXNzZWQiPT09UWU/bnVsbD09PUxlW1FlXT9udWxsOiJJbmZpbml0eSI9PUxlW1FlXT8iSW5maW5pdHkiOm5l''@;'; put 'put ''dyBEYXRlKExlW1FlXSk6TGVbUWVdKX1yZXR1cm4gQmV9ZnVuY3Rpb24gZmUoTmUsTGUpe2xldCBCZT0wO3JldHVybiBCZT0oTGUucGF0aD9MZS5wYXRoLmxlbmd0aDowKS0oTmUucGF0aD9OZS5wYXRoLmxlbmd0aDowKSwwIT09QmV8fChCZT0oTmUuY3JlYXRpb24/TmUuY3JlYXRpb24uZ2V0''@;'; put 'put ''VGltZSgpOmxlKS0oTGUuY3JlYXRpb24/TGUuY3JlYXRpb24uZ2V0VGltZSgpOmxlKSwwIT09QmV8fChCZT1OZS5jcmVhdGlvbkluZGV4LUxlLmNyZWF0aW9uSW5kZXgpKSxCZX1mdW5jdGlvbiBtZShOZSl7aWYoTmUgaW5zdGFuY2VvZiBPYmplY3QpcmV0dXJuIE5lO3RyeXtOZT1kZWNvZGVV''@;'; put 'put ''UkkoTmUpfWNhdGNoe31yZXR1cm4gSihOZSl9Y29uc3Qga2U9e2tleToiIix2YWx1ZToiIixleHBpcmVzOiJJbmZpbml0eSIsbWF4QWdlOm51bGwsZG9tYWluOm51bGwscGF0aDpudWxsLHNlY3VyZTohMSxodHRwT25seTohMSxleHRlbnNpb25zOm51bGwsaG9zdE9ubHk6bnVsbCxwYXRoSXNE''@;'; put 'put ''ZWZhdWx0Om51bGwsY3JlYXRpb246bnVsbCxsYXN0QWNjZXNzZWQ6bnVsbCxzYW1lU2l0ZToibm9uZSJ9O2NsYXNzIFRle2NvbnN0cnVjdG9yKExlPXt9KXtJLmluc3BlY3QuY3VzdG9tJiYodGhpc1tJLmluc3BlY3QuY3VzdG9tXT10aGlzLmluc3BlY3QpLE9iamVjdC5hc3NpZ24odGhpcyxr''@;'; put 'put ''ZSxMZSksdGhpcy5jcmVhdGlvbj10aGlzLmNyZWF0aW9ufHxuZXcgRGF0ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY3JlYXRpb25JbmRleCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOisrVGUuY29va2llc0NyZWF0ZWR9KX1pbnNwZWN0''@;'; put 'put ''KCl7Y29uc3QgTGU9RGF0ZS5ub3coKSxCZT1udWxsIT10aGlzLmhvc3RPbmx5P3RoaXMuaG9zdE9ubHk6Ij8iLEhlPXRoaXMuY3JlYXRpb24/TGUtdGhpcy5jcmVhdGlvbi5nZXRUaW1lKCkrIm1zIjoiPyIsUWU9dGhpcy5sYXN0QWNjZXNzZWQ/TGUtdGhpcy5sYXN0QWNjZXNzZWQuZ2V0VGlt''@;'; put 'put ''ZSgpKyJtcyI6Ij8iO3JldHVybmBDb29raWU9IiR7dGhpcy50b1N0cmluZygpfTsgaG9zdE9ubHk9JHtCZX07IGFBZ2U9JHtRZX07IGNBZ2U9JHtIZX0iYH10b0pTT04oKXtjb25zdCBMZT17fTtmb3IoY29uc3QgQmUgb2YgVGUuc2VyaWFsaXphYmxlUHJvcGVydGllcyl0aGlzW0JlXSE9PWtl''@;'; put 'put ''W0JlXSYmKCJleHBpcmVzIj09PUJlfHwiY3JlYXRpb24iPT09QmV8fCJsYXN0QWNjZXNzZWQiPT09QmU/TGVbQmVdPW51bGw9PT10aGlzW0JlXT9udWxsOiJJbmZpbml0eSI9PXRoaXNbQmVdPyJJbmZpbml0eSI6dGhpc1tCZV0udG9JU09TdHJpbmcoKToibWF4QWdlIj09PUJlP251bGwhPT10''@;'; put 'put ''aGlzW0JlXSYmKExlW0JlXT10aGlzW0JlXT09MS8wfHx0aGlzW0JlXT09LTEvMD90aGlzW0JlXS50b1N0cmluZygpOnRoaXNbQmVdKTp0aGlzW0JlXSE9PWtlW0JlXSYmKExlW0JlXT10aGlzW0JlXSkpO3JldHVybiBMZX1jbG9uZSgpe3JldHVybiByZSh0aGlzLnRvSlNPTigpKX12YWxpZGF0''@;'; put 'put ''ZSgpe2lmKCFXLnRlc3QodGhpcy52YWx1ZSl8fCEodGhpcy5leHBpcmVzPT0xLzB8fHRoaXMuZXhwaXJlcyBpbnN0YW5jZW9mIERhdGV8fEYodGhpcy5leHBpcmVzKSl8fG51bGwhPXRoaXMubWF4QWdlJiZ0aGlzLm1heEFnZTw9MHx8bnVsbCE9dGhpcy5wYXRoJiYhdGUudGVzdCh0aGlzLnBh''@;'; put 'put ''dGgpKXJldHVybiExO2NvbnN0IExlPXRoaXMuY2RvbWFpbigpO3JldHVybiEoTGUmJihMZS5tYXRjaCgvXC4kLyl8fG51bGw9PVIuZ2V0UHVibGljU3VmZml4KExlKSkpfXNldEV4cGlyZXMoTGUpe3RoaXMuZXhwaXJlcz1MZSBpbnN0YW5jZW9mIERhdGU/TGU6RihMZSl8fCJJbmZpbml0eSJ9''@;'; put 'put ''c2V0TWF4QWdlKExlKXt0aGlzLm1heEFnZT1MZT09PTEvMHx8TGU9PT0tMS8wP0xlLnRvU3RyaW5nKCk6TGV9Y29va2llU3RyaW5nKCl7bGV0IExlPXRoaXMudmFsdWU7cmV0dXJuIG51bGw9PUxlJiYoTGU9IiIpLCIiPT09dGhpcy5rZXk/TGU6YCR7dGhpcy5rZXl9PSR7TGV9YH10b1N0cmlu''@;'; put 'put ''Zygpe2xldCBMZT10aGlzLmNvb2tpZVN0cmluZygpO2lmKHRoaXMuZXhwaXJlcyE9MS8wJiYodGhpcy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZT9MZSs9YDsgRXhwaXJlcz0ke2codGhpcy5leHBpcmVzKX1gOkxlKz1gOyBFeHBpcmVzPSR7dGhpcy5leHBpcmVzfWApLG51bGwhPXRoaXMubWF4''@;'; put 'put ''QWdlJiZ0aGlzLm1heEFnZSE9MS8wJiYoTGUrPWA7IE1heC1BZ2U9JHt0aGlzLm1heEFnZX1gKSx0aGlzLmRvbWFpbiYmIXRoaXMuaG9zdE9ubHkmJihMZSs9YDsgRG9tYWluPSR7dGhpcy5kb21haW59YCksdGhpcy5wYXRoJiYoTGUrPWA7IFBhdGg9JHt0aGlzLnBhdGh9YCksdGhpcy5zZWN1''@;'; put 'put ''cmUmJihMZSs9IjsgU2VjdXJlIiksdGhpcy5odHRwT25seSYmKExlKz0iOyBIdHRwT25seSIpLHRoaXMuc2FtZVNpdGUmJiJub25lIiE9PXRoaXMuc2FtZVNpdGUpe2NvbnN0IEJlPVRlLnNhbWVTaXRlQ2Fub25pY2FsW3RoaXMuc2FtZVNpdGUudG9Mb3dlckNhc2UoKV07TGUrPWA7IFNhbWVT''@;'; put 'put ''aXRlPSR7QmV8fHRoaXMuc2FtZVNpdGV9YH1yZXR1cm4gdGhpcy5leHRlbnNpb25zJiZ0aGlzLmV4dGVuc2lvbnMuZm9yRWFjaChCZT0+e0xlKz1gOyAke0JlfWB9KSxMZX1UVEwoTGUpe2lmKG51bGwhPXRoaXMubWF4QWdlKXJldHVybiB0aGlzLm1heEFnZTw9MD8wOjFlMyp0aGlzLm1heEFn''@;'; put 'put ''ZTtsZXQgQmU9dGhpcy5leHBpcmVzO3JldHVybiBCZSE9MS8wPyhCZSBpbnN0YW5jZW9mIERhdGV8fChCZT1GKEJlKXx8MS8wKSxCZT09MS8wPzEvMDpCZS5nZXRUaW1lKCktKExlfHxEYXRlLm5vdygpKSk6MS8wfWV4cGlyeVRpbWUoTGUpe2lmKG51bGwhPXRoaXMubWF4QWdlKXtjb25zdCBI''@;'; put 'put ''ZT10aGlzLm1heEFnZTw9MD8tMS8wOjFlMyp0aGlzLm1heEFnZTtyZXR1cm4oTGV8fHRoaXMuY3JlYXRpb258fG5ldyBEYXRlKS5nZXRUaW1lKCkrSGV9cmV0dXJuIHRoaXMuZXhwaXJlcz09MS8wPzEvMDp0aGlzLmV4cGlyZXMuZ2V0VGltZSgpfWV4cGlyeURhdGUoTGUpe2NvbnN0IEJlPXRo''@;'; put 'put ''aXMuZXhwaXJ5VGltZShMZSk7cmV0dXJuIEJlPT0xLzA/bmV3IERhdGUobGUpOkJlPT0tMS8wP25ldyBEYXRlKDApOm5ldyBEYXRlKEJlKX1pc1BlcnNpc3RlbnQoKXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhBZ2V8fHRoaXMuZXhwaXJlcyE9MS8wfWNhbm9uaWNhbGl6ZWREb21haW4oKXtyZXR1''@;'; put 'put ''cm4gbnVsbD09dGhpcy5kb21haW4/bnVsbDpDKHRoaXMuZG9tYWluKX1jZG9tYWluKCl7cmV0dXJuIHRoaXMuY2Fub25pY2FsaXplZERvbWFpbigpfX1UZS5jb29raWVzQ3JlYXRlZD0wLFRlLnBhcnNlPVMsVGUuZnJvbUpTT049cmUsVGUuc2VyaWFsaXphYmxlUHJvcGVydGllcz1PYmplY3Qu''@;'; put 'put ''a2V5cyhrZSksVGUuc2FtZVNpdGVMZXZlbD17c3RyaWN0OjMsbGF4OjIsbm9uZToxfSxUZS5zYW1lU2l0ZUNhbm9uaWNhbD17c3RyaWN0OiJTdHJpY3QiLGxheDoiTGF4In07Y2xhc3MgUGV7Y29uc3RydWN0b3IoTGUsQmU9e3JlamVjdFB1YmxpY1N1ZmZpeGVzOiEwfSl7ImJvb2xlYW4iPT10''@;'; put 'put ''eXBlb2YgQmUmJihCZT17cmVqZWN0UHVibGljU3VmZml4ZXM6QmV9KSx0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzPUJlLnJlamVjdFB1YmxpY1N1ZmZpeGVzLHRoaXMuZW5hYmxlTG9vc2VNb2RlPSEhQmUubG9vc2VNb2RlLHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9tYWluPSEhQmUuYWxsb3dT''@;'; put 'put ''cGVjaWFsVXNlRG9tYWluLHRoaXMuc3RvcmU9TGV8fG5ldyB6LHRoaXMucHJlZml4U2VjdXJpdHk9ZnVuY3Rpb24oSGUpe2lmKG51bGwhPUhlKXtjb25zdCBRZT1IZS50b0xvd2VyQ2FzZSgpO3N3aXRjaChRZSl7Y2FzZSBjZS5TVFJJQ1Q6Y2FzZSBjZS5TSUxFTlQ6Y2FzZSBjZS5ESVNBQkxF''@;'; put 'put ''RDpyZXR1cm4gUWV9fXJldHVybiBjZS5TSUxFTlR9KEJlLnByZWZpeFNlY3VyaXR5KSx0aGlzLl9jbG9uZVN5bmM9RmUoImNsb25lIiksdGhpcy5faW1wb3J0Q29va2llc1N5bmM9RmUoIl9pbXBvcnRDb29raWVzIiksdGhpcy5nZXRDb29raWVzU3luYz1GZSgiZ2V0Q29va2llcyIpLHRoaXMu''@;'; put 'put ''Z2V0Q29va2llU3RyaW5nU3luYz1GZSgiZ2V0Q29va2llU3RyaW5nIiksdGhpcy5nZXRTZXRDb29raWVTdHJpbmdzU3luYz1GZSgiZ2V0U2V0Q29va2llU3RyaW5ncyIpLHRoaXMucmVtb3ZlQWxsQ29va2llc1N5bmM9RmUoInJlbW92ZUFsbENvb2tpZXMiKSx0aGlzLnNldENvb2tpZVN5bmM9''@;'; put 'put ''RmUoInNldENvb2tpZSIpLHRoaXMuc2VyaWFsaXplU3luYz1GZSgic2VyaWFsaXplIil9c2V0Q29va2llKExlLEJlLEhlLFFlKXtsZXQgbXQ7Y29uc3QgS2U9bWUoQmUpOyJmdW5jdGlvbiI9PXR5cGVvZiBIZSYmKFFlPUhlLEhlPXt9KTtjb25zdCB3ZT1DKEtlLmhvc3RuYW1lKSxJZT1IZS5s''@;'; put 'put ''b29zZXx8dGhpcy5lbmFibGVMb29zZU1vZGU7bGV0IE9lPW51bGw7aWYoSGUuc2FtZVNpdGVDb250ZXh0JiYoT2U9dWUoSGUuc2FtZVNpdGVDb250ZXh0KSwhT2UpKXJldHVybiBRZShuZXcgRXJyb3IoZGUpKTtpZigic3RyaW5nIj09dHlwZW9mIExlfHxMZSBpbnN0YW5jZW9mIFN0cmluZyl7''@;'; put 'put ''aWYoIShMZT1UZS5wYXJzZShMZSx7bG9vc2U6SWV9KSkpcmV0dXJuIG10PW5ldyBFcnJvcigiQ29va2llIGZhaWxlZCB0byBwYXJzZSIpLFFlKEhlLmlnbm9yZUVycm9yP251bGw6bXQpfWVsc2UgaWYoIShMZSBpbnN0YW5jZW9mIFRlKSlyZXR1cm4gbXQ9bmV3IEVycm9yKCJGaXJzdCBhcmd1''@;'; put 'put ''bWVudCB0byBzZXRDb29raWUgbXVzdCBiZSBhIENvb2tpZSBvYmplY3Qgb3Igc3RyaW5nIiksUWUoSGUuaWdub3JlRXJyb3I/bnVsbDptdCk7Y29uc3QgZXQ9SGUubm93fHxuZXcgRGF0ZTtpZih0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzJiZMZS5kb21haW4mJm51bGw9PVIuZ2V0UHVibGlj''@;'; put 'put ''U3VmZml4KExlLmNkb21haW4oKSkpcmV0dXJuIG10PW5ldyBFcnJvcigiQ29va2llIGhhcyBkb21haW4gc2V0IHRvIGEgcHVibGljIHN1ZmZpeCIpLFFlKEhlLmlnbm9yZUVycm9yP251bGw6bXQpO2lmKExlLmRvbWFpbil7aWYoIU0od2UsTGUuY2RvbWFpbigpLCExKSlyZXR1cm4gbXQ9bmV3''@;'; put 'put ''IEVycm9yKGBDb29raWUgbm90IGluIHRoaXMgaG9zdCdzIGRvbWFpbi4gQ29va2llOiR7TGUuY2RvbWFpbigpfSBSZXF1ZXN0OiR7d2V9YCksUWUoSGUuaWdub3JlRXJyb3I/bnVsbDptdCk7bnVsbD09TGUuaG9zdE9ubHkmJihMZS5ob3N0T25seT0hMSl9ZWxzZSBMZS5ob3N0T25seT0hMCxM''@;'; put 'put ''ZS5kb21haW49d2U7aWYoTGUucGF0aCYmIi8iPT09TGUucGF0aFswXXx8KExlLnBhdGg9eShLZS5wYXRobmFtZSksTGUucGF0aElzRGVmYXVsdD0hMCksITE9PT1IZS5odHRwJiZMZS5odHRwT25seSlyZXR1cm4gbXQ9bmV3IEVycm9yKCJDb29raWUgaXMgSHR0cE9ubHkgYW5kIHRoaXMgaXNu''@;'; put 'put ''J3QgYW4gSFRUUCBBUEkiKSxRZShIZS5pZ25vcmVFcnJvcj9udWxsOm10KTtpZigibm9uZSIhPT1MZS5zYW1lU2l0ZSYmT2UmJiJub25lIj09PU9lKXJldHVybiBtdD1uZXcgRXJyb3IoIkNvb2tpZSBpcyBTYW1lU2l0ZSBidXQgdGhpcyBpcyBhIGNyb3NzLW9yaWdpbiByZXF1ZXN0IiksUWUo''@;'; put 'put ''SGUuaWdub3JlRXJyb3I/bnVsbDptdCk7Y29uc3QgbnQ9dGhpcy5wcmVmaXhTZWN1cml0eT09PWNlLlNJTEVOVDtpZih0aGlzLnByZWZpeFNlY3VyaXR5IT09Y2UuRElTQUJMRUQpe2xldCBodCxFZT0hMTtpZighKERlPUxlKS5rZXkuc3RhcnRzV2l0aCgiX19TZWN1cmUtIil8fERlLnNlY3Vy''@;'; put 'put ''ZT9mdW5jdGlvbihEZSl7cmV0dXJuIURlLmtleS5zdGFydHNXaXRoKCJfX0hvc3QtIil8fERlLnNlY3VyZSYmRGUuaG9zdE9ubHkmJm51bGwhPURlLnBhdGgmJiIvIj09PURlLnBhdGh9KExlKXx8KEVlPSEwLGh0PSJDb29raWUgaGFzIF9fSG9zdCBwcmVmaXggYnV0IGVpdGhlciBTZWN1cmUg''@;'; put 'put ''b3IgSG9zdE9ubHkgYXR0cmlidXRlIGlzIG5vdCBzZXQgb3IgUGF0aCBpcyBub3QgJy8nIik6KEVlPSEwLGh0PSJDb29raWUgaGFzIF9fU2VjdXJlIHByZWZpeCBidXQgU2VjdXJlIGF0dHJpYnV0ZSBpcyBub3Qgc2V0IiksRWUpcmV0dXJuIFFlKEhlLmlnbm9yZUVycm9yfHxudD9udWxsOm5l''@;'; put 'put ''dyBFcnJvcihodCkpfXZhciBEZTtjb25zdCBxZT10aGlzLnN0b3JlO3FlLnVwZGF0ZUNvb2tpZXx8KHFlLnVwZGF0ZUNvb2tpZT1mdW5jdGlvbihodCxFZSxEZSl7dGhpcy5wdXRDb29raWUoRWUsRGUpfSkscWUuZmluZENvb2tpZShMZS5kb21haW4sTGUucGF0aCxMZS5rZXksZnVuY3Rpb24o''@;'; put 'put ''aHQsRWUpe2lmKGh0KXJldHVybiBRZShodCk7Y29uc3QgRGU9ZnVuY3Rpb24oJGUpe2lmKCRlKXJldHVybiBRZSgkZSk7UWUobnVsbCxMZSl9O2lmKEVlKXtpZighMT09PUhlLmh0dHAmJkVlLmh0dHBPbmx5KXJldHVybiBodD1uZXcgRXJyb3IoIm9sZCBDb29raWUgaXMgSHR0cE9ubHkgYW5k''@;'; put 'put ''IHRoaXMgaXNuJ3QgYW4gSFRUUCBBUEkiKSxRZShIZS5pZ25vcmVFcnJvcj9udWxsOmh0KTtMZS5jcmVhdGlvbj1FZS5jcmVhdGlvbixMZS5jcmVhdGlvbkluZGV4PUVlLmNyZWF0aW9uSW5kZXgsTGUubGFzdEFjY2Vzc2VkPWV0LHFlLnVwZGF0ZUNvb2tpZShFZSxMZSxEZSl9ZWxzZSBMZS5j''@;'; put 'put ''cmVhdGlvbj1MZS5sYXN0QWNjZXNzZWQ9ZXQscWUucHV0Q29va2llKExlLERlKX0pfWdldENvb2tpZXMoTGUsQmUsSGUpe2NvbnN0IFFlPW1lKExlKTsiZnVuY3Rpb24iPT10eXBlb2YgQmUmJihIZT1CZSxCZT17fSk7Y29uc3QgbXQ9QyhRZS5ob3N0bmFtZSksS2U9UWUucGF0aG5hbWV8fCIv''@;'; put 'put ''IjtsZXQgd2U9QmUuc2VjdXJlO251bGwhPXdlfHwhUWUucHJvdG9jb2x8fCJodHRwczoiIT1RZS5wcm90b2NvbCYmIndzczoiIT1RZS5wcm90b2NvbHx8KHdlPSEwKTtsZXQgSWU9MDtpZihCZS5zYW1lU2l0ZUNvbnRleHQpe2NvbnN0IERlPXVlKEJlLnNhbWVTaXRlQ29udGV4dCk7aWYoSWU9''@;'; put 'put ''VGUuc2FtZVNpdGVMZXZlbFtEZV0sIUllKXJldHVybiBIZShuZXcgRXJyb3IoZGUpKX1sZXQgT2U9QmUuaHR0cDtudWxsPT1PZSYmKE9lPSEwKTtjb25zdCBldD1CZS5ub3d8fERhdGUubm93KCksbnQ9ITEhPT1CZS5leHBpcmUscWU9ISFCZS5hbGxQYXRocyxodD10aGlzLnN0b3JlO2Z1bmN0''@;'; put 'put ''aW9uIEVlKERlKXtpZihEZS5ob3N0T25seSl7aWYoRGUuZG9tYWluIT1tdClyZXR1cm4hMX1lbHNlIGlmKCFNKG10LERlLmRvbWFpbiwhMSkpcmV0dXJuITE7cmV0dXJuISghcWUmJiFqKEtlLERlLnBhdGgpfHxEZS5zZWN1cmUmJiF3ZXx8RGUuaHR0cE9ubHkmJiFPZXx8SWUmJlRlLnNhbWVT''@;'; put 'put ''aXRlTGV2ZWxbRGUuc2FtZVNpdGV8fCJub25lIl0+SWV8fG50JiZEZS5leHBpcnlUaW1lKCk8PWV0JiYoaHQucmVtb3ZlQ29va2llKERlLmRvbWFpbixEZS5wYXRoLERlLmtleSwoKT0+e30pLDEpKX1odC5maW5kQ29va2llcyhtdCxxZT9udWxsOktlLHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9t''@;'; put 'put ''YWluLChEZSwkZSk9PntpZihEZSlyZXR1cm4gSGUoRGUpOyRlPSRlLmZpbHRlcihFZSksITEhPT1CZS5zb3J0JiYoJGU9JGUuc29ydChmZSkpO2NvbnN0IGF0PW5ldyBEYXRlO2Zvcihjb25zdCBjdCBvZiAkZSljdC5sYXN0QWNjZXNzZWQ9YXQ7SGUobnVsbCwkZSl9KX1nZXRDb29raWVTdHJp''@;'; put 'put ''bmcoLi4uTGUpe2NvbnN0IEJlPUxlLnBvcCgpO0xlLnB1c2goZnVuY3Rpb24oSGUsUWUpe0hlP0JlKEhlKTpCZShudWxsLFFlLnNvcnQoZmUpLm1hcChtdD0+bXQuY29va2llU3RyaW5nKCkpLmpvaW4oIjsgIikpfSksdGhpcy5nZXRDb29raWVzLmFwcGx5KHRoaXMsTGUpfWdldFNldENvb2tp''@;'; put 'put ''ZVN0cmluZ3MoLi4uTGUpe2NvbnN0IEJlPUxlLnBvcCgpO0xlLnB1c2goZnVuY3Rpb24oSGUsUWUpe0hlP0JlKEhlKTpCZShudWxsLFFlLm1hcChtdD0+bXQudG9TdHJpbmcoKSkpfSksdGhpcy5nZXRDb29raWVzLmFwcGx5KHRoaXMsTGUpfXNlcmlhbGl6ZShMZSl7bGV0IEJlPXRoaXMuc3Rv''@;'; put 'put ''cmUuY29uc3RydWN0b3IubmFtZTsiT2JqZWN0Ij09PUJlJiYoQmU9bnVsbCk7Y29uc3QgSGU9e3ZlcnNpb246YHRvdWdoLWNvb2tpZUAke1Z9YCxzdG9yZVR5cGU6QmUscmVqZWN0UHVibGljU3VmZml4ZXM6ISF0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzLGNvb2tpZXM6W119O2lmKCF0aGlz''@;'; put 'put ''LnN0b3JlLmdldEFsbENvb2tpZXN8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLnN0b3JlLmdldEFsbENvb2tpZXMpcmV0dXJuIExlKG5ldyBFcnJvcigic3RvcmUgZG9lcyBub3Qgc3VwcG9ydCBnZXRBbGxDb29raWVzIGFuZCBjYW5ub3QgYmUgc2VyaWFsaXplZCIpKTt0aGlzLnN0b3JlLmdl''@;'; put 'put ''dEFsbENvb2tpZXMoKFFlLG10KT0+UWU/TGUoUWUpOihIZS5jb29raWVzPW10Lm1hcChLZT0+KGRlbGV0ZShLZT1LZSBpbnN0YW5jZW9mIFRlP0tlLnRvSlNPTigpOktlKS5jcmVhdGlvbkluZGV4LEtlKSksTGUobnVsbCxIZSkpKX10b0pTT04oKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVTeW5j''@;'; put 'put ''KCl9X2ltcG9ydENvb2tpZXMoTGUsQmUpe2xldCBIZT1MZS5jb29raWVzO2lmKCFIZXx8IUFycmF5LmlzQXJyYXkoSGUpKXJldHVybiBCZShuZXcgRXJyb3IoInNlcmlhbGl6ZWQgamFyIGhhcyBubyBjb29raWVzIGFycmF5IikpO0hlPUhlLnNsaWNlKCk7Y29uc3QgUWU9bXQ9PntpZihtdCly''@;'; put 'put ''ZXR1cm4gQmUobXQpO2lmKCFIZS5sZW5ndGgpcmV0dXJuIEJlKG10LHRoaXMpO2xldCBLZTt0cnl7S2U9cmUoSGUuc2hpZnQoKSl9Y2F0Y2god2Upe3JldHVybiBCZSh3ZSl9aWYobnVsbD09PUtlKXJldHVybiBRZShudWxsKTt0aGlzLnN0b3JlLnB1dENvb2tpZShLZSxRZSl9O1FlKCl9Y2xv''@;'; put 'put ''bmUoTGUsQmUpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYoQmU9TGUsTGU9bnVsbCksdGhpcy5zZXJpYWxpemUoKEhlLFFlKT0+e2lmKEhlKXJldHVybiBCZShIZSk7UGUuZGVzZXJpYWxpemUoUWUsTGUsQmUpfSl9Y2xvbmVTeW5jKExlKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4g''@;'; put 'put ''dGhpcy5fY2xvbmVTeW5jKCk7aWYoIUxlLnN5bmNocm9ub3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIGNsb25lIGRlc3RpbmF0aW9uIHN0b3JlIGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLl9jbG9uZVN5bmMoTGUpfXJlbW92''@;'; put 'put ''ZUFsbENvb2tpZXMoTGUpe2NvbnN0IEJlPXRoaXMuc3RvcmU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEJlLnJlbW92ZUFsbENvb2tpZXMmJkJlLnJlbW92ZUFsbENvb2tpZXMhPT1FLnByb3RvdHlwZS5yZW1vdmVBbGxDb29raWVzKXJldHVybiBCZS5yZW1vdmVBbGxDb29raWVzKExlKTtCZS5n''@;'; put 'put ''ZXRBbGxDb29raWVzKChIZSxRZSk9PntpZihIZSlyZXR1cm4gTGUoSGUpO2lmKDA9PT1RZS5sZW5ndGgpcmV0dXJuIExlKG51bGwpO2xldCBtdD0wO2NvbnN0IEtlPVtdO2Z1bmN0aW9uIHdlKEllKXtpZihJZSYmS2UucHVzaChJZSksbXQrKyxtdD09PVFlLmxlbmd0aClyZXR1cm4gTGUoS2Uu''@;'; put 'put ''bGVuZ3RoP0tlWzBdOm51bGwpfVFlLmZvckVhY2goSWU9PntCZS5yZW1vdmVDb29raWUoSWUuZG9tYWluLEllLnBhdGgsSWUua2V5LHdlKX0pfSl9c3RhdGljIGRlc2VyaWFsaXplKExlLEJlLEhlKXtsZXQgUWU7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgmJihIZT1CZSxCZT1udWxsKSwic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIExlKXtpZihRZT1RKExlKSxRZSBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBIZShRZSl9ZWxzZSBRZT1MZTtjb25zdCBtdD1uZXcgUGUoQmUsUWUucmVqZWN0UHVibGljU3VmZml4ZXMpO210Ll9pbXBvcnRDb29raWVzKFFlLEtlPT57aWYoS2UpcmV0dXJuIEhlKEtlKTtI''@;'; put 'put ''ZShudWxsLG10KX0pfXN0YXRpYyBkZXNlcmlhbGl6ZVN5bmMoTGUsQmUpe2NvbnN0IEhlPSJzdHJpbmciPT10eXBlb2YgTGU/SlNPTi5wYXJzZShMZSk6TGUsUWU9bmV3IFBlKEJlLEhlLnJlamVjdFB1YmxpY1N1ZmZpeGVzKTtpZighUWUuc3RvcmUuc3luY2hyb25vdXMpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJDb29raWVKYXIgc3RvcmUgaXMgbm90IHN5bmNocm9ub3VzOyB1c2UgYXN5bmMgQVBJIGluc3RlYWQuIik7cmV0dXJuIFFlLl9pbXBvcnRDb29raWVzU3luYyhIZSksUWV9fWZ1bmN0aW9uIEZlKE5lKXtyZXR1cm4gZnVuY3Rpb24oLi4uTGUpe2lmKCF0aGlzLnN0b3JlLnN5bmNocm9u''@;'; put 'put ''b3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIHN0b3JlIGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO2xldCBCZSxIZTtpZih0aGlzW05lXSguLi5MZSwoUWUsbXQpPT57QmU9UWUsSGU9bXR9KSxCZSl0aHJvdyBCZTtyZXR1cm4gSGV9fVBlLmZyb21K''@;'; put 'put ''U09OPVBlLmRlc2VyaWFsaXplU3luYyxbIl9pbXBvcnRDb29raWVzIiwiY2xvbmUiLCJnZXRDb29raWVzIiwiZ2V0Q29va2llU3RyaW5nIiwiZ2V0U2V0Q29va2llU3RyaW5ncyIsInJlbW92ZUFsbENvb2tpZXMiLCJzZXJpYWxpemUiLCJzZXRDb29raWUiXS5mb3JFYWNoKE5lPT57UGUucHJv''@;'; put 'put ''dG90eXBlW05lXT1HKFBlLnByb3RvdHlwZVtOZV0pfSksUGUuZGVzZXJpYWxpemU9RyhQZS5kZXNlcmlhbGl6ZSksQi52ZXJzaW9uPVYsQi5Db29raWVKYXI9UGUsQi5Db29raWU9VGUsQi5TdG9yZT1FLEIuTWVtb3J5Q29va2llU3RvcmU9eixCLnBhcnNlRGF0ZT1GLEIuZm9ybWF0RGF0ZT1n''@;'; put 'put ''LEIucGFyc2U9UyxCLmZyb21KU09OPXJlLEIuZG9tYWluTWF0Y2g9TSxCLmRlZmF1bHRQYXRoPXksQi5wYXRoTWF0Y2g9aixCLmdldFB1YmxpY1N1ZmZpeD1SLmdldFB1YmxpY1N1ZmZpeCxCLmNvb2tpZUNvbXBhcmU9ZmUsQi5wZXJtdXRlRG9tYWluPUwoNzMyNCkucGVybXV0ZURvbWFpbixC''@;'; put 'put ''LnBlcm11dGVQYXRoPWZ1bmN0aW9uKE5lKXtpZigiLyI9PT1OZSlyZXR1cm5bIi8iXTtjb25zdCBMZT1bTmVdO2Zvcig7TmUubGVuZ3RoPjE7KXtjb25zdCBCZT1OZS5sYXN0SW5kZXhPZigiLyIpO2lmKDA9PT1CZSlicmVhaztOZT1OZS5zdWJzdHIoMCxCZSksTGUucHVzaChOZSl9cmV0dXJu''@;'; put 'put ''IExlLnB1c2goIi8iKSxMZX0sQi5jYW5vbmljYWxEb21haW49QyxCLlByZWZpeFNlY3VyaXR5RW51bT1jZX0sNTc2MTooSCxCLEwpPT57InVzZSBzdHJpY3QiO2NvbnN0e2Zyb21DYWxsYmFjazpLfT1MKDcwNDEpLEo9TCgyMjI0KS55LEk9TCg3MzI0KS5wZXJtdXRlRG9tYWluLFI9TCg4OTcx''@;'; put 'put ''KS5VLEU9TCg5NTM5KTtjbGFzcyB6IGV4dGVuZHMgSntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5zeW5jaHJvbm91cz0hMCx0aGlzLmlkeD17fSxFLmluc3BlY3QuY3VzdG9tJiYodGhpc1tFLmluc3BlY3QuY3VzdG9tXT10aGlzLmluc3BlY3QpfWluc3BlY3QoKXtyZXR1cm5geyBpZHg6''@;'; put 'put ''ICR7RS5pbnNwZWN0KHRoaXMuaWR4LCExLDIpfSB9YH1maW5kQ29va2llKFYsRyxXLFUpe3JldHVybiBVKG51bGwsdGhpcy5pZHhbVl0mJnRoaXMuaWR4W1ZdW0ddP3RoaXMuaWR4W1ZdW0ddW1ddfHxudWxsOnZvaWQgMCl9ZmluZENvb2tpZXMoVixHLFcsVSl7Y29uc3QgcT1bXTtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgVyYmKFU9VyxXPSExKSwhVilyZXR1cm4gVShudWxsLFtdKTtsZXQgdGU7dGU9Rz9mdW5jdGlvbihsZSl7T2JqZWN0LmtleXMobGUpLmZvckVhY2goZGU9PntpZihSKEcsZGUpKXtjb25zdCB1ZT1sZVtkZV07Zm9yKGNvbnN0IGNlIGluIHVlKXEucHVzaCh1ZVtjZV0p''@;'; put 'put ''fX0pfTpmdW5jdGlvbihsZSl7Zm9yKGNvbnN0IGRlIGluIGxlKXtjb25zdCB1ZT1sZVtkZV07Zm9yKGNvbnN0IGNlIGluIHVlKXEucHVzaCh1ZVtjZV0pfX07Y29uc3QgbmU9SShWLFcpfHxbVl0saWU9dGhpcy5pZHg7bmUuZm9yRWFjaChsZT0+e2NvbnN0IGRlPWllW2xlXTtkZSYmdGUoZGUp''@;'; put 'put ''fSksVShudWxsLHEpfXB1dENvb2tpZShWLEcpe3RoaXMuaWR4W1YuZG9tYWluXXx8KHRoaXMuaWR4W1YuZG9tYWluXT17fSksdGhpcy5pZHhbVi5kb21haW5dW1YucGF0aF18fCh0aGlzLmlkeFtWLmRvbWFpbl1bVi5wYXRoXT17fSksdGhpcy5pZHhbVi5kb21haW5dW1YucGF0aF1bVi5rZXld''@;'; put 'put ''PVYsRyhudWxsKX11cGRhdGVDb29raWUoVixHLFcpe3RoaXMucHV0Q29va2llKEcsVyl9cmVtb3ZlQ29va2llKFYsRyxXLFUpe3RoaXMuaWR4W1ZdJiZ0aGlzLmlkeFtWXVtHXSYmdGhpcy5pZHhbVl1bR11bV10mJmRlbGV0ZSB0aGlzLmlkeFtWXVtHXVtXXSxVKG51bGwpfXJlbW92ZUNvb2tp''@;'; put 'put ''ZXMoVixHLFcpe3JldHVybiB0aGlzLmlkeFtWXSYmKEc/ZGVsZXRlIHRoaXMuaWR4W1ZdW0ddOmRlbGV0ZSB0aGlzLmlkeFtWXSksVyhudWxsKX1yZW1vdmVBbGxDb29raWVzKFYpe3JldHVybiB0aGlzLmlkeD17fSxWKG51bGwpfWdldEFsbENvb2tpZXMoVil7Y29uc3QgRz1bXSxXPXRoaXMu''@;'; put 'put ''aWR4O09iamVjdC5rZXlzKFcpLmZvckVhY2goVT0+e09iamVjdC5rZXlzKFdbVV0pLmZvckVhY2gocT0+e09iamVjdC5rZXlzKFdbVV1bcV0pLmZvckVhY2godGU9PntudWxsIT09dGUmJkcucHVzaChXW1VdW3FdW3RlXSl9KX0pfSksRy5zb3J0KChVLHEpPT4oVS5jcmVhdGlvbkluZGV4fHww''@;'; put 'put ''KS0ocS5jcmVhdGlvbkluZGV4fHwwKSksVihudWxsLEcpfX1bImZpbmRDb29raWUiLCJmaW5kQ29va2llcyIsInB1dENvb2tpZSIsInVwZGF0ZUNvb2tpZSIsInJlbW92ZUNvb2tpZSIsInJlbW92ZUNvb2tpZXMiLCJyZW1vdmVBbGxDb29raWVzIiwiZ2V0QWxsQ29va2llcyJdLmZvckVhY2go''@;'; put 'put ''aj0+e3pbal09Syh6LnByb3RvdHlwZVtqXSl9KSxCLm09en0sODk3MTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtCLlU9ZnVuY3Rpb24oTCxLKXtyZXR1cm4gSz09PUx8fDA9PT1MLmluZGV4T2YoSykmJigiLyI9PT1LLnN1YnN0cigtMSl8fCIvIj09PUwuc3Vic3RyKEsubGVuZ3RoLDEpKX19LDcz''@;'; put 'put ''MjQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBLPUwoNzUyKSxKPVsibG9jYWwiXTtCLnBlcm11dGVEb21haW49ZnVuY3Rpb24oSSxSKXtsZXQgRT1udWxsO2lmKFIpe2NvbnN0IEc9SS5zcGxpdCgiLiIpO0U9Si5pbmNsdWRlcyhHW0cubGVuZ3RoLTFdKT9gJHtHW0cubGVuZ3RoLTJd''@;'; put 'put ''fS4ke0dbRy5sZW5ndGgtMV19YDpLLmdldFB1YmxpY1N1ZmZpeChJKX1lbHNlIEU9Sy5nZXRQdWJsaWNTdWZmaXgoSSk7aWYoIUUpcmV0dXJuIG51bGw7aWYoRT09SSlyZXR1cm5bSV07Y29uc3Qgej1JLnNsaWNlKDAsLShFLmxlbmd0aCsxKSkuc3BsaXQoIi4iKS5yZXZlcnNlKCk7bGV0IGo9''@;'; put 'put ''RTtjb25zdCBWPVtqXTtmb3IoO3oubGVuZ3RoOylqPWAke3ouc2hpZnQoKX0uJHtqfWAsVi5wdXNoKGopO3JldHVybiBWfX0sNzUyOihILEIsTCk9PnsidXNlIHN0cmljdCI7Y29uc3QgSz1MKDYyNDQpO0IuZ2V0UHVibGljU3VmZml4PWZ1bmN0aW9uKEope3JldHVybiBLLmdldChKKX19LDIy''@;'; put 'put ''MjQ6KEgsQik9PnsidXNlIHN0cmljdCI7Qi55PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zeW5jaHJvbm91cz0hMX1maW5kQ29va2llKEwsSyxKLEkpe3Rocm93IG5ldyBFcnJvcigiZmluZENvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX1maW5kQ29va2llcyhMLEssSixJKXt0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoImZpbmRDb29raWVzIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXB1dENvb2tpZShMLEspe3Rocm93IG5ldyBFcnJvcigicHV0Q29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXVwZGF0ZUNvb2tpZShMLEssSil7dGhyb3cgbmV3IEVycm9yKCJ1cGRhdGVDb29raWUgaXMgbm90IGlt''@;'; put 'put ''cGxlbWVudGVkIil9cmVtb3ZlQ29va2llKEwsSyxKLEkpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXJlbW92ZUNvb2tpZXMoTCxLLEope3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVB''@;'; put 'put ''bGxDb29raWVzKEwpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1nZXRBbGxDb29raWVzKEwpe3Rocm93IG5ldyBFcnJvcigiZ2V0QWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQgKHRoZXJlZm9yZSBqYXIgY2Fubm90IGJlIHNlcmlh''@;'; put 'put ''bGl6ZWQpIil9fX0sNDU2Okg9PntILmV4cG9ydHM9IjQuMC4wIn0sNzA0MTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtCLmZyb21DYWxsYmFjaz1mdW5jdGlvbihMKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGFyZ3VtZW50c1th''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLTFdKXJldHVybiBuZXcgUHJvbWlzZSgoSyxKKT0+e2FyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoXT0oSSxSKT0+e2lmKEkpcmV0dXJuIEooSSk7SyhSKX0sYXJndW1lbnRzLmxlbmd0aCsrLEwuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk7TC5hcHBseSh0aGlzLGFy''@;'; put 'put ''Z3VtZW50cyl9LCJuYW1lIix7dmFsdWU6TC5uYW1lfSl9LEIuZnJvbVByb21pc2U9ZnVuY3Rpb24oTCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe2NvbnN0IEs9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEspcmV0''@;'; put 'put ''dXJuIEwuYXBwbHkodGhpcyxhcmd1bWVudHMpO0wuYXBwbHkodGhpcyxhcmd1bWVudHMpLnRoZW4oSj0+SyhudWxsLEopLEspfSwibmFtZSIse3ZhbHVlOkwubmFtZX0pfX0sNjcyOmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gSz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihqKXtmb3IodmFyIFYsRz0xLFc9YXJndW1lbnRzLmxlbmd0aDtHPFc7RysrKWZvcih2YXIgVSBpbiBWPWFyZ3VtZW50c1tHXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVixVKSYmKGpbVV09VltVXSk7''@;'; put 'put ''cmV0dXJuIGp9LEsuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxKPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihqLFYsRyxXKXtyZXR1cm4gbmV3KEd8fChHPVByb21pc2UpKShmdW5jdGlvbihVLHEpe2Z1bmN0aW9uIHRlKGxlKXt0cnl7aWUoVy5uZXh0KGxlKSl9Y2F0Y2goZGUpe3Eo''@;'; put 'put ''ZGUpfX1mdW5jdGlvbiBuZShsZSl7dHJ5e2llKFcudGhyb3cobGUpKX1jYXRjaChkZSl7cShkZSl9fWZ1bmN0aW9uIGllKGxlKXt2YXIgZGU7bGUuZG9uZT9VKGxlLnZhbHVlKTooZGU9bGUudmFsdWUsZGUgaW5zdGFuY2VvZiBHP2RlOm5ldyBHKGZ1bmN0aW9uKHVlKXt1ZShkZSl9KSkudGhl''@;'; put 'put ''bih0ZSxuZSl9aWUoKFc9Vy5hcHBseShqLFZ8fFtdKSkubmV4dCgpKX0pfSxJPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGosVil7dmFyIEcsVyxVLHEsdGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVVswXSl0aHJvdyBVWzFdO3JldHVybiBVWzFdfSx0cnlzOltd''@;'; put 'put ''LG9wczpbXX07cmV0dXJuIHE9e25leHQ6bmUoMCksdGhyb3c6bmUoMSkscmV0dXJuOm5lKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYocVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxxO2Z1bmN0aW9uIG5lKGllKXtyZXR1cm4gZnVuY3Rpb24obGUp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihkZSl7aWYoRyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt0ZTspdHJ5e2lmKEc9MSxXJiYoVT0yJmRlWzBdP1cucmV0dXJuOmRlWzBdP1cudGhyb3d8fCgoVT1XLnJldHVybikmJlUuY2FsbChXKSww''@;'; put 'put ''KTpXLm5leHQpJiYhKFU9VS5jYWxsKFcsZGVbMV0pKS5kb25lKXJldHVybiBVO3N3aXRjaChXPTAsVSYmKGRlPVsyJmRlWzBdLFUudmFsdWVdKSxkZVswXSl7Y2FzZSAwOmNhc2UgMTpVPWRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdGUubGFiZWwrKyx7dmFsdWU6ZGVbMV0sZG9uZTohMX07Y2Fz''@;'; put 'put ''ZSA1OnRlLmxhYmVsKyssVz1kZVsxXSxkZT1bMF07Y29udGludWU7Y2FzZSA3OmRlPXRlLm9wcy5wb3AoKSx0ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVT0oVT10ZS50cnlzKS5sZW5ndGg+MCYmVVtVLmxlbmd0aC0xXSl8fDYhPT1kZVswXSYmMiE9PWRlWzBdKSl7dGU9''@;'; put 'put ''MDtjb250aW51ZX1pZigzPT09ZGVbMF0mJighVXx8ZGVbMV0+VVswXSYmZGVbMV08VVszXSkpe3RlLmxhYmVsPWRlWzFdO2JyZWFrfWlmKDY9PT1kZVswXSYmdGUubGFiZWw8VVsxXSl7dGUubGFiZWw9VVsxXSxVPWRlO2JyZWFrfWlmKFUmJnRlLmxhYmVsPFVbMl0pe3RlLmxhYmVsPVVbMl0s''@;'; put 'put ''dGUub3BzLnB1c2goZGUpO2JyZWFrfVVbMl0mJnRlLm9wcy5wb3AoKSx0ZS50cnlzLnBvcCgpO2NvbnRpbnVlfWRlPVYuY2FsbChqLHRlKX1jYXRjaCh1ZSl7ZGU9WzYsdWVdLFc9MH1maW5hbGx5e0c9VT0wfWlmKDUmZGVbMF0pdGhyb3cgZGVbMV07cmV0dXJue3ZhbHVlOmRlWzBdP2RlWzFd''@;'; put 'put ''OnZvaWQgMCxkb25lOiEwfX0oW2llLGxlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuQ29udGV4dE1hbmFnZXI9dm9pZCAwO3ZhciBSPUwoNTkyOCksRT1MKDk3NzgpLHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBqKFYsRyl7dGhpcy5zZXJ2''@;'; put 'put ''ZXJVcmw9Vix0aGlzLnJlcXVlc3RDbGllbnQ9Ryx0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGNvbXB1dGUgY29udGV4dCIsIkRhdGEgTWluaW5nIGNvbXB1dGUgY29udGV4dCIsIkltcG9ydCA5IHNlcnZpY2UgY29tcHV0ZSBjb250ZXh0IiwiU0FT''@;'; put 'put ''IEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIgY29tcHV0ZSBjb250ZXh0IiwiU0FTIFN0dWRpbyBjb21wdXRlIGNvbnRleHQiLCJTQVMgVmlzdWFsIEZvcmVjYXN0aW5nIGNvbXB1dGUgY29udGV4dCJdLHRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4''@;'; put 'put ''dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGxhdW5jaGVyIGNvbnRleHQiLCJEYXRhIE1pbmluZyBsYXVuY2hlciBjb250ZXh0IiwiSW1wb3J0IDkgc2VydmljZSBsYXVuY2hlciBjb250ZXh0IiwiSm9iIEZsb3cgRXhlY3V0aW9uIGxhdW5jaGVyIGNvbnRleHQiLCJTQVMgSm9iIEV4ZWN1dGlv''@;'; put 'put ''biBsYXVuY2hlciBjb250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIgbGF1bmNoZXIgY29udGV4dCIsIlNBUyBTdHVkaW8gbGF1bmNoZXIgY29udGV4dCIsIlNBUyBWaXN1YWwgRm9yZWNhc3RpbmcgbGF1bmNoZXIgY29udGV4dCJdLFYmJigwLFIuaXNVcmwpKFYpfXJldHVybiBPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoai5wcm90b3R5cGUsImdldERlZmF1bHRDb21wdXRlQ29udGV4dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqLnByb3Rv''@;'; put 'put ''dHlwZSwiZ2V0RGVmYXVsdExhdW5jaGVyQ29udGV4dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0c30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxqLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oVil7cmV0''@;'; put 'put ''dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEc7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0''@;'; put 'put ''cz9saW1pdD0xMDAwMCIpLFYpLmNhdGNoKGZ1bmN0aW9uKFUpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShVLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dHMuICIpfSldO2Nhc2UgMTpyZXR1cm5bMiwoKEc9Vy5zZW50KCkucmVzdWx0KSYmRy5pdGVtcz9HLml0ZW1zOltd''@;'; put 'put ''KS5tYXAoZnVuY3Rpb24oVSl7cmV0dXJue2NyZWF0ZWRCeTpVLmNyZWF0ZWRCeSxpZDpVLmlkLG5hbWU6VS5uYW1lLHZlcnNpb246VS52ZXJzaW9uLGF0dHJpYnV0ZXM6e319fSldfX0pfSl9LGoucHJvdG90eXBlLmdldExhdW5jaGVyQ29udGV4dHM9ZnVuY3Rpb24oVil7cmV0dXJuIEoodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEc7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvbGF1bmNoZXIvY29udGV4dHM/bGltaXQ9''@;'; put 'put ''MTAwMDAiKSxWKS5jYXRjaChmdW5jdGlvbihVKXt0aHJvdygwLEUucHJlZml4TWVzc2FnZSkoVSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBsYXVuY2hlciBjb250ZXh0cy4gIil9KV07Y2FzZSAxOnJldHVyblsyLCgoRz1XLnNlbnQoKS5yZXN1bHQpJiZHLml0ZW1zP0cuaXRlbXM6W10pLm1hcChm''@;'; put 'put ''dW5jdGlvbihVKXtyZXR1cm57Y3JlYXRlZEJ5OlUuY3JlYXRlZEJ5LGlkOlUuaWQsbmFtZTpVLm5hbWUsdmVyc2lvbjpVLnZlcnNpb24sYXR0cmlidXRlczp7fX19KV19fSl9KX0sai5wcm90b3R5cGUuY3JlYXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oVixHLFcsVSxxLHRlKXtyZXR1cm4g''@;'; put 'put ''Sih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmUsaWUsbGUsZGUsdWU7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihjZSl7c3dpdGNoKGNlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMudmFsaWRhdGVDb250ZXh0TmFtZShWKSx0aGlzLmlzRGVmYXVsdENvbnRleHQoVix0aGlz''@;'; put 'put ''LmRlZmF1bHRDb21wdXRlQ29udGV4dHMsIkNvbXB1dGUgY29udGV4dCAnIi5jb25jYXQoViwiJyBhbHJlYWR5IGV4aXN0cy4iKSksWzQsdGhpcy5nZXRDb21wdXRlQ29udGV4dHMocSldO2Nhc2UgMTppZihjZS5zZW50KCkuZmluZChmdW5jdGlvbihZKXtyZXR1cm4gWS5uYW1lPT09Vn0pKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiQ29tcHV0ZSBjb250ZXh0ICciLmNvbmNhdChWLCInIGFscmVhZHkgZXhpc3RzLiIpKTtyZXR1cm4gRz90aGlzLmRlZmF1bHRMYXVuY2hlckNvbnRleHRzLmluY2x1ZGVzKEcpP1szLDRdOls0LHRoaXMuZ2V0TGF1bmNoZXJDb250ZXh0cyhxKV06WzMsNF07Y2FzZSAy''@;'; put 'put ''OnJldHVybiBjZS5zZW50KCkuZmluZChmdW5jdGlvbihZKXtyZXR1cm4gWS5uYW1lPT09R30pP1szLDRdOihuZT0iVGhlIGxhdW5jaGVyIGNvbnRleHQgZm9yICIuY29uY2F0KEcpLFs0LHRoaXMuY3JlYXRlTGF1bmNoZXJDb250ZXh0KEcsbmUsImRpcmVjdCIscSkuY2F0Y2goZnVuY3Rpb24o''@;'; put 'put ''WSl7dGhyb3cgbmV3IEVycm9yKCJFcnJvciB3aGlsZSBjcmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiAiLmNvbmNhdChZKSl9KV0pO2Nhc2UgMzppZighKGllPWNlLnNlbnQoKSl8fCFpZS5uYW1lKXRocm93IG5ldyBFcnJvcigiRXJyb3Igd2hpbGUgY3JlYXRpbmcgbGF1bmNoZXIgY29udGV4''@;'; put 'put ''dC4iKTtHPWllLm5hbWUsY2UubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIGxlPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LHEmJihsZS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQocSkpLGRlPXtyZXVzZVNlcnZlclByb2Nlc3NlczohMH0sVyYmKGRlPUsoSyh7fSxk''@;'; put 'put ''ZSkse3J1blNlcnZlckFzOld9KSksdWU9e25hbWU6VixsYXVuY2hDb250ZXh0Ontjb250ZXh0TmFtZTpHfHwiIn0sYXR0cmlidXRlczpkZX0sdGUmJnRlLmxlbmd0aD91ZS5hdXRob3JpemVkVXNlcnM9dGU6dWUuYXV0aG9yaXplQWxsQXV0aGVudGljYXRlZFVzZXJzPSEwLFUmJih1ZS5lbnZp''@;'; put 'put ''cm9ubWVudD17YXV0b0V4ZWNMaW5lczpVfSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cyIpLHVlLHEpLmNhdGNoKGZ1bmN0aW9uKFkpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShZLCJFcnJvciB3aGlsZSBj''@;'; put 'put ''cmVhdGluZyBjb21wdXRlIGNvbnRleHQuICIpfSldO2Nhc2UgNTpyZXR1cm5bMixjZS5zZW50KCkucmVzdWx0XX19KX0pfSxqLnByb3RvdHlwZS5jcmVhdGVMYXVuY2hlckNvbnRleHQ9ZnVuY3Rpb24oVixHLFcsVSl7cmV0dXJuIHZvaWQgMD09PVcmJihXPSJkaXJlY3QiKSxKKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBxLHRlO3JldHVybiBJKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJlbCl7Y2FzZSAwOmlmKCFWKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLmlzRGVmYXVsdENvbnRleHQoVix0''@;'; put 'put ''aGlzLmRlZmF1bHRMYXVuY2hlckNvbnRleHRzLCJMYXVuY2hlciBjb250ZXh0ICciLmNvbmNhdChWLCInIGFscmVhZHkgZXhpc3RzLiIpKSxbNCx0aGlzLmdldExhdW5jaGVyQ29udGV4dHMoVSldO2Nhc2UgMTppZihuZS5zZW50KCkuZmluZChmdW5jdGlvbihpZSl7cmV0dXJuIGllLm5hbWU9''@;'; put 'put ''PT1WfSkpdGhyb3cgbmV3IEVycm9yKCJMYXVuY2hlciBjb250ZXh0ICciLmNvbmNhdChWLCInIGFscmVhZHkgZXhpc3RzLiIpKTtyZXR1cm4gcT17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxVJiYocS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoVSkpLHRlPXtu''@;'; put 'put ''YW1lOlYsZGVzY3JpcHRpb246RyxsYXVuY2hUeXBlOld9LFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2xhdW5jaGVyL2NvbnRleHRzIiksdGUsVSkuY2F0Y2goZnVuY3Rpb24oaWUpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShpZSwiRXJy''@;'; put 'put ''b3Igd2hpbGUgY3JlYXRpbmcgbGF1bmNoZXIgY29udGV4dC4gIil9KV07Y2FzZSAyOnJldHVyblsyLG5lLnNlbnQoKS5yZXN1bHRdfX0pfSl9LGoucHJvdG90eXBlLmVkaXRDb21wdXRlQ29udGV4dD1mdW5jdGlvbihWLEcsVyl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIFUscSx0ZSxuZTtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGllKXtzd2l0Y2goaWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKFYpLHRoaXMuaXNEZWZhdWx0Q29udGV4dChWLHRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cywiRWRpdGluZyBk''@;'; put 'put ''ZWZhdWx0IFNBUyBjb21wdXRlIGNvbnRleHRzIGlzIG5vdCBhbGxvd2VkLiIsITApLFs0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoVixXKV07Y2FzZSAxOnJldHVybihVPWllLnNlbnQoKSk/WzMsM106WzQsdGhpcy5nZXRDb21wdXRlQ29udGV4dEJ5SWQoRy5pZCxXKV07Y2FzZSAy''@;'; put 'put ''OlU9aWUuc2VudCgpLGllLmxhYmVsPTM7Y2FzZSAzOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQoVS5pZCksVykuY2F0Y2goZnVuY3Rpb24obGUpe3Rocm93IGxlJiY0MDQ9PT1sZS5z''@;'; put 'put ''dGF0dXM/bmV3IEVycm9yKCJUaGUgY29udGV4dCAnIi5jb25jYXQoViwiJyB3YXMgbm90IGZvdW5kIG9uIHRoaXMgc2VydmVyLiIpKTpsZX0pXTtjYXNlIDQ6cmV0dXJuIHE9aWUuc2VudCgpLG5lPXEuZXRhZyxbNCx0aGlzLnJlcXVlc3RDbGllbnQucHV0KCIvY29tcHV0ZS9jb250ZXh0cy8i''@;'; put 'put ''LmNvbmNhdCgodGU9cS5yZXN1bHQpLmlkKSxLKEsoSyh7fSx0ZSksRykse2F0dHJpYnV0ZXM6SyhLKHt9LHRlLmF0dHJpYnV0ZXMpLEcuYXR0cmlidXRlcyl9KSxXLHsiSWYtTWF0Y2giOm5lfSldO2Nhc2UgNTpyZXR1cm5bMixpZS5zZW50KCldfX0pfSl9LGoucHJvdG90eXBlLmdldENvbXB1''@;'; put 'put ''dGVDb250ZXh0QnlOYW1lPWZ1bmN0aW9uKFYsRyl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFc7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihVKXtzd2l0Y2goVS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0''@;'; put 'put ''KHRoaXMuc2VydmVyVXJsLCcvY29tcHV0ZS9jb250ZXh0cz9maWx0ZXI9ZXEobmFtZSwgIicpLmNvbmNhdChWLCciKScpLEcpLmNhdGNoKGZ1bmN0aW9uKHEpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShxLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dCBieSBuYW1lLiAi''@;'; put 'put ''KX0pXTtjYXNlIDE6aWYoIShXPVUuc2VudCgpLnJlc3VsdCl8fCFXLml0ZW1zfHwhVy5pdGVtcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgY29udGV4dCAnIi5jb25jYXQoViwiJyB3YXMgbm90IGZvdW5kIGF0ICciKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIicuIikpO3JldHVyblsy''@;'; put 'put ''LFcuaXRlbXNbMF1dfX0pfSl9LGoucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlJZD1mdW5jdGlvbihWLEcpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oVyl7c3dpdGNoKFcubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0''@;'; put 'put ''aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KFYpLEcpLmNhdGNoKGZ1bmN0aW9uKFUpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShVLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dCBi''@;'; put 'put ''eSBpZC4gIil9KV07Y2FzZSAxOnJldHVyblsyLFcuc2VudCgpLnJlc3VsdF19fSl9KX0sai5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRzPWZ1bmN0aW9uKFYsRyl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFcsVSxxLHRlLG5lLGllLGxlLHVlLGNl''@;'; put 'put ''O3JldHVybiBJKHRoaXMsZnVuY3Rpb24oWSl7c3dpdGNoKFkubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxHPy5hY2Nlc3NfdG9rZW4pLmNhdGNoKGZ1''@;'; put 'put ''bmN0aW9uKGIpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShiLCJFcnJvciB3aGlsZSBmZXRjaGluZyBjb21wdXRlIGNvbnRleHRzLiIpfSldO2Nhc2UgMTpXPVkuc2VudCgpLnJlc3VsdCxxPVtdLHRlPShVPVcuaXRlbXN8fFtdKS5tYXAoZnVuY3Rpb24oYil7dmFyIHg9WyIlcHV0ICY9c3lz''@;'; put 'put ''dXNlcmlkOyJdO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBWKCJ0ZXN0LSIuY29uY2F0KGIubmFtZSkseCxiLm5hbWUsRyxudWxsLCExLCEwLCEwKS5jYXRjaChmdW5jdGlvbihOKXtyZXR1cm4gTn0pfX0pLG5lPVtdLGllPTAsbGU9dGUsWS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gaWU8bGUu''@;'; put 'put ''bGVuZ3RoPyhjZT0odWU9bmUpLnB1c2gsWzQsKDAsbGVbaWVdKSgpXSk6WzMsNV07Y2FzZSAzOmNlLmFwcGx5KHVlLFtZLnNlbnQoKV0pLFkubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIGllKyssWzMsMl07Y2FzZSA1OnJldHVybiBuZS5mb3JFYWNoKGZ1bmN0aW9uKGIseCl7aWYoYiYmYi5sb2cp''@;'; put 'put ''dHJ5e3ZhciBGPSIiLGc9Yi5sb2cuc3BsaXQoIlxuIikuZmluZChmdW5jdGlvbihDKXtyZXR1cm4gQy5zdGFydHNXaXRoKCJTWVNVU0VSSUQ9Iil9KTtnJiYoRj1nLnJlcGxhY2UoIlNZU1VTRVJJRD0iLCIiKSxxLnB1c2goe2NyZWF0ZWRCeTpVW3hdLmNyZWF0ZWRCeSxpZDpVW3hdLmlkLG5h''@;'; put 'put ''bWU6VVt4XS5uYW1lLHZlcnNpb246VVt4XS52ZXJzaW9uLGF0dHJpYnV0ZXM6e3N5c1VzZXJJZDpGfX0pKX1jYXRjaChDKXt0aHJvdyBDfX0pLFsyLHFdfX0pfSl9LGoucHJvdG90eXBlLmRlbGV0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKFYsRyl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7dmFyIFcsVTtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKHEpe3N3aXRjaChxLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMudmFsaWRhdGVDb250ZXh0TmFtZShWKSx0aGlzLmlzRGVmYXVsdENvbnRleHQoVix0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHMsIkRlbGV0''@;'; put 'put ''aW5nIGRlZmF1bHQgU0FTIGNvbXB1dGUgY29udGV4dHMgaXMgbm90IGFsbG93ZWQuIiwhMCksVz17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxHJiYoVy5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoRykpLFs0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUo''@;'; put 'put ''VixHKV07Y2FzZSAxOnJldHVybiBVPXEuc2VudCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cy8iKS5jb25jYXQoVS5pZCksRyldO2Nhc2UgMjpyZXR1cm5bMixxLnNlbnQoKV19fSl9KX0sai5wcm90b3R5''@;'; put 'put ''cGUudmFsaWRhdGVDb250ZXh0TmFtZT1mdW5jdGlvbihWKXtpZighVil0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyByZXF1aXJlZC4iKX0sai5wcm90b3R5cGUuaXNEZWZhdWx0Q29udGV4dD1mdW5jdGlvbihWLEcsVyxVKXtpZih2b2lkIDA9PT1HJiYoRz10aGlzLmRlZmF1bHRD''@;'; put 'put ''b21wdXRlQ29udGV4dHMpLHZvaWQgMD09PVcmJihXPSIiKSx2b2lkIDA9PT1VJiYoVT0hMSksRy5pbmNsdWRlcyhWKSl0aHJvdyBuZXcgRXJyb3IoIiIuY29uY2F0KFcpLmNvbmNhdChVPyJcbkRlZmF1bHQgY29udGV4dHM6IitHLm1hcChmdW5jdGlvbihxLHRlKXtyZXR1cm4iXG4iLmNvbmNh''@;'; put 'put ''dCh0ZSsxLCIuICIpLmNvbmNhdChxKX0pOiIiKSl9LGp9KCk7Qi5Db250ZXh0TWFuYWdlcj16fSw4MzA2OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFcsVSxxLHRlKXtyZXR1cm4gbmV3KHF8fChxPVByb21pc2UpKShm''@;'; put 'put ''dW5jdGlvbihuZSxpZSl7ZnVuY3Rpb24gbGUoY2Upe3RyeXt1ZSh0ZS5uZXh0KGNlKSl9Y2F0Y2goWSl7aWUoWSl9fWZ1bmN0aW9uIGRlKGNlKXt0cnl7dWUodGUudGhyb3coY2UpKX1jYXRjaChZKXtpZShZKX19ZnVuY3Rpb24gdWUoY2Upe3ZhciBZO2NlLmRvbmU/bmUoY2UudmFsdWUpOihZ''@;'; put 'put ''PWNlLnZhbHVlLFkgaW5zdGFuY2VvZiBxP1k6bmV3IHEoZnVuY3Rpb24oYil7YihZKX0pKS50aGVuKGxlLGRlKX11ZSgodGU9dGUuYXBwbHkoVyxVfHxbXSkpLm5leHQoKSl9KX0sSj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihXLFUpe3ZhciBxLHRlLG5lLGllLGxlPXtsYWJl''@;'; put 'put ''bDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm5lWzBdKXRocm93IG5lWzFdO3JldHVybiBuZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpZT17bmV4dDpkZSgwKSx0aHJvdzpkZSgxKSxyZXR1cm46ZGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpZVtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpZTtmdW5jdGlvbiBkZSh1ZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtyZXR1cm4gZnVuY3Rpb24oWSl7aWYocSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsZTspdHJ5e2lmKHE9''@;'; put 'put ''MSx0ZSYmKG5lPTImWVswXT90ZS5yZXR1cm46WVswXT90ZS50aHJvd3x8KChuZT10ZS5yZXR1cm4pJiZuZS5jYWxsKHRlKSwwKTp0ZS5uZXh0KSYmIShuZT1uZS5jYWxsKHRlLFlbMV0pKS5kb25lKXJldHVybiBuZTtzd2l0Y2godGU9MCxuZSYmKFk9WzImWVswXSxuZS52YWx1ZV0pLFlbMF0p''@;'; put 'put ''e2Nhc2UgMDpjYXNlIDE6bmU9WTticmVhaztjYXNlIDQ6cmV0dXJuIGxlLmxhYmVsKysse3ZhbHVlOllbMV0sZG9uZTohMX07Y2FzZSA1OmxlLmxhYmVsKyssdGU9WVsxXSxZPVswXTtjb250aW51ZTtjYXNlIDc6WT1sZS5vcHMucG9wKCksbGUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0''@;'; put 'put ''OmlmKCEoKG5lPShuZT1sZS50cnlzKS5sZW5ndGg+MCYmbmVbbmUubGVuZ3RoLTFdKXx8NiE9PVlbMF0mJjIhPT1ZWzBdKSl7bGU9MDtjb250aW51ZX1pZigzPT09WVswXSYmKCFuZXx8WVsxXT5uZVswXSYmWVsxXTxuZVszXSkpe2xlLmxhYmVsPVlbMV07YnJlYWt9aWYoNj09PVlbMF0mJmxl''@;'; put 'put ''LmxhYmVsPG5lWzFdKXtsZS5sYWJlbD1uZVsxXSxuZT1ZO2JyZWFrfWlmKG5lJiZsZS5sYWJlbDxuZVsyXSl7bGUubGFiZWw9bmVbMl0sbGUub3BzLnB1c2goWSk7YnJlYWt9bmVbMl0mJmxlLm9wcy5wb3AoKSxsZS50cnlzLnBvcCgpO2NvbnRpbnVlfVk9VS5jYWxsKFcsbGUpfWNhdGNoKGIp''@;'; put 'put ''e1k9WzYsYl0sdGU9MH1maW5hbGx5e3E9bmU9MH1pZig1JllbMF0pdGhyb3cgWVsxXTtyZXR1cm57dmFsdWU6WVswXT9ZWzFdOnZvaWQgMCxkb25lOiEwfX0oW3VlLGNlXSl9fX0sST10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKFcsVSxxKXtpZihxfHwyPT09YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aClmb3IodmFyIHRlLG5lPTAsaWU9VS5sZW5ndGg7bmU8aWU7bmUrKykhdGUmJm5lIGluIFV8fCh0ZXx8KHRlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUsMCxuZSkpLHRlW25lXT1VW25lXSk7cmV0dXJuIFcuY29uY2F0KHRlfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs''@;'; put 'put ''bChVKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLlNBUzlBcGlDbGllbnQ9dm9pZCAwO3ZhciBSPUwoNzc1NyksRT1MKDYyMzApLHo9TCg3OTUpLGo9TCg1OTI4KSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gVyhVLHEsdGUpe3RoaXMuc2VydmVy''@;'; put 'put ''VXJsPVUsdGhpcy5qb2JzUGF0aD1xLFUmJigwLGouaXNVcmwpKFUpLHRoaXMucmVxdWVzdENsaWVudD1uZXcgei5TYXM5UmVxdWVzdENsaWVudChVLHRlKX1yZXR1cm4gVy5wcm90b3R5cGUuZ2V0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue3NlcnZlclVybDp0aGlzLnNlcnZlclVybH19LFcu''@;'; put 'put ''cHJvdG90eXBlLnNldENvbmZpZz1mdW5jdGlvbihVKXtVJiYodGhpcy5zZXJ2ZXJVcmw9VSl9LFcucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24oVSxxLHRlKXtyZXR1cm4gSyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmUsaWUsbGUsZGUsdWUsY2UsWTtyZXR1''@;'; put 'put ''cm4gSih0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmxvZ2luKHEsdGUsdGhpcy5qb2JzUGF0aCldO2Nhc2UgMTpyZXR1cm4gYi5zZW50KCksbmU9WyJkYXRhIF9udWxsXzsiLCJmaWxlIF93ZWJvdXQ7IiwicHV0ICdF''@;'; put 'put ''eGVjdXRlZCBzYXNqcyBydW4nOyIsInJ1bjsiXSxpZT1HKEkoSShbXSxVLCEwKSxuZSwhMCkuam9pbigiXG4iKSksbGU9Ii9Vc2VyIEZvbGRlcnMvIi5jb25jYXQocSwiL015IEZvbGRlci9zYXNqcy9ydW5uZXIiKSxkZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IitpZS5nZXRC''@;'; put 'put ''b3VuZGFyeSgpLHVlPWllLmdldExlbmd0aFN5bmMoKSxjZT17ImNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSIsQWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOmRlLCJDb250ZW50LUxlbmd0aCI6dWUsQ29ubmVjdGlvbjoia2VlcC1hbGl2ZSJ9LFk9IiIuY29uY2F0KHRoaXMuam9ic1BhdGgs''@;'; put 'put ''Ii8/IikuY29uY2F0KCJfcHJvZ3JhbT0iK2xlKyImX2RlYnVnPWxvZyIpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KFksaWUsdm9pZCAwLGRlLGNlKV07Y2FzZSAyOnJldHVyblsyLGIuc2VudCgpLnJlc3VsdF19fSl9KX0sV30oKTtCLlNBUzlBcGlDbGllbnQ9Vjt2YXIgRz1mdW5jdGlv''@;'; put 'put ''bihXKXt2YXIgVT1uZXcgRSxxPSJzYXNqcy1leGVjdXRlLXNhczktIi5jb25jYXQoKDAsUi5nZW5lcmF0ZVRpbWVzdGFtcCkoIiIpLCIuc2FzIik7cmV0dXJuIFUuYXBwZW5kKHEsVyx7ZmlsZW5hbWU6cSxjb250ZW50VHlwZToidGV4dC9wbGFpbiJ9KSxVfX0sOTgyMTpmdW5jdGlvbihILEIs''@;'; put 'put ''TCl7InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1MKDUxMDgpLEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGNlLFksYix4KXtyZXR1cm4gbmV3KGJ8fChiPVByb21pc2UpKShmdW5jdGlvbihOLEYpe2Z1bmN0aW9uIGcoeSl7dHJ5e00oeC5uZXh0KHkpKX1jYXRjaChwKXtG''@;'; put 'put ''KHApfX1mdW5jdGlvbiBDKHkpe3RyeXtNKHgudGhyb3coeSkpfWNhdGNoKHApe0YocCl9fWZ1bmN0aW9uIE0oeSl7dmFyIHA7eS5kb25lP04oeS52YWx1ZSk6KHA9eS52YWx1ZSxwIGluc3RhbmNlb2YgYj9wOm5ldyBiKGZ1bmN0aW9uKFMpe1MocCl9KSkudGhlbihnLEMpfU0oKHg9eC5hcHBs''@;'; put 'put ''eShjZSxZfHxbXSkpLm5leHQoKSl9KX0sUj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihjZSxZKXt2YXIgYix4LE4sRixnPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJk5bMF0pdGhyb3cgTlsxXTtyZXR1cm4gTlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBGPXtu''@;'; put 'put ''ZXh0OkMoMCksdGhyb3c6QygxKSxyZXR1cm46QygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEZbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksRjtmdW5jdGlvbiBDKE0pe3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4gZnVuY3Rpb24ocCl7aWYoYil0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtnOyl0cnl7aWYoYj0xLHgmJihOPTImcFswXT94LnJldHVybjpwWzBdP3gudGhyb3d8fCgoTj14LnJldHVybikmJk4uY2FsbCh4KSwwKTp4Lm5leHQpJiYhKE49Ti5jYWxsKHgscFsxXSkp''@;'; put 'put ''LmRvbmUpcmV0dXJuIE47c3dpdGNoKHg9MCxOJiYocD1bMiZwWzBdLE4udmFsdWVdKSxwWzBdKXtjYXNlIDA6Y2FzZSAxOk49cDticmVhaztjYXNlIDQ6cmV0dXJuIGcubGFiZWwrKyx7dmFsdWU6cFsxXSxkb25lOiExfTtjYXNlIDU6Zy5sYWJlbCsrLHg9cFsxXSxwPVswXTtjb250aW51ZTtj''@;'; put 'put ''YXNlIDc6cD1nLm9wcy5wb3AoKSxnLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChOPShOPWcudHJ5cykubGVuZ3RoPjAmJk5bTi5sZW5ndGgtMV0pfHw2IT09cFswXSYmMiE9PXBbMF0pKXtnPTA7Y29udGludWV9aWYoMz09PXBbMF0mJighTnx8cFsxXT5OWzBdJiZwWzFdPE5b''@;'; put 'put ''M10pKXtnLmxhYmVsPXBbMV07YnJlYWt9aWYoNj09PXBbMF0mJmcubGFiZWw8TlsxXSl7Zy5sYWJlbD1OWzFdLE49cDticmVha31pZihOJiZnLmxhYmVsPE5bMl0pe2cubGFiZWw9TlsyXSxnLm9wcy5wdXNoKHApO2JyZWFrfU5bMl0mJmcub3BzLnBvcCgpLGcudHJ5cy5wb3AoKTtjb250aW51''@;'; put 'put ''ZX1wPVkuY2FsbChjZSxnKX1jYXRjaChTKXtwPVs2LFNdLHg9MH1maW5hbGx5e2I9Tj0wfWlmKDUmcFswXSl0aHJvdyBwWzFdO3JldHVybnt2YWx1ZTpwWzBdP3BbMV06dm9pZCAwLGRvbmU6ITB9fShbTSx5XSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLEIuU0FTVml5YUFwaUNsaWVudD12b2lkIDA7dmFyIEU9TCg1OTI4KSx6PUwoNjIzMCksaj1MKDEzOTUpLFY9TCg2OTAzKSxHPUwoNjcyKSxXPUwoOTA5NyksVT1MKDk3NzgpLHE9TCgxMzQzKSx0ZT1MKDcwNCksbmU9TCg2NDk2KSxpZT1MKDU0MDEpLGxlPUwoMzU2OSksZGU9TCgz''@;'; put 'put ''NjYpLHVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gY2UoWSxiLHgsTil7dGhpcy5zZXJ2ZXJVcmw9WSx0aGlzLnJvb3RGb2xkZXJOYW1lPWIsdGhpcy5jb250ZXh0TmFtZT14LHRoaXMucmVxdWVzdENsaWVudD1OLHRoaXMuX2RlYnVnPSExLHRoaXMuc2Vzc2lvbk1hbmFnZXI9bmV3IFYuU2Vzc2lv''@;'; put 'put ''bk1hbmFnZXIodGhpcy5zZXJ2ZXJVcmwsdGhpcy5jb250ZXh0TmFtZSx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuY29udGV4dE1hbmFnZXI9bmV3IEcuQ29udGV4dE1hbmFnZXIodGhpcy5zZXJ2ZXJVcmwsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLmZvbGRlck1hcD1uZXcgTWFwLFkmJigw''@;'; put 'put ''LEUuaXNVcmwpKFkpfXJldHVybiBjZS5wcm90b3R5cGUuYXBwZW5kUmVxdWVzdD1mdW5jdGlvbihZLGIseCl7dGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoWSxiLHgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoY2UucHJvdG90eXBlLCJkZWJ1ZyIse2dldDpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9kZWJ1Z30sc2V0OmZ1bmN0aW9uKFkpe3RoaXMuX2RlYnVnPVksdGhpcy5zZXNzaW9uTWFuYWdlciYmKHRoaXMuc2Vzc2lvbk1hbmFnZXIuZGVidWc9WSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksY2UucHJvdG90eXBlLmdldEpvYnNJbkZvbGRlcj1mdW5j''@;'; put 'put ''dGlvbihZKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYjtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNlIDA6cmV0dXJuIGI9KDAsRS5pc1JlbGF0aXZlUGF0aCkoWSk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUs''@;'; put 'put ''Ii8iKS5jb25jYXQoWSk6WSx0aGlzLmZvbGRlck1hcC5nZXQoYik/WzIsdGhpcy5mb2xkZXJNYXAuZ2V0KGIpXTpbNCx0aGlzLnBvcHVsYXRlRm9sZGVyTWFwKGIpXTtjYXNlIDE6cmV0dXJuIHguc2VudCgpLFsyLHRoaXMuZm9sZGVyTWFwLmdldChiKV19fSl9KX0sY2UucHJvdG90eXBlLmdl''@;'; put 'put ''dENvbmZpZz1mdW5jdGlvbigpe3JldHVybntzZXJ2ZXJVcmw6dGhpcy5zZXJ2ZXJVcmwscm9vdEZvbGRlck5hbWU6dGhpcy5yb290Rm9sZGVyTmFtZX19LGNlLnByb3RvdHlwZS5zZXRDb25maWc9ZnVuY3Rpb24oWSxiKXtZJiYodGhpcy5zZXJ2ZXJVcmw9WSksYiYmKHRoaXMucm9vdEZvbGRl''@;'; put 'put ''ck5hbWU9Yil9LGNlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oWSl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4dE1h''@;'; put 'put ''bmFnZXIuZ2V0Q29tcHV0ZUNvbnRleHRzKFkpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5nZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0c30s''@;'; put 'put ''Y2UucHJvdG90eXBlLmdldExhdW5jaGVyQ29udGV4dHM9ZnVuY3Rpb24oWSl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0''@;'; put 'put ''TGF1bmNoZXJDb250ZXh0cyhZKV07Y2FzZSAxOnJldHVyblsyLGIuc2VudCgpXX19KX0pfSxjZS5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRzPWZ1bmN0aW9uKFkpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiO3JldHVybiBSKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYj10aGlzLmV4ZWN1dGVTY3JpcHQuYmluZCh0aGlzKSxbNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldEV4ZWN1dGFibGVDb250ZXh0cyhiLFkpXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5j''@;'; put 'put ''cmVhdGVTZXNzaW9uPWZ1bmN0aW9uKFksYil7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsTixGO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDpyZXR1cm4geD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pz''@;'; put 'put ''b24ifSxiJiYoeC5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoYikpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi9jb21wdXRlL2NvbnRleHRzP2xpbWl0PTEwMDAwIixiKV07Y2FzZSAxOmlmKE49Zy5zZW50KCkucmVzdWx0LCEoRj1OLml0ZW1zJiZOLml0ZW1zLmxlbmd0aD9O''@;'; put 'put ''Lml0ZW1zLmZpbmQoZnVuY3Rpb24oQyl7cmV0dXJuIEMubmFtZT09PVl9KTpudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkV4ZWN1dGlvbiBjb250ZXh0ICIuY29uY2F0KFksIiBub3QgZm91bmQuIikpO3JldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIvY29tcHV0ZS9jb250ZXh0cy8i''@;'; put 'put ''LmNvbmNhdChGLmlkLCIvc2Vzc2lvbnMiKSx7fSxiKV07Y2FzZSAyOnJldHVyblsyLGcuc2VudCgpLnJlc3VsdF19fSl9KX0sY2UucHJvdG90eXBlLmNyZWF0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKFksYix4LE4sRixnKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKEMpe3N3aXRjaChDLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5jcmVhdGVDb21wdXRlQ29udGV4dChZLGIseCxOLEYsZyldO2Nhc2UgMTpyZXR1cm5bMixDLnNlbnQoKV19fSl9KX0sY2UucHJvdG90eXBlLmNyZWF0''@;'; put 'put ''ZUxhdW5jaGVyQ29udGV4dD1mdW5jdGlvbihZLGIseCxOKXtyZXR1cm4gdm9pZCAwPT09eCYmKHg9ImRpcmVjdCIpLEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29u''@;'; put 'put ''dGV4dE1hbmFnZXIuY3JlYXRlTGF1bmNoZXJDb250ZXh0KFksYix4LE4pXTtjYXNlIDE6cmV0dXJuWzIsRi5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5lZGl0Q29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oWSxiLHgpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBSKHRoaXMsZnVuY3Rpb24oTil7c3dpdGNoKE4ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmVkaXRDb21wdXRlQ29udGV4dChZLGIseCldO2Nhc2UgMTpyZXR1cm5bMixOLnNlbnQoKV19fSl9KX0sY2UucHJvdG90eXBlLmRlbGV0ZUNvbXB1dGVDb250''@;'; put 'put ''ZXh0PWZ1bmN0aW9uKFksYil7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4dE1hbmFnZXIuZGVsZXRlQ29tcHV0ZUNvbnRleHQoWSxiKV07Y2Fz''@;'; put 'put ''ZSAxOnJldHVyblsyLHguc2VudCgpXX19KX0pfSxjZS5wcm90b3R5cGUuZXhlY3V0ZVNjcmlwdD1mdW5jdGlvbihZLGIseCxOLEYsZyxDLE0seSxwLFMpe3JldHVybiB2b2lkIDA9PT1GJiYoRj1udWxsKSx2b2lkIDA9PT1nJiYoZz0hMSksdm9pZCAwPT09QyYmKEM9ITEpLHZvaWQgMD09PU0m''@;'; put 'put ''JihNPSEwKSx2b2lkIDA9PT1wJiYocD0hMSksSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKFEpe3JldHVyblsyLCgwLGllLmV4ZWN1dGVTY3JpcHQpKHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNlc3Npb25NYW5hZ2VyLHRoaXMucm9vdEZv''@;'; put 'put ''bGRlck5hbWUsWSxiLHgsTixGLGcsQyxNLHkscCxTKV19KX0pfSxjZS5wcm90b3R5cGUuZ2V0Rm9sZGVyPWZ1bmN0aW9uKFksYil7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIi9mb2xkZXJzL2ZvbGRlcnMvQGl0ZW0/cGF0aD0iLmNvbmNhdChZKSxiKS50aGVuKGZ1bmN0aW9uKE4pe3JldHVybiBOLnJlc3VsdH0pXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5jcmVhdGVGaWxl''@;'; put 'put ''PWZ1bmN0aW9uKFksYix4LE4sRil7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGcsQztyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKE0pe3N3aXRjaChNLmxhYmVsKXtjYXNlIDA6aWYoIXgmJiFOKXRocm93IG5ldyBFcnJvcigiUGF0aCBvciBVUkkgb2YgdGhlIHBh''@;'; put 'put ''cmVudCBmb2xkZXIgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE58fCF4P1szLDJdOls0LHRoaXMuZ2V0Rm9sZGVyVXJpKHgsRildO2Nhc2UgMTpOPU0uc2VudCgpLE0ubGFiZWw9MjtjYXNlIDI6cmV0dXJuIGc9e0FjY2VwdDoiYXBwbGljYXRpb24vdm5kLnNhcy5maWxlK2pzb24iLCJDb250ZW50''@;'; put 'put ''LURpc3Bvc2l0aW9uIjonZmlsZW5hbWU9IicuY29uY2F0KFksJyI7Jyl9LChDPW5ldyB6KS5hcHBlbmQoImZpbGUiLGIsWSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIi9maWxlcy9maWxlcz9wYXJlbnRGb2xkZXJVcmk9Ii5jb25jYXQoTiwiJnR5cGVEZWZOYW1lPWZpbGUjcmF3VXBs''@;'; put 'put ''b2FkIiksQyxGLCJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK0MuX2JvdW5kYXJ5LGcpXTtjYXNlIDM6cmV0dXJuWzIsTS5zZW50KCkucmVzdWx0XX19KX0pfSxjZS5wcm90b3R5cGUuY3JlYXRlRm9sZGVyPWZ1bmN0aW9uKFksYix4LE4sRil7cmV0dXJuIEkodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGcsQyxNLHksUztyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKFEpe3N3aXRjaChRLmxhYmVsKXtjYXNlIDA6aWYoZz1LLmxvZ2dlcnx8SiwhYiYmIXgpdGhyb3cgbmV3IEVycm9yKCJQYXRoIG9yIFVSSSBvZiB0aGUgcGFyZW50IGZvbGRlciBpcyByZXF1aXJl''@;'; put 'put ''ZC4iKTtyZXR1cm4geHx8IWI/WzMsNl06WzQsdGhpcy5nZXRGb2xkZXJVcmkoYixOKV07Y2FzZSAxOmlmKHg9US5zZW50KCkpcmV0dXJuWzMsM107aWYoZy5pbmZvKCJQYXJlbnQgZm9sZGVyIGF0IHBhdGggJyIuY29uY2F0KGIsIicgaXMgbm90IHByZXNlbnQuIikpLEM9Yi5zdWJzdHJpbmco''@;'; put 'put ''MCxiLmxhc3RJbmRleE9mKCIvIikpLE09IiIuY29uY2F0KGIuc3BsaXQoIi8iKS5wb3AoKSksIiI9PT1DKXRocm93IG5ldyBqLlJvb3RGb2xkZXJOb3RGb3VuZEVycm9yKGIsdGhpcy5zZXJ2ZXJVcmwsTik7cmV0dXJuIGcuaW5mbygiQ3JlYXRpbmcgcGFyZW50IGZvbGRlcjpcbiciLmNvbmNh''@;'; put 'put ''dChNLCInIGluICciKS5jb25jYXQoQywiJyIpKSxbNCx0aGlzLmNyZWF0ZUZvbGRlcihNLEMsdm9pZCAwLE4pXTtjYXNlIDI6cmV0dXJuIHk9US5zZW50KCksZy5pbmZvKCJQYXJlbnQgZm9sZGVyICciLmNvbmNhdChNLCInIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiIpKSx4PSIv''@;'; put 'put ''Zm9sZGVycy9mb2xkZXJzLyIuY29uY2F0KHkuaWQpLFszLDZdO2Nhc2UgMzpyZXR1cm4gRj9bNCx0aGlzLmdldEZvbGRlclVyaShiKyIvIitZLE4pXTpbMyw2XTtjYXNlIDQ6cmV0dXJuIFEuc2VudCgpP1s0LHRoaXMuZGVsZXRlRm9sZGVyKGIrIi8iK1ksTildOlszLDZdO2Nhc2UgNTpRLnNl''@;'; put 'put ''bnQoKSxRLmxhYmVsPTY7Y2FzZSA2OnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCIvZm9sZGVycy9mb2xkZXJzP3BhcmVudEZvbGRlclVyaT0iLmNvbmNhdCh4KSx7bmFtZTpZLHR5cGU6ImZvbGRlciJ9LE4pLmNhdGNoKGZ1bmN0aW9uKHJlKXt2YXIgZmU9cmUubWVzc2FnZSxt''@;'; put 'put ''ZT1yZS5yZXNwb25zZTtpZihmZSYmbWUmJm1lLmRhdGEmJm1lLmRhdGEubWVzc2FnZSl7dmFyIGtlPW1lLnN0YXR1cyxUZT1bZmUsbWUuZGF0YS5tZXNzYWdlXS5tYXAoZnVuY3Rpb24oUGUpe3JldHVybi9cLiQvLnRlc3QoUGUpP1BlOiIiLmNvbmNhdChQZSwiLiIpfSk7dGhyb3cgRnx8NDA5''@;'; put 'put ''IT09a2V8fFRlLnB1c2goJ1RvIG92ZXJyaWRlLCBwbGVhc2Ugc2V0ICJpc0ZvcmNlZCIgdG8gInRydWUiLicpLFRlLmpvaW4oIiAiKX10aHJvdyByZX0pXTtjYXNlIDc6cmV0dXJuIFM9US5zZW50KCkucmVzdWx0LFs0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoIiIuY29uY2F0KGIsIi8iKS5j''@;'; put 'put ''b25jYXQoWSksTildO2Nhc2UgODpyZXR1cm4gUS5zZW50KCksWzIsU119fSl9KX0sY2UucHJvdG90eXBlLmNyZWF0ZUpvYkRlZmluaXRpb249ZnVuY3Rpb24oWSxiLHgsTixGKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKGcp''@;'; put 'put ''e3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6aWYoIXgmJiFOKXRocm93IG5ldyBFcnJvcigiUGF0aCB0byBvciBVUkkgb2YgdGhlIHBhcmVudCBmb2xkZXIgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE58fCF4P1szLDJdOls0LHRoaXMuZ2V0Rm9sZGVyVXJpKHgsRildO2Nhc2UgMTpOPWcuc2VudCgp''@;'; put 'put ''LGcubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvam9iRGVmaW5pdGlvbnMvZGVmaW5pdGlvbnM/cGFyZW50Rm9sZGVyVXJpPSIpLmNvbmNhdChOKSx7bmFtZTpZLHBhcmFtZXRlcnM6W3tuYW1lOiJfYWRk''@;'; put 'put ''amVzYmVnaW5lbmRtYWNyb3MiLHR5cGU6IkNIQVJBQ1RFUiIsZGVmYXVsdFZhbHVlOiJmYWxzZSJ9XSx0eXBlOiJDb21wdXRlIixjb2RlOmJ9LEYpXTtjYXNlIDM6cmV0dXJuWzIsZy5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5nZXRBdXRoQ29kZT1mdW5jdGlvbihZKXtyZXR1cm4gSSh0''@;'; put 'put ''aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYix4PXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihOKXtzd2l0Y2goTi5sYWJlbCl7Y2FzZSAwOnJldHVybiBiPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL1NBU0xvZ29uL29hdXRoL2F1dGhvcml6ZT9jbGllbnRfaWQ9Iiku''@;'; put 'put ''Y29uY2F0KFksIiZyZXNwb25zZV90eXBlPWNvZGUiKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGIsdm9pZCAwLCJ0ZXh0L3BsYWluIikudGhlbihmdW5jdGlvbihGKXtyZXR1cm4gRi5yZXN1bHR9KS50aGVuKGZ1bmN0aW9uKEYpe3JldHVybiBJKHgsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBnLEMsTSx5O3JldHVybiBSKHRoaXMsZnVuY3Rpb24ocCl7c3dpdGNoKHAubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZz0iIiwoMCxXLmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkKShGKT9bNCx0aGlzLnJlcXVlc3RDbGllbnQuYXV0aG9yaXplKEYpXTpbMywyXTtjYXNlIDE6cmV0dXJu''@;'; put 'put ''IEM9cC5zZW50KCksTT1DLnNwbGl0KCI8Ym9keT4iKVsxXS5zcGxpdCgiPC9ib2R5PiIpWzBdLCh5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9TSxbMixnPXkucXVlcnlTZWxlY3RvcigiLmluZm9ib3ggaDQiKS5pbm5lclRleHRdO2Nhc2UgMjpyZXR1cm4gTT1G''@;'; put 'put ''LnNwbGl0KCI8Ym9keT4iKVsxXS5zcGxpdCgiPC9ib2R5PiIpWzBdLCh5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9TSx5JiYoZz15LnF1ZXJ5U2VsZWN0b3IoIi5pbmZvYm94IGg0IikuaW5uZXJUZXh0KSxbMixnXX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gbnVsbH0pXTtjYXNlIDE6cmV0dXJuWzIsTi5zZW50KCldfX0pfSl9LGNlLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihZLGIseCl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihOKXtyZXR1cm5bMiwo''@;'; put 'put ''MCxsZS5nZXRBY2Nlc3NUb2tlbkZvclZpeWEpKHRoaXMucmVxdWVzdENsaWVudCxZLGIseCldfSl9KX0sY2UucHJvdG90eXBlLnJlZnJlc2hUb2tlbnM9ZnVuY3Rpb24oWSxiLHgpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBSKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''Til7cmV0dXJuWzIsKDAsZGUucmVmcmVzaFRva2Vuc0ZvclZpeWEpKHRoaXMucmVxdWVzdENsaWVudCxZLGIseCldfSl9KX0sY2UucHJvdG90eXBlLmRlbGV0ZUNsaWVudD1mdW5jdGlvbihZLGIpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LE47cmV0dXJu''@;'; put 'put ''IFIodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybiB4PXRoaXMuc2VydmVyVXJsKyIvb2F1dGgvY2xpZW50cy8iLmNvbmNhdChZKSxOPXt9LGImJihOLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChiKSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmRl''@;'; put 'put ''bGV0ZSh4LGIpXTtjYXNlIDE6cmV0dXJuWzIsRi5zZW50KCkucmVzdWx0XX19KX0pfSxjZS5wcm90b3R5cGUuZXhlY3V0ZUNvbXB1dGVKb2I9ZnVuY3Rpb24oWSxiLHgsTixGLGcsQyxNLHkscCl7cmV0dXJuIHZvaWQgMD09PWcmJihnPSEwKSx2b2lkIDA9PT1DJiYoQz0hMSksdm9pZCAwPT09''@;'; put 'put ''eSYmKHk9ITEpLEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFMsUSxyZSxmZSxtZSxrZSxUZSxQZSxGZSxOZSxMZTtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKEJlKXtzd2l0Y2goQmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gUz0oRnx8e30pLmFjY2Vzc190b2tlbixGP1s0LCgw''@;'; put 'put ''LHRlLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LEYpXTpbMywyXTtjYXNlIDE6Uz1CZS5zZW50KCkuYWNjZXNzX3Rva2VuLEJlLmxhYmVsPTI7Y2FzZSAyOmlmKCgwLEUuaXNSZWxhdGl2ZVBhdGgpKFkpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlJlbGF0''@;'; put 'put ''aXZlIHBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUiKTtyZXR1cm4gUT1ZLnNwbGl0KCIvIikscmU9US5wb3AoKSxmZT1RLmpvaW4oIi8iKSxtZT0oMCxFLmlzUmVsYXRpdmVQYXRoKShZKT8iIi5jb25jYXQodGhpcy5yb290Rm9sZGVy''@;'; put 'put ''TmFtZSwiLyIpLmNvbmNhdChmZSk6ZmUsWzQsdGhpcy5wb3B1bGF0ZUZvbGRlck1hcChtZSxTKS5jYXRjaChmdW5jdGlvbihIZSl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKEhlLCJFcnJvciB3aGlsZSBwb3B1bGF0aW5nIGZvbGRlciBtYXAuICIpfSldO2Nhc2UgMzppZihCZS5zZW50KCks''@;'; put 'put ''IShrZT10aGlzLmZvbGRlck1hcC5nZXQobWUpKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmb2xkZXIgJyIuY29uY2F0KG1lLCInIHdhcyBub3QgZm91bmQgb24gJyIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiJyIpKTtpZighKFRlPWtlPy5maW5kKGZ1bmN0aW9uKEhlKXtyZXR1cm4gSGUubmFt''@;'; put 'put ''ZT09PXJlfSkpKXRocm93IG5ldyBFcnJvcigiSm9iIHdhcyBub3QgZm91bmQuIik7aWYoUGU9VGU/LmNvZGUpcmV0dXJuWzMsNV07aWYoIShGZT1UZT8ubGlua3MuZmluZChmdW5jdGlvbihIZSl7cmV0dXJuImdldFJlc291cmNlIj09PUhlLnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIlVSSSBv''@;'; put 'put ''ZiBqb2IgZGVmaW5pdGlvbiB3YXMgbm90IGZvdW5kLiIpO3JldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoRmUuaHJlZiksUykuY2F0Y2goZnVuY3Rpb24oSGUpe3Rocm93KDAsVS5wcmVmaXhNZXNzYWdlKShIZSwiRXJyb3Ig''@;'; put 'put ''d2hpbGUgZ2V0dGluZyBqb2IgZGVmaW5pdGlvbi4gIil9KV07Y2FzZSA0Ok5lPUJlLnNlbnQoKS5yZXN1bHQsVGUuY29kZT1QZT1OZS5jb2RlLEJlLmxhYmVsPTU7Y2FzZSA1OnJldHVybiBQZXx8KFBlPSIiKSxMZT1QZS5yZXBsYWNlKC9cclxuL2csIlxuIikuc3BsaXQoIlxuIiksWzQsdGhp''@;'; put 'put ''cy5leGVjdXRlU2NyaXB0KFksTGUsYixGLE4seCxDLGcsTSx5LHApXTtjYXNlIDY6cmV0dXJuWzIsQmUuc2VudCgpXX19KX0pfSxjZS5wcm90b3R5cGUuZXhlY3V0ZUpvYj1mdW5jdGlvbihZLGIseCxOLEYpe3ZhciBnLEMsTTtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgeSxwLFMsUSxyZSxmZSxtZSxrZSxUZSxQZSxGZSxOZSxMZSxCZSxIZSxRZSxtdCxLZSx3ZTtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKEllKXtzd2l0Y2goSWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4geT0oRnx8e30pLmFjY2Vzc190b2tlbixGP1s0LCgwLHRlLmdldFRva2VucykodGhp''@;'; put 'put ''cy5yZXF1ZXN0Q2xpZW50LEYpXTpbMywyXTtjYXNlIDE6eT1JZS5zZW50KCkuYWNjZXNzX3Rva2VuLEllLmxhYmVsPTI7Y2FzZSAyOmlmKCgwLEUuaXNSZWxhdGl2ZVBhdGgpKFkpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlJlbGF0aXZlIHBhdGhzIGNhbm5vdCBi''@;'; put 'put ''ZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUuIik7cmV0dXJuIHA9WS5zcGxpdCgiLyIpLFM9cC5wb3AoKSxRPXAuam9pbigiLyIpLHJlPSgwLEUuaXNSZWxhdGl2ZVBhdGgpKFkpPyIiLmNvbmNhdCh0aGlzLnJvb3RGb2xkZXJOYW1lLCIvIikuY29uY2F0KFEp''@;'; put 'put ''OlEsWzQsdGhpcy5wb3B1bGF0ZUZvbGRlck1hcChyZSx5KV07Y2FzZSAzOmlmKEllLnNlbnQoKSwhKGZlPXRoaXMuZm9sZGVyTWFwLmdldChyZSkpKXRocm93IG5ldyBFcnJvcigiVGhlIGZvbGRlciAnIi5jb25jYXQocmUsIicgd2FzIG5vdCBmb3VuZCBvbiAnIikuY29uY2F0KHRoaXMuc2Vy''@;'; put 'put ''dmVyVXJsLCInLiIpKTtyZXR1cm4gbWU9ZmU/LmZpbmQoZnVuY3Rpb24oT2Upe3JldHVybiBPZS5uYW1lPT09U30pLGtlPVtdLE4mJk9iamVjdC5rZXlzKE4pLmxlbmd0aD9bNCx0aGlzLnVwbG9hZFRhYmxlcyhOLHkpXTpbMyw1XTtjYXNlIDQ6a2U9SWUuc2VudCgpLEllLmxhYmVsPTU7Y2Fz''@;'; put 'put ''ZSA1OmlmKCFtZSl0aHJvdyBuZXcgRXJyb3IoIkpvYiB3YXMgbm90IGZvdW5kLiIpO3JldHVybiBUZT1udWxsPT09KGc9bWU/LmxpbmtzLmZpbmQoZnVuY3Rpb24oT2Upe3JldHVybiJnZXRSZXNvdXJjZSI9PT1PZS5yZWx9KSl8fHZvaWQgMD09PWc/dm9pZCAwOmcuaHJlZixbNCx0aGlzLnJl''@;'; put 'put ''cXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KFRlKSx5KV07Y2FzZSA2OnJldHVybiBQZT1JZS5zZW50KCkucmVzdWx0LEZlPXtfY29udGV4dE5hbWU6YixfcHJvZ3JhbToiIi5jb25jYXQocmUsIi8iKS5jb25jYXQoUyksX3dlYmluX2ZpbGVfY291bnQ6''@;'; put 'put ''a2UubGVuZ3RoLF9PTUlUSlNPTkxJU1RJTkc6ITAsX09NSVRKU09OTE9HOiEwLF9PTUlUU0VTU0lPTlJFU1VMVFM6ITAsX09NSVRURVhUTElTVElORzohMCxfT01JVFRFWFRMT0c6ITB9LHgmJihGZS5fT01JVFRFWFRMT0c9ImZhbHNlIixGZS5fT01JVFNFU1NJT05SRVNVTFRTPSJmYWxzZSIs''@;'; put 'put ''RmUuX0RFQlVHPTEzMSksa2UuZm9yRWFjaChmdW5jdGlvbihPZSxldCl7RmVbIl93ZWJpbl9maWxldXJpIi5jb25jYXQoZXQrMSldPSIvZmlsZXMvZmlsZXMvIi5jb25jYXQoT2UuZmlsZS5pZCksRmVbIl93ZWJpbl9uYW1lIi5jb25jYXQoZXQrMSldPU9lLnRhYmxlTmFtZX0pLE5lPXtuYW1l''@;'; put 'put ''OiJleGVjLSIuY29uY2F0KFMpLGRlc2NyaXB0aW9uOiJQb3dlcmVkIGJ5IFNBU2pzIixqb2JEZWZpbml0aW9uOlBlLGFyZ3VtZW50czpGZX0sWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvam9iRXhlY3V0aW9uL2pvYnM/X2FjdGlvbj13YWl0''@;'; put 'put ''IiksTmUseSldO2Nhc2UgNzpyZXR1cm4gTGU9SWUuc2VudCgpLnJlc3VsdCxbNCx0aGlzLnBvbGxKb2JTdGF0ZShMZSxGKS5jYXRjaChmdW5jdGlvbihPZSl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKE9lLCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0dXMuICIpfSldO2Nhc2UgODpy''@;'; put 'put ''ZXR1cm4gQmU9SWUuc2VudCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvam9iRXhlY3V0aW9uL2pvYnMvIikuY29uY2F0KExlLmlkKSx5KV07Y2FzZSA5OnJldHVybiBIZT1JZS5zZW50KCkucmVzdWx0LEtlPUhlLnJlc3VsdHNbIl93ZWJv''@;'; put 'put ''dXQuanNvbiJdLHdlPUhlLmxpbmtzLmZpbmQoZnVuY3Rpb24oT2Upe3JldHVybiJsb2ciPT09T2UucmVsfSksS2U/WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChLZSwiL2NvbnRlbnQiKSx5LCJ0ZXh0L3BsYWluIildOlszLDExXTtj''@;'; put 'put ''YXNlIDEwOlFlPUllLnNlbnQoKSxJZS5sYWJlbD0xMTtjYXNlIDExOnJldHVybiB4JiZ3ZT9bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KHdlLmhyZWYsIi9jb250ZW50IikseSkudGhlbihmdW5jdGlvbihPZSl7cmV0dXJuIE9lLnJl''@;'; put 'put ''c3VsdC5pdGVtcy5tYXAoZnVuY3Rpb24oZXQpe3JldHVybiBldC5saW5lfSkuam9pbigiXG4iKX0pXTpbMywxM107Y2FzZSAxMjptdD1JZS5zZW50KCksSWUubGFiZWw9MTM7Y2FzZSAxMzppZigiZmFpbGVkIj09PUJlKXRocm93IG5ldyBqLkpvYkV4ZWN1dGlvbkVycm9yKG51bGw9PT0oQz1I''@;'; put 'put ''ZS5lcnJvcil8fHZvaWQgMD09PUM/dm9pZCAwOkMuZXJyb3JDb2RlLG51bGw9PT0oTT1IZS5lcnJvcil8fHZvaWQgMD09PU0/dm9pZCAwOk0ubWVzc2FnZSxtdCk7cmV0dXJuWzIse3Jlc3VsdDpRZT8ucmVzdWx0LGxvZzptdH1dfX0pfSl9LGNlLnByb3RvdHlwZS5wb3B1bGF0ZUZvbGRlck1h''@;'; put 'put ''cD1mdW5jdGlvbihZLGIpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB4LEYsZztyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKE0pe3N3aXRjaChNLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHg9KDAsRS5pc1JlbGF0aXZlUGF0aCkoWSk/IiIuY29uY2F0KHRoaXMucm9v''@;'; put 'put ''dEZvbGRlck5hbWUsIi8iKS5jb25jYXQoWSk6WSx0aGlzLmZvbGRlck1hcC5nZXQoeCk/WzJdOls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KCIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9Iit4KSxiKS5jYXRjaChmdW5jdGlvbih5KXt0aHJvdygwLFUucHJlZml4TWVz''@;'; put 'put ''c2FnZSkoeSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBmb2xkZXIuICIpfSldO2Nhc2UgMTppZighKEY9TS5zZW50KCkucmVzdWx0KSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXRoICIuY29uY2F0KHgsIiBkb2VzIG5vdCBleGlzdCBvbiAiKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpKTtyZXR1cm5b''@;'; put 'put ''NCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvZm9sZGVycy9mb2xkZXJzLyIuY29uY2F0KEYuaWQsIi9tZW1iZXJzP2xpbWl0PSIpLmNvbmNhdChGLm1lbWJlckNvdW50PDUwMD81MDA6Ri5tZW1iZXJDb3VudCksYikuY2F0Y2goZnVuY3Rpb24oeSl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2Up''@;'; put 'put ''KHksIkVycm9yIHdoaWxlIGdldHRpbmcgbWVtYmVycy4gIil9KV07Y2FzZSAyOnJldHVybiBnPU0uc2VudCgpLnJlc3VsdCx0aGlzLmZvbGRlck1hcC5zZXQoeCxnLml0ZW1zKSxbMl19fSl9KX0sY2UucHJvdG90eXBlLnBvbGxKb2JTdGF0ZT1mdW5jdGlvbihZLGIseCl7cmV0dXJuIEkodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihOKXtyZXR1cm5bMiwoMCxxLnBvbGxKb2JTdGF0ZSkodGhpcy5yZXF1ZXN0Q2xpZW50LFksdGhpcy5kZWJ1ZyxiLHgpXX0pfSl9LGNlLnByb3RvdHlwZS51cGxvYWRUYWJsZXM9ZnVuY3Rpb24oWSxiKXty''@;'; put 'put ''ZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKHgpe3JldHVyblsyLCgwLG5lLnVwbG9hZFRhYmxlcykodGhpcy5yZXF1ZXN0Q2xpZW50LFksYildfSl9KX0sY2UucHJvdG90eXBlLmdldEZvbGRlckRldGFpbHM9ZnVuY3Rpb24oWSxi''@;'; put 'put ''KXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeCxOO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oRil7c3dpdGNoKEYubGFiZWwpe2Nhc2UgMDpyZXR1cm4geD0oMCxFLmlzVXJpKShZKT9ZOiIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9Ii5jb25jYXQoWSks''@;'; put 'put ''WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdCh4KSxiKS5jYXRjaChmdW5jdGlvbihnKXtpZihnIGluc3RhbmNlb2Ygai5DZXJ0aWZpY2F0ZUVycm9yKXRocm93IGc7cmV0dXJue3Jlc3VsdDpudWxsfX0pXTtjYXNlIDE6cmV0dXJuKE49''@;'; put 'put ''Ri5zZW50KCkucmVzdWx0KT9bMixOXTpbMix2b2lkIDBdfX0pfSl9LGNlLnByb3RvdHlwZS5nZXRGb2xkZXJVcmk9ZnVuY3Rpb24oWSxiKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeDtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKE4pe3N3aXRjaChOLmxhYmVs''@;'; put 'put ''KXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRGb2xkZXJEZXRhaWxzKFksYildO2Nhc2UgMTpyZXR1cm4oeD1OLnNlbnQoKSk/WzIsIi9mb2xkZXJzL2ZvbGRlcnMvIi5jb25jYXQoeC5pZCldOlsyLHZvaWQgMF19fSl9KX0sY2UucHJvdG90eXBlLmdldFJlY3ljbGVCaW5Vcmk9ZnVuY3Rpb24o''@;'; put 'put ''WSl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGI7cmV0dXJuIFIodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoIi9m''@;'; put 'put ''b2xkZXJzL2ZvbGRlcnMvQG15UmVjeWNsZUJpbiIpLFkpLmNhdGNoKGZ1bmN0aW9uKE4pe2lmKE4gaW5zdGFuY2VvZiBqLkNlcnRpZmljYXRlRXJyb3IpdGhyb3cgTjtyZXR1cm57cmVzdWx0Om51bGx9fSldO2Nhc2UgMTpyZXR1cm4oYj14LnNlbnQoKS5yZXN1bHQpP1syLCIvZm9sZGVycy9m''@;'; put 'put ''b2xkZXJzLyIuY29uY2F0KGIuaWQpXTpbMix2b2lkIDBdfX0pfSl9LGNlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihZLGIpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBSKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgu''@;'; put 'put ''bGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKFksYildO2Nhc2UgMTpyZXR1cm5bMix4LnNlbnQoKV19fSl9KX0sY2UucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlJZD1mdW5jdGlvbihZLGIpe3JldHVybiBJKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBSKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlJZChZLGIpXTtjYXNlIDE6cmV0dXJuWzIseC5zZW50KCldfX0pfSl9''@;'; put 'put ''LGNlLnByb3RvdHlwZS5saXN0Rm9sZGVyPWZ1bmN0aW9uKFksYix4KXtyZXR1cm4gdm9pZCAwPT09eCYmKHg9MjApLEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE4sRixnO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpyZXR1cm4o''@;'; put 'put ''MCxFLmlzVXJpKShZKT8oRj1ZLFszLDNdKTpbMywxXTtjYXNlIDE6cmV0dXJuWzQsdGhpcy5nZXRGb2xkZXJVcmkoWSxiKV07Y2FzZSAyOkY9Qy5zZW50KCksQy5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gTj1GLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVy''@;'; put 'put ''VXJsKS5jb25jYXQoTiwiL21lbWJlcnM/bGltaXQ9IikuY29uY2F0KHgpLGIpXTtjYXNlIDQ6cmV0dXJuKGc9Qy5zZW50KCkucmVzdWx0KSYmZy5pdGVtcz9bMixnLml0ZW1zLm1hcChmdW5jdGlvbihNKXtyZXR1cm4gTS5uYW1lfSldOlsyLFtdXX19KX0pfSxjZS5wcm90b3R5cGUubW92ZUZv''@;'; put 'put ''bGRlcj1mdW5jdGlvbihZLGIseCxOKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRixnLEMsTSx5LHA7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihTKXtzd2l0Y2goUy5sYWJlbCl7Y2FzZSAwOnJldHVybiBGPVkuc3BsaXQoIi8iKS5wb3AoKSxbNCx0aGlzLmdl''@;'; put 'put ''dEZvbGRlckRldGFpbHMoYixOKV07Y2FzZSAxOnJldHVybiBTLnNlbnQoKT94PUY6KChnPWIuc3BsaXQoIi8iKSkuc3BsaWNlKGcubGVuZ3RoLTEsMSksYj1nLmpvaW4oIi8iKSksWzQsdGhpcy5nZXRGb2xkZXJVcmkoWSxOKV07Y2FzZSAyOnJldHVybiBDPVMuc2VudCgpLFs0LHRoaXMuZ2V0''@;'; put 'put ''Rm9sZGVyVXJpKGIsTildO2Nhc2UgMzpyZXR1cm4gTT1TLnNlbnQoKSxDPyh5PUM/LnNwbGl0KCIvIikucG9wKCksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBhdGNoKCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KEMpLHtpZDp5LG5hbWU6eCxwYXJlbnRGb2xkZXJVcmk6TX0sTiku''@;'; put 'put ''Y2F0Y2goZnVuY3Rpb24oUSl7dGhyb3cgUS5jb2RlJiYiRU5PVEZPVU5EIj09PVEuY29kZT97Ym9keTp7bWVzc2FnZToiRm9sZGVyICciLmNvbmNhdChZLnNwbGl0KCIvIikucG9wKCksIicgd2FzIG5vdCBmb3VuZC4iKX19OlF9KV0pOlsyLHZvaWQgMF07Y2FzZSA0OnJldHVybihwPVMuc2Vu''@;'; put 'put ''dCgpLnJlc3VsdCk/WzIscF06WzIsdm9pZCAwXX19KX0pfSxjZS5wcm90b3R5cGUuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKFksYil7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHgsTixGLGc7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihNKXtzd2l0Y2goTS5sYWJl''@;'; put 'put ''bCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0UmVjeWNsZUJpblVyaShiKV07Y2FzZSAxOnJldHVybiB4PU0uc2VudCgpLE49WS5zcGxpdCgiLyIpLnBvcCgpfHwiIixnPShGPW5ldyBEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKSsiICIrRi50b0xvY2FsZVRpbWVTdHJpbmcoKSxbNCx0aGlz''@;'; put 'put ''Lm1vdmVGb2xkZXIoWSx4LE4rIiAiK2csYildO2Nhc2UgMjpyZXR1cm5bMixNLnNlbnQoKV19fSl9KX0sY2V9KCk7Qi5TQVNWaXlhQXBpQ2xpZW50PXVlfSw1OTU2OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih1ZSl7Zm9yKHZhciBjZSxZPTEsYj1hcmd1bWVudHMubGVuZ3RoO1k8YjtZKyspZm9yKHZhciB4IGluIGNlPWFyZ3VtZW50c1tZXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2UseCkmJih1ZVt4XT1jZVt4XSk7cmV0''@;'; put 'put ''dXJuIHVlfSxLLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sSj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odWUsY2UsWSxiKXtyZXR1cm4gbmV3KFl8fChZPVByb21pc2UpKShmdW5jdGlvbih4LE4pe2Z1bmN0aW9uIEYoTSl7dHJ5e0MoYi5uZXh0KE0pKX1jYXRjaCh5KXtOKHkpfX1m''@;'; put 'put ''dW5jdGlvbiBnKE0pe3RyeXtDKGIudGhyb3coTSkpfWNhdGNoKHkpe04oeSl9fWZ1bmN0aW9uIEMoTSl7dmFyIHk7TS5kb25lP3goTS52YWx1ZSk6KHk9TS52YWx1ZSx5IGluc3RhbmNlb2YgWT95Om5ldyBZKGZ1bmN0aW9uKHApe3AoeSl9KSkudGhlbihGLGcpfUMoKGI9Yi5hcHBseSh1ZSxj''@;'; put 'put ''ZXx8W10pKS5uZXh0KCkpfSl9LEk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odWUsY2Upe3ZhciBZLGIseCxOLEY9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmeFswXSl0aHJvdyB4WzFdO3JldHVybiB4WzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIE49e25leHQ6''@;'; put 'put ''ZygwKSx0aHJvdzpnKDEpLHJldHVybjpnKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoTltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxOO2Z1bmN0aW9uIGcoQyl7cmV0dXJuIGZ1bmN0aW9uKE0pe3JldHVybiBmdW5jdGlvbih5KXtpZihZKXRocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO0Y7KXRyeXtpZihZPTEsYiYmKHg9MiZ5WzBdP2IucmV0dXJuOnlbMF0/Yi50aHJvd3x8KCh4PWIucmV0dXJuKSYmeC5jYWxsKGIpLDApOmIubmV4dCkmJiEoeD14LmNhbGwoYix5WzFdKSkuZG9u''@;'; put 'put ''ZSlyZXR1cm4geDtzd2l0Y2goYj0wLHgmJih5PVsyJnlbMF0seC52YWx1ZV0pLHlbMF0pe2Nhc2UgMDpjYXNlIDE6eD15O2JyZWFrO2Nhc2UgNDpyZXR1cm4gRi5sYWJlbCsrLHt2YWx1ZTp5WzFdLGRvbmU6ITF9O2Nhc2UgNTpGLmxhYmVsKyssYj15WzFdLHk9WzBdO2NvbnRpbnVlO2Nhc2Ug''@;'; put 'put ''Nzp5PUYub3BzLnBvcCgpLEYudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHg9KHg9Ri50cnlzKS5sZW5ndGg+MCYmeFt4Lmxlbmd0aC0xXSl8fDYhPT15WzBdJiYyIT09eVswXSkpe0Y9MDtjb250aW51ZX1pZigzPT09eVswXSYmKCF4fHx5WzFdPnhbMF0mJnlbMV08eFszXSkp''@;'; put 'put ''e0YubGFiZWw9eVsxXTticmVha31pZig2PT09eVswXSYmRi5sYWJlbDx4WzFdKXtGLmxhYmVsPXhbMV0seD15O2JyZWFrfWlmKHgmJkYubGFiZWw8eFsyXSl7Ri5sYWJlbD14WzJdLEYub3BzLnB1c2goeSk7YnJlYWt9eFsyXSYmRi5vcHMucG9wKCksRi50cnlzLnBvcCgpO2NvbnRpbnVlfXk9''@;'; put 'put ''Y2UuY2FsbCh1ZSxGKX1jYXRjaChwKXt5PVs2LHBdLGI9MH1maW5hbGx5e1k9eD0wfWlmKDUmeVswXSl0aHJvdyB5WzFdO3JldHVybnt2YWx1ZTp5WzBdP3lbMV06dm9pZCAwLGRvbmU6ITB9fShbQyxNXSl9fX0sUj10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKHVlLGNlLFkp''@;'; put 'put ''e2lmKFl8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgYix4PTAsTj1jZS5sZW5ndGg7eDxOO3grKykhYiYmeCBpbiBjZXx8KGJ8fChiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNlLDAseCkpLGJbeF09Y2VbeF0pO3JldHVybiB1ZS5jb25jYXQoYnx8QXJyYXkucHJvdG90eXBl''@;'; put 'put ''LnNsaWNlLmNhbGwoY2UpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBFPUwoNTkyOCksej1MKDEyMzApLGo9TCg5ODIxKSxWPUwoODMwNiksRz1MKDM0NjcpLFc9TCgxNTI3KSxVPUwoMzkwMCkscT1MKDQ1ODgpLHRlPUwoMzYwMiksbmU9''@;'; put 'put ''TCg4MjE3KSxpZT1MKDEzOTUpLGxlPXtzZXJ2ZXJVcmw6IiIscGF0aFNBU0pTOiIvU0FTanNBcGkvc3RwL2V4ZWN1dGUiLHBhdGhTQVM5OiIvU0FTU3RvcmVkUHJvY2Vzcy9kbyIscGF0aFNBU1ZpeWE6Ii9TQVNKb2JFeGVjdXRpb24iLGFwcExvYzoiL1B1YmxpYy9zZWVkYXBwIixzZXJ2ZXJU''@;'; put 'put ''eXBlOlUuU2VydmVyVHlwZS5TYXNWaXlhLGRlYnVnOiExLGNvbnRleHROYW1lOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLHVzZUNvbXB1dGVBcGk6bnVsbCxsb2dpbk1lY2hhbmlzbTp6LkxvZ2luTWVjaGFuaXNtLkRlZmF1bHR9LGRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g''@;'; put 'put ''dWUoY2Upe3ZhciBZPXRoaXM7dGhpcy5zYXNqc0NvbmZpZz1uZXcgei5TQVNqc0NvbmZpZyx0aGlzLmpvYnNQYXRoPSIiLHRoaXMuc2FzVml5YUFwaUNsaWVudD1udWxsLHRoaXMuc2FzOUFwaUNsaWVudD1udWxsLHRoaXMuc2FzSlNBcGlDbGllbnQ9bnVsbCx0aGlzLmZpbGVVcGxvYWRlcj1u''@;'; put 'put ''dWxsLHRoaXMuYXV0aE1hbmFnZXI9bnVsbCx0aGlzLnJlcXVlc3RDbGllbnQ9bnVsbCx0aGlzLndlYkpvYkV4ZWN1dG9yPW51bGwsdGhpcy5zYXNqc0pvYkV4ZWN1dG9yPW51bGwsdGhpcy5jb21wdXRlSm9iRXhlY3V0b3I9bnVsbCx0aGlzLmplc0pvYkV4ZWN1dG9yPW51bGwsdGhpcy5zYXM5''@;'; put 'put ''Sm9iRXhlY3V0b3I9bnVsbCx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiBKKFksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiLHgsTixGLGc7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihDKXtzd2l0Y2goQy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LG51''@;'; put 'put ''bGw9PT0oYj10aGlzLndlYkpvYkV4ZWN1dG9yKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5yZXNlbmRXYWl0aW5nUmVxdWVzdHMoKV07Y2FzZSAxOnJldHVybiBDLnNlbnQoKSxbNCxudWxsPT09KHg9dGhpcy5jb21wdXRlSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LnJlc2VuZFdh''@;'; put 'put ''aXRpbmdSZXF1ZXN0cygpXTtjYXNlIDI6cmV0dXJuIEMuc2VudCgpLFs0LG51bGw9PT0oTj10aGlzLmplc0pvYkV4ZWN1dG9yKXx8dm9pZCAwPT09Tj92b2lkIDA6Ti5yZXNlbmRXYWl0aW5nUmVxdWVzdHMoKV07Y2FzZSAzOnJldHVybiBDLnNlbnQoKSxbNCxudWxsPT09KEY9dGhpcy5maWxl''@;'; put 'put ''VXBsb2FkZXIpfHx2b2lkIDA9PT1GP3ZvaWQgMDpGLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNlIDQ6cmV0dXJuIEMuc2VudCgpLFs0LG51bGw9PT0oZz10aGlzLnNhc2pzSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNl''@;'; put 'put ''IDU6cmV0dXJuIEMuc2VudCgpLFsyXX19KX0pfSx0aGlzLnNhc2pzQ29uZmlnPUsoSyh7fSxsZSksY2UpLHRoaXMuc2V0dXBDb25maWd1cmF0aW9uKCl9cmV0dXJuIHVlLnByb3RvdHlwZS5nZXRDc3JmVG9rZW49ZnVuY3Rpb24oY2Upe3ZhciBZO3JldHVybiB2b2lkIDA9PT1jZSYmKGNlPSJn''@;'; put 'put ''ZW5lcmFsIiksbnVsbD09PShZPXRoaXMucmVxdWVzdENsaWVudCl8fHZvaWQgMD09PVk/dm9pZCAwOlkuZ2V0Q3NyZlRva2VuKGNlKX0sdWUucHJvdG90eXBlLmV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24oY2Upe3ZhciBZLGIseD1jZS5saW5lc09mQ29kZSxOPWNlLmZpbGVOYW1lLEY9Y2UuY29u''@;'; put 'put ''dGV4dE5hbWUsZz1jZS5ydW5UaW1lLEM9Y2UuYXV0aENvbmZpZyxNPWNlLmF1dGhDb25maWdTYXM5LHk9Y2UuZGVidWc7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihwKXtzd2l0Y2gocC5sYWJlbCl7Y2FzZSAwOmlmKHRoaXMu''@;'; put 'put ''aXNNZXRob2RTdXBwb3J0ZWQoImV4ZWN1dGVTY3JpcHQiLFtVLlNlcnZlclR5cGUuU2FzOSxVLlNlcnZlclR5cGUuU2FzanMsVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUhPT1VLlNlcnZlclR5cGUuU2FzOSlyZXR1cm5bMywyXTtpZighTSl0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkF1dGggY29uZmlnIGZvciBzYXM5IGlzIG5vdCBwcm92aWRlZCIpO3JldHVybls0LG51bGw9PT0oWT10aGlzLnNhczlBcGlDbGllbnQpfHx2b2lkIDA9PT1ZP3ZvaWQgMDpZLmV4ZWN1dGVTY3JpcHQoeCxNLnVzZXJOYW1lLE0ucGFzc3dvcmQpXTtjYXNlIDE6Y2FzZSAz''@;'; put 'put ''OmNhc2UgNTpyZXR1cm5bMixwLnNlbnQoKV07Y2FzZSAyOnJldHVybiB0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUhPT1VLlNlcnZlclR5cGUuU2FzanM/WzMsNF06WzQsbnVsbD09PShiPXRoaXMuc2FzSlNBcGlDbGllbnQpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmV4ZWN1dGVTY3JpcHQo''@;'; put 'put ''eC5qb2luKCJcbiIpLGcsQyldO2Nhc2UgNDppZih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUhPT1VLlNlcnZlclR5cGUuU2FzVml5YSlyZXR1cm5bMyw2XTtpZighKEY9Rnx8dGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZSkpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IG5hbWUgaXMg''@;'; put 'put ''dW5kZWZpbmVkLiBQbGVhc2Ugc2V0IGEgYGNvbnRleHROYW1lYCBpbiB5b3VyIFNBU2pzIG9yIG92ZXJyaWRlIGNvbmZpZy4iKTtpZighTil0aHJvdyBuZXcgRXJyb3IoIkZpbGUgbmFtZSBpcyByZXF1aXJlZCBpbiBjYXNlIG9mIFNBUyBWSVlBLiBQbGVhc2UgcHJvdmlkZSBhIGBmaWxlTmFt''@;'; put 'put ''ZWAuIik7cmV0dXJuWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmV4ZWN1dGVTY3JpcHQoTix4LEYsQyxudWxsLHl8fHRoaXMuc2FzanNDb25maWcuZGVidWcpXTtjYXNlIDY6cmV0dXJuWzJdfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oY2Upe3JldHVy''@;'; put 'put ''biBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oWSl7c3dpdGNoKFkubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0Q29tcHV0ZUNvbnRleHRzIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlz''@;'; put 'put ''LnNhc1ZpeWFBcGlDbGllbnQuZ2V0Q29tcHV0ZUNvbnRleHRzKGNlKV07Y2FzZSAxOnJldHVyblsyLFkuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZ2V0TGF1bmNoZXJDb250ZXh0cz1mdW5jdGlvbihjZSl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IEkodGhpcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRMYXVuY2hlckNvbnRleHRzIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0TGF1bmNoZXJDb250ZXh0cyhj''@;'; put 'put ''ZSldO2Nhc2UgMTpyZXR1cm5bMixZLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmdldERlZmF1bHRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0cyIsW1UuU2VydmVyVHlwZS5TYXNWaXlh''@;'; put 'put ''XSksdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldERlZmF1bHRDb21wdXRlQ29udGV4dHMoKX0sdWUucHJvdG90eXBlLmdldEV4ZWN1dGFibGVDb250ZXh0cz1mdW5jdGlvbihjZSl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihZ''@;'; put 'put ''KXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRFeGVjdXRhYmxlQ29udGV4dHMiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRFeGVjdXRhYmxlQ29udGV4dHMoY2UpXTtjYXNlIDE6cmV0''@;'; put 'put ''dXJuWzIsWS5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5jcmVhdGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihjZSxZLGIseCxOLEYpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlQ29tcHV0ZUNvbnRleHQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVDb21wdXRlQ29udGV4dChjZSxZLGIseCxOLEYpXTtjYXNlIDE6cmV0dXJuWzIsZy5zZW50KCld''@;'; put 'put ''fX0pfSl9LHVlLnByb3RvdHlwZS5jcmVhdGVMYXVuY2hlckNvbnRleHQ9ZnVuY3Rpb24oY2UsWSxiLHgpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oTil7c3dpdGNoKE4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01l''@;'; put 'put ''dGhvZFN1cHBvcnRlZCgiY3JlYXRlTGF1bmNoZXJDb250ZXh0IixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlTGF1bmNoZXJDb250ZXh0KGNlLFksYix4KV07Y2FzZSAxOnJldHVyblsyLE4uc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUu''@;'; put 'put ''ZWRpdENvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGNlLFksYil7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJlZGl0Q29tcHV0''@;'; put 'put ''ZUNvbnRleHQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5lZGl0Q29tcHV0ZUNvbnRleHQoY2UsWSxiKV07Y2FzZSAxOnJldHVyblsyLHguc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZGVsZXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oY2Us''@;'; put 'put ''WSl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJkZWxldGVDb21wdXRlQ29udGV4dCIsW1UuU2VydmVyVHlwZS5TYXNWaXlh''@;'; put 'put ''XSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlbGV0ZUNvbXB1dGVDb250ZXh0KGNlLFkpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihjZSxZKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0QnlOYW1lIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGll''@;'; put 'put ''bnQuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUoY2UsWSldO2Nhc2UgMTpyZXR1cm5bMixiLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlJZD1mdW5jdGlvbihjZSxZKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0''@;'; put 'put ''aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0QnlJZCIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0QnlJZChj''@;'; put 'put ''ZSxZKV07Y2FzZSAxOnJldHVyblsyLGIuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlU2Vzc2lvbj1mdW5jdGlvbihjZSxZKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNl''@;'; put 'put ''IDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImNyZWF0ZVNlc3Npb24iLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVTZXNzaW9uKGNlLFkpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5j''@;'; put 'put ''cmVhdGVGb2xkZXI9ZnVuY3Rpb24oY2UsWSxiLHgsTixGKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6cmV0dXJuIE4/WzQsTi5jcmVhdGVGb2xkZXIoY2UsWSxiLHgsRildOlsz''@;'; put 'put ''LDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsZy5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlRm9sZGVyKGNlLFksYix4LEYpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihjZSxZLGIseCxOLEYpe3JldHVybiBKKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDpyZXR1cm4gRj9bNCxGLmNyZWF0ZUZpbGUoY2UsWSxiLHgsTildOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsZy5zZW50KCldO2Nhc2UgMjpyZXR1''@;'; put 'put ''cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlRmlsZShjZSxZLGIseCxOKV19fSl9KX0sdWUucHJvdG90eXBlLmdldEZvbGRlcj1mdW5jdGlvbihjZSxZKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRj''@;'; put 'put ''aChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldEZvbGRlciIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldEZvbGRlcihjZSxZKV07Y2FzZSAxOnJldHVyblsyLGIuc2VudCgpXX19KX0pfSx1ZS5wcm90''@;'; put 'put ''b3R5cGUuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKGNlLFkpe3ZhciBiO3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVsZXRl''@;'; put 'put ''Rm9sZGVyIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCxudWxsPT09KGI9dGhpcy5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5kZWxldGVGb2xkZXIoY2UsWSldO2Nhc2UgMTpyZXR1cm5bMix4LnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmxpc3RGb2xkZXI9''@;'; put 'put ''ZnVuY3Rpb24oY2UsWSxiKXt2YXIgeDtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKE4pe3N3aXRjaChOLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImxpc3RGb2xkZXIiLFtVLlNlcnZlclR5''@;'; put 'put ''cGUuU2FzVml5YV0pLFs0LG51bGw9PT0oeD10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT14P3ZvaWQgMDp4Lmxpc3RGb2xkZXIoY2UsWSxiKV07Y2FzZSAxOnJldHVyblsyLE4uc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUubW92ZUZvbGRlcj1mdW5jdGlvbihjZSxZLGIseCl7''@;'; put 'put ''dmFyIE47cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJtb3ZlRm9sZGVyIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCxu''@;'; put 'put ''dWxsPT09KE49dGhpcy5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09Tj92b2lkIDA6Ti5tb3ZlRm9sZGVyKGNlLFksYix4KV07Y2FzZSAxOnJldHVyblsyLEYuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlSm9iRGVmaW5pdGlvbj1mdW5jdGlvbihjZSxZLGIseCxOLEYpe3Jl''@;'; put 'put ''dHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlSm9iRGVmaW5pdGlvbiIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksRj9b''@;'; put 'put ''NCxGLmNyZWF0ZUpvYkRlZmluaXRpb24oY2UsWSxiLHgsTildOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsZy5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlSm9iRGVmaW5pdGlvbihjZSxZLGIseCxOKV19fSl9KX0sdWUucHJvdG90eXBl''@;'; put 'put ''LmdldEF1dGhDb2RlPWZ1bmN0aW9uKGNlKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKFkpe3N3aXRjaChZLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldEF1dGhDb2RlIixbVS5TZXJ2''@;'; put 'put ''ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0QXV0aENvZGUoY2UpXTtjYXNlIDE6cmV0dXJuWzIsWS5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihjZSxZLGIpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0QWNjZXNzVG9rZW4iLFtVLlNlcnZlclR5cGUuU2FzVml5YSxVLlNlcnZlclR5cGUuU2FzanNdKSx0aGlzLnNhc2pzQ29uZmln''@;'; put 'put ''LnNlcnZlclR5cGUhPT1VLlNlcnZlclR5cGUuU2FzanM/WzMsMl06WzQsdGhpcy5zYXNKU0FwaUNsaWVudC5nZXRBY2Nlc3NUb2tlbihjZSxiKV07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMix4LnNlbnQoKV07Y2FzZSAyOnJldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRBY2Nlc3NU''@;'; put 'put ''b2tlbihjZSxZLGIpXX19KX0pfSx1ZS5wcm90b3R5cGUucmVmcmVzaFRva2Vucz1mdW5jdGlvbihjZSxZLGIpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oeCl7c3dpdGNoKHgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5p''@;'; put 'put ''c01ldGhvZFN1cHBvcnRlZCgicmVmcmVzaFRva2VucyIsW1UuU2VydmVyVHlwZS5TYXNWaXlhLFUuU2VydmVyVHlwZS5TYXNqc10pLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXNqcz9bMywyXTpbNCx0aGlzLnNhc0pTQXBpQ2xpZW50LnJlZnJlc2hUb2tl''@;'; put 'put ''bnMoYildO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIseC5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQucmVmcmVzaFRva2VucyhjZSxZLGIpXX19KX0pfSx1ZS5wcm90b3R5cGUuZGVsZXRlQ2xpZW50PWZ1bmN0aW9uKGNlLFkpe3JldHVybiBKKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oYil7c3dpdGNoKGIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVsZXRlQ2xpZW50IixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQu''@;'; put 'put ''ZGVsZXRlQ2xpZW50KGNlLFkpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRTYXNqc0NvbmZpZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhc2pzQ29uZmlnfSx1ZS5wcm90b3R5cGUuZ2V0VXNlck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5h''@;'; put 'put ''dXRoTWFuYWdlci51c2VyTmFtZX0sdWUucHJvdG90eXBlLnNldFNBU2pzQ29uZmlnPWZ1bmN0aW9uKGNlKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKFkpe3JldHVybiB0aGlzLnNhc2pzQ29uZmlnPUsoSyh7fSx0aGlzLnNh''@;'; put 'put ''c2pzQ29uZmlnKSxjZSksdGhpcy5zZXR1cENvbmZpZ3VyYXRpb24oKSxbMl19KX0pfSx1ZS5wcm90b3R5cGUuc2V0RGVidWdTdGF0ZT1mdW5jdGlvbihjZSl7dGhpcy5zYXNqc0NvbmZpZy5kZWJ1Zz1jZSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQmJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVi''@;'; put 'put ''dWc9Y2UpfSx1ZS5wcm90b3R5cGUuY2hlY2tTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihjZSl7cmV0dXJuWzIsdGhpcy5hdXRoTWFuYWdlci5jaGVja1Nlc3Npb24oKV19KX0pfSx1ZS5wcm90''@;'; put 'put ''b3R5cGUubG9nSW49ZnVuY3Rpb24oY2UsWSxiLHgpe3JldHVybiB2b2lkIDA9PT14JiYoeD17fSksSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKE4pe2lmKHRoaXMuc2FzanNDb25maWcubG9naW5NZWNoYW5pc209PT16LkxvZ2luTWVjaGFu''@;'; put 'put ''aXNtLkRlZmF1bHQpe2lmKCFjZXx8IVkpdGhyb3cgbmV3IEVycm9yKCJBIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUgcmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBsb2dpbiBtZWNoYW5pc20uIik7cmV0dXJuWzIsdGhpcy5hdXRoTWFuYWdlci5sb2dJbihjZSxZKV19aWYodHlw''@;'; put 'put ''ZW9mIHdpbmRvdz4idSIpdGhyb3cgbmV3IEVycm9yKCJUaGUgcmVkaXJlY3RlZCBsb2dpbiBtZWNoYW5pc20gaXMgb25seSBhdmFpbGFibGUgZm9yIHVzZSBpbiB0aGUgYnJvd3Nlci4iKTtyZXR1cm5bMix0aGlzLmF1dGhNYW5hZ2VyLnJlZGlyZWN0ZWRMb2dJbih4KV19KX0pfSx1ZS5wcm90''@;'; put 'put ''b3R5cGUubG9nT3V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXV0aE1hbmFnZXIubG9nT3V0KCl9LHVlLnByb3RvdHlwZS51cGxvYWRGaWxlPWZ1bmN0aW9uKGNlLFksYix4LE4pe3JldHVybiB2b2lkIDA9PT14JiYoeD17fSksSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gSSh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHg9SyhLKHt9LHRoaXMuc2FzanNDb25maWcpLHgpLFs0LHRoaXMuZmlsZVVwbG9hZGVyLmV4ZWN1dGUoY2Use2ZpbGVzOlkscGFyYW1zOmJ9LHgsTildO2Nhc2UgMTpyZXR1cm5bMixnLnNlbnQoKV19''@;'; put 'put ''fSl9KX0sdWUucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oY2UsWSxiLHgsTixGKXtyZXR1cm4gdm9pZCAwPT09YiYmKGI9e30pLHZvaWQgMD09PUYmJihGPVtdKSxKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBnO3JldHVybiBJKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNo''@;'; put 'put ''KEMubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYj1LKEsoe30sdGhpcy5zYXNqc0NvbmZpZyksYiksKGc9KDAsRS52YWxpZGF0ZUlucHV0KShZKSkuc3RhdHVzP2Iuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXNqcz9bMywyXTpbNCx0aGlzLnNhc2pzSm9iRXhlY3V0b3IuZXhlY3V0ZShjZSxZ''@;'; put 'put ''LGIseCxOLEYpXTpbMywxMl07Y2FzZSAxOmNhc2UgMzpjYXNlIDU6Y2FzZSA4OmNhc2UgMTA6cmV0dXJuWzIsQy5zZW50KCldO2Nhc2UgMjpyZXR1cm4gYi5zZXJ2ZXJUeXBlIT09VS5TZXJ2ZXJUeXBlLlNhc1ZpeWF8fG51bGw9PWIudXNlQ29tcHV0ZUFwaT9bMyw3XTpiLnVzZUNvbXB1dGVB''@;'; put 'put ''cGk/WzQsdGhpcy5jb21wdXRlSm9iRXhlY3V0b3IuZXhlY3V0ZShjZSxZLGIseCxOKV06WzMsNF07Y2FzZSA0OnJldHVybiBiLmNvbnRleHROYW1lfHwoYj1LKEsoe30sYikse2NvbnRleHROYW1lOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQifSkpLFs0LHRoaXMuamVzSm9i''@;'; put 'put ''RXhlY3V0b3IuZXhlY3V0ZShjZSxZLGIseCxOLEYpXTtjYXNlIDY6cmV0dXJuWzMsMTFdO2Nhc2UgNzpyZXR1cm4gYi5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhczkmJmIudXNlcm5hbWUmJmIucGFzc3dvcmQ/WzQsdGhpcy5zYXM5Sm9iRXhlY3V0b3IuZXhlY3V0ZShjZSxZLGIpXTpb''@;'; put 'put ''Myw5XTtjYXNlIDk6cmV0dXJuWzQsdGhpcy53ZWJKb2JFeGVjdXRvci5leGVjdXRlKGNlLFksYix4LE4sRildO2Nhc2UgMTE6cmV0dXJuWzMsMTNdO2Nhc2UgMTI6cmV0dXJuWzIsUHJvbWlzZS5yZWplY3QobmV3IGllLkVycm9yUmVzcG9uc2UoZy5tc2cpKV07Y2FzZSAxMzpyZXR1cm5bMl19''@;'; put 'put ''fSl9KX0sdWUucHJvdG90eXBlLmRlcGxveVNlcnZpY2VQYWNrPWZ1bmN0aW9uKGNlLFksYix4LE4pe3JldHVybiB2b2lkIDA9PT1OJiYoTj0hMSksSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRixnO3JldHVybiBJKHRoaXMsZnVuY3Rpb24oTSl7c3dpdGNoKE0ubGFiZWwp''@;'; put 'put ''e2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZGVwbG95U2VydmljZVBhY2siLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLEY9bnVsbCxifHxZPyhifHwoYj10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCksWXx8KFk9dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MpLHRoaXMu''@;'; put 'put ''c2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXNWaXlhPyhGPW5ldyBqLlNBU1ZpeWFBcGlDbGllbnQoYixZLHRoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUsdGhpcy5yZXF1ZXN0Q2xpZW50KSkuZGVidWc9dGhpcy5zYXNqc0NvbmZpZy5kZWJ1Zzp0aGlzLnNhc2pz''@;'; put 'put ''Q29uZmlnLnNlcnZlclR5cGU9PT1VLlNlcnZlclR5cGUuU2FzOSYmKEY9bmV3IFYuU0FTOUFwaUNsaWVudChiLHRoaXMuam9ic1BhdGgsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucykpKTooZz1udWxsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlw''@;'; put 'put ''ZS5TYXNWaXlhP2c9dGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbmZpZygpOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXM5JiYoZz10aGlzLnNhczlBcGlDbGllbnQuZ2V0Q29uZmlnKCkpLGI9Zy5zZXJ2ZXJVcmwsWT1nLnJvb3RGb2xkZXJOYW1lKSxj''@;'; put 'put ''ZS5tZW1iZXJzWzBdLm1lbWJlcnMmJmNlLm1lbWJlcnNbMF0ubWVtYmVycy5zb3J0KGZ1bmN0aW9uKHkpe3JldHVybiJmb2xkZXIiPT09eS50eXBlPy0xOjF9KSxbNCx0aGlzLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNlcyhZLGNlLm1lbWJlcnMseCxGLE4pXTtjYXNlIDE6cmV0dXJuIE0uc2Vu''@;'; put 'put ''dCgpLFsyXX19KX0pfSx1ZS5wcm90b3R5cGUuc3RhcnRDb21wdXRlSm9iPWZ1bmN0aW9uKGNlLFksYix4LE4sRixnLEMpe3ZhciBNO3JldHVybiB2b2lkIDA9PT1iJiYoYj17fSksdm9pZCAwPT09ZyYmKGc9ITEpLEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEkodGhp''@;'; put 'put ''cyxmdW5jdGlvbih5KXtpZihiPUsoSyh7fSx0aGlzLnNhc2pzQ29uZmlnKSxiKSx0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJzdGFydENvbXB1dGVKb2IiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLCFiLmNvbnRleHROYW1lKXRocm93IG5ldyBFcnJvcigiQ29udGV4dCBuYW1lIGlzIHVuZGVm''@;'; put 'put ''aW5lZC4gUGxlYXNlIHNldCBhIGBjb250ZXh0TmFtZWAgaW4geW91ciBTQVNqcyBvciBvdmVycmlkZSBjb25maWcuIik7cmV0dXJuWzIsbnVsbD09PShNPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PU0/dm9pZCAwOk0uZXhlY3V0ZUNvbXB1dGVKb2IoY2UsYi5jb250ZXh0TmFt''@;'; put 'put ''ZSxiLmRlYnVnLFkseCwhIU4sITEsRixnLEMpXX0pfSl9LHVlLnByb3RvdHlwZS5mZXRjaExvZ0ZpbGVDb250ZW50PWZ1bmN0aW9uKGNlLFkpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oYil7c3dpdGNoKGIubGFiZWwpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGNlLFkpLnRoZW4oZnVuY3Rpb24oeCl7aWYoIXgpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBpZS5FcnJvclJlc3BvbnNlKCJFcnJvciB3aGlsZSBmZXRjaGluZyBsb2cuIFJlc3BvbnNlIHdhcyBub3QgcHJvdmlkZWQuIikp''@;'; put 'put ''O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoeC5yZXN1bHQpfWNhdGNoKE4pe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgaWUuRXJyb3JSZXNwb25zZSgiRXJyb3Igd2hpbGUgZmV0Y2hpbmcgbG9nLiBUaGUgcmVzdWx0IGlzIG5vdCB2YWxpZC4iLE4pKX19KV07Y2FzZSAxOnJldHVyblsy''@;'; put 'put ''LGIuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZ2V0U2FzUmVxdWVzdHM9ZnVuY3Rpb24oKXtyZXR1cm4gUihbXSx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0UmVxdWVzdHMoKSwhMCkuc29ydChFLmNvbXBhcmVUaW1lc3RhbXBzKX0sdWUucHJvdG90eXBlLmNsZWFyU2FzUmVxdWVzdHM9ZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLnJlcXVlc3RDbGllbnQuY2xlYXJSZXF1ZXN0cygpfSx1ZS5wcm90b3R5cGUuc2V0dXBDb25maWd1cmF0aW9uPWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmx8fCIiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwpaWYodHlw''@;'; put 'put ''ZW9mIGxvY2F0aW9uPCJ1Iil7dmFyIGNlPSIiLmNvbmNhdChsb2NhdGlvbi5wcm90b2NvbCwiLy8iKS5jb25jYXQobG9jYXRpb24uaG9zdG5hbWUpO2xvY2F0aW9uLnBvcnQmJihjZT0iIi5jb25jYXQoY2UsIjoiKS5jb25jYXQobG9jYXRpb24ucG9ydCkpLHRoaXMuc2FzanNDb25maWcuc2Vy''@;'; put 'put ''dmVyVXJsPWNlfWVsc2UgdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9IiI7Ii8iPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwuc2xpY2UoLTEpJiYodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmw9dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwuc2xpY2UoMCwtMSkpLHRoaXMucmVx''@;'; put 'put ''dWVzdENsaWVudD90aGlzLnJlcXVlc3RDbGllbnQuc2V0Q29uZmlnKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpOnRoaXMucmVxdWVzdENsaWVudD1uZXcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJU''@;'; put 'put ''eXBlLlNhc2pzP3RlLlNhc2pzUmVxdWVzdENsaWVudDpxLlJlcXVlc3RDbGllbnQpKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMsdGhpcy5zYXNqc0NvbmZpZy5yZXF1ZXN0SGlzdG9yeUxpbWl0KSx0aGlzLmpvYnNQYXRoPXRo''@;'; put 'put ''aXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXNWaXlhP3RoaXMuc2FzanNDb25maWcucGF0aFNBU1ZpeWE6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhczk/dGhpcy5zYXNqc0NvbmZpZy5wYXRoU0FTOTp0aGlzLnNhc2pzQ29u''@;'; put 'put ''ZmlnLnBhdGhTQVNKUyx0aGlzLmF1dGhNYW5hZ2VyPW5ldyBXLkF1dGhNYW5hZ2VyKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSx0aGlzLnJlcXVlc3RDbGllbnQsdGhpcy5yZXNlbmRXYWl0aW5nUmVxdWVzdHMpLHRoaXMuc2FzanNDb25m''@;'; put 'put ''aWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXNWaXlhJiYodGhpcy5zYXNWaXlhQXBpQ2xpZW50P3RoaXMuc2FzVml5YUFwaUNsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5hcHBMb2MpOnRoaXMuc2FzVml5YUFwaUNsaWVu''@;'; put 'put ''dD1uZXcgai5TQVNWaXlhQXBpQ2xpZW50KHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuYXBwTG9jLHRoaXMuc2FzanNDb25maWcuY29udGV4dE5hbWUsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZGVidWc9dGhpcy5zYXNqc0Nv''@;'; put 'put ''bmZpZy5kZWJ1ZyksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhczkmJih0aGlzLnNhczlBcGlDbGllbnQ/dGhpcy5zYXM5QXBpQ2xpZW50LnNldENvbmZpZyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCk6dGhpcy5zYXM5QXBpQ2xpZW50PW5ldyBWLlNB''@;'; put 'put ''UzlBcGlDbGllbnQodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5qb2JzUGF0aCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKSksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhc2pzJiYodGhpcy5zYXNKU0FwaUNsaWVudHx8KHRo''@;'; put 'put ''aXMuc2FzSlNBcGlDbGllbnQ9bmV3IEcuU0FTanNBcGlDbGllbnQodGhpcy5yZXF1ZXN0Q2xpZW50KSkpLHRoaXMuZmlsZVVwbG9hZGVyPW5ldyBuZS5GaWxlVXBsb2FkZXIodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1Bh''@;'; put 'put ''dGgsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLndlYkpvYkV4ZWN1dG9yPW5ldyBuZS5XZWJKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5qb2JzUGF0aCx0aGlzLnJlcXVlc3RDbGllbnQsdGhpcy5zYXNWaXlh''@;'; put 'put ''QXBpQ2xpZW50KSx0aGlzLnNhc2pzSm9iRXhlY3V0b3I9bmV3IG5lLlNhc2pzSm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5qb2JzUGF0aCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuc2FzOUpvYkV4ZWN1dG9yPW5ldyBuZS5TYXM5Sm9iRXhlY3V0b3IodGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMpLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW5ldyBuZS5Db21wdXRlSm9iRXhl''@;'; put 'put ''Y3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNWaXlhQXBpQ2xpZW50KSx0aGlzLmplc0pvYkV4ZWN1dG9yPW5ldyBuZS5KZXNKb2JFeGVjdXRvcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQpfSx1ZS5wcm90b3R5cGUuY3Jl''@;'; put 'put ''YXRlRm9sZGVyc0FuZFNlcnZpY2VzPWZ1bmN0aW9uKGNlLFksYix4LE4pe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBGPXRoaXM7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihnKXtzd2l0Y2goZy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LCgwLEUuYXN5bmNGb3JF''@;'; put 'put ''YWNoKShZLGZ1bmN0aW9uKEMpe3JldHVybiBKKEYsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24oTSl7c3dpdGNoKE0ubGFiZWwpe2Nhc2UgMDpzd2l0Y2goQy50eXBlKXtjYXNlImZvbGRlciI6cmV0dXJuWzMsMV07Y2FzZSJmaWxlIjpyZXR1cm5bMywz''@;'; put 'put ''XTtjYXNlInNlcnZpY2UiOnJldHVyblszLDVdfXJldHVyblszLDddO2Nhc2UgMTpyZXR1cm5bNCx0aGlzLmNyZWF0ZUZvbGRlcihDLm5hbWUsY2Usdm9pZCAwLGIseCxOKV07Y2FzZSAyOnJldHVybiBNLnNlbnQoKSxbMyw4XTtjYXNlIDM6cmV0dXJuWzQsdGhpcy5jcmVhdGVGaWxlKEMubmFt''@;'; put 'put ''ZSxDLmNvZGUsY2Usdm9pZCAwLGIseCldO2Nhc2UgNDpyZXR1cm4gTS5zZW50KCksWzMsOF07Y2FzZSA1OnJldHVybls0LHRoaXMuY3JlYXRlSm9iRGVmaW5pdGlvbihDLm5hbWUsQy5jb2RlLGNlLHZvaWQgMCxiLHgpXTtjYXNlIDY6cmV0dXJuIE0uc2VudCgpLFszLDhdO2Nhc2UgNzp0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuaWRlbnRpZmllZCBtZW1iZXIgJyIuY29uY2F0KEMubmFtZSwiJyBwcm92aWRlZC4iKSk7Y2FzZSA4OnJldHVybiJmb2xkZXIiPT09Qy50eXBlJiZDLm1lbWJlcnMmJkMubWVtYmVycy5sZW5ndGg/WzQsdGhpcy5jcmVhdGVGb2xkZXJzQW5kU2VydmljZXMoIiIuY29u''@;'; put 'put ''Y2F0KGNlLCIvIikuY29uY2F0KEMubmFtZSksQy5tZW1iZXJzLGIseCxOKV06WzMsMTBdO2Nhc2UgOTpNLnNlbnQoKSxNLmxhYmVsPTEwO2Nhc2UgMTA6cmV0dXJuWzJdfX0pfSl9KV07Y2FzZSAxOnJldHVybiBnLnNlbnQoKSxbMl19fSl9KX0sdWUucHJvdG90eXBlLmlzTWV0aG9kU3VwcG9y''@;'; put 'put ''dGVkPWZ1bmN0aW9uKGNlLFkpe2lmKCF0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGV8fCFZLmluY2x1ZGVzKHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSkpdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgJyIuY29uY2F0KGNlLCInIGlzIG9ubHkgc3VwcG9ydGVkIG9uICIpLmNvbmNhdChZ''@;'; put 'put ''LmpvaW4oIiwgIiksIiBzZXJ2ZXJzLiIpKX0sdWV9KCk7Qi5kZWZhdWx0PWRlfSwzNDY3OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gSz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihVKXtmb3IodmFyIHEs''@;'; put 'put ''dGU9MSxuZT1hcmd1bWVudHMubGVuZ3RoO3RlPG5lO3RlKyspZm9yKHZhciBpZSBpbiBxPWFyZ3VtZW50c1t0ZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsaWUpJiYoVVtpZV09cVtpZV0pO3JldHVybiBVfSxLLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sSj10aGlz''@;'; put 'put ''JiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVSxxLHRlLG5lKXtyZXR1cm4gbmV3KHRlfHwodGU9UHJvbWlzZSkpKGZ1bmN0aW9uKGllLGxlKXtmdW5jdGlvbiBkZShZKXt0cnl7Y2UobmUubmV4dChZKSl9Y2F0Y2goYil7bGUoYil9fWZ1bmN0aW9uIHVlKFkpe3RyeXtjZShuZS50aHJvdyhZ''@;'; put 'put ''KSl9Y2F0Y2goYil7bGUoYil9fWZ1bmN0aW9uIGNlKFkpe3ZhciBiO1kuZG9uZT9pZShZLnZhbHVlKTooYj1ZLnZhbHVlLGIgaW5zdGFuY2VvZiB0ZT9iOm5ldyB0ZShmdW5jdGlvbih4KXt4KGIpfSkpLnRoZW4oZGUsdWUpfWNlKChuZT1uZS5hcHBseShVLHF8fFtdKSkubmV4dCgpKX0pfSxJ''@;'; put 'put ''PXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFUscSl7dmFyIHRlLG5lLGllLGxlLGRlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmllWzBdKXRocm93IGllWzFdO3JldHVybiBpZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBsZT17bmV4dDp1ZSgwKSx0aHJvdzp1''@;'; put 'put ''ZSgxKSxyZXR1cm46dWUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihsZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxsZTtmdW5jdGlvbiB1ZShjZSl7cmV0dXJuIGZ1bmN0aW9uKFkpe3JldHVybiBmdW5jdGlvbihiKXtpZih0ZSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtkZTspdHJ5e2lmKHRlPTEsbmUmJihpZT0yJmJbMF0/bmUucmV0dXJuOmJbMF0/bmUudGhyb3d8fCgoaWU9bmUucmV0dXJuKSYmaWUuY2FsbChuZSksMCk6bmUubmV4dCkmJiEoaWU9aWUuY2FsbChuZSxi''@;'; put 'put ''WzFdKSkuZG9uZSlyZXR1cm4gaWU7c3dpdGNoKG5lPTAsaWUmJihiPVsyJmJbMF0saWUudmFsdWVdKSxiWzBdKXtjYXNlIDA6Y2FzZSAxOmllPWI7YnJlYWs7Y2FzZSA0OnJldHVybiBkZS5sYWJlbCsrLHt2YWx1ZTpiWzFdLGRvbmU6ITF9O2Nhc2UgNTpkZS5sYWJlbCsrLG5lPWJbMV0sYj1b''@;'; put 'put ''MF07Y29udGludWU7Y2FzZSA3OmI9ZGUub3BzLnBvcCgpLGRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChpZT0oaWU9ZGUudHJ5cykubGVuZ3RoPjAmJmllW2llLmxlbmd0aC0xXSl8fDYhPT1iWzBdJiYyIT09YlswXSkpe2RlPTA7Y29udGludWV9aWYoMz09PWJbMF0mJigh''@;'; put 'put ''aWV8fGJbMV0+aWVbMF0mJmJbMV08aWVbM10pKXtkZS5sYWJlbD1iWzFdO2JyZWFrfWlmKDY9PT1iWzBdJiZkZS5sYWJlbDxpZVsxXSl7ZGUubGFiZWw9aWVbMV0saWU9YjticmVha31pZihpZSYmZGUubGFiZWw8aWVbMl0pe2RlLmxhYmVsPWllWzJdLGRlLm9wcy5wdXNoKGIpO2JyZWFrfWll''@;'; put 'put ''WzJdJiZkZS5vcHMucG9wKCksZGUudHJ5cy5wb3AoKTtjb250aW51ZX1iPXEuY2FsbChVLGRlKX1jYXRjaCh4KXtiPVs2LHhdLG5lPTB9ZmluYWxseXt0ZT1pZT0wfWlmKDUmYlswXSl0aHJvdyBiWzFdO3JldHVybnt2YWx1ZTpiWzBdP2JbMV06dm9pZCAwLGRvbmU6ITB9fShbY2UsWV0pfX19''@;'; put 'put ''O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLlNBU2pzQXBpQ2xpZW50PXZvaWQgMDt2YXIgUj1MKDYyMzApLEU9TCgzOTAwKSx6PUwoOTc3OCksaj1MKDU3KSxWPUwoMjQ5KSxHPUwoNzA0KSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gVShxKXt0aGlz''@;'; put 'put ''LnJlcXVlc3RDbGllbnQ9cX1yZXR1cm4gVS5wcm90b3R5cGUuZ2V0QWNjZXNzVG9rZW5Gb3JSZXF1ZXN0PWZ1bmN0aW9uKHEpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybiBxP1s0LCgwLEcuZ2V0VG9rZW5zKSh0aGlzLnJlcXVlc3RDbGllbnQscSxFLlNlcnZlclR5cGUuU2FzanMpXTpbMywyXTtjYXNlIDE6cmV0dXJuWzIsdGUuc2VudCgpLmFjY2Vzc190b2tlbl07Y2FzZSAyOnJldHVyblsyXX19KX0pfSxVLnByb3RvdHlwZS5kZXBsb3k9ZnVuY3Rpb24o''@;'; put 'put ''cSx0ZSxuZSl7cmV0dXJuIEoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGllLGxlO3JldHVybiBJKHRoaXMsZnVuY3Rpb24oZGUpe3N3aXRjaChkZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0QWNjZXNzVG9rZW5Gb3JSZXF1ZXN0KG5lKV07Y2FzZSAxOnJldHVy''@;'; put 'put ''biBpZT1kZS5zZW50KCkscS5hcHBMb2M9cS5hcHBMb2N8fHRlLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9kcml2ZS9kZXBsb3kiLHEsaWUsdm9pZCAwLHt9LHttYXhDb250ZW50TGVuZ3RoOjEvMCxtYXhCb2R5TGVuZ3RoOjEvMH0pXTtjYXNlIDI6cmV0dXJuIGxlPWRl''@;'; put 'put ''LnNlbnQoKS5yZXN1bHQsWzIsUHJvbWlzZS5yZXNvbHZlKGxlKV19fSl9KX0sVS5wcm90b3R5cGUuZGVwbG95WmlwRmlsZT1mdW5jdGlvbihxLHRlKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmUsaWUsbGUsZGUsdWUsY2U7cmV0dXJuIEkodGhpcyxmdW5j''@;'; put 'put ''dGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybiBuZT1MKDI5NzUpLmNyZWF0ZVJlYWRTdHJlYW0sWzQsdGhpcy5nZXRBY2Nlc3NUb2tlbkZvclJlcXVlc3QodGUpXTtjYXNlIDE6cmV0dXJuIGllPVkuc2VudCgpLFs0LG5lKHEpXTtjYXNlIDI6cmV0dXJuIGxlPVkuc2VudCgp''@;'; put 'put ''LChkZT1uZXcgUikuYXBwZW5kKCJmaWxlIixsZSksdWU9Im11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIuY29uY2F0KGRlLmdldEJvdW5kYXJ5KCkpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9kcml2ZS9kZXBsb3kvdXBsb2FkIixkZSxpZSx1ZSx7fSx7bWF4''@;'; put 'put ''Q29udGVudExlbmd0aDoxLzAsbWF4Qm9keUxlbmd0aDoxLzB9KV07Y2FzZSAzOnJldHVybiBjZT1ZLnNlbnQoKS5yZXN1bHQsWzIsUHJvbWlzZS5yZXNvbHZlKGNlKV19fSl9KX0sVS5wcm90b3R5cGUuZXhlY3V0ZUpvYj1mdW5jdGlvbihxLHRlLG5lKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2''@;'; put 'put ''b2lkIDAsZnVuY3Rpb24oKXt2YXIgaWUsbGUsZGU7cmV0dXJuIEkodGhpcyxmdW5jdGlvbih1ZSl7c3dpdGNoKHVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGllPW5lP25lLmFjY2Vzc190b2tlbjp2b2lkIDAsbGU9cS5fcHJvZ3JhbS5zdGFydHNXaXRoKCIvIik/cS5fcHJvZ3JhbToiIi5jb25j''@;'; put 'put ''YXQodGUsIi8iKS5jb25jYXQocS5fcHJvZ3JhbSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNBU2pzQXBpL3N0cC9leGVjdXRlIixLKEsoe19kZWJ1ZzoxMzF9LHEpLHtfcHJvZ3JhbTpsZX0pLGllKV07Y2FzZSAxOnJldHVyblsyLHtyZXN1bHQ6KGRlPXVlLnNlbnQoKSkucmVzdWx0''@;'; put 'put ''LGxvZzpkZS5sb2d9XX19KX0pfSxVLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKHEsdGUsbmUpe3JldHVybiB2b2lkIDA9PT10ZSYmKHRlPSJzYXMiKSxKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpZSxsZTtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKGRlKXtz''@;'; put 'put ''d2l0Y2goZGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldEFjY2Vzc1Rva2VuRm9yUmVxdWVzdChuZSldO2Nhc2UgMTpyZXR1cm4gaWU9ZGUuc2VudCgpLGxlPXtsb2c6IiJ9LFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9jb2RlL2V4ZWN1dGUiLHtjb2RlOnEs''@;'; put 'put ''cnVuVGltZTp0ZX0saWUpLnRoZW4oZnVuY3Rpb24odWUpe3ZhciBZPXVlLnByaW50T3V0cHV0LGI9dWUucmVzdWx0O2xlLmxvZz11ZS5sb2csWSYmKGxlLnByaW50T3V0cHV0PVkpLGImJihsZS53ZWJvdXQ9Yil9KS5jYXRjaChmdW5jdGlvbih1ZSl7dGhyb3coMCx6LnByZWZpeE1lc3NhZ2Up''@;'; put 'put ''KHVlLCJFcnJvciB3aGlsZSBzZW5kaW5nIFBPU1QgcmVxdWVzdCB0byBleGVjdXRlIGNvZGUuICIpfSldO2Nhc2UgMjpyZXR1cm4gZGUuc2VudCgpLFsyLGxlXX19KX0pfSxVLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihxLHRlKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGZ1bmN0aW9uKG5lKXtyZXR1cm5bMiwoMCxqLmdldEFjY2Vzc1Rva2VuRm9yU2FzanMpKHRoaXMucmVxdWVzdENsaWVudCxxLHRlKV19KX0pfSxVLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKHEpe3JldHVybiBKKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsZnVuY3Rpb24odGUpe3JldHVyblsyLCgwLFYucmVmcmVzaFRva2Vuc0ZvclNhc2pzKSh0aGlzLnJlcXVlc3RDbGllbnQscSldfSl9KX0sVX0oKTtCLlNBU2pzQXBpQ2xpZW50PVd9LDY5MDM6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgSz1MKDQxNTUpLEo9TCg1MTA4KSxJPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihHLFcsVSxxKXtyZXR1cm4gbmV3KFV8fChVPVByb21pc2UpKShmdW5jdGlvbih0ZSxuZSl7ZnVuY3Rpb24gaWUodWUpe3RyeXtkZShxLm5leHQodWUpKX1jYXRjaChjZSl7bmUo''@;'; put 'put ''Y2UpfX1mdW5jdGlvbiBsZSh1ZSl7dHJ5e2RlKHEudGhyb3codWUpKX1jYXRjaChjZSl7bmUoY2UpfX1mdW5jdGlvbiBkZSh1ZSl7dmFyIGNlO3VlLmRvbmU/dGUodWUudmFsdWUpOihjZT11ZS52YWx1ZSxjZSBpbnN0YW5jZW9mIFU/Y2U6bmV3IFUoZnVuY3Rpb24oWSl7WShjZSl9KSkudGhl''@;'; put 'put ''bihpZSxsZSl9ZGUoKHE9cS5hcHBseShHLFd8fFtdKSkubmV4dCgpKX0pfSxSPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEcsVyl7dmFyIFUscSx0ZSxuZSxpZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ0ZVswXSl0aHJvdyB0ZVsxXTtyZXR1cm4gdGVbMV19LHRy''@;'; put 'put ''eXM6W10sb3BzOltdfTtyZXR1cm4gbmU9e25leHQ6bGUoMCksdGhyb3c6bGUoMSkscmV0dXJuOmxlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYobmVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbmU7ZnVuY3Rpb24gbGUoZGUpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbih1ZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtpZihVKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2llOyl0cnl7aWYoVT0xLHEmJih0ZT0yJmNlWzBdP3EucmV0dXJuOmNlWzBdP3EudGhyb3d8fCgodGU9cS5yZXR1cm4pJiZ0''@;'; put 'put ''ZS5jYWxsKHEpLDApOnEubmV4dCkmJiEodGU9dGUuY2FsbChxLGNlWzFdKSkuZG9uZSlyZXR1cm4gdGU7c3dpdGNoKHE9MCx0ZSYmKGNlPVsyJmNlWzBdLHRlLnZhbHVlXSksY2VbMF0pe2Nhc2UgMDpjYXNlIDE6dGU9Y2U7YnJlYWs7Y2FzZSA0OnJldHVybiBpZS5sYWJlbCsrLHt2YWx1ZTpj''@;'; put 'put ''ZVsxXSxkb25lOiExfTtjYXNlIDU6aWUubGFiZWwrKyxxPWNlWzFdLGNlPVswXTtjb250aW51ZTtjYXNlIDc6Y2U9aWUub3BzLnBvcCgpLGllLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh0ZT0odGU9aWUudHJ5cykubGVuZ3RoPjAmJnRlW3RlLmxlbmd0aC0xXSl8fDYhPT1j''@;'; put 'put ''ZVswXSYmMiE9PWNlWzBdKSl7aWU9MDtjb250aW51ZX1pZigzPT09Y2VbMF0mJighdGV8fGNlWzFdPnRlWzBdJiZjZVsxXTx0ZVszXSkpe2llLmxhYmVsPWNlWzFdO2JyZWFrfWlmKDY9PT1jZVswXSYmaWUubGFiZWw8dGVbMV0pe2llLmxhYmVsPXRlWzFdLHRlPWNlO2JyZWFrfWlmKHRlJiZp''@;'; put 'put ''ZS5sYWJlbDx0ZVsyXSl7aWUubGFiZWw9dGVbMl0saWUub3BzLnB1c2goY2UpO2JyZWFrfXRlWzJdJiZpZS5vcHMucG9wKCksaWUudHJ5cy5wb3AoKTtjb250aW51ZX1jZT1XLmNhbGwoRyxpZSl9Y2F0Y2goWSl7Y2U9WzYsWV0scT0wfWZpbmFsbHl7VT10ZT0wfWlmKDUmY2VbMF0pdGhyb3cg''@;'; put 'put ''Y2VbMV07cmV0dXJue3ZhbHVlOmNlWzBdP2NlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2RlLHVlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU2Vzc2lvbk1hbmFnZXI9dm9pZCAwO3ZhciBFPUwoMTM5NSksej1MKDU5MjgpLGo9TCg5Nzc4''@;'; put 'put ''KSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRyhXLFUscSl7dGhpcy5zZXJ2ZXJVcmw9Vyx0aGlzLmNvbnRleHROYW1lPVUsdGhpcy5yZXF1ZXN0Q2xpZW50PXEsdGhpcy5sb2dnZWRFcnJvcnM9W10sdGhpcy5zZXNzaW9ucz1bXSx0aGlzLmN1cnJlbnRDb250ZXh0PW51bGwsdGhpcy5zZXR0aW5n''@;'; put 'put ''Q29udGV4dD0hMSx0aGlzLl9kZWJ1Zz0hMSx0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGU9e3ByaW50ZWQ6ITEsc3RhdGU6IiJ9LFcmJigwLHouaXNVcmwpKFcpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsImRlYnVnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2RlYnVnfSxzZXQ6ZnVuY3Rpb24oVyl7dGhpcy5fZGVidWc9V30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxHLnByb3RvdHlwZS5pc1Nlc3Npb25WYWxpZD1mdW5jdGlvbihXKXtpZighVylyZXR1cm4hMTt2YXIgVT0oKG5ldyBEYXRlKS5nZXRUaW1lKCktbmV3IERhdGUo''@;'; put 'put ''Vy5jcmVhdGlvblRpbWVTdGFtcCkuZ2V0VGltZSgpKS8xZTM7cmV0dXJuISghVy5hdHRyaWJ1dGVzfHxVPj1XLmF0dHJpYnV0ZXMuc2Vzc2lvbkluYWN0aXZlVGltZW91dCl9LEcucHJvdG90eXBlLnJlbW92ZVNlc3Npb25Gcm9tUG9vbD1mdW5jdGlvbihXKXt0aGlzLnNlc3Npb25zPXRoaXMu''@;'; put 'put ''c2Vzc2lvbnMuZmlsdGVyKGZ1bmN0aW9uKFUpe3JldHVybiBVLmlkIT09Vy5pZH0pfSxHLnByb3RvdHlwZS5yZW1vdmVFeHBpcmVkU2Vzc2lvbnM9ZnVuY3Rpb24oKXt2YXIgVz10aGlzO3RoaXMuc2Vzc2lvbnM9dGhpcy5zZXNzaW9ucy5maWx0ZXIoZnVuY3Rpb24oVSl7cmV0dXJuIFcuaXNT''@;'; put 'put ''ZXNzaW9uVmFsaWQoVSl9KX0sRy5wcm90b3R5cGUudGhyb3dFcnJvcnM9ZnVuY3Rpb24oVyxVKXt0aHJvdyBVPygwLGoucHJlZml4TWVzc2FnZSkobmV3IEVycm9yKFcuam9pbigiLiAiKSksVSk6bmV3IEVycm9yKFcubWFwKGZ1bmN0aW9uKHEpe3JldHVybiBxLm1lc3NhZ2U/cS5tZXNzYWdl''@;'; put 'put ''OnF9KS5qb2luKCIuICIpKX0sRy5wcm90b3R5cGUuZ2V0U2Vzc2lvbj1mdW5jdGlvbihXKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVSxxLHRlLG5lLGllPXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihsZSl7c3dpdGNoKGxlLmxhYmVsKXtjYXNlIDA6''@;'; put 'put ''cmV0dXJuIFU9W10scT0hMSx0ZT1mdW5jdGlvbigpe1UubGVuZ3RoJiYhcSYmKHE9ITAsaWUudGhyb3dFcnJvcnMoVSkpfSx0aGlzLnJlbW92ZUV4cGlyZWRTZXNzaW9ucygpLHRoaXMuc2Vzc2lvbnMubGVuZ3RoPyh0aGlzLnJlbW92ZVNlc3Npb25Gcm9tUG9vbChuZT10aGlzLnNlc3Npb25z''@;'; put 'put ''WzBdKSx0aGlzLmNyZWF0ZVNlc3Npb25zKFcpLmNhdGNoKGZ1bmN0aW9uKGRlKXtVLnB1c2goZGUpfSksdGhpcy5jcmVhdGVBbmRXYWl0Rm9yU2Vzc2lvbihXKS5jYXRjaChmdW5jdGlvbihkZSl7VS5wdXNoKGRlKX0pLHRlKCksWzIsbmVdKTpbMywxXTtjYXNlIDE6cmV0dXJuIHRoaXMuY3Jl''@;'; put 'put ''YXRlU2Vzc2lvbnMoVykuY2F0Y2goZnVuY3Rpb24oZGUpe1UucHVzaChkZSl9KSxbNCx0aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFcpLmNhdGNoKGZ1bmN0aW9uKGRlKXtVLnB1c2goZGUpfSldO2Nhc2UgMjpyZXR1cm4gbGUuc2VudCgpLHRoaXMucmVtb3ZlRXhwaXJlZFNlc3Npb25z''@;'; put 'put ''KCksbmU9dGhpcy5zZXNzaW9ucy5wb3AoKSx0aGlzLnJlbW92ZVNlc3Npb25Gcm9tUG9vbChuZSksdGUoKSxbMixuZV19fSl9KX0sRy5wcm90b3R5cGUuZ2V0RXJyb3JNZXNzYWdlPWZ1bmN0aW9uKFcsVSxxKXtyZXR1cm4iIi5jb25jYXQocSwiIHJlcXVlc3QgdG8gIikuY29uY2F0KFUsIiBm''@;'; put 'put ''YWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiKS5jb25jYXQoVy5yZXNwb25zZS5zdGF0dXN8fCJ1bmtub3duIiwiLiAiKStXLnJlc3BvbnNlLmRhdGEubWVzc2FnZXx8IiJ9LEcucHJvdG90eXBlLmNsZWFyU2Vzc2lvbj1mdW5jdGlvbihXLFUpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBxLHRlPXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHE9Ii9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KFcpLFs0LHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUocSxVKS50aGVuKGZ1bmN0aW9uKCl7''@;'; put 'put ''dGUuc2Vzc2lvbnM9dGUuc2Vzc2lvbnMuZmlsdGVyKGZ1bmN0aW9uKGllKXtyZXR1cm4gaWUuaWQhPT1XfSl9KS5jYXRjaChmdW5jdGlvbihpZSl7dGhyb3coMCxqLnByZWZpeE1lc3NhZ2UpKHRlLmdldEVycm9yTWVzc2FnZShpZSxxLCJERUxFVEUiKSwiRXJyb3Igd2hpbGUgZGVsZXRpbmcg''@;'; put 'put ''c2Vzc2lvbi4gIil9KV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKV19fSl9KX0sRy5wcm90b3R5cGUuY3JlYXRlU2Vzc2lvbnM9ZnVuY3Rpb24oVyl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFUscT10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24odGUp''@;'; put 'put ''e3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBVPVtdLHRoaXMuc2Vzc2lvbnMubGVuZ3RoP1szLDJdOls0LCgwLHouYXN5bmNGb3JFYWNoKShuZXcgQXJyYXkoMSksZnVuY3Rpb24oKXtyZXR1cm4gSShxLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0''@;'; put 'put ''aW9uKG5lKXtzd2l0Y2gobmUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFcpLmNhdGNoKGZ1bmN0aW9uKGllKXtVLnB1c2goaWUpfSldO2Nhc2UgMTpyZXR1cm4gbmUuc2VudCgpLFsyXX19KX0pfSldO2Nhc2UgMTp0ZS5zZW50KCksdGUubGFi''@;'; put 'put ''ZWw9MjtjYXNlIDI6cmV0dXJuIFUubGVuZ3RoJiZ0aGlzLnRocm93RXJyb3JzKFUsIkVycm9yIHdoaWxlIGNyZWF0aW5nIHNlc3Npb24uICIpLFsyXX19KX0pfSxHLnByb3RvdHlwZS53YWl0Rm9yQ3VycmVudENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgVz10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oVSl7cmV0dXJuWzIsbmV3IFByb21pc2UoZnVuY3Rpb24ocSl7dmFyIHRlPXNldEludGVydmFsKGZ1bmN0aW9uKCl7Vy5jdXJyZW50Q29udGV4dCYmKFcuc2V0dGluZ0NvbnRleHQ9ITEsY2xlYXJJbnRlcnZhbCh0''@;'; put 'put ''ZSkscSgpKX0sMTAwKX0pXX0pfSl9LEcucHJvdG90eXBlLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uPWZ1bmN0aW9uKFcpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBVLHEsdGUsaWU9dGhpcztyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKGxlKXtzd2l0Y2gobGUu''@;'; put 'put ''bGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jdXJyZW50Q29udGV4dD9bMyw0XTp0aGlzLnNldHRpbmdDb250ZXh0P1szLDJdOls0LHRoaXMuc2V0Q3VycmVudENvbnRleHQoVyldO2Nhc2UgMTpyZXR1cm4gbGUuc2VudCgpLFszLDRdO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLndhaXRGb3JDdXJy''@;'; put 'put ''ZW50Q29udGV4dCgpXTtjYXNlIDM6bGUuc2VudCgpLGxlLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBVPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KHRoaXMuY3VycmVudENvbnRleHQuaWQsIi9zZXNzaW9ucyIpLFs0LHRoaXMucmVxdWVzdENs''@;'; put 'put ''aWVudC5wb3N0KFUse30sVykuY2F0Y2goZnVuY3Rpb24oZGUpe3Rocm93KDAsai5wcmVmaXhNZXNzYWdlKShpZS5nZXRFcnJvck1lc3NhZ2UoZGUsVSwiUE9TVCIpLCJFcnJvciB3aGlsZSBjcmVhdGluZyBzZXNzaW9uLiAiKX0pXTtjYXNlIDU6cmV0dXJuIHE9bGUuc2VudCgpLFs0LHRoaXMu''@;'; put 'put ''d2FpdEZvclNlc3Npb24odGU9cS5yZXN1bHQscS5ldGFnLFcpXTtjYXNlIDY6cmV0dXJuIGxlLnNlbnQoKSx0aGlzLnNlc3Npb25zLnB1c2godGUpLFsyLHRlXX19KX0pfSxHLnByb3RvdHlwZS5zZXRDdXJyZW50Q29udGV4dD1mdW5jdGlvbihXKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXt2YXIgVSxxLG5lLGllPXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihsZSl7c3dpdGNoKGxlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuY3VycmVudENvbnRleHQ/WzMsMl06KFU9IiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cz9s''@;'; put 'put ''aW1pdD0xMDAwMCIpLHRoaXMuc2V0dGluZ0NvbnRleHQ9ITAsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChVLFcpLmNhdGNoKGZ1bmN0aW9uKGRlKXt0aHJvdygwLGoucHJlZml4TWVzc2FnZSkoaWUuZ2V0RXJyb3JNZXNzYWdlKGRlLFUsIkdFVCIpLCJFcnJvciB3aGlsZSBnZXR0aW5nIGxp''@;'; put 'put ''c3Qgb2YgY29udGV4dHMuICIpfSldKTtjYXNlIDE6aWYocT1sZS5zZW50KCkucmVzdWx0LCEobmU9KHEmJnEuaXRlbXMmJnEuaXRlbXMubGVuZ3RoP3EuaXRlbXM6W10pLmZpbmQoZnVuY3Rpb24oZGUpe3JldHVybiBkZS5uYW1lPT09aWUuY29udGV4dE5hbWV9KSkpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJUaGUgY29udGV4dCAnIi5jb25jYXQodGhpcy5jb250ZXh0TmFtZSwiJyB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIgIikuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIuIikpO3RoaXMuY3VycmVudENvbnRleHQ9bmUsUHJvbWlzZS5yZXNvbHZlKCksbGUubGFiZWw9MjtjYXNlIDI6cmV0''@;'; put 'put ''dXJuWzJdfX0pfSl9LEcucHJvdG90eXBlLndhaXRGb3JTZXNzaW9uPWZ1bmN0aW9uKFcsVSxxKXt2YXIgdGU7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5lLGllLGxlLGRlLHVlLFksYjtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVs''@;'; put 'put ''KXtjYXNlIDA6cmV0dXJuIG5lPUsubG9nZ2VyfHxKLGllPVcuc3RhdGUsbGU9Vy5saW5rcy5maW5kKGZ1bmN0aW9uKE4pe3JldHVybiJzdGF0ZSI9PT1OLnJlbH0pLCJwZW5kaW5nIiE9PWllJiYicnVubmluZyIhPT1pZSYmIiIhPT1pZT9bMyw2XTpsZT8odGhpcy5kZWJ1ZyYmIXRoaXMucHJp''@;'; put 'put ''bnRlZFNlc3Npb25TdGF0ZS5wcmludGVkJiYobmUuaW5mbygiUG9sbGluZzogIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwrbGUuaHJlZikpLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSEwKSxkZT0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChsZS5ocmVmLCI/d2Fp''@;'; put 'put ''dD0zMCIpLFs0LHRoaXMuZ2V0U2Vzc2lvblN0YXRlKGRlLFUscSkuY2F0Y2goZnVuY3Rpb24oTil7dGhyb3coMCxqLnByZWZpeE1lc3NhZ2UpKE4sIkVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHNlc3Npb24uICIpfSldKTpbMyw0XTtjYXNlIDE6cmV0dXJuIHVlPXguc2VudCgpLFk9dWUucmVz''@;'; put 'put ''cG9uc2VTdGF0dXMsaWU9dWUucmVzdWx0LnRyaW0oKSx0aGlzLmRlYnVnJiZ0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGUuc3RhdGUhPT1pZSYmKG5lLmluZm8oIkN1cnJlbnQgc2Vzc2lvbiBzdGF0ZSBpcyAnIi5jb25jYXQoaWUsIiciKSksdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnN0YXRl''@;'; put 'put ''PWllLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSExKSxpZT9bMywzXTooYj1uZXcgRS5Ob1Nlc3Npb25TdGF0ZUVycm9yKFksdGhpcy5zZXJ2ZXJVcmwrbGUuaHJlZixudWxsPT09KHRlPVcubGlua3MuZmluZChmdW5jdGlvbihOKXtyZXR1cm4ibG9nIj09PU4ucmVsfSkpfHx2''@;'; put 'put ''b2lkIDA9PT10ZT92b2lkIDA6dGUuaHJlZiksdGhpcy5sb2dnZWRFcnJvcnMuZmluZChmdW5jdGlvbihOKXtyZXR1cm4gTi5zZXJ2ZXJSZXNwb25zZVN0YXR1cz09PWIuc2VydmVyUmVzcG9uc2VTdGF0dXN9KXx8KHRoaXMubG9nZ2VkRXJyb3JzLnB1c2goYiksbmUuaW5mbyhiLm1lc3NhZ2Up''@;'; put 'put ''KSxbNCx0aGlzLndhaXRGb3JTZXNzaW9uKFcsVSxxKV0pO2Nhc2UgMjpyZXR1cm5bMix4LnNlbnQoKV07Y2FzZSAzOmNhc2UgNjpyZXR1cm4gdGhpcy5sb2dnZWRFcnJvcnM9W10sWzIsaWVdO2Nhc2UgNDp0aHJvdyJFcnJvciB3aGlsZSBnZXR0aW5nIHNlc3Npb24gc3RhdGUgbGluay4gIjtj''@;'; put 'put ''YXNlIDU6cmV0dXJuWzMsN107Y2FzZSA3OnJldHVyblsyXX19KX0pfSxHLnByb3RvdHlwZS5nZXRTZXNzaW9uU3RhdGU9ZnVuY3Rpb24oVyxVLHEpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0ZT10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24obmUpe3N3''@;'; put 'put ''aXRjaChuZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoVyxxLCJ0ZXh0L3BsYWluIix7IklmLU5vbmUtTWF0Y2giOlV9KS50aGVuKGZ1bmN0aW9uKGllKXtyZXR1cm57cmVzdWx0OmllLnJlc3VsdCxyZXNwb25zZVN0YXR1czppZS5zdGF0dXN9fSkuY2F0''@;'; put 'put ''Y2goZnVuY3Rpb24oaWUpe3Rocm93KDAsai5wcmVmaXhNZXNzYWdlKSh0ZS5nZXRFcnJvck1lc3NhZ2UoaWUsVywiR0VUIiksIkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiBzdGF0ZS4gIil9KV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKV19fSl9KX0sRy5wcm90b3R5cGUuZ2V0VmFy''@;'; put 'put ''aWFibGU9ZnVuY3Rpb24oVyxVLHEpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0ZSxuZT10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oaWUpe3N3aXRjaChpZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0ZT0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9j''@;'; put 'put ''b21wdXRlL3Nlc3Npb25zLyIpLmNvbmNhdChXLCIvdmFyaWFibGVzLyIpLmNvbmNhdChVKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHRlLHEpLmNhdGNoKGZ1bmN0aW9uKGxlKXt0aHJvdygwLGoucHJlZml4TWVzc2FnZSkobmUuZ2V0RXJyb3JNZXNzYWdlKGxlLHRlLCJHRVQiKSwiRXJy''@;'; put 'put ''b3Igd2hpbGUgZmV0Y2hpbmcgc2Vzc2lvbiB2YXJpYWJsZSAnIi5jb25jYXQoVSwiJy4gIikpfSldO2Nhc2UgMTpyZXR1cm5bMixpZS5zZW50KCldfX0pfSl9LEd9KCk7Qi5TZXNzaW9uTWFuYWdlcj1WfSw1NDAxOmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KSxK''@;'; put 'put ''PUwoNTEwOCksST10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBJPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKG5lKXtmb3IodmFyIGllLGxlPTEsZGU9YXJndW1lbnRzLmxlbmd0aDtsZTxkZTtsZSsrKWZvcih2YXIgdWUgaW4gaWU9YXJndW1lbnRzW2xlXSlPYmplY3Qu''@;'; put 'put ''cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaWUsdWUpJiYobmVbdWVdPWllW3VlXSk7cmV0dXJuIG5lfSxJLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sUj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24obmUsaWUsbGUsZGUpe3JldHVybiBuZXcobGV8fChsZT1Qcm9taXNlKSko''@;'; put 'put ''ZnVuY3Rpb24odWUsY2Upe2Z1bmN0aW9uIFkoTil7dHJ5e3goZGUubmV4dChOKSl9Y2F0Y2goRil7Y2UoRil9fWZ1bmN0aW9uIGIoTil7dHJ5e3goZGUudGhyb3coTikpfWNhdGNoKEYpe2NlKEYpfX1mdW5jdGlvbiB4KE4pe3ZhciBGO04uZG9uZT91ZShOLnZhbHVlKTooRj1OLnZhbHVlLEYg''@;'; put 'put ''aW5zdGFuY2VvZiBsZT9GOm5ldyBsZShmdW5jdGlvbihnKXtnKEYpfSkpLnRoZW4oWSxiKX14KChkZT1kZS5hcHBseShuZSxpZXx8W10pKS5uZXh0KCkpfSl9LEU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24obmUsaWUpe3ZhciBsZSxkZSx1ZSxjZSxZPXtsYWJlbDowLHNlbnQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtpZigxJnVlWzBdKXRocm93IHVlWzFdO3JldHVybiB1ZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBjZT17bmV4dDpiKDApLHRocm93OmIoMSkscmV0dXJuOmIoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihjZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXN9KSxjZTtmdW5jdGlvbiBiKHgpe3JldHVybiBmdW5jdGlvbihOKXtyZXR1cm4gZnVuY3Rpb24oRil7aWYobGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7WTspdHJ5e2lmKGxlPTEsZGUmJih1ZT0yJkZb''@;'; put 'put ''MF0/ZGUucmV0dXJuOkZbMF0/ZGUudGhyb3d8fCgodWU9ZGUucmV0dXJuKSYmdWUuY2FsbChkZSksMCk6ZGUubmV4dCkmJiEodWU9dWUuY2FsbChkZSxGWzFdKSkuZG9uZSlyZXR1cm4gdWU7c3dpdGNoKGRlPTAsdWUmJihGPVsyJkZbMF0sdWUudmFsdWVdKSxGWzBdKXtjYXNlIDA6Y2FzZSAx''@;'; put 'put ''OnVlPUY7YnJlYWs7Y2FzZSA0OnJldHVybiBZLmxhYmVsKysse3ZhbHVlOkZbMV0sZG9uZTohMX07Y2FzZSA1OlkubGFiZWwrKyxkZT1GWzFdLEY9WzBdO2NvbnRpbnVlO2Nhc2UgNzpGPVkub3BzLnBvcCgpLFkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHVlPSh1ZT1ZLnRy''@;'; put 'put ''eXMpLmxlbmd0aD4wJiZ1ZVt1ZS5sZW5ndGgtMV0pfHw2IT09RlswXSYmMiE9PUZbMF0pKXtZPTA7Y29udGludWV9aWYoMz09PUZbMF0mJighdWV8fEZbMV0+dWVbMF0mJkZbMV08dWVbM10pKXtZLmxhYmVsPUZbMV07YnJlYWt9aWYoNj09PUZbMF0mJlkubGFiZWw8dWVbMV0pe1kubGFiZWw9''@;'; put 'put ''dWVbMV0sdWU9RjticmVha31pZih1ZSYmWS5sYWJlbDx1ZVsyXSl7WS5sYWJlbD11ZVsyXSxZLm9wcy5wdXNoKEYpO2JyZWFrfXVlWzJdJiZZLm9wcy5wb3AoKSxZLnRyeXMucG9wKCk7Y29udGludWV9Rj1pZS5jYWxsKG5lLFkpfWNhdGNoKGcpe0Y9WzYsZ10sZGU9MH1maW5hbGx5e2xlPXVl''@;'; put 'put ''PTB9aWYoNSZGWzBdKXRocm93IEZbMV07cmV0dXJue3ZhbHVlOkZbMF0/RlsxXTp2b2lkIDAsZG9uZTohMH19KFt4LE5dKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5leGVjdXRlU2NyaXB0PXZvaWQgMDt2YXIgej1MKDc3NTcpLGo9TCg5''@;'; put 'put ''Nzc4KSxWPUwoMzYwNyksRz1MKDcwNCksVz1MKDU5MjgpLFU9TCg3MTQpLHE9TCgxMzQzKSx0ZT1MKDY0OTYpO0IuZXhlY3V0ZVNjcmlwdD1mdW5jdGlvbiBuZShpZSxsZSxkZSx1ZSxjZSxZLGIseCxOLEYsZyxDLE0seSl7dmFyIHAsUztyZXR1cm4gdm9pZCAwPT09eCYmKHg9bnVsbCksdm9p''@;'; put 'put ''ZCAwPT09TiYmKE49ITEpLHZvaWQgMD09PUYmJihGPSExKSx2b2lkIDA9PT1nJiYoZz0hMCksdm9pZCAwPT09TSYmKE09ITEpLFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFEscmUsZmUsbWUsa2UsVGUsUGUsRmUsTmUsTGUsQmUsSGUsUWUsbXQsS2Usd2UsSWUsT2UsZXQs''@;'; put 'put ''bnQscWUsaHQsRWUsRGU9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKCRlKXtzd2l0Y2goJGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gUT0oYnx8e30pLmFjY2Vzc190b2tlbixiP1s0LCgwLEcuZ2V0VG9rZW5zKShpZSxiKV06WzMsMl07Y2FzZSAxOlE9JGUuc2VudCgpLmFjY2Vzc190b2tl''@;'; put 'put ''biwkZS5sYWJlbD0yO2Nhc2UgMjpyZT1LLmxvZ2dlcnx8SiwkZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gJGUudHJ5cy5wdXNoKFszLDE5LCwyMF0pLGZlPXZvaWQgMCxbNCxsZS5nZXRTZXNzaW9uKFEpLmNhdGNoKGZ1bmN0aW9uKGF0KXt0aHJvdygwLGoucHJlZml4TWVzc2FnZSkoYXQsIkVy''@;'; put 'put ''cm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbi4gIil9KV07Y2FzZSA0OnJldHVybiBtZT0kZS5zZW50KCksZmU9bWUuaWQsTT9bNCxsZS5nZXRWYXJpYWJsZShmZSwiU1lTSk9CSUQiLFEpLmNhdGNoKGZ1bmN0aW9uKGF0KXt0aHJvdygwLGoucHJlZml4TWVzc2FnZSkoYXQsIkVycm9yIHdoaWxl''@;'; put 'put ''IGdldHRpbmcgc2Vzc2lvbiB2YXJpYWJsZS4gIil9KV06WzMsNl07Y2FzZSA1OihrZT0kZS5zZW50KCkucmVzdWx0KSYma2UudmFsdWUmJihUZT1kZT91ZS5zcGxpdChkZSkuam9pbigiIikucmVwbGFjZSgvXlwvLywiIik6dWUsKEsubG9nZ2VyfHxKKS5pbmZvKCJUcmlnZ2VyZWQgJyIuY29u''@;'; put 'put ''Y2F0KFRlLCInIHdpdGggUElEICIpLmNvbmNhdChrZS52YWx1ZSwiIGF0ICIpLmNvbmNhdCgoMCx6LnRpbWVzdGFtcFRvWVlZWU1NRERISE1NU1MpKCkpKSksJGUubGFiZWw9NjtjYXNlIDY6cmV0dXJuIFBlPXtfY29udGV4dE5hbWU6WSxfT01JVEpTT05MSVNUSU5HOiEwLF9PTUlUSlNPTkxP''@;'; put 'put ''RzohMCxfT01JVFNFU1NJT05SRVNVTFRTOiEwLF9PTUlUVEVYVExJU1RJTkc6ITAsX09NSVRURVhUTE9HOiEwfSxOJiYoUGUuX09NSVRURVhUTE9HPSExLFBlLl9PTUlUU0VTU0lPTlJFU1VMVFM9ITEpLEZlPXZvaWQgMCwoMCxXLmlzUmVsYXRpdmVQYXRoKSh1ZSk/RmU9ImV4ZWMtIi5jb25j''@;'; put 'put ''YXQodWUuaW5jbHVkZXMoIi8iKT91ZS5zcGxpdCgiLyIpWzFdOnVlKTooTmU9dWUuc3BsaXQoIi8iKSxGZT1OZS5wb3AoKSksTGU9e1NZU19KRVNfSk9CX1VSSToiIixfcHJvZ3JhbTooMCxXLmlzUmVsYXRpdmVQYXRoKSh1ZSk/ZGUrIi8iK3VlOnVlfSx5JiYoTGU9SShJKHt9LExlKSx5KSks''@;'; put 'put ''TiYmKExlPUkoSSh7fSxMZSkse19ERUJVRzoxMzF9KSksQmU9W10seD9KU09OLnN0cmluZ2lmeSh4KS5pbmNsdWRlcygiOyIpP1s0LCgwLHRlLnVwbG9hZFRhYmxlcykoaWUseCxRKS5jYXRjaChmdW5jdGlvbihhdCl7dGhyb3coMCxqLnByZWZpeE1lc3NhZ2UpKGF0LCJFcnJvciB3aGlsZSB1''@;'; put 'put ''cGxvYWRpbmcgdGFibGVzLiAiKX0pXTpbMyw4XTpbMyw5XTtjYXNlIDc6cmV0dXJuIEJlPSRlLnNlbnQoKSxMZS5fd2ViaW5fZmlsZV9jb3VudD1CZS5sZW5ndGgsQmUuZm9yRWFjaChmdW5jdGlvbihhdCxjdCl7TGVbIl93ZWJpbl9maWxldXJpIi5jb25jYXQoY3QrMSldPSIvZmlsZXMvZmls''@;'; put 'put ''ZXMvIi5jb25jYXQoYXQuZmlsZS5pZCksTGVbIl93ZWJpbl9uYW1lIi5jb25jYXQoY3QrMSldPWF0LnRhYmxlTmFtZX0pLFszLDldO2Nhc2UgODpMZT1JKEkoe30sTGUpLCgwLFUuZm9ybWF0RGF0YUZvclJlcXVlc3QpKHgpKSwkZS5sYWJlbD05O2Nhc2UgOTpyZXR1cm4gSGU9e25hbWU6RmUs''@;'; put 'put ''ZGVzY3JpcHRpb246IlBvd2VyZWQgYnkgU0FTanMiLGNvZGU6Y2UsdmFyaWFibGVzOkxlLGFyZ3VtZW50czpQZX0sWzQsaWUucG9zdCgiL2NvbXB1dGUvc2Vzc2lvbnMvIi5jb25jYXQoZmUsIi9qb2JzIiksSGUsUSkuY2F0Y2goZnVuY3Rpb24oYXQpe3Rocm93KDAsai5wcmVmaXhNZXNzYWdl''@;'; put 'put ''KShhdCwiRXJyb3Igd2hpbGUgcG9zdGluZyBqb2IuICIpfSldO2Nhc2UgMTA6cmV0dXJuIFFlPSRlLnNlbnQoKSxtdD1RZS5yZXN1bHQsZz8oTiYmKHJlLmluZm8oIkpvYiBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yICciLmNvbmNhdChGZSwiJy4iKSkscmUuaW5mbygiWW91IGNhbiBtb25pdG9y''@;'; put 'put ''IHRoZSBqb2IgcHJvZ3Jlc3MgYXQgJyIuY29uY2F0KGllLmdldEJhc2VVcmwoKSkuY29uY2F0KG10LmxpbmtzLmZpbmQoZnVuY3Rpb24oYXQpe3JldHVybiJzdGF0ZSI9PT1hdC5yZWx9KS5ocmVmLCInLiIpKSksWzQsKDAscS5wb2xsSm9iU3RhdGUpKGllLG10LE4sYixDKS5jYXRjaChmdW5j''@;'; put 'put ''dGlvbihhdCl7cmV0dXJuIFIoRGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjdCxPdCxQdCxBdCxKdCxtbjtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKE50KXtzd2l0Y2goTnQubGFiZWwpe2Nhc2UgMDpyZXR1cm4gY3Q9bnVsbD09PShKdD1hdD8ucmVzcG9uc2UpfHx2b2lkIDA9PT1K''@;'; put 'put ''dD92b2lkIDA6SnQuZGF0YSxPdD0vZXJyPVswLTldKiwvLmV4ZWMoY3QpLCI1MTEzIiE9PShudWxsPT09KG1uPU90Py5bMF0pfHx2b2lkIDA9PT1tbj92b2lkIDA6bW4uc2xpY2UoNCwtMSkpP1szLDJdOihQdD1tdC5saW5rcy5maW5kKGZ1bmN0aW9uKGJuKXtyZXR1cm4idXAiPT09Ym4ucmVs''@;'; put 'put ''fSkuaHJlZisiL2xvZyIsQXQ9YXQsWzQsKDAsVy5mZXRjaExvZ0J5Q2h1bmtzKShpZSxRLFB0LDFlNildKTtjYXNlIDE6QXQubG9nPU50LnNlbnQoKSxOdC5sYWJlbD0yO2Nhc2UgMjp0aHJvdygwLGoucHJlZml4TWVzc2FnZSkoYXQsIkVycm9yIHdoaWxlIHBvbGxpbmcgam9iIHN0YXR1cy4g''@;'; put 'put ''Iil9fSl9KX0pXSk6WzIsbWVdO2Nhc2UgMTE6cmV0dXJuIEtlPSRlLnNlbnQoKSxiP1s0LCgwLEcuZ2V0VG9rZW5zKShpZSxiKV06WzMsMTNdO2Nhc2UgMTI6UT0kZS5zZW50KCkuYWNjZXNzX3Rva2VuLCRlLmxhYmVsPTEzO2Nhc2UgMTM6cmV0dXJuWzQsaWUuZ2V0KCIvY29tcHV0ZS9zZXNz''@;'; put 'put ''aW9ucy8iLmNvbmNhdChmZSwiL2pvYnMvIikuY29uY2F0KG10LmlkKSxRKS5jYXRjaChmdW5jdGlvbihhdCl7dGhyb3coMCxqLnByZWZpeE1lc3NhZ2UpKGF0LCJFcnJvciB3aGlsZSBnZXR0aW5nIGpvYi4gIil9KV07Y2FzZSAxNDpyZXR1cm4gd2U9JGUuc2VudCgpLnJlc3VsdCxJZT12b2lk''@;'; put 'put ''IDAsT2U9IiIsZXQ9d2UubGlua3MuZmluZChmdW5jdGlvbihhdCl7cmV0dXJuImxvZyI9PT1hdC5yZWx9KSxOJiZldD8obnQ9IiIuY29uY2F0KGV0LmhyZWYsIi9jb250ZW50IikscWU9bnVsbCE9PShTPW51bGw9PT0ocD13ZS5sb2dTdGF0aXN0aWNzKXx8dm9pZCAwPT09cD92b2lkIDA6cC5s''@;'; put 'put ''aW5lQ291bnQpJiZ2b2lkIDAhPT1TP1M6MWU2LFs0LCgwLFcuZmV0Y2hMb2dCeUNodW5rcykoaWUsUSxudCxxZSldKTpbMywxNl07Y2FzZSAxNTpPZT0kZS5zZW50KCksJGUubGFiZWw9MTY7Y2FzZSAxNjppZigiZmFpbGVkIj09PUtlfHwiZXJyb3IiPT09S2UpdGhyb3cgbmV3IFYuQ29tcHV0''@;'; put 'put ''ZUpvYkV4ZWN1dGlvbkVycm9yKHdlLE9lKTtyZXR1cm4gRj8oaHQ9Ii9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KGZlLCIvZmlsZXJlZnMvX3dlYm91dC9jb250ZW50IiksWzQsaWUuZ2V0KGh0LFEsInRleHQvcGxhaW4iKS5jYXRjaChmdW5jdGlvbihhdCl7cmV0dXJuIFIoRGUsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjdCxPdCxQdCxBdDtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEp0KXtzd2l0Y2goSnQubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYXQgaW5zdGFuY2VvZiBWLk5vdEZvdW5kRXJyb3ImJmV0PyhjdD0iIi5jb25jYXQoZXQuaHJlZiwiL2NvbnRlbnQiKSxPdD1u''@;'; put 'put ''dWxsIT09KEF0PW51bGw9PT0oUHQ9d2UubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PVB0P3ZvaWQgMDpQdC5saW5lQ291bnQpJiZ2b2lkIDAhPT1BdD9BdDoxZTYsWzQsKDAsVy5mZXRjaExvZ0J5Q2h1bmtzKShpZSxRLGN0LE90KV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gT2U9SnQuc2VudCgp''@;'; put 'put ''LFsyLFByb21pc2UucmVqZWN0KHtzdGF0dXM6NTAwLGxvZzpPZX0pXTtjYXNlIDI6cmV0dXJuWzIse3Jlc3VsdDpKU09OLnN0cmluZ2lmeShhdCl9XX19KX0pfSldKTpbMix7am9iOndlLGxvZzpPZX1dO2Nhc2UgMTc6cmV0dXJuIEllPSRlLnNlbnQoKSxbNCxsZS5jbGVhclNlc3Npb24oZmUs''@;'; put 'put ''USkuY2F0Y2goZnVuY3Rpb24oYXQpe3Rocm93KDAsai5wcmVmaXhNZXNzYWdlKShhdCwiRXJyb3Igd2hpbGUgY2xlYXJpbmcgc2Vzc2lvbi4gIil9KV07Y2FzZSAxODpyZXR1cm4gJGUuc2VudCgpLFsyLHtyZXN1bHQ6SWU/LnJlc3VsdCxsb2c6T2V9XTtjYXNlIDE5OmlmKDQwND09PShFZT0k''@;'; put 'put ''ZS5zZW50KCkpLnN0YXR1cylyZXR1cm5bMixuZShpZSxsZSxkZSx1ZSxjZSxZLGIseCxOLCExLCEwKV07dGhyb3coMCxqLnByZWZpeE1lc3NhZ2UpKEVlLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgc2NyaXB0LiAiKTtjYXNlIDIwOnJldHVyblsyXX19KX0pfX0sNzQ1ODpmdW5jdGlvbihILEIs''@;'; put 'put ''TCl7InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oeixqLFYsRyl7cmV0dXJuIG5ldyhWfHwoVj1Qcm9taXNlKSkoZnVuY3Rpb24oVyxVKXtmdW5jdGlvbiBxKGllKXt0cnl7bmUoRy5uZXh0KGllKSl9Y2F0Y2gobGUpe1UobGUpfX1m''@;'; put 'put ''dW5jdGlvbiB0ZShpZSl7dHJ5e25lKEcudGhyb3coaWUpKX1jYXRjaChsZSl7VShsZSl9fWZ1bmN0aW9uIG5lKGllKXt2YXIgbGU7aWUuZG9uZT9XKGllLnZhbHVlKToobGU9aWUudmFsdWUsbGUgaW5zdGFuY2VvZiBWP2xlOm5ldyBWKGZ1bmN0aW9uKGRlKXtkZShsZSl9KSkudGhlbihxLHRl''@;'; put 'put ''KX1uZSgoRz1HLmFwcGx5KHosanx8W10pKS5uZXh0KCkpfSl9LEk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oeixqKXt2YXIgVixHLFcsVSxxPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJldbMF0pdGhyb3cgV1sxXTtyZXR1cm4gV1sxXX0sdHJ5czpbXSxvcHM6W119''@;'; put 'put ''O3JldHVybiBVPXtuZXh0OnRlKDApLHRocm93OnRlKDEpLHJldHVybjp0ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksVTtmdW5jdGlvbiB0ZShuZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24obGUpe2lmKFYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cTspdHJ5e2lmKFY9MSxHJiYoVz0yJmxlWzBdP0cucmV0dXJuOmxlWzBdP0cudGhyb3d8fCgoVz1HLnJldHVybikmJlcuY2FsbChHKSwwKTpHLm5leHQp''@;'; put 'put ''JiYhKFc9Vy5jYWxsKEcsbGVbMV0pKS5kb25lKXJldHVybiBXO3N3aXRjaChHPTAsVyYmKGxlPVsyJmxlWzBdLFcudmFsdWVdKSxsZVswXSl7Y2FzZSAwOmNhc2UgMTpXPWxlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcS5sYWJlbCsrLHt2YWx1ZTpsZVsxXSxkb25lOiExfTtjYXNlIDU6cS5sYWJl''@;'; put 'put ''bCsrLEc9bGVbMV0sbGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsZT1xLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChXPShXPXEudHJ5cykubGVuZ3RoPjAmJldbVy5sZW5ndGgtMV0pfHw2IT09bGVbMF0mJjIhPT1sZVswXSkpe3E9MDtjb250aW51ZX1pZigz''@;'; put 'put ''PT09bGVbMF0mJighV3x8bGVbMV0+V1swXSYmbGVbMV08V1szXSkpe3EubGFiZWw9bGVbMV07YnJlYWt9aWYoNj09PWxlWzBdJiZxLmxhYmVsPFdbMV0pe3EubGFiZWw9V1sxXSxXPWxlO2JyZWFrfWlmKFcmJnEubGFiZWw8V1syXSl7cS5sYWJlbD1XWzJdLHEub3BzLnB1c2gobGUpO2JyZWFr''@;'; put 'put ''fVdbMl0mJnEub3BzLnBvcCgpLHEudHJ5cy5wb3AoKTtjb250aW51ZX1sZT1qLmNhbGwoeixxKX1jYXRjaChkZSl7bGU9WzYsZGVdLEc9MH1maW5hbGx5e1Y9Vz0wfWlmKDUmbGVbMF0pdGhyb3cgbGVbMV07cmV0dXJue3ZhbHVlOmxlWzBdP2xlWzFdOnZvaWQgMCxkb25lOiEwfX0oW25lLGll''@;'; put 'put ''XSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2V0RmlsZVN0cmVhbT12b2lkIDA7dmFyIFI9TCgyOTc1KSxFPUwoNzc1Nyk7Qi5nZXRGaWxlU3RyZWFtPWZ1bmN0aW9uKHosail7cmV0dXJuIEoodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgVixHLFcsVSxxO3JldHVybiBJKHRoaXMsZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBWPUwoMjk3NSkuY3JlYXRlV3JpdGVTdHJlYW0sRz1qfHxLLmN3ZCgpLFs0LCgwLFIuaXNGb2xkZXIpKEcpXTtjYXNlIDE6cmV0dXJuIHRlLnNlbnQo''@;'; put 'put ''KT8oVz0iIi5jb25jYXQoei5uYW1lfHwiam9iIiwiLSIpLmNvbmNhdCgoMCxFLmdlbmVyYXRlVGltZXN0YW1wKSgpLCIubG9nIiksVT1MKDI1MjApLHE9VS5qb2luKGp8fEsuY3dkKCksVyksWzQsVihxKV0pOlszLDNdO2Nhc2UgMjpjYXNlIDQ6cmV0dXJuWzIsdGUuc2VudCgpXTtjYXNlIDM6''@;'; put 'put ''cmV0dXJuWzQsVihHKV19fSl9KX19LDEzNDM6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQxNTUpLEo9TCg1MTA4KSxJPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocSl7Zm9yKHZhciB0ZSxuZT0x''@;'; put 'put ''LGllPWFyZ3VtZW50cy5sZW5ndGg7bmU8aWU7bmUrKylmb3IodmFyIGxlIGluIHRlPWFyZ3VtZW50c1tuZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLGxlKSYmKHFbbGVdPXRlW2xlXSk7cmV0dXJuIHF9LEkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxSPXRoaXMm''@;'; put 'put ''JnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihxLHRlLG5lLGllKXtyZXR1cm4gbmV3KG5lfHwobmU9UHJvbWlzZSkpKGZ1bmN0aW9uKGxlLGRlKXtmdW5jdGlvbiB1ZShiKXt0cnl7WShpZS5uZXh0KGIpKX1jYXRjaCh4KXtkZSh4KX19ZnVuY3Rpb24gY2UoYil7dHJ5e1koaWUudGhyb3coYikp''@;'; put 'put ''fWNhdGNoKHgpe2RlKHgpfX1mdW5jdGlvbiBZKGIpe3ZhciB4O2IuZG9uZT9sZShiLnZhbHVlKTooeD1iLnZhbHVlLHggaW5zdGFuY2VvZiBuZT94Om5ldyBuZShmdW5jdGlvbihOKXtOKHgpfSkpLnRoZW4odWUsY2UpfVkoKGllPWllLmFwcGx5KHEsdGV8fFtdKSkubmV4dCgpKX0pfSxFPXRo''@;'; put 'put ''aXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHEsdGUpe3ZhciBuZSxpZSxsZSxkZSx1ZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZsZVswXSl0aHJvdyBsZVsxXTtyZXR1cm4gbGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZGU9e25leHQ6Y2UoMCksdGhyb3c6Y2Uo''@;'; put 'put ''MSkscmV0dXJuOmNlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZGU7ZnVuY3Rpb24gY2UoWSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbih4KXtpZihuZSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt1ZTspdHJ5e2lmKG5lPTEsaWUmJihsZT0yJnhbMF0/aWUucmV0dXJuOnhbMF0/aWUudGhyb3d8fCgobGU9aWUucmV0dXJuKSYmbGUuY2FsbChpZSksMCk6aWUubmV4dCkmJiEobGU9bGUuY2FsbChpZSx4WzFd''@;'; put 'put ''KSkuZG9uZSlyZXR1cm4gbGU7c3dpdGNoKGllPTAsbGUmJih4PVsyJnhbMF0sbGUudmFsdWVdKSx4WzBdKXtjYXNlIDA6Y2FzZSAxOmxlPXg7YnJlYWs7Y2FzZSA0OnJldHVybiB1ZS5sYWJlbCsrLHt2YWx1ZTp4WzFdLGRvbmU6ITF9O2Nhc2UgNTp1ZS5sYWJlbCsrLGllPXhbMV0seD1bMF07''@;'; put 'put ''Y29udGludWU7Y2FzZSA3Ong9dWUub3BzLnBvcCgpLHVlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChsZT0obGU9dWUudHJ5cykubGVuZ3RoPjAmJmxlW2xlLmxlbmd0aC0xXSl8fDYhPT14WzBdJiYyIT09eFswXSkpe3VlPTA7Y29udGludWV9aWYoMz09PXhbMF0mJighbGV8''@;'; put 'put ''fHhbMV0+bGVbMF0mJnhbMV08bGVbM10pKXt1ZS5sYWJlbD14WzFdO2JyZWFrfWlmKDY9PT14WzBdJiZ1ZS5sYWJlbDxsZVsxXSl7dWUubGFiZWw9bGVbMV0sbGU9eDticmVha31pZihsZSYmdWUubGFiZWw8bGVbMl0pe3VlLmxhYmVsPWxlWzJdLHVlLm9wcy5wdXNoKHgpO2JyZWFrfWxlWzJd''@;'; put 'put ''JiZ1ZS5vcHMucG9wKCksdWUudHJ5cy5wb3AoKTtjb250aW51ZX14PXRlLmNhbGwocSx1ZSl9Y2F0Y2goTil7eD1bNixOXSxpZT0wfWZpbmFsbHl7bmU9bGU9MH1pZig1JnhbMF0pdGhyb3cgeFsxXTtyZXR1cm57dmFsdWU6eFswXT94WzFdOnZvaWQgMCxkb25lOiEwfX0oW1ksYl0pfX19O09i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnBvbGxKb2JTdGF0ZT12b2lkIDA7dmFyIHo9TCg3MDQpLGo9TCgxMzk1KSxWPUwoNTkyOCk7Qi5wb2xsSm9iU3RhdGU9ZnVuY3Rpb24ocSx0ZSxuZSxpZSxsZSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9p''@;'; put 'put ''ZCAwLGZ1bmN0aW9uKCl7dmFyIGRlLHVlLGNlLFksYix4LE47cmV0dXJuIEUodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOmlmKGRlPUsubG9nZ2VyfHxKLGxlPUkoSSh7fSx7bWF4UG9sbENvdW50OjFlMyxwb2xsSW50ZXJ2YWw6MzAwLHN0cmVhbUxvZzohMX0pLGxl''@;'; put 'put ''fHx7fSksISh1ZT10ZS5saW5rcy5maW5kKGZ1bmN0aW9uKGcpe3JldHVybiJzdGF0ZSI9PT1nLnJlbH0pKSl0aHJvdyBuZXcgRXJyb3IoIkpvYiBzdGF0ZSBsaW5rIHdhcyBub3QgZm91bmQuIik7cmV0dXJuWzQsRyhxLHRlLCIiLG5lLGllKS5jYXRjaChmdW5jdGlvbihnKXtyZXR1cm4gZGUu''@;'; put 'put ''ZXJyb3IoIkVycm9yIGZldGNoaW5nIGpvYiBzdGF0ZSBmcm9tICIuY29uY2F0KHVlLmhyZWYsIi4gU3RhcnRpbmcgcG9sbCwgYXNzdW1pbmcgam9iIHRvIGJlIHJ1bm5pbmcuIiksZyksInVuYXZhaWxhYmxlIn0pXTtjYXNlIDE6cmV0dXJuIGNlPUYuc2VudCgpLFk9MCwiY29tcGxldGVkIj09''@;'; put 'put ''PWNlP1syLFByb21pc2UucmVzb2x2ZShjZSldOmxlLnN0cmVhbUxvZyYmKDAsVi5pc05vZGUpKCk/WzQsKDAsTCg3NDU4KS5nZXRGaWxlU3RyZWFtKSh0ZSxsZS5sb2dGb2xkZXJQYXRoKV06WzMsM107Y2FzZSAyOmI9Ri5zZW50KCksRi5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bNCxVKHEsdGUs''@;'; put 'put ''Y2UsbmUsWSxpZSxJKEkoe30sbGUpLHttYXhQb2xsQ291bnQ6bGUubWF4UG9sbENvdW50PD0xMDA/bGUubWF4UG9sbENvdW50OjEwMH0pLGIpXTtjYXNlIDQ6cmV0dXJuIHg9Ri5zZW50KCksWT14LnBvbGxDb3VudCwhVyhjZT14LnN0YXRlKXx8WT49bGUubWF4UG9sbENvdW50P1syLGNlXToo''@;'; put 'put ''Tj17bWF4UG9sbENvdW50OjE0NDAscG9sbEludGVydmFsOjZlNCxzdHJlYW1Mb2c6ITF9LGxlJiYoTi5zdHJlYW1Mb2c9bGUuc3RyZWFtTG9nLE4ubG9nRm9sZGVyUGF0aD1sZS5sb2dGb2xkZXJQYXRoKSxbNCxVKHEsdGUsY2UsbmUsWSxpZSxOLGIpXSk7Y2FzZSA1OnJldHVybiB4PUYuc2Vu''@;'; put 'put ''dCgpLGNlPXguc3RhdGUsWT14LnBvbGxDb3VudCxiJiZiLmVuZCgpLFsyLGNlXX19KX0pfTt2YXIgRz1mdW5jdGlvbihxLHRlLG5lLGllLGxlKXtyZXR1cm4gUih2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkZSx1ZTtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGNlKXtzd2l0''@;'; put 'put ''Y2goY2UubGFiZWwpe2Nhc2UgMDppZighKGRlPXRlLmxpbmtzLmZpbmQoZnVuY3Rpb24oWSl7cmV0dXJuInN0YXRlIj09PVkucmVsfSkpKXRocm93IG5ldyBFcnJvcigiSm9iIHN0YXRlIGxpbmsgd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm4gVyhuZSk/KHVlPXZvaWQgMCxsZT9bNCwoMCx6Lmdl''@;'; put 'put ''dFRva2VucykocSxsZSldOlszLDJdKTpbMyw0XTtjYXNlIDE6dWU9Y2Uuc2VudCgpLGNlLmxhYmVsPTI7Y2FzZSAyOnJldHVybls0LHEuZ2V0KCIiLmNvbmNhdChkZS5ocmVmLCI/X2FjdGlvbj13YWl0JndhaXQ9MzAwIiksdWU/LmFjY2Vzc190b2tlbiwidGV4dC9wbGFpbiIse30saWUpLmNh''@;'; put 'put ''dGNoKGZ1bmN0aW9uKFkpe3Rocm93IG5ldyBqLkpvYlN0YXRlUG9sbEVycm9yKHRlLmlkLFkpfSldO2Nhc2UgMzpyZXR1cm5bMixjZS5zZW50KCkucmVzdWx0LnRyaW0oKV07Y2FzZSA0OnJldHVyblsyLG5lXX19KX0pfSxXPWZ1bmN0aW9uKHEpe3JldHVybiJydW5uaW5nIj09PXF8fCIiPT09''@;'; put 'put ''cXx8InBlbmRpbmciPT09cXx8InVuYXZhaWxhYmxlIj09PXF9LFU9ZnVuY3Rpb24ocSx0ZSxuZSxpZSxsZSxkZSx1ZSxjZSl7cmV0dXJuIFIodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgWSxiLHgsTixGLGcsQyxNLHkscCxTLFEscmUsZmUsbWU7cmV0dXJuIEUodGhpcyxm''@;'; put 'put ''dW5jdGlvbihrZSl7c3dpdGNoKGtlLmxhYmVsKXtjYXNlIDA6aWYoWT0zMDAsYj0xZTMseD01LE49MCxGPW5lLGc9IiIsQz0wLE09Sy5sb2dnZXJ8fEosdWUmJihZPXVlLnBvbGxJbnRlcnZhbHx8WSxiPXVlLm1heFBvbGxDb3VudHx8YiksISh5PXRlLmxpbmtzLmZpbmQoZnVuY3Rpb24oVGUp''@;'; put 'put ''e3JldHVybiJzdGF0ZSI9PT1UZS5yZWx9KSkpdGhyb3cgbmV3IEVycm9yKCJKb2Igc3RhdGUgbGluayB3YXMgbm90IGZvdW5kLiIpO2tlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBXKEYpJiZsZTw9Yj9bNCxHKHEsdGUsRixpZSxkZSkuY2F0Y2goZnVuY3Rpb24oVGUpe2lmKE4rKyxsZT49Ynx8''@;'; put 'put ''Tj49eCl0aHJvdyBUZTtyZXR1cm4gTS5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgam9iIHN0YXRlIGZyb20gIi5jb25jYXQoeS5ocmVmLCIuIFJlc3VtaW5nIHBvbGwsIGFzc3VtaW5nIGpvYiB0byBiZSBydW5uaW5nLiIpLFRlKSwidW5hdmFpbGFibGUifSldOlszLDhdO2Nhc2UgMjpyZXR1cm4g''@;'; put 'put ''Rj1rZS5zZW50KCksbGUrKyxwPXRlLmxpbmtzLmZpbmQoZnVuY3Rpb24oVGUpe3JldHVybiJzZWxmIj09PVRlLnJlbH0pLmhyZWYsdWU/LnN0cmVhbUxvZz9bNCxxLmdldChwLGRlPy5hY2Nlc3NfdG9rZW4pXTpbMyw2XTtjYXNlIDM6cmV0dXJuIFM9a2Uuc2VudCgpLnJlc3VsdCxRPW51bGwh''@;'; put 'put ''PT0obWU9bnVsbD09PShmZT1TLmxvZ1N0YXRpc3RpY3MpfHx2b2lkIDA9PT1mZT92b2lkIDA6ZmUubGluZUNvdW50KSYmdm9pZCAwIT09bWU/bWU6MWU2LChyZT0oKDAsVi5pc05vZGUpKCk/TCgyMDgwKTp7c2F2ZUxvZzpudWxsfSkuc2F2ZUxvZyk/WzQscmUodGUscSxDLFEsY2UsZGU/LmFj''@;'; put 'put ''Y2Vzc190b2tlbildOlszLDVdO2Nhc2UgNDprZS5zZW50KCksa2UubGFiZWw9NTtjYXNlIDU6Qys9USxrZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gaWUmJmchPT1GJiYoTS5pbmZvKCJQb2xsaW5nOiAiLmNvbmNhdChxLmdldEJhc2VVcmwoKStwLCIvc3RhdGUiKSksTS5pbmZvKCJDdXJyZW50''@;'; put 'put ''IGpvYiBzdGF0ZTogIi5jb25jYXQoRikpLGc9RiksInVuYXZhaWxhYmxlIiE9RiYmTj4wJiYoTj0wKSxbNCwoMCxWLmRlbGF5KShZKV07Y2FzZSA3OnJldHVybiBrZS5zZW50KCksWzMsMV07Y2FzZSA4OnJldHVyblsyLHtzdGF0ZTpGLHBvbGxDb3VudDpsZX1dfX0pfSl9fSwyMDgwOmZ1bmN0''@;'; put 'put ''aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9TCg0MTU1KSxKPUwoNTEwOCksST10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oaixWLEcsVyl7cmV0dXJuIG5ldyhHfHwoRz1Qcm9taXNlKSkoZnVuY3Rpb24oVSxxKXtmdW5jdGlvbiB0ZShsZSl7dHJ5e2llKFcubmV4dChsZSkp''@;'; put 'put ''fWNhdGNoKGRlKXtxKGRlKX19ZnVuY3Rpb24gbmUobGUpe3RyeXtpZShXLnRocm93KGxlKSl9Y2F0Y2goZGUpe3EoZGUpfX1mdW5jdGlvbiBpZShsZSl7dmFyIGRlO2xlLmRvbmU/VShsZS52YWx1ZSk6KGRlPWxlLnZhbHVlLGRlIGluc3RhbmNlb2YgRz9kZTpuZXcgRyhmdW5jdGlvbih1ZSl7''@;'; put 'put ''dWUoZGUpfSkpLnRoZW4odGUsbmUpfWllKChXPVcuYXBwbHkoaixWfHxbXSkpLm5leHQoKSl9KX0sUj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihqLFYpe3ZhciBHLFcsVSxxLHRlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJlVbMF0pdGhyb3cgVVsxXTtyZXR1cm4g''@;'; put 'put ''VVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBxPXtuZXh0Om5lKDApLHRocm93Om5lKDEpLHJldHVybjpuZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSkscTtmdW5jdGlvbiBuZShpZSl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKGxlKXtyZXR1cm4gZnVuY3Rpb24oZGUpe2lmKEcpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7dGU7KXRyeXtpZihHPTEsVyYmKFU9MiZkZVswXT9XLnJldHVybjpkZVswXT9XLnRocm93fHwoKFU9Vy5yZXR1cm4p''@;'; put 'put ''JiZVLmNhbGwoVyksMCk6Vy5uZXh0KSYmIShVPVUuY2FsbChXLGRlWzFdKSkuZG9uZSlyZXR1cm4gVTtzd2l0Y2goVz0wLFUmJihkZT1bMiZkZVswXSxVLnZhbHVlXSksZGVbMF0pe2Nhc2UgMDpjYXNlIDE6VT1kZTticmVhaztjYXNlIDQ6cmV0dXJuIHRlLmxhYmVsKysse3ZhbHVlOmRlWzFd''@;'; put 'put ''LGRvbmU6ITF9O2Nhc2UgNTp0ZS5sYWJlbCsrLFc9ZGVbMV0sZGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpkZT10ZS5vcHMucG9wKCksdGUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFU9KFU9dGUudHJ5cykubGVuZ3RoPjAmJlVbVS5sZW5ndGgtMV0pfHw2IT09ZGVbMF0mJjIh''@;'; put 'put ''PT1kZVswXSkpe3RlPTA7Y29udGludWV9aWYoMz09PWRlWzBdJiYoIVV8fGRlWzFdPlVbMF0mJmRlWzFdPFVbM10pKXt0ZS5sYWJlbD1kZVsxXTticmVha31pZig2PT09ZGVbMF0mJnRlLmxhYmVsPFVbMV0pe3RlLmxhYmVsPVVbMV0sVT1kZTticmVha31pZihVJiZ0ZS5sYWJlbDxVWzJdKXt0''@;'; put 'put ''ZS5sYWJlbD1VWzJdLHRlLm9wcy5wdXNoKGRlKTticmVha31VWzJdJiZ0ZS5vcHMucG9wKCksdGUudHJ5cy5wb3AoKTtjb250aW51ZX1kZT1WLmNhbGwoaix0ZSl9Y2F0Y2godWUpe2RlPVs2LHVlXSxXPTB9ZmluYWxseXtHPVU9MH1pZig1JmRlWzBdKXRocm93IGRlWzFdO3JldHVybnt2YWx1''@;'; put 'put ''ZTpkZVswXT9kZVsxXTp2b2lkIDAsZG9uZTohMH19KFtpZSxsZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnNhdmVMb2c9dm9pZCAwO3ZhciBFPUwoNTkyOCksej1MKDYxMzEpO0Iuc2F2ZUxvZz1mdW5jdGlvbihqLFYsRyxXLFUscSl7''@;'; put 'put ''cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHRlLG5lLGllO3JldHVybiBSKHRoaXMsZnVuY3Rpb24obGUpe3N3aXRjaChsZS5sYWJlbCl7Y2FzZSAwOmlmKCFxKXRocm93IG5ldyBFcnJvcigiTG9ncyBmb3Igam9iICIuY29uY2F0KGouaWQsIiBjYW5ub3QgYmUg''@;'; put 'put ''ZmV0Y2hlZCB3aXRob3V0IGEgdmFsaWQgYWNjZXNzIHRva2VuLiIpKTtpZighVSl0aHJvdyBuZXcgRXJyb3IoIkxvZ3MgZm9yIGpvYiAiLmNvbmNhdChqLmlkLCIgY2Fubm90IGJlIHdyaXR0ZW4gd2l0aG91dCBhIHZhbGlkIHdyaXRlIHN0cmVhbS4iKSk7aWYodGU9Sy5sb2dnZXJ8fEosIShu''@;'; put 'put ''ZT1qLmxpbmtzLmZpbmQoZnVuY3Rpb24oZGUpe3JldHVybiJsb2ciPT09ZGUucmVsfSkpKXRocm93IG5ldyBFcnJvcigiTG9nIFVSTCBmb3Igam9iICIuY29uY2F0KGouaWQsIiB3YXMgbm90IGZvdW5kLiIpKTtyZXR1cm5bNCwoMCxFLmZldGNoTG9nKShWLHEsIiIuY29uY2F0KG5lLmhyZWYs''@;'; put 'put ''Ii9jb250ZW50IiksRyxXKV07Y2FzZSAxOnJldHVybiBpZT1sZS5zZW50KCksdGUuaW5mbygiV3JpdGluZyBsb2dzIHRvICIuY29uY2F0KFUucGF0aCkpLFs0LCgwLHoud3JpdGVTdHJlYW0pKFUsaWV8fCIiKV07Y2FzZSAyOnJldHVybiBsZS5zZW50KCksWzJdfX0pfSl9fSw2NDk2OmZ1bmN0''@;'; put 'put ''aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEUseixqLFYpe3JldHVybiBuZXcoanx8KGo9UHJvbWlzZSkpKGZ1bmN0aW9uKEcsVyl7ZnVuY3Rpb24gVShuZSl7dHJ5e3RlKFYubmV4dChuZSkpfWNhdGNoKGllKXtXKGllKX19ZnVu''@;'; put 'put ''Y3Rpb24gcShuZSl7dHJ5e3RlKFYudGhyb3cobmUpKX1jYXRjaChpZSl7VyhpZSl9fWZ1bmN0aW9uIHRlKG5lKXt2YXIgaWU7bmUuZG9uZT9HKG5lLnZhbHVlKTooaWU9bmUudmFsdWUsaWUgaW5zdGFuY2VvZiBqP2llOm5ldyBqKGZ1bmN0aW9uKGxlKXtsZShpZSl9KSkudGhlbihVLHEpfXRl''@;'; put 'put ''KChWPVYuYXBwbHkoRSx6fHxbXSkpLm5leHQoKSl9KX0sSj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihFLHope3ZhciBqLFYsRyxXLFU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmR1swXSl0aHJvdyBHWzFdO3JldHVybiBHWzFdfSx0cnlzOltdLG9wczpbXX07cmV0''@;'; put 'put ''dXJuIFc9e25leHQ6cSgwKSx0aHJvdzpxKDEpLHJldHVybjpxKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoV1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxXO2Z1bmN0aW9uIHEodGUpe3JldHVybiBmdW5jdGlvbihuZSl7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KGllKXtpZihqKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1U7KXRyeXtpZihqPTEsViYmKEc9MiZpZVswXT9WLnJldHVybjppZVswXT9WLnRocm93fHwoKEc9Vi5yZXR1cm4pJiZHLmNhbGwoViksMCk6Vi5uZXh0KSYmIShHPUcu''@;'; put 'put ''Y2FsbChWLGllWzFdKSkuZG9uZSlyZXR1cm4gRztzd2l0Y2goVj0wLEcmJihpZT1bMiZpZVswXSxHLnZhbHVlXSksaWVbMF0pe2Nhc2UgMDpjYXNlIDE6Rz1pZTticmVhaztjYXNlIDQ6cmV0dXJuIFUubGFiZWwrKyx7dmFsdWU6aWVbMV0sZG9uZTohMX07Y2FzZSA1OlUubGFiZWwrKyxWPWll''@;'; put 'put ''WzFdLGllPVswXTtjb250aW51ZTtjYXNlIDc6aWU9VS5vcHMucG9wKCksVS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoRz0oRz1VLnRyeXMpLmxlbmd0aD4wJiZHW0cubGVuZ3RoLTFdKXx8NiE9PWllWzBdJiYyIT09aWVbMF0pKXtVPTA7Y29udGludWV9aWYoMz09PWllWzBd''@;'; put 'put ''JiYoIUd8fGllWzFdPkdbMF0mJmllWzFdPEdbM10pKXtVLmxhYmVsPWllWzFdO2JyZWFrfWlmKDY9PT1pZVswXSYmVS5sYWJlbDxHWzFdKXtVLmxhYmVsPUdbMV0sRz1pZTticmVha31pZihHJiZVLmxhYmVsPEdbMl0pe1UubGFiZWw9R1syXSxVLm9wcy5wdXNoKGllKTticmVha31HWzJdJiZV''@;'; put 'put ''Lm9wcy5wb3AoKSxVLnRyeXMucG9wKCk7Y29udGludWV9aWU9ei5jYWxsKEUsVSl9Y2F0Y2gobGUpe2llPVs2LGxlXSxWPTB9ZmluYWxseXtqPUc9MH1pZig1JmllWzBdKXRocm93IGllWzFdO3JldHVybnt2YWx1ZTppZVswXT9pZVsxXTp2b2lkIDAsZG9uZTohMH19KFt0ZSxuZV0pfX19O09i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnVwbG9hZFRhYmxlcz12b2lkIDA7dmFyIEk9TCg5Nzc4KSxSPUwoMjQwMik7Qi51cGxvYWRUYWJsZXM9ZnVuY3Rpb24oRSx6LGope3JldHVybiBLKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBWLEcsVyxVLHEsdGUsbmU7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihpZSl7c3dpdGNoKGllLmxhYmVsKXtjYXNlIDA6Zm9yKFcgaW4gVj1bXSxHPVtdLHopRy5wdXNoKFcpO1U9MCxpZS5sYWJlbD0xO2Nhc2UgMTppZighKFU8Ry5sZW5ndGgpKXJldHVyblszLDRdO2lmKCJFUlJPUjogTEFS''@;'; put 'put ''R0UgU1RSSU5HIExFTkdUSCI9PT0odGU9KDAsUi5jb252ZXJ0VG9DU1YpKHoscT1HW1VdKSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO3JldHVybls0LEUudXBsb2FkRmlsZSgiL2ZpbGVz''@;'; put 'put ''L2ZpbGVzI3Jhd1VwbG9hZCIsdGUsaikuY2F0Y2goZnVuY3Rpb24obGUpe3Rocm93KDAsSS5wcmVmaXhNZXNzYWdlKShsZSwiRXJyb3Igd2hpbGUgdXBsb2FkaW5nIGZpbGUuICIpfSldO2Nhc2UgMjpuZT1pZS5zZW50KCksVi5wdXNoKHt0YWJsZU5hbWU6cSxmaWxlOm5lLnJlc3VsdH0pLGll''@;'; put 'put ''LmxhYmVsPTM7Y2FzZSAzOnJldHVybiBVKyssWzMsMV07Y2FzZSA0OnJldHVyblsyLFZdfX0pfSl9fSw2MTMxOmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihKLEksUixFKXtyZXR1cm4gbmV3KFJ8fChSPVByb21pc2UpKShm''@;'; put 'put ''dW5jdGlvbih6LGope2Z1bmN0aW9uIFYoVSl7dHJ5e1coRS5uZXh0KFUpKX1jYXRjaChxKXtqKHEpfX1mdW5jdGlvbiBHKFUpe3RyeXtXKEUudGhyb3coVSkpfWNhdGNoKHEpe2oocSl9fWZ1bmN0aW9uIFcoVSl7dmFyIHE7VS5kb25lP3ooVS52YWx1ZSk6KHE9VS52YWx1ZSxxIGluc3RhbmNl''@;'; put 'put ''b2YgUj9xOm5ldyBSKGZ1bmN0aW9uKHRlKXt0ZShxKX0pKS50aGVuKFYsRyl9VygoRT1FLmFwcGx5KEosSXx8W10pKS5uZXh0KCkpfSl9LEs9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oSixJKXt2YXIgUixFLHosaixWPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnpb''@;'; put 'put ''MF0pdGhyb3cgelsxXTtyZXR1cm4gelsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBqPXtuZXh0OkcoMCksdGhyb3c6RygxKSxyZXR1cm46RygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGpbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksajtmdW5j''@;'; put 'put ''dGlvbiBHKFcpe3JldHVybiBmdW5jdGlvbihVKXtyZXR1cm4gZnVuY3Rpb24ocSl7aWYoUil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtWOyl0cnl7aWYoUj0xLEUmJih6PTImcVswXT9FLnJldHVybjpxWzBdP0UudGhyb3d8fCgo''@;'; put 'put ''ej1FLnJldHVybikmJnouY2FsbChFKSwwKTpFLm5leHQpJiYhKHo9ei5jYWxsKEUscVsxXSkpLmRvbmUpcmV0dXJuIHo7c3dpdGNoKEU9MCx6JiYocT1bMiZxWzBdLHoudmFsdWVdKSxxWzBdKXtjYXNlIDA6Y2FzZSAxOno9cTticmVhaztjYXNlIDQ6cmV0dXJuIFYubGFiZWwrKyx7dmFsdWU6''@;'; put 'put ''cVsxXSxkb25lOiExfTtjYXNlIDU6Vi5sYWJlbCsrLEU9cVsxXSxxPVswXTtjb250aW51ZTtjYXNlIDc6cT1WLm9wcy5wb3AoKSxWLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh6PSh6PVYudHJ5cykubGVuZ3RoPjAmJnpbei5sZW5ndGgtMV0pfHw2IT09cVswXSYmMiE9PXFb''@;'; put 'put ''MF0pKXtWPTA7Y29udGludWV9aWYoMz09PXFbMF0mJighenx8cVsxXT56WzBdJiZxWzFdPHpbM10pKXtWLmxhYmVsPXFbMV07YnJlYWt9aWYoNj09PXFbMF0mJlYubGFiZWw8elsxXSl7Vi5sYWJlbD16WzFdLHo9cTticmVha31pZih6JiZWLmxhYmVsPHpbMl0pe1YubGFiZWw9elsyXSxWLm9w''@;'; put 'put ''cy5wdXNoKHEpO2JyZWFrfXpbMl0mJlYub3BzLnBvcCgpLFYudHJ5cy5wb3AoKTtjb250aW51ZX1xPUkuY2FsbChKLFYpfWNhdGNoKHRlKXtxPVs2LHRlXSxFPTB9ZmluYWxseXtSPXo9MH1pZig1JnFbMF0pdGhyb3cgcVsxXTtyZXR1cm57dmFsdWU6cVswXT9xWzFdOnZvaWQgMCxkb25lOiEw''@;'; put 'put ''fX0oW1csVV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLndyaXRlU3RyZWFtPXZvaWQgMCxCLndyaXRlU3RyZWFtPWZ1bmN0aW9uKEosSSl7cmV0dXJuIEwodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSyh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKFIpe3JldHVyblsyLEoud3JpdGUoSSsiXG4iLGZ1bmN0aW9uKEUpe3JldHVybiBFP1Byb21pc2UucmVqZWN0KEUpOlByb21pc2UucmVzb2x2ZSgpfSldfSl9KX19LDI4NTE6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDUxMDgpLEo9TCg0MTU1KSxJPXRo''@;'; put 'put ''aXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihpZSxsZSxkZSx1ZSl7cmV0dXJuIG5ldyhkZXx8KGRlPVByb21pc2UpKShmdW5jdGlvbihjZSxZKXtmdW5jdGlvbiBiKEYpe3RyeXtOKHVlLm5leHQoRikpfWNhdGNoKGcpe1koZyl9fWZ1bmN0aW9uIHgoRil7dHJ5e04odWUudGhyb3coRikp''@;'; put 'put ''fWNhdGNoKGcpe1koZyl9fWZ1bmN0aW9uIE4oRil7dmFyIGc7Ri5kb25lP2NlKEYudmFsdWUpOihnPUYudmFsdWUsZyBpbnN0YW5jZW9mIGRlP2c6bmV3IGRlKGZ1bmN0aW9uKEMpe0MoZyl9KSkudGhlbihiLHgpfU4oKHVlPXVlLmFwcGx5KGllLGxlfHxbXSkpLm5leHQoKSl9KX0sUj10aGlz''@;'; put 'put ''JiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihpZSxsZSl7dmFyIGRlLHVlLGNlLFksYj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZjZVswXSl0aHJvdyBjZVsxXTtyZXR1cm4gY2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWT17bmV4dDp4KDApLHRocm93OngoMSkscmV0''@;'; put 'put ''dXJuOngoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihZW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFk7ZnVuY3Rpb24geChOKXtyZXR1cm4gZnVuY3Rpb24oRil7cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKGRlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdl''@;'; put 'put ''bmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2I7KXRyeXtpZihkZT0xLHVlJiYoY2U9MiZnWzBdP3VlLnJldHVybjpnWzBdP3VlLnRocm93fHwoKGNlPXVlLnJldHVybikmJmNlLmNhbGwodWUpLDApOnVlLm5leHQpJiYhKGNlPWNlLmNhbGwodWUsZ1sxXSkpLmRvbmUpcmV0''@;'; put 'put ''dXJuIGNlO3N3aXRjaCh1ZT0wLGNlJiYoZz1bMiZnWzBdLGNlLnZhbHVlXSksZ1swXSl7Y2FzZSAwOmNhc2UgMTpjZT1nO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYi5sYWJlbCsrLHt2YWx1ZTpnWzFdLGRvbmU6ITF9O2Nhc2UgNTpiLmxhYmVsKyssdWU9Z1sxXSxnPVswXTtjb250aW51ZTtjYXNl''@;'; put 'put ''IDc6Zz1iLm9wcy5wb3AoKSxiLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChjZT0oY2U9Yi50cnlzKS5sZW5ndGg+MCYmY2VbY2UubGVuZ3RoLTFdKXx8NiE9PWdbMF0mJjIhPT1nWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1nWzBdJiYoIWNlfHxnWzFdPmNlWzBdJiZnWzFd''@;'; put 'put ''PGNlWzNdKSl7Yi5sYWJlbD1nWzFdO2JyZWFrfWlmKDY9PT1nWzBdJiZiLmxhYmVsPGNlWzFdKXtiLmxhYmVsPWNlWzFdLGNlPWc7YnJlYWt9aWYoY2UmJmIubGFiZWw8Y2VbMl0pe2IubGFiZWw9Y2VbMl0sYi5vcHMucHVzaChnKTticmVha31jZVsyXSYmYi5vcHMucG9wKCksYi50cnlzLnBv''@;'; put 'put ''cCgpO2NvbnRpbnVlfWc9bGUuY2FsbChpZSxiKX1jYXRjaChDKXtnPVs2LENdLHVlPTB9ZmluYWxseXtkZT1jZT0wfWlmKDUmZ1swXSl0aHJvdyBnWzFdO3JldHVybnt2YWx1ZTpnWzBdP2dbMV06dm9pZCAwLGRvbmU6ITB9fShbTixGXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuQXV0aE1hbmFnZXI9dm9pZCAwO3ZhciBFPUwoMzkwMCksej1MKDEzOTUpLGo9TCg1OTI4KSxWPUwoMTE3MCksRz1MKDU0MTgpLFc9TCg0NTgyKSxVPUwoNjU0NykscT1mdW5jdGlvbigpe2Z1bmN0aW9uIGllKGxlLGRlLHVlLGNlKXt2YXIgWT10aGlz''@;'; put 'put ''O3RoaXMuc2VydmVyVXJsPWxlLHRoaXMuc2VydmVyVHlwZT1kZSx0aGlzLnJlcXVlc3RDbGllbnQ9dWUsdGhpcy5sb2dpbkNhbGxiYWNrPWNlLHRoaXMudXNlck5hbWU9IiIsdGhpcy51c2VyTG9uZ05hbWU9IiIsdGhpcy5yZWRpcmVjdGVkTG9naW5Vcmw9Ii9TQVNMb2dvbiIsdGhpcy5leHRy''@;'; put 'put ''YWN0VXNlck5hbWU9ZnVuY3Rpb24oYil7c3dpdGNoKFkuc2VydmVyVHlwZSl7Y2FzZSBFLlNlcnZlclR5cGUuU2FzVml5YTpyZXR1cm4gYj8uaWQ7Y2FzZSBFLlNlcnZlclR5cGUuU2FzOTpyZXR1cm4iIjtjYXNlIEUuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gYj8udXNlcm5hbWU7ZGVmYXVs''@;'; put 'put ''dDpyZXR1cm4gSy5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGluIGV4dHJhY3RVc2VyTmFtZSBmdW5jdGlvbiIpLCIifX0sdGhpcy5leHRyYWN0VXNlckxvbmdOYW1lPWZ1bmN0aW9uKGIpe3N3aXRjaChZLnNlcnZlclR5cGUpe2Nhc2UgRS5TZXJ2ZXJUeXBlLlNhc1ZpeWE6cmV0dXJu''@;'; put 'put ''IGI/Lm5hbWU7Y2FzZSBFLlNlcnZlclR5cGUuU2FzOTpyZXR1cm4oMCxWLmV4dHJhY3RVc2VyTG9uZ05hbWVTYXM5KShiKTtjYXNlIEUuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gYj8uZGlzcGxheU5hbWU7ZGVmYXVsdDpyZXR1cm4gSy5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGlu''@;'; put 'put ''IGV4dHJhY3RVc2VyTmFtZSBmdW5jdGlvbiIpLCIifX0sdGhpcy5zZXRMb2dpblVybD1mdW5jdGlvbihiKXt2YXIgeD1iWzFdLnJlcGxhY2UoL1w/LiovLCIiKTtpZigiLyI9PT14WzBdKXt4PXguc3Vic3RyKDEpO3ZhciBOPVkuc2VydmVyVXJsPyIiLmNvbmNhdChZLnNlcnZlclVybCwiLyIp''@;'; put 'put ''LmNvbmNhdCh4KToiIi5jb25jYXQoeCk7WS5sb2dpblVybD1ZLnNlcnZlclR5cGU9PT1FLlNlcnZlclR5cGUuU2FzVml5YT9OOk4ucmVwbGFjZSgiL1NBU0xvZ29uL2xvZ2luLmRvIiwiL1NBU0xvZ29uL2xvZ2luIil9fSx0aGlzLmxvZ2luVXJsPSIvU0FTTG9nb24vbG9naW4iLHRoaXMubG9n''@;'; put 'put ''b3V0VXJsPXRoaXMuc2VydmVyVHlwZT09PUUuU2VydmVyVHlwZS5TYXM5PyIvU0FTTG9nb24vbG9nb3V0PyI6dGhpcy5zZXJ2ZXJUeXBlPT09RS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/Ii9TQVNMb2dvbi9sb2dvdXQuZG8/IjoiL1NBU0xvZ29uL2xvZ291dCJ9cmV0dXJuIGllLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRpcmVjdGVkTG9nSW49ZnVuY3Rpb24obGUpe3ZhciBkZT1sZS5vbkxvZ2dlZE91dDtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdWUsWSxiLHgsTixGLGcsQyxNO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oeSl7c3dpdGNoKHkubGFiZWwpe2Nhc2UgMDpyZXR1''@;'; put 'put ''cm5bNCx0aGlzLmZldGNoVXNlck5hbWUoKV07Y2FzZSAxOnJldHVybiB1ZT15LnNlbnQoKSxZPXVlLnVzZXJOYW1lLGI9dWUudXNlckxvbmdOYW1lLHVlLmlzTG9nZ2VkSW4/KChKLmxvZ2dlcnx8SykubG9nKCJsb2dpbiB3YXMgbm90IGF0dGVtcHRlZCBhcyBhIHZhbGlkIHNlc3Npb24gYWxy''@;'; put 'put ''ZWFkeSBleGlzdHMiKSxbNCx0aGlzLmxvZ2luQ2FsbGJhY2soKV0pOlszLDNdO2Nhc2UgMjpyZXR1cm4geS5zZW50KCksWzIse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6WSx1c2VyTG9uZ05hbWU6Yn1dO2Nhc2UgMzpyZXR1cm5bNCwoMCxHLm9wZW5XZWJQYWdlKSh0aGlzLnJlZGlyZWN0ZWRM''@;'; put 'put ''b2dpblVybCwiU0FTTG9nb24iLHt3aWR0aDo1MDAsaGVpZ2h0OjYwMH0sZGUpXTtjYXNlIDQ6cmV0dXJuKHg9eS5zZW50KCkpP3RoaXMuc2VydmVyVHlwZSE9PUUuU2VydmVyVHlwZS5TYXNWaXlhP1szLDZdOls0LCgwLFUudmVyaWZ5U2FzVml5YUxvZ2luKSh4KV06WzIse2lzTG9nZ2VkSW46''@;'; put 'put ''ITEsdXNlck5hbWU6IiIsdXNlckxvbmdOYW1lOiIifV07Y2FzZSA1OnJldHVybiBGPXkuc2VudCgpLFszLDhdO2Nhc2UgNjpyZXR1cm5bNCwoMCxXLnZlcmlmeVNhczlMb2dpbikoeCldO2Nhc2UgNzpGPXkuc2VudCgpLHkubGFiZWw9ODtjYXNlIDg6cmV0dXJuIE49Ri5pc0xvZ2dlZEluLHgu''@;'; put 'put ''Y2xvc2UoKSxOP3RoaXMuc2VydmVyVHlwZSE9PUUuU2VydmVyVHlwZS5TYXM5P1szLDEwXTpbNCx0aGlzLnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrKCldOlszLDEzXTtjYXNlIDk6eS5zZW50KCkseS5sYWJlbD0xMDtjYXNlIDEwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgpXTtjYXNl''@;'; put 'put ''IDExOnJldHVybiBnPXkuc2VudCgpLEM9Zy51c2VyTmFtZSxNPWcudXNlckxvbmdOYW1lLFs0LHRoaXMubG9naW5DYWxsYmFjaygpXTtjYXNlIDEyOnJldHVybiB5LnNlbnQoKSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTpDLHVzZXJMb25nTmFtZTpNfV07Y2FzZSAxMzpyZXR1cm5bMix7''@;'; put 'put ''aXNMb2dnZWRJbjohMSx1c2VyTmFtZToiIix1c2VyTG9uZ05hbWU6IiJ9XX19KX0pfSxpZS5wcm90b3R5cGUubG9nSW49ZnVuY3Rpb24obGUsZGUpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB1ZSxjZSxiLHgsTixGLGcsQztyZXR1cm4gUih0aGlzLGZ1bmN0''@;'; put 'put ''aW9uKE0pe3N3aXRjaChNLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHVlPXtfc2VydmljZToiZGVmYXVsdCIsdXNlcm5hbWU6bGUscGFzc3dvcmQ6ZGV9LHRoaXMudXNlck5hbWU9IiIsdGhpcy51c2VyTG9uZ05hbWU9IiIsWzQsdGhpcy5jaGVja1Nlc3Npb24oKV07Y2FzZSAxOnJldHVybiBjZT1N''@;'; put 'put ''LnNlbnQoKSxiPWNlLmxvZ2luRm9ybSx4PWNlLnVzZXJMb25nTmFtZSxjZS5pc0xvZ2dlZEluPygoSi5sb2dnZXJ8fEspLmxvZygibG9naW4gd2FzIG5vdCBhdHRlbXB0ZWQgYXMgYSB2YWxpZCBzZXNzaW9uIGFscmVhZHkgZXhpc3RzIiksWzQsdGhpcy5sb2dpbkNhbGxiYWNrKCldKTpbMywz''@;'; put 'put ''XTtjYXNlIDI6cmV0dXJuIE0uc2VudCgpLHRoaXMudXNlck5hbWU9dWUudXNlcm5hbWUsdGhpcy51c2VyTG9uZ05hbWU9eCxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTp0aGlzLnVzZXJOYW1lLHVzZXJMb25nTmFtZTp0aGlzLnVzZXJMb25nTmFtZX1dO2Nhc2UgMzpyZXR1cm5bNCx0aGlz''@;'; put 'put ''LnNlbmRMb2dpblJlcXVlc3QoYix1ZSldO2Nhc2UgNDpyZXR1cm4gTj1NLnNlbnQoKSwoRj1uZSh0aGlzLnNlcnZlclR5cGUsTikpP1szLDldOnRlKE4pP1s0LHRoaXMuZ2V0TG9naW5Gb3JtKE4pXTpbMyw3XTtjYXNlIDU6cmV0dXJuIGc9TS5zZW50KCksWzQsdGhpcy5zZW5kTG9naW5SZXF1''@;'; put 'put ''ZXN0KGcsdWUpXTtjYXNlIDY6Tj1NLnNlbnQoKSxNLmxhYmVsPTc7Y2FzZSA3OnJldHVybls0LHRoaXMuY2hlY2tTZXNzaW9uKCldO2Nhc2UgODpDPU0uc2VudCgpLEY9Qy5pc0xvZ2dlZEluLHRoaXMudXNlckxvbmdOYW1lPUMudXNlckxvbmdOYW1lLE0ubGFiZWw9OTtjYXNlIDk6cmV0dXJu''@;'; put 'put ''IEY/dGhpcy5zZXJ2ZXJUeXBlIT09RS5TZXJ2ZXJUeXBlLlNhczk/WzMsMTFdOls0LHRoaXMucGVyZm9ybUNBU1NlY3VyaXR5Q2hlY2soKV06WzMsMTJdO2Nhc2UgMTA6TS5zZW50KCksTS5sYWJlbD0xMTtjYXNlIDExOnRoaXMubG9naW5DYWxsYmFjaygpLHRoaXMudXNlck5hbWU9dWUudXNl''@;'; put 'put ''cm5hbWUsTS5sYWJlbD0xMjtjYXNlIDEyOnJldHVyblsyLHtpc0xvZ2dlZEluOkYsdXNlck5hbWU6dGhpcy51c2VyTmFtZSx1c2VyTG9uZ05hbWU6dGhpcy51c2VyTG9uZ05hbWV9XX19KX0pfSxpZS5wcm90b3R5cGUucGVyZm9ybUNBU1NlY3VyaXR5Q2hlY2s9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''SSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbGU7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihkZSl7c3dpdGNoKGRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGxlPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL1NBU1N0b3JlZFByb2Nlc3Mval9zcHJpbmdfY2FzX3NlY3VyaXR5''@;'; put 'put ''X2NoZWNrIiksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL1NBU0xvZ29uL2xvZ2luP3NlcnZpY2U9Ii5jb25jYXQobGUpLHZvaWQgMCkuY2F0Y2goZnVuY3Rpb24odWUpe2lmKCEodWUgaW5zdGFuY2VvZiB6Lk5vdEZvdW5kRXJyb3IpKXRocm93IHVlfSldO2Nhc2UgMTpyZXR1cm4gZGUu''@;'; put 'put ''c2VudCgpLFsyXX19KX0pfSxpZS5wcm90b3R5cGUuc2VuZExvZ2luUmVxdWVzdD1mdW5jdGlvbihsZSxkZSl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFksYjtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKHgpe3N3aXRjaCh4LmxhYmVsKXtjYXNlIDA6cmV0dXJu''@;'; put 'put ''IHRoaXMuc2VydmVyVHlwZSE9PUUuU2VydmVyVHlwZS5TYXNqcz9bMywyXTpbNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCh0aGlzLmxvZ2luVXJsLHt1c2VybmFtZTpkZS51c2VybmFtZSxwYXNzd29yZDpkZS5wYXNzd29yZH0sdm9pZCAwKV07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMix4LnNl''@;'; put 'put ''bnQoKS5yZXN1bHRdO2Nhc2UgMjpmb3IoWSBpbiBsZSlkZVtZXT1sZVtZXTtyZXR1cm4gYj0oMCxqLnNlcmlhbGl6ZSkoZGUpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KHRoaXMubG9naW5VcmwsYix2b2lkIDAsInRleHQvcGxhaW4iLHsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24v''@;'; put 'put ''eC13d3ctZm9ybS11cmxlbmNvZGVkIixBY2NlcHQ6IiovKiJ9KV19fSl9KX0saWUucHJvdG90eXBlLmNoZWNrU2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsZSxkZSx1ZSxjZSxZO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oYil7''@;'; put 'put ''c3dpdGNoKGIubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmZldGNoVXNlck5hbWUoKV07Y2FzZSAxOnJldHVybiBsZT1iLnNlbnQoKSx1ZT1sZS51c2VyTmFtZSxjZT1sZS51c2VyTG9uZ05hbWUsWT1udWxsLChkZT1sZS5pc0xvZ2dlZEluKT9bMyw0XTpbNCx0aGlzLmxvZ091dCgpXTtj''@;'; put 'put ''YXNlIDI6cmV0dXJuIGIuc2VudCgpLFs0LHRoaXMuZ2V0TmV3TG9naW5Gb3JtKCldO2Nhc2UgMzpZPWIuc2VudCgpLGIubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzIsUHJvbWlzZS5yZXNvbHZlKHtpc0xvZ2dlZEluOmRlLHVzZXJOYW1lOnVlLHVzZXJMb25nTmFtZTpjZSxsb2dpbkZvcm06WX0p''@;'; put 'put ''XX19KX0pfSxpZS5wcm90b3R5cGUuZ2V0TmV3TG9naW5Gb3JtPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGxlO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oZGUpe3N3aXRjaChkZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnNlcnZlclR5''@;'; put 'put ''cGU9PT1FLlNlcnZlclR5cGUuU2FzanM/WzIsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiLyIsdm9pZCAwKS50aGVuKGZ1bmN0aW9uKHVlKXt2YXIgY2UsYj1udWxsPT09KGNlPS88c2NyaXB0PmRvY3VtZW50LmNvb2tpZSA9ICcoWFNSRi1UT0tFTj0uKjsgTWF4LUFnZT04NjQwMDsgU2FtZVNp''@;'; put 'put ''dGU9U3RyaWN0OyBQYXRoPVwvOyknPFwvc2NyaXB0Pi8uZXhlYyh1ZS5yZXN1bHQpKXx8dm9pZCAwPT09Y2U/dm9pZCAwOmNlWzFdO2ImJihkb2N1bWVudC5jb29raWU9Yil9KV06WzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCh0aGlzLmxvZ2luVXJsLnJlcGxhY2UoIi9TQVNMb2dvbi9sb2dp''@;'; put 'put ''bi5kbyIsIi9TQVNMb2dvbi9sb2dpbiIpLHZvaWQgMCwidGV4dC9wbGFpbiIpXTtjYXNlIDE6cmV0dXJuIGxlPWRlLnNlbnQoKS5yZXN1bHQsWzQsdGhpcy5nZXRMb2dpbkZvcm0obGUpXTtjYXNlIDI6cmV0dXJuWzIsZGUuc2VudCgpXX19KX0pfSxpZS5wcm90b3R5cGUuZmV0Y2hVc2VyTmFt''@;'; put 'put ''ZT1mdW5jdGlvbigpe3JldHVybiBJKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsZSxkZSx1ZTtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKGNlKXtzd2l0Y2goY2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gbGU9IiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLHRoaXMuc2VydmVyVHlw''@;'; put 'put ''ZT09PUUuU2VydmVyVHlwZS5TYXNWaXlhPyIvaWRlbnRpdGllcy91c2Vycy9AY3VycmVudFVzZXIiOnRoaXMuc2VydmVyVHlwZT09PUUuU2VydmVyVHlwZS5TYXM5PyIvU0FTU3RvcmVkUHJvY2VzcyI6Ii9TQVNqc0FwaS9zZXNzaW9uIiksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChsZSx2''@;'; put 'put ''b2lkIDAsInRleHQvcGxhaW4iKS5jYXRjaChmdW5jdGlvbihZKXtyZXR1cm57cmVzdWx0OiJhdXRoRXJyIn19KV07Y2FzZSAxOnJldHVybiBkZT1jZS5zZW50KCkucmVzdWx0LCh1ZT0iYXV0aEVyciIhPT1kZSk/WzMsM106WzQsdGhpcy5sb2dPdXQoKV07Y2FzZSAyOnJldHVybiBjZS5zZW50''@;'; put 'put ''KCksWzIse2lzTG9nZ2VkSW46dWUsdXNlck5hbWU6IiIsdXNlckxvbmdOYW1lOiIifV07Y2FzZSAzOnJldHVyblsyLHtpc0xvZ2dlZEluOnVlLHVzZXJOYW1lOnRoaXMuZXh0cmFjdFVzZXJOYW1lKGRlKSx1c2VyTG9uZ05hbWU6dGhpcy5leHRyYWN0VXNlckxvbmdOYW1lKGRlKX1dfX0pfSl9''@;'; put 'put ''LGllLnByb3RvdHlwZS5nZXRMb2dpbkZvcm09ZnVuY3Rpb24obGUpe3ZhciBkZT0vPGZvcm0uK2FjdGlvbj0iKC4qKExvZ29ufGxvZ2luKVteIl0qKS4qPi8uZXhlYyhsZSksdWU9e307aWYoZGUmJmRlLmxlbmd0aCl7dGhpcy5zZXRMb2dpblVybChkZSk7dmFyIGNlPShsZT1sZS5yZXBsYWNl''@;'; put 'put ''KC88aW5wdXQvZywiXG48aW5wdXQiKSkubWF0Y2goLzxpbnB1dC4qImhpZGRlbiJbXj5dKj4vZyk7Y2UmJmNlLmZvckVhY2goZnVuY3Rpb24oWSl7dmFyIGI9WS5tYXRjaCgvbmFtZT0iKFteIl0qKSJcc3ZhbHVlPSIoW14iXSopLyk7YiYmYi5sZW5ndGgmJih1ZVtiWzFdXT1iWzJdKX0pfXJl''@;'; put 'put ''dHVybiBPYmplY3Qua2V5cyh1ZSkubGVuZ3RoP3VlOm51bGx9LGllLnByb3RvdHlwZS5sb2dPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKGxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0Q2xpZW50LmNsZWFy''@;'; put 'put ''Q3NyZlRva2VucygpLFsyLHRoaXMucmVxdWVzdENsaWVudC5nZXQodGhpcy5sb2dvdXRVcmwsdm9pZCAwKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuITB9KV19KX0pfSxpZX0oKTtCLkF1dGhNYW5hZ2VyPXE7dmFyIHRlPWZ1bmN0aW9uKGllKXtyZXR1cm4vQW4gZXJyb3Igb2NjdXJyZWQgd2hp''@;'; put 'put ''bGUgdGhlIHN5c3RlbSB3YXMgdmVyaWZ5aW5nIHlvdXIgY3JlZGVudGlhbHMuIFBsZWFzZSBlbnRlciB5b3VyIGNyZWRlbnRpYWxzIGFnYWluLi9nbS50ZXN0KGllKX0sbmU9ZnVuY3Rpb24oaWUsbGUpe3JldHVybiBpZT09PUUuU2VydmVyVHlwZS5TYXNqcz9sZT8ubG9nZ2VkaW46L1lvdSBo''@;'; put 'put ''YXZlIHNpZ25lZCBpbi9nbS50ZXN0KGxlKX19LDU3OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFIsRSx6LGope3JldHVybiBuZXcoenx8KHo9UHJvbWlzZSkpKGZ1bmN0aW9uKFYsRyl7ZnVuY3Rpb24gVyh0ZSl7dHJ5''@;'; put 'put ''e3Eoai5uZXh0KHRlKSl9Y2F0Y2gobmUpe0cobmUpfX1mdW5jdGlvbiBVKHRlKXt0cnl7cShqLnRocm93KHRlKSl9Y2F0Y2gobmUpe0cobmUpfX1mdW5jdGlvbiBxKHRlKXt2YXIgbmU7dGUuZG9uZT9WKHRlLnZhbHVlKToobmU9dGUudmFsdWUsbmUgaW5zdGFuY2VvZiB6P25lOm5ldyB6KGZ1''@;'; put 'put ''bmN0aW9uKGllKXtpZShuZSl9KSkudGhlbihXLFUpfXEoKGo9ai5hcHBseShSLEV8fFtdKSkubmV4dCgpKX0pfSxKPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFIsRSl7dmFyIHosaixWLEcsVz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZWWzBdKXRocm93IFZbMV07''@;'; put 'put ''cmV0dXJuIFZbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gRz17bmV4dDpVKDApLHRocm93OlUoMSkscmV0dXJuOlUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihHW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEc7ZnVuY3Rpb24gVShxKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24odGUpe3JldHVybiBmdW5jdGlvbihuZSl7aWYoeil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtXOyl0cnl7aWYoej0xLGomJihWPTImbmVbMF0/ai5yZXR1cm46bmVbMF0/ai50aHJvd3x8KChWPWoucmV0dXJu''@;'; put 'put ''KSYmVi5jYWxsKGopLDApOmoubmV4dCkmJiEoVj1WLmNhbGwoaixuZVsxXSkpLmRvbmUpcmV0dXJuIFY7c3dpdGNoKGo9MCxWJiYobmU9WzImbmVbMF0sVi52YWx1ZV0pLG5lWzBdKXtjYXNlIDA6Y2FzZSAxOlY9bmU7YnJlYWs7Y2FzZSA0OnJldHVybiBXLmxhYmVsKysse3ZhbHVlOm5lWzFd''@;'; put 'put ''LGRvbmU6ITF9O2Nhc2UgNTpXLmxhYmVsKyssaj1uZVsxXSxuZT1bMF07Y29udGludWU7Y2FzZSA3Om5lPVcub3BzLnBvcCgpLFcudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFY9KFY9Vy50cnlzKS5sZW5ndGg+MCYmVltWLmxlbmd0aC0xXSl8fDYhPT1uZVswXSYmMiE9PW5l''@;'; put 'put ''WzBdKSl7Vz0wO2NvbnRpbnVlfWlmKDM9PT1uZVswXSYmKCFWfHxuZVsxXT5WWzBdJiZuZVsxXTxWWzNdKSl7Vy5sYWJlbD1uZVsxXTticmVha31pZig2PT09bmVbMF0mJlcubGFiZWw8VlsxXSl7Vy5sYWJlbD1WWzFdLFY9bmU7YnJlYWt9aWYoViYmVy5sYWJlbDxWWzJdKXtXLmxhYmVsPVZb''@;'; put 'put ''Ml0sVy5vcHMucHVzaChuZSk7YnJlYWt9VlsyXSYmVy5vcHMucG9wKCksVy50cnlzLnBvcCgpO2NvbnRpbnVlfW5lPUUuY2FsbChSLFcpfWNhdGNoKGllKXtuZT1bNixpZV0saj0wfWZpbmFsbHl7ej1WPTB9aWYoNSZuZVswXSl0aHJvdyBuZVsxXTtyZXR1cm57dmFsdWU6bmVbMF0/bmVbMV06''@;'; put 'put ''dm9pZCAwLGRvbmU6ITB9fShbcSx0ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmdldEFjY2Vzc1Rva2VuRm9yU2FzanM9dm9pZCAwO3ZhciBJPUwoOTc3OCk7Qi5nZXRBY2Nlc3NUb2tlbkZvclNhc2pzPWZ1bmN0aW9uKFIsRSx6KXty''@;'; put 'put ''ZXR1cm4gSyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKFYpe3N3aXRjaChWLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsUi5wb3N0KCIvU0FTanNBcGkvYXV0aC90b2tlbiIse2NsaWVudElkOkUsY29kZTp6fSx2b2lkIDApLnRoZW4oZnVuY3Rp''@;'; put 'put ''b24oRyl7dmFyIFc9Ry5yZXN1bHQ7cmV0dXJue2FjY2Vzc190b2tlbjpXLmFjY2Vzc1Rva2VuLHJlZnJlc2hfdG9rZW46Vy5yZWZyZXNoVG9rZW59fSkuY2F0Y2goZnVuY3Rpb24oRyl7dGhyb3coMCxJLnByZWZpeE1lc3NhZ2UpKEcsIkVycm9yIHdoaWxlIGdldHRpbmcgYWNjZXNzIHRva2Vu''@;'; put 'put ''LiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsVi5zZW50KCldfX0pfSl9fSwzNTY5OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9TCg4NzY0KS5CdWZmZXIsSj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oeixqLFYsRyl7cmV0dXJuIG5ldyhWfHwoVj1Qcm9taXNlKSko''@;'; put 'put ''ZnVuY3Rpb24oVyxVKXtmdW5jdGlvbiBxKGllKXt0cnl7bmUoRy5uZXh0KGllKSl9Y2F0Y2gobGUpe1UobGUpfX1mdW5jdGlvbiB0ZShpZSl7dHJ5e25lKEcudGhyb3coaWUpKX1jYXRjaChsZSl7VShsZSl9fWZ1bmN0aW9uIG5lKGllKXt2YXIgbGU7aWUuZG9uZT9XKGllLnZhbHVlKToobGU9''@;'; put 'put ''aWUudmFsdWUsbGUgaW5zdGFuY2VvZiBWP2xlOm5ldyBWKGZ1bmN0aW9uKGRlKXtkZShsZSl9KSkudGhlbihxLHRlKX1uZSgoRz1HLmFwcGx5KHosanx8W10pKS5uZXh0KCkpfSl9LEk9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oeixqKXt2YXIgVixHLFcsVSxxPXtsYWJlbDow''@;'; put 'put ''LHNlbnQ6ZnVuY3Rpb24oKXtpZigxJldbMF0pdGhyb3cgV1sxXTtyZXR1cm4gV1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBVPXtuZXh0OnRlKDApLHRocm93OnRlKDEpLHJldHVybjp0ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFVbU3ltYm9sLml0ZXJhdG9yXT1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzfSksVTtmdW5jdGlvbiB0ZShuZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtyZXR1cm4gZnVuY3Rpb24obGUpe2lmKFYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cTspdHJ5e2lmKFY9MSxHJiYoVz0y''@;'; put 'put ''JmxlWzBdP0cucmV0dXJuOmxlWzBdP0cudGhyb3d8fCgoVz1HLnJldHVybikmJlcuY2FsbChHKSwwKTpHLm5leHQpJiYhKFc9Vy5jYWxsKEcsbGVbMV0pKS5kb25lKXJldHVybiBXO3N3aXRjaChHPTAsVyYmKGxlPVsyJmxlWzBdLFcudmFsdWVdKSxsZVswXSl7Y2FzZSAwOmNhc2UgMTpXPWxl''@;'; put 'put ''O2JyZWFrO2Nhc2UgNDpyZXR1cm4gcS5sYWJlbCsrLHt2YWx1ZTpsZVsxXSxkb25lOiExfTtjYXNlIDU6cS5sYWJlbCsrLEc9bGVbMV0sbGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsZT1xLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChXPShXPXEudHJ5cyku''@;'; put 'put ''bGVuZ3RoPjAmJldbVy5sZW5ndGgtMV0pfHw2IT09bGVbMF0mJjIhPT1sZVswXSkpe3E9MDtjb250aW51ZX1pZigzPT09bGVbMF0mJighV3x8bGVbMV0+V1swXSYmbGVbMV08V1szXSkpe3EubGFiZWw9bGVbMV07YnJlYWt9aWYoNj09PWxlWzBdJiZxLmxhYmVsPFdbMV0pe3EubGFiZWw9V1sx''@;'; put 'put ''XSxXPWxlO2JyZWFrfWlmKFcmJnEubGFiZWw8V1syXSl7cS5sYWJlbD1XWzJdLHEub3BzLnB1c2gobGUpO2JyZWFrfVdbMl0mJnEub3BzLnBvcCgpLHEudHJ5cy5wb3AoKTtjb250aW51ZX1sZT1qLmNhbGwoeixxKX1jYXRjaChkZSl7bGU9WzYsZGVdLEc9MH1maW5hbGx5e1Y9Vz0wfWlmKDUm''@;'; put 'put ''bGVbMF0pdGhyb3cgbGVbMV07cmV0dXJue3ZhbHVlOmxlWzBdP2xlWzFdOnZvaWQgMCxkb25lOiEwfX0oW25lLGllXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2V0QWNjZXNzVG9rZW5Gb3JWaXlhPXZvaWQgMDt2YXIgUj1MKDk3Nzgp''@;'; put 'put ''LEU9TCgxMzk1KTtCLmdldEFjY2Vzc1Rva2VuRm9yVml5YT1mdW5jdGlvbih6LGosVixHKXtyZXR1cm4gSih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVyxVLHE7cmV0dXJuIEkodGhpcyxmdW5jdGlvbih0ZSl7c3dpdGNoKHRlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIFc9dm9p''@;'; put 'put ''ZCAwPT09Sz9idG9hKGorIjoiK1YpOksuZnJvbShqKyI6IitWKS50b1N0cmluZygiYmFzZTY0IiksVT17QXV0aG9yaXphdGlvbjoiQmFzaWMgIitXLEFjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LHE9bmV3IFVSTFNlYXJjaFBhcmFtcyh7Z3JhbnRfdHlwZToiYXV0aG9yaXphdGlvbl9jb2Rl''@;'; put 'put ''Iixjb2RlOkd9KSxbNCx6LnBvc3QoIi9TQVNMb2dvbi9vYXV0aC90b2tlbiIscSx2b2lkIDAsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsVSkudGhlbihmdW5jdGlvbihuZSl7cmV0dXJuIG5lLnJlc3VsdH0pLmNhdGNoKGZ1bmN0aW9uKG5lKXt0aHJvdyBuZSBpbnN0YW5j''@;'; put 'put ''ZW9mIEUuQ2VydGlmaWNhdGVFcnJvcj9uZTooMCxSLnByZWZpeE1lc3NhZ2UpKG5lLCJFcnJvciB3aGlsZSBnZXR0aW5nIGFjY2VzcyB0b2tlbi4gIil9KV07Y2FzZSAxOnJldHVyblsyLHRlLnNlbnQoKV19fSl9KX19LDcwNDpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPUwo''@;'; put 'put ''NDE1NSksSj1MKDUxMDgpLEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEcsVyxVLHEpe3JldHVybiBuZXcoVXx8KFU9UHJvbWlzZSkpKGZ1bmN0aW9uKHRlLG5lKXtmdW5jdGlvbiBpZSh1ZSl7dHJ5e2RlKHEubmV4dCh1ZSkpfWNhdGNoKGNlKXtuZShjZSl9fWZ1bmN0aW9uIGxl''@;'; put 'put ''KHVlKXt0cnl7ZGUocS50aHJvdyh1ZSkpfWNhdGNoKGNlKXtuZShjZSl9fWZ1bmN0aW9uIGRlKHVlKXt2YXIgY2U7dWUuZG9uZT90ZSh1ZS52YWx1ZSk6KGNlPXVlLnZhbHVlLGNlIGluc3RhbmNlb2YgVT9jZTpuZXcgVShmdW5jdGlvbihZKXtZKGNlKX0pKS50aGVuKGllLGxlKX1kZSgocT1x''@;'; put 'put ''LmFwcGx5KEcsV3x8W10pKS5uZXh0KCkpfSl9LFI9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oRyxXKXt2YXIgVSxxLHRlLG5lLGllPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnRlWzBdKXRocm93IHRlWzFdO3JldHVybiB0ZVsxXX0sdHJ5czpbXSxvcHM6W119O3Jl''@;'; put 'put ''dHVybiBuZT17bmV4dDpsZSgwKSx0aHJvdzpsZSgxKSxyZXR1cm46bGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihuZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxuZTtmdW5jdGlvbiBsZShkZSl7cmV0dXJuIGZ1bmN0aW9uKHVlKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24oY2Upe2lmKFUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7aWU7KXRyeXtpZihVPTEscSYmKHRlPTImY2VbMF0/cS5yZXR1cm46Y2VbMF0/cS50aHJvd3x8KCh0ZT1xLnJldHVybikmJnRlLmNhbGwocSksMCk6cS5u''@;'; put 'put ''ZXh0KSYmISh0ZT10ZS5jYWxsKHEsY2VbMV0pKS5kb25lKXJldHVybiB0ZTtzd2l0Y2gocT0wLHRlJiYoY2U9WzImY2VbMF0sdGUudmFsdWVdKSxjZVswXSl7Y2FzZSAwOmNhc2UgMTp0ZT1jZTticmVhaztjYXNlIDQ6cmV0dXJuIGllLmxhYmVsKysse3ZhbHVlOmNlWzFdLGRvbmU6ITF9O2Nh''@;'; put 'put ''c2UgNTppZS5sYWJlbCsrLHE9Y2VbMV0sY2U9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjZT1pZS5vcHMucG9wKCksaWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHRlPSh0ZT1pZS50cnlzKS5sZW5ndGg+MCYmdGVbdGUubGVuZ3RoLTFdKXx8NiE9PWNlWzBdJiYyIT09Y2VbMF0p''@;'; put 'put ''KXtpZT0wO2NvbnRpbnVlfWlmKDM9PT1jZVswXSYmKCF0ZXx8Y2VbMV0+dGVbMF0mJmNlWzFdPHRlWzNdKSl7aWUubGFiZWw9Y2VbMV07YnJlYWt9aWYoNj09PWNlWzBdJiZpZS5sYWJlbDx0ZVsxXSl7aWUubGFiZWw9dGVbMV0sdGU9Y2U7YnJlYWt9aWYodGUmJmllLmxhYmVsPHRlWzJdKXtp''@;'; put 'put ''ZS5sYWJlbD10ZVsyXSxpZS5vcHMucHVzaChjZSk7YnJlYWt9dGVbMl0mJmllLm9wcy5wb3AoKSxpZS50cnlzLnBvcCgpO2NvbnRpbnVlfWNlPVcuY2FsbChHLGllKX1jYXRjaChZKXtjZT1bNixZXSxxPTB9ZmluYWxseXtVPXRlPTB9aWYoNSZjZVswXSl0aHJvdyBjZVsxXTtyZXR1cm57dmFs''@;'; put 'put ''dWU6Y2VbMF0/Y2VbMV06dm9pZCAwLGRvbmU6ITB9fShbZGUsdWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5nZXRUb2tlbnM9dm9pZCAwO3ZhciBFPUwoNjc5OSksej1MKDM5MDApLGo9TCgzNjYpLFY9TCgyNDkpO0IuZ2V0VG9rZW5z''@;'; put 'put ''PWZ1bmN0aW9uKEcsVyxVKXtyZXR1cm4gdm9pZCAwPT09VSYmKFU9ei5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHEsdGUsbmUsaWUsbGUsdWUsY2U7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAw''@;'; put 'put ''OmlmKHE9Sy5sb2dnZXJ8fEosbmU9Vy5yZWZyZXNoX3Rva2VuLGllPVcuY2xpZW50LGxlPVcuc2VjcmV0LCEoMCxFLmlzQWNjZXNzVG9rZW5FeHBpcmluZykodGU9Vy5hY2Nlc3NfdG9rZW4pJiYhKDAsRS5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nKShuZSkpcmV0dXJuWzMsNV07aWYoKDAsRS5o''@;'; put 'put ''YXNUb2tlbkV4cGlyZWQpKG5lKSl0aHJvdyBxLmVycm9yKCJVbmFibGUgdG8gb2J0YWluIG5ldyBhY2Nlc3MgdG9rZW4uIFlvdXIgcmVmcmVzaCB0b2tlbiBoYXMgZXhwaXJlZC4iKSxuZXcgRXJyb3IoIlVuYWJsZSB0byBvYnRhaW4gbmV3IGFjY2VzcyB0b2tlbi4gWW91ciByZWZyZXNoIHRv''@;'; put 'put ''a2VuIGhhcyBleHBpcmVkLiIpO3JldHVybiBxLmluZm8oIlJlZnJlc2hpbmcgYWNjZXNzIGFuZCByZWZyZXNoIHRva2Vucy4iKSxVIT09ei5TZXJ2ZXJUeXBlLlNhc1ZpeWE/WzMsMl06WzQsKDAsai5yZWZyZXNoVG9rZW5zRm9yVml5YSkoRyxpZSxsZSxuZSldO2Nhc2UgMTpyZXR1cm4gY2U9''@;'; put 'put ''WS5zZW50KCksWzMsNF07Y2FzZSAyOnJldHVybls0LCgwLFYucmVmcmVzaFRva2Vuc0ZvclNhc2pzKShHLG5lKV07Y2FzZSAzOmNlPVkuc2VudCgpLFkubGFiZWw9NDtjYXNlIDQ6dGU9KHVlPWNlKS5hY2Nlc3NfdG9rZW4sbmU9dWUucmVmcmVzaF90b2tlbixZLmxhYmVsPTU7Y2FzZSA1OnJl''@;'; put 'put ''dHVyblsyLHthY2Nlc3NfdG9rZW46dGUscmVmcmVzaF90b2tlbjpuZSxjbGllbnQ6aWUsc2VjcmV0OmxlfV19fSl9KX19LDE1Mjc6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oSSxS''@;'; put 'put ''LEUseil7dm9pZCAwPT09eiYmKHo9RSk7dmFyIGo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSLEUpO2omJiEoImdldCJpbiBqPyFSLl9fZXNNb2R1bGU6ai53cml0YWJsZXx8ai5jb25maWd1cmFibGUpfHwoaj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''UltFXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSSx6LGopfTpmdW5jdGlvbihJLFIsRSx6KXt2b2lkIDA9PT16JiYoej1FKSxJW3pdPVJbRV19KSxKPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihJLFIpe2Zvcih2YXIgRSBpbiBJKSJkZWZhdWx0Ij09PUV8fE9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSLEUpfHxLKFIsSSxFKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEooTCgyODUxKSxCKSxKKEwoOTA5NyksQiksSihMKDkxNjYpLEIpfSw5MDk3OihILEIpPT57InVzZSBzdHJpY3QiO09iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkPXZvaWQgMCxCLmlzQXV0aG9yaXplRm9ybVJlcXVpcmVkPWZ1bmN0aW9uKEwpe3JldHVybi88Zm9ybS4rYWN0aW9uPSIoLipMb2dvblwvb2F1dGhcL2F1dGhvcml6ZVte''@;'; put 'put ''Il0qKS4qPi9nbS50ZXN0KEwpfX0sOTE2NjooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5pc0xvZ0luUmVxdWlyZWQ9dm9pZCAwLEIuaXNMb2dJblJlcXVpcmVkPWZ1bmN0aW9uKEwpe3JldHVybi88Zm9ybS4r''@;'; put 'put ''YWN0aW9uPSIoLiooTG9nb24pfChsb2dpbilbXiJdKikuKj4vZ20udGVzdChMKX19LDU0MTg6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oRSx6LGosVil7cmV0dXJuIG5ldyhqfHwoaj1Qcm9taXNlKSkoZnVuY3Rpb24o''@;'; put 'put ''RyxXKXtmdW5jdGlvbiBVKG5lKXt0cnl7dGUoVi5uZXh0KG5lKSl9Y2F0Y2goaWUpe1coaWUpfX1mdW5jdGlvbiBxKG5lKXt0cnl7dGUoVi50aHJvdyhuZSkpfWNhdGNoKGllKXtXKGllKX19ZnVuY3Rpb24gdGUobmUpe3ZhciBpZTtuZS5kb25lP0cobmUudmFsdWUpOihpZT1uZS52YWx1ZSxp''@;'; put 'put ''ZSBpbnN0YW5jZW9mIGo/aWU6bmV3IGooZnVuY3Rpb24obGUpe2xlKGllKX0pKS50aGVuKFUscSl9dGUoKFY9Vi5hcHBseShFLHp8fFtdKSkubmV4dCgpKX0pfSxKPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEUseil7dmFyIGosVixHLFcsVT17bGFiZWw6MCxzZW50OmZ1bmN0''@;'; put 'put ''aW9uKCl7aWYoMSZHWzBdKXRocm93IEdbMV07cmV0dXJuIEdbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVz17bmV4dDpxKDApLHRocm93OnEoMSkscmV0dXJuOnEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihXW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpc30pLFc7ZnVuY3Rpb24gcSh0ZSl7cmV0dXJuIGZ1bmN0aW9uKG5lKXtyZXR1cm4gZnVuY3Rpb24oaWUpe2lmKGopdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7VTspdHJ5e2lmKGo9MSxWJiYoRz0yJmllWzBdP1YucmV0dXJu''@;'; put 'put ''OmllWzBdP1YudGhyb3d8fCgoRz1WLnJldHVybikmJkcuY2FsbChWKSwwKTpWLm5leHQpJiYhKEc9Ry5jYWxsKFYsaWVbMV0pKS5kb25lKXJldHVybiBHO3N3aXRjaChWPTAsRyYmKGllPVsyJmllWzBdLEcudmFsdWVdKSxpZVswXSl7Y2FzZSAwOmNhc2UgMTpHPWllO2JyZWFrO2Nhc2UgNDpy''@;'; put 'put ''ZXR1cm4gVS5sYWJlbCsrLHt2YWx1ZTppZVsxXSxkb25lOiExfTtjYXNlIDU6VS5sYWJlbCsrLFY9aWVbMV0saWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzppZT1VLm9wcy5wb3AoKSxVLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChHPShHPVUudHJ5cykubGVuZ3RoPjAmJkdbRy5s''@;'; put 'put ''ZW5ndGgtMV0pfHw2IT09aWVbMF0mJjIhPT1pZVswXSkpe1U9MDtjb250aW51ZX1pZigzPT09aWVbMF0mJighR3x8aWVbMV0+R1swXSYmaWVbMV08R1szXSkpe1UubGFiZWw9aWVbMV07YnJlYWt9aWYoNj09PWllWzBdJiZVLmxhYmVsPEdbMV0pe1UubGFiZWw9R1sxXSxHPWllO2JyZWFrfWlm''@;'; put 'put ''KEcmJlUubGFiZWw8R1syXSl7VS5sYWJlbD1HWzJdLFUub3BzLnB1c2goaWUpO2JyZWFrfUdbMl0mJlUub3BzLnBvcCgpLFUudHJ5cy5wb3AoKTtjb250aW51ZX1pZT16LmNhbGwoRSxVKX1jYXRjaChsZSl7aWU9WzYsbGVdLFY9MH1maW5hbGx5e2o9Rz0wfWlmKDUmaWVbMF0pdGhyb3cgaWVb''@;'; put 'put ''MV07cmV0dXJue3ZhbHVlOmllWzBdP2llWzFdOnZvaWQgMCxkb25lOiEwfX0oW3RlLG5lXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIub3BlbldlYlBhZ2U9dm9pZCAwO3ZhciBJPUwoMTIxMCksUj17d2lkdGg6NTAwLGhlaWdodDo2MDB9''@;'; put 'put ''O0Iub3BlbldlYlBhZ2U9ZnVuY3Rpb24oRSx6LGosVil7cmV0dXJuIHZvaWQgMD09PXomJih6PSIiKSx2b2lkIDA9PT1qJiYoaj1SKSxLKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBHLFcsVSxxLHRlO3JldHVybiBKKHRoaXMsZnVuY3Rpb24obmUpe3N3aXRjaChuZS5sYWJl''@;'; put 'put ''bCl7Y2FzZSAwOnJldHVybiBHPWoud2lkdGgsVz1qLmhlaWdodCxVPXNjcmVlbi53aWR0aC8yLUcvMixxPXNjcmVlbi5oZWlnaHQvMi1XLzIsKHRlPXdpbmRvdy5vcGVuKEUseiwidG9vbGJhcj0wLGxvY2F0aW9uPTAsbWVudWJhcj0wLHdpZHRoPSIuY29uY2F0KEcsIixoZWlnaHQ9IikuY29u''@;'; put 'put ''Y2F0KFcsIixsZWZ0PSIpLmNvbmNhdChVLCIsdG9wPSIpLmNvbmNhdChxKSkpP1szLDJdOls0LChWPz9JLm9wZW5Mb2dpblByb21wdCkoKV07Y2FzZSAxOnJldHVyblsyLG5lLnNlbnQoKT93aW5kb3cub3BlbihFLHosInRvb2xiYXI9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx3aWR0aD0iLmNv''@;'; put 'put ''bmNhdChHLCIsaGVpZ2h0PSIpLmNvbmNhdChXLCIsbGVmdD0iKS5jb25jYXQoVSwiLHRvcD0iKS5jb25jYXQocSkpOm51bGxdO2Nhc2UgMjpyZXR1cm5bMix0ZV19fSl9KX19LDI0OTpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5j''@;'; put 'put ''dGlvbihSLEUseixqKXtyZXR1cm4gbmV3KHp8fCh6PVByb21pc2UpKShmdW5jdGlvbihWLEcpe2Z1bmN0aW9uIFcodGUpe3RyeXtxKGoubmV4dCh0ZSkpfWNhdGNoKG5lKXtHKG5lKX19ZnVuY3Rpb24gVSh0ZSl7dHJ5e3Eoai50aHJvdyh0ZSkpfWNhdGNoKG5lKXtHKG5lKX19ZnVuY3Rpb24g''@;'; put 'put ''cSh0ZSl7dmFyIG5lO3RlLmRvbmU/Vih0ZS52YWx1ZSk6KG5lPXRlLnZhbHVlLG5lIGluc3RhbmNlb2Ygej9uZTpuZXcgeihmdW5jdGlvbihpZSl7aWUobmUpfSkpLnRoZW4oVyxVKX1xKChqPWouYXBwbHkoUixFfHxbXSkpLm5leHQoKSl9KX0sSj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxm''@;'; put 'put ''dW5jdGlvbihSLEUpe3ZhciB6LGosVixHLFc9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVlswXSl0aHJvdyBWWzFdO3JldHVybiBWWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEc9e25leHQ6VSgwKSx0aHJvdzpVKDEpLHJldHVybjpVKDIpfSwiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiYoR1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxHO2Z1bmN0aW9uIFUocSl7cmV0dXJuIGZ1bmN0aW9uKHRlKXtyZXR1cm4gZnVuY3Rpb24obmUpe2lmKHopdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5n''@;'; put 'put ''LiIpO2Zvcig7VzspdHJ5e2lmKHo9MSxqJiYoVj0yJm5lWzBdP2oucmV0dXJuOm5lWzBdP2oudGhyb3d8fCgoVj1qLnJldHVybikmJlYuY2FsbChqKSwwKTpqLm5leHQpJiYhKFY9Vi5jYWxsKGosbmVbMV0pKS5kb25lKXJldHVybiBWO3N3aXRjaChqPTAsViYmKG5lPVsyJm5lWzBdLFYudmFs''@;'; put 'put ''dWVdKSxuZVswXSl7Y2FzZSAwOmNhc2UgMTpWPW5lO2JyZWFrO2Nhc2UgNDpyZXR1cm4gVy5sYWJlbCsrLHt2YWx1ZTpuZVsxXSxkb25lOiExfTtjYXNlIDU6Vy5sYWJlbCsrLGo9bmVbMV0sbmU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpuZT1XLm9wcy5wb3AoKSxXLnRyeXMucG9wKCk7Y29udGlu''@;'; put 'put ''dWU7ZGVmYXVsdDppZighKChWPShWPVcudHJ5cykubGVuZ3RoPjAmJlZbVi5sZW5ndGgtMV0pfHw2IT09bmVbMF0mJjIhPT1uZVswXSkpe1c9MDtjb250aW51ZX1pZigzPT09bmVbMF0mJighVnx8bmVbMV0+VlswXSYmbmVbMV08VlszXSkpe1cubGFiZWw9bmVbMV07YnJlYWt9aWYoNj09PW5l''@;'; put 'put ''WzBdJiZXLmxhYmVsPFZbMV0pe1cubGFiZWw9VlsxXSxWPW5lO2JyZWFrfWlmKFYmJlcubGFiZWw8VlsyXSl7Vy5sYWJlbD1WWzJdLFcub3BzLnB1c2gobmUpO2JyZWFrfVZbMl0mJlcub3BzLnBvcCgpLFcudHJ5cy5wb3AoKTtjb250aW51ZX1uZT1FLmNhbGwoUixXKX1jYXRjaChpZSl7bmU9''@;'; put 'put ''WzYsaWVdLGo9MH1maW5hbGx5e3o9Vj0wfWlmKDUmbmVbMF0pdGhyb3cgbmVbMV07cmV0dXJue3ZhbHVlOm5lWzBdP25lWzFdOnZvaWQgMCxkb25lOiEwfX0oW3EsdGVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5yZWZyZXNoVG9rZW5z''@;'; put 'put ''Rm9yU2FzanM9dm9pZCAwO3ZhciBJPUwoOTc3OCk7Qi5yZWZyZXNoVG9rZW5zRm9yU2FzanM9ZnVuY3Rpb24oUixFKXtyZXR1cm4gSyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGope3N3aXRjaChqLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQs''@;'; put 'put ''Ui5wb3N0KCIvU0FTanNBcGkvYXV0aC9yZWZyZXNoIix2b2lkIDAsdm9pZCAwLHZvaWQgMCx7QXV0aG9yaXphdGlvbjoiQmVhcmVyICIrRX0pLnRoZW4oZnVuY3Rpb24oVil7dmFyIEc9Vi5yZXN1bHQ7cmV0dXJue2FjY2Vzc190b2tlbjpHLmFjY2Vzc1Rva2VuLHJlZnJlc2hfdG9rZW46Ry5y''@;'; put 'put ''ZWZyZXNoVG9rZW59fSkuY2F0Y2goZnVuY3Rpb24oVil7dGhyb3coMCxJLnByZWZpeE1lc3NhZ2UpKFYsIkVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdG9rZW5zOiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsai5zZW50KCldfX0pfSl9fSwzNjY6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgSz1MKDg3NjQpLkJ1ZmZlcixKPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihqLFYsRyxXKXtyZXR1cm4gbmV3KEd8fChHPVByb21pc2UpKShmdW5jdGlvbihVLHEpe2Z1bmN0aW9uIHRlKGxlKXt0cnl7aWUoVy5uZXh0KGxlKSl9Y2F0Y2goZGUpe3EoZGUpfX1mdW5jdGlvbiBu''@;'; put 'put ''ZShsZSl7dHJ5e2llKFcudGhyb3cobGUpKX1jYXRjaChkZSl7cShkZSl9fWZ1bmN0aW9uIGllKGxlKXt2YXIgZGU7bGUuZG9uZT9VKGxlLnZhbHVlKTooZGU9bGUudmFsdWUsZGUgaW5zdGFuY2VvZiBHP2RlOm5ldyBHKGZ1bmN0aW9uKHVlKXt1ZShkZSl9KSkudGhlbih0ZSxuZSl9aWUoKFc9''@;'; put 'put ''Vy5hcHBseShqLFZ8fFtdKSkubmV4dCgpKX0pfSxJPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGosVil7dmFyIEcsVyxVLHEsdGU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVVswXSl0aHJvdyBVWzFdO3JldHVybiBVWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJu''@;'; put 'put ''IHE9e25leHQ6bmUoMCksdGhyb3c6bmUoMSkscmV0dXJuOm5lKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYocVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxxO2Z1bmN0aW9uIG5lKGllKXtyZXR1cm4gZnVuY3Rpb24obGUpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihkZSl7aWYoRyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt0ZTspdHJ5e2lmKEc9MSxXJiYoVT0yJmRlWzBdP1cucmV0dXJuOmRlWzBdP1cudGhyb3d8fCgoVT1XLnJldHVybikmJlUuY2FsbChXKSwwKTpXLm5leHQpJiYhKFU9''@;'; put 'put ''VS5jYWxsKFcsZGVbMV0pKS5kb25lKXJldHVybiBVO3N3aXRjaChXPTAsVSYmKGRlPVsyJmRlWzBdLFUudmFsdWVdKSxkZVswXSl7Y2FzZSAwOmNhc2UgMTpVPWRlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdGUubGFiZWwrKyx7dmFsdWU6ZGVbMV0sZG9uZTohMX07Y2FzZSA1OnRlLmxhYmVsKyss''@;'; put 'put ''Vz1kZVsxXSxkZT1bMF07Y29udGludWU7Y2FzZSA3OmRlPXRlLm9wcy5wb3AoKSx0ZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVT0oVT10ZS50cnlzKS5sZW5ndGg+MCYmVVtVLmxlbmd0aC0xXSl8fDYhPT1kZVswXSYmMiE9PWRlWzBdKSl7dGU9MDtjb250aW51ZX1pZigz''@;'; put 'put ''PT09ZGVbMF0mJighVXx8ZGVbMV0+VVswXSYmZGVbMV08VVszXSkpe3RlLmxhYmVsPWRlWzFdO2JyZWFrfWlmKDY9PT1kZVswXSYmdGUubGFiZWw8VVsxXSl7dGUubGFiZWw9VVsxXSxVPWRlO2JyZWFrfWlmKFUmJnRlLmxhYmVsPFVbMl0pe3RlLmxhYmVsPVVbMl0sdGUub3BzLnB1c2goZGUp''@;'; put 'put ''O2JyZWFrfVVbMl0mJnRlLm9wcy5wb3AoKSx0ZS50cnlzLnBvcCgpO2NvbnRpbnVlfWRlPVYuY2FsbChqLHRlKX1jYXRjaCh1ZSl7ZGU9WzYsdWVdLFc9MH1maW5hbGx5e0c9VT0wfWlmKDUmZGVbMF0pdGhyb3cgZGVbMV07cmV0dXJue3ZhbHVlOmRlWzBdP2RlWzFdOnZvaWQgMCxkb25lOiEw''@;'; put 'put ''fX0oW2llLGxlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIucmVmcmVzaFRva2Vuc0ZvclZpeWE9dm9pZCAwO3ZhciBSPUwoOTc3OCksRT1MKDYyMzApLHo9TCg1OTI4KTtCLnJlZnJlc2hUb2tlbnNGb3JWaXlhPWZ1bmN0aW9uKGosVixH''@;'; put 'put ''LFcpe3JldHVybiBKKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBVLHEsdGU7cmV0dXJuIEkodGhpcyxmdW5jdGlvbihuZSl7c3dpdGNoKG5lLmxhYmVsKXtjYXNlIDA6aWYoISgwLHouaXNOb2RlKSgpKXRocm93IG5ldyBFcnJvcigiTWV0aG9kICdyZWZyZXNoVG9rZW5zRm9y''@;'; put 'put ''Vml5YScgY2FuIG9ubHkgYmUgdXNlZCBieSBOb2RlLiIpO3JldHVybiBVPXZvaWQgMD09PUs/YnRvYShWKyI6IitHKTpLLmZyb20oVisiOiIrRykudG9TdHJpbmcoImJhc2U2NCIpLHE9e0F1dGhvcml6YXRpb246IkJhc2ljICIrVX0sKHRlPW5ldyBFKS5hcHBlbmQoImdyYW50X3R5cGUiLCJy''@;'; put 'put ''ZWZyZXNoX3Rva2VuIiksdGUuYXBwZW5kKCJyZWZyZXNoX3Rva2VuIixXKSxbNCxqLnBvc3QoIi9TQVNMb2dvbi9vYXV0aC90b2tlbiIsdGUsdm9pZCAwLCJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK3RlLl9ib3VuZGFyeSxxKS50aGVuKGZ1bmN0aW9uKGllKXtyZXR1cm4gaWUu''@;'; put 'put ''cmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24oaWUpe3Rocm93KDAsUi5wcmVmaXhNZXNzYWdlKShpZSwiRXJyb3Igd2hpbGUgcmVmcmVzaGluZyB0b2tlbnM6ICIpfSldO2Nhc2UgMTpyZXR1cm5bMixuZS5zZW50KCldfX0pfSl9fSw0NTgyOmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFIsRSx6LGope3JldHVybiBuZXcoenx8KHo9UHJvbWlzZSkpKGZ1bmN0aW9uKFYsRyl7ZnVuY3Rpb24gVyh0ZSl7dHJ5e3Eoai5uZXh0KHRlKSl9Y2F0Y2gobmUpe0cobmUpfX1mdW5jdGlvbiBVKHRlKXt0cnl7cShqLnRocm93KHRl''@;'; put 'put ''KSl9Y2F0Y2gobmUpe0cobmUpfX1mdW5jdGlvbiBxKHRlKXt2YXIgbmU7dGUuZG9uZT9WKHRlLnZhbHVlKToobmU9dGUudmFsdWUsbmUgaW5zdGFuY2VvZiB6P25lOm5ldyB6KGZ1bmN0aW9uKGllKXtpZShuZSl9KSkudGhlbihXLFUpfXEoKGo9ai5hcHBseShSLEV8fFtdKSkubmV4dCgpKX0p''@;'; put 'put ''fSxKPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFIsRSl7dmFyIHosaixWLEcsVz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZWWzBdKXRocm93IFZbMV07cmV0dXJuIFZbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gRz17bmV4dDpVKDApLHRocm93OlUoMSkscmV0''@;'; put 'put ''dXJuOlUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihHW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEc7ZnVuY3Rpb24gVShxKXtyZXR1cm4gZnVuY3Rpb24odGUpe3JldHVybiBmdW5jdGlvbihuZSl7aWYoeil0aHJvdyBuZXcgVHlwZUVycm9yKCJH''@;'; put 'put ''ZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtXOyl0cnl7aWYoej0xLGomJihWPTImbmVbMF0/ai5yZXR1cm46bmVbMF0/ai50aHJvd3x8KChWPWoucmV0dXJuKSYmVi5jYWxsKGopLDApOmoubmV4dCkmJiEoVj1WLmNhbGwoaixuZVsxXSkpLmRvbmUpcmV0dXJuIFY7c3dp''@;'; put 'put ''dGNoKGo9MCxWJiYobmU9WzImbmVbMF0sVi52YWx1ZV0pLG5lWzBdKXtjYXNlIDA6Y2FzZSAxOlY9bmU7YnJlYWs7Y2FzZSA0OnJldHVybiBXLmxhYmVsKysse3ZhbHVlOm5lWzFdLGRvbmU6ITF9O2Nhc2UgNTpXLmxhYmVsKyssaj1uZVsxXSxuZT1bMF07Y29udGludWU7Y2FzZSA3Om5lPVcu''@;'; put 'put ''b3BzLnBvcCgpLFcudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFY9KFY9Vy50cnlzKS5sZW5ndGg+MCYmVltWLmxlbmd0aC0xXSl8fDYhPT1uZVswXSYmMiE9PW5lWzBdKSl7Vz0wO2NvbnRpbnVlfWlmKDM9PT1uZVswXSYmKCFWfHxuZVsxXT5WWzBdJiZuZVsxXTxWWzNdKSl7''@;'; put 'put ''Vy5sYWJlbD1uZVsxXTticmVha31pZig2PT09bmVbMF0mJlcubGFiZWw8VlsxXSl7Vy5sYWJlbD1WWzFdLFY9bmU7YnJlYWt9aWYoViYmVy5sYWJlbDxWWzJdKXtXLmxhYmVsPVZbMl0sVy5vcHMucHVzaChuZSk7YnJlYWt9VlsyXSYmVy5vcHMucG9wKCksVy50cnlzLnBvcCgpO2NvbnRpbnVl''@;'; put 'put ''fW5lPUUuY2FsbChSLFcpfWNhdGNoKGllKXtuZT1bNixpZV0saj0wfWZpbmFsbHl7ej1WPTB9aWYoNSZuZVswXSl0aHJvdyBuZVsxXTtyZXR1cm57dmFsdWU6bmVbMF0/bmVbMV06dm9pZCAwLGRvbmU6ITB9fShbcSx0ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxl''@;'; put 'put ''Iix7dmFsdWU6ITB9KSxCLnZlcmlmeVNhczlMb2dpbj12b2lkIDA7dmFyIEk9TCg1OTI4KTtCLnZlcmlmeVNhczlMb2dpbj1mdW5jdGlvbihSKXtyZXR1cm4gSyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRSx6LGo7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihWKXtzd2l0Y2go''@;'; put 'put ''Vi5sYWJlbCl7Y2FzZSAwOkU9ITEsej1uZXcgRGF0ZSxqPTAsVi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm5bNCwoMCxJLmRlbGF5KSgxZTMpXTtjYXNlIDI6aWYoVi5zZW50KCksUi5jbG9zZWQpcmV0dXJuWzMsNF07RT1SLndpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCJTQVNMb2dvbiIp''@;'; put 'put ''JiZSLndpbmRvdy5kb2N1bWVudC5ib2R5LmlubmVyVGV4dC5pbmNsdWRlcygiWW91IGhhdmUgc2lnbmVkIGluLiIpLGo9KChuZXcgRGF0ZSkudmFsdWVPZigpLXoudmFsdWVPZigpKS8xZTMsVi5sYWJlbD0zO2Nhc2UgMzppZighRSYmajwzMDApcmV0dXJuWzMsMV07Vi5sYWJlbD00O2Nhc2Ug''@;'; put 'put ''NDpyZXR1cm5bMix7aXNMb2dnZWRJbjpFfV19fSl9KX19LDY1NDc6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oUixFLHosail7cmV0dXJuIG5ldyh6fHwoej1Qcm9taXNlKSkoZnVuY3Rpb24oVixHKXtmdW5jdGlvbiBX''@;'; put 'put ''KHRlKXt0cnl7cShqLm5leHQodGUpKX1jYXRjaChuZSl7RyhuZSl9fWZ1bmN0aW9uIFUodGUpe3RyeXtxKGoudGhyb3codGUpKX1jYXRjaChuZSl7RyhuZSl9fWZ1bmN0aW9uIHEodGUpe3ZhciBuZTt0ZS5kb25lP1YodGUudmFsdWUpOihuZT10ZS52YWx1ZSxuZSBpbnN0YW5jZW9mIHo/bmU6''@;'; put 'put ''bmV3IHooZnVuY3Rpb24oaWUpe2llKG5lKX0pKS50aGVuKFcsVSl9cSgoaj1qLmFwcGx5KFIsRXx8W10pKS5uZXh0KCkpfSl9LEo9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oUixFKXt2YXIgeixqLFYsRyxXPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJlZbMF0pdGhy''@;'; put 'put ''b3cgVlsxXTtyZXR1cm4gVlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBHPXtuZXh0OlUoMCksdGhyb3c6VSgxKSxyZXR1cm46VSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksRztmdW5jdGlvbiBV''@;'; put 'put ''KHEpe3JldHVybiBmdW5jdGlvbih0ZSl7cmV0dXJuIGZ1bmN0aW9uKG5lKXtpZih6KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1c7KXRyeXtpZih6PTEsaiYmKFY9MiZuZVswXT9qLnJldHVybjpuZVswXT9qLnRocm93fHwoKFY9''@;'; put 'put ''ai5yZXR1cm4pJiZWLmNhbGwoaiksMCk6ai5uZXh0KSYmIShWPVYuY2FsbChqLG5lWzFdKSkuZG9uZSlyZXR1cm4gVjtzd2l0Y2goaj0wLFYmJihuZT1bMiZuZVswXSxWLnZhbHVlXSksbmVbMF0pe2Nhc2UgMDpjYXNlIDE6Vj1uZTticmVhaztjYXNlIDQ6cmV0dXJuIFcubGFiZWwrKyx7dmFs''@;'; put 'put ''dWU6bmVbMV0sZG9uZTohMX07Y2FzZSA1OlcubGFiZWwrKyxqPW5lWzFdLG5lPVswXTtjb250aW51ZTtjYXNlIDc6bmU9Vy5vcHMucG9wKCksVy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVj0oVj1XLnRyeXMpLmxlbmd0aD4wJiZWW1YubGVuZ3RoLTFdKXx8NiE9PW5lWzBd''@;'; put 'put ''JiYyIT09bmVbMF0pKXtXPTA7Y29udGludWV9aWYoMz09PW5lWzBdJiYoIVZ8fG5lWzFdPlZbMF0mJm5lWzFdPFZbM10pKXtXLmxhYmVsPW5lWzFdO2JyZWFrfWlmKDY9PT1uZVswXSYmVy5sYWJlbDxWWzFdKXtXLmxhYmVsPVZbMV0sVj1uZTticmVha31pZihWJiZXLmxhYmVsPFZbMl0pe1cu''@;'; put 'put ''bGFiZWw9VlsyXSxXLm9wcy5wdXNoKG5lKTticmVha31WWzJdJiZXLm9wcy5wb3AoKSxXLnRyeXMucG9wKCk7Y29udGludWV9bmU9RS5jYWxsKFIsVyl9Y2F0Y2goaWUpe25lPVs2LGllXSxqPTB9ZmluYWxseXt6PVY9MH1pZig1Jm5lWzBdKXRocm93IG5lWzFdO3JldHVybnt2YWx1ZTpuZVsw''@;'; put 'put ''XT9uZVsxXTp2b2lkIDAsZG9uZTohMH19KFtxLHRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuaXNMb2dnZWRJblNBU1ZJWUE9Qi52ZXJpZnlTYXNWaXlhTG9naW49dm9pZCAwO3ZhciBJPUwoNTkyOCk7Qi52ZXJpZnlTYXNWaXlhTG9n''@;'; put 'put ''aW49ZnVuY3Rpb24oUil7dmFyIEUsejtyZXR1cm4gSyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaixWLEcsVztyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKFUpe3N3aXRjaChVLmxhYmVsKXtjYXNlIDA6aj0hMSxWPW5ldyBEYXRlLEc9MCxVLmxhYmVsPTE7Y2FzZSAxOnJldHVy''@;'; put 'put ''bls0LCgwLEkuZGVsYXkpKDFlMyldO2Nhc2UgMjppZihVLnNlbnQoKSxSLmNsb3NlZClyZXR1cm5bMyw0XTtqPSgwLEIuaXNMb2dnZWRJblNBU1ZJWUEpKCksRz0oKG5ldyBEYXRlKS52YWx1ZU9mKCktVi52YWx1ZU9mKCkpLzFlMyxVLmxhYmVsPTM7Y2FzZSAzOmlmKCFqJiZHPDMwMClyZXR1''@;'; put 'put ''cm5bMywxXTtVLmxhYmVsPTQ7Y2FzZSA0Olc9ITEsVj1uZXcgRGF0ZSxVLmxhYmVsPTU7Y2FzZSA1OnJldHVybls0LCgwLEkuZGVsYXkpKDFlMyldO2Nhc2UgNjppZihVLnNlbnQoKSxSLmNsb3NlZClyZXR1cm5bMyw4XTtXPVIud2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoIlNBU0xv''@;'; put 'put ''Z29uIil8fChudWxsPT09KHo9bnVsbD09PShFPVIud2luZG93LmRvY3VtZW50LmJvZHkpfHx2b2lkIDA9PT1FP3ZvaWQgMDpFLmlubmVyVGV4dCl8fHZvaWQgMD09PXo/dm9pZCAwOnouaW5jbHVkZXMoIllvdSBoYXZlIHNpZ25lZCBpbi4iKSksRz0oKG5ldyBEYXRlKS52YWx1ZU9mKCktVi52''@;'; put 'put ''YWx1ZU9mKCkpLzFlMyxVLmxhYmVsPTc7Y2FzZSA3OmlmKCFXJiZHPDMwMClyZXR1cm5bMyw1XTtVLmxhYmVsPTg7Y2FzZSA4OnJldHVyblsyLHtpc0xvZ2dlZEluOmomJld9XX19KX0pfSxCLmlzTG9nZ2VkSW5TQVNWSVlBPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNvb2tpZS5pbmNs''@;'; put 'put ''dWRlcygiQ3VycmVudC1Vc2VyIikmJmRvY3VtZW50LmNvb2tpZS5pbmNsdWRlcygidXNlcklkIil9fSw0MDM3OihILEIsTCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2VuZXJhdGVGaWxlVXBsb2FkRm9ybT12b2lk''@;'; put 'put ''IDA7dmFyIEs9TCg2MjMwKSxKPUwoMjQwMik7Qi5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtPWZ1bmN0aW9uKEksUil7Zm9yKHZhciBFIGluIFIpaWYoQXJyYXkuaXNBcnJheShSW0VdKSl7dmFyIHo9RSxqPSgwLEouY29udmVydFRvQ1NWKShSLEUpO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExF''@;'; put 'put ''TkdUSCI9PT1qKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtpZih0eXBlb2YgRm9ybURhdGE+InUiJiZJIGluc3RhbmNlb2YgSylJLmFwcGVuZCh6LGose2ZpbGVuYW1lOiIiLmNvbmNhdCh6''@;'; put 'put ''LCIuY3N2IiksY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KTtlbHNle3ZhciBWPW5ldyBCbG9iKFtqXSx7dHlwZToiYXBwbGljYXRpb24vY3N2In0pO0kuYXBwZW5kKHosViwiIi5jb25jYXQoeiwiLmNzdiIpKX19cmV0dXJuIEl9fSwyMTcwOihILEIsTCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZ2VuZXJhdGVUYWJsZVVwbG9hZEZvcm09dm9pZCAwO3ZhciBLPUwoMjQwMiksSj1MKDQ3OTkpO0IuZ2VuZXJhdGVUYWJsZVVwbG9hZEZvcm09ZnVuY3Rpb24oSSxSKXt2YXIgRT1bXSx6PXt9LGo9MDtm''@;'; put 'put ''b3IodmFyIFYgaW4gUil7aisrLCgwLEsuaXNGb3JtYXRzVGFibGUpKFYpfHxFLnB1c2goVik7dmFyIEc9KDAsSy5jb252ZXJ0VG9DU1YpKFIsVik7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PUcpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2''@;'; put 'put ''YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO0cubGVuZ3RoPjE2ZTM/KDAsSi5zcGxpdENodW5rcykoRykubWFwKGZ1bmN0aW9uKFcpe0kuYXBwZW5kKCJzYXNqcyIuY29uY2F0KGosImRhdGEiKSxXKX0pOnpbInNhc2pzIi5jb25jYXQoaiwiZGF0YSIpXT1HfXJldHVybiB6''@;'; put 'put ''LnNhc2pzX3RhYmxlcz1FLmpvaW4oIiAiKSx7Zm9ybURhdGE6SSxyZXF1ZXN0UGFyYW1zOnp9fX0sMzYwNzpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihSLEUseixqKXt2b2lkIDA9''@;'; put 'put ''PT1qJiYoaj16KTt2YXIgVj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEUseik7ViYmISgiZ2V0ImluIFY/IUUuX19lc01vZHVsZTpWLndyaXRhYmxlfHxWLmNvbmZpZ3VyYWJsZSl8fChWPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBFW3pdfX0pLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShSLGosVil9OmZ1bmN0aW9uKFIsRSx6LGope3ZvaWQgMD09PWomJihqPXopLFJbal09RVt6XX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKFIsRSl7Zm9yKHZhciB6IGluIFIpImRlZmF1bHQiPT09enx8T2JqZWN0LnByb3RvdHlwZS5oYXNP''@;'; put 'put ''d25Qcm9wZXJ0eS5jYWxsKEUseil8fEsoRSxSLHopfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEk9TCg1OTU2KTtKKEwoMTIzMCksQiksSihMKDEzOTUpLEIpLEooTCg5ODIxKSxCKSxKKEwoODMwNiksQiksSihMKDM0NjcpLEIpLEooTCgz''@;'; put 'put ''NjAyKSxCKSxCLmRlZmF1bHQ9SS5kZWZhdWx0fSwxNTcwOmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEssSj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEs9ZnVuY3Rpb24oVixHKXtyZXR1cm4oSz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2Vv''@;'; put 'put ''ZiBBcnJheSYmZnVuY3Rpb24oVyxVKXtXLl9fcHJvdG9fXz1VfXx8ZnVuY3Rpb24oVyxVKXtmb3IodmFyIHEgaW4gVSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVSxxKSYmKFdbcV09VVtxXSl9KShWLEcpfSxmdW5jdGlvbihWLEcpe2lmKCJmdW5jdGlvbiIhPXR5cGVv''@;'; put 'put ''ZiBHJiZudWxsIT09Ryl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKEcpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIFcoKXt0aGlzLmNvbnN0cnVjdG9yPVZ9SyhWLEcpLFYucHJvdG90eXBlPW51bGw9PT1HP09iamVj''@;'; put 'put ''dC5jcmVhdGUoRyk6KFcucHJvdG90eXBlPUcucHJvdG90eXBlLG5ldyBXKX0pLEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFYsRyxXLFUpe3JldHVybiBuZXcoV3x8KFc9UHJvbWlzZSkpKGZ1bmN0aW9uKHEsdGUpe2Z1bmN0aW9uIG5lKGRlKXt0cnl7bGUoVS5uZXh0KGRlKSl9''@;'; put 'put ''Y2F0Y2godWUpe3RlKHVlKX19ZnVuY3Rpb24gaWUoZGUpe3RyeXtsZShVLnRocm93KGRlKSl9Y2F0Y2godWUpe3RlKHVlKX19ZnVuY3Rpb24gbGUoZGUpe3ZhciB1ZTtkZS5kb25lP3EoZGUudmFsdWUpOih1ZT1kZS52YWx1ZSx1ZSBpbnN0YW5jZW9mIFc/dWU6bmV3IFcoZnVuY3Rpb24oY2Up''@;'; put 'put ''e2NlKHVlKX0pKS50aGVuKG5lLGllKX1sZSgoVT1VLmFwcGx5KFYsR3x8W10pKS5uZXh0KCkpfSl9LFI9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVixHKXt2YXIgVyxVLHEsdGUsbmU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmcVswXSl0aHJvdyBxWzFdO3JldHVy''@;'; put 'put ''biBxWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHRlPXtuZXh0OmllKDApLHRocm93OmllKDEpLHJldHVybjppZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHRlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHRlO2Z1bmN0aW9uIGllKGxlKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oZGUpe3JldHVybiBmdW5jdGlvbih1ZSl7aWYoVyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtuZTspdHJ5e2lmKFc9MSxVJiYocT0yJnVlWzBdP1UucmV0dXJuOnVlWzBdP1UudGhyb3d8fCgocT1VLnJl''@;'; put 'put ''dHVybikmJnEuY2FsbChVKSwwKTpVLm5leHQpJiYhKHE9cS5jYWxsKFUsdWVbMV0pKS5kb25lKXJldHVybiBxO3N3aXRjaChVPTAscSYmKHVlPVsyJnVlWzBdLHEudmFsdWVdKSx1ZVswXSl7Y2FzZSAwOmNhc2UgMTpxPXVlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gbmUubGFiZWwrKyx7dmFsdWU6''@;'; put 'put ''dWVbMV0sZG9uZTohMX07Y2FzZSA1Om5lLmxhYmVsKyssVT11ZVsxXSx1ZT1bMF07Y29udGludWU7Y2FzZSA3OnVlPW5lLm9wcy5wb3AoKSxuZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgocT0ocT1uZS50cnlzKS5sZW5ndGg+MCYmcVtxLmxlbmd0aC0xXSl8fDYhPT11ZVsw''@;'; put 'put ''XSYmMiE9PXVlWzBdKSl7bmU9MDtjb250aW51ZX1pZigzPT09dWVbMF0mJighcXx8dWVbMV0+cVswXSYmdWVbMV08cVszXSkpe25lLmxhYmVsPXVlWzFdO2JyZWFrfWlmKDY9PT11ZVswXSYmbmUubGFiZWw8cVsxXSl7bmUubGFiZWw9cVsxXSxxPXVlO2JyZWFrfWlmKHEmJm5lLmxhYmVsPHFb''@;'; put 'put ''Ml0pe25lLmxhYmVsPXFbMl0sbmUub3BzLnB1c2godWUpO2JyZWFrfXFbMl0mJm5lLm9wcy5wb3AoKSxuZS50cnlzLnBvcCgpO2NvbnRpbnVlfXVlPUcuY2FsbChWLG5lKX1jYXRjaChjZSl7dWU9WzYsY2VdLFU9MH1maW5hbGx5e1c9cT0wfWlmKDUmdWVbMF0pdGhyb3cgdWVbMV07cmV0dXJu''@;'; put 'put ''e3ZhbHVlOnVlWzBdP3VlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2xlLGRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuQ29tcHV0ZUpvYkV4ZWN1dG9yPXZvaWQgMDt2YXIgRT1MKDM5MDApLHo9TCgxMzk1KSxqPWZ1bmN0aW9uKFYpe2Z1''@;'; put 'put ''bmN0aW9uIEcoVyxVKXt2YXIgcT1WLmNhbGwodGhpcyxXLEUuU2VydmVyVHlwZS5TYXNWaXlhKXx8dGhpcztyZXR1cm4gcS5zYXNWaXlhQXBpQ2xpZW50PVUscX1yZXR1cm4gSihHLFYpLEcucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oVyxVLHEsdGUsbmUpe3JldHVybiBJKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpZSxkZT10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24odWUpe3JldHVybiBpZT10ZXx8ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LFsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKGNlLFkpe3ZhciBiO251bGw9PT0oYj1kZS5z''@;'; put 'put ''YXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09Ynx8Yi5leGVjdXRlQ29tcHV0ZUpvYihXLHEuY29udGV4dE5hbWUscS5kZWJ1ZyxVLG5lLCEwLCEwKS50aGVuKGZ1bmN0aW9uKHgpe2RlLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh4LFcscS5kZWJ1ZyksY2UoeC5yZXN1bHQpfSku''@;'; put 'put ''Y2F0Y2goZnVuY3Rpb24oeCl7cmV0dXJuIEkoZGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBOPXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybiB4IGluc3RhbmNlb2Ygei5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3ImJih0''@;'; put 'put ''aGlzLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdCh4LFcscS5kZWJ1ZyksWShuZXcgei5FcnJvclJlc3BvbnNlKHg/Lm1lc3NhZ2UseCkpKSx4IGluc3RhbmNlb2Ygei5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''Ti5leGVjdXRlKFcsVSxxLHRlKS50aGVuKGZ1bmN0aW9uKGcpe2NlKGcpfSxmdW5jdGlvbihnKXtZKGcpfSl9KSxbNCxpZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBGLnNlbnQoKSxbMywzXTtjYXNlIDI6WShuZXcgei5FcnJvclJlc3BvbnNlKHg/Lm1lc3NhZ2UseCkpLEYubGFiZWw9Mztj''@;'; put 'put ''YXNlIDM6cmV0dXJuWzJdfX0pfSl9KX0pXX0pfSl9LEd9KEwoNjExOCkuQmFzZUpvYkV4ZWN1dG9yKTtCLkNvbXB1dGVKb2JFeGVjdXRvcj1qfSwzNDkxOmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEssSj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEs9ZnVuY3Rpb24oRyxXKXty''@;'; put 'put ''ZXR1cm4oSz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oVSxxKXtVLl9fcHJvdG9fXz1xfXx8ZnVuY3Rpb24oVSxxKXtmb3IodmFyIHRlIGluIHEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsdGUp''@;'; put 'put ''JiYoVVt0ZV09cVt0ZV0pfSkoRyxXKX0sZnVuY3Rpb24oRyxXKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVyYmbnVsbCE9PVcpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhXKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlv''@;'; put 'put ''biBVKCl7dGhpcy5jb25zdHJ1Y3Rvcj1HfUsoRyxXKSxHLnByb3RvdHlwZT1udWxsPT09Vz9PYmplY3QuY3JlYXRlKFcpOihVLnByb3RvdHlwZT1XLnByb3RvdHlwZSxuZXcgVSl9KSxJPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihHLFcsVSxxKXtyZXR1cm4gbmV3KFV8fChVPVBy''@;'; put 'put ''b21pc2UpKShmdW5jdGlvbih0ZSxuZSl7ZnVuY3Rpb24gaWUodWUpe3RyeXtkZShxLm5leHQodWUpKX1jYXRjaChjZSl7bmUoY2UpfX1mdW5jdGlvbiBsZSh1ZSl7dHJ5e2RlKHEudGhyb3codWUpKX1jYXRjaChjZSl7bmUoY2UpfX1mdW5jdGlvbiBkZSh1ZSl7dmFyIGNlO3VlLmRvbmU/dGUo''@;'; put 'put ''dWUudmFsdWUpOihjZT11ZS52YWx1ZSxjZSBpbnN0YW5jZW9mIFU/Y2U6bmV3IFUoZnVuY3Rpb24oWSl7WShjZSl9KSkudGhlbihpZSxsZSl9ZGUoKHE9cS5hcHBseShHLFd8fFtdKSkubmV4dCgpKX0pfSxSPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEcsVyl7dmFyIFUscSx0''@;'; put 'put ''ZSxuZSxpZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ0ZVswXSl0aHJvdyB0ZVsxXTtyZXR1cm4gdGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbmU9e25leHQ6bGUoMCksdGhyb3c6bGUoMSkscmV0dXJuOmxlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYobmVb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbmU7ZnVuY3Rpb24gbGUoZGUpe3JldHVybiBmdW5jdGlvbih1ZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtpZihVKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3Io''@;'; put 'put ''O2llOyl0cnl7aWYoVT0xLHEmJih0ZT0yJmNlWzBdP3EucmV0dXJuOmNlWzBdP3EudGhyb3d8fCgodGU9cS5yZXR1cm4pJiZ0ZS5jYWxsKHEpLDApOnEubmV4dCkmJiEodGU9dGUuY2FsbChxLGNlWzFdKSkuZG9uZSlyZXR1cm4gdGU7c3dpdGNoKHE9MCx0ZSYmKGNlPVsyJmNlWzBdLHRlLnZh''@;'; put 'put ''bHVlXSksY2VbMF0pe2Nhc2UgMDpjYXNlIDE6dGU9Y2U7YnJlYWs7Y2FzZSA0OnJldHVybiBpZS5sYWJlbCsrLHt2YWx1ZTpjZVsxXSxkb25lOiExfTtjYXNlIDU6aWUubGFiZWwrKyxxPWNlWzFdLGNlPVswXTtjb250aW51ZTtjYXNlIDc6Y2U9aWUub3BzLnBvcCgpLGllLnRyeXMucG9wKCk7''@;'; put 'put ''Y29udGludWU7ZGVmYXVsdDppZighKCh0ZT0odGU9aWUudHJ5cykubGVuZ3RoPjAmJnRlW3RlLmxlbmd0aC0xXSl8fDYhPT1jZVswXSYmMiE9PWNlWzBdKSl7aWU9MDtjb250aW51ZX1pZigzPT09Y2VbMF0mJighdGV8fGNlWzFdPnRlWzBdJiZjZVsxXTx0ZVszXSkpe2llLmxhYmVsPWNlWzFd''@;'; put 'put ''O2JyZWFrfWlmKDY9PT1jZVswXSYmaWUubGFiZWw8dGVbMV0pe2llLmxhYmVsPXRlWzFdLHRlPWNlO2JyZWFrfWlmKHRlJiZpZS5sYWJlbDx0ZVsyXSl7aWUubGFiZWw9dGVbMl0saWUub3BzLnB1c2goY2UpO2JyZWFrfXRlWzJdJiZpZS5vcHMucG9wKCksaWUudHJ5cy5wb3AoKTtjb250aW51''@;'; put 'put ''ZX1jZT1XLmNhbGwoRyxpZSl9Y2F0Y2goWSl7Y2U9WzYsWV0scT0wfWZpbmFsbHl7VT10ZT0wfWlmKDUmY2VbMF0pdGhyb3cgY2VbMV07cmV0dXJue3ZhbHVlOmNlWzBdP2NlWzFdOnZvaWQgMCxkb25lOiEwfX0oW2RlLHVlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1''@;'; put 'put ''bGUiLHt2YWx1ZTohMH0pLEIuRmlsZVVwbG9hZGVyPXZvaWQgMDt2YXIgRT1MKDU5MjgpLHo9TCgxMzk1KSxqPUwoMzkwMCksVj1mdW5jdGlvbihHKXtmdW5jdGlvbiBXKFUscSx0ZSxuZSl7dmFyIGllPUcuY2FsbCh0aGlzLFUscSl8fHRoaXM7cmV0dXJuIGllLmpvYnNQYXRoPXRlLGllLnJl''@;'; put 'put ''cXVlc3RDbGllbnQ9bmUsaWV9cmV0dXJuIEooVyxHKSxXLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKFUscSx0ZSxuZSl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGllLGxlLGRlLHVlLGNlLFksYix4LE4sRixnLEMsTSxwPXRoaXM7cmV0dXJuIFIodGhp''@;'; put 'put ''cyxmdW5jdGlvbihTKXtpZihpZT1xLmZpbGVzLGxlPXEucGFyYW1zLGRlPW5lfHxmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sIWllPy5sZW5ndGgpdGhyb3cgbmV3IHouRXJyb3JSZXNwb25zZSgiQXQgbGVhc3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92aWRlZC4iKTtpZigh''@;'; put 'put ''VXx8IiI9PT1VKXRocm93IG5ldyB6LkVycm9yUmVzcG9uc2UoInNhc0pvYiBtdXN0IGJlIHByb3ZpZGVkLiIpO2ZvcihjZSBpbiB1ZT0iIixsZSlsZS5oYXNPd25Qcm9wZXJ0eShjZSkmJih1ZSs9IiYiLmNvbmNhdChjZSwiPSIpLmNvbmNhdChsZVtjZV0pKTtmb3IoWT10ZS5hcHBMb2M/dGUu''@;'; put 'put ''YXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrVS5yZXBsYWNlKC9eXC8vLCIiKTpVLGI9IiIuY29uY2F0KHRoaXMuam9ic1BhdGgsIi8/IikuY29uY2F0KCJfcHJvZ3JhbT0iK1kpLmNvbmNhdCh1ZSkseD1uZXcgRm9ybURhdGEsTj0wLEY9aWU7TjxGLmxlbmd0aDtOKyspeC5hcHBlbmQoImZp''@;'; put 'put ''bGUiLChnPUZbTl0pLmZpbGUsZy5maWxlTmFtZSk7cmV0dXJuKEM9dGhpcy5yZXF1ZXN0Q2xpZW50LmdldENzcmZUb2tlbigiZmlsZSIpKSYmeC5hcHBlbmQoIl9jc3JmIixDLnZhbHVlKSx0ZS5kZWJ1ZyYmeC5hcHBlbmQoIl9kZWJ1ZyIsIjEzMSIpLHRlLnNlcnZlclR5cGU9PT1qLlNlcnZl''@;'; put 'put ''clR5cGUuU2FzVml5YSYmdGUuY29udGV4dE5hbWUmJnguYXBwZW5kKCJfY29udGV4dG5hbWUiLHRlLmNvbnRleHROYW1lKSxNPXsiY2FjaGUtY29udHJvbCI6Im5vLWNhY2hlIixBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxbMixuZXcgUHJvbWlzZShmdW5jdGlv''@;'; put 'put ''bihRLHJlKXtwLnJlcXVlc3RDbGllbnQucG9zdChiLHgsdm9pZCAwLCJhcHBsaWNhdGlvbi9qc29uIixNKS50aGVuKGZ1bmN0aW9uKGZlKXtyZXR1cm4gSShwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbWU7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihrZSl7c3dpdGNoKGtlLmxhYmVs''@;'; put 'put ''KXtjYXNlIDA6aWYodGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoZmUsVSx0ZS5kZWJ1ZyksbWU9ZmUucmVzdWx0LCF0ZS5kZWJ1ZylyZXR1cm5bMyw1XTtzd2l0Y2godGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIGouU2VydmVyVHlwZS5TYXNWaXlhOnJldHVyblszLDFdO2Nhc2Ugai5T''@;'; put 'put ''ZXJ2ZXJUeXBlLlNhczk6cmV0dXJuWzMsM119cmV0dXJuWzMsNF07Y2FzZSAxOnJldHVybls0LCgwLEUucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZSkoZmUucmVzdWx0LHRoaXMucmVxdWVzdENsaWVudCx0ZS5zZXJ2ZXJVcmwpXTtjYXNlIDI6cmV0dXJuIG1lPWtlLnNlbnQoKSxbMyw0XTtj''@;'; put 'put ''YXNlIDM6cmV0dXJuIG1lPSJzdHJpbmciPT10eXBlb2YgZmUucmVzdWx0PygwLEUucGFyc2VXZWJvdXRSZXNwb25zZSkoZmUucmVzdWx0LGIpOmZlLnJlc3VsdCxbMyw0XTtjYXNlIDQ6cmV0dXJuWzMsNl07Y2FzZSA1OnRoaXMuc2VydmVyVHlwZSE9PWouU2VydmVyVHlwZS5TYXNqcyYmKG1l''@;'; put 'put ''PSJzdHJpbmciPT10eXBlb2YgZmUucmVzdWx0PygwLEUuZ2V0VmFsaWRKc29uKShmZS5yZXN1bHQpOmZlLnJlc3VsdCksa2UubGFiZWw9NjtjYXNlIDY6cmV0dXJuIFEobWUpLFsyXX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oZmUpe3JldHVybiBJKHAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBtZT10aGlzO3JldHVybiBSKHRoaXMsZnVuY3Rpb24oa2Upe3N3aXRjaChrZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBmZSBpbnN0YW5jZW9mIHouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChmZSxVLHRlLmRlYnVnKSxyZShuZXcgei5F''@;'; put 'put ''cnJvclJlc3BvbnNlKGZlPy5tZXNzYWdlLGZlKSkpLGZlIGluc3RhbmNlb2Ygei5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gbWUuZXhlY3V0ZShVLHEsdGUsbmUpLnRoZW4oZnVuY3Rpb24oVGUpe1EoVGUpfSxmdW5jdGlv''@;'; put 'put ''bihUZSl7cmUoVGUpfSl9KSxbNCxkZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBrZS5zZW50KCksWzMsM107Y2FzZSAyOnJlKG5ldyB6LkVycm9yUmVzcG9uc2UoIkZpbGUgdXBsb2FkIHJlcXVlc3QgZmFpbGVkLiIsZmUpKSxrZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bMl19fSl9KX0pfSld''@;'; put 'put ''fSl9KX0sV30oTCg2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO0IuRmlsZVVwbG9hZGVyPVZ9LDQ0NDY6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSyxKPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoSz1mdW5jdGlvbihXLFUpe3JldHVybihLPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8''@;'; put 'put ''e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihxLHRlKXtxLl9fcHJvdG9fXz10ZX18fGZ1bmN0aW9uKHEsdGUpe2Zvcih2YXIgbmUgaW4gdGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLG5lKSYmKHFbbmVdPXRlW25lXSl9KShXLFUpfSxm''@;'; put 'put ''dW5jdGlvbihXLFUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBVJiZudWxsIT09VSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHEoKXt0aGlzLmNvbnN0cnVjdG9yPVd9''@;'; put 'put ''SyhXLFUpLFcucHJvdG90eXBlPW51bGw9PT1VP09iamVjdC5jcmVhdGUoVSk6KHEucHJvdG90eXBlPVUucHJvdG90eXBlLG5ldyBxKX0pLEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFcsVSxxLHRlKXtyZXR1cm4gbmV3KHF8fChxPVByb21pc2UpKShmdW5jdGlvbihuZSxpZSl7''@;'; put 'put ''ZnVuY3Rpb24gbGUoY2Upe3RyeXt1ZSh0ZS5uZXh0KGNlKSl9Y2F0Y2goWSl7aWUoWSl9fWZ1bmN0aW9uIGRlKGNlKXt0cnl7dWUodGUudGhyb3coY2UpKX1jYXRjaChZKXtpZShZKX19ZnVuY3Rpb24gdWUoY2Upe3ZhciBZO2NlLmRvbmU/bmUoY2UudmFsdWUpOihZPWNlLnZhbHVlLFkgaW5z''@;'; put 'put ''dGFuY2VvZiBxP1k6bmV3IHEoZnVuY3Rpb24oYil7YihZKX0pKS50aGVuKGxlLGRlKX11ZSgodGU9dGUuYXBwbHkoVyxVfHxbXSkpLm5leHQoKSl9KX0sUj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihXLFUpe3ZhciBxLHRlLG5lLGllLGxlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtpZigxJm5lWzBdKXRocm93IG5lWzFdO3JldHVybiBuZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpZT17bmV4dDpkZSgwKSx0aHJvdzpkZSgxKSxyZXR1cm46ZGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXN9KSxpZTtmdW5jdGlvbiBkZSh1ZSl7cmV0dXJuIGZ1bmN0aW9uKGNlKXtyZXR1cm4gZnVuY3Rpb24oWSl7aWYocSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtsZTspdHJ5e2lmKHE9MSx0ZSYmKG5lPTImWVsw''@;'; put 'put ''XT90ZS5yZXR1cm46WVswXT90ZS50aHJvd3x8KChuZT10ZS5yZXR1cm4pJiZuZS5jYWxsKHRlKSwwKTp0ZS5uZXh0KSYmIShuZT1uZS5jYWxsKHRlLFlbMV0pKS5kb25lKXJldHVybiBuZTtzd2l0Y2godGU9MCxuZSYmKFk9WzImWVswXSxuZS52YWx1ZV0pLFlbMF0pe2Nhc2UgMDpjYXNlIDE6''@;'; put 'put ''bmU9WTticmVhaztjYXNlIDQ6cmV0dXJuIGxlLmxhYmVsKysse3ZhbHVlOllbMV0sZG9uZTohMX07Y2FzZSA1OmxlLmxhYmVsKyssdGU9WVsxXSxZPVswXTtjb250aW51ZTtjYXNlIDc6WT1sZS5vcHMucG9wKCksbGUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG5lPShuZT1s''@;'; put 'put ''ZS50cnlzKS5sZW5ndGg+MCYmbmVbbmUubGVuZ3RoLTFdKXx8NiE9PVlbMF0mJjIhPT1ZWzBdKSl7bGU9MDtjb250aW51ZX1pZigzPT09WVswXSYmKCFuZXx8WVsxXT5uZVswXSYmWVsxXTxuZVszXSkpe2xlLmxhYmVsPVlbMV07YnJlYWt9aWYoNj09PVlbMF0mJmxlLmxhYmVsPG5lWzFdKXts''@;'; put 'put ''ZS5sYWJlbD1uZVsxXSxuZT1ZO2JyZWFrfWlmKG5lJiZsZS5sYWJlbDxuZVsyXSl7bGUubGFiZWw9bmVbMl0sbGUub3BzLnB1c2goWSk7YnJlYWt9bmVbMl0mJmxlLm9wcy5wb3AoKSxsZS50cnlzLnBvcCgpO2NvbnRpbnVlfVk9VS5jYWxsKFcsbGUpfWNhdGNoKGIpe1k9WzYsYl0sdGU9MH1m''@;'; put 'put ''aW5hbGx5e3E9bmU9MH1pZig1JllbMF0pdGhyb3cgWVsxXTtyZXR1cm57dmFsdWU6WVswXT9ZWzFdOnZvaWQgMCxkb25lOiEwfX0oW3VlLGNlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuSmVzSm9iRXhlY3V0b3I9dm9pZCAwO3ZhciBF''@;'; put 'put ''PUwoMzkwMCksej1MKDEzOTUpLGo9TCg2MTE4KSxWPUwoNTkyOCksRz1mdW5jdGlvbihXKXtmdW5jdGlvbiBVKHEsdGUpe3ZhciBuZT1XLmNhbGwodGhpcyxxLEUuU2VydmVyVHlwZS5TYXNWaXlhKXx8dGhpcztyZXR1cm4gbmUuc2FzVml5YUFwaUNsaWVudD10ZSxuZX1yZXR1cm4gSihVLFcp''@;'; put 'put ''LFUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24ocSx0ZSxuZSxpZSxsZSxkZSl7cmV0dXJuIHZvaWQgMD09PWRlJiYoZGU9W10pLEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHVlLFk9dGhpcztyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiB1ZT1pZXx8ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LFsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKHgsTil7dmFyIEY7bnVsbD09PShGPVkuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PUZ8fEYuZXhlY3V0ZUpvYihxLG5lLmNvbnRleHROYW1lLG5lLmRlYnVnLHRlLGxlKS50aGVuKGZ1''@;'; put 'put ''bmN0aW9uKGcpe1kuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KGcscSxuZS5kZWJ1Zyk7dmFyIEM9KDAsVi5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcykoZyxkZSk7eChDKX0pLmNhdGNoKGZ1bmN0aW9uKGcpe3JldHVybiBJKFksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBDPXRoaXM7cmV0dXJuIFIodGhpcyxmdW5jdGlvbihNKXtzd2l0Y2goTS5sYWJlbCl7Y2FzZSAwOnJldHVybiBnIGluc3RhbmNlb2Ygei5Kb2JFeGVjdXRpb25FcnJvciYmKHRoaXMuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KGcscSxuZS5kZWJ1ZyksTihuZXcgei5FcnJv''@;'; put 'put ''clJlc3BvbnNlKGc/Lm1lc3NhZ2UsZykpKSxnIGluc3RhbmNlb2Ygei5Mb2dpblJlcXVpcmVkRXJyb3I/KHRoaXMuYXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gQy5leGVjdXRlKHEsdGUsbmUsaWUsbGUsZGUpLnRoZW4oZnVuY3Rpb24oeSl7eCh5KX0sZnVuY3Rpb24o''@;'; put 'put ''eSl7Tih5KX0pfSksWzQsdWUoKV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gTS5zZW50KCksWzMsM107Y2FzZSAyOk4obmV3IHouRXJyb3JSZXNwb25zZShnPy5tZXNzYWdlLGcpKSxNLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxVfShqLkJhc2VKb2JFeGVjdXRvcik7''@;'; put 'put ''Qi5KZXNKb2JFeGVjdXRvcj1HfSw2MTE4OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFyIEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEUseixqLFYpe3JldHVybiBuZXcoanx8KGo9UHJvbWlzZSkpKGZ1bmN0aW9uKEcsVyl7ZnVuY3Rpb24gVShuZSl7dHJ5e3RlKFYu''@;'; put 'put ''bmV4dChuZSkpfWNhdGNoKGllKXtXKGllKX19ZnVuY3Rpb24gcShuZSl7dHJ5e3RlKFYudGhyb3cobmUpKX1jYXRjaChpZSl7VyhpZSl9fWZ1bmN0aW9uIHRlKG5lKXt2YXIgaWU7bmUuZG9uZT9HKG5lLnZhbHVlKTooaWU9bmUudmFsdWUsaWUgaW5zdGFuY2VvZiBqP2llOm5ldyBqKGZ1bmN0''@;'; put 'put ''aW9uKGxlKXtsZShpZSl9KSkudGhlbihVLHEpfXRlKChWPVYuYXBwbHkoRSx6fHxbXSkpLm5leHQoKSl9KX0sSj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihFLHope3ZhciBqLFYsRyxXLFU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmR1swXSl0aHJvdyBHWzFdO3Jl''@;'; put 'put ''dHVybiBHWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIFc9e25leHQ6cSgwKSx0aHJvdzpxKDEpLHJldHVybjpxKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoV1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxXO2Z1bmN0aW9uIHEodGUpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihuZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtpZihqKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1U7KXRyeXtpZihqPTEsViYmKEc9MiZpZVswXT9WLnJldHVybjppZVswXT9WLnRocm93fHwoKEc9Vi5yZXR1cm4p''@;'; put 'put ''JiZHLmNhbGwoViksMCk6Vi5uZXh0KSYmIShHPUcuY2FsbChWLGllWzFdKSkuZG9uZSlyZXR1cm4gRztzd2l0Y2goVj0wLEcmJihpZT1bMiZpZVswXSxHLnZhbHVlXSksaWVbMF0pe2Nhc2UgMDpjYXNlIDE6Rz1pZTticmVhaztjYXNlIDQ6cmV0dXJuIFUubGFiZWwrKyx7dmFsdWU6aWVbMV0s''@;'; put 'put ''ZG9uZTohMX07Y2FzZSA1OlUubGFiZWwrKyxWPWllWzFdLGllPVswXTtjb250aW51ZTtjYXNlIDc6aWU9VS5vcHMucG9wKCksVS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoRz0oRz1VLnRyeXMpLmxlbmd0aD4wJiZHW0cubGVuZ3RoLTFdKXx8NiE9PWllWzBdJiYyIT09aWVb''@;'; put 'put ''MF0pKXtVPTA7Y29udGludWV9aWYoMz09PWllWzBdJiYoIUd8fGllWzFdPkdbMF0mJmllWzFdPEdbM10pKXtVLmxhYmVsPWllWzFdO2JyZWFrfWlmKDY9PT1pZVswXSYmVS5sYWJlbDxHWzFdKXtVLmxhYmVsPUdbMV0sRz1pZTticmVha31pZihHJiZVLmxhYmVsPEdbMl0pe1UubGFiZWw9R1sy''@;'; put 'put ''XSxVLm9wcy5wdXNoKGllKTticmVha31HWzJdJiZVLm9wcy5wb3AoKSxVLnRyeXMucG9wKCk7Y29udGludWV9aWU9ei5jYWxsKEUsVSl9Y2F0Y2gobGUpe2llPVs2LGxlXSxWPTB9ZmluYWxseXtqPUc9MH1pZig1JmllWzBdKXRocm93IGllWzFdO3JldHVybnt2YWx1ZTppZVswXT9pZVsxXTp2''@;'; put 'put ''b2lkIDAsZG9uZTohMH19KFt0ZSxuZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkJhc2VKb2JFeGVjdXRvcj12b2lkIDA7dmFyIEk9TCg1OTI4KSxSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRSh6LGope3ZhciBWPXRoaXM7dGhpcy5zZXJ2''@;'; put 'put ''ZXJVcmw9eix0aGlzLnNlcnZlclR5cGU9aix0aGlzLndhaXRpbmdSZXF1ZXN0cz1bXSx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiBLKFYsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBHPXRoaXM7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihXKXtzd2l0''@;'; put 'put ''Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LCgwLEkuYXN5bmNGb3JFYWNoKSh0aGlzLndhaXRpbmdSZXF1ZXN0cyxmdW5jdGlvbihVKXtyZXR1cm4gSyhHLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKHEpe3N3aXRjaChxLmxhYmVsKXtjYXNlIDA6''@;'; put 'put ''cmV0dXJuWzQsVSgpXTtjYXNlIDE6cmV0dXJuIHEuc2VudCgpLFsyXX19KX0pfSldO2Nhc2UgMTpyZXR1cm4gVy5zZW50KCksdGhpcy53YWl0aW5nUmVxdWVzdHM9W10sWzJdfX0pfSl9fXJldHVybiBFLnByb3RvdHlwZS5hcHBlbmRXYWl0aW5nUmVxdWVzdD1mdW5jdGlvbih6KXt0aGlzLndh''@;'; put 'put ''aXRpbmdSZXF1ZXN0cy5wdXNoKHopfSxFLnByb3RvdHlwZS5nZXRSZXF1ZXN0UGFyYW1zPWZ1bmN0aW9uKHope3ZhciBqPXt9O3JldHVybiB6LmRlYnVnJiYoai5fb21pdHRleHRsb2c9ImZhbHNlIixqLl9vbWl0c2Vzc2lvbnJlc3VsdHM9ImZhbHNlIixqLl9kZWJ1Zz0xMzEpLGp9LEV9KCk7''@;'; put 'put ''Qi5CYXNlSm9iRXhlY3V0b3I9Un0sMjY5MzpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLLEo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChLPWZ1bmN0aW9uKHRlLG5lKXtyZXR1cm4oSz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJh''@;'; put 'put ''eSYmZnVuY3Rpb24oaWUsbGUpe2llLl9fcHJvdG9fXz1sZX18fGZ1bmN0aW9uKGllLGxlKXtmb3IodmFyIGRlIGluIGxlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsZSxkZSkmJihpZVtkZV09bGVbZGVdKX0pKHRlLG5lKX0sZnVuY3Rpb24odGUsbmUpe2lmKCJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBuZSYmbnVsbCE9PW5lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobmUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIGllKCl7dGhpcy5jb25zdHJ1Y3Rvcj10ZX1LKHRlLG5lKSx0ZS5wcm90''@;'; put 'put ''b3R5cGU9bnVsbD09PW5lP09iamVjdC5jcmVhdGUobmUpOihpZS5wcm90b3R5cGU9bmUucHJvdG90eXBlLG5ldyBpZSl9KSxJPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odGUpe2Zvcih2YXIgbmUsaWU9MSxsZT1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoO2llPGxlO2llKyspZm9yKHZhciBkZSBpbiBuZT1hcmd1bWVudHNbaWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZSxkZSkmJih0ZVtkZV09bmVbZGVdKTtyZXR1cm4gdGV9LEkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxSPXRoaXMmJnRoaXMu''@;'; put 'put ''X19hd2FpdGVyfHxmdW5jdGlvbih0ZSxuZSxpZSxsZSl7cmV0dXJuIG5ldyhpZXx8KGllPVByb21pc2UpKShmdW5jdGlvbihkZSx1ZSl7ZnVuY3Rpb24gY2UoeCl7dHJ5e2IobGUubmV4dCh4KSl9Y2F0Y2goTil7dWUoTil9fWZ1bmN0aW9uIFkoeCl7dHJ5e2IobGUudGhyb3coeCkpfWNhdGNo''@;'; put 'put ''KE4pe3VlKE4pfX1mdW5jdGlvbiBiKHgpe3ZhciBOO3guZG9uZT9kZSh4LnZhbHVlKTooTj14LnZhbHVlLE4gaW5zdGFuY2VvZiBpZT9OOm5ldyBpZShmdW5jdGlvbihGKXtGKE4pfSkpLnRoZW4oY2UsWSl9YigobGU9bGUuYXBwbHkodGUsbmV8fFtdKSkubmV4dCgpKX0pfSxFPXRoaXMmJnRo''@;'; put 'put ''aXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRlLG5lKXt2YXIgaWUsbGUsZGUsdWUsY2U9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmZGVbMF0pdGhyb3cgZGVbMV07cmV0dXJuIGRlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHVlPXtuZXh0OlkoMCksdGhyb3c6WSgxKSxyZXR1''@;'; put 'put ''cm46WSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHVlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHVlO2Z1bmN0aW9uIFkoYil7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbihOKXtpZihpZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJH''@;'; put 'put ''ZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtjZTspdHJ5e2lmKGllPTEsbGUmJihkZT0yJk5bMF0/bGUucmV0dXJuOk5bMF0/bGUudGhyb3d8fCgoZGU9bGUucmV0dXJuKSYmZGUuY2FsbChsZSksMCk6bGUubmV4dCkmJiEoZGU9ZGUuY2FsbChsZSxOWzFdKSkuZG9uZSly''@;'; put 'put ''ZXR1cm4gZGU7c3dpdGNoKGxlPTAsZGUmJihOPVsyJk5bMF0sZGUudmFsdWVdKSxOWzBdKXtjYXNlIDA6Y2FzZSAxOmRlPU47YnJlYWs7Y2FzZSA0OnJldHVybiBjZS5sYWJlbCsrLHt2YWx1ZTpOWzFdLGRvbmU6ITF9O2Nhc2UgNTpjZS5sYWJlbCsrLGxlPU5bMV0sTj1bMF07Y29udGludWU7''@;'; put 'put ''Y2FzZSA3Ok49Y2Uub3BzLnBvcCgpLGNlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChkZT0oZGU9Y2UudHJ5cykubGVuZ3RoPjAmJmRlW2RlLmxlbmd0aC0xXSl8fDYhPT1OWzBdJiYyIT09TlswXSkpe2NlPTA7Y29udGludWV9aWYoMz09PU5bMF0mJighZGV8fE5bMV0+ZGVb''@;'; put 'put ''MF0mJk5bMV08ZGVbM10pKXtjZS5sYWJlbD1OWzFdO2JyZWFrfWlmKDY9PT1OWzBdJiZjZS5sYWJlbDxkZVsxXSl7Y2UubGFiZWw9ZGVbMV0sZGU9TjticmVha31pZihkZSYmY2UubGFiZWw8ZGVbMl0pe2NlLmxhYmVsPWRlWzJdLGNlLm9wcy5wdXNoKE4pO2JyZWFrfWRlWzJdJiZjZS5vcHMu''@;'; put 'put ''cG9wKCksY2UudHJ5cy5wb3AoKTtjb250aW51ZX1OPW5lLmNhbGwodGUsY2UpfWNhdGNoKEYpe049WzYsRl0sbGU9MH1maW5hbGx5e2llPWRlPTB9aWYoNSZOWzBdKXRocm93IE5bMV07cmV0dXJue3ZhbHVlOk5bMF0/TlsxXTp2b2lkIDAsZG9uZTohMH19KFtiLHhdKX19fTtPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5TYXM5Sm9iRXhlY3V0b3I9dm9pZCAwO3ZhciB6PUwoNjIzMCksaj1MKDEzOTUpLFY9TCg1OTI4KSxHPUwoNjExOCksVz1MKDc5NSksVT1mdW5jdGlvbih0ZSl7ZnVuY3Rpb24gbmUoaWUsbGUsZGUsdWUsY2Upe3ZhciBZ''@;'; put 'put ''PXRlLmNhbGwodGhpcyxpZSxsZSl8fHRoaXM7cmV0dXJuIFkuam9ic1BhdGg9ZGUsWS5yZXF1ZXN0Q2xpZW50PXVlLFkuc2FzOVJlcXVlc3RDbGllbnQ9bmV3IFcuU2FzOVJlcXVlc3RDbGllbnQoaWUsY2UpLFl9cmV0dXJuIEoobmUsdGUpLG5lLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9u''@;'; put 'put ''KGllLGxlLGRlKXtyZXR1cm4gUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdWUsY2UsWSxiLHgsTixGPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihnKXtzd2l0Y2goZy5sYWJlbCl7Y2FzZSAwOmlmKHVlPSgwLFYuaXNSZWxhdGl2ZVBhdGgpKGllKSYmZGUuYXBwTG9j''@;'; put 'put ''P2RlLmFwcExvYy5yZXBsYWNlKC9cLz8kLywiLyIpK2llLnJlcGxhY2UoL15cLy8sIiIpOmllLGNlPSIiLmNvbmNhdChkZS5zZXJ2ZXJVcmwpLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCI/IikuY29uY2F0KCJfcHJvZ3JhbT0iK3VlKSxjZT0iIi5jb25jYXQoY2UpLmNvbmNhdChkZS51c2VybmFt''@;'; put 'put ''ZSYmZGUucGFzc3dvcmQ/IiZfdXNlcm5hbWU9IitkZS51c2VybmFtZSsiJl9wYXNzd29yZD0iK2RlLnBhc3N3b3JkOiIiKSxjZT0iIi5jb25jYXQoY2UpLmNvbmNhdChkZS5kZWJ1Zz8iJl9kZWJ1Zz0xMzEiOiIiKSxZPUkoe30sdGhpcy5nZXRSZXF1ZXN0UGFyYW1zKGRlKSksYj1uZXcgeixs''@;'; put 'put ''ZSl0cnl7Yj1xKGIsbGUpfWNhdGNoKEMpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBqLkVycm9yUmVzcG9uc2UoQz8ubWVzc2FnZSxDKSldfWVsc2UgbGU9IiI7Zm9yKHggaW4gWSlZLmhhc093blByb3BlcnR5KHgpJiZiLmFwcGVuZCh4LFlbeF0pO3JldHVybls0LHRoaXMuc2FzOVJl''@;'; put 'put ''cXVlc3RDbGllbnQubG9naW4oZGUudXNlcm5hbWUsZGUucGFzc3dvcmQsdGhpcy5qb2JzUGF0aCldO2Nhc2UgMTpyZXR1cm4gZy5zZW50KCksTj1sZSYmT2JqZWN0LmtleXMobGUpLmxlbmd0aD8ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IitiLl9ib3VuZGFyeToidGV4dC9wbGFp''@;'; put 'put ''biIsWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oQyxNKXtyZXR1cm4gRi5zYXM5UmVxdWVzdENsaWVudC5wb3N0KGNlLGIsdm9pZCAwLE4se0FjY2VwdDoiKi8qIixDb25uZWN0aW9uOiJLZWVwLUFsaXZlIn0pLnRoZW4oZnVuY3Rpb24oeSl7Ri5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3Qo''@;'; put 'put ''eSxpZSxkZS5kZWJ1ZyksQyh5KX0pLmNhdGNoKGZ1bmN0aW9uKHkpe3ZhciBwPXk7eS5yZXN1bHQmJiIiIT09eS5yZXN1bHQ/cD15LnJlc3VsdDp5Lm1lc3NhZ2UmJihwPXkubWVzc2FnZSksRi5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QocCxpZSxkZS5kZWJ1ZyksTShuZXcgai5FcnJv''@;'; put 'put ''clJlc3BvbnNlKHk/Lm1lc3NhZ2UseSkpfSl9KV19fSl9KX0sbmUucHJvdG90eXBlLmdldFJlcXVlc3RQYXJhbXM9ZnVuY3Rpb24oaWUpe3ZhciBsZT17fTtyZXR1cm4gaWUuZGVidWcmJihsZS5fZGVidWc9MTMxKSxsZX0sbmV9KEcuQmFzZUpvYkV4ZWN1dG9yKTtCLlNhczlKb2JFeGVjdXRv''@;'; put 'put ''cj1VO3ZhciBxPWZ1bmN0aW9uKHRlLG5lKXtmb3IodmFyIGllIGluIG5lKXt2YXIgbGU9aWUsZGU9KDAsVi5jb252ZXJ0VG9DU1YpKG5lLGllKTtpZigiRVJST1I6IExBUkdFIFNUUklORyBMRU5HVEgiPT09ZGUpdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2''@;'; put 'put ''YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO3RlLmFwcGVuZChsZSxkZSx7ZmlsZW5hbWU6IiIuY29uY2F0KGxlLCIuY3N2IiksY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KX1yZXR1cm4gdGV9fSwxMDY1OmZ1bmN0aW9uKEgsQixMKXsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IEssSj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEs9ZnVuY3Rpb24ocSx0ZSl7cmV0dXJuKEs9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKG5lLGllKXtuZS5fX3Byb3RvX189aWV9fHxmdW5jdGlvbihuZSxpZSl7Zm9yKHZh''@;'; put 'put ''ciBsZSBpbiBpZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaWUsbGUpJiYobmVbbGVdPWllW2xlXSl9KShxLHRlKX0sZnVuY3Rpb24ocSx0ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRlJiZudWxsIT09dGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5k''@;'; put 'put ''cyB2YWx1ZSAiK1N0cmluZyh0ZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbmUoKXt0aGlzLmNvbnN0cnVjdG9yPXF9SyhxLHRlKSxxLnByb3RvdHlwZT1udWxsPT09dGU/T2JqZWN0LmNyZWF0ZSh0ZSk6KG5lLnByb3RvdHlwZT10ZS5wcm90b3R5cGUsbmV3''@;'; put 'put ''IG5lKX0pLEk9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gST1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihxKXtmb3IodmFyIHRlLG5lPTEsaWU9YXJndW1lbnRzLmxlbmd0aDtuZTxpZTtuZSsrKWZvcih2YXIgbGUgaW4gdGU9YXJndW1lbnRzW25lXSlPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGUsbGUpJiYocVtsZV09dGVbbGVdKTtyZXR1cm4gcX0sSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFI9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHEsdGUsbmUsaWUpe3JldHVybiBuZXcobmV8fChuZT1Qcm9taXNlKSkoZnVuY3Rp''@;'; put 'put ''b24obGUsZGUpe2Z1bmN0aW9uIHVlKGIpe3RyeXtZKGllLm5leHQoYikpfWNhdGNoKHgpe2RlKHgpfX1mdW5jdGlvbiBjZShiKXt0cnl7WShpZS50aHJvdyhiKSl9Y2F0Y2goeCl7ZGUoeCl9fWZ1bmN0aW9uIFkoYil7dmFyIHg7Yi5kb25lP2xlKGIudmFsdWUpOih4PWIudmFsdWUseCBpbnN0''@;'; put 'put ''YW5jZW9mIG5lP3g6bmV3IG5lKGZ1bmN0aW9uKE4pe04oeCl9KSkudGhlbih1ZSxjZSl9WSgoaWU9aWUuYXBwbHkocSx0ZXx8W10pKS5uZXh0KCkpfSl9LEU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24ocSx0ZSl7dmFyIG5lLGllLGxlLGRlLHVlPXtsYWJlbDowLHNlbnQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtpZigxJmxlWzBdKXRocm93IGxlWzFdO3JldHVybiBsZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBkZT17bmV4dDpjZSgwKSx0aHJvdzpjZSgxKSxyZXR1cm46Y2UoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXN9KSxkZTtmdW5jdGlvbiBjZShZKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKHgpe2lmKG5lKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3VlOyl0cnl7aWYobmU9MSxpZSYmKGxlPTIm''@;'; put 'put ''eFswXT9pZS5yZXR1cm46eFswXT9pZS50aHJvd3x8KChsZT1pZS5yZXR1cm4pJiZsZS5jYWxsKGllKSwwKTppZS5uZXh0KSYmIShsZT1sZS5jYWxsKGllLHhbMV0pKS5kb25lKXJldHVybiBsZTtzd2l0Y2goaWU9MCxsZSYmKHg9WzImeFswXSxsZS52YWx1ZV0pLHhbMF0pe2Nhc2UgMDpjYXNl''@;'; put 'put ''IDE6bGU9eDticmVhaztjYXNlIDQ6cmV0dXJuIHVlLmxhYmVsKysse3ZhbHVlOnhbMV0sZG9uZTohMX07Y2FzZSA1OnVlLmxhYmVsKyssaWU9eFsxXSx4PVswXTtjb250aW51ZTtjYXNlIDc6eD11ZS5vcHMucG9wKCksdWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGxlPShs''@;'; put 'put ''ZT11ZS50cnlzKS5sZW5ndGg+MCYmbGVbbGUubGVuZ3RoLTFdKXx8NiE9PXhbMF0mJjIhPT14WzBdKSl7dWU9MDtjb250aW51ZX1pZigzPT09eFswXSYmKCFsZXx8eFsxXT5sZVswXSYmeFsxXTxsZVszXSkpe3VlLmxhYmVsPXhbMV07YnJlYWt9aWYoNj09PXhbMF0mJnVlLmxhYmVsPGxlWzFd''@;'; put 'put ''KXt1ZS5sYWJlbD1sZVsxXSxsZT14O2JyZWFrfWlmKGxlJiZ1ZS5sYWJlbDxsZVsyXSl7dWUubGFiZWw9bGVbMl0sdWUub3BzLnB1c2goeCk7YnJlYWt9bGVbMl0mJnVlLm9wcy5wb3AoKSx1ZS50cnlzLnBvcCgpO2NvbnRpbnVlfXg9dGUuY2FsbChxLHVlKX1jYXRjaChOKXt4PVs2LE5dLGll''@;'; put 'put ''PTB9ZmluYWxseXtuZT1sZT0wfWlmKDUmeFswXSl0aHJvdyB4WzFdO3JldHVybnt2YWx1ZTp4WzBdP3hbMV06dm9pZCAwLGRvbmU6ITB9fShbWSxiXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU2FzanNKb2JFeGVjdXRvcj12b2lkIDA7''@;'; put 'put ''dmFyIHo9TCg2MjMwKSxqPUwoMzkwMCksVj1MKDEzOTUpLEc9TCg0MDM3KSxXPUwoNTkyOCksVT1mdW5jdGlvbihxKXtmdW5jdGlvbiB0ZShuZSxpZSxsZSl7dmFyIGRlPXEuY2FsbCh0aGlzLG5lLGouU2VydmVyVHlwZS5TYXNqcyl8fHRoaXM7cmV0dXJuIGRlLmpvYnNQYXRoPWllLGRlLnJl''@;'; put 'put ''cXVlc3RDbGllbnQ9bGUsZGV9cmV0dXJuIEoodGUscSksdGUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24obmUsaWUsbGUsZGUsdWUsY2Upe3JldHVybiB2b2lkIDA9PT1jZSYmKGNlPVtdKSxSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBZLGIseCxOLEYsZyxDLHk9dGhp''@;'; put 'put ''cztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKHApe2lmKFk9ZGUsYj0oMCxXLmlzUmVsYXRpdmVQYXRoKShuZSkmJmxlLmFwcExvYz9sZS5hcHBMb2MucmVwbGFjZSgvXC8/JC8sIi8iKStuZS5yZXBsYWNlKC9eXC8vLCIiKTpuZSx4PSIiLmNvbmNhdChsZS5zZXJ2ZXJVcmwpLmNvbmNhdCh0aGlz''@;'; put 'put ''LmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitiKSxOPUkoe30sdGhpcy5nZXRSZXF1ZXN0UGFyYW1zKGxlKSksRj10eXBlb2YgRm9ybURhdGE+InUiP25ldyB6Om5ldyBGb3JtRGF0YSxpZSl0cnl7Rj0oMCxHLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm0pKEYsaWUpfWNhdGNoKFMp''@;'; put 'put ''e3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBWLkVycm9yUmVzcG9uc2UoUz8ubWVzc2FnZSxTKSldfWZvcihnIGluIE4pTi5oYXNPd25Qcm9wZXJ0eShnKSYmRi5hcHBlbmQoZyxOW2ddKTtyZXR1cm4gQz1GIGluc3RhbmNlb2YgeiYmdHlwZW9mIEZvcm1EYXRhPiJ1Ij8ibXVsdGlwYXJ0''@;'; put 'put ''L2Zvcm0tZGF0YTsgYm91bmRhcnk9Ii5jb25jYXQoRi5nZXRCb3VuZGFyeSgpKTp2b2lkIDAsWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oUyxRKXt5LnJlcXVlc3RDbGllbnQucG9zdCh4LEYsdWU/LmFjY2Vzc190b2tlbixDKS50aGVuKGZ1bmN0aW9uKHJlKXtyZXR1cm4gUih5LHZvaWQgMCx2''@;'; put 'put ''b2lkIDAsZnVuY3Rpb24oKXt2YXIgZmUsbWU7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihrZSl7aWYoT2JqZWN0LmVudHJpZXMocmUucmVzdWx0KS5sZW5ndGg8MSl0aHJvdyBuZXcgVi5Kb2JFeGVjdXRpb25FcnJvcigwLCJObyB3ZWJvdXQgd2FzIHJldHVybmVkIGJ5IGpvYiAiLmNvbmNhdChi''@;'; put 'put ''LCIuICBQbGVhc2UgY2hlY2sgdGhlIFNBUyBsb2cgZm9yIG1vcmUgaW5mby4iKSxyZS5sb2cpO3JldHVybihmZT1yZS5yZXN1bHQpJiYic3RyaW5nIj09dHlwZW9mIGZlJiZmZS50cmltKCkmJihyZS5yZXN1bHQ9KDAsVy5nZXRWYWxpZEpzb24pKGZlKSksdGhpcy5yZXF1ZXN0Q2xpZW50LmFw''@;'; put 'put ''cGVuZFJlcXVlc3QocmUsbmUsbGUuZGVidWcpLG1lPSgwLFcuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKHJlLGNlKSxTKG1lKSxbMl19KX0pfSkuY2F0Y2goZnVuY3Rpb24ocmUpe3JldHVybiBSKHksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBmZT10aGlzO3JldHVybiBF''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24obWUpe3N3aXRjaChtZS5sYWJlbCl7Y2FzZSAwOnJldHVybiByZSBpbnN0YW5jZW9mIFYuSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChyZSxuZSxsZS5kZWJ1ZyksUShuZXcgVi5FcnJvclJlc3BvbnNlKHJlPy5tZXNz''@;'; put 'put ''YWdlLHJlKSkpLHJlIGluc3RhbmNlb2YgVi5Mb2dpblJlcXVpcmVkRXJyb3I/KGRlfHxRKG5ldyBWLkVycm9yUmVzcG9uc2UoIlJlcXVlc3QgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIE1ha2Ugc3VyZSAuZW52IGZpbGUgZXhpc3RzIHdpdGggdmFsaWQgY3JlZGVudGlhbHMuIixyZSkpLHRoaXMu''@;'; put 'put ''YXBwZW5kV2FpdGluZ1JlcXVlc3QoZnVuY3Rpb24oKXtyZXR1cm4gZmUuZXhlY3V0ZShuZSxpZSxsZSxkZSx1ZSxjZSkudGhlbihmdW5jdGlvbihrZSl7UyhrZSl9LGZ1bmN0aW9uKGtlKXtRKGtlKX0pfSksWT9bNCxZKCldOlszLDJdKTpbMywzXTtjYXNlIDE6bWUuc2VudCgpLG1lLmxhYmVs''@;'; put 'put ''PTI7Y2FzZSAyOnJldHVyblszLDRdO2Nhc2UgMzpRKG5ldyBWLkVycm9yUmVzcG9uc2UocmU/Lm1lc3NhZ2UscmUpKSxtZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pfSldfSl9KX0sdGV9KEwoNjExOCkuQmFzZUpvYkV4ZWN1dG9yKTtCLlNhc2pzSm9iRXhlY3V0b3I9VX0sNjA4''@;'; put 'put ''NDpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLLEo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChLPWZ1bmN0aW9uKGllLGxlKXtyZXR1cm4oSz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZGUsdWUpe2RlLl9f''@;'; put 'put ''cHJvdG9fXz11ZX18fGZ1bmN0aW9uKGRlLHVlKXtmb3IodmFyIGNlIGluIHVlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1ZSxjZSkmJihkZVtjZV09dWVbY2VdKX0pKGllLGxlKX0sZnVuY3Rpb24oaWUsbGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsZSYmbnVsbCE9''@;'; put 'put ''PWxlKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobGUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIGRlKCl7dGhpcy5jb25zdHJ1Y3Rvcj1pZX1LKGllLGxlKSxpZS5wcm90b3R5cGU9bnVsbD09PWxlP09iamVjdC5j''@;'; put 'put ''cmVhdGUobGUpOihkZS5wcm90b3R5cGU9bGUucHJvdG90eXBlLG5ldyBkZSl9KSxJPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oaWUpe2Zvcih2YXIgbGUsZGU9MSx1ZT1hcmd1bWVudHMubGVuZ3RoO2RlPHVlO2RlKysp''@;'; put 'put ''Zm9yKHZhciBjZSBpbiBsZT1hcmd1bWVudHNbZGVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsZSxjZSkmJihpZVtjZV09bGVbY2VdKTtyZXR1cm4gaWV9LEkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxSPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihpZSxs''@;'; put 'put ''ZSxkZSx1ZSl7cmV0dXJuIG5ldyhkZXx8KGRlPVByb21pc2UpKShmdW5jdGlvbihjZSxZKXtmdW5jdGlvbiBiKEYpe3RyeXtOKHVlLm5leHQoRikpfWNhdGNoKGcpe1koZyl9fWZ1bmN0aW9uIHgoRil7dHJ5e04odWUudGhyb3coRikpfWNhdGNoKGcpe1koZyl9fWZ1bmN0aW9uIE4oRil7dmFy''@;'; put 'put ''IGc7Ri5kb25lP2NlKEYudmFsdWUpOihnPUYudmFsdWUsZyBpbnN0YW5jZW9mIGRlP2c6bmV3IGRlKGZ1bmN0aW9uKEMpe0MoZyl9KSkudGhlbihiLHgpfU4oKHVlPXVlLmFwcGx5KGllLGxlfHxbXSkpLm5leHQoKSl9KX0sRT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihpZSxs''@;'; put 'put ''ZSl7dmFyIGRlLHVlLGNlLFksYj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZjZVswXSl0aHJvdyBjZVsxXTtyZXR1cm4gY2VbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWT17bmV4dDp4KDApLHRocm93OngoMSkscmV0dXJuOngoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJihZW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFk7ZnVuY3Rpb24geChOKXtyZXR1cm4gZnVuY3Rpb24oRil7cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKGRlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtm''@;'; put 'put ''b3IoO2I7KXRyeXtpZihkZT0xLHVlJiYoY2U9MiZnWzBdP3VlLnJldHVybjpnWzBdP3VlLnRocm93fHwoKGNlPXVlLnJldHVybikmJmNlLmNhbGwodWUpLDApOnVlLm5leHQpJiYhKGNlPWNlLmNhbGwodWUsZ1sxXSkpLmRvbmUpcmV0dXJuIGNlO3N3aXRjaCh1ZT0wLGNlJiYoZz1bMiZnWzBd''@;'; put 'put ''LGNlLnZhbHVlXSksZ1swXSl7Y2FzZSAwOmNhc2UgMTpjZT1nO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYi5sYWJlbCsrLHt2YWx1ZTpnWzFdLGRvbmU6ITF9O2Nhc2UgNTpiLmxhYmVsKyssdWU9Z1sxXSxnPVswXTtjb250aW51ZTtjYXNlIDc6Zz1iLm9wcy5wb3AoKSxiLnRyeXMucG9wKCk7Y29u''@;'; put 'put ''dGludWU7ZGVmYXVsdDppZighKChjZT0oY2U9Yi50cnlzKS5sZW5ndGg+MCYmY2VbY2UubGVuZ3RoLTFdKXx8NiE9PWdbMF0mJjIhPT1nWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1nWzBdJiYoIWNlfHxnWzFdPmNlWzBdJiZnWzFdPGNlWzNdKSl7Yi5sYWJlbD1nWzFdO2JyZWFrfWlmKDY9''@;'; put 'put ''PT1nWzBdJiZiLmxhYmVsPGNlWzFdKXtiLmxhYmVsPWNlWzFdLGNlPWc7YnJlYWt9aWYoY2UmJmIubGFiZWw8Y2VbMl0pe2IubGFiZWw9Y2VbMl0sYi5vcHMucHVzaChnKTticmVha31jZVsyXSYmYi5vcHMucG9wKCksYi50cnlzLnBvcCgpO2NvbnRpbnVlfWc9bGUuY2FsbChpZSxiKX1jYXRj''@;'; put 'put ''aChDKXtnPVs2LENdLHVlPTB9ZmluYWxseXtkZT1jZT0wfWlmKDUmZ1swXSl0aHJvdyBnWzFdO3JldHVybnt2YWx1ZTpnWzBdP2dbMV06dm9pZCAwLGRvbmU6ITB9fShbTixGXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuV2ViSm9iRXhl''@;'; put 'put ''Y3V0b3I9dm9pZCAwO3ZhciB6PUwoNjIzMCksaj1MKDM5MDApLFY9TCgxMzk1KSxHPUwoNDAzNyksVz1MKDIxNzApLFU9TCg1OTI4KSxxPUwoNjExOCksdGU9TCgyODEzKSxuZT1mdW5jdGlvbihpZSl7ZnVuY3Rpb24gbGUoZGUsdWUsY2UsWSxiKXt2YXIgeD1pZS5jYWxsKHRoaXMsZGUsdWUp''@;'; put 'put ''fHx0aGlzO3JldHVybiB4LmpvYnNQYXRoPWNlLHgucmVxdWVzdENsaWVudD1ZLHguc2FzVml5YUFwaUNsaWVudD1iLHh9cmV0dXJuIEoobGUsaWUpLGxlLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGRlLHVlLGNlLFksYix4KXtyZXR1cm4gdm9pZCAwPT09eCYmKHg9W10pLFIodGhpcyx2''@;'; put 'put ''b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE4sRixnLEMsTSx5LHAsUyxRLGZlLG1lLGtlLFBlPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihGZSl7c3dpdGNoKEZlLmxhYmVsKXtjYXNlIDA6aWYoTj1ZLEY9KDAsVS5pc1JlbGF0aXZlUGF0aCkoZGUpJiZjZS5hcHBMb2M/Y2UuYXBw''@;'; put 'put ''TG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrZGUucmVwbGFjZSgvXlwvLywiIik6ZGUsZz0iIi5jb25jYXQoY2Uuc2VydmVyVXJsKS5jb25jYXQodGhpcy5qb2JzUGF0aCwiLz8iKS5jb25jYXQoIl9wcm9ncmFtPSIrRiksY2Uuc2VydmVyVHlwZSE9PWouU2VydmVyVHlwZS5TYXNWaXlhKXJldHVy''@;'; put 'put ''blszLDVdO0M9dm9pZCAwLEZlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBGZS50cnlzLnB1c2goWzEsMywsNF0pLFs0LHRoaXMuZ2V0Sm9iVXJpKGRlKV07Y2FzZSAyOnJldHVybiBDPUZlLnNlbnQoKSxbMyw0XTtjYXNlIDM6cmV0dXJuIE09RmUuc2VudCgpLFsyLG5ldyBQcm9taXNlKGZ1bmN0''@;'; put 'put ''aW9uKE5lLExlKXtyZXR1cm4gUihQZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEJlPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihIZSl7c3dpdGNoKEhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIE0gaW5zdGFuY2VvZiBWLkxvZ2luUmVxdWlyZWRFcnJvcj8odGhpcy5hcHBlbmRX''@;'; put 'put ''YWl0aW5nUmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBCZS5leGVjdXRlKGRlLHVlLGNlLFksYix4KS50aGVuKGZ1bmN0aW9uKFFlKXtOZShRZSl9LGZ1bmN0aW9uKFFlKXtMZShRZSl9KX0pLE4/WzQsTigpXTpbMywyXSk6WzMsM107Y2FzZSAxOkhlLnNlbnQoKSxIZS5sYWJlbD0yO2Nhc2Ug''@;'; put 'put ''MjpyZXR1cm5bMyw0XTtjYXNlIDM6TGUobmV3IFYuRXJyb3JSZXNwb25zZShNPy5tZXNzYWdlLE0pKSxIZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pXTtjYXNlIDQ6Zys9Qy5sZW5ndGg+MD8iJl9qb2I9IitDOiIiLEMubGVuZ3RoPjAmJihnPShnKz0iJl9qb2I9IitDKS5yZXBs''@;'; put 'put ''YWNlKCJfcHJvZ3JhbT0iLCJfX3Byb2dyYW09IikpLGcrPWNlLmNvbnRleHROYW1lJiYhL1xzLy50ZXN0KGNlLmNvbnRleHROYW1lKT8iJl9jb250ZXh0bmFtZT0iLmNvbmNhdChjZS5jb250ZXh0TmFtZSk6IiIsRmUubGFiZWw9NTtjYXNlIDU6aWYoeT1JKHt9LHRoaXMuZ2V0UmVxdWVzdFBh''@;'; put 'put ''cmFtcyhjZSkpLHA9dHlwZW9mIEZvcm1EYXRhPiJ1Ij9uZXcgejpuZXcgRm9ybURhdGEsdWUpaWYoUz1KU09OLnN0cmluZ2lmeSh1ZSksY2Uuc2VydmVyVHlwZT09PWouU2VydmVyVHlwZS5TYXM5fHxTLmxlbmd0aD41ZTV8fFMuaW5jbHVkZXMoIjsiKSl0cnl7cD0oMCxHLmdlbmVyYXRlRmls''@;'; put 'put ''ZVVwbG9hZEZvcm0pKHAsdWUpfWNhdGNoKE5lKXtyZXR1cm5bMixQcm9taXNlLnJlamVjdChuZXcgVi5FcnJvclJlc3BvbnNlKE5lPy5tZXNzYWdlLE5lKSldfWVsc2UgdHJ5e1E9KDAsVy5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybSkocCx1ZSksZmU9US5yZXF1ZXN0UGFyYW1zLHA9US5mb3Jt''@;'; put 'put ''RGF0YSx5PUkoSSh7fSx5KSxmZSl9Y2F0Y2goTmUpe3JldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyBWLkVycm9yUmVzcG9uc2UoTmU/Lm1lc3NhZ2UsTmUpKV19Zm9yKG1lIGluIHkpeS5oYXNPd25Qcm9wZXJ0eShtZSkmJnAuYXBwZW5kKG1lLHlbbWVdKTtyZXR1cm4ga2U9cCBpbnN0YW5j''@;'; put 'put ''ZW9mIHomJnR5cGVvZiBGb3JtRGF0YT4idSI/Im11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIuY29uY2F0KHAuZ2V0Qm91bmRhcnkoKSk6dm9pZCAwLFsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKE5lLExlKXtQZS5yZXF1ZXN0Q2xpZW50LnBvc3QoZyxwLGI/LmFjY2Vzc190b2tlbixr''@;'; put 'put ''ZSkudGhlbihmdW5jdGlvbihCZSl7cmV0dXJuIFIoUGUsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBIZSxRZTtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKG10KXtzd2l0Y2gobXQubGFiZWwpe2Nhc2UgMDppZih0aGlzLnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChCZSxkZSxjZS5k''@;'; put 'put ''ZWJ1ZyksSGU9QmUucmVzdWx0LCFjZS5kZWJ1ZylyZXR1cm5bMyw0XTtzd2l0Y2godGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIGouU2VydmVyVHlwZS5TYXNWaXlhOnJldHVyblszLDFdO2Nhc2Ugai5TZXJ2ZXJUeXBlLlNhczk6cmV0dXJuWzMsM119cmV0dXJuWzMsNF07Y2FzZSAxOnJldHVybls0''@;'; put 'put ''LCgwLFUucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZSkoQmUucmVzdWx0LHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNlcnZlclVybCldO2Nhc2UgMjpyZXR1cm4gSGU9bXQuc2VudCgpLFszLDRdO2Nhc2UgMzpyZXR1cm4gSGU9InN0cmluZyI9PXR5cGVvZiBCZS5yZXN1bHQ/KDAsdGUucGFy''@;'; put 'put ''c2VXZWJvdXRSZXNwb25zZSkoQmUucmVzdWx0LGcpOkJlLnJlc3VsdCxbMyw0XTtjYXNlIDQ6cmV0dXJuIFFlPSgwLFUuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKHtyZXN1bHQ6SGUsbG9nOkJlLmxvZ30seCksTmUoUWUpLFsyXX19KX0pfSkuY2F0Y2goZnVuY3Rpb24oQmUpe3Jl''@;'; put 'put ''dHVybiBSKFBlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSGU9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKFFlKXtzd2l0Y2goUWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gQmUgaW5zdGFuY2VvZiBWLkpvYkV4ZWN1dGlvbkVycm9yJiYodGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVu''@;'; put 'put ''ZFJlcXVlc3QoQmUsZGUsY2UuZGVidWcpLExlKG5ldyBWLkVycm9yUmVzcG9uc2UoQmU/Lm1lc3NhZ2UsQmUpKSksQmUgaW5zdGFuY2VvZiBWLkxvZ2luUmVxdWlyZWRFcnJvcj8oWXx8TGUobmV3IFYuRXJyb3JSZXNwb25zZSgiUmVxdWVzdCBpcyBub3QgYXV0aGVudGljYXRlZC4gTWFrZSBz''@;'; put 'put ''dXJlIC5lbnYgZmlsZSBleGlzdHMgd2l0aCB2YWxpZCBjcmVkZW50aWFscy4iLEJlKSksdGhpcy5hcHBlbmRXYWl0aW5nUmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBIZS5leGVjdXRlKGRlLHVlLGNlLFksYix4KS50aGVuKGZ1bmN0aW9uKG10KXtOZShtdCl9LGZ1bmN0aW9uKG10KXtMZSht''@;'; put 'put ''dCl9KX0pLE4/WzQsTigpXTpbMywyXSk6WzMsM107Y2FzZSAxOlFlLnNlbnQoKSxRZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMyw0XTtjYXNlIDM6TGUobmV3IFYuRXJyb3JSZXNwb25zZShCZT8ubWVzc2FnZSxCZSkpLFFlLmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyXX19KX0pfSl9KV19fSl9''@;'; put 'put ''KX0sbGUucHJvdG90eXBlLmdldEpvYlVyaT1mdW5jdGlvbihkZSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHVlLGNlLFksYix4LE47cmV0dXJuIEUodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLnNhc1ZpeWFBcGlD''@;'; put 'put ''bGllbnQpcmV0dXJuWzIsIiJdO2lmKHVlPSIiLCgwLFUuaXNSZWxhdGl2ZVBhdGgpKGRlKT8oYj1kZS5zcGxpdCgiLyIpLGNlPWIubGVuZ3RoPjE/YlswXToiIixZPWIubGVuZ3RoPjE/YlsxXToiIik6KGI9ZGUuc3BsaXQoIi8iKSxZPWIucG9wKCl8fCIiLGNlPWIuam9pbigiLyIpKSwhWSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkpvYiBuYW1lIGlzIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Sm9ic0luRm9sZGVyKGNlKV07Y2FzZSAxOnJldHVybih4PUYuc2VudCgpKSYmKE49eC5maW5kKGZ1bmN0aW9uKGcpe3JldHVybiBn''@;'; put 'put ''Lm5hbWU9PT1ZJiYiam9iRGVmaW5pdGlvbiI9PT1nLmNvbnRlbnRUeXBlfSkpJiYodWU9Ti51cmkpLFsyLHVlXX19KX0pfSxsZX0ocS5CYXNlSm9iRXhlY3V0b3IpO0IuV2ViSm9iRXhlY3V0b3I9bmV9LDgyMTc6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlz''@;'; put 'put ''Ll9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSk7dmFyIGo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSLEUpO2omJiEoImdldCJpbiBqPyFSLl9fZXNNb2R1bGU6ai53cml0YWJsZXx8ai5jb25maWd1cmFi''@;'; put 'put ''bGUpfHwoaj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUltFXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSSx6LGopfTpmdW5jdGlvbihJLFIsRSx6KXt2b2lkIDA9PT16JiYoej1FKSxJW3pdPVJbRV19KSxKPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlv''@;'; put 'put ''bihJLFIpe2Zvcih2YXIgRSBpbiBJKSJkZWZhdWx0Ij09PUV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSLEUpfHxLKFIsSSxFKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEooTCgxNTcwKSxCKSxKKEwoMzQ5MSksQiks''@;'; put 'put ''SihMKDQ0NDYpLEIpLEooTCg2MTE4KSxCKSxKKEwoMjY5MyksQiksSihMKDYwODQpLEIpLEooTCgxMDY1KSxCKX0sNDU4ODpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1MKDUxMDgpLEk9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''ST1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihsZSl7Zm9yKHZhciBkZSx1ZT0xLGNlPWFyZ3VtZW50cy5sZW5ndGg7dWU8Y2U7dWUrKylmb3IodmFyIFkgaW4gZGU9YXJndW1lbnRzW3VlXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGUsWSkmJihsZVtZXT1kZVtZXSk7''@;'; put 'put ''cmV0dXJuIGxlfSxJLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sUj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24obGUsZGUsdWUsY2Upe3JldHVybiBuZXcodWV8fCh1ZT1Qcm9taXNlKSkoZnVuY3Rpb24oWSxiKXtmdW5jdGlvbiB4KGcpe3RyeXtGKGNlLm5leHQoZykpfWNhdGNoKEMp''@;'; put 'put ''e2IoQyl9fWZ1bmN0aW9uIE4oZyl7dHJ5e0YoY2UudGhyb3coZykpfWNhdGNoKEMpe2IoQyl9fWZ1bmN0aW9uIEYoZyl7dmFyIEM7Zy5kb25lP1koZy52YWx1ZSk6KEM9Zy52YWx1ZSxDIGluc3RhbmNlb2YgdWU/QzpuZXcgdWUoZnVuY3Rpb24oTSl7TShDKX0pKS50aGVuKHgsTil9RigoY2U9''@;'; put 'put ''Y2UuYXBwbHkobGUsZGV8fFtdKSkubmV4dCgpKX0pfSxFPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGxlLGRlKXt2YXIgdWUsY2UsWSxiLHg9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmWVswXSl0aHJvdyBZWzFdO3JldHVybiBZWzFdfSx0cnlzOltdLG9wczpbXX07''@;'; put 'put ''cmV0dXJuIGI9e25leHQ6TigwKSx0aHJvdzpOKDEpLHJldHVybjpOKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxiO2Z1bmN0aW9uIE4oRil7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihDKXtpZih1ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt4Oyl0cnl7aWYodWU9MSxjZSYmKFk9MiZDWzBdP2NlLnJldHVybjpDWzBdP2NlLnRocm93fHwoKFk9Y2UucmV0dXJuKSYmWS5jYWxsKGNlKSwwKTpjZS5uZXh0KSYm''@;'; put 'put ''IShZPVkuY2FsbChjZSxDWzFdKSkuZG9uZSlyZXR1cm4gWTtzd2l0Y2goY2U9MCxZJiYoQz1bMiZDWzBdLFkudmFsdWVdKSxDWzBdKXtjYXNlIDA6Y2FzZSAxOlk9QzticmVhaztjYXNlIDQ6cmV0dXJuIHgubGFiZWwrKyx7dmFsdWU6Q1sxXSxkb25lOiExfTtjYXNlIDU6eC5sYWJlbCsrLGNl''@;'; put 'put ''PUNbMV0sQz1bMF07Y29udGludWU7Y2FzZSA3OkM9eC5vcHMucG9wKCkseC50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoWT0oWT14LnRyeXMpLmxlbmd0aD4wJiZZW1kubGVuZ3RoLTFdKXx8NiE9PUNbMF0mJjIhPT1DWzBdKSl7eD0wO2NvbnRpbnVlfWlmKDM9PT1DWzBdJiYo''@;'; put 'put ''IVl8fENbMV0+WVswXSYmQ1sxXTxZWzNdKSl7eC5sYWJlbD1DWzFdO2JyZWFrfWlmKDY9PT1DWzBdJiZ4LmxhYmVsPFlbMV0pe3gubGFiZWw9WVsxXSxZPUM7YnJlYWt9aWYoWSYmeC5sYWJlbDxZWzJdKXt4LmxhYmVsPVlbMl0seC5vcHMucHVzaChDKTticmVha31ZWzJdJiZ4Lm9wcy5wb3Ao''@;'; put 'put ''KSx4LnRyeXMucG9wKCk7Y29udGludWV9Qz1kZS5jYWxsKGxlLHgpfWNhdGNoKE0pe0M9WzYsTV0sY2U9MH1maW5hbGx5e3VlPVk9MH1pZig1JkNbMF0pdGhyb3cgQ1sxXTtyZXR1cm57dmFsdWU6Q1swXT9DWzFdOnZvaWQgMCxkb25lOiEwfX0oW0YsZ10pfX19O09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnRocm93SWZFcnJvcj1CLlJlcXVlc3RDbGllbnQ9dm9pZCAwO3ZhciB6PUwoODM3Myksaj1MKDE1MjcpLFY9TCgxMzk1KSxHPUwoMjgxMyksVz1MKDk3NzgpLFU9TCg5NTI2KSxxPUwoNTkyOCksdGU9TCgxMDA1KSxuZT1mdW5jdGlv''@;'; put 'put ''bigpe2Z1bmN0aW9uIGxlKGRlLHVlLGNlKXt2YXIgWT10aGlzO3RoaXMuYmFzZVVybD1kZSx0aGlzLnJlcXVlc3RzPVtdLHRoaXMucmVxdWVzdHNMaW1pdD0xMCx0aGlzLmNzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn0sdGhpcy5nZXRSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBZLnJlcXVlc3RzfSx0aGlzLmNsZWFyUmVxdWVzdHM9ZnVuY3Rpb24oKXtZLnJlcXVlc3RzPVtdfSx0aGlzLmF1dGhvcml6ZT1mdW5jdGlvbihiKXtyZXR1cm4gUihZLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeCxOLEYsZyxDLE0seSxwLFMsUSxyZSxmZTtyZXR1cm4gRSh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKG1lKXtzd2l0Y2gobWUubGFiZWwpe2Nhc2UgMDpmb3IoTj17fSxGPWIuc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sKGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1GLEM9Zy5xdWVyeVNlbGVjdG9yKCIjYXBwbGljYXRp''@;'; put 'put ''b25fYXV0aG9yaXphdGlvbiIpLHg9Qz90aGlzLmJhc2VVcmwrQy5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpOm51bGwsTT1DPy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLHk9MCxwPU07eTxwLmxlbmd0aDt5KyspInVzZXJfb2F1dGhfYXBwcm92YWwiPT09KFM9cFt5XSkubmFtZSYmKFMudmFs''@;'; put 'put ''dWU9InRydWUiKSxOW1MubmFtZV09Uy52YWx1ZTtmb3IoZmUgaW4oUT1PYmplY3Qua2V5cyhOKS5maW5kKGZ1bmN0aW9uKGtlKXtyZXR1cm4ga2U/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoImNzcmYiKX0pKSYmKHRoaXMuY3NyZlRva2VuLnZhbHVlPU5bUV0sdGhpcy5jc3JmVG9rZW4uaGVh''@;'; put 'put ''ZGVyTmFtZT10aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lfHwieC1jc3JmLXRva2VuIikscmU9bmV3IEZvcm1EYXRhLE4pTi5oYXNPd25Qcm9wZXJ0eShmZSkmJnJlLmFwcGVuZChmZSxOW2ZlXSk7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJBdXRoIEZvcm0gVVJMIGlzIG51bGwgb3IgdW5kZWZp''@;'; put 'put ''bmVkLiIpO3JldHVybls0LHRoaXMuaHR0cENsaWVudC5wb3N0KHgscmUse3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7QWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn19KS50aGVuKGZ1bmN0aW9uKGtlKXtyZXR1cm4ga2UuZGF0YX0pLmNhdGNoKGZ1bmN0aW9u''@;'; put 'put ''KGtlKXsoSy5sb2dnZXJ8fEopLmVycm9yKGtlKX0pXTtjYXNlIDE6cmV0dXJuWzIsbWUuc2VudCgpXX19KX0pfSx0aGlzLmdldEhlYWRlcnM9ZnVuY3Rpb24oYix4KXt2YXIgTj17fTtyZXR1cm4iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiE9PXgmJihOWyJDb250ZW50LVR5''@;'; put 'put ''cGUiXT14KSxOLkFjY2VwdD0iYXBwbGljYXRpb24vanNvbiI9PT14PyJhcHBsaWNhdGlvbi9qc29uIjoiKi8qIixiJiYoTi5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoYikpLFkuY3NyZlRva2VuLmhlYWRlck5hbWUmJlkuY3NyZlRva2VuLnZhbHVlJiYoTltZLmNzcmZUb2tlbi5o''@;'; put 'put ''ZWFkZXJOYW1lXT1ZLmNzcmZUb2tlbi52YWx1ZSksTn0sdGhpcy5wYXJzZUFuZFNldEZpbGVVcGxvYWRDc3JmVG9rZW49ZnVuY3Rpb24oYil7dmFyIHg9WS5wYXJzZUNzcmZUb2tlbihiKTt4JiYoWS5maWxlVXBsb2FkQ3NyZlRva2VuPXgpfSx0aGlzLnBhcnNlQW5kU2V0Q3NyZlRva2VuPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3ZhciB4PVkucGFyc2VDc3JmVG9rZW4oYik7eCYmKFkuY3NyZlRva2VuPXgpfSx0aGlzLnBhcnNlQ3NyZlRva2VuPWZ1bmN0aW9uKGIpe3ZhciB4LE49bnVsbD09PSh4PWIuaGVhZGVyc1sieC1jc3JmLWhlYWRlciJdKXx8dm9pZCAwPT09eD92b2lkIDA6eC50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpO2lmKE4pcmV0dXJue2hlYWRlck5hbWU6Tix2YWx1ZTpiLmhlYWRlcnNbTl18fCIifX0sdGhpcy5oYW5kbGVFcnJvcj1mdW5jdGlvbihiLHgsTil7cmV0dXJuIHZvaWQgMD09PU4mJihOPSExKSxSKFksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBGLGc7cmV0dXJuIEUodGhpcyxm''@;'; put 'put ''dW5jdGlvbihDKXtzd2l0Y2goQy5sYWJlbCl7Y2FzZSAwOnJldHVybiBGPWIucmVzcG9uc2UsYiBpbnN0YW5jZW9mIFYuQXV0aG9yaXplRXJyb3I/WzQsdGhpcy5odHRwQ2xpZW50LmdldChiLmNvbmZpcm1Vcmwse3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6''@;'; put 'put ''InRleHQvcGxhaW4iLEFjY2VwdDoiKi8qIn19KS5jYXRjaChmdW5jdGlvbihNKXt0aHJvdygwLFcucHJlZml4TWVzc2FnZSkoTSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBlcnJvciBjb25maXJtVXJsLiAiKX0pXTpbMyw1XTtjYXNlIDE6cmV0dXJuIGc9Qy5zZW50KCksKDAsai5pc0F1dGhvcml6''@;'; put 'put ''ZUZvcm1SZXF1aXJlZCkoZz8uZGF0YSk/WzQsdGhpcy5hdXRob3JpemUoZy5kYXRhKS5jYXRjaChmdW5jdGlvbihNKXt0aHJvdygwLFcucHJlZml4TWVzc2FnZSkoTSwiRXJyb3Igd2hpbGUgYXV0aG9yaXppbmcgcmVxdWVzdC4gIil9KV06WzMsM107Y2FzZSAyOkMuc2VudCgpLEMubGFiZWw9''@;'; put 'put ''MztjYXNlIDM6cmV0dXJuWzQseCgpLmNhdGNoKGZ1bmN0aW9uKE0pe3Rocm93KDAsVy5wcmVmaXhNZXNzYWdlKShNLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgY2FsbGJhY2sgaW4gaGFuZGxlRXJyb3IuICIpfSldO2Nhc2UgNDpyZXR1cm5bMixDLnNlbnQoKV07Y2FzZSA1OmlmKGIgaW5zdGFu''@;'; put 'put ''Y2VvZiBWLkxvZ2luUmVxdWlyZWRFcnJvcil0aHJvdyB0aGlzLmNsZWFyQ3NyZlRva2VucygpLGI7cmV0dXJuIGIgaW5zdGFuY2VvZiB0ZS5JbnZhbGlkU0FTanNDc3JmRXJyb3I/WzQsdGhpcy5odHRwQ2xpZW50LmdldCgiLyIse3dpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24o''@;'; put 'put ''TSl7dmFyIHkscD1udWxsPT09KHk9LzxzY3JpcHQ+ZG9jdW1lbnQuY29va2llID0gJyhYU1JGLVRPS0VOPS4qOyBNYXgtQWdlPTg2NDAwOyBTYW1lU2l0ZT1TdHJpY3Q7IFBhdGg9XC87KSc8XC9zY3JpcHQ+Ly5leGVjKE0uZGF0YSkpfHx2b2lkIDA9PT15P3ZvaWQgMDp5WzFdO3AmJihkb2N1''@;'; put 'put ''bWVudC5jb29raWU9cCl9KS5jYXRjaChmdW5jdGlvbihNKXt0aHJvdygwLFcucHJlZml4TWVzc2FnZSkoTSwiRXJyb3Igd2hpbGUgcmUtZmV0Y2hpbmcgQ1NSRiB0b2tlbi4iKX0pXTpbMyw4XTtjYXNlIDY6cmV0dXJuIEMuc2VudCgpLFs0LHgoKS5jYXRjaChmdW5jdGlvbihNKXt0aHJvdygw''@;'; put 'put ''LFcucHJlZml4TWVzc2FnZSkoTSwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNhbGxiYWNrIGluIGhhbmRsZUVycm9yLiAiKX0pXTtjYXNlIDc6cmV0dXJuWzIsQy5zZW50KCldO2Nhc2UgODpyZXR1cm4gNDAzIT09Rj8uc3RhdHVzJiY0NDkhPT1GPy5zdGF0dXM/WzMsMTFdOih0aGlzLnBhcnNl''@;'; put 'put ''QW5kU2V0Q3NyZlRva2VuKEYpLHRoaXMuY3NyZlRva2VuLmhlYWRlck5hbWUmJnRoaXMuY3NyZlRva2VuLnZhbHVlP1s0LHgoKS5jYXRjaChmdW5jdGlvbihNKXt0aHJvdygwLFcucHJlZml4TWVzc2FnZSkoTSwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNhbGxiYWNrIGluIGhhbmRsZUVycm9y''@;'; put 'put ''LiAiKX0pXTpbMywxMF0pO2Nhc2UgOTpyZXR1cm5bMixDLnNlbnQoKV07Y2FzZSAxMDp0aHJvdyBiO2Nhc2UgMTE6aWYoNDA0PT09Rj8uc3RhdHVzKXRocm93IG5ldyBWLk5vdEZvdW5kRXJyb3IoRi5jb25maWcudXJsKTtpZig1MDI9PT1GPy5zdGF0dXMpe2lmKE4pdGhyb3cgbmV3IFYuSW50''@;'; put 'put ''ZXJuYWxTZXJ2ZXJFcnJvcjtyZXR1cm5bMl19Qy5sYWJlbD0xMjtjYXNlIDEyOnRocm93IGIuaXNBeGlvc0Vycm9yJiYiVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSI9PT1iLmNvZGU/bmV3IFYuQ2VydGlmaWNhdGVFcnJvcihiLm1lc3NhZ2UpOmIubWVzc2FnZT9iOigwLFcucHJl''@;'; put 'put ''Zml4TWVzc2FnZSkoYiwiRXJyb3Igd2hpbGUgaGFuZGxpbmcgZXJyb3IuICIpfX0pfSl9LHRoaXMuY3JlYXRlSHR0cENsaWVudChkZSx1ZSksY2UmJih0aGlzLnJlcXVlc3RzTGltaXQ9Y2UpfXJldHVybiBsZS5wcm90b3R5cGUuc2V0Q29uZmlnPWZ1bmN0aW9uKGRlLHVlKXt0aGlzLmNyZWF0''@;'; put 'put ''ZUh0dHBDbGllbnQoZGUsdWUpfSxsZS5wcm90b3R5cGUuc2F2ZUxvY2FsU3RvcmFnZVRva2VuPWZ1bmN0aW9uKGRlLHVlKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYWNjZXNzVG9rZW4iLGRlKSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgicmVmcmVzaFRva2VuIix1ZSl9LGxlLnByb3RvdHlwZS5n''@;'; put 'put ''ZXRDc3JmVG9rZW49ZnVuY3Rpb24oZGUpe3JldHVybiB2b2lkIDA9PT1kZSYmKGRlPSJnZW5lcmFsIiksImZpbGUiPT09ZGU/dGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuOnRoaXMuY3NyZlRva2VufSxsZS5wcm90b3R5cGUuY2xlYXJDc3JmVG9rZW5zPWZ1bmN0aW9uKCl7dGhpcy5jc3JmVG9r''@;'; put 'put ''ZW49e2hlYWRlck5hbWU6IiIsdmFsdWU6IiJ9LHRoaXMuZmlsZVVwbG9hZENzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn19LGxlLnByb3RvdHlwZS5jbGVhckxvY2FsU3RvcmFnZVRva2Vucz1mdW5jdGlvbigpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJhY2Nlc3NUb2tlbiIsIiIp''@;'; put 'put ''LGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJyZWZyZXNoVG9rZW4iLCIiKX0sbGUucHJvdG90eXBlLmdldEJhc2VVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmJhc2VVUkx8fCIifSxsZS5wcm90b3R5cGUuYXBwZW5kUmVxdWVzdD1mdW5jdGlvbihkZSx1ZSxj''@;'; put 'put ''ZSl7dmFyIFk9IiIsYj0iIix4PW51bGw7Y2UmJihkZT8ubG9nPyhZPSgwLHEucGFyc2VTb3VyY2VDb2RlKShkZS5sb2cpLGI9KDAscS5wYXJzZUdlbmVyYXRlZENvZGUpKGRlLmxvZykseD1kZT8ucmVzdWx0P2RlLnJlc3VsdC5XT1JLOmRlLmxvZyk6ZGU/LnJlc3VsdCYmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgZGUucmVzdWx0JiYoWT0oMCxxLnBhcnNlU291cmNlQ29kZSkoZGUucmVzdWx0KSxiPSgwLHEucGFyc2VHZW5lcmF0ZWRDb2RlKShkZS5yZXN1bHQpKSx4PWRlLnJlc3VsdC5XT1JLKSk7dmFyIE49InN0cmluZyI9PXR5cGVvZiBkZT8ucmVzdWx0P2RlPy5yZXN1bHQ6SlNPTi5zdHJp''@;'; put 'put ''bmdpZnkoZGU/LnJlc3VsdCxudWxsLDIpO3RoaXMucmVxdWVzdHMucHVzaCh7bG9nRmlsZTpkZT8ubG9nfHxOfHxkZSxzZXJ2aWNlTGluazp1ZSx0aW1lc3RhbXA6bmV3IERhdGUsc291cmNlQ29kZTpZLGdlbmVyYXRlZENvZGU6YixTQVNXT1JLOnh9KSx0aGlzLnJlcXVlc3RzLmxlbmd0aD50''@;'; put 'put ''aGlzLnJlcXVlc3RzTGltaXQmJnRoaXMucmVxdWVzdHMuc3BsaWNlKDAsMSl9LGxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZGUsdWUsY2UsWSxiKXtyZXR1cm4gdm9pZCAwPT09Y2UmJihjZT0iYXBwbGljYXRpb24vanNvbiIpLHZvaWQgMD09PVkmJihZPXt9KSx2b2lkIDA9PT1iJiYoYj0h''@;'; put 'put ''MSksUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgeCxOLEY9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGcpe3JldHVybiB4PUkoSSh7fSx0aGlzLmdldEhlYWRlcnModWUsY2UpKSxZKSxOPXtoZWFkZXJzOngscmVzcG9uc2VUeXBlOiJ0ZXh0L3BsYWluIj09PWNlPyJ0''@;'; put 'put ''ZXh0IjoianNvbiIsd2l0aENyZWRlbnRpYWxzOiEwfSwidGV4dC9wbGFpbiI9PT1jZSYmKE4udHJhbnNmb3JtUmVzcG9uc2U9dm9pZCAwKSxbMix0aGlzLmh0dHBDbGllbnQuZ2V0KGRlLE4pLnRoZW4oZnVuY3Rpb24oQyl7cmV0dXJuKDAsQi50aHJvd0lmRXJyb3IpKEMpLEYucGFyc2VSZXNw''@;'; put 'put ''b25zZShDKX0pLmNhdGNoKGZ1bmN0aW9uKEMpe3JldHVybiBSKEYsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBNPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbih5KXtzd2l0Y2goeS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuaGFuZGxlRXJyb3IoQyxmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBNLmdldChkZSx1ZSxjZSxZKS5jYXRjaChmdW5jdGlvbihwKXt0aHJvdygwLFcucHJlZml4TWVzc2FnZSkocCwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGhhbmRsZSBlcnJvciBjYWxsYmFjay4gIil9KX0sYildO2Nhc2UgMTpyZXR1cm5bMix5LnNlbnQoKV19fSl9KX0pXX0pfSl9LGxl''@;'; put 'put ''LnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKGRlLHVlLGNlLFksYix4KXtyZXR1cm4gdm9pZCAwPT09WSYmKFk9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1iJiYoYj17fSksdm9pZCAwPT09eCYmKHg9e30pLFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIE4sRj10aGlz''@;'; put 'put ''O3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7cmV0dXJuIE49SShJKHt9LHRoaXMuZ2V0SGVhZGVycyhjZSxZKSksYiksWzIsdGhpcy5odHRwQ2xpZW50LnBvc3QoZGUsdWUsSSh7aGVhZGVyczpOLHdpdGhDcmVkZW50aWFsczohMH0seCkpLnRoZW4oZnVuY3Rpb24oQyl7cmV0dXJuKDAsQi50''@;'; put 'put ''aHJvd0lmRXJyb3IpKEMpLEYucGFyc2VSZXNwb25zZShDKX0pLmNhdGNoKGZ1bmN0aW9uKEMpe3JldHVybiBSKEYsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBNPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbih5KXtzd2l0Y2goeS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMu''@;'; put 'put ''aGFuZGxlRXJyb3IoQyxmdW5jdGlvbigpe3JldHVybiBNLnBvc3QoZGUsdWUsY2UsWSxiKX0pXTtjYXNlIDE6cmV0dXJuWzIseS5zZW50KCldfX0pfSl9KV19KX0pfSxsZS5wcm90b3R5cGUucHV0PWZ1bmN0aW9uKGRlLHVlLGNlLFkpe3JldHVybiB2b2lkIDA9PT1ZJiYoWT17fSksUih0aGlz''@;'; put 'put ''LHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYix4PXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihOKXtyZXR1cm4gYj1JKEkoe30sdGhpcy5nZXRIZWFkZXJzKGNlLCJhcHBsaWNhdGlvbi9qc29uIikpLFkpLFsyLHRoaXMuaHR0cENsaWVudC5wdXQoZGUsdWUse2hlYWRlcnM6Yix3''@;'; put 'put ''aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKEYpe3JldHVybigwLEIudGhyb3dJZkVycm9yKShGKSx4LnBhcnNlUmVzcG9uc2UoRil9KS5jYXRjaChmdW5jdGlvbihGKXtyZXR1cm4gUih4LHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZz10aGlzO3JldHVybiBFKHRoaXMs''@;'; put 'put ''ZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKEYsZnVuY3Rpb24oKXtyZXR1cm4gZy5wdXQoZGUsdWUsY2UsWSl9KV07Y2FzZSAxOnJldHVyblsyLEMuc2VudCgpXX19KX0pfSldfSl9KX0sbGUucHJvdG90eXBlLmRlbGV0ZT1mdW5j''@;'; put 'put ''dGlvbihkZSx1ZSl7cmV0dXJuIFIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGNlLFk9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBjZT10aGlzLmdldEhlYWRlcnModWUsImFwcGxpY2F0aW9uL2pzb24iKSxbMix0aGlzLmh0dHBDbGllbnQuZGVsZXRl''@;'; put 'put ''KGRlLHtoZWFkZXJzOmNlLHdpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuKDAsQi50aHJvd0lmRXJyb3IpKHgpLFkucGFyc2VSZXNwb25zZSh4KX0pLmNhdGNoKGZ1bmN0aW9uKHgpe3JldHVybiBSKFksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBOPXRo''@;'; put 'put ''aXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuaGFuZGxlRXJyb3IoeCxmdW5jdGlvbigpe3JldHVybiBOLmRlbGV0ZShkZSx1ZSl9KV07Y2FzZSAxOnJldHVyblsyLEYuc2VudCgpXX19KX0pfSldfSl9KX0sbGUucHJvdG90''@;'; put 'put ''eXBlLnBhdGNoPWZ1bmN0aW9uKGRlLHVlLGNlKXtyZXR1cm4gdm9pZCAwPT09dWUmJih1ZT17fSksUih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgWSxiPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbih4KXtyZXR1cm4gWT10aGlzLmdldEhlYWRlcnMoY2UsImFwcGxpY2F0''@;'; put 'put ''aW9uL2pzb24iKSxbMix0aGlzLmh0dHBDbGllbnQucGF0Y2goZGUsdWUse2hlYWRlcnM6WSx3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKE4pe3JldHVybigwLEIudGhyb3dJZkVycm9yKShOKSxiLnBhcnNlUmVzcG9uc2UoTil9KS5jYXRjaChmdW5jdGlvbihOKXtyZXR1cm4g''@;'; put 'put ''UihiLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRj10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKE4sZnVuY3Rpb24oKXtyZXR1cm4gRi5wYXRjaChkZSx1ZSxjZSl9KV07Y2FzZSAxOnJl''@;'; put 'put ''dHVyblsyLGcuc2VudCgpXX19KX0pfSldfSl9KX0sbGUucHJvdG90eXBlLnVwbG9hZEZpbGU9ZnVuY3Rpb24oZGUsdWUsY2Upe3ZhciBZO3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiLHgsTjtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChGLmxh''@;'; put 'put ''YmVsKXtjYXNlIDA6Yj10aGlzLmdldEhlYWRlcnMoY2UsImFwcGxpY2F0aW9uL2pzb24iKSwhKG51bGw9PT0oWT10aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4pfHx2b2lkIDA9PT1ZKSYmWS52YWx1ZSYmKGJbdGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuLmhlYWRlck5hbWVdPXRoaXMuZmlsZVVw''@;'; put 'put ''bG9hZENzcmZUb2tlbi52YWx1ZSksRi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gRi50cnlzLnB1c2goWzEsMywsNF0pLFs0LHRoaXMuaHR0cENsaWVudC5wb3N0KGRlLHVlLHtoZWFkZXJzOmIsdHJhbnNmb3JtUmVxdWVzdDpmdW5jdGlvbihnKXtyZXR1cm4gZ319KV07Y2FzZSAyOnJldHVyblsy''@;'; put 'put ''LHtyZXN1bHQ6KE49Ri5zZW50KCkpLmRhdGEsZXRhZzpOLmhlYWRlcnMuZXRhZ31dO2Nhc2UgMzppZih4PUYuc2VudCgpLDQwMz09PShudWxsPT0oTj14LnJlc3BvbnNlKT92b2lkIDA6Ti5zdGF0dXMpfHw0NDk9PT1OPy5zdGF0dXMpe2lmKHRoaXMucGFyc2VBbmRTZXRGaWxlVXBsb2FkQ3Ny''@;'; put 'put ''ZlRva2VuKE4pLHRoaXMuZmlsZVVwbG9hZENzcmZUb2tlbilyZXR1cm5bMix0aGlzLnVwbG9hZEZpbGUoZGUsdWUsY2UpXTt0aHJvdyB4fXRocm93IHg7Y2FzZSA0OnJldHVyblsyXX19KX0pfSxsZS5wcm90b3R5cGUucGFyc2VSZXNwb25zZT1mdW5jdGlvbihkZSl7dmFyIHVlLGNlPWRlPy5o''@;'; put 'put ''ZWFkZXJzP2RlLmhlYWRlcnMuZXRhZzoiIixZPSExO3RyeXt1ZT0ic3RyaW5nIj09dHlwZW9mIGRlLmRhdGE/SlNPTi5wYXJzZShkZS5kYXRhKTpkZS5kYXRhfWNhdGNoe3RyeXt1ZT1KU09OLnBhcnNlKCgwLEcucGFyc2VXZWJvdXRSZXNwb25zZSkoZGUuZGF0YSkpfWNhdGNoe3VlPWRlLmRh''@;'; put 'put ''dGF9WT0hMH12YXIgYj17cmVzdWx0OnVlLGV0YWc6Y2Usc3RhdHVzOmRlLnN0YXR1c307cmV0dXJuIFkmJihiLmxvZz1kZS5kYXRhKSxifSxsZS5wcm90b3R5cGUuY3JlYXRlSHR0cENsaWVudD1mdW5jdGlvbihkZSx1ZSl7dmFyIGNlPXVlP25ldyB6LkFnZW50KHVlKTp2b2lkIDA7dGhpcy5o''@;'; put 'put ''dHRwQ2xpZW50PSgwLHEuY3JlYXRlQXhpb3NJbnN0YW5jZSkoZGUsY2UpLHRoaXMuaHR0cENsaWVudC5kZWZhdWx0cy52YWxpZGF0ZVN0YXR1cz1mdW5jdGlvbihZKXtyZXR1cm4gWT49MjAwJiZZPD00MDF9fSxsZX0oKTtCLlJlcXVlc3RDbGllbnQ9bmUsQi50aHJvd0lmRXJyb3I9ZnVuY3Rp''@;'; put 'put ''b24obGUpe3ZhciBkZSx1ZSxjZSxZLGIseCxOO3N3aXRjaChsZS5zdGF0dXMpe2Nhc2UgNDAwOmlmKCJvYmplY3QiPT10eXBlb2YgbGUuZGF0YSYmImludmFsaWRfZ3JhbnQiPT09bGUuZGF0YS5lcnJvcil0aHJvdyBuZXcgVi5Mb2dpblJlcXVpcmVkRXJyb3IobGUuZGF0YSk7aWYoInN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiBsZS5kYXRhJiYiaW52YWxpZCBjc3JmIHRva2VuISI9PT1sZS5kYXRhLnRvTG93ZXJDYXNlKCkpdGhyb3cgbmV3IHRlLkludmFsaWRTQVNqc0NzcmZFcnJvcjticmVhaztjYXNlIDQwMTp0aHJvdyJvYmplY3QiPT10eXBlb2YgbGUuZGF0YT9uZXcgVi5Mb2dpblJlcXVpcmVk''@;'; put 'put ''RXJyb3IobGUuZGF0YSk6bmV3IFYuTG9naW5SZXF1aXJlZEVycm9yfWlmKG51bGwhPT0odWU9bnVsbD09PShkZT1sZS5kYXRhKXx8dm9pZCAwPT09ZGU/dm9pZCAwOmRlLmVudGl0eUlEKSYmdm9pZCAwIT09dWUmJnVlLmluY2x1ZGVzKCJsb2dpbiIpKXRocm93IG5ldyBWLkxvZ2luUmVxdWly''@;'; put 'put ''ZWRFcnJvcjtpZigic3RyaW5nIj09dHlwZW9mIGxlLmRhdGEmJigwLGouaXNBdXRob3JpemVGb3JtUmVxdWlyZWQpKGxlLmRhdGEpKXRocm93IG5ldyBWLkF1dGhvcml6ZUVycm9yKCJBdXRob3JpemF0aW9uIHJlcXVpcmVkIixsZS5yZXF1ZXN0LnJlc3BvbnNlVVJMKTtpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGxlLmRhdGEmJigwLGouaXNMb2dJblJlcXVpcmVkKShsZS5kYXRhKSYmKG51bGw9PT0oWT1udWxsPT09KGNlPWxlLmNvbmZpZyl8fHZvaWQgMD09PWNlP3ZvaWQgMDpjZS51cmwpfHx2b2lkIDA9PT1ZfHwhWS5pbmNsdWRlcygiL1NBU0xvZ29uL2xvZ2luIikpKXRocm93IG5ldyBW''@;'; put 'put ''LkxvZ2luUmVxdWlyZWRFcnJvcjtpZihudWxsIT09KGI9bGUuZGF0YSkmJnZvaWQgMCE9PWImJmIuYXV0aF9yZXF1ZXN0KXRocm93IG5ldyBWLkF1dGhvcml6ZUVycm9yKGxlLmRhdGEubWVzc2FnZSxsZS5yZXF1ZXN0LnJlc3BvbnNlVVJMKTtpZihudWxsIT09KE49bnVsbD09PSh4PWxlLmNv''@;'; put 'put ''bmZpZyl8fHZvaWQgMD09PXg/dm9pZCAwOngudXJsKSYmdm9pZCAwIT09TiYmTi5pbmNsdWRlcygic2FzQXV0aEVycm9yIikpdGhyb3cgbmV3IFUuU0FTOUF1dGhFcnJvcjt2YXIgZz1pZShsZS5kYXRhKTtpZihnKXRocm93IGd9O3ZhciBpZT1mdW5jdGlvbihsZSl7aWYoIWxlKXJldHVybiBu''@;'; put 'put ''dWxsO3RyeXt2YXIgZGU9SlNPTi5wYXJzZShsZT8ucmVwbGFjZSgvW1xuXHJdL2csIiAiKSk7aWYoZGUuZXJyb3JDb2RlJiZkZS5tZXNzYWdlKXJldHVybiBuZXcgVi5Kb2JFeGVjdXRpb25FcnJvcihkZS5lcnJvckNvZGUsZGUubWVzc2FnZSxsZT8ucmVwbGFjZSgvW1xuXHJdL2csIiAiKSl9''@;'; put 'put ''Y2F0Y2h7fXRyeXtpZihsZT8uaW5jbHVkZXMoJ3siZXJyb3JDb2RlJykmJih4PWxlLnNwbGl0KCd7ImVycm9yQ29kZScpKS5sZW5ndGg+MSl7dmFyIHVlPSd7ImVycm9yQ29kZScreFsxXS5zcGxpdCgnIn0nKVswXSsnIn0nLGNlPUpTT04ucGFyc2UodWUucmVwbGFjZSgvW1xuXHJdL2csIiAi''@;'; put 'put ''KSk7cmV0dXJuIG5ldyBWLkpvYkV4ZWN1dGlvbkVycm9yKGNlLmVycm9yQ29kZSxjZS5tZXNzYWdlLGxlPy5yZXBsYWNlKC9bXG5ccl0vZywiXG4iKSl9fWNhdGNoe310cnl7aWYobGU/Lm1hdGNoKC9zdG9yZWQgcHJvY2VzcyBub3QgZm91bmQ6IC9pKSYmKHg9bGUuc3BsaXQoL3N0b3JlZCBw''@;'; put 'put ''cm9jZXNzIG5vdCBmb3VuZDogL2kpKS5sZW5ndGg+MSl7dmFyIFk9eFsxXS5zcGxpdCgiPGk+IilbMV0uc3BsaXQoIjwvaT4iKVswXSxiPVkuZW5kc1dpdGgoInJ1bm5lciIpPyJTQVNKUyBydW5uZXIgbm90IGZvdW5kLiBIZXJlJ3MgdGhlIGxpbmsgKGh0dHBzOi8vY2xpLnNhc2pzLmlvL2F1''@;'; put 'put ''dGgvI3Nhc2pzLXJ1bm5lcikgdG8gdGhlIFNBUyBjb2RlIGZvciByZWdpc3RlcmluZyB0aGUgU0FTanMgcnVubmVyIjoiU3RvcmVkIHByb2Nlc3Mgbm90IGZvdW5kOiAiLmNvbmNhdChZKTtyZXR1cm4gbmV3IFYuSm9iRXhlY3V0aW9uRXJyb3IoNTAwLGIsIiIpfX1jYXRjaHt9dHJ5e3ZhciB4''@;'; put 'put ''O2lmKCFsZT8ubWF0Y2goLz4+d2Vib3V0QkVHSU48PC8pJiZsZT8ubWF0Y2goL1N0b3JlZCBQcm9jZXNzIEVycm9yL2kpJiZsZT8ubWF0Y2goL1RoaXMgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcnMuL2kpJiYoeD1sZS5zcGxpdCgiPGgyPlNBUyBMb2c8L2gyPiIpKS5sZW5ndGg+MSl7''@;'; put 'put ''dmFyIE49eFsxXS5zcGxpdCgiPHByZT4iKVsxXS5zcGxpdCgiPC9wcmU+IilbMF07cmV0dXJuIG5ldyBWLkpvYkV4ZWN1dGlvbkVycm9yKDUwMCxiPSJUaGlzIHJlcXVlc3QgY29tcGxldGVkIHdpdGggZXJyb3JzLiIsTil9fWNhdGNoe31yZXR1cm4gbnVsbH19LDc5NTpmdW5jdGlvbihILEIs''@;'; put 'put ''TCl7InVzZSBzdHJpY3QiO3ZhciBLLEo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChLPWZ1bmN0aW9uKHEsdGUpe3JldHVybihLPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihuZSxpZSl7bmUuX19wcm90b19fPWllfXx8ZnVu''@;'; put 'put ''Y3Rpb24obmUsaWUpe2Zvcih2YXIgbGUgaW4gaWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGllLGxlKSYmKG5lW2xlXT1pZVtsZV0pfSkocSx0ZSl9LGZ1bmN0aW9uKHEsdGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0ZSYmbnVsbCE9PXRlKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodGUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG5lKCl7dGhpcy5jb25zdHJ1Y3Rvcj1xfUsocSx0ZSkscS5wcm90b3R5cGU9bnVsbD09PXRlP09iamVjdC5jcmVhdGUodGUpOihuZS5wcm90b3R5''@;'; put 'put ''cGU9dGUucHJvdG90eXBlLG5ldyBuZSl9KSxJPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocSl7Zm9yKHZhciB0ZSxuZT0xLGllPWFyZ3VtZW50cy5sZW5ndGg7bmU8aWU7bmUrKylmb3IodmFyIGxlIGluIHRlPWFyZ3Vt''@;'; put 'put ''ZW50c1tuZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLGxlKSYmKHFbbGVdPXRlW2xlXSk7cmV0dXJuIHF9LEkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxSPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihxLHRlLG5lLGllKXtyZXR1cm4gbmV3KG5lfHwo''@;'; put 'put ''bmU9UHJvbWlzZSkpKGZ1bmN0aW9uKGxlLGRlKXtmdW5jdGlvbiB1ZShiKXt0cnl7WShpZS5uZXh0KGIpKX1jYXRjaCh4KXtkZSh4KX19ZnVuY3Rpb24gY2UoYil7dHJ5e1koaWUudGhyb3coYikpfWNhdGNoKHgpe2RlKHgpfX1mdW5jdGlvbiBZKGIpe3ZhciB4O2IuZG9uZT9sZShiLnZhbHVl''@;'; put 'put ''KTooeD1iLnZhbHVlLHggaW5zdGFuY2VvZiBuZT94Om5ldyBuZShmdW5jdGlvbihOKXtOKHgpfSkpLnRoZW4odWUsY2UpfVkoKGllPWllLmFwcGx5KHEsdGV8fFtdKSkubmV4dCgpKX0pfSxFPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHEsdGUpe3ZhciBuZSxpZSxsZSxkZSx1''@;'; put 'put ''ZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZsZVswXSl0aHJvdyBsZVsxXTtyZXR1cm4gbGVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZGU9e25leHQ6Y2UoMCksdGhyb3c6Y2UoMSkscmV0dXJuOmNlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoZGVbU3ltYm9s''@;'; put 'put ''Lml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZGU7ZnVuY3Rpb24gY2UoWSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbih4KXtpZihuZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDt1ZTspdHJ5''@;'; put 'put ''e2lmKG5lPTEsaWUmJihsZT0yJnhbMF0/aWUucmV0dXJuOnhbMF0/aWUudGhyb3d8fCgobGU9aWUucmV0dXJuKSYmbGUuY2FsbChpZSksMCk6aWUubmV4dCkmJiEobGU9bGUuY2FsbChpZSx4WzFdKSkuZG9uZSlyZXR1cm4gbGU7c3dpdGNoKGllPTAsbGUmJih4PVsyJnhbMF0sbGUudmFsdWVd''@;'; put 'put ''KSx4WzBdKXtjYXNlIDA6Y2FzZSAxOmxlPXg7YnJlYWs7Y2FzZSA0OnJldHVybiB1ZS5sYWJlbCsrLHt2YWx1ZTp4WzFdLGRvbmU6ITF9O2Nhc2UgNTp1ZS5sYWJlbCsrLGllPXhbMV0seD1bMF07Y29udGludWU7Y2FzZSA3Ong9dWUub3BzLnBvcCgpLHVlLnRyeXMucG9wKCk7Y29udGludWU7''@;'; put 'put ''ZGVmYXVsdDppZighKChsZT0obGU9dWUudHJ5cykubGVuZ3RoPjAmJmxlW2xlLmxlbmd0aC0xXSl8fDYhPT14WzBdJiYyIT09eFswXSkpe3VlPTA7Y29udGludWV9aWYoMz09PXhbMF0mJighbGV8fHhbMV0+bGVbMF0mJnhbMV08bGVbM10pKXt1ZS5sYWJlbD14WzFdO2JyZWFrfWlmKDY9PT14''@;'; put 'put ''WzBdJiZ1ZS5sYWJlbDxsZVsxXSl7dWUubGFiZWw9bGVbMV0sbGU9eDticmVha31pZihsZSYmdWUubGFiZWw8bGVbMl0pe3VlLmxhYmVsPWxlWzJdLHVlLm9wcy5wdXNoKHgpO2JyZWFrfWxlWzJdJiZ1ZS5vcHMucG9wKCksdWUudHJ5cy5wb3AoKTtjb250aW51ZX14PXRlLmNhbGwocSx1ZSl9''@;'; put 'put ''Y2F0Y2goTil7eD1bNixOXSxpZT0wfWZpbmFsbHl7bmU9bGU9MH1pZig1JnhbMF0pdGhyb3cgeFsxXTtyZXR1cm57dmFsdWU6eFswXT94WzFdOnZvaWQgMCxkb25lOiEwfX0oW1ksYl0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLlNhczlS''@;'; put 'put ''ZXF1ZXN0Q2xpZW50PXZvaWQgMDt2YXIgej1MKDgyMjQpLGo9TCg3ODU3KSxWPUwoOTc3OCksRz1MKDQ1ODgpLFc9TCgxMzk1KSxVPWZ1bmN0aW9uKHEpe2Z1bmN0aW9uIHRlKG5lLGllKXt2YXIgbGU9cS5jYWxsKHRoaXMsbmUsaWUpfHx0aGlzO3JldHVybiBsZS5odHRwQ2xpZW50LmRlZmF1''@;'; put 'put ''bHRzLm1heFJlZGlyZWN0cz0wLGxlLmh0dHBDbGllbnQuZGVmYXVsdHMudmFsaWRhdGVTdGF0dXM9ZnVuY3Rpb24oZGUpe3JldHVybiBkZT49MjAwJiZkZTwzMDN9LHouZGVmYXVsdCYmKCgwLHouZGVmYXVsdCkobGUuaHR0cENsaWVudCksbGUuaHR0cENsaWVudC5kZWZhdWx0cy5qYXI9bmV3''@;'; put 'put ''IGouQ29va2llSmFyKSxsZX1yZXR1cm4gSih0ZSxxKSx0ZS5wcm90b3R5cGUubG9naW49ZnVuY3Rpb24obmUsaWUsbGUpe3JldHVybiBSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkZTtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKHVlKXtzd2l0Y2godWUubGFiZWwpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4gZGU9Ii9Vc2VyIEZvbGRlcnMvIi5jb25jYXQobmUsIi9NeSBGb2xkZXIvc2FzanMvcnVubmVyIiksdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphcj8odGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphci5yZW1vdmVBbGxDb29raWVzKCksWzQsdGhpcy5nZXQoIiIuY29uY2F0''@;'; put 'put ''KGxlLCI/X3Byb2dyYW09IikuY29uY2F0KGRlLCImX3VzZXJuYW1lPSIpLmNvbmNhdChuZSwiJl9wYXNzd29yZD0iKS5jb25jYXQoaWUpLHZvaWQgMCwidGV4dC9wbGFpbiIpXSk6WzMsMl07Y2FzZSAxOnVlLnNlbnQoKSx1ZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSl9KX0sdGUucHJv''@;'; put 'put ''dG90eXBlLmdldD1mdW5jdGlvbihuZSxpZSxsZSxkZSx1ZSl7cmV0dXJuIHZvaWQgMD09PWxlJiYobGU9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT1kZSYmKGRlPXt9KSx2b2lkIDA9PT11ZSYmKHVlPSExKSxSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjZSxZLGI9''@;'; put 'put ''dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKHgpe3JldHVybiBjZT1JKEkoe30sdGhpcy5nZXRIZWFkZXJzKGllLGxlKSksZGUpLFk9e2hlYWRlcnM6Y2UscmVzcG9uc2VUeXBlOiJ0ZXh0L3BsYWluIj09PWxlPyJ0ZXh0IjoianNvbiIsd2l0aENyZWRlbnRpYWxzOiEwfSwidGV4dC9wbGFp''@;'; put 'put ''biI9PT1sZSYmKFkudHJhbnNmb3JtUmVzcG9uc2U9dm9pZCAwKSxbMix0aGlzLmh0dHBDbGllbnQuZ2V0KG5lLFkpLnRoZW4oZnVuY3Rpb24oTil7cmV0dXJuIDMwMj09PU4uc3RhdHVzP2IuZ2V0KE4uaGVhZGVycy5sb2NhdGlvbixpZSxsZSk6KCgwLEcudGhyb3dJZkVycm9yKShOKSxiLnBh''@;'; put 'put ''cnNlUmVzcG9uc2UoTikpfSkuY2F0Y2goZnVuY3Rpb24oTil7cmV0dXJuIFIoYix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEY9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6aWYoTiBpbnN0YW5jZW9mIFcuSm9iRXhlY3V0aW9uRXJy''@;'; put 'put ''b3IpdGhyb3cgTjtyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKE4sZnVuY3Rpb24oKXtyZXR1cm4gRi5nZXQobmUsaWUsbGUsZGUpLmNhdGNoKGZ1bmN0aW9uKEMpe3Rocm93KDAsVi5wcmVmaXhNZXNzYWdlKShDLCJFcnJvciB3aGlsZSBleGVjdXRpbmcgaGFuZGxlIGVycm9yIGNhbGxiYWNr''@;'; put 'put ''LiAiKX0pfSx1ZSkuY2F0Y2goZnVuY3Rpb24oQyl7dGhyb3coMCxWLnByZWZpeE1lc3NhZ2UpKEMsIkVycm9yIHdoaWxlIGhhbmRsaW5nIGVycm9yLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIsZy5zZW50KCldfX0pfSl9KV19KX0pfSx0ZS5wcm90b3R5cGUucG9zdD1mdW5jdGlvbihuZSxpZSxs''@;'; put 'put ''ZSxkZSx1ZSl7cmV0dXJuIHZvaWQgMD09PWRlJiYoZGU9ImFwcGxpY2F0aW9uL2pzb24iKSx2b2lkIDA9PT11ZSYmKHVlPXt9KSxSKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjZSxZPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gY2U9SShJKHt9LHRo''@;'; put 'put ''aXMuZ2V0SGVhZGVycyhsZSxkZSkpLHVlKSxbMix0aGlzLmh0dHBDbGllbnQucG9zdChuZSxpZSx7aGVhZGVyczpjZSx3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKHgpe3JldHVybiBSKFksdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''Til7c3dpdGNoKE4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gMzAyIT09eC5zdGF0dXM/WzMsMl06WzQsdGhpcy5nZXQoeC5oZWFkZXJzLmxvY2F0aW9uLHZvaWQgMCxkZSx1ZSldO2Nhc2UgMTpyZXR1cm5bMixOLnNlbnQoKV07Y2FzZSAyOnJldHVybigwLEcudGhyb3dJZkVycm9yKSh4KSxbMix0''@;'; put 'put ''aGlzLnBhcnNlUmVzcG9uc2UoeCldfX0pfSl9KS5jYXRjaChmdW5jdGlvbih4KXtyZXR1cm4gUihZLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTj10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oRil7c3dpdGNoKEYubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVy''@;'; put 'put ''cm9yKHgsZnVuY3Rpb24oKXtyZXR1cm4gTi5wb3N0KG5lLGllLGxlLGRlLHVlKX0pXTtjYXNlIDE6cmV0dXJuWzIsRi5zZW50KCldfX0pfSl9KV19KX0pfSx0ZX0oRy5SZXF1ZXN0Q2xpZW50KTtCLlNhczlSZXF1ZXN0Q2xpZW50PVV9LDM2MDI6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgSyxKPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoSz1mdW5jdGlvbih6LGope3JldHVybihLPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihWLEcpe1YuX19wcm90b19fPUd9fHxmdW5jdGlvbihWLEcpe2Zvcih2YXIg''@;'; put 'put ''VyBpbiBHKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChHLFcpJiYoVltXXT1HW1ddKX0pKHosail9LGZ1bmN0aW9uKHosail7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGomJm51bGwhPT1qKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJp''@;'; put 'put ''bmcoaikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gVigpe3RoaXMuY29uc3RydWN0b3I9en1LKHosaiksei5wcm90b3R5cGU9bnVsbD09PWo/T2JqZWN0LmNyZWF0ZShqKTooVi5wcm90b3R5cGU9ai5wcm90b3R5cGUsbmV3IFYpfSk7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU2FzanNSZXF1ZXN0Q2xpZW50PXZvaWQgMDt2YXIgST1MKDQ1ODgpLFI9TCg1OTI4KSxFPWZ1bmN0aW9uKHope2Z1bmN0aW9uIGooKXt2YXIgVj1udWxsIT09eiYmei5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJu''@;'; put 'put ''IFYuZ2V0SGVhZGVycz1mdW5jdGlvbihHLFcpe3ZhciBVLHE9e307cmV0dXJuImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIhPT1XJiYocVsiQ29udGVudC1UeXBlIl09VykscS5BY2NlcHQ9ImFwcGxpY2F0aW9uL2pzb24iPT09Vz9XOiIqLyoiLEd8fHR5cGVvZiB3aW5kb3c+''@;'; put 'put ''InUifHwoRz1udWxsIT09KFU9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImFjY2Vzc1Rva2VuIikpJiZ2b2lkIDAhPT1VP1U6dm9pZCAwKSxHJiYocS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoRykpLHF9LFZ9cmV0dXJuIEooaix6KSxqLnByb3RvdHlwZS5wYXJzZVJlc3BvbnNlPWZ1''@;'; put 'put ''bmN0aW9uKFYpe3ZhciBHLFcsVSxxPVY/LmhlYWRlcnM/Vi5oZWFkZXJzLmV0YWc6IiIsdGU9e307dHJ5e3RlPSJzdHJpbmciPT10eXBlb2YgVi5kYXRhP0pTT04ucGFyc2UoVi5kYXRhKTpWLmRhdGF9Y2F0Y2h7aWYoVi5kYXRhLmluY2x1ZGVzKFIuU0FTSlNfTE9HU19TRVBBUkFUT1IpKXt2''@;'; put 'put ''YXIgbmU9Vi5kYXRhLnNwbGl0KFIuU0FTSlNfTE9HU19TRVBBUkFUT1IpO3ZvaWQgMCE9PShHPW5lWzBdKSYmKHRlPUcpLFc9bmVbMV0sVT1uZVsyXX1lbHNlIHRlPVYuZGF0YX12YXIgaWU9e3Jlc3VsdDp0ZSxsb2c6VyxldGFnOnEsc3RhdHVzOlYuc3RhdHVzfTtyZXR1cm4gVSYmKGllLnBy''@;'; put 'put ''aW50T3V0cHV0PVUpLGllfSxqfShJLlJlcXVlc3RDbGllbnQpO0IuU2FzanNSZXF1ZXN0Q2xpZW50PUV9LDQ3MDooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ2NjY6KEgsQik9PnsidXNlIHN0cmljdCI7T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw2MTc3OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNTc2NjooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ5NzU6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwyMTU6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pfSw0NzgyOihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDE2ODooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVl''@;'; put 'put ''OiEwfSl9LDg1MTY6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzMTUzOihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNTg0MToo''@;'; put 'put ''SCxCKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTCxKO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkxvZ2luTWVjaGFuaXNtPUIuU0FTanNDb25maWc9dm9pZCAwLEIuU0FTanNDb25maWc9ZnVuY3Rpb24oKXt0aGlzLnNlcnZlclVybD0iIix0aGlzLnBh''@;'; put 'put ''dGhTQVNKUz0iIix0aGlzLnBhdGhTQVM5PSIiLHRoaXMucGF0aFNBU1ZpeWE9IiIsdGhpcy5hcHBMb2M9IiIsdGhpcy5zZXJ2ZXJUeXBlPW51bGwsdGhpcy5kZWJ1Zz0hMCx0aGlzLmNvbnRleHROYW1lPSIiLHRoaXMudXNlQ29tcHV0ZUFwaT1udWxsLHRoaXMubG9naW5NZWNoYW5pc209TC5E''@;'; put 'put ''ZWZhdWx0LHRoaXMucmVxdWVzdEhpc3RvcnlMaW1pdD0xMH0sKEo9TD1CLkxvZ2luTWVjaGFuaXNtfHwoQi5Mb2dpbk1lY2hhbmlzbT17fSkpLkRlZmF1bHQ9IkRlZmF1bHQiLEouUmVkaXJlY3RlZD0iUmVkaXJlY3RlZCJ9LDI0OTM6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw2MDM4OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sOTQ5MzooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDg2NTA6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwxMjQ6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEwsSz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEw9''@;'; put 'put ''ZnVuY3Rpb24oSSxSKXtyZXR1cm4oTD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGogaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl''@;'; put 'put ''cnR5LmNhbGwoeixqKSYmKEVbal09eltqXSl9KShJLFIpfSxmdW5jdGlvbihJLFIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBSJiZudWxsIT09Uil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVs''@;'; put 'put ''bCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUl9TChJLFIpLEkucHJvdG90eXBlPW51bGw9PT1SP09iamVjdC5jcmVhdGUoUik6KEUucHJvdG90eXBlPVIucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxC''@;'; put 'put ''LkF1dGhvcml6ZUVycm9yPXZvaWQgMDt2YXIgSj1mdW5jdGlvbihJKXtmdW5jdGlvbiBSKEUseil7dmFyIGo9SS5jYWxsKHRoaXMsRSl8fHRoaXM7cmV0dXJuIGoubWVzc2FnZT1FLGouY29uZmlybVVybD16LGoubmFtZT0iQXV0aG9yaXplRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihq''@;'; put 'put ''LFIucHJvdG90eXBlKSxqfXJldHVybiBLKFIsSSksUn0oRXJyb3IpO0IuQXV0aG9yaXplRXJyb3I9Sn0sOTQ2NTpmdW5jdGlvbihILEIpeyJ1c2Ugc3RyaWN0Ijt2YXIgTCxLPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoTD1mdW5jdGlvbihJLFIpe3JldHVybihMPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgaiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LGopJiYoRVtqXT16W2pdKX0pKEksUil9LGZ1bmN0''@;'; put 'put ''aW9uKEksUil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFImJm51bGwhPT1SKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoUikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9SX1MKEks''@;'; put 'put ''UiksSS5wcm90b3R5cGU9bnVsbD09PVI/T2JqZWN0LmNyZWF0ZShSKTooRS5wcm90b3R5cGU9Ui5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuQ2VydGlmaWNhdGVFcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24o''@;'; put 'put ''SSl7ZnVuY3Rpb24gUihFKXt2YXIgej1JLmNhbGwodGhpcywiIi5jb25jYXQoRSwiXG5QbGVhc2UgdmlzaXQgdGhlIGxpbmsgYmVsb3cgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gdGhpcyBpc3N1ZTpcbi0gIikuY29uY2F0KCJodHRwczovL2dpdGh1Yi5jb20vc2FzanMvY2xpL2lzc3Vl''@;'; put 'put ''cy8xMTgxI2lzc3VlY29tbWVudC0xMDkwNjM4NTg0IiwiXG4iKSl8fHRoaXM7cmV0dXJuIHoubmFtZT0iQ2VydGlmaWNhdGVFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHosUi5wcm90b3R5cGUpLHp9cmV0dXJuIEsoUixJKSxSfShFcnJvcik7Qi5DZXJ0aWZpY2F0ZUVycm9yPUp9LDUy''@;'; put 'put ''Njc6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEwsSz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEw9ZnVuY3Rpb24oSSxSKXtyZXR1cm4oTD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9f''@;'; put 'put ''Xz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGogaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixqKSYmKEVbal09eltqXSl9KShJLFIpfSxmdW5jdGlvbihJLFIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBSJiZudWxsIT09Uil0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUl9TChJLFIpLEkucHJvdG90eXBlPW51bGw9PT1SP09iamVjdC5jcmVhdGUoUik6KEUucHJvdG90eXBlPVIucHJvdG90''@;'; put 'put ''eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUihFLHope3ZhciBqPUkuY2FsbCh0aGlzLCJFcnJvcjogSm9iIGV4ZWN1''@;'; put 'put ''dGlvbiBmYWlsZWQiKXx8dGhpcztyZXR1cm4gai5qb2I9RSxqLmxvZz16LGoubmFtZT0iQ29tcHV0ZUpvYkV4ZWN1dGlvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoaixSLnByb3RvdHlwZSksan1yZXR1cm4gSyhSLEkpLFJ9KEVycm9yKTtCLkNvbXB1dGVKb2JFeGVjdXRpb25FcnJv''@;'; put 'put ''cj1KfSw5MjMyOihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkVycm9yUmVzcG9uc2U9dm9pZCAwLEIuRXJyb3JSZXNwb25zZT1mdW5jdGlvbihLLEosSSl7dmFyIFI9SjtpZigib2JqZWN0IiE9dHlwZW9mIEop''@;'; put 'put ''dHJ5e1I9SlNPTi5wYXJzZShKKX1jYXRjaHtJPUosUj0iIn10aGlzLmVycm9yPXttZXNzYWdlOkssZGV0YWlsczpSLHJhdzpJfX19LDUxMDk6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEwsSz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEw9ZnVuY3Rpb24oSSxSKXtyZXR1cm4oTD1P''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGogaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixqKSYmKEVbal09eltq''@;'; put 'put ''XSl9KShJLFIpfSxmdW5jdGlvbihJLFIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBSJiZudWxsIT09Uil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNv''@;'; put 'put ''bnN0cnVjdG9yPUl9TChJLFIpLEkucHJvdG90eXBlPW51bGw9PT1SP09iamVjdC5jcmVhdGUoUik6KEUucHJvdG90eXBlPVIucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkludGVybmFsU2VydmVyRXJyb3I9dm9p''@;'; put 'put ''ZCAwO3ZhciBKPWZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFIoKXt2YXIgRT1JLmNhbGwodGhpcywiRXJyb3I6IEludGVybmFsIHNlcnZlciBlcnJvci4iKXx8dGhpcztyZXR1cm4gRS5uYW1lPSJJbnRlcm5hbFNlcnZlckVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoRSxSLnByb3RvdHlwZSks''@;'; put 'put ''RX1yZXR1cm4gSyhSLEkpLFJ9KEVycm9yKTtCLkludGVybmFsU2VydmVyRXJyb3I9Sn0sNTUxODpmdW5jdGlvbihILEIpeyJ1c2Ugc3RyaWN0Ijt2YXIgTCxLPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoTD1mdW5jdGlvbihJLFIpe3JldHVybihMPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19f''@;'; put 'put ''cHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgaiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LGopJiYoRVtqXT16W2pdKX0pKEksUil9LGZ1bmN0aW9uKEksUil7''@;'; put 'put ''aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFImJm51bGwhPT1SKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoUikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9SX1MKEksUiksSS5wcm90''@;'; put 'put ''b3R5cGU9bnVsbD09PVI/T2JqZWN0LmNyZWF0ZShSKTooRS5wcm90b3R5cGU9Ui5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuSW52YWxpZEpzb25FcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rp''@;'; put 'put ''b24gUigpe3ZhciBFPUkuY2FsbCh0aGlzLCJFcnJvcjogaW52YWxpZCBKc29uIHN0cmluZyIpfHx0aGlzO3JldHVybiBFLm5hbWU9IkludmFsaWRKc29uRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihFLFIucHJvdG90eXBlKSxFfXJldHVybiBLKFIsSSksUn0oRXJyb3IpO0IuSW52YWxp''@;'; put 'put ''ZEpzb25FcnJvcj1KfSwxMDA1OmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMLEs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChMPWZ1bmN0aW9uKEksUil7cmV0dXJuKEw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9u''@;'; put 'put ''KEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBqIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosaikmJihFW2pdPXpbal0pfSkoSSxSKX0sZnVuY3Rpb24oSSxSKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUiYmbnVsbCE9PVIpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhSKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1JfUwoSSxSKSxJLnByb3RvdHlwZT1udWxsPT09Uj9PYmplY3QuY3JlYXRlKFIpOihFLnBy''@;'; put 'put ''b3RvdHlwZT1SLnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5JbnZhbGlkU0FTanNDc3JmRXJyb3I9dm9pZCAwO3ZhciBKPWZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFIoKXt2YXIgRT10aGlzO3JldHVybihFPUkuY2Fs''@;'; put 'put ''bCh0aGlzLCJBdXRoIGVycm9yOiAiLmNvbmNhdCgiSW52YWxpZCBDU1JGIHRva2VuISIpKXx8dGhpcykubmFtZT0iSW52YWxpZFNBU2pzQ3NyZkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoRSxSLnByb3RvdHlwZSksRX1yZXR1cm4gSyhSLEkpLFJ9KEVycm9yKTtCLkludmFsaWRTQVNq''@;'; put 'put ''c0NzcmZFcnJvcj1KfSw4NTMxOmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMLEs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChMPWZ1bmN0aW9uKEksUil7cmV0dXJuKEw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9u''@;'; put 'put ''KEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBqIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosaikmJihFW2pdPXpbal0pfSkoSSxSKX0sZnVuY3Rpb24oSSxSKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUiYmbnVsbCE9PVIpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhSKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1JfUwoSSxSKSxJLnByb3RvdHlwZT1udWxsPT09Uj9PYmplY3QuY3JlYXRlKFIpOihFLnBy''@;'; put 'put ''b3RvdHlwZT1SLnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5Kb2JFeGVjdXRpb25FcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUihFLHosail7dmFyIFY9SS5jYWxsKHRoaXMsIkVycm9y''@;'; put 'put ''IENvZGUgIi5jb25jYXQoRSwiOiAiKS5jb25jYXQoeikpfHx0aGlzO3JldHVybiBWLmVycm9yQ29kZT1FLFYuZXJyb3JNZXNzYWdlPXosVi5yZXN1bHQ9aixWLm5hbWU9IkpvYkV4ZWN1dGlvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoVixSLnByb3RvdHlwZSksVn1yZXR1cm4gSyhS''@;'; put 'put ''LEkpLFJ9KEVycm9yKTtCLkpvYkV4ZWN1dGlvbkVycm9yPUp9LDkwNzk6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEwsSz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEw9ZnVuY3Rpb24oSSxSKXtyZXR1cm4oTD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5z''@;'; put 'put ''dGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGogaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixqKSYmKEVbal09eltqXSl9KShJLFIpfSxmdW5jdGlvbihJLFIpe2lmKCJmdW5jdGlvbiIh''@;'; put 'put ''PXR5cGVvZiBSJiZudWxsIT09Uil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUl9TChJLFIpLEkucHJvdG90eXBlPW51bGw9PT1S''@;'; put 'put ''P09iamVjdC5jcmVhdGUoUik6KEUucHJvdG90eXBlPVIucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLkpvYlN0YXRlUG9sbEVycm9yPXZvaWQgMDt2YXIgSj1mdW5jdGlvbihJKXtmdW5jdGlvbiBSKEUseil7dmFy''@;'; put 'put ''IGo9SS5jYWxsKHRoaXMsIkVycm9yIHdoaWxlIHBvbGxpbmcgam9iIHN0YXRlIGZvciBqb2IgIi5jb25jYXQoRSwiOiAiKS5jb25jYXQoei5tZXNzYWdlfHx6KSl8fHRoaXM7cmV0dXJuIGoub3JpZ2luYWxFcnJvcj16LGoubmFtZT0iSm9iU3RhdGVQb2xsRXJyb3IiLE9iamVjdC5zZXRQcm90''@;'; put 'put ''b3R5cGVPZihqLFIucHJvdG90eXBlKSxqfXJldHVybiBLKFIsSSksUn0oRXJyb3IpO0IuSm9iU3RhdGVQb2xsRXJyb3I9Sn0sMzA5NjpmdW5jdGlvbihILEIpeyJ1c2Ugc3RyaWN0Ijt2YXIgTCxLPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoTD1mdW5jdGlvbihJLFIpe3JldHVybihMPU9iamVj''@;'; put 'put ''dC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgaiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LGopJiYoRVtqXT16W2pdKX0p''@;'; put 'put ''KEksUil9LGZ1bmN0aW9uKEksUil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFImJm51bGwhPT1SKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoUikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3Ry''@;'; put 'put ''dWN0b3I9SX1MKEksUiksSS5wcm90b3R5cGU9bnVsbD09PVI/T2JqZWN0LmNyZWF0ZShSKTooRS5wcm90b3R5cGU9Ui5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuSnNvblBhcnNlQXJyYXlFcnJvcj12b2lkIDA7''@;'; put 'put ''dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUigpe3ZhciBFPUkuY2FsbCh0aGlzLCJDYW4gbm90IHBhcnNlIGFycmF5IG9iamVjdCB0byBqc29uLiIpfHx0aGlzO3JldHVybiBFLm5hbWU9Ikpzb25QYXJzZUFycmF5RXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihFLFIucHJvdG90eXBl''@;'; put 'put ''KSxFfXJldHVybiBLKFIsSSksUn0oRXJyb3IpO0IuSnNvblBhcnNlQXJyYXlFcnJvcj1KfSw2NzQzOmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMLEs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChMPWZ1bmN0aW9uKEksUil7cmV0dXJuKEw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7''@;'; put 'put ''X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBqIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosaikmJihFW2pdPXpbal0pfSkoSSxSKX0sZnVuY3Rpb24oSSxS''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUiYmbnVsbCE9PVIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhSKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1JfUwoSSxSKSxJLnBy''@;'; put 'put ''b3RvdHlwZT1udWxsPT09Uj9PYmplY3QuY3JlYXRlKFIpOihFLnByb3RvdHlwZT1SLnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5Mb2dpblJlcXVpcmVkRXJyb3I9dm9pZCAwO3ZhciBKPWZ1bmN0aW9uKEkpe2Z1''@;'; put 'put ''bmN0aW9uIFIoRSl7dmFyIHo9dGhpcyxqPUU/SlNPTi5zdHJpbmdpZnkoRSxudWxsLDIpOiJZb3UgbXVzdCBiZSBsb2dnZWQgaW4gdG8gYWNjZXNzIHRoaXMgcmVzb3VyY2UiO3JldHVybih6PUkuY2FsbCh0aGlzLCJBdXRoIGVycm9yOiAiLmNvbmNhdChqKSl8fHRoaXMpLm5hbWU9IkxvZ2lu''@;'; put 'put ''UmVxdWlyZWRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHosUi5wcm90b3R5cGUpLHp9cmV0dXJuIEsoUixJKSxSfShFcnJvcik7Qi5Mb2dpblJlcXVpcmVkRXJyb3I9Sn0sNzg2NDpmdW5jdGlvbihILEIpeyJ1c2Ugc3RyaWN0Ijt2YXIgTCxLPXRoaXMmJnRoaXMuX19leHRlbmRzfHwo''@;'; put 'put ''TD1mdW5jdGlvbihJLFIpe3JldHVybihMPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgaiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv''@;'; put 'put ''cGVydHkuY2FsbCh6LGopJiYoRVtqXT16W2pdKX0pKEksUil9LGZ1bmN0aW9uKEksUil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFImJm51bGwhPT1SKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoUikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBu''@;'; put 'put ''dWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9SX1MKEksUiksSS5wcm90b3R5cGU9bnVsbD09PVI/T2JqZWN0LmNyZWF0ZShSKTooRS5wcm90b3R5cGU9Ui5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p''@;'; put 'put ''LEIuTm9TZXNzaW9uU3RhdGVFcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUihFLHosail7dmFyIFY9SS5jYWxsKHRoaXMsIkNvdWxkIG5vdCBnZXQgc2Vzc2lvbiBzdGF0ZS4gU2VydmVyIHJlc3BvbmRlZCB3aXRoICIuY29uY2F0KEUsIiB3aGlsc3QgY2hlY2tpbmcg''@;'; put 'put ''c3RhdGU6ICIpLmNvbmNhdCh6KSl8fHRoaXM7cmV0dXJuIFYuc2VydmVyUmVzcG9uc2VTdGF0dXM9RSxWLnNlc3Npb25TdGF0ZVVybD16LFYubG9nVXJsPWosVi5uYW1lPSJOb1Nlc3Npb25TdGF0dXMiLE9iamVjdC5zZXRQcm90b3R5cGVPZihWLFIucHJvdG90eXBlKSxWfXJldHVybiBLKFIs''@;'; put 'put ''SSksUn0oRXJyb3IpO0IuTm9TZXNzaW9uU3RhdGVFcnJvcj1KfSw5NTc3OmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMLEs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChMPWZ1bmN0aW9uKEksUil7cmV0dXJuKEw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWlu''@;'; put 'put ''c3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBqIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosaikmJihFW2pdPXpbal0pfSkoSSxSKX0sZnVuY3Rpb24oSSxSKXtpZigiZnVuY3Rpb24i''@;'; put 'put ''IT10eXBlb2YgUiYmbnVsbCE9PVIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhSKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1JfUwoSSxSKSxJLnByb3RvdHlwZT1udWxsPT09''@;'; put 'put ''Uj9PYmplY3QuY3JlYXRlKFIpOihFLnByb3RvdHlwZT1SLnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5Ob3RGb3VuZEVycm9yPXZvaWQgMDt2YXIgSj1mdW5jdGlvbihJKXtmdW5jdGlvbiBSKEUpe3ZhciB6PUku''@;'; put 'put ''Y2FsbCh0aGlzLCJFcnJvcjogUmVzb3VyY2UgYXQgIi5jb25jYXQoRSwiIHdhcyBub3QgZm91bmQiKSl8fHRoaXM7cmV0dXJuIHoudXJsPUUsei5uYW1lPSJOb3RGb3VuZEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoeixSLnByb3RvdHlwZSksen1yZXR1cm4gSyhSLEkpLFJ9KEVycm9y''@;'; put 'put ''KTtCLk5vdEZvdW5kRXJyb3I9Sn0sOTI3OTpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLLEo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChLPWZ1bmN0aW9uKEUseil7cmV0dXJuKEs9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkm''@;'; put 'put ''JmZ1bmN0aW9uKGosVil7ai5fX3Byb3RvX189Vn18fGZ1bmN0aW9uKGosVil7Zm9yKHZhciBHIGluIFYpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFYsRykmJihqW0ddPVZbR10pfSkoRSx6KX0sZnVuY3Rpb24oRSx6KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgeiYmbnVs''@;'; put 'put ''bCE9PXopdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyh6KSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBqKCl7dGhpcy5jb25zdHJ1Y3Rvcj1FfUsoRSx6KSxFLnByb3RvdHlwZT1udWxsPT09ej9PYmplY3QuY3JlYXRl''@;'; put 'put ''KHopOihqLnByb3RvdHlwZT16LnByb3RvdHlwZSxuZXcgail9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5Sb290Rm9sZGVyTm90Rm91bmRFcnJvcj12b2lkIDA7dmFyIEk9TCg2Nzk5KSxSPWZ1bmN0aW9uKEUpe2Z1bmN0aW9uIHooaixWLEcp''@;'; put 'put ''e3ZhciBXPXRoaXMsVT0iUm9vdCBmb2xkZXIgIi5jb25jYXQoaiwiIHdhcyBub3QgZm91bmQuIikrIlxuUGxlYXNlIGNoZWNrICIuY29uY2F0KFYsIi9TQVNEcml2ZS4iKSsiXG5JZiB0aGUgZm9sZGVyIERPRVMgZXhpc3QgdGhlbiBpdCBpcyBsaWtlbHkgYSBwZXJtaXNzaW9uIHByb2JsZW0u''@;'; put 'put ''XG4iO2lmKEcpe3ZhciBxPSgwLEkuZGVjb2RlVG9rZW4pKEcpLnNjb3BlO1UrPSJZb3VyIGFjY2VzcyB0b2tlbiBjb250YWlucyB0aGUgZm9sbG93aW5nIHNjb3BlczpcbiIrKHE9cS5tYXAoZnVuY3Rpb24odGUpe3JldHVybiIqICIrdGV9KSkuam9pbigiXG4iKX1yZXR1cm4oVz1FLmNhbGwo''@;'; put 'put ''dGhpcyxVKXx8dGhpcykubmFtZT0iUm9vdEZvbGRlck5vdEZvdW5kRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihXLHoucHJvdG90eXBlKSxXfXJldHVybiBKKHosRSksen0oRXJyb3IpO0IuUm9vdEZvbGRlck5vdEZvdW5kRXJyb3I9Un0sOTUyNjpmdW5jdGlvbihILEIpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgTCxLPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoTD1mdW5jdGlvbihJLFIpe3JldHVybihMPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2''@;'; put 'put ''YXIgaiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LGopJiYoRVtqXT16W2pdKX0pKEksUil9LGZ1bmN0aW9uKEksUil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFImJm51bGwhPT1SKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitT''@;'; put 'put ''dHJpbmcoUikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9SX1MKEksUiksSS5wcm90b3R5cGU9bnVsbD09PVI/T2JqZWN0LmNyZWF0ZShSKTooRS5wcm90b3R5cGU9Ui5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU0FTOUF1dGhFcnJvcj12b2lkIDA7dmFyIEo9ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUigpe3ZhciBFPUkuY2FsbCh0aGlzLCJUaGUgY3JlZGVudGlhbHMgeW91IHByb3ZpZGVkIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkLiBQ''@;'; put 'put ''bGVhc2UgcHJvdmlkZSBhIHZhbGlkIHNldCBvZiBjcmVkZW50aWFscy4iKXx8dGhpcztyZXR1cm4gRS5uYW1lPSJBdXRob3JpemVFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKEUsUi5wcm90b3R5cGUpLEV9cmV0dXJuIEsoUixJKSxSfShFcnJvcik7Qi5TQVM5QXV0aEVycm9yPUp9LDg4''@;'; put 'put ''NzU6ZnVuY3Rpb24oSCxCKXsidXNlIHN0cmljdCI7dmFyIEwsSz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEw9ZnVuY3Rpb24oSSxSKXtyZXR1cm4oTD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9f''@;'; put 'put ''Xz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGogaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixqKSYmKEVbal09eltqXSl9KShJLFIpfSxmdW5jdGlvbihJLFIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBSJiZudWxsIT09Uil0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUl9TChJLFIpLEkucHJvdG90eXBlPW51bGw9PT1SP09iamVjdC5jcmVhdGUoUik6KEUucHJvdG90eXBlPVIucHJvdG90''@;'; put 'put ''eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLldlYm91dFJlc3BvbnNlRXJyb3I9dm9pZCAwO3ZhciBKPWZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFIoRSl7dmFyIHo9SS5jYWxsKHRoaXMsIkVycm9yOiBlcnJvciB3aGlsZSBwYXJz''@;'; put 'put ''aW5nIHJlc3BvbnNlIGZyb20gIi5jb25jYXQoRSkpfHx0aGlzO3JldHVybiB6LnVybD1FLHoubmFtZT0iV2Vib3V0UmVzcG9uc2VFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHosUi5wcm90b3R5cGUpLHp9cmV0dXJuIEsoUixJKSxSfShFcnJvcik7Qi5XZWJvdXRSZXNwb25zZUVycm9y''@;'; put 'put ''PUp9LDEzOTU6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2YXIgSz10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oSSxSLEUseil7dm9pZCAwPT09eiYmKHo9RSk7dmFyIGo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSLEUp''@;'; put 'put ''O2omJiEoImdldCJpbiBqPyFSLl9fZXNNb2R1bGU6ai53cml0YWJsZXx8ai5jb25maWd1cmFibGUpfHwoaj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUltFXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSSx6LGopfTpmdW5jdGlvbihJLFIsRSx6KXt2b2lkIDA9PT16''@;'; put 'put ''JiYoej1FKSxJW3pdPVJbRV19KSxKPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihJLFIpe2Zvcih2YXIgRSBpbiBJKSJkZWZhdWx0Ij09PUV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSLEUpfHxLKFIsSSxFKX07T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEooTCgxMjQpLEIpLEooTCg5NDY1KSxCKSxKKEwoNTI2NyksQiksSihMKDkyMzIpLEIpLEooTCg1MTA5KSxCKSxKKEwoNTUxOCksQiksSihMKDg1MzEpLEIpLEooTCg5MDc5KSxCKSxKKEwoMzA5NiksQiksSihMKDY3NDMpLEIpLEooTCg3ODY0''@;'; put 'put ''KSxCKSxKKEwoOTU3NyksQiksSihMKDkyNzkpLEIpLEooTCg4ODc1KSxCKX0sMTIzMDpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihJLFIsRSx6KXt2b2lkIDA9PT16JiYoej1FKTt2''@;'; put 'put ''YXIgaj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFIsRSk7aiYmISgiZ2V0ImluIGo/IVIuX19lc01vZHVsZTpqLndyaXRhYmxlfHxqLmNvbmZpZ3VyYWJsZSl8fChqPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBSW0VdfX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShJLHosail9OmZ1bmN0aW9uKEksUixFLHope3ZvaWQgMD09PXomJih6PUUpLElbel09UltFXX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEksUil7Zm9yKHZhciBFIGluIEkpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j''@;'; put 'put ''YWxsKFIsRSl8fEsoUixJLEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksSihMKDQ3MCksQiksSihMKDQ2NjYpLEIpLEooTCg0OTc1KSxCKSxKKEwoNTc2NiksQiksSihMKDIxNSksQiksSihMKDQ3ODIpLEIpLEooTCg0MTY4KSxCKSxKKEwoODUx''@;'; put 'put ''NiksQiksSihMKDU4NDEpLEIpLEooTCgyNDkzKSxCKSxKKEwoNjAzOCksQiksSihMKDk0OTMpLEIpLEooTCgzMTUzKSxCKSxKKEwoODY1MCksQiksSihMKDYxNzcpLEIpfSwzMzAyOmZ1bmN0aW9uKEgsQil7InVzZSBzdHJpY3QiO3ZhciBMPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIEw9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oSSl7Zm9yKHZhciBSLEU9MSx6PWFyZ3VtZW50cy5sZW5ndGg7RTx6O0UrKylmb3IodmFyIGogaW4gUj1hcmd1bWVudHNbRV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFIsaikmJihJW2pdPVJbal0pO3Jl''@;'; put 'put ''dHVybiBJfSxMLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sSz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oSSxSLEUseil7cmV0dXJuIG5ldyhFfHwoRT1Qcm9taXNlKSkoZnVuY3Rpb24oaixWKXtmdW5jdGlvbiBHKHEpe3RyeXtVKHoubmV4dChxKSl9Y2F0Y2godGUpe1YodGUpfX1m''@;'; put 'put ''dW5jdGlvbiBXKHEpe3RyeXtVKHoudGhyb3cocSkpfWNhdGNoKHRlKXtWKHRlKX19ZnVuY3Rpb24gVShxKXt2YXIgdGU7cS5kb25lP2oocS52YWx1ZSk6KHRlPXEudmFsdWUsdGUgaW5zdGFuY2VvZiBFP3RlOm5ldyBFKGZ1bmN0aW9uKG5lKXtuZSh0ZSl9KSkudGhlbihHLFcpfVUoKHo9ei5h''@;'; put 'put ''cHBseShJLFJ8fFtdKSkubmV4dCgpKX0pfSxKPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEksUil7dmFyIEUseixqLFYsRz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZqWzBdKXRocm93IGpbMV07cmV0dXJuIGpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVj17''@;'; put 'put ''bmV4dDpXKDApLHRocm93OlcoMSkscmV0dXJuOlcoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihWW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFY7ZnVuY3Rpb24gVyhVKXtyZXR1cm4gZnVuY3Rpb24ocSl7cmV0dXJuIGZ1bmN0aW9uKHRlKXtpZihF''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO0c7KXRyeXtpZihFPTEseiYmKGo9MiZ0ZVswXT96LnJldHVybjp0ZVswXT96LnRocm93fHwoKGo9ei5yZXR1cm4pJiZqLmNhbGwoeiksMCk6ei5uZXh0KSYmIShqPWouY2FsbCh6LHRl''@;'; put 'put ''WzFdKSkuZG9uZSlyZXR1cm4gajtzd2l0Y2goej0wLGomJih0ZT1bMiZ0ZVswXSxqLnZhbHVlXSksdGVbMF0pe2Nhc2UgMDpjYXNlIDE6aj10ZTticmVhaztjYXNlIDQ6cmV0dXJuIEcubGFiZWwrKyx7dmFsdWU6dGVbMV0sZG9uZTohMX07Y2FzZSA1OkcubGFiZWwrKyx6PXRlWzFdLHRlPVsw''@;'; put 'put ''XTtjb250aW51ZTtjYXNlIDc6dGU9Ry5vcHMucG9wKCksRy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoaj0oaj1HLnRyeXMpLmxlbmd0aD4wJiZqW2oubGVuZ3RoLTFdKXx8NiE9PXRlWzBdJiYyIT09dGVbMF0pKXtHPTA7Y29udGludWV9aWYoMz09PXRlWzBdJiYoIWp8fHRl''@;'; put 'put ''WzFdPmpbMF0mJnRlWzFdPGpbM10pKXtHLmxhYmVsPXRlWzFdO2JyZWFrfWlmKDY9PT10ZVswXSYmRy5sYWJlbDxqWzFdKXtHLmxhYmVsPWpbMV0saj10ZTticmVha31pZihqJiZHLmxhYmVsPGpbMl0pe0cubGFiZWw9alsyXSxHLm9wcy5wdXNoKHRlKTticmVha31qWzJdJiZHLm9wcy5wb3Ao''@;'; put 'put ''KSxHLnRyeXMucG9wKCk7Y29udGludWV9dGU9Ui5jYWxsKEksRyl9Y2F0Y2gobmUpe3RlPVs2LG5lXSx6PTB9ZmluYWxseXtFPWo9MH1pZig1JnRlWzBdKXRocm93IHRlWzFdO3JldHVybnt2YWx1ZTp0ZVswXT90ZVsxXTp2b2lkIDAsZG9uZTohMH19KFtVLHFdKX19fTtPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcz12b2lkIDAsQi5hcHBlbmRFeHRyYVJlc3BvbnNlQXR0cmlidXRlcz1mdW5jdGlvbihJLFIpe3JldHVybiBLKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBF''@;'; put 'put ''LHo7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihqKXtyZXR1cm4gRT17fSxSPy5sZW5ndGg/KHo9Ui5yZWR1Y2UoZnVuY3Rpb24oVixHKXtyZXR1cm4gVltHXT1JW0ddLFZ9LHt9KSxFPUwoe3Jlc3VsdDpJLnJlc3VsdH0seikpOkU9SS5yZXN1bHQsWzIsRV19KX0pfX0sNzkyMjpmdW5jdGlvbihI''@;'; put 'put ''LEIpeyJ1c2Ugc3RyaWN0Ijt2YXIgTD10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oSixJLFIsRSl7cmV0dXJuIG5ldyhSfHwoUj1Qcm9taXNlKSkoZnVuY3Rpb24oeixqKXtmdW5jdGlvbiBWKFUpe3RyeXtXKEUubmV4dChVKSl9Y2F0Y2gocSl7aihxKX19ZnVuY3Rpb24gRyhVKXt0''@;'; put 'put ''cnl7VyhFLnRocm93KFUpKX1jYXRjaChxKXtqKHEpfX1mdW5jdGlvbiBXKFUpe3ZhciBxO1UuZG9uZT96KFUudmFsdWUpOihxPVUudmFsdWUscSBpbnN0YW5jZW9mIFI/cTpuZXcgUihmdW5jdGlvbih0ZSl7dGUocSl9KSkudGhlbihWLEcpfVcoKEU9RS5hcHBseShKLEl8fFtdKSkubmV4dCgp''@;'; put 'put ''KX0pfSxLPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEosSSl7dmFyIFIsRSx6LGosVj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ6WzBdKXRocm93IHpbMV07cmV0dXJuIHpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gaj17bmV4dDpHKDApLHRocm93OkcoMSks''@;'; put 'put ''cmV0dXJuOkcoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihqW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGo7ZnVuY3Rpb24gRyhXKXtyZXR1cm4gZnVuY3Rpb24oVSl7cmV0dXJuIGZ1bmN0aW9uKHEpe2lmKFIpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''R2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7VjspdHJ5e2lmKFI9MSxFJiYoej0yJnFbMF0/RS5yZXR1cm46cVswXT9FLnRocm93fHwoKHo9RS5yZXR1cm4pJiZ6LmNhbGwoRSksMCk6RS5uZXh0KSYmISh6PXouY2FsbChFLHFbMV0pKS5kb25lKXJldHVybiB6O3N3aXRj''@;'; put 'put ''aChFPTAseiYmKHE9WzImcVswXSx6LnZhbHVlXSkscVswXSl7Y2FzZSAwOmNhc2UgMTp6PXE7YnJlYWs7Y2FzZSA0OnJldHVybiBWLmxhYmVsKysse3ZhbHVlOnFbMV0sZG9uZTohMX07Y2FzZSA1OlYubGFiZWwrKyxFPXFbMV0scT1bMF07Y29udGludWU7Y2FzZSA3OnE9Vi5vcHMucG9wKCks''@;'; put 'put ''Vi50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoej0oej1WLnRyeXMpLmxlbmd0aD4wJiZ6W3oubGVuZ3RoLTFdKXx8NiE9PXFbMF0mJjIhPT1xWzBdKSl7Vj0wO2NvbnRpbnVlfWlmKDM9PT1xWzBdJiYoIXp8fHFbMV0+elswXSYmcVsxXTx6WzNdKSl7Vi5sYWJlbD1xWzFdO2Jy''@;'; put 'put ''ZWFrfWlmKDY9PT1xWzBdJiZWLmxhYmVsPHpbMV0pe1YubGFiZWw9elsxXSx6PXE7YnJlYWt9aWYoeiYmVi5sYWJlbDx6WzJdKXtWLmxhYmVsPXpbMl0sVi5vcHMucHVzaChxKTticmVha316WzJdJiZWLm9wcy5wb3AoKSxWLnRyeXMucG9wKCk7Y29udGludWV9cT1JLmNhbGwoSixWKX1jYXRj''@;'; put 'put ''aCh0ZSl7cT1bNix0ZV0sRT0wfWZpbmFsbHl7Uj16PTB9aWYoNSZxWzBdKXRocm93IHFbMV07cmV0dXJue3ZhbHVlOnFbMF0/cVsxXTp2b2lkIDAsZG9uZTohMH19KFtXLFVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5hc3luY0ZvckVh''@;'; put 'put ''Y2g9dm9pZCAwLEIuYXN5bmNGb3JFYWNoPWZ1bmN0aW9uKEosSSl7cmV0dXJuIEwodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFI7cmV0dXJuIEsodGhpcyxmdW5jdGlvbihFKXtzd2l0Y2goRS5sYWJlbCl7Y2FzZSAwOlI9MCxFLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBSPEou''@;'; put 'put ''bGVuZ3RoP1s0LEkoSltSXSxSLEopXTpbMyw0XTtjYXNlIDI6RS5zZW50KCksRS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gUisrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX19LDM3OTM6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUi''@;'; put 'put ''LHt2YWx1ZTohMH0pLEIuY29tcGFyZVRpbWVzdGFtcHM9dm9pZCAwLEIuY29tcGFyZVRpbWVzdGFtcHM9ZnVuY3Rpb24oTCxLKXtyZXR1cm4gSy50aW1lc3RhbXAuZ2V0VGltZSgpLUwudGltZXN0YW1wLmdldFRpbWUoKX19LDM1NTM6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuU0FTSlNfTE9HU19TRVBBUkFUT1I9dm9pZCAwLEIuU0FTSlNfTE9HU19TRVBBUkFUT1I9IlNBU0pTX0xPR1NfU0VQQVJBVE9SXzE2M2VlMTdiNmZmMjRmMDI4OTI4OTcyZDgwYTI2Nzg0In0sMjQwMjooSCxCLEwpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBLPUwoNTEwOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuaXNGb3JtYXRzVGFibGU9Qi5jb252ZXJ0VG9DU1Y9dm9pZCAwO3ZhciBKPUwoNjQ2NyksST1MKDk3NzgpO0IuY29udmVydFRvQ1NWPWZ1bmN0aW9uKEUseil7''@;'; put 'put ''dmFyIGo7aWYoIUVbel0pdGhyb3coMCxJLnByZWZpeE1lc3NhZ2UpKCJObyB0YWJsZSBwcm92aWRlZCB0byBiZSBjb252ZXJ0ZWQgdG8gQ1NWLiIsIkVycm9yIHdoaWxlIGNvbnZlcnRpbmcgdG8gQ1NWLiAiKTt2YXIgVj1FW3pdO2lmKCFBcnJheS5pc0FycmF5KFYpKXJldHVybiIiO3ZhciBH''@;'; put 'put ''LFc9bnVsbD09PShqPUVbIiQiLmNvbmNhdCh6KV0pfHx2b2lkIDA9PT1qP3ZvaWQgMDpqLmZvcm1hdHMsVT1bXSxxPSExO1cmJihVPU9iamVjdC5rZXlzKFcpLm1hcChmdW5jdGlvbihuZSl7cmV0dXJuIiIuY29uY2F0KG5lLCI6IikuY29uY2F0KFdbbmVdKX0pKTt2YXIgdGU9T2JqZWN0Lmtl''@;'; put 'put ''eXMoVlswXSk7cmV0dXJuIHRlLmZvckVhY2goZnVuY3Rpb24obmUpe2lmKCFXfHwhT2JqZWN0LmtleXMoVykuaW5jbHVkZXMobmUpKXt2YXIgaWU9ITEsbGU9ITE7aWYoVi5mb3JFYWNoKGZ1bmN0aW9uKGIpe251bGw9PT1iW25lXXx8Im51bWJlciI9PXR5cGVvZiBiW25lXT9pZT0hMDoic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIGJbbmVdJiYoMCxKLmlzU3BlY2lhbE1pc3NpbmcpKGJbbmVdKSYmKGxlPSEwKX0pLGllJiZsZSlVLnB1c2goIiIuY29uY2F0KG5lLCI6YmVzdC4iKSksV3x8KFc9e30pLFdbbmVdPSJiZXN0LiI7ZWxzZXt2YXIgZGU9bnVsbCx1ZT0hMSxjZT0tMSxZPVYubWFwKGZ1bmN0''@;'; put 'put ''aW9uKGIseCl7aWYoYltuZV18fCIiPT09YltuZV0pe2RlP3VlfHwoY2U9KHVlPSgiIj09PWJbbmVdfHwic3RyaW5nIj09dHlwZW9mIGJbbmVdPyJjaGFycyI6Im51bWJlciIpIT09ZGUpP3grMTotMSk6ZGU9IiI9PT1iW25lXXx8InN0cmluZyI9PXR5cGVvZiBiW25lXT8iY2hhcnMiOiJudW1i''@;'; put 'put ''ZXIiO3ZhciBGPXZvaWQgMDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGJbbmVdJiYoRj1SKGJbbmVdKSksRn19KS5zb3J0KGZ1bmN0aW9uKGIseCl7cmV0dXJuIHgtYn0pWzBdO1kmJlk+MzI3NjUmJihxPSEwKSx1ZSYmSy5lcnJvcigiUm93ICgiLmNvbmNhdChjZSwiKSwgQ29sdW1uICgiKS5j''@;'; put 'put ''b25jYXQobmUsIikgaGFzIG1peGVkIHR5cGVzOiBFUlJPUiIpKSxVLnB1c2goIiIuY29uY2F0KG5lLCI6IikuY29uY2F0KCJjaGFycyI9PT1kZT8iJGNoYXIiOiIiKS5jb25jYXQoWXx8KCJjaGFycyI9PT1kZT8iMSI6ImJlc3QiKSwiLiIpKX19fSksVyYmKFU9VS5zb3J0KGZ1bmN0aW9uKG5l''@;'; put 'put ''LGllKXtyZXR1cm4gdGUuaW5kZXhPZihuZS5yZXBsYWNlKC86LiovLCIiKSktdGUuaW5kZXhPZihpZS5yZXBsYWNlKC86LiovLCIiKSl9KSkscT8iRVJST1I6IExBUkdFIFNUUklORyBMRU5HVEgiOihHPVYubWFwKGZ1bmN0aW9uKG5lKXtyZXR1cm4gT2JqZWN0LmtleXMobmUpLm1hcChmdW5j''@;'; put 'put ''dGlvbihpZSxsZSl7dmFyIGRlLHVlPW5lW2llXTtpZigibnVtYmVyIj09dHlwZW9mIHVlKXJldHVybiB1ZTtpZihkZT1udWxsPT09dWU/IiI6dWUsVyYmImJlc3QuIj09PVdbaWVdKXtpZihkZSYmISgwLEouaXNTcGVjaWFsTWlzc2luZykoZGUpKXRocm93IG5ldyBFcnJvcigiQSBTcGVjaWFs''@;'; put 'put ''IG1pc3NpbmcgdmFsdWUgY2FuIG9ubHkgYmUgYSBzaW5nbGUgY2hhcmFjdGVyIGZyb20gJ0EnIHRvICdaJywgJ18nLCAnLlthLXpdJywgJy5fJyIpO3ZhciBjZT1kZS5pbmNsdWRlcygiLiIpPyIiOiIuIjtyZXR1cm4iIi5jb25jYXQoY2UpLmNvbmNhdChkZS50b0xvd2VyQ2FzZSgpKX1yZXR1''@;'; put 'put ''cm4gZGU9ZGUucmVwbGFjZSgvIi9nLCciIicpLChkZT0nIicuY29uY2F0KGRlLCciJykpLnN1YnN0cmluZygxLGRlLmxlbmd0aC0xKS5zZWFyY2goLyhcdHxcbnxccnwsfFwnfFwiKS9nbSk8MCYmKGRlPWRlLnN1YnN0cmluZygxLGRlLmxlbmd0aC0xKSksIiI9PT0oZGU9ZGUucmVwbGFjZSgv''@;'; put 'put ''XHJcbi9nbSwiXG4iKSkmJlVbbGVdLmluY2x1ZGVzKCJiZXN0IikmJihkZT0iLiIpLGRlfSkuam9pbigiLCIpfSksVS5qb2luKCIsIikucmVwbGFjZSgvLC9nLCIgIikrIlxyXG4iK0cuam9pbigiXHJcbiIpKX0sQi5pc0Zvcm1hdHNUYWJsZT1mdW5jdGlvbihFKXtyZXR1cm4vXlwkLiovLnRl''@;'; put 'put ''c3QoRSl9O3ZhciBSPWZ1bmN0aW9uKEUpe2Zvcih2YXIgej1FLmxlbmd0aCxqPUUubGVuZ3RoLTE7aj49MDtqLS0pe3ZhciBWPUUuY2hhckNvZGVBdChqKTtWPjEyNyYmVjw9MjA0Nz96Kys6Vj4yMDQ3JiZWPD02NTUzNSYmKHorPTIpLFY+PTU2MzIwJiZWPD01NzM0MyYmai0tfXJldHVybiB6''@;'; put 'put ''fX0sNjExNjooSCxCLEwpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmNyZWF0ZUF4aW9zSW5zdGFuY2U9dm9pZCAwO3ZhciBLPUwoOTY2OSk7Qi5jcmVhdGVBeGlvc0luc3RhbmNlPWZ1bmN0aW9uKEosSSl7cmV0dXJu''@;'; put 'put ''IEsuZGVmYXVsdC5jcmVhdGUoe2Jhc2VVUkw6SixodHRwc0FnZW50Okl9KX19LDk4MjU6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZGVsYXk9dm9pZCAwLEIuZGVsYXk9ZnVuY3Rpb24oTCl7cmV0dXJuIG5l''@;'; put 'put ''dyBQcm9taXNlKGZ1bmN0aW9uKEspe3JldHVybiBzZXRUaW1lb3V0KEssTCl9KX19LDk5MDpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPUwoNDE1NSksSj1MKDUxMDgpLEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHosaixWLEcpe3JldHVybiBuZXcoVnx8KFY9''@;'; put 'put ''UHJvbWlzZSkpKGZ1bmN0aW9uKFcsVSl7ZnVuY3Rpb24gcShpZSl7dHJ5e25lKEcubmV4dChpZSkpfWNhdGNoKGxlKXtVKGxlKX19ZnVuY3Rpb24gdGUoaWUpe3RyeXtuZShHLnRocm93KGllKSl9Y2F0Y2gobGUpe1UobGUpfX1mdW5jdGlvbiBuZShpZSl7dmFyIGxlO2llLmRvbmU/VyhpZS52''@;'; put 'put ''YWx1ZSk6KGxlPWllLnZhbHVlLGxlIGluc3RhbmNlb2YgVj9sZTpuZXcgVihmdW5jdGlvbihkZSl7ZGUobGUpfSkpLnRoZW4ocSx0ZSl9bmUoKEc9Ry5hcHBseSh6LGp8fFtdKSkubmV4dCgpKX0pfSxSPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHosail7dmFyIFYsRyxXLFUs''@;'; put 'put ''cT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZXWzBdKXRocm93IFdbMV07cmV0dXJuIFdbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVT17bmV4dDp0ZSgwKSx0aHJvdzp0ZSgxKSxyZXR1cm46dGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihVW1N5bWJvbC5pdGVy''@;'; put 'put ''YXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFU7ZnVuY3Rpb24gdGUobmUpe3JldHVybiBmdW5jdGlvbihpZSl7cmV0dXJuIGZ1bmN0aW9uKGxlKXtpZihWKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3E7KXRyeXtpZihW''@;'; put 'put ''PTEsRyYmKFc9MiZsZVswXT9HLnJldHVybjpsZVswXT9HLnRocm93fHwoKFc9Ry5yZXR1cm4pJiZXLmNhbGwoRyksMCk6Ry5uZXh0KSYmIShXPVcuY2FsbChHLGxlWzFdKSkuZG9uZSlyZXR1cm4gVztzd2l0Y2goRz0wLFcmJihsZT1bMiZsZVswXSxXLnZhbHVlXSksbGVbMF0pe2Nhc2UgMDpj''@;'; put 'put ''YXNlIDE6Vz1sZTticmVhaztjYXNlIDQ6cmV0dXJuIHEubGFiZWwrKyx7dmFsdWU6bGVbMV0sZG9uZTohMX07Y2FzZSA1OnEubGFiZWwrKyxHPWxlWzFdLGxlPVswXTtjb250aW51ZTtjYXNlIDc6bGU9cS5vcHMucG9wKCkscS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVz0o''@;'; put 'put ''Vz1xLnRyeXMpLmxlbmd0aD4wJiZXW1cubGVuZ3RoLTFdKXx8NiE9PWxlWzBdJiYyIT09bGVbMF0pKXtxPTA7Y29udGludWV9aWYoMz09PWxlWzBdJiYoIVd8fGxlWzFdPldbMF0mJmxlWzFdPFdbM10pKXtxLmxhYmVsPWxlWzFdO2JyZWFrfWlmKDY9PT1sZVswXSYmcS5sYWJlbDxXWzFdKXtx''@;'; put 'put ''LmxhYmVsPVdbMV0sVz1sZTticmVha31pZihXJiZxLmxhYmVsPFdbMl0pe3EubGFiZWw9V1syXSxxLm9wcy5wdXNoKGxlKTticmVha31XWzJdJiZxLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWV9bGU9ai5jYWxsKHoscSl9Y2F0Y2goZGUpe2xlPVs2LGRlXSxHPTB9ZmluYWxseXtW''@;'; put 'put ''PVc9MH1pZig1JmxlWzBdKXRocm93IGxlWzFdO3JldHVybnt2YWx1ZTpsZVswXT9sZVsxXTp2b2lkIDAsZG9uZTohMH19KFtuZSxpZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmZldGNoTG9nPUIuZmV0Y2hMb2dCeUNodW5rcz12b2lk''@;'; put 'put ''IDA7dmFyIEU9TCg5Nzc4KTtCLmZldGNoTG9nQnlDaHVua3M9ZnVuY3Rpb24oeixqLFYsRyl7cmV0dXJuIEkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzLGZ1bmN0aW9uKFcpe3N3aXRjaChXLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsKDAsQi5mZXRjaExv''@;'; put 'put ''ZykoeixqLFYsMCxHKV07Y2FzZSAxOnJldHVyblsyLFcuc2VudCgpXX19KX0pfSxCLmZldGNoTG9nPWZ1bmN0aW9uKHosaixWLEcsVyl7cmV0dXJuIEkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVSxxLHRlLG5lLGllO3JldHVybiBSKHRoaXMsZnVuY3Rpb24obGUpe3N3''@;'; put 'put ''aXRjaChsZS5sYWJlbCl7Y2FzZSAwOlU9Sy5sb2dnZXJ8fEoscT0iIix0ZT1XPDFlND9XOjFlNCxsZS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gVS5pbmZvKCJGZXRjaGluZyBsb2dzIGZyb20gbGluZSBubzogIi5jb25jYXQoRysxLCIgdG8gIikuY29uY2F0KEcrdGUsIiBvZiAiKS5jb25jYXQo''@;'; put 'put ''VywiLiIpKSxbNCx6LmdldCgiIi5jb25jYXQoViwiP3N0YXJ0PSIpLmNvbmNhdChHLCImbGltaXQ9IikuY29uY2F0KHRlKSxqKS50aGVuKGZ1bmN0aW9uKGRlKXtyZXR1cm4gZGUucmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24oZGUpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShkZSwiRXJyb3Ig''@;'; put 'put ''d2hpbGUgZ2V0dGluZyBsb2cuICIpfSldO2Nhc2UgMjppZigwPT09KG5lPWxlLnNlbnQoKSkuaXRlbXMubGVuZ3RoKXJldHVyblszLDRdO2llPW5lLml0ZW1zLm1hcChmdW5jdGlvbihkZSl7cmV0dXJuIGRlLmxpbmV9KS5qb2luKCJcbiIpLHErPWllLEcrPXRlLGxlLmxhYmVsPTM7Y2FzZSAz''@;'; put 'put ''OmlmKEc8VylyZXR1cm5bMywxXTtsZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMixxXX19KX0pfX0sNzE0OihILEIsTCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZm9ybWF0RGF0YUZvclJlcXVlc3Q9dm9pZCAwO3Zh''@;'; put 'put ''ciBLPUwoMjQwMiksSj1MKDQ3OTkpO0IuZm9ybWF0RGF0YUZvclJlcXVlc3Q9ZnVuY3Rpb24oSSl7dmFyIFI9W10sRT0wLHo9e307Zm9yKHZhciBqIGluIEkpaWYoISgwLEsuaXNGb3JtYXRzVGFibGUpKGopfHwhT2JqZWN0LmtleXMoSSkuaW5jbHVkZXMoai5yZXBsYWNlKC9eXCQvLCIiKSkp''@;'; put 'put ''e0UrKywoMCxLLmlzRm9ybWF0c1RhYmxlKShqKXx8Ui5wdXNoKGopO3ZhciBWPSgwLEsuY29udmVydFRvQ1NWKShJLGopO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT1WKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGggb2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMg''@;'; put 'put ''aXMgMzI3NjUgY2hhcmFjdGVycy4iKTtpZihWLmxlbmd0aD4xNmUzKXt2YXIgRz0oMCxKLnNwbGl0Q2h1bmtzKShWKTt6WyJzYXNqcyIuY29uY2F0KEUsImRhdGEwIildPUcubGVuZ3RoLEcuZm9yRWFjaChmdW5jdGlvbihXLFUpe3pbInNhc2pzIi5jb25jYXQoRSwiZGF0YSIpLmNvbmNhdChV''@;'; put 'put ''KzEpXT1XfSl9ZWxzZSB6WyJzYXNqcyIuY29uY2F0KEUsImRhdGEiKV09Vn1yZXR1cm4gei5zYXNqc190YWJsZXM9Ui5qb2luKCIgIiksen19LDE4ODQ6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5nZXRW''@;'; put 'put ''YWxpZEpzb249dm9pZCAwO3ZhciBLPUwoMTM5NSk7Qi5nZXRWYWxpZEpzb249ZnVuY3Rpb24oSil7dHJ5e2lmKG51bGw9PUopdGhyb3cgbmV3IEsuSW52YWxpZEpzb25FcnJvcjtpZihBcnJheS5pc0FycmF5KEopKXRocm93IG5ldyBLLkpzb25QYXJzZUFycmF5RXJyb3I7cmV0dXJuIm9iamVj''@;'; put 'put ''dCI9PXR5cGVvZiBKP0o6IiI9PT1KP3t9OkpTT04ucGFyc2UoSil9Y2F0Y2goSSl7dGhyb3cgSSBpbnN0YW5jZW9mIEsuSnNvblBhcnNlQXJyYXlFcnJvcj9JOm5ldyBLLkludmFsaWRKc29uRXJyb3J9fX0sNTkyODpmdW5jdGlvbihILEIsTCl7InVzZSBzdHJpY3QiO3ZhciBLPXRoaXMmJnRo''@;'; put 'put ''aXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihJLFIsRSx6KXt2b2lkIDA9PT16JiYoej1FKTt2YXIgaj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFIsRSk7aiYmISgiZ2V0ImluIGo/IVIuX19lc01vZHVsZTpqLndyaXRhYmxlfHxqLmNvbmZpZ3Vy''@;'; put 'put ''YWJsZSl8fChqPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBSW0VdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLHosail9OmZ1bmN0aW9uKEksUixFLHope3ZvaWQgMD09PXomJih6PUUpLElbel09UltFXX0pLEo9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0''@;'; put 'put ''aW9uKEksUil7Zm9yKHZhciBFIGluIEkpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFIsRSl8fEsoUixJLEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksSihMKDMzMDIpLEIpLEooTCg3OTIyKSxC''@;'; put 'put ''KSxKKEwoMzc5MyksQiksSihMKDI0MDIpLEIpLEooTCgzNTUzKSxCKSxKKEwoNjExNiksQiksSihMKDk4MjUpLEIpLEooTCg5OTApLEIpLEooTCgxODg0KSxCKSxKKEwoNDI0MyksQiksSihMKDI1NyksQiksSihMKDIpLEIpLEooTCgyNjE1KSxCKSxKKEwoMjkyMCksQiksSihMKDI0MjIpLEIp''@;'; put 'put ''LEooTCgzMSksQiksSihMKDY1MTUpLEIpLEooTCg2NDE2KSxCKSxKKEwoMjgxMyksQiksSihMKDk4OTYpLEIpLEooTCg0Nzk5KSxCKSxKKEwoNDUxNiksQil9LDQyNDM6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQxNTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9k''@;'; put 'put ''dWxlIix7dmFsdWU6ITB9KSxCLmlzTm9kZT12b2lkIDAsQi5pc05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09SyYmbnVsbCE9Sy52ZXJzaW9ucyYmbnVsbCE9Sy52ZXJzaW9ucy5ub2RlfX0sMjU3OihILEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJf''@;'; put 'put ''X2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLmlzUmVsYXRpdmVQYXRoPXZvaWQgMCxCLmlzUmVsYXRpdmVQYXRoPWZ1bmN0aW9uKEwpe3JldHVybiEhTCYmIUwuc3RhcnRzV2l0aCgiLyIpfX0sMjooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVs''@;'; put 'put ''ZSIse3ZhbHVlOiEwfSksQi5pc1VyaT12b2lkIDAsQi5pc1VyaT1mdW5jdGlvbihMKXtyZXR1cm4vXlwvZm9sZGVyc1wvZm9sZGVyc1wvLy50ZXN0KEwpfX0sMjYxNTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks''@;'; put 'put ''Qi5pc1VybD12b2lkIDAsQi5pc1VybD1mdW5jdGlvbihMKXt0cnl7dmFyIEs9bmV3IFVSTChMKTtpZighWyJodHRwOiIsImh0dHBzOiJdLmluY2x1ZGVzKEsucHJvdG9jb2wpKXJldHVybiExfWNhdGNoe3JldHVybiExfXJldHVybiEwfX0sMTIxMDpmdW5jdGlvbihILEIpeyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgTCxqLEs9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGosVixHLFcpe3JldHVybiBuZXcoR3x8KEc9UHJvbWlzZSkpKGZ1bmN0aW9uKFUscSl7ZnVuY3Rpb24gdGUobGUpe3RyeXtpZShXLm5leHQobGUpKX1jYXRjaChkZSl7cShkZSl9fWZ1bmN0aW9uIG5lKGxlKXt0cnl7''@;'; put 'put ''aWUoVy50aHJvdyhsZSkpfWNhdGNoKGRlKXtxKGRlKX19ZnVuY3Rpb24gaWUobGUpe3ZhciBkZTtsZS5kb25lP1UobGUudmFsdWUpOihkZT1sZS52YWx1ZSxkZSBpbnN0YW5jZW9mIEc/ZGU6bmV3IEcoZnVuY3Rpb24odWUpe3VlKGRlKX0pKS50aGVuKHRlLG5lKX1pZSgoVz1XLmFwcGx5KGos''@;'; put 'put ''Vnx8W10pKS5uZXh0KCkpfSl9LEo9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oaixWKXt2YXIgRyxXLFUscSx0ZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZVWzBdKXRocm93IFVbMV07cmV0dXJuIFVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gcT17bmV4dDpu''@;'; put 'put ''ZSgwKSx0aHJvdzpuZSgxKSxyZXR1cm46bmUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihxW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHE7ZnVuY3Rpb24gbmUoaWUpe3JldHVybiBmdW5jdGlvbihsZSl7cmV0dXJuIGZ1bmN0aW9uKGRlKXtpZihH''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3RlOyl0cnl7aWYoRz0xLFcmJihVPTImZGVbMF0/Vy5yZXR1cm46ZGVbMF0/Vy50aHJvd3x8KChVPVcucmV0dXJuKSYmVS5jYWxsKFcpLDApOlcubmV4dCkmJiEoVT1VLmNhbGwoVyxk''@;'; put 'put ''ZVsxXSkpLmRvbmUpcmV0dXJuIFU7c3dpdGNoKFc9MCxVJiYoZGU9WzImZGVbMF0sVS52YWx1ZV0pLGRlWzBdKXtjYXNlIDA6Y2FzZSAxOlU9ZGU7YnJlYWs7Y2FzZSA0OnJldHVybiB0ZS5sYWJlbCsrLHt2YWx1ZTpkZVsxXSxkb25lOiExfTtjYXNlIDU6dGUubGFiZWwrKyxXPWRlWzFdLGRl''@;'; put 'put ''PVswXTtjb250aW51ZTtjYXNlIDc6ZGU9dGUub3BzLnBvcCgpLHRlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChVPShVPXRlLnRyeXMpLmxlbmd0aD4wJiZVW1UubGVuZ3RoLTFdKXx8NiE9PWRlWzBdJiYyIT09ZGVbMF0pKXt0ZT0wO2NvbnRpbnVlfWlmKDM9PT1kZVswXSYm''@;'; put 'put ''KCFVfHxkZVsxXT5VWzBdJiZkZVsxXTxVWzNdKSl7dGUubGFiZWw9ZGVbMV07YnJlYWt9aWYoNj09PWRlWzBdJiZ0ZS5sYWJlbDxVWzFdKXt0ZS5sYWJlbD1VWzFdLFU9ZGU7YnJlYWt9aWYoVSYmdGUubGFiZWw8VVsyXSl7dGUubGFiZWw9VVsyXSx0ZS5vcHMucHVzaChkZSk7YnJlYWt9VVsy''@;'; put 'put ''XSYmdGUub3BzLnBvcCgpLHRlLnRyeXMucG9wKCk7Y29udGludWV9ZGU9Vi5jYWxsKGosdGUpfWNhdGNoKHVlKXtkZT1bNix1ZV0sVz0wfWZpbmFsbHl7Rz1VPTB9aWYoNSZkZVswXSl0aHJvdyBkZVsxXTtyZXR1cm57dmFsdWU6ZGVbMF0/ZGVbMV06dm9pZCAwLGRvbmU6ITB9fShbaWUsbGVd''@;'; put 'put ''KX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5vcGVuTG9naW5Qcm9tcHQ9dm9pZCAwLChqPUx8fChMPXt9KSkuc3R5bGVzPSJzYXNqc0FkYXB0ZXJTdHlsZXMiLGoub3ZlcmxheT0ic2FzanNBZGFwdGVyTG9naW5Qcm9tcHRCRyIsai5kaWFs''@;'; put 'put ''b2c9InNhc2pzQWRhcHRlckxvZ2luUHJvbXB0Ijt2YXIgST0ic2FzanMtYWRhcHRlciIsUj17cG9wVXA6IiIuY29uY2F0KEksInBvcFVwIikscG9wVXBCRzoiIi5jb25jYXQoSSwicG9wVXBCRyIpfTtCLm9wZW5Mb2dpblByb21wdD1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5j''@;'; put 'put ''dGlvbihqKXtyZXR1cm4gSyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBWLEcsVyxVLHEsdGUsbmUsaWU7cmV0dXJuIEoodGhpcyxmdW5jdGlvbihsZSl7cmV0dXJuKFY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSkuaWQ9TC5zdHlsZXMsVi5pbm5lclRleHQ9''@;'; put 'put ''eiwoRz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaWQ9TC5vdmVybGF5LEcuY2xhc3NMaXN0LmFkZChSLnBvcFVwQkcpLChXPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pZD1MLmRpYWxvZyxXLmNsYXNzTGlzdC5hZGQoUi5wb3BVcCksKFU9ZG9jdW1lbnQuY3JlYXRl''@;'; put 'put ''RWxlbWVudCgiaDEiKSkuaW5uZXJUZXh0PSJTZXNzaW9uIEV4cGlyZWQhIixXLmFwcGVuZENoaWxkKFUpLHE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksKHRlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuaW5uZXJUZXh0PSJZb3UgbmVlZCB0byByZWxvZ2luLCBjbGlj''@;'; put 'put ''ayBPSyB0byBsb2dpbi4iLHEuYXBwZW5kQ2hpbGQodGUpLFcuYXBwZW5kQ2hpbGQocSksKG5lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKS5jbGFzc0xpc3QuYWRkKCJjYW5jZWwiKSxuZS5pbm5lclRleHQ9IkNhbmNlbCIsbmUub25jbGljaz1mdW5jdGlvbigpe0UoKSxqKCEx''@;'; put 'put ''KX0sVy5hcHBlbmRDaGlsZChuZSksKGllPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKS5jbGFzc0xpc3QuYWRkKCJjb25maXJtIiksaWUuaW5uZXJUZXh0PSJPayIsaWUub25jbGljaz1mdW5jdGlvbigpe0UoKSxqKCEwKX0sVy5hcHBlbmRDaGlsZChpZSksZG9jdW1lbnQuYm9k''@;'; put 'put ''eS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFYpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoRyksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChXKSxbMl19KX0pfSl9O3ZhciBFPWZ1bmN0aW9uKCl7T2JqZWN0LnZhbHVlcyhMKS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKGope3ZhciBWLEc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaik7bnVsbD09PShWPUc/LnBhcmVudE5vZGUpfHx2b2lkIDA9PT1WfHxWLnJlbW92ZUNoaWxkKEcpfSksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iYXV0byJ9LHo9IlxuLiIuY29uY2F0KFIucG9wVXBC''@;'; put 'put ''RywiICxcbi4iKS5jb25jYXQoUi5wb3BVcCwiIHtcbiAgei1pbmRleDogMTAwMDA7XG59XG4uIikuY29uY2F0KFIucG9wVXAsIiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXIt''@;'; put 'put ''Ym94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDQwJTtcbiAgbGVmdDogNTAlO1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtZmFtaWx5OiAnUFQgU2FucycsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjZmZmO1xuICBi''@;'; put 'put ''b3JkZXItc3R5bGU6IG5vbmU7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIG1h''@;'; put 'put ''eC1oZWlnaHQ6IDMwMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi4iKS5jb25jYXQoUi5wb3BVcCwiID4gaDEge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemlu''@;'; put 'put ''ZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNXB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEuMmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJl''@;'; put 'put ''bnQ7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XG4gIGJvcmRlci1jb2xvcjogYmxhY2s7XG59XG4uIikuY29uY2F0KFIucG9wVXAsIiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtMTA4cHgpO1xuICBtYXJnaW46IDA7''@;'; put 'put ''XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXdp''@;'; put 'put ''ZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2NjYztcbiAgYm9yZGVyLXN0eWxlOiBub25lIG5vbmUgc29saWQgbm9uZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uIikuY29uY2F0KFIucG9wVXAsIiA+IGRpdiA+IHNwYW4ge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBib3gtc2l6''@;'; put 'put ''aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTA4cHg7XG4gIHZlcnRpY2FsLWFsaWdu''@;'; put 'put ''OiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cbi4iKS5jb25jYXQoUi5wb3BVcCwiIC5jYW5jZWwge1xuICBmbG9hdDogbGVmdDtcbn1cbi4iKS5jb25jYXQoUi5wb3BVcCwiIC5jb25maXJtIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLiIpLmNvbmNhdChSLnBvcFVwLCIgPiBi''@;'; put 'put ''dXR0b24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4O1xuICB3aWR0aDogNTAlO1xuICBib3JkZXI6IDFweCBu''@;'; put 'put ''b25lICNjY2M7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMSwgMSwgMSwgMC4yKTtcbn1cbi4iKS5jb25jYXQoUi5wb3BVcCwiID4gYnV0dG9uOmhvdmVyIHtc''@;'; put 'put ''biAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLiIpLmNvbmNhdChSLnBvcFVwQkcsIiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFy''@;'; put 'put ''Z2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvcGFjaXR5OiAwLjk1O1xuICB6LWluZGV4OiA1MDtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KCMwMzc4Y2QsICMwMTIwMzYpO1xufVxuIil9LDI5MjA6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIubmVlZHNSZXRyeT12b2lkIDAsQi5uZWVkc1JldHJ5PWZ1bmN0aW9uKEwpe3JldHVybiEhTCYmKEwuaW5jbHVkZXMoJyJlcnJvckNvZGUiOjQwMycpJiZMLmluY2x1ZGVzKCJfY3NyZiIpJiZMLmluY2x1ZGVzKCJYLUNTUkYtVE9LRU4i''@;'; put 'put ''KXx8TC5pbmNsdWRlcygnInN0YXR1cyI6NDAzJykmJkwuaW5jbHVkZXMoJyJlcnJvciI6IkZvcmJpZGRlbiInKXx8TC5pbmNsdWRlcygnInN0YXR1cyI6NDQ5JykmJkwuaW5jbHVkZXMoIkF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3MsIHJldHJ5IG9yaWdpbmFsIHJlcXVlc3QiKSl9fSwyNDIyOihI''@;'; put 'put ''LEIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCLnBhcnNlR2VuZXJhdGVkQ29kZT12b2lkIDAsQi5wYXJzZUdlbmVyYXRlZENvZGU9ZnVuY3Rpb24oTCl7cmV0dXJuIEwuc3BsaXQoIlxuIikuZmlsdGVyKGZ1bmN0aW9u''@;'; put 'put ''KEspe3JldHVybiBLLnRyaW0oKS5zdGFydHNXaXRoKCJNUFJJTlQiKX0pLmpvaW4oIlxyXG4iKX19LDMxOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg1MTA4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5wYXJzZVNhc1ZpeWFMb2c9''@;'; put 'put ''dm9pZCAwLEIucGFyc2VTYXNWaXlhTG9nPWZ1bmN0aW9uKEope3ZhciBJO3RyeXtJPUouaXRlbXM/Si5pdGVtcy5tYXAoZnVuY3Rpb24oUil7cmV0dXJuIFIubGluZX0pLmpvaW4oIlxuIik6SlNPTi5zdHJpbmdpZnkoSil9Y2F0Y2goUil7Sy5lcnJvcigiQW4gZXJyb3IgaGFzIG9jY3VycmVk''@;'; put 'put ''IHdoaWxlIHBhcnNpbmcgdGhlIGxvZyByZXNwb25zZSIsUiksST1KfXJldHVybiBJfX0sNjUxNTooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5wYXJzZVNvdXJjZUNvZGU9dm9pZCAwLEIucGFyc2VTb3VyY2VD''@;'; put 'put ''b2RlPWZ1bmN0aW9uKEwpe3JldHVybiBMLnNwbGl0KCJcbiIpLmZpbHRlcihmdW5jdGlvbihLKXtyZXR1cm4gSy50cmltKCkuc3Vic3RyaW5nKDAsMTApLnRyaW1TdGFydCgpLm1hdGNoKC9eXGQvKX0pLmpvaW4oIlxyXG4iKX19LDY0MTY6ZnVuY3Rpb24oSCxCLEwpeyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgSz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oUixFLHosail7cmV0dXJuIG5ldyh6fHwoej1Qcm9taXNlKSkoZnVuY3Rpb24oVixHKXtmdW5jdGlvbiBXKHRlKXt0cnl7cShqLm5leHQodGUpKX1jYXRjaChuZSl7RyhuZSl9fWZ1bmN0aW9uIFUodGUpe3RyeXtxKGoudGhyb3co''@;'; put 'put ''dGUpKX1jYXRjaChuZSl7RyhuZSl9fWZ1bmN0aW9uIHEodGUpe3ZhciBuZTt0ZS5kb25lP1YodGUudmFsdWUpOihuZT10ZS52YWx1ZSxuZSBpbnN0YW5jZW9mIHo/bmU6bmV3IHooZnVuY3Rpb24oaWUpe2llKG5lKX0pKS50aGVuKFcsVSl9cSgoaj1qLmFwcGx5KFIsRXx8W10pKS5uZXh0KCkp''@;'; put 'put ''fSl9LEo9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oUixFKXt2YXIgeixqLFYsRyxXPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJlZbMF0pdGhyb3cgVlsxXTtyZXR1cm4gVlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBHPXtuZXh0OlUoMCksdGhyb3c6VSgxKSxy''@;'; put 'put ''ZXR1cm46VSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksRztmdW5jdGlvbiBVKHEpe3JldHVybiBmdW5jdGlvbih0ZSl7cmV0dXJuIGZ1bmN0aW9uKG5lKXtpZih6KXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1c7KXRyeXtpZih6PTEsaiYmKFY9MiZuZVswXT9qLnJldHVybjpuZVswXT9qLnRocm93fHwoKFY9ai5yZXR1cm4pJiZWLmNhbGwoaiksMCk6ai5uZXh0KSYmIShWPVYuY2FsbChqLG5lWzFdKSkuZG9uZSlyZXR1cm4gVjtz''@;'; put 'put ''d2l0Y2goaj0wLFYmJihuZT1bMiZuZVswXSxWLnZhbHVlXSksbmVbMF0pe2Nhc2UgMDpjYXNlIDE6Vj1uZTticmVhaztjYXNlIDQ6cmV0dXJuIFcubGFiZWwrKyx7dmFsdWU6bmVbMV0sZG9uZTohMX07Y2FzZSA1OlcubGFiZWwrKyxqPW5lWzFdLG5lPVswXTtjb250aW51ZTtjYXNlIDc6bmU9''@;'; put 'put ''Vy5vcHMucG9wKCksVy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoVj0oVj1XLnRyeXMpLmxlbmd0aD4wJiZWW1YubGVuZ3RoLTFdKXx8NiE9PW5lWzBdJiYyIT09bmVbMF0pKXtXPTA7Y29udGludWV9aWYoMz09PW5lWzBdJiYoIVZ8fG5lWzFdPlZbMF0mJm5lWzFdPFZbM10p''@;'; put 'put ''KXtXLmxhYmVsPW5lWzFdO2JyZWFrfWlmKDY9PT1uZVswXSYmVy5sYWJlbDxWWzFdKXtXLmxhYmVsPVZbMV0sVj1uZTticmVha31pZihWJiZXLmxhYmVsPFZbMl0pe1cubGFiZWw9VlsyXSxXLm9wcy5wdXNoKG5lKTticmVha31WWzJdJiZXLm9wcy5wb3AoKSxXLnRyeXMucG9wKCk7Y29udGlu''@;'; put 'put ''dWV9bmU9RS5jYWxsKFIsVyl9Y2F0Y2goaWUpe25lPVs2LGllXSxqPTB9ZmluYWxseXt6PVY9MH1pZig1Jm5lWzBdKXRocm93IG5lWzFdO3JldHVybnt2YWx1ZTpuZVswXT9uZVsxXTp2b2lkIDAsZG9uZTohMH19KFtxLHRlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1''@;'; put 'put ''bGUiLHt2YWx1ZTohMH0pLEIucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZT12b2lkIDA7dmFyIEk9TCg1OTI4KTtCLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2U9ZnVuY3Rpb24oUixFLHope3JldHVybiBLKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGosVjtyZXR1cm4g''@;'; put 'put ''Sih0aGlzLGZ1bmN0aW9uKEcpe2lmKGo9Ui5zcGxpdCgvPGlmcmFtZSBzdHlsZT0id2lkdGg6IDk5JTsgaGVpZ2h0OiA1MDBweCIgc3JjPSJ8PGlmcmFtZSBzdHlsZT0id2lkdGg6IDk5JTsgaGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZC1jb2xvcjpDYW52YXM7IiBzcmM9LylbMV0sIShWPWo/''@;'; put 'put ''ai5zcGxpdCgvIj48XC9pZnJhbWU+fD48XC9pZnJhbWU+LylbMF06bnVsbCkpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB3ZWJvdXQgZmlsZSBVUkwuIik7cmV0dXJuWzIsRS5nZXQoeitWLHZvaWQgMCwidGV4dC9wbGFpbiIpLnRoZW4oZnVuY3Rpb24oVyl7cmV0dXJuKDAsSS5n''@;'; put 'put ''ZXRWYWxpZEpzb24pKFcucmVzdWx0KX0pXX0pfSl9fSwyODEzOihILEIsTCk9PnsidXNlIHN0cmljdCI7dmFyIEs9TCg1MTA4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5wYXJzZVdlYm91dFJlc3BvbnNlPXZvaWQgMDt2YXIgSj1MKDEzOTUp''@;'; put 'put ''O0IucGFyc2VXZWJvdXRSZXNwb25zZT1mdW5jdGlvbihJLFIpe3ZhciBFPSIiO2lmKEkuaW5jbHVkZXMoIj4+d2Vib3V0QkVHSU48PCIpKXRyeXtFPUkuc3BsaXQoIj4+d2Vib3V0QkVHSU48PCIpWzFdLnNwbGl0KCI+PndlYm91dEVORDw8IilbMF19Y2F0Y2goeil7aWYoUil0aHJvdyBuZXcg''@;'; put 'put ''Si5XZWJvdXRSZXNwb25zZUVycm9yKFIpO0U9IiIsSy5lcnJvcih6KX1yZXR1cm4gRX19LDExNzA6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuZXh0cmFjdFVzZXJMb25nTmFtZVNhczk9dm9pZCAwO3ZhciBM''@;'; put 'put ''PVsiTG9nIE9mZiJdO0IuZXh0cmFjdFVzZXJMb25nTmFtZVNhczk9ZnVuY3Rpb24oSyl7dmFyIEo9Sz8ubWF0Y2goLyJ0aXRsZSI6XHM/Ii4qPyIvKSxJPUo/LlswXS5zcGxpdCgiOiIpWzFdLnRyaW0oKSxSPUk/LmluZGV4T2YoIiAiKTtyZXR1cm4gST8oTC5tYXAoZnVuY3Rpb24oRSl7dmFy''@;'; put 'put ''IHo9ST8uaW5kZXhPZihFKXx8LTE7ej4tMSYmKFI9eitFLmxlbmd0aCl9KSxJLnNsaWNlKFIsLTEpLnRyaW0oKSk6InVua25vd24ifX0sOTg5NjooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi5zZXJpYWxpemU9''@;'; put 'put ''dm9pZCAwLEIuc2VyaWFsaXplPWZ1bmN0aW9uKEwpe3ZhciBLPVtdO2Zvcih2YXIgSiBpbiBMKWlmKEwuaGFzT3duUHJvcGVydHkoSikpaWYoTFtKXWluc3RhbmNlb2YgQXJyYXkpZm9yKHZhciBJPTAsUj1MW0pdLmxlbmd0aDtJPFI7SSsrKUsucHVzaChlbmNvZGVVUklDb21wb25lbnQoSikr''@;'; put 'put ''Ij0iK2VuY29kZVVSSUNvbXBvbmVudChMW0pdW0ldKSk7ZWxzZSBLLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KEopKyI9IitlbmNvZGVVUklDb21wb25lbnQoTFtKXSkpO3JldHVybiBLLmpvaW4oIiYiKX19LDQ3OTk6KEgsQik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KEIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEIuc3BsaXRDaHVua3M9dm9pZCAwLEIuc3BsaXRDaHVua3M9ZnVuY3Rpb24oTCl7Zm9yKHZhciBLPTE2ZTMsSj1NYXRoLmNlaWwoTC5sZW5ndGgvSyksST1uZXcgQXJyYXkoSiksUj0wLEU9MDtSPEo7KytSLEUrPUspSVtSXT1MLnN1YnN0cihF''@;'; put 'put ''LEspO3JldHVybiBJfX0sNDUxNjooSCxCKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksQi52YWxpZGF0ZUlucHV0PUIuSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkU9Qi5NT1JFX0lORk89dm9pZCAwLEIuTU9SRV9JTkZPPSJG''@;'; put 'put ''b3IgbW9yZSBpbmZvIHNlZSBodHRwczovL3Nhc2pzLmlvL3Nhc2pzLWFkYXB0ZXIvI3JlcXVlc3QtcmVzcG9uc2UiLEIuSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkU9IlBhcmFtZXRlciBkYXRhIGNvbnRhaW5zIGludmFsaWQgdGFibGUgc3RydWN0dXJlLiAiLmNvbmNhdChCLk1PUkVfSU5GTyks''@;'; put 'put ''Qi52YWxpZGF0ZUlucHV0PWZ1bmN0aW9uKEspe2lmKG51bGw9PT1LKXJldHVybntzdGF0dXM6ITAsbXNnOiIifTtpZigib2JqZWN0IiE9PUwoSykpcmV0dXJue3N0YXR1czohMSxtc2c6Qi5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRX07dmFyIEo9ZnVuY3Rpb24oVyl7cmV0dXJuIFcubWF0Y2go''@;'; put 'put ''L15cJC4qLykmJk9iamVjdC5rZXlzKEspLmluY2x1ZGVzKFcucmVwbGFjZSgvXlwkLywiIikpfTtmb3IodmFyIEkgaW4gSyl7aWYoIUkubWF0Y2goL15bYS16QS1aX10vKSYmIUooSSkpcmV0dXJue3N0YXR1czohMSxtc2c6IkZpcnN0IGxldHRlciBvZiB0YWJsZSBzaG91bGQgYmUgYWxwaGFi''@;'; put 'put ''ZXQgb3IgdW5kZXJzY29yZS4ifTtpZighSS5tYXRjaCgvXlthLXpBLVpfXVthLXpBLVowLTlfXSokLykmJiFKKEkpKXJldHVybntzdGF0dXM6ITEsbXNnOiJUYWJsZSBuYW1lIHNob3VsZCBiZSBhbHBoYW51bWVyaWMuIn07aWYoSS5sZW5ndGg+MzIpcmV0dXJue3N0YXR1czohMSxtc2c6Ik1h''@;'; put 'put ''eGltdW0gbGVuZ3RoIGZvciB0YWJsZSBuYW1lIGNvdWxkIGJlIDMyIGNoYXJhY3RlcnMuIn07aWYoIkFycmF5IiE9PUwoS1tJXSkmJiFKKEkpKXJldHVybntzdGF0dXM6ITEsbXNnOkIuSU5WQUxJRF9UQUJMRV9TVFJVQ1RVUkV9O2Zvcih2YXIgUj0wLEU9S1tJXTtSPEUubGVuZ3RoO1IrKyl7''@;'; put 'put ''dmFyIHo9RVtSXTtpZigib2JqZWN0IiE9PUwoeikpcmV0dXJue3N0YXR1czohMSxtc2c6IlRhYmxlICIuY29uY2F0KEksIiBjb250YWlucyBpbnZhbGlkIHN0cnVjdHVyZS4gIikuY29uY2F0KEIuTU9SRV9JTkZPKX07Zm9yKHZhciBqPTAsVj1PYmplY3Qua2V5cyh6KTtqPFYubGVuZ3RoO2or''@;'; put 'put ''Kyl7dmFyIEc9VltqXTtpZih2b2lkIDA9PT16W0ddKXJldHVybntzdGF0dXM6ITEsbXNnOiJBIHJvdyBpbiB0YWJsZSAiLmNvbmNhdChJLCIgY29udGFpbnMgaW52YWxpZCB2YWx1ZS4gQ2FuJ3QgYXNzaWduIHVuZGVmaW5lZCB0byAiKS5jb25jYXQoRywiLiIpfX19fXJldHVybntzdGF0dXM6''@;'; put 'put ''ITAsbXNnOiIifX07dmFyIEw9ZnVuY3Rpb24oSyl7cmV0dXJuIEFycmF5LmlzQXJyYXkoSyk/IkFycmF5Ijp0eXBlb2YgS319LDg5ODE6KEgsQik9PnsidXNlIHN0cmljdCI7Qi5mcm9tQ2FsbGJhY2s9ZnVuY3Rpb24oTCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigu''@;'; put 'put ''Li5LKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgS1tLLmxlbmd0aC0xXSlyZXR1cm4gbmV3IFByb21pc2UoKEosSSk9PntMLmNhbGwodGhpcywuLi5LLChSLEUpPT5udWxsIT1SP0koUik6SihFKSl9KTtMLmFwcGx5KHRoaXMsSyl9LCJuYW1lIix7dmFsdWU6TC5uYW1lfSl9LEIuZnJvbVByb21p''@;'; put 'put ''c2U9ZnVuY3Rpb24oTCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiguLi5LKXtjb25zdCBKPUtbSy5sZW5ndGgtMV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEopcmV0dXJuIEwuYXBwbHkodGhpcyxLKTtMLmFwcGx5KHRoaXMsSy5zbGljZSgwLC0xKSkudGhlbihJPT5K''@;'; put 'put ''KG51bGwsSSksSil9LCJuYW1lIix7dmFsdWU6TC5uYW1lfSl9fSwyNTExOmZ1bmN0aW9uKEgsQixMKXt2YXIgSztIPUwubm1kKEgpLGZ1bmN0aW9uKEope3ZhciBSLEU9MjE0NzQ4MzY0Nyx6PTM2LFY9MjYsRz0zOCxXPTcwMCxuZT0vXnhuLS0vLGllPS9bXlx4MjAtXHg3RV0vLGxlPS9bXHgy''@;'; put 'put ''RVx1MzAwMlx1RkYwRVx1RkY2MV0vZyxkZT17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJ''@;'; put 'put ''bnZhbGlkIGlucHV0In0sdWU9ei0xLGNlPU1hdGguZmxvb3IsWT1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIGIoUyl7dGhyb3cgUmFuZ2VFcnJvcihkZVtTXSl9ZnVuY3Rpb24geChTLFEpe2Zvcih2YXIgcmU9Uy5sZW5ndGgsZmU9W107cmUtLTspZmVbcmVdPVEoU1tyZV0pO3JldHVy''@;'; put 'put ''biBmZX1mdW5jdGlvbiBOKFMsUSl7dmFyIHJlPVMuc3BsaXQoIkAiKSxmZT0iIjtyZXR1cm4gcmUubGVuZ3RoPjEmJihmZT1yZVswXSsiQCIsUz1yZVsxXSksZmUreCgoUz1TLnJlcGxhY2UobGUsIi4iKSkuc3BsaXQoIi4iKSxRKS5qb2luKCIuIil9ZnVuY3Rpb24gRihTKXtmb3IodmFyIFEs''@;'; put 'put ''cmUsZmU9W10sbWU9MCxrZT1TLmxlbmd0aDttZTxrZTspKFE9Uy5jaGFyQ29kZUF0KG1lKyspKT49NTUyOTYmJlE8PTU2MzE5JiZtZTxrZT81NjMyMD09KDY0NTEyJihyZT1TLmNoYXJDb2RlQXQobWUrKykpKT9mZS5wdXNoKCgoMTAyMyZRKTw8MTApKygxMDIzJnJlKSs2NTUzNik6KGZlLnB1''@;'; put 'put ''c2goUSksbWUtLSk6ZmUucHVzaChRKTtyZXR1cm4gZmV9ZnVuY3Rpb24gZyhTKXtyZXR1cm4geChTLGZ1bmN0aW9uKFEpe3ZhciByZT0iIjtyZXR1cm4gUT42NTUzNSYmKHJlKz1ZKChRLT02NTUzNik+Pj4xMCYxMDIzfDU1Mjk2KSxRPTU2MzIwfDEwMjMmUSkscmUrWShRKX0pLmpvaW4oIiIp''@;'; put 'put ''fWZ1bmN0aW9uIEMoUyxRKXtyZXR1cm4gUysyMis3NSooUzwyNiktKCgwIT1RKTw8NSl9ZnVuY3Rpb24gTShTLFEscmUpe3ZhciBmZT0wO2ZvcihTPXJlP2NlKFMvVyk6Uz4+MSxTKz1jZShTL1EpO1M+dWUqVj4+MTtmZSs9eilTPWNlKFMvdWUpO3JldHVybiBjZShmZSsodWUrMSkqUy8oUytH''@;'; put 'put ''KSl9ZnVuY3Rpb24geShTKXt2YXIgUSxyZSxmZSxtZSxrZSxUZSxQZSxGZSxOZSxMZSxCZSxIZT1bXSxRZT1TLmxlbmd0aCxtdD0wLEtlPTEyOCx3ZT03Mjtmb3IoKHJlPVMubGFzdEluZGV4T2YoIi0iKSk8MCYmKHJlPTApLGZlPTA7ZmU8cmU7KytmZSlTLmNoYXJDb2RlQXQoZmUpPj0xMjgm''@;'; put 'put ''JmIoIm5vdC1iYXNpYyIpLEhlLnB1c2goUy5jaGFyQ29kZUF0KGZlKSk7Zm9yKG1lPXJlPjA/cmUrMTowO21lPFFlOyl7Zm9yKGtlPW10LFRlPTEsUGU9ejttZT49UWUmJmIoImludmFsaWQtaW5wdXQiKSwoKEZlPShCZT1TLmNoYXJDb2RlQXQobWUrKykpLTQ4PDEwP0JlLTIyOkJlLTY1PDI2''@;'; put 'put ''P0JlLTY1OkJlLTk3PDI2P0JlLTk3OnopPj16fHxGZT5jZSgoRS1tdCkvVGUpKSYmYigib3ZlcmZsb3ciKSxtdCs9RmUqVGUsIShGZTwoTmU9UGU8PXdlPzE6UGU+PXdlK1Y/VjpQZS13ZSkpO1BlKz16KVRlPmNlKEUvKExlPXotTmUpKSYmYigib3ZlcmZsb3ciKSxUZSo9TGU7d2U9TShtdC1r''@;'; put 'put ''ZSxRPUhlLmxlbmd0aCsxLDA9PWtlKSxjZShtdC9RKT5FLUtlJiZiKCJvdmVyZmxvdyIpLEtlKz1jZShtdC9RKSxtdCU9USxIZS5zcGxpY2UobXQrKywwLEtlKX1yZXR1cm4gZyhIZSl9ZnVuY3Rpb24gcChTKXt2YXIgUSxyZSxmZSxtZSxrZSxUZSxQZSxGZSxOZSxMZSxCZSxIZSxRZSxtdCxL''@;'; put 'put ''ZSx3ZT1bXTtmb3IoSGU9KFM9RihTKSkubGVuZ3RoLFE9MTI4LHJlPTAsa2U9NzIsVGU9MDtUZTxIZTsrK1RlKShCZT1TW1RlXSk8MTI4JiZ3ZS5wdXNoKFkoQmUpKTtmb3IoZmU9bWU9d2UubGVuZ3RoLG1lJiZ3ZS5wdXNoKCItIik7ZmU8SGU7KXtmb3IoUGU9RSxUZT0wO1RlPEhlOysrVGUp''@;'; put 'put ''KEJlPVNbVGVdKT49USYmQmU8UGUmJihQZT1CZSk7Zm9yKFBlLVE+Y2UoKEUtcmUpLyhRZT1mZSsxKSkmJmIoIm92ZXJmbG93IikscmUrPShQZS1RKSpRZSxRPVBlLFRlPTA7VGU8SGU7KytUZSlpZigoQmU9U1tUZV0pPFEmJisrcmU+RSYmYigib3ZlcmZsb3ciKSxCZT09USl7Zm9yKEZlPXJl''@;'; put 'put ''LE5lPXo7IShGZTwoTGU9TmU8PWtlPzE6TmU+PWtlK1Y/VjpOZS1rZSkpO05lKz16KXdlLnB1c2goWShDKExlKyhLZT1GZS1MZSklKG10PXotTGUpLDApKSksRmU9Y2UoS2UvbXQpO3dlLnB1c2goWShDKEZlLDApKSksa2U9TShyZSxRZSxmZT09bWUpLHJlPTAsKytmZX0rK3JlLCsrUX1yZXR1''@;'; put 'put ''cm4gd2Uuam9pbigiIil9Uj17dmVyc2lvbjoiMS4zLjIiLHVjczI6e2RlY29kZTpGLGVuY29kZTpnfSxkZWNvZGU6eSxlbmNvZGU6cCx0b0FTQ0lJOmZ1bmN0aW9uKFMpe3JldHVybiBOKFMsZnVuY3Rpb24oUSl7cmV0dXJuIGllLnRlc3QoUSk/InhuLS0iK3AoUSk6UX0pfSx0b1VuaWNvZGU6''@;'; put 'put ''ZnVuY3Rpb24oUyl7cmV0dXJuIE4oUyxmdW5jdGlvbihRKXtyZXR1cm4gbmUudGVzdChRKT95KFEuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6UX0pfX0sdm9pZCAwPT09KEs9ZnVuY3Rpb24oKXtyZXR1cm4gUn0uY2FsbChCLEwsQixIKSl8fChILmV4cG9ydHM9Syl9KCl9LDg1NzU6KEgsQixM''@;'; put 'put ''KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDI1MTEpLEo9TCgyNTAyKTtmdW5jdGlvbiBJKCl7dGhpcy5wcm90b2NvbD1udWxsLHRoaXMuc2xhc2hlcz1udWxsLHRoaXMuYXV0aD1udWxsLHRoaXMuaG9zdD1udWxsLHRoaXMucG9ydD1udWxsLHRoaXMuaG9zdG5hbWU9bnVsbCx0aGlzLmhhc2g9''@;'; put 'put ''bnVsbCx0aGlzLnNlYXJjaD1udWxsLHRoaXMucXVlcnk9bnVsbCx0aGlzLnBhdGhuYW1lPW51bGwsdGhpcy5wYXRoPW51bGwsdGhpcy5ocmVmPW51bGx9Qi5RYz1kZTt2YXIgUj0vXihbYS16MC05ListXSs6KS9pLEU9LzpbMC05XSokLyx6PS9eKFwvXC8/KD8hXC8pW15cP1xzXSopKFw/W15c''@;'; put 'put ''c10qKT8kLyxqPVsieyIsIn0iLCJ8IiwiXFwiLCJeIiwiYCJdLmNvbmNhdChbIjwiLCI+IiwnIicsImAiLCIgIiwiXHIiLCJcbiIsIlx0Il0pLFY9WyInIl0uY29uY2F0KGopLEc9WyIlIiwiLyIsIj8iLCI7IiwiIyJdLmNvbmNhdChWKSxXPVsiLyIsIj8iLCIjIl0sVT0vXlsrYS16MC05QS1a''@;'; put 'put ''Xy1dezAsNjN9JC8scT0vXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sdGU9e2phdmFzY3JpcHQ6ITAsImphdmFzY3JpcHQ6IjohMH0sbmU9e2phdmFzY3JpcHQ6ITAsImphdmFzY3JpcHQ6IjohMH0saWU9e2h0dHA6ITAsaHR0cHM6ITAsZnRwOiEwLGdvcGhlcjohMCxmaWxlOiEwLCJo''@;'; put 'put ''dHRwOiI6ITAsImh0dHBzOiI6ITAsImZ0cDoiOiEwLCJnb3BoZXI6IjohMCwiZmlsZToiOiEwfSxsZT1MKDc2NzMpO2Z1bmN0aW9uIGRlKHVlLGNlLFkpe2lmKHVlJiZKLmlzT2JqZWN0KHVlKSYmdWUgaW5zdGFuY2VvZiBJKXJldHVybiB1ZTt2YXIgYj1uZXcgSTtyZXR1cm4gYi5wYXJzZSh1''@;'; put 'put ''ZSxjZSxZKSxifUkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHVlLGNlLFkpe2lmKCFKLmlzU3RyaW5nKHVlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90ICIrdHlwZW9mIHVlKTt2YXIgYj11ZS5pbmRleE9mKCI/IikseD0tMSE9''@;'; put 'put ''PWImJmI8dWUuaW5kZXhPZigiIyIpPyI/IjoiIyIsTj11ZS5zcGxpdCh4KTtOWzBdPU5bMF0ucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBGPXVlPU4uam9pbih4KTtpZihGPUYudHJpbSgpLCFZJiYxPT09dWUuc3BsaXQoIiMiKS5sZW5ndGgpe3ZhciBnPXouZXhlYyhGKTtpZihnKXJldHVybiB0''@;'; put 'put ''aGlzLnBhdGg9Rix0aGlzLmhyZWY9Rix0aGlzLnBhdGhuYW1lPWdbMV0sZ1syXT8odGhpcy5zZWFyY2g9Z1syXSx0aGlzLnF1ZXJ5PWNlP2xlLnBhcnNlKHRoaXMuc2VhcmNoLnN1YnN0cigxKSk6dGhpcy5zZWFyY2guc3Vic3RyKDEpKTpjZSYmKHRoaXMuc2VhcmNoPSIiLHRoaXMucXVlcnk9''@;'; put 'put ''e30pLHRoaXN9dmFyIEM9Ui5leGVjKEYpO2lmKEMpe3ZhciBNPShDPUNbMF0pLnRvTG93ZXJDYXNlKCk7dGhpcy5wcm90b2NvbD1NLEY9Ri5zdWJzdHIoQy5sZW5ndGgpfWlmKFl8fEN8fEYubWF0Y2goL15cL1wvW15AXC9dK0BbXkBcL10rLykpe3ZhciB5PSIvLyI9PT1GLnN1YnN0cigwLDIp''@;'; put 'put ''OyF5fHxDJiZuZVtDXXx8KEY9Ri5zdWJzdHIoMiksdGhpcy5zbGFzaGVzPSEwKX1pZighbmVbQ10mJih5fHxDJiYhaWVbQ10pKXtmb3IodmFyIHAsUyxRPS0xLHJlPTA7cmU8Vy5sZW5ndGg7cmUrKyktMSE9PShmZT1GLmluZGV4T2YoV1tyZV0pKSYmKC0xPT09UXx8ZmU8USkmJihRPWZlKTtm''@;'; put 'put ''b3IoLTEhPT0oUz0tMT09PVE/Ri5sYXN0SW5kZXhPZigiQCIpOkYubGFzdEluZGV4T2YoIkAiLFEpKSYmKHA9Ri5zbGljZSgwLFMpLEY9Ri5zbGljZShTKzEpLHRoaXMuYXV0aD1kZWNvZGVVUklDb21wb25lbnQocCkpLFE9LTEscmU9MDtyZTxHLmxlbmd0aDtyZSsrKXt2YXIgZmU7LTEhPT0o''@;'; put 'put ''ZmU9Ri5pbmRleE9mKEdbcmVdKSkmJigtMT09PVF8fGZlPFEpJiYoUT1mZSl9LTE9PT1RJiYoUT1GLmxlbmd0aCksdGhpcy5ob3N0PUYuc2xpY2UoMCxRKSxGPUYuc2xpY2UoUSksdGhpcy5wYXJzZUhvc3QoKSx0aGlzLmhvc3RuYW1lPXRoaXMuaG9zdG5hbWV8fCIiO3ZhciBtZT0iWyI9PT10''@;'; put 'put ''aGlzLmhvc3RuYW1lWzBdJiYiXSI9PT10aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoLTFdO2lmKCFtZSlmb3IodmFyIGtlPXRoaXMuaG9zdG5hbWUuc3BsaXQoL1wuLyksVGU9KHJlPTAsa2UubGVuZ3RoKTtyZTxUZTtyZSsrKXt2YXIgUGU9a2VbcmVdO2lmKFBlJiYhUGUubWF0''@;'; put 'put ''Y2goVSkpe2Zvcih2YXIgRmU9IiIsTmU9MCxMZT1QZS5sZW5ndGg7TmU8TGU7TmUrKylQZS5jaGFyQ29kZUF0KE5lKT4xMjc/RmUrPSJ4IjpGZSs9UGVbTmVdO2lmKCFGZS5tYXRjaChVKSl7dmFyIEJlPWtlLnNsaWNlKDAscmUpLEhlPWtlLnNsaWNlKHJlKzEpLFFlPVBlLm1hdGNoKHEpO1Fl''@;'; put 'put ''JiYoQmUucHVzaChRZVsxXSksSGUudW5zaGlmdChRZVsyXSkpLEhlLmxlbmd0aCYmKEY9Ii8iK0hlLmpvaW4oIi4iKStGKSx0aGlzLmhvc3RuYW1lPUJlLmpvaW4oIi4iKTticmVha319fXRoaXMuaG9zdG5hbWU9dGhpcy5ob3N0bmFtZS5sZW5ndGg+MjU1PyIiOnRoaXMuaG9zdG5hbWUudG9M''@;'; put 'put ''b3dlckNhc2UoKSxtZXx8KHRoaXMuaG9zdG5hbWU9Sy50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpKTt2YXIgbXQ9dGhpcy5wb3J0PyI6Iit0aGlzLnBvcnQ6IiI7dGhpcy5ob3N0PSh0aGlzLmhvc3RuYW1lfHwiIikrbXQsdGhpcy5ocmVmKz10aGlzLmhvc3QsbWUmJih0aGlzLmhvc3RuYW1lPXRo''@;'; put 'put ''aXMuaG9zdG5hbWUuc3Vic3RyKDEsdGhpcy5ob3N0bmFtZS5sZW5ndGgtMiksIi8iIT09RlswXSYmKEY9Ii8iK0YpKX1pZighdGVbTV0pZm9yKHJlPTAsVGU9Vi5sZW5ndGg7cmU8VGU7cmUrKyl7dmFyIHdlPVZbcmVdO2lmKC0xIT09Ri5pbmRleE9mKHdlKSl7dmFyIEllPWVuY29kZVVSSUNv''@;'; put 'put ''bXBvbmVudCh3ZSk7SWU9PT13ZSYmKEllPWVzY2FwZSh3ZSkpLEY9Ri5zcGxpdCh3ZSkuam9pbihJZSl9fXZhciBPZT1GLmluZGV4T2YoIiMiKTstMSE9PU9lJiYodGhpcy5oYXNoPUYuc3Vic3RyKE9lKSxGPUYuc2xpY2UoMCxPZSkpO3ZhciBldD1GLmluZGV4T2YoIj8iKTtyZXR1cm4tMSE9''@;'; put 'put ''PWV0Pyh0aGlzLnNlYXJjaD1GLnN1YnN0cihldCksdGhpcy5xdWVyeT1GLnN1YnN0cihldCsxKSxjZSYmKHRoaXMucXVlcnk9bGUucGFyc2UodGhpcy5xdWVyeSkpLEY9Ri5zbGljZSgwLGV0KSk6Y2UmJih0aGlzLnNlYXJjaD0iIix0aGlzLnF1ZXJ5PXt9KSxGJiYodGhpcy5wYXRobmFtZT1G''@;'; put 'put ''KSxpZVtNXSYmdGhpcy5ob3N0bmFtZSYmIXRoaXMucGF0aG5hbWUmJih0aGlzLnBhdGhuYW1lPSIvIiksKHRoaXMucGF0aG5hbWV8fHRoaXMuc2VhcmNoKSYmKHRoaXMucGF0aD0obXQ9dGhpcy5wYXRobmFtZXx8IiIpKyh0aGlzLnNlYXJjaHx8IiIpKSx0aGlzLmhyZWY9dGhpcy5mb3JtYXQo''@;'; put 'put ''KSx0aGlzfSxJLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oKXt2YXIgdWU9dGhpcy5hdXRofHwiIjt1ZSYmKHVlPSh1ZT1lbmNvZGVVUklDb21wb25lbnQodWUpKS5yZXBsYWNlKC8lM0EvaSwiOiIpLHVlKz0iQCIpO3ZhciBjZT10aGlzLnByb3RvY29sfHwiIixZPXRoaXMucGF0aG5hbWV8''@;'; put 'put ''fCIiLGI9dGhpcy5oYXNofHwiIix4PSExLE49IiI7dGhpcy5ob3N0P3g9dWUrdGhpcy5ob3N0OnRoaXMuaG9zdG5hbWUmJih4PXVlKygtMT09PXRoaXMuaG9zdG5hbWUuaW5kZXhPZigiOiIpP3RoaXMuaG9zdG5hbWU6IlsiK3RoaXMuaG9zdG5hbWUrIl0iKSx0aGlzLnBvcnQmJih4Kz0iOiIr''@;'; put 'put ''dGhpcy5wb3J0KSksdGhpcy5xdWVyeSYmSi5pc09iamVjdCh0aGlzLnF1ZXJ5KSYmT2JqZWN0LmtleXModGhpcy5xdWVyeSkubGVuZ3RoJiYoTj1sZS5zdHJpbmdpZnkodGhpcy5xdWVyeSkpO3ZhciBGPXRoaXMuc2VhcmNofHxOJiYiPyIrTnx8IiI7cmV0dXJuIGNlJiYiOiIhPT1jZS5zdWJz''@;'; put 'put ''dHIoLTEpJiYoY2UrPSI6IiksdGhpcy5zbGFzaGVzfHwoIWNlfHxpZVtjZV0pJiYhMSE9PXg/KHg9Ii8vIisoeHx8IiIpLFkmJiIvIiE9PVkuY2hhckF0KDApJiYoWT0iLyIrWSkpOnh8fCh4PSIiKSxiJiYiIyIhPT1iLmNoYXJBdCgwKSYmKGI9IiMiK2IpLEYmJiI/IiE9PUYuY2hhckF0KDAp''@;'; put 'put ''JiYoRj0iPyIrRiksY2UreCsoWT1ZLnJlcGxhY2UoL1s/I10vZyxmdW5jdGlvbihnKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGcpfSkpKyhGPUYucmVwbGFjZSgiIyIsIiUyMyIpKStifSxJLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKHVlKXtyZXR1cm4gdGhpcy5yZXNvbHZlT2Jq''@;'; put 'put ''ZWN0KGRlKHVlLCExLCEwKSkuZm9ybWF0KCl9LEkucHJvdG90eXBlLnJlc29sdmVPYmplY3Q9ZnVuY3Rpb24odWUpe2lmKEouaXNTdHJpbmcodWUpKXt2YXIgY2U9bmV3IEk7Y2UucGFyc2UodWUsITEsITApLHVlPWNlfWZvcih2YXIgWT1uZXcgSSxiPU9iamVjdC5rZXlzKHRoaXMpLHg9MDt4''@;'; put 'put ''PGIubGVuZ3RoO3grKyl7dmFyIE49Ylt4XTtZW05dPXRoaXNbTl19aWYoWS5oYXNoPXVlLmhhc2gsIiI9PT11ZS5ocmVmKXJldHVybiBZLmhyZWY9WS5mb3JtYXQoKSxZO2lmKHVlLnNsYXNoZXMmJiF1ZS5wcm90b2NvbCl7Zm9yKHZhciBGPU9iamVjdC5rZXlzKHVlKSxnPTA7ZzxGLmxlbmd0''@;'; put 'put ''aDtnKyspe3ZhciBDPUZbZ107InByb3RvY29sIiE9PUMmJihZW0NdPXVlW0NdKX1yZXR1cm4gaWVbWS5wcm90b2NvbF0mJlkuaG9zdG5hbWUmJiFZLnBhdGhuYW1lJiYoWS5wYXRoPVkucGF0aG5hbWU9Ii8iKSxZLmhyZWY9WS5mb3JtYXQoKSxZfWlmKHVlLnByb3RvY29sJiZ1ZS5wcm90b2Nv''@;'; put 'put ''bCE9PVkucHJvdG9jb2wpe2lmKCFpZVt1ZS5wcm90b2NvbF0pe2Zvcih2YXIgTT1PYmplY3Qua2V5cyh1ZSkseT0wO3k8TS5sZW5ndGg7eSsrKXt2YXIgcD1NW3ldO1lbcF09dWVbcF19cmV0dXJuIFkuaHJlZj1ZLmZvcm1hdCgpLFl9aWYoWS5wcm90b2NvbD11ZS5wcm90b2NvbCx1ZS5ob3N0''@;'; put 'put ''fHxuZVt1ZS5wcm90b2NvbF0pWS5wYXRobmFtZT11ZS5wYXRobmFtZTtlbHNle2Zvcih2YXIgUz0odWUucGF0aG5hbWV8fCIiKS5zcGxpdCgiLyIpO1MubGVuZ3RoJiYhKHVlLmhvc3Q9Uy5zaGlmdCgpKTspO3VlLmhvc3R8fCh1ZS5ob3N0PSIiKSx1ZS5ob3N0bmFtZXx8KHVlLmhvc3RuYW1l''@;'; put 'put ''PSIiKSwiIiE9PVNbMF0mJlMudW5zaGlmdCgiIiksUy5sZW5ndGg8MiYmUy51bnNoaWZ0KCIiKSxZLnBhdGhuYW1lPVMuam9pbigiLyIpfXJldHVybiBZLnNlYXJjaD11ZS5zZWFyY2gsWS5xdWVyeT11ZS5xdWVyeSxZLmhvc3Q9dWUuaG9zdHx8IiIsWS5hdXRoPXVlLmF1dGgsWS5ob3N0bmFt''@;'; put 'put ''ZT11ZS5ob3N0bmFtZXx8dWUuaG9zdCxZLnBvcnQ9dWUucG9ydCwoWS5wYXRobmFtZXx8WS5zZWFyY2gpJiYoWS5wYXRoPShZLnBhdGhuYW1lfHwiIikrKFkuc2VhcmNofHwiIikpLFkuc2xhc2hlcz1ZLnNsYXNoZXN8fHVlLnNsYXNoZXMsWS5ocmVmPVkuZm9ybWF0KCksWX12YXIgZmU9WS5w''@;'; put 'put ''YXRobmFtZSYmIi8iPT09WS5wYXRobmFtZS5jaGFyQXQoMCksbWU9dWUuaG9zdHx8dWUucGF0aG5hbWUmJiIvIj09PXVlLnBhdGhuYW1lLmNoYXJBdCgwKSxrZT1tZXx8ZmV8fFkuaG9zdCYmdWUucGF0aG5hbWUsVGU9a2UsUGU9WS5wYXRobmFtZSYmWS5wYXRobmFtZS5zcGxpdCgiLyIpfHxb''@;'; put 'put ''XSxGZT0oUz11ZS5wYXRobmFtZSYmdWUucGF0aG5hbWUuc3BsaXQoIi8iKXx8W10sWS5wcm90b2NvbCYmIWllW1kucHJvdG9jb2xdKTtpZihGZSYmKFkuaG9zdG5hbWU9IiIsWS5wb3J0PW51bGwsWS5ob3N0JiYoIiI9PT1QZVswXT9QZVswXT1ZLmhvc3Q6UGUudW5zaGlmdChZLmhvc3QpKSxZ''@;'; put 'put ''Lmhvc3Q9IiIsdWUucHJvdG9jb2wmJih1ZS5ob3N0bmFtZT1udWxsLHVlLnBvcnQ9bnVsbCx1ZS5ob3N0JiYoIiI9PT1TWzBdP1NbMF09dWUuaG9zdDpTLnVuc2hpZnQodWUuaG9zdCkpLHVlLmhvc3Q9bnVsbCksa2U9a2UmJigiIj09PVNbMF18fCIiPT09UGVbMF0pKSxtZSlZLmhvc3Q9dWUu''@;'; put 'put ''aG9zdHx8IiI9PT11ZS5ob3N0P3VlLmhvc3Q6WS5ob3N0LFkuaG9zdG5hbWU9dWUuaG9zdG5hbWV8fCIiPT09dWUuaG9zdG5hbWU/dWUuaG9zdG5hbWU6WS5ob3N0bmFtZSxZLnNlYXJjaD11ZS5zZWFyY2gsWS5xdWVyeT11ZS5xdWVyeSxQZT1TO2Vsc2UgaWYoUy5sZW5ndGgpUGV8fChQZT1b''@;'; put 'put ''XSksUGUucG9wKCksUGU9UGUuY29uY2F0KFMpLFkuc2VhcmNoPXVlLnNlYXJjaCxZLnF1ZXJ5PXVlLnF1ZXJ5O2Vsc2UgaWYoIUouaXNOdWxsT3JVbmRlZmluZWQodWUuc2VhcmNoKSlyZXR1cm4gRmUmJihZLmhvc3RuYW1lPVkuaG9zdD1QZS5zaGlmdCgpLChRZT0hIShZLmhvc3QmJlkuaG9z''@;'; put 'put ''dC5pbmRleE9mKCJAIik+MCkmJlkuaG9zdC5zcGxpdCgiQCIpKSYmKFkuYXV0aD1RZS5zaGlmdCgpLFkuaG9zdD1ZLmhvc3RuYW1lPVFlLnNoaWZ0KCkpKSxZLnNlYXJjaD11ZS5zZWFyY2gsWS5xdWVyeT11ZS5xdWVyeSxKLmlzTnVsbChZLnBhdGhuYW1lKSYmSi5pc051bGwoWS5zZWFyY2gp''@;'; put 'put ''fHwoWS5wYXRoPShZLnBhdGhuYW1lP1kucGF0aG5hbWU6IiIpKyhZLnNlYXJjaD9ZLnNlYXJjaDoiIikpLFkuaHJlZj1ZLmZvcm1hdCgpLFk7aWYoIVBlLmxlbmd0aClyZXR1cm4gWS5wYXRobmFtZT1udWxsLFkucGF0aD1ZLnNlYXJjaD8iLyIrWS5zZWFyY2g6bnVsbCxZLmhyZWY9WS5mb3Jt''@;'; put 'put ''YXQoKSxZO2Zvcih2YXIgTmU9UGUuc2xpY2UoLTEpWzBdLExlPShZLmhvc3R8fHVlLmhvc3R8fFBlLmxlbmd0aD4xKSYmKCIuIj09PU5lfHwiLi4iPT09TmUpfHwiIj09PU5lLEJlPTAsSGU9UGUubGVuZ3RoO0hlPj0wO0hlLS0pIi4iPT09KE5lPVBlW0hlXSk/UGUuc3BsaWNlKEhlLDEpOiIu''@;'; put 'put ''LiI9PT1OZT8oUGUuc3BsaWNlKEhlLDEpLEJlKyspOkJlJiYoUGUuc3BsaWNlKEhlLDEpLEJlLS0pO2lmKCFrZSYmIVRlKWZvcig7QmUtLTtCZSlQZS51bnNoaWZ0KCIuLiIpOyFrZXx8IiI9PT1QZVswXXx8UGVbMF0mJiIvIj09PVBlWzBdLmNoYXJBdCgwKXx8UGUudW5zaGlmdCgiIiksTGUm''@;'; put 'put ''JiIvIiE9PVBlLmpvaW4oIi8iKS5zdWJzdHIoLTEpJiZQZS5wdXNoKCIiKTt2YXIgUWUsbXQ9IiI9PT1QZVswXXx8UGVbMF0mJiIvIj09PVBlWzBdLmNoYXJBdCgwKTtyZXR1cm4gRmUmJihZLmhvc3RuYW1lPVkuaG9zdD1tdD8iIjpQZS5sZW5ndGg/UGUuc2hpZnQoKToiIiwoUWU9ISEoWS5o''@;'; put 'put ''b3N0JiZZLmhvc3QuaW5kZXhPZigiQCIpPjApJiZZLmhvc3Quc3BsaXQoIkAiKSkmJihZLmF1dGg9UWUuc2hpZnQoKSxZLmhvc3Q9WS5ob3N0bmFtZT1RZS5zaGlmdCgpKSksKGtlPWtlfHxZLmhvc3QmJlBlLmxlbmd0aCkmJiFtdCYmUGUudW5zaGlmdCgiIiksUGUubGVuZ3RoP1kucGF0aG5h''@;'; put 'put ''bWU9UGUuam9pbigiLyIpOihZLnBhdGhuYW1lPW51bGwsWS5wYXRoPW51bGwpLEouaXNOdWxsKFkucGF0aG5hbWUpJiZKLmlzTnVsbChZLnNlYXJjaCl8fChZLnBhdGg9KFkucGF0aG5hbWU/WS5wYXRobmFtZToiIikrKFkuc2VhcmNoP1kuc2VhcmNoOiIiKSksWS5hdXRoPXVlLmF1dGh8fFku''@;'; put 'put ''YXV0aCxZLnNsYXNoZXM9WS5zbGFzaGVzfHx1ZS5zbGFzaGVzLFkuaHJlZj1ZLmZvcm1hdCgpLFl9LEkucHJvdG90eXBlLnBhcnNlSG9zdD1mdW5jdGlvbigpe3ZhciB1ZT10aGlzLmhvc3QsY2U9RS5leGVjKHVlKTtjZSYmKCI6IiE9PShjZT1jZVswXSkmJih0aGlzLnBvcnQ9Y2Uuc3Vic3Ry''@;'; put 'put ''KDEpKSx1ZT11ZS5zdWJzdHIoMCx1ZS5sZW5ndGgtY2UubGVuZ3RoKSksdWUmJih0aGlzLmhvc3RuYW1lPXVlKX19LDI1MDI6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9e2lzU3RyaW5nOmZ1bmN0aW9uKEIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgQn0saXNPYmplY3Q6ZnVuY3Rpb24o''@;'; put 'put ''Qil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBCJiZudWxsIT09Qn0saXNOdWxsOmZ1bmN0aW9uKEIpe3JldHVybiBudWxsPT09Qn0saXNOdWxsT3JVbmRlZmluZWQ6ZnVuY3Rpb24oQil7cmV0dXJuIG51bGw9PUJ9fX0sNDkyNzooSCxCLEwpPT57dmFyIEs9TCg1MTA4KTtmdW5jdGlvbiBKKEkp''@;'; put 'put ''e3RyeXtpZighTC5nLmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaHtyZXR1cm4hMX12YXIgUj1MLmcubG9jYWxTdG9yYWdlW0ldO3JldHVybiBudWxsIT1SJiYidHJ1ZSI9PT1TdHJpbmcoUikudG9Mb3dlckNhc2UoKX1ILmV4cG9ydHM9ZnVuY3Rpb24oSSxSKXtpZihKKCJub0RlcHJlY2F0''@;'; put 'put ''aW9uIikpcmV0dXJuIEk7dmFyIEU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIUUpe2lmKEooInRocm93RGVwcmVjYXRpb24iKSl0aHJvdyBuZXcgRXJyb3IoUik7SigidHJhY2VEZXByZWNhdGlvbiIpP0sudHJhY2UoUik6Sy53YXJuKFIpLEU9ITB9cmV0dXJuIEkuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfX19LDM4NDpIPT57SC5leHBvcnRzPWZ1bmN0aW9uKEIpe3JldHVybiBCJiYib2JqZWN0Ij09dHlwZW9mIEImJiJmdW5jdGlvbiI9PXR5cGVvZiBCLmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBCLmZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBCLnJlYWRVSW50OH19LDU5NTU6KEgs''@;'; put 'put ''QixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDI1ODQpLEo9TCg4NjYyKSxJPUwoNjQzMCksUj1MKDU2OTIpO2Z1bmN0aW9uIEUoUSl7cmV0dXJuIFEuY2FsbC5iaW5kKFEpfXZhciB6PXR5cGVvZiBCaWdJbnQ8InUiLGo9dHlwZW9mIFN5bWJvbDwidSIsVj1FKE9iamVjdC5wcm90b3R5cGUu''@;'; put 'put ''dG9TdHJpbmcpLEc9RShOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YpLFc9RShTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YpLFU9RShCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mKTtpZih6KXZhciBxPUUoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKTtpZihqKXZhciB0ZT1FKFN5bWJvbC5wcm90''@;'; put 'put ''b3R5cGUudmFsdWVPZik7ZnVuY3Rpb24gbmUoUSxyZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBRKXJldHVybiExO3RyeXtyZXR1cm4gcmUoUSksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIGllKFEpe3JldHVybiJbb2JqZWN0IE1hcF0iPT09VihRKX1mdW5jdGlvbiBsZShRKXtyZXR1cm4i''@;'; put 'put ''W29iamVjdCBTZXRdIj09PVYoUSl9ZnVuY3Rpb24gZGUoUSl7cmV0dXJuIltvYmplY3QgV2Vha01hcF0iPT09VihRKX1mdW5jdGlvbiB1ZShRKXtyZXR1cm4iW29iamVjdCBXZWFrU2V0XSI9PT1WKFEpfWZ1bmN0aW9uIGNlKFEpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1WKFEp''@;'; put 'put ''fWZ1bmN0aW9uIFkoUSl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJihjZS53b3JraW5nP2NlKFEpOlEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil9ZnVuY3Rpb24gYihRKXtyZXR1cm4iW29iamVjdCBEYXRhVmlld10iPT09VihRKX1mdW5jdGlvbiB4KFEpe3JldHVybiB0eXBlb2Yg''@;'; put 'put ''RGF0YVZpZXc8InUiJiYoYi53b3JraW5nP2IoUSk6USBpbnN0YW5jZW9mIERhdGFWaWV3KX1CLmlzQXJndW1lbnRzT2JqZWN0PUssQi5pc0dlbmVyYXRvckZ1bmN0aW9uPUosQi5pc1R5cGVkQXJyYXk9UixCLmlzUHJvbWlzZT1mdW5jdGlvbihRKXtyZXR1cm4gdHlwZW9mIFByb21pc2U8InUi''@;'; put 'put ''JiZRIGluc3RhbmNlb2YgUHJvbWlzZXx8bnVsbCE9PVEmJiJvYmplY3QiPT10eXBlb2YgUSYmImZ1bmN0aW9uIj09dHlwZW9mIFEudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIFEuY2F0Y2h9LEIuaXNBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24oUSl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZl''@;'; put 'put ''cjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoUSk6UihRKXx8eChRKX0sQi5pc1VpbnQ4QXJyYXk9ZnVuY3Rpb24oUSl7cmV0dXJuIlVpbnQ4QXJyYXkiPT09SShRKX0sQi5pc1VpbnQ4Q2xhbXBlZEFycmF5PWZ1bmN0aW9uKFEpe3JldHVybiJVaW50OENsYW1w''@;'; put 'put ''ZWRBcnJheSI9PT1JKFEpfSxCLmlzVWludDE2QXJyYXk9ZnVuY3Rpb24oUSl7cmV0dXJuIlVpbnQxNkFycmF5Ij09PUkoUSl9LEIuaXNVaW50MzJBcnJheT1mdW5jdGlvbihRKXtyZXR1cm4iVWludDMyQXJyYXkiPT09SShRKX0sQi5pc0ludDhBcnJheT1mdW5jdGlvbihRKXtyZXR1cm4iSW50''@;'; put 'put ''OEFycmF5Ij09PUkoUSl9LEIuaXNJbnQxNkFycmF5PWZ1bmN0aW9uKFEpe3JldHVybiJJbnQxNkFycmF5Ij09PUkoUSl9LEIuaXNJbnQzMkFycmF5PWZ1bmN0aW9uKFEpe3JldHVybiJJbnQzMkFycmF5Ij09PUkoUSl9LEIuaXNGbG9hdDMyQXJyYXk9ZnVuY3Rpb24oUSl7cmV0dXJuIkZsb2F0''@;'; put 'put ''MzJBcnJheSI9PT1JKFEpfSxCLmlzRmxvYXQ2NEFycmF5PWZ1bmN0aW9uKFEpe3JldHVybiJGbG9hdDY0QXJyYXkiPT09SShRKX0sQi5pc0JpZ0ludDY0QXJyYXk9ZnVuY3Rpb24oUSl7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09SShRKX0sQi5pc0JpZ1VpbnQ2NEFycmF5PWZ1bmN0aW9uKFEp''@;'; put 'put ''e3JldHVybiJCaWdVaW50NjRBcnJheSI9PT1JKFEpfSxpZS53b3JraW5nPXR5cGVvZiBNYXA8InUiJiZpZShuZXcgTWFwKSxCLmlzTWFwPWZ1bmN0aW9uKFEpe3JldHVybiB0eXBlb2YgTWFwPCJ1IiYmKGllLndvcmtpbmc/aWUoUSk6USBpbnN0YW5jZW9mIE1hcCl9LGxlLndvcmtpbmc9dHlw''@;'; put 'put ''ZW9mIFNldDwidSImJmxlKG5ldyBTZXQpLEIuaXNTZXQ9ZnVuY3Rpb24oUSl7cmV0dXJuIHR5cGVvZiBTZXQ8InUiJiYobGUud29ya2luZz9sZShRKTpRIGluc3RhbmNlb2YgU2V0KX0sZGUud29ya2luZz10eXBlb2YgV2Vha01hcDwidSImJmRlKG5ldyBXZWFrTWFwKSxCLmlzV2Vha01hcD1m''@;'; put 'put ''dW5jdGlvbihRKXtyZXR1cm4gdHlwZW9mIFdlYWtNYXA8InUiJiYoZGUud29ya2luZz9kZShRKTpRIGluc3RhbmNlb2YgV2Vha01hcCl9LHVlLndvcmtpbmc9dHlwZW9mIFdlYWtTZXQ8InUiJiZ1ZShuZXcgV2Vha1NldCksQi5pc1dlYWtTZXQ9ZnVuY3Rpb24oUSl7cmV0dXJuIHVlKFEpfSxj''@;'; put 'put ''ZS53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJmNlKG5ldyBBcnJheUJ1ZmZlciksQi5pc0FycmF5QnVmZmVyPVksYi53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnR5cGVvZiBEYXRhVmlldzwidSImJmIobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSwwLDEp''@;'; put 'put ''KSxCLmlzRGF0YVZpZXc9eDt2YXIgTj10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiP1NoYXJlZEFycmF5QnVmZmVyOnZvaWQgMDtmdW5jdGlvbiBGKFEpe3JldHVybiJbb2JqZWN0IFNoYXJlZEFycmF5QnVmZmVyXSI9PT1WKFEpfWZ1bmN0aW9uIGcoUSl7cmV0dXJuIHZvaWQgMCE9PU4m''@;'; put 'put ''Jih2b2lkIDA9PT1GLndvcmtpbmcmJihGLndvcmtpbmc9RihuZXcgTikpLEYud29ya2luZz9GKFEpOlEgaW5zdGFuY2VvZiBOKX1mdW5jdGlvbiBDKFEpe3JldHVybiBuZShRLEcpfWZ1bmN0aW9uIE0oUSl7cmV0dXJuIG5lKFEsVyl9ZnVuY3Rpb24geShRKXtyZXR1cm4gbmUoUSxVKX1mdW5j''@;'; put 'put ''dGlvbiBwKFEpe3JldHVybiB6JiZuZShRLHEpfWZ1bmN0aW9uIFMoUSl7cmV0dXJuIGomJm5lKFEsdGUpfUIuaXNTaGFyZWRBcnJheUJ1ZmZlcj1nLEIuaXNBc3luY0Z1bmN0aW9uPWZ1bmN0aW9uKFEpe3JldHVybiJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09PVYoUSl9LEIuaXNNYXBJdGVy''@;'; put 'put ''YXRvcj1mdW5jdGlvbihRKXtyZXR1cm4iW29iamVjdCBNYXAgSXRlcmF0b3JdIj09PVYoUSl9LEIuaXNTZXRJdGVyYXRvcj1mdW5jdGlvbihRKXtyZXR1cm4iW29iamVjdCBTZXQgSXRlcmF0b3JdIj09PVYoUSl9LEIuaXNHZW5lcmF0b3JPYmplY3Q9ZnVuY3Rpb24oUSl7cmV0dXJuIltvYmpl''@;'; put 'put ''Y3QgR2VuZXJhdG9yXSI9PT1WKFEpfSxCLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZT1mdW5jdGlvbihRKXtyZXR1cm4iW29iamVjdCBXZWJBc3NlbWJseS5Nb2R1bGVdIj09PVYoUSl9LEIuaXNOdW1iZXJPYmplY3Q9QyxCLmlzU3RyaW5nT2JqZWN0PU0sQi5pc0Jvb2xlYW5PYmplY3Q9''@;'; put 'put ''eSxCLmlzQmlnSW50T2JqZWN0PXAsQi5pc1N5bWJvbE9iamVjdD1TLEIuaXNCb3hlZFByaW1pdGl2ZT1mdW5jdGlvbihRKXtyZXR1cm4gQyhRKXx8TShRKXx8eShRKXx8cChRKXx8UyhRKX0sQi5pc0FueUFycmF5QnVmZmVyPWZ1bmN0aW9uKFEpe3JldHVybiB0eXBlb2YgVWludDhBcnJheTwi''@;'; put 'put ''dSImJihZKFEpfHxnKFEpKX0sWyJpc1Byb3h5IiwiaXNFeHRlcm5hbCIsImlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0Il0uZm9yRWFjaChmdW5jdGlvbihRKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQixRLHtlbnVtZXJhYmxlOiExLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFEr''@;'; put 'put ''IiBpcyBub3Qgc3VwcG9ydGVkIGluIHVzZXJsYW5kIil9fSl9KX0sOTUzOTooSCxCLEwpPT57dmFyIEs9TCg0MTU1KSxKPUwoNTEwOCksST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yc3x8ZnVuY3Rpb24oUSl7Zm9yKHZhciByZT1PYmplY3Qua2V5cyhRKSxmZT17fSxtZT0wO21l''@;'; put 'put ''PHJlLmxlbmd0aDttZSsrKWZlW3JlW21lXV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihRLHJlW21lXSk7cmV0dXJuIGZlfSxSPS8lW3NkaiVdL2c7Qi5mb3JtYXQ9ZnVuY3Rpb24oUSl7aWYoIXVlKFEpKXtmb3IodmFyIHJlPVtdLGZlPTA7ZmU8YXJndW1lbnRzLmxlbmd0aDtm''@;'; put 'put ''ZSsrKXJlLnB1c2goVihhcmd1bWVudHNbZmVdKSk7cmV0dXJuIHJlLmpvaW4oIiAiKX1mZT0xO2Zvcih2YXIgbWU9YXJndW1lbnRzLGtlPW1lLmxlbmd0aCxUZT1TdHJpbmcoUSkucmVwbGFjZShSLGZ1bmN0aW9uKEZlKXtpZigiJSUiPT09RmUpcmV0dXJuIiUiO2lmKGZlPj1rZSlyZXR1cm4g''@;'; put 'put ''RmU7c3dpdGNoKEZlKXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKG1lW2ZlKytdKTtjYXNlIiVkIjpyZXR1cm4gTnVtYmVyKG1lW2ZlKytdKTtjYXNlIiVqIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG1lW2ZlKytdKX1jYXRjaHtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVmYXVsdDpyZXR1cm4g''@;'; put 'put ''RmV9fSksUGU9bWVbZmVdO2ZlPGtlO1BlPW1lWysrZmVdKWxlKFBlKXx8IWIoUGUpP1RlKz0iICIrUGU6VGUrPSIgIitWKFBlKTtyZXR1cm4gVGV9LEIuZGVwcmVjYXRlPWZ1bmN0aW9uKFEscmUpe2lmKHZvaWQgMCE9PUsmJiEwPT09Sy5ub0RlcHJlY2F0aW9uKXJldHVybiBRO2lmKHZvaWQg''@;'; put 'put ''MD09PUspcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEIuZGVwcmVjYXRlKFEscmUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIGZlPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFmZSl7aWYoSy50aHJvd0RlcHJlY2F0aW9uKXRocm93IG5ldyBFcnJvcihyZSk7Sy50cmFjZURlcHJlY2F0''@;'; put 'put ''aW9uP0oudHJhY2UocmUpOkouZXJyb3IocmUpLGZlPSEwfXJldHVybiBRLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O3ZhciBFPXt9LHo9L14kLztpZihLLmVudi5OT0RFX0RFQlVHKXt2YXIgaj1LLmVudi5OT0RFX0RFQlVHO2o9ai5yZXBsYWNlKC9bfFxce30oKVtcXV4kKz8uXS9nLCJcXCQm''@;'; put 'put ''IikucmVwbGFjZSgvXCovZywiLioiKS5yZXBsYWNlKC8sL2csIiR8XiIpLnRvVXBwZXJDYXNlKCksej1uZXcgUmVnRXhwKCJeIitqKyIkIiwiaSIpfWZ1bmN0aW9uIFYoUSxyZSl7dmFyIGZlPXtzZWVuOltdLHN0eWxpemU6V307cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTMmJihmZS5kZXB0''@;'; put 'put ''aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihmZS5jb2xvcnM9YXJndW1lbnRzWzNdKSxpZShyZSk/ZmUuc2hvd0hpZGRlbj1yZTpyZSYmQi5fZXh0ZW5kKGZlLHJlKSxjZShmZS5zaG93SGlkZGVuKSYmKGZlLnNob3dIaWRkZW49ITEpLGNlKGZlLmRlcHRoKSYmKGZlLmRl''@;'; put 'put ''cHRoPTIpLGNlKGZlLmNvbG9ycykmJihmZS5jb2xvcnM9ITEpLGNlKGZlLmN1c3RvbUluc3BlY3QpJiYoZmUuY3VzdG9tSW5zcGVjdD0hMCksZmUuY29sb3JzJiYoZmUuc3R5bGl6ZT1HKSxVKGZlLFEsZmUuZGVwdGgpfWZ1bmN0aW9uIEcoUSxyZSl7dmFyIGZlPVYuc3R5bGVzW3JlXTtyZXR1''@;'; put 'put ''cm4gZmU/Ilx4MWJbIitWLmNvbG9yc1tmZV1bMF0rIm0iK1ErIlx4MWJbIitWLmNvbG9yc1tmZV1bMV0rIm0iOlF9ZnVuY3Rpb24gVyhRLHJlKXtyZXR1cm4gUX1mdW5jdGlvbiBVKFEscmUsZmUpe2lmKFEuY3VzdG9tSW5zcGVjdCYmcmUmJkYocmUuaW5zcGVjdCkmJnJlLmluc3BlY3QhPT1C''@;'; put 'put ''Lmluc3BlY3QmJighcmUuY29uc3RydWN0b3J8fHJlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PXJlKSl7dmFyIG1lPXJlLmluc3BlY3QoZmUsUSk7cmV0dXJuIHVlKG1lKXx8KG1lPVUoUSxtZSxmZSkpLG1lfXZhciBrZT1mdW5jdGlvbihRZSxtdCl7aWYoY2UobXQpKXJldHVybiBRZS5zdHls''@;'; put 'put ''aXplKCJ1bmRlZmluZWQiLCJ1bmRlZmluZWQiKTtpZih1ZShtdCkpe3ZhciBLZT0iJyIrSlNPTi5zdHJpbmdpZnkobXQpLnJlcGxhY2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKSsiJyI7cmV0dXJuIFFlLnN0eWxpemUoS2UsInN0cmluZyIp''@;'; put 'put ''fXJldHVybiBkZShtdCk/UWUuc3R5bGl6ZSgiIittdCwibnVtYmVyIik6aWUobXQpP1FlLnN0eWxpemUoIiIrbXQsImJvb2xlYW4iKTpsZShtdCk/UWUuc3R5bGl6ZSgibnVsbCIsIm51bGwiKTp2b2lkIDB9KFEscmUpO2lmKGtlKXJldHVybiBrZTt2YXIgbXQsVGU9T2JqZWN0LmtleXMocmUp''@;'; put 'put ''LFBlPShtdD17fSxUZS5mb3JFYWNoKGZ1bmN0aW9uKEtlLHdlKXttdFtLZV09ITB9KSxtdCk7aWYoUS5zaG93SGlkZGVuJiYoVGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocmUpKSxOKHJlKSYmKFRlLmluZGV4T2YoIm1lc3NhZ2UiKT49MHx8VGUuaW5kZXhPZigiZGVzY3JpcHRpb24i''@;'; put 'put ''KT49MCkpcmV0dXJuIHEocmUpO2lmKDA9PT1UZS5sZW5ndGgpe2lmKEYocmUpKXJldHVybiBRLnN0eWxpemUoIltGdW5jdGlvbiIrKHJlLm5hbWU/IjogIityZS5uYW1lOiIiKSsiXSIsInNwZWNpYWwiKTtpZihZKHJlKSlyZXR1cm4gUS5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJp''@;'; put 'put ''bmcuY2FsbChyZSksInJlZ2V4cCIpO2lmKHgocmUpKXJldHVybiBRLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZSksImRhdGUiKTtpZihOKHJlKSlyZXR1cm4gcShyZSl9dmFyIE5lLExlPSIiLEJlPSExLEhlPVsieyIsIn0iXTtyZXR1cm4gbmUocmUpJiYoQmU9ITAs''@;'; put 'put ''SGU9WyJbIiwiXSJdKSxGKHJlKSYmKExlPSIgW0Z1bmN0aW9uIisocmUubmFtZT8iOiAiK3JlLm5hbWU6IiIpKyJdIiksWShyZSkmJihMZT0iICIrUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlKSkseChyZSkmJihMZT0iICIrRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2Fs''@;'; put 'put ''bChyZSkpLE4ocmUpJiYoTGU9IiAiK3EocmUpKSwwIT09VGUubGVuZ3RofHxCZSYmMCE9cmUubGVuZ3RoP2ZlPDA/WShyZSk/US5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZSksInJlZ2V4cCIpOlEuc3R5bGl6ZSgiW09iamVjdF0iLCJzcGVjaWFsIik6KFEuc2Vl''@;'; put 'put ''bi5wdXNoKHJlKSxOZT1CZT9mdW5jdGlvbihRZSxtdCxLZSx3ZSxJZSl7Zm9yKHZhciBPZT1bXSxldD0wLG50PW10Lmxlbmd0aDtldDxudDsrK2V0KXkobXQsU3RyaW5nKGV0KSk/T2UucHVzaCh0ZShRZSxtdCxLZSx3ZSxTdHJpbmcoZXQpLCEwKSk6T2UucHVzaCgiIik7cmV0dXJuIEllLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24ocWUpe3FlLm1hdGNoKC9eXGQrJC8pfHxPZS5wdXNoKHRlKFFlLG10LEtlLHdlLHFlLCEwKSl9KSxPZX0oUSxyZSxmZSxQZSxUZSk6VGUubWFwKGZ1bmN0aW9uKFFlKXtyZXR1cm4gdGUoUSxyZSxmZSxQZSxRZSxCZSl9KSxRLnNlZW4ucG9wKCksZnVuY3Rpb24oUWUs''@;'; put 'put ''bXQsS2Upe3JldHVybiBRZS5yZWR1Y2UoZnVuY3Rpb24oSWUsT2Upe3JldHVybiBPZS5pbmRleE9mKCJcbiIpLEllK09lLnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csIiIpLmxlbmd0aCsxfSwwKT42MD9LZVswXSsoIiI9PT1tdD8iIjptdCsiXG4gIikrIiAiK1FlLmpvaW4oIixcbiAgIikr''@;'; put 'put ''IiAiK0tlWzFdOktlWzBdK210KyIgIitRZS5qb2luKCIsICIpKyIgIitLZVsxXX0oTmUsTGUsSGUpKTpIZVswXStMZStIZVsxXX1mdW5jdGlvbiBxKFEpe3JldHVybiJbIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChRKSsiXSJ9ZnVuY3Rpb24gdGUoUSxyZSxmZSxtZSxrZSxUZSl7''@;'; put 'put ''dmFyIFBlLEZlLE5lO2lmKChOZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHJlLGtlKXx8e3ZhbHVlOnJlW2tlXX0pLmdldD9GZT1RLnN0eWxpemUoTmUuc2V0PyJbR2V0dGVyL1NldHRlcl0iOiJbR2V0dGVyXSIsInNwZWNpYWwiKTpOZS5zZXQmJihGZT1RLnN0eWxpemUoIltT''@;'; put 'put ''ZXR0ZXJdIiwic3BlY2lhbCIpKSx5KG1lLGtlKXx8KFBlPSJbIitrZSsiXSIpLEZlfHwoUS5zZWVuLmluZGV4T2YoTmUudmFsdWUpPDA/KEZlPWxlKGZlKT9VKFEsTmUudmFsdWUsbnVsbCk6VShRLE5lLnZhbHVlLGZlLTEpKS5pbmRleE9mKCJcbiIpPi0xJiYoRmU9VGU/RmUuc3BsaXQoIlxu''@;'; put 'put ''IikubWFwKGZ1bmN0aW9uKExlKXtyZXR1cm4iICAiK0xlfSkuam9pbigiXG4iKS5zbGljZSgyKToiXG4iK0ZlLnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihMZSl7cmV0dXJuIiAgICIrTGV9KS5qb2luKCJcbiIpKTpGZT1RLnN0eWxpemUoIltDaXJjdWxhcl0iLCJzcGVjaWFsIikpLGNlKFBl''@;'; put 'put ''KSl7aWYoVGUmJmtlLm1hdGNoKC9eXGQrJC8pKXJldHVybiBGZTsoUGU9SlNPTi5zdHJpbmdpZnkoIiIra2UpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhQZT1QZS5zbGljZSgxLC0xKSxQZT1RLnN0eWxpemUoUGUsIm5hbWUiKSk6KFBlPVBlLnJlcGxhY2UoLycv''@;'; put 'put ''ZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKS5yZXBsYWNlKC8oXiJ8IiQpL2csIiciKSxQZT1RLnN0eWxpemUoUGUsInN0cmluZyIpKX1yZXR1cm4gUGUrIjogIitGZX1mdW5jdGlvbiBuZShRKXtyZXR1cm4gQXJyYXkuaXNBcnJheShRKX1mdW5jdGlvbiBpZShRKXtyZXR1cm4iYm9vbGVh''@;'; put 'put ''biI9PXR5cGVvZiBRfWZ1bmN0aW9uIGxlKFEpe3JldHVybiBudWxsPT09UX1mdW5jdGlvbiBkZShRKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFF9ZnVuY3Rpb24gdWUoUSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBRfWZ1bmN0aW9uIGNlKFEpe3JldHVybiB2b2lkIDA9PT1RfWZ1bmN0aW9u''@;'; put 'put ''IFkoUSl7cmV0dXJuIGIoUSkmJiJbb2JqZWN0IFJlZ0V4cF0iPT09ZyhRKX1mdW5jdGlvbiBiKFEpe3JldHVybiJvYmplY3QiPT10eXBlb2YgUSYmbnVsbCE9PVF9ZnVuY3Rpb24geChRKXtyZXR1cm4gYihRKSYmIltvYmplY3QgRGF0ZV0iPT09ZyhRKX1mdW5jdGlvbiBOKFEpe3JldHVybiBi''@;'; put 'put ''KFEpJiYoIltvYmplY3QgRXJyb3JdIj09PWcoUSl8fFEgaW5zdGFuY2VvZiBFcnJvcil9ZnVuY3Rpb24gRihRKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUX1mdW5jdGlvbiBnKFEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUSl9ZnVuY3Rpb24gQyhRKXtyZXR1''@;'; put 'put ''cm4gUTwxMD8iMCIrUS50b1N0cmluZygxMCk6US50b1N0cmluZygxMCl9Qi5kZWJ1Z2xvZz1mdW5jdGlvbihRKXtpZihRPVEudG9VcHBlckNhc2UoKSwhRVtRXSlpZih6LnRlc3QoUSkpe3ZhciByZT1LLnBpZDtFW1FdPWZ1bmN0aW9uKCl7dmFyIGZlPUIuZm9ybWF0LmFwcGx5KEIsYXJndW1l''@;'; put 'put ''bnRzKTtKLmVycm9yKCIlcyAlZDogJXMiLFEscmUsZmUpfX1lbHNlIEVbUV09ZnVuY3Rpb24oKXt9O3JldHVybiBFW1FdfSxCLmluc3BlY3Q9VixWLmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0s''@;'; put 'put ''Z3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0sVi5zdHlsZXM9e3NwZWNpYWw6ImN5YW4iLG51bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxs''@;'; put 'put ''b3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoiYm9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxCLnR5cGVzPUwoNTk1NSksQi5pc0FycmF5PW5lLEIuaXNCb29sZWFuPWllLEIuaXNOdWxsPWxlLEIuaXNOdWxsT3JVbmRlZmluZWQ9ZnVuY3Rpb24oUSl7''@;'; put 'put ''cmV0dXJuIG51bGw9PVF9LEIuaXNOdW1iZXI9ZGUsQi5pc1N0cmluZz11ZSxCLmlzU3ltYm9sPWZ1bmN0aW9uKFEpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgUX0sQi5pc1VuZGVmaW5lZD1jZSxCLmlzUmVnRXhwPVksQi50eXBlcy5pc1JlZ0V4cD1ZLEIuaXNPYmplY3Q9YixCLmlzRGF0ZT14''@;'; put 'put ''LEIudHlwZXMuaXNEYXRlPXgsQi5pc0Vycm9yPU4sQi50eXBlcy5pc05hdGl2ZUVycm9yPU4sQi5pc0Z1bmN0aW9uPUYsQi5pc1ByaW1pdGl2ZT1mdW5jdGlvbihRKXtyZXR1cm4gbnVsbD09PVF8fCJib29sZWFuIj09dHlwZW9mIFF8fCJudW1iZXIiPT10eXBlb2YgUXx8InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBRfHwic3ltYm9sIj09dHlwZW9mIFF8fHZvaWQgMD09PVF9LEIuaXNCdWZmZXI9TCgzODQpO3ZhciBNPVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl07ZnVuY3Rpb24geShRLHJlKXtyZXR1cm4gT2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFEscmUpfUIubG9nPWZ1bmN0aW9uKCl7dmFyIFEscmU7Si5sb2coIiVzIC0gJXMiLChyZT1bQygoUT1uZXcgRGF0ZSkuZ2V0SG91cnMoKSksQyhRLmdldE1pbnV0ZXMoKSksQyhRLmdldFNlY29uZHMoKSldLmpvaW4oIjoiKSxbUS5n''@;'; put 'put ''ZXREYXRlKCksTVtRLmdldE1vbnRoKCldLHJlXS5qb2luKCIgIikpLEIuZm9ybWF0LmFwcGx5KEIsYXJndW1lbnRzKSl9LEIuaW5oZXJpdHM9TCg1NzE3KSxCLl9leHRlbmQ9ZnVuY3Rpb24oUSxyZSl7aWYoIXJlfHwhYihyZSkpcmV0dXJuIFE7Zm9yKHZhciBmZT1PYmplY3Qua2V5cyhyZSks''@;'; put 'put ''bWU9ZmUubGVuZ3RoO21lLS07KVFbZmVbbWVdXT1yZVtmZVttZV1dO3JldHVybiBRfTt2YXIgcD10eXBlb2YgU3ltYm9sPCJ1Ij9TeW1ib2woInV0aWwucHJvbWlzaWZ5LmN1c3RvbSIpOnZvaWQgMDtmdW5jdGlvbiBTKFEscmUpe2lmKCFRKXt2YXIgZmU9bmV3IEVycm9yKCJQcm9taXNlIHdh''@;'; put 'put ''cyByZWplY3RlZCB3aXRoIGEgZmFsc3kgdmFsdWUiKTtmZS5yZWFzb249USxRPWZlfXJldHVybiByZShRKX1CLnByb21pc2lmeT1mdW5jdGlvbihRKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgIm9yaWdpbmFsIiBhcmd1bWVudCBtdXN0IGJlIG9m''@;'; put 'put ''IHR5cGUgRnVuY3Rpb24nKTtpZihwJiZRW3BdKXt2YXIgcmU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mKHJlPVFbcF0pKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidXRpbC5wcm9taXNpZnkuY3VzdG9tIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtyZXR1cm4gT2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KHJlLHAse3ZhbHVlOnJlLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSkscmV9ZnVuY3Rpb24gcmUoKXtmb3IodmFyIGZlLG1lLGtlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKEZlLE5lKXtmZT1GZSxtZT1OZX0pLFRlPVtdLFBlPTA7UGU8''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDtQZSsrKVRlLnB1c2goYXJndW1lbnRzW1BlXSk7VGUucHVzaChmdW5jdGlvbihGZSxOZSl7RmU/bWUoRmUpOmZlKE5lKX0pO3RyeXtRLmFwcGx5KHRoaXMsVGUpfWNhdGNoKEZlKXttZShGZSl9cmV0dXJuIGtlfXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Yo''@;'; put 'put ''cmUsT2JqZWN0LmdldFByb3RvdHlwZU9mKFEpKSxwJiZPYmplY3QuZGVmaW5lUHJvcGVydHkocmUscCx7dmFsdWU6cmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZSxJKFEpKX0sQi5wcm9taXNpZnkuY3VzdG9t''@;'; put 'put ''PXAsQi5jYWxsYmFja2lmeT1mdW5jdGlvbihRKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgUSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgIm9yaWdpbmFsIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtmdW5jdGlvbiByZSgpe2Zvcih2YXIgZmU9W10sbWU9MDttZTxhcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoO21lKyspZmUucHVzaChhcmd1bWVudHNbbWVdKTt2YXIga2U9ZmUucG9wKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGtlKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbiIpO3ZhciBUZT10aGlzLFBlPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGtlLmFwcGx5KFRlLGFyZ3VtZW50cyl9O1EuYXBwbHkodGhpcyxmZSkudGhlbihmdW5jdGlvbihGZSl7Sy5uZXh0VGljayhQZS5iaW5kKG51bGwsbnVsbCxGZSkpfSxmdW5jdGlvbihGZSl7Sy5uZXh0VGljayhTLmJpbmQobnVsbCxGZSxQZSkpfSl9cmV0dXJuIE9i''@;'; put 'put ''amVjdC5zZXRQcm90b3R5cGVPZihyZSxPYmplY3QuZ2V0UHJvdG90eXBlT2YoUSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlLEkoUSkpLHJlfX0sNDgxOihILEIsTCk9PnshZnVuY3Rpb24oSyl7InVzZSBzdHJpY3QiO0suZXhwb3J0cy5pc191cmk9SSxLLmV4cG9ydHMuaXNfaHR0cF91''@;'; put 'put ''cmk9UixLLmV4cG9ydHMuaXNfaHR0cHNfdXJpPUUsSy5leHBvcnRzLmlzX3dlYl91cmk9eixLLmV4cG9ydHMuaXNVcmk9SSxLLmV4cG9ydHMuaXNIdHRwVXJpPVIsSy5leHBvcnRzLmlzSHR0cHNVcmk9RSxLLmV4cG9ydHMuaXNXZWJVcmk9ejt2YXIgSj1mdW5jdGlvbihqKXtyZXR1cm4gai5t''@;'; put 'put ''YXRjaCgvKD86KFteOlwvPyNdKyk6KT8oPzpcL1wvKFteXC8/I10qKSk/KFtePyNdKikoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8vKX07ZnVuY3Rpb24gSShqKXtpZihqJiYhL1teYS16MC05XDpcL1w/XCNcW1xdXEBcIVwkXCZcJ1woXClcKlwrXCxcO1w9XC5cLVxfXH5cJV0vaS50ZXN0KGop''@;'; put 'put ''JiYhLyVbXjAtOWEtZl0vaS50ZXN0KGopJiYhLyVbMC05YS1mXSg6P1teMC05YS1mXXwkKS9pLnRlc3Qoaikpe3ZhciBWLEcsVyxVLHEsdGU9IiIsbmU9IiI7aWYodGU9KFY9SihqKSlbMV0sRz1WWzJdLFc9VlszXSxVPVZbNF0scT1WWzVdLHRlJiZ0ZS5sZW5ndGgmJlcubGVuZ3RoPj0wKXtp''@;'; put 'put ''ZihHJiZHLmxlbmd0aCl7aWYoMCE9PVcubGVuZ3RoJiYhL15cLy8udGVzdChXKSlyZXR1cm59ZWxzZSBpZigvXlwvXC8vLnRlc3QoVykpcmV0dXJuO2lmKC9eW2Etel1bYS16MC05XCtcLVwuXSokLy50ZXN0KHRlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBuZSs9dGUrIjoiLEcmJkcubGVuZ3Ro''@;'; put 'put ''JiYobmUrPSIvLyIrRyksbmUrPVcsVSYmVS5sZW5ndGgmJihuZSs9Ij8iK1UpLHEmJnEubGVuZ3RoJiYobmUrPSIjIitxKSxuZX19fWZ1bmN0aW9uIFIoaixWKXtpZihJKGopKXt2YXIgRyxXLFUscSx0ZT0iIixuZT0iIixpZT0iIixsZT0iIjtpZih0ZT0oRz1KKGopKVsxXSxuZT1HWzJdLFc9''@;'; put 'put ''R1szXSxVPUdbNF0scT1HWzVdLHRlKXtpZihWKXtpZigiaHR0cHMiIT10ZS50b0xvd2VyQ2FzZSgpKXJldHVybn1lbHNlIGlmKCJodHRwIiE9dGUudG9Mb3dlckNhc2UoKSlyZXR1cm47aWYobmUpcmV0dXJuLzooXGQrKSQvLnRlc3QobmUpJiYoaWU9bmUubWF0Y2goLzooXGQrKSQvKVswXSxu''@;'; put 'put ''ZT1uZS5yZXBsYWNlKC86XGQrJC8sIiIpKSxsZSs9dGUrIjoiLGxlKz0iLy8iK25lLGllJiYobGUrPWllKSxsZSs9VyxVJiZVLmxlbmd0aCYmKGxlKz0iPyIrVSkscSYmcS5sZW5ndGgmJihsZSs9IiMiK3EpLGxlfX19ZnVuY3Rpb24gRShqKXtyZXR1cm4gUihqLCEwKX1mdW5jdGlvbiB6KGop''@;'; put 'put ''e3JldHVybiBSKGopfHxFKGopfX0oSD1MLm5tZChIKSl9LDY0MzA6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1MKDQwMjkpLEo9TCgzMDgzKSxJPUwoMTkyNCksUj1MKDcyOTYpLEU9SSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyIpLHo9TCg2NDEwKSgpLGo9dHlwZW9mIGdsb2Jh''@;'; put 'put ''bFRoaXM+InUiP0wuZzpnbG9iYWxUaGlzLFY9SigpLEc9SSgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLFc9e30sVT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7eiYmUiYmVSYmSyhWLGZ1bmN0aW9uKHRlKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygalt0ZV0pe3ZhciBuZT1uZXcgalt0ZV07aWYo''@;'; put 'put ''U3ltYm9sLnRvU3RyaW5nVGFnIGluIG5lKXt2YXIgaWU9VShuZSksbGU9UihpZSxTeW1ib2wudG9TdHJpbmdUYWcpO2lmKCFsZSl7dmFyIGRlPVUoaWUpO2xlPVIoZGUsU3ltYm9sLnRvU3RyaW5nVGFnKX1XW3RlXT1sZS5nZXR9fX0pO3ZhciBxPUwoNTY5Mik7SC5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KHRlKXtyZXR1cm4hIXEodGUpJiYoeiYmU3ltYm9sLnRvU3RyaW5nVGFnIGluIHRlPyhuZT10ZSxpZT0hMSxLKFcsZnVuY3Rpb24obGUsZGUpe2lmKCFpZSl0cnl7dmFyIHVlPWxlLmNhbGwobmUpO3VlPT09ZGUmJihpZT11ZSl9Y2F0Y2h7fX0pLGllKTpHKEUodGUpLDgsLTEpKTt2YXIgbmUs''@;'; put 'put ''aWV9fSwyNDc5Okg9PntILmV4cG9ydHM9ZnVuY3Rpb24gQihMLEspe2lmKEwmJkspcmV0dXJuIEIoTCkoSyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEwpdGhyb3cgbmV3IFR5cGVFcnJvcigibmVlZCB3cmFwcGVyIGZ1bmN0aW9uIik7cmV0dXJuIE9iamVjdC5rZXlzKEwpLmZvckVhY2goZnVu''@;'; put 'put ''Y3Rpb24oSSl7SltJXT1MW0ldfSksSjtmdW5jdGlvbiBKKCl7Zm9yKHZhciBJPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxSPTA7UjxJLmxlbmd0aDtSKyspSVtSXT1hcmd1bWVudHNbUl07dmFyIEU9TC5hcHBseSh0aGlzLEkpLHo9SVtJLmxlbmd0aC0xXTtyZXR1cm4iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgRSYmRSE9PXomJk9iamVjdC5rZXlzKHopLmZvckVhY2goZnVuY3Rpb24oail7RVtqXT16W2pdfSksRX19fSw5NTA6KCk9Pnt9LDY2MDE6KCk9Pnt9LDkyMTQ6KCk9Pnt9LDg2MjM6KCk9Pnt9LDc3NDg6KCk9Pnt9LDU1Njg6KCk9Pnt9LDI1MzU6KCk9Pnt9LDM3MTA6KCk9Pnt9''@;'; put 'put ''LDU0NDM6KCk9Pnt9LDQxMjk6KCk9Pnt9LDY2MTk6KCk9Pnt9LDcxMDg6KCk9Pnt9LDIzNjE6KCk9Pnt9LDQ2MTY6KCk9Pnt9LDcyMTc6KCk9Pnt9LDgzNzM6KCk9Pnt9LDMwODM6KEgsQixMKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSz1bIkJpZ0ludDY0QXJyYXkiLCJCaWdVaW50NjRBcnJheSIs''@;'; put 'put ''IkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiSW50OEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSJdLEo9dHlwZW9mIGdsb2JhbFRoaXM+InUiP0wuZzpnbG9iYWxU''@;'; put 'put ''aGlzO0guZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgST1bXSxSPTA7UjxLLmxlbmd0aDtSKyspImZ1bmN0aW9uIj09dHlwZW9mIEpbS1tSXV0mJihJW0kubGVuZ3RoXT1LW1JdKTtyZXR1cm4gSX19LDQ5NDY6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9SlNPTi5wYXJzZSgneyJhZXMt''@;'; put 'put ''MTI4LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtZWNiIjp7ImNp''@;'; put 'put ''cGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTI4LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItY2JjIjp7ImNpcGhlciI6IkFFUyIs''@;'; put 'put ''ImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxMjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2Ijox''@;'; put 'put ''NiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMxOTIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMyNTYiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUi''@;'; put 'put ''OiJibG9jayJ9LCJhZXMtMTI4LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9''@;'; put 'put ''LCJhZXMtMjU2LWNmYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0x''@;'; put 'put ''OTItY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWNm''@;'; put 'put ''YjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIxIjp7''@;'; put 'put ''ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLW9mYiI6eyJjaXBoZXIi''@;'; put 'put ''OiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LW9mYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiT0ZCIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJr''@;'; put 'put ''ZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWN0ciI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1Niwi''@;'; put 'put ''aXYiOjE2LCJtb2RlIjoiQ1RSIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTI4LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTE5Mi1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxMiwibW9k''@;'; put 'put ''ZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0yNTYtZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9fScpfSw1MjA3Okg9PnsidXNlIHN0cmljdCI7SC5leHBvcnRzPUpTT04ucGFyc2UoJ3sic2hhMjI0V2l0aFJTQUVu''@;'; put 'put ''Y3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjIn0sIlJTQS1TSEEyMjQiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IjMwMmQzMDBkMDYwOTYwODY0ODAxNjUw''@;'; put 'put ''MzA0MDIwNDA1MDAwNDFjIn0sInNoYTI1NldpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJSU0EtU0hBMjU2Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hh''@;'; put 'put ''MjU2IiwiaWQiOiIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCJ9LCJzaGEzODRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwiUlNBLVNIQTM4''@;'; put 'put ''NCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAifSwic2hhNTEyV2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0''@;'; put 'put ''ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEE1MTIiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwIn0sIlJTQS1TSEExIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMSIsImlkIjoi''@;'; put 'put ''MzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0In0sImVjZHNhLXdpdGgtU0hBMSI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sInNoYTI1NiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwic2hhMjI0Ijp7InNpZ24iOiJlY2RzYSIs''@;'; put 'put ''Imhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJzaGEzODQiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiIn0sInNoYTUxMiI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJp''@;'; put 'put ''ZCI6IiJ9LCJEU0EtU0hBMSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwiRFNBLVNIQTIy''@;'; put 'put ''NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1TSEEyNTYiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEz''@;'; put 'put ''ODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJEU0EtU0hBMzg0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwiRFNBLVNIQTUxMiI6''@;'; put 'put ''eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1SSVBFTUQxNjAiOnsic2lnbiI6ImRzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IiJ9LCJyaXBlbWQxNjBXaXRoUlNBIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0''@;'; put 'put ''MDMwMjAxMDUwMDA0MTQifSwiUlNBLVJJUEVNRDE2MCI6eyJzaWduIjoicnNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sIm1kNVdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAw''@;'; put 'put ''YzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifSwiUlNBLU1ENSI6eyJzaWduIjoicnNhIiwiaGFzaCI6Im1kNSIsImlkIjoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn19Jyl9LDEzMDg6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9SlNPTi5wYXJzZSgneyIx''@;'; put 'put ''LjMuMTMyLjAuMTAiOiJzZWNwMjU2azEiLCIxLjMuMTMyLjAuMzMiOiJwMjI0IiwiMS4yLjg0MC4xMDA0NS4zLjEuMSI6InAxOTIiLCIxLjIuODQwLjEwMDQ1LjMuMS43IjoicDI1NiIsIjEuMy4xMzIuMC4zNCI6InAzODQiLCIxLjMuMTMyLjAuMzUiOiJwNTIxIn0nKX0sMzIwODpIPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO0guZXhwb3J0cz1KU09OLnBhcnNlKCd7Ik9fUkRPTkxZIjowLCJPX1dST05MWSI6MSwiT19SRFdSIjoyLCJTX0lGTVQiOjYxNDQwLCJTX0lGUkVHIjozMjc2OCwiU19JRkRJUiI6MTYzODQsIlNfSUZDSFIiOjgxOTIsIlNfSUZCTEsiOjI0NTc2LCJTX0lGSUZPIjo0MDk2LCJT''@;'; put 'put ''X0lGTE5LIjo0MDk2MCwiU19JRlNPQ0siOjQ5MTUyLCJPX0NSRUFUIjo1MTIsIk9fRVhDTCI6MjA0OCwiT19OT0NUVFkiOjEzMTA3MiwiT19UUlVOQyI6MTAyNCwiT19BUFBFTkQiOjgsIk9fRElSRUNUT1JZIjoxMDQ4NTc2LCJPX05PRk9MTE9XIjoyNTYsIk9fU1lOQyI6MTI4LCJPX1NZTUxJ''@;'; put 'put ''TksiOjIwOTcxNTIsIk9fTk9OQkxPQ0siOjQsIlNfSVJXWFUiOjQ0OCwiU19JUlVTUiI6MjU2LCJTX0lXVVNSIjoxMjgsIlNfSVhVU1IiOjY0LCJTX0lSV1hHIjo1NiwiU19JUkdSUCI6MzIsIlNfSVdHUlAiOjE2LCJTX0lYR1JQIjo4LCJTX0lSV1hPIjo3LCJTX0lST1RIIjo0LCJTX0lXT1RI''@;'; put 'put ''IjoyLCJTX0lYT1RIIjoxLCJFMkJJRyI6NywiRUFDQ0VTIjoxMywiRUFERFJJTlVTRSI6NDgsIkVBRERSTk9UQVZBSUwiOjQ5LCJFQUZOT1NVUFBPUlQiOjQ3LCJFQUdBSU4iOjM1LCJFQUxSRUFEWSI6MzcsIkVCQURGIjo5LCJFQkFETVNHIjo5NCwiRUJVU1kiOjE2LCJFQ0FOQ0VMRUQiOjg5''@;'; put 'put ''LCJFQ0hJTEQiOjEwLCJFQ09OTkFCT1JURUQiOjUzLCJFQ09OTlJFRlVTRUQiOjYxLCJFQ09OTlJFU0VUIjo1NCwiRURFQURMSyI6MTEsIkVERVNUQUREUlJFUSI6MzksIkVET00iOjMzLCJFRFFVT1QiOjY5LCJFRVhJU1QiOjE3LCJFRkFVTFQiOjE0LCJFRkJJRyI6MjcsIkVIT1NUVU5SRUFD''@;'; put 'put ''SCI6NjUsIkVJRFJNIjo5MCwiRUlMU0VRIjo5MiwiRUlOUFJPR1JFU1MiOjM2LCJFSU5UUiI6NCwiRUlOVkFMIjoyMiwiRUlPIjo1LCJFSVNDT05OIjo1NiwiRUlTRElSIjoyMSwiRUxPT1AiOjYyLCJFTUZJTEUiOjI0LCJFTUxJTksiOjMxLCJFTVNHU0laRSI6NDAsIkVNVUxUSUhPUCI6OTUs''@;'; put 'put ''IkVOQU1FVE9PTE9ORyI6NjMsIkVORVRET1dOIjo1MCwiRU5FVFJFU0VUIjo1MiwiRU5FVFVOUkVBQ0giOjUxLCJFTkZJTEUiOjIzLCJFTk9CVUZTIjo1NSwiRU5PREFUQSI6OTYsIkVOT0RFViI6MTksIkVOT0VOVCI6MiwiRU5PRVhFQyI6OCwiRU5PTENLIjo3NywiRU5PTElOSyI6OTcsIkVO''@;'; put 'put ''T01FTSI6MTIsIkVOT01TRyI6OTEsIkVOT1BST1RPT1BUIjo0MiwiRU5PU1BDIjoyOCwiRU5PU1IiOjk4LCJFTk9TVFIiOjk5LCJFTk9TWVMiOjc4LCJFTk9UQ09OTiI6NTcsIkVOT1RESVIiOjIwLCJFTk9URU1QVFkiOjY2LCJFTk9UU09DSyI6MzgsIkVOT1RTVVAiOjQ1LCJFTk9UVFkiOjI1''@;'; put 'put ''LCJFTlhJTyI6NiwiRU9QTk9UU1VQUCI6MTAyLCJFT1ZFUkZMT1ciOjg0LCJFUEVSTSI6MSwiRVBJUEUiOjMyLCJFUFJPVE8iOjEwMCwiRVBST1RPTk9TVVBQT1JUIjo0MywiRVBST1RPVFlQRSI6NDEsIkVSQU5HRSI6MzQsIkVST0ZTIjozMCwiRVNQSVBFIjoyOSwiRVNSQ0giOjMsIkVTVEFM''@;'; put 'put ''RSI6NzAsIkVUSU1FIjoxMDEsIkVUSU1FRE9VVCI6NjAsIkVUWFRCU1kiOjI2LCJFV09VTERCTE9DSyI6MzUsIkVYREVWIjoxOCwiU0lHSFVQIjoxLCJTSUdJTlQiOjIsIlNJR1FVSVQiOjMsIlNJR0lMTCI6NCwiU0lHVFJBUCI6NSwiU0lHQUJSVCI6NiwiU0lHSU9UIjo2LCJTSUdCVVMiOjEw''@;'; put 'put ''LCJTSUdGUEUiOjgsIlNJR0tJTEwiOjksIlNJR1VTUjEiOjMwLCJTSUdTRUdWIjoxMSwiU0lHVVNSMiI6MzEsIlNJR1BJUEUiOjEzLCJTSUdBTFJNIjoxNCwiU0lHVEVSTSI6MTUsIlNJR0NITEQiOjIwLCJTSUdDT05UIjoxOSwiU0lHU1RPUCI6MTcsIlNJR1RTVFAiOjE4LCJTSUdUVElOIjoy''@;'; put 'put ''MSwiU0lHVFRPVSI6MjIsIlNJR1VSRyI6MTYsIlNJR1hDUFUiOjI0LCJTSUdYRlNaIjoyNSwiU0lHVlRBTFJNIjoyNiwiU0lHUFJPRiI6MjcsIlNJR1dJTkNIIjoyOCwiU0lHSU8iOjIzLCJTSUdTWVMiOjEyLCJTU0xfT1BfQUxMIjoyMTQ3NDg2NzE5LCJTU0xfT1BfQUxMT1dfVU5TQUZFX0xF''@;'; put 'put ''R0FDWV9SRU5FR09USUFUSU9OIjoyNjIxNDQsIlNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiOjQxOTQzMDQsIlNTTF9PUF9DSVNDT19BTllDT05ORUNUIjozMjc2OCwiU1NMX09QX0NPT0tJRV9FWENIQU5HRSI6ODE5MiwiU1NMX09QX0NSWVBUT1BST19UTFNFWFRfQlVHIjoyMTQ3''@;'; put 'put ''NDgzNjQ4LCJTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTIjoyMDQ4LCJTU0xfT1BfRVBIRU1FUkFMX1JTQSI6MCwiU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVCI6NCwiU1NMX09QX01JQ1JPU09GVF9CSUdfU1NMVjNfQlVGRkVSIjozMiwiU1NMX09QX01JQ1JPU09GVF9T''@;'; put 'put ''RVNTX0lEX0JVRyI6MSwiU1NMX09QX01TSUVfU1NMVjJfUlNBX1BBRERJTkciOjAsIlNTTF9PUF9ORVRTQ0FQRV9DQV9ETl9CVUciOjUzNjg3MDkxMiwiU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUciOjIsIlNTTF9PUF9ORVRTQ0FQRV9ERU1PX0NJUEhFUl9DSEFOR0VfQlVHIjoxMDcz''@;'; put 'put ''NzQxODI0LCJTU0xfT1BfTkVUU0NBUEVfUkVVU0VfQ0lQSEVSX0NIQU5HRV9CVUciOjgsIlNTTF9PUF9OT19DT01QUkVTU0lPTiI6MTMxMDcyLCJTU0xfT1BfTk9fUVVFUllfTVRVIjo0MDk2LCJTU0xfT1BfTk9fU0VTU0lPTl9SRVNVTVBUSU9OX09OX1JFTkVHT1RJQVRJT04iOjY1NTM2LCJT''@;'; put 'put ''U0xfT1BfTk9fU1NMdjIiOjE2Nzc3MjE2LCJTU0xfT1BfTk9fU1NMdjMiOjMzNTU0NDMyLCJTU0xfT1BfTk9fVElDS0VUIjoxNjM4NCwiU1NMX09QX05PX1RMU3YxIjo2NzEwODg2NCwiU1NMX09QX05PX1RMU3YxXzEiOjI2ODQzNTQ1NiwiU1NMX09QX05PX1RMU3YxXzIiOjEzNDIxNzcyOCwi''@;'; put 'put ''U1NMX09QX1BLQ1MxX0NIRUNLXzEiOjAsIlNTTF9PUF9QS0NTMV9DSEVDS18yIjowLCJTU0xfT1BfU0lOR0xFX0RIX1VTRSI6MTA0ODU3NiwiU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSI6NTI0Mjg4LCJTU0xfT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVHIjoxMjgsIlNTTF9PUF9TU0xSRUYy''@;'; put 'put ''X1JFVVNFX0NFUlRfVFlQRV9CVUciOjAsIlNTTF9PUF9UTFNfQkxPQ0tfUEFERElOR19CVUciOjUxMiwiU1NMX09QX1RMU19ENV9CVUciOjI1NiwiU1NMX09QX1RMU19ST0xMQkFDS19CVUciOjgzODg2MDgsIkVOR0lORV9NRVRIT0RfRFNBIjoyLCJFTkdJTkVfTUVUSE9EX0RIIjo0LCJFTkdJ''@;'; put 'put ''TkVfTUVUSE9EX1JBTkQiOjgsIkVOR0lORV9NRVRIT0RfRUNESCI6MTYsIkVOR0lORV9NRVRIT0RfRUNEU0EiOjMyLCJFTkdJTkVfTUVUSE9EX0NJUEhFUlMiOjY0LCJFTkdJTkVfTUVUSE9EX0RJR0VTVFMiOjEyOCwiRU5HSU5FX01FVEhPRF9TVE9SRSI6MjU2LCJFTkdJTkVfTUVUSE9EX1BL''@;'; put 'put ''RVlfTUVUSFMiOjUxMiwiRU5HSU5FX01FVEhPRF9QS0VZX0FTTjFfTUVUSFMiOjEwMjQsIkVOR0lORV9NRVRIT0RfQUxMIjo2NTUzNSwiRU5HSU5FX01FVEhPRF9OT05FIjowLCJESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FIjoyLCJESF9DSEVDS19QX05PVF9QUklNRSI6MSwiREhfVU5BQkxF''@;'; put 'put ''X1RPX0NIRUNLX0dFTkVSQVRPUiI6NCwiREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUiI6OCwiTlBOX0VOQUJMRUQiOjEsIlJTQV9QS0NTMV9QQURESU5HIjoxLCJSU0FfU1NMVjIzX1BBRERJTkciOjIsIlJTQV9OT19QQURESU5HIjozLCJSU0FfUEtDUzFfT0FFUF9QQURESU5HIjo0LCJSU0Ff''@;'; put 'put ''WDkzMV9QQURESU5HIjo1LCJSU0FfUEtDUzFfUFNTX1BBRERJTkciOjYsIlBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRCI6MiwiUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQiOjQsIlBPSU5UX0NPTlZFUlNJT05fSFlCUklEIjo2LCJGX09LIjowLCJSX09LIjo0LCJXX09LIjoyLCJY''@;'; put 'put ''X09LIjoxLCJVVl9VRFBfUkVVU0VBRERSIjo0fScpfSw5Nzk5Okg9PnsidXNlIHN0cmljdCI7SC5leHBvcnRzPUpTT04ucGFyc2UoJ3sibW9kcDEiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2''@;'; put 'put ''N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMiI6eyJnZW4iOiIwMiIsInByaW1lIjoi''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0''@;'; put 'put ''MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwNSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4Yjgw''@;'; put 'put ''ZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZh''@;'; put 'put ''NWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZmZmIn0sIm1vZHAxNCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZk''@;'; put 'put ''ZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRj''@;'; put 'put ''ZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5''@;'; put 'put ''OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2OGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE1Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJl''@;'; put 'put ''YTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNl''@;'; put 'put ''NDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAz''@;'; put 'put ''OWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcw''@;'; put 'put ''Zjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2Uw''@;'; put 'put ''ZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE2Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0''@;'; put 'put ''ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThk''@;'; put 'put ''YTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYw''@;'; put 'put ''NmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkz''@;'; put 'put ''M2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFh''@;'; put 'put ''NzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3''@;'; put 'put ''MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNyI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2''@;'; put 'put ''OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2Vk''@;'; put 'put ''ZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2''@;'; put 'put ''YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRm''@;'; put 'put ''MWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2''@;'; put 'put ''Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThl''@;'; put 'put ''ZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRk''@;'; put 'put ''MjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2Fm''@;'; put 'put ''NDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4''@;'; put 'put ''ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFl''@;'; put 'put ''NmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxOCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNh''@;'; put 'put ''NDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2''@;'; put 'put ''OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNi''@;'; put 'put ''ZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEy''@;'; put 'put ''NTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3''@;'; put 'put ''ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJk''@;'; put 'put ''ZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkw''@;'; put 'put ''MjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4''@;'; put 'put ''MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5''@;'; put 'put ''Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4''@;'; put 'put ''YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3''@;'; put 'put ''ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAw''@;'; put 'put ''OTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmYifX0nKX0sODU5NzpIPT57InVzZSBzdHJpY3QiO0guZXhwb3J0cz17''@;'; put 'put ''aTg6IjYuNS40In19LDI1NjI6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9SlNPTi5wYXJzZSgneyIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xIjoiYWVzLTEyOC1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yIjoiYWVzLTEyOC1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zIjoiYWVz''@;'; put 'put ''LTEyOC1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40IjoiYWVzLTEyOC1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMSI6ImFlcy0xOTItZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjIiOiJhZXMtMTkyLWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIzIjoiYWVzLTE5Mi1v''@;'; put 'put ''ZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNCI6ImFlcy0xOTItY2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDEiOiJhZXMtMjU2LWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQyIjoiYWVzLTI1Ni1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MyI6ImFlcy0yNTYtb2ZiIiwi''@;'; put 'put ''Mi4xNi44NDAuMS4xMDEuMy40LjEuNDQiOiJhZXMtMjU2LWNmYiJ9Jyl9LDM3MDQ6SD0+eyJ1c2Ugc3RyaWN0IjtILmV4cG9ydHM9SlNPTi5wYXJzZSgnWyJhYyIsImNvbS5hYyIsImVkdS5hYyIsImdvdi5hYyIsIm5ldC5hYyIsIm1pbC5hYyIsIm9yZy5hYyIsImFkIiwibm9tLmFkIiwiYWUi''@;'; put 'put ''LCJjby5hZSIsIm5ldC5hZSIsIm9yZy5hZSIsInNjaC5hZSIsImFjLmFlIiwiZ292LmFlIiwibWlsLmFlIiwiYWVybyIsImFjY2lkZW50LWludmVzdGlnYXRpb24uYWVybyIsImFjY2lkZW50LXByZXZlbnRpb24uYWVybyIsImFlcm9iYXRpYy5hZXJvIiwiYWVyb2NsdWIuYWVybyIsImFlcm9k''@;'; put 'put ''cm9tZS5hZXJvIiwiYWdlbnRzLmFlcm8iLCJhaXJjcmFmdC5hZXJvIiwiYWlybGluZS5hZXJvIiwiYWlycG9ydC5hZXJvIiwiYWlyLXN1cnZlaWxsYW5jZS5hZXJvIiwiYWlydHJhZmZpYy5hZXJvIiwiYWlyLXRyYWZmaWMtY29udHJvbC5hZXJvIiwiYW1idWxhbmNlLmFlcm8iLCJhbXVzZW1l''@;'; put 'put ''bnQuYWVybyIsImFzc29jaWF0aW9uLmFlcm8iLCJhdXRob3IuYWVybyIsImJhbGxvb25pbmcuYWVybyIsImJyb2tlci5hZXJvIiwiY2FhLmFlcm8iLCJjYXJnby5hZXJvIiwiY2F0ZXJpbmcuYWVybyIsImNlcnRpZmljYXRpb24uYWVybyIsImNoYW1waW9uc2hpcC5hZXJvIiwiY2hhcnRlci5h''@;'; put 'put ''ZXJvIiwiY2l2aWxhdmlhdGlvbi5hZXJvIiwiY2x1Yi5hZXJvIiwiY29uZmVyZW5jZS5hZXJvIiwiY29uc3VsdGFudC5hZXJvIiwiY29uc3VsdGluZy5hZXJvIiwiY29udHJvbC5hZXJvIiwiY291bmNpbC5hZXJvIiwiY3Jldy5hZXJvIiwiZGVzaWduLmFlcm8iLCJkZ2NhLmFlcm8iLCJlZHVj''@;'; put 'put ''YXRvci5hZXJvIiwiZW1lcmdlbmN5LmFlcm8iLCJlbmdpbmUuYWVybyIsImVuZ2luZWVyLmFlcm8iLCJlbnRlcnRhaW5tZW50LmFlcm8iLCJlcXVpcG1lbnQuYWVybyIsImV4Y2hhbmdlLmFlcm8iLCJleHByZXNzLmFlcm8iLCJmZWRlcmF0aW9uLmFlcm8iLCJmbGlnaHQuYWVybyIsImZ1ZWwu''@;'; put 'put ''YWVybyIsImdsaWRpbmcuYWVybyIsImdvdmVybm1lbnQuYWVybyIsImdyb3VuZGhhbmRsaW5nLmFlcm8iLCJncm91cC5hZXJvIiwiaGFuZ2dsaWRpbmcuYWVybyIsImhvbWVidWlsdC5hZXJvIiwiaW5zdXJhbmNlLmFlcm8iLCJqb3VybmFsLmFlcm8iLCJqb3VybmFsaXN0LmFlcm8iLCJsZWFz''@;'; put 'put ''aW5nLmFlcm8iLCJsb2dpc3RpY3MuYWVybyIsIm1hZ2F6aW5lLmFlcm8iLCJtYWludGVuYW5jZS5hZXJvIiwibWVkaWEuYWVybyIsIm1pY3JvbGlnaHQuYWVybyIsIm1vZGVsbGluZy5hZXJvIiwibmF2aWdhdGlvbi5hZXJvIiwicGFyYWNodXRpbmcuYWVybyIsInBhcmFnbGlkaW5nLmFlcm8i''@;'; put 'put ''LCJwYXNzZW5nZXItYXNzb2NpYXRpb24uYWVybyIsInBpbG90LmFlcm8iLCJwcmVzcy5hZXJvIiwicHJvZHVjdGlvbi5hZXJvIiwicmVjcmVhdGlvbi5hZXJvIiwicmVwYm9keS5hZXJvIiwicmVzLmFlcm8iLCJyZXNlYXJjaC5hZXJvIiwicm90b3JjcmFmdC5hZXJvIiwic2FmZXR5LmFlcm8i''@;'; put 'put ''LCJzY2llbnRpc3QuYWVybyIsInNlcnZpY2VzLmFlcm8iLCJzaG93LmFlcm8iLCJza3lkaXZpbmcuYWVybyIsInNvZnR3YXJlLmFlcm8iLCJzdHVkZW50LmFlcm8iLCJ0cmFkZXIuYWVybyIsInRyYWRpbmcuYWVybyIsInRyYWluZXIuYWVybyIsInVuaW9uLmFlcm8iLCJ3b3JraW5nZ3JvdXAu''@;'; put 'put ''YWVybyIsIndvcmtzLmFlcm8iLCJhZiIsImdvdi5hZiIsImNvbS5hZiIsIm9yZy5hZiIsIm5ldC5hZiIsImVkdS5hZiIsImFnIiwiY29tLmFnIiwib3JnLmFnIiwibmV0LmFnIiwiY28uYWciLCJub20uYWciLCJhaSIsIm9mZi5haSIsImNvbS5haSIsIm5ldC5haSIsIm9yZy5haSIsImFsIiwi''@;'; put 'put ''Y29tLmFsIiwiZWR1LmFsIiwiZ292LmFsIiwibWlsLmFsIiwibmV0LmFsIiwib3JnLmFsIiwiYW0iLCJjby5hbSIsImNvbS5hbSIsImNvbW11bmUuYW0iLCJuZXQuYW0iLCJvcmcuYW0iLCJhbyIsImVkLmFvIiwiZ3YuYW8iLCJvZy5hbyIsImNvLmFvIiwicGIuYW8iLCJpdC5hbyIsImFxIiwi''@;'; put 'put ''YXIiLCJiZXQuYXIiLCJjb20uYXIiLCJjb29wLmFyIiwiZWR1LmFyIiwiZ29iLmFyIiwiZ292LmFyIiwiaW50LmFyIiwibWlsLmFyIiwibXVzaWNhLmFyIiwibXV0dWFsLmFyIiwibmV0LmFyIiwib3JnLmFyIiwic2VuYXNhLmFyIiwidHVyLmFyIiwiYXJwYSIsImUxNjQuYXJwYSIsImluLWFk''@;'; put 'put ''ZHIuYXJwYSIsImlwNi5hcnBhIiwiaXJpcy5hcnBhIiwidXJpLmFycGEiLCJ1cm4uYXJwYSIsImFzIiwiZ292LmFzIiwiYXNpYSIsImF0IiwiYWMuYXQiLCJjby5hdCIsImd2LmF0Iiwib3IuYXQiLCJzdGguYWMuYXQiLCJhdSIsImNvbS5hdSIsIm5ldC5hdSIsIm9yZy5hdSIsImVkdS5hdSIs''@;'; put 'put ''Imdvdi5hdSIsImFzbi5hdSIsImlkLmF1IiwiaW5mby5hdSIsImNvbmYuYXUiLCJvei5hdSIsImFjdC5hdSIsIm5zdy5hdSIsIm50LmF1IiwicWxkLmF1Iiwic2EuYXUiLCJ0YXMuYXUiLCJ2aWMuYXUiLCJ3YS5hdSIsImFjdC5lZHUuYXUiLCJjYXRob2xpYy5lZHUuYXUiLCJuc3cuZWR1LmF1''@;'; put 'put ''IiwibnQuZWR1LmF1IiwicWxkLmVkdS5hdSIsInNhLmVkdS5hdSIsInRhcy5lZHUuYXUiLCJ2aWMuZWR1LmF1Iiwid2EuZWR1LmF1IiwicWxkLmdvdi5hdSIsInNhLmdvdi5hdSIsInRhcy5nb3YuYXUiLCJ2aWMuZ292LmF1Iiwid2EuZ292LmF1Iiwic2Nob29scy5uc3cuZWR1LmF1IiwiYXci''@;'; put 'put ''LCJjb20uYXciLCJheCIsImF6IiwiY29tLmF6IiwibmV0LmF6IiwiaW50LmF6IiwiZ292LmF6Iiwib3JnLmF6IiwiZWR1LmF6IiwiaW5mby5heiIsInBwLmF6IiwibWlsLmF6IiwibmFtZS5heiIsInByby5heiIsImJpei5heiIsImJhIiwiY29tLmJhIiwiZWR1LmJhIiwiZ292LmJhIiwibWls''@;'; put 'put ''LmJhIiwibmV0LmJhIiwib3JnLmJhIiwiYmIiLCJiaXouYmIiLCJjby5iYiIsImNvbS5iYiIsImVkdS5iYiIsImdvdi5iYiIsImluZm8uYmIiLCJuZXQuYmIiLCJvcmcuYmIiLCJzdG9yZS5iYiIsInR2LmJiIiwiKi5iZCIsImJlIiwiYWMuYmUiLCJiZiIsImdvdi5iZiIsImJnIiwiYS5iZyIs''@;'; put 'put ''ImIuYmciLCJjLmJnIiwiZC5iZyIsImUuYmciLCJmLmJnIiwiZy5iZyIsImguYmciLCJpLmJnIiwiai5iZyIsImsuYmciLCJsLmJnIiwibS5iZyIsIm4uYmciLCJvLmJnIiwicC5iZyIsInEuYmciLCJyLmJnIiwicy5iZyIsInQuYmciLCJ1LmJnIiwidi5iZyIsIncuYmciLCJ4LmJnIiwieS5i''@;'; put 'put ''ZyIsInouYmciLCIwLmJnIiwiMS5iZyIsIjIuYmciLCIzLmJnIiwiNC5iZyIsIjUuYmciLCI2LmJnIiwiNy5iZyIsIjguYmciLCI5LmJnIiwiYmgiLCJjb20uYmgiLCJlZHUuYmgiLCJuZXQuYmgiLCJvcmcuYmgiLCJnb3YuYmgiLCJiaSIsImNvLmJpIiwiY29tLmJpIiwiZWR1LmJpIiwib3Iu''@;'; put 'put ''YmkiLCJvcmcuYmkiLCJiaXoiLCJiaiIsImFzc28uYmoiLCJiYXJyZWF1LmJqIiwiZ291di5iaiIsImJtIiwiY29tLmJtIiwiZWR1LmJtIiwiZ292LmJtIiwibmV0LmJtIiwib3JnLmJtIiwiYm4iLCJjb20uYm4iLCJlZHUuYm4iLCJnb3YuYm4iLCJuZXQuYm4iLCJvcmcuYm4iLCJibyIsImNv''@;'; put 'put ''bS5ibyIsImVkdS5ibyIsImdvYi5ibyIsImludC5ibyIsIm9yZy5ibyIsIm5ldC5ibyIsIm1pbC5ibyIsInR2LmJvIiwid2ViLmJvIiwiYWNhZGVtaWEuYm8iLCJhZ3JvLmJvIiwiYXJ0ZS5ibyIsImJsb2cuYm8iLCJib2xpdmlhLmJvIiwiY2llbmNpYS5ibyIsImNvb3BlcmF0aXZhLmJvIiwi''@;'; put 'put ''ZGVtb2NyYWNpYS5ibyIsImRlcG9ydGUuYm8iLCJlY29sb2dpYS5ibyIsImVjb25vbWlhLmJvIiwiZW1wcmVzYS5ibyIsImluZGlnZW5hLmJvIiwiaW5kdXN0cmlhLmJvIiwiaW5mby5ibyIsIm1lZGljaW5hLmJvIiwibW92aW1pZW50by5ibyIsIm11c2ljYS5ibyIsIm5hdHVyYWwuYm8iLCJu''@;'; put 'put ''b21icmUuYm8iLCJub3RpY2lhcy5ibyIsInBhdHJpYS5ibyIsInBvbGl0aWNhLmJvIiwicHJvZmVzaW9uYWwuYm8iLCJwbHVyaW5hY2lvbmFsLmJvIiwicHVlYmxvLmJvIiwicmV2aXN0YS5ibyIsInNhbHVkLmJvIiwidGVjbm9sb2dpYS5ibyIsInRrc2F0LmJvIiwidHJhbnNwb3J0ZS5ibyIs''@;'; put 'put ''Indpa2kuYm8iLCJiciIsIjlndWFjdS5iciIsImFiYy5iciIsImFkbS5iciIsImFkdi5iciIsImFnci5iciIsImFqdS5iciIsImFtLmJyIiwiYW5hbmkuYnIiLCJhcGFyZWNpZGEuYnIiLCJhcHAuYnIiLCJhcnEuYnIiLCJhcnQuYnIiLCJhdG8uYnIiLCJiLmJyIiwiYmFydWVyaS5iciIsImJl''@;'; put 'put ''bGVtLmJyIiwiYmh6LmJyIiwiYmliLmJyIiwiYmlvLmJyIiwiYmxvZy5iciIsImJtZC5iciIsImJvYXZpc3RhLmJyIiwiYnNiLmJyIiwiY2FtcGluYWdyYW5kZS5iciIsImNhbXBpbmFzLmJyIiwiY2F4aWFzLmJyIiwiY2ltLmJyIiwiY25nLmJyIiwiY250LmJyIiwiY29tLmJyIiwiY29udGFn''@;'; put 'put ''ZW0uYnIiLCJjb29wLmJyIiwiY296LmJyIiwiY3JpLmJyIiwiY3VpYWJhLmJyIiwiY3VyaXRpYmEuYnIiLCJkZWYuYnIiLCJkZXMuYnIiLCJkZXQuYnIiLCJkZXYuYnIiLCJlY24uYnIiLCJlY28uYnIiLCJlZHUuYnIiLCJlbXAuYnIiLCJlbmYuYnIiLCJlbmcuYnIiLCJlc3AuYnIiLCJldGMu''@;'; put 'put ''YnIiLCJldGkuYnIiLCJmYXIuYnIiLCJmZWlyYS5iciIsImZsb2cuYnIiLCJmbG9yaXBhLmJyIiwiZm0uYnIiLCJmbmQuYnIiLCJmb3J0YWwuYnIiLCJmb3QuYnIiLCJmb3ouYnIiLCJmc3QuYnIiLCJnMTIuYnIiLCJnZW8uYnIiLCJnZ2YuYnIiLCJnb2lhbmlhLmJyIiwiZ292LmJyIiwiYWMu''@;'; put 'put ''Z292LmJyIiwiYWwuZ292LmJyIiwiYW0uZ292LmJyIiwiYXAuZ292LmJyIiwiYmEuZ292LmJyIiwiY2UuZ292LmJyIiwiZGYuZ292LmJyIiwiZXMuZ292LmJyIiwiZ28uZ292LmJyIiwibWEuZ292LmJyIiwibWcuZ292LmJyIiwibXMuZ292LmJyIiwibXQuZ292LmJyIiwicGEuZ292LmJyIiwi''@;'; put 'put ''cGIuZ292LmJyIiwicGUuZ292LmJyIiwicGkuZ292LmJyIiwicHIuZ292LmJyIiwicmouZ292LmJyIiwicm4uZ292LmJyIiwicm8uZ292LmJyIiwicnIuZ292LmJyIiwicnMuZ292LmJyIiwic2MuZ292LmJyIiwic2UuZ292LmJyIiwic3AuZ292LmJyIiwidG8uZ292LmJyIiwiZ3J1LmJyIiwi''@;'; put 'put ''aW1iLmJyIiwiaW5kLmJyIiwiaW5mLmJyIiwiamFiLmJyIiwiamFtcGEuYnIiLCJqZGYuYnIiLCJqb2ludmlsbGUuYnIiLCJqb3IuYnIiLCJqdXMuYnIiLCJsZWcuYnIiLCJsZWwuYnIiLCJsb2cuYnIiLCJsb25kcmluYS5iciIsIm1hY2FwYS5iciIsIm1hY2Vpby5iciIsIm1hbmF1cy5iciIs''@;'; put 'put ''Im1hcmluZ2EuYnIiLCJtYXQuYnIiLCJtZWQuYnIiLCJtaWwuYnIiLCJtb3JlbmEuYnIiLCJtcC5iciIsIm11cy5iciIsIm5hdGFsLmJyIiwibmV0LmJyIiwibml0ZXJvaS5iciIsIioubm9tLmJyIiwibm90LmJyIiwibnRyLmJyIiwib2RvLmJyIiwib25nLmJyIiwib3JnLmJyIiwib3Nhc2Nv''@;'; put 'put ''LmJyIiwicGFsbWFzLmJyIiwicG9hLmJyIiwicHBnLmJyIiwicHJvLmJyIiwicHNjLmJyIiwicHNpLmJyIiwicHZoLmJyIiwicXNsLmJyIiwicmFkaW8uYnIiLCJyZWMuYnIiLCJyZWNpZmUuYnIiLCJyZXAuYnIiLCJyaWJlaXJhby5iciIsInJpby5iciIsInJpb2JyYW5jby5iciIsInJpb3By''@;'; put 'put ''ZXRvLmJyIiwic2FsdmFkb3IuYnIiLCJzYW1wYS5iciIsInNhbnRhbWFyaWEuYnIiLCJzYW50b2FuZHJlLmJyIiwic2FvYmVybmFyZG8uYnIiLCJzYW9nb25jYS5iciIsInNlZy5iciIsInNqYy5iciIsInNsZy5iciIsInNsei5iciIsInNvcm9jYWJhLmJyIiwic3J2LmJyIiwidGF4aS5iciIs''@;'; put 'put ''InRjLmJyIiwidGVjLmJyIiwidGVvLmJyIiwidGhlLmJyIiwidG1wLmJyIiwidHJkLmJyIiwidHVyLmJyIiwidHYuYnIiLCJ1ZGkuYnIiLCJ2ZXQuYnIiLCJ2aXguYnIiLCJ2bG9nLmJyIiwid2lraS5iciIsInpsZy5iciIsImJzIiwiY29tLmJzIiwibmV0LmJzIiwib3JnLmJzIiwiZWR1LmJz''@;'; put 'put ''IiwiZ292LmJzIiwiYnQiLCJjb20uYnQiLCJlZHUuYnQiLCJnb3YuYnQiLCJuZXQuYnQiLCJvcmcuYnQiLCJidiIsImJ3IiwiY28uYnciLCJvcmcuYnciLCJieSIsImdvdi5ieSIsIm1pbC5ieSIsImNvbS5ieSIsIm9mLmJ5IiwiYnoiLCJjb20uYnoiLCJuZXQuYnoiLCJvcmcuYnoiLCJlZHUu''@;'; put 'put ''YnoiLCJnb3YuYnoiLCJjYSIsImFiLmNhIiwiYmMuY2EiLCJtYi5jYSIsIm5iLmNhIiwibmYuY2EiLCJubC5jYSIsIm5zLmNhIiwibnQuY2EiLCJudS5jYSIsIm9uLmNhIiwicGUuY2EiLCJxYy5jYSIsInNrLmNhIiwieWsuY2EiLCJnYy5jYSIsImNhdCIsImNjIiwiY2QiLCJnb3YuY2QiLCJj''@;'; put 'put ''ZiIsImNnIiwiY2giLCJjaSIsIm9yZy5jaSIsIm9yLmNpIiwiY29tLmNpIiwiY28uY2kiLCJlZHUuY2kiLCJlZC5jaSIsImFjLmNpIiwibmV0LmNpIiwiZ28uY2kiLCJhc3NvLmNpIiwiYVx4ZTlyb3BvcnQuY2kiLCJpbnQuY2kiLCJwcmVzc2UuY2kiLCJtZC5jaSIsImdvdXYuY2kiLCIqLmNr''@;'; put 'put ''IiwiIXd3dy5jayIsImNsIiwiY28uY2wiLCJnb2IuY2wiLCJnb3YuY2wiLCJtaWwuY2wiLCJjbSIsImNvLmNtIiwiY29tLmNtIiwiZ292LmNtIiwibmV0LmNtIiwiY24iLCJhYy5jbiIsImNvbS5jbiIsImVkdS5jbiIsImdvdi5jbiIsIm5ldC5jbiIsIm9yZy5jbiIsIm1pbC5jbiIsIlx1NTE2''@;'; put 'put ''Y1x1NTNmOC5jbiIsIlx1N2Y1MVx1N2VkYy5jbiIsIlx1N2RiMlx1N2Q2MS5jbiIsImFoLmNuIiwiYmouY24iLCJjcS5jbiIsImZqLmNuIiwiZ2QuY24iLCJncy5jbiIsImd6LmNuIiwiZ3guY24iLCJoYS5jbiIsImhiLmNuIiwiaGUuY24iLCJoaS5jbiIsImhsLmNuIiwiaG4uY24iLCJqbC5j''@;'; put 'put ''biIsImpzLmNuIiwianguY24iLCJsbi5jbiIsIm5tLmNuIiwibnguY24iLCJxaC5jbiIsInNjLmNuIiwic2QuY24iLCJzaC5jbiIsInNuLmNuIiwic3guY24iLCJ0ai5jbiIsInhqLmNuIiwieHouY24iLCJ5bi5jbiIsInpqLmNuIiwiaGsuY24iLCJtby5jbiIsInR3LmNuIiwiY28iLCJhcnRz''@;'; put 'put ''LmNvIiwiY29tLmNvIiwiZWR1LmNvIiwiZmlybS5jbyIsImdvdi5jbyIsImluZm8uY28iLCJpbnQuY28iLCJtaWwuY28iLCJuZXQuY28iLCJub20uY28iLCJvcmcuY28iLCJyZWMuY28iLCJ3ZWIuY28iLCJjb20iLCJjb29wIiwiY3IiLCJhYy5jciIsImNvLmNyIiwiZWQuY3IiLCJmaS5jciIs''@;'; put 'put ''ImdvLmNyIiwib3IuY3IiLCJzYS5jciIsImN1IiwiY29tLmN1IiwiZWR1LmN1Iiwib3JnLmN1IiwibmV0LmN1IiwiZ292LmN1IiwiaW5mLmN1IiwiY3YiLCJjb20uY3YiLCJlZHUuY3YiLCJpbnQuY3YiLCJub21lLmN2Iiwib3JnLmN2IiwiY3ciLCJjb20uY3ciLCJlZHUuY3ciLCJuZXQuY3ci''@;'; put 'put ''LCJvcmcuY3ciLCJjeCIsImdvdi5jeCIsImN5IiwiYWMuY3kiLCJiaXouY3kiLCJjb20uY3kiLCJla2xvZ2VzLmN5IiwiZ292LmN5IiwibHRkLmN5IiwibWlsLmN5IiwibmV0LmN5Iiwib3JnLmN5IiwicHJlc3MuY3kiLCJwcm8uY3kiLCJ0bS5jeSIsImN6IiwiZGUiLCJkaiIsImRrIiwiZG0i''@;'; put 'put ''LCJjb20uZG0iLCJuZXQuZG0iLCJvcmcuZG0iLCJlZHUuZG0iLCJnb3YuZG0iLCJkbyIsImFydC5kbyIsImNvbS5kbyIsImVkdS5kbyIsImdvYi5kbyIsImdvdi5kbyIsIm1pbC5kbyIsIm5ldC5kbyIsIm9yZy5kbyIsInNsZC5kbyIsIndlYi5kbyIsImR6IiwiYXJ0LmR6IiwiYXNzby5keiIs''@;'; put 'put ''ImNvbS5keiIsImVkdS5keiIsImdvdi5keiIsIm9yZy5keiIsIm5ldC5keiIsInBvbC5keiIsInNvYy5keiIsInRtLmR6IiwiZWMiLCJjb20uZWMiLCJpbmZvLmVjIiwibmV0LmVjIiwiZmluLmVjIiwiazEyLmVjIiwibWVkLmVjIiwicHJvLmVjIiwib3JnLmVjIiwiZWR1LmVjIiwiZ292LmVj''@;'; put 'put ''IiwiZ29iLmVjIiwibWlsLmVjIiwiZWR1IiwiZWUiLCJlZHUuZWUiLCJnb3YuZWUiLCJyaWlrLmVlIiwibGliLmVlIiwibWVkLmVlIiwiY29tLmVlIiwicHJpLmVlIiwiYWlwLmVlIiwib3JnLmVlIiwiZmllLmVlIiwiZWciLCJjb20uZWciLCJlZHUuZWciLCJldW4uZWciLCJnb3YuZWciLCJt''@;'; put 'put ''aWwuZWciLCJuYW1lLmVnIiwibmV0LmVnIiwib3JnLmVnIiwic2NpLmVnIiwiKi5lciIsImVzIiwiY29tLmVzIiwibm9tLmVzIiwib3JnLmVzIiwiZ29iLmVzIiwiZWR1LmVzIiwiZXQiLCJjb20uZXQiLCJnb3YuZXQiLCJvcmcuZXQiLCJlZHUuZXQiLCJiaXouZXQiLCJuYW1lLmV0IiwiaW5m''@;'; put 'put ''by5ldCIsIm5ldC5ldCIsImV1IiwiZmkiLCJhbGFuZC5maSIsImZqIiwiYWMuZmoiLCJiaXouZmoiLCJjb20uZmoiLCJnb3YuZmoiLCJpbmZvLmZqIiwibWlsLmZqIiwibmFtZS5maiIsIm5ldC5maiIsIm9yZy5maiIsInByby5maiIsIiouZmsiLCJjb20uZm0iLCJlZHUuZm0iLCJuZXQuZm0i''@;'; put 'put ''LCJvcmcuZm0iLCJmbSIsImZvIiwiZnIiLCJhc3NvLmZyIiwiY29tLmZyIiwiZ291di5mciIsIm5vbS5mciIsInByZC5mciIsInRtLmZyIiwiYWVyb3BvcnQuZnIiLCJhdm9jYXQuZnIiLCJhdm91ZXMuZnIiLCJjY2kuZnIiLCJjaGFtYmFncmkuZnIiLCJjaGlydXJnaWVucy1kZW50aXN0ZXMu''@;'; put 'put ''ZnIiLCJleHBlcnRzLWNvbXB0YWJsZXMuZnIiLCJnZW9tZXRyZS1leHBlcnQuZnIiLCJncmV0YS5mciIsImh1aXNzaWVyLWp1c3RpY2UuZnIiLCJtZWRlY2luLmZyIiwibm90YWlyZXMuZnIiLCJwaGFybWFjaWVuLmZyIiwicG9ydC5mciIsInZldGVyaW5haXJlLmZyIiwiZ2EiLCJnYiIsImVk''@;'; put 'put ''dS5nZCIsImdvdi5nZCIsImdkIiwiZ2UiLCJjb20uZ2UiLCJlZHUuZ2UiLCJnb3YuZ2UiLCJvcmcuZ2UiLCJtaWwuZ2UiLCJuZXQuZ2UiLCJwdnQuZ2UiLCJnZiIsImdnIiwiY28uZ2ciLCJuZXQuZ2ciLCJvcmcuZ2ciLCJnaCIsImNvbS5naCIsImVkdS5naCIsImdvdi5naCIsIm9yZy5naCIs''@;'; put 'put ''Im1pbC5naCIsImdpIiwiY29tLmdpIiwibHRkLmdpIiwiZ292LmdpIiwibW9kLmdpIiwiZWR1LmdpIiwib3JnLmdpIiwiZ2wiLCJjby5nbCIsImNvbS5nbCIsImVkdS5nbCIsIm5ldC5nbCIsIm9yZy5nbCIsImdtIiwiZ24iLCJhYy5nbiIsImNvbS5nbiIsImVkdS5nbiIsImdvdi5nbiIsIm9y''@;'; put 'put ''Zy5nbiIsIm5ldC5nbiIsImdvdiIsImdwIiwiY29tLmdwIiwibmV0LmdwIiwibW9iaS5ncCIsImVkdS5ncCIsIm9yZy5ncCIsImFzc28uZ3AiLCJncSIsImdyIiwiY29tLmdyIiwiZWR1LmdyIiwibmV0LmdyIiwib3JnLmdyIiwiZ292LmdyIiwiZ3MiLCJndCIsImNvbS5ndCIsImVkdS5ndCIs''@;'; put 'put ''ImdvYi5ndCIsImluZC5ndCIsIm1pbC5ndCIsIm5ldC5ndCIsIm9yZy5ndCIsImd1IiwiY29tLmd1IiwiZWR1Lmd1IiwiZ292Lmd1IiwiZ3VhbS5ndSIsImluZm8uZ3UiLCJuZXQuZ3UiLCJvcmcuZ3UiLCJ3ZWIuZ3UiLCJndyIsImd5IiwiY28uZ3kiLCJjb20uZ3kiLCJlZHUuZ3kiLCJnb3Yu''@;'; put 'put ''Z3kiLCJuZXQuZ3kiLCJvcmcuZ3kiLCJoayIsImNvbS5oayIsImVkdS5oayIsImdvdi5oayIsImlkdi5oayIsIm5ldC5oayIsIm9yZy5oayIsIlx1NTE2Y1x1NTNmOC5oayIsIlx1NjU1OVx1ODBiMi5oayIsIlx1NjU0ZVx1ODBiMi5oayIsIlx1NjUzZlx1NWU5Yy5oayIsIlx1NTAwYlx1NGVi''@;'; put 'put ''YS5oayIsIlx1NGUyYVx1ZmZmZFx1ZmZmZC5oayIsIlx1N2I4N1x1NGViYS5oayIsIlx1N2RiMlx1N2VkYy5oayIsIlx1N2Y1MVx1N2VkYy5oayIsIlx1N2VjNFx1N2U1NC5oayIsIlx1N2RiMlx1N2Q2MS5oayIsIlx1N2Y1MVx1N2Q2MS5oayIsIlx1N2VjNFx1N2VjNy5oayIsIlx1N2Q0NFx1''@;'; put 'put ''N2U1NC5oayIsIlx1N2Q0NFx1N2VjNy5oayIsImhtIiwiaG4iLCJjb20uaG4iLCJlZHUuaG4iLCJvcmcuaG4iLCJuZXQuaG4iLCJtaWwuaG4iLCJnb2IuaG4iLCJociIsIml6LmhyIiwiZnJvbS5ociIsIm5hbWUuaHIiLCJjb20uaHIiLCJodCIsImNvbS5odCIsInNob3AuaHQiLCJmaXJtLmh0''@;'; put 'put ''IiwiaW5mby5odCIsImFkdWx0Lmh0IiwibmV0Lmh0IiwicHJvLmh0Iiwib3JnLmh0IiwibWVkLmh0IiwiYXJ0Lmh0IiwiY29vcC5odCIsInBvbC5odCIsImFzc28uaHQiLCJlZHUuaHQiLCJyZWwuaHQiLCJnb3V2Lmh0IiwicGVyc28uaHQiLCJodSIsImNvLmh1IiwiaW5mby5odSIsIm9yZy5o''@;'; put 'put ''dSIsInByaXYuaHUiLCJzcG9ydC5odSIsInRtLmh1IiwiMjAwMC5odSIsImFncmFyLmh1IiwiYm9sdC5odSIsImNhc2luby5odSIsImNpdHkuaHUiLCJlcm90aWNhLmh1IiwiZXJvdGlrYS5odSIsImZpbG0uaHUiLCJmb3J1bS5odSIsImdhbWVzLmh1IiwiaG90ZWwuaHUiLCJpbmdhdGxhbi5o''@;'; put 'put ''dSIsImpvZ2Fzei5odSIsImtvbnl2ZWxvLmh1IiwibGFrYXMuaHUiLCJtZWRpYS5odSIsIm5ld3MuaHUiLCJyZWtsYW0uaHUiLCJzZXguaHUiLCJzaG9wLmh1Iiwic3VsaS5odSIsInN6ZXguaHUiLCJ0b3pzZGUuaHUiLCJ1dGF6YXMuaHUiLCJ2aWRlby5odSIsImlkIiwiYWMuaWQiLCJiaXou''@;'; put 'put ''aWQiLCJjby5pZCIsImRlc2EuaWQiLCJnby5pZCIsIm1pbC5pZCIsIm15LmlkIiwibmV0LmlkIiwib3IuaWQiLCJwb25wZXMuaWQiLCJzY2guaWQiLCJ3ZWIuaWQiLCJpZSIsImdvdi5pZSIsImlsIiwiYWMuaWwiLCJjby5pbCIsImdvdi5pbCIsImlkZi5pbCIsImsxMi5pbCIsIm11bmkuaWwi''@;'; put 'put ''LCJuZXQuaWwiLCJvcmcuaWwiLCJpbSIsImFjLmltIiwiY28uaW0iLCJjb20uaW0iLCJsdGQuY28uaW0iLCJuZXQuaW0iLCJvcmcuaW0iLCJwbGMuY28uaW0iLCJ0dC5pbSIsInR2LmltIiwiaW4iLCJjby5pbiIsImZpcm0uaW4iLCJuZXQuaW4iLCJvcmcuaW4iLCJnZW4uaW4iLCJpbmQuaW4i''@;'; put 'put ''LCJuaWMuaW4iLCJhYy5pbiIsImVkdS5pbiIsInJlcy5pbiIsImdvdi5pbiIsIm1pbC5pbiIsImluZm8iLCJpbnQiLCJldS5pbnQiLCJpbyIsImNvbS5pbyIsImlxIiwiZ292LmlxIiwiZWR1LmlxIiwibWlsLmlxIiwiY29tLmlxIiwib3JnLmlxIiwibmV0LmlxIiwiaXIiLCJhYy5pciIsImNv''@;'; put 'put ''LmlyIiwiZ292LmlyIiwiaWQuaXIiLCJuZXQuaXIiLCJvcmcuaXIiLCJzY2guaXIiLCJcdTA2MjdcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYuaXIiLCJcdTA2MjdcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDYuaXIiLCJpcyIsIm5ldC5pcyIsImNvbS5pcyIsImVkdS5pcyIsImdvdi5pcyIsIm9y''@;'; put 'put ''Zy5pcyIsImludC5pcyIsIml0IiwiZ292Lml0IiwiZWR1Lml0IiwiYWJyLml0IiwiYWJydXp6by5pdCIsImFvc3RhLXZhbGxleS5pdCIsImFvc3RhdmFsbGV5Lml0IiwiYmFzLml0IiwiYmFzaWxpY2F0YS5pdCIsImNhbC5pdCIsImNhbGFicmlhLml0IiwiY2FtLml0IiwiY2FtcGFuaWEuaXQi''@;'; put 'put ''LCJlbWlsaWEtcm9tYWduYS5pdCIsImVtaWxpYXJvbWFnbmEuaXQiLCJlbXIuaXQiLCJmcml1bGktdi1naXVsaWEuaXQiLCJmcml1bGktdmUtZ2l1bGlhLml0IiwiZnJpdWxpLXZlZ2l1bGlhLml0IiwiZnJpdWxpLXZlbmV6aWEtZ2l1bGlhLml0IiwiZnJpdWxpLXZlbmV6aWFnaXVsaWEuaXQi''@;'; put 'put ''LCJmcml1bGktdmdpdWxpYS5pdCIsImZyaXVsaXYtZ2l1bGlhLml0IiwiZnJpdWxpdmUtZ2l1bGlhLml0IiwiZnJpdWxpdmVnaXVsaWEuaXQiLCJmcml1bGl2ZW5lemlhLWdpdWxpYS5pdCIsImZyaXVsaXZlbmV6aWFnaXVsaWEuaXQiLCJmcml1bGl2Z2l1bGlhLml0IiwiZnZnLml0IiwibGF6''@;'; put 'put ''Lml0IiwibGF6aW8uaXQiLCJsaWcuaXQiLCJsaWd1cmlhLml0IiwibG9tLml0IiwibG9tYmFyZGlhLml0IiwibG9tYmFyZHkuaXQiLCJsdWNhbmlhLml0IiwibWFyLml0IiwibWFyY2hlLml0IiwibW9sLml0IiwibW9saXNlLml0IiwicGllZG1vbnQuaXQiLCJwaWVtb250ZS5pdCIsInBtbi5p''@;'; put 'put ''dCIsInB1Zy5pdCIsInB1Z2xpYS5pdCIsInNhci5pdCIsInNhcmRlZ25hLml0Iiwic2FyZGluaWEuaXQiLCJzaWMuaXQiLCJzaWNpbGlhLml0Iiwic2ljaWx5Lml0IiwidGFhLml0IiwidG9zLml0IiwidG9zY2FuYS5pdCIsInRyZW50aW4tc3VkLXRpcm9sLml0IiwidHJlbnRpbi1zXHhmY2Qt''@;'; put 'put ''dGlyb2wuaXQiLCJ0cmVudGluLXN1ZHRpcm9sLml0IiwidHJlbnRpbi1zXHhmY2R0aXJvbC5pdCIsInRyZW50aW4tc3VlZC10aXJvbC5pdCIsInRyZW50aW4tc3VlZHRpcm9sLml0IiwidHJlbnRpbm8tYS1hZGlnZS5pdCIsInRyZW50aW5vLWFhZGlnZS5pdCIsInRyZW50aW5vLWFsdG8tYWRp''@;'; put 'put ''Z2UuaXQiLCJ0cmVudGluby1hbHRvYWRpZ2UuaXQiLCJ0cmVudGluby1zLXRpcm9sLml0IiwidHJlbnRpbm8tc3Rpcm9sLml0IiwidHJlbnRpbm8tc3VkLXRpcm9sLml0IiwidHJlbnRpbm8tc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbm8tc3VkdGlyb2wuaXQiLCJ0cmVudGluby1zXHhmY2R0''@;'; put 'put ''aXJvbC5pdCIsInRyZW50aW5vLXN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluby1zdWVkdGlyb2wuaXQiLCJ0cmVudGluby5pdCIsInRyZW50aW5vYS1hZGlnZS5pdCIsInRyZW50aW5vYWFkaWdlLml0IiwidHJlbnRpbm9hbHRvLWFkaWdlLml0IiwidHJlbnRpbm9hbHRvYWRpZ2UuaXQiLCJ0cmVu''@;'; put 'put ''dGlub3MtdGlyb2wuaXQiLCJ0cmVudGlub3N0aXJvbC5pdCIsInRyZW50aW5vc3VkLXRpcm9sLml0IiwidHJlbnRpbm9zXHhmY2QtdGlyb2wuaXQiLCJ0cmVudGlub3N1ZHRpcm9sLml0IiwidHJlbnRpbm9zXHhmY2R0aXJvbC5pdCIsInRyZW50aW5vc3VlZC10aXJvbC5pdCIsInRyZW50aW5v''@;'; put 'put ''c3VlZHRpcm9sLml0IiwidHJlbnRpbnN1ZC10aXJvbC5pdCIsInRyZW50aW5zXHhmY2QtdGlyb2wuaXQiLCJ0cmVudGluc3VkdGlyb2wuaXQiLCJ0cmVudGluc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluc3VlZC10aXJvbC5pdCIsInRyZW50aW5zdWVkdGlyb2wuaXQiLCJ0dXNjYW55Lml0Iiwi''@;'; put 'put ''dW1iLml0IiwidW1icmlhLml0IiwidmFsLWQtYW9zdGEuaXQiLCJ2YWwtZGFvc3RhLml0IiwidmFsZC1hb3N0YS5pdCIsInZhbGRhb3N0YS5pdCIsInZhbGxlLWFvc3RhLml0IiwidmFsbGUtZC1hb3N0YS5pdCIsInZhbGxlLWRhb3N0YS5pdCIsInZhbGxlYW9zdGEuaXQiLCJ2YWxsZWQtYW9z''@;'; put 'put ''dGEuaXQiLCJ2YWxsZWRhb3N0YS5pdCIsInZhbGxlZS1hb3N0ZS5pdCIsInZhbGxceGU5ZS1hb3N0ZS5pdCIsInZhbGxlZS1kLWFvc3RlLml0IiwidmFsbFx4ZTllLWQtYW9zdGUuaXQiLCJ2YWxsZWVhb3N0ZS5pdCIsInZhbGxceGU5ZWFvc3RlLml0IiwidmFsbGVlZGFvc3RlLml0IiwidmFs''@;'; put 'put ''bFx4ZTllZGFvc3RlLml0IiwidmFvLml0IiwidmRhLml0IiwidmVuLml0IiwidmVuZXRvLml0IiwiYWcuaXQiLCJhZ3JpZ2VudG8uaXQiLCJhbC5pdCIsImFsZXNzYW5kcmlhLml0IiwiYWx0by1hZGlnZS5pdCIsImFsdG9hZGlnZS5pdCIsImFuLml0IiwiYW5jb25hLml0IiwiYW5kcmlhLWJh''@;'; put 'put ''cmxldHRhLXRyYW5pLml0IiwiYW5kcmlhLXRyYW5pLWJhcmxldHRhLml0IiwiYW5kcmlhYmFybGV0dGF0cmFuaS5pdCIsImFuZHJpYXRyYW5pYmFybGV0dGEuaXQiLCJhby5pdCIsImFvc3RhLml0IiwiYW9zdGUuaXQiLCJhcC5pdCIsImFxLml0IiwiYXF1aWxhLml0IiwiYXIuaXQiLCJhcmV6''@;'; put 'put ''em8uaXQiLCJhc2NvbGktcGljZW5vLml0IiwiYXNjb2xpcGljZW5vLml0IiwiYXN0aS5pdCIsImF0Lml0IiwiYXYuaXQiLCJhdmVsbGluby5pdCIsImJhLml0IiwiYmFsc2FuLXN1ZHRpcm9sLml0IiwiYmFsc2FuLXNceGZjZHRpcm9sLml0IiwiYmFsc2FuLXN1ZWR0aXJvbC5pdCIsImJhbHNh''@;'; put 'put ''bi5pdCIsImJhcmkuaXQiLCJiYXJsZXR0YS10cmFuaS1hbmRyaWEuaXQiLCJiYXJsZXR0YXRyYW5pYW5kcmlhLml0IiwiYmVsbHVuby5pdCIsImJlbmV2ZW50by5pdCIsImJlcmdhbW8uaXQiLCJiZy5pdCIsImJpLml0IiwiYmllbGxhLml0IiwiYmwuaXQiLCJibi5pdCIsImJvLml0IiwiYm9s''@;'; put 'put ''b2duYS5pdCIsImJvbHphbm8tYWx0b2FkaWdlLml0IiwiYm9semFuby5pdCIsImJvemVuLXN1ZHRpcm9sLml0IiwiYm96ZW4tc1x4ZmNkdGlyb2wuaXQiLCJib3plbi1zdWVkdGlyb2wuaXQiLCJib3plbi5pdCIsImJyLml0IiwiYnJlc2NpYS5pdCIsImJyaW5kaXNpLml0IiwiYnMuaXQiLCJi''@;'; put 'put ''dC5pdCIsImJ1bHNhbi1zdWR0aXJvbC5pdCIsImJ1bHNhbi1zXHhmY2R0aXJvbC5pdCIsImJ1bHNhbi1zdWVkdGlyb2wuaXQiLCJidWxzYW4uaXQiLCJiei5pdCIsImNhLml0IiwiY2FnbGlhcmkuaXQiLCJjYWx0YW5pc3NldHRhLml0IiwiY2FtcGlkYW5vLW1lZGlvLml0IiwiY2FtcGlkYW5v''@;'; put 'put ''bWVkaW8uaXQiLCJjYW1wb2Jhc3NvLml0IiwiY2FyYm9uaWEtaWdsZXNpYXMuaXQiLCJjYXJib25pYWlnbGVzaWFzLml0IiwiY2FycmFyYS1tYXNzYS5pdCIsImNhcnJhcmFtYXNzYS5pdCIsImNhc2VydGEuaXQiLCJjYXRhbmlhLml0IiwiY2F0YW56YXJvLml0IiwiY2IuaXQiLCJjZS5pdCIs''@;'; put 'put ''ImNlc2VuYS1mb3JsaS5pdCIsImNlc2VuYS1mb3JsXHhlYy5pdCIsImNlc2VuYWZvcmxpLml0IiwiY2VzZW5hZm9ybFx4ZWMuaXQiLCJjaC5pdCIsImNoaWV0aS5pdCIsImNpLml0IiwiY2wuaXQiLCJjbi5pdCIsImNvLml0IiwiY29tby5pdCIsImNvc2VuemEuaXQiLCJjci5pdCIsImNyZW1v''@;'; put 'put ''bmEuaXQiLCJjcm90b25lLml0IiwiY3MuaXQiLCJjdC5pdCIsImN1bmVvLml0IiwiY3ouaXQiLCJkZWxsLW9nbGlhc3RyYS5pdCIsImRlbGxvZ2xpYXN0cmEuaXQiLCJlbi5pdCIsImVubmEuaXQiLCJmYy5pdCIsImZlLml0IiwiZmVybW8uaXQiLCJmZXJyYXJhLml0IiwiZmcuaXQiLCJmaS5p''@;'; put 'put ''dCIsImZpcmVuemUuaXQiLCJmbG9yZW5jZS5pdCIsImZtLml0IiwiZm9nZ2lhLml0IiwiZm9ybGktY2VzZW5hLml0IiwiZm9ybFx4ZWMtY2VzZW5hLml0IiwiZm9ybGljZXNlbmEuaXQiLCJmb3JsXHhlY2Nlc2VuYS5pdCIsImZyLml0IiwiZnJvc2lub25lLml0IiwiZ2UuaXQiLCJnZW5vYS5p''@;'; put 'put ''dCIsImdlbm92YS5pdCIsImdvLml0IiwiZ29yaXppYS5pdCIsImdyLml0IiwiZ3Jvc3NldG8uaXQiLCJpZ2xlc2lhcy1jYXJib25pYS5pdCIsImlnbGVzaWFzY2FyYm9uaWEuaXQiLCJpbS5pdCIsImltcGVyaWEuaXQiLCJpcy5pdCIsImlzZXJuaWEuaXQiLCJrci5pdCIsImxhLXNwZXppYS5p''@;'; put 'put ''dCIsImxhcXVpbGEuaXQiLCJsYXNwZXppYS5pdCIsImxhdGluYS5pdCIsImxjLml0IiwibGUuaXQiLCJsZWNjZS5pdCIsImxlY2NvLml0IiwibGkuaXQiLCJsaXZvcm5vLml0IiwibG8uaXQiLCJsb2RpLml0IiwibHQuaXQiLCJsdS5pdCIsImx1Y2NhLml0IiwibWFjZXJhdGEuaXQiLCJtYW50''@;'; put 'put ''b3ZhLml0IiwibWFzc2EtY2FycmFyYS5pdCIsIm1hc3NhY2FycmFyYS5pdCIsIm1hdGVyYS5pdCIsIm1iLml0IiwibWMuaXQiLCJtZS5pdCIsIm1lZGlvLWNhbXBpZGFuby5pdCIsIm1lZGlvY2FtcGlkYW5vLml0IiwibWVzc2luYS5pdCIsIm1pLml0IiwibWlsYW4uaXQiLCJtaWxhbm8uaXQi''@;'; put 'put ''LCJtbi5pdCIsIm1vLml0IiwibW9kZW5hLml0IiwibW9uemEtYnJpYW56YS5pdCIsIm1vbnphLWUtZGVsbGEtYnJpYW56YS5pdCIsIm1vbnphLml0IiwibW9uemFicmlhbnphLml0IiwibW9uemFlYnJpYW56YS5pdCIsIm1vbnphZWRlbGxhYnJpYW56YS5pdCIsIm1zLml0IiwibXQuaXQiLCJu''@;'; put 'put ''YS5pdCIsIm5hcGxlcy5pdCIsIm5hcG9saS5pdCIsIm5vLml0Iiwibm92YXJhLml0IiwibnUuaXQiLCJudW9yby5pdCIsIm9nLml0Iiwib2dsaWFzdHJhLml0Iiwib2xiaWEtdGVtcGlvLml0Iiwib2xiaWF0ZW1waW8uaXQiLCJvci5pdCIsIm9yaXN0YW5vLml0Iiwib3QuaXQiLCJwYS5pdCIs''@;'; put 'put ''InBhZG92YS5pdCIsInBhZHVhLml0IiwicGFsZXJtby5pdCIsInBhcm1hLml0IiwicGF2aWEuaXQiLCJwYy5pdCIsInBkLml0IiwicGUuaXQiLCJwZXJ1Z2lhLml0IiwicGVzYXJvLXVyYmluby5pdCIsInBlc2Fyb3VyYmluby5pdCIsInBlc2NhcmEuaXQiLCJwZy5pdCIsInBpLml0IiwicGlh''@;'; put 'put ''Y2VuemEuaXQiLCJwaXNhLml0IiwicGlzdG9pYS5pdCIsInBuLml0IiwicG8uaXQiLCJwb3JkZW5vbmUuaXQiLCJwb3RlbnphLml0IiwicHIuaXQiLCJwcmF0by5pdCIsInB0Lml0IiwicHUuaXQiLCJwdi5pdCIsInB6Lml0IiwicmEuaXQiLCJyYWd1c2EuaXQiLCJyYXZlbm5hLml0IiwicmMu''@;'; put 'put ''aXQiLCJyZS5pdCIsInJlZ2dpby1jYWxhYnJpYS5pdCIsInJlZ2dpby1lbWlsaWEuaXQiLCJyZWdnaW9jYWxhYnJpYS5pdCIsInJlZ2dpb2VtaWxpYS5pdCIsInJnLml0IiwicmkuaXQiLCJyaWV0aS5pdCIsInJpbWluaS5pdCIsInJtLml0Iiwicm4uaXQiLCJyby5pdCIsInJvbWEuaXQiLCJy''@;'; put 'put ''b21lLml0Iiwicm92aWdvLml0Iiwic2EuaXQiLCJzYWxlcm5vLml0Iiwic2Fzc2FyaS5pdCIsInNhdm9uYS5pdCIsInNpLml0Iiwic2llbmEuaXQiLCJzaXJhY3VzYS5pdCIsInNvLml0Iiwic29uZHJpby5pdCIsInNwLml0Iiwic3IuaXQiLCJzcy5pdCIsInN1ZWR0aXJvbC5pdCIsInNceGZj''@;'; put 'put ''ZHRpcm9sLml0Iiwic3YuaXQiLCJ0YS5pdCIsInRhcmFudG8uaXQiLCJ0ZS5pdCIsInRlbXBpby1vbGJpYS5pdCIsInRlbXBpb29sYmlhLml0IiwidGVyYW1vLml0IiwidGVybmkuaXQiLCJ0bi5pdCIsInRvLml0IiwidG9yaW5vLml0IiwidHAuaXQiLCJ0ci5pdCIsInRyYW5pLWFuZHJpYS1i''@;'; put 'put ''YXJsZXR0YS5pdCIsInRyYW5pLWJhcmxldHRhLWFuZHJpYS5pdCIsInRyYW5pYW5kcmlhYmFybGV0dGEuaXQiLCJ0cmFuaWJhcmxldHRhYW5kcmlhLml0IiwidHJhcGFuaS5pdCIsInRyZW50by5pdCIsInRyZXZpc28uaXQiLCJ0cmllc3RlLml0IiwidHMuaXQiLCJ0dXJpbi5pdCIsInR2Lml0''@;'; put 'put ''IiwidWQuaXQiLCJ1ZGluZS5pdCIsInVyYmluby1wZXNhcm8uaXQiLCJ1cmJpbm9wZXNhcm8uaXQiLCJ2YS5pdCIsInZhcmVzZS5pdCIsInZiLml0IiwidmMuaXQiLCJ2ZS5pdCIsInZlbmV6aWEuaXQiLCJ2ZW5pY2UuaXQiLCJ2ZXJiYW5pYS5pdCIsInZlcmNlbGxpLml0IiwidmVyb25hLml0''@;'; put 'put ''IiwidmkuaXQiLCJ2aWJvLXZhbGVudGlhLml0Iiwidmlib3ZhbGVudGlhLml0IiwidmljZW56YS5pdCIsInZpdGVyYm8uaXQiLCJ2ci5pdCIsInZzLml0IiwidnQuaXQiLCJ2di5pdCIsImplIiwiY28uamUiLCJuZXQuamUiLCJvcmcuamUiLCIqLmptIiwiam8iLCJjb20uam8iLCJvcmcuam8i''@;'; put 'put ''LCJuZXQuam8iLCJlZHUuam8iLCJzY2guam8iLCJnb3Yuam8iLCJtaWwuam8iLCJuYW1lLmpvIiwiam9icyIsImpwIiwiYWMuanAiLCJhZC5qcCIsImNvLmpwIiwiZWQuanAiLCJnby5qcCIsImdyLmpwIiwibGcuanAiLCJuZS5qcCIsIm9yLmpwIiwiYWljaGkuanAiLCJha2l0YS5qcCIsImFv''@;'; put 'put ''bW9yaS5qcCIsImNoaWJhLmpwIiwiZWhpbWUuanAiLCJmdWt1aS5qcCIsImZ1a3Vva2EuanAiLCJmdWt1c2hpbWEuanAiLCJnaWZ1LmpwIiwiZ3VubWEuanAiLCJoaXJvc2hpbWEuanAiLCJob2trYWlkby5qcCIsImh5b2dvLmpwIiwiaWJhcmFraS5qcCIsImlzaGlrYXdhLmpwIiwiaXdhdGUu''@;'; put 'put ''anAiLCJrYWdhd2EuanAiLCJrYWdvc2hpbWEuanAiLCJrYW5hZ2F3YS5qcCIsImtvY2hpLmpwIiwia3VtYW1vdG8uanAiLCJreW90by5qcCIsIm1pZS5qcCIsIm1peWFnaS5qcCIsIm1peWF6YWtpLmpwIiwibmFnYW5vLmpwIiwibmFnYXNha2kuanAiLCJuYXJhLmpwIiwibmlpZ2F0YS5qcCIs''@;'; put 'put ''Im9pdGEuanAiLCJva2F5YW1hLmpwIiwib2tpbmF3YS5qcCIsIm9zYWthLmpwIiwic2FnYS5qcCIsInNhaXRhbWEuanAiLCJzaGlnYS5qcCIsInNoaW1hbmUuanAiLCJzaGl6dW9rYS5qcCIsInRvY2hpZ2kuanAiLCJ0b2t1c2hpbWEuanAiLCJ0b2t5by5qcCIsInRvdHRvcmkuanAiLCJ0b3lh''@;'; put 'put ''bWEuanAiLCJ3YWtheWFtYS5qcCIsInlhbWFnYXRhLmpwIiwieWFtYWd1Y2hpLmpwIiwieWFtYW5hc2hpLmpwIiwiXHU2ODAzXHU2NzI4LmpwIiwiXHU2MTFiXHU3N2U1LmpwIiwiXHU2MTFiXHU1YTliLmpwIiwiXHU1MTc1XHU1ZWFiLmpwIiwiXHU3MThhXHU2NzJjLmpwIiwiXHU4MzI4XHU1''@;'; put 'put ''N2NlLmpwIiwiXHU1MzE3XHU2ZDc3XHU5MDUzLmpwIiwiXHU1MzQzXHU4NDQ5LmpwIiwiXHU1NDhjXHU2YjRjXHU1YzcxLmpwIiwiXHU5NTc3XHU1ZDBlLmpwIiwiXHU5NTc3XHU5MWNlLmpwIiwiXHU2NWIwXHU2ZjVmLmpwIiwiXHU5NzUyXHU2OGVlLmpwIiwiXHU5NzU5XHU1Y2ExLmpwIiwi''@;'; put 'put ''XHU2NzcxXHU0ZWFjLmpwIiwiXHU3N2YzXHU1ZGRkLmpwIiwiXHU1N2ZjXHU3Mzg5LmpwIiwiXHU0ZTA5XHU5MWNkLmpwIiwiXHU0ZWFjXHU5MGZkLmpwIiwiXHU0ZjUwXHU4Y2MwLmpwIiwiXHU1OTI3XHU1MjA2LmpwIiwiXHU1OTI3XHU5NjJhLmpwIiwiXHU1OTQ4XHU4MjZmLmpwIiwiXHU1''@;'; put 'put ''YmFlXHU1N2NlLmpwIiwiXHU1YmFlXHU1ZDBlLmpwIiwiXHU1YmNjXHU1YzcxLmpwIiwiXHU1YzcxXHU1M2UzLmpwIiwiXHU1YzcxXHU1ZjYyLmpwIiwiXHU1YzcxXHU2OGE4LmpwIiwiXHU1Y2E5XHU2MjRiLmpwIiwiXHU1YzkwXHU5NjFjLmpwIiwiXHU1Y2ExXHU1YzcxLmpwIiwiXHU1Y2Y2''@;'; put 'put ''XHU2ODM5LmpwIiwiXHU1ZTgzXHU1Y2Y2LmpwIiwiXHU1ZmIzXHU1Y2Y2LmpwIiwiXHU2Yzk2XHU3ZTA0LmpwIiwiXHU2ZWNiXHU4Y2MwLmpwIiwiXHU3OTVlXHU1OTQ4XHU1ZGRkLmpwIiwiXHU3OThmXHU0ZTk1LmpwIiwiXHU3OThmXHU1Y2ExLmpwIiwiXHU3OThmXHU1Y2Y2LmpwIiwiXHU3''@;'; put 'put ''OWNiXHU3NTMwLmpwIiwiXHU3ZmE0XHU5OWFjLmpwIiwiXHU5OTk5XHU1ZGRkLmpwIiwiXHU5YWQ4XHU3N2U1LmpwIiwiXHU5Y2U1XHU1M2Q2LmpwIiwiXHU5ZTdmXHU1MTUwXHU1Y2Y2LmpwIiwiKi5rYXdhc2FraS5qcCIsIioua2l0YWt5dXNodS5qcCIsIioua29iZS5qcCIsIioubmFnb3lh''@;'; put 'put ''LmpwIiwiKi5zYXBwb3JvLmpwIiwiKi5zZW5kYWkuanAiLCIqLnlva29oYW1hLmpwIiwiIWNpdHkua2F3YXNha2kuanAiLCIhY2l0eS5raXRha3l1c2h1LmpwIiwiIWNpdHkua29iZS5qcCIsIiFjaXR5Lm5hZ295YS5qcCIsIiFjaXR5LnNhcHBvcm8uanAiLCIhY2l0eS5zZW5kYWkuanAiLCIh''@;'; put 'put ''Y2l0eS55b2tvaGFtYS5qcCIsImFpc2FpLmFpY2hpLmpwIiwiYW1hLmFpY2hpLmpwIiwiYW5qby5haWNoaS5qcCIsImFzdWtlLmFpY2hpLmpwIiwiY2hpcnl1LmFpY2hpLmpwIiwiY2hpdGEuYWljaGkuanAiLCJmdXNvLmFpY2hpLmpwIiwiZ2FtYWdvcmkuYWljaGkuanAiLCJoYW5kYS5haWNo''@;'; put 'put ''aS5qcCIsImhhenUuYWljaGkuanAiLCJoZWtpbmFuLmFpY2hpLmpwIiwiaGlnYXNoaXVyYS5haWNoaS5qcCIsImljaGlub21peWEuYWljaGkuanAiLCJpbmF6YXdhLmFpY2hpLmpwIiwiaW51eWFtYS5haWNoaS5qcCIsImlzc2hpa2kuYWljaGkuanAiLCJpd2FrdXJhLmFpY2hpLmpwIiwia2Fu''@;'; put 'put ''aWUuYWljaGkuanAiLCJrYXJpeWEuYWljaGkuanAiLCJrYXN1Z2FpLmFpY2hpLmpwIiwia2lyYS5haWNoaS5qcCIsImtpeW9zdS5haWNoaS5qcCIsImtvbWFraS5haWNoaS5qcCIsImtvbmFuLmFpY2hpLmpwIiwia290YS5haWNoaS5qcCIsIm1paGFtYS5haWNoaS5qcCIsIm1peW9zaGkuYWlj''@;'; put 'put ''aGkuanAiLCJuaXNoaW8uYWljaGkuanAiLCJuaXNzaGluLmFpY2hpLmpwIiwib2J1LmFpY2hpLmpwIiwib2d1Y2hpLmFpY2hpLmpwIiwib2hhcnUuYWljaGkuanAiLCJva2F6YWtpLmFpY2hpLmpwIiwib3dhcmlhc2FoaS5haWNoaS5qcCIsInNldG8uYWljaGkuanAiLCJzaGlrYXRzdS5haWNo''@;'; put 'put ''aS5qcCIsInNoaW5zaGlyby5haWNoaS5qcCIsInNoaXRhcmEuYWljaGkuanAiLCJ0YWhhcmEuYWljaGkuanAiLCJ0YWthaGFtYS5haWNoaS5qcCIsInRvYmlzaGltYS5haWNoaS5qcCIsInRvZWkuYWljaGkuanAiLCJ0b2dvLmFpY2hpLmpwIiwidG9rYWkuYWljaGkuanAiLCJ0b2tvbmFtZS5h''@;'; put 'put ''aWNoaS5qcCIsInRveW9ha2UuYWljaGkuanAiLCJ0b3lvaGFzaGkuYWljaGkuanAiLCJ0b3lva2F3YS5haWNoaS5qcCIsInRveW9uZS5haWNoaS5qcCIsInRveW90YS5haWNoaS5qcCIsInRzdXNoaW1hLmFpY2hpLmpwIiwieWF0b21pLmFpY2hpLmpwIiwiYWtpdGEuYWtpdGEuanAiLCJkYWlz''@;'; put 'put ''ZW4uYWtpdGEuanAiLCJmdWppc2F0by5ha2l0YS5qcCIsImdvam9tZS5ha2l0YS5qcCIsImhhY2hpcm9nYXRhLmFraXRhLmpwIiwiaGFwcG91LmFraXRhLmpwIiwiaGlnYXNoaW5hcnVzZS5ha2l0YS5qcCIsImhvbmpvLmFraXRhLmpwIiwiaG9uanlvLmFraXRhLmpwIiwiaWthd2EuYWtpdGEu''@;'; put 'put ''anAiLCJrYW1pa29hbmkuYWtpdGEuanAiLCJrYW1pb2thLmFraXRhLmpwIiwia2F0YWdhbWkuYWtpdGEuanAiLCJrYXp1bm8uYWtpdGEuanAiLCJraXRhYWtpdGEuYWtpdGEuanAiLCJrb3Nha2EuYWtpdGEuanAiLCJreW93YS5ha2l0YS5qcCIsIm1pc2F0by5ha2l0YS5qcCIsIm1pdGFuZS5h''@;'; put 'put ''a2l0YS5qcCIsIm1vcml5b3NoaS5ha2l0YS5qcCIsIm5pa2Foby5ha2l0YS5qcCIsIm5vc2hpcm8uYWtpdGEuanAiLCJvZGF0ZS5ha2l0YS5qcCIsIm9nYS5ha2l0YS5qcCIsIm9nYXRhLmFraXRhLmpwIiwic2VtYm9rdS5ha2l0YS5qcCIsInlva290ZS5ha2l0YS5qcCIsInl1cmlob25qby5h''@;'; put 'put ''a2l0YS5qcCIsImFvbW9yaS5hb21vcmkuanAiLCJnb25vaGUuYW9tb3JpLmpwIiwiaGFjaGlub2hlLmFvbW9yaS5qcCIsImhhc2hpa2FtaS5hb21vcmkuanAiLCJoaXJhbmFpLmFvbW9yaS5qcCIsImhpcm9zYWtpLmFvbW9yaS5qcCIsIml0YXlhbmFnaS5hb21vcmkuanAiLCJrdXJvaXNoaS5h''@;'; put 'put ''b21vcmkuanAiLCJtaXNhd2EuYW9tb3JpLmpwIiwibXV0c3UuYW9tb3JpLmpwIiwibmFrYWRvbWFyaS5hb21vcmkuanAiLCJub2hlamkuYW9tb3JpLmpwIiwib2lyYXNlLmFvbW9yaS5qcCIsIm93YW5pLmFvbW9yaS5qcCIsInJva3Vub2hlLmFvbW9yaS5qcCIsInNhbm5vaGUuYW9tb3JpLmpw''@;'; put 'put ''Iiwic2hpY2hpbm9oZS5hb21vcmkuanAiLCJzaGluZ28uYW9tb3JpLmpwIiwidGFra28uYW9tb3JpLmpwIiwidG93YWRhLmFvbW9yaS5qcCIsInRzdWdhcnUuYW9tb3JpLmpwIiwidHN1cnV0YS5hb21vcmkuanAiLCJhYmlrby5jaGliYS5qcCIsImFzYWhpLmNoaWJhLmpwIiwiY2hvbmFuLmNo''@;'; put 'put ''aWJhLmpwIiwiY2hvc2VpLmNoaWJhLmpwIiwiY2hvc2hpLmNoaWJhLmpwIiwiY2h1by5jaGliYS5qcCIsImZ1bmFiYXNoaS5jaGliYS5qcCIsImZ1dHRzdS5jaGliYS5qcCIsImhhbmFtaWdhd2EuY2hpYmEuanAiLCJpY2hpaGFyYS5jaGliYS5qcCIsImljaGlrYXdhLmNoaWJhLmpwIiwiaWNo''@;'; put 'put ''aW5vbWl5YS5jaGliYS5qcCIsImluemFpLmNoaWJhLmpwIiwiaXN1bWkuY2hpYmEuanAiLCJrYW1hZ2F5YS5jaGliYS5qcCIsImthbW9nYXdhLmNoaWJhLmpwIiwia2FzaGl3YS5jaGliYS5qcCIsImthdG9yaS5jaGliYS5qcCIsImthdHN1dXJhLmNoaWJhLmpwIiwia2ltaXRzdS5jaGliYS5q''@;'; put 'put ''cCIsImtpc2FyYXp1LmNoaWJhLmpwIiwia296YWtpLmNoaWJhLmpwIiwia3VqdWt1cmkuY2hpYmEuanAiLCJreW9uYW4uY2hpYmEuanAiLCJtYXRzdWRvLmNoaWJhLmpwIiwibWlkb3JpLmNoaWJhLmpwIiwibWloYW1hLmNoaWJhLmpwIiwibWluYW1pYm9zby5jaGliYS5qcCIsIm1vYmFyYS5j''@;'; put 'put ''aGliYS5qcCIsIm11dHN1emF3YS5jaGliYS5qcCIsIm5hZ2FyYS5jaGliYS5qcCIsIm5hZ2FyZXlhbWEuY2hpYmEuanAiLCJuYXJhc2hpbm8uY2hpYmEuanAiLCJuYXJpdGEuY2hpYmEuanAiLCJub2RhLmNoaWJhLmpwIiwib2FtaXNoaXJhc2F0by5jaGliYS5qcCIsIm9taWdhd2EuY2hpYmEu''@;'; put 'put ''anAiLCJvbmp1a3UuY2hpYmEuanAiLCJvdGFraS5jaGliYS5qcCIsInNha2FlLmNoaWJhLmpwIiwic2FrdXJhLmNoaWJhLmpwIiwic2hpbW9mdXNhLmNoaWJhLmpwIiwic2hpcmFrby5jaGliYS5qcCIsInNoaXJvaS5jaGliYS5qcCIsInNoaXN1aS5jaGliYS5qcCIsInNvZGVnYXVyYS5jaGli''@;'; put 'put ''YS5qcCIsInNvc2EuY2hpYmEuanAiLCJ0YWtvLmNoaWJhLmpwIiwidGF0ZXlhbWEuY2hpYmEuanAiLCJ0b2dhbmUuY2hpYmEuanAiLCJ0b2hub3Noby5jaGliYS5qcCIsInRvbWlzYXRvLmNoaWJhLmpwIiwidXJheWFzdS5jaGliYS5qcCIsInlhY2hpbWF0YS5jaGliYS5qcCIsInlhY2hpeW8u''@;'; put 'put ''Y2hpYmEuanAiLCJ5b2thaWNoaWJhLmNoaWJhLmpwIiwieW9rb3NoaWJhaGlrYXJpLmNoaWJhLmpwIiwieW90c3VrYWlkby5jaGliYS5qcCIsImFpbmFuLmVoaW1lLmpwIiwiaG9uYWkuZWhpbWUuanAiLCJpa2F0YS5laGltZS5qcCIsImltYWJhcmkuZWhpbWUuanAiLCJpeW8uZWhpbWUuanAi''@;'; put 'put ''LCJrYW1pamltYS5laGltZS5qcCIsImtpaG9rdS5laGltZS5qcCIsImt1bWFrb2dlbi5laGltZS5qcCIsIm1hc2FraS5laGltZS5qcCIsIm1hdHN1bm8uZWhpbWUuanAiLCJtYXRzdXlhbWEuZWhpbWUuanAiLCJuYW1pa2F0YS5laGltZS5qcCIsIm5paWhhbWEuZWhpbWUuanAiLCJvenUuZWhp''@;'; put 'put ''bWUuanAiLCJzYWlqby5laGltZS5qcCIsInNlaXlvLmVoaW1lLmpwIiwic2hpa29rdWNodW8uZWhpbWUuanAiLCJ0b2JlLmVoaW1lLmpwIiwidG9vbi5laGltZS5qcCIsInVjaGlrby5laGltZS5qcCIsInV3YWppbWEuZWhpbWUuanAiLCJ5YXdhdGFoYW1hLmVoaW1lLmpwIiwiZWNoaXplbi5m''@;'; put 'put ''dWt1aS5qcCIsImVpaGVpamkuZnVrdWkuanAiLCJmdWt1aS5mdWt1aS5qcCIsImlrZWRhLmZ1a3VpLmpwIiwia2F0c3V5YW1hLmZ1a3VpLmpwIiwibWloYW1hLmZ1a3VpLmpwIiwibWluYW1pZWNoaXplbi5mdWt1aS5qcCIsIm9iYW1hLmZ1a3VpLmpwIiwib2hpLmZ1a3VpLmpwIiwib25vLmZ1''@;'; put 'put ''a3VpLmpwIiwic2FiYWUuZnVrdWkuanAiLCJzYWthaS5mdWt1aS5qcCIsInRha2FoYW1hLmZ1a3VpLmpwIiwidHN1cnVnYS5mdWt1aS5qcCIsIndha2FzYS5mdWt1aS5qcCIsImFzaGl5YS5mdWt1b2thLmpwIiwiYnV6ZW4uZnVrdW9rYS5qcCIsImNoaWt1Z28uZnVrdW9rYS5qcCIsImNoaWt1''@;'; put 'put ''aG8uZnVrdW9rYS5qcCIsImNoaWt1am8uZnVrdW9rYS5qcCIsImNoaWt1c2hpbm8uZnVrdW9rYS5qcCIsImNoaWt1emVuLmZ1a3Vva2EuanAiLCJjaHVvLmZ1a3Vva2EuanAiLCJkYXphaWZ1LmZ1a3Vva2EuanAiLCJmdWt1Y2hpLmZ1a3Vva2EuanAiLCJoYWthdGEuZnVrdW9rYS5qcCIsImhp''@;'; put 'put ''Z2FzaGkuZnVrdW9rYS5qcCIsImhpcm9rYXdhLmZ1a3Vva2EuanAiLCJoaXNheWFtYS5mdWt1b2thLmpwIiwiaWl6dWthLmZ1a3Vva2EuanAiLCJpbmF0c3VraS5mdWt1b2thLmpwIiwia2Foby5mdWt1b2thLmpwIiwia2FzdWdhLmZ1a3Vva2EuanAiLCJrYXN1eWEuZnVrdW9rYS5qcCIsImth''@;'; put 'put ''d2FyYS5mdWt1b2thLmpwIiwia2Vpc2VuLmZ1a3Vva2EuanAiLCJrb2dhLmZ1a3Vva2EuanAiLCJrdXJhdGUuZnVrdW9rYS5qcCIsImt1cm9naS5mdWt1b2thLmpwIiwia3VydW1lLmZ1a3Vva2EuanAiLCJtaW5hbWkuZnVrdW9rYS5qcCIsIm1peWFrby5mdWt1b2thLmpwIiwibWl5YW1hLmZ1''@;'; put 'put ''a3Vva2EuanAiLCJtaXlhd2FrYS5mdWt1b2thLmpwIiwibWl6dW1ha2kuZnVrdW9rYS5qcCIsIm11bmFrYXRhLmZ1a3Vva2EuanAiLCJuYWthZ2F3YS5mdWt1b2thLmpwIiwibmFrYW1hLmZ1a3Vva2EuanAiLCJuaXNoaS5mdWt1b2thLmpwIiwibm9nYXRhLmZ1a3Vva2EuanAiLCJvZ29yaS5m''@;'; put 'put ''dWt1b2thLmpwIiwib2thZ2FraS5mdWt1b2thLmpwIiwib2thd2EuZnVrdW9rYS5qcCIsIm9raS5mdWt1b2thLmpwIiwib211dGEuZnVrdW9rYS5qcCIsIm9uZ2EuZnVrdW9rYS5qcCIsIm9ub2pvLmZ1a3Vva2EuanAiLCJvdG8uZnVrdW9rYS5qcCIsInNhaWdhd2EuZnVrdW9rYS5qcCIsInNh''@;'; put 'put ''c2FndXJpLmZ1a3Vva2EuanAiLCJzaGluZ3UuZnVrdW9rYS5qcCIsInNoaW55b3NoaXRvbWkuZnVrdW9rYS5qcCIsInNob25haS5mdWt1b2thLmpwIiwic29lZGEuZnVrdW9rYS5qcCIsInN1ZS5mdWt1b2thLmpwIiwidGFjaGlhcmFpLmZ1a3Vva2EuanAiLCJ0YWdhd2EuZnVrdW9rYS5qcCIs''@;'; put 'put ''InRha2F0YS5mdWt1b2thLmpwIiwidG9oby5mdWt1b2thLmpwIiwidG95b3RzdS5mdWt1b2thLmpwIiwidHN1aWtpLmZ1a3Vva2EuanAiLCJ1a2loYS5mdWt1b2thLmpwIiwidW1pLmZ1a3Vva2EuanAiLCJ1c3VpLmZ1a3Vva2EuanAiLCJ5YW1hZGEuZnVrdW9rYS5qcCIsInlhbWUuZnVrdW9r''@;'; put 'put ''YS5qcCIsInlhbmFnYXdhLmZ1a3Vva2EuanAiLCJ5dWt1aGFzaGkuZnVrdW9rYS5qcCIsImFpenViYW5nZS5mdWt1c2hpbWEuanAiLCJhaXp1bWlzYXRvLmZ1a3VzaGltYS5qcCIsImFpenV3YWthbWF0c3UuZnVrdXNoaW1hLmpwIiwiYXNha2F3YS5mdWt1c2hpbWEuanAiLCJiYW5kYWkuZnVr''@;'; put 'put ''dXNoaW1hLmpwIiwiZGF0ZS5mdWt1c2hpbWEuanAiLCJmdWt1c2hpbWEuZnVrdXNoaW1hLmpwIiwiZnVydWRvbm8uZnVrdXNoaW1hLmpwIiwiZnV0YWJhLmZ1a3VzaGltYS5qcCIsImhhbmF3YS5mdWt1c2hpbWEuanAiLCJoaWdhc2hpLmZ1a3VzaGltYS5qcCIsImhpcmF0YS5mdWt1c2hpbWEu''@;'; put 'put ''anAiLCJoaXJvbm8uZnVrdXNoaW1hLmpwIiwiaWl0YXRlLmZ1a3VzaGltYS5qcCIsImluYXdhc2hpcm8uZnVrdXNoaW1hLmpwIiwiaXNoaWthd2EuZnVrdXNoaW1hLmpwIiwiaXdha2kuZnVrdXNoaW1hLmpwIiwiaXp1bWl6YWtpLmZ1a3VzaGltYS5qcCIsImthZ2FtaWlzaGkuZnVrdXNoaW1h''@;'; put 'put ''LmpwIiwia2FuZXlhbWEuZnVrdXNoaW1hLmpwIiwia2F3YW1hdGEuZnVrdXNoaW1hLmpwIiwia2l0YWthdGEuZnVrdXNoaW1hLmpwIiwia2l0YXNoaW9iYXJhLmZ1a3VzaGltYS5qcCIsImtvb3JpLmZ1a3VzaGltYS5qcCIsImtvcml5YW1hLmZ1a3VzaGltYS5qcCIsImt1bmltaS5mdWt1c2hp''@;'; put 'put ''bWEuanAiLCJtaWhhcnUuZnVrdXNoaW1hLmpwIiwibWlzaGltYS5mdWt1c2hpbWEuanAiLCJuYW1pZS5mdWt1c2hpbWEuanAiLCJuYW5nby5mdWt1c2hpbWEuanAiLCJuaXNoaWFpenUuZnVrdXNoaW1hLmpwIiwibmlzaGlnby5mdWt1c2hpbWEuanAiLCJva3VtYS5mdWt1c2hpbWEuanAiLCJv''@;'; put 'put ''bW90ZWdvLmZ1a3VzaGltYS5qcCIsIm9uby5mdWt1c2hpbWEuanAiLCJvdGFtYS5mdWt1c2hpbWEuanAiLCJzYW1lZ2F3YS5mdWt1c2hpbWEuanAiLCJzaGltb2dvLmZ1a3VzaGltYS5qcCIsInNoaXJha2F3YS5mdWt1c2hpbWEuanAiLCJzaG93YS5mdWt1c2hpbWEuanAiLCJzb21hLmZ1a3Vz''@;'; put 'put ''aGltYS5qcCIsInN1a2FnYXdhLmZ1a3VzaGltYS5qcCIsInRhaXNoaW4uZnVrdXNoaW1hLmpwIiwidGFtYWthd2EuZnVrdXNoaW1hLmpwIiwidGFuYWd1cmEuZnVrdXNoaW1hLmpwIiwidGVuZWkuZnVrdXNoaW1hLmpwIiwieWFidWtpLmZ1a3VzaGltYS5qcCIsInlhbWF0by5mdWt1c2hpbWEu''@;'; put 'put ''anAiLCJ5YW1hdHN1cmkuZnVrdXNoaW1hLmpwIiwieWFuYWl6dS5mdWt1c2hpbWEuanAiLCJ5dWdhd2EuZnVrdXNoaW1hLmpwIiwiYW5wYWNoaS5naWZ1LmpwIiwiZW5hLmdpZnUuanAiLCJnaWZ1LmdpZnUuanAiLCJnaW5hbi5naWZ1LmpwIiwiZ29kby5naWZ1LmpwIiwiZ3Vqby5naWZ1Lmpw''@;'; put 'put ''IiwiaGFzaGltYS5naWZ1LmpwIiwiaGljaGlzby5naWZ1LmpwIiwiaGlkYS5naWZ1LmpwIiwiaGlnYXNoaXNoaXJha2F3YS5naWZ1LmpwIiwiaWJpZ2F3YS5naWZ1LmpwIiwiaWtlZGEuZ2lmdS5qcCIsImtha2FtaWdhaGFyYS5naWZ1LmpwIiwia2FuaS5naWZ1LmpwIiwia2FzYWhhcmEuZ2lm''@;'; put 'put ''dS5qcCIsImthc2FtYXRzdS5naWZ1LmpwIiwia2F3YXVlLmdpZnUuanAiLCJraXRhZ2F0YS5naWZ1LmpwIiwibWluby5naWZ1LmpwIiwibWlub2thbW8uZ2lmdS5qcCIsIm1pdGFrZS5naWZ1LmpwIiwibWl6dW5hbWkuZ2lmdS5qcCIsIm1vdG9zdS5naWZ1LmpwIiwibmFrYXRzdWdhd2EuZ2lm''@;'; put 'put ''dS5qcCIsIm9nYWtpLmdpZnUuanAiLCJzYWthaG9naS5naWZ1LmpwIiwic2VraS5naWZ1LmpwIiwic2VraWdhaGFyYS5naWZ1LmpwIiwic2hpcmFrYXdhLmdpZnUuanAiLCJ0YWppbWkuZ2lmdS5qcCIsInRha2F5YW1hLmdpZnUuanAiLCJ0YXJ1aS5naWZ1LmpwIiwidG9raS5naWZ1LmpwIiwi''@;'; put 'put ''dG9taWthLmdpZnUuanAiLCJ3YW5vdWNoaS5naWZ1LmpwIiwieWFtYWdhdGEuZ2lmdS5qcCIsInlhb3RzdS5naWZ1LmpwIiwieW9yby5naWZ1LmpwIiwiYW5uYWthLmd1bm1hLmpwIiwiY2hpeW9kYS5ndW5tYS5qcCIsImZ1amlva2EuZ3VubWEuanAiLCJoaWdhc2hpYWdhdHN1bWEuZ3VubWEu''@;'; put 'put ''anAiLCJpc2VzYWtpLmd1bm1hLmpwIiwiaXRha3VyYS5ndW5tYS5qcCIsImthbm5hLmd1bm1hLmpwIiwia2FucmEuZ3VubWEuanAiLCJrYXRhc2hpbmEuZ3VubWEuanAiLCJrYXdhYmEuZ3VubWEuanAiLCJraXJ5dS5ndW5tYS5qcCIsImt1c2F0c3UuZ3VubWEuanAiLCJtYWViYXNoaS5ndW5t''@;'; put 'put ''YS5qcCIsIm1laXdhLmd1bm1hLmpwIiwibWlkb3JpLmd1bm1hLmpwIiwibWluYWthbWkuZ3VubWEuanAiLCJuYWdhbm9oYXJhLmd1bm1hLmpwIiwibmFrYW5vam8uZ3VubWEuanAiLCJuYW5tb2t1Lmd1bm1hLmpwIiwibnVtYXRhLmd1bm1hLmpwIiwib2l6dW1pLmd1bm1hLmpwIiwib3JhLmd1''@;'; put 'put ''bm1hLmpwIiwib3RhLmd1bm1hLmpwIiwic2hpYnVrYXdhLmd1bm1hLmpwIiwic2hpbW9uaXRhLmd1bm1hLmpwIiwic2hpbnRvLmd1bm1hLmpwIiwic2hvd2EuZ3VubWEuanAiLCJ0YWthc2FraS5ndW5tYS5qcCIsInRha2F5YW1hLmd1bm1hLmpwIiwidGFtYW11cmEuZ3VubWEuanAiLCJ0YXRl''@;'; put 'put ''YmF5YXNoaS5ndW5tYS5qcCIsInRvbWlva2EuZ3VubWEuanAiLCJ0c3VraXlvbm8uZ3VubWEuanAiLCJ0c3VtYWdvaS5ndW5tYS5qcCIsInVlbm8uZ3VubWEuanAiLCJ5b3NoaW9rYS5ndW5tYS5qcCIsImFzYW1pbmFtaS5oaXJvc2hpbWEuanAiLCJkYWl3YS5oaXJvc2hpbWEuanAiLCJldGFq''@;'; put 'put ''aW1hLmhpcm9zaGltYS5qcCIsImZ1Y2h1Lmhpcm9zaGltYS5qcCIsImZ1a3V5YW1hLmhpcm9zaGltYS5qcCIsImhhdHN1a2FpY2hpLmhpcm9zaGltYS5qcCIsImhpZ2FzaGloaXJvc2hpbWEuaGlyb3NoaW1hLmpwIiwiaG9uZ28uaGlyb3NoaW1hLmpwIiwiamluc2VraWtvZ2VuLmhpcm9zaGlt''@;'; put 'put ''YS5qcCIsImthaXRhLmhpcm9zaGltYS5qcCIsImt1aS5oaXJvc2hpbWEuanAiLCJrdW1hbm8uaGlyb3NoaW1hLmpwIiwia3VyZS5oaXJvc2hpbWEuanAiLCJtaWhhcmEuaGlyb3NoaW1hLmpwIiwibWl5b3NoaS5oaXJvc2hpbWEuanAiLCJuYWthLmhpcm9zaGltYS5qcCIsIm9ub21pY2hpLmhp''@;'; put 'put ''cm9zaGltYS5qcCIsIm9zYWtpa2FtaWppbWEuaGlyb3NoaW1hLmpwIiwib3Rha2UuaGlyb3NoaW1hLmpwIiwic2FrYS5oaXJvc2hpbWEuanAiLCJzZXJhLmhpcm9zaGltYS5qcCIsInNlcmFuaXNoaS5oaXJvc2hpbWEuanAiLCJzaGluaWNoaS5oaXJvc2hpbWEuanAiLCJzaG9iYXJhLmhpcm9z''@;'; put 'put ''aGltYS5qcCIsInRha2VoYXJhLmhpcm9zaGltYS5qcCIsImFiYXNoaXJpLmhva2thaWRvLmpwIiwiYWJpcmEuaG9ra2FpZG8uanAiLCJhaWJldHN1Lmhva2thaWRvLmpwIiwiYWthYmlyYS5ob2trYWlkby5qcCIsImFra2VzaGkuaG9ra2FpZG8uanAiLCJhc2FoaWthd2EuaG9ra2FpZG8uanAi''@;'; put 'put ''LCJhc2hpYmV0c3UuaG9ra2FpZG8uanAiLCJhc2hvcm8uaG9ra2FpZG8uanAiLCJhc3NhYnUuaG9ra2FpZG8uanAiLCJhdHN1bWEuaG9ra2FpZG8uanAiLCJiaWJhaS5ob2trYWlkby5qcCIsImJpZWkuaG9ra2FpZG8uanAiLCJiaWZ1a2EuaG9ra2FpZG8uanAiLCJiaWhvcm8uaG9ra2FpZG8u''@;'; put 'put ''anAiLCJiaXJhdG9yaS5ob2trYWlkby5qcCIsImNoaXBwdWJldHN1Lmhva2thaWRvLmpwIiwiY2hpdG9zZS5ob2trYWlkby5qcCIsImRhdGUuaG9ra2FpZG8uanAiLCJlYmV0c3UuaG9ra2FpZG8uanAiLCJlbWJldHN1Lmhva2thaWRvLmpwIiwiZW5pd2EuaG9ra2FpZG8uanAiLCJlcmltby5o''@;'; put 'put ''b2trYWlkby5qcCIsImVzYW4uaG9ra2FpZG8uanAiLCJlc2FzaGkuaG9ra2FpZG8uanAiLCJmdWthZ2F3YS5ob2trYWlkby5qcCIsImZ1a3VzaGltYS5ob2trYWlkby5qcCIsImZ1cmFuby5ob2trYWlkby5qcCIsImZ1cnViaXJhLmhva2thaWRvLmpwIiwiaGFib3JvLmhva2thaWRvLmpwIiwi''@;'; put 'put ''aGFrb2RhdGUuaG9ra2FpZG8uanAiLCJoYW1hdG9uYmV0c3UuaG9ra2FpZG8uanAiLCJoaWRha2EuaG9ra2FpZG8uanAiLCJoaWdhc2hpa2FndXJhLmhva2thaWRvLmpwIiwiaGlnYXNoaWthd2EuaG9ra2FpZG8uanAiLCJoaXJvby5ob2trYWlkby5qcCIsImhva3VyeXUuaG9ra2FpZG8uanAi''@;'; put 'put ''LCJob2t1dG8uaG9ra2FpZG8uanAiLCJob25iZXRzdS5ob2trYWlkby5qcCIsImhvcm9rYW5haS5ob2trYWlkby5qcCIsImhvcm9ub2JlLmhva2thaWRvLmpwIiwiaWtlZGEuaG9ra2FpZG8uanAiLCJpbWFrYW5lLmhva2thaWRvLmpwIiwiaXNoaWthcmkuaG9ra2FpZG8uanAiLCJpd2FtaXph''@;'; put 'put ''d2EuaG9ra2FpZG8uanAiLCJpd2FuYWkuaG9ra2FpZG8uanAiLCJrYW1pZnVyYW5vLmhva2thaWRvLmpwIiwia2FtaWthd2EuaG9ra2FpZG8uanAiLCJrYW1pc2hpaG9yby5ob2trYWlkby5qcCIsImthbWlzdW5hZ2F3YS5ob2trYWlkby5qcCIsImthbW9lbmFpLmhva2thaWRvLmpwIiwia2F5''@;'; put 'put ''YWJlLmhva2thaWRvLmpwIiwia2VtYnVjaGkuaG9ra2FpZG8uanAiLCJraWtvbmFpLmhva2thaWRvLmpwIiwia2ltb2JldHN1Lmhva2thaWRvLmpwIiwia2l0YWhpcm9zaGltYS5ob2trYWlkby5qcCIsImtpdGFtaS5ob2trYWlkby5qcCIsImtpeW9zYXRvLmhva2thaWRvLmpwIiwia29zaGlt''@;'; put 'put ''aXp1Lmhva2thaWRvLmpwIiwia3VubmVwcHUuaG9ra2FpZG8uanAiLCJrdXJpeWFtYS5ob2trYWlkby5qcCIsImt1cm9tYXRzdW5haS5ob2trYWlkby5qcCIsImt1c2hpcm8uaG9ra2FpZG8uanAiLCJrdXRjaGFuLmhva2thaWRvLmpwIiwia3lvd2EuaG9ra2FpZG8uanAiLCJtYXNoaWtlLmhv''@;'; put 'put ''a2thaWRvLmpwIiwibWF0c3VtYWUuaG9ra2FpZG8uanAiLCJtaWthc2EuaG9ra2FpZG8uanAiLCJtaW5hbWlmdXJhbm8uaG9ra2FpZG8uanAiLCJtb21iZXRzdS5ob2trYWlkby5qcCIsIm1vc2V1c2hpLmhva2thaWRvLmpwIiwibXVrYXdhLmhva2thaWRvLmpwIiwibXVyb3Jhbi5ob2trYWlk''@;'; put 'put ''by5qcCIsIm5haWUuaG9ra2FpZG8uanAiLCJuYWthZ2F3YS5ob2trYWlkby5qcCIsIm5ha2FzYXRzdW5haS5ob2trYWlkby5qcCIsIm5ha2F0b21iZXRzdS5ob2trYWlkby5qcCIsIm5hbmFlLmhva2thaWRvLmpwIiwibmFucG9yby5ob2trYWlkby5qcCIsIm5heW9yby5ob2trYWlkby5qcCIs''@;'; put 'put ''Im5lbXVyby5ob2trYWlkby5qcCIsIm5paWthcHB1Lmhva2thaWRvLmpwIiwibmlraS5ob2trYWlkby5qcCIsIm5pc2hpb2tvcHBlLmhva2thaWRvLmpwIiwibm9ib3JpYmV0c3UuaG9ra2FpZG8uanAiLCJudW1hdGEuaG9ra2FpZG8uanAiLCJvYmloaXJvLmhva2thaWRvLmpwIiwib2JpcmEu''@;'; put 'put ''aG9ra2FpZG8uanAiLCJva2V0by5ob2trYWlkby5qcCIsIm9rb3BwZS5ob2trYWlkby5qcCIsIm90YXJ1Lmhva2thaWRvLmpwIiwib3RvYmUuaG9ra2FpZG8uanAiLCJvdG9mdWtlLmhva2thaWRvLmpwIiwib3RvaW5lcHB1Lmhva2thaWRvLmpwIiwib3VtdS5ob2trYWlkby5qcCIsIm96b3Jh''@;'; put 'put ''Lmhva2thaWRvLmpwIiwicGlwcHUuaG9ra2FpZG8uanAiLCJyYW5rb3NoaS5ob2trYWlkby5qcCIsInJlYnVuLmhva2thaWRvLmpwIiwicmlrdWJldHN1Lmhva2thaWRvLmpwIiwicmlzaGlyaS5ob2trYWlkby5qcCIsInJpc2hpcmlmdWppLmhva2thaWRvLmpwIiwic2Fyb21hLmhva2thaWRv''@;'; put 'put ''LmpwIiwic2FydWZ1dHN1Lmhva2thaWRvLmpwIiwic2hha290YW4uaG9ra2FpZG8uanAiLCJzaGFyaS5ob2trYWlkby5qcCIsInNoaWJlY2hhLmhva2thaWRvLmpwIiwic2hpYmV0c3UuaG9ra2FpZG8uanAiLCJzaGlrYWJlLmhva2thaWRvLmpwIiwic2hpa2FvaS5ob2trYWlkby5qcCIsInNo''@;'; put 'put ''aW1hbWFraS5ob2trYWlkby5qcCIsInNoaW1penUuaG9ra2FpZG8uanAiLCJzaGltb2thd2EuaG9ra2FpZG8uanAiLCJzaGluc2hpbm90c3UuaG9ra2FpZG8uanAiLCJzaGludG9rdS5ob2trYWlkby5qcCIsInNoaXJhbnVrYS5ob2trYWlkby5qcCIsInNoaXJhb2kuaG9ra2FpZG8uanAiLCJz''@;'; put 'put ''aGlyaXVjaGkuaG9ra2FpZG8uanAiLCJzb2JldHN1Lmhva2thaWRvLmpwIiwic3VuYWdhd2EuaG9ra2FpZG8uanAiLCJ0YWlraS5ob2trYWlkby5qcCIsInRha2FzdS5ob2trYWlkby5qcCIsInRha2lrYXdhLmhva2thaWRvLmpwIiwidGFraW5vdWUuaG9ra2FpZG8uanAiLCJ0ZXNoaWthZ2Eu''@;'; put 'put ''aG9ra2FpZG8uanAiLCJ0b2JldHN1Lmhva2thaWRvLmpwIiwidG9obWEuaG9ra2FpZG8uanAiLCJ0b21ha29tYWkuaG9ra2FpZG8uanAiLCJ0b21hcmkuaG9ra2FpZG8uanAiLCJ0b3lhLmhva2thaWRvLmpwIiwidG95YWtvLmhva2thaWRvLmpwIiwidG95b3RvbWkuaG9ra2FpZG8uanAiLCJ0''@;'; put 'put ''b3lvdXJhLmhva2thaWRvLmpwIiwidHN1YmV0c3UuaG9ra2FpZG8uanAiLCJ0c3VraWdhdGEuaG9ra2FpZG8uanAiLCJ1cmFrYXdhLmhva2thaWRvLmpwIiwidXJhdXN1Lmhva2thaWRvLmpwIiwidXJ5dS5ob2trYWlkby5qcCIsInV0YXNoaW5haS5ob2trYWlkby5qcCIsIndha2thbmFpLmhv''@;'; put 'put ''a2thaWRvLmpwIiwid2Fzc2FtdS5ob2trYWlkby5qcCIsInlha3Vtby5ob2trYWlkby5qcCIsInlvaWNoaS5ob2trYWlkby5qcCIsImFpb2kuaHlvZ28uanAiLCJha2FzaGkuaHlvZ28uanAiLCJha28uaHlvZ28uanAiLCJhbWFnYXNha2kuaHlvZ28uanAiLCJhb2dha2kuaHlvZ28uanAiLCJh''@;'; put 'put ''c2Fnby5oeW9nby5qcCIsImFzaGl5YS5oeW9nby5qcCIsImF3YWppLmh5b2dvLmpwIiwiZnVrdXNha2kuaHlvZ28uanAiLCJnb3NoaWtpLmh5b2dvLmpwIiwiaGFyaW1hLmh5b2dvLmpwIiwiaGltZWppLmh5b2dvLmpwIiwiaWNoaWthd2EuaHlvZ28uanAiLCJpbmFnYXdhLmh5b2dvLmpwIiwi''@;'; put 'put ''aXRhbWkuaHlvZ28uanAiLCJrYWtvZ2F3YS5oeW9nby5qcCIsImthbWlnb3JpLmh5b2dvLmpwIiwia2FtaWthd2EuaHlvZ28uanAiLCJrYXNhaS5oeW9nby5qcCIsImthc3VnYS5oeW9nby5qcCIsImthd2FuaXNoaS5oeW9nby5qcCIsIm1pa2kuaHlvZ28uanAiLCJtaW5hbWlhd2FqaS5oeW9n''@;'; put 'put ''by5qcCIsIm5pc2hpbm9taXlhLmh5b2dvLmpwIiwibmlzaGl3YWtpLmh5b2dvLmpwIiwib25vLmh5b2dvLmpwIiwic2FuZGEuaHlvZ28uanAiLCJzYW5uYW4uaHlvZ28uanAiLCJzYXNheWFtYS5oeW9nby5qcCIsInNheW8uaHlvZ28uanAiLCJzaGluZ3UuaHlvZ28uanAiLCJzaGlub25zZW4u''@;'; put 'put ''aHlvZ28uanAiLCJzaGlzby5oeW9nby5qcCIsInN1bW90by5oeW9nby5qcCIsInRhaXNoaS5oeW9nby5qcCIsInRha2EuaHlvZ28uanAiLCJ0YWthcmF6dWthLmh5b2dvLmpwIiwidGFrYXNhZ28uaHlvZ28uanAiLCJ0YWtpbm8uaHlvZ28uanAiLCJ0YW1iYS5oeW9nby5qcCIsInRhdHN1bm8u''@;'; put 'put ''aHlvZ28uanAiLCJ0b3lvb2thLmh5b2dvLmpwIiwieWFidS5oeW9nby5qcCIsInlhc2hpcm8uaHlvZ28uanAiLCJ5b2thLmh5b2dvLmpwIiwieW9rYXdhLmh5b2dvLmpwIiwiYW1pLmliYXJha2kuanAiLCJhc2FoaS5pYmFyYWtpLmpwIiwiYmFuZG8uaWJhcmFraS5qcCIsImNoaWt1c2VpLmli''@;'; put 'put ''YXJha2kuanAiLCJkYWlnby5pYmFyYWtpLmpwIiwiZnVqaXNoaXJvLmliYXJha2kuanAiLCJoaXRhY2hpLmliYXJha2kuanAiLCJoaXRhY2hpbmFrYS5pYmFyYWtpLmpwIiwiaGl0YWNoaW9taXlhLmliYXJha2kuanAiLCJoaXRhY2hpb3RhLmliYXJha2kuanAiLCJpYmFyYWtpLmliYXJha2ku''@;'; put 'put ''anAiLCJpbmEuaWJhcmFraS5qcCIsImluYXNoaWtpLmliYXJha2kuanAiLCJpdGFrby5pYmFyYWtpLmpwIiwiaXdhbWEuaWJhcmFraS5qcCIsImpvc28uaWJhcmFraS5qcCIsImthbWlzdS5pYmFyYWtpLmpwIiwia2FzYW1hLmliYXJha2kuanAiLCJrYXNoaW1hLmliYXJha2kuanAiLCJrYXN1''@;'; put 'put ''bWlnYXVyYS5pYmFyYWtpLmpwIiwia29nYS5pYmFyYWtpLmpwIiwibWloby5pYmFyYWtpLmpwIiwibWl0by5pYmFyYWtpLmpwIiwibW9yaXlhLmliYXJha2kuanAiLCJuYWthLmliYXJha2kuanAiLCJuYW1lZ2F0YS5pYmFyYWtpLmpwIiwib2FyYWkuaWJhcmFraS5qcCIsIm9nYXdhLmliYXJh''@;'; put 'put ''a2kuanAiLCJvbWl0YW1hLmliYXJha2kuanAiLCJyeXVnYXNha2kuaWJhcmFraS5qcCIsInNha2FpLmliYXJha2kuanAiLCJzYWt1cmFnYXdhLmliYXJha2kuanAiLCJzaGltb2RhdGUuaWJhcmFraS5qcCIsInNoaW1vdHN1bWEuaWJhcmFraS5qcCIsInNoaXJvc2F0by5pYmFyYWtpLmpwIiwi''@;'; put 'put ''c293YS5pYmFyYWtpLmpwIiwic3VpZnUuaWJhcmFraS5qcCIsInRha2FoYWdpLmliYXJha2kuanAiLCJ0YW1hdHN1a3VyaS5pYmFyYWtpLmpwIiwidG9rYWkuaWJhcmFraS5qcCIsInRvbW9iZS5pYmFyYWtpLmpwIiwidG9uZS5pYmFyYWtpLmpwIiwidG9yaWRlLmliYXJha2kuanAiLCJ0c3Vj''@;'; put 'put ''aGl1cmEuaWJhcmFraS5qcCIsInRzdWt1YmEuaWJhcmFraS5qcCIsInVjaGloYXJhLmliYXJha2kuanAiLCJ1c2hpa3UuaWJhcmFraS5qcCIsInlhY2hpeW8uaWJhcmFraS5qcCIsInlhbWFnYXRhLmliYXJha2kuanAiLCJ5YXdhcmEuaWJhcmFraS5qcCIsInl1a2kuaWJhcmFraS5qcCIsImFu''@;'; put 'put ''YW1penUuaXNoaWthd2EuanAiLCJoYWt1aS5pc2hpa2F3YS5qcCIsImhha3VzYW4uaXNoaWthd2EuanAiLCJrYWdhLmlzaGlrYXdhLmpwIiwia2Fob2t1LmlzaGlrYXdhLmpwIiwia2FuYXphd2EuaXNoaWthd2EuanAiLCJrYXdha2l0YS5pc2hpa2F3YS5qcCIsImtvbWF0c3UuaXNoaWthd2Eu''@;'; put 'put ''anAiLCJuYWthbm90by5pc2hpa2F3YS5qcCIsIm5hbmFvLmlzaGlrYXdhLmpwIiwibm9taS5pc2hpa2F3YS5qcCIsIm5vbm9pY2hpLmlzaGlrYXdhLmpwIiwibm90by5pc2hpa2F3YS5qcCIsInNoaWthLmlzaGlrYXdhLmpwIiwic3V6dS5pc2hpa2F3YS5qcCIsInRzdWJhdGEuaXNoaWthd2Eu''@;'; put 'put ''anAiLCJ0c3VydWdpLmlzaGlrYXdhLmpwIiwidWNoaW5hZGEuaXNoaWthd2EuanAiLCJ3YWppbWEuaXNoaWthd2EuanAiLCJmdWRhaS5pd2F0ZS5qcCIsImZ1amlzYXdhLml3YXRlLmpwIiwiaGFuYW1ha2kuaXdhdGUuanAiLCJoaXJhaXp1bWkuaXdhdGUuanAiLCJoaXJvbm8uaXdhdGUuanAi''@;'; put 'put ''LCJpY2hpbm9oZS5pd2F0ZS5qcCIsImljaGlub3Nla2kuaXdhdGUuanAiLCJpd2FpenVtaS5pd2F0ZS5qcCIsIml3YXRlLml3YXRlLmpwIiwiam9ib2ppLml3YXRlLmpwIiwia2FtYWlzaGkuaXdhdGUuanAiLCJrYW5lZ2FzYWtpLml3YXRlLmpwIiwia2FydW1haS5pd2F0ZS5qcCIsImthd2Fp''@;'; put 'put ''Lml3YXRlLmpwIiwia2l0YWthbWkuaXdhdGUuanAiLCJrdWppLml3YXRlLmpwIiwia3Vub2hlLml3YXRlLmpwIiwia3V6dW1ha2kuaXdhdGUuanAiLCJtaXlha28uaXdhdGUuanAiLCJtaXp1c2F3YS5pd2F0ZS5qcCIsIm1vcmlva2EuaXdhdGUuanAiLCJuaW5vaGUuaXdhdGUuanAiLCJub2Rh''@;'; put 'put ''Lml3YXRlLmpwIiwib2Z1bmF0by5pd2F0ZS5qcCIsIm9zaHUuaXdhdGUuanAiLCJvdHN1Y2hpLml3YXRlLmpwIiwicmlrdXplbnRha2F0YS5pd2F0ZS5qcCIsInNoaXdhLml3YXRlLmpwIiwic2hpenVrdWlzaGkuaXdhdGUuanAiLCJzdW1pdGEuaXdhdGUuanAiLCJ0YW5vaGF0YS5pd2F0ZS5q''@;'; put 'put ''cCIsInRvbm8uaXdhdGUuanAiLCJ5YWhhYmEuaXdhdGUuanAiLCJ5YW1hZGEuaXdhdGUuanAiLCJheWFnYXdhLmthZ2F3YS5qcCIsImhpZ2FzaGlrYWdhd2Eua2FnYXdhLmpwIiwia2Fub25qaS5rYWdhd2EuanAiLCJrb3RvaGlyYS5rYWdhd2EuanAiLCJtYW5uby5rYWdhd2EuanAiLCJtYXJ1''@;'; put 'put ''Z2FtZS5rYWdhd2EuanAiLCJtaXRveW8ua2FnYXdhLmpwIiwibmFvc2hpbWEua2FnYXdhLmpwIiwic2FudWtpLmthZ2F3YS5qcCIsInRhZG90c3Uua2FnYXdhLmpwIiwidGFrYW1hdHN1LmthZ2F3YS5qcCIsInRvbm9zaG8ua2FnYXdhLmpwIiwidWNoaW5vbWkua2FnYXdhLmpwIiwidXRhenUu''@;'; put 'put ''a2FnYXdhLmpwIiwiemVudHN1amkua2FnYXdhLmpwIiwiYWt1bmUua2Fnb3NoaW1hLmpwIiwiYW1hbWkua2Fnb3NoaW1hLmpwIiwiaGlva2kua2Fnb3NoaW1hLmpwIiwiaXNhLmthZ29zaGltYS5qcCIsImlzZW4ua2Fnb3NoaW1hLmpwIiwiaXp1bWkua2Fnb3NoaW1hLmpwIiwia2Fnb3NoaW1h''@;'; put 'put ''LmthZ29zaGltYS5qcCIsImthbm95YS5rYWdvc2hpbWEuanAiLCJrYXdhbmFiZS5rYWdvc2hpbWEuanAiLCJraW5rby5rYWdvc2hpbWEuanAiLCJrb3V5YW1hLmthZ29zaGltYS5qcCIsIm1ha3VyYXpha2kua2Fnb3NoaW1hLmpwIiwibWF0c3Vtb3RvLmthZ29zaGltYS5qcCIsIm1pbmFtaXRh''@;'; put 'put ''bmUua2Fnb3NoaW1hLmpwIiwibmFrYXRhbmUua2Fnb3NoaW1hLmpwIiwibmlzaGlub29tb3RlLmthZ29zaGltYS5qcCIsInNhdHN1bWFzZW5kYWkua2Fnb3NoaW1hLmpwIiwic29vLmthZ29zaGltYS5qcCIsInRhcnVtaXp1LmthZ29zaGltYS5qcCIsInl1c3VpLmthZ29zaGltYS5qcCIsImFp''@;'; put 'put ''a2F3YS5rYW5hZ2F3YS5qcCIsImF0c3VnaS5rYW5hZ2F3YS5qcCIsImF5YXNlLmthbmFnYXdhLmpwIiwiY2hpZ2FzYWtpLmthbmFnYXdhLmpwIiwiZWJpbmEua2FuYWdhd2EuanAiLCJmdWppc2F3YS5rYW5hZ2F3YS5qcCIsImhhZGFuby5rYW5hZ2F3YS5qcCIsImhha29uZS5rYW5hZ2F3YS5q''@;'; put 'put ''cCIsImhpcmF0c3VrYS5rYW5hZ2F3YS5qcCIsImlzZWhhcmEua2FuYWdhd2EuanAiLCJrYWlzZWkua2FuYWdhd2EuanAiLCJrYW1ha3VyYS5rYW5hZ2F3YS5qcCIsImtpeW9rYXdhLmthbmFnYXdhLmpwIiwibWF0c3VkYS5rYW5hZ2F3YS5qcCIsIm1pbmFtaWFzaGlnYXJhLmthbmFnYXdhLmpw''@;'; put 'put ''IiwibWl1cmEua2FuYWdhd2EuanAiLCJuYWthaS5rYW5hZ2F3YS5qcCIsIm5pbm9taXlhLmthbmFnYXdhLmpwIiwib2Rhd2FyYS5rYW5hZ2F3YS5qcCIsIm9pLmthbmFnYXdhLmpwIiwib2lzby5rYW5hZ2F3YS5qcCIsInNhZ2FtaWhhcmEua2FuYWdhd2EuanAiLCJzYW11a2F3YS5rYW5hZ2F3''@;'; put 'put ''YS5qcCIsInRzdWt1aS5rYW5hZ2F3YS5qcCIsInlhbWFraXRhLmthbmFnYXdhLmpwIiwieWFtYXRvLmthbmFnYXdhLmpwIiwieW9rb3N1a2Eua2FuYWdhd2EuanAiLCJ5dWdhd2FyYS5rYW5hZ2F3YS5qcCIsInphbWEua2FuYWdhd2EuanAiLCJ6dXNoaS5rYW5hZ2F3YS5qcCIsImFraS5rb2No''@;'; put 'put ''aS5qcCIsImdlaXNlaS5rb2NoaS5qcCIsImhpZGFrYS5rb2NoaS5qcCIsImhpZ2FzaGl0c3Vuby5rb2NoaS5qcCIsImluby5rb2NoaS5qcCIsImthZ2FtaS5rb2NoaS5qcCIsImthbWkua29jaGkuanAiLCJraXRhZ2F3YS5rb2NoaS5qcCIsImtvY2hpLmtvY2hpLmpwIiwibWloYXJhLmtvY2hp''@;'; put 'put ''LmpwIiwibW90b3lhbWEua29jaGkuanAiLCJtdXJvdG8ua29jaGkuanAiLCJuYWhhcmkua29jaGkuanAiLCJuYWthbXVyYS5rb2NoaS5qcCIsIm5hbmtva3Uua29jaGkuanAiLCJuaXNoaXRvc2Eua29jaGkuanAiLCJuaXlvZG9nYXdhLmtvY2hpLmpwIiwib2NoaS5rb2NoaS5qcCIsIm9rYXdh''@;'; put 'put ''LmtvY2hpLmpwIiwib3RveW8ua29jaGkuanAiLCJvdHN1a2kua29jaGkuanAiLCJzYWthd2Eua29jaGkuanAiLCJzdWt1bW8ua29jaGkuanAiLCJzdXNha2kua29jaGkuanAiLCJ0b3NhLmtvY2hpLmpwIiwidG9zYXNoaW1penUua29jaGkuanAiLCJ0b3lvLmtvY2hpLmpwIiwidHN1bm8ua29j''@;'; put 'put ''aGkuanAiLCJ1bWFqaS5rb2NoaS5qcCIsInlhc3VkYS5rb2NoaS5qcCIsInl1c3VoYXJhLmtvY2hpLmpwIiwiYW1ha3VzYS5rdW1hbW90by5qcCIsImFyYW8ua3VtYW1vdG8uanAiLCJhc28ua3VtYW1vdG8uanAiLCJjaG95by5rdW1hbW90by5qcCIsImd5b2t1dG8ua3VtYW1vdG8uanAiLCJr''@;'; put 'put ''YW1pYW1ha3VzYS5rdW1hbW90by5qcCIsImtpa3VjaGkua3VtYW1vdG8uanAiLCJrdW1hbW90by5rdW1hbW90by5qcCIsIm1hc2hpa2kua3VtYW1vdG8uanAiLCJtaWZ1bmUua3VtYW1vdG8uanAiLCJtaW5hbWF0YS5rdW1hbW90by5qcCIsIm1pbmFtaW9ndW5pLmt1bWFtb3RvLmpwIiwibmFn''@;'; put 'put ''YXN1Lmt1bWFtb3RvLmpwIiwibmlzaGloYXJhLmt1bWFtb3RvLmpwIiwib2d1bmkua3VtYW1vdG8uanAiLCJvenUua3VtYW1vdG8uanAiLCJzdW1vdG8ua3VtYW1vdG8uanAiLCJ0YWthbW9yaS5rdW1hbW90by5qcCIsInVraS5rdW1hbW90by5qcCIsInV0by5rdW1hbW90by5qcCIsInlhbWFn''@;'; put 'put ''YS5rdW1hbW90by5qcCIsInlhbWF0by5rdW1hbW90by5qcCIsInlhdHN1c2hpcm8ua3VtYW1vdG8uanAiLCJheWFiZS5reW90by5qcCIsImZ1a3VjaGl5YW1hLmt5b3RvLmpwIiwiaGlnYXNoaXlhbWEua3lvdG8uanAiLCJpZGUua3lvdG8uanAiLCJpbmUua3lvdG8uanAiLCJqb3lvLmt5b3Rv''@;'; put 'put ''LmpwIiwia2FtZW9rYS5reW90by5qcCIsImthbW8ua3lvdG8uanAiLCJraXRhLmt5b3RvLmpwIiwia2l6dS5reW90by5qcCIsImt1bWl5YW1hLmt5b3RvLmpwIiwia3lvdGFtYmEua3lvdG8uanAiLCJreW90YW5hYmUua3lvdG8uanAiLCJreW90YW5nby5reW90by5qcCIsIm1haXp1cnUua3lv''@;'; put 'put ''dG8uanAiLCJtaW5hbWkua3lvdG8uanAiLCJtaW5hbWl5YW1hc2hpcm8ua3lvdG8uanAiLCJtaXlhenUua3lvdG8uanAiLCJtdWtvLmt5b3RvLmpwIiwibmFnYW9rYWt5by5reW90by5qcCIsIm5ha2FneW8ua3lvdG8uanAiLCJuYW50YW4ua3lvdG8uanAiLCJveWFtYXpha2kua3lvdG8uanAi''@;'; put 'put ''LCJzYWt5by5reW90by5qcCIsInNlaWthLmt5b3RvLmpwIiwidGFuYWJlLmt5b3RvLmpwIiwidWppLmt5b3RvLmpwIiwidWppdGF3YXJhLmt5b3RvLmpwIiwid2F6dWthLmt5b3RvLmpwIiwieWFtYXNoaW5hLmt5b3RvLmpwIiwieWF3YXRhLmt5b3RvLmpwIiwiYXNhaGkubWllLmpwIiwiaW5h''@;'; put 'put ''YmUubWllLmpwIiwiaXNlLm1pZS5qcCIsImthbWV5YW1hLm1pZS5qcCIsImthd2Fnb2UubWllLmpwIiwia2loby5taWUuanAiLCJraXNvc2FraS5taWUuanAiLCJraXdhLm1pZS5qcCIsImtvbW9uby5taWUuanAiLCJrdW1hbm8ubWllLmpwIiwia3V3YW5hLm1pZS5qcCIsIm1hdHN1c2FrYS5t''@;'; put 'put ''aWUuanAiLCJtZWl3YS5taWUuanAiLCJtaWhhbWEubWllLmpwIiwibWluYW1paXNlLm1pZS5qcCIsIm1pc3VnaS5taWUuanAiLCJtaXlhbWEubWllLmpwIiwibmFiYXJpLm1pZS5qcCIsInNoaW1hLm1pZS5qcCIsInN1enVrYS5taWUuanAiLCJ0YWRvLm1pZS5qcCIsInRhaWtpLm1pZS5qcCIs''@;'; put 'put ''InRha2kubWllLmpwIiwidGFtYWtpLm1pZS5qcCIsInRvYmEubWllLmpwIiwidHN1Lm1pZS5qcCIsInVkb25vLm1pZS5qcCIsInVyZXNoaW5vLm1pZS5qcCIsIndhdGFyYWkubWllLmpwIiwieW9ra2FpY2hpLm1pZS5qcCIsImZ1cnVrYXdhLm1peWFnaS5qcCIsImhpZ2FzaGltYXRzdXNoaW1h''@;'; put 'put ''Lm1peWFnaS5qcCIsImlzaGlub21ha2kubWl5YWdpLmpwIiwiaXdhbnVtYS5taXlhZ2kuanAiLCJrYWt1ZGEubWl5YWdpLmpwIiwia2FtaS5taXlhZ2kuanAiLCJrYXdhc2FraS5taXlhZ2kuanAiLCJtYXJ1bW9yaS5taXlhZ2kuanAiLCJtYXRzdXNoaW1hLm1peWFnaS5qcCIsIm1pbmFtaXNh''@;'; put 'put ''bnJpa3UubWl5YWdpLmpwIiwibWlzYXRvLm1peWFnaS5qcCIsIm11cmF0YS5taXlhZ2kuanAiLCJuYXRvcmkubWl5YWdpLmpwIiwib2dhd2FyYS5taXlhZ2kuanAiLCJvaGlyYS5taXlhZ2kuanAiLCJvbmFnYXdhLm1peWFnaS5qcCIsIm9zYWtpLm1peWFnaS5qcCIsInJpZnUubWl5YWdpLmpw''@;'; put 'put ''Iiwic2VtaW5lLm1peWFnaS5qcCIsInNoaWJhdGEubWl5YWdpLmpwIiwic2hpY2hpa2FzaHVrdS5taXlhZ2kuanAiLCJzaGlrYW1hLm1peWFnaS5qcCIsInNoaW9nYW1hLm1peWFnaS5qcCIsInNoaXJvaXNoaS5taXlhZ2kuanAiLCJ0YWdham8ubWl5YWdpLmpwIiwidGFpd2EubWl5YWdpLmpw''@;'; put 'put ''IiwidG9tZS5taXlhZ2kuanAiLCJ0b21peWEubWl5YWdpLmpwIiwid2FrdXlhLm1peWFnaS5qcCIsIndhdGFyaS5taXlhZ2kuanAiLCJ5YW1hbW90by5taXlhZ2kuanAiLCJ6YW8ubWl5YWdpLmpwIiwiYXlhLm1peWF6YWtpLmpwIiwiZWJpbm8ubWl5YXpha2kuanAiLCJnb2thc2UubWl5YXph''@;'; put 'put ''a2kuanAiLCJoeXVnYS5taXlhemFraS5qcCIsImthZG9nYXdhLm1peWF6YWtpLmpwIiwia2F3YW1pbmFtaS5taXlhemFraS5qcCIsImtpam8ubWl5YXpha2kuanAiLCJraXRhZ2F3YS5taXlhemFraS5qcCIsImtpdGFrYXRhLm1peWF6YWtpLmpwIiwia2l0YXVyYS5taXlhemFraS5qcCIsImtv''@;'; put 'put ''YmF5YXNoaS5taXlhemFraS5qcCIsImt1bml0b21pLm1peWF6YWtpLmpwIiwia3VzaGltYS5taXlhemFraS5qcCIsIm1pbWF0YS5taXlhemFraS5qcCIsIm1peWFrb25vam8ubWl5YXpha2kuanAiLCJtaXlhemFraS5taXlhemFraS5qcCIsIm1vcm90c3VrYS5taXlhemFraS5qcCIsIm5pY2hp''@;'; put 'put ''bmFuLm1peWF6YWtpLmpwIiwibmlzaGltZXJhLm1peWF6YWtpLmpwIiwibm9iZW9rYS5taXlhemFraS5qcCIsInNhaXRvLm1peWF6YWtpLmpwIiwic2hpaWJhLm1peWF6YWtpLmpwIiwic2hpbnRvbWkubWl5YXpha2kuanAiLCJ0YWthaGFydS5taXlhemFraS5qcCIsInRha2FuYWJlLm1peWF6''@;'; put 'put ''YWtpLmpwIiwidGFrYXpha2kubWl5YXpha2kuanAiLCJ0c3Vuby5taXlhemFraS5qcCIsImFjaGkubmFnYW5vLmpwIiwiYWdlbWF0c3UubmFnYW5vLmpwIiwiYW5hbi5uYWdhbm8uanAiLCJhb2tpLm5hZ2Fuby5qcCIsImFzYWhpLm5hZ2Fuby5qcCIsImF6dW1pbm8ubmFnYW5vLmpwIiwiY2hp''@;'; put 'put ''a3Vob2t1Lm5hZ2Fuby5qcCIsImNoaWt1bWEubmFnYW5vLmpwIiwiY2hpbm8ubmFnYW5vLmpwIiwiZnVqaW1pLm5hZ2Fuby5qcCIsImhha3ViYS5uYWdhbm8uanAiLCJoYXJhLm5hZ2Fuby5qcCIsImhpcmF5YS5uYWdhbm8uanAiLCJpaWRhLm5hZ2Fuby5qcCIsImlpamltYS5uYWdhbm8uanAi''@;'; put 'put ''LCJpaXlhbWEubmFnYW5vLmpwIiwiaWl6dW5hLm5hZ2Fuby5qcCIsImlrZWRhLm5hZ2Fuby5qcCIsImlrdXNha2EubmFnYW5vLmpwIiwiaW5hLm5hZ2Fuby5qcCIsImthcnVpemF3YS5uYWdhbm8uanAiLCJrYXdha2FtaS5uYWdhbm8uanAiLCJraXNvLm5hZ2Fuby5qcCIsImtpc29mdWt1c2hp''@;'; put 'put ''bWEubmFnYW5vLmpwIiwia2l0YWFpa2kubmFnYW5vLmpwIiwia29tYWdhbmUubmFnYW5vLmpwIiwia29tb3JvLm5hZ2Fuby5qcCIsIm1hdHN1a2F3YS5uYWdhbm8uanAiLCJtYXRzdW1vdG8ubmFnYW5vLmpwIiwibWlhc2EubmFnYW5vLmpwIiwibWluYW1pYWlraS5uYWdhbm8uanAiLCJtaW5h''@;'; put 'put ''bWltYWtpLm5hZ2Fuby5qcCIsIm1pbmFtaW1pbm93YS5uYWdhbm8uanAiLCJtaW5vd2EubmFnYW5vLmpwIiwibWl5YWRhLm5hZ2Fuby5qcCIsIm1peW90YS5uYWdhbm8uanAiLCJtb2NoaXp1a2kubmFnYW5vLmpwIiwibmFnYW5vLm5hZ2Fuby5qcCIsIm5hZ2F3YS5uYWdhbm8uanAiLCJuYWdp''@;'; put 'put ''c28ubmFnYW5vLmpwIiwibmFrYWdhd2EubmFnYW5vLmpwIiwibmFrYW5vLm5hZ2Fuby5qcCIsIm5vemF3YW9uc2VuLm5hZ2Fuby5qcCIsIm9idXNlLm5hZ2Fuby5qcCIsIm9nYXdhLm5hZ2Fuby5qcCIsIm9rYXlhLm5hZ2Fuby5qcCIsIm9tYWNoaS5uYWdhbm8uanAiLCJvbWkubmFnYW5vLmpw''@;'; put 'put ''Iiwib29rdXdhLm5hZ2Fuby5qcCIsIm9vc2hpa2EubmFnYW5vLmpwIiwib3Rha2kubmFnYW5vLmpwIiwib3RhcmkubmFnYW5vLmpwIiwic2FrYWUubmFnYW5vLmpwIiwic2FrYWtpLm5hZ2Fuby5qcCIsInNha3UubmFnYW5vLmpwIiwic2FrdWhvLm5hZ2Fuby5qcCIsInNoaW1vc3V3YS5uYWdh''@;'; put 'put ''bm8uanAiLCJzaGluYW5vbWFjaGkubmFnYW5vLmpwIiwic2hpb2ppcmkubmFnYW5vLmpwIiwic3V3YS5uYWdhbm8uanAiLCJzdXpha2EubmFnYW5vLmpwIiwidGFrYWdpLm5hZ2Fuby5qcCIsInRha2Ftb3JpLm5hZ2Fuby5qcCIsInRha2F5YW1hLm5hZ2Fuby5qcCIsInRhdGVzaGluYS5uYWdh''@;'; put 'put ''bm8uanAiLCJ0YXRzdW5vLm5hZ2Fuby5qcCIsInRvZ2FrdXNoaS5uYWdhbm8uanAiLCJ0b2d1cmEubmFnYW5vLmpwIiwidG9taS5uYWdhbm8uanAiLCJ1ZWRhLm5hZ2Fuby5qcCIsIndhZGEubmFnYW5vLmpwIiwieWFtYWdhdGEubmFnYW5vLmpwIiwieWFtYW5vdWNoaS5uYWdhbm8uanAiLCJ5''@;'; put 'put ''YXNha2EubmFnYW5vLmpwIiwieWFzdW9rYS5uYWdhbm8uanAiLCJjaGlqaXdhLm5hZ2FzYWtpLmpwIiwiZnV0c3UubmFnYXNha2kuanAiLCJnb3RvLm5hZ2FzYWtpLmpwIiwiaGFzYW1pLm5hZ2FzYWtpLmpwIiwiaGlyYWRvLm5hZ2FzYWtpLmpwIiwiaWtpLm5hZ2FzYWtpLmpwIiwiaXNhaGF5''@;'; put 'put ''YS5uYWdhc2FraS5qcCIsImthd2F0YW5hLm5hZ2FzYWtpLmpwIiwia3VjaGlub3RzdS5uYWdhc2FraS5qcCIsIm1hdHN1dXJhLm5hZ2FzYWtpLmpwIiwibmFnYXNha2kubmFnYXNha2kuanAiLCJvYmFtYS5uYWdhc2FraS5qcCIsIm9tdXJhLm5hZ2FzYWtpLmpwIiwib3NldG8ubmFnYXNha2ku''@;'; put 'put ''anAiLCJzYWlrYWkubmFnYXNha2kuanAiLCJzYXNlYm8ubmFnYXNha2kuanAiLCJzZWloaS5uYWdhc2FraS5qcCIsInNoaW1hYmFyYS5uYWdhc2FraS5qcCIsInNoaW5rYW1pZ290by5uYWdhc2FraS5qcCIsInRvZ2l0c3UubmFnYXNha2kuanAiLCJ0c3VzaGltYS5uYWdhc2FraS5qcCIsInVu''@;'; put 'put ''emVuLm5hZ2FzYWtpLmpwIiwiYW5kby5uYXJhLmpwIiwiZ29zZS5uYXJhLmpwIiwiaGVndXJpLm5hcmEuanAiLCJoaWdhc2hpeW9zaGluby5uYXJhLmpwIiwiaWthcnVnYS5uYXJhLmpwIiwiaWtvbWEubmFyYS5qcCIsImthbWlraXRheWFtYS5uYXJhLmpwIiwia2FubWFraS5uYXJhLmpwIiwi''@;'; put 'put ''a2FzaGliYS5uYXJhLmpwIiwia2FzaGloYXJhLm5hcmEuanAiLCJrYXRzdXJhZ2kubmFyYS5qcCIsImthd2FpLm5hcmEuanAiLCJrYXdha2FtaS5uYXJhLmpwIiwia2F3YW5pc2hpLm5hcmEuanAiLCJrb3J5by5uYXJhLmpwIiwia3Vyb3Rha2kubmFyYS5qcCIsIm1pdHN1ZS5uYXJhLmpwIiwi''@;'; put 'put ''bWl5YWtlLm5hcmEuanAiLCJuYXJhLm5hcmEuanAiLCJub3NlZ2F3YS5uYXJhLmpwIiwib2ppLm5hcmEuanAiLCJvdWRhLm5hcmEuanAiLCJveW9kby5uYXJhLmpwIiwic2FrdXJhaS5uYXJhLmpwIiwic2FuZ28ubmFyYS5qcCIsInNoaW1vaWNoaS5uYXJhLmpwIiwic2hpbW9raXRheWFtYS5u''@;'; put 'put ''YXJhLmpwIiwic2hpbmpvLm5hcmEuanAiLCJzb25pLm5hcmEuanAiLCJ0YWthdG9yaS5uYXJhLmpwIiwidGF3YXJhbW90by5uYXJhLmpwIiwidGVua2F3YS5uYXJhLmpwIiwidGVucmkubmFyYS5qcCIsInVkYS5uYXJhLmpwIiwieWFtYXRva29yaXlhbWEubmFyYS5qcCIsInlhbWF0b3Rha2Fk''@;'; put 'put ''YS5uYXJhLmpwIiwieWFtYXpvZS5uYXJhLmpwIiwieW9zaGluby5uYXJhLmpwIiwiYWdhLm5paWdhdGEuanAiLCJhZ2Fuby5uaWlnYXRhLmpwIiwiZ29zZW4ubmlpZ2F0YS5qcCIsIml0b2lnYXdhLm5paWdhdGEuanAiLCJpenVtb3pha2kubmlpZ2F0YS5qcCIsImpvZXRzdS5uaWlnYXRhLmpw''@;'; put 'put ''Iiwia2Ftby5uaWlnYXRhLmpwIiwia2FyaXdhLm5paWdhdGEuanAiLCJrYXNoaXdhemFraS5uaWlnYXRhLmpwIiwibWluYW1pdW9udW1hLm5paWdhdGEuanAiLCJtaXRzdWtlLm5paWdhdGEuanAiLCJtdWlrYS5uaWlnYXRhLmpwIiwibXVyYWthbWkubmlpZ2F0YS5qcCIsIm15b2tvLm5paWdh''@;'; put 'put ''dGEuanAiLCJuYWdhb2thLm5paWdhdGEuanAiLCJuaWlnYXRhLm5paWdhdGEuanAiLCJvaml5YS5uaWlnYXRhLmpwIiwib21pLm5paWdhdGEuanAiLCJzYWRvLm5paWdhdGEuanAiLCJzYW5qby5uaWlnYXRhLmpwIiwic2Vpcm8ubmlpZ2F0YS5qcCIsInNlaXJvdS5uaWlnYXRhLmpwIiwic2Vr''@;'; put 'put ''aWthd2EubmlpZ2F0YS5qcCIsInNoaWJhdGEubmlpZ2F0YS5qcCIsInRhZ2FtaS5uaWlnYXRhLmpwIiwidGFpbmFpLm5paWdhdGEuanAiLCJ0b2NoaW8ubmlpZ2F0YS5qcCIsInRva2FtYWNoaS5uaWlnYXRhLmpwIiwidHN1YmFtZS5uaWlnYXRhLmpwIiwidHN1bmFuLm5paWdhdGEuanAiLCJ1''@;'; put 'put ''b251bWEubmlpZ2F0YS5qcCIsInlhaGlrby5uaWlnYXRhLmpwIiwieW9pdGEubmlpZ2F0YS5qcCIsInl1emF3YS5uaWlnYXRhLmpwIiwiYmVwcHUub2l0YS5qcCIsImJ1bmdvb25vLm9pdGEuanAiLCJidW5nb3Rha2FkYS5vaXRhLmpwIiwiaGFzYW1hLm9pdGEuanAiLCJoaWppLm9pdGEuanAi''@;'; put 'put ''LCJoaW1lc2hpbWEub2l0YS5qcCIsImhpdGEub2l0YS5qcCIsImthbWl0c3VlLm9pdGEuanAiLCJrb2tvbm9lLm9pdGEuanAiLCJrdWp1Lm9pdGEuanAiLCJrdW5pc2FraS5vaXRhLmpwIiwia3VzdS5vaXRhLmpwIiwib2l0YS5vaXRhLmpwIiwic2Fpa2kub2l0YS5qcCIsInRha2V0YS5vaXRh''@;'; put 'put ''LmpwIiwidHN1a3VtaS5vaXRhLmpwIiwidXNhLm9pdGEuanAiLCJ1c3VraS5vaXRhLmpwIiwieXVmdS5vaXRhLmpwIiwiYWthaXdhLm9rYXlhbWEuanAiLCJhc2FrdWNoaS5va2F5YW1hLmpwIiwiYml6ZW4ub2theWFtYS5qcCIsImhheWFzaGltYS5va2F5YW1hLmpwIiwiaWJhcmEub2theWFt''@;'; put 'put ''YS5qcCIsImthZ2FtaW5vLm9rYXlhbWEuanAiLCJrYXNhb2thLm9rYXlhbWEuanAiLCJraWJpY2h1by5va2F5YW1hLmpwIiwia3VtZW5hbi5va2F5YW1hLmpwIiwia3VyYXNoaWtpLm9rYXlhbWEuanAiLCJtYW5pd2Eub2theWFtYS5qcCIsIm1pc2FraS5va2F5YW1hLmpwIiwibmFnaS5va2F5''@;'; put 'put ''YW1hLmpwIiwibmlpbWkub2theWFtYS5qcCIsIm5pc2hpYXdha3VyYS5va2F5YW1hLmpwIiwib2theWFtYS5va2F5YW1hLmpwIiwic2F0b3Noby5va2F5YW1hLmpwIiwic2V0b3VjaGkub2theWFtYS5qcCIsInNoaW5qby5va2F5YW1hLmpwIiwic2hvby5va2F5YW1hLmpwIiwic29qYS5va2F5''@;'; put 'put ''YW1hLmpwIiwidGFrYWhhc2hpLm9rYXlhbWEuanAiLCJ0YW1hbm8ub2theWFtYS5qcCIsInRzdXlhbWEub2theWFtYS5qcCIsIndha2Uub2theWFtYS5qcCIsInlha2FnZS5va2F5YW1hLmpwIiwiYWd1bmkub2tpbmF3YS5qcCIsImdpbm93YW4ub2tpbmF3YS5qcCIsImdpbm96YS5va2luYXdh''@;'; put 'put ''LmpwIiwiZ3VzaGlrYW1pLm9raW5hd2EuanAiLCJoYWViYXJ1Lm9raW5hd2EuanAiLCJoaWdhc2hpLm9raW5hd2EuanAiLCJoaXJhcmEub2tpbmF3YS5qcCIsImloZXlhLm9raW5hd2EuanAiLCJpc2hpZ2FraS5va2luYXdhLmpwIiwiaXNoaWthd2Eub2tpbmF3YS5qcCIsIml0b21hbi5va2lu''@;'; put 'put ''YXdhLmpwIiwiaXplbmEub2tpbmF3YS5qcCIsImthZGVuYS5va2luYXdhLmpwIiwia2luLm9raW5hd2EuanAiLCJraXRhZGFpdG8ub2tpbmF3YS5qcCIsImtpdGFuYWthZ3VzdWt1Lm9raW5hd2EuanAiLCJrdW1lamltYS5va2luYXdhLmpwIiwia3VuaWdhbWkub2tpbmF3YS5qcCIsIm1pbmFt''@;'; put 'put ''aWRhaXRvLm9raW5hd2EuanAiLCJtb3RvYnUub2tpbmF3YS5qcCIsIm5hZ28ub2tpbmF3YS5qcCIsIm5haGEub2tpbmF3YS5qcCIsIm5ha2FndXN1a3Uub2tpbmF3YS5qcCIsIm5ha2lqaW4ub2tpbmF3YS5qcCIsIm5hbmpvLm9raW5hd2EuanAiLCJuaXNoaWhhcmEub2tpbmF3YS5qcCIsIm9n''@;'; put 'put ''aW1pLm9raW5hd2EuanAiLCJva2luYXdhLm9raW5hd2EuanAiLCJvbm5hLm9raW5hd2EuanAiLCJzaGltb2ppLm9raW5hd2EuanAiLCJ0YWtldG9taS5va2luYXdhLmpwIiwidGFyYW1hLm9raW5hd2EuanAiLCJ0b2thc2hpa2kub2tpbmF3YS5qcCIsInRvbWlndXN1a3Uub2tpbmF3YS5qcCIs''@;'; put 'put ''InRvbmFraS5va2luYXdhLmpwIiwidXJhc29lLm9raW5hd2EuanAiLCJ1cnVtYS5va2luYXdhLmpwIiwieWFlc2Uub2tpbmF3YS5qcCIsInlvbWl0YW4ub2tpbmF3YS5qcCIsInlvbmFiYXJ1Lm9raW5hd2EuanAiLCJ5b25hZ3VuaS5va2luYXdhLmpwIiwiemFtYW1pLm9raW5hd2EuanAiLCJh''@;'; put 'put ''YmVuby5vc2FrYS5qcCIsImNoaWhheWFha2FzYWthLm9zYWthLmpwIiwiY2h1by5vc2FrYS5qcCIsImRhaXRvLm9zYWthLmpwIiwiZnVqaWlkZXJhLm9zYWthLmpwIiwiaGFiaWtpbm8ub3Nha2EuanAiLCJoYW5uYW4ub3Nha2EuanAiLCJoaWdhc2hpb3Nha2Eub3Nha2EuanAiLCJoaWdhc2hp''@;'; put 'put ''c3VtaXlvc2hpLm9zYWthLmpwIiwiaGlnYXNoaXlvZG9nYXdhLm9zYWthLmpwIiwiaGlyYWthdGEub3Nha2EuanAiLCJpYmFyYWtpLm9zYWthLmpwIiwiaWtlZGEub3Nha2EuanAiLCJpenVtaS5vc2FrYS5qcCIsIml6dW1pb3RzdS5vc2FrYS5qcCIsIml6dW1pc2Fuby5vc2FrYS5qcCIsImth''@;'; put 'put ''ZG9tYS5vc2FrYS5qcCIsImthaXp1a2Eub3Nha2EuanAiLCJrYW5hbi5vc2FrYS5qcCIsImthc2hpd2FyYS5vc2FrYS5qcCIsImthdGFuby5vc2FrYS5qcCIsImthd2FjaGluYWdhbm8ub3Nha2EuanAiLCJraXNoaXdhZGEub3Nha2EuanAiLCJraXRhLm9zYWthLmpwIiwia3VtYXRvcmkub3Nh''@;'; put 'put ''a2EuanAiLCJtYXRzdWJhcmEub3Nha2EuanAiLCJtaW5hdG8ub3Nha2EuanAiLCJtaW5vaC5vc2FrYS5qcCIsIm1pc2FraS5vc2FrYS5qcCIsIm1vcmlndWNoaS5vc2FrYS5qcCIsIm5leWFnYXdhLm9zYWthLmpwIiwibmlzaGkub3Nha2EuanAiLCJub3NlLm9zYWthLmpwIiwib3Nha2FzYXlh''@;'; put 'put ''bWEub3Nha2EuanAiLCJzYWthaS5vc2FrYS5qcCIsInNheWFtYS5vc2FrYS5qcCIsInNlbm5hbi5vc2FrYS5qcCIsInNldHRzdS5vc2FrYS5qcCIsInNoaWpvbmF3YXRlLm9zYWthLmpwIiwic2hpbWFtb3RvLm9zYWthLmpwIiwic3VpdGEub3Nha2EuanAiLCJ0YWRhb2thLm9zYWthLmpwIiwi''@;'; put 'put ''dGFpc2hpLm9zYWthLmpwIiwidGFqaXJpLm9zYWthLmpwIiwidGFrYWlzaGkub3Nha2EuanAiLCJ0YWthdHN1a2kub3Nha2EuanAiLCJ0b25kYWJheWFzaGkub3Nha2EuanAiLCJ0b3lvbmFrYS5vc2FrYS5qcCIsInRveW9uby5vc2FrYS5qcCIsInlhby5vc2FrYS5qcCIsImFyaWFrZS5zYWdh''@;'; put 'put ''LmpwIiwiYXJpdGEuc2FnYS5qcCIsImZ1a3Vkb21pLnNhZ2EuanAiLCJnZW5rYWkuc2FnYS5qcCIsImhhbWF0YW1hLnNhZ2EuanAiLCJoaXplbi5zYWdhLmpwIiwiaW1hcmkuc2FnYS5qcCIsImthbWltaW5lLnNhZ2EuanAiLCJrYW56YWtpLnNhZ2EuanAiLCJrYXJhdHN1LnNhZ2EuanAiLCJr''@;'; put 'put ''YXNoaW1hLnNhZ2EuanAiLCJraXRhZ2F0YS5zYWdhLmpwIiwia2l0YWhhdGEuc2FnYS5qcCIsImtpeWFtYS5zYWdhLmpwIiwia291aG9rdS5zYWdhLmpwIiwia3l1cmFnaS5zYWdhLmpwIiwibmlzaGlhcml0YS5zYWdhLmpwIiwib2dpLnNhZ2EuanAiLCJvbWFjaGkuc2FnYS5qcCIsIm91Y2hp''@;'; put 'put ''LnNhZ2EuanAiLCJzYWdhLnNhZ2EuanAiLCJzaGlyb2lzaGkuc2FnYS5qcCIsInRha3Uuc2FnYS5qcCIsInRhcmEuc2FnYS5qcCIsInRvc3Uuc2FnYS5qcCIsInlvc2hpbm9nYXJpLnNhZ2EuanAiLCJhcmFrYXdhLnNhaXRhbWEuanAiLCJhc2FrYS5zYWl0YW1hLmpwIiwiY2hpY2hpYnUuc2Fp''@;'; put 'put ''dGFtYS5qcCIsImZ1amltaS5zYWl0YW1hLmpwIiwiZnVqaW1pbm8uc2FpdGFtYS5qcCIsImZ1a2F5YS5zYWl0YW1hLmpwIiwiaGFubm8uc2FpdGFtYS5qcCIsImhhbnl1LnNhaXRhbWEuanAiLCJoYXN1ZGEuc2FpdGFtYS5qcCIsImhhdG9nYXlhLnNhaXRhbWEuanAiLCJoYXRveWFtYS5zYWl0''@;'; put 'put ''YW1hLmpwIiwiaGlkYWthLnNhaXRhbWEuanAiLCJoaWdhc2hpY2hpY2hpYnUuc2FpdGFtYS5qcCIsImhpZ2FzaGltYXRzdXlhbWEuc2FpdGFtYS5qcCIsImhvbmpvLnNhaXRhbWEuanAiLCJpbmEuc2FpdGFtYS5qcCIsImlydW1hLnNhaXRhbWEuanAiLCJpd2F0c3VraS5zYWl0YW1hLmpwIiwi''@;'; put 'put ''a2FtaWl6dW1pLnNhaXRhbWEuanAiLCJrYW1pa2F3YS5zYWl0YW1hLmpwIiwia2FtaXNhdG8uc2FpdGFtYS5qcCIsImthc3VrYWJlLnNhaXRhbWEuanAiLCJrYXdhZ29lLnNhaXRhbWEuanAiLCJrYXdhZ3VjaGkuc2FpdGFtYS5qcCIsImthd2FqaW1hLnNhaXRhbWEuanAiLCJrYXpvLnNhaXRh''@;'; put 'put ''bWEuanAiLCJraXRhbW90by5zYWl0YW1hLmpwIiwia29zaGlnYXlhLnNhaXRhbWEuanAiLCJrb3Vub3N1LnNhaXRhbWEuanAiLCJrdWtpLnNhaXRhbWEuanAiLCJrdW1hZ2F5YS5zYWl0YW1hLmpwIiwibWF0c3VidXNoaS5zYWl0YW1hLmpwIiwibWluYW5vLnNhaXRhbWEuanAiLCJtaXNhdG8u''@;'; put 'put ''c2FpdGFtYS5qcCIsIm1peWFzaGlyby5zYWl0YW1hLmpwIiwibWl5b3NoaS5zYWl0YW1hLmpwIiwibW9yb3lhbWEuc2FpdGFtYS5qcCIsIm5hZ2F0b3JvLnNhaXRhbWEuanAiLCJuYW1lZ2F3YS5zYWl0YW1hLmpwIiwibmlpemEuc2FpdGFtYS5qcCIsIm9nYW5vLnNhaXRhbWEuanAiLCJvZ2F3''@;'; put 'put ''YS5zYWl0YW1hLmpwIiwib2dvc2Uuc2FpdGFtYS5qcCIsIm9rZWdhd2Euc2FpdGFtYS5qcCIsIm9taXlhLnNhaXRhbWEuanAiLCJvdGFraS5zYWl0YW1hLmpwIiwicmFuemFuLnNhaXRhbWEuanAiLCJyeW9rYW1pLnNhaXRhbWEuanAiLCJzYWl0YW1hLnNhaXRhbWEuanAiLCJzYWthZG8uc2Fp''@;'; put 'put ''dGFtYS5qcCIsInNhdHRlLnNhaXRhbWEuanAiLCJzYXlhbWEuc2FpdGFtYS5qcCIsInNoaWtpLnNhaXRhbWEuanAiLCJzaGlyYW9rYS5zYWl0YW1hLmpwIiwic29rYS5zYWl0YW1hLmpwIiwic3VnaXRvLnNhaXRhbWEuanAiLCJ0b2RhLnNhaXRhbWEuanAiLCJ0b2tpZ2F3YS5zYWl0YW1hLmpw''@;'; put 'put ''IiwidG9rb3JvemF3YS5zYWl0YW1hLmpwIiwidHN1cnVnYXNoaW1hLnNhaXRhbWEuanAiLCJ1cmF3YS5zYWl0YW1hLmpwIiwid2FyYWJpLnNhaXRhbWEuanAiLCJ5YXNoaW8uc2FpdGFtYS5qcCIsInlva296ZS5zYWl0YW1hLmpwIiwieW9uby5zYWl0YW1hLmpwIiwieW9yaWkuc2FpdGFtYS5q''@;'; put 'put ''cCIsInlvc2hpZGEuc2FpdGFtYS5qcCIsInlvc2hpa2F3YS5zYWl0YW1hLmpwIiwieW9zaGltaS5zYWl0YW1hLmpwIiwiYWlzaG8uc2hpZ2EuanAiLCJnYW1vLnNoaWdhLmpwIiwiaGlnYXNoaW9taS5zaGlnYS5qcCIsImhpa29uZS5zaGlnYS5qcCIsImtva2Euc2hpZ2EuanAiLCJrb25hbi5z''@;'; put 'put ''aGlnYS5qcCIsImtvc2VpLnNoaWdhLmpwIiwia290by5zaGlnYS5qcCIsImt1c2F0c3Uuc2hpZ2EuanAiLCJtYWliYXJhLnNoaWdhLmpwIiwibW9yaXlhbWEuc2hpZ2EuanAiLCJuYWdhaGFtYS5zaGlnYS5qcCIsIm5pc2hpYXphaS5zaGlnYS5qcCIsIm5vdG9nYXdhLnNoaWdhLmpwIiwib21p''@;'; put 'put ''aGFjaGltYW4uc2hpZ2EuanAiLCJvdHN1LnNoaWdhLmpwIiwicml0dG8uc2hpZ2EuanAiLCJyeXVvaC5zaGlnYS5qcCIsInRha2FzaGltYS5zaGlnYS5qcCIsInRha2F0c3VraS5zaGlnYS5qcCIsInRvcmFoaW1lLnNoaWdhLmpwIiwidG95b3NhdG8uc2hpZ2EuanAiLCJ5YXN1LnNoaWdhLmpw''@;'; put 'put ''IiwiYWthZ2kuc2hpbWFuZS5qcCIsImFtYS5zaGltYW5lLmpwIiwiZ290c3Uuc2hpbWFuZS5qcCIsImhhbWFkYS5zaGltYW5lLmpwIiwiaGlnYXNoaWl6dW1vLnNoaW1hbmUuanAiLCJoaWthd2Euc2hpbWFuZS5qcCIsImhpa2ltaS5zaGltYW5lLmpwIiwiaXp1bW8uc2hpbWFuZS5qcCIsImth''@;'; put 'put ''a2lub2tpLnNoaW1hbmUuanAiLCJtYXN1ZGEuc2hpbWFuZS5qcCIsIm1hdHN1ZS5zaGltYW5lLmpwIiwibWlzYXRvLnNoaW1hbmUuanAiLCJuaXNoaW5vc2hpbWEuc2hpbWFuZS5qcCIsIm9oZGEuc2hpbWFuZS5qcCIsIm9raW5vc2hpbWEuc2hpbWFuZS5qcCIsIm9rdWl6dW1vLnNoaW1hbmUu''@;'; put 'put ''anAiLCJzaGltYW5lLnNoaW1hbmUuanAiLCJ0YW1heXUuc2hpbWFuZS5qcCIsInRzdXdhbm8uc2hpbWFuZS5qcCIsInVubmFuLnNoaW1hbmUuanAiLCJ5YWt1bW8uc2hpbWFuZS5qcCIsInlhc3VnaS5zaGltYW5lLmpwIiwieWF0c3VrYS5zaGltYW5lLmpwIiwiYXJhaS5zaGl6dW9rYS5qcCIs''@;'; put 'put ''ImF0YW1pLnNoaXp1b2thLmpwIiwiZnVqaS5zaGl6dW9rYS5qcCIsImZ1amllZGEuc2hpenVva2EuanAiLCJmdWppa2F3YS5zaGl6dW9rYS5qcCIsImZ1amlub21peWEuc2hpenVva2EuanAiLCJmdWt1cm9pLnNoaXp1b2thLmpwIiwiZ290ZW1iYS5zaGl6dW9rYS5qcCIsImhhaWJhcmEuc2hp''@;'; put 'put ''enVva2EuanAiLCJoYW1hbWF0c3Uuc2hpenVva2EuanAiLCJoaWdhc2hpaXp1LnNoaXp1b2thLmpwIiwiaXRvLnNoaXp1b2thLmpwIiwiaXdhdGEuc2hpenVva2EuanAiLCJpenUuc2hpenVva2EuanAiLCJpenVub2t1bmkuc2hpenVva2EuanAiLCJrYWtlZ2F3YS5zaGl6dW9rYS5qcCIsImth''@;'; put 'put ''bm5hbWkuc2hpenVva2EuanAiLCJrYXdhbmVob24uc2hpenVva2EuanAiLCJrYXdhenUuc2hpenVva2EuanAiLCJraWt1Z2F3YS5zaGl6dW9rYS5qcCIsImtvc2FpLnNoaXp1b2thLmpwIiwibWFraW5vaGFyYS5zaGl6dW9rYS5qcCIsIm1hdHN1emFraS5zaGl6dW9rYS5qcCIsIm1pbmFtaWl6''@;'; put 'put ''dS5zaGl6dW9rYS5qcCIsIm1pc2hpbWEuc2hpenVva2EuanAiLCJtb3JpbWFjaGkuc2hpenVva2EuanAiLCJuaXNoaWl6dS5zaGl6dW9rYS5qcCIsIm51bWF6dS5zaGl6dW9rYS5qcCIsIm9tYWV6YWtpLnNoaXp1b2thLmpwIiwic2hpbWFkYS5zaGl6dW9rYS5qcCIsInNoaW1penUuc2hpenVv''@;'; put 'put ''a2EuanAiLCJzaGltb2RhLnNoaXp1b2thLmpwIiwic2hpenVva2Euc2hpenVva2EuanAiLCJzdXNvbm8uc2hpenVva2EuanAiLCJ5YWl6dS5zaGl6dW9rYS5qcCIsInlvc2hpZGEuc2hpenVva2EuanAiLCJhc2hpa2FnYS50b2NoaWdpLmpwIiwiYmF0by50b2NoaWdpLmpwIiwiaGFnYS50b2No''@;'; put 'put ''aWdpLmpwIiwiaWNoaWthaS50b2NoaWdpLmpwIiwiaXdhZnVuZS50b2NoaWdpLmpwIiwia2FtaW5va2F3YS50b2NoaWdpLmpwIiwia2FudW1hLnRvY2hpZ2kuanAiLCJrYXJhc3V5YW1hLnRvY2hpZ2kuanAiLCJrdXJvaXNvLnRvY2hpZ2kuanAiLCJtYXNoaWtvLnRvY2hpZ2kuanAiLCJtaWJ1''@;'; put 'put ''LnRvY2hpZ2kuanAiLCJtb2thLnRvY2hpZ2kuanAiLCJtb3RlZ2kudG9jaGlnaS5qcCIsIm5hc3UudG9jaGlnaS5qcCIsIm5hc3VzaGlvYmFyYS50b2NoaWdpLmpwIiwibmlra28udG9jaGlnaS5qcCIsIm5pc2hpa2F0YS50b2NoaWdpLmpwIiwibm9naS50b2NoaWdpLmpwIiwib2hpcmEudG9j''@;'; put 'put ''aGlnaS5qcCIsIm9odGF3YXJhLnRvY2hpZ2kuanAiLCJveWFtYS50b2NoaWdpLmpwIiwic2FrdXJhLnRvY2hpZ2kuanAiLCJzYW5vLnRvY2hpZ2kuanAiLCJzaGltb3RzdWtlLnRvY2hpZ2kuanAiLCJzaGlveWEudG9jaGlnaS5qcCIsInRha2FuZXphd2EudG9jaGlnaS5qcCIsInRvY2hpZ2ku''@;'; put 'put ''dG9jaGlnaS5qcCIsInRzdWdhLnRvY2hpZ2kuanAiLCJ1amlpZS50b2NoaWdpLmpwIiwidXRzdW5vbWl5YS50b2NoaWdpLmpwIiwieWFpdGEudG9jaGlnaS5qcCIsImFpenVtaS50b2t1c2hpbWEuanAiLCJhbmFuLnRva3VzaGltYS5qcCIsImljaGliYS50b2t1c2hpbWEuanAiLCJpdGFuby50''@;'; put 'put ''b2t1c2hpbWEuanAiLCJrYWluYW4udG9rdXNoaW1hLmpwIiwia29tYXRzdXNoaW1hLnRva3VzaGltYS5qcCIsIm1hdHN1c2hpZ2UudG9rdXNoaW1hLmpwIiwibWltYS50b2t1c2hpbWEuanAiLCJtaW5hbWkudG9rdXNoaW1hLmpwIiwibWl5b3NoaS50b2t1c2hpbWEuanAiLCJtdWdpLnRva3Vz''@;'; put 'put ''aGltYS5qcCIsIm5ha2FnYXdhLnRva3VzaGltYS5qcCIsIm5hcnV0by50b2t1c2hpbWEuanAiLCJzYW5hZ29jaGkudG9rdXNoaW1hLmpwIiwic2hpc2hpa3VpLnRva3VzaGltYS5qcCIsInRva3VzaGltYS50b2t1c2hpbWEuanAiLCJ3YWppa2kudG9rdXNoaW1hLmpwIiwiYWRhY2hpLnRva3lv''@;'; put 'put ''LmpwIiwiYWtpcnVuby50b2t5by5qcCIsImFraXNoaW1hLnRva3lvLmpwIiwiYW9nYXNoaW1hLnRva3lvLmpwIiwiYXJha2F3YS50b2t5by5qcCIsImJ1bmt5by50b2t5by5qcCIsImNoaXlvZGEudG9reW8uanAiLCJjaG9mdS50b2t5by5qcCIsImNodW8udG9reW8uanAiLCJlZG9nYXdhLnRv''@;'; put 'put ''a3lvLmpwIiwiZnVjaHUudG9reW8uanAiLCJmdXNzYS50b2t5by5qcCIsImhhY2hpam8udG9reW8uanAiLCJoYWNoaW9qaS50b2t5by5qcCIsImhhbXVyYS50b2t5by5qcCIsImhpZ2FzaGlrdXJ1bWUudG9reW8uanAiLCJoaWdhc2hpbXVyYXlhbWEudG9reW8uanAiLCJoaWdhc2hpeWFtYXRv''@;'; put 'put ''LnRva3lvLmpwIiwiaGluby50b2t5by5qcCIsImhpbm9kZS50b2t5by5qcCIsImhpbm9oYXJhLnRva3lvLmpwIiwiaW5hZ2kudG9reW8uanAiLCJpdGFiYXNoaS50b2t5by5qcCIsImthdHN1c2hpa2EudG9reW8uanAiLCJraXRhLnRva3lvLmpwIiwia2l5b3NlLnRva3lvLmpwIiwia29kYWly''@;'; put 'put ''YS50b2t5by5qcCIsImtvZ2FuZWkudG9reW8uanAiLCJrb2t1YnVuamkudG9reW8uanAiLCJrb21hZS50b2t5by5qcCIsImtvdG8udG9reW8uanAiLCJrb3V6dXNoaW1hLnRva3lvLmpwIiwia3VuaXRhY2hpLnRva3lvLmpwIiwibWFjaGlkYS50b2t5by5qcCIsIm1lZ3Vyby50b2t5by5qcCIs''@;'; put 'put ''Im1pbmF0by50b2t5by5qcCIsIm1pdGFrYS50b2t5by5qcCIsIm1penVoby50b2t5by5qcCIsIm11c2FzaGltdXJheWFtYS50b2t5by5qcCIsIm11c2FzaGluby50b2t5by5qcCIsIm5ha2Fuby50b2t5by5qcCIsIm5lcmltYS50b2t5by5qcCIsIm9nYXNhd2FyYS50b2t5by5qcCIsIm9rdXRh''@;'; put 'put ''bWEudG9reW8uanAiLCJvbWUudG9reW8uanAiLCJvc2hpbWEudG9reW8uanAiLCJvdGEudG9reW8uanAiLCJzZXRhZ2F5YS50b2t5by5qcCIsInNoaWJ1eWEudG9reW8uanAiLCJzaGluYWdhd2EudG9reW8uanAiLCJzaGluanVrdS50b2t5by5qcCIsInN1Z2luYW1pLnRva3lvLmpwIiwic3Vt''@;'; put 'put ''aWRhLnRva3lvLmpwIiwidGFjaGlrYXdhLnRva3lvLmpwIiwidGFpdG8udG9reW8uanAiLCJ0YW1hLnRva3lvLmpwIiwidG9zaGltYS50b2t5by5qcCIsImNoaXp1LnRvdHRvcmkuanAiLCJoaW5vLnRvdHRvcmkuanAiLCJrYXdhaGFyYS50b3R0b3JpLmpwIiwia29nZS50b3R0b3JpLmpwIiwi''@;'; put 'put ''a290b3VyYS50b3R0b3JpLmpwIiwibWlzYXNhLnRvdHRvcmkuanAiLCJuYW5idS50b3R0b3JpLmpwIiwibmljaGluYW4udG90dG9yaS5qcCIsInNha2FpbWluYXRvLnRvdHRvcmkuanAiLCJ0b3R0b3JpLnRvdHRvcmkuanAiLCJ3YWthc2EudG90dG9yaS5qcCIsInlhenUudG90dG9yaS5qcCIs''@;'; put 'put ''InlvbmFnby50b3R0b3JpLmpwIiwiYXNhaGkudG95YW1hLmpwIiwiZnVjaHUudG95YW1hLmpwIiwiZnVrdW1pdHN1LnRveWFtYS5qcCIsImZ1bmFoYXNoaS50b3lhbWEuanAiLCJoaW1pLnRveWFtYS5qcCIsImltaXp1LnRveWFtYS5qcCIsImluYW1pLnRveWFtYS5qcCIsImpvaGFuYS50b3lh''@;'; put 'put ''bWEuanAiLCJrYW1paWNoaS50b3lhbWEuanAiLCJrdXJvYmUudG95YW1hLmpwIiwibmFrYW5paWthd2EudG95YW1hLmpwIiwibmFtZXJpa2F3YS50b3lhbWEuanAiLCJuYW50by50b3lhbWEuanAiLCJueXV6ZW4udG95YW1hLmpwIiwib3lhYmUudG95YW1hLmpwIiwidGFpcmEudG95YW1hLmpw''@;'; put 'put ''IiwidGFrYW9rYS50b3lhbWEuanAiLCJ0YXRleWFtYS50b3lhbWEuanAiLCJ0b2dhLnRveWFtYS5qcCIsInRvbmFtaS50b3lhbWEuanAiLCJ0b3lhbWEudG95YW1hLmpwIiwidW5henVraS50b3lhbWEuanAiLCJ1b3p1LnRveWFtYS5qcCIsInlhbWFkYS50b3lhbWEuanAiLCJhcmlkYS53YWth''@;'; put 'put ''eWFtYS5qcCIsImFyaWRhZ2F3YS53YWtheWFtYS5qcCIsImdvYm8ud2FrYXlhbWEuanAiLCJoYXNoaW1vdG8ud2FrYXlhbWEuanAiLCJoaWRha2Eud2FrYXlhbWEuanAiLCJoaXJvZ2F3YS53YWtheWFtYS5qcCIsImluYW1pLndha2F5YW1hLmpwIiwiaXdhZGUud2FrYXlhbWEuanAiLCJrYWlu''@;'; put 'put ''YW4ud2FrYXlhbWEuanAiLCJrYW1pdG9uZGEud2FrYXlhbWEuanAiLCJrYXRzdXJhZ2kud2FrYXlhbWEuanAiLCJraW1pbm8ud2FrYXlhbWEuanAiLCJraW5va2F3YS53YWtheWFtYS5qcCIsImtpdGF5YW1hLndha2F5YW1hLmpwIiwia295YS53YWtheWFtYS5qcCIsImtvemEud2FrYXlhbWEu''@;'; put 'put ''anAiLCJrb3phZ2F3YS53YWtheWFtYS5qcCIsImt1ZG95YW1hLndha2F5YW1hLmpwIiwia3VzaGltb3RvLndha2F5YW1hLmpwIiwibWloYW1hLndha2F5YW1hLmpwIiwibWlzYXRvLndha2F5YW1hLmpwIiwibmFjaGlrYXRzdXVyYS53YWtheWFtYS5qcCIsInNoaW5ndS53YWtheWFtYS5qcCIs''@;'; put 'put ''InNoaXJhaGFtYS53YWtheWFtYS5qcCIsInRhaWppLndha2F5YW1hLmpwIiwidGFuYWJlLndha2F5YW1hLmpwIiwid2FrYXlhbWEud2FrYXlhbWEuanAiLCJ5dWFzYS53YWtheWFtYS5qcCIsInl1cmEud2FrYXlhbWEuanAiLCJhc2FoaS55YW1hZ2F0YS5qcCIsImZ1bmFnYXRhLnlhbWFnYXRh''@;'; put 'put ''LmpwIiwiaGlnYXNoaW5lLnlhbWFnYXRhLmpwIiwiaWlkZS55YW1hZ2F0YS5qcCIsImthaG9rdS55YW1hZ2F0YS5qcCIsImthbWlub3lhbWEueWFtYWdhdGEuanAiLCJrYW5leWFtYS55YW1hZ2F0YS5qcCIsImthd2FuaXNoaS55YW1hZ2F0YS5qcCIsIm1hbXVyb2dhd2EueWFtYWdhdGEuanAi''@;'; put 'put ''LCJtaWthd2EueWFtYWdhdGEuanAiLCJtdXJheWFtYS55YW1hZ2F0YS5qcCIsIm5hZ2FpLnlhbWFnYXRhLmpwIiwibmFrYXlhbWEueWFtYWdhdGEuanAiLCJuYW55by55YW1hZ2F0YS5qcCIsIm5pc2hpa2F3YS55YW1hZ2F0YS5qcCIsIm9iYW5hemF3YS55YW1hZ2F0YS5qcCIsIm9lLnlhbWFn''@;'; put 'put ''YXRhLmpwIiwib2d1bmkueWFtYWdhdGEuanAiLCJvaGt1cmEueWFtYWdhdGEuanAiLCJvaXNoaWRhLnlhbWFnYXRhLmpwIiwic2FnYWUueWFtYWdhdGEuanAiLCJzYWthdGEueWFtYWdhdGEuanAiLCJzYWtlZ2F3YS55YW1hZ2F0YS5qcCIsInNoaW5qby55YW1hZ2F0YS5qcCIsInNoaXJhdGFr''@;'; put 'put ''YS55YW1hZ2F0YS5qcCIsInNob25haS55YW1hZ2F0YS5qcCIsInRha2FoYXRhLnlhbWFnYXRhLmpwIiwidGVuZG8ueWFtYWdhdGEuanAiLCJ0b3phd2EueWFtYWdhdGEuanAiLCJ0c3VydW9rYS55YW1hZ2F0YS5qcCIsInlhbWFnYXRhLnlhbWFnYXRhLmpwIiwieWFtYW5vYmUueWFtYWdhdGEu''@;'; put 'put ''anAiLCJ5b25lemF3YS55YW1hZ2F0YS5qcCIsInl1emEueWFtYWdhdGEuanAiLCJhYnUueWFtYWd1Y2hpLmpwIiwiaGFnaS55YW1hZ3VjaGkuanAiLCJoaWthcmkueWFtYWd1Y2hpLmpwIiwiaG9mdS55YW1hZ3VjaGkuanAiLCJpd2FrdW5pLnlhbWFndWNoaS5qcCIsImt1ZGFtYXRzdS55YW1h''@;'; put 'put ''Z3VjaGkuanAiLCJtaXRvdS55YW1hZ3VjaGkuanAiLCJuYWdhdG8ueWFtYWd1Y2hpLmpwIiwib3NoaW1hLnlhbWFndWNoaS5qcCIsInNoaW1vbm9zZWtpLnlhbWFndWNoaS5qcCIsInNodW5hbi55YW1hZ3VjaGkuanAiLCJ0YWJ1c2UueWFtYWd1Y2hpLmpwIiwidG9rdXlhbWEueWFtYWd1Y2hp''@;'; put 'put ''LmpwIiwidG95b3RhLnlhbWFndWNoaS5qcCIsInViZS55YW1hZ3VjaGkuanAiLCJ5dXUueWFtYWd1Y2hpLmpwIiwiY2h1by55YW1hbmFzaGkuanAiLCJkb3NoaS55YW1hbmFzaGkuanAiLCJmdWVmdWtpLnlhbWFuYXNoaS5qcCIsImZ1amlrYXdhLnlhbWFuYXNoaS5qcCIsImZ1amlrYXdhZ3Vj''@;'; put 'put ''aGlrby55YW1hbmFzaGkuanAiLCJmdWppeW9zaGlkYS55YW1hbmFzaGkuanAiLCJoYXlha2F3YS55YW1hbmFzaGkuanAiLCJob2t1dG8ueWFtYW5hc2hpLmpwIiwiaWNoaWthd2FtaXNhdG8ueWFtYW5hc2hpLmpwIiwia2FpLnlhbWFuYXNoaS5qcCIsImtvZnUueWFtYW5hc2hpLmpwIiwia29z''@;'; put 'put ''aHUueWFtYW5hc2hpLmpwIiwia29zdWdlLnlhbWFuYXNoaS5qcCIsIm1pbmFtaS1hbHBzLnlhbWFuYXNoaS5qcCIsIm1pbm9idS55YW1hbmFzaGkuanAiLCJuYWthbWljaGkueWFtYW5hc2hpLmpwIiwibmFuYnUueWFtYW5hc2hpLmpwIiwibmFydXNhd2EueWFtYW5hc2hpLmpwIiwibmlyYXNh''@;'; put 'put ''a2kueWFtYW5hc2hpLmpwIiwibmlzaGlrYXRzdXJhLnlhbWFuYXNoaS5qcCIsIm9zaGluby55YW1hbmFzaGkuanAiLCJvdHN1a2kueWFtYW5hc2hpLmpwIiwic2hvd2EueWFtYW5hc2hpLmpwIiwidGFiYXlhbWEueWFtYW5hc2hpLmpwIiwidHN1cnUueWFtYW5hc2hpLmpwIiwidWVub2hhcmEu''@;'; put 'put ''eWFtYW5hc2hpLmpwIiwieWFtYW5ha2Frby55YW1hbmFzaGkuanAiLCJ5YW1hbmFzaGkueWFtYW5hc2hpLmpwIiwia2UiLCJhYy5rZSIsImNvLmtlIiwiZ28ua2UiLCJpbmZvLmtlIiwibWUua2UiLCJtb2JpLmtlIiwibmUua2UiLCJvci5rZSIsInNjLmtlIiwia2ciLCJvcmcua2ciLCJuZXQu''@;'; put 'put ''a2ciLCJjb20ua2ciLCJlZHUua2ciLCJnb3Yua2ciLCJtaWwua2ciLCIqLmtoIiwia2kiLCJlZHUua2kiLCJiaXoua2kiLCJuZXQua2kiLCJvcmcua2kiLCJnb3Yua2kiLCJpbmZvLmtpIiwiY29tLmtpIiwia20iLCJvcmcua20iLCJub20ua20iLCJnb3Yua20iLCJwcmQua20iLCJ0bS5rbSIs''@;'; put 'put ''ImVkdS5rbSIsIm1pbC5rbSIsImFzcy5rbSIsImNvbS5rbSIsImNvb3Aua20iLCJhc3NvLmttIiwicHJlc3NlLmttIiwibWVkZWNpbi5rbSIsIm5vdGFpcmVzLmttIiwicGhhcm1hY2llbnMua20iLCJ2ZXRlcmluYWlyZS5rbSIsImdvdXYua20iLCJrbiIsIm5ldC5rbiIsIm9yZy5rbiIsImVk''@;'; put 'put ''dS5rbiIsImdvdi5rbiIsImtwIiwiY29tLmtwIiwiZWR1LmtwIiwiZ292LmtwIiwib3JnLmtwIiwicmVwLmtwIiwidHJhLmtwIiwia3IiLCJhYy5rciIsImNvLmtyIiwiZXMua3IiLCJnby5rciIsImhzLmtyIiwia2cua3IiLCJtaWwua3IiLCJtcy5rciIsIm5lLmtyIiwib3Iua3IiLCJwZS5r''@;'; put 'put ''ciIsInJlLmtyIiwic2Mua3IiLCJidXNhbi5rciIsImNodW5nYnVrLmtyIiwiY2h1bmduYW0ua3IiLCJkYWVndS5rciIsImRhZWplb24ua3IiLCJnYW5nd29uLmtyIiwiZ3dhbmdqdS5rciIsImd5ZW9uZ2J1ay5rciIsImd5ZW9uZ2dpLmtyIiwiZ3llb25nbmFtLmtyIiwiaW5jaGVvbi5rciIs''@;'; put 'put ''ImplanUua3IiLCJqZW9uYnVrLmtyIiwiamVvbm5hbS5rciIsInNlb3VsLmtyIiwidWxzYW4ua3IiLCJrdyIsImNvbS5rdyIsImVkdS5rdyIsImVtYi5rdyIsImdvdi5rdyIsImluZC5rdyIsIm5ldC5rdyIsIm9yZy5rdyIsImt5IiwiY29tLmt5IiwiZWR1Lmt5IiwibmV0Lmt5Iiwib3JnLmt5''@;'; put 'put ''Iiwia3oiLCJvcmcua3oiLCJlZHUua3oiLCJuZXQua3oiLCJnb3Yua3oiLCJtaWwua3oiLCJjb20ua3oiLCJsYSIsImludC5sYSIsIm5ldC5sYSIsImluZm8ubGEiLCJlZHUubGEiLCJnb3YubGEiLCJwZXIubGEiLCJjb20ubGEiLCJvcmcubGEiLCJsYiIsImNvbS5sYiIsImVkdS5sYiIsImdv''@;'; put 'put ''di5sYiIsIm5ldC5sYiIsIm9yZy5sYiIsImxjIiwiY29tLmxjIiwibmV0LmxjIiwiY28ubGMiLCJvcmcubGMiLCJlZHUubGMiLCJnb3YubGMiLCJsaSIsImxrIiwiZ292LmxrIiwic2NoLmxrIiwibmV0LmxrIiwiaW50LmxrIiwiY29tLmxrIiwib3JnLmxrIiwiZWR1LmxrIiwibmdvLmxrIiwi''@;'; put 'put ''c29jLmxrIiwid2ViLmxrIiwibHRkLmxrIiwiYXNzbi5sayIsImdycC5sayIsImhvdGVsLmxrIiwiYWMubGsiLCJsciIsImNvbS5sciIsImVkdS5sciIsImdvdi5sciIsIm9yZy5sciIsIm5ldC5sciIsImxzIiwiYWMubHMiLCJiaXoubHMiLCJjby5scyIsImVkdS5scyIsImdvdi5scyIsImlu''@;'; put 'put ''Zm8ubHMiLCJuZXQubHMiLCJvcmcubHMiLCJzYy5scyIsImx0IiwiZ292Lmx0IiwibHUiLCJsdiIsImNvbS5sdiIsImVkdS5sdiIsImdvdi5sdiIsIm9yZy5sdiIsIm1pbC5sdiIsImlkLmx2IiwibmV0Lmx2IiwiYXNuLmx2IiwiY29uZi5sdiIsImx5IiwiY29tLmx5IiwibmV0Lmx5IiwiZ292''@;'; put 'put ''Lmx5IiwicGxjLmx5IiwiZWR1Lmx5Iiwic2NoLmx5IiwibWVkLmx5Iiwib3JnLmx5IiwiaWQubHkiLCJtYSIsImNvLm1hIiwibmV0Lm1hIiwiZ292Lm1hIiwib3JnLm1hIiwiYWMubWEiLCJwcmVzcy5tYSIsIm1jIiwidG0ubWMiLCJhc3NvLm1jIiwibWQiLCJtZSIsImNvLm1lIiwibmV0Lm1l''@;'; put 'put ''Iiwib3JnLm1lIiwiZWR1Lm1lIiwiYWMubWUiLCJnb3YubWUiLCJpdHMubWUiLCJwcml2Lm1lIiwibWciLCJvcmcubWciLCJub20ubWciLCJnb3YubWciLCJwcmQubWciLCJ0bS5tZyIsImVkdS5tZyIsIm1pbC5tZyIsImNvbS5tZyIsImNvLm1nIiwibWgiLCJtaWwiLCJtayIsImNvbS5tayIs''@;'; put 'put ''Im9yZy5tayIsIm5ldC5tayIsImVkdS5tayIsImdvdi5tayIsImluZi5tayIsIm5hbWUubWsiLCJtbCIsImNvbS5tbCIsImVkdS5tbCIsImdvdXYubWwiLCJnb3YubWwiLCJuZXQubWwiLCJvcmcubWwiLCJwcmVzc2UubWwiLCIqLm1tIiwibW4iLCJnb3YubW4iLCJlZHUubW4iLCJvcmcubW4i''@;'; put 'put ''LCJtbyIsImNvbS5tbyIsIm5ldC5tbyIsIm9yZy5tbyIsImVkdS5tbyIsImdvdi5tbyIsIm1vYmkiLCJtcCIsIm1xIiwibXIiLCJnb3YubXIiLCJtcyIsImNvbS5tcyIsImVkdS5tcyIsImdvdi5tcyIsIm5ldC5tcyIsIm9yZy5tcyIsIm10IiwiY29tLm10IiwiZWR1Lm10IiwibmV0Lm10Iiwi''@;'; put 'put ''b3JnLm10IiwibXUiLCJjb20ubXUiLCJuZXQubXUiLCJvcmcubXUiLCJnb3YubXUiLCJhYy5tdSIsImNvLm11Iiwib3IubXUiLCJtdXNldW0iLCJhY2FkZW15Lm11c2V1bSIsImFncmljdWx0dXJlLm11c2V1bSIsImFpci5tdXNldW0iLCJhaXJndWFyZC5tdXNldW0iLCJhbGFiYW1hLm11c2V1''@;'; put 'put ''bSIsImFsYXNrYS5tdXNldW0iLCJhbWJlci5tdXNldW0iLCJhbWJ1bGFuY2UubXVzZXVtIiwiYW1lcmljYW4ubXVzZXVtIiwiYW1lcmljYW5hLm11c2V1bSIsImFtZXJpY2FuYW50aXF1ZXMubXVzZXVtIiwiYW1lcmljYW5hcnQubXVzZXVtIiwiYW1zdGVyZGFtLm11c2V1bSIsImFuZC5tdXNl''@;'; put 'put ''dW0iLCJhbm5lZnJhbmsubXVzZXVtIiwiYW50aHJvLm11c2V1bSIsImFudGhyb3BvbG9neS5tdXNldW0iLCJhbnRpcXVlcy5tdXNldW0iLCJhcXVhcml1bS5tdXNldW0iLCJhcmJvcmV0dW0ubXVzZXVtIiwiYXJjaGFlb2xvZ2ljYWwubXVzZXVtIiwiYXJjaGFlb2xvZ3kubXVzZXVtIiwiYXJj''@;'; put 'put ''aGl0ZWN0dXJlLm11c2V1bSIsImFydC5tdXNldW0iLCJhcnRhbmRkZXNpZ24ubXVzZXVtIiwiYXJ0Y2VudGVyLm11c2V1bSIsImFydGRlY28ubXVzZXVtIiwiYXJ0ZWR1Y2F0aW9uLm11c2V1bSIsImFydGdhbGxlcnkubXVzZXVtIiwiYXJ0cy5tdXNldW0iLCJhcnRzYW5kY3JhZnRzLm11c2V1''@;'; put 'put ''bSIsImFzbWF0YXJ0Lm11c2V1bSIsImFzc2Fzc2luYXRpb24ubXVzZXVtIiwiYXNzaXNpLm11c2V1bSIsImFzc29jaWF0aW9uLm11c2V1bSIsImFzdHJvbm9teS5tdXNldW0iLCJhdGxhbnRhLm11c2V1bSIsImF1c3Rpbi5tdXNldW0iLCJhdXN0cmFsaWEubXVzZXVtIiwiYXV0b21vdGl2ZS5t''@;'; put 'put ''dXNldW0iLCJhdmlhdGlvbi5tdXNldW0iLCJheGlzLm11c2V1bSIsImJhZGFqb3oubXVzZXVtIiwiYmFnaGRhZC5tdXNldW0iLCJiYWhuLm11c2V1bSIsImJhbGUubXVzZXVtIiwiYmFsdGltb3JlLm11c2V1bSIsImJhcmNlbG9uYS5tdXNldW0iLCJiYXNlYmFsbC5tdXNldW0iLCJiYXNlbC5t''@;'; put 'put ''dXNldW0iLCJiYXRocy5tdXNldW0iLCJiYXVlcm4ubXVzZXVtIiwiYmVhdXhhcnRzLm11c2V1bSIsImJlZWxkZW5nZWx1aWQubXVzZXVtIiwiYmVsbGV2dWUubXVzZXVtIiwiYmVyZ2JhdS5tdXNldW0iLCJiZXJrZWxleS5tdXNldW0iLCJiZXJsaW4ubXVzZXVtIiwiYmVybi5tdXNldW0iLCJi''@;'; put 'put ''aWJsZS5tdXNldW0iLCJiaWxiYW8ubXVzZXVtIiwiYmlsbC5tdXNldW0iLCJiaXJkYXJ0Lm11c2V1bSIsImJpcnRocGxhY2UubXVzZXVtIiwiYm9ubi5tdXNldW0iLCJib3N0b24ubXVzZXVtIiwiYm90YW5pY2FsLm11c2V1bSIsImJvdGFuaWNhbGdhcmRlbi5tdXNldW0iLCJib3RhbmljZ2Fy''@;'; put 'put ''ZGVuLm11c2V1bSIsImJvdGFueS5tdXNldW0iLCJicmFuZHl3aW5ldmFsbGV5Lm11c2V1bSIsImJyYXNpbC5tdXNldW0iLCJicmlzdG9sLm11c2V1bSIsImJyaXRpc2gubXVzZXVtIiwiYnJpdGlzaGNvbHVtYmlhLm11c2V1bSIsImJyb2FkY2FzdC5tdXNldW0iLCJicnVuZWwubXVzZXVtIiwi''@;'; put 'put ''YnJ1c3NlbC5tdXNldW0iLCJicnVzc2Vscy5tdXNldW0iLCJicnV4ZWxsZXMubXVzZXVtIiwiYnVpbGRpbmcubXVzZXVtIiwiYnVyZ2hvZi5tdXNldW0iLCJidXMubXVzZXVtIiwiYnVzaGV5Lm11c2V1bSIsImNhZGFxdWVzLm11c2V1bSIsImNhbGlmb3JuaWEubXVzZXVtIiwiY2FtYnJpZGdl''@;'; put 'put ''Lm11c2V1bSIsImNhbi5tdXNldW0iLCJjYW5hZGEubXVzZXVtIiwiY2FwZWJyZXRvbi5tdXNldW0iLCJjYXJyaWVyLm11c2V1bSIsImNhcnRvb25hcnQubXVzZXVtIiwiY2FzYWRlbGFtb25lZGEubXVzZXVtIiwiY2FzdGxlLm11c2V1bSIsImNhc3RyZXMubXVzZXVtIiwiY2VsdGljLm11c2V1''@;'; put 'put ''bSIsImNlbnRlci5tdXNldW0iLCJjaGF0dGFub29nYS5tdXNldW0iLCJjaGVsdGVuaGFtLm11c2V1bSIsImNoZXNhcGVha2ViYXkubXVzZXVtIiwiY2hpY2Fnby5tdXNldW0iLCJjaGlsZHJlbi5tdXNldW0iLCJjaGlsZHJlbnMubXVzZXVtIiwiY2hpbGRyZW5zZ2FyZGVuLm11c2V1bSIsImNo''@;'; put 'put ''aXJvcHJhY3RpYy5tdXNldW0iLCJjaG9jb2xhdGUubXVzZXVtIiwiY2hyaXN0aWFuc2J1cmcubXVzZXVtIiwiY2luY2lubmF0aS5tdXNldW0iLCJjaW5lbWEubXVzZXVtIiwiY2lyY3VzLm11c2V1bSIsImNpdmlsaXNhdGlvbi5tdXNldW0iLCJjaXZpbGl6YXRpb24ubXVzZXVtIiwiY2l2aWx3''@;'; put 'put ''YXIubXVzZXVtIiwiY2xpbnRvbi5tdXNldW0iLCJjbG9jay5tdXNldW0iLCJjb2FsLm11c2V1bSIsImNvYXN0YWxkZWZlbmNlLm11c2V1bSIsImNvZHkubXVzZXVtIiwiY29sZHdhci5tdXNldW0iLCJjb2xsZWN0aW9uLm11c2V1bSIsImNvbG9uaWFsd2lsbGlhbXNidXJnLm11c2V1bSIsImNv''@;'; put 'put ''bG9yYWRvcGxhdGVhdS5tdXNldW0iLCJjb2x1bWJpYS5tdXNldW0iLCJjb2x1bWJ1cy5tdXNldW0iLCJjb21tdW5pY2F0aW9uLm11c2V1bSIsImNvbW11bmljYXRpb25zLm11c2V1bSIsImNvbW11bml0eS5tdXNldW0iLCJjb21wdXRlci5tdXNldW0iLCJjb21wdXRlcmhpc3RvcnkubXVzZXVt''@;'; put 'put ''IiwiY29tdW5pY2FceGU3XHhmNWVzLm11c2V1bSIsImNvbnRlbXBvcmFyeS5tdXNldW0iLCJjb250ZW1wb3JhcnlhcnQubXVzZXVtIiwiY29udmVudC5tdXNldW0iLCJjb3BlbmhhZ2VuLm11c2V1bSIsImNvcnBvcmF0aW9uLm11c2V1bSIsImNvcnJlaW9zLWUtdGVsZWNvbXVuaWNhXHhlN1x4''@;'; put 'put ''ZjVlcy5tdXNldW0iLCJjb3J2ZXR0ZS5tdXNldW0iLCJjb3N0dW1lLm11c2V1bSIsImNvdW50cnllc3RhdGUubXVzZXVtIiwiY291bnR5Lm11c2V1bSIsImNyYWZ0cy5tdXNldW0iLCJjcmFuYnJvb2subXVzZXVtIiwiY3JlYXRpb24ubXVzZXVtIiwiY3VsdHVyYWwubXVzZXVtIiwiY3VsdHVy''@;'; put 'put ''YWxjZW50ZXIubXVzZXVtIiwiY3VsdHVyZS5tdXNldW0iLCJjeWJlci5tdXNldW0iLCJjeW1ydS5tdXNldW0iLCJkYWxpLm11c2V1bSIsImRhbGxhcy5tdXNldW0iLCJkYXRhYmFzZS5tdXNldW0iLCJkZHIubXVzZXVtIiwiZGVjb3JhdGl2ZWFydHMubXVzZXVtIiwiZGVsYXdhcmUubXVzZXVt''@;'; put 'put ''IiwiZGVsbWVuaG9yc3QubXVzZXVtIiwiZGVubWFyay5tdXNldW0iLCJkZXBvdC5tdXNldW0iLCJkZXNpZ24ubXVzZXVtIiwiZGV0cm9pdC5tdXNldW0iLCJkaW5vc2F1ci5tdXNldW0iLCJkaXNjb3ZlcnkubXVzZXVtIiwiZG9sbHMubXVzZXVtIiwiZG9ub3N0aWEubXVzZXVtIiwiZHVyaGFt''@;'; put 'put ''Lm11c2V1bSIsImVhc3RhZnJpY2EubXVzZXVtIiwiZWFzdGNvYXN0Lm11c2V1bSIsImVkdWNhdGlvbi5tdXNldW0iLCJlZHVjYXRpb25hbC5tdXNldW0iLCJlZ3lwdGlhbi5tdXNldW0iLCJlaXNlbmJhaG4ubXVzZXVtIiwiZWxidXJnLm11c2V1bSIsImVsdmVuZHJlbGwubXVzZXVtIiwiZW1i''@;'; put 'put ''cm9pZGVyeS5tdXNldW0iLCJlbmN5Y2xvcGVkaWMubXVzZXVtIiwiZW5nbGFuZC5tdXNldW0iLCJlbnRvbW9sb2d5Lm11c2V1bSIsImVudmlyb25tZW50Lm11c2V1bSIsImVudmlyb25tZW50YWxjb25zZXJ2YXRpb24ubXVzZXVtIiwiZXBpbGVwc3kubXVzZXVtIiwiZXNzZXgubXVzZXVtIiwi''@;'; put 'put ''ZXN0YXRlLm11c2V1bSIsImV0aG5vbG9neS5tdXNldW0iLCJleGV0ZXIubXVzZXVtIiwiZXhoaWJpdGlvbi5tdXNldW0iLCJmYW1pbHkubXVzZXVtIiwiZmFybS5tdXNldW0iLCJmYXJtZXF1aXBtZW50Lm11c2V1bSIsImZhcm1lcnMubXVzZXVtIiwiZmFybXN0ZWFkLm11c2V1bSIsImZpZWxk''@;'; put 'put ''Lm11c2V1bSIsImZpZ3VlcmVzLm11c2V1bSIsImZpbGF0ZWxpYS5tdXNldW0iLCJmaWxtLm11c2V1bSIsImZpbmVhcnQubXVzZXVtIiwiZmluZWFydHMubXVzZXVtIiwiZmlubGFuZC5tdXNldW0iLCJmbGFuZGVycy5tdXNldW0iLCJmbG9yaWRhLm11c2V1bSIsImZvcmNlLm11c2V1bSIsImZv''@;'; put 'put ''cnRtaXNzb3VsYS5tdXNldW0iLCJmb3J0d29ydGgubXVzZXVtIiwiZm91bmRhdGlvbi5tdXNldW0iLCJmcmFuY2Fpc2UubXVzZXVtIiwiZnJhbmtmdXJ0Lm11c2V1bSIsImZyYW56aXNrYW5lci5tdXNldW0iLCJmcmVlbWFzb25yeS5tdXNldW0iLCJmcmVpYnVyZy5tdXNldW0iLCJmcmlib3Vy''@;'; put 'put ''Zy5tdXNldW0iLCJmcm9nLm11c2V1bSIsImZ1bmRhY2lvLm11c2V1bSIsImZ1cm5pdHVyZS5tdXNldW0iLCJnYWxsZXJ5Lm11c2V1bSIsImdhcmRlbi5tdXNldW0iLCJnYXRld2F5Lm11c2V1bSIsImdlZWx2aW5jay5tdXNldW0iLCJnZW1vbG9naWNhbC5tdXNldW0iLCJnZW9sb2d5Lm11c2V1''@;'; put 'put ''bSIsImdlb3JnaWEubXVzZXVtIiwiZ2llc3Nlbi5tdXNldW0iLCJnbGFzLm11c2V1bSIsImdsYXNzLm11c2V1bSIsImdvcmdlLm11c2V1bSIsImdyYW5kcmFwaWRzLm11c2V1bSIsImdyYXoubXVzZXVtIiwiZ3Vlcm5zZXkubXVzZXVtIiwiaGFsbG9mZmFtZS5tdXNldW0iLCJoYW1idXJnLm11''@;'; put 'put ''c2V1bSIsImhhbmRzb24ubXVzZXVtIiwiaGFydmVzdGNlbGVicmF0aW9uLm11c2V1bSIsImhhd2FpaS5tdXNldW0iLCJoZWFsdGgubXVzZXVtIiwiaGVpbWF0dW5kdWhyZW4ubXVzZXVtIiwiaGVsbGFzLm11c2V1bSIsImhlbHNpbmtpLm11c2V1bSIsImhlbWJ5Z2RzZm9yYnVuZC5tdXNldW0i''@;'; put 'put ''LCJoZXJpdGFnZS5tdXNldW0iLCJoaXN0b2lyZS5tdXNldW0iLCJoaXN0b3JpY2FsLm11c2V1bSIsImhpc3RvcmljYWxzb2NpZXR5Lm11c2V1bSIsImhpc3RvcmljaG91c2VzLm11c2V1bSIsImhpc3RvcmlzY2gubXVzZXVtIiwiaGlzdG9yaXNjaGVzLm11c2V1bSIsImhpc3RvcnkubXVzZXVt''@;'; put 'put ''IiwiaGlzdG9yeW9mc2NpZW5jZS5tdXNldW0iLCJob3JvbG9neS5tdXNldW0iLCJob3VzZS5tdXNldW0iLCJodW1hbml0aWVzLm11c2V1bSIsImlsbHVzdHJhdGlvbi5tdXNldW0iLCJpbWFnZWFuZHNvdW5kLm11c2V1bSIsImluZGlhbi5tdXNldW0iLCJpbmRpYW5hLm11c2V1bSIsImluZGlh''@;'; put 'put ''bmFwb2xpcy5tdXNldW0iLCJpbmRpYW5tYXJrZXQubXVzZXVtIiwiaW50ZWxsaWdlbmNlLm11c2V1bSIsImludGVyYWN0aXZlLm11c2V1bSIsImlyYXEubXVzZXVtIiwiaXJvbi5tdXNldW0iLCJpc2xlb2ZtYW4ubXVzZXVtIiwiamFtaXNvbi5tdXNldW0iLCJqZWZmZXJzb24ubXVzZXVtIiwi''@;'; put 'put ''amVydXNhbGVtLm11c2V1bSIsImpld2VscnkubXVzZXVtIiwiamV3aXNoLm11c2V1bSIsImpld2lzaGFydC5tdXNldW0iLCJqZmsubXVzZXVtIiwiam91cm5hbGlzbS5tdXNldW0iLCJqdWRhaWNhLm11c2V1bSIsImp1ZHlnYXJsYW5kLm11c2V1bSIsImp1ZWRpc2NoZXMubXVzZXVtIiwianVp''@;'; put 'put ''Zi5tdXNldW0iLCJrYXJhdGUubXVzZXVtIiwia2FyaWthdHVyLm11c2V1bSIsImtpZHMubXVzZXVtIiwia29lYmVuaGF2bi5tdXNldW0iLCJrb2Vsbi5tdXNldW0iLCJrdW5zdC5tdXNldW0iLCJrdW5zdHNhbW1sdW5nLm11c2V1bSIsImt1bnN0dW5kZGVzaWduLm11c2V1bSIsImxhYm9yLm11''@;'; put 'put ''c2V1bSIsImxhYm91ci5tdXNldW0iLCJsYWpvbGxhLm11c2V1bSIsImxhbmNhc2hpcmUubXVzZXVtIiwibGFuZGVzLm11c2V1bSIsImxhbnMubXVzZXVtIiwibFx4ZTRucy5tdXNldW0iLCJsYXJzc29uLm11c2V1bSIsImxld2lzbWlsbGVyLm11c2V1bSIsImxpbmNvbG4ubXVzZXVtIiwibGlu''@;'; put 'put ''ei5tdXNldW0iLCJsaXZpbmcubXVzZXVtIiwibGl2aW5naGlzdG9yeS5tdXNldW0iLCJsb2NhbGhpc3RvcnkubXVzZXVtIiwibG9uZG9uLm11c2V1bSIsImxvc2FuZ2VsZXMubXVzZXVtIiwibG91dnJlLm11c2V1bSIsImxveWFsaXN0Lm11c2V1bSIsImx1Y2VybmUubXVzZXVtIiwibHV4ZW1i''@;'; put 'put ''b3VyZy5tdXNldW0iLCJsdXplcm4ubXVzZXVtIiwibWFkLm11c2V1bSIsIm1hZHJpZC5tdXNldW0iLCJtYWxsb3JjYS5tdXNldW0iLCJtYW5jaGVzdGVyLm11c2V1bSIsIm1hbnNpb24ubXVzZXVtIiwibWFuc2lvbnMubXVzZXVtIiwibWFueC5tdXNldW0iLCJtYXJidXJnLm11c2V1bSIsIm1h''@;'; put 'put ''cml0aW1lLm11c2V1bSIsIm1hcml0aW1vLm11c2V1bSIsIm1hcnlsYW5kLm11c2V1bSIsIm1hcnlsaHVyc3QubXVzZXVtIiwibWVkaWEubXVzZXVtIiwibWVkaWNhbC5tdXNldW0iLCJtZWRpemluaGlzdG9yaXNjaGVzLm11c2V1bSIsIm1lZXJlcy5tdXNldW0iLCJtZW1vcmlhbC5tdXNldW0i''@;'; put 'put ''LCJtZXNhdmVyZGUubXVzZXVtIiwibWljaGlnYW4ubXVzZXVtIiwibWlkYXRsYW50aWMubXVzZXVtIiwibWlsaXRhcnkubXVzZXVtIiwibWlsbC5tdXNldW0iLCJtaW5lcnMubXVzZXVtIiwibWluaW5nLm11c2V1bSIsIm1pbm5lc290YS5tdXNldW0iLCJtaXNzaWxlLm11c2V1bSIsIm1pc3Nv''@;'; put 'put ''dWxhLm11c2V1bSIsIm1vZGVybi5tdXNldW0iLCJtb21hLm11c2V1bSIsIm1vbmV5Lm11c2V1bSIsIm1vbm1vdXRoLm11c2V1bSIsIm1vbnRpY2VsbG8ubXVzZXVtIiwibW9udHJlYWwubXVzZXVtIiwibW9zY293Lm11c2V1bSIsIm1vdG9yY3ljbGUubXVzZXVtIiwibXVlbmNoZW4ubXVzZXVt''@;'; put 'put ''IiwibXVlbnN0ZXIubXVzZXVtIiwibXVsaG91c2UubXVzZXVtIiwibXVuY2llLm11c2V1bSIsIm11c2VldC5tdXNldW0iLCJtdXNldW1jZW50ZXIubXVzZXVtIiwibXVzZXVtdmVyZW5pZ2luZy5tdXNldW0iLCJtdXNpYy5tdXNldW0iLCJuYXRpb25hbC5tdXNldW0iLCJuYXRpb25hbGZpcmVh''@;'; put 'put ''cm1zLm11c2V1bSIsIm5hdGlvbmFsaGVyaXRhZ2UubXVzZXVtIiwibmF0aXZlYW1lcmljYW4ubXVzZXVtIiwibmF0dXJhbGhpc3RvcnkubXVzZXVtIiwibmF0dXJhbGhpc3RvcnltdXNldW0ubXVzZXVtIiwibmF0dXJhbHNjaWVuY2VzLm11c2V1bSIsIm5hdHVyZS5tdXNldW0iLCJuYXR1cmhp''@;'; put 'put ''c3RvcmlzY2hlcy5tdXNldW0iLCJuYXR1dXJ3ZXRlbnNjaGFwcGVuLm11c2V1bSIsIm5hdW1idXJnLm11c2V1bSIsIm5hdmFsLm11c2V1bSIsIm5lYnJhc2thLm11c2V1bSIsIm5ldWVzLm11c2V1bSIsIm5ld2hhbXBzaGlyZS5tdXNldW0iLCJuZXdqZXJzZXkubXVzZXVtIiwibmV3bWV4aWNv''@;'; put 'put ''Lm11c2V1bSIsIm5ld3BvcnQubXVzZXVtIiwibmV3c3BhcGVyLm11c2V1bSIsIm5ld3lvcmsubXVzZXVtIiwibmllcGNlLm11c2V1bSIsIm5vcmZvbGsubXVzZXVtIiwibm9ydGgubXVzZXVtIiwibnJ3Lm11c2V1bSIsIm55Yy5tdXNldW0iLCJueW55Lm11c2V1bSIsIm9jZWFub2dyYXBoaWMu''@;'; put 'put ''bXVzZXVtIiwib2NlYW5vZ3JhcGhpcXVlLm11c2V1bSIsIm9tYWhhLm11c2V1bSIsIm9ubGluZS5tdXNldW0iLCJvbnRhcmlvLm11c2V1bSIsIm9wZW5haXIubXVzZXVtIiwib3JlZ29uLm11c2V1bSIsIm9yZWdvbnRyYWlsLm11c2V1bSIsIm90YWdvLm11c2V1bSIsIm94Zm9yZC5tdXNldW0i''@;'; put 'put ''LCJwYWNpZmljLm11c2V1bSIsInBhZGVyYm9ybi5tdXNldW0iLCJwYWxhY2UubXVzZXVtIiwicGFsZW8ubXVzZXVtIiwicGFsbXNwcmluZ3MubXVzZXVtIiwicGFuYW1hLm11c2V1bSIsInBhcmlzLm11c2V1bSIsInBhc2FkZW5hLm11c2V1bSIsInBoYXJtYWN5Lm11c2V1bSIsInBoaWxhZGVs''@;'; put 'put ''cGhpYS5tdXNldW0iLCJwaGlsYWRlbHBoaWFhcmVhLm11c2V1bSIsInBoaWxhdGVseS5tdXNldW0iLCJwaG9lbml4Lm11c2V1bSIsInBob3RvZ3JhcGh5Lm11c2V1bSIsInBpbG90cy5tdXNldW0iLCJwaXR0c2J1cmdoLm11c2V1bSIsInBsYW5ldGFyaXVtLm11c2V1bSIsInBsYW50YXRpb24u''@;'; put 'put ''bXVzZXVtIiwicGxhbnRzLm11c2V1bSIsInBsYXphLm11c2V1bSIsInBvcnRhbC5tdXNldW0iLCJwb3J0bGFuZC5tdXNldW0iLCJwb3J0bGxpZ2F0Lm11c2V1bSIsInBvc3RzLWFuZC10ZWxlY29tbXVuaWNhdGlvbnMubXVzZXVtIiwicHJlc2VydmF0aW9uLm11c2V1bSIsInByZXNpZGlvLm11''@;'; put 'put ''c2V1bSIsInByZXNzLm11c2V1bSIsInByb2plY3QubXVzZXVtIiwicHVibGljLm11c2V1bSIsInB1Ym9sLm11c2V1bSIsInF1ZWJlYy5tdXNldW0iLCJyYWlscm9hZC5tdXNldW0iLCJyYWlsd2F5Lm11c2V1bSIsInJlc2VhcmNoLm11c2V1bSIsInJlc2lzdGFuY2UubXVzZXVtIiwicmlvZGVq''@;'; put 'put ''YW5laXJvLm11c2V1bSIsInJvY2hlc3Rlci5tdXNldW0iLCJyb2NrYXJ0Lm11c2V1bSIsInJvbWEubXVzZXVtIiwicnVzc2lhLm11c2V1bSIsInNhaW50bG91aXMubXVzZXVtIiwic2FsZW0ubXVzZXVtIiwic2FsdmFkb3JkYWxpLm11c2V1bSIsInNhbHpidXJnLm11c2V1bSIsInNhbmRpZWdv''@;'; put 'put ''Lm11c2V1bSIsInNhbmZyYW5jaXNjby5tdXNldW0iLCJzYW50YWJhcmJhcmEubXVzZXVtIiwic2FudGFjcnV6Lm11c2V1bSIsInNhbnRhZmUubXVzZXVtIiwic2Fza2F0Y2hld2FuLm11c2V1bSIsInNhdHgubXVzZXVtIiwic2F2YW5uYWhnYS5tdXNldW0iLCJzY2hsZXNpc2NoZXMubXVzZXVt''@;'; put 'put ''Iiwic2Nob2VuYnJ1bm4ubXVzZXVtIiwic2Nob2tvbGFkZW4ubXVzZXVtIiwic2Nob29sLm11c2V1bSIsInNjaHdlaXoubXVzZXVtIiwic2NpZW5jZS5tdXNldW0iLCJzY2llbmNlYW5kaGlzdG9yeS5tdXNldW0iLCJzY2llbmNlYW5kaW5kdXN0cnkubXVzZXVtIiwic2NpZW5jZWNlbnRlci5t''@;'; put 'put ''dXNldW0iLCJzY2llbmNlY2VudGVycy5tdXNldW0iLCJzY2llbmNlLWZpY3Rpb24ubXVzZXVtIiwic2NpZW5jZWhpc3RvcnkubXVzZXVtIiwic2NpZW5jZXMubXVzZXVtIiwic2NpZW5jZXNuYXR1cmVsbGVzLm11c2V1bSIsInNjb3RsYW5kLm11c2V1bSIsInNlYXBvcnQubXVzZXVtIiwic2V0''@;'; put 'put ''dGxlbWVudC5tdXNldW0iLCJzZXR0bGVycy5tdXNldW0iLCJzaGVsbC5tdXNldW0iLCJzaGVyYnJvb2tlLm11c2V1bSIsInNpYmVuaWsubXVzZXVtIiwic2lsay5tdXNldW0iLCJza2kubXVzZXVtIiwic2tvbGUubXVzZXVtIiwic29jaWV0eS5tdXNldW0iLCJzb2xvZ25lLm11c2V1bSIsInNv''@;'; put 'put ''dW5kYW5kdmlzaW9uLm11c2V1bSIsInNvdXRoY2Fyb2xpbmEubXVzZXVtIiwic291dGh3ZXN0Lm11c2V1bSIsInNwYWNlLm11c2V1bSIsInNweS5tdXNldW0iLCJzcXVhcmUubXVzZXVtIiwic3RhZHQubXVzZXVtIiwic3RhbGJhbnMubXVzZXVtIiwic3Rhcm5iZXJnLm11c2V1bSIsInN0YXRl''@;'; put 'put ''Lm11c2V1bSIsInN0YXRlb2ZkZWxhd2FyZS5tdXNldW0iLCJzdGF0aW9uLm11c2V1bSIsInN0ZWFtLm11c2V1bSIsInN0ZWllcm1hcmsubXVzZXVtIiwic3Rqb2huLm11c2V1bSIsInN0b2NraG9sbS5tdXNldW0iLCJzdHBldGVyc2J1cmcubXVzZXVtIiwic3R1dHRnYXJ0Lm11c2V1bSIsInN1''@;'; put 'put ''aXNzZS5tdXNldW0iLCJzdXJnZW9uc2hhbGwubXVzZXVtIiwic3VycmV5Lm11c2V1bSIsInN2aXp6ZXJhLm11c2V1bSIsInN3ZWRlbi5tdXNldW0iLCJzeWRuZXkubXVzZXVtIiwidGFuay5tdXNldW0iLCJ0Y20ubXVzZXVtIiwidGVjaG5vbG9neS5tdXNldW0iLCJ0ZWxla29tbXVuaWthdGlv''@;'; put 'put ''bi5tdXNldW0iLCJ0ZWxldmlzaW9uLm11c2V1bSIsInRleGFzLm11c2V1bSIsInRleHRpbGUubXVzZXVtIiwidGhlYXRlci5tdXNldW0iLCJ0aW1lLm11c2V1bSIsInRpbWVrZWVwaW5nLm11c2V1bSIsInRvcG9sb2d5Lm11c2V1bSIsInRvcmluby5tdXNldW0iLCJ0b3VjaC5tdXNldW0iLCJ0''@;'; put 'put ''b3duLm11c2V1bSIsInRyYW5zcG9ydC5tdXNldW0iLCJ0cmVlLm11c2V1bSIsInRyb2xsZXkubXVzZXVtIiwidHJ1c3QubXVzZXVtIiwidHJ1c3RlZS5tdXNldW0iLCJ1aHJlbi5tdXNldW0iLCJ1bG0ubXVzZXVtIiwidW5kZXJzZWEubXVzZXVtIiwidW5pdmVyc2l0eS5tdXNldW0iLCJ1c2Eu''@;'; put 'put ''bXVzZXVtIiwidXNhbnRpcXVlcy5tdXNldW0iLCJ1c2FydHMubXVzZXVtIiwidXNjb3VudHJ5ZXN0YXRlLm11c2V1bSIsInVzY3VsdHVyZS5tdXNldW0iLCJ1c2RlY29yYXRpdmVhcnRzLm11c2V1bSIsInVzZ2FyZGVuLm11c2V1bSIsInVzaGlzdG9yeS5tdXNldW0iLCJ1c2h1YWlhLm11c2V1''@;'; put 'put ''bSIsInVzbGl2aW5naGlzdG9yeS5tdXNldW0iLCJ1dGFoLm11c2V1bSIsInV2aWMubXVzZXVtIiwidmFsbGV5Lm11c2V1bSIsInZhbnRhYS5tdXNldW0iLCJ2ZXJzYWlsbGVzLm11c2V1bSIsInZpa2luZy5tdXNldW0iLCJ2aWxsYWdlLm11c2V1bSIsInZpcmdpbmlhLm11c2V1bSIsInZpcnR1''@;'; put 'put ''YWwubXVzZXVtIiwidmlydHVlbC5tdXNldW0iLCJ2bGFhbmRlcmVuLm11c2V1bSIsInZvbGtlbmt1bmRlLm11c2V1bSIsIndhbGVzLm11c2V1bSIsIndhbGxvbmllLm11c2V1bSIsIndhci5tdXNldW0iLCJ3YXNoaW5ndG9uZGMubXVzZXVtIiwid2F0Y2hhbmRjbG9jay5tdXNldW0iLCJ3YXRj''@;'; put 'put ''aC1hbmQtY2xvY2subXVzZXVtIiwid2VzdGVybi5tdXNldW0iLCJ3ZXN0ZmFsZW4ubXVzZXVtIiwid2hhbGluZy5tdXNldW0iLCJ3aWxkbGlmZS5tdXNldW0iLCJ3aWxsaWFtc2J1cmcubXVzZXVtIiwid2luZG1pbGwubXVzZXVtIiwid29ya3Nob3AubXVzZXVtIiwieW9yay5tdXNldW0iLCJ5''@;'; put 'put ''b3Jrc2hpcmUubXVzZXVtIiwieW9zZW1pdGUubXVzZXVtIiwieW91dGgubXVzZXVtIiwiem9vbG9naWNhbC5tdXNldW0iLCJ6b29sb2d5Lm11c2V1bSIsIlx1MDVkOVx1MDVlOFx1MDVkNVx1MDVlOVx1MDVkY1x1MDVkOVx1MDVkZC5tdXNldW0iLCJcdTA0MzhcdTA0M2FcdTA0M2VcdTA0M2Mu''@;'; put 'put ''bXVzZXVtIiwibXYiLCJhZXJvLm12IiwiYml6Lm12IiwiY29tLm12IiwiY29vcC5tdiIsImVkdS5tdiIsImdvdi5tdiIsImluZm8ubXYiLCJpbnQubXYiLCJtaWwubXYiLCJtdXNldW0ubXYiLCJuYW1lLm12IiwibmV0Lm12Iiwib3JnLm12IiwicHJvLm12IiwibXciLCJhYy5tdyIsImJpei5t''@;'; put 'put ''dyIsImNvLm13IiwiY29tLm13IiwiY29vcC5tdyIsImVkdS5tdyIsImdvdi5tdyIsImludC5tdyIsIm11c2V1bS5tdyIsIm5ldC5tdyIsIm9yZy5tdyIsIm14IiwiY29tLm14Iiwib3JnLm14IiwiZ29iLm14IiwiZWR1Lm14IiwibmV0Lm14IiwibXkiLCJiaXoubXkiLCJjb20ubXkiLCJlZHUu''@;'; put 'put ''bXkiLCJnb3YubXkiLCJtaWwubXkiLCJuYW1lLm15IiwibmV0Lm15Iiwib3JnLm15IiwibXoiLCJhYy5teiIsImFkdi5teiIsImNvLm16IiwiZWR1Lm16IiwiZ292Lm16IiwibWlsLm16IiwibmV0Lm16Iiwib3JnLm16IiwibmEiLCJpbmZvLm5hIiwicHJvLm5hIiwibmFtZS5uYSIsInNjaG9v''@;'; put 'put ''bC5uYSIsIm9yLm5hIiwiZHIubmEiLCJ1cy5uYSIsIm14Lm5hIiwiY2EubmEiLCJpbi5uYSIsImNjLm5hIiwidHYubmEiLCJ3cy5uYSIsIm1vYmkubmEiLCJjby5uYSIsImNvbS5uYSIsIm9yZy5uYSIsIm5hbWUiLCJuYyIsImFzc28ubmMiLCJub20ubmMiLCJuZSIsIm5ldCIsIm5mIiwiY29t''@;'; put 'put ''Lm5mIiwibmV0Lm5mIiwicGVyLm5mIiwicmVjLm5mIiwid2ViLm5mIiwiYXJ0cy5uZiIsImZpcm0ubmYiLCJpbmZvLm5mIiwib3RoZXIubmYiLCJzdG9yZS5uZiIsIm5nIiwiY29tLm5nIiwiZWR1Lm5nIiwiZ292Lm5nIiwiaS5uZyIsIm1pbC5uZyIsIm1vYmkubmciLCJuYW1lLm5nIiwibmV0''@;'; put 'put ''Lm5nIiwib3JnLm5nIiwic2NoLm5nIiwibmkiLCJhYy5uaSIsImJpei5uaSIsImNvLm5pIiwiY29tLm5pIiwiZWR1Lm5pIiwiZ29iLm5pIiwiaW4ubmkiLCJpbmZvLm5pIiwiaW50Lm5pIiwibWlsLm5pIiwibmV0Lm5pIiwibm9tLm5pIiwib3JnLm5pIiwid2ViLm5pIiwibmwiLCJubyIsImZo''@;'; put 'put ''cy5ubyIsInZncy5ubyIsImZ5bGtlc2JpYmwubm8iLCJmb2xrZWJpYmwubm8iLCJtdXNldW0ubm8iLCJpZHJldHQubm8iLCJwcml2Lm5vIiwibWlsLm5vIiwic3RhdC5ubyIsImRlcC5ubyIsImtvbW11bmUubm8iLCJoZXJhZC5ubyIsImFhLm5vIiwiYWgubm8iLCJidS5ubyIsImZtLm5vIiwi''@;'; put 'put ''aGwubm8iLCJobS5ubyIsImphbi1tYXllbi5ubyIsIm1yLm5vIiwibmwubm8iLCJudC5ubyIsIm9mLm5vIiwib2wubm8iLCJvc2xvLm5vIiwicmwubm8iLCJzZi5ubyIsInN0Lm5vIiwic3ZhbGJhcmQubm8iLCJ0bS5ubyIsInRyLm5vIiwidmEubm8iLCJ2Zi5ubyIsImdzLmFhLm5vIiwiZ3Mu''@;'; put 'put ''YWgubm8iLCJncy5idS5ubyIsImdzLmZtLm5vIiwiZ3MuaGwubm8iLCJncy5obS5ubyIsImdzLmphbi1tYXllbi5ubyIsImdzLm1yLm5vIiwiZ3Mubmwubm8iLCJncy5udC5ubyIsImdzLm9mLm5vIiwiZ3Mub2wubm8iLCJncy5vc2xvLm5vIiwiZ3Mucmwubm8iLCJncy5zZi5ubyIsImdzLnN0''@;'; put 'put ''Lm5vIiwiZ3Muc3ZhbGJhcmQubm8iLCJncy50bS5ubyIsImdzLnRyLm5vIiwiZ3MudmEubm8iLCJncy52Zi5ubyIsImFrcmVoYW1uLm5vIiwiXHhlNWtyZWhhbW4ubm8iLCJhbGdhcmQubm8iLCJceGU1bGdceGU1cmQubm8iLCJhcm5hLm5vIiwiYnJ1bXVuZGRhbC5ubyIsImJyeW5lLm5vIiwi''@;'; put 'put ''YnJvbm5veXN1bmQubm8iLCJiclx4Zjhublx4Zjh5c3VuZC5ubyIsImRyb2Jhay5ubyIsImRyXHhmOGJhay5ubyIsImVnZXJzdW5kLm5vIiwiZmV0c3VuZC5ubyIsImZsb3JvLm5vIiwiZmxvclx4Zjgubm8iLCJmcmVkcmlrc3RhZC5ubyIsImhva2tzdW5kLm5vIiwiaG9uZWZvc3Mubm8iLCJo''@;'; put 'put ''XHhmOG5lZm9zcy5ubyIsImplc3NoZWltLm5vIiwiam9ycGVsYW5kLm5vIiwialx4ZjhycGVsYW5kLm5vIiwia2lya2VuZXMubm8iLCJrb3BlcnZpay5ubyIsImtyb2tzdGFkZWx2YS5ubyIsImxhbmdldmFnLm5vIiwibGFuZ2V2XHhlNWcubm8iLCJsZWlydmlrLm5vIiwibWpvbmRhbGVuLm5v''@;'; put 'put ''IiwibWpceGY4bmRhbGVuLm5vIiwibW8taS1yYW5hLm5vIiwibW9zam9lbi5ubyIsIm1vc2pceGY4ZW4ubm8iLCJuZXNvZGR0YW5nZW4ubm8iLCJvcmthbmdlci5ubyIsIm9zb3lyby5ubyIsIm9zXHhmOHlyby5ubyIsInJhaG9sdC5ubyIsInJceGU1aG9sdC5ubyIsInNhbmRuZXNzam9lbi5u''@;'; put 'put ''byIsInNhbmRuZXNzalx4Zjhlbi5ubyIsInNrZWRzbW9rb3JzZXQubm8iLCJzbGF0dHVtLm5vIiwic3BqZWxrYXZpay5ubyIsInN0YXRoZWxsZS5ubyIsInN0YXZlcm4ubm8iLCJzdGpvcmRhbHNoYWxzZW4ubm8iLCJzdGpceGY4cmRhbHNoYWxzZW4ubm8iLCJ0YW5hbmdlci5ubyIsInRyYW5i''@;'; put 'put ''eS5ubyIsInZvc3NldmFuZ2VuLm5vIiwiYWZqb3JkLm5vIiwiXHhlNWZqb3JkLm5vIiwiYWdkZW5lcy5ubyIsImFsLm5vIiwiXHhlNWwubm8iLCJhbGVzdW5kLm5vIiwiXHhlNWxlc3VuZC5ubyIsImFsc3RhaGF1Zy5ubyIsImFsdGEubm8iLCJceGUxbHRceGUxLm5vIiwiYWxhaGVhZGp1Lm5v''@;'; put 'put ''IiwiXHhlMWxhaGVhZGp1Lm5vIiwiYWx2ZGFsLm5vIiwiYW1saS5ubyIsIlx4ZTVtbGkubm8iLCJhbW90Lm5vIiwiXHhlNW1vdC5ubyIsImFuZGVidS5ubyIsImFuZG95Lm5vIiwiYW5kXHhmOHkubm8iLCJhbmRhc3VvbG8ubm8iLCJhcmRhbC5ubyIsIlx4ZTVyZGFsLm5vIiwiYXJlbWFyay5u''@;'; put 'put ''byIsImFyZW5kYWwubm8iLCJceGU1cy5ubyIsImFzZXJhbC5ubyIsIlx4ZTVzZXJhbC5ubyIsImFza2VyLm5vIiwiYXNraW0ubm8iLCJhc2t2b2xsLm5vIiwiYXNrb3kubm8iLCJhc2tceGY4eS5ubyIsImFzbmVzLm5vIiwiXHhlNXNuZXMubm8iLCJhdWRuZWRhbG4ubm8iLCJhdWtyYS5ubyIs''@;'; put 'put ''ImF1cmUubm8iLCJhdXJsYW5kLm5vIiwiYXVyc2tvZy1ob2xhbmQubm8iLCJhdXJza29nLWhceGY4bGFuZC5ubyIsImF1c3Rldm9sbC5ubyIsImF1c3RyaGVpbS5ubyIsImF2ZXJveS5ubyIsImF2ZXJceGY4eS5ubyIsImJhbGVzdHJhbmQubm8iLCJiYWxsYW5nZW4ubm8iLCJiYWxhdC5ubyIs''@;'; put 'put ''ImJceGUxbFx4ZTF0Lm5vIiwiYmFsc2Zqb3JkLm5vIiwiYmFoY2NhdnVvdG5hLm5vIiwiYlx4ZTFoY2NhdnVvdG5hLm5vIiwiYmFtYmxlLm5vIiwiYmFyZHUubm8iLCJiZWFyZHUubm8iLCJiZWlhcm4ubm8iLCJiYWpkZGFyLm5vIiwiYlx4ZTFqZGRhci5ubyIsImJhaWRhci5ubyIsImJceGUx''@;'; put 'put ''aWRceGUxci5ubyIsImJlcmcubm8iLCJiZXJnZW4ubm8iLCJiZXJsZXZhZy5ubyIsImJlcmxldlx4ZTVnLm5vIiwiYmVhcmFsdmFoa2kubm8iLCJiZWFyYWx2XHhlMWhraS5ubyIsImJpbmRhbC5ubyIsImJpcmtlbmVzLm5vIiwiYmphcmtveS5ubyIsImJqYXJrXHhmOHkubm8iLCJiamVya3Jl''@;'; put 'put ''aW0ubm8iLCJianVnbi5ubyIsImJvZG8ubm8iLCJib2RceGY4Lm5vIiwiYmFkYWRkamEubm8iLCJiXHhlNWRceGU1ZGRqXHhlNS5ubyIsImJ1ZGVqanUubm8iLCJib2tuLm5vIiwiYnJlbWFuZ2VyLm5vIiwiYnJvbm5veS5ubyIsImJyXHhmOG5uXHhmOHkubm8iLCJieWdsYW5kLm5vIiwiYnlr''@;'; put 'put ''bGUubm8iLCJiYXJ1bS5ubyIsImJceGU2cnVtLm5vIiwiYm8udGVsZW1hcmsubm8iLCJiXHhmOC50ZWxlbWFyay5ubyIsImJvLm5vcmRsYW5kLm5vIiwiYlx4Zjgubm9yZGxhbmQubm8iLCJiaWV2YXQubm8iLCJiaWV2XHhlMXQubm8iLCJib21sby5ubyIsImJceGY4bWxvLm5vIiwiYmF0c2Zq''@;'; put 'put ''b3JkLm5vIiwiYlx4ZTV0c2Zqb3JkLm5vIiwiYmFoY2F2dW90bmEubm8iLCJiXHhlMWhjYXZ1b3RuYS5ubyIsImRvdnJlLm5vIiwiZHJhbW1lbi5ubyIsImRyYW5nZWRhbC5ubyIsImR5cm95Lm5vIiwiZHlyXHhmOHkubm8iLCJkb25uYS5ubyIsImRceGY4bm5hLm5vIiwiZWlkLm5vIiwiZWlk''@;'; put 'put ''ZmpvcmQubm8iLCJlaWRzYmVyZy5ubyIsImVpZHNrb2cubm8iLCJlaWRzdm9sbC5ubyIsImVpZ2Vyc3VuZC5ubyIsImVsdmVydW0ubm8iLCJlbmViYWtrLm5vIiwiZW5nZXJkYWwubm8iLCJldG5lLm5vIiwiZXRuZWRhbC5ubyIsImV2ZW5lcy5ubyIsImV2ZW5hc3NpLm5vIiwiZXZlblx4ZTFc''@;'; put 'put ''dTAxNjFcdTAxNjFpLm5vIiwiZXZqZS1vZy1ob3JubmVzLm5vIiwiZmFyc3VuZC5ubyIsImZhdXNrZS5ubyIsImZ1b3Nza28ubm8iLCJmdW9pc2t1Lm5vIiwiZmVkamUubm8iLCJmZXQubm8iLCJmaW5ub3kubm8iLCJmaW5uXHhmOHkubm8iLCJmaXRqYXIubm8iLCJmamFsZXIubm8iLCJmamVs''@;'; put 'put ''bC5ubyIsImZsYWtzdGFkLm5vIiwiZmxhdGFuZ2VyLm5vIiwiZmxla2tlZmpvcmQubm8iLCJmbGVzYmVyZy5ubyIsImZsb3JhLm5vIiwiZmxhLm5vIiwiZmxceGU1Lm5vIiwiZm9sbGRhbC5ubyIsImZvcnNhbmQubm8iLCJmb3NuZXMubm8iLCJmcmVpLm5vIiwiZnJvZ24ubm8iLCJmcm9sYW5k''@;'; put 'put ''Lm5vIiwiZnJvc3RhLm5vIiwiZnJhbmEubm8iLCJmclx4ZTZuYS5ubyIsImZyb3lhLm5vIiwiZnJceGY4eWEubm8iLCJmdXNhLm5vIiwiZnlyZXNkYWwubm8iLCJmb3JkZS5ubyIsImZceGY4cmRlLm5vIiwiZ2FtdmlrLm5vIiwiZ2FuZ2F2aWlrYS5ubyIsImdceGUxXHUwMTRiZ2F2aWlrYS5u''@;'; put 'put ''byIsImdhdWxhci5ubyIsImdhdXNkYWwubm8iLCJnaWxkZXNrYWwubm8iLCJnaWxkZXNrXHhlNWwubm8iLCJnaXNrZS5ubyIsImdqZW1uZXMubm8iLCJnamVyZHJ1bS5ubyIsImdqZXJzdGFkLm5vIiwiZ2plc2RhbC5ubyIsImdqb3Zpay5ubyIsImdqXHhmOHZpay5ubyIsImdsb3BwZW4ubm8i''@;'; put 'put ''LCJnb2wubm8iLCJncmFuLm5vIiwiZ3JhbmUubm8iLCJncmFudmluLm5vIiwiZ3JhdGFuZ2VuLm5vIiwiZ3JpbXN0YWQubm8iLCJncm9uZy5ubyIsImtyYWFuZ2hrZS5ubyIsImtyXHhlNWFuZ2hrZS5ubyIsImdydWUubm8iLCJndWxlbi5ubyIsImhhZHNlbC5ubyIsImhhbGRlbi5ubyIsImhh''@;'; put 'put ''bHNhLm5vIiwiaGFtYXIubm8iLCJoYW1hcm95Lm5vIiwiaGFibWVyLm5vIiwiaFx4ZTFibWVyLm5vIiwiaGFwbWlyLm5vIiwiaFx4ZTFwbWlyLm5vIiwiaGFtbWVyZmVzdC5ubyIsImhhbW1hcmZlYXN0YS5ubyIsImhceGUxbW1ceGUxcmZlYXN0YS5ubyIsImhhcmFtLm5vIiwiaGFyZWlkLm5v''@;'; put 'put ''IiwiaGFyc3RhZC5ubyIsImhhc3Zpay5ubyIsImFrbm9sdW9rdGEubm8iLCJceGUxa1x1MDE0Ym9sdW9rdGEubm8iLCJoYXR0ZmplbGxkYWwubm8iLCJhYXJib3J0ZS5ubyIsImhhdWdlc3VuZC5ubyIsImhlbW5lLm5vIiwiaGVtbmVzLm5vIiwiaGVtc2VkYWwubm8iLCJoZXJveS5tb3JlLW9n''@;'; put 'put ''LXJvbXNkYWwubm8iLCJoZXJceGY4eS5tXHhmOHJlLW9nLXJvbXNkYWwubm8iLCJoZXJveS5ub3JkbGFuZC5ubyIsImhlclx4Zjh5Lm5vcmRsYW5kLm5vIiwiaGl0cmEubm8iLCJoamFydGRhbC5ubyIsImhqZWxtZWxhbmQubm8iLCJob2JvbC5ubyIsImhvYlx4ZjhsLm5vIiwiaG9mLm5vIiwi''@;'; put 'put ''aG9sLm5vIiwiaG9sZS5ubyIsImhvbG1lc3RyYW5kLm5vIiwiaG9sdGFsZW4ubm8iLCJob2x0XHhlNWxlbi5ubyIsImhvcm5pbmRhbC5ubyIsImhvcnRlbi5ubyIsImh1cmRhbC5ubyIsImh1cnVtLm5vIiwiaHZhbGVyLm5vIiwiaHlsbGVzdGFkLm5vIiwiaGFnZWJvc3RhZC5ubyIsImhceGU2''@;'; put 'put ''Z2Vib3N0YWQubm8iLCJob3lhbmdlci5ubyIsImhceGY4eWFuZ2VyLm5vIiwiaG95bGFuZGV0Lm5vIiwiaFx4Zjh5bGFuZGV0Lm5vIiwiaGEubm8iLCJoXHhlNS5ubyIsImliZXN0YWQubm8iLCJpbmRlcm95Lm5vIiwiaW5kZXJceGY4eS5ubyIsIml2ZWxhbmQubm8iLCJqZXZuYWtlci5ubyIs''@;'; put 'put ''ImpvbmRhbC5ubyIsImpvbHN0ZXIubm8iLCJqXHhmOGxzdGVyLm5vIiwia2FyYXNqb2subm8iLCJrYXJhc2pvaGthLm5vIiwia1x4ZTFyXHhlMVx1MDE2MWpvaGthLm5vIiwia2FybHNveS5ubyIsImdhbHNhLm5vIiwiZ1x4ZTFsc1x4ZTEubm8iLCJrYXJtb3kubm8iLCJrYXJtXHhmOHkubm8i''@;'; put 'put ''LCJrYXV0b2tlaW5vLm5vIiwiZ3VvdmRhZ2VhaWRudS5ubyIsImtsZXBwLm5vIiwia2xhYnUubm8iLCJrbFx4ZTZidS5ubyIsImtvbmdzYmVyZy5ubyIsImtvbmdzdmluZ2VyLm5vIiwia3JhZ2Vyby5ubyIsImtyYWdlclx4Zjgubm8iLCJrcmlzdGlhbnNhbmQubm8iLCJrcmlzdGlhbnN1bmQu''@;'; put 'put ''bm8iLCJrcm9kc2hlcmFkLm5vIiwia3JceGY4ZHNoZXJhZC5ubyIsImt2YWxzdW5kLm5vIiwicmFoa2tlcmF2anUubm8iLCJyXHhlMWhra2VyXHhlMXZqdS5ubyIsImt2YW0ubm8iLCJrdmluZXNkYWwubm8iLCJrdmlubmhlcmFkLm5vIiwia3ZpdGVzZWlkLm5vIiwia3ZpdHNveS5ubyIsImt2''@;'; put 'put ''aXRzXHhmOHkubm8iLCJrdmFmam9yZC5ubyIsImt2XHhlNmZqb3JkLm5vIiwiZ2llaHRhdnVvYXRuYS5ubyIsImt2YW5hbmdlbi5ubyIsImt2XHhlNm5hbmdlbi5ubyIsIm5hdnVvdG5hLm5vIiwiblx4ZTF2dW90bmEubm8iLCJrYWZqb3JkLm5vIiwia1x4ZTVmam9yZC5ubyIsImdhaXZ1b3Ru''@;'; put 'put ''YS5ubyIsImdceGUxaXZ1b3RuYS5ubyIsImxhcnZpay5ubyIsImxhdmFuZ2VuLm5vIiwibGF2YWdpcy5ubyIsImxvYWJhdC5ubyIsImxvYWJceGUxdC5ubyIsImxlYmVzYnkubm8iLCJkYXZ2ZXNpaWRhLm5vIiwibGVpa2FuZ2VyLm5vIiwibGVpcmZqb3JkLm5vIiwibGVrYS5ubyIsImxla3N2''@;'; put 'put ''aWsubm8iLCJsZW52aWsubm8iLCJsZWFuZ2F2aWlrYS5ubyIsImxlYVx1MDE0Ymdhdmlpa2Eubm8iLCJsZXNqYS5ubyIsImxldmFuZ2VyLm5vIiwibGllci5ubyIsImxpZXJuZS5ubyIsImxpbGxlaGFtbWVyLm5vIiwibGlsbGVzYW5kLm5vIiwibGluZGVzbmVzLm5vIiwibGluZGFzLm5vIiwi''@;'; put 'put ''bGluZFx4ZTVzLm5vIiwibG9tLm5vIiwibG9wcGEubm8iLCJsYWhwcGkubm8iLCJsXHhlMWhwcGkubm8iLCJsdW5kLm5vIiwibHVubmVyLm5vIiwibHVyb3kubm8iLCJsdXJceGY4eS5ubyIsImx1c3Rlci5ubyIsImx5bmdkYWwubm8iLCJseW5nZW4ubm8iLCJpdmd1Lm5vIiwibGFyZGFsLm5v''@;'; put 'put ''IiwibGVyZGFsLm5vIiwibFx4ZTZyZGFsLm5vIiwibG9kaW5nZW4ubm8iLCJsXHhmOGRpbmdlbi5ubyIsImxvcmVuc2tvZy5ubyIsImxceGY4cmVuc2tvZy5ubyIsImxvdGVuLm5vIiwibFx4Zjh0ZW4ubm8iLCJtYWx2aWsubm8iLCJtYXNveS5ubyIsIm1ceGU1c1x4Zjh5Lm5vIiwibXVvc2F0''@;'; put 'put ''Lm5vIiwibXVvc1x4ZTF0Lm5vIiwibWFuZGFsLm5vIiwibWFya2VyLm5vIiwibWFybmFyZGFsLm5vIiwibWFzZmpvcmRlbi5ubyIsIm1lbGFuZC5ubyIsIm1lbGRhbC5ubyIsIm1lbGh1cy5ubyIsIm1lbG95Lm5vIiwibWVsXHhmOHkubm8iLCJtZXJha2VyLm5vIiwibWVyXHhlNWtlci5ubyIs''@;'; put 'put ''Im1vYXJla2Uubm8iLCJtb1x4ZTVyZWtlLm5vIiwibWlkc3VuZC5ubyIsIm1pZHRyZS1nYXVsZGFsLm5vIiwibW9kYWxlbi5ubyIsIm1vZHVtLm5vIiwibW9sZGUubm8iLCJtb3NrZW5lcy5ubyIsIm1vc3Mubm8iLCJtb3N2aWsubm8iLCJtYWxzZWx2Lm5vIiwibVx4ZTVsc2Vsdi5ubyIsIm1h''@;'; put 'put ''bGF0dnVvcG1pLm5vIiwibVx4ZTFsYXR2dW9wbWkubm8iLCJuYW1kYWxzZWlkLm5vIiwiYWVqcmllLm5vIiwibmFtc29zLm5vIiwibmFtc3Nrb2dhbi5ubyIsIm5hYW1lc2pldnVlbWllLm5vIiwiblx4ZTVceGU1bWVzamV2dWVtaWUubm8iLCJsYWFrZXN2dWVtaWUubm8iLCJuYW5uZXN0YWQu''@;'; put 'put ''bm8iLCJuYXJ2aWsubm8iLCJuYXJ2aWlrYS5ubyIsIm5hdXN0ZGFsLm5vIiwibmVkcmUtZWlrZXIubm8iLCJuZXMuYWtlcnNodXMubm8iLCJuZXMuYnVza2VydWQubm8iLCJuZXNuYS5ubyIsIm5lc29kZGVuLm5vIiwibmVzc2VieS5ubyIsInVuamFyZ2Eubm8iLCJ1bmpceGUxcmdhLm5vIiwi''@;'; put 'put ''bmVzc2V0Lm5vIiwibmlzc2VkYWwubm8iLCJuaXR0ZWRhbC5ubyIsIm5vcmQtYXVyZGFsLm5vIiwibm9yZC1mcm9uLm5vIiwibm9yZC1vZGFsLm5vIiwibm9yZGRhbC5ubyIsIm5vcmRrYXBwLm5vIiwiZGF2dmVuamFyZ2Eubm8iLCJkYXZ2ZW5qXHhlMXJnYS5ubyIsIm5vcmRyZS1sYW5kLm5v''@;'; put 'put ''Iiwibm9yZHJlaXNhLm5vIiwicmFpc2Eubm8iLCJyXHhlMWlzYS5ubyIsIm5vcmUtb2ctdXZkYWwubm8iLCJub3RvZGRlbi5ubyIsIm5hcm95Lm5vIiwiblx4ZTZyXHhmOHkubm8iLCJub3R0ZXJveS5ubyIsIm5ceGY4dHRlclx4Zjh5Lm5vIiwib2RkYS5ubyIsIm9rc25lcy5ubyIsIlx4Zjhr''@;'; put 'put ''c25lcy5ubyIsIm9wcGRhbC5ubyIsIm9wcGVnYXJkLm5vIiwib3BwZWdceGU1cmQubm8iLCJvcmtkYWwubm8iLCJvcmxhbmQubm8iLCJceGY4cmxhbmQubm8iLCJvcnNrb2cubm8iLCJceGY4cnNrb2cubm8iLCJvcnN0YS5ubyIsIlx4Zjhyc3RhLm5vIiwib3MuaGVkbWFyay5ubyIsIm9zLmhv''@;'; put 'put ''cmRhbGFuZC5ubyIsIm9zZW4ubm8iLCJvc3Rlcm95Lm5vIiwib3N0ZXJceGY4eS5ubyIsIm9zdHJlLXRvdGVuLm5vIiwiXHhmOHN0cmUtdG90ZW4ubm8iLCJvdmVyaGFsbGEubm8iLCJvdnJlLWVpa2VyLm5vIiwiXHhmOHZyZS1laWtlci5ubyIsIm95ZXIubm8iLCJceGY4eWVyLm5vIiwib3ln''@;'; put 'put ''YXJkZW4ubm8iLCJceGY4eWdhcmRlbi5ubyIsIm95c3RyZS1zbGlkcmUubm8iLCJceGY4eXN0cmUtc2xpZHJlLm5vIiwicG9yc2FuZ2VyLm5vIiwicG9yc2FuZ3Uubm8iLCJwb3JzXHhlMVx1MDE0Ymd1Lm5vIiwicG9yc2dydW5uLm5vIiwicmFkb3kubm8iLCJyYWRceGY4eS5ubyIsInJha2tl''@;'; put 'put ''c3RhZC5ubyIsInJhbmEubm8iLCJydW92YXQubm8iLCJyYW5kYWJlcmcubm8iLCJyYXVtYS5ubyIsInJlbmRhbGVuLm5vIiwicmVubmVidS5ubyIsInJlbm5lc295Lm5vIiwicmVubmVzXHhmOHkubm8iLCJyaW5kYWwubm8iLCJyaW5nZWJ1Lm5vIiwicmluZ2VyaWtlLm5vIiwicmluZ3Nha2Vy''@;'; put 'put ''Lm5vIiwicmlzc2Eubm8iLCJyaXNvci5ubyIsInJpc1x4ZjhyLm5vIiwicm9hbi5ubyIsInJvbGxhZy5ubyIsInJ5Z2dlLm5vIiwicmFsaW5nZW4ubm8iLCJyXHhlNmxpbmdlbi5ubyIsInJvZG95Lm5vIiwiclx4ZjhkXHhmOHkubm8iLCJyb21za29nLm5vIiwiclx4Zjhtc2tvZy5ubyIsInJv''@;'; put 'put ''cm9zLm5vIiwiclx4Zjhyb3Mubm8iLCJyb3N0Lm5vIiwiclx4ZjhzdC5ubyIsInJveWtlbi5ubyIsInJceGY4eWtlbi5ubyIsInJveXJ2aWsubm8iLCJyXHhmOHlydmlrLm5vIiwicmFkZS5ubyIsInJceGU1ZGUubm8iLCJzYWxhbmdlbi5ubyIsInNpZWxsYWsubm8iLCJzYWx0ZGFsLm5vIiwi''@;'; put 'put ''c2FsYXQubm8iLCJzXHhlMWxceGUxdC5ubyIsInNceGUxbGF0Lm5vIiwic2FtbmFuZ2VyLm5vIiwic2FuZGUubW9yZS1vZy1yb21zZGFsLm5vIiwic2FuZGUubVx4ZjhyZS1vZy1yb21zZGFsLm5vIiwic2FuZGUudmVzdGZvbGQubm8iLCJzYW5kZWZqb3JkLm5vIiwic2FuZG5lcy5ubyIsInNh''@;'; put 'put ''bmRveS5ubyIsInNhbmRceGY4eS5ubyIsInNhcnBzYm9yZy5ubyIsInNhdWRhLm5vIiwic2F1aGVyYWQubm8iLCJzZWwubm8iLCJzZWxidS5ubyIsInNlbGplLm5vIiwic2Vsam9yZC5ubyIsInNpZ2RhbC5ubyIsInNpbGphbi5ubyIsInNpcmRhbC5ubyIsInNrYXVuLm5vIiwic2tlZHNtby5u''@;'; put 'put ''byIsInNraS5ubyIsInNraWVuLm5vIiwic2tpcHR2ZXQubm8iLCJza2plcnZveS5ubyIsInNramVydlx4Zjh5Lm5vIiwic2tpZXJ2YS5ubyIsInNraWVydlx4ZTEubm8iLCJza2phay5ubyIsInNralx4ZTVrLm5vIiwic2tvZGplLm5vIiwic2thbmxhbmQubm8iLCJza1x4ZTVubGFuZC5ubyIs''@;'; put 'put ''InNrYW5pdC5ubyIsInNrXHhlMW5pdC5ubyIsInNtb2xhLm5vIiwic21ceGY4bGEubm8iLCJzbmlsbGZqb3JkLm5vIiwic25hc2Eubm8iLCJzblx4ZTVzYS5ubyIsInNub2FzYS5ubyIsInNuYWFzZS5ubyIsInNuXHhlNWFzZS5ubyIsInNvZ25kYWwubm8iLCJzb2tuZGFsLm5vIiwic29sYS5u''@;'; put 'put ''byIsInNvbHVuZC5ubyIsInNvbmdkYWxlbi5ubyIsInNvcnRsYW5kLm5vIiwic3B5ZGViZXJnLm5vIiwic3RhbmdlLm5vIiwic3RhdmFuZ2VyLm5vIiwic3RlaWdlbi5ubyIsInN0ZWlua2plci5ubyIsInN0am9yZGFsLm5vIiwic3RqXHhmOHJkYWwubm8iLCJzdG9ra2Uubm8iLCJzdG9yLWVs''@;'; put 'put ''dmRhbC5ubyIsInN0b3JkLm5vIiwic3RvcmRhbC5ubyIsInN0b3Jmam9yZC5ubyIsIm9tYXN2dW90bmEubm8iLCJzdHJhbmQubm8iLCJzdHJhbmRhLm5vIiwic3RyeW4ubm8iLCJzdWxhLm5vIiwic3VsZGFsLm5vIiwic3VuZC5ubyIsInN1bm5kYWwubm8iLCJzdXJuYWRhbC5ubyIsInN2ZWlv''@;'; put 'put ''Lm5vIiwic3ZlbHZpay5ubyIsInN5a2t5bHZlbi5ubyIsInNvZ25lLm5vIiwic1x4ZjhnbmUubm8iLCJzb21uYS5ubyIsInNceGY4bW5hLm5vIiwic29uZHJlLWxhbmQubm8iLCJzXHhmOG5kcmUtbGFuZC5ubyIsInNvci1hdXJkYWwubm8iLCJzXHhmOHItYXVyZGFsLm5vIiwic29yLWZyb24u''@;'; put 'put ''bm8iLCJzXHhmOHItZnJvbi5ubyIsInNvci1vZGFsLm5vIiwic1x4ZjhyLW9kYWwubm8iLCJzb3ItdmFyYW5nZXIubm8iLCJzXHhmOHItdmFyYW5nZXIubm8iLCJtYXR0YS12YXJqamF0Lm5vIiwibVx4ZTF0dGEtdlx4ZTFyamphdC5ubyIsInNvcmZvbGQubm8iLCJzXHhmOHJmb2xkLm5vIiwi''@;'; put 'put ''c29ycmVpc2Eubm8iLCJzXHhmOHJyZWlzYS5ubyIsInNvcnVtLm5vIiwic1x4ZjhydW0ubm8iLCJ0YW5hLm5vIiwiZGVhdG51Lm5vIiwidGltZS5ubyIsInRpbmd2b2xsLm5vIiwidGlubi5ubyIsInRqZWxkc3VuZC5ubyIsImRpZWxkZGFudW9ycmkubm8iLCJ0am9tZS5ubyIsInRqXHhmOG1l''@;'; put 'put ''Lm5vIiwidG9ra2Uubm8iLCJ0b2xnYS5ubyIsInRvcnNrZW4ubm8iLCJ0cmFub3kubm8iLCJ0cmFuXHhmOHkubm8iLCJ0cm9tc28ubm8iLCJ0cm9tc1x4Zjgubm8iLCJ0cm9tc2Eubm8iLCJyb21zYS5ubyIsInRyb25kaGVpbS5ubyIsInRyb2FuZGluLm5vIiwidHJ5c2lsLm5vIiwidHJhbmEu''@;'; put 'put ''bm8iLCJ0clx4ZTZuYS5ubyIsInRyb2dzdGFkLm5vIiwidHJceGY4Z3N0YWQubm8iLCJ0dmVkZXN0cmFuZC5ubyIsInR5ZGFsLm5vIiwidHluc2V0Lm5vIiwidHlzZmpvcmQubm8iLCJkaXZ0YXN2dW9kbmEubm8iLCJkaXZ0dGFzdnVvdG5hLm5vIiwidHlzbmVzLm5vIiwidHlzdmFyLm5vIiwi''@;'; put 'put ''dHlzdlx4ZTZyLm5vIiwidG9uc2Jlcmcubm8iLCJ0XHhmOG5zYmVyZy5ubyIsInVsbGVuc2FrZXIubm8iLCJ1bGxlbnN2YW5nLm5vIiwidWx2aWsubm8iLCJ1dHNpcmEubm8iLCJ2YWRzby5ubyIsInZhZHNceGY4Lm5vIiwiY2FoY2VzdW9sby5ubyIsIlx1MDEwZFx4ZTFoY2VzdW9sby5ubyIs''@;'; put 'put ''InZha3NkYWwubm8iLCJ2YWxsZS5ubyIsInZhbmcubm8iLCJ2YW55bHZlbi5ubyIsInZhcmRvLm5vIiwidmFyZFx4Zjgubm8iLCJ2YXJnZ2F0Lm5vIiwidlx4ZTFyZ2dceGUxdC5ubyIsInZlZnNuLm5vIiwidmFhcHN0ZS5ubyIsInZlZ2Eubm8iLCJ2ZWdhcnNoZWkubm8iLCJ2ZWdceGU1cnNo''@;'; put 'put ''ZWkubm8iLCJ2ZW5uZXNsYS5ubyIsInZlcmRhbC5ubyIsInZlcnJhbi5ubyIsInZlc3RieS5ubyIsInZlc3RuZXMubm8iLCJ2ZXN0cmUtc2xpZHJlLm5vIiwidmVzdHJlLXRvdGVuLm5vIiwidmVzdHZhZ295Lm5vIiwidmVzdHZceGU1Z1x4Zjh5Lm5vIiwidmV2ZWxzdGFkLm5vIiwidmlrLm5v''@;'; put 'put ''IiwidmlrbmEubm8iLCJ2aW5kYWZqb3JkLm5vIiwidm9sZGEubm8iLCJ2b3NzLm5vIiwidmFyb3kubm8iLCJ2XHhlNnJceGY4eS5ubyIsInZhZ2FuLm5vIiwidlx4ZTVnYW4ubm8iLCJ2b2FnYXQubm8iLCJ2YWdzb3kubm8iLCJ2XHhlNWdzXHhmOHkubm8iLCJ2YWdhLm5vIiwidlx4ZTVnXHhl''@;'; put 'put ''NS5ubyIsInZhbGVyLm9zdGZvbGQubm8iLCJ2XHhlNWxlci5ceGY4c3Rmb2xkLm5vIiwidmFsZXIuaGVkbWFyay5ubyIsInZceGU1bGVyLmhlZG1hcmsubm8iLCIqLm5wIiwibnIiLCJiaXoubnIiLCJpbmZvLm5yIiwiZ292Lm5yIiwiZWR1Lm5yIiwib3JnLm5yIiwibmV0Lm5yIiwiY29tLm5y''@;'; put 'put ''IiwibnUiLCJueiIsImFjLm56IiwiY28ubnoiLCJjcmkubnoiLCJnZWVrLm56IiwiZ2VuLm56IiwiZ292dC5ueiIsImhlYWx0aC5ueiIsIml3aS5ueiIsImtpd2kubnoiLCJtYW9yaS5ueiIsIm1pbC5ueiIsIm1cdTAxMDFvcmkubnoiLCJuZXQubnoiLCJvcmcubnoiLCJwYXJsaWFtZW50Lm56''@;'; put 'put ''Iiwic2Nob29sLm56Iiwib20iLCJjby5vbSIsImNvbS5vbSIsImVkdS5vbSIsImdvdi5vbSIsIm1lZC5vbSIsIm11c2V1bS5vbSIsIm5ldC5vbSIsIm9yZy5vbSIsInByby5vbSIsIm9uaW9uIiwib3JnIiwicGEiLCJhYy5wYSIsImdvYi5wYSIsImNvbS5wYSIsIm9yZy5wYSIsInNsZC5wYSIs''@;'; put 'put ''ImVkdS5wYSIsIm5ldC5wYSIsImluZy5wYSIsImFiby5wYSIsIm1lZC5wYSIsIm5vbS5wYSIsInBlIiwiZWR1LnBlIiwiZ29iLnBlIiwibm9tLnBlIiwibWlsLnBlIiwib3JnLnBlIiwiY29tLnBlIiwibmV0LnBlIiwicGYiLCJjb20ucGYiLCJvcmcucGYiLCJlZHUucGYiLCIqLnBnIiwicGgi''@;'; put 'put ''LCJjb20ucGgiLCJuZXQucGgiLCJvcmcucGgiLCJnb3YucGgiLCJlZHUucGgiLCJuZ28ucGgiLCJtaWwucGgiLCJpLnBoIiwicGsiLCJjb20ucGsiLCJuZXQucGsiLCJlZHUucGsiLCJvcmcucGsiLCJmYW0ucGsiLCJiaXoucGsiLCJ3ZWIucGsiLCJnb3YucGsiLCJnb2IucGsiLCJnb2sucGsi''@;'; put 'put ''LCJnb24ucGsiLCJnb3AucGsiLCJnb3MucGsiLCJpbmZvLnBrIiwicGwiLCJjb20ucGwiLCJuZXQucGwiLCJvcmcucGwiLCJhaWQucGwiLCJhZ3JvLnBsIiwiYXRtLnBsIiwiYXV0by5wbCIsImJpei5wbCIsImVkdS5wbCIsImdtaW5hLnBsIiwiZ3NtLnBsIiwiaW5mby5wbCIsIm1haWwucGwi''@;'; put 'put ''LCJtaWFzdGEucGwiLCJtZWRpYS5wbCIsIm1pbC5wbCIsIm5pZXJ1Y2hvbW9zY2kucGwiLCJub20ucGwiLCJwYy5wbCIsInBvd2lhdC5wbCIsInByaXYucGwiLCJyZWFsZXN0YXRlLnBsIiwicmVsLnBsIiwic2V4LnBsIiwic2hvcC5wbCIsInNrbGVwLnBsIiwic29zLnBsIiwic3prb2xhLnBs''@;'; put 'put ''IiwidGFyZ2kucGwiLCJ0bS5wbCIsInRvdXJpc20ucGwiLCJ0cmF2ZWwucGwiLCJ0dXJ5c3R5a2EucGwiLCJnb3YucGwiLCJhcC5nb3YucGwiLCJpYy5nb3YucGwiLCJpcy5nb3YucGwiLCJ1cy5nb3YucGwiLCJrbXBzcC5nb3YucGwiLCJrcHBzcC5nb3YucGwiLCJrd3BzcC5nb3YucGwiLCJw''@;'; put 'put ''c3AuZ292LnBsIiwid3Nrci5nb3YucGwiLCJrd3AuZ292LnBsIiwibXcuZ292LnBsIiwidWcuZ292LnBsIiwidW0uZ292LnBsIiwidW1pZy5nb3YucGwiLCJ1Z2ltLmdvdi5wbCIsInVwb3cuZ292LnBsIiwidXcuZ292LnBsIiwic3Rhcm9zdHdvLmdvdi5wbCIsInBhLmdvdi5wbCIsInBvLmdv''@;'; put 'put ''di5wbCIsInBzc2UuZ292LnBsIiwicHVwLmdvdi5wbCIsInJ6Z3cuZ292LnBsIiwic2EuZ292LnBsIiwic28uZ292LnBsIiwic3IuZ292LnBsIiwid3NhLmdvdi5wbCIsInNrby5nb3YucGwiLCJ1enMuZ292LnBsIiwid2lpaC5nb3YucGwiLCJ3aW5iLmdvdi5wbCIsInBpbmIuZ292LnBsIiwi''@;'; put 'put ''d2lvcy5nb3YucGwiLCJ3aXRkLmdvdi5wbCIsInd6bWl1dy5nb3YucGwiLCJwaXcuZ292LnBsIiwid2l3Lmdvdi5wbCIsImdyaXcuZ292LnBsIiwid2lmLmdvdi5wbCIsIm91bS5nb3YucGwiLCJzZG4uZ292LnBsIiwienAuZ292LnBsIiwidXBwby5nb3YucGwiLCJtdXAuZ292LnBsIiwid3Vv''@;'; put 'put ''ei5nb3YucGwiLCJrb25zdWxhdC5nb3YucGwiLCJvaXJtLmdvdi5wbCIsImF1Z3VzdG93LnBsIiwiYmFiaWEtZ29yYS5wbCIsImJlZHppbi5wbCIsImJlc2tpZHkucGwiLCJiaWFsb3dpZXphLnBsIiwiYmlhbHlzdG9rLnBsIiwiYmllbGF3YS5wbCIsImJpZXN6Y3phZHkucGwiLCJib2xlc2xh''@;'; put 'put ''d2llYy5wbCIsImJ5ZGdvc3pjei5wbCIsImJ5dG9tLnBsIiwiY2llc3p5bi5wbCIsImN6ZWxhZHoucGwiLCJjemVzdC5wbCIsImRsdWdvbGVrYS5wbCIsImVsYmxhZy5wbCIsImVsay5wbCIsImdsb2dvdy5wbCIsImduaWV6bm8ucGwiLCJnb3JsaWNlLnBsIiwiZ3JhamV3by5wbCIsImlsYXdh''@;'; put 'put ''LnBsIiwiamF3b3J6bm8ucGwiLCJqZWxlbmlhLWdvcmEucGwiLCJqZ29yYS5wbCIsImthbGlzei5wbCIsImthemltaWVyei1kb2xueS5wbCIsImthcnBhY3oucGwiLCJrYXJ0dXp5LnBsIiwia2FzenVieS5wbCIsImthdG93aWNlLnBsIiwia2Vwbm8ucGwiLCJrZXRyenluLnBsIiwia2xvZHpr''@;'; put 'put ''by5wbCIsImtvYmllcnp5Y2UucGwiLCJrb2xvYnJ6ZWcucGwiLCJrb25pbi5wbCIsImtvbnNrb3dvbGEucGwiLCJrdXRuby5wbCIsImxhcHkucGwiLCJsZWJvcmsucGwiLCJsZWduaWNhLnBsIiwibGV6YWpzay5wbCIsImxpbWFub3dhLnBsIiwibG9temEucGwiLCJsb3dpY3oucGwiLCJsdWJp''@;'; put 'put ''bi5wbCIsImx1a293LnBsIiwibWFsYm9yay5wbCIsIm1hbG9wb2xza2EucGwiLCJtYXpvd3N6ZS5wbCIsIm1henVyeS5wbCIsIm1pZWxlYy5wbCIsIm1pZWxuby5wbCIsIm1yYWdvd28ucGwiLCJuYWtsby5wbCIsIm5vd2FydWRhLnBsIiwibnlzYS5wbCIsIm9sYXdhLnBsIiwib2xlY2tvLnBs''@;'; put 'put ''Iiwib2xrdXN6LnBsIiwib2xzenR5bi5wbCIsIm9wb2N6bm8ucGwiLCJvcG9sZS5wbCIsIm9zdHJvZGEucGwiLCJvc3Ryb2xla2EucGwiLCJvc3Ryb3dpZWMucGwiLCJvc3Ryb3d3bGtwLnBsIiwicGlsYS5wbCIsInBpc3oucGwiLCJwb2RoYWxlLnBsIiwicG9kbGFzaWUucGwiLCJwb2xrb3dp''@;'; put 'put ''Y2UucGwiLCJwb21vcnplLnBsIiwicG9tb3Jza2llLnBsIiwicHJvY2hvd2ljZS5wbCIsInBydXN6a293LnBsIiwicHJ6ZXdvcnNrLnBsIiwicHVsYXd5LnBsIiwicmFkb20ucGwiLCJyYXdhLW1hei5wbCIsInJ5Ym5pay5wbCIsInJ6ZXN6b3cucGwiLCJzYW5vay5wbCIsInNlam55LnBsIiwi''@;'; put 'put ''c2xhc2sucGwiLCJzbHVwc2sucGwiLCJzb3Nub3dpZWMucGwiLCJzdGFsb3dhLXdvbGEucGwiLCJza29jem93LnBsIiwic3RhcmFjaG93aWNlLnBsIiwic3RhcmdhcmQucGwiLCJzdXdhbGtpLnBsIiwic3dpZG5pY2EucGwiLCJzd2llYm9kemluLnBsIiwic3dpbm91anNjaWUucGwiLCJzemN6''@;'; put 'put ''ZWNpbi5wbCIsInN6Y3p5dG5vLnBsIiwidGFybm9icnplZy5wbCIsInRnb3J5LnBsIiwidHVyZWsucGwiLCJ0eWNoeS5wbCIsInVzdGthLnBsIiwid2FsYnJ6eWNoLnBsIiwid2FybWlhLnBsIiwid2Fyc3phd2EucGwiLCJ3YXcucGwiLCJ3ZWdyb3cucGwiLCJ3aWVsdW4ucGwiLCJ3bG9jbC5w''@;'; put 'put ''bCIsIndsb2NsYXdlay5wbCIsIndvZHppc2xhdy5wbCIsIndvbG9taW4ucGwiLCJ3cm9jbGF3LnBsIiwiemFjaHBvbW9yLnBsIiwiemFnYW4ucGwiLCJ6YXJvdy5wbCIsInpnb3JhLnBsIiwiemdvcnplbGVjLnBsIiwicG0iLCJwbiIsImdvdi5wbiIsImNvLnBuIiwib3JnLnBuIiwiZWR1LnBu''@;'; put 'put ''IiwibmV0LnBuIiwicG9zdCIsInByIiwiY29tLnByIiwibmV0LnByIiwib3JnLnByIiwiZ292LnByIiwiZWR1LnByIiwiaXNsYS5wciIsInByby5wciIsImJpei5wciIsImluZm8ucHIiLCJuYW1lLnByIiwiZXN0LnByIiwicHJvZi5wciIsImFjLnByIiwicHJvIiwiYWFhLnBybyIsImFjYS5w''@;'; put 'put ''cm8iLCJhY2N0LnBybyIsImF2b2NhdC5wcm8iLCJiYXIucHJvIiwiY3BhLnBybyIsImVuZy5wcm8iLCJqdXIucHJvIiwibGF3LnBybyIsIm1lZC5wcm8iLCJyZWNodC5wcm8iLCJwcyIsImVkdS5wcyIsImdvdi5wcyIsInNlYy5wcyIsInBsby5wcyIsImNvbS5wcyIsIm9yZy5wcyIsIm5ldC5w''@;'; put 'put ''cyIsInB0IiwibmV0LnB0IiwiZ292LnB0Iiwib3JnLnB0IiwiZWR1LnB0IiwiaW50LnB0IiwicHVibC5wdCIsImNvbS5wdCIsIm5vbWUucHQiLCJwdyIsImNvLnB3IiwibmUucHciLCJvci5wdyIsImVkLnB3IiwiZ28ucHciLCJiZWxhdS5wdyIsInB5IiwiY29tLnB5IiwiY29vcC5weSIsImVk''@;'; put 'put ''dS5weSIsImdvdi5weSIsIm1pbC5weSIsIm5ldC5weSIsIm9yZy5weSIsInFhIiwiY29tLnFhIiwiZWR1LnFhIiwiZ292LnFhIiwibWlsLnFhIiwibmFtZS5xYSIsIm5ldC5xYSIsIm9yZy5xYSIsInNjaC5xYSIsInJlIiwiYXNzby5yZSIsImNvbS5yZSIsIm5vbS5yZSIsInJvIiwiYXJ0cy5y''@;'; put 'put ''byIsImNvbS5ybyIsImZpcm0ucm8iLCJpbmZvLnJvIiwibm9tLnJvIiwibnQucm8iLCJvcmcucm8iLCJyZWMucm8iLCJzdG9yZS5ybyIsInRtLnJvIiwid3d3LnJvIiwicnMiLCJhYy5ycyIsImNvLnJzIiwiZWR1LnJzIiwiZ292LnJzIiwiaW4ucnMiLCJvcmcucnMiLCJydSIsInJ3IiwiYWMu''@;'; put 'put ''cnciLCJjby5ydyIsImNvb3AucnciLCJnb3YucnciLCJtaWwucnciLCJuZXQucnciLCJvcmcucnciLCJzYSIsImNvbS5zYSIsIm5ldC5zYSIsIm9yZy5zYSIsImdvdi5zYSIsIm1lZC5zYSIsInB1Yi5zYSIsImVkdS5zYSIsInNjaC5zYSIsInNiIiwiY29tLnNiIiwiZWR1LnNiIiwiZ292LnNi''@;'; put 'put ''IiwibmV0LnNiIiwib3JnLnNiIiwic2MiLCJjb20uc2MiLCJnb3Yuc2MiLCJuZXQuc2MiLCJvcmcuc2MiLCJlZHUuc2MiLCJzZCIsImNvbS5zZCIsIm5ldC5zZCIsIm9yZy5zZCIsImVkdS5zZCIsIm1lZC5zZCIsInR2LnNkIiwiZ292LnNkIiwiaW5mby5zZCIsInNlIiwiYS5zZSIsImFjLnNl''@;'; put 'put ''IiwiYi5zZSIsImJkLnNlIiwiYnJhbmQuc2UiLCJjLnNlIiwiZC5zZSIsImUuc2UiLCJmLnNlIiwiZmguc2UiLCJmaHNrLnNlIiwiZmh2LnNlIiwiZy5zZSIsImguc2UiLCJpLnNlIiwiay5zZSIsImtvbWZvcmIuc2UiLCJrb21tdW5hbGZvcmJ1bmQuc2UiLCJrb212dXguc2UiLCJsLnNlIiwi''@;'; put 'put ''bGFuYmliLnNlIiwibS5zZSIsIm4uc2UiLCJuYXR1cmJydWtzZ3ltbi5zZSIsIm8uc2UiLCJvcmcuc2UiLCJwLnNlIiwicGFydGkuc2UiLCJwcC5zZSIsInByZXNzLnNlIiwici5zZSIsInMuc2UiLCJ0LnNlIiwidG0uc2UiLCJ1LnNlIiwidy5zZSIsInguc2UiLCJ5LnNlIiwiei5zZSIsInNn''@;'; put 'put ''IiwiY29tLnNnIiwibmV0LnNnIiwib3JnLnNnIiwiZ292LnNnIiwiZWR1LnNnIiwicGVyLnNnIiwic2giLCJjb20uc2giLCJuZXQuc2giLCJnb3Yuc2giLCJvcmcuc2giLCJtaWwuc2giLCJzaSIsInNqIiwic2siLCJzbCIsImNvbS5zbCIsIm5ldC5zbCIsImVkdS5zbCIsImdvdi5zbCIsIm9y''@;'; put 'put ''Zy5zbCIsInNtIiwic24iLCJhcnQuc24iLCJjb20uc24iLCJlZHUuc24iLCJnb3V2LnNuIiwib3JnLnNuIiwicGVyc28uc24iLCJ1bml2LnNuIiwic28iLCJjb20uc28iLCJlZHUuc28iLCJnb3Yuc28iLCJtZS5zbyIsIm5ldC5zbyIsIm9yZy5zbyIsInNyIiwic3MiLCJiaXouc3MiLCJjb20u''@;'; put 'put ''c3MiLCJlZHUuc3MiLCJnb3Yuc3MiLCJtZS5zcyIsIm5ldC5zcyIsIm9yZy5zcyIsInNjaC5zcyIsInN0IiwiY28uc3QiLCJjb20uc3QiLCJjb25zdWxhZG8uc3QiLCJlZHUuc3QiLCJlbWJhaXhhZGEuc3QiLCJtaWwuc3QiLCJuZXQuc3QiLCJvcmcuc3QiLCJwcmluY2lwZS5zdCIsInNhb3Rv''@;'; put 'put ''bWUuc3QiLCJzdG9yZS5zdCIsInN1Iiwic3YiLCJjb20uc3YiLCJlZHUuc3YiLCJnb2Iuc3YiLCJvcmcuc3YiLCJyZWQuc3YiLCJzeCIsImdvdi5zeCIsInN5IiwiZWR1LnN5IiwiZ292LnN5IiwibmV0LnN5IiwibWlsLnN5IiwiY29tLnN5Iiwib3JnLnN5Iiwic3oiLCJjby5zeiIsImFjLnN6''@;'; put 'put ''Iiwib3JnLnN6IiwidGMiLCJ0ZCIsInRlbCIsInRmIiwidGciLCJ0aCIsImFjLnRoIiwiY28udGgiLCJnby50aCIsImluLnRoIiwibWkudGgiLCJuZXQudGgiLCJvci50aCIsInRqIiwiYWMudGoiLCJiaXoudGoiLCJjby50aiIsImNvbS50aiIsImVkdS50aiIsImdvLnRqIiwiZ292LnRqIiwi''@;'; put 'put ''aW50LnRqIiwibWlsLnRqIiwibmFtZS50aiIsIm5ldC50aiIsIm5pYy50aiIsIm9yZy50aiIsInRlc3QudGoiLCJ3ZWIudGoiLCJ0ayIsInRsIiwiZ292LnRsIiwidG0iLCJjb20udG0iLCJjby50bSIsIm9yZy50bSIsIm5ldC50bSIsIm5vbS50bSIsImdvdi50bSIsIm1pbC50bSIsImVkdS50''@;'; put 'put ''bSIsInRuIiwiY29tLnRuIiwiZW5zLnRuIiwiZmluLnRuIiwiZ292LnRuIiwiaW5kLnRuIiwiaW5mby50biIsImludGwudG4iLCJtaW5jb20udG4iLCJuYXQudG4iLCJuZXQudG4iLCJvcmcudG4iLCJwZXJzby50biIsInRvdXJpc20udG4iLCJ0byIsImNvbS50byIsImdvdi50byIsIm5ldC50''@;'; put 'put ''byIsIm9yZy50byIsImVkdS50byIsIm1pbC50byIsInRyIiwiYXYudHIiLCJiYnMudHIiLCJiZWwudHIiLCJiaXoudHIiLCJjb20udHIiLCJkci50ciIsImVkdS50ciIsImdlbi50ciIsImdvdi50ciIsImluZm8udHIiLCJtaWwudHIiLCJrMTIudHIiLCJrZXAudHIiLCJuYW1lLnRyIiwibmV0''@;'; put 'put ''LnRyIiwib3JnLnRyIiwicG9sLnRyIiwidGVsLnRyIiwidHNrLnRyIiwidHYudHIiLCJ3ZWIudHIiLCJuYy50ciIsImdvdi5uYy50ciIsInR0IiwiY28udHQiLCJjb20udHQiLCJvcmcudHQiLCJuZXQudHQiLCJiaXoudHQiLCJpbmZvLnR0IiwicHJvLnR0IiwiaW50LnR0IiwiY29vcC50dCIs''@;'; put 'put ''ImpvYnMudHQiLCJtb2JpLnR0IiwidHJhdmVsLnR0IiwibXVzZXVtLnR0IiwiYWVyby50dCIsIm5hbWUudHQiLCJnb3YudHQiLCJlZHUudHQiLCJ0diIsInR3IiwiZWR1LnR3IiwiZ292LnR3IiwibWlsLnR3IiwiY29tLnR3IiwibmV0LnR3Iiwib3JnLnR3IiwiaWR2LnR3IiwiZ2FtZS50dyIs''@;'; put 'put ''ImViaXoudHciLCJjbHViLnR3IiwiXHU3ZGIyXHU4ZGVmLnR3IiwiXHU3ZDQ0XHU3ZTU0LnR3IiwiXHU1NTQ2XHU2OTZkLnR3IiwidHoiLCJhYy50eiIsImNvLnR6IiwiZ28udHoiLCJob3RlbC50eiIsImluZm8udHoiLCJtZS50eiIsIm1pbC50eiIsIm1vYmkudHoiLCJuZS50eiIsIm9yLnR6''@;'; put 'put ''Iiwic2MudHoiLCJ0di50eiIsInVhIiwiY29tLnVhIiwiZWR1LnVhIiwiZ292LnVhIiwiaW4udWEiLCJuZXQudWEiLCJvcmcudWEiLCJjaGVya2Fzc3kudWEiLCJjaGVya2FzeS51YSIsImNoZXJuaWdvdi51YSIsImNoZXJuaWhpdi51YSIsImNoZXJuaXZ0c2kudWEiLCJjaGVybm92dHN5LnVh''@;'; put 'put ''IiwiY2sudWEiLCJjbi51YSIsImNyLnVhIiwiY3JpbWVhLnVhIiwiY3YudWEiLCJkbi51YSIsImRuZXByb3BldHJvdnNrLnVhIiwiZG5pcHJvcGV0cm92c2sudWEiLCJkb25ldHNrLnVhIiwiZHAudWEiLCJpZi51YSIsIml2YW5vLWZyYW5raXZzay51YSIsImtoLnVhIiwia2hhcmtpdi51YSIs''@;'; put 'put ''ImtoYXJrb3YudWEiLCJraGVyc29uLnVhIiwia2htZWxuaXRza2l5LnVhIiwia2htZWxueXRza3lpLnVhIiwia2lldi51YSIsImtpcm92b2dyYWQudWEiLCJrbS51YSIsImtyLnVhIiwia3J5bS51YSIsImtzLnVhIiwia3YudWEiLCJreWl2LnVhIiwibGcudWEiLCJsdC51YSIsImx1Z2Fuc2su''@;'; put 'put ''dWEiLCJsdXRzay51YSIsImx2LnVhIiwibHZpdi51YSIsIm1rLnVhIiwibXlrb2xhaXYudWEiLCJuaWtvbGFldi51YSIsIm9kLnVhIiwib2Rlc2EudWEiLCJvZGVzc2EudWEiLCJwbC51YSIsInBvbHRhdmEudWEiLCJyaXZuZS51YSIsInJvdm5vLnVhIiwicnYudWEiLCJzYi51YSIsInNlYmFz''@;'; put 'put ''dG9wb2wudWEiLCJzZXZhc3RvcG9sLnVhIiwic20udWEiLCJzdW15LnVhIiwidGUudWEiLCJ0ZXJub3BpbC51YSIsInV6LnVhIiwidXpoZ29yb2QudWEiLCJ2aW5uaWNhLnVhIiwidmlubnl0c2lhLnVhIiwidm4udWEiLCJ2b2x5bi51YSIsInlhbHRhLnVhIiwiemFwb3Jpemh6aGUudWEiLCJ6''@;'; put 'put ''YXBvcml6aHpoaWEudWEiLCJ6aGl0b21pci51YSIsInpoeXRvbXlyLnVhIiwienAudWEiLCJ6dC51YSIsInVnIiwiY28udWciLCJvci51ZyIsImFjLnVnIiwic2MudWciLCJnby51ZyIsIm5lLnVnIiwiY29tLnVnIiwib3JnLnVnIiwidWsiLCJhYy51ayIsImNvLnVrIiwiZ292LnVrIiwibHRk''@;'; put 'put ''LnVrIiwibWUudWsiLCJuZXQudWsiLCJuaHMudWsiLCJvcmcudWsiLCJwbGMudWsiLCJwb2xpY2UudWsiLCIqLnNjaC51ayIsInVzIiwiZG5pLnVzIiwiZmVkLnVzIiwiaXNhLnVzIiwia2lkcy51cyIsIm5zbi51cyIsImFrLnVzIiwiYWwudXMiLCJhci51cyIsImFzLnVzIiwiYXoudXMiLCJj''@;'; put 'put ''YS51cyIsImNvLnVzIiwiY3QudXMiLCJkYy51cyIsImRlLnVzIiwiZmwudXMiLCJnYS51cyIsImd1LnVzIiwiaGkudXMiLCJpYS51cyIsImlkLnVzIiwiaWwudXMiLCJpbi51cyIsImtzLnVzIiwia3kudXMiLCJsYS51cyIsIm1hLnVzIiwibWQudXMiLCJtZS51cyIsIm1pLnVzIiwibW4udXMi''@;'; put 'put ''LCJtby51cyIsIm1zLnVzIiwibXQudXMiLCJuYy51cyIsIm5kLnVzIiwibmUudXMiLCJuaC51cyIsIm5qLnVzIiwibm0udXMiLCJudi51cyIsIm55LnVzIiwib2gudXMiLCJvay51cyIsIm9yLnVzIiwicGEudXMiLCJwci51cyIsInJpLnVzIiwic2MudXMiLCJzZC51cyIsInRuLnVzIiwidHgu''@;'; put 'put ''dXMiLCJ1dC51cyIsInZpLnVzIiwidnQudXMiLCJ2YS51cyIsIndhLnVzIiwid2kudXMiLCJ3di51cyIsInd5LnVzIiwiazEyLmFrLnVzIiwiazEyLmFsLnVzIiwiazEyLmFyLnVzIiwiazEyLmFzLnVzIiwiazEyLmF6LnVzIiwiazEyLmNhLnVzIiwiazEyLmNvLnVzIiwiazEyLmN0LnVzIiwi''@;'; put 'put ''azEyLmRjLnVzIiwiazEyLmRlLnVzIiwiazEyLmZsLnVzIiwiazEyLmdhLnVzIiwiazEyLmd1LnVzIiwiazEyLmlhLnVzIiwiazEyLmlkLnVzIiwiazEyLmlsLnVzIiwiazEyLmluLnVzIiwiazEyLmtzLnVzIiwiazEyLmt5LnVzIiwiazEyLmxhLnVzIiwiazEyLm1hLnVzIiwiazEyLm1kLnVz''@;'; put 'put ''IiwiazEyLm1lLnVzIiwiazEyLm1pLnVzIiwiazEyLm1uLnVzIiwiazEyLm1vLnVzIiwiazEyLm1zLnVzIiwiazEyLm10LnVzIiwiazEyLm5jLnVzIiwiazEyLm5lLnVzIiwiazEyLm5oLnVzIiwiazEyLm5qLnVzIiwiazEyLm5tLnVzIiwiazEyLm52LnVzIiwiazEyLm55LnVzIiwiazEyLm9o''@;'; put 'put ''LnVzIiwiazEyLm9rLnVzIiwiazEyLm9yLnVzIiwiazEyLnBhLnVzIiwiazEyLnByLnVzIiwiazEyLnNjLnVzIiwiazEyLnRuLnVzIiwiazEyLnR4LnVzIiwiazEyLnV0LnVzIiwiazEyLnZpLnVzIiwiazEyLnZ0LnVzIiwiazEyLnZhLnVzIiwiazEyLndhLnVzIiwiazEyLndpLnVzIiwiazEy''@;'; put 'put ''Lnd5LnVzIiwiY2MuYWsudXMiLCJjYy5hbC51cyIsImNjLmFyLnVzIiwiY2MuYXMudXMiLCJjYy5hei51cyIsImNjLmNhLnVzIiwiY2MuY28udXMiLCJjYy5jdC51cyIsImNjLmRjLnVzIiwiY2MuZGUudXMiLCJjYy5mbC51cyIsImNjLmdhLnVzIiwiY2MuZ3UudXMiLCJjYy5oaS51cyIsImNj''@;'; put 'put ''LmlhLnVzIiwiY2MuaWQudXMiLCJjYy5pbC51cyIsImNjLmluLnVzIiwiY2Mua3MudXMiLCJjYy5reS51cyIsImNjLmxhLnVzIiwiY2MubWEudXMiLCJjYy5tZC51cyIsImNjLm1lLnVzIiwiY2MubWkudXMiLCJjYy5tbi51cyIsImNjLm1vLnVzIiwiY2MubXMudXMiLCJjYy5tdC51cyIsImNj''@;'; put 'put ''Lm5jLnVzIiwiY2MubmQudXMiLCJjYy5uZS51cyIsImNjLm5oLnVzIiwiY2MubmoudXMiLCJjYy5ubS51cyIsImNjLm52LnVzIiwiY2MubnkudXMiLCJjYy5vaC51cyIsImNjLm9rLnVzIiwiY2Mub3IudXMiLCJjYy5wYS51cyIsImNjLnByLnVzIiwiY2MucmkudXMiLCJjYy5zYy51cyIsImNj''@;'; put 'put ''LnNkLnVzIiwiY2MudG4udXMiLCJjYy50eC51cyIsImNjLnV0LnVzIiwiY2MudmkudXMiLCJjYy52dC51cyIsImNjLnZhLnVzIiwiY2Mud2EudXMiLCJjYy53aS51cyIsImNjLnd2LnVzIiwiY2Mud3kudXMiLCJsaWIuYWsudXMiLCJsaWIuYWwudXMiLCJsaWIuYXIudXMiLCJsaWIuYXMudXMi''@;'; put 'put ''LCJsaWIuYXoudXMiLCJsaWIuY2EudXMiLCJsaWIuY28udXMiLCJsaWIuY3QudXMiLCJsaWIuZGMudXMiLCJsaWIuZmwudXMiLCJsaWIuZ2EudXMiLCJsaWIuZ3UudXMiLCJsaWIuaGkudXMiLCJsaWIuaWEudXMiLCJsaWIuaWQudXMiLCJsaWIuaWwudXMiLCJsaWIuaW4udXMiLCJsaWIua3Mu''@;'; put 'put ''dXMiLCJsaWIua3kudXMiLCJsaWIubGEudXMiLCJsaWIubWEudXMiLCJsaWIubWQudXMiLCJsaWIubWUudXMiLCJsaWIubWkudXMiLCJsaWIubW4udXMiLCJsaWIubW8udXMiLCJsaWIubXMudXMiLCJsaWIubXQudXMiLCJsaWIubmMudXMiLCJsaWIubmQudXMiLCJsaWIubmUudXMiLCJsaWIu''@;'; put 'put ''bmgudXMiLCJsaWIubmoudXMiLCJsaWIubm0udXMiLCJsaWIubnYudXMiLCJsaWIubnkudXMiLCJsaWIub2gudXMiLCJsaWIub2sudXMiLCJsaWIub3IudXMiLCJsaWIucGEudXMiLCJsaWIucHIudXMiLCJsaWIucmkudXMiLCJsaWIuc2MudXMiLCJsaWIuc2QudXMiLCJsaWIudG4udXMiLCJs''@;'; put 'put ''aWIudHgudXMiLCJsaWIudXQudXMiLCJsaWIudmkudXMiLCJsaWIudnQudXMiLCJsaWIudmEudXMiLCJsaWIud2EudXMiLCJsaWIud2kudXMiLCJsaWIud3kudXMiLCJwdnQuazEyLm1hLnVzIiwiY2h0ci5rMTIubWEudXMiLCJwYXJvY2guazEyLm1hLnVzIiwiYW5uLWFyYm9yLm1pLnVzIiwi''@;'; put 'put ''Y29nLm1pLnVzIiwiZHN0Lm1pLnVzIiwiZWF0b24ubWkudXMiLCJnZW4ubWkudXMiLCJtdXMubWkudXMiLCJ0ZWMubWkudXMiLCJ3YXNodGVuYXcubWkudXMiLCJ1eSIsImNvbS51eSIsImVkdS51eSIsImd1Yi51eSIsIm1pbC51eSIsIm5ldC51eSIsIm9yZy51eSIsInV6IiwiY28udXoiLCJj''@;'; put 'put ''b20udXoiLCJuZXQudXoiLCJvcmcudXoiLCJ2YSIsInZjIiwiY29tLnZjIiwibmV0LnZjIiwib3JnLnZjIiwiZ292LnZjIiwibWlsLnZjIiwiZWR1LnZjIiwidmUiLCJhcnRzLnZlIiwiYmliLnZlIiwiY28udmUiLCJjb20udmUiLCJlMTIudmUiLCJlZHUudmUiLCJmaXJtLnZlIiwiZ29iLnZl''@;'; put 'put ''IiwiZ292LnZlIiwiaW5mby52ZSIsImludC52ZSIsIm1pbC52ZSIsIm5ldC52ZSIsIm5vbS52ZSIsIm9yZy52ZSIsInJhci52ZSIsInJlYy52ZSIsInN0b3JlLnZlIiwidGVjLnZlIiwid2ViLnZlIiwidmciLCJ2aSIsImNvLnZpIiwiY29tLnZpIiwiazEyLnZpIiwibmV0LnZpIiwib3JnLnZp''@;'; put 'put ''Iiwidm4iLCJjb20udm4iLCJuZXQudm4iLCJvcmcudm4iLCJlZHUudm4iLCJnb3Yudm4iLCJpbnQudm4iLCJhYy52biIsImJpei52biIsImluZm8udm4iLCJuYW1lLnZuIiwicHJvLnZuIiwiaGVhbHRoLnZuIiwidnUiLCJjb20udnUiLCJlZHUudnUiLCJuZXQudnUiLCJvcmcudnUiLCJ3ZiIs''@;'; put 'put ''IndzIiwiY29tLndzIiwibmV0LndzIiwib3JnLndzIiwiZ292LndzIiwiZWR1LndzIiwieXQiLCJcdTA2MjdcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MjdcdTA2MmEiLCJcdTA1NzBcdTA1NjFcdTA1NzUiLCJcdTA5YWNcdTA5YmVcdTA5ODJcdTA5YjJcdTA5YmUiLCJcdTA0MzFcdTA0MzMiLCJc''@;'; put 'put ''dTA2MjdcdTA2NDRcdTA2MjhcdTA2MmRcdTA2MzFcdTA2NGFcdTA2NDYiLCJcdTA0MzFcdTA0MzVcdTA0M2IiLCJcdTRlMmRcdTU2ZmQiLCJcdTRlMmRcdTU3MGIiLCJcdTA2MjdcdTA2NDRcdTA2MmNcdTA2MzJcdTA2MjdcdTA2MjZcdTA2MzEiLCJcdTA2NDVcdTA2MzVcdTA2MzEiLCJcdTA0''@;'; put 'put ''MzVcdTA0NGUiLCJcdTAzYjVcdTAzYzUiLCJcdTA2NDVcdTA2NDhcdTA2MzFcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjciLCJcdTEwZDJcdTEwZDQiLCJcdTAzYjVcdTAzYmIiLCJcdTk5OTlcdTZlMmYiLCJcdTUxNmNcdTUzZjguXHU5OTk5XHU2ZTJmIiwiXHU2NTU5XHU4''@;'; put 'put ''MGIyLlx1OTk5OVx1NmUyZiIsIlx1NjUzZlx1NWU5Yy5cdTk5OTlcdTZlMmYiLCJcdTUwMGJcdTRlYmEuXHU5OTk5XHU2ZTJmIiwiXHU3ZGIyXHU3ZDYxLlx1OTk5OVx1NmUyZiIsIlx1N2Q0NFx1N2U1NC5cdTk5OTlcdTZlMmYiLCJcdTBjYWRcdTBjYmVcdTBjYjBcdTBjYTQiLCJcdTBiMmRc''@;'; put 'put ''dTBiM2VcdTBiMzBcdTBiMjQiLCJcdTA5YWRcdTA5YmVcdTA5ZjBcdTA5YTQiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5MjRcdTA5MmVcdTA5NGQiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5NGJcdTA5MjQiLCJcdTA2ODBcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTBkMmRcdTBkM2VcdTBkMzBc''@;'; put 'put ''dTBkMjRcdTBkMDIiLCJcdTA5MmRcdTA5M2VcdTA5MzBcdTA5MjQiLCJcdTA2MjhcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTA2MjhcdTA2YmVcdTA2MjdcdTA2MzFcdTA2MmEiLCJcdTBjMmRcdTBjM2VcdTBjMzBcdTBjMjRcdTBjNGQiLCJcdTBhYWRcdTBhYmVcdTBhYjBcdTBhYTQiLCJcdTBh''@;'; put 'put ''MmRcdTBhM2VcdTBhMzBcdTBhMjQiLCJcdTA5YWRcdTA5YmVcdTA5YjBcdTA5YTQiLCJcdTBiODdcdTBiYThcdTBiY2RcdTBiYTRcdTBiYmZcdTBiYWZcdTBiYmUiLCJcdTA2MjdcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MjdcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2''@;'; put 'put ''MzlcdTA2MzFcdTA2MjdcdTA2NDIiLCJcdTA2MjdcdTA2NDRcdTA2MjdcdTA2MzFcdTA2MmZcdTA2NDYiLCJcdWQ1NWNcdWFkNmQiLCJcdTA0OWJcdTA0MzBcdTA0MzciLCJcdTBlYTVcdTBlYjJcdTBlYTciLCJcdTBkYmRcdTBkODJcdTBkOWFcdTBkY2YiLCJcdTBiODdcdTBiYjJcdTBiOTlc''@;'; put 'put ''dTBiY2RcdTBiOTVcdTBiYzgiLCJcdTA2MjdcdTA2NDRcdTA2NDVcdTA2M2FcdTA2MzFcdTA2MjgiLCJcdTA0M2NcdTA0M2FcdTA0MzQiLCJcdTA0M2NcdTA0M2VcdTA0M2QiLCJcdTZmYjNcdTk1ODAiLCJcdTZmYjNcdTk1ZTgiLCJcdTA2NDVcdTA2NDRcdTA2NGFcdTA2MzNcdTA2NGFcdTA2''@;'; put 'put ''MjciLCJcdTA2MzlcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2N2VcdTA2MjdcdTA2YTlcdTA2MzNcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2N2VcdTA2MjdcdTA2NDNcdTA2MzNcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2NDFcdTA2NDRcdTA2MzNcdTA2MzdcdTA2NGFcdTA2NDYiLCJcdTA0''@;'; put 'put ''NDFcdTA0NDBcdTA0MzEiLCJcdTA0M2ZcdTA0NDAuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNlXHUwNDQwXHUwNDMzLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZVx1MDQzMVx1MDQ0MC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0M2VcdTA0MzQuXHUwNDQxXHUwNDQwXHUwNDMxIiwi''@;'; put 'put ''XHUwNDQzXHUwNDNmXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzMFx1MDQzYS5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0NDBcdTA0NDQiLCJcdTA2NDJcdTA2MzdcdTA2MzEiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2NGFcdTA2MjkiLCJcdTA2''@;'; put 'put ''MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2Y2NcdTA2MjkiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2Y2NcdTA2YzMiLCJcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MzlcdTA2NDhcdTA2MmZcdTA2NGFcdTA2NDciLCJcdTA2MzNcdTA2NDhcdTA2''@;'; put 'put ''MmZcdTA2MjdcdTA2NDYiLCJcdTY1YjBcdTUyYTBcdTU3NjEiLCJcdTBiOWFcdTBiYmZcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYWFcdTBiY2RcdTBiYWFcdTBiYzJcdTBiYjBcdTBiY2QiLCJcdTA2MzNcdTA2NDhcdTA2MzFcdTA2NGFcdTA2MjkiLCJcdTA2MzNcdTA2NDhcdTA2MzFcdTA2NGFc''@;'; put 'put ''dTA2MjciLCJcdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMjhcdTBlMzZcdTBlMDFcdTBlMjlcdTBlMzIuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTE4XHUwZTM4XHUwZTIzXHUwZTAxXHUwZTM0XHUwZTA4Llx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUyM1x1MGUzMVx1MGUxMFx1MGUxYVx1''@;'; put 'put ''MGUzMlx1MGUyNS5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMTdcdTBlMmJcdTBlMzJcdTBlMjMuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTQwXHUwZTE5XHUwZTQ3XHUwZTE1Llx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUyZFx1MGUwN1x1MGUwNFx1MGU0Y1x1MGUwMVx1MGUyMy5cdTBl''@;'; put 'put ''NDRcdTBlMTdcdTBlMjIiLCJcdTA2MmFcdTA2NDhcdTA2NDZcdTA2MzMiLCJcdTUzZjBcdTcwNjMiLCJcdTUzZjBcdTZlN2UiLCJcdTgxZmFcdTcwNjMiLCJcdTA0NDNcdTA0M2FcdTA0NDAiLCJcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDVcdTA2NDYiLCJ4eHgiLCJ5ZSIsImNvbS55ZSIsImVk''@;'; put 'put ''dS55ZSIsImdvdi55ZSIsIm5ldC55ZSIsIm1pbC55ZSIsIm9yZy55ZSIsImFjLnphIiwiYWdyaWMuemEiLCJhbHQuemEiLCJjby56YSIsImVkdS56YSIsImdvdi56YSIsImdyb25kYXIuemEiLCJsYXcuemEiLCJtaWwuemEiLCJuZXQuemEiLCJuZ28uemEiLCJuaWMuemEiLCJuaXMuemEiLCJu''@;'; put 'put ''b20uemEiLCJvcmcuemEiLCJzY2hvb2wuemEiLCJ0bS56YSIsIndlYi56YSIsInptIiwiYWMuem0iLCJiaXouem0iLCJjby56bSIsImNvbS56bSIsImVkdS56bSIsImdvdi56bSIsImluZm8uem0iLCJtaWwuem0iLCJuZXQuem0iLCJvcmcuem0iLCJzY2guem0iLCJ6dyIsImFjLnp3IiwiY28u''@;'; put 'put ''enciLCJnb3YuenciLCJtaWwuenciLCJvcmcuenciLCJhYWEiLCJhYXJwIiwiYWJhcnRoIiwiYWJiIiwiYWJib3R0IiwiYWJidmllIiwiYWJjIiwiYWJsZSIsImFib2dhZG8iLCJhYnVkaGFiaSIsImFjYWRlbXkiLCJhY2NlbnR1cmUiLCJhY2NvdW50YW50IiwiYWNjb3VudGFudHMiLCJhY28i''@;'; put 'put ''LCJhY3RvciIsImFkYWMiLCJhZHMiLCJhZHVsdCIsImFlZyIsImFldG5hIiwiYWZsIiwiYWZyaWNhIiwiYWdha2hhbiIsImFnZW5jeSIsImFpZyIsImFpcmJ1cyIsImFpcmZvcmNlIiwiYWlydGVsIiwiYWtkbiIsImFsZmFyb21lbyIsImFsaWJhYmEiLCJhbGlwYXkiLCJhbGxmaW5hbnoiLCJh''@;'; put 'put ''bGxzdGF0ZSIsImFsbHkiLCJhbHNhY2UiLCJhbHN0b20iLCJhbWF6b24iLCJhbWVyaWNhbmV4cHJlc3MiLCJhbWVyaWNhbmZhbWlseSIsImFtZXgiLCJhbWZhbSIsImFtaWNhIiwiYW1zdGVyZGFtIiwiYW5hbHl0aWNzIiwiYW5kcm9pZCIsImFucXVhbiIsImFueiIsImFvbCIsImFwYXJ0bWVu''@;'; put 'put ''dHMiLCJhcHAiLCJhcHBsZSIsImFxdWFyZWxsZSIsImFyYWIiLCJhcmFtY28iLCJhcmNoaSIsImFybXkiLCJhcnQiLCJhcnRlIiwiYXNkYSIsImFzc29jaWF0ZXMiLCJhdGhsZXRhIiwiYXR0b3JuZXkiLCJhdWN0aW9uIiwiYXVkaSIsImF1ZGlibGUiLCJhdWRpbyIsImF1c3Bvc3QiLCJhdXRo''@;'; put 'put ''b3IiLCJhdXRvIiwiYXV0b3MiLCJhdmlhbmNhIiwiYXdzIiwiYXhhIiwiYXp1cmUiLCJiYWJ5IiwiYmFpZHUiLCJiYW5hbWV4IiwiYmFuYW5hcmVwdWJsaWMiLCJiYW5kIiwiYmFuayIsImJhciIsImJhcmNlbG9uYSIsImJhcmNsYXljYXJkIiwiYmFyY2xheXMiLCJiYXJlZm9vdCIsImJhcmdh''@;'; put 'put ''aW5zIiwiYmFzZWJhbGwiLCJiYXNrZXRiYWxsIiwiYmF1aGF1cyIsImJheWVybiIsImJiYyIsImJidCIsImJidmEiLCJiY2ciLCJiY24iLCJiZWF0cyIsImJlYXV0eSIsImJlZXIiLCJiZW50bGV5IiwiYmVybGluIiwiYmVzdCIsImJlc3RidXkiLCJiZXQiLCJiaGFydGkiLCJiaWJsZSIsImJp''@;'; put 'put ''ZCIsImJpa2UiLCJiaW5nIiwiYmluZ28iLCJiaW8iLCJibGFjayIsImJsYWNrZnJpZGF5IiwiYmxvY2tidXN0ZXIiLCJibG9nIiwiYmxvb21iZXJnIiwiYmx1ZSIsImJtcyIsImJtdyIsImJucHBhcmliYXMiLCJib2F0cyIsImJvZWhyaW5nZXIiLCJib2ZhIiwiYm9tIiwiYm9uZCIsImJvbyIs''@;'; put 'put ''ImJvb2siLCJib29raW5nIiwiYm9zY2giLCJib3N0aWsiLCJib3N0b24iLCJib3QiLCJib3V0aXF1ZSIsImJveCIsImJyYWRlc2NvIiwiYnJpZGdlc3RvbmUiLCJicm9hZHdheSIsImJyb2tlciIsImJyb3RoZXIiLCJicnVzc2VscyIsImJ1Z2F0dGkiLCJidWlsZCIsImJ1aWxkZXJzIiwiYnVz''@;'; put 'put ''aW5lc3MiLCJidXkiLCJidXp6IiwiYnpoIiwiY2FiIiwiY2FmZSIsImNhbCIsImNhbGwiLCJjYWx2aW5rbGVpbiIsImNhbSIsImNhbWVyYSIsImNhbXAiLCJjYW5jZXJyZXNlYXJjaCIsImNhbm9uIiwiY2FwZXRvd24iLCJjYXBpdGFsIiwiY2FwaXRhbG9uZSIsImNhciIsImNhcmF2YW4iLCJj''@;'; put 'put ''YXJkcyIsImNhcmUiLCJjYXJlZXIiLCJjYXJlZXJzIiwiY2FycyIsImNhc2EiLCJjYXNlIiwiY2FzaCIsImNhc2lubyIsImNhdGVyaW5nIiwiY2F0aG9saWMiLCJjYmEiLCJjYm4iLCJjYnJlIiwiY2JzIiwiY2VudGVyIiwiY2VvIiwiY2VybiIsImNmYSIsImNmZCIsImNoYW5lbCIsImNoYW5u''@;'; put 'put ''ZWwiLCJjaGFyaXR5IiwiY2hhc2UiLCJjaGF0IiwiY2hlYXAiLCJjaGludGFpIiwiY2hyaXN0bWFzIiwiY2hyb21lIiwiY2h1cmNoIiwiY2lwcmlhbmkiLCJjaXJjbGUiLCJjaXNjbyIsImNpdGFkZWwiLCJjaXRpIiwiY2l0aWMiLCJjaXR5IiwiY2l0eWVhdHMiLCJjbGFpbXMiLCJjbGVhbmlu''@;'; put 'put ''ZyIsImNsaWNrIiwiY2xpbmljIiwiY2xpbmlxdWUiLCJjbG90aGluZyIsImNsb3VkIiwiY2x1YiIsImNsdWJtZWQiLCJjb2FjaCIsImNvZGVzIiwiY29mZmVlIiwiY29sbGVnZSIsImNvbG9nbmUiLCJjb21jYXN0IiwiY29tbWJhbmsiLCJjb21tdW5pdHkiLCJjb21wYW55IiwiY29tcGFyZSIs''@;'; put 'put ''ImNvbXB1dGVyIiwiY29tc2VjIiwiY29uZG9zIiwiY29uc3RydWN0aW9uIiwiY29uc3VsdGluZyIsImNvbnRhY3QiLCJjb250cmFjdG9ycyIsImNvb2tpbmciLCJjb29raW5nY2hhbm5lbCIsImNvb2wiLCJjb3JzaWNhIiwiY291bnRyeSIsImNvdXBvbiIsImNvdXBvbnMiLCJjb3Vyc2VzIiwi''@;'; put 'put ''Y3BhIiwiY3JlZGl0IiwiY3JlZGl0Y2FyZCIsImNyZWRpdHVuaW9uIiwiY3JpY2tldCIsImNyb3duIiwiY3JzIiwiY3J1aXNlIiwiY3J1aXNlcyIsImN1aXNpbmVsbGEiLCJjeW1ydSIsImN5b3UiLCJkYWJ1ciIsImRhZCIsImRhbmNlIiwiZGF0YSIsImRhdGUiLCJkYXRpbmciLCJkYXRzdW4i''@;'; put 'put ''LCJkYXkiLCJkY2xrIiwiZGRzIiwiZGVhbCIsImRlYWxlciIsImRlYWxzIiwiZGVncmVlIiwiZGVsaXZlcnkiLCJkZWxsIiwiZGVsb2l0dGUiLCJkZWx0YSIsImRlbW9jcmF0IiwiZGVudGFsIiwiZGVudGlzdCIsImRlc2kiLCJkZXNpZ24iLCJkZXYiLCJkaGwiLCJkaWFtb25kcyIsImRpZXQi''@;'; put 'put ''LCJkaWdpdGFsIiwiZGlyZWN0IiwiZGlyZWN0b3J5IiwiZGlzY291bnQiLCJkaXNjb3ZlciIsImRpc2giLCJkaXkiLCJkbnAiLCJkb2NzIiwiZG9jdG9yIiwiZG9nIiwiZG9tYWlucyIsImRvdCIsImRvd25sb2FkIiwiZHJpdmUiLCJkdHYiLCJkdWJhaSIsImR1bmxvcCIsImR1cG9udCIsImR1''@;'; put 'put ''cmJhbiIsImR2YWciLCJkdnIiLCJlYXJ0aCIsImVhdCIsImVjbyIsImVkZWthIiwiZWR1Y2F0aW9uIiwiZW1haWwiLCJlbWVyY2siLCJlbmVyZ3kiLCJlbmdpbmVlciIsImVuZ2luZWVyaW5nIiwiZW50ZXJwcmlzZXMiLCJlcHNvbiIsImVxdWlwbWVudCIsImVyaWNzc29uIiwiZXJuaSIsImVz''@;'; put 'put ''cSIsImVzdGF0ZSIsImV0aXNhbGF0IiwiZXVyb3Zpc2lvbiIsImV1cyIsImV2ZW50cyIsImV4Y2hhbmdlIiwiZXhwZXJ0IiwiZXhwb3NlZCIsImV4cHJlc3MiLCJleHRyYXNwYWNlIiwiZmFnZSIsImZhaWwiLCJmYWlyd2luZHMiLCJmYWl0aCIsImZhbWlseSIsImZhbiIsImZhbnMiLCJmYXJt''@;'; put 'put ''IiwiZmFybWVycyIsImZhc2hpb24iLCJmYXN0IiwiZmVkZXgiLCJmZWVkYmFjayIsImZlcnJhcmkiLCJmZXJyZXJvIiwiZmlhdCIsImZpZGVsaXR5IiwiZmlkbyIsImZpbG0iLCJmaW5hbCIsImZpbmFuY2UiLCJmaW5hbmNpYWwiLCJmaXJlIiwiZmlyZXN0b25lIiwiZmlybWRhbGUiLCJmaXNo''@;'; put 'put ''IiwiZmlzaGluZyIsImZpdCIsImZpdG5lc3MiLCJmbGlja3IiLCJmbGlnaHRzIiwiZmxpciIsImZsb3Jpc3QiLCJmbG93ZXJzIiwiZmx5IiwiZm9vIiwiZm9vZCIsImZvb2RuZXR3b3JrIiwiZm9vdGJhbGwiLCJmb3JkIiwiZm9yZXgiLCJmb3JzYWxlIiwiZm9ydW0iLCJmb3VuZGF0aW9uIiwi''@;'; put 'put ''Zm94IiwiZnJlZSIsImZyZXNlbml1cyIsImZybCIsImZyb2dhbnMiLCJmcm9udGRvb3IiLCJmcm9udGllciIsImZ0ciIsImZ1aml0c3UiLCJmdW4iLCJmdW5kIiwiZnVybml0dXJlIiwiZnV0Ym9sIiwiZnlpIiwiZ2FsIiwiZ2FsbGVyeSIsImdhbGxvIiwiZ2FsbHVwIiwiZ2FtZSIsImdhbWVz''@;'; put 'put ''IiwiZ2FwIiwiZ2FyZGVuIiwiZ2F5IiwiZ2JpeiIsImdkbiIsImdlYSIsImdlbnQiLCJnZW50aW5nIiwiZ2VvcmdlIiwiZ2dlZSIsImdpZnQiLCJnaWZ0cyIsImdpdmVzIiwiZ2l2aW5nIiwiZ2xhc3MiLCJnbGUiLCJnbG9iYWwiLCJnbG9ibyIsImdtYWlsIiwiZ21iaCIsImdtbyIsImdteCIs''@;'; put 'put ''ImdvZGFkZHkiLCJnb2xkIiwiZ29sZHBvaW50IiwiZ29sZiIsImdvbyIsImdvb2R5ZWFyIiwiZ29vZyIsImdvb2dsZSIsImdvcCIsImdvdCIsImdyYWluZ2VyIiwiZ3JhcGhpY3MiLCJncmF0aXMiLCJncmVlbiIsImdyaXBlIiwiZ3JvY2VyeSIsImdyb3VwIiwiZ3VhcmRpYW4iLCJndWNjaSIs''@;'; put 'put ''Imd1Z2UiLCJndWlkZSIsImd1aXRhcnMiLCJndXJ1IiwiaGFpciIsImhhbWJ1cmciLCJoYW5nb3V0IiwiaGF1cyIsImhibyIsImhkZmMiLCJoZGZjYmFuayIsImhlYWx0aCIsImhlYWx0aGNhcmUiLCJoZWxwIiwiaGVsc2lua2kiLCJoZXJlIiwiaGVybWVzIiwiaGd0diIsImhpcGhvcCIsImhp''@;'; put 'put ''c2FtaXRzdSIsImhpdGFjaGkiLCJoaXYiLCJoa3QiLCJob2NrZXkiLCJob2xkaW5ncyIsImhvbGlkYXkiLCJob21lZGVwb3QiLCJob21lZ29vZHMiLCJob21lcyIsImhvbWVzZW5zZSIsImhvbmRhIiwiaG9yc2UiLCJob3NwaXRhbCIsImhvc3QiLCJob3N0aW5nIiwiaG90IiwiaG90ZWxlcyIs''@;'; put 'put ''ImhvdGVscyIsImhvdG1haWwiLCJob3VzZSIsImhvdyIsImhzYmMiLCJodWdoZXMiLCJoeWF0dCIsImh5dW5kYWkiLCJpYm0iLCJpY2JjIiwiaWNlIiwiaWN1IiwiaWVlZSIsImlmbSIsImlrYW5vIiwiaW1hbWF0IiwiaW1kYiIsImltbW8iLCJpbW1vYmlsaWVuIiwiaW5jIiwiaW5kdXN0cmll''@;'; put 'put ''cyIsImluZmluaXRpIiwiaW5nIiwiaW5rIiwiaW5zdGl0dXRlIiwiaW5zdXJhbmNlIiwiaW5zdXJlIiwiaW50ZXJuYXRpb25hbCIsImludHVpdCIsImludmVzdG1lbnRzIiwiaXBpcmFuZ2EiLCJpcmlzaCIsImlzbWFpbGkiLCJpc3QiLCJpc3RhbmJ1bCIsIml0YXUiLCJpdHYiLCJqYWd1YXIi''@;'; put 'put ''LCJqYXZhIiwiamNiIiwiamVlcCIsImpldHp0IiwiamV3ZWxyeSIsImppbyIsImpsbCIsImptcCIsImpuaiIsImpvYnVyZyIsImpvdCIsImpveSIsImpwbW9yZ2FuIiwianBycyIsImp1ZWdvcyIsImp1bmlwZXIiLCJrYXVmZW4iLCJrZGRpIiwia2Vycnlob3RlbHMiLCJrZXJyeWxvZ2lzdGlj''@;'; put 'put ''cyIsImtlcnJ5cHJvcGVydGllcyIsImtmaCIsImtpYSIsImtpZHMiLCJraW0iLCJraW5kZXIiLCJraW5kbGUiLCJraXRjaGVuIiwia2l3aSIsImtvZWxuIiwia29tYXRzdSIsImtvc2hlciIsImtwbWciLCJrcG4iLCJrcmQiLCJrcmVkIiwia3Vva2dyb3VwIiwia3lvdG8iLCJsYWNhaXhhIiwi''@;'; put 'put ''bGFtYm9yZ2hpbmkiLCJsYW1lciIsImxhbmNhc3RlciIsImxhbmNpYSIsImxhbmQiLCJsYW5kcm92ZXIiLCJsYW54ZXNzIiwibGFzYWxsZSIsImxhdCIsImxhdGlubyIsImxhdHJvYmUiLCJsYXciLCJsYXd5ZXIiLCJsZHMiLCJsZWFzZSIsImxlY2xlcmMiLCJsZWZyYWsiLCJsZWdhbCIsImxl''@;'; put 'put ''Z28iLCJsZXh1cyIsImxnYnQiLCJsaWRsIiwibGlmZSIsImxpZmVpbnN1cmFuY2UiLCJsaWZlc3R5bGUiLCJsaWdodGluZyIsImxpa2UiLCJsaWxseSIsImxpbWl0ZWQiLCJsaW1vIiwibGluY29sbiIsImxpbmRlIiwibGluayIsImxpcHN5IiwibGl2ZSIsImxpdmluZyIsImxsYyIsImxscCIs''@;'; put 'put ''ImxvYW4iLCJsb2FucyIsImxvY2tlciIsImxvY3VzIiwibG9mdCIsImxvbCIsImxvbmRvbiIsImxvdHRlIiwibG90dG8iLCJsb3ZlIiwibHBsIiwibHBsZmluYW5jaWFsIiwibHRkIiwibHRkYSIsImx1bmRiZWNrIiwibHV4ZSIsImx1eHVyeSIsIm1hY3lzIiwibWFkcmlkIiwibWFpZiIsIm1h''@;'; put 'put ''aXNvbiIsIm1ha2V1cCIsIm1hbiIsIm1hbmFnZW1lbnQiLCJtYW5nbyIsIm1hcCIsIm1hcmtldCIsIm1hcmtldGluZyIsIm1hcmtldHMiLCJtYXJyaW90dCIsIm1hcnNoYWxscyIsIm1hc2VyYXRpIiwibWF0dGVsIiwibWJhIiwibWNraW5zZXkiLCJtZWQiLCJtZWRpYSIsIm1lZXQiLCJtZWxi''@;'; put 'put ''b3VybmUiLCJtZW1lIiwibWVtb3JpYWwiLCJtZW4iLCJtZW51IiwibWVyY2ttc2QiLCJtaWFtaSIsIm1pY3Jvc29mdCIsIm1pbmkiLCJtaW50IiwibWl0IiwibWl0c3ViaXNoaSIsIm1sYiIsIm1scyIsIm1tYSIsIm1vYmlsZSIsIm1vZGEiLCJtb2UiLCJtb2kiLCJtb20iLCJtb25hc2giLCJt''@;'; put 'put ''b25leSIsIm1vbnN0ZXIiLCJtb3Jtb24iLCJtb3J0Z2FnZSIsIm1vc2NvdyIsIm1vdG8iLCJtb3RvcmN5Y2xlcyIsIm1vdiIsIm1vdmllIiwibXNkIiwibXRuIiwibXRyIiwibXVzaWMiLCJtdXR1YWwiLCJuYWIiLCJuYWdveWEiLCJuYXR1cmEiLCJuYXZ5IiwibmJhIiwibmVjIiwibmV0YmFu''@;'; put 'put ''ayIsIm5ldGZsaXgiLCJuZXR3b3JrIiwibmV1c3RhciIsIm5ldyIsIm5ld3MiLCJuZXh0IiwibmV4dGRpcmVjdCIsIm5leHVzIiwibmZsIiwibmdvIiwibmhrIiwibmljbyIsIm5pa2UiLCJuaWtvbiIsIm5pbmphIiwibmlzc2FuIiwibmlzc2F5Iiwibm9raWEiLCJub3J0aHdlc3Rlcm5tdXR1''@;'; put 'put ''YWwiLCJub3J0b24iLCJub3ciLCJub3dydXoiLCJub3d0diIsIm5yYSIsIm5ydyIsIm50dCIsIm55YyIsIm9iaSIsIm9ic2VydmVyIiwib2ZmaWNlIiwib2tpbmF3YSIsIm9sYXlhbiIsIm9sYXlhbmdyb3VwIiwib2xkbmF2eSIsIm9sbG8iLCJvbWVnYSIsIm9uZSIsIm9uZyIsIm9ubCIsIm9u''@;'; put 'put ''bGluZSIsIm9vbyIsIm9wZW4iLCJvcmFjbGUiLCJvcmFuZ2UiLCJvcmdhbmljIiwib3JpZ2lucyIsIm9zYWthIiwib3RzdWthIiwib3R0Iiwib3ZoIiwicGFnZSIsInBhbmFzb25pYyIsInBhcmlzIiwicGFycyIsInBhcnRuZXJzIiwicGFydHMiLCJwYXJ0eSIsInBhc3NhZ2VucyIsInBheSIs''@;'; put 'put ''InBjY3ciLCJwZXQiLCJwZml6ZXIiLCJwaGFybWFjeSIsInBoZCIsInBoaWxpcHMiLCJwaG9uZSIsInBob3RvIiwicGhvdG9ncmFwaHkiLCJwaG90b3MiLCJwaHlzaW8iLCJwaWNzIiwicGljdGV0IiwicGljdHVyZXMiLCJwaWQiLCJwaW4iLCJwaW5nIiwicGluayIsInBpb25lZXIiLCJwaXp6''@;'; put 'put ''YSIsInBsYWNlIiwicGxheSIsInBsYXlzdGF0aW9uIiwicGx1bWJpbmciLCJwbHVzIiwicG5jIiwicG9obCIsInBva2VyIiwicG9saXRpZSIsInBvcm4iLCJwcmFtZXJpY2EiLCJwcmF4aSIsInByZXNzIiwicHJpbWUiLCJwcm9kIiwicHJvZHVjdGlvbnMiLCJwcm9mIiwicHJvZ3Jlc3NpdmUi''@;'; put 'put ''LCJwcm9tbyIsInByb3BlcnRpZXMiLCJwcm9wZXJ0eSIsInByb3RlY3Rpb24iLCJwcnUiLCJwcnVkZW50aWFsIiwicHViIiwicHdjIiwicXBvbiIsInF1ZWJlYyIsInF1ZXN0IiwicmFjaW5nIiwicmFkaW8iLCJyZWFkIiwicmVhbGVzdGF0ZSIsInJlYWx0b3IiLCJyZWFsdHkiLCJyZWNpcGVz''@;'; put 'put ''IiwicmVkIiwicmVkc3RvbmUiLCJyZWR1bWJyZWxsYSIsInJlaGFiIiwicmVpc2UiLCJyZWlzZW4iLCJyZWl0IiwicmVsaWFuY2UiLCJyZW4iLCJyZW50IiwicmVudGFscyIsInJlcGFpciIsInJlcG9ydCIsInJlcHVibGljYW4iLCJyZXN0IiwicmVzdGF1cmFudCIsInJldmlldyIsInJldmll''@;'; put 'put ''d3MiLCJyZXhyb3RoIiwicmljaCIsInJpY2hhcmRsaSIsInJpY29oIiwicmlsIiwicmlvIiwicmlwIiwicm9jaGVyIiwicm9ja3MiLCJyb2RlbyIsInJvZ2VycyIsInJvb20iLCJyc3ZwIiwicnVnYnkiLCJydWhyIiwicnVuIiwicndlIiwicnl1a3l1Iiwic2FhcmxhbmQiLCJzYWZlIiwic2Fm''@;'; put 'put ''ZXR5Iiwic2FrdXJhIiwic2FsZSIsInNhbG9uIiwic2Ftc2NsdWIiLCJzYW1zdW5nIiwic2FuZHZpayIsInNhbmR2aWtjb3JvbWFudCIsInNhbm9maSIsInNhcCIsInNhcmwiLCJzYXMiLCJzYXZlIiwic2F4byIsInNiaSIsInNicyIsInNjYSIsInNjYiIsInNjaGFlZmZsZXIiLCJzY2htaWR0''@;'; put 'put ''Iiwic2Nob2xhcnNoaXBzIiwic2Nob29sIiwic2NodWxlIiwic2Nod2FyeiIsInNjaWVuY2UiLCJzY290Iiwic2VhcmNoIiwic2VhdCIsInNlY3VyZSIsInNlY3VyaXR5Iiwic2VlayIsInNlbGVjdCIsInNlbmVyIiwic2VydmljZXMiLCJzZXMiLCJzZXZlbiIsInNldyIsInNleCIsInNleHki''@;'; put 'put ''LCJzZnIiLCJzaGFuZ3JpbGEiLCJzaGFycCIsInNoYXciLCJzaGVsbCIsInNoaWEiLCJzaGlrc2hhIiwic2hvZXMiLCJzaG9wIiwic2hvcHBpbmciLCJzaG91amkiLCJzaG93Iiwic2hvd3RpbWUiLCJzaWxrIiwic2luYSIsInNpbmdsZXMiLCJzaXRlIiwic2tpIiwic2tpbiIsInNreSIsInNr''@;'; put 'put ''eXBlIiwic2xpbmciLCJzbWFydCIsInNtaWxlIiwic25jZiIsInNvY2NlciIsInNvY2lhbCIsInNvZnRiYW5rIiwic29mdHdhcmUiLCJzb2h1Iiwic29sYXIiLCJzb2x1dGlvbnMiLCJzb25nIiwic29ueSIsInNveSIsInNwYSIsInNwYWNlIiwic3BvcnQiLCJzcG90Iiwic3JsIiwic3RhZGEi''@;'; put 'put ''LCJzdGFwbGVzIiwic3RhciIsInN0YXRlYmFuayIsInN0YXRlZmFybSIsInN0YyIsInN0Y2dyb3VwIiwic3RvY2tob2xtIiwic3RvcmFnZSIsInN0b3JlIiwic3RyZWFtIiwic3R1ZGlvIiwic3R1ZHkiLCJzdHlsZSIsInN1Y2tzIiwic3VwcGxpZXMiLCJzdXBwbHkiLCJzdXBwb3J0Iiwic3Vy''@;'; put 'put ''ZiIsInN1cmdlcnkiLCJzdXp1a2kiLCJzd2F0Y2giLCJzd2lzcyIsInN5ZG5leSIsInN5c3RlbXMiLCJ0YWIiLCJ0YWlwZWkiLCJ0YWxrIiwidGFvYmFvIiwidGFyZ2V0IiwidGF0YW1vdG9ycyIsInRhdGFyIiwidGF0dG9vIiwidGF4IiwidGF4aSIsInRjaSIsInRkayIsInRlYW0iLCJ0ZWNo''@;'; put 'put ''IiwidGVjaG5vbG9neSIsInRlbWFzZWsiLCJ0ZW5uaXMiLCJ0ZXZhIiwidGhkIiwidGhlYXRlciIsInRoZWF0cmUiLCJ0aWFhIiwidGlja2V0cyIsInRpZW5kYSIsInRpZmZhbnkiLCJ0aXBzIiwidGlyZXMiLCJ0aXJvbCIsInRqbWF4eCIsInRqeCIsInRrbWF4eCIsInRtYWxsIiwidG9kYXki''@;'; put 'put ''LCJ0b2t5byIsInRvb2xzIiwidG9wIiwidG9yYXkiLCJ0b3NoaWJhIiwidG90YWwiLCJ0b3VycyIsInRvd24iLCJ0b3lvdGEiLCJ0b3lzIiwidHJhZGUiLCJ0cmFkaW5nIiwidHJhaW5pbmciLCJ0cmF2ZWwiLCJ0cmF2ZWxjaGFubmVsIiwidHJhdmVsZXJzIiwidHJhdmVsZXJzaW5zdXJhbmNl''@;'; put 'put ''IiwidHJ1c3QiLCJ0cnYiLCJ0dWJlIiwidHVpIiwidHVuZXMiLCJ0dXNodSIsInR2cyIsInViYW5rIiwidWJzIiwidW5pY29tIiwidW5pdmVyc2l0eSIsInVubyIsInVvbCIsInVwcyIsInZhY2F0aW9ucyIsInZhbmEiLCJ2YW5ndWFyZCIsInZlZ2FzIiwidmVudHVyZXMiLCJ2ZXJpc2lnbiIs''@;'; put 'put ''InZlcnNpY2hlcnVuZyIsInZldCIsInZpYWplcyIsInZpZGVvIiwidmlnIiwidmlraW5nIiwidmlsbGFzIiwidmluIiwidmlwIiwidmlyZ2luIiwidmlzYSIsInZpc2lvbiIsInZpdmEiLCJ2aXZvIiwidmxhYW5kZXJlbiIsInZvZGthIiwidm9sa3N3YWdlbiIsInZvbHZvIiwidm90ZSIsInZv''@;'; put 'put ''dGluZyIsInZvdG8iLCJ2b3lhZ2UiLCJ2dWVsb3MiLCJ3YWxlcyIsIndhbG1hcnQiLCJ3YWx0ZXIiLCJ3YW5nIiwid2FuZ2dvdSIsIndhdGNoIiwid2F0Y2hlcyIsIndlYXRoZXIiLCJ3ZWF0aGVyY2hhbm5lbCIsIndlYmNhbSIsIndlYmVyIiwid2Vic2l0ZSIsIndlZGRpbmciLCJ3ZWlibyIs''@;'; put 'put ''IndlaXIiLCJ3aG9zd2hvIiwid2llbiIsIndpa2kiLCJ3aWxsaWFtaGlsbCIsIndpbiIsIndpbmRvd3MiLCJ3aW5lIiwid2lubmVycyIsIndtZSIsIndvbHRlcnNrbHV3ZXIiLCJ3b29kc2lkZSIsIndvcmsiLCJ3b3JrcyIsIndvcmxkIiwid293Iiwid3RjIiwid3RmIiwieGJveCIsInhlcm94''@;'; put 'put ''IiwieGZpbml0eSIsInhpaHVhbiIsInhpbiIsIlx1MDkxNVx1MDk0OVx1MDkyZSIsIlx1MzBiYlx1MzBmY1x1MzBlYiIsIlx1NGY1Ylx1NWM3MSIsIlx1NjE0OFx1NTU4NCIsIlx1OTZjNlx1NTZlMiIsIlx1NTcyOFx1N2ViZiIsIlx1NzBiOVx1NzcwYiIsIlx1MGUwNFx1MGUyZFx1MGUyMSIs''@;'; put 'put ''Ilx1NTE2Ylx1NTM2NiIsIlx1MDY0NVx1MDY0OFx1MDY0Mlx1MDYzOSIsIlx1NTE2Y1x1NzZjYSIsIlx1NTE2Y1x1NTNmOCIsIlx1OTk5OVx1NjgzY1x1OTFjY1x1NjJjOSIsIlx1N2Y1MVx1N2FkOSIsIlx1NzlmYlx1NTJhOCIsIlx1NjIxMVx1NzIzMVx1NGY2MCIsIlx1MDQzY1x1MDQzZVx1''@;'; put 'put ''MDQ0MVx1MDQzYVx1MDQzMlx1MDQzMCIsIlx1MDQzYVx1MDQzMFx1MDQ0Mlx1MDQzZVx1MDQzYlx1MDQzOFx1MDQzYSIsIlx1MDQzZVx1MDQzZFx1MDQzYlx1MDQzMFx1MDQzOVx1MDQzZCIsIlx1MDQ0MVx1MDQzMFx1MDQzOVx1MDQ0MiIsIlx1ODA1NFx1OTAxYSIsIlx1MDVlN1x1MDVkNVx1''@;'; put 'put ''MDVkZCIsIlx1NjVmNlx1NWMxYSIsIlx1NWZhZVx1NTM1YSIsIlx1NmRlMVx1OWE2Y1x1OTUyMSIsIlx1MzBkNVx1MzBhMVx1MzBjM1x1MzBiN1x1MzBlN1x1MzBmMyIsIlx1MDQzZVx1MDQ0MFx1MDQzMyIsIlx1MDkyOFx1MDk0N1x1MDkxZiIsIlx1MzBiOVx1MzBjOFx1MzBhMiIsIlx1MzBh''@;'; put 'put ''Mlx1MzBkZVx1MzBiZVx1MzBmMyIsIlx1YzBiY1x1YzEzMSIsIlx1NTU0Nlx1NjgwNyIsIlx1NTU0Nlx1NWU5NyIsIlx1NTU0Nlx1NTdjZSIsIlx1MDQzNFx1MDQzNVx1MDQ0Mlx1MDQzOCIsIlx1MzBkZFx1MzBhNFx1MzBmM1x1MzBjOCIsIlx1NjViMFx1OTVmYiIsIlx1NWJiNlx1OTZmYiIs''@;'; put 'put ''Ilx1MDY0M1x1MDY0OFx1MDY0NSIsIlx1NGUyZFx1NjU4N1x1N2Y1MSIsIlx1NGUyZFx1NGZlMSIsIlx1NWEzMVx1NGU1MCIsIlx1OGMzN1x1NmI0YyIsIlx1OTZmYlx1OGEwYVx1NzZjOFx1NzlkMSIsIlx1OGQyZFx1NzI2OSIsIlx1MzBhZlx1MzBlOVx1MzBhNlx1MzBjOSIsIlx1OTAxYVx1''@;'; put 'put ''OGNhOSIsIlx1N2Y1MVx1NWU5NyIsIlx1MDkzOFx1MDkwMlx1MDkxN1x1MDkyMFx1MDkyOCIsIlx1OTkxMFx1NTM4NSIsIlx1N2Y1MVx1N2VkYyIsIlx1MDQzYVx1MDQzZVx1MDQzYyIsIlx1NGU5YVx1OWE2Y1x1OTAwYSIsIlx1OGJmYVx1NTdmYVx1NGU5YSIsIlx1OThkZlx1NTRjMSIsIlx1''@;'; put 'put ''OThkZVx1NTIyOVx1NmQ2NiIsIlx1NjI0Ylx1NjczYSIsIlx1MDYyN1x1MDYzMVx1MDYyN1x1MDY0NVx1MDY0M1x1MDY0OCIsIlx1MDYyN1x1MDY0NFx1MDYzOVx1MDY0NFx1MDY0YVx1MDYyN1x1MDY0NiIsIlx1MDYyN1x1MDYyYVx1MDYzNVx1MDYyN1x1MDY0NFx1MDYyN1x1MDYyYSIsIlx1''@;'; put 'put ''MDYyOFx1MDYyN1x1MDYzMlx1MDYyN1x1MDYzMSIsIlx1MDYyN1x1MDYyOFx1MDY0OFx1MDYzOFx1MDYyOFx1MDY0YSIsIlx1MDY0M1x1MDYyN1x1MDYyYlx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0MyIsIlx1MDY0N1x1MDY0NVx1MDYzMVx1MDYyN1x1MDY0NyIsIlx1YjJmN1x1Y2VmNCIsIlx1''@;'; put 'put ''NjUzZlx1NWU5YyIsIlx1MDYzNFx1MDYyOFx1MDY0M1x1MDYyOSIsIlx1MDYyOFx1MDY0YVx1MDYyYVx1MDY0MyIsIlx1MDYzOVx1MDYzMVx1MDYyOCIsIlx1NjczYVx1Njc4NCIsIlx1N2VjNFx1N2VjN1x1NjczYVx1Njc4NCIsIlx1NTA2NVx1NWViNyIsIlx1NjJkYlx1ODA1OCIsIlx1MDQ0''@;'; put 'put ''MFx1MDQ0M1x1MDQ0MSIsIlx1NTkyN1x1NjJmZiIsIlx1MzA3Zlx1MzA5M1x1MzA2YSIsIlx1MzBiMFx1MzBmY1x1MzBiMFx1MzBlYiIsIlx1NGUxNlx1NzU0YyIsIlx1NjZmOFx1N2M0ZCIsIlx1N2Y1MVx1NTc0MCIsIlx1YjJmN1x1YjEzNyIsIlx1MzBiM1x1MzBlMCIsIlx1NTkyOVx1NGUz''@;'; put 'put ''Ylx1NjU1OSIsIlx1NmUzOFx1NjIwZiIsInZlcm1ceGY2Z2Vuc2JlcmF0ZXIiLCJ2ZXJtXHhmNmdlbnNiZXJhdHVuZyIsIlx1NGYwMVx1NGUxYSIsIlx1NGZlMVx1NjA2ZiIsIlx1NTYwOVx1OTFjY1x1NTkyN1x1OTE1Mlx1NWU5NyIsIlx1NTYwOVx1OTFjYyIsIlx1NWU3Zlx1NGUxYyIsIlx1''@;'; put 'put ''NjUzZlx1NTJhMSIsInh5eiIsInlhY2h0cyIsInlhaG9vIiwieWFtYXh1biIsInlhbmRleCIsInlvZG9iYXNoaSIsInlvZ2EiLCJ5b2tvaGFtYSIsInlvdSIsInlvdXR1YmUiLCJ5dW4iLCJ6YXBwb3MiLCJ6YXJhIiwiemVybyIsInppcCIsInpvbmUiLCJ6dWVyaWNoIiwiY2MudWEiLCJpbmYu''@;'; put 'put ''dWEiLCJsdGQudWEiLCI2MTEudG8iLCJncmFwaG94LnVzIiwiKi5kZXZjZG5hY2Nlc3NvLmNvbSIsImFkb2JlYWVtY2xvdWQuY29tIiwiKi5kZXYuYWRvYmVhZW1jbG91ZC5jb20iLCJobHgubGl2ZSIsImFkb2JlYWVtY2xvdWQubmV0IiwiaGx4LnBhZ2UiLCJobHgzLnBhZ2UiLCJiZWVwLnBs''@;'; put 'put ''IiwiYWlya2l0YXBwcy5jb20iLCJhaXJraXRhcHBzLWF1LmNvbSIsImFpcmtpdGFwcHMuZXUiLCJhaXZlbmNsb3VkLmNvbSIsImJhcnN5LmNhIiwiKi5jb21wdXRlLmVzdGF0ZSIsIiouYWxjZXMubmV0d29yayIsImthc3NlcnZlci5jb20iLCJhbHRlcnZpc3RhLm9yZyIsImFsd2F5c2RhdGEu''@;'; put 'put ''bmV0IiwiY2xvdWRmcm9udC5uZXQiLCIqLmNvbXB1dGUuYW1hem9uYXdzLmNvbSIsIiouY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20iLCIqLmNvbXB1dGUuYW1hem9uYXdzLmNvbS5jbiIsInVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiY24tbm9ydGgtMS5lYi5hbWF6b25hd3MuY29tLmNuIiwi''@;'; put 'put ''Y24tbm9ydGh3ZXN0LTEuZWIuYW1hem9uYXdzLmNvbS5jbiIsImVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtbm9ydGhlYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1ub3J0aGVhc3QtMi5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLW5vcnRoZWFzdC0zLmVsYXN0aWNiZWFuc3Rh''@;'; put 'put ''bGsuY29tIiwiYXAtc291dGgtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLXNvdXRoZWFzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtc291dGhlYXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJjYS1jZW50cmFsLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS1jZW50cmFs''@;'; put 'put ''LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJldS13ZXN0LTMuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJzYS1lYXN0LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1lYXN0''@;'; put 'put ''LTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1lYXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJ1cy1nb3Ytd2VzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtd2VzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtd2VzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiKi5l''@;'; put 'put ''bGIuYW1hem9uYXdzLmNvbSIsIiouZWxiLmFtYXpvbmF3cy5jb20uY24iLCJhd3NnbG9iYWxhY2NlbGVyYXRvci5jb20iLCJzMy5hbWF6b25hd3MuY29tIiwiczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1z''@;'; put 'put ''b3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1ldS13ZXN0''@;'; put 'put ''LTEuYW1hem9uYXdzLmNvbSIsInMzLWV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy1leHRlcm5hbC0xLmFtYXpvbmF3cy5jb20iLCJzMy1maXBzLXVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXNhLWVhc3QtMS5hbWF6b25h''@;'; put 'put ''d3MuY29tIiwiczMtdXMtZ292LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy11cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMz''@;'; put 'put ''LmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMzLmNuLW5vcnRoLTEuYW1hem9uYXdzLmNvbS5jbiIsInMzLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmV1LXdlc3Qt''@;'; put 'put ''My5hbWF6b25hd3MuY29tIiwiczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1ub3J0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoLTEuYW1hem9u''@;'; put 'put ''YXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtY2VudHJhbC0x''@;'; put 'put ''LmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suc2EtZWFzdC0xLmFtYXpvbmF3''@;'; put 'put ''cy5jb20iLCJzMy5kdWFsc3RhY2sudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2sudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS11cy13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdl''@;'; put 'put ''YnNpdGUtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLWFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJz''@;'; put 'put ''aXRlLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS1zYS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5jYS1jZW50''@;'; put 'put ''cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUudXMtZWFzdC0yLmFtYXpvbmF3''@;'; put 'put ''cy5jb20iLCJ0M2wzcDBydC5uZXQiLCJ0ZWxlLmFtdW5lLm9yZyIsImFwaWdlZS5pbyIsInNpaWl0ZXMuY29tIiwiYXBwc3BhY2Vob3N0ZWQuY29tIiwiYXBwc3BhY2V1c2VyY29udGVudC5jb20iLCJhcHB1ZG8ubmV0Iiwib24tYXB0aWJsZS5jb20iLCJ1c2VyLmFzZWluZXQubmUuanAiLCJn''@;'; put 'put ''di52YyIsImQuZ3YudmMiLCJ1c2VyLnBhcnR5LmV1cyIsInBpbWllbnRhLm9yZyIsInBvaXZyb24ub3JnIiwicG90YWdlci5vcmciLCJzd2VldHBlcHBlci5vcmciLCJteWFzdXN0b3IuY29tIiwiY2RuLnByb2QuYXRsYXNzaWFuLWRldi5uZXQiLCJ0cmFuc2xhdGVkLnBhZ2UiLCJteWZyaXR6''@;'; put 'put ''Lm5ldCIsIm9uYXZzdGFjay5uZXQiLCIqLmF3ZGV2LmNhIiwiKi5hZHZpc29yLndzIiwiZWNvbW1lcmNlLXNob3AucGwiLCJiLWRhdGEuaW8iLCJiYWNrcGxhbmVhcHAuaW8iLCJiYWxlbmEtZGV2aWNlcy5jb20iLCJycy5iYSIsIiouYmFuemFpLmNsb3VkIiwiYXBwLmJhbnphaWNsb3VkLmlv''@;'; put 'put ''IiwiKi5iYWNreWFyZHMuYmFuemFpY2xvdWQuaW8iLCJiYXNlLmVjIiwib2ZmaWNpYWwuZWMiLCJidXlzaG9wLmpwIiwiZmFzaGlvbnN0b3JlLmpwIiwiaGFuZGNyYWZ0ZWQuanAiLCJrYXdhaWlzaG9wLmpwIiwic3VwZXJzYWxlLmpwIiwidGhlc2hvcC5qcCIsInNob3BzZWxlY3QubmV0Iiwi''@;'; put 'put ''YmFzZS5zaG9wIiwiKi5iZWdldC5hcHAiLCJiZXRhaW5hYm94LmNvbSIsImJuci5sYSIsImJpdGJ1Y2tldC5pbyIsImJsYWNrYmF1ZGNkbi5uZXQiLCJvZi5qZSIsImJsdWViaXRlLmlvIiwiYm9vbWxhLm5ldCIsImJvdXRpci5jb20iLCJib3hmdXNlLmlvIiwic3F1YXJlNy5jaCIsImJwbGFj''@;'; put 'put ''ZWQuY29tIiwiYnBsYWNlZC5kZSIsInNxdWFyZTcuZGUiLCJicGxhY2VkLm5ldCIsInNxdWFyZTcubmV0Iiwic2hvcC5icmVuZGx5LnJzIiwiYnJvd3NlcnNhZmV0eW1hcmsuaW8iLCJ1azAuYmlndi5pbyIsImRoLmJ5dGVtYXJrLmNvLnVrIiwidm0uYnl0ZW1hcmsuY28udWsiLCJjYWZqcy5j''@;'; put 'put ''b20iLCJteWNkLmV1IiwiZHJyLmFjIiwidXd1LmFpIiwiY2FycmQuY28iLCJjcmQuY28iLCJqdS5tcCIsImFlLm9yZyIsImJyLmNvbSIsImNuLmNvbSIsImNvbS5kZSIsImNvbS5zZSIsImRlLmNvbSIsImV1LmNvbSIsImdiLm5ldCIsImh1Lm5ldCIsImpwLm5ldCIsImpwbi5jb20iLCJtZXgu''@;'; put 'put ''Y29tIiwicnUuY29tIiwic2EuY29tIiwic2UubmV0IiwidWsuY29tIiwidWsubmV0IiwidXMuY29tIiwiemEuYnoiLCJ6YS5jb20iLCJhci5jb20iLCJodS5jb20iLCJrci5jb20iLCJuby5jb20iLCJxYy5jb20iLCJ1eS5jb20iLCJhZnJpY2EuY29tIiwiZ3IuY29tIiwiaW4ubmV0Iiwid2Vi''@;'; put 'put ''LmluIiwidXMub3JnIiwiY28uY29tIiwiYXVzLmJhc2tldGJhbGwiLCJuei5iYXNrZXRiYWxsIiwicmFkaW8uYW0iLCJyYWRpby5mbSIsImMubGEiLCJjZXJ0bWdyLm9yZyIsImN4LnVhIiwiZGlzY291cnNlLmdyb3VwIiwiZGlzY291cnNlLnRlYW0iLCJjbGV2ZXJhcHBzLmlvIiwiY2xlcmsu''@;'; put 'put ''YXBwIiwiY2xlcmtzdGFnZS5hcHAiLCIqLmxjbC5kZXYiLCIqLmxjbHN0YWdlLmRldiIsIiouc3RnLmRldiIsIiouc3Rnc3RhZ2UuZGV2IiwiY2xpY2tyaXNpbmcubmV0IiwiYzY2Lm1lIiwiY2xvdWQ2Ni53cyIsImNsb3VkNjYuem9uZSIsImpkZXZjbG91ZC5jb20iLCJ3cGRldmNsb3VkLmNv''@;'; put 'put ''bSIsImNsb3VkYWNjZXNzLmhvc3QiLCJmcmVlc2l0ZS5ob3N0IiwiY2xvdWRhY2Nlc3MubmV0IiwiY2xvdWRjb250cm9sbGVkLmNvbSIsImNsb3VkY29udHJvbGFwcC5jb20iLCIqLmNsb3VkZXJhLnNpdGUiLCJwYWdlcy5kZXYiLCJ0cnljbG91ZGZsYXJlLmNvbSIsIndvcmtlcnMuZGV2Iiwi''@;'; put 'put ''d25leHQuYXBwIiwiY28uY2EiLCIqLm90YXAuY28iLCJjby5jeiIsImMuY2RuNzcub3JnIiwiY2RuNzctc3NsLm5ldCIsInIuY2RuNzcubmV0IiwicnNjLmNkbjc3Lm9yZyIsInNzbC5vcmlnaW4uY2RuNzctc2VjdXJlLm9yZyIsImNsb3VkbnMuYXNpYSIsImNsb3VkbnMuYml6IiwiY2xvdWRu''@;'; put 'put ''cy5jbHViIiwiY2xvdWRucy5jYyIsImNsb3VkbnMuZXUiLCJjbG91ZG5zLmluIiwiY2xvdWRucy5pbmZvIiwiY2xvdWRucy5vcmciLCJjbG91ZG5zLnBybyIsImNsb3VkbnMucHciLCJjbG91ZG5zLnVzIiwiY25weS5nZG4iLCJjb2RlYmVyZy5wYWdlIiwiY28ubmwiLCJjby5ubyIsIndlYmhv''@;'; put 'put ''c3RpbmcuYmUiLCJob3N0aW5nLWNsdXN0ZXIubmwiLCJhYy5ydSIsImVkdS5ydSIsImdvdi5ydSIsImludC5ydSIsIm1pbC5ydSIsInRlc3QucnUiLCJkeW4uY29zaWRucy5kZSIsImR5bmFtaXNjaGVzLWRucy5kZSIsImRuc3VwZGF0ZXIuZGUiLCJpbnRlcm5ldC1kbnMuZGUiLCJsLW8tZy1p''@;'; put 'put ''LW4uZGUiLCJkeW5hbWljLWRucy5pbmZvIiwiZmVzdGUtaXAubmV0Iiwia254LXNlcnZlci5uZXQiLCJzdGF0aWMtYWNjZXNzLm5ldCIsInJlYWxtLmN6IiwiKi5jcnlwdG9ub21pYy5uZXQiLCJjdXBjYWtlLmlzIiwiY3Vydi5kZXYiLCIqLmN1c3RvbWVyLW9jaS5jb20iLCIqLm9jaS5jdXN0''@;'; put 'put ''b21lci1vY2kuY29tIiwiKi5vY3AuY3VzdG9tZXItb2NpLmNvbSIsIioub2NzLmN1c3RvbWVyLW9jaS5jb20iLCJjeW9uLmxpbmsiLCJjeW9uLnNpdGUiLCJmbndrLnNpdGUiLCJmb2xpb25ldHdvcmsuc2l0ZSIsInBsYXRmb3JtMC5hcHAiLCJkYXBsaWUubWUiLCJsb2NhbGhvc3QuZGFwbGll''@;'; put 'put ''Lm1lIiwiZGF0dG9sb2NhbC5jb20iLCJkYXR0b3JlbGF5LmNvbSIsImRhdHRvd2ViLmNvbSIsIm15ZGF0dG8uY29tIiwiZGF0dG9sb2NhbC5uZXQiLCJteWRhdHRvLm5ldCIsImJpei5kayIsImNvLmRrIiwiZmlybS5kayIsInJlZy5kayIsInN0b3JlLmRrIiwiZHluZG5zLmRhcHBub2RlLmlv''@;'; put 'put ''IiwiKi5kYXBwcy5lYXJ0aCIsIiouYnp6LmRhcHBzLmVhcnRoIiwiYnVpbHR3aXRoZGFyay5jb20iLCJkZW1vLmRhdGFkZXRlY3QuY29tIiwiaW5zdGFuY2UuZGF0YWRldGVjdC5jb20iLCJlZGdlc3RhY2subWUiLCJkZG5zNS5jb20iLCJkZWJpYW4ubmV0IiwiZGVuby5kZXYiLCJkZW5vLXN0''@;'; put 'put ''YWdpbmcuZGV2IiwiZGVkeW4uaW8iLCJkZXRhLmFwcCIsImRldGEuZGV2IiwiKi5yc3MubXkuaWQiLCIqLmRpaGVyLnNvbHV0aW9ucyIsImRpc2NvcmRzYXlzLmNvbSIsImRpc2NvcmRzZXouY29tIiwiam96aS5iaXoiLCJkbnNob21lLmRlIiwib25saW5lLnRoIiwic2hvcC50aCIsImRyYXlk''@;'; put 'put ''ZG5zLmNvbSIsInNob3BhcmVuYS5wbCIsImRyZWFtaG9zdGVycy5jb20iLCJteWRyb2JvLmNvbSIsImRydWQuaW8iLCJkcnVkLnVzIiwiZHVja2Rucy5vcmciLCJiaXAuc2giLCJiaXRicmlkZ2UubmV0IiwiZHkuZmkiLCJ0dW5rLm9yZyIsImR5bmRucy1hdC1ob21lLmNvbSIsImR5bmRucy1h''@;'; put 'put ''dC13b3JrLmNvbSIsImR5bmRucy1ibG9nLmNvbSIsImR5bmRucy1mcmVlLmNvbSIsImR5bmRucy1ob21lLmNvbSIsImR5bmRucy1pcC5jb20iLCJkeW5kbnMtbWFpbC5jb20iLCJkeW5kbnMtb2ZmaWNlLmNvbSIsImR5bmRucy1waWNzLmNvbSIsImR5bmRucy1yZW1vdGUuY29tIiwiZHluZG5z''@;'; put 'put ''LXNlcnZlci5jb20iLCJkeW5kbnMtd2ViLmNvbSIsImR5bmRucy13aWtpLmNvbSIsImR5bmRucy13b3JrLmNvbSIsImR5bmRucy5iaXoiLCJkeW5kbnMuaW5mbyIsImR5bmRucy5vcmciLCJkeW5kbnMudHYiLCJhdC1iYW5kLWNhbXAubmV0IiwiYXRoLmN4IiwiYmFycmVsLW9mLWtub3dsZWRn''@;'; put 'put ''ZS5pbmZvIiwiYmFycmVsbC1vZi1rbm93bGVkZ2UuaW5mbyIsImJldHRlci10aGFuLnR2IiwiYmxvZ2Rucy5jb20iLCJibG9nZG5zLm5ldCIsImJsb2dkbnMub3JnIiwiYmxvZ3NpdGUub3JnIiwiYm9sZGx5Z29pbmdub3doZXJlLm9yZyIsImJyb2tlLWl0Lm5ldCIsImJ1eXNob3VzZXMubmV0''@;'; put 'put ''IiwiY2VjaGlyZS5jb20iLCJkbnNhbGlhcy5jb20iLCJkbnNhbGlhcy5uZXQiLCJkbnNhbGlhcy5vcmciLCJkbnNkb2pvLmNvbSIsImRuc2Rvam8ubmV0IiwiZG5zZG9qby5vcmciLCJkb2VzLWl0Lm5ldCIsImRvZXNudGV4aXN0LmNvbSIsImRvZXNudGV4aXN0Lm9yZyIsImRvbnRleGlzdC5j''@;'; put 'put ''b20iLCJkb250ZXhpc3QubmV0IiwiZG9udGV4aXN0Lm9yZyIsImRvb21kbnMuY29tIiwiZG9vbWRucy5vcmciLCJkdnJkbnMub3JnIiwiZHluLW8tc2F1ci5jb20iLCJkeW5hbGlhcy5jb20iLCJkeW5hbGlhcy5uZXQiLCJkeW5hbGlhcy5vcmciLCJkeW5hdGhvbWUubmV0IiwiZHluZG5zLndz''@;'; put 'put ''IiwiZW5kb2ZpbnRlcm5ldC5uZXQiLCJlbmRvZmludGVybmV0Lm9yZyIsImVuZG9mdGhlaW50ZXJuZXQub3JnIiwiZXN0LWEtbGEtbWFpc29uLmNvbSIsImVzdC1hLWxhLW1hc2lvbi5jb20iLCJlc3QtbGUtcGF0cm9uLmNvbSIsImVzdC1tb24tYmxvZ3VldXIuY29tIiwiZm9yLWJldHRlci5i''@;'; put 'put ''aXoiLCJmb3ItbW9yZS5iaXoiLCJmb3Itb3VyLmluZm8iLCJmb3Itc29tZS5iaXoiLCJmb3ItdGhlLmJpeiIsImZvcmdvdC5oZXIubmFtZSIsImZvcmdvdC5oaXMubmFtZSIsImZyb20tYWsuY29tIiwiZnJvbS1hbC5jb20iLCJmcm9tLWFyLmNvbSIsImZyb20tYXoubmV0IiwiZnJvbS1jYS5j''@;'; put 'put ''b20iLCJmcm9tLWNvLm5ldCIsImZyb20tY3QuY29tIiwiZnJvbS1kYy5jb20iLCJmcm9tLWRlLmNvbSIsImZyb20tZmwuY29tIiwiZnJvbS1nYS5jb20iLCJmcm9tLWhpLmNvbSIsImZyb20taWEuY29tIiwiZnJvbS1pZC5jb20iLCJmcm9tLWlsLmNvbSIsImZyb20taW4uY29tIiwiZnJvbS1r''@;'; put 'put ''cy5jb20iLCJmcm9tLWt5LmNvbSIsImZyb20tbGEubmV0IiwiZnJvbS1tYS5jb20iLCJmcm9tLW1kLmNvbSIsImZyb20tbWUub3JnIiwiZnJvbS1taS5jb20iLCJmcm9tLW1uLmNvbSIsImZyb20tbW8uY29tIiwiZnJvbS1tcy5jb20iLCJmcm9tLW10LmNvbSIsImZyb20tbmMuY29tIiwiZnJv''@;'; put 'put ''bS1uZC5jb20iLCJmcm9tLW5lLmNvbSIsImZyb20tbmguY29tIiwiZnJvbS1uai5jb20iLCJmcm9tLW5tLmNvbSIsImZyb20tbnYuY29tIiwiZnJvbS1ueS5uZXQiLCJmcm9tLW9oLmNvbSIsImZyb20tb2suY29tIiwiZnJvbS1vci5jb20iLCJmcm9tLXBhLmNvbSIsImZyb20tcHIuY29tIiwi''@;'; put 'put ''ZnJvbS1yaS5jb20iLCJmcm9tLXNjLmNvbSIsImZyb20tc2QuY29tIiwiZnJvbS10bi5jb20iLCJmcm9tLXR4LmNvbSIsImZyb20tdXQuY29tIiwiZnJvbS12YS5jb20iLCJmcm9tLXZ0LmNvbSIsImZyb20td2EuY29tIiwiZnJvbS13aS5jb20iLCJmcm9tLXd2LmNvbSIsImZyb20td3kuY29t''@;'; put 'put ''IiwiZnRwYWNjZXNzLmNjIiwiZnVldHRlcnRkYXNuZXR6LmRlIiwiZ2FtZS1ob3N0Lm9yZyIsImdhbWUtc2VydmVyLmNjIiwiZ2V0bXlpcC5jb20iLCJnZXRzLWl0Lm5ldCIsImdvLmR5bmRucy5vcmciLCJnb3RkbnMuY29tIiwiZ290ZG5zLm9yZyIsImdyb2tzLXRoZS5pbmZvIiwiZ3Jva3Mt''@;'; put 'put ''dGhpcy5pbmZvIiwiaGFtLXJhZGlvLW9wLm5ldCIsImhlcmUtZm9yLW1vcmUuaW5mbyIsImhvYmJ5LXNpdGUuY29tIiwiaG9iYnktc2l0ZS5vcmciLCJob21lLmR5bmRucy5vcmciLCJob21lZG5zLm9yZyIsImhvbWVmdHAubmV0IiwiaG9tZWZ0cC5vcmciLCJob21laXAubmV0IiwiaG9tZWxp''@;'; put 'put ''bnV4LmNvbSIsImhvbWVsaW51eC5uZXQiLCJob21lbGludXgub3JnIiwiaG9tZXVuaXguY29tIiwiaG9tZXVuaXgubmV0IiwiaG9tZXVuaXgub3JnIiwiaWFtYWxsYW1hLmNvbSIsImluLXRoZS1iYW5kLm5ldCIsImlzLWEtYW5hcmNoaXN0LmNvbSIsImlzLWEtYmxvZ2dlci5jb20iLCJpcy1h''@;'; put 'put ''LWJvb2trZWVwZXIuY29tIiwiaXMtYS1icnVpbnNmYW4ub3JnIiwiaXMtYS1idWxscy1mYW4uY29tIiwiaXMtYS1jYW5kaWRhdGUub3JnIiwiaXMtYS1jYXRlcmVyLmNvbSIsImlzLWEtY2VsdGljc2Zhbi5vcmciLCJpcy1hLWNoZWYuY29tIiwiaXMtYS1jaGVmLm5ldCIsImlzLWEtY2hlZi5v''@;'; put 'put ''cmciLCJpcy1hLWNvbnNlcnZhdGl2ZS5jb20iLCJpcy1hLWNwYS5jb20iLCJpcy1hLWN1YmljbGUtc2xhdmUuY29tIiwiaXMtYS1kZW1vY3JhdC5jb20iLCJpcy1hLWRlc2lnbmVyLmNvbSIsImlzLWEtZG9jdG9yLmNvbSIsImlzLWEtZmluYW5jaWFsYWR2aXNvci5jb20iLCJpcy1hLWdlZWsu''@;'; put 'put ''Y29tIiwiaXMtYS1nZWVrLm5ldCIsImlzLWEtZ2Vlay5vcmciLCJpcy1hLWdyZWVuLmNvbSIsImlzLWEtZ3VydS5jb20iLCJpcy1hLWhhcmQtd29ya2VyLmNvbSIsImlzLWEtaHVudGVyLmNvbSIsImlzLWEta25pZ2h0Lm9yZyIsImlzLWEtbGFuZHNjYXBlci5jb20iLCJpcy1hLWxhd3llci5j''@;'; put 'put ''b20iLCJpcy1hLWxpYmVyYWwuY29tIiwiaXMtYS1saWJlcnRhcmlhbi5jb20iLCJpcy1hLWxpbnV4LXVzZXIub3JnIiwiaXMtYS1sbGFtYS5jb20iLCJpcy1hLW11c2ljaWFuLmNvbSIsImlzLWEtbmFzY2FyZmFuLmNvbSIsImlzLWEtbnVyc2UuY29tIiwiaXMtYS1wYWludGVyLmNvbSIsImlz''@;'; put 'put ''LWEtcGF0c2Zhbi5vcmciLCJpcy1hLXBlcnNvbmFsdHJhaW5lci5jb20iLCJpcy1hLXBob3RvZ3JhcGhlci5jb20iLCJpcy1hLXBsYXllci5jb20iLCJpcy1hLXJlcHVibGljYW4uY29tIiwiaXMtYS1yb2Nrc3Rhci5jb20iLCJpcy1hLXNvY2lhbGlzdC5jb20iLCJpcy1hLXNveGZhbi5vcmci''@;'; put 'put ''LCJpcy1hLXN0dWRlbnQuY29tIiwiaXMtYS10ZWFjaGVyLmNvbSIsImlzLWEtdGVjaGllLmNvbSIsImlzLWEtdGhlcmFwaXN0LmNvbSIsImlzLWFuLWFjY291bnRhbnQuY29tIiwiaXMtYW4tYWN0b3IuY29tIiwiaXMtYW4tYWN0cmVzcy5jb20iLCJpcy1hbi1hbmFyY2hpc3QuY29tIiwiaXMt''@;'; put 'put ''YW4tYXJ0aXN0LmNvbSIsImlzLWFuLWVuZ2luZWVyLmNvbSIsImlzLWFuLWVudGVydGFpbmVyLmNvbSIsImlzLWJ5LnVzIiwiaXMtY2VydGlmaWVkLmNvbSIsImlzLWZvdW5kLm9yZyIsImlzLWdvbmUuY29tIiwiaXMtaW50by1hbmltZS5jb20iLCJpcy1pbnRvLWNhcnMuY29tIiwiaXMtaW50''@;'; put 'put ''by1jYXJ0b29ucy5jb20iLCJpcy1pbnRvLWdhbWVzLmNvbSIsImlzLWxlZXQuY29tIiwiaXMtbG9zdC5vcmciLCJpcy1ub3QtY2VydGlmaWVkLmNvbSIsImlzLXNhdmVkLm9yZyIsImlzLXNsaWNrLmNvbSIsImlzLXViZXJsZWV0LmNvbSIsImlzLXZlcnktYmFkLm9yZyIsImlzLXZlcnktZXZp''@;'; put 'put ''bC5vcmciLCJpcy12ZXJ5LWdvb2Qub3JnIiwiaXMtdmVyeS1uaWNlLm9yZyIsImlzLXZlcnktc3dlZXQub3JnIiwiaXMtd2l0aC10aGViYW5kLmNvbSIsImlzYS1nZWVrLmNvbSIsImlzYS1nZWVrLm5ldCIsImlzYS1nZWVrLm9yZyIsImlzYS1ob2NrZXludXQuY29tIiwiaXNzbWFydGVydGhh''@;'; put 'put ''bnlvdS5jb20iLCJpc3RlaW5nZWVrLmRlIiwiaXN0bWVpbi5kZSIsImtpY2tzLWFzcy5uZXQiLCJraWNrcy1hc3Mub3JnIiwia25vd3NpdGFsbC5pbmZvIiwibGFuZC00LXNhbGUudXMiLCJsZWJ0aW1uZXR6LmRlIiwibGVpdHVuZ3Nlbi5kZSIsImxpa2VzLXBpZS5jb20iLCJsaWtlc2NhbmR5''@;'; put 'put ''LmNvbSIsIm1lcnNlaW5lLm51IiwibWluZS5udSIsIm1pc2NvbmZ1c2VkLm9yZyIsIm15cGV0cy53cyIsIm15cGhvdG9zLmNjIiwibmVhdC11cmwuY29tIiwib2ZmaWNlLW9uLXRoZS5uZXQiLCJvbi10aGUtd2ViLnR2IiwicG9kem9uZS5uZXQiLCJwb2R6b25lLm9yZyIsInJlYWRteWJsb2cu''@;'; put 'put ''b3JnIiwic2F2ZXMtdGhlLXdoYWxlcy5jb20iLCJzY3JhcHBlci1zaXRlLm5ldCIsInNjcmFwcGluZy5jYyIsInNlbGZpcC5iaXoiLCJzZWxmaXAuY29tIiwic2VsZmlwLmluZm8iLCJzZWxmaXAubmV0Iiwic2VsZmlwLm9yZyIsInNlbGxzLWZvci1sZXNzLmNvbSIsInNlbGxzLWZvci11LmNv''@;'; put 'put ''bSIsInNlbGxzLWl0Lm5ldCIsInNlbGxzeW91cmhvbWUub3JnIiwic2VydmViYnMuY29tIiwic2VydmViYnMubmV0Iiwic2VydmViYnMub3JnIiwic2VydmVmdHAubmV0Iiwic2VydmVmdHAub3JnIiwic2VydmVnYW1lLm9yZyIsInNoYWNrbmV0Lm51Iiwic2ltcGxlLXVybC5jb20iLCJzcGFj''@;'; put 'put ''ZS10by1yZW50LmNvbSIsInN0dWZmLTQtc2FsZS5vcmciLCJzdHVmZi00LXNhbGUudXMiLCJ0ZWFjaGVzLXlvZ2EuY29tIiwidGhydWhlcmUubmV0IiwidHJhZXVtdGdlcmFkZS5kZSIsIndlYmhvcC5iaXoiLCJ3ZWJob3AuaW5mbyIsIndlYmhvcC5uZXQiLCJ3ZWJob3Aub3JnIiwid29yc2Ut''@;'; put 'put ''dGhhbi50diIsIndyaXRlc3RoaXNibG9nLmNvbSIsImRkbnNzLmRlIiwiZHluLmRkbnNzLmRlIiwiZHluZG5zLmRkbnNzLmRlIiwiZHluZG5zMS5kZSIsImR5bi1pcDI0LmRlIiwiaG9tZS13ZWJzZXJ2ZXIuZGUiLCJkeW4uaG9tZS13ZWJzZXJ2ZXIuZGUiLCJteWhvbWUtc2VydmVyLmRlIiwi''@;'; put 'put ''ZGRuc3Mub3JnIiwiZGVmaW5pbWEubmV0IiwiZGVmaW5pbWEuaW8iLCJvbmRpZ2l0YWxvY2Vhbi5hcHAiLCIqLmRpZ2l0YWxvY2VhbnNwYWNlcy5jb20iLCJiY2kuZG5zdHJhY2UucHJvIiwiZGRuc2ZyZWUuY29tIiwiZGRuc2dlZWsuY29tIiwiZ2lpemUuY29tIiwiZ2xlZXplLmNvbSIsImtv''@;'; put 'put ''em93LmNvbSIsImxvc2V5b3VyaXAuY29tIiwib29ndXkuY29tIiwidGhld29ya3BjLmNvbSIsImNhc2FjYW0ubmV0IiwiZHludS5uZXQiLCJhY2Nlc3NjYW0ub3JnIiwiY2FtZHZyLm9yZyIsImZyZWVkZG5zLm9yZyIsIm15d2lyZS5vcmciLCJ3ZWJyZWRpcmVjdC5vcmciLCJteWRkbnMucm9j''@;'; put 'put ''a3MiLCJibG9nc2l0ZS54eXoiLCJkeW52Ni5uZXQiLCJlNC5jeiIsImVlcm8ub25saW5lIiwiZWVyby1zdGFnZS5vbmxpbmUiLCJlbGVtZW50b3IuY2xvdWQiLCJlbGVtZW50b3IuY29vbCIsImVuLXJvb3QuZnIiLCJteXR1bGVhcC5jb20iLCJ0dWxlYXAtcGFydG5lcnMuY29tIiwiZW5jci5h''@;'; put 'put ''cHAiLCJlbmNvcmVhcGkuY29tIiwib25yZWQub25lIiwic3RhZ2luZy5vbnJlZC5vbmUiLCJldS5lbmNvd2F5LmNsb3VkIiwiZXUub3JnIiwiYWwuZXUub3JnIiwiYXNzby5ldS5vcmciLCJhdC5ldS5vcmciLCJhdS5ldS5vcmciLCJiZS5ldS5vcmciLCJiZy5ldS5vcmciLCJjYS5ldS5vcmci''@;'; put 'put ''LCJjZC5ldS5vcmciLCJjaC5ldS5vcmciLCJjbi5ldS5vcmciLCJjeS5ldS5vcmciLCJjei5ldS5vcmciLCJkZS5ldS5vcmciLCJkay5ldS5vcmciLCJlZHUuZXUub3JnIiwiZWUuZXUub3JnIiwiZXMuZXUub3JnIiwiZmkuZXUub3JnIiwiZnIuZXUub3JnIiwiZ3IuZXUub3JnIiwiaHIuZXUu''@;'; put 'put ''b3JnIiwiaHUuZXUub3JnIiwiaWUuZXUub3JnIiwiaWwuZXUub3JnIiwiaW4uZXUub3JnIiwiaW50LmV1Lm9yZyIsImlzLmV1Lm9yZyIsIml0LmV1Lm9yZyIsImpwLmV1Lm9yZyIsImtyLmV1Lm9yZyIsImx0LmV1Lm9yZyIsImx1LmV1Lm9yZyIsImx2LmV1Lm9yZyIsIm1jLmV1Lm9yZyIsIm1l''@;'; put 'put ''LmV1Lm9yZyIsIm1rLmV1Lm9yZyIsIm10LmV1Lm9yZyIsIm15LmV1Lm9yZyIsIm5ldC5ldS5vcmciLCJuZy5ldS5vcmciLCJubC5ldS5vcmciLCJuby5ldS5vcmciLCJuei5ldS5vcmciLCJwYXJpcy5ldS5vcmciLCJwbC5ldS5vcmciLCJwdC5ldS5vcmciLCJxLWEuZXUub3JnIiwicm8uZXUu''@;'; put 'put ''b3JnIiwicnUuZXUub3JnIiwic2UuZXUub3JnIiwic2kuZXUub3JnIiwic2suZXUub3JnIiwidHIuZXUub3JnIiwidWsuZXUub3JnIiwidXMuZXUub3JnIiwiZXVyb2Rpci5ydSIsImV1LTEuZXZlbm5vZGUuY29tIiwiZXUtMi5ldmVubm9kZS5jb20iLCJldS0zLmV2ZW5ub2RlLmNvbSIsImV1''@;'; put 'put ''LTQuZXZlbm5vZGUuY29tIiwidXMtMS5ldmVubm9kZS5jb20iLCJ1cy0yLmV2ZW5ub2RlLmNvbSIsInVzLTMuZXZlbm5vZGUuY29tIiwidXMtNC5ldmVubm9kZS5jb20iLCJ0d21haWwuY2MiLCJ0d21haWwubmV0IiwidHdtYWlsLm9yZyIsIm15bWFpbGVyLmNvbS50dyIsInVybC50dyIsIm9u''@;'; put 'put ''ZmFicmljYS5jb20iLCJhcHBzLmZic2J4LmNvbSIsInJ1Lm5ldCIsImFkeWdleWEucnUiLCJiYXNoa2lyaWEucnUiLCJiaXIucnUiLCJjYmcucnUiLCJjb20ucnUiLCJkYWdlc3Rhbi5ydSIsImdyb3pueS5ydSIsImthbG15a2lhLnJ1Iiwia3VzdGFuYWkucnUiLCJtYXJpbmUucnUiLCJtb3Jk''@;'; put 'put ''b3ZpYS5ydSIsIm1zay5ydSIsIm15dGlzLnJ1IiwibmFsY2hpay5ydSIsIm5vdi5ydSIsInB5YXRpZ29yc2sucnUiLCJzcGIucnUiLCJ2bGFkaWthdmthei5ydSIsInZsYWRpbWlyLnJ1IiwiYWJraGF6aWEuc3UiLCJhZHlnZXlhLnN1IiwiYWt0eXViaW5zay5zdSIsImFya2hhbmdlbHNrLnN1''@;'; put 'put ''IiwiYXJtZW5pYS5zdSIsImFzaGdhYmFkLnN1IiwiYXplcmJhaWphbi5zdSIsImJhbGFzaG92LnN1IiwiYmFzaGtpcmlhLnN1IiwiYnJ5YW5zay5zdSIsImJ1a2hhcmEuc3UiLCJjaGlta2VudC5zdSIsImRhZ2VzdGFuLnN1IiwiZWFzdC1rYXpha2hzdGFuLnN1IiwiZXhuZXQuc3UiLCJnZW9y''@;'; put 'put ''Z2lhLnN1IiwiZ3Jvem55LnN1IiwiaXZhbm92by5zdSIsImphbWJ5bC5zdSIsImthbG15a2lhLnN1Iiwia2FsdWdhLnN1Iiwia2FyYWNvbC5zdSIsImthcmFnYW5kYS5zdSIsImthcmVsaWEuc3UiLCJraGFrYXNzaWEuc3UiLCJrcmFzbm9kYXIuc3UiLCJrdXJnYW4uc3UiLCJrdXN0YW5haS5z''@;'; put 'put ''dSIsImxlbnVnLnN1IiwibWFuZ3lzaGxhay5zdSIsIm1vcmRvdmlhLnN1IiwibXNrLnN1IiwibXVybWFuc2suc3UiLCJuYWxjaGlrLnN1IiwibmF2b2kuc3UiLCJub3J0aC1rYXpha2hzdGFuLnN1Iiwibm92LnN1Iiwib2JuaW5zay5zdSIsInBlbnphLnN1IiwicG9rcm92c2suc3UiLCJzb2No''@;'; put 'put ''aS5zdSIsInNwYi5zdSIsInRhc2hrZW50LnN1IiwidGVybWV6LnN1IiwidG9nbGlhdHRpLnN1IiwidHJvaXRzay5zdSIsInRzZWxpbm9ncmFkLnN1IiwidHVsYS5zdSIsInR1dmEuc3UiLCJ2bGFkaWthdmthei5zdSIsInZsYWRpbWlyLnN1Iiwidm9sb2dkYS5zdSIsImNoYW5uZWxzZHZyLm5l''@;'; put 'put ''dCIsInUuY2hhbm5lbHNkdnIubmV0IiwiZWRnZWNvbXB1dGUuYXBwIiwiZmFzdGx5LXRlcnJhcml1bS5jb20iLCJmYXN0bHlsYi5uZXQiLCJtYXAuZmFzdGx5bGIubmV0IiwiZnJlZXRscy5mYXN0bHkubmV0IiwibWFwLmZhc3RseS5uZXQiLCJhLnByb2QuZmFzdGx5Lm5ldCIsImdsb2JhbC5w''@;'; put 'put ''cm9kLmZhc3RseS5uZXQiLCJhLnNzbC5mYXN0bHkubmV0IiwiYi5zc2wuZmFzdGx5Lm5ldCIsImdsb2JhbC5zc2wuZmFzdGx5Lm5ldCIsImZhc3R2cHMtc2VydmVyLmNvbSIsImZhc3R2cHMuaG9zdCIsIm15ZmFzdC5ob3N0IiwiZmFzdHZwcy5zaXRlIiwibXlmYXN0LnNwYWNlIiwiZmVkb3Jh''@;'; put 'put ''aW5mcmFjbG91ZC5vcmciLCJmZWRvcmFwZW9wbGUub3JnIiwiY2xvdWQuZmVkb3JhcHJvamVjdC5vcmciLCJhcHAub3MuZmVkb3JhcHJvamVjdC5vcmciLCJhcHAub3Muc3RnLmZlZG9yYXByb2plY3Qub3JnIiwiY29ubi51ayIsImNvcHJvLnVrIiwiaG9zcC51ayIsIm15ZG9iaXNzLmNvbSIs''@;'; put 'put ''ImZoLW11ZW5zdGVyLmlvIiwiZmlsZWdlYXIubWUiLCJmaWxlZ2Vhci1hdS5tZSIsImZpbGVnZWFyLWRlLm1lIiwiZmlsZWdlYXItZ2IubWUiLCJmaWxlZ2Vhci1pZS5tZSIsImZpbGVnZWFyLWpwLm1lIiwiZmlsZWdlYXItc2cubWUiLCJmaXJlYmFzZWFwcC5jb20iLCJmaXJld2ViLmFwcCIs''@;'; put 'put ''ImZsYXAuaWQiLCJvbmZsYXNoZHJpdmUuYXBwIiwiZmxkcnYuY29tIiwiZmx5LmRldiIsImVkZ2VhcHAubmV0Iiwic2h3LmlvIiwiZmx5bm5ob3N0aW5nLm5ldCIsImZvcmdlYmxvY2tzLmNvbSIsImlkLmZvcmdlcm9jay5pbyIsImZyYW1lci5hcHAiLCJmcmFtZXJjYW52YXMuY29tIiwiKi5m''@;'; put 'put ''cnVza3kuZGUiLCJyYXZwYWdlLmNvLmlsIiwiMGUudmMiLCJmcmVlYm94LW9zLmNvbSIsImZyZWVib3hvcy5jb20iLCJmYngtb3MuZnIiLCJmYnhvcy5mciIsImZyZWVib3gtb3MuZnIiLCJmcmVlYm94b3MuZnIiLCJmcmVlZGVza3RvcC5vcmciLCJmcmVlbXlpcC5jb20iLCJ3aWVuLmZ1bmtm''@;'; put 'put ''ZXVlci5hdCIsIiouZnV0dXJlY21zLmF0IiwiKi5leC5mdXR1cmVjbXMuYXQiLCIqLmluLmZ1dHVyZWNtcy5hdCIsImZ1dHVyZWhvc3RpbmcuYXQiLCJmdXR1cmVtYWlsaW5nLmF0IiwiKi5leC5vcnRzaW5mby5hdCIsIioua3VuZGVuLm9ydHNpbmZvLmF0IiwiKi5zdGF0aWNzLmNsb3VkIiwi''@;'; put 'put ''aW5kZXBlbmRlbnQtY29tbWlzc2lvbi51ayIsImluZGVwZW5kZW50LWlucXVlc3QudWsiLCJpbmRlcGVuZGVudC1pbnF1aXJ5LnVrIiwiaW5kZXBlbmRlbnQtcGFuZWwudWsiLCJpbmRlcGVuZGVudC1yZXZpZXcudWsiLCJwdWJsaWMtaW5xdWlyeS51ayIsInJveWFsLWNvbW1pc3Npb24udWsi''@;'; put 'put ''LCJjYW1wYWlnbi5nb3YudWsiLCJzZXJ2aWNlLmdvdi51ayIsImFwaS5nb3YudWsiLCJnZWhpcm4ubmUuanAiLCJ1c2VyY29udGVudC5qcCIsImdlbnRhcHBzLmNvbSIsImdlbnRsZW50YXBpcy5jb20iLCJsYWIubXMiLCJjZG4tZWRnZXMubmV0IiwiZ2hvc3QuaW8iLCJnc2ouYnoiLCJnaXRo''@;'; put 'put ''dWJ1c2VyY29udGVudC5jb20iLCJnaXRodWJwcmV2aWV3LmRldiIsImdpdGh1Yi5pbyIsImdpdGxhYi5pbyIsImdpdGFwcC5zaSIsImdpdHBhZ2Uuc2kiLCJnbGl0Y2gubWUiLCJub2cuY29tbXVuaXR5IiwiY28ucm8iLCJzaG9wLnJvIiwibG9saXBvcC5pbyIsImFuZ3J5LmpwIiwiYmFieWJs''@;'; put 'put ''dWUuanAiLCJiYWJ5bWlsay5qcCIsImJhY2tkcm9wLmpwIiwiYmFtYmluYS5qcCIsImJpdHRlci5qcCIsImJsdXNoLmpwIiwiYm9vLmpwIiwiYm95LmpwIiwiYm95ZnJpZW5kLmpwIiwiYnV0LmpwIiwiY2FuZHlwb3AuanAiLCJjYXBvby5qcCIsImNhdGZvb2QuanAiLCJjaGVhcC5qcCIsImNo''@;'; put 'put ''aWNhcHBhLmpwIiwiY2hpbGxvdXQuanAiLCJjaGlwcy5qcCIsImNob3dkZXIuanAiLCJjaHUuanAiLCJjaWFvLmpwIiwiY29jb3R0ZS5qcCIsImNvb2xibG9nLmpwIiwiY3Jhbmt5LmpwIiwiY3V0ZWdpcmwuanAiLCJkYWEuanAiLCJkZWNhLmpwIiwiZGVjaS5qcCIsImRpZ2ljay5qcCIsImVn''@;'; put 'put ''b2lzbS5qcCIsImZha2VmdXIuanAiLCJmZW0uanAiLCJmbGllci5qcCIsImZsb3BweS5qcCIsImZvb2wuanAiLCJmcmVuY2hraXNzLmpwIiwiZ2lybGZyaWVuZC5qcCIsImdpcmx5LmpwIiwiZ2xvb215LmpwIiwiZ29ubmEuanAiLCJncmVhdGVyLmpwIiwiaGFjY2EuanAiLCJoZWF2eS5qcCIs''@;'; put 'put ''Imhlci5qcCIsImhpaG8uanAiLCJoaXBweS5qcCIsImhvbHkuanAiLCJodW5ncnkuanAiLCJpY3VydXMuanAiLCJpdGlnby5qcCIsImplbGx5YmVhbi5qcCIsImtpa2lyYXJhLmpwIiwia2lsbC5qcCIsImtpbG8uanAiLCJrdXJvbi5qcCIsImxpdHRsZXN0YXIuanAiLCJsb2xpcG9wbWMuanAi''@;'; put 'put ''LCJsb2xpdGFwdW5rLmpwIiwibG9tby5qcCIsImxvdmVwb3AuanAiLCJsb3Zlc2ljay5qcCIsIm1haW4uanAiLCJtb2RzLmpwIiwibW9uZC5qcCIsIm1vbmdvbGlhbi5qcCIsIm1vby5qcCIsIm5hbWFzdGUuanAiLCJuaWtpdGEuanAiLCJub2J1c2hpLmpwIiwibm9vci5qcCIsIm9vcHMuanAi''@;'; put 'put ''LCJwYXJhbGxlbC5qcCIsInBhcmFzaXRlLmpwIiwicGVjb3JpLmpwIiwicGVld2VlLmpwIiwicGVubmUuanAiLCJwZXBwZXIuanAiLCJwZXJtYS5qcCIsInBpZ2JvYXQuanAiLCJwaW5va28uanAiLCJwdW55dS5qcCIsInB1cHUuanAiLCJwdXNzeWNhdC5qcCIsInB5YS5qcCIsInJhaW5kcm9w''@;'; put 'put ''LmpwIiwicmVhZHltYWRlLmpwIiwic2FkaXN0LmpwIiwic2Nob29sYnVzLmpwIiwic2VjcmV0LmpwIiwic3RhYmEuanAiLCJzdHJpcHBlci5qcCIsInN1Yi5qcCIsInN1bm55ZGF5LmpwIiwidGhpY2suanAiLCJ0b25rb3RzdS5qcCIsInVuZGVyLmpwIiwidXBwZXIuanAiLCJ2ZWx2ZXQuanAi''@;'; put 'put ''LCJ2ZXJzZS5qcCIsInZlcnN1cy5qcCIsInZpdmlhbi5qcCIsIndhdHNvbi5qcCIsIndlYmxpa2UuanAiLCJ3aGl0ZXNub3cuanAiLCJ6b21iaWUuanAiLCJoZXRlbWwubmV0IiwiY2xvdWRhcHBzLmRpZ2l0YWwiLCJsb25kb24uY2xvdWRhcHBzLmRpZ2l0YWwiLCJweW1udC51ayIsImhvbWVv''@;'; put 'put ''ZmZpY2UuZ292LnVrIiwicm8uaW0iLCJnb2lwLmRlIiwicnVuLmFwcCIsImEucnVuLmFwcCIsIndlYi5hcHAiLCIqLjBlbW0uY29tIiwiYXBwc3BvdC5jb20iLCIqLnIuYXBwc3BvdC5jb20iLCJjb2Rlc3BvdC5jb20iLCJnb29nbGVhcGlzLmNvbSIsImdvb2dsZWNvZGUuY29tIiwicGFnZXNw''@;'; put 'put ''ZWVkbW9iaWxpemVyLmNvbSIsInB1Ymxpc2hwcm94eS5jb20iLCJ3aXRoZ29vZ2xlLmNvbSIsIndpdGh5b3V0dWJlLmNvbSIsIiouZ2F0ZXdheS5kZXYiLCJjbG91ZC5nb29nIiwidHJhbnNsYXRlLmdvb2ciLCIqLnVzZXJjb250ZW50Lmdvb2ciLCJjbG91ZGZ1bmN0aW9ucy5uZXQiLCJibG9n''@;'; put 'put ''c3BvdC5hZSIsImJsb2dzcG90LmFsIiwiYmxvZ3Nwb3QuYW0iLCJibG9nc3BvdC5iYSIsImJsb2dzcG90LmJlIiwiYmxvZ3Nwb3QuYmciLCJibG9nc3BvdC5iaiIsImJsb2dzcG90LmNhIiwiYmxvZ3Nwb3QuY2YiLCJibG9nc3BvdC5jaCIsImJsb2dzcG90LmNsIiwiYmxvZ3Nwb3QuY28uYXQi''@;'; put 'put ''LCJibG9nc3BvdC5jby5pZCIsImJsb2dzcG90LmNvLmlsIiwiYmxvZ3Nwb3QuY28ua2UiLCJibG9nc3BvdC5jby5ueiIsImJsb2dzcG90LmNvLnVrIiwiYmxvZ3Nwb3QuY28uemEiLCJibG9nc3BvdC5jb20iLCJibG9nc3BvdC5jb20uYXIiLCJibG9nc3BvdC5jb20uYXUiLCJibG9nc3BvdC5j''@;'; put 'put ''b20uYnIiLCJibG9nc3BvdC5jb20uYnkiLCJibG9nc3BvdC5jb20uY28iLCJibG9nc3BvdC5jb20uY3kiLCJibG9nc3BvdC5jb20uZWUiLCJibG9nc3BvdC5jb20uZWciLCJibG9nc3BvdC5jb20uZXMiLCJibG9nc3BvdC5jb20ubXQiLCJibG9nc3BvdC5jb20ubmciLCJibG9nc3BvdC5jb20u''@;'; put 'put ''dHIiLCJibG9nc3BvdC5jb20udXkiLCJibG9nc3BvdC5jdiIsImJsb2dzcG90LmN6IiwiYmxvZ3Nwb3QuZGUiLCJibG9nc3BvdC5kayIsImJsb2dzcG90LmZpIiwiYmxvZ3Nwb3QuZnIiLCJibG9nc3BvdC5nciIsImJsb2dzcG90LmhrIiwiYmxvZ3Nwb3QuaHIiLCJibG9nc3BvdC5odSIsImJs''@;'; put 'put ''b2dzcG90LmllIiwiYmxvZ3Nwb3QuaW4iLCJibG9nc3BvdC5pcyIsImJsb2dzcG90Lml0IiwiYmxvZ3Nwb3QuanAiLCJibG9nc3BvdC5rciIsImJsb2dzcG90LmxpIiwiYmxvZ3Nwb3QubHQiLCJibG9nc3BvdC5sdSIsImJsb2dzcG90Lm1kIiwiYmxvZ3Nwb3QubWsiLCJibG9nc3BvdC5tciIs''@;'; put 'put ''ImJsb2dzcG90Lm14IiwiYmxvZ3Nwb3QubXkiLCJibG9nc3BvdC5ubCIsImJsb2dzcG90Lm5vIiwiYmxvZ3Nwb3QucGUiLCJibG9nc3BvdC5wdCIsImJsb2dzcG90LnFhIiwiYmxvZ3Nwb3QucmUiLCJibG9nc3BvdC5ybyIsImJsb2dzcG90LnJzIiwiYmxvZ3Nwb3QucnUiLCJibG9nc3BvdC5z''@;'; put 'put ''ZSIsImJsb2dzcG90LnNnIiwiYmxvZ3Nwb3Quc2kiLCJibG9nc3BvdC5zayIsImJsb2dzcG90LnNuIiwiYmxvZ3Nwb3QudGQiLCJibG9nc3BvdC50dyIsImJsb2dzcG90LnVnIiwiYmxvZ3Nwb3Qudm4iLCJnb3VwaWxlLmZyIiwiZ292Lm5sIiwiYXdzbXBwbC5jb20iLCJnXHhmY25zdGlnYmVz''@;'; put 'put ''dGVsbGVuLmRlIiwiZ1x4ZmNuc3RpZ2xpZWZlcm4uZGUiLCJmaW4uY2kiLCJmcmVlLmhyIiwiY2FhLmxpIiwidWEucnMiLCJjb25mLnNlIiwiaHMuem9uZSIsImhzLnJ1biIsImhhc2hiYW5nLnNoIiwiaGFzdXJhLmFwcCIsImhhc3VyYS1hcHAuaW8iLCJwYWdlcy5pdC5ocy1oZWlsYnJvbm4u''@;'; put 'put ''ZGUiLCJoZXBmb3JnZS5vcmciLCJoZXJva3VhcHAuY29tIiwiaGVyb2t1c3NsLmNvbSIsInJhdmVuZGIuY2xvdWQiLCJteXJhdmVuZGIuY29tIiwicmF2ZW5kYi5jb21tdW5pdHkiLCJyYXZlbmRiLm1lIiwiZGV2ZWxvcG1lbnQucnVuIiwicmF2ZW5kYi5ydW4iLCJob21lc2tsZXAucGwiLCJz''@;'; put 'put ''ZWNhYXMuaGsiLCJob3BsaXguc2hvcCIsIm9yeC5iaXoiLCJiaXouZ2wiLCJjb2wubmciLCJmaXJtLm5nIiwiZ2VuLm5nIiwibHRkLm5nIiwibmdvLm5nIiwiZWR1LnNjb3QiLCJzY2guc28iLCJob3N0eWhvc3RpbmcuaW8iLCJoXHhlNGtraW5lbi5maSIsIioubW9vbnNjYWxlLmlvIiwibW9v''@;'; put 'put ''bnNjYWxlLm5ldCIsImlraS5maSIsImlieG9zLml0IiwiaWxpYWRib3hvcy5pdCIsImltcGVydHJpeGNkbi5jb20iLCJpbXBlcnRyaXguY29tIiwic211c2hjZG4uY29tIiwid3Bob3N0ZWRtYWlsLmNvbSIsIndwbXVjZG4uY29tIiwidGVtcHVybC5ob3N0Iiwid3BtdWRldi5ob3N0IiwiZHlu''@;'; put 'put ''LWJlcmxpbi5kZSIsImluLWJlcmxpbi5kZSIsImluLWJyYi5kZSIsImluLWJ1dHRlci5kZSIsImluLWRzbC5kZSIsImluLWRzbC5uZXQiLCJpbi1kc2wub3JnIiwiaW4tdnBuLmRlIiwiaW4tdnBuLm5ldCIsImluLXZwbi5vcmciLCJiaXouYXQiLCJpbmZvLmF0IiwiaW5mby5jeCIsImFjLmxl''@;'; put 'put ''Zy5iciIsImFsLmxlZy5iciIsImFtLmxlZy5iciIsImFwLmxlZy5iciIsImJhLmxlZy5iciIsImNlLmxlZy5iciIsImRmLmxlZy5iciIsImVzLmxlZy5iciIsImdvLmxlZy5iciIsIm1hLmxlZy5iciIsIm1nLmxlZy5iciIsIm1zLmxlZy5iciIsIm10LmxlZy5iciIsInBhLmxlZy5iciIsInBi''@;'; put 'put ''LmxlZy5iciIsInBlLmxlZy5iciIsInBpLmxlZy5iciIsInByLmxlZy5iciIsInJqLmxlZy5iciIsInJuLmxlZy5iciIsInJvLmxlZy5iciIsInJyLmxlZy5iciIsInJzLmxlZy5iciIsInNjLmxlZy5iciIsInNlLmxlZy5iciIsInNwLmxlZy5iciIsInRvLmxlZy5iciIsInBpeG9saW5vLmNv''@;'; put 'put ''bSIsIm5hNHUucnUiLCJpb3BzeXMuc2UiLCJpcGlmb255Lm5ldCIsImlzZXJ2c2NodWxlLmRlIiwibWVpbi1pc2Vydi5kZSIsInNjaHVscGxhdHRmb3JtLmRlIiwic2NodWxzZXJ2ZXIuZGUiLCJ0ZXN0LWlzZXJ2LmRlIiwiaXNlcnYuZGV2IiwiaW9iYi5uZXQiLCJtZWwuY2xvdWRsZXRzLmNv''@;'; put 'put ''bS5hdSIsImNsb3VkLmludGVyaG9zdHNvbHV0aW9ucy5iZSIsInVzZXJzLnNjYWxlLnZpcnR1YWxjbG91ZC5jb20uYnIiLCJteWNsb3VkLmJ5IiwiYWxwMS5hZS5mbG93LmNoIiwiYXBwZW5naW5lLmZsb3cuY2giLCJlcy0xLmF4YXJuZXQuY2xvdWQiLCJkaWFkZW0uY2xvdWQiLCJ2aXAuamVs''@;'; put 'put ''YXN0aWMuY2xvdWQiLCJqZWxlLmNsb3VkIiwiaXQxLmV1ci5hcnViYS5qZW52LWFydWJhLmNsb3VkIiwiaXQxLmplbnYtYXJ1YmEuY2xvdWQiLCJrZWxpd2ViLmNsb3VkIiwiY3Mua2VsaXdlYi5jbG91ZCIsIm94YS5jbG91ZCIsInRuLm94YS5jbG91ZCIsInVrLm94YS5jbG91ZCIsInByaW1l''@;'; put 'put ''dGVsLmNsb3VkIiwidWsucHJpbWV0ZWwuY2xvdWQiLCJjYS5yZWNsYWltLmNsb3VkIiwidWsucmVjbGFpbS5jbG91ZCIsInVzLnJlY2xhaW0uY2xvdWQiLCJjaC50cmVuZGhvc3RpbmcuY2xvdWQiLCJkZS50cmVuZGhvc3RpbmcuY2xvdWQiLCJqZWxlLmNsdWIiLCJhbXNjb21wdXRlLmNvbSIs''@;'; put 'put ''ImNsaWNrZXRjbG91ZC5jb20iLCJkb3BhYXMuY29tIiwiaGlkb3JhLmNvbSIsInBhYXMuaG9zdGVkLWJ5LXByZXZpZGVyLmNvbSIsInJhZy1jbG91ZC5ob3N0ZXVyLmNvbSIsInJhZy1jbG91ZC1jaC5ob3N0ZXVyLmNvbSIsImpjbG91ZC5pay1zZXJ2ZXIuY29tIiwiamNsb3VkLXZlci1qcGMu''@;'; put 'put ''aWstc2VydmVyLmNvbSIsImRlbW8uamVsYXN0aWMuY29tIiwia2lsYXRpcm9uLmNvbSIsInBhYXMubWFzc2l2ZWdyaWQuY29tIiwiamVkLndhZmFpY2xvdWQuY29tIiwibG9uLndhZmFpY2xvdWQuY29tIiwicnlkLndhZmFpY2xvdWQuY29tIiwiai5zY2FsZWZvcmNlLmNvbS5jeSIsImplbGFz''@;'; put 'put ''dGljLmRvZ2Fkby5ldSIsImZpLmNsb3VkcGxhdGZvcm0uZmkiLCJkZW1vLmRhdGFjZW50ZXIuZmkiLCJwYWFzLmRhdGFjZW50ZXIuZmkiLCJqZWxlLmhvc3QiLCJtaXJjbG91ZC5ob3N0IiwicGFhcy5iZWVieXRlLmlvIiwic2VrZDEuYmVlYnl0ZWFwcC5pbyIsImplbGUuaW8iLCJjbG91ZC1m''@;'; put 'put ''cjEudW5pc3BhY2UuaW8iLCJqYy5uZWVuLml0IiwiY2xvdWQuamVsYXN0aWMub3Blbi50aW0uaXQiLCJqY2xvdWQua3oiLCJ1cGFhcy5rYXp0ZWxlcG9ydC5reiIsImNsb3VkamlmZnkubmV0IiwiZnJhMS1kZS5jbG91ZGppZmZ5Lm5ldCIsIndlc3QxLXVzLmNsb3VkamlmZnkubmV0Iiwiamxz''@;'; put 'put ''LXN0bzEuZWxhc3R4Lm5ldCIsImpscy1zdG8yLmVsYXN0eC5uZXQiLCJqbHMtc3RvMy5lbGFzdHgubmV0IiwiZmFzdHN0YWNrcy5uZXQiLCJmci0xLnBhYXMubWFzc2l2ZWdyaWQubmV0IiwibG9uLTEucGFhcy5tYXNzaXZlZ3JpZC5uZXQiLCJsb24tMi5wYWFzLm1hc3NpdmVncmlkLm5ldCIs''@;'; put 'put ''Im55LTEucGFhcy5tYXNzaXZlZ3JpZC5uZXQiLCJueS0yLnBhYXMubWFzc2l2ZWdyaWQubmV0Iiwic2ctMS5wYWFzLm1hc3NpdmVncmlkLm5ldCIsImplbGFzdGljLnNhdmVpbmNsb3VkLm5ldCIsIm5vcmRlc3RlLWlkYy5zYXZlaW5jbG91ZC5uZXQiLCJqLnNjYWxlZm9yY2UubmV0IiwiamVs''@;'; put 'put ''YXN0aWMudHN1a2FlcnUubmV0Iiwic2RzY2xvdWQucGwiLCJ1bmljbG91ZC5wbCIsIm1pcmNsb3VkLnJ1IiwiamVsYXN0aWMucmVncnVob3N0aW5nLnJ1IiwiZW5zY2FsZWQuc2ciLCJqZWxlLnNpdGUiLCJqZWxhc3RpYy50ZWFtIiwib3JhbmdlY2xvdWQudG4iLCJqLmxheWVyc2hpZnQuY28u''@;'; put 'put ''dWsiLCJwaHguZW5zY2FsZWQudXMiLCJtaXJjbG91ZC51cyIsIm15amluby5ydSIsIiouaG9zdGluZy5teWppbm8ucnUiLCIqLmxhbmRpbmcubXlqaW5vLnJ1IiwiKi5zcGVjdHJ1bS5teWppbm8ucnUiLCIqLnZwcy5teWppbm8ucnUiLCJqb3RlbHVsdS5jbG91ZCIsIioudHJpdG9uLnpvbmUi''@;'; put 'put ''LCIqLmNucy5qb3llbnQuY29tIiwianMub3JnIiwia2Fhcy5nZyIsImtocGxheS5ubCIsImt0aXN0b3J5LmNvbSIsImthcHNpLmZpIiwia2V5bWFjaGluZS5kZSIsImtpbmdob3N0Lm5ldCIsInVuaTUubmV0Iiwia25pZ2h0cG9pbnQuc3lzdGVtcyIsImtvb2Jpbi5ldmVudHMiLCJveWEudG8i''@;'; put 'put ''LCJrdWxldXZlbi5jbG91ZCIsImV6cHJveHkua3VsZXV2ZW4uYmUiLCJjby5rcmQiLCJlZHUua3JkIiwia3JlbGxpYW4ubmV0Iiwid2VidGhpbmdzLmlvIiwiZ2l0LXJlcG9zLmRlIiwibGN1YmUtc2VydmVyLmRlIiwic3ZuLXJlcG9zLmRlIiwibGVhZHBhZ2VzLmNvIiwibHBhZ2VzLmNvIiwi''@;'; put 'put ''bHB1c2VyY29udGVudC5jb20iLCJsZWx1eC5zaXRlIiwiY28uYnVzaW5lc3MiLCJjby5lZHVjYXRpb24iLCJjby5ldmVudHMiLCJjby5maW5hbmNpYWwiLCJjby5uZXR3b3JrIiwiY28ucGxhY2UiLCJjby50ZWNobm9sb2d5IiwiYXBwLmxtcG0uY29tIiwibGlua3lhcmQuY2xvdWQiLCJsaW5r''@;'; put 'put ''eWFyZC1jbG91ZC5jaCIsIm1lbWJlcnMubGlub2RlLmNvbSIsIioubm9kZWJhbGFuY2VyLmxpbm9kZS5jb20iLCIqLmxpbm9kZW9iamVjdHMuY29tIiwiaXAubGlub2RldXNlcmNvbnRlbnQuY29tIiwid2UuYnMiLCIqLnVzZXIubG9jYWxjZXJ0LmRldiIsImxvY2Fsem9uZS54eXoiLCJsb2dp''@;'; put 'put ''bmxpbmUuYXBwIiwibG9naW5saW5lLmRldiIsImxvZ2lubGluZS5pbyIsImxvZ2lubGluZS5zZXJ2aWNlcyIsImxvZ2lubGluZS5zaXRlIiwic2VydmVycy5ydW4iLCJsb2htdXMubWUiLCJrcmFzbmlrLnBsIiwibGVjem5hLnBsIiwibHViYXJ0b3cucGwiLCJsdWJsaW4ucGwiLCJwb25pYXRv''@;'; put 'put ''d2EucGwiLCJzd2lkbmlrLnBsIiwiZ2x1Zy5vcmcudWsiLCJsdWcub3JnLnVrIiwibHVncy5vcmcudWsiLCJiYXJzeS5iZyIsImJhcnN5LmNvLnVrIiwiYmFyc3lvbmxpbmUuY28udWsiLCJiYXJzeWNlbnRlci5jb20iLCJiYXJzeW9ubGluZS5jb20iLCJiYXJzeS5jbHViIiwiYmFyc3kuZGUi''@;'; put 'put ''LCJiYXJzeS5ldSIsImJhcnN5LmluIiwiYmFyc3kuaW5mbyIsImJhcnN5LmlvIiwiYmFyc3kubWUiLCJiYXJzeS5tZW51IiwiYmFyc3kubW9iaSIsImJhcnN5Lm5ldCIsImJhcnN5Lm9ubGluZSIsImJhcnN5Lm9yZyIsImJhcnN5LnBybyIsImJhcnN5LnB1YiIsImJhcnN5LnJvIiwiYmFyc3ku''@;'; put 'put ''c2hvcCIsImJhcnN5LnNpdGUiLCJiYXJzeS5zdXBwb3J0IiwiYmFyc3kudWsiLCIqLm1hZ2VudG9zaXRlLmNsb3VkIiwibWF5Zmlyc3QuaW5mbyIsIm1heWZpcnN0Lm9yZyIsImhiLmNsZG1haWwucnUiLCJjbi52dSIsIm1hemVwbGF5LmNvbSIsIm1jcGUubWUiLCJtY2Rpci5tZSIsIm1jZGly''@;'; put 'put ''LnJ1IiwibWNwcmUucnUiLCJ2cHMubWNkaXIucnUiLCJtZWRpYXRlY2guYnkiLCJtZWRpYXRlY2guZGV2IiwiaHJhLmhlYWx0aCIsIm1pbmlzZXJ2ZXIuY29tIiwibWVtc2V0Lm5ldCIsIm1lc3NlcmxpLmFwcCIsIiouY2xvdWQubWV0YWNlbnRydW0uY3oiLCJjdXN0b20ubWV0YWNlbnRydW0u''@;'; put 'put ''Y3oiLCJmbHQuY2xvdWQubXVuaS5jeiIsInVzci5jbG91ZC5tdW5pLmN6IiwibWV0ZW9yYXBwLmNvbSIsImV1Lm1ldGVvcmFwcC5jb20iLCJjby5wbCIsIiouYXp1cmVjb250YWluZXIuaW8iLCJhenVyZXdlYnNpdGVzLm5ldCIsImF6dXJlLW1vYmlsZS5uZXQiLCJjbG91ZGFwcC5uZXQiLCJh''@;'; put 'put ''enVyZXN0YXRpY2FwcHMubmV0IiwiMS5henVyZXN0YXRpY2FwcHMubmV0IiwiY2VudHJhbHVzLmF6dXJlc3RhdGljYXBwcy5uZXQiLCJlYXN0YXNpYS5henVyZXN0YXRpY2FwcHMubmV0IiwiZWFzdHVzMi5henVyZXN0YXRpY2FwcHMubmV0Iiwid2VzdGV1cm9wZS5henVyZXN0YXRpY2FwcHMu''@;'; put 'put ''bmV0Iiwid2VzdHVzMi5henVyZXN0YXRpY2FwcHMubmV0IiwiY3N4LmNjIiwibWludGVyZS5zaXRlIiwiZm9ydGUuaWQiLCJtb3ppbGxhLWlvdC5vcmciLCJibW9hdHRhY2htZW50cy5vcmciLCJuZXQucnUiLCJvcmcucnUiLCJwcC5ydSIsImhvc3RlZHBpLmNvbSIsImN1c3RvbWVyLm15dGhp''@;'; put 'put ''Yy1iZWFzdHMuY29tIiwiY2FyYWNhbC5teXRoaWMtYmVhc3RzLmNvbSIsImZlbnRpZ2VyLm15dGhpYy1iZWFzdHMuY29tIiwibHlueC5teXRoaWMtYmVhc3RzLmNvbSIsIm9jZWxvdC5teXRoaWMtYmVhc3RzLmNvbSIsIm9uY2lsbGEubXl0aGljLWJlYXN0cy5jb20iLCJvbnphLm15dGhpYy1i''@;'; put 'put ''ZWFzdHMuY29tIiwic3BoaW54Lm15dGhpYy1iZWFzdHMuY29tIiwidnMubXl0aGljLWJlYXN0cy5jb20iLCJ4Lm15dGhpYy1iZWFzdHMuY29tIiwieWFsaS5teXRoaWMtYmVhc3RzLmNvbSIsImN1c3QucmV0cm9zbnViLmNvLnVrIiwidWkubmFidS5jYXNhIiwicG9ueS5jbHViIiwib2YuZmFz''@;'; put 'put ''aGlvbiIsImluLmxvbmRvbiIsIm9mLmxvbmRvbiIsImZyb20ubWFya2V0aW5nIiwid2l0aC5tYXJrZXRpbmciLCJmb3IubWVuIiwicmVwYWlyLm1lbiIsImFuZC5tb20iLCJmb3IubW9tIiwiZm9yLm9uZSIsInVuZGVyLm9uZSIsImZvci5zYWxlIiwidGhhdC53aW4iLCJmcm9tLndvcmsiLCJ0''@;'; put 'put ''by53b3JrIiwiY2xvdWQubm9zcGFtcHJveHkuY29tIiwibmV0bGlmeS5hcHAiLCI0dS5jb20iLCJuZ3Jvay5pbyIsIm5oLXNlcnYuY28udWsiLCJuZnNob3N0LmNvbSIsIiouZGV2ZWxvcGVyLmFwcCIsIm5vb3AuYXBwIiwiKi5ub3J0aGZsYW5rLmFwcCIsIiouYnVpbGQucnVuIiwiKi5jb2Rl''@;'; put 'put ''LnJ1biIsIiouZGF0YWJhc2UucnVuIiwiKi5taWdyYXRpb24ucnVuIiwibm90aWNlYWJsZS5uZXdzIiwiZG5za2luZy5jaCIsIm15cGkuY28iLCJuNHQuY28iLCIwMDF3d3cuY29tIiwiZGRuc2xpdmUuY29tIiwibXlpcGhvc3QuY29tIiwiZm9ydW16LmluZm8iLCIxNi1iLml0IiwiMzItYi5p''@;'; put 'put ''dCIsIjY0LWIuaXQiLCJzb3VuZGNhc3QubWUiLCJ0Y3A0Lm1lIiwiZG5zdXAubmV0IiwiaGljYW0ubmV0Iiwibm93LWRucy5uZXQiLCJvd25pcC5uZXQiLCJ2cG5kbnMubmV0IiwiZHluc2Vydi5vcmciLCJub3ctZG5zLm9yZyIsIng0NDMucHciLCJub3ctZG5zLnRvcCIsIm50ZGxsLnRvcCIs''@;'; put 'put ''ImZyZWVkZG5zLnVzIiwiY3JhZnRpbmcueHl6IiwiemFwdG8ueHl6IiwibnN1cGRhdGUuaW5mbyIsIm5lcmRwb2wub3ZoIiwiYmxvZ3N5dGUuY29tIiwiYnJhc2lsaWEubWUiLCJjYWJsZS1tb2RlbS5vcmciLCJjaXNjb2ZyZWFrLmNvbSIsImNvbGxlZ2VmYW4ub3JnIiwiY291Y2hwb3RhdG9m''@;'; put 'put ''cmllcy5vcmciLCJkYW1uc2VydmVyLmNvbSIsImRkbnMubWUiLCJkaXRjaHlvdXJpcC5jb20iLCJkbnNmb3IubWUiLCJkbnNpc2tpbmt5LmNvbSIsImR2cmNhbS5pbmZvIiwiZHlubnMuY29tIiwiZWF0aW5nLW9yZ2FuaWMubmV0IiwiZmFudGFzeWxlYWd1ZS5jYyIsImdlZWtnYWxheHkuY29t''@;'; put 'put ''IiwiZ29sZmZhbi51cyIsImhlYWx0aC1jYXJlcmVmb3JtLmNvbSIsImhvbWVzZWN1cml0eW1hYy5jb20iLCJob21lc2VjdXJpdHlwYy5jb20iLCJob3B0by5tZSIsImlsb3ZlY29sbGVnZS5pbmZvIiwibG9naW50by5tZSIsIm1sYmZhbi5vcmciLCJtbWFmYW4uYml6IiwibXlhY3RpdmVkaXJl''@;'; put 'put ''Y3RvcnkuY29tIiwibXlkaXNzZW50Lm5ldCIsIm15ZWZmZWN0Lm5ldCIsIm15bWVkaWFwYy5uZXQiLCJteXBzeC5uZXQiLCJteXNlY3VyaXR5Y2FtZXJhLmNvbSIsIm15c2VjdXJpdHljYW1lcmEubmV0IiwibXlzZWN1cml0eWNhbWVyYS5vcmciLCJuZXQtZnJlYWtzLmNvbSIsIm5mbGZhbi5v''@;'; put 'put ''cmciLCJuaGxmYW4ubmV0Iiwibm8taXAuY2EiLCJuby1pcC5jby51ayIsIm5vLWlwLm5ldCIsIm5vaXAudXMiLCJvbnRoZXdpZmkuY29tIiwicGdhZmFuLm5ldCIsInBvaW50MnRoaXMuY29tIiwicG9pbnR0by51cyIsInByaXZhdGl6ZWhlYWx0aGluc3VyYW5jZS5uZXQiLCJxdWlja3N5dGVz''@;'; put 'put ''LmNvbSIsInJlYWQtYm9va3Mub3JnIiwic2VjdXJpdHl0YWN0aWNzLmNvbSIsInNlcnZlZXhjaGFuZ2UuY29tIiwic2VydmVodW1vdXIuY29tIiwic2VydmVwMnAuY29tIiwic2VydmVzYXJjYXNtLmNvbSIsInN0dWZmdG9yZWFkLmNvbSIsInVmY2Zhbi5vcmciLCJ1bnVzdWFscGVyc29uLmNv''@;'; put 'put ''bSIsIndvcmtpc2JvcmluZy5jb20iLCIzdXRpbGl0aWVzLmNvbSIsImJvdW5jZW1lLm5ldCIsImRkbnMubmV0IiwiZGRuc2tpbmcuY29tIiwiZ290ZG5zLmNoIiwiaG9wdG8ub3JnIiwibXlmdHAuYml6IiwibXlmdHAub3JnIiwibXl2bmMuY29tIiwibm8taXAuYml6Iiwibm8taXAuaW5mbyIs''@;'; put 'put ''Im5vLWlwLm9yZyIsIm5vaXAubWUiLCJyZWRpcmVjdG1lLm5ldCIsInNlcnZlYmVlci5jb20iLCJzZXJ2ZWJsb2cubmV0Iiwic2VydmVjb3VudGVyc3RyaWtlLmNvbSIsInNlcnZlZnRwLmNvbSIsInNlcnZlZ2FtZS5jb20iLCJzZXJ2ZWhhbGZsaWZlLmNvbSIsInNlcnZlaHR0cC5jb20iLCJz''@;'; put 'put ''ZXJ2ZWlyYy5jb20iLCJzZXJ2ZW1pbmVjcmFmdC5uZXQiLCJzZXJ2ZW1wMy5jb20iLCJzZXJ2ZXBpY3MuY29tIiwic2VydmVxdWFrZS5jb20iLCJzeXRlcy5uZXQiLCJ3ZWJob3AubWUiLCJ6YXB0by5vcmciLCJzdGFnZS5ub2RlYXJ0LmlvIiwicGNsb3VkLmhvc3QiLCJueWMubW4iLCJzdGF0''@;'; put 'put ''aWMub2JzZXJ2YWJsZXVzZXJjb250ZW50LmNvbSIsImN5YS5nZyIsIm9tZy5sb2wiLCJjbG91ZHljbHVzdGVyLm5ldCIsIm9tbml3ZS5zaXRlIiwic2VydmljZS5vbmUiLCJuaWQuaW8iLCJvcGVuc29jaWFsLnNpdGUiLCJvcGVuY3JhZnQuaG9zdGluZyIsIm9yc2l0ZXMuY29tIiwib3BlcmF1''@;'; put 'put ''bml0ZS5jb20iLCJ0ZWNoLm9yYW5nZSIsImF1dGhnZWFyLXN0YWdpbmcuY29tIiwiYXV0aGdlYXJhcHBzLmNvbSIsInNreWdlYXJhcHAuY29tIiwib3V0c3lzdGVtc2Nsb3VkLmNvbSIsIioud2VicGFhcy5vdmgubmV0IiwiKi5ob3N0aW5nLm92aC5uZXQiLCJvd25wcm92aWRlci5jb20iLCJv''@;'; put 'put ''d24ucG0iLCIqLm93by5jb2RlcyIsIm94LnJzIiwib3kubGMiLCJwZ2ZvZy5jb20iLCJwYWdlZnJvbnRhcHAuY29tIiwicGFnZXhsLmNvbSIsIioucGF5d2hpcmwuY29tIiwiYmFyMC5uZXQiLCJiYXIxLm5ldCIsImJhcjIubmV0IiwicmR2LnRvIiwiYXJ0LnBsIiwiZ2xpd2ljZS5wbCIsImty''@;'; put 'put ''YWtvdy5wbCIsInBvem5hbi5wbCIsIndyb2MucGwiLCJ6YWtvcGFuZS5wbCIsInBhbnRoZW9uc2l0ZS5pbyIsImdvdHBhbnRoZW9uLmNvbSIsIm15cGVwLmxpbmsiLCJwZXJzcGVjdGEuY2xvdWQiLCJsazMucnUiLCJvbi13ZWIuZnIiLCJiYy5wbGF0Zm9ybS5zaCIsImVudC5wbGF0Zm9ybS5z''@;'; put 'put ''aCIsImV1LnBsYXRmb3JtLnNoIiwidXMucGxhdGZvcm0uc2giLCIqLnBsYXRmb3Jtc2guc2l0ZSIsIioudHN0LnNpdGUiLCJwbGF0dGVyLWFwcC5jb20iLCJwbGF0dGVyLWFwcC5kZXYiLCJwbGF0dGVycC51cyIsInBkbnMucGFnZSIsInBsZXNrLnBhZ2UiLCJwbGVza25zLmNvbSIsImR5bjUz''@;'; put 'put ''LmlvIiwib25wb3J0ZXIucnVuIiwiY28uYm4iLCJwb3N0bWFuLWVjaG8uY29tIiwicHN0bW4uaW8iLCJtb2NrLnBzdG1uLmlvIiwiaHR0cGJpbi5vcmciLCJwcmVxdWFsaWZ5bWUudG9kYXkiLCJ4ZW4ucHJnbXIuY29tIiwicHJpdi5hdCIsInBydmN5LnBhZ2UiLCIqLmR3ZWIubGluayIsInBy''@;'; put 'put ''b3RvbmV0LmlvIiwiY2hpcnVyZ2llbnMtZGVudGlzdGVzLWVuLWZyYW5jZS5mciIsImJ5ZW4uc2l0ZSIsInB1YnRscy5vcmciLCJweXRob25hbnl3aGVyZS5jb20iLCJldS5weXRob25hbnl3aGVyZS5jb20iLCJxb3RvLmlvIiwicXVhbGlmaW9hcHAuY29tIiwicWJ1c2VyLmNvbSIsImNsb3Vk''@;'; put 'put ''c2l0ZS5idWlsZGVycyIsImluc3RhbmNlcy5zcGF3bi5jYyIsImluc3RhbnRjbG91ZC5jbiIsInJhcy5ydSIsInFhMi5jb20iLCJxY3guaW8iLCIqLnN5cy5xY3guaW8iLCJkZXYtbXlxbmFwY2xvdWQuY29tIiwiYWxwaGEtbXlxbmFwY2xvdWQuY29tIiwibXlxbmFwY2xvdWQuY29tIiwiKi5x''@;'; put 'put ''dWlwZWxlbWVudHMuY29tIiwidmFwb3IuY2xvdWQiLCJ2YXBvcmNsb3VkLmlvIiwicmFja21hemUuY29tIiwicmFja21hemUubmV0IiwiZy52YnJwbHNieC5pbyIsIioub24tazNzLmlvIiwiKi5vbi1yYW5jaGVyLmNsb3VkIiwiKi5vbi1yaW8uaW8iLCJyZWFkdGhlZG9jcy5pbyIsInJoY2xv''@;'; put 'put ''dWQuY29tIiwiYXBwLnJlbmRlci5jb20iLCJvbnJlbmRlci5jb20iLCJyZXBsLmNvIiwiaWQucmVwbC5jbyIsInJlcGwucnVuIiwicmVzaW5kZXZpY2UuaW8iLCJkZXZpY2VzLnJlc2luc3RhZ2luZy5pbyIsImh6Yy5pbyIsIndlbGxiZWluZ3pvbmUuZXUiLCJ3ZWxsYmVpbmd6b25lLmNvLnVr''@;'; put 'put ''IiwiYWRpbW8uY28udWsiLCJpdGNvdWxkYmV3b3Iuc2UiLCJnaXQtcGFnZXMucml0LmVkdSIsInJvY2t5LnBhZ2UiLCJcdTA0MzFcdTA0MzhcdTA0MzcuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDNhXHUwNDNlXHUwNDNjLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQzYVx1MDQ0MFx1MDQ0''@;'; put 'put ''Ylx1MDQzYy5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0M2NcdTA0MzhcdTA0NDAuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDNjXHUwNDQxXHUwNDNhLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQzZVx1MDQ0MFx1MDQzMy5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0NDFcdTA0MzBcdTA0''@;'; put 'put ''M2NcdTA0MzBcdTA0NDBcdTA0MzAuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDQxXHUwNDNlXHUwNDQ3XHUwNDM4Llx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQ0MVx1MDQzZlx1MDQzMS5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0NGYuXHUwNDQwXHUwNDQzXHUwNDQxIiwiKi5idWlsZGVy''@;'; put 'put ''LmNvZGUuY29tIiwiKi5kZXYtYnVpbGRlci5jb2RlLmNvbSIsIiouc3RnLWJ1aWxkZXIuY29kZS5jb20iLCJzYW5kY2F0cy5pbyIsImxvZ29pcC5kZSIsImxvZ29pcC5jb20iLCJmci1wYXItMS5iYXJlbWV0YWwuc2N3LmNsb3VkIiwiZnItcGFyLTIuYmFyZW1ldGFsLnNjdy5jbG91ZCIsIm5s''@;'; put 'put ''LWFtcy0xLmJhcmVtZXRhbC5zY3cuY2xvdWQiLCJmbmMuZnItcGFyLnNjdy5jbG91ZCIsImZ1bmN0aW9ucy5mbmMuZnItcGFyLnNjdy5jbG91ZCIsIms4cy5mci1wYXIuc2N3LmNsb3VkIiwibm9kZXMuazhzLmZyLXBhci5zY3cuY2xvdWQiLCJzMy5mci1wYXIuc2N3LmNsb3VkIiwiczMtd2Vi''@;'; put 'put ''c2l0ZS5mci1wYXIuc2N3LmNsb3VkIiwid2htLmZyLXBhci5zY3cuY2xvdWQiLCJwcml2Lmluc3RhbmNlcy5zY3cuY2xvdWQiLCJwdWIuaW5zdGFuY2VzLnNjdy5jbG91ZCIsIms4cy5zY3cuY2xvdWQiLCJrOHMubmwtYW1zLnNjdy5jbG91ZCIsIm5vZGVzLms4cy5ubC1hbXMuc2N3LmNsb3Vk''@;'; put 'put ''IiwiczMubmwtYW1zLnNjdy5jbG91ZCIsInMzLXdlYnNpdGUubmwtYW1zLnNjdy5jbG91ZCIsIndobS5ubC1hbXMuc2N3LmNsb3VkIiwiazhzLnBsLXdhdy5zY3cuY2xvdWQiLCJub2Rlcy5rOHMucGwtd2F3LnNjdy5jbG91ZCIsInMzLnBsLXdhdy5zY3cuY2xvdWQiLCJzMy13ZWJzaXRlLnBs''@;'; put 'put ''LXdhdy5zY3cuY2xvdWQiLCJzY2FsZWJvb2suc2N3LmNsb3VkIiwic21hcnRsYWJlbGluZy5zY3cuY2xvdWQiLCJkZWRpYm94LmZyIiwic2Nob2tva2Vrcy5uZXQiLCJnb3Yuc2NvdCIsInNlcnZpY2UuZ292LnNjb3QiLCJzY3J5c2VjLmNvbSIsImZpcmV3YWxsLWdhdGV3YXkuY29tIiwiZmly''@;'; put 'put ''ZXdhbGwtZ2F0ZXdheS5kZSIsIm15LWdhdGV3YXkuZGUiLCJteS1yb3V0ZXIuZGUiLCJzcGRucy5kZSIsInNwZG5zLmV1IiwiZmlyZXdhbGwtZ2F0ZXdheS5uZXQiLCJteS1maXJld2FsbC5vcmciLCJteWZpcmV3YWxsLm9yZyIsInNwZG5zLm9yZyIsInNlaWRhdC5uZXQiLCJzZWxsZnkuc3Rv''@;'; put 'put ''cmUiLCJzZW5zZWVyaW5nLm5ldCIsIm1pbmlzaXRlLm1zIiwibWFnbmV0LnBhZ2UiLCJiaXoudWEiLCJjby51YSIsInBwLnVhIiwic2hpZnRjcnlwdG8uZGV2Iiwic2hpZnRjcnlwdG8uaW8iLCJzaGlmdGVkaXQuaW8iLCJteXNob3BibG9ja3MuY29tIiwibXlzaG9waWZ5LmNvbSIsInNob3Bp''@;'; put 'put ''dHNpdGUuY29tIiwic2hvcHdhcmUuc3RvcmUiLCJtby1zaWVtZW5zLmlvIiwiMWthcHAuY29tIiwiYXBwY2hpemkuY29tIiwiYXBwbGluemkuY29tIiwic2luYWFwcC5jb20iLCJ2aXBzaW5hYXBwLmNvbSIsInNpdGVsZWFmLm5ldCIsImJvdW50eS1mdWxsLmNvbSIsImFscGhhLmJvdW50eS1m''@;'; put 'put ''dWxsLmNvbSIsImJldGEuYm91bnR5LWZ1bGwuY29tIiwic21hbGwtd2ViLm9yZyIsInZwNC5tZSIsInRyeS1zbm93cGxvdy5jb20iLCJzcmh0LnNpdGUiLCJzdGFja2hlcm8tbmV0d29yay5jb20iLCJtdXNpY2lhbi5pbyIsIm5vdmVjb3JlLnNpdGUiLCJzdGF0aWMubGFuZCIsImRldi5zdGF0''@;'; put 'put ''aWMubGFuZCIsInNpdGVzLnN0YXRpYy5sYW5kIiwic3RvcmViYXNlLnN0b3JlIiwidnBzLWhvc3QubmV0IiwiYXRsLmplbGFzdGljLnZwcy1ob3N0Lm5ldCIsIm5qcy5qZWxhc3RpYy52cHMtaG9zdC5uZXQiLCJyaWMuamVsYXN0aWMudnBzLWhvc3QubmV0IiwicGxheXN0YXRpb24tY2xvdWQu''@;'; put 'put ''Y29tIiwiYXBwcy5sYWlyLmlvIiwiKi5zdG9sb3MuaW8iLCJzcGFjZWtpdC5pbyIsImN1c3RvbWVyLnNwZWVkcGFydG5lci5kZSIsIm15c3ByZWFkc2hvcC5hdCIsIm15c3ByZWFkc2hvcC5jb20uYXUiLCJteXNwcmVhZHNob3AuYmUiLCJteXNwcmVhZHNob3AuY2EiLCJteXNwcmVhZHNob3Au''@;'; put 'put ''Y2giLCJteXNwcmVhZHNob3AuY29tIiwibXlzcHJlYWRzaG9wLmRlIiwibXlzcHJlYWRzaG9wLmRrIiwibXlzcHJlYWRzaG9wLmVzIiwibXlzcHJlYWRzaG9wLmZpIiwibXlzcHJlYWRzaG9wLmZyIiwibXlzcHJlYWRzaG9wLmllIiwibXlzcHJlYWRzaG9wLml0IiwibXlzcHJlYWRzaG9wLm5l''@;'; put 'put ''dCIsIm15c3ByZWFkc2hvcC5ubCIsIm15c3ByZWFkc2hvcC5ubyIsIm15c3ByZWFkc2hvcC5wbCIsIm15c3ByZWFkc2hvcC5zZSIsIm15c3ByZWFkc2hvcC5jby51ayIsImFwaS5zdGRsaWIuY29tIiwic3RvcmouZmFybSIsInV0d2VudGUuaW8iLCJzb2Muc3JjZi5uZXQiLCJ1c2VyLnNyY2Yu''@;'; put 'put ''bmV0IiwidGVtcC1kbnMuY29tIiwic3VwYWJhc2UuY28iLCJzdXBhYmFzZS5pbiIsInN1cGFiYXNlLm5ldCIsInN1LnBhYmEuc2UiLCIqLnM1eS5pbyIsIiouc2Vuc2lvc2l0ZS5jbG91ZCIsInN5bmNsb3VkLml0IiwiZHNjbG91ZC5iaXoiLCJkaXJlY3QucXVpY2tjb25uZWN0LmNuIiwiZHNt''@;'; put 'put ''eW5hcy5jb20iLCJmYW1pbHlkcy5jb20iLCJkaXNrc3RhdGlvbi5tZSIsImRzY2xvdWQubWUiLCJpMjM0Lm1lIiwibXlkcy5tZSIsInN5bm9sb2d5Lm1lIiwiZHNjbG91ZC5tb2JpIiwiZHNteW5hcy5uZXQiLCJmYW1pbHlkcy5uZXQiLCJkc215bmFzLm9yZyIsImZhbWlseWRzLm9yZyIsInZw''@;'; put 'put ''bnBsdXMudG8iLCJkaXJlY3QucXVpY2tjb25uZWN0LnRvIiwidGFiaXRvcmRlci5jby5pbCIsInRhaWZ1bi1kbnMuZGUiLCJiZXRhLnRhaWxzY2FsZS5uZXQiLCJ0cy5uZXQiLCJnZGEucGwiLCJnZGFuc2sucGwiLCJnZHluaWEucGwiLCJtZWQucGwiLCJzb3BvdC5wbCIsInNpdGUudGItaG9z''@;'; put 'put ''dGluZy5jb20iLCJlZHVnaXQuaW8iLCJzMy50ZWNraWRzLm9yZyIsInRlbGViaXQuYXBwIiwidGVsZWJpdC5pbyIsIioudGVsZWJpdC54eXoiLCJnd2lkZGxlLmNvLnVrIiwiKi5maXJlbmV0LmNoIiwiKi5zdmMuZmlyZW5ldC5jaCIsInJlc2VydmQuY29tIiwidGhpbmdkdXN0ZGF0YS5jb20i''@;'; put 'put ''LCJjdXN0LmRldi50aGluZ2R1c3QuaW8iLCJjdXN0LmRpc3JlYy50aGluZ2R1c3QuaW8iLCJjdXN0LnByb2QudGhpbmdkdXN0LmlvIiwiY3VzdC50ZXN0aW5nLnRoaW5nZHVzdC5pbyIsInJlc2VydmQuZGV2LnRoaW5nZHVzdC5pbyIsInJlc2VydmQuZGlzcmVjLnRoaW5nZHVzdC5pbyIsInJl''@;'; put 'put ''c2VydmQudGVzdGluZy50aGluZ2R1c3QuaW8iLCJ0aWNrZXRzLmlvIiwiYXJ2by5uZXR3b3JrIiwiYXppbXV0aC5uZXR3b3JrIiwidGxvbi5uZXR3b3JrIiwidG9ycHJvamVjdC5uZXQiLCJwYWdlcy50b3Jwcm9qZWN0Lm5ldCIsImJsb3hjbXMuY29tIiwidG93bm5ld3Mtc3RhZ2luZy5jb20i''@;'; put 'put ''LCJ0Yml0cy5tZSIsIjEyaHAuYXQiLCIyaXguYXQiLCI0bGltYS5hdCIsImxpbWEtY2l0eS5hdCIsIjEyaHAuY2giLCIyaXguY2giLCI0bGltYS5jaCIsImxpbWEtY2l0eS5jaCIsInRyYWZmaWNwbGV4LmNsb3VkIiwiZGUuY29vbCIsIjEyaHAuZGUiLCIyaXguZGUiLCI0bGltYS5kZSIsImxp''@;'; put 'put ''bWEtY2l0eS5kZSIsIjEzMzcucGljdHVyZXMiLCJjbGFuLnJpcCIsImxpbWEtY2l0eS5yb2NrcyIsIndlYnNwYWNlLnJvY2tzIiwibGltYS56b25lIiwiKi50cmFuc3VybC5iZSIsIioudHJhbnN1cmwuZXUiLCIqLnRyYW5zdXJsLm5sIiwic2l0ZS50cmFuc2lwLm1lIiwidHV4ZmFtaWx5Lm9y''@;'; put 'put ''ZyIsImRkLWRucy5kZSIsImRpc2tzdGF0aW9uLmV1IiwiZGlza3N0YXRpb24ub3JnIiwiZHJheS1kbnMuZGUiLCJkcmF5ZG5zLmRlIiwiZHluLXZwbi5kZSIsImR5bnZwbi5kZSIsIm1laW4tdmlnb3IuZGUiLCJteS12aWdvci5kZSIsIm15LXdhbi5kZSIsInN5bm8tZHMuZGUiLCJzeW5vbG9n''@;'; put 'put ''eS1kaXNrc3RhdGlvbi5kZSIsInN5bm9sb2d5LWRzLmRlIiwidHlwZWRyZWFtLmFwcCIsInByby50eXBlZm9ybS5jb20iLCJ1YmVyLnNwYWNlIiwiKi51YmVyc3BhY2UuZGUiLCJoay5jb20iLCJoay5vcmciLCJsdGQuaGsiLCJpbmMuaGsiLCJuYW1lLnBtIiwic2NoLnRmIiwiYml6LndmIiwi''@;'; put 'put ''c2NoLndmIiwib3JnLnl0IiwidmlydHVhbHVzZXIuZGUiLCJ2aXJ0dWFsLXVzZXIuZGUiLCJ1cGxpLmlvIiwidXJvd24uY2xvdWQiLCJkbnN1cGRhdGUuaW5mbyIsImxpYi5kZS51cyIsIjIwMzguaW8iLCJ2ZXJjZWwuYXBwIiwidmVyY2VsLmRldiIsIm5vdy5zaCIsInJvdXRlci5tYW5hZ2Vt''@;'; put 'put ''ZW50Iiwidi1pbmZvLmluZm8iLCJ2b29ybG9wZXIuY2xvdWQiLCJuZWtvLmFtIiwibnlhYS5hbSIsImJlLmF4IiwiY2F0LmF4IiwiZXMuYXgiLCJldS5heCIsImdnLmF4IiwibWMuYXgiLCJ1cy5heCIsInh5LmF4IiwibmwuY2kiLCJ4eC5nbCIsImFwcC5ncCIsImJsb2cuZ3QiLCJkZS5ndCIs''@;'; put 'put ''InRvLmd0IiwiYmUuZ3kiLCJjYy5obiIsImJsb2cua2ciLCJpby5rZyIsImpwLmtnIiwidHYua2ciLCJ1ay5rZyIsInVzLmtnIiwiZGUubHMiLCJhdC5tZCIsImRlLm1kIiwianAubWQiLCJ0by5tZCIsImluZGllLnBvcm4iLCJ2eGwuc2giLCJjaC50YyIsIm1lLnRjIiwid2UudGMiLCJueWFu''@;'; put 'put ''LnRvIiwiYXQudmciLCJibG9nLnZ1IiwiZGV2LnZ1IiwibWUudnUiLCJ2LnVhIiwiKi52dWx0cm9iamVjdHMuY29tIiwid2FmZmxlY2VsbC5jb20iLCIqLndlYmhhcmUuZGV2IiwicmVzZXJ2ZS1vbmxpbmUubmV0IiwicmVzZXJ2ZS1vbmxpbmUuY29tIiwiYm9va29ubGluZS5hcHAiLCJob3Rl''@;'; put 'put ''bHdpdGhmbGlnaHQuY29tIiwid2VkZXBsb3kuaW8iLCJ3ZWRlcGxveS5tZSIsIndlZGVwbG95LnNoIiwicmVtb3Rld2QuY29tIiwicGFnZXMud2lhcmR3ZWIuY29tIiwid21mbGFicy5vcmciLCJ0b29sZm9yZ2Uub3JnIiwid21jbG91ZC5vcmciLCJwYW5lbC5nZyIsImRhZW1vbi5wYW5lbC5n''@;'; put 'put ''ZyIsIm1lc3N3aXRoZG5zLmNvbSIsIndvbHRsYWItZGVtby5jb20iLCJteWZvcnVtLmNvbW11bml0eSIsImNvbW11bml0eS1wcm8uZGUiLCJkaXNrdXNzaW9uc2JlcmVpY2guZGUiLCJjb21tdW5pdHktcHJvLm5ldCIsIm1laW5mb3J1bS5uZXQiLCJhZmZpbml0eWxvdHRlcnkub3JnLnVrIiwi''@;'; put 'put ''cmFmZmxlZW50cnkub3JnLnVrIiwid2Vla2x5bG90dGVyeS5vcmcudWsiLCJ3cGVuZ2luZXBvd2VyZWQuY29tIiwianMud3BlbmdpbmVwb3dlcmVkLmNvbSIsIndpeHNpdGUuY29tIiwiZWRpdG9yeC5pbyIsImhhbGYuaG9zdCIsInhuYmF5LmNvbSIsInUyLnhuYmF5LmNvbSIsInUyLWxvY2Fs''@;'; put 'put ''LnhuYmF5LmNvbSIsImNpc3Ryb24ubmwiLCJkZW1vbi5ubCIsInhzNGFsbC5zcGFjZSIsInlhbmRleGNsb3VkLm5ldCIsInN0b3JhZ2UueWFuZGV4Y2xvdWQubmV0Iiwid2Vic2l0ZS55YW5kZXhjbG91ZC5uZXQiLCJvZmZpY2lhbC5hY2FkZW15IiwieW9sYXNpdGUuY29tIiwieWJvLmZhaXRo''@;'; put 'put ''IiwieW9tYm8ubWUiLCJob21lbGluay5vbmUiLCJ5Ym8ucGFydHkiLCJ5Ym8ucmV2aWV3IiwieWJvLnNjaWVuY2UiLCJ5Ym8udHJhZGUiLCJ5bmguZnIiLCJub2hvc3QubWUiLCJub2hvLnN0IiwiemEubmV0IiwiemEub3JnIiwiYnNzLmRlc2lnbiIsImJhc2ljc2VydmVyLmlvIiwidmlydHVh''@;'; put 'put ''bHNlcnZlci5pbyIsImVudGVycHJpc2VjbG91ZC5udSJdJyl9fSx2PXt9O2Z1bmN0aW9uIGhlKEgpe3ZhciBCPXZbSF07aWYodm9pZCAwIT09QilyZXR1cm4gQi5leHBvcnRzO3ZhciBMPXZbSF09e2lkOkgsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBrW0hdLmNhbGwoTC5leHBvcnRz''@;'; put 'put ''LEwsTC5leHBvcnRzLGhlKSxMLmxvYWRlZD0hMCxMLmV4cG9ydHN9cmV0dXJuIGhlLmQ9KEgsQik9Pntmb3IodmFyIEwgaW4gQiloZS5vKEIsTCkmJiFoZS5vKEgsTCkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShILEwse2VudW1lcmFibGU6ITAsZ2V0OkJbTF19KX0saGUuZz1mdW5jdGlvbigp''@;'; put 'put ''e2lmKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoe2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLGhlLm89KEgsQik9Pk9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChILEIpLGhlLnI9SD0+e3R5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShILFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoSCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LGhlLm5tZD1IPT4oSC5wYXRocz1bXSxILmNoaWxkcmVufHwoSC5jaGlsZHJlbj1bXSksSCksaGUoMzYwNyl9KSgpfSwxMjA3MDpmdW5jdGlvbihXZSx6ZSxUKXsidXNlIHN0cmljdCI7dmFyIHNlPXRoaXMmJnRoaXMuX19pbXBvcnREZWZh''@;'; put 'put ''dWx0fHxmdW5jdGlvbihMKXtyZXR1cm4gTCYmTC5fX2VzTW9kdWxlP0w6e2RlZmF1bHQ6TH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6ZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksemUuaXNTcGVjaWFsTWlzc2luZz16ZS5jaG9pY2VWYWxpZGF0b3I9emUuY29uZmlybWF0aW9uVmFsaWRh''@;'; put 'put ''dG9yPXplLnVybFZhbGlkYXRvcj12b2lkIDA7dmFyIGs9c2UoVCg3ODUzMikpO3plLnVybFZhbGlkYXRvcj1mdW5jdGlvbihMLEspe3JldHVybiEhay5kZWZhdWx0LmlzSHR0cFVyaShMKXx8ISFrLmRlZmF1bHQuaXNIdHRwc1VyaShMKXx8IiI9PT1MfHxLfSx6ZS5jb25maXJtYXRpb25WYWxp''@;'; put 'put ''ZGF0b3I9ZnVuY3Rpb24oTCl7cmV0dXJuITA9PT1MfHwhMT09PUx9LHplLmNob2ljZVZhbGlkYXRvcj1mdW5jdGlvbihMLEssSil7cmV0dXJuIEw+MCYmTDw9S3x8Sn0semUuaXNTcGVjaWFsTWlzc2luZz1mdW5jdGlvbihMKXtyZXR1cm4oInN0cmluZyIhPXR5cGVvZiBMfHwhTC5pbmNsdWRl''@;'; put 'put ''cygiLi4iKSkmJm5ldyBSZWdFeHAoIl4oXFwuKT9bYS16Xy5dezF9JCIsImkiKS50ZXN0KEwpfX0sNzY3NzE6KFdlLHplKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgazt6ZS5EPXZvaWQgMCwoaz16ZS5EfHwoemUuRD17fSkpLlNhc1ZpeWE9IlNBU1ZJWUEiLGsuU2FzOT0iU0FTOSIsay5TYXNqcz0i''@;'; put 'put ''U0FTSlMifSw1MTcxNDooV2UsemUpPT57InVzZSBzdHJpY3QiO3plLlI9dm9pZCAwLHplLlI9ZnVuY3Rpb24oayx2LGhlKXtpZih2b2lkIDA9PT12JiYodj0xKSx2b2lkIDA9PT1oZSYmKGhlPTEwOTk1MTE2Mjc3NzYpLDA9PT1rKXJldHVybiIwIEIiO2s9az5oZT9oZTprO3ZhciBMPXY8MD8w''@;'; put 'put ''OnYsSz1NYXRoLmZsb29yKE1hdGgubG9nKGspL01hdGgubG9nKDEwMjQpKTtyZXR1cm4oay9NYXRoLnBvdygxMDI0LEspKS50b0ZpeGVkKEwpKyIgIitbIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdW0tdfX0sODA3ODg6ZnVuY3Rpb24oV2Upe3ZhciB6ZT17dmVyc2lvbjoiMS4xNS4wIn07emVb''@;'; put 'put ''NDM3XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2''@;'; put 'put ''Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYy''@;'; put 'put ''XHhmYlx4ZjlceGZmXHhkNlx4ZGNceGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVc''@;'; put 'put ''dTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1''@;'; put 'put ''NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2''@;'; put 'put ''MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0''@;'; put 'put ''KHYpO3JldHVybntlbmM6ayxkZWM6c2V9fSgpLHplWzYyMF09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRc''@;'; put 'put ''eDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHUwMTA1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHUw''@;'; put 'put ''MTA3XHhjNFx1MDEwNFx1MDExOFx1MDExOVx1MDE0Mlx4ZjRceGY2XHUwMTA2XHhmYlx4ZjlcdTAxNWFceGQ2XHhkY1x4YTJcdTAxNDFceGE1XHUwMTViXHUwMTkyXHUwMTc5XHUwMTdiXHhmM1x4ZDNcdTAxNDRcdTAxNDNcdTAxN2FcdTAxN2NceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4''@;'; put 'put ''YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUy''@;'; put 'put ''NTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4''@;'; put 'put ''YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLHNlPVtdLGs9e30sdj0wOzI1NiE9djsr''@;'; put 'put ''K3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVs3MzddPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBl''@;'; put 'put ''XHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+''@;'; put 'put ''XHg3Zlx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNi''@;'; put 'put ''M1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjMlx1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1''@;'; put 'put ''MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2''@;'; put 'put ''NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNjOVx1MDNhY1x1MDNhZFx1MDNhZVx1MDNjYVx1MDNhZlx1MDNjY1x1MDNjZFx1MDNjYlx1MDNjZVx1MDM4Nlx1MDM4OFx1MDM4OVx1''@;'; put 'put ''MDM4YVx1MDM4Y1x1MDM4ZVx1MDM4Zlx4YjFcdTIyNjVcdTIyNjRcdTAzYWFcdTAzYWJceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQo''@;'; put 'put ''dildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntlbmM6ayxkZWM6c2V9fSgpLHplWzg1MF09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4''@;'; put 'put ''XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVh''@;'; put 'put ''XHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFc''@;'; put 'put ''dTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4''@;'; put 'put ''YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MDEzMVx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZc''@;'; put 'put ''eGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbODUy''@;'; put 'put ''XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5''@;'; put 'put ''Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx1MDE2Zlx1MDEwN1x4ZTdcdTAxNDJceGViXHUwMTUwXHUwMTUxXHhlZVx1MDE3OVx4YzRcdTAxMDZceGM5XHUwMTM5XHUw''@;'; put 'put ''MTNhXHhmNFx4ZjZcdTAxM2RcdTAxM2VcdTAxNWFcdTAxNWJceGQ2XHhkY1x1MDE2NFx1MDE2NVx1MDE0MVx4ZDdcdTAxMGRceGUxXHhlZFx4ZjNceGZhXHUwMTA0XHUwMTA1XHUwMTdkXHUwMTdlXHUwMTE4XHUwMTE5XHhhY1x1MDE3YVx1MDEwY1x1MDE1Zlx4YWJceGJiXHUyNTkxXHUyNTky''@;'; put 'put ''XHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJcdTAxMWFcdTAxNWVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxN2JcdTAxN2NcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxMDJcdTAxMDNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBc''@;'; put 'put ''dTI1NmNceGE0XHUwMTExXHUwMTEwXHUwMTBlXHhjYlx1MDEwZlx1MDE0N1x4Y2RceGNlXHUwMTFiXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwMTYyXHUwMTZlXHUyNTgwXHhkM1x4ZGZceGQ0XHUwMTQzXHUwMTQ0XHUwMTQ4XHUwMTYwXHUwMTYxXHUwMTU0XHhkYVx1MDE1NVx1MDE3MFx4''@;'; put 'put ''ZmRceGRkXHUwMTYzXHhiNFx4YWRcdTAyZGRcdTAyZGJcdTAyYzdcdTAyZDhceGE3XHhmN1x4YjhceGIwXHhhOFx1MDJkOVx1MDE3MVx1MDE1OFx1MDE1OVx1MjVhMFx4YTAiLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYp''@;'; put 'put ''XT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVs4NTddPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4''@;'; put 'put ''MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4''@;'; put 'put ''ZWJceGU4XHhlZlx4ZWVcdTAxMzFceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHUwMTMwXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTAxNWVcdTAxNWZceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFcdTAxMWVcdTAxMWZceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhi''@;'; put 'put ''Ylx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUw''@;'; put 'put ''XHUyNTZjXHhhNFx4YmFceGFhXHhjYVx4Y2JceGM4XHVmZmZkXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHVmZmZkXHhkN1x4ZGFceGRiXHhkOVx4ZWNceGZmXHhhZlx4YjRceGFkXHhiMVx1ZmZm''@;'; put 'put ''ZFx4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntlbmM6ayxkZWM6c2V9''@;'; put 'put ''fSgpLHplWzg2MV09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4v''@;'; put 'put ''MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGQwXHhmMFx4ZGVceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRc''@;'; put 'put ''eGY2XHhmZVx4ZmJceGRkXHhmZFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4YzFceGNkXHhkM1x4ZGFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2''@;'; put 'put ''XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUy''@;'; put 'put ''NTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIy''@;'; put 'put ''MjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1U''@;'; put 'put ''LmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVs4NjVdPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4''@;'; put 'put ''MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4''@;'; put 'put ''ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhhNFx1MjU5MVx1MjU5Mlx1MjU5''@;'; put 'put ''M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1''@;'; put 'put ''MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUw''@;'; put 'put ''M2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0''@;'; put 'put ''KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbODY2XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgx''@;'; put 'put ''NFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTA0MTBcdTA0MTFcdTA0MTJc''@;'; put 'put ''dTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0''@;'; put 'put ''MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNc''@;'; put 'put ''dTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1''@;'; put 'put ''NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFc''@;'; put 'put ''dTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MGVcdTA0NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFy''@;'; put 'put ''QXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbODc0XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgx''@;'; put 'put ''ZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMjZcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0''@;'; put 'put ''XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUw''@;'; put 'put ''ZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUw''@;'; put 'put ''ZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCks''@;'; put 'put ''emVbODk1XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIz''@;'; put 'put ''NDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTAxMGNceGZjXHhlOVx1MDEwZlx4ZTRcdTAxMGVcdTAxNjRcdTAxMGRcdTAxMWJcdTAxMWFcdTAxMzlceGNkXHUwMTNlXHUwMWVhXHhjNFx4YzFc''@;'; put 'put ''eGM5XHUwMTdlXHUwMTdkXHhmNFx4ZjZceGQzXHUwMTZmXHhkYVx4ZmRceGQ2XHhkY1x1MDE2MFx1MDEzZFx4ZGRcdTAxNThcdTAxNjVceGUxXHhlZFx4ZjNceGZhXHUwMTQ4XHUwMTQ3XHUwMTZlXHhkNFx1MDE2MVx1MDE1OVx1MDE1NVx1MDE1NFx4YmNceGE3XHhhYlx4YmJcdTI1OTFcdTI1''@;'; put 'put ''OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBc''@;'; put 'put ''dTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1''@;'; put 'put ''MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hh''@;'; put 'put ''ckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntlbmM6ayxkZWM6c2V9fSgpLHplWzkzMl09ZnVuY3Rpb24oKXt2YXIgdixUPVtdLHNlPXt9LGs9W107Zm9yKGtbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZc''@;'; put 'put ''clx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5''@;'; put 'put ''ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjYxXHVmZjYyXHVmZjYzXHVmZjY0XHVmZjY1XHVmZjY2XHVmZjY3XHVmZjY4XHVmZjY5XHVmZjZhXHVmZjZiXHVmZjZjXHVmZjZkXHVmZjZlXHVmZjZmXHVmZjcwXHVmZjcxXHVmZjcyXHVmZjczXHVmZjc0XHVm''@;'; put 'put ''Zjc1XHVmZjc2XHVmZjc3XHVmZjc4XHVmZjc5XHVmZjdhXHVmZjdiXHVmZjdjXHVmZjdkXHVmZjdlXHVmZjdmXHVmZjgwXHVmZjgxXHVmZjgyXHVmZjgzXHVmZjg0XHVmZjg1XHVmZjg2XHVmZjg3XHVmZjg4XHVmZjg5XHVmZjhhXHVmZjhiXHVmZjhjXHVmZjhkXHVmZjhlXHVmZjhmXHVmZjkw''@;'; put 'put ''XHVmZjkxXHVmZjkyXHVmZjkzXHVmZjk0XHVmZjk1XHVmZjk2XHVmZjk3XHVmZjk4XHVmZjk5XHVmZjlhXHVmZjliXHVmZjljXHVmZjlkXHVmZjllXHVmZjlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMF1b''@;'; put 'put ''dl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMF1bdl1dPTArdixUWzArdl09a1swXVt2XSk7Zm9yKGtbMTI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFi''@;'; put 'put ''XHVmZjFmXHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZc''@;'; put 'put ''dTIwMjVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMwMGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTBcdTMwMTFcdWZmMGJcdWZmMGRceGIxXHhkN1x1ZmZmZFx4''@;'; put 'put ''ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1MjYwNVx1MjVjYlx1MjVj''@;'; put 'put ''Zlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1ZWZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMjldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEyOV1bdl0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKHNlW2tbMTI5XVt2XV09MzMwMjQrdixUWzMzMDI0K3ZdPWtbMTI5XVt2XSk7Zm9yKGtbMTMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0''@;'; put 'put ''XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVh''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUz''@;'; put 'put ''MDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDcz''@;'; put 'put ''XHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUz''@;'; put 'put ''MDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTMwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzBdW3Zd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzMF1bdl1dPTMzMjgwK3YsVFszMzI4MCt2XT1rWzEzMF1bdl0pO2ZvcihrWzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1''@;'; put 'put ''MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBj''@;'; put 'put ''Mlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1''@;'; put 'put ''MzBkZVx1MzBkZlx1ZmZmZFx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1''@;'; put 'put ''MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNj''@;'; put 'put ''MVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzMV0ubGVuZ3RoOysrdik2NTUz''@;'; put 'put ''MyE9PWtbMTMxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzFdW3ZdXT0zMzUzNit2LFRbMzM1MzYrdl09a1sxMzFdW3ZdKTtmb3Ioa1sxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNc''@;'; put 'put ''dTA0MTRcdTA0MTVcdTA0MDFcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0''@;'; put 'put ''MmVcdTA0MmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0NTFcdTA0MzZcdTA0MzdcdTA0MzhcdTA0Mzlc''@;'; put 'put ''dTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdWZmZmRcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNc''@;'; put 'put ''dTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzJdLmxl''@;'; put 'put ''bmd0aDsrK3YpNjU1MzMhPT1rWzEzMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTMyXVt2XV09MzM3OTIrdixUWzMzNzkyK3ZdPWtbMTMyXVt2XSk7Zm9yKGtbMTM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNDYwXHUyNDYx''@;'; put 'put ''XHUyNDYyXHUyNDYzXHUyNDY0XHUyNDY1XHUyNDY2XHUyNDY3XHUyNDY4XHUyNDY5XHUyNDZhXHUyNDZiXHUyNDZjXHUyNDZkXHUyNDZlXHUyNDZmXHUyNDcwXHUyNDcxXHUyNDcyXHUyNDczXHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUy''@;'; put 'put ''MTY5XHVmZmZkXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUzMzM2XHUzMzUxXHUzMzU3XHUzMzBkXHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUzMzllXHUzMzhlXHUzMzhmXHUzM2M0XHUzM2ExXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMzdiXHVmZmZkXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUzMmE0XHUzMmE1XHUzMmE2XHUzMmE3XHUzMmE4XHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUy''@;'; put 'put ''MjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0w''@;'; put 'put ''O3YhPWtbMTM1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzNV1bdl1dPTM0NTYwK3YsVFszNDU2MCt2XT1rWzEzNV1bdl0pO2ZvcihrWzEzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUy''@;'; put 'put ''NVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1''@;'; put 'put ''NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5''@;'; put 'put ''NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLHY9MDt2IT1rWzEzNl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTM2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzZdW3ZdXT0zNDgxNit2LFRbMzQ4MTYrdl09a1sxMzZdW3ZdKTtmb3Ioa1sxMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJcdTU0MGJcdTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJcdTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTljM2JcdTU5ZTVcdTUzYTlc''@;'; put 'put ''dTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2ZjJcdTgzNGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVmNzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJcdThhNjBcdTkyZWRcdTZk''@;'; put 'put ''YjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFcdTk1YjJcdTY5OGVcdTUzYWRcdTUxODZcdWZmZmRcdTU3MTJcdTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcxZDVcdTczM2ZcdTdlMDFc''@;'; put 'put ''dTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlkMWJcdTU4NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5NjVcdTVmODBcdTVmZGNcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNcdTlkMGVcdTllYzRcdTVjYTFcdTZj''@;'; put 'put ''OTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZcdTY4NzZcdTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlcdTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2MDlcdTU5MGZcdTVhYzFcdTViYjZc''@;'; put 'put ''dTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZiNGNcdTZjYjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdiODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZcdTkwNGVcdTk3MWVcdTg2OGFcdTRm''@;'; put 'put ''YzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVcdTgyYmRcdTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2JcdTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYyMTJcdTYyZDBcdTY1MzlcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTM3XVt2XV09MzUwNzIrdixUWzM1MDcyK3ZdPWtbMTM3XVt2XSk7Zm9yKGtbMTM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhk''@;'; put 'put ''XHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4''@;'; put 'put ''ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiXHVmZmZkXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0''@;'; put 'put ''XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxXHU3Y2E1XHU1MjA4XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1''@;'; put 'put ''MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUz''@;'; put 'put ''XHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3''@;'; put 'put ''NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNi''@;'; put 'put ''XHU2OGM0XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTM4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzOF1bdl1dPTM1MzI4K3YsVFszNTMyOCt2XT1rWzEzOF1bdl0pO2ZvcihrWzEzOV09Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEwZVx1OWIzY1x1NGU4''@;'; put 'put ''MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1Njc3NVx1OWVjZFx1''@;'; put 'put ''NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MVx1ZmZmZFx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2NmZVx1N2Q2''@;'; put 'put ''Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhY1x1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3MVx1NTFmNlx1NTM1NFx1''@;'; put 'put ''NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1OTk1N1x1OWE1YVx1NGVm''@;'; put 'put ''MFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNjY1x1ODg3Zlx1ODk1Zlx1''@;'; put 'put ''OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1OTY4NVx1NGUzMlx1NmFk''@;'; put 'put ''Ylx1OTFlN1x1NWM1MVx1NWM0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTM5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzldW3ZdXT0zNTU4NCt2LFRbMzU1ODQrdl09a1sxMzldW3ZdKTtmb3Ioa1sxNDBdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzOThcdTdhOWZcdTZjOTNcdTk3NzRcdThmNjFcdTdhYWFcdTcxOGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJcdThhMTNcdTdmYTRcdThl''@;'; put 'put ''Y2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJcdTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJcdTU5NTFcdTVmNjJcdTVmODRcdTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZlMTNcdTc1NjZcdTdhM2Rc''@;'; put 'put ''dTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgzMGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4MWFcdTlkOGZcdTgyYjhcdThmY2VcdTliZThcdWZmZmRcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFcdTZiMjBcdTZjN2FcdTZm''@;'; put 'put ''NTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZcdTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNcdTU1YTdcdTU3MGZcdTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzJcdTY5MWNcdTZhMjlcdTcyN2RcdTcyYWNcdTczMmVcdTc4MTRc''@;'; put 'put ''dTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlhMTNcdTllNzhcdTUxNDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdcdThhMDBcdThhZmFcdTk2''@;'; put 'put ''NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2NcdTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVcdTY3YWZcdTZlNTZcdTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2YzdcdTk4NjdcdTlmMTNc''@;'; put 'put ''dTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0NWFcdTc4ODFcdThhOWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZcdTUxNDlcdTUxNmNcdTUy''@;'; put 'put ''OWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNcdTU0MTFcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQwXVt2XV09MzU4NDArdixUWzM1ODQwK3ZdPWtbMTQwXVt2XSk7''@;'; put 'put ''Zm9yKGtbMTQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4XHU2''@;'; put 'put ''MDUyXHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4MDE1''@;'; put 'put ''XHU4MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkXHVmZmZkXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1''@;'; put 'put ''NDA4XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjXHU2YjY0XHU5ODAzXHU0ZWNhXHU1NmYw''@;'; put 'put ''XHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUwXHU5Mzk2XHU4''@;'; put 'put ''OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4M2RjXHU4OGMx''@;'; put 'put ''XHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0XHU3YjU2XHU3''@;'; put 'put ''ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0MV1bdl1dPTM2MDk2K3YsVFszNjA5Nit2''@;'; put 'put ''XT1rWzE0MV1bdl0pO2ZvcihrWzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1''@;'; put 'put ''NjY1Mlx1NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNm''@;'; put 'put ''OFx1NTNmMlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1ZmZmZFx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1''@;'; put 'put ''N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0Mlx1NmIyMVx1NmVj''@;'; put 'put ''Ylx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1''@;'; put 'put ''NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBh''@;'; put 'put ''YVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1''@;'; put 'put ''NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDJdW3ZdXT0zNjM1''@;'; put 'put ''Mit2LFRbMzYzNTIrdl09a1sxNDJdW3ZdKTtmb3Ioa1sxNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJcdTc5YzBcdTc5Y2JcdTdkNDJcdTdlNGRcdTdmZDJc''@;'; put 'put ''dTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkxOWNcdTRlYzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTczNjNcdTdlMjZcdTkxY2RcdTkyODNcdTUzZDRcdTU5''@;'; put 'put ''MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJcdTY2MjVcdTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlcdTZkZjNcdWZmZmRcdTZlOTZcdTZmNjRcdTc2ZmVc''@;'; put 'put ''dTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdkZDJcdTdmNzJcdTY2ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVlOGZcdTVmOTBcdTYwNTVcdTkyZTRcdTk2NjRcdTUwYjdcdTUx''@;'; put 'put ''MWZcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVcdTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2ZcdTYyODRcdTYyZGJcdTYzOGNcdTYzNzdcdTY2MDdcdTY2MGNc''@;'; put 'put ''dTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcxNjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdjYTdcdTdkMzlcdTgwOTZcdTgzZDZcdTg0OGJcdTg1NDlcdTg4''@;'; put 'put ''NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNcdTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRcdTU4Y2NcdTViMjJcdTVlMzhcdTYwYzVcdTY0ZmVcdTY3NjFc''@;'; put 'put ''dTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tb''@;'; put 'put ''MTQzXVt2XV09MzY2MDgrdixUWzM2NjA4K3ZdPWtbMTQzXVt2XSk7Zm9yKGtbMTQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1''@;'; put 'put ''XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4''@;'; put 'put ''OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMxXHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4XHVmZmZkXHU5MDE3''@;'; put 'put ''XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5''@;'; put 'put ''ODE3XHU5NmMwXHU4OGZlXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJjXHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRi''@;'; put 'put ''XHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4''@;'; put 'put ''Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3''@;'; put 'put ''XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDRdW3ZdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihzZVtrWzE0NF1bdl1dPTM2ODY0K3YsVFszNjg2NCt2XT1rWzE0NF1bdl0pO2ZvcihrWzE0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNj''@;'; put 'put ''ZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1''@;'; put 'put ''Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNi''@;'; put 'put ''Ylx1ZmZmZFx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1''@;'; put 'put ''OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZVx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNj''@;'; put 'put ''M1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1''@;'; put 'put ''NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1''@;'; put 'put ''M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMzOFx1NTFlN1x1ODZmOFx1NTNlYVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQ1''@;'; put 'put ''XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDVdW3ZdXT0zNzEyMCt2LFRbMzcxMjArdl09a1sxNDVdW3ZdKTtmb3Ioa1sxNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzZTlcdTRmNDZcdTkwNTRcdThmYjBcdTU5NmFcdTgx''@;'; put 'put ''MzFcdTVkZmRcdTdhZWFcdThmYmZcdTY4ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZcdTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRcdTdhZWZcdTdiYWFcdTdkYmJcdTgwM2RcdTgwYzZcdTg2Y2Jc''@;'; put 'put ''dThhOTVcdTkzNWJcdTU2ZTNcdTU4YzdcdTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgxZjRcdTg3MThcdTkwNDVcdTk5YjNcdTdiYzlcdTc1NWNcdTdh''@;'; put 'put ''ZjlcdTdiNTFcdTg0YzRcdWZmZmRcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlcdTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNcdTk5ZDBcdTZhMTdcdTcwMjZcdTczMmFcdTgyZTdc''@;'; put 'put ''dTg0NTdcdThjYWZcdTRlMDFcdTUxNDZcdTUxY2JcdTU1OGJcdTViZjVcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVmNmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhcdTg3NzZcdThhYmZcdThh''@;'; put 'put ''ZGNcdThkODVcdThkZjNcdTkyOWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2RcdThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRcdTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4MDJcdTYzYjRcdTY5ZmJc''@;'; put 'put ''dTRmNDNcdTZmMmNcdTY3ZDhcdThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdkMmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUwNzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRcdTViOWFcdTVlMWRcdTVl''@;'; put 'put ''OTVcdTVlYWRcdTVlZjdcdTVmMWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJcdTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDZdLmxlbmd0aDsrK3Yp''@;'; put 'put ''NjU1MzMhPT1rWzE0Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQ2XVt2XV09MzczNzYrdixUWzM3Mzc2K3ZdPWtbMTQ2XVt2XSk7Zm9yKGtbMTQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGI4XHU5MTJkXHU5MWQ4XHU5''@;'; put 'put ''ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODVi''@;'; put 'put ''XHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1''@;'; put 'put ''OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjXHVmZmZkXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4''@;'; put 'put ''XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4YzQ2XHU4ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1''@;'; put 'put ''YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIzXHU2ZDljXHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0''@;'; put 'put ''XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1NDUxXHU2NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2''@;'; put 'put ''OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2QxXHU4MDg5XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ3''@;'; put 'put ''XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0N11bdl1dPTM3NjMyK3YsVFszNzYzMit2XT1rWzE0N11bdl0pO2ZvcihrWzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk4Mlx1''@;'; put 'put ''NWMzZlx1OTdlZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBm''@;'; put 'put ''ZFx1ODEzM1x1ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1''@;'; put 'put ''ODBiYVx1OGYyOVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1ZmZmZFx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5''@;'; put 'put ''NFx1N2M5NVx1ODIzNlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1''@;'; put 'put ''OWFlYVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIy''@;'; put 'put ''Y1x1ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1''@;'; put 'put ''NzViMlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LHY9MDt2IT1rWzE0OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQ4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDhdW3ZdXT0zNzg4OCt2LFRbMzc4ODgrdl09a1sxNDhdW3ZdKTtmb3Ioa1sxNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTlmM2JcdTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThcdTVmM2NcdTVmYzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlcdTZjMzdcdTZmMDJcdTc0''@;'; put 'put ''ZTJcdTc5NjhcdTg4NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTkyZjJcdTg0OWNcdTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRlMGRcdTRlZDhcdTU3ZTBc''@;'; put 'put ''dTU5MmJcdTVhNjZcdTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzdcdWZmZmRcdTY1YTdcdTY2NmVcdTZkNmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVcdTY0YWJcdTZiNjZcdTgy''@;'; put 'put ''MWVcdTg0NjFcdTg1NmFcdTkwZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUyNmZcdTVmYTlcdTVlNDVcdTY3MGRcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUyMDZcdTU0M2JcdTU2NzRc''@;'; put 'put ''dTU4YjNcdTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdcdTgwNWVcdTRlMTlcdTRmNzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFcdTUwZmJcdTU4YzFcdTc2''@;'; put 'put ''NTZcdTc4YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdkZThcdThmYmFcdThmZDRcdTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1MmJcdTg4ZGNcdThmMTRc''@;'; put 'put ''dTdhNDJcdTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNcdTRmZjhcdTUzMDVcdTU0NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQ5XVt2XV09MzgxNDQrdixUWzM4MTQ0K3ZdPWtbMTQ5XVt2XSk7Zm9yKGtbMTUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1MjU2XHU1NzRhXHU1OWE4XHU1''@;'; put 'put ''ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0XHU3MjY3XHU3NzY2XHU3YTQ2''@;'; put 'put ''XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2XHVmZmZkXHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4MTljXHU2Nzk1XHU5YmFhXHU2''@;'; put 'put ''N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2FjXHU1YmM2XHU4NzFjXHU2ZTRhXHU4NGQx''@;'; put 'put ''XHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5Y2Y0XHU1OWVhXHU3MjVkXHU2ZWM1XHU1''@;'; put 'put ''MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1XHU1YzI0XHU2MjNiXHU3YzdlXHU4Y2Iw''@;'; put 'put ''XHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2MTA5XHU2MTA4XHU2Y2I5XHU3NjUyXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTUwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1MF1bdl1dPTM4NDAwK3YsVFszODQwMCt2XT1rWzE1MF1bdl0pO2ZvcihrWzE1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1MFx1ODhkNVx1OGE5OFx1''@;'; put 'put ''OTA0YVx1OTA5MVx1OTBmNVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1NzE5NFx1NzUyOFx1N2Fh''@;'; put 'put ''Zlx1N2Y4YVx1ODAwMFx1ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMlx1ZmZmZFx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgzY1x1OTZmN1x1NmQxYlx1''@;'; put 'put ''N2Q2MVx1ODQzZFx1OTE2YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4M1x1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0''@;'; put 'put ''ZVx1NjNhMFx1NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRiY1x1NzMxZlx1NzY0Mlx1''@;'; put 'put ''NzdhZFx1N2ExY1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1N2QyZlx1OTg1ZVx1NGVl''@;'; put 'put ''NFx1NGYzNlx1NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYyM1x1NzE0OVx1N2MzZVx1''@;'; put 'put ''N2RmNFx1ODA2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTUxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTFdW3ZdXT0zODY1Nit2LFRbMzg2NTYrdl09a1sxNTFdW3ZdKTtmb3Ioa1sxNTJdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg0ZWVcdTkwMjNcdTkzMmNcdTU0NDJcdTliNmZcdTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVhNDFcdTVlY2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZkNmFcdTZmMGZcdTcyNjJc''@;'; put 'put ''dTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJcdTkzMzJcdThhZDZcdTUwMmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFcdTY3YTBcdTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJcdTg1YzFcdTg1NjhcdTY5''@;'; put 'put ''MDBcdTZlN2VcdTc4OTdcdTgxNTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRlMzFcdTRlMzZcdTRlM2NcdTRl''@;'; put 'put ''M2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThjNmJcdTRlOGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZcdTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVcdTRlZWRcdTRlZGZcdTRlZjdc''@;'; put 'put ''dTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdcdTRmNDdcdTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRmNjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRmZDFcdTRmZGFcdTRmZDBcdTRm''@;'; put 'put ''ZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUwMjVcdTUwMDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNcdTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZcdTUwNmNcdTUwNzhcdTUwODBc''@;'; put 'put ''dTUwOWFcdTUwODVcdTUwYjRcdTUwYjJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTUyXVt2XV09Mzg5MTIrdixUWzM4OTEyK3ZdPWtbMTUyXVt2XSk7Zm9yKGtbMTUz''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0''@;'; put 'put ''XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1''@;'; put 'put ''MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkXHVmZmZkXHU1MWYwXHU1MWY1XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJh''@;'; put 'put ''XHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1MjkxXHU4ZmE4XHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1''@;'; put 'put ''MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFhXHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1''@;'; put 'put ''XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1''@;'; put 'put ''M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhmXHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDkyXHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEy''@;'; put 'put ''XHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTUzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1M11bdl1dPTM5MTY4K3YsVFszOTE2OCt2XT1rWzE1M11b''@;'; put 'put ''dl0pO2ZvcihrWzE1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1NTRlMlx1NTUz''@;'; put 'put ''OVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVhOFx1NTVkYVx1''@;'; put 'put ''NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1ZmZmZFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1NTY4''@;'; put 'put ''MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOVx1NTcwOFx1NTcwYlx1NTcwZFx1''@;'; put 'put ''NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1NTdjNlx1NTdkNFx1NTdk''@;'; put 'put ''Mlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThhZVx1NThjNVx1NThkM1x1''@;'; put 'put ''NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1N2FkMlx1NTk1NVx1NTk1''@;'; put 'put ''MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1NF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTRdW3ZdXT0zOTQyNCt2LFRbMzk0''@;'; put 'put ''MjQrdl09a1sxNTRdW3ZdKTtmb3Ioa1sxNTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5NzhcdTU5ODFcdTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRcdTU5ZDlcdTU5ZGFcdTVh''@;'; put 'put ''MjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVhNDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFcdTVhOWFcdTVhYmNcdTVhYmVcdTVhY2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVhZmJcdTViMGNcdTViMGJc''@;'; put 'put ''dTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2VcdTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTViNWJcdTViNjVcdTViNjlcdTViNzBcdTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODBcdWZmZmRcdTViODNcdTViYTZcdTViYjhcdTViYzNcdTVi''@;'; put 'put ''YzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTViZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNcdTVjMDVcdTVjMDdcdTVjMDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVjNGVcdTVjNTNcdTVjNTBc''@;'; put 'put ''dTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJcdTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVjYmJcdTVjYjZcdTVjYmNcdTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNcdTVjZWFcdTVkMGJcdTVk''@;'; put 'put ''MTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVkMTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJcdTVkNGVcdTVkNGJcdTVkNmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVkYmRcdTVkOTBcdTVkYjdc''@;'; put 'put ''dTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJcdTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVlMTlcdTVlMTFcdTVlMWJcdTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJcdTVlNjRcdTVlNDdcdTVl''@;'; put 'put ''NzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVlYTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2ZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU1XVt2XV09''@;'; put 'put ''Mzk2ODArdixUWzM5NjgwK3ZdPWtbMTU1XVt2XSk7Zm9yKGtbMTU2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1''@;'; put 'put ''ZWYzXHU1ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3''@;'; put 'put ''XHU1ZjgzXHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwXHVmZmZkXHU2MDE5XHU2MDEwXHU2''@;'; put 'put ''MDI5XHU2MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgz''@;'; put 'put ''XHU2MDlhXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2MTAzXHU2''@;'; put 'put ''MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcxXHU2MTVm''@;'; put 'put ''XHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2MWY2XHU2''@;'; put 'put ''MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTU2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTZdW3ZdLmNoYXJDb2RlQXQoMCkmJihz''@;'; put 'put ''ZVtrWzE1Nl1bdl1dPTM5OTM2K3YsVFszOTkzNit2XT1rWzE1Nl1bdl0pO2ZvcihrWzE1N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1''@;'; put 'put ''NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJj''@;'; put 'put ''N1x1NjI5Ylx1NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2Ylx1ZmZmZFx1''@;'; put 'put ''NjM2OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRh''@;'; put 'put ''NVx1NjRhOVx1NjQ4OFx1NjRiY1x1NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1''@;'; put 'put ''NjUwNVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVj''@;'; put 'put ''Nlx1NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1''@;'; put 'put ''NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZjOVx1NjZiZVx1NjZiY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU3XVt2XS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoc2Vba1sxNTddW3ZdXT00MDE5Mit2LFRbNDAxOTIrdl09a1sxNTddW3ZdKTtmb3Ioa1sxNThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2YzRcdTY2YjhcdTY2ZDZcdTY2ZGFcdTY2ZTBcdTY2M2ZcdTY2ZTZc''@;'; put 'put ''dTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3MzZcdTY3NDFcdTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlcdTY3NzBcdTY3YTlcdTY3N2NcdTY3NmFcdTY3''@;'; put 'put ''OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRcdTY3ZGVcdTY3ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4NDZcdTY4MjlcdTY4NDBcdTY4NGRcdTY4MzJc''@;'; put 'put ''dTY4NGVcdWZmZmRcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4OWRcdTY4OWJcdTY4ODNcdTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZcdTY4OGRcdTY4N2VcdTY5MDFcdTY4Y2FcdTY5MDhcdTY4''@;'; put 'put ''ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2RcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdcdTY4ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5MjFcdTY4YzZcdTY5NzlcdTY5NzdcdTY5NWNcdTY5Nzhc''@;'; put 'put ''dTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5ODFcdTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2VcdTViZThcdTY5Y2FcdTY5ZGRcdTY5YmJcdTY5YzNcdTY5''@;'; put 'put ''YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFcdTY5ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZhMGFcdTZhMTJcdTZhYzFcdTZhMjNcdTZhMTNcdTZhNDRc''@;'; put 'put ''dTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZhOGRcdTZhYTBcdTZhODRcdTZhYTJcdTZhYTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNThdLmxlbmd0aDsrK3YpNjU1MzMhPT1r''@;'; put 'put ''WzE1OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU4XVt2XV09NDA0NDgrdixUWzQwNDQ4K3ZdPWtbMTU4XVt2XSk7Zm9yKGtbMTU5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMy''@;'; put 'put ''XHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVhXHU2YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2''@;'; put 'put ''YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVj''@;'; put 'put ''XHU2YmViXHU2YmYzXHU2YmVmXHVmZmZkXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFiXHU2YzI0XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2''@;'; put 'put ''Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlXHU2Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVh''@;'; put 'put ''XHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2''@;'; put 'put ''ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0''@;'; put 'put ''XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQxXHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTU5XS5sZW5ndGg7''@;'; put 'put ''Kyt2KTY1NTMzIT09a1sxNTldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1OV1bdl1dPTQwNzA0K3YsVFs0MDcwNCt2XT1rWzE1OV1bdl0pO2ZvcihrWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmYzZVx1NmYxM1x1NmVm''@;'; put 'put ''N1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1''@;'; put 'put ''NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBi''@;'; put 'put ''OFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZFx1ZmZmZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1''@;'; put 'put ''NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmY1x1NzFmOVx1NzFmZlx1NzIwZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3''@;'; put 'put ''NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1''@;'; put 'put ''NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNm''@;'; put 'put ''OFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1r''@;'; put 'put ''WzIyNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjRdW3ZdXT01NzM0NCt2LFRbNTczNDQrdl09a1syMjRdW3ZdKTtmb3Ioa1syMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc0''@;'; put 'put ''ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlcdTc0ZWVcdTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVcdTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1NDRcdTc1NGRcdTc1NGFcdTc1NDlcdTc1NWJcdTc1NDZc''@;'; put 'put ''dTc1NWFcdTc1NjlcdTc1NjRcdTc1NjdcdTc1NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNcdTc1YjVcdTc1YmRcdTc1YjhcdTc1YmNcdTc1YjFcdTc1''@;'; put 'put ''Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlcdTc1ZTNcdTc1ZGVcdTc1ZmVcdTc1ZmZcdWZmZmRcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFcdTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2MjRcdTc2MzRcdTc2MzBcdTc2M2JcdTc2NDdc''@;'; put 'put ''dTc2NDhcdTc2NDZcdTc2NWNcdTc2NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzBcdTc2NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVcdTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFcdTc2YjBcdTc2YjRcdTc2''@;'; put 'put ''YjhcdTc2YjlcdTc2YmFcdTc2YzJcdTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZcdTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3NDdcdTc3NWFcdTc3Njhc''@;'; put 'put ''dTc3NmJcdTc3NWJcdTc3NjVcdTc3N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdcdTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVcdTc3ZmNcdTc4MGNcdTc4''@;'; put 'put ''MTJcdTc5MjZcdTc4MjBcdTc5MmFcdTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVcdTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4YzVcdTc4Y2FcdTc4ZWNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1syMjVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI1XVt2XV09NTc2MDArdixUWzU3NjAwK3ZdPWtbMjI1XVt2XSk7Zm9yKGtbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIz''@;'; put 'put ''XHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNiXHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3''@;'; put 'put ''YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwXHVmZmZkXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2''@;'; put 'put ''XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwXHU3YjdhXHU3YjA0XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3''@;'; put 'put ''YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3YmNmXHU3YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEz''@;'; put 'put ''XHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0XHU3YzRmXHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3''@;'; put 'put ''Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2XHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyNl1bdl1dPTU3ODU2K3YsVFs1Nzg1Nit2XT1rWzIyNl1bdl0pO2ZvcihrWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3''@;'; put 'put ''ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1''@;'; put 'put ''N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1ZmZmZFx1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2Rk''@;'; put 'put ''NVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYVx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1''@;'; put 'put ''N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2Zl''@;'; put 'put ''MVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1''@;'; put 'put ''ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0''@;'; put 'put ''Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjddW3ZdXT01ODExMit2LFRbNTgxMTIrdl09a1syMjddW3ZdKTtmb3Ioa1syMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgwZmNcdTgxNzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRcdTgxYTNcdTgxNWZcdTgx''@;'; put 'put ''OTNcdTgxYTlcdTgxYjBcdTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2RcdTgxZDFcdTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDVcdTgyMDdcdTgyMGFc''@;'; put 'put ''dTgyMGRcdTgyMTBcdTgyMTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgyNWFcdTgyNWZcdTgyNjRcdWZmZmRcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRcdTgyOTJcdTgyYWJcdTgy''@;'; put 'put ''OWZcdTgyYmJcdTgyYWNcdTgyZTFcdTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNcdTgzMDNcdTgyZmJcdTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDlcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgzMzlcdTgzNTBcdTgzNDVc''@;'; put 'put ''dTgzMmZcdTgzMmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgzMjNcdTgzOGVcdTgzODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2VcdTgzZmRcdTg0MDNcdTgz''@;'; put 'put ''ZDhcdTg0MGJcdTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRcdTg0MzhcdTg1MDZcdTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0NDZcdTg0MmNcdTg0NmZc''@;'; put 'put ''dTg0NzlcdTg0MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0ZGFcdTg0ZDBcdTg0YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRcdTg0ZmNcdTg1NDBcdTg1''@;'; put 'put ''NjNcdTg1NThcdTg1NDhcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI4XVt2XV09NTgzNjgrdixUWzU4MzY4K3ZdPWtbMjI4XVt2XSk7Zm9yKGtbMjI5XT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3XHU4NTdlXHU4NTkwXHU4''@;'; put 'put ''NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4NjcxXHU4NjkzXHU4NmEz''@;'; put 'put ''XHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjXHVmZmZkXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAzXHU4NmZiXHU4NzExXHU4''@;'; put 'put ''NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5XHU4NzUzXHU4NzYzXHU4NzZhXHU4ODA1XHU4N2EyXHU4NzlmXHU4Nzgy''@;'; put 'put ''XHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2XHU4ODE1XHU4ODIyXHU4ODIxXHU4''@;'; put 'put ''ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4OGEyXHU4ODhkXHU4OGE0XHU4OGIw''@;'; put 'put ''XHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQxXHU4OTQ0XHU4OTNiXHU4OTM2XHU4''@;'; put 'put ''OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyOV1bdl1dPTU4NjI0K3YsVFs1ODYyNCt2XT1rWzIyOV1bdl0pO2Zvcihr''@;'; put 'put ''WzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1ODlhNlx1ODlhY1x1''@;'; put 'put ''ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3Y1x1OGE2ZFx1OGE2''@;'; put 'put ''Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1ZmZmZFx1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFmN1x1OGFkZVx1OGFkYlx1''@;'; put 'put ''OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2Ylx1OGI1Zlx1OGI2Y1x1OGI2Zlx1OGI3NFx1OGI3''@;'; put 'put ''ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4ZFx1OGM4ZVx1OGM5NFx1''@;'; put 'put ''OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1OWY0ZVx1OGQxM1x1OGNj''@;'; put 'put ''ZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRmZlx1OGUxZFx1OGUxZVx1''@;'; put 'put ''OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzBdW3ZdXT01ODg4MCt2LFRbNTg4ODArdl09a1sy''@;'; put 'put ''MzBdW3ZdKTtmb3Ioa1syMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRcdThlNjBcdThlMmFcdThlNjNcdThlNTVcdThlNzZcdThlNzJcdThlN2NcdThlODFc''@;'; put 'put ''dThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThlYTFcdThlYWNcdThlYjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThlZGJcdThlZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVcdThmMGFcdThmMDVcdThm''@;'; put 'put ''MTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2JcdThmMzlcdThmNDVcdThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdcdThmNWNcdWZmZmRcdThmNjJcdThmNjNcdThmNjRcdThmOWNcdThmOWZcdThmYTNc''@;'; put 'put ''dThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThmZjlcdThmZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkwMTZcdTkwMGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjhcdTkwNGZcdTkwNTBcdTkw''@;'; put 'put ''NTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZcdTkwNzZcdTk2YThcdTkwNzJcdTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlcdTkwOGZcdTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkwZTRcdTYyNDhcdTkwZGJc''@;'; put 'put ''dTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkxNjVcdTkxNjlcdTkxNzNcdTkxNzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkxYWZcdTkxYWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFcdTkxYzlcdTkxY2JcdTkx''@;'; put 'put ''ZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZcdTkyMTRcdTkyMmNcdTkyMTVcdTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRcdTkyNDhcdTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTkyOTZcdTkyOTNcdTkyOWJc''@;'; put 'put ''dTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjMxXVt2XV09NTkxMzYrdixU''@;'; put 'put ''WzU5MTM2K3ZdPWtbMjMxXVt2XSk7Zm9yKGtbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5MzU2XHU5M2Iw''@;'; put 'put ''XHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQxXHU5NDUyXHU5''@;'; put 'put ''NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZhXHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5XHVmZmZkXHU5NWEwXHU5NWE4XHU5NWE3XHU5NWFk''@;'; put 'put ''XHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3XHU5NjVjXHU5NjVlXHU5''@;'; put 'put ''NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZjXHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5NmQ1XHU5NmY5XHU5NzA0''@;'; put 'put ''XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQyXHU5NzZiXHU5NzcxXHU5''@;'; put 'put ''Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5NzdhXHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5N2Y1XHU5ODBmXHU5ODBj''@;'; put 'put ''XHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzMl1b''@;'; put 'put ''dl1dPTU5MzkyK3YsVFs1OTM5Mit2XT1rWzIzMl1bdl0pO2ZvcihrWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThl''@;'; put 'put ''OVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1''@;'; put 'put ''OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1ZmZmZFx1OWEzZVx1OWE1''@;'; put 'put ''NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1''@;'; put 'put ''OWFmMVx1OWFmN1x1OWFmYlx1OWIwNlx1OWIxOFx1OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5''@;'; put 'put ''MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1''@;'; put 'put ''OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQw''@;'; put 'put ''Nlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1OWQ0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMzXVt2XS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoc2Vba1syMzNdW3ZdXT01OTY0OCt2LFRbNTk2NDgrdl09a1syMzNdW3ZdKTtmb3Ioa1syMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlcdTlkNzJcdTlkODlcdTlk''@;'; put 'put ''ODdcdTlkYWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFcdTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhcdTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTllMWVcdTllNzVcdTllNzlc''@;'; put 'put ''dTllN2RcdTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTllYWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTllZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVcdTllZThcdTllZWZcdWZm''@;'; put 'put ''ZmRcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFcdTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlmNmFcdTlmNzdcdTlmNzJc''@;'; put 'put ''dTlmNzZcdTlmOTVcdTlmOWNcdTlmYTBcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzNF1bdl0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKHNlW2tbMjM0XVt2XV09NTk5MDQrdixUWzU5OTA0K3ZdPWtbMjM0XVt2XSk7Zm9yKGtbMjM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3''@;'; put 'put ''MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4''@;'; put 'put ''XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1''@;'; put 'put ''N2M3XHVmYTBmXHVmZmZkXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4''@;'; put 'put ''XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2''@;'; put 'put ''NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4''@;'; put 'put ''XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2''@;'; put 'put ''ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM3XS5sZW5ndGg7Kyt2KTY1NTMz''@;'; put 'put ''IT09a1syMzddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzN11bdl1dPTYwNjcyK3YsVFs2MDY3Mit2XT1rWzIzN11bdl0pO2ZvcihrWzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1''@;'; put 'put ''NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3''@;'; put 'put ''YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1''@;'; put 'put ''ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ZmZmZFx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVj''@;'; put 'put ''Zlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1''@;'; put 'put ''OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1Zjlk''@;'; put 'put ''Y1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1''@;'; put 'put ''OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMVx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzOF0ubGVu''@;'; put 'put ''Z3RoOysrdik2NTUzMyE9PWtbMjM4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzhdW3ZdXT02MDkyOCt2LFRbNjA5Mjgrdl09a1syMzhdW3ZdKTtmb3Ioa1syNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIxNzBcdTIxNzFc''@;'; put 'put ''dTIxNzJcdTIxNzNcdTIxNzRcdTIxNzVcdTIxNzZcdTIxNzdcdTIxNzhcdTIxNzlcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTIyMzVcdTdlOGFcdTg5''@;'; put 'put ''MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVcdTUwNDZc''@;'; put 'put ''dTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdWZmZmRcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0OGFcdTU0YTlcdTU0''@;'; put 'put ''ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFcdTVjZjVcdTVkMjdc''@;'; put 'put ''dTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYzZjVcdTY0NjBcdTY0''@;'; put 'put ''OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBcdTY4MDFcdTY4NDRc''@;'; put 'put ''dTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7''@;'; put 'put ''diE9a1syNTBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI1MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjUwXVt2XV09NjRlMyt2LFRbNjRlMyt2XT1rWzI1MF1bdl0pO2ZvcihrWzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJi''@;'; put 'put ''MVx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1''@;'; put 'put ''NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmZmZFx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmEx''@;'; put 'put ''ZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1''@;'; put 'put ''OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1''@;'; put 'put ''MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1''@;'; put 'put ''OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLHY9MDt2IT1rWzI1MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjUxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNTFdW3ZdXT02NDI1Nit2LFRbNjQyNTYrdl09a1syNTFdW3ZdKTtmb3Ioa1syNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNTJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI1Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjUyXVt2XV09NjQ1MTIrdixUWzY0NTEyK3ZdPWtbMjUyXVt2XSk7cmV0dXJue2VuYzpzZSxkZWM6VH19KCksemVbOTM2XT1mdW5jdGlvbigp''@;'; put 'put ''e3ZhciB2LFQ9W10sc2U9e30saz1bXTtmb3Ioa1swXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8w''@;'; put 'put ''MTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1swXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1swXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1swXVt2XV09MCt2LFRbMCt2XT1rWzBdW3ZdKTtmb3Ioa1sxMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMDZcdTRlMGZcdTRlMTJcdTRlMTdcdTRlMWZcdTRlMjBcdTRlMjFcdTRlMjNcdTRlMjZcdTRlMjlcdTRlMmVcdTRlMmZcdTRlMzFcdTRlMzNcdTRlMzVcdTRlMzdcdTRlM2NcdTRlNDBcdTRlNDFcdTRlNDJc''@;'; put 'put ''dTRlNDRcdTRlNDZcdTRlNGFcdTRlNTFcdTRlNTVcdTRlNTdcdTRlNWFcdTRlNWJcdTRlNjJcdTRlNjNcdTRlNjRcdTRlNjVcdTRlNjdcdTRlNjhcdTRlNmFcdTRlNmJcdTRlNmNcdTRlNmRcdTRlNmVcdTRlNmZcdTRlNzJcdTRlNzRcdTRlNzVcdTRlNzZcdTRlNzdcdTRlNzhcdTRlNzlcdTRl''@;'; put 'put ''N2FcdTRlN2JcdTRlN2NcdTRlN2RcdTRlN2ZcdTRlODBcdTRlODFcdTRlODJcdTRlODNcdTRlODRcdTRlODVcdTRlODdcdTRlOGFcdWZmZmRcdTRlOTBcdTRlOTZcdTRlOTdcdTRlOTlcdTRlOWNcdTRlOWRcdTRlOWVcdTRlYTNcdTRlYWFcdTRlYWZcdTRlYjBcdTRlYjFcdTRlYjRcdTRlYjZc''@;'; put 'put ''dTRlYjdcdTRlYjhcdTRlYjlcdTRlYmNcdTRlYmRcdTRlYmVcdTRlYzhcdTRlY2NcdTRlY2ZcdTRlZDBcdTRlZDJcdTRlZGFcdTRlZGJcdTRlZGNcdTRlZTBcdTRlZTJcdTRlZTZcdTRlZTdcdTRlZTlcdTRlZWRcdTRlZWVcdTRlZWZcdTRlZjFcdTRlZjRcdTRlZjhcdTRlZjlcdTRlZmFcdTRl''@;'; put 'put ''ZmNcdTRlZmVcdTRmMDBcdTRmMDJcdTRmMDNcdTRmMDRcdTRmMDVcdTRmMDZcdTRmMDdcdTRmMDhcdTRmMGJcdTRmMGNcdTRmMTJcdTRmMTNcdTRmMTRcdTRmMTVcdTRmMTZcdTRmMWNcdTRmMWRcdTRmMjFcdTRmMjNcdTRmMjhcdTRmMjlcdTRmMmNcdTRmMmRcdTRmMmVcdTRmMzFcdTRmMzNc''@;'; put 'put ''dTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2VcdTRmM2ZcdTRmNDBcdTRmNDFcdTRmNDJcdTRmNDRcdTRmNDVcdTRmNDdcdTRmNDhcdTRmNDlcdTRmNGFcdTRmNGJcdTRmNGNcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNjFcdTRmNjJcdTRmNjZcdTRmNjhcdTRmNmFcdTRmNmJcdTRmNmRcdTRm''@;'; put 'put ''NmVcdTRmNzFcdTRmNzJcdTRmNzVcdTRmNzdcdTRmNzhcdTRmNzlcdTRmN2FcdTRmN2RcdTRmODBcdTRmODFcdTRmODJcdTRmODVcdTRmODZcdTRmODdcdTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTVcdTRmOTZcdTRmOThcdTRmOTlcdTRmOWFcdTRmOWNcdTRmOWVc''@;'; put 'put ''dTRmOWZcdTRmYTFcdTRmYTJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMjldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEyOV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTI5XVt2XV09MzMwMjQrdixUWzMzMDI0K3ZdPWtbMTI5XVt2XSk7Zm9yKGtbMTMwXT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZmE0XHU0ZmFiXHU0ZmFkXHU0ZmIwXHU0ZmIxXHU0ZmIyXHU0ZmIzXHU0ZmI0XHU0ZmI2XHU0ZmI3XHU0ZmI4XHU0ZmI5XHU0ZmJhXHU0ZmJiXHU0ZmJjXHU0ZmJkXHU0ZmJlXHU0ZmMwXHU0ZmMxXHU0ZmMyXHU0ZmM2''@;'; put 'put ''XHU0ZmM3XHU0ZmM4XHU0ZmM5XHU0ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmQyXHU0ZmQzXHU0ZmQ0XHU0ZmQ1XHU0ZmQ2XHU0ZmQ5XHU0ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2XHU0ZmY3XHU0ZmY5XHU0''@;'; put 'put ''ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmXHU1MDAwXHU1MDAxXHU1MDAyXHU1MDAzXHU1MDA0XHU1MDA1XHU1MDA2XHU1MDA3XHU1MDA4XHU1MDA5XHU1MDBhXHVmZmZkXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDExXHU1MDEzXHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1MDFkXHU1MDFlXHU1MDIw''@;'; put 'put ''XHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmXHU1MDMwXHU1MDMxXHU1MDMyXHU1MDMzXHU1MDM0XHU1MDM1XHU1MDM2XHU1MDM3XHU1MDM4XHU1MDM5XHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2XHU1MDQ5XHU1MDRhXHU1''@;'; put 'put ''MDRiXHU1MDRkXHU1MDUwXHU1MDUxXHU1MDUyXHU1MDUzXHU1MDU0XHU1MDU2XHU1MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVkXHU1MDVlXHU1MDVmXHU1MDYwXHU1MDYxXHU1MDYyXHU1MDYzXHU1MDY0XHU1MDY2XHU1MDY3XHU1MDY4XHU1MDY5XHU1MDZhXHU1MDZiXHU1MDZkXHU1MDZl''@;'; put 'put ''XHU1MDZmXHU1MDcwXHU1MDcxXHU1MDcyXHU1MDczXHU1MDc0XHU1MDc1XHU1MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlXHU1MDhmXHU1MDkwXHU1MDkxXHU1MDkyXHU1''@;'; put 'put ''MDkzXHU1MDk0XHU1MDk1XHU1MDk2XHU1MDk3XHU1MDk4XHU1MDk5XHU1MDlhXHU1MDliXHU1MDljXHU1MDlkXHU1MDllXHU1MDlmXHU1MGEwXHU1MGExXHU1MGEyXHU1MGE0XHU1MGE2XHU1MGFhXHU1MGFiXHU1MGFkXHU1MGFlXHU1MGFmXHU1MGIwXHU1MGIxXHU1MGIzXHU1MGI0XHU1MGI1''@;'; put 'put ''XHU1MGI2XHU1MGI3XHU1MGI4XHU1MGI5XHU1MGJjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTMwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzMF1bdl1dPTMzMjgwK3YsVFszMzI4MCt2XT1rWzEzMF1bdl0pO2ZvcihrWzEzMV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTBiZFx1NTBiZVx1NTBiZlx1NTBjMFx1NTBjMVx1NTBjMlx1NTBjM1x1NTBjNFx1NTBjNVx1NTBjNlx1NTBjN1x1NTBjOFx1NTBjOVx1NTBjYVx1NTBjYlx1NTBjY1x1NTBjZFx1NTBjZVx1NTBk''@;'; put 'put ''MFx1NTBkMVx1NTBkMlx1NTBkM1x1NTBkNFx1NTBkNVx1NTBkN1x1NTBkOFx1NTBkOVx1NTBkYlx1NTBkY1x1NTBkZFx1NTBkZVx1NTBkZlx1NTBlMFx1NTBlMVx1NTBlMlx1NTBlM1x1NTBlNFx1NTBlNVx1NTBlOFx1NTBlOVx1NTBlYVx1NTBlYlx1NTBlZlx1NTBmMFx1NTBmMVx1NTBmMlx1''@;'; put 'put ''NTBmNFx1NTBmNlx1NTBmN1x1NTBmOFx1NTBmOVx1NTBmYVx1NTBmY1x1NTBmZFx1NTBmZVx1NTBmZlx1NTEwMFx1NTEwMVx1NTEwMlx1NTEwM1x1NTEwNFx1NTEwNVx1NTEwOFx1ZmZmZFx1NTEwOVx1NTEwYVx1NTEwY1x1NTEwZFx1NTEwZVx1NTEwZlx1NTExMFx1NTExMVx1NTExM1x1NTEx''@;'; put 'put ''NFx1NTExNVx1NTExNlx1NTExN1x1NTExOFx1NTExOVx1NTExYVx1NTExYlx1NTExY1x1NTExZFx1NTExZVx1NTExZlx1NTEyMFx1NTEyMlx1NTEyM1x1NTEyNFx1NTEyNVx1NTEyNlx1NTEyN1x1NTEyOFx1NTEyOVx1NTEyYVx1NTEyYlx1NTEyY1x1NTEyZFx1NTEyZVx1NTEyZlx1NTEzMFx1''@;'; put 'put ''NTEzMVx1NTEzMlx1NTEzM1x1NTEzNFx1NTEzNVx1NTEzNlx1NTEzN1x1NTEzOFx1NTEzOVx1NTEzYVx1NTEzYlx1NTEzY1x1NTEzZFx1NTEzZVx1NTE0Mlx1NTE0N1x1NTE0YVx1NTE0Y1x1NTE0ZVx1NTE0Zlx1NTE1MFx1NTE1Mlx1NTE1M1x1NTE1N1x1NTE1OFx1NTE1OVx1NTE1Ylx1NTE1''@;'; put 'put ''ZFx1NTE1ZVx1NTE1Zlx1NTE2MFx1NTE2MVx1NTE2M1x1NTE2NFx1NTE2Nlx1NTE2N1x1NTE2OVx1NTE2YVx1NTE2Zlx1NTE3Mlx1NTE3YVx1NTE3ZVx1NTE3Zlx1NTE4M1x1NTE4NFx1NTE4Nlx1NTE4N1x1NTE4YVx1NTE4Ylx1NTE4ZVx1NTE4Zlx1NTE5MFx1NTE5MVx1NTE5M1x1NTE5NFx1''@;'; put 'put ''NTE5OFx1NTE5YVx1NTE5ZFx1NTE5ZVx1NTE5Zlx1NTFhMVx1NTFhM1x1NTFhNlx1NTFhN1x1NTFhOFx1NTFhOVx1NTFhYVx1NTFhZFx1NTFhZVx1NTFiNFx1NTFiOFx1NTFiOVx1NTFiYVx1NTFiZVx1NTFiZlx1NTFjMVx1NTFjMlx1NTFjM1x1NTFjNVx1NTFjOFx1NTFjYVx1NTFjZFx1NTFj''@;'; put 'put ''ZVx1NTFkMFx1NTFkMlx1NTFkM1x1NTFkNFx1NTFkNVx1NTFkNlx1NTFkN1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTMxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzFdW3ZdXT0zMzUzNit2LFRbMzM1MzYrdl09a1sxMzFdW3ZdKTtm''@;'; put 'put ''b3Ioa1sxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUxZDhcdTUxZDlcdTUxZGFcdTUxZGNcdTUxZGVcdTUxZGZcdTUxZTJcdTUxZTNcdTUxZTVcdTUxZTZcdTUxZTdcdTUxZThcdTUxZTlcdTUxZWFcdTUxZWNcdTUxZWVcdTUx''@;'; put 'put ''ZjFcdTUxZjJcdTUxZjRcdTUxZjdcdTUxZmVcdTUyMDRcdTUyMDVcdTUyMDlcdTUyMGJcdTUyMGNcdTUyMGZcdTUyMTBcdTUyMTNcdTUyMTRcdTUyMTVcdTUyMWNcdTUyMWVcdTUyMWZcdTUyMjFcdTUyMjJcdTUyMjNcdTUyMjVcdTUyMjZcdTUyMjdcdTUyMmFcdTUyMmNcdTUyMmZcdTUyMzFc''@;'; put 'put ''dTUyMzJcdTUyMzRcdTUyMzVcdTUyM2NcdTUyM2VcdTUyNDRcdTUyNDVcdTUyNDZcdTUyNDdcdTUyNDhcdTUyNDlcdTUyNGJcdTUyNGVcdTUyNGZcdTUyNTJcdTUyNTNcdTUyNTVcdTUyNTdcdTUyNThcdWZmZmRcdTUyNTlcdTUyNWFcdTUyNWJcdTUyNWRcdTUyNWZcdTUyNjBcdTUyNjJcdTUy''@;'; put 'put ''NjNcdTUyNjRcdTUyNjZcdTUyNjhcdTUyNmJcdTUyNmNcdTUyNmRcdTUyNmVcdTUyNzBcdTUyNzFcdTUyNzNcdTUyNzRcdTUyNzVcdTUyNzZcdTUyNzdcdTUyNzhcdTUyNzlcdTUyN2FcdTUyN2JcdTUyN2NcdTUyN2VcdTUyODBcdTUyODNcdTUyODRcdTUyODVcdTUyODZcdTUyODdcdTUyODlc''@;'; put 'put ''dTUyOGFcdTUyOGJcdTUyOGNcdTUyOGRcdTUyOGVcdTUyOGZcdTUyOTFcdTUyOTJcdTUyOTRcdTUyOTVcdTUyOTZcdTUyOTdcdTUyOThcdTUyOTlcdTUyOWFcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWVcdTUyYWZcdTUyYjBcdTUyYjRcdTUyYjVcdTUyYjZcdTUyYjdcdTUy''@;'; put 'put ''YjhcdTUyYjlcdTUyYmFcdTUyYmJcdTUyYmNcdTUyYmRcdTUyYzBcdTUyYzFcdTUyYzJcdTUyYzRcdTUyYzVcdTUyYzZcdTUyYzhcdTUyY2FcdTUyY2NcdTUyY2RcdTUyY2VcdTUyY2ZcdTUyZDFcdTUyZDNcdTUyZDRcdTUyZDVcdTUyZDdcdTUyZDlcdTUyZGFcdTUyZGJcdTUyZGNcdTUyZGRc''@;'; put 'put ''dTUyZGVcdTUyZTBcdTUyZTFcdTUyZTJcdTUyZTNcdTUyZTVcdTUyZTZcdTUyZTdcdTUyZThcdTUyZTlcdTUyZWFcdTUyZWJcdTUyZWNcdTUyZWRcdTUyZWVcdTUyZWZcdTUyZjFcdTUyZjJcdTUyZjNcdTUyZjRcdTUyZjVcdTUyZjZcdTUyZjdcdTUyZjhcdTUyZmJcdTUyZmNcdTUyZmRcdTUz''@;'; put 'put ''MDFcdTUzMDJcdTUzMDNcdTUzMDRcdTUzMDdcdTUzMDlcdTUzMGFcdTUzMGJcdTUzMGNcdTUzMGVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTMyXVt2XV09MzM3OTIrdixUWzMzNzkyK3Zd''@;'; put 'put ''PWtbMTMyXVt2XSk7Zm9yKGtbMTMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzExXHU1MzEyXHU1MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzIyXHU1MzI0XHU1MzI1XHU1MzI3XHU1MzI4XHU1''@;'; put 'put ''MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmXHU1MzMwXHU1MzMxXHU1MzMyXHU1MzMzXHU1MzM0XHU1MzM1XHU1MzM2XHU1MzM3XHU1MzM4XHU1MzNjXHU1MzNkXHU1MzQwXHU1MzQyXHU1MzQ0XHU1MzQ2XHU1MzRiXHU1MzRjXHU1MzRkXHU1MzUwXHU1MzU0XHU1MzU4XHU1MzU5XHU1MzVi''@;'; put 'put ''XHU1MzVkXHU1MzY1XHU1MzY4XHU1MzZhXHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc2XHU1Mzc5XHU1MzdiXHU1MzdjXHU1MzdkXHU1MzdlXHU1MzgwXHU1MzgxXHU1MzgzXHU1Mzg3XHU1Mzg4XHU1MzhhXHU1MzhlXHU1MzhmXHVmZmZkXHU1MzkwXHU1MzkxXHU1MzkyXHU1MzkzXHU1Mzk0XHU1''@;'; put 'put ''Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2FjXHU1M2FkXHU1M2FmXHU1M2IwXHU1M2IxXHU1M2IyXHU1M2IzXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1M2JjXHU1M2JkXHU1M2Jl''@;'; put 'put ''XHU1M2MwXHU1M2MzXHU1M2M0XHU1M2M1XHU1M2M2XHU1M2M3XHU1M2NlXHU1M2NmXHU1M2QwXHU1M2QyXHU1M2QzXHU1M2Q1XHU1M2RhXHU1M2RjXHU1M2RkXHU1M2RlXHU1M2UxXHU1M2UyXHU1M2U3XHU1M2Y0XHU1M2ZhXHU1M2ZlXHU1M2ZmXHU1NDAwXHU1NDAyXHU1NDA1XHU1NDA3XHU1''@;'; put 'put ''NDBiXHU1NDE0XHU1NDE4XHU1NDE5XHU1NDFhXHU1NDFjXHU1NDIyXHU1NDI0XHU1NDI1XHU1NDJhXHU1NDMwXHU1NDMzXHU1NDM2XHU1NDM3XHU1NDNhXHU1NDNkXHU1NDNmXHU1NDQxXHU1NDQyXHU1NDQ0XHU1NDQ1XHU1NDQ3XHU1NDQ5XHU1NDRjXHU1NDRkXHU1NDRlXHU1NDRmXHU1NDUx''@;'; put 'put ''XHU1NDVhXHU1NDVkXHU1NDVlXHU1NDVmXHU1NDYwXHU1NDYxXHU1NDYzXHU1NDY1XHU1NDY3XHU1NDY5XHU1NDZhXHU1NDZiXHU1NDZjXHU1NDZkXHU1NDZlXHU1NDZmXHU1NDcwXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1NDgxXHU1NDgzXHU1NDg1XHU1NDg3XHU1NDg4XHU1''@;'; put 'put ''NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1NDllXHU1NDlmXHU1NGEwXHU1NGExXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTMzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzM11bdl1dPTM0MDQ4''@;'; put 'put ''K3YsVFszNDA0OCt2XT1rWzEzM11bdl0pO2ZvcihrWzEzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhMlx1NTRhNVx1NTRhZVx1NTRiMFx1NTRiMlx1NTRiNVx1NTRiNlx1NTRiN1x1NTRiOVx1NTRiYVx1NTRiY1x1NTRiZVx1''@;'; put 'put ''NTRjM1x1NTRjNVx1NTRjYVx1NTRjYlx1NTRkNlx1NTRkOFx1NTRkYlx1NTRlMFx1NTRlMVx1NTRlMlx1NTRlM1x1NTRlNFx1NTRlYlx1NTRlY1x1NTRlZlx1NTRmMFx1NTRmMVx1NTRmNFx1NTRmNVx1NTRmNlx1NTRmN1x1NTRmOFx1NTRmOVx1NTRmYlx1NTRmZVx1NTUwMFx1NTUwMlx1NTUw''@;'; put 'put ''M1x1NTUwNFx1NTUwNVx1NTUwOFx1NTUwYVx1NTUwYlx1NTUwY1x1NTUwZFx1NTUwZVx1NTUxMlx1NTUxM1x1NTUxNVx1NTUxNlx1NTUxN1x1NTUxOFx1NTUxOVx1NTUxYVx1NTUxY1x1NTUxZFx1NTUxZVx1NTUxZlx1NTUyMVx1NTUyNVx1NTUyNlx1ZmZmZFx1NTUyOFx1NTUyOVx1NTUyYlx1''@;'; put 'put ''NTUyZFx1NTUzMlx1NTUzNFx1NTUzNVx1NTUzNlx1NTUzOFx1NTUzOVx1NTUzYVx1NTUzYlx1NTUzZFx1NTU0MFx1NTU0Mlx1NTU0NVx1NTU0N1x1NTU0OFx1NTU0Ylx1NTU0Y1x1NTU0ZFx1NTU0ZVx1NTU0Zlx1NTU1MVx1NTU1Mlx1NTU1M1x1NTU1NFx1NTU1N1x1NTU1OFx1NTU1OVx1NTU1''@;'; put 'put ''YVx1NTU1Ylx1NTU1ZFx1NTU1ZVx1NTU1Zlx1NTU2MFx1NTU2Mlx1NTU2M1x1NTU2OFx1NTU2OVx1NTU2Ylx1NTU2Zlx1NTU3MFx1NTU3MVx1NTU3Mlx1NTU3M1x1NTU3NFx1NTU3OVx1NTU3YVx1NTU3ZFx1NTU3Zlx1NTU4NVx1NTU4Nlx1NTU4Y1x1NTU4ZFx1NTU4ZVx1NTU5MFx1NTU5Mlx1''@;'; put 'put ''NTU5M1x1NTU5NVx1NTU5Nlx1NTU5N1x1NTU5YVx1NTU5Ylx1NTU5ZVx1NTVhMFx1NTVhMVx1NTVhMlx1NTVhM1x1NTVhNFx1NTVhNVx1NTVhNlx1NTVhOFx1NTVhOVx1NTVhYVx1NTVhYlx1NTVhY1x1NTVhZFx1NTVhZVx1NTVhZlx1NTViMFx1NTViMlx1NTViNFx1NTViNlx1NTViOFx1NTVi''@;'; put 'put ''YVx1NTViY1x1NTViZlx1NTVjMFx1NTVjMVx1NTVjMlx1NTVjM1x1NTVjNlx1NTVjN1x1NTVjOFx1NTVjYVx1NTVjYlx1NTVjZVx1NTVjZlx1NTVkMFx1NTVkNVx1NTVkN1x1NTVkOFx1NTVkOVx1NTVkYVx1NTVkYlx1NTVkZVx1NTVlMFx1NTVlMlx1NTVlN1x1NTVlOVx1NTVlZFx1NTVlZVx1''@;'; put 'put ''NTVmMFx1NTVmMVx1NTVmNFx1NTVmNlx1NTVmOFx1NTVmOVx1NTVmYVx1NTVmYlx1NTVmY1x1NTVmZlx1NTYwMlx1NTYwM1x1NTYwNFx1NTYwNVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTM0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sx''@;'; put 'put ''MzRdW3ZdXT0zNDMwNCt2LFRbMzQzMDQrdl09a1sxMzRdW3ZdKTtmb3Ioa1sxMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2MDZcdTU2MDdcdTU2MGFcdTU2MGJcdTU2MGRcdTU2MTBcdTU2MTFcdTU2MTJcdTU2MTNcdTU2MTRc''@;'; put 'put ''dTU2MTVcdTU2MTZcdTU2MTdcdTU2MTlcdTU2MWFcdTU2MWNcdTU2MWRcdTU2MjBcdTU2MjFcdTU2MjJcdTU2MjVcdTU2MjZcdTU2MjhcdTU2MjlcdTU2MmFcdTU2MmJcdTU2MmVcdTU2MmZcdTU2MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2MzhcdTU2M2FcdTU2M2NcdTU2M2RcdTU2M2VcdTU2''@;'; put 'put ''NDBcdTU2NDFcdTU2NDJcdTU2NDNcdTU2NDRcdTU2NDVcdTU2NDZcdTU2NDdcdTU2NDhcdTU2NDlcdTU2NGFcdTU2NGJcdTU2NGZcdTU2NTBcdTU2NTFcdTU2NTJcdTU2NTNcdTU2NTVcdTU2NTZcdTU2NWFcdTU2NWJcdTU2NWRcdTU2NWVcdTU2NWZcdTU2NjBcdTU2NjFcdWZmZmRcdTU2NjNc''@;'; put 'put ''dTU2NjVcdTU2NjZcdTU2NjdcdTU2NmRcdTU2NmVcdTU2NmZcdTU2NzBcdTU2NzJcdTU2NzNcdTU2NzRcdTU2NzVcdTU2NzdcdTU2NzhcdTU2NzlcdTU2N2FcdTU2N2RcdTU2N2VcdTU2N2ZcdTU2ODBcdTU2ODFcdTU2ODJcdTU2ODNcdTU2ODRcdTU2ODdcdTU2ODhcdTU2ODlcdTU2OGFcdTU2''@;'; put 'put ''OGJcdTU2OGNcdTU2OGRcdTU2OTBcdTU2OTFcdTU2OTJcdTU2OTRcdTU2OTVcdTU2OTZcdTU2OTdcdTU2OThcdTU2OTlcdTU2OWFcdTU2OWJcdTU2OWNcdTU2OWRcdTU2OWVcdTU2OWZcdTU2YTBcdTU2YTFcdTU2YTJcdTU2YTRcdTU2YTVcdTU2YTZcdTU2YTdcdTU2YThcdTU2YTlcdTU2YWFc''@;'; put 'put ''dTU2YWJcdTU2YWNcdTU2YWRcdTU2YWVcdTU2YjBcdTU2YjFcdTU2YjJcdTU2YjNcdTU2YjRcdTU2YjVcdTU2YjZcdTU2YjhcdTU2YjlcdTU2YmFcdTU2YmJcdTU2YmRcdTU2YmVcdTU2YmZcdTU2YzBcdTU2YzFcdTU2YzJcdTU2YzNcdTU2YzRcdTU2YzVcdTU2YzZcdTU2YzdcdTU2YzhcdTU2''@;'; put 'put ''YzlcdTU2Y2JcdTU2Y2NcdTU2Y2RcdTU2Y2VcdTU2Y2ZcdTU2ZDBcdTU2ZDFcdTU2ZDJcdTU2ZDNcdTU2ZDVcdTU2ZDZcdTU2ZDhcdTU2ZDlcdTU2ZGNcdTU2ZTNcdTU2ZTVcdTU2ZTZcdTU2ZTdcdTU2ZThcdTU2ZTlcdTU2ZWFcdTU2ZWNcdTU2ZWVcdTU2ZWZcdTU2ZjJcdTU2ZjNcdTU2ZjZc''@;'; put 'put ''dTU2ZjdcdTU2ZjhcdTU2ZmJcdTU2ZmNcdTU3MDBcdTU3MDFcdTU3MDJcdTU3MDVcdTU3MDdcdTU3MGJcdTU3MGNcdTU3MGRcdTU3MGVcdTU3MGZcdTU3MTBcdTU3MTFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzNV1bdl0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKHNlW2tbMTM1XVt2XV09MzQ1NjArdixUWzM0NTYwK3ZdPWtbMTM1XVt2XSk7Zm9yKGtbMTM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzEyXHU1NzEzXHU1NzE0XHU1NzE1XHU1NzE2XHU1NzE3XHU1NzE4XHU1NzE5''@;'; put 'put ''XHU1NzFhXHU1NzFiXHU1NzFkXHU1NzFlXHU1NzIwXHU1NzIxXHU1NzIyXHU1NzI0XHU1NzI1XHU1NzI2XHU1NzI3XHU1NzJiXHU1NzMxXHU1NzMyXHU1NzM0XHU1NzM1XHU1NzM2XHU1NzM3XHU1NzM4XHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0XHU1NzQ1XHU1NzQ2XHU1''@;'; put 'put ''NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyXHU1NzUzXHU1NzU0XHU1NzU1XHU1NzU2XHU1NzU4XHU1NzU5XHU1NzYyXHU1NzYzXHU1NzY1XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1NzdlXHU1NzdmXHU1Nzgw''@;'; put 'put ''XHVmZmZkXHU1NzgxXHU1Nzg3XHU1Nzg4XHU1Nzg5XHU1NzhhXHU1NzhkXHU1NzhlXHU1NzhmXHU1NzkwXHU1NzkxXHU1Nzk0XHU1Nzk1XHU1Nzk2XHU1Nzk3XHU1Nzk4XHU1Nzk5XHU1NzlhXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2FhXHU1N2FjXHU1N2FmXHU1''@;'; put 'put ''N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5XHU1N2JhXHU1N2JiXHU1N2JjXHU1N2JkXHU1N2JlXHU1N2JmXHU1N2MwXHU1N2MxXHU1N2M0XHU1N2M1XHU1N2M2XHU1N2M3XHU1N2M4XHU1N2M5XHU1N2NhXHU1N2NjXHU1N2NkXHU1N2QwXHU1N2QxXHU1N2QzXHU1N2Q2''@;'; put 'put ''XHU1N2Q3XHU1N2RiXHU1N2RjXHU1N2RlXHU1N2UxXHU1N2UyXHU1N2UzXHU1N2U1XHU1N2U2XHU1N2U3XHU1N2U4XHU1N2U5XHU1N2VhXHU1N2ViXHU1N2VjXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2ZjXHU1N2ZlXHU1N2ZmXHU1''@;'; put 'put ''ODAxXHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBlXHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEzXHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1XHU1ODI2XHU1ODI3XHU1ODI4''@;'; put 'put ''XHU1ODI5XHU1ODJiXHU1ODJjXHU1ODJkXHU1ODJlXHU1ODJmXHU1ODMxXHU1ODMyXHU1ODMzXHU1ODM0XHU1ODM2XHU1ODM3XHU1ODM4XHU1ODM5XHU1ODNhXHU1ODNiXHU1ODNjXHU1ODNkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTM2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzZd''@;'; put 'put ''W3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzNl1bdl1dPTM0ODE2K3YsVFszNDgxNit2XT1rWzEzNl1bdl0pO2ZvcihrWzEzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgzZVx1NTgzZlx1NTg0MFx1NTg0MVx1NTg0Mlx1NTg0''@;'; put 'put ''M1x1NTg0NVx1NTg0Nlx1NTg0N1x1NTg0OFx1NTg0OVx1NTg0YVx1NTg0Ylx1NTg0ZVx1NTg0Zlx1NTg1MFx1NTg1Mlx1NTg1M1x1NTg1NVx1NTg1Nlx1NTg1N1x1NTg1OVx1NTg1YVx1NTg1Ylx1NTg1Y1x1NTg1ZFx1NTg1Zlx1NTg2MFx1NTg2MVx1NTg2Mlx1NTg2M1x1NTg2NFx1NTg2Nlx1''@;'; put 'put ''NTg2N1x1NTg2OFx1NTg2OVx1NTg2YVx1NTg2ZFx1NTg2ZVx1NTg2Zlx1NTg3MFx1NTg3MVx1NTg3Mlx1NTg3M1x1NTg3NFx1NTg3NVx1NTg3Nlx1NTg3N1x1NTg3OFx1NTg3OVx1NTg3YVx1NTg3Ylx1NTg3Y1x1NTg3ZFx1NTg3Zlx1NTg4Mlx1NTg4NFx1NTg4Nlx1NTg4N1x1NTg4OFx1NTg4''@;'; put 'put ''YVx1NTg4Ylx1NTg4Y1x1ZmZmZFx1NTg4ZFx1NTg4ZVx1NTg4Zlx1NTg5MFx1NTg5MVx1NTg5NFx1NTg5NVx1NTg5Nlx1NTg5N1x1NTg5OFx1NTg5Ylx1NTg5Y1x1NTg5ZFx1NThhMFx1NThhMVx1NThhMlx1NThhM1x1NThhNFx1NThhNVx1NThhNlx1NThhN1x1NThhYVx1NThhYlx1NThhY1x1''@;'; put 'put ''NThhZFx1NThhZVx1NThhZlx1NThiMFx1NThiMVx1NThiMlx1NThiM1x1NThiNFx1NThiNVx1NThiNlx1NThiN1x1NThiOFx1NThiOVx1NThiYVx1NThiYlx1NThiZFx1NThiZVx1NThiZlx1NThjMFx1NThjMlx1NThjM1x1NThjNFx1NThjNlx1NThjN1x1NThjOFx1NThjOVx1NThjYVx1NThj''@;'; put 'put ''Ylx1NThjY1x1NThjZFx1NThjZVx1NThjZlx1NThkMFx1NThkMlx1NThkM1x1NThkNFx1NThkNlx1NThkN1x1NThkOFx1NThkOVx1NThkYVx1NThkYlx1NThkY1x1NThkZFx1NThkZVx1NThkZlx1NThlMFx1NThlMVx1NThlMlx1NThlM1x1NThlNVx1NThlNlx1NThlN1x1NThlOFx1NThlOVx1''@;'; put 'put ''NThlYVx1NThlZFx1NThlZlx1NThmMVx1NThmMlx1NThmNFx1NThmNVx1NThmN1x1NThmOFx1NThmYVx1NThmYlx1NThmY1x1NThmZFx1NThmZVx1NThmZlx1NTkwMFx1NTkwMVx1NTkwM1x1NTkwNVx1NTkwNlx1NTkwOFx1NTkwOVx1NTkwYVx1NTkwYlx1NTkwY1x1NTkwZVx1NTkxMFx1NTkx''@;'; put 'put ''MVx1NTkxMlx1NTkxM1x1NTkxN1x1NTkxOFx1NTkxYlx1NTkxZFx1NTkxZVx1NTkyMFx1NTkyMVx1NTkyMlx1NTkyM1x1NTkyNlx1NTkyOFx1NTkyY1x1NTkzMFx1NTkzMlx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzYlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzN10ubGVuZ3RoOysrdik2''@;'; put 'put ''NTUzMyE9PWtbMTM3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzddW3ZdXT0zNTA3Mit2LFRbMzUwNzIrdl09a1sxMzddW3ZdKTtmb3Ioa1sxMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5M2RcdTU5M2VcdTU5M2ZcdTU5''@;'; put 'put ''NDBcdTU5NDNcdTU5NDVcdTU5NDZcdTU5NGFcdTU5NGNcdTU5NGRcdTU5NTBcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWJcdTU5NWNcdTU5NWRcdTU5NWVcdTU5NWZcdTU5NjFcdTU5NjNcdTU5NjRcdTU5NjZcdTU5NjdcdTU5NjhcdTU5NjlcdTU5NmFcdTU5NmJcdTU5NmNcdTU5NmRcdTU5NmVc''@;'; put 'put ''dTU5NmZcdTU5NzBcdTU5NzFcdTU5NzJcdTU5NzVcdTU5NzdcdTU5N2FcdTU5N2JcdTU5N2NcdTU5N2VcdTU5N2ZcdTU5ODBcdTU5ODVcdTU5ODlcdTU5OGJcdTU5OGNcdTU5OGVcdTU5OGZcdTU5OTBcdTU5OTFcdTU5OTRcdTU5OTVcdTU5OThcdTU5OWFcdTU5OWJcdTU5OWNcdTU5OWRcdTU5''@;'; put 'put ''OWZcdTU5YTBcdTU5YTFcdTU5YTJcdTU5YTZcdWZmZmRcdTU5YTdcdTU5YWNcdTU5YWRcdTU5YjBcdTU5YjFcdTU5YjNcdTU5YjRcdTU5YjVcdTU5YjZcdTU5YjdcdTU5YjhcdTU5YmFcdTU5YmNcdTU5YmRcdTU5YmZcdTU5YzBcdTU5YzFcdTU5YzJcdTU5YzNcdTU5YzRcdTU5YzVcdTU5Yzdc''@;'; put 'put ''dTU5YzhcdTU5YzlcdTU5Y2NcdTU5Y2RcdTU5Y2VcdTU5Y2ZcdTU5ZDVcdTU5ZDZcdTU5ZDlcdTU5ZGJcdTU5ZGVcdTU5ZGZcdTU5ZTBcdTU5ZTFcdTU5ZTJcdTU5ZTRcdTU5ZTZcdTU5ZTdcdTU5ZTlcdTU5ZWFcdTU5ZWJcdTU5ZWRcdTU5ZWVcdTU5ZWZcdTU5ZjBcdTU5ZjFcdTU5ZjJcdTU5''@;'; put 'put ''ZjNcdTU5ZjRcdTU5ZjVcdTU5ZjZcdTU5ZjdcdTU5ZjhcdTU5ZmFcdTU5ZmNcdTU5ZmRcdTU5ZmVcdTVhMDBcdTVhMDJcdTVhMGFcdTVhMGJcdTVhMGRcdTVhMGVcdTVhMGZcdTVhMTBcdTVhMTJcdTVhMTRcdTVhMTVcdTVhMTZcdTVhMTdcdTVhMTlcdTVhMWFcdTVhMWJcdTVhMWRcdTVhMWVc''@;'; put 'put ''dTVhMjFcdTVhMjJcdTVhMjRcdTVhMjZcdTVhMjdcdTVhMjhcdTVhMmFcdTVhMmJcdTVhMmNcdTVhMmRcdTVhMmVcdTVhMmZcdTVhMzBcdTVhMzNcdTVhMzVcdTVhMzdcdTVhMzhcdTVhMzlcdTVhM2FcdTVhM2JcdTVhM2RcdTVhM2VcdTVhM2ZcdTVhNDFcdTVhNDJcdTVhNDNcdTVhNDRcdTVh''@;'; put 'put ''NDVcdTVhNDdcdTVhNDhcdTVhNGJcdTVhNGNcdTVhNGRcdTVhNGVcdTVhNGZcdTVhNTBcdTVhNTFcdTVhNTJcdTVhNTNcdTVhNTRcdTVhNTZcdTVhNTdcdTVhNThcdTVhNTlcdTVhNWJcdTVhNWNcdTVhNWRcdTVhNWVcdTVhNWZcdTVhNjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzhd''@;'; put 'put ''Lmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTM4XVt2XV09MzUzMjgrdixUWzM1MzI4K3ZdPWtbMTM4XVt2XSk7Zm9yKGtbMTM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTYxXHU1''@;'; put 'put ''YTYzXHU1YTY0XHU1YTY1XHU1YTY2XHU1YTY4XHU1YTY5XHU1YTZiXHU1YTZjXHU1YTZkXHU1YTZlXHU1YTZmXHU1YTcwXHU1YTcxXHU1YTcyXHU1YTczXHU1YTc4XHU1YTc5XHU1YTdiXHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwXHU1YTgxXHU1YTgyXHU1YTgzXHU1YTg0XHU1YTg1XHU1YTg2''@;'; put 'put ''XHU1YTg3XHU1YTg4XHU1YTg5XHU1YThhXHU1YThiXHU1YThjXHU1YThkXHU1YThlXHU1YThmXHU1YTkwXHU1YTkxXHU1YTkzXHU1YTk0XHU1YTk1XHU1YTk2XHU1YTk3XHU1YTk4XHU1YTk5XHU1YTljXHU1YTlkXHU1YTllXHU1YTlmXHU1YWEwXHU1YWExXHU1YWEyXHU1YWEzXHU1YWE0XHU1''@;'; put 'put ''YWE1XHU1YWE2XHU1YWE3XHU1YWE4XHU1YWE5XHU1YWFiXHU1YWFjXHVmZmZkXHU1YWFkXHU1YWFlXHU1YWFmXHU1YWIwXHU1YWIxXHU1YWI0XHU1YWI2XHU1YWI3XHU1YWI5XHU1YWJhXHU1YWJiXHU1YWJjXHU1YWJkXHU1YWJmXHU1YWMwXHU1YWMzXHU1YWM0XHU1YWM1XHU1YWM2XHU1YWM3''@;'; put 'put ''XHU1YWM4XHU1YWNhXHU1YWNiXHU1YWNkXHU1YWNlXHU1YWNmXHU1YWQwXHU1YWQxXHU1YWQzXHU1YWQ1XHU1YWQ3XHU1YWQ5XHU1YWRhXHU1YWRiXHU1YWRkXHU1YWRlXHU1YWRmXHU1YWUyXHU1YWU0XHU1YWU1XHU1YWU3XHU1YWU4XHU1YWVhXHU1YWVjXHU1YWVkXHU1YWVlXHU1YWVmXHU1''@;'; put 'put ''YWYwXHU1YWYyXHU1YWYzXHU1YWY0XHU1YWY1XHU1YWY2XHU1YWY3XHU1YWY4XHU1YWY5XHU1YWZhXHU1YWZiXHU1YWZjXHU1YWZkXHU1YWZlXHU1YWZmXHU1YjAwXHU1YjAxXHU1YjAyXHU1YjAzXHU1YjA0XHU1YjA1XHU1YjA2XHU1YjA3XHU1YjA4XHU1YjBhXHU1YjBiXHU1YjBjXHU1YjBk''@;'; put 'put ''XHU1YjBlXHU1YjBmXHU1YjEwXHU1YjExXHU1YjEyXHU1YjEzXHU1YjE0XHU1YjE1XHU1YjE4XHU1YjE5XHU1YjFhXHU1YjFiXHU1YjFjXHU1YjFkXHU1YjFlXHU1YjFmXHU1YjIwXHU1YjIxXHU1YjIyXHU1YjIzXHU1YjI0XHU1YjI1XHU1YjI2XHU1YjI3XHU1YjI4XHU1YjI5XHU1YjJhXHU1''@;'; put 'put ''YjJiXHU1YjJjXHU1YjJkXHU1YjJlXHU1YjJmXHU1YjMwXHU1YjMxXHU1YjMzXHU1YjM1XHU1YjM2XHU1YjM4XHU1YjM5XHU1YjNhXHU1YjNiXHU1YjNjXHU1YjNkXHU1YjNlXHU1YjNmXHU1YjQxXHU1YjQyXHU1YjQzXHU1YjQ0XHU1YjQ1XHU1YjQ2XHU1YjQ3XHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''dj0wO3YhPWtbMTM5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzOV1bdl1dPTM1NTg0K3YsVFszNTU4NCt2XT1rWzEzOV1bdl0pO2ZvcihrWzE0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NWI0OFx1NWI0OVx1NWI0YVx1NWI0Ylx1NWI0Y1x1NWI0ZFx1NWI0ZVx1NWI0Zlx1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2MFx1NWI2MVx1NWI2N1x1NWI2OFx1NWI2Ylx1NWI2ZFx1NWI2ZVx1NWI2Zlx1NWI3Mlx1NWI3NFx1NWI3Nlx1NWI3N1x1NWI3OFx1NWI3OVx1NWI3Ylx1NWI3''@;'; put 'put ''Y1x1NWI3ZVx1NWI3Zlx1NWI4Mlx1NWI4Nlx1NWI4YVx1NWI4ZFx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5Mlx1NWI5NFx1NWI5Nlx1NWI5Zlx1NWJhN1x1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZVx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJiYlx1NWJiY1x1NWJjMFx1''@;'; put 'put ''NWJjMVx1NWJjM1x1NWJjOFx1NWJjOVx1NWJjYVx1NWJjYlx1NWJjZFx1NWJjZVx1NWJjZlx1ZmZmZFx1NWJkMVx1NWJkNFx1NWJkNVx1NWJkNlx1NWJkN1x1NWJkOFx1NWJkOVx1NWJkYVx1NWJkYlx1NWJkY1x1NWJlMFx1NWJlMlx1NWJlM1x1NWJlNlx1NWJlN1x1NWJlOVx1NWJlYVx1NWJl''@;'; put 'put ''Ylx1NWJlY1x1NWJlZFx1NWJlZlx1NWJmMVx1NWJmMlx1NWJmM1x1NWJmNFx1NWJmNVx1NWJmNlx1NWJmN1x1NWJmZFx1NWJmZVx1NWMwMFx1NWMwMlx1NWMwM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwYlx1NWMwY1x1NWMwZFx1NWMwZVx1NWMxMFx1NWMxMlx1NWMxM1x1NWMxN1x1NWMxOVx1''@;'; put 'put ''NWMxYlx1NWMxZVx1NWMxZlx1NWMyMFx1NWMyMVx1NWMyM1x1NWMyNlx1NWMyOFx1NWMyOVx1NWMyYVx1NWMyYlx1NWMyZFx1NWMyZVx1NWMyZlx1NWMzMFx1NWMzMlx1NWMzM1x1NWMzNVx1NWMzNlx1NWMzN1x1NWM0M1x1NWM0NFx1NWM0Nlx1NWM0N1x1NWM0Y1x1NWM0ZFx1NWM1Mlx1NWM1''@;'; put 'put ''M1x1NWM1NFx1NWM1Nlx1NWM1N1x1NWM1OFx1NWM1YVx1NWM1Ylx1NWM1Y1x1NWM1ZFx1NWM1Zlx1NWM2Mlx1NWM2NFx1NWM2N1x1NWM2OFx1NWM2OVx1NWM2YVx1NWM2Ylx1NWM2Y1x1NWM2ZFx1NWM3MFx1NWM3Mlx1NWM3M1x1NWM3NFx1NWM3NVx1NWM3Nlx1NWM3N1x1NWM3OFx1NWM3Ylx1''@;'; put 'put ''NWM3Y1x1NWM3ZFx1NWM3ZVx1NWM4MFx1NWM4M1x1NWM4NFx1NWM4NVx1NWM4Nlx1NWM4N1x1NWM4OVx1NWM4YVx1NWM4Ylx1NWM4ZVx1NWM4Zlx1NWM5Mlx1NWM5M1x1NWM5NVx1NWM5ZFx1NWM5ZVx1NWM5Zlx1NWNhMFx1NWNhMVx1NWNhNFx1NWNhNVx1NWNhNlx1NWNhN1x1NWNhOFx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDBdW3ZdXT0zNTg0MCt2LFRbMzU4NDArdl09a1sxNDBdW3ZdKTtmb3Ioa1sxNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTVjYWFcdTVjYWVcdTVjYWZcdTVjYjBcdTVjYjJcdTVjYjRcdTVjYjZcdTVjYjlcdTVjYmFcdTVjYmJcdTVjYmNcdTVjYmVcdTVjYzBcdTVjYzJcdTVjYzNcdTVjYzVcdTVjYzZcdTVjYzdcdTVjYzhcdTVjYzlcdTVjY2FcdTVjY2NcdTVjY2RcdTVjY2VcdTVj''@;'; put 'put ''Y2ZcdTVjZDBcdTVjZDFcdTVjZDNcdTVjZDRcdTVjZDVcdTVjZDZcdTVjZDdcdTVjZDhcdTVjZGFcdTVjZGJcdTVjZGNcdTVjZGRcdTVjZGVcdTVjZGZcdTVjZTBcdTVjZTJcdTVjZTNcdTVjZTdcdTVjZTlcdTVjZWJcdTVjZWNcdTVjZWVcdTVjZWZcdTVjZjFcdTVjZjJcdTVjZjNcdTVjZjRc''@;'; put 'put ''dTVjZjVcdTVjZjZcdTVjZjdcdTVjZjhcdTVjZjlcdTVjZmFcdTVjZmNcdTVjZmRcdTVjZmVcdTVjZmZcdTVkMDBcdWZmZmRcdTVkMDFcdTVkMDRcdTVkMDVcdTVkMDhcdTVkMDlcdTVkMGFcdTVkMGJcdTVkMGNcdTVkMGRcdTVkMGZcdTVkMTBcdTVkMTFcdTVkMTJcdTVkMTNcdTVkMTVcdTVk''@;'; put 'put ''MTdcdTVkMThcdTVkMTlcdTVkMWFcdTVkMWNcdTVkMWRcdTVkMWZcdTVkMjBcdTVkMjFcdTVkMjJcdTVkMjNcdTVkMjVcdTVkMjhcdTVkMmFcdTVkMmJcdTVkMmNcdTVkMmZcdTVkMzBcdTVkMzFcdTVkMzJcdTVkMzNcdTVkMzVcdTVkMzZcdTVkMzdcdTVkMzhcdTVkMzlcdTVkM2FcdTVkM2Jc''@;'; put 'put ''dTVkM2NcdTVkM2ZcdTVkNDBcdTVkNDFcdTVkNDJcdTVkNDNcdTVkNDRcdTVkNDVcdTVkNDZcdTVkNDhcdTVkNDlcdTVkNGRcdTVkNGVcdTVkNGZcdTVkNTBcdTVkNTFcdTVkNTJcdTVkNTNcdTVkNTRcdTVkNTVcdTVkNTZcdTVkNTdcdTVkNTlcdTVkNWFcdTVkNWNcdTVkNWVcdTVkNWZcdTVk''@;'; put 'put ''NjBcdTVkNjFcdTVkNjJcdTVkNjNcdTVkNjRcdTVkNjVcdTVkNjZcdTVkNjdcdTVkNjhcdTVkNmFcdTVkNmRcdTVkNmVcdTVkNzBcdTVkNzFcdTVkNzJcdTVkNzNcdTVkNzVcdTVkNzZcdTVkNzdcdTVkNzhcdTVkNzlcdTVkN2FcdTVkN2JcdTVkN2NcdTVkN2RcdTVkN2VcdTVkN2ZcdTVkODBc''@;'; put 'put ''dTVkODFcdTVkODNcdTVkODRcdTVkODVcdTVkODZcdTVkODdcdTVkODhcdTVkODlcdTVkOGFcdTVkOGJcdTVkOGNcdTVkOGRcdTVkOGVcdTVkOGZcdTVkOTBcdTVkOTFcdTVkOTJcdTVkOTNcdTVkOTRcdTVkOTVcdTVkOTZcdTVkOTdcdTVkOThcdTVkOWFcdTVkOWJcdTVkOWNcdTVkOWVcdTVk''@;'; put 'put ''OWZcdTVkYTBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQxXVt2XV09MzYwOTYrdixUWzM2MDk2K3ZdPWtbMTQxXVt2XSk7Zm9yKGtbMTQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZGExXHU1ZGEyXHU1ZGEzXHU1ZGE0XHU1ZGE1XHU1ZGE2XHU1ZGE3XHU1ZGE4XHU1ZGE5XHU1ZGFhXHU1ZGFiXHU1ZGFjXHU1ZGFkXHU1ZGFlXHU1ZGFmXHU1ZGIwXHU1ZGIxXHU1ZGIyXHU1ZGIzXHU1ZGI0XHU1ZGI1XHU1ZGI2XHU1''@;'; put 'put ''ZGI4XHU1ZGI5XHU1ZGJhXHU1ZGJiXHU1ZGJjXHU1ZGJkXHU1ZGJlXHU1ZGJmXHU1ZGMwXHU1ZGMxXHU1ZGMyXHU1ZGMzXHU1ZGM0XHU1ZGM2XHU1ZGM3XHU1ZGM4XHU1ZGM5XHU1ZGNhXHU1ZGNiXHU1ZGNjXHU1ZGNlXHU1ZGNmXHU1ZGQwXHU1ZGQxXHU1ZGQyXHU1ZGQzXHU1ZGQ0XHU1ZGQ1''@;'; put 'put ''XHU1ZGQ2XHU1ZGQ3XHU1ZGQ4XHU1ZGQ5XHU1ZGRhXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1ZGU0XHU1ZGVhXHU1ZGVjXHU1ZGVkXHVmZmZkXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4XHU1ZGY5XHU1ZGZhXHU1ZGZiXHU1ZGZjXHU1ZGZmXHU1ZTAwXHU1ZTA0XHU1ZTA3XHU1ZTA5XHU1''@;'; put 'put ''ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1ZTEzXHU1ZTE3XHU1ZTFlXHU1ZTFmXHU1ZTIwXHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTI0XHU1ZTI1XHU1ZTI4XHU1ZTI5XHU1ZTJhXHU1ZTJiXHU1ZTJjXHU1ZTJmXHU1ZTMwXHU1ZTMyXHU1ZTMzXHU1ZTM0XHU1ZTM1XHU1ZTM2XHU1ZTM5''@;'; put 'put ''XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2XHU1ZTQ3XHU1ZTQ4XHU1ZTQ5XHU1ZTRhXHU1ZTRiXHU1ZTRkXHU1ZTRlXHU1ZTRmXHU1ZTUwXHU1ZTUxXHU1ZTUyXHU1ZTUzXHU1ZTU2XHU1ZTU3XHU1ZTU4XHU1ZTU5XHU1ZTVhXHU1ZTVjXHU1ZTVkXHU1ZTVmXHU1''@;'; put 'put ''ZTYwXHU1ZTYzXHU1ZTY0XHU1ZTY1XHU1ZTY2XHU1ZTY3XHU1ZTY4XHU1ZTY5XHU1ZTZhXHU1ZTZiXHU1ZTZjXHU1ZTZkXHU1ZTZlXHU1ZTZmXHU1ZTcwXHU1ZTcxXHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1ZTgzXHU1ZTg1XHU1ZTg4XHU1ZTg5XHU1ZThjXHU1ZThk''@;'; put 'put ''XHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1ZWE4XHU1ZWE5XHU1ZWFhXHU1ZWFiXHU1ZWFjXHU1ZWFlXHU1ZWFmXHU1ZWIwXHU1ZWIxXHU1ZWIyXHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJmXHU1ZWMwXHU1ZWMxXHU1''@;'; put 'put ''ZWMyXHU1ZWMzXHU1ZWM0XHU1ZWM1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0Ml1bdl1dPTM2MzUyK3YsVFszNjM1Mit2XT1rWzE0Ml1bdl0pO2ZvcihrWzE0M109Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWVjNlx1NWVjN1x1NWVjOFx1NWVjYlx1NWVjY1x1NWVjZFx1NWVjZVx1NWVjZlx1NWVkMFx1NWVkNFx1NWVkNVx1NWVkN1x1NWVkOFx1NWVkOVx1NWVkYVx1NWVkY1x1NWVkZFx1NWVkZVx1NWVkZlx1NWVlMFx1''@;'; put 'put ''NWVlMVx1NWVlMlx1NWVlM1x1NWVlNFx1NWVlNVx1NWVlNlx1NWVlN1x1NWVlOVx1NWVlYlx1NWVlY1x1NWVlZFx1NWVlZVx1NWVlZlx1NWVmMFx1NWVmMVx1NWVmMlx1NWVmM1x1NWVmNVx1NWVmOFx1NWVmOVx1NWVmYlx1NWVmY1x1NWVmZFx1NWYwNVx1NWYwNlx1NWYwN1x1NWYwOVx1NWYw''@;'; put 'put ''Y1x1NWYwZFx1NWYwZVx1NWYxMFx1NWYxMlx1NWYxNFx1NWYxNlx1NWYxOVx1NWYxYVx1NWYxY1x1NWYxZFx1NWYxZVx1NWYyMVx1NWYyMlx1NWYyM1x1NWYyNFx1ZmZmZFx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYzMlx1NWYzM1x1NWYzNFx1NWYzNVx1NWYzNlx1NWYzN1x1''@;'; put 'put ''NWYzOFx1NWYzYlx1NWYzZFx1NWYzZVx1NWYzZlx1NWY0MVx1NWY0Mlx1NWY0M1x1NWY0NFx1NWY0NVx1NWY0Nlx1NWY0N1x1NWY0OFx1NWY0OVx1NWY0YVx1NWY0Ylx1NWY0Y1x1NWY0ZFx1NWY0ZVx1NWY0Zlx1NWY1MVx1NWY1NFx1NWY1OVx1NWY1YVx1NWY1Ylx1NWY1Y1x1NWY1ZVx1NWY1''@;'; put 'put ''Zlx1NWY2MFx1NWY2M1x1NWY2NVx1NWY2N1x1NWY2OFx1NWY2Ylx1NWY2ZVx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3Nlx1NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY3Zlx1NWY4M1x1NWY4Nlx1NWY4ZFx1NWY4ZVx1NWY4Zlx1NWY5MVx1NWY5M1x1NWY5NFx1NWY5Nlx1NWY5YVx1''@;'; put 'put ''NWY5Ylx1NWY5ZFx1NWY5ZVx1NWY5Zlx1NWZhMFx1NWZhMlx1NWZhM1x1NWZhNFx1NWZhNVx1NWZhNlx1NWZhN1x1NWZhOVx1NWZhYlx1NWZhY1x1NWZhZlx1NWZiMFx1NWZiMVx1NWZiMlx1NWZiM1x1NWZiNFx1NWZiNlx1NWZiOFx1NWZiOVx1NWZiYVx1NWZiYlx1NWZiZVx1NWZiZlx1NWZj''@;'; put 'put ''MFx1NWZjMVx1NWZjMlx1NWZjN1x1NWZjOFx1NWZjYVx1NWZjYlx1NWZjZVx1NWZkM1x1NWZkNFx1NWZkNVx1NWZkYVx1NWZkYlx1NWZkY1x1NWZkZVx1NWZkZlx1NWZlMlx1NWZlM1x1NWZlNVx1NWZlNlx1NWZlOFx1NWZlOVx1NWZlY1x1NWZlZlx1NWZmMFx1NWZmMlx1NWZmM1x1NWZmNFx1''@;'; put 'put ''NWZmNlx1NWZmN1x1NWZmOVx1NWZmYVx1NWZmY1x1NjAwN1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDNdW3ZdXT0zNjYwOCt2LFRbMzY2MDgrdl09a1sxNDNdW3ZdKTtmb3Ioa1sxNDRd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwMDhcdTYwMDlcdTYwMGJcdTYwMGNcdTYwMTBcdTYwMTFcdTYwMTNcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWVcdTYwMWZcdTYwMjJcdTYwMjNcdTYwMjRcdTYwMmNcdTYwMmRcdTYwMmVc''@;'; put 'put ''dTYwMzBcdTYwMzFcdTYwMzJcdTYwMzNcdTYwMzRcdTYwMzZcdTYwMzdcdTYwMzhcdTYwMzlcdTYwM2FcdTYwM2RcdTYwM2VcdTYwNDBcdTYwNDRcdTYwNDVcdTYwNDZcdTYwNDdcdTYwNDhcdTYwNDlcdTYwNGFcdTYwNGNcdTYwNGVcdTYwNGZcdTYwNTFcdTYwNTNcdTYwNTRcdTYwNTZcdTYw''@;'; put 'put ''NTdcdTYwNThcdTYwNWJcdTYwNWNcdTYwNWVcdTYwNWZcdTYwNjBcdTYwNjFcdTYwNjVcdTYwNjZcdTYwNmVcdTYwNzFcdTYwNzJcdTYwNzRcdTYwNzVcdTYwNzdcdTYwN2VcdTYwODBcdWZmZmRcdTYwODFcdTYwODJcdTYwODVcdTYwODZcdTYwODdcdTYwODhcdTYwOGFcdTYwOGJcdTYwOGVc''@;'; put 'put ''dTYwOGZcdTYwOTBcdTYwOTFcdTYwOTNcdTYwOTVcdTYwOTdcdTYwOThcdTYwOTlcdTYwOWNcdTYwOWVcdTYwYTFcdTYwYTJcdTYwYTRcdTYwYTVcdTYwYTdcdTYwYTlcdTYwYWFcdTYwYWVcdTYwYjBcdTYwYjNcdTYwYjVcdTYwYjZcdTYwYjdcdTYwYjlcdTYwYmFcdTYwYmRcdTYwYmVcdTYw''@;'; put 'put ''YmZcdTYwYzBcdTYwYzFcdTYwYzJcdTYwYzNcdTYwYzRcdTYwYzdcdTYwYzhcdTYwYzlcdTYwY2NcdTYwY2RcdTYwY2VcdTYwY2ZcdTYwZDBcdTYwZDJcdTYwZDNcdTYwZDRcdTYwZDZcdTYwZDdcdTYwZDlcdTYwZGJcdTYwZGVcdTYwZTFcdTYwZTJcdTYwZTNcdTYwZTRcdTYwZTVcdTYwZWFc''@;'; put 'put ''dTYwZjFcdTYwZjJcdTYwZjVcdTYwZjdcdTYwZjhcdTYwZmJcdTYwZmNcdTYwZmRcdTYwZmVcdTYwZmZcdTYxMDJcdTYxMDNcdTYxMDRcdTYxMDVcdTYxMDdcdTYxMGFcdTYxMGJcdTYxMGNcdTYxMTBcdTYxMTFcdTYxMTJcdTYxMTNcdTYxMTRcdTYxMTZcdTYxMTdcdTYxMThcdTYxMTlcdTYx''@;'; put 'put ''MWJcdTYxMWNcdTYxMWRcdTYxMWVcdTYxMjFcdTYxMjJcdTYxMjVcdTYxMjhcdTYxMjlcdTYxMmFcdTYxMmNcdTYxMmRcdTYxMmVcdTYxMmZcdTYxMzBcdTYxMzFcdTYxMzJcdTYxMzNcdTYxMzRcdTYxMzVcdTYxMzZcdTYxMzdcdTYxMzhcdTYxMzlcdTYxM2FcdTYxM2JcdTYxM2NcdTYxM2Rc''@;'; put 'put ''dTYxM2VcdTYxNDBcdTYxNDFcdTYxNDJcdTYxNDNcdTYxNDRcdTYxNDVcdTYxNDZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQ0XVt2XV09MzY4NjQrdixUWzM2ODY0K3ZdPWtbMTQ0XVt2''@;'; put 'put ''XSk7Zm9yKGtbMTQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTQ3XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2XHU2MTU3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTViXHU2MTVj''@;'; put 'put ''XHU2MTVlXHU2MTVmXHU2MTYwXHU2MTYxXHU2MTYzXHU2MTY0XHU2MTY1XHU2MTY2XHU2MTY5XHU2MTZhXHU2MTZiXHU2MTZjXHU2MTZkXHU2MTZlXHU2MTZmXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4XHU2MTc5XHU2MTdhXHU2MTdiXHU2MTdjXHU2MTdkXHU2MTdlXHU2''@;'; put 'put ''MTdmXHU2MTgwXHU2MTgxXHU2MTgyXHU2MTgzXHU2MTg0XHU2MTg1XHU2MTg2XHU2MTg3XHU2MTg4XHU2MTg5XHU2MThhXHU2MThjXHU2MThkXHU2MThmXHU2MTkwXHU2MTkxXHU2MTkyXHU2MTkzXHU2MTk1XHVmZmZkXHU2MTk2XHU2MTk3XHU2MTk4XHU2MTk5XHU2MTlhXHU2MTliXHU2MTlj''@;'; put 'put ''XHU2MTllXHU2MTlmXHU2MWEwXHU2MWExXHU2MWEyXHU2MWEzXHU2MWE0XHU2MWE1XHU2MWE2XHU2MWFhXHU2MWFiXHU2MWFkXHU2MWFlXHU2MWFmXHU2MWIwXHU2MWIxXHU2MWIyXHU2MWIzXHU2MWI0XHU2MWI1XHU2MWI2XHU2MWI4XHU2MWI5XHU2MWJhXHU2MWJiXHU2MWJjXHU2MWJkXHU2''@;'; put 'put ''MWJmXHU2MWMwXHU2MWMxXHU2MWMzXHU2MWM0XHU2MWM1XHU2MWM2XHU2MWM3XHU2MWM5XHU2MWNjXHU2MWNkXHU2MWNlXHU2MWNmXHU2MWQwXHU2MWQzXHU2MWQ1XHU2MWQ2XHU2MWQ3XHU2MWQ4XHU2MWQ5XHU2MWRhXHU2MWRiXHU2MWRjXHU2MWRkXHU2MWRlXHU2MWRmXHU2MWUwXHU2MWUx''@;'; put 'put ''XHU2MWUyXHU2MWUzXHU2MWU0XHU2MWU1XHU2MWU3XHU2MWU4XHU2MWU5XHU2MWVhXHU2MWViXHU2MWVjXHU2MWVkXHU2MWVlXHU2MWVmXHU2MWYwXHU2MWYxXHU2MWYyXHU2MWYzXHU2MWY0XHU2MWY2XHU2MWY3XHU2MWY4XHU2MWY5XHU2MWZhXHU2MWZiXHU2MWZjXHU2MWZkXHU2MWZlXHU2''@;'; put 'put ''MjAwXHU2MjAxXHU2MjAyXHU2MjAzXHU2MjA0XHU2MjA1XHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0XHU2MjE5XHU2MjFjXHU2MjFkXHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2MjMyXHU2MjM1XHU2MjM2''@;'; put 'put ''XHU2MjM4XHU2MjM5XHU2MjNhXHU2MjNiXHU2MjNjXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0NV1bdl1dPTM3MTIwK3YsVFszNzEy''@;'; put 'put ''MCt2XT1rWzE0NV1bdl0pO2ZvcihrWzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjI0Zlx1NjI1MFx1NjI1NVx1NjI1Nlx1NjI1N1x1NjI1OVx1NjI1YVx1NjI1Y1x1NjI1ZFx1NjI1ZVx1NjI1Zlx1NjI2MFx1NjI2MVx1NjI2''@;'; put 'put ''Mlx1NjI2NFx1NjI2NVx1NjI2OFx1NjI3MVx1NjI3Mlx1NjI3NFx1NjI3NVx1NjI3N1x1NjI3OFx1NjI3YVx1NjI3Ylx1NjI3ZFx1NjI4MVx1NjI4Mlx1NjI4M1x1NjI4NVx1NjI4Nlx1NjI4N1x1NjI4OFx1NjI4Ylx1NjI4Y1x1NjI4ZFx1NjI4ZVx1NjI4Zlx1NjI5MFx1NjI5NFx1NjI5OVx1''@;'; put 'put ''NjI5Y1x1NjI5ZFx1NjI5ZVx1NjJhM1x1NjJhNlx1NjJhN1x1NjJhOVx1NjJhYVx1NjJhZFx1NjJhZVx1NjJhZlx1NjJiMFx1NjJiMlx1NjJiM1x1NjJiNFx1NjJiNlx1NjJiN1x1NjJiOFx1NjJiYVx1NjJiZVx1NjJjMFx1NjJjMVx1ZmZmZFx1NjJjM1x1NjJjYlx1NjJjZlx1NjJkMVx1NjJk''@;'; put 'put ''NVx1NjJkZFx1NjJkZVx1NjJlMFx1NjJlMVx1NjJlNFx1NjJlYVx1NjJlYlx1NjJmMFx1NjJmMlx1NjJmNVx1NjJmOFx1NjJmOVx1NjJmYVx1NjJmYlx1NjMwMFx1NjMwM1x1NjMwNFx1NjMwNVx1NjMwNlx1NjMwYVx1NjMwYlx1NjMwY1x1NjMwZFx1NjMwZlx1NjMxMFx1NjMxMlx1NjMxM1x1''@;'; put 'put ''NjMxNFx1NjMxNVx1NjMxN1x1NjMxOFx1NjMxOVx1NjMxY1x1NjMyNlx1NjMyN1x1NjMyOVx1NjMyY1x1NjMyZFx1NjMyZVx1NjMzMFx1NjMzMVx1NjMzM1x1NjMzNFx1NjMzNVx1NjMzNlx1NjMzN1x1NjMzOFx1NjMzYlx1NjMzY1x1NjMzZVx1NjMzZlx1NjM0MFx1NjM0MVx1NjM0NFx1NjM0''@;'; put 'put ''N1x1NjM0OFx1NjM0YVx1NjM1MVx1NjM1Mlx1NjM1M1x1NjM1NFx1NjM1Nlx1NjM1N1x1NjM1OFx1NjM1OVx1NjM1YVx1NjM1Ylx1NjM1Y1x1NjM1ZFx1NjM2MFx1NjM2NFx1NjM2NVx1NjM2Nlx1NjM2OFx1NjM2YVx1NjM2Ylx1NjM2Y1x1NjM2Zlx1NjM3MFx1NjM3Mlx1NjM3M1x1NjM3NFx1''@;'; put 'put ''NjM3NVx1NjM3OFx1NjM3OVx1NjM3Y1x1NjM3ZFx1NjM3ZVx1NjM3Zlx1NjM4MVx1NjM4M1x1NjM4NFx1NjM4NVx1NjM4Nlx1NjM4Ylx1NjM4ZFx1NjM5MVx1NjM5M1x1NjM5NFx1NjM5NVx1NjM5N1x1NjM5OVx1NjM5YVx1NjM5Ylx1NjM5Y1x1NjM5ZFx1NjM5ZVx1NjM5Zlx1NjNhMVx1NjNh''@;'; put 'put ''NFx1NjNhNlx1NjNhYlx1NjNhZlx1NjNiMVx1NjNiMlx1NjNiNVx1NjNiNlx1NjNiOVx1NjNiYlx1NjNiZFx1NjNiZlx1NjNjMFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQ2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDZdW3ZdXT0z''@;'; put 'put ''NzM3Nit2LFRbMzczNzYrdl09a1sxNDZdW3ZdKTtmb3Ioa1sxNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzYzFcdTYzYzJcdTYzYzNcdTYzYzVcdTYzYzdcdTYzYzhcdTYzY2FcdTYzY2JcdTYzY2NcdTYzZDFcdTYzZDNcdTYz''@;'; put 'put ''ZDRcdTYzZDVcdTYzZDdcdTYzZDhcdTYzZDlcdTYzZGFcdTYzZGJcdTYzZGNcdTYzZGRcdTYzZGZcdTYzZTJcdTYzZTRcdTYzZTVcdTYzZTZcdTYzZTdcdTYzZThcdTYzZWJcdTYzZWNcdTYzZWVcdTYzZWZcdTYzZjBcdTYzZjFcdTYzZjNcdTYzZjVcdTYzZjdcdTYzZjlcdTYzZmFcdTYzZmJc''@;'; put 'put ''dTYzZmNcdTYzZmVcdTY0MDNcdTY0MDRcdTY0MDZcdTY0MDdcdTY0MDhcdTY0MDlcdTY0MGFcdTY0MGRcdTY0MGVcdTY0MTFcdTY0MTJcdTY0MTVcdTY0MTZcdTY0MTdcdTY0MThcdTY0MTlcdTY0MWFcdTY0MWRcdTY0MWZcdTY0MjJcdTY0MjNcdTY0MjRcdWZmZmRcdTY0MjVcdTY0MjdcdTY0''@;'; put 'put ''MjhcdTY0MjlcdTY0MmJcdTY0MmVcdTY0MmZcdTY0MzBcdTY0MzFcdTY0MzJcdTY0MzNcdTY0MzVcdTY0MzZcdTY0MzdcdTY0MzhcdTY0MzlcdTY0M2JcdTY0M2NcdTY0M2VcdTY0NDBcdTY0NDJcdTY0NDNcdTY0NDlcdTY0NGJcdTY0NGNcdTY0NGRcdTY0NGVcdTY0NGZcdTY0NTBcdTY0NTFc''@;'; put 'put ''dTY0NTNcdTY0NTVcdTY0NTZcdTY0NTdcdTY0NTlcdTY0NWFcdTY0NWJcdTY0NWNcdTY0NWRcdTY0NWZcdTY0NjBcdTY0NjFcdTY0NjJcdTY0NjNcdTY0NjRcdTY0NjVcdTY0NjZcdTY0NjhcdTY0NmFcdTY0NmJcdTY0NmNcdTY0NmVcdTY0NmZcdTY0NzBcdTY0NzFcdTY0NzJcdTY0NzNcdTY0''@;'; put 'put ''NzRcdTY0NzVcdTY0NzZcdTY0NzdcdTY0N2JcdTY0N2NcdTY0N2RcdTY0N2VcdTY0N2ZcdTY0ODBcdTY0ODFcdTY0ODNcdTY0ODZcdTY0ODhcdTY0ODlcdTY0OGFcdTY0OGJcdTY0OGNcdTY0OGRcdTY0OGVcdTY0OGZcdTY0OTBcdTY0OTNcdTY0OTRcdTY0OTdcdTY0OThcdTY0OWFcdTY0OWJc''@;'; put 'put ''dTY0OWNcdTY0OWRcdTY0OWZcdTY0YTBcdTY0YTFcdTY0YTJcdTY0YTNcdTY0YTVcdTY0YTZcdTY0YTdcdTY0YThcdTY0YWFcdTY0YWJcdTY0YWZcdTY0YjFcdTY0YjJcdTY0YjNcdTY0YjRcdTY0YjZcdTY0YjlcdTY0YmJcdTY0YmRcdTY0YmVcdTY0YmZcdTY0YzFcdTY0YzNcdTY0YzRcdTY0''@;'; put 'put ''YzZcdTY0YzdcdTY0YzhcdTY0YzlcdTY0Y2FcdTY0Y2JcdTY0Y2NcdTY0Y2ZcdTY0ZDFcdTY0ZDNcdTY0ZDRcdTY0ZDVcdTY0ZDZcdTY0ZDlcdTY0ZGFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0N11bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMTQ3XVt2XV09Mzc2MzIrdixUWzM3NjMyK3ZdPWtbMTQ3XVt2XSk7Zm9yKGtbMTQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NGRiXHU2NGRjXHU2NGRkXHU2NGRmXHU2NGUwXHU2NGUxXHU2NGUzXHU2NGU1XHU2NGU3XHU2''@;'; put 'put ''NGU4XHU2NGU5XHU2NGVhXHU2NGViXHU2NGVjXHU2NGVkXHU2NGVlXHU2NGVmXHU2NGYwXHU2NGYxXHU2NGYyXHU2NGYzXHU2NGY0XHU2NGY1XHU2NGY2XHU2NGY3XHU2NGY4XHU2NGY5XHU2NGZhXHU2NGZiXHU2NGZjXHU2NGZkXHU2NGZlXHU2NGZmXHU2NTAxXHU2NTAyXHU2NTAzXHU2NTA0''@;'; put 'put ''XHU2NTA1XHU2NTA2XHU2NTA3XHU2NTA4XHU2NTBhXHU2NTBiXHU2NTBjXHU2NTBkXHU2NTBlXHU2NTBmXHU2NTEwXHU2NTExXHU2NTEzXHU2NTE0XHU2NTE1XHU2NTE2XHU2NTE3XHU2NTE5XHU2NTFhXHU2NTFiXHU2NTFjXHU2NTFkXHU2NTFlXHU2NTFmXHU2NTIwXHU2NTIxXHVmZmZkXHU2''@;'; put 'put ''NTIyXHU2NTIzXHU2NTI0XHU2NTI2XHU2NTI3XHU2NTI4XHU2NTI5XHU2NTJhXHU2NTJjXHU2NTJkXHU2NTMwXHU2NTMxXHU2NTMyXHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwXHU2NTQxXHU2NTQyXHU2NTQzXHU2NTQ0XHU2NTQ2XHU2NTQ3XHU2NTRhXHU2NTRiXHU2NTRk''@;'; put 'put ''XHU2NTRlXHU2NTUwXHU2NTUyXHU2NTUzXHU2NTU0XHU2NTU3XHU2NTU4XHU2NTVhXHU2NTVjXHU2NTVmXHU2NTYwXHU2NTYxXHU2NTY0XHU2NTY1XHU2NTY3XHU2NTY4XHU2NTY5XHU2NTZhXHU2NTZkXHU2NTZlXHU2NTZmXHU2NTcxXHU2NTczXHU2NTc1XHU2NTc2XHU2NTc4XHU2NTc5XHU2''@;'; put 'put ''NTdhXHU2NTdiXHU2NTdjXHU2NTdkXHU2NTdlXHU2NTdmXHU2NTgwXHU2NTgxXHU2NTgyXHU2NTgzXHU2NTg0XHU2NTg1XHU2NTg2XHU2NTg4XHU2NTg5XHU2NThhXHU2NThkXHU2NThlXHU2NThmXHU2NTkyXHU2NTk0XHU2NTk1XHU2NTk2XHU2NTk4XHU2NTlhXHU2NTlkXHU2NTllXHU2NWEw''@;'; put 'put ''XHU2NWEyXHU2NWEzXHU2NWE2XHU2NWE4XHU2NWFhXHU2NWFjXHU2NWFlXHU2NWIxXHU2NWIyXHU2NWIzXHU2NWI0XHU2NWI1XHU2NWI2XHU2NWI3XHU2NWI4XHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNhXHU2NWNkXHU2NWQwXHU2''@;'; put 'put ''NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4XHU2NWQ5XHU2NWRhXHU2NWRiXHU2NWRjXHU2NWRkXHU2NWRlXHU2NWRmXHU2NWUxXHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDhdW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzE0OF1bdl1dPTM3ODg4K3YsVFszNzg4OCt2XT1rWzE0OF1bdl0pO2ZvcihrWzE0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjVmMlx1NjVmM1x1NjVmNFx1NjVmNVx1NjVmOFx1NjVmOVx1NjVmYlx1''@;'; put 'put ''NjVmY1x1NjVmZFx1NjVmZVx1NjVmZlx1NjYwMVx1NjYwNFx1NjYwNVx1NjYwN1x1NjYwOFx1NjYwOVx1NjYwYlx1NjYwZFx1NjYxMFx1NjYxMVx1NjYxMlx1NjYxNlx1NjYxN1x1NjYxOFx1NjYxYVx1NjYxYlx1NjYxY1x1NjYxZVx1NjYyMVx1NjYyMlx1NjYyM1x1NjYyNFx1NjYyNlx1NjYy''@;'; put 'put ''OVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMlx1NjYzM1x1NjYzN1x1NjYzOFx1NjYzOVx1NjYzYVx1NjYzYlx1NjYzZFx1NjYzZlx1NjY0MFx1NjY0Mlx1NjY0NFx1NjY0NVx1NjY0Nlx1NjY0N1x1NjY0OFx1NjY0OVx1NjY0YVx1NjY0ZFx1NjY0ZVx1NjY1MFx1NjY1MVx1''@;'; put 'put ''NjY1OFx1ZmZmZFx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY1ZFx1NjY1ZVx1NjY2MFx1NjY2Mlx1NjY2M1x1NjY2NVx1NjY2N1x1NjY2OVx1NjY2YVx1NjY2Ylx1NjY2Y1x1NjY2ZFx1NjY3MVx1NjY3Mlx1NjY3M1x1NjY3NVx1NjY3OFx1NjY3OVx1NjY3Ylx1NjY3Y1x1NjY3ZFx1NjY3Zlx1NjY4''@;'; put 'put ''MFx1NjY4MVx1NjY4M1x1NjY4NVx1NjY4Nlx1NjY4OFx1NjY4OVx1NjY4YVx1NjY4Ylx1NjY4ZFx1NjY4ZVx1NjY4Zlx1NjY5MFx1NjY5Mlx1NjY5M1x1NjY5NFx1NjY5NVx1NjY5OFx1NjY5OVx1NjY5YVx1NjY5Ylx1NjY5Y1x1NjY5ZVx1NjY5Zlx1NjZhMFx1NjZhMVx1NjZhMlx1NjZhM1x1''@;'; put 'put ''NjZhNFx1NjZhNVx1NjZhNlx1NjZhOVx1NjZhYVx1NjZhYlx1NjZhY1x1NjZhZFx1NjZhZlx1NjZiMFx1NjZiMVx1NjZiMlx1NjZiM1x1NjZiNVx1NjZiNlx1NjZiN1x1NjZiOFx1NjZiYVx1NjZiYlx1NjZiY1x1NjZiZFx1NjZiZlx1NjZjMFx1NjZjMVx1NjZjMlx1NjZjM1x1NjZjNFx1NjZj''@;'; put 'put ''NVx1NjZjNlx1NjZjN1x1NjZjOFx1NjZjOVx1NjZjYVx1NjZjYlx1NjZjY1x1NjZjZFx1NjZjZVx1NjZjZlx1NjZkMFx1NjZkMVx1NjZkMlx1NjZkM1x1NjZkNFx1NjZkNVx1NjZkNlx1NjZkN1x1NjZkOFx1NjZkYVx1NjZkZVx1NjZkZlx1NjZlMFx1NjZlMVx1NjZlMlx1NjZlM1x1NjZlNFx1''@;'; put 'put ''NjZlNVx1NjZlN1x1NjZlOFx1NjZlYVx1NjZlYlx1NjZlY1x1NjZlZFx1NjZlZVx1NjZlZlx1NjZmMVx1NjZmNVx1NjZmNlx1NjZmOFx1NjZmYVx1NjZmYlx1NjZmZFx1NjcwMVx1NjcwMlx1NjcwM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtb''@;'; put 'put ''MTQ5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDldW3ZdXT0zODE0NCt2LFRbMzgxNDQrdl09a1sxNDldW3ZdKTtmb3Ioa1sxNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY3MDRcdTY3MDVcdTY3MDZcdTY3MDdcdTY3MGNc''@;'; put 'put ''dTY3MGVcdTY3MGZcdTY3MTFcdTY3MTJcdTY3MTNcdTY3MTZcdTY3MThcdTY3MTlcdTY3MWFcdTY3MWNcdTY3MWVcdTY3MjBcdTY3MjFcdTY3MjJcdTY3MjNcdTY3MjRcdTY3MjVcdTY3MjdcdTY3MjlcdTY3MmVcdTY3MzBcdTY3MzJcdTY3MzNcdTY3MzZcdTY3MzdcdTY3MzhcdTY3MzlcdTY3''@;'; put 'put ''M2JcdTY3M2NcdTY3M2VcdTY3M2ZcdTY3NDFcdTY3NDRcdTY3NDVcdTY3NDdcdTY3NGFcdTY3NGJcdTY3NGRcdTY3NTJcdTY3NTRcdTY3NTVcdTY3NTdcdTY3NThcdTY3NTlcdTY3NWFcdTY3NWJcdTY3NWRcdTY3NjJcdTY3NjNcdTY3NjRcdTY3NjZcdTY3NjdcdTY3NmJcdTY3NmNcdTY3NmVc''@;'; put 'put ''dTY3NzFcdTY3NzRcdTY3NzZcdWZmZmRcdTY3NzhcdTY3NzlcdTY3N2FcdTY3N2JcdTY3N2RcdTY3ODBcdTY3ODJcdTY3ODNcdTY3ODVcdTY3ODZcdTY3ODhcdTY3OGFcdTY3OGNcdTY3OGRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTJcdTY3OTNcdTY3OTRcdTY3OTZcdTY3OTlcdTY3OWJcdTY3''@;'; put 'put ''OWZcdTY3YTBcdTY3YTFcdTY3YTRcdTY3YTZcdTY3YTlcdTY3YWNcdTY3YWVcdTY3YjFcdTY3YjJcdTY3YjRcdTY3YjlcdTY3YmFcdTY3YmJcdTY3YmNcdTY3YmRcdTY3YmVcdTY3YmZcdTY3YzBcdTY3YzJcdTY3YzVcdTY3YzZcdTY3YzdcdTY3YzhcdTY3YzlcdTY3Y2FcdTY3Y2JcdTY3Y2Nc''@;'; put 'put ''dTY3Y2RcdTY3Y2VcdTY3ZDVcdTY3ZDZcdTY3ZDdcdTY3ZGJcdTY3ZGZcdTY3ZTFcdTY3ZTNcdTY3ZTRcdTY3ZTZcdTY3ZTdcdTY3ZThcdTY3ZWFcdTY3ZWJcdTY3ZWRcdTY3ZWVcdTY3ZjJcdTY3ZjVcdTY3ZjZcdTY3ZjdcdTY3ZjhcdTY3ZjlcdTY3ZmFcdTY3ZmJcdTY3ZmNcdTY3ZmVcdTY4''@;'; put 'put ''MDFcdTY4MDJcdTY4MDNcdTY4MDRcdTY4MDZcdTY4MGRcdTY4MTBcdTY4MTJcdTY4MTRcdTY4MTVcdTY4MThcdTY4MTlcdTY4MWFcdTY4MWJcdTY4MWNcdTY4MWVcdTY4MWZcdTY4MjBcdTY4MjJcdTY4MjNcdTY4MjRcdTY4MjVcdTY4MjZcdTY4MjdcdTY4MjhcdTY4MmJcdTY4MmNcdTY4MmRc''@;'; put 'put ''dTY4MmVcdTY4MmZcdTY4MzBcdTY4MzFcdTY4MzRcdTY4MzVcdTY4MzZcdTY4M2FcdTY4M2JcdTY4M2ZcdTY4NDdcdTY4NGJcdTY4NGRcdTY4NGZcdTY4NTJcdTY4NTZcdTY4NTdcdTY4NThcdTY4NTlcdTY4NWFcdTY4NWJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTBdLmxlbmd0aDsr''@;'; put 'put ''K3YpNjU1MzMhPT1rWzE1MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTUwXVt2XV09Mzg0MDArdixUWzM4NDAwK3ZdPWtbMTUwXVt2XSk7Zm9yKGtbMTUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ODVjXHU2ODVkXHU2ODVl''@;'; put 'put ''XHU2ODVmXHU2ODZhXHU2ODZjXHU2ODZkXHU2ODZlXHU2ODZmXHU2ODcwXHU2ODcxXHU2ODcyXHU2ODczXHU2ODc1XHU2ODc4XHU2ODc5XHU2ODdhXHU2ODdiXHU2ODdjXHU2ODdkXHU2ODdlXHU2ODdmXHU2ODgwXHU2ODgyXHU2ODg0XHU2ODg3XHU2ODg4XHU2ODg5XHU2ODhhXHU2ODhiXHU2''@;'; put 'put ''ODhjXHU2ODhkXHU2ODhlXHU2ODkwXHU2ODkxXHU2ODkyXHU2ODk0XHU2ODk1XHU2ODk2XHU2ODk4XHU2ODk5XHU2ODlhXHU2ODliXHU2ODljXHU2ODlkXHU2ODllXHU2ODlmXHU2OGEwXHU2OGExXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFiXHU2OGFjXHU2OGFlXHU2OGIx''@;'; put 'put ''XHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4XHVmZmZkXHU2OGI5XHU2OGJhXHU2OGJiXHU2OGJjXHU2OGJkXHU2OGJlXHU2OGJmXHU2OGMxXHU2OGMzXHU2OGM0XHU2OGM1XHU2OGM2XHU2OGM3XHU2OGM4XHU2OGNhXHU2OGNjXHU2OGNlXHU2OGNmXHU2OGQwXHU2OGQxXHU2OGQzXHU2''@;'; put 'put ''OGQ0XHU2OGQ2XHU2OGQ3XHU2OGQ5XHU2OGRiXHU2OGRjXHU2OGRkXHU2OGRlXHU2OGRmXHU2OGUxXHU2OGUyXHU2OGU0XHU2OGU1XHU2OGU2XHU2OGU3XHU2OGU4XHU2OGU5XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2OGY2XHU2OGY3XHU2OGY4''@;'; put 'put ''XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2XHU2OTA3XHU2OTA4XHU2OTA5XHU2OTBhXHU2OTBjXHU2OTBmXHU2OTExXHU2OTEzXHU2OTE0XHU2OTE1XHU2OTE2XHU2OTE3XHU2OTE4XHU2OTE5XHU2OTFhXHU2OTFiXHU2OTFjXHU2OTFkXHU2''@;'; put 'put ''OTFlXHU2OTIxXHU2OTIyXHU2OTIzXHU2OTI1XHU2OTI2XHU2OTI3XHU2OTI4XHU2OTI5XHU2OTJhXHU2OTJiXHU2OTJjXHU2OTJlXHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2OTQwXHU2OTQxXHU2OTQz''@;'; put 'put ''XHU2OTQ0XHU2OTQ1XHU2OTQ2XHU2OTQ3XHU2OTQ4XHU2OTQ5XHU2OTRhXHU2OTRiXHU2OTRjXHU2OTRkXHU2OTRlXHU2OTRmXHU2OTUwXHU2OTUxXHU2OTUyXHU2OTUzXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2OTVmXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtb''@;'; put 'put ''MTUxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1MV1bdl1dPTM4NjU2K3YsVFszODY1Nit2XT1rWzE1MV1bdl0pO2ZvcihrWzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Njk2''@;'; put 'put ''MVx1Njk2Mlx1Njk2NFx1Njk2NVx1Njk2N1x1Njk2OFx1Njk2OVx1Njk2YVx1Njk2Y1x1Njk2ZFx1Njk2Zlx1Njk3MFx1Njk3Mlx1Njk3M1x1Njk3NFx1Njk3NVx1Njk3Nlx1Njk3YVx1Njk3Ylx1Njk3ZFx1Njk3ZVx1Njk3Zlx1Njk4MVx1Njk4M1x1Njk4NVx1Njk4YVx1Njk4Ylx1Njk4Y1x1''@;'; put 'put ''Njk4ZVx1Njk4Zlx1Njk5MFx1Njk5MVx1Njk5Mlx1Njk5M1x1Njk5Nlx1Njk5N1x1Njk5OVx1Njk5YVx1Njk5ZFx1Njk5ZVx1Njk5Zlx1NjlhMFx1NjlhMVx1NjlhMlx1NjlhM1x1NjlhNFx1NjlhNVx1NjlhNlx1NjlhOVx1NjlhYVx1NjlhY1x1NjlhZVx1NjlhZlx1NjliMFx1NjliMlx1Njli''@;'; put 'put ''M1x1NjliNVx1NjliNlx1NjliOFx1NjliOVx1NjliYVx1NjliY1x1NjliZFx1ZmZmZFx1NjliZVx1NjliZlx1NjljMFx1NjljMlx1NjljM1x1NjljNFx1NjljNVx1NjljNlx1NjljN1x1NjljOFx1NjljOVx1NjljYlx1NjljZFx1NjljZlx1NjlkMVx1NjlkMlx1NjlkM1x1NjlkNVx1NjlkNlx1''@;'; put 'put ''NjlkN1x1NjlkOFx1NjlkOVx1NjlkYVx1NjlkY1x1NjlkZFx1NjlkZVx1NjllMVx1NjllMlx1NjllM1x1NjllNFx1NjllNVx1NjllNlx1NjllN1x1NjllOFx1NjllOVx1NjllYVx1NjllYlx1NjllY1x1NjllZVx1NjllZlx1NjlmMFx1NjlmMVx1NjlmM1x1NjlmNFx1NjlmNVx1NjlmNlx1Njlm''@;'; put 'put ''N1x1NjlmOFx1NjlmOVx1NjlmYVx1NjlmYlx1NjlmY1x1NjlmZVx1NmEwMFx1NmEwMVx1NmEwMlx1NmEwM1x1NmEwNFx1NmEwNVx1NmEwNlx1NmEwN1x1NmEwOFx1NmEwOVx1NmEwYlx1NmEwY1x1NmEwZFx1NmEwZVx1NmEwZlx1NmExMFx1NmExMVx1NmExMlx1NmExM1x1NmExNFx1NmExNVx1''@;'; put 'put ''NmExNlx1NmExOVx1NmExYVx1NmExYlx1NmExY1x1NmExZFx1NmExZVx1NmEyMFx1NmEyMlx1NmEyM1x1NmEyNFx1NmEyNVx1NmEyNlx1NmEyN1x1NmEyOVx1NmEyYlx1NmEyY1x1NmEyZFx1NmEyZVx1NmEzMFx1NmEzMlx1NmEzM1x1NmEzNFx1NmEzNlx1NmEzN1x1NmEzOFx1NmEzOVx1NmEz''@;'; put 'put ''YVx1NmEzYlx1NmEzY1x1NmEzZlx1NmE0MFx1NmE0MVx1NmE0Mlx1NmE0M1x1NmE0NVx1NmE0Nlx1NmE0OFx1NmE0OVx1NmE0YVx1NmE0Ylx1NmE0Y1x1NmE0ZFx1NmE0ZVx1NmE0Zlx1NmE1MVx1NmE1Mlx1NmE1M1x1NmE1NFx1NmE1NVx1NmE1Nlx1NmE1N1x1NmE1YVx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLHY9MDt2IT1rWzE1Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTUyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTJdW3ZdXT0zODkxMit2LFRbMzg5MTIrdl09a1sxNTJdW3ZdKTtmb3Ioa1sxNTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTZhNWNcdTZhNWRcdTZhNWVcdTZhNWZcdTZhNjBcdTZhNjJcdTZhNjNcdTZhNjRcdTZhNjZcdTZhNjdcdTZhNjhcdTZhNjlcdTZhNmFcdTZhNmJcdTZhNmNcdTZhNmRcdTZhNmVcdTZhNmZcdTZhNzBcdTZhNzJcdTZhNzNcdTZhNzRcdTZhNzVcdTZhNzZcdTZhNzdcdTZhNzhc''@;'; put 'put ''dTZhN2FcdTZhN2JcdTZhN2RcdTZhN2VcdTZhN2ZcdTZhODFcdTZhODJcdTZhODNcdTZhODVcdTZhODZcdTZhODdcdTZhODhcdTZhODlcdTZhOGFcdTZhOGJcdTZhOGNcdTZhOGRcdTZhOGZcdTZhOTJcdTZhOTNcdTZhOTRcdTZhOTVcdTZhOTZcdTZhOThcdTZhOTlcdTZhOWFcdTZhOWJcdTZh''@;'; put 'put ''OWNcdTZhOWRcdTZhOWVcdTZhOWZcdTZhYTFcdTZhYTJcdTZhYTNcdTZhYTRcdTZhYTVcdTZhYTZcdWZmZmRcdTZhYTdcdTZhYThcdTZhYWFcdTZhYWRcdTZhYWVcdTZhYWZcdTZhYjBcdTZhYjFcdTZhYjJcdTZhYjNcdTZhYjRcdTZhYjVcdTZhYjZcdTZhYjdcdTZhYjhcdTZhYjlcdTZhYmFc''@;'; put 'put ''dTZhYmJcdTZhYmNcdTZhYmRcdTZhYmVcdTZhYmZcdTZhYzBcdTZhYzFcdTZhYzJcdTZhYzNcdTZhYzRcdTZhYzVcdTZhYzZcdTZhYzdcdTZhYzhcdTZhYzlcdTZhY2FcdTZhY2JcdTZhY2NcdTZhY2RcdTZhY2VcdTZhY2ZcdTZhZDBcdTZhZDFcdTZhZDJcdTZhZDNcdTZhZDRcdTZhZDVcdTZh''@;'; put 'put ''ZDZcdTZhZDdcdTZhZDhcdTZhZDlcdTZhZGFcdTZhZGJcdTZhZGNcdTZhZGRcdTZhZGVcdTZhZGZcdTZhZTBcdTZhZTFcdTZhZTJcdTZhZTNcdTZhZTRcdTZhZTVcdTZhZTZcdTZhZTdcdTZhZThcdTZhZTlcdTZhZWFcdTZhZWJcdTZhZWNcdTZhZWRcdTZhZWVcdTZhZWZcdTZhZjBcdTZhZjFc''@;'; put 'put ''dTZhZjJcdTZhZjNcdTZhZjRcdTZhZjVcdTZhZjZcdTZhZjdcdTZhZjhcdTZhZjlcdTZhZmFcdTZhZmJcdTZhZmNcdTZhZmRcdTZhZmVcdTZhZmZcdTZiMDBcdTZiMDFcdTZiMDJcdTZiMDNcdTZiMDRcdTZiMDVcdTZiMDZcdTZiMDdcdTZiMDhcdTZiMDlcdTZiMGFcdTZiMGJcdTZiMGNcdTZi''@;'; put 'put ''MGRcdTZiMGVcdTZiMGZcdTZiMTBcdTZiMTFcdTZiMTJcdTZiMTNcdTZiMTRcdTZiMTVcdTZiMTZcdTZiMTdcdTZiMThcdTZiMTlcdTZiMWFcdTZiMWJcdTZiMWNcdTZiMWRcdTZiMWVcdTZiMWZcdTZiMjVcdTZiMjZcdTZiMjhcdTZiMjlcdTZiMmFcdTZiMmJcdTZiMmNcdTZiMmRcdTZiMmVc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTUzXVt2XV09MzkxNjgrdixUWzM5MTY4K3ZdPWtbMTUzXVt2XSk7Zm9yKGtbMTU0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2YjM0XHU2YjM1XHU2YjM2XHU2YjM4XHU2YjNiXHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkXHU2YjRlXHU2YjRmXHU2YjUw''@;'; put 'put ''XHU2YjUxXHU2YjUyXHU2YjUzXHU2YjU0XHU2YjU1XHU2YjU2XHU2YjU3XHU2YjU4XHU2YjVhXHU2YjViXHU2YjVjXHU2YjVkXHU2YjVlXHU2YjVmXHU2YjYwXHU2YjYxXHU2YjY4XHU2YjY5XHU2YjZiXHU2YjZjXHU2YjZkXHU2YjZlXHU2YjZmXHU2YjcwXHU2YjcxXHU2YjcyXHU2YjczXHU2''@;'; put 'put ''Yjc0XHU2Yjc1XHU2Yjc2XHU2Yjc3XHU2Yjc4XHU2YjdhXHU2YjdkXHU2YjdlXHU2YjdmXHU2YjgwXHU2Yjg1XHU2Yjg4XHVmZmZkXHU2YjhjXHU2YjhlXHU2YjhmXHU2YjkwXHU2YjkxXHU2Yjk0XHU2Yjk1XHU2Yjk3XHU2Yjk4XHU2Yjk5XHU2YjljXHU2YjlkXHU2YjllXHU2YjlmXHU2YmEw''@;'; put 'put ''XHU2YmEyXHU2YmEzXHU2YmE0XHU2YmE1XHU2YmE2XHU2YmE3XHU2YmE4XHU2YmE5XHU2YmFiXHU2YmFjXHU2YmFkXHU2YmFlXHU2YmFmXHU2YmIwXHU2YmIxXHU2YmIyXHU2YmI2XHU2YmI4XHU2YmI5XHU2YmJhXHU2YmJiXHU2YmJjXHU2YmJkXHU2YmJlXHU2YmMwXHU2YmMzXHU2YmM0XHU2''@;'; put 'put ''YmM2XHU2YmM3XHU2YmM4XHU2YmM5XHU2YmNhXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRjXHU2YmRkXHU2YmRlXHU2YmRmXHU2YmUwXHU2YmUyXHU2YmUzXHU2YmU0XHU2YmU1XHU2YmU2XHU2YmU3XHU2YmU4XHU2YmU5XHU2YmVjXHU2YmVkXHU2YmVlXHU2YmYw''@;'; put 'put ''XHU2YmYxXHU2YmYyXHU2YmY0XHU2YmY2XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlXHU2YmZmXHU2YzAwXHU2YzAxXHU2YzAyXHU2YzAzXHU2YzA0XHU2YzA4XHU2YzA5XHU2YzBhXHU2YzBiXHU2YzBjXHU2YzBlXHU2YzEyXHU2YzE3XHU2YzFjXHU2YzFkXHU2YzFlXHU2''@;'; put 'put ''YzIwXHU2YzIzXHU2YzI1XHU2YzJiXHU2YzJjXHU2YzJkXHU2YzMxXHU2YzMzXHU2YzM2XHU2YzM3XHU2YzM5XHU2YzNhXHU2YzNiXHU2YzNjXHU2YzNlXHU2YzNmXHU2YzQzXHU2YzQ0XHU2YzQ1XHU2YzQ4XHU2YzRiXHU2YzRjXHU2YzRkXHU2YzRlXHU2YzRmXHU2YzUxXHU2YzUyXHU2YzUz''@;'; put 'put ''XHU2YzU2XHU2YzU4XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTU0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1NF1bdl1dPTM5NDI0K3YsVFszOTQyNCt2XT1rWzE1NF1bdl0pO2ZvcihrWzE1NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM1OVx1NmM1YVx1NmM2Mlx1NmM2M1x1NmM2NVx1NmM2Nlx1NmM2N1x1NmM2Ylx1NmM2Y1x1NmM2ZFx1NmM2ZVx1NmM2Zlx1NmM3MVx1NmM3M1x1NmM3NVx1NmM3N1x1NmM3OFx1NmM3YVx1NmM3Ylx1NmM3Y1x1NmM3Zlx1NmM4''@;'; put 'put ''MFx1NmM4NFx1NmM4N1x1NmM4YVx1NmM4Ylx1NmM4ZFx1NmM4ZVx1NmM5MVx1NmM5Mlx1NmM5NVx1NmM5Nlx1NmM5N1x1NmM5OFx1NmM5YVx1NmM5Y1x1NmM5ZFx1NmM5ZVx1NmNhMFx1NmNhMlx1NmNhOFx1NmNhY1x1NmNhZlx1NmNiMFx1NmNiNFx1NmNiNVx1NmNiNlx1NmNiN1x1NmNiYVx1''@;'; put 'put ''NmNjMFx1NmNjMVx1NmNjMlx1NmNjM1x1NmNjNlx1NmNjN1x1NmNjOFx1NmNjYlx1NmNjZFx1NmNjZVx1NmNjZlx1NmNkMVx1NmNkMlx1NmNkOFx1ZmZmZFx1NmNkOVx1NmNkYVx1NmNkY1x1NmNkZFx1NmNkZlx1NmNlNFx1NmNlNlx1NmNlN1x1NmNlOVx1NmNlY1x1NmNlZFx1NmNmMlx1NmNm''@;'; put 'put ''NFx1NmNmOVx1NmNmZlx1NmQwMFx1NmQwMlx1NmQwM1x1NmQwNVx1NmQwNlx1NmQwOFx1NmQwOVx1NmQwYVx1NmQwZFx1NmQwZlx1NmQxMFx1NmQxMVx1NmQxM1x1NmQxNFx1NmQxNVx1NmQxNlx1NmQxOFx1NmQxY1x1NmQxZFx1NmQxZlx1NmQyMFx1NmQyMVx1NmQyMlx1NmQyM1x1NmQyNFx1''@;'; put 'put ''NmQyNlx1NmQyOFx1NmQyOVx1NmQyY1x1NmQyZFx1NmQyZlx1NmQzMFx1NmQzNFx1NmQzNlx1NmQzN1x1NmQzOFx1NmQzYVx1NmQzZlx1NmQ0MFx1NmQ0Mlx1NmQ0NFx1NmQ0OVx1NmQ0Y1x1NmQ1MFx1NmQ1NVx1NmQ1Nlx1NmQ1N1x1NmQ1OFx1NmQ1Ylx1NmQ1ZFx1NmQ1Zlx1NmQ2MVx1NmQ2''@;'; put 'put ''Mlx1NmQ2NFx1NmQ2NVx1NmQ2N1x1NmQ2OFx1NmQ2Ylx1NmQ2Y1x1NmQ2ZFx1NmQ3MFx1NmQ3MVx1NmQ3Mlx1NmQ3M1x1NmQ3NVx1NmQ3Nlx1NmQ3OVx1NmQ3YVx1NmQ3Ylx1NmQ3ZFx1NmQ3ZVx1NmQ3Zlx1NmQ4MFx1NmQ4MVx1NmQ4M1x1NmQ4NFx1NmQ4Nlx1NmQ4N1x1NmQ4YVx1NmQ4Ylx1''@;'; put 'put ''NmQ4ZFx1NmQ4Zlx1NmQ5MFx1NmQ5Mlx1NmQ5Nlx1NmQ5N1x1NmQ5OFx1NmQ5OVx1NmQ5YVx1NmQ5Y1x1NmRhMlx1NmRhNVx1NmRhY1x1NmRhZFx1NmRiMFx1NmRiMVx1NmRiM1x1NmRiNFx1NmRiNlx1NmRiN1x1NmRiOVx1NmRiYVx1NmRiYlx1NmRiY1x1NmRiZFx1NmRiZVx1NmRjMVx1NmRj''@;'; put 'put ''Mlx1NmRjM1x1NmRjOFx1NmRjOVx1NmRjYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTVdW3ZdXT0zOTY4MCt2LFRbMzk2ODArdl09a1sxNTVdW3ZdKTtmb3Ioa1sxNTZdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkY2RcdTZkY2VcdTZkY2ZcdTZkZDBcdTZkZDJcdTZkZDNcdTZkZDRcdTZkZDVcdTZkZDdcdTZkZGFcdTZkZGJcdTZkZGNcdTZkZGZcdTZkZTJcdTZkZTNcdTZkZTVcdTZkZTdcdTZkZThcdTZkZTlcdTZk''@;'; put 'put ''ZWFcdTZkZWRcdTZkZWZcdTZkZjBcdTZkZjJcdTZkZjRcdTZkZjVcdTZkZjZcdTZkZjhcdTZkZmFcdTZkZmRcdTZkZmVcdTZkZmZcdTZlMDBcdTZlMDFcdTZlMDJcdTZlMDNcdTZlMDRcdTZlMDZcdTZlMDdcdTZlMDhcdTZlMDlcdTZlMGJcdTZlMGZcdTZlMTJcdTZlMTNcdTZlMTVcdTZlMThc''@;'; put 'put ''dTZlMTlcdTZlMWJcdTZlMWNcdTZlMWVcdTZlMWZcdTZlMjJcdTZlMjZcdTZlMjdcdTZlMjhcdTZlMmFcdTZlMmNcdTZlMmVcdTZlMzBcdTZlMzFcdTZlMzNcdTZlMzVcdWZmZmRcdTZlMzZcdTZlMzdcdTZlMzlcdTZlM2JcdTZlM2NcdTZlM2RcdTZlM2VcdTZlM2ZcdTZlNDBcdTZlNDFcdTZl''@;'; put 'put ''NDJcdTZlNDVcdTZlNDZcdTZlNDdcdTZlNDhcdTZlNDlcdTZlNGFcdTZlNGJcdTZlNGNcdTZlNGZcdTZlNTBcdTZlNTFcdTZlNTJcdTZlNTVcdTZlNTdcdTZlNTlcdTZlNWFcdTZlNWNcdTZlNWRcdTZlNWVcdTZlNjBcdTZlNjFcdTZlNjJcdTZlNjNcdTZlNjRcdTZlNjVcdTZlNjZcdTZlNjdc''@;'; put 'put ''dTZlNjhcdTZlNjlcdTZlNmFcdTZlNmNcdTZlNmRcdTZlNmZcdTZlNzBcdTZlNzFcdTZlNzJcdTZlNzNcdTZlNzRcdTZlNzVcdTZlNzZcdTZlNzdcdTZlNzhcdTZlNzlcdTZlN2FcdTZlN2JcdTZlN2NcdTZlN2RcdTZlODBcdTZlODFcdTZlODJcdTZlODRcdTZlODdcdTZlODhcdTZlOGFcdTZl''@;'; put 'put ''OGJcdTZlOGNcdTZlOGRcdTZlOGVcdTZlOTFcdTZlOTJcdTZlOTNcdTZlOTRcdTZlOTVcdTZlOTZcdTZlOTdcdTZlOTlcdTZlOWFcdTZlOWJcdTZlOWRcdTZlOWVcdTZlYTBcdTZlYTFcdTZlYTNcdTZlYTRcdTZlYTZcdTZlYThcdTZlYTlcdTZlYWJcdTZlYWNcdTZlYWRcdTZlYWVcdTZlYjBc''@;'; put 'put ''dTZlYjNcdTZlYjVcdTZlYjhcdTZlYjlcdTZlYmNcdTZlYmVcdTZlYmZcdTZlYzBcdTZlYzNcdTZlYzRcdTZlYzVcdTZlYzZcdTZlYzhcdTZlYzlcdTZlY2FcdTZlY2NcdTZlY2RcdTZlY2VcdTZlZDBcdTZlZDJcdTZlZDZcdTZlZDhcdTZlZDlcdTZlZGJcdTZlZGNcdTZlZGRcdTZlZTNcdTZl''@;'; put 'put ''ZTdcdTZlZWFcdTZlZWJcdTZlZWNcdTZlZWRcdTZlZWVcdTZlZWZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU2XVt2XV09Mzk5MzYrdixUWzM5OTM2K3ZdPWtbMTU2XVt2XSk7Zm9yKGtb''@;'; put 'put ''MTU3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWYwXHU2ZWYxXHU2ZWYyXHU2ZWYzXHU2ZWY1XHU2ZWY2XHU2ZWY3XHU2ZWY4XHU2ZWZhXHU2ZWZiXHU2ZWZjXHU2ZWZkXHU2ZWZlXHU2ZWZmXHU2ZjAwXHU2ZjAxXHU2ZjAzXHU2''@;'; put 'put ''ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhXHU2ZjBiXHU2ZjBjXHU2ZjBkXHU2ZjBlXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2ZjE2XHU2ZjE3XHU2ZjE4XHU2ZjE5XHU2ZjFhXHU2ZjFiXHU2ZjFjXHU2ZjFkXHU2ZjFlXHU2ZjFmXHU2ZjIxXHU2ZjIyXHU2ZjIzXHU2ZjI1XHU2ZjI2XHU2ZjI3''@;'; put 'put ''XHU2ZjI4XHU2ZjJjXHU2ZjJlXHU2ZjMwXHU2ZjMyXHU2ZjM0XHU2ZjM1XHU2ZjM3XHU2ZjM4XHU2ZjM5XHU2ZjNhXHU2ZjNiXHU2ZjNjXHU2ZjNkXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyXHVmZmZkXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRhXHU2ZjRjXHU2ZjRlXHU2''@;'; put 'put ''ZjRmXHU2ZjUwXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU0XHU2ZjU1XHU2ZjU2XHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjViXHU2ZjVkXHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2ZjY3XHU2ZjY4XHU2ZjY5XHU2ZjZhXHU2ZjZiXHU2ZjZjXHU2ZjZmXHU2ZjcwXHU2Zjcx''@;'; put 'put ''XHU2ZjczXHU2Zjc1XHU2Zjc2XHU2Zjc3XHU2Zjc5XHU2ZjdiXHU2ZjdkXHU2ZjdlXHU2ZjdmXHU2ZjgwXHU2ZjgxXHU2ZjgyXHU2ZjgzXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2ZjhiXHU2ZjhmXHU2ZjkwXHU2ZjkxXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk1XHU2Zjk2XHU2Zjk3XHU2''@;'; put 'put ''Zjk4XHU2Zjk5XHU2ZjlhXHU2ZjliXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyXHU2ZmEzXHU2ZmE0XHU2ZmE1XHU2ZmE2XHU2ZmE4XHU2ZmE5XHU2ZmFhXHU2ZmFiXHU2ZmFjXHU2ZmFkXHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmIxXHU2ZmIyXHU2ZmI0XHU2ZmI1XHU2ZmI3XHU2ZmI4''@;'; put 'put ''XHU2ZmJhXHU2ZmJiXHU2ZmJjXHU2ZmJkXHU2ZmJlXHU2ZmJmXHU2ZmMxXHU2ZmMzXHU2ZmM0XHU2ZmM1XHU2ZmM2XHU2ZmM3XHU2ZmM4XHU2ZmNhXHU2ZmNiXHU2ZmNjXHU2ZmNkXHU2ZmNlXHU2ZmNmXHU2ZmQwXHU2ZmQzXHU2ZmQ0XHU2ZmQ1XHU2ZmQ2XHU2ZmQ3XHU2ZmQ4XHU2ZmQ5XHU2''@;'; put 'put ''ZmRhXHU2ZmRiXHU2ZmRjXHU2ZmRkXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTU3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1N11bdl1dPTQwMTkyK3YsVFs0MDE5Mit2XT1rWzE1''@;'; put 'put ''N11bdl0pO2ZvcihrWzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZlNlx1NmZlN1x1NmZlOFx1NmZlOVx1NmZlYVx1NmZlYlx1NmZlY1x1NmZlZFx1NmZmMFx1NmZmMVx1NmZmMlx1NmZmM1x1NmZmNFx1NmZmNVx1NmZmNlx1''@;'; put 'put ''NmZmN1x1NmZmOFx1NmZmOVx1NmZmYVx1NmZmYlx1NmZmY1x1NmZmZFx1NmZmZVx1NmZmZlx1NzAwMFx1NzAwMVx1NzAwMlx1NzAwM1x1NzAwNFx1NzAwNVx1NzAwNlx1NzAwN1x1NzAwOFx1NzAwOVx1NzAwYVx1NzAwYlx1NzAwY1x1NzAwZFx1NzAwZVx1NzAwZlx1NzAxMFx1NzAxMlx1NzAx''@;'; put 'put ''M1x1NzAxNFx1NzAxNVx1NzAxNlx1NzAxN1x1NzAxOFx1NzAxOVx1NzAxY1x1NzAxZFx1NzAxZVx1NzAxZlx1NzAyMFx1NzAyMVx1NzAyMlx1NzAyNFx1NzAyNVx1NzAyNlx1NzAyN1x1NzAyOFx1NzAyOVx1NzAyYVx1ZmZmZFx1NzAyYlx1NzAyY1x1NzAyZFx1NzAyZVx1NzAyZlx1NzAzMFx1''@;'; put 'put ''NzAzMVx1NzAzMlx1NzAzM1x1NzAzNFx1NzAzNlx1NzAzN1x1NzAzOFx1NzAzYVx1NzAzYlx1NzAzY1x1NzAzZFx1NzAzZVx1NzAzZlx1NzA0MFx1NzA0MVx1NzA0Mlx1NzA0M1x1NzA0NFx1NzA0NVx1NzA0Nlx1NzA0N1x1NzA0OFx1NzA0OVx1NzA0YVx1NzA0Ylx1NzA0ZFx1NzA0ZVx1NzA1''@;'; put 'put ''MFx1NzA1MVx1NzA1Mlx1NzA1M1x1NzA1NFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1OFx1NzA1OVx1NzA1YVx1NzA1Ylx1NzA1Y1x1NzA1ZFx1NzA1Zlx1NzA2MFx1NzA2MVx1NzA2Mlx1NzA2M1x1NzA2NFx1NzA2NVx1NzA2Nlx1NzA2N1x1NzA2OFx1NzA2OVx1NzA2YVx1NzA2ZVx1NzA3MVx1''@;'; put 'put ''NzA3Mlx1NzA3M1x1NzA3NFx1NzA3N1x1NzA3OVx1NzA3YVx1NzA3Ylx1NzA3ZFx1NzA4MVx1NzA4Mlx1NzA4M1x1NzA4NFx1NzA4Nlx1NzA4N1x1NzA4OFx1NzA4Ylx1NzA4Y1x1NzA4ZFx1NzA4Zlx1NzA5MFx1NzA5MVx1NzA5M1x1NzA5N1x1NzA5OFx1NzA5YVx1NzA5Ylx1NzA5ZVx1NzA5''@;'; put 'put ''Zlx1NzBhMFx1NzBhMVx1NzBhMlx1NzBhM1x1NzBhNFx1NzBhNVx1NzBhNlx1NzBhN1x1NzBhOFx1NzBhOVx1NzBhYVx1NzBiMFx1NzBiMlx1NzBiNFx1NzBiNVx1NzBiNlx1NzBiYVx1NzBiZVx1NzBiZlx1NzBjNFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBjOVx1NzBjYlx1NzBjY1x1NzBjZFx1''@;'; put 'put ''NzBjZVx1NzBjZlx1NzBkMFx1NzBkMVx1NzBkMlx1NzBkM1x1NzBkNFx1NzBkNVx1NzBkNlx1NzBkN1x1NzBkYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNThdW3ZdXT00MDQ0OCt2LFRb''@;'; put 'put ''NDA0NDgrdl09a1sxNThdW3ZdKTtmb3Ioa1sxNTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwZGNcdTcwZGRcdTcwZGVcdTcwZTBcdTcwZTFcdTcwZTJcdTcwZTNcdTcwZTVcdTcwZWFcdTcwZWVcdTcwZjBcdTcwZjFcdTcwZjJc''@;'; put 'put ''dTcwZjNcdTcwZjRcdTcwZjVcdTcwZjZcdTcwZjhcdTcwZmFcdTcwZmJcdTcwZmNcdTcwZmVcdTcwZmZcdTcxMDBcdTcxMDFcdTcxMDJcdTcxMDNcdTcxMDRcdTcxMDVcdTcxMDZcdTcxMDdcdTcxMDhcdTcxMGJcdTcxMGNcdTcxMGRcdTcxMGVcdTcxMGZcdTcxMTFcdTcxMTJcdTcxMTRcdTcx''@;'; put 'put ''MTdcdTcxMWJcdTcxMWNcdTcxMWRcdTcxMWVcdTcxMWZcdTcxMjBcdTcxMjFcdTcxMjJcdTcxMjNcdTcxMjRcdTcxMjVcdTcxMjdcdTcxMjhcdTcxMjlcdTcxMmFcdTcxMmJcdTcxMmNcdTcxMmRcdTcxMmVcdTcxMzJcdTcxMzNcdTcxMzRcdWZmZmRcdTcxMzVcdTcxMzdcdTcxMzhcdTcxMzlc''@;'; put 'put ''dTcxM2FcdTcxM2JcdTcxM2NcdTcxM2RcdTcxM2VcdTcxM2ZcdTcxNDBcdTcxNDFcdTcxNDJcdTcxNDNcdTcxNDRcdTcxNDZcdTcxNDdcdTcxNDhcdTcxNDlcdTcxNGJcdTcxNGRcdTcxNGZcdTcxNTBcdTcxNTFcdTcxNTJcdTcxNTNcdTcxNTRcdTcxNTVcdTcxNTZcdTcxNTdcdTcxNThcdTcx''@;'; put 'put ''NTlcdTcxNWFcdTcxNWJcdTcxNWRcdTcxNWZcdTcxNjBcdTcxNjFcdTcxNjJcdTcxNjNcdTcxNjVcdTcxNjlcdTcxNmFcdTcxNmJcdTcxNmNcdTcxNmRcdTcxNmZcdTcxNzBcdTcxNzFcdTcxNzRcdTcxNzVcdTcxNzZcdTcxNzdcdTcxNzlcdTcxN2JcdTcxN2NcdTcxN2VcdTcxN2ZcdTcxODBc''@;'; put 'put ''dTcxODFcdTcxODJcdTcxODNcdTcxODVcdTcxODZcdTcxODdcdTcxODhcdTcxODlcdTcxOGJcdTcxOGNcdTcxOGRcdTcxOGVcdTcxOTBcdTcxOTFcdTcxOTJcdTcxOTNcdTcxOTVcdTcxOTZcdTcxOTdcdTcxOWFcdTcxOWJcdTcxOWNcdTcxOWRcdTcxOWVcdTcxYTFcdTcxYTJcdTcxYTNcdTcx''@;'; put 'put ''YTRcdTcxYTVcdTcxYTZcdTcxYTdcdTcxYTlcdTcxYWFcdTcxYWJcdTcxYWRcdTcxYWVcdTcxYWZcdTcxYjBcdTcxYjFcdTcxYjJcdTcxYjRcdTcxYjZcdTcxYjdcdTcxYjhcdTcxYmFcdTcxYmJcdTcxYmNcdTcxYmRcdTcxYmVcdTcxYmZcdTcxYzBcdTcxYzFcdTcxYzJcdTcxYzRcdTcxYzVc''@;'; put 'put ''dTcxYzZcdTcxYzdcdTcxYzhcdTcxYzlcdTcxY2FcdTcxY2JcdTcxY2NcdTcxY2RcdTcxY2ZcdTcxZDBcdTcxZDFcdTcxZDJcdTcxZDNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU5XVt2''@;'; put 'put ''XV09NDA3MDQrdixUWzQwNzA0K3ZdPWtbMTU5XVt2XSk7Zm9yKGtbMTYwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MWQ2XHU3MWQ3XHU3MWQ4XHU3MWQ5XHU3MWRhXHU3MWRiXHU3MWRjXHU3MWRkXHU3MWRlXHU3MWRmXHU3MWUx''@;'; put 'put ''XHU3MWUyXHU3MWUzXHU3MWU0XHU3MWU2XHU3MWU4XHU3MWU5XHU3MWVhXHU3MWViXHU3MWVjXHU3MWVkXHU3MWVmXHU3MWYwXHU3MWYxXHU3MWYyXHU3MWYzXHU3MWY0XHU3MWY1XHU3MWY2XHU3MWY3XHU3MWY4XHU3MWZhXHU3MWZiXHU3MWZjXHU3MWZkXHU3MWZlXHU3MWZmXHU3MjAwXHU3''@;'; put 'put ''MjAxXHU3MjAyXHU3MjAzXHU3MjA0XHU3MjA1XHU3MjA3XHU3MjA4XHU3MjA5XHU3MjBhXHU3MjBiXHU3MjBjXHU3MjBkXHU3MjBlXHU3MjBmXHU3MjEwXHU3MjExXHU3MjEyXHU3MjEzXHU3MjE0XHU3MjE1XHU3MjE2XHU3MjE3XHU3MjE4XHU3MjE5XHU3MjFhXHVmZmZkXHU3MjFiXHU3MjFj''@;'; put 'put ''XHU3MjFlXHU3MjFmXHU3MjIwXHU3MjIxXHU3MjIyXHU3MjIzXHU3MjI0XHU3MjI1XHU3MjI2XHU3MjI3XHU3MjI5XHU3MjJiXHU3MjJkXHU3MjJlXHU3MjJmXHU3MjMyXHU3MjMzXHU3MjM0XHU3MjNhXHU3MjNjXHU3MjNlXHU3MjQwXHU3MjQxXHU3MjQyXHU3MjQzXHU3MjQ0XHU3MjQ1XHU3''@;'; put 'put ''MjQ2XHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3MjZhXHU3MjZiXHU3MjZjXHU3MjZkXHU3MjcwXHU3MjcxXHU3Mjcz''@;'; put 'put ''XHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1XHU3Mjg2XHU3Mjg3XHU3Mjg4XHU3Mjg5XHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzXHU3Mjk0XHU3Mjk1XHU3Mjk2XHU3Mjk3XHU3Mjk4XHU3Mjk5XHU3MjlhXHU3MjliXHU3''@;'; put 'put ''MjljXHU3MjlkXHU3MjllXHU3MmEwXHU3MmExXHU3MmEyXHU3MmEzXHU3MmE0XHU3MmE1XHU3MmE2XHU3MmE3XHU3MmE4XHU3MmE5XHU3MmFhXHU3MmFiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJhXHU3MmJiXHU3MmJjXHU3MmJkXHU3MmJlXHU3MmJmXHU3MmMwXHU3MmM1''@;'; put 'put ''XHU3MmM2XHU3MmM3XHU3MmM5XHU3MmNhXHU3MmNiXHU3MmNjXHU3MmNmXHU3MmQxXHU3MmQzXHU3MmQ0XHU3MmQ1XHU3MmQ2XHU3MmQ4XHU3MmRhXHU3MmRiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTYwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjBdW3ZdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihzZVtrWzE2MF1bdl1dPTQwOTYwK3YsVFs0MDk2MCt2XT1rWzE2MF1bdl0pO2ZvcihrWzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTAyYzlcdTAyYzdceGE4XHUzMDAzXHUzMDA1XHUyMDE0XHVmZjVlXHUyMDE2XHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUz''@;'; put 'put ''MDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjM2XHUyMjI3XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFhXHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUyMjk5XHUyMjJiXHUyMjJl''@;'; put 'put ''XHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM1XHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRcdWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2XHUyNjA2XHUyNjA1XHUy''@;'; put 'put ''NWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTYxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjFdW3ZdLmNoYXJDb2RlQXQoMCkmJihz''@;'; put 'put ''ZVtrWzE2MV1bdl1dPTQxMjE2K3YsVFs0MTIxNit2XT1rWzE2MV1bdl0pO2ZvcihrWzE2Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjQ4OFx1MjQ4OVx1MjQ4YVx1MjQ4Ylx1MjQ4Y1x1MjQ4ZFx1''@;'; put 'put ''MjQ4ZVx1MjQ4Zlx1MjQ5MFx1MjQ5MVx1MjQ5Mlx1MjQ5M1x1MjQ5NFx1MjQ5NVx1MjQ5Nlx1MjQ5N1x1MjQ5OFx1MjQ5OVx1MjQ5YVx1MjQ5Ylx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4''@;'; put 'put ''MVx1MjQ4Mlx1MjQ4M1x1MjQ4NFx1MjQ4NVx1MjQ4Nlx1MjQ4N1x1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1ZmZmZFx1ZmZmZFx1MzIyMFx1MzIyMVx1MzIyMlx1MzIyM1x1MzIyNFx1MzIyNVx1MzIyNlx1MzIyN1x1MzIyOFx1''@;'; put 'put ''MzIyOVx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1MjE2YVx1MjE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTYyXVt2XS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoc2Vba1sxNjJdW3ZdXT00MTQ3Mit2LFRbNDE0NzIrdl09a1sxNjJdW3ZdKTtmb3Ioa1sxNjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRc''@;'; put 'put ''dWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZm''@;'; put 'put ''MzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmM2JcdWZmM2NcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJc''@;'; put 'put ''dWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjNdLmxlbmd0aDsrK3YpNjU1MzMhPT1r''@;'; put 'put ''WzE2M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTYzXVt2XV09NDE3MjgrdixUWzQxNzI4K3ZdPWtbMTYzXVt2XSk7Zm9yKGtbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUy''@;'; put 'put ''XHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUz''@;'; put 'put ''MDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5''@;'; put 'put ''XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY0XS5sZW5ndGg7''@;'; put 'put ''Kyt2KTY1NTMzIT09a1sxNjRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2NF1bdl1dPTQxOTg0K3YsVFs0MTk4NCt2XT1rWzE2NF1bdl0pO2ZvcihrWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBi''@;'; put 'put ''MFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1''@;'; put 'put ''MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBl''@;'; put 'put ''N1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1r''@;'; put 'put ''WzE2NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjVdW3ZdXT00MjI0MCt2LFRbNDIyNDArdl09a1sxNjVdW3ZdKTtmb3Ioa1sxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAz''@;'; put 'put ''OWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlc''@;'; put 'put ''dTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlMzVcdWZlMzZcdWZlMzlcdWZlM2FcdWZlM2ZcdWZl''@;'; put 'put ''NDBcdWZlM2RcdWZlM2VcdWZlNDFcdWZlNDJcdWZlNDNcdWZlNDRcdWZmZmRcdWZmZmRcdWZlM2JcdWZlM2NcdWZlMzdcdWZlMzhcdWZlMzFcdWZmZmRcdWZlMzNcdWZlMzRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1sxNjZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTY2XVt2XV09NDI0OTYrdixUWzQyNDk2K3ZdPWtbMTY2XVt2XSk7Zm9yKGtbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUw''@;'; put 'put ''NDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUw''@;'; put 'put ''NDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2N11bdl1dPTQyNzUyK3YsVFs0Mjc1Mit2XT1rWzE2N11bdl0pO2ZvcihrWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDJjYVx1MDJjYlx1MDJkOVx1MjAxM1x1MjAxNVx1MjAyNVx1MjAzNVx1MjEwNVx1MjEwOVx1MjE5Nlx1MjE5N1x1MjE5OFx1MjE5OVx1MjIxNVx1MjIxZlx1MjIyM1x1MjI1Mlx1MjI2Nlx1MjI2N1x1MjJiZlx1MjU1MFx1MjU1MVx1MjU1Mlx1MjU1''@;'; put 'put ''M1x1MjU1NFx1MjU1NVx1MjU1Nlx1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MjU1Y1x1MjU1ZFx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MjU2Mlx1MjU2M1x1MjU2NFx1MjU2NVx1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MjU2Ylx1MjU2Y1x1MjU2ZFx1MjU2ZVx1''@;'; put 'put ''MjU2Zlx1MjU3MFx1MjU3MVx1MjU3Mlx1MjU3M1x1MjU4MVx1MjU4Mlx1MjU4M1x1MjU4NFx1MjU4NVx1MjU4Nlx1MjU4N1x1ZmZmZFx1MjU4OFx1MjU4OVx1MjU4YVx1MjU4Ylx1MjU4Y1x1MjU4ZFx1MjU4ZVx1MjU4Zlx1MjU5M1x1MjU5NFx1MjU5NVx1MjViY1x1MjViZFx1MjVlMlx1MjVl''@;'; put 'put ''M1x1MjVlNFx1MjVlNVx1MjYwOVx1MjI5NVx1MzAxMlx1MzAxZFx1MzAxZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQw''@;'; put 'put ''XHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGFcdTAxZGNceGZjXHhlYVx1MDI1MVx1ZmZmZFx1MDE0NFx1MDE0OFx1ZmZmZFx1MDI2MVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEw''@;'; put 'put ''OVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1''@;'; put 'put ''MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLHY9MDt2IT1rWzE2OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjhdW3ZdXT00MzAwOCt2LFRbNDMwMDgrdl09a1sxNjhdW3ZdKTtmb3Ioa1sxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTMwMjFcdTMwMjJcdTMwMjNcdTMwMjRcdTMwMjVcdTMwMjZcdTMwMjdcdTMwMjhcdTMwMjlcdTMyYTNcdTMzOGVcdTMzOGZcdTMzOWNcdTMzOWRcdTMzOWVcdTMzYTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBcdWZmZTJcdWZmZTRcdWZmZmRcdTIx''@;'; put 'put ''MjFcdTMyMzFcdWZmZmRcdTIwMTBcdWZmZmRcdWZmZmRcdWZmZmRcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZcdTMwOWRcdTMwOWVcdWZlNDlcdWZlNGFcdWZlNGJcdWZlNGNcdWZlNGRcdWZlNGVcdWZlNGZcdWZlNTBcdWZlNTFcdWZlNTJcdWZlNTRcdWZlNTVcdWZlNTZc''@;'; put 'put ''dWZlNTdcdWZlNTlcdWZlNWFcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdWZlNWZcdWZlNjBcdWZlNjFcdWZmZmRcdWZlNjJcdWZlNjNcdWZlNjRcdWZlNjVcdWZlNjZcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDFcdTI1MDJcdTI1MDNcdTI1MDRcdTI1MDVcdTI1MDZcdTI1MDdc''@;'; put 'put ''dTI1MDhcdTI1MDlcdTI1MGFcdTI1MGJcdTI1MGNcdTI1MGRcdTI1MGVcdTI1MGZcdTI1MTBcdTI1MTFcdTI1MTJcdTI1MTNcdTI1MTRcdTI1MTVcdTI1MTZcdTI1MTdcdTI1MThcdTI1MTlcdTI1MWFcdTI1MWJcdTI1MWNcdTI1MWRcdTI1MWVcdTI1MWZcdTI1MjBcdTI1MjFcdTI1MjJcdTI1''@;'; put 'put ''MjNcdTI1MjRcdTI1MjVcdTI1MjZcdTI1MjdcdTI1MjhcdTI1MjlcdTI1MmFcdTI1MmJcdTI1MmNcdTI1MmRcdTI1MmVcdTI1MmZcdTI1MzBcdTI1MzFcdTI1MzJcdTI1MzNcdTI1MzRcdTI1MzVcdTI1MzZcdTI1MzdcdTI1MzhcdTI1MzlcdTI1M2FcdTI1M2JcdTI1M2NcdTI1M2RcdTI1M2Vc''@;'; put 'put ''dTI1M2ZcdTI1NDBcdTI1NDFcdTI1NDJcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdTI1NGJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTY5XVt2XV09NDMyNjQrdixUWzQzMjY0K3ZdPWtbMTY5XVt2XSk7Zm9yKGtbMTcwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmRjXHU3MmRkXHU3MmRmXHU3MmUyXHU3MmUzXHU3MmU0XHU3MmU1XHU3MmU2XHU3MmU3XHU3MmVhXHU3MmViXHU3MmY1XHU3MmY2XHU3MmY5XHU3MmZkXHU3MmZlXHU3MmZmXHU3MzAwXHU3MzAyXHU3MzA0XHU3MzA1XHU3MzA2XHU3MzA3XHU3''@;'; put 'put ''MzA4XHU3MzA5XHU3MzBiXHU3MzBjXHU3MzBkXHU3MzBmXHU3MzEwXHU3MzExXHU3MzEyXHU3MzE0XHU3MzE4XHU3MzE5XHU3MzFhXHU3MzFmXHU3MzIwXHU3MzIzXHU3MzI0XHU3MzI2XHU3MzI3XHU3MzI4XHU3MzJkXHU3MzJmXHU3MzMwXHU3MzMyXHU3MzMzXHU3MzM1XHU3MzM2XHU3MzNh''@;'; put 'put ''XHU3MzNiXHU3MzNjXHU3MzNkXHU3MzQwXHU3MzQxXHU3MzQyXHU3MzQzXHU3MzQ0XHU3MzQ1XHU3MzQ2XHU3MzQ3XHU3MzQ4XHVmZmZkXHU3MzQ5XHU3MzRhXHU3MzRiXHU3MzRjXHU3MzRlXHU3MzRmXHU3MzUxXHU3MzUzXHU3MzU0XHU3MzU1XHU3MzU2XHU3MzU4XHU3MzU5XHU3MzVhXHU3''@;'; put 'put ''MzViXHU3MzVjXHU3MzVkXHU3MzVlXHU3MzVmXHU3MzYxXHU3MzYyXHU3MzYzXHU3MzY0XHU3MzY1XHU3MzY2XHU3MzY3XHU3MzY4XHU3MzY5XHU3MzZhXHU3MzZiXHU3MzZlXHU3MzcwXHU3MzcxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTcwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3MF1bdl1dPTQzNTIwK3YsVFs0MzUyMCt2XT1rWzE3MF1bdl0pO2ZvcihrWzE3MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzM3Mlx1NzM3M1x1NzM3NFx1NzM3NVx1NzM3Nlx1NzM3N1x1NzM3OFx1NzM3OVx1NzM3YVx1NzM3Ylx1NzM3Y1x1NzM3ZFx1NzM3Zlx1NzM4MFx1NzM4MVx1NzM4Mlx1NzM4M1x1NzM4NVx1NzM4Nlx1NzM4OFx1NzM4YVx1''@;'; put 'put ''NzM4Y1x1NzM4ZFx1NzM4Zlx1NzM5MFx1NzM5Mlx1NzM5M1x1NzM5NFx1NzM5NVx1NzM5N1x1NzM5OFx1NzM5OVx1NzM5YVx1NzM5Y1x1NzM5ZFx1NzM5ZVx1NzNhMFx1NzNhMVx1NzNhM1x1NzNhNFx1NzNhNVx1NzNhNlx1NzNhN1x1NzNhOFx1NzNhYVx1NzNhY1x1NzNhZFx1NzNiMVx1NzNi''@;'; put 'put ''NFx1NzNiNVx1NzNiNlx1NzNiOFx1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZVx1NzNiZlx1NzNjMVx1NzNjM1x1NzNjNFx1NzNjNVx1NzNjNlx1NzNjN1x1ZmZmZFx1NzNjYlx1NzNjY1x1NzNjZVx1NzNkMlx1NzNkM1x1NzNkNFx1NzNkNVx1NzNkNlx1NzNkN1x1NzNkOFx1NzNkYVx1NzNkYlx1''@;'; put 'put ''NzNkY1x1NzNkZFx1NzNkZlx1NzNlMVx1NzNlMlx1NzNlM1x1NzNlNFx1NzNlNlx1NzNlOFx1NzNlYVx1NzNlYlx1NzNlY1x1NzNlZVx1NzNlZlx1NzNmMFx1NzNmMVx1NzNmM1x1NzNmNFx1NzNmNVx1NzNmNlx1NzNmN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTcxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzFdW3ZdXT00Mzc3Nit2LFRbNDM3NzYrdl09a1sxNzFdW3ZdKTtmb3Ioa1sxNzJdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczZjhcdTczZjlcdTczZmFcdTczZmJcdTczZmNcdTczZmRcdTczZmVcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDJcdTc0MDRcdTc0MDdcdTc0MDhcdTc0MGJcdTc0MGNcdTc0MGRcdTc0MGVcdTc0MTFc''@;'; put 'put ''dTc0MTJcdTc0MTNcdTc0MTRcdTc0MTVcdTc0MTZcdTc0MTdcdTc0MThcdTc0MTlcdTc0MWNcdTc0MWRcdTc0MWVcdTc0MWZcdTc0MjBcdTc0MjFcdTc0MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzdcdTc0MzhcdTc0MzlcdTc0M2FcdTc0''@;'; put 'put ''M2JcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDJcdTc0NDNcdTc0NDRcdTc0NDVcdTc0NDZcdTc0NDdcdTc0NDhcdTc0NDlcdTc0NGFcdTc0NGJcdTc0NGNcdTc0NGRcdWZmZmRcdTc0NGVcdTc0NGZcdTc0NTBcdTc0NTFcdTc0NTJcdTc0NTNcdTc0NTRcdTc0NTZcdTc0NThcdTc0NWRc''@;'; put 'put ''dTc0NjBcdTc0NjFcdTc0NjJcdTc0NjNcdTc0NjRcdTc0NjVcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NjlcdTc0NmFcdTc0NmJcdTc0NmNcdTc0NmVcdTc0NmZcdTc0NzFcdTc0NzJcdTc0NzNcdTc0NzRcdTc0NzVcdTc0NzhcdTc0NzlcdTc0N2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTcyXVt2XV09NDQwMzIrdixUWzQ0MDMyK3ZdPWtbMTcyXVt2XSk7Zm9y''@;'; put 'put ''KGtbMTczXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdiXHU3NDdjXHU3NDdkXHU3NDdmXHU3NDgyXHU3NDg0XHU3NDg1XHU3NDg2XHU3NDg4XHU3NDg5XHU3NDhhXHU3NDhjXHU3NDhkXHU3NDhmXHU3NDkxXHU3NDkyXHU3NDkz''@;'; put 'put ''XHU3NDk0XHU3NDk1XHU3NDk2XHU3NDk3XHU3NDk4XHU3NDk5XHU3NDlhXHU3NDliXHU3NDlkXHU3NDlmXHU3NGEwXHU3NGExXHU3NGEyXHU3NGEzXHU3NGE0XHU3NGE1XHU3NGE2XHU3NGFhXHU3NGFiXHU3NGFjXHU3NGFkXHU3NGFlXHU3NGFmXHU3NGIwXHU3NGIxXHU3NGIyXHU3NGIzXHU3''@;'; put 'put ''NGI0XHU3NGI1XHU3NGI2XHU3NGI3XHU3NGI4XHU3NGI5XHU3NGJiXHU3NGJjXHU3NGJkXHU3NGJlXHU3NGJmXHU3NGMwXHU3NGMxXHU3NGMyXHU3NGMzXHU3NGM0XHU3NGM1XHU3NGM2XHU3NGM3XHVmZmZkXHU3NGM4XHU3NGM5XHU3NGNhXHU3NGNiXHU3NGNjXHU3NGNkXHU3NGNlXHU3NGNm''@;'; put 'put ''XHU3NGQwXHU3NGQxXHU3NGQzXHU3NGQ0XHU3NGQ1XHU3NGQ2XHU3NGQ3XHU3NGQ4XHU3NGQ5XHU3NGRhXHU3NGRiXHU3NGRkXHU3NGRmXHU3NGUxXHU3NGU1XHU3NGU3XHU3NGU4XHU3NGU5XHU3NGVhXHU3NGViXHU3NGVjXHU3NGVkXHU3NGYwXHU3NGYxXHU3NGYyXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTczXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3M11bdl1dPTQ0Mjg4K3YsVFs0NDI4OCt2XT1r''@;'; put 'put ''WzE3M11bdl0pO2ZvcihrWzE3NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRmM1x1NzRmNVx1NzRmOFx1NzRmOVx1NzRmYVx1NzRmYlx1NzRmY1x1NzRmZFx1NzRmZVx1NzUwMFx1NzUwMVx1NzUwMlx1NzUwM1x1NzUwNVx1NzUw''@;'; put 'put ''Nlx1NzUwN1x1NzUwOFx1NzUwOVx1NzUwYVx1NzUwYlx1NzUwY1x1NzUwZVx1NzUxMFx1NzUxMlx1NzUxNFx1NzUxNVx1NzUxNlx1NzUxN1x1NzUxYlx1NzUxZFx1NzUxZVx1NzUyMFx1NzUyMVx1NzUyMlx1NzUyM1x1NzUyNFx1NzUyNlx1NzUyN1x1NzUyYVx1NzUyZVx1NzUzNFx1NzUzNlx1''@;'; put 'put ''NzUzOVx1NzUzY1x1NzUzZFx1NzUzZlx1NzU0MVx1NzU0Mlx1NzU0M1x1NzU0NFx1NzU0Nlx1NzU0N1x1NzU0OVx1NzU0YVx1NzU0ZFx1NzU1MFx1NzU1MVx1NzU1Mlx1NzU1M1x1NzU1NVx1NzU1Nlx1NzU1N1x1NzU1OFx1ZmZmZFx1NzU1ZFx1NzU1ZVx1NzU1Zlx1NzU2MFx1NzU2MVx1NzU2''@;'; put 'put ''Mlx1NzU2M1x1NzU2NFx1NzU2N1x1NzU2OFx1NzU2OVx1NzU2Ylx1NzU2Y1x1NzU2ZFx1NzU2ZVx1NzU2Zlx1NzU3MFx1NzU3MVx1NzU3M1x1NzU3NVx1NzU3Nlx1NzU3N1x1NzU3YVx1NzU3Ylx1NzU3Y1x1NzU3ZFx1NzU3ZVx1NzU4MFx1NzU4MVx1NzU4Mlx1NzU4NFx1NzU4NVx1NzU4N1x1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3NF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzRdW3ZdXT00NDU0NCt2''@;'; put 'put ''LFRbNDQ1NDQrdl09a1sxNzRdW3ZdKTtmb3Ioa1sxNzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThcdTc1OWJcdTc1OWNcdTc1''@;'; put 'put ''OWVcdTc1YTJcdTc1YTZcdTc1YTdcdTc1YThcdTc1YTlcdTc1YWFcdTc1YWRcdTc1YjZcdTc1YjdcdTc1YmFcdTc1YmJcdTc1YmZcdTc1YzBcdTc1YzFcdTc1YzZcdTc1Y2JcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDBcdTc1ZDFcdTc1ZDNcdTc1ZDdcdTc1ZDlcdTc1ZGFcdTc1ZGNcdTc1ZGRc''@;'; put 'put ''dTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTVcdTc1ZTlcdTc1ZWNcdTc1ZWRcdTc1ZWVcdTc1ZWZcdTc1ZjJcdTc1ZjNcdTc1ZjVcdTc1ZjZcdTc1ZjdcdTc1ZjhcdTc1ZmFcdTc1ZmJcdTc1ZmRcdTc1ZmVcdTc2MDJcdTc2MDRcdTc2MDZcdTc2MDdcdWZmZmRcdTc2MDhcdTc2MDlcdTc2MGJcdTc2''@;'; put 'put ''MGRcdTc2MGVcdTc2MGZcdTc2MTFcdTc2MTJcdTc2MTNcdTc2MTRcdTc2MTZcdTc2MWFcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjFcdTc2MjNcdTc2MjdcdTc2MjhcdTc2MmNcdTc2MmVcdTc2MmZcdTc2MzFcdTc2MzJcdTc2MzZcdTc2MzdcdTc2MzlcdTc2M2FcdTc2M2JcdTc2M2RcdTc2NDFc''@;'; put 'put ''dTc2NDJcdTc2NDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc1''@;'; put 'put ''XVt2XV09NDQ4MDArdixUWzQ0ODAwK3ZdPWtbMTc1XVt2XSk7Zm9yKGtbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjQ1XHU3NjQ2XHU3NjQ3XHU3NjQ4XHU3NjQ5XHU3NjRhXHU3NjRiXHU3NjRlXHU3NjRmXHU3NjUwXHU3''@;'; put 'put ''NjUxXHU3NjUyXHU3NjUzXHU3NjU1XHU3NjU3XHU3NjU4XHU3NjU5XHU3NjVhXHU3NjViXHU3NjVkXHU3NjVmXHU3NjYwXHU3NjYxXHU3NjYyXHU3NjY0XHU3NjY1XHU3NjY2XHU3NjY3XHU3NjY4XHU3NjY5XHU3NjZhXHU3NjZjXHU3NjZkXHU3NjZlXHU3NjcwXHU3NjcxXHU3NjcyXHU3Njcz''@;'; put 'put ''XHU3Njc0XHU3Njc1XHU3Njc2XHU3Njc3XHU3Njc5XHU3NjdhXHU3NjdjXHU3NjdmXHU3NjgwXHU3NjgxXHU3NjgzXHU3Njg1XHU3Njg5XHU3NjhhXHU3NjhjXHU3NjhkXHU3NjhmXHU3NjkwXHU3NjkyXHU3Njk0XHU3Njk1XHU3Njk3XHU3Njk4XHU3NjlhXHU3NjliXHVmZmZkXHU3NjljXHU3''@;'; put 'put ''NjlkXHU3NjllXHU3NjlmXHU3NmEwXHU3NmExXHU3NmEyXHU3NmEzXHU3NmE1XHU3NmE2XHU3NmE3XHU3NmE4XHU3NmE5XHU3NmFhXHU3NmFiXHU3NmFjXHU3NmFkXHU3NmFmXHU3NmIwXHU3NmIzXHU3NmI1XHU3NmI2XHU3NmI3XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmJiXHU3NmJjXHU3NmJk''@;'; put 'put ''XHU3NmJlXHU3NmMwXHU3NmMxXHU3NmMzXHU1NTRhXHU5NjNmXHU1N2MzXHU2MzI4XHU1NGNlXHU1NTA5XHU1NGMwXHU3NjkxXHU3NjRjXHU4NTNjXHU3N2VlXHU4MjdlXHU3ODhkXHU3MjMxXHU5Njk4XHU5NzhkXHU2YzI4XHU1Yjg5XHU0ZmZhXHU2MzA5XHU2Njk3XHU1Y2I4XHU4MGZhXHU2''@;'; put 'put ''ODQ4XHU4MGFlXHU2NjAyXHU3NmNlXHU1MWY5XHU2NTU2XHU3MWFjXHU3ZmYxXHU4ODg0XHU1MGIyXHU1OTY1XHU2MWNhXHU2ZmIzXHU4MmFkXHU2MzRjXHU2MjUyXHU1M2VkXHU1NDI3XHU3YjA2XHU1MTZiXHU3NWE0XHU1ZGY0XHU2MmQ0XHU4ZGNiXHU5Nzc2XHU2MjhhXHU4MDE5XHU1NzVk''@;'; put 'put ''XHU5NzM4XHU3ZjYyXHU3MjM4XHU3NjdkXHU2N2NmXHU3NjdlXHU2NDQ2XHU0ZjcwXHU4ZDI1XHU2MmRjXHU3YTE3XHU2NTkxXHU3M2VkXHU2NDJjXHU2MjczXHU4MjJjXHU5ODgxXHU2NzdmXHU3MjQ4XHU2MjZlXHU2MmNjXHU0ZjM0XHU3NGUzXHU1MzRhXHU1MjllXHU3ZWNhXHU5MGE2XHU1''@;'; put 'put ''ZTJlXHU2ODg2XHU2OTljXHU4MTgwXHU3ZWQxXHU2OGQyXHU3OGM1XHU4NjhjXHU5NTUxXHU1MDhkXHU4YzI0XHU4MmRlXHU4MGRlXHU1MzA1XHU4OTEyXHU1MjY1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzZdW3ZdLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihzZVtrWzE3Nl1bdl1dPTQ1MDU2K3YsVFs0NTA1Nit2XT1rWzE3Nl1bdl0pO2ZvcihrWzE3N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzZjNFx1NzZjN1x1NzZjOVx1NzZjYlx1NzZjY1x1NzZkM1x1NzZkNVx1NzZkOVx1''@;'; put 'put ''NzZkYVx1NzZkY1x1NzZkZFx1NzZkZVx1NzZlMFx1NzZlMVx1NzZlMlx1NzZlM1x1NzZlNFx1NzZlNlx1NzZlN1x1NzZlOFx1NzZlOVx1NzZlYVx1NzZlYlx1NzZlY1x1NzZlZFx1NzZmMFx1NzZmM1x1NzZmNVx1NzZmNlx1NzZmN1x1NzZmYVx1NzZmYlx1NzZmZFx1NzZmZlx1NzcwMFx1Nzcw''@;'; put 'put ''Mlx1NzcwM1x1NzcwNVx1NzcwNlx1NzcwYVx1NzcwY1x1NzcwZVx1NzcwZlx1NzcxMFx1NzcxMVx1NzcxMlx1NzcxM1x1NzcxNFx1NzcxNVx1NzcxNlx1NzcxN1x1NzcxOFx1NzcxYlx1NzcxY1x1NzcxZFx1NzcxZVx1NzcyMVx1NzcyM1x1NzcyNFx1NzcyNVx1NzcyN1x1NzcyYVx1NzcyYlx1''@;'; put 'put ''ZmZmZFx1NzcyY1x1NzcyZVx1NzczMFx1NzczMVx1NzczMlx1NzczM1x1NzczNFx1NzczOVx1NzczYlx1NzczZFx1NzczZVx1NzczZlx1Nzc0Mlx1Nzc0NFx1Nzc0NVx1Nzc0Nlx1Nzc0OFx1Nzc0OVx1Nzc0YVx1Nzc0Ylx1Nzc0Y1x1Nzc0ZFx1Nzc0ZVx1Nzc0Zlx1Nzc1Mlx1Nzc1M1x1Nzc1''@;'; put 'put ''NFx1Nzc1NVx1Nzc1Nlx1Nzc1N1x1Nzc1OFx1Nzc1OVx1Nzc1Y1x1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMxN1x1OGY4OFx1ODBjY1x1OGQxZFx1OTRhMVx1''@;'; put 'put ''NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUyZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1ODRkNlx1ODUzZFx1NmJkNVx1NmJkOVx1NmJk''@;'; put 'put ''Nlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYwYVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZhYlx1OTA0ZFx1NjgwN1x1NWY2YVx1ODE5OFx1''@;'; put 'put ''ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFiMFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1NzBiM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc3XVt2''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzddW3ZdXT00NTMxMit2LFRbNDUzMTIrdl09a1sxNzddW3ZdKTtmb3Ioa1sxNzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3NWRcdTc3NWVcdTc3NWZcdTc3NjBcdTc3NjRcdTc3Njdc''@;'; put 'put ''dTc3NjlcdTc3NmFcdTc3NmRcdTc3NmVcdTc3NmZcdTc3NzBcdTc3NzFcdTc3NzJcdTc3NzNcdTc3NzRcdTc3NzVcdTc3NzZcdTc3NzdcdTc3NzhcdTc3N2FcdTc3N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNcdTc3ODZcdTc3ODdcdTc3ODhcdTc3ODlcdTc3OGFcdTc3OGJcdTc3OGZcdTc3''@;'; put 'put ''OTBcdTc3OTNcdTc3OTRcdTc3OTVcdTc3OTZcdTc3OTdcdTc3OThcdTc3OTlcdTc3OWFcdTc3OWJcdTc3OWNcdTc3OWRcdTc3OWVcdTc3YTFcdTc3YTNcdTc3YTRcdTc3YTZcdTc3YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3YjZcdTc3YjdcdTc3Yjhc''@;'; put 'put ''dTc3YjlcdTc3YmFcdWZmZmRcdTc3YmNcdTc3YmVcdTc3YzBcdTc3YzFcdTc3YzJcdTc3YzNcdTc3YzRcdTc3YzVcdTc3YzZcdTc3YzdcdTc3YzhcdTc3YzlcdTc3Y2FcdTc3Y2JcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3ZDBcdTc3ZDFcdTc3ZDJcdTc3ZDNcdTc3ZDRcdTc3ZDVcdTc3ZDZcdTc3''@;'; put 'put ''ZDhcdTc3ZDlcdTc3ZGFcdTc3ZGRcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTFcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRcdTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgxMTZcdTgxOGFcdTZlMjRc''@;'; put 'put ''dTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFcdTk5MTBcdTUzYzJcdTg2''@;'; put 'put ''OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2ZjlcdTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgzMzZcdTY3ZTVcdTc4YjRc''@;'; put 'put ''dTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdmMjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzhdLmxlbmd0aDsrK3YpNjU1''@;'; put 'put ''MzMhPT1rWzE3OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc4XVt2XV09NDU1NjgrdixUWzQ1NTY4K3ZdPWtbMTc4XVt2XSk7Zm9yKGtbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2U2XHU3N2U4XHU3N2VhXHU3N2Vm''@;'; put 'put ''XHU3N2YwXHU3N2YxXHU3N2YyXHU3N2Y0XHU3N2Y1XHU3N2Y3XHU3N2Y5XHU3N2ZhXHU3N2ZiXHU3N2ZjXHU3ODAzXHU3ODA0XHU3ODA1XHU3ODA2XHU3ODA3XHU3ODA4XHU3ODBhXHU3ODBiXHU3ODBlXHU3ODBmXHU3ODEwXHU3ODEzXHU3ODE1XHU3ODE5XHU3ODFiXHU3ODFlXHU3ODIwXHU3''@;'; put 'put ''ODIxXHU3ODIyXHU3ODI0XHU3ODI4XHU3ODJhXHU3ODJiXHU3ODJlXHU3ODJmXHU3ODMxXHU3ODMyXHU3ODMzXHU3ODM1XHU3ODM2XHU3ODNkXHU3ODNmXHU3ODQxXHU3ODQyXHU3ODQzXHU3ODQ0XHU3ODQ2XHU3ODQ4XHU3ODQ5XHU3ODRhXHU3ODRiXHU3ODRkXHU3ODRmXHU3ODUxXHU3ODUz''@;'; put 'put ''XHU3ODU0XHU3ODU4XHU3ODU5XHU3ODVhXHVmZmZkXHU3ODViXHU3ODVjXHU3ODVlXHU3ODVmXHU3ODYwXHU3ODYxXHU3ODYyXHU3ODYzXHU3ODY0XHU3ODY1XHU3ODY2XHU3ODY3XHU3ODY4XHU3ODY5XHU3ODZmXHU3ODcwXHU3ODcxXHU3ODcyXHU3ODczXHU3ODc0XHU3ODc1XHU3ODc2XHU3''@;'; put 'put ''ODc4XHU3ODc5XHU3ODdhXHU3ODdiXHU3ODdkXHU3ODdlXHU3ODdmXHU3ODgwXHU3ODgxXHU3ODgyXHU3ODgzXHU1NzNhXHU1YzFkXHU1ZTM4XHU5NTdmXHU1MDdmXHU4MGEwXHU1MzgyXHU2NTVlXHU3NTQ1XHU1NTMxXHU1MDIxXHU4ZDg1XHU2Mjg0XHU5NDllXHU2NzFkXHU1NjMyXHU2ZjZl''@;'; put 'put ''XHU1ZGUyXHU1NDM1XHU3MDkyXHU4ZjY2XHU2MjZmXHU2NGE0XHU2M2EzXHU1ZjdiXHU2Zjg4XHU5MGY0XHU4MWUzXHU4ZmIwXHU1YzE4XHU2NjY4XHU1ZmYxXHU2Yzg5XHU5NjQ4XHU4ZDgxXHU4ODZjXHU2NDkxXHU3OWYwXHU1N2NlXHU2YTU5XHU2MjEwXHU1NDQ4XHU0ZTU4XHU3YTBiXHU2''@;'; put 'put ''MGU5XHU2Zjg0XHU4YmRhXHU2MjdmXHU5MDFlXHU5YThiXHU3OWU0XHU1NDAzXHU3NWY0XHU2MzAxXHU1MzE5XHU2YzYwXHU4ZmRmXHU1ZjFiXHU5YTcwXHU4MDNiXHU5ZjdmXHU0Zjg4XHU1YzNhXHU4ZDY0XHU3ZmM1XHU2NWE1XHU3MGJkXHU1MTQ1XHU1MWIyXHU4NjZiXHU1ZDA3XHU1YmEw''@;'; put 'put ''XHU2MmJkXHU5MTZjXHU3NTc0XHU4ZTBjXHU3YTIwXHU2MTAxXHU3Yjc5XHU0ZWM3XHU3ZWY4XHU3Nzg1XHU0ZTExXHU4MWVkXHU1MjFkXHU1MWZhXHU2YTcxXHU1M2E4XHU4ZTg3XHU5NTA0XHU5NmNmXHU2ZWMxXHU5NjY0XHU2OTVhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc5XS5s''@;'; put 'put ''ZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3OV1bdl1dPTQ1ODI0K3YsVFs0NTgyNCt2XT1rWzE3OV1bdl0pO2ZvcihrWzE4MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzg4NFx1Nzg4''@;'; put 'put ''NVx1Nzg4Nlx1Nzg4OFx1Nzg4YVx1Nzg4Ylx1Nzg4Zlx1Nzg5MFx1Nzg5Mlx1Nzg5NFx1Nzg5NVx1Nzg5Nlx1Nzg5OVx1Nzg5ZFx1Nzg5ZVx1NzhhMFx1NzhhMlx1NzhhNFx1NzhhNlx1NzhhOFx1NzhhOVx1NzhhYVx1NzhhYlx1NzhhY1x1NzhhZFx1NzhhZVx1NzhhZlx1NzhiNVx1NzhiNlx1''@;'; put 'put ''NzhiN1x1NzhiOFx1NzhiYVx1NzhiYlx1NzhiY1x1NzhiZFx1NzhiZlx1NzhjMFx1NzhjMlx1NzhjM1x1NzhjNFx1NzhjNlx1NzhjN1x1NzhjOFx1NzhjY1x1NzhjZFx1NzhjZVx1NzhjZlx1NzhkMVx1NzhkMlx1NzhkM1x1NzhkNlx1NzhkN1x1NzhkOFx1NzhkYVx1NzhkYlx1NzhkY1x1Nzhk''@;'; put 'put ''ZFx1NzhkZVx1NzhkZlx1NzhlMFx1NzhlMVx1NzhlMlx1NzhlM1x1ZmZmZFx1NzhlNFx1NzhlNVx1NzhlNlx1NzhlN1x1NzhlOVx1NzhlYVx1NzhlYlx1NzhlZFx1NzhlZVx1NzhlZlx1NzhmMFx1NzhmMVx1NzhmM1x1NzhmNVx1NzhmNlx1NzhmOFx1NzhmOVx1NzhmYlx1NzhmY1x1NzhmZFx1''@;'; put 'put ''NzhmZVx1NzhmZlx1NzkwMFx1NzkwMlx1NzkwM1x1NzkwNFx1NzkwNlx1NzkwN1x1NzkwOFx1NzkwOVx1NzkwYVx1NzkwYlx1NzkwY1x1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1NGYyMFx1ODIzOVx1NTU5OFx1NGUzMlx1NzVh''@;'; put 'put ''ZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYyNVx1NjkzZlx1OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZjY1x1OGY5ZVx1NjE0OFx1NzRmN1x1OGJjZFx1''@;'; put 'put ''NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZmMVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1N2M5N1x1OTE4Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1N2NiOVx1NmRlY1x1N2ZlMFx1Njc1MVx1NWI1''@;'; put 'put ''OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYyOVx1NjI1M1x1NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4NVx1OTAyZVx1ZmZmZCIuc3BsaXQoIiIpLHY9''@;'; put 'put ''MDt2IT1rWzE4MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTgwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODBdW3ZdXT00NjA4MCt2LFRbNDYwODArdl09a1sxODBdW3ZdKTtmb3Ioa1sxODFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTc5MGRcdTc5MGVcdTc5MGZcdTc5MTBcdTc5MTFcdTc5MTJcdTc5MTRcdTc5MTVcdTc5MTZcdTc5MTdcdTc5MThcdTc5MTlcdTc5MWFcdTc5MWJcdTc5MWNcdTc5MWRcdTc5MWZcdTc5MjBcdTc5MjFcdTc5MjJcdTc5MjNcdTc5MjVcdTc5MjZcdTc5MjdcdTc5MjhcdTc5MjlcdTc5MmFc''@;'; put 'put ''dTc5MmJcdTc5MmNcdTc5MmRcdTc5MmVcdTc5MmZcdTc5MzBcdTc5MzFcdTc5MzJcdTc5MzNcdTc5MzVcdTc5MzZcdTc5MzdcdTc5MzhcdTc5MzlcdTc5M2RcdTc5M2ZcdTc5NDJcdTc5NDNcdTc5NDRcdTc5NDVcdTc5NDdcdTc5NGFcdTc5NGJcdTc5NGNcdTc5NGRcdTc5NGVcdTc5NGZcdTc5''@;'; put 'put ''NTBcdTc5NTFcdTc5NTJcdTc5NTRcdTc5NTVcdTc5NThcdTc5NTlcdTc5NjFcdTc5NjNcdWZmZmRcdTc5NjRcdTc5NjZcdTc5NjlcdTc5NmFcdTc5NmJcdTc5NmNcdTc5NmVcdTc5NzBcdTc5NzFcdTc5NzJcdTc5NzNcdTc5NzRcdTc5NzVcdTc5NzZcdTc5NzlcdTc5N2JcdTc5N2NcdTc5N2Rc''@;'; put 'put ''dTc5N2VcdTc5N2ZcdTc5ODJcdTc5ODNcdTc5ODZcdTc5ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5OTBcdTc5OTFcdTc5OTJcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVcdTRmNDZcdTYwZWVcdTZk''@;'; put 'put ''ZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcwNmZcdTc2N2JcdTdiNDlc''@;'; put 'put ''dTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdcdTc4OThcdTcwYjlcdTUx''@;'; put 'put ''NzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThjMGRcdTUzZTBcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSx2PTA7diE9a1sxODFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTgxXVt2XV09NDYzMzYrdixUWzQ2MzM2K3ZdPWtbMTgxXVt2XSk7Zm9yKGtbMTgyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU3OTkzXHU3OTk0XHU3OTk1XHU3OTk2XHU3OTk3XHU3OTk4XHU3OTk5XHU3OTliXHU3OTljXHU3OTlkXHU3OTllXHU3OTlmXHU3OWEwXHU3OWExXHU3OWEyXHU3OWEzXHU3OWE0XHU3OWE1XHU3OWE2XHU3OWE4XHU3OWE5XHU3OWFhXHU3OWFiXHU3OWFjXHU3OWFk''@;'; put 'put ''XHU3OWFlXHU3OWFmXHU3OWIwXHU3OWIxXHU3OWIyXHU3OWI0XHU3OWI1XHU3OWI2XHU3OWI3XHU3OWI4XHU3OWJjXHU3OWJmXHU3OWMyXHU3OWM0XHU3OWM1XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNjXHU3OWNlXHU3OWNmXHU3OWQwXHU3OWQzXHU3OWQ0XHU3OWQ2XHU3OWQ3XHU3OWQ5XHU3''@;'; put 'put ''OWRhXHU3OWRiXHU3OWRjXHU3OWRkXHU3OWRlXHU3OWUwXHU3OWUxXHU3OWUyXHU3OWU1XHU3OWU4XHU3OWVhXHVmZmZkXHU3OWVjXHU3OWVlXHU3OWYxXHU3OWYyXHU3OWYzXHU3OWY0XHU3OWY1XHU3OWY2XHU3OWY3XHU3OWY5XHU3OWZhXHU3OWZjXHU3OWZlXHU3OWZmXHU3YTAxXHU3YTA0''@;'; put 'put ''XHU3YTA1XHU3YTA3XHU3YTA4XHU3YTA5XHU3YTBhXHU3YTBjXHU3YTBmXHU3YTEwXHU3YTExXHU3YTEyXHU3YTEzXHU3YTE1XHU3YTE2XHU3YTE4XHU3YTE5XHU3YTFiXHU3YTFjXHU0ZTAxXHU3NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBlXHU5NTJkXHU1YjlhXHU4YmEyXHU0ZTIyXHU0''@;'; put 'put ''ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2NTk3XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYzXHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1ODM1XHU3Nzc5XHU4ZDRjXHU2NzVjXHU5NTQw''@;'; put 'put ''XHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUxXHU5NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQxXHU2Mzg3XHU1NGM2XHU1OTFhXHU1OTNhXHU1''@;'; put 'put ''NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5ODlkXHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRmXHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1MTNmXHU4MDMzXHU1YzE0XHU5OTc1XHU2ZDMx''@;'; put 'put ''XHU0ZThjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4Ml1bdl1dPTQ2NTkyK3YsVFs0NjU5Mit2XT1rWzE4Ml1bdl0pO2ZvcihrWzE4M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2ExZFx1N2ExZlx1N2EyMVx1N2EyMlx1N2EyNFx1N2EyNVx1N2EyNlx1N2EyN1x1N2EyOFx1N2EyOVx1N2EyYVx1N2EyYlx1N2EyY1x1N2EyZFx1N2EyZVx1N2EyZlx1N2EzMFx1N2EzMVx1N2EzMlx1N2EzNFx1N2EzNVx1N2EzNlx1N2Ez''@;'; put 'put ''OFx1N2EzYVx1N2EzZVx1N2E0MFx1N2E0MVx1N2E0Mlx1N2E0M1x1N2E0NFx1N2E0NVx1N2E0N1x1N2E0OFx1N2E0OVx1N2E0YVx1N2E0Ylx1N2E0Y1x1N2E0ZFx1N2E0ZVx1N2E0Zlx1N2E1MFx1N2E1Mlx1N2E1M1x1N2E1NFx1N2E1NVx1N2E1Nlx1N2E1OFx1N2E1OVx1N2E1YVx1N2E1Ylx1''@;'; put 'put ''N2E1Y1x1N2E1ZFx1N2E1ZVx1N2E1Zlx1N2E2MFx1N2E2MVx1N2E2Mlx1N2E2M1x1N2E2NFx1N2E2NVx1N2E2Nlx1N2E2N1x1N2E2OFx1ZmZmZFx1N2E2OVx1N2E2YVx1N2E2Ylx1N2E2Y1x1N2E2ZFx1N2E2ZVx1N2E2Zlx1N2E3MVx1N2E3Mlx1N2E3M1x1N2E3NVx1N2E3Ylx1N2E3Y1x1N2E3''@;'; put 'put ''ZFx1N2E3ZVx1N2E4Mlx1N2E4NVx1N2E4N1x1N2E4OVx1N2E4YVx1N2E4Ylx1N2E4Y1x1N2E4ZVx1N2E4Zlx1N2E5MFx1N2E5M1x1N2E5NFx1N2E5OVx1N2E5YVx1N2E5Ylx1N2E5ZVx1N2FhMVx1N2FhMlx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1''@;'; put 'put ''NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2Vi''@;'; put 'put ''YVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1''@;'; put 'put ''N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2Iy''@;'; put 'put ''Nlx1NGYwZlx1NGZkOFx1NjcwZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTgzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODNdW3ZdXT00Njg0OCt2LFRbNDY4NDgrdl09a1sxODNdW3ZdKTtmb3Ioa1sxODRdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhYTNcdTdhYTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdhYWJcdTdhYWVcdTdhYWZcdTdhYjBcdTdhYjFcdTdhYjJcdTdhYjRcdTdhYjVcdTdhYjZcdTdhYjdcdTdhYjhcdTdhYjlcdTdhYmFcdTdhYmJcdTdhYmNcdTdh''@;'; put 'put ''YmRcdTdhYmVcdTdhYzBcdTdhYzFcdTdhYzJcdTdhYzNcdTdhYzRcdTdhYzVcdTdhYzZcdTdhYzdcdTdhYzhcdTdhYzlcdTdhY2FcdTdhY2NcdTdhY2RcdTdhY2VcdTdhY2ZcdTdhZDBcdTdhZDFcdTdhZDJcdTdhZDNcdTdhZDRcdTdhZDVcdTdhZDdcdTdhZDhcdTdhZGFcdTdhZGJcdTdhZGNc''@;'; put 'put ''dTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTdcdTdhZThcdTdhZTlcdTdhZWFcdTdhZWJcdTdhZWNcdTdhZWVcdTdhZjBcdTdhZjFcdTdhZjJcdTdhZjNcdWZmZmRcdTdhZjRcdTdhZjVcdTdhZjZcdTdhZjdcdTdhZjhcdTdhZmJcdTdhZmNcdTdhZmVcdTdiMDBcdTdiMDFcdTdiMDJcdTdi''@;'; put 'put ''MDVcdTdiMDdcdTdiMDlcdTdiMGNcdTdiMGRcdTdiMGVcdTdiMTBcdTdiMTJcdTdiMTNcdTdiMTZcdTdiMTdcdTdiMThcdTdiMWFcdTdiMWNcdTdiMWRcdTdiMWZcdTdiMjFcdTdiMjJcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmRcdTZkNmVcdTZkYWFcdTc5OGZcdTg4YjFcdTVmMTdcdTc1MmJc''@;'; put 'put ''dTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThkNGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThiYTNcdTk2NDRcdTU5ODdcdTdmMWFcdTU0OTBcdTU2NzZcdTU2''@;'; put 'put ''MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRcdThkNzZcdTYxMWZcdTc5YzZcdTY1NjJcdThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhcdTgwOWJcdTdlYjJcdTVjOTdcdTZlMmZcdTY3NjBcdTdiZDlc''@;'; put 'put ''dTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYyMDhcdTllM2RcdTgwZjNcdTc1OTlcdTUyNzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2MDFcdTk2OTRcdTk0ZWNcdTRlMmFcdTU0MDRcdTdlZDlcdTY4''@;'; put 'put ''MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjlcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg0XVt2XV09NDcxMDQrdixUWzQ3MTA0K3ZdPWtbMTg0XVt2XSk7Zm9yKGtbMTg1XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YjJmXHU3YjMwXHU3YjMyXHU3YjM0XHU3YjM1XHU3YjM2XHU3YjM3XHU3YjM5XHU3YjNiXHU3YjNkXHU3YjNmXHU3YjQwXHU3YjQxXHU3YjQyXHU3YjQzXHU3YjQ0XHU3YjQ2XHU3YjQ4XHU3''@;'; put 'put ''YjRhXHU3YjRkXHU3YjRlXHU3YjUzXHU3YjU1XHU3YjU3XHU3YjU5XHU3YjVjXHU3YjVlXHU3YjVmXHU3YjYxXHU3YjYzXHU3YjY0XHU3YjY1XHU3YjY2XHU3YjY3XHU3YjY4XHU3YjY5XHU3YjZhXHU3YjZiXHU3YjZjXHU3YjZkXHU3YjZmXHU3YjcwXHU3YjczXHU3Yjc0XHU3Yjc2XHU3Yjc4''@;'; put 'put ''XHU3YjdhXHU3YjdjXHU3YjdkXHU3YjdmXHU3YjgxXHU3YjgyXHU3YjgzXHU3Yjg0XHU3Yjg2XHU3Yjg3XHU3Yjg4XHU3Yjg5XHU3YjhhXHU3YjhiXHU3YjhjXHU3YjhlXHU3YjhmXHVmZmZkXHU3YjkxXHU3YjkyXHU3YjkzXHU3Yjk2XHU3Yjk4XHU3Yjk5XHU3YjlhXHU3YjliXHU3YjllXHU3''@;'; put 'put ''YjlmXHU3YmEwXHU3YmEzXHU3YmE0XHU3YmE1XHU3YmFlXHU3YmFmXHU3YmIwXHU3YmIyXHU3YmIzXHU3YmI1XHU3YmI2XHU3YmI3XHU3YmI5XHU3YmJhXHU3YmJiXHU3YmJjXHU3YmJkXHU3YmJlXHU3YmJmXHU3YmMwXHU3YmMyXHU3YmMzXHU3YmM0XHU1N2MyXHU4MDNmXHU2ODk3XHU1ZGU1''@;'; put 'put ''XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2YzVlXHU2MmYxXHU4ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFmXHU4ZjljXHU4M2M3XHU1NDk1XHU3YjhkXHU0''@;'; put 'put ''ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1XHU5ODdlXHU1NmZhXHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2OGZhXHU1MTczXHU1Yjk4XHU1MWEwXHU4OWMy''@;'; put 'put ''XHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4OWM0XHU1NzJkXHU3ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVhXHU4ZDM1XHU1MjNkXHU4ZjhhXHU2ZWRhXHU2''@;'; put 'put ''OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4NV1bdl1dPTQ3MzYwK3YsVFs0NzM2MCt2XT1rWzE4NV1bdl0p''@;'; put 'put ''O2ZvcihrWzE4Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2JjNVx1N2JjOFx1N2JjOVx1N2JjYVx1N2JjYlx1N2JjZFx1N2JjZVx1N2JjZlx1N2JkMFx1N2JkMlx1N2JkNFx1N2JkNVx1N2JkNlx1N2JkN1x1N2JkOFx1N2JkYlx1''@;'; put 'put ''N2JkY1x1N2JkZVx1N2JkZlx1N2JlMFx1N2JlMlx1N2JlM1x1N2JlNFx1N2JlN1x1N2JlOFx1N2JlOVx1N2JlYlx1N2JlY1x1N2JlZFx1N2JlZlx1N2JmMFx1N2JmMlx1N2JmM1x1N2JmNFx1N2JmNVx1N2JmNlx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmYlx1N2JmZFx1N2JmZlx1N2MwMFx1N2Mw''@;'; put 'put ''MVx1N2MwMlx1N2MwM1x1N2MwNFx1N2MwNVx1N2MwNlx1N2MwOFx1N2MwOVx1N2MwYVx1N2MwZFx1N2MwZVx1N2MxMFx1N2MxMVx1N2MxMlx1N2MxM1x1N2MxNFx1N2MxNVx1N2MxN1x1N2MxOFx1N2MxOVx1ZmZmZFx1N2MxYVx1N2MxYlx1N2MxY1x1N2MxZFx1N2MxZVx1N2MyMFx1N2MyMVx1''@;'; put 'put ''N2MyMlx1N2MyM1x1N2MyNFx1N2MyNVx1N2MyOFx1N2MyOVx1N2MyYlx1N2MyY1x1N2MyZFx1N2MyZVx1N2MyZlx1N2MzMFx1N2MzMVx1N2MzMlx1N2MzM1x1N2MzNFx1N2MzNVx1N2MzNlx1N2MzN1x1N2MzOVx1N2MzYVx1N2MzYlx1N2MzY1x1N2MzZFx1N2MzZVx1N2M0Mlx1OWFiOFx1NWI2''@;'; put 'put ''OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJiM1x1OWE4N1x1OTE2M1x1NjFhOFx1OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1N1x1NmM0OVx1NTkyZlx1Njc2ZFx1ODIyYVx1''@;'; put 'put ''NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1OTBkZFx1NTk3ZFx1ODAxN1x1NTNmN1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNjZlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1OGQ2Ylx1ODkxMFx1OWU2NFx1OGQzYVx1NTYz''@;'; put 'put ''Zlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJlMFx1NjA2OFx1NTRmY1x1NGVhOFx1NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQzY1x1NTM5YVx1NTAxOVx1NTQwZVx1NTQ3Y1x1''@;'; put 'put ''NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1ODQ2Ylx1ODBlMVx1ODc3NFx1NzJkMFx1N2NjYVx1NmU1Nlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODZdW3ZdXT00NzYxNit2LFRbNDc2MTYr''@;'; put 'put ''dl09a1sxODZdW3ZdKTtmb3Ioa1sxODddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjNDNcdTdjNDRcdTdjNDVcdTdjNDZcdTdjNDdcdTdjNDhcdTdjNDlcdTdjNGFcdTdjNGJcdTdjNGNcdTdjNGVcdTdjNGZcdTdjNTBcdTdjNTFc''@;'; put 'put ''dTdjNTJcdTdjNTNcdTdjNTRcdTdjNTVcdTdjNTZcdTdjNTdcdTdjNThcdTdjNTlcdTdjNWFcdTdjNWJcdTdjNWNcdTdjNWRcdTdjNWVcdTdjNWZcdTdjNjBcdTdjNjFcdTdjNjJcdTdjNjNcdTdjNjRcdTdjNjVcdTdjNjZcdTdjNjdcdTdjNjhcdTdjNjlcdTdjNmFcdTdjNmJcdTdjNmNcdTdj''@;'; put 'put ''NmRcdTdjNmVcdTdjNmZcdTdjNzBcdTdjNzFcdTdjNzJcdTdjNzVcdTdjNzZcdTdjNzdcdTdjNzhcdTdjNzlcdTdjN2FcdTdjN2VcdTdjN2ZcdTdjODBcdTdjODFcdTdjODJcdTdjODNcdTdjODRcdTdjODVcdTdjODZcdTdjODdcdWZmZmRcdTdjODhcdTdjOGFcdTdjOGJcdTdjOGNcdTdjOGRc''@;'; put 'put ''dTdjOGVcdTdjOGZcdTdjOTBcdTdjOTNcdTdjOTRcdTdjOTZcdTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdjYTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJcdTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjRcdTdjYjVcdTdjYjZcdTdjYjdcdTdjYjhcdTdjYmFcdTdj''@;'; put 'put ''YmJcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFcdTc1M2JcdTUyMTJcdTUzMTZcdThiZGRcdTY5ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTczYWZcdTY4NTNcdThmZDhcdTdmMTNcdTYzNjJc''@;'; put 'put ''dTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3NTdcdTdjMjdcdTc2ODdcdTUxZjBcdTYwZjZcdTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBcdTYzMjVcdThmODlcdTVmYmRcdTYwNjJcdTg2''@;'; put 'put ''ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdcdThiYjNcdThiZjJcdTdlZDhcdTgzNjRcdTY2MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZkM2JcdTRmMTlcdTcwNmJcdTgzYjdcdTYyMTZc''@;'; put 'put ''dTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg3XVt2XV09NDc4''@;'; put 'put ''NzIrdixUWzQ3ODcyK3ZdPWtbMTg3XVt2XSk7Zm9yKGtbMTg4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Y2JmXHU3Y2MwXHU3Y2MyXHU3Y2MzXHU3Y2M0XHU3Y2M2XHU3Y2M5XHU3Y2NiXHU3Y2NlXHU3Y2NmXHU3Y2QwXHU3Y2Qx''@;'; put 'put ''XHU3Y2QyXHU3Y2QzXHU3Y2Q0XHU3Y2Q4XHU3Y2RhXHU3Y2RiXHU3Y2RkXHU3Y2RlXHU3Y2UxXHU3Y2UyXHU3Y2UzXHU3Y2U0XHU3Y2U1XHU3Y2U2XHU3Y2U3XHU3Y2U5XHU3Y2VhXHU3Y2ViXHU3Y2VjXHU3Y2VkXHU3Y2VlXHU3Y2YwXHU3Y2YxXHU3Y2YyXHU3Y2YzXHU3Y2Y0XHU3Y2Y1XHU3''@;'; put 'put ''Y2Y2XHU3Y2Y3XHU3Y2Y5XHU3Y2ZhXHU3Y2ZjXHU3Y2ZkXHU3Y2ZlXHU3Y2ZmXHU3ZDAwXHU3ZDAxXHU3ZDAyXHU3ZDAzXHU3ZDA0XHU3ZDA1XHU3ZDA2XHU3ZDA3XHU3ZDA4XHU3ZDA5XHU3ZDBiXHU3ZDBjXHU3ZDBkXHU3ZDBlXHU3ZDBmXHU3ZDEwXHVmZmZkXHU3ZDExXHU3ZDEyXHU3ZDEz''@;'; put 'put ''XHU3ZDE0XHU3ZDE1XHU3ZDE2XHU3ZDE3XHU3ZDE4XHU3ZDE5XHU3ZDFhXHU3ZDFiXHU3ZDFjXHU3ZDFkXHU3ZDFlXHU3ZDFmXHU3ZDIxXHU3ZDIzXHU3ZDI0XHU3ZDI1XHU3ZDI2XHU3ZDI4XHU3ZDI5XHU3ZDJhXHU3ZDJjXHU3ZDJkXHU3ZDJlXHU3ZDMwXHU3ZDMxXHU3ZDMyXHU3ZDMzXHU3''@;'; put 'put ''ZDM0XHU3ZDM1XHU3ZDM2XHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMwXHU4YmE1XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1YWM5XHU3ZWE3XHU2MzI0XHU1MWUwXHU4MTBh''@;'; put 'put ''XHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3OTZkXHU1MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5XHU0ZjczXHU1YmI2XHU1MmEwXHU4MzVhXHU5''@;'; put 'put ''ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3XHU2N2I2XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVhXHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2OGMwXHU2N2VjXHU3OGIxXHU3ODc3XHU2MmUz''@;'; put 'put ''XHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2OWRiXHU5Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3YmFkXHU0ZWY2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtr''@;'; put 'put ''WzE4OF1bdl1dPTQ4MTI4K3YsVFs0ODEyOCt2XT1rWzE4OF1bdl0pO2ZvcihrWzE4OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QzN1x1N2QzOFx1N2QzOVx1N2QzYVx1N2QzYlx1N2QzY1x1N2QzZFx1N2QzZVx1N2QzZlx1N2Q0''@;'; put 'put ''MFx1N2Q0MVx1N2Q0Mlx1N2Q0M1x1N2Q0NFx1N2Q0NVx1N2Q0Nlx1N2Q0N1x1N2Q0OFx1N2Q0OVx1N2Q0YVx1N2Q0Ylx1N2Q0Y1x1N2Q0ZFx1N2Q0ZVx1N2Q0Zlx1N2Q1MFx1N2Q1MVx1N2Q1Mlx1N2Q1M1x1N2Q1NFx1N2Q1NVx1N2Q1Nlx1N2Q1N1x1N2Q1OFx1N2Q1OVx1N2Q1YVx1N2Q1Ylx1''@;'; put 'put ''N2Q1Y1x1N2Q1ZFx1N2Q1ZVx1N2Q1Zlx1N2Q2MFx1N2Q2MVx1N2Q2Mlx1N2Q2M1x1N2Q2NFx1N2Q2NVx1N2Q2Nlx1N2Q2N1x1N2Q2OFx1N2Q2OVx1N2Q2YVx1N2Q2Ylx1N2Q2Y1x1N2Q2ZFx1N2Q2Zlx1N2Q3MFx1N2Q3MVx1N2Q3Mlx1N2Q3M1x1N2Q3NFx1N2Q3NVx1N2Q3Nlx1ZmZmZFx1N2Q3''@;'; put 'put ''OFx1N2Q3OVx1N2Q3YVx1N2Q3Ylx1N2Q3Y1x1N2Q3ZFx1N2Q3ZVx1N2Q3Zlx1N2Q4MFx1N2Q4MVx1N2Q4Mlx1N2Q4M1x1N2Q4NFx1N2Q4NVx1N2Q4Nlx1N2Q4N1x1N2Q4OFx1N2Q4OVx1N2Q4YVx1N2Q4Ylx1N2Q4Y1x1N2Q4ZFx1N2Q4ZVx1N2Q4Zlx1N2Q5MFx1N2Q5MVx1N2Q5Mlx1N2Q5M1x1''@;'; put 'put ''N2Q5NFx1N2Q5NVx1N2Q5Nlx1N2Q5N1x1N2Q5OFx1NTA2NVx1ODIzMFx1NTI1MVx1OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVmYVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1NTMyMFx1OTE3MVx1OTY0ZFx1ODU0OVx1Njkx''@;'; put 'put ''Mlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEwN1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3Zlx1OGY4M1x1NTNlYlx1N2E5Nlx1NjNlZFx1''@;'; put 'put ''NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2FlZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1NzVhNVx1OGJlYlx1NWM0YVx1NWRmZVx1N2I0''@;'; put 'put ''Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVjNVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg5XVt2XS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYoc2Vba1sxODldW3ZdXT00ODM4NCt2LFRbNDgzODQrdl09a1sxODldW3ZdKTtmb3Ioa1sxOTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkOTlcdTdkOWFcdTdkOWJcdTdkOWNcdTdkOWRcdTdkOWVcdTdkOWZcdTdk''@;'; put 'put ''YTBcdTdkYTFcdTdkYTJcdTdkYTNcdTdkYTRcdTdkYTVcdTdkYTdcdTdkYThcdTdkYTlcdTdkYWFcdTdkYWJcdTdkYWNcdTdkYWRcdTdkYWZcdTdkYjBcdTdkYjFcdTdkYjJcdTdkYjNcdTdkYjRcdTdkYjVcdTdkYjZcdTdkYjdcdTdkYjhcdTdkYjlcdTdkYmFcdTdkYmJcdTdkYmNcdTdkYmRc''@;'; put 'put ''dTdkYmVcdTdkYmZcdTdkYzBcdTdkYzFcdTdkYzJcdTdkYzNcdTdkYzRcdTdkYzVcdTdkYzZcdTdkYzdcdTdkYzhcdTdkYzlcdTdkY2FcdTdkY2JcdTdkY2NcdTdkY2RcdTdkY2VcdTdkY2ZcdTdkZDBcdTdkZDFcdTdkZDJcdTdkZDNcdTdkZDRcdTdkZDVcdTdkZDZcdTdkZDdcdTdkZDhcdTdk''@;'; put 'put ''ZDlcdWZmZmRcdTdkZGFcdTdkZGJcdTdkZGNcdTdkZGRcdTdkZGVcdTdkZGZcdTdkZTBcdTdkZTFcdTdkZTJcdTdkZTNcdTdkZTRcdTdkZTVcdTdkZTZcdTdkZTdcdTdkZThcdTdkZTlcdTdkZWFcdTdkZWJcdTdkZWNcdTdkZWRcdTdkZWVcdTdkZWZcdTdkZjBcdTdkZjFcdTdkZjJcdTdkZjNc''@;'; put 'put ''dTdkZjRcdTdkZjVcdTdkZjZcdTdkZjdcdTdkZjhcdTdkZjlcdTdkZmFcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlcdTU4ODNcdTY1NmNcdTk1''@;'; put 'put ''NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1OWFcdTk3YTBcdTYyZDhc''@;'; put 'put ''dTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNcdTVhMWZcdTUwMjZcdTc3''@;'; put 'put ''MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5''@;'; put 'put ''MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTkwXVt2XV09NDg2NDArdixUWzQ4NjQwK3ZdPWtbMTkwXVt2XSk7Zm9yKGtbMTkxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZGZiXHU3ZGZjXHU3ZGZkXHU3ZGZlXHU3ZGZmXHU3''@;'; put 'put ''ZTAwXHU3ZTAxXHU3ZTAyXHU3ZTAzXHU3ZTA0XHU3ZTA1XHU3ZTA2XHU3ZTA3XHU3ZTA4XHU3ZTA5XHU3ZTBhXHU3ZTBiXHU3ZTBjXHU3ZTBkXHU3ZTBlXHU3ZTBmXHU3ZTEwXHU3ZTExXHU3ZTEyXHU3ZTEzXHU3ZTE0XHU3ZTE1XHU3ZTE2XHU3ZTE3XHU3ZTE4XHU3ZTE5XHU3ZTFhXHU3ZTFi''@;'; put 'put ''XHU3ZTFjXHU3ZTFkXHU3ZTFlXHU3ZTFmXHU3ZTIwXHU3ZTIxXHU3ZTIyXHU3ZTIzXHU3ZTI0XHU3ZTI1XHU3ZTI2XHU3ZTI3XHU3ZTI4XHU3ZTI5XHU3ZTJhXHU3ZTJiXHU3ZTJjXHU3ZTJkXHU3ZTJlXHU3ZTJmXHU3ZTMwXHU3ZTMxXHU3ZTMyXHU3ZTMzXHU3ZTM0XHU3ZTM1XHU3ZTM2XHU3''@;'; put 'put ''ZTM3XHU3ZTM4XHU3ZTM5XHVmZmZkXHU3ZTNhXHU3ZTNjXHU3ZTNkXHU3ZTNlXHU3ZTNmXHU3ZTQwXHU3ZTQyXHU3ZTQzXHU3ZTQ0XHU3ZTQ1XHU3ZTQ2XHU3ZTQ4XHU3ZTQ5XHU3ZTRhXHU3ZTRiXHU3ZTRjXHU3ZTRkXHU3ZTRlXHU3ZTRmXHU3ZTUwXHU3ZTUxXHU3ZTUyXHU3ZTUzXHU3ZTU0''@;'; put 'put ''XHU3ZTU1XHU3ZTU2XHU3ZTU3XHU3ZTU4XHU3ZTU5XHU3ZTVhXHU3ZTViXHU3ZTVjXHU3ZTVkXHU0ZmNhXHU3YWUzXHU2ZDVhXHU5MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4XHU1MjBhXHU1ODJhXHU1MmQ4XHU1NzRlXHU3''@;'; put 'put ''ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2UwXHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3MGU0XHU5NzYwXHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2ZTM0XHU1MTRiXHU1MjNiXHU1YmEyXHU4YmZl''@;'; put 'put ''XHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEwXHU1M2UzXHU2MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2FlXHU2MzBlXHU4ZGU4XHU4MGVmXHU1NzU3XHU3''@;'; put 'put ''Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNlXHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2NWY3XHU1MWI1XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTkxXS5sZW5ndGg7Kyt2''@;'; put 'put ''KTY1NTMzIT09a1sxOTFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5MV1bdl1dPTQ4ODk2K3YsVFs0ODg5Nit2XT1rWzE5MV1bdl0pO2ZvcihrWzE5Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U1ZVx1N2U1Zlx1N2U2MFx1''@;'; put 'put ''N2U2MVx1N2U2Mlx1N2U2M1x1N2U2NFx1N2U2NVx1N2U2Nlx1N2U2N1x1N2U2OFx1N2U2OVx1N2U2YVx1N2U2Ylx1N2U2Y1x1N2U2ZFx1N2U2ZVx1N2U2Zlx1N2U3MFx1N2U3MVx1N2U3Mlx1N2U3M1x1N2U3NFx1N2U3NVx1N2U3Nlx1N2U3N1x1N2U3OFx1N2U3OVx1N2U3YVx1N2U3Ylx1N2U3''@;'; put 'put ''Y1x1N2U3ZFx1N2U3ZVx1N2U3Zlx1N2U4MFx1N2U4MVx1N2U4M1x1N2U4NFx1N2U4NVx1N2U4Nlx1N2U4N1x1N2U4OFx1N2U4OVx1N2U4YVx1N2U4Ylx1N2U4Y1x1N2U4ZFx1N2U4ZVx1N2U4Zlx1N2U5MFx1N2U5MVx1N2U5Mlx1N2U5M1x1N2U5NFx1N2U5NVx1N2U5Nlx1N2U5N1x1N2U5OFx1''@;'; put 'put ''N2U5OVx1N2U5YVx1N2U5Y1x1N2U5ZFx1N2U5ZVx1ZmZmZFx1N2VhZVx1N2ViNFx1N2ViYlx1N2ViY1x1N2VkNlx1N2VlNFx1N2VlY1x1N2VmOVx1N2YwYVx1N2YxMFx1N2YxZVx1N2YzN1x1N2YzOVx1N2YzYlx1N2YzY1x1N2YzZFx1N2YzZVx1N2YzZlx1N2Y0MFx1N2Y0MVx1N2Y0M1x1N2Y0''@;'; put 'put ''Nlx1N2Y0N1x1N2Y0OFx1N2Y0OVx1N2Y0YVx1N2Y0Ylx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y0Zlx1N2Y1Mlx1N2Y1M1x1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4N1x1ODcyMVx1ODE0YVx1''@;'; put 'put ''OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1NjcxN1x1NmQ2YVx1NjM1''@;'; put 'put ''ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5OFx1NjhhOFx1NzI4MVx1''@;'; put 'put ''OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5''@;'; put 'put ''Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTJdW3ZdXT00OTE1Mit2LFRbNDkxNTIrdl09a1sxOTJdW3ZdKTtmb3Ioa1sxOTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdmNTZc''@;'; put 'put ''dTdmNTlcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNWVcdTdmNjBcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNjdcdTdmNmJcdTdmNmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVcdTdmNzZcdTdmNzdcdTdmNzhcdTdmN2FcdTdmN2JcdTdmN2NcdTdmN2RcdTdmN2ZcdTdmODBcdTdm''@;'; put 'put ''ODJcdTdmODNcdTdmODRcdTdmODVcdTdmODZcdTdmODdcdTdmODhcdTdmODlcdTdmOGJcdTdmOGRcdTdmOGZcdTdmOTBcdTdmOTFcdTdmOTJcdTdmOTNcdTdmOTVcdTdmOTZcdTdmOTdcdTdmOThcdTdmOTlcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdmYTVcdTdmYTZcdTdmYThc''@;'; put 'put ''dTdmYTlcdTdmYWFcdTdmYWJcdTdmYWNcdTdmYWRcdTdmYWVcdTdmYjFcdWZmZmRcdTdmYjNcdTdmYjRcdTdmYjVcdTdmYjZcdTdmYjdcdTdmYmFcdTdmYmJcdTdmYmVcdTdmYzBcdTdmYzJcdTdmYzNcdTdmYzRcdTdmYzZcdTdmYzdcdTdmYzhcdTdmYzlcdTdmY2JcdTdmY2RcdTdmY2ZcdTdm''@;'; put 'put ''ZDBcdTdmZDFcdTdmZDJcdTdmZDNcdTdmZDZcdTdmZDdcdTdmZDlcdTdmZGFcdTdmZGJcdTdmZGNcdTdmZGRcdTdmZGVcdTdmZTJcdTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgzYjJcdThmZGVcdTk1NzBcdTVlYzlc''@;'; put 'put ''dTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdcdTcxY2VcdTViZTVcdThmYmRcdTZm''@;'; put 'put ''NjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgzZjFcdTk2ZjZcdTlmODRcdTk0YzNc''@;'; put 'put ''dTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2NcdTdhYmZcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSx2PTA7diE9a1sxOTNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTkzXVt2XV09NDk0MDgrdixUWzQ5NDA4K3ZdPWtbMTkzXVt2XSk7Zm9yKGtbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU3ZmU0XHU3ZmU3XHU3ZmU4XHU3ZmVhXHU3ZmViXHU3ZmVjXHU3ZmVkXHU3ZmVmXHU3ZmYyXHU3ZmY0XHU3ZmY1XHU3ZmY2XHU3ZmY3XHU3ZmY4XHU3ZmY5XHU3ZmZhXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDAyXHU4MDA3XHU4MDA4XHU4MDA5XHU4MDBhXHU4MDBlXHU4MDBmXHU4''@;'; put 'put ''MDExXHU4MDEzXHU4MDFhXHU4MDFiXHU4MDFkXHU4MDFlXHU4MDFmXHU4MDIxXHU4MDIzXHU4MDI0XHU4MDJiXHU4MDJjXHU4MDJkXHU4MDJlXHU4MDJmXHU4MDMwXHU4MDMyXHU4MDM0XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQxXHU4MDQ0XHU4MDQ1XHU4MDQ3XHU4MDQ4''@;'; put 'put ''XHU4MDQ5XHU4MDRlXHU4MDRmXHU4MDUwXHU4MDUxXHU4MDUzXHU4MDU1XHU4MDU2XHU4MDU3XHVmZmZkXHU4MDU5XHU4MDViXHU4MDVjXHU4MDVkXHU4MDVlXHU4MDVmXHU4MDYwXHU4MDYxXHU4MDYyXHU4MDYzXHU4MDY0XHU4MDY1XHU4MDY2XHU4MDY3XHU4MDY4XHU4MDZiXHU4MDZjXHU4''@;'; put 'put ''MDZkXHU4MDZlXHU4MDZmXHU4MDcwXHU4MDcyXHU4MDczXHU4MDc0XHU4MDc1XHU4MDc2XHU4MDc3XHU4MDc4XHU4MDc5XHU4MDdhXHU4MDdiXHU4MDdjXHU4MDdkXHU5Njg2XHU1Nzg0XHU2MmUyXHU5NjQ3XHU2OTdjXHU1YTA0XHU2NDAyXHU3YmQzXHU2ZjBmXHU5NjRiXHU4MmE2XHU1MzYy''@;'; put 'put ''XHU5ODg1XHU1ZTkwXHU3MDg5XHU2M2IzXHU1MzY0XHU4NjRmXHU5YzgxXHU5ZTkzXHU3ODhjXHU5NzMyXHU4ZGVmXHU4ZDQyXHU5ZTdmXHU2ZjVlXHU3OTg0XHU1ZjU1XHU5NjQ2XHU2MjJlXHU5YTc0XHU1NDE1XHU5NGRkXHU0ZmEzXHU2NWM1XHU1YzY1XHU1YzYxXHU3ZjE1XHU4NjUxXHU2''@;'; put 'put ''YzJmXHU1ZjhiXHU3Mzg3XHU2ZWU0XHU3ZWZmXHU1Y2U2XHU2MzFiXHU1YjZhXHU2ZWU2XHU1Mzc1XHU0ZTcxXHU2M2EwXHU3NTY1XHU2MmExXHU4ZjZlXHU0ZjI2XHU0ZWQxXHU2Y2E2XHU3ZWI2XHU4YmJhXHU4NDFkXHU4N2JhXHU3ZjU3XHU5MDNiXHU5NTIzXHU3YmE5XHU5YWExXHU4OGY4''@;'; put 'put ''XHU4NDNkXHU2ZDFiXHU5YTg2XHU3ZWRjXHU1OTg4XHU5ZWJiXHU3MzliXHU3ODAxXHU4NjgyXHU5YTZjXHU5YTgyXHU1NjFiXHU1NDE3XHU1N2NiXHU0ZTcwXHU5ZWE2XHU1MzU2XHU4ZmM4XHU4MTA5XHU3NzkyXHU5OTkyXHU4NmVlXHU2ZWUxXHU4NTEzXHU2NmZjXHU2MTYyXHU2ZjJiXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5NF1bdl1dPTQ5NjY0K3YsVFs0OTY2NCt2XT1rWzE5NF1bdl0pO2ZvcihrWzE5NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA3ZVx1ODA4MVx1ODA4Mlx1ODA4NVx1ODA4OFx1ODA4YVx1ODA4ZFx1ODA4ZVx1ODA4Zlx1ODA5MFx1ODA5MVx1ODA5Mlx1ODA5NFx1ODA5NVx1ODA5N1x1ODA5OVx1ODA5ZVx1ODBhM1x1ODBhNlx1ODBhN1x1ODBhOFx1ODBhY1x1ODBiMFx1ODBiM1x1''@;'; put 'put ''ODBiNVx1ODBiNlx1ODBiOFx1ODBiOVx1ODBiYlx1ODBjNVx1ODBjN1x1ODBjOFx1ODBjOVx1ODBjYVx1ODBjYlx1ODBjZlx1ODBkMFx1ODBkMVx1ODBkMlx1ODBkM1x1ODBkNFx1ODBkNVx1ODBkOFx1ODBkZlx1ODBlMFx1ODBlMlx1ODBlM1x1ODBlNlx1ODBlZVx1ODBmNVx1ODBmN1x1ODBm''@;'; put 'put ''OVx1ODBmYlx1ODBmZVx1ODBmZlx1ODEwMFx1ODEwMVx1ODEwM1x1ODEwNFx1ODEwNVx1ODEwN1x1ODEwOFx1ODEwYlx1ZmZmZFx1ODEwY1x1ODExNVx1ODExN1x1ODExOVx1ODExYlx1ODExY1x1ODExZFx1ODExZlx1ODEyMFx1ODEyMVx1ODEyMlx1ODEyM1x1ODEyNFx1ODEyNVx1ODEyNlx1''@;'; put 'put ''ODEyN1x1ODEyOFx1ODEyOVx1ODEyYVx1ODEyYlx1ODEyZFx1ODEyZVx1ODEzMFx1ODEzM1x1ODEzNFx1ODEzNVx1ODEzN1x1ODEzOVx1ODEzYVx1ODEzYlx1ODEzY1x1ODEzZFx1ODEzZlx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1NzMyYlx1ODMwNVx1OTUx''@;'; put 'put ''YVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTliOVx1NWE5YVx1OTVlOFx1''@;'; put 'put ''OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1NzcyMFx1N2VmNVx1NTE5''@;'; put 'put ''NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRlZFx1NTQwZFx1NTQ3ZFx1''@;'; put 'put ''OGMyY1x1NjQ3OFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTk1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTVdW3ZdXT00OTkyMCt2LFRbNDk5MjArdl09a1sxOTVdW3ZdKTtmb3Ioa1sxOTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDBcdTgxNDFcdTgxNDJcdTgxNDNcdTgxNDRcdTgxNDVcdTgxNDdcdTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZcdTgxNTdcdTgxNThcdTgxNWJcdTgxNWNcdTgxNWRcdTgxNWVcdTgxNWZcdTgxNjFcdTgxNjJc''@;'; put 'put ''dTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgxNzdcdTgxNzhcdTgxODFcdTgxODNcdTgxODRcdTgxODVcdTgxODZcdTgxODdcdTgxODlcdTgxOGJcdTgxOGNcdTgxOGRcdTgxOGVcdTgxOTBcdTgxOTJcdTgx''@;'; put 'put ''OTNcdTgxOTRcdTgxOTVcdTgxOTZcdTgxOTdcdTgxOTlcdTgxOWFcdTgxOWVcdTgxOWZcdTgxYTBcdTgxYTFcdTgxYTJcdTgxYTRcdTgxYTVcdWZmZmRcdTgxYTdcdTgxYTlcdTgxYWJcdTgxYWNcdTgxYWRcdTgxYWVcdTgxYWZcdTgxYjBcdTgxYjFcdTgxYjJcdTgxYjRcdTgxYjVcdTgxYjZc''@;'; put 'put ''dTgxYjdcdTgxYjhcdTgxYjlcdTgxYmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgxY2JcdTgxY2RcdTgxY2VcdTgxY2ZcdTgxZDBcdTgxZDFcdTgxZDJcdTgxZDNcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThcdTY0NjlcdTliNTRcdTYy''@;'; put 'put ''YjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcyNjdcdTdhNDZcdTYyZmZc''@;'; put 'put ''dTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRcdTU5YWVcdTk3MTNcdTUw''@;'; put 'put ''MmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1NGRcdTZkODVcdTYwYThc''@;'; put 'put ''dTY3ZTBcdTcyZGVcdTUxZGRcdTViODFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk2XVt2XV09NTAxNzYrdixUWzUwMTc2K3ZdPWtbMTk2XVt2XSk7Zm9yKGtbMTk3XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MWQ0XHU4MWQ1XHU4MWQ2XHU4MWQ3XHU4MWQ4XHU4MWQ5XHU4MWRhXHU4MWRiXHU4MWRjXHU4MWRkXHU4MWRlXHU4MWRmXHU4MWUwXHU4MWUxXHU4MWUyXHU4MWU0XHU4MWU1XHU4MWU2XHU4MWU4XHU4MWU5''@;'; put 'put ''XHU4MWViXHU4MWVlXHU4MWVmXHU4MWYwXHU4MWYxXHU4MWYyXHU4MWY1XHU4MWY2XHU4MWY3XHU4MWY4XHU4MWY5XHU4MWZhXHU4MWZkXHU4MWZmXHU4MjAzXHU4MjA3XHU4MjA4XHU4MjA5XHU4MjBhXHU4MjBiXHU4MjBlXHU4MjBmXHU4MjExXHU4MjEzXHU4MjE1XHU4MjE2XHU4MjE3XHU4''@;'; put 'put ''MjE4XHU4MjE5XHU4MjFhXHU4MjFkXHU4MjIwXHU4MjI0XHU4MjI1XHU4MjI2XHU4MjI3XHU4MjI5XHU4MjJlXHU4MjMyXHU4MjNhXHU4MjNjXHU4MjNkXHU4MjNmXHVmZmZkXHU4MjQwXHU4MjQxXHU4MjQyXHU4MjQzXHU4MjQ1XHU4MjQ2XHU4MjQ4XHU4MjRhXHU4MjRjXHU4MjRkXHU4MjRl''@;'; put 'put ''XHU4MjUwXHU4MjUxXHU4MjUyXHU4MjUzXHU4MjU0XHU4MjU1XHU4MjU2XHU4MjU3XHU4MjU5XHU4MjViXHU4MjVjXHU4MjVkXHU4MjVlXHU4MjYwXHU4MjYxXHU4MjYyXHU4MjYzXHU4MjY0XHU4MjY1XHU4MjY2XHU4MjY3XHU4MjY5XHU2MmU3XHU2Y2RlXHU3MjViXHU2MjZkXHU5NGFlXHU3''@;'; put 'put ''ZWJkXHU4MTEzXHU2ZDUzXHU1MTljXHU1ZjA0XHU1OTc0XHU1MmFhXHU2MDEyXHU1OTczXHU2Njk2XHU4NjUwXHU3NTlmXHU2MzJhXHU2MWU2XHU3Y2VmXHU4YmZhXHU1NGU2XHU2YjI3XHU5ZTI1XHU2YmI0XHU4NWQ1XHU1NDU1XHU1MDc2XHU2Y2E0XHU1NTZhXHU4ZGI0XHU3MjJjXHU1ZTE1''@;'; put 'put ''XHU2MDE1XHU3NDM2XHU2MmNkXHU2MzkyXHU3MjRjXHU1Zjk4XHU2ZTQzXHU2ZDNlXHU2NTAwXHU2ZjU4XHU3NmQ4XHU3OGQwXHU3NmZjXHU3NTU0XHU1MjI0XHU1M2RiXHU0ZTUzXHU1ZTllXHU2NWMxXHU4MDJhXHU4MGQ2XHU2MjliXHU1NDg2XHU1MjI4XHU3MGFlXHU4ODhkXHU4ZGQxXHU2''@;'; put 'put ''Y2UxXHU1NDc4XHU4MGRhXHU1N2Y5XHU4OGY0XHU4ZDU0XHU5NjZhXHU5MTRkXHU0ZjY5XHU2YzliXHU1NWI3XHU3NmM2XHU3ODMwXHU2MmE4XHU3MGY5XHU2ZjhlXHU1ZjZkXHU4NGVjXHU2OGRhXHU3ODdjXHU3YmY3XHU4MWE4XHU2NzBiXHU5ZTRmXHU2MzY3XHU3OGIwXHU1NzZmXHU3ODEy''@;'; put 'put ''XHU5NzM5XHU2Mjc5XHU2MmFiXHU1Mjg4XHU3NDM1XHU2YmQ3XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5N11bdl1dPTUwNDMyK3YsVFs1MDQzMit2XT1rWzE5N11bdl0pO2ZvcihrWzE5''@;'; put 'put ''OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODI2YVx1ODI2Ylx1ODI2Y1x1ODI2ZFx1ODI3MVx1ODI3NVx1ODI3Nlx1ODI3N1x1ODI3OFx1ODI3Ylx1ODI3Y1x1ODI4MFx1ODI4MVx1ODI4M1x1ODI4NVx1ODI4Nlx1ODI4N1x1ODI4''@;'; put 'put ''OVx1ODI4Y1x1ODI5MFx1ODI5M1x1ODI5NFx1ODI5NVx1ODI5Nlx1ODI5YVx1ODI5Ylx1ODI5ZVx1ODJhMFx1ODJhMlx1ODJhM1x1ODJhN1x1ODJiMlx1ODJiNVx1ODJiNlx1ODJiYVx1ODJiYlx1ODJiY1x1ODJiZlx1ODJjMFx1ODJjMlx1ODJjM1x1ODJjNVx1ODJjNlx1ODJjOVx1ODJkMFx1''@;'; put 'put ''ODJkNlx1ODJkOVx1ODJkYVx1ODJkZFx1ODJlMlx1ODJlN1x1ODJlOFx1ODJlOVx1ODJlYVx1ODJlY1x1ODJlZFx1ODJlZVx1ODJmMFx1ODJmMlx1ODJmM1x1ODJmNVx1ODJmNlx1ODJmOFx1ZmZmZFx1ODJmYVx1ODJmY1x1ODJmZFx1ODJmZVx1ODJmZlx1ODMwMFx1ODMwYVx1ODMwYlx1ODMw''@;'; put 'put ''ZFx1ODMxMFx1ODMxMlx1ODMxM1x1ODMxNlx1ODMxOFx1ODMxOVx1ODMxZFx1ODMxZVx1ODMxZlx1ODMyMFx1ODMyMVx1ODMyMlx1ODMyM1x1ODMyNFx1ODMyNVx1ODMyNlx1ODMyOVx1ODMyYVx1ODMyZVx1ODMzMFx1ODMzMlx1ODMzN1x1ODMzYlx1ODMzZFx1NTU2NFx1ODEzZVx1NzViMlx1''@;'; put 'put ''NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5N1x1OThkOFx1NmYwMlx1NzRlMlx1Nzk2OFx1NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1ODJmOVx1ODQwZFx1NWU3M1x1NTFlZFx1NzRm''@;'; put 'put ''Nlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1N2M5NVx1NTI1Nlx1NjI1MVx1OTRmYVx1NGVjNlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2Nlx1OGMzMVx1NjZkZFx1NzAxMVx1NjcxZlx1''@;'; put 'put ''NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3Nlx1NjhjYlx1NTk0N1x1NmI2N1x1NzU2Nlx1NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1NGU1ZVx1NGYwMVx1NTQyZlx1NTk1MVx1Nzgw''@;'; put 'put ''Y1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTk4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOThdW3ZdXT01MDY4OCt2LFRbNTA2ODgrdl09a1sxOThd''@;'; put 'put ''W3ZdKTtmb3Ioa1sxOTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzM2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhcdTgzNGFcdTgzNGJcdTgzNGNcdTgzNGRcdTgzNGVcdTgzNTNcdTgzNTVcdTgzNTZcdTgz''@;'; put 'put ''NTdcdTgzNThcdTgzNTlcdTgzNWRcdTgzNjJcdTgzNzBcdTgzNzFcdTgzNzJcdTgzNzNcdTgzNzRcdTgzNzVcdTgzNzZcdTgzNzlcdTgzN2FcdTgzN2VcdTgzN2ZcdTgzODBcdTgzODFcdTgzODJcdTgzODNcdTgzODRcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgzOGNcdTgzOGRcdTgzOGZc''@;'; put 'put ''dTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgzOTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTFcdTgzYTJcdTgzYTNcdTgzYTRcdTgzYTVcdTgzYTZcdTgzYTdcdTgzYWNcdTgzYWRcdTgzYWVcdWZmZmRcdTgzYWZcdTgzYjVcdTgzYmJcdTgzYmVcdTgzYmZcdTgzYzJcdTgz''@;'; put 'put ''YzNcdTgzYzRcdTgzYzZcdTgzYzhcdTgzYzlcdTgzY2JcdTgzY2RcdTgzY2VcdTgzZDBcdTgzZDFcdTgzZDJcdTgzZDNcdTgzZDVcdTgzZDdcdTgzZDlcdTgzZGFcdTgzZGJcdTgzZGVcdTgzZTJcdTgzZTNcdTgzZTRcdTgzZTZcdTgzZTdcdTgzZThcdTgzZWJcdTgzZWNcdTgzZWRcdTYwNzBc''@;'; put 'put ''dTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZcdThjMjZcdTRlN2VcdTllZDRcdTk0YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRcdTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlcdTY3YWFcdTU0NWJcdTgxNTRcdTdmOGNcdTU4''@;'; put 'put ''OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3YTdcdTRlNTRcdTRmYThcdTVkZTdcdTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUyMDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdhODNcdTk0YTZcdTRmYjVcdTRlYjJcdTc5ZTZc''@;'; put 'put ''dTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2JcdTZjMjJcdTUwM2VcdTUzN2ZcdTZlMDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdcdTVlODZcdTc0M2NcdTdhNzdcdTc5Y2JcdTRlMThcdTkwYjFcdTc0MDNcdTZjNDJcdTU2''@;'; put 'put ''ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlhNzFcdTZlMjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk5XVt2XV09NTA5NDQrdixUWzUw''@;'; put 'put ''OTQ0K3ZdPWtbMTk5XVt2XSk7Zm9yKGtbMjAwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4M2VlXHU4M2VmXHU4M2YzXHU4M2Y0XHU4M2Y1XHU4M2Y2XHU4M2Y3XHU4M2ZhXHU4M2ZiXHU4M2ZjXHU4M2ZlXHU4M2ZmXHU4NDAwXHU4''@;'; put 'put ''NDAyXHU4NDA1XHU4NDA3XHU4NDA4XHU4NDA5XHU4NDBhXHU4NDEwXHU4NDEyXHU4NDEzXHU4NDE0XHU4NDE1XHU4NDE2XHU4NDE3XHU4NDE5XHU4NDFhXHU4NDFiXHU4NDFlXHU4NDFmXHU4NDIwXHU4NDIxXHU4NDIyXHU4NDIzXHU4NDI5XHU4NDJhXHU4NDJiXHU4NDJjXHU4NDJkXHU4NDJl''@;'; put 'put ''XHU4NDJmXHU4NDMwXHU4NDMyXHU4NDMzXHU4NDM0XHU4NDM1XHU4NDM2XHU4NDM3XHU4NDM5XHU4NDNhXHU4NDNiXHU4NDNlXHU4NDNmXHU4NDQwXHU4NDQxXHU4NDQyXHU4NDQzXHU4NDQ0XHU4NDQ1XHU4NDQ3XHU4NDQ4XHU4NDQ5XHVmZmZkXHU4NDRhXHU4NDRiXHU4NDRjXHU4NDRkXHU4''@;'; put 'put ''NDRlXHU4NDRmXHU4NDUwXHU4NDUyXHU4NDUzXHU4NDU0XHU4NDU1XHU4NDU2XHU4NDU4XHU4NDVkXHU4NDVlXHU4NDVmXHU4NDYwXHU4NDYyXHU4NDY0XHU4NDY1XHU4NDY2XHU4NDY3XHU4NDY4XHU4NDZhXHU4NDZlXHU4NDZmXHU4NDcwXHU4NDcyXHU4NDc0XHU4NDc3XHU4NDc5XHU4NDdi''@;'; put 'put ''XHU4NDdjXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3NWNhXHU2MmYzXHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3XHU3ODZlXHU5NmMwXHU4OGQ5XHU3ZmE0XHU3''@;'; put 'put ''MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5XHU3MGVkXHU1OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3ZWFiXHU2MjU0XHU0ZWNkXHU2NWU1XHU2MjBl''@;'; put 'put ''XHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4MzM5XHU4ODE1XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZmXHU5NjJlXHU4NTRhXHU3NDVlXHU5NTEwXHU5''@;'; put 'put ''NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2MxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjAwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwMF1bdl1d''@;'; put 'put ''PTUxMjAwK3YsVFs1MTIwMCt2XT1rWzIwMF1bdl0pO2ZvcihrWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODQ3ZFx1ODQ3ZVx1ODQ3Zlx1ODQ4MFx1ODQ4MVx1ODQ4M1x1ODQ4NFx1ODQ4NVx1ODQ4Nlx1ODQ4YVx1ODQ4ZFx1''@;'; put 'put ''ODQ4Zlx1ODQ5MFx1ODQ5MVx1ODQ5Mlx1ODQ5M1x1ODQ5NFx1ODQ5NVx1ODQ5Nlx1ODQ5OFx1ODQ5YVx1ODQ5Ylx1ODQ5ZFx1ODQ5ZVx1ODQ5Zlx1ODRhMFx1ODRhMlx1ODRhM1x1ODRhNFx1ODRhNVx1ODRhNlx1ODRhN1x1ODRhOFx1ODRhOVx1ODRhYVx1ODRhYlx1ODRhY1x1ODRhZFx1ODRh''@;'; put 'put ''ZVx1ODRiMFx1ODRiMVx1ODRiM1x1ODRiNVx1ODRiNlx1ODRiN1x1ODRiYlx1ODRiY1x1ODRiZVx1ODRjMFx1ODRjMlx1ODRjM1x1ODRjNVx1ODRjNlx1ODRjN1x1ODRjOFx1ODRjYlx1ODRjY1x1ODRjZVx1ODRjZlx1ODRkMlx1ODRkNFx1ODRkNVx1ODRkN1x1ZmZmZFx1ODRkOFx1ODRkOVx1''@;'; put 'put ''ODRkYVx1ODRkYlx1ODRkY1x1ODRkZVx1ODRlMVx1ODRlMlx1ODRlNFx1ODRlN1x1ODRlOFx1ODRlOVx1ODRlYVx1ODRlYlx1ODRlZFx1ODRlZVx1ODRlZlx1ODRmMVx1ODRmMlx1ODRmM1x1ODRmNFx1ODRmNVx1ODRmNlx1ODRmN1x1ODRmOFx1ODRmOVx1ODRmYVx1ODRmYlx1ODRmZFx1ODRm''@;'; put 'put ''ZVx1ODUwMFx1ODUwMVx1ODUwMlx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5YVx1NjI2Ylx1NWFjMlx1NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2ViMVx1NTBiYlx1NTU2NVx1NzE1ZVx1N2I1Ylx1''@;'; put 'put ''NjY1Mlx1NzNjYVx1ODJlYlx1Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1NjRjNVx1OGQ2MVx1ODFiM1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1NWMxYVx1ODhmM1x1NjhhMlx1NjM0ZVx1N2Ew''@;'; put 'put ''ZFx1NzBlN1x1ODI4ZFx1NTJmYVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0YVx1ODZjN1x1ODIwY1x1ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3Ylx1NGYzOFx1OGVhYlx1NmRmMVx1NWEyMFx1''@;'; put 'put ''N2VjNVx1Nzk1ZVx1NmM4OFx1NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1NzUxZlx1NzUyNVx1NzI3Mlx1NTM0N1x1N2VmM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjAxXVt2XS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''c2Vba1syMDFdW3ZdXT01MTQ1Nit2LFRbNTE0NTYrdl09a1syMDFdW3ZdKTtmb3Ioa1syMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1MDNcdTg1MDRcdTg1MDVcdTg1MDZcdTg1MDdcdTg1MDhcdTg1MDlcdTg1MGFcdTg1MGJc''@;'; put 'put ''dTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVcdTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1MWRcdTg1MWVcdTg1MjBcdTg1MjJcdTg1MjNcdTg1MjRcdTg1MjVcdTg1MjZcdTg1MjdcdTg1MjhcdTg1MjlcdTg1MmFcdTg1MmRcdTg1MmVcdTg1MmZcdTg1''@;'; put 'put ''MzBcdTg1MzFcdTg1MzJcdTg1MzNcdTg1MzRcdTg1MzVcdTg1MzZcdTg1M2VcdTg1M2ZcdTg1NDBcdTg1NDFcdTg1NDJcdTg1NDRcdTg1NDVcdTg1NDZcdTg1NDdcdTg1NGJcdTg1NGNcdTg1NGRcdTg1NGVcdTg1NGZcdTg1NTBcdTg1NTFcdTg1NTJcdTg1NTNcdTg1NTRcdTg1NTVcdWZmZmRc''@;'; put 'put ''dTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1NWZcdTg1NjBcdTg1NjFcdTg1NjJcdTg1NjNcdTg1NjVcdTg1NjZcdTg1NjdcdTg1NjlcdTg1NmFcdTg1NmJcdTg1NmNcdTg1NmRcdTg1NmVcdTg1NmZcdTg1NzBcdTg1NzFcdTg1NzNcdTg1NzVcdTg1NzZcdTg1NzdcdTg1''@;'; put 'put ''NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcyZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZc''@;'; put 'put ''dTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRcdThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTVi''@;'; put 'put ''YTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZc''@;'; put 'put ''dTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZcdTU4ODVcdTVlYjZcdTY1NzBcdTZmMzFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwMl1bdl0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKHNlW2tbMjAyXVt2XV09NTE3MTIrdixUWzUxNzEyK3ZdPWtbMjAyXVt2XSk7Zm9yKGtbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTgyXHU4NTgzXHU4NTg2XHU4NTg4XHU4NTg5XHU4NThhXHU4NThi''@;'; put 'put ''XHU4NThjXHU4NThkXHU4NThlXHU4NTkwXHU4NTkxXHU4NTkyXHU4NTkzXHU4NTk0XHU4NTk1XHU4NTk2XHU4NTk3XHU4NTk4XHU4NTk5XHU4NTlhXHU4NTlkXHU4NTllXHU4NTlmXHU4NWEwXHU4NWExXHU4NWEyXHU4NWEzXHU4NWE1XHU4NWE2XHU4NWE3XHU4NWE5XHU4NWFiXHU4NWFjXHU4''@;'; put 'put ''NWFkXHU4NWIxXHU4NWIyXHU4NWIzXHU4NWI0XHU4NWI1XHU4NWI2XHU4NWI4XHU4NWJhXHU4NWJiXHU4NWJjXHU4NWJkXHU4NWJlXHU4NWJmXHU4NWMwXHU4NWMyXHU4NWMzXHU4NWM0XHU4NWM1XHU4NWM2XHU4NWM3XHU4NWM4XHU4NWNhXHU4NWNiXHU4NWNjXHU4NWNkXHU4NWNlXHU4NWQx''@;'; put 'put ''XHU4NWQyXHVmZmZkXHU4NWQ0XHU4NWQ2XHU4NWQ3XHU4NWQ4XHU4NWQ5XHU4NWRhXHU4NWRiXHU4NWRkXHU4NWRlXHU4NWRmXHU4NWUwXHU4NWUxXHU4NWUyXHU4NWUzXHU4NWU1XHU4NWU2XHU4NWU3XHU4NWU4XHU4NWVhXHU4NWViXHU4NWVjXHU4NWVkXHU4NWVlXHU4NWVmXHU4NWYwXHU4''@;'; put 'put ''NWYxXHU4NWYyXHU4NWYzXHU4NWY0XHU4NWY1XHU4NWY2XHU4NWY3XHU4NWY4XHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcwXHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1M2NjXHU3MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3YTBlXHU1NDJlXHU3N2FjXHU5ODdhXHU4MjFj''@;'; put 'put ''XHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNjXHU5OTcyXHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAyXHU5ODgyXHU5MDAxXHU1YjhiXHU4YmJjXHU4''@;'; put 'put ''YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUxXHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4NDljXHU3Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3ZWU1XHU5YWQzXHU3ODhlXHU1YzgxXHU3YTU3''@;'; put 'put ''XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5XHU1ODU0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjAzXS5sZW5ndGg7Kyt2KTY1NTMzIT09''@;'; put 'put ''a1syMDNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwM11bdl1dPTUxOTY4K3YsVFs1MTk2OCt2XT1rWzIwM11bdl0pO2ZvcihrWzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODVmOVx1ODVmYVx1ODVmY1x1ODVmZFx1ODVm''@;'; put 'put ''ZVx1ODYwMFx1ODYwMVx1ODYwMlx1ODYwM1x1ODYwNFx1ODYwNlx1ODYwN1x1ODYwOFx1ODYwOVx1ODYwYVx1ODYwYlx1ODYwY1x1ODYwZFx1ODYwZVx1ODYwZlx1ODYxMFx1ODYxMlx1ODYxM1x1ODYxNFx1ODYxNVx1ODYxN1x1ODYxOFx1ODYxOVx1ODYxYVx1ODYxYlx1ODYxY1x1ODYxZFx1''@;'; put 'put ''ODYxZVx1ODYxZlx1ODYyMFx1ODYyMVx1ODYyMlx1ODYyM1x1ODYyNFx1ODYyNVx1ODYyNlx1ODYyOFx1ODYyYVx1ODYyYlx1ODYyY1x1ODYyZFx1ODYyZVx1ODYyZlx1ODYzMFx1ODYzMVx1ODYzMlx1ODYzM1x1ODYzNFx1ODYzNVx1ODYzNlx1ODYzN1x1ODYzOVx1ODYzYVx1ODYzYlx1ODYz''@;'; put 'put ''ZFx1ODYzZVx1ODYzZlx1ODY0MFx1ZmZmZFx1ODY0MVx1ODY0Mlx1ODY0M1x1ODY0NFx1ODY0NVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODY0OVx1ODY0YVx1ODY0Ylx1ODY0Y1x1ODY1Mlx1ODY1M1x1ODY1NVx1ODY1Nlx1ODY1N1x1ODY1OFx1ODY1OVx1ODY1Ylx1ODY1Y1x1ODY1ZFx1ODY1Zlx1''@;'; put 'put ''ODY2MFx1ODY2MVx1ODY2M1x1ODY2NFx1ODY2NVx1ODY2Nlx1ODY2N1x1ODY2OFx1ODY2OVx1ODY2YVx1NzM2ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1OGQyYVx1NzYyYlx1NmVl''@;'; put 'put ''OVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5Zlx1NzBlYlx1NjM4Zlx1''@;'; put 'put ''NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1NTY4Zlx1NjBkNVx1NmQ5''@;'; put 'put ''NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwNF0ubGVuZ3Ro''@;'; put 'put ''Oysrdik2NTUzMyE9PWtbMjA0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDRdW3ZdXT01MjIyNCt2LFRbNTIyMjQrdl09a1syMDRdW3ZdKTtmb3Ioa1syMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NmRcdTg2NmZcdTg2''@;'; put 'put ''NzBcdTg2NzJcdTg2NzNcdTg2NzRcdTg2NzVcdTg2NzZcdTg2NzdcdTg2NzhcdTg2ODNcdTg2ODRcdTg2ODVcdTg2ODZcdTg2ODdcdTg2ODhcdTg2ODlcdTg2OGVcdTg2OGZcdTg2OTBcdTg2OTFcdTg2OTJcdTg2OTRcdTg2OTZcdTg2OTdcdTg2OThcdTg2OTlcdTg2OWFcdTg2OWJcdTg2OWVc''@;'; put 'put ''dTg2OWZcdTg2YTBcdTg2YTFcdTg2YTJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmJcdTg2YmNcdTg2YmRcdTg2YmVcdTg2YmZcdTg2YzFcdTg2YzJcdTg2YzNcdTg2YzVcdTg2YzhcdTg2Y2NcdTg2Y2RcdTg2ZDJcdTg2''@;'; put 'put ''ZDNcdTg2ZDVcdTg2ZDZcdTg2ZDdcdTg2ZGFcdTg2ZGNcdWZmZmRcdTg2ZGRcdTg2ZTBcdTg2ZTFcdTg2ZTJcdTg2ZTNcdTg2ZTVcdTg2ZTZcdTg2ZTdcdTg2ZThcdTg2ZWFcdTg2ZWJcdTg2ZWNcdTg2ZWZcdTg2ZjVcdTg2ZjZcdTg2ZjdcdTg2ZmFcdTg2ZmJcdTg2ZmNcdTg2ZmRcdTg2ZmZc''@;'; put 'put ''dTg3MDFcdTg3MDRcdTg3MDVcdTg3MDZcdTg3MGJcdTg3MGNcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTFcdTg3MTRcdTg3MTZcdTZjNDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFcdTY4NTBcdTkxNmVcdTc3YjNcdTU0MGNcdTk0ZGNcdTVmNjRcdTdhZTVcdTY4''@;'; put 'put ''NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVcdTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZlNGRcdTU2ZTJcdTYzYThcdTk4OTNcdTgxN2ZcdTg3MTVcdTg5MmFcdTkwMDBc''@;'; put 'put ''dTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYyZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZcdTg4OWNcdTZiNmFcdTU5MTZcdThjNGNcdTVmMmZcdTZlN2VcdTczYTlcdTk4''@;'; put 'put ''N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVcdTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3MWJcdTVmZDhcdTU5ODRcdTVhMDFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9''@;'; put 'put ''a1syMDVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA1XVt2XV09NTI0ODArdixUWzUyNDgwK3ZdPWtbMjA1XVt2XSk7Zm9yKGtbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4''@;'; put 'put ''NzE5XHU4NzFiXHU4NzFkXHU4NzFmXHU4NzIwXHU4NzI0XHU4NzI2XHU4NzI3XHU4NzI4XHU4NzJhXHU4NzJiXHU4NzJjXHU4NzJkXHU4NzJmXHU4NzMwXHU4NzMyXHU4NzMzXHU4NzM1XHU4NzM2XHU4NzM4XHU4NzM5XHU4NzNhXHU4NzNjXHU4NzNkXHU4NzQwXHU4NzQxXHU4NzQyXHU4NzQz''@;'; put 'put ''XHU4NzQ0XHU4NzQ1XHU4NzQ2XHU4NzRhXHU4NzRiXHU4NzRkXHU4NzRmXHU4NzUwXHU4NzUxXHU4NzUyXHU4NzU0XHU4NzU1XHU4NzU2XHU4NzU4XHU4NzVhXHU4NzViXHU4NzVjXHU4NzVkXHU4NzVlXHU4NzVmXHU4NzYxXHU4NzYyXHU4NzY2XHU4NzY3XHU4NzY4XHU4NzY5XHU4NzZhXHU4''@;'; put 'put ''NzZiXHU4NzZjXHU4NzZkXHU4NzZmXHU4NzcxXHU4NzcyXHU4NzczXHU4Nzc1XHVmZmZkXHU4Nzc3XHU4Nzc4XHU4Nzc5XHU4NzdhXHU4NzdmXHU4NzgwXHU4NzgxXHU4Nzg0XHU4Nzg2XHU4Nzg3XHU4Nzg5XHU4NzhhXHU4NzhjXHU4NzhlXHU4NzhmXHU4NzkwXHU4NzkxXHU4NzkyXHU4Nzk0''@;'; put 'put ''XHU4Nzk1XHU4Nzk2XHU4Nzk4XHU4Nzk5XHU4NzlhXHU4NzliXHU4NzljXHU4NzlkXHU4NzllXHU4N2EwXHU4N2ExXHU4N2EyXHU4N2EzXHU4N2E0XHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4ZmRkXHU2ODQ1XHU1NmY0XHU1NTJmXHU2MGRmXHU0ZTNhXHU2ZjRkXHU3ZWY0XHU4MmM3XHU4''@;'; put 'put ''NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRmXHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZiXHU3NjFmXHU2ZTI5XHU4NjhhXHU2NTg3XHU5NWZiXHU3ZWI5XHU1NDNiXHU3YTMzXHU3ZDBh''@;'; put 'put ''XHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4YmVjXHU1YzRiXHU2NWUwXHU4MjljXHU2OGE3XHU1NDNlXHU1NDM0XHU2YmNiXHU2YjY2XHU0''@;'; put 'put ''ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmExXHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdmXHU3ODUyXHU3N2ZkXHU2NjcwXHU1NjNiXHU1NDM4XHU5NTIxXHU3MjdhXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksdj0wO3YhPWtbMjA2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwNl1bdl1dPTUyNzM2K3YsVFs1MjczNit2XT1rWzIwNl1bdl0pO2ZvcihrWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ODdhNVx1ODdhNlx1ODdhN1x1ODdhOVx1ODdhYVx1ODdhZVx1ODdiMFx1ODdiMVx1ODdiMlx1ODdiNFx1ODdiNlx1ODdiN1x1ODdiOFx1ODdiOVx1ODdiYlx1ODdiY1x1ODdiZVx1ODdiZlx1ODdjMVx1ODdjMlx1ODdjM1x1ODdjNFx1ODdjNVx1ODdjN1x1ODdjOFx1ODdj''@;'; put 'put ''OVx1ODdjY1x1ODdjZFx1ODdjZVx1ODdjZlx1ODdkMFx1ODdkNFx1ODdkNVx1ODdkNlx1ODdkN1x1ODdkOFx1ODdkOVx1ODdkYVx1ODdkY1x1ODdkZFx1ODdkZVx1ODdkZlx1ODdlMVx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlNlx1ODdlN1x1ODdlOFx1ODdlOVx1ODdlYlx1ODdlY1x1ODdlZFx1''@;'; put 'put ''ODdlZlx1ODdmMFx1ODdmMVx1ODdmMlx1ODdmM1x1ODdmNFx1ODdmNVx1ODdmNlx1ODdmN1x1ODdmOFx1ZmZmZFx1ODdmYVx1ODdmYlx1ODdmY1x1ODdmZFx1ODdmZlx1ODgwMFx1ODgwMVx1ODgwMlx1ODgwNFx1ODgwNVx1ODgwNlx1ODgwN1x1ODgwOFx1ODgwOVx1ODgwYlx1ODgwY1x1ODgw''@;'; put 'put ''ZFx1ODgwZVx1ODgwZlx1ODgxMFx1ODgxMVx1ODgxMlx1ODgxNFx1ODgxN1x1ODgxOFx1ODgxOVx1ODgxYVx1ODgxY1x1ODgxZFx1ODgxZVx1ODgxZlx1ODgyMFx1ODgyM1x1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBkY1x1NzE4NFx1NzBlZlx1NmVhYVx1NmM1MFx1''@;'; put 'put ''NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1NjIwZlx1N2VjNlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1NTNhNlx1NTkwZlx1NTQxM1x1NjM4MFx1OTUy''@;'; put 'put ''OFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYyNlx1NWFjY1x1NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1MFx1N2ViZlx1NzZmOFx1NTNhMlx1OTU3Nlx1''@;'; put 'put ''OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1OTg3OVx1NWRmN1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1OTUwMFx1NmQ4OFx1NWJiNVx1NmRjNlx1NjY1''@;'; put 'put ''M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDddW3ZdXT01Mjk5Mit2LFRbNTI5OTIrdl09a1syMDddW3ZdKTtmb3Ioa1syMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4MjRcdTg4MjVcdTg4MjZcdTg4MjdcdTg4MjhcdTg4MjlcdTg4MmFcdTg4MmJcdTg4MmNcdTg4MmRcdTg4MmVcdTg4MmZcdTg4MzBcdTg4MzFcdTg4MzNcdTg4MzRcdTg4MzVcdTg4MzZcdTg4MzdcdTg4MzhcdTg4M2FcdTg4M2JcdTg4M2RcdTg4''@;'; put 'put ''M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDZcdTg4NDdcdTg4NDhcdTg4NDlcdTg4NGFcdTg4NGJcdTg4NGVcdTg4NGZcdTg4NTBcdTg4NTFcdTg4NTJcdTg4NTNcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFcdTg4NWJcdTg4NWNcdTg4NWRcdTg4NWVcdTg4NWZcdTg4NjBcdTg4NjZc''@;'; put 'put ''dTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2FcdWZmZmRcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBcdTg4OTFcdTg4OTNcdTg4''@;'; put 'put ''OTRcdTg4OTVcdTg4OTdcdTg4OThcdTg4OTlcdTg4OWFcdTg4OWJcdTg4OWRcdTg4OWVcdTg4OWZcdTg4YTBcdTg4YTFcdTg4YTNcdTg4YTVcdTg4YTZcdTg4YTdcdTg4YThcdTg4YTlcdTg4YWFcdTVjMGZcdTViNWRcdTY4MjFcdTgwOTZcdTU1NzhcdTdiMTFcdTY1NDhcdTY5NTRcdTRlOWJc''@;'; put 'put ''dTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1MGNcdTZiMjNcdThmOWJcdTY1YjBcdTVmZmJcdTVmYzNcdTRm''@;'; put 'put ''ZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlcdTk2YzRcdTcxOGFcdTRmMTFcdTRmZWVcdTdmOWVcdTY3M2Rc''@;'; put 'put ''dTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVhN2ZcdTdlZWFcdTdlZWRcdThmNjlcdTU1YTdcdTViYTNcdTYw''@;'; put 'put ''YWNcdTY1Y2JcdTczODRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA4XVt2XV09NTMyNDgrdixUWzUzMjQ4K3ZdPWtbMjA4XVt2XSk7Zm9yKGtbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OGFjXHU4OGFlXHU4OGFmXHU4OGIwXHU4OGIyXHU4OGIzXHU4OGI0XHU4OGI1XHU4OGI2XHU4OGI4XHU4OGI5XHU4OGJhXHU4OGJiXHU4OGJkXHU4OGJlXHU4OGJmXHU4OGMwXHU4OGMzXHU4OGM0XHU4OGM3XHU4OGM4XHU4''@;'; put 'put ''OGNhXHU4OGNiXHU4OGNjXHU4OGNkXHU4OGNmXHU4OGQwXHU4OGQxXHU4OGQzXHU4OGQ2XHU4OGQ3XHU4OGRhXHU4OGRiXHU4OGRjXHU4OGRkXHU4OGRlXHU4OGUwXHU4OGUxXHU4OGU2XHU4OGU3XHU4OGU5XHU4OGVhXHU4OGViXHU4OGVjXHU4OGVkXHU4OGVlXHU4OGVmXHU4OGYyXHU4OGY1''@;'; put 'put ''XHU4OGY2XHU4OGY3XHU4OGZhXHU4OGZiXHU4OGZkXHU4OGZmXHU4OTAwXHU4OTAxXHU4OTAzXHU4OTA0XHU4OTA1XHU4OTA2XHU4OTA3XHU4OTA4XHVmZmZkXHU4OTA5XHU4OTBiXHU4OTBjXHU4OTBkXHU4OTBlXHU4OTBmXHU4OTExXHU4OTE0XHU4OTE1XHU4OTE2XHU4OTE3XHU4OTE4XHU4''@;'; put 'put ''OTFjXHU4OTFkXHU4OTFlXHU4OTFmXHU4OTIwXHU4OTIyXHU4OTIzXHU4OTI0XHU4OTI2XHU4OTI3XHU4OTI4XHU4OTI5XHU4OTJjXHU4OTJkXHU4OTJlXHU4OTJmXHU4OTMxXHU4OTMyXHU4OTMzXHU4OTM1XHU4OTM3XHU5MDA5XHU3NjYzXHU3NzI5XHU3ZWRhXHU5Nzc0XHU4NTliXHU1YjY2''@;'; put 'put ''XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZmXHU1ZGUxXHU2Yjg5XHU2YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJiXHU4MmJkXHU3MjU5XHU4NjljXHU1ZDE2XHU4''@;'; put 'put ''ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2ZGY5XHU3NmQwXHU0ZTI1XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2M2E5XHU3NzNjXHU4ODRkXHU2ZjE0XHU4Mjcz''@;'; put 'put ''XHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFhXHU5YThjXHU2YjgzXHU1OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3XHU0ZWYwXHU3NWQyXHU1MTdiXHU2ODM3XHU2''@;'; put 'put ''ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwOV1bdl1dPTUzNTA0K3YsVFs1MzUwNCt2XT1rWzIwOV1bdl0pO2ZvcihrWzIxMF09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODkzOFx1ODkzOVx1ODkzYVx1ODkzYlx1ODkzY1x1ODkzZFx1ODkzZVx1ODkzZlx1ODk0MFx1ODk0Mlx1ODk0M1x1ODk0NVx1ODk0Nlx1ODk0N1x1ODk0OFx1ODk0OVx1ODk0YVx1ODk0Ylx1ODk0Y1x1''@;'; put 'put ''ODk0ZFx1ODk0ZVx1ODk0Zlx1ODk1MFx1ODk1MVx1ODk1Mlx1ODk1M1x1ODk1NFx1ODk1NVx1ODk1Nlx1ODk1N1x1ODk1OFx1ODk1OVx1ODk1YVx1ODk1Ylx1ODk1Y1x1ODk1ZFx1ODk2MFx1ODk2MVx1ODk2Mlx1ODk2M1x1ODk2NFx1ODk2NVx1ODk2N1x1ODk2OFx1ODk2OVx1ODk2YVx1ODk2''@;'; put 'put ''Ylx1ODk2Y1x1ODk2ZFx1ODk2ZVx1ODk2Zlx1ODk3MFx1ODk3MVx1ODk3Mlx1ODk3M1x1ODk3NFx1ODk3NVx1ODk3Nlx1ODk3N1x1ODk3OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ZmZmZFx1ODk3ZFx1ODk3ZVx1ODk4MFx1ODk4Mlx1ODk4NFx1ODk4NVx1ODk4N1x1ODk4OFx1ODk4OVx1ODk4YVx1''@;'; put 'put ''ODk4Ylx1ODk4Y1x1ODk4ZFx1ODk4ZVx1ODk4Zlx1ODk5MFx1ODk5MVx1ODk5Mlx1ODk5M1x1ODk5NFx1ODk5NVx1ODk5Nlx1ODk5N1x1ODk5OFx1ODk5OVx1ODk5YVx1ODk5Ylx1ODk5Y1x1ODk5ZFx1ODk5ZVx1ODk5Zlx1ODlhMFx1ODlhMVx1NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMy''@;'; put 'put ''M1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1''@;'; put 'put ''NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFj''@;'; put 'put ''Nlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1''@;'; put 'put ''OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5MFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjEwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTBdW3ZdXT01Mzc2MCt2LFRbNTM3NjArdl09a1syMTBdW3ZdKTtmb3Io''@;'; put 'put ''a1syMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5YTJcdTg5YTNcdTg5YTRcdTg5YTVcdTg5YTZcdTg5YTdcdTg5YThcdTg5YTlcdTg5YWFcdTg5YWJcdTg5YWNcdTg5YWRcdTg5YWVcdTg5YWZcdTg5YjBcdTg5YjFcdTg5YjJc''@;'; put 'put ''dTg5YjNcdTg5YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YjhcdTg5YjlcdTg5YmFcdTg5YmJcdTg5YmNcdTg5YmRcdTg5YmVcdTg5YmZcdTg5YzBcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVcdTg5ZDdcdTg5ZDhcdTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZcdTg5ZTBcdTg5ZTFcdTg5''@;'; put 'put ''ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjRcdTg5ZjVcdTg5ZjZcdTg5ZjdcdTg5ZjhcdTg5ZjlcdTg5ZmFcdWZmZmRcdTg5ZmJcdTg5ZmNcdTg5ZmRcdTg5ZmVcdTg5ZmZcdThhMDFcdThhMDJcdThhMDNc''@;'; put 'put ''dThhMDRcdThhMDVcdThhMDZcdThhMDhcdThhMDlcdThhMGFcdThhMGJcdThhMGNcdThhMGRcdThhMGVcdThhMGZcdThhMTBcdThhMTFcdThhMTJcdThhMTNcdThhMTRcdThhMTVcdThhMTZcdThhMTdcdThhMThcdThhMTlcdThhMWFcdThhMWJcdThhMWNcdThhMWRcdTUzNzBcdTgyZjFcdTZh''@;'; put 'put ''MzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2Y2RcdThlMGFcdTg2ZjlcdTU0OGZcdTZjZjNc''@;'; put 'put ''dTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFcdTUzYzhcdTVlN2NcdThmYzJcdTZkZTRcdTRl''@;'; put 'put ''OGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTczODlcdTU3ZGZcdTgyOGJcdTkwYzFcdTU0MDFc''@;'; put 'put ''dTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODlcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjExXVt2XV09NTQwMTYrdixUWzU0MDE2K3ZdPWtb''@;'; put 'put ''MjExXVt2XSk7Zm9yKGtbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YTFlXHU4YTFmXHU4YTIwXHU4YTIxXHU4YTIyXHU4YTIzXHU4YTI0XHU4YTI1XHU4YTI2XHU4YTI3XHU4YTI4XHU4YTI5XHU4YTJhXHU4YTJiXHU4YTJj''@;'; put 'put ''XHU4YTJkXHU4YTJlXHU4YTJmXHU4YTMwXHU4YTMxXHU4YTMyXHU4YTMzXHU4YTM0XHU4YTM1XHU4YTM2XHU4YTM3XHU4YTM4XHU4YTM5XHU4YTNhXHU4YTNiXHU4YTNjXHU4YTNkXHU4YTNmXHU4YTQwXHU4YTQxXHU4YTQyXHU4YTQzXHU4YTQ0XHU4YTQ1XHU4YTQ2XHU4YTQ3XHU4YTQ5XHU4''@;'; put 'put ''YTRhXHU4YTRiXHU4YTRjXHU4YTRkXHU4YTRlXHU4YTRmXHU4YTUwXHU4YTUxXHU4YTUyXHU4YTUzXHU4YTU0XHU4YTU1XHU4YTU2XHU4YTU3XHU4YTU4XHU4YTU5XHU4YTVhXHU4YTViXHU4YTVjXHU4YTVkXHU4YTVlXHVmZmZkXHU4YTVmXHU4YTYwXHU4YTYxXHU4YTYyXHU4YTYzXHU4YTY0''@;'; put 'put ''XHU4YTY1XHU4YTY2XHU4YTY3XHU4YTY4XHU4YTY5XHU4YTZhXHU4YTZiXHU4YTZjXHU4YTZkXHU4YTZlXHU4YTZmXHU4YTcwXHU4YTcxXHU4YTcyXHU4YTczXHU4YTc0XHU4YTc1XHU4YTc2XHU4YTc3XHU4YTc4XHU4YTdhXHU4YTdiXHU4YTdjXHU4YTdkXHU4YTdlXHU4YTdmXHU4YTgwXHU2''@;'; put 'put ''ZDc0XHU1YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1MzlmXHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4MmQxXHU2MTNmXHU2MDI4XHU5NjYyXHU2NmYwXHU3ZWE2''@;'; put 'put ''XHU4ZDhhXHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4XHU2NzQyXHU2ODNkXHU1NGM5XHU3MDdlXHU1YmIwXHU4''@;'; put 'put ''ZjdkXHU1MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZmXHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3MDc2XHU3MWU1XHU4ZDIzXHU2MmU5XHU1MjE5XHU2Y2Zk''@;'; put 'put ''XHU4ZDNjXHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjEyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxMl1bdl1dPTU0MjcyK3Ys''@;'; put 'put ''VFs1NDI3Mit2XT1rWzIxMl1bdl0pO2ZvcihrWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGE4MVx1OGE4Mlx1OGE4M1x1OGE4NFx1OGE4NVx1OGE4Nlx1OGE4N1x1OGE4OFx1OGE4Ylx1OGE4Y1x1OGE4ZFx1OGE4ZVx1OGE4''@;'; put 'put ''Zlx1OGE5MFx1OGE5MVx1OGE5Mlx1OGE5NFx1OGE5NVx1OGE5Nlx1OGE5N1x1OGE5OFx1OGE5OVx1OGE5YVx1OGE5Ylx1OGE5Y1x1OGE5ZFx1OGE5ZVx1OGE5Zlx1OGFhMFx1OGFhMVx1OGFhMlx1OGFhM1x1OGFhNFx1OGFhNVx1OGFhNlx1OGFhN1x1OGFhOFx1OGFhOVx1OGFhYVx1OGFhYlx1''@;'; put 'put ''OGFhY1x1OGFhZFx1OGFhZVx1OGFhZlx1OGFiMFx1OGFiMVx1OGFiMlx1OGFiM1x1OGFiNFx1OGFiNVx1OGFiNlx1OGFiN1x1OGFiOFx1OGFiOVx1OGFiYVx1OGFiYlx1OGFiY1x1OGFiZFx1OGFiZVx1OGFiZlx1OGFjMFx1OGFjMVx1OGFjMlx1ZmZmZFx1OGFjM1x1OGFjNFx1OGFjNVx1OGFj''@;'; put 'put ''Nlx1OGFjN1x1OGFjOFx1OGFjOVx1OGFjYVx1OGFjYlx1OGFjY1x1OGFjZFx1OGFjZVx1OGFjZlx1OGFkMFx1OGFkMVx1OGFkMlx1OGFkM1x1OGFkNFx1OGFkNVx1OGFkNlx1OGFkN1x1OGFkOFx1OGFkOVx1OGFkYVx1OGFkYlx1OGFkY1x1OGFkZFx1OGFkZVx1OGFkZlx1OGFlMFx1OGFlMVx1''@;'; put 'put ''OGFlMlx1OGFlM1x1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1NWQyZFx1NWM1NVx1ODYz''@;'; put 'put ''OFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNiY1x1OGQ3NVx1NzE2N1x1''@;'; put 'put ''N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1OGJjYVx1OTcwN1x1NjMy''@;'; put 'put ''Zlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1NjUzZlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjEzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTNd''@;'; put 'put ''W3ZdXT01NDUyOCt2LFRbNTQ1Mjgrdl09a1syMTNdW3ZdKTtmb3Ioa1syMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTRcdThhZTVcdThhZTZcdThhZTdcdThhZThcdThhZTlcdThhZWFcdThhZWJcdThhZWNcdThhZWRcdThh''@;'; put 'put ''ZWVcdThhZWZcdThhZjBcdThhZjFcdThhZjJcdThhZjNcdThhZjRcdThhZjVcdThhZjZcdThhZjdcdThhZjhcdThhZjlcdThhZmFcdThhZmJcdThhZmNcdThhZmRcdThhZmVcdThhZmZcdThiMDBcdThiMDFcdThiMDJcdThiMDNcdThiMDRcdThiMDVcdThiMDZcdThiMDhcdThiMDlcdThiMGFc''@;'; put 'put ''dThiMGJcdThiMGNcdThiMGRcdThiMGVcdThiMGZcdThiMTBcdThiMTFcdThiMTJcdThiMTNcdThiMTRcdThiMTVcdThiMTZcdThiMTdcdThiMThcdThiMTlcdThiMWFcdThiMWJcdThiMWNcdThiMWRcdThiMWVcdThiMWZcdThiMjBcdThiMjFcdThiMjJcdThiMjNcdWZmZmRcdThiMjRcdThi''@;'; put 'put ''MjVcdThiMjdcdThiMjhcdThiMjlcdThiMmFcdThiMmJcdThiMmNcdThiMmRcdThiMmVcdThiMmZcdThiMzBcdThiMzFcdThiMzJcdThiMzNcdThiMzRcdThiMzVcdThiMzZcdThiMzdcdThiMzhcdThiMzlcdThiM2FcdThiM2JcdThiM2NcdThiM2RcdThiM2VcdThiM2ZcdThiNDBcdThiNDFc''@;'; put 'put ''dThiNDJcdThiNDNcdThiNDRcdThiNDVcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3MThcdTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5MGRcdTZiOTZcdTYyNjdcdTUwM2NcdTRmODRcdTU3NDBcdTYz''@;'; put 'put ''MDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNcdTVjZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVcdTZjYmJcdTdhOTJcdTRlMmRcdTc2YzVcdTVmZTBcdTk0OWZc''@;'; put 'put ''dTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdjYTVcdThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTczZTBcdTY4MmFcdTg2ZGJcdTY3MzFcdTczMmFcdThiZjhcdThi''@;'; put 'put ''ZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBcdThkMmVcdTk0ZjhcdTdiNTFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxNF1bdl0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKHNlW2tbMjE0XVt2XV09NTQ3ODQrdixUWzU0Nzg0K3ZdPWtbMjE0XVt2XSk7Zm9yKGtbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjQ2XHU4YjQ3XHU4YjQ4XHU4YjQ5XHU4YjRhXHU4YjRiXHU4YjRjXHU4YjRkXHU4''@;'; put 'put ''YjRlXHU4YjRmXHU4YjUwXHU4YjUxXHU4YjUyXHU4YjUzXHU4YjU0XHU4YjU1XHU4YjU2XHU4YjU3XHU4YjU4XHU4YjU5XHU4YjVhXHU4YjViXHU4YjVjXHU4YjVkXHU4YjVlXHU4YjVmXHU4YjYwXHU4YjYxXHU4YjYyXHU4YjYzXHU4YjY0XHU4YjY1XHU4YjY3XHU4YjY4XHU4YjY5XHU4YjZh''@;'; put 'put ''XHU4YjZiXHU4YjZkXHU4YjZlXHU4YjZmXHU4YjcwXHU4YjcxXHU4YjcyXHU4YjczXHU4Yjc0XHU4Yjc1XHU4Yjc2XHU4Yjc3XHU4Yjc4XHU4Yjc5XHU4YjdhXHU4YjdiXHU4YjdjXHU4YjdkXHU4YjdlXHU4YjdmXHU4YjgwXHU4YjgxXHU4YjgyXHU4YjgzXHU4Yjg0XHU4Yjg1XHU4Yjg2XHVm''@;'; put 'put ''ZmZkXHU4Yjg3XHU4Yjg4XHU4Yjg5XHU4YjhhXHU4YjhiXHU4YjhjXHU4YjhkXHU4YjhlXHU4YjhmXHU4YjkwXHU4YjkxXHU4YjkyXHU4YjkzXHU4Yjk0XHU4Yjk1XHU4Yjk2XHU4Yjk3XHU4Yjk4XHU4Yjk5XHU4YjlhXHU4YjliXHU4YjljXHU4YjlkXHU4YjllXHU4YjlmXHU4YmFjXHU4YmIx''@;'; put 'put ''XHU4YmJiXHU4YmM3XHU4YmQwXHU4YmVhXHU4YzA5XHU4YzFlXHU0ZjRmXHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2MmZkXHU0ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2XHU2NDllXHU1OGVlXHU3MmI2XHU2OTBlXHU5''@;'; put 'put ''NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAxXHU5MTRjXHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2ZGM0XHU1YjVjXHU3ZDJiXHU0ZWQ0XHU3Yzdk''@;'; put 'put ''XHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5MGI5XHU4ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNiXHU3ZWM0XHU5NGJiXHU3ZTgyXHU1NjM0XHU5''@;'; put 'put ''MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTVdW3Zd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxNV1bdl1dPTU1MDQwK3YsVFs1NTA0MCt2XT1rWzIxNV1bdl0pO2ZvcihrWzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGMzOFx1OGMzOVx1OGMzYVx1OGMzYlx1OGMzY1x1OGMzZFx1''@;'; put 'put ''OGMzZVx1OGMzZlx1OGM0MFx1OGM0Mlx1OGM0M1x1OGM0NFx1OGM0NVx1OGM0OFx1OGM0YVx1OGM0Ylx1OGM0ZFx1OGM0ZVx1OGM0Zlx1OGM1MFx1OGM1MVx1OGM1Mlx1OGM1M1x1OGM1NFx1OGM1Nlx1OGM1N1x1OGM1OFx1OGM1OVx1OGM1Ylx1OGM1Y1x1OGM1ZFx1OGM1ZVx1OGM1Zlx1OGM2''@;'; put 'put ''MFx1OGM2M1x1OGM2NFx1OGM2NVx1OGM2Nlx1OGM2N1x1OGM2OFx1OGM2OVx1OGM2Y1x1OGM2ZFx1OGM2ZVx1OGM2Zlx1OGM3MFx1OGM3MVx1OGM3Mlx1OGM3NFx1OGM3NVx1OGM3Nlx1OGM3N1x1OGM3Ylx1OGM3Y1x1OGM3ZFx1OGM3ZVx1OGM3Zlx1OGM4MFx1OGM4MVx1OGM4M1x1OGM4NFx1''@;'; put 'put ''OGM4Nlx1OGM4N1x1ZmZmZFx1OGM4OFx1OGM4Ylx1OGM4ZFx1OGM4ZVx1OGM4Zlx1OGM5MFx1OGM5MVx1OGM5Mlx1OGM5M1x1OGM5NVx1OGM5Nlx1OGM5N1x1OGM5OVx1OGM5YVx1OGM5Ylx1OGM5Y1x1OGM5ZFx1OGM5ZVx1OGM5Zlx1OGNhMFx1OGNhMVx1OGNhMlx1OGNhM1x1OGNhNFx1OGNh''@;'; put 'put ''NVx1OGNhNlx1OGNhN1x1OGNhOFx1OGNhOVx1OGNhYVx1OGNhYlx1OGNhY1x1OGNhZFx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUxMFx1NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1''@;'; put 'put ''NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1NGU2OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNm''@;'; put 'put ''NVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIzZlx1NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1''@;'; put 'put ''NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1NGYyN1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxNl0ubGVuZ3RoOysrdik2NTUz''@;'; put 'put ''MyE9PWtbMjE2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTZdW3ZdXT01NTI5Nit2LFRbNTUyOTYrdl09a1syMTZdW3ZdKTtmb3Ioa1syMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjYWVcdThjYWZcdThjYjBcdThjYjFc''@;'; put 'put ''dThjYjJcdThjYjNcdThjYjRcdThjYjVcdThjYjZcdThjYjdcdThjYjhcdThjYjlcdThjYmFcdThjYmJcdThjYmNcdThjYmRcdThjYmVcdThjYmZcdThjYzBcdThjYzFcdThjYzJcdThjYzNcdThjYzRcdThjYzVcdThjYzZcdThjYzdcdThjYzhcdThjYzlcdThjY2FcdThjY2JcdThjY2NcdThj''@;'; put 'put ''Y2RcdThjY2VcdThjY2ZcdThjZDBcdThjZDFcdThjZDJcdThjZDNcdThjZDRcdThjZDVcdThjZDZcdThjZDdcdThjZDhcdThjZDlcdThjZGFcdThjZGJcdThjZGNcdThjZGRcdThjZGVcdThjZGZcdThjZTBcdThjZTFcdThjZTJcdThjZTNcdThjZTRcdThjZTVcdThjZTZcdThjZTdcdThjZThc''@;'; put 'put ''dThjZTlcdThjZWFcdThjZWJcdThjZWNcdWZmZmRcdThjZWRcdThjZWVcdThjZWZcdThjZjBcdThjZjFcdThjZjJcdThjZjNcdThjZjRcdThjZjVcdThjZjZcdThjZjdcdThjZjhcdThjZjlcdThjZmFcdThjZmJcdThjZmNcdThjZmRcdThjZmVcdThjZmZcdThkMDBcdThkMDFcdThkMDJcdThk''@;'; put 'put ''MDNcdThkMDRcdThkMDVcdThkMDZcdThkMDdcdThkMDhcdThkMDlcdThkMGFcdThkMGJcdThkMGNcdThkMGRcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRmYWFcdTRmN2NcdTRmYWNcdTRmOTRcdTRmZTZc''@;'; put 'put ''dTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNcdTUwNTVcdTUwNDhcdTUwNGVcdTUwNmNcdTUw''@;'; put 'put ''N2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTllYzlcdTk5OThcdTUxODFcdTU5MTRcdTUyZjlc''@;'; put 'put ''dTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTddLmxl''@;'; put 'put ''bmd0aDsrK3YpNjU1MzMhPT1rWzIxN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE3XVt2XV09NTU1NTIrdixUWzU1NTUyK3ZdPWtbMjE3XVt2XSk7Zm9yKGtbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZDBlXHU4ZDBm''@;'; put 'put ''XHU4ZDEwXHU4ZDExXHU4ZDEyXHU4ZDEzXHU4ZDE0XHU4ZDE1XHU4ZDE2XHU4ZDE3XHU4ZDE4XHU4ZDE5XHU4ZDFhXHU4ZDFiXHU4ZDFjXHU4ZDIwXHU4ZDUxXHU4ZDUyXHU4ZDU3XHU4ZDVmXHU4ZDY1XHU4ZDY4XHU4ZDY5XHU4ZDZhXHU4ZDZjXHU4ZDZlXHU4ZDZmXHU4ZDcxXHU4ZDcyXHU4''@;'; put 'put ''ZDc4XHU4ZDc5XHU4ZDdhXHU4ZDdiXHU4ZDdjXHU4ZDdkXHU4ZDdlXHU4ZDdmXHU4ZDgwXHU4ZDgyXHU4ZDgzXHU4ZDg2XHU4ZDg3XHU4ZDg4XHU4ZDg5XHU4ZDhjXHU4ZDhkXHU4ZDhlXHU4ZDhmXHU4ZDkwXHU4ZDkyXHU4ZDkzXHU4ZDk1XHU4ZDk2XHU4ZDk3XHU4ZDk4XHU4ZDk5XHU4ZDlh''@;'; put 'put ''XHU4ZDliXHU4ZDljXHU4ZDlkXHU4ZDllXHU4ZGEwXHU4ZGExXHVmZmZkXHU4ZGEyXHU4ZGE0XHU4ZGE1XHU4ZGE2XHU4ZGE3XHU4ZGE4XHU4ZGE5XHU4ZGFhXHU4ZGFiXHU4ZGFjXHU4ZGFkXHU4ZGFlXHU4ZGFmXHU4ZGIwXHU4ZGIyXHU4ZGI2XHU4ZGI3XHU4ZGI5XHU4ZGJiXHU4ZGJkXHU4''@;'; put 'put ''ZGMwXHU4ZGMxXHU4ZGMyXHU4ZGM1XHU4ZGM3XHU4ZGM4XHU4ZGM5XHU4ZGNhXHU4ZGNkXHU4ZGQwXHU4ZGQyXHU4ZGQzXHU4ZGQ0XHU1MWM3XHU1MTk2XHU1MWEyXHU1MWE1XHU4YmEwXHU4YmE2XHU4YmE3XHU4YmFhXHU4YmI0XHU4YmI1XHU4YmI3XHU4YmMyXHU4YmMzXHU4YmNiXHU4YmNm''@;'; put 'put ''XHU4YmNlXHU4YmQyXHU4YmQzXHU4YmQ0XHU4YmQ2XHU4YmQ4XHU4YmQ5XHU4YmRjXHU4YmRmXHU4YmUwXHU4YmU0XHU4YmU4XHU4YmU5XHU4YmVlXHU4YmYwXHU4YmYzXHU4YmY2XHU4YmY5XHU4YmZjXHU4YmZmXHU4YzAwXHU4YzAyXHU4YzA0XHU4YzA3XHU4YzBjXHU4YzBmXHU4YzExXHU4''@;'; put 'put ''YzEyXHU4YzE0XHU4YzE1XHU4YzE2XHU4YzE5XHU4YzFiXHU4YzE4XHU4YzFkXHU4YzFmXHU4YzIwXHU4YzIxXHU4YzI1XHU4YzI3XHU4YzJhXHU4YzJiXHU4YzJlXHU4YzJmXHU4YzMyXHU4YzMzXHU4YzM1XHU4YzM2XHU1MzY5XHU1MzdhXHU5NjFkXHU5NjIyXHU5NjIxXHU5NjMxXHU5NjJh''@;'; put 'put ''XHU5NjNkXHU5NjNjXHU5NjQyXHU5NjQ5XHU5NjU0XHU5NjVmXHU5NjY3XHU5NjZjXHU5NjcyXHU5Njc0XHU5Njg4XHU5NjhkXHU5Njk3XHU5NmIwXHU5MDk3XHU5MDliXHU5MDlkXHU5MDk5XHU5MGFjXHU5MGExXHU5MGI0XHU5MGIzXHU5MGI2XHU5MGJhXHVmZmZkIi5zcGxpdCgiIiksdj0w''@;'; put 'put ''O3YhPWtbMjE4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMThdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxOF1bdl1dPTU1ODA4K3YsVFs1NTgwOCt2XT1rWzIxOF1bdl0pO2ZvcihrWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1OGRkNVx1OGRkOFx1OGRkOVx1OGRkY1x1OGRlMFx1OGRlMVx1OGRlMlx1OGRlNVx1OGRlNlx1OGRlN1x1OGRlOVx1OGRlZFx1OGRlZVx1OGRmMFx1OGRmMVx1OGRmMlx1OGRmNFx1OGRmNlx1OGRmY1x1OGRmZVx1OGRmZlx1OGUwMFx1OGUwMVx1OGUwMlx1OGUwM1x1OGUwNFx1OGUwNlx1''@;'; put 'put ''OGUwN1x1OGUwOFx1OGUwYlx1OGUwZFx1OGUwZVx1OGUxMFx1OGUxMVx1OGUxMlx1OGUxM1x1OGUxNVx1OGUxNlx1OGUxN1x1OGUxOFx1OGUxOVx1OGUxYVx1OGUxYlx1OGUxY1x1OGUyMFx1OGUyMVx1OGUyNFx1OGUyNVx1OGUyNlx1OGUyN1x1OGUyOFx1OGUyYlx1OGUyZFx1OGUzMFx1OGUz''@;'; put 'put ''Mlx1OGUzM1x1OGUzNFx1OGUzNlx1OGUzN1x1OGUzOFx1OGUzYlx1OGUzY1x1OGUzZVx1ZmZmZFx1OGUzZlx1OGU0M1x1OGU0NVx1OGU0Nlx1OGU0Y1x1OGU0ZFx1OGU0ZVx1OGU0Zlx1OGU1MFx1OGU1M1x1OGU1NFx1OGU1NVx1OGU1Nlx1OGU1N1x1OGU1OFx1OGU1YVx1OGU1Ylx1OGU1Y1x1''@;'; put 'put ''OGU1ZFx1OGU1ZVx1OGU1Zlx1OGU2MFx1OGU2MVx1OGU2Mlx1OGU2M1x1OGU2NFx1OGU2NVx1OGU2N1x1OGU2OFx1OGU2YVx1OGU2Ylx1OGU2ZVx1OGU3MVx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1OTBkM1x1OTBlNlx1OTBlMlx1OTBkY1x1OTBk''@;'; put 'put ''N1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1OTE0Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJmMFx1NTNkZlx1NzFlZVx1NzdjZFx1NWVmNFx1''@;'; put 'put ''NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThjNVx1NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1NTc0Mlx1NTc2OVx1NTc4NVx1NTc2Ylx1NTc4''@;'; put 'put ''Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1NTdiNFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdlZlx1NTdmOFx1NTdlNFx1NTdkZFx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLHY9MDt2IT1rWzIxOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTldW3ZdXT01NjA2NCt2LFRbNTYwNjQrdl09a1syMTldW3ZdKTtmb3Ioa1syMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdThlNzNcdThlNzVcdThlNzdcdThlNzhcdThlNzlcdThlN2FcdThlN2JcdThlN2RcdThlN2VcdThlODBcdThlODJcdThlODNcdThlODRcdThlODZcdThlODhcdThlODlcdThlOGFcdThlOGJcdThlOGNcdThlOGRcdThlOGVcdThlOTFcdThlOTJcdThlOTNcdThlOTVc''@;'; put 'put ''dThlOTZcdThlOTdcdThlOThcdThlOTlcdThlOWFcdThlOWJcdThlOWRcdThlOWZcdThlYTBcdThlYTFcdThlYTJcdThlYTNcdThlYTRcdThlYTVcdThlYTZcdThlYTdcdThlYThcdThlYTlcdThlYWFcdThlYWRcdThlYWVcdThlYjBcdThlYjFcdThlYjNcdThlYjRcdThlYjVcdThlYjZcdThl''@;'; put 'put ''YjdcdThlYjhcdThlYjlcdThlYmJcdThlYmNcdThlYmRcdThlYmVcdThlYmZcdThlYzBcdThlYzFcdThlYzJcdWZmZmRcdThlYzNcdThlYzRcdThlYzVcdThlYzZcdThlYzdcdThlYzhcdThlYzlcdThlY2FcdThlY2JcdThlY2NcdThlY2RcdThlY2ZcdThlZDBcdThlZDFcdThlZDJcdThlZDNc''@;'; put 'put ''dThlZDRcdThlZDVcdThlZDZcdThlZDdcdThlZDhcdThlZDlcdThlZGFcdThlZGJcdThlZGNcdThlZGRcdThlZGVcdThlZGZcdThlZTBcdThlZTFcdThlZTJcdThlZTNcdThlZTRcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4MWVcdTU4MTlcdTU4NDRcdTU4MjBcdTU4NjVcdTU4''@;'; put 'put ''NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlmMTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFcdTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBcdTgyYzhcdTgyY2FcdTgyZTNcdTgyOThcdTgyYjdc''@;'; put 'put ''dTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRcdTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgyZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgzMGNcdTgyZmJcdTgyZDNcdTgzMTFcdTgzMWFcdTgz''@;'; put 'put ''MDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgzNTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRcdTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdcdTgzNjBcdTgzMmRcdTgzM2FcdTgzMzNcdTgzNjZc''@;'; put 'put ''dTgzNjVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyMF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjIwXVt2XV09NTYzMjArdixUWzU2MzIwK3ZdPWtbMjIwXVt2XSk7Zm9yKGtbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZWU1XHU4ZWU2XHU4ZWU3XHU4ZWU4XHU4ZWU5XHU4ZWVhXHU4ZWViXHU4ZWVjXHU4ZWVkXHU4ZWVlXHU4ZWVmXHU4ZWYwXHU4ZWYxXHU4ZWYyXHU4ZWYzXHU4ZWY0XHU4ZWY1XHU4ZWY2XHU4ZWY3XHU4ZWY4XHU4ZWY5XHU4ZWZhXHU4ZWZi''@;'; put 'put ''XHU4ZWZjXHU4ZWZkXHU4ZWZlXHU4ZWZmXHU4ZjAwXHU4ZjAxXHU4ZjAyXHU4ZjAzXHU4ZjA0XHU4ZjA1XHU4ZjA2XHU4ZjA3XHU4ZjA4XHU4ZjA5XHU4ZjBhXHU4ZjBiXHU4ZjBjXHU4ZjBkXHU4ZjBlXHU4ZjBmXHU4ZjEwXHU4ZjExXHU4ZjEyXHU4ZjEzXHU4ZjE0XHU4ZjE1XHU4ZjE2XHU4''@;'; put 'put ''ZjE3XHU4ZjE4XHU4ZjE5XHU4ZjFhXHU4ZjFiXHU4ZjFjXHU4ZjFkXHU4ZjFlXHU4ZjFmXHU4ZjIwXHU4ZjIxXHU4ZjIyXHU4ZjIzXHVmZmZkXHU4ZjI0XHU4ZjI1XHU4ZjI2XHU4ZjI3XHU4ZjI4XHU4ZjI5XHU4ZjJhXHU4ZjJiXHU4ZjJjXHU4ZjJkXHU4ZjJlXHU4ZjJmXHU4ZjMwXHU4ZjMx''@;'; put 'put ''XHU4ZjMyXHU4ZjMzXHU4ZjM0XHU4ZjM1XHU4ZjM2XHU4ZjM3XHU4ZjM4XHU4ZjM5XHU4ZjNhXHU4ZjNiXHU4ZjNjXHU4ZjNkXHU4ZjNlXHU4ZjNmXHU4ZjQwXHU4ZjQxXHU4ZjQyXHU4ZjQzXHU4ZjQ0XHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZjXHU4MzZhXHU4MzZkXHU4MzZlXHU4M2IwXHU4''@;'; put 'put ''Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4MzdjXHU4M2I2XHU4M2E5XHU4MzdkXHU4M2I4XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1ODA3XHU4NDE4XHU4NDBiXHU4M2RkXHU4M2Zk''@;'; put 'put ''XHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBmXHU4NDAzXHU4M2Y4XHU4M2Y5XHU4M2VhXHU4M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3XHU4NDg4XHU4NDdhXHU4NDg5XHU4NDc4XHU4''@;'; put 'put ''NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4NGMxXHU4NGNkXHU4NGQwXHU4NGU2XHU4NGJkXHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4NGUzXHU4NTBjXHU3NTBkXHU4NTM4XHU4NGYw''@;'; put 'put ''XHU4NTM5XHU4NTFmXHU4NTNhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyMV1bdl1dPTU2NTc2K3YsVFs1NjU3Nit2XT1rWzIyMV1bdl0pO2ZvcihrWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY0NVx1OGY0Nlx1OGY0N1x1OGY0OFx1OGY0OVx1OGY0YVx1OGY0Ylx1OGY0Y1x1OGY0ZFx1OGY0ZVx1OGY0Zlx1OGY1MFx1OGY1MVx1OGY1Mlx1OGY1M1x1OGY1NFx1OGY1NVx1OGY1Nlx1OGY1N1x1OGY1OFx1OGY1''@;'; put 'put ''OVx1OGY1YVx1OGY1Ylx1OGY1Y1x1OGY1ZFx1OGY1ZVx1OGY1Zlx1OGY2MFx1OGY2MVx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY2NVx1OGY2YVx1OGY4MFx1OGY4Y1x1OGY5Mlx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhMlx1OGZhNFx1OGZhNVx1OGZhNlx1OGZhN1x1OGZhYVx1OGZhY1x1OGZhZFx1''@;'; put 'put ''OGZhZVx1OGZhZlx1OGZiMlx1OGZiM1x1OGZiNFx1OGZiNVx1OGZiN1x1OGZiOFx1OGZiYVx1OGZiYlx1OGZiY1x1OGZiZlx1OGZjMFx1OGZjM1x1OGZjNlx1ZmZmZFx1OGZjOVx1OGZjYVx1OGZjYlx1OGZjY1x1OGZjZFx1OGZjZlx1OGZkMlx1OGZkNlx1OGZkN1x1OGZkYVx1OGZlMFx1OGZl''@;'; put 'put ''MVx1OGZlM1x1OGZlN1x1OGZlY1x1OGZlZlx1OGZmMVx1OGZmMlx1OGZmNFx1OGZmNVx1OGZmNlx1OGZmYVx1OGZmYlx1OGZmY1x1OGZmZVx1OGZmZlx1OTAwN1x1OTAwOFx1OTAwY1x1OTAwZVx1OTAxM1x1OTAxNVx1OTAxOFx1ODU1Nlx1ODUzYlx1ODRmZlx1ODRmY1x1ODU1OVx1ODU0OFx1''@;'; put 'put ''ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3OVx1ODVhZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1ODYyN1x1ODYwNVx1ODYyOVx1ODYxNlx1ODYz''@;'; put 'put ''Y1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1NWMzNFx1NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJmNlx1NjMzOVx1NjM0Ylx1NjM0M1x1NjNhZFx1''@;'; put 'put ''NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNmOFx1NjNlMFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1NjQwYlx1NjQxYlx1NjQyMFx1NjQwY1x1NjQy''@;'; put 'put ''Nlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5Nlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyMl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjIyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjJdW3ZdXT01NjgzMit2LFRbNTY4MzIrdl09a1syMjJdW3ZdKTtmb3Ioa1syMjNdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwMTlcdTkwMWNcdTkwMjNcdTkwMjRcdTkwMjVcdTkwMjdcdTkwMjhcdTkwMjlcdTkwMmFcdTkwMmJcdTkwMmNcdTkwMzBcdTkwMzFcdTkwMzJcdTkwMzNcdTkwMzRcdTkwMzdcdTkwMzlcdTkw''@;'; put 'put ''M2FcdTkwM2RcdTkwM2ZcdTkwNDBcdTkwNDNcdTkwNDVcdTkwNDZcdTkwNDhcdTkwNDlcdTkwNGFcdTkwNGJcdTkwNGNcdTkwNGVcdTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWNcdTkwNWRcdTkwNWVcdTkwNWZcdTkwNjBcdTkwNjFcdTkwNjRcdTkwNjZcdTkwNjdcdTkwNjlc''@;'; put 'put ''dTkwNmFcdTkwNmJcdTkwNmNcdTkwNmZcdTkwNzBcdTkwNzFcdTkwNzJcdTkwNzNcdTkwNzZcdTkwNzdcdTkwNzhcdTkwNzlcdTkwN2FcdTkwN2JcdTkwN2NcdTkwN2VcdTkwODFcdWZmZmRcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlcdTkwOGFcdTkwOGNcdTkwOGRcdTkwOGVcdTkw''@;'; put 'put ''OGZcdTkwOTBcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVcdTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJcdTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkwYzBcdTY0N2FcdTY0YjdcdTY0YjhcdTY0OTlc''@;'; put 'put ''dTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJcdTU0NTJcdTU0NTNcdTU0NTRcdTU0NTZcdTU0''@;'; put 'put ''NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0YTZcdTU0ZDNcdTU0ZDRcdTU0NzJcdTU0YTNc''@;'; put 'put ''dTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFcdTU1MjdcdTU1MmFcdTU1NjdcdTU1OGZcdTU1''@;'; put 'put ''YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2NcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyM11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjIzXVt2XV09NTcwODgrdixUWzU3MDg4K3ZdPWtbMjIzXVt2XSk7''@;'; put 'put ''Zm9yKGtbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGMyXHU5MGMzXHU5MGM2XHU5MGM4XHU5MGM5XHU5MGNiXHU5MGNjXHU5MGNkXHU5MGQyXHU5MGQ0XHU5MGQ1XHU5MGQ2XHU5MGQ4XHU5MGQ5XHU5MGRhXHU5MGRlXHU5''@;'; put 'put ''MGRmXHU5MGUwXHU5MGUzXHU5MGU0XHU5MGU1XHU5MGU5XHU5MGVhXHU5MGVjXHU5MGVlXHU5MGYwXHU5MGYxXHU5MGYyXHU5MGYzXHU5MGY1XHU5MGY2XHU5MGY3XHU5MGY5XHU5MGZhXHU5MGZiXHU5MGZjXHU5MGZmXHU5MTAwXHU5MTAxXHU5MTAzXHU5MTA1XHU5MTA2XHU5MTA3XHU5MTA4''@;'; put 'put ''XHU5MTA5XHU5MTBhXHU5MTBiXHU5MTBjXHU5MTBkXHU5MTBlXHU5MTBmXHU5MTEwXHU5MTExXHU5MTEyXHU5MTEzXHU5MTE0XHU5MTE1XHU5MTE2XHU5MTE3XHU5MTE4XHU5MTFhXHU5MTFiXHU5MTFjXHVmZmZkXHU5MTFkXHU5MTFmXHU5MTIwXHU5MTIxXHU5MTI0XHU5MTI1XHU5MTI2XHU5''@;'; put 'put ''MTI3XHU5MTI4XHU5MTI5XHU5MTJhXHU5MTJiXHU5MTJjXHU5MTJkXHU5MTJlXHU5MTMwXHU5MTMyXHU5MTMzXHU5MTM0XHU5MTM1XHU5MTM2XHU5MTM3XHU5MTM4XHU5MTNhXHU5MTNiXHU5MTNjXHU5MTNkXHU5MTNlXHU5MTNmXHU5MTQwXHU5MTQxXHU5MTQyXHU5MTQ0XHU1NTM3XHU1NTU2''@;'; put 'put ''XHU1NTc1XHU1NTc2XHU1NTc3XHU1NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIxXHU1NWI5XHU1NTg4XHU1NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5XHU1NWVhXHU1NWY3XHU1NWM5XHU1NjFmXHU1''@;'; put 'put ''NWQxXHU1NWViXHU1NWVjXHU1NWQ0XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1NWYzXHU1NWNjXHU1NWNkXHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1NWZlXHU1NjAwXHU1NjI3XHU1NjJkXHU1NjU4''@;'; put 'put ''XHU1NjM5XHU1NjU3XHU1NjJjXHU1NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2XHU1NjY0XHU1NjcxXHU1NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1XHU1NmViXHU1NmY5XHU1NmZmXHU1NzA0XHU1''@;'; put 'put ''NzBhXHU1NzA5XHU1NzFjXHU1ZTBmXHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyNF1bdl1dPTU3MzQ0K3YsVFs1NzM0NCt2''@;'; put 'put ''XT1rWzIyNF1bdl0pO2ZvcihrWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTE0NVx1OTE0N1x1OTE0OFx1OTE1MVx1OTE1M1x1OTE1NFx1OTE1NVx1OTE1Nlx1OTE1OFx1OTE1OVx1OTE1Ylx1OTE1Y1x1OTE1Zlx1OTE2MFx1''@;'; put 'put ''OTE2Nlx1OTE2N1x1OTE2OFx1OTE2Ylx1OTE2ZFx1OTE3M1x1OTE3YVx1OTE3Ylx1OTE3Y1x1OTE4MFx1OTE4MVx1OTE4Mlx1OTE4M1x1OTE4NFx1OTE4Nlx1OTE4OFx1OTE4YVx1OTE4ZVx1OTE4Zlx1OTE5M1x1OTE5NFx1OTE5NVx1OTE5Nlx1OTE5N1x1OTE5OFx1OTE5OVx1OTE5Y1x1OTE5''@;'; put 'put ''ZFx1OTE5ZVx1OTE5Zlx1OTFhMFx1OTFhMVx1OTFhNFx1OTFhNVx1OTFhNlx1OTFhN1x1OTFhOFx1OTFhOVx1OTFhYlx1OTFhY1x1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiN1x1OTFiOFx1OTFiOVx1OTFiYlx1ZmZmZFx1OTFiY1x1OTFiZFx1OTFiZVx1OTFiZlx1OTFjMFx1''@;'; put 'put ''OTFjMVx1OTFjMlx1OTFjM1x1OTFjNFx1OTFjNVx1OTFjNlx1OTFjOFx1OTFjYlx1OTFkMFx1OTFkMlx1OTFkM1x1OTFkNFx1OTFkNVx1OTFkNlx1OTFkN1x1OTFkOFx1OTFkOVx1OTFkYVx1OTFkYlx1OTFkZFx1OTFkZVx1OTFkZlx1OTFlMFx1OTFlMVx1OTFlMlx1OTFlM1x1OTFlNFx1OTFl''@;'; put 'put ''NVx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1NWM5OFx1NWM5OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1NWNiMVx1NWNhM1x1NWNjMVx1NWNiN1x1NWNjNFx1''@;'; put 'put ''NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQxYlx1NWQ1OFx1NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0Ylx1NWQ0YVx1NWQ2OVx1NWQ3NFx1NWQ4Mlx1NWQ5''@;'; put 'put ''OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1NWY5Y1x1NWZhOFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1NzJiN1x1NzJiOFx1NzJjM1x1NzJjMVx1NzJjZVx1''@;'; put 'put ''NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyNV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjVdW3ZdXT01NzYw''@;'; put 'put ''MCt2LFRbNTc2MDArdl09a1syMjVdW3ZdKTtmb3Ioa1syMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkxZTZcdTkxZTdcdTkxZThcdTkxZTlcdTkxZWFcdTkxZWJcdTkxZWNcdTkxZWRcdTkxZWVcdTkxZWZcdTkxZjBcdTkxZjFc''@;'; put 'put ''dTkxZjJcdTkxZjNcdTkxZjRcdTkxZjVcdTkxZjZcdTkxZjdcdTkxZjhcdTkxZjlcdTkxZmFcdTkxZmJcdTkxZmNcdTkxZmRcdTkxZmVcdTkxZmZcdTkyMDBcdTkyMDFcdTkyMDJcdTkyMDNcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDhcdTkyMDlcdTkyMGFcdTkyMGJcdTkyMGNcdTky''@;'; put 'put ''MGRcdTkyMGVcdTkyMGZcdTkyMTBcdTkyMTFcdTkyMTJcdTkyMTNcdTkyMTRcdTkyMTVcdTkyMTZcdTkyMTdcdTkyMThcdTkyMTlcdTkyMWFcdTkyMWJcdTkyMWNcdTkyMWRcdTkyMWVcdTkyMWZcdTkyMjBcdTkyMjFcdTkyMjJcdTkyMjNcdTkyMjRcdWZmZmRcdTkyMjVcdTkyMjZcdTkyMjdc''@;'; put 'put ''dTkyMjhcdTkyMjlcdTkyMmFcdTkyMmJcdTkyMmNcdTkyMmRcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzFcdTkyMzJcdTkyMzNcdTkyMzRcdTkyMzVcdTkyMzZcdTkyMzdcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2JcdTkyM2NcdTkyM2RcdTkyM2VcdTkyM2ZcdTkyNDBcdTkyNDFcdTkyNDJcdTky''@;'; put 'put ''NDNcdTkyNDRcdTkyNDVcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2VcdTgyMWJcdTU5MjVcdTk4ZTdcdTU5MjRc''@;'; put 'put ''dTU5MDJcdTk5NjNcdTk5NjdcdTk5NjhcdTk5NjlcdTk5NmFcdTk5NmJcdTk5NmNcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVlOGJcdTVlOTZcdTVlYTVcdTVlYTBcdTVl''@;'; put 'put ''YjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFcdTVmZWRcdTVmZjhcdTYwMTlcdTYwMzVc''@;'; put 'put ''dTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYwN2FcdTYwNDJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyNl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tb''@;'; put 'put ''MjI2XVt2XV09NTc4NTYrdixUWzU3ODU2K3ZdPWtbMjI2XVt2XSk7Zm9yKGtbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MjQ2XHU5MjQ3XHU5MjQ4XHU5MjQ5XHU5MjRhXHU5MjRiXHU5MjRjXHU5MjRkXHU5MjRlXHU5MjRm''@;'; put 'put ''XHU5MjUwXHU5MjUxXHU5MjUyXHU5MjUzXHU5MjU0XHU5MjU1XHU5MjU2XHU5MjU3XHU5MjU4XHU5MjU5XHU5MjVhXHU5MjViXHU5MjVjXHU5MjVkXHU5MjVlXHU5MjVmXHU5MjYwXHU5MjYxXHU5MjYyXHU5MjYzXHU5MjY0XHU5MjY1XHU5MjY2XHU5MjY3XHU5MjY4XHU5MjY5XHU5MjZhXHU5''@;'; put 'put ''MjZiXHU5MjZjXHU5MjZkXHU5MjZlXHU5MjZmXHU5MjcwXHU5MjcxXHU5MjcyXHU5MjczXHU5Mjc1XHU5Mjc2XHU5Mjc3XHU5Mjc4XHU5Mjc5XHU5MjdhXHU5MjdiXHU5MjdjXHU5MjdkXHU5MjdlXHU5MjdmXHU5MjgwXHU5MjgxXHU5MjgyXHU5MjgzXHU5Mjg0XHU5Mjg1XHVmZmZkXHU5Mjg2''@;'; put 'put ''XHU5Mjg3XHU5Mjg4XHU5Mjg5XHU5MjhhXHU5MjhiXHU5MjhjXHU5MjhkXHU5MjhmXHU5MjkwXHU5MjkxXHU5MjkyXHU5MjkzXHU5Mjk0XHU5Mjk1XHU5Mjk2XHU5Mjk3XHU5Mjk4XHU5Mjk5XHU5MjlhXHU5MjliXHU5MjljXHU5MjlkXHU5MjllXHU5MjlmXHU5MmEwXHU5MmExXHU5MmEyXHU5''@;'; put 'put ''MmEzXHU5MmE0XHU5MmE1XHU5MmE2XHU5MmE3XHU2MDZhXHU2MDdkXHU2MDk2XHU2MDlhXHU2MGFkXHU2MDlkXHU2MDgzXHU2MDkyXHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2MTIwXHU2MTI2XHU2MTE1XHU2MTIzXHU2MGY0''@;'; put 'put ''XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3XHU2MWI3XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0XHU5NjA2XHU5NjA4XHU5NjBhXHU5NjBiXHU5''@;'; put 'put ''NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5NjFhXHU0ZTJjXHU3MjNmXHU2MjE1XHU2YzM1XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2Yzc0XHU2Yzc2XHU2Yzg2XHU2Y2E5XHU2Y2Qw''@;'; put 'put ''XHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2UwXHU2Y2Q2XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjddW3ZdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihzZVtrWzIyN11bdl1dPTU4MTEyK3YsVFs1ODExMit2XT1rWzIyN11bdl0pO2ZvcihrWzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhOFx1OTJhOVx1OTJhYVx1OTJhYlx1OTJhY1x1OTJhZFx1OTJhZlx1OTJi''@;'; put 'put ''MFx1OTJiMVx1OTJiMlx1OTJiM1x1OTJiNFx1OTJiNVx1OTJiNlx1OTJiN1x1OTJiOFx1OTJiOVx1OTJiYVx1OTJiYlx1OTJiY1x1OTJiZFx1OTJiZVx1OTJiZlx1OTJjMFx1OTJjMVx1OTJjMlx1OTJjM1x1OTJjNFx1OTJjNVx1OTJjNlx1OTJjN1x1OTJjOVx1OTJjYVx1OTJjYlx1OTJjY1x1''@;'; put 'put ''OTJjZFx1OTJjZVx1OTJjZlx1OTJkMFx1OTJkMVx1OTJkMlx1OTJkM1x1OTJkNFx1OTJkNVx1OTJkNlx1OTJkN1x1OTJkOFx1OTJkOVx1OTJkYVx1OTJkYlx1OTJkY1x1OTJkZFx1OTJkZVx1OTJkZlx1OTJlMFx1OTJlMVx1OTJlMlx1OTJlM1x1OTJlNFx1OTJlNVx1OTJlNlx1OTJlN1x1OTJl''@;'; put 'put ''OFx1ZmZmZFx1OTJlOVx1OTJlYVx1OTJlYlx1OTJlY1x1OTJlZFx1OTJlZVx1OTJlZlx1OTJmMFx1OTJmMVx1OTJmMlx1OTJmM1x1OTJmNFx1OTJmNVx1OTJmNlx1OTJmN1x1OTJmOFx1OTJmOVx1OTJmYVx1OTJmYlx1OTJmY1x1OTJmZFx1OTJmZVx1OTJmZlx1OTMwMFx1OTMwMVx1OTMwMlx1''@;'; put 'put ''OTMwM1x1OTMwNFx1OTMwNVx1OTMwNlx1OTMwN1x1OTMwOFx1OTMwOVx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQwN1x1NmQwNFx1NmQxOVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1NmQ1NFx1NmQzM1x1NmQ5MVx1NmQ2Zlx1NmQ5''@;'; put 'put ''ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1NmUwZVx1NmRiZlx1NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRhZVx1NmUyYlx1NmU2ZVx1NmU0ZVx1NmU2Ylx1''@;'; put 'put ''NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYyZFx1NmVlMlx1NmVhNVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1NmVjMlx1NmU5Zlx1NmY2Mlx1NmY0Nlx1NmY0''@;'; put 'put ''N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1NmY4Y1x1NmY3OFx1NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyOF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI4''@;'; put 'put ''XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjhdW3ZdXT01ODM2OCt2LFRbNTgzNjgrdl09a1syMjhdW3ZdKTtmb3Ioa1syMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMGFcdTkzMGJcdTkzMGNcdTkzMGRcdTkzMGVcdTkz''@;'; put 'put ''MGZcdTkzMTBcdTkzMTFcdTkzMTJcdTkzMTNcdTkzMTRcdTkzMTVcdTkzMTZcdTkzMTdcdTkzMThcdTkzMTlcdTkzMWFcdTkzMWJcdTkzMWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjBcdTkzMjFcdTkzMjJcdTkzMjNcdTkzMjRcdTkzMjVcdTkzMjZcdTkzMjdcdTkzMjhcdTkzMjlcdTkzMmFc''@;'; put 'put ''dTkzMmJcdTkzMmNcdTkzMmRcdTkzMmVcdTkzMmZcdTkzMzBcdTkzMzFcdTkzMzJcdTkzMzNcdTkzMzRcdTkzMzVcdTkzMzZcdTkzMzdcdTkzMzhcdTkzMzlcdTkzM2FcdTkzM2JcdTkzM2NcdTkzM2RcdTkzM2ZcdTkzNDBcdTkzNDFcdTkzNDJcdTkzNDNcdTkzNDRcdTkzNDVcdTkzNDZcdTkz''@;'; put 'put ''NDdcdTkzNDhcdTkzNDlcdWZmZmRcdTkzNGFcdTkzNGJcdTkzNGNcdTkzNGRcdTkzNGVcdTkzNGZcdTkzNTBcdTkzNTFcdTkzNTJcdTkzNTNcdTkzNTRcdTkzNTVcdTkzNTZcdTkzNTdcdTkzNThcdTkzNTlcdTkzNWFcdTkzNWJcdTkzNWNcdTkzNWRcdTkzNWVcdTkzNWZcdTkzNjBcdTkzNjFc''@;'; put 'put ''dTkzNjJcdTkzNjNcdTkzNjRcdTkzNjVcdTkzNjZcdTkzNjdcdTkzNjhcdTkzNjlcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlcdTcwMzVcdTcwNGZcdTcwNWVcdTViODBcdTVi''@;'; put 'put ''ODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThmZThcdTkwMDVcdTkwMDRcdTkwMGJcdTkwMjZc''@;'; put 'put ''dTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJcdTVmNTBcdTVmNTdcdTVmNTZcdTVmNThcdTVj''@;'; put 'put ''M2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjldLmxlbmd0aDsrK3Yp''@;'; put 'put ''NjU1MzMhPT1rWzIyOV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI5XVt2XV09NTg2MjQrdixUWzU4NjI0K3ZdPWtbMjI5XVt2XSk7Zm9yKGtbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzZjXHU5MzZkXHU5MzZlXHU5''@;'; put 'put ''MzZmXHU5MzcwXHU5MzcxXHU5MzcyXHU5MzczXHU5Mzc0XHU5Mzc1XHU5Mzc2XHU5Mzc3XHU5Mzc4XHU5Mzc5XHU5MzdhXHU5MzdiXHU5MzdjXHU5MzdkXHU5MzdlXHU5MzdmXHU5MzgwXHU5MzgxXHU5MzgyXHU5MzgzXHU5Mzg0XHU5Mzg1XHU5Mzg2XHU5Mzg3XHU5Mzg4XHU5Mzg5XHU5Mzhh''@;'; put 'put ''XHU5MzhiXHU5MzhjXHU5MzhkXHU5MzhlXHU5MzkwXHU5MzkxXHU5MzkyXHU5MzkzXHU5Mzk0XHU5Mzk1XHU5Mzk2XHU5Mzk3XHU5Mzk4XHU5Mzk5XHU5MzlhXHU5MzliXHU5MzljXHU5MzlkXHU5MzllXHU5MzlmXHU5M2EwXHU5M2ExXHU5M2EyXHU5M2EzXHU5M2E0XHU5M2E1XHU5M2E2XHU5''@;'; put 'put ''M2E3XHU5M2E4XHU5M2E5XHU5M2FhXHU5M2FiXHVmZmZkXHU5M2FjXHU5M2FkXHU5M2FlXHU5M2FmXHU5M2IwXHU5M2IxXHU5M2IyXHU5M2IzXHU5M2I0XHU5M2I1XHU5M2I2XHU5M2I3XHU5M2I4XHU5M2I5XHU5M2JhXHU5M2JiXHU5M2JjXHU5M2JkXHU5M2JlXHU5M2JmXHU5M2MwXHU5M2Mx''@;'; put 'put ''XHU5M2MyXHU5M2MzXHU5M2M0XHU5M2M1XHU5M2M2XHU5M2M3XHU5M2M4XHU5M2M5XHU5M2NiXHU5M2NjXHU5M2NkXHU1OTk3XHU1OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2XHU1OWRkXHU1YTA4XHU1OWUzXHU1OWQ4XHU1''@;'; put 'put ''OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1YTU1XHU1YTNjXHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1YWQyXHU1YWQ0XHU1YWI4XHU1YWUwXHU1YWUz''@;'; put 'put ''XHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQwXHU1YzE1XHU1YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdhXHU5YTdmXHU5YTdkXHU5YTgwXHU5YTgxXHU5''@;'; put 'put ''YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTkyXHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5YTlmXHU5YWEwXHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMw''@;'; put 'put ''XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzMF1bdl1dPTU4ODgwK3YsVFs1ODg4MCt2XT1rWzIzMF1bdl0pO2ZvcihrWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTNjZVx1''@;'; put 'put ''OTNjZlx1OTNkMFx1OTNkMVx1OTNkMlx1OTNkM1x1OTNkNFx1OTNkNVx1OTNkN1x1OTNkOFx1OTNkOVx1OTNkYVx1OTNkYlx1OTNkY1x1OTNkZFx1OTNkZVx1OTNkZlx1OTNlMFx1OTNlMVx1OTNlMlx1OTNlM1x1OTNlNFx1OTNlNVx1OTNlNlx1OTNlN1x1OTNlOFx1OTNlOVx1OTNlYVx1OTNl''@;'; put 'put ''Ylx1OTNlY1x1OTNlZFx1OTNlZVx1OTNlZlx1OTNmMFx1OTNmMVx1OTNmMlx1OTNmM1x1OTNmNFx1OTNmNVx1OTNmNlx1OTNmN1x1OTNmOFx1OTNmOVx1OTNmYVx1OTNmYlx1OTNmY1x1OTNmZFx1OTNmZVx1OTNmZlx1OTQwMFx1OTQwMVx1OTQwMlx1OTQwM1x1OTQwNFx1OTQwNVx1OTQwNlx1''@;'; put 'put ''OTQwN1x1OTQwOFx1OTQwOVx1OTQwYVx1OTQwYlx1OTQwY1x1OTQwZFx1ZmZmZFx1OTQwZVx1OTQwZlx1OTQxMFx1OTQxMVx1OTQxMlx1OTQxM1x1OTQxNFx1OTQxNVx1OTQxNlx1OTQxN1x1OTQxOFx1OTQxOVx1OTQxYVx1OTQxYlx1OTQxY1x1OTQxZFx1OTQxZVx1OTQxZlx1OTQyMFx1OTQy''@;'; put 'put ''MVx1OTQyMlx1OTQyM1x1OTQyNFx1OTQyNVx1OTQyNlx1OTQyN1x1OTQyOFx1OTQyOVx1OTQyYVx1OTQyYlx1OTQyY1x1OTQyZFx1OTQyZVx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1''@;'; put 'put ''N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2VmYlx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2Yy''@;'; put 'put ''MVx1N2YyMlx1N2YyM1x1N2YyNFx1N2YyNVx1N2YyNlx1N2YyN1x1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZlx1N2YzMFx1N2YzMVx1N2YzMlx1N2YzM1x1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5MVx1NzNhZVx1NzNhMlx1NzM5Zlx1NzNjZlx1''@;'; put 'put ''NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNlN1x1NzNkZVx1NzNiYVx1NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1NzQyZVx1NzQyY1x1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LHY9MDt2IT1rWzIzMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzFdW3ZdXT01OTEzNit2LFRbNTkxMzYrdl09a1syMzFdW3ZdKTtmb3Ioa1syMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTk0MmZcdTk0MzBcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0MzVcdTk0MzZcdTk0MzdcdTk0MzhcdTk0MzlcdTk0M2FcdTk0M2JcdTk0M2NcdTk0M2RcdTk0M2ZcdTk0NDBcdTk0NDFcdTk0NDJcdTk0NDNcdTk0NDRcdTk0NDVcdTk0NDZcdTk0NDdcdTk0NDhcdTk0NDlcdTk0''@;'; put 'put ''NGFcdTk0NGJcdTk0NGNcdTk0NGRcdTk0NGVcdTk0NGZcdTk0NTBcdTk0NTFcdTk0NTJcdTk0NTNcdTk0NTRcdTk0NTVcdTk0NTZcdTk0NTdcdTk0NThcdTk0NTlcdTk0NWFcdTk0NWJcdTk0NWNcdTk0NWRcdTk0NWVcdTk0NWZcdTk0NjBcdTk0NjFcdTk0NjJcdTk0NjNcdTk0NjRcdTk0NjVc''@;'; put 'put ''dTk0NjZcdTk0NjdcdTk0NjhcdTk0NjlcdTk0NmFcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmZcdWZmZmRcdTk0NzBcdTk0NzFcdTk0NzJcdTk0NzNcdTk0NzRcdTk0NzVcdTk0NzZcdTk0NzdcdTk0NzhcdTk0NzlcdTk0N2FcdTk0N2JcdTk0N2NcdTk0N2RcdTk0N2VcdTk0N2ZcdTk0ODBcdTk0''@;'; put 'put ''ODFcdTk0ODJcdTk0ODNcdTk0ODRcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0ZDRcdTk0ZGFcdTk0ZTZcdTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRcdTc0N2VcdTc0OWNcdTc0OGVc''@;'; put 'put ''dTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFcdTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3YTdcdTY3NzVcdTY3YThcdTY3''@;'; put 'put ''OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJcdTY4MzNcdTY4NjBcdTY4NjFc''@;'; put 'put ''dTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBcdTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5MWZcdTY5MjBcdTY4ZjlcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjMyXVt2XV09NTkzOTIrdixUWzU5MzkyK3ZdPWtbMjMyXVt2XSk7Zm9yKGtbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU5NTI3XHU5NTMzXHU5NTNkXHU5NTQzXHU5NTQ4XHU5NTRiXHU5NTU1XHU5NTVhXHU5NTYwXHU5NTZlXHU5NTc0XHU5NTc1XHU5NTc3XHU5NTc4XHU5NTc5XHU5NTdhXHU5NTdiXHU5NTdjXHU5NTdkXHU5NTdlXHU5NTgwXHU5NTgxXHU5NTgyXHU5NTgzXHU5''@;'; put 'put ''NTg0XHU5NTg1XHU5NTg2XHU5NTg3XHU5NTg4XHU5NTg5XHU5NThhXHU5NThiXHU5NThjXHU5NThkXHU5NThlXHU5NThmXHU5NTkwXHU5NTkxXHU5NTkyXHU5NTkzXHU5NTk0XHU5NTk1XHU5NTk2XHU5NTk3XHU5NTk4XHU5NTk5XHU5NTlhXHU5NTliXHU5NTljXHU5NTlkXHU5NTllXHU5NTlm''@;'; put 'put ''XHU5NWEwXHU5NWExXHU5NWEyXHU5NWEzXHU5NWE0XHU5NWE1XHU5NWE2XHU5NWE3XHU5NWE4XHU5NWE5XHU5NWFhXHVmZmZkXHU5NWFiXHU5NWFjXHU5NWFkXHU5NWFlXHU5NWFmXHU5NWIwXHU5NWIxXHU5NWIyXHU5NWIzXHU5NWI0XHU5NWI1XHU5NWI2XHU5NWI3XHU5NWI4XHU5NWI5XHU5''@;'; put 'put ''NWJhXHU5NWJiXHU5NWJjXHU5NWJkXHU5NWJlXHU5NWJmXHU5NWMwXHU5NWMxXHU5NWMyXHU5NWMzXHU5NWM0XHU5NWM1XHU5NWM2XHU5NWM3XHU5NWM4XHU5NWM5XHU5NWNhXHU5NWNiXHU2OTI0XHU2OGYwXHU2OTBiXHU2OTAxXHU2OTU3XHU2OGUzXHU2OTEwXHU2OTcxXHU2OTM5XHU2OTYw''@;'; put 'put ''XHU2OTQyXHU2OTVkXHU2OTg0XHU2OTZiXHU2OTgwXHU2OTk4XHU2OTc4XHU2OTM0XHU2OWNjXHU2OTg3XHU2OTg4XHU2OWNlXHU2OTg5XHU2OTY2XHU2OTYzXHU2OTc5XHU2OTliXHU2OWE3XHU2OWJiXHU2OWFiXHU2OWFkXHU2OWQ0XHU2OWIxXHU2OWMxXHU2OWNhXHU2OWRmXHU2OTk1XHU2''@;'; put 'put ''OWUwXHU2OThkXHU2OWZmXHU2YTJmXHU2OWVkXHU2YTE3XHU2YTE4XHU2YTY1XHU2OWYyXHU2YTQ0XHU2YTNlXHU2YWEwXHU2YTUwXHU2YTViXHU2YTM1XHU2YThlXHU2YTc5XHU2YTNkXHU2YTI4XHU2YTU4XHU2YTdjXHU2YTkxXHU2YTkwXHU2YWE5XHU2YTk3XHU2YWFiXHU3MzM3XHU3MzUy''@;'; put 'put ''XHU2YjgxXHU2YjgyXHU2Yjg3XHU2Yjg0XHU2YjkyXHU2YjkzXHU2YjhkXHU2YjlhXHU2YjliXHU2YmExXHU2YmFhXHU4ZjZiXHU4ZjZkXHU4ZjcxXHU4ZjcyXHU4ZjczXHU4Zjc1XHU4Zjc2XHU4Zjc4XHU4Zjc3XHU4Zjc5XHU4ZjdhXHU4ZjdjXHU4ZjdlXHU4ZjgxXHU4ZjgyXHU4Zjg0XHU4''@;'; put 'put ''Zjg3XHU4ZjhiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzM11bdl1dPTU5NjQ4K3YsVFs1OTY0OCt2XT1rWzIzM11bdl0pO2ZvcihrWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTVjY1x1OTVjZFx1OTVjZVx1OTVjZlx1OTVkMFx1OTVkMVx1OTVkMlx1OTVkM1x1OTVkNFx1OTVkNVx1OTVkNlx1OTVkN1x1OTVkOFx1OTVkOVx1OTVkYVx1OTVkYlx1OTVkY1x1OTVkZFx1OTVkZVx1OTVkZlx1OTVlMFx1OTVlMVx1''@;'; put 'put ''OTVlMlx1OTVlM1x1OTVlNFx1OTVlNVx1OTVlNlx1OTVlN1x1OTVlY1x1OTVmZlx1OTYwN1x1OTYxM1x1OTYxOFx1OTYxYlx1OTYxZVx1OTYyMFx1OTYyM1x1OTYyNFx1OTYyNVx1OTYyNlx1OTYyN1x1OTYyOFx1OTYyOVx1OTYyYlx1OTYyY1x1OTYyZFx1OTYyZlx1OTYzMFx1OTYzN1x1OTYz''@;'; put 'put ''OFx1OTYzOVx1OTYzYVx1OTYzZVx1OTY0MVx1OTY0M1x1OTY0YVx1OTY0ZVx1OTY0Zlx1OTY1MVx1OTY1Mlx1OTY1M1x1OTY1Nlx1OTY1N1x1ZmZmZFx1OTY1OFx1OTY1OVx1OTY1YVx1OTY1Y1x1OTY1ZFx1OTY1ZVx1OTY2MFx1OTY2M1x1OTY2NVx1OTY2Nlx1OTY2Ylx1OTY2ZFx1OTY2ZVx1''@;'; put 'put ''OTY2Zlx1OTY3MFx1OTY3MVx1OTY3M1x1OTY3OFx1OTY3OVx1OTY3YVx1OTY3Ylx1OTY3Y1x1OTY3ZFx1OTY3ZVx1OTY3Zlx1OTY4MFx1OTY4MVx1OTY4Mlx1OTY4M1x1OTY4NFx1OTY4N1x1OTY4OVx1OTY4YVx1OGY4ZFx1OGY4ZVx1OGY4Zlx1OGY5OFx1OGY5YVx1OGVjZVx1NjIwYlx1NjIx''@;'; put 'put ''N1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1NzUxMVx1NzUxM1x1NjUzNFx1NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYxNVx1NjYwMFx1NzA4NVx1NjZmN1x1NjYxZFx1''@;'; put 'put ''NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3N1x1NjY4NFx1NjY4Y1x1NjZhN1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1OGQzM1x1OGQzNlx1OGQzYlx1OGQzZFx1OGQ0''@;'; put 'put ''MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1ODljZVx1ODljZlx1ODlkMFx1ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3Zlx1NzI4NFx1NzI4Ylx1NzI4ZFx1NzI4Zlx1''@;'; put 'put ''NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjM0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzRdW3ZdXT01OTkwNCt2LFRbNTk5MDQrdl09a1syMzRdW3ZdKTtmb3Ioa1syMzVdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNcdTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWRcdTk2OWVcdTk2OWZcdTk2YTBcdTk2YTFcdTk2YTJcdTk2YTNcdTk2YTRcdTk2YTVcdTk2YTZcdTk2YThc''@;'; put 'put ''dTk2YTlcdTk2YWFcdTk2YWJcdTk2YWNcdTk2YWRcdTk2YWVcdTk2YWZcdTk2YjFcdTk2YjJcdTk2YjRcdTk2YjVcdTk2YjdcdTk2YjhcdTk2YmFcdTk2YmJcdTk2YmZcdTk2YzJcdTk2YzNcdTk2YzhcdTk2Y2FcdTk2Y2JcdTk2ZDBcdTk2ZDFcdTk2ZDNcdTk2ZDRcdTk2ZDZcdTk2ZDdcdTk2''@;'; put 'put ''ZDhcdTk2ZDlcdTk2ZGFcdTk2ZGJcdTk2ZGNcdTk2ZGRcdTk2ZGVcdTk2ZGZcdTk2ZTFcdTk2ZTJcdTk2ZTNcdTk2ZTRcdTk2ZTVcdTk2ZTZcdTk2ZTdcdTk2ZWJcdWZmZmRcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2ZjhcdTk2ZmFcdTk2ZmJc''@;'; put 'put ''dTk2ZmNcdTk2ZmRcdTk2ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNcdTk3MTBcdTk3MTFcdTk3MTJcdTk3MTRcdTk3MTVcdTk3MTdcdTk3MThcdTk3MTlcdTk3MWFcdTk3MWJcdTk3MWRcdTk3MWZcdTk3MjBcdTY0M2ZcdTY0ZDhcdTgwMDRcdTZiZWFcdTZiZjNcdTZi''@;'; put 'put ''ZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFcdTZjMjFcdTZjMjlcdTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2NjJcdTUyMTZcdTgwOWZcdTgwOWNcdTgwOTNc''@;'; put 'put ''dTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgwZTlcdTgwZWFcdTgwZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRcdTgwZWRcdTgxMGRcdTgxMGVcdTgwZjJcdTgw''@;'; put 'put ''ZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNcdTgxNTNcdTgxNzRcdTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVhYjVcdTgxODhcdTgxODJcdTgxOTFcdTZlZDVc''@;'; put 'put ''dTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM1XVt2XV09NjAxNjArdixUWzYwMTYwK3ZdPWtbMjM1XVt2XSk7Zm9yKGtbMjM2''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzIxXHU5NzIyXHU5NzIzXHU5NzI0XHU5NzI1XHU5NzI2XHU5NzI3XHU5NzI4XHU5NzI5XHU5NzJiXHU5NzJjXHU5NzJlXHU5NzJmXHU5NzMxXHU5NzMzXHU5NzM0XHU5NzM1XHU5NzM2''@;'; put 'put ''XHU5NzM3XHU5NzNhXHU5NzNiXHU5NzNjXHU5NzNkXHU5NzNmXHU5NzQwXHU5NzQxXHU5NzQyXHU5NzQzXHU5NzQ0XHU5NzQ1XHU5NzQ2XHU5NzQ3XHU5NzQ4XHU5NzQ5XHU5NzRhXHU5NzRiXHU5NzRjXHU5NzRkXHU5NzRlXHU5NzRmXHU5NzUwXHU5NzUxXHU5NzU0XHU5NzU1XHU5NzU3XHU5''@;'; put 'put ''NzU4XHU5NzVhXHU5NzVjXHU5NzVkXHU5NzVmXHU5NzYzXHU5NzY0XHU5NzY2XHU5NzY3XHU5NzY4XHU5NzZhXHU5NzZiXHU5NzZjXHU5NzZkXHU5NzZlXHU5NzZmXHU5NzcwXHU5NzcxXHVmZmZkXHU5NzcyXHU5Nzc1XHU5Nzc3XHU5Nzc4XHU5Nzc5XHU5NzdhXHU5NzdiXHU5NzdkXHU5Nzdl''@;'; put 'put ''XHU5NzdmXHU5NzgwXHU5NzgxXHU5NzgyXHU5NzgzXHU5Nzg0XHU5Nzg2XHU5Nzg3XHU5Nzg4XHU5Nzg5XHU5NzhhXHU5NzhjXHU5NzhlXHU5NzhmXHU5NzkwXHU5NzkzXHU5Nzk1XHU5Nzk2XHU5Nzk3XHU5Nzk5XHU5NzlhXHU5NzliXHU5NzljXHU5NzlkXHU4MWMxXHU4MWE2XHU2YjI0XHU2''@;'; put 'put ''YjM3XHU2YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQzXHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQwXHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2NWNlXHU2NWQyXHU2NWQ2XHU3MDgwXHU3MDlj''@;'; put 'put ''XHU3MDk2XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4XHU3MWIzXHU3MWI1XHU3MWE4XHU3MWEwXHU3''@;'; put 'put ''MWUwXHU3MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQzXHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3OTYyXHU3OTU3XHU3OTYwXHU3OTZmXHU3OTY3''@;'; put 'put ''XHU3OTdhXHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1ZmQwXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzNl1bdl1dPTYwNDE2K3YsVFs2MDQxNit2XT1rWzIzNl1b''@;'; put 'put ''dl0pO2ZvcihrWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTc5ZVx1OTc5Zlx1OTdhMVx1OTdhMlx1OTdhNFx1OTdhNVx1OTdhNlx1OTdhN1x1OTdhOFx1OTdhOVx1OTdhYVx1OTdhY1x1OTdhZVx1OTdiMFx1OTdiMVx1OTdi''@;'; put 'put ''M1x1OTdiNVx1OTdiNlx1OTdiN1x1OTdiOFx1OTdiOVx1OTdiYVx1OTdiYlx1OTdiY1x1OTdiZFx1OTdiZVx1OTdiZlx1OTdjMFx1OTdjMVx1OTdjMlx1OTdjM1x1OTdjNFx1OTdjNVx1OTdjNlx1OTdjN1x1OTdjOFx1OTdjOVx1OTdjYVx1OTdjYlx1OTdjY1x1OTdjZFx1OTdjZVx1OTdjZlx1''@;'; put 'put ''OTdkMFx1OTdkMVx1OTdkMlx1OTdkM1x1OTdkNFx1OTdkNVx1OTdkNlx1OTdkN1x1OTdkOFx1OTdkOVx1OTdkYVx1OTdkYlx1OTdkY1x1OTdkZFx1OTdkZVx1OTdkZlx1OTdlMFx1OTdlMVx1OTdlMlx1OTdlM1x1ZmZmZFx1OTdlNFx1OTdlNVx1OTdlOFx1OTdlZVx1OTdlZlx1OTdmMFx1OTdm''@;'; put 'put ''MVx1OTdmMlx1OTdmNFx1OTdmN1x1OTdmOFx1OTdmOVx1OTdmYVx1OTdmYlx1OTdmY1x1OTdmZFx1OTdmZVx1OTdmZlx1OTgwMFx1OTgwMVx1OTgwMlx1OTgwM1x1OTgwNFx1OTgwNVx1OTgwNlx1OTgwN1x1OTgwOFx1OTgwOVx1OTgwYVx1OTgwYlx1OTgwY1x1OTgwZFx1OTgwZVx1NjAzY1x1''@;'; put 'put ''NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1NzgwOVx1NzgxN1x1NzgxOFx1NzgxMVx1NjVh''@;'; put 'put ''Ylx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5M1x1Nzg5YVx1Nzg4N1x1Nzg5Y1x1NzhhMVx1''@;'; put 'put ''NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1NzcwN1x1NzcwOFx1NzcxYVx1NzcyMlx1Nzcx''@;'; put 'put ''OVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjM3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzddW3ZdXT02MDY3Mit2LFRbNjA2''@;'; put 'put ''NzIrdl09a1syMzddW3ZdKTtmb3Ioa1syMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4MGZcdTk4MTBcdTk4MTFcdTk4MTJcdTk4MTNcdTk4MTRcdTk4MTVcdTk4MTZcdTk4MTdcdTk4MThcdTk4MTlcdTk4MWFcdTk4MWJcdTk4''@;'; put 'put ''MWNcdTk4MWRcdTk4MWVcdTk4MWZcdTk4MjBcdTk4MjFcdTk4MjJcdTk4MjNcdTk4MjRcdTk4MjVcdTk4MjZcdTk4MjdcdTk4MjhcdTk4MjlcdTk4MmFcdTk4MmJcdTk4MmNcdTk4MmRcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzFcdTk4MzJcdTk4MzNcdTk4MzRcdTk4MzVcdTk4MzZcdTk4Mzdc''@;'; put 'put ''dTk4MzhcdTk4MzlcdTk4M2FcdTk4M2JcdTk4M2NcdTk4M2RcdTk4M2VcdTk4M2ZcdTk4NDBcdTk4NDFcdTk4NDJcdTk4NDNcdTk4NDRcdTk4NDVcdTk4NDZcdTk4NDdcdTk4NDhcdTk4NDlcdTk4NGFcdTk4NGJcdTk4NGNcdTk4NGRcdWZmZmRcdTk4NGVcdTk4NGZcdTk4NTBcdTk4NTFcdTk4''@;'; put 'put ''NTJcdTk4NTNcdTk4NTRcdTk4NTVcdTk4NTZcdTk4NTdcdTk4NThcdTk4NTlcdTk4NWFcdTk4NWJcdTk4NWNcdTk4NWRcdTk4NWVcdTk4NWZcdTk4NjBcdTk4NjFcdTk4NjJcdTk4NjNcdTk4NjRcdTk4NjVcdTk4NjZcdTk4NjdcdTk4NjhcdTk4NjlcdTk4NmFcdTk4NmJcdTk4NmNcdTk4NmRc''@;'; put 'put ''dTk4NmVcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3YTBcdTc3YjBcdTc3YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNcdTdmNThcdTdmNjFcdTdmNWZcdThhNDhcdTdm''@;'; put 'put ''NjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZcdTk0ODdcdTk0OGJcdTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0OWNcdTk0YTNcdTk0YTRcdTk0YWJcdTk0YWFc''@;'; put 'put ''dTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjZcdTk0YjdcdTk0YjhcdTk0YjlcdTk0YmFcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzhcdTk0YzlcdTk0Y2FcdTk0Y2JcdTk0Y2NcdTk0Y2RcdTk0Y2VcdTk0ZDBcdTk0ZDFcdTk0ZDJcdTk0ZDVcdTk0ZDZcdTk0''@;'; put 'put ''ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM4XVt2XV09''@;'; put 'put ''NjA5MjgrdixUWzYwOTI4K3ZdPWtbMjM4XVt2XSk7Zm9yKGtbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODZmXHU5ODcwXHU5ODcxXHU5ODcyXHU5ODczXHU5ODc0XHU5ODhiXHU5ODhlXHU5ODkyXHU5ODk1XHU5ODk5XHU5''@;'; put 'put ''OGEzXHU5OGE4XHU5OGE5XHU5OGFhXHU5OGFiXHU5OGFjXHU5OGFkXHU5OGFlXHU5OGFmXHU5OGIwXHU5OGIxXHU5OGIyXHU5OGIzXHU5OGI0XHU5OGI1XHU5OGI2XHU5OGI3XHU5OGI4XHU5OGI5XHU5OGJhXHU5OGJiXHU5OGJjXHU5OGJkXHU5OGJlXHU5OGJmXHU5OGMwXHU5OGMxXHU5OGMy''@;'; put 'put ''XHU5OGMzXHU5OGM0XHU5OGM1XHU5OGM2XHU5OGM3XHU5OGM4XHU5OGM5XHU5OGNhXHU5OGNiXHU5OGNjXHU5OGNkXHU5OGNmXHU5OGQwXHU5OGQ0XHU5OGQ2XHU5OGQ3XHU5OGRiXHU5OGRjXHU5OGRkXHU5OGUwXHU5OGUxXHU5OGUyXHU5OGUzXHU5OGU0XHVmZmZkXHU5OGU1XHU5OGU2XHU5''@;'; put 'put ''OGU5XHU5OGVhXHU5OGViXHU5OGVjXHU5OGVkXHU5OGVlXHU5OGVmXHU5OGYwXHU5OGYxXHU5OGYyXHU5OGYzXHU5OGY0XHU5OGY1XHU5OGY2XHU5OGY3XHU5OGY4XHU5OGY5XHU5OGZhXHU5OGZiXHU5OGZjXHU5OGZkXHU5OGZlXHU5OGZmXHU5OTAwXHU5OTAxXHU5OTAyXHU5OTAzXHU5OTA0''@;'; put 'put ''XHU5OTA1XHU5OTA2XHU5OTA3XHU5NGU5XHU5NGViXHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5NGY5XHU5NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBlXHU5NTBmXHU5NTEyXHU5NTEzXHU5NTE0XHU5''@;'; put 'put ''NTE1XHU5NTE2XHU5NTE4XHU5NTFiXHU5NTFkXHU5NTFlXHU5NTFmXHU5NTIyXHU5NTJhXHU5NTJiXHU5NTI5XHU5NTJjXHU5NTMxXHU5NTMyXHU5NTM0XHU5NTM2XHU5NTM3XHU5NTM4XHU5NTNjXHU5NTNlXHU5NTNmXHU5NTQyXHU5NTM1XHU5NTQ0XHU5NTQ1XHU5NTQ2XHU5NTQ5XHU5NTRj''@;'; put 'put ''XHU5NTRlXHU5NTRmXHU5NTUyXHU5NTUzXHU5NTU0XHU5NTU2XHU5NTU3XHU5NTU4XHU5NTU5XHU5NTViXHU5NTVlXHU5NTVmXHU5NTVkXHU5NTYxXHU5NTYyXHU5NTY0XHU5NTY1XHU5NTY2XHU5NTY3XHU5NTY4XHU5NTY5XHU5NTZhXHU5NTZiXHU5NTZjXHU5NTZmXHU5NTcxXHU5NTcyXHU5''@;'; put 'put ''NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAzXHU3YTAyXHU3YTFlXHU3YTE0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzldW3ZdLmNoYXJDb2RlQXQoMCkmJihz''@;'; put 'put ''ZVtrWzIzOV1bdl1dPTYxMTg0K3YsVFs2MTE4NCt2XT1rWzIzOV1bdl0pO2ZvcihrWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTkwOFx1OTkwOVx1OTkwYVx1OTkwYlx1OTkwY1x1OTkwZVx1OTkwZlx1OTkxMVx1OTkxMlx1''@;'; put 'put ''OTkxM1x1OTkxNFx1OTkxNVx1OTkxNlx1OTkxN1x1OTkxOFx1OTkxOVx1OTkxYVx1OTkxYlx1OTkxY1x1OTkxZFx1OTkxZVx1OTkxZlx1OTkyMFx1OTkyMVx1OTkyMlx1OTkyM1x1OTkyNFx1OTkyNVx1OTkyNlx1OTkyN1x1OTkyOFx1OTkyOVx1OTkyYVx1OTkyYlx1OTkyY1x1OTkyZFx1OTky''@;'; put 'put ''Zlx1OTkzMFx1OTkzMVx1OTkzMlx1OTkzM1x1OTkzNFx1OTkzNVx1OTkzNlx1OTkzN1x1OTkzOFx1OTkzOVx1OTkzYVx1OTkzYlx1OTkzY1x1OTkzZFx1OTkzZVx1OTkzZlx1OTk0MFx1OTk0MVx1OTk0Mlx1OTk0M1x1OTk0NFx1OTk0NVx1OTk0Nlx1OTk0N1x1OTk0OFx1OTk0OVx1ZmZmZFx1''@;'; put 'put ''OTk0YVx1OTk0Ylx1OTk0Y1x1OTk0ZFx1OTk0ZVx1OTk0Zlx1OTk1MFx1OTk1MVx1OTk1Mlx1OTk1M1x1OTk1Nlx1OTk1N1x1OTk1OFx1OTk1OVx1OTk1YVx1OTk1Ylx1OTk1Y1x1OTk1ZFx1OTk1ZVx1OTk1Zlx1OTk2MFx1OTk2MVx1OTk2Mlx1OTk2NFx1OTk2Nlx1OTk3M1x1OTk3OFx1OTk3''@;'; put 'put ''OVx1OTk3Ylx1OTk3ZVx1OTk4Mlx1OTk4M1x1OTk4OVx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOFx1OWUyOVx1OWUyYVx1OWUyYlx1OWUyY1x1OWUzMlx1''@;'; put 'put ''OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1OWU2Nlx1OWU2N1x1OWU2''@;'; put 'put ''OFx1OWU2OVx1OWU2YVx1OWU2Ylx1OWU2Y1x1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1NzVjMlx1NzVkNlx1NzVjZFx1NzVlM1x1NzVlOFx1NzVlNlx1''@;'; put 'put ''NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYwYVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYxOVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQwXVt2XS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoc2Vba1syNDBdW3ZdXT02MTQ0MCt2LFRbNjE0NDArdl09a1syNDBdW3ZdKTtmb3Ioa1syNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5OGNcdTk5OGVcdTk5OWFcdTk5OWJcdTk5OWNcdTk5OWRcdTk5OWVc''@;'; put 'put ''dTk5OWZcdTk5YTBcdTk5YTFcdTk5YTJcdTk5YTNcdTk5YTRcdTk5YTZcdTk5YTdcdTk5YTlcdTk5YWFcdTk5YWJcdTk5YWNcdTk5YWRcdTk5YWVcdTk5YWZcdTk5YjBcdTk5YjFcdTk5YjJcdTk5YjNcdTk5YjRcdTk5YjVcdTk5YjZcdTk5YjdcdTk5YjhcdTk5YjlcdTk5YmFcdTk5YmJcdTk5''@;'; put 'put ''YmNcdTk5YmRcdTk5YmVcdTk5YmZcdTk5YzBcdTk5YzFcdTk5YzJcdTk5YzNcdTk5YzRcdTk5YzVcdTk5YzZcdTk5YzdcdTk5YzhcdTk5YzlcdTk5Y2FcdTk5Y2JcdTk5Y2NcdTk5Y2RcdTk5Y2VcdTk5Y2ZcdTk5ZDBcdTk5ZDFcdTk5ZDJcdTk5ZDNcdTk5ZDRcdTk5ZDVcdTk5ZDZcdTk5ZDdc''@;'; put 'put ''dTk5ZDhcdWZmZmRcdTk5ZDlcdTk5ZGFcdTk5ZGJcdTk5ZGNcdTk5ZGRcdTk5ZGVcdTk5ZGZcdTk5ZTBcdTk5ZTFcdTk5ZTJcdTk5ZTNcdTk5ZTRcdTk5ZTVcdTk5ZTZcdTk5ZTdcdTk5ZThcdTk5ZTlcdTk5ZWFcdTk5ZWJcdTk5ZWNcdTk5ZWRcdTk5ZWVcdTk5ZWZcdTk5ZjBcdTk5ZjFcdTk5''@;'; put 'put ''ZjJcdTk5ZjNcdTk5ZjRcdTk5ZjVcdTk5ZjZcdTk5ZjdcdTk5ZjhcdTk5ZjlcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2NmJcdTc2NmZcdTdmY2Fc''@;'; put 'put ''dTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJcdTg4Y2VcdTg4ZTNcdTg4''@;'; put 'put ''ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgwMTZcdTgwMWNcdTgwMjBc''@;'; put 'put ''dTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4ODNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDFdLmxlbmd0aDsrK3YpNjU1MzMhPT1r''@;'; put 'put ''WzI0MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQxXVt2XV09NjE2OTYrdixUWzYxNjk2K3ZdPWtbMjQxXVt2XSk7Zm9yKGtbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OWZhXHU5OWZiXHU5OWZjXHU5OWZkXHU5OWZl''@;'; put 'put ''XHU5OWZmXHU5YTAwXHU5YTAxXHU5YTAyXHU5YTAzXHU5YTA0XHU5YTA1XHU5YTA2XHU5YTA3XHU5YTA4XHU5YTA5XHU5YTBhXHU5YTBiXHU5YTBjXHU5YTBkXHU5YTBlXHU5YTBmXHU5YTEwXHU5YTExXHU5YTEyXHU5YTEzXHU5YTE0XHU5YTE1XHU5YTE2XHU5YTE3XHU5YTE4XHU5YTE5XHU5''@;'; put 'put ''YTFhXHU5YTFiXHU5YTFjXHU5YTFkXHU5YTFlXHU5YTFmXHU5YTIwXHU5YTIxXHU5YTIyXHU5YTIzXHU5YTI0XHU5YTI1XHU5YTI2XHU5YTI3XHU5YTI4XHU5YTI5XHU5YTJhXHU5YTJiXHU5YTJjXHU5YTJkXHU5YTJlXHU5YTJmXHU5YTMwXHU5YTMxXHU5YTMyXHU5YTMzXHU5YTM0XHU5YTM1''@;'; put 'put ''XHU5YTM2XHU5YTM3XHU5YTM4XHVmZmZkXHU5YTM5XHU5YTNhXHU5YTNiXHU5YTNjXHU5YTNkXHU5YTNlXHU5YTNmXHU5YTQwXHU5YTQxXHU5YTQyXHU5YTQzXHU5YTQ0XHU5YTQ1XHU5YTQ2XHU5YTQ3XHU5YTQ4XHU5YTQ5XHU5YTRhXHU5YTRiXHU5YTRjXHU5YTRkXHU5YTRlXHU5YTRmXHU5''@;'; put 'put ''YTUwXHU5YTUxXHU5YTUyXHU5YTUzXHU5YTU0XHU5YTU1XHU5YTU2XHU5YTU3XHU5YTU4XHU5YTU5XHU5ODg5XHU5ODhjXHU5ODhkXHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4NjRkXHU4NjU0XHU4NjZjXHU4NjZlXHU4Njdm''@;'; put 'put ''XHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFhXHU4NjkzXHU4NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNmXHU4NmI0XHU4NmU5XHU4NmYxXHU4NmYyXHU4''@;'; put 'put ''NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRlXHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4NmY4XHU4NzA4XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4NzQ4XHU4NzM0XHU4NzMxXHU4NzI5XHU4NzM3''@;'; put 'put ''XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4NzhiXHU4NzUzXHU4NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQyXS5sZW5ndGg7''@;'; put 'put ''Kyt2KTY1NTMzIT09a1syNDJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0Ml1bdl1dPTYxOTUyK3YsVFs2MTk1Mit2XT1rWzI0Ml1bdl0pO2ZvcihrWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWE1YVx1OWE1Ylx1OWE1''@;'; put 'put ''Y1x1OWE1ZFx1OWE1ZVx1OWE1Zlx1OWE2MFx1OWE2MVx1OWE2Mlx1OWE2M1x1OWE2NFx1OWE2NVx1OWE2Nlx1OWE2N1x1OWE2OFx1OWE2OVx1OWE2YVx1OWE2Ylx1OWE3Mlx1OWE4M1x1OWE4OVx1OWE4ZFx1OWE4ZVx1OWE5NFx1OWE5NVx1OWE5OVx1OWFhNlx1OWFhOVx1OWFhYVx1OWFhYlx1''@;'; put 'put ''OWFhY1x1OWFhZFx1OWFhZVx1OWFhZlx1OWFiMlx1OWFiM1x1OWFiNFx1OWFiNVx1OWFiOVx1OWFiYlx1OWFiZFx1OWFiZVx1OWFiZlx1OWFjM1x1OWFjNFx1OWFjNlx1OWFjN1x1OWFjOFx1OWFjOVx1OWFjYVx1OWFjZFx1OWFjZVx1OWFjZlx1OWFkMFx1OWFkMlx1OWFkNFx1OWFkNVx1OWFk''@;'; put 'put ''Nlx1OWFkN1x1OWFkOVx1OWFkYVx1OWFkYlx1OWFkY1x1ZmZmZFx1OWFkZFx1OWFkZVx1OWFlMFx1OWFlMlx1OWFlM1x1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOFx1OWFlOVx1OWFlYVx1OWFlY1x1OWFlZVx1OWFmMFx1OWFmMVx1OWFmMlx1OWFmM1x1OWFmNFx1OWFmNVx1OWFmNlx1OWFmN1x1''@;'; put 'put ''OWFmOFx1OWFmYVx1OWFmY1x1OWFmZFx1OWFmZVx1OWFmZlx1OWIwMFx1OWIwMVx1OWIwMlx1OWIwNFx1OWIwNVx1OWIwNlx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdj''@;'; put 'put ''MFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1''@;'; put 'put ''N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2IxZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2Ji''@;'; put 'put ''OFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1r''@;'; put 'put ''WzI0M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDNdW3ZdXT02MjIwOCt2LFRbNjIyMDgrdl09a1syNDNdW3ZdKTtmb3Ioa1syNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTli''@;'; put 'put ''MDdcdTliMDlcdTliMGFcdTliMGJcdTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTFcdTliMTJcdTliMTRcdTliMTVcdTliMTZcdTliMTdcdTliMThcdTliMTlcdTliMWFcdTliMWJcdTliMWNcdTliMWRcdTliMWVcdTliMjBcdTliMjFcdTliMjJcdTliMjRcdTliMjVcdTliMjZcdTliMjdc''@;'; put 'put ''dTliMjhcdTliMjlcdTliMmFcdTliMmJcdTliMmNcdTliMmRcdTliMmVcdTliMzBcdTliMzFcdTliMzNcdTliMzRcdTliMzVcdTliMzZcdTliMzdcdTliMzhcdTliMzlcdTliM2FcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNcdTliNGVcdTliNTBcdTli''@;'; put 'put ''NTJcdTliNTNcdTliNTVcdTliNTZcdTliNTdcdTliNThcdTliNTlcdTliNWFcdWZmZmRcdTliNWJcdTliNWNcdTliNWRcdTliNWVcdTliNWZcdTliNjBcdTliNjFcdTliNjJcdTliNjNcdTliNjRcdTliNjVcdTliNjZcdTliNjdcdTliNjhcdTliNjlcdTliNmFcdTliNmJcdTliNmNcdTliNmRc''@;'; put 'put ''dTliNmVcdTliNmZcdTliNzBcdTliNzFcdTliNzJcdTliNzNcdTliNzRcdTliNzVcdTliNzZcdTliNzdcdTliNzhcdTliNzlcdTliN2FcdTliN2JcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRcdTgxZWNcdTg4NDRcdTgyMjFcdTgy''@;'; put 'put ''MjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdmOWRcdTdmOWZcdTdmYTdcdTdmYWZc''@;'; put 'put ''dTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2VcdTdmZDVcdTdmZTVcdTdmZTFcdTdm''@;'; put 'put ''ZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkxNGZcdTkxNjRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1syNDRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQ0XVt2XV09NjI0NjQrdixUWzYyNDY0K3ZdPWtbMjQ0XVt2XSk7Zm9yKGtbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU5YjdjXHU5YjdkXHU5YjdlXHU5YjdmXHU5YjgwXHU5YjgxXHU5YjgyXHU5YjgzXHU5Yjg0XHU5Yjg1XHU5Yjg2XHU5Yjg3XHU5Yjg4XHU5Yjg5XHU5YjhhXHU5YjhiXHU5YjhjXHU5YjhkXHU5YjhlXHU5YjhmXHU5YjkwXHU5YjkxXHU5YjkyXHU5YjkzXHU5Yjk0XHU5Yjk1''@;'; put 'put ''XHU5Yjk2XHU5Yjk3XHU5Yjk4XHU5Yjk5XHU5YjlhXHU5YjliXHU5YjljXHU5YjlkXHU5YjllXHU5YjlmXHU5YmEwXHU5YmExXHU5YmEyXHU5YmEzXHU5YmE0XHU5YmE1XHU5YmE2XHU5YmE3XHU5YmE4XHU5YmE5XHU5YmFhXHU5YmFiXHU5YmFjXHU5YmFkXHU5YmFlXHU5YmFmXHU5YmIwXHU5''@;'; put 'put ''YmIxXHU5YmIyXHU5YmIzXHU5YmI0XHU5YmI1XHU5YmI2XHU5YmI3XHU5YmI4XHU5YmI5XHU5YmJhXHVmZmZkXHU5YmJiXHU5YmJjXHU5YmJkXHU5YmJlXHU5YmJmXHU5YmMwXHU5YmMxXHU5YmMyXHU5YmMzXHU5YmM0XHU5YmM1XHU5YmM2XHU5YmM3XHU5YmM4XHU5YmM5XHU5YmNhXHU5YmNi''@;'; put 'put ''XHU5YmNjXHU5YmNkXHU5YmNlXHU5YmNmXHU5YmQwXHU5YmQxXHU5YmQyXHU5YmQzXHU5YmQ0XHU5YmQ1XHU5YmQ2XHU5YmQ3XHU5YmQ4XHU5YmQ5XHU5YmRhXHU5YmRiXHU5MTYyXHU5MTYxXHU5MTcwXHU5MTY5XHU5MTZmXHU5MTdkXHU5MTdlXHU5MTcyXHU5MTc0XHU5MTc5XHU5MThjXHU5''@;'; put 'put ''MTg1XHU5MTkwXHU5MThkXHU5MTkxXHU5MWEyXHU5MWEzXHU5MWFhXHU5MWFkXHU5MWFlXHU5MWFmXHU5MWI1XHU5MWI0XHU5MWJhXHU4YzU1XHU5ZTdlXHU4ZGI4XHU4ZGViXHU4ZTA1XHU4ZTU5XHU4ZTY5XHU4ZGI1XHU4ZGJmXHU4ZGJjXHU4ZGJhXHU4ZGM0XHU4ZGQ2XHU4ZGQ3XHU4ZGRh''@;'; put 'put ''XHU4ZGRlXHU4ZGNlXHU4ZGNmXHU4ZGRiXHU4ZGM2XHU4ZGVjXHU4ZGY3XHU4ZGY4XHU4ZGUzXHU4ZGY5XHU4ZGZiXHU4ZGU0XHU4ZTA5XHU4ZGZkXHU4ZTE0XHU4ZTFkXHU4ZTFmXHU4ZTJjXHU4ZTJlXHU4ZTIzXHU4ZTJmXHU4ZTNhXHU4ZTQwXHU4ZTM5XHU4ZTM1XHU4ZTNkXHU4ZTMxXHU4''@;'; put 'put ''ZTQ5XHU4ZTQxXHU4ZTQyXHU4ZTUxXHU4ZTUyXHU4ZTRhXHU4ZTcwXHU4ZTc2XHU4ZTdjXHU4ZTZmXHU4ZTc0XHU4ZTg1XHU4ZThmXHU4ZTk0XHU4ZTkwXHU4ZTljXHU4ZTllXHU4Yzc4XHU4YzgyXHU4YzhhXHU4Yzg1XHU4Yzk4XHU4Yzk0XHU2NTliXHU4OWQ2XHU4OWRlXHU4OWRhXHU4OWRj''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0NV1bdl1dPTYyNzIwK3YsVFs2MjcyMCt2XT1rWzI0NV1bdl0pO2ZvcihrWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWJkY1x1OWJkZFx1OWJkZVx1OWJkZlx1OWJlMFx1OWJlMVx1OWJlMlx1OWJlM1x1OWJlNFx1OWJlNVx1OWJlNlx1OWJlN1x1OWJlOFx1OWJlOVx1OWJlYVx1OWJlYlx1OWJlY1x1OWJlZFx1OWJlZVx1OWJlZlx1OWJmMFx1OWJmMVx1OWJmMlx1OWJm''@;'; put 'put ''M1x1OWJmNFx1OWJmNVx1OWJmNlx1OWJmN1x1OWJmOFx1OWJmOVx1OWJmYVx1OWJmYlx1OWJmY1x1OWJmZFx1OWJmZVx1OWJmZlx1OWMwMFx1OWMwMVx1OWMwMlx1OWMwM1x1OWMwNFx1OWMwNVx1OWMwNlx1OWMwN1x1OWMwOFx1OWMwOVx1OWMwYVx1OWMwYlx1OWMwY1x1OWMwZFx1OWMwZVx1''@;'; put 'put ''OWMwZlx1OWMxMFx1OWMxMVx1OWMxMlx1OWMxM1x1OWMxNFx1OWMxNVx1OWMxNlx1OWMxN1x1OWMxOFx1OWMxOVx1OWMxYVx1ZmZmZFx1OWMxYlx1OWMxY1x1OWMxZFx1OWMxZVx1OWMxZlx1OWMyMFx1OWMyMVx1OWMyMlx1OWMyM1x1OWMyNFx1OWMyNVx1OWMyNlx1OWMyN1x1OWMyOFx1OWMy''@;'; put 'put ''OVx1OWMyYVx1OWMyYlx1OWMyY1x1OWMyZFx1OWMyZVx1OWMyZlx1OWMzMFx1OWMzMVx1OWMzMlx1OWMzM1x1OWMzNFx1OWMzNVx1OWMzNlx1OWMzN1x1OWMzOFx1OWMzOVx1OWMzYVx1OWMzYlx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1''@;'; put 'put ''OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NVx1OWY4Nlx1OWY4N1x1OWY4OFx1OWY4OVx1OWY4YVx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1OTZiZFx1OTZjZVx1OTZkMlx1NzdiZlx1OTZl''@;'; put 'put ''MFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5NVx1OWM5YVx1OWM5Ylx1OWM5ZVx1OWM5Zlx1''@;'; put 'put ''OWNhMFx1OWNhMVx1OWNhMlx1OWNhM1x1OWNhNVx1OWNhNlx1OWNhN1x1OWNhOFx1OWNhOVx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMFx1OWNiMVx1OWNiMlx1OWNiM1x1OWNiNFx1OWNiNVx1OWNiNlx1OWNiN1x1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1OWNjNVx1OWNjNlx1OWNj''@;'; put 'put ''N1x1OWNjYVx1OWNjYlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDZdW3ZdXT02Mjk3Nit2LFRbNjI5NzYrdl09a1syNDZdW3ZdKTtmb3Ioa1syNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljM2NcdTljM2RcdTljM2VcdTljM2ZcdTljNDBcdTljNDFcdTljNDJcdTljNDNcdTljNDRcdTljNDVcdTljNDZcdTljNDdcdTljNDhcdTljNDlcdTljNGFcdTljNGJcdTljNGNcdTljNGRcdTljNGVcdTljNGZcdTljNTBcdTlj''@;'; put 'put ''NTFcdTljNTJcdTljNTNcdTljNTRcdTljNTVcdTljNTZcdTljNTdcdTljNThcdTljNTlcdTljNWFcdTljNWJcdTljNWNcdTljNWRcdTljNWVcdTljNWZcdTljNjBcdTljNjFcdTljNjJcdTljNjNcdTljNjRcdTljNjVcdTljNjZcdTljNjdcdTljNjhcdTljNjlcdTljNmFcdTljNmJcdTljNmNc''@;'; put 'put ''dTljNmRcdTljNmVcdTljNmZcdTljNzBcdTljNzFcdTljNzJcdTljNzNcdTljNzRcdTljNzVcdTljNzZcdTljNzdcdTljNzhcdTljNzlcdTljN2FcdWZmZmRcdTljN2JcdTljN2RcdTljN2VcdTljODBcdTljODNcdTljODRcdTljODlcdTljOGFcdTljOGNcdTljOGZcdTljOTNcdTljOTZcdTlj''@;'; put 'put ''OTdcdTljOThcdTljOTlcdTljOWRcdTljYWFcdTljYWNcdTljYWZcdTljYjlcdTljYmVcdTljYmZcdTljYzBcdTljYzFcdTljYzJcdTljYzhcdTljYzlcdTljZDFcdTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2NcdTljY2RcdTljY2VcdTljY2ZcdTljZDBcdTljZDNcdTljZDRc''@;'; put 'put ''dTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZcdTlhYmFcdTlhYmNcdTlhYzFcdTlhYzBcdTlh''@;'; put 'put ''YzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlhZWRcdTlhZjlcdTliMDhcdTliMGZcdTliMTNc''@;'; put 'put ''dTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFcdTllZWZcdTlmMjJcdTlmMmNcdTlmMmZcdTlm''@;'; put 'put ''MzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQ3XVt2XV09NjMyMzIrdixUWzYzMjMyK3ZdPWtbMjQ3XVt2XSk7Zm9yKGtbMjQ4XT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2UzXHU5Y2U0XHU5Y2U1XHU5Y2U2XHU5Y2U3XHU5Y2U4XHU5Y2U5XHU5Y2VhXHU5Y2ViXHU5Y2VjXHU5Y2VkXHU5Y2VlXHU5Y2VmXHU5Y2YwXHU5Y2YxXHU5Y2YyXHU5Y2YzXHU5Y2Y0XHU5Y2Y1XHU5''@;'; put 'put ''Y2Y2XHU5Y2Y3XHU5Y2Y4XHU5Y2Y5XHU5Y2ZhXHU5Y2ZiXHU5Y2ZjXHU5Y2ZkXHU5Y2ZlXHU5Y2ZmXHU5ZDAwXHU5ZDAxXHU5ZDAyXHU5ZDAzXHU5ZDA0XHU5ZDA1XHU5ZDA2XHU5ZDA3XHU5ZDA4XHU5ZDA5XHU5ZDBhXHU5ZDBiXHU5ZDBjXHU5ZDBkXHU5ZDBlXHU5ZDBmXHU5ZDEwXHU5ZDEx''@;'; put 'put ''XHU5ZDEyXHU5ZDEzXHU5ZDE0XHU5ZDE1XHU5ZDE2XHU5ZDE3XHU5ZDE4XHU5ZDE5XHU5ZDFhXHU5ZDFiXHU5ZDFjXHU5ZDFkXHU5ZDFlXHU5ZDFmXHU5ZDIwXHU5ZDIxXHVmZmZkXHU5ZDIyXHU5ZDIzXHU5ZDI0XHU5ZDI1XHU5ZDI2XHU5ZDI3XHU5ZDI4XHU5ZDI5XHU5ZDJhXHU5ZDJiXHU5''@;'; put 'put ''ZDJjXHU5ZDJkXHU5ZDJlXHU5ZDJmXHU5ZDMwXHU5ZDMxXHU5ZDMyXHU5ZDMzXHU5ZDM0XHU5ZDM1XHU5ZDM2XHU5ZDM3XHU5ZDM4XHU5ZDM5XHU5ZDNhXHU5ZDNiXHU5ZDNjXHU5ZDNkXHU5ZDNlXHU5ZDNmXHU5ZDQwXHU5ZDQxXHU5ZDQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0OF1bdl1dPTYzNDg4K3YsVFs2MzQ4OCt2XT1rWzI0OF1bdl0pO2Zvcihr''@;'; put 'put ''WzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQ0M1x1OWQ0NFx1OWQ0NVx1OWQ0Nlx1OWQ0N1x1OWQ0OFx1OWQ0OVx1OWQ0YVx1OWQ0Ylx1OWQ0Y1x1OWQ0ZFx1OWQ0ZVx1OWQ0Zlx1OWQ1MFx1OWQ1MVx1OWQ1Mlx1OWQ1M1x1''@;'; put 'put ''OWQ1NFx1OWQ1NVx1OWQ1Nlx1OWQ1N1x1OWQ1OFx1OWQ1OVx1OWQ1YVx1OWQ1Ylx1OWQ1Y1x1OWQ1ZFx1OWQ1ZVx1OWQ1Zlx1OWQ2MFx1OWQ2MVx1OWQ2Mlx1OWQ2M1x1OWQ2NFx1OWQ2NVx1OWQ2Nlx1OWQ2N1x1OWQ2OFx1OWQ2OVx1OWQ2YVx1OWQ2Ylx1OWQ2Y1x1OWQ2ZFx1OWQ2ZVx1OWQ2''@;'; put 'put ''Zlx1OWQ3MFx1OWQ3MVx1OWQ3Mlx1OWQ3M1x1OWQ3NFx1OWQ3NVx1OWQ3Nlx1OWQ3N1x1OWQ3OFx1OWQ3OVx1OWQ3YVx1OWQ3Ylx1OWQ3Y1x1OWQ3ZFx1OWQ3ZVx1OWQ3Zlx1OWQ4MFx1OWQ4MVx1ZmZmZFx1OWQ4Mlx1OWQ4M1x1OWQ4NFx1OWQ4NVx1OWQ4Nlx1OWQ4N1x1OWQ4OFx1OWQ4OVx1''@;'; put 'put ''OWQ4YVx1OWQ4Ylx1OWQ4Y1x1OWQ4ZFx1OWQ4ZVx1OWQ4Zlx1OWQ5MFx1OWQ5MVx1OWQ5Mlx1OWQ5M1x1OWQ5NFx1OWQ5NVx1OWQ5Nlx1OWQ5N1x1OWQ5OFx1OWQ5OVx1OWQ5YVx1OWQ5Ylx1OWQ5Y1x1OWQ5ZFx1OWQ5ZVx1OWQ5Zlx1OWRhMFx1OWRhMVx1OWRhMlx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDldW3ZdXT02Mzc0NCt2LFRbNjM3NDQrdl09a1sy''@;'; put 'put ''NDldW3ZdKTtmb3Ioa1syNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkYTNcdTlkYTRcdTlkYTVcdTlkYTZcdTlkYTdcdTlkYThcdTlkYTlcdTlkYWFcdTlkYWJcdTlkYWNcdTlkYWRcdTlkYWVcdTlkYWZcdTlkYjBcdTlkYjFc''@;'; put 'put ''dTlkYjJcdTlkYjNcdTlkYjRcdTlkYjVcdTlkYjZcdTlkYjdcdTlkYjhcdTlkYjlcdTlkYmFcdTlkYmJcdTlkYmNcdTlkYmRcdTlkYmVcdTlkYmZcdTlkYzBcdTlkYzFcdTlkYzJcdTlkYzNcdTlkYzRcdTlkYzVcdTlkYzZcdTlkYzdcdTlkYzhcdTlkYzlcdTlkY2FcdTlkY2JcdTlkY2NcdTlk''@;'; put 'put ''Y2RcdTlkY2VcdTlkY2ZcdTlkZDBcdTlkZDFcdTlkZDJcdTlkZDNcdTlkZDRcdTlkZDVcdTlkZDZcdTlkZDdcdTlkZDhcdTlkZDlcdTlkZGFcdTlkZGJcdTlkZGNcdTlkZGRcdTlkZGVcdTlkZGZcdTlkZTBcdTlkZTFcdWZmZmRcdTlkZTJcdTlkZTNcdTlkZTRcdTlkZTVcdTlkZTZcdTlkZTdc''@;'; put 'put ''dTlkZThcdTlkZTlcdTlkZWFcdTlkZWJcdTlkZWNcdTlkZWRcdTlkZWVcdTlkZWZcdTlkZjBcdTlkZjFcdTlkZjJcdTlkZjNcdTlkZjRcdTlkZjVcdTlkZjZcdTlkZjdcdTlkZjhcdTlkZjlcdTlkZmFcdTlkZmJcdTlkZmNcdTlkZmRcdTlkZmVcdTlkZmZcdTllMDBcdTllMDFcdTllMDJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNTBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI1MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjUwXVt2XV09NjRlMyt2LFRb''@;'; put 'put ''NjRlMyt2XT1rWzI1MF1bdl0pO2ZvcihrWzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWUwM1x1OWUwNFx1OWUwNVx1OWUwNlx1OWUwN1x1OWUwOFx1OWUwOVx1OWUwYVx1OWUwYlx1OWUwY1x1OWUwZFx1OWUwZVx1OWUwZlx1''@;'; put 'put ''OWUxMFx1OWUxMVx1OWUxMlx1OWUxM1x1OWUxNFx1OWUxNVx1OWUxNlx1OWUxN1x1OWUxOFx1OWUxOVx1OWUxYVx1OWUxYlx1OWUxY1x1OWUxZFx1OWUxZVx1OWUyNFx1OWUyN1x1OWUyZVx1OWUzMFx1OWUzNFx1OWUzYlx1OWUzY1x1OWU0MFx1OWU0ZFx1OWU1MFx1OWU1Mlx1OWU1M1x1OWU1''@;'; put 'put ''NFx1OWU1Nlx1OWU1OVx1OWU1ZFx1OWU1Zlx1OWU2MFx1OWU2MVx1OWU2Mlx1OWU2NVx1OWU2ZVx1OWU2Zlx1OWU3Mlx1OWU3NFx1OWU3NVx1OWU3Nlx1OWU3N1x1OWU3OFx1OWU3OVx1OWU3YVx1OWU3Ylx1OWU3Y1x1OWU3ZFx1OWU4MFx1ZmZmZFx1OWU4MVx1OWU4M1x1OWU4NFx1OWU4NVx1''@;'; put 'put ''OWU4Nlx1OWU4OVx1OWU4YVx1OWU4Y1x1OWU4ZFx1OWU4ZVx1OWU4Zlx1OWU5MFx1OWU5MVx1OWU5NFx1OWU5NVx1OWU5Nlx1OWU5N1x1OWU5OFx1OWU5OVx1OWU5YVx1OWU5Ylx1OWU5Y1x1OWU5ZVx1OWVhMFx1OWVhMVx1OWVhMlx1OWVhM1x1OWVhNFx1OWVhNVx1OWVhN1x1OWVhOFx1OWVh''@;'; put 'put ''OVx1OWVhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI1MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjUxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNTFdW3Zd''@;'; put 'put ''XT02NDI1Nit2LFRbNjQyNTYrdl09a1syNTFdW3ZdKTtmb3Ioa1syNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTllYWJcdTllYWNcdTllYWRcdTllYWVcdTllYWZcdTllYjBcdTllYjFcdTllYjJcdTllYjNcdTllYjVcdTllYjZc''@;'; put 'put ''dTllYjdcdTllYjlcdTllYmFcdTllYmNcdTllYmZcdTllYzBcdTllYzFcdTllYzJcdTllYzNcdTllYzVcdTllYzZcdTllYzdcdTllYzhcdTllY2FcdTllY2JcdTllY2NcdTllZDBcdTllZDJcdTllZDNcdTllZDVcdTllZDZcdTllZDdcdTllZDlcdTllZGFcdTllZGVcdTllZTFcdTllZTNcdTll''@;'; put 'put ''ZTRcdTllZTZcdTllZThcdTllZWJcdTllZWNcdTllZWRcdTllZWVcdTllZjBcdTllZjFcdTllZjJcdTllZjNcdTllZjRcdTllZjVcdTllZjZcdTllZjdcdTllZjhcdTllZmFcdTllZmRcdTllZmZcdTlmMDBcdTlmMDFcdTlmMDJcdTlmMDNcdTlmMDRcdTlmMDVcdWZmZmRcdTlmMDZcdTlmMDdc''@;'; put 'put ''dTlmMDhcdTlmMDlcdTlmMGFcdTlmMGNcdTlmMGZcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTVcdTlmMTZcdTlmMThcdTlmMWFcdTlmMWJcdTlmMWNcdTlmMWRcdTlmMWVcdTlmMWZcdTlmMjFcdTlmMjNcdTlmMjRcdTlmMjVcdTlmMjZcdTlmMjdcdTlmMjhcdTlmMjlcdTlmMmFcdTlmMmJcdTlm''@;'; put 'put ''MmRcdTlmMmVcdTlmMzBcdTlmMzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNTJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI1Ml1bdl0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KHNlW2tbMjUyXVt2XV09NjQ1MTIrdixUWzY0NTEyK3ZdPWtbMjUyXVt2XSk7Zm9yKGtbMjUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjMyXHU5ZjMzXHU5ZjM0XHU5ZjM1XHU5ZjM2XHU5ZjM4XHU5ZjNhXHU5ZjNjXHU5ZjNm''@;'; put 'put ''XHU5ZjQwXHU5ZjQxXHU5ZjQyXHU5ZjQzXHU5ZjQ1XHU5ZjQ2XHU5ZjQ3XHU5ZjQ4XHU5ZjQ5XHU5ZjRhXHU5ZjRiXHU5ZjRjXHU5ZjRkXHU5ZjRlXHU5ZjRmXHU5ZjUyXHU5ZjUzXHU5ZjU0XHU5ZjU1XHU5ZjU2XHU5ZjU3XHU5ZjU4XHU5ZjU5XHU5ZjVhXHU5ZjViXHU5ZjVjXHU5ZjVkXHU5''@;'; put 'put ''ZjVlXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjYyXHU5ZjYzXHU5ZjY0XHU5ZjY1XHU5ZjY2XHU5ZjY3XHU5ZjY4XHU5ZjY5XHU5ZjZhXHU5ZjZiXHU5ZjZjXHU5ZjZkXHU5ZjZlXHU5ZjZmXHU5ZjcwXHU5ZjcxXHU5ZjcyXHU5ZjczXHU5Zjc0XHU5Zjc1XHU5Zjc2XHU5Zjc3XHU5Zjc4XHVmZmZk''@;'; put 'put ''XHU5Zjc5XHU5ZjdhXHU5ZjdiXHU5ZjdjXHU5ZjdkXHU5ZjdlXHU5ZjgxXHU5ZjgyXHU5ZjhkXHU5ZjhlXHU5ZjhmXHU5ZjkwXHU5ZjkxXHU5ZjkyXHU5ZjkzXHU5Zjk0XHU5Zjk1XHU5Zjk2XHU5Zjk3XHU5Zjk4XHU5ZjljXHU5ZjlkXHU5ZjllXHU5ZmExXHU5ZmEyXHU5ZmEzXHU5ZmE0XHU5''@;'; put 'put ''ZmE1XHVmOTJjXHVmOTc5XHVmOTk1XHVmOWU3XHVmOWYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjUzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNTNdW3ZdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihzZVtrWzI1M11bdl1dPTY0NzY4K3YsVFs2NDc2OCt2XT1rWzI1M11bdl0pO2ZvcihrWzI1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmEwY1x1ZmEwZFx1ZmEwZVx1ZmEwZlx1ZmExMVx1ZmExM1x1ZmEx''@;'; put 'put ''NFx1ZmExOFx1ZmExZlx1ZmEyMFx1ZmEyMVx1ZmEyM1x1ZmEyNFx1ZmEyN1x1ZmEyOFx1ZmEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI1NF0ubGVuZ3RoOysrdik2NTUzMyE9''@;'; put 'put ''PWtbMjU0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNTRdW3ZdXT02NTAyNCt2LFRbNjUwMjQrdl09a1syNTRdW3ZdKTtyZXR1cm57ZW5jOnNlLGRlYzpUfX0oKSx6ZVs5NDldPWZ1bmN0aW9uKCl7dmFyIHYsVD1bXSxzZT17fSxrPVtdO2ZvcihrWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRc''@;'; put 'put ''eDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJj''@;'; put 'put ''ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzBdLmxl''@;'; put 'put ''bmd0aDsrK3YpNjU1MzMhPT1rWzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzBdW3ZdXT0wK3YsVFswK3ZdPWtbMF1bdl0pO2ZvcihrWzEyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMwMlx1YWMwM1x1YWMwNVx1''@;'; put 'put ''YWMwNlx1YWMwYlx1YWMwY1x1YWMwZFx1YWMwZVx1YWMwZlx1YWMxOFx1YWMxZVx1YWMxZlx1YWMyMVx1YWMyMlx1YWMyM1x1YWMyNVx1YWMyNlx1YWMyN1x1YWMyOFx1YWMyOVx1YWMyYVx1YWMyYlx1YWMyZVx1YWMzMlx1YWMzM1x1YWMzNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1YWMzNVx1YWMzNlx1YWMzN1x1YWMzYVx1YWMzYlx1YWMzZFx1YWMzZVx1YWMzZlx1YWM0MVx1YWM0Mlx1YWM0M1x1YWM0NFx1YWM0NVx1YWM0Nlx1YWM0N1x1YWM0OFx1YWM0OVx1YWM0YVx1YWM0Y1x1YWM0ZVx1YWM0Zlx1YWM1MFx1YWM1MVx1YWM1Mlx1YWM1M1x1YWM1NVx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWM1Nlx1YWM1N1x1YWM1OVx1YWM1YVx1YWM1Ylx1YWM1ZFx1YWM1ZVx1YWM1Zlx1YWM2MFx1YWM2MVx1YWM2Mlx1YWM2M1x1YWM2NFx1YWM2NVx1YWM2Nlx1YWM2N1x1YWM2OFx1YWM2OVx1YWM2YVx1YWM2Ylx1YWM2Y1x1YWM2''@;'; put 'put ''ZFx1YWM2ZVx1YWM2Zlx1YWM3Mlx1YWM3M1x1YWM3NVx1YWM3Nlx1YWM3OVx1YWM3Ylx1YWM3Y1x1YWM3ZFx1YWM3ZVx1YWM3Zlx1YWM4Mlx1YWM4N1x1YWM4OFx1YWM4ZFx1YWM4ZVx1YWM4Zlx1YWM5MVx1YWM5Mlx1YWM5M1x1YWM5NVx1YWM5Nlx1YWM5N1x1YWM5OFx1YWM5OVx1YWM5YVx1''@;'; put 'put ''YWM5Ylx1YWM5ZVx1YWNhMlx1YWNhM1x1YWNhNFx1YWNhNVx1YWNhNlx1YWNhN1x1YWNhYlx1YWNhZFx1YWNhZVx1YWNiMVx1YWNiMlx1YWNiM1x1YWNiNFx1YWNiNVx1YWNiNlx1YWNiN1x1YWNiYVx1YWNiZVx1YWNiZlx1YWNjMFx1YWNjMlx1YWNjM1x1YWNjNVx1YWNjNlx1YWNjN1x1YWNj''@;'; put 'put ''OVx1YWNjYVx1YWNjYlx1YWNjZFx1YWNjZVx1YWNjZlx1YWNkMFx1YWNkMVx1YWNkMlx1YWNkM1x1YWNkNFx1YWNkNlx1YWNkOFx1YWNkOVx1YWNkYVx1YWNkYlx1YWNkY1x1YWNkZFx1YWNkZVx1YWNkZlx1YWNlMlx1YWNlM1x1YWNlNVx1YWNlNlx1YWNlOVx1YWNlYlx1YWNlZFx1YWNlZVx1''@;'; put 'put ''YWNmMlx1YWNmNFx1YWNmN1x1YWNmOFx1YWNmOVx1YWNmYVx1YWNmYlx1YWNmZVx1YWNmZlx1YWQwMVx1YWQwMlx1YWQwM1x1YWQwNVx1YWQwN1x1YWQwOFx1YWQwOVx1YWQwYVx1YWQwYlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEyOV0ubGVu''@;'; put 'put ''Z3RoOysrdik2NTUzMyE9PWtbMTI5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMjldW3ZdXT0zMzAyNCt2LFRbMzMwMjQrdl09a1sxMjldW3ZdKTtmb3Ioa1sxMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkMTRc''@;'; put 'put ''dWFkMTVcdWFkMTZcdWFkMTdcdWFkMTlcdWFkMWFcdWFkMWJcdWFkMWRcdWFkMWVcdWFkMWZcdWFkMjFcdWFkMjJcdWFkMjNcdWFkMjRcdWFkMjVcdWFkMjZcdWFkMjdcdWFkMjhcdWFkMmFcdWFkMmJcdWFkMmVcdWFkMmZcdWFkMzBcdWFkMzFcdWFkMzJcdWFkMzNcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkMzZcdWFkMzdcdWFkMzlcdWFkM2FcdWFkM2JcdWFkM2RcdWFkM2VcdWFkM2ZcdWFkNDBcdWFkNDFcdWFkNDJcdWFkNDNcdWFkNDZcdWFkNDhcdWFkNGFcdWFkNGJcdWFkNGNcdWFkNGRcdWFkNGVcdWFkNGZcdWFkNTFcdWFkNTJcdWFkNTNcdWFkNTVc''@;'; put 'put ''dWFkNTZcdWFkNTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkNTlcdWFkNWFcdWFkNWJcdWFkNWNcdWFkNWRcdWFkNWVcdWFkNWZcdWFkNjBcdWFkNjJcdWFkNjRcdWFkNjVcdWFkNjZcdWFkNjdcdWFkNjhcdWFkNjlcdWFkNmFcdWFkNmJcdWFkNmVcdWFkNmZcdWFk''@;'; put 'put ''NzFcdWFkNzJcdWFkNzdcdWFkNzhcdWFkNzlcdWFkN2FcdWFkN2VcdWFkODBcdWFkODNcdWFkODRcdWFkODVcdWFkODZcdWFkODdcdWFkOGFcdWFkOGJcdWFkOGRcdWFkOGVcdWFkOGZcdWFkOTFcdWFkOTJcdWFkOTNcdWFkOTRcdWFkOTVcdWFkOTZcdWFkOTdcdWFkOThcdWFkOTlcdWFkOWFc''@;'; put 'put ''dWFkOWJcdWFkOWVcdWFkOWZcdWFkYTBcdWFkYTFcdWFkYTJcdWFkYTNcdWFkYTVcdWFkYTZcdWFkYTdcdWFkYThcdWFkYTlcdWFkYWFcdWFkYWJcdWFkYWNcdWFkYWRcdWFkYWVcdWFkYWZcdWFkYjBcdWFkYjFcdWFkYjJcdWFkYjNcdWFkYjRcdWFkYjVcdWFkYjZcdWFkYjhcdWFkYjlcdWFk''@;'; put 'put ''YmFcdWFkYmJcdWFkYmNcdWFkYmRcdWFkYmVcdWFkYmZcdWFkYzJcdWFkYzNcdWFkYzVcdWFkYzZcdWFkYzdcdWFkYzlcdWFkY2FcdWFkY2JcdWFkY2NcdWFkY2RcdWFkY2VcdWFkY2ZcdWFkZDJcdWFkZDRcdWFkZDVcdWFkZDZcdWFkZDdcdWFkZDhcdWFkZDlcdWFkZGFcdWFkZGJcdWFkZGRc''@;'; put 'put ''dWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTVcdWFkZTZcdWFkZTdcdWFkZThcdWFkZTlcdWFkZWFcdWFkZWJcdWFkZWNcdWFkZWRcdWFkZWVcdWFkZWZcdWFkZjBcdWFkZjFcdWFkZjJcdWFkZjNcdWFkZjRcdWFkZjVcdWFkZjZcdWFkZjdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7''@;'; put 'put ''diE9a1sxMzBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzMF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTMwXVt2XV09MzMyODArdixUWzMzMjgwK3ZdPWtbMTMwXVt2XSk7Zm9yKGtbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVhZGZhXHVhZGZiXHVhZGZkXHVhZGZlXHVhZTAyXHVhZTAzXHVhZTA0XHVhZTA1XHVhZTA2XHVhZTA3XHVhZTBhXHVhZTBjXHVhZTBlXHVhZTBmXHVhZTEwXHVhZTExXHVhZTEyXHVhZTEzXHVhZTE1XHVhZTE2XHVhZTE3XHVhZTE4XHVhZTE5XHVhZTFhXHVhZTFiXHVhZTFjXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTFkXHVhZTFlXHVhZTFmXHVhZTIwXHVhZTIxXHVhZTIyXHVhZTIzXHVhZTI0XHVhZTI1XHVhZTI2XHVhZTI3XHVhZTI4XHVhZTI5XHVhZTJhXHVhZTJiXHVhZTJjXHVhZTJkXHVhZTJlXHVhZTJmXHVhZTMyXHVhZTMzXHVhZTM1''@;'; put 'put ''XHVhZTM2XHVhZTM5XHVhZTNiXHVhZTNjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTNkXHVhZTNlXHVhZTNmXHVhZTQyXHVhZTQ0XHVhZTQ3XHVhZTQ4XHVhZTQ5XHVhZTRiXHVhZTRmXHVhZTUxXHVhZTUyXHVhZTUzXHVhZTU1XHVhZTU3XHVhZTU4XHVhZTU5XHVh''@;'; put 'put ''ZTVhXHVhZTViXHVhZTVlXHVhZTYyXHVhZTYzXHVhZTY0XHVhZTY2XHVhZTY3XHVhZTZhXHVhZTZiXHVhZTZkXHVhZTZlXHVhZTZmXHVhZTcxXHVhZTcyXHVhZTczXHVhZTc0XHVhZTc1XHVhZTc2XHVhZTc3XHVhZTdhXHVhZTdlXHVhZTdmXHVhZTgwXHVhZTgxXHVhZTgyXHVhZTgzXHVhZTg2''@;'; put 'put ''XHVhZTg3XHVhZTg4XHVhZTg5XHVhZThhXHVhZThiXHVhZThkXHVhZThlXHVhZThmXHVhZTkwXHVhZTkxXHVhZTkyXHVhZTkzXHVhZTk0XHVhZTk1XHVhZTk2XHVhZTk3XHVhZTk4XHVhZTk5XHVhZTlhXHVhZTliXHVhZTljXHVhZTlkXHVhZTllXHVhZTlmXHVhZWEwXHVhZWExXHVhZWEyXHVh''@;'; put 'put ''ZWEzXHVhZWE0XHVhZWE1XHVhZWE2XHVhZWE3XHVhZWE4XHVhZWE5XHVhZWFhXHVhZWFiXHVhZWFjXHVhZWFkXHVhZWFlXHVhZWFmXHVhZWIwXHVhZWIxXHVhZWIyXHVhZWIzXHVhZWI0XHVhZWI1XHVhZWI2XHVhZWI3XHVhZWI4XHVhZWI5XHVhZWJhXHVhZWJiXHVhZWJmXHVhZWMxXHVhZWMy''@;'; put 'put ''XHVhZWMzXHVhZWM1XHVhZWM2XHVhZWM3XHVhZWM4XHVhZWM5XHVhZWNhXHVhZWNiXHVhZWNlXHVhZWQyXHVhZWQzXHVhZWQ0XHVhZWQ1XHVhZWQ2XHVhZWQ3XHVhZWRhXHVhZWRiXHVhZWRkXHVhZWRlXHVhZWRmXHVhZWUwXHVhZWUxXHVhZWUyXHVhZWUzXHVhZWU0XHVhZWU1XHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksdj0wO3YhPWtbMTMxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzMV1bdl1dPTMzNTM2K3YsVFszMzUzNit2XT1rWzEzMV1bdl0pO2ZvcihrWzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZVx1YWVlZlx1YWVmMFx1YWVmMVx1YWVmMlx1YWVmM1x1YWVmNVx1YWVmNlx1YWVmN1x1YWVmOVx1YWVmYVx1YWVmYlx1YWVmZFx1YWVmZVx1YWVmZlx1YWYwMFx1YWYwMVx1YWYwMlx1YWYwM1x1''@;'; put 'put ''YWYwNFx1YWYwNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYwNlx1YWYwOVx1YWYwYVx1YWYwYlx1YWYwY1x1YWYwZVx1YWYwZlx1YWYxMVx1YWYxMlx1YWYxM1x1YWYxNFx1YWYxNVx1YWYxNlx1YWYxN1x1YWYxOFx1YWYxOVx1YWYxYVx1YWYxYlx1YWYxY1x1YWYx''@;'; put 'put ''ZFx1YWYxZVx1YWYxZlx1YWYyMFx1YWYyMVx1YWYyMlx1YWYyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYyNFx1YWYyNVx1YWYyNlx1YWYyN1x1YWYyOFx1YWYyOVx1YWYyYVx1YWYyYlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNVx1YWYzNlx1YWYzN1x1''@;'; put 'put ''YWYzOFx1YWYzOVx1YWYzYVx1YWYzYlx1YWYzZVx1YWY0MFx1YWY0NFx1YWY0NVx1YWY0Nlx1YWY0N1x1YWY0YVx1YWY0Ylx1YWY0Y1x1YWY0ZFx1YWY0ZVx1YWY0Zlx1YWY1MVx1YWY1Mlx1YWY1M1x1YWY1NFx1YWY1NVx1YWY1Nlx1YWY1N1x1YWY1OFx1YWY1OVx1YWY1YVx1YWY1Ylx1YWY1''@;'; put 'put ''ZVx1YWY1Zlx1YWY2MFx1YWY2MVx1YWY2Mlx1YWY2M1x1YWY2Nlx1YWY2N1x1YWY2OFx1YWY2OVx1YWY2YVx1YWY2Ylx1YWY2Y1x1YWY2ZFx1YWY2ZVx1YWY2Zlx1YWY3MFx1YWY3MVx1YWY3Mlx1YWY3M1x1YWY3NFx1YWY3NVx1YWY3Nlx1YWY3N1x1YWY3OFx1YWY3YVx1YWY3Ylx1YWY3Y1x1''@;'; put 'put ''YWY3ZFx1YWY3ZVx1YWY3Zlx1YWY4MVx1YWY4Mlx1YWY4M1x1YWY4NVx1YWY4Nlx1YWY4N1x1YWY4OVx1YWY4YVx1YWY4Ylx1YWY4Y1x1YWY4ZFx1YWY4ZVx1YWY4Zlx1YWY5Mlx1YWY5M1x1YWY5NFx1YWY5Nlx1YWY5N1x1YWY5OFx1YWY5OVx1YWY5YVx1YWY5Ylx1YWY5ZFx1YWY5ZVx1YWY5''@;'; put 'put ''Zlx1YWZhMFx1YWZhMVx1YWZhMlx1YWZhM1x1YWZhNFx1YWZhNVx1YWZhNlx1YWZhN1x1YWZhOFx1YWZhOVx1YWZhYVx1YWZhYlx1YWZhY1x1YWZhZFx1YWZhZVx1YWZhZlx1YWZiMFx1YWZiMVx1YWZiMlx1YWZiM1x1YWZiNFx1YWZiNVx1YWZiNlx1YWZiN1x1YWZiYVx1YWZiYlx1YWZiZFx1''@;'; put 'put ''YWZiZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzMl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTMyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzJdW3ZdXT0zMzc5Mit2LFRbMzM3OTIrdl09a1sxMzJdW3ZdKTtmb3Ioa1sxMzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmYmZcdWFmYzFcdWFmYzJcdWFmYzNcdWFmYzRcdWFmYzVcdWFmYzZcdWFmY2FcdWFmY2NcdWFmY2ZcdWFmZDBcdWFmZDFcdWFmZDJcdWFmZDNcdWFmZDVcdWFmZDZcdWFmZDdcdWFmZDhcdWFmZDlcdWFmZGFcdWFmZGJcdWFmZGRc''@;'; put 'put ''dWFmZGVcdWFmZGZcdWFmZTBcdWFmZTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmZTJcdWFmZTNcdWFmZTRcdWFmZTVcdWFmZTZcdWFmZTdcdWFmZWFcdWFmZWJcdWFmZWNcdWFmZWRcdWFmZWVcdWFmZWZcdWFmZjJcdWFmZjNcdWFmZjVcdWFmZjZcdWFmZjdcdWFm''@;'; put 'put ''ZjlcdWFmZmFcdWFmZmJcdWFmZmNcdWFmZmRcdWFmZmVcdWFmZmZcdWIwMDJcdWIwMDNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIwMDVcdWIwMDZcdWIwMDdcdWIwMDhcdWIwMDlcdWIwMGFcdWIwMGJcdWIwMGRcdWIwMGVcdWIwMGZcdWIwMTFcdWIwMTJcdWIwMTNc''@;'; put 'put ''dWIwMTVcdWIwMTZcdWIwMTdcdWIwMThcdWIwMTlcdWIwMWFcdWIwMWJcdWIwMWVcdWIwMWZcdWIwMjBcdWIwMjFcdWIwMjJcdWIwMjNcdWIwMjRcdWIwMjVcdWIwMjZcdWIwMjdcdWIwMjlcdWIwMmFcdWIwMmJcdWIwMmNcdWIwMmRcdWIwMmVcdWIwMmZcdWIwMzBcdWIwMzFcdWIwMzJcdWIw''@;'; put 'put ''MzNcdWIwMzRcdWIwMzVcdWIwMzZcdWIwMzdcdWIwMzhcdWIwMzlcdWIwM2FcdWIwM2JcdWIwM2NcdWIwM2RcdWIwM2VcdWIwM2ZcdWIwNDBcdWIwNDFcdWIwNDJcdWIwNDNcdWIwNDZcdWIwNDdcdWIwNDlcdWIwNGJcdWIwNGRcdWIwNGZcdWIwNTBcdWIwNTFcdWIwNTJcdWIwNTZcdWIwNThc''@;'; put 'put ''dWIwNWFcdWIwNWJcdWIwNWNcdWIwNWVcdWIwNWZcdWIwNjBcdWIwNjFcdWIwNjJcdWIwNjNcdWIwNjRcdWIwNjVcdWIwNjZcdWIwNjdcdWIwNjhcdWIwNjlcdWIwNmFcdWIwNmJcdWIwNmNcdWIwNmRcdWIwNmVcdWIwNmZcdWIwNzBcdWIwNzFcdWIwNzJcdWIwNzNcdWIwNzRcdWIwNzVcdWIw''@;'; put 'put ''NzZcdWIwNzdcdWIwNzhcdWIwNzlcdWIwN2FcdWIwN2JcdWIwN2VcdWIwN2ZcdWIwODFcdWIwODJcdWIwODNcdWIwODVcdWIwODZcdWIwODdcdWIwODhcdWIwODlcdWIwOGFcdWIwOGJcdWIwOGVcdWIwOTBcdWIwOTJcdWIwOTNcdWIwOTRcdWIwOTVcdWIwOTZcdWIwOTdcdWIwOWJcdWIwOWRc''@;'; put 'put ''dWIwOWVcdWIwYTNcdWIwYTRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzM11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTMzXVt2XV09MzQwNDgrdixUWzM0MDQ4K3ZdPWtbMTMzXVt2XSk7Zm9yKGtbMTM0XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGE1XHViMGE2XHViMGE3XHViMGFhXHViMGIwXHViMGIyXHViMGI2XHViMGI3XHViMGI5XHViMGJhXHViMGJiXHViMGJkXHViMGJlXHViMGJmXHViMGMwXHViMGMxXHViMGMyXHViMGMzXHViMGM2XHViMGNh''@;'; put 'put ''XHViMGNiXHViMGNjXHViMGNkXHViMGNlXHViMGNmXHViMGQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGQzXHViMGQ1XHViMGQ2XHViMGQ3XHViMGQ5XHViMGRhXHViMGRiXHViMGRjXHViMGRkXHViMGRlXHViMGRmXHViMGUxXHViMGUyXHViMGUzXHViMGU0XHVi''@;'; put 'put ''MGU2XHViMGU3XHViMGU4XHViMGU5XHViMGVhXHViMGViXHViMGVjXHViMGVkXHViMGVlXHViMGVmXHViMGYwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGYxXHViMGYyXHViMGYzXHViMGY0XHViMGY1XHViMGY2XHViMGY3XHViMGY4XHViMGY5XHViMGZhXHViMGZi''@;'; put 'put ''XHViMGZjXHViMGZkXHViMGZlXHViMGZmXHViMTAwXHViMTAxXHViMTAyXHViMTAzXHViMTA0XHViMTA1XHViMTA2XHViMTA3XHViMTBhXHViMTBkXHViMTBlXHViMTBmXHViMTExXHViMTE0XHViMTE1XHViMTE2XHViMTE3XHViMTFhXHViMTFlXHViMTFmXHViMTIwXHViMTIxXHViMTIyXHVi''@;'; put 'put ''MTI2XHViMTI3XHViMTI5XHViMTJhXHViMTJiXHViMTJkXHViMTJlXHViMTJmXHViMTMwXHViMTMxXHViMTMyXHViMTMzXHViMTM2XHViMTNhXHViMTNiXHViMTNjXHViMTNkXHViMTNlXHViMTNmXHViMTQyXHViMTQzXHViMTQ1XHViMTQ2XHViMTQ3XHViMTQ5XHViMTRhXHViMTRiXHViMTRj''@;'; put 'put ''XHViMTRkXHViMTRlXHViMTRmXHViMTUyXHViMTUzXHViMTU2XHViMTU3XHViMTU5XHViMTVhXHViMTViXHViMTVkXHViMTVlXHViMTVmXHViMTYxXHViMTYyXHViMTYzXHViMTY0XHViMTY1XHViMTY2XHViMTY3XHViMTY4XHViMTY5XHViMTZhXHViMTZiXHViMTZjXHViMTZkXHViMTZlXHVi''@;'; put 'put ''MTZmXHViMTcwXHViMTcxXHViMTcyXHViMTczXHViMTc0XHViMTc1XHViMTc2XHViMTc3XHViMTdhXHViMTdiXHViMTdkXHViMTdlXHViMTdmXHViMTgxXHViMTgzXHViMTg0XHViMTg1XHViMTg2XHViMTg3XHViMThhXHViMThjXHViMThlXHViMThmXHViMTkwXHViMTkxXHViMTk1XHViMTk2''@;'; put 'put ''XHViMTk3XHViMTk5XHViMTlhXHViMTliXHViMTlkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTM0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzNF1bdl1dPTM0MzA0K3YsVFszNDMwNCt2XT1rWzEzNF1bdl0pO2ZvcihrWzEzNV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjE5ZVx1YjE5Zlx1YjFhMFx1YjFhMVx1YjFhMlx1YjFhM1x1YjFhNFx1YjFhNVx1YjFhNlx1YjFhN1x1YjFhOVx1YjFhYVx1YjFhYlx1YjFhY1x1YjFhZFx1YjFhZVx1YjFhZlx1YjFi''@;'; put 'put ''MFx1YjFiMVx1YjFiMlx1YjFiM1x1YjFiNFx1YjFiNVx1YjFiNlx1YjFiN1x1YjFiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFiOVx1YjFiYVx1YjFiYlx1YjFiY1x1YjFiZFx1YjFiZVx1YjFiZlx1YjFjMFx1YjFjMVx1YjFjMlx1YjFjM1x1YjFjNFx1YjFjNVx1''@;'; put 'put ''YjFjNlx1YjFjN1x1YjFjOFx1YjFjOVx1YjFjYVx1YjFjYlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFkNlx1YjFkN1x1YjFkOFx1YjFkOVx1YjFkYVx1YjFkYlx1YjFkZVx1YjFlMFx1YjFl''@;'; put 'put ''MVx1YjFlMlx1YjFlM1x1YjFlNFx1YjFlNVx1YjFlNlx1YjFlN1x1YjFlYVx1YjFlYlx1YjFlZFx1YjFlZVx1YjFlZlx1YjFmMVx1YjFmMlx1YjFmM1x1YjFmNFx1YjFmNVx1YjFmNlx1YjFmN1x1YjFmOFx1YjFmYVx1YjFmY1x1YjFmZVx1YjFmZlx1YjIwMFx1YjIwMVx1YjIwMlx1YjIwM1x1''@;'; put 'put ''YjIwNlx1YjIwN1x1YjIwOVx1YjIwYVx1YjIwZFx1YjIwZVx1YjIwZlx1YjIxMFx1YjIxMVx1YjIxMlx1YjIxM1x1YjIxNlx1YjIxOFx1YjIxYVx1YjIxYlx1YjIxY1x1YjIxZFx1YjIxZVx1YjIxZlx1YjIyMVx1YjIyMlx1YjIyM1x1YjIyNFx1YjIyNVx1YjIyNlx1YjIyN1x1YjIyOFx1YjIy''@;'; put 'put ''OVx1YjIyYVx1YjIyYlx1YjIyY1x1YjIyZFx1YjIyZVx1YjIyZlx1YjIzMFx1YjIzMVx1YjIzMlx1YjIzM1x1YjIzNVx1YjIzNlx1YjIzN1x1YjIzOFx1YjIzOVx1YjIzYVx1YjIzYlx1YjIzZFx1YjIzZVx1YjIzZlx1YjI0MFx1YjI0MVx1YjI0Mlx1YjI0M1x1YjI0NFx1YjI0NVx1YjI0Nlx1''@;'; put 'put ''YjI0N1x1YjI0OFx1YjI0OVx1YjI0YVx1YjI0Ylx1YjI0Y1x1YjI0ZFx1YjI0ZVx1YjI0Zlx1YjI1MFx1YjI1MVx1YjI1Mlx1YjI1M1x1YjI1NFx1YjI1NVx1YjI1Nlx1YjI1N1x1YjI1OVx1YjI1YVx1YjI1Ylx1YjI1ZFx1YjI1ZVx1YjI1Zlx1YjI2MVx1YjI2Mlx1YjI2M1x1YjI2NFx1YjI2''@;'; put 'put ''NVx1YjI2Nlx1YjI2N1x1YjI2YVx1YjI2Ylx1YjI2Y1x1YjI2ZFx1YjI2ZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzNV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTM1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxMzVdW3ZdXT0zNDU2MCt2LFRbMzQ1NjArdl09a1sxMzVdW3ZdKTtm''@;'; put 'put ''b3Ioa1sxMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyNmZcdWIyNzBcdWIyNzFcdWIyNzJcdWIyNzNcdWIyNzZcdWIyNzdcdWIyNzhcdWIyNzlcdWIyN2FcdWIyN2JcdWIyN2RcdWIyN2VcdWIyN2ZcdWIyODBcdWIy''@;'; put 'put ''ODFcdWIyODJcdWIyODNcdWIyODZcdWIyODdcdWIyODhcdWIyOGFcdWIyOGJcdWIyOGNcdWIyOGRcdWIyOGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyOGZcdWIyOTJcdWIyOTNcdWIyOTVcdWIyOTZcdWIyOTdcdWIyOWJcdWIyOWNcdWIyOWRcdWIyOWVcdWIyOWZc''@;'; put 'put ''dWIyYTJcdWIyYTRcdWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIyYjNcdWIyYjVcdWIyYjZcdWIyYjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyYjhcdWIyYjlcdWIyYmFcdWIyYmJcdWIyYmNcdWIyYmRcdWIy''@;'; put 'put ''YmVcdWIyYmZcdWIyYzBcdWIyYzFcdWIyYzJcdWIyYzNcdWIyYzRcdWIyYzVcdWIyYzZcdWIyYzdcdWIyY2FcdWIyY2JcdWIyY2RcdWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDNcdWIyZDRcdWIyZDVcdWIyZDZcdWIyZDdcdWIyZGFcdWIyZGNcdWIyZGVcdWIyZGZcdWIyZTBcdWIyZTFcdWIyZTNc''@;'; put 'put ''dWIyZTdcdWIyZTlcdWIyZWFcdWIyZjBcdWIyZjFcdWIyZjJcdWIyZjZcdWIyZmNcdWIyZmRcdWIyZmVcdWIzMDJcdWIzMDNcdWIzMDVcdWIzMDZcdWIzMDdcdWIzMDlcdWIzMGFcdWIzMGJcdWIzMGNcdWIzMGRcdWIzMGVcdWIzMGZcdWIzMTJcdWIzMTZcdWIzMTdcdWIzMThcdWIzMTlcdWIz''@;'; put 'put ''MWFcdWIzMWJcdWIzMWRcdWIzMWVcdWIzMWZcdWIzMjBcdWIzMjFcdWIzMjJcdWIzMjNcdWIzMjRcdWIzMjVcdWIzMjZcdWIzMjdcdWIzMjhcdWIzMjlcdWIzMmFcdWIzMmJcdWIzMmNcdWIzMmRcdWIzMmVcdWIzMmZcdWIzMzBcdWIzMzFcdWIzMzJcdWIzMzNcdWIzMzRcdWIzMzVcdWIzMzZc''@;'; put 'put ''dWIzMzdcdWIzMzhcdWIzMzlcdWIzM2FcdWIzM2JcdWIzM2NcdWIzM2RcdWIzM2VcdWIzM2ZcdWIzNDBcdWIzNDFcdWIzNDJcdWIzNDNcdWIzNDRcdWIzNDVcdWIzNDZcdWIzNDdcdWIzNDhcdWIzNDlcdWIzNGFcdWIzNGJcdWIzNGNcdWIzNGRcdWIzNGVcdWIzNGZcdWIzNTBcdWIzNTFcdWIz''@;'; put 'put ''NTJcdWIzNTNcdWIzNTdcdWIzNTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzNl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTM2XVt2XV09MzQ4MTYrdixUWzM0ODE2K3Zd''@;'; put 'put ''PWtbMTM2XVt2XSk7Zm9yKGtbMTM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMzY2XHViMzY4XHViMzZhXHViMzZjXHViMzZkXHViMzZmXHViMzcyXHViMzczXHViMzc1XHViMzc2XHViMzc3XHViMzc5XHViMzdhXHVi''@;'; put 'put ''MzdiXHViMzdjXHViMzdkXHViMzdlXHViMzdmXHViMzgyXHViMzg2XHViMzg3XHViMzg4XHViMzg5XHViMzhhXHViMzhiXHViMzhkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1XHViMzk2XHViMzk3XHViMzk4''@;'; put 'put ''XHViMzk5XHViMzlhXHViMzliXHViMzljXHViMzlkXHViMzllXHViMzlmXHViM2EyXHViM2EzXHViM2E0XHViM2E1XHViM2E2XHViM2E3XHViM2E5XHViM2FhXHViM2FiXHViM2FkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViM2FlXHViM2FmXHViM2IwXHViM2IxXHVi''@;'; put 'put ''M2IyXHViM2IzXHViM2I0XHViM2I1XHViM2I2XHViM2I3XHViM2I4XHViM2I5XHViM2JhXHViM2JiXHViM2JjXHViM2JkXHViM2JlXHViM2JmXHViM2MwXHViM2MxXHViM2MyXHViM2MzXHViM2M2XHViM2M3XHViM2M5XHViM2NhXHViM2NkXHViM2NmXHViM2QxXHViM2QyXHViM2QzXHViM2Q2''@;'; put 'put ''XHViM2Q4XHViM2RhXHViM2RjXHViM2RlXHViM2RmXHViM2UxXHViM2UyXHViM2UzXHViM2U1XHViM2U2XHViM2U3XHViM2U5XHViM2VhXHViM2ViXHViM2VjXHViM2VkXHViM2VlXHViM2VmXHViM2YwXHViM2YxXHViM2YyXHViM2YzXHViM2Y0XHViM2Y1XHViM2Y2XHViM2Y3XHViM2Y4XHVi''@;'; put 'put ''M2Y5XHViM2ZhXHViM2ZiXHViM2ZkXHViM2ZlXHViM2ZmXHViNDAwXHViNDAxXHViNDAyXHViNDAzXHViNDA0XHViNDA1XHViNDA2XHViNDA3XHViNDA4XHViNDA5XHViNDBhXHViNDBiXHViNDBjXHViNDBkXHViNDBlXHViNDBmXHViNDExXHViNDEyXHViNDEzXHViNDE0XHViNDE1XHViNDE2''@;'; put 'put ''XHViNDE3XHViNDE5XHViNDFhXHViNDFiXHViNDFkXHViNDFlXHViNDFmXHViNDIxXHViNDIyXHViNDIzXHViNDI0XHViNDI1XHViNDI2XHViNDI3XHViNDJhXHViNDJjXHViNDJkXHViNDJlXHViNDJmXHViNDMwXHViNDMxXHViNDMyXHViNDMzXHViNDM1XHViNDM2XHViNDM3XHViNDM4XHVi''@;'; put 'put ''NDM5XHViNDNhXHViNDNiXHViNDNjXHViNDNkXHViNDNlXHViNDNmXHViNDQwXHViNDQxXHViNDQyXHViNDQzXHViNDQ0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTM3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxMzddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzEzN11bdl1dPTM1MDcy''@;'; put 'put ''K3YsVFszNTA3Mit2XT1rWzEzN11bdl0pO2ZvcihrWzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ0NVx1YjQ0Nlx1YjQ0N1x1YjQ0OFx1YjQ0OVx1YjQ0YVx1YjQ0Ylx1YjQ0Y1x1YjQ0ZFx1YjQ0ZVx1YjQ0Zlx1''@;'; put 'put ''YjQ1Mlx1YjQ1M1x1YjQ1NVx1YjQ1Nlx1YjQ1N1x1YjQ1OVx1YjQ1YVx1YjQ1Ylx1YjQ1Y1x1YjQ1ZFx1YjQ1ZVx1YjQ1Zlx1YjQ2Mlx1YjQ2NFx1YjQ2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ2N1x1YjQ2OFx1YjQ2OVx1YjQ2YVx1YjQ2Ylx1YjQ2ZFx1YjQ2''@;'; put 'put ''ZVx1YjQ2Zlx1YjQ3MFx1YjQ3MVx1YjQ3Mlx1YjQ3M1x1YjQ3NFx1YjQ3NVx1YjQ3Nlx1YjQ3N1x1YjQ3OFx1YjQ3OVx1YjQ3YVx1YjQ3Ylx1YjQ3Y1x1YjQ3ZFx1YjQ3ZVx1YjQ3Zlx1YjQ4MVx1YjQ4Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ4M1x1YjQ4NFx1''@;'; put 'put ''YjQ4NVx1YjQ4Nlx1YjQ4N1x1YjQ4OVx1YjQ4YVx1YjQ4Ylx1YjQ4Y1x1YjQ4ZFx1YjQ4ZVx1YjQ4Zlx1YjQ5MFx1YjQ5MVx1YjQ5Mlx1YjQ5M1x1YjQ5NFx1YjQ5NVx1YjQ5Nlx1YjQ5N1x1YjQ5OFx1YjQ5OVx1YjQ5YVx1YjQ5Ylx1YjQ5Y1x1YjQ5ZVx1YjQ5Zlx1YjRhMFx1YjRhMVx1YjRh''@;'; put 'put ''Mlx1YjRhM1x1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZFx1YjRhZVx1YjRhZlx1YjRiMFx1YjRiMVx1YjRiMlx1YjRiM1x1YjRiNFx1YjRiNlx1YjRiOFx1YjRiYVx1YjRiYlx1YjRiY1x1YjRiZFx1YjRiZVx1YjRiZlx1YjRjMVx1YjRjMlx1YjRjM1x1YjRjNVx1''@;'; put 'put ''YjRjNlx1YjRjN1x1YjRjOVx1YjRjYVx1YjRjYlx1YjRjY1x1YjRjZFx1YjRjZVx1YjRjZlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRkNlx1YjRkN1x1YjRkOFx1YjRkOVx1YjRkYVx1YjRkYlx1YjRkZVx1YjRkZlx1YjRlMVx1YjRlMlx1YjRlNVx1YjRlN1x1YjRlOFx1YjRlOVx1YjRl''@;'; put 'put ''YVx1YjRlYlx1YjRlZVx1YjRmMFx1YjRmMlx1YjRmM1x1YjRmNFx1YjRmNVx1YjRmNlx1YjRmN1x1YjRmOVx1YjRmYVx1YjRmYlx1YjRmY1x1YjRmZFx1YjRmZVx1YjRmZlx1YjUwMFx1YjUwMVx1YjUwMlx1YjUwM1x1YjUwNFx1YjUwNVx1YjUwNlx1YjUwN1x1YjUwOFx1YjUwOVx1YjUwYVx1''@;'; put 'put ''YjUwYlx1YjUwY1x1YjUwZFx1YjUwZVx1YjUwZlx1YjUxMFx1YjUxMVx1YjUxMlx1YjUxM1x1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzEzOF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTM4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sx''@;'; put 'put ''MzhdW3ZdXT0zNTMyOCt2LFRbMzUzMjgrdl09a1sxMzhdW3ZdKTtmb3Ioa1sxMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1MWVcdWI1MWZcdWI1MjBcdWI1MjFcdWI1MjJcdWI1MjNcdWI1MjZcdWI1MmJcdWI1MmNc''@;'; put 'put ''dWI1MmRcdWI1MmVcdWI1MmZcdWI1MzJcdWI1MzNcdWI1MzVcdWI1MzZcdWI1MzdcdWI1MzlcdWI1M2FcdWI1M2JcdWI1M2NcdWI1M2RcdWI1M2VcdWI1M2ZcdWI1NDJcdWI1NDZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1NDdcdWI1NDhcdWI1NDlcdWI1NGFcdWI1''@;'; put 'put ''NGVcdWI1NGZcdWI1NTFcdWI1NTJcdWI1NTNcdWI1NTVcdWI1NTZcdWI1NTdcdWI1NThcdWI1NTlcdWI1NWFcdWI1NWJcdWI1NWVcdWI1NjJcdWI1NjNcdWI1NjRcdWI1NjVcdWI1NjZcdWI1NjdcdWI1NjhcdWI1NjlcdWI1NmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWI1NmJcdWI1NmNcdWI1NmRcdWI1NmVcdWI1NmZcdWI1NzBcdWI1NzFcdWI1NzJcdWI1NzNcdWI1NzRcdWI1NzVcdWI1NzZcdWI1NzdcdWI1NzhcdWI1NzlcdWI1N2FcdWI1N2JcdWI1N2NcdWI1N2RcdWI1N2VcdWI1N2ZcdWI1ODBcdWI1ODFcdWI1ODJcdWI1ODNcdWI1ODRcdWI1ODVcdWI1''@;'; put 'put ''ODZcdWI1ODdcdWI1ODhcdWI1ODlcdWI1OGFcdWI1OGJcdWI1OGNcdWI1OGRcdWI1OGVcdWI1OGZcdWI1OTBcdWI1OTFcdWI1OTJcdWI1OTNcdWI1OTRcdWI1OTVcdWI1OTZcdWI1OTdcdWI1OThcdWI1OTlcdWI1OWFcdWI1OWJcdWI1OWNcdWI1OWRcdWI1OWVcdWI1OWZcdWI1YTJcdWI1YTNc''@;'; put 'put ''dWI1YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjZcdWI1YjdcdWI1YjhcdWI1YjlcdWI1YmFcdWI1YmVcdWI1YmZcdWI1YzFcdWI1YzJcdWI1YzNcdWI1YzVcdWI1YzZcdWI1YzdcdWI1YzhcdWI1YzlcdWI1Y2FcdWI1Y2JcdWI1Y2VcdWI1''@;'; put 'put ''ZDJcdWI1ZDNcdWI1ZDRcdWI1ZDVcdWI1ZDZcdWI1ZDdcdWI1ZDlcdWI1ZGFcdWI1ZGJcdWI1ZGNcdWI1ZGRcdWI1ZGVcdWI1ZGZcdWI1ZTBcdWI1ZTFcdWI1ZTJcdWI1ZTNcdWI1ZTRcdWI1ZTVcdWI1ZTZcdWI1ZTdcdWI1ZThcdWI1ZTlcdWI1ZWFcdWI1ZWJcdWI1ZWRcdWI1ZWVcdWI1ZWZc''@;'; put 'put ''dWI1ZjBcdWI1ZjFcdWI1ZjJcdWI1ZjNcdWI1ZjRcdWI1ZjVcdWI1ZjZcdWI1ZjdcdWI1ZjhcdWI1ZjlcdWI1ZmFcdWI1ZmJcdWI1ZmNcdWI1ZmRcdWI1ZmVcdWI1ZmZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxMzldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzEzOV1bdl0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKHNlW2tbMTM5XVt2XV09MzU1ODQrdixUWzM1NTg0K3ZdPWtbMTM5XVt2XSk7Zm9yKGtbMTQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjAwXHViNjAxXHViNjAyXHViNjAzXHViNjA0XHViNjA1XHViNjA2''@;'; put 'put ''XHViNjA3XHViNjA4XHViNjA5XHViNjBhXHViNjBiXHViNjBjXHViNjBkXHViNjBlXHViNjBmXHViNjEyXHViNjEzXHViNjE1XHViNjE2XHViNjE3XHViNjE5XHViNjFhXHViNjFiXHViNjFjXHViNjFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjFlXHViNjFmXHVi''@;'; put 'put ''NjIwXHViNjIxXHViNjIyXHViNjIzXHViNjI0XHViNjI2XHViNjI3XHViNjI4XHViNjI5XHViNjJhXHViNjJiXHViNjJkXHViNjJlXHViNjJmXHViNjMwXHViNjMxXHViNjMyXHViNjMzXHViNjM1XHViNjM2XHViNjM3XHViNjM4XHViNjM5XHViNjNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHViNjNiXHViNjNjXHViNjNkXHViNjNlXHViNjNmXHViNjQwXHViNjQxXHViNjQyXHViNjQzXHViNjQ0XHViNjQ1XHViNjQ2XHViNjQ3XHViNjQ5XHViNjRhXHViNjRiXHViNjRjXHViNjRkXHViNjRlXHViNjRmXHViNjUwXHViNjUxXHViNjUyXHViNjUzXHViNjU0XHVi''@;'; put 'put ''NjU1XHViNjU2XHViNjU3XHViNjU4XHViNjU5XHViNjVhXHViNjViXHViNjVjXHViNjVkXHViNjVlXHViNjVmXHViNjYwXHViNjYxXHViNjYyXHViNjYzXHViNjY1XHViNjY2XHViNjY3XHViNjY5XHViNjZhXHViNjZiXHViNjZjXHViNjZkXHViNjZlXHViNjZmXHViNjcwXHViNjcxXHViNjcy''@;'; put 'put ''XHViNjczXHViNjc0XHViNjc1XHViNjc2XHViNjc3XHViNjc4XHViNjc5XHViNjdhXHViNjdiXHViNjdjXHViNjdkXHViNjdlXHViNjdmXHViNjgwXHViNjgxXHViNjgyXHViNjgzXHViNjg0XHViNjg1XHViNjg2XHViNjg3XHViNjg4XHViNjg5XHViNjhhXHViNjhiXHViNjhjXHViNjhkXHVi''@;'; put 'put ''NjhlXHViNjhmXHViNjkwXHViNjkxXHViNjkyXHViNjkzXHViNjk0XHViNjk1XHViNjk2XHViNjk3XHViNjk4XHViNjk5XHViNjlhXHViNjliXHViNjllXHViNjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1XHViNmE2XHViNmE3XHViNmE4XHViNmE5XHViNmFhXHViNmFkXHViNmFlXHViNmFm''@;'; put 'put ''XHViNmIwXHViNmIyXHViNmIzXHViNmI0XHViNmI1XHViNmI2XHViNmI3XHViNmI4XHViNmI5XHViNmJhXHViNmJiXHViNmJjXHViNmJkXHViNmJlXHViNmJmXHViNmMwXHViNmMxXHViNmMyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDBd''@;'; put 'put ''W3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0MF1bdl1dPTM1ODQwK3YsVFszNTg0MCt2XT1rWzE0MF1bdl0pO2ZvcihrWzE0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZjM1x1YjZjNFx1YjZjNVx1YjZjNlx1YjZj''@;'; put 'put ''N1x1YjZjOFx1YjZjOVx1YjZjYVx1YjZjYlx1YjZjY1x1YjZjZFx1YjZjZVx1YjZjZlx1YjZkMFx1YjZkMVx1YjZkMlx1YjZkM1x1YjZkNVx1YjZkNlx1YjZkN1x1YjZkOFx1YjZkOVx1YjZkYVx1YjZkYlx1YjZkY1x1YjZkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''YjZkZVx1YjZkZlx1YjZlMFx1YjZlMVx1YjZlMlx1YjZlM1x1YjZlNFx1YjZlNVx1YjZlNlx1YjZlN1x1YjZlOFx1YjZlOVx1YjZlYVx1YjZlYlx1YjZlY1x1YjZlZFx1YjZlZVx1YjZlZlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1YjZmYVx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZmYlx1YjZmY1x1YjZmZFx1YjZmZVx1YjZmZlx1YjcwMlx1YjcwM1x1YjcwNFx1YjcwNlx1YjcwN1x1YjcwOFx1YjcwOVx1YjcwYVx1YjcwYlx1YjcwY1x1YjcwZFx1YjcwZVx1YjcwZlx1YjcxMFx1YjcxMVx1YjcxMlx1YjcxM1x1YjcxNFx1''@;'; put 'put ''YjcxNVx1YjcxNlx1YjcxN1x1YjcxOFx1YjcxOVx1YjcxYVx1YjcxYlx1YjcxY1x1YjcxZFx1YjcxZVx1YjcxZlx1YjcyMFx1YjcyMVx1YjcyMlx1YjcyM1x1YjcyNFx1YjcyNVx1YjcyNlx1YjcyN1x1YjcyYVx1YjcyYlx1YjcyZFx1YjcyZVx1YjczMVx1YjczMlx1YjczM1x1YjczNFx1Yjcz''@;'; put 'put ''NVx1YjczNlx1YjczN1x1YjczYVx1YjczY1x1YjczZFx1YjczZVx1YjczZlx1Yjc0MFx1Yjc0MVx1Yjc0Mlx1Yjc0M1x1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZFx1Yjc0ZVx1Yjc0Zlx1Yjc1MFx1Yjc1MVx1Yjc1Mlx1Yjc1M1x1Yjc1Nlx1Yjc1N1x1Yjc1OFx1''@;'; put 'put ''Yjc1OVx1Yjc1YVx1Yjc1Ylx1Yjc1Y1x1Yjc1ZFx1Yjc1ZVx1Yjc1Zlx1Yjc2MVx1Yjc2Mlx1Yjc2M1x1Yjc2NVx1Yjc2Nlx1Yjc2N1x1Yjc2OVx1Yjc2YVx1Yjc2Ylx1Yjc2Y1x1Yjc2ZFx1Yjc2ZVx1Yjc2Zlx1Yjc3Mlx1Yjc3NFx1Yjc3Nlx1Yjc3N1x1Yjc3OFx1Yjc3OVx1Yjc3YVx1Yjc3''@;'; put 'put ''Ylx1Yjc3ZVx1Yjc3Zlx1Yjc4MVx1Yjc4Mlx1Yjc4M1x1Yjc4NVx1Yjc4Nlx1Yjc4N1x1Yjc4OFx1Yjc4OVx1Yjc4YVx1Yjc4Ylx1Yjc4ZVx1Yjc5M1x1Yjc5NFx1Yjc5NVx1Yjc5YVx1Yjc5Ylx1Yjc5ZFx1Yjc5ZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0MV0ubGVuZ3RoOysrdik2''@;'; put 'put ''NTUzMyE9PWtbMTQxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDFdW3ZdXT0zNjA5Nit2LFRbMzYwOTYrdl09a1sxNDFdW3ZdKTtmb3Ioa1sxNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3OWZcdWI3YTFcdWI3''@;'; put 'put ''YTJcdWI3YTNcdWI3YTRcdWI3YTVcdWI3YTZcdWI3YTdcdWI3YWFcdWI3YWVcdWI3YWZcdWI3YjBcdWI3YjFcdWI3YjJcdWI3YjNcdWI3YjZcdWI3YjdcdWI3YjlcdWI3YmFcdWI3YmJcdWI3YmNcdWI3YmRcdWI3YmVcdWI3YmZcdWI3YzBcdWI3YzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWI3YzJcdWI3YzNcdWI3YzRcdWI3YzVcdWI3YzZcdWI3YzhcdWI3Y2FcdWI3Y2JcdWI3Y2NcdWI3Y2RcdWI3Y2VcdWI3Y2ZcdWI3ZDBcdWI3ZDFcdWI3ZDJcdWI3ZDNcdWI3ZDRcdWI3ZDVcdWI3ZDZcdWI3ZDdcdWI3ZDhcdWI3ZDlcdWI3ZGFcdWI3ZGJcdWI3ZGNcdWI3''@;'; put 'put ''ZGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3ZGVcdWI3ZGZcdWI3ZTBcdWI3ZTFcdWI3ZTJcdWI3ZTNcdWI3ZTRcdWI3ZTVcdWI3ZTZcdWI3ZTdcdWI3ZThcdWI3ZTlcdWI3ZWFcdWI3ZWJcdWI3ZWVcdWI3ZWZcdWI3ZjFcdWI3ZjJcdWI3ZjNcdWI3ZjVcdWI3ZjZc''@;'; put 'put ''dWI3ZjdcdWI3ZjhcdWI3ZjlcdWI3ZmFcdWI3ZmJcdWI3ZmVcdWI4MDJcdWI4MDNcdWI4MDRcdWI4MDVcdWI4MDZcdWI4MGFcdWI4MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTFcdWI4MTJcdWI4MTNcdWI4MTRcdWI4MTVcdWI4MTZcdWI4MTdcdWI4MWFcdWI4MWNcdWI4MWVcdWI4MWZcdWI4''@;'; put 'put ''MjBcdWI4MjFcdWI4MjJcdWI4MjNcdWI4MjZcdWI4MjdcdWI4MjlcdWI4MmFcdWI4MmJcdWI4MmRcdWI4MmVcdWI4MmZcdWI4MzBcdWI4MzFcdWI4MzJcdWI4MzNcdWI4MzZcdWI4M2FcdWI4M2JcdWI4M2NcdWI4M2RcdWI4M2VcdWI4M2ZcdWI4NDFcdWI4NDJcdWI4NDNcdWI4NDVcdWI4NDZc''@;'; put 'put ''dWI4NDdcdWI4NDhcdWI4NDlcdWI4NGFcdWI4NGJcdWI4NGNcdWI4NGRcdWI4NGVcdWI4NGZcdWI4NTBcdWI4NTJcdWI4NTRcdWI4NTVcdWI4NTZcdWI4NTdcdWI4NThcdWI4NTlcdWI4NWFcdWI4NWJcdWI4NWVcdWI4NWZcdWI4NjFcdWI4NjJcdWI4NjNcdWI4NjVcdWI4NjZcdWI4NjdcdWI4''@;'; put 'put ''NjhcdWI4NjlcdWI4NmFcdWI4NmJcdWI4NmVcdWI4NzBcdWI4NzJcdWI4NzNcdWI4NzRcdWI4NzVcdWI4NzZcdWI4NzdcdWI4NzlcdWI4N2FcdWI4N2JcdWI4N2RcdWI4N2VcdWI4N2ZcdWI4ODBcdWI4ODFcdWI4ODJcdWI4ODNcdWI4ODRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDJd''@;'; put 'put ''Lmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQyXVt2XV09MzYzNTIrdixUWzM2MzUyK3ZdPWtbMTQyXVt2XSk7Zm9yKGtbMTQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVi''@;'; put 'put ''ODg1XHViODg2XHViODg3XHViODg4XHViODg5XHViODhhXHViODhiXHViODhjXHViODhlXHViODhmXHViODkwXHViODkxXHViODkyXHViODkzXHViODk0XHViODk1XHViODk2XHViODk3XHViODk4XHViODk5XHViODlhXHViODliXHViODljXHViODlkXHViODllXHViODlmXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGEwXHViOGExXHViOGEyXHViOGEzXHViOGE0XHViOGE1XHViOGE2XHViOGE3XHViOGE5XHViOGFhXHViOGFiXHViOGFjXHViOGFkXHViOGFlXHViOGFmXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3XHViOGI5XHViOGJhXHVi''@;'; put 'put ''OGJiXHViOGJjXHViOGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGJlXHViOGJmXHViOGMyXHViOGM0XHViOGM2XHViOGM3XHViOGM4XHViOGM5XHViOGNhXHViOGNiXHViOGNkXHViOGNlXHViOGNmXHViOGQxXHViOGQyXHViOGQzXHViOGQ1XHViOGQ2XHViOGQ3''@;'; put 'put ''XHViOGQ4XHViOGQ5XHViOGRhXHViOGRiXHViOGRjXHViOGRlXHViOGUwXHViOGUyXHViOGUzXHViOGU0XHViOGU1XHViOGU2XHViOGU3XHViOGVhXHViOGViXHViOGVkXHViOGVlXHViOGVmXHViOGYxXHViOGYyXHViOGYzXHViOGY0XHViOGY1XHViOGY2XHViOGY3XHViOGZhXHViOGZjXHVi''@;'; put 'put ''OGZlXHViOGZmXHViOTAwXHViOTAxXHViOTAyXHViOTAzXHViOTA1XHViOTA2XHViOTA3XHViOTA4XHViOTA5XHViOTBhXHViOTBiXHViOTBjXHViOTBkXHViOTBlXHViOTBmXHViOTEwXHViOTExXHViOTEyXHViOTEzXHViOTE0XHViOTE1XHViOTE2XHViOTE3XHViOTE5XHViOTFhXHViOTFi''@;'; put 'put ''XHViOTFjXHViOTFkXHViOTFlXHViOTFmXHViOTIxXHViOTIyXHViOTIzXHViOTI0XHViOTI1XHViOTI2XHViOTI3XHViOTI4XHViOTI5XHViOTJhXHViOTJiXHViOTJjXHViOTJkXHViOTJlXHViOTJmXHViOTMwXHViOTMxXHViOTMyXHViOTMzXHViOTM0XHViOTM1XHViOTM2XHViOTM3XHVi''@;'; put 'put ''OTM4XHViOTM5XHViOTNhXHViOTNiXHViOTNlXHViOTNmXHViOTQxXHViOTQyXHViOTQzXHViOTQ1XHViOTQ2XHViOTQ3XHViOTQ4XHViOTQ5XHViOTRhXHViOTRiXHViOTRkXHViOTRlXHViOTUwXHViOTUyXHViOTUzXHViOTU0XHViOTU1XHViOTU2XHViOTU3XHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''dj0wO3YhPWtbMTQzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0M11bdl1dPTM2NjA4K3YsVFszNjYwOCt2XT1rWzE0M11bdl0pO2ZvcihrWzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1Yjk1YVx1Yjk1Ylx1Yjk1ZFx1Yjk1ZVx1Yjk1Zlx1Yjk2MVx1Yjk2Mlx1Yjk2M1x1Yjk2NFx1Yjk2NVx1Yjk2Nlx1Yjk2N1x1Yjk2YVx1Yjk2Y1x1Yjk2ZVx1Yjk2Zlx1Yjk3MFx1Yjk3MVx1Yjk3Mlx1Yjk3M1x1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk3ZVx1Yjk3Zlx1Yjk4MFx1Yjk4MVx1Yjk4Mlx1Yjk4M1x1Yjk4Nlx1Yjk4OFx1Yjk4Ylx1Yjk4Y1x1Yjk4Zlx1Yjk5MFx1Yjk5MVx1Yjk5Mlx1Yjk5M1x1Yjk5NFx1Yjk5NVx1Yjk5Nlx1Yjk5N1x1Yjk5OFx1Yjk5OVx1''@;'; put 'put ''Yjk5YVx1Yjk5Ylx1Yjk5Y1x1Yjk5ZFx1Yjk5ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk5Zlx1YjlhMFx1YjlhMVx1YjlhMlx1YjlhM1x1YjlhNFx1YjlhNVx1YjlhNlx1YjlhN1x1YjlhOFx1YjlhOVx1YjlhYVx1YjlhYlx1YjlhZVx1YjlhZlx1YjliMVx1Yjli''@;'; put 'put ''Mlx1YjliM1x1YjliNVx1YjliNlx1YjliN1x1YjliOFx1YjliOVx1YjliYVx1YjliYlx1YjliZVx1YjljMFx1YjljMlx1YjljM1x1YjljNFx1YjljNVx1YjljNlx1YjljN1x1YjljYVx1YjljYlx1YjljZFx1YjlkM1x1YjlkNFx1YjlkNVx1YjlkNlx1YjlkN1x1YjlkYVx1YjlkY1x1YjlkZlx1''@;'; put 'put ''YjllMFx1YjllMlx1YjllNlx1YjllN1x1YjllOVx1YjllYVx1YjllYlx1YjllZFx1YjllZVx1YjllZlx1YjlmMFx1YjlmMVx1YjlmMlx1YjlmM1x1YjlmNlx1YjlmYlx1YjlmY1x1YjlmZFx1YjlmZVx1YjlmZlx1YmEwMlx1YmEwM1x1YmEwNFx1YmEwNVx1YmEwNlx1YmEwN1x1YmEwOVx1YmEw''@;'; put 'put ''YVx1YmEwYlx1YmEwY1x1YmEwZFx1YmEwZVx1YmEwZlx1YmExMFx1YmExMVx1YmExMlx1YmExM1x1YmExNFx1YmExNlx1YmExN1x1YmExOFx1YmExOVx1YmExYVx1YmExYlx1YmExY1x1YmExZFx1YmExZVx1YmExZlx1YmEyMFx1YmEyMVx1YmEyMlx1YmEyM1x1YmEyNFx1YmEyNVx1YmEyNlx1''@;'; put 'put ''YmEyN1x1YmEyOFx1YmEyOVx1YmEyYVx1YmEyYlx1YmEyY1x1YmEyZFx1YmEyZVx1YmEyZlx1YmEzMFx1YmEzMVx1YmEzMlx1YmEzM1x1YmEzNFx1YmEzNVx1YmEzNlx1YmEzN1x1YmEzYVx1YmEzYlx1YmEzZFx1YmEzZVx1YmEzZlx1YmE0MVx1YmE0M1x1YmE0NFx1YmE0NVx1YmE0Nlx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0NF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQ0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDRdW3ZdXT0zNjg2NCt2LFRbMzY4NjQrdl09a1sxNDRdW3ZdKTtmb3Ioa1sxNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNDdcdWJhNGFcdWJhNGNcdWJhNGZcdWJhNTBcdWJhNTFcdWJhNTJcdWJhNTZcdWJhNTdcdWJhNTlcdWJhNWFcdWJhNWJcdWJhNWRcdWJhNWVcdWJhNWZcdWJhNjBcdWJhNjFcdWJhNjJcdWJhNjNcdWJhNjZcdWJhNmFcdWJhNmJcdWJhNmNcdWJh''@;'; put 'put ''NmRcdWJhNmVcdWJhNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNzJcdWJhNzNcdWJhNzVcdWJhNzZcdWJhNzdcdWJhNzlcdWJhN2FcdWJhN2JcdWJhN2NcdWJhN2RcdWJhN2VcdWJhN2ZcdWJhODBcdWJhODFcdWJhODJcdWJhODZcdWJhODhcdWJhODlcdWJhOGFc''@;'; put 'put ''dWJhOGJcdWJhOGRcdWJhOGVcdWJhOGZcdWJhOTBcdWJhOTFcdWJhOTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhOTNcdWJhOTRcdWJhOTVcdWJhOTZcdWJhOTdcdWJhOThcdWJhOTlcdWJhOWFcdWJhOWJcdWJhOWNcdWJhOWRcdWJhOWVcdWJhOWZcdWJhYTBcdWJh''@;'; put 'put ''YTFcdWJhYTJcdWJhYTNcdWJhYTRcdWJhYTVcdWJhYTZcdWJhYTdcdWJhYWFcdWJhYWRcdWJhYWVcdWJhYWZcdWJhYjFcdWJhYjNcdWJhYjRcdWJhYjVcdWJhYjZcdWJhYjdcdWJhYmFcdWJhYmNcdWJhYmVcdWJhYmZcdWJhYzBcdWJhYzFcdWJhYzJcdWJhYzNcdWJhYzVcdWJhYzZcdWJhYzdc''@;'; put 'put ''dWJhYzlcdWJhY2FcdWJhY2JcdWJhY2NcdWJhY2RcdWJhY2VcdWJhY2ZcdWJhZDBcdWJhZDFcdWJhZDJcdWJhZDNcdWJhZDRcdWJhZDVcdWJhZDZcdWJhZDdcdWJhZGFcdWJhZGJcdWJhZGNcdWJhZGRcdWJhZGVcdWJhZGZcdWJhZTBcdWJhZTFcdWJhZTJcdWJhZTNcdWJhZTRcdWJhZTVcdWJh''@;'; put 'put ''ZTZcdWJhZTdcdWJhZThcdWJhZTlcdWJhZWFcdWJhZWJcdWJhZWNcdWJhZWRcdWJhZWVcdWJhZWZcdWJhZjBcdWJhZjFcdWJhZjJcdWJhZjNcdWJhZjRcdWJhZjVcdWJhZjZcdWJhZjdcdWJhZjhcdWJhZjlcdWJhZmFcdWJhZmJcdWJhZmRcdWJhZmVcdWJhZmZcdWJiMDFcdWJiMDJcdWJiMDNc''@;'; put 'put ''dWJiMDVcdWJiMDZcdWJiMDdcdWJiMDhcdWJiMDlcdWJiMGFcdWJiMGJcdWJiMGNcdWJiMGVcdWJiMTBcdWJiMTJcdWJiMTNcdWJiMTRcdWJiMTVcdWJiMTZcdWJiMTdcdWJiMTlcdWJiMWFcdWJiMWJcdWJiMWRcdWJiMWVcdWJiMWZcdWJiMjFcdWJiMjJcdWJiMjNcdWJiMjRcdWJiMjVcdWJi''@;'; put 'put ''MjZcdWJiMjdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQ1XVt2XV09MzcxMjArdixUWzM3MTIwK3ZdPWtbMTQ1XVt2XSk7Zm9yKGtbMTQ2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjI4XHViYjJhXHViYjJjXHViYjJkXHViYjJlXHViYjJmXHViYjMwXHViYjMxXHViYjMyXHViYjMzXHViYjM3XHViYjM5XHViYjNhXHViYjNmXHViYjQwXHViYjQxXHViYjQyXHViYjQzXHViYjQ2XHViYjQ4XHViYjRhXHVi''@;'; put 'put ''YjRiXHViYjRjXHViYjRlXHViYjUxXHViYjUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjUzXHViYjU1XHViYjU2XHViYjU3XHViYjU5XHViYjVhXHViYjViXHViYjVjXHViYjVkXHViYjVlXHViYjVmXHViYjYwXHViYjYyXHViYjY0XHViYjY1XHViYjY2XHViYjY3''@;'; put 'put ''XHViYjY4XHViYjY5XHViYjZhXHViYjZiXHViYjZkXHViYjZlXHViYjZmXHViYjcwXHViYjcxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjcyXHViYjczXHViYjc0XHViYjc1XHViYjc2XHViYjc3XHViYjc4XHViYjc5XHViYjdhXHViYjdiXHViYjdjXHViYjdkXHVi''@;'; put 'put ''YjdlXHViYjdmXHViYjgwXHViYjgxXHViYjgyXHViYjgzXHViYjg0XHViYjg1XHViYjg2XHViYjg3XHViYjg5XHViYjhhXHViYjhiXHViYjhkXHViYjhlXHViYjhmXHViYjkxXHViYjkyXHViYjkzXHViYjk0XHViYjk1XHViYjk2XHViYjk3XHViYjk4XHViYjk5XHViYjlhXHViYjliXHViYjlj''@;'; put 'put ''XHViYjlkXHViYjllXHViYjlmXHViYmEwXHViYmExXHViYmEyXHViYmEzXHViYmE1XHViYmE2XHViYmE3XHViYmE5XHViYmFhXHViYmFiXHViYmFkXHViYmFlXHViYmFmXHViYmIwXHViYmIxXHViYmIyXHViYmIzXHViYmI1XHViYmI2XHViYmI4XHViYmI5XHViYmJhXHViYmJiXHViYmJjXHVi''@;'; put 'put ''YmJkXHViYmJlXHViYmJmXHViYmMxXHViYmMyXHViYmMzXHViYmM1XHViYmM2XHViYmM3XHViYmM5XHViYmNhXHViYmNiXHViYmNjXHViYmNkXHViYmNlXHViYmNmXHViYmQxXHViYmQyXHViYmQ0XHViYmQ1XHViYmQ2XHViYmQ3XHViYmQ4XHViYmQ5XHViYmRhXHViYmRiXHViYmRjXHViYmRk''@;'; put 'put ''XHViYmRlXHViYmRmXHViYmUwXHViYmUxXHViYmUyXHViYmUzXHViYmU0XHViYmU1XHViYmU2XHViYmU3XHViYmU4XHViYmU5XHViYmVhXHViYmViXHViYmVjXHViYmVkXHViYmVlXHViYmVmXHViYmYwXHViYmYxXHViYmYyXHViYmYzXHViYmY0XHViYmY1XHViYmY2XHViYmY3XHViYmZhXHVi''@;'; put 'put ''YmZiXHViYmZkXHViYmZlXHViYzAxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0Nl1bdl1dPTM3Mzc2K3YsVFszNzM3Nit2XT1rWzE0Nl1bdl0pO2ZvcihrWzE0N109Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMwM1x1YmMwNFx1YmMwNVx1YmMwNlx1YmMwN1x1YmMwYVx1YmMwZVx1YmMxMFx1YmMxMlx1YmMxM1x1YmMxOVx1YmMxYVx1YmMyMFx1YmMyMVx1YmMyMlx1YmMyM1x1YmMyNlx1YmMyOFx1YmMyYVx1''@;'; put 'put ''YmMyYlx1YmMyY1x1YmMyZVx1YmMyZlx1YmMzMlx1YmMzM1x1YmMzNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMzNlx1YmMzN1x1YmMzOVx1YmMzYVx1YmMzYlx1YmMzY1x1YmMzZFx1YmMzZVx1YmMzZlx1YmM0Mlx1YmM0Nlx1YmM0N1x1YmM0OFx1YmM0YVx1YmM0''@;'; put 'put ''Ylx1YmM0ZVx1YmM0Zlx1YmM1MVx1YmM1Mlx1YmM1M1x1YmM1NFx1YmM1NVx1YmM1Nlx1YmM1N1x1YmM1OFx1YmM1OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZVx1YmM1Zlx1YmM2MFx1YmM2MVx1YmM2Mlx1YmM2M1x1YmM2NFx1''@;'; put 'put ''YmM2NVx1YmM2Nlx1YmM2N1x1YmM2OFx1YmM2OVx1YmM2YVx1YmM2Ylx1YmM2Y1x1YmM2ZFx1YmM2ZVx1YmM2Zlx1YmM3MFx1YmM3MVx1YmM3Mlx1YmM3M1x1YmM3NFx1YmM3NVx1YmM3Nlx1YmM3N1x1YmM3OFx1YmM3OVx1YmM3YVx1YmM3Ylx1YmM3Y1x1YmM3ZFx1YmM3ZVx1YmM3Zlx1YmM4''@;'; put 'put ''MFx1YmM4MVx1YmM4Mlx1YmM4M1x1YmM4Nlx1YmM4N1x1YmM4OVx1YmM4YVx1YmM4ZFx1YmM4Zlx1YmM5MFx1YmM5MVx1YmM5Mlx1YmM5M1x1YmM5Nlx1YmM5OFx1YmM5Ylx1YmM5Y1x1YmM5ZFx1YmM5ZVx1YmM5Zlx1YmNhMlx1YmNhM1x1YmNhNVx1YmNhNlx1YmNhOVx1YmNhYVx1YmNhYlx1''@;'; put 'put ''YmNhY1x1YmNhZFx1YmNhZVx1YmNhZlx1YmNiMlx1YmNiNlx1YmNiN1x1YmNiOFx1YmNiOVx1YmNiYVx1YmNiYlx1YmNiZVx1YmNiZlx1YmNjMVx1YmNjMlx1YmNjM1x1YmNjNVx1YmNjNlx1YmNjN1x1YmNjOFx1YmNjOVx1YmNjYVx1YmNjYlx1YmNjY1x1YmNjZVx1YmNkMlx1YmNkM1x1YmNk''@;'; put 'put ''NFx1YmNkNlx1YmNkN1x1YmNkOVx1YmNkYVx1YmNkYlx1YmNkZFx1YmNkZVx1YmNkZlx1YmNlMFx1YmNlMVx1YmNlMlx1YmNlM1x1YmNlNFx1YmNlNVx1YmNlNlx1YmNlN1x1YmNlOFx1YmNlOVx1YmNlYVx1YmNlYlx1YmNlY1x1YmNlZFx1YmNlZVx1YmNlZlx1YmNmMFx1YmNmMVx1YmNmMlx1''@;'; put 'put ''YmNmM1x1YmNmN1x1YmNmOVx1YmNmYVx1YmNmYlx1YmNmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE0N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTQ3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNDddW3ZdXT0zNzYzMit2LFRbMzc2MzIrdl09a1sxNDddW3ZdKTtmb3Ioa1sxNDhd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJjZmVcdWJjZmZcdWJkMDBcdWJkMDFcdWJkMDJcdWJkMDNcdWJkMDZcdWJkMDhcdWJkMGFcdWJkMGJcdWJkMGNcdWJkMGRcdWJkMGVcdWJkMGZcdWJkMTFcdWJkMTJcdWJkMTNc''@;'; put 'put ''dWJkMTVcdWJkMTZcdWJkMTdcdWJkMThcdWJkMTlcdWJkMWFcdWJkMWJcdWJkMWNcdWJkMWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkMWVcdWJkMWZcdWJkMjBcdWJkMjFcdWJkMjJcdWJkMjNcdWJkMjVcdWJkMjZcdWJkMjdcdWJkMjhcdWJkMjlcdWJkMmFcdWJk''@;'; put 'put ''MmJcdWJkMmRcdWJkMmVcdWJkMmZcdWJkMzBcdWJkMzFcdWJkMzJcdWJkMzNcdWJkMzRcdWJkMzVcdWJkMzZcdWJkMzdcdWJkMzhcdWJkMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkM2FcdWJkM2JcdWJkM2NcdWJkM2RcdWJkM2VcdWJkM2ZcdWJkNDFcdWJkNDJc''@;'; put 'put ''dWJkNDNcdWJkNDRcdWJkNDVcdWJkNDZcdWJkNDdcdWJkNGFcdWJkNGJcdWJkNGRcdWJkNGVcdWJkNGZcdWJkNTFcdWJkNTJcdWJkNTNcdWJkNTRcdWJkNTVcdWJkNTZcdWJkNTdcdWJkNWFcdWJkNWJcdWJkNWNcdWJkNWRcdWJkNWVcdWJkNWZcdWJkNjBcdWJkNjFcdWJkNjJcdWJkNjNcdWJk''@;'; put 'put ''NjVcdWJkNjZcdWJkNjdcdWJkNjlcdWJkNmFcdWJkNmJcdWJkNmNcdWJkNmRcdWJkNmVcdWJkNmZcdWJkNzBcdWJkNzFcdWJkNzJcdWJkNzNcdWJkNzRcdWJkNzVcdWJkNzZcdWJkNzdcdWJkNzhcdWJkNzlcdWJkN2FcdWJkN2JcdWJkN2NcdWJkN2RcdWJkN2VcdWJkN2ZcdWJkODJcdWJkODNc''@;'; put 'put ''dWJkODVcdWJkODZcdWJkOGJcdWJkOGNcdWJkOGRcdWJkOGVcdWJkOGZcdWJkOTJcdWJkOTRcdWJkOTZcdWJkOTdcdWJkOThcdWJkOWJcdWJkOWRcdWJkOWVcdWJkOWZcdWJkYTBcdWJkYTFcdWJkYTJcdWJkYTNcdWJkYTVcdWJkYTZcdWJkYTdcdWJkYThcdWJkYTlcdWJkYWFcdWJkYWJcdWJk''@;'; put 'put ''YWNcdWJkYWRcdWJkYWVcdWJkYWZcdWJkYjFcdWJkYjJcdWJkYjNcdWJkYjRcdWJkYjVcdWJkYjZcdWJkYjdcdWJkYjlcdWJkYmFcdWJkYmJcdWJkYmNcdWJkYmRcdWJkYmVcdWJkYmZcdWJkYzBcdWJkYzFcdWJkYzJcdWJkYzNcdWJkYzRcdWJkYzVcdWJkYzZcdWJkYzdcdWJkYzhcdWJkYzlc''@;'; put 'put ''dWJkY2FcdWJkY2JcdWJkY2NcdWJkY2RcdWJkY2VcdWJkY2ZcdWJkZDBcdWJkZDFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNDhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE0OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTQ4XVt2XV09Mzc4ODgrdixUWzM3ODg4K3ZdPWtbMTQ4XVt2''@;'; put 'put ''XSk7Zm9yKGtbMTQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZGQyXHViZGQzXHViZGQ2XHViZGQ3XHViZGQ5XHViZGRhXHViZGRiXHViZGRkXHViZGRlXHViZGRmXHViZGUwXHViZGUxXHViZGUyXHViZGUzXHViZGU0''@;'; put 'put ''XHViZGU1XHViZGU2XHViZGU3XHViZGU4XHViZGVhXHViZGViXHViZGVjXHViZGVkXHViZGVlXHViZGVmXHViZGYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZGYyXHViZGYzXHViZGY1XHViZGY2XHViZGY3XHViZGY5XHViZGZhXHViZGZiXHViZGZjXHViZGZkXHVi''@;'; put 'put ''ZGZlXHViZGZmXHViZTAxXHViZTAyXHViZTA0XHViZTA2XHViZTA3XHViZTA4XHViZTA5XHViZTBhXHViZTBiXHViZTBlXHViZTBmXHViZTExXHViZTEyXHViZTEzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZTE1XHViZTE2XHViZTE3XHViZTE4XHViZTE5XHViZTFh''@;'; put 'put ''XHViZTFiXHViZTFlXHViZTIwXHViZTIxXHViZTIyXHViZTIzXHViZTI0XHViZTI1XHViZTI2XHViZTI3XHViZTI4XHViZTI5XHViZTJhXHViZTJiXHViZTJjXHViZTJkXHViZTJlXHViZTJmXHViZTMwXHViZTMxXHViZTMyXHViZTMzXHViZTM0XHViZTM1XHViZTM2XHViZTM3XHViZTM4XHVi''@;'; put 'put ''ZTM5XHViZTNhXHViZTNiXHViZTNjXHViZTNkXHViZTNlXHViZTNmXHViZTQwXHViZTQxXHViZTQyXHViZTQzXHViZTQ2XHViZTQ3XHViZTQ5XHViZTRhXHViZTRiXHViZTRkXHViZTRmXHViZTUwXHViZTUxXHViZTUyXHViZTUzXHViZTU2XHViZTU4XHViZTVjXHViZTVkXHViZTVlXHViZTVm''@;'; put 'put ''XHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiXHViZTZjXHViZTZkXHViZTZlXHViZTZmXHViZTcyXHViZTc2XHViZTc3XHViZTc4XHViZTc5XHViZTdhXHViZTdlXHViZTdmXHViZTgxXHViZTgyXHViZTgzXHViZTg1XHViZTg2XHViZTg3XHViZTg4XHViZTg5XHVi''@;'; put 'put ''ZThhXHViZThiXHViZThlXHViZTkyXHViZTkzXHViZTk0XHViZTk1XHViZTk2XHViZTk3XHViZTlhXHViZTliXHViZTljXHViZTlkXHViZTllXHViZTlmXHViZWEwXHViZWExXHViZWEyXHViZWEzXHViZWE0XHViZWE1XHViZWE2XHViZWE3XHViZWE5XHViZWFhXHViZWFiXHViZWFjXHViZWFk''@;'; put 'put ''XHViZWFlXHViZWFmXHViZWIwXHViZWIxXHViZWIyXHViZWIzXHViZWI0XHViZWI1XHViZWI2XHViZWI3XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTQ5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNDldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE0OV1bdl1dPTM4MTQ0K3YsVFszODE0''@;'; put 'put ''NCt2XT1rWzE0OV1bdl0pO2ZvcihrWzE1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmViOFx1YmViOVx1YmViYVx1YmViYlx1YmViY1x1YmViZFx1YmViZVx1YmViZlx1YmVjMFx1YmVjMVx1YmVjMlx1YmVjM1x1YmVj''@;'; put 'put ''NFx1YmVjNVx1YmVjNlx1YmVjN1x1YmVjOFx1YmVjOVx1YmVjYVx1YmVjYlx1YmVjY1x1YmVjZFx1YmVjZVx1YmVjZlx1YmVkMlx1YmVkM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVkNVx1YmVkNlx1YmVkOVx1YmVkYVx1YmVkYlx1YmVkY1x1YmVkZFx1YmVkZVx1''@;'; put 'put ''YmVkZlx1YmVlMVx1YmVlMlx1YmVlNlx1YmVlN1x1YmVlOFx1YmVlOVx1YmVlYVx1YmVlYlx1YmVlZFx1YmVlZVx1YmVlZlx1YmVmMFx1YmVmMVx1YmVmMlx1YmVmM1x1YmVmNFx1YmVmNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVmNlx1YmVmN1x1YmVmOFx1YmVm''@;'; put 'put ''OVx1YmVmYVx1YmVmYlx1YmVmY1x1YmVmZFx1YmVmZVx1YmVmZlx1YmYwMFx1YmYwMlx1YmYwM1x1YmYwNFx1YmYwNVx1YmYwNlx1YmYwN1x1YmYwYVx1YmYwYlx1YmYwY1x1YmYwZFx1YmYwZVx1YmYwZlx1YmYxMFx1YmYxMVx1YmYxMlx1YmYxM1x1YmYxNFx1YmYxNVx1YmYxNlx1YmYxN1x1''@;'; put 'put ''YmYxYVx1YmYxZVx1YmYxZlx1YmYyMFx1YmYyMVx1YmYyMlx1YmYyM1x1YmYyNFx1YmYyNVx1YmYyNlx1YmYyN1x1YmYyOFx1YmYyOVx1YmYyYVx1YmYyYlx1YmYyY1x1YmYyZFx1YmYyZVx1YmYyZlx1YmYzMFx1YmYzMVx1YmYzMlx1YmYzM1x1YmYzNFx1YmYzNVx1YmYzNlx1YmYzN1x1YmYz''@;'; put 'put ''OFx1YmYzOVx1YmYzYVx1YmYzYlx1YmYzY1x1YmYzZFx1YmYzZVx1YmYzZlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OVx1YmY0YVx1YmY0Ylx1YmY0Y1x1YmY0ZFx1YmY0ZVx1YmY0Zlx1YmY1Mlx1YmY1M1x1YmY1NFx1YmY1Nlx1YmY1N1x1YmY1OFx1YmY1OVx1YmY1YVx1''@;'; put 'put ''YmY1Ylx1YmY1Y1x1YmY1ZFx1YmY1ZVx1YmY1Zlx1YmY2MFx1YmY2MVx1YmY2Mlx1YmY2M1x1YmY2NFx1YmY2NVx1YmY2Nlx1YmY2N1x1YmY2OFx1YmY2OVx1YmY2YVx1YmY2Ylx1YmY2Y1x1YmY2ZFx1YmY2ZVx1YmY2Zlx1YmY3MFx1YmY3MVx1YmY3Mlx1YmY3M1x1YmY3NFx1YmY3NVx1YmY3''@;'; put 'put ''Nlx1YmY3N1x1YmY3OFx1YmY3OVx1YmY3YVx1YmY3Ylx1YmY3Y1x1YmY3ZFx1YmY3ZVx1YmY3Zlx1YmY4MFx1YmY4MVx1YmY4Mlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTUwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTBdW3ZdXT0z''@;'; put 'put ''ODQwMCt2LFRbMzg0MDArdl09a1sxNTBdW3ZdKTtmb3Ioa1sxNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmODNcdWJmODRcdWJmODVcdWJmODZcdWJmODdcdWJmODhcdWJmODlcdWJmOGFcdWJmOGJcdWJmOGNcdWJm''@;'; put 'put ''OGRcdWJmOGVcdWJmOGZcdWJmOTBcdWJmOTFcdWJmOTJcdWJmOTNcdWJmOTVcdWJmOTZcdWJmOTdcdWJmOThcdWJmOTlcdWJmOWFcdWJmOWJcdWJmOWNcdWJmOWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmOWVcdWJmOWZcdWJmYTBcdWJmYTFcdWJmYTJcdWJmYTNc''@;'; put 'put ''dWJmYTRcdWJmYTVcdWJmYTZcdWJmYTdcdWJmYThcdWJmYTlcdWJmYWFcdWJmYWJcdWJmYWNcdWJmYWRcdWJmYWVcdWJmYWZcdWJmYjFcdWJmYjJcdWJmYjNcdWJmYjRcdWJmYjVcdWJmYjZcdWJmYjdcdWJmYjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmYjlcdWJm''@;'; put 'put ''YmFcdWJmYmJcdWJmYmNcdWJmYmRcdWJmYmVcdWJmYmZcdWJmYzBcdWJmYzFcdWJmYzJcdWJmYzNcdWJmYzRcdWJmYzZcdWJmYzdcdWJmYzhcdWJmYzlcdWJmY2FcdWJmY2JcdWJmY2VcdWJmY2ZcdWJmZDFcdWJmZDJcdWJmZDNcdWJmZDVcdWJmZDZcdWJmZDdcdWJmZDhcdWJmZDlcdWJmZGFc''@;'; put 'put ''dWJmZGJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTJcdWJmZTNcdWJmZTRcdWJmZTVcdWJmZTZcdWJmZTdcdWJmZThcdWJmZTlcdWJmZWFcdWJmZWJcdWJmZWNcdWJmZWRcdWJmZWVcdWJmZWZcdWJmZjBcdWJmZjFcdWJmZjJcdWJmZjNcdWJmZjRcdWJmZjVcdWJmZjZcdWJmZjdcdWJmZjhcdWJm''@;'; put 'put ''ZjlcdWJmZmFcdWJmZmJcdWJmZmNcdWJmZmRcdWJmZmVcdWJmZmZcdWMwMDBcdWMwMDFcdWMwMDJcdWMwMDNcdWMwMDRcdWMwMDVcdWMwMDZcdWMwMDdcdWMwMDhcdWMwMDlcdWMwMGFcdWMwMGJcdWMwMGNcdWMwMGRcdWMwMGVcdWMwMGZcdWMwMTBcdWMwMTFcdWMwMTJcdWMwMTNcdWMwMTRc''@;'; put 'put ''dWMwMTVcdWMwMTZcdWMwMTdcdWMwMThcdWMwMTlcdWMwMWFcdWMwMWJcdWMwMWNcdWMwMWRcdWMwMWVcdWMwMWZcdWMwMjBcdWMwMjFcdWMwMjJcdWMwMjNcdWMwMjRcdWMwMjVcdWMwMjZcdWMwMjdcdWMwMjhcdWMwMjlcdWMwMmFcdWMwMmJcdWMwMmNcdWMwMmRcdWMwMmVcdWMwMmZcdWMw''@;'; put 'put ''MzBcdWMwMzFcdWMwMzJcdWMwMzNcdWMwMzRcdWMwMzVcdWMwMzZcdWMwMzdcdWMwMzhcdWMwMzlcdWMwM2FcdWMwM2JcdWMwM2RcdWMwM2VcdWMwM2ZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMTUxXVt2XV09Mzg2NTYrdixUWzM4NjU2K3ZdPWtbMTUxXVt2XSk7Zm9yKGtbMTUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDQwXHVjMDQxXHVjMDQyXHVjMDQzXHVjMDQ0XHVjMDQ1XHVjMDQ2XHVjMDQ3XHVj''@;'; put 'put ''MDQ4XHVjMDQ5XHVjMDRhXHVjMDRiXHVjMDRjXHVjMDRkXHVjMDRlXHVjMDRmXHVjMDUwXHVjMDUyXHVjMDUzXHVjMDU0XHVjMDU1XHVjMDU2XHVjMDU3XHVjMDU5XHVjMDVhXHVjMDViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDVkXHVjMDVlXHVjMDVmXHVjMDYx''@;'; put 'put ''XHVjMDYyXHVjMDYzXHVjMDY0XHVjMDY1XHVjMDY2XHVjMDY3XHVjMDZhXHVjMDZiXHVjMDZjXHVjMDZkXHVjMDZlXHVjMDZmXHVjMDcwXHVjMDcxXHVjMDcyXHVjMDczXHVjMDc0XHVjMDc1XHVjMDc2XHVjMDc3XHVjMDc4XHVjMDc5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVjMDdhXHVjMDdiXHVjMDdjXHVjMDdkXHVjMDdlXHVjMDdmXHVjMDgwXHVjMDgxXHVjMDgyXHVjMDgzXHVjMDg0XHVjMDg1XHVjMDg2XHVjMDg3XHVjMDg4XHVjMDg5XHVjMDhhXHVjMDhiXHVjMDhjXHVjMDhkXHVjMDhlXHVjMDhmXHVjMDkyXHVjMDkzXHVjMDk1XHVjMDk2XHVjMDk3''@;'; put 'put ''XHVjMDk5XHVjMDlhXHVjMDliXHVjMDljXHVjMDlkXHVjMDllXHVjMDlmXHVjMGEyXHVjMGE0XHVjMGE2XHVjMGE3XHVjMGE4XHVjMGE5XHVjMGFhXHVjMGFiXHVjMGFlXHVjMGIxXHVjMGIyXHVjMGI3XHVjMGI4XHVjMGI5XHVjMGJhXHVjMGJiXHVjMGJlXHVjMGMyXHVjMGMzXHVjMGM0XHVj''@;'; put 'put ''MGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxXHVjMGQyXHVjMGQzXHVjMGQ0XHVjMGQ1XHVjMGQ2XHVjMGQ3XHVjMGRhXHVjMGRlXHVjMGRmXHVjMGUwXHVjMGUxXHVjMGUyXHVjMGUzXHVjMGU2XHVjMGU3XHVjMGU5XHVjMGVhXHVjMGViXHVjMGVkXHVjMGVl''@;'; put 'put ''XHVjMGVmXHVjMGYwXHVjMGYxXHVjMGYyXHVjMGYzXHVjMGY2XHVjMGY4XHVjMGZhXHVjMGZiXHVjMGZjXHVjMGZkXHVjMGZlXHVjMGZmXHVjMTAxXHVjMTAyXHVjMTAzXHVjMTA1XHVjMTA2XHVjMTA3XHVjMTA5XHVjMTBhXHVjMTBiXHVjMTBjXHVjMTBkXHVjMTBlXHVjMTBmXHVjMTExXHVj''@;'; put 'put ''MTEyXHVjMTEzXHVjMTE0XHVjMTE2XHVjMTE3XHVjMTE4XHVjMTE5XHVjMTFhXHVjMTFiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTUyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTJdW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzE1Ml1bdl1dPTM4OTEyK3YsVFszODkxMit2XT1rWzE1Ml1bdl0pO2ZvcihrWzE1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzEzMlx1YzEzM1x1YzEzNFx1YzEzNVx1YzEzN1x1YzEzYVx1''@;'; put 'put ''YzEzYlx1YzEzZFx1YzEzZVx1YzEzZlx1YzE0MVx1YzE0Mlx1YzE0M1x1YzE0NFx1YzE0NVx1YzE0Nlx1YzE0N1x1YzE0YVx1YzE0ZVx1YzE0Zlx1YzE1MFx1YzE1MVx1YzE1Mlx1YzE1M1x1YzE1Nlx1YzE1N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE1OVx1YzE1''@;'; put 'put ''YVx1YzE1Ylx1YzE1ZFx1YzE1ZVx1YzE1Zlx1YzE2MFx1YzE2MVx1YzE2Mlx1YzE2M1x1YzE2Nlx1YzE2YVx1YzE2Ylx1YzE2Y1x1YzE2ZFx1YzE2ZVx1YzE2Zlx1YzE3MVx1YzE3Mlx1YzE3M1x1YzE3NVx1YzE3Nlx1YzE3N1x1YzE3OVx1YzE3YVx1YzE3Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE3Y1x1YzE3ZFx1YzE3ZVx1YzE3Zlx1YzE4MFx1YzE4MVx1YzE4Mlx1YzE4M1x1YzE4NFx1YzE4Nlx1YzE4N1x1YzE4OFx1YzE4OVx1YzE4YVx1YzE4Ylx1YzE4Zlx1YzE5MVx1YzE5Mlx1YzE5M1x1YzE5NVx1YzE5N1x1YzE5OFx1YzE5OVx1YzE5YVx1YzE5''@;'; put 'put ''Ylx1YzE5ZVx1YzFhMFx1YzFhMlx1YzFhM1x1YzFhNFx1YzFhNlx1YzFhN1x1YzFhYVx1YzFhYlx1YzFhZFx1YzFhZVx1YzFhZlx1YzFiMVx1YzFiMlx1YzFiM1x1YzFiNFx1YzFiNVx1YzFiNlx1YzFiN1x1YzFiOFx1YzFiOVx1YzFiYVx1YzFiYlx1YzFiY1x1YzFiZVx1YzFiZlx1YzFjMFx1''@;'; put 'put ''YzFjMVx1YzFjMlx1YzFjM1x1YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZFx1YzFjZVx1YzFjZlx1YzFkMFx1YzFkMVx1YzFkMlx1YzFkM1x1YzFkNVx1YzFkNlx1YzFkOVx1YzFkYVx1YzFkYlx1YzFkY1x1YzFkZFx1YzFkZVx1YzFkZlx1YzFlMVx1YzFlMlx1YzFl''@;'; put 'put ''M1x1YzFlNVx1YzFlNlx1YzFlN1x1YzFlOVx1YzFlYVx1YzFlYlx1YzFlY1x1YzFlZFx1YzFlZVx1YzFlZlx1YzFmMlx1YzFmNFx1YzFmNVx1YzFmNlx1YzFmN1x1YzFmOFx1YzFmOVx1YzFmYVx1YzFmYlx1YzFmZVx1YzFmZlx1YzIwMVx1YzIwMlx1YzIwM1x1YzIwNVx1YzIwNlx1YzIwN1x1''@;'; put 'put ''YzIwOFx1YzIwOVx1YzIwYVx1YzIwYlx1YzIwZVx1YzIxMFx1YzIxMlx1YzIxM1x1YzIxNFx1YzIxNVx1YzIxNlx1YzIxN1x1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1M10ubGVuZ3RoOysrdik2NTUzMyE9PWtb''@;'; put 'put ''MTUzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTNdW3ZdXT0zOTE2OCt2LFRbMzkxNjgrdl09a1sxNTNdW3ZdKTtmb3Ioa1sxNTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyMjRcdWMyMjVcdWMyMjZcdWMyMjdc''@;'; put 'put ''dWMyMmFcdWMyMmNcdWMyMmVcdWMyMzBcdWMyMzNcdWMyMzVcdWMyMzZcdWMyMzdcdWMyMzhcdWMyMzlcdWMyM2FcdWMyM2JcdWMyM2NcdWMyM2RcdWMyM2VcdWMyM2ZcdWMyNDBcdWMyNDFcdWMyNDJcdWMyNDNcdWMyNDRcdWMyNDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWMyNDZcdWMyNDdcdWMyNDlcdWMyNGFcdWMyNGJcdWMyNGNcdWMyNGRcdWMyNGVcdWMyNGZcdWMyNTJcdWMyNTNcdWMyNTVcdWMyNTZcdWMyNTdcdWMyNTlcdWMyNWFcdWMyNWJcdWMyNWNcdWMyNWRcdWMyNWVcdWMyNWZcdWMyNjFcdWMyNjJcdWMyNjNcdWMyNjRcdWMyNjZcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyNjdcdWMyNjhcdWMyNjlcdWMyNmFcdWMyNmJcdWMyNmVcdWMyNmZcdWMyNzFcdWMyNzJcdWMyNzNcdWMyNzVcdWMyNzZcdWMyNzdcdWMyNzhcdWMyNzlcdWMyN2FcdWMyN2JcdWMyN2VcdWMyODBcdWMyODJcdWMyODNcdWMyODRcdWMy''@;'; put 'put ''ODVcdWMyODZcdWMyODdcdWMyOGFcdWMyOGJcdWMyOGNcdWMyOGRcdWMyOGVcdWMyOGZcdWMyOTFcdWMyOTJcdWMyOTNcdWMyOTRcdWMyOTVcdWMyOTZcdWMyOTdcdWMyOTlcdWMyOWFcdWMyOWNcdWMyOWVcdWMyOWZcdWMyYTBcdWMyYTFcdWMyYTJcdWMyYTNcdWMyYTZcdWMyYTdcdWMyYTlc''@;'; put 'put ''dWMyYWFcdWMyYWJcdWMyYWVcdWMyYWZcdWMyYjBcdWMyYjFcdWMyYjJcdWMyYjNcdWMyYjZcdWMyYjhcdWMyYmFcdWMyYmJcdWMyYmNcdWMyYmRcdWMyYmVcdWMyYmZcdWMyYzBcdWMyYzFcdWMyYzJcdWMyYzNcdWMyYzRcdWMyYzVcdWMyYzZcdWMyYzdcdWMyYzhcdWMyYzlcdWMyY2FcdWMy''@;'; put 'put ''Y2JcdWMyY2NcdWMyY2RcdWMyY2VcdWMyY2ZcdWMyZDBcdWMyZDFcdWMyZDJcdWMyZDNcdWMyZDRcdWMyZDVcdWMyZDZcdWMyZDdcdWMyZDhcdWMyZDlcdWMyZGFcdWMyZGJcdWMyZGVcdWMyZGZcdWMyZTFcdWMyZTJcdWMyZTVcdWMyZTZcdWMyZTdcdWMyZThcdWMyZTlcdWMyZWFcdWMyZWVc''@;'; put 'put ''dWMyZjBcdWMyZjJcdWMyZjNcdWMyZjRcdWMyZjVcdWMyZjdcdWMyZmFcdWMyZmRcdWMyZmVcdWMyZmZcdWMzMDFcdWMzMDJcdWMzMDNcdWMzMDRcdWMzMDVcdWMzMDZcdWMzMDdcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTRdLmxlbmd0aDsr''@;'; put 'put ''K3YpNjU1MzMhPT1rWzE1NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU0XVt2XV09Mzk0MjQrdixUWzM5NDI0K3ZdPWtbMTU0XVt2XSk7Zm9yKGtbMTU1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzEwXHVjMzEx''@;'; put 'put ''XHVjMzEyXHVjMzE2XHVjMzE3XHVjMzE5XHVjMzFhXHVjMzFiXHVjMzFkXHVjMzFlXHVjMzFmXHVjMzIwXHVjMzIxXHVjMzIyXHVjMzIzXHVjMzI2XHVjMzI3XHVjMzJhXHVjMzJiXHVjMzJjXHVjMzJkXHVjMzJlXHVjMzJmXHVjMzMwXHVjMzMxXHVjMzMyXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVjMzMzXHVjMzM0XHVjMzM1XHVjMzM2XHVjMzM3XHVjMzM4XHVjMzM5XHVjMzNhXHVjMzNiXHVjMzNjXHVjMzNkXHVjMzNlXHVjMzNmXHVjMzQwXHVjMzQxXHVjMzQyXHVjMzQzXHVjMzQ0XHVjMzQ2XHVjMzQ3XHVjMzQ4XHVjMzQ5XHVjMzRhXHVjMzRiXHVjMzRj''@;'; put 'put ''XHVjMzRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzRlXHVjMzRmXHVjMzUwXHVjMzUxXHVjMzUyXHVjMzUzXHVjMzU0XHVjMzU1XHVjMzU2XHVjMzU3XHVjMzU4XHVjMzU5XHVjMzVhXHVjMzViXHVjMzVjXHVjMzVkXHVjMzVlXHVjMzVmXHVjMzYwXHVjMzYxXHVj''@;'; put 'put ''MzYyXHVjMzYzXHVjMzY0XHVjMzY1XHVjMzY2XHVjMzY3XHVjMzZhXHVjMzZiXHVjMzZkXHVjMzZlXHVjMzZmXHVjMzcxXHVjMzczXHVjMzc0XHVjMzc1XHVjMzc2XHVjMzc3XHVjMzdhXHVjMzdiXHVjMzdlXHVjMzdmXHVjMzgwXHVjMzgxXHVjMzgyXHVjMzgzXHVjMzg1XHVjMzg2XHVjMzg3''@;'; put 'put ''XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkXHVjMzhlXHVjMzhmXHVjMzkwXHVjMzkxXHVjMzkyXHVjMzkzXHVjMzk0XHVjMzk1XHVjMzk2XHVjMzk3XHVjMzk4XHVjMzk5XHVjMzlhXHVjMzliXHVjMzljXHVjMzlkXHVjMzllXHVjMzlmXHVjM2EwXHVjM2ExXHVjM2EyXHVjM2EzXHVjM2E0XHVj''@;'; put 'put ''M2E1XHVjM2E2XHVjM2E3XHVjM2E4XHVjM2E5XHVjM2FhXHVjM2FiXHVjM2FjXHVjM2FkXHVjM2FlXHVjM2FmXHVjM2IwXHVjM2IxXHVjM2IyXHVjM2IzXHVjM2I0XHVjM2I1XHVjM2I2XHVjM2I3XHVjM2I4XHVjM2I5XHVjM2JhXHVjM2JiXHVjM2JjXHVjM2JkXHVjM2JlXHVjM2JmXHVjM2Mx''@;'; put 'put ''XHVjM2MyXHVjM2MzXHVjM2M0XHVjM2M1XHVjM2M2XHVjM2M3XHVjM2M4XHVjM2M5XHVjM2NhXHVjM2NiXHVjM2NjXHVjM2NkXHVjM2NlXHVjM2NmXHVjM2QwXHVjM2QxXHVjM2QyXHVjM2QzXHVjM2Q0XHVjM2Q1XHVjM2Q2XHVjM2Q3XHVjM2RhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtb''@;'; put 'put ''MTU1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNTVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1NV1bdl1dPTM5NjgwK3YsVFszOTY4MCt2XT1rWzE1NV1bdl0pO2ZvcihrWzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1YzNkYlx1YzNkZFx1YzNkZVx1YzNlMVx1YzNlM1x1YzNlNFx1YzNlNVx1YzNlNlx1YzNlN1x1YzNlYVx1YzNlYlx1YzNlY1x1YzNlZVx1YzNlZlx1YzNmMFx1YzNmMVx1YzNmMlx1YzNmM1x1YzNmNlx1YzNmN1x1YzNmOVx1YzNmYVx1YzNmYlx1YzNmY1x1YzNmZFx1YzNmZVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNmZlx1YzQwMFx1YzQwMVx1YzQwMlx1YzQwM1x1YzQwNFx1YzQwNVx1YzQwNlx1YzQwN1x1YzQwOVx1YzQwYVx1YzQwYlx1YzQwY1x1YzQwZFx1YzQwZVx1YzQwZlx1YzQxMVx1YzQxMlx1YzQxM1x1YzQxNFx1YzQxNVx1YzQxNlx1YzQx''@;'; put 'put ''N1x1YzQxOFx1YzQxOVx1YzQxYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzQxYlx1YzQxY1x1YzQxZFx1YzQxZVx1YzQxZlx1YzQyMFx1YzQyMVx1YzQyMlx1YzQyM1x1YzQyNVx1YzQyNlx1YzQyN1x1YzQyOFx1YzQyOVx1YzQyYVx1YzQyYlx1YzQyZFx1YzQyZVx1''@;'; put 'put ''YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNVx1YzQzNlx1YzQzN1x1YzQzOFx1YzQzOVx1YzQzYVx1YzQzYlx1YzQzZVx1YzQzZlx1YzQ0MFx1YzQ0MVx1YzQ0Mlx1YzQ0M1x1YzQ0NFx1YzQ0NVx1YzQ0Nlx1YzQ0N1x1YzQ0OVx1YzQ0YVx1YzQ0Ylx1YzQ0Y1x1YzQ0ZFx1YzQ0ZVx1YzQ0''@;'; put 'put ''Zlx1YzQ1MFx1YzQ1MVx1YzQ1Mlx1YzQ1M1x1YzQ1NFx1YzQ1NVx1YzQ1Nlx1YzQ1N1x1YzQ1OFx1YzQ1OVx1YzQ1YVx1YzQ1Ylx1YzQ1Y1x1YzQ1ZFx1YzQ1ZVx1YzQ1Zlx1YzQ2MFx1YzQ2MVx1YzQ2Mlx1YzQ2M1x1YzQ2Nlx1YzQ2N1x1YzQ2OVx1YzQ2YVx1YzQ2Ylx1YzQ2ZFx1YzQ2ZVx1''@;'; put 'put ''YzQ2Zlx1YzQ3MFx1YzQ3MVx1YzQ3Mlx1YzQ3M1x1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YVx1YzQ3Ylx1YzQ3Y1x1YzQ3ZFx1YzQ3ZVx1YzQ3Zlx1YzQ4MVx1YzQ4Mlx1YzQ4M1x1YzQ4NFx1YzQ4NVx1YzQ4Nlx1YzQ4N1x1YzQ4OFx1YzQ4OVx1YzQ4YVx1YzQ4Ylx1YzQ4Y1x1YzQ4ZFx1YzQ4''@;'; put 'put ''ZVx1YzQ4Zlx1YzQ5MFx1YzQ5MVx1YzQ5Mlx1YzQ5M1x1YzQ5NVx1YzQ5Nlx1YzQ5N1x1YzQ5OFx1YzQ5OVx1YzQ5YVx1YzQ5Ylx1YzQ5ZFx1YzQ5ZVx1YzQ5Zlx1YzRhMFx1YzRhMVx1YzRhMlx1YzRhM1x1YzRhNFx1YzRhNVx1YzRhNlx1YzRhN1x1YzRhOFx1YzRhOVx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLHY9MDt2IT1rWzE1Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTZdW3ZdXT0zOTkzNit2LFRbMzk5MzYrdl09a1sxNTZdW3ZdKTtmb3Ioa1sxNTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWM0YWFcdWM0YWJcdWM0YWNcdWM0YWRcdWM0YWVcdWM0YWZcdWM0YjBcdWM0YjFcdWM0YjJcdWM0YjNcdWM0YjRcdWM0YjVcdWM0YjZcdWM0YjdcdWM0YjlcdWM0YmFcdWM0YmJcdWM0YmRcdWM0YmVcdWM0YmZcdWM0YzBcdWM0YzFcdWM0YzJcdWM0YzNcdWM0YzRc''@;'; put 'put ''dWM0YzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0YzZcdWM0YzdcdWM0YzhcdWM0YzlcdWM0Y2FcdWM0Y2JcdWM0Y2NcdWM0Y2RcdWM0Y2VcdWM0Y2ZcdWM0ZDBcdWM0ZDFcdWM0ZDJcdWM0ZDNcdWM0ZDRcdWM0ZDVcdWM0ZDZcdWM0ZDdcdWM0ZDhcdWM0ZDlcdWM0''@;'; put 'put ''ZGFcdWM0ZGJcdWM0ZGNcdWM0ZGRcdWM0ZGVcdWM0ZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0ZTBcdWM0ZTFcdWM0ZTJcdWM0ZTNcdWM0ZTRcdWM0ZTVcdWM0ZTZcdWM0ZTdcdWM0ZThcdWM0ZWFcdWM0ZWJcdWM0ZWNcdWM0ZWRcdWM0ZWVcdWM0ZWZcdWM0ZjJc''@;'; put 'put ''dWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDJcdWM1MDNcdWM1MDRcdWM1MDVcdWM1MDZcdWM1MDdcdWM1MDhcdWM1MDlcdWM1MGFcdWM1MGJcdWM1MGRcdWM1MGVcdWM1MGZcdWM1MTFcdWM1MTJcdWM1MTNcdWM1MTVcdWM1MTZcdWM1''@;'; put 'put ''MTdcdWM1MThcdWM1MTlcdWM1MWFcdWM1MWJcdWM1MWRcdWM1MWVcdWM1MWZcdWM1MjBcdWM1MjFcdWM1MjJcdWM1MjNcdWM1MjRcdWM1MjVcdWM1MjZcdWM1MjdcdWM1MmFcdWM1MmJcdWM1MmRcdWM1MmVcdWM1MmZcdWM1MzFcdWM1MzJcdWM1MzNcdWM1MzRcdWM1MzVcdWM1MzZcdWM1Mzdc''@;'; put 'put ''dWM1M2FcdWM1M2NcdWM1M2VcdWM1M2ZcdWM1NDBcdWM1NDFcdWM1NDJcdWM1NDNcdWM1NDZcdWM1NDdcdWM1NGJcdWM1NGZcdWM1NTBcdWM1NTFcdWM1NTJcdWM1NTZcdWM1NWFcdWM1NWJcdWM1NWNcdWM1NWZcdWM1NjJcdWM1NjNcdWM1NjVcdWM1NjZcdWM1NjdcdWM1NjlcdWM1NmFcdWM1''@;'; put 'put ''NmJcdWM1NmNcdWM1NmRcdWM1NmVcdWM1NmZcdWM1NzJcdWM1NzZcdWM1NzdcdWM1NzhcdWM1NzlcdWM1N2FcdWM1N2JcdWM1N2VcdWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1OTJcdWM1OTNcdWM1OTRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNTddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE1N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTU3XVt2XV09NDAxOTIrdixUWzQwMTkyK3ZdPWtbMTU3XVt2XSk7Zm9yKGtbMTU4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNTk2XHVjNTk5XHVjNTlhXHVjNTliXHVjNTlkXHVjNTllXHVjNTlmXHVjNWExXHVjNWEyXHVjNWEzXHVjNWE0XHVjNWE1XHVjNWE2XHVjNWE3XHVjNWE4XHVjNWFhXHVjNWFiXHVjNWFjXHVjNWFkXHVjNWFlXHVjNWFmXHVjNWIwXHVjNWIx''@;'; put 'put ''XHVjNWIyXHVjNWIzXHVjNWI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNWI3XHVjNWJhXHVjNWJmXHVjNWMwXHVjNWMxXHVjNWMyXHVjNWMzXHVjNWNiXHVjNWNkXHVjNWNmXHVjNWQyXHVjNWQzXHVjNWQ1XHVjNWQ2XHVjNWQ3XHVjNWQ5XHVjNWRhXHVjNWRiXHVj''@;'; put 'put ''NWRjXHVjNWRkXHVjNWRlXHVjNWRmXHVjNWUyXHVjNWU0XHVjNWU2XHVjNWU3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNWU4XHVjNWU5XHVjNWVhXHVjNWViXHVjNWVmXHVjNWYxXHVjNWYyXHVjNWYzXHVjNWY1XHVjNWY4XHVjNWY5XHVjNWZhXHVjNWZiXHVjNjAy''@;'; put 'put ''XHVjNjAzXHVjNjA0XHVjNjA5XHVjNjBhXHVjNjBiXHVjNjBkXHVjNjBlXHVjNjBmXHVjNjExXHVjNjEyXHVjNjEzXHVjNjE0XHVjNjE1XHVjNjE2XHVjNjE3XHVjNjFhXHVjNjFkXHVjNjFlXHVjNjFmXHVjNjIwXHVjNjIxXHVjNjIyXHVjNjIzXHVjNjI2XHVjNjI3XHVjNjI5XHVjNjJhXHVj''@;'; put 'put ''NjJiXHVjNjJmXHVjNjMxXHVjNjMyXHVjNjM2XHVjNjM4XHVjNjNhXHVjNjNjXHVjNjNkXHVjNjNlXHVjNjNmXHVjNjQyXHVjNjQzXHVjNjQ1XHVjNjQ2XHVjNjQ3XHVjNjQ5XHVjNjRhXHVjNjRiXHVjNjRjXHVjNjRkXHVjNjRlXHVjNjRmXHVjNjUyXHVjNjU2XHVjNjU3XHVjNjU4XHVjNjU5''@;'; put 'put ''XHVjNjVhXHVjNjViXHVjNjVlXHVjNjVmXHVjNjYxXHVjNjYyXHVjNjYzXHVjNjY0XHVjNjY1XHVjNjY2XHVjNjY3XHVjNjY4XHVjNjY5XHVjNjZhXHVjNjZiXHVjNjZkXHVjNjZlXHVjNjcwXHVjNjcyXHVjNjczXHVjNjc0XHVjNjc1XHVjNjc2XHVjNjc3XHVjNjdhXHVjNjdiXHVjNjdkXHVj''@;'; put 'put ''NjdlXHVjNjdmXHVjNjgxXHVjNjgyXHVjNjgzXHVjNjg0XHVjNjg1XHVjNjg2XHVjNjg3XHVjNjhhXHVjNjhjXHVjNjhlXHVjNjhmXHVjNjkwXHVjNjkxXHVjNjkyXHVjNjkzXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjliXHVjNjlkXHVjNjllXHVjNjlmXHVjNmEwXHVjNmExXHVjNmEy''@;'; put 'put ''XHVjNmEzXHVjNmE2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTU4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNThdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE1OF1bdl1dPTQwNDQ4K3YsVFs0MDQ0OCt2XT1rWzE1OF1bdl0pO2ZvcihrWzE1OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZhOFx1YzZhYVx1YzZhYlx1YzZhY1x1YzZhZFx1YzZhZVx1YzZhZlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYlx1YzZiY1x1YzZiZFx1YzZiZVx1YzZiZlx1YzZjMlx1YzZjNFx1YzZjNlx1YzZj''@;'; put 'put ''N1x1YzZjOFx1YzZjOVx1YzZjYVx1YzZjYlx1YzZjZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZjZlx1YzZkMVx1YzZkMlx1YzZkM1x1YzZkNVx1YzZkNlx1YzZkN1x1YzZkOFx1YzZkOVx1YzZkYVx1YzZkYlx1YzZkZVx1YzZkZlx1YzZlMlx1YzZlM1x1YzZlNFx1''@;'; put 'put ''YzZlNVx1YzZlNlx1YzZlN1x1YzZlYVx1YzZlYlx1YzZlZFx1YzZlZVx1YzZlZlx1YzZmMVx1YzZmMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZmM1x1YzZmNFx1YzZmNVx1YzZmNlx1YzZmN1x1YzZmYVx1YzZmYlx1YzZmY1x1YzZmZVx1YzZmZlx1YzcwMFx1Yzcw''@;'; put 'put ''MVx1YzcwMlx1YzcwM1x1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZFx1YzcwZVx1YzcwZlx1YzcxMFx1YzcxMVx1YzcxMlx1YzcxM1x1YzcxNlx1YzcxOFx1YzcxYVx1YzcxYlx1YzcxY1x1YzcxZFx1YzcxZVx1YzcxZlx1YzcyMlx1YzcyM1x1YzcyNVx1YzcyNlx1YzcyN1x1''@;'; put 'put ''YzcyOVx1YzcyYVx1YzcyYlx1YzcyY1x1YzcyZFx1YzcyZVx1YzcyZlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NVx1Yzc0Nlx1Yzc0N1x1Yzc0OFx1Yzc0OVx1Yzc0Ylx1Yzc0ZVx1Yzc1MFx1Yzc1''@;'; put 'put ''OVx1Yzc1YVx1Yzc1Ylx1Yzc1ZFx1Yzc1ZVx1Yzc1Zlx1Yzc2MVx1Yzc2Mlx1Yzc2M1x1Yzc2NFx1Yzc2NVx1Yzc2Nlx1Yzc2N1x1Yzc2OVx1Yzc2YVx1Yzc2Y1x1Yzc2ZFx1Yzc2ZVx1Yzc2Zlx1Yzc3MFx1Yzc3MVx1Yzc3Mlx1Yzc3M1x1Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1''@;'; put 'put ''Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5OVx1Yzc5Ylx1Yzc5Y1x1Yzc5ZFx1Yzc5ZVx1Yzc5Zlx1YzdhMlx1YzdhN1x1YzdhOFx1YzdhOVx1YzdhYVx1YzdhYlx1YzdhZVx1YzdhZlx1YzdiMVx1Yzdi''@;'; put 'put ''Mlx1YzdiM1x1YzdiNVx1YzdiNlx1YzdiN1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE1OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTU5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNTldW3ZdXT00MDcwNCt2LFRbNDA3MDQrdl09a1sxNTldW3ZdKTtmb3Ioa1sxNjBdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3YjhcdWM3YjlcdWM3YmFcdWM3YmJcdWM3YmVcdWM3YzJcdWM3YzNcdWM3YzRcdWM3YzVcdWM3YzZcdWM3YzdcdWM3Y2FcdWM3Y2JcdWM3Y2RcdWM3Y2ZcdWM3ZDFcdWM3ZDJcdWM3ZDNcdWM3''@;'; put 'put ''ZDRcdWM3ZDVcdWM3ZDZcdWM3ZDdcdWM3ZDlcdWM3ZGFcdWM3ZGJcdWM3ZGNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3ZGVcdWM3ZGZcdWM3ZTBcdWM3ZTFcdWM3ZTJcdWM3ZTNcdWM3ZTVcdWM3ZTZcdWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3ZWJcdWM3ZWRcdWM3ZWVc''@;'; put 'put ''dWM3ZWZcdWM3ZjBcdWM3ZjFcdWM3ZjJcdWM3ZjNcdWM3ZjRcdWM3ZjVcdWM3ZjZcdWM3ZjdcdWM3ZjhcdWM3ZjlcdWM3ZmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3ZmJcdWM3ZmNcdWM3ZmRcdWM3ZmVcdWM3ZmZcdWM4MDJcdWM4MDNcdWM4MDVcdWM4MDZcdWM4''@;'; put 'put ''MDdcdWM4MDlcdWM4MGJcdWM4MGNcdWM4MGRcdWM4MGVcdWM4MGZcdWM4MTJcdWM4MTRcdWM4MTdcdWM4MThcdWM4MTlcdWM4MWFcdWM4MWJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjVcdWM4MjZcdWM4MjdcdWM4MjhcdWM4MjlcdWM4MmFcdWM4MmJcdWM4MmVcdWM4MzBc''@;'; put 'put ''dWM4MzJcdWM4MzNcdWM4MzRcdWM4MzVcdWM4MzZcdWM4MzdcdWM4MzlcdWM4M2FcdWM4M2JcdWM4M2RcdWM4M2VcdWM4M2ZcdWM4NDFcdWM4NDJcdWM4NDNcdWM4NDRcdWM4NDVcdWM4NDZcdWM4NDdcdWM4NGFcdWM4NGJcdWM4NGVcdWM4NGZcdWM4NTBcdWM4NTFcdWM4NTJcdWM4NTNcdWM4''@;'; put 'put ''NTVcdWM4NTZcdWM4NTdcdWM4NThcdWM4NTlcdWM4NWFcdWM4NWJcdWM4NWNcdWM4NWRcdWM4NWVcdWM4NWZcdWM4NjBcdWM4NjFcdWM4NjJcdWM4NjNcdWM4NjRcdWM4NjVcdWM4NjZcdWM4NjdcdWM4NjhcdWM4NjlcdWM4NmFcdWM4NmJcdWM4NmNcdWM4NmRcdWM4NmVcdWM4NmZcdWM4NzJc''@;'; put 'put ''dWM4NzNcdWM4NzVcdWM4NzZcdWM4NzdcdWM4NzlcdWM4N2JcdWM4N2NcdWM4N2RcdWM4N2VcdWM4N2ZcdWM4ODJcdWM4ODRcdWM4ODhcdWM4ODlcdWM4OGFcdWM4OGVcdWM4OGZcdWM4OTBcdWM4OTFcdWM4OTJcdWM4OTNcdWM4OTVcdWM4OTZcdWM4OTdcdWM4OThcdWM4OTlcdWM4OWFcdWM4''@;'; put 'put ''OWJcdWM4OWNcdWM4OWVcdWM4YTBcdWM4YTJcdWM4YTNcdWM4YTRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTYwXVt2XV09NDA5NjArdixUWzQwOTYwK3ZdPWtbMTYwXVt2XSk7Zm9yKGtb''@;'; put 'put ''MTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGE1XHVjOGE2XHVjOGE3XHVjOGE5XHVjOGFhXHVjOGFiXHVjOGFjXHVjOGFkXHVjOGFlXHVjOGFmXHVjOGIwXHVjOGIxXHVjOGIyXHVjOGIzXHVjOGI0XHVjOGI1XHVj''@;'; put 'put ''OGI2XHVjOGI3XHVjOGI4XHVjOGI5XHVjOGJhXHVjOGJiXHVjOGJlXHVjOGJmXHVjOGMwXHVjOGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGMyXHVjOGMzXHVjOGM1XHVjOGM2XHVjOGM3XHVjOGM5XHVjOGNhXHVjOGNiXHVjOGNkXHVjOGNlXHVjOGNmXHVjOGQw''@;'; put 'put ''XHVjOGQxXHVjOGQyXHVjOGQzXHVjOGQ2XHVjOGQ4XHVjOGRhXHVjOGRiXHVjOGRjXHVjOGRkXHVjOGRlXHVjOGRmXHVjOGUyXHVjOGUzXHVjOGU1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGU2XHVjOGU3XHVjOGU4XHVjOGU5XHVjOGVhXHVjOGViXHVjOGVjXHVj''@;'; put 'put ''OGVkXHVjOGVlXHVjOGVmXHVjOGYwXHVjOGYxXHVjOGYyXHVjOGYzXHVjOGY0XHVjOGY2XHVjOGY3XHVjOGY4XHVjOGY5XHVjOGZhXHVjOGZiXHVjOGZlXHVjOGZmXHVjOTAxXHVjOTAyXHVjOTAzXHVjOTA3XHVjOTA4XHVjOTA5XHVjOTBhXHVjOTBiXHVjOTBlXHUzMDAwXHUzMDAxXHUzMDAy''@;'; put 'put ''XHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUy''@;'; put 'put ''MjYwXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM0XHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1MjEyYlx1ZmZlMFx1ZmZlMVx1ZmZlNVx1MjY0Mlx1MjY0MFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx4YTdcdTIwM2JcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1''@;'; put 'put ''Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTIxOTRcdTMwMTNcdTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmNcdTIyMDhcdTIyMGJcdTIyODZcdTIyODdcdTIyODJc''@;'; put 'put ''dTIyODNcdTIyMmFcdTIyMjlcdTIyMjdcdTIyMjhcdWZmZTJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTYxXVt2XV09NDEyMTYrdixUWzQxMjE2K3ZdPWtbMTYxXVt2XSk7Zm9yKGtbMTYy''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTEwXHVjOTEyXHVjOTEzXHVjOTE0XHVjOTE1XHVjOTE2XHVjOTE3XHVjOTE5XHVjOTFhXHVjOTFiXHVjOTFjXHVjOTFkXHVjOTFlXHVjOTFmXHVjOTIwXHVjOTIxXHVjOTIy''@;'; put 'put ''XHVjOTIzXHVjOTI0XHVjOTI1XHVjOTI2XHVjOTI3XHVjOTI4XHVjOTI5XHVjOTJhXHVjOTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTJkXHVjOTJlXHVjOTJmXHVjOTMwXHVjOTMxXHVjOTMyXHVjOTMzXHVjOTM1XHVjOTM2XHVjOTM3XHVjOTM4XHVjOTM5XHVj''@;'; put 'put ''OTNhXHVjOTNiXHVjOTNjXHVjOTNkXHVjOTNlXHVjOTNmXHVjOTQwXHVjOTQxXHVjOTQyXHVjOTQzXHVjOTQ0XHVjOTQ1XHVjOTQ2XHVjOTQ3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTQ4XHVjOTQ5XHVjOTRhXHVjOTRiXHVjOTRjXHVjOTRkXHVjOTRlXHVjOTRm''@;'; put 'put ''XHVjOTUyXHVjOTUzXHVjOTU1XHVjOTU2XHVjOTU3XHVjOTU5XHVjOTVhXHVjOTViXHVjOTVjXHVjOTVkXHVjOTVlXHVjOTVmXHVjOTYyXHVjOTY0XHVjOTY1XHVjOTY2XHVjOTY3XHVjOTY4XHVjOTY5XHVjOTZhXHVjOTZiXHVjOTZkXHVjOTZlXHVjOTZmXHUyMWQyXHUyMWQ0XHUyMjAwXHUy''@;'; put 'put ''MjAzXHhiNFx1ZmY1ZVx1MDJjN1x1MDJkOFx1MDJkZFx1MDJkYVx1MDJkOVx4YjhcdTAyZGJceGExXHhiZlx1MDJkMFx1MjIyZVx1MjIxMVx1MjIwZlx4YTRcdTIxMDlcdTIwMzBcdTI1YzFcdTI1YzBcdTI1YjdcdTI1YjZcdTI2NjRcdTI2NjBcdTI2NjFcdTI2NjVcdTI2NjdcdTI2NjNcdTIy''@;'; put 'put ''OTlcdTI1YzhcdTI1YTNcdTI1ZDBcdTI1ZDFcdTI1OTJcdTI1YTRcdTI1YTVcdTI1YThcdTI1YTdcdTI1YTZcdTI1YTlcdTI2NjhcdTI2MGZcdTI2MGVcdTI2MWNcdTI2MWVceGI2XHUyMDIwXHUyMDIxXHUyMTk1XHUyMTk3XHUyMTk5XHUyMTk2XHUyMTk4XHUyNjZkXHUyNjY5XHUyNjZhXHUy''@;'; put 'put ''NjZjXHUzMjdmXHUzMjFjXHUyMTE2XHUzM2M3XHUyMTIyXHUzM2MyXHUzM2Q4XHUyMTIxXHUyMGFjXHhhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTYyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjJdW3ZdXT00MTQ3Mit2LFRbNDE0NzIrdl09a1sxNjJdW3ZdKTtmb3Ioa1sxNjNd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5NzFcdWM5NzJcdWM5NzNcdWM5NzVcdWM5NzZcdWM5NzdcdWM5NzhcdWM5NzlcdWM5N2FcdWM5N2JcdWM5N2RcdWM5N2VcdWM5N2ZcdWM5ODBcdWM5ODFcdWM5ODJcdWM5ODNc''@;'; put 'put ''dWM5ODRcdWM5ODVcdWM5ODZcdWM5ODdcdWM5OGFcdWM5OGJcdWM5OGRcdWM5OGVcdWM5OGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5OTFcdWM5OTJcdWM5OTNcdWM5OTRcdWM5OTVcdWM5OTZcdWM5OTdcdWM5OWFcdWM5OWNcdWM5OWVcdWM5OWZcdWM5YTBcdWM5''@;'; put 'put ''YTFcdWM5YTJcdWM5YTNcdWM5YTRcdWM5YTVcdWM5YTZcdWM5YTdcdWM5YThcdWM5YTlcdWM5YWFcdWM5YWJcdWM5YWNcdWM5YWRcdWM5YWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5YWZcdWM5YjBcdWM5YjFcdWM5YjJcdWM5YjNcdWM5YjRcdWM5YjVcdWM5YjZc''@;'; put 'put ''dWM5YjdcdWM5YjhcdWM5YjlcdWM5YmFcdWM5YmJcdWM5YmNcdWM5YmRcdWM5YmVcdWM5YmZcdWM5YzJcdWM5YzNcdWM5YzVcdWM5YzZcdWM5YzlcdWM5Y2JcdWM5Y2NcdWM5Y2RcdWM5Y2VcdWM5Y2ZcdWM5ZDJcdWM5ZDRcdWM5ZDdcdWM5ZDhcdWM5ZGJcdWZmMDFcdWZmMDJcdWZmMDNcdWZm''@;'; put 'put ''MDRcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZc''@;'; put 'put ''dWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZm''@;'; put 'put ''M2JcdWZmZTZcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZc''@;'; put 'put ''dWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTYzXVt2XV09NDE3MjgrdixUWzQxNzI4K3ZdPWtbMTYzXVt2''@;'; put 'put ''XSk7Zm9yKGtbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYyXHVjOWYzXHVjOWY0XHVjOWY1''@;'; put 'put ''XHVjOWY2XHVjOWY3XHVjOWZhXHVjOWZiXHVjOWZkXHVjOWZlXHVjOWZmXHVjYTAxXHVjYTAyXHVjYTAzXHVjYTA0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTA1XHVjYTA2XHVjYTA3XHVjYTBhXHVjYTBlXHVjYTBmXHVjYTEwXHVjYTExXHVjYTEyXHVjYTEzXHVj''@;'; put 'put ''YTE1XHVjYTE2XHVjYTE3XHVjYTE5XHVjYTFhXHVjYTFiXHVjYTFjXHVjYTFkXHVjYTFlXHVjYTFmXHVjYTIwXHVjYTIxXHVjYTIyXHVjYTIzXHVjYTI0XHVjYTI1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTI2XHVjYTI3XHVjYTI4XHVjYTJhXHVjYTJiXHVjYTJj''@;'; put 'put ''XHVjYTJkXHVjYTJlXHVjYTJmXHVjYTMwXHVjYTMxXHVjYTMyXHVjYTMzXHVjYTM0XHVjYTM1XHVjYTM2XHVjYTM3XHVjYTM4XHVjYTM5XHVjYTNhXHVjYTNiXHVjYTNjXHVjYTNkXHVjYTNlXHVjYTNmXHVjYTQwXHVjYTQxXHVjYTQyXHVjYTQzXHVjYTQ0XHVjYTQ1XHVjYTQ2XHUzMTMxXHUz''@;'; put 'put ''MTMyXHUzMTMzXHUzMTM0XHUzMTM1XHUzMTM2XHUzMTM3XHUzMTM4XHUzMTM5XHUzMTNhXHUzMTNiXHUzMTNjXHUzMTNkXHUzMTNlXHUzMTNmXHUzMTQwXHUzMTQxXHUzMTQyXHUzMTQzXHUzMTQ0XHUzMTQ1XHUzMTQ2XHUzMTQ3XHUzMTQ4XHUzMTQ5XHUzMTRhXHUzMTRiXHUzMTRjXHUzMTRk''@;'; put 'put ''XHUzMTRlXHUzMTRmXHUzMTUwXHUzMTUxXHUzMTUyXHUzMTUzXHUzMTU0XHUzMTU1XHUzMTU2XHUzMTU3XHUzMTU4XHUzMTU5XHUzMTVhXHUzMTViXHUzMTVjXHUzMTVkXHUzMTVlXHUzMTVmXHUzMTYwXHUzMTYxXHUzMTYyXHUzMTYzXHUzMTY0XHUzMTY1XHUzMTY2XHUzMTY3XHUzMTY4XHUz''@;'; put 'put ''MTY5XHUzMTZhXHUzMTZiXHUzMTZjXHUzMTZkXHUzMTZlXHUzMTZmXHUzMTcwXHUzMTcxXHUzMTcyXHUzMTczXHUzMTc0XHUzMTc1XHUzMTc2XHUzMTc3XHUzMTc4XHUzMTc5XHUzMTdhXHUzMTdiXHUzMTdjXHUzMTdkXHUzMTdlXHUzMTdmXHUzMTgwXHUzMTgxXHUzMTgyXHUzMTgzXHUzMTg0''@;'; put 'put ''XHUzMTg1XHUzMTg2XHUzMTg3XHUzMTg4XHUzMTg5XHUzMThhXHUzMThiXHUzMThjXHUzMThkXHUzMThlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2NF1bdl1dPTQxOTg0K3YsVFs0MTk4''@;'; put 'put ''NCt2XT1rWzE2NF1bdl0pO2ZvcihrWzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E0N1x1Y2E0OFx1Y2E0OVx1Y2E0YVx1Y2E0Ylx1Y2E0ZVx1Y2E0Zlx1Y2E1MVx1Y2E1Mlx1Y2E1M1x1Y2E1NVx1Y2E1Nlx1Y2E1''@;'; put 'put ''N1x1Y2E1OFx1Y2E1OVx1Y2E1YVx1Y2E1Ylx1Y2E1ZVx1Y2E2Mlx1Y2E2M1x1Y2E2NFx1Y2E2NVx1Y2E2Nlx1Y2E2N1x1Y2E2OVx1Y2E2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E2Ylx1Y2E2Y1x1Y2E2ZFx1Y2E2ZVx1Y2E2Zlx1Y2E3MFx1Y2E3MVx1Y2E3Mlx1''@;'; put 'put ''Y2E3M1x1Y2E3NFx1Y2E3NVx1Y2E3Nlx1Y2E3N1x1Y2E3OFx1Y2E3OVx1Y2E3YVx1Y2E3Ylx1Y2E3Y1x1Y2E3ZVx1Y2E3Zlx1Y2E4MFx1Y2E4MVx1Y2E4Mlx1Y2E4M1x1Y2E4NVx1Y2E4Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E4N1x1Y2E4OFx1Y2E4OVx1Y2E4''@;'; put 'put ''YVx1Y2E4Ylx1Y2E4Y1x1Y2E4ZFx1Y2E4ZVx1Y2E4Zlx1Y2E5MFx1Y2E5MVx1Y2E5Mlx1Y2E5M1x1Y2E5NFx1Y2E5NVx1Y2E5Nlx1Y2E5N1x1Y2E5OVx1Y2E5YVx1Y2E5Ylx1Y2E5Y1x1Y2E5ZFx1Y2E5ZVx1Y2E5Zlx1Y2FhMFx1Y2FhMVx1Y2FhMlx1Y2FhM1x1Y2FhNFx1Y2FhNVx1Y2FhNlx1''@;'; put 'put ''Y2FhN1x1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1''@;'; put 'put ''MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNj''@;'; put 'put ''M1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjVdW3ZdXT00''@;'; put 'put ''MjI0MCt2LFRbNDIyNDArdl09a1sxNjVdW3ZdKTtmb3Ioa1sxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYThcdWNhYTlcdWNhYWFcdWNhYWJcdWNhYWNcdWNhYWRcdWNhYWVcdWNhYWZcdWNhYjBcdWNhYjFcdWNh''@;'; put 'put ''YjJcdWNhYjNcdWNhYjRcdWNhYjVcdWNhYjZcdWNhYjdcdWNhYjhcdWNhYjlcdWNhYmFcdWNhYmJcdWNhYmVcdWNhYmZcdWNhYzFcdWNhYzJcdWNhYzNcdWNhYzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYzZcdWNhYzdcdWNhYzhcdWNhYzlcdWNhY2FcdWNhY2Jc''@;'; put 'put ''dWNhY2VcdWNhZDBcdWNhZDJcdWNhZDRcdWNhZDVcdWNhZDZcdWNhZDdcdWNhZGFcdWNhZGJcdWNhZGNcdWNhZGRcdWNhZGVcdWNhZGZcdWNhZTFcdWNhZTJcdWNhZTNcdWNhZTRcdWNhZTVcdWNhZTZcdWNhZTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhZThcdWNh''@;'; put 'put ''ZTlcdWNhZWFcdWNhZWJcdWNhZWRcdWNhZWVcdWNhZWZcdWNhZjBcdWNhZjFcdWNhZjJcdWNhZjNcdWNhZjVcdWNhZjZcdWNhZjdcdWNhZjhcdWNhZjlcdWNhZmFcdWNhZmJcdWNhZmNcdWNhZmRcdWNhZmVcdWNhZmZcdWNiMDBcdWNiMDFcdWNiMDJcdWNiMDNcdWNiMDRcdWNiMDVcdWNiMDZc''@;'; put 'put ''dWNiMDdcdWNiMDlcdWNiMGFcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1''@;'; put 'put ''MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDJcdTI1MTJcdTI1MTFcdTI1MWFcdTI1MTlcdTI1MTZcdTI1MTVcdTI1MGVcdTI1MGRcdTI1MWVcdTI1MWZcdTI1MjFcdTI1MjJcdTI1MjZcdTI1MjdcdTI1MjlcdTI1MmFcdTI1MmRcdTI1MmVcdTI1MzFcdTI1MzJc''@;'; put 'put ''dTI1MzVcdTI1MzZcdTI1MzlcdTI1M2FcdTI1M2RcdTI1M2VcdTI1NDBcdTI1NDFcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMTY2XVt2XV09NDI0OTYrdixUWzQyNDk2K3ZdPWtbMTY2XVt2XSk7Zm9yKGtbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjBiXHVjYjBjXHVjYjBkXHVjYjBlXHVjYjBmXHVjYjExXHVjYjEyXHVjYjEzXHVj''@;'; put 'put ''YjE1XHVjYjE2XHVjYjE3XHVjYjE5XHVjYjFhXHVjYjFiXHVjYjFjXHVjYjFkXHVjYjFlXHVjYjFmXHVjYjIyXHVjYjIzXHVjYjI0XHVjYjI1XHVjYjI2XHVjYjI3XHVjYjI4XHVjYjI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjJhXHVjYjJiXHVjYjJjXHVjYjJk''@;'; put 'put ''XHVjYjJlXHVjYjJmXHVjYjMwXHVjYjMxXHVjYjMyXHVjYjMzXHVjYjM0XHVjYjM1XHVjYjM2XHVjYjM3XHVjYjM4XHVjYjM5XHVjYjNhXHVjYjNiXHVjYjNjXHVjYjNkXHVjYjNlXHVjYjNmXHVjYjQwXHVjYjQyXHVjYjQzXHVjYjQ0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVjYjUxXHVjYjUyXHVjYjUzXHVjYjU0XHVjYjU1XHVjYjU2XHVjYjU3XHVjYjVhXHVjYjViXHVjYjVjXHVjYjVlXHVjYjVmXHVjYjYwXHVjYjYxXHVjYjYyXHVjYjYzXHVjYjY1XHVjYjY2XHVjYjY3''@;'; put 'put ''XHVjYjY4XHVjYjY5XHVjYjZhXHVjYjZiXHVjYjZjXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUzM2E0XHUzM2E1XHUzM2E2XHUzMzk5XHUzMzlhXHUzMzliXHUzMzljXHUzMzlkXHUzMzllXHUzMzlmXHUzM2EwXHUzM2ExXHUzM2EyXHUzM2NhXHUzMzhkXHUz''@;'; put 'put ''MzhlXHUzMzhmXHUzM2NmXHUzMzg4XHUzMzg5XHUzM2M4XHUzM2E3XHUzM2E4XHUzM2IwXHUzM2IxXHUzM2IyXHUzM2IzXHUzM2I0XHUzM2I1XHUzM2I2XHUzM2I3XHUzM2I4XHUzM2I5XHUzMzgwXHUzMzgxXHUzMzgyXHUzMzgzXHUzMzg0XHUzM2JhXHUzM2JiXHUzM2JjXHUzM2JkXHUzM2Jl''@;'; put 'put ''XHUzM2JmXHUzMzkwXHUzMzkxXHUzMzkyXHUzMzkzXHUzMzk0XHUyMTI2XHUzM2MwXHUzM2MxXHUzMzhhXHUzMzhiXHUzMzhjXHUzM2Q2XHUzM2M1XHUzM2FkXHUzM2FlXHUzM2FmXHUzM2RiXHUzM2E5XHUzM2FhXHUzM2FiXHUzM2FjXHUzM2RkXHUzM2QwXHUzM2QzXHUzM2MzXHUzM2M5XHUz''@;'; put 'put ''M2RjXHUzM2M2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjddW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzE2N11bdl1dPTQyNzUyK3YsVFs0Mjc1Mit2XT1rWzE2N11bdl0pO2ZvcihrWzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I2ZFx1Y2I2ZVx1Y2I2Zlx1Y2I3MFx1Y2I3MVx1Y2I3Mlx1''@;'; put 'put ''Y2I3M1x1Y2I3NFx1Y2I3NVx1Y2I3Nlx1Y2I3N1x1Y2I3YVx1Y2I3Ylx1Y2I3Y1x1Y2I3ZFx1Y2I3ZVx1Y2I3Zlx1Y2I4MFx1Y2I4MVx1Y2I4Mlx1Y2I4M1x1Y2I4NFx1Y2I4NVx1Y2I4Nlx1Y2I4N1x1Y2I4OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I4OVx1Y2I4''@;'; put 'put ''YVx1Y2I4Ylx1Y2I4Y1x1Y2I4ZFx1Y2I4ZVx1Y2I4Zlx1Y2I5MFx1Y2I5MVx1Y2I5Mlx1Y2I5M1x1Y2I5NFx1Y2I5NVx1Y2I5Nlx1Y2I5N1x1Y2I5OFx1Y2I5OVx1Y2I5YVx1Y2I5Ylx1Y2I5ZFx1Y2I5ZVx1Y2I5Zlx1Y2JhMFx1Y2JhMVx1Y2JhMlx1Y2JhM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JhNFx1Y2JhNVx1Y2JhNlx1Y2JhN1x1Y2JhOFx1Y2JhOVx1Y2JhYVx1Y2JhYlx1Y2JhY1x1Y2JhZFx1Y2JhZVx1Y2JhZlx1Y2JiMFx1Y2JiMVx1Y2JiMlx1Y2JiM1x1Y2JiNFx1Y2JiNVx1Y2JiNlx1Y2JiN1x1Y2JiOVx1Y2JiYVx1Y2JiYlx1Y2JiY1x1Y2Ji''@;'; put 'put ''ZFx1Y2JiZVx1Y2JiZlx1Y2JjMFx1Y2JjMVx1Y2JjMlx1Y2JjM1x1Y2JjNFx4YzZceGQwXHhhYVx1MDEyNlx1ZmZmZFx1MDEzMlx1ZmZmZFx1MDEzZlx1MDE0MVx4ZDhcdTAxNTJceGJhXHhkZVx1MDE2Nlx1MDE0YVx1ZmZmZFx1MzI2MFx1MzI2MVx1MzI2Mlx1MzI2M1x1MzI2NFx1MzI2NVx1''@;'; put 'put ''MzI2Nlx1MzI2N1x1MzI2OFx1MzI2OVx1MzI2YVx1MzI2Ylx1MzI2Y1x1MzI2ZFx1MzI2ZVx1MzI2Zlx1MzI3MFx1MzI3MVx1MzI3Mlx1MzI3M1x1MzI3NFx1MzI3NVx1MzI3Nlx1MzI3N1x1MzI3OFx1MzI3OVx1MzI3YVx1MzI3Ylx1MjRkMFx1MjRkMVx1MjRkMlx1MjRkM1x1MjRkNFx1MjRk''@;'; put 'put ''NVx1MjRkNlx1MjRkN1x1MjRkOFx1MjRkOVx1MjRkYVx1MjRkYlx1MjRkY1x1MjRkZFx1MjRkZVx1MjRkZlx1MjRlMFx1MjRlMVx1MjRlMlx1MjRlM1x1MjRlNFx1MjRlNVx1MjRlNlx1MjRlN1x1MjRlOFx1MjRlOVx1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1''@;'; put 'put ''MjQ2N1x1MjQ2OFx1MjQ2OVx1MjQ2YVx1MjQ2Ylx1MjQ2Y1x1MjQ2ZFx1MjQ2ZVx4YmRcdTIxNTNcdTIxNTRceGJjXHhiZVx1MjE1Ylx1MjE1Y1x1MjE1ZFx1MjE1ZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY4XVt2XS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoc2Vba1sxNjhdW3ZdXT00MzAwOCt2LFRbNDMwMDgrdl09a1sxNjhdW3ZdKTtmb3Ioa1sxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiYzVcdWNiYzZcdWNiYzdcdWNiYzhcdWNiYzlcdWNiY2FcdWNiY2Jc''@;'; put 'put ''dWNiY2NcdWNiY2RcdWNiY2VcdWNiY2ZcdWNiZDBcdWNiZDFcdWNiZDJcdWNiZDNcdWNiZDVcdWNiZDZcdWNiZDdcdWNiZDhcdWNiZDlcdWNiZGFcdWNiZGJcdWNiZGNcdWNiZGRcdWNiZGVcdWNiZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiZTBcdWNiZTFcdWNi''@;'; put 'put ''ZTJcdWNiZTNcdWNiZTVcdWNiZTZcdWNiZThcdWNiZWFcdWNiZWJcdWNiZWNcdWNiZWRcdWNiZWVcdWNiZWZcdWNiZjBcdWNiZjFcdWNiZjJcdWNiZjNcdWNiZjRcdWNiZjVcdWNiZjZcdWNiZjdcdWNiZjhcdWNiZjlcdWNiZmFcdWNiZmJcdWNiZmNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWNiZmRcdWNiZmVcdWNiZmZcdWNjMDBcdWNjMDFcdWNjMDJcdWNjMDNcdWNjMDRcdWNjMDVcdWNjMDZcdWNjMDdcdWNjMDhcdWNjMDlcdWNjMGFcdWNjMGJcdWNjMGVcdWNjMGZcdWNjMTFcdWNjMTJcdWNjMTNcdWNjMTVcdWNjMTZcdWNjMTdcdWNjMThcdWNjMTlcdWNj''@;'; put 'put ''MWFcdWNjMWJcdWNjMWVcdWNjMWZcdWNjMjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1MzIwMFx1MzIwMVx1MzIwMlx1MzIwM1x1MzIwNFx1MzIwNVx1MzIw''@;'; put 'put ''Nlx1MzIwN1x1MzIwOFx1MzIwOVx1MzIwYVx1MzIwYlx1MzIwY1x1MzIwZFx1MzIwZVx1MzIwZlx1MzIxMFx1MzIxMVx1MzIxMlx1MzIxM1x1MzIxNFx1MzIxNVx1MzIxNlx1MzIxN1x1MzIxOFx1MzIxOVx1MzIxYVx1MzIxYlx1MjQ5Y1x1MjQ5ZFx1MjQ5ZVx1MjQ5Zlx1MjRhMFx1MjRhMVx1''@;'; put 'put ''MjRhMlx1MjRhM1x1MjRhNFx1MjRhNVx1MjRhNlx1MjRhN1x1MjRhOFx1MjRhOVx1MjRhYVx1MjRhYlx1MjRhY1x1MjRhZFx1MjRhZVx1MjRhZlx1MjRiMFx1MjRiMVx1MjRiMlx1MjRiM1x1MjRiNFx1MjRiNVx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3''@;'; put 'put ''Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4MVx1MjA4Mlx1MjA4M1x1MjA4NFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY5XVt2XS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoc2Vba1sxNjldW3ZdXT00MzI2NCt2LFRbNDMyNjQrdl09a1sxNjldW3ZdKTtmb3Ioa1sxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjMjVcdWNjMjZcdWNjMmFcdWNjMmJcdWNjMmRcdWNjMmZcdWNjMzFcdWNj''@;'; put 'put ''MzJcdWNjMzNcdWNjMzRcdWNjMzVcdWNjMzZcdWNjMzdcdWNjM2FcdWNjM2ZcdWNjNDBcdWNjNDFcdWNjNDJcdWNjNDNcdWNjNDZcdWNjNDdcdWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjNGZcdWNjNTBcdWNjNTFc''@;'; put 'put ''dWNjNTJcdWNjNTNcdWNjNTZcdWNjNWFcdWNjNWJcdWNjNWNcdWNjNWRcdWNjNWVcdWNjNWZcdWNjNjFcdWNjNjJcdWNjNjNcdWNjNjVcdWNjNjdcdWNjNjlcdWNjNmFcdWNjNmJcdWNjNmNcdWNjNmRcdWNjNmVcdWNjNmZcdWNjNzFcdWNjNzJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWNjNzNcdWNjNzRcdWNjNzZcdWNjNzdcdWNjNzhcdWNjNzlcdWNjN2FcdWNjN2JcdWNjN2NcdWNjN2RcdWNjN2VcdWNjN2ZcdWNjODBcdWNjODFcdWNjODJcdWNjODNcdWNjODRcdWNjODVcdWNjODZcdWNjODdcdWNjODhcdWNjODlcdWNjOGFcdWNjOGJcdWNjOGNcdWNjOGRc''@;'; put 'put ''dWNjOGVcdWNjOGZcdWNjOTBcdWNjOTFcdWNjOTJcdWNjOTNcdTMwNDFcdTMwNDJcdTMwNDNcdTMwNDRcdTMwNDVcdTMwNDZcdTMwNDdcdTMwNDhcdTMwNDlcdTMwNGFcdTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMwNTBcdTMwNTFcdTMwNTJcdTMwNTNcdTMwNTRcdTMwNTVcdTMw''@;'; put 'put ''NTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZcdTMwNjBcdTMwNjFcdTMwNjJcdTMwNjNcdTMwNjRcdTMwNjVcdTMwNjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJcdTMwNmNcdTMwNmRcdTMwNmVcdTMwNmZcdTMwNzBcdTMwNzFc''@;'; put 'put ''dTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMwN2JcdTMwN2NcdTMwN2RcdTMwN2VcdTMwN2ZcdTMwODBcdTMwODFcdTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMwODdcdTMwODhcdTMwODlcdTMwOGFcdTMwOGJcdTMwOGNcdTMw''@;'; put 'put ''OGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3MF1bdl0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKHNlW2tbMTcwXVt2XV09NDM1MjArdixUWzQzNTIwK3ZdPWtbMTcwXVt2XSk7Zm9yKGtbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzk0XHVjYzk1XHVjYzk2XHVjYzk3XHVjYzlhXHVj''@;'; put 'put ''YzliXHVjYzlkXHVjYzllXHVjYzlmXHVjY2ExXHVjY2EyXHVjY2EzXHVjY2E0XHVjY2E1XHVjY2E2XHVjY2E3XHVjY2FhXHVjY2FlXHVjY2FmXHVjY2IwXHVjY2IxXHVjY2IyXHVjY2IzXHVjY2I2XHVjY2I3XHVjY2I5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2Jh''@;'; put 'put ''XHVjY2JiXHVjY2JkXHVjY2JlXHVjY2JmXHVjY2MwXHVjY2MxXHVjY2MyXHVjY2MzXHVjY2M2XHVjY2M4XHVjY2NhXHVjY2NiXHVjY2NjXHVjY2NkXHVjY2NlXHVjY2NmXHVjY2QxXHVjY2QyXHVjY2QzXHVjY2Q1XHVjY2Q2XHVjY2Q3XHVjY2Q4XHVjY2Q5XHVjY2RhXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2RiXHVjY2RjXHVjY2RkXHVjY2RlXHVjY2RmXHVjY2UwXHVjY2UxXHVjY2UyXHVjY2UzXHVjY2U1XHVjY2U2XHVjY2U3XHVjY2U4XHVjY2U5XHVjY2VhXHVjY2ViXHVjY2VkXHVjY2VlXHVjY2VmXHVjY2YxXHVjY2YyXHVjY2YzXHVjY2Y0XHVjY2Y1''@;'; put 'put ''XHVjY2Y2XHVjY2Y3XHVjY2Y4XHVjY2Y5XHVjY2ZhXHVjY2ZiXHVjY2ZjXHVjY2ZkXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0XHUzMGE1XHUzMGE2XHUzMGE3XHUzMGE4XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIxXHUzMGIyXHUzMGIzXHUz''@;'; put 'put ''MGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJhXHUzMGJiXHUzMGJjXHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMwXHUzMGMxXHUzMGMyXHUzMGMzXHUzMGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUzMGNkXHUzMGNlXHUzMGNm''@;'; put 'put ''XHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUzMGQ2XHUzMGQ3XHUzMGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUzMGRjXHUzMGRkXHUzMGRlXHUzMGRmXHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4XHUzMGU5XHUzMGVhXHUz''@;'; put 'put ''MGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYwXHUzMGYxXHUzMGYyXHUzMGYzXHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTcxXS5sZW5ndGg7Kyt2KTY1NTMz''@;'; put 'put ''IT09a1sxNzFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3MV1bdl1dPTQzNzc2K3YsVFs0Mzc3Nit2XT1rWzE3MV1bdl0pO2ZvcihrWzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2NmZVx1Y2NmZlx1Y2QwMFx1''@;'; put 'put ''Y2QwMlx1Y2QwM1x1Y2QwNFx1Y2QwNVx1Y2QwNlx1Y2QwN1x1Y2QwYVx1Y2QwYlx1Y2QwZFx1Y2QwZVx1Y2QwZlx1Y2QxMVx1Y2QxMlx1Y2QxM1x1Y2QxNFx1Y2QxNVx1Y2QxNlx1Y2QxN1x1Y2QxYVx1Y2QxY1x1Y2QxZVx1Y2QxZlx1Y2QyMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1Y2QyMVx1Y2QyMlx1Y2QyM1x1Y2QyNVx1Y2QyNlx1Y2QyN1x1Y2QyOVx1Y2QyYVx1Y2QyYlx1Y2QyZFx1Y2QyZVx1Y2QyZlx1Y2QzMFx1Y2QzMVx1Y2QzMlx1Y2QzM1x1Y2QzNFx1Y2QzNVx1Y2QzNlx1Y2QzN1x1Y2QzOFx1Y2QzYVx1Y2QzYlx1Y2QzY1x1Y2QzZFx1Y2QzZVx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2QzZlx1Y2Q0MFx1Y2Q0MVx1Y2Q0Mlx1Y2Q0M1x1Y2Q0NFx1Y2Q0NVx1Y2Q0Nlx1Y2Q0N1x1Y2Q0OFx1Y2Q0OVx1Y2Q0YVx1Y2Q0Ylx1Y2Q0Y1x1Y2Q0ZFx1Y2Q0ZVx1Y2Q0Zlx1Y2Q1MFx1Y2Q1MVx1Y2Q1Mlx1Y2Q1M1x1Y2Q1''@;'; put 'put ''NFx1Y2Q1NVx1Y2Q1Nlx1Y2Q1N1x1Y2Q1OFx1Y2Q1OVx1Y2Q1YVx1Y2Q1Ylx1Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1''@;'; put 'put ''MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1''@;'; put 'put ''MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3Ml0ubGVu''@;'; put 'put ''Z3RoOysrdik2NTUzMyE9PWtbMTcyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzJdW3ZdXT00NDAzMit2LFRbNDQwMzIrdl09a1sxNzJdW3ZdKTtmb3Ioa1sxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkNjFc''@;'; put 'put ''dWNkNjJcdWNkNjNcdWNkNjVcdWNkNjZcdWNkNjdcdWNkNjhcdWNkNjlcdWNkNmFcdWNkNmJcdWNkNmVcdWNkNzBcdWNkNzJcdWNkNzNcdWNkNzRcdWNkNzVcdWNkNzZcdWNkNzdcdWNkNzlcdWNkN2FcdWNkN2JcdWNkN2NcdWNkN2RcdWNkN2VcdWNkN2ZcdWNkODBcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkODFcdWNkODJcdWNkODNcdWNkODRcdWNkODVcdWNkODZcdWNkODdcdWNkODlcdWNkOGFcdWNkOGJcdWNkOGNcdWNkOGRcdWNkOGVcdWNkOGZcdWNkOTBcdWNkOTFcdWNkOTJcdWNkOTNcdWNkOTZcdWNkOTdcdWNkOTlcdWNkOWFcdWNkOWJcdWNkOWRc''@;'; put 'put ''dWNkOWVcdWNkOWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkYTBcdWNkYTFcdWNkYTJcdWNkYTNcdWNkYTZcdWNkYThcdWNkYWFcdWNkYWJcdWNkYWNcdWNkYWRcdWNkYWVcdWNkYWZcdWNkYjFcdWNkYjJcdWNkYjNcdWNkYjRcdWNkYjVcdWNkYjZcdWNkYjdcdWNk''@;'; put 'put ''YjhcdWNkYjlcdWNkYmFcdWNkYmJcdWNkYmNcdWNkYmRcdWNkYmVcdWNkYmZcdWNkYzBcdWNkYzFcdWNkYzJcdWNkYzNcdWNkYzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7''@;'; put 'put ''diE9a1sxNzNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTczXVt2XV09NDQyODgrdixUWzQ0Mjg4K3ZdPWtbMTczXVt2XSk7Zm9yKGtbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVjZGM2XHVjZGM3XHVjZGM4XHVjZGM5XHVjZGNhXHVjZGNiXHVjZGNkXHVjZGNlXHVjZGNmXHVjZGQxXHVjZGQyXHVjZGQzXHVjZGQ0XHVjZGQ1XHVjZGQ2XHVjZGQ3XHVjZGQ4XHVjZGQ5XHVjZGRhXHVjZGRiXHVjZGRjXHVjZGRkXHVjZGRlXHVjZGRmXHVjZGUwXHVjZGUxXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGUyXHVjZGUzXHVjZGU0XHVjZGU1XHVjZGU2XHVjZGU3XHVjZGU5XHVjZGVhXHVjZGViXHVjZGVkXHVjZGVlXHVjZGVmXHVjZGYxXHVjZGYyXHVjZGYzXHVjZGY0XHVjZGY1XHVjZGY2XHVjZGY3XHVjZGZhXHVjZGZjXHVjZGZl''@;'; put 'put ''XHVjZGZmXHVjZTAwXHVjZTAxXHVjZTAyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTAzXHVjZTA1XHVjZTA2XHVjZTA3XHVjZTA5XHVjZTBhXHVjZTBiXHVjZTBkXHVjZTBlXHVjZTBmXHVjZTEwXHVjZTExXHVjZTEyXHVjZTEzXHVjZTE1XHVjZTE2XHVjZTE3XHVj''@;'; put 'put ''ZTE4XHVjZTFhXHVjZTFiXHVjZTFjXHVjZTFkXHVjZTFlXHVjZTFmXHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksdj0wO3YhPWtbMTc0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3NF1bdl1dPTQ0NTQ0K3YsVFs0NDU0NCt2XT1rWzE3NF1bdl0pO2ZvcihrWzE3NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2UyY1x1Y2UyZFx1Y2UyZVx1Y2UyZlx1Y2UzMlx1Y2UzNFx1Y2UzNlx1Y2UzN1x1Y2UzOFx1Y2UzOVx1Y2UzYVx1Y2UzYlx1Y2UzY1x1Y2UzZFx1Y2UzZVx1Y2UzZlx1Y2U0MFx1Y2U0MVx1Y2U0Mlx1Y2U0M1x1Y2U0NFx1Y2U0NVx1Y2U0Nlx1Y2U0N1x1''@;'; put 'put ''Y2U0OFx1Y2U0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U0YVx1Y2U0Ylx1Y2U0Y1x1Y2U0ZFx1Y2U0ZVx1Y2U0Zlx1Y2U1MFx1Y2U1MVx1Y2U1Mlx1Y2U1M1x1Y2U1NFx1Y2U1NVx1Y2U1Nlx1Y2U1N1x1Y2U1YVx1Y2U1Ylx1Y2U1ZFx1Y2U1ZVx1Y2U2Mlx1Y2U2''@;'; put 'put ''M1x1Y2U2NFx1Y2U2NVx1Y2U2Nlx1Y2U2N1x1Y2U2YVx1Y2U2Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U2ZVx1Y2U2Zlx1Y2U3MFx1Y2U3MVx1Y2U3Mlx1Y2U3M1x1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZFx1Y2U3ZVx1Y2U3Zlx1Y2U4MFx1''@;'; put 'put ''Y2U4MVx1Y2U4Mlx1Y2U4M1x1Y2U4Nlx1Y2U4OFx1Y2U4YVx1Y2U4Ylx1Y2U4Y1x1Y2U4ZFx1Y2U4ZVx1Y2U4Zlx1Y2U5Mlx1Y2U5M1x1Y2U5NVx1Y2U5Nlx1Y2U5N1x1Y2U5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzVdW3ZdXT00NDgwMCt2LFRbNDQ4MDArdl09a1sxNzVdW3ZdKTtmb3Ioa1sxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlOWFcdWNlOWJcdWNlOWNcdWNlOWRcdWNlOWVcdWNlOWZcdWNlYTJcdWNlYTZcdWNlYTdcdWNlYThcdWNlYTlcdWNlYWFcdWNlYWJcdWNlYWVcdWNlYWZcdWNlYjBcdWNlYjFcdWNlYjJcdWNlYjNcdWNlYjRcdWNlYjVcdWNlYjZc''@;'; put 'put ''dWNlYjdcdWNlYjhcdWNlYjlcdWNlYmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlYmJcdWNlYmNcdWNlYmRcdWNlYmVcdWNlYmZcdWNlYzBcdWNlYzJcdWNlYzNcdWNlYzRcdWNlYzVcdWNlYzZcdWNlYzdcdWNlYzhcdWNlYzlcdWNlY2FcdWNlY2JcdWNlY2NcdWNl''@;'; put 'put ''Y2RcdWNlY2VcdWNlY2ZcdWNlZDBcdWNlZDFcdWNlZDJcdWNlZDNcdWNlZDRcdWNlZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlZDZcdWNlZDdcdWNlZDhcdWNlZDlcdWNlZGFcdWNlZGJcdWNlZGNcdWNlZGRcdWNlZGVcdWNlZGZcdWNlZTBcdWNlZTFcdWNlZTJc''@;'; put 'put ''dWNlZTNcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNlZWRcdWNlZWVcdWNlZWZcdWNlZjBcdWNlZjFcdWNlZjJcdWNlZjNcdWNlZjZcdWNlZmFcdWNlZmJcdWNlZmNcdWNlZmRcdWNlZmVcdWNlZmZcdWFjMDBcdWFjMDFcdWFjMDRcdWFjMDdcdWFjMDhcdWFjMDlcdWFjMGFcdWFjMTBcdWFj''@;'; put 'put ''MTFcdWFjMTJcdWFjMTNcdWFjMTRcdWFjMTVcdWFjMTZcdWFjMTdcdWFjMTlcdWFjMWFcdWFjMWJcdWFjMWNcdWFjMWRcdWFjMjBcdWFjMjRcdWFjMmNcdWFjMmRcdWFjMmZcdWFjMzBcdWFjMzFcdWFjMzhcdWFjMzlcdWFjM2NcdWFjNDBcdWFjNGJcdWFjNGRcdWFjNTRcdWFjNThcdWFjNWNc''@;'; put 'put ''dWFjNzBcdWFjNzFcdWFjNzRcdWFjNzdcdWFjNzhcdWFjN2FcdWFjODBcdWFjODFcdWFjODNcdWFjODRcdWFjODVcdWFjODZcdWFjODlcdWFjOGFcdWFjOGJcdWFjOGNcdWFjOTBcdWFjOTRcdWFjOWNcdWFjOWRcdWFjOWZcdWFjYTBcdWFjYTFcdWFjYThcdWFjYTlcdWFjYWFcdWFjYWNcdWFj''@;'; put 'put ''YWZcdWFjYjBcdWFjYjhcdWFjYjlcdWFjYmJcdWFjYmNcdWFjYmRcdWFjYzFcdWFjYzRcdWFjYzhcdWFjY2NcdWFjZDVcdWFjZDdcdWFjZTBcdWFjZTFcdWFjZTRcdWFjZTdcdWFjZThcdWFjZWFcdWFjZWNcdWFjZWZcdWFjZjBcdWFjZjFcdWFjZjNcdWFjZjVcdWFjZjZcdWFjZmNcdWFjZmRc''@;'; put 'put ''dWFkMDBcdWFkMDRcdWFkMDZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc2XVt2XV09NDUwNTYrdixUWzQ1MDU2K3ZdPWtbMTc2XVt2XSk7Zm9yKGtbMTc3XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjAyXHVjZjAzXHVjZjA1XHVjZjA2XHVjZjA3XHVjZjA5XHVjZjBhXHVjZjBiXHVjZjBjXHVjZjBkXHVjZjBlXHVjZjBmXHVjZjEyXHVjZjE0XHVjZjE2XHVjZjE3XHVjZjE4XHVjZjE5XHVjZjFhXHVjZjFi''@;'; put 'put ''XHVjZjFkXHVjZjFlXHVjZjFmXHVjZjIxXHVjZjIyXHVjZjIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjI1XHVjZjI2XHVjZjI3XHVjZjI4XHVjZjI5XHVjZjJhXHVjZjJiXHVjZjJlXHVjZjMyXHVjZjMzXHVjZjM0XHVjZjM1XHVjZjM2XHVjZjM3XHVjZjM5XHVj''@;'; put 'put ''ZjNhXHVjZjNiXHVjZjNjXHVjZjNkXHVjZjNlXHVjZjNmXHVjZjQwXHVjZjQxXHVjZjQyXHVjZjQzXHVjZjQ0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjQ1XHVjZjQ2XHVjZjQ3XHVjZjQ4XHVjZjQ5XHVjZjRhXHVjZjRiXHVjZjRjXHVjZjRkXHVjZjRlXHVjZjRm''@;'; put 'put ''XHVjZjUwXHVjZjUxXHVjZjUyXHVjZjUzXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkXHVjZjVlXHVjZjVmXHVjZjYwXHVjZjYxXHVjZjYyXHVjZjYzXHVjZjY2XHVjZjY4XHVjZjZhXHVjZjZiXHVjZjZjXHVhZDBjXHVhZDBkXHVhZDBmXHVhZDExXHVhZDE4XHVhZDFjXHVh''@;'; put 'put ''ZDIwXHVhZDI5XHVhZDJjXHVhZDJkXHVhZDM0XHVhZDM1XHVhZDM4XHVhZDNjXHVhZDQ0XHVhZDQ1XHVhZDQ3XHVhZDQ5XHVhZDUwXHVhZDU0XHVhZDU4XHVhZDYxXHVhZDYzXHVhZDZjXHVhZDZkXHVhZDcwXHVhZDczXHVhZDc0XHVhZDc1XHVhZDc2XHVhZDdiXHVhZDdjXHVhZDdkXHVhZDdm''@;'; put 'put ''XHVhZDgxXHVhZDgyXHVhZDg4XHVhZDg5XHVhZDhjXHVhZDkwXHVhZDljXHVhZDlkXHVhZGE0XHVhZGI3XHVhZGMwXHVhZGMxXHVhZGM0XHVhZGM4XHVhZGQwXHVhZGQxXHVhZGQzXHVhZGRjXHVhZGUwXHVhZGU0XHVhZGY4XHVhZGY5XHVhZGZjXHVhZGZmXHVhZTAwXHVhZTAxXHVhZTA4XHVh''@;'; put 'put ''ZTA5XHVhZTBiXHVhZTBkXHVhZTE0XHVhZTMwXHVhZTMxXHVhZTM0XHVhZTM3XHVhZTM4XHVhZTNhXHVhZTQwXHVhZTQxXHVhZTQzXHVhZTQ1XHVhZTQ2XHVhZTRhXHVhZTRjXHVhZTRkXHVhZTRlXHVhZTUwXHVhZTU0XHVhZTU2XHVhZTVjXHVhZTVkXHVhZTVmXHVhZTYwXHVhZTYxXHVhZTY1''@;'; put 'put ''XHVhZTY4XHVhZTY5XHVhZTZjXHVhZTcwXHVhZTc4XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3N11bdl1dPTQ1MzEyK3YsVFs0NTMxMit2XT1rWzE3N11bdl0pO2ZvcihrWzE3OF09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Y2ZFx1Y2Y2ZVx1Y2Y2Zlx1Y2Y3Mlx1Y2Y3M1x1Y2Y3NVx1Y2Y3Nlx1Y2Y3N1x1Y2Y3OVx1Y2Y3YVx1Y2Y3Ylx1Y2Y3Y1x1Y2Y3ZFx1Y2Y3ZVx1Y2Y3Zlx1Y2Y4MVx1Y2Y4Mlx1Y2Y4''@;'; put 'put ''M1x1Y2Y4NFx1Y2Y4Nlx1Y2Y4N1x1Y2Y4OFx1Y2Y4OVx1Y2Y4YVx1Y2Y4Ylx1Y2Y4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Y4ZVx1Y2Y4Zlx1Y2Y5MFx1Y2Y5MVx1Y2Y5Mlx1Y2Y5M1x1Y2Y5NFx1Y2Y5NVx1Y2Y5Nlx1Y2Y5N1x1Y2Y5OFx1Y2Y5OVx1Y2Y5YVx1''@;'; put 'put ''Y2Y5Ylx1Y2Y5Y1x1Y2Y5ZFx1Y2Y5ZVx1Y2Y5Zlx1Y2ZhMFx1Y2ZhMlx1Y2ZhM1x1Y2ZhNFx1Y2ZhNVx1Y2ZhNlx1Y2ZhN1x1Y2ZhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ZhYVx1Y2ZhYlx1Y2ZhY1x1Y2ZhZFx1Y2ZhZVx1Y2ZhZlx1Y2ZiMVx1Y2ZiMlx1Y2Zi''@;'; put 'put ''M1x1Y2ZiNFx1Y2ZiNVx1Y2ZiNlx1Y2ZiN1x1Y2ZiOFx1Y2ZiOVx1Y2ZiYVx1Y2ZiYlx1Y2ZiY1x1Y2ZiZFx1Y2ZiZVx1Y2ZiZlx1Y2ZjMFx1Y2ZjMVx1Y2ZjMlx1Y2ZjM1x1Y2ZjNVx1Y2ZjNlx1Y2ZjN1x1Y2ZjOFx1Y2ZjOVx1Y2ZjYVx1Y2ZjYlx1YWU3OVx1YWU3Ylx1YWU3Y1x1YWU3ZFx1''@;'; put 'put ''YWU4NFx1YWU4NVx1YWU4Y1x1YWViY1x1YWViZFx1YWViZVx1YWVjMFx1YWVjNFx1YWVjY1x1YWVjZFx1YWVjZlx1YWVkMFx1YWVkMVx1YWVkOFx1YWVkOVx1YWVkY1x1YWVlOFx1YWVlYlx1YWVlZFx1YWVmNFx1YWVmOFx1YWVmY1x1YWYwN1x1YWYwOFx1YWYwZFx1YWYxMFx1YWYyY1x1YWYy''@;'; put 'put ''ZFx1YWYzMFx1YWYzMlx1YWYzNFx1YWYzY1x1YWYzZFx1YWYzZlx1YWY0MVx1YWY0Mlx1YWY0M1x1YWY0OFx1YWY0OVx1YWY1MFx1YWY1Y1x1YWY1ZFx1YWY2NFx1YWY2NVx1YWY3OVx1YWY4MFx1YWY4NFx1YWY4OFx1YWY5MFx1YWY5MVx1YWY5NVx1YWY5Y1x1YWZiOFx1YWZiOVx1YWZiY1x1''@;'; put 'put ''YWZjMFx1YWZjN1x1YWZjOFx1YWZjOVx1YWZjYlx1YWZjZFx1YWZjZVx1YWZkNFx1YWZkY1x1YWZlOFx1YWZlOVx1YWZmMFx1YWZmMVx1YWZmNFx1YWZmOFx1YjAwMFx1YjAwMVx1YjAwNFx1YjAwY1x1YjAxMFx1YjAxNFx1YjAxY1x1YjAxZFx1YjAyOFx1YjA0NFx1YjA0NVx1YjA0OFx1YjA0''@;'; put 'put ''YVx1YjA0Y1x1YjA0ZVx1YjA1M1x1YjA1NFx1YjA1NVx1YjA1N1x1YjA1OVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzhdW3ZdXT00NTU2OCt2LFRbNDU1Njgrdl09a1sxNzhdW3ZdKTtm''@;'; put 'put ''b3Ioa1sxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmY2NcdWNmY2RcdWNmY2VcdWNmY2ZcdWNmZDBcdWNmZDFcdWNmZDJcdWNmZDNcdWNmZDRcdWNmZDVcdWNmZDZcdWNmZDdcdWNmZDhcdWNmZDlcdWNmZGFcdWNm''@;'; put 'put ''ZGJcdWNmZGNcdWNmZGRcdWNmZGVcdWNmZGZcdWNmZTJcdWNmZTNcdWNmZTVcdWNmZTZcdWNmZTdcdWNmZTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmZWFcdWNmZWJcdWNmZWNcdWNmZWRcdWNmZWVcdWNmZWZcdWNmZjJcdWNmZjRcdWNmZjZcdWNmZjdcdWNmZjhc''@;'; put 'put ''dWNmZjlcdWNmZmFcdWNmZmJcdWNmZmRcdWNmZmVcdWNmZmZcdWQwMDFcdWQwMDJcdWQwMDNcdWQwMDVcdWQwMDZcdWQwMDdcdWQwMDhcdWQwMDlcdWQwMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwMGJcdWQwMGNcdWQwMGRcdWQwMGVcdWQwMGZcdWQwMTBcdWQw''@;'; put 'put ''MTJcdWQwMTNcdWQwMTRcdWQwMTVcdWQwMTZcdWQwMTdcdWQwMTlcdWQwMWFcdWQwMWJcdWQwMWNcdWQwMWRcdWQwMWVcdWQwMWZcdWQwMjBcdWQwMjFcdWQwMjJcdWQwMjNcdWQwMjRcdWQwMjVcdWQwMjZcdWQwMjdcdWQwMjhcdWQwMjlcdWQwMmFcdWQwMmJcdWQwMmNcdWIwNWRcdWIwN2Nc''@;'; put 'put ''dWIwN2RcdWIwODBcdWIwODRcdWIwOGNcdWIwOGRcdWIwOGZcdWIwOTFcdWIwOThcdWIwOTlcdWIwOWFcdWIwOWNcdWIwOWZcdWIwYTBcdWIwYTFcdWIwYTJcdWIwYThcdWIwYTlcdWIwYWJcdWIwYWNcdWIwYWRcdWIwYWVcdWIwYWZcdWIwYjFcdWIwYjNcdWIwYjRcdWIwYjVcdWIwYjhcdWIw''@;'; put 'put ''YmNcdWIwYzRcdWIwYzVcdWIwYzdcdWIwYzhcdWIwYzlcdWIwZDBcdWIwZDFcdWIwZDRcdWIwZDhcdWIwZTBcdWIwZTVcdWIxMDhcdWIxMDlcdWIxMGJcdWIxMGNcdWIxMTBcdWIxMTJcdWIxMTNcdWIxMThcdWIxMTlcdWIxMWJcdWIxMWNcdWIxMWRcdWIxMjNcdWIxMjRcdWIxMjVcdWIxMjhc''@;'; put 'put ''dWIxMmNcdWIxMzRcdWIxMzVcdWIxMzdcdWIxMzhcdWIxMzlcdWIxNDBcdWIxNDFcdWIxNDRcdWIxNDhcdWIxNTBcdWIxNTFcdWIxNTRcdWIxNTVcdWIxNThcdWIxNWNcdWIxNjBcdWIxNzhcdWIxNzlcdWIxN2NcdWIxODBcdWIxODJcdWIxODhcdWIxODlcdWIxOGJcdWIxOGRcdWIxOTJcdWIx''@;'; put 'put ''OTNcdWIxOTRcdWIxOThcdWIxOWNcdWIxYThcdWIxY2NcdWIxZDBcdWIxZDRcdWIxZGNcdWIxZGRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc5XVt2XV09NDU4MjQrdixUWzQ1ODI0K3Zd''@;'; put 'put ''PWtbMTc5XVt2XSk7Zm9yKGtbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDJlXHVkMDJmXHVkMDMwXHVkMDMxXHVkMDMyXHVkMDMzXHVkMDM2XHVkMDM3XHVkMDM5XHVkMDNhXHVkMDNiXHVkMDNkXHVkMDNlXHVk''@;'; put 'put ''MDNmXHVkMDQwXHVkMDQxXHVkMDQyXHVkMDQzXHVkMDQ2XHVkMDQ4XHVkMDRhXHVkMDRiXHVkMDRjXHVkMDRkXHVkMDRlXHVkMDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1XHVkMDU2XHVkMDU3XHVkMDU5XHVkMDVhXHVkMDVi''@;'; put 'put ''XHVkMDVjXHVkMDVkXHVkMDVlXHVkMDVmXHVkMDYxXHVkMDYyXHVkMDYzXHVkMDY0XHVkMDY1XHVkMDY2XHVkMDY3XHVkMDY4XHVkMDY5XHVkMDZhXHVkMDZiXHVkMDZlXHVkMDZmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDcxXHVkMDcyXHVkMDczXHVkMDc1XHVk''@;'; put 'put ''MDc2XHVkMDc3XHVkMDc4XHVkMDc5XHVkMDdhXHVkMDdiXHVkMDdlXHVkMDdmXHVkMDgwXHVkMDgyXHVkMDgzXHVkMDg0XHVkMDg1XHVkMDg2XHVkMDg3XHVkMDg4XHVkMDg5XHVkMDhhXHVkMDhiXHVkMDhjXHVkMDhkXHVkMDhlXHVkMDhmXHVkMDkwXHVkMDkxXHVkMDkyXHVkMDkzXHVkMDk0''@;'; put 'put ''XHViMWRmXHViMWU4XHViMWU5XHViMWVjXHViMWYwXHViMWY5XHViMWZiXHViMWZkXHViMjA0XHViMjA1XHViMjA4XHViMjBiXHViMjBjXHViMjE0XHViMjE1XHViMjE3XHViMjE5XHViMjIwXHViMjM0XHViMjNjXHViMjU4XHViMjVjXHViMjYwXHViMjY4XHViMjY5XHViMjc0XHViMjc1XHVi''@;'; put 'put ''MjdjXHViMjg0XHViMjg1XHViMjg5XHViMjkwXHViMjkxXHViMjk0XHViMjk4XHViMjk5XHViMjlhXHViMmEwXHViMmExXHViMmEzXHViMmE1XHViMmE2XHViMmFhXHViMmFjXHViMmIwXHViMmI0XHViMmM4XHViMmM5XHViMmNjXHViMmQwXHViMmQyXHViMmQ4XHViMmQ5XHViMmRiXHViMmRk''@;'; put 'put ''XHViMmUyXHViMmU0XHViMmU1XHViMmU2XHViMmU4XHViMmViXHViMmVjXHViMmVkXHViMmVlXHViMmVmXHViMmYzXHViMmY0XHViMmY1XHViMmY3XHViMmY4XHViMmY5XHViMmZhXHViMmZiXHViMmZmXHViMzAwXHViMzAxXHViMzA0XHViMzA4XHViMzEwXHViMzExXHViMzEzXHViMzE0XHVi''@;'; put 'put ''MzE1XHViMzFjXHViMzU0XHViMzU1XHViMzU2XHViMzU4XHViMzViXHViMzVjXHViMzVlXHViMzVmXHViMzY0XHViMzY1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4MF1bdl1dPTQ2MDgw''@;'; put 'put ''K3YsVFs0NjA4MCt2XT1rWzE4MF1bdl0pO2ZvcihrWzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDA5NVx1ZDA5Nlx1ZDA5N1x1ZDA5OFx1ZDA5OVx1ZDA5YVx1ZDA5Ylx1ZDA5Y1x1ZDA5ZFx1ZDA5ZVx1ZDA5Zlx1''@;'; put 'put ''ZDBhMFx1ZDBhMVx1ZDBhMlx1ZDBhM1x1ZDBhNlx1ZDBhN1x1ZDBhOVx1ZDBhYVx1ZDBhYlx1ZDBhZFx1ZDBhZVx1ZDBhZlx1ZDBiMFx1ZDBiMVx1ZDBiMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYVx1ZDBiYlx1ZDBiY1x1ZDBi''@;'; put 'put ''ZFx1ZDBiZVx1ZDBiZlx1ZDBjMlx1ZDBjM1x1ZDBjNVx1ZDBjNlx1ZDBjN1x1ZDBjYVx1ZDBjYlx1ZDBjY1x1ZDBjZFx1ZDBjZVx1ZDBjZlx1ZDBkMlx1ZDBkNlx1ZDBkN1x1ZDBkOFx1ZDBkOVx1ZDBkYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDBkYlx1ZDBkZVx1''@;'; put 'put ''ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNVx1ZDBlNlx1ZDBlN1x1ZDBlOFx1ZDBlOVx1ZDBlYVx1ZDBlYlx1ZDBlZVx1ZDBmMlx1ZDBmM1x1ZDBmNFx1ZDBmNVx1ZDBmNlx1ZDBmN1x1ZDBmOVx1ZDBmYVx1ZDBmYlx1ZDBmY1x1ZDBmZFx1ZDBmZVx1ZDBmZlx1ZDEwMFx1ZDEwMVx1ZDEw''@;'; put 'put ''Mlx1ZDEwM1x1ZDEwNFx1YjM2N1x1YjM2OVx1YjM2Ylx1YjM2ZVx1YjM3MFx1YjM3MVx1YjM3NFx1YjM3OFx1YjM4MFx1YjM4MVx1YjM4M1x1YjM4NFx1YjM4NVx1YjM4Y1x1YjM5MFx1YjM5NFx1YjNhMFx1YjNhMVx1YjNhOFx1YjNhY1x1YjNjNFx1YjNjNVx1YjNjOFx1YjNjYlx1YjNjY1x1''@;'; put 'put ''YjNjZVx1YjNkMFx1YjNkNFx1YjNkNVx1YjNkN1x1YjNkOVx1YjNkYlx1YjNkZFx1YjNlMFx1YjNlNFx1YjNlOFx1YjNmY1x1YjQxMFx1YjQxOFx1YjQxY1x1YjQyMFx1YjQyOFx1YjQyOVx1YjQyYlx1YjQzNFx1YjQ1MFx1YjQ1MVx1YjQ1NFx1YjQ1OFx1YjQ2MFx1YjQ2MVx1YjQ2M1x1YjQ2''@;'; put 'put ''NVx1YjQ2Y1x1YjQ4MFx1YjQ4OFx1YjQ5ZFx1YjRhNFx1YjRhOFx1YjRhY1x1YjRiNVx1YjRiN1x1YjRiOVx1YjRjMFx1YjRjNFx1YjRjOFx1YjRkMFx1YjRkNVx1YjRkY1x1YjRkZFx1YjRlMFx1YjRlM1x1YjRlNFx1YjRlNlx1YjRlY1x1YjRlZFx1YjRlZlx1YjRmMVx1YjRmOFx1YjUxNFx1''@;'; put 'put ''YjUxNVx1YjUxOFx1YjUxYlx1YjUxY1x1YjUyNFx1YjUyNVx1YjUyN1x1YjUyOFx1YjUyOVx1YjUyYVx1YjUzMFx1YjUzMVx1YjUzNFx1YjUzOFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTgxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sx''@;'; put 'put ''ODFdW3ZdXT00NjMzNit2LFRbNDYzMzYrdl09a1sxODFdW3ZdKTtmb3Ioa1sxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMDVcdWQxMDZcdWQxMDdcdWQxMDhcdWQxMDlcdWQxMGFcdWQxMGJcdWQxMGNcdWQxMGVc''@;'; put 'put ''dWQxMGZcdWQxMTBcdWQxMTFcdWQxMTJcdWQxMTNcdWQxMTRcdWQxMTVcdWQxMTZcdWQxMTdcdWQxMThcdWQxMTlcdWQxMWFcdWQxMWJcdWQxMWNcdWQxMWRcdWQxMWVcdWQxMWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMjBcdWQxMjFcdWQxMjJcdWQxMjNcdWQx''@;'; put 'put ''MjRcdWQxMjVcdWQxMjZcdWQxMjdcdWQxMjhcdWQxMjlcdWQxMmFcdWQxMmJcdWQxMmNcdWQxMmRcdWQxMmVcdWQxMmZcdWQxMzJcdWQxMzNcdWQxMzVcdWQxMzZcdWQxMzdcdWQxMzlcdWQxM2JcdWQxM2NcdWQxM2RcdWQxM2VcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWQxM2ZcdWQxNDJcdWQxNDZcdWQxNDdcdWQxNDhcdWQxNDlcdWQxNGFcdWQxNGJcdWQxNGVcdWQxNGZcdWQxNTFcdWQxNTJcdWQxNTNcdWQxNTVcdWQxNTZcdWQxNTdcdWQxNThcdWQxNTlcdWQxNWFcdWQxNWJcdWQxNWVcdWQxNjBcdWQxNjJcdWQxNjNcdWQxNjRcdWQxNjVcdWQxNjZcdWQx''@;'; put 'put ''NjdcdWQxNjlcdWQxNmFcdWQxNmJcdWQxNmRcdWI1NDBcdWI1NDFcdWI1NDNcdWI1NDRcdWI1NDVcdWI1NGJcdWI1NGNcdWI1NGRcdWI1NTBcdWI1NTRcdWI1NWNcdWI1NWRcdWI1NWZcdWI1NjBcdWI1NjFcdWI1YTBcdWI1YTFcdWI1YTRcdWI1YThcdWI1YWFcdWI1YWJcdWI1YjBcdWI1YjFc''@;'; put 'put ''dWI1YjNcdWI1YjRcdWI1YjVcdWI1YmJcdWI1YmNcdWI1YmRcdWI1YzBcdWI1YzRcdWI1Y2NcdWI1Y2RcdWI1Y2ZcdWI1ZDBcdWI1ZDFcdWI1ZDhcdWI1ZWNcdWI2MTBcdWI2MTFcdWI2MTRcdWI2MThcdWI2MjVcdWI2MmNcdWI2MzRcdWI2NDhcdWI2NjRcdWI2NjhcdWI2OWNcdWI2OWRcdWI2''@;'; put 'put ''YTBcdWI2YTRcdWI2YWJcdWI2YWNcdWI2YjFcdWI2ZDRcdWI2ZjBcdWI2ZjRcdWI2ZjhcdWI3MDBcdWI3MDFcdWI3MDVcdWI3MjhcdWI3MjlcdWI3MmNcdWI3MmZcdWI3MzBcdWI3MzhcdWI3MzlcdWI3M2JcdWI3NDRcdWI3NDhcdWI3NGNcdWI3NTRcdWI3NTVcdWI3NjBcdWI3NjRcdWI3Njhc''@;'; put 'put ''dWI3NzBcdWI3NzFcdWI3NzNcdWI3NzVcdWI3N2NcdWI3N2RcdWI3ODBcdWI3ODRcdWI3OGNcdWI3OGRcdWI3OGZcdWI3OTBcdWI3OTFcdWI3OTJcdWI3OTZcdWI3OTdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4Ml1bdl0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKHNlW2tbMTgyXVt2XV09NDY1OTIrdixUWzQ2NTkyK3ZdPWtbMTgyXVt2XSk7Zm9yKGtbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTZlXHVkMTZmXHVkMTcwXHVkMTcxXHVkMTcyXHVkMTczXHVkMTc0''@;'; put 'put ''XHVkMTc1XHVkMTc2XHVkMTc3XHVkMTc4XHVkMTc5XHVkMTdhXHVkMTdiXHVkMTdkXHVkMTdlXHVkMTdmXHVkMTgwXHVkMTgxXHVkMTgyXHVkMTgzXHVkMTg1XHVkMTg2XHVkMTg3XHVkMTg5XHVkMThhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMThiXHVkMThjXHVk''@;'; put 'put ''MThkXHVkMThlXHVkMThmXHVkMTkwXHVkMTkxXHVkMTkyXHVkMTkzXHVkMTk0XHVkMTk1XHVkMTk2XHVkMTk3XHVkMTk4XHVkMTk5XHVkMTlhXHVkMTliXHVkMTljXHVkMTlkXHVkMTllXHVkMTlmXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVkMWE5XHVkMWFhXHVkMWFiXHVkMWFjXHVkMWFkXHVkMWFlXHVkMWFmXHVkMWIyXHVkMWI0XHVkMWI2XHVkMWI3XHVkMWI4XHVkMWI5XHVkMWJiXHVkMWJkXHVkMWJlXHVkMWJmXHVkMWMxXHVkMWMyXHVkMWMzXHVkMWM0XHVkMWM1XHVkMWM2XHVkMWM3XHVkMWM4XHVk''@;'; put 'put ''MWM5XHVkMWNhXHVkMWNiXHVkMWNjXHVkMWNkXHVkMWNlXHVkMWNmXHViNzk4XHViNzk5XHViNzljXHViN2EwXHViN2E4XHViN2E5XHViN2FiXHViN2FjXHViN2FkXHViN2I0XHViN2I1XHViN2I4XHViN2M3XHViN2M5XHViN2VjXHViN2VkXHViN2YwXHViN2Y0XHViN2ZjXHViN2ZkXHViN2Zm''@;'; put 'put ''XHViODAwXHViODAxXHViODA3XHViODA4XHViODA5XHViODBjXHViODEwXHViODE4XHViODE5XHViODFiXHViODFkXHViODI0XHViODI1XHViODI4XHViODJjXHViODM0XHViODM1XHViODM3XHViODM4XHViODM5XHViODQwXHViODQ0XHViODUxXHViODUzXHViODVjXHViODVkXHViODYwXHVi''@;'; put 'put ''ODY0XHViODZjXHViODZkXHViODZmXHViODcxXHViODc4XHViODdjXHViODhkXHViOGE4XHViOGIwXHViOGI0XHViOGI4XHViOGMwXHViOGMxXHViOGMzXHViOGM1XHViOGNjXHViOGQwXHViOGQ0XHViOGRkXHViOGRmXHViOGUxXHViOGU4XHViOGU5XHViOGVjXHViOGYwXHViOGY4XHViOGY5''@;'; put 'put ''XHViOGZiXHViOGZkXHViOTA0XHViOTE4XHViOTIwXHViOTNjXHViOTNkXHViOTQwXHViOTQ0XHViOTRjXHViOTRmXHViOTUxXHViOTU4XHViOTU5XHViOTVjXHViOTYwXHViOTY4XHViOTY5XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODNd''@;'; put 'put ''W3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4M11bdl1dPTQ2ODQ4K3YsVFs0Njg0OCt2XT1rWzE4M11bdl0pO2ZvcihrWzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDFkMFx1ZDFkMVx1ZDFkMlx1ZDFkM1x1ZDFk''@;'; put 'put ''NFx1ZDFkNVx1ZDFkNlx1ZDFkN1x1ZDFkOVx1ZDFkYVx1ZDFkYlx1ZDFkY1x1ZDFkZFx1ZDFkZVx1ZDFkZlx1ZDFlMFx1ZDFlMVx1ZDFlMlx1ZDFlM1x1ZDFlNFx1ZDFlNVx1ZDFlNlx1ZDFlN1x1ZDFlOFx1ZDFlOVx1ZDFlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZDFlYlx1ZDFlY1x1ZDFlZFx1ZDFlZVx1ZDFlZlx1ZDFmMFx1ZDFmMVx1ZDFmMlx1ZDFmM1x1ZDFmNVx1ZDFmNlx1ZDFmN1x1ZDFmOVx1ZDFmYVx1ZDFmYlx1ZDFmY1x1ZDFmZFx1ZDFmZVx1ZDFmZlx1ZDIwMFx1ZDIwMVx1ZDIwMlx1ZDIwM1x1ZDIwNFx1ZDIwNVx1ZDIwNlx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDIwOFx1ZDIwYVx1ZDIwYlx1ZDIwY1x1ZDIwZFx1ZDIwZVx1ZDIwZlx1ZDIxMVx1ZDIxMlx1ZDIxM1x1ZDIxNFx1ZDIxNVx1ZDIxNlx1ZDIxN1x1ZDIxOFx1ZDIxOVx1ZDIxYVx1ZDIxYlx1ZDIxY1x1ZDIxZFx1ZDIxZVx1ZDIxZlx1ZDIyMFx1''@;'; put 'put ''ZDIyMVx1ZDIyMlx1ZDIyM1x1ZDIyNFx1ZDIyNVx1ZDIyNlx1ZDIyN1x1ZDIyOFx1ZDIyOVx1Yjk2Ylx1Yjk2ZFx1Yjk3NFx1Yjk3NVx1Yjk3OFx1Yjk3Y1x1Yjk4NFx1Yjk4NVx1Yjk4N1x1Yjk4OVx1Yjk4YVx1Yjk4ZFx1Yjk4ZVx1YjlhY1x1YjlhZFx1YjliMFx1YjliNFx1YjliY1x1Yjli''@;'; put 'put ''ZFx1YjliZlx1YjljMVx1YjljOFx1YjljOVx1YjljY1x1YjljZVx1YjljZlx1YjlkMFx1YjlkMVx1YjlkMlx1YjlkOFx1YjlkOVx1YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1YjlmOFx1YjlmOVx1YjlmYVx1''@;'; put 'put ''YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1YmE0MFx1YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1YmE3MVx1YmE3NFx1YmE3''@;'; put 'put ''OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFhOVx1YmFhYlx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1YmFkOFx1YmFkOVx1YmFmY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4NF0ubGVuZ3RoOysrdik2''@;'; put 'put ''NTUzMyE9PWtbMTg0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODRdW3ZdXT00NzEwNCt2LFRbNDcxMDQrdl09a1sxODRdW3ZdKTtmb3Ioa1sxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyMmFcdWQyMmJcdWQy''@;'; put 'put ''MmVcdWQyMmZcdWQyMzFcdWQyMzJcdWQyMzNcdWQyMzVcdWQyMzZcdWQyMzdcdWQyMzhcdWQyMzlcdWQyM2FcdWQyM2JcdWQyM2VcdWQyNDBcdWQyNDJcdWQyNDNcdWQyNDRcdWQyNDVcdWQyNDZcdWQyNDdcdWQyNDlcdWQyNGFcdWQyNGJcdWQyNGNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWQyNGRcdWQyNGVcdWQyNGZcdWQyNTBcdWQyNTFcdWQyNTJcdWQyNTNcdWQyNTRcdWQyNTVcdWQyNTZcdWQyNTdcdWQyNThcdWQyNTlcdWQyNWFcdWQyNWJcdWQyNWRcdWQyNWVcdWQyNWZcdWQyNjBcdWQyNjFcdWQyNjJcdWQyNjNcdWQyNjVcdWQyNjZcdWQyNjdcdWQy''@;'; put 'put ''NjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNjlcdWQyNmFcdWQyNmJcdWQyNmNcdWQyNmRcdWQyNmVcdWQyNmZcdWQyNzBcdWQyNzFcdWQyNzJcdWQyNzNcdWQyNzRcdWQyNzVcdWQyNzZcdWQyNzdcdWQyNzhcdWQyNzlcdWQyN2FcdWQyN2JcdWQyN2NcdWQyN2Rc''@;'; put 'put ''dWQyN2VcdWQyN2ZcdWQyODJcdWQyODNcdWQyODVcdWQyODZcdWQyODdcdWQyODlcdWQyOGFcdWQyOGJcdWQyOGNcdWJiMDBcdWJiMDRcdWJiMGRcdWJiMGZcdWJiMTFcdWJiMThcdWJiMWNcdWJiMjBcdWJiMjlcdWJiMmJcdWJiMzRcdWJiMzVcdWJiMzZcdWJiMzhcdWJiM2JcdWJiM2NcdWJi''@;'; put 'put ''M2RcdWJiM2VcdWJiNDRcdWJiNDVcdWJiNDdcdWJiNDlcdWJiNGRcdWJiNGZcdWJiNTBcdWJiNTRcdWJiNThcdWJiNjFcdWJiNjNcdWJiNmNcdWJiODhcdWJiOGNcdWJiOTBcdWJiYTRcdWJiYThcdWJiYWNcdWJiYjRcdWJiYjdcdWJiYzBcdWJiYzRcdWJiYzhcdWJiZDBcdWJiZDNcdWJiZjhc''@;'; put 'put ''dWJiZjlcdWJiZmNcdWJiZmZcdWJjMDBcdWJjMDJcdWJjMDhcdWJjMDlcdWJjMGJcdWJjMGNcdWJjMGRcdWJjMGZcdWJjMTFcdWJjMTRcdWJjMTVcdWJjMTZcdWJjMTdcdWJjMThcdWJjMWJcdWJjMWNcdWJjMWRcdWJjMWVcdWJjMWZcdWJjMjRcdWJjMjVcdWJjMjdcdWJjMjlcdWJjMmRcdWJj''@;'; put 'put ''MzBcdWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBcdWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJcdWJjOGNcdWJjOGVcdWJjOTRcdWJjOTVcdWJjOTdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODVd''@;'; put 'put ''Lmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg1XVt2XV09NDczNjArdixUWzQ3MzYwK3ZdPWtbMTg1XVt2XSk7Zm9yKGtbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVk''@;'; put 'put ''MjhkXHVkMjhlXHVkMjhmXHVkMjkyXHVkMjkzXHVkMjk0XHVkMjk2XHVkMjk3XHVkMjk4XHVkMjk5XHVkMjlhXHVkMjliXHVkMjlkXHVkMjllXHVkMjlmXHVkMmExXHVkMmEyXHVkMmEzXHVkMmE1XHVkMmE2XHVkMmE3XHVkMmE4XHVkMmE5XHVkMmFhXHVkMmFiXHVkMmFkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmFlXHVkMmFmXHVkMmIwXHVkMmIyXHVkMmIzXHVkMmI0XHVkMmI1XHVkMmI2XHVkMmI3XHVkMmJhXHVkMmJiXHVkMmJkXHVkMmJlXHVkMmMxXHVkMmMzXHVkMmM0XHVkMmM1XHVkMmM2XHVkMmM3XHVkMmNhXHVkMmNjXHVkMmNkXHVkMmNlXHVk''@;'; put 'put ''MmNmXHVkMmQwXHVkMmQxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkXHVkMmRlXHVkMmRmXHVkMmUwXHVkMmUxXHVkMmUyXHVkMmUzXHVkMmU2XHVkMmU3XHVkMmU4XHVkMmU5''@;'; put 'put ''XHVkMmVhXHVkMmViXHVkMmVjXHVkMmVkXHVkMmVlXHVkMmVmXHVkMmYyXHVkMmYzXHVkMmY1XHVkMmY2XHVkMmY3XHVkMmY5XHVkMmZhXHViYzk5XHViYzlhXHViY2EwXHViY2ExXHViY2E0XHViY2E3XHViY2E4XHViY2IwXHViY2IxXHViY2IzXHViY2I0XHViY2I1XHViY2JjXHViY2JkXHVi''@;'; put 'put ''Y2MwXHViY2M0XHViY2NkXHViY2NmXHViY2QwXHViY2QxXHViY2Q1XHViY2Q4XHViY2RjXHViY2Y0XHViY2Y1XHViY2Y2XHViY2Y4XHViY2ZjXHViZDA0XHViZDA1XHViZDA3XHViZDA5XHViZDEwXHViZDE0XHViZDI0XHViZDJjXHViZDQwXHViZDQ4XHViZDQ5XHViZDRjXHViZDUwXHViZDU4''@;'; put 'put ''XHViZDU5XHViZDY0XHViZDY4XHViZDgwXHViZDgxXHViZDg0XHViZDg3XHViZDg4XHViZDg5XHViZDhhXHViZDkwXHViZDkxXHViZDkzXHViZDk1XHViZDk5XHViZDlhXHViZDljXHViZGE0XHViZGIwXHViZGI4XHViZGQ0XHViZGQ1XHViZGQ4XHViZGRjXHViZGU5XHViZGYwXHViZGY0XHVi''@;'; put 'put ''ZGY4XHViZTAwXHViZTAzXHViZTA1XHViZTBjXHViZTBkXHViZTEwXHViZTE0XHViZTFjXHViZTFkXHViZTFmXHViZTQ0XHViZTQ1XHViZTQ4XHViZTRjXHViZTRlXHViZTU0XHViZTU1XHViZTU3XHViZTU5XHViZTVhXHViZTViXHViZTYwXHViZTYxXHViZTY0XHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''dj0wO3YhPWtbMTg2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4Nl1bdl1dPTQ3NjE2K3YsVFs0NzYxNit2XT1rWzE4Nl1bdl0pO2ZvcihrWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZDJmYlx1ZDJmY1x1ZDJmZFx1ZDJmZVx1ZDJmZlx1ZDMwMlx1ZDMwNFx1ZDMwNlx1ZDMwN1x1ZDMwOFx1ZDMwOVx1ZDMwYVx1ZDMwYlx1ZDMwZlx1ZDMxMVx1ZDMxMlx1ZDMxM1x1ZDMxNVx1ZDMxN1x1ZDMxOFx1ZDMxOVx1ZDMxYVx1ZDMxYlx1ZDMxZVx1ZDMyMlx1ZDMy''@;'; put 'put ''M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDMyNFx1ZDMyNlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1ZDMyZVx1ZDMyZlx1ZDMzMVx1ZDMzMlx1ZDMzM1x1ZDMzNFx1ZDMzNVx1ZDMzNlx1ZDMzN1x1ZDMzYVx1ZDMzZVx1ZDMzZlx1ZDM0MFx1ZDM0MVx1ZDM0Mlx1''@;'; put 'put ''ZDM0M1x1ZDM0Nlx1ZDM0N1x1ZDM0OFx1ZDM0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDM0YVx1ZDM0Ylx1ZDM0Y1x1ZDM0ZFx1ZDM0ZVx1ZDM0Zlx1ZDM1MFx1ZDM1MVx1ZDM1Mlx1ZDM1M1x1ZDM1NFx1ZDM1NVx1ZDM1Nlx1ZDM1N1x1ZDM1OFx1ZDM1OVx1ZDM1''@;'; put 'put ''YVx1ZDM1Ylx1ZDM1Y1x1ZDM1ZFx1ZDM1ZVx1ZDM1Zlx1ZDM2MFx1ZDM2MVx1ZDM2Mlx1ZDM2M1x1ZDM2NFx1ZDM2NVx1ZDM2Nlx1ZDM2N1x1ZDM2OFx1ZDM2OVx1YmU2OFx1YmU2YVx1YmU3MFx1YmU3MVx1YmU3M1x1YmU3NFx1YmU3NVx1YmU3Ylx1YmU3Y1x1YmU3ZFx1YmU4MFx1YmU4NFx1''@;'; put 'put ''YmU4Y1x1YmU4ZFx1YmU4Zlx1YmU5MFx1YmU5MVx1YmU5OFx1YmU5OVx1YmVhOFx1YmVkMFx1YmVkMVx1YmVkNFx1YmVkN1x1YmVkOFx1YmVlMFx1YmVlM1x1YmVlNFx1YmVlNVx1YmVlY1x1YmYwMVx1YmYwOFx1YmYwOVx1YmYxOFx1YmYxOVx1YmYxYlx1YmYxY1x1YmYxZFx1YmY0MFx1YmY0''@;'; put 'put ''MVx1YmY0NFx1YmY0OFx1YmY1MFx1YmY1MVx1YmY1NVx1YmY5NFx1YmZiMFx1YmZjNVx1YmZjY1x1YmZjZFx1YmZkMFx1YmZkNFx1YmZkY1x1YmZkZlx1YmZlMVx1YzAzY1x1YzA1MVx1YzA1OFx1YzA1Y1x1YzA2MFx1YzA2OFx1YzA2OVx1YzA5MFx1YzA5MVx1YzA5NFx1YzA5OFx1YzBhMFx1''@;'; put 'put ''YzBhMVx1YzBhM1x1YzBhNVx1YzBhY1x1YzBhZFx1YzBhZlx1YzBiMFx1YzBiM1x1YzBiNFx1YzBiNVx1YzBiNlx1YzBiY1x1YzBiZFx1YzBiZlx1YzBjMFx1YzBjMVx1YzBjNVx1YzBjOFx1YzBjOVx1YzBjY1x1YzBkMFx1YzBkOFx1YzBkOVx1YzBkYlx1YzBkY1x1YzBkZFx1YzBlNFx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODddW3ZdXT00Nzg3Mit2LFRbNDc4NzIrdl09a1sxODddW3ZdKTtmb3Ioa1sxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzNmFcdWQzNmJcdWQzNmNcdWQzNmRcdWQzNmVcdWQzNmZcdWQzNzBcdWQzNzFcdWQzNzJcdWQzNzNcdWQzNzRcdWQzNzVcdWQzNzZcdWQzNzdcdWQzNzhcdWQzNzlcdWQzN2FcdWQzN2JcdWQzN2VcdWQzN2ZcdWQzODFcdWQzODJcdWQzODNcdWQz''@;'; put 'put ''ODVcdWQzODZcdWQzODdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzODhcdWQzODlcdWQzOGFcdWQzOGJcdWQzOGVcdWQzOTJcdWQzOTNcdWQzOTRcdWQzOTVcdWQzOTZcdWQzOTdcdWQzOWFcdWQzOWJcdWQzOWRcdWQzOWVcdWQzOWZcdWQzYTFcdWQzYTJcdWQzYTNc''@;'; put 'put ''dWQzYTRcdWQzYTVcdWQzYTZcdWQzYTdcdWQzYWFcdWQzYWNcdWQzYWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzYWZcdWQzYjBcdWQzYjFcdWQzYjJcdWQzYjNcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmRcdWQzYmVcdWQzYmZcdWQz''@;'; put 'put ''YzBcdWQzYzFcdWQzYzJcdWQzYzNcdWQzYzZcdWQzYzdcdWQzY2FcdWQzY2JcdWQzY2NcdWQzY2RcdWQzY2VcdWQzY2ZcdWQzZDFcdWQzZDJcdWQzZDNcdWQzZDRcdWQzZDVcdWQzZDZcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRcdWMwZjVcdWMwZjdcdWMwZjlcdWMxMDBcdWMxMDRcdWMxMDhc''@;'; put 'put ''dWMxMTBcdWMxMTVcdWMxMWNcdWMxMWRcdWMxMWVcdWMxMWZcdWMxMjBcdWMxMjNcdWMxMjRcdWMxMjZcdWMxMjdcdWMxMmNcdWMxMmRcdWMxMmZcdWMxMzBcdWMxMzFcdWMxMzZcdWMxMzhcdWMxMzlcdWMxM2NcdWMxNDBcdWMxNDhcdWMxNDlcdWMxNGJcdWMxNGNcdWMxNGRcdWMxNTRcdWMx''@;'; put 'put ''NTVcdWMxNThcdWMxNWNcdWMxNjRcdWMxNjVcdWMxNjdcdWMxNjhcdWMxNjlcdWMxNzBcdWMxNzRcdWMxNzhcdWMxODVcdWMxOGNcdWMxOGRcdWMxOGVcdWMxOTBcdWMxOTRcdWMxOTZcdWMxOWNcdWMxOWRcdWMxOWZcdWMxYTFcdWMxYTVcdWMxYThcdWMxYTlcdWMxYWNcdWMxYjBcdWMxYmRc''@;'; put 'put ''dWMxYzRcdWMxYzhcdWMxY2NcdWMxZDRcdWMxZDdcdWMxZDhcdWMxZTBcdWMxZTRcdWMxZThcdWMxZjBcdWMxZjFcdWMxZjNcdWMxZmNcdWMxZmRcdWMyMDBcdWMyMDRcdWMyMGNcdWMyMGRcdWMyMGZcdWMyMTFcdWMyMThcdWMyMTlcdWMyMWNcdWMyMWZcdWMyMjBcdWMyMjhcdWMyMjlcdWMy''@;'; put 'put ''MmJcdWMyMmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg4XVt2XV09NDgxMjgrdixUWzQ4MTI4K3ZdPWtbMTg4XVt2XSk7Zm9yKGtbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Q3XHVkM2Q5XHVkM2RhXHVkM2RiXHVkM2RjXHVkM2RkXHVkM2RlXHVkM2RmXHVkM2UwXHVkM2UyXHVkM2U0XHVkM2U1XHVkM2U2XHVkM2U3XHVkM2U4XHVkM2U5XHVkM2VhXHVkM2ViXHVkM2VlXHVkM2VmXHVkM2YxXHVk''@;'; put 'put ''M2YyXHVkM2YzXHVkM2Y1XHVkM2Y2XHVkM2Y3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Y4XHVkM2Y5XHVkM2ZhXHVkM2ZiXHVkM2ZlXHVkNDAwXHVkNDAyXHVkNDAzXHVkNDA0XHVkNDA1XHVkNDA2XHVkNDA3XHVkNDA5XHVkNDBhXHVkNDBiXHVkNDBjXHVkNDBk''@;'; put 'put ''XHVkNDBlXHVkNDBmXHVkNDEwXHVkNDExXHVkNDEyXHVkNDEzXHVkNDE0XHVkNDE1XHVkNDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDE3XHVkNDE4XHVkNDE5XHVkNDFhXHVkNDFiXHVkNDFjXHVkNDFlXHVkNDFmXHVkNDIwXHVkNDIxXHVkNDIyXHVkNDIzXHVk''@;'; put 'put ''NDI0XHVkNDI1XHVkNDI2XHVkNDI3XHVkNDI4XHVkNDI5XHVkNDJhXHVkNDJiXHVkNDJjXHVkNDJkXHVkNDJlXHVkNDJmXHVkNDMwXHVkNDMxXHVkNDMyXHVkNDMzXHVkNDM0XHVkNDM1XHVkNDM2XHVkNDM3XHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVjMjU0''@;'; put 'put ''XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVjMjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRjXHVj''@;'; put 'put ''MmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVjMzI5''@;'; put 'put ''XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVjMzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4XHVj''@;'; put 'put ''NDEwXHVjNDI0XHVjNDJjXHVjNDMwXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4OV1bdl1dPTQ4Mzg0K3YsVFs0ODM4NCt2XT1rWzE4OV1bdl0pO2ZvcihrWzE5MF09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQzOFx1ZDQzOVx1ZDQzYVx1ZDQzYlx1ZDQzY1x1ZDQzZFx1ZDQzZVx1ZDQzZlx1ZDQ0MVx1ZDQ0Mlx1ZDQ0M1x1ZDQ0NVx1ZDQ0Nlx1ZDQ0N1x1ZDQ0OFx1ZDQ0OVx1ZDQ0YVx1ZDQ0Ylx1ZDQ0Y1x1''@;'; put 'put ''ZDQ0ZFx1ZDQ0ZVx1ZDQ0Zlx1ZDQ1MFx1ZDQ1MVx1ZDQ1Mlx1ZDQ1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ1NFx1ZDQ1NVx1ZDQ1Nlx1ZDQ1N1x1ZDQ1OFx1ZDQ1OVx1ZDQ1YVx1ZDQ1Ylx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1ZDQ2Mlx1ZDQ2M1x1ZDQ2''@;'; put 'put ''NVx1ZDQ2Nlx1ZDQ2N1x1ZDQ2OFx1ZDQ2OVx1ZDQ2YVx1ZDQ2Ylx1ZDQ2Y1x1ZDQ2ZVx1ZDQ3MFx1ZDQ3MVx1ZDQ3Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ3M1x1ZDQ3NFx1ZDQ3NVx1ZDQ3Nlx1ZDQ3N1x1ZDQ3YVx1ZDQ3Ylx1ZDQ3ZFx1ZDQ3ZVx1ZDQ4MVx1''@;'; put 'put ''ZDQ4M1x1ZDQ4NFx1ZDQ4NVx1ZDQ4Nlx1ZDQ4N1x1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZVx1ZDQ4Zlx1ZDQ5MFx1ZDQ5MVx1ZDQ5Mlx1ZDQ5M1x1ZDQ5NVx1ZDQ5Nlx1ZDQ5N1x1ZDQ5OFx1ZDQ5OVx1ZDQ5YVx1ZDQ5Ylx1ZDQ5Y1x1ZDQ5ZFx1YzQzNFx1YzQzY1x1YzQzZFx1YzQ0OFx1YzQ2NFx1YzQ2''@;'; put 'put ''NVx1YzQ2OFx1YzQ2Y1x1YzQ3NFx1YzQ3NVx1YzQ3OVx1YzQ4MFx1YzQ5NFx1YzQ5Y1x1YzRiOFx1YzRiY1x1YzRlOVx1YzRmMFx1YzRmMVx1YzRmNFx1YzRmOFx1YzRmYVx1YzRmZlx1YzUwMFx1YzUwMVx1YzUwY1x1YzUxMFx1YzUxNFx1YzUxY1x1YzUyOFx1YzUyOVx1YzUyY1x1YzUzMFx1''@;'; put 'put ''YzUzOFx1YzUzOVx1YzUzYlx1YzUzZFx1YzU0NFx1YzU0NVx1YzU0OFx1YzU0OVx1YzU0YVx1YzU0Y1x1YzU0ZFx1YzU0ZVx1YzU1M1x1YzU1NFx1YzU1NVx1YzU1N1x1YzU1OFx1YzU1OVx1YzU1ZFx1YzU1ZVx1YzU2MFx1YzU2MVx1YzU2NFx1YzU2OFx1YzU3MFx1YzU3MVx1YzU3M1x1YzU3''@;'; put 'put ''NFx1YzU3NVx1YzU3Y1x1YzU3ZFx1YzU4MFx1YzU4NFx1YzU4N1x1YzU4Y1x1YzU4ZFx1YzU4Zlx1YzU5MVx1YzU5NVx1YzU5N1x1YzU5OFx1YzU5Y1x1YzVhMFx1YzVhOVx1YzViNFx1YzViNVx1YzViOFx1YzViOVx1YzViYlx1YzViY1x1YzViZFx1YzViZVx1YzVjNFx1YzVjNVx1YzVjNlx1''@;'; put 'put ''YzVjN1x1YzVjOFx1YzVjOVx1YzVjYVx1YzVjY1x1YzVjZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTBdW3ZdXT00ODY0MCt2LFRbNDg2NDArdl09a1sxOTBdW3ZdKTtmb3Ioa1sxOTFd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0OWVcdWQ0OWZcdWQ0YTBcdWQ0YTFcdWQ0YTJcdWQ0YTNcdWQ0YTRcdWQ0YTVcdWQ0YTZcdWQ0YTdcdWQ0YThcdWQ0YWFcdWQ0YWJcdWQ0YWNcdWQ0YWRcdWQ0YWVcdWQ0YWZc''@;'; put 'put ''dWQ0YjBcdWQ0YjFcdWQ0YjJcdWQ0YjNcdWQ0YjRcdWQ0YjVcdWQ0YjZcdWQ0YjdcdWQ0YjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0YjlcdWQ0YmFcdWQ0YmJcdWQ0YmNcdWQ0YmRcdWQ0YmVcdWQ0YmZcdWQ0YzBcdWQ0YzFcdWQ0YzJcdWQ0YzNcdWQ0YzRcdWQ0''@;'; put 'put ''YzVcdWQ0YzZcdWQ0YzdcdWQ0YzhcdWQ0YzlcdWQ0Y2FcdWQ0Y2JcdWQ0Y2RcdWQ0Y2VcdWQ0Y2ZcdWQ0ZDFcdWQ0ZDJcdWQ0ZDNcdWQ0ZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0ZDZcdWQ0ZDdcdWQ0ZDhcdWQ0ZDlcdWQ0ZGFcdWQ0ZGJcdWQ0ZGRcdWQ0ZGVc''@;'; put 'put ''dWQ0ZTBcdWQ0ZTFcdWQ0ZTJcdWQ0ZTNcdWQ0ZTRcdWQ0ZTVcdWQ0ZTZcdWQ0ZTdcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0ZWVcdWQ0ZWZcdWQ0ZjFcdWQ0ZjJcdWQ0ZjNcdWQ0ZjRcdWQ0ZjVcdWQ0ZjZcdWQ0ZjdcdWQ0ZjlcdWQ0ZmFcdWQ0ZmNcdWM1ZDBcdWM1ZDFcdWM1ZDRcdWM1''@;'; put 'put ''ZDhcdWM1ZTBcdWM1ZTFcdWM1ZTNcdWM1ZTVcdWM1ZWNcdWM1ZWRcdWM1ZWVcdWM1ZjBcdWM1ZjRcdWM1ZjZcdWM1ZjdcdWM1ZmNcdWM1ZmRcdWM1ZmVcdWM1ZmZcdWM2MDBcdWM2MDFcdWM2MDVcdWM2MDZcdWM2MDdcdWM2MDhcdWM2MGNcdWM2MTBcdWM2MThcdWM2MTlcdWM2MWJcdWM2MWNc''@;'; put 'put ''dWM2MjRcdWM2MjVcdWM2MjhcdWM2MmNcdWM2MmRcdWM2MmVcdWM2MzBcdWM2MzNcdWM2MzRcdWM2MzVcdWM2MzdcdWM2MzlcdWM2M2JcdWM2NDBcdWM2NDFcdWM2NDRcdWM2NDhcdWM2NTBcdWM2NTFcdWM2NTNcdWM2NTRcdWM2NTVcdWM2NWNcdWM2NWRcdWM2NjBcdWM2NmNcdWM2NmZcdWM2''@;'; put 'put ''NzFcdWM2NzhcdWM2NzlcdWM2N2NcdWM2ODBcdWM2ODhcdWM2ODlcdWM2OGJcdWM2OGRcdWM2OTRcdWM2OTVcdWM2OThcdWM2OWNcdWM2YTRcdWM2YTVcdWM2YTdcdWM2YTlcdWM2YjBcdWM2YjFcdWM2YjRcdWM2YjhcdWM2YjlcdWM2YmFcdWM2YzBcdWM2YzFcdWM2YzNcdWM2YzVcdWM2Y2Nc''@;'; put 'put ''dWM2Y2RcdWM2ZDBcdWM2ZDRcdWM2ZGNcdWM2ZGRcdWM2ZTBcdWM2ZTFcdWM2ZThcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTkxXVt2XV09NDg4OTYrdixUWzQ4ODk2K3ZdPWtbMTkxXVt2''@;'; put 'put ''XSk7Zm9yKGtbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNGZlXHVkNGZmXHVkNTAwXHVkNTAxXHVkNTAyXHVkNTAzXHVkNTA1XHVkNTA2XHVkNTA3XHVkNTA5XHVkNTBhXHVkNTBiXHVkNTBkXHVkNTBlXHVkNTBm''@;'; put 'put ''XHVkNTEwXHVkNTExXHVkNTEyXHVkNTEzXHVkNTE2XHVkNTE4XHVkNTE5XHVkNTFhXHVkNTFiXHVkNTFjXHVkNTFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTFlXHVkNTFmXHVkNTIwXHVkNTIxXHVkNTIyXHVkNTIzXHVkNTI0XHVkNTI1XHVkNTI2XHVkNTI3XHVk''@;'; put 'put ''NTI4XHVkNTI5XHVkNTJhXHVkNTJiXHVkNTJjXHVkNTJkXHVkNTJlXHVkNTJmXHVkNTMwXHVkNTMxXHVkNTMyXHVkNTMzXHVkNTM0XHVkNTM1XHVkNTM2XHVkNTM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNm''@;'; put 'put ''XHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1XHVkNTQ2XHVkNTQ3XHVkNTQ4XHVkNTQ5XHVkNTRhXHVkNTRiXHVkNTRlXHVkNTUwXHVkNTUyXHVkNTUzXHVkNTU0XHVkNTU1XHVkNTU2XHVkNTU3XHVkNTVhXHVkNTViXHVkNTVkXHVkNTVlXHVkNTVmXHVkNTYxXHVkNTYyXHVkNTYzXHVjNmU5XHVj''@;'; put 'put ''NmVjXHVjNmYwXHVjNmY4XHVjNmY5XHVjNmZkXHVjNzA0XHVjNzA1XHVjNzA4XHVjNzBjXHVjNzE0XHVjNzE1XHVjNzE3XHVjNzE5XHVjNzIwXHVjNzIxXHVjNzI0XHVjNzI4XHVjNzMwXHVjNzMxXHVjNzMzXHVjNzM1XHVjNzM3XHVjNzNjXHVjNzNkXHVjNzQwXHVjNzQ0XHVjNzRhXHVjNzRj''@;'; put 'put ''XHVjNzRkXHVjNzRmXHVjNzUxXHVjNzUyXHVjNzUzXHVjNzU0XHVjNzU1XHVjNzU2XHVjNzU3XHVjNzU4XHVjNzVjXHVjNzYwXHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVj''@;'; put 'put ''NzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2Qw''@;'; put 'put ''XHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0XHVjODA4XHVjODBhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTkyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5Ml1bdl1dPTQ5MTUyK3YsVFs0OTE1''@;'; put 'put ''Mit2XT1rWzE5Ml1bdl0pO2ZvcihrWzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDU2NFx1ZDU2Nlx1ZDU2N1x1ZDU2YVx1ZDU2Y1x1ZDU2ZVx1ZDU2Zlx1ZDU3MFx1ZDU3MVx1ZDU3Mlx1ZDU3M1x1ZDU3Nlx1ZDU3''@;'; put 'put ''N1x1ZDU3OVx1ZDU3YVx1ZDU3Ylx1ZDU3ZFx1ZDU3ZVx1ZDU3Zlx1ZDU4MFx1ZDU4MVx1ZDU4Mlx1ZDU4M1x1ZDU4Nlx1ZDU4YVx1ZDU4Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4Zlx1ZDU5MVx1ZDU5Mlx1ZDU5M1x1ZDU5NFx1''@;'; put 'put ''ZDU5NVx1ZDU5Nlx1ZDU5N1x1ZDU5OFx1ZDU5OVx1ZDU5YVx1ZDU5Ylx1ZDU5Y1x1ZDU5ZFx1ZDU5ZVx1ZDU5Zlx1ZDVhMFx1ZDVhMVx1ZDVhMlx1ZDVhM1x1ZDVhNFx1ZDVhNlx1ZDVhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDVhOFx1ZDVhOVx1ZDVhYVx1ZDVh''@;'; put 'put ''Ylx1ZDVhY1x1ZDVhZFx1ZDVhZVx1ZDVhZlx1ZDViMFx1ZDViMVx1ZDViMlx1ZDViM1x1ZDViNFx1ZDViNVx1ZDViNlx1ZDViN1x1ZDViOFx1ZDViOVx1ZDViYVx1ZDViYlx1ZDViY1x1ZDViZFx1ZDViZVx1ZDViZlx1ZDVjMFx1ZDVjMVx1ZDVjMlx1ZDVjM1x1ZDVjNFx1ZDVjNVx1ZDVjNlx1''@;'; put 'put ''ZDVjN1x1YzgxMFx1YzgxMVx1YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1YzgyZlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1Yzg0ZFx1Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1Yzg3OFx1Yzg3YVx1Yzg4''@;'; put 'put ''MFx1Yzg4MVx1Yzg4M1x1Yzg4NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1YzhkNVx1YzhkN1x1YzhkOVx1YzhlMFx1YzhlMVx1YzhlNFx1YzhmNVx1YzhmY1x1''@;'; put 'put ''YzhmZFx1YzkwMFx1YzkwNFx1YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1Yzk3MFx1Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1Yzk4Y1x1Yzk5MFx1Yzk5''@;'; put 'put ''OFx1Yzk5OVx1Yzk5Ylx1Yzk5ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTNdW3ZdXT00''@;'; put 'put ''OTQwOCt2LFRbNDk0MDgrdl09a1sxOTNdW3ZdKTtmb3Ioa1sxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1Y2FcdWQ1Y2JcdWQ1Y2RcdWQ1Y2VcdWQ1Y2ZcdWQ1ZDFcdWQ1ZDNcdWQ1ZDRcdWQ1ZDVcdWQ1ZDZcdWQ1''@;'; put 'put ''ZDdcdWQ1ZGFcdWQ1ZGNcdWQ1ZGVcdWQ1ZGZcdWQ1ZTBcdWQ1ZTFcdWQ1ZTJcdWQ1ZTNcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFcdWQ1ZWJcdWQ1ZWRcdWQ1ZWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1ZWZcdWQ1ZjBcdWQ1ZjFcdWQ1ZjJcdWQ1ZjNcdWQ1ZjZc''@;'; put 'put ''dWQ1ZjhcdWQ1ZmFcdWQ1ZmJcdWQ1ZmNcdWQ1ZmRcdWQ1ZmVcdWQ1ZmZcdWQ2MDJcdWQ2MDNcdWQ2MDVcdWQ2MDZcdWQ2MDdcdWQ2MDlcdWQ2MGFcdWQ2MGJcdWQ2MGNcdWQ2MGRcdWQ2MGVcdWQ2MGZcdWQ2MTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2MTZcdWQ2''@;'; put 'put ''MTdcdWQ2MThcdWQ2MTlcdWQ2MWFcdWQ2MWJcdWQ2MWRcdWQ2MWVcdWQ2MWZcdWQ2MjFcdWQ2MjJcdWQ2MjNcdWQ2MjVcdWQ2MjZcdWQ2MjdcdWQ2MjhcdWQ2MjlcdWQ2MmFcdWQ2MmJcdWQ2MmNcdWQ2MmVcdWQ2MmZcdWQ2MzBcdWQ2MzFcdWQ2MzJcdWQ2MzNcdWQ2MzRcdWQ2MzVcdWQ2MzZc''@;'; put 'put ''dWQ2MzdcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5ZTdcdWM5ZWNcdWM5ZWRcdWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNhMGJcdWNhMGNcdWNhMGRcdWNh''@;'; put 'put ''MTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhcdWNhN2RcdWNhODRcdWNhOThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNcdWNhZDhcdWNhZDlcdWNhZTBc''@;'; put 'put ''dWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNiNTBcdWNiNThcdWNiNTlcdWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNiZTlcdWNjMGNcdWNjMGRcdWNj''@;'; put 'put ''MTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhcdWNjMzlcdWNjM2JcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMTk0XVt2XV09NDk2NjQrdixUWzQ5NjY0K3ZdPWtbMTk0XVt2XSk7Zm9yKGtbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjNkXHVkNjNlXHVkNjNmXHVkNjQxXHVkNjQyXHVkNjQzXHVkNjQ0XHVkNjQ2XHVk''@;'; put 'put ''NjQ3XHVkNjRhXHVkNjRjXHVkNjRlXHVkNjRmXHVkNjUwXHVkNjUyXHVkNjUzXHVkNjU2XHVkNjU3XHVkNjU5XHVkNjVhXHVkNjViXHVkNjVkXHVkNjVlXHVkNjVmXHVkNjYwXHVkNjYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjYyXHVkNjYzXHVkNjY0XHVkNjY1''@;'; put 'put ''XHVkNjY2XHVkNjY4XHVkNjZhXHVkNjZiXHVkNjZjXHVkNjZkXHVkNjZlXHVkNjZmXHVkNjcyXHVkNjczXHVkNjc1XHVkNjc2XHVkNjc3XHVkNjc4XHVkNjc5XHVkNjdhXHVkNjdiXHVkNjdjXHVkNjdkXHVkNjdlXHVkNjdmXHVkNjgwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVkNjgxXHVkNjgyXHVkNjg0XHVkNjg2XHVkNjg3XHVkNjg4XHVkNjg5XHVkNjhhXHVkNjhiXHVkNjhlXHVkNjhmXHVkNjkxXHVkNjkyXHVkNjkzXHVkNjk1XHVkNjk2XHVkNjk3XHVkNjk4XHVkNjk5XHVkNjlhXHVkNjliXHVkNjljXHVkNjllXHVkNmEwXHVkNmEyXHVkNmEzXHVkNmE0''@;'; put 'put ''XHVkNmE1XHVkNmE2XHVkNmE3XHVkNmE5XHVkNmFhXHVjYzNjXHVjYzNkXHVjYzNlXHVjYzQ0XHVjYzQ1XHVjYzQ4XHVjYzRjXHVjYzU0XHVjYzU1XHVjYzU3XHVjYzU4XHVjYzU5XHVjYzYwXHVjYzY0XHVjYzY2XHVjYzY4XHVjYzcwXHVjYzc1XHVjYzk4XHVjYzk5XHVjYzljXHVjY2EwXHVj''@;'; put 'put ''Y2E4XHVjY2E5XHVjY2FiXHVjY2FjXHVjY2FkXHVjY2I0XHVjY2I1XHVjY2I4XHVjY2JjXHVjY2M0XHVjY2M1XHVjY2M3XHVjY2M5XHVjY2QwXHVjY2Q0XHVjY2U0XHVjY2VjXHVjY2YwXHVjZDAxXHVjZDA4XHVjZDA5XHVjZDBjXHVjZDEwXHVjZDE4XHVjZDE5XHVjZDFiXHVjZDFkXHVjZDI0''@;'; put 'put ''XHVjZDI4XHVjZDJjXHVjZDM5XHVjZDVjXHVjZDYwXHVjZDY0XHVjZDZjXHVjZDZkXHVjZDZmXHVjZDcxXHVjZDc4XHVjZDg4XHVjZDk0XHVjZDk1XHVjZDk4XHVjZDljXHVjZGE0XHVjZGE1XHVjZGE3XHVjZGE5XHVjZGIwXHVjZGM0XHVjZGNjXHVjZGQwXHVjZGU4XHVjZGVjXHVjZGYwXHVj''@;'; put 'put ''ZGY4XHVjZGY5XHVjZGZiXHVjZGZkXHVjZTA0XHVjZTA4XHVjZTBjXHVjZTE0XHVjZTE5XHVjZTIwXHVjZTIxXHVjZTI0XHVjZTI4XHVjZTMwXHVjZTMxXHVjZTMzXHVjZTM1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTVdW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzE5NV1bdl1dPTQ5OTIwK3YsVFs0OTkyMCt2XT1rWzE5NV1bdl0pO2ZvcihrWzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZhYlx1ZDZhZFx1ZDZhZVx1ZDZhZlx1ZDZiMVx1ZDZiMlx1''@;'; put 'put ''ZDZiM1x1ZDZiNFx1ZDZiNVx1ZDZiNlx1ZDZiN1x1ZDZiOFx1ZDZiYVx1ZDZiY1x1ZDZiZFx1ZDZiZVx1ZDZiZlx1ZDZjMFx1ZDZjMVx1ZDZjMlx1ZDZjM1x1ZDZjNlx1ZDZjN1x1ZDZjOVx1ZDZjYVx1ZDZjYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZjZFx1ZDZj''@;'; put 'put ''ZVx1ZDZjZlx1ZDZkMFx1ZDZkMlx1ZDZkM1x1ZDZkNVx1ZDZkNlx1ZDZkOFx1ZDZkYVx1ZDZkYlx1ZDZkY1x1ZDZkZFx1ZDZkZVx1ZDZkZlx1ZDZlMVx1ZDZlMlx1ZDZlM1x1ZDZlNVx1ZDZlNlx1ZDZlN1x1ZDZlOVx1ZDZlYVx1ZDZlYlx1ZDZlY1x1ZDZlZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1ZDZmNlx1ZDZmN1x1ZDZmOFx1ZDZmOVx1ZDZmYVx1ZDZmYlx1ZDZmZVx1ZDZmZlx1ZDcwMVx1ZDcwMlx1ZDcwM1x1ZDcwNVx1ZDcwNlx1ZDcwN1x1ZDcwOFx1ZDcwOVx1ZDcwYVx1ZDcwYlx1ZDcw''@;'; put 'put ''Y1x1ZDcwZFx1ZDcwZVx1ZDcwZlx1ZDcxMFx1ZDcxMlx1ZDcxM1x1ZDcxNFx1Y2U1OFx1Y2U1OVx1Y2U1Y1x1Y2U1Zlx1Y2U2MFx1Y2U2MVx1Y2U2OFx1Y2U2OVx1Y2U2Ylx1Y2U2ZFx1Y2U3NFx1Y2U3NVx1Y2U3OFx1Y2U3Y1x1Y2U4NFx1Y2U4NVx1Y2U4N1x1Y2U4OVx1Y2U5MFx1Y2U5MVx1''@;'; put 'put ''Y2U5NFx1Y2U5OFx1Y2VhMFx1Y2VhMVx1Y2VhM1x1Y2VhNFx1Y2VhNVx1Y2VhY1x1Y2VhZFx1Y2VjMVx1Y2VlNFx1Y2VlNVx1Y2VlOFx1Y2VlYlx1Y2VlY1x1Y2VmNFx1Y2VmNVx1Y2VmN1x1Y2VmOFx1Y2VmOVx1Y2YwMFx1Y2YwMVx1Y2YwNFx1Y2YwOFx1Y2YxMFx1Y2YxMVx1Y2YxM1x1Y2Yx''@;'; put 'put ''NVx1Y2YxY1x1Y2YyMFx1Y2YyNFx1Y2YyY1x1Y2YyZFx1Y2YyZlx1Y2YzMFx1Y2YzMVx1Y2YzOFx1Y2Y1NFx1Y2Y1NVx1Y2Y1OFx1Y2Y1Y1x1Y2Y2NFx1Y2Y2NVx1Y2Y2N1x1Y2Y2OVx1Y2Y3MFx1Y2Y3MVx1Y2Y3NFx1Y2Y3OFx1Y2Y4MFx1Y2Y4NVx1Y2Y4Y1x1Y2ZhMVx1Y2ZhOFx1Y2ZiMFx1''@;'; put 'put ''Y2ZjNFx1Y2ZlMFx1Y2ZlMVx1Y2ZlNFx1Y2ZlOFx1Y2ZmMFx1Y2ZmMVx1Y2ZmM1x1Y2ZmNVx1Y2ZmY1x1ZDAwMFx1ZDAwNFx1ZDAxMVx1ZDAxOFx1ZDAyZFx1ZDAzNFx1ZDAzNVx1ZDAzOFx1ZDAzY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtb''@;'; put 'put ''MTk2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTZdW3ZdXT01MDE3Nit2LFRbNTAxNzYrdl09a1sxOTZdW3ZdKTtmb3Ioa1sxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3MTVcdWQ3MTZcdWQ3MTdcdWQ3MWFc''@;'; put 'put ''dWQ3MWJcdWQ3MWRcdWQ3MWVcdWQ3MWZcdWQ3MjFcdWQ3MjJcdWQ3MjNcdWQ3MjRcdWQ3MjVcdWQ3MjZcdWQ3MjdcdWQ3MmFcdWQ3MmNcdWQ3MmVcdWQ3MmZcdWQ3MzBcdWQ3MzFcdWQ3MzJcdWQ3MzNcdWQ3MzZcdWQ3MzdcdWQ3MzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWQ3M2FcdWQ3M2JcdWQ3M2RcdWQ3M2VcdWQ3M2ZcdWQ3NDBcdWQ3NDFcdWQ3NDJcdWQ3NDNcdWQ3NDVcdWQ3NDZcdWQ3NDhcdWQ3NGFcdWQ3NGJcdWQ3NGNcdWQ3NGRcdWQ3NGVcdWQ3NGZcdWQ3NTJcdWQ3NTNcdWQ3NTVcdWQ3NWFcdWQ3NWJcdWQ3NWNcdWQ3NWRcdWQ3NWVcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3NWZcdWQ3NjJcdWQ3NjRcdWQ3NjZcdWQ3NjdcdWQ3NjhcdWQ3NmFcdWQ3NmJcdWQ3NmRcdWQ3NmVcdWQ3NmZcdWQ3NzFcdWQ3NzJcdWQ3NzNcdWQ3NzVcdWQ3NzZcdWQ3NzdcdWQ3NzhcdWQ3NzlcdWQ3N2FcdWQ3N2JcdWQ3N2VcdWQ3''@;'; put 'put ''N2ZcdWQ3ODBcdWQ3ODJcdWQ3ODNcdWQ3ODRcdWQ3ODVcdWQ3ODZcdWQ3ODdcdWQ3OGFcdWQ3OGJcdWQwNDRcdWQwNDVcdWQwNDdcdWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQwNzRcdWQwN2NcdWQwN2RcdWQwODFcdWQwYTRcdWQwYTVcdWQwYThc''@;'; put 'put ''dWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQwZDBcdWQwZDFcdWQwZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRcdWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhcdWQxMGRcdWQxMzBcdWQx''@;'; put 'put ''MzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRcdWQxNTBcdWQxNTRcdWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQxODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQxYThcdWQxYjBcdWQxYjFc''@;'; put 'put ''dWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQyMTBcdWQyMmNcdWQyMmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTddLmxlbmd0aDsr''@;'; put 'put ''K3YpNjU1MzMhPT1rWzE5N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk3XVt2XV09NTA0MzIrdixUWzUwNDMyK3ZdPWtbMTk3XVt2XSk7Zm9yKGtbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNzhkXHVkNzhl''@;'; put 'put ''XHVkNzhmXHVkNzkxXHVkNzkyXHVkNzkzXHVkNzk0XHVkNzk1XHVkNzk2XHVkNzk3XHVkNzlhXHVkNzljXHVkNzllXHVkNzlmXHVkN2EwXHVkN2ExXHVkN2EyXHVkN2EzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjY0XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVkMmJj''@;'; put 'put ''XHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFkXHVk''@;'; put 'put ''MzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVkM2Ew''@;'; put 'put ''XHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtb''@;'; put 'put ''MTk4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOThdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5OF1bdl1dPTUwNjg4K3YsVFs1MDY4OCt2XT1rWzE5OF1bdl0pO2ZvcihrWzE5OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQwOFx1ZDQxZFx1ZDQ0MFx1ZDQ0NFx1ZDQ1Y1x1ZDQ2MFx1ZDQ2NFx1ZDQ2ZFx1ZDQ2Zlx1ZDQ3OFx1ZDQ3OVx1ZDQ3Y1x1ZDQ3Zlx1ZDQ4''@;'; put 'put ''MFx1ZDQ4Mlx1ZDQ4OFx1ZDQ4OVx1ZDQ4Ylx1ZDQ4ZFx1ZDQ5NFx1ZDRhOVx1ZDRjY1x1ZDRkMFx1ZDRkNFx1ZDRkY1x1ZDRkZlx1ZDRlOFx1ZDRlY1x1ZDRmMFx1ZDRmOFx1ZDRmYlx1ZDRmZFx1ZDUwNFx1ZDUwOFx1ZDUwY1x1ZDUxNFx1ZDUxNVx1ZDUxN1x1ZDUzY1x1ZDUzZFx1ZDU0MFx1''@;'; put 'put ''ZDU0NFx1ZDU0Y1x1ZDU0ZFx1ZDU0Zlx1ZDU1MVx1ZDU1OFx1ZDU1OVx1ZDU1Y1x1ZDU2MFx1ZDU2NVx1ZDU2OFx1ZDU2OVx1ZDU2Ylx1ZDU2ZFx1ZDU3NFx1ZDU3NVx1ZDU3OFx1ZDU3Y1x1ZDU4NFx1ZDU4NVx1ZDU4N1x1ZDU4OFx1ZDU4OVx1ZDU5MFx1ZDVhNVx1ZDVjOFx1ZDVjOVx1ZDVj''@;'; put 'put ''Y1x1ZDVkMFx1ZDVkMlx1ZDVkOFx1ZDVkOVx1ZDVkYlx1ZDVkZFx1ZDVlNFx1ZDVlNVx1ZDVlOFx1ZDVlY1x1ZDVmNFx1ZDVmNVx1ZDVmN1x1ZDVmOVx1ZDYwMFx1ZDYwMVx1ZDYwNFx1ZDYwOFx1ZDYxMFx1ZDYxMVx1ZDYxM1x1ZDYxNFx1ZDYxNVx1ZDYxY1x1ZDYyMFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLHY9MDt2IT1rWzE5OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTk5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTldW3ZdXT01MDk0NCt2LFRbNTA5NDQrdl09a1sxOTldW3ZdKTtmb3Ioa1syMDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2MjRcdWQ2MmRcdWQ2MzhcdWQ2MzlcdWQ2M2NcdWQ2NDBcdWQ2NDVcdWQ2NDhcdWQ2NDlcdWQ2NGJcdWQ2NGRcdWQ2''@;'; put 'put ''NTFcdWQ2NTRcdWQ2NTVcdWQ2NThcdWQ2NWNcdWQ2NjdcdWQ2NjlcdWQ2NzBcdWQ2NzFcdWQ2NzRcdWQ2ODNcdWQ2ODVcdWQ2OGNcdWQ2OGRcdWQ2OTBcdWQ2OTRcdWQ2OWRcdWQ2OWZcdWQ2YTFcdWQ2YThcdWQ2YWNcdWQ2YjBcdWQ2YjlcdWQ2YmJcdWQ2YzRcdWQ2YzVcdWQ2YzhcdWQ2Y2Nc''@;'; put 'put ''dWQ2ZDFcdWQ2ZDRcdWQ2ZDdcdWQ2ZDlcdWQ2ZTBcdWQ2ZTRcdWQ2ZThcdWQ2ZjBcdWQ2ZjVcdWQ2ZmNcdWQ2ZmRcdWQ3MDBcdWQ3MDRcdWQ3MTFcdWQ3MThcdWQ3MTlcdWQ3MWNcdWQ3MjBcdWQ3MjhcdWQ3MjlcdWQ3MmJcdWQ3MmRcdWQ3MzRcdWQ3MzVcdWQ3MzhcdWQ3M2NcdWQ3NDRcdWQ3''@;'; put 'put ''NDdcdWQ3NDlcdWQ3NTBcdWQ3NTFcdWQ3NTRcdWQ3NTZcdWQ3NTdcdWQ3NThcdWQ3NTlcdWQ3NjBcdWQ3NjFcdWQ3NjNcdWQ3NjVcdWQ3NjlcdWQ3NmNcdWQ3NzBcdWQ3NzRcdWQ3N2NcdWQ3N2RcdWQ3ODFcdWQ3ODhcdWQ3ODlcdWQ3OGNcdWQ3OTBcdWQ3OThcdWQ3OTlcdWQ3OWJcdWQ3OWRc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwMF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjAwXVt2XV09NTEyMDArdixUWzUxMjAwK3ZdPWtbMjAwXVt2XSk7Zm9yKGtbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1''@;'; put 'put ''YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4MzA0XHU4ODU3XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFh''@;'; put 'put ''XHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3XHU2M2MwXHU2NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0''@;'; put 'put ''ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1NzRlXHU1ODJhXHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUx''@;'; put 'put ''XHU5NDUyXHU5Zjk1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjAyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwMl1bdl1dPTUxNzEyK3YsVFs1MTcxMit2XT1rWzIwMl1bdl0pO2ZvcihrWzIwM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTMyM1x1NWNhY1x1NzUzMlx1ODBkYlx1OTI0MFx1OTU5OFx1NTI1Ylx1''@;'; put 'put ''NTgwOFx1NTlkY1x1NWNhMVx1NWQxN1x1NWViN1x1NWYzYVx1NWY0YVx1NjE3N1x1NmM1Zlx1NzU3YVx1NzU4Nlx1N2NlMFx1N2Q3M1x1N2RiMVx1N2Y4Y1x1ODE1NFx1ODIyMVx1ODU5MVx1ODk0MVx1OGIxYlx1OTJmY1x1OTY0ZFx1OWM0N1x1NGVjYlx1NGVmN1x1NTAwYlx1NTFmMVx1NTg0''@;'; put 'put ''Zlx1NjEzN1x1NjEzZVx1NjE2OFx1NjUzOVx1NjllYVx1NmYxMVx1NzVhNVx1NzY4Nlx1NzZkNlx1N2I4N1x1ODJhNVx1ODRjYlx1ZjkwMFx1OTNhN1x1OTU4Ylx1NTU4MFx1NWJhMlx1NTc1MVx1ZjkwMVx1N2NiM1x1N2ZiOVx1OTFiNVx1NTAyOFx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1''@;'; put 'put ''NjM2ZVx1NjRkYVx1NjRlN1x1NmUyMFx1NzBhY1x1Nzk1Ylx1OGRkZFx1OGUxZVx1ZjkwMlx1OTA3ZFx1OTI0NVx1OTJmOFx1NGU3ZVx1NGVmNlx1NTA2NVx1NWRmZVx1NWVmYVx1NjEwNlx1Njk1N1x1ODE3MVx1ODY1NFx1OGU0N1x1OTM3NVx1OWEyYlx1NGU1ZVx1NTA5MVx1Njc3MFx1Njg0''@;'; put 'put ''MFx1NTEwOVx1NTI4ZFx1NTI5Mlx1NmFhMlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjAzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDNdW3ZdXT01MTk2OCt2LFRbNTE5Njgrdl09a1syMDNdW3ZdKTtmb3Ioa1syMDRdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3YmNcdTkyMTBcdTllZDRcdTUyYWJcdTYwMmZc''@;'; put 'put ''dThmZjJcdTUwNDhcdTYxYTlcdTYzZWRcdTY0Y2FcdTY4M2NcdTZhODRcdTZmYzBcdTgxODhcdTg5YTFcdTk2OTRcdTU4MDVcdTcyN2RcdTcyYWNcdTc1MDRcdTdkNzlcdTdlNmRcdTgwYTlcdTg5OGJcdThiNzRcdTkwNjNcdTlkNTFcdTYyODlcdTZjN2FcdTZmNTRcdTdkNTBcdTdmM2FcdThh''@;'; put 'put ''MjNcdTUxN2NcdTYxNGFcdTdiOWRcdThiMTlcdTkyNTdcdTkzOGNcdTRlYWNcdTRmZDNcdTUwMWVcdTUwYmVcdTUxMDZcdTUyYzFcdTUyY2RcdTUzN2ZcdTU3NzBcdTU4ODNcdTVlOWFcdTVmOTFcdTYxNzZcdTYxYWNcdTY0Y2VcdTY1NmNcdTY2NmZcdTY2YmJcdTY2ZjRcdTY4OTdcdTZkODdc''@;'; put 'put ''dTcwODVcdTcwZjFcdTc0OWZcdTc0YTVcdTc0Y2FcdTc1ZDlcdTc4NmNcdTc4ZWNcdTdhZGZcdTdhZjZcdTdkNDVcdTdkOTNcdTgwMTVcdTgwM2ZcdTgxMWJcdTgzOTZcdThiNjZcdThmMTVcdTkwMTVcdTkzZTFcdTk4MDNcdTk4MzhcdTlhNWFcdTliZThcdTRmYzJcdTU1NTNcdTU4M2FcdTU5''@;'; put 'put ''NTFcdTViNjNcdTVjNDZcdTYwYjhcdTYyMTJcdTY4NDJcdTY4YjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwNF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA0XVt2XV09NTIyMjQrdixUWzUyMjI0K3ZdPWtbMjA0XVt2XSk7Zm9yKGtb''@;'; put 'put ''MjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OGU4XHU2ZWFhXHU3NTRj''@;'; put 'put ''XHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRhXHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2''@;'; put 'put ''Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQw''@;'; put 'put ''XHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3''@;'; put 'put ''YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwNV1bdl1dPTUyNDgwK3YsVFs1MjQ4MCt2XT1rWzIw''@;'; put 'put ''NV1bdl0pO2ZvcihrWzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzlk''@;'; put 'put ''MVx1ODNkM1x1OGE4N1x1OGFiMlx1OGRlOFx1OTA0ZVx1OTM0Ylx1OTg0Nlx1NWVkM1x1NjllOFx1ODVmZlx1OTBlZFx1ZjkwNVx1NTFhMFx1NWI5OFx1NWJlY1x1NjE2M1x1NjhmYVx1NmIzZVx1NzA0Y1x1NzQyZlx1NzRkOFx1N2JhMVx1N2Y1MFx1ODNjNVx1ODljMFx1OGNhYlx1OTVkY1x1''@;'; put 'put ''OTkyOFx1NTIyZVx1NjA1ZFx1NjJlY1x1OTAwMlx1NGY4YVx1NTE0OVx1NTMyMVx1NThkOVx1NWVlM1x1NjZlMFx1NmQzOFx1NzA5YVx1NzJjMlx1NzNkNlx1N2I1MFx1ODBmMVx1OTQ1Ylx1NTM2Nlx1NjM5Ylx1N2Y2Ylx1NGU1Nlx1NTA4MFx1NTg0YVx1NThkZVx1NjAyYVx1NjEyN1x1NjJk''@;'; put 'put ''MFx1NjlkMFx1OWI0MVx1NWI4Zlx1N2QxOFx1ODBiMVx1OGY1Zlx1NGVhNFx1NTBkMVx1NTRhY1x1NTVhY1x1NWIwY1x1NWRhMFx1NWRlN1x1NjUyYVx1NjU0ZVx1NjgyMVx1NmE0Ylx1NzJlMVx1NzY4ZVx1NzdlZlx1N2Q1ZVx1N2ZmOVx1ODFhMFx1ODU0ZVx1ODZkZlx1OGYwM1x1OGY0ZVx1''@;'; put 'put ''OTBjYVx1OTkwM1x1OWE1NVx1OWJhYlx1NGUxOFx1NGU0NVx1NGU1ZFx1NGVjN1x1NGZmMVx1NTE3N1x1NTJmZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwNl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDZdW3ZdXT01MjczNit2LFRb''@;'; put 'put ''NTI3MzYrdl09a1syMDZdW3ZdKTtmb3Ioa1syMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTUzNDBcdTUzZTNcdTUzZTVcdTU0OGVcdTU2MTRcdTU3NzVcdTU3YTJcdTViYzdcdTVkODdcdTVlZDBcdTYxZmNcdTYyZDhcdTY1NTFcdTY3YjhcdTY3ZTlcdTY5Y2JcdTZiNTBcdTZiYzZcdTZiZWNcdTZjNDJcdTZlOWRcdTcwNzhcdTcyZDdcdTczOTZcdTc0MDNcdTc3YmZc''@;'; put 'put ''dTc3ZTlcdTdhNzZcdTdkN2ZcdTgwMDlcdTgxZmNcdTgyMDVcdTgyMGFcdTgyZGZcdTg4NjJcdThiMzNcdThjZmNcdThlYzBcdTkwMTFcdTkwYjFcdTkyNjRcdTkyYjZcdTk5ZDJcdTlhNDVcdTljZTlcdTlkZDdcdTlmOWNcdTU3MGJcdTVjNDBcdTgzY2FcdTk3YTBcdTk3YWJcdTllYjRcdTU0''@;'; put 'put ''MWJcdTdhOThcdTdmYTRcdTg4ZDlcdThlY2RcdTkwZTFcdTU4MDBcdTVjNDhcdTYzOThcdTdhOWZcdTViYWVcdTVmMTNcdTdhNzlcdTdhYWVcdTgyOGVcdThlYWNcdTUwMjZcdTUyMzhcdTUyZjhcdTUzNzdcdTU3MDhcdTYyZjNcdTYzNzJcdTZiMGFcdTZkYzNcdTc3MzdcdTUzYTVcdTczNTdc''@;'; put 'put ''dTg1NjhcdThlNzZcdTk1ZDVcdTY3M2FcdTZhYzNcdTZmNzBcdThhNmRcdThlY2NcdTk5NGJcdWY5MDZcdTY2NzdcdTZiNzhcdThjYjRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA3XVt2''@;'; put 'put ''XV09NTI5OTIrdixUWzUyOTkyK3ZdPWtbMjA3XVt2XSk7Zm9yKGtbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4M2NjXHU5MjFlXHVmOTA4''@;'; put 'put ''XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNhXHU1OTk3XHU2NGQyXHU2''@;'; put 'put ''NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1MTgwXHU1NWRjXHU1NjY4''@;'; put 'put ''XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2NWUzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDhdW3ZdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihzZVtrWzIwOF1bdl1dPTUzMjQ4K3YsVFs1MzI0OCt2XT1rWzIwOF1bdl0pO2ZvcihrWzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjcxZVx1NjcxZlx1Njc1ZVx1NjhjYlx1NjhjNFx1NmE1Zlx1NmIzYVx1NmMyM1x1NmM3ZFx1NmM4Mlx1NmRjN1x1NzM5OFx1NzQyNlx1NzQyYVx1NzQ4Mlx1NzRhM1x1NzU3OFx1NzU3Zlx1Nzg4MVx1NzhlZlx1Nzk0MVx1Nzk0''@;'; put 'put ''N1x1Nzk0OFx1Nzk3YVx1N2I5NVx1N2QwMFx1N2RiYVx1N2Y4OFx1ODAwNlx1ODAyZFx1ODA4Y1x1OGExOFx1OGI0Zlx1OGM0OFx1OGQ3N1x1OTMyMVx1OTMyNFx1OThlMlx1OTk1MVx1OWEwZVx1OWEwZlx1OWE2NVx1OWU5Mlx1N2RjYVx1NGY3Nlx1NTQwOVx1NjJlZVx1Njg1NFx1OTFkMVx1''@;'; put 'put ''NTVhYlx1NTEzYVx1ZjkwYlx1ZjkwY1x1NWExY1x1NjFlNlx1ZjkwZFx1NjJjZlx1NjJmZlx1ZjkwZVx1ZjkwZlx1ZjkxMFx1ZjkxMVx1ZjkxMlx1ZjkxM1x1OTBhM1x1ZjkxNFx1ZjkxNVx1ZjkxNlx1ZjkxN1x1ZjkxOFx1OGFmZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1ZjkxY1x1NjY5Nlx1Zjkx''@;'; put 'put ''ZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA5XVt2XS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoc2Vba1syMDldW3ZdXT01MzUwNCt2LFRbNTM1MDQrdl09a1syMDldW3ZdKTtmb3Ioa1syMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkMGRcdWY5MjZcdWY5MjdcdTg4NzJcdTU2Y2FcdTVhMThcdWY5MjhcdWY5MjlcdWY5MmFcdWY5MmJcdWY5MmNcdTRlNDNcdWY5MmRcdTUxNjdcdTU5NDhcdTY3ZjBcdTgwMTBcdWY5MmVcdTU5NzNcdTVl''@;'; put 'put ''NzRcdTY0OWFcdTc5Y2FcdTVmZjVcdTYwNmNcdTYyYzhcdTYzN2JcdTViZTdcdTViZDdcdTUyYWFcdWY5MmZcdTU5NzRcdTVmMjlcdTYwMTJcdWY5MzBcdWY5MzFcdWY5MzJcdTc0NTlcdWY5MzNcdWY5MzRcdWY5MzVcdWY5MzZcdWY5MzdcdWY5MzhcdTk5ZDFcdWY5MzlcdWY5M2FcdWY5M2Jc''@;'; put 'put ''dWY5M2NcdWY5M2RcdWY5M2VcdWY5M2ZcdWY5NDBcdWY5NDFcdWY5NDJcdWY5NDNcdTZmYzNcdWY5NDRcdWY5NDVcdTgxYmZcdThmYjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGFcdWY5NGJcdWY5NGNcdWY5NGRcdWY5NGVcdWY5NGZcdWY5NTBcdWY5''@;'; put 'put ''NTFcdTVhZTlcdThhMjVcdTY3N2JcdTdkMTBcdWY5NTJcdWY5NTNcdWY5NTRcdWY5NTVcdWY5NTZcdWY5NTdcdTgwZmRcdWY5NThcdWY5NTlcdTVjM2NcdTZjZTVcdTUzM2ZcdTZlYmFcdTU5MWFcdTgzMzZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTBdLmxlbmd0aDsrK3YpNjU1MzMh''@;'; put 'put ''PT1rWzIxMF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjEwXVt2XV09NTM3NjArdixUWzUzNzYwK3ZdPWtbMjEwXVt2XSk7Zm9yKGtbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFlXHU3ZGRlXHU4NmNiXHU4''@;'; put 'put ''ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2YzkzXHU3NTUzXHU3YjU0''@;'; put 'put ''XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZhXHU4ODhiXHU4Y2I4XHU5''@;'; put 'put ''NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjExXS5sZW5n''@;'; put 'put ''dGg7Kyt2KTY1NTMzIT09a1syMTFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxMV1bdl1dPTU0MDE2K3YsVFs1NDAxNit2XT1rWzIxMV1bdl0pO2ZvcihrWzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjhmOVx1NmFjMlx1NmRkOFx1NmUyMVx1NmVkNFx1NmZlNFx1NzFmZVx1NzZkY1x1Nzc3OVx1NzliMVx1N2EzYlx1ODQwNFx1ODlhOVx1OGNlZFx1OGRmM1x1''@;'; put 'put ''OGU0OFx1OTAwM1x1OTAxNFx1OTA1M1x1OTBmZFx1OTM0ZFx1OTY3Nlx1OTdkY1x1NmJkMlx1NzAwNlx1NzI1OFx1NzJhMlx1NzM2OFx1Nzc2M1x1NzliZlx1N2JlNFx1N2U5Ylx1OGI4MFx1NThhOVx1NjBjN1x1NjU2Nlx1NjVmZFx1NjZiZVx1NmM4Y1x1NzExZVx1NzFjOVx1OGM1YVx1OTgx''@;'; put 'put ''M1x1NGU2ZFx1N2E4MVx1NGVkZFx1NTFhY1x1NTFjZFx1NTJkNVx1NTQwY1x1NjFhN1x1Njc3MVx1Njg1MFx1NjhkZlx1NmQxZVx1NmY3Y1x1NzViY1x1NzdiM1x1N2FlNVx1ODBmNFx1ODQ2M1x1OTI4NVx1NTE1Y1x1NjU5N1x1Njc1Y1x1Njc5M1x1NzVkOFx1N2FjN1x1ODM3M1x1Zjk1YVx1''@;'; put 'put ''OGM0Nlx1OTAxN1x1OTgyZFx1NWM2Zlx1ODFjMFx1ODI5YVx1OTA0MVx1OTA2Zlx1OTIwZFx1NWY5N1x1NWQ5ZFx1NmE1OVx1NzFjOFx1NzY3Ylx1N2I0OVx1ODVlNFx1OGIwNFx1OTEyN1x1OWEzMFx1NTU4N1x1NjFmNlx1Zjk1Ylx1NzY2OVx1N2Y4NVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2''@;'; put 'put ''IT1rWzIxMl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjEyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTJdW3ZdXT01NDI3Mit2LFRbNTQyNzIrdl09a1syMTJdW3ZdKTtmb3Ioa1syMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2M2ZcdTg3YmFcdTg4ZjhcdTkwOGZcdWY5NWNcdTZkMWJcdTcwZDlcdTczZGVcdTdkNjFcdTg0M2RcdWY5NWRcdTkxNmFcdTk5ZjFc''@;'; put 'put ''dWY5NWVcdTRlODJcdTUzNzVcdTZiMDRcdTZiMTJcdTcwM2VcdTcyMWJcdTg2MmRcdTllMWVcdTUyNGNcdThmYTNcdTVkNTBcdTY0ZTVcdTY1MmNcdTZiMTZcdTZmZWJcdTdjNDNcdTdlOWNcdTg1Y2RcdTg5NjRcdTg5YmRcdTYyYzlcdTgxZDhcdTg4MWZcdTVlY2FcdTY3MTdcdTZkNmFcdTcy''@;'; put 'put ''ZmNcdTc0MDVcdTc0NmZcdTg3ODJcdTkwZGVcdTRmODZcdTVkMGRcdTVmYTBcdTg0MGFcdTUxYjdcdTYzYTBcdTc1NjVcdTRlYWVcdTUwMDZcdTUxNjlcdTUxYzlcdTY4ODFcdTZhMTFcdTdjYWVcdTdjYjFcdTdjZTdcdTgyNmZcdThhZDJcdThmMWJcdTkxY2ZcdTRmYjZcdTUxMzdcdTUyZjVc''@;'; put 'put ''dTU0NDJcdTVlZWNcdTYxNmVcdTYyM2VcdTY1YzVcdTZhZGFcdTZmZmVcdTc5MmFcdTg1ZGNcdTg4MjNcdTk1YWRcdTlhNjJcdTlhNmFcdTllOTdcdTllY2VcdTUyOWJcdTY2YzZcdTZiNzdcdTcwMWRcdTc5MmJcdThmNjJcdTk3NDJcdTYxOTBcdTYyMDBcdTY1MjNcdTZmMjNcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSx2PTA7diE9a1syMTNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxM11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjEzXVt2XV09NTQ1MjgrdixUWzU0NTI4K3ZdPWtbMjEzXVt2XSk7Zm9yKGtbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTQ5XHU3NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEz''@;'; put 'put ''XHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJkXHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0''@;'; put 'put ''ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0''@;'; put 'put ''XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4''@;'; put 'put ''NGZjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxNF1bdl1dPTU0Nzg0K3YsVFs1NDc4NCt2XT1rWzIxNF1bdl0pO2ZvcihrWzIxNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTA3Y1x1OWIyN1x1OWY4ZFx1NThkOFx1NWE0MVx1NWM2Mlx1NmExM1x1NmRkYVx1NmYw''@;'; put 'put ''Zlx1NzYzYlx1N2QyZlx1N2UzN1x1ODUxZVx1ODkzOFx1OTNlNFx1OTY0Ylx1NTI4OVx1NjVkMlx1NjdmM1x1NjliNFx1NmQ0MVx1NmU5Y1x1NzAwZlx1NzQwOVx1NzQ2MFx1NzU1OVx1NzYyNFx1Nzg2Ylx1OGIyY1x1OTg1ZVx1NTE2ZFx1NjIyZVx1OTY3OFx1NGY5Nlx1NTAyYlx1NWQxOVx1''@;'; put 'put ''NmRlYVx1N2RiOFx1OGYyYVx1NWY4Ylx1NjE0NFx1NjgxN1x1Zjk2MVx1OTY4Nlx1NTJkMlx1ODA4Ylx1NTFkY1x1NTFjY1x1Njk1ZVx1N2ExY1x1N2RiZVx1ODNmMVx1OTY3NVx1NGZkYVx1NTIyOVx1NTM5OFx1NTQwZlx1NTUwZVx1NWM2NVx1NjBhN1x1Njc0ZVx1NjhhOFx1NmQ2Y1x1NzI4''@;'; put 'put ''MVx1NzJmOFx1NzQwNlx1NzQ4M1x1Zjk2Mlx1NzVlMlx1N2M2Y1x1N2Y3OVx1N2ZiOFx1ODM4OVx1ODhjZlx1ODhlMVx1OTFjY1x1OTFkMFx1OTZlMlx1OWJjOVx1NTQxZFx1NmY3ZVx1NzFkMFx1NzQ5OFx1ODVmYVx1OGVhYVx1OTZhM1x1OWM1N1x1OWU5Zlx1Njc5N1x1NmRjYlx1NzQzM1x1''@;'; put 'put ''ODFlOFx1OTcxNlx1NzgyY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxNV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTVdW3ZdXT01NTA0MCt2LFRbNTUwNDArdl09a1syMTVdW3ZdKTtmb3Ioa1syMTZdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhY2JcdTdiMjBcdTdjOTJcdTY0NjlcdTc0NmFcdTc1ZjJcdTc4''@;'; put 'put ''YmNcdTc4ZThcdTk5YWNcdTliNTRcdTllYmJcdTViZGVcdTVlNTVcdTZmMjBcdTgxOWNcdTgzYWJcdTkwODhcdTRlMDdcdTUzNGRcdTVhMjlcdTVkZDJcdTVmNGVcdTYxNjJcdTYzM2RcdTY2NjlcdTY2ZmNcdTZlZmZcdTZmMmJcdTcwNjNcdTc3OWVcdTg0MmNcdTg1MTNcdTg4M2JcdThmMTNc''@;'; put 'put ''dTk5NDVcdTljM2JcdTU1MWNcdTYyYjlcdTY3MmJcdTZjYWJcdTgzMDlcdTg5NmFcdTk3N2FcdTRlYTFcdTU5ODRcdTVmZDhcdTVmZDlcdTY3MWJcdTdkYjJcdTdmNTRcdTgyOTJcdTgzMmJcdTgzYmRcdThmMWVcdTkwOTlcdTU3Y2JcdTU5YjlcdTVhOTJcdTViZDBcdTY2MjdcdTY3OWFcdTY4''@;'; put 'put ''ODVcdTZiY2ZcdTcxNjRcdTdmNzVcdThjYjdcdThjZTNcdTkwODFcdTliNDVcdTgxMDhcdThjOGFcdTk2NGNcdTlhNDBcdTllYTVcdTViNWZcdTZjMTNcdTczMWJcdTc2ZjJcdTc2ZGZcdTg0MGNcdTUxYWFcdTg5OTNcdTUxNGRcdTUxOTVcdTUyYzlcdTY4YzlcdTZjOTRcdTc3MDRcdTc3MjBc''@;'; put 'put ''dTdkYmZcdTdkZWNcdTk3NjJcdTllYjVcdTZlYzVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxNl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE2XVt2XV09NTUyOTYrdixUWzU1Mjk2K3ZdPWtbMjE2XVt2XSk7Zm9yKGtbMjE3XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2''@;'; put 'put ''NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgyXHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYx''@;'; put 'put ''XHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2''@;'; put 'put ''NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFiXHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYx''@;'; put 'put ''XHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxN11bdl1dPTU1NTUyK3YsVFs1NTU1Mit2XT1rWzIxN11bdl0pO2Zv''@;'; put 'put ''cihrWzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM3Nlx1N2QwYVx1''@;'; put 'put ''N2QwYlx1ODA1ZVx1ODY4YVx1OTU4MFx1OTZlZlx1NTJmZlx1NmM5NVx1NzI2OVx1NTQ3M1x1NWE5YVx1NWMzZVx1NWQ0Ylx1NWY0Y1x1NWZhZVx1NjcyYVx1NjhiNlx1Njk2M1x1NmUzY1x1NmU0NFx1NzcwOVx1N2M3M1x1N2Y4ZVx1ODU4N1x1OGIwZVx1OGZmN1x1OTc2MVx1OWVmNFx1NWNi''@;'; put 'put ''N1x1NjBiNlx1NjEwZFx1NjFhYlx1NjU0Zlx1NjVmYlx1NjVmY1x1NmMxMVx1NmNlZlx1NzM5Zlx1NzNjOVx1N2RlMVx1OTU5NFx1NWJjNlx1ODcxY1x1OGIxMFx1NTI1ZFx1NTM1YVx1NjJjZFx1NjQwZlx1NjRiMlx1NjczNFx1NmEzOFx1NmNjYVx1NzNjMFx1NzQ5ZVx1N2I5NFx1N2M5NVx1''@;'; put 'put ''N2UxYlx1ODE4YVx1ODIzNlx1ODU4NFx1OGZlYlx1OTZmOVx1OTljMVx1NGYzNFx1NTM0YVx1NTNjZFx1NTNkYlx1NjJjY1x1NjQyY1x1NjUwMFx1NjU5MVx1NjljM1x1NmNlZVx1NmY1OFx1NzNlZFx1NzU1NFx1NzYyMlx1NzZlNFx1NzZmY1x1NzhkMFx1NzhmYlx1NzkyY1x1N2Q0Nlx1ODIy''@;'; put 'put ''Y1x1ODdlMFx1OGZkNFx1OTgxMlx1OThlZlx1NTJjM1x1NjJkNFx1NjRhNVx1NmUyNFx1NmY1MVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxOF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMThdW3ZdXT01NTgwOCt2LFRbNTU4MDgrdl09''@;'; put 'put ''a1syMThdW3ZdKTtmb3Ioa1syMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTc2N2NcdThkY2JcdTkxYjFcdTkyNjJcdTlhZWVcdTliNDNcdTUwMjNcdTUwOGRcdTU3NGFcdTU5YThcdTVjMjhcdTVlNDdcdTVmNzdcdTYyM2ZcdTY1M2VcdTY1YjlcdTY1YzFcdTY2MDlcdTY3OGJcdTY5OWNcdTZlYzJcdTc4YzVcdTdkMjFcdTgwYWFcdTgxODBcdTgyMmJcdTgyYjNcdTg0''@;'; put 'put ''YTFcdTg2OGNcdThhMmFcdThiMTdcdTkwYTZcdTk2MzJcdTlmOTBcdTUwMGRcdTRmZjNcdWY5NjNcdTU3ZjlcdTVmOThcdTYyZGNcdTYzOTJcdTY3NmZcdTZlNDNcdTcxMTlcdTc2YzNcdTgwY2NcdTgwZGFcdTg4ZjRcdTg4ZjVcdTg5MTlcdThjZTBcdThmMjlcdTkxNGRcdTk2NmFcdTRmMmZc''@;'; put 'put ''dTRmNzBcdTVlMWJcdTY3Y2ZcdTY4MjJcdTc2N2RcdTc2N2VcdTliNDRcdTVlNjFcdTZhMGFcdTcxNjlcdTcxZDRcdTc1NmFcdWY5NjRcdTdlNDFcdTg1NDNcdTg1ZTlcdTk4ZGNcdTRmMTBcdTdiNGZcdTdmNzBcdTk1YTVcdTUxZTFcdTVlMDZcdTY4YjVcdTZjM2VcdTZjNGVcdTZjZGJcdTcy''@;'; put 'put ''YWZcdTdiYzRcdTgzMDNcdTZjZDVcdTc0M2FcdTUwZmJcdTUyODhcdTU4YzFcdTY0ZDhcdTZhOTdcdTc0YTdcdTc2NTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxOV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE5XVt2XV09NTYwNjQr''@;'; put 'put ''dixUWzU2MDY0K3ZdPWtbMjE5XVt2XSk7Zm9yKGtbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3''@;'; put 'put ''NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1Yjkz''@;'; put 'put ''XHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5''@;'; put 'put ''MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIy''@;'; put 'put ''MF1bdl1dPTU2MzIwK3YsVFs1NjMyMCt2XT1rWzIyMF1bdl0pO2ZvcihrWzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI1YVx1NWI3NVx1NWJjY1x1NWU5Y1x1Zjk2Nlx1NjI3Nlx1NjU3N1x1NjVhN1x1NmQ2ZVx1NmVhNVx1NzIzNlx1N2IyNlx1N2MzZlx1N2YzNlx1ODE1MFx1ODE1MVx1ODE5YVx1ODI0MFx1ODI5OVx1ODNhOVx1OGEwM1x1OGNhMFx1OGNlNlx1''@;'; put 'put ''OGNmYlx1OGQ3NFx1OGRiYVx1OTBlOFx1OTFkY1x1OTYxY1x1OTY0NFx1OTlkOVx1OWNlN1x1NTMxN1x1NTIwNlx1NTQyOVx1NTY3NFx1NThiM1x1NTk1NFx1NTk2ZVx1NWZmZlx1NjFhNFx1NjI2ZVx1NjYxMFx1NmM3ZVx1NzExYVx1NzZjNlx1N2M4OVx1N2NkZVx1N2QxYlx1ODJhY1x1OGNj''@;'; put 'put ''MVx1OTZmMFx1Zjk2N1x1NGY1Ylx1NWYxN1x1NWY3Zlx1NjJjMlx1NWQyOVx1NjcwYlx1NjhkYVx1Nzg3Y1x1N2U0M1x1OWQ2Y1x1NGUxNVx1NTA5OVx1NTMxNVx1NTMyYVx1NTM1MVx1NTk4M1x1NWE2Mlx1NWU4N1x1NjBiMlx1NjE4YVx1NjI0OVx1NjI3OVx1NjU5MFx1Njc4N1x1NjlhN1x1''@;'; put 'put ''NmJkNFx1NmJkNlx1NmJkN1x1NmJkOFx1NmNiOFx1Zjk2OFx1NzQzNVx1NzVmYVx1NzgxMlx1Nzg5MVx1NzlkNVx1NzlkOFx1N2M4M1x1N2RjYlx1N2ZlMVx1ODBhNVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjIxXVt2XS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoc2Vba1syMjFdW3ZdXT01NjU3Nit2LFRbNTY1NzYrdl09a1syMjFdW3ZdKTtmb3Ioa1syMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxM2VcdTgxYzJcdTgzZjJcdTg3MWFcdTg4ZThcdThhYjlcdThiNmNcdThjYmJcdTkxMTlcdTk3NWVcdTk4ZGJcdTlmM2JcdTU2YWNcdTViMmFcdTVmNmNcdTY1OGNcdTZhYjNcdTZiYWZcdTZkNWNcdTZmZjFcdTcwMTVc''@;'; put 'put ''dTcyNWRcdTczYWRcdThjYTdcdThjZDNcdTk4M2JcdTYxOTFcdTZjMzdcdTgwNThcdTlhMDFcdTRlNGRcdTRlOGJcdTRlOWJcdTRlZDVcdTRmM2FcdTRmM2NcdTRmN2ZcdTRmZGZcdTUwZmZcdTUzZjJcdTUzZjhcdTU1MDZcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5NjJcdTVhMTFcdTViZWJcdTVi''@;'; put 'put ''ZmFcdTVjMDRcdTVkZjNcdTVlMmJcdTVmOTlcdTYwMWRcdTYzNjhcdTY1OWNcdTY1YWZcdTY3ZjZcdTY3ZmJcdTY4YWRcdTZiN2JcdTZjOTlcdTZjZDdcdTZlMjNcdTcwMDlcdTczNDVcdTc4MDJcdTc5M2VcdTc5NDBcdTc5NjBcdTc5YzFcdTdiZTlcdTdkMTdcdTdkNzJcdTgwODZcdTgyMGRc''@;'; put 'put ''dTgzOGVcdTg0ZDFcdTg2YzdcdTg4ZGZcdThhNTBcdThhNWVcdThiMWRcdThjZGNcdThkNjZcdThmYWRcdTkwYWFcdTk4ZmNcdTk5ZGZcdTllOWRcdTUyNGFcdWY5NjlcdTY3MTRcdWY5NmFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyMl1b''@;'; put 'put ''dl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjIyXVt2XV09NTY4MzIrdixUWzU2ODMyK3ZdPWtbMjIyXVt2XSk7Zm9yKGtbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0ZTA5XHVmOTZi''@;'; put 'put ''XHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUxXHU2YTYxXHU2''@;'; put 'put ''ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3YjE5XHU1ODg1''@;'; put 'put ''XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIzXS5sZW5ndGg7Kyt2KTY1''@;'; put 'put ''NTMzIT09a1syMjNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyM11bdl1dPTU3MDg4K3YsVFs1NzA4OCt2XT1rWzIyM11bdl0pO2ZvcihrWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODBlNVx1ODIxMlx1ODVhZlx1ODk3Zlx1OGE5M1x1OTAxZFx1OTJlNFx1OWVjZFx1OWYyMFx1NTkxNVx1NTk2ZFx1NWUyZFx1NjBkY1x1NjYxNFx1NjY3M1x1Njc5MFx1NmM1''@;'; put 'put ''MFx1NmRjNVx1NmY1Zlx1NzdmM1x1NzhhOVx1ODRjNlx1OTFjYlx1OTMyYlx1NGVkOVx1NTBjYVx1NTE0OFx1NTU4NFx1NWIwYlx1NWJhM1x1NjI0N1x1NjU3ZVx1NjVjYlx1NmUzMlx1NzE3ZFx1NzQwMVx1NzQ0NFx1NzQ4N1x1NzRiZlx1NzY2Y1x1NzlhYVx1N2RkYVx1N2U1NVx1N2ZhOFx1''@;'; put 'put ''ODE3YVx1ODFiM1x1ODIzOVx1ODYxYVx1ODdlY1x1OGE3NVx1OGRlM1x1OTA3OFx1OTI5MVx1OTQyNVx1OTk0ZFx1OWJhZVx1NTM2OFx1NWM1MVx1Njk1NFx1NmNjNFx1NmQyOVx1NmUyYlx1ODIwY1x1ODU5Ylx1ODkzYlx1OGEyZFx1OGFhYVx1OTZlYVx1OWY2N1x1NTI2MVx1NjZiOVx1NmJi''@;'; put 'put ''Mlx1N2U5Nlx1ODdmZVx1OGQwZFx1OTU4M1x1OTY1ZFx1NjUxZFx1NmQ4OVx1NzFlZVx1Zjk2ZVx1NTdjZVx1NTlkM1x1NWJhY1x1NjAyN1x1NjBmYVx1NjIxMFx1NjYxZlx1NjY1Zlx1NzMyOVx1NzNmOVx1NzZkYlx1NzcwMVx1N2I2Y1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyNF0u''@;'; put 'put ''bGVuZ3RoOysrdik2NTUzMyE9PWtbMjI0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjRdW3ZdXT01NzM0NCt2LFRbNTczNDQrdl09a1syMjRdW3ZdKTtmb3Ioa1syMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwNTZcdTgwNzJcdTgxNjVcdThhYTBcdTkxOTJcdTRlMTZcdTUyZTJcdTZiNzJcdTZkMTdcdTdhMDVcdTdiMzlcdTdkMzBcdWY5NmZcdThjYjBcdTUz''@;'; put 'put ''ZWNcdTU2MmZcdTU4NTFcdTViYjVcdTVjMGZcdTVjMTFcdTVkZTJcdTYyNDBcdTYzODNcdTY0MTRcdTY2MmRcdTY4YjNcdTZjYmNcdTZkODhcdTZlYWZcdTcwMWZcdTcwYTRcdTcxZDJcdTc1MjZcdTc1OGZcdTc1OGVcdTc2MTlcdTdiMTFcdTdiZTBcdTdjMmJcdTdkMjBcdTdkMzlcdTg1MmNc''@;'; put 'put ''dTg1NmRcdTg2MDdcdThhMzRcdTkwMGRcdTkwNjFcdTkwYjVcdTkyYjdcdTk3ZjZcdTlhMzdcdTRmZDdcdTVjNmNcdTY3NWZcdTZkOTFcdTdjOWZcdTdlOGNcdThiMTZcdThkMTZcdTkwMWZcdTViNmJcdTVkZmRcdTY0MGRcdTg0YzBcdTkwNWNcdTk4ZTFcdTczODdcdTViOGJcdTYwOWFcdTY3''@;'; put 'put ''N2VcdTZkZGVcdThhMWZcdThhYTZcdTkwMDFcdTk4MGNcdTUyMzdcdWY5NzBcdTcwNTFcdTc4OGVcdTkzOTZcdTg4NzBcdTkxZDdcdTRmZWVcdTUzZDdcdTU1ZmRcdTU2ZGFcdTU3ODJcdTU4ZmRcdTVhYzJcdTViODhcdTVjYWJcdTVjYzBcdTVlMjVcdTYxMDFcdWZmZmQiLnNwbGl0KCIiKSx2''@;'; put 'put ''PTA7diE9a1syMjVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI1XVt2XV09NTc2MDArdixUWzU3NjAwK3ZdPWtbMjI1XVt2XSk7Zm9yKGtbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3''@;'; put 'put ''MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5''@;'; put 'put ''XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2''@;'; put 'put ''OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksdj0wO3YhPWtbMjI2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyNl1bdl1dPTU3ODU2K3YsVFs1Nzg1Nit2XT1rWzIyNl1bdl0pO2ZvcihrWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWQ2OVx1NzQ1Zlx1ODE5ZFx1ODc2OFx1NmZkNVx1NjJmZVx1N2ZkMlx1ODkzNlx1ODk3Mlx1NGUxZVx1''@;'; put 'put ''NGU1OFx1NTBlN1x1NTJkZFx1NTM0N1x1NjI3Zlx1NjYwN1x1N2U2OVx1ODgwNVx1OTY1ZVx1NGY4ZFx1NTMxOVx1NTYzNlx1NTljYlx1NWFhNFx1NWMzOFx1NWM0ZVx1NWM0ZFx1NWUwMlx1NWYxMVx1NjA0M1x1NjViZFx1NjYyZlx1NjY0Mlx1NjdiZVx1NjdmNFx1NzMxY1x1NzdlMlx1Nzkz''@;'; put 'put ''YVx1N2ZjNVx1ODQ5NFx1ODRjZFx1ODk5Nlx1OGE2Nlx1OGE2OVx1OGFlMVx1OGM1NVx1OGM3YVx1NTdmNFx1NWJkNFx1NWYwZlx1NjA2Zlx1NjJlZFx1NjkwZFx1NmI5Nlx1NmU1Y1x1NzE4NFx1N2JkMlx1ODc1NVx1OGI1OFx1OGVmZVx1OThkZlx1OThmZVx1NGYzOFx1NGY4MVx1NGZlMVx1''@;'; put 'put ''NTQ3Ylx1NWEyMFx1NWJiOFx1NjEzY1x1NjViMFx1NjY2OFx1NzFmY1x1NzUzM1x1Nzk1ZVx1N2QzM1x1ODE0ZVx1ODFlM1x1ODM5OFx1ODVhYVx1ODVjZVx1ODcwM1x1OGEwYVx1OGVhYlx1OGY5Ylx1Zjk3MVx1OGZjNVx1NTkzMVx1NWJhNFx1NWJlNlx1NjA4OVx1NWJlOVx1NWMwYlx1NWZj''@;'; put 'put ''M1x1NmM4MVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjddW3ZdXT01ODExMit2LFRbNTgxMTIrdl09a1syMjddW3ZdKTtmb3Ioa1syMjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5NzJcdTZkZjFcdTcwMGJcdTc1MWFcdTgyYWZcdThhZjZcdTRlYzBcdTUzNDFc''@;'; put 'put ''dWY5NzNcdTk2ZDlcdTZjMGZcdTRlOWVcdTRmYzRcdTUxNTJcdTU1NWVcdTVhMjVcdTVjZThcdTYyMTFcdTcyNTlcdTgyYmRcdTgzYWFcdTg2ZmVcdTg4NTlcdThhMWRcdTk2M2ZcdTk2YzVcdTk5MTNcdTlkMDlcdTlkNWRcdTU4MGFcdTVjYjNcdTVkYmRcdTVlNDRcdTYwZTFcdTYxMTVcdTYz''@;'; put 'put ''ZTFcdTZhMDJcdTZlMjVcdTkxMDJcdTkzNTRcdTk4NGVcdTljMTBcdTlmNzdcdTViODlcdTVjYjhcdTYzMDlcdTY2NGZcdTY4NDhcdTc3M2NcdTk2YzFcdTk3OGRcdTk4NTRcdTliOWZcdTY1YTFcdThiMDFcdThlY2JcdTk1YmNcdTU1MzVcdTVjYTlcdTVkZDZcdTVlYjVcdTY2OTdcdTc2NGNc''@;'; put 'put ''dTgzZjRcdTk1YzdcdTU4ZDNcdTYyYmNcdTcyY2VcdTlkMjhcdTRlZjBcdTU5MmVcdTYwMGZcdTY2M2JcdTZiODNcdTc5ZTdcdTlkMjZcdTUzOTNcdTU0YzBcdTU3YzNcdTVkMTZcdTYxMWJcdTY2ZDZcdTZkYWZcdTc4OGRcdTgyN2VcdTk2OThcdTk3NDRcdTUzODRcdTYyN2NcdTYzOTZcdTZk''@;'; put 'put ''YjJcdTdlMGFcdTgxNGJcdTk4NGRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI4XVt2XV09NTgzNjgrdixUWzU4MzY4K3ZdPWtbMjI4XVt2XSk7Zm9yKGtbMjI5XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNi''@;'; put 'put ''XHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2''@;'; put 'put ''NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2''@;'; put 'put ''XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0''@;'; put 'put ''ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyOV1bdl1dPTU4NjI0K3YsVFs1ODYyNCt2XT1rWzIyOV1bdl0pO2ZvcihrWzIzMF09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Zjk4M1x1NmI1Zlx1NmM1ZFx1Zjk4''@;'; put 'put ''NFx1NzRiNVx1NzkxNlx1Zjk4NVx1ODIwN1x1ODI0NVx1ODMzOVx1OGYzZlx1OGY1ZFx1Zjk4Nlx1OTkxOFx1Zjk4N1x1Zjk4OFx1Zjk4OVx1NGVhNlx1Zjk4YVx1NTdkZlx1NWY3OVx1NjYxM1x1Zjk4Ylx1Zjk4Y1x1NzVhYlx1N2U3OVx1OGI2Zlx1Zjk4ZFx1OTAwNlx1OWE1Ylx1NTZhNVx1''@;'; put 'put ''NTgyN1x1NTlmOFx1NWExZlx1NWJiNFx1Zjk4ZVx1NWVmNlx1Zjk4Zlx1Zjk5MFx1NjM1MFx1NjMzYlx1Zjk5MVx1NjkzZFx1NmM4N1x1NmNiZlx1NmQ4ZVx1NmQ5M1x1NmRmNVx1NmYxNFx1Zjk5Mlx1NzBkZlx1NzEzNlx1NzE1OVx1Zjk5M1x1NzFjM1x1NzFkNVx1Zjk5NFx1Nzg0Zlx1Nzg2''@;'; put 'put ''Zlx1Zjk5NVx1N2I3NVx1N2RlM1x1Zjk5Nlx1N2UyZlx1Zjk5N1x1ODg0ZFx1OGVkZlx1Zjk5OFx1Zjk5OVx1Zjk5YVx1OTI1Ylx1Zjk5Ylx1OWNmNlx1Zjk5Y1x1Zjk5ZFx1Zjk5ZVx1NjA4NVx1NmQ4NVx1Zjk5Zlx1NzFiMVx1ZjlhMFx1ZjlhMVx1OTViMVx1NTNhZFx1ZjlhMlx1ZjlhM1x1''@;'; put 'put ''ZjlhNFx1NjdkM1x1ZjlhNVx1NzA4ZVx1NzEzMFx1NzQzMFx1ODI3Nlx1ODJkMlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzBdW3ZdXT01ODg4MCt2LFRbNTg4ODArdl09a1syMzBdW3Zd''@;'; put 'put ''KTtmb3Ioa1syMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5YTZcdTk1''@;'; put 'put ''YmJcdTlhZTVcdTllN2RcdTY2YzRcdWY5YTdcdTcxYzFcdTg0NDlcdWY5YThcdWY5YTlcdTU4NGJcdWY5YWFcdWY5YWJcdTVkYjhcdTVmNzFcdWY5YWNcdTY2MjBcdTY2OGVcdTY5NzlcdTY5YWVcdTZjMzhcdTZjZjNcdTZlMzZcdTZmNDFcdTZmZGFcdTcwMWJcdTcwMmZcdTcxNTBcdTcxZGZc''@;'; put 'put ''dTczNzBcdWY5YWRcdTc0NWJcdWY5YWVcdTc0ZDRcdTc2YzhcdTdhNGVcdTdlOTNcdWY5YWZcdWY5YjBcdTgyZjFcdThhNjBcdThmY2VcdWY5YjFcdTkzNDhcdWY5YjJcdTk3MTlcdWY5YjNcdWY5YjRcdTRlNDJcdTUwMmFcdWY5YjVcdTUyMDhcdTUzZTFcdTY2ZjNcdTZjNmRcdTZmY2FcdTcz''@;'; put 'put ''MGFcdTc3N2ZcdTdhNjJcdTgyYWVcdTg1ZGRcdTg2MDJcdWY5YjZcdTg4ZDRcdThhNjNcdThiN2RcdThjNmJcdWY5YjdcdTkyYjNcdWY5YjhcdTk3MTNcdTk4MTBcdTRlOTRcdTRmMGRcdTRmYzlcdTUwYjJcdTUzNDhcdTU0M2VcdTU0MzNcdTU1ZGFcdTU4NjJcdTU4YmFcdTU5NjdcdTVhMWJc''@;'; put 'put ''dTViZTRcdTYwOWZcdWY5YjlcdTYxY2FcdTY1NTZcdTY1ZmZcdTY2NjRcdTY4YTdcdTZjNWFcdTZmYjNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjMxXVt2XV09NTkxMzYrdixUWzU5MTM2''@;'; put 'put ''K3ZdPWtbMjMxXVt2XSk7Zm9yKGtbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1''@;'; put 'put ''XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5''@;'; put 'put ''ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEy''@;'; put 'put ''XHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzMl1bdl1dPTU5''@;'; put 'put ''MzkyK3YsVFs1OTM5Mit2XT1rWzIzMl1bdl0pO2ZvcihrWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E4OFx1N2FhZlx1N2U0N1x1N2U1ZVx1ODAwMFx1ODE3MFx1ZjljMlx1ODdlZlx1ODk4MVx1OGIyMFx1OTA1OVx1ZjljM1x1OTA4MFx1OTk1Mlx1NjE3ZVx1NmIzMlx1NmQ3NFx1N2UxZlx1ODkyNVx1OGZiMVx1NGZkMVx1NTBhZFx1NTE5N1x1NTJjN1x1NTdj''@;'; put 'put ''N1x1NTg4OVx1NWJiOVx1NWViOFx1NjE0Mlx1Njk5NVx1NmQ4Y1x1NmU2N1x1NmViNlx1NzE5NFx1NzQ2Mlx1NzUyOFx1NzUyY1x1ODA3M1x1ODMzOFx1ODRjOVx1OGUwYVx1OTM5NFx1OTNkZVx1ZjljNFx1NGU4ZVx1NGY1MVx1NTA3Nlx1NTEyYVx1NTNjOFx1NTNjYlx1NTNmM1x1NWI4N1x1''@;'; put 'put ''NWJkM1x1NWMyNFx1NjExYVx1NjE4Mlx1NjVmNFx1NzI1Ylx1NzM5N1x1NzQ0MFx1NzZjMlx1Nzk1MFx1Nzk5MVx1NzliOVx1N2QwNlx1N2ZiZFx1ODI4Ylx1ODVkNVx1ODY1ZVx1OGZjMlx1OTA0N1x1OTBmNVx1OTFlYVx1OTY4NVx1OTZlOFx1OTZlOVx1NTJkNlx1NWY2N1x1NjVlZFx1NjYz''@;'; put 'put ''MVx1NjgyZlx1NzE1Y1x1N2EzNlx1OTBjMVx1OTgwYVx1NGU5MVx1ZjljNVx1NmE1Mlx1NmI5ZVx1NmY5MFx1NzE4OVx1ODAxOFx1ODJiOFx1ODU1M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vb''@;'; put 'put ''a1syMzNdW3ZdXT01OTY0OCt2LFRbNTk2NDgrdl09a1syMzNdW3ZdKTtmb3Ioa1syMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwNGJcdTk2OTVcdTk2ZjJcdTk3ZmJcdTg1MWFcdTliMzFcdTRlOTBcdTcxOGFcdTk2YzRcdTUxNDNcdTUzOWZcdTU0ZTFcdTU3MTNcdTU3MTJcdTU3YTNcdTVhOWJcdTVhYzRcdTViYzNcdTYwMjhcdTYxM2ZcdTYzZjRcdTZjODVcdTZk''@;'; put 'put ''MzlcdTZlNzJcdTZlOTBcdTcyMzBcdTczM2ZcdTc0NTdcdTgyZDFcdTg4ODFcdThmNDVcdTkwNjBcdWY5YzZcdTk2NjJcdTk4NThcdTlkMWJcdTY3MDhcdThkOGFcdTkyNWVcdTRmNGRcdTUwNDlcdTUwZGVcdTUzNzFcdTU3MGRcdTU5ZDRcdTVhMDFcdTVjMDlcdTYxNzBcdTY2OTBcdTZlMmRc''@;'; put 'put ''dTcyMzJcdTc0NGJcdTdkZWZcdTgwYzNcdTg0MGVcdTg0NjZcdTg1M2ZcdTg3NWZcdTg4NWJcdTg5MThcdThiMDJcdTkwNTVcdTk3Y2JcdTliNGZcdTRlNzNcdTRmOTFcdTUxMTJcdTUxNmFcdWY5YzdcdTU1MmZcdTU1YTlcdTViN2FcdTViYTVcdTVlN2NcdTVlN2RcdTVlYmVcdTYwYTBcdTYw''@;'; put 'put ''ZGZcdTYxMDhcdTYxMDlcdTYzYzRcdTY1MzhcdTY3MDlcdWY5YzhcdTY3ZDRcdTY3ZGFcdWY5YzlcdTY5NjFcdTY5NjJcdTZjYjlcdTZkMjdcdWY5Y2FcdTZlMzhcdWY5Y2JcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzNF1bdl0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKHNlW2tbMjM0XVt2XV09NTk5MDQrdixUWzU5OTA0K3ZdPWtbMjM0XVt2XSk7Zm9yKGtbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5''@;'; put 'put ''MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5''@;'; put 'put ''XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4''@;'; put 'put ''MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sy''@;'; put 'put ''MzVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzNV1bdl1dPTYwMTYwK3YsVFs2MDE2MCt2XT1rWzIzNV1bdl0pO2ZvcihrWzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI3MFx1OTFhYlx1NGU4Y1x1NGVlNVx1NGYwYVx1ZjlkZFx1ZjlkZVx1NTkzN1x1NTllOFx1ZjlkZlx1NWRmMlx1NWYxYlx1NWY1Ylx1NjAyMVx1ZjllMFx1ZjllMVx1ZjllMlx1ZjllM1x1''@;'; put 'put ''NzIzZVx1NzNlNVx1ZjllNFx1NzU3MFx1NzVjZFx1ZjllNVx1NzlmYlx1ZjllNlx1ODAwY1x1ODAzM1x1ODA4NFx1ODJlMVx1ODM1MVx1ZjllN1x1ZjllOFx1OGNiZFx1OGNiM1x1OTA4N1x1ZjllOVx1ZjllYVx1OThmNFx1OTkwY1x1ZjllYlx1ZjllY1x1NzAzN1x1NzZjYVx1N2ZjYVx1N2Zj''@;'; put 'put ''Y1x1N2ZmY1x1OGIxYVx1NGViYVx1NGVjMVx1NTIwM1x1NTM3MFx1ZjllZFx1NTRiZFx1NTZlMFx1NTlmYlx1NWJjNVx1NWYxNVx1NWZjZFx1NmU2ZVx1ZjllZVx1ZjllZlx1N2Q2YVx1ODMzNVx1ZjlmMFx1ODY5M1x1OGE4ZFx1ZjlmMVx1OTc2ZFx1OTc3N1x1ZjlmMlx1ZjlmM1x1NGUwMFx1''@;'; put 'put ''NGY1YVx1NGY3ZVx1NThmOVx1NjVlNVx1NmVhMlx1OTAzOFx1OTNiMFx1OTliOVx1NGVmYlx1NThlY1x1NTk4YVx1NTlkOVx1NjA0MVx1ZjlmNFx1ZjlmNVx1N2ExNFx1ZjlmNlx1ODM0Zlx1OGNjM1x1NTE2NVx1NTM0NFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzNl0ubGVuZ3RoOysr''@;'; put 'put ''dik2NTUzMyE9PWtbMjM2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzZdW3ZdXT02MDQxNit2LFRbNjA0MTYrdl09a1syMzZdW3ZdKTtmb3Ioa1syMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5ZjdcdWY5ZjhcdWY5ZjlcdTRlY2RcdTUyNjlcdTViNTVcdTgyYmZcdTRlZDRcdTUyM2FcdTU0YThcdTU5YzlcdTU5ZmZcdTViNTBcdTViNTdcdTViNWNcdTYwNjNc''@;'; put 'put ''dTYxNDhcdTZlY2JcdTcwOTlcdTcxNmVcdTczODZcdTc0ZjdcdTc1YjVcdTc4YzFcdTdkMmJcdTgwMDVcdTgxZWFcdTgzMjhcdTg1MTdcdTg1YzlcdThhZWVcdThjYzdcdTk2Y2NcdTRmNWNcdTUyZmFcdTU2YmNcdTY1YWJcdTY2MjhcdTcwN2NcdTcwYjhcdTcyMzVcdTdkYmRcdTgyOGRcdTkx''@;'; put 'put ''NGNcdTk2YzBcdTlkNzJcdTViNzFcdTY4ZTdcdTZiOThcdTZmN2FcdTc2ZGVcdTVjOTFcdTY2YWJcdTZmNWJcdTdiYjRcdTdjMmFcdTg4MzZcdTk2ZGNcdTRlMDhcdTRlZDdcdTUzMjBcdTU4MzRcdTU4YmJcdTU4ZWZcdTU5NmNcdTVjMDdcdTVlMzNcdTVlODRcdTVmMzVcdTYzOGNcdTY2YjJc''@;'; put 'put ''dTY3NTZcdTZhMWZcdTZhYTNcdTZiMGNcdTZmM2ZcdTcyNDZcdWY5ZmFcdTczNTBcdTc0OGJcdTdhZTBcdTdjYTdcdTgxNzhcdTgxZGZcdTgxZTdcdTgzOGFcdTg0NmNcdTg1MjNcdTg1OTRcdTg1Y2ZcdTg4ZGRcdThkMTNcdTkxYWNcdTk1NzdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sy''@;'; put 'put ''MzddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM3XVt2XV09NjA2NzIrdixUWzYwNjcyK3ZdPWtbMjM3XVt2XSk7Zm9yKGtbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMx''@;'; put 'put ''XHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4''@;'; put 'put ''NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0''@;'; put 'put ''XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMwXHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIxXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''Iiksdj0wO3YhPWtbMjM4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzOF1bdl1dPTYwOTI4K3YsVFs2MDkyOCt2XT1rWzIzOF1bdl0pO2ZvcihrWzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0ZVx1NzQyMFx1NzUzMFx1NzUzOFx1NzU1MVx1NzY3Mlx1N2I0Y1x1N2I4Ylx1N2JhZFx1N2JjNlx1N2U4Zlx1OGE2''@;'; put 'put ''ZVx1OGYzZVx1OGY0OVx1OTIzZlx1OTI5M1x1OTMyMlx1OTQyYlx1OTZmYlx1OTg1YVx1OTg2Ylx1OTkxZVx1NTIwN1x1NjIyYVx1NjI5OFx1NmQ1OVx1NzY2NFx1N2FjYVx1N2JjMFx1N2Q3Nlx1NTM2MFx1NWNiZVx1NWU5N1x1NmYzOFx1NzBiOVx1N2M5OFx1OTcxMVx1OWI4ZVx1OWVkZVx1''@;'; put 'put ''NjNhNVx1NjQ3YVx1ODc3Nlx1NGUwMVx1NGU5NVx1NGVhZFx1NTA1Y1x1NTA3NVx1NTQ0OFx1NTljM1x1NWI5YVx1NWU0MFx1NWVhZFx1NWVmN1x1NWY4MVx1NjBjNVx1NjMzYVx1NjUzZlx1NjU3NFx1NjVjY1x1NjY3Nlx1NjY3OFx1NjdmZVx1Njk2OFx1NmE4OVx1NmI2M1x1NmM0MFx1NmRj''@;'; put 'put ''MFx1NmRlOFx1NmUxZlx1NmU1ZVx1NzAxZVx1NzBhMVx1NzM4ZVx1NzNmZFx1NzUzYVx1Nzc1Ylx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2E3ZFx1N2NiZVx1N2Q4ZVx1ODI0N1x1OGEwMlx1OGFlYVx1OGM5ZVx1OTEyZFx1OTE0YVx1OTFkOFx1OTI2Nlx1OTJjY1x1OTMyMFx1OTcwNlx1OTc1Nlx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjM5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzldW3ZdXT02MTE4NCt2LFRbNjExODQrdl09a1syMzldW3ZdKTtmb3Ioa1syNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3NWNcdTk4MDJcdTlmMGVcdTUyMzZcdTUyOTFcdTU1N2NcdTU4MjRcdTVlMWRcdTVmMWZcdTYw''@;'; put 'put ''OGNcdTYzZDBcdTY4YWZcdTZmZGZcdTc5NmRcdTdiMmNcdTgxY2RcdTg1YmFcdTg4ZmRcdThhZjhcdThlNDRcdTkxOGRcdTk2NjRcdTk2OWJcdTk3M2RcdTk4NGNcdTlmNGFcdTRmY2VcdTUxNDZcdTUxY2JcdTUyYTlcdTU2MzJcdTVmMTRcdTVmNmJcdTYzYWFcdTY0Y2RcdTY1ZTlcdTY2NDFc''@;'; put 'put ''dTY2ZmFcdTY2ZjlcdTY3MWRcdTY4OWRcdTY4ZDdcdTY5ZmRcdTZmMTVcdTZmNmVcdTcxNjdcdTcxZTVcdTcyMmFcdTc0YWFcdTc3M2FcdTc5NTZcdTc5NWFcdTc5ZGZcdTdhMjBcdTdhOTVcdTdjOTdcdTdjZGZcdTdkNDRcdTdlNzBcdTgwODdcdTg1ZmJcdTg2YTRcdThhNTRcdThhYmZcdThk''@;'; put 'put ''OTlcdThlODFcdTkwMjBcdTkwNmRcdTkxZTNcdTk2M2JcdTk2ZDVcdTljZTVcdTY1Y2ZcdTdjMDdcdThkYjNcdTkzYzNcdTViNThcdTVjMGFcdTUzNTJcdTYyZDlcdTczMWRcdTUwMjdcdTViOTdcdTVmOWVcdTYwYjBcdTYxNmJcdTY4ZDVcdTZkZDlcdTc0MmVcdTdhMmVcdTdkNDJcdTdkOWNc''@;'; put 'put ''dTdlMzFcdTgxNmJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQwXVt2XV09NjE0NDArdixUWzYxNDQwK3ZdPWtbMjQwXVt2XSk7Zm9yKGtbMjQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUwXHU1NzUwXHU1ZGU2XHU1''@;'; put 'put ''ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRlXHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3M2UwXHU3NTg3XHU3YzRj''@;'; put 'put ''XHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNkXHU2ZDVhXHU2ZTk2XHU2''@;'; put 'put ''ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1MzdkXHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3NWM3XHU3ZTUyXHU4NGI4''@;'; put 'put ''XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0MV1bdl1dPTYxNjk2K3YsVFs2MTY5Nit2XT1rWzI0MV1bdl0pO2ZvcihrWzI0Ml09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTczMFx1NTc0MFx1NWZkN1x1NjMwMVx1''@;'; put 'put ''NjMwN1x1NjQ2Zlx1NjUyZlx1NjVlOFx1NjY3YVx1Njc5ZFx1NjdiM1x1NmI2Mlx1NmM2MFx1NmM5YVx1NmYyY1x1NzdlNVx1NzgyNVx1Nzk0OVx1Nzk1N1x1N2QxOVx1ODBhMlx1ODEwMlx1ODFmM1x1ODI5ZFx1ODJiN1x1ODcxOFx1OGE4Y1x1ZjlmY1x1OGQwNFx1OGRiZVx1OTA3Mlx1NzZm''@;'; put 'put ''NFx1N2ExOVx1N2EzN1x1N2U1NFx1ODA3N1x1NTUwN1x1NTVkNFx1NTg3NVx1NjMyZlx1NjQyMlx1NjY0OVx1NjY0Ylx1Njg2ZFx1Njk5Ylx1NmI4NFx1NmQyNVx1NmViMVx1NzNjZFx1NzQ2OFx1NzRhMVx1NzU1Ylx1NzViOVx1NzZlMVx1NzcxZVx1Nzc4Ylx1NzllNlx1N2UwOVx1N2UxZFx1''@;'; put 'put ''ODFmYlx1ODUyZlx1ODg5N1x1OGEzYVx1OGNkMVx1OGVlYlx1OGZiMFx1OTAzMlx1OTNhZFx1OTY2M1x1OTY3M1x1OTcwN1x1NGY4NFx1NTNmMVx1NTllYVx1NWFjOVx1NWUxOVx1Njg0ZVx1NzRjNlx1NzViZVx1NzllOVx1N2E5Mlx1ODFhM1x1ODZlZFx1OGNlYVx1OGRjY1x1OGZlZFx1NjU5''@;'; put 'put ''Zlx1NjcxNVx1ZjlmZFx1NTdmN1x1NmY1N1x1N2RkZFx1OGYyZlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDJdW3ZdXT02MTk1Mit2LFRbNjE5NTIrdl09a1syNDJdW3ZdKTtmb3Ioa1sy''@;'; put 'put ''NDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzZjZcdTk2YzZcdTVmYjVc''@;'; put 'put ''dTYxZjJcdTZmODRcdTRlMTRcdTRmOThcdTUwMWZcdTUzYzlcdTU1ZGZcdTVkNmZcdTVkZWVcdTZiMjFcdTZiNjRcdTc4Y2JcdTdiOWFcdWY5ZmVcdThlNDlcdThlY2FcdTkwNmVcdTYzNDlcdTY0M2VcdTc3NDBcdTdhODRcdTkzMmZcdTk0N2ZcdTlmNmFcdTY0YjBcdTZmYWZcdTcxZTZcdTc0''@;'; put 'put ''YThcdTc0ZGFcdTdhYzRcdTdjMTJcdTdlODJcdTdjYjJcdTdlOThcdThiOWFcdThkMGFcdTk0N2RcdTk5MTBcdTk5NGNcdTUyMzlcdTViZGZcdTY0ZTZcdTY3MmRcdTdkMmVcdTUwZWRcdTUzYzNcdTU4NzlcdTYxNThcdTYxNTlcdTYxZmFcdTY1YWNcdTdhZDlcdThiOTJcdThiOTZcdTUwMDlc''@;'; put 'put ''dTUwMjFcdTUyNzVcdTU1MzFcdTVhM2NcdTVlZTBcdTVmNzBcdTYxMzRcdTY1NWVcdTY2MGNcdTY2MzZcdTY2YTJcdTY5Y2RcdTZlYzRcdTZmMzJcdTczMTZcdTc2MjFcdTdhOTNcdTgxMzlcdTgyNTlcdTgzZDZcdTg0YmNcdTUwYjVcdTU3ZjBcdTViYzBcdTViZThcdTVmNjlcdTYzYTFcdTc4''@;'; put 'put ''MjZcdTdkYjVcdTgzZGNcdTg1MjFcdTkxYzdcdTkxZjVcdTUxOGFcdTY3ZjVcdTdiNTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQzXVt2XV09NjIyMDgrdixUWzYyMjA4K3ZdPWtbMjQz''@;'; put 'put ''XVt2XSk7Zm9yKGtbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Y2Fj''@;'; put 'put ''XHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3''@;'; put 'put ''Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNk''@;'; put 'put ''XHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4''@;'; put 'put ''YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2MmRiXHU2OGEyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0NF1bdl1dPTYyNDY0K3YsVFs2''@;'; put 'put ''MjQ2NCt2XT1rWzI0NF1bdl0pO2ZvcihrWzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NjkxMlx1Njk1YVx1NmEzNVx1NzA5Mlx1NzEyNlx1Nzg1ZFx1NzkwMVx1NzkwZVx1NzlkMlx1N2EwZFx1ODA5Nlx1ODI3OFx1ODJkNVx1ODM0OVx1ODU0OVx1OGM4Mlx1OGQ4NVx1OTE2Mlx1OTE4Ylx1OTFhZVx1NGZjM1x1NTZkMVx1NzFlZFx1NzdkN1x1ODcwMFx1ODlmOFx1''@;'; put 'put ''NWJmOFx1NWZkNlx1Njc1MVx1OTBhOFx1NTNlMlx1NTg1YVx1NWJmNVx1NjBhNFx1NjE4MVx1NjQ2MFx1N2UzZFx1ODA3MFx1ODUyNVx1OTI4M1x1NjRhZVx1NTBhY1x1NWQxNFx1NjcwMFx1NTg5Y1x1NjJiZFx1NjNhOFx1NjkwZVx1Njk3OFx1NmExZVx1NmU2Ylx1NzZiYVx1NzljYlx1ODJi''@;'; put 'put ''Ylx1ODQyOVx1OGFjZlx1OGRhOFx1OGZmZFx1OTExMlx1OTE0Ylx1OTE5Y1x1OTMxMFx1OTMxOFx1OTM5YVx1OTZkYlx1OWEzNlx1OWMwZFx1NGUxMVx1NzU1Y1x1Nzk1ZFx1N2FmYVx1N2I1MVx1N2JjOVx1N2UyZVx1ODRjNFx1OGU1OVx1OGU3NFx1OGVmOFx1OTAxMFx1NjYyNVx1NjkzZlx1''@;'; put 'put ''NzQ0M1x1NTFmYVx1NjcyZVx1OWVkY1x1NTE0NVx1NWZlMFx1NmM5Nlx1ODdmMlx1ODg1ZFx1ODg3N1x1NjBiNFx1ODFiNVx1ODQwM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDVdW3Zd''@;'; put 'put ''XT02MjcyMCt2LFRbNjI3MjArdl09a1syNDVdW3ZdKTtmb3Ioa1syNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMDVcdTUzZDZcdTU0MzlcdTU2MzRcdTVhMzZcdTVjMzFcdTcwOGFcdTdmZTBcdTgwNWFcdTgxMDZcdTgxZWRcdThkYTNcdTkxODlcdTlhNWZcdTlkZjJcdTUwNzRcdTRlYzRcdTUzYTBcdTYwZmJcdTZlMmNcdTVjNjRcdTRmODhcdTUwMjRcdTU1ZTRc''@;'; put 'put ''dTVjZDlcdTVlNWZcdTYwNjVcdTY4OTRcdTZjYmJcdTZkYzRcdTcxYmVcdTc1ZDRcdTc1ZjRcdTc2NjFcdTdhMWFcdTdhNDlcdTdkYzdcdTdkZmJcdTdmNmVcdTgxZjRcdTg2YTlcdThmMWNcdTk2YzlcdTk5YjNcdTlmNTJcdTUyNDdcdTUyYzVcdTk4ZWRcdTg5YWFcdTRlMDNcdTY3ZDJcdTZm''@;'; put 'put ''MDZcdTRmYjVcdTViZTJcdTY3OTVcdTZjODhcdTZkNzhcdTc0MWJcdTc4MjdcdTkxZGRcdTkzN2NcdTg3YzRcdTc5ZTRcdTdhMzFcdTVmZWJcdTRlZDZcdTU0YTRcdTU1M2VcdTU4YWVcdTU5YTVcdTYwZjBcdTYyNTNcdTYyZDZcdTY3MzZcdTY5NTVcdTgyMzVcdTk2NDBcdTk5YjFcdTk5ZGRc''@;'; put 'put ''dTUwMmNcdTUzNTNcdTU1NDRcdTU3N2NcdWZhMDFcdTYyNThcdWZhMDJcdTY0ZTJcdTY2NmJcdTY3ZGRcdTZmYzFcdTZmZWZcdTc0MjJcdTc0MzhcdThhMTdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0Nl1bdl0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KHNlW2tbMjQ2XVt2XV09NjI5NzYrdixUWzYyOTc2K3ZdPWtbMjQ2XVt2XSk7Zm9yKGtbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTEx''@;'; put 'put ''XHU2ZTZmXHVmYTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2''@;'; put 'put ''ODc2XHVmYTA1XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3''@;'; put 'put ''XHU2Y2UyXHU2ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDddW3ZdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihzZVtrWzI0N11bdl1dPTYzMjMyK3YsVFs2MzIzMit2XT1rWzI0N11bdl0pO2ZvcihrWzI0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTYyYVx1NTE2Ylx1NTNlZFx1NjM0Y1x1NGY2OVx1NTUwNFx1NjA5Nlx1NjU1N1x1NmM5Ylx1NmQ3Zlx1NzI0Y1x1NzJmZFx1N2ExN1x1ODk4N1x1OGM5ZFx1NWY2ZFx1NmY4ZVx1NzBmOVx1ODFhOFx1NjEw''@;'; put 'put ''ZVx1NGZiZlx1NTA0Zlx1NjI0MVx1NzI0N1x1N2JjN1x1N2RlOFx1N2ZlOVx1OTA0ZFx1OTdhZFx1OWExOVx1OGNiNlx1NTc2YVx1NWU3M1x1NjdiMFx1ODQwZFx1OGE1NVx1NTQyMFx1NWIxNlx1NWU2M1x1NWVlMlx1NWYwYVx1NjU4M1x1ODBiYVx1ODUzZFx1OTU4OVx1OTY1Ylx1NGY0OFx1''@;'; put 'put ''NTMwNVx1NTMwZFx1NTMwZlx1NTQ4Nlx1NTRmYVx1NTcwM1x1NWUwM1x1NjAxNlx1NjI5Ylx1NjJiMVx1NjM1NVx1ZmEwNlx1NmNlMVx1NmQ2Nlx1NzViMVx1NzgzMlx1ODBkZVx1ODEyZlx1ODJkZVx1ODQ2MVx1ODRiMlx1ODg4ZFx1ODkxMlx1OTAwYlx1OTJlYVx1OThmZFx1OWI5MVx1NWU0''@;'; put 'put ''NVx1NjZiNFx1NjZkZFx1NzAxMVx1NzIwNlx1ZmEwN1x1NGZmNVx1NTI3ZFx1NWY2YVx1NjE1M1x1Njc1M1x1NmExOVx1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGM3OVx1OThjN1x1OThjNFx1OWE0M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0OF0ubGVuZ3RoOysrdik2NTUzMyE9''@;'; put 'put ''PWtbMjQ4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDhdW3ZdXT02MzQ4OCt2LFRbNjM0ODgrdl09a1syNDhdW3ZdKTtmb3Ioa1syNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0YzFcdTdhMWZcdTY5NTNcdThhZjdcdThjNGFcdTk4YThcdTk5YWVcdTVmN2NcdTYyYWJcdTc1YjJcdTc2YWVcdTg4YWJcdTkwN2ZcdTk2NDJcdTUzMzlcdTVmM2NcdTVmYzVcdTZj''@;'; put 'put ''Y2NcdTczY2NcdTc1NjJcdTc1OGJcdTdiNDZcdTgyZmVcdTk5OWRcdTRlNGZcdTkwM2NcdTRlMGJcdTRmNTVcdTUzYTZcdTU5MGZcdTVlYzhcdTY2MzBcdTZjYjNcdTc0NTVcdTgzNzdcdTg3NjZcdThjYzBcdTkwNTBcdTk3MWVcdTljMTVcdTU4ZDFcdTViNzhcdTg2NTBcdThiMTRcdTlkYjRc''@;'; put 'put ''dTViZDJcdTYwNjhcdTYwOGRcdTY1ZjFcdTZjNTdcdTZmMjJcdTZmYTNcdTcwMWFcdTdmNTVcdTdmZjBcdTk1OTFcdTk1OTJcdTk2NTBcdTk3ZDNcdTUyNzJcdThmNDRcdTUxZmRcdTU0MmJcdTU0YjhcdTU1NjNcdTU1OGFcdTZhYmJcdTZkYjVcdTdkZDhcdTgyNjZcdTkyOWNcdTk2NzdcdTll''@;'; put 'put ''NzlcdTU0MDhcdTU0YzhcdTc2ZDJcdTg2ZTRcdTk1YTRcdTk1ZDRcdTk2NWNcdTRlYTJcdTRmMDlcdTU5ZWVcdTVhZTZcdTVkZjdcdTYwNTJcdTYyOTdcdTY3NmRcdTY4NDFcdTZjODZcdTZlMmZcdTdmMzhcdTgwOWJcdTgyMmFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDldLmxlbmd0''@;'; put 'put ''aDsrK3YpNjU1MzMhPT1rWzI0OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQ5XVt2XV09NjM3NDQrdixUWzYzNzQ0K3ZdPWtbMjQ5XVt2XSk7Zm9yKGtbMjUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2MWM4XHU2OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4''@;'; put 'put ''OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUzXHU1ODlmXHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2''@;'; put 'put ''XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3ZDYyXHU3ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4''@;'; put 'put ''Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjExXHU1NzhiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3Yh''@;'; put 'put ''PWtbMjUwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNTBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI1MF1bdl1dPTY0ZTMrdixUWzY0ZTMrdl09a1syNTBdW3ZdKTtmb3Ioa1syNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmNjJcdTZjYzJcdTZlY2VcdTcwMDVcdTcwNTBcdTcwYWZcdTcxOTJcdTczZTlcdTc0NjlcdTgzNGFcdTg3YTJcdTg4NjFcdTkwMDhcdTkw''@;'; put 'put ''YTJcdTkzYTNcdTk5YThcdTUxNmVcdTVmNTdcdTYwZTBcdTYxNjdcdTY2YjNcdTg1NTlcdThlNGFcdTkxYWZcdTk3OGJcdTRlNGVcdTRlOTJcdTU0N2NcdTU4ZDVcdTU4ZmFcdTU5N2RcdTVjYjVcdTVmMjdcdTYyMzZcdTYyNDhcdTY2MGFcdTY2NjdcdTZiZWJcdTZkNjlcdTZkY2ZcdTZlNTZc''@;'; put 'put ''dTZlZjhcdTZmOTRcdTZmZTBcdTZmZTlcdTcwNWRcdTcyZDBcdTc0MjVcdTc0NWFcdTc0ZTBcdTc2OTNcdTc5NWNcdTdjY2FcdTdlMWVcdTgwZTFcdTgyYTZcdTg0NmJcdTg0YmZcdTg2NGVcdTg2NWZcdTg3NzRcdThiNzdcdThjNmFcdTkzYWNcdTk4MDBcdTk4NjVcdTYwZDFcdTYyMTZcdTkx''@;'; put 'put ''NzdcdTVhNWFcdTY2MGZcdTZkZjdcdTZlM2VcdTc0M2ZcdTliNDJcdTVmZmRcdTYwZGFcdTdiMGZcdTU0YzRcdTVmMThcdTZjNWVcdTZjZDNcdTZkMmFcdTcwZDhcdTdkMDVcdTg2NzlcdThhMGNcdTlkM2JcdTUzMTZcdTU0OGNcdTViMDVcdTZhM2FcdTcwNmJcdTc1NzVcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1syNTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI1MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjUxXVt2XV09NjQyNTYrdixUWzY0MjU2K3ZdPWtbMjUxXVt2XSk7Zm9yKGtbMjUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBiXHU2NGY0XHU2NTJiXHU3''@;'; put 'put ''OGJhXHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2YjYxXHU2NjY1XHU2ODUzXHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1MWYwXHU1ZTRjXHU1ZmE4''@;'; put 'put ''XHU2MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5XHU2ZjYyXHU3MTRjXHU3NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1ZjhhXHU2MDYyXHU2MDk0XHU2''@;'; put 'put ''MWY3XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4MzM0XHU4NmQ0XHU4YWE4XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2ODlmXHU2ZDhkXHU2ZGM2''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjUyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNTJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI1Ml1bdl1dPTY0NTEyK3YsVFs2NDUxMit2XT1rWzI1Ml1bdl0pO2ZvcihrWzI1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzIzYlx1ODBiNFx1OTE3NVx1OWE0ZFx1NGZhZlx1NTAxOVx1NTM5YVx1NTQwZVx1NTQzY1x1''@;'; put 'put ''NTU4OVx1NTVjNVx1NWUzZlx1NWY4Y1x1NjczZFx1NzE2Nlx1NzNkZFx1OTAwNVx1NTJkYlx1NTJmM1x1NTg2NFx1NThjZVx1NzEwNFx1NzE4Zlx1NzFmYlx1ODViMFx1OGExM1x1NjY4OFx1ODVhOFx1NTVhN1x1NjY4NFx1NzE0YVx1ODQzMVx1NTM0OVx1NTU5OVx1NmJjMVx1NWY1OVx1NWZi''@;'; put 'put ''ZFx1NjNlZVx1NjY4OVx1NzE0N1x1OGFmMVx1OGYxZFx1OWViZVx1NGYxMVx1NjQzYVx1NzBjYlx1NzU2Nlx1ODY2N1x1NjA2NFx1OGI0ZVx1OWRmOFx1NTE0N1x1NTFmNlx1NTMwOFx1NmQzNlx1ODBmOFx1OWVkMVx1NjYxNVx1NmIyM1x1NzA5OFx1NzVkNVx1NTQwM1x1NWM3OVx1N2QwN1x1''@;'; put 'put ''OGExNlx1NmIyMFx1NmIzZFx1NmI0Nlx1NTQzOFx1NjA3MFx1NmQzZFx1N2ZkNVx1ODIwOFx1NTBkNlx1NTFkZVx1NTU5Y1x1NTY2Ylx1NTZjZFx1NTllY1x1NWIwOVx1NWUwY1x1NjE5OVx1NjE5OFx1NjIzMVx1NjY1ZVx1NjZlNlx1NzE5OVx1NzFiOVx1NzFiYVx1NzJhN1x1NzlhN1x1N2Ew''@;'; put 'put ''MFx1N2ZiMlx1OGE3MFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI1M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjUzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNTNdW3ZdXT02NDc2OCt2LFRbNjQ3Njgrdl09a1syNTNdW3ZdKTtyZXR1cm57ZW5jOnNlLGRlYzpUfX0oKSx6ZVs5NTBd''@;'; put 'put ''PWZ1bmN0aW9uKCl7dmFyIHYsVD1bXSxzZT17fSxrPVtdO2ZvcihrWzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQl''@;'; put 'put ''JicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzBdW3ZdXT0wK3YsVFswK3ZdPWtbMF1bdl0pO2ZvcihrWzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1ZmYwY1x1MzAwMVx1MzAwMlx1ZmYwZVx1MjAyN1x1ZmYxYlx1ZmYxYVx1ZmYxZlx1ZmYwMVx1ZmUzMFx1MjAyNlx1MjAyNVx1ZmU1MFx1ZmU1MVx1ZmU1Mlx4YjdcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZm''@;'; put 'put ''NWNcdTIwMTNcdWZlMzFcdTIwMTRcdWZlMzNcdTI1NzRcdWZlMzRcdWZlNGZcdWZmMDhcdWZmMDlcdWZlMzVcdWZlMzZcdWZmNWJcdWZmNWRcdWZlMzdcdWZlMzhcdTMwMTRcdTMwMTVcdWZlMzlcdWZlM2FcdTMwMTBcdTMwMTFcdWZlM2JcdWZlM2NcdTMwMGFcdTMwMGJcdWZlM2RcdWZlM2Vc''@;'; put 'put ''dTMwMDhcdTMwMDlcdWZlM2ZcdWZlNDBcdTMwMGNcdTMwMGRcdWZlNDFcdWZlNDJcdTMwMGVcdTMwMGZcdWZlNDNcdWZlNDRcdWZlNTlcdWZlNWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdTIwMThcdTIwMTlcdTIwMWNc''@;'; put 'put ''dTIwMWRcdTMwMWRcdTMwMWVcdTIwMzVcdTIwMzJcdWZmMDNcdWZmMDZcdWZmMGFcdTIwM2JceGE3XHUzMDAzXHUyNWNiXHUyNWNmXHUyNWIzXHUyNWIyXHUyNWNlXHUyNjA2XHUyNjA1XHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWJkXHUyNWJjXHUzMmEzXHUyMTA1XHhhZlx1ZmZlM1x1''@;'; put 'put ''ZmYzZlx1MDJjZFx1ZmU0OVx1ZmU0YVx1ZmU0ZFx1ZmU0ZVx1ZmU0Ylx1ZmU0Y1x1ZmU1Zlx1ZmU2MFx1ZmU2MVx1ZmYwYlx1ZmYwZFx4ZDdceGY3XHhiMVx1MjIxYVx1ZmYxY1x1ZmYxZVx1ZmYxZFx1MjI2Nlx1MjI2N1x1MjI2MFx1MjIxZVx1MjI1Mlx1MjI2MVx1ZmU2Mlx1ZmU2M1x1ZmU2''@;'; put 'put ''NFx1ZmU2NVx1ZmU2Nlx1ZmY1ZVx1MjIyOVx1MjIyYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MzNkMlx1MzNkMVx1MjIyYlx1MjIyZVx1MjIzNVx1MjIzNFx1MjY0MFx1MjY0Mlx1MjI5NVx1MjI5OVx1MjE5MVx1MjE5M1x1MjE5MFx1MjE5Mlx1MjE5Nlx1MjE5N1x1MjE5OVx1MjE5OFx1''@;'; put 'put ''MjIyNVx1MjIyM1x1ZmYwZlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTYxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjFdW3ZdXT00MTIxNit2LFRbNDEyMTYrdl09a1sxNjFdW3ZdKTtmb3Ioa1sxNjJdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMzOWNcdTMzOWRcdTMzOWVcdTMzY2VcdTMzYTFc''@;'; put 'put ''dTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2NlXHUyNTgxXHUyNTgyXHUyNTgzXHUyNTg0XHUyNTg1XHUyNTg2XHUyNTg3XHUyNTg4XHUyNThmXHUyNThlXHUyNThkXHUyNThjXHUyNThiXHUyNThhXHUyNTg5''@;'; put 'put ''XHUyNTNjXHUyNTM0XHUyNTJjXHUyNTI0XHUyNTFjXHUyNTk0XHUyNTAwXHUyNTAyXHUyNTk1XHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTUwXHUyNTVlXHUyNTZhXHUyNTYx''@;'; put 'put ''XHUyNWUyXHUyNWUzXHUyNWU1XHUyNWU0XHUyNTcxXHUyNTcyXHUyNTczXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3XHUyMTY4XHUyMTY5XHUz''@;'; put 'put ''MDIxXHUzMDIyXHUzMDIzXHUzMDI0XHUzMDI1XHUzMDI2XHUzMDI3XHUzMDI4XHUzMDI5XHU1MzQxXHU1MzQ0XHU1MzQ1XHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMw''@;'; put 'put ''XHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVm''@;'; put 'put ''ZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTYyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2Ml1bdl1dPTQxNDcyK3YsVFs0MTQ3Mit2XT1rWzE2Ml1bdl0pO2ZvcihrWzE2M109Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1''@;'; put 'put ''MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNj''@;'; put 'put ''NFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzEx''@;'; put 'put ''NFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1MDJkOVx1MDJjOVx1MDJjYVx1MDJjN1x1MDJjYlx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTYzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjNdW3ZdXT00MTcyOCt2LFRbNDE3Mjgrdl09a1sxNjNdW3ZdKTtmb3Io''@;'; put 'put ''a1sxNjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDBcdTRlNTlcdTRlMDFcdTRlMDNcdTRlNDNcdTRlNWRcdTRlODZcdTRlOGNcdTRlYmFcdTUxM2ZcdTUxNjVcdTUxNmJcdTUxZTBcdTUyMDBcdTUyMDFcdTUyOWJcdTUzMTVc''@;'; put 'put ''dTUzNDFcdTUzNWNcdTUzYzhcdTRlMDlcdTRlMGJcdTRlMDhcdTRlMGFcdTRlMmJcdTRlMzhcdTUxZTFcdTRlNDVcdTRlNDhcdTRlNWZcdTRlNWVcdTRlOGVcdTRlYTFcdTUxNDBcdTUyMDNcdTUyZmFcdTUzNDNcdTUzYzlcdTUzZTNcdTU3MWZcdTU4ZWJcdTU5MTVcdTU5MjdcdTU5NzNcdTVi''@;'; put 'put ''NTBcdTViNTFcdTViNTNcdTViZjhcdTVjMGZcdTVjMjJcdTVjMzhcdTVjNzFcdTVkZGRcdTVkZTVcdTVkZjFcdTVkZjJcdTVkZjNcdTVkZmVcdTVlNzJcdTVlZmVcdTVmMGJcdTVmMTNcdTYyNGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMTFcdTRlMTBcdTRl''@;'; put 'put ''MGRcdTRlMmRcdTRlMzBcdTRlMzlcdTRlNGJcdTVjMzlcdTRlODhcdTRlOTFcdTRlOTVcdTRlOTJcdTRlOTRcdTRlYTJcdTRlYzFcdTRlYzBcdTRlYzNcdTRlYzZcdTRlYzdcdTRlY2RcdTRlY2FcdTRlY2JcdTRlYzRcdTUxNDNcdTUxNDFcdTUxNjdcdTUxNmRcdTUxNmVcdTUxNmNcdTUxOTdc''@;'; put 'put ''dTUxZjZcdTUyMDZcdTUyMDdcdTUyMDhcdTUyZmJcdTUyZmVcdTUyZmZcdTUzMTZcdTUzMzlcdTUzNDhcdTUzNDdcdTUzNDVcdTUzNWVcdTUzODRcdTUzY2JcdTUzY2FcdTUzY2RcdTU4ZWNcdTU5MjlcdTU5MmJcdTU5MmFcdTU5MmRcdTViNTRcdTVjMTFcdTVjMjRcdTVjM2FcdTVjNmZcdTVk''@;'; put 'put ''ZjRcdTVlN2JcdTVlZmZcdTVmMTRcdTVmMTVcdTVmYzNcdTYyMDhcdTYyMzZcdTYyNGJcdTYyNGVcdTY1MmZcdTY1ODdcdTY1OTdcdTY1YTRcdTY1YjlcdTY1ZTVcdTY2ZjBcdTY3MDhcdTY3MjhcdTZiMjBcdTZiNjJcdTZiNzlcdTZiY2JcdTZiZDRcdTZiZGJcdTZjMGZcdTZjMzRcdTcwNmJc''@;'; put 'put ''dTcyMmFcdTcyMzZcdTcyM2JcdTcyNDdcdTcyNTlcdTcyNWJcdTcyYWNcdTczOGJcdTRlMTlcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTY0XVt2XV09NDE5ODQrdixUWzQxOTg0K3ZdPWtb''@;'; put 'put ''MTY0XVt2XSk7Zm9yKGtbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1XHU0ZWQ4XHU0ZWQ0XHU0ZWQ1XHU0ZWQ2XHU0ZWQ3XHU0ZWUz''@;'; put 'put ''XHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1MzYxXHU1MzYwXHU1MzZmXHU1MzZlXHU1M2JiXHU1M2VmXHU1''@;'; put 'put ''M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2YyXHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1''@;'; put 'put ''OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTczXHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1XHU2NWU2XHU2NzJlXHU2NzJjXHU2NzJh''@;'; put 'put ''XHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3NThiXHU3NjdkXHU3NmFlXHU3NmJmXHU3''@;'; put 'put ''NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEwXHU0ZjExXHU0ZjBmXHU0ZWYyXHU0ZWY2''@;'; put 'put ''XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2NV1bdl1dPTQyMjQwK3Ys''@;'; put 'put ''VFs0MjI0MCt2XT1rWzE2NV1bdl0pO2ZvcihrWzE2Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTE3MVx1NTE4ZFx1NTFiMFx1NTIxN1x1NTIxMVx1NTIxMlx1NTIwZVx1NTIxNlx1NTJhM1x1NTMwOFx1NTMyMVx1NTMyMFx1NTM3''@;'; put 'put ''MFx1NTM3MVx1NTQwOVx1NTQwZlx1NTQwY1x1NTQwYVx1NTQxMFx1NTQwMVx1NTQwYlx1NTQwNFx1NTQxMVx1NTQwZFx1NTQwOFx1NTQwM1x1NTQwZVx1NTQwNlx1NTQxMlx1NTZlMFx1NTZkZVx1NTZkZFx1NTczM1x1NTczMFx1NTcyOFx1NTcyZFx1NTcyY1x1NTcyZlx1NTcyOVx1NTkxOVx1''@;'; put 'put ''NTkxYVx1NTkzN1x1NTkzOFx1NTk4NFx1NTk3OFx1NTk4M1x1NTk3ZFx1NTk3OVx1NTk4Mlx1NTk4MVx1NWI1N1x1NWI1OFx1NWI4N1x1NWI4OFx1NWI4NVx1NWI4OVx1NWJmYVx1NWMxNlx1NWM3OVx1NWRkZVx1NWUwNlx1NWU3Nlx1NWU3NFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1NWYwZlx1NWYxYlx1NWZkOVx1NWZkNlx1NjIwZVx1NjIwY1x1NjIwZFx1NjIxMFx1NjI2M1x1NjI1Ylx1NjI1OFx1NjUzNlx1NjVlOVx1NjVlOFx1NjVlY1x1NjVlZFx1NjZmMlx1NjZmM1x1NjcwOVx1NjczZFx1NjczNFx1NjczMVx1NjczNVx1NmIyMVx1NmI2NFx1NmI3''@;'; put 'put ''Ylx1NmMxNlx1NmM1ZFx1NmM1N1x1NmM1OVx1NmM1Zlx1NmM2MFx1NmM1MFx1NmM1NVx1NmM2MVx1NmM1Ylx1NmM0ZFx1NmM0ZVx1NzA3MFx1NzI1Zlx1NzI1ZFx1NzY3ZVx1N2FmOVx1N2M3M1x1N2NmOFx1N2YzNlx1N2Y4YVx1N2ZiZFx1ODAwMVx1ODAwM1x1ODAwY1x1ODAxMlx1ODAzM1x1''@;'; put 'put ''ODA3Zlx1ODA4OVx1ODA4Ylx1ODA4Y1x1ODFlM1x1ODFlYVx1ODFmM1x1ODFmY1x1ODIwY1x1ODIxYlx1ODIxZlx1ODI2ZVx1ODI3Mlx1ODI3ZVx1ODY2Ylx1ODg0MFx1ODg0Y1x1ODg2M1x1ODk3Zlx1OTYyMVx1NGUzMlx1NGVhOFx1NGY0ZFx1NGY0Zlx1NGY0N1x1NGY1N1x1NGY1ZVx1NGYz''@;'; put 'put ''NFx1NGY1Ylx1NGY1NVx1NGYzMFx1NGY1MFx1NGY1MVx1NGYzZFx1NGYzYVx1NGYzOFx1NGY0M1x1NGY1NFx1NGYzY1x1NGY0Nlx1NGY2M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjZd''@;'; put 'put ''W3ZdXT00MjQ5Nit2LFRbNDI0OTYrdl09a1sxNjZdW3ZdKTtmb3Ioa1sxNjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmNWNcdTRmNjBcdTRmMmZcdTRmNGVcdTRmMzZcdTRmNTlcdTRmNWRcdTRmNDhcdTRmNWFcdTUxNGNcdTUx''@;'; put 'put ''NGJcdTUxNGRcdTUxNzVcdTUxYjZcdTUxYjdcdTUyMjVcdTUyMjRcdTUyMjlcdTUyMmFcdTUyMjhcdTUyYWJcdTUyYTlcdTUyYWFcdTUyYWNcdTUzMjNcdTUzNzNcdTUzNzVcdTU0MWRcdTU0MmRcdTU0MWVcdTU0M2VcdTU0MjZcdTU0NGVcdTU0MjdcdTU0NDZcdTU0NDNcdTU0MzNcdTU0NDhc''@;'; put 'put ''dTU0NDJcdTU0MWJcdTU0MjlcdTU0NGFcdTU0MzlcdTU0M2JcdTU0MzhcdTU0MmVcdTU0MzVcdTU0MzZcdTU0MjBcdTU0M2NcdTU0NDBcdTU0MzFcdTU0MmJcdTU0MWZcdTU0MmNcdTU2ZWFcdTU2ZjBcdTU2ZTRcdTU2ZWJcdTU3NGFcdTU3NTFcdTU3NDBcdTU3NGRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU3NDdcdTU3NGVcdTU3M2VcdTU3NTBcdTU3NGZcdTU3M2JcdTU4ZWZcdTU5M2VcdTU5OWRcdTU5OTJcdTU5YThcdTU5OWVcdTU5YTNcdTU5OTlcdTU5OTZcdTU5OGRcdTU5YTRcdTU5OTNcdTU5OGFcdTU5YTVcdTViNWRcdTViNWNcdTViNWFcdTVi''@;'; put 'put ''NWJcdTViOGNcdTViOGJcdTViOGZcdTVjMmNcdTVjNDBcdTVjNDFcdTVjM2ZcdTVjM2VcdTVjOTBcdTVjOTFcdTVjOTRcdTVjOGNcdTVkZWJcdTVlMGNcdTVlOGZcdTVlODdcdTVlOGFcdTVlZjdcdTVmMDRcdTVmMWZcdTVmNjRcdTVmNjJcdTVmNzdcdTVmNzlcdTVmZDhcdTVmY2NcdTVmZDdc''@;'; put 'put ''dTVmY2RcdTVmZjFcdTVmZWJcdTVmZjhcdTVmZWFcdTYyMTJcdTYyMTFcdTYyODRcdTYyOTdcdTYyOTZcdTYyODBcdTYyNzZcdTYyODlcdTYyNmRcdTYyOGFcdTYyN2NcdTYyN2VcdTYyNzlcdTYyNzNcdTYyOTJcdTYyNmZcdTYyOThcdTYyNmVcdTYyOTVcdTYyOTNcdTYyOTFcdTYyODZcdTY1''@;'; put 'put ''MzlcdTY1M2JcdTY1MzhcdTY1ZjFcdTY2ZjRcdTY3NWZcdTY3NGVcdTY3NGZcdTY3NTBcdTY3NTFcdTY3NWNcdTY3NTZcdTY3NWVcdTY3NDlcdTY3NDZcdTY3NjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2N11bdl0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKHNlW2tbMTY3XVt2XV09NDI3NTIrdixUWzQyNzUyK3ZdPWtbMTY3XVt2XSk7Zm9yKGtbMTY4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQyXHU2YzVlXHU2Yzk5XHU2YzgxXHU2''@;'; put 'put ''Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2YzdkXHU2YzgzXHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3MDdjXHU3MDdkXHU3MDc4XHU3MjYy''@;'; put 'put ''XHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3OWMxXHU3OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlhXHU4MGIyXHU4MjZmXHU4MjkyXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcwXHU4ZGIzXHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2XHU4ZmM1XHU4ZmM0XHU1ZGUxXHU5''@;'; put 'put ''MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJjXHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0ZTliXHU0ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0ZjczXHU0ZjdmXHU0ZjZjXHU0Zjli''@;'; put 'put ''XHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5XHU1MTc3XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4XHU1MjM3XHU1MjNhXHU1MjMwXHU1''@;'; put 'put ''MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1NDc1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjhdW3Zd''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2OF1bdl1dPTQzMDA4K3YsVFs0MzAwOCt2XT1rWzE2OF1bdl0pO2ZvcihrWzE2OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTQ5Nlx1NTQ3OFx1NTQ5NVx1NTQ4MFx1NTQ3Ylx1NTQ3N1x1''@;'; put 'put ''NTQ4NFx1NTQ5Mlx1NTQ4Nlx1NTQ3Y1x1NTQ5MFx1NTQ3MVx1NTQ3Nlx1NTQ4Y1x1NTQ5YVx1NTQ2Mlx1NTQ2OFx1NTQ4Ylx1NTQ3ZFx1NTQ4ZVx1NTZmYVx1NTc4M1x1NTc3N1x1NTc2YVx1NTc2OVx1NTc2MVx1NTc2Nlx1NTc2NFx1NTc3Y1x1NTkxY1x1NTk0OVx1NTk0N1x1NTk0OFx1NTk0''@;'; put 'put ''NFx1NTk1NFx1NTliZVx1NTliYlx1NTlkNFx1NTliOVx1NTlhZVx1NTlkMVx1NTljNlx1NTlkMFx1NTljZFx1NTljYlx1NTlkM1x1NTljYVx1NTlhZlx1NTliM1x1NTlkMlx1NTljNVx1NWI1Zlx1NWI2NFx1NWI2M1x1NWI5N1x1NWI5YVx1NWI5OFx1NWI5Y1x1NWI5OVx1NWI5Ylx1NWMxYVx1''@;'; put 'put ''NWM0OFx1NWM0NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWM0Nlx1NWNiN1x1NWNhMVx1NWNiOFx1NWNhOVx1NWNhYlx1NWNiMVx1NWNiM1x1NWUxOFx1NWUxYVx1NWUxNlx1NWUxNVx1NWUxYlx1NWUxMVx1NWU3OFx1NWU5YVx1NWU5N1x1NWU5Y1x1NWU5NVx1''@;'; put 'put ''NWU5Nlx1NWVmNlx1NWYyNlx1NWYyN1x1NWYyOVx1NWY4MFx1NWY4MVx1NWY3Zlx1NWY3Y1x1NWZkZFx1NWZlMFx1NWZmZFx1NWZmNVx1NWZmZlx1NjAwZlx1NjAxNFx1NjAyZlx1NjAzNVx1NjAxNlx1NjAyYVx1NjAxNVx1NjAyMVx1NjAyN1x1NjAyOVx1NjAyYlx1NjAxYlx1NjIxNlx1NjIx''@;'; put 'put ''NVx1NjIzZlx1NjIzZVx1NjI0MFx1NjI3Zlx1NjJjOVx1NjJjY1x1NjJjNFx1NjJiZlx1NjJjMlx1NjJiOVx1NjJkMlx1NjJkYlx1NjJhYlx1NjJkM1x1NjJkNFx1NjJjYlx1NjJjOFx1NjJhOFx1NjJiZFx1NjJiY1x1NjJkMFx1NjJkOVx1NjJjN1x1NjJjZFx1NjJiNVx1NjJkYVx1NjJiMVx1''@;'; put 'put ''NjJkOFx1NjJkNlx1NjJkN1x1NjJjNlx1NjJhY1x1NjJjZVx1NjUzZVx1NjVhN1x1NjViY1x1NjVmYVx1NjYxNFx1NjYxM1x1NjYwY1x1NjYwNlx1NjYwMlx1NjYwZVx1NjYwMFx1NjYwZlx1NjYxNVx1NjYwYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2OV0ubGVuZ3RoOysrdik2NTUz''@;'; put 'put ''MyE9PWtbMTY5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjldW3ZdXT00MzI2NCt2LFRbNDMyNjQrdl09a1sxNjldW3ZdKTtmb3Ioa1sxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2MDdcdTY3MGRcdTY3MGJcdTY3NmRc''@;'; put 'put ''dTY3OGJcdTY3OTVcdTY3NzFcdTY3OWNcdTY3NzNcdTY3NzdcdTY3ODdcdTY3OWRcdTY3OTdcdTY3NmZcdTY3NzBcdTY3N2ZcdTY3ODlcdTY3N2VcdTY3OTBcdTY3NzVcdTY3OWFcdTY3OTNcdTY3N2NcdTY3NmFcdTY3NzJcdTZiMjNcdTZiNjZcdTZiNjdcdTZiN2ZcdTZjMTNcdTZjMWJcdTZj''@;'; put 'put ''ZTNcdTZjZThcdTZjZjNcdTZjYjFcdTZjY2NcdTZjZTVcdTZjYjNcdTZjYmRcdTZjYmVcdTZjYmNcdTZjZTJcdTZjYWJcdTZjZDVcdTZjZDNcdTZjYjhcdTZjYzRcdTZjYjlcdTZjYzFcdTZjYWVcdTZjZDdcdTZjYzVcdTZjZjFcdTZjYmZcdTZjYmJcdTZjZTFcdTZjZGJcdTZjY2FcdTZjYWNc''@;'; put 'put ''dTZjZWZcdTZjZGNcdTZjZDZcdTZjZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwOTVcdTcwOGVcdTcwOTJcdTcwOGFcdTcwOTlcdTcyMmNcdTcyMmRcdTcyMzhcdTcyNDhcdTcyNjdcdTcyNjlcdTcyYzBcdTcyY2VcdTcyZDlcdTcyZDdcdTcyZDBcdTczYTlc''@;'; put 'put ''dTczYThcdTczOWZcdTczYWJcdTczYTVcdTc1M2RcdTc1OWRcdTc1OTlcdTc1OWFcdTc2ODRcdTc2YzJcdTc2ZjJcdTc2ZjRcdTc3ZTVcdTc3ZmRcdTc5M2VcdTc5NDBcdTc5NDFcdTc5YzlcdTc5YzhcdTdhN2FcdTdhNzlcdTdhZmFcdTdjZmVcdTdmNTRcdTdmOGNcdTdmOGJcdTgwMDVcdTgw''@;'; put 'put ''YmFcdTgwYTVcdTgwYTJcdTgwYjFcdTgwYTFcdTgwYWJcdTgwYTlcdTgwYjRcdTgwYWFcdTgwYWZcdTgxZTVcdTgxZmVcdTgyMGRcdTgyYjNcdTgyOWRcdTgyOTlcdTgyYWRcdTgyYmRcdTgyOWZcdTgyYjlcdTgyYjFcdTgyYWNcdTgyYTVcdTgyYWZcdTgyYjhcdTgyYTNcdTgyYjBcdTgyYmVc''@;'; put 'put ''dTgyYjdcdTg2NGVcdTg2NzFcdTUyMWRcdTg4NjhcdThlY2JcdThmY2VcdThmZDRcdThmZDFcdTkwYjVcdTkwYjhcdTkwYjFcdTkwYjZcdTkxYzdcdTkxZDFcdTk1NzdcdTk1ODBcdTk2MWNcdTk2NDBcdTk2M2ZcdTk2M2JcdTk2NDRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzBdLmxl''@;'; put 'put ''bmd0aDsrK3YpNjU1MzMhPT1rWzE3MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTcwXVt2XV09NDM1MjArdixUWzQzNTIwK3ZdPWtbMTcwXVt2XSk7Zm9yKGtbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjQyXHU5NmI5''@;'; put 'put ''XHU5NmU4XHU5NzUyXHU5NzVlXHU0ZTlmXHU0ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0ZmRhXHU0ZmNlXHU0ZmRlXHU0''@;'; put 'put ''ZmI3XHU1MTU3XHU1MTkyXHU1MTkxXHU1MWEwXHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNlXHU1NGM5XHU1NGI4XHU1NGE2''@;'; put 'put ''XHU1NGIzXHU1NGM3XHU1NGMyXHU1NGJkXHU1NGFhXHU1NGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1NzhiXHU1N2EwXHU1N2EzXHU1N2Ey''@;'; put 'put ''XHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUwXHU1OWRjXHU1OWQ4XHU1OWZmXHU1OWUzXHU1OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1YmEyXHU1YmE1XHU1YzAxXHU1''@;'; put 'put ''YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1ZTI1XHU1ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEyXHU2MDFkXHU2MDIwXHU2MDI1''@;'; put 'put ''XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQzXHU2MDZjXHU2MDZiXHU2MDZhXHU2MDY0XHU2MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3XHVmZmZkIi5zcGxpdCgiIiksdj0w''@;'; put 'put ''O3YhPWtbMTcxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3MV1bdl1dPTQzNzc2K3YsVFs0Mzc3Nit2XT1rWzE3MV1bdl0pO2ZvcihrWzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NjJlZlx1NjJlY1x1NjJmZVx1NjJmNFx1NjMxMVx1NjMwMlx1NjUzZlx1NjU0NVx1NjVhYlx1NjViZFx1NjVlMlx1NjYyNVx1NjYyZFx1NjYyMFx1NjYyN1x1NjYyZlx1NjYxZlx1NjYyOFx1NjYzMVx1NjYyNFx1NjZmN1x1NjdmZlx1NjdkM1x1NjdmMVx1NjdkNFx1NjdkMFx1NjdlY1x1''@;'; put 'put ''NjdiNlx1NjdhZlx1NjdmNVx1NjdlOVx1NjdlZlx1NjdjNFx1NjdkMVx1NjdiNFx1NjdkYVx1NjdlNVx1NjdiOFx1NjdjZlx1NjdkZVx1NjdmM1x1NjdiMFx1NjdkOVx1NjdlMlx1NjdkZFx1NjdkMlx1NmI2YVx1NmI4M1x1NmI4Nlx1NmJiNVx1NmJkMlx1NmJkN1x1NmMxZlx1NmNjOVx1NmQw''@;'; put 'put ''Ylx1NmQzMlx1NmQyYVx1NmQ0MVx1NmQyNVx1NmQwY1x1NmQzMVx1NmQxZVx1NmQxN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQzYlx1NmQzZFx1NmQzZVx1NmQzNlx1NmQxYlx1NmNmNVx1NmQzOVx1NmQyN1x1NmQzOFx1NmQyOVx1NmQyZVx1NmQzNVx1NmQw''@;'; put 'put ''ZVx1NmQyYlx1NzBhYlx1NzBiYVx1NzBiM1x1NzBhY1x1NzBhZlx1NzBhZFx1NzBiOFx1NzBhZVx1NzBhNFx1NzIzMFx1NzI3Mlx1NzI2Zlx1NzI3NFx1NzJlOVx1NzJlMFx1NzJlMVx1NzNiN1x1NzNjYVx1NzNiYlx1NzNiMlx1NzNjZFx1NzNjMFx1NzNiM1x1NzUxYVx1NzUyZFx1NzU0Zlx1''@;'; put 'put ''NzU0Y1x1NzU0ZVx1NzU0Ylx1NzVhYlx1NzVhNFx1NzVhNVx1NzVhMlx1NzVhM1x1NzY3OFx1NzY4Nlx1NzY4N1x1NzY4OFx1NzZjOFx1NzZjNlx1NzZjM1x1NzZjNVx1NzcwMVx1NzZmOVx1NzZmOFx1NzcwOVx1NzcwYlx1NzZmZVx1NzZmY1x1NzcwN1x1NzdkY1x1NzgwMlx1NzgxNFx1Nzgw''@;'; put 'put ''Y1x1NzgwZFx1Nzk0Nlx1Nzk0OVx1Nzk0OFx1Nzk0N1x1NzliOVx1NzliYVx1NzlkMVx1NzlkMlx1NzljYlx1N2E3Zlx1N2E4MVx1N2FmZlx1N2FmZFx1N2M3ZFx1N2QwMlx1N2QwNVx1N2QwMFx1N2QwOVx1N2QwN1x1N2QwNFx1N2QwNlx1N2YzOFx1N2Y4ZVx1N2ZiZlx1ODAwNFx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLHY9MDt2IT1rWzE3Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTcyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzJdW3ZdXT00NDAzMit2LFRbNDQwMzIrdl09a1sxNzJdW3ZdKTtmb3Ioa1sxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTgwMTBcdTgwMGRcdTgwMTFcdTgwMzZcdTgwZDZcdTgwZTVcdTgwZGFcdTgwYzNcdTgwYzRcdTgwY2NcdTgwZTFcdTgwZGJcdTgwY2VcdTgwZGVcdTgwZTRcdTgwZGRcdTgxZjRcdTgyMjJcdTgyZTdcdTgzMDNcdTgzMDVcdTgyZTNcdTgyZGJcdTgyZTZcdTgzMDRc''@;'; put 'put ''dTgyZTVcdTgzMDJcdTgzMDlcdTgyZDJcdTgyZDdcdTgyZjFcdTgzMDFcdTgyZGNcdTgyZDRcdTgyZDFcdTgyZGVcdTgyZDNcdTgyZGZcdTgyZWZcdTgzMDZcdTg2NTBcdTg2NzlcdTg2N2JcdTg2N2FcdTg4NGRcdTg4NmJcdTg5ODFcdTg5ZDRcdThhMDhcdThhMDJcdThhMDNcdThjOWVcdThj''@;'; put 'put ''YTBcdThkNzRcdThkNzNcdThkYjRcdThlY2RcdThlY2NcdThmZjBcdThmZTZcdThmZTJcdThmZWFcdThmZTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmZWRcdThmZWJcdThmZTRcdThmZThcdTkwY2FcdTkwY2VcdTkwYzFcdTkwYzNcdTkxNGJcdTkxNGFcdTkx''@;'; put 'put ''Y2RcdTk1ODJcdTk2NTBcdTk2NGJcdTk2NGNcdTk2NGRcdTk3NjJcdTk3NjlcdTk3Y2JcdTk3ZWRcdTk3ZjNcdTk4MDFcdTk4YThcdTk4ZGJcdTk4ZGZcdTk5OTZcdTk5OTlcdTRlNThcdTRlYjNcdTUwMGNcdTUwMGRcdTUwMjNcdTRmZWZcdTUwMjZcdTUwMjVcdTRmZjhcdTUwMjlcdTUwMTZc''@;'; put 'put ''dTUwMDZcdTUwM2NcdTUwMWZcdTUwMWFcdTUwMTJcdTUwMTFcdTRmZmFcdTUwMDBcdTUwMTRcdTUwMjhcdTRmZjFcdTUwMjFcdTUwMGJcdTUwMTlcdTUwMThcdTRmZjNcdTRmZWVcdTUwMmRcdTUwMmFcdTRmZmVcdTUwMmJcdTUwMDlcdTUxN2NcdTUxYTRcdTUxYTVcdTUxYTJcdTUxY2RcdTUx''@;'; put 'put ''Y2NcdTUxYzZcdTUxY2JcdTUyNTZcdTUyNWNcdTUyNTRcdTUyNWJcdTUyNWRcdTUzMmFcdTUzN2ZcdTUzOWZcdTUzOWRcdTUzZGZcdTU0ZThcdTU1MTBcdTU1MDFcdTU1MzdcdTU0ZmNcdTU0ZTVcdTU0ZjJcdTU1MDZcdTU0ZmFcdTU1MTRcdTU0ZTlcdTU0ZWRcdTU0ZTFcdTU1MDlcdTU0ZWVc''@;'; put 'put ''dTU0ZWFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTczXVt2XV09NDQyODgrdixUWzQ0Mjg4K3ZdPWtbMTczXVt2XSk7Zm9yKGtbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2MyXHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1YTE4XHU1YTFjXHU1YTFmXHU1YTFiXHU1YTEzXHU1OWVj''@;'; put 'put ''XHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2ZkXHU1Y2ZiXHU1Y2VhXHU1Y2U4XHU1Y2YwXHU1Y2Y2XHU1''@;'; put 'put ''ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5XHU2MDZmXHU2MDg0XHU2''@;'; put 'put ''MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNlXHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2MzRkXHU2MzRjXHU2NTQ4''@;'; put 'put ''XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5XHU2OGIzXHU2ODE3XHU2''@;'; put 'put ''ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQxXHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2ZDg3XHU2ZDY2XHU2ZDc4''@;'; put 'put ''XHU2ZDc3XHU2ZDU5XHU2ZDkzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3NF1bdl1dPTQ0NTQ0K3YsVFs0NDU0NCt2XT1rWzE3NF1bdl0pO2ZvcihrWzE3NV09Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ2Y1x1NmQ4OVx1NmQ2ZVx1NmQ1YVx1NmQ3NFx1NmQ2OVx1NmQ4Y1x1NmQ4YVx1NmQ3OVx1NmQ4NVx1NmQ2NVx1NmQ5NFx1NzBjYVx1NzBkOFx1NzBlNFx1NzBkOVx1NzBjOFx1NzBjZlx1NzIzOVx1NzI3OVx1NzJm''@;'; put 'put ''Y1x1NzJmOVx1NzJmZFx1NzJmOFx1NzJmN1x1NzM4Nlx1NzNlZFx1NzQwOVx1NzNlZVx1NzNlMFx1NzNlYVx1NzNkZVx1NzU1NFx1NzU1ZFx1NzU1Y1x1NzU1YVx1NzU1OVx1NzViZVx1NzVjNVx1NzVjN1x1NzViMlx1NzViM1x1NzViZFx1NzViY1x1NzViOVx1NzVjMlx1NzViOFx1NzY4Ylx1''@;'; put 'put ''NzZiMFx1NzZjYVx1NzZjZFx1NzZjZVx1NzcyOVx1NzcxZlx1NzcyMFx1NzcyOFx1NzdlOVx1NzgzMFx1NzgyN1x1NzgzOFx1NzgxZFx1NzgzNFx1NzgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzgyNVx1NzgyZFx1NzgyMFx1NzgxZlx1NzgzMlx1Nzk1NVx1''@;'; put 'put ''Nzk1MFx1Nzk2MFx1Nzk1Zlx1Nzk1Nlx1Nzk1ZVx1Nzk1ZFx1Nzk1N1x1Nzk1YVx1NzllNFx1NzllM1x1NzllN1x1NzlkZlx1NzllNlx1NzllOVx1NzlkOFx1N2E4NFx1N2E4OFx1N2FkOVx1N2IwNlx1N2IxMVx1N2M4OVx1N2QyMVx1N2QxN1x1N2QwYlx1N2QwYVx1N2QyMFx1N2QyMlx1N2Qx''@;'; put 'put ''NFx1N2QxMFx1N2QxNVx1N2QxYVx1N2QxY1x1N2QwZFx1N2QxOVx1N2QxYlx1N2YzYVx1N2Y1Zlx1N2Y5NFx1N2ZjNVx1N2ZjMVx1ODAwNlx1ODAxOFx1ODAxNVx1ODAxOVx1ODAxN1x1ODAzZFx1ODAzZlx1ODBmMVx1ODEwMlx1ODBmMFx1ODEwNVx1ODBlZFx1ODBmNFx1ODEwNlx1ODBmOFx1''@;'; put 'put ''ODBmM1x1ODEwOFx1ODBmZFx1ODEwYVx1ODBmY1x1ODBlZlx1ODFlZFx1ODFlY1x1ODIwMFx1ODIxMFx1ODIyYVx1ODIyYlx1ODIyOFx1ODIyY1x1ODJiYlx1ODMyYlx1ODM1Mlx1ODM1NFx1ODM0YVx1ODMzOFx1ODM1MFx1ODM0OVx1ODMzNVx1ODMzNFx1ODM0Zlx1ODMzMlx1ODMzOVx1ODMz''@;'; put 'put ''Nlx1ODMxN1x1ODM0MFx1ODMzMVx1ODMyOFx1ODM0M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzVdW3ZdXT00NDgwMCt2LFRbNDQ4MDArdl09a1sxNzVdW3ZdKTtmb3Ioa1sxNzZdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NTRcdTg2OGFcdTg2YWFcdTg2OTNcdTg2YTRcdTg2YTlcdTg2OGNcdTg2YTNcdTg2OWNcdTg4NzBcdTg4NzdcdTg4ODFcdTg4ODJcdTg4N2RcdTg4NzlcdThhMThcdThhMTBcdThhMGVcdThh''@;'; put 'put ''MGNcdThhMTVcdThhMGFcdThhMTdcdThhMTNcdThhMTZcdThhMGZcdThhMTFcdThjNDhcdThjN2FcdThjNzlcdThjYTFcdThjYTJcdThkNzdcdThlYWNcdThlZDJcdThlZDRcdThlY2ZcdThmYjFcdTkwMDFcdTkwMDZcdThmZjdcdTkwMDBcdThmZmFcdThmZjRcdTkwMDNcdThmZmRcdTkwMDVc''@;'; put 'put ''dThmZjhcdTkwOTVcdTkwZTFcdTkwZGRcdTkwZTJcdTkxNTJcdTkxNGRcdTkxNGNcdTkxZDhcdTkxZGRcdTkxZDdcdTkxZGNcdTkxZDlcdTk1ODNcdTk2NjJcdTk2NjNcdTk2NjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NWJcdTk2NWRcdTk2NjRcdTk2NThc''@;'; put 'put ''dTk2NWVcdTk2YmJcdTk4ZTJcdTk5YWNcdTlhYThcdTlhZDhcdTliMjVcdTliMzJcdTliM2NcdTRlN2VcdTUwN2FcdTUwN2RcdTUwNWNcdTUwNDdcdTUwNDNcdTUwNGNcdTUwNWFcdTUwNDlcdTUwNjVcdTUwNzZcdTUwNGVcdTUwNTVcdTUwNzVcdTUwNzRcdTUwNzdcdTUwNGZcdTUwMGZcdTUw''@;'; put 'put ''NmZcdTUwNmRcdTUxNWNcdTUxOTVcdTUxZjBcdTUyNmFcdTUyNmZcdTUyZDJcdTUyZDlcdTUyZDhcdTUyZDVcdTUzMTBcdTUzMGZcdTUzMTlcdTUzM2ZcdTUzNDBcdTUzM2VcdTUzYzNcdTY2ZmNcdTU1NDZcdTU1NmFcdTU1NjZcdTU1NDRcdTU1NWVcdTU1NjFcdTU1NDNcdTU1NGFcdTU1MzFc''@;'; put 'put ''dTU1NTZcdTU1NGZcdTU1NTVcdTU1MmZcdTU1NjRcdTU1MzhcdTU1MmVcdTU1NWNcdTU1MmNcdTU1NjNcdTU1MzNcdTU1NDFcdTU1NTdcdTU3MDhcdTU3MGJcdTU3MDlcdTU3ZGZcdTU4MDVcdTU4MGFcdTU4MDZcdTU3ZTBcdTU3ZTRcdTU3ZmFcdTU4MDJcdTU4MzVcdTU3ZjdcdTU3ZjlcdTU5''@;'; put 'put ''MjBcdTU5NjJcdTVhMzZcdTVhNDFcdTVhNDlcdTVhNjZcdTVhNmFcdTVhNDBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc2XVt2XV09NDUwNTYrdixUWzQ1MDU2K3ZdPWtbMTc2XVt2XSk7''@;'; put 'put ''Zm9yKGtbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTNjXHU1YTYyXHU1YTVhXHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4XHU1YzA3XHU1YzYwXHU1''@;'; put 'put ''YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0XHU1ZDI3XHU1ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1ZjM1XHU1ZjM3XHU1ZjU3''@;'; put 'put ''XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2MDg5XHU2MGEwXHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MGM1XHU2MGJi''@;'; put 'put ''XHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2M2EyXHU2M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5XHU2Mzg5XHU2MzgzXHU2''@;'; put 'put ''MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUxXHU2NTU5XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2NTljXHU2NTliXHU2NWFj''@;'; put 'put ''XHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2OGI1XHU2ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgzXHU2OGM0XHU2OGFkXHU2''@;'; put 'put ''ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3N11bdl1dPTQ1MzEyK3YsVFs0NTMxMit2''@;'; put 'put ''XT1rWzE3N11bdl0pO2ZvcihrWzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJlYlx1NmJlY1x1NmMyYlx1NmQ4ZVx1NmRiY1x1NmRmM1x1NmRkOVx1NmRiMlx1NmRlMVx1NmRjY1x1NmRlNFx1NmRmYlx1NmRmYVx1NmUwNVx1''@;'; put 'put ''NmRjN1x1NmRjYlx1NmRhZlx1NmRkMVx1NmRhZVx1NmRkZVx1NmRmOVx1NmRiOFx1NmRmN1x1NmRmNVx1NmRjNVx1NmRkMlx1NmUxYVx1NmRiNVx1NmRkYVx1NmRlYlx1NmRkOFx1NmRlYVx1NmRmMVx1NmRlZVx1NmRlOFx1NmRjNlx1NmRjNFx1NmRhYVx1NmRlY1x1NmRiZlx1NmRlNlx1NzBm''@;'; put 'put ''OVx1NzEwOVx1NzEwYVx1NzBmZFx1NzBlZlx1NzIzZFx1NzI3ZFx1NzI4MVx1NzMxY1x1NzMxYlx1NzMxNlx1NzMxM1x1NzMxOVx1NzM4N1x1NzQwNVx1NzQwYVx1NzQwM1x1NzQwNlx1NzNmZVx1NzQwZFx1NzRlMFx1NzRmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NzRmN1x1NzUxY1x1NzUyMlx1NzU2NVx1NzU2Nlx1NzU2Mlx1NzU3MFx1NzU4Zlx1NzVkNFx1NzVkNVx1NzViNVx1NzVjYVx1NzVjZFx1NzY4ZVx1NzZkNFx1NzZkMlx1NzZkYlx1NzczN1x1NzczZVx1NzczY1x1NzczNlx1NzczOFx1NzczYVx1Nzg2Ylx1Nzg0M1x1Nzg0ZVx1Nzk2NVx1''@;'; put 'put ''Nzk2OFx1Nzk2ZFx1NzlmYlx1N2E5Mlx1N2E5NVx1N2IyMFx1N2IyOFx1N2IxYlx1N2IyY1x1N2IyNlx1N2IxOVx1N2IxZVx1N2IyZVx1N2M5Mlx1N2M5N1x1N2M5NVx1N2Q0Nlx1N2Q0M1x1N2Q3MVx1N2QyZVx1N2QzOVx1N2QzY1x1N2Q0MFx1N2QzMFx1N2QzM1x1N2Q0NFx1N2QyZlx1N2Q0''@;'; put 'put ''Mlx1N2QzMlx1N2QzMVx1N2YzZFx1N2Y5ZVx1N2Y5YVx1N2ZjY1x1N2ZjZVx1N2ZkMlx1ODAxY1x1ODA0YVx1ODA0Nlx1ODEyZlx1ODExNlx1ODEyM1x1ODEyYlx1ODEyOVx1ODEzMFx1ODEyNFx1ODIwMlx1ODIzNVx1ODIzN1x1ODIzNlx1ODIzOVx1ODM4ZVx1ODM5ZVx1ODM5OFx1ODM3OFx1''@;'; put 'put ''ODNhMlx1ODM5Nlx1ODNiZFx1ODNhYlx1ODM5Mlx1ODM4YVx1ODM5M1x1ODM4OVx1ODNhMFx1ODM3N1x1ODM3Ylx1ODM3Y1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzhdW3ZdXT00NTU2''@;'; put 'put ''OCt2LFRbNDU1Njgrdl09a1sxNzhdW3ZdKTtmb3Ioa1sxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzODZcdTgzYTdcdTg2NTVcdTVmNmFcdTg2YzdcdTg2YzBcdTg2YjZcdTg2YzRcdTg2YjVcdTg2YzZcdTg2Y2JcdTg2YjFc''@;'; put 'put ''dTg2YWZcdTg2YzlcdTg4NTNcdTg4OWVcdTg4ODhcdTg4YWJcdTg4OTJcdTg4OTZcdTg4OGRcdTg4OGJcdTg5OTNcdTg5OGZcdThhMmFcdThhMWRcdThhMjNcdThhMjVcdThhMzFcdThhMmRcdThhMWZcdThhMWJcdThhMjJcdThjNDlcdThjNWFcdThjYTlcdThjYWNcdThjYWJcdThjYThcdThj''@;'; put 'put ''YWFcdThjYTdcdThkNjdcdThkNjZcdThkYmVcdThkYmFcdThlZGJcdThlZGZcdTkwMTlcdTkwMGRcdTkwMWFcdTkwMTdcdTkwMjNcdTkwMWZcdTkwMWRcdTkwMTBcdTkwMTVcdTkwMWVcdTkwMjBcdTkwMGZcdTkwMjJcdTkwMTZcdTkwMWJcdTkwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTkwZThcdTkwZWRcdTkwZmRcdTkxNTdcdTkxY2VcdTkxZjVcdTkxZTZcdTkxZTNcdTkxZTdcdTkxZWRcdTkxZTlcdTk1ODlcdTk2NmFcdTk2NzVcdTk2NzNcdTk2NzhcdTk2NzBcdTk2NzRcdTk2NzZcdTk2NzdcdTk2NmNcdTk2YzBcdTk2ZWFcdTk2ZTlcdTdhZTBc''@;'; put 'put ''dTdhZGZcdTk4MDJcdTk4MDNcdTliNWFcdTljZTVcdTllNzVcdTllN2ZcdTllYTVcdTllYmJcdTUwYTJcdTUwOGRcdTUwODVcdTUwOTlcdTUwOTFcdTUwODBcdTUwOTZcdTUwOThcdTUwOWFcdTY3MDBcdTUxZjFcdTUyNzJcdTUyNzRcdTUyNzVcdTUyNjlcdTUyZGVcdTUyZGRcdTUyZGJcdTUz''@;'; put 'put ''NWFcdTUzYTVcdTU1N2JcdTU1ODBcdTU1YTdcdTU1N2NcdTU1OGFcdTU1OWRcdTU1OThcdTU1ODJcdTU1OWNcdTU1YWFcdTU1OTRcdTU1ODdcdTU1OGJcdTU1ODNcdTU1YjNcdTU1YWVcdTU1OWZcdTU1M2VcdTU1YjJcdTU1OWFcdTU1YmJcdTU1YWNcdTU1YjFcdTU1N2VcdTU1ODlcdTU1YWJc''@;'; put 'put ''dTU1OTlcdTU3MGRcdTU4MmZcdTU4MmFcdTU4MzRcdTU4MjRcdTU4MzBcdTU4MzFcdTU4MjFcdTU4MWRcdTU4MjBcdTU4ZjlcdTU4ZmFcdTU5NjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tb''@;'; put 'put ''MTc5XVt2XV09NDU4MjQrdixUWzQ1ODI0K3ZdPWtbMTc5XVt2XSk7Zm9yKGtbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1YjcxXHU1YmQyXHU1YmNj''@;'; put 'put ''XHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBiXHU1YzMxXHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQxXHU2MGUxXHU2MGIyXHU2''@;'; put 'put ''MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2MGZhXHU2MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2M2NkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2UxXHU2M2Q2XHU2M2VkXHU2M2VlXHU2Mzc2XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2NWFmXHU2NjZlXHU2Njcw''@;'; put 'put ''XHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2NmZmXHU2NzFmXHU2NzFkXHU2OGZhXHU2OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUzXHU2OGNiXHU2OGNkXHU2''@;'; put 'put ''OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNhXHU2YjNkXHU2Yjk4XHU2Yjk2XHU2YmJjXHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2ZTI1XHU2ZTIzXHU2ZTFi''@;'; put 'put ''XHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2ZTM0XHU2ZTRkXHU2ZTNhXHU2ZTJjXHU2ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODBdW3ZdLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihzZVtrWzE4MF1bdl1dPTQ2MDgwK3YsVFs0NjA4MCt2XT1rWzE4MF1bdl0pO2ZvcihrWzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmU4OVx1NmUxOVx1NmU0ZVx1NmU2M1x1NmU0NFx1NmU3Mlx1NmU2OVx1NmU1''@;'; put 'put ''Zlx1NzExOVx1NzExYVx1NzEyNlx1NzEzMFx1NzEyMVx1NzEzNlx1NzE2ZVx1NzExY1x1NzI0Y1x1NzI4NFx1NzI4MFx1NzMzNlx1NzMyNVx1NzMzNFx1NzMyOVx1NzQzYVx1NzQyYVx1NzQzM1x1NzQyMlx1NzQyNVx1NzQzNVx1NzQzNlx1NzQzNFx1NzQyZlx1NzQxYlx1NzQyNlx1NzQyOFx1''@;'; put 'put ''NzUyNVx1NzUyNlx1NzU2Ylx1NzU2YVx1NzVlMlx1NzVkYlx1NzVlM1x1NzVkOVx1NzVkOFx1NzVkZVx1NzVlMFx1NzY3Ylx1NzY3Y1x1NzY5Nlx1NzY5M1x1NzZiNFx1NzZkY1x1Nzc0Zlx1NzdlZFx1Nzg1ZFx1Nzg2Y1x1Nzg2Zlx1N2EwZFx1N2EwOFx1N2EwYlx1N2EwNVx1N2EwMFx1N2E5''@;'; put 'put ''OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E5N1x1N2E5Nlx1N2FlNVx1N2FlM1x1N2I0OVx1N2I1Nlx1N2I0Nlx1N2I1MFx1N2I1Mlx1N2I1NFx1N2I0ZFx1N2I0Ylx1N2I0Zlx1N2I1MVx1N2M5Zlx1N2NhNVx1N2Q1ZVx1N2Q1MFx1N2Q2OFx1N2Q1NVx1N2Qy''@;'; put 'put ''Ylx1N2Q2ZVx1N2Q3Mlx1N2Q2MVx1N2Q2Nlx1N2Q2Mlx1N2Q3MFx1N2Q3M1x1NTU4NFx1N2ZkNFx1N2ZkNVx1ODAwYlx1ODA1Mlx1ODA4NVx1ODE1NVx1ODE1NFx1ODE0Ylx1ODE1MVx1ODE0ZVx1ODEzOVx1ODE0Nlx1ODEzZVx1ODE0Y1x1ODE1M1x1ODE3NFx1ODIxMlx1ODIxY1x1ODNlOVx1''@;'; put 'put ''ODQwM1x1ODNmOFx1ODQwZFx1ODNlMFx1ODNjNVx1ODQwYlx1ODNjMVx1ODNlZlx1ODNmMVx1ODNmNFx1ODQ1N1x1ODQwYVx1ODNmMFx1ODQwY1x1ODNjY1x1ODNmZFx1ODNmMlx1ODNjYVx1ODQzOFx1ODQwZVx1ODQwNFx1ODNkY1x1ODQwN1x1ODNkNFx1ODNkZlx1ODY1Ylx1ODZkZlx1ODZk''@;'; put 'put ''OVx1ODZlZFx1ODZkNFx1ODZkYlx1ODZlNFx1ODZkMFx1ODZkZVx1ODg1N1x1ODhjMVx1ODhjMlx1ODhiMVx1ODk4M1x1ODk5Nlx1OGEzYlx1OGE2MFx1OGE1NVx1OGE1ZVx1OGEzY1x1OGE0MVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTgx''@;'; put 'put ''XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODFdW3ZdXT00NjMzNit2LFRbNDYzMzYrdl09a1sxODFdW3ZdKTtmb3Ioa1sxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhNTRcdThhNWJcdThhNTBcdThhNDZcdThhMzRcdThh''@;'; put 'put ''M2FcdThhMzZcdThhNTZcdThjNjFcdThjODJcdThjYWZcdThjYmNcdThjYjNcdThjYmRcdThjYzFcdThjYmJcdThjYzBcdThjYjRcdThjYjdcdThjYjZcdThjYmZcdThjYjhcdThkOGFcdThkODVcdThkODFcdThkY2VcdThkZGRcdThkY2JcdThkZGFcdThkZDFcdThkY2NcdThkZGJcdThkYzZc''@;'; put 'put ''dThlZmJcdThlZjhcdThlZmNcdThmOWNcdTkwMmVcdTkwMzVcdTkwMzFcdTkwMzhcdTkwMzJcdTkwMzZcdTkxMDJcdTkwZjVcdTkxMDlcdTkwZmVcdTkxNjNcdTkxNjVcdTkxY2ZcdTkyMTRcdTkyMTVcdTkyMjNcdTkyMDlcdTkyMWVcdTkyMGRcdTkyMTBcdTkyMDdcdTkyMTFcdTk1OTRcdTk1''@;'; put 'put ''OGZcdTk1OGJcdTk1OTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1OTNcdTk1OTJcdTk1OGVcdTk2OGFcdTk2OGVcdTk2OGJcdTk2N2RcdTk2ODVcdTk2ODZcdTk2OGRcdTk2NzJcdTk2ODRcdTk2YzFcdTk2YzVcdTk2YzRcdTk2YzZcdTk2YzdcdTk2ZWZcdTk2''@;'; put 'put ''ZjJcdTk3Y2NcdTk4MDVcdTk4MDZcdTk4MDhcdTk4ZTdcdTk4ZWFcdTk4ZWZcdTk4ZTlcdTk4ZjJcdTk4ZWRcdTk5YWVcdTk5YWRcdTllYzNcdTllY2RcdTllZDFcdTRlODJcdTUwYWRcdTUwYjVcdTUwYjJcdTUwYjNcdTUwYzVcdTUwYmVcdTUwYWNcdTUwYjdcdTUwYmJcdTUwYWZcdTUwYzdc''@;'; put 'put ''dTUyN2ZcdTUyNzdcdTUyN2RcdTUyZGZcdTUyZTZcdTUyZTRcdTUyZTJcdTUyZTNcdTUzMmZcdTU1ZGZcdTU1ZThcdTU1ZDNcdTU1ZTZcdTU1Y2VcdTU1ZGNcdTU1YzdcdTU1ZDFcdTU1ZTNcdTU1ZTRcdTU1ZWZcdTU1ZGFcdTU1ZTFcdTU1YzVcdTU1YzZcdTU1ZTVcdTU1YzlcdTU3MTJcdTU3''@;'; put 'put ''MTNcdTU4NWVcdTU4NTFcdTU4NThcdTU4NTdcdTU4NWFcdTU4NTRcdTU4NmJcdTU4NGNcdTU4NmRcdTU4NGFcdTU4NjJcdTU4NTJcdTU4NGJcdTU5NjdcdTVhYzFcdTVhYzlcdTVhY2NcdTVhYmVcdTVhYmRcdTVhYmNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODJdLmxlbmd0aDsrK3Yp''@;'; put 'put ''NjU1MzMhPT1rWzE4Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTgyXVt2XV09NDY1OTIrdixUWzQ2NTkyK3ZdPWtbMTgyXVt2XSk7Zm9yKGtbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWIzXHU1YWMyXHU1YWIyXHU1''@;'; put 'put ''ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRkXHU2MTNlXHU2MTM0XHU2MTI3XHU2MTBkXHU2MTA2''@;'; put 'put ''XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2Njg5XHU2Njg3XHU2Njg4XHU2Njk2XHU2Njg0XHU2''@;'; put 'put ''Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTVhXHU2OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2XHU2OTVkXHU2OTYzXHU2''@;'; put 'put ''OTViXHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkwXHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2ZWQ0XHU2ZWFhXHU2ZWE3''@;'; put 'put ''XHU2ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1XHU3NDVmXHU3NDVlXHU3''@;'; put 'put ''NDQxXHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZhXHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgz''@;'; put 'put ''XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4M11bdl1dPTQ2ODQ4K3YsVFs0Njg0OCt2XT1rWzE4M11bdl0pO2ZvcihrWzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc3OVx1''@;'; put 'put ''Nzc2YVx1Nzc2Y1x1Nzc1Y1x1Nzc2NVx1Nzc2OFx1Nzc2Mlx1NzdlZVx1Nzg4ZVx1NzhiMFx1Nzg5N1x1Nzg5OFx1Nzg4Y1x1Nzg4OVx1Nzg3Y1x1Nzg5MVx1Nzg5M1x1Nzg3Zlx1Nzk3YVx1Nzk3Zlx1Nzk4MVx1ODQyY1x1NzliZFx1N2ExY1x1N2ExYVx1N2EyMFx1N2ExNFx1N2ExZlx1N2Ex''@;'; put 'put ''ZVx1N2E5Zlx1N2FhMFx1N2I3N1x1N2JjMFx1N2I2MFx1N2I2ZVx1N2I2N1x1N2NiMVx1N2NiM1x1N2NiNVx1N2Q5M1x1N2Q3OVx1N2Q5MVx1N2Q4MVx1N2Q4Zlx1N2Q1Ylx1N2Y2ZVx1N2Y2OVx1N2Y2YVx1N2Y3Mlx1N2ZhOVx1N2ZhOFx1N2ZhNFx1ODA1Nlx1ODA1OFx1ODA4Nlx1ODA4NFx1''@;'; put 'put ''ODE3MVx1ODE3MFx1ODE3OFx1ODE2NVx1ODE2ZVx1ODE3M1x1ODE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE3OVx1ODE3YVx1ODE2Nlx1ODIwNVx1ODI0N1x1ODQ4Mlx1ODQ3N1x1ODQzZFx1ODQzMVx1ODQ3NVx1ODQ2Nlx1ODQ2Ylx1ODQ0OVx1ODQ2Y1x1''@;'; put 'put ''ODQ1Ylx1ODQzY1x1ODQzNVx1ODQ2MVx1ODQ2M1x1ODQ2OVx1ODQ2ZFx1ODQ0Nlx1ODY1ZVx1ODY1Y1x1ODY1Zlx1ODZmOVx1ODcxM1x1ODcwOFx1ODcwN1x1ODcwMFx1ODZmZVx1ODZmYlx1ODcwMlx1ODcwM1x1ODcwNlx1ODcwYVx1ODg1OVx1ODhkZlx1ODhkNFx1ODhkOVx1ODhkY1x1ODhk''@;'; put 'put ''OFx1ODhkZFx1ODhlMVx1ODhjYVx1ODhkNVx1ODhkMlx1ODk5Y1x1ODllM1x1OGE2Ylx1OGE3Mlx1OGE3M1x1OGE2Nlx1OGE2OVx1OGE3MFx1OGE4N1x1OGE3Y1x1OGE2M1x1OGFhMFx1OGE3MVx1OGE4NVx1OGE2ZFx1OGE2Mlx1OGE2ZVx1OGE2Y1x1OGE3OVx1OGE3Ylx1OGEzZVx1OGE2OFx1''@;'; put 'put ''OGM2Mlx1OGM4YVx1OGM4OVx1OGNjYVx1OGNjN1x1OGNjOFx1OGNjNFx1OGNiMlx1OGNjM1x1OGNjMlx1OGNjNVx1OGRlMVx1OGRkZlx1OGRlOFx1OGRlZlx1OGRmM1x1OGRmYVx1OGRlYVx1OGRlNFx1OGRlNlx1OGViMlx1OGYwM1x1OGYwOVx1OGVmZVx1OGYwYVx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LHY9MDt2IT1rWzE4NF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODRdW3ZdXT00NzEwNCt2LFRbNDcxMDQrdl09a1sxODRdW3ZdKTtmb3Ioa1sxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdThmOWZcdThmYjJcdTkwNGJcdTkwNGFcdTkwNTNcdTkwNDJcdTkwNTRcdTkwM2NcdTkwNTVcdTkwNTBcdTkwNDdcdTkwNGZcdTkwNGVcdTkwNGRcdTkwNTFcdTkwM2VcdTkwNDFcdTkxMTJcdTkxMTdcdTkxNmNcdTkxNmFcdTkxNjlcdTkxYzlcdTkyMzdcdTkyNTdcdTkyMzhcdTky''@;'; put 'put ''M2RcdTkyNDBcdTkyM2VcdTkyNWJcdTkyNGJcdTkyNjRcdTkyNTFcdTkyMzRcdTkyNDlcdTkyNGRcdTkyNDVcdTkyMzlcdTkyM2ZcdTkyNWFcdTk1OThcdTk2OThcdTk2OTRcdTk2OTVcdTk2Y2RcdTk2Y2JcdTk2YzlcdTk2Y2FcdTk2ZjdcdTk2ZmJcdTk2ZjlcdTk2ZjZcdTk3NTZcdTk3NzRc''@;'; put 'put ''dTk3NzZcdTk4MTBcdTk4MTFcdTk4MTNcdTk4MGFcdTk4MTJcdTk4MGNcdTk4ZmNcdTk4ZjRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4ZmRcdTk4ZmVcdTk5YjNcdTk5YjFcdTk5YjRcdTlhZTFcdTljZTlcdTllODJcdTlmMGVcdTlmMTNcdTlmMjBcdTUwZTdc''@;'; put 'put ''dTUwZWVcdTUwZTVcdTUwZDZcdTUwZWRcdTUwZGFcdTUwZDVcdTUwY2ZcdTUwZDFcdTUwZjFcdTUwY2VcdTUwZTlcdTUxNjJcdTUxZjNcdTUyODNcdTUyODJcdTUzMzFcdTUzYWRcdTU1ZmVcdTU2MDBcdTU2MWJcdTU2MTdcdTU1ZmRcdTU2MTRcdTU2MDZcdTU2MDlcdTU2MGRcdTU2MGVcdTU1''@;'; put 'put ''ZjdcdTU2MTZcdTU2MWZcdTU2MDhcdTU2MTBcdTU1ZjZcdTU3MThcdTU3MTZcdTU4NzVcdTU4N2VcdTU4ODNcdTU4OTNcdTU4OGFcdTU4NzlcdTU4ODVcdTU4N2RcdTU4ZmRcdTU5MjVcdTU5MjJcdTU5MjRcdTU5NmFcdTU5NjlcdTVhZTFcdTVhZTZcdTVhZTlcdTVhZDdcdTVhZDZcdTVhZDhc''@;'; put 'put ''dTVhZTNcdTViNzVcdTViZGVcdTViZTdcdTViZTFcdTViZTVcdTViZTZcdTViZThcdTViZTJcdTViZTRcdTViZGZcdTVjMGRcdTVjNjJcdTVkODRcdTVkODdcdTVlNWJcdTVlNjNcdTVlNTVcdTVlNTdcdTVlNTRcdTVlZDNcdTVlZDZcdTVmMGFcdTVmNDZcdTVmNzBcdTVmYjlcdTYxNDdcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg1XVt2XV09NDczNjArdixUWzQ3MzYwK3ZdPWtbMTg1XVt2XSk7Zm9yKGtbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2MjJhXHU2NDg3XHU2NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdiXHU2NTcyXHU2NWExXHU2''@;'; put 'put ''NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTliXHU2OWI3XHU2OWJiXHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2YjRjXHU2YzMzXHU2ZjMz''@;'; put 'put ''XHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWZmXHU2ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2ZjE1XHU2ZjJiXHU2ZjJm''@;'; put 'put ''XHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUwXHU3NDY0XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkxXHU3NjI3XHU3NjBkXHU3''@;'; put 'put ''NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIzXHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3YTJlXHU3YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3Yjk1XHU3YjhiXHU3Yjc1''@;'; put 'put ''XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0XHU3ZGIyXHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4XHU3ZGFkXHU3ZGQyXHU3''@;'; put 'put ''ZGM3XHU3ZGFjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4Nl1bdl1dPTQ3NjE2K3YsVFs0NzYxNit2XT1rWzE4Nl1bdl0pO2ZvcihrWzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y3MFx1N2ZlMFx1N2ZlMVx1N2ZkZlx1ODA1ZVx1ODA1YVx1ODA4N1x1ODE1MFx1ODE4MFx1ODE4Zlx1ODE4OFx1ODE4YVx1ODE3Zlx1ODE4Mlx1ODFlN1x1ODFmYVx1ODIwN1x1ODIxNFx1ODIxZVx1ODI0Ylx1ODRjOVx1ODRiZlx1''@;'; put 'put ''ODRjNlx1ODRjNFx1ODQ5OVx1ODQ5ZVx1ODRiMlx1ODQ5Y1x1ODRjYlx1ODRiOFx1ODRjMFx1ODRkM1x1ODQ5MFx1ODRiY1x1ODRkMVx1ODRjYVx1ODczZlx1ODcxY1x1ODczYlx1ODcyMlx1ODcyNVx1ODczNFx1ODcxOFx1ODc1NVx1ODczN1x1ODcyOVx1ODhmM1x1ODkwMlx1ODhmNFx1ODhm''@;'; put 'put ''OVx1ODhmOFx1ODhmZFx1ODhlOFx1ODkxYVx1ODhlZlx1OGFhNlx1OGE4Y1x1OGE5ZVx1OGFhM1x1OGE4ZFx1OGFhMVx1OGE5M1x1OGFhNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFhYVx1OGFhNVx1OGFhOFx1OGE5OFx1OGE5MVx1OGE5YVx1OGFhN1x1OGM2''@;'; put 'put ''YVx1OGM4ZFx1OGM4Y1x1OGNkM1x1OGNkMVx1OGNkMlx1OGQ2Ylx1OGQ5OVx1OGQ5NVx1OGRmY1x1OGYxNFx1OGYxMlx1OGYxNVx1OGYxM1x1OGZhM1x1OTA2MFx1OTA1OFx1OTA1Y1x1OTA2M1x1OTA1OVx1OTA1ZVx1OTA2Mlx1OTA1ZFx1OTA1Ylx1OTExOVx1OTExOFx1OTExZVx1OTE3NVx1''@;'; put 'put ''OTE3OFx1OTE3N1x1OTE3NFx1OTI3OFx1OTI4MFx1OTI4NVx1OTI5OFx1OTI5Nlx1OTI3Ylx1OTI5M1x1OTI5Y1x1OTJhOFx1OTI3Y1x1OTI5MVx1OTVhMVx1OTVhOFx1OTVhOVx1OTVhM1x1OTVhNVx1OTVhNFx1OTY5OVx1OTY5Y1x1OTY5Ylx1OTZjY1x1OTZkMlx1OTcwMFx1OTc3Y1x1OTc4''@;'; put 'put ''NVx1OTdmNlx1OTgxN1x1OTgxOFx1OThhZlx1OThiMVx1OTkwM1x1OTkwNVx1OTkwY1x1OTkwOVx1OTljMVx1OWFhZlx1OWFiMFx1OWFlNlx1OWI0MVx1OWI0Mlx1OWNmNFx1OWNmNlx1OWNmM1x1OWViY1x1OWYzYlx1OWY0YVx1NTEwNFx1NTEwMFx1NTBmYlx1NTBmNVx1NTBmOVx1NTEwMlx1''@;'; put 'put ''NTEwOFx1NTEwOVx1NTEwNVx1NTFkY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODddW3ZdXT00Nzg3Mit2LFRbNDc4NzIrdl09a1sxODddW3ZdKTtmb3Ioa1sxODhdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUyODdcdTUyODhcdTUyODlcdTUyOGRcdTUyOGFcdTUyZjBcdTUzYjJcdTU2MmVcdTU2M2JcdTU2MzlcdTU2MzJcdTU2M2ZcdTU2MzRcdTU2MjlcdTU2NTNcdTU2NGVcdTU2NTdcdTU2NzRcdTU2MzZcdTU2MmZc''@;'; put 'put ''dTU2MzBcdTU4ODBcdTU4OWZcdTU4OWVcdTU4YjNcdTU4OWNcdTU4YWVcdTU4YTlcdTU4YTZcdTU5NmRcdTViMDlcdTVhZmJcdTViMGJcdTVhZjVcdTViMGNcdTViMDhcdTViZWVcdTViZWNcdTViZTlcdTViZWJcdTVjNjRcdTVjNjVcdTVkOWRcdTVkOTRcdTVlNjJcdTVlNWZcdTVlNjFcdTVl''@;'; put 'put ''ZTJcdTVlZGFcdTVlZGZcdTVlZGRcdTVlZTNcdTVlZTBcdTVmNDhcdTVmNzFcdTVmYjdcdTVmYjVcdTYxNzZcdTYxNjdcdTYxNmVcdTYxNWRcdTYxNTVcdTYxODJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxN2NcdTYxNzBcdTYxNmJcdTYxN2VcdTYxYTdcdTYx''@;'; put 'put ''OTBcdTYxYWJcdTYxOGVcdTYxYWNcdTYxOWFcdTYxYTRcdTYxOTRcdTYxYWVcdTYyMmVcdTY0NjlcdTY0NmZcdTY0NzlcdTY0OWVcdTY0YjJcdTY0ODhcdTY0OTBcdTY0YjBcdTY0YTVcdTY0OTNcdTY0OTVcdTY0YTlcdTY0OTJcdTY0YWVcdTY0YWRcdTY0YWJcdTY0OWFcdTY0YWNcdTY0OTlc''@;'; put 'put ''dTY0YTJcdTY0YjNcdTY1NzVcdTY1NzdcdTY1NzhcdTY2YWVcdTY2YWJcdTY2YjRcdTY2YjFcdTZhMjNcdTZhMWZcdTY5ZThcdTZhMDFcdTZhMWVcdTZhMTlcdTY5ZmRcdTZhMjFcdTZhMTNcdTZhMGFcdTY5ZjNcdTZhMDJcdTZhMDVcdTY5ZWRcdTZhMTFcdTZiNTBcdTZiNGVcdTZiYTRcdTZi''@;'; put 'put ''YzVcdTZiYzZcdTZmM2ZcdTZmN2NcdTZmODRcdTZmNTFcdTZmNjZcdTZmNTRcdTZmODZcdTZmNmRcdTZmNWJcdTZmNzhcdTZmNmVcdTZmOGVcdTZmN2FcdTZmNzBcdTZmNjRcdTZmOTdcdTZmNThcdTZlZDVcdTZmNmZcdTZmNjBcdTZmNWZcdTcxOWZcdTcxYWNcdTcxYjFcdTcxYThcdTcyNTZc''@;'; put 'put ''dTcyOWJcdTczNGVcdTczNTdcdTc0NjlcdTc0OGJcdTc0ODNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg4XVt2XV09NDgxMjgrdixUWzQ4MTI4K3ZdPWtbMTg4XVt2XSk7Zm9yKGtbMTg5''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdlXHU3NDgwXHU3NTdmXHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3NzhjXHU3NzkxXHU3Nzhi''@;'; put 'put ''XHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3OGJlXHU3OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNjXHU3Y2NhXHU3ZGUwXHU3''@;'; put 'put ''ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVjXHU3ZGRkXHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU5XHU4MDI2XHU4MTliXHU4''@;'; put 'put ''MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4NTJjXHU4NTJkXHU4NTEzXHU4NTExXHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4Nzc4XHU4NzY4XHU4NzU5''@;'; put 'put ''XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEzXHU4OTE1XHU4OTBhXHU4YWJjXHU4YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNkXHU4YWI2XHU4YWI5XHU4''@;'; put 'put ''YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4Y2VkXHU4Y2UyXHU4Y2UzXHU4Y2RjXHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4ZTIxXHU4ZTFlXHU4ZWJh''@;'; put 'put ''XHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4OV1bdl1dPTQ4Mzg0K3YsVFs0ODM4NCt2XT1rWzE4OV1b''@;'; put 'put ''dl0pO2ZvcihrWzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGYyNVx1OTA2OVx1OTA2ZVx1OTA2OFx1OTA2ZFx1OTA3N1x1OTEzMFx1OTEyZFx1OTEyN1x1OTEzMVx1OTE4N1x1OTE4OVx1OTE4Ylx1OTE4M1x1OTJjNVx1OTJi''@;'; put 'put ''Ylx1OTJiN1x1OTJlYVx1OTJhY1x1OTJlNFx1OTJjMVx1OTJiM1x1OTJiY1x1OTJkMlx1OTJjN1x1OTJmMFx1OTJiMlx1OTVhZFx1OTViMVx1OTcwNFx1OTcwNlx1OTcwN1x1OTcwOVx1OTc2MFx1OTc4ZFx1OTc4Ylx1OTc4Zlx1OTgyMVx1OTgyYlx1OTgxY1x1OThiM1x1OTkwYVx1OTkxM1x1''@;'; put 'put ''OTkxMlx1OTkxOFx1OTlkZFx1OTlkMFx1OTlkZlx1OTlkYlx1OTlkMVx1OTlkNVx1OTlkMlx1OTlkOVx1OWFiN1x1OWFlZVx1OWFlZlx1OWIyN1x1OWI0NVx1OWI0NFx1OWI3N1x1OWI2Zlx1OWQwNlx1OWQwOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQwM1x1''@;'; put 'put ''OWVhOVx1OWViZVx1OWVjZVx1NThhOFx1OWY1Mlx1NTExMlx1NTExOFx1NTExNFx1NTExMFx1NTExNVx1NTE4MFx1NTFhYVx1NTFkZFx1NTI5MVx1NTI5M1x1NTJmM1x1NTY1OVx1NTY2Ylx1NTY3OVx1NTY2OVx1NTY2NFx1NTY3OFx1NTY2YVx1NTY2OFx1NTY2NVx1NTY3MVx1NTY2Zlx1NTY2''@;'; put 'put ''Y1x1NTY2Mlx1NTY3Nlx1NThjMVx1NThiZVx1NThjN1x1NThjNVx1NTk2ZVx1NWIxZFx1NWIzNFx1NWI3OFx1NWJmMFx1NWMwZVx1NWY0YVx1NjFiMlx1NjE5MVx1NjFhOVx1NjE4YVx1NjFjZFx1NjFiNlx1NjFiZVx1NjFjYVx1NjFjOFx1NjIzMFx1NjRjNVx1NjRjMVx1NjRjYlx1NjRiYlx1''@;'; put 'put ''NjRiY1x1NjRkYVx1NjRjNFx1NjRjN1x1NjRjMlx1NjRjZFx1NjRiZlx1NjRkMlx1NjRkNFx1NjRiZVx1NjU3NFx1NjZjNlx1NjZjOVx1NjZiOVx1NjZjNFx1NjZjN1x1NjZiOFx1NmEzZFx1NmEzOFx1NmEzYVx1NmE1OVx1NmE2Ylx1NmE1OFx1NmEzOVx1NmE0NFx1NmE2Mlx1NmE2MVx1NmE0''@;'; put 'put ''Ylx1NmE0N1x1NmEzNVx1NmE1Zlx1NmE0OFx1NmI1OVx1NmI3N1x1NmMwNVx1NmZjMlx1NmZiMVx1NmZhMVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTBdW3ZdXT00ODY0MCt2LFRbNDg2''@;'; put 'put ''NDArdl09a1sxOTBdW3ZdKTtmb3Ioa1sxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmYzNcdTZmYTRcdTZmYzFcdTZmYTdcdTZmYjNcdTZmYzBcdTZmYjlcdTZmYjZcdTZmYTZcdTZmYTBcdTZmYjRcdTcxYmVcdTcxYzlcdTcx''@;'; put 'put ''ZDBcdTcxZDJcdTcxYzhcdTcxZDVcdTcxYjlcdTcxY2VcdTcxZDlcdTcxZGNcdTcxYzNcdTcxYzRcdTczNjhcdTc0OWNcdTc0YTNcdTc0OThcdTc0OWZcdTc0OWVcdTc0ZTJcdTc1MGNcdTc1MGRcdTc2MzRcdTc2MzhcdTc2M2FcdTc2ZTdcdTc2ZTVcdTc3YTBcdTc3OWVcdTc3OWZcdTc3YTVc''@;'; put 'put ''dTc4ZThcdTc4ZGFcdTc4ZWNcdTc4ZTdcdTc5YTZcdTdhNGRcdTdhNGVcdTdhNDZcdTdhNGNcdTdhNGJcdTdhYmFcdTdiZDlcdTdjMTFcdTdiYzlcdTdiZTRcdTdiZGJcdTdiZTFcdTdiZTlcdTdiZTZcdTdjZDVcdTdjZDZcdTdlMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTdlMTFcdTdlMDhcdTdlMWJcdTdlMjNcdTdlMWVcdTdlMWRcdTdlMDlcdTdlMTBcdTdmNzlcdTdmYjJcdTdmZjBcdTdmZjFcdTdmZWVcdTgwMjhcdTgxYjNcdTgxYTlcdTgxYThcdTgxZmJcdTgyMDhcdTgyNThcdTgyNTlcdTg1NGFcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjlcdTg1''@;'; put 'put ''NDNcdTg1NDlcdTg1NmRcdTg1NmFcdTg1NWVcdTg3ODNcdTg3OWZcdTg3OWVcdTg3YTJcdTg3OGRcdTg4NjFcdTg5MmFcdTg5MzJcdTg5MjVcdTg5MmJcdTg5MjFcdTg5YWFcdTg5YTZcdThhZTZcdThhZmFcdThhZWJcdThhZjFcdThiMDBcdThhZGNcdThhZTdcdThhZWVcdThhZmVcdThiMDFc''@;'; put 'put ''dThiMDJcdThhZjdcdThhZWRcdThhZjNcdThhZjZcdThhZmNcdThjNmJcdThjNmRcdThjOTNcdThjZjRcdThlNDRcdThlMzFcdThlMzRcdThlNDJcdThlMzlcdThlMzVcdThmM2JcdThmMmZcdThmMzhcdThmMzNcdThmYThcdThmYTZcdTkwNzVcdTkwNzRcdTkwNzhcdTkwNzJcdTkwN2NcdTkw''@;'; put 'put ''N2FcdTkxMzRcdTkxOTJcdTkzMjBcdTkzMzZcdTkyZjhcdTkzMzNcdTkzMmZcdTkzMjJcdTkyZmNcdTkzMmJcdTkzMDRcdTkzMWFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTkxXVt2XV09''@;'; put 'put ''NDg4OTYrdixUWzQ4ODk2K3ZdPWtbMTkxXVt2XSk7Zm9yKGtbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJiXHU5NmE3XHU5NmE4XHU5NmFhXHU5NmQ1XHU5''@;'; put 'put ''NzBlXHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNiXHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5OWVkXHU5OWUyXHU5OWYxXHU5YWI4XHU5YWJj''@;'; put 'put ''XHU5YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1XHU1Njg3XHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2XHU2MWNiXHU2MjMyXHU2''@;'; put 'put ''MjM0XHU2NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgzXHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2YWEwXHU2YjVjXHU2YmFl''@;'; put 'put ''XHU2YmRhXHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0XHU3MWUwXHU3MjM1XHU3''@;'; put 'put ''MjQ2XHU3MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2FhXHU3N2IwXHU3N2FjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTkyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTJdW3ZdLmNoYXJDb2RlQXQoMCkmJihz''@;'; put 'put ''ZVtrWzE5Ml1bdl1dPTQ5MTUyK3YsVFs0OTE1Mit2XT1rWzE5Ml1bdl0pO2ZvcihrWzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdhN1x1NzdhZFx1NzdlZlx1NzhmN1x1NzhmYVx1NzhmNFx1NzhlZlx1NzkwMVx1NzlhN1x1''@;'; put 'put ''NzlhYVx1N2E1N1x1N2FiZlx1N2MwN1x1N2MwZFx1N2JmZVx1N2JmN1x1N2MwY1x1N2JlMFx1N2NlMFx1N2NkY1x1N2NkZVx1N2NlMlx1N2NkZlx1N2NkOVx1N2NkZFx1N2UyZVx1N2UzZVx1N2U0Nlx1N2UzN1x1N2UzMlx1N2U0M1x1N2UyYlx1N2UzZFx1N2UzMVx1N2U0NVx1N2U0MVx1N2Uz''@;'; put 'put ''NFx1N2UzOVx1N2U0OFx1N2UzNVx1N2UzZlx1N2UyZlx1N2Y0NFx1N2ZmM1x1N2ZmY1x1ODA3MVx1ODA3Mlx1ODA3MFx1ODA2Zlx1ODA3M1x1ODFjNlx1ODFjM1x1ODFiYVx1ODFjMlx1ODFjMFx1ODFiZlx1ODFiZFx1ODFjOVx1ODFiZVx1ODFlOFx1ODIwOVx1ODI3MVx1ODVhYVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU4NFx1ODU3ZVx1ODU5Y1x1ODU5MVx1ODU5NFx1ODVhZlx1ODU5Ylx1ODU4N1x1ODVhOFx1ODU4YVx1ODY2N1x1ODdjMFx1ODdkMVx1ODdiM1x1ODdkMlx1ODdjNlx1ODdhYlx1ODdiYlx1ODdiYVx1ODdjOFx1ODdjYlx1ODkzYlx1''@;'; put 'put ''ODkzNlx1ODk0NFx1ODkzOFx1ODkzZFx1ODlhY1x1OGIwZVx1OGIxN1x1OGIxOVx1OGIxYlx1OGIwYVx1OGIyMFx1OGIxZFx1OGIwNFx1OGIxMFx1OGM0MVx1OGMzZlx1OGM3M1x1OGNmYVx1OGNmZFx1OGNmY1x1OGNmOFx1OGNmYlx1OGRhOFx1OGU0OVx1OGU0Ylx1OGU0OFx1OGU0YVx1OGY0''@;'; put 'put ''NFx1OGYzZVx1OGY0Mlx1OGY0NVx1OGYzZlx1OTA3Zlx1OTA3ZFx1OTA4NFx1OTA4MVx1OTA4Mlx1OTA4MFx1OTEzOVx1OTFhM1x1OTE5ZVx1OTE5Y1x1OTM0ZFx1OTM4Mlx1OTMyOFx1OTM3NVx1OTM0YVx1OTM2NVx1OTM0Ylx1OTMxOFx1OTM3ZVx1OTM2Y1x1OTM1Ylx1OTM3MFx1OTM1YVx1''@;'; put 'put ''OTM1NFx1OTVjYVx1OTVjYlx1OTVjY1x1OTVjOFx1OTVjNlx1OTZiMVx1OTZiOFx1OTZkNlx1OTcxY1x1OTcxZVx1OTdhMFx1OTdkM1x1OTg0Nlx1OThiNlx1OTkzNVx1OWEwMVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkzXVt2XS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYoc2Vba1sxOTNdW3ZdXT00OTQwOCt2LFRbNDk0MDgrdl09a1sxOTNdW3ZdKTtmb3Ioa1sxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ZmZcdTliYWVcdTliYWJcdTliYWFcdTliYWRcdTlkM2JcdTlkM2Zc''@;'; put 'put ''dTllOGJcdTllY2ZcdTllZGVcdTllZGNcdTllZGRcdTllZGJcdTlmM2VcdTlmNGJcdTUzZTJcdTU2OTVcdTU2YWVcdTU4ZDlcdTU4ZDhcdTViMzhcdTVmNWRcdTYxZTNcdTYyMzNcdTY0ZjRcdTY0ZjJcdTY0ZmVcdTY1MDZcdTY0ZmFcdTY0ZmJcdTY0ZjdcdTY1YjdcdTY2ZGNcdTY3MjZcdTZh''@;'; put 'put ''YjNcdTZhYWNcdTZhYzNcdTZhYmJcdTZhYjhcdTZhYzJcdTZhYWVcdTZhYWZcdTZiNWZcdTZiNzhcdTZiYWZcdTcwMDlcdTcwMGJcdTZmZmVcdTcwMDZcdTZmZmFcdTcwMTFcdTcwMGZcdTcxZmJcdTcxZmNcdTcxZmVcdTcxZjhcdTczNzdcdTczNzVcdTc0YTdcdTc0YmZcdTc1MTVcdTc2NTZc''@;'; put 'put ''dTc2NThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2NTJcdTc3YmRcdTc3YmZcdTc3YmJcdTc3YmNcdTc5MGVcdTc5YWVcdTdhNjFcdTdhNjJcdTdhNjBcdTdhYzRcdTdhYzVcdTdjMmJcdTdjMjdcdTdjMmFcdTdjMWVcdTdjMjNcdTdjMjFcdTdjZTdcdTdlNTRc''@;'; put 'put ''dTdlNTVcdTdlNWVcdTdlNWFcdTdlNjFcdTdlNTJcdTdlNTlcdTdmNDhcdTdmZjlcdTdmZmJcdTgwNzdcdTgwNzZcdTgxY2RcdTgxY2ZcdTgyMGFcdTg1Y2ZcdTg1YTlcdTg1Y2RcdTg1ZDBcdTg1YzlcdTg1YjBcdTg1YmFcdTg1YjlcdTg1YTZcdTg3ZWZcdTg3ZWNcdTg3ZjJcdTg3ZTBcdTg5''@;'; put 'put ''ODZcdTg5YjJcdTg5ZjRcdThiMjhcdThiMzlcdThiMmNcdThiMmJcdThjNTBcdThkMDVcdThlNTlcdThlNjNcdThlNjZcdThlNjRcdThlNWZcdThlNTVcdThlYzBcdThmNDlcdThmNGRcdTkwODdcdTkwODNcdTkwODhcdTkxYWJcdTkxYWNcdTkxZDBcdTkzOTRcdTkzOGFcdTkzOTZcdTkzYTJc''@;'; put 'put ''dTkzYjNcdTkzYWVcdTkzYWNcdTkzYjBcdTkzOThcdTkzOWFcdTkzOTdcdTk1ZDRcdTk1ZDZcdTk1ZDBcdTk1ZDVcdTk2ZTJcdTk2ZGNcdTk2ZDlcdTk2ZGJcdTk2ZGVcdTk3MjRcdTk3YTNcdTk3YTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTRdLmxlbmd0aDsrK3YpNjU1MzMhPT1r''@;'; put 'put ''WzE5NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk0XVt2XV09NDk2NjQrdixUWzQ5NjY0K3ZdPWtbMTk0XVt2XSk7Zm9yKGtbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2FkXHU5N2Y5XHU5ODRkXHU5ODRmXHU5ODRj''@;'; put 'put ''XHU5ODRlXHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5YjRmXHU5YjRlXHU5YjRkXHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1XHU5ZjJjXHU1MTMzXHU1''@;'; put 'put ''NmE1XHU1OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBmXHU2NmUwXHU2NmRkXHU2YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3MDE4XHU3MjA2XHU3MjBk''@;'; put 'put ''XHU3MjU4XHU3MmEyXHU3Mzc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzdhXHU3NGJkXHU3NGNhXHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3XHU3OTE5XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3YzM4XHU3YzNkXHU3YzM3''@;'; put 'put ''XHU3YzQwXHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4NWY3XHU4N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYwXHU4OTVmXHU4OTU2XHU4''@;'; put 'put ''OTVlXHU4YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdjXHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0XHU4ZjU0XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5MWFlXHU5M2UxXHU5M2Qx''@;'; put 'put ''XHU5M2RmXHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5N2RjXHU5N2ZiXHU5ODVlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk1XS5sZW5ndGg7''@;'; put 'put ''Kyt2KTY1NTMzIT09a1sxOTVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5NV1bdl1dPTQ5OTIwK3YsVFs0OTkyMCt2XT1rWzE5NV1bdl0pO2ZvcihrWzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg1OFx1OTg1Ylx1OThi''@;'; put 'put ''Y1x1OTk0NVx1OTk0OVx1OWExNlx1OWExOVx1OWIwZFx1OWJlOFx1OWJlN1x1OWJkNlx1OWJkYlx1OWQ4OVx1OWQ2MVx1OWQ3Mlx1OWQ2YVx1OWQ2Y1x1OWU5Mlx1OWU5N1x1OWU5M1x1OWViNFx1NTJmOFx1NTZhOFx1NTZiN1x1NTZiNlx1NTZiNFx1NTZiY1x1NThlNFx1NWI0MFx1NWI0M1x1''@;'; put 'put ''NWI3ZFx1NWJmNlx1NWRjOVx1NjFmOFx1NjFmYVx1NjUxOFx1NjUxNFx1NjUxOVx1NjZlNlx1NjcyN1x1NmFlY1x1NzAzZVx1NzAzMFx1NzAzMlx1NzIxMFx1NzM3Ylx1NzRjZlx1NzY2Mlx1NzY2NVx1NzkyNlx1NzkyYVx1NzkyY1x1NzkyYlx1N2FjN1x1N2FmNlx1N2M0Y1x1N2M0M1x1N2M0''@;'; put 'put ''ZFx1N2NlZlx1N2NmMFx1OGZhZVx1N2U3ZFx1N2U3Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U4Mlx1N2Y0Y1x1ODAwMFx1ODFkYVx1ODI2Nlx1ODVmYlx1ODVmOVx1ODYxMVx1ODVmYVx1ODYwNlx1ODYwYlx1ODYwN1x1ODYwYVx1ODgxNFx1ODgxNVx1ODk2''@;'; put 'put ''NFx1ODliYVx1ODlmOFx1OGI3MFx1OGI2Y1x1OGI2Nlx1OGI2Zlx1OGI1Zlx1OGI2Ylx1OGQwZlx1OGQwZFx1OGU4OVx1OGU4MVx1OGU4NVx1OGU4Mlx1OTFiNFx1OTFjYlx1OTQxOFx1OTQwM1x1OTNmZFx1OTVlMVx1OTczMFx1OThjNFx1OTk1Mlx1OTk1MVx1OTlhOFx1OWEyYlx1OWEzMFx1''@;'; put 'put ''OWEzN1x1OWEzNVx1OWMxM1x1OWMwZFx1OWU3OVx1OWViNVx1OWVlOFx1OWYyZlx1OWY1Zlx1OWY2M1x1OWY2MVx1NTEzN1x1NTEzOFx1NTZjMVx1NTZjMFx1NTZjMlx1NTkxNFx1NWM2Y1x1NWRjZFx1NjFmY1x1NjFmZVx1NjUxZFx1NjUxY1x1NjU5NVx1NjZlOVx1NmFmYlx1NmIwNFx1NmFm''@;'; put 'put ''YVx1NmJiMlx1NzA0Y1x1NzIxYlx1NzJhN1x1NzRkNlx1NzRkNFx1NzY2OVx1NzdkM1x1N2M1MFx1N2U4Zlx1N2U4Y1x1N2ZiY1x1ODYxN1x1ODYyZFx1ODYxYVx1ODgyM1x1ODgyMlx1ODgyMVx1ODgxZlx1ODk2YVx1ODk2Y1x1ODliZFx1OGI3NFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1r''@;'; put 'put ''WzE5Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTk2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTZdW3ZdXT01MDE3Nit2LFRbNTAxNzYrdl09a1sxOTZdW3ZdKTtmb3Ioa1sxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThi''@;'; put 'put ''NzdcdThiN2RcdThkMTNcdThlOGFcdThlOGRcdThlOGJcdThmNWZcdThmYWZcdTkxYmFcdTk0MmVcdTk0MzNcdTk0MzVcdTk0M2FcdTk0MzhcdTk0MzJcdTk0MmJcdTk1ZTJcdTk3MzhcdTk3MzlcdTk3MzJcdTk3ZmZcdTk4NjdcdTk4NjVcdTk5NTdcdTlhNDVcdTlhNDNcdTlhNDBcdTlhM2Vc''@;'; put 'put ''dTlhY2ZcdTliNTRcdTliNTFcdTljMmRcdTljMjVcdTlkYWZcdTlkYjRcdTlkYzJcdTlkYjhcdTllOWRcdTllZWZcdTlmMTlcdTlmNWNcdTlmNjZcdTlmNjdcdTUxM2NcdTUxM2JcdTU2YzhcdTU2Y2FcdTU2YzlcdTViN2ZcdTVkZDRcdTVkZDJcdTVmNGVcdTYxZmZcdTY1MjRcdTZiMGFcdTZi''@;'; put 'put ''NjFcdTcwNTFcdTcwNThcdTczODBcdTc0ZTRcdTc1OGFcdTc2NmVcdTc2NmNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5YjNcdTdjNjBcdTdjNWZcdTgwN2VcdTgwN2RcdTgxZGZcdTg5NzJcdTg5NmZcdTg5ZmNcdThiODBcdThkMTZcdThkMTdcdThlOTFcdThl''@;'; put 'put ''OTNcdThmNjFcdTkxNDhcdTk0NDRcdTk0NTFcdTk0NTJcdTk3M2RcdTk3M2VcdTk3YzNcdTk3YzFcdTk4NmJcdTk5NTVcdTlhNTVcdTlhNGRcdTlhZDJcdTliMWFcdTljNDlcdTljMzFcdTljM2VcdTljM2JcdTlkZDNcdTlkZDdcdTlmMzRcdTlmNmNcdTlmNmFcdTlmOTRcdTU2Y2NcdTVkZDZc''@;'; put 'put ''dTYyMDBcdTY1MjNcdTY1MmJcdTY1MmFcdTY2ZWNcdTZiMTBcdTc0ZGFcdTdhY2FcdTdjNjRcdTdjNjNcdTdjNjVcdTdlOTNcdTdlOTZcdTdlOTRcdTgxZTJcdTg2MzhcdTg2M2ZcdTg4MzFcdThiOGFcdTkwOTBcdTkwOGZcdTk0NjNcdTk0NjBcdTk0NjRcdTk3NjhcdTk4NmZcdTk5NWNcdTlh''@;'; put 'put ''NWFcdTlhNWJcdTlhNTdcdTlhZDNcdTlhZDRcdTlhZDFcdTljNTRcdTljNTdcdTljNTZcdTlkZTVcdTllOWZcdTllZjRcdTU2ZDFcdTU4ZTlcdTY1MmNcdTcwNWVcdTc2NzFcdTc2NzJcdTc3ZDdcdTdmNTBcdTdmODhcdTg4MzZcdTg4MzlcdTg4NjJcdThiOTNcdThiOTJcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1sxOTddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk3XVt2XV09NTA0MzIrdixUWzUwNDMyK3ZdPWtbMTk3XVt2XSk7Zm9yKGtbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5MWMwXHU5NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVmXHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3MDYzXHU3YzZjXHU3YzZl''@;'; put 'put ''XHU4ODNiXHU4OWMwXHU4ZWExXHU5MWMxXHU5NDcyXHU5NDcwXHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdjXHU5Yzc3XHU5Yzc4XHU5''@;'; put 'put ''ZWY3XHU4YzU0XHU5NDdmXHU5ZTFhXHU3MjI4XHU5YTZhXHU5YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOThdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5OF1bdl1dPTUwNjg4K3YsVFs1MDY4OCt2XT1rWzE5OF1bdl0pO2ZvcihrWzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU0Mlx1NGU1Y1x1NTFmNVx1NTMxYVx1NTM4Mlx1NGUwN1x1NGUwY1x1NGU0N1x1NGU4ZFx1NTZkN1x1ZmEwY1x1NWM2ZVx1NWY3M1x1NGUwZlx1NTE4N1x1NGUwZVx1NGUyZVx1NGU5M1x1NGVjMlx1NGVjOVx1NGVjOFx1NTE5OFx1NTJmY1x1NTM2''@;'; put 'put ''Y1x1NTNiOVx1NTcyMFx1NTkwM1x1NTkyY1x1NWMxMFx1NWRmZlx1NjVlMVx1NmJiM1x1NmJjY1x1NmMxNFx1NzIzZlx1NGUzMVx1NGUzY1x1NGVlOFx1NGVkY1x1NGVlOVx1NGVlMVx1NGVkZFx1NGVkYVx1NTIwY1x1NTMxY1x1NTM0Y1x1NTcyMlx1NTcyM1x1NTkxN1x1NTkyZlx1NWI4MVx1''@;'; put 'put ''NWI4NFx1NWMxMlx1NWMzYlx1NWM3NFx1NWM3M1x1NWUwNFx1NWU4MFx1NWU4Mlx1NWZjOVx1NjIwOVx1NjI1MFx1NmMxNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmMzNlx1NmM0M1x1NmMzZlx1NmMzYlx1NzJhZVx1NzJiMFx1NzM4YVx1NzliOFx1ODA4YVx1''@;'; put 'put ''OTYxZVx1NGYwZVx1NGYxOFx1NGYyY1x1NGVmNVx1NGYxNFx1NGVmMVx1NGYwMFx1NGVmN1x1NGYwOFx1NGYxZFx1NGYwMlx1NGYwNVx1NGYyMlx1NGYxM1x1NGYwNFx1NGVmNFx1NGYxMlx1NTFiMVx1NTIxM1x1NTIwOVx1NTIxMFx1NTJhNlx1NTMyMlx1NTMxZlx1NTM0ZFx1NTM4YVx1NTQw''@;'; put 'put ''N1x1NTZlMVx1NTZkZlx1NTcyZVx1NTcyYVx1NTczNFx1NTkzY1x1NTk4MFx1NTk3Y1x1NTk4NVx1NTk3Ylx1NTk3ZVx1NTk3N1x1NTk3Zlx1NWI1Nlx1NWMxNVx1NWMyNVx1NWM3Y1x1NWM3YVx1NWM3Ylx1NWM3ZVx1NWRkZlx1NWU3NVx1NWU4NFx1NWYwMlx1NWYxYVx1NWY3NFx1NWZkNVx1''@;'; put 'put ''NWZkNFx1NWZjZlx1NjI1Y1x1NjI1ZVx1NjI2NFx1NjI2MVx1NjI2Nlx1NjI2Mlx1NjI1OVx1NjI2MFx1NjI1YVx1NjI2NVx1NjVlZlx1NjVlZVx1NjczZVx1NjczOVx1NjczOFx1NjczYlx1NjczYVx1NjczZlx1NjczY1x1NjczM1x1NmMxOFx1NmM0Nlx1NmM1Mlx1NmM1Y1x1NmM0Zlx1NmM0''@;'; put 'put ''YVx1NmM1NFx1NmM0Ylx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjAxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDFdW3ZdXT01MTQ1Nit2LFRbNTE0NTYrdl09a1syMDFdW3ZdKTtmb3Ioa1syMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjNGNcdTcwNzFcdTcyNWVcdTcyYjRcdTcyYjVcdTczOGVcdTc1MmFcdTc2N2ZcdTdhNzVcdTdmNTFcdTgyNzhcdTgyN2NcdTgyODBcdTgyN2RcdTgyN2ZcdTg2NGRcdTg5N2VcdTkwOTlcdTkwOTdcdTkwOThcdTkwOWJcdTkw''@;'; put 'put ''OTRcdTk2MjJcdTk2MjRcdTk2MjBcdTk2MjNcdTRmNTZcdTRmM2JcdTRmNjJcdTRmNDlcdTRmNTNcdTRmNjRcdTRmM2VcdTRmNjdcdTRmNTJcdTRmNWZcdTRmNDFcdTRmNThcdTRmMmRcdTRmMzNcdTRmM2ZcdTRmNjFcdTUxOGZcdTUxYjlcdTUyMWNcdTUyMWVcdTUyMjFcdTUyYWRcdTUyYWVc''@;'; put 'put ''dTUzMDlcdTUzNjNcdTUzNzJcdTUzOGVcdTUzOGZcdTU0MzBcdTU0MzdcdTU0MmFcdTU0NTRcdTU0NDVcdTU0MTlcdTU0MWNcdTU0MjVcdTU0MThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0M2RcdTU0NGZcdTU0NDFcdTU0MjhcdTU0MjRcdTU0NDdcdTU2ZWVc''@;'; put 'put ''dTU2ZTdcdTU2ZTVcdTU3NDFcdTU3NDVcdTU3NGNcdTU3NDlcdTU3NGJcdTU3NTJcdTU5MDZcdTU5NDBcdTU5YTZcdTU5OThcdTU5YTBcdTU5OTdcdTU5OGVcdTU5YTJcdTU5OTBcdTU5OGZcdTU5YTdcdTU5YTFcdTViOGVcdTViOTJcdTVjMjhcdTVjMmFcdTVjOGRcdTVjOGZcdTVjODhcdTVj''@;'; put 'put ''OGJcdTVjODlcdTVjOTJcdTVjOGFcdTVjODZcdTVjOTNcdTVjOTVcdTVkZTBcdTVlMGFcdTVlMGVcdTVlOGJcdTVlODlcdTVlOGNcdTVlODhcdTVlOGRcdTVmMDVcdTVmMWRcdTVmNzhcdTVmNzZcdTVmZDJcdTVmZDFcdTVmZDBcdTVmZWRcdTVmZThcdTVmZWVcdTVmZjNcdTVmZTFcdTVmZTRc''@;'; put 'put ''dTVmZTNcdTVmZmFcdTVmZWZcdTVmZjdcdTVmZmJcdTYwMDBcdTVmZjRcdTYyM2FcdTYyODNcdTYyOGNcdTYyOGVcdTYyOGZcdTYyOTRcdTYyODdcdTYyNzFcdTYyN2JcdTYyN2FcdTYyNzBcdTYyODFcdTYyODhcdTYyNzdcdTYyN2RcdTYyNzJcdTYyNzRcdTY1MzdcdTY1ZjBcdTY1ZjRcdTY1''@;'; put 'put ''ZjNcdTY1ZjJcdTY1ZjVcdTY3NDVcdTY3NDdcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjAyXVt2XV09NTE3MTIrdixUWzUxNzEyK3ZdPWtbMjAyXVt2XSk7Zm9yKGtbMjAzXT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzU5XHU2NzU1XHU2NzRjXHU2NzQ4XHU2NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2YzhmXHU2YzcxXHU2YzZmXHU2''@;'; put 'put ''YzY5XHU2YzlhXHU2YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2YzdiXHU2YzhlXHU3MDc0XHU3MDdhXHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3MzkyXHU3NTNhXHU3NTM5''@;'; put 'put ''XHU3NTk0XHU3NTk1XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4MDljXHU4MjkwXHU4MjhmXHU4Mjg1XHU4MjhlXHU4MjkxXHU4MjkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhhXHU4MjgzXHU4Mjg0XHU4Yzc4XHU4ZmM5''@;'; put 'put ''XHU4ZmJmXHU5MDlmXHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0Zjk4XHU0ZjdjXHU0Zjg1XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3XHU0ZjZhXHU0ZjlhXHU0''@;'; put 'put ''Zjc5XHU0ZjgxXHU0Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTllXHU1MWJjXHU1MWJlXHU1MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1Mzk0XHU1NDg3XHU1NDdm''@;'; put 'put ''XHU1NDgxXHU1NDkxXHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1NDZmXHU1NDYxXHU1NDYwXHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZiXHU1NzcxXHU1NzcwXHU1''@;'; put 'put ''Nzc2XHU1NzgwXHU1Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjAzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwM11bdl1dPTUxOTY4K3YsVFs1MTk2OCt2XT1rWzIwM11bdl0pO2Zvcihr''@;'; put 'put ''WzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTc2OFx1NTc3ZFx1NTkwY1x1NTk0NVx1NTliNVx1NTliYVx1NTljZlx1NTljZVx1NTliMlx1NTljY1x1NTljMVx1NTliNlx1NTliY1x1NTljM1x1NTlkNlx1NTliMVx1NTliZFx1''@;'; put 'put ''NTljMFx1NTljOFx1NTliNFx1NTljN1x1NWI2Mlx1NWI2NVx1NWI5M1x1NWI5NVx1NWM0NFx1NWM0N1x1NWNhZVx1NWNhNFx1NWNhMFx1NWNiNVx1NWNhZlx1NWNhOFx1NWNhY1x1NWM5Zlx1NWNhM1x1NWNhZFx1NWNhMlx1NWNhYVx1NWNhN1x1NWM5ZFx1NWNhNVx1NWNiNlx1NWNiMFx1NWNh''@;'; put 'put ''Nlx1NWUxN1x1NWUxNFx1NWUxOVx1NWYyOFx1NWYyMlx1NWYyM1x1NWYyNFx1NWY1NFx1NWY4Mlx1NWY3ZVx1NWY3ZFx1NWZkZVx1NWZlNVx1NjAyZFx1NjAyNlx1NjAxOVx1NjAzMlx1NjAwYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjAzNFx1NjAwYVx1NjAx''@;'; put 'put ''N1x1NjAzM1x1NjAxYVx1NjAxZVx1NjAyY1x1NjAyMlx1NjAwZFx1NjAxMFx1NjAyZVx1NjAxM1x1NjAxMVx1NjAwY1x1NjAwOVx1NjAxY1x1NjIxNFx1NjIzZFx1NjJhZFx1NjJiNFx1NjJkMVx1NjJiZVx1NjJhYVx1NjJiNlx1NjJjYVx1NjJhZVx1NjJiM1x1NjJhZlx1NjJiYlx1NjJhOVx1''@;'; put 'put ''NjJiMFx1NjJiOFx1NjUzZFx1NjVhOFx1NjViYlx1NjYwOVx1NjVmY1x1NjYwNFx1NjYxMlx1NjYwOFx1NjVmYlx1NjYwM1x1NjYwYlx1NjYwZFx1NjYwNVx1NjVmZFx1NjYxMVx1NjYxMFx1NjZmNlx1NjcwYVx1Njc4NVx1Njc2Y1x1Njc4ZVx1Njc5Mlx1Njc3Nlx1Njc3Ylx1Njc5OFx1Njc4''@;'; put 'put ''Nlx1Njc4NFx1Njc3NFx1Njc4ZFx1Njc4Y1x1Njc3YVx1Njc5Zlx1Njc5MVx1Njc5OVx1Njc4M1x1Njc3ZFx1Njc4MVx1Njc3OFx1Njc3OVx1Njc5NFx1NmIyNVx1NmI4MFx1NmI3ZVx1NmJkZVx1NmMxZFx1NmM5M1x1NmNlY1x1NmNlYlx1NmNlZVx1NmNkOVx1NmNiNlx1NmNkNFx1NmNhZFx1''@;'; put 'put ''NmNlN1x1NmNiN1x1NmNkMFx1NmNjMlx1NmNiYVx1NmNjM1x1NmNjNlx1NmNlZFx1NmNmMlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDRdW3ZdXT01MjIyNCt2LFRbNTIyMjQrdl09a1sy''@;'; put 'put ''MDRdW3ZdKTtmb3Ioa1syMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjZDJcdTZjZGRcdTZjYjRcdTZjOGFcdTZjOWRcdTZjODBcdTZjZGVcdTZjYzBcdTZkMzBcdTZjY2RcdTZjYzdcdTZjYjBcdTZjZjlcdTZjY2ZcdTZjZTlc''@;'; put 'put ''dTZjZDFcdTcwOTRcdTcwOThcdTcwODVcdTcwOTNcdTcwODZcdTcwODRcdTcwOTFcdTcwOTZcdTcwODJcdTcwOWFcdTcwODNcdTcyNmFcdTcyZDZcdTcyY2JcdTcyZDhcdTcyYzlcdTcyZGNcdTcyZDJcdTcyZDRcdTcyZGFcdTcyY2NcdTcyZDFcdTczYTRcdTczYTFcdTczYWRcdTczYTZcdTcz''@;'; put 'put ''YTJcdTczYTBcdTczYWNcdTczOWRcdTc0ZGRcdTc0ZThcdTc1M2ZcdTc1NDBcdTc1M2VcdTc1OGNcdTc1OThcdTc2YWZcdTc2ZjNcdTc2ZjFcdTc2ZjBcdTc2ZjVcdTc3ZjhcdTc3ZmNcdTc3ZjlcdTc3ZmJcdTc3ZmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3''@;'; put 'put ''ZjdcdTc5NDJcdTc5M2ZcdTc5YzVcdTdhNzhcdTdhN2JcdTdhZmJcdTdjNzVcdTdjZmRcdTgwMzVcdTgwOGZcdTgwYWVcdTgwYTNcdTgwYjhcdTgwYjVcdTgwYWRcdTgyMjBcdTgyYTBcdTgyYzBcdTgyYWJcdTgyOWFcdTgyOThcdTgyOWJcdTgyYjVcdTgyYTdcdTgyYWVcdTgyYmNcdTgyOWVc''@;'; put 'put ''dTgyYmFcdTgyYjRcdTgyYThcdTgyYTFcdTgyYTlcdTgyYzJcdTgyYTRcdTgyYzNcdTgyYjZcdTgyYTJcdTg2NzBcdTg2NmZcdTg2NmRcdTg2NmVcdThjNTZcdThmZDJcdThmY2JcdThmZDNcdThmY2RcdThmZDZcdThmZDVcdThmZDdcdTkwYjJcdTkwYjRcdTkwYWZcdTkwYjNcdTkwYjBcdTk2''@;'; put 'put ''MzlcdTk2M2RcdTk2M2NcdTk2M2FcdTk2NDNcdTRmY2RcdTRmYzVcdTRmZDNcdTRmYjJcdTRmYzlcdTRmY2JcdTRmYzFcdTRmZDRcdTRmZGNcdTRmZDlcdTRmYmJcdTRmYjNcdTRmZGJcdTRmYzdcdTRmZDZcdTRmYmFcdTRmYzBcdTRmYjlcdTRmZWNcdTUyNDRcdTUyNDlcdTUyYzBcdTUyYzJc''@;'; put 'put ''dTUzM2RcdTUzN2NcdTUzOTdcdTUzOTZcdTUzOTlcdTUzOThcdTU0YmFcdTU0YTFcdTU0YWRcdTU0YTVcdTU0Y2ZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA1XVt2XV09NTI0ODArdixU''@;'; put 'put ''WzUyNDgwK3ZdPWtbMjA1XVt2XSk7Zm9yKGtbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1NGJjXHU1NGEyXHU1NGJl''@;'; put 'put ''XHU1NDcyXHU1NGRlXHU1NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAwXHU1OWYxXHU1OWRkXHU1''@;'; put 'put ''OWZhXHU1OWZkXHU1OWZjXHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZlXHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU1Y2RlXHU1Y2RhXHU1Y2M5XHU1Y2M3XHU1Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1ZTliXHU1ZWEzXHU1ZWE1''@;'; put 'put ''XHU1ZjA3XHU1ZjJlXHU1ZjU2XHU1Zjg2XHU2MDM3XHU2MDM5XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQzXHU2MmNmXHU2MzBkXHU2''@;'; put 'put ''MzBiXHU2MmY1XHU2MzBlXHU2MzAzXHU2MmViXHU2MmY5XHU2MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2NjFjXHU2NjI2XHU2NjIy''@;'; put 'put ''XHU2NjMzXHU2NjJiXHU2NjNhXHU2NjFkXHU2NjM0XHU2NjM5XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2N2JhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwNl1b''@;'; put 'put ''dl1dPTUyNzM2K3YsVFs1MjczNit2XT1rWzIwNl1bdl0pO2ZvcihrWzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjdkY1x1NjdiYlx1NjdmOFx1NjdkOFx1NjdjMFx1NjdiN1x1NjdjNVx1NjdlYlx1NjdlNFx1NjdkZlx1Njdi''@;'; put 'put ''NVx1NjdjZFx1NjdiM1x1NjdmN1x1NjdmNlx1NjdlZVx1NjdlM1x1NjdjMlx1NjdiOVx1NjdjZVx1NjdlN1x1NjdmMFx1NjdiMlx1NjdmY1x1NjdjNlx1NjdlZFx1NjdjY1x1NjdhZVx1NjdlNlx1NjdkYlx1NjdmYVx1NjdjOVx1NjdjYVx1NjdjM1x1NjdlYVx1NjdjYlx1NmIyOFx1NmI4Mlx1''@;'; put 'put ''NmI4NFx1NmJiNlx1NmJkNlx1NmJkOFx1NmJlMFx1NmMyMFx1NmMyMVx1NmQyOFx1NmQzNFx1NmQyZFx1NmQxZlx1NmQzY1x1NmQzZlx1NmQxMlx1NmQwYVx1NmNkYVx1NmQzM1x1NmQwNFx1NmQxOVx1NmQzYVx1NmQxYVx1NmQxMVx1NmQwMFx1NmQxZFx1NmQ0Mlx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQwMVx1NmQxOFx1NmQzN1x1NmQwM1x1NmQwZlx1NmQ0MFx1NmQwN1x1NmQyMFx1NmQyY1x1NmQwOFx1NmQyMlx1NmQwOVx1NmQxMFx1NzBiN1x1NzA5Zlx1NzBiZVx1NzBiMVx1NzBiMFx1NzBhMVx1NzBiNFx1NzBiNVx1NzBhOVx1NzI0MVx1NzI0''@;'; put 'put ''OVx1NzI0YVx1NzI2Y1x1NzI3MFx1NzI3M1x1NzI2ZVx1NzJjYVx1NzJlNFx1NzJlOFx1NzJlYlx1NzJkZlx1NzJlYVx1NzJlNlx1NzJlM1x1NzM4NVx1NzNjY1x1NzNjMlx1NzNjOFx1NzNjNVx1NzNiOVx1NzNiNlx1NzNiNVx1NzNiNFx1NzNlYlx1NzNiZlx1NzNjN1x1NzNiZVx1NzNjM1x1''@;'; put 'put ''NzNjNlx1NzNiOFx1NzNjYlx1NzRlY1x1NzRlZVx1NzUyZVx1NzU0N1x1NzU0OFx1NzVhN1x1NzVhYVx1NzY3OVx1NzZjNFx1NzcwOFx1NzcwM1x1NzcwNFx1NzcwNVx1NzcwYVx1NzZmN1x1NzZmYlx1NzZmYVx1NzdlN1x1NzdlOFx1NzgwNlx1NzgxMVx1NzgxMlx1NzgwNVx1NzgxMFx1Nzgw''@;'; put 'put ''Zlx1NzgwZVx1NzgwOVx1NzgwM1x1NzgxM1x1Nzk0YVx1Nzk0Y1x1Nzk0Ylx1Nzk0NVx1Nzk0NFx1NzlkNVx1NzljZFx1NzljZlx1NzlkNlx1NzljZVx1N2E4MFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA3XVt2XS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoc2Vba1syMDddW3ZdXT01Mjk5Mit2LFRbNTI5OTIrdl09a1syMDddW3ZdKTtmb3Ioa1syMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhN2VcdTdhZDFcdTdiMDBcdTdiMDFcdTdjN2FcdTdjNzhcdTdjNzlcdTdjN2ZcdTdj''@;'; put 'put ''ODBcdTdjODFcdTdkMDNcdTdkMDhcdTdkMDFcdTdmNThcdTdmOTFcdTdmOGRcdTdmYmVcdTgwMDdcdTgwMGVcdTgwMGZcdTgwMTRcdTgwMzdcdTgwZDhcdTgwYzdcdTgwZTBcdTgwZDFcdTgwYzhcdTgwYzJcdTgwZDBcdTgwYzVcdTgwZTNcdTgwZDlcdTgwZGNcdTgwY2FcdTgwZDVcdTgwYzlc''@;'; put 'put ''dTgwY2ZcdTgwZDdcdTgwZTZcdTgwY2RcdTgxZmZcdTgyMjFcdTgyOTRcdTgyZDlcdTgyZmVcdTgyZjlcdTgzMDdcdTgyZThcdTgzMDBcdTgyZDVcdTgzM2FcdTgyZWJcdTgyZDZcdTgyZjRcdTgyZWNcdTgyZTFcdTgyZjJcdTgyZjVcdTgzMGNcdTgyZmJcdTgyZjZcdTgyZjBcdTgyZWFcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgyZTRcdTgyZTBcdTgyZmFcdTgyZjNcdTgyZWRcdTg2NzdcdTg2NzRcdTg2N2NcdTg2NzNcdTg4NDFcdTg4NGVcdTg4NjdcdTg4NmFcdTg4NjlcdTg5ZDNcdThhMDRcdThhMDdcdThkNzJcdThmZTNcdThmZTFcdThmZWVcdThm''@;'; put 'put ''ZTBcdTkwZjFcdTkwYmRcdTkwYmZcdTkwZDVcdTkwYzVcdTkwYmVcdTkwYzdcdTkwY2JcdTkwYzhcdTkxZDRcdTkxZDNcdTk2NTRcdTk2NGZcdTk2NTFcdTk2NTNcdTk2NGFcdTk2NGVcdTUwMWVcdTUwMDVcdTUwMDdcdTUwMTNcdTUwMjJcdTUwMzBcdTUwMWJcdTRmZjVcdTRmZjRcdTUwMzNc''@;'; put 'put ''dTUwMzdcdTUwMmNcdTRmZjZcdTRmZjdcdTUwMTdcdTUwMWNcdTUwMjBcdTUwMjdcdTUwMzVcdTUwMmZcdTUwMzFcdTUwMGVcdTUxNWFcdTUxOTRcdTUxOTNcdTUxY2FcdTUxYzRcdTUxYzVcdTUxYzhcdTUxY2VcdTUyNjFcdTUyNWFcdTUyNTJcdTUyNWVcdTUyNWZcdTUyNTVcdTUyNjJcdTUy''@;'; put 'put ''Y2RcdTUzMGVcdTUzOWVcdTU1MjZcdTU0ZTJcdTU1MTdcdTU1MTJcdTU0ZTdcdTU0ZjNcdTU0ZTRcdTU1MWFcdTU0ZmZcdTU1MDRcdTU1MDhcdTU0ZWJcdTU1MTFcdTU1MDVcdTU0ZjFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwOF1bdl0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKHNlW2tbMjA4XVt2XV09NTMyNDgrdixUWzUzMjQ4K3ZdPWtbMjA4XVt2XSk7Zm9yKGtbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4XHU1NGUwXHU1NTBlXHU1''@;'; put 'put ''NTAzXHU1NTBiXHU1NzAxXHU1NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1OTBlXHU1OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1YTE1XHU1YTBmXHU1YTE3''@;'; put 'put ''XHU1YTBhXHU1YTFlXHU1YTMzXHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4XHU1ZWE4XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMwXHU1ZjY3XHU2MDVkXHU2''@;'; put 'put ''MDVhXHU2MDY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2MjQ2XHU2MmYyXHU2MzEwXHU2MzU2XHU2''@;'; put 'put ''MzJjXHU2MzQ0XHU2MzQ1XHU2MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQwXHU2MzQ4XHU2NTRhXHU2NTQ2XHU2NWM2''@;'; put 'put ''XHU2NWMzXHU2NWM0XHU2NWMyXHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2ODJmXHU2ODRlXHU2ODQ0XHU2ODM0XHU2''@;'; put 'put ''ODFkXHU2ODEyXHU2ODE0XHU2ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJkXHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA5XS5sZW5ndGg7Kyt2KTY1NTMz''@;'; put 'put ''IT09a1syMDldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwOV1bdl1dPTUzNTA0K3YsVFs1MzUwNCt2XT1rWzIwOV1bdl0pO2ZvcihrWzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJlOFx1NmJlM1x1NmJlMlx1NmJlN1x1''@;'; put 'put ''NmMyNVx1NmQ3YVx1NmQ2M1x1NmQ2NFx1NmQ3Nlx1NmQwZFx1NmQ2MVx1NmQ5Mlx1NmQ1OFx1NmQ2Mlx1NmQ2ZFx1NmQ2Zlx1NmQ5MVx1NmQ4ZFx1NmRlZlx1NmQ3Zlx1NmQ4Nlx1NmQ1ZVx1NmQ2N1x1NmQ2MFx1NmQ5N1x1NmQ3MFx1NmQ3Y1x1NmQ1Zlx1NmQ4Mlx1NmQ5OFx1NmQyZlx1NmQ2''@;'; put 'put ''OFx1NmQ4Ylx1NmQ3ZVx1NmQ4MFx1NmQ4NFx1NmQxNlx1NmQ4M1x1NmQ3Ylx1NmQ3ZFx1NmQ3NVx1NmQ5MFx1NzBkY1x1NzBkM1x1NzBkMVx1NzBkZFx1NzBjYlx1N2YzOVx1NzBlMlx1NzBkN1x1NzBkMlx1NzBkZVx1NzBlMFx1NzBkNFx1NzBjZFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBkYVx1''@;'; put 'put ''NzBjZVx1NzBlMVx1NzI0Mlx1NzI3OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzI3N1x1NzI3Nlx1NzMwMFx1NzJmYVx1NzJmNFx1NzJmZVx1NzJmNlx1NzJmM1x1NzJmYlx1NzMwMVx1NzNkM1x1NzNkOVx1NzNlNVx1NzNkNlx1NzNiY1x1NzNlN1x1NzNlM1x1''@;'; put 'put ''NzNlOVx1NzNkY1x1NzNkMlx1NzNkYlx1NzNkNFx1NzNkZFx1NzNkYVx1NzNkN1x1NzNkOFx1NzNlOFx1NzRkZVx1NzRkZlx1NzRmNFx1NzRmNVx1NzUyMVx1NzU1Ylx1NzU1Zlx1NzViMFx1NzVjMVx1NzViYlx1NzVjNFx1NzVjMFx1NzViZlx1NzViNlx1NzViYVx1NzY4YVx1NzZjOVx1Nzcx''@;'; put 'put ''ZFx1NzcxYlx1NzcxMFx1NzcxM1x1NzcxMlx1NzcyM1x1NzcxMVx1NzcxNVx1NzcxOVx1NzcxYVx1NzcyMlx1NzcyN1x1NzgyM1x1NzgyY1x1NzgyMlx1NzgzNVx1NzgyZlx1NzgyOFx1NzgyZVx1NzgyYlx1NzgyMVx1NzgyOVx1NzgzM1x1NzgyYVx1NzgzMVx1Nzk1NFx1Nzk1Ylx1Nzk0Zlx1''@;'; put 'put ''Nzk1Y1x1Nzk1M1x1Nzk1Mlx1Nzk1MVx1NzllYlx1NzllY1x1NzllMFx1NzllZVx1NzllZFx1NzllYVx1NzlkY1x1NzlkZVx1NzlkZFx1N2E4Nlx1N2E4OVx1N2E4NVx1N2E4Ylx1N2E4Y1x1N2E4YVx1N2E4N1x1N2FkOFx1N2IxMFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxMF0ubGVu''@;'; put 'put ''Z3RoOysrdik2NTUzMyE9PWtbMjEwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTBdW3ZdXT01Mzc2MCt2LFRbNTM3NjArdl09a1syMTBdW3ZdKTtmb3Ioa1syMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdiMDRcdTdiMTNc''@;'; put 'put ''dTdiMDVcdTdiMGZcdTdiMDhcdTdiMGFcdTdiMGVcdTdiMDlcdTdiMTJcdTdjODRcdTdjOTFcdTdjOGFcdTdjOGNcdTdjODhcdTdjOGRcdTdjODVcdTdkMWVcdTdkMWRcdTdkMTFcdTdkMGVcdTdkMThcdTdkMTZcdTdkMTNcdTdkMWZcdTdkMTJcdTdkMGZcdTdkMGNcdTdmNWNcdTdmNjFcdTdm''@;'; put 'put ''NWVcdTdmNjBcdTdmNWRcdTdmNWJcdTdmOTZcdTdmOTJcdTdmYzNcdTdmYzJcdTdmYzBcdTgwMTZcdTgwM2VcdTgwMzlcdTgwZmFcdTgwZjJcdTgwZjlcdTgwZjVcdTgxMDFcdTgwZmJcdTgxMDBcdTgyMDFcdTgyMmZcdTgyMjVcdTgzMzNcdTgzMmRcdTgzNDRcdTgzMTlcdTgzNTFcdTgzMjVc''@;'; put 'put ''dTgzNTZcdTgzM2ZcdTgzNDFcdTgzMjZcdTgzMWNcdTgzMjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzNDJcdTgzNGVcdTgzMWJcdTgzMmFcdTgzMDhcdTgzM2NcdTgzNGRcdTgzMTZcdTgzMjRcdTgzMjBcdTgzMzdcdTgzMmZcdTgzMjlcdTgzNDdcdTgzNDVc''@;'; put 'put ''dTgzNGNcdTgzNTNcdTgzMWVcdTgzMmNcdTgzNGJcdTgzMjdcdTgzNDhcdTg2NTNcdTg2NTJcdTg2YTJcdTg2YThcdTg2OTZcdTg2OGRcdTg2OTFcdTg2OWVcdTg2ODdcdTg2OTdcdTg2ODZcdTg2OGJcdTg2OWFcdTg2ODVcdTg2YTVcdTg2OTlcdTg2YTFcdTg2YTdcdTg2OTVcdTg2OThcdTg2''@;'; put 'put ''OGVcdTg2OWRcdTg2OTBcdTg2OTRcdTg4NDNcdTg4NDRcdTg4NmRcdTg4NzVcdTg4NzZcdTg4NzJcdTg4ODBcdTg4NzFcdTg4N2ZcdTg4NmZcdTg4ODNcdTg4N2VcdTg4NzRcdTg4N2NcdThhMTJcdThjNDdcdThjNTdcdThjN2JcdThjYTRcdThjYTNcdThkNzZcdThkNzhcdThkYjVcdThkYjdc''@;'; put 'put ''dThkYjZcdThlZDFcdThlZDNcdThmZmVcdThmZjVcdTkwMDJcdThmZmZcdThmZmJcdTkwMDRcdThmZmNcdThmZjZcdTkwZDZcdTkwZTBcdTkwZDlcdTkwZGFcdTkwZTNcdTkwZGZcdTkwZTVcdTkwZDhcdTkwZGJcdTkwZDdcdTkwZGNcdTkwZTRcdTkxNTBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7''@;'; put 'put ''diE9a1syMTFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjExXVt2XV09NTQwMTYrdixUWzU0MDE2K3ZdPWtbMjExXVt2XSk7Zm9yKGtbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU5MTRlXHU5MTRmXHU5MWQ1XHU5MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRmXHU5YjJmXHU0ZTdmXHU1MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDViXHU1MDRhXHU1MDYyXHU1''@;'; put 'put ''MDE1XHU1MDQ1XHU1MDVmXHU1MDY5XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1MDczXHU1MDU3XHU1MDUxXHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1NTRkXHU1NTUwXHU1NTM0''@;'; put 'put ''XHU1NTJhXHU1NTUxXHU1NTYyXHU1NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBjXHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1NzBhXHU1NzA3XHU1N2Zi''@;'; put 'put ''XHU1ODE0XHU1N2UyXHU1N2Y2XHU1N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1N2NmXHU1ODA3XHU1N2VlXHU1N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAxXHU1ODBjXHU1N2YxXHU1''@;'; put 'put ''N2U5XHU1N2YwXHU1ODBkXHU1ODA0XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZkXHU1YTUwXHU1YTVmXHU1YTY1XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1YTQ4XHU1YThlXHU1YTNl''@;'; put 'put ''XHU1YTRkXHU1YTM5XHU1YTRjXHU1YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1YmMxXHU1YmMwXHU1YzU5XHU1ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1XHU1ZDBmXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksdj0wO3YhPWtbMjEyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxMl1bdl1dPTU0MjcyK3YsVFs1NDI3Mit2XT1rWzIxMl1bdl0pO2ZvcihrWzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NWQzMFx1NWQxMlx1NWQyM1x1NWQxZlx1NWQyZVx1NWUzZVx1NWUzNFx1NWViMVx1NWViNFx1NWViOVx1NWViMlx1NWViM1x1NWYzNlx1NWYzOFx1NWY5Ylx1NWY5Nlx1NWY5Zlx1NjA4YVx1NjA5MFx1NjA4Nlx1NjBiZVx1NjBiMFx1NjBiYVx1NjBkM1x1NjBkNFx1''@;'; put 'put ''NjBjZlx1NjBlNFx1NjBkOVx1NjBkZFx1NjBjOFx1NjBiMVx1NjBkYlx1NjBiN1x1NjBjYVx1NjBiZlx1NjBjM1x1NjBjZFx1NjBjMFx1NjMzMlx1NjM2NVx1NjM4YVx1NjM4Mlx1NjM3ZFx1NjNiZFx1NjM5ZVx1NjNhZFx1NjM5ZFx1NjM5N1x1NjNhYlx1NjM4ZVx1NjM2Zlx1NjM4N1x1NjM5''@;'; put 'put ''MFx1NjM2ZVx1NjNhZlx1NjM3NVx1NjM5Y1x1NjM2ZFx1NjNhZVx1NjM3Y1x1NjNhNFx1NjMzYlx1NjM5Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjM3OFx1NjM4NVx1NjM4MVx1NjM5MVx1NjM4ZFx1NjM3MFx1NjU1M1x1NjVjZFx1NjY2NVx1NjY2MVx1NjY1''@;'; put 'put ''Ylx1NjY1OVx1NjY1Y1x1NjY2Mlx1NjcxOFx1Njg3OVx1Njg4N1x1Njg5MFx1Njg5Y1x1Njg2ZFx1Njg2ZVx1NjhhZVx1NjhhYlx1Njk1Nlx1Njg2Zlx1NjhhM1x1NjhhY1x1NjhhOVx1Njg3NVx1Njg3NFx1NjhiMlx1Njg4Zlx1Njg3N1x1Njg5Mlx1Njg3Y1x1Njg2Ylx1Njg3Mlx1NjhhYVx1''@;'; put 'put ''Njg4MFx1Njg3MVx1Njg3ZVx1Njg5Ylx1Njg5Nlx1Njg4Ylx1NjhhMFx1Njg4OVx1NjhhNFx1Njg3OFx1Njg3Ylx1Njg5MVx1Njg4Y1x1Njg4YVx1Njg3ZFx1NmIzNlx1NmIzM1x1NmIzN1x1NmIzOFx1NmI5MVx1NmI4Zlx1NmI4ZFx1NmI4ZVx1NmI4Y1x1NmMyYVx1NmRjMFx1NmRhYlx1NmRi''@;'; put 'put ''NFx1NmRiM1x1NmU3NFx1NmRhY1x1NmRlOVx1NmRlMlx1NmRiN1x1NmRmNlx1NmRkNFx1NmUwMFx1NmRjOFx1NmRlMFx1NmRkZlx1NmRkNlx1NmRiZVx1NmRlNVx1NmRkY1x1NmRkZFx1NmRkYlx1NmRmNFx1NmRjYVx1NmRiZFx1NmRlZFx1NmRmMFx1NmRiYVx1NmRkNVx1NmRjMlx1NmRjZlx1''@;'; put 'put ''NmRjOVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjEzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTNdW3ZdXT01NDUyOCt2LFRbNTQ1Mjgrdl09a1syMTNdW3ZdKTtmb3Ioa1syMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkZDBcdTZkZjJcdTZkZDNcdTZkZmRcdTZkZDdcdTZkY2RcdTZkZTNcdTZkYmJcdTcwZmFcdTcxMGRcdTcwZjdcdTcxMTdcdTcwZjRcdTcxMGNcdTcwZjBcdTcxMDRcdTcwZjNcdTcxMTBcdTcwZmNcdTcwZmZcdTcxMDZcdTcxMTNcdTcxMDBc''@;'; put 'put ''dTcwZjhcdTcwZjZcdTcxMGJcdTcxMDJcdTcxMGVcdTcyN2VcdTcyN2JcdTcyN2NcdTcyN2ZcdTczMWRcdTczMTdcdTczMDdcdTczMTFcdTczMThcdTczMGFcdTczMDhcdTcyZmZcdTczMGZcdTczMWVcdTczODhcdTczZjZcdTczZjhcdTczZjVcdTc0MDRcdTc0MDFcdTczZmRcdTc0MDdcdTc0''@;'; put 'put ''MDBcdTczZmFcdTczZmNcdTczZmZcdTc0MGNcdTc0MGJcdTczZjRcdTc0MDhcdTc1NjRcdTc1NjNcdTc1Y2VcdTc1ZDJcdTc1Y2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1Y2JcdTc1Y2NcdTc1ZDFcdTc1ZDBcdTc2OGZcdTc2ODlcdTc2ZDNcdTc3MzlcdTc3''@;'; put 'put ''MmZcdTc3MmRcdTc3MzFcdTc3MzJcdTc3MzRcdTc3MzNcdTc3M2RcdTc3MjVcdTc3M2JcdTc3MzVcdTc4NDhcdTc4NTJcdTc4NDlcdTc4NGRcdTc4NGFcdTc4NGNcdTc4MjZcdTc4NDVcdTc4NTBcdTc5NjRcdTc5NjdcdTc5NjlcdTc5NmFcdTc5NjNcdTc5NmJcdTc5NjFcdTc5YmJcdTc5ZmFc''@;'; put 'put ''dTc5ZjhcdTc5ZjZcdTc5ZjdcdTdhOGZcdTdhOTRcdTdhOTBcdTdiMzVcdTdiNDdcdTdiMzRcdTdiMjVcdTdiMzBcdTdiMjJcdTdiMjRcdTdiMzNcdTdiMThcdTdiMmFcdTdiMWRcdTdiMzFcdTdiMmJcdTdiMmRcdTdiMmZcdTdiMzJcdTdiMzhcdTdiMWFcdTdiMjNcdTdjOTRcdTdjOThcdTdj''@;'; put 'put ''OTZcdTdjYTNcdTdkMzVcdTdkM2RcdTdkMzhcdTdkMzZcdTdkM2FcdTdkNDVcdTdkMmNcdTdkMjlcdTdkNDFcdTdkNDdcdTdkM2VcdTdkM2ZcdTdkNGFcdTdkM2JcdTdkMjhcdTdmNjNcdTdmOTVcdTdmOWNcdTdmOWRcdTdmOWJcdTdmY2FcdTdmY2JcdTdmY2RcdTdmZDBcdTdmZDFcdTdmYzdc''@;'; put 'put ''dTdmY2ZcdTdmYzlcdTgwMWZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxNF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE0XVt2XV09NTQ3ODQrdixUWzU0Nzg0K3ZdPWtbMjE0XVt2XSk7Zm9yKGtbMjE1XT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4MjExXHU4MjM4XHU4MjMz''@;'; put 'put ''XHU4MjNhXHU4MjM0XHU4MjMyXHU4Mjc0XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2FhXHU4MzhiXHU4MzdlXHU4''@;'; put 'put ''M2E1XHU4M2FmXHU4Mzg4XHU4Mzk3XHU4M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2XHU4NmJmXHU4NmI3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJhXHU4NmIwXHU4NmM4XHU4''@;'; put 'put ''NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4NmI0XHU4NmJiXHU4NmJjXHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4OGE0XHU4OGFjXHU4ODhj''@;'; put 'put ''XHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2XHU4OWQ5XHU4OWQ1XHU4YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4XHU4ZWRlXHU4ZWRkXHU4''@;'; put 'put ''ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5MDI0XHU5MDBiXHU5MDExXHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYwXHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5MWVjXHU5MWY0XHU5MWYx''@;'; put 'put ''XHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5XHU5MWVhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxNV1bdl1dPTU1MDQwK3YsVFs1NTA0MCt2XT1rWzIxNV1bdl0pO2ZvcihrWzIxNl09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTFlYlx1OTFmN1x1OTFlOFx1OTFlZVx1OTU3YVx1OTU4Nlx1OTU4OFx1OTY3Y1x1OTY2ZFx1OTY2Ylx1OTY3MVx1OTY2Zlx1OTZiZlx1OTc2YVx1OTgwNFx1OThlNVx1OTk5N1x1NTA5Ylx1NTA5''@;'; put 'put ''NVx1NTA5NFx1NTA5ZVx1NTA4Ylx1NTBhM1x1NTA4M1x1NTA4Y1x1NTA4ZVx1NTA5ZFx1NTA2OFx1NTA5Y1x1NTA5Mlx1NTA4Mlx1NTA4N1x1NTE1Zlx1NTFkNFx1NTMxMlx1NTMxMVx1NTNhNFx1NTNhN1x1NTU5MVx1NTVhOFx1NTVhNVx1NTVhZFx1NTU3N1x1NTY0NVx1NTVhMlx1NTU5M1x1''@;'; put 'put ''NTU4OFx1NTU4Zlx1NTViNVx1NTU4MVx1NTVhM1x1NTU5Mlx1NTVhNFx1NTU3ZFx1NTU4Y1x1NTVhNlx1NTU3Zlx1NTU5NVx1NTVhMVx1NTU4ZVx1NTcwY1x1NTgyOVx1NTgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgxOVx1NTgxZVx1NTgyN1x1NTgyM1x1''@;'; put 'put ''NTgyOFx1NTdmNVx1NTg0OFx1NTgyNVx1NTgxY1x1NTgxYlx1NTgzM1x1NTgzZlx1NTgzNlx1NTgyZVx1NTgzOVx1NTgzOFx1NTgyZFx1NTgyY1x1NTgzYlx1NTk2MVx1NWFhZlx1NWE5NFx1NWE5Zlx1NWE3YVx1NWFhMlx1NWE5ZVx1NWE3OFx1NWFhNlx1NWE3Y1x1NWFhNVx1NWFhY1x1NWE5''@;'; put 'put ''NVx1NWFhZVx1NWEzN1x1NWE4NFx1NWE4YVx1NWE5N1x1NWE4M1x1NWE4Ylx1NWFhOVx1NWE3Ylx1NWE3ZFx1NWE4Y1x1NWE5Y1x1NWE4Zlx1NWE5M1x1NWE5ZFx1NWJlYVx1NWJjZFx1NWJjYlx1NWJkNFx1NWJkMVx1NWJjYVx1NWJjZVx1NWMwY1x1NWMzMFx1NWQzN1x1NWQ0M1x1NWQ2Ylx1''@;'; put 'put ''NWQ0MVx1NWQ0Ylx1NWQzZlx1NWQzNVx1NWQ1MVx1NWQ0ZVx1NWQ1NVx1NWQzM1x1NWQzYVx1NWQ1Mlx1NWQzZFx1NWQzMVx1NWQ1OVx1NWQ0Mlx1NWQzOVx1NWQ0OVx1NWQzOFx1NWQzY1x1NWQzMlx1NWQzNlx1NWQ0MFx1NWQ0NVx1NWU0NFx1NWU0MVx1NWY1OFx1NWZhNlx1NWZhNVx1NWZh''@;'; put 'put ''Ylx1NjBjOVx1NjBiOVx1NjBjY1x1NjBlMlx1NjBjZVx1NjBjNFx1NjExNFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxNl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTZdW3ZdXT01NTI5Nit2LFRbNTUyOTYrdl09a1syMTZdW3ZdKTtm''@;'; put 'put ''b3Ioa1syMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwZjJcdTYxMGFcdTYxMTZcdTYxMDVcdTYwZjVcdTYxMTNcdTYwZjhcdTYwZmNcdTYwZmVcdTYwYzFcdTYxMDNcdTYxMThcdTYxMWRcdTYxMTBcdTYwZmZcdTYxMDRcdTYx''@;'; put 'put ''MGJcdTYyNGFcdTYzOTRcdTYzYjFcdTYzYjBcdTYzY2VcdTYzZTVcdTYzZThcdTYzZWZcdTYzYzNcdTY0OWRcdTYzZjNcdTYzY2FcdTYzZTBcdTYzZjZcdTYzZDVcdTYzZjJcdTYzZjVcdTY0NjFcdTYzZGZcdTYzYmVcdTYzZGRcdTYzZGNcdTYzYzRcdTYzZDhcdTYzZDNcdTYzYzJcdTYzYzdc''@;'; put 'put ''dTYzY2NcdTYzY2JcdTYzYzhcdTYzZjBcdTYzZDdcdTYzZDlcdTY1MzJcdTY1NjdcdTY1NmFcdTY1NjRcdTY1NWNcdTY1NjhcdTY1NjVcdTY1OGNcdTY1OWRcdTY1OWVcdTY1YWVcdTY1ZDBcdTY1ZDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2N2NcdTY2NmNc''@;'; put 'put ''dTY2N2JcdTY2ODBcdTY2NzFcdTY2NzlcdTY2NmFcdTY2NzJcdTY3MDFcdTY5MGNcdTY4ZDNcdTY5MDRcdTY4ZGNcdTY5MmFcdTY4ZWNcdTY4ZWFcdTY4ZjFcdTY5MGZcdTY4ZDZcdTY4ZjdcdTY4ZWJcdTY4ZTRcdTY4ZjZcdTY5MTNcdTY5MTBcdTY4ZjNcdTY4ZTFcdTY5MDdcdTY4Y2NcdTY5''@;'; put 'put ''MDhcdTY5NzBcdTY4YjRcdTY5MTFcdTY4ZWZcdTY4YzZcdTY5MTRcdTY4ZjhcdTY4ZDBcdTY4ZmRcdTY4ZmNcdTY4ZThcdTY5MGJcdTY5MGFcdTY5MTdcdTY4Y2VcdTY4YzhcdTY4ZGRcdTY4ZGVcdTY4ZTZcdTY4ZjRcdTY4ZDFcdTY5MDZcdTY4ZDRcdTY4ZTlcdTY5MTVcdTY5MjVcdTY4Yzdc''@;'; put 'put ''dTZiMzlcdTZiM2JcdTZiM2ZcdTZiM2NcdTZiOTRcdTZiOTdcdTZiOTlcdTZiOTVcdTZiYmRcdTZiZjBcdTZiZjJcdTZiZjNcdTZjMzBcdTZkZmNcdTZlNDZcdTZlNDdcdTZlMWZcdTZlNDlcdTZlODhcdTZlM2NcdTZlM2RcdTZlNDVcdTZlNjJcdTZlMmJcdTZlM2ZcdTZlNDFcdTZlNWRcdTZl''@;'; put 'put ''NzNcdTZlMWNcdTZlMzNcdTZlNGJcdTZlNDBcdTZlNTFcdTZlM2JcdTZlMDNcdTZlMmVcdTZlNWVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE3XVt2XV09NTU1NTIrdixUWzU1NTUyK3Zd''@;'; put 'put ''PWtbMjE3XVt2XSk7Zm9yKGtbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2ZTcxXHU2ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUzXHU2ZTY1XHU2ZTI3XHU2''@;'; put 'put ''ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJmXHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMyXHU3MTFmXHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3MjVhXHU3Mjg4XHU3Mjg5''@;'; put 'put ''XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3NDJiXHU3NDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3NjkyXHU3NmRhXHU3NzQ2XHU3NzQ3XHU3''@;'; put 'put ''NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRlXHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVjXHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3OTcyXHU3OTcwXHU3YTAyXHU3YTBh''@;'; put 'put ''XHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2XHU3ZDY3XHU3ZDZhXHU3ZDRmXHU3''@;'; put 'put ''ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMThdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxOF1bdl1dPTU1ODA4''@;'; put 'put ''K3YsVFs1NTgwOCt2XT1rWzIxOF1bdl0pO2ZvcihrWzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y2Nlx1N2ZhMlx1N2ZhMFx1N2ZhMVx1N2ZkN1x1ODA1MVx1ODA0Zlx1ODA1MFx1ODBmZVx1ODBkNFx1ODE0M1x1ODE0YVx1''@;'; put 'put ''ODE1Mlx1ODE0Zlx1ODE0N1x1ODEzZFx1ODE0ZFx1ODEzYVx1ODFlNlx1ODFlZVx1ODFmN1x1ODFmOFx1ODFmOVx1ODIwNFx1ODIzY1x1ODIzZFx1ODIzZlx1ODI3NVx1ODMzYlx1ODNjZlx1ODNmOVx1ODQyM1x1ODNjMFx1ODNlOFx1ODQxMlx1ODNlN1x1ODNlNFx1ODNmY1x1ODNmNlx1ODQx''@;'; put 'put ''MFx1ODNjNlx1ODNjOFx1ODNlYlx1ODNlM1x1ODNiZlx1ODQwMVx1ODNkZFx1ODNlNVx1ODNkOFx1ODNmZlx1ODNlMVx1ODNjYlx1ODNjZVx1ODNkNlx1ODNmNVx1ODNjOVx1ODQwOVx1ODQwZlx1ODNkZVx1ODQxMVx1ODQwNlx1ODNjMlx1ODNmM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ODNkNVx1ODNmYVx1ODNjN1x1ODNkMVx1ODNlYVx1ODQxM1x1ODNjM1x1ODNlY1x1ODNlZVx1ODNjNFx1ODNmYlx1ODNkN1x1ODNlMlx1ODQxYlx1ODNkYlx1ODNmZVx1ODZkOFx1ODZlMlx1ODZlNlx1ODZkM1x1ODZlM1x1ODZkYVx1ODZlYVx1ODZkZFx1ODZlYlx1''@;'; put 'put ''ODZkY1x1ODZlY1x1ODZlOVx1ODZkN1x1ODZlOFx1ODZkMVx1ODg0OFx1ODg1Nlx1ODg1NVx1ODhiYVx1ODhkN1x1ODhiOVx1ODhiOFx1ODhjMFx1ODhiZVx1ODhiNlx1ODhiY1x1ODhiN1x1ODhiZFx1ODhiMlx1ODkwMVx1ODhjOVx1ODk5NVx1ODk5OFx1ODk5N1x1ODlkZFx1ODlkYVx1ODlk''@;'; put 'put ''Ylx1OGE0ZVx1OGE0ZFx1OGEzOVx1OGE1OVx1OGE0MFx1OGE1N1x1OGE1OFx1OGE0NFx1OGE0NVx1OGE1Mlx1OGE0OFx1OGE1MVx1OGE0YVx1OGE0Y1x1OGE0Zlx1OGM1Zlx1OGM4MVx1OGM4MFx1OGNiYVx1OGNiZVx1OGNiMFx1OGNiOVx1OGNiNVx1OGQ4NFx1OGQ4MFx1OGQ4OVx1OGRkOFx1''@;'; put 'put ''OGRkM1x1OGRjZFx1OGRjN1x1OGRkNlx1OGRkY1x1OGRjZlx1OGRkNVx1OGRkOVx1OGRjOFx1OGRkN1x1OGRjNVx1OGVlZlx1OGVmN1x1OGVmYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sy''@;'; put 'put ''MTldW3ZdXT01NjA2NCt2LFRbNTYwNjQrdl09a1syMTldW3ZdKTtmb3Ioa1syMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlZjlcdThlZTZcdThlZWVcdThlZTVcdThlZjVcdThlZTdcdThlZThcdThlZjZcdThlZWJcdThlZjFc''@;'; put 'put ''dThlZWNcdThlZjRcdThlZTlcdTkwMmRcdTkwMzRcdTkwMmZcdTkxMDZcdTkxMmNcdTkxMDRcdTkwZmZcdTkwZmNcdTkxMDhcdTkwZjlcdTkwZmJcdTkxMDFcdTkxMDBcdTkxMDdcdTkxMDVcdTkxMDNcdTkxNjFcdTkxNjRcdTkxNWZcdTkxNjJcdTkxNjBcdTkyMDFcdTkyMGFcdTkyMjVcdTky''@;'; put 'put ''MDNcdTkyMWFcdTkyMjZcdTkyMGZcdTkyMGNcdTkyMDBcdTkyMTJcdTkxZmZcdTkxZmRcdTkyMDZcdTkyMDRcdTkyMjdcdTkyMDJcdTkyMWNcdTkyMjRcdTkyMTlcdTkyMTdcdTkyMDVcdTkyMTZcdTk1N2JcdTk1OGRcdTk1OGNcdTk1OTBcdTk2ODdcdTk2N2VcdTk2ODhcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2ODlcdTk2ODNcdTk2ODBcdTk2YzJcdTk2YzhcdTk2YzNcdTk2ZjFcdTk2ZjBcdTk3NmNcdTk3NzBcdTk3NmVcdTk4MDdcdTk4YTlcdTk4ZWJcdTljZTZcdTllZjlcdTRlODNcdTRlODRcdTRlYjZcdTUwYmRcdTUwYmZcdTUwYzZcdTUwYWVc''@;'; put 'put ''dTUwYzRcdTUwY2FcdTUwYjRcdTUwYzhcdTUwYzJcdTUwYjBcdTUwYzFcdTUwYmFcdTUwYjFcdTUwY2JcdTUwYzlcdTUwYjZcdTUwYjhcdTUxZDdcdTUyN2FcdTUyNzhcdTUyN2JcdTUyN2NcdTU1YzNcdTU1ZGJcdTU1Y2NcdTU1ZDBcdTU1Y2JcdTU1Y2FcdTU1ZGRcdTU1YzBcdTU1ZDRcdTU1''@;'; put 'put ''YzRcdTU1ZTlcdTU1YmZcdTU1ZDJcdTU1OGRcdTU1Y2ZcdTU1ZDVcdTU1ZTJcdTU1ZDZcdTU1YzhcdTU1ZjJcdTU1Y2RcdTU1ZDlcdTU1YzJcdTU3MTRcdTU4NTNcdTU4NjhcdTU4NjRcdTU4NGZcdTU4NGRcdTU4NDlcdTU4NmZcdTU4NTVcdTU4NGVcdTU4NWRcdTU4NTlcdTU4NjVcdTU4NWJc''@;'; put 'put ''dTU4M2RcdTU4NjNcdTU4NzFcdTU4ZmNcdTVhYzdcdTVhYzRcdTVhY2JcdTVhYmFcdTVhYjhcdTVhYjFcdTVhYjVcdTVhYjBcdTVhYmZcdTVhYzhcdTVhYmJcdTVhYzZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyMF1bdl0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKHNlW2tbMjIwXVt2XV09NTYzMjArdixUWzU2MzIwK3ZdPWtbMjIwXVt2XSk7Zm9yKGtbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1YWNkXHU1YWI5XHU1YTkw''@;'; put 'put ''XHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMzXHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1ZDZjXHU1ZDVlXHU1ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNiXHU1ZWM3XHU1ZjQwXHU1''@;'; put 'put ''ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2XHU2MTJmXHU2MTRmXHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2NDA5XHU2NDIwXHU2NDI0''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5XHU2NDM3XHU2NDIyXHU2NDIzXHU2NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2NDQwXHU2NDI1XHU2NDI3''@;'; put 'put ''XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIxXHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2NjkwXHU2NjhiXHU2NjhhXHU2Njk5XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcxXHU2OTNmXHU2OTQ1XHU2''@;'; put 'put ''OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1XHU2OGYwXHU2OTc4XHU2OTM0XHU2OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2OTNiXHU2OTRiXHU2OTM3''@;'; put 'put ''XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUyXHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2YjQ4XHU2YjQxXHU2YjliXHVmYTBkXHU2YmZiXHU2YmZjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjFd''@;'; put 'put ''W3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyMV1bdl1dPTU2NTc2K3YsVFs1NjU3Nit2XT1rWzIyMV1bdl0pO2ZvcihrWzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJmOVx1NmJmN1x1NmJmOFx1NmU5Ylx1NmVkNlx1NmVj''@;'; put 'put ''OFx1NmU4Zlx1NmVjMFx1NmU5Zlx1NmU5M1x1NmU5NFx1NmVhMFx1NmViMVx1NmViOVx1NmVjNlx1NmVkMlx1NmViZFx1NmVjMVx1NmU5ZVx1NmVjOVx1NmViN1x1NmViMFx1NmVjZFx1NmVhNlx1NmVjZlx1NmViMlx1NmViZVx1NmVjM1x1NmVkY1x1NmVkOFx1NmU5OVx1NmU5Mlx1NmU4ZVx1''@;'; put 'put ''NmU4ZFx1NmVhNFx1NmVhMVx1NmViZlx1NmViM1x1NmVkMFx1NmVjYVx1NmU5N1x1NmVhZVx1NmVhM1x1NzE0N1x1NzE1NFx1NzE1Mlx1NzE2M1x1NzE2MFx1NzE0MVx1NzE1ZFx1NzE2Mlx1NzE3Mlx1NzE3OFx1NzE2YVx1NzE2MVx1NzE0Mlx1NzE1OFx1NzE0M1x1NzE0Ylx1NzE3MFx1NzE1''@;'; put 'put ''Zlx1NzE1MFx1NzE1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0NFx1NzE0ZFx1NzE1YVx1NzI0Zlx1NzI4ZFx1NzI4Y1x1NzI5MVx1NzI5MFx1NzI4ZVx1NzMzY1x1NzM0Mlx1NzMzYlx1NzMzYVx1NzM0MFx1NzM0YVx1NzM0OVx1NzQ0NFx1NzQ0YVx1NzQ0''@;'; put 'put ''Ylx1NzQ1Mlx1NzQ1MVx1NzQ1N1x1NzQ0MFx1NzQ0Zlx1NzQ1MFx1NzQ0ZVx1NzQ0Mlx1NzQ0Nlx1NzQ0ZFx1NzQ1NFx1NzRlMVx1NzRmZlx1NzRmZVx1NzRmZFx1NzUxZFx1NzU3OVx1NzU3N1x1Njk4M1x1NzVlZlx1NzYwZlx1NzYwM1x1NzVmN1x1NzVmZVx1NzVmY1x1NzVmOVx1NzVmOFx1''@;'; put 'put ''NzYxMFx1NzVmYlx1NzVmNlx1NzVlZFx1NzVmNVx1NzVmZFx1NzY5OVx1NzZiNVx1NzZkZFx1Nzc1NVx1Nzc1Zlx1Nzc2MFx1Nzc1Mlx1Nzc1Nlx1Nzc1YVx1Nzc2OVx1Nzc2N1x1Nzc1NFx1Nzc1OVx1Nzc2ZFx1NzdlMFx1Nzg4N1x1Nzg5YVx1Nzg5NFx1Nzg4Zlx1Nzg4NFx1Nzg5NVx1Nzg4''@;'; put 'put ''NVx1Nzg4Nlx1NzhhMVx1Nzg4M1x1Nzg3OVx1Nzg5OVx1Nzg4MFx1Nzg5Nlx1Nzg3Ylx1Nzk3Y1x1Nzk4Mlx1Nzk3ZFx1Nzk3OVx1N2ExMVx1N2ExOFx1N2ExOVx1N2ExMlx1N2ExN1x1N2ExNVx1N2EyMlx1N2ExM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyMl0ubGVuZ3RoOysrdik2''@;'; put 'put ''NTUzMyE9PWtbMjIyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjJdW3ZdXT01NjgzMit2LFRbNTY4MzIrdl09a1syMjJdW3ZdKTtmb3Ioa1syMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMWJcdTdhMTBcdTdhYTNcdTdh''@;'; put 'put ''YTJcdTdhOWVcdTdhZWJcdTdiNjZcdTdiNjRcdTdiNmRcdTdiNzRcdTdiNjlcdTdiNzJcdTdiNjVcdTdiNzNcdTdiNzFcdTdiNzBcdTdiNjFcdTdiNzhcdTdiNzZcdTdiNjNcdTdjYjJcdTdjYjRcdTdjYWZcdTdkODhcdTdkODZcdTdkODBcdTdkOGRcdTdkN2ZcdTdkODVcdTdkN2FcdTdkOGVc''@;'; put 'put ''dTdkN2JcdTdkODNcdTdkN2NcdTdkOGNcdTdkOTRcdTdkODRcdTdkN2RcdTdkOTJcdTdmNmRcdTdmNmJcdTdmNjdcdTdmNjhcdTdmNmNcdTdmYTZcdTdmYTVcdTdmYTdcdTdmZGJcdTdmZGNcdTgwMjFcdTgxNjRcdTgxNjBcdTgxNzdcdTgxNWNcdTgxNjlcdTgxNWJcdTgxNjJcdTgxNzJcdTY3''@;'; put 'put ''MjFcdTgxNWVcdTgxNzZcdTgxNjdcdTgxNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDRcdTgxNjFcdTgyMWRcdTgyNDlcdTgyNDRcdTgyNDBcdTgyNDJcdTgyNDVcdTg0ZjFcdTg0M2ZcdTg0NTZcdTg0NzZcdTg0NzlcdTg0OGZcdTg0OGRcdTg0NjVcdTg0''@;'; put 'put ''NTFcdTg0NDBcdTg0ODZcdTg0NjdcdTg0MzBcdTg0NGRcdTg0N2RcdTg0NWFcdTg0NTlcdTg0NzRcdTg0NzNcdTg0NWRcdTg1MDdcdTg0NWVcdTg0MzdcdTg0M2FcdTg0MzRcdTg0N2FcdTg0NDNcdTg0NzhcdTg0MzJcdTg0NDVcdTg0MjlcdTgzZDlcdTg0NGJcdTg0MmZcdTg0NDJcdTg0MmRc''@;'; put 'put ''dTg0NWZcdTg0NzBcdTg0MzlcdTg0NGVcdTg0NGNcdTg0NTJcdTg0NmZcdTg0YzVcdTg0OGVcdTg0M2JcdTg0NDdcdTg0MzZcdTg0MzNcdTg0NjhcdTg0N2VcdTg0NDRcdTg0MmJcdTg0NjBcdTg0NTRcdTg0NmVcdTg0NTBcdTg3MGJcdTg3MDRcdTg2ZjdcdTg3MGNcdTg2ZmFcdTg2ZDZcdTg2''@;'; put 'put ''ZjVcdTg3NGRcdTg2ZjhcdTg3MGVcdTg3MDlcdTg3MDFcdTg2ZjZcdTg3MGRcdTg3MDVcdTg4ZDZcdTg4Y2JcdTg4Y2RcdTg4Y2VcdTg4ZGVcdTg4ZGJcdTg4ZGFcdTg4Y2NcdTg4ZDBcdTg5ODVcdTg5OWJcdTg5ZGZcdTg5ZTVcdTg5ZTRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjNd''@;'; put 'put ''Lmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyM11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjIzXVt2XV09NTcwODgrdixUWzU3MDg4K3ZdPWtbMjIzXVt2XSk7Zm9yKGtbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OWUxXHU4''@;'; put 'put ''OWUwXHU4OWUyXHU4OWRjXHU4OWU2XHU4YTc2XHU4YTg2XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4Yzg1XHU4Y2NjXHU4ZDY4''@;'; put 'put ''XHU4ZDY5XHU4ZDkxXHU4ZDhjXHU4ZDhlXHU4ZDhmXHU4ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZmXHU4ZjAxXHU4ZjAwXHU4''@;'; put 'put ''ZjA1XHU4ZjA3XHU4ZjA4XHU4ZjAyXHU4ZjBiXHU5MDUyXHU5MDNmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZlXHU5MTZmXHU5MjQ4XHU5''@;'; put 'put ''MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1XHU5MjVlXHU5MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZjXHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5MjRlXHU5MjUzXHU5MjRj''@;'; put 'put ''XHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5NTliXHU5NjkyXHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5XHU5OWFmXHU5OWIyXHU5''@;'; put 'put ''OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2VhXHU5Y2VkXHU5Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''dj0wO3YhPWtbMjI0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyNF1bdl1dPTU3MzQ0K3YsVFs1NzM0NCt2XT1rWzIyNF1bdl0pO2ZvcihrWzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NTFkOFx1NTI4MFx1NTI4MVx1NTJlOVx1NTJlYlx1NTMzMFx1NTNhY1x1NTYyN1x1NTYxNVx1NTYwY1x1NTYxMlx1NTVmY1x1NTYwZlx1NTYxY1x1NTYwMVx1NTYxM1x1NTYwMlx1NTVmYVx1NTYxZFx1NTYwNFx1NTVmZlx1NTVmOVx1NTg4OVx1NTg3Y1x1NTg5MFx1NTg5OFx1NTg4''@;'; put 'put ''Nlx1NTg4MVx1NTg3Zlx1NTg3NFx1NTg4Ylx1NTg3YVx1NTg4N1x1NTg5MVx1NTg4ZVx1NTg3Nlx1NTg4Mlx1NTg4OFx1NTg3Ylx1NTg5NFx1NTg4Zlx1NThmZVx1NTk2Ylx1NWFkY1x1NWFlZVx1NWFlNVx1NWFkNVx1NWFlYVx1NWFkYVx1NWFlZFx1NWFlYlx1NWFmM1x1NWFlMlx1NWFlMFx1''@;'; put 'put ''NWFkYlx1NWFlY1x1NWFkZVx1NWFkZFx1NWFkOVx1NWFlOFx1NWFkZlx1NWI3N1x1NWJlMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJlM1x1NWM2M1x1NWQ4Mlx1NWQ4MFx1NWQ3ZFx1NWQ4Nlx1NWQ3YVx1NWQ4MVx1NWQ3N1x1NWQ4YVx1NWQ4OVx1NWQ4OFx1''@;'; put 'put ''NWQ3ZVx1NWQ3Y1x1NWQ4ZFx1NWQ3OVx1NWQ3Zlx1NWU1OFx1NWU1OVx1NWU1M1x1NWVkOFx1NWVkMVx1NWVkN1x1NWVjZVx1NWVkY1x1NWVkNVx1NWVkOVx1NWVkMlx1NWVkNFx1NWY0NFx1NWY0M1x1NWY2Zlx1NWZiNlx1NjEyY1x1NjEyOFx1NjE0MVx1NjE1ZVx1NjE3MVx1NjE3M1x1NjE1''@;'; put 'put ''Mlx1NjE1M1x1NjE3Mlx1NjE2Y1x1NjE4MFx1NjE3NFx1NjE1NFx1NjE3YVx1NjE1Ylx1NjE2NVx1NjEzYlx1NjE2YVx1NjE2MVx1NjE1Nlx1NjIyOVx1NjIyN1x1NjIyYlx1NjQyYlx1NjQ0ZFx1NjQ1Ylx1NjQ1ZFx1NjQ3NFx1NjQ3Nlx1NjQ3Mlx1NjQ3M1x1NjQ3ZFx1NjQ3NVx1NjQ2Nlx1''@;'; put 'put ''NjRhNlx1NjQ0ZVx1NjQ4Mlx1NjQ1ZVx1NjQ1Y1x1NjQ0Ylx1NjQ1M1x1NjQ2MFx1NjQ1MFx1NjQ3Zlx1NjQzZlx1NjQ2Y1x1NjQ2Ylx1NjQ1OVx1NjQ2NVx1NjQ3N1x1NjU3M1x1NjVhMFx1NjZhMVx1NjZhMFx1NjY5Zlx1NjcwNVx1NjcwNFx1NjcyMlx1NjliMVx1NjliNlx1NjljOVx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyNV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjVdW3ZdXT01NzYwMCt2LFRbNTc2MDArdl09a1syMjVdW3ZdKTtmb3Ioa1syMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTY5YTBcdTY5Y2VcdTY5OTZcdTY5YjBcdTY5YWNcdTY5YmNcdTY5OTFcdTY5OTlcdTY5OGVcdTY5YTdcdTY5OGRcdTY5YTlcdTY5YmVcdTY5YWZcdTY5YmZcdTY5YzRcdTY5YmRcdTY5YTRcdTY5ZDRcdTY5YjlcdTY5Y2FcdTY5OWFcdTY5Y2ZcdTY5YjNcdTY5''@;'; put 'put ''OTNcdTY5YWFcdTY5YTFcdTY5OWVcdTY5ZDlcdTY5OTdcdTY5OTBcdTY5YzJcdTY5YjVcdTY5YTVcdTY5YzZcdTZiNGFcdTZiNGRcdTZiNGJcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYzNcdTZiYzRcdTZiZmVcdTZlY2VcdTZlZjVcdTZlZjFcdTZmMDNcdTZmMjVcdTZlZjhcdTZmMzdcdTZlZmJc''@;'; put 'put ''dTZmMmVcdTZmMDlcdTZmNGVcdTZmMTlcdTZmMWFcdTZmMjdcdTZmMThcdTZmM2JcdTZmMTJcdTZlZWRcdTZmMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmMzZcdTZmNzNcdTZlZjlcdTZlZWVcdTZmMmRcdTZmNDBcdTZmMzBcdTZmM2NcdTZmMzVcdTZlZWJc''@;'; put 'put ''dTZmMDdcdTZmMGVcdTZmNDNcdTZmMDVcdTZlZmRcdTZlZjZcdTZmMzlcdTZmMWNcdTZlZmNcdTZmM2FcdTZmMWZcdTZmMGRcdTZmMWVcdTZmMDhcdTZmMjFcdTcxODdcdTcxOTBcdTcxODlcdTcxODBcdTcxODVcdTcxODJcdTcxOGZcdTcxN2JcdTcxODZcdTcxODFcdTcxOTdcdTcyNDRcdTcy''@;'; put 'put ''NTNcdTcyOTdcdTcyOTVcdTcyOTNcdTczNDNcdTczNGRcdTczNTFcdTczNGNcdTc0NjJcdTc0NzNcdTc0NzFcdTc0NzVcdTc0NzJcdTc0NjdcdTc0NmVcdTc1MDBcdTc1MDJcdTc1MDNcdTc1N2RcdTc1OTBcdTc2MTZcdTc2MDhcdTc2MGNcdTc2MTVcdTc2MTFcdTc2MGFcdTc2MTRcdTc2Yjhc''@;'; put 'put ''dTc3ODFcdTc3N2NcdTc3ODVcdTc3ODJcdTc3NmVcdTc3ODBcdTc3NmZcdTc3N2VcdTc3ODNcdTc4YjJcdTc4YWFcdTc4YjRcdTc4YWRcdTc4YThcdTc4N2VcdTc4YWJcdTc4OWVcdTc4YTVcdTc4YTBcdTc4YWNcdTc4YTJcdTc4YTRcdTc5OThcdTc5OGFcdTc5OGJcdTc5OTZcdTc5OTVcdTc5''@;'; put 'put ''OTRcdTc5OTNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyNl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI2XVt2XV09NTc4NTYrdixUWzU3ODU2K3ZdPWtbMjI2XVt2XSk7Zm9yKGtbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTk3XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4XHU3YjljXHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2XHU3YjhkXHU3YjhjXHU3''@;'; put 'put ''YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3ZDlkXHU3ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3ZGNjXHU3ZGFmXHU3ZGI5''@;'; put 'put ''XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3ZmRlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2XHU4MTgzXHU4MTg3XHU4MThk''@;'; put 'put ''XHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGExXHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4NGEyXHU4NDk0XHU4NGM3XHU4''@;'; put 'put ''NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQyXHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIxXHU4NzE5XHU4NzFiXHU4NzQz''@;'; put 'put ''XHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMyXHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4OGYyXHU4OGZhXHU4OGZlXHU4''@;'; put 'put ''OGVlXHU4OGZjXHU4OGY2XHU4OGZiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyN11bdl1dPTU4MTEyK3YsVFs1ODExMit2XT1rWzIyN11bdl0pO2ZvcihrWzIyOF09Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODhmMFx1ODhlY1x1ODhlYlx1ODk5ZFx1ODlhMVx1ODk5Zlx1ODk5ZVx1ODllOVx1ODllYlx1ODllOFx1OGFhYlx1OGE5OVx1OGE4Ylx1OGE5Mlx1OGE4Zlx1OGE5Nlx1OGMzZFx1OGM2OFx1OGM2OVx1OGNkNVx1''@;'; put 'put ''OGNjZlx1OGNkN1x1OGQ5Nlx1OGUwOVx1OGUwMlx1OGRmZlx1OGUwZFx1OGRmZFx1OGUwYVx1OGUwM1x1OGUwN1x1OGUwNlx1OGUwNVx1OGRmZVx1OGUwMFx1OGUwNFx1OGYxMFx1OGYxMVx1OGYwZVx1OGYwZFx1OTEyM1x1OTExY1x1OTEyMFx1OTEyMlx1OTExZlx1OTExZFx1OTExYVx1OTEy''@;'; put 'put ''NFx1OTEyMVx1OTExYlx1OTE3YVx1OTE3Mlx1OTE3OVx1OTE3M1x1OTJhNVx1OTJhNFx1OTI3Nlx1OTI5Ylx1OTI3YVx1OTJhMFx1OTI5NFx1OTJhYVx1OTI4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhNlx1OTI5YVx1OTJhYlx1OTI3OVx1OTI5N1x1OTI3''@;'; put 'put ''Zlx1OTJhM1x1OTJlZVx1OTI4ZVx1OTI4Mlx1OTI5NVx1OTJhMlx1OTI3ZFx1OTI4OFx1OTJhMVx1OTI4YVx1OTI4Nlx1OTI4Y1x1OTI5OVx1OTJhN1x1OTI3ZVx1OTI4N1x1OTJhOVx1OTI5ZFx1OTI4Ylx1OTIyZFx1OTY5ZVx1OTZhMVx1OTZmZlx1OTc1OFx1OTc3ZFx1OTc3YVx1OTc3ZVx1''@;'; put 'put ''OTc4M1x1OTc4MFx1OTc4Mlx1OTc3Ylx1OTc4NFx1OTc4MVx1OTc3Zlx1OTdjZVx1OTdjZFx1OTgxNlx1OThhZFx1OThhZVx1OTkwMlx1OTkwMFx1OTkwN1x1OTk5ZFx1OTk5Y1x1OTljM1x1OTliOVx1OTliYlx1OTliYVx1OTljMlx1OTliZFx1OTljN1x1OWFiMVx1OWFlM1x1OWFlN1x1OWIz''@;'; put 'put ''ZVx1OWIzZlx1OWI2MFx1OWI2MVx1OWI1Zlx1OWNmMVx1OWNmMlx1OWNmNVx1OWVhN1x1NTBmZlx1NTEwM1x1NTEzMFx1NTBmOFx1NTEwNlx1NTEwN1x1NTBmNlx1NTBmZVx1NTEwYlx1NTEwY1x1NTBmZFx1NTEwYVx1NTI4Ylx1NTI4Y1x1NTJmMVx1NTJlZlx1NTY0OFx1NTY0Mlx1NTY0Y1x1''@;'; put 'put ''NTYzNVx1NTY0MVx1NTY0YVx1NTY0OVx1NTY0Nlx1NTY1OFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyOF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjhdW3ZdXT01ODM2OCt2LFRbNTgzNjgrdl09a1syMjhdW3ZdKTtmb3Ioa1syMjld''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2NWFcdTU2NDBcdTU2MzNcdTU2M2RcdTU2MmNcdTU2M2VcdTU2MzhcdTU2MmFcdTU2M2FcdTU3MWFcdTU4YWJcdTU4OWRcdTU4YjFcdTU4YTBcdTU4YTNcdTU4YWZcdTU4YWNcdTU4YTVc''@;'; put 'put ''dTU4YTFcdTU4ZmZcdTVhZmZcdTVhZjRcdTVhZmRcdTVhZjdcdTVhZjZcdTViMDNcdTVhZjhcdTViMDJcdTVhZjlcdTViMDFcdTViMDdcdTViMDVcdTViMGZcdTVjNjdcdTVkOTlcdTVkOTdcdTVkOWZcdTVkOTJcdTVkYTJcdTVkOTNcdTVkOTVcdTVkYTBcdTVkOWNcdTVkYTFcdTVkOWFcdTVk''@;'; put 'put ''OWVcdTVlNjlcdTVlNWRcdTVlNjBcdTVlNWNcdTdkZjNcdTVlZGJcdTVlZGVcdTVlZTFcdTVmNDlcdTVmYjJcdTYxOGJcdTYxODNcdTYxNzlcdTYxYjFcdTYxYjBcdTYxYTJcdTYxODlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxOWJcdTYxOTNcdTYxYWZcdTYx''@;'; put 'put ''YWRcdTYxOWZcdTYxOTJcdTYxYWFcdTYxYTFcdTYxOGRcdTYxNjZcdTYxYjNcdTYyMmRcdTY0NmVcdTY0NzBcdTY0OTZcdTY0YTBcdTY0ODVcdTY0OTdcdTY0OWNcdTY0OGZcdTY0OGJcdTY0OGFcdTY0OGNcdTY0YTNcdTY0OWZcdTY0NjhcdTY0YjFcdTY0OThcdTY1NzZcdTY1N2FcdTY1Nzlc''@;'; put 'put ''dTY1N2JcdTY1YjJcdTY1YjNcdTY2YjVcdTY2YjBcdTY2YTlcdTY2YjJcdTY2YjdcdTY2YWFcdTY2YWZcdTZhMDBcdTZhMDZcdTZhMTdcdTY5ZTVcdTY5ZjhcdTZhMTVcdTY5ZjFcdTY5ZTRcdTZhMjBcdTY5ZmZcdTY5ZWNcdTY5ZTJcdTZhMWJcdTZhMWRcdTY5ZmVcdTZhMjdcdTY5ZjJcdTY5''@;'; put 'put ''ZWVcdTZhMTRcdTY5ZjdcdTY5ZTdcdTZhNDBcdTZhMDhcdTY5ZTZcdTY5ZmJcdTZhMGRcdTY5ZmNcdTY5ZWJcdTZhMDlcdTZhMDRcdTZhMThcdTZhMjVcdTZhMGZcdTY5ZjZcdTZhMjZcdTZhMDdcdTY5ZjRcdTZhMTZcdTZiNTFcdTZiYTVcdTZiYTNcdTZiYTJcdTZiYTZcdTZjMDFcdTZjMDBc''@;'; put 'put ''dTZiZmZcdTZjMDJcdTZmNDFcdTZmMjZcdTZmN2VcdTZmODdcdTZmYzZcdTZmOTJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyOV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI5XVt2XV09NTg2MjQrdixUWzU4NjI0K3ZdPWtbMjI5XVt2''@;'; put 'put ''XSk7Zm9yKGtbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZjhkXHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2ZjUyXHU2ZjUwXHU2ZjU3''@;'; put 'put ''XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2ZjhiXHU2ZjY5XHU2ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5XHU3MWI1XHU3MTlkXHU3''@;'; put 'put ''MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3MzUyXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzYyXHU3''@;'; put 'put ''NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdlXHU3NjI1XHU3NjFlXHU3NjE5XHU3NjFkXHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3NjliXHU3NzhkXHU3Nzhm''@;'; put 'put ''XHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3OGM5XHU3OTlhXHU3OWExXHU3OWEwXHU3OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3XHU3YmNiXHU3YmJlXHU3''@;'; put 'put ''YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVhXHU3ZGU3XHU3ZGQ3XHU3ZGUxXHU3ZTAzXHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3ZmFjXHU3ZmIwXHU3ZmFk''@;'; put 'put ''XHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4MDY0XHU4MDY3XHU4MWEzXHU4MTlmXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzMF1bdl1dPTU4ODgwK3YsVFs1ODg4''@;'; put 'put ''MCt2XT1rWzIzMF1bdl0pO2ZvcihrWzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE5ZVx1ODE5NVx1ODFhMlx1ODE5OVx1ODE5N1x1ODIxNlx1ODI0Zlx1ODI1M1x1ODI1Mlx1ODI1MFx1ODI0ZVx1ODI1MVx1ODUyNFx1ODUz''@;'; put 'put ''Ylx1ODUwZlx1ODUwMFx1ODUyOVx1ODUwZVx1ODUwOVx1ODUwZFx1ODUxZlx1ODUwYVx1ODUyN1x1ODUxY1x1ODRmYlx1ODUyYlx1ODRmYVx1ODUwOFx1ODUwY1x1ODRmNFx1ODUyYVx1ODRmMlx1ODUxNVx1ODRmN1x1ODRlYlx1ODRmM1x1ODRmY1x1ODUxMlx1ODRlYVx1ODRlOVx1ODUxNlx1''@;'; put 'put ''ODRmZVx1ODUyOFx1ODUxZFx1ODUyZVx1ODUwMlx1ODRmZFx1ODUxZVx1ODRmNlx1ODUzMVx1ODUyNlx1ODRlN1x1ODRlOFx1ODRmMFx1ODRlZlx1ODRmOVx1ODUxOFx1ODUyMFx1ODUzMFx1ODUwYlx1ODUxOVx1ODUyZlx1ODY2Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ODc1Nlx1ODc2M1x1ODc2NFx1ODc3N1x1ODdlMVx1ODc3M1x1ODc1OFx1ODc1NFx1ODc1Ylx1ODc1Mlx1ODc2MVx1ODc1YVx1ODc1MVx1ODc1ZVx1ODc2ZFx1ODc2YVx1ODc1MFx1ODc0ZVx1ODc1Zlx1ODc1ZFx1ODc2Zlx1ODc2Y1x1ODc3YVx1ODc2ZVx1ODc1Y1x1ODc2NVx1ODc0''@;'; put 'put ''Zlx1ODc3Ylx1ODc3NVx1ODc2Mlx1ODc2N1x1ODc2OVx1ODg1YVx1ODkwNVx1ODkwY1x1ODkxNFx1ODkwYlx1ODkxN1x1ODkxOFx1ODkxOVx1ODkwNlx1ODkxNlx1ODkxMVx1ODkwZVx1ODkwOVx1ODlhMlx1ODlhNFx1ODlhM1x1ODllZFx1ODlmMFx1ODllY1x1OGFjZlx1OGFjNlx1OGFiOFx1''@;'; put 'put ''OGFkM1x1OGFkMVx1OGFkNFx1OGFkNVx1OGFiYlx1OGFkN1x1OGFiZVx1OGFjMFx1OGFjNVx1OGFkOFx1OGFjM1x1OGFiYVx1OGFiZFx1OGFkOVx1OGMzZVx1OGM0ZFx1OGM4Zlx1OGNlNVx1OGNkZlx1OGNkOVx1OGNlOFx1OGNkYVx1OGNkZFx1OGNlN1x1OGRhMFx1OGQ5Y1x1OGRhMVx1OGQ5''@;'; put 'put ''Ylx1OGUyMFx1OGUyM1x1OGUyNVx1OGUyNFx1OGUyZVx1OGUxNVx1OGUxYlx1OGUxNlx1OGUxMVx1OGUxOVx1OGUyNlx1OGUyN1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzFdW3ZdXT01''@;'; put 'put ''OTEzNit2LFRbNTkxMzYrdl09a1syMzFdW3ZdKTtmb3Ioa1syMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlMTRcdThlMTJcdThlMThcdThlMTNcdThlMWNcdThlMTdcdThlMWFcdThmMmNcdThmMjRcdThmMThcdThmMWFcdThm''@;'; put 'put ''MjBcdThmMjNcdThmMTZcdThmMTdcdTkwNzNcdTkwNzBcdTkwNmZcdTkwNjdcdTkwNmJcdTkxMmZcdTkxMmJcdTkxMjlcdTkxMmFcdTkxMzJcdTkxMjZcdTkxMmVcdTkxODVcdTkxODZcdTkxOGFcdTkxODFcdTkxODJcdTkxODRcdTkxODBcdTkyZDBcdTkyYzNcdTkyYzRcdTkyYzBcdTkyZDlc''@;'; put 'put ''dTkyYjZcdTkyY2ZcdTkyZjFcdTkyZGZcdTkyZDhcdTkyZTlcdTkyZDdcdTkyZGRcdTkyY2NcdTkyZWZcdTkyYzJcdTkyZThcdTkyY2FcdTkyYzhcdTkyY2VcdTkyZTZcdTkyY2RcdTkyZDVcdTkyYzlcdTkyZTBcdTkyZGVcdTkyZTdcdTkyZDFcdTkyZDNcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTkyYjVcdTkyZTFcdTkyYzZcdTkyYjRcdTk1N2NcdTk1YWNcdTk1YWJcdTk1YWVcdTk1YjBcdTk2YTRcdTk2YTJcdTk2ZDNcdTk3MDVcdTk3MDhcdTk3MDJcdTk3NWFcdTk3OGFcdTk3OGVcdTk3ODhcdTk3ZDBcdTk3Y2ZcdTk4MWVcdTk4MWRcdTk4MjZcdTk4''@;'; put 'put ''MjlcdTk4MjhcdTk4MjBcdTk4MWJcdTk4MjdcdTk4YjJcdTk5MDhcdTk4ZmFcdTk5MTFcdTk5MTRcdTk5MTZcdTk5MTdcdTk5MTVcdTk5ZGNcdTk5Y2RcdTk5Y2ZcdTk5ZDNcdTk5ZDRcdTk5Y2VcdTk5YzlcdTk5ZDZcdTk5ZDhcdTk5Y2JcdTk5ZDdcdTk5Y2NcdTlhYjNcdTlhZWNcdTlhZWJc''@;'; put 'put ''dTlhZjNcdTlhZjJcdTlhZjFcdTliNDZcdTliNDNcdTliNjdcdTliNzRcdTliNzFcdTliNjZcdTliNzZcdTliNzVcdTliNzBcdTliNjhcdTliNjRcdTliNmNcdTljZmNcdTljZmFcdTljZmRcdTljZmZcdTljZjdcdTlkMDdcdTlkMDBcdTljZjlcdTljZmJcdTlkMDhcdTlkMDVcdTlkMDRcdTll''@;'; put 'put ''ODNcdTllZDNcdTlmMGZcdTlmMTBcdTUxMWNcdTUxMTNcdTUxMTdcdTUxMWFcdTUxMTFcdTUxZGVcdTUzMzRcdTUzZTFcdTU2NzBcdTU2NjBcdTU2NmVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMjMyXVt2XV09NTkzOTIrdixUWzU5MzkyK3ZdPWtbMjMyXVt2XSk7Zm9yKGtbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3XHU1NzFjXHU1NzFiXHU1''@;'; put 'put ''OGM4XHU1OGJkXHU1OGM5XHU1OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1ZGI1XHU1ZGIwXHU1ZGFl''@;'; put 'put ''XHU1ZGFhXHU1ZGE4XHU1ZGIyXHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNjXHU2MWJhXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MWJmXHU2MWI4XHU2MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJlXHU2NmMwXHU2NmNhXHU2''@;'; put 'put ''NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIzXHU2YTM0XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2YTY0XHU2YTUwXHU2YTRm''@;'; put 'put ''XHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2YTU2XHU2YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEzXHU2ZmM3XHU2ZmJjXHU2''@;'; put 'put ''ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNhXHU2ZmE4XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFjXHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzNdW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzIzM11bdl1dPTU5NjQ4K3YsVFs1OTY0OCt2XT1rWzIzM11bdl0pO2ZvcihrWzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZhMlx1NmZjOVx1NmZhYlx1NmZjZFx1NmZhZlx1NmZiMlx1NmZiMFx1''@;'; put 'put ''NzFjNVx1NzFjMlx1NzFiZlx1NzFiOFx1NzFkNlx1NzFjMFx1NzFjMVx1NzFjYlx1NzFkNFx1NzFjYVx1NzFjN1x1NzFjZlx1NzFiZFx1NzFkOFx1NzFiY1x1NzFjNlx1NzFkYVx1NzFkYlx1NzI5ZFx1NzI5ZVx1NzM2OVx1NzM2Nlx1NzM2N1x1NzM2Y1x1NzM2NVx1NzM2Ylx1NzM2YVx1NzQ3''@;'; put 'put ''Zlx1NzQ5YVx1NzRhMFx1NzQ5NFx1NzQ5Mlx1NzQ5NVx1NzRhMVx1NzUwYlx1NzU4MFx1NzYyZlx1NzYyZFx1NzYzMVx1NzYzZFx1NzYzM1x1NzYzY1x1NzYzNVx1NzYzMlx1NzYzMFx1NzZiYlx1NzZlNlx1Nzc5YVx1Nzc5ZFx1NzdhMVx1Nzc5Y1x1Nzc5Ylx1NzdhMlx1NzdhM1x1Nzc5NVx1''@;'; put 'put ''Nzc5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc5N1x1NzhkZFx1NzhlOVx1NzhlNVx1NzhlYVx1NzhkZVx1NzhlM1x1NzhkYlx1NzhlMVx1NzhlMlx1NzhlZFx1NzhkZlx1NzhlMFx1NzlhNFx1N2E0NFx1N2E0OFx1N2E0N1x1N2FiNlx1N2FiOFx1N2FiNVx1''@;'; put 'put ''N2FiMVx1N2FiN1x1N2JkZVx1N2JlM1x1N2JlN1x1N2JkZFx1N2JkNVx1N2JlNVx1N2JkYVx1N2JlOFx1N2JmOVx1N2JkNFx1N2JlYVx1N2JlMlx1N2JkY1x1N2JlYlx1N2JkOFx1N2JkZlx1N2NkMlx1N2NkNFx1N2NkN1x1N2NkMFx1N2NkMVx1N2UxMlx1N2UyMVx1N2UxN1x1N2UwY1x1N2Ux''@;'; put 'put ''Zlx1N2UyMFx1N2UxM1x1N2UwZVx1N2UxY1x1N2UxNVx1N2UxYVx1N2UyMlx1N2UwYlx1N2UwZlx1N2UxNlx1N2UwZFx1N2UxNFx1N2UyNVx1N2UyNFx1N2Y0M1x1N2Y3Ylx1N2Y3Y1x1N2Y3YVx1N2ZiMVx1N2ZlZlx1ODAyYVx1ODAyOVx1ODA2Y1x1ODFiMVx1ODFhNlx1ODFhZVx1ODFiOVx1''@;'; put 'put ''ODFiNVx1ODFhYlx1ODFiMFx1ODFhY1x1ODFiNFx1ODFiMlx1ODFiN1x1ODFhN1x1ODFmMlx1ODI1NVx1ODI1Nlx1ODI1N1x1ODU1Nlx1ODU0NVx1ODU2Ylx1ODU0ZFx1ODU1M1x1ODU2MVx1ODU1OFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtb''@;'; put 'put ''MjM0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzRdW3ZdXT01OTkwNCt2LFRbNTk5MDQrdl09a1syMzRdW3ZdKTtmb3Ioa1syMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NDBcdTg1NDZcdTg1NjRcdTg1NDFcdTg1NjJc''@;'; put 'put ''dTg1NDRcdTg1NTFcdTg1NDdcdTg1NjNcdTg1M2VcdTg1NWJcdTg1NzFcdTg1NGVcdTg1NmVcdTg1NzVcdTg1NTVcdTg1NjdcdTg1NjBcdTg1OGNcdTg1NjZcdTg1NWRcdTg1NTRcdTg1NjVcdTg1NmNcdTg2NjNcdTg2NjVcdTg2NjRcdTg3OWJcdTg3OGZcdTg3OTdcdTg3OTNcdTg3OTJcdTg3''@;'; put 'put ''ODhcdTg3ODFcdTg3OTZcdTg3OThcdTg3NzlcdTg3ODdcdTg3YTNcdTg3ODVcdTg3OTBcdTg3OTFcdTg3OWRcdTg3ODRcdTg3OTRcdTg3OWNcdTg3OWFcdTg3ODlcdTg5MWVcdTg5MjZcdTg5MzBcdTg5MmRcdTg5MmVcdTg5MjdcdTg5MzFcdTg5MjJcdTg5MjlcdTg5MjNcdTg5MmZcdTg5MmNc''@;'; put 'put ''dTg5MWZcdTg5ZjFcdThhZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTJcdThhZjJcdThhZjRcdThhZjVcdThhZGRcdThiMTRcdThhZTRcdThhZGZcdThhZjBcdThhYzhcdThhZGVcdThhZTFcdThhZThcdThhZmZcdThhZWZcdThhZmJcdThjOTFcdThjOTJc''@;'; put 'put ''dThjOTBcdThjZjVcdThjZWVcdThjZjFcdThjZjBcdThjZjNcdThkNmNcdThkNmVcdThkYTVcdThkYTdcdThlMzNcdThlM2VcdThlMzhcdThlNDBcdThlNDVcdThlMzZcdThlM2NcdThlM2RcdThlNDFcdThlMzBcdThlM2ZcdThlYmRcdThmMzZcdThmMmVcdThmMzVcdThmMzJcdThmMzlcdThm''@;'; put 'put ''MzdcdThmMzRcdTkwNzZcdTkwNzlcdTkwN2JcdTkwODZcdTkwZmFcdTkxMzNcdTkxMzVcdTkxMzZcdTkxOTNcdTkxOTBcdTkxOTFcdTkxOGRcdTkxOGZcdTkzMjdcdTkzMWVcdTkzMDhcdTkzMWZcdTkzMDZcdTkzMGZcdTkzN2FcdTkzMzhcdTkzM2NcdTkzMWJcdTkzMjNcdTkzMTJcdTkzMDFc''@;'; put 'put ''dTkzNDZcdTkzMmRcdTkzMGVcdTkzMGRcdTkyY2JcdTkzMWRcdTkyZmFcdTkzMjVcdTkzMTNcdTkyZjlcdTkyZjdcdTkzMzRcdTkzMDJcdTkzMjRcdTkyZmZcdTkzMjlcdTkzMzlcdTkzMzVcdTkzMmFcdTkzMTRcdTkzMGNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzVdLmxlbmd0aDsr''@;'; put 'put ''K3YpNjU1MzMhPT1rWzIzNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM1XVt2XV09NjAxNjArdixUWzYwMTYwK3ZdPWtbMjM1XVt2XSk7Zm9yKGtbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzBiXHU5MmZlXHU5MzA5''@;'; put 'put ''XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5N2YwXHU5N2Y4XHU5ODM1XHU5ODJmXHU5ODMyXHU5OTI0XHU5OTFmXHU5''@;'; put 'put ''OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYwXHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMzXHU5YjgwXHU5Yjg1XHU5Yjg3XHU5YjdjXHU5YjdlXHU5YjdiXHU5Yjgy''@;'; put 'put ''XHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjdkXHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5ZDFmXHU5ZTg4XHU5ZTg2''@;'; put 'put ''XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1NjgxXHU1OGQ2XHU1OGQ0XHU1''@;'; put 'put ''OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYxXHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2MWU0XHU2MWU4XHU2MWRl''@;'; put 'put ''XHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtb''@;'; put 'put ''MjM2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzNl1bdl1dPTYwNDE2K3YsVFs2MDQxNit2XT1rWzIzNl1bdl0pO2ZvcihrWzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE5''@;'; put 'put ''NVx1NmE4M1x1NmFhOFx1NmFhNFx1NmE5MVx1NmE3Zlx1NmFhNlx1NmE5YVx1NmE4NVx1NmE4Y1x1NmE5Mlx1NmI1Ylx1NmJhZFx1NmMwOVx1NmZjY1x1NmZhOVx1NmZmNFx1NmZkNFx1NmZlM1x1NmZkY1x1NmZlZFx1NmZlN1x1NmZlNlx1NmZkZVx1NmZmMlx1NmZkZFx1NmZlMlx1NmZlOFx1''@;'; put 'put ''NzFlMVx1NzFmMVx1NzFlOFx1NzFmMlx1NzFlNFx1NzFmMFx1NzFlMlx1NzM3M1x1NzM2ZVx1NzM2Zlx1NzQ5N1x1NzRiMlx1NzRhYlx1NzQ5MFx1NzRhYVx1NzRhZFx1NzRiMVx1NzRhNVx1NzRhZlx1NzUxMFx1NzUxMVx1NzUxMlx1NzUwZlx1NzU4NFx1NzY0M1x1NzY0OFx1NzY0OVx1NzY0''@;'; put 'put ''N1x1NzZhNFx1NzZlOVx1NzdiNVx1NzdhYlx1NzdiMlx1NzdiN1x1NzdiNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdiNFx1NzdiMVx1NzdhOFx1NzdmMFx1NzhmM1x1NzhmZFx1NzkwMlx1NzhmYlx1NzhmY1x1NzhmMlx1NzkwNVx1NzhmOVx1NzhmZVx1Nzkw''@;'; put 'put ''NFx1NzlhYlx1NzlhOFx1N2E1Y1x1N2E1Ylx1N2E1Nlx1N2E1OFx1N2E1NFx1N2E1YVx1N2FiZVx1N2FjMFx1N2FjMVx1N2MwNVx1N2MwZlx1N2JmMlx1N2MwMFx1N2JmZlx1N2JmYlx1N2MwZVx1N2JmNFx1N2MwYlx1N2JmM1x1N2MwMlx1N2MwOVx1N2MwM1x1N2MwMVx1N2JmOFx1N2JmZFx1''@;'; put 'put ''N2MwNlx1N2JmMFx1N2JmMVx1N2MxMFx1N2MwYVx1N2NlOFx1N2UyZFx1N2UzY1x1N2U0Mlx1N2UzM1x1OTg0OFx1N2UzOFx1N2UyYVx1N2U0OVx1N2U0MFx1N2U0N1x1N2UyOVx1N2U0Y1x1N2UzMFx1N2UzYlx1N2UzNlx1N2U0NFx1N2UzYVx1N2Y0NVx1N2Y3Zlx1N2Y3ZVx1N2Y3ZFx1N2Zm''@;'; put 'put ''NFx1N2ZmMlx1ODAyY1x1ODFiYlx1ODFjNFx1ODFjY1x1ODFjYVx1ODFjNVx1ODFjN1x1ODFiY1x1ODFlOVx1ODI1Ylx1ODI1YVx1ODI1Y1x1ODU4M1x1ODU4MFx1ODU4Zlx1ODVhN1x1ODU5NVx1ODVhMFx1ODU4Ylx1ODVhM1x1ODU3Ylx1ODVhNFx1ODU5YVx1ODU5ZVx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLHY9MDt2IT1rWzIzN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjM3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzddW3ZdXT02MDY3Mit2LFRbNjA2NzIrdl09a1syMzddW3ZdKTtmb3Ioa1syMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTg1NzdcdTg1N2NcdTg1ODlcdTg1YTFcdTg1N2FcdTg1NzhcdTg1NTdcdTg1OGVcdTg1OTZcdTg1ODZcdTg1OGRcdTg1OTlcdTg1OWRcdTg1ODFcdTg1YTJcdTg1ODJcdTg1ODhcdTg1ODVcdTg1NzlcdTg1NzZcdTg1OThcdTg1OTBcdTg1OWZcdTg2NjhcdTg3YmVcdTg3YWFc''@;'; put 'put ''dTg3YWRcdTg3YzVcdTg3YjBcdTg3YWNcdTg3YjlcdTg3YjVcdTg3YmNcdTg3YWVcdTg3YzlcdTg3YzNcdTg3YzJcdTg3Y2NcdTg3YjdcdTg3YWZcdTg3YzRcdTg3Y2FcdTg3YjRcdTg3YjZcdTg3YmZcdTg3YjhcdTg3YmRcdTg3ZGVcdTg3YjJcdTg5MzVcdTg5MzNcdTg5M2NcdTg5M2VcdTg5''@;'; put 'put ''NDFcdTg5NTJcdTg5MzdcdTg5NDJcdTg5YWRcdTg5YWZcdTg5YWVcdTg5ZjJcdTg5ZjNcdThiMWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiMThcdThiMTZcdThiMTFcdThiMDVcdThiMGJcdThiMjJcdThiMGZcdThiMTJcdThiMTVcdThiMDdcdThiMGRcdThi''@;'; put 'put ''MDhcdThiMDZcdThiMWNcdThiMTNcdThiMWFcdThjNGZcdThjNzBcdThjNzJcdThjNzFcdThjNmZcdThjOTVcdThjOTRcdThjZjlcdThkNmZcdThlNGVcdThlNGRcdThlNTNcdThlNTBcdThlNGNcdThlNDdcdThmNDNcdThmNDBcdTkwODVcdTkwN2VcdTkxMzhcdTkxOWFcdTkxYTJcdTkxOWJc''@;'; put 'put ''dTkxOTlcdTkxOWZcdTkxYTFcdTkxOWRcdTkxYTBcdTkzYTFcdTkzODNcdTkzYWZcdTkzNjRcdTkzNTZcdTkzNDdcdTkzN2NcdTkzNThcdTkzNWNcdTkzNzZcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNjBcdTkzNmRcdTkzOGZcdTkzNGNcdTkzNmFcdTkzNzlcdTkzNTdcdTkzNTVcdTkzNTJcdTkz''@;'; put 'put ''NGZcdTkzNzFcdTkzNzdcdTkzN2JcdTkzNjFcdTkzNWVcdTkzNjNcdTkzNjdcdTkzODBcdTkzNGVcdTkzNTlcdTk1YzdcdTk1YzBcdTk1YzlcdTk1YzNcdTk1YzVcdTk1YjdcdTk2YWVcdTk2YjBcdTk2YWNcdTk3MjBcdTk3MWZcdTk3MThcdTk3MWRcdTk3MTlcdTk3OWFcdTk3YTFcdTk3OWNc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM4XVt2XV09NjA5MjgrdixUWzYwOTI4K3ZdPWtbMjM4XVt2XSk7Zm9yKGtbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5N2YxXHU5ODQxXHU5ODQ0XHU5ODRhXHU5ODQ5XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5OTk4XHU5OWEzXHU5OWEx''@;'; put 'put ''XHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZiXHU5OWZkXHU5OWZlXHU5OWZjXHU5YTAzXHU5YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1XHU5YmE0XHU5Yjg2XHU5''@;'; put 'put ''YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNkXHU3ZmY1XHU5ZDJkXHU5''@;'; put 'put ''ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEwXHU1MTMxXHU1MTJkXHU1MTJlXHU1Njk4XHU1NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1YzZhXHU1ZGMwXHU1ZTZk''@;'; put 'put ''XHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYwXHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2NTA0XHU2NGZkXHU2NGY4XHU2NTAxXHU2NTAzXHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5XHU2YWJkXHU2YWUxXHU2''@;'; put 'put ''YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBkXHU3MDAxXHU3MDA1XHU3MDE0XHU3MDBlXHU2ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3MWZmXHU3MWY5XHU3MjAz''@;'; put 'put ''XHU3MWZkXHU3Mzc2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzOV1bdl1dPTYxMTg0K3YsVFs2MTE4NCt2XT1rWzIzOV1bdl0pO2ZvcihrWzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRiOFx1NzRjMFx1NzRiNVx1NzRjMVx1NzRiZVx1NzRiNlx1NzRiYlx1NzRjMlx1NzUxNFx1NzUxM1x1NzY1Y1x1NzY2NFx1NzY1OVx1NzY1MFx1NzY1M1x1NzY1N1x1NzY1YVx1NzZhNlx1NzZiZFx1NzZlY1x1NzdjMlx1Nzdi''@;'; put 'put ''YVx1NzhmZlx1NzkwY1x1NzkxM1x1NzkxNFx1NzkwOVx1NzkxMFx1NzkxMlx1NzkxMVx1NzlhZFx1NzlhY1x1N2E1Zlx1N2MxY1x1N2MyOVx1N2MxOVx1N2MyMFx1N2MxZlx1N2MyZFx1N2MxZFx1N2MyNlx1N2MyOFx1N2MyMlx1N2MyNVx1N2MzMFx1N2U1Y1x1N2U1MFx1N2U1Nlx1N2U2M1x1''@;'; put 'put ''N2U1OFx1N2U2Mlx1N2U1Zlx1N2U1MVx1N2U2MFx1N2U1N1x1N2U1M1x1N2ZiNVx1N2ZiM1x1N2ZmN1x1N2ZmOFx1ODA3NVx1ODFkMVx1ODFkMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFkMFx1ODI1Zlx1ODI1ZVx1ODViNFx1ODVjNlx1ODVjMFx1ODVjM1x1''@;'; put 'put ''ODVjMlx1ODViM1x1ODViNVx1ODViZFx1ODVjN1x1ODVjNFx1ODViZlx1ODVjYlx1ODVjZVx1ODVjOFx1ODVjNVx1ODViMVx1ODViNlx1ODVkMlx1ODYyNFx1ODViOFx1ODViN1x1ODViZVx1ODY2OVx1ODdlN1x1ODdlNlx1ODdlMlx1ODdkYlx1ODdlYlx1ODdlYVx1ODdlNVx1ODdkZlx1ODdm''@;'; put 'put ''M1x1ODdlNFx1ODdkNFx1ODdkY1x1ODdkM1x1ODdlZFx1ODdkOFx1ODdlM1x1ODdhNFx1ODdkN1x1ODdkOVx1ODgwMVx1ODdmNFx1ODdlOFx1ODdkZFx1ODk1M1x1ODk0Ylx1ODk0Zlx1ODk0Y1x1ODk0Nlx1ODk1MFx1ODk1MVx1ODk0OVx1OGIyYVx1OGIyN1x1OGIyM1x1OGIzM1x1OGIzMFx1''@;'; put 'put ''OGIzNVx1OGI0N1x1OGIyZlx1OGIzY1x1OGIzZVx1OGIzMVx1OGIyNVx1OGIzN1x1OGIyNlx1OGIzNlx1OGIyZVx1OGIyNFx1OGIzYlx1OGIzZFx1OGIzYVx1OGM0Mlx1OGM3NVx1OGM5OVx1OGM5OFx1OGM5N1x1OGNmZVx1OGQwNFx1OGQwMlx1OGQwMFx1OGU1Y1x1OGU2Mlx1OGU2MFx1OGU1''@;'; put 'put ''N1x1OGU1Nlx1OGU1ZVx1OGU2NVx1OGU2N1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0MF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDBdW3ZdXT02MTQ0MCt2LFRbNjE0NDArdl09a1syNDBdW3ZdKTtmb3Ioa1syNDFdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNWJcdThlNWFcdThlNjFcdThlNWRcdThlNjlcdThlNTRcdThmNDZcdThmNDdcdThmNDhcdThmNGJcdTkxMjhcdTkxM2FcdTkxM2JcdTkxM2VcdTkxYThcdTkxYTVcdTkxYTdcdTkxYWZcdTkxYWFcdTkz''@;'; put 'put ''YjVcdTkzOGNcdTkzOTJcdTkzYjdcdTkzOWJcdTkzOWRcdTkzODlcdTkzYTdcdTkzOGVcdTkzYWFcdTkzOWVcdTkzYTZcdTkzOTVcdTkzODhcdTkzOTlcdTkzOWZcdTkzOGRcdTkzYjFcdTkzOTFcdTkzYjJcdTkzYTRcdTkzYThcdTkzYjRcdTkzYTNcdTkzYTVcdTk1ZDJcdTk1ZDNcdTk1ZDFc''@;'; put 'put ''dTk2YjNcdTk2ZDdcdTk2ZGFcdTVkYzJcdTk2ZGZcdTk2ZDhcdTk2ZGRcdTk3MjNcdTk3MjJcdTk3MjVcdTk3YWNcdTk3YWVcdTk3YThcdTk3YWJcdTk3YTRcdTk3YWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3YTJcdTk3YTVcdTk3ZDdcdTk3ZDlcdTk3ZDZc''@;'; put 'put ''dTk3ZDhcdTk3ZmFcdTk4NTBcdTk4NTFcdTk4NTJcdTk4YjhcdTk5NDFcdTk5M2NcdTk5M2FcdTlhMGZcdTlhMGJcdTlhMDlcdTlhMGRcdTlhMDRcdTlhMTFcdTlhMGFcdTlhMDVcdTlhMDdcdTlhMDZcdTlhYzBcdTlhZGNcdTliMDhcdTliMDRcdTliMDVcdTliMjlcdTliMzVcdTliNGFcdTli''@;'; put 'put ''NGNcdTliNGJcdTliYzdcdTliYzZcdTliYzNcdTliYmZcdTliYzFcdTliYjVcdTliYjhcdTliZDNcdTliYjZcdTliYzRcdTliYjlcdTliYmRcdTlkNWNcdTlkNTNcdTlkNGZcdTlkNGFcdTlkNWJcdTlkNGJcdTlkNTlcdTlkNTZcdTlkNGNcdTlkNTdcdTlkNTJcdTlkNTRcdTlkNWZcdTlkNThc''@;'; put 'put ''dTlkNWFcdTllOGVcdTllOGNcdTllZGZcdTlmMDFcdTlmMDBcdTlmMTZcdTlmMjVcdTlmMmJcdTlmMmFcdTlmMjlcdTlmMjhcdTlmNGNcdTlmNTVcdTUxMzRcdTUxMzVcdTUyOTZcdTUyZjdcdTUzYjRcdTU2YWJcdTU2YWRcdTU2YTZcdTU2YTdcdTU2YWFcdTU2YWNcdTU4ZGFcdTU4ZGRcdTU4''@;'; put 'put ''ZGJcdTU5MTJcdTViM2RcdTViM2VcdTViM2ZcdTVkYzNcdTVlNzBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0MV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQxXVt2XV09NjE2OTYrdixUWzYxNjk2K3ZdPWtbMjQxXVt2XSk7Zm9yKGtb''@;'; put 'put ''MjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZmJmXHU2MWZiXHU2NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNjXHU2YWQxXHU2YWQ5XHU2''@;'; put 'put ''YWNiXHU2YWRmXHU2YWRjXHU2YWQwXHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYwXHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3MjBhXHU3MjA3XHU3MjAy''@;'; put 'put ''XHU3MjA1XHU3MmE1XHU3MmE2XHU3MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTIxXHU3OTFjXHU3OTE3''@;'; put 'put ''XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5XHU3YzJjXHU3YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2XHU3ZmI3XHU3ZmZkXHU3''@;'; put 'put ''ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4NWViXHU4NWYxXHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4NWVmXHU4NWRlXHU4NWUy''@;'; put 'put ''XHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBjXHU4ODBiXHU4ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3XHU4OWI2XHU4OWY2XHU4''@;'; put 'put ''YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4YjRiXHU4YjU1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0Ml1bdl1dPTYxOTUyK3YsVFs2MTk1Mit2XT1rWzI0''@;'; put 'put ''Ml1bdl0pO2ZvcihrWzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI1MVx1OGI0Mlx1OGI1Mlx1OGI1N1x1OGM0M1x1OGM3N1x1OGM3Nlx1OGM5YVx1OGQwNlx1OGQwN1x1OGQwOVx1OGRhY1x1OGRhYVx1OGRhZFx1OGRhYlx1''@;'; put 'put ''OGU2ZFx1OGU3OFx1OGU3M1x1OGU2YVx1OGU2Zlx1OGU3Ylx1OGVjMlx1OGY1Mlx1OGY1MVx1OGY0Zlx1OGY1MFx1OGY1M1x1OGZiNFx1OTE0MFx1OTEzZlx1OTFiMFx1OTFhZFx1OTNkZVx1OTNjN1x1OTNjZlx1OTNjMlx1OTNkYVx1OTNkMFx1OTNmOVx1OTNlY1x1OTNjY1x1OTNkOVx1OTNh''@;'; put 'put ''OVx1OTNlNlx1OTNjYVx1OTNkNFx1OTNlZVx1OTNlM1x1OTNkNVx1OTNjNFx1OTNjZVx1OTNjMFx1OTNkMlx1OTNlN1x1OTU3ZFx1OTVkYVx1OTVkYlx1OTZlMVx1OTcyOVx1OTcyYlx1OTcyY1x1OTcyOFx1OTcyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTdi''@;'; put 'put ''M1x1OTdiN1x1OTdiNlx1OTdkZFx1OTdkZVx1OTdkZlx1OTg1Y1x1OTg1OVx1OTg1ZFx1OTg1N1x1OThiZlx1OThiZFx1OThiYlx1OThiZVx1OTk0OFx1OTk0N1x1OTk0M1x1OTlhNlx1OTlhN1x1OWExYVx1OWExNVx1OWEyNVx1OWExZFx1OWEyNFx1OWExYlx1OWEyMlx1OWEyMFx1OWEyN1x1''@;'; put 'put ''OWEyM1x1OWExZVx1OWExY1x1OWExNFx1OWFjMlx1OWIwYlx1OWIwYVx1OWIwZVx1OWIwY1x1OWIzN1x1OWJlYVx1OWJlYlx1OWJlMFx1OWJkZVx1OWJlNFx1OWJlNlx1OWJlMlx1OWJmMFx1OWJkNFx1OWJkN1x1OWJlY1x1OWJkY1x1OWJkOVx1OWJlNVx1OWJkNVx1OWJlMVx1OWJkYVx1OWQ3''@;'; put 'put ''N1x1OWQ4MVx1OWQ4YVx1OWQ4NFx1OWQ4OFx1OWQ3MVx1OWQ4MFx1OWQ3OFx1OWQ4Nlx1OWQ4Ylx1OWQ4Y1x1OWQ3ZFx1OWQ2Ylx1OWQ3NFx1OWQ3NVx1OWQ3MFx1OWQ2OVx1OWQ4NVx1OWQ3M1x1OWQ3Ylx1OWQ4Mlx1OWQ2Zlx1OWQ3OVx1OWQ3Zlx1OWQ4N1x1OWQ2OFx1OWU5NFx1OWU5MVx1''@;'; put 'put ''OWVjMFx1OWVmY1x1OWYyZFx1OWY0MFx1OWY0MVx1OWY0ZFx1OWY1Nlx1OWY1N1x1OWY1OFx1NTMzN1x1NTZiMlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0M10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDNdW3ZdXT02MjIwOCt2LFRb''@;'; put 'put ''NjIyMDgrdl09a1syNDNdW3ZdKTtmb3Ioa1syNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2YjVcdTU2YjNcdTU4ZTNcdTViNDVcdTVkYzZcdTVkYzdcdTVlZWVcdTVlZWZcdTVmYzBcdTVmYzFcdTYxZjlcdTY1MTdcdTY1MTZc''@;'; put 'put ''dTY1MTVcdTY1MTNcdTY1ZGZcdTY2ZThcdTY2ZTNcdTY2ZTRcdTZhZjNcdTZhZjBcdTZhZWFcdTZhZThcdTZhZjlcdTZhZjFcdTZhZWVcdTZhZWZcdTcwM2NcdTcwMzVcdTcwMmZcdTcwMzdcdTcwMzRcdTcwMzFcdTcwNDJcdTcwMzhcdTcwM2ZcdTcwM2FcdTcwMzlcdTcwNDBcdTcwM2JcdTcw''@;'; put 'put ''MzNcdTcwNDFcdTcyMTNcdTcyMTRcdTcyYThcdTczN2RcdTczN2NcdTc0YmFcdTc2YWJcdTc2YWFcdTc2YmVcdTc2ZWRcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3Y2RcdTc3ZjJcdTc5MjVcdTc5MjNcdTc5MjdcdTc5MjhcdTc5MjRcdTc5MjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTc5YjJcdTdhNmVcdTdhNmNcdTdhNmRcdTdhZjdcdTdjNDlcdTdjNDhcdTdjNGFcdTdjNDdcdTdjNDVcdTdjZWVcdTdlN2JcdTdlN2VcdTdlODFcdTdlODBcdTdmYmFcdTdmZmZcdTgwNzlcdTgxZGJcdTgxZDlcdTgyMGJcdTgyNjhcdTgyNjlcdTg2MjJcdTg1ZmZcdTg2MDFc''@;'; put 'put ''dTg1ZmVcdTg2MWJcdTg2MDBcdTg1ZjZcdTg2MDRcdTg2MDlcdTg2MDVcdTg2MGNcdTg1ZmRcdTg4MTlcdTg4MTBcdTg4MTFcdTg4MTdcdTg4MTNcdTg4MTZcdTg5NjNcdTg5NjZcdTg5YjlcdTg5ZjdcdThiNjBcdThiNmFcdThiNWRcdThiNjhcdThiNjNcdThiNjVcdThiNjdcdThiNmRcdThk''@;'; put 'put ''YWVcdThlODZcdThlODhcdThlODRcdThmNTlcdThmNTZcdThmNTdcdThmNTVcdThmNThcdThmNWFcdTkwOGRcdTkxNDNcdTkxNDFcdTkxYjdcdTkxYjVcdTkxYjJcdTkxYjNcdTk0MGJcdTk0MTNcdTkzZmJcdTk0MjBcdTk0MGZcdTk0MTRcdTkzZmVcdTk0MTVcdTk0MTBcdTk0MjhcdTk0MTlc''@;'; put 'put ''dTk0MGRcdTkzZjVcdTk0MDBcdTkzZjdcdTk0MDdcdTk0MGVcdTk0MTZcdTk0MTJcdTkzZmFcdTk0MDlcdTkzZjhcdTk0MGFcdTkzZmZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0NF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQ0XVt2''@;'; put 'put ''XV09NjI0NjQrdixUWzYyNDY0K3ZdPWtbMjQ0XVt2XSk7Zm9yKGtbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5NDA2XHU5NWRlXHU5NWUwXHU5NWRmXHU5NzJlXHU5NzJmXHU5N2I5''@;'; put 'put ''XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMyXHU5OTUwXHU5OTRlXHU5OTU5XHU5OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2XHU5YTI5XHU5YTJlXHU5YTM4XHU5YTJkXHU5YWM3XHU5YWNhXHU5''@;'; put 'put ''YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5YmY4XHU5YzQwXHU5YzA3XHU5YzBlXHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5ZDkyXHU5ZDk4XHU5ZDkwXHU5ZDliXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5ZWU3XHU5ZWU2XHU5ZjMw''@;'; put 'put ''XHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4XHU2YjAwXHU3MDQzXHU3''@;'; put 'put ''MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3MzdlXHU3NTE3XHU3NjZhXHU3N2QwXHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3ZjRkXHU3ZmJiXHU4MDMw''@;'; put 'put ''XHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3XHU4NjJlXHU4NjIxXHU4NjIwXHU4NjI5XHU4NjFlXHU4NjI1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDVdW3ZdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihzZVtrWzI0NV1bdl1dPTYyNzIwK3YsVFs2MjcyMCt2XT1rWzI0NV1bdl0pO2ZvcihrWzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODgyOVx1ODgxZFx1ODgxYlx1ODgyMFx1ODgyNFx1ODgxY1x1ODgyYlx1ODg0YVx1ODk2''@;'; put 'put ''ZFx1ODk2OVx1ODk2ZVx1ODk2Ylx1ODlmYVx1OGI3OVx1OGI3OFx1OGI0NVx1OGI3YVx1OGI3Ylx1OGQxMFx1OGQxNFx1OGRhZlx1OGU4ZVx1OGU4Y1x1OGY1ZVx1OGY1Ylx1OGY1ZFx1OTE0Nlx1OTE0NFx1OTE0NVx1OTFiOVx1OTQzZlx1OTQzYlx1OTQzNlx1OTQyOVx1OTQzZFx1OTQzY1x1''@;'; put 'put ''OTQzMFx1OTQzOVx1OTQyYVx1OTQzN1x1OTQyY1x1OTQ0MFx1OTQzMVx1OTVlNVx1OTVlNFx1OTVlM1x1OTczNVx1OTczYVx1OTdiZlx1OTdlMVx1OTg2NFx1OThjOVx1OThjNlx1OThjMFx1OTk1OFx1OTk1Nlx1OWEzOVx1OWEzZFx1OWE0Nlx1OWE0NFx1OWE0Mlx1OWE0MVx1OWEzYVx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWEzZlx1OWFjZFx1OWIxNVx1OWIxN1x1OWIxOFx1OWIxNlx1OWIzYVx1OWI1Mlx1OWMyYlx1OWMxZFx1OWMxY1x1OWMyY1x1OWMyM1x1OWMyOFx1OWMyOVx1OWMyNFx1OWMyMVx1OWRiN1x1OWRiNlx1OWRiY1x1OWRjMVx1OWRj''@;'; put 'put ''N1x1OWRjYVx1OWRjZlx1OWRiZVx1OWRjNVx1OWRjM1x1OWRiYlx1OWRiNVx1OWRjZVx1OWRiOVx1OWRiYVx1OWRhY1x1OWRjOFx1OWRiMVx1OWRhZFx1OWRjY1x1OWRiM1x1OWRjZFx1OWRiMlx1OWU3YVx1OWU5Y1x1OWVlYlx1OWVlZVx1OWVlZFx1OWYxYlx1OWYxOFx1OWYxYVx1OWYzMVx1''@;'; put 'put ''OWY0ZVx1OWY2NVx1OWY2NFx1OWY5Mlx1NGViOVx1NTZjNlx1NTZjNVx1NTZjYlx1NTk3MVx1NWI0Ylx1NWI0Y1x1NWRkNVx1NWRkMVx1NWVmMlx1NjUyMVx1NjUyMFx1NjUyNlx1NjUyMlx1NmIwYlx1NmIwOFx1NmIwOVx1NmMwZFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1Mlx1NzIxZVx1NzIx''@;'; put 'put ''Zlx1NzJhOVx1NzM3Zlx1NzRkOFx1NzRkNVx1NzRkOVx1NzRkN1x1NzY2ZFx1NzZhZFx1NzkzNVx1NzliNFx1N2E3MFx1N2E3MVx1N2M1N1x1N2M1Y1x1N2M1OVx1N2M1Ylx1N2M1YVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ2XVt2XS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoc2Vba1syNDZdW3ZdXT02Mjk3Nit2LFRbNjI5NzYrdl09a1syNDZdW3ZdKTtmb3Ioa1syNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjZjRcdTdjZjFcdTdlOTFcdTdmNGZcdTdmODdcdTgxZGVcdTgy''@;'; put 'put ''NmJcdTg2MzRcdTg2MzVcdTg2MzNcdTg2MmNcdTg2MzJcdTg2MzZcdTg4MmNcdTg4MjhcdTg4MjZcdTg4MmFcdTg4MjVcdTg5NzFcdTg5YmZcdTg5YmVcdTg5ZmJcdThiN2VcdThiODRcdThiODJcdThiODZcdThiODVcdThiN2ZcdThkMTVcdThlOTVcdThlOTRcdThlOWFcdThlOTJcdThlOTBc''@;'; put 'put ''dThlOTZcdThlOTdcdThmNjBcdThmNjJcdTkxNDdcdTk0NGNcdTk0NTBcdTk0NGFcdTk0NGJcdTk0NGZcdTk0NDdcdTk0NDVcdTk0NDhcdTk0NDlcdTk0NDZcdTk3M2ZcdTk3ZTNcdTk4NmFcdTk4NjlcdTk4Y2JcdTk5NTRcdTk5NWJcdTlhNGVcdTlhNTNcdTlhNTRcdTlhNGNcdTlhNGZcdTlh''@;'; put 'put ''NDhcdTlhNGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhNDlcdTlhNTJcdTlhNTBcdTlhZDBcdTliMTlcdTliMmJcdTliM2JcdTliNTZcdTliNTVcdTljNDZcdTljNDhcdTljM2ZcdTljNDRcdTljMzlcdTljMzNcdTljNDFcdTljM2NcdTljMzdcdTljMzRcdTlj''@;'; put 'put ''MzJcdTljM2RcdTljMzZcdTlkZGJcdTlkZDJcdTlkZGVcdTlkZGFcdTlkY2JcdTlkZDBcdTlkZGNcdTlkZDFcdTlkZGZcdTlkZTlcdTlkZDlcdTlkZDhcdTlkZDZcdTlkZjVcdTlkZDVcdTlkZGRcdTllYjZcdTllZjBcdTlmMzVcdTlmMzNcdTlmMzJcdTlmNDJcdTlmNmJcdTlmOTVcdTlmYTJc''@;'; put 'put ''dTUxM2RcdTUyOTlcdTU4ZThcdTU4ZTdcdTU5NzJcdTViNGRcdTVkZDhcdTg4MmZcdTVmNGZcdTYyMDFcdTYyMDNcdTYyMDRcdTY1MjlcdTY1MjVcdTY1OTZcdTY2ZWJcdTZiMTFcdTZiMTJcdTZiMGZcdTZiY2FcdTcwNWJcdTcwNWFcdTcyMjJcdTczODJcdTczODFcdTczODNcdTc2NzBcdTc3''@;'; put 'put ''ZDRcdTdjNjdcdTdjNjZcdTdlOTVcdTgyNmNcdTg2M2FcdTg2NDBcdTg2MzlcdTg2M2NcdTg2MzFcdTg2M2JcdTg2M2VcdTg4MzBcdTg4MzJcdTg4MmVcdTg4MzNcdTg5NzZcdTg5NzRcdTg5NzNcdTg5ZmVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDddLmxlbmd0aDsrK3YpNjU1MzMh''@;'; put 'put ''PT1rWzI0N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQ3XVt2XV09NjMyMzIrdixUWzYzMjMyK3ZdPWtbMjQ3XVt2XSk7Zm9yKGtbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjhjXHU4YjhlXHU4YjhiXHU4Yjg4XHU4''@;'; put 'put ''YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3XHU5NDVlXHU5N2M0XHU5N2M1XHU5ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5YzU1XHU5YzU5XHU5YzRj''@;'; put 'put ''XHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5ZGUxXHU5ZGVlXHU5ZGU2XHU5ZGYyXHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2XHU5ZjFjXHU5ZjM4XHU5''@;'; put 'put ''ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjcxXHU5ZjcwXHU5ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1YjRlXHU1YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVkXHU3MDYwXHU3MjIzXHU3''@;'; put 'put ''NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZkXHU4NjQzXHU4ODM4XHU4ODM3XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1XHU4ZTllXHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5NDY4XHU5NDY5XHU5NmU1''@;'; put 'put ''XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5YzY3XHU5YzY2XHU5YzYyXHU5YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5ZTA3XHU5ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZkXHU5ZTA0XHU5ZWEwXHU5''@;'; put 'put ''ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5XHU2YjE3XHU2YjFhXHU3MDYyXHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5XHU3OTM5XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ4XS5sZW5n''@;'; put 'put ''dGg7Kyt2KTY1NTMzIT09a1syNDhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0OF1bdl1dPTYzNDg4K3YsVFs2MzQ4OCt2XT1rWzI0OF1bdl0pO2ZvcihrWzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U5OFx1N2U5Ylx1''@;'; put 'put ''N2U5OVx1ODFlMFx1ODFlMVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ODk3Ylx1ODlmZlx1OGI5OFx1OGI5OVx1OGVhNVx1OGVhNFx1OGVhM1x1OTQ2ZVx1OTQ2ZFx1OTQ2Zlx1OTQ3MVx1OTQ3M1x1OTc0OVx1OTg3Mlx1OTk1Zlx1OWM2OFx1OWM2ZVx1OWM2ZFx1OWUw''@;'; put 'put ''Ylx1OWUwZFx1OWUxMFx1OWUwZlx1OWUxMlx1OWUxMVx1OWVhMVx1OWVmNVx1OWYwOVx1OWY0N1x1OWY3OFx1OWY3Ylx1OWY3YVx1OWY3OVx1NTcxZVx1NzA2Nlx1N2M2Zlx1ODgzY1x1OGRiMlx1OGVhNlx1OTFjM1x1OTQ3NFx1OTQ3OFx1OTQ3Nlx1OTQ3NVx1OWE2MFx1OWM3NFx1OWM3M1x1''@;'; put 'put ''OWM3MVx1OWM3NVx1OWUxNFx1OWUxM1x1OWVmNlx1OWYwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWZhNFx1NzA2OFx1NzA2NVx1N2NmN1x1ODY2YVx1ODgzZVx1ODgzZFx1ODgzZlx1OGI5ZVx1OGM5Y1x1OGVhOVx1OGVjOVx1OTc0Ylx1OTg3M1x1OTg3NFx1''@;'; put 'put ''OThjY1x1OTk2MVx1OTlhYlx1OWE2NFx1OWE2Nlx1OWE2N1x1OWIyNFx1OWUxNVx1OWUxN1x1OWY0OFx1NjIwN1x1NmIxZVx1NzIyN1x1ODY0Y1x1OGVhOFx1OTQ4Mlx1OTQ4MFx1OTQ4MVx1OWE2OVx1OWE2OFx1OWIyZVx1OWUxOVx1NzIyOVx1ODY0Ylx1OGI5Zlx1OTQ4M1x1OWM3OVx1OWVi''@;'; put 'put ''N1x1NzY3NVx1OWE2Ylx1OWM3YVx1OWUxZFx1NzA2OVx1NzA2YVx1OWVhNFx1OWY3ZVx1OWY0OVx1OWY5OFx1Nzg4MVx1OTJiOVx1ODhjZlx1NThiYlx1NjA1Mlx1N2NhN1x1NWFmYVx1MjU1NFx1MjU2Nlx1MjU1N1x1MjU2MFx1MjU2Y1x1MjU2M1x1MjU1YVx1MjU2OVx1MjU1ZFx1MjU1Mlx1''@;'; put 'put ''MjU2NFx1MjU1NVx1MjU1ZVx1MjU2YVx1MjU2MVx1MjU1OFx1MjU2N1x1MjU1Ylx1MjU1M1x1MjU2NVx1MjU1Nlx1MjU1Zlx1MjU2Ylx1MjU2Mlx1MjU1OVx1MjU2OFx1MjU1Y1x1MjU1MVx1MjU1MFx1MjU2ZFx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU5M1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2''@;'; put 'put ''IT1rWzI0OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDldW3ZdXT02Mzc0NCt2LFRbNjM3NDQrdl09a1syNDldW3ZdKTtyZXR1cm57ZW5jOnNlLGRlYzpUfX0oKSx6ZVsxMjUwXT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4''@;'; put 'put ''MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xc''@;'; put 'put ''XV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNWFcdTAxNjRcdTAxN2RcdTAxNzlcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRc''@;'; put 'put ''dTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNWJcdTAxNjVcdTAxN2VcdTAxN2FceGEwXHUwMmM3XHUwMmQ4XHUwMTQxXHhhNFx1MDEwNFx4YTZceGE3XHhhOFx4YTlcdTAxNWVceGFiXHhhY1x4YWRceGFlXHUwMTdiXHhiMFx4YjFcdTAyZGJcdTAxNDJceGI0''@;'; put 'put ''XHhiNVx4YjZceGI3XHhiOFx1MDEwNVx1MDE1Zlx4YmJcdTAxM2RcdTAyZGRcdTAxM2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1MDE0N1x4ZDNceGQ0XHUw''@;'; put 'put ''MTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhceGYzXHhmNFx1MDE1MVx4''@;'; put 'put ''ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5IixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVb''@;'; put 'put ''MTI1MV09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1''@;'; put 'put ''Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUwNDAyXHUwNDAzXHUyMDFhXHUwNDUzXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUyMGFjXHUyMDMwXHUwNDA5XHUyMDM5XHUwNDBhXHUwNDBjXHUw''@;'; put 'put ''NDBiXHUwNDBmXHUwNDUyXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHUwNDU5XHUyMDNhXHUwNDVhXHUwNDVjXHUwNDViXHUwNDVmXHhhMFx1MDQwZVx1MDQ1ZVx1MDQwOFx4YTRcdTA0OTBceGE2XHhhN1x1MDQwMVx4YTlcdTA0MDRceGFi''@;'; put 'put ''XHhhY1x4YWRceGFlXHUwNDA3XHhiMFx4YjFcdTA0MDZcdTA0NTZcdTA0OTFceGI1XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0NTRceGJiXHUwNDU4XHUwNDA1XHUwNDU1XHUwNDU3XHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUw''@;'; put 'put ''NDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1''@;'; put 'put ''XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmIixzZT1bXSxr''@;'; put 'put ''PXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMTI1Ml09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgw''@;'; put 'put ''N1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHUwMTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0''@;'; put 'put ''XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNc''@;'; put 'put ''eGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4''@;'; put 'put ''ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJB''@;'; put 'put ''dCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMTI1M109ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdc''@;'; put 'put ''eDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUy''@;'; put 'put ''MDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx1''@;'; put 'put ''MDM4NVx1MDM4Nlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdWZmZmRceGFiXHhhY1x4YWRceGFlXHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1MDM4NFx4YjVceGI2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUw''@;'; put 'put ''MzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2Fl''@;'; put 'put ''XHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUw''@;'; put 'put ''M2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMTI1NF09ZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNE''@;'; put 'put ''RUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHVmZmZkXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhi''@;'; put 'put ''Mlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTFlXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4''@;'; put 'put ''ZGJceGRjXHUwMTMwXHUwMTVlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMWZceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxMzFcdTAxNWZceGZmIixzZT1bXSxr''@;'; put 'put ''PXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMTI1NV09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgw''@;'; put 'put ''N1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0''@;'; put 'put ''XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhhN1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4ZjdceGJiXHhi''@;'; put 'put ''Y1x4YmRceGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1ZmZmZFx1MDViYlx1MDViY1x1MDViZFx1MDViZVx1MDViZlx1MDVjMFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVmMlx1MDVmM1x1MDVmNFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVl''@;'; put 'put ''NFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntl''@;'; put 'put ''bmM6ayxkZWM6c2V9fSgpLHplWzEyNTZdPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwi''@;'; put 'put ''IyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1MDY3ZVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDY3OVx1''@;'; put 'put ''MjAzOVx1MDE1Mlx1MDY4Nlx1MDY5OFx1MDY4OFx1MDZhZlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDZhOVx1MjEyMlx1MDY5MVx1MjAzYVx1MDE1M1x1MjAwY1x1MjAwZFx1MDZiYVx4YTBcdTA2MGNceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhh''@;'; put 'put ''OVx1MDZiZVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx1MDYxYlx4YmJceGJjXHhiZFx4YmVcdTA2MWZcdTA2YzFcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2''@;'; put 'put ''MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZceGQ3XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHhlMFx1MDY0NFx4ZTJcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhceGU3XHhl''@;'; put 'put ''OFx4ZTlceGVhXHhlYlx1MDY0OVx1MDY0YVx4ZWVceGVmXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHhmNFx1MDY0Zlx1MDY1MFx4ZjdcdTA2NTFceGY5XHUwNjUyXHhmYlx4ZmNcdTIwMGVcdTIwMGZcdTA2ZDIiLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2Rl''@;'; put 'put ''QXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVsxMjU3XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEz''@;'; put 'put ''XHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIw''@;'; put 'put ''MWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRceGE4XHUwMmM3XHhiOFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx4YWZcdTAyZGJc''@;'; put 'put ''dWZmZmRceGEwXHVmZmZkXHhhMlx4YTNceGE0XHVmZmZkXHhhNlx4YTdceGQ4XHhhOVx1MDE1Nlx4YWJceGFjXHhhZFx4YWVceGM2XHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGY4XHhiOVx1MDE1N1x4YmJceGJjXHhiZFx4YmVceGU2XHUwMTA0XHUwMTJlXHUwMTAwXHUwMTA2''@;'; put 'put ''XHhjNFx4YzVcdTAxMThcdTAxMTJcdTAxMGNceGM5XHUwMTc5XHUwMTE2XHUwMTIyXHUwMTM2XHUwMTJhXHUwMTNiXHUwMTYwXHUwMTQzXHUwMTQ1XHhkM1x1MDE0Y1x4ZDVceGQ2XHhkN1x1MDE3Mlx1MDE0MVx1MDE1YVx1MDE2YVx4ZGNcdTAxN2JcdTAxN2RceGRmXHUwMTA1XHUwMTJmXHUw''@;'; put 'put ''MTAxXHUwMTA3XHhlNFx4ZTVcdTAxMTlcdTAxMTNcdTAxMGRceGU5XHUwMTdhXHUwMTE3XHUwMTIzXHUwMTM3XHUwMTJiXHUwMTNjXHUwMTYxXHUwMTQ0XHUwMTQ2XHhmM1x1MDE0ZFx4ZjVceGY2XHhmN1x1MDE3M1x1MDE0Mlx1MDE1Ylx1MDE2Ylx4ZmNcdTAxN2NcdTAxN2VcdTAyZDkiLHNl''@;'; put 'put ''PVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVsxMjU4XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4''@;'; put 'put ''MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdo''@;'; put 'put ''aWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNc''@;'; put 'put ''dTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJi''@;'; put 'put ''XHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhl''@;'; put 'put ''MVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1''@;'; put 'put ''NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMWU0XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZc''@;'; put 'put ''eDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2Zc''@;'; put 'put ''eGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4''@;'; put 'put ''YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAy''@;'; put 'put ''Nlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZiMDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4''@;'; put 'put ''YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihr''@;'; put 'put ''W1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVsxMDAwNl09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1''@;'; put 'put ''XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4YjlceGIyXHhjOVx4YjNceGQ2''@;'; put 'put ''XHhkY1x1MDM4NVx4ZTBceGUyXHhlNFx1MDM4NFx4YThceGU3XHhlOVx4ZThceGVhXHhlYlx4YTNcdTIxMjJceGVlXHhlZlx1MjAyMlx4YmRcdTIwMzBceGY0XHhmNlx4YTZceGFkXHhmOVx4ZmJceGZjXHUyMDIwXHUwMzkzXHUwMzk0XHUwMzk4XHUwMzliXHUwMzllXHUwM2EwXHhkZlx4YWVc''@;'; put 'put ''eGE5XHUwM2EzXHUwM2FhXHhhN1x1MjI2MFx4YjBcdTAzODdcdTAzOTFceGIxXHUyMjY0XHUyMjY1XHhhNVx1MDM5Mlx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OVx1MDM5YVx1MDM5Y1x1MDNhNlx1MDNhYlx1MDNhOFx1MDNhOVx1MDNhY1x1MDM5ZFx4YWNcdTAzOWZcdTAzYTFcdTIyNDhcdTAz''@;'; put 'put ''YTRceGFiXHhiYlx1MjAyNlx4YTBcdTAzYTVcdTAzYTdcdTAzODZcdTAzODhcdTAxNTNcdTIwMTNcdTIwMTVcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUwMzg5XHUwMzhhXHUwMzhjXHUwMzhlXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2NjXHUwMzhmXHUwM2NkXHUwM2IxXHUwM2IyXHUw''@;'; put 'put ''M2M4XHUwM2I0XHUwM2I1XHUwM2M2XHUwM2IzXHUwM2I3XHUwM2I5XHUwM2JlXHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JmXHUwM2MwXHUwM2NlXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2I4XHUwM2M5XHUwM2MyXHUwM2M3XHUwM2M1XHUwM2I2XHUwM2NhXHUwM2NiXHUwMzkwXHUwM2Iw''@;'; put 'put ''XHVmZmZkIixzZT1bXSxrPXt9LHY9MDsyNTYhPXY7Kyt2KTY1NTMzIT09VC5jaGFyQ29kZUF0KHYpJiYoa1tULmNoYXJBdCh2KV09diksc2Vbdl09VC5jaGFyQXQodik7cmV0dXJue2VuYzprLGRlYzpzZX19KCksemVbMTAwMDddPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPSJcMFx4MDFceDAyXHgw''@;'; put 'put ''M1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxd''@;'; put 'put ''Xl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1''@;'; put 'put ''MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhhZVx4YTlcdTIxMjJcdTA0MDJcdTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIyMWVceGIxXHUyMjY0XHUy''@;'; put 'put ''MjY1XHUwNDU2XHhiNVx1MjIwMlx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1OVx1MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNcdTA0NWNcdTA0NTVcdTIw''@;'; put 'put ''MTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBmXHUwNDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUw''@;'; put 'put ''NDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHhhNCIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2''@;'; put 'put ''KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntlbmM6ayxkZWM6c2V9fSgpLHplWzEwMDA4XT1mdW5jdGlvbigpe3ZhciB2LFQ9W10sc2U9e30saz1bXTtmb3Ioa1swXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4''@;'; put 'put ''MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4''@;'; put 'put ''N2ZceDgwXHVmOGQ4XHVmOGQ5XHVmOGRhXHVmOGRiXHVmOGRjXHVmOGRkXHVmOGRlXHVmOGRmXHVmOGUwXHVmOGUxXHVmOGUyXHVmOGUzXHVmOGU0XHVmOGU1XHVmOGU2XHVmOGU3XHVmOGU4XHVmOGU5XHVmOGVhXHVmOGViXHVmOGVjXHVmOGVkXHVmOGVlXHVmOGVmXHVmOGYwXHVmOGYxXHVm''@;'; put 'put ''OGYyXHVmOGYzXHVmOGY0XHVmOGY1XHVmOGY2XHVmOGY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOGY4XHVmOGY5XHVmOGZhXHVmOGZiXHVmOGZjXHVmOGZkXHVmOGZlXHVmOGZmIi5zcGxpdCgiIiksdj0wO3YhPWtbMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMF1bdl0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKHNlW2tbMF1bdl1dPTArdixUWzArdl09a1swXVt2XSk7Zm9yKGtbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHUzMGZiXHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1MjAxNVx1ZmY1ZVx1ZmZmZFx1MjAyNlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOFx1MzAwOVx1MzAwYVx1MzAw''@;'; put 'put ''Ylx1MzAwY1x1MzAwZFx1MzAwZVx1MzAwZlx1MzAxNlx1MzAxN1x1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjIzNlx1MjIyN1x1MjIyOFx1MjIxMVx1MjIwZlx1MjIyYVx1MjIyOVx1MjIwOFx1MjIzN1x1MjIxYVx1MjJhNVx1MjIyNVx1MjIyMFx1MjMxMlx1MjI5OVx1MjIyYlx1MjIyZVx1''@;'; put 'put ''MjI2MVx1MjI0Y1x1MjI0OFx1MjIzZFx1MjIxZFx1MjI2MFx1MjI2ZVx1MjI2Zlx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmMDRceGE0XHVmZmUwXHVmZmUxXHUyMDMwXHhhN1x1MjExNlx1MjYwNlx1MjYwNVx1MjVj''@;'; put 'put ''Ylx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjAzYlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTYxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vb''@;'; put 'put ''a1sxNjFdW3ZdXT00MTIxNit2LFRbNDEyMTYrdl09a1sxNjFdW3ZdKTtmb3Ioa1sxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI0ODhcdTI0ODlcdTI0OGFcdTI0OGJcdTI0OGNcdTI0OGRcdTI0''@;'; put 'put ''OGVcdTI0OGZcdTI0OTBcdTI0OTFcdTI0OTJcdTI0OTNcdTI0OTRcdTI0OTVcdTI0OTZcdTI0OTdcdTI0OThcdTI0OTlcdTI0OWFcdTI0OWJcdTI0NzRcdTI0NzVcdTI0NzZcdTI0NzdcdTI0NzhcdTI0NzlcdTI0N2FcdTI0N2JcdTI0N2NcdTI0N2RcdTI0N2VcdTI0N2ZcdTI0ODBcdTI0ODFc''@;'; put 'put ''dTI0ODJcdTI0ODNcdTI0ODRcdTI0ODVcdTI0ODZcdTI0ODdcdTI0NjBcdTI0NjFcdTI0NjJcdTI0NjNcdTI0NjRcdTI0NjVcdTI0NjZcdTI0NjdcdTI0NjhcdTI0NjlcdWZmZmRcdWZmZmRcdTMyMjBcdTMyMjFcdTMyMjJcdTMyMjNcdTMyMjRcdTMyMjVcdTMyMjZcdTMyMjdcdTMyMjhcdTMy''@;'; put 'put ''MjlcdWZmZmRcdWZmZmRcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdTIxNmFcdTIxNmJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNjJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2Ml1bdl0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKHNlW2tbMTYyXVt2XV09NDE0NzIrdixUWzQxNDcyK3ZdPWtbMTYyXVt2XSk7Zm9yKGtbMTYzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjAxXHVmZjAyXHVmZjAzXHVmZmU1XHVmZjA1XHVmZjA2XHVmZjA3XHVmZjA4XHVmZjA5XHVmZjBhXHVmZjBiXHVmZjBjXHVmZjBkXHVmZjBlXHVmZjBmXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVm''@;'; put 'put ''ZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHVmZjFhXHVmZjFiXHVmZjFjXHVmZjFkXHVmZjFlXHVmZjFmXHVmZjIwXHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMw''@;'; put 'put ''XHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjNiXHVmZjNjXHVmZjNkXHVmZjNlXHVmZjNmXHVmZjQwXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVm''@;'; put 'put ''ZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHVmZjViXHVmZjVjXHVmZjVkXHVmZmUzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTYzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sx''@;'; put 'put ''NjNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2M11bdl1dPTQxNzI4K3YsVFs0MTcyOCt2XT1rWzE2M11bdl0pO2ZvcihrWzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0ZVx1MzA0Zlx1MzA1MFx1MzA1MVx1MzA1Mlx1''@;'; put 'put ''MzA1M1x1MzA1NFx1MzA1NVx1MzA1Nlx1MzA1N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1MzA2YVx1MzA2Ylx1MzA2Y1x1MzA2ZFx1MzA2''@;'; put 'put ''ZVx1MzA2Zlx1MzA3MFx1MzA3MVx1MzA3Mlx1MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4NVx1MzA4Nlx1MzA4N1x1MzA4OFx1MzA4OVx1''@;'; put 'put ''MzA4YVx1MzA4Ylx1MzA4Y1x1MzA4ZFx1MzA4ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2NF0ubGVuZ3RoOysr''@;'; put 'put ''dik2NTUzMyE9PWtbMTY0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjRdW3ZdXT00MTk4NCt2LFRbNDE5ODQrdl09a1sxNjRdW3ZdKTtmb3Ioa1sxNjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTRcdTMwYTVcdTMwYTZcdTMwYTdcdTMwYThcdTMwYTlcdTMwYWFcdTMwYWJcdTMwYWNcdTMwYWRcdTMwYWVcdTMwYWZcdTMwYjBc''@;'; put 'put ''dTMwYjFcdTMwYjJcdTMwYjNcdTMwYjRcdTMwYjVcdTMwYjZcdTMwYjdcdTMwYjhcdTMwYjlcdTMwYmFcdTMwYmJcdTMwYmNcdTMwYmRcdTMwYmVcdTMwYmZcdTMwYzBcdTMwYzFcdTMwYzJcdTMwYzNcdTMwYzRcdTMwYzVcdTMwYzZcdTMwYzdcdTMwYzhcdTMwYzlcdTMwY2FcdTMwY2JcdTMw''@;'; put 'put ''Y2NcdTMwY2RcdTMwY2VcdTMwY2ZcdTMwZDBcdTMwZDFcdTMwZDJcdTMwZDNcdTMwZDRcdTMwZDVcdTMwZDZcdTMwZDdcdTMwZDhcdTMwZDlcdTMwZGFcdTMwZGJcdTMwZGNcdTMwZGRcdTMwZGVcdTMwZGZcdTMwZTBcdTMwZTFcdTMwZTJcdTMwZTNcdTMwZTRcdTMwZTVcdTMwZTZcdTMwZTdc''@;'; put 'put ''dTMwZThcdTMwZTlcdTMwZWFcdTMwZWJcdTMwZWNcdTMwZWRcdTMwZWVcdTMwZWZcdTMwZjBcdTMwZjFcdTMwZjJcdTMwZjNcdTMwZjRcdTMwZjVcdTMwZjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sx''@;'; put 'put ''NjVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2NV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTY1XVt2XV09NDIyNDArdixUWzQyMjQwK3ZdPWtbMTY1XVt2XSk7Zm9yKGtbMTY2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzll''@;'; put 'put ''XHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUw''@;'; put 'put ''M2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''Iiksdj0wO3YhPWtbMTY2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2Nl1bdl1dPTQyNDk2K3YsVFs0MjQ5Nit2XT1rWzE2Nl1bdl0pO2ZvcihrWzE2N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQx''@;'; put 'put ''YVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0''@;'; put 'put ''MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE2N10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTY3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNjddW3ZdXT00Mjc1Mit2LFRbNDI3NTIrdl09a1sxNjddW3ZdKTtmb3Ioa1sxNjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4''@;'; put 'put ''ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMxMDVcdTMxMDZcdTMxMDdcdTMxMDhcdTMxMDlc''@;'; put 'put ''dTMxMGFcdTMxMGJcdTMxMGNcdTMxMGRcdTMxMGVcdTMxMGZcdTMxMTBcdTMxMTFcdTMxMTJcdTMxMTNcdTMxMTRcdTMxMTVcdTMxMTZcdTMxMTdcdTMxMThcdTMxMTlcdTMxMWFcdTMxMWJcdTMxMWNcdTMxMWRcdTMxMWVcdTMxMWZcdTMxMjBcdTMxMjFcdTMxMjJcdTMxMjNcdTMxMjRcdTMx''@;'; put 'put ''MjVcdTMxMjZcdTMxMjdcdTMxMjhcdTMxMjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSx2PTA7diE9a1sxNjhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE2OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTY4XVt2XV09NDMwMDgrdixUWzQzMDA4K3ZdPWtbMTY4XVt2XSk7Zm9yKGtbMTY5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTAwXHUyNTAxXHUyNTAyXHUyNTAzXHUyNTA0XHUyNTA1XHUyNTA2XHUyNTA3XHUy''@;'; put 'put ''NTA4XHUyNTA5XHUyNTBhXHUyNTBiXHUyNTBjXHUyNTBkXHUyNTBlXHUyNTBmXHUyNTEwXHUyNTExXHUyNTEyXHUyNTEzXHUyNTE0XHUyNTE1XHUyNTE2XHUyNTE3XHUyNTE4XHUyNTE5XHUyNTFhXHUyNTFiXHUyNTFjXHUyNTFkXHUyNTFlXHUyNTFmXHUyNTIwXHUyNTIxXHUyNTIyXHUyNTIz''@;'; put 'put ''XHUyNTI0XHUyNTI1XHUyNTI2XHUyNTI3XHUyNTI4XHUyNTI5XHUyNTJhXHUyNTJiXHUyNTJjXHUyNTJkXHUyNTJlXHUyNTJmXHUyNTMwXHUyNTMxXHUyNTMyXHUyNTMzXHUyNTM0XHUyNTM1XHUyNTM2XHUyNTM3XHUyNTM4XHUyNTM5XHUyNTNhXHUyNTNiXHUyNTNjXHUyNTNkXHUyNTNlXHUy''@;'; put 'put ''NTNmXHUyNTQwXHUyNTQxXHUyNTQyXHUyNTQzXHUyNTQ0XHUyNTQ1XHUyNTQ2XHUyNTQ3XHUyNTQ4XHUyNTQ5XHUyNTRhXHUyNTRiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTY5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNjldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE2OV1bdl1dPTQzMjY0K3YsVFs0MzI2NCt2XT1rWzE2OV1bdl0pO2ZvcihrWzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTU0YVx1OTYzZlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRjMFx1NzY5MVx1NzY0Y1x1''@;'; put 'put ''ODUzY1x1NzdlZVx1ODI3ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBhZVx1NjYwMlx1NzZjZVx1NTFmOVx1NjU1Nlx1NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1NjFjYVx1NmZiM1x1ODJh''@;'; put 'put ''ZFx1NjM0Y1x1NjI1Mlx1NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1N2Y2Mlx1NzIzOFx1NzY3ZFx1NjdjZlx1NzY3ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2ExN1x1NjU5MVx1NzNlZFx1''@;'; put 'put ''NjQyY1x1NjI3M1x1ODIyY1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4Nlx1Njk5Y1x1ODE4MFx1N2VkMVx1NjhkMlx1NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1ODJkZVx1ODBkZVx1NTMw''@;'; put 'put ''NVx1ODkxMlx1NTI2NVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3Nl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzZdW3ZdXT00NTA1Nit2LFRbNDUwNTYrdl09a1sxNzZdW3ZdKTtmb3Ioa1sxNzddPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1ODRcdTk2ZjlcdTRmZGRcdTU4MjFcdTk5NzFcdTViOWRcdTYyYjFc''@;'; put 'put ''dTYyYTVcdTY2YjRcdThjNzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3MmNcdTdiMjhcdTVkMjlcdTdlZjdcdTc1MmRcdTZj''@;'; put 'put ''ZjVcdThlNjZcdThmZjhcdTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZcdTU4YzFcdTgxYzJcdTkwN2ZcdTk2NWJcdTk3YWRc''@;'; put 'put ''dThmYjlcdTdmMTZcdThkMmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZlZThcdTViYmVcdTY0NDhcdTUxNzVcdTUxYjBcdTY3''@;'; put 'put ''YzRcdTRlMTlcdTc5YzlcdTk5N2NcdTcwYjNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxNzddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE3N11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTc3XVt2XV09NDUzMTIrdixUWzQ1MzEyK3ZdPWtbMTc3XVt2XSk7Zm9yKGtbMTc4XT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NWM1XHU1ZTc2XHU3M2JiXHU4M2UwXHU2NGFk''@;'; put 'put ''XHU2MmU4XHU5NGI1XHU2Y2UyXHU1MzVhXHU1MmMzXHU2NDBmXHU5NGMyXHU3Yjk0XHU0ZjJmXHU1ZTFiXHU4MjM2XHU4MTE2XHU4MThhXHU2ZTI0XHU2Y2NhXHU5YTczXHU2MzU1XHU1MzVjXHU1NGZhXHU4ODY1XHU1N2UwXHU0ZTBkXHU1ZTAzXHU2YjY1XHU3YzNmXHU5MGU4XHU2MDE2XHU2''@;'; put 'put ''NGU2XHU3MzFjXHU4OGMxXHU2NzUwXHU2MjRkXHU4ZDIyXHU3NzZjXHU4ZTI5XHU5MWM3XHU1ZjY5XHU4M2RjXHU4NTIxXHU5OTEwXHU1M2MyXHU4Njk1XHU2YjhiXHU2MGVkXHU2MGU4XHU3MDdmXHU4MmNkXHU4MjMxXHU0ZWQzXHU2Y2E3XHU4NWNmXHU2NGNkXHU3Y2Q5XHU2OWZkXHU2NmY5''@;'; put 'put ''XHU4MzQ5XHU1Mzk1XHU3YjU2XHU0ZmE3XHU1MThjXHU2ZDRiXHU1YzQyXHU4ZTZkXHU2M2QyXHU1M2M5XHU4MzJjXHU4MzM2XHU2N2U1XHU3OGI0XHU2NDNkXHU1YmRmXHU1Yzk0XHU1ZGVlXHU4YmU3XHU2MmM2XHU2N2Y0XHU4YzdhXHU2NDAwXHU2M2JhXHU4NzQ5XHU5OThiXHU4YzE3XHU3''@;'; put 'put ''ZjIwXHU5NGYyXHU0ZWE3XHU5NjEwXHU5OGE0XHU2NjBjXHU3MzE2XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTc4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxNzhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE3OF1bdl1dPTQ1NTY4K3YsVFs0NTU2OCt2XT1rWzE3OF1bdl0pO2Zvcihr''@;'; put 'put ''WzE3OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTczYVx1NWMxZFx1NWUz''@;'; put 'put ''OFx1OTU3Zlx1NTA3Zlx1ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQzNVx1NzA5Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFlM1x1OGZiMFx1NWMxOFx1''@;'; put 'put ''NjY2OFx1NWZmMVx1NmM4OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1OGJkYVx1NjI3Zlx1OTAxZVx1OWE4Ylx1NzllNFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1NmM2MFx1OGZkZlx1NWYx''@;'; put 'put ''Ylx1OWE3MFx1ODAzYlx1OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2Y1x1NzU3NFx1OGUwY1x1N2EyMFx1NjEwMVx1N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUxMVx1ODFlZFx1NTIxZFx1''@;'; put 'put ''NTFmYVx1NmE3MVx1NTNhOFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE3OV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTc5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxNzldW3ZdXT00NTgyNCt2LFRbNDU4MjQrdl09a1sx''@;'; put 'put ''NzldW3ZdKTtmb3Ioa1sxODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc4''@;'; put 'put ''NDBcdTUwYThcdTc3ZDdcdTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJcdTVlOGFcdTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2MjVcdTY5M2ZcdTkxODdc''@;'; put 'put ''dTU1MDdcdTZkZjNcdTdlYWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThkNTBcdTZiMjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFcdTdjOTdcdTkxOGJcdTdj''@;'; put 'put ''MDdcdTRmYzNcdThlN2ZcdTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2JcdTY0YWVcdTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2MjlcdTYyNTNcdTU5Mjdc''@;'; put 'put ''dTU0NDZcdTZiNzlcdTUwYTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmVcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTgwXVt2XV09NDYwODArdixU''@;'; put 'put ''WzQ2MDgwK3ZdPWtbMTgwXVt2XSk7Zm9yKGtbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU2MDIwXHU4MDNkXHU2MmM1XHU0ZTM5XHU1MzU1XHU5MGY4XHU2M2I4XHU4MGM2XHU2NWU2XHU2YzJlXHU0ZjQ2XHU2MGVlXHU2ZGUxXHU4YmRlXHU1ZjM5XHU4NmNiXHU1ZjUzXHU2MzIxXHU1MTVhXHU4MzYxXHU2ODYzXHU1MjAwXHU2MzYzXHU4ZTQ4XHU1MDEyXHU1Yzli''@;'; put 'put ''XHU3OTc3XHU1YmZjXHU1MjMwXHU3YTNiXHU2MGJjXHU5MDUzXHU3NmQ3XHU1ZmI3XHU1Zjk3XHU3Njg0XHU4ZTZjXHU3MDZmXHU3NjdiXHU3YjQ5XHU3N2FhXHU1MWYzXHU5MDkzXHU1ODI0XHU0ZjRlXHU2ZWY0XHU4ZmVhXHU2NTRjXHU3YjFiXHU3MmM0XHU2ZGE0XHU3ZmRmXHU1YWUxXHU2''@;'; put 'put ''MmI1XHU1ZTk1XHU1NzMwXHU4NDgyXHU3YjJjXHU1ZTFkXHU1ZjFmXHU5MDEyXHU3ZjE0XHU5OGEwXHU2MzgyXHU2ZWM3XHU3ODk4XHU3MGI5XHU1MTc4XHU5NzViXHU1N2FiXHU3NTM1XHU0ZjQzXHU3NTM4XHU1ZTk3XHU2MGU2XHU1OTYwXHU2ZGMwXHU2YmJmXHU3ODg5XHU1M2ZjXHU5NmQ1''@;'; put 'put ''XHU1MWNiXHU1MjAxXHU2Mzg5XHU1NDBhXHU5NDkzXHU4YzAzXHU4ZGNjXHU3MjM5XHU3ODlmXHU4Nzc2XHU4ZmVkXHU4YzBkXHU1M2UwXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTgxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4MV1b''@;'; put 'put ''dl1dPTQ2MzM2K3YsVFs0NjMzNit2XT1rWzE4MV1bdl0pO2ZvcihrWzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUwMVx1NzZlZlx1NTNlZVx1OTQ4OVx1OTg3Nlx1OWYwZVx1OTUyZFx1NWI5YVx1OGJhMlx1NGUyMlx1NGUxY1x1NTFhY1x1ODQ2M1x1NjFjMlx1NTJhOFx1NjgwYlx1NGY5N1x1NjA2Ylx1NTFiYlx1NmQxZVx1NTE1Y1x1NjI5Nlx1NjU5N1x1OTY2''@;'; put 'put ''MVx1OGM0Nlx1OTAxN1x1NzVkOFx1OTBmZFx1Nzc2M1x1NmJkMlx1NzI4YVx1NzJlY1x1OGJmYlx1NTgzNVx1Nzc3OVx1OGQ0Y1x1Njc1Y1x1OTU0MFx1ODA5YVx1NWVhNlx1NmUyMVx1NTk5Mlx1N2FlZlx1NzdlZFx1OTUzYlx1NmJiNVx1NjVhZFx1N2YwZVx1NTgwNlx1NTE1MVx1OTYxZlx1''@;'; put 'put ''NWJmOVx1NThhOVx1NTQyOFx1OGU3Mlx1NjU2Nlx1OTg3Zlx1NTZlNFx1OTQ5ZFx1NzZmZVx1OTA0MVx1NjM4N1x1NTRjNlx1NTkxYVx1NTkzYVx1NTc5Ylx1OGViMlx1NjczNVx1OGRmYVx1ODIzNVx1NTI0MVx1NjBmMFx1NTgxNVx1ODZmZVx1NWNlOFx1OWU0NVx1NGZjNFx1OTg5ZFx1OGJi''@;'; put 'put ''OVx1NWEyNVx1NjA3Nlx1NTM4NFx1NjI3Y1x1OTA0Zlx1OTEwMlx1OTk3Zlx1NjA2OVx1ODAwY1x1NTEzZlx1ODAzM1x1NWMxNFx1OTk3NVx1NmQzMVx1NGU4Y1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTgyXVt2XS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYoc2Vba1sxODJdW3ZdXT00NjU5Mit2LFRbNDY1OTIrdl09a1sxODJdW3ZdKTtmb3Ioa1sxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVcdTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZcdTUzY2RcdThmZDRcdTgz''@;'; put 'put ''MDNcdThkMjlcdTcyYWZcdTk5NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUzMmFcdThiZmRcdTU0MjBcdTgwYmFcdTVlOWZcdTZjYjhcdThkMzlc''@;'; put 'put ''dTgyYWNcdTkxNWFcdTU0MjlcdTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJcdTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJcdTUxYWZcdTdmMWRcdThi''@;'; put 'put ''YmRcdTU5NDlcdTUxZTRcdTRmNWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4M11bdl0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKHNlW2tbMTgzXVt2XV09NDY4NDgrdixUWzQ2ODQ4K3ZdPWtbMTgzXVt2XSk7Zm9yKGtbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDZlXHU2ZGFhXHU3OThmXHU4OGIxXHU1ZjE3XHU3NTJiXHU2MjlhXHU4Zjg1XHU0ZmVmXHU5MWRjXHU2NWE3XHU4MTJmXHU4MTUxXHU1ZTljXHU4MTUwXHU4ZDc0XHU1MjZmXHU4OTg2XHU4ZDRiXHU1''@;'; put 'put ''OTBkXHU1MDg1XHU0ZWQ4XHU5NjFjXHU3MjM2XHU4MTc5XHU4ZDFmXHU1YmNjXHU4YmEzXHU5NjQ0XHU1OTg3XHU3ZjFhXHU1NDkwXHU1Njc2XHU1NjBlXHU4YmU1XHU2NTM5XHU2OTgyXHU5NDk5XHU3NmQ2XHU2ZTg5XHU1ZTcyXHU3NTE4XHU2NzQ2XHU2N2QxXHU3YWZmXHU4MDlkXHU4ZDc2''@;'; put 'put ''XHU2MTFmXHU3OWM2XHU2NTYyXHU4ZDYzXHU1MTg4XHU1MjFhXHU5NGEyXHU3ZjM4XHU4MDliXHU3ZWIyXHU1Yzk3XHU2ZTJmXHU2NzYwXHU3YmQ5XHU3NjhiXHU5YWQ4XHU4MThmXHU3Zjk0XHU3Y2Q1XHU2NDFlXHU5NTUwXHU3YTNmXHU1NDRhXHU1NGU1XHU2YjRjXHU2NDAxXHU2MjA4XHU5''@;'; put 'put ''ZTNkXHU4MGYzXHU3NTk5XHU1MjcyXHU5NzY5XHU4NDViXHU2ODNjXHU4NmU0XHU5NjAxXHU5Njk0XHU5NGVjXHU0ZTJhXHU1NDA0XHU3ZWQ5XHU2ODM5XHU4ZGRmXHU4MDE1XHU2NmY0XHU1ZTlhXHU3ZmI5XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTg0XS5sZW5ndGg7Kyt2KTY1NTMz''@;'; put 'put ''IT09a1sxODRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4NF1bdl1dPTQ3MTA0K3YsVFs0NzEwNCt2XT1rWzE4NF1bdl0pO2ZvcihrWzE4NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1NWJhYlx1NWYxM1x1NWRlOVx1NmM1ZVx1NjJmMVx1OGQyMVx1''@;'; put 'put ''NTE3MVx1OTRhOVx1NTJmZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFhOFx1OGMzN1x1ODBhMVx1NjU0NVx1OTg3ZVx1NTZmYVx1OTZj''@;'; put 'put ''N1x1NTIyZVx1NzRkY1x1NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1NWU3Zlx1OTAxYlx1NzQ3MFx1ODljNFx1NTcyZFx1Nzg0NVx1''@;'; put 'put ''NWY1Mlx1OWY5Zlx1OTVmYVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRjOFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4NV0ubGVu''@;'; put 'put ''Z3RoOysrdik2NTUzMyE9PWtbMTg1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODVdW3ZdXT00NzM2MCt2LFRbNDczNjArdl09a1sxODVdW3ZdKTtmb3Ioa1sxODZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZkYjVcdTViZDJcdTUxZmRc''@;'; put 'put ''dTU1OGFcdTdmNTVcdTdmZjBcdTY0YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZjNTdcdTZjNDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRcdTgzNzdcdTgzY2ZcdTY4''@;'; put 'put ''MzhcdTc5YmVcdTU0OGNcdTRmNTVcdTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhcdThkNmJcdTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThmNzBcdTU0YzRcdTcwZDhc''@;'; put 'put ''dTg2NzlcdTllM2ZcdTZkMmFcdTViOGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0M2NcdTUzOWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7''@;'; put 'put ''diE9a1sxODZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4Nl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg2XVt2XV09NDc2MTYrdixUWzQ3NjE2K3ZdPWtbMTg2XVt2XSk7Zm9yKGtbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZjI3XHU4NjRlXHU1NTJjXHU2MmE0XHU0ZTkyXHU2Y2FhXHU2MjM3XHU4MmIxXHU1NGQ3XHU1MzRlXHU3MzNlXHU2ZWQxXHU3NTNi''@;'; put 'put ''XHU1MjEyXHU1MzE2XHU4YmRkXHU2OWQwXHU1ZjhhXHU2MDAwXHU2ZGVlXHU1NzRmXHU2YjIyXHU3M2FmXHU2ODUzXHU4ZmQ4XHU3ZjEzXHU2MzYyXHU2MGEzXHU1NTI0XHU3NWVhXHU4YzYyXHU3MTE1XHU2ZGEzXHU1YmE2XHU1ZTdiXHU4MzUyXHU2MTRjXHU5ZWM0XHU3OGZhXHU4NzU3XHU3''@;'; put 'put ''YzI3XHU3Njg3XHU1MWYwXHU2MGY2XHU3MTRjXHU2NjQzXHU1ZTRjXHU2MDRkXHU4YzBlXHU3MDcwXHU2MzI1XHU4Zjg5XHU1ZmJkXHU2MDYyXHU4NmQ0XHU1NmRlXHU2YmMxXHU2MDk0XHU2MTY3XHU1MzQ5XHU2MGUwXHU2NjY2XHU4ZDNmXHU3OWZkXHU0ZjFhXHU3MGU5XHU2YzQ3XHU4YmIz''@;'; put 'put ''XHU4YmYyXHU3ZWQ4XHU4MzY0XHU2NjBmXHU1YTVhXHU5YjQyXHU2ZDUxXHU2ZGY3XHU4YzQxXHU2ZDNiXHU0ZjE5XHU3MDZiXHU4M2I3XHU2MjE2XHU2MGQxXHU5NzBkXHU4ZDI3XHU3OTc4XHU1MWZiXHU1NzNlXHU1N2ZhXHU2NzNhXHU3NTc4XHU3YTNkXHU3OWVmXHU3Yjk1XHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksdj0wO3YhPWtbMTg3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxODddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE4N11bdl1dPTQ3ODcyK3YsVFs0Nzg3Mit2XT1rWzE4N11bdl0pO2ZvcihrWzE4OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1OWUyMVx1NTllY1x1N2VlOVx1N2YwOVx1NTQwOVx1Njc4''@;'; put 'put ''MVx1NjhkOFx1OGY5MVx1N2M0ZFx1OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0Mlx1NjBiOFx1NmQ0ZVx1NWJjNFx1NWJjMlx1OGJhMVx1''@;'; put 'put ''OGJiMFx1NjVlMlx1NWZjY1x1OTY0NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1OWE3ZVx1NWFjMVx1NmI3Y1x1NzZkMVx1NTc1YVx1NWMx''@;'; put 'put ''Nlx1N2IzYVx1OTVmNFx1NzE0ZVx1NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3NFx1OGRmNVx1OGQzMVx1ODljMVx1OTUyZVx1N2JhZFx1''@;'; put 'put ''NGVmNlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE4OF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTg4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxODhdW3ZdXT00ODEyOCt2LFRbNDgxMjgrdl09a1sxODhdW3ZdKTtmb3Ioa1sxODldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVcdTZkYTdcdTVlZmFcdTUw''@;'; put 'put ''ZjVcdTU5ZGNcdTVjMDZcdTZkNDZcdTZjNWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0ZjBcdTc3ZWJcdTRmYTVc''@;'; put 'put ''dTgxMWFcdTcyZTFcdTg5ZDJcdTk5N2FcdTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdcdTc3NmJcdTdhZWRcdTZk''@;'; put 'put ''MDFcdTdlZDNcdTg5ZTNcdTU5ZDBcdTYyMTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3NzNcdTY2NGJcdTc5ODFc''@;'; put 'put ''dThmZDFcdTcwZWNcdTZkNzhcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxODldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE4OV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTg5XVt2XV09NDgzODQrdixUWzQ4Mzg0K3ZdPWtbMTg5XVt2XSk7Zm9yKGtbMTkwXT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzNkXHU1MmIyXHU4MzQ2XHU1MTYyXHU4MzBlXHU3NzViXHU2''@;'; put 'put ''Njc2XHU5Y2I4XHU0ZWFjXHU2MGNhXHU3Y2JlXHU3Y2IzXHU3ZWNmXHU0ZTk1XHU4YjY2XHU2NjZmXHU5ODg4XHU5NzU5XHU1ODgzXHU2NTZjXHU5NTVjXHU1Zjg0XHU3NWM5XHU5NzU2XHU3YWRmXHU3YWRlXHU1MWMwXHU3MGFmXHU3YTk4XHU2M2VhXHU3YTc2XHU3ZWEwXHU3Mzk2XHU5N2Vk''@;'; put 'put ''XHU0ZTQ1XHU3MDc4XHU0ZTVkXHU5MTUyXHU1M2E5XHU2NTUxXHU2NWU3XHU4MWZjXHU4MjA1XHU1NDhlXHU1YzMxXHU3NTlhXHU5N2EwXHU2MmQ4XHU3MmQ5XHU3NWJkXHU1YzQ1XHU5YTc5XHU4M2NhXHU1YzQwXHU1NDgwXHU3N2U5XHU0ZTNlXHU2Y2FlXHU4MDVhXHU2MmQyXHU2MzZlXHU1''@;'; put 'put ''ZGU4XHU1MTc3XHU4ZGRkXHU4ZTFlXHU5NTJmXHU0ZmYxXHU1M2U1XHU2MGU3XHU3MGFjXHU1MjY3XHU2MzUwXHU5ZTQzXHU1YTFmXHU1MDI2XHU3NzM3XHU1Mzc3XHU3ZWUyXHU2NDg1XHU2NTJiXHU2Mjg5XHU2Mzk4XHU1MDE0XHU3MjM1XHU4OWM5XHU1MWIzXHU4YmMwXHU3ZWRkXHU1NzQ3''@;'; put 'put ''XHU4M2NjXHU5NGE3XHU1MTliXHU1NDFiXHU1Y2ZiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTkwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTBdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5MF1bdl1dPTQ4NjQwK3YsVFs0ODY0MCt2XT1rWzE5MF1bdl0pO2ZvcihrWzE5MV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGZjYVx1N2FlM1x1NmQ1YVx1OTBlMVx1''@;'; put 'put ''OWE4Zlx1NTU4MFx1NTQ5Nlx1NTM2MVx1NTRhZlx1NWYwMFx1NjNlOVx1Njk3N1x1NTFlZlx1NjE2OFx1NTIwYVx1NTgyYVx1NTJkOFx1NTc0ZVx1NzgwZFx1NzcwYlx1NWViN1x1NjE3N1x1N2NlMFx1NjI1Ylx1NjI5N1x1NGVhMlx1NzA5NVx1ODAwM1x1NjJmN1x1NzBlNFx1OTc2MFx1NTc3''@;'; put 'put ''N1x1ODJkYlx1NjdlZlx1NjhmNVx1NzhkNVx1OTg5N1x1NzlkMVx1NThmM1x1NTRiM1x1NTNlZlx1NmUzNFx1NTE0Ylx1NTIzYlx1NWJhMlx1OGJmZVx1ODBhZlx1NTU0M1x1NTdhNlx1NjA3M1x1NTc1MVx1NTQyZFx1N2E3YVx1NjA1MFx1NWI1NFx1NjNhN1x1NjJhMFx1NTNlM1x1NjI2M1x1''@;'; put 'put ''NWJjN1x1NjdhZlx1NTRlZFx1N2E5Zlx1ODJlNlx1OTE3N1x1NWU5M1x1ODhlNFx1NTkzOFx1NTdhZVx1NjMwZVx1OGRlOFx1ODBlZlx1NTc1N1x1N2I3N1x1NGZhOVx1NWZlYlx1NWJiZFx1NmIzZVx1NTMyMVx1N2I1MFx1NzJjMlx1Njg0Nlx1NzdmZlx1NzczNlx1NjVmN1x1NTFiNVx1NGU4''@;'; put 'put ''Zlx1NzZkNFx1NWNiZlx1N2FhNVx1ODQ3NVx1NTk0ZVx1OWI0MVx1NTA4MFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5MV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTkxXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTFdW3ZdXT00ODg5Nit2LFRbNDg4OTYrdl09a1sxOTFdW3ZdKTtm''@;'; put 'put ''b3Ioa1sxOTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ODhcdTYxMjdc''@;'; put 'put ''dTZlODNcdTU3NjRcdTY2MDZcdTYzNDZcdTU2ZjBcdTYyZWNcdTYyNjlcdTVlZDNcdTk2MTRcdTU3ODNcdTYyYzlcdTU1ODdcdTg3MjFcdTgxNGFcdThmYTNcdTU1NjZcdTgzYjFcdTY3NjVcdThkNTZcdTg0ZGRcdTVhNmFcdTY4MGZcdTYyZTZcdTdiZWVcdTk2MTFcdTUxNzBcdTZmOWNcdThj''@;'; put 'put ''MzBcdTYzZmRcdTg5YzhcdTYxZDJcdTdmMDZcdTcwYzJcdTZlZTVcdTc0MDVcdTY5OTRcdTcyZmNcdTVlY2FcdTkwY2VcdTY3MTdcdTZkNmFcdTYzNWVcdTUyYjNcdTcyNjJcdTgwMDFcdTRmNmNcdTU5ZTVcdTkxNmFcdTcwZDlcdTZkOWRcdTUyZDJcdTRlNTBcdTk2ZjdcdTk1NmRcdTg1N2Vc''@;'; put 'put ''dTc4Y2FcdTdkMmZcdTUxMjFcdTU3OTJcdTY0YzJcdTgwOGJcdTdjN2JcdTZjZWFcdTY4ZjFcdTY5NWVcdTUxYjdcdTUzOThcdTY4YThcdTcyODFcdTllY2VcdTdiZjFcdTcyZjhcdTc5YmJcdTZmMTNcdTc0MDZcdTY3NGVcdTkxY2NcdTljYTRcdTc5M2NcdTgzODlcdTgzNTRcdTU0MGZcdTY4''@;'; put 'put ''MTdcdTRlM2RcdTUzODlcdTUyYjFcdTc4M2VcdTUzODZcdTUyMjlcdTUwODhcdTRmOGJcdTRmZDBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTJdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5Ml1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTkyXVt2XV09NDkxNTIrdixUWzQ5MTUyK3Zd''@;'; put 'put ''PWtbMTkyXVt2XSk7Zm9yKGtbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHU3NWUyXHU3YWNiXHU3YzkyXHU2Y2E1XHU5NmI2XHU1MjliXHU3NDgzXHU1NGU5XHU0ZmU5XHU4MDU0XHU4M2IyXHU4ZmRlXHU5NTcwXHU1ZWM5XHU2MDFjXHU2ZDlmXHU1ZTE4XHU2NTViXHU4MTM4XHU5NGZlXHU2MDRiXHU3MGJjXHU3ZWMzXHU3Y2FlXHU1MWM5XHU2ODgxXHU3Y2IxXHU4''@;'; put 'put ''MjZmXHU0ZTI0XHU4Zjg2XHU5MWNmXHU2NjdlXHU0ZWFlXHU4YzA1XHU2NGE5XHU4MDRhXHU1MGRhXHU3NTk3XHU3MWNlXHU1YmU1XHU4ZmJkXHU2ZjY2XHU0ZTg2XHU2NDgyXHU5NTYzXHU1ZWQ2XHU2NTk5XHU1MjE3XHU4OGMyXHU3MGM4XHU1MmEzXHU3MzBlXHU3NDMzXHU2Nzk3XHU3OGY3''@;'; put 'put ''XHU5NzE2XHU0ZTM0XHU5MGJiXHU5Y2RlXHU2ZGNiXHU1MWRiXHU4ZDQxXHU1NDFkXHU2MmNlXHU3M2IyXHU4M2YxXHU5NmY2XHU5Zjg0XHU5NGMzXHU0ZjM2XHU3ZjlhXHU1MWNjXHU3MDc1XHU5Njc1XHU1Y2FkXHU5ODg2XHU1M2U2XHU0ZWU0XHU2ZTljXHU3NDA5XHU2OWI0XHU3ODZiXHU5''@;'; put 'put ''OThmXHU3NTU5XHU1MjE4XHU3NjI0XHU2ZDQxXHU2N2YzXHU1MTZkXHU5Zjk5XHU4MDRiXHU1NDk5XHU3YjNjXHU3YWJmXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTkzXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5M11bdl1dPTQ5NDA4''@;'; put 'put ''K3YsVFs0OTQwOCt2XT1rWzE5M11bdl0pO2ZvcihrWzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1NWU5MFx1NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4Y1x1OTczMlx1OGRlZlx1OGQ0Mlx1OWU3Zlx1''@;'; put 'put ''NmY1ZVx1Nzk4NFx1NWY1NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4Ylx1NzM4N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1NTM3NVx1NGU3MVx1NjNhMFx1NzU2NVx1NjJh''@;'; put 'put ''MVx1OGY2ZVx1NGYyNlx1NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1NmQxYlx1OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4Mlx1OWE2Y1x1OWE4Mlx1NTYxYlx1NTQxN1x1''@;'; put 'put ''NTdjYlx1NGU3MFx1OWVhNlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5NF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMTk0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sx''@;'; put 'put ''OTRdW3ZdXT00OTY2NCt2LFRbNDk2NjQrdl09a1sxOTRdW3ZdKTtmb3Ioa1sxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjMjlcdTgyOTJcdTgzMmJcdTc2ZjJcdTZjMTNcdTVmZDlcdTgzYmRcdTczMmJcdTgzMDVcdTk1MWFcdTZiZGJcdTc3ZGJcdTk0YzZcdTUzNmZcdTgzMDJcdTUxOTJcdTVlM2RcdThjOGNcdThkMzhcdTRlNDhcdTczYWJcdTY3OWFcdTY4ODVc''@;'; put 'put ''dTkxNzZcdTk3MDlcdTcxNjRcdTZjYTFcdTc3MDlcdTVhOTJcdTk1NDFcdTZiY2ZcdTdmOGVcdTY2MjdcdTViZDBcdTU5YjlcdTVhOWFcdTk1ZThcdTk1ZjdcdTRlZWNcdTg0MGNcdTg0OTlcdTZhYWNcdTc2ZGZcdTk1MzBcdTczMWJcdTY4YTZcdTViNWZcdTc3MmZcdTkxOWFcdTk3NjFcdTdj''@;'; put 'put ''ZGNcdThmZjdcdThjMWNcdTVmMjVcdTdjNzNcdTc5ZDhcdTg5YzVcdTZjY2NcdTg3MWNcdTViYzZcdTVlNDJcdTY4YzlcdTc3MjBcdTdlZjVcdTUxOTVcdTUxNGRcdTUyYzlcdTVhMjlcdTdmMDVcdTk3NjJcdTgyZDdcdTYzY2ZcdTc3ODRcdTg1ZDBcdTc5ZDJcdTZlM2FcdTVlOTlcdTU5OTlc''@;'; put 'put ''dTg1MTFcdTcwNmRcdTZjMTFcdTYyYmZcdTc2YmZcdTY1NGZcdTYwYWZcdTk1ZmRcdTY2MGVcdTg3OWZcdTllMjNcdTk0ZWRcdTU0MGRcdTU0N2RcdThjMmNcdTY0NzhcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOTVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5NV1bdl0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKHNlW2tbMTk1XVt2XV09NDk5MjArdixUWzQ5OTIwK3ZdPWtbMTk1XVt2XSk7Zm9yKGtbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDc5XHU4NjExXHU2YTIxXHU4MTljXHU3OGU4XHU2NDY5XHU5YjU0XHU2MmI5XHU2NzJiXHU4M2FiXHU1OGE4XHU5ZWQ4XHU2Y2FiXHU2ZjIwXHU1YmRlXHU5NjRjXHU4YzBiXHU3MjVmXHU2N2QwXHU2MmM3XHU3MjYx''@;'; put 'put ''XHU0ZWE5XHU1OWM2XHU2YmNkXHU1ODkzXHU2NmFlXHU1ZTU1XHU1MmRmXHU2MTU1XHU2NzI4XHU3NmVlXHU3NzY2XHU3MjY3XHU3YTQ2XHU2MmZmXHU1NGVhXHU1NDUwXHU5NGEwXHU5MGEzXHU1YTFjXHU3ZWIzXHU2YzE2XHU0ZTQzXHU1OTc2XHU4MDEwXHU1OTQ4XHU1MzU3XHU3NTM3XHU5''@;'; put 'put ''NmJlXHU1NmNhXHU2MzIwXHU4MTExXHU2MDdjXHU5NWY5XHU2ZGQ2XHU1NDYyXHU5OTgxXHU1MTg1XHU1YWU5XHU4MGZkXHU1OWFlXHU5NzEzXHU1MDJhXHU2Y2U1XHU1YzNjXHU2MmRmXHU0ZjYwXHU1MzNmXHU4MTdiXHU5MDA2XHU2ZWJhXHU4NTJiXHU2MmM4XHU1ZTc0XHU3OGJlXHU2NGI1''@;'; put 'put ''XHU2MzdiXHU1ZmY1XHU1YTE4XHU5MTdmXHU5ZTFmXHU1YzNmXHU2MzRmXHU4MDQyXHU1YjdkXHU1NTZlXHU5NTRhXHU5NTRkXHU2ZDg1XHU2MGE4XHU2N2UwXHU3MmRlXHU1MWRkXHU1YjgxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMTk2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTZd''@;'; put 'put ''W3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5Nl1bdl1dPTUwMTc2K3YsVFs1MDE3Nit2XT1rWzE5Nl1bdl0pO2ZvcihrWzE5N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5Nlx1ODY1MFx1NzU5Zlx1NjMyYVx1NjFl''@;'; put 'put ''Nlx1N2NlZlx1OGJmYVx1NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1NTQ1NVx1NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1NmY1OFx1NzZkOFx1NzhkMFx1NzZmY1x1''@;'; put 'put ''NzU1NFx1NTIyNFx1NTNkYlx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBkNlx1NjI5Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5Ylx1NTViN1x1NzZjNlx1NzgzMFx1NjJh''@;'; put 'put ''OFx1NzBmOVx1NmY4ZVx1NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1ODFhOFx1NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkN1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzE5N10ubGVuZ3RoOysrdik2''@;'; put 'put ''NTUzMyE9PWtbMTk3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1sxOTddW3ZdXT01MDQzMit2LFRbNTA0MzIrdl09a1sxOTddW3ZdKTtmb3Ioa1sxOThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThiNmNcdTdiYzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhcdTZmMDJcdTc0ZTJcdTc5''@;'; put 'put ''NjhcdTY0ODdcdTc3YTVcdTYyZmNcdTk4OTFcdThkMmJcdTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdcdTVhNDZcdTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUyNTZcdTYyNTFcdTk0ZmFc''@;'; put 'put ''dTRlYzZcdTgzODZcdTg0NjFcdTgzZTlcdTg0YjJcdTU3ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUxYzRcdTZmMDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2JcdTU5NDdcdTZiNjdcdTc1''@;'; put 'put ''NjZcdTVkMGVcdTgxMTBcdTlmNTBcdTY1ZDdcdTc5NDhcdTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2RcdTZjZTNcdThiYWJcdTYzOTBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1sxOThd''@;'; put 'put ''Lmxlbmd0aDsrK3YpNjU1MzMhPT1rWzE5OF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMTk4XVt2XV09NTA2ODgrdixUWzUwNjg4K3ZdPWtbMTk4XVt2XSk7Zm9yKGtbMTk5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDcwXHU2ZDNkXHU3Mjc1XHU2MjY2XHU5NDhlXHU5NGM1XHU1MzQzXHU4ZmMxXHU3YjdlXHU0ZWRmXHU4YzI2XHU0ZTdlXHU5ZWQ0XHU5NGIxXHU5''@;'; put 'put ''NGIzXHU1MjRkXHU2ZjVjXHU5MDYzXHU2ZDQ1XHU4YzM0XHU1ODExXHU1ZDRjXHU2YjIwXHU2YjQ5XHU2N2FhXHU1NDViXHU4MTU0XHU3ZjhjXHU1ODk5XHU4NTM3XHU1ZjNhXHU2MmEyXHU2YTQ3XHU5NTM5XHU2NTcyXHU2MDg0XHU2ODY1XHU3N2E3XHU0ZTU0XHU0ZmE4XHU1ZGU3XHU5Nzk4''@;'; put 'put ''XHU2NGFjXHU3ZmQ4XHU1Y2VkXHU0ZmNmXHU3YThkXHU1MjA3XHU4MzA0XHU0ZTE0XHU2MDJmXHU3YTgzXHU5NGE2XHU0ZmI1XHU0ZWIyXHU3OWU2XHU3NDM0XHU1MmU0XHU4MmI5XHU2NGQyXHU3OWJkXHU1YmRkXHU2YzgxXHU5NzUyXHU4ZjdiXHU2YzIyXHU1MDNlXHU1MzdmXHU2ZTA1XHU2''@;'; put 'put ''NGNlXHU2Njc0XHU2YzMwXHU2MGM1XHU5ODc3XHU4YmY3XHU1ZTg2XHU3NDNjXHU3YTc3XHU3OWNiXHU0ZTE4XHU5MGIxXHU3NDAzXHU2YzQyXHU1NmRhXHU5MTRiXHU2Y2M1XHU4ZDhiXHU1MzNhXHU4NmM2XHU2NmYyXHU4ZWFmXHU1YzQ4XHU5YTcxXHU2ZTIwXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''dj0wO3YhPWtbMTk5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sxOTldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzE5OV1bdl1dPTUwOTQ0K3YsVFs1MDk0NCt2XT1rWzE5OV1bdl0pO2ZvcihrWzIwMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5Ylx1NmNjOVx1NTE2OFx1NzVjYVx1''@;'; put 'put ''NjJmM1x1NzJhY1x1NTIzOFx1NTI5ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1NjI3MFx1N2VkNVx1NjBmOVx1NzBl''@;'; put 'put ''ZFx1NThlY1x1NGVjMVx1NGViYVx1NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2VhYlx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNjOVx1NjdkNFx1ODA4OVx1ODMzOVx1''@;'; put 'put ''ODgxNVx1NTExMlx1NWI3YVx1NTk4Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1OGQ1Ylx1NGUwOVx1NTNjMVx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjAwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDBdW3ZdXT01MTIwMCt2LFRbNTEyMDArdl09a1syMDBdW3ZdKTtmb3Ioa1syMDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYyNmJcdTVhYzJcdTc0NWZc''@;'; put 'put ''dTgyNzJcdTZkYTlcdTY4ZWVcdTUwZTdcdTgzOGVcdTc4MDJcdTY3NDBcdTUyMzlcdTZjOTlcdTdlYjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVcdThkNjFcdTgxYjNcdTU1''@;'; put 'put ''ODRcdTZjNTVcdTYyNDdcdTdmMmVcdTU4OTJcdTRmMjRcdTU1NDZcdThkNGZcdTY2NGNcdTRlMGFcdTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2YzdcdTgyMGNcdTgyMGRc''@;'; put 'put ''dThkNjZcdTY0NDRcdTVjMDRcdTYxNTFcdTZkODlcdTc5M2VcdThiYmVcdTc4MzdcdTc1MzNcdTU0N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZcdTc1MjVcdTcyNzJcdTUz''@;'; put 'put ''NDdcdTdlZjNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjAxXVt2XV09NTE0NTYrdixUWzUxNDU2K3ZdPWtbMjAxXVt2XSk7Zm9yKGtbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzAxXHU3NmRiXHU1MjY5XHU4MGRjXHU1NzIzXHU1ZTA4XHU1OTMxXHU3MmVl''@;'; put 'put ''XHU2NWJkXHU2ZTdmXHU4YmQ3XHU1YzM4XHU4NjcxXHU1MzQxXHU3N2YzXHU2MmZlXHU2NWY2XHU0ZWMwXHU5OGRmXHU4NjgwXHU1YjllXHU4YmM2XHU1M2YyXHU3N2UyXHU0ZjdmXHU1YzRlXHU5YTc2XHU1OWNiXHU1ZjBmXHU3OTNhXHU1OGViXHU0ZTE2XHU2N2ZmXHU0ZThiXHU2MmVkXHU4''@;'; put 'put ''YTkzXHU5MDFkXHU1MmJmXHU2NjJmXHU1NWRjXHU1NjZjXHU5MDAyXHU0ZWQ1XHU0ZjhkXHU5MWNhXHU5OTcwXHU2YzBmXHU1ZTAyXHU2MDQzXHU1YmE0XHU4OWM2XHU4YmQ1XHU2NTM2XHU2MjRiXHU5OTk2XHU1Yjg4XHU1YmZmXHU2Mzg4XHU1NTJlXHU1M2Q3XHU3NjI2XHU1MTdkXHU4NTJj''@;'; put 'put ''XHU2N2EyXHU2OGIzXHU2YjhhXHU2MjkyXHU4ZjkzXHU1M2Q0XHU4MjEyXHU2ZGQxXHU3NThmXHU0ZTY2XHU4ZDRlXHU1YjcwXHU3MTlmXHU4NWFmXHU2NjkxXHU2NmQ5XHU3ZjcyXHU4NzAwXHU5ZWNkXHU5ZjIwXHU1YzVlXHU2NzJmXHU4ZmYwXHU2ODExXHU2NzVmXHU2MjBkXHU3YWQ2XHU1''@;'; put 'put ''ODg1XHU1ZWI2XHU2NTcwXHU2ZjMxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjAyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwMl1bdl1dPTUxNzEyK3YsVFs1MTcxMit2XT1rWzIwMl1bdl0pO2ZvcihrWzIwM109Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA1NVx1NTIzN1x1ODAwZFx1NjQ1NFx1ODg3MFx1NzUy''@;'; put 'put ''OVx1NWUwNVx1NjgxM1x1NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJmNFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1NGUxZFx1NmI3Ylx1ODA4Nlx1''@;'; put 'put ''NWJmYVx1NTVlM1x1NTZkYlx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAzOFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5Zlx1NTBmM1x1NTg1MVx1NmVh''@;'; put 'put ''Zlx1NWJiZlx1OGJjOVx1ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1NzQxMFx1N2QyMlx1OTUwMVx1''@;'; put 'put ''NjI0MFx1NTg0Y1x1NGVkNlx1NWI4M1x1NTk3OVx1NTg1NFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjAzXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDNdW3ZdXT01MTk2OCt2LFRbNTE5Njgrdl09a1syMDNdW3ZdKTtmb3Ioa1syMDRd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczNmRcdTYzMWVcdThlNGJcdThl''@;'; put 'put ''MGZcdTgwY2VcdTgyZDRcdTYyYWNcdTUzZjBcdTZjZjBcdTkxNWVcdTU5MmFcdTYwMDFcdTZjNzBcdTU3NGRcdTY0NGFcdThkMmFcdTc2MmJcdTZlZTlcdTU3NWJcdTZhODBcdTc1ZjBcdTZmNmRcdThjMmRcdThjMDhcdTU3NjZcdTZiZWZcdTg4OTJcdTc4YjNcdTYzYTJcdTUzZjlcdTcwYWRc''@;'; put 'put ''dTZjNjRcdTU4NThcdTY0MmFcdTU4MDJcdTY4ZTBcdTgxOWJcdTU1MTBcdTdjZDZcdTUwMThcdThlYmFcdTZkY2NcdThkOWZcdTcwZWJcdTYzOGZcdTZkOWJcdTZlZDRcdTdlZTZcdTg0MDRcdTY4NDNcdTkwMDNcdTZkZDhcdTk2NzZcdThiYThcdTU5NTdcdTcyNzlcdTg1ZTRcdTgxN2VcdTc1''@;'; put 'put ''YmNcdThhOGFcdTY4YWZcdTUyNTRcdThlMjJcdTk1MTFcdTYzZDBcdTk4OThcdThlNDRcdTU1N2NcdTRmNTNcdTY2ZmZcdTU2OGZcdTYwZDVcdTZkOTVcdTUyNDNcdTVjNDlcdTU5MjlcdTZkZmJcdTU4NmJcdTc1MzBcdTc1MWNcdTYwNmNcdTgyMTRcdTgxNDZcdTYzMTFcdTY3NjFcdThmZTJc''@;'; put 'put ''dTc3M2FcdThkZjNcdThkMzRcdTk0YzFcdTVlMTZcdTUzODVcdTU0MmNcdTcwYzNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwNF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjA0XVt2XV09NTIyMjQrdixUWzUyMjI0K3ZdPWtbMjA0XVt2''@;'; put 'put ''XSk7Zm9yKGtbMjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YzQwXHU1''@;'; put 'put ''ZWY3XHU1MDVjXHU0ZWFkXHU1ZWFkXHU2MzNhXHU4MjQ3XHU5MDFhXHU2ODUwXHU5MTZlXHU3N2IzXHU1NDBjXHU5NGRjXHU1ZjY0XHU3YWU1XHU2ODc2XHU2MzQ1XHU3YjUyXHU3ZWRmXHU3NWRiXHU1MDc3XHU2Mjk1XHU1OTM0XHU5MDBmXHU1MWY4XHU3OWMzXHU3YTgxXHU1NmZlXHU1Zjky''@;'; put 'put ''XHU5MDE0XHU2ZDgyXHU1YzYwXHU1NzFmXHU1NDEwXHU1MTU0XHU2ZTRkXHU1NmUyXHU2M2E4XHU5ODkzXHU4MTdmXHU4NzE1XHU4OTJhXHU5MDAwXHU1NDFlXHU1YzZmXHU4MWMwXHU2MmQ2XHU2MjU4XHU4MTMxXHU5ZTM1XHU5NjQwXHU5YTZlXHU5YTdjXHU2OTJkXHU1OWE1XHU2MmQzXHU1''@;'; put 'put ''NTNlXHU2MzE2XHU1NGM3XHU4NmQ5XHU2ZDNjXHU1YTAzXHU3NGU2XHU4ODljXHU2YjZhXHU1OTE2XHU4YzRjXHU1ZjJmXHU2ZTdlXHU3M2E5XHU5ODdkXHU0ZTM4XHU3MGY3XHU1YjhjXHU3ODk3XHU2MzNkXHU2NjVhXHU3Njk2XHU2MGNiXHU1YjliXHU1YTQ5XHU0ZTA3XHU4MTU1XHU2YzZh''@;'; put 'put ''XHU3MzhiXHU0ZWExXHU2Nzg5XHU3ZjUxXHU1ZjgwXHU2NWZhXHU2NzFiXHU1ZmQ4XHU1OTg0XHU1YTAxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA1XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIwNV1bdl1dPTUyNDgwK3YsVFs1MjQ4''@;'; put 'put ''MCt2XT1rWzIwNV1bdl0pO2ZvcihrWzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1NWRjZFx1NWZhZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlkNFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1NTU4Mlx1OWI0Zlx1NGY0''@;'; put 'put ''ZFx1NmUyZFx1OGMxM1x1NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2N1x1NjNlMVx1NmM4M1x1''@;'; put 'put ''NWRlYlx1NTQ1Y1x1OTRhOFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1NTJmZlx1NTJhMVx1NjA5''@;'; put 'put ''Zlx1OGJlZlx1NjYxNFx1NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYzYlx1NTQzOFx1OTUyMVx1NzI3YVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwNl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjA2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDZdW3ZdXT01''@;'; put 'put ''MjczNit2LFRbNTI3MzYrdl09a1syMDZdW3ZdKTtmb3Ioa1syMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlcdTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZcdTZlYWFcdTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlcdTYyMGZcdTdlYzZcdTc3''@;'; put 'put ''OGVcdTg2N2VcdTUzMjNcdTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRmYTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0MTNcdTYzODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVmMjZcdTVhY2NcdTY2M2Vc''@;'; put 'put ''dTk2NjlcdTczYjBcdTczMmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFcdTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2ZjhcdTUzYTJcdTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJcdTk4NzlcdTVkZjdcdTZh''@;'; put 'put ''NjFcdTUwY2ZcdTU0MTFcdThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUyNGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTViYjVcdTZkYzZcdTY2NTNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMDddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIwN11bdl0uY2hhckNvZGVBdCgwKSYmKHNl''@;'; put 'put ''W2tbMjA3XVt2XV09NTI5OTIrdixUWzUyOTkyK3ZdPWtbMjA3XVt2XSk7Zm9yKGtbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzBmXHU1YjVkXHU2ODIxXHU4MDk2XHU1NTc4XHU3YjExXHU2NTQ4XHU2OTU0XHU0ZTliXHU2YjQ3XHU4NzRlXHU5NzhiXHU1MzRmXHU2MzFmXHU2NDNhXHU5MGFhXHU2NTljXHU4MGMxXHU4YzEwXHU1MTk5XHU2OGIwXHU1Mzc4XHU4''@;'; put 'put ''N2Y5XHU2MWM4XHU2Y2M0XHU2Y2ZiXHU4YzIyXHU1YzUxXHU4NWFhXHU4MmFmXHU5NTBjXHU2YjIzXHU4ZjliXHU2NWIwXHU1ZmZiXHU1ZmMzXHU0ZmUxXHU4ODQ1XHU2NjFmXHU4MTY1XHU3MzI5XHU2MGZhXHU1MTc0XHU1MjExXHU1NzhiXHU1ZjYyXHU5MGEyXHU4ODRjXHU5MTkyXHU1ZTc4''@;'; put 'put ''XHU2NzRmXHU2MDI3XHU1OWQzXHU1MTQ0XHU1MWY2XHU4MGY4XHU1MzA4XHU2Yzc5XHU5NmM0XHU3MThhXHU0ZjExXHU0ZmVlXHU3ZjllXHU2NzNkXHU1NWM1XHU5NTA4XHU3OWMwXHU4ODk2XHU3ZWUzXHU1ODlmXHU2MjBjXHU5NzAwXHU4NjVhXHU1NjE4XHU5ODdiXHU1ZjkwXHU4YmI4XHU4''@;'; put 'put ''NGM0XHU5MTU3XHU1M2Q5XHU2NWVkXHU1ZThmXHU3NTVjXHU2MDY0XHU3ZDZlXHU1YTdmXHU3ZWVhXHU3ZWVkXHU4ZjY5XHU1NWE3XHU1YmEzXHU2MGFjXHU2NWNiXHU3Mzg0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjA4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMDhdW3ZdLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihzZVtrWzIwOF1bdl1dPTUzMjQ4K3YsVFs1MzI0OCt2XT1rWzIwOF1bdl0pO2ZvcihrWzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRlMVx1NmI4OVx1NmM1Ylx1''@;'; put 'put ''OGJhZFx1OGJhZlx1OTAwYVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1NzZkMFx1NGUyNVx1Nzgx''@;'; put 'put ''NFx1ODcxMlx1NWNhOVx1NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4Y1x1NmI4M1x1NTkyZVx1''@;'; put 'put ''OWUyZlx1NzllN1x1Njc2OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3Nlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIwOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtb''@;'; put 'put ''MjA5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMDldW3ZdXT01MzUwNCt2LFRbNTM1MDQrdl09a1syMDldW3ZdKTtmb3Ioa1syMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZcdTcyMzdcdTkxY2VcdTUxYjZcdTRlNWZc''@;'; put 'put ''dTk4NzVcdTYzOTZcdTRlMWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZkYjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZjODJcdTViOWNcdTU5ZThcdTVmNWRcdTY5''@;'; put 'put ''MDVcdTg2ODFcdTUwMWFcdTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2FcdTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlcdTc2Y2FcdTZlYTJcdThiZTNcdThiYWVc''@;'; put 'put ''dThjMGFcdThiZDFcdTVmMDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgzNmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTBdLmxlbmd0aDsr''@;'; put 'put ''K3YpNjU1MzMhPT1rWzIxMF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjEwXVt2XV09NTM3NjArdixUWzUzNzYwK3ZdPWtbMjEwXVt2XSk7Zm9yKGtbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzcwXHU4MmYxXHU2YTMxXHU1YTc0XHU5ZTcwXHU1ZTk0XHU3ZjI4XHU4M2I5XHU4NDI0XHU4NDI1XHU4MzY3XHU4NzQ3XHU4ZmNlXHU4ZDYyXHU3NmM4XHU1Zjcx''@;'; put 'put ''XHU5ODk2XHU3ODZjXHU2NjIwXHU1NGRmXHU2MmU1XHU0ZjYzXHU4MWMzXHU3NWM4XHU1ZWI4XHU5NmNkXHU4ZTBhXHU4NmY5XHU1NDhmXHU2Y2YzXHU2ZDhjXHU2YzM4XHU2MDdmXHU1MmM3XHU3NTI4XHU1ZTdkXHU0ZjE4XHU2MGEwXHU1ZmU3XHU1YzI0XHU3NTMxXHU5MGFlXHU5NGMwXHU3''@;'; put 'put ''MmI5XHU2Y2I5XHU2ZTM4XHU5MTQ5XHU2NzA5XHU1M2NiXHU1M2YzXHU0ZjUxXHU5MWM5XHU4YmYxXHU1M2M4XHU1ZTdjXHU4ZmMyXHU2ZGU0XHU0ZThlXHU3NmMyXHU2OTg2XHU4NjVlXHU2MTFhXHU4MjA2XHU0ZjU5XHU0ZmRlXHU5MDNlXHU5YzdjXHU2MTA5XHU2ZTFkXHU2ZTE0XHU5Njg1''@;'; put 'put ''XHU0ZTg4XHU1YTMxXHU5NmU4XHU0ZTBlXHU1YzdmXHU3OWI5XHU1Yjg3XHU4YmVkXHU3ZmJkXHU3Mzg5XHU1N2RmXHU4MjhiXHU5MGMxXHU1NDAxXHU5MDQ3XHU1NWJiXHU1Y2VhXHU1ZmExXHU2MTA4XHU2YjMyXHU3MmYxXHU4MGIyXHU4YTg5XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtb''@;'; put 'put ''MjExXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxMV1bdl1dPTU0MDE2K3YsVFs1NDAxNit2XT1rWzIxMV1bdl0pO2ZvcihrWzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ3NFx1NWJkM1x1ODhkNVx1OTg4NFx1OGM2Ylx1OWE2ZFx1OWUzM1x1NmUwYVx1NTFhNFx1NTE0M1x1NTdhM1x1ODg4MVx1NTM5Zlx1NjNm''@;'; put 'put ''NFx1OGY5NVx1NTZlZFx1NTQ1OFx1NTcwNlx1NzMzZlx1NmU5MFx1N2YxOFx1OGZkY1x1ODJkMVx1NjEzZlx1NjAyOFx1OTY2Mlx1NjZmMFx1N2VhNlx1OGQ4YVx1OGRjM1x1OTRhNVx1NWNiM1x1N2NhNFx1NjcwOFx1NjBhNlx1OTYwNVx1ODAxOFx1NGU5MVx1OTBlN1x1NTMwMFx1OTY2OFx1''@;'; put 'put ''NTE0MVx1OGZkMFx1ODU3NFx1OTE1ZFx1NjY1NVx1OTdmNVx1NWI1NVx1NTMxZFx1NzgzOFx1Njc0Mlx1NjgzZFx1NTRjOVx1NzA3ZVx1NWJiMFx1OGY3ZFx1NTE4ZFx1NTcyOFx1NTRiMVx1NjUxMlx1NjY4Mlx1OGQ1ZVx1OGQ0M1x1ODEwZlx1ODQ2Y1x1OTA2ZFx1N2NkZlx1NTFmZlx1ODVm''@;'; put 'put ''Ylx1NjdhM1x1NjVlOVx1NmZhMVx1ODZhNFx1OGU4MVx1NTY2YVx1OTAyMFx1NzY4Mlx1NzA3Nlx1NzFlNVx1OGQyM1x1NjJlOVx1NTIxOVx1NmNmZFx1OGQzY1x1NjAwZVx1NTg5ZVx1NjE4ZVx1NjZmZVx1OGQ2MFx1NjI0ZVx1NTViM1x1NmUyM1x1NjcyZFx1OGY2N1x1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLHY9MDt2IT1rWzIxMl0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjEyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTJdW3ZdXT01NDI3Mit2LFRbNTQyNzIrdl09a1syMTJdW3ZdKTtmb3Ioa1syMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0ZTFcdTk1ZjhcdTc3MjhcdTY4MDVcdTY5YThcdTU0OGJcdTRlNGRcdTcwYjhcdThiYzhcdTY0NThcdTY1OGJcdTVi''@;'; put 'put ''ODVcdTdhODRcdTUwM2FcdTViZThcdTc3YmJcdTZiZTFcdThhNzlcdTdjOThcdTZjYmVcdTc2Y2ZcdTY1YTlcdThmOTdcdTVkMmRcdTVjNTVcdTg2MzhcdTY4MDhcdTUzNjBcdTYyMThcdTdhZDlcdTZlNWJcdTdlZmRcdTZhMWZcdTdhZTBcdTVmNzBcdTZmMzNcdTVmMjBcdTYzOGNcdTZkYThc''@;'; put 'put ''dTY3NTZcdTRlMDhcdTVlMTBcdThkMjZcdTRlZDdcdTgwYzBcdTc2MzRcdTk2OWNcdTYyZGJcdTY2MmRcdTYyN2VcdTZjYmNcdThkNzVcdTcxNjdcdTdmNjlcdTUxNDZcdTgwODdcdTUzZWNcdTkwNmVcdTYyOThcdTU0ZjJcdTg2ZjBcdThmOTlcdTgwMDVcdTk1MTdcdTg1MTdcdThmZDlcdTZk''@;'; put 'put ''NTlcdTczY2RcdTY1OWZcdTc3MWZcdTc1MDRcdTc4MjdcdTgxZmJcdThkMWVcdTk0ODhcdTRmYTZcdTY3OTVcdTc1YjlcdThiY2FcdTk3MDdcdTYzMmZcdTk1NDdcdTk2MzVcdTg0YjhcdTYzMjNcdTc3NDFcdTVmODFcdTcyZjBcdTRlODlcdTYwMTRcdTY1NzRcdTYyZWZcdTZiNjNcdTY1M2Zc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxM11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjEzXVt2XV09NTQ1MjgrdixUWzU0NTI4K3ZdPWtbMjEzXVt2XSk7Zm9yKGtbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZTI3XHU3NWM3XHU5MGQxXHU4YmMxXHU4MjlkXHU2NzlkXHU2NTJmXHU1NDMxXHU4NzE4XHU3''@;'; put 'put ''N2U1XHU4MGEyXHU4MTAyXHU2YzQxXHU0ZTRiXHU3ZWM3XHU4MDRjXHU3NmY0XHU2OTBkXHU2Yjk2XHU2MjY3XHU1MDNjXHU0Zjg0XHU1NzQwXHU2MzA3XHU2YjYyXHU4ZGJlXHU1M2VhXHU2NWU4XHU3ZWI4XHU1ZmQ3XHU2MzFhXHU2M2I3XHU4MWYzXHU4MWY0XHU3ZjZlXHU1ZTFjXHU1Y2Q5''@;'; put 'put ''XHU1MjM2XHU2NjdhXHU3OWU5XHU3YTFhXHU4ZDI4XHU3MDk5XHU3NWQ0XHU2ZWRlXHU2Y2JiXHU3YTkyXHU0ZTJkXHU3NmM1XHU1ZmUwXHU5NDlmXHU4ODc3XHU3ZWM4XHU3OWNkXHU4MGJmXHU5MWNkXHU0ZWYyXHU0ZjE3XHU4MjFmXHU1NDY4XHU1ZGRlXHU2ZDMyXHU4YmNjXHU3Y2E1XHU4''@;'; put 'put ''Zjc0XHU4MDk4XHU1ZTFhXHU1NDkyXHU3NmIxXHU1Yjk5XHU2NjNjXHU5YWE0XHU3M2UwXHU2ODJhXHU4NmRiXHU2NzMxXHU3MzJhXHU4YmY4XHU4YmRiXHU5MDEwXHU3YWY5XHU3MGRiXHU3MTZlXHU2MmM0XHU3N2E5XHU1NjMxXHU0ZTNiXHU4NDU3XHU2N2YxXHU1MmE5XHU4NmMwXHU4ZDJl''@;'; put 'put ''XHU5NGY4XHU3YjUxXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxNF1bdl1dPTU0Nzg0K3YsVFs1NDc4NCt2XT1rWzIxNF1bdl0pO2ZvcihrWzIxNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY0Zlx1NmNlOFx1Nzk1ZFx1OWE3Ylx1NjI5M1x1NzIyYVx1NjJmZFx1''@;'; put 'put ''NGUxM1x1NzgxNlx1OGY2Y1x1NjRiMFx1OGQ1YVx1N2JjNlx1Njg2OVx1NWU4NFx1ODhjNVx1NTk4Nlx1NjQ5ZVx1NThlZVx1NzJiNlx1NjkwZVx1OTUyNVx1OGZmZFx1OGQ1OFx1NTc2MFx1N2YwMFx1OGMwNlx1NTFjNlx1NjM0OVx1NjJkOVx1NTM1M1x1Njg0Y1x1NzQyMlx1ODMwMVx1OTE0''@;'; put 'put ''Y1x1NTU0NFx1Nzc0MFx1NzA3Y1x1NmQ0YVx1NTE3OVx1NTRhOFx1OGQ0NFx1NTlmZlx1NmVjYlx1NmRjNFx1NWI1Y1x1N2QyYlx1NGVkNFx1N2M3ZFx1NmVkM1x1NWI1MFx1ODFlYVx1NmUwZFx1NWI1N1x1OWIwM1x1NjhkNVx1OGUyYVx1NWI5N1x1N2VmY1x1NjAzYlx1N2ViNVx1OTBiOVx1''@;'; put 'put ''OGQ3MFx1NTk0Zlx1NjNjZFx1NzlkZlx1OGRiM1x1NTM1Mlx1NjVjZlx1Nzk1Nlx1OGJjNVx1OTYzYlx1N2VjNFx1OTRiYlx1N2U4Mlx1NTYzNFx1OTE4OVx1NjcwMFx1N2Y2YVx1NWMwYVx1OTA3NVx1NjYyOFx1NWRlNlx1NGY1MFx1NjdkZVx1NTA1YVx1NGY1Y1x1NTc1MFx1NWVhN1x1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxNV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMTVdW3ZdXT01NTA0MCt2LFRbNTUwNDArdl09a1syMTVdW3ZdKTtmb3Ioa1syMTZdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlOGRcdTRlMGNcdTUxNDBcdTRlMTBcdTVlZmZc''@;'; put 'put ''dTUzNDVcdTRlMTVcdTRlOThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhcdTc5YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBcdTRlNWNcdTRlNjlcdTRl''@;'; put 'put ''OTNcdTgyODhcdTViNWJcdTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUzYTNcdTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUyMzNcdTUyM2ZcdTUyNDBc''@;'; put 'put ''dTUyNGNcdTUyNWVcdTUyNjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFcdTUyOTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVcdTRmMjVcdTRmMjdcdTRm''@;'; put 'put ''MDlcdTRmMmJcdTRmNWVcdTRmNjdcdTY1MzhcdTRmNWFcdTRmNWRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxNl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE2XVt2XV09NTUyOTYrdixUWzU1Mjk2K3ZdPWtbMjE2XVt2XSk7Zm9yKGtb''@;'; put 'put ''MjE3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjVmXHU0ZjU3XHU0ZjMy''@;'; put 'put ''XHU0ZjNkXHU0Zjc2XHU0Zjc0XHU0ZjkxXHU0Zjg5XHU0ZjgzXHU0ZjhmXHU0ZjdlXHU0ZjdiXHU0ZmFhXHU0ZjdjXHU0ZmFjXHU0Zjk0XHU0ZmU2XHU0ZmU4XHU0ZmVhXHU0ZmM1XHU0ZmRhXHU0ZmUzXHU0ZmRjXHU0ZmQxXHU0ZmRmXHU0ZmY4XHU1MDI5XHU1MDRjXHU0ZmYzXHU1MDJjXHU1''@;'; put 'put ''MDBmXHU1MDJlXHU1MDJkXHU0ZmZlXHU1MDFjXHU1MDBjXHU1MDI1XHU1MDI4XHU1MDdlXHU1MDQzXHU1MDU1XHU1MDQ4XHU1MDRlXHU1MDZjXHU1MDdiXHU1MGE1XHU1MGE3XHU1MGE5XHU1MGJhXHU1MGQ2XHU1MTA2XHU1MGVkXHU1MGVjXHU1MGU2XHU1MGVlXHU1MTA3XHU1MTBiXHU0ZWRk''@;'; put 'put ''XHU2YzNkXHU0ZjU4XHU0ZjY1XHU0ZmNlXHU5ZmEwXHU2YzQ2XHU3Yzc0XHU1MTZlXHU1ZGZkXHU5ZWM5XHU5OTk4XHU1MTgxXHU1OTE0XHU1MmY5XHU1MzBkXHU4YTA3XHU1MzEwXHU1MWViXHU1OTE5XHU1MTU1XHU0ZWEwXHU1MTU2XHU0ZWIzXHU4ODZlXHU4OGE0XHU0ZWI1XHU4MTE0XHU4''@;'; put 'put ''OGQyXHU3OTgwXHU1YjM0XHU4ODAzXHU3ZmI4XHU1MWFiXHU1MWIxXHU1MWJkXHU1MWJjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjE3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMTddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIxN11bdl1dPTU1NTUyK3YsVFs1NTU1Mit2XT1rWzIx''@;'; put 'put ''N11bdl0pO2ZvcihrWzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTFj''@;'; put 'put ''N1x1NTE5Nlx1NTFhMlx1NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJlMFx1OGJlNFx1OGJlOFx1OGJlOVx1''@;'; put 'put ''OGJlZVx1OGJmMFx1OGJmM1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1OGMyMVx1OGMyNVx1OGMyN1x1OGMy''@;'; put 'put ''YVx1OGMyYlx1OGMyZVx1OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3NFx1OTY4OFx1OTY4ZFx1OTY5N1x1''@;'; put 'put ''OTZiMFx1OTA5N1x1OTA5Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIxOF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjE4XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMThdW3ZdXT01NTgwOCt2LFRb''@;'; put 'put ''NTU4MDgrdl09a1syMThdW3ZdKTtmb3Ioa1syMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTkwYjhcdTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkwYzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkxMzlcdTkxNDNcdTkxNDZc''@;'; put 'put ''dTUyMGRcdTU5NDJcdTUyYTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZcdTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2VcdTU4YmNcdTU4YzVcdTU4''@;'; put 'put ''ZDFcdTU3MjlcdTU3MmNcdTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3Y2ZcdTU3YTdcdTU3YjRc''@;'; put 'put ''dTU3OTNcdTU3YTBcdTU3ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRcdTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGRcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMTldLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIxOV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjE5XVt2''@;'; put 'put ''XV09NTYwNjQrdixUWzU2MDY0K3ZdPWtbMjE5XVt2XSk7Zm9yKGtbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ODBiXHU1ODBkXHU1N2ZkXHU1N2VkXHU1ODAwXHU1ODFlXHU1ODE5XHU1ODQ0XHU1ODIwXHU1ODY1XHU1ODZjXHU1ODgxXHU1ODg5XHU1ODlhXHU1ODgwXHU5OWE4XHU5ZjE5XHU2MWZmXHU4Mjc5XHU4MjdkXHU4MjdmXHU4MjhmXHU4MjhhXHU4MmE4''@;'; put 'put ''XHU4Mjg0XHU4MjhlXHU4MjkxXHU4Mjk3XHU4Mjk5XHU4MmFiXHU4MmI4XHU4MmJlXHU4MmIwXHU4MmM4XHU4MmNhXHU4MmUzXHU4Mjk4XHU4MmI3XHU4MmFlXHU4MmNiXHU4MmNjXHU4MmMxXHU4MmE5XHU4MmI0XHU4MmExXHU4MmFhXHU4MjlmXHU4MmM0XHU4MmNlXHU4MmE0XHU4MmUxXHU4''@;'; put 'put ''MzA5XHU4MmY3XHU4MmU0XHU4MzBmXHU4MzA3XHU4MmRjXHU4MmY0XHU4MmQyXHU4MmQ4XHU4MzBjXHU4MmZiXHU4MmQzXHU4MzExXHU4MzFhXHU4MzA2XHU4MzE0XHU4MzE1XHU4MmUwXHU4MmQ1XHU4MzFjXHU4MzUxXHU4MzViXHU4MzVjXHU4MzA4XHU4MzkyXHU4MzNjXHU4MzM0XHU4MzMx''@;'; put 'put ''XHU4MzliXHU4MzVlXHU4MzJmXHU4MzRmXHU4MzQ3XHU4MzQzXHU4MzVmXHU4MzQwXHU4MzE3XHU4MzYwXHU4MzJkXHU4MzNhXHU4MzMzXHU4MzY2XHU4MzY1XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIwXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjBdW3ZdLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihzZVtrWzIyMF1bdl1dPTU2MzIwK3YsVFs1NjMyMCt2XT1rWzIyMF1bdl0pO2ZvcihrWzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1ODM3ZFx1ODNiOFx1ODM3''@;'; put 'put ''Ylx1ODM5OFx1ODM5ZVx1ODNhOFx1ODNiYVx1ODNiY1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNmOVx1ODNlYVx1ODNjNVx1''@;'; put 'put ''ODNjMFx1ODQyNlx1ODNmMFx1ODNlMVx1ODQ1Y1x1ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1ODRlNlx1ODRiZFx1ODRk''@;'; put 'put ''M1x1ODRjYVx1ODRiZlx1ODRiYVx1ODRlMFx1ODRhMVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyMV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjIxXVt2XS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYoc2Vba1syMjFdW3ZdXT01NjU3Nit2LFRbNTY1NzYrdl09a1syMjFdW3ZdKTtmb3Ioa1syMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NTZcdTg1M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdcdTg1OGZcdTg1NzlcdTg1''@;'; put 'put ''YWVcdTg1OWNcdTg1ODVcdTg1YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZcdTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVjMjVcdTVjMmNcdTVjMzRc''@;'; put 'put ''dTYyNGNcdTYyNmFcdTYyOWZcdTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYyZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNcdTYzZjJcdTYzZjhcdTYz''@;'; put 'put ''ZTBcdTYzZmZcdTYzYzRcdTYzZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFcdTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTZcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjJdLmxlbmd0aDsrK3YpNjU1MzMh''@;'; put 'put ''PT1rWzIyMl1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjIyXVt2XV09NTY4MzIrdixUWzU2ODMyK3ZdPWtbMjIyXVt2XSk7Zm9yKGtbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDdhXHU2NGI3XHU2NGI4XHU2NDk5XHU2NGJhXHU2NGMwXHU2NGQwXHU2NGQ3XHU2NGU0XHU2NGUyXHU2NTA5XHU2NTI1XHU2NTJlXHU1ZjBiXHU1ZmQyXHU3NTE5XHU1ZjExXHU1''@;'; put 'put ''MzVmXHU1M2YxXHU1M2ZkXHU1M2U5XHU1M2U4XHU1M2ZiXHU1NDEyXHU1NDE2XHU1NDA2XHU1NDRiXHU1NDUyXHU1NDUzXHU1NDU0XHU1NDU2XHU1NDQzXHU1NDIxXHU1NDU3XHU1NDU5XHU1NDIzXHU1NDMyXHU1NDgyXHU1NDk0XHU1NDc3XHU1NDcxXHU1NDY0XHU1NDlhXHU1NDliXHU1NDg0''@;'; put 'put ''XHU1NDc2XHU1NDY2XHU1NDlkXHU1NGQwXHU1NGFkXHU1NGMyXHU1NGI0XHU1NGQyXHU1NGE3XHU1NGE2XHU1NGQzXHU1NGQ0XHU1NDcyXHU1NGEzXHU1NGQ1XHU1NGJiXHU1NGJmXHU1NGNjXHU1NGQ5XHU1NGRhXHU1NGRjXHU1NGE5XHU1NGFhXHU1NGE0XHU1NGRkXHU1NGNmXHU1NGRlXHU1''@;'; put 'put ''NTFiXHU1NGU3XHU1NTIwXHU1NGZkXHU1NTE0XHU1NGYzXHU1NTIyXHU1NTIzXHU1NTBmXHU1NTExXHU1NTI3XHU1NTJhXHU1NTY3XHU1NThmXHU1NWI1XHU1NTQ5XHU1NTZkXHU1NTQxXHU1NTU1XHU1NTNmXHU1NTUwXHU1NTNjXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjIzXS5sZW5n''@;'; put 'put ''dGg7Kyt2KTY1NTMzIT09a1syMjNdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyM11bdl1dPTU3MDg4K3YsVFs1NzA4OCt2XT1rWzIyM11bdl0pO2ZvcihrWzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTUzN1x1NTU1Nlx1NTU3NVx1NTU3Nlx1NTU3N1x1NTUzM1x1NTUzMFx1NTU1Y1x1NTU4Ylx1NTVkMlx1NTU4M1x1NTViMVx1NTViOVx1NTU4OFx1NTU4MVx1''@;'; put 'put ''NTU5Zlx1NTU3ZVx1NTVkNlx1NTU5MVx1NTU3Ylx1NTVkZlx1NTViZFx1NTViZVx1NTU5NFx1NTU5OVx1NTVlYVx1NTVmN1x1NTVjOVx1NTYxZlx1NTVkMVx1NTVlYlx1NTVlY1x1NTVkNFx1NTVlNlx1NTVkZFx1NTVjNFx1NTVlZlx1NTVlNVx1NTVmMlx1NTVmM1x1NTVjY1x1NTVjZFx1NTVl''@;'; put 'put ''OFx1NTVmNVx1NTVlNFx1OGY5NFx1NTYxZVx1NTYwOFx1NTYwY1x1NTYwMVx1NTYyNFx1NTYyM1x1NTVmZVx1NTYwMFx1NTYyN1x1NTYyZFx1NTY1OFx1NTYzOVx1NTY1N1x1NTYyY1x1NTY0ZFx1NTY2Mlx1NTY1OVx1NTY1Y1x1NTY0Y1x1NTY1NFx1NTY4Nlx1NTY2NFx1NTY3MVx1NTY2Ylx1''@;'; put 'put ''NTY3Ylx1NTY3Y1x1NTY4NVx1NTY5M1x1NTZhZlx1NTZkNFx1NTZkN1x1NTZkZFx1NTZlMVx1NTZmNVx1NTZlYlx1NTZmOVx1NTZmZlx1NTcwNFx1NTcwYVx1NTcwOVx1NTcxY1x1NWUwZlx1NWUxOVx1NWUxNFx1NWUxMVx1NWUzMVx1NWUzYlx1NWUzY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2''@;'; put 'put ''IT1rWzIyNF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI0XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjRdW3ZdXT01NzM0NCt2LFRbNTczNDQrdl09a1syMjRdW3ZdKTtmb3Ioa1syMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVjOTZcdTVjODhcdTVjOThc''@;'; put 'put ''dTVjOTlcdTVjOTFcdTVjOWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFcdTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVcdTVkMDZcdTVkMWJcdTVk''@;'; put 'put ''NThcdTVkM2VcdTVkMzRcdTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVkNGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVmOTVcdTVmOTlcdTVmOWNc''@;'; put 'put ''dTVmYThcdTVmYWRcdTVmYjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdcdTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNcdTcyZmFcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSx2PTA7diE9a1syMjVdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyNV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI1XVt2XV09NTc2MDArdixUWzU3NjAwK3ZdPWtbMjI1XVt2XSk7Zm9yKGtbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmZiXHU3MzE3XHU3MzEzXHU3MzIxXHU3MzBhXHU3MzFlXHU3MzFkXHU3MzE1XHU3MzIyXHU3MzM5XHU3MzI1''@;'; put 'put ''XHU3MzJjXHU3MzM4XHU3MzMxXHU3MzUwXHU3MzRkXHU3MzU3XHU3MzYwXHU3MzZjXHU3MzZmXHU3MzdlXHU4MjFiXHU1OTI1XHU5OGU3XHU1OTI0XHU1OTAyXHU5OTYzXHU5OTY3XHU5OTY4XHU5OTY5XHU5OTZhXHU5OTZiXHU5OTZjXHU5OTc0XHU5OTc3XHU5OTdkXHU5OTgwXHU5OTg0XHU5''@;'; put 'put ''OTg3XHU5OThhXHU5OThkXHU5OTkwXHU5OTkxXHU5OTkzXHU5OTk0XHU5OTk1XHU1ZTgwXHU1ZTkxXHU1ZThiXHU1ZTk2XHU1ZWE1XHU1ZWEwXHU1ZWI5XHU1ZWI1XHU1ZWJlXHU1ZWIzXHU4ZDUzXHU1ZWQyXHU1ZWQxXHU1ZWRiXHU1ZWU4XHU1ZWVhXHU4MWJhXHU1ZmM0XHU1ZmM5XHU1ZmQ2''@;'; put 'put ''XHU1ZmNmXHU2MDAzXHU1ZmVlXHU2MDA0XHU1ZmUxXHU1ZmU0XHU1ZmZlXHU2MDA1XHU2MDA2XHU1ZmVhXHU1ZmVkXHU1ZmY4XHU2MDE5XHU2MDM1XHU2MDI2XHU2MDFiXHU2MDBmXHU2MDBkXHU2MDI5XHU2MDJiXHU2MDBhXHU2MDNmXHU2MDIxXHU2MDc4XHU2MDc5XHU2MDdiXHU2MDdhXHU2''@;'; put 'put ''MDQyXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI2XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjZdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyNl1bdl1dPTU3ODU2K3YsVFs1Nzg1Nit2XT1rWzIyNl1bdl0pO2ZvcihrWzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1NjA4M1x1NjA5Mlx1NjA4''@;'; put 'put ''Y1x1NjA5Ylx1NjBlY1x1NjBiYlx1NjBiMVx1NjBkZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFmNVx1NWZkZFx1OTZiM1x1''@;'; put 'put ''OTVlOVx1OTVlYlx1OTVmMVx1OTVmM1x1OTVmNVx1OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1NjIxNVx1NmMzNVx1NmM1''@;'; put 'put ''NFx1NmM1Y1x1NmM0YVx1NmNhM1x1NmM4NVx1NmM5MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNlYlx1NmNlZVx1NmNiMVx1''@;'; put 'put ''NmNkM1x1NmNlZlx1NmNmZVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIyN10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjI3XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMjddW3ZdXT01ODExMit2LFRbNTgxMTIrdl09a1syMjddW3ZdKTtmb3Ioa1syMjhdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNcdTZkNDhcdTZkMDdcdTZk''@;'; put 'put ''MDRcdTZkMTlcdTZkMGVcdTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRcdTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZkYzVcdTZkZGVcdTZlMGVc''@;'; put 'put ''dTZkYmZcdTZkZTBcdTZlMTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZlMmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThcdTZlZTBcdTZmMmRcdTZl''@;'; put 'put ''ZTJcdTZlYTVcdTZlYTdcdTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJcdTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZmODlcdTZmOGRcdTZmOGNc''@;'; put 'put ''dTZmNzhcdTZmNzJcdTZmN2NcdTZmN2FcdTZmZDFcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMjhdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIyOF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjI4XVt2XV09NTgzNjgrdixUWzU4MzY4K3ZdPWtbMjI4XVt2XSk7Zm9yKGtbMjI5XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmM5XHU2ZmE3XHU2ZmI5XHU2ZmI2XHU2''@;'; put 'put ''ZmMyXHU2ZmUxXHU2ZmVlXHU2ZmRlXHU2ZmUwXHU2ZmVmXHU3MDFhXHU3MDIzXHU3MDFiXHU3MDM5XHU3MDM1XHU3MDRmXHU3MDVlXHU1YjgwXHU1Yjg0XHU1Yjk1XHU1YjkzXHU1YmE1XHU1YmI4XHU3NTJmXHU5YTllXHU2NDM0XHU1YmU0XHU1YmVlXHU4OTMwXHU1YmYwXHU4ZTQ3XHU4YjA3''@;'; put 'put ''XHU4ZmI2XHU4ZmQzXHU4ZmQ1XHU4ZmU1XHU4ZmVlXHU4ZmU0XHU4ZmU5XHU4ZmU2XHU4ZmYzXHU4ZmU4XHU5MDA1XHU5MDA0XHU5MDBiXHU5MDI2XHU5MDExXHU5MDBkXHU5MDE2XHU5MDIxXHU5MDM1XHU5MDM2XHU5MDJkXHU5MDJmXHU5MDQ0XHU5MDUxXHU5MDUyXHU5MDUwXHU5MDY4XHU5''@;'; put 'put ''MDU4XHU5MDYyXHU5MDViXHU2NmI5XHU5MDc0XHU5MDdkXHU5MDgyXHU5MDg4XHU5MDgzXHU5MDhiXHU1ZjUwXHU1ZjU3XHU1ZjU2XHU1ZjU4XHU1YzNiXHU1NGFiXHU1YzUwXHU1YzU5XHU1YjcxXHU1YzYzXHU1YzY2XHU3ZmJjXHU1ZjJhXHU1ZjI5XHU1ZjJkXHU4Mjc0XHU1ZjNjXHU5YjNi''@;'; put 'put ''XHU1YzZlXHU1OTgxXHU1OTgzXHU1OThkXHU1OWE5XHU1OWFhXHU1OWEzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjI5XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMjldW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIyOV1bdl1dPTU4NjI0K3YsVFs1ODYyNCt2XT1rWzIyOV1bdl0pO2Zv''@;'; put 'put ''cihrWzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTk5N1x1NTljYVx1''@;'; put 'put ''NTlhYlx1NTk5ZVx1NTlhNFx1NTlkMlx1NTliMlx1NTlhZlx1NTlkN1x1NTliZVx1NWEwNVx1NWEwNlx1NTlkZFx1NWEwOFx1NTllM1x1NTlkOFx1NTlmOVx1NWEwY1x1NWEwOVx1NWEzMlx1NWEzNFx1NWExMVx1NWEyM1x1NWExM1x1NWE0MFx1NWE2N1x1NWE0YVx1NWE1NVx1NWEzY1x1NWE2''@;'; put 'put ''Mlx1NWE3NVx1ODBlY1x1NWFhYVx1NWE5Ylx1NWE3N1x1NWE3YVx1NWFiZVx1NWFlYlx1NWFiMlx1NWFkMlx1NWFkNFx1NWFiOFx1NWFlMFx1NWFlM1x1NWFmMVx1NWFkNlx1NWFlNlx1NWFkOFx1NWFkY1x1NWIwOVx1NWIxN1x1NWIxNlx1NWIzMlx1NWIzN1x1NWI0MFx1NWMxNVx1NWMxY1x1''@;'; put 'put ''NWI1YVx1NWI2NVx1NWI3M1x1NWI1MVx1NWI1M1x1NWI2Mlx1OWE3NVx1OWE3N1x1OWE3OFx1OWE3YVx1OWE3Zlx1OWE3ZFx1OWE4MFx1OWE4MVx1OWE4NVx1OWE4OFx1OWE4YVx1OWE5MFx1OWE5Mlx1OWE5M1x1OWE5Nlx1OWE5OFx1OWE5Ylx1OWE5Y1x1OWE5ZFx1OWE5Zlx1OWFhMFx1OWFh''@;'; put 'put ''Mlx1OWFhM1x1OWFhNVx1OWFhN1x1N2U5Zlx1N2VhMVx1N2VhM1x1N2VhNVx1N2VhOFx1N2VhOVx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzMF0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMwXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzBdW3ZdXT01ODg4MCt2LFRbNTg4ODArdl09''@;'; put 'put ''a1syMzBdW3ZdKTtmb3Ioa1syMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTdlYWRcdTdlYjBcdTdlYmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdlYzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRcdTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJcdTdlZmVcdTdmMDFcdTdm''@;'; put 'put ''MDJcdTdmMDNcdTdmMDdcdTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZcdTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdmMWNcdTdmMWJcdTdmMWZcdTdmMjFcdTdmMjJcdTdmMjNcdTdmMjRcdTdmMjVcdTdmMjZcdTdmMjdcdTdmMmFcdTdmMmJcdTdmMmNcdTdmMmRcdTdmMmZcdTdmMzBcdTdmMzFc''@;'; put 'put ''dTdmMzJcdTdmMzNcdTdmMzVcdTVlN2FcdTc1N2ZcdTVkZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVcdTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFcdTczZTlcdTczZTdcdTcz''@;'; put 'put ''ZGVcdTczYmFcdTczZjJcdTc0MGZcdTc0MmFcdTc0NWJcdTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0MmNcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzFdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzMV1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjMxXVt2XV09NTkxMzYr''@;'; put 'put ''dixUWzU5MTM2K3ZdPWtbMjMxXVt2XSk7Zm9yKGtbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU3NDFiXHU3NDFhXHU3NDQxXHU3NDVjXHU3NDU3XHU3NDU1XHU3NDU5XHU3NDc3XHU3NDZkXHU3NDdlXHU3NDljXHU3NDhlXHU3NDgwXHU3NDgxXHU3NDg3XHU3NDhiXHU3NDllXHU3NGE4XHU3NGE5XHU3NDkwXHU3NGE3XHU3NGQyXHU3NGJhXHU5N2VhXHU5N2ViXHU5''@;'; put 'put ''N2VjXHU2NzRjXHU2NzUzXHU2NzVlXHU2NzQ4XHU2NzY5XHU2N2E1XHU2Nzg3XHU2NzZhXHU2NzczXHU2Nzk4XHU2N2E3XHU2Nzc1XHU2N2E4XHU2NzllXHU2N2FkXHU2NzhiXHU2Nzc3XHU2NzdjXHU2N2YwXHU2ODA5XHU2N2Q4XHU2ODBhXHU2N2U5XHU2N2IwXHU2ODBjXHU2N2Q5XHU2N2I1''@;'; put 'put ''XHU2N2RhXHU2N2IzXHU2N2RkXHU2ODAwXHU2N2MzXHU2N2I4XHU2N2UyXHU2ODBlXHU2N2MxXHU2N2ZkXHU2ODMyXHU2ODMzXHU2ODYwXHU2ODYxXHU2ODRlXHU2ODYyXHU2ODQ0XHU2ODY0XHU2ODgzXHU2ODFkXHU2ODU1XHU2ODY2XHU2ODQxXHU2ODY3XHU2ODQwXHU2ODNlXHU2ODRhXHU2''@;'; put 'put ''ODQ5XHU2ODI5XHU2OGI1XHU2ODhmXHU2ODc0XHU2ODc3XHU2ODkzXHU2ODZiXHU2OGMyXHU2OTZlXHU2OGZjXHU2OTFmXHU2OTIwXHU2OGY5XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjMyXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzJdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIz''@;'; put 'put ''Ml1bdl1dPTU5MzkyK3YsVFs1OTM5Mit2XT1rWzIzMl1bdl0pO2ZvcihrWzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3OFx1NjkzNFx1NjljY1x1Njk4N1x1Njk4OFx1NjljZVx1Njk4OVx1''@;'; put 'put ''Njk2Nlx1Njk2M1x1Njk3OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1NmE2NVx1NjlmMlx1NmE0NFx1NmEzZVx1NmFhMFx1NmE1MFx1NmE1''@;'; put 'put ''Ylx1NmEzNVx1NmE4ZVx1NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4ZFx1NmI5YVx1NmI5Ylx1NmJhMVx1NmJhYVx1OGY2Ylx1OGY2ZFx1''@;'; put 'put ''OGY3MVx1OGY3Mlx1OGY3M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4Ylx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzM10ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjMzXVt2XS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoc2Vba1syMzNdW3ZdXT01OTY0OCt2LFRbNTk2NDgrdl09a1syMzNdW3ZdKTtmb3Ioa1syMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFcdThlY2VcdTYyMGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0ZmZcdTc1MGZcdTc1MTFc''@;'; put 'put ''dTc1MTNcdTY1MzRcdTY1ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcwODVcdTY2ZjdcdTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFcdTY2NTdcdTY2NzdcdTY2''@;'; put 'put ''ODRcdTY2OGNcdTY2YTdcdTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZcdThkM2JcdThkM2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5Y2JcdTg5Y2NcdTg5Y2Vc''@;'; put 'put ''dTg5Y2ZcdTg5ZDBcdTg5ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcyOGJcdTcyOGRcdTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjBcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syMzRdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzNF1b''@;'; put 'put ''dl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM0XVt2XV09NTk5MDQrdixUWzU5OTA0K3ZdPWtbMjM0XVt2XSk7Zm9yKGtbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDNmXHU2NGQ4XHU4MDA0XHU2YmVhXHU2YmYzXHU2YmZkXHU2YmY1XHU2YmY5XHU2YzA1XHU2YzA3XHU2YzA2XHU2YzBkXHU2YzE1XHU2YzE4XHU2YzE5XHU2YzFhXHU2YzIxXHU2YzI5XHU2YzI0''@;'; put 'put ''XHU2YzJhXHU2YzMyXHU2NTM1XHU2NTU1XHU2NTZiXHU3MjRkXHU3MjUyXHU3MjU2XHU3MjMwXHU4NjYyXHU1MjE2XHU4MDlmXHU4MDljXHU4MDkzXHU4MGJjXHU2NzBhXHU4MGJkXHU4MGIxXHU4MGFiXHU4MGFkXHU4MGI0XHU4MGI3XHU4MGU3XHU4MGU4XHU4MGU5XHU4MGVhXHU4MGRiXHU4''@;'; put 'put ''MGMyXHU4MGM0XHU4MGQ5XHU4MGNkXHU4MGQ3XHU2NzEwXHU4MGRkXHU4MGViXHU4MGYxXHU4MGY0XHU4MGVkXHU4MTBkXHU4MTBlXHU4MGYyXHU4MGZjXHU2NzE1XHU4MTEyXHU4YzVhXHU4MTM2XHU4MTFlXHU4MTJjXHU4MTE4XHU4MTMyXHU4MTQ4XHU4MTRjXHU4MTUzXHU4MTc0XHU4MTU5''@;'; put 'put ''XHU4MTVhXHU4MTcxXHU4MTYwXHU4MTY5XHU4MTdjXHU4MTdkXHU4MTZkXHU4MTY3XHU1ODRkXHU1YWI1XHU4MTg4XHU4MTgyXHU4MTkxXHU2ZWQ1XHU4MWEzXHU4MWFhXHU4MWNjXHU2NzI2XHU4MWNhXHU4MWJiXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjM1XS5sZW5ndGg7Kyt2KTY1''@;'; put 'put ''NTMzIT09a1syMzVdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzNV1bdl1dPTYwMTYwK3YsVFs2MDE2MCt2XT1rWzIzNV1bdl0pO2ZvcihrWzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFjMVx1ODFhNlx1NmIyNFx1NmIzN1x1NmIzOVx1NmI0M1x1NmI0Nlx1NmI1OVx1OThkMVx1OThkMlx1OThkM1x1OThkNVx1OThkOVx1OThkYVx1NmJiM1x1NWY0MFx1NmJj''@;'; put 'put ''Mlx1ODlmM1x1NjU5MFx1OWY1MVx1NjU5M1x1NjViY1x1NjVjNlx1NjVjNFx1NjVjM1x1NjVjY1x1NjVjZVx1NjVkMlx1NjVkNlx1NzA4MFx1NzA5Y1x1NzA5Nlx1NzA5ZFx1NzBiYlx1NzBjMFx1NzBiN1x1NzBhYlx1NzBiMVx1NzBlOFx1NzBjYVx1NzExMFx1NzExM1x1NzExNlx1NzEyZlx1''@;'; put 'put ''NzEzMVx1NzE3M1x1NzE1Y1x1NzE2OFx1NzE0NVx1NzE3Mlx1NzE0YVx1NzE3OFx1NzE3YVx1NzE5OFx1NzFiM1x1NzFiNVx1NzFhOFx1NzFhMFx1NzFlMFx1NzFkNFx1NzFlN1x1NzFmOVx1NzIxZFx1NzIyOFx1NzA2Y1x1NzExOFx1NzE2Nlx1NzFiOVx1NjIzZVx1NjIzZFx1NjI0M1x1NjI0''@;'; put 'put ''OFx1NjI0OVx1NzkzYlx1Nzk0MFx1Nzk0Nlx1Nzk0OVx1Nzk1Ylx1Nzk1Y1x1Nzk1M1x1Nzk1YVx1Nzk2Mlx1Nzk1N1x1Nzk2MFx1Nzk2Zlx1Nzk2N1x1Nzk3YVx1Nzk4NVx1Nzk4YVx1Nzk5YVx1NzlhN1x1NzliM1x1NWZkMVx1NWZkMFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzNl0u''@;'; put 'put ''bGVuZ3RoOysrdik2NTUzMyE9PWtbMjM2XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzZdW3ZdXT02MDQxNit2LFRbNjA0MTYrdl09a1syMzZdW3ZdKTtmb3Ioa1syMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwM2NcdTYwNWRcdTYwNWFcdTYwNjdcdTYwNDFcdTYwNTlcdTYwNjNcdTYwYWJcdTYxMDZcdTYxMGRcdTYxNWRcdTYxYTlcdTYxOWRcdTYxY2JcdTYx''@;'; put 'put ''ZDFcdTYyMDZcdTgwODBcdTgwN2ZcdTZjOTNcdTZjZjZcdTZkZmNcdTc3ZjZcdTc3ZjhcdTc4MDBcdTc4MDlcdTc4MTdcdTc4MThcdTc4MTFcdTY1YWJcdTc4MmRcdTc4MWNcdTc4MWRcdTc4MzlcdTc4M2FcdTc4M2JcdTc4MWZcdTc4M2NcdTc4MjVcdTc4MmNcdTc4MjNcdTc4MjlcdTc4NGVc''@;'; put 'put ''dTc4NmRcdTc4NTZcdTc4NTdcdTc4MjZcdTc4NTBcdTc4NDdcdTc4NGNcdTc4NmFcdTc4OWJcdTc4OTNcdTc4OWFcdTc4ODdcdTc4OWNcdTc4YTFcdTc4YTNcdTc4YjJcdTc4YjlcdTc4YTVcdTc4ZDRcdTc4ZDlcdTc4YzlcdTc4ZWNcdTc4ZjJcdTc5MDVcdTc4ZjRcdTc5MTNcdTc5MjRcdTc5''@;'; put 'put ''MWVcdTc5MzRcdTlmOWJcdTllZjlcdTllZmJcdTllZmNcdTc2ZjFcdTc3MDRcdTc3MGRcdTc2ZjlcdTc3MDdcdTc3MDhcdTc3MWFcdTc3MjJcdTc3MTlcdTc3MmRcdTc3MjZcdTc3MzVcdTc3MzhcdTc3NTBcdTc3NTFcdTc3NDdcdTc3NDNcdTc3NWFcdTc3NjhcdWZmZmQiLnNwbGl0KCIiKSx2''@;'; put 'put ''PTA7diE9a1syMzddLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzIzN11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjM3XVt2XV09NjA2NzIrdixUWzYwNjcyK3ZdPWtbMjM3XVt2XSk7Zm9yKGtbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzYyXHU3NzY1XHU3NzdmXHU3NzhkXHU3NzdkXHU3NzgwXHU3NzhjXHU3NzkxXHU3NzlmXHU3N2EwXHU3N2IwXHU3N2I1XHU3''@;'; put 'put ''N2JkXHU3NTNhXHU3NTQwXHU3NTRlXHU3NTRiXHU3NTQ4XHU3NTViXHU3NTcyXHU3NTc5XHU3NTgzXHU3ZjU4XHU3ZjYxXHU3ZjVmXHU4YTQ4XHU3ZjY4XHU3Zjc0XHU3ZjcxXHU3Zjc5XHU3ZjgxXHU3ZjdlXHU3NmNkXHU3NmU1XHU4ODMyXHU5NDg1XHU5NDg2XHU5NDg3XHU5NDhiXHU5NDhh''@;'; put 'put ''XHU5NDhjXHU5NDhkXHU5NDhmXHU5NDkwXHU5NDk0XHU5NDk3XHU5NDk1XHU5NDlhXHU5NDliXHU5NDljXHU5NGEzXHU5NGE0XHU5NGFiXHU5NGFhXHU5NGFkXHU5NGFjXHU5NGFmXHU5NGIwXHU5NGIyXHU5NGI0XHU5NGI2XHU5NGI3XHU5NGI4XHU5NGI5XHU5NGJhXHU5NGJjXHU5NGJkXHU5''@;'; put 'put ''NGJmXHU5NGM0XHU5NGM4XHU5NGM5XHU5NGNhXHU5NGNiXHU5NGNjXHU5NGNkXHU5NGNlXHU5NGQwXHU5NGQxXHU5NGQyXHU5NGQ1XHU5NGQ2XHU5NGQ3XHU5NGQ5XHU5NGQ4XHU5NGRiXHU5NGRlXHU5NGRmXHU5NGUwXHU5NGUyXHU5NGU0XHU5NGU1XHU5NGU3XHU5NGU4XHU5NGVhXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksdj0wO3YhPWtbMjM4XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syMzhdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzIzOF1bdl1dPTYwOTI4K3YsVFs2MDkyOCt2XT1rWzIzOF1bdl0pO2ZvcihrWzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlOVx1OTRlYlx1OTRlZVx1OTRlZlx1OTRmM1x1OTRmNFx1OTRmNVx1OTRmN1x1OTRmOVx1OTRmY1x1''@;'; put 'put ''OTRmZFx1OTRmZlx1OTUwM1x1OTUwMlx1OTUwNlx1OTUwN1x1OTUwOVx1OTUwYVx1OTUwZFx1OTUwZVx1OTUwZlx1OTUxMlx1OTUxM1x1OTUxNFx1OTUxNVx1OTUxNlx1OTUxOFx1OTUxYlx1OTUxZFx1OTUxZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1OTUyY1x1OTUzMVx1OTUz''@;'; put 'put ''Mlx1OTUzNFx1OTUzNlx1OTUzN1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1OTU1NFx1OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1ZVx1OTU1Zlx1OTU1ZFx1''@;'; put 'put ''OTU2MVx1OTU2Mlx1OTU2NFx1OTU2NVx1OTU2Nlx1OTU2N1x1OTU2OFx1OTU2OVx1OTU2YVx1OTU2Ylx1OTU2Y1x1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1N2EwM1x1N2EwMlx1N2Ex''@;'; put 'put ''ZVx1N2ExNFx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzIzOV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjM5XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syMzldW3ZdXT02MTE4NCt2LFRbNjExODQrdl09a1syMzldW3ZdKTtmb3Ioa1syNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMzlcdTdhMzdcdTdhNTFcdTllY2ZcdTk5YTVcdTdhNzBcdTc2ODhcdTc2OGVc''@;'; put 'put ''dTc2OTNcdTc2OTlcdTc2YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjhcdTllMjlcdTllMmFcdTllMmJcdTllMmNcdTllMzJcdTllMzFcdTllMzZcdTllMzhcdTllMzdcdTllMzlcdTllM2FcdTllM2VcdTllNDFcdTllNDJcdTllNDRcdTllNDZcdTllNDdcdTllNDhcdTll''@;'; put 'put ''NDlcdTllNGJcdTllNGNcdTllNGVcdTllNTFcdTllNTVcdTllNTdcdTllNWFcdTllNWJcdTllNWNcdTllNWVcdTllNjNcdTllNjZcdTllNjdcdTllNjhcdTllNjlcdTllNmFcdTllNmJcdTllNmNcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1YTBcdTc1OWRcdTc1YWNc''@;'; put 'put ''dTc1YTNcdTc1YjNcdTc1YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNcdTc2MTdcdTc2MGFcdTc2''@;'; put 'put ''MjVcdTc2MThcdTc2MTVcdTc2MTlcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDBdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0MF1bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQwXVt2XV09NjE0NDArdixUWzYxNDQwK3ZdPWtbMjQwXVt2XSk7Zm9yKGtbMjQxXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjFiXHU3NjNjXHU3NjIyXHU3NjIwXHU3NjQwXHU3NjJk''@;'; put 'put ''XHU3NjMwXHU3NjNmXHU3NjM1XHU3NjQzXHU3NjNlXHU3NjMzXHU3NjRkXHU3NjVlXHU3NjU0XHU3NjVjXHU3NjU2XHU3NjZiXHU3NjZmXHU3ZmNhXHU3YWU2XHU3YTc4XHU3YTc5XHU3YTgwXHU3YTg2XHU3YTg4XHU3YTk1XHU3YWE2XHU3YWEwXHU3YWFjXHU3YWE4XHU3YWFkXHU3YWIzXHU4''@;'; put 'put ''ODY0XHU4ODY5XHU4ODcyXHU4ODdkXHU4ODdmXHU4ODgyXHU4OGEyXHU4OGM2XHU4OGI3XHU4OGJjXHU4OGM5XHU4OGUyXHU4OGNlXHU4OGUzXHU4OGU1XHU4OGYxXHU4OTFhXHU4OGZjXHU4OGU4XHU4OGZlXHU4OGYwXHU4OTIxXHU4OTE5XHU4OTEzXHU4OTFiXHU4OTBhXHU4OTM0XHU4OTJi''@;'; put 'put ''XHU4OTM2XHU4OTQxXHU4OTY2XHU4OTdiXHU3NThiXHU4MGU1XHU3NmIyXHU3NmI0XHU3N2RjXHU4MDEyXHU4MDE0XHU4MDE2XHU4MDFjXHU4MDIwXHU4MDIyXHU4MDI1XHU4MDI2XHU4MDI3XHU4MDI5XHU4MDI4XHU4MDMxXHU4MDBiXHU4MDM1XHU4MDQzXHU4MDQ2XHU4MDRkXHU4MDUyXHU4''@;'; put 'put ''MDY5XHU4MDcxXHU4OTgzXHU5ODc4XHU5ODgwXHU5ODgzXHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQxXS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDFdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0MV1bdl1dPTYxNjk2K3YsVFs2MTY5Nit2XT1rWzI0MV1bdl0pO2ZvcihrWzI0Ml09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg4OVx1OTg4Y1x1OTg4ZFx1OTg4''@;'; put 'put ''Zlx1OTg5NFx1OTg5YVx1OTg5Ylx1OTg5ZVx1OTg5Zlx1OThhMVx1OThhMlx1OThhNVx1OThhNlx1ODY0ZFx1ODY1NFx1ODY2Y1x1ODY2ZVx1ODY3Zlx1ODY3YVx1ODY3Y1x1ODY3Ylx1ODZhOFx1ODY4ZFx1ODY4Ylx1ODZhY1x1ODY5ZFx1ODZhN1x1ODZhM1x1ODZhYVx1ODY5M1x1ODZhOVx1''@;'; put 'put ''ODZiNlx1ODZjNFx1ODZiNVx1ODZjZVx1ODZiMFx1ODZiYVx1ODZiMVx1ODZhZlx1ODZjOVx1ODZjZlx1ODZiNFx1ODZlOVx1ODZmMVx1ODZmMlx1ODZlZFx1ODZmM1x1ODZkMFx1ODcxM1x1ODZkZVx1ODZmNFx1ODZkZlx1ODZkOFx1ODZkMVx1ODcwM1x1ODcwN1x1ODZmOFx1ODcwOFx1ODcw''@;'; put 'put ''YVx1ODcwZFx1ODcwOVx1ODcyM1x1ODczYlx1ODcxZVx1ODcyNVx1ODcyZVx1ODcxYVx1ODczZVx1ODc0OFx1ODczNFx1ODczMVx1ODcyOVx1ODczN1x1ODczZlx1ODc4Mlx1ODcyMlx1ODc3ZFx1ODc3ZVx1ODc3Ylx1ODc2MFx1ODc3MFx1ODc0Y1x1ODc2ZVx1ODc4Ylx1ODc1M1x1ODc2M1x1''@;'; put 'put ''ODc3Y1x1ODc2NFx1ODc1OVx1ODc2NVx1ODc5M1x1ODdhZlx1ODdhOFx1ODdkMlx1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0Ml0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQyXVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vba1syNDJdW3ZdXT02MTk1Mit2LFRbNjE5NTIrdl09a1syNDJdW3Zd''@;'; put 'put ''KTtmb3Ioa1syNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg3YzZcdTg3''@;'; put 'put ''ODhcdTg3ODVcdTg3YWRcdTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNcdTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4MjFcdTg4MzlcdTg4M2Nc''@;'; put 'put ''dTdmMzZcdTdmNDJcdTdmNDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdiMDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJcdTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2VcdTdiMWVcdTdiNThcdTdi''@;'; put 'put ''NWFcdTdiNDVcdTdiNzVcdTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2JcdTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdiYTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdiYzFcdTdiY2NcdTdiZGRc''@;'; put 'put ''dTdiZGFcdTdiZTVcdTdiZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdjMGZcdTdjMTZcdTdjMGJcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDNdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0M11bdl0uY2hhckNvZGVBdCgwKSYmKHNlW2tbMjQzXVt2XV09NjIyMDgrdixUWzYyMjA4''@;'; put 'put ''K3ZdPWtbMjQzXVt2XSk7Zm9yKGtbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU3YzFmXHU3YzJhXHU3YzI2XHU3YzM4XHU3YzQxXHU3YzQwXHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA0XHU4MWVjXHU4ODQ0XHU4MjIxXHU4MjIyXHU4MjIzXHU4MjJkXHU4MjJmXHU4MjI4XHU4MjJiXHU4MjM4XHU4MjNiXHU4MjMzXHU4MjM0XHU4MjNlXHU4MjQ0XHU4MjQ5XHU4MjRi''@;'; put 'put ''XHU4MjRmXHU4MjVhXHU4MjVmXHU4MjY4XHU4ODdlXHU4ODg1XHU4ODg4XHU4OGQ4XHU4OGRmXHU4OTVlXHU3ZjlkXHU3ZjlmXHU3ZmE3XHU3ZmFmXHU3ZmIwXHU3ZmIyXHU3YzdjXHU2NTQ5XHU3YzkxXHU3YzlkXHU3YzljXHU3YzllXHU3Y2EyXHU3Y2IyXHU3Y2JjXHU3Y2JkXHU3Y2MxXHU3''@;'; put 'put ''Y2M3XHU3Y2NjXHU3Y2NkXHU3Y2M4XHU3Y2M1XHU3Y2Q3XHU3Y2U4XHU4MjZlXHU2NmE4XHU3ZmJmXHU3ZmNlXHU3ZmQ1XHU3ZmU1XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmVlXHU3ZmYzXHU3Y2Y4XHU3ZDc3XHU3ZGE2XHU3ZGFlXHU3ZTQ3XHU3ZTliXHU5ZWI4XHU5ZWI0XHU4ZDczXHU4ZDg0''@;'; put 'put ''XHU4ZDk0XHU4ZDkxXHU4ZGIxXHU4ZDY3XHU4ZDZkXHU4YzQ3XHU4YzQ5XHU5MTRhXHU5MTUwXHU5MTRlXHU5MTRmXHU5MTY0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ0XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1syNDRdW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0NF1bdl1dPTYy''@;'; put 'put ''NDY0K3YsVFs2MjQ2NCt2XT1rWzI0NF1bdl0pO2ZvcihrWzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1OTE2Mlx1OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5MVx1OTFhMlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1OTFiNFx1OTFiYVx1OGM1''@;'; put 'put ''NVx1OWU3ZVx1OGRiOFx1OGRlYlx1OGUwNVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1OGRkYlx1OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRmYlx1OGRlNFx1OGUwOVx1''@;'; put 'put ''OGRmZFx1OGUxNFx1OGUxZFx1OGUxZlx1OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1MVx1OGU1Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1OGU4NVx1OGU4Zlx1OGU5''@;'; put 'put ''NFx1OGU5MFx1OGU5Y1x1OGU5ZVx1OGM3OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkY1x1ZmZmZCIuc3BsaXQoIiIpLHY9MDt2IT1rWzI0NV0ubGVuZ3RoOysrdik2NTUzMyE9PWtbMjQ1XVt2XS5jaGFyQ29kZUF0KDApJiYoc2Vb''@;'; put 'put ''a1syNDVdW3ZdXT02MjcyMCt2LFRbNjI3MjArdl09a1syNDVdW3ZdKTtmb3Ioa1syNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNcdTk2ZTlcdTk2ZjNcdTk2ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNcdTlmODVcdTlmODZcdTlm''@;'; put 'put ''ODdcdTlmODhcdTlmODlcdTlmOGFcdTlmOGNcdTllZmVcdTlmMGJcdTlmMGRcdTk2YjlcdTk2YmNcdTk2YmRcdTk2Y2VcdTk2ZDJcdTc3YmZcdTk2ZTBcdTkyOGVcdTkyYWVcdTkyYzhcdTkzM2VcdTkzNmFcdTkzY2FcdTkzOGZcdTk0M2VcdTk0NmJcdTljN2ZcdTljODJcdTljODVcdTljODZc''@;'; put 'put ''dTljODdcdTljODhcdTdhMjNcdTljOGJcdTljOGVcdTljOTBcdTljOTFcdTljOTJcdTljOTRcdTljOTVcdTljOWFcdTljOWJcdTljOWVcdTljOWZcdTljYTBcdTljYTFcdTljYTJcdTljYTNcdTljYTVcdTljYTZcdTljYTdcdTljYThcdTljYTlcdTljYWJcdTljYWRcdTljYWVcdTljYjBcdTlj''@;'; put 'put ''YjFcdTljYjJcdTljYjNcdTljYjRcdTljYjVcdTljYjZcdTljYjdcdTljYmFcdTljYmJcdTljYmNcdTljYmRcdTljYzRcdTljYzVcdTljYzZcdTljYzdcdTljY2FcdTljY2JcdWZmZmQiLnNwbGl0KCIiKSx2PTA7diE9a1syNDZdLmxlbmd0aDsrK3YpNjU1MzMhPT1rWzI0Nl1bdl0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKHNlW2tbMjQ2XVt2XV09NjI5NzYrdixUWzYyOTc2K3ZdPWtbMjQ2XVt2XSk7Zm9yKGtbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2NjXHU5Y2NkXHU5Y2NlXHU5Y2NmXHU5Y2QwXHU5Y2QzXHU5Y2Q0XHU5Y2Q1XHU5Y2Q3XHU5Y2Q4XHU5Y2Q5XHU5Y2RjXHU5Y2RkXHU5Y2RmXHU5Y2UyXHU5NzdjXHU5Nzg1XHU5NzkxXHU5NzkyXHU5Nzk0XHU5''@;'; put 'put ''N2FmXHU5N2FiXHU5N2EzXHU5N2IyXHU5N2I0XHU5YWIxXHU5YWIwXHU5YWI3XHU5ZTU4XHU5YWI2XHU5YWJhXHU5YWJjXHU5YWMxXHU5YWMwXHU5YWM1XHU5YWMyXHU5YWNiXHU5YWNjXHU5YWQxXHU5YjQ1XHU5YjQzXHU5YjQ3XHU5YjQ5XHU5YjQ4XHU5YjRkXHU5YjUxXHU5OGU4XHU5OTBk''@;'; put 'put ''XHU5OTJlXHU5OTU1XHU5OTU0XHU5YWRmXHU5YWUxXHU5YWU2XHU5YWVmXHU5YWViXHU5YWZiXHU5YWVkXHU5YWY5XHU5YjA4XHU5YjBmXHU5YjEzXHU5YjFmXHU5YjIzXHU5ZWJkXHU5ZWJlXHU3ZTNiXHU5ZTgyXHU5ZTg3XHU5ZTg4XHU5ZThiXHU5ZTkyXHU5M2Q2XHU5ZTlkXHU5ZTlmXHU5''@;'; put 'put ''ZWRiXHU5ZWRjXHU5ZWRkXHU5ZWUwXHU5ZWRmXHU5ZWUyXHU5ZWU5XHU5ZWU3XHU5ZWU1XHU5ZWVhXHU5ZWVmXHU5ZjIyXHU5ZjJjXHU5ZjJmXHU5ZjM5XHU5ZjM3XHU5ZjNkXHU5ZjNlXHU5ZjQ0XHVmZmZkIi5zcGxpdCgiIiksdj0wO3YhPWtbMjQ3XS5sZW5ndGg7Kyt2KTY1NTMzIT09a1sy''@;'; put 'put ''NDddW3ZdLmNoYXJDb2RlQXQoMCkmJihzZVtrWzI0N11bdl1dPTYzMjMyK3YsVFs2MzIzMit2XT1rWzI0N11bdl0pO3JldHVybntlbmM6c2UsZGVjOlR9fSgpLHplWzEwMDI5XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxy''@;'; put 'put ''XHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6''@;'; put 'put ''e3x9flx4N2ZceGM0XHUwMTAwXHUwMTAxXHhjOVx1MDEwNFx4ZDZceGRjXHhlMVx1MDEwNVx1MDEwY1x4ZTRcdTAxMGRcdTAxMDZcdTAxMDdceGU5XHUwMTc5XHUwMTdhXHUwMTBlXHhlZFx1MDEwZlx1MDExMlx1MDExM1x1MDExNlx4ZjNcdTAxMTdceGY0XHhmNlx4ZjVceGZhXHUwMTFhXHUw''@;'; put 'put ''MTFiXHhmY1x1MjAyMFx4YjBcdTAxMThceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJcdTAxMTlceGE4XHUyMjYwXHUwMTIzXHUwMTJlXHUwMTJmXHUwMTJhXHUyMjY0XHUyMjY1XHUwMTJiXHUwMTM2XHUyMjAyXHUyMjExXHUwMTQyXHUwMTNiXHUwMTNjXHUwMTNkXHUwMTNl''@;'; put 'put ''XHUwMTM5XHUwMTNhXHUwMTQ1XHUwMTQ2XHUwMTQzXHhhY1x1MjIxYVx1MDE0NFx1MDE0N1x1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDE0OFx1MDE1MFx4ZDVcdTAxNTFcdTAxNGNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHUwMTRkXHUwMTU0XHUw''@;'; put 'put ''MTU1XHUwMTU4XHUyMDM5XHUyMDNhXHUwMTU5XHUwMTU2XHUwMTU3XHUwMTYwXHUyMDFhXHUyMDFlXHUwMTYxXHUwMTVhXHUwMTViXHhjMVx1MDE2NFx1MDE2NVx4Y2RcdTAxN2RcdTAxN2VcdTAxNmFceGQzXHhkNFx1MDE2Ylx1MDE2ZVx4ZGFcdTAxNmZcdTAxNzBcdTAxNzFcdTAxNzJcdTAx''@;'; put 'put ''NzNceGRkXHhmZFx1MDEzN1x1MDE3Ylx1MDE0MVx1MDE3Y1x1MDEyMlx1MDJjNyIsc2U9W10saz17fSx2PTA7MjU2IT12Oysrdik2NTUzMyE9PVQuY2hhckNvZGVBdCh2KSYmKGtbVC5jaGFyQXQodildPXYpLHNlW3ZdPVQuY2hhckF0KHYpO3JldHVybntlbmM6ayxkZWM6c2V9fSgpLHplWzEw''@;'; put 'put ''MDc5XT1mdW5jdGlvbigpe2Zvcih2YXIgVD0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2''@;'; put 'put ''Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVm''@;'; put 'put ''XHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x4ZGRceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBc''@;'; put 'put ''dTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIw''@;'; put 'put ''NDRceGE0XHhkMFx4ZjBceGRlXHhmZVx4ZmRceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRc''@;'; put 'put ''dTAyZGJcdTAyYzciLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVsxMDA4MV09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4''@;'; put 'put ''MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ''@;'; put 'put ''WltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhm''@;'; put 'put ''Ylx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4''@;'; put 'put ''YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTAxMWVcdTAxMWZcdTAxMzBcdTAxMzFcdTAxNWVcdTAxNWZc''@;'; put 'put ''dTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHVmZmZkXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLHNlPVtdLGs9''@;'; put 'put ''e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSx6ZVsyODU5MV09ZnVuY3Rpb24oKXtmb3IodmFyIFQ9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgw''@;'; put 'put ''N1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5ent8fX5ceDdmXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEz''@;'; put 'put ''XHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2Nc''@;'; put 'put ''eGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4''@;'; put 'put ''ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYiLHNlPVtdLGs9e30sdj0wOzI1NiE9djsrK3YpNjU1MzMhPT1ULmNoYXJDb2RlQXQodikmJihrW1QuY2hhckF0KHYpXT12KSxzZVt2XT1ULmNoYXJBdCh2KTtyZXR1cm57ZW5jOmssZGVjOnNlfX0oKSxXZS5leHBvcnRzJiZ0''@;'; put 'put ''eXBlb2YgRE9fTk9UX0VYUE9SVF9DT0RFUEFHRT4idSImJihXZS5leHBvcnRzPXplKSxmdW5jdGlvbihULHNlKXsidXNlIHN0cmljdCI7aWYodHlwZW9mIHplPiJ1Iil7dmFyIGs9emU7V2UuZXhwb3J0cyYmdHlwZW9mIERPX05PVF9FWFBPUlRfQ09ERVBBR0U+InUiP1dlLmV4cG9ydHM9c2Uo''@;'; put 'put ''ayk6VC5jcHRhYmxlPXNlKGspfWVsc2UgemU9c2UoemUpfSh0aGlzLGZ1bmN0aW9uKFQpeyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9ezEyMDA6InV0ZjE2bGUiLDEyMDE6InV0ZjE2YmUiLDEyZTM6InV0ZjMybGUiLDEyMDAxOiJ1dGYzMmJlIiwxNjk2OToidXRmNjRsZSIsMjAxMjc6ImFzY2lpIiw2''@;'; put 'put ''NWUzOiJ1dGY3Iiw2NTAwMToidXRmOCJ9LGs9Wzg3NCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDFlNF0sdj1bOTMyLDkzNiw5NDksOTUwXSxoZT1bNjUwMDFdLEg9e30sQj17fSxMPXt9LEs9e30sSj1mdW5jdGlvbihNKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShN''@;'; put 'put ''KX0sST1mdW5jdGlvbihNKXtyZXR1cm4gTS5jaGFyQ29kZUF0KDApfSxSPXR5cGVvZiBCdWZmZXI8InUiLEU9ZnVuY3Rpb24oKXt9O2lmKFIpe3ZhciB6PSFCdWZmZXIuZnJvbTtpZigheil0cnl7QnVmZmVyLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaHt6PSEwfUU9ej9mdW5jdGlvbihDLE0p''@;'; put 'put ''e3JldHVybiBNP25ldyBCdWZmZXIoQyxNKTpuZXcgQnVmZmVyKEMpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlciksQnVmZmVyLmFsbG9jVW5zYWZlfHwoQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgQnVmZmVyKEMpfSk7dmFyIGo9MTAyNCxWPUJ1ZmZlci5hbGxv''@;'; put 'put ''Y1Vuc2FmZShqKSxXPWZ1bmN0aW9uKE0pe3ZhciB5PWZ1bmN0aW9uKE0pe2Zvcih2YXIgeT1CdWZmZXIuYWxsb2NVbnNhZmUoNjU1MzYpLHA9MDtwPDY1NTM2OysrcCl5W3BdPTA7Zm9yKHZhciBTPU9iamVjdC5rZXlzKE0pLFE9Uy5sZW5ndGgscmU9MCxmZT1TW3JlXTtyZTxROysrcmUpKGZl''@;'; put 'put ''PVNbcmVdKSYmKHlbZmUuY2hhckNvZGVBdCgwKV09TVtmZV0pO3JldHVybiB5fShUW01dLmVuYyk7cmV0dXJuIGZ1bmN0aW9uKFMsUSl7dmFyIGZlLHJlPVMubGVuZ3RoLG1lPTAsa2U9MCxUZT0wLFBlPTA7aWYoInN0cmluZyI9PXR5cGVvZiBTKWZvcihmZT1CdWZmZXIuYWxsb2NVbnNhZmUo''@;'; put 'put ''cmUpLG1lPTA7bWU8cmU7KyttZSlmZVttZV09eVtTLmNoYXJDb2RlQXQobWUpXTtlbHNlIGlmKEJ1ZmZlci5pc0J1ZmZlcihTKSl7Zm9yKGZlPUJ1ZmZlci5hbGxvY1Vuc2FmZSgyKnJlKSxrZT0wLG1lPTA7bWU8cmU7KyttZSkoVGU9U1ttZV0pPDEyOD9mZVtrZSsrXT15W1RlXTpUZTwyMjQ/''@;'; put 'put ''KGZlW2tlKytdPXlbKCgzMSZUZSk8PDYpKyg2MyZTW21lKzFdKV0sKyttZSk6VGU8MjQwPyhmZVtrZSsrXT15WygoMTUmVGUpPDwxMikrKCg2MyZTW21lKzFdKTw8NikrKDYzJlNbbWUrMl0pXSxtZSs9Mik6KFBlPSgoNyZUZSk8PDE4KSsoKDYzJlNbbWUrMV0pPDwxMikrKCg2MyZTW21lKzJd''@;'; put 'put ''KTw8NikrKDYzJlNbbWUrM10pLG1lKz0zLFBlPDY1NTM2P2ZlW2tlKytdPXlbUGVdOihmZVtrZSsrXT15WzU1Mjk2KygoUGUtPTY1NTM2KT4+MTAmMTAyMyldLGZlW2tlKytdPXlbNTYzMjArKDEwMjMmUGUpXSkpO2ZlPWZlLnNsaWNlKDAsa2UpfWVsc2UgZm9yKGZlPUJ1ZmZlci5hbGxvY1Vu''@;'; put 'put ''c2FmZShyZSksbWU9MDttZTxyZTsrK21lKWZlW21lXT15W1NbbWVdLmNoYXJDb2RlQXQoMCldO3JldHVybiBRJiYiYnVmIiE9PVE/ImFyciIhPT1RP2ZlLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKGZlKTpmZX19LFU9ZnVuY3Rpb24oTSl7dmFyIHk9VFtNXS5kZWMscD1CdWZm''@;'; put 'put ''ZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxTPTAsUT0iIjtmb3IoUz0wO1M8eS5sZW5ndGg7KytTKWlmKFE9eVtTXSl7dmFyIHJlPVEuY2hhckNvZGVBdCgwKTtwWzIqU109MjU1JnJlLHBbMipTKzFdPXJlPj44fXJldHVybiBmdW5jdGlvbihtZSl7dmFyIGtlPW1lLmxlbmd0aCxUZT0wLFBlPTA7''@;'; put 'put ''aWYoMiprZT5qJiYoaj0yKmtlLFY9QnVmZmVyLmFsbG9jVW5zYWZlKGopKSxCdWZmZXIuaXNCdWZmZXIobWUpKWZvcihUZT0wO1RlPGtlO1RlKyspVlsyKlRlXT1wW1BlPTIqbWVbVGVdXSxWWzIqVGUrMV09cFtQZSsxXTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgbWUpZm9yKFRlPTA7VGU8''@;'; put 'put ''a2U7VGUrKylQZT0yKm1lLmNoYXJDb2RlQXQoVGUpLFZbMipUZV09cFtQZV0sVlsyKlRlKzFdPXBbUGUrMV07ZWxzZSBmb3IoVGU9MDtUZTxrZTtUZSsrKVZbMipUZV09cFtQZT0yKm1lW1RlXV0sVlsyKlRlKzFdPXBbUGUrMV07cmV0dXJuIFYuc2xpY2UoMCwyKmtlKS50b1N0cmluZygidWNz''@;'; put 'put ''MiIpfX0scT1mdW5jdGlvbihNKXtmb3IodmFyIHk9VFtNXS5lbmMscD1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxTPTA7UzwxMzEwNzI7KytTKXBbU109MDtmb3IodmFyIFE9T2JqZWN0LmtleXMoeSkscmU9MCxmZT1RW3JlXTtyZTxRLmxlbmd0aDsrK3JlKWlmKGZlPVFbcmVdKXt2YXIg''@;'; put 'put ''bWU9ZmUuY2hhckNvZGVBdCgwKTtwWzIqbWVdPTI1NSZ5W2ZlXSxwWzIqbWUrMV09eVtmZV0+Pjh9cmV0dXJuIGZ1bmN0aW9uKFRlLFBlKXt2YXIgRmU9VGUubGVuZ3RoLE5lPUJ1ZmZlci5hbGxvY1Vuc2FmZSgyKkZlKSxMZT0wLEJlPTAsSGU9MCxRZT0wLG10PTA7aWYoInN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBUZSl7Zm9yKExlPVFlPTA7TGU8RmU7KytMZSlCZT0yKlRlLmNoYXJDb2RlQXQoTGUpLE5lW1FlKytdPXBbQmUrMV18fHBbQmVdLHBbQmUrMV0+MCYmKE5lW1FlKytdPXBbQmVdKTtOZT1OZS5zbGljZSgwLFFlKX1lbHNlIGlmKEJ1ZmZlci5pc0J1ZmZlcihUZSkpe2ZvcihMZT1RZT0w''@;'; put 'put ''O0xlPEZlOysrTGUpKG10PVRlW0xlXSk8MTI4P0JlPW10Om10PDIyND8oQmU9KCgzMSZtdCk8PDYpKyg2MyZUZVtMZSsxXSksKytMZSk6bXQ8MjQwPyhCZT0oKDE1Jm10KTw8MTIpKygoNjMmVGVbTGUrMV0pPDw2KSsoNjMmVGVbTGUrMl0pLExlKz0yKTooQmU9KCg3Jm10KTw8MTgpKygoNjMm''@;'; put 'put ''VGVbTGUrMV0pPDwxMikrKCg2MyZUZVtMZSsyXSk8PDYpKyg2MyZUZVtMZSszXSksTGUrPTMpLEJlPDY1NTM2PyhOZVtRZSsrXT1wWzErKEJlKj0yKV18fHBbQmVdLHBbQmUrMV0+MCYmKE5lW1FlKytdPXBbQmVdKSk6KE5lW1FlKytdPXBbMSsoQmU9MiooNTUyOTYrKChIZT1CZS02NTUzNik+''@;'; put 'put ''PjEwJjEwMjMpKSldfHxwW0JlXSxwW0JlKzFdPjAmJihOZVtRZSsrXT1wW0JlXSksTmVbUWUrK109cFsxKyhCZT0yKig1NjMyMCsoMTAyMyZIZSkpKV18fHBbQmVdLHBbQmUrMV0+MCYmKE5lW1FlKytdPXBbQmVdKSk7TmU9TmUuc2xpY2UoMCxRZSl9ZWxzZSBmb3IoTGU9UWU9MDtMZTxGZTtM''@;'; put 'put ''ZSsrKUJlPTIqVGVbTGVdLmNoYXJDb2RlQXQoMCksTmVbUWUrK109cFtCZSsxXXx8cFtCZV0scFtCZSsxXT4wJiYoTmVbUWUrK109cFtCZV0pO3JldHVybiBQZSYmImJ1ZiIhPT1QZT8iYXJyIiE9PVBlP05lLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKE5lKTpOZX19LHRlPWZ1''@;'; put 'put ''bmN0aW9uKE0pe3ZhciBRLHk9VFtNXS5kZWMscD1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSxTPTAscmU9MCxmZT0wLG1lPTA7Zm9yKG1lPTA7bWU8NjU1MzY7KyttZSlwWzIqbWVdPTI1NSxwWzIqbWUrMV09MjUzO2ZvcihTPTA7Uzx5Lmxlbmd0aDsrK1MpKFE9eVtTXSkmJihyZT1RLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkscFtmZT0yKlNdPTI1NSZyZSxwW2ZlKzFdPXJlPj44KTtyZXR1cm4gZnVuY3Rpb24oVGUpe3ZhciBQZT1UZS5sZW5ndGgsRmU9QnVmZmVyLmFsbG9jVW5zYWZlKDIqUGUpLE5lPTAsTGU9MCxCZT0wO2lmKEJ1ZmZlci5pc0J1ZmZlcihUZSkpZm9yKE5lPTA7TmU8UGU7TmUr''@;'; put 'put ''KykyNTU9PT1wW0xlPTIqVGVbTmVdXSYmMjUzPT09cFtMZSsxXSYmKExlPTIqKChUZVtOZV08PDgpK1RlW05lKzFdKSwrK05lKSxGZVtCZSsrXT1wW0xlXSxGZVtCZSsrXT1wW0xlKzFdO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBUZSlmb3IoTmU9MDtOZTxQZTtOZSsrKUxlPTIqVGUuY2hh''@;'; put 'put ''ckNvZGVBdChOZSksMjU1PT09cFtMZV0mJjI1Mz09PXBbTGUrMV0mJihMZT0yKigoVGUuY2hhckNvZGVBdChOZSk8PDgpK1RlLmNoYXJDb2RlQXQoTmUrMSkpLCsrTmUpLEZlW0JlKytdPXBbTGVdLEZlW0JlKytdPXBbTGUrMV07ZWxzZSBmb3IoTmU9MDtOZTxQZTtOZSsrKTI1NT09PXBbTGU9''@;'; put 'put ''MipUZVtOZV1dJiYyNTM9PT1wW0xlKzFdJiYoTGU9MiooKFRlW05lXTw8OCkrVGVbTmUrMV0pLCsrTmUpLEZlW0JlKytdPXBbTGVdLEZlW0JlKytdPXBbTGUrMV07cmV0dXJuIEZlLnNsaWNlKDAsQmUpLnRvU3RyaW5nKCJ1Y3MyIil9fTtIWzY1MDAxXT1mdW5jdGlvbiBDKE0pe2lmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgTSlyZXR1cm4gQyhNLnNwbGl0KCIiKS5tYXAoSSkpO3ZhciB5PU0ubGVuZ3RoLHA9MCxTPTA7NCp5PmomJihqPTQqeSxWPUJ1ZmZlci5hbGxvY1Vuc2FmZShqKSk7dmFyIFE9MDt5Pj0zJiYyMzk9PU1bMF0mJjE4Nz09TVsxXSYmMTkxPT1NWzJdJiYoUT0zKTtmb3IodmFy''@;'; put 'put ''IHJlPTEsZmU9MCxtZT0wO1E8eTtRKz1yZSlyZT0xLChtZT1NW1FdKTwxMjg/cD1tZTptZTwyMjQ/KHA9NjQqKDMxJm1lKSsoNjMmTVtRKzFdKSxyZT0yKTptZTwyNDA/KHA9KCgxNSZtZSk8PDEyKSs2NCooNjMmTVtRKzFdKSsoNjMmTVtRKzJdKSxyZT0zKToocD0yNjIxNDQqKDcmbWUpKygo''@;'; put 'put ''NjMmTVtRKzFdKTw8MTIpKzY0Kig2MyZNW1ErMl0pKyg2MyZNW1ErM10pLHJlPTQpLHA8NjU1MzY/KFZbZmUrK109MjU1JnAsVltmZSsrXT1wPj44KTooUz01NTI5NisoKHAtPTY1NTM2KT4+MTAmMTAyMykscD01NjMyMCsoMTAyMyZwKSxWW2ZlKytdPTI1NSZTLFZbZmUrK109Uz4+PjgsVltm''@;'; put 'put ''ZSsrXT0yNTUmcCxWW2ZlKytdPXA+Pj44JjI1NSk7cmV0dXJuIFYuc2xpY2UoMCxmZSkudG9TdHJpbmcoInVjczIiKX0sQls2NTAwMV09ZnVuY3Rpb24oTSx5KXtpZihSJiZCdWZmZXIuaXNCdWZmZXIoTSkpcmV0dXJuIHkmJiJidWYiIT09eT8iYXJyIiE9PXk/TS50b1N0cmluZygiYmluYXJ5''@;'; put 'put ''Iik6W10uc2xpY2UuY2FsbChNKTpNO3ZhciBwPU0ubGVuZ3RoLFM9MCxRPTAscmU9MCxmZT0ic3RyaW5nIj09dHlwZW9mIE07NCpwPmomJihqPTQqcCxWPUJ1ZmZlci5hbGxvY1Vuc2FmZShqKSk7Zm9yKHZhciBtZT0wO21lPHA7KyttZSkoUz1mZT9NLmNoYXJDb2RlQXQobWUpOk1bbWVdLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkpPD0xMjc/VltyZSsrXT1TOlM8PTIwNDc/KFZbcmUrK109MTkyKyhTPj42KSxWW3JlKytdPTEyOCsoNjMmUykpOlM+PTU1Mjk2JiZTPD01NzM0Mz8oUy09NTUyOTYsKyttZSxRPShmZT9NLmNoYXJDb2RlQXQobWUpOk1bbWVdLmNoYXJDb2RlQXQoMCkpLTU2MzIwKyhTPDwx''@;'; put 'put ''MCksVltyZSsrXT0yNDArKFE+Pj4xOCY3KSxWW3JlKytdPTE0NCsoUT4+PjEyJjYzKSxWW3JlKytdPTEyOCsoUT4+PjYmNjMpLFZbcmUrK109MTI4Kyg2MyZRKSk6KFZbcmUrK109MjI0KyhTPj4xMiksVltyZSsrXT0xMjgrKFM+PjYmNjMpLFZbcmUrK109MTI4Kyg2MyZTKSk7cmV0dXJuIHkm''@;'; put 'put ''JiJidWYiIT09eT8iYXJyIiE9PXk/Vi5zbGljZSgwLHJlKS50b1N0cmluZygiYmluYXJ5Iik6W10uc2xpY2UuY2FsbChWLDAscmUpOlYuc2xpY2UoMCxyZSl9fXZhciBuZT1mdW5jdGlvbigpe2lmKFIpe2lmKExba1swXV0pcmV0dXJuO3ZhciBNPTAseT0wO2ZvcihNPTA7TTxrLmxlbmd0aDsr''@;'; put 'put ''K00pVFt5PWtbTV1dJiYoTFt5XT1VKHkpLEtbeV09Vyh5KSk7Zm9yKE09MDtNPHYubGVuZ3RoOysrTSlUW3k9dltNXV0mJihMW3ldPXRlKHkpLEtbeV09cSh5KSk7Zm9yKE09MDtNPGhlLmxlbmd0aDsrK00pSFt5PWhlW01dXSYmKExbeV09SFt5XSksQlt5XSYmKEtbeV09Qlt5XSl9fSxpZT1m''@;'; put 'put ''dW5jdGlvbihDLE0pe3JldHVybiIifSxsZT1mdW5jdGlvbihNKXtkZWxldGUgTFtNXSxkZWxldGUgS1tNXX0sdWU9e2VuY2FjaGU6bmUsZGVjYWNoZTpmdW5jdGlvbigpe2lmKFIpe2lmKCFMW2tbMF1dKXJldHVybjtrLmZvckVhY2gobGUpLHYuZm9yRWFjaChsZSksaGUuZm9yRWFjaChsZSl9''@;'; put 'put ''Yj1pZSx4PTB9LHNiY3M6ayxkYmNzOnZ9O25lKCk7dmFyIGNlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixiPWllLHg9MDtyZXR1cm4gVC51dGlscz17ZGVjb2RlOmZ1bmN0aW9uIEMoTSx5KXt2YXIgcDtpZihwPUxb''@;'; put 'put ''TV0pcmV0dXJuIHAoeSk7aWYoInN0cmluZyI9PXR5cGVvZiB5KXJldHVybiBDKE0seS5zcGxpdCgiIikubWFwKEkpKTt2YXIgTmUsUz15Lmxlbmd0aCxRPW5ldyBBcnJheShTKSxyZT0iIixmZT0wLG1lPTAsa2U9MSxUZT0wLFBlPTAsRmU9VFtNXSxMZT0iIjtpZihGZSYmKE5lPUZlLmRlYykp''@;'; put 'put ''Zm9yKG1lPTA7bWU8UzttZSs9a2Upe2lmKGtlPTIsKHJlPU5lWyh5W21lXTw8OCkreVttZSsxXV0pfHwoa2U9MSxyZT1OZVt5W21lXV0pLCFyZSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBjb2RlOiAiK3lbbWVdKyIgIit5W21lK2tlLTFdKyIgIittZSsiICIra2UrIiAiK05lW3lb''@;'; put 'put ''bWVdXSk7UVtUZSsrXT1yZX1lbHNle2lmKCEoTGU9c2VbTV0pKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIENQOiAiK00pO3N3aXRjaChMZSl7Y2FzZSJ1dGY4Ijpmb3IoUz49MyYmMjM5PT15WzBdJiYxODc9PXlbMV0mJjE5MT09eVsyXSYmKG1lPTMpO21lPFM7bWUrPWtlKWtlPTEs''@;'; put 'put ''eVttZV08MTI4P2ZlPXlbbWVdOnlbbWVdPDIyND8oZmU9NjQqKDMxJnlbbWVdKSsoNjMmeVttZSsxXSksa2U9Mik6eVttZV08MjQwPyhmZT0oKDE1JnlbbWVdKTw8MTIpKzY0Kig2MyZ5W21lKzFdKSsoNjMmeVttZSsyXSksa2U9Myk6KGZlPTI2MjE0NCooNyZ5W21lXSkrKCg2MyZ5W21lKzFd''@;'; put 'put ''KTw8MTIpKzY0Kig2MyZ5W21lKzJdKSsoNjMmeVttZSszXSksa2U9NCksZmU8NjU1MzZ8fChQZT01NTI5NisoKGZlLT02NTUzNik+PjEwJjEwMjMpLGZlPTU2MzIwKygxMDIzJmZlKSxRW1RlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoUGUpKSxRW1RlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUo''@;'; put 'put ''ZmUpO2JyZWFrO2Nhc2UiYXNjaWkiOmlmKFImJkJ1ZmZlci5pc0J1ZmZlcih5KSlyZXR1cm4geS50b1N0cmluZyhMZSk7Zm9yKG1lPTA7bWU8UzttZSsrKVFbbWVdPVN0cmluZy5mcm9tQ2hhckNvZGUoeVttZV0pO1RlPVM7YnJlYWs7Y2FzZSJ1dGYxNmxlIjppZihTPj0yJiYyNTU9PXlbMF0m''@;'; put 'put ''JjI1ND09eVsxXSYmKG1lPTIpLFImJkJ1ZmZlci5pc0J1ZmZlcih5KSlyZXR1cm4geS50b1N0cmluZyhMZSk7Zm9yKGtlPTI7bWUrMTxTO21lKz1rZSlRW1RlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKHlbbWUrMV08PDgpK3lbbWVdKTticmVhaztjYXNlInV0ZjE2YmUiOmZvcihTPj0yJiYy''@;'; put 'put ''NTQ9PXlbMF0mJjI1NT09eVsxXSYmKG1lPTIpLGtlPTI7bWUrMTxTO21lKz1rZSlRW1RlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKHlbbWVdPDw4KSt5W21lKzFdKTticmVhaztjYXNlInV0ZjMybGUiOmZvcihTPj00JiYyNTU9PXlbMF0mJjI1ND09eVsxXSYmMD09PXlbMl0mJjA9PT15WzNd''@;'; put 'put ''JiYobWU9NCksa2U9NDttZTxTO21lKz1rZSkoZmU9KHlbbWUrM108PDI0KSsoeVttZSsyXTw8MTYpKyh5W21lKzFdPDw4KSt5W21lXSk+NjU1MzU/KGZlLT02NTUzNixRW1RlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKGZlPj4xMCYxMDIzKSksUVtUZSsrXT1TdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKDU2MzIwKygxMDIzJmZlKSkpOlFbVGUrK109U3RyaW5nLmZyb21DaGFyQ29kZShmZSk7YnJlYWs7Y2FzZSJ1dGYzMmJlIjpmb3IoUz49NCYmMjU1PT15WzNdJiYyNTQ9PXlbMl0mJjA9PT15WzFdJiYwPT09eVswXSYmKG1lPTQpLGtlPTQ7bWU8UzttZSs9a2UpKGZlPSh5W21lXTw8''@;'; put 'put ''MjQpKyh5W21lKzFdPDwxNikrKHlbbWUrMl08PDgpK3lbbWUrM10pPjY1NTM1PyhmZS09NjU1MzYsUVtUZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhmZT4+MTAmMTAyMykpLFFbVGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZmZSkpKTpRW1RlKytdPVN0cmlu''@;'; put 'put ''Zy5mcm9tQ2hhckNvZGUoZmUpO2JyZWFrO2Nhc2UidXRmNyI6Zm9yKFM+PTQmJjQzPT15WzBdJiY0Nz09eVsxXSYmMTE4PT15WzJdJiYoUz49NSYmNTY9PXlbM10mJjQ1PT15WzRdP21lPTU6KDU2PT15WzNdfHw1Nz09eVszXXx8NDM9PXlbM118fDQ3PT15WzNdKSYmKG1lPTQpKTttZTxTO21l''@;'; put 'put ''Kz1rZSlpZig0Mz09PXlbbWVdKWlmKGtlPTEsNDUhPT15W21lKzFdKXtmb3IoO1N0cmluZy5mcm9tQ2hhckNvZGUoeVttZStrZV0pLm1hdGNoKC9bQS1aYS16MC05K1wvXS8pOylrZSsrO3ZhciBCZT0wOzQ1PT09eVttZStrZV0mJigrK2tlLEJlPTEpO2Zvcih2YXIgSGU9W10sUWU9IiIsSWU9''@;'; put 'put ''MCxPZT0wLGV0PTAsbnQ9MCxxZT0xO3FlPGtlLUJlJiYoSWU9Y2UuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKHlbbWUrcWUrK10pKSxPZT1jZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoeVttZStxZSsrXSkpLEhlLnB1c2goSWU8PDJ8T2U+PjQpLC0xIT09KGV0PWNlLmluZGV4''@;'; put 'put ''T2YoU3RyaW5nLmZyb21DaGFyQ29kZSh5W21lK3FlKytdKSkpJiYoSGUucHVzaCgoMTUmT2UpPDw0fGV0Pj4yKSwtMSE9PShudD1jZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoeVttZStxZSsrXSkpKSkpOyludDw2NCYmSGUucHVzaCgoMyZldCk8PDZ8bnQpO2ZvcihRZT1DKDEyMDEs''@;'; put 'put ''SGUpLHFlPTA7cWU8UWUubGVuZ3RoOysrcWUpUVtUZSsrXT1RZS5jaGFyQXQocWUpfWVsc2Uga2U9MixRW1RlKytdPSIrIjtlbHNlIGtlPTEsUVtUZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHlbbWVdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgbWFnaWM6''@;'; put 'put ''ICIrTSsiICIrc2VbTV0pfX1yZXR1cm4gUS5zbGljZSgwLFRlKS5qb2luKCIiKX0sZW5jb2RlOmZ1bmN0aW9uIEMoTSx5LHApe2lmKE09PT14JiZiKXJldHVybiBiKHkscCk7aWYoS1tNXSlyZXR1cm4oYj1LW3g9TV0pKHkscCk7UiYmQnVmZmVyLmlzQnVmZmVyKHkpJiYoeT15LnRvU3RyaW5n''@;'; put 'put ''KCJ1dGY4IikpO3ZhciBQZSxTPXkubGVuZ3RoLFE9Uj9CdWZmZXIuYWxsb2NVbnNhZmUoNCpTKTpbXSxyZT0wLGZlPTAsbWU9MCxrZT0wLFRlPVRbTV0sRmU9IiIsTmU9InN0cmluZyI9PXR5cGVvZiB5O2lmKFRlJiYoUGU9VGUuZW5jKSlmb3IoZmU9MDtmZTxTOysrZmUsKyttZSkocmU9UGVb''@;'; put 'put ''TmU/eS5jaGFyQXQoZmUpOnlbZmVdXSk+MjU1PyhRW21lXT1yZT4+OCxRWysrbWVdPTI1NSZyZSk6UVttZV09MjU1JnJlO2Vsc2V7aWYoIShGZT1zZVtNXSkpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgQ1A6ICIrTSk7c3dpdGNoKEZlKXtjYXNlInV0ZjgiOmlmKFImJk5lKXttZT0o''@;'; put 'put ''UT1FKHksRmUpKS5sZW5ndGg7YnJlYWt9Zm9yKGZlPTA7ZmU8UzsrK2ZlLCsrbWUpKHJlPU5lP3kuY2hhckNvZGVBdChmZSk6eVtmZV0uY2hhckNvZGVBdCgwKSk8PTEyNz9RW21lXT1yZTpyZTw9MjA0Nz8oUVttZV09MTkyKyhyZT4+NiksUVsrK21lXT0xMjgrKDYzJnJlKSk6cmU+PTU1Mjk2''@;'; put 'put ''JiZyZTw9NTczNDM/KHJlLT01NTI5NixrZT0oTmU/eS5jaGFyQ29kZUF0KCsrZmUpOnlbKytmZV0uY2hhckNvZGVBdCgwKSktNTYzMjArKHJlPDwxMCksUVttZV09MjQwKyhrZT4+PjE4JjcpLFFbKyttZV09MTQ0KyhrZT4+PjEyJjYzKSxRWysrbWVdPTEyOCsoa2U+Pj42JjYzKSxRWysrbWVd''@;'; put 'put ''PTEyOCsoNjMma2UpKTooUVttZV09MjI0KyhyZT4+MTIpLFFbKyttZV09MTI4KyhyZT4+NiY2MyksUVsrK21lXT0xMjgrKDYzJnJlKSk7YnJlYWs7Y2FzZSJhc2NpaSI6aWYoUiYmInN0cmluZyI9PXR5cGVvZiB5KXttZT0oUT1FKHksRmUpKS5sZW5ndGg7YnJlYWt9Zm9yKGZlPTA7ZmU8Uzsr''@;'; put 'put ''K2ZlLCsrbWUpe2lmKCEoKHJlPU5lP3kuY2hhckNvZGVBdChmZSk6eVtmZV0uY2hhckNvZGVBdCgwKSk8PTEyNykpdGhyb3cgbmV3IEVycm9yKCJiYWQgYXNjaWkgIityZSk7UVttZV09cmV9YnJlYWs7Y2FzZSJ1dGYxNmxlIjppZihSJiYic3RyaW5nIj09dHlwZW9mIHkpe21lPShRPUUoeSxG''@;'; put 'put ''ZSkpLmxlbmd0aDticmVha31mb3IoZmU9MDtmZTxTOysrZmUpcmU9TmU/eS5jaGFyQ29kZUF0KGZlKTp5W2ZlXS5jaGFyQ29kZUF0KDApLFFbbWUrK109MjU1JnJlLFFbbWUrK109cmU+Pjg7YnJlYWs7Y2FzZSJ1dGYxNmJlIjpmb3IoZmU9MDtmZTxTOysrZmUpcmU9TmU/eS5jaGFyQ29kZUF0''@;'; put 'put ''KGZlKTp5W2ZlXS5jaGFyQ29kZUF0KDApLFFbbWUrK109cmU+PjgsUVttZSsrXT0yNTUmcmU7YnJlYWs7Y2FzZSJ1dGYzMmxlIjpmb3IoZmU9MDtmZTxTOysrZmUpKHJlPU5lP3kuY2hhckNvZGVBdChmZSk6eVtmZV0uY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZyZTw9NTczNDMmJihyZT02NTUz''@;'; put 'put ''NisocmUtNTUyOTY8PDEwKSsoeVsrK2ZlXS5jaGFyQ29kZUF0KDApLTU2MzIwKSksUVttZSsrXT0yNTUmcmUsUVttZSsrXT0yNTUmKHJlPj49OCksUVttZSsrXT0yNTUmKHJlPj49OCksUVttZSsrXT0yNTUmKHJlPj49OCk7YnJlYWs7Y2FzZSJ1dGYzMmJlIjpmb3IoZmU9MDtmZTxTOysrZmUp''@;'; put 'put ''KHJlPU5lP3kuY2hhckNvZGVBdChmZSk6eVtmZV0uY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZyZTw9NTczNDMmJihyZT02NTUzNisocmUtNTUyOTY8PDEwKSsoeVsrK2ZlXS5jaGFyQ29kZUF0KDApLTU2MzIwKSksUVttZSszXT0yNTUmcmUsUVttZSsyXT0yNTUmKHJlPj49OCksUVttZSsxXT0y''@;'; put 'put ''NTUmKHJlPj49OCksUVttZV09MjU1JihyZT4+PTgpLG1lKz00O2JyZWFrO2Nhc2UidXRmNyI6Zm9yKGZlPTA7ZmU8UztmZSsrKXt2YXIgTGU9TmU/eS5jaGFyQXQoZmUpOnlbZmVdLmNoYXJBdCgwKTtpZigiKyIhPT1MZSlpZigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknKCksLS4vOj8iLmluZGV4T2YoTGUpPi0xKVFbbWUrK109TGUuY2hhckNvZGVBdCgwKTtlbHNle3ZhciBCZT1DKDEyMDEsTGUpO1FbbWUrK109NDMsUVttZSsrXT1jZS5jaGFyQ29kZUF0KEJlWzBdPj4yKSxRW21lKytdPWNlLmNoYXJDb2RlQXQo''@;'; put 'put ''KCgzJkJlWzBdKTw8NCkrKChCZVsxXXx8MCk+PjQpKSxRW21lKytdPWNlLmNoYXJDb2RlQXQoKCgxNSZCZVsxXSk8PDIpKygoQmVbMl18fDApPj42KSksUVttZSsrXT00NX1lbHNlIFFbbWUrK109NDMsUVttZSsrXT00NX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0''@;'; put 'put ''ZWQgbWFnaWM6ICIrTSsiICIrc2VbTV0pfX1yZXR1cm4gUT1RLnNsaWNlKDAsbWUpLFI/cCYmImJ1ZiIhPT1wPyJhcnIiIT09cD9RLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKFEpOlE6InN0ciI9PXA/US5tYXAoSikuam9pbigiIik6UX0saGFzY3A6ZnVuY3Rpb24oTSl7cmV0''@;'; put 'put ''dXJuISghVFtNXSYmIXNlW01dKX0sbWFnaWM6c2UsY2FjaGU6dWV9LFR9KX0sNzU0NDY6KFdlLHplKT0+e3ZhciBULHNlLGs7IWZ1bmN0aW9uKHYpe2lmKHR5cGVvZiBET19OT1RfRVhQT1JUX0pTWklQPiJ1IilXZS5leHBvcnRzPXYoKTtlbHNlIGlmKHR5cGVvZiBET19OT1RfRVhQT1JUX0pT''@;'; put 'put ''WklQPiJ1IilKU1ppcFN5bmM9digpLHNlPVtdLHZvaWQgMCE9PShrPSJmdW5jdGlvbiI9PXR5cGVvZihUPXYpP1QuYXBwbHkoemUsc2UpOlQpJiYoV2UuZXhwb3J0cz1rKTtlbHNle3ZhciBoZTt0eXBlb2YgZ2xvYmFsVGhpczwidSI/aGU9Z2xvYmFsVGhpczp0eXBlb2Ygd2luZG93PCJ1Ij9o''@;'; put 'put ''ZT13aW5kb3c6dHlwZW9mIGdsb2JhbDwidSI/aGU9Z2xvYmFsOnR5cGVvZiAkPCJ1IiYmJC5nbG9iYWw/aGU9JC5nbG9iYWw6dHlwZW9mIHNlbGY8InUiJiYoaGU9c2VsZiksaGUuSlNaaXBTeW5jPXYoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIEIoTCxLLEope2Z1bmN0aW9uIEko''@;'; put 'put ''eixqKXtpZighS1t6XSl7aWYoIUxbel0pe2lmKFIpcmV0dXJuIFIoeiwhMCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIreisiJyIpfXZhciBHPUtbel09e2V4cG9ydHM6e319O0xbel1bMF0uY2FsbChHLmV4cG9ydHMsZnVuY3Rpb24oVyl7cmV0dXJuIEkoTFt6XVsx''@;'; put 'put ''XVtXXXx8Vyl9LEcsRy5leHBvcnRzLEIsTCxLLEopfXJldHVybiBLW3pdLmV4cG9ydHN9Zm9yKHZhciBSPXZvaWQgMCxFPTA7RTxKLmxlbmd0aDtFKyspSShKW0VdKTtyZXR1cm4gSX0oezE6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9IkFCQ0RFRkdISUpLTE1OT1BRUlNU''@;'; put 'put ''VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtLLmVuY29kZT1mdW5jdGlvbihJLFIpe2Zvcih2YXIgeixqLFYsRyxXLFUscSxFPSIiLHRlPTA7dGU8SS5sZW5ndGg7KUc9KHo9SS5jaGFyQ29kZUF0KHRlKyspKT4+MixXPSgzJnopPDw0fChqPUkuY2hhckNv''@;'; put 'put ''ZGVBdCh0ZSsrKSk+PjQsVT0oMTUmaik8PDJ8KFY9SS5jaGFyQ29kZUF0KHRlKyspKT4+NixxPTYzJlYsaXNOYU4oaik/VT1xPTY0OmlzTmFOKFYpJiYocT02NCksRT1FK0ouY2hhckF0KEcpK0ouY2hhckF0KFcpK0ouY2hhckF0KFUpK0ouY2hhckF0KHEpO3JldHVybiBFfSxLLmRlY29kZT1m''@;'; put 'put ''dW5jdGlvbihJLFIpe3ZhciBqLFYsRyxXLFUscSxFPSIiLHRlPTA7Zm9yKEk9SS5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7dGU8SS5sZW5ndGg7KUc9Si5pbmRleE9mKEkuY2hhckF0KHRlKyspKSxqPSgxNSYoVz1KLmluZGV4T2YoSS5jaGFyQXQodGUrKykpKSk8PDR8KFU9''@;'; put 'put ''Si5pbmRleE9mKEkuY2hhckF0KHRlKyspKSk+PjIsVj0oMyZVKTw8NnwocT1KLmluZGV4T2YoSS5jaGFyQXQodGUrKykpKSxFKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEc8PDJ8Vz4+NCksNjQhPVUmJihFKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGopKSw2NCE9cSYmKEUrPVN0cmluZy5mcm9tQ2hh''@;'; put 'put ''ckNvZGUoVikpO3JldHVybiBFfX0se31dLDI6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSigpe3RoaXMuY29tcHJlc3NlZFNpemU9MCx0aGlzLnVuY29tcHJlc3NlZFNpemU9MCx0aGlzLmNyYzMyPTAsdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1udWxsLHRoaXMuY29t''@;'; put 'put ''cHJlc3NlZENvbnRlbnQ9bnVsbH1KLnByb3RvdHlwZT17Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfX0sTC5leHBvcnRzPUp9LHt9XSwzOltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO0su''@;'; put 'put ''U1RPUkU9e21hZ2ljOiJcMFwwIixjb21wcmVzczpmdW5jdGlvbihKKXtyZXR1cm4gSn0sdW5jb21wcmVzczpmdW5jdGlvbihKKXtyZXR1cm4gSn0sY29tcHJlc3NJbnB1dFR5cGU6bnVsbCx1bmNvbXByZXNzSW5wdXRUeXBlOm51bGx9LEsuREVGTEFURT1CKCIuL2ZsYXRlIil9LHsiLi9mbGF0''@;'; put 'put ''ZSI6OH1dLDQ6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi91dGlscyIpLEk9WzAsMTk5Njk1OTg5NCwzOTkzOTE5Nzg4LDI1Njc1MjQ3OTQsMTI0NjM0MTM3LDE4ODYwNTc2MTUsMzkxNTYyMTY4NSwyNjU3MzkyMDM1LDI0OTI2ODI3NCwyMDQ0NTA4MzI0LDM3NzIx''@;'; put 'put ''MTUyMzAsMjU0NzE3Nzg2NCwxNjI5NDE5OTUsMjEyNTU2MTAyMSwzODg3NjA3MDQ3LDI0Mjg0NDQwNDksNDk4NTM2NTQ4LDE3ODk5Mjc2NjYsNDA4OTAxNjY0OCwyMjI3MDYxMjE0LDQ1MDU0ODg2MSwxODQzMjU4NjAzLDQxMDc1ODA3NTMsMjIxMTY3NzYzOSwzMjU4ODM5OTAsMTY4NDc3NzE1''@;'; put 'put ''Miw0MjUxMTIyMDQyLDIzMjE5MjY2MzYsMzM1NjMzNDg3LDE2NjEzNjU0NjUsNDE5NTMwMjc1NSwyMzY2MTE1MzE3LDk5NzA3MzA5NiwxMjgxOTUzODg2LDM1Nzk4NTUzMzIsMjcyNDY4ODI0MiwxMDA2ODg4MTQ1LDEyNTg2MDc2ODcsMzUyNDEwMTYyOSwyNzY4OTQyNDQzLDkwMTA5NzcyMiwx''@;'; put 'put ''MTE5MDAwNjg0LDM2ODY1MTcyMDYsMjg5ODA2NTcyOCw4NTMwNDQ0NTEsMTE3MjI2NjEwMSwzNzA1MDE1NzU5LDI4ODI2MTY2NjUsNjUxNzY3OTgwLDEzNzM1MDM1NDYsMzM2OTU1NDMwNCwzMjE4MTA0NTk4LDU2NTUwNzI1MywxNDU0NjIxNzMxLDM0ODUxMTE3MDUsMzA5OTQzNjMwMyw2NzEy''@;'; put 'put ''NjY5NzQsMTU5NDE5ODAyNCwzMzIyNzMwOTMwLDI5NzAzNDc4MTIsNzk1ODM1NTI3LDE0ODMyMzAyMjUsMzI0NDM2NzI3NSwzMDYwMTQ5NTY1LDE5OTQxNDYxOTIsMzExNTg1MzQsMjU2MzkwNzc3Miw0MDIzNzE3OTMwLDE5MDc0NTk0NjUsMTEyNjM3MjE1LDI2ODAxNTMyNTMsMzkwNDQyNzA1''@;'; put 'put ''OSwyMDEzNzc2MjkwLDI1MTcyMjAzNiwyNTE3MjE1Mzc0LDM3NzU4MzAwNDAsMjEzNzY1Njc2MywxNDEzNzY4MTMsMjQzOTI3NzcxOSwzODY1MjcxMjk3LDE4MDIxOTU0NDQsNDc2ODY0ODY2LDIyMzgwMDEzNjgsNDA2NjUwODg3OCwxODEyMzcwOTI1LDQ1MzA5MjczMSwyMTgxNjI1MDI1LDQx''@;'; put 'put ''MTE0NTEyMjMsMTcwNjA4ODkwMiwzMTQwNDI3MDQsMjM0NDUzMjIwMiw0MjQwMDE3NTMyLDE2NTg2NTgyNzEsMzY2NjE5OTc3LDIzNjI2NzAzMjMsNDIyNDk5NDQwNSwxMzAzNTM1OTYwLDk4NDk2MTQ4NiwyNzQ3MDA3MDkyLDM1NjkwMzc1MzgsMTI1NjE3MDgxNywxMDM3NjA0MzExLDI3NjUy''@;'; put 'put ''MTA3MzMsMzU1NDA3OTk5NSwxMTMxMDE0NTA2LDg3OTY3OTk5NiwyOTA5MjQzNDYyLDM2NjM3NzE4NTYsMTE0MTEyNDQ2Nyw4NTU4NDIyNzcsMjg1MjgwMTYzMSwzNzA4NjQ4NjQ5LDEzNDI1MzM5NDgsNjU0NDU5MzA2LDMxODgzOTYwNDgsMzM3MzAxNTE3NCwxNDY2NDc5OTA5LDU0NDE3OTYz''@;'; put 'put ''NSwzMTEwNTIzOTEzLDM0NjI1MjIwMTUsMTU5MTY3MTA1NCw3MDIxMzg3NzYsMjk2NjQ2MDQ1MCwzMzUyNzk5NDEyLDE1MDQ5MTg4MDcsNzgzNTUxODczLDMwODI2NDA0NDMsMzIzMzQ0Mjk4OSwzOTg4MjkyMzg0LDI1OTYyNTQ2NDYsNjIzMTcwNjgsMTk1NzgxMDg0MiwzOTM5ODQ1OTQ1LDI2''@;'; put 'put ''NDc4MTYxMTEsODE0NzA5OTcsMTk0MzgwMzUyMywzODE0OTE4OTMwLDI0ODk1OTY4MDQsMjI1Mjc0NDMwLDIwNTM3OTAzNzYsMzgyNjE3NTc1NSwyNDY2OTA2MDEzLDE2NzgxNjc0MywyMDk3NjUxMzc3LDQwMjc1NTI1ODAsMjI2NTQ5MDM4Niw1MDM0NDQwNzIsMTc2MjA1MDgxNCw0MTUwNDE3''@;'; put 'put ''MjQ1LDIxNTQxMjkzNTUsNDI2NTIyMjI1LDE4NTI1MDc4NzksNDI3NTMxMzUyNiwyMzEyMzE3OTIwLDI4Mjc1MzYyNiwxNzQyNTU1ODUyLDQxODk3MDgxNDMsMjM5NDg3Nzk0NSwzOTc5MTc3NjMsMTYyMjE4MzYzNywzNjA0MzkwODg4LDI3MTQ4NjY1NTgsOTUzNzI5NzMyLDEzNDAwNzY2MjYs''@;'; put 'put ''MzUxODcxOTk4NSwyNzk3MzYwOTk5LDEwNjg4MjgzODEsMTIxOTYzODg1OSwzNjI0NzQxODUwLDI5MzY2NzUxNDgsOTA2MTg1NDYyLDEwOTA4MTI1MTIsMzc0NzY3MjAwMywyODI1Mzc5NjY5LDgyOTMyOTEzNSwxMTgxMzM1MTYxLDM0MTIxNzc4MDQsMzE2MDgzNDg0Miw2MjgwODU0MDgsMTM4''@;'; put 'put ''MjYwNTM2NiwzNDIzMzY5MTA5LDMxMzgwNzg0NjcsNTcwNTYyMjMzLDE0MjY0MDA4MTUsMzMxNzMxNjU0MiwyOTk4NzMzNjA4LDczMzIzOTk1NCwxNTU1MjYxOTU2LDMyNjg5MzU1OTEsMzA1MDM2MDYyNSw3NTI0NTk0MDMsMTU0MTMyMDIyMSwyNjA3MDcxOTIwLDM5NjU5NzMwMzAsMTk2OTky''@;'; put 'put ''Mjk3Miw0MDczNTQ5OCwyNjE3ODM3MjI1LDM5NDM1NzcxNTEsMTkxMzA4Nzg3Nyw4MzkwODM3MSwyNTEyMzQxNjM0LDM4MDM3NDA2OTIsMjA3NTIwODYyMiwyMTMyNjExMTIsMjQ2MzI3MjYwMywzODU1OTkwMjg1LDIwOTQ4NTQwNzEsMTk4OTU4ODgxLDIyNjIwMjkwMTIsNDA1NzI2MDYxMCwx''@;'; put 'put ''NzU5MzU5OTkyLDUzNDQxNDE5MCwyMTc2NzE4NTQxLDQxMzkzMjkxMTUsMTg3MzgzNjAwMSw0MTQ2NjQ1NjcsMjI4MjI0ODkzNCw0Mjc5MjAwMzY4LDE3MTE2ODQ1NTQsMjg1MjgxMTE2LDI0MDU4MDE3MjcsNDE2NzIxNjc0NSwxNjM0NDY3Nzk1LDM3NjIyOTcwMSwyNjg1MDY3ODk2LDM2MDgw''@;'; put 'put ''MDc0MDYsMTMwODkxODYxMiw5NTY1NDM5MzgsMjgwODU1NTEwNSwzNDk1OTU4MjYzLDEyMzE2MzYzMDEsMTA0NzQyNzAzNSwyOTMyOTU5ODE4LDM2NTQ3MDM4MzYsMTA4ODM1OTI3MCw5MzY5MThlMywyODQ3NzE0ODk5LDM3MzY4Mzc4MjksMTIwMjkwMDg2Myw4MTcyMzM4OTcsMzE4MzM0MjEw''@;'; put 'put ''OCwzNDAxMjM3MTMwLDE0MDQyNzc1NTIsNjE1ODE4MTUwLDMxMzQyMDc0OTMsMzQ1MzQyMTIwMywxNDIzODU3NDQ5LDYwMTQ1MDQzMSwzMDA5ODM3NjE0LDMyOTQ3MTA0NTYsMTU2NzEwMzc0Niw3MTE5Mjg3MjQsMzAyMDY2ODQ3MSwzMjcyMzgwMDY1LDE1MTAzMzQyMzUsNzU1MTY3MTE3XTtM''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oRSx6KXtpZih0eXBlb2YgRT4idSJ8fCFFLmxlbmd0aClyZXR1cm4gMDt2YXIgaj0ic3RyaW5nIiE9PUouZ2V0VHlwZU9mKEUpO3R5cGVvZiB6PiJ1IiYmKHo9MCk7dmFyIFc9MDt6Xj0tMTtmb3IodmFyIFU9MCxxPUUubGVuZ3RoO1U8cTtVKyspVz1qP0VbVV06''@;'; put 'put ''RS5jaGFyQ29kZUF0KFUpLHo9ej4+PjheSVsyNTUmKHpeVyldO3JldHVybi0xXnp9fSx7Ii4vdXRpbHMiOjIxfV0sNTpbZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgSj1CKCIuL3V0aWxzIik7ZnVuY3Rpb24gSShSKXt0aGlzLmRhdGE9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMu''@;'; put 'put ''aW5kZXg9MH1JLnByb3RvdHlwZT17Y2hlY2tPZmZzZXQ6ZnVuY3Rpb24oUil7dGhpcy5jaGVja0luZGV4KHRoaXMuaW5kZXgrUil9LGNoZWNrSW5kZXg6ZnVuY3Rpb24oUil7aWYodGhpcy5sZW5ndGg8Unx8UjwwKXRocm93IG5ldyBFcnJvcigiRW5kIG9mIGRhdGEgcmVhY2hlZCAoZGF0YSBs''@;'; put 'put ''ZW5ndGggPSAiK3RoaXMubGVuZ3RoKyIsIGFza2VkIGluZGV4ID0gIitSKyIpLiBDb3JydXB0ZWQgemlwID8iKX0sc2V0SW5kZXg6ZnVuY3Rpb24oUil7dGhpcy5jaGVja0luZGV4KFIpLHRoaXMuaW5kZXg9Un0sc2tpcDpmdW5jdGlvbihSKXt0aGlzLnNldEluZGV4KHRoaXMuaW5kZXgrUil9''@;'; put 'put ''LGJ5dGVBdDpmdW5jdGlvbihSKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oUil7dmFyIHosRT0wO2Zvcih0aGlzLmNoZWNrT2Zmc2V0KFIpLHo9dGhpcy5pbmRleCtSLTE7ej49dGhpcy5pbmRleDt6LS0pRT0oRTw8OCkrdGhpcy5ieXRlQXQoeik7cmV0dXJuIHRoaXMuaW5kZXgrPVIsRX0scmVhZFN0''@;'; put 'put ''cmluZzpmdW5jdGlvbihSKXtyZXR1cm4gSi50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnJlYWREYXRhKFIpKX0scmVhZERhdGE6ZnVuY3Rpb24oUil7fSxsYXN0SW5kZXhPZlNpZ25hdHVyZTpmdW5jdGlvbihSKXt9LHJlYWREYXRlOmZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5yZWFkSW50KDQp''@;'; put 'put ''O3JldHVybiBuZXcgRGF0ZSgxOTgwKyhSPj4yNSYxMjcpLChSPj4yMSYxNSktMSxSPj4xNiYzMSxSPj4xMSYzMSxSPj41JjYzLCgzMSZSKTw8MSl9fSxMLmV4cG9ydHM9SX0seyIuL3V0aWxzIjoyMX1dLDY6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7Sy5iYXNlNjQ9ITEsSy5iaW5h''@;'; put 'put ''cnk9ITEsSy5kaXI9ITEsSy5jcmVhdGVGb2xkZXJzPSExLEsuZGF0ZT1udWxsLEsuY29tcHJlc3Npb249bnVsbCxLLmNvbW1lbnQ9bnVsbH0se31dLDc6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi91dGlscyIpO0suc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihJKXty''@;'; put 'put ''ZXR1cm4gSi5zdHJpbmcyYmluYXJ5KEkpfSxLLnN0cmluZzJVaW50OEFycmF5PWZ1bmN0aW9uKEkpe3JldHVybiBKLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixJKX0sSy51aW50OEFycmF5MlN0cmluZz1mdW5jdGlvbihJKXtyZXR1cm4gSi50cmFuc2Zvcm1Ubygic3RyaW5nIixJKX0sSy5z''@;'; put 'put ''dHJpbmcyQmxvYj1mdW5jdGlvbihJKXt2YXIgUj1KLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsSSk7cmV0dXJuIEouYXJyYXlCdWZmZXIyQmxvYihSKX0sSy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKEkpe3JldHVybiBKLmFycmF5QnVmZmVyMkJsb2IoSSl9LEsudHJhbnNmb3JtVG89''@;'; put 'put ''ZnVuY3Rpb24oSSxSKXtyZXR1cm4gSi50cmFuc2Zvcm1UbyhJLFIpfSxLLmdldFR5cGVPZj1mdW5jdGlvbihJKXtyZXR1cm4gSi5nZXRUeXBlT2YoSSl9LEsuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKEkpe3JldHVybiBKLmNoZWNrU3VwcG9ydChJKX0sSy5NQVhfVkFMVUVfMTZCSVRTPUouTUFY''@;'; put 'put ''X1ZBTFVFXzE2QklUUyxLLk1BWF9WQUxVRV8zMkJJVFM9Si5NQVhfVkFMVUVfMzJCSVRTLEsucHJldHR5PWZ1bmN0aW9uKEkpe3JldHVybiBKLnByZXR0eShJKX0sSy5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oSSl7cmV0dXJuIEouZmluZENvbXByZXNzaW9uKEkpfSxLLmlzUmVnRXhwPWZ1''@;'; put 'put ''bmN0aW9uKEkpe3JldHVybiBKLmlzUmVnRXhwKEkpfX0seyIuL3V0aWxzIjoyMX1dLDg6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9dHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ0eXBlb2YgVWludDE2QXJyYXk8InUiJiZ0eXBlb2YgVWludDMyQXJyYXk8InUiLEk9QigicGFr''@;'; put 'put ''byIpO0sudW5jb21wcmVzc0lucHV0VHlwZT1KPyJ1aW50OGFycmF5IjoiYXJyYXkiLEsuY29tcHJlc3NJbnB1dFR5cGU9Sj8idWludDhhcnJheSI6ImFycmF5IixLLm1hZ2ljPSJcYlwwIixLLmNvbXByZXNzPWZ1bmN0aW9uKFIpe3JldHVybiBJLmRlZmxhdGVSYXcoUil9LEsudW5jb21wcmVz''@;'; put 'put ''cz1mdW5jdGlvbihSKXtyZXR1cm4gSS5pbmZsYXRlUmF3KFIpfX0se3Bha286MjR9XSw5OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vYmFzZTY0Iik7ZnVuY3Rpb24gSShSLEUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEkpKXJldHVybiBuZXcgSShSLEUpO3RoaXMu''@;'; put 'put ''ZmlsZXM9e30sdGhpcy5jb21tZW50PW51bGwsdGhpcy5yb290PSIiLFImJnRoaXMubG9hZChSLEUpLHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgej1uZXcgSTtmb3IodmFyIGogaW4gdGhpcykiZnVuY3Rpb24iIT10eXBlb2YgdGhpc1tqXSYmKHpbal09dGhpc1tqXSk7cmV0dXJuIHp9fShJ''@;'; put 'put ''LnByb3RvdHlwZT1CKCIuL29iamVjdCIpKS5sb2FkPUIoIi4vbG9hZCIpLEkuc3VwcG9ydD1CKCIuL3N1cHBvcnQiKSxJLmRlZmF1bHRzPUIoIi4vZGVmYXVsdHMiKSxJLnV0aWxzPUIoIi4vZGVwcmVjYXRlZFB1YmxpY1V0aWxzIiksSS5iYXNlNjQ9e2VuY29kZTpmdW5jdGlvbihSKXtyZXR1''@;'; put 'put ''cm4gSi5lbmNvZGUoUil9LGRlY29kZTpmdW5jdGlvbihSKXtyZXR1cm4gSi5kZWNvZGUoUil9fSxJLmNvbXByZXNzaW9ucz1CKCIuL2NvbXByZXNzaW9ucyIpLEwuZXhwb3J0cz1JfSx7Ii4vYmFzZTY0IjoxLCIuL2NvbXByZXNzaW9ucyI6MywiLi9kZWZhdWx0cyI6NiwiLi9kZXByZWNhdGVk''@;'; put 'put ''UHVibGljVXRpbHMiOjcsIi4vbG9hZCI6MTAsIi4vb2JqZWN0IjoxMywiLi9zdXBwb3J0IjoxN31dLDEwOltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vYmFzZTY0IiksST1CKCIuL3ppcEVudHJpZXMiKTtMLmV4cG9ydHM9ZnVuY3Rpb24oUixFKXt2YXIgeixqLFYs''@;'; put 'put ''Rztmb3IoKEU9RXx8e30pLmJhc2U2NCYmKFI9Si5kZWNvZGUoUikpLHo9KGo9bmV3IEkoUixFKSkuZmlsZXMsVj0wO1Y8ei5sZW5ndGg7VisrKXRoaXMuZmlsZSgoRz16W1ZdKS5maWxlTmFtZSxHLmRlY29tcHJlc3NlZCx7YmluYXJ5OiEwLG9wdGltaXplZEJpbmFyeVN0cmluZzohMCxkYXRl''@;'; put 'put ''OkcuZGF0ZSxkaXI6Ry5kaXIsY29tbWVudDpHLmZpbGVDb21tZW50Lmxlbmd0aD9HLmZpbGVDb21tZW50Om51bGwsY3JlYXRlRm9sZGVyczpFLmNyZWF0ZUZvbGRlcnN9KTtyZXR1cm4gai56aXBDb21tZW50Lmxlbmd0aCYmKHRoaXMuY29tbWVudD1qLnppcENvbW1lbnQpLHRoaXN9fSx7Ii4v''@;'; put 'put ''YmFzZTY0IjoxLCIuL3ppcEVudHJpZXMiOjIyfV0sMTE6W2Z1bmN0aW9uKEIsTCxLKXsoZnVuY3Rpb24oSil7InVzZSBzdHJpY3QiO3ZhciBJPWZ1bmN0aW9uKCl7fTtpZih0eXBlb2YgSjwidSIpe3ZhciBSPSFKLmZyb207aWYoIVIpdHJ5e0ouZnJvbSgiZm9vIiwidXRmOCIpfWNhdGNoe1I9''@;'; put 'put ''ITB9ST1SP2Z1bmN0aW9uKEUseil7cmV0dXJuIHo/bmV3IEooRSx6KTpuZXcgSihFKX06Si5mcm9tLmJpbmQoSiksSi5hbGxvY3x8KEouYWxsb2M9ZnVuY3Rpb24oRSl7cmV0dXJuIG5ldyBKKEUpfSl9TC5leHBvcnRzPWZ1bmN0aW9uKEUseil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBFP0ou''@;'; put 'put ''YWxsb2MoRSk6SShFLHopfSxMLmV4cG9ydHMudGVzdD1mdW5jdGlvbihFKXtyZXR1cm4gSi5pc0J1ZmZlcihFKX19KS5jYWxsKHRoaXMsdHlwZW9mIEJ1ZmZlcjwidSI/QnVmZmVyOnZvaWQgMCl9LHt9XSwxMjpbZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgSj1CKCIuL3VpbnQ4''@;'; put 'put ''QXJyYXlSZWFkZXIiKTtmdW5jdGlvbiBJKFIpe3RoaXMuZGF0YT1SLHRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wfShJLnByb3RvdHlwZT1uZXcgSikucmVhZERhdGE9ZnVuY3Rpb24oUil7dGhpcy5jaGVja09mZnNldChSKTt2YXIgRT10aGlzLmRhdGEuc2xpY2Uo''@;'; put 'put ''dGhpcy5pbmRleCx0aGlzLmluZGV4K1IpO3JldHVybiB0aGlzLmluZGV4Kz1SLEV9LEwuZXhwb3J0cz1JfSx7Ii4vdWludDhBcnJheVJlYWRlciI6MTh9XSwxMzpbZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgSj1CKCIuL3N1cHBvcnQiKSxJPUIoIi4vdXRpbHMiKSxSPUIoIi4v''@;'; put 'put ''Y3JjMzIiKSxFPUIoIi4vc2lnbmF0dXJlIiksej1CKCIuL2RlZmF1bHRzIiksaj1CKCIuL2Jhc2U2NCIpLFY9QigiLi9jb21wcmVzc2lvbnMiKSxHPUIoIi4vY29tcHJlc3NlZE9iamVjdCIpLFc9QigiLi9ub2RlQnVmZmVyIiksVT1CKCIuL3V0ZjgiKSxxPUIoIi4vc3RyaW5nV3JpdGVyIiks''@;'; put 'put ''dGU9QigiLi91aW50OEFycmF5V3JpdGVyIiksbmU9ZnVuY3Rpb24oTSl7aWYoTS5fZGF0YSBpbnN0YW5jZW9mIEcmJihNLl9kYXRhPU0uX2RhdGEuZ2V0Q29udGVudCgpLE0ub3B0aW9ucy5iaW5hcnk9ITAsTS5vcHRpb25zLmJhc2U2ND0hMSwidWludDhhcnJheSI9PT1JLmdldFR5cGVPZihN''@;'; put 'put ''Ll9kYXRhKSkpe3ZhciB5PU0uX2RhdGE7TS5fZGF0YT1uZXcgVWludDhBcnJheSh5Lmxlbmd0aCksMCE9PXkubGVuZ3RoJiZNLl9kYXRhLnNldCh5LDApfXJldHVybiBNLl9kYXRhfSxpZT1mdW5jdGlvbihNKXt2YXIgeT1uZShNKTtyZXR1cm4ic3RyaW5nIj09PUkuZ2V0VHlwZU9mKHkpPyFN''@;'; put 'put ''Lm9wdGlvbnMuYmluYXJ5JiZKLm5vZGVidWZmZXI/Vyh5LCJ1dGYtOCIpOk0uYXNCaW5hcnkoKTp5fSxsZT1mdW5jdGlvbihNKXt2YXIgeT1uZSh0aGlzKTtyZXR1cm4gbnVsbD09PXl8fHR5cGVvZiB5PiJ1Ij8iIjoodGhpcy5vcHRpb25zLmJhc2U2NCYmKHk9ai5kZWNvZGUoeSkpLHk9TSYm''@;'; put 'put ''dGhpcy5vcHRpb25zLmJpbmFyeT9DLnV0ZjhkZWNvZGUoeSk6SS50cmFuc2Zvcm1Ubygic3RyaW5nIix5KSwhTSYmIXRoaXMub3B0aW9ucy5iaW5hcnkmJih5PUkudHJhbnNmb3JtVG8oInN0cmluZyIsQy51dGY4ZW5jb2RlKHkpKSkseSl9LGRlPWZ1bmN0aW9uKE0seSxwKXt0aGlzLm5hbWU9''@;'; put 'put ''TSx0aGlzLmRpcj1wLmRpcix0aGlzLmRhdGU9cC5kYXRlLHRoaXMuY29tbWVudD1wLmNvbW1lbnQsdGhpcy5fZGF0YT15LHRoaXMub3B0aW9ucz1wLHRoaXMuX2luaXRpYWxNZXRhZGF0YT17ZGlyOnAuZGlyLGRhdGU6cC5kYXRlfX07ZGUucHJvdG90eXBlPXthc1RleHQ6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gbGUuY2FsbCh0aGlzLCEwKX0sYXNCaW5hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbGUuY2FsbCh0aGlzLCExKX0sYXNOb2RlQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIE09aWUodGhpcyk7cmV0dXJuIEkudHJhbnNmb3JtVG8oIm5vZGVidWZmZXIiLE0pfSxhc1VpbnQ4QXJyYXk6ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgTT1pZSh0aGlzKTtyZXR1cm4gSS50cmFuc2Zvcm1UbygidWludDhhcnJheSIsTSl9LGFzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc1VpbnQ4QXJyYXkoKS5idWZmZXJ9fTt2YXIgdWU9ZnVuY3Rpb24oTSx5KXt2YXIgUyxwPSIiO2ZvcihTPTA7Uzx5O1Mr''@;'; put 'put ''KylwKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZNKSxNPj4+PTg7cmV0dXJuIHB9LGNlPWZ1bmN0aW9uKCl7dmFyIHkscCxNPXt9O2Zvcih5PTA7eTxhcmd1bWVudHMubGVuZ3RoO3krKylmb3IocCBpbiBhcmd1bWVudHNbeV0pYXJndW1lbnRzW3ldLmhhc093blByb3BlcnR5KHApJiZ0eXBl''@;'; put 'put ''b2YgTVtwXT4idSImJihNW3BdPWFyZ3VtZW50c1t5XVtwXSk7cmV0dXJuIE19LGI9ZnVuY3Rpb24oTSx5LHApe3ZhciBRLFM9SS5nZXRUeXBlT2YoeSk7aWYocD1mdW5jdGlvbihNKXtyZXR1cm4hMD09PShNPU18fHt9KS5iYXNlNjQmJm51bGw9PU0uYmluYXJ5JiYoTS5iaW5hcnk9ITApLChN''@;'; put 'put ''PWNlKE0seikpLmRhdGU9TS5kYXRlfHxuZXcgRGF0ZSxudWxsIT09TS5jb21wcmVzc2lvbiYmKE0uY29tcHJlc3Npb249TS5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpKSxNfShwKSxwLmNyZWF0ZUZvbGRlcnMmJihRPXgoTSkpJiZOLmNhbGwodGhpcyxRLCEwKSxwLmRpcnx8bnVsbD09PXl8''@;'; put 'put ''fHR5cGVvZiB5PiJ1IilwLmJhc2U2ND0hMSxwLmJpbmFyeT0hMSx5PW51bGw7ZWxzZSBpZigic3RyaW5nIj09PVMpcC5iaW5hcnkmJiFwLmJhc2U2NCYmITAhPT1wLm9wdGltaXplZEJpbmFyeVN0cmluZyYmKHk9SS5zdHJpbmcyYmluYXJ5KHkpKTtlbHNle2lmKHAuYmFzZTY0PSExLHAuYmlu''@;'; put 'put ''YXJ5PSEwLCEoU3x8eSBpbnN0YW5jZW9mIEcpKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgb2YgJyIrTSsiJyBpcyBpbiBhbiB1bnN1cHBvcnRlZCBmb3JtYXQgISIpOyJhcnJheWJ1ZmZlciI9PT1TJiYoeT1JLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5Iix5KSl9dmFyIHJlPW5ldyBkZShN''@;'; put 'put ''LHkscCk7cmV0dXJuIHRoaXMuZmlsZXNbTV09cmUscmV9LHg9ZnVuY3Rpb24oTSl7Ii8iPT1NLnNsaWNlKC0xKSYmKE09TS5zdWJzdHJpbmcoMCxNLmxlbmd0aC0xKSk7dmFyIHk9TS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiB5PjA/TS5zdWJzdHJpbmcoMCx5KToiIn0sTj1mdW5jdGlvbihN''@;'; put 'put ''LHkpe3JldHVybiIvIiE9TS5zbGljZSgtMSkmJihNKz0iLyIpLHk9dHlwZW9mIHk8InUiJiZ5LHRoaXMuZmlsZXNbTV18fGIuY2FsbCh0aGlzLE0sbnVsbCx7ZGlyOiEwLGNyZWF0ZUZvbGRlcnM6eX0pLHRoaXMuZmlsZXNbTV19LEY9ZnVuY3Rpb24oTSx5KXt2YXIgUyxwPW5ldyBHO3JldHVy''@;'; put 'put ''biBNLl9kYXRhIGluc3RhbmNlb2YgRz8ocC51bmNvbXByZXNzZWRTaXplPU0uX2RhdGEudW5jb21wcmVzc2VkU2l6ZSxwLmNyYzMyPU0uX2RhdGEuY3JjMzIsMD09PXAudW5jb21wcmVzc2VkU2l6ZXx8TS5kaXI/KHk9Vi5TVE9SRSxwLmNvbXByZXNzZWRDb250ZW50PSIiLHAuY3JjMzI9MCk6''@;'; put 'put ''TS5fZGF0YS5jb21wcmVzc2lvbk1ldGhvZD09PXkubWFnaWM/cC5jb21wcmVzc2VkQ29udGVudD1NLl9kYXRhLmdldENvbXByZXNzZWRDb250ZW50KCk6KFM9TS5fZGF0YS5nZXRDb250ZW50KCkscC5jb21wcmVzc2VkQ29udGVudD15LmNvbXByZXNzKEkudHJhbnNmb3JtVG8oeS5jb21wcmVz''@;'; put 'put ''c0lucHV0VHlwZSxTKSkpKTooKCEoUz1pZShNKSl8fDA9PT1TLmxlbmd0aHx8TS5kaXIpJiYoeT1WLlNUT1JFLFM9IiIpLHAudW5jb21wcmVzc2VkU2l6ZT1TLmxlbmd0aCxwLmNyYzMyPVIoUykscC5jb21wcmVzc2VkQ29udGVudD15LmNvbXByZXNzKEkudHJhbnNmb3JtVG8oeS5jb21wcmVz''@;'; put 'put ''c0lucHV0VHlwZSxTKSkpLHAuY29tcHJlc3NlZFNpemU9cC5jb21wcmVzc2VkQ29udGVudC5sZW5ndGgscC5jb21wcmVzc2lvbk1ldGhvZD15Lm1hZ2ljLHB9LGc9ZnVuY3Rpb24oTSx5LHAsUyl7dmFyIEZlLE5lLFFlLG10LHJlPUkudHJhbnNmb3JtVG8oInN0cmluZyIsVS51dGY4ZW5jb2Rl''@;'; put 'put ''KHkubmFtZSkpLGZlPXkuY29tbWVudHx8IiIsbWU9SS50cmFuc2Zvcm1Ubygic3RyaW5nIixVLnV0ZjhlbmNvZGUoZmUpKSxrZT1yZS5sZW5ndGghPT15Lm5hbWUubGVuZ3RoLFRlPW1lLmxlbmd0aCE9PWZlLmxlbmd0aCxQZT15Lm9wdGlvbnMsTGU9IiIsQmU9IiIsSGU9IiI7UWU9eS5faW5p''@;'; put 'put ''dGlhbE1ldGFkYXRhLmRpciE9PXkuZGlyP3kuZGlyOlBlLmRpcixGZT0obXQ9eS5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT15LmRhdGU/eS5kYXRlOlBlLmRhdGUpLmdldEhvdXJzKCksRmU8PD02LEZlfD1tdC5nZXRNaW51dGVzKCksRmU8PD01LEZlfD1tdC5nZXRTZWNvbmRzKCkvMixOZT1t''@;'; put 'put ''dC5nZXRGdWxsWWVhcigpLTE5ODAsTmU8PD00LE5lfD1tdC5nZXRNb250aCgpKzEsTmU8PD01LE5lfD1tdC5nZXREYXRlKCksa2UmJihCZT11ZSgxLDEpK3VlKFIocmUpLDQpK3JlLExlKz0idXAiK3VlKEJlLmxlbmd0aCwyKStCZSksVGUmJihIZT11ZSgxLDEpK3VlKHRoaXMuY3JjMzIobWUp''@;'; put 'put ''LDQpK21lLExlKz0idWMiK3VlKEhlLmxlbmd0aCwyKStIZSk7dmFyIEtlPSIiO3JldHVybiBLZSs9IlxuXDAiLEtlKz1rZXx8VGU/IlwwXGIiOiJcMFwwIixLZSs9cC5jb21wcmVzc2lvbk1ldGhvZCxLZSs9dWUoRmUsMiksS2UrPXVlKE5lLDIpLEtlKz11ZShwLmNyYzMyLDQpLEtlKz11ZShw''@;'; put 'put ''LmNvbXByZXNzZWRTaXplLDQpLEtlKz11ZShwLnVuY29tcHJlc3NlZFNpemUsNCksS2UrPXVlKHJlLmxlbmd0aCwyKSxLZSs9dWUoTGUubGVuZ3RoLDIpLHtmaWxlUmVjb3JkOkUuTE9DQUxfRklMRV9IRUFERVIrS2UrcmUrTGUsZGlyUmVjb3JkOkUuQ0VOVFJBTF9GSUxFX0hFQURFUisiXHgx''@;'; put 'put ''NFwwIitLZSt1ZShtZS5sZW5ndGgsMikrIlwwXDBcMFwwIisoITA9PT1RZT8iXHgxMFwwXDBcMCI6IlwwXDBcMFwwIikrdWUoUyw0KStyZStMZSttZSxjb21wcmVzc2VkT2JqZWN0OnB9fSxDPXtsb2FkOmZ1bmN0aW9uKE0seSl7dGhyb3cgbmV3IEVycm9yKCJMb2FkIG1ldGhvZCBpcyBub3Qg''@;'; put 'put ''ZGVmaW5lZC4gSXMgdGhlIGZpbGUganN6aXAtbG9hZC5qcyBpbmNsdWRlZCA/Iil9LGZpbHRlcjpmdW5jdGlvbihNKXt2YXIgcCxTLFEscmUseT1bXTtmb3IocCBpbiB0aGlzLmZpbGVzKXRoaXMuZmlsZXMuaGFzT3duUHJvcGVydHkocCkmJihyZT1uZXcgZGUoKFE9dGhpcy5maWxlc1twXSku''@;'; put 'put ''bmFtZSxRLl9kYXRhLGNlKFEub3B0aW9ucykpLFM9cC5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLHAubGVuZ3RoKSxwLnNsaWNlKDAsdGhpcy5yb290Lmxlbmd0aCk9PT10aGlzLnJvb3QmJk0oUyxyZSkmJnkucHVzaChyZSkpO3JldHVybiB5fSxmaWxlOmZ1bmN0aW9uKE0seSxwKXtpZigxPT09''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aCl7aWYoSS5pc1JlZ0V4cChNKSl7dmFyIFM9TTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oUSxyZSl7cmV0dXJuIXJlLmRpciYmUy50ZXN0KFEpfSl9cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKFEscmUpe3JldHVybiFyZS5kaXImJlE9PT1NfSlbMF18''@;'; put 'put ''fG51bGx9cmV0dXJuIGIuY2FsbCh0aGlzLE09dGhpcy5yb290K00seSxwKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIHRoaXM7aWYoSS5pc1JlZ0V4cChNKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oUSxyZSl7cmV0dXJuIHJlLmRpciYmTS50ZXN0KFEpfSk7''@;'; put 'put ''dmFyIHA9Ti5jYWxsKHRoaXMsdGhpcy5yb290K00pLFM9dGhpcy5jbG9uZSgpO3JldHVybiBTLnJvb3Q9cC5uYW1lLFN9LHJlbW92ZTpmdW5jdGlvbihNKXt2YXIgeT10aGlzLmZpbGVzW009dGhpcy5yb290K01dO2lmKHl8fCgiLyIhPU0uc2xpY2UoLTEpJiYoTSs9Ii8iKSx5PXRoaXMuZmls''@;'; put 'put ''ZXNbTV0pLHkmJiF5LmRpcilkZWxldGUgdGhpcy5maWxlc1tNXTtlbHNlIGZvcih2YXIgcD10aGlzLmZpbHRlcihmdW5jdGlvbihRLHJlKXtyZXR1cm4gcmUubmFtZS5zbGljZSgwLE0ubGVuZ3RoKT09PU19KSxTPTA7UzxwLmxlbmd0aDtTKyspZGVsZXRlIHRoaXMuZmlsZXNbcFtTXS5uYW1l''@;'; put 'put ''XTtyZXR1cm4gdGhpc30sZ2VuZXJhdGU6ZnVuY3Rpb24oTSl7TT1jZShNfHx7fSx7YmFzZTY0OiEwLGNvbXByZXNzaW9uOiJTVE9SRSIsdHlwZToiYmFzZTY0Iixjb21tZW50Om51bGx9KSxJLmNoZWNrU3VwcG9ydChNLnR5cGUpO3ZhciBRLHJlLExlLHk9W10scD0wLFM9MCxmZT1JLnRyYW5z''@;'; put 'put ''Zm9ybVRvKCJzdHJpbmciLHRoaXMudXRmOGVuY29kZShNLmNvbW1lbnR8fHRoaXMuY29tbWVudHx8IiIpKTtmb3IodmFyIG1lIGluIHRoaXMuZmlsZXMpaWYodGhpcy5maWxlcy5oYXNPd25Qcm9wZXJ0eShtZSkpe3ZhciBrZT10aGlzLmZpbGVzW21lXSxUZT1rZS5vcHRpb25zLmNvbXByZXNz''@;'; put 'put ''aW9ufHxNLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCksUGU9VltUZV07aWYoIVBlKXRocm93IG5ldyBFcnJvcihUZSsiIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhIik7dmFyIEZlPUYuY2FsbCh0aGlzLGtlLFBlKSxOZT1nLmNhbGwodGhpcyxtZSxrZSxGZSxwKTtwKz1O''@;'; put 'put ''ZS5maWxlUmVjb3JkLmxlbmd0aCtGZS5jb21wcmVzc2VkU2l6ZSxTKz1OZS5kaXJSZWNvcmQubGVuZ3RoLHkucHVzaChOZSl9TGU9RS5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlwwXDBcMFwwIit1ZSh5Lmxlbmd0aCwyKSt1ZSh5Lmxlbmd0aCwyKSt1ZShTLDQpK3VlKHAsNCkrdWUoZmUubGVu''@;'; put 'put ''Z3RoLDIpK2ZlO3ZhciBCZT1NLnR5cGUudG9Mb3dlckNhc2UoKTtmb3IoUT0idWludDhhcnJheSI9PT1CZXx8ImFycmF5YnVmZmVyIj09PUJlfHwiYmxvYiI9PT1CZXx8Im5vZGVidWZmZXIiPT09QmU/bmV3IHRlKHArUytMZS5sZW5ndGgpOm5ldyBxKHArUytMZS5sZW5ndGgpLHJlPTA7cmU8''@;'; put 'put ''eS5sZW5ndGg7cmUrKylRLmFwcGVuZCh5W3JlXS5maWxlUmVjb3JkKSxRLmFwcGVuZCh5W3JlXS5jb21wcmVzc2VkT2JqZWN0LmNvbXByZXNzZWRDb250ZW50KTtmb3IocmU9MDtyZTx5Lmxlbmd0aDtyZSsrKVEuYXBwZW5kKHlbcmVdLmRpclJlY29yZCk7US5hcHBlbmQoTGUpO3ZhciBIZT1R''@;'; put 'put ''LmZpbmFsaXplKCk7c3dpdGNoKE0udHlwZS50b0xvd2VyQ2FzZSgpKXtjYXNlInVpbnQ4YXJyYXkiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2Uibm9kZWJ1ZmZlciI6cmV0dXJuIEkudHJhbnNmb3JtVG8oTS50eXBlLnRvTG93ZXJDYXNlKCksSGUpO2Nhc2UiYmxvYiI6cmV0dXJuIEkuYXJyYXlC''@;'; put 'put ''dWZmZXIyQmxvYihJLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsSGUpKTtjYXNlImJhc2U2NCI6cmV0dXJuIE0uYmFzZTY0P2ouZW5jb2RlKEhlKTpIZTtkZWZhdWx0OnJldHVybiBIZX19LGNyYzMyOmZ1bmN0aW9uKE0seSl7cmV0dXJuIFIoTSx5KX0sdXRmOGVuY29kZTpmdW5jdGlvbihN''@;'; put 'put ''KXtyZXR1cm4gSS50cmFuc2Zvcm1Ubygic3RyaW5nIixVLnV0ZjhlbmNvZGUoTSkpfSx1dGY4ZGVjb2RlOmZ1bmN0aW9uKE0pe3JldHVybiBVLnV0ZjhkZWNvZGUoTSl9fTtMLmV4cG9ydHM9Q30seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL2NvbXByZXNzaW9ucyI6''@;'; put 'put ''MywiLi9jcmMzMiI6NCwiLi9kZWZhdWx0cyI6NiwiLi9ub2RlQnVmZmVyIjoxMSwiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1dyaXRlciI6MTYsIi4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVdyaXRlciI6MTksIi4vdXRmOCI6MjAsIi4vdXRpbHMiOjIxfV0sMTQ6W2Z1bmN0aW9uKEIs''@;'; put 'put ''TCxLKXsidXNlIHN0cmljdCI7Sy5MT0NBTF9GSUxFX0hFQURFUj0iUEtceDAzXHgwNCIsSy5DRU5UUkFMX0ZJTEVfSEVBREVSPSJQS1x4MDFceDAyIixLLkNFTlRSQUxfRElSRUNUT1JZX0VORD0iUEtceDA1XHgwNiIsSy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SPSJQS1x4MDZc''@;'; put 'put ''eDA3IixLLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORD0iUEtceDA2XHgwNiIsSy5EQVRBX0RFU0NSSVBUT1I9IlBLXHgwN1xiIn0se31dLDE1OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vZGF0YVJlYWRlciIpLEk9QigiLi91dGlscyIpO2Z1bmN0aW9uIFIo''@;'; put 'put ''RSx6KXt0aGlzLmRhdGE9RSx6fHwodGhpcy5kYXRhPUkuc3RyaW5nMmJpbmFyeSh0aGlzLmRhdGEpKSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH0oUi5wcm90b3R5cGU9bmV3IEopLmJ5dGVBdD1mdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2Rl''@;'; put 'put ''QXQoRSl9LFIucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmRhdGEubGFzdEluZGV4T2YoRSl9LFIucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKEUpe3RoaXMuY2hlY2tPZmZzZXQoRSk7dmFyIHo9dGhpcy5kYXRhLnNsaWNlKHRoaXMu''@;'; put 'put ''aW5kZXgsdGhpcy5pbmRleCtFKTtyZXR1cm4gdGhpcy5pbmRleCs9RSx6fSxMLmV4cG9ydHM9Un0seyIuL2RhdGFSZWFkZXIiOjUsIi4vdXRpbHMiOjIxfV0sMTY6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi91dGlscyIpLEk9ZnVuY3Rpb24oKXt0aGlzLmRhdGE9''@;'; put 'put ''W119O0kucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oUil7Uj1KLnRyYW5zZm9ybVRvKCJzdHJpbmciLFIpLHRoaXMuZGF0YS5wdXNoKFIpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuam9pbigiIil9fSxMLmV4cG9ydHM9SX0seyIuL3V0aWxzIjoyMX1dLDE3Oltm''@;'; put 'put ''dW5jdGlvbihCLEwsSyl7KGZ1bmN0aW9uKEopeyJ1c2Ugc3RyaWN0IjtpZihLLmJhc2U2ND0hMCxLLmFycmF5PSEwLEsuc3RyaW5nPSEwLEsuYXJyYXlidWZmZXI9dHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiLEsubm9kZWJ1ZmZlcj10eXBlb2YgSjwidSIs''@;'; put 'put ''Sy51aW50OGFycmF5PXR5cGVvZiBVaW50OEFycmF5PCJ1Iix0eXBlb2YgQXJyYXlCdWZmZXI+InUiKUsuYmxvYj0hMTtlbHNle3ZhciBJPW5ldyBBcnJheUJ1ZmZlcigwKTt0cnl7Sy5ibG9iPTA9PT1uZXcgQmxvYihbSV0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KS5zaXplfWNhdGNoe3Ry''@;'; put 'put ''eXt2YXIgRT1uZXcod2luZG93LkJsb2JCdWlsZGVyfHx3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXJ8fHdpbmRvdy5Nb3pCbG9iQnVpbGRlcnx8d2luZG93Lk1TQmxvYkJ1aWxkZXIpO0UuYXBwZW5kKEkpLEsuYmxvYj0wPT09RS5nZXRCbG9iKCJhcHBsaWNhdGlvbi96aXAiKS5zaXplfWNhdGNo''@;'; put 'put ''e0suYmxvYj0hMX19fX0pLmNhbGwodGhpcyx0eXBlb2YgQnVmZmVyPCJ1Ij9CdWZmZXI6dm9pZCAwKX0se31dLDE4OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vZGF0YVJlYWRlciIpO2Z1bmN0aW9uIEkoUil7UiYmKHRoaXMuZGF0YT1SLHRoaXMubGVuZ3RoPXRo''@;'; put 'put ''aXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wKX0oSS5wcm90b3R5cGU9bmV3IEopLmJ5dGVBdD1mdW5jdGlvbihSKXtyZXR1cm4gdGhpcy5kYXRhW1JdfSxJLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihSKXtmb3IodmFyIEU9Ui5jaGFyQ29kZUF0KDApLHo9Ui5j''@;'; put 'put ''aGFyQ29kZUF0KDEpLGo9Ui5jaGFyQ29kZUF0KDIpLFY9Ui5jaGFyQ29kZUF0KDMpLEc9dGhpcy5sZW5ndGgtNDtHPj0wOy0tRylpZih0aGlzLmRhdGFbR109PT1FJiZ0aGlzLmRhdGFbRysxXT09PXomJnRoaXMuZGF0YVtHKzJdPT09aiYmdGhpcy5kYXRhW0crM109PT1WKXJldHVybiBHO3Jl''@;'; put 'put ''dHVybi0xfSxJLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihSKXtpZih0aGlzLmNoZWNrT2Zmc2V0KFIpLDA9PT1SKXJldHVybiBuZXcgVWludDhBcnJheSgwKTt2YXIgRT10aGlzLmRhdGEuc3ViYXJyYXkodGhpcy5pbmRleCx0aGlzLmluZGV4K1IpO3JldHVybiB0aGlzLmluZGV4Kz1S''@;'; put 'put ''LEV9LEwuZXhwb3J0cz1JfSx7Ii4vZGF0YVJlYWRlciI6NX1dLDE5OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vdXRpbHMiKSxJPWZ1bmN0aW9uKFIpe3RoaXMuZGF0YT1uZXcgVWludDhBcnJheShSKSx0aGlzLmluZGV4PTB9O0kucHJvdG90eXBlPXthcHBlbmQ6''@;'; put 'put ''ZnVuY3Rpb24oUil7MCE9PVIubGVuZ3RoJiYoUj1KLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixSKSx0aGlzLmRhdGEuc2V0KFIsdGhpcy5pbmRleCksdGhpcy5pbmRleCs9Ui5sZW5ndGgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fSxMLmV4cG9ydHM9SX0seyIu''@;'; put 'put ''L3V0aWxzIjoyMX1dLDIwOltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO2Zvcih2YXIgSj1CKCIuL3V0aWxzIiksST1CKCIuL3N1cHBvcnQiKSxSPUIoIi4vbm9kZUJ1ZmZlciIpLEU9bmV3IEFycmF5KDI1Niksej0wO3o8MjU2O3orKylFW3pdPXo+PTI1Mj82Ono+PTI0OD81Ono+PTI0''@;'; put 'put ''MD80Ono+PTIyND8zOno+PTE5Mj8yOjE7RVsyNTRdPUVbMjU0XT0xO3ZhciBWPWZ1bmN0aW9uKFcsVSl7dmFyIHE7Zm9yKChVPVV8fFcubGVuZ3RoKT5XLmxlbmd0aCYmKFU9Vy5sZW5ndGgpLHE9VS0xO3E+PTAmJjEyOD09KDE5MiZXW3FdKTspcS0tO3JldHVybiBxPDB8fDA9PT1xP1U6cStF''@;'; put 'put ''W1dbcV1dPlU/cTpVfSxHPWZ1bmN0aW9uKFcpe3ZhciBxLHRlLG5lLGllLGxlPVcubGVuZ3RoLGRlPW5ldyBBcnJheSgyKmxlKTtmb3IodGU9MCxxPTA7cTxsZTspaWYoKG5lPVdbcSsrXSk8MTI4KWRlW3RlKytdPW5lO2Vsc2UgaWYoKGllPUVbbmVdKT40KWRlW3RlKytdPTY1NTMzLHErPWll''@;'; put 'put ''LTE7ZWxzZXtmb3IobmUmPTI9PT1pZT8zMTozPT09aWU/MTU6NztpZT4xJiZxPGxlOyluZT1uZTw8Nnw2MyZXW3ErK10saWUtLTtpZT4xP2RlW3RlKytdPTY1NTMzOm5lPDY1NTM2P2RlW3RlKytdPW5lOihkZVt0ZSsrXT01NTI5NnwobmUtPTY1NTM2KT4+MTAmMTAyMyxkZVt0ZSsrXT01NjMy''@;'; put 'put ''MHwxMDIzJm5lKX1yZXR1cm4gZGUubGVuZ3RoIT09dGUmJihkZS5zdWJhcnJheT9kZT1kZS5zdWJhcnJheSgwLHRlKTpkZS5sZW5ndGg9dGUpLEouYXBwbHlGcm9tQ2hhckNvZGUoZGUpfTtLLnV0ZjhlbmNvZGU9ZnVuY3Rpb24oVSl7cmV0dXJuIEkubm9kZWJ1ZmZlcj9SKFUsInV0Zi04Iik6''@;'; put 'put ''ZnVuY3Rpb24oVyl7dmFyIFUscSx0ZSxuZSxpZSxsZT1XLmxlbmd0aCxkZT0wO2ZvcihuZT0wO25lPGxlO25lKyspNTUyOTY9PSg2NDUxMiYocT1XLmNoYXJDb2RlQXQobmUpKSkmJm5lKzE8bGUmJjU2MzIwPT0oNjQ1MTImKHRlPVcuY2hhckNvZGVBdChuZSsxKSkpJiYocT02NTUzNisocS01''@;'; put 'put ''NTI5Njw8MTApKyh0ZS01NjMyMCksbmUrKyksZGUrPXE8MTI4PzE6cTwyMDQ4PzI6cTw2NTUzNj8zOjQ7Zm9yKFU9SS51aW50OGFycmF5P25ldyBVaW50OEFycmF5KGRlKTpuZXcgQXJyYXkoZGUpLGllPTAsbmU9MDtpZTxkZTtuZSsrKTU1Mjk2PT0oNjQ1MTImKHE9Vy5jaGFyQ29kZUF0KG5l''@;'; put 'put ''KSkpJiZuZSsxPGxlJiY1NjMyMD09KDY0NTEyJih0ZT1XLmNoYXJDb2RlQXQobmUrMSkpKSYmKHE9NjU1MzYrKHEtNTUyOTY8PDEwKSsodGUtNTYzMjApLG5lKyspLHE8MTI4P1VbaWUrK109cTpxPDIwNDg/KFVbaWUrK109MTkyfHE+Pj42LFVbaWUrK109MTI4fDYzJnEpOnE8NjU1MzY/KFVb''@;'; put 'put ''aWUrK109MjI0fHE+Pj4xMixVW2llKytdPTEyOHxxPj4+NiY2MyxVW2llKytdPTEyOHw2MyZxKTooVVtpZSsrXT0yNDB8cT4+PjE4LFVbaWUrK109MTI4fHE+Pj4xMiY2MyxVW2llKytdPTEyOHxxPj4+NiY2MyxVW2llKytdPTEyOHw2MyZxKTtyZXR1cm4gVX0oVSl9LEsudXRmOGRlY29kZT1m''@;'; put 'put ''dW5jdGlvbihVKXtpZihJLm5vZGVidWZmZXIpcmV0dXJuIEoudHJhbnNmb3JtVG8oIm5vZGVidWZmZXIiLFUpLnRvU3RyaW5nKCJ1dGYtOCIpO2Zvcih2YXIgcT1bXSx0ZT0wLG5lPShVPUoudHJhbnNmb3JtVG8oSS51aW50OGFycmF5PyJ1aW50OGFycmF5IjoiYXJyYXkiLFUpKS5sZW5ndGg7''@;'; put 'put ''dGU8bmU7KXt2YXIgbGU9VihVLE1hdGgubWluKHRlKzY1NTM2LG5lKSk7cS5wdXNoKEcoSS51aW50OGFycmF5P1Uuc3ViYXJyYXkodGUsbGUpOlUuc2xpY2UodGUsbGUpKSksdGU9bGV9cmV0dXJuIHEuam9pbigiIil9fSx7Ii4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTcsIi4vdXRp''@;'; put 'put ''bHMiOjIxfV0sMjE6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi9zdXBwb3J0IiksST1CKCIuL2NvbXByZXNzaW9ucyIpLFI9QigiLi9ub2RlQnVmZmVyIik7ZnVuY3Rpb24gRShXKXtyZXR1cm4gV31mdW5jdGlvbiB6KFcsVSl7Zm9yKHZhciBxPTA7cTxXLmxlbmd0''@;'; put 'put ''aDsrK3EpVVtxXT0yNTUmVy5jaGFyQ29kZUF0KHEpO3JldHVybiBVfWZ1bmN0aW9uIGooVyl7dmFyIFU9NjU1MzYscT1bXSx0ZT1XLmxlbmd0aCxuZT1LLmdldFR5cGVPZihXKSxpZT0wLGxlPSEwO3RyeXtzd2l0Y2gobmUpe2Nhc2UidWludDhhcnJheSI6U3RyaW5nLmZyb21DaGFyQ29kZS5h''@;'; put 'put ''cHBseShudWxsLG5ldyBVaW50OEFycmF5KDApKTticmVhaztjYXNlIm5vZGVidWZmZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxSKDApKX19Y2F0Y2h7bGU9ITF9aWYoIWxlKXtmb3IodmFyIGRlPSIiLHVlPTA7dWU8Vy5sZW5ndGg7dWUrKylkZSs9U3RyaW5nLmZyb21DaGFy''@;'; put 'put ''Q29kZShXW3VlXSk7cmV0dXJuIGRlfWZvcig7aWU8dGUmJlU+MTspdHJ5e3EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsImFycmF5Ij09PW5lfHwibm9kZWJ1ZmZlciI9PT1uZT9XLnNsaWNlKGllLE1hdGgubWluKGllK1UsdGUpKTpXLnN1YmFycmF5KGllLE1hdGgubWlu''@;'; put 'put ''KGllK1UsdGUpKSkpLGllKz1VfWNhdGNoe1U9TWF0aC5mbG9vcihVLzIpfXJldHVybiBxLmpvaW4oIiIpfWZ1bmN0aW9uIFYoVyxVKXtmb3IodmFyIHE9MDtxPFcubGVuZ3RoO3ErKylVW3FdPVdbcV07cmV0dXJuIFV9Sy5zdHJpbmcyYmluYXJ5PWZ1bmN0aW9uKFcpe2Zvcih2YXIgVT0iIixx''@;'; put 'put ''PTA7cTxXLmxlbmd0aDtxKyspVSs9U3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmVy5jaGFyQ29kZUF0KHEpKTtyZXR1cm4gVX0sSy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKFcpe0suY2hlY2tTdXBwb3J0KCJibG9iIik7dHJ5e3JldHVybiBuZXcgQmxvYihbV10se3R5cGU6ImFwcGxpY2F0''@;'; put 'put ''aW9uL3ppcCJ9KX1jYXRjaHt0cnl7dmFyIHE9bmV3KHdpbmRvdy5CbG9iQnVpbGRlcnx8d2luZG93LldlYktpdEJsb2JCdWlsZGVyfHx3aW5kb3cuTW96QmxvYkJ1aWxkZXJ8fHdpbmRvdy5NU0Jsb2JCdWlsZGVyKTtyZXR1cm4gcS5hcHBlbmQoVykscS5nZXRCbG9iKCJhcHBsaWNhdGlvbi96''@;'; put 'put ''aXAiKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IGNhbid0IGNvbnN0cnVjdCB0aGUgQmxvYi4iKX19fSxLLmFwcGx5RnJvbUNoYXJDb2RlPWo7dmFyIEc9e307Ry5zdHJpbmc9e3N0cmluZzpFLGFycmF5OmZ1bmN0aW9uKFcpe3JldHVybiB6KFcsbmV3IEFycmF5KFcubGVuZ3RoKSl9''@;'; put 'put ''LGFycmF5YnVmZmVyOmZ1bmN0aW9uKFcpe3JldHVybiBHLnN0cmluZy51aW50OGFycmF5KFcpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlvbihXKXtyZXR1cm4geihXLG5ldyBVaW50OEFycmF5KFcubGVuZ3RoKSl9LG5vZGVidWZmZXI6ZnVuY3Rpb24oVyl7cmV0dXJuIHooVyxSKFcubGVu''@;'; put 'put ''Z3RoKSl9fSxHLmFycmF5PXtzdHJpbmc6aixhcnJheTpFLGFycmF5YnVmZmVyOmZ1bmN0aW9uKFcpe3JldHVybiBuZXcgVWludDhBcnJheShXKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oVyl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFcpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKFcpe3Jl''@;'; put 'put ''dHVybiBSKFcpfX0sRy5hcnJheWJ1ZmZlcj17c3RyaW5nOmZ1bmN0aW9uKFcpe3JldHVybiBqKG5ldyBVaW50OEFycmF5KFcpKX0sYXJyYXk6ZnVuY3Rpb24oVyl7cmV0dXJuIFYobmV3IFVpbnQ4QXJyYXkoVyksbmV3IEFycmF5KFcuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpFLHVpbnQ4''@;'; put 'put ''YXJyYXk6ZnVuY3Rpb24oVyl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFcpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKFcpe3JldHVybiBSKG5ldyBVaW50OEFycmF5KFcpKX19LEcudWludDhhcnJheT17c3RyaW5nOmosYXJyYXk6ZnVuY3Rpb24oVyl7cmV0dXJuIFYoVyxuZXcgQXJyYXkoVy5sZW5n''@;'; put 'put ''dGgpKX0sYXJyYXlidWZmZXI6ZnVuY3Rpb24oVyl7cmV0dXJuIFcuYnVmZmVyfSx1aW50OGFycmF5OkUsbm9kZWJ1ZmZlcjpmdW5jdGlvbihXKXtyZXR1cm4gUihXKX19LEcubm9kZWJ1ZmZlcj17c3RyaW5nOmosYXJyYXk6ZnVuY3Rpb24oVyl7cmV0dXJuIFYoVyxuZXcgQXJyYXkoVy5sZW5n''@;'; put 'put ''dGgpKX0sYXJyYXlidWZmZXI6ZnVuY3Rpb24oVyl7cmV0dXJuIEcubm9kZWJ1ZmZlci51aW50OGFycmF5KFcpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlvbihXKXtyZXR1cm4gVihXLG5ldyBVaW50OEFycmF5KFcubGVuZ3RoKSl9LG5vZGVidWZmZXI6RX0sSy50cmFuc2Zvcm1Ubz1mdW5j''@;'; put 'put ''dGlvbihXLFUpe2lmKFV8fChVPSIiKSwhVylyZXR1cm4gVTtLLmNoZWNrU3VwcG9ydChXKTt2YXIgcT1LLmdldFR5cGVPZihVKTtyZXR1cm4gR1txXVtXXShVKX0sSy5nZXRUeXBlT2Y9ZnVuY3Rpb24oVyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBXPyJzdHJpbmciOiJbb2JqZWN0IEFycmF5''@;'; put 'put ''XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVyk/ImFycmF5IjpKLm5vZGVidWZmZXImJlIudGVzdChXKT8ibm9kZWJ1ZmZlciI6Si51aW50OGFycmF5JiZXIGluc3RhbmNlb2YgVWludDhBcnJheT8idWludDhhcnJheSI6Si5hcnJheWJ1ZmZlciYmVyBpbnN0YW5jZW9mIEFy''@;'; put 'put ''cmF5QnVmZmVyPyJhcnJheWJ1ZmZlciI6dm9pZCAwfSxLLmNoZWNrU3VwcG9ydD1mdW5jdGlvbihXKXtpZighSltXLnRvTG93ZXJDYXNlKCldKXRocm93IG5ldyBFcnJvcihXKyIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIiKX0sSy5NQVhfVkFMVUVfMTZCSVRTPTY1NTM1LEsu''@;'; put 'put ''TUFYX1ZBTFVFXzMyQklUUz0tMSxLLnByZXR0eT1mdW5jdGlvbihXKXt2YXIgcSx0ZSxVPSIiO2Zvcih0ZT0wO3RlPChXfHwiIikubGVuZ3RoO3RlKyspVSs9IlxceCIrKChxPVcuY2hhckNvZGVBdCh0ZSkpPDE2PyIwIjoiIikrcS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtyZXR1cm4g''@;'; put 'put ''VX0sSy5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oVyl7Zm9yKHZhciBVIGluIEkpaWYoSS5oYXNPd25Qcm9wZXJ0eShVKSYmSVtVXS5tYWdpYz09PVcpcmV0dXJuIElbVV07cmV0dXJuIG51bGx9LEsuaXNSZWdFeHA9ZnVuY3Rpb24oVyl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1PYmpl''@;'; put 'put ''Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVyl9fSx7Ii4vY29tcHJlc3Npb25zIjozLCIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3fV0sMjI6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi9zdHJpbmdSZWFkZXIiKSxJPUIoIi4vbm9kZUJ1ZmZlclJl''@;'; put 'put ''YWRlciIpLFI9QigiLi91aW50OEFycmF5UmVhZGVyIiksRT1CKCIuL3V0aWxzIiksej1CKCIuL3NpZ25hdHVyZSIpLGo9QigiLi96aXBFbnRyeSIpLFY9QigiLi9zdXBwb3J0IiksRz1CKCIuL29iamVjdCIpO2Z1bmN0aW9uIFcoVSxxKXt0aGlzLmZpbGVzPVtdLHRoaXMubG9hZE9wdGlvbnM9''@;'; put 'put ''cSxVJiZ0aGlzLmxvYWQoVSl9Vy5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKFUpe3ZhciBxPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk7aWYocSE9PVUpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIG9yIGJ1ZyA6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlICgiK0Uu''@;'; put 'put ''cHJldHR5KHEpKyIsIGV4cGVjdGVkICIrRS5wcmV0dHkoVSkrIikiKX0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIp''@;'; put 'put ''LHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZz''@;'; put 'put ''ZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLnppcENvbW1lbnQ9dGhpcy5yZWFkZXIucmVhZFN0cmluZyh0aGlzLnppcENvbW1lbnRMZW5ndGgpLHRoaXMuemlwQ29tbWVudD1HLnV0ZjhkZWNvZGUodGhp''@;'; put 'put ''cy56aXBDb21tZW50KX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMudmVyc2lvbk1hZGVCeT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRl''@;'; put 'put ''ZD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10aGlzLnJlYWRlci5yZWFk''@;'; put 'put ''SW50KDgpLHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyT2Zmc2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy56aXA2NEV4dGVuc2libGVEYXRh''@;'; put 'put ''PXt9O2Zvcih2YXIgdGUsbmUsaWUsVT10aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZS00NDswPFU7KXRlPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksbmU9dGhpcy5yZWFkZXIucmVhZEludCg0KSxpZT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKG5lKSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGFb''@;'; put 'put ''dGVdPXtpZDp0ZSxsZW5ndGg6bmUsdmFsdWU6aWV9fSxyZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3I6ZnVuY3Rpb24oKXtpZih0aGlzLmRpc2tXaXRoWmlwNjRDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2''@;'; put 'put ''NENlbnRyYWxEaXI9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmRpc2tzQ291bnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tzQ291bnQ+MSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXZvbHVtZXMgemlwIGFyZSBub3Qgc3VwcG9ydGVkIil9LHJlYWRMb2NhbEZpbGVzOmZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIFUscTtmb3IoVT0wO1U8dGhpcy5maWxlcy5sZW5ndGg7VSsrKXRoaXMucmVhZGVyLnNldEluZGV4KChxPXRoaXMuZmlsZXNbVV0pLmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouTE9DQUxfRklMRV9IRUFERVIpLHEucmVhZExvY2FsUGFydCh0''@;'; put 'put ''aGlzLnJlYWRlcikscS5oYW5kbGVVVEY4KCl9LHJlYWRDZW50cmFsRGlyOmZ1bmN0aW9uKCl7dmFyIFU7Zm9yKHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMuY2VudHJhbERpck9mZnNldCk7dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KT09PXouQ0VOVFJBTF9GSUxFX0hFQURFUjspKFU9bmV3''@;'; put 'put ''IGooe3ppcDY0OnRoaXMuemlwNjR9LHRoaXMubG9hZE9wdGlvbnMpKS5yZWFkQ2VudHJhbFBhcnQodGhpcy5yZWFkZXIpLHRoaXMuZmlsZXMucHVzaChVKX0scmVhZEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3ZhciBVPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHouQ0VOVFJB''@;'; put 'put ''TF9ESVJFQ1RPUllfRU5EKTtpZigtMT09PVUpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY2FuJ3QgZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkiKTtpZih0aGlzLnJlYWRlci5zZXRJbmRleChVKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouQ0VOVFJBTF9ESVJFQ1RPUllf''@;'; put 'put ''RU5EKSx0aGlzLnJlYWRCbG9ja0VuZE9mQ2VudHJhbCgpLHRoaXMuZGlza051bWJlcj09PUUuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD09PUUuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9PT1FLk1BWF9W''@;'; put 'put ''QUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHM9PT1FLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclNpemU9PT1FLk1BWF9WQUxVRV8zMkJJVFN8fHRoaXMuY2VudHJhbERpck9mZnNldD09PUUuTUFYX1ZBTFVFXzMyQklUUyl7aWYodGhpcy56aXA2ND0hMCwtMT09''@;'; put 'put ''PShVPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHouWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUikpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNhbid0IGZpbmQgdGhlIFpJUDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yIik7dGhp''@;'; put 'put ''cy5yZWFkZXIuc2V0SW5kZXgoVSksdGhpcy5jaGVja1NpZ25hdHVyZSh6LlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1IpLHRoaXMucmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWxMb2NhdG9yKCksdGhpcy5yZWFkZXIuc2V0SW5kZXgodGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlw''@;'; put 'put ''NjRDZW50cmFsRGlyKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsKCl9fSxwcmVwYXJlUmVhZGVyOmZ1bmN0aW9uKFUpe3ZhciBxPUUuZ2V0VHlwZU9mKFUpO3RoaXMucmVhZGVyPSJzdHJp''@;'; put 'put ''bmciIT09cXx8Vi51aW50OGFycmF5PyJub2RlYnVmZmVyIj09PXE/bmV3IEkoVSk6bmV3IFIoRS50cmFuc2Zvcm1UbygidWludDhhcnJheSIsVSkpOm5ldyBKKFUsdGhpcy5sb2FkT3B0aW9ucy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcpfSxsb2FkOmZ1bmN0aW9uKFUpe3RoaXMucHJlcGFyZVJl''@;'; put 'put ''YWRlcihVKSx0aGlzLnJlYWRFbmRPZkNlbnRyYWwoKSx0aGlzLnJlYWRDZW50cmFsRGlyKCksdGhpcy5yZWFkTG9jYWxGaWxlcygpfX0sTC5leHBvcnRzPVd9LHsiLi9ub2RlQnVmZmVyUmVhZGVyIjoxMiwiLi9vYmplY3QiOjEzLCIuL3NpZ25hdHVyZSI6MTQsIi4vc3RyaW5nUmVhZGVyIjox''@;'; put 'put ''NSwiLi9zdXBwb3J0IjoxNywiLi91aW50OEFycmF5UmVhZGVyIjoxOCwiLi91dGlscyI6MjEsIi4vemlwRW50cnkiOjIzfV0sMjM6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi9zdHJpbmdSZWFkZXIiKSxJPUIoIi4vdXRpbHMiKSxSPUIoIi4vY29tcHJlc3NlZE9i''@;'; put 'put ''amVjdCIpLEU9QigiLi9vYmplY3QiKTtmdW5jdGlvbiB6KGosVil7dGhpcy5vcHRpb25zPWosdGhpcy5sb2FkT3B0aW9ucz1WfXoucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLmJpdEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIw''@;'; put 'put ''NDg9PSgyMDQ4JnRoaXMuYml0RmxhZyl9LHByZXBhcmVDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbihqLFYsRyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFc9ai5pbmRleDtqLnNldEluZGV4KFYpO3ZhciBVPWoucmVhZERhdGEoRyk7cmV0dXJuIGouc2V0SW5kZXgoVyksVX19LHByZXBhcmVD''@;'; put 'put ''b250ZW50OmZ1bmN0aW9uKGosVixHLFcsVSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHE9SS50cmFuc2Zvcm1UbyhXLnVuY29tcHJlc3NJbnB1dFR5cGUsdGhpcy5nZXRDb21wcmVzc2VkQ29udGVudCgpKSx0ZT1XLnVuY29tcHJlc3MocSk7aWYodGUubGVuZ3RoIT09VSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2giKTtyZXR1cm4gdGV9fSxyZWFkTG9jYWxQYXJ0OmZ1bmN0aW9uKGope3ZhciBWLEc7aWYoai5za2lwKDIyKSx0aGlzLmZpbGVOYW1lTGVuZ3RoPWoucmVhZEludCgyKSxHPWoucmVhZEludCgyKSx0aGlzLmZpbGVOYW1l''@;'; put 'put ''PWoucmVhZFN0cmluZyh0aGlzLmZpbGVOYW1lTGVuZ3RoKSxqLnNraXAoRyksLTE9PXRoaXMuY29tcHJlc3NlZFNpemV8fC0xPT10aGlzLnVuY29tcHJlc3NlZFNpemUpdGhyb3cgbmV3IEVycm9yKCJCdWcgb3IgY29ycnVwdGVkIHppcCA6IGRpZG4ndCBnZXQgZW5vdWdoIGluZm9ybWF0aW9u''@;'; put 'put ''cyBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAoY29tcHJlc3NlZFNpemUgPT0gLTEgfHwgdW5jb21wcmVzc2VkU2l6ZSA9PSAtMSkiKTtpZihudWxsPT09KFY9SS5maW5kQ29tcHJlc3Npb24odGhpcy5jb21wcmVzc2lvbk1ldGhvZCkpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHpp''@;'; put 'put ''cCA6IGNvbXByZXNzaW9uICIrSS5wcmV0dHkodGhpcy5jb21wcmVzc2lvbk1ldGhvZCkrIiB1bmtub3duIChpbm5lciBmaWxlIDogIit0aGlzLmZpbGVOYW1lKyIpIik7aWYodGhpcy5kZWNvbXByZXNzZWQ9bmV3IFIsdGhpcy5kZWNvbXByZXNzZWQuY29tcHJlc3NlZFNpemU9dGhpcy5jb21w''@;'; put 'put ''cmVzc2VkU2l6ZSx0aGlzLmRlY29tcHJlc3NlZC51bmNvbXByZXNzZWRTaXplPXRoaXMudW5jb21wcmVzc2VkU2l6ZSx0aGlzLmRlY29tcHJlc3NlZC5jcmMzMj10aGlzLmNyYzMyLHRoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzaW9uTWV0aG9kPXRoaXMuY29tcHJlc3Npb25NZXRob2QsdGhp''@;'; put 'put ''cy5kZWNvbXByZXNzZWQuZ2V0Q29tcHJlc3NlZENvbnRlbnQ9dGhpcy5wcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQoaixqLmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsViksdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudD10aGlzLnByZXBhcmVDb250ZW50KGosai5pbmRleCx0aGlzLmNv''@;'; put 'put ''bXByZXNzZWRTaXplLFYsdGhpcy51bmNvbXByZXNzZWRTaXplKSx0aGlzLmxvYWRPcHRpb25zLmNoZWNrQ1JDMzImJih0aGlzLmRlY29tcHJlc3NlZD1JLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQoKSksRS5jcmMzMih0aGlzLmRlY29tcHJlc3Nl''@;'; put 'put ''ZCkhPT10aGlzLmNyYzMyKSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBDUkMzMiBtaXNtYXRjaCIpfSxyZWFkQ2VudHJhbFBhcnQ6ZnVuY3Rpb24oail7aWYodGhpcy52ZXJzaW9uTWFkZUJ5PWoucmVhZFN0cmluZygyKSx0aGlzLnZlcnNpb25OZWVkZWQ9ai5yZWFkSW50KDIp''@;'; put 'put ''LHRoaXMuYml0RmxhZz1qLnJlYWRJbnQoMiksdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1qLnJlYWRTdHJpbmcoMiksdGhpcy5kYXRlPWoucmVhZERhdGUoKSx0aGlzLmNyYzMyPWoucmVhZEludCg0KSx0aGlzLmNvbXByZXNzZWRTaXplPWoucmVhZEludCg0KSx0aGlzLnVuY29tcHJlc3NlZFNp''@;'; put 'put ''emU9ai5yZWFkSW50KDQpLHRoaXMuZmlsZU5hbWVMZW5ndGg9ai5yZWFkSW50KDIpLHRoaXMuZXh0cmFGaWVsZHNMZW5ndGg9ai5yZWFkSW50KDIpLHRoaXMuZmlsZUNvbW1lbnRMZW5ndGg9ai5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlclN0YXJ0PWoucmVhZEludCgyKSx0aGlzLmludGVy''@;'; put 'put ''bmFsRmlsZUF0dHJpYnV0ZXM9ai5yZWFkSW50KDIpLHRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcz1qLnJlYWRJbnQoNCksdGhpcy5sb2NhbEhlYWRlck9mZnNldD1qLnJlYWRJbnQoNCksdGhpcy5pc0VuY3J5cHRlZCgpKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGVkIHppcCBhcmUgbm90''@;'; put 'put ''IHN1cHBvcnRlZCIpO3RoaXMuZmlsZU5hbWU9ai5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpLHRoaXMucmVhZEV4dHJhRmllbGRzKGopLHRoaXMucGFyc2VaSVA2NEV4dHJhRmllbGQoaiksdGhpcy5maWxlQ29tbWVudD1qLnJlYWRTdHJpbmcodGhpcy5maWxlQ29tbWVudExlbmd0''@;'; put 'put ''aCksdGhpcy5kaXI9ISEoMTYmdGhpcy5leHRlcm5hbEZpbGVBdHRyaWJ1dGVzKX0scGFyc2VaSVA2NEV4dHJhRmllbGQ6ZnVuY3Rpb24oail7aWYodGhpcy5leHRyYUZpZWxkc1sxXSl7dmFyIFY9bmV3IEoodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXpl''@;'; put 'put ''PT09SS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPVYucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PUkuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9Vi5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09SS5N''@;'; put 'put ''QVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD1WLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09SS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9Vi5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihqKXt2''@;'; put 'put ''YXIgRyxXLFUsVj1qLmluZGV4O2Zvcih0aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O2ouaW5kZXg8Vit0aGlzLmV4dHJhRmllbGRzTGVuZ3RoOylHPWoucmVhZEludCgyKSxXPWoucmVhZEludCgyKSxVPWoucmVhZFN0cmluZyhXKSx0aGlzLmV4dHJhRmllbGRzW0ddPXtp''@;'; put 'put ''ZDpHLGxlbmd0aDpXLHZhbHVlOlV9fSxoYW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZT1FLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudD1FLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgaj10''@;'; put 'put ''aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtudWxsIT09aiYmKHRoaXMuZmlsZU5hbWU9aik7dmFyIFY9dGhpcy5maW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7bnVsbCE9PVYmJih0aGlzLmZpbGVDb21tZW50PVYpfX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBqPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKGope3ZhciBWPW5ldyBKKGoudmFsdWUpO3JldHVybiAxIT09Vi5yZWFkSW50KDEpfHxFLmNyYzMyKHRoaXMuZmlsZU5hbWUpIT09Vi5yZWFkSW50KDQpP251bGw6RS51dGY4ZGVjb2RlKFYucmVhZFN0cmluZyhqLmxlbmd0''@;'; put 'put ''aC01KSl9cmV0dXJuIG51bGx9LGZpbmRFeHRyYUZpZWxkVW5pY29kZUNvbW1lbnQ6ZnVuY3Rpb24oKXt2YXIgaj10aGlzLmV4dHJhRmllbGRzWzI1NDYxXTtpZihqKXt2YXIgVj1uZXcgSihqLnZhbHVlKTtyZXR1cm4gMSE9PVYucmVhZEludCgxKXx8RS5jcmMzMih0aGlzLmZpbGVDb21tZW50''@;'; put 'put ''KSE9PVYucmVhZEludCg0KT9udWxsOkUudXRmOGRlY29kZShWLnJlYWRTdHJpbmcoai5sZW5ndGgtNSkpfXJldHVybiBudWxsfX0sTC5leHBvcnRzPXp9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpb''@;'; put 'put ''ZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgej17fTsoMCxCKCIuL2xpYi91dGlscy9jb21tb24iKS5hc3NpZ24pKHosQigiLi9saWIvZGVmbGF0ZSIpLEIoIi4vbGliL2luZmxhdGUiKSxCKCIuL2xpYi96bGliL2NvbnN0YW50cyIpKSxMLmV4cG9ydHM9en0seyIuL2xpYi9kZWZs''@;'; put 'put ''YXRlIjoyNSwiLi9saWIvaW5mbGF0ZSI6MjYsIi4vbGliL3V0aWxzL2NvbW1vbiI6MjcsIi4vbGliL3psaWIvY29uc3RhbnRzIjozMH1dLDI1OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vemxpYi9kZWZsYXRlLmpzIiksST1CKCIuL3V0aWxzL2NvbW1vbiIpLFI9''@;'; put 'put ''QigiLi91dGlscy9zdHJpbmdzIiksRT1CKCIuL3psaWIvbWVzc2FnZXMiKSx6PUIoIi4vemxpYi96c3RyZWFtIiksbmU9ZnVuY3Rpb24odWUpe3RoaXMub3B0aW9ucz1JLmFzc2lnbih7bGV2ZWw6LTEsbWV0aG9kOjgsY2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MTUsbWVtTGV2ZWw6OCxz''@;'; put 'put ''dHJhdGVneTowLHRvOiIifSx1ZXx8e30pO3ZhciBjZT10aGlzLm9wdGlvbnM7Y2UucmF3JiZjZS53aW5kb3dCaXRzPjA/Y2Uud2luZG93Qml0cz0tY2Uud2luZG93Qml0czpjZS5nemlwJiZjZS53aW5kb3dCaXRzPjAmJmNlLndpbmRvd0JpdHM8MTYmJihjZS53aW5kb3dCaXRzKz0xNiksdGhp''@;'; put 'put ''cy5lcnI9MCx0aGlzLm1zZz0iIix0aGlzLmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgeix0aGlzLnN0cm0uYXZhaWxfb3V0PTA7dmFyIFk9Si5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLGNlLmxldmVsLGNlLm1ldGhvZCxjZS53aW5kb3dCaXRzLGNlLm1lbUxldmVsLGNl''@;'; put 'put ''LnN0cmF0ZWd5KTtpZigwIT09WSl0aHJvdyBuZXcgRXJyb3IoRVtZXSk7Y2UuaGVhZGVyJiZKLmRlZmxhdGVTZXRIZWFkZXIodGhpcy5zdHJtLGNlLmhlYWRlcil9O2Z1bmN0aW9uIGllKHVlLGNlKXt2YXIgWT1uZXcgbmUoY2UpO2lmKFkucHVzaCh1ZSwhMCksWS5lcnIpdGhyb3cgWS5tc2c7''@;'; put 'put ''cmV0dXJuIFkucmVzdWx0fW5lLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHVlLGNlKXt2YXIgeCxOLFk9dGhpcy5zdHJtLGI9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO049Y2U9PT1+fmNlP2NlOiEwPT09Y2U/NDowLFkuaW5wdXQ9InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiB1ZT9SLnN0cmluZzJidWYodWUpOnVlLFkubmV4dF9pbj0wLFkuYXZhaWxfaW49WS5pbnB1dC5sZW5ndGg7ZG97aWYoMD09PVkuYXZhaWxfb3V0JiYoWS5vdXRwdXQ9bmV3IEkuQnVmOChiKSxZLm5leHRfb3V0PTAsWS5hdmFpbF9vdXQ9YiksMSE9PSh4PUouZGVmbGF0ZShZLE4pKSYm''@;'; put 'put ''MCE9PXgpcmV0dXJuIHRoaXMub25FbmQoeCksdGhpcy5lbmRlZD0hMCwhMTsoMD09PVkuYXZhaWxfb3V0fHwwPT09WS5hdmFpbF9pbiYmND09PU4pJiZ0aGlzLm9uRGF0YSgic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz9SLmJ1ZjJiaW5zdHJpbmcoSS5zaHJpbmtCdWYoWS5vdXRwdXQsWS5u''@;'; put 'put ''ZXh0X291dCkpOkkuc2hyaW5rQnVmKFkub3V0cHV0LFkubmV4dF9vdXQpKX13aGlsZSgoWS5hdmFpbF9pbj4wfHwwPT09WS5hdmFpbF9vdXQpJiYxIT09eCk7cmV0dXJuIDQhPT1OfHwoeD1KLmRlZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKHgpLHRoaXMuZW5kZWQ9ITAsMD09PXgp''@;'; put 'put ''fSxuZS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKHVlKXt0aGlzLmNodW5rcy5wdXNoKHVlKX0sbmUucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHVlKXswPT09dWUmJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpJLmZsYXR0''@;'; put 'put ''ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj11ZSx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfSxLLkRlZmxhdGU9bmUsSy5kZWZsYXRlPWllLEsuZGVmbGF0ZVJhdz1mdW5jdGlvbiBsZSh1ZSxjZSl7cmV0dXJuKGNlPWNlfHx7fSkucmF3PSEwLGllKHVlLGNl''@;'; put 'put ''KX0sSy5nemlwPWZ1bmN0aW9uIGRlKHVlLGNlKXtyZXR1cm4oY2U9Y2V8fHt9KS5nemlwPSEwLGllKHVlLGNlKX19LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvZGVmbGF0ZS5qcyI6MzIsIi4vemxpYi9tZXNzYWdlcyI6MzcsIi4vemxpYi96c3Ry''@;'; put 'put ''ZWFtIjozOX1dLDI2OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vemxpYi9pbmZsYXRlLmpzIiksST1CKCIuL3V0aWxzL2NvbW1vbiIpLFI9QigiLi91dGlscy9zdHJpbmdzIiksRT1CKCIuL3psaWIvY29uc3RhbnRzIiksej1CKCIuL3psaWIvbWVzc2FnZXMiKSxq''@;'; put 'put ''PUIoIi4vemxpYi96c3RyZWFtIiksVj1CKCIuL3psaWIvZ3poZWFkZXIiKSxHPWZ1bmN0aW9uKHEpe3RoaXMub3B0aW9ucz1JLmFzc2lnbih7Y2h1bmtTaXplOjE2Mzg0LHdpbmRvd0JpdHM6MCx0bzoiIn0scXx8e30pO3ZhciB0ZT10aGlzLm9wdGlvbnM7dGUucmF3JiZ0ZS53aW5kb3dCaXRz''@;'; put 'put ''Pj0wJiZ0ZS53aW5kb3dCaXRzPDE2JiYodGUud2luZG93Qml0cz0tdGUud2luZG93Qml0cywwPT09dGUud2luZG93Qml0cyYmKHRlLndpbmRvd0JpdHM9LTE1KSksdGUud2luZG93Qml0cz49MCYmdGUud2luZG93Qml0czwxNiYmIShxJiZxLndpbmRvd0JpdHMpJiYodGUud2luZG93Qml0cys9''@;'; put 'put ''MzIpLHRlLndpbmRvd0JpdHM+MTUmJnRlLndpbmRvd0JpdHM8NDgmJigxNSZ0ZS53aW5kb3dCaXRzfHwodGUud2luZG93Qml0c3w9MTUpKSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10sdGhpcy5zdHJtPW5ldyBqLHRoaXMuc3RybS5hdmFpbF9v''@;'; put 'put ''dXQ9MDt2YXIgbmU9Si5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLHRlLndpbmRvd0JpdHMpO2lmKG5lIT09RS5aX09LKXRocm93IG5ldyBFcnJvcih6W25lXSk7dGhpcy5oZWFkZXI9bmV3IFYsSi5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlcil9O2Z1bmN0aW9uIFcocSx0''@;'; put 'put ''ZSl7dmFyIG5lPW5ldyBHKHRlKTtpZihuZS5wdXNoKHEsITApLG5lLmVycil0aHJvdyBuZS5tc2c7cmV0dXJuIG5lLnJlc3VsdH1HLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHEsdGUpe3ZhciBsZSxkZSx1ZSxjZSxZLG5lPXRoaXMuc3RybSxpZT10aGlzLm9wdGlvbnMuY2h1bmtTaXplO2lm''@;'; put 'put ''KHRoaXMuZW5kZWQpcmV0dXJuITE7ZGU9dGU9PT1+fnRlP3RlOiEwPT09dGU/RS5aX0ZJTklTSDpFLlpfTk9fRkxVU0gsbmUuaW5wdXQ9InN0cmluZyI9PXR5cGVvZiBxP1IuYmluc3RyaW5nMmJ1ZihxKTpxLG5lLm5leHRfaW49MCxuZS5hdmFpbF9pbj1uZS5pbnB1dC5sZW5ndGg7ZG97aWYo''@;'; put 'put ''MD09PW5lLmF2YWlsX291dCYmKG5lLm91dHB1dD1uZXcgSS5CdWY4KGllKSxuZS5uZXh0X291dD0wLG5lLmF2YWlsX291dD1pZSksKGxlPUouaW5mbGF0ZShuZSxFLlpfTk9fRkxVU0gpKSE9PUUuWl9TVFJFQU1fRU5EJiZsZSE9PUUuWl9PSylyZXR1cm4gdGhpcy5vbkVuZChsZSksdGhpcy5l''@;'; put 'put ''bmRlZD0hMCwhMTtuZS5uZXh0X291dCYmKDA9PT1uZS5hdmFpbF9vdXR8fGxlPT09RS5aX1NUUkVBTV9FTkR8fDA9PT1uZS5hdmFpbF9pbiYmZGU9PT1FLlpfRklOSVNIKSYmKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvPyh1ZT1SLnV0Zjhib3JkZXIobmUub3V0cHV0LG5lLm5leHRfb3V0''@;'; put 'put ''KSxjZT1uZS5uZXh0X291dC11ZSxZPVIuYnVmMnN0cmluZyhuZS5vdXRwdXQsdWUpLG5lLm5leHRfb3V0PWNlLG5lLmF2YWlsX291dD1pZS1jZSxjZSYmSS5hcnJheVNldChuZS5vdXRwdXQsbmUub3V0cHV0LHVlLGNlLDApLHRoaXMub25EYXRhKFkpKTp0aGlzLm9uRGF0YShJLnNocmlua0J1''@;'; put 'put ''ZihuZS5vdXRwdXQsbmUubmV4dF9vdXQpKSl9d2hpbGUobmUuYXZhaWxfaW4+MCYmbGUhPT1FLlpfU1RSRUFNX0VORCk7cmV0dXJuIGxlPT09RS5aX1NUUkVBTV9FTkQmJihkZT1FLlpfRklOSVNIKSxkZSE9PUUuWl9GSU5JU0h8fChsZT1KLmluZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9u''@;'; put 'put ''RW5kKGxlKSx0aGlzLmVuZGVkPSEwLGxlPT09RS5aX09LKX0sRy5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKHEpe3RoaXMuY2h1bmtzLnB1c2gocSl9LEcucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHEpe3E9PT1FLlpfT0smJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9u''@;'; put 'put ''cy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpJLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj1xLHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LEsuSW5mbGF0ZT1HLEsuaW5mbGF0ZT1XLEsuaW5mbGF0ZVJhdz1mdW5jdGlvbiBVKHEsdGUpe3JldHVy''@;'; put 'put ''bih0ZT10ZXx8e30pLnJhdz0hMCxXKHEsdGUpfSxLLnVuZ3ppcD1XfSx7Ii4vdXRpbHMvY29tbW9uIjoyNywiLi91dGlscy9zdHJpbmdzIjoyOCwiLi96bGliL2NvbnN0YW50cyI6MzAsIi4vemxpYi9nemhlYWRlciI6MzMsIi4vemxpYi9pbmZsYXRlLmpzIjozNSwiLi96bGliL21lc3NhZ2Vz''@;'; put 'put ''IjozNywiLi96bGliL3pzdHJlYW0iOjM5fV0sMjc6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9dHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ0eXBlb2YgVWludDE2QXJyYXk8InUiJiZ0eXBlb2YgSW50MzJBcnJheTwidSI7Sy5hc3NpZ249ZnVuY3Rpb24oRSl7Zm9yKHZhciB6''@;'; put 'put ''PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTt6Lmxlbmd0aDspe3ZhciBqPXouc2hpZnQoKTtpZihqKXtpZigib2JqZWN0IiE9dHlwZW9mIGopdGhyb3cgbmV3IFR5cGVFcnJvcihqKyJtdXN0IGJlIG5vbi1vYmplY3QiKTtmb3IodmFyIFYgaW4gailqLmhhc093blBy''@;'; put 'put ''b3BlcnR5KFYpJiYoRVtWXT1qW1ZdKX19cmV0dXJuIEV9LEsuc2hyaW5rQnVmPWZ1bmN0aW9uKEUseil7cmV0dXJuIEUubGVuZ3RoPT09ej9FOkUuc3ViYXJyYXk/RS5zdWJhcnJheSgwLHopOihFLmxlbmd0aD16LEUpfTt2YXIgST17YXJyYXlTZXQ6ZnVuY3Rpb24oRSx6LGosVixHKXtpZih6''@;'; put 'put ''LnN1YmFycmF5JiZFLnN1YmFycmF5KUUuc2V0KHouc3ViYXJyYXkoaixqK1YpLEcpO2Vsc2UgZm9yKHZhciBXPTA7VzxWO1crKylFW0crV109eltqK1ddfSxmbGF0dGVuQ2h1bmtzOmZ1bmN0aW9uKEUpe3ZhciB6LGosVixHLFcsVTtmb3IoVj0wLHo9MCxqPUUubGVuZ3RoO3o8ajt6KyspVis9''@;'; put 'put ''RVt6XS5sZW5ndGg7Zm9yKFU9bmV3IFVpbnQ4QXJyYXkoViksRz0wLHo9MCxqPUUubGVuZ3RoO3o8ajt6KyspVS5zZXQoVz1FW3pdLEcpLEcrPVcubGVuZ3RoO3JldHVybiBVfX0sUj17YXJyYXlTZXQ6ZnVuY3Rpb24oRSx6LGosVixHKXtmb3IodmFyIFc9MDtXPFY7VysrKUVbRytXXT16W2or''@;'; put 'put ''V119LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24oRSl7cmV0dXJuW10uY29uY2F0LmFwcGx5KFtdLEUpfX07Sy5zZXRUeXBlZD1mdW5jdGlvbihFKXtFPyhLLkJ1Zjg9VWludDhBcnJheSxLLkJ1ZjE2PVVpbnQxNkFycmF5LEsuQnVmMzI9SW50MzJBcnJheSxLLmFzc2lnbihLLEkpKTooSy5CdWY4''@;'; put 'put ''PUFycmF5LEsuQnVmMTY9QXJyYXksSy5CdWYzMj1BcnJheSxLLmFzc2lnbihLLFIpKX0sSy5zZXRUeXBlZChKKX0se31dLDI4OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4vY29tbW9uIiksST0hMCxSPSEwO3RyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51''@;'; put 'put ''bGwsWzBdKX1jYXRjaHtJPSExfXRyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMSkpfWNhdGNoe1I9ITF9Zm9yKHZhciBFPW5ldyBKLkJ1ZjgoMjU2KSx6PTA7ejwyNTY7eisrKUVbel09ej49MjUyPzY6ej49MjQ4PzU6ej49MjQwPzQ6ej49MjI0PzM6''@;'; put 'put ''ej49MTkyPzI6MTtmdW5jdGlvbiBqKFYsRyl7aWYoRzw2NTUzNyYmKFYuc3ViYXJyYXkmJlJ8fCFWLnN1YmFycmF5JiZJKSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLEouc2hyaW5rQnVmKFYsRykpO2Zvcih2YXIgVz0iIixVPTA7VTxHO1UrKylXKz1TdHJpbmcuZnJv''@;'; put 'put ''bUNoYXJDb2RlKFZbVV0pO3JldHVybiBXfUVbMjU0XT1FWzI1NF09MSxLLnN0cmluZzJidWY9ZnVuY3Rpb24oVil7dmFyIEcsVyxVLHEsdGUsbmU9Vi5sZW5ndGgsaWU9MDtmb3IocT0wO3E8bmU7cSsrKTU1Mjk2PT0oNjQ1MTImKFc9Vi5jaGFyQ29kZUF0KHEpKSkmJnErMTxuZSYmNTYzMjA9''@;'; put 'put ''PSg2NDUxMiYoVT1WLmNoYXJDb2RlQXQocSsxKSkpJiYoVz02NTUzNisoVy01NTI5Njw8MTApKyhVLTU2MzIwKSxxKyspLGllKz1XPDEyOD8xOlc8MjA0OD8yOlc8NjU1MzY/Mzo0O2ZvcihHPW5ldyBKLkJ1ZjgoaWUpLHRlPTAscT0wO3RlPGllO3ErKyk1NTI5Nj09KDY0NTEyJihXPVYuY2hh''@;'; put 'put ''ckNvZGVBdChxKSkpJiZxKzE8bmUmJjU2MzIwPT0oNjQ1MTImKFU9Vi5jaGFyQ29kZUF0KHErMSkpKSYmKFc9NjU1MzYrKFctNTUyOTY8PDEwKSsoVS01NjMyMCkscSsrKSxXPDEyOD9HW3RlKytdPVc6VzwyMDQ4PyhHW3RlKytdPTE5MnxXPj4+NixHW3RlKytdPTEyOHw2MyZXKTpXPDY1NTM2''@;'; put 'put ''PyhHW3RlKytdPTIyNHxXPj4+MTIsR1t0ZSsrXT0xMjh8Vz4+PjYmNjMsR1t0ZSsrXT0xMjh8NjMmVyk6KEdbdGUrK109MjQwfFc+Pj4xOCxHW3RlKytdPTEyOHxXPj4+MTImNjMsR1t0ZSsrXT0xMjh8Vz4+PjYmNjMsR1t0ZSsrXT0xMjh8NjMmVyk7cmV0dXJuIEd9LEsuYnVmMmJpbnN0cmlu''@;'; put 'put ''Zz1mdW5jdGlvbihWKXtyZXR1cm4gaihWLFYubGVuZ3RoKX0sSy5iaW5zdHJpbmcyYnVmPWZ1bmN0aW9uKFYpe2Zvcih2YXIgRz1uZXcgSi5CdWY4KFYubGVuZ3RoKSxXPTAsVT1HLmxlbmd0aDtXPFU7VysrKUdbV109Vi5jaGFyQ29kZUF0KFcpO3JldHVybiBHfSxLLmJ1ZjJzdHJpbmc9ZnVu''@;'; put 'put ''Y3Rpb24oVixHKXt2YXIgVyxVLHEsdGUsbmU9R3x8Vi5sZW5ndGgsaWU9bmV3IEFycmF5KDIqbmUpO2ZvcihVPTAsVz0wO1c8bmU7KWlmKChxPVZbVysrXSk8MTI4KWllW1UrK109cTtlbHNlIGlmKCh0ZT1FW3FdKT40KWllW1UrK109NjU1MzMsVys9dGUtMTtlbHNle2ZvcihxJj0yPT09dGU/''@;'; put 'put ''MzE6Mz09PXRlPzE1Ojc7dGU+MSYmVzxuZTspcT1xPDw2fDYzJlZbVysrXSx0ZS0tO3RlPjE/aWVbVSsrXT02NTUzMzpxPDY1NTM2P2llW1UrK109cTooaWVbVSsrXT01NTI5NnwocS09NjU1MzYpPj4xMCYxMDIzLGllW1UrK109NTYzMjB8MTAyMyZxKX1yZXR1cm4gaihpZSxVKX0sSy51dGY4''@;'; put 'put ''Ym9yZGVyPWZ1bmN0aW9uKFYsRyl7dmFyIFc7Zm9yKChHPUd8fFYubGVuZ3RoKT5WLmxlbmd0aCYmKEc9Vi5sZW5ndGgpLFc9Ry0xO1c+PTAmJjEyOD09KDE5MiZWW1ddKTspVy0tO3JldHVybiBXPDB8fDA9PT1XP0c6VytFW1ZbV11dPkc/VzpHfX0seyIuL2NvbW1vbiI6Mjd9XSwyOTpbZnVu''@;'; put 'put ''Y3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0IjtMLmV4cG9ydHM9ZnVuY3Rpb24gSihJLFIsRSx6KXtmb3IodmFyIGo9NjU1MzUmSXwwLFY9ST4+PjE2JjY1NTM1fDAsRz0wOzAhPT1FOyl7RS09Rz1FPjJlMz8yZTM6RTtkb3tWPVYrKGo9aitSW3orK118MCl8MH13aGlsZSgtLUcpO2olPTY1NTIx''@;'; put 'put ''LFYlPTY1NTIxfXJldHVybiBqfFY8PDE2fDB9fSx7fV0sMzA6W2Z1bmN0aW9uKEIsTCxLKXtMLmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpf''@;'; put 'put ''U1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjot''@;'; put 'put ''MSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSwzMTpbZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgST1mdW5j''@;'; put 'put ''dGlvbiBKKCl7Zm9yKHZhciBFLHo9W10saj0wO2o8MjU2O2orKyl7RT1qO2Zvcih2YXIgVj0wO1Y8ODtWKyspRT0xJkU/Mzk4ODI5MjM4NF5FPj4+MTpFPj4+MTt6W2pdPUV9cmV0dXJuIHp9KCk7TC5leHBvcnRzPWZ1bmN0aW9uIFIoRSx6LGosVil7dmFyIEc9SSxXPVYrajtFXj0tMTtmb3Io''@;'; put 'put ''dmFyIFU9VjtVPFc7VSsrKUU9RT4+PjheR1syNTUmKEVeeltVXSldO3JldHVybi0xXkV9fSx7fV0sMzI6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi4vdXRpbHMvY29tbW9uIiksST1CKCIuL3RyZWVzIiksUj1CKCIuL2FkbGVyMzIiKSxFPUIoIi4vY3JjMzIiKSx6''@;'; put 'put ''PUIoIi4vbWVzc2FnZXMiKSxqPTAscT0wLG5lPS0yLE49MixGPTgsUz0yODYsUT0zMCxyZT0xOSxmZT0yKlMrMSxtZT0xNSxrZT0zLFRlPTI1OCxQZT1UZStrZSsxLE5lPTQyLG10PTExMztmdW5jdGlvbiBxZShvdCxJdCl7cmV0dXJuIG90Lm1zZz16W0l0XSxJdH1mdW5jdGlvbiBodChvdCl7''@;'; put 'put ''cmV0dXJuKG90PDwxKS0ob3Q+ND85OjApfWZ1bmN0aW9uIEVlKG90KXtmb3IodmFyIEl0PW90Lmxlbmd0aDstLUl0Pj0wOylvdFtJdF09MH1mdW5jdGlvbiBEZShvdCl7dmFyIEl0PW90LnN0YXRlLG5uPUl0LnBlbmRpbmc7bm4+b3QuYXZhaWxfb3V0JiYobm49b3QuYXZhaWxfb3V0KSwwIT09''@;'; put 'put ''bm4mJihKLmFycmF5U2V0KG90Lm91dHB1dCxJdC5wZW5kaW5nX2J1ZixJdC5wZW5kaW5nX291dCxubixvdC5uZXh0X291dCksb3QubmV4dF9vdXQrPW5uLEl0LnBlbmRpbmdfb3V0Kz1ubixvdC50b3RhbF9vdXQrPW5uLG90LmF2YWlsX291dC09bm4sSXQucGVuZGluZy09bm4sMD09PUl0LnBl''@;'; put 'put ''bmRpbmcmJihJdC5wZW5kaW5nX291dD0wKSl9ZnVuY3Rpb24gJGUob3QsSXQpe0kuX3RyX2ZsdXNoX2Jsb2NrKG90LG90LmJsb2NrX3N0YXJ0Pj0wP290LmJsb2NrX3N0YXJ0Oi0xLG90LnN0cnN0YXJ0LW90LmJsb2NrX3N0YXJ0LEl0KSxvdC5ibG9ja19zdGFydD1vdC5zdHJzdGFydCxEZShv''@;'; put 'put ''dC5zdHJtKX1mdW5jdGlvbiBhdChvdCxJdCl7b3QucGVuZGluZ19idWZbb3QucGVuZGluZysrXT1JdH1mdW5jdGlvbiBjdChvdCxJdCl7b3QucGVuZGluZ19idWZbb3QucGVuZGluZysrXT1JdD4+PjgmMjU1LG90LnBlbmRpbmdfYnVmW290LnBlbmRpbmcrK109MjU1Jkl0fWZ1bmN0aW9uIE90''@;'; put 'put ''KG90LEl0LG5uLER0KXt2YXIgdnQ9b3QuYXZhaWxfaW47cmV0dXJuIHZ0PkR0JiYodnQ9RHQpLDA9PT12dD8wOihvdC5hdmFpbF9pbi09dnQsSi5hcnJheVNldChJdCxvdC5pbnB1dCxvdC5uZXh0X2luLHZ0LG5uKSwxPT09b3Quc3RhdGUud3JhcD9vdC5hZGxlcj1SKG90LmFkbGVyLEl0LHZ0''@;'; put 'put ''LG5uKToyPT09b3Quc3RhdGUud3JhcCYmKG90LmFkbGVyPUUob3QuYWRsZXIsSXQsdnQsbm4pKSxvdC5uZXh0X2luKz12dCxvdC50b3RhbF9pbis9dnQsdnQpfWZ1bmN0aW9uIFB0KG90LEl0KXt2YXIgdnQsR3Qsbm49b3QubWF4X2NoYWluX2xlbmd0aCxEdD1vdC5zdHJzdGFydCxMbj1vdC5w''@;'; put 'put ''cmV2X2xlbmd0aCx6dD1vdC5uaWNlX21hdGNoLE1uPW90LnN0cnN0YXJ0Pm90Lndfc2l6ZS1QZT9vdC5zdHJzdGFydC0ob3Qud19zaXplLVBlKTowLFRuPW90LndpbmRvdyxzbj1vdC53X21hc2ssQm49b3QucHJldixGbj1vdC5zdHJzdGFydCtUZSxxdD1UbltEdCtMbi0xXSxIbj1UbltEdCtM''@;'; put 'put ''bl07b3QucHJldl9sZW5ndGg+PW90Lmdvb2RfbWF0Y2gmJihubj4+PTIpLHp0Pm90Lmxvb2thaGVhZCYmKHp0PW90Lmxvb2thaGVhZCk7ZG97aWYoVG5bKHZ0PUl0KStMbl09PT1IbiYmVG5bdnQrTG4tMV09PT1xdCYmVG5bdnRdPT09VG5bRHRdJiZUblsrK3Z0XT09PVRuW0R0KzFdKXtEdCs9''@;'; put 'put ''Mix2dCsrO2Rve313aGlsZShUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZUblsrK0R0XT09PVRuWysrdnRdJiZU''@;'; put 'put ''blsrK0R0XT09PVRuWysrdnRdJiZEdDxGbik7aWYoR3Q9VGUtKEZuLUR0KSxEdD1Gbi1UZSxHdD5Mbil7aWYob3QubWF0Y2hfc3RhcnQ9SXQsTG49R3QsR3Q+PXp0KWJyZWFrO3F0PVRuW0R0K0xuLTFdLEhuPVRuW0R0K0xuXX19fXdoaWxlKChJdD1CbltJdCZzbl0pPk1uJiYwIT0tLW5uKTty''@;'; put 'put ''ZXR1cm4gTG48PW90Lmxvb2thaGVhZD9MbjpvdC5sb29rYWhlYWR9ZnVuY3Rpb24gQXQob3Qpe3ZhciBubixEdCx2dCxHdCxMbixJdD1vdC53X3NpemU7ZG97aWYoR3Q9b3Qud2luZG93X3NpemUtb3QubG9va2FoZWFkLW90LnN0cnN0YXJ0LG90LnN0cnN0YXJ0Pj1JdCsoSXQtUGUpKXtKLmFy''@;'; put 'put ''cmF5U2V0KG90LndpbmRvdyxvdC53aW5kb3csSXQsSXQsMCksb3QubWF0Y2hfc3RhcnQtPUl0LG90LnN0cnN0YXJ0LT1JdCxvdC5ibG9ja19zdGFydC09SXQsbm49RHQ9b3QuaGFzaF9zaXplO2Rve3Z0PW90LmhlYWRbLS1ubl0sb3QuaGVhZFtubl09dnQ+PUl0P3Z0LUl0OjB9d2hpbGUoLS1E''@;'; put 'put ''dCk7bm49RHQ9SXQ7ZG97dnQ9b3QucHJldlstLW5uXSxvdC5wcmV2W25uXT12dD49SXQ/dnQtSXQ6MH13aGlsZSgtLUR0KTtHdCs9SXR9aWYoMD09PW90LnN0cm0uYXZhaWxfaW4pYnJlYWs7aWYoRHQ9T3Qob3Quc3RybSxvdC53aW5kb3csb3Quc3Ryc3RhcnQrb3QubG9va2FoZWFkLEd0KSxv''@;'; put 'put ''dC5sb29rYWhlYWQrPUR0LG90Lmxvb2thaGVhZCtvdC5pbnNlcnQ+PWtlKWZvcihvdC5pbnNfaD1vdC53aW5kb3dbTG49b3Quc3Ryc3RhcnQtb3QuaW5zZXJ0XSxvdC5pbnNfaD0ob3QuaW5zX2g8PG90Lmhhc2hfc2hpZnReb3Qud2luZG93W0xuKzFdKSZvdC5oYXNoX21hc2s7b3QuaW5zZXJ0''@;'; put 'put ''JiYob3QuaW5zX2g9KG90Lmluc19oPDxvdC5oYXNoX3NoaWZ0Xm90LndpbmRvd1tMbitrZS0xXSkmb3QuaGFzaF9tYXNrLG90LnByZXZbTG4mb3Qud19tYXNrXT1vdC5oZWFkW290Lmluc19oXSxvdC5oZWFkW290Lmluc19oXT1MbixMbisrLG90Lmluc2VydC0tLCEob3QubG9va2FoZWFkK290''@;'; put 'put ''Lmluc2VydDxrZSkpOyk7fXdoaWxlKG90Lmxvb2thaGVhZDxQZSYmMCE9PW90LnN0cm0uYXZhaWxfaW4pfWZ1bmN0aW9uIG1uKG90LEl0KXtmb3IodmFyIG5uLER0Ozspe2lmKG90Lmxvb2thaGVhZDxQZSl7aWYoQXQob3QpLG90Lmxvb2thaGVhZDxQZSYmSXQ9PT1qKXJldHVybiAxO2lmKDA9''@;'; put 'put ''PT1vdC5sb29rYWhlYWQpYnJlYWt9aWYobm49MCxvdC5sb29rYWhlYWQ+PWtlJiYob3QuaW5zX2g9KG90Lmluc19oPDxvdC5oYXNoX3NoaWZ0Xm90LndpbmRvd1tvdC5zdHJzdGFydCtrZS0xXSkmb3QuaGFzaF9tYXNrLG5uPW90LnByZXZbb3Quc3Ryc3RhcnQmb3Qud19tYXNrXT1vdC5oZWFk''@;'; put 'put ''W290Lmluc19oXSxvdC5oZWFkW290Lmluc19oXT1vdC5zdHJzdGFydCksMCE9PW5uJiZvdC5zdHJzdGFydC1ubjw9b3Qud19zaXplLVBlJiYob3QubWF0Y2hfbGVuZ3RoPVB0KG90LG5uKSksb3QubWF0Y2hfbGVuZ3RoPj1rZSlpZihEdD1JLl90cl90YWxseShvdCxvdC5zdHJzdGFydC1vdC5t''@;'; put 'put ''YXRjaF9zdGFydCxvdC5tYXRjaF9sZW5ndGgta2UpLG90Lmxvb2thaGVhZC09b3QubWF0Y2hfbGVuZ3RoLG90Lm1hdGNoX2xlbmd0aDw9b3QubWF4X2xhenlfbWF0Y2gmJm90Lmxvb2thaGVhZD49a2Upe290Lm1hdGNoX2xlbmd0aC0tO2Rve290LnN0cnN0YXJ0Kyssb3QuaW5zX2g9KG90Lmlu''@;'; put 'put ''c19oPDxvdC5oYXNoX3NoaWZ0Xm90LndpbmRvd1tvdC5zdHJzdGFydCtrZS0xXSkmb3QuaGFzaF9tYXNrLG5uPW90LnByZXZbb3Quc3Ryc3RhcnQmb3Qud19tYXNrXT1vdC5oZWFkW290Lmluc19oXSxvdC5oZWFkW290Lmluc19oXT1vdC5zdHJzdGFydH13aGlsZSgwIT0tLW90Lm1hdGNoX2xl''@;'; put 'put ''bmd0aCk7b3Quc3Ryc3RhcnQrK31lbHNlIG90LnN0cnN0YXJ0Kz1vdC5tYXRjaF9sZW5ndGgsb3QubWF0Y2hfbGVuZ3RoPTAsb3QuaW5zX2g9b3Qud2luZG93W290LnN0cnN0YXJ0XSxvdC5pbnNfaD0ob3QuaW5zX2g8PG90Lmhhc2hfc2hpZnReb3Qud2luZG93W290LnN0cnN0YXJ0KzFdKSZv''@;'; put 'put ''dC5oYXNoX21hc2s7ZWxzZSBEdD1JLl90cl90YWxseShvdCwwLG90LndpbmRvd1tvdC5zdHJzdGFydF0pLG90Lmxvb2thaGVhZC0tLG90LnN0cnN0YXJ0Kys7aWYoRHQmJigkZShvdCwhMSksMD09PW90LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gb3QuaW5zZXJ0PW90LnN0cnN0''@;'; put 'put ''YXJ0PGtlLTE/b3Quc3Ryc3RhcnQ6a2UtMSw0PT09SXQ/KCRlKG90LCEwKSwwPT09b3Quc3RybS5hdmFpbF9vdXQ/Mzo0KTpvdC5sYXN0X2xpdCYmKCRlKG90LCExKSwwPT09b3Quc3RybS5hdmFpbF9vdXQpPzE6Mn1mdW5jdGlvbiBOdChvdCxJdCl7Zm9yKHZhciBubixEdCx2dDs7KXtpZihv''@;'; put 'put ''dC5sb29rYWhlYWQ8UGUpe2lmKEF0KG90KSxvdC5sb29rYWhlYWQ8UGUmJkl0PT09ailyZXR1cm4gMTtpZigwPT09b3QubG9va2FoZWFkKWJyZWFrfWlmKG5uPTAsb3QubG9va2FoZWFkPj1rZSYmKG90Lmluc19oPShvdC5pbnNfaDw8b3QuaGFzaF9zaGlmdF5vdC53aW5kb3dbb3Quc3Ryc3Rh''@;'; put 'put ''cnQra2UtMV0pJm90Lmhhc2hfbWFzayxubj1vdC5wcmV2W290LnN0cnN0YXJ0Jm90LndfbWFza109b3QuaGVhZFtvdC5pbnNfaF0sb3QuaGVhZFtvdC5pbnNfaF09b3Quc3Ryc3RhcnQpLG90LnByZXZfbGVuZ3RoPW90Lm1hdGNoX2xlbmd0aCxvdC5wcmV2X21hdGNoPW90Lm1hdGNoX3N0YXJ0''@;'; put 'put ''LG90Lm1hdGNoX2xlbmd0aD1rZS0xLDAhPT1ubiYmb3QucHJldl9sZW5ndGg8b3QubWF4X2xhenlfbWF0Y2gmJm90LnN0cnN0YXJ0LW5uPD1vdC53X3NpemUtUGUmJihvdC5tYXRjaF9sZW5ndGg9UHQob3Qsbm4pLG90Lm1hdGNoX2xlbmd0aDw9NSYmKDE9PT1vdC5zdHJhdGVneXx8b3QubWF0''@;'; put 'put ''Y2hfbGVuZ3RoPT09a2UmJm90LnN0cnN0YXJ0LW90Lm1hdGNoX3N0YXJ0PjQwOTYpJiYob3QubWF0Y2hfbGVuZ3RoPWtlLTEpKSxvdC5wcmV2X2xlbmd0aD49a2UmJm90Lm1hdGNoX2xlbmd0aDw9b3QucHJldl9sZW5ndGgpe3Z0PW90LnN0cnN0YXJ0K290Lmxvb2thaGVhZC1rZSxEdD1JLl90''@;'; put 'put ''cl90YWxseShvdCxvdC5zdHJzdGFydC0xLW90LnByZXZfbWF0Y2gsb3QucHJldl9sZW5ndGgta2UpLG90Lmxvb2thaGVhZC09b3QucHJldl9sZW5ndGgtMSxvdC5wcmV2X2xlbmd0aC09Mjtkb3srK290LnN0cnN0YXJ0PD12dCYmKG90Lmluc19oPShvdC5pbnNfaDw8b3QuaGFzaF9zaGlmdF5v''@;'; put 'put ''dC53aW5kb3dbb3Quc3Ryc3RhcnQra2UtMV0pJm90Lmhhc2hfbWFzayxubj1vdC5wcmV2W290LnN0cnN0YXJ0Jm90LndfbWFza109b3QuaGVhZFtvdC5pbnNfaF0sb3QuaGVhZFtvdC5pbnNfaF09b3Quc3Ryc3RhcnQpfXdoaWxlKDAhPS0tb3QucHJldl9sZW5ndGgpO2lmKG90Lm1hdGNoX2F2''@;'; put 'put ''YWlsYWJsZT0wLG90Lm1hdGNoX2xlbmd0aD1rZS0xLG90LnN0cnN0YXJ0KyssRHQmJigkZShvdCwhMSksMD09PW90LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1lbHNlIGlmKG90Lm1hdGNoX2F2YWlsYWJsZSl7aWYoKER0PUkuX3RyX3RhbGx5KG90LDAsb3Qud2luZG93W290LnN0cnN0YXJ0''@;'; put 'put ''LTFdKSkmJiRlKG90LCExKSxvdC5zdHJzdGFydCsrLG90Lmxvb2thaGVhZC0tLDA9PT1vdC5zdHJtLmF2YWlsX291dClyZXR1cm4gMX1lbHNlIG90Lm1hdGNoX2F2YWlsYWJsZT0xLG90LnN0cnN0YXJ0Kyssb3QubG9va2FoZWFkLS19cmV0dXJuIG90Lm1hdGNoX2F2YWlsYWJsZSYmKER0PUku''@;'; put 'put ''X3RyX3RhbGx5KG90LDAsb3Qud2luZG93W290LnN0cnN0YXJ0LTFdKSxvdC5tYXRjaF9hdmFpbGFibGU9MCksb3QuaW5zZXJ0PW90LnN0cnN0YXJ0PGtlLTE/b3Quc3Ryc3RhcnQ6a2UtMSw0PT09SXQ/KCRlKG90LCEwKSwwPT09b3Quc3RybS5hdmFpbF9vdXQ/Mzo0KTpvdC5sYXN0X2xpdCYm''@;'; put 'put ''KCRlKG90LCExKSwwPT09b3Quc3RybS5hdmFpbF9vdXQpPzE6Mn12YXIgJG4sb249ZnVuY3Rpb24ob3QsSXQsbm4sRHQsdnQpe3RoaXMuZ29vZF9sZW5ndGg9b3QsdGhpcy5tYXhfbGF6eT1JdCx0aGlzLm5pY2VfbGVuZ3RoPW5uLHRoaXMubWF4X2NoYWluPUR0LHRoaXMuZnVuYz12dH07ZnVu''@;'; put 'put ''Y3Rpb24gcHQoKXt0aGlzLnN0cm09bnVsbCx0aGlzLnN0YXR1cz0wLHRoaXMucGVuZGluZ19idWY9bnVsbCx0aGlzLnBlbmRpbmdfYnVmX3NpemU9MCx0aGlzLnBlbmRpbmdfb3V0PTAsdGhpcy5wZW5kaW5nPTAsdGhpcy53cmFwPTAsdGhpcy5nemhlYWQ9bnVsbCx0aGlzLmd6aW5kZXg9MCx0''@;'; put 'put ''aGlzLm1ldGhvZD1GLHRoaXMubGFzdF9mbHVzaD0tMSx0aGlzLndfc2l6ZT0wLHRoaXMud19iaXRzPTAsdGhpcy53X21hc2s9MCx0aGlzLndpbmRvdz1udWxsLHRoaXMud2luZG93X3NpemU9MCx0aGlzLnByZXY9bnVsbCx0aGlzLmhlYWQ9bnVsbCx0aGlzLmluc19oPTAsdGhpcy5oYXNoX3Np''@;'; put 'put ''emU9MCx0aGlzLmhhc2hfYml0cz0wLHRoaXMuaGFzaF9tYXNrPTAsdGhpcy5oYXNoX3NoaWZ0PTAsdGhpcy5ibG9ja19zdGFydD0wLHRoaXMubWF0Y2hfbGVuZ3RoPTAsdGhpcy5wcmV2X21hdGNoPTAsdGhpcy5tYXRjaF9hdmFpbGFibGU9MCx0aGlzLnN0cnN0YXJ0PTAsdGhpcy5tYXRjaF9z''@;'; put 'put ''dGFydD0wLHRoaXMubG9va2FoZWFkPTAsdGhpcy5wcmV2X2xlbmd0aD0wLHRoaXMubWF4X2NoYWluX2xlbmd0aD0wLHRoaXMubWF4X2xhenlfbWF0Y2g9MCx0aGlzLmxldmVsPTAsdGhpcy5zdHJhdGVneT0wLHRoaXMuZ29vZF9tYXRjaD0wLHRoaXMubmljZV9tYXRjaD0wLHRoaXMuZHluX2x0''@;'; put 'put ''cmVlPW5ldyBKLkJ1ZjE2KDIqZmUpLHRoaXMuZHluX2R0cmVlPW5ldyBKLkJ1ZjE2KDIqKDIqUSsxKSksdGhpcy5ibF90cmVlPW5ldyBKLkJ1ZjE2KDIqKDIqcmUrMSkpLEVlKHRoaXMuZHluX2x0cmVlKSxFZSh0aGlzLmR5bl9kdHJlZSksRWUodGhpcy5ibF90cmVlKSx0aGlzLmxfZGVzYz1u''@;'; put 'put ''dWxsLHRoaXMuZF9kZXNjPW51bGwsdGhpcy5ibF9kZXNjPW51bGwsdGhpcy5ibF9jb3VudD1uZXcgSi5CdWYxNihtZSsxKSx0aGlzLmhlYXA9bmV3IEouQnVmMTYoMipTKzEpLEVlKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBKLkJ1''@;'; put 'put ''ZjE2KDIqUysxKSxFZSh0aGlzLmRlcHRoKSx0aGlzLmxfYnVmPTAsdGhpcy5saXRfYnVmc2l6ZT0wLHRoaXMubGFzdF9saXQ9MCx0aGlzLmRfYnVmPTAsdGhpcy5vcHRfbGVuPTAsdGhpcy5zdGF0aWNfbGVuPTAsdGhpcy5tYXRjaGVzPTAsdGhpcy5pbnNlcnQ9MCx0aGlzLmJpX2J1Zj0wLHRo''@;'; put 'put ''aXMuYmlfdmFsaWQ9MH1mdW5jdGlvbiBwbihvdCl7dmFyIEl0O3JldHVybiBvdCYmb3Quc3RhdGU/KG90LnRvdGFsX2luPW90LnRvdGFsX291dD0wLG90LmRhdGFfdHlwZT1OLChJdD1vdC5zdGF0ZSkucGVuZGluZz0wLEl0LnBlbmRpbmdfb3V0PTAsSXQud3JhcDwwJiYoSXQud3JhcD0tSXQu''@;'; put 'put ''d3JhcCksSXQuc3RhdHVzPUl0LndyYXA/TmU6bXQsb3QuYWRsZXI9Mj09PUl0LndyYXA/MDoxLEl0Lmxhc3RfZmx1c2g9aixJLl90cl9pbml0KEl0KSxxKTpxZShvdCxuZSl9ZnVuY3Rpb24gaG4ob3Qpe3ZhciBJdD1wbihvdCk7cmV0dXJuIEl0PT09cSYmZnVuY3Rpb24gTm4ob3Qpe290Lndp''@;'; put 'put ''bmRvd19zaXplPTIqb3Qud19zaXplLEVlKG90LmhlYWQpLG90Lm1heF9sYXp5X21hdGNoPSRuW290LmxldmVsXS5tYXhfbGF6eSxvdC5nb29kX21hdGNoPSRuW290LmxldmVsXS5nb29kX2xlbmd0aCxvdC5uaWNlX21hdGNoPSRuW290LmxldmVsXS5uaWNlX2xlbmd0aCxvdC5tYXhfY2hhaW5f''@;'; put 'put ''bGVuZ3RoPSRuW290LmxldmVsXS5tYXhfY2hhaW4sb3Quc3Ryc3RhcnQ9MCxvdC5ibG9ja19zdGFydD0wLG90Lmxvb2thaGVhZD0wLG90Lmluc2VydD0wLG90Lm1hdGNoX2xlbmd0aD1vdC5wcmV2X2xlbmd0aD1rZS0xLG90Lm1hdGNoX2F2YWlsYWJsZT0wLG90Lmluc19oPTB9KG90LnN0YXRl''@;'; put 'put ''KSxJdH1mdW5jdGlvbiBlbihvdCxJdCxubixEdCx2dCxHdCl7aWYoIW90KXJldHVybiBuZTt2YXIgTG49MTtpZigtMT09PUl0JiYoSXQ9NiksRHQ8MD8oTG49MCxEdD0tRHQpOkR0PjE1JiYoTG49MixEdC09MTYpLHZ0PDF8fHZ0Pjl8fG5uIT09Rnx8RHQ8OHx8RHQ+MTV8fEl0PDB8fEl0Pjl8''@;'; put 'put ''fEd0PDB8fEd0PjQpcmV0dXJuIHFlKG90LG5lKTs4PT09RHQmJihEdD05KTt2YXIgenQ9bmV3IHB0O3JldHVybiBvdC5zdGF0ZT16dCx6dC5zdHJtPW90LHp0LndyYXA9TG4senQuZ3poZWFkPW51bGwsenQud19iaXRzPUR0LHp0Lndfc2l6ZT0xPDx6dC53X2JpdHMsenQud19tYXNrPXp0Lndf''@;'; put 'put ''c2l6ZS0xLHp0Lmhhc2hfYml0cz12dCs3LHp0Lmhhc2hfc2l6ZT0xPDx6dC5oYXNoX2JpdHMsenQuaGFzaF9tYXNrPXp0Lmhhc2hfc2l6ZS0xLHp0Lmhhc2hfc2hpZnQ9fn4oKHp0Lmhhc2hfYml0cytrZS0xKS9rZSksenQud2luZG93PW5ldyBKLkJ1ZjgoMip6dC53X3NpemUpLHp0LmhlYWQ9''@;'; put 'put ''bmV3IEouQnVmMTYoenQuaGFzaF9zaXplKSx6dC5wcmV2PW5ldyBKLkJ1ZjE2KHp0Lndfc2l6ZSksenQubGl0X2J1ZnNpemU9MTw8dnQrNix6dC5wZW5kaW5nX2J1Zl9zaXplPTQqenQubGl0X2J1ZnNpemUsenQucGVuZGluZ19idWY9bmV3IEouQnVmOCh6dC5wZW5kaW5nX2J1Zl9zaXplKSx6''@;'; put 'put ''dC5kX2J1Zj16dC5saXRfYnVmc2l6ZT4+MSx6dC5sX2J1Zj0zKnp0LmxpdF9idWZzaXplLHp0LmxldmVsPUl0LHp0LnN0cmF0ZWd5PUd0LHp0Lm1ldGhvZD1ubixobihvdCl9JG49W25ldyBvbigwLDAsMCwwLGZ1bmN0aW9uIEp0KG90LEl0KXt2YXIgbm49NjU1MzU7Zm9yKG5uPm90LnBlbmRp''@;'; put 'put ''bmdfYnVmX3NpemUtNSYmKG5uPW90LnBlbmRpbmdfYnVmX3NpemUtNSk7Oyl7aWYob3QubG9va2FoZWFkPD0xKXtpZihBdChvdCksMD09PW90Lmxvb2thaGVhZCYmSXQ9PT1qKXJldHVybiAxO2lmKDA9PT1vdC5sb29rYWhlYWQpYnJlYWt9b3Quc3Ryc3RhcnQrPW90Lmxvb2thaGVhZCxvdC5s''@;'; put 'put ''b29rYWhlYWQ9MDt2YXIgRHQ9b3QuYmxvY2tfc3RhcnQrbm47aWYoKDA9PT1vdC5zdHJzdGFydHx8b3Quc3Ryc3RhcnQ+PUR0KSYmKG90Lmxvb2thaGVhZD1vdC5zdHJzdGFydC1EdCxvdC5zdHJzdGFydD1EdCwkZShvdCwhMSksMD09PW90LnN0cm0uYXZhaWxfb3V0KXx8b3Quc3Ryc3RhcnQt''@;'; put 'put ''b3QuYmxvY2tfc3RhcnQ+PW90Lndfc2l6ZS1QZSYmKCRlKG90LCExKSwwPT09b3Quc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBvdC5pbnNlcnQ9MCw0PT09SXQ/KCRlKG90LCEwKSwwPT09b3Quc3RybS5hdmFpbF9vdXQ/Mzo0KToob3Quc3Ryc3RhcnQ+b3QuYmxvY2tfc3RhcnQm''@;'; put 'put ''JiRlKG90LCExKSwxKX0pLG5ldyBvbig0LDQsOCw0LG1uKSxuZXcgb24oNCw1LDE2LDgsbW4pLG5ldyBvbig0LDYsMzIsMzIsbW4pLG5ldyBvbig0LDQsMTYsMTYsTnQpLG5ldyBvbig4LDE2LDMyLDMyLE50KSxuZXcgb24oOCwxNiwxMjgsMTI4LE50KSxuZXcgb24oOCwzMiwxMjgsMjU2LE50''@;'; put 'put ''KSxuZXcgb24oMzIsMTI4LDI1OCwxMDI0LE50KSxuZXcgb24oMzIsMjU4LDI1OCw0MDk2LE50KV0sSy5kZWZsYXRlSW5pdD1mdW5jdGlvbiBfdChvdCxJdCl7cmV0dXJuIGVuKG90LEl0LEYsMTUsOCwwKX0sSy5kZWZsYXRlSW5pdDI9ZW4sSy5kZWZsYXRlUmVzZXQ9aG4sSy5kZWZsYXRlUmVz''@;'; put 'put ''ZXRLZWVwPXBuLEsuZGVmbGF0ZVNldEhlYWRlcj1mdW5jdGlvbiBDdChvdCxJdCl7cmV0dXJuIG90JiZvdC5zdGF0ZSYmMj09PW90LnN0YXRlLndyYXA/KG90LnN0YXRlLmd6aGVhZD1JdCxxKTpuZX0sSy5kZWZsYXRlPWZ1bmN0aW9uIFZ0KG90LEl0KXt2YXIgbm4sRHQsdnQsR3Q7aWYoIW90''@;'; put 'put ''fHwhb3Quc3RhdGV8fEl0PjV8fEl0PDApcmV0dXJuIG90P3FlKG90LG5lKTpuZTtpZihEdD1vdC5zdGF0ZSwhb3Qub3V0cHV0fHwhb3QuaW5wdXQmJjAhPT1vdC5hdmFpbF9pbnx8NjY2PT09RHQuc3RhdHVzJiY0IT09SXQpcmV0dXJuIHFlKG90LDA9PT1vdC5hdmFpbF9vdXQ/LTU6bmUpO2lm''@;'; put 'put ''KER0LnN0cm09b3Qsbm49RHQubGFzdF9mbHVzaCxEdC5sYXN0X2ZsdXNoPUl0LER0LnN0YXR1cz09PU5lKWlmKDI9PT1EdC53cmFwKW90LmFkbGVyPTAsYXQoRHQsMzEpLGF0KER0LDEzOSksYXQoRHQsOCksRHQuZ3poZWFkPyhhdChEdCwoRHQuZ3poZWFkLnRleHQ/MTowKSsoRHQuZ3poZWFk''@;'; put 'put ''LmhjcmM/MjowKSsoRHQuZ3poZWFkLmV4dHJhPzQ6MCkrKER0Lmd6aGVhZC5uYW1lPzg6MCkrKER0Lmd6aGVhZC5jb21tZW50PzE2OjApKSxhdChEdCwyNTUmRHQuZ3poZWFkLnRpbWUpLGF0KER0LER0Lmd6aGVhZC50aW1lPj44JjI1NSksYXQoRHQsRHQuZ3poZWFkLnRpbWU+PjE2JjI1NSks''@;'; put 'put ''YXQoRHQsRHQuZ3poZWFkLnRpbWU+PjI0JjI1NSksYXQoRHQsOT09PUR0LmxldmVsPzI6RHQuc3RyYXRlZ3k+PTJ8fER0LmxldmVsPDI/NDowKSxhdChEdCwyNTUmRHQuZ3poZWFkLm9zKSxEdC5nemhlYWQuZXh0cmEmJkR0Lmd6aGVhZC5leHRyYS5sZW5ndGgmJihhdChEdCwyNTUmRHQuZ3po''@;'; put 'put ''ZWFkLmV4dHJhLmxlbmd0aCksYXQoRHQsRHQuZ3poZWFkLmV4dHJhLmxlbmd0aD4+OCYyNTUpKSxEdC5nemhlYWQuaGNyYyYmKG90LmFkbGVyPUUob3QuYWRsZXIsRHQucGVuZGluZ19idWYsRHQucGVuZGluZywwKSksRHQuZ3ppbmRleD0wLER0LnN0YXR1cz02OSk6KGF0KER0LDApLGF0KER0''@;'; put 'put ''LDApLGF0KER0LDApLGF0KER0LDApLGF0KER0LDApLGF0KER0LDk9PT1EdC5sZXZlbD8yOkR0LnN0cmF0ZWd5Pj0yfHxEdC5sZXZlbDwyPzQ6MCksYXQoRHQsMyksRHQuc3RhdHVzPW10KTtlbHNle3ZhciBMbj1GKyhEdC53X2JpdHMtODw8NCk8PDg7TG58PShEdC5zdHJhdGVneT49Mnx8RHQu''@;'; put 'put ''bGV2ZWw8Mj8wOkR0LmxldmVsPDY/MTo2PT09RHQubGV2ZWw/MjozKTw8NiwwIT09RHQuc3Ryc3RhcnQmJihMbnw9MzIpLExuKz0zMS1MbiUzMSxEdC5zdGF0dXM9bXQsY3QoRHQsTG4pLDAhPT1EdC5zdHJzdGFydCYmKGN0KER0LG90LmFkbGVyPj4+MTYpLGN0KER0LDY1NTM1Jm90LmFkbGVy''@;'; put 'put ''KSksb3QuYWRsZXI9MX1pZig2OT09PUR0LnN0YXR1cylpZihEdC5nemhlYWQuZXh0cmEpe2Zvcih2dD1EdC5wZW5kaW5nO0R0Lmd6aW5kZXg8KDY1NTM1JkR0Lmd6aGVhZC5leHRyYS5sZW5ndGgpJiYoRHQucGVuZGluZyE9PUR0LnBlbmRpbmdfYnVmX3NpemV8fChEdC5nemhlYWQuaGNyYyYm''@;'; put 'put ''RHQucGVuZGluZz52dCYmKG90LmFkbGVyPUUob3QuYWRsZXIsRHQucGVuZGluZ19idWYsRHQucGVuZGluZy12dCx2dCkpLERlKG90KSx2dD1EdC5wZW5kaW5nLER0LnBlbmRpbmchPT1EdC5wZW5kaW5nX2J1Zl9zaXplKSk7KWF0KER0LDI1NSZEdC5nemhlYWQuZXh0cmFbRHQuZ3ppbmRleF0p''@;'; put 'put ''LER0Lmd6aW5kZXgrKztEdC5nemhlYWQuaGNyYyYmRHQucGVuZGluZz52dCYmKG90LmFkbGVyPUUob3QuYWRsZXIsRHQucGVuZGluZ19idWYsRHQucGVuZGluZy12dCx2dCkpLER0Lmd6aW5kZXg9PT1EdC5nemhlYWQuZXh0cmEubGVuZ3RoJiYoRHQuZ3ppbmRleD0wLER0LnN0YXR1cz03Myl9''@;'; put 'put ''ZWxzZSBEdC5zdGF0dXM9NzM7aWYoNzM9PT1EdC5zdGF0dXMpaWYoRHQuZ3poZWFkLm5hbWUpe3Z0PUR0LnBlbmRpbmc7ZG97aWYoRHQucGVuZGluZz09PUR0LnBlbmRpbmdfYnVmX3NpemUmJihEdC5nemhlYWQuaGNyYyYmRHQucGVuZGluZz52dCYmKG90LmFkbGVyPUUob3QuYWRsZXIsRHQu''@;'; put 'put ''cGVuZGluZ19idWYsRHQucGVuZGluZy12dCx2dCkpLERlKG90KSx2dD1EdC5wZW5kaW5nLER0LnBlbmRpbmc9PT1EdC5wZW5kaW5nX2J1Zl9zaXplKSl7R3Q9MTticmVha31HdD1EdC5nemluZGV4PER0Lmd6aGVhZC5uYW1lLmxlbmd0aD8yNTUmRHQuZ3poZWFkLm5hbWUuY2hhckNvZGVBdChE''@;'; put 'put ''dC5nemluZGV4KyspOjAsYXQoRHQsR3QpfXdoaWxlKDAhPT1HdCk7RHQuZ3poZWFkLmhjcmMmJkR0LnBlbmRpbmc+dnQmJihvdC5hZGxlcj1FKG90LmFkbGVyLER0LnBlbmRpbmdfYnVmLER0LnBlbmRpbmctdnQsdnQpKSwwPT09R3QmJihEdC5nemluZGV4PTAsRHQuc3RhdHVzPTkxKX1lbHNl''@;'; put 'put ''IER0LnN0YXR1cz05MTtpZig5MT09PUR0LnN0YXR1cylpZihEdC5nemhlYWQuY29tbWVudCl7dnQ9RHQucGVuZGluZztkb3tpZihEdC5wZW5kaW5nPT09RHQucGVuZGluZ19idWZfc2l6ZSYmKER0Lmd6aGVhZC5oY3JjJiZEdC5wZW5kaW5nPnZ0JiYob3QuYWRsZXI9RShvdC5hZGxlcixEdC5w''@;'; put 'put ''ZW5kaW5nX2J1ZixEdC5wZW5kaW5nLXZ0LHZ0KSksRGUob3QpLHZ0PUR0LnBlbmRpbmcsRHQucGVuZGluZz09PUR0LnBlbmRpbmdfYnVmX3NpemUpKXtHdD0xO2JyZWFrfUd0PUR0Lmd6aW5kZXg8RHQuZ3poZWFkLmNvbW1lbnQubGVuZ3RoPzI1NSZEdC5nemhlYWQuY29tbWVudC5jaGFyQ29k''@;'; put 'put ''ZUF0KER0Lmd6aW5kZXgrKyk6MCxhdChEdCxHdCl9d2hpbGUoMCE9PUd0KTtEdC5nemhlYWQuaGNyYyYmRHQucGVuZGluZz52dCYmKG90LmFkbGVyPUUob3QuYWRsZXIsRHQucGVuZGluZ19idWYsRHQucGVuZGluZy12dCx2dCkpLDA9PT1HdCYmKER0LnN0YXR1cz0xMDMpfWVsc2UgRHQuc3Rh''@;'; put 'put ''dHVzPTEwMztpZigxMDM9PT1EdC5zdGF0dXMmJihEdC5nemhlYWQuaGNyYz8oRHQucGVuZGluZysyPkR0LnBlbmRpbmdfYnVmX3NpemUmJkRlKG90KSxEdC5wZW5kaW5nKzI8PUR0LnBlbmRpbmdfYnVmX3NpemUmJihhdChEdCwyNTUmb3QuYWRsZXIpLGF0KER0LG90LmFkbGVyPj44JjI1NSks''@;'; put 'put ''b3QuYWRsZXI9MCxEdC5zdGF0dXM9bXQpKTpEdC5zdGF0dXM9bXQpLDAhPT1EdC5wZW5kaW5nKXtpZihEZShvdCksMD09PW90LmF2YWlsX291dClyZXR1cm4gRHQubGFzdF9mbHVzaD0tMSxxfWVsc2UgaWYoMD09PW90LmF2YWlsX2luJiZodChJdCk8PWh0KG5uKSYmNCE9PUl0KXJldHVybiBx''@;'; put 'put ''ZShvdCwtNSk7aWYoNjY2PT09RHQuc3RhdHVzJiYwIT09b3QuYXZhaWxfaW4pcmV0dXJuIHFlKG90LC01KTtpZigwIT09b3QuYXZhaWxfaW58fDAhPT1EdC5sb29rYWhlYWR8fEl0IT09aiYmNjY2IT09RHQuc3RhdHVzKXt2YXIgTW49Mj09PUR0LnN0cmF0ZWd5P2Z1bmN0aW9uIEduKG90LEl0''@;'; put 'put ''KXtmb3IodmFyIG5uOzspe2lmKDA9PT1vdC5sb29rYWhlYWQmJihBdChvdCksMD09PW90Lmxvb2thaGVhZCkpe2lmKEl0PT09ailyZXR1cm4gMTticmVha31pZihvdC5tYXRjaF9sZW5ndGg9MCxubj1JLl90cl90YWxseShvdCwwLG90LndpbmRvd1tvdC5zdHJzdGFydF0pLG90Lmxvb2thaGVh''@;'; put 'put ''ZC0tLG90LnN0cnN0YXJ0Kyssbm4mJigkZShvdCwhMSksMD09PW90LnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gMX1yZXR1cm4gb3QuaW5zZXJ0PTAsND09PUl0PygkZShvdCwhMCksMD09PW90LnN0cm0uYXZhaWxfb3V0PzM6NCk6b3QubGFzdF9saXQmJigkZShvdCwhMSksMD09PW90LnN0cm0u''@;'; put 'put ''YXZhaWxfb3V0KT8xOjJ9KER0LEl0KTozPT09RHQuc3RyYXRlZ3k/ZnVuY3Rpb24gYm4ob3QsSXQpe2Zvcih2YXIgbm4sRHQsdnQsR3QsTG49b3Qud2luZG93Ozspe2lmKG90Lmxvb2thaGVhZDw9VGUpe2lmKEF0KG90KSxvdC5sb29rYWhlYWQ8PVRlJiZJdD09PWopcmV0dXJuIDE7aWYoMD09''@;'; put 'put ''PW90Lmxvb2thaGVhZClicmVha31pZihvdC5tYXRjaF9sZW5ndGg9MCxvdC5sb29rYWhlYWQ+PWtlJiZvdC5zdHJzdGFydD4wJiYoRHQ9TG5bdnQ9b3Quc3Ryc3RhcnQtMV0pPT09TG5bKyt2dF0mJkR0PT09TG5bKyt2dF0mJkR0PT09TG5bKyt2dF0pe0d0PW90LnN0cnN0YXJ0K1RlO2Rve313''@;'; put 'put ''aGlsZShEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZEdD09PUxuWysrdnRdJiZ2dDxHdCk7b3QubWF0Y2hfbGVuZ3RoPVRlLShHdC12dCksb3QubWF0''@;'; put 'put ''Y2hfbGVuZ3RoPm90Lmxvb2thaGVhZCYmKG90Lm1hdGNoX2xlbmd0aD1vdC5sb29rYWhlYWQpfWlmKG90Lm1hdGNoX2xlbmd0aD49a2U/KG5uPUkuX3RyX3RhbGx5KG90LDEsb3QubWF0Y2hfbGVuZ3RoLWtlKSxvdC5sb29rYWhlYWQtPW90Lm1hdGNoX2xlbmd0aCxvdC5zdHJzdGFydCs9b3Qu''@;'; put 'put ''bWF0Y2hfbGVuZ3RoLG90Lm1hdGNoX2xlbmd0aD0wKToobm49SS5fdHJfdGFsbHkob3QsMCxvdC53aW5kb3dbb3Quc3Ryc3RhcnRdKSxvdC5sb29rYWhlYWQtLSxvdC5zdHJzdGFydCsrKSxubiYmKCRlKG90LCExKSwwPT09b3Quc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBvdC5p''@;'; put 'put ''bnNlcnQ9MCw0PT09SXQ/KCRlKG90LCEwKSwwPT09b3Quc3RybS5hdmFpbF9vdXQ/Mzo0KTpvdC5sYXN0X2xpdCYmKCRlKG90LCExKSwwPT09b3Quc3RybS5hdmFpbF9vdXQpPzE6Mn0oRHQsSXQpOiRuW0R0LmxldmVsXS5mdW5jKER0LEl0KTtpZigoMz09PU1ufHw0PT09TW4pJiYoRHQuc3Rh''@;'; put 'put ''dHVzPTY2NiksMT09PU1ufHwzPT09TW4pcmV0dXJuIDA9PT1vdC5hdmFpbF9vdXQmJihEdC5sYXN0X2ZsdXNoPS0xKSxxO2lmKDI9PT1NbiYmKDE9PT1JdD9JLl90cl9hbGlnbihEdCk6NSE9PUl0JiYoSS5fdHJfc3RvcmVkX2Jsb2NrKER0LDAsMCwhMSksMz09PUl0JiYoRWUoRHQuaGVhZCks''@;'; put 'put ''MD09PUR0Lmxvb2thaGVhZCYmKER0LnN0cnN0YXJ0PTAsRHQuYmxvY2tfc3RhcnQ9MCxEdC5pbnNlcnQ9MCkpKSxEZShvdCksMD09PW90LmF2YWlsX291dCkpcmV0dXJuIER0Lmxhc3RfZmx1c2g9LTEscX1yZXR1cm4gNCE9PUl0P3E6RHQud3JhcDw9MD8xOigyPT09RHQud3JhcD8oYXQoRHQs''@;'; put 'put ''MjU1Jm90LmFkbGVyKSxhdChEdCxvdC5hZGxlcj4+OCYyNTUpLGF0KER0LG90LmFkbGVyPj4xNiYyNTUpLGF0KER0LG90LmFkbGVyPj4yNCYyNTUpLGF0KER0LDI1NSZvdC50b3RhbF9pbiksYXQoRHQsb3QudG90YWxfaW4+PjgmMjU1KSxhdChEdCxvdC50b3RhbF9pbj4+MTYmMjU1KSxhdChE''@;'; put 'put ''dCxvdC50b3RhbF9pbj4+MjQmMjU1KSk6KGN0KER0LG90LmFkbGVyPj4+MTYpLGN0KER0LDY1NTM1Jm90LmFkbGVyKSksRGUob3QpLER0LndyYXA+MCYmKER0LndyYXA9LUR0LndyYXApLDAhPT1EdC5wZW5kaW5nP3E6MSl9LEsuZGVmbGF0ZUVuZD1mdW5jdGlvbiBfbihvdCl7dmFyIEl0O3Jl''@;'; put 'put ''dHVybiBvdCYmb3Quc3RhdGU/KEl0PW90LnN0YXRlLnN0YXR1cykhPT1OZSYmNjkhPT1JdCYmNzMhPT1JdCYmOTEhPT1JdCYmMTAzIT09SXQmJkl0IT09bXQmJjY2NiE9PUl0P3FlKG90LG5lKToob3Quc3RhdGU9bnVsbCxJdD09PW10P3FlKG90LC0zKTpxKTpuZX0sSy5kZWZsYXRlSW5mbz0i''@;'; put 'put ''cGFrbyBkZWZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9LHsiLi4vdXRpbHMvY29tbW9uIjoyNywiLi9hZGxlcjMyIjoyOSwiLi9jcmMzMiI6MzEsIi4vbWVzc2FnZXMiOjM3LCIuL3RyZWVzIjozOH1dLDMzOltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO0wuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbiBKKCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPSIiLHRoaXMuY29tbWVudD0iIix0aGlzLmhjcmM9MCx0aGlzLmRvbmU9ITF9fSx7fV0sMzQ6W2Z1bmN0aW9uKEIs''@;'; put 'put ''TCxLKXsidXNlIHN0cmljdCI7TC5leHBvcnRzPWZ1bmN0aW9uKEUseil7dmFyIGosVixHLFcsVSxxLHRlLG5lLGllLGxlLGRlLHVlLGNlLFksYix4LE4sRixnLEMsTSx5LHAsUyxRO1M9RS5pbnB1dCxHPShWPUUubmV4dF9pbikrKEUuYXZhaWxfaW4tNSksUT1FLm91dHB1dCxVPShXPUUubmV4''@;'; put 'put ''dF9vdXQpLSh6LUUuYXZhaWxfb3V0KSxxPVcrKEUuYXZhaWxfb3V0LTI1NyksdGU9KGo9RS5zdGF0ZSkuZG1heCxuZT1qLndzaXplLGllPWoud2hhdmUsbGU9ai53bmV4dCxkZT1qLndpbmRvdyx1ZT1qLmhvbGQsY2U9ai5iaXRzLFk9ai5sZW5jb2RlLGI9ai5kaXN0Y29kZSx4PSgxPDxqLmxl''@;'; put 'put ''bmJpdHMpLTEsTj0oMTw8ai5kaXN0Yml0cyktMTtlOmRve2NlPDE1JiYodWUrPVNbVisrXTw8Y2UsdWUrPVNbVisrXTw8KGNlKz04KSxjZSs9OCksRj1ZW3VlJnhdO3Q6Zm9yKDs7KXtpZih1ZT4+Pj1nPUY+Pj4yNCxjZS09ZywwPT0oZz1GPj4+MTYmMjU1KSlRW1crK109NjU1MzUmRjtlbHNl''@;'; put 'put ''e2lmKCEoMTYmZykpe2lmKDY0Jmcpe2lmKDMyJmcpe2oubW9kZT0xMjticmVhayBlfUUubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGoubW9kZT0zMDticmVhayBlfUY9WVsoNjU1MzUmRikrKHVlJigxPDxnKS0xKV07Y29udGludWUgdH1mb3IoQz02NTUzNSZGLChnJj0xNSkm''@;'; put 'put ''JihjZTxnJiYodWUrPVNbVisrXTw8Y2UsY2UrPTgpLEMrPXVlJigxPDxnKS0xLHVlPj4+PWcsY2UtPWcpLGNlPDE1JiYodWUrPVNbVisrXTw8Y2UsdWUrPVNbVisrXTw8KGNlKz04KSxjZSs9OCksRj1iW3VlJk5dOzspe2lmKHVlPj4+PWc9Rj4+PjI0LGNlLT1nLDE2JihnPUY+Pj4xNiYyNTUp''@;'; put 'put ''KXtpZihNPTY1NTM1JkYsY2U8KGcmPTE1KSYmKHVlKz1TW1YrK108PGNlLChjZSs9OCk8ZyYmKHVlKz1TW1YrK108PGNlLGNlKz04KSksKE0rPXVlJigxPDxnKS0xKT50ZSl7RS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixqLm1vZGU9MzA7YnJlYWsgZX1pZih1ZT4+Pj1n''@;'; put 'put ''LGNlLT1nLE0+KGc9Vy1VKSl7aWYoKGc9TS1nKT5pZSYmai5zYW5lKXtFLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLGoubW9kZT0zMDticmVhayBlfWlmKHk9MCxwPWRlLDA9PT1sZSl7aWYoeSs9bmUtZyxnPEMpe0MtPWc7ZG97UVtXKytdPWRlW3krK119d2hpbGUoLS1n''@;'; put 'put ''KTt5PVctTSxwPVF9fWVsc2UgaWYobGU8Zyl7aWYoeSs9bmUrbGUtZywoZy09bGUpPEMpe0MtPWc7ZG97UVtXKytdPWRlW3krK119d2hpbGUoLS1nKTtpZih5PTAsbGU8Qyl7Qy09Zz1sZTtkb3tRW1crK109ZGVbeSsrXX13aGlsZSgtLWcpO3k9Vy1NLHA9UX19fWVsc2UgaWYoeSs9bGUtZyxn''@;'; put 'put ''PEMpe0MtPWc7ZG97UVtXKytdPWRlW3krK119d2hpbGUoLS1nKTt5PVctTSxwPVF9Zm9yKDtDPjI7KVFbVysrXT1wW3krK10sUVtXKytdPXBbeSsrXSxRW1crK109cFt5KytdLEMtPTM7QyYmKFFbVysrXT1wW3krK10sQz4xJiYoUVtXKytdPXBbeSsrXSkpfWVsc2V7eT1XLU07ZG97UVtXKytd''@;'; put 'put ''PVFbeSsrXSxRW1crK109UVt5KytdLFFbVysrXT1RW3krK10sQy09M313aGlsZShDPjIpO0MmJihRW1crK109UVt5KytdLEM+MSYmKFFbVysrXT1RW3krK10pKX1icmVha31pZig2NCZnKXtFLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixqLm1vZGU9MzA7YnJlYWsgZX1GPWJbKDY1NTM1''@;'; put 'put ''JkYpKyh1ZSYoMTw8ZyktMSldfX1icmVha319d2hpbGUoVjxHJiZXPHEpO3VlJj0oMTw8KGNlLT0oQz1jZT4+Myk8PDMpKS0xLEUubmV4dF9pbj1WLT1DLEUubmV4dF9vdXQ9VyxFLmF2YWlsX2luPVY8Rz9HLVYrNTo1LShWLUcpLEUuYXZhaWxfb3V0PVc8cT9xLVcrMjU3OjI1Ny0oVy1xKSxq''@;'; put 'put ''LmhvbGQ9dWUsai5iaXRzPWNlfX0se31dLDM1OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO3ZhciBKPUIoIi4uL3V0aWxzL2NvbW1vbiIpLEk9QigiLi9hZGxlcjMyIiksUj1CKCIuL2NyYzMyIiksRT1CKCIuL2luZmZhc3QiKSx6PUIoIi4vaW5mdHJlZXMiKSx0ZT0wLGxlPS0yLGI9''@;'; put 'put ''MSxFZT04NTIsRGU9NTkyO2Z1bmN0aW9uIGN0KEN0KXtyZXR1cm4oQ3Q+Pj4yNCYyNTUpKyhDdD4+PjgmNjUyODApKygoNjUyODAmQ3QpPDw4KSsoKDI1NSZDdCk8PDI0KX1mdW5jdGlvbiBPdCgpe3RoaXMubW9kZT0wLHRoaXMubGFzdD0hMSx0aGlzLndyYXA9MCx0aGlzLmhhdmVkaWN0PSEx''@;'; put 'put ''LHRoaXMuZmxhZ3M9MCx0aGlzLmRtYXg9MCx0aGlzLmNoZWNrPTAsdGhpcy50b3RhbD0wLHRoaXMuaGVhZD1udWxsLHRoaXMud2JpdHM9MCx0aGlzLndzaXplPTAsdGhpcy53aGF2ZT0wLHRoaXMud25leHQ9MCx0aGlzLndpbmRvdz1udWxsLHRoaXMuaG9sZD0wLHRoaXMuYml0cz0wLHRoaXMu''@;'; put 'put ''bGVuZ3RoPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmV4dHJhPTAsdGhpcy5sZW5jb2RlPW51bGwsdGhpcy5kaXN0Y29kZT1udWxsLHRoaXMubGVuYml0cz0wLHRoaXMuZGlzdGJpdHM9MCx0aGlzLm5jb2RlPTAsdGhpcy5ubGVuPTAsdGhpcy5uZGlzdD0wLHRoaXMuaGF2ZT0wLHRoaXMubmV4dD1u''@;'; put 'put ''dWxsLHRoaXMubGVucz1uZXcgSi5CdWYxNigzMjApLHRoaXMud29yaz1uZXcgSi5CdWYxNigyODgpLHRoaXMubGVuZHluPW51bGwsdGhpcy5kaXN0ZHluPW51bGwsdGhpcy5zYW5lPTAsdGhpcy5iYWNrPTAsdGhpcy53YXM9MH1mdW5jdGlvbiBQdChDdCl7dmFyIGVuO3JldHVybiBDdCYmQ3Qu''@;'; put 'put ''c3RhdGU/KEN0LnRvdGFsX2luPUN0LnRvdGFsX291dD0oZW49Q3Quc3RhdGUpLnRvdGFsPTAsQ3QubXNnPSIiLGVuLndyYXAmJihDdC5hZGxlcj0xJmVuLndyYXApLGVuLm1vZGU9Yixlbi5sYXN0PTAsZW4uaGF2ZWRpY3Q9MCxlbi5kbWF4PTMyNzY4LGVuLmhlYWQ9bnVsbCxlbi5ob2xkPTAs''@;'; put 'put ''ZW4uYml0cz0wLGVuLmxlbmNvZGU9ZW4ubGVuZHluPW5ldyBKLkJ1ZjMyKEVlKSxlbi5kaXN0Y29kZT1lbi5kaXN0ZHluPW5ldyBKLkJ1ZjMyKERlKSxlbi5zYW5lPTEsZW4uYmFjaz0tMSx0ZSk6bGV9ZnVuY3Rpb24gQXQoQ3Qpe3ZhciBlbjtyZXR1cm4gQ3QmJkN0LnN0YXRlPygoZW49Q3Qu''@;'; put 'put ''c3RhdGUpLndzaXplPTAsZW4ud2hhdmU9MCxlbi53bmV4dD0wLFB0KEN0KSk6bGV9ZnVuY3Rpb24gSnQoQ3QsZW4pe3ZhciBfdCxWdDtyZXR1cm4hQ3R8fCFDdC5zdGF0ZXx8KFZ0PUN0LnN0YXRlLGVuPDA/KF90PTAsZW49LWVuKTooX3Q9MSsoZW4+PjQpLGVuPDQ4JiYoZW4mPTE1KSksZW4m''@;'; put 'put ''Jihlbjw4fHxlbj4xNSkpP2xlOihudWxsIT09VnQud2luZG93JiZWdC53Yml0cyE9PWVuJiYoVnQud2luZG93PW51bGwpLFZ0LndyYXA9X3QsVnQud2JpdHM9ZW4sQXQoQ3QpKX1mdW5jdGlvbiBtbihDdCxlbil7dmFyIF90LFZ0O3JldHVybiBDdD8oVnQ9bmV3IE90LEN0LnN0YXRlPVZ0LFZ0''@;'; put 'put ''LndpbmRvdz1udWxsLChfdD1KdChDdCxlbikpIT09dGUmJihDdC5zdGF0ZT1udWxsKSxfdCk6bGV9dmFyIEduLG9uLGJuPSEwO2Z1bmN0aW9uICRuKEN0KXtpZihibil7dmFyIGVuO2ZvcihHbj1uZXcgSi5CdWYzMig1MTIpLG9uPW5ldyBKLkJ1ZjMyKDMyKSxlbj0wO2VuPDE0NDspQ3QubGVu''@;'; put 'put ''c1tlbisrXT04O2Zvcig7ZW48MjU2OylDdC5sZW5zW2VuKytdPTk7Zm9yKDtlbjwyODA7KUN0LmxlbnNbZW4rK109Nztmb3IoO2VuPDI4ODspQ3QubGVuc1tlbisrXT04O2Zvcih6KDEsQ3QubGVucywwLDI4OCxHbiwwLEN0Lndvcmsse2JpdHM6OX0pLGVuPTA7ZW48MzI7KUN0LmxlbnNbZW4r''@;'; put 'put ''K109NTt6KDIsQ3QubGVucywwLDMyLG9uLDAsQ3Qud29yayx7Yml0czo1fSksYm49ITF9Q3QubGVuY29kZT1HbixDdC5sZW5iaXRzPTksQ3QuZGlzdGNvZGU9b24sQ3QuZGlzdGJpdHM9NX1LLmluZmxhdGVSZXNldD1BdCxLLmluZmxhdGVSZXNldDI9SnQsSy5pbmZsYXRlUmVzZXRLZWVwPVB0''@;'; put 'put ''LEsuaW5mbGF0ZUluaXQ9ZnVuY3Rpb24gTnQoQ3Qpe3JldHVybiBtbihDdCwxNSl9LEsuaW5mbGF0ZUluaXQyPW1uLEsuaW5mbGF0ZT1mdW5jdGlvbiBwdChDdCxlbil7dmFyIF90LFZ0LF9uLG90LEl0LG5uLER0LHZ0LEd0LExuLHp0LE1uLFRuLHNuLEZuLHF0LEhuLGlpLGNuLGpuLFhyLHZp''@;'; put 'put ''LFlpLEpyLEJuPTAsRXI9bmV3IEouQnVmOCg0KSxhbz1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07aWYoIUN0fHwhQ3Quc3RhdGV8fCFDdC5vdXRwdXR8fCFDdC5pbnB1dCYmMCE9PUN0LmF2YWlsX2luKXJldHVybiBsZTsxMj09PShfdD1DdC5zdGF0''@;'; put 'put ''ZSkubW9kZSYmKF90Lm1vZGU9MTMpLEl0PUN0Lm5leHRfb3V0LF9uPUN0Lm91dHB1dCxvdD1DdC5uZXh0X2luLFZ0PUN0LmlucHV0LHZ0PV90LmhvbGQsR3Q9X3QuYml0cyxMbj1ubj1DdC5hdmFpbF9pbix6dD1EdD1DdC5hdmFpbF9vdXQsdmk9dGU7ZTpmb3IoOzspc3dpdGNoKF90Lm1vZGUp''@;'; put 'put ''e2Nhc2UgYjppZigwPT09X3Qud3JhcCl7X3QubW9kZT0xMzticmVha31mb3IoO0d0PDE2Oyl7aWYoMD09PW5uKWJyZWFrIGU7bm4tLSx2dCs9VnRbb3QrK108PEd0LEd0Kz04fWlmKDImX3Qud3JhcCYmMzU2MTU9PT12dCl7X3QuY2hlY2s9MCxFclswXT0yNTUmdnQsRXJbMV09dnQ+Pj44JjI1''@;'; put 'put ''NSxfdC5jaGVjaz1SKF90LmNoZWNrLEVyLDIsMCksdnQ9MCxHdD0wLF90Lm1vZGU9MjticmVha31pZihfdC5mbGFncz0wLF90LmhlYWQmJihfdC5oZWFkLmRvbmU9ITEpLCEoMSZfdC53cmFwKXx8KCgoMjU1JnZ0KTw8OCkrKHZ0Pj44KSklMzEpe0N0Lm1zZz0iaW5jb3JyZWN0IGhlYWRlciBj''@;'; put 'put ''aGVjayIsX3QubW9kZT0zMDticmVha31pZig4IT0oMTUmdnQpKXtDdC5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixfdC5tb2RlPTMwO2JyZWFrfWlmKEd0LT00LFhyPTgrKDE1Jih2dD4+Pj00KSksMD09PV90LndiaXRzKV90LndiaXRzPVhyO2Vsc2UgaWYoWHI+X3Qud2JpdHMp''@;'; put 'put ''e0N0Lm1zZz0iaW52YWxpZCB3aW5kb3cgc2l6ZSIsX3QubW9kZT0zMDticmVha31fdC5kbWF4PTE8PFhyLEN0LmFkbGVyPV90LmNoZWNrPTEsX3QubW9kZT01MTImdnQ/MTA6MTIsdnQ9MCxHdD0wO2JyZWFrO2Nhc2UgMjpmb3IoO0d0PDE2Oyl7aWYoMD09PW5uKWJyZWFrIGU7bm4tLSx2dCs9''@;'; put 'put ''VnRbb3QrK108PEd0LEd0Kz04fWlmKF90LmZsYWdzPXZ0LDghPSgyNTUmX3QuZmxhZ3MpKXtDdC5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixfdC5tb2RlPTMwO2JyZWFrfWlmKDU3MzQ0Jl90LmZsYWdzKXtDdC5tc2c9InVua25vd24gaGVhZGVyIGZsYWdzIHNldCIsX3QubW9k''@;'; put 'put ''ZT0zMDticmVha31fdC5oZWFkJiYoX3QuaGVhZC50ZXh0PXZ0Pj44JjEpLDUxMiZfdC5mbGFncyYmKEVyWzBdPTI1NSZ2dCxFclsxXT12dD4+PjgmMjU1LF90LmNoZWNrPVIoX3QuY2hlY2ssRXIsMiwwKSksdnQ9MCxHdD0wLF90Lm1vZGU9MztjYXNlIDM6Zm9yKDtHdDwzMjspe2lmKDA9PT1u''@;'; put 'put ''bilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1fdC5oZWFkJiYoX3QuaGVhZC50aW1lPXZ0KSw1MTImX3QuZmxhZ3MmJihFclswXT0yNTUmdnQsRXJbMV09dnQ+Pj44JjI1NSxFclsyXT12dD4+PjE2JjI1NSxFclszXT12dD4+PjI0JjI1NSxfdC5jaGVjaz1SKF90LmNoZWNr''@;'; put 'put ''LEVyLDQsMCkpLHZ0PTAsR3Q9MCxfdC5tb2RlPTQ7Y2FzZSA0OmZvcig7R3Q8MTY7KXtpZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9X3QuaGVhZCYmKF90LmhlYWQueGZsYWdzPTI1NSZ2dCxfdC5oZWFkLm9zPXZ0Pj44KSw1MTImX3QuZmxhZ3MmJihFclsw''@;'; put 'put ''XT0yNTUmdnQsRXJbMV09dnQ+Pj44JjI1NSxfdC5jaGVjaz1SKF90LmNoZWNrLEVyLDIsMCkpLHZ0PTAsR3Q9MCxfdC5tb2RlPTU7Y2FzZSA1OmlmKDEwMjQmX3QuZmxhZ3Mpe2Zvcig7R3Q8MTY7KXtpZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9X3QubGVu''@;'; put 'put ''Z3RoPXZ0LF90LmhlYWQmJihfdC5oZWFkLmV4dHJhX2xlbj12dCksNTEyJl90LmZsYWdzJiYoRXJbMF09MjU1JnZ0LEVyWzFdPXZ0Pj4+OCYyNTUsX3QuY2hlY2s9UihfdC5jaGVjayxFciwyLDApKSx2dD0wLEd0PTB9ZWxzZSBfdC5oZWFkJiYoX3QuaGVhZC5leHRyYT1udWxsKTtfdC5tb2Rl''@;'; put 'put ''PTY7Y2FzZSA2OmlmKDEwMjQmX3QuZmxhZ3MmJigoTW49X3QubGVuZ3RoKT5ubiYmKE1uPW5uKSxNbiYmKF90LmhlYWQmJihYcj1fdC5oZWFkLmV4dHJhX2xlbi1fdC5sZW5ndGgsX3QuaGVhZC5leHRyYXx8KF90LmhlYWQuZXh0cmE9bmV3IEFycmF5KF90LmhlYWQuZXh0cmFfbGVuKSksSi5h''@;'; put 'put ''cnJheVNldChfdC5oZWFkLmV4dHJhLFZ0LG90LE1uLFhyKSksNTEyJl90LmZsYWdzJiYoX3QuY2hlY2s9UihfdC5jaGVjayxWdCxNbixvdCkpLG5uLT1NbixvdCs9TW4sX3QubGVuZ3RoLT1NbiksX3QubGVuZ3RoKSlicmVhayBlO190Lmxlbmd0aD0wLF90Lm1vZGU9NztjYXNlIDc6aWYoMjA0''@;'; put 'put ''OCZfdC5mbGFncyl7aWYoMD09PW5uKWJyZWFrIGU7TW49MDtkb3tYcj1WdFtvdCtNbisrXSxfdC5oZWFkJiZYciYmX3QubGVuZ3RoPDY1NTM2JiYoX3QuaGVhZC5uYW1lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFhyKSl9d2hpbGUoWHImJk1uPG5uKTtpZig1MTImX3QuZmxhZ3MmJihfdC5jaGVj''@;'; put 'put ''az1SKF90LmNoZWNrLFZ0LE1uLG90KSksbm4tPU1uLG90Kz1NbixYcilicmVhayBlfWVsc2UgX3QuaGVhZCYmKF90LmhlYWQubmFtZT1udWxsKTtfdC5sZW5ndGg9MCxfdC5tb2RlPTg7Y2FzZSA4OmlmKDQwOTYmX3QuZmxhZ3Mpe2lmKDA9PT1ubilicmVhayBlO01uPTA7ZG97WHI9VnRbb3Qr''@;'; put 'put ''TW4rK10sX3QuaGVhZCYmWHImJl90Lmxlbmd0aDw2NTUzNiYmKF90LmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShYcikpfXdoaWxlKFhyJiZNbjxubik7aWYoNTEyJl90LmZsYWdzJiYoX3QuY2hlY2s9UihfdC5jaGVjayxWdCxNbixvdCkpLG5uLT1NbixvdCs9TW4sWHIpYnJl''@;'; put 'put ''YWsgZX1lbHNlIF90LmhlYWQmJihfdC5oZWFkLmNvbW1lbnQ9bnVsbCk7X3QubW9kZT05O2Nhc2UgOTppZig1MTImX3QuZmxhZ3Mpe2Zvcig7R3Q8MTY7KXtpZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9aWYodnQhPT0oNjU1MzUmX3QuY2hlY2spKXtDdC5t''@;'; put 'put ''c2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLF90Lm1vZGU9MzA7YnJlYWt9dnQ9MCxHdD0wfV90LmhlYWQmJihfdC5oZWFkLmhjcmM9X3QuZmxhZ3M+PjkmMSxfdC5oZWFkLmRvbmU9ITApLEN0LmFkbGVyPV90LmNoZWNrPTAsX3QubW9kZT0xMjticmVhaztjYXNlIDEwOmZvcig7R3Q8MzI7KXtp''@;'; put 'put ''ZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9Q3QuYWRsZXI9X3QuY2hlY2s9Y3QodnQpLHZ0PTAsR3Q9MCxfdC5tb2RlPTExO2Nhc2UgMTE6aWYoMD09PV90LmhhdmVkaWN0KXJldHVybiBDdC5uZXh0X291dD1JdCxDdC5hdmFpbF9vdXQ9RHQsQ3QubmV4dF9p''@;'; put 'put ''bj1vdCxDdC5hdmFpbF9pbj1ubixfdC5ob2xkPXZ0LF90LmJpdHM9R3QsMjtDdC5hZGxlcj1fdC5jaGVjaz0xLF90Lm1vZGU9MTI7Y2FzZSAxMjppZig1PT09ZW58fDY9PT1lbilicmVhayBlO2Nhc2UgMTM6aWYoX3QubGFzdCl7dnQ+Pj49NyZHdCxHdC09NyZHdCxfdC5tb2RlPTI3O2JyZWFr''@;'; put 'put ''fWZvcig7R3Q8Mzspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1zd2l0Y2goX3QubGFzdD0xJnZ0LEd0LT0xLDMmKHZ0Pj4+PTEpKXtjYXNlIDA6X3QubW9kZT0xNDticmVhaztjYXNlIDE6aWYoJG4oX3QpLF90Lm1vZGU9MjAsNj09PWVuKXt2dD4+Pj0y''@;'; put 'put ''LEd0LT0yO2JyZWFrIGV9YnJlYWs7Y2FzZSAyOl90Lm1vZGU9MTc7YnJlYWs7Y2FzZSAzOkN0Lm1zZz0iaW52YWxpZCBibG9jayB0eXBlIixfdC5tb2RlPTMwfXZ0Pj4+PTIsR3QtPTI7YnJlYWs7Y2FzZSAxNDpmb3IodnQ+Pj49NyZHdCxHdC09NyZHdDtHdDwzMjspe2lmKDA9PT1ubilicmVh''@;'; put 'put ''ayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1pZigoNjU1MzUmdnQpIT0odnQ+Pj4xNl42NTUzNSkpe0N0Lm1zZz0iaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyIsX3QubW9kZT0zMDticmVha31pZihfdC5sZW5ndGg9NjU1MzUmdnQsdnQ9MCxHdD0wLF90Lm1vZGU9MTUsNj09''@;'; put 'put ''PWVuKWJyZWFrIGU7Y2FzZSAxNTpfdC5tb2RlPTE2O2Nhc2UgMTY6aWYoTW49X3QubGVuZ3RoKXtpZihNbj5ubiYmKE1uPW5uKSxNbj5EdCYmKE1uPUR0KSwwPT09TW4pYnJlYWsgZTtKLmFycmF5U2V0KF9uLFZ0LG90LE1uLEl0KSxubi09TW4sb3QrPU1uLER0LT1NbixJdCs9TW4sX3QubGVu''@;'; put 'put ''Z3RoLT1NbjticmVha31fdC5tb2RlPTEyO2JyZWFrO2Nhc2UgMTc6Zm9yKDtHdDwxNDspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1pZihfdC5ubGVuPTI1NysoMzEmdnQpLEd0LT01LF90Lm5kaXN0PTErKDMxJih2dD4+Pj01KSksR3QtPTUsX3QubmNv''@;'; put 'put ''ZGU9NCsoMTUmKHZ0Pj4+PTUpKSx2dD4+Pj00LEd0LT00LF90Lm5sZW4+Mjg2fHxfdC5uZGlzdD4zMCl7Q3QubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsX3QubW9kZT0zMDticmVha31fdC5oYXZlPTAsX3QubW9kZT0xODtjYXNlIDE4OmZvcig7X3QuaGF2ZTxf''@;'; put 'put ''dC5uY29kZTspe2Zvcig7R3Q8Mzspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1fdC5sZW5zW2FvW190LmhhdmUrK11dPTcmdnQsdnQ+Pj49MyxHdC09M31mb3IoO190LmhhdmU8MTk7KV90LmxlbnNbYW9bX3QuaGF2ZSsrXV09MDtpZihfdC5sZW5jb2Rl''@;'; put 'put ''PV90LmxlbmR5bixfdC5sZW5iaXRzPTcsdmk9eigwLF90LmxlbnMsMCwxOSxfdC5sZW5jb2RlLDAsX3Qud29yayxZaT17Yml0czpfdC5sZW5iaXRzfSksX3QubGVuYml0cz1ZaS5iaXRzLHZpKXtDdC5tc2c9ImludmFsaWQgY29kZSBsZW5ndGhzIHNldCIsX3QubW9kZT0zMDticmVha31fdC5o''@;'; put 'put ''YXZlPTAsX3QubW9kZT0xOTtjYXNlIDE5OmZvcig7X3QuaGF2ZTxfdC5ubGVuK190Lm5kaXN0Oyl7Zm9yKDtxdD0oQm49X3QubGVuY29kZVt2dCYoMTw8X3QubGVuYml0cyktMV0pPj4+MTYmMjU1LEhuPTY1NTM1JkJuLCEoKEZuPUJuPj4+MjQpPD1HdCk7KXtpZigwPT09bm4pYnJlYWsgZTtu''@;'; put 'put ''bi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9aWYoSG48MTYpdnQ+Pj49Rm4sR3QtPUZuLF90LmxlbnNbX3QuaGF2ZSsrXT1IbjtlbHNle2lmKDE2PT09SG4pe2ZvcihKcj1GbisyO0d0PEpyOyl7aWYoMD09PW5uKWJyZWFrIGU7bm4tLSx2dCs9VnRbb3QrK108PEd0LEd0Kz04fWlmKHZ0Pj4+''@;'; put 'put ''PUZuLEd0LT1GbiwwPT09X3QuaGF2ZSl7Q3QubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixfdC5tb2RlPTMwO2JyZWFrfVhyPV90LmxlbnNbX3QuaGF2ZS0xXSxNbj0zKygzJnZ0KSx2dD4+Pj0yLEd0LT0yfWVsc2UgaWYoMTc9PT1Ibil7Zm9yKEpyPUZuKzM7R3Q8SnI7KXtpZigw''@;'; put 'put ''PT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9R3QtPUZuLFhyPTAsTW49MysoNyYodnQ+Pj49Rm4pKSx2dD4+Pj0zLEd0LT0zfWVsc2V7Zm9yKEpyPUZuKzc7R3Q8SnI7KXtpZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0Kz1WdFtvdCsrXTw8R3QsR3QrPTh9R3QtPUZu''@;'; put 'put ''LFhyPTAsTW49MTErKDEyNyYodnQ+Pj49Rm4pKSx2dD4+Pj03LEd0LT03fWlmKF90LmhhdmUrTW4+X3QubmxlbitfdC5uZGlzdCl7Q3QubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixfdC5tb2RlPTMwO2JyZWFrfWZvcig7TW4tLTspX3QubGVuc1tfdC5oYXZlKytdPVhyfX1pZigz''@;'; put 'put ''MD09PV90Lm1vZGUpYnJlYWs7aWYoMD09PV90LmxlbnNbMjU2XSl7Q3QubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLF90Lm1vZGU9MzA7YnJlYWt9aWYoX3QubGVuYml0cz05LHZpPXooMSxfdC5sZW5zLDAsX3QubmxlbixfdC5sZW5jb2RlLDAsX3Qud29yayxZ''@;'; put 'put ''aT17Yml0czpfdC5sZW5iaXRzfSksX3QubGVuYml0cz1ZaS5iaXRzLHZpKXtDdC5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsX3QubW9kZT0zMDticmVha31pZihfdC5kaXN0Yml0cz02LF90LmRpc3Rjb2RlPV90LmRpc3RkeW4sdmk9eigyLF90LmxlbnMsX3QubmxlbixfdC5u''@;'; put 'put ''ZGlzdCxfdC5kaXN0Y29kZSwwLF90LndvcmssWWk9e2JpdHM6X3QuZGlzdGJpdHN9KSxfdC5kaXN0Yml0cz1ZaS5iaXRzLHZpKXtDdC5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsX3QubW9kZT0zMDticmVha31pZihfdC5tb2RlPTIwLDY9PT1lbilicmVhayBlO2Nhc2UgMjA6X3QubW9k''@;'; put 'put ''ZT0yMTtjYXNlIDIxOmlmKG5uPj02JiZEdD49MjU4KXtDdC5uZXh0X291dD1JdCxDdC5hdmFpbF9vdXQ9RHQsQ3QubmV4dF9pbj1vdCxDdC5hdmFpbF9pbj1ubixfdC5ob2xkPXZ0LF90LmJpdHM9R3QsRShDdCx6dCksSXQ9Q3QubmV4dF9vdXQsX249Q3Qub3V0cHV0LER0PUN0LmF2YWlsX291''@;'; put 'put ''dCxvdD1DdC5uZXh0X2luLFZ0PUN0LmlucHV0LG5uPUN0LmF2YWlsX2luLHZ0PV90LmhvbGQsR3Q9X3QuYml0cywxMj09PV90Lm1vZGUmJihfdC5iYWNrPS0xKTticmVha31mb3IoX3QuYmFjaz0wO3F0PShCbj1fdC5sZW5jb2RlW3Z0JigxPDxfdC5sZW5iaXRzKS0xXSk+Pj4xNiYyNTUsSG49''@;'; put 'put ''NjU1MzUmQm4sISgoRm49Qm4+Pj4yNCk8PUd0KTspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1pZihxdCYmISgyNDAmcXQpKXtmb3IoaWk9Rm4sY249cXQsam49SG47cXQ9KEJuPV90LmxlbmNvZGVbam4rKCh2dCYoMTw8aWkrY24pLTEpPj5paSldKT4+''@;'; put 'put ''PjE2JjI1NSxIbj02NTUzNSZCbiwhKGlpKyhGbj1Cbj4+PjI0KTw9R3QpOyl7aWYoMD09PW5uKWJyZWFrIGU7bm4tLSx2dCs9VnRbb3QrK108PEd0LEd0Kz04fXZ0Pj4+PWlpLEd0LT1paSxfdC5iYWNrKz1paX1pZih2dD4+Pj1GbixHdC09Rm4sX3QuYmFjays9Rm4sX3QubGVuZ3RoPUhuLDA9''@;'; put 'put ''PT1xdCl7X3QubW9kZT0yNjticmVha31pZigzMiZxdCl7X3QuYmFjaz0tMSxfdC5tb2RlPTEyO2JyZWFrfWlmKDY0JnF0KXtDdC5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsX3QubW9kZT0zMDticmVha31fdC5leHRyYT0xNSZxdCxfdC5tb2RlPTIyO2Nhc2UgMjI6aWYoX3Qu''@;'; put 'put ''ZXh0cmEpe2ZvcihKcj1fdC5leHRyYTtHdDxKcjspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1fdC5sZW5ndGgrPXZ0JigxPDxfdC5leHRyYSktMSx2dD4+Pj1fdC5leHRyYSxHdC09X3QuZXh0cmEsX3QuYmFjays9X3QuZXh0cmF9X3Qud2FzPV90Lmxl''@;'; put 'put ''bmd0aCxfdC5tb2RlPTIzO2Nhc2UgMjM6Zm9yKDtxdD0oQm49X3QuZGlzdGNvZGVbdnQmKDE8PF90LmRpc3RiaXRzKS0xXSk+Pj4xNiYyNTUsSG49NjU1MzUmQm4sISgoRm49Qm4+Pj4yNCk8PUd0KTspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1pZigh''@;'; put 'put ''KDI0MCZxdCkpe2ZvcihpaT1Gbixjbj1xdCxqbj1IbjtxdD0oQm49X3QuZGlzdGNvZGVbam4rKCh2dCYoMTw8aWkrY24pLTEpPj5paSldKT4+PjE2JjI1NSxIbj02NTUzNSZCbiwhKGlpKyhGbj1Cbj4+PjI0KTw9R3QpOyl7aWYoMD09PW5uKWJyZWFrIGU7bm4tLSx2dCs9VnRbb3QrK108PEd0''@;'; put 'put ''LEd0Kz04fXZ0Pj4+PWlpLEd0LT1paSxfdC5iYWNrKz1paX1pZih2dD4+Pj1GbixHdC09Rm4sX3QuYmFjays9Rm4sNjQmcXQpe0N0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixfdC5tb2RlPTMwO2JyZWFrfV90Lm9mZnNldD1IbixfdC5leHRyYT0xNSZxdCxfdC5tb2RlPTI0O2Nhc2Ug''@;'; put 'put ''MjQ6aWYoX3QuZXh0cmEpe2ZvcihKcj1fdC5leHRyYTtHdDxKcjspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1fdC5vZmZzZXQrPXZ0JigxPDxfdC5leHRyYSktMSx2dD4+Pj1fdC5leHRyYSxHdC09X3QuZXh0cmEsX3QuYmFjays9X3QuZXh0cmF9aWYo''@;'; put 'put ''X3Qub2Zmc2V0Pl90LmRtYXgpe0N0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLF90Lm1vZGU9MzA7YnJlYWt9X3QubW9kZT0yNTtjYXNlIDI1OmlmKDA9PT1EdClicmVhayBlO2lmKF90Lm9mZnNldD4oTW49enQtRHQpKXtpZigoTW49X3Qub2Zmc2V0LU1uKT5fdC53aGF2''@;'; put 'put ''ZSYmX3Quc2FuZSl7Q3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsX3QubW9kZT0zMDticmVha31Ubj1Nbj5fdC53bmV4dD9fdC53c2l6ZS0oTW4tPV90LnduZXh0KTpfdC53bmV4dC1NbixNbj5fdC5sZW5ndGgmJihNbj1fdC5sZW5ndGgpLHNuPV90LndpbmRvd31lbHNl''@;'; put 'put ''IHNuPV9uLFRuPUl0LV90Lm9mZnNldCxNbj1fdC5sZW5ndGg7TW4+RHQmJihNbj1EdCksRHQtPU1uLF90Lmxlbmd0aC09TW47ZG97X25bSXQrK109c25bVG4rK119d2hpbGUoLS1Nbik7MD09PV90Lmxlbmd0aCYmKF90Lm1vZGU9MjEpO2JyZWFrO2Nhc2UgMjY6aWYoMD09PUR0KWJyZWFrIGU7''@;'; put 'put ''X25bSXQrK109X3QubGVuZ3RoLER0LS0sX3QubW9kZT0yMTticmVhaztjYXNlIDI3OmlmKF90LndyYXApe2Zvcig7R3Q8MzI7KXtpZigwPT09bm4pYnJlYWsgZTtubi0tLHZ0fD1WdFtvdCsrXTw8R3QsR3QrPTh9aWYoQ3QudG90YWxfb3V0Kz16dC09RHQsX3QudG90YWwrPXp0LHp0JiYoQ3Qu''@;'; put 'put ''YWRsZXI9X3QuY2hlY2s9X3QuZmxhZ3M/UihfdC5jaGVjayxfbix6dCxJdC16dCk6SShfdC5jaGVjayxfbix6dCxJdC16dCkpLHp0PUR0LChfdC5mbGFncz92dDpjdCh2dCkpIT09X3QuY2hlY2spe0N0Lm1zZz0iaW5jb3JyZWN0IGRhdGEgY2hlY2siLF90Lm1vZGU9MzA7YnJlYWt9dnQ9MCxH''@;'; put 'put ''dD0wfV90Lm1vZGU9Mjg7Y2FzZSAyODppZihfdC53cmFwJiZfdC5mbGFncyl7Zm9yKDtHdDwzMjspe2lmKDA9PT1ubilicmVhayBlO25uLS0sdnQrPVZ0W290KytdPDxHdCxHdCs9OH1pZih2dCE9PSg0Mjk0OTY3Mjk1Jl90LnRvdGFsKSl7Q3QubXNnPSJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNr''@;'; put 'put ''IixfdC5tb2RlPTMwO2JyZWFrfXZ0PTAsR3Q9MH1fdC5tb2RlPTI5O2Nhc2UgMjk6dmk9MTticmVhayBlO2Nhc2UgMzA6dmk9LTM7YnJlYWsgZTtjYXNlIDMxOnJldHVybi00O2RlZmF1bHQ6cmV0dXJuIGxlfXJldHVybiBDdC5uZXh0X291dD1JdCxDdC5hdmFpbF9vdXQ9RHQsQ3QubmV4dF9p''@;'; put 'put ''bj1vdCxDdC5hdmFpbF9pbj1ubixfdC5ob2xkPXZ0LF90LmJpdHM9R3QsKF90LndzaXplfHx6dCE9PUN0LmF2YWlsX291dCYmX3QubW9kZTwzMCYmKF90Lm1vZGU8Mjd8fDQhPT1lbikpJiZmdW5jdGlvbiBObihDdCxlbixfdCxWdCl7dmFyIF9uLG90PUN0LnN0YXRlO3JldHVybiBudWxsPT09''@;'; put 'put ''b3Qud2luZG93JiYob3Qud3NpemU9MTw8b3Qud2JpdHMsb3Qud25leHQ9MCxvdC53aGF2ZT0wLG90LndpbmRvdz1uZXcgSi5CdWY4KG90LndzaXplKSksVnQ+PW90LndzaXplPyhKLmFycmF5U2V0KG90LndpbmRvdyxlbixfdC1vdC53c2l6ZSxvdC53c2l6ZSwwKSxvdC53bmV4dD0wLG90Lndo''@;'; put 'put ''YXZlPW90LndzaXplKTooKF9uPW90LndzaXplLW90LnduZXh0KT5WdCYmKF9uPVZ0KSxKLmFycmF5U2V0KG90LndpbmRvdyxlbixfdC1WdCxfbixvdC53bmV4dCksKFZ0LT1fbik/KEouYXJyYXlTZXQob3Qud2luZG93LGVuLF90LVZ0LFZ0LDApLG90LnduZXh0PVZ0LG90LndoYXZlPW90Lndz''@;'; put 'put ''aXplKToob3Qud25leHQrPV9uLG90LnduZXh0PT09b3Qud3NpemUmJihvdC53bmV4dD0wKSxvdC53aGF2ZTxvdC53c2l6ZSYmKG90LndoYXZlKz1fbikpKSwwfShDdCxDdC5vdXRwdXQsQ3QubmV4dF9vdXQsenQtQ3QuYXZhaWxfb3V0KT8oX3QubW9kZT0zMSwtNCk6KHp0LT1DdC5hdmFpbF9v''@;'; put 'put ''dXQsQ3QudG90YWxfaW4rPUxuLT1DdC5hdmFpbF9pbixDdC50b3RhbF9vdXQrPXp0LF90LnRvdGFsKz16dCxfdC53cmFwJiZ6dCYmKEN0LmFkbGVyPV90LmNoZWNrPV90LmZsYWdzP1IoX3QuY2hlY2ssX24senQsQ3QubmV4dF9vdXQtenQpOkkoX3QuY2hlY2ssX24senQsQ3QubmV4dF9vdXQt''@;'; put 'put ''enQpKSxDdC5kYXRhX3R5cGU9X3QuYml0cysoX3QubGFzdD82NDowKSsoMTI9PT1fdC5tb2RlPzEyODowKSsoMjA9PT1fdC5tb2RlfHwxNT09PV90Lm1vZGU/MjU2OjApLCgwPT09TG4mJjA9PT16dHx8ND09PWVuKSYmdmk9PT10ZSYmKHZpPS01KSx2aSl9LEsuaW5mbGF0ZUVuZD1mdW5jdGlv''@;'; put 'put ''biBwbihDdCl7aWYoIUN0fHwhQ3Quc3RhdGUpcmV0dXJuIGxlO3ZhciBlbj1DdC5zdGF0ZTtyZXR1cm4gZW4ud2luZG93JiYoZW4ud2luZG93PW51bGwpLEN0LnN0YXRlPW51bGwsdGV9LEsuaW5mbGF0ZUdldEhlYWRlcj1mdW5jdGlvbiBobihDdCxlbil7dmFyIF90O3JldHVybiBDdCYmQ3Qu''@;'; put 'put ''c3RhdGUmJjImKF90PUN0LnN0YXRlKS53cmFwPyhfdC5oZWFkPWVuLGVuLmRvbmU9ITEsdGUpOmxlfSxLLmluZmxhdGVJbmZvPSJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9p''@;'; put 'put ''bmZmYXN0IjozNCwiLi9pbmZ0cmVlcyI6MzZ9XSwzNjpbZnVuY3Rpb24oQixMLEspeyJ1c2Ugc3RyaWN0Ijt2YXIgSj1CKCIuLi91dGlscy9jb21tb24iKSxHPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYz''@;'; put 'put ''LDE5NSwyMjcsMjU4LDAsMF0sVz1bMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdLFU9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcs''@;'; put 'put ''Mzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3NywwLDBdLHE9WzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0''@;'; put 'put ''LDY0XTtMLmV4cG9ydHM9ZnVuY3Rpb24obmUsaWUsbGUsZGUsdWUsY2UsWSxiKXt2YXIgZmUsbWUsa2UsVGUsUGUsTGUsS2Usd2UsSWUseD1iLmJpdHMsTj0wLEY9MCxnPTAsQz0wLE09MCx5PTAscD0wLFM9MCxRPTAscmU9MCxGZT1udWxsLE5lPTAsQmU9bmV3IEouQnVmMTYoMTYpLEhlPW5l''@;'; put 'put ''dyBKLkJ1ZjE2KDE2KSxRZT1udWxsLG10PTA7Zm9yKE49MDtOPD0xNTtOKyspQmVbTl09MDtmb3IoRj0wO0Y8ZGU7RisrKUJlW2llW2xlK0ZdXSsrO2ZvcihNPXgsQz0xNTtDPj0xJiYwPT09QmVbQ107Qy0tKTtpZihNPkMmJihNPUMpLDA9PT1DKXJldHVybiB1ZVtjZSsrXT0yMDk3MTUyMCx1''@;'; put 'put ''ZVtjZSsrXT0yMDk3MTUyMCxiLmJpdHM9MSwwO2ZvcihnPTE7ZzxDJiYwPT09QmVbZ107ZysrKTtmb3IoTTxnJiYoTT1nKSxTPTEsTj0xO048PTE1O04rKylpZihTPDw9MSwoUy09QmVbTl0pPDApcmV0dXJuLTE7aWYoUz4wJiYoMD09PW5lfHwxIT09QykpcmV0dXJuLTE7Zm9yKEhlWzFdPTAs''@;'; put 'put ''Tj0xO048MTU7TisrKUhlW04rMV09SGVbTl0rQmVbTl07Zm9yKEY9MDtGPGRlO0YrKykwIT09aWVbbGUrRl0mJihZW0hlW2llW2xlK0ZdXSsrXT1GKTtpZigwPT09bmU/KEZlPVFlPVksTGU9MTkpOjE9PT1uZT8oRmU9RyxOZS09MjU3LFFlPVcsbXQtPTI1NyxMZT0yNTYpOihGZT1VLFFlPXEs''@;'; put 'put ''TGU9LTEpLHJlPTAsRj0wLE49ZyxQZT1jZSx5PU0scD0wLGtlPS0xLFRlPShRPTE8PE0pLTEsMT09PW5lJiZRPjg1Mnx8Mj09PW5lJiZRPjU5MilyZXR1cm4gMTtmb3IoOzspe0tlPU4tcCxZW0ZdPExlPyh3ZT0wLEllPVlbRl0pOllbRl0+TGU/KHdlPVFlW210K1lbRl1dLEllPUZlW05lK1lb''@;'; put 'put ''Rl1dKTood2U9OTYsSWU9MCksZmU9MTw8Ti1wLGc9bWU9MTw8eTtkb3t1ZVtQZSsocmU+PnApKyhtZS09ZmUpXT1LZTw8MjR8d2U8PDE2fEllfDB9d2hpbGUoMCE9PW1lKTtmb3IoZmU9MTw8Ti0xO3JlJmZlOylmZT4+PTE7aWYoMCE9PWZlPyhyZSY9ZmUtMSxyZSs9ZmUpOnJlPTAsRisrLDA9''@;'; put 'put ''PS0tQmVbTl0pe2lmKE49PT1DKWJyZWFrO049aWVbbGUrWVtGXV19aWYoTj5NJiYocmUmVGUpIT09a2Upe2ZvcigwPT09cCYmKHA9TSksUGUrPWcsUz0xPDwoeT1OLXApO3krcDxDJiYhKChTLT1CZVt5K3BdKTw9MCk7KXkrKyxTPDw9MTtpZihRKz0xPDx5LDE9PT1uZSYmUT44NTJ8fDI9PT1u''@;'; put 'put ''ZSYmUT41OTIpcmV0dXJuIDE7dWVba2U9cmUmVGVdPU08PDI0fHk8PDE2fFBlLWNlfDB9fXJldHVybiAwIT09cmUmJih1ZVtQZStyZV09Ti1wPDwyNHw2NDw8MTZ8MCksYi5iaXRzPU0sMH19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM3OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O0wuZXhwb3J0cz17MjoibmVlZCBkaWN0aW9uYXJ5IiwxOiJzdHJlYW0gZW5kIiwwOiIiLCItMSI6ImZpbGUgZXJyb3IiLCItMiI6InN0cmVhbSBlcnJvciIsIi0zIjoiZGF0YSBlcnJvciIsIi00IjoiaW5zdWZmaWNpZW50IG1lbW9yeSIsIi01IjoiYnVmZmVyIGVycm9yIiwiLTYiOiJpbmNv''@;'; put 'put ''bXBhdGlibGUgdmVyc2lvbiJ9fSx7fV0sMzg6W2Z1bmN0aW9uKEIsTCxLKXsidXNlIHN0cmljdCI7dmFyIEo9QigiLi4vdXRpbHMvY29tbW9uIik7ZnVuY3Rpb24gaihwdCl7Zm9yKHZhciBwbj1wdC5sZW5ndGg7LS1wbj49MDspcHRbcG5dPTB9dmFyIGNlPTE1LFk9MTYsQz1bMCwwLDAsMCww''@;'; put 'put ''LDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxNPVswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSx5PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMyw3XSxw''@;'; put 'put ''PVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxRPW5ldyBBcnJheSg1NzYpO2ooUSk7dmFyIHJlPW5ldyBBcnJheSg2MCk7aihyZSk7dmFyIGZlPW5ldyBBcnJheSg1MTIpO2ooZmUpO3ZhciBtZT1uZXcgQXJyYXkoMjU2KTtqKG1lKTt2YXIga2U9bmV3''@;'; put 'put ''IEFycmF5KDI5KTtqKGtlKTt2YXIgVGU9bmV3IEFycmF5KDMwKTtqKFRlKTt2YXIgRmUsTmUsTGUsUGU9ZnVuY3Rpb24ocHQscG4saG4sQ3QsZW4pe3RoaXMuc3RhdGljX3RyZWU9cHQsdGhpcy5leHRyYV9iaXRzPXBuLHRoaXMuZXh0cmFfYmFzZT1obix0aGlzLmVsZW1zPUN0LHRoaXMubWF4''@;'; put 'put ''X2xlbmd0aD1lbix0aGlzLmhhc19zdHJlZT1wdCYmcHQubGVuZ3RofSxCZT1mdW5jdGlvbihwdCxwbil7dGhpcy5keW5fdHJlZT1wdCx0aGlzLm1heF9jb2RlPTAsdGhpcy5zdGF0X2Rlc2M9cG59O2Z1bmN0aW9uIEhlKHB0KXtyZXR1cm4gcHQ8MjU2P2ZlW3B0XTpmZVsyNTYrKHB0Pj4+Nyld''@;'; put 'put ''fWZ1bmN0aW9uIFFlKHB0LHBuKXtwdC5wZW5kaW5nX2J1ZltwdC5wZW5kaW5nKytdPTI1NSZwbixwdC5wZW5kaW5nX2J1ZltwdC5wZW5kaW5nKytdPXBuPj4+OCYyNTV9ZnVuY3Rpb24gbXQocHQscG4saG4pe3B0LmJpX3ZhbGlkPlktaG4/KHB0LmJpX2J1Znw9cG48PHB0LmJpX3ZhbGlkJjY1''@;'; put 'put ''NTM1LFFlKHB0LHB0LmJpX2J1ZikscHQuYmlfYnVmPXBuPj5ZLXB0LmJpX3ZhbGlkLHB0LmJpX3ZhbGlkKz1obi1ZKToocHQuYmlfYnVmfD1wbjw8cHQuYmlfdmFsaWQmNjU1MzUscHQuYmlfdmFsaWQrPWhuKX1mdW5jdGlvbiBLZShwdCxwbixobil7bXQocHQsaG5bMipwbl0saG5bMipwbisx''@;'; put 'put ''XSl9ZnVuY3Rpb24gd2UocHQscG4pe3ZhciBobj0wO2Rve2hufD0xJnB0LHB0Pj4+PTEsaG48PD0xfXdoaWxlKC0tcG4+MCk7cmV0dXJuIGhuPj4+MX1mdW5jdGlvbiBldChwdCxwbixobil7dmFyIF90LFZ0LEN0PW5ldyBBcnJheShjZSsxKSxlbj0wO2ZvcihfdD0xO190PD1jZTtfdCsrKUN0''@;'; put 'put ''W190XT1lbj1lbitobltfdC0xXTw8MTtmb3IoVnQ9MDtWdDw9cG47VnQrKyl7dmFyIF9uPXB0WzIqVnQrMV07MCE9PV9uJiYocHRbMipWdF09d2UoQ3RbX25dKyssX24pKX19ZnVuY3Rpb24gcWUocHQpe3ZhciBwbjtmb3IocG49MDtwbjwyODY7cG4rKylwdC5keW5fbHRyZWVbMipwbl09MDtm''@;'; put 'put ''b3IocG49MDtwbjwzMDtwbisrKXB0LmR5bl9kdHJlZVsyKnBuXT0wO2Zvcihwbj0wO3BuPDE5O3BuKyspcHQuYmxfdHJlZVsyKnBuXT0wO3B0LmR5bl9sdHJlZVs1MTJdPTEscHQub3B0X2xlbj1wdC5zdGF0aWNfbGVuPTAscHQubGFzdF9saXQ9cHQubWF0Y2hlcz0wfWZ1bmN0aW9uIGh0KHB0''@;'; put 'put ''KXtwdC5iaV92YWxpZD44P1FlKHB0LHB0LmJpX2J1Zik6cHQuYmlfdmFsaWQ+MCYmKHB0LnBlbmRpbmdfYnVmW3B0LnBlbmRpbmcrK109cHQuYmlfYnVmKSxwdC5iaV9idWY9MCxwdC5iaV92YWxpZD0wfWZ1bmN0aW9uIERlKHB0LHBuLGhuLEN0KXt2YXIgZW49MipwbixfdD0yKmhuO3JldHVy''@;'; put 'put ''biBwdFtlbl08cHRbX3RdfHxwdFtlbl09PT1wdFtfdF0mJkN0W3BuXTw9Q3RbaG5dfWZ1bmN0aW9uICRlKHB0LHBuLGhuKXtmb3IodmFyIEN0PXB0LmhlYXBbaG5dLGVuPWhuPDwxO2VuPD1wdC5oZWFwX2xlbiYmKGVuPHB0LmhlYXBfbGVuJiZEZShwbixwdC5oZWFwW2VuKzFdLHB0LmhlYXBb''@;'; put 'put ''ZW5dLHB0LmRlcHRoKSYmZW4rKywhRGUocG4sQ3QscHQuaGVhcFtlbl0scHQuZGVwdGgpKTspcHQuaGVhcFtobl09cHQuaGVhcFtlbl0saG49ZW4sZW48PD0xO3B0LmhlYXBbaG5dPUN0fWZ1bmN0aW9uIGF0KHB0LHBuLGhuKXt2YXIgQ3QsZW4sVnQsX24sX3Q9MDtpZigwIT09cHQubGFzdF9s''@;'; put 'put ''aXQpZG97Q3Q9cHQucGVuZGluZ19idWZbcHQuZF9idWYrMipfdF08PDh8cHQucGVuZGluZ19idWZbcHQuZF9idWYrMipfdCsxXSxlbj1wdC5wZW5kaW5nX2J1ZltwdC5sX2J1ZitfdF0sX3QrKywwPT09Q3Q/S2UocHQsZW4scG4pOihLZShwdCwoVnQ9bWVbZW5dKSsyNTYrMSxwbiksMCE9PShf''@;'; put 'put ''bj1DW1Z0XSkmJm10KHB0LGVuLT1rZVtWdF0sX24pLEtlKHB0LFZ0PUhlKC0tQ3QpLGhuKSwwIT09KF9uPU1bVnRdKSYmbXQocHQsQ3QtPVRlW1Z0XSxfbikpfXdoaWxlKF90PHB0Lmxhc3RfbGl0KTtLZShwdCwyNTYscG4pfWZ1bmN0aW9uIGN0KHB0LHBuKXt2YXIgVnQsX24sSXQsaG49cG4u''@;'; put 'put ''ZHluX3RyZWUsQ3Q9cG4uc3RhdF9kZXNjLnN0YXRpY190cmVlLGVuPXBuLnN0YXRfZGVzYy5oYXNfc3RyZWUsX3Q9cG4uc3RhdF9kZXNjLmVsZW1zLG90PS0xO2ZvcihwdC5oZWFwX2xlbj0wLHB0LmhlYXBfbWF4PTU3MyxWdD0wO1Z0PF90O1Z0KyspMCE9PWhuWzIqVnRdPyhwdC5oZWFwWysr''@;'; put 'put ''cHQuaGVhcF9sZW5dPW90PVZ0LHB0LmRlcHRoW1Z0XT0wKTpoblsyKlZ0KzFdPTA7Zm9yKDtwdC5oZWFwX2xlbjwyOyloblsyKihJdD1wdC5oZWFwWysrcHQuaGVhcF9sZW5dPW90PDI/KytvdDowKV09MSxwdC5kZXB0aFtJdF09MCxwdC5vcHRfbGVuLS0sZW4mJihwdC5zdGF0aWNfbGVuLT1D''@;'; put 'put ''dFsyKkl0KzFdKTtmb3IocG4ubWF4X2NvZGU9b3QsVnQ9cHQuaGVhcF9sZW4+PjE7VnQ+PTE7VnQtLSkkZShwdCxobixWdCk7SXQ9X3Q7ZG97VnQ9cHQuaGVhcFsxXSxwdC5oZWFwWzFdPXB0LmhlYXBbcHQuaGVhcF9sZW4tLV0sJGUocHQsaG4sMSksX249cHQuaGVhcFsxXSxwdC5oZWFwWy0t''@;'; put 'put ''cHQuaGVhcF9tYXhdPVZ0LHB0LmhlYXBbLS1wdC5oZWFwX21heF09X24saG5bMipJdF09aG5bMipWdF0raG5bMipfbl0scHQuZGVwdGhbSXRdPShwdC5kZXB0aFtWdF0+PXB0LmRlcHRoW19uXT9wdC5kZXB0aFtWdF06cHQuZGVwdGhbX25dKSsxLGhuWzIqVnQrMV09aG5bMipfbisxXT1JdCxw''@;'; put 'put ''dC5oZWFwWzFdPUl0KyssJGUocHQsaG4sMSl9d2hpbGUocHQuaGVhcF9sZW4+PTIpO3B0LmhlYXBbLS1wdC5oZWFwX21heF09cHQuaGVhcFsxXSxmdW5jdGlvbiBPZShwdCxwbil7dmFyIEl0LG5uLER0LHZ0LEd0LExuLGhuPXBuLmR5bl90cmVlLEN0PXBuLm1heF9jb2RlLGVuPXBuLnN0YXRf''@;'; put 'put ''ZGVzYy5zdGF0aWNfdHJlZSxfdD1wbi5zdGF0X2Rlc2MuaGFzX3N0cmVlLFZ0PXBuLnN0YXRfZGVzYy5leHRyYV9iaXRzLF9uPXBuLnN0YXRfZGVzYy5leHRyYV9iYXNlLG90PXBuLnN0YXRfZGVzYy5tYXhfbGVuZ3RoLHp0PTA7Zm9yKHZ0PTA7dnQ8PWNlO3Z0KyspcHQuYmxfY291bnRbdnRd''@;'; put 'put ''PTA7Zm9yKGhuWzIqcHQuaGVhcFtwdC5oZWFwX21heF0rMV09MCxJdD1wdC5oZWFwX21heCsxO0l0PDU3MztJdCsrKSh2dD1oblsyKmhuWzIqKG5uPXB0LmhlYXBbSXRdKSsxXSsxXSsxKT5vdCYmKHZ0PW90LHp0KyspLGhuWzIqbm4rMV09dnQsIShubj5DdCkmJihwdC5ibF9jb3VudFt2dF0r''@;'; put 'put ''KyxHdD0wLG5uPj1fbiYmKEd0PVZ0W25uLV9uXSkscHQub3B0X2xlbis9KExuPWhuWzIqbm5dKSoodnQrR3QpLF90JiYocHQuc3RhdGljX2xlbis9TG4qKGVuWzIqbm4rMV0rR3QpKSk7aWYoMCE9PXp0KXtkb3tmb3IodnQ9b3QtMTswPT09cHQuYmxfY291bnRbdnRdOyl2dC0tO3B0LmJsX2Nv''@;'; put 'put ''dW50W3Z0XS0tLHB0LmJsX2NvdW50W3Z0KzFdKz0yLHB0LmJsX2NvdW50W290XS0tLHp0LT0yfXdoaWxlKHp0PjApO2Zvcih2dD1vdDswIT09dnQ7dnQtLSlmb3Iobm49cHQuYmxfY291bnRbdnRdOzAhPT1ubjspISgoRHQ9cHQuaGVhcFstLUl0XSk+Q3QpJiYoaG5bMipEdCsxXSE9PXZ0JiYo''@;'; put 'put ''cHQub3B0X2xlbis9KHZ0LWhuWzIqRHQrMV0pKmhuWzIqRHRdLGhuWzIqRHQrMV09dnQpLG5uLS0pfX0ocHQscG4pLGV0KGhuLG90LHB0LmJsX2NvdW50KX1mdW5jdGlvbiBPdChwdCxwbixobil7dmFyIEN0LF90LGVuPS0xLFZ0PXBuWzFdLF9uPTAsb3Q9NyxJdD00O2ZvcigwPT09VnQmJihv''@;'; put 'put ''dD0xMzgsSXQ9MykscG5bMiooaG4rMSkrMV09NjU1MzUsQ3Q9MDtDdDw9aG47Q3QrKylfdD1WdCxWdD1wblsyKihDdCsxKSsxXSwhKCsrX248b3QmJl90PT09VnQpJiYoX248SXQ/cHQuYmxfdHJlZVsyKl90XSs9X246MCE9PV90PyhfdCE9PWVuJiZwdC5ibF90cmVlWzIqX3RdKysscHQuYmxf''@;'; put 'put ''dHJlZVszMl0rKyk6X248PTEwP3B0LmJsX3RyZWVbMzRdKys6cHQuYmxfdHJlZVszNl0rKyxfbj0wLGVuPV90LDA9PT1WdD8ob3Q9MTM4LEl0PTMpOl90PT09VnQ/KG90PTYsSXQ9Myk6KG90PTcsSXQ9NCkpfWZ1bmN0aW9uIFB0KHB0LHBuLGhuKXt2YXIgQ3QsX3QsZW49LTEsVnQ9cG5bMV0s''@;'; put 'put ''X249MCxvdD03LEl0PTQ7Zm9yKDA9PT1WdCYmKG90PTEzOCxJdD0zKSxDdD0wO0N0PD1objtDdCsrKWlmKF90PVZ0LFZ0PXBuWzIqKEN0KzEpKzFdLCEoKytfbjxvdCYmX3Q9PT1WdCkpe2lmKF9uPEl0KWRve0tlKHB0LF90LHB0LmJsX3RyZWUpfXdoaWxlKDAhPS0tX24pO2Vsc2UgMCE9PV90''@;'; put 'put ''PyhfdCE9PWVuJiYoS2UocHQsX3QscHQuYmxfdHJlZSksX24tLSksS2UocHQsMTYscHQuYmxfdHJlZSksbXQocHQsX24tMywyKSk6X248PTEwPyhLZShwdCwxNyxwdC5ibF90cmVlKSxtdChwdCxfbi0zLDMpKTooS2UocHQsMTgscHQuYmxfdHJlZSksbXQocHQsX24tMTEsNykpO19uPTAsZW49''@;'; put 'put ''X3QsMD09PVZ0PyhvdD0xMzgsSXQ9Myk6X3Q9PT1WdD8ob3Q9NixJdD0zKToob3Q9NyxJdD00KX19dmFyIE50PSExO2Z1bmN0aW9uIEduKHB0LHBuLGhuLEN0KXttdChwdCwwKyhDdD8xOjApLDMpLGZ1bmN0aW9uIEVlKHB0LHBuLGhuLEN0KXtodChwdCksQ3QmJihRZShwdCxobiksUWUocHQs''@;'; put 'put ''fmhuKSksSi5hcnJheVNldChwdC5wZW5kaW5nX2J1ZixwdC53aW5kb3cscG4saG4scHQucGVuZGluZykscHQucGVuZGluZys9aG59KHB0LHBuLGhuLCEwKX1LLl90cl9pbml0PWZ1bmN0aW9uIGJuKHB0KXtOdHx8KGZ1bmN0aW9uIG50KCl7dmFyIHB0LHBuLGhuLEN0LGVuLF90PW5ldyBBcnJh''@;'; put 'put ''eShjZSsxKTtmb3IoaG49MCxDdD0wO0N0PDI4O0N0KyspZm9yKGtlW0N0XT1obixwdD0wO3B0PDE8PENbQ3RdO3B0KyspbWVbaG4rK109Q3Q7Zm9yKG1lW2huLTFdPUN0LGVuPTAsQ3Q9MDtDdDwxNjtDdCsrKWZvcihUZVtDdF09ZW4scHQ9MDtwdDwxPDxNW0N0XTtwdCsrKWZlW2VuKytdPUN0''@;'; put 'put ''O2Zvcihlbj4+PTc7Q3Q8MzA7Q3QrKylmb3IoVGVbQ3RdPWVuPDw3LHB0PTA7cHQ8MTw8TVtDdF0tNztwdCsrKWZlWzI1NitlbisrXT1DdDtmb3IocG49MDtwbjw9Y2U7cG4rKylfdFtwbl09MDtmb3IocHQ9MDtwdDw9MTQzOylRWzIqcHQrMV09OCxwdCsrLF90WzhdKys7Zm9yKDtwdDw9MjU1''@;'; put 'put ''OylRWzIqcHQrMV09OSxwdCsrLF90WzldKys7Zm9yKDtwdDw9Mjc5OylRWzIqcHQrMV09NyxwdCsrLF90WzddKys7Zm9yKDtwdDw9Mjg3OylRWzIqcHQrMV09OCxwdCsrLF90WzhdKys7Zm9yKGV0KFEsMjg3LF90KSxwdD0wO3B0PDMwO3B0KyspcmVbMipwdCsxXT01LHJlWzIqcHRdPXdlKHB0''@;'; put 'put ''LDUpO0ZlPW5ldyBQZShRLEMsMjU3LDI4NixjZSksTmU9bmV3IFBlKHJlLE0sMCwzMCxjZSksTGU9bmV3IFBlKG5ldyBBcnJheSgwKSx5LDAsMTksNyl9KCksTnQ9ITApLHB0LmxfZGVzYz1uZXcgQmUocHQuZHluX2x0cmVlLEZlKSxwdC5kX2Rlc2M9bmV3IEJlKHB0LmR5bl9kdHJlZSxOZSks''@;'; put 'put ''cHQuYmxfZGVzYz1uZXcgQmUocHQuYmxfdHJlZSxMZSkscHQuYmlfYnVmPTAscHQuYmlfdmFsaWQ9MCxxZShwdCl9LEsuX3RyX3N0b3JlZF9ibG9jaz1HbixLLl90cl9mbHVzaF9ibG9jaz1mdW5jdGlvbiAkbihwdCxwbixobixDdCl7dmFyIGVuLF90LFZ0PTA7cHQubGV2ZWw+MD8oMj09PXB0''@;'; put 'put ''LnN0cm0uZGF0YV90eXBlJiYocHQuc3RybS5kYXRhX3R5cGU9ZnVuY3Rpb24gbW4ocHQpe3ZhciBobixwbj00MDkzNjI0NDQ3O2Zvcihobj0wO2huPD0zMTtobisrLHBuPj4+PTEpaWYoMSZwbiYmMCE9PXB0LmR5bl9sdHJlZVsyKmhuXSlyZXR1cm4gMDtpZigwIT09cHQuZHluX2x0cmVlWzE4''@;'; put 'put ''XXx8MCE9PXB0LmR5bl9sdHJlZVsyMF18fDAhPT1wdC5keW5fbHRyZWVbMjZdKXJldHVybiAxO2Zvcihobj0zMjtobjwyNTY7aG4rKylpZigwIT09cHQuZHluX2x0cmVlWzIqaG5dKXJldHVybiAxO3JldHVybiAwfShwdCkpLGN0KHB0LHB0LmxfZGVzYyksY3QocHQscHQuZF9kZXNjKSxWdD1m''@;'; put 'put ''dW5jdGlvbiBBdChwdCl7dmFyIHBuO2ZvcihPdChwdCxwdC5keW5fbHRyZWUscHQubF9kZXNjLm1heF9jb2RlKSxPdChwdCxwdC5keW5fZHRyZWUscHQuZF9kZXNjLm1heF9jb2RlKSxjdChwdCxwdC5ibF9kZXNjKSxwbj0xODtwbj49MyYmMD09PXB0LmJsX3RyZWVbMipwW3BuXSsxXTtwbi0t''@;'; put 'put ''KTtyZXR1cm4gcHQub3B0X2xlbis9MyoocG4rMSkrNSs1KzQscG59KHB0KSwoX3Q9cHQuc3RhdGljX2xlbiszKzc+Pj4zKTw9KGVuPXB0Lm9wdF9sZW4rMys3Pj4+MykmJihlbj1fdCkpOmVuPV90PWhuKzUsaG4rNDw9ZW4mJi0xIT09cG4/R24ocHQscG4saG4sQ3QpOjQ9PT1wdC5zdHJhdGVn''@;'; put 'put ''eXx8X3Q9PT1lbj8obXQocHQsMisoQ3Q/MTowKSwzKSxhdChwdCxRLHJlKSk6KG10KHB0LDQrKEN0PzE6MCksMyksZnVuY3Rpb24gSnQocHQscG4saG4sQ3Qpe3ZhciBlbjtmb3IobXQocHQscG4tMjU3LDUpLG10KHB0LGhuLTEsNSksbXQocHQsQ3QtNCw0KSxlbj0wO2VuPEN0O2VuKyspbXQo''@;'; put 'put ''cHQscHQuYmxfdHJlZVsyKnBbZW5dKzFdLDMpO1B0KHB0LHB0LmR5bl9sdHJlZSxwbi0xKSxQdChwdCxwdC5keW5fZHRyZWUsaG4tMSl9KHB0LHB0LmxfZGVzYy5tYXhfY29kZSsxLHB0LmRfZGVzYy5tYXhfY29kZSsxLFZ0KzEpLGF0KHB0LHB0LmR5bl9sdHJlZSxwdC5keW5fZHRyZWUpKSxx''@;'; put 'put ''ZShwdCksQ3QmJmh0KHB0KX0sSy5fdHJfdGFsbHk9ZnVuY3Rpb24gTm4ocHQscG4saG4pe3JldHVybiBwdC5wZW5kaW5nX2J1ZltwdC5kX2J1ZisyKnB0Lmxhc3RfbGl0XT1wbj4+PjgmMjU1LHB0LnBlbmRpbmdfYnVmW3B0LmRfYnVmKzIqcHQubGFzdF9saXQrMV09MjU1JnBuLHB0LnBlbmRp''@;'; put 'put ''bmdfYnVmW3B0LmxfYnVmK3B0Lmxhc3RfbGl0XT0yNTUmaG4scHQubGFzdF9saXQrKywwPT09cG4/cHQuZHluX2x0cmVlWzIqaG5dKys6KHB0Lm1hdGNoZXMrKyxwbi0tLHB0LmR5bl9sdHJlZVsyKihtZVtobl0rMjU2KzEpXSsrLHB0LmR5bl9kdHJlZVsyKkhlKHBuKV0rKykscHQubGFzdF9s''@;'; put 'put ''aXQ9PT1wdC5saXRfYnVmc2l6ZS0xfSxLLl90cl9hbGlnbj1mdW5jdGlvbiBvbihwdCl7bXQocHQsMiwzKSxLZShwdCwyNTYsUSksZnVuY3Rpb24gSWUocHQpezE2PT09cHQuYmlfdmFsaWQ/KFFlKHB0LHB0LmJpX2J1ZikscHQuYmlfYnVmPTAscHQuYmlfdmFsaWQ9MCk6cHQuYmlfdmFsaWQ+''@;'; put 'put ''PTgmJihwdC5wZW5kaW5nX2J1ZltwdC5wZW5kaW5nKytdPTI1NSZwdC5iaV9idWYscHQuYmlfYnVmPj49OCxwdC5iaV92YWxpZC09OCl9KHB0KX19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM5OltmdW5jdGlvbihCLEwsSyl7InVzZSBzdHJpY3QiO0wuZXhwb3J0cz1mdW5jdGlvbiBKKCl7''@;'; put 'put ''dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFsX2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAsdGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPSIiLHRoaXMuc3RhdGU9bnVsbCx0aGlzLmRh''@;'; put 'put ''dGFfdHlwZT0yLHRoaXMuYWRsZXI9MH19LHt9XX0se30sWzldKSg5KX0pfSw4MzQxNzooV2UsemUsVCk9PnshZnVuY3Rpb24gayhIKXtILnZlcnNpb249IjEuMjAyMTExMjIuMSI7dmFyIEI9MTIwMCxMPTEyNTI7dHlwZW9mIGNwdGFibGU+InUiJiYodHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFs''@;'; put 'put ''LmNwdGFibGU9VCg4MDc4OCk6dHlwZW9mIHdpbmRvdzwidSImJih3aW5kb3cuY3B0YWJsZT1UKDgwNzg4KSkpO2Zvcih2YXIgSz1bODc0LDkzMiw5MzYsOTQ5LDk1MCwxZTRdLEo9MDtKPD04OysrSilLLnB1c2goMTI1MCtKKTt2YXIgST17MDoxMjUyLDE6NjUwMDEsMjo2NTAwMSw3NzoxZTQs''@;'; put 'put ''MTI4OjkzMiwxMjk6OTQ5LDEzMDoxMzYxLDEzNDo5MzYsMTM2Ojk1MCwxNjE6MTI1MywxNjI6MTI1NCwxNjM6MTI1OCwxNzc6MTI1NSwxNzg6MTI1NiwxODY6MTI1NywyMDQ6MTI1MSwyMjI6ODc0LDIzODoxMjUwLDI1NToxMjUyLDY5OjY5Njl9LFI9ZnVuY3Rpb24odyl7LTEhPUsuaW5kZXhP''@;'; put 'put ''Zih3KSYmKEw9SVswXT13KX0sej1mdW5jdGlvbih3KXtCPXcsUih3KX07ZnVuY3Rpb24gaigpe3ooMTIwMCksZnVuY3Rpb24gRSgpe1IoMTI1Mil9KCl9ZnVuY3Rpb24gVih3KXtmb3IodmFyIFA9W10sRD0wLGVlPXcubGVuZ3RoO0Q8ZWU7KytEKVBbRF09dy5jaGFyQ29kZUF0KEQpO3JldHVy''@;'; put 'put ''biBQfXZhciBVPWZ1bmN0aW9uKHcpe3ZhciBQPXcuY2hhckNvZGVBdCgwKSxEPXcuY2hhckNvZGVBdCgxKTtyZXR1cm4gMjU1PT1QJiYyNTQ9PUQ/ZnVuY3Rpb24gRyh3KXtmb3IodmFyIFA9W10sRD0wO0Q8dy5sZW5ndGg+PjE7KytEKVBbRF09U3RyaW5nLmZyb21DaGFyQ29kZSh3LmNoYXJD''@;'; put 'put ''b2RlQXQoMipEKSsody5jaGFyQ29kZUF0KDIqRCsxKTw8OCkpO3JldHVybiBQLmpvaW4oIiIpfSh3LnNsaWNlKDIpKToyNTQ9PVAmJjI1NT09RD9mdW5jdGlvbiBXKHcpe2Zvcih2YXIgUD1bXSxEPTA7RDx3Lmxlbmd0aD4+MTsrK0QpUFtEXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHcuY2hhckNv''@;'; put 'put ''ZGVBdCgyKkQrMSkrKHcuY2hhckNvZGVBdCgyKkQpPDw4KSk7cmV0dXJuIFAuam9pbigiIil9KHcuc2xpY2UoMikpOjY1Mjc5PT1QP3cuc2xpY2UoMSk6d30scT1mdW5jdGlvbihQKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShQKX0sdGU9ZnVuY3Rpb24oUCl7cmV0dXJuIFN0cmluZy5m''@;'; put 'put ''cm9tQ2hhckNvZGUoUCl9O3R5cGVvZiBjcHRhYmxlPCJ1IiYmKHo9ZnVuY3Rpb24odyl7Qj13LFIodyl9LFU9ZnVuY3Rpb24odyl7cmV0dXJuIDI1NT09PXcuY2hhckNvZGVBdCgwKSYmMjU0PT09dy5jaGFyQ29kZUF0KDEpP2NwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsVih3LnNsaWNlKDIp''@;'; put 'put ''KSk6d30scT1mdW5jdGlvbihQKXtyZXR1cm4gMTIwMD09PUI/U3RyaW5nLmZyb21DaGFyQ29kZShQKTpjcHRhYmxlLnV0aWxzLmRlY29kZShCLFsyNTUmUCxQPj44XSlbMF19LHRlPWZ1bmN0aW9uKFApe3JldHVybiBjcHRhYmxlLnV0aWxzLmRlY29kZShMLFtQXSlbMF19KTt2YXIgUCxuZT1u''@;'; put 'put ''dWxsLGxlPShQPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIse2VuY29kZTpmdW5jdGlvbihEKXtmb3IodmFyIGVlPSIiLG9lPTAsZ2U9MCxfZT0wLHZlPTAsTWU9MCxqZT0wLFVlPTAsWGU9MDtYZTxELmxlbmd0aDsp''@;'; put 'put ''dmU9KG9lPUQuY2hhckNvZGVBdChYZSsrKSk+PjIsTWU9KDMmb2UpPDw0fChnZT1ELmNoYXJDb2RlQXQoWGUrKykpPj40LGplPSgxNSZnZSk8PDJ8KF9lPUQuY2hhckNvZGVBdChYZSsrKSk+PjYsVWU9NjMmX2UsaXNOYU4oZ2UpP2plPVVlPTY0OmlzTmFOKF9lKSYmKFVlPTY0KSxlZSs9UC5j''@;'; put 'put ''aGFyQXQodmUpK1AuY2hhckF0KE1lKStQLmNoYXJBdChqZSkrUC5jaGFyQXQoVWUpO3JldHVybiBlZX0sZGVjb2RlOmZ1bmN0aW9uKGVlKXt2YXIgb2U9IiIsTWU9MCxqZT0wLFVlPTAsWGU9MDtlZT1lZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIGl0PTA7aXQ8ZWUubGVu''@;'; put 'put ''Z3RoOylNZT1QLmluZGV4T2YoZWUuY2hhckF0KGl0KyspKSxqZT1QLmluZGV4T2YoZWUuY2hhckF0KGl0KyspKSxvZSs9U3RyaW5nLmZyb21DaGFyQ29kZShNZTw8MnxqZT4+NCksNjQhPT0oVWU9UC5pbmRleE9mKGVlLmNoYXJBdChpdCsrKSkpJiYob2UrPVN0cmluZy5mcm9tQ2hhckNvZGUo''@;'; put 'put ''KDE1JmplKTw8NHxVZT4+MikpLDY0IT09KFhlPVAuaW5kZXhPZihlZS5jaGFyQXQoaXQrKykpKSYmKG9lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzJlVlKTw8NnxYZSkpO3JldHVybiBvZX19KSxkZT10eXBlb2YgQnVmZmVyPCJ1IiYmdHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgcHJvY2Vz''@;'; put 'put ''cy52ZXJzaW9uczwidSImJiEhcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLHVlPWZ1bmN0aW9uKCl7fTtpZih0eXBlb2YgQnVmZmVyPCJ1Iil7dmFyIGNlPSFCdWZmZXIuZnJvbTtpZighY2UpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7Y2U9ITB9dWU9Y2U/ZnVuY3Rpb24odyxQ''@;'; put 'put ''KXtyZXR1cm4gUD9uZXcgQnVmZmVyKHcsUCk6bmV3IEJ1ZmZlcih3KX06QnVmZmVyLmZyb20uYmluZChCdWZmZXIpLEJ1ZmZlci5hbGxvY3x8KEJ1ZmZlci5hbGxvYz1mdW5jdGlvbih3KXtyZXR1cm4gbmV3IEJ1ZmZlcih3KX0pLEJ1ZmZlci5hbGxvY1Vuc2FmZXx8KEJ1ZmZlci5hbGxvY1Vu''@;'; put 'put ''c2FmZT1mdW5jdGlvbih3KXtyZXR1cm4gbmV3IEJ1ZmZlcih3KX0pfWZ1bmN0aW9uIFkodyl7cmV0dXJuIGRlP0J1ZmZlci5hbGxvYyh3KTpuZXcgQXJyYXkodyl9ZnVuY3Rpb24gYih3KXtyZXR1cm4gZGU/QnVmZmVyLmFsbG9jVW5zYWZlKHcpOm5ldyBBcnJheSh3KX12YXIgeD1mdW5jdGlv''@;'; put 'put ''bihQKXtyZXR1cm4gZGU/dWUoUCwiYmluYXJ5Iik6UC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKEQpe3JldHVybiAyNTUmRC5jaGFyQ29kZUF0KDApfSl9O2Z1bmN0aW9uIE4odyl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1IilyZXR1cm4geCh3KTtmb3IodmFyIFA9bmV3IEFycmF5QnVmZmVy''@;'; put 'put ''KHcubGVuZ3RoKSxEPW5ldyBVaW50OEFycmF5KFApLGVlPTA7ZWUhPXcubGVuZ3RoOysrZWUpRFtlZV09MjU1JncuY2hhckNvZGVBdChlZSk7cmV0dXJuIFB9ZnVuY3Rpb24gRih3KXtpZihBcnJheS5pc0FycmF5KHcpKXJldHVybiB3Lm1hcChmdW5jdGlvbihlZSl7cmV0dXJuIFN0cmluZy5m''@;'; put 'put ''cm9tQ2hhckNvZGUoZWUpfSkuam9pbigiIik7Zm9yKHZhciBQPVtdLEQ9MDtEPHcubGVuZ3RoOysrRClQW0RdPVN0cmluZy5mcm9tQ2hhckNvZGUod1tEXSk7cmV0dXJuIFAuam9pbigiIil9ZnVuY3Rpb24gQyh3KXtpZih0eXBlb2YgQXJyYXlCdWZmZXI+InUiKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''VW5zdXBwb3J0ZWQiKTtpZih3IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIEMobmV3IFVpbnQ4QXJyYXkodykpO2Zvcih2YXIgUD1uZXcgQXJyYXkody5sZW5ndGgpLEQ9MDtEPHcubGVuZ3RoOysrRClQW0RdPXdbRF07cmV0dXJuIFB9dmFyIE09ZnVuY3Rpb24odyl7dmFyIFA9W107''@;'; put 'put ''cmV0dXJuIHcuZm9yRWFjaChmdW5jdGlvbihEKXtBcnJheS5pc0FycmF5KEQpP1A9UC5jb25jYXQoRCk6KHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmRCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikmJihQPVAu''@;'; put 'put ''Y29uY2F0KEMoRCkpKX0pLFB9LHk9L1x1MDAwMC9nLHA9L1tcdTAwMDEtXHUwMDA2XS9nLFM9e30sUT1mdW5jdGlvbihQKXtmdW5jdGlvbiBEKFF0KXtmb3IodmFyIHZuPSIiLFBuPVF0Lmxlbmd0aC0xO1BuPj0wOyl2bis9UXQuY2hhckF0KFBuLS0pO3JldHVybiB2bn1mdW5jdGlvbiBlZShR''@;'; put 'put ''dCx2bil7Zm9yKHZhciBQbj0iIjtQbi5sZW5ndGg8dm47KVBuKz1RdDtyZXR1cm4gUG59ZnVuY3Rpb24gb2UoUXQsdm4pe3ZhciBQbj0iIitRdDtyZXR1cm4gUG4ubGVuZ3RoPj12bj9QbjplZSgiMCIsdm4tUG4ubGVuZ3RoKStQbn1mdW5jdGlvbiBnZShRdCx2bil7dmFyIFBuPSIiK1F0O3Jl''@;'; put 'put ''dHVybiBQbi5sZW5ndGg+PXZuP1BuOmVlKCIgIix2bi1Qbi5sZW5ndGgpK1BufWZ1bmN0aW9uIF9lKFF0LHZuKXt2YXIgUG49IiIrUXQ7cmV0dXJuIFBuLmxlbmd0aD49dm4/UG46UG4rZWUoIiAiLHZuLVBuLmxlbmd0aCl9UC52ZXJzaW9uPSIxLjIwMjEwNzI2LjEiO3ZhciBqZT1NYXRoLnBv''@;'; put 'put ''dygyLDMyKTtmdW5jdGlvbiBVZShRdCx2bil7cmV0dXJuIFF0PmplfHxRdDwtamU/ZnVuY3Rpb24gdmUoUXQsdm4pe3ZhciBQbj0iIitNYXRoLnJvdW5kKFF0KTtyZXR1cm4gUG4ubGVuZ3RoPj12bj9QbjplZSgiMCIsdm4tUG4ubGVuZ3RoKStQbn0oUXQsdm4pOmZ1bmN0aW9uIE1lKFF0LHZu''@;'; put 'put ''KXt2YXIgUG49IiIrUXQ7cmV0dXJuIFBuLmxlbmd0aD49dm4/UG46ZWUoIjAiLHZuLVBuLmxlbmd0aCkrUG59KE1hdGgucm91bmQoUXQpLHZuKX1mdW5jdGlvbiBYZShRdCx2bil7cmV0dXJuIFF0Lmxlbmd0aD49Nysodm49dm58fDApJiYxMDM9PSgzMnxRdC5jaGFyQ29kZUF0KHZuKSkmJjEw''@;'; put 'put ''MT09KDMyfFF0LmNoYXJDb2RlQXQodm4rMSkpJiYxMTA9PSgzMnxRdC5jaGFyQ29kZUF0KHZuKzIpKSYmMTAxPT0oMzJ8UXQuY2hhckNvZGVBdCh2biszKSkmJjExND09KDMyfFF0LmNoYXJDb2RlQXQodm4rNCkpJiY5Nz09KDMyfFF0LmNoYXJDb2RlQXQodm4rNSkpJiYxMDg9PSgzMnxRdC5j''@;'; put 'put ''aGFyQ29kZUF0KHZuKzYpKX1mdW5jdGlvbiBpdChRdCl7Zm9yKHZhciB2bj1bXSxQbj1PYmplY3Qua2V5cyhRdCksJHI9MDskciE9PVBuLmxlbmd0aDsrKyRyKXZuW1F0W1BuWyRyXV1dPVBuWyRyXTtyZXR1cm4gdm59dmFyIGZ0PVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0s''@;'; put 'put ''WyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5Il1dLE10PVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsi''@;'; put 'put ''QSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1c3QiXSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxb''@;'; put 'put ''IkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiB1dChRdCl7UXRbMF09IkdlbmVyYWwiLFF0WzFdPSIwIixRdFsyXT0iMC4wMCIsUXRbM109IiMsIyMwIixRdFs0XT0iIywjIzAuMDAiLFF0WzldPSIwJSIsUXRbMTBdPSIwLjAwJSIsUXRbMTFdPSIwLjAwRSswMCIsUXRbMTJdPSIjID8v''@;'; put 'put ''PyIsUXRbMTNdPSIjID8/Lz8/IixRdFsxNF09Im0vZC95eSIsUXRbMTVdPSJkLW1tbS15eSIsUXRbMTZdPSJkLW1tbSIsUXRbMTddPSJtbW0teXkiLFF0WzE4XT0iaDptbSBBTS9QTSIsUXRbMTldPSJoOm1tOnNzIEFNL1BNIixRdFsyMF09Img6bW0iLFF0WzIxXT0iaDptbTpzcyIsUXRbMjJd''@;'; put 'put ''PSJtL2QveXkgaDptbSIsUXRbMzddPSIjLCMjMCA7KCMsIyMwKSIsUXRbMzhdPSIjLCMjMCA7W1JlZF0oIywjIzApIixRdFszOV09IiMsIyMwLjAwOygjLCMjMC4wMCkiLFF0WzQwXT0iIywjIzAuMDA7W1JlZF0oIywjIzAuMDApIixRdFs0NV09Im1tOnNzIixRdFs0Nl09IltoXTptbTpzcyIs''@;'; put 'put ''UXRbNDddPSJtbXNzLjAiLFF0WzQ4XT0iIyMwLjBFKzAiLFF0WzQ5XT0iQCIsUXRbNTZdPSciXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCAiaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIgIicseG4oUXQpfXZhciB3dD17fTt1dCh3dCk7dmFyIEh0PVtdLGt0PTA7Zm9yKGt0PTU7a3Q8''@;'; put 'put ''PTg7KytrdClIdFtrdF09MzIra3Q7Zm9yKGt0PTIzO2t0PD0yNjsrK2t0KUh0W2t0XT0wO2ZvcihrdD0yNztrdDw9MzE7KytrdClIdFtrdF09MTQ7Zm9yKGt0PTUwO2t0PD01ODsrK2t0KUh0W2t0XT0xNDtmb3Ioa3Q9NTk7a3Q8PTYyOysra3QpSHRba3RdPWt0LTU4O2ZvcihrdD02NztrdDw9''@;'; put 'put ''Njg7KytrdClIdFtrdF09a3QtNTg7Zm9yKGt0PTcyO2t0PD03NTsrK2t0KUh0W2t0XT1rdC01ODtmb3Ioa3Q9Njc7a3Q8PTY4Oysra3QpSHRba3RdPWt0LTU3O2ZvcihrdD03NjtrdDw9Nzg7KytrdClIdFtrdF09a3QtNTY7Zm9yKGt0PTc5O2t0PD04MTsrK2t0KUh0W2t0XT1rdC0zNDt2YXIg''@;'; put 'put ''VHQ9W107ZnVuY3Rpb24gWXQoUXQsdm4sUG4pe2Zvcih2YXIgJHI9UXQ8MD8tMToxLFhuPVF0KiRyLG5pPTAsb3I9MSxvaT0wLHlvPTEsYWk9MCxVaT0wLGVpPU1hdGguZmxvb3IoWG4pO2FpPHZuJiYob2k9KGVpPU1hdGguZmxvb3IoWG4pKSpvcituaSxVaT1laSphaSt5bywhKFhuLWVpPDVl''@;'; put 'put ''LTgpKTspWG49MS8oWG4tZWkpLG5pPW9yLG9yPW9pLHlvPWFpLGFpPVVpO2lmKFVpPnZuJiYoYWk+dm4/KFVpPXlvLG9pPW5pKTooVWk9YWksb2k9b3IpKSwhUG4pcmV0dXJuWzAsJHIqb2ksVWldO3ZhciBrYT1NYXRoLmZsb29yKCRyKm9pL1VpKTtyZXR1cm5ba2EsJHIqb2kta2EqVWksVWld''@;'; put 'put ''fWZ1bmN0aW9uIGduKFF0LHZuLFBuKXtpZihRdD4yOTU4NDY1fHxRdDwwKXJldHVybiBudWxsO3ZhciAkcj0wfFF0LFhuPU1hdGguZmxvb3IoODY0MDAqKFF0LSRyKSksbmk9MCxvcj1bXSxvaT17RDokcixUOlhuLHU6ODY0MDAqKFF0LSRyKS1Ybix5OjAsbTowLGQ6MCxIOjAsTTowLFM6MCxx''@;'; put 'put ''OjB9O2lmKE1hdGguYWJzKG9pLnUpPDFlLTYmJihvaS51PTApLHZuJiZ2bi5kYXRlMTkwNCYmKCRyKz0xNDYyKSxvaS51Pi45OTk5JiYob2kudT0wLDg2NDAwPT0rK1huJiYob2kuVD1Ybj0wLCsrJHIsKytvaS5EKSksNjA9PT0kcilvcj1Qbj9bMTMxNywxMCwyOV06WzE5MDAsMiwyOV0sbmk9''@;'; put 'put ''MztlbHNlIGlmKDA9PT0kcilvcj1Qbj9bMTMxNyw4LDI5XTpbMTkwMCwxLDBdLG5pPTY7ZWxzZXskcj42MCYmLS0kcjt2YXIgeW89bmV3IERhdGUoMTkwMCwwLDEpO3lvLnNldERhdGUoeW8uZ2V0RGF0ZSgpKyRyLTEpLG9yPVt5by5nZXRGdWxsWWVhcigpLHlvLmdldE1vbnRoKCkrMSx5by5n''@;'; put 'put ''ZXREYXRlKCldLG5pPXlvLmdldERheSgpLCRyPDYwJiYobmk9KG5pKzYpJTcpLFBuJiYobmk9ZnVuY3Rpb24gd28oUXQsdm4pe3ZuWzBdLT01ODE7dmFyIFBuPVF0LmdldERheSgpO3JldHVybiBRdDw2MCYmKFBuPShQbis2KSU3KSxQbn0oeW8sb3IpKX1yZXR1cm4gb2kueT1vclswXSxvaS5t''@;'; put 'put ''PW9yWzFdLG9pLmQ9b3JbMl0sb2kuUz1YbiU2MCxYbj1NYXRoLmZsb29yKFhuLzYwKSxvaS5NPVhuJTYwLFhuPU1hdGguZmxvb3IoWG4vNjApLG9pLkg9WG4sb2kucT1uaSxvaX1UdFs1XT1UdFs2M109JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLFR0WzZdPVR0WzY0XT0nIiQiIywjIzBf''@;'; put 'put ''KTtbUmVkXVxcKCIkIiMsIyMwXFwpJyxUdFs3XT1UdFs2NV09JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLFR0WzhdPVR0WzY2XT0nIiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyxUdFs0MV09J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0i''@;'; put 'put ''Xyk7XyhAXyknLFR0WzQyXT0nXygiJCIqICMsIyMwXyk7XygiJCIqIFxcKCMsIyMwXFwpO18oIiQiKiAiLSJfKTtfKEBfKScsVHRbNDNdPSdfKCogIywjIzAuMDBfKTtfKCogXFwoIywjIzAuMDBcXCk7XygqICItIj8/Xyk7XyhAXyknLFR0WzQ0XT0nXygiJCIqICMsIyMwLjAwXyk7XygiJCIq''@;'; put 'put ''IFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJyxQLnBhcnNlX2RhdGVfY29kZT1nbjt2YXIgcW49bmV3IERhdGUoMTg5OSwxMSwzMSwwLDAsMCksZm49cW4uZ2V0VGltZSgpLEtuPW5ldyBEYXRlKDE5MDAsMiwxLDAsMCwwKTtmdW5jdGlvbiB6bihRdCx2bil7dmFyIFBuPVF0''@;'; put 'put ''LmdldFRpbWUoKTtyZXR1cm4gdm4/UG4tPTEyNjIzMDRlNTpRdD49S24mJihQbis9ODY0ZTUpLChQbi0oZm4rNmU0KihRdC5nZXRUaW1lem9uZU9mZnNldCgpLXFuLmdldFRpbWV6b25lT2Zmc2V0KCkpKSkvODY0ZTV9dmFyIE9uPSIiLGVyPXsiZW4tdXMiOnt5OiJ5IixkOiJkIiwiLCI6Iiwi''@;'; put 'put ''LCIuIjoiLiIsZGF0ZToiXy8ifSwiZGUtZGUiOnt5OiJqIixkOiJ0IiwiLCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy4ifSwiaXQtaXQiOnt5OiJ5IixkOiJkIiwiLCI6Ii4iLCIuIjoiLCIsZGF0ZToiXy8ifX0sdHI9ZXJbT24udG9Mb3dlckNhc2UoKV18fGVyWyJlbi11cyJdLFluPWl0KHRyKSxq''@;'; put 'put ''cj0iJCIsbGk9IiIsdGk9IiwiLGZyPSIuIixEbj0iLyI7ZnVuY3Rpb24geG4oUXQpe3N3aXRjaCgoT258fCIiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInpoLXR3IjpRdFsyN109IlskLTQwNF1lL20vZCIsUXRbMjhdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFsyOV09''@;'; put 'put ''J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzMwXT0nbSIvImQiLyJ5eScsUXRbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzMyXT0naGgiXHU2NjQyIm1tIlx1NTIwNiInLFF0WzMzXT0naGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIi''@;'; put 'put ''JyxRdFszNF09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLFF0WzM1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLFF0WzM2XT0iWyQtNDA0XWUvbS9kIixRdFs1MF09IlskLTQwNF1lL20v''@;'; put 'put ''ZCIsUXRbNTFdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFs1Ml09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLFF0WzUzXT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1Nzlk''@;'; put 'put ''MiInLFF0WzU0XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicsUXRbNTVdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYiJyxRdFs1Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5''@;'; put 'put ''ZDIiJyxRdFs1N109IlskLTQwNF1lL20vZCIsUXRbNThdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJzticmVhaztjYXNlInpoLWNuIjpRdFsyN109J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsUXRbMjhdPSdtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzI5XT0nbSJcdTY3MDgi''@;'; put 'put ''ZCJcdTY1ZTUiJyxRdFszMF09J20iLSJkIi0ieXknLFF0WzMxXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFszMl09J2giXHU2NWY2Im1tIlx1NTIwNiInLFF0WzMzXT0naCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLFF0WzM0XT0nXHU0ZTBhXHU1MzQ4L1x1NGUw''@;'; put 'put ''Ylx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxRdFszNV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLFF0WzM2XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxRdFs1MF09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsUXRbNTFdPSdt''@;'; put 'put ''Ilx1NjcwOCJkIlx1NjVlNSInLFF0WzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxRdFs1M109J20iXHU2NzA4ImQiXHU2NWU1IicsUXRbNTRdPSdtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzU1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYiJyxRdFs1''@;'; put 'put ''Nl09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaCJcdTY1ZjYibW0iXHU1MjA2InNzIlx1NzlkMiInLFF0WzU3XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxRdFs1OF09J20iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJqYS1qcCI6UXRbMjddPSdbJC00MTFdZ2UiLiJtIi4iZCcs''@;'; put 'put ''UXRbMjhdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFsyOV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzMwXT0nbSIvImQiLyJ5eScsUXRbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzMyXT0naCJc''@;'; put 'put ''dTY2NDIibW0iXHU1MjA2IicsUXRbMzNdPSdoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicsUXRbMzRdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLFF0WzM1XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFszNl09J1skLTQxMV1nZSIuIm0iLiJkJyxRdFs1MF09J1skLTQxMV1nZSIuIm0i''@;'; put 'put ''LiJkJyxRdFs1MV09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzUyXT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxRdFs1M109J20iXHU2NzA4ImQiXHU2NWU1IicsUXRbNTRdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxRdFs1NV09''@;'; put 'put ''J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicsUXRbNTZdPSdtIlx1NjcwOCJkIlx1NjVlNSInLFF0WzU3XT0nWyQtNDExXWdlIi4ibSIuImQnLFF0WzU4XT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1Iic7YnJlYWs7Y2FzZSJrby1rciI6UXRbMjddPSd5eXl5Ilx1NWU3NCIg''@;'; put 'put ''bW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxRdFsyOF09Im1tLWRkIixRdFsyOV09Im1tLWRkIixRdFszMF09Im1tLWRkLXl5IixRdFszMV09J3l5eXkiXHViMTQ0IiBtbSJcdWM2ZDQiIGRkIlx1Yzc3YyInLFF0WzMyXT0naCJcdWMyZGMiIG1tIlx1YmQ4NCInLFF0WzMzXT0naCJcdWMyZGMiIG1t''@;'; put 'put ''Ilx1YmQ4NCIgc3MiXHVjZDA4IicsUXRbMzRdPSJ5eXl5LW1tLWRkIixRdFszNV09Inl5eXktbW0tZGQiLFF0WzM2XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicsUXRbNTBdPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxRdFs1MV09Im1tLWRkIixR''@;'; put 'put ''dFs1Ml09Inl5eXktbW0tZGQiLFF0WzUzXT0ieXl5eS1tbS1kZCIsUXRbNTRdPSJtbS1kZCIsUXRbNTVdPSJ5eXl5LW1tLWRkIixRdFs1Nl09Inl5eXktbW0tZGQiLFF0WzU3XT0neXl5eSJcdTVlNzQiIG1tIlx1NjcwOCIgZGQiXHU2NWU1IicsUXRbNThdPSJtbS1kZCI7YnJlYWs7Y2FzZSJ0''@;'; put 'put ''aC10aCI6UXRbNTldPScidCIwJyxRdFs2MF09JyJ0IjAuMDAnLFF0WzYxXT0nInQiIywjIzAnLFF0WzYyXT0nInQiIywjIzAuMDAnLFF0WzY3XT0idDAlIixRdFs2OF09InQwLjAwJSIsUXRbNjldPSJ0IyA/Lz8iLFF0WzcwXT0idCMgPz8vPz8iLFF0WzcxXT0nXHUwZTI3Ii8iXHUwZTE0Ii8i''@;'; put 'put ''XHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiJyxRdFs3Ml09J1x1MGUyNyItIlx1MGUxNFx1MGUxNFx1MGUxNCItIlx1MGUxYlx1MGUxYicsUXRbNzNdPSdcdTBlMjciLSJcdTBlMTRcdTBlMTRcdTBlMTQnLFF0Wzc0XT0nXHUwZTE0XHUwZTE0XHUwZTE0Ii0iXHUwZTFiXHUwZTFiJyxRdFs3NV09''@;'; put 'put ''J1x1MGUwYSI6Ilx1MGUxOVx1MGUxOScsUXRbNzZdPSdcdTBlMGEiOiJcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLFF0Wzc3XT0nXHUwZTI3Ii8iXHUwZTE0Ii8iXHUwZTFiXHUwZTFiXHUwZTFiXHUwZTFiIFx1MGUwYSI6Ilx1MGUxOVx1MGUxOScsUXRbNzhdPSdcdTBlMTlcdTBlMTki''@;'; put 'put ''OiJcdTBlMTdcdTBlMTcnLFF0Wzc5XT0nW1x1MGUwYV1cdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcnLFF0WzgwXT0nXHUwZTE5XHUwZTE5IjoiXHUwZTE3XHUwZTE3LjAnLFF0WzgxXT0iZC9tL2JiIn19UC5fZ2VuZXJhbF9pbnQ9ZnVuY3Rpb24gQ2koUXQpe3JldHVybiBRdC50b1N0cmlu''@;'; put 'put ''ZygxMCl9O3ZhciB6cj1mdW5jdGlvbigpe3ZhciB2bj0vKD86XC4wKnwoXC5cZCpbMS05XSkwKykkLztmdW5jdGlvbiBQbihhaSl7cmV0dXJuLTE9PWFpLmluZGV4T2YoIi4iKT9haTphaS5yZXBsYWNlKHZuLCIkMSIpfXZhciAkcj0vKD86XC4wKnwoXC5cZCpbMS05XSkwKylbRWVdLyxYbj0v''@;'; put 'put ''KEVbKy1dKShcZCkkLztyZXR1cm4gZnVuY3Rpb24oVWkpe3ZhciBlaT1mdW5jdGlvbiB5byhhaSl7dmFyIGVpLFVpPU1hdGguZmxvb3IoTWF0aC5sb2coTWF0aC5hYnMoYWkpKSpNYXRoLkxPRzEwRSk7cmV0dXJuIGVpPVVpPj0tNCYmVWk8PS0xP2FpLnRvUHJlY2lzaW9uKDEwK1VpKTpNYXRo''@;'; put 'put ''LmFicyhVaSk8PTk/ZnVuY3Rpb24gb3IoYWkpe3ZhciBVaT1haTwwPzEyOjExLGVpPVBuKGFpLnRvRml4ZWQoMTIpKTtyZXR1cm4gZWkubGVuZ3RoPD1VaXx8KGVpPWFpLnRvUHJlY2lzaW9uKDEwKSkubGVuZ3RoPD1VaT9laTphaS50b0V4cG9uZW50aWFsKDUpfShhaSk6MTA9PT1VaT9haS50''@;'; put 'put ''b0ZpeGVkKDEwKS5zdWJzdHIoMCwxMik6ZnVuY3Rpb24gb2koYWkpe3ZhciBVaT1QbihhaS50b0ZpeGVkKDExKSk7cmV0dXJuIFVpLmxlbmd0aD4oYWk8MD8xMjoxMSl8fCIwIj09PVVpfHwiLTAiPT09VWk/YWkudG9QcmVjaXNpb24oNik6VWl9KGFpKSxQbihmdW5jdGlvbiBuaShhaSl7cmV0''@;'; put 'put ''dXJuLTE9PWFpLmluZGV4T2YoIkUiKT9haTphaS5yZXBsYWNlKCRyLCIkMUUiKS5yZXBsYWNlKFhuLCIkMTAkMiIpfShlaS50b1VwcGVyQ2FzZSgpKSl9KFVpKTtyZXR1cm4iLCI9PT10aSYmIi4iPT09ZnI/ZWk6ZWkucmVwbGFjZSgvWywuXS9nLGZ1bmN0aW9uKGthKXtyZXR1cm4iLCI9PWth''@;'; put 'put ''P3RpOmZyfSl9fSgpO2Z1bmN0aW9uIHppKFF0LHZuKXtzd2l0Y2godHlwZW9mIFF0KXtjYXNlInN0cmluZyI6cmV0dXJuIFF0O2Nhc2UiYm9vbGVhbiI6cmV0dXJuIFF0PyJUUlVFIjoiRkFMU0UiO2Nhc2UibnVtYmVyIjpyZXR1cm4oMHxRdCk9PT1RdD9RdC50b1N0cmluZygxMCk6enIoUXQp''@;'; put 'put ''O2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYobnVsbD09UXQpcmV0dXJuIiI7aWYoUXQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiB1YygxNCx6bihRdCx2biYmdm4uZGF0ZTE5MDQpLHZuKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVy''@;'; put 'put ''YWwgZm9ybWF0OiAiK1F0KX1QLl9nZW5lcmFsX251bT16cixQLl9nZW5lcmFsPXppO3ZhciBPaT0iXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5Ii5zcGxpdCgiIik7ZnVuY3Rpb24gWG8oUXQsdm4sUG4sJHIpe3ZhciB5byxYbj0i''@;'; put 'put ''IixuaT0wLG9yPTAsb2k9UG4ueSxhaT0wO3N3aXRjaChRdCl7Y2FzZSA5ODpvaT1Qbi55KzU0MztjYXNlIDEyMTpzd2l0Y2godm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOnlvPW9pJTEwMCxhaT0yO2JyZWFrO2RlZmF1bHQ6eW89b2klMWU0LGFpPTR9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKHZu''@;'; put 'put ''Lmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjp5bz1Qbi5tLGFpPXZuLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIE10W1BuLm0tMV1bMV07Y2FzZSA1OnJldHVybiBNdFtQbi5tLTFdWzBdO2RlZmF1bHQ6cmV0dXJuIE10W1BuLm0tMV1bMl19YnJlYWs7Y2FzZSAxMDA6c3dpdGNoKHZuLmxlbmd0''@;'; put 'put ''aCl7Y2FzZSAxOmNhc2UgMjp5bz1Qbi5kLGFpPXZuLmxlbmd0aDticmVhaztjYXNlIDM6cmV0dXJuIGZ0W1BuLnFdWzBdO2RlZmF1bHQ6cmV0dXJuIGZ0W1BuLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaCh2bi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6eW89MSsoUG4uSCsxMSklMTIsYWk9''@;'; put 'put ''dm4ubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGhvdXIgZm9ybWF0OiAiK3ZufWJyZWFrO2Nhc2UgNzI6c3dpdGNoKHZuLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjp5bz1Qbi5ILGFpPXZuLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIit2bn1icmVh''@;'; put 'put ''aztjYXNlIDc3OnN3aXRjaCh2bi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6eW89UG4uTSxhaT12bi5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgbWludXRlIGZvcm1hdDogIit2bn1icmVhaztjYXNlIDExNTppZigicyIhPXZuJiYic3MiIT12biYmIi4wIiE9dm4mJiIuMDAiIT12biYm''@;'; put 'put ''Ii4wMDAiIT12bil0aHJvdyJiYWQgc2Vjb25kIGZvcm1hdDogIit2bjtyZXR1cm4gMCE9PVBuLnV8fCJzIiE9dm4mJiJzcyIhPXZuPyhvcj0kcj49Mj8zPT09JHI/MWUzOjEwMDoxPT09JHI/MTA6MSwobmk9TWF0aC5yb3VuZChvciooUG4uUytQbi51KSkpPj02MCpvciYmKG5pPTApLCJzIj09''@;'; put 'put ''PXZuPzA9PT1uaT8iMCI6IiIrbmkvb3I6KFhuPW9lKG5pLDIrJHIpLCJzcyI9PT12bj9Ybi5zdWJzdHIoMCwyKToiLiIrWG4uc3Vic3RyKDIsdm4ubGVuZ3RoLTEpKSk6b2UoUG4uUyx2bi5sZW5ndGgpO2Nhc2UgOTA6c3dpdGNoKHZuKXtjYXNlIltoXSI6Y2FzZSJbaGhdIjpjYXNlIltcdTBl''@;'; put 'put ''MGFdIjpjYXNlIltcdTBlMGFcdTBlMGFdIjp5bz0yNCpQbi5EK1BuLkg7YnJlYWs7Y2FzZSJbbV0iOmNhc2UiW21tXSI6Y2FzZSJbXHUwZTE5XSI6Y2FzZSJbXHUwZTE5XHUwZTE5XSI6eW89NjAqKDI0KlBuLkQrUG4uSCkrUG4uTTticmVhaztjYXNlIltzXSI6Y2FzZSJbc3NdIjpjYXNlIltc''@;'; put 'put ''dTBlMTddIjpjYXNlIltcdTBlMTdcdTBlMTddIjp5bz02MCooNjAqKDI0KlBuLkQrUG4uSCkrUG4uTSkrTWF0aC5yb3VuZChQbi5TK1BuLnUpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGFic3RpbWUgZm9ybWF0OiAiK3ZufWFpPTM9PT12bi5sZW5ndGg/MToyO2JyZWFrO2Nhc2UgMTAxOnlv''@;'; put 'put ''PW9pLGFpPTE7YnJlYWs7Y2FzZSAzNjIzOnlvPVBuLmQsYWk9dm4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzYwNDpzd2l0Y2godm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOnlvPVBuLm0sYWk9dm4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gTXRbUG4ubS0xXVsxXTtjYXNlIDU6cmV0dXJuIE10''@;'; put 'put ''W1BuLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gTXRbUG4ubS0xXVsyXX1icmVhaztjYXNlIDM2MTE6c3dpdGNoKG9pPVBuLnkrNTQzLHZuLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjp5bz1vaSUxMDAsYWk9MjticmVhaztkZWZhdWx0OnlvPW9pJTFlNCxhaT00fWJyZWFrO2Nhc2UgMzU5NDp5bz1Q''@;'; put 'put ''bi5ILGFpPXZuLmxlbmd0aDticmVhaztjYXNlIDM2MDk6eW89UG4uTSxhaT12bi5sZW5ndGg7YnJlYWs7Y2FzZSAzNjA3OnlvPVBuLlMsYWk9dm4ubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3cgUXQudG9TdHJpbmcoMTYpfXZhciBVaT1haT4wP29lKHlvLGFpKToiIjtyZXR1cm4oOTA9PVF0''@;'; put 'put ''P3ZuLmNoYXJDb2RlQXQoMSk8MzU4NDpRdDwzNTg0KT9VaTpVaS5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKGVpKXtyZXR1cm4gT2lbK2VpXX0pfWZ1bmN0aW9uIGZvKFF0KXtpZihRdC5sZW5ndGg8PTMpcmV0dXJuIFF0O2Zvcih2YXIgUG49UXQubGVuZ3RoJTMsJHI9UXQuc3Vic3RyKDAs''@;'; put 'put ''UG4pO1BuIT1RdC5sZW5ndGg7UG4rPTMpJHIrPSgkci5sZW5ndGg+MD8iLCI6IiIpK1F0LnN1YnN0cihQbiwzKTtyZXR1cm4gJHJ9dmFyIFJvPWZ1bmN0aW9uKCl7dmFyIHZuPS8lL2c7ZnVuY3Rpb24gWG4odW4sQnQpe3ZhciAkdCxkbj11bi5pbmRleE9mKCJFIiktdW4uaW5kZXhPZigiLiIp''@;'; put 'put ''LTE7aWYodW4ubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PUJ0KXJldHVybiIwLjBFKzAiO2lmKEJ0PDApcmV0dXJuIi0iK1huKHVuLC1CdCk7dmFyIEluPXVuLmluZGV4T2YoIi4iKTstMT09PUluJiYoSW49dW4uaW5kZXhPZigiRSIpKTt2YXIgbnI9TWF0aC5mbG9vcihNYXRoLmxvZyhC''@;'; put 'put ''dCkqTWF0aC5MT0cxMEUpJUluO2lmKG5yPDAmJihucis9SW4pLC0xPT09KCR0PShCdC9NYXRoLnBvdygxMCxucikpLnRvUHJlY2lzaW9uKGRuKzErKEluK25yKSVJbikpLmluZGV4T2YoImUiKSl7dmFyIHlyPU1hdGguZmxvb3IoTWF0aC5sb2coQnQpKk1hdGguTE9HMTBFKTtmb3IoLTE9PT0k''@;'; put 'put ''dC5pbmRleE9mKCIuIik/JHQ9JHQuY2hhckF0KDApKyIuIiskdC5zdWJzdHIoMSkrIkUrIisoeXItJHQubGVuZ3RoK25yKTokdCs9IkUrIisoeXItbnIpOyIwLiI9PT0kdC5zdWJzdHIoMCwyKTspJHQ9KCR0PSR0LmNoYXJBdCgwKSskdC5zdWJzdHIoMixJbikrIi4iKyR0LnN1YnN0cigyK0lu''@;'; put 'put ''KSkucmVwbGFjZSgvXjArKFsxLTldKS8sIiQxIikucmVwbGFjZSgvXjArXC4vLCIwLiIpOyR0PSR0LnJlcGxhY2UoL1wrLS8sIi0iKX0kdD0kdC5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKFVyLEZyLGtpLGZpKXtyZXR1cm4gRnIra2krZmkuc3Vic3RyKDAs''@;'; put 'put ''KEluK25yKSVJbikrIi4iK2ZpLnN1YnN0cihucikrIkUifSl9ZWxzZSAkdD1CdC50b0V4cG9uZW50aWFsKGRuKTtyZXR1cm4gdW4ubWF0Y2goL0VcKzAwJC8pJiYkdC5tYXRjaCgvZVsrLV1cZCQvKSYmKCR0PSR0LnN1YnN0cigwLCR0Lmxlbmd0aC0xKSsiMCIrJHQuY2hhckF0KCR0Lmxlbmd0''@;'; put 'put ''aC0xKSksdW4ubWF0Y2goL0VcLS8pJiYkdC5tYXRjaCgvZVwrLykmJigkdD0kdC5yZXBsYWNlKC9lXCsvLCJlIikpLCR0LnJlcGxhY2UoImUiLCJFIil9dmFyIG5pPS8jIChcPyspKCA/KVwvKCA/KShcZCspLyx5bz0vXiMqMCpcLihbMCNdKykvLGFpPS9cKS4qWzAjXS8sVWk9L1woIyMjXCkg''@;'; put 'put ''IyMjXFw/LSMjIyMvO2Z1bmN0aW9uIGVpKHVuKXtmb3IodmFyICR0LEJ0PSIiLGRuPTA7ZG4hPXVuLmxlbmd0aDsrK2RuKXN3aXRjaCgkdD11bi5jaGFyQ29kZUF0KGRuKSl7Y2FzZSAzNTpicmVhaztjYXNlIDYzOkJ0Kz0iICI7YnJlYWs7Y2FzZSA0ODpCdCs9IjAiO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''QnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoJHQpfXJldHVybiBCdH1mdW5jdGlvbiBrYSh1bixCdCl7dmFyICR0PU1hdGgucG93KDEwLEJ0KTtyZXR1cm4iIitNYXRoLnJvdW5kKHVuKiR0KS8kdH1mdW5jdGlvbiB3YSh1bixCdCl7aWYoQnQ+MTEpcmV0dXJuIHdhKHVuLDExKSpNYXRoLnBvdygx''@;'; put 'put ''MCxCdC0xMSk7dmFyICR0PXVuLU1hdGguZmxvb3IodW4pLGRuPU1hdGgucG93KDEwLEJ0KTtyZXR1cm4gQnQ8KCIiK01hdGgucm91bmQoJHQqZG4pKS5sZW5ndGg/MDpNYXRoLnJvdW5kKCR0KmRuKX1mdW5jdGlvbiBobCh1bixCdCwkdCl7aWYoNDA9PT11bi5jaGFyQ29kZUF0KDApJiYhQnQu''@;'; put 'put ''bWF0Y2goYWkpKXt2YXIgZG49QnQucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuICR0Pj0wP2hsKCJuIixkbiwkdCk6IigiK2hsKCJuIixkbiwtJHQpKyIpIn1pZig0ND09PUJ0LmNoYXJDb2RlQXQoQnQubGVuZ3RoLTEpKXJldHVy''@;'; put 'put ''biBmdW5jdGlvbiAkcih1bixCdCwkdCl7Zm9yKHZhciBkbj1CdC5sZW5ndGgtMTs0ND09PUJ0LmNoYXJDb2RlQXQoZG4tMSk7KS0tZG47cmV0dXJuIFJvKHVuLEJ0LnN1YnN0cigwLGRuKSwkdC9NYXRoLnBvdygxMCwzKihCdC5sZW5ndGgtZG4pKSl9KHVuLEJ0LCR0KTtpZigtMSE9PUJ0Lmlu''@;'; put 'put ''ZGV4T2YoIiUiKSlyZXR1cm4gZnVuY3Rpb24gUG4odW4sQnQsJHQpe3ZhciBkbj1CdC5yZXBsYWNlKHZuLCIiKSxJbj1CdC5sZW5ndGgtZG4ubGVuZ3RoO3JldHVybiBSbyh1bixkbiwkdCpNYXRoLnBvdygxMCwyKkluKSkrZWUoIiUiLEluKX0odW4sQnQsJHQpO2lmKC0xIT09QnQuaW5kZXhP''@;'; put 'put ''ZigiRSIpKXJldHVybiBYbihCdCwkdCk7aWYoMzY9PT1CdC5jaGFyQ29kZUF0KDApKXJldHVybiIkIitobCh1bixCdC5zdWJzdHIoIiAiPT1CdC5jaGFyQXQoMSk/MjoxKSwkdCk7dmFyIEluLG5yLHlyLFVyLEZyPU1hdGguYWJzKCR0KSxraT0kdDwwPyItIjoiIjtpZihCdC5tYXRjaCgvXjAw''@;'; put 'put ''KyQvKSlyZXR1cm4ga2krVWUoRnIsQnQubGVuZ3RoKTtpZihCdC5tYXRjaCgvXlsjP10rJC8pKXJldHVybiIwIj09PShJbj1VZSgkdCwwKSkmJihJbj0iIiksSW4ubGVuZ3RoPkJ0Lmxlbmd0aD9JbjplaShCdC5zdWJzdHIoMCxCdC5sZW5ndGgtSW4ubGVuZ3RoKSkrSW47aWYobnI9QnQubWF0''@;'; put 'put ''Y2gobmkpKXJldHVybiBmdW5jdGlvbiBvcih1bixCdCwkdCl7dmFyIGRuPXBhcnNlSW50KHVuWzRdLDEwKSxJbj1NYXRoLnJvdW5kKEJ0KmRuKSxucj1NYXRoLmZsb29yKEluL2RuKSx5cj1Jbi1ucipkbixVcj1kbjtyZXR1cm4gJHQrKDA9PT1ucj8iIjoiIitucikrIiAiKygwPT09eXI/ZWUo''@;'; put 'put ''IiAiLHVuWzFdLmxlbmd0aCsxK3VuWzRdLmxlbmd0aCk6Z2UoeXIsdW5bMV0ubGVuZ3RoKSt1blsyXSsiLyIrdW5bM10rb2UoVXIsdW5bNF0ubGVuZ3RoKSl9KG5yLEZyLGtpKTtpZihCdC5tYXRjaCgvXiMrMCskLykpcmV0dXJuIGtpK1VlKEZyLEJ0Lmxlbmd0aC1CdC5pbmRleE9mKCIwIikp''@;'; put 'put ''O2lmKG5yPUJ0Lm1hdGNoKHlvKSlyZXR1cm4gSW49a2EoJHQsbnJbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitlaShuclsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK2VpKG5yWzFdKSkucmVwbGFjZSgvXC4oXGQqKSQvLGZ1bmN0aW9uKCRvLHJpKXtyZXR1cm4iLiIrcmkr''@;'; put 'put ''ZWUoIjAiLGVpKG5yWzFdKS5sZW5ndGgtcmkubGVuZ3RoKX0pLC0xIT09QnQuaW5kZXhPZigiMC4iKT9JbjpJbi5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKEJ0PUJ0LnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksbnI9QnQubWF0Y2goL14oMCopXC4oIyopJC8pKXJldHVybiBraStrYShGcixu''@;'; put 'put ''clsyXS5sZW5ndGgpLnJlcGxhY2UoL1wuKFxkKlsxLTldKTAqJC8sIi4kMSIpLnJlcGxhY2UoL14oLT9cZCopJC8sIiQxLiIpLnJlcGxhY2UoL14wXC4vLG5yWzFdLmxlbmd0aD8iMC4iOiIuIik7aWYobnI9QnQubWF0Y2goL14jezEsM30sIyMwKFwuPykkLykpcmV0dXJuIGtpK2ZvKFVlKEZy''@;'; put 'put ''LDApKTtpZihucj1CdC5tYXRjaCgvXiMsIyMwXC4oWyMwXSowKSQvKSlyZXR1cm4gJHQ8MD8iLSIraGwodW4sQnQsLSR0KTpmbygiIisoTWF0aC5mbG9vcigkdCkrZnVuY3Rpb24gQ3ModW4sQnQpe3JldHVybiBCdDwoIiIrTWF0aC5yb3VuZCgodW4tTWF0aC5mbG9vcih1bikpKk1hdGgucG93''@;'; put 'put ''KDEwLEJ0KSkpLmxlbmd0aD8xOjB9KCR0LG5yWzFdLmxlbmd0aCkpKSsiLiIrb2Uod2EoJHQsbnJbMV0ubGVuZ3RoKSxuclsxXS5sZW5ndGgpO2lmKG5yPUJ0Lm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBobCh1bixCdC5yZXBsYWNlKC9eIywjKiwvLCIiKSwkdCk7aWYobnI9QnQubWF0Y2go''@;'; put 'put ''L14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIEluPUQoaGwodW4sQnQucmVwbGFjZSgvW1xcLV0vZywiIiksJHQpKSx5cj0wLEQoRChCdC5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKCRvKXtyZXR1cm4geXI8SW4ubGVuZ3RoP0luLmNoYXJBdCh5''@;'; put 'put ''cisrKToiMCI9PT0kbz8iMCI6IiJ9KSk7aWYoQnQubWF0Y2goVWkpKXJldHVybiIoIisoSW49aGwodW4sIiMjIyMjIyMjIyMiLCR0KSkuc3Vic3RyKDAsMykrIikgIitJbi5zdWJzdHIoMywzKSsiLSIrSW4uc3Vic3RyKDYpO3ZhciBmaT0iIjtpZihucj1CdC5tYXRjaCgvXihbIzA/XSspKCA/''@;'; put 'put ''KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIHlyPU1hdGgubWluKG5yWzRdLmxlbmd0aCw3KSxVcj1ZdChGcixNYXRoLnBvdygxMCx5ciktMSwhMSksSW49IiIra2ksIiAiPT0oZmk9Um8oIm4iLG5yWzFdLFVyWzFdKSkuY2hhckF0KGZpLmxlbmd0aC0xKSYmKGZpPWZpLnN1YnN0cigwLGZpLmxl''@;'; put 'put ''bmd0aC0xKSsiMCIpLEluKz1maStuclsyXSsiLyIrbnJbM10sKGZpPV9lKFVyWzJdLHlyKSkubGVuZ3RoPG5yWzRdLmxlbmd0aCYmKGZpPWVpKG5yWzRdLnN1YnN0cihucls0XS5sZW5ndGgtZmkubGVuZ3RoKSkrZmkpLEluKz1maTtpZihucj1CdC5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8o''@;'; put 'put ''ID8pKFsjMD9dKykvKSlyZXR1cm4geXI9TWF0aC5taW4oTWF0aC5tYXgobnJbMV0ubGVuZ3RoLG5yWzRdLmxlbmd0aCksNyksa2krKChVcj1ZdChGcixNYXRoLnBvdygxMCx5ciktMSwhMCkpWzBdfHwoVXJbMV0/IiI6IjAiKSkrIiAiKyhVclsxXT9nZShVclsxXSx5cikrbnJbMl0rIi8iK25y''@;'; put 'put ''WzNdK19lKFVyWzJdLHlyKTplZSgiICIsMip5cisxK25yWzJdLmxlbmd0aCtuclszXS5sZW5ndGgpKTtpZihucj1CdC5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gSW49VWUoJHQsMCksQnQubGVuZ3RoPD1Jbi5sZW5ndGg/SW46ZWkoQnQuc3Vic3RyKDAsQnQubGVuZ3RoLUluLmxlbmd0aCkp''@;'; put 'put ''K0luO2lmKG5yPUJ0Lm1hdGNoKC9eKFsjMD9dKylcLihbIzBdKykkLykpe0luPSIiKyR0LnRvRml4ZWQoTWF0aC5taW4obnJbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLywiJDEiKSx5cj1Jbi5pbmRleE9mKCIuIik7dmFyIEVvPUJ0LmluZGV4T2YoIi4iKS15cixnbz1CdC5s''@;'; put 'put ''ZW5ndGgtSW4ubGVuZ3RoLUVvO3JldHVybiBlaShCdC5zdWJzdHIoMCxFbykrSW4rQnQuc3Vic3RyKEJ0Lmxlbmd0aC1nbykpfWlmKG5yPUJ0Lm1hdGNoKC9eMDAsMDAwXC4oWyMwXSowKSQvKSlyZXR1cm4geXI9d2EoJHQsbnJbMV0ubGVuZ3RoKSwkdDwwPyItIitobCh1bixCdCwtJHQpOmZv''@;'; put 'put ''KGZ1bmN0aW9uIHFzKHVuKXtyZXR1cm4gdW48MjE0NzQ4MzY0NyYmdW4+LTIxNDc0ODM2NDg/IiIrKHVuPj0wPzB8dW46dW4tMXwwKToiIitNYXRoLmZsb29yKHVuKX0oJHQpKS5yZXBsYWNlKC9eXGQsXGR7M30kLywiMCQmIikucmVwbGFjZSgvXlxkKiQvLGZ1bmN0aW9uKCRvKXtyZXR1cm4i''@;'; put 'put ''MDAsIisoJG8ubGVuZ3RoPDM/b2UoMCwzLSRvLmxlbmd0aCk6IiIpKyRvfSkrIi4iK29lKHlyLG5yWzFdLmxlbmd0aCk7c3dpdGNoKEJ0KXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBobCh1biwiIywjIzAuMDAiLCR0KTtjYXNlIiMjIywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMjIjp2''@;'; put 'put ''YXIgQmk9Zm8oVWUoRnIsMCkpO3JldHVybiIwIiE9PUJpP2tpK0JpOiIiO2Nhc2UiIyMjLCMjIy4wMCI6cmV0dXJuIGhsKHVuLCIjIyMsIyMwLjAwIiwkdCkucmVwbGFjZSgvXjBcLi8sIi4iKTtjYXNlIiMsIyMjLjAwIjpyZXR1cm4gaGwodW4sIiMsIyMwLjAwIiwkdCkucmVwbGFjZSgvXjBc''@;'; put 'put ''Li8sIi4iKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8IitCdCsifCIpfWZ1bmN0aW9uIGxuKHVuLEJ0KXt2YXIgJHQsZG49dW4uaW5kZXhPZigiRSIpLXVuLmluZGV4T2YoIi4iKS0xO2lmKHVuLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZigwPT1CdClyZXR1cm4iMC4w''@;'; put 'put ''RSswIjtpZihCdDwwKXJldHVybiItIitsbih1biwtQnQpO3ZhciBJbj11bi5pbmRleE9mKCIuIik7LTE9PT1JbiYmKEluPXVuLmluZGV4T2YoIkUiKSk7dmFyIG5yPU1hdGguZmxvb3IoTWF0aC5sb2coQnQpKk1hdGguTE9HMTBFKSVJbjtpZihucjwwJiYobnIrPUluKSwhKCR0PShCdC9NYXRo''@;'; put 'put ''LnBvdygxMCxucikpLnRvUHJlY2lzaW9uKGRuKzErKEluK25yKSVJbikpLm1hdGNoKC9bRWVdLykpe3ZhciB5cj1NYXRoLmZsb29yKE1hdGgubG9nKEJ0KSpNYXRoLkxPRzEwRSk7LTE9PT0kdC5pbmRleE9mKCIuIik/JHQ9JHQuY2hhckF0KDApKyIuIiskdC5zdWJzdHIoMSkrIkUrIisoeXIt''@;'; put 'put ''JHQubGVuZ3RoK25yKTokdCs9IkUrIisoeXItbnIpLCR0PSR0LnJlcGxhY2UoL1wrLS8sIi0iKX0kdD0kdC5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKFVyLEZyLGtpLGZpKXtyZXR1cm4gRnIra2krZmkuc3Vic3RyKDAsKEluK25yKSVJbikrIi4iK2ZpLnN1''@;'; put 'put ''YnN0cihucikrIkUifSl9ZWxzZSAkdD1CdC50b0V4cG9uZW50aWFsKGRuKTtyZXR1cm4gdW4ubWF0Y2goL0VcKzAwJC8pJiYkdC5tYXRjaCgvZVsrLV1cZCQvKSYmKCR0PSR0LnN1YnN0cigwLCR0Lmxlbmd0aC0xKSsiMCIrJHQuY2hhckF0KCR0Lmxlbmd0aC0xKSksdW4ubWF0Y2goL0VcLS8p''@;'; put 'put ''JiYkdC5tYXRjaCgvZVwrLykmJigkdD0kdC5yZXBsYWNlKC9lXCsvLCJlIikpLCR0LnJlcGxhY2UoImUiLCJFIil9ZnVuY3Rpb24gQ24odW4sQnQsJHQpe2lmKDQwPT09dW4uY2hhckNvZGVBdCgwKSYmIUJ0Lm1hdGNoKGFpKSl7dmFyIGRuPUJ0LnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNl''@;'; put 'put ''KC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiAkdD49MD9DbigibiIsZG4sJHQpOiIoIitDbigibiIsZG4sLSR0KSsiKSJ9aWYoNDQ9PT1CdC5jaGFyQ29kZUF0KEJ0Lmxlbmd0aC0xKSlyZXR1cm4gZnVuY3Rpb24gajIodW4sQnQsJHQpe2Zvcih2YXIgZG49QnQubGVuZ3RoLTE7''@;'; put 'put ''NDQ9PT1CdC5jaGFyQ29kZUF0KGRuLTEpOyktLWRuO3JldHVybiBSbyh1bixCdC5zdWJzdHIoMCxkbiksJHQvTWF0aC5wb3coMTAsMyooQnQubGVuZ3RoLWRuKSkpfSh1bixCdCwkdCk7aWYoLTEhPT1CdC5pbmRleE9mKCIlIikpcmV0dXJuIGZ1bmN0aW9uIFhwKHVuLEJ0LCR0KXt2YXIgZG49''@;'; put 'put ''QnQucmVwbGFjZSh2biwiIiksSW49QnQubGVuZ3RoLWRuLmxlbmd0aDtyZXR1cm4gUm8odW4sZG4sJHQqTWF0aC5wb3coMTAsMipJbikpK2VlKCIlIixJbil9KHVuLEJ0LCR0KTtpZigtMSE9PUJ0LmluZGV4T2YoIkUiKSlyZXR1cm4gbG4oQnQsJHQpO2lmKDM2PT09QnQuY2hhckNvZGVBdCgw''@;'; put 'put ''KSlyZXR1cm4iJCIrQ24odW4sQnQuc3Vic3RyKCIgIj09QnQuY2hhckF0KDEpPzI6MSksJHQpO3ZhciBJbixucix5cixVcixGcj1NYXRoLmFicygkdCksa2k9JHQ8MD8iLSI6IiI7aWYoQnQubWF0Y2goL14wMCskLykpcmV0dXJuIGtpK29lKEZyLEJ0Lmxlbmd0aCk7aWYoQnQubWF0Y2goL15b''@;'; put 'put ''Iz9dKyQvKSlyZXR1cm4gSW49IiIrJHQsMD09PSR0JiYoSW49IiIpLEluLmxlbmd0aD5CdC5sZW5ndGg/SW46ZWkoQnQuc3Vic3RyKDAsQnQubGVuZ3RoLUluLmxlbmd0aCkpK0luO2lmKG5yPUJ0Lm1hdGNoKG5pKSlyZXR1cm4gZnVuY3Rpb24gb2kodW4sQnQsJHQpe3JldHVybiAkdCsoMD09''@;'; put 'put ''PUJ0PyIiOiIiK0J0KStlZSgiICIsdW5bMV0ubGVuZ3RoKzIrdW5bNF0ubGVuZ3RoKX0obnIsRnIsa2kpO2lmKEJ0Lm1hdGNoKC9eIyswKyQvKSlyZXR1cm4ga2krb2UoRnIsQnQubGVuZ3RoLUJ0LmluZGV4T2YoIjAiKSk7aWYobnI9QnQubWF0Y2goeW8pKXJldHVybiBJbj0oSW49KCIiKyR0''@;'; put 'put ''KS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitlaShuclsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK2VpKG5yWzFdKSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbigkbyxyaSl7cmV0dXJuIi4iK3JpK2VlKCIwIixlaShuclsxXSkubGVuZ3RoLXJpLmxlbmd0aCl9KSwtMSE9PUJ0Lmlu''@;'; put 'put ''ZGV4T2YoIjAuIik/SW46SW4ucmVwbGFjZSgvXjBcLi8sIi4iKTtpZihCdD1CdC5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLG5yPUJ0Lm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4ga2krKCIiK0ZyKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/''@;'; put 'put ''XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxuclsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKG5yPUJ0Lm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBraStmbygiIitGcik7aWYobnI9QnQubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuICR0PDA/Ii0iK0NuKHVu''@;'; put 'put ''LEJ0LC0kdCk6Zm8oIiIrJHQpKyIuIitlZSgiMCIsbnJbMV0ubGVuZ3RoKTtpZihucj1CdC5tYXRjaCgvXiMsIyosIzAvKSlyZXR1cm4gQ24odW4sQnQucmVwbGFjZSgvXiMsIyosLywiIiksJHQpO2lmKG5yPUJ0Lm1hdGNoKC9eKFswI10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBJbj1E''@;'; put 'put ''KENuKHVuLEJ0LnJlcGxhY2UoL1tcXC1dL2csIiIpLCR0KSkseXI9MCxEKEQoQnQucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbigkbyl7cmV0dXJuIHlyPEluLmxlbmd0aD9Jbi5jaGFyQXQoeXIrKyk6IjAiPT09JG8/IjAiOiIifSkpO2lmKEJ0Lm1hdGNoKFVp''@;'; put 'put ''KSlyZXR1cm4iKCIrKEluPUNuKHVuLCIjIyMjIyMjIyMjIiwkdCkpLnN1YnN0cigwLDMpKyIpICIrSW4uc3Vic3RyKDMsMykrIi0iK0luLnN1YnN0cig2KTt2YXIgZmk9IiI7aWYobnI9QnQubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiB5cj1NYXRoLm1pbihu''@;'; put 'put ''cls0XS5sZW5ndGgsNyksVXI9WXQoRnIsTWF0aC5wb3coMTAseXIpLTEsITEpLEluPSIiK2tpLCIgIj09KGZpPVJvKCJuIixuclsxXSxVclsxXSkpLmNoYXJBdChmaS5sZW5ndGgtMSkmJihmaT1maS5zdWJzdHIoMCxmaS5sZW5ndGgtMSkrIjAiKSxJbis9ZmkrbnJbMl0rIi8iK25yWzNdLChm''@;'; put 'put ''aT1fZShVclsyXSx5cikpLmxlbmd0aDxucls0XS5sZW5ndGgmJihmaT1laShucls0XS5zdWJzdHIobnJbNF0ubGVuZ3RoLWZpLmxlbmd0aCkpK2ZpKSxJbis9Zmk7aWYobnI9QnQubWF0Y2goL14jIChbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIHlyPU1hdGgubWluKE1hdGgu''@;'; put 'put ''bWF4KG5yWzFdLmxlbmd0aCxucls0XS5sZW5ndGgpLDcpLGtpKygoVXI9WXQoRnIsTWF0aC5wb3coMTAseXIpLTEsITApKVswXXx8KFVyWzFdPyIiOiIwIikpKyIgIisoVXJbMV0/Z2UoVXJbMV0seXIpK25yWzJdKyIvIituclszXStfZShVclsyXSx5cik6ZWUoIiAiLDIqeXIrMStuclsyXS5s''@;'; put 'put ''ZW5ndGgrbnJbM10ubGVuZ3RoKSk7aWYobnI9QnQubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIEJ0Lmxlbmd0aDw9KEluPSIiKyR0KS5sZW5ndGg/SW46ZWkoQnQuc3Vic3RyKDAsQnQubGVuZ3RoLUluLmxlbmd0aCkpK0luO2lmKG5yPUJ0Lm1hdGNoKC9eKFsjMF0rKVwuKFsjMF0rKSQvKSl7''@;'; put 'put ''SW49IiIrJHQudG9GaXhlZChNYXRoLm1pbihuclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLCIkMSIpLHlyPUluLmluZGV4T2YoIi4iKTt2YXIgRW89QnQuaW5kZXhPZigiLiIpLXlyLGdvPUJ0Lmxlbmd0aC1Jbi5sZW5ndGgtRW87cmV0dXJuIGVpKEJ0LnN1YnN0cigwLEVv''@;'; put 'put ''KStJbitCdC5zdWJzdHIoQnQubGVuZ3RoLWdvKSl9aWYobnI9QnQubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiAkdDwwPyItIitDbih1bixCdCwtJHQpOmZvKCIiKyR0KS5yZXBsYWNlKC9eXGQsXGR7M30kLywiMCQmIikucmVwbGFjZSgvXlxkKiQvLGZ1bmN0aW9uKCRvKXty''@;'; put 'put ''ZXR1cm4iMDAsIisoJG8ubGVuZ3RoPDM/b2UoMCwzLSRvLmxlbmd0aCk6IiIpKyRvfSkrIi4iK29lKDAsbnJbMV0ubGVuZ3RoKTt2YXIgQmk9Zm8oIiIrRnIpO3N3aXRjaChCdCl7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6cmV0dXJuIjAiIT09Qmk/a2krQmk6IiI7''@;'; put 'put ''Y2FzZSIjLCMwMCI6cmV0dXJuIjAwIiE9PShCaT1vZShCaSwyKSk/a2krQmk6IiI7ZGVmYXVsdDppZihCdC5tYXRjaCgvXC5bMCM/XSokLykpcmV0dXJuIENuKHVuLEJ0LnNsaWNlKDAsQnQubGFzdEluZGV4T2YoIi4iKSksJHQpK2VpKEJ0LnNsaWNlKEJ0Lmxhc3RJbmRleE9mKCIuIikpKX10''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8IitCdCsifCIpfXJldHVybiBmdW5jdGlvbihCdCwkdCxkbil7cmV0dXJuIjAsMCI9PSR0JiYoJHQ9IiMsIzAwIiksKDB8ZG4pPT09ZG4/Q24oQnQsJHQsZG4pOmhsKEJ0LCR0LGRuKX19KCk7ZnVuY3Rpb24gVG8oUXQpe2Zvcih2''@;'; put 'put ''YXIgdm49W10sUG49ITEsJHI9MCxYbj0wOyRyPFF0Lmxlbmd0aDsrKyRyKXN3aXRjaChRdC5jaGFyQ29kZUF0KCRyKSl7Y2FzZSAzNDpQbj0hUG47YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6KyskcjticmVhaztjYXNlIDU5OnZuW3ZuLmxlbmd0aF09UXQuc3Vic3RyKFhuLCRyLVhu''@;'; put 'put ''KSxYbj0kcisxfWlmKHZuW3ZuLmxlbmd0aF09UXQuc3Vic3RyKFhuKSwhMD09PVBuKXRocm93IG5ldyBFcnJvcigiRm9ybWF0IHwiK1F0KyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIHZufVAuX3NwbGl0PVRvO3ZhciBtaT0vXFtbSGhNbVNzXHUwRTBBXHUwRTE5XHUwRTE3XSpc''@;'; put 'put ''XS87ZnVuY3Rpb24gcmwoUXQpe2Zvcih2YXIgdm49MCxQbj0iIiwkcj0iIjt2bjxRdC5sZW5ndGg7KXN3aXRjaChQbj1RdC5jaGFyQXQodm4pKXtjYXNlIkciOlhlKFF0LHZuKSYmKHZuKz02KSx2bisrO2JyZWFrO2Nhc2UnIic6Zm9yKDszNCE9PVF0LmNoYXJDb2RlQXQoKyt2bikmJnZuPFF0''@;'; put 'put ''Lmxlbmd0aDspOysrdm47YnJlYWs7Y2FzZSJcXCI6Y2FzZSJfIjp2bis9MjticmVhaztjYXNlIkAiOisrdm47YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKCIxIj09PVF0LmNoYXJBdCh2bisxKXx8IjIiPT09UXQuY2hhckF0KHZuKzEpKXJldHVybiEwO2Nhc2UiTSI6Y2FzZSJEIjpjYXNlIlki''@;'; put 'put ''OmNhc2UiSCI6Y2FzZSJTIjpjYXNlIkUiOmNhc2UibSI6Y2FzZSJkIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6cmV0dXJuITA7Y2FzZSJBIjpjYXNlImEiOmNhc2UiXHU0ZTBhIjppZigiQS9QIj09PVF0LnN1YnN0cih2biwzKS50b1VwcGVyQ2FzZSgpfHwiQU0v''@;'; put 'put ''UE0iPT09UXQuc3Vic3RyKHZuLDUpLnRvVXBwZXJDYXNlKCl8fCJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4Ij09PVF0LnN1YnN0cih2biw1KS50b1VwcGVyQ2FzZSgpKXJldHVybiEwOysrdm47YnJlYWs7Y2FzZSJbIjpmb3IoJHI9UG47Il0iIT09UXQuY2hhckF0KHZuKyspJiZ2bjxRdC5s''@;'; put 'put ''ZW5ndGg7KSRyKz1RdC5jaGFyQXQodm4pO2lmKCRyLm1hdGNoKG1pKSlyZXR1cm4hMDticmVhaztjYXNlIi4iOmNhc2UiMCI6Y2FzZSIjIjpmb3IoO3ZuPFF0Lmxlbmd0aCYmKCIwIz8uLEUrLSUiLmluZGV4T2YoUG49UXQuY2hhckF0KCsrdm4pKT4tMXx8IlxcIj09UG4mJiItIj09UXQuY2hh''@;'; put 'put ''ckF0KHZuKzEpJiYiMCMiLmluZGV4T2YoUXQuY2hhckF0KHZuKzIpKT4tMSk7KTticmVhaztjYXNlIj8iOmZvcig7UXQuY2hhckF0KCsrdm4pPT09UG47KTticmVhaztjYXNlIioiOisrdm4sKCIgIj09UXQuY2hhckF0KHZuKXx8IioiPT1RdC5jaGFyQXQodm4pKSYmKyt2bjticmVhaztjYXNl''@;'; put 'put ''IigiOmNhc2UiKSI6Kyt2bjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoO3ZuPFF0Lmxlbmd0aCYmIjAxMjM0NTY3ODkiLmluZGV4T2YoUXQuY2hhckF0KCsrdm4pKT4tMTspO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6Kyt2bn1yZXR1cm4hMX1mdW5jdGlvbiBBbihRdCx2bixQbiwkcil7Zm9yKHZhciBhaSxVaSxlaSxYbj1bXSxuaT0iIixvcj0wLG9pPSIiLHlvPSJ0IixrYT0iSCI7b3I8UXQubGVuZ3RoOylzd2l0Y2gob2k9UXQuY2hhckF0KG9yKSl7Y2FzZSJHIjppZighWGUoUXQsb3IpKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIGNoYXJhY3RlciAiK29pKyIgaW4gIitRdCk7WG5bWG4ubGVuZ3RoXT17dDoiRyIsdjoiR2VuZXJhbCJ9LG9yKz03O2JyZWFrO2Nhc2UnIic6Zm9yKG5pPSIiOzM0IT09KGVpPVF0LmNoYXJDb2RlQXQoKytvcikpJiZvcjxRdC5sZW5ndGg7KW5pKz1T''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKGVpKTtYbltYbi5sZW5ndGhdPXt0OiJ0Iix2Om5pfSwrK29yO2JyZWFrO2Nhc2UiXFwiOnZhciB3YT1RdC5jaGFyQXQoKytvcik7WG5bWG4ubGVuZ3RoXT17dDoiKCI9PT13YXx8IikiPT09d2E/d2E6InQiLHY6d2F9LCsrb3I7YnJlYWs7Y2FzZSJfIjpYbltY''@;'; put 'put ''bi5sZW5ndGhdPXt0OiJ0Iix2OiIgIn0sb3IrPTI7YnJlYWs7Y2FzZSJAIjpYbltYbi5sZW5ndGhdPXt0OiJUIix2OnZufSwrK29yO2JyZWFrO2Nhc2UiQiI6Y2FzZSJiIjppZigiMSI9PT1RdC5jaGFyQXQob3IrMSl8fCIyIj09PVF0LmNoYXJBdChvcisxKSl7aWYobnVsbD09YWkmJm51bGw9''@;'; put 'put ''PShhaT1nbih2bixQbiwiMiI9PT1RdC5jaGFyQXQob3IrMSkpKSlyZXR1cm4iIjtYbltYbi5sZW5ndGhdPXt0OiJYIix2OlF0LnN1YnN0cihvciwyKX0seW89b2ksb3IrPTI7YnJlYWt9Y2FzZSJNIjpjYXNlIkQiOmNhc2UiWSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6b2k9b2kudG9Mb3dl''@;'; put 'put ''ckNhc2UoKTtjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmNhc2UiXHUwZTI3IjpjYXNlIlx1MGUxNCI6Y2FzZSJcdTBlMWIiOmNhc2UiXHUwZTBhIjpjYXNlIlx1MGUxOSI6Y2FzZSJcdTBlMTciOmlmKHZuPDB8fG51bGw9PWFpJiZudWxs''@;'; put 'put ''PT0oYWk9Z24odm4sUG4pKSlyZXR1cm4iIjtmb3Iobmk9b2k7KytvcjxRdC5sZW5ndGgmJlF0LmNoYXJBdChvcikudG9Mb3dlckNhc2UoKT09PW9pOyluaSs9b2k7Im0iPT09b2kmJiJoIj09PXlvLnRvTG93ZXJDYXNlKCkmJihvaT0iTSIpLCJoIj09PW9pJiYob2k9a2EpLFhuW1huLmxlbmd0''@;'; put 'put ''aF09e3Q6b2ksdjpuaX0seW89b2k7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNhc2UiXHU0ZTBhIjp2YXIgcXM9e3Q6b2ksdjpvaX07aWYobnVsbD09YWkmJihhaT1nbih2bixQbikpLCJBL1AiPT09UXQuc3Vic3RyKG9yLDMpLnRvVXBwZXJDYXNlKCk/KG51bGwhPWFpJiYocXMudj1haS5IPj0x''@;'; put 'put ''Mj8iUCI6IkEiKSxxcy50PSJUIixrYT0iaCIsb3IrPTMpOiJBTS9QTSI9PT1RdC5zdWJzdHIob3IsNSkudG9VcHBlckNhc2UoKT8obnVsbCE9YWkmJihxcy52PWFpLkg+PTEyPyJQTSI6IkFNIikscXMudD0iVCIsb3IrPTUsa2E9ImgiKToiXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCI9PT1R''@;'; put 'put ''dC5zdWJzdHIob3IsNSkudG9VcHBlckNhc2UoKT8obnVsbCE9YWkmJihxcy52PWFpLkg+PTEyPyJcdTRlMGJcdTUzNDgiOiJcdTRlMGFcdTUzNDgiKSxxcy50PSJUIixvcis9NSxrYT0iaCIpOihxcy50PSJ0IiwrK29yKSxudWxsPT1haSYmIlQiPT09cXMudClyZXR1cm4iIjtYbltYbi5sZW5n''@;'; put 'put ''dGhdPXFzLHlvPW9pO2JyZWFrO2Nhc2UiWyI6Zm9yKG5pPW9pOyJdIiE9PVF0LmNoYXJBdChvcisrKSYmb3I8UXQubGVuZ3RoOyluaSs9UXQuY2hhckF0KG9yKTtpZigiXSIhPT1uaS5zbGljZSgtMSkpdGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcrbmkrInwiO2lmKG5pLm1hdGNo''@;'; put 'put ''KG1pKSl7aWYobnVsbD09YWkmJm51bGw9PShhaT1nbih2bixQbikpKXJldHVybiIiO1huW1huLmxlbmd0aF09e3Q6IloiLHY6bmkudG9Mb3dlckNhc2UoKX0seW89bmkuY2hhckF0KDEpfWVsc2UgbmkuaW5kZXhPZigiJCIpPi0xJiYobmk9KG5pLm1hdGNoKC9cJChbXi1cW1xdXSopLyl8fFtd''@;'; put 'put ''KVsxXXx8IiQiLHJsKFF0KXx8KFhuW1huLmxlbmd0aF09e3Q6InQiLHY6bml9KSk7YnJlYWs7Y2FzZSIuIjppZihudWxsIT1haSl7Zm9yKG5pPW9pOysrb3I8UXQubGVuZ3RoJiYiMCI9PT0ob2k9UXQuY2hhckF0KG9yKSk7KW5pKz1vaTtYbltYbi5sZW5ndGhdPXt0OiJzIix2Om5pfTticmVh''@;'; put 'put ''a31jYXNlIjAiOmNhc2UiIyI6Zm9yKG5pPW9pOysrb3I8UXQubGVuZ3RoJiYiMCM/LixFKy0lIi5pbmRleE9mKG9pPVF0LmNoYXJBdChvcikpPi0xOyluaSs9b2k7WG5bWG4ubGVuZ3RoXT17dDoibiIsdjpuaX07YnJlYWs7Y2FzZSI/Ijpmb3Iobmk9b2k7UXQuY2hhckF0KCsrb3IpPT09b2k7''@;'; put 'put ''KW5pKz1vaTtYbltYbi5sZW5ndGhdPXt0Om9pLHY6bml9LHlvPW9pO2JyZWFrO2Nhc2UiKiI6KytvciwoIiAiPT1RdC5jaGFyQXQob3IpfHwiKiI9PVF0LmNoYXJBdChvcikpJiYrK29yO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjpYbltYbi5sZW5ndGhdPXt0OjE9PT0kcj8idCI6b2ksdjpvaX0s''@;'; put 'put ''KytvcjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3Iobmk9b2k7b3I8UXQubGVuZ3RoJiYiMDEyMzQ1Njc4OSIuaW5kZXhPZihRdC5jaGFyQXQoKytvcikpPi0xOyluaSs9UXQuY2hhckF0KG9y''@;'; put 'put ''KTtYbltYbi5sZW5ndGhdPXt0OiJEIix2Om5pfTticmVhaztjYXNlIiAiOlhuW1huLmxlbmd0aF09e3Q6b2ksdjpvaX0sKytvcjticmVhaztjYXNlIiQiOlhuW1huLmxlbmd0aF09e3Q6InQiLHY6anJ9LCsrb3I7YnJlYWs7Y2FzZSIvIjpYbltYbi5sZW5ndGhdPVhuLmxlbmd0aD4wJiZybChY''@;'; put 'put ''bltYbi5sZW5ndGgtMV0udik/e3Q6InQiLHY6RG59Ont0OiJ0Iix2OiIvIn0sKytvcjticmVhaztkZWZhdWx0OmlmKC0xPT09IiwkLSsvKCk6IV4mJ357fTw+PVx1MjBhY2FjZmlqa2xvcHFydHV2d3h6UCIuaW5kZXhPZihvaSkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFj''@;'; put 'put ''dGVyICIrb2krIiBpbiAiK1F0KTtYbltYbi5sZW5ndGhdPXt0OiJ0Iix2Om9pfSwrK29yfXZhciBYcCxobD0wLGoyPTA7Zm9yKG9yPVhuLmxlbmd0aC0xLHlvPSJ0Ijtvcj49MDstLW9yKXN3aXRjaChYbltvcl0udCl7Y2FzZSJoIjpjYXNlIkgiOlhuW29yXS50PWthLHlvPSJoIixobDwxJiYo''@;'; put 'put ''aGw9MSk7YnJlYWs7Y2FzZSJzIjooWHA9WG5bb3JdLnYubWF0Y2goL1wuMCskLykpJiYoajI9TWF0aC5tYXgoajIsWHBbMF0ubGVuZ3RoLTEpKSxobDwzJiYoaGw9Myk7Y2FzZSJkIjpjYXNlInkiOmNhc2UiTSI6Y2FzZSJlIjp5bz1Ybltvcl0udDticmVhaztjYXNlIm0iOiJzIj09PXlvJiYo''@;'; put 'put ''WG5bb3JdLnQ9Ik0iLGhsPDImJihobD0yKSk7YnJlYWs7Y2FzZSJYIjpicmVhaztjYXNlIloiOmhsPDEmJlhuW29yXS52Lm1hdGNoKC9bSGhdLykmJihobD0xKSxobDwyJiZYbltvcl0udi5tYXRjaCgvW01tXS8pJiYoaGw9MiksaGw8MyYmWG5bb3JdLnYubWF0Y2goL1tTc10vKSYmKGhsPTMp''@;'; put 'put ''fXN3aXRjaChobCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTphaS51Pj0uNSYmKGFpLnU9MCwrK2FpLlMpLGFpLlM+PTYwJiYoYWkuUz0wLCsrYWkuTSksYWkuTT49NjAmJihhaS5NPTAsKythaS5IKTticmVhaztjYXNlIDI6YWkudT49LjUmJihhaS51PTAsKythaS5TKSxhaS5TPj02MCYmKGFpLlM9''@;'; put 'put ''MCwrK2FpLk0pfXZhciBDbixsbj0iIjtmb3Iob3I9MDtvcjxYbi5sZW5ndGg7Kytvcilzd2l0Y2goWG5bb3JdLnQpe2Nhc2UidCI6Y2FzZSJUIjpjYXNlIiAiOmNhc2UiRCI6YnJlYWs7Y2FzZSJYIjpYbltvcl0udj0iIixYbltvcl0udD0iOyI7YnJlYWs7Y2FzZSJkIjpjYXNlIm0iOmNhc2Ui''@;'; put 'put ''eSI6Y2FzZSJoIjpjYXNlIkgiOmNhc2UiTSI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiYiI6Y2FzZSJaIjpjYXNlIlx1MGUyNyI6Y2FzZSJcdTBlMTQiOmNhc2UiXHUwZTFiIjpjYXNlIlx1MGUwYSI6Y2FzZSJcdTBlMTkiOmNhc2UiXHUwZTE3IjpYbltvcl0udj1YbyhYbltvcl0udC5jaGFyQ29k''@;'; put 'put ''ZUF0KDApLFhuW29yXS52LGFpLGoyKSxYbltvcl0udD0idCI7YnJlYWs7Y2FzZSJuIjpjYXNlIj8iOmZvcihDbj1vcisxO251bGwhPVhuW0NuXSYmKCI/Ij09PShvaT1YbltDbl0udCl8fCJEIj09PW9pfHwoIiAiPT09b2l8fCJ0Ij09PW9pKSYmbnVsbCE9WG5bQ24rMV0mJigiPyI9PT1YbltD''@;'; put 'put ''bisxXS50fHwidCI9PT1YbltDbisxXS50JiYiLyI9PT1YbltDbisxXS52KXx8IigiPT09WG5bb3JdLnQmJigiICI9PT1vaXx8Im4iPT09b2l8fCIpIj09PW9pKXx8InQiPT09b2kmJigiLyI9PT1YbltDbl0udnx8IiAiPT09WG5bQ25dLnYmJm51bGwhPVhuW0NuKzFdJiYiPyI9PVhuW0NuKzFd''@;'; put 'put ''LnQpKTspWG5bb3JdLnYrPVhuW0NuXS52LFhuW0NuXT17djoiIix0OiI7In0sKytDbjtsbis9WG5bb3JdLnYsb3I9Q24tMTticmVhaztjYXNlIkciOlhuW29yXS50PSJ0IixYbltvcl0udj16aSh2bixQbil9dmFyIEJ0LCR0LHVuPSIiO2lmKGxuLmxlbmd0aD4wKXs0MD09bG4uY2hhckNvZGVB''@;'; put 'put ''dCgwKT8oQnQ9dm48MCYmNDU9PT1sbi5jaGFyQ29kZUF0KDApPy12bjp2biwkdD1SbygibiIsbG4sQnQpKTooJHQ9Um8oIm4iLGxuLEJ0PXZuPDAmJiRyPjE/LXZuOnZuKSxCdDwwJiZYblswXSYmInQiPT1YblswXS50JiYoJHQ9JHQuc3Vic3RyKDEpLFhuWzBdLnY9Ii0iK1huWzBdLnYpKSxD''@;'; put 'put ''bj0oJHQ9JHQucmVwbGFjZSgvWyxcLl0vZyxmdW5jdGlvbih5cil7cmV0dXJuIi4iPT15cj9mcjp0aX0pKS5sZW5ndGgtMTt2YXIgZG49WG4ubGVuZ3RoO2Zvcihvcj0wO29yPFhuLmxlbmd0aDsrK29yKWlmKG51bGwhPVhuW29yXSYmInQiIT1Ybltvcl0udCYmWG5bb3JdLnYuaW5kZXhPZigi''@;'; put 'put ''LiIpPi0xKXtkbj1vcjticmVha312YXIgSW49WG4ubGVuZ3RoO2lmKGRuPT09WG4ubGVuZ3RoJiYtMT09PSR0LmluZGV4T2YoIkUiKSl7Zm9yKG9yPVhuLmxlbmd0aC0xO29yPj0wOy0tb3IpbnVsbD09WG5bb3JdfHwtMT09PSJuPyIuaW5kZXhPZihYbltvcl0udCl8fChDbj49WG5bb3JdLnYu''@;'; put 'put ''bGVuZ3RoLTE/WG5bb3JdLnY9JHQuc3Vic3RyKDErKENuLT1Ybltvcl0udi5sZW5ndGgpLFhuW29yXS52Lmxlbmd0aCk6Q248MD9Ybltvcl0udj0iIjooWG5bb3JdLnY9JHQuc3Vic3RyKDAsQ24rMSksQ249LTEpLFhuW29yXS50PSJ0IixJbj1vcik7Q24+PTAmJkluPFhuLmxlbmd0aCYmKFhu''@;'; put 'put ''W0luXS52PSR0LnN1YnN0cigwLENuKzEpK1huW0luXS52KX1lbHNlIGlmKGRuIT09WG4ubGVuZ3RoJiYtMT09PSR0LmluZGV4T2YoIkUiKSl7Zm9yKENuPSR0LmluZGV4T2YoZnIpLTEsb3I9ZG47b3I+PTA7LS1vcilpZihudWxsIT1Ybltvcl0mJi0xIT09Im4/Ii5pbmRleE9mKFhuW29yXS50''@;'; put 'put ''KSl7Zm9yKFVpPVhuW29yXS52LmluZGV4T2YoIi4iKT4tMSYmb3I9PT1kbj9Ybltvcl0udi5pbmRleE9mKCIuIiktMTpYbltvcl0udi5sZW5ndGgtMSx1bj1Ybltvcl0udi5zdWJzdHIoVWkrMSk7VWk+PTA7LS1VaSlDbj49MCYmKCIwIj09PVhuW29yXS52LmNoYXJBdChVaSl8fCIjIj09PVhu''@;'; put 'put ''W29yXS52LmNoYXJBdChVaSkpJiYodW49JHQuY2hhckF0KENuLS0pK3VuKTtYbltvcl0udj11bixYbltvcl0udD0idCIsSW49b3J9Zm9yKENuPj0wJiZJbjxYbi5sZW5ndGgmJihYbltJbl0udj0kdC5zdWJzdHIoMCxDbisxKStYbltJbl0udiksQ249JHQuaW5kZXhPZihmcikrMSxvcj1kbjtv''@;'; put 'put ''cjxYbi5sZW5ndGg7KytvcilpZihudWxsIT1Ybltvcl0mJigtMSE9PSJuPygiLmluZGV4T2YoWG5bb3JdLnQpfHxvcj09PWRuKSl7Zm9yKFVpPVhuW29yXS52LmluZGV4T2YoZnIpPi0xJiZvcj09PWRuP1huW29yXS52LmluZGV4T2YoZnIpKzE6MCx1bj1Ybltvcl0udi5zdWJzdHIoMCxVaSk7''@;'; put 'put ''VWk8WG5bb3JdLnYubGVuZ3RoOysrVWkpQ248JHQubGVuZ3RoJiYodW4rPSR0LmNoYXJBdChDbisrKSk7WG5bb3JdLnY9dW4sWG5bb3JdLnQ9InQiLEluPW9yfX19Zm9yKG9yPTA7b3I8WG4ubGVuZ3RoOysrb3IpbnVsbCE9WG5bb3JdJiYibj8iLmluZGV4T2YoWG5bb3JdLnQpPi0xJiYoWG5b''@;'; put 'put ''b3JdLnY9Um8oWG5bb3JdLnQsWG5bb3JdLnYsQnQ9JHI+MSYmdm48MCYmb3I+MCYmIi0iPT09WG5bb3ItMV0udj8tdm46dm4pLnJlcGxhY2UoL1wuL2csZnIpLnJlcGxhY2UoLywvLHRpKSxYbltvcl0udD0idCIpO3ZhciBucj0iIjtmb3Iob3I9MDtvciE9PVhuLmxlbmd0aDsrK29yKW51bGwh''@;'; put 'put ''PVhuW29yXSYmKG5yKz1Ybltvcl0udik7cmV0dXJuIG5yfVAuaXNfZGF0ZT1ybCxQLl9ldmFsPUFuO3ZhciBNYT0vXFtbPTw+XS8sSXM9L1xbKD18Pls9XT98PFs+PV0/KSgtP1xkKyg/OlwuXGQqKT8pXF0vO2Z1bmN0aW9uIHVzKFF0LHZuKXtpZihudWxsPT12bilyZXR1cm4hMTt2YXIgUG49''@;'; put 'put ''cGFyc2VGbG9hdCh2blsyXSk7c3dpdGNoKHZuWzFdKXtjYXNlIj0iOmlmKFF0PT1QbilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKFF0PlBuKXJldHVybiEwO2JyZWFrO2Nhc2UiPCI6aWYoUXQ8UG4pcmV0dXJuITA7YnJlYWs7Y2FzZSI8PiI6aWYoUXQhPVBuKXJldHVybiEwO2JyZWFrO2Nh''@;'; put 'put ''c2UiPj0iOmlmKFF0Pj1QbilyZXR1cm4hMDticmVhaztjYXNlIjw9IjppZihRdDw9UG4pcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gdWMoUXQsdm4sUG4pe251bGw9PVBuJiYoUG49e30pO3ZhciAkcj0iIjtzd2l0Y2godHlwZW9mIFF0KXtjYXNlInN0cmluZyI6JHI9Im0vZC95eSI9PVF0''@;'; put 'put ''JiZQbi5kYXRlTkY/UG4uZGF0ZU5GOlF0O2JyZWFrO2Nhc2UibnVtYmVyIjpudWxsPT0oJHI9MTQ9PVF0JiZQbi5kYXRlTkY/UG4uZGF0ZU5GOihudWxsIT1Qbi50YWJsZT9Qbi50YWJsZTp3dClbUXRdKSYmKCRyPVBuLnRhYmxlJiZQbi50YWJsZVtIdFtRdF1dfHx3dFtIdFtRdF1dKSxudWxs''@;'; put 'put ''PT0kciYmKCRyPVR0W1F0XXx8IkdlbmVyYWwiKX1pZihYZSgkciwwKSlyZXR1cm4gemkodm4sUG4pO3ZuIGluc3RhbmNlb2YgRGF0ZSYmKHZuPXpuKHZuLFBuLmRhdGUxOTA0KSk7dmFyIFhuPWZ1bmN0aW9uIHdzKFF0LHZuKXt2YXIgUG49VG8oUXQpLCRyPVBuLmxlbmd0aCxYbj1Qblskci0x''@;'; put 'put ''XS5pbmRleE9mKCJAIik7aWYoJHI8NCYmWG4+LTEmJi0tJHIsUG4ubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK1BuLmpvaW4oInwiKSsifCIpO2lmKCJudW1iZXIiIT10eXBlb2Ygdm4pcmV0dXJuWzQsND09PVBuLmxlbmd0aHx8WG4+''@;'; put 'put ''LTE/UG5bUG4ubGVuZ3RoLTFdOiJAIl07c3dpdGNoKFBuLmxlbmd0aCl7Y2FzZSAxOlBuPVhuPi0xP1siR2VuZXJhbCIsIkdlbmVyYWwiLCJHZW5lcmFsIixQblswXV06W1BuWzBdLFBuWzBdLFBuWzBdLCJAIl07YnJlYWs7Y2FzZSAyOlBuPVhuPi0xP1tQblswXSxQblswXSxQblswXSxQblsx''@;'; put 'put ''XV06W1BuWzBdLFBuWzFdLFBuWzBdLCJAIl07YnJlYWs7Y2FzZSAzOlBuPVhuPi0xP1tQblswXSxQblsxXSxQblswXSxQblsyXV06W1BuWzBdLFBuWzFdLFBuWzJdLCJAIl19dmFyIG5pPXZuPjA/UG5bMF06dm48MD9QblsxXTpQblsyXTtpZigtMT09PVBuWzBdLmluZGV4T2YoIlsiKSYmLTE9''@;'; put 'put ''PT1QblsxXS5pbmRleE9mKCJbIikpcmV0dXJuWyRyLG5pXTtpZihudWxsIT1QblswXS5tYXRjaChNYSl8fG51bGwhPVBuWzFdLm1hdGNoKE1hKSl7dmFyIG9yPVBuWzBdLm1hdGNoKElzKSxvaT1QblsxXS5tYXRjaChJcyk7cmV0dXJuIHVzKHZuLG9yKT9bJHIsUG5bMF1dOnVzKHZuLG9pKT9b''@;'; put 'put ''JHIsUG5bMV1dOlskcixQbltudWxsIT1vciYmbnVsbCE9b2k/MjoxXV19cmV0dXJuWyRyLG5pXX0oJHIsdm4pO2lmKFhlKFhuWzFdKSlyZXR1cm4gemkodm4sUG4pO2lmKCEwPT09dm4pdm49IlRSVUUiO2Vsc2UgaWYoITE9PT12bil2bj0iRkFMU0UiO2Vsc2UgaWYoIiI9PT12bnx8bnVsbD09''@;'; put 'put ''dm4pcmV0dXJuIiI7cmV0dXJuIEFuKFhuWzFdLHZuLFBuLFhuWzBdKX1mdW5jdGlvbiBucyhRdCx2bil7aWYoIm51bWJlciIhPXR5cGVvZiB2bil7dm49K3ZufHwtMTtmb3IodmFyIFBuPTA7UG48MzkyOysrUG4paWYobnVsbCE9d3RbUG5dKXtpZih3dFtQbl09PVF0KXt2bj1QbjticmVha319''@;'; put 'put ''ZWxzZSB2bjwwJiYodm49UG4pO3ZuPDAmJih2bj0zOTEpfXJldHVybiB3dFt2bl09UXQsdm59UC5sb2FkPW5zLFAuX3RhYmxlPXd0LFAuZ2V0X3RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHd0fSxQLmxvYWRfdGFibGU9ZnVuY3Rpb24odm4pe2Zvcih2YXIgUG49MDszOTIhPVBuOysrUG4pdm9p''@;'; put 'put ''ZCAwIT09dm5bUG5dJiZucyh2bltQbl0sUG4pfSxQLmluaXRfdGFibGU9dXQsUC5mb3JtYXQ9dWMsUC5nZXRsb2NhbGU9ZnVuY3Rpb24gdnIoKXtyZXR1cm4gT258fCJlbi1VUyJ9LFAuc2V0bG9jYWxlPWZ1bmN0aW9uIHJyKFF0KXtpZihmdW5jdGlvbiBtcihRdCl7dmFyIHZuPTA7c3dpdGNo''@;'; put 'put ''KChPbnx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiemgtdHciOmNhc2UiemgtY24iOmNhc2UiamEtanAiOmNhc2Uia28ta3IiOmZvcih2bj0yNzt2bjw9MzY7Kyt2bilkZWxldGUgUXRbdm5dO2Zvcih2bj01MDt2bjw9NTg7Kyt2bilkZWxldGUgUXRbdm5dO2JyZWFrO2Nhc2UidGgtdGgiOmZv''@;'; put 'put ''cih2bj01OTt2bjw9NjI7Kyt2bilkZWxldGUgUXRbdm5dO2Zvcih2bj02Nzt2bjw9ODE7Kyt2bilkZWxldGUgUXRbdm5dfX0od3QpLE9uPVF0LHhuKHd0KSx0eXBlb2YgSW50bDwidSIpe3ZhciB2bj1JbnRsLkRhdGVUaW1lRm9ybWF0KFF0KTtpZih2bi5mb3JtYXRUb1BhcnRzKXtmb3IodmFy''@;'; put 'put ''IFBuPXZuLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUsMCwwLDApKSwkcj0wOyRyPDc7KyskcilmdFskcl1bMV09SW50bC5EYXRlVGltZUZvcm1hdChRdCx7d2Vla2RheToibG9uZyJ9KS5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAsMCw1KyRyLDAsMCwwKSlbMF0udmFsdWUs''@;'; put 'put ''ZnRbJHJdWzBdPUludGwuRGF0ZVRpbWVGb3JtYXQoUXQse3dlZWtkYXk6InNob3J0In0pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCwwLDUrJHIsMCwwLDApKVswXS52YWx1ZTtmb3IodmFyIFhuPTA7WG48MTI7KytYbilNdFtYbl1bMl09SW50bC5EYXRlVGltZUZvcm1hdChRdCx7bW9u''@;'; put 'put ''dGg6ImxvbmcifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLFhuLDIsMCwwLDApKVswXS52YWx1ZSxNdFtYbl1bMV09SW50bC5EYXRlVGltZUZvcm1hdChRdCx7bW9udGg6InNob3J0In0pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAyMCxYbiwyLDAsMCwwKSlbMF0udmFsdWUsTXRb''@;'; put 'put ''WG5dWzBdPU10W1huXVsxXS5zbGljZSgwLDEpO2Zvcih2YXIgbmk9IiIsb3I9MDtvcjxQbi5sZW5ndGg7Kytvcil7dmFyIG9pPVBuW29yXS52YWx1ZTtzd2l0Y2goUG5bb3JdLnR5cGUpe2Nhc2UieWVhciI6bmkrPTI9PW9pLmxlbmd0aD8ieXkiOiJ5eXl5IjticmVhaztjYXNlIm1vbnRoIjpu''@;'; put 'put ''aSs9IjEiPT1vaT8ibSI6IjAxIj09b2k/Im1tIjpvaT09TXRbMF1bMV0/Im1tbSI6b2k9PU10WzBdWzJdPyJtbW1tIjpvaT09TXRbMF1bMF0/Im1tbW1tIjoibW0iO2JyZWFrO2Nhc2UiZGF5IjpuaSs9IjUiPT1vaT8iZCI6IjA1Ij09b2k/ImRkIjpvaT09ZnRbMF1bMF0/ImRkZCI6b2k9PWZ0''@;'; put 'put ''WzBdWzFdPyJkZGRkIjoiZGQiO2JyZWFrO2Nhc2UibGl0ZXJhbCI6bmkrPW9pLnJlcGxhY2UoLy4vZywiXFwkJiIpLDE9PW9pLmxlbmd0aCYmKERuPW9pKX19KFF0Lm1hdGNoKC9lbi9pKSYmUXQubWF0Y2goL3VzL2kpfHwhUXQpJiYobmk9Im0vZC95eSIpLHd0WzE0XT1uaX1lbHNlImphLWpw''@;'; put 'put ''Ij09UXQudG9Mb3dlckNhc2UoKSYmKHd0WzE0XT0ieXl5eVxcL21cXC9kIik7dmFyIHlvPUludGwuTnVtYmVyRm9ybWF0KFF0LHt9KS5mb3JtYXQoMTIzNDU2Ny44OSk7eW8mJih0aT0oeW8ubWF0Y2goLzEoLiopMi8pfHxbXSlbMV0sZnI9KHlvLm1hdGNoKC83KC4qKTgvKXx8W10pWzFdKX1l''@;'; put 'put ''cltRdC50b0xvd2VyQ2FzZSgpXXx8KGVyW1F0LnRvTG93ZXJDYXNlKCldPXsiLiI6ZnIsIiwiOnRpfSksWW49aXQodHI9ZXJbUXQudG9Mb3dlckNhc2UoKV18fGVyWyJlbi11cyJdKX0sUC5ub3JtYWxpemU9ZnVuY3Rpb24gQWEoUXQpe2Zvcih2YXIgdm49MCxQbj0wLCRyPSIiLFhuPSIiLG5p''@;'; put 'put ''PSIiLG9yPXRyLnl8fCJ5IixvaT1vci50b1VwcGVyQ2FzZSgpLHlvPXRyLmR8fCJkIixhaT15by50b1VwcGVyQ2FzZSgpLFVpPXRyWyIuIl0sZWk9dHJbIiwiXSxrYT0iMCM/RSstJSIrdHJbIiwiXStVaTt2bjxRdC5sZW5ndGg7KXN3aXRjaCgkcj1RdC5jaGFyQXQodm4pKXtjYXNlIkciOnZu''@;'; put 'put ''KyssbmkrPSRyO2JyZWFrO2Nhc2UnIic6Zm9yKG5pKz0kcjszNCE9PShQbj1RdC5jaGFyQ29kZUF0KCsrdm4pKSYmdm48UXQubGVuZ3RoOyluaSs9U3RyaW5nLmZyb21DaGFyQ29kZShQbik7bmkrPSciJywrK3ZuO2JyZWFrO2Nhc2UiXFwiOmNhc2UiXyI6bmkrPVF0LnNsaWNlKHZuLHZuKzIp''@;'; put 'put ''LHZuKz0yO2JyZWFrO2Nhc2UiQCI6bmkrPSRyLCsrdm47YnJlYWs7Y2FzZSJCIjpjYXNlImIiOisrdm4sbmkrPSRyO2JyZWFrO2Nhc2Ugb3I6Y2FzZSBvaTpjYXNlIHlvOmNhc2UgYWk6bmkrPVluWyRyLnRvTG93ZXJDYXNlKCldLCsrdm47YnJlYWs7Y2FzZSJNIjpjYXNlIkgiOmNhc2UiUyI6''@;'; put 'put ''Y2FzZSJFIjpjYXNlIm0iOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJBIjpjYXNlImEiOm5pKz0kciwrK3ZuO2JyZWFrO2Nhc2UiWyI6Zm9yKFhuPSRyOyJdIiE9PVF0LmNoYXJBdCh2bisrKSYmdm48UXQubGVuZ3RoOylYbis9UXQuY2hhckF0KHZuKTtuaSs9WG47YnJl''@;'; put 'put ''YWs7Y2FzZSBlaTpuaSs9JyInKyRyKyciJywrK3ZuO2JyZWFrO2Nhc2UgVWk6aWYoISh2bjxRdC5sZW5ndGgmJihrYS5pbmRleE9mKCRyPVF0LmNoYXJBdCgrK3ZuKSk+LTF8fCJcXCI9PSRyJiYiLSI9PVF0LmNoYXJBdCh2bisxKSYmIjAjIi5pbmRleE9mKFF0LmNoYXJBdCh2bisyKSk+LTEp''@;'; put 'put ''KSl7bmkrPSciJytVaSsnIic7YnJlYWt9JHI9VWksLS12bjtjYXNlIjAiOmNhc2UiIyI6Zm9yKG5pKz1Zblskci50b0xvd2VyQ2FzZSgpXXx8JHI7dm48UXQubGVuZ3RoJiYoa2EuaW5kZXhPZigkcj1RdC5jaGFyQXQoKyt2bikpPi0xfHwiXFwiPT0kciYmIi0iPT1RdC5jaGFyQXQodm4rMSkm''@;'; put 'put ''JiIwIyIuaW5kZXhPZihRdC5jaGFyQXQodm4rMikpPi0xKTspbmkrPVluWyRyLnRvTG93ZXJDYXNlKCldfHwkcjticmVhaztjYXNlIj8iOmZvcihuaSs9JHI7UXQuY2hhckF0KCsrdm4pPT09JHI7KW5pKz0kcjticmVhaztjYXNlIioiOm5pKz0kciwrK3ZuLCgiICI9PVF0LmNoYXJBdCh2bil8''@;'; put 'put ''fCIqIj09UXQuY2hhckF0KHZuKSkmJihuaSs9UXQuY2hhckF0KHZuKSwrK3ZuKTticmVhaztjYXNlIigiOmNhc2UiKSI6bmkrPSRyLCsrdm47YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6Zm9yKG5p''@;'; put 'put ''Kz0kcjt2bjxRdC5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKFF0LmNoYXJBdCgrK3ZuKSk+LTE7KW5pKz1RdC5jaGFyQXQodm4pO2JyZWFrO2RlZmF1bHQ6bmkrPSRyLCsrdm59cmV0dXJuIG5pfSxQLmdldGN1cnJlbmN5PWZ1bmN0aW9uIEVpKCl7cmV0dXJuIGxpfHwiVVNEIn0sUC5z''@;'; put 'put ''ZXRjdXJyZW5jeT1mdW5jdGlvbiBJaShRdCl7bGk9UXQsanI9dHlwZW9mIEludGw8InUiP0ludGwuTnVtYmVyRm9ybWF0KE9uLHtzdHlsZToiY3VycmVuY3kiLGN1cnJlbmN5RGlzcGxheToic3ltYm9sIixjdXJyZW5jeTpRdH0pLmZvcm1hdCgwKS5yZXBsYWNlKC9bMFwuXCxcc10vZywiIik6''@;'; put 'put ''IiQifX07UShTKTt2YXIgRmUscmU9eyJHZW5lcmFsIE51bWJlciI6IkdlbmVyYWwiLCJHZW5lcmFsIERhdGUiOlMuX3RhYmxlWzIyXSwiTG9uZyBEYXRlIjoiZGRkZCwgbW1tbSBkZCwgeXl5eSIsIk1lZGl1bSBEYXRlIjpTLl90YWJsZVsxNV0sIlNob3J0IERhdGUiOlMuX3RhYmxlWzE0XSwi''@;'; put 'put ''TG9uZyBUaW1lIjpTLl90YWJsZVsxOV0sIk1lZGl1bSBUaW1lIjpTLl90YWJsZVsxOF0sIlNob3J0IFRpbWUiOlMuX3RhYmxlWzIwXSxDdXJyZW5jeTonIiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJyxGaXhlZDpTLl90YWJsZVsyXSxTdGFuZGFyZDpTLl90YWJsZVs0XSxQ''@;'; put 'put ''ZXJjZW50OlMuX3RhYmxlWzEwXSxTY2llbnRpZmljOlMuX3RhYmxlWzExXSwiWWVzL05vIjonIlllcyI7IlllcyI7Ik5vIjtAJywiVHJ1ZS9GYWxzZSI6JyJUcnVlIjsiVHJ1ZSI7IkZhbHNlIjtAJywiT24vT2ZmIjonIlllcyI7IlllcyI7Ik5vIjtAJ30sZmU9ezU6JyIkIiMsIyMwXyk7XFwo''@;'; put 'put ''IiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsODonIiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJywyMzoiR2VuZXJhbCIsMjQ6IkdlbmVyYWwiLDI1OiJHZW5lcmFsIiwy''@;'; put 'put ''NjoiR2VuZXJhbCIsMjc6Im0vZC95eSIsMjg6Im0vZC95eSIsMjk6Im0vZC95eSIsMzA6Im0vZC95eSIsMzE6Im0vZC95eSIsMzI6Img6bW06c3MiLDMzOiJoOm1tOnNzIiwzNDoiaDptbTpzcyIsMzU6Img6bW06c3MiLDM2OiJtL2QveXkiLDQxOidfKCogIywjIzBfKTtfKCogKCMsIyMwKTtf''@;'; put 'put ''KCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogKCMsIyMwKTtfKCIkIiogIi0iXyk7XyhAXyknLDQzOidfKCogIywjIzAuMDBfKTtfKCogKCMsIyMwLjAwKTtfKCogIi0iPz9fKTtfKEBfKScsNDQ6J18oIiQiKiAjLCMjMC4wMF8pO18oIiQiKiAoIywjIzAuMDApO18o''@;'; put 'put ''IiQiKiAiLSI/P18pO18oQF8pJyw1MDoibS9kL3l5Iiw1MToibS9kL3l5Iiw1MjoibS9kL3l5Iiw1MzoibS9kL3l5Iiw1NDoibS9kL3l5Iiw1NToibS9kL3l5Iiw1NjoibS9kL3l5Iiw1NzoibS9kL3l5Iiw1ODoibS9kL3l5Iiw1OToiMCIsNjA6IjAuMDAiLDYxOiIjLCMjMCIsNjI6IiMsIyMw''@;'; put 'put ''LjAwIiw2MzonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDY2OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDY3OiIwJSIsNjg6IjAu''@;'; put 'put ''MDAlIiw2OToiIyA/Lz8iLDcwOiIjID8/Lz8/Iiw3MToibS9kL3l5Iiw3MjoibS9kL3l5Iiw3MzoiZC1tbW0teXkiLDc0OiJkLW1tbSIsNzU6Im1tbS15eSIsNzY6Img6bW0iLDc3OiJoOm1tOnNzIiw3ODoibS9kL3l5IGg6bW0iLDc5OiJtbTpzcyIsODA6IltoXTptbTpzcyIsODE6Im1tc3Mu''@;'; put 'put ''MCJ9LG1lPS9bZERdK3xbbU1dK3xbeVllRV0rfFtIaF0rfFtTc10rL2c7IWZ1bmN0aW9uKHcpe3cudmVyc2lvbj0iMS4yLjAiO3ZhciBEPWZ1bmN0aW9uIFAoKXtmb3IodmFyIHZlPTAsTWU9bmV3IEFycmF5KDI1NiksamU9MDsyNTYhPWplOysramUpTWVbamVdPXZlPTEmKHZlPTEmKHZlPTEm''@;'; put 'put ''KHZlPTEmKHZlPTEmKHZlPTEmKHZlPTEmKHZlPTEmKHZlPWplKT8tMzA2Njc0OTEyXnZlPj4+MTp2ZT4+PjEpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+MSk/LTMwNjY3NDkxMl52ZT4+PjE6dmU+Pj4xKT8tMzA2Njc0OTEyXnZlPj4+MTp2ZT4+PjEpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+''@;'; put 'put ''MSk/LTMwNjY3NDkxMl52ZT4+PjE6dmU+Pj4xKT8tMzA2Njc0OTEyXnZlPj4+MTp2ZT4+PjEpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+MTtyZXR1cm4gdHlwZW9mIEludDMyQXJyYXk8InUiP25ldyBJbnQzMkFycmF5KE1lKTpNZX0oKTt3LnRhYmxlPUQsdy5ic3RyPWZ1bmN0aW9uIGVlKHZl''@;'; put 'put ''LE1lKXtmb3IodmFyIGplPS0xXk1lLFVlPXZlLmxlbmd0aC0xLFhlPTA7WGU8VWU7KWplPShqZT1qZT4+PjheRFsyNTUmKGplXnZlLmNoYXJDb2RlQXQoWGUrKykpXSk+Pj44XkRbMjU1JihqZV52ZS5jaGFyQ29kZUF0KFhlKyspKV07cmV0dXJuIFhlPT09VWUmJihqZT1qZT4+PjheRFsyNTUm''@;'; put 'put ''KGplXnZlLmNoYXJDb2RlQXQoWGUpKV0pLC0xXmplfSx3LmJ1Zj1mdW5jdGlvbiBvZSh2ZSxNZSl7aWYodmUubGVuZ3RoPjFlNClyZXR1cm4gZnVuY3Rpb24gZ2UodmUsTWUpe2Zvcih2YXIgamU9LTFeTWUsVWU9dmUubGVuZ3RoLTcsWGU9MDtYZTxVZTspamU9KGplPShqZT0oamU9KGplPShq''@;'; put 'put ''ZT0oamU9KGplPWplPj4+OF5EWzI1NSYoamVedmVbWGUrK10pXSk+Pj44XkRbMjU1JihqZV52ZVtYZSsrXSldKT4+PjheRFsyNTUmKGplXnZlW1hlKytdKV0pPj4+OF5EWzI1NSYoamVedmVbWGUrK10pXSk+Pj44XkRbMjU1JihqZV52ZVtYZSsrXSldKT4+PjheRFsyNTUmKGplXnZlW1hlKytd''@;'; put 'put ''KV0pPj4+OF5EWzI1NSYoamVedmVbWGUrK10pXSk+Pj44XkRbMjU1JihqZV52ZVtYZSsrXSldO2Zvcig7WGU8VWUrNzspamU9amU+Pj44XkRbMjU1JihqZV52ZVtYZSsrXSldO3JldHVybi0xXmplfSh2ZSxNZSk7Zm9yKHZhciBqZT0tMV5NZSxVZT12ZS5sZW5ndGgtMyxYZT0wO1hlPFVlOylq''@;'; put 'put ''ZT0oamU9KGplPShqZT1qZT4+PjheRFsyNTUmKGplXnZlW1hlKytdKV0pPj4+OF5EWzI1NSYoamVedmVbWGUrK10pXSk+Pj44XkRbMjU1JihqZV52ZVtYZSsrXSldKT4+PjheRFsyNTUmKGplXnZlW1hlKytdKV07Zm9yKDtYZTxVZSszOylqZT1qZT4+PjheRFsyNTUmKGplXnZlW1hlKytdKV07''@;'; put 'put ''cmV0dXJuLTFeamV9LHcuc3RyPWZ1bmN0aW9uIF9lKHZlLE1lKXtmb3IodmFyIGl0LGZ0LGplPS0xXk1lLFVlPTAsWGU9dmUubGVuZ3RoO1VlPFhlOykoaXQ9dmUuY2hhckNvZGVBdChVZSsrKSk8MTI4P2plPWplPj4+OF5EWzI1NSYoamVeaXQpXTppdDwyMDQ4P2plPShqZT1qZT4+PjheRFsy''@;'; put 'put ''NTUmKGplXigxOTJ8aXQ+PjYmMzEpKV0pPj4+OF5EWzI1NSYoamVeKDEyOHw2MyZpdCkpXTppdD49NTUyOTYmJml0PDU3MzQ0PyhpdD02NCsoMTAyMyZpdCksZnQ9MTAyMyZ2ZS5jaGFyQ29kZUF0KFVlKyspLGplPShqZT0oamU9KGplPWplPj4+OF5EWzI1NSYoamVeKDI0MHxpdD4+OCY3KSld''@;'; put 'put ''KT4+PjheRFsyNTUmKGplXigxMjh8aXQ+PjImNjMpKV0pPj4+OF5EWzI1NSYoamVeKDEyOHxmdD4+NiYxNXwoMyZpdCk8PDQpKV0pPj4+OF5EWzI1NSYoamVeKDEyOHw2MyZmdCkpXSk6amU9KGplPShqZT1qZT4+PjheRFsyNTUmKGplXigyMjR8aXQ+PjEyJjE1KSldKT4+PjheRFsyNTUmKGpl''@;'; put 'put ''XigxMjh8aXQ+PjYmNjMpKV0pPj4+OF5EWzI1NSYoamVeKDEyOHw2MyZpdCkpXTtyZXR1cm4tMV5qZX19KEZlPXt9KTt2YXIgTGUsTmU9ZnVuY3Rpb24oKXt2YXIgTWUsUD17fTtmdW5jdGlvbiBlZShsbil7aWYoIi8iPT1sbi5jaGFyQXQobG4ubGVuZ3RoLTEpKXJldHVybi0xPT09bG4uc2xp''@;'; put 'put ''Y2UoMCwtMSkuaW5kZXhPZigiLyIpP2xuOmVlKGxuLnNsaWNlKDAsLTEpKTt2YXIgQ249bG4ubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PUNuP2xuOmxuLnNsaWNlKDAsQ24rMSl9ZnVuY3Rpb24gb2UobG4pe2lmKCIvIj09bG4uY2hhckF0KGxuLmxlbmd0aC0xKSlyZXR1cm4gb2UobG4u''@;'; put 'put ''c2xpY2UoMCwtMSkpO3ZhciBDbj1sbi5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09Q24/bG46bG4uc2xpY2UoQ24rMSl9ZnVuY3Rpb24gZ2UobG4sQ24peyJzdHJpbmciPT10eXBlb2YgQ24mJihDbj1uZXcgRGF0ZShDbikpO3ZhciB1bj1Dbi5nZXRIb3VycygpO3VuPSh1bj11bjw8NnxD''@;'; put 'put ''bi5nZXRNaW51dGVzKCkpPDw1fENuLmdldFNlY29uZHMoKT4+PjEsbG4ud3JpdGVfc2hpZnQoMix1bik7dmFyIEJ0PUNuLmdldEZ1bGxZZWFyKCktMTk4MDtCdD0oQnQ9QnQ8PDR8Q24uZ2V0TW9udGgoKSsxKTw8NXxDbi5nZXREYXRlKCksbG4ud3JpdGVfc2hpZnQoMixCdCl9ZnVuY3Rpb24g''@;'; put 'put ''dmUobG4pe3NzKGxuLDApO2Zvcih2YXIgQ249e30sdW49MDtsbi5sPD1sbi5sZW5ndGgtNDspe3ZhciBCdD1sbi5yZWFkX3NoaWZ0KDIpLCR0PWxuLnJlYWRfc2hpZnQoMiksZG49bG4ubCskdCxJbj17fTsyMTU4OT09PUJ0JiYoMSYodW49bG4ucmVhZF9zaGlmdCgxKSkmJihJbi5tdGltZT1s''@;'; put 'put ''bi5yZWFkX3NoaWZ0KDQpKSwkdD41JiYoMiZ1biYmKEluLmF0aW1lPWxuLnJlYWRfc2hpZnQoNCkpLDQmdW4mJihJbi5jdGltZT1sbi5yZWFkX3NoaWZ0KDQpKSksSW4ubXRpbWUmJihJbi5tdD1uZXcgRGF0ZSgxZTMqSW4ubXRpbWUpKSksbG4ubD1kbixDbltCdF09SW59cmV0dXJuIENufWZ1''@;'; put 'put ''bmN0aW9uIGplKCl7cmV0dXJuIE1lfHwoTWU9VCg3ODc3MykpfWZ1bmN0aW9uIFVlKGxuLENuKXtpZig4MD09bG5bMF0mJjc1PT1sblsxXSlyZXR1cm4gZWkobG4sQ24pO2lmKGxuLmxlbmd0aDw1MTIpdGhyb3cgbmV3IEVycm9yKCJDRkIgZmlsZSBzaXplICIrbG4ubGVuZ3RoKyIgPCA1MTIi''@;'; put 'put ''KTt2YXIgdW4sJHQsZG4sSW4sbnIseXIsQnQ9NTEyLFVyPVtdLEZyPWxuLnNsaWNlKDAsNTEyKTtzcyhGciwwKTt2YXIga2k9ZnVuY3Rpb24gWGUobG4pe2lmKDgwPT1sbltsbi5sXSYmNzU9PWxuW2xuLmwrMV0pcmV0dXJuWzAsMF07bG4uY2hrKGpyLCJIZWFkZXIgU2lnbmF0dXJlOiAiKSxs''@;'; put 'put ''bi5sKz0xNjt2YXIgQ249bG4ucmVhZF9zaGlmdCgyLCJ1Iik7cmV0dXJuW2xuLnJlYWRfc2hpZnQoMiwidSIpLENuXX0oRnIpO3N3aXRjaCh1bj1raVswXSl7Y2FzZSAzOkJ0PTUxMjticmVhaztjYXNlIDQ6QnQ9NDA5NjticmVhaztjYXNlIDA6aWYoMD09a2lbMV0pcmV0dXJuIGVpKGxuLENu''@;'; put 'put ''KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiTWFqb3IgVmVyc2lvbjogRXhwZWN0ZWQgMyBvciA0IHNhdyAiK3VuKX01MTIhPT1CdCYmc3MoRnI9bG4uc2xpY2UoMCxCdCksMjgpO3ZhciBmaT1sbi5zbGljZSgwLEJ0KTshZnVuY3Rpb24gaXQobG4sQ24pe3ZhciB1bjtzd2l0Y2gobG4ubCs9''@;'; put 'put ''Mix1bj1sbi5yZWFkX3NoaWZ0KDIpKXtjYXNlIDk6aWYoMyE9Q24pdGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICIrdW4pO2JyZWFrO2Nhc2UgMTI6aWYoNCE9Q24pdGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDEyIHNhdyAiK3Vu''@;'; put 'put ''KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAiK3VuKX1sbi5jaGsoIjA2MDAiLCJNaW5pIFNlY3RvciBTaGlmdDogIiksbG4uY2hrKCIwMDAwMDAwMDAwMDAiLCJSZXNlcnZlZDogIil9KEZyLHVuKTt2YXIgRW89RnIu''@;'; put 'put ''cmVhZF9zaGlmdCg0LCJpIik7aWYoMz09PXVuJiYwIT09RW8pdGhyb3cgbmV3IEVycm9yKCIjIERpcmVjdG9yeSBTZWN0b3JzOiBFeHBlY3RlZCAwIHNhdyAiK0VvKTtGci5sKz00LEluPUZyLnJlYWRfc2hpZnQoNCwiaSIpLEZyLmwrPTQsRnIuY2hrKCIwMDEwMDAwMCIsIk1pbmkgU3RyZWFt''@;'; put 'put ''IEN1dG9mZiBTaXplOiAiKSxucj1Gci5yZWFkX3NoaWZ0KDQsImkiKSwkdD1Gci5yZWFkX3NoaWZ0KDQsImkiKSx5cj1Gci5yZWFkX3NoaWZ0KDQsImkiKSxkbj1Gci5yZWFkX3NoaWZ0KDQsImkiKTtmb3IodmFyIGdvPS0xLEJpPTA7Qmk8MTA5JiYhKChnbz1Gci5yZWFkX3NoaWZ0KDQsImki''@;'; put 'put ''KSk8MCk7KytCaSlVcltCaV09Z287dmFyICRvPWZ1bmN0aW9uIGZ0KGxuLENuKXtmb3IodmFyIHVuPU1hdGguY2VpbChsbi5sZW5ndGgvQ24pLTEsQnQ9W10sJHQ9MTskdDx1bjsrKyR0KUJ0WyR0LTFdPWxuLnNsaWNlKCR0KkNuLCgkdCsxKSpDbik7cmV0dXJuIEJ0W3VuLTFdPWxuLnNsaWNl''@;'; put 'put ''KHVuKkNuKSxCdH0obG4sQnQpO3d0KHlyLGRuLCRvLEJ0LFVyKTt2YXIgcmk9ZnVuY3Rpb24ga3QobG4sQ24sdW4sQnQpe3ZhciAkdD1sbi5sZW5ndGgsZG49W10sSW49W10sbnI9W10seXI9W10sVXI9QnQtMSxGcj0wLGtpPTAsZmk9MCxFbz0wO2ZvcihGcj0wO0ZyPCR0OysrRnIpaWYobnI9''@;'; put 'put ''W10sKGZpPUZyK0NuKT49JHQmJihmaS09JHQpLCFJbltmaV0pe3lyPVtdO3ZhciBnbz1bXTtmb3Ioa2k9Zmk7a2k+PTA7KXtnb1traV09ITAsSW5ba2ldPSEwLG5yW25yLmxlbmd0aF09a2kseXIucHVzaChsbltraV0pO3ZhciBCaT11bltNYXRoLmZsb29yKDQqa2kvQnQpXTtpZihCdDw0KyhF''@;'; put 'put ''bz00KmtpJlVyKSl0aHJvdyBuZXcgRXJyb3IoIkZBVCBib3VuZGFyeSBjcm9zc2VkOiAiK2tpKyIgNCAiK0J0KTtpZighbG5bQmldfHxnb1traT11YShsbltCaV0sRW8pXSlicmVha31kbltmaV09e25vZGVzOm5yLGRhdGE6a2woW3lyXSl9fXJldHVybiBkbn0oJG8sSW4sVXIsQnQpO3JpW0lu''@;'; put 'put ''XS5uYW1lPSIhRGlyZWN0b3J5IiwkdD4wJiZuciE9PVluJiYocmlbbnJdLm5hbWU9IiFNaW5pRkFUIikscmlbVXJbMF1dLm5hbWU9IiFGQVQiLHJpLmZhdF9hZGRycz1VcixyaS5zc3o9QnQ7dmFyIGd1PVtdLEdjPVtdLGd2PVtdOyhmdW5jdGlvbiBUdChsbixDbix1bixCdCwkdCxkbixJbixu''@;'; put 'put ''cil7Zm9yKHZhciBFbyx5cj0wLFVyPUJ0Lmxlbmd0aD8yOjAsRnI9Q25bbG5dLmRhdGEsa2k9MCxmaT0wO2tpPEZyLmxlbmd0aDtraSs9MTI4KXt2YXIgZ289RnIuc2xpY2Uoa2ksa2krMTI4KTtzcyhnbyw2NCksZmk9Z28ucmVhZF9zaGlmdCgyKSxFbz1QYyhnbywwLGZpLVVyKSxCdC5wdXNo''@;'; put 'put ''KEVvKTt2YXIgQmk9e25hbWU6RW8sdHlwZTpnby5yZWFkX3NoaWZ0KDEpLGNvbG9yOmdvLnJlYWRfc2hpZnQoMSksTDpnby5yZWFkX3NoaWZ0KDQsImkiKSxSOmdvLnJlYWRfc2hpZnQoNCwiaSIpLEM6Z28ucmVhZF9zaGlmdCg0LCJpIiksY2xzaWQ6Z28ucmVhZF9zaGlmdCgxNiksc3RhdGU6''@;'; put 'put ''Z28ucmVhZF9zaGlmdCg0LCJpIiksc3RhcnQ6MCxzaXplOjB9OzAhPT1nby5yZWFkX3NoaWZ0KDIpK2dvLnJlYWRfc2hpZnQoMikrZ28ucmVhZF9zaGlmdCgyKStnby5yZWFkX3NoaWZ0KDIpJiYoQmkuY3Q9WXQoZ28sZ28ubC04KSksMCE9PWdvLnJlYWRfc2hpZnQoMikrZ28ucmVhZF9zaGlm''@;'; put 'put ''dCgyKStnby5yZWFkX3NoaWZ0KDIpK2dvLnJlYWRfc2hpZnQoMikmJihCaS5tdD1ZdChnbyxnby5sLTgpKSxCaS5zdGFydD1nby5yZWFkX3NoaWZ0KDQsImkiKSxCaS5zaXplPWdvLnJlYWRfc2hpZnQoNCwiaSIpLEJpLnNpemU8MCYmQmkuc3RhcnQ8MCYmKEJpLnNpemU9QmkudHlwZT0wLEJp''@;'; put 'put ''LnN0YXJ0PVluLEJpLm5hbWU9IiIpLDU9PT1CaS50eXBlPyh5cj1CaS5zdGFydCwkdD4wJiZ5ciE9PVluJiYoQ25beXJdLm5hbWU9IiFTdHJlYW1EYXRhIikpOkJpLnNpemU+PTQwOTY/KEJpLnN0b3JhZ2U9ImZhdCIsdm9pZCAwPT09Q25bQmkuc3RhcnRdJiYoQ25bQmkuc3RhcnRdPUh0KHVu''@;'; put 'put ''LEJpLnN0YXJ0LENuLmZhdF9hZGRycyxDbi5zc3opKSxDbltCaS5zdGFydF0ubmFtZT1CaS5uYW1lLEJpLmNvbnRlbnQ9Q25bQmkuc3RhcnRdLmRhdGEuc2xpY2UoMCxCaS5zaXplKSk6KEJpLnN0b3JhZ2U9Im1pbmlmYXQiLEJpLnNpemU8MD9CaS5zaXplPTA6eXIhPT1ZbiYmQmkuc3RhcnQh''@;'; put 'put ''PT1ZbiYmQ25beXJdJiYoQmkuY29udGVudD11dChCaSxDblt5cl0uZGF0YSwoQ25bbnJdfHx7fSkuZGF0YSkpKSxCaS5jb250ZW50JiZzcyhCaS5jb250ZW50LDApLGRuW0VvXT1CaSxJbi5wdXNoKEJpKX19KShJbixyaSwkbyxndSwkdCx7fSxHYyxuciksZnVuY3Rpb24gTXQobG4sQ24sdW4p''@;'; put 'put ''e2Zvcih2YXIgQnQ9MCwkdD0wLGRuPTAsSW49MCxucj0wLHlyPXVuLmxlbmd0aCxVcj1bXSxGcj1bXTtCdDx5cjsrK0J0KVVyW0J0XT1GcltCdF09QnQsQ25bQnRdPXVuW0J0XTtmb3IoO25yPEZyLmxlbmd0aDsrK25yKSR0PWxuW0J0PUZyW25yXV0uTCxkbj1sbltCdF0uUixJbj1sbltCdF0u''@;'; put 'put ''QyxVcltCdF09PT1CdCYmKC0xIT09JHQmJlVyWyR0XSE9PSR0JiYoVXJbQnRdPVVyWyR0XSksLTEhPT1kbiYmVXJbZG5dIT09ZG4mJihVcltCdF09VXJbZG5dKSksLTEhPT1JbiYmKFVyW0luXT1CdCksLTEhPT0kdCYmQnQhPVVyW0J0XSYmKFVyWyR0XT1VcltCdF0sRnIubGFzdEluZGV4T2Yo''@;'; put 'put ''JHQpPG5yJiZGci5wdXNoKCR0KSksLTEhPT1kbiYmQnQhPVVyW0J0XSYmKFVyW2RuXT1VcltCdF0sRnIubGFzdEluZGV4T2YoZG4pPG5yJiZGci5wdXNoKGRuKSk7Zm9yKEJ0PTE7QnQ8eXI7KytCdClVcltCdF09PT1CdCYmKC0xIT09ZG4mJlVyW2RuXSE9PWRuP1VyW0J0XT1Vcltkbl06LTEh''@;'; put 'put ''PT0kdCYmVXJbJHRdIT09JHQmJihVcltCdF09VXJbJHRdKSk7Zm9yKEJ0PTE7QnQ8eXI7KytCdClpZigwIT09bG5bQnRdLnR5cGUpe2lmKChucj1CdCkhPVVyW25yXSlkb3tDbltCdF09Q25bbnI9VXJbbnJdXSsiLyIrQ25bQnRdfXdoaWxlKDAhPT1uciYmLTEhPT1Vcltucl0mJm5yIT1Vcltu''@;'; put 'put ''cl0pO1VyW0J0XT0tMX1mb3IoQ25bMF0rPSIvIixCdD0xO0J0PHlyOysrQnQpMiE9PWxuW0J0XS50eXBlJiYoQ25bQnRdKz0iLyIpfShHYyxndixndSksZ3Uuc2hpZnQoKTt2YXIgejI9e0ZpbGVJbmRleDpHYyxGdWxsUGF0aHM6Z3Z9O3JldHVybiBDbiYmQ24ucmF3JiYoejIucmF3PXtoZWFk''@;'; put 'put ''ZXI6Zmksc2VjdG9yczokb30pLHoyfWZ1bmN0aW9uIHV0KGxuLENuLHVuKXtmb3IodmFyICR0PWxuLnNpemUsZG49W10sSW49bG4uc3RhcnQ7dW4mJiR0PjAmJkluPj0wOylkbi5wdXNoKENuLnNsaWNlKEluKnRyLEluKnRyK3RyKSksJHQtPXRyLEluPXVhKHVuLDQqSW4pO3JldHVybiAwPT09''@;'; put 'put ''ZG4ubGVuZ3RoP3ByKDApOk0oZG4pLnNsaWNlKDAsbG4uc2l6ZSl9ZnVuY3Rpb24gd3QobG4sQ24sdW4sQnQsJHQpe3ZhciBkbj1ZbjtpZihsbj09PVluKXtpZigwIT09Q24pdGhyb3cgbmV3IEVycm9yKCJESUZBVCBjaGFpbiBzaG9ydGVyIHRoYW4gZXhwZWN0ZWQiKX1lbHNlIGlmKC0xIT09''@;'; put 'put ''bG4pe3ZhciBJbj11bltsbl0sbnI9KEJ0Pj4+MiktMTtpZighSW4pcmV0dXJuO2Zvcih2YXIgeXI9MDt5cjxuciYmKGRuPXVhKEluLDQqeXIpKSE9PVluOysreXIpJHQucHVzaChkbik7d3QodWEoSW4sQnQtNCksQ24tMSx1bixCdCwkdCl9fWZ1bmN0aW9uIEh0KGxuLENuLHVuLEJ0LCR0KXt2''@;'; put 'put ''YXIgZG49W10sSW49W107JHR8fCgkdD1bXSk7dmFyIG5yPUJ0LTEseXI9MCxVcj0wO2Zvcih5cj1Dbjt5cj49MDspeyR0W3lyXT0hMCxkbltkbi5sZW5ndGhdPXlyLEluLnB1c2gobG5beXJdKTt2YXIgRnI9dW5bTWF0aC5mbG9vcig0KnlyL0J0KV07aWYoQnQ8NCsoVXI9NCp5ciZucikpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIit5cisiIDQgIitCdCk7aWYoIWxuW0ZyXSlicmVhazt5cj11YShsbltGcl0sVXIpfXJldHVybntub2RlczpkbixkYXRhOmtsKFtJbl0pfX1mdW5jdGlvbiBZdChsbixDbil7cmV0dXJuIG5ldyBEYXRlKDFlMyooX2kobG4sQ24r''@;'; put 'put ''NCkvMWU3Kk1hdGgucG93KDIsMzIpK19pKGxuLENuKS8xZTctMTE2NDQ0NzM2MDApKX1mdW5jdGlvbiBmbihsbixDbil7dmFyIHVuPUNufHx7fSxCdD11bi5yb290fHwiUm9vdCBFbnRyeSI7aWYobG4uRnVsbFBhdGhzfHwobG4uRnVsbFBhdGhzPVtdKSxsbi5GaWxlSW5kZXh8fChsbi5GaWxl''@;'; put 'put ''SW5kZXg9W10pLGxuLkZ1bGxQYXRocy5sZW5ndGghPT1sbi5GaWxlSW5kZXgubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiaW5jb25zaXN0ZW50IENGQiBzdHJ1Y3R1cmUiKTswPT09bG4uRnVsbFBhdGhzLmxlbmd0aCYmKGxuLkZ1bGxQYXRoc1swXT1CdCsiLyIsbG4uRmlsZUluZGV4WzBdPXtu''@;'; put 'put ''YW1lOkJ0LHR5cGU6NX0pLHVuLkNMU0lEJiYobG4uRmlsZUluZGV4WzBdLmNsc2lkPXVuLkNMU0lEKSxmdW5jdGlvbiBLbihsbil7dmFyIENuPSJceDAxU2gzM3RKNSI7aWYoIU5lLmZpbmQobG4sIi8iK0NuKSl7dmFyIHVuPXByKDQpO3VuWzBdPTU1LHVuWzFdPXVuWzNdPTUwLHVuWzJdPTU0''@;'; put 'put ''LGxuLkZpbGVJbmRleC5wdXNoKHtuYW1lOkNuLHR5cGU6Mixjb250ZW50OnVuLHNpemU6NCxMOjY5LFI6NjksQzo2OX0pLGxuLkZ1bGxQYXRocy5wdXNoKGxuLkZ1bGxQYXRoc1swXStDbiksem4obG4pfX0obG4pfWZ1bmN0aW9uIHpuKGxuLENuKXtmbihsbik7Zm9yKHZhciB1bj0hMSxCdD0h''@;'; put 'put ''MSwkdD1sbi5GdWxsUGF0aHMubGVuZ3RoLTE7JHQ+PTA7LS0kdCl7dmFyIGRuPWxuLkZpbGVJbmRleFskdF07c3dpdGNoKGRuLnR5cGUpe2Nhc2UgMDpCdD91bj0hMDoobG4uRmlsZUluZGV4LnBvcCgpLGxuLkZ1bGxQYXRocy5wb3AoKSk7YnJlYWs7Y2FzZSAxOmNhc2UgMjpjYXNlIDU6QnQ9''@;'; put 'put ''ITAsaXNOYU4oZG4uUipkbi5MKmRuLkMpJiYodW49ITApLGRuLlI+LTEmJmRuLkw+LTEmJmRuLlI9PWRuLkwmJih1bj0hMCk7YnJlYWs7ZGVmYXVsdDp1bj0hMH19aWYodW58fENuKXt2YXIgSW49bmV3IERhdGUoMTk4NywxLDE5KSxucj0wLHlyPVtdO2ZvcigkdD0wOyR0PGxuLkZ1bGxQYXRo''@;'; put 'put ''cy5sZW5ndGg7KyskdCkwIT09bG4uRmlsZUluZGV4WyR0XS50eXBlJiZ5ci5wdXNoKFtsbi5GdWxsUGF0aHNbJHRdLGxuLkZpbGVJbmRleFskdF1dKTtmb3IoJHQ9MDskdDx5ci5sZW5ndGg7KyskdCl7dmFyIFVyPWVlKHlyWyR0XVswXSk7Zm9yKEJ0PSExLG5yPTA7bnI8eXIubGVuZ3RoOysr''@;'; put 'put ''bnIpeXJbbnJdWzBdPT09VXImJihCdD0hMCk7QnR8fHlyLnB1c2goW1VyLHtuYW1lOm9lKFVyKS5yZXBsYWNlKCIvIiwiIiksdHlwZToxLGNsc2lkOkVpLGN0OkluLG10OkluLGNvbnRlbnQ6bnVsbH1dKX1mb3IoeXIuc29ydChmdW5jdGlvbihmaSxFbyl7cmV0dXJuIGZ1bmN0aW9uIEQobG4s''@;'; put 'put ''Q24pe2Zvcih2YXIgdW49bG4uc3BsaXQoIi8iKSxCdD1Dbi5zcGxpdCgiLyIpLCR0PTAsZG49MCxJbj1NYXRoLm1pbih1bi5sZW5ndGgsQnQubGVuZ3RoKTskdDxJbjsrKyR0KXtpZihkbj11blskdF0ubGVuZ3RoLUJ0WyR0XS5sZW5ndGgpcmV0dXJuIGRuO2lmKHVuWyR0XSE9QnRbJHRdKXJl''@;'; put 'put ''dHVybiB1blskdF08QnRbJHRdPy0xOjF9cmV0dXJuIHVuLmxlbmd0aC1CdC5sZW5ndGh9KGZpWzBdLEVvWzBdKX0pLGxuLkZ1bGxQYXRocz1bXSxsbi5GaWxlSW5kZXg9W10sJHQ9MDskdDx5ci5sZW5ndGg7KyskdClsbi5GdWxsUGF0aHNbJHRdPXlyWyR0XVswXSxsbi5GaWxlSW5kZXhbJHRd''@;'; put 'put ''PXlyWyR0XVsxXTtmb3IoJHQ9MDskdDx5ci5sZW5ndGg7KyskdCl7dmFyIEZyPWxuLkZpbGVJbmRleFskdF0sa2k9bG4uRnVsbFBhdGhzWyR0XTtpZihGci5uYW1lPW9lKGtpKS5yZXBsYWNlKCIvIiwiIiksRnIuTD1Gci5SPUZyLkM9LShGci5jb2xvcj0xKSxGci5zaXplPUZyLmNvbnRlbnQ/''@;'; put 'put ''RnIuY29udGVudC5sZW5ndGg6MCxGci5zdGFydD0wLEZyLmNsc2lkPUZyLmNsc2lkfHxFaSwwPT09JHQpRnIuQz15ci5sZW5ndGg+MT8xOi0xLEZyLnNpemU9MCxGci50eXBlPTU7ZWxzZSBpZigiLyI9PWtpLnNsaWNlKC0xKSl7Zm9yKG5yPSR0KzE7bnI8eXIubGVuZ3RoJiZlZShsbi5GdWxs''@;'; put 'put ''UGF0aHNbbnJdKSE9a2k7Kytucik7Zm9yKEZyLkM9bnI+PXlyLmxlbmd0aD8tMTpucixucj0kdCsxO25yPHlyLmxlbmd0aCYmZWUobG4uRnVsbFBhdGhzW25yXSkhPWVlKGtpKTsrK25yKTtGci5SPW5yPj15ci5sZW5ndGg/LTE6bnIsRnIudHlwZT0xfWVsc2UgZWUobG4uRnVsbFBhdGhzWyR0''@;'; put 'put ''KzFdfHwiIik9PWVlKGtpKSYmKEZyLlI9JHQrMSksRnIudHlwZT0yfX19ZnVuY3Rpb24gT24obG4sQ24pe3ZhciB1bj1Dbnx8e307aWYoem4obG4pLCJ6aXAiPT11bi5maWxlVHlwZSlyZXR1cm4gZnVuY3Rpb24gd2EobG4sQ24pe3ZhciB1bj1Dbnx8e30sQnQ9W10sJHQ9W10sZG49cHIoMSks''@;'; put 'put ''SW49dW4uY29tcHJlc3Npb24/ODowLG5yPTAsVXI9MCxGcj0wLGtpPTAsZmk9MCxFbz1sbi5GdWxsUGF0aHNbMF0sZ289RW8sQmk9bG4uRmlsZUluZGV4WzBdLCRvPVtdLHJpPTA7Zm9yKFVyPTE7VXI8bG4uRnVsbFBhdGhzLmxlbmd0aDsrK1VyKWlmKGdvPWxuLkZ1bGxQYXRoc1tVcl0uc2xp''@;'; put 'put ''Y2UoRW8ubGVuZ3RoKSwoQmk9bG4uRmlsZUluZGV4W1VyXSkuc2l6ZSYmQmkuY29udGVudCYmIlx4MDFTaDMzdEo1IiE9Z28pe3ZhciBYcz1raSxndT1wcihnby5sZW5ndGgpO2ZvcihGcj0wO0ZyPGdvLmxlbmd0aDsrK0ZyKWd1LndyaXRlX3NoaWZ0KDEsMTI3JmdvLmNoYXJDb2RlQXQoRnIp''@;'; put 'put ''KTtndT1ndS5zbGljZSgwLGd1LmwpLCRvW2ZpXT1GZS5idWYoQmkuY29udGVudCwwKTt2YXIgR2M9QmkuY29udGVudDs4PT1JbiYmKEdjPW1yKEdjKSksKGRuPXByKDMwKSkud3JpdGVfc2hpZnQoNCw2NzMyNDc1MiksZG4ud3JpdGVfc2hpZnQoMiwyMCksZG4ud3JpdGVfc2hpZnQoMixuciks''@;'; put 'put ''ZG4ud3JpdGVfc2hpZnQoMixJbiksQmkubXQ/Z2UoZG4sQmkubXQpOmRuLndyaXRlX3NoaWZ0KDQsMCksZG4ud3JpdGVfc2hpZnQoLTQsOCZucj8wOiRvW2ZpXSksZG4ud3JpdGVfc2hpZnQoNCw4Jm5yPzA6R2MubGVuZ3RoKSxkbi53cml0ZV9zaGlmdCg0LDgmbnI/MDpCaS5jb250ZW50Lmxl''@;'; put 'put ''bmd0aCksZG4ud3JpdGVfc2hpZnQoMixndS5sZW5ndGgpLGRuLndyaXRlX3NoaWZ0KDIsMCksa2krPWRuLmxlbmd0aCxCdC5wdXNoKGRuKSxraSs9Z3UubGVuZ3RoLEJ0LnB1c2goZ3UpLGtpKz1HYy5sZW5ndGgsQnQucHVzaChHYyksOCZuciYmKChkbj1wcigxMikpLndyaXRlX3NoaWZ0KC00''@;'; put 'put ''LCRvW2ZpXSksZG4ud3JpdGVfc2hpZnQoNCxHYy5sZW5ndGgpLGRuLndyaXRlX3NoaWZ0KDQsQmkuY29udGVudC5sZW5ndGgpLGtpKz1kbi5sLEJ0LnB1c2goZG4pKSwoZG49cHIoNDYpKS53cml0ZV9zaGlmdCg0LDMzNjM5MjQ4KSxkbi53cml0ZV9zaGlmdCgyLDApLGRuLndyaXRlX3NoaWZ0''@;'; put 'put ''KDIsMjApLGRuLndyaXRlX3NoaWZ0KDIsbnIpLGRuLndyaXRlX3NoaWZ0KDIsSW4pLGRuLndyaXRlX3NoaWZ0KDQsMCksZG4ud3JpdGVfc2hpZnQoLTQsJG9bZmldKSxkbi53cml0ZV9zaGlmdCg0LEdjLmxlbmd0aCksZG4ud3JpdGVfc2hpZnQoNCxCaS5jb250ZW50Lmxlbmd0aCksZG4ud3Jp''@;'; put 'put ''dGVfc2hpZnQoMixndS5sZW5ndGgpLGRuLndyaXRlX3NoaWZ0KDIsMCksZG4ud3JpdGVfc2hpZnQoMiwwKSxkbi53cml0ZV9zaGlmdCgyLDApLGRuLndyaXRlX3NoaWZ0KDIsMCksZG4ud3JpdGVfc2hpZnQoNCwwKSxkbi53cml0ZV9zaGlmdCg0LFhzKSxyaSs9ZG4ubCwkdC5wdXNoKGRuKSxy''@;'; put 'put ''aSs9Z3UubGVuZ3RoLCR0LnB1c2goZ3UpLCsrZml9cmV0dXJuKGRuPXByKDIyKSkud3JpdGVfc2hpZnQoNCwxMDEwMTAyNTYpLGRuLndyaXRlX3NoaWZ0KDIsMCksZG4ud3JpdGVfc2hpZnQoMiwwKSxkbi53cml0ZV9zaGlmdCgyLGZpKSxkbi53cml0ZV9zaGlmdCgyLGZpKSxkbi53cml0ZV9z''@;'; put 'put ''aGlmdCg0LHJpKSxkbi53cml0ZV9zaGlmdCg0LGtpKSxkbi53cml0ZV9zaGlmdCgyLDApLE0oW00oQnQpLE0oJHQpLGRuXSl9KGxuLHVuKTt2YXIgQnQ9ZnVuY3Rpb24oRW8pe2Zvcih2YXIgZ289MCxCaT0wLCRvPTA7JG88RW8uRmlsZUluZGV4Lmxlbmd0aDsrKyRvKXt2YXIgcmk9RW8uRmls''@;'; put 'put ''ZUluZGV4WyRvXTtpZihyaS5jb250ZW50KXt2YXIgWHM9cmkuY29udGVudC5sZW5ndGg7WHM+MCYmKFhzPDQwOTY/Z28rPVhzKzYzPj42OkJpKz1Ycys1MTE+PjkpfX1mb3IodmFyIGd1PUVvLkZ1bGxQYXRocy5sZW5ndGgrMz4+Mixndj1nbysxMjc+PjcsejI9KGdvKzc+PjMpK0JpK2d1K2d2''@;'; put 'put ''LGhkPXoyKzEyNz4+Nyx0Qz1oZDw9MTA5PzA6TWF0aC5jZWlsKChoZC0xMDkpLzEyNyk7ejIraGQrdEMrMTI3Pj43PmhkOyl0Qz0rK2hkPD0xMDk/MDpNYXRoLmNlaWwoKGhkLTEwOSkvMTI3KTt2YXIgQ2Y9WzEsdEMsaGQsZ3YsZ3UsQmksZ28sMF07cmV0dXJuIEVvLkZpbGVJbmRleFswXS5z''@;'; put 'put ''aXplPWdvPDw2LENmWzddPShFby5GaWxlSW5kZXhbMF0uc3RhcnQ9Q2ZbMF0rQ2ZbMV0rQ2ZbMl0rQ2ZbM10rQ2ZbNF0rQ2ZbNV0pKyhDZls2XSs3Pj4zKSxDZn0obG4pLCR0PXByKEJ0WzddPDw5KSxkbj0wLEluPTA7Zm9yKGRuPTA7ZG48ODsrK2RuKSR0LndyaXRlX3NoaWZ0KDEsbGlbZG5d''@;'; put 'put ''KTtmb3IoZG49MDtkbjw4OysrZG4pJHQud3JpdGVfc2hpZnQoMiwwKTtmb3IoJHQud3JpdGVfc2hpZnQoMiw2MiksJHQud3JpdGVfc2hpZnQoMiwzKSwkdC53cml0ZV9zaGlmdCgyLDY1NTM0KSwkdC53cml0ZV9zaGlmdCgyLDkpLCR0LndyaXRlX3NoaWZ0KDIsNiksZG49MDtkbjwzOysrZG4p''@;'; put 'put ''JHQud3JpdGVfc2hpZnQoMiwwKTtmb3IoJHQud3JpdGVfc2hpZnQoNCwwKSwkdC53cml0ZV9zaGlmdCg0LEJ0WzJdKSwkdC53cml0ZV9zaGlmdCg0LEJ0WzBdK0J0WzFdK0J0WzJdK0J0WzNdLTEpLCR0LndyaXRlX3NoaWZ0KDQsMCksJHQud3JpdGVfc2hpZnQoNCw0MDk2KSwkdC53cml0ZV9z''@;'; put 'put ''aGlmdCg0LEJ0WzNdP0J0WzBdK0J0WzFdK0J0WzJdLTE6WW4pLCR0LndyaXRlX3NoaWZ0KDQsQnRbM10pLCR0LndyaXRlX3NoaWZ0KC00LEJ0WzFdP0J0WzBdLTE6WW4pLCR0LndyaXRlX3NoaWZ0KDQsQnRbMV0pLGRuPTA7ZG48MTA5OysrZG4pJHQud3JpdGVfc2hpZnQoLTQsZG48QnRbMl0/''@;'; put 'put ''QnRbMV0rZG46LTEpO2lmKEJ0WzFdKWZvcihJbj0wO0luPEJ0WzFdOysrSW4pe2Zvcig7ZG48MjM2KzEyNypJbjsrK2RuKSR0LndyaXRlX3NoaWZ0KC00LGRuPEJ0WzJdP0J0WzFdK2RuOi0xKTskdC53cml0ZV9zaGlmdCgtNCxJbj09PUJ0WzFdLTE/WW46SW4rMSl9dmFyIG5yPWZ1bmN0aW9u''@;'; put 'put ''KEVvKXtmb3IoSW4rPUVvO2RuPEluLTE7KytkbikkdC53cml0ZV9zaGlmdCgtNCxkbisxKTtFbyYmKCsrZG4sJHQud3JpdGVfc2hpZnQoLTQsWW4pKX07Zm9yKEluPWRuPTAsSW4rPUJ0WzFdO2RuPEluOysrZG4pJHQud3JpdGVfc2hpZnQoLTQsSWkuRElGU0VDVCk7Zm9yKEluKz1CdFsyXTtk''@;'; put 'put ''bjxJbjsrK2RuKSR0LndyaXRlX3NoaWZ0KC00LElpLkZBVFNFQ1QpO25yKEJ0WzNdKSxucihCdFs0XSk7Zm9yKHZhciB5cj0wLFVyPTAsRnI9bG4uRmlsZUluZGV4WzBdO3lyPGxuLkZpbGVJbmRleC5sZW5ndGg7Kyt5cikoRnI9bG4uRmlsZUluZGV4W3lyXSkuY29udGVudCYmISgoVXI9RnIu''@;'; put 'put ''Y29udGVudC5sZW5ndGgpPDQwOTYpJiYoRnIuc3RhcnQ9SW4sbnIoVXIrNTExPj45KSk7Zm9yKG5yKEJ0WzZdKzc+PjMpOzUxMSYkdC5sOykkdC53cml0ZV9zaGlmdCgtNCxJaS5FTkRPRkNIQUlOKTtmb3IoSW49ZG49MCx5cj0wO3lyPGxuLkZpbGVJbmRleC5sZW5ndGg7Kyt5cikoRnI9bG4u''@;'; put 'put ''RmlsZUluZGV4W3lyXSkuY29udGVudCYmKFVyPUZyLmNvbnRlbnQubGVuZ3RoKSYmIShVcj49NDA5NikmJihGci5zdGFydD1JbixucihVcis2Mz4+NikpO2Zvcig7NTExJiR0Lmw7KSR0LndyaXRlX3NoaWZ0KC00LElpLkVORE9GQ0hBSU4pO2Zvcihkbj0wO2RuPEJ0WzRdPDwyOysrZG4pe3Zh''@;'; put 'put ''ciBraT1sbi5GdWxsUGF0aHNbZG5dO2lmKGtpJiYwIT09a2kubGVuZ3RoKXtGcj1sbi5GaWxlSW5kZXhbZG5dLDA9PT1kbiYmKEZyLnN0YXJ0PUZyLnNpemU/RnIuc3RhcnQtMTpZbik7dmFyIGZpPTA9PT1kbiYmdW4ucm9vdHx8RnIubmFtZTtpZihVcj0yKihmaS5sZW5ndGgrMSksJHQud3Jp''@;'; put 'put ''dGVfc2hpZnQoNjQsZmksInV0ZjE2bGUiKSwkdC53cml0ZV9zaGlmdCgyLFVyKSwkdC53cml0ZV9zaGlmdCgxLEZyLnR5cGUpLCR0LndyaXRlX3NoaWZ0KDEsRnIuY29sb3IpLCR0LndyaXRlX3NoaWZ0KC00LEZyLkwpLCR0LndyaXRlX3NoaWZ0KC00LEZyLlIpLCR0LndyaXRlX3NoaWZ0KC00''@;'; put 'put ''LEZyLkMpLEZyLmNsc2lkKSR0LndyaXRlX3NoaWZ0KDE2LEZyLmNsc2lkLCJoZXgiKTtlbHNlIGZvcih5cj0wO3lyPDQ7Kyt5cikkdC53cml0ZV9zaGlmdCg0LDApOyR0LndyaXRlX3NoaWZ0KDQsRnIuc3RhdGV8fDApLCR0LndyaXRlX3NoaWZ0KDQsMCksJHQud3JpdGVfc2hpZnQoNCwwKSwk''@;'; put 'put ''dC53cml0ZV9zaGlmdCg0LDApLCR0LndyaXRlX3NoaWZ0KDQsMCksJHQud3JpdGVfc2hpZnQoNCxGci5zdGFydCksJHQud3JpdGVfc2hpZnQoNCxGci5zaXplKSwkdC53cml0ZV9zaGlmdCg0LDApfWVsc2V7Zm9yKHlyPTA7eXI8MTc7Kyt5cikkdC53cml0ZV9zaGlmdCg0LDApO2Zvcih5cj0w''@;'; put 'put ''O3lyPDM7Kyt5cikkdC53cml0ZV9zaGlmdCg0LC0xKTtmb3IoeXI9MDt5cjwxMjsrK3lyKSR0LndyaXRlX3NoaWZ0KDQsMCl9fWZvcihkbj0xO2RuPGxuLkZpbGVJbmRleC5sZW5ndGg7KytkbilpZigoRnI9bG4uRmlsZUluZGV4W2RuXSkuc2l6ZT49NDA5Nil7Zm9yKCR0Lmw9RnIuc3RhcnQr''@;'; put 'put ''MTw8OSx5cj0wO3lyPEZyLnNpemU7Kyt5cikkdC53cml0ZV9zaGlmdCgxLEZyLmNvbnRlbnRbeXJdKTtmb3IoOzUxMSZ5cjsrK3lyKSR0LndyaXRlX3NoaWZ0KDEsMCl9Zm9yKGRuPTE7ZG48bG4uRmlsZUluZGV4Lmxlbmd0aDsrK2RuKWlmKChGcj1sbi5GaWxlSW5kZXhbZG5dKS5zaXplPjAm''@;'; put 'put ''JkZyLnNpemU8NDA5Nil7Zm9yKHlyPTA7eXI8RnIuc2l6ZTsrK3lyKSR0LndyaXRlX3NoaWZ0KDEsRnIuY29udGVudFt5cl0pO2Zvcig7NjMmeXI7Kyt5cikkdC53cml0ZV9zaGlmdCgxLDApfWZvcig7JHQubDwkdC5sZW5ndGg7KSR0LndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuICR0fVAudmVy''@;'; put 'put ''c2lvbj0iMS4xLjQiO3ZhciB2cix0cj02NCxZbj0tMixqcj0iZDBjZjExZTBhMWIxMWFlMSIsbGk9WzIwOCwyMDcsMTcsMjI0LDE2MSwxNzcsMjYsMjI1XSxFaT0iMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLElpPXtNQVhSRUdTRUNUOi02LERJRlNFQ1Q6LTQsRkFUU0VDVDot''@;'; put 'put ''MyxFTkRPRkNIQUlOOlluLEZSRUVTRUNUOi0xLEhFQURFUl9TSUdOQVRVUkU6anIsSEVBREVSX01JTk9SX1ZFUlNJT046IjNlMDAiLE1BWFJFR1NJRDotNixOT1NUUkVBTTotMSxIRUFERVJfQ0xTSUQ6RWksRW50cnlUeXBlczpbInVua25vd24iLCJzdG9yYWdlIiwic3RyZWFtIiwibG9ja2J5''@;'; put 'put ''dGVzIiwicHJvcGVydHkiLCJyb290Il19O2Z1bmN0aW9uIGZyKGxuKXtmb3IodmFyIENuPW5ldyBBcnJheShsbi5sZW5ndGgpLHVuPTA7dW48bG4ubGVuZ3RoOysrdW4pQ25bdW5dPVN0cmluZy5mcm9tQ2hhckNvZGUobG5bdW5dKTtyZXR1cm4gQ24uam9pbigiIil9ZnVuY3Rpb24gbXIobG4p''@;'; put 'put ''e3JldHVybiB2cj92ci5kZWZsYXRlUmF3U3luYyhsbik6d3MobG4pfWZvcih2YXIgbG4sQ24sQ2k9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdLHpyPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3''@;'; put 'put ''LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4XSx6aT1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3XSxPaT10eXBlb2YgVWludDhB''@;'; put 'put ''cnJheTwidSIsWG89T2k/bmV3IFVpbnQ4QXJyYXkoMjU2KTpbXSxmbz0wO2ZvPDI1NjsrK2ZvKVhvW2ZvXT0odm9pZCAwLDI1NSYoKENuPTEzOTUzNiYoKGxuPWZvKTw8MXxsbjw8MTEpfDU1ODE0NCYobG48PDV8bG48PDE1KSk+PjE2fENuPj44fENuKSk7ZnVuY3Rpb24gUm8obG4sQ24pe3Zh''@;'; put 'put ''ciB1bj1Yb1syNTUmbG5dO3JldHVybiBDbjw9OD91bj4+PjgtQ246KHVuPXVuPDw4fFhvW2xuPj44JjI1NV0sQ248PTE2P3VuPj4+MTYtQ246KHVuPXVuPDw4fFhvW2xuPj4xNiYyNTVdKT4+PjI0LUNuKX1mdW5jdGlvbiBUbyhsbixDbil7dmFyIHVuPTcmQ24sQnQ9Q24+Pj4zO3JldHVybihs''@;'; put 'put ''bltCdF18KHVuPD02PzA6bG5bQnQrMV08PDgpKT4+PnVuJjN9ZnVuY3Rpb24gbWkobG4sQ24pe3ZhciB1bj03JkNuLEJ0PUNuPj4+MztyZXR1cm4obG5bQnRdfCh1bjw9NT8wOmxuW0J0KzFdPDw4KSk+Pj51biY3fWZ1bmN0aW9uIEFuKGxuLENuKXt2YXIgdW49NyZDbixCdD1Dbj4+PjM7cmV0''@;'; put 'put ''dXJuKGxuW0J0XXwodW48PTM/MDpsbltCdCsxXTw8OCkpPj4+dW4mMzF9ZnVuY3Rpb24gQWEobG4sQ24pe3ZhciB1bj03JkNuLEJ0PUNuPj4+MztyZXR1cm4obG5bQnRdfCh1bjw9MT8wOmxuW0J0KzFdPDw4KSk+Pj51biYxMjd9ZnVuY3Rpb24gTWEobG4sQ24sdW4pe3ZhciBCdD03JkNuLCR0''@;'; put 'put ''PUNuPj4+MyxJbj1sblskdF0+Pj5CdDtyZXR1cm4gdW48OC1CdHx8KElufD1sblskdCsxXTw8OC1CdCx1bjwxNi1CdCl8fChJbnw9bG5bJHQrMl08PDE2LUJ0LHVuPDI0LUJ0KXx8KElufD1sblskdCszXTw8MjQtQnQpLEluJigxPDx1biktMX1mdW5jdGlvbiBJcyhsbixDbil7dmFyIHVuPWxu''@;'; put 'put ''Lmxlbmd0aCxCdD0yKnVuPkNuPzIqdW46Q24rNSwkdD0wO2lmKHVuPj1DbilyZXR1cm4gbG47aWYoZGUpe3ZhciBkbj1iKEJ0KTtpZihsbi5jb3B5KWxuLmNvcHkoZG4pO2Vsc2UgZm9yKDskdDxsbi5sZW5ndGg7KyskdClkblskdF09bG5bJHRdO3JldHVybiBkbn1pZihPaSl7dmFyIEluPW5l''@;'; put 'put ''dyBVaW50OEFycmF5KEJ0KTtpZihJbi5zZXQpSW4uc2V0KGxuKTtlbHNlIGZvcig7JHQ8bG4ubGVuZ3RoOysrJHQpSW5bJHRdPWxuWyR0XTtyZXR1cm4gSW59cmV0dXJuIGxuLmxlbmd0aD1CdCxsbn1mdW5jdGlvbiB1cyhsbil7Zm9yKHZhciBDbj1uZXcgQXJyYXkobG4pLHVuPTA7dW48bG47''@;'; put 'put ''Kyt1bilDblt1bl09MDtyZXR1cm4gQ259dmFyIHdzPWZ1bmN0aW9uKENuKXt2YXIgdW49cHIoNTArTWF0aC5mbG9vcigxLjEqQ24ubGVuZ3RoKSksQnQ9ZnVuY3Rpb24odW4sQnQpe2Zvcih2YXIgJHQ9MDskdDx1bi5sZW5ndGg7KXt2YXIgZG49TWF0aC5taW4oNjU1MzUsdW4ubGVuZ3RoLSR0''@;'; put 'put ''KTtmb3IoQnQud3JpdGVfc2hpZnQoMSwrKCR0K2RuPT11bi5sZW5ndGgpKSxCdC53cml0ZV9zaGlmdCgyLGRuKSxCdC53cml0ZV9zaGlmdCgyLDY1NTM1Jn5kbik7ZG4tLSA+MDspQnRbQnQubCsrXT11blskdCsrXX1yZXR1cm4gQnQubH0oQ24sdW4pO3JldHVybiB1bi5zbGljZSgwLEJ0KX07''@;'; put 'put ''ZnVuY3Rpb24gdWMobG4sQ24sdW4pe3ZhciBCdD0xLCR0PTAsZG49MCxJbj0wLG5yPTAseXI9bG4ubGVuZ3RoLFVyPU9pP25ldyBVaW50MTZBcnJheSgzMik6dXMoMzIpO2Zvcihkbj0wO2RuPDMyOysrZG4pVXJbZG5dPTA7Zm9yKGRuPXlyO2RuPHVuOysrZG4pbG5bZG5dPTA7eXI9bG4ubGVu''@;'; put 'put ''Z3RoO3ZhciBGcj1PaT9uZXcgVWludDE2QXJyYXkoeXIpOnVzKHlyKTtmb3IoZG49MDtkbjx5cjsrK2RuKVVyWyR0PWxuW2RuXV0rKyxCdDwkdCYmKEJ0PSR0KSxGcltkbl09MDtmb3IoVXJbMF09MCxkbj0xO2RuPD1CdDsrK2RuKVVyW2RuKzE2XT1ucj1ucitVcltkbi0xXTw8MTtmb3IoZG49''@;'; put 'put ''MDtkbjx5cjsrK2RuKTAhPShucj1sbltkbl0pJiYoRnJbZG5dPVVyW25yKzE2XSsrKTt2YXIga2k9MDtmb3IoZG49MDtkbjx5cjsrK2RuKWlmKDAhPShraT1sbltkbl0pKWZvcihucj1SbyhGcltkbl0sQnQpPj5CdC1raSxJbj0oMTw8QnQrNC1raSktMTtJbj49MDstLUluKUNuW25yfEluPDxr''@;'; put 'put ''aV09MTUma2l8ZG48PDQ7cmV0dXJuIEJ0fXZhciBucz1PaT9uZXcgVWludDE2QXJyYXkoNTEyKTp1cyg1MTIpLFF0PU9pP25ldyBVaW50MTZBcnJheSgzMik6dXMoMzIpO2lmKCFPaSl7Zm9yKHZhciB2bj0wO3ZuPDUxMjsrK3ZuKW5zW3ZuXT0wO2Zvcih2bj0wO3ZuPDMyOysrdm4pUXRbdm5d''@;'; put 'put ''PTB9IWZ1bmN0aW9uKCl7Zm9yKHZhciBsbj1bXSxDbj0wO0NuPDMyO0NuKyspbG4ucHVzaCg1KTt1YyhsbixRdCwzMik7dmFyIHVuPVtdO2ZvcihDbj0wO0NuPD0xNDM7Q24rKyl1bi5wdXNoKDgpO2Zvcig7Q248PTI1NTtDbisrKXVuLnB1c2goOSk7Zm9yKDtDbjw9Mjc5O0NuKyspdW4ucHVz''@;'; put 'put ''aCg3KTtmb3IoO0NuPD0yODc7Q24rKyl1bi5wdXNoKDgpO3VjKHVuLG5zLDI4OCl9KCk7dmFyIFBuPU9pP25ldyBVaW50MTZBcnJheSgzMjc2OCk6dXMoMzI3NjgpLCRyPU9pP25ldyBVaW50MTZBcnJheSgzMjc2OCk6dXMoMzI3NjgpLFhuPU9pP25ldyBVaW50MTZBcnJheSgxMjgpOnVzKDEy''@;'; put 'put ''OCksbmk9MSxvcj0xO2Z1bmN0aW9uIG9pKGxuLENuKXt2YXIgdW49QW4obG4sQ24pKzI1NyxCdD1BbihsbixDbis9NSkrMSwkdD1mdW5jdGlvbiBybChsbixDbil7dmFyIHVuPTcmQ24sQnQ9Q24+Pj4zO3JldHVybihsbltCdF18KHVuPD00PzA6bG5bQnQrMV08PDgpKT4+PnVuJjE1fShsbixD''@;'; put 'put ''bis9NSkrNDtDbis9NDtmb3IodmFyIGRuPTAsSW49T2k/bmV3IFVpbnQ4QXJyYXkoMTkpOnVzKDE5KSxucj1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0seXI9MSxVcj1PaT9uZXcgVWludDhBcnJheSg4KTp1cyg4KSxGcj1PaT9uZXcgVWludDhBcnJheSg4KTp1cyg4''@;'; put 'put ''KSxraT1Jbi5sZW5ndGgsZmk9MDtmaTwkdDsrK2ZpKUluW0NpW2ZpXV09ZG49bWkobG4sQ24pLHlyPGRuJiYoeXI9ZG4pLFVyW2RuXSsrLENuKz0zO3ZhciBFbz0wO2ZvcihVclswXT0wLGZpPTE7Zmk8PXlyOysrZmkpRnJbZmldPUVvPUVvK1VyW2ZpLTFdPDwxO2ZvcihmaT0wO2ZpPGtpOysr''@;'; put 'put ''ZmkpMCE9KEVvPUluW2ZpXSkmJihucltmaV09RnJbRW9dKyspO3ZhciBnbz0wO2ZvcihmaT0wO2ZpPGtpOysrZmkpaWYoMCE9KGdvPUluW2ZpXSkpe0VvPVhvW25yW2ZpXV0+PjgtZ287Zm9yKHZhciBCaT0oMTw8Ny1nbyktMTtCaT49MDstLUJpKVhuW0VvfEJpPDxnb109NyZnb3xmaTw8M312''@;'; put 'put ''YXIgJG89W107Zm9yKHlyPTE7JG8ubGVuZ3RoPHVuK0J0Oylzd2l0Y2goRW89WG5bQWEobG4sQ24pXSxDbis9NyZFbyxFbz4+Pj0zKXtjYXNlIDE2OmZvcihkbj0zK1RvKGxuLENuKSxDbis9MixFbz0kb1skby5sZW5ndGgtMV07ZG4tLSA+MDspJG8ucHVzaChFbyk7YnJlYWs7Y2FzZSAxNzpm''@;'; put 'put ''b3IoZG49MyttaShsbixDbiksQ24rPTM7ZG4tLSA+MDspJG8ucHVzaCgwKTticmVhaztjYXNlIDE4OmZvcihkbj0xMStBYShsbixDbiksQ24rPTc7ZG4tLSA+MDspJG8ucHVzaCgwKTticmVhaztkZWZhdWx0OiRvLnB1c2goRW8pLHlyPEVvJiYoeXI9RW8pfXZhciByaT0kby5zbGljZSgwLHVu''@;'; put 'put ''KSxYcz0kby5zbGljZSh1bik7Zm9yKGZpPXVuO2ZpPDI4NjsrK2ZpKXJpW2ZpXT0wO2ZvcihmaT1CdDtmaTwzMDsrK2ZpKVhzW2ZpXT0wO3JldHVybiBuaT11YyhyaSxQbiwyODYpLG9yPXVjKFhzLCRyLDMwKSxDbn1mdW5jdGlvbiBhaShsbixDbil7dmFyIEJ0PWZ1bmN0aW9uIHlvKGxuLENu''@;'; put 'put ''KXtpZigzPT1sblswXSYmISgzJmxuWzFdKSlyZXR1cm5bWShDbiksMl07Zm9yKHZhciB1bj0wLEJ0PTAsJHQ9YihDbnx8MTw8MTgpLGRuPTAsSW49JHQubGVuZ3RoPj4+MCxucj0wLHlyPTA7ISgxJkJ0KTspaWYoQnQ9bWkobG4sdW4pLHVuKz0zLEJ0Pj4+MSlmb3IoQnQ+Pj4xPT0xPyhucj05''@;'; put 'put ''LHlyPTUpOih1bj1vaShsbix1biksbnI9bmkseXI9b3IpLCFDbiYmSW48ZG4rMzI3NjcmJihJbj0oJHQ9SXMoJHQsZG4rMzI3NjcpKS5sZW5ndGgpOzspe3ZhciBGcj1NYShsbix1bixuciksa2k9QnQ+Pj4xPT0xP25zW0ZyXTpQbltGcl07aWYodW4rPTE1JmtpLChraT4+Pj00KT4+PjgmMjU1''@;'; put 'put ''KXtpZigyNTY9PWtpKWJyZWFrO3ZhciBmaT0oa2ktPTI1Nyk8OD8wOmtpLTQ+PjI7Zmk+NSYmKGZpPTApO3ZhciBFbz1kbit6cltraV07Zmk+MCYmKEVvKz1NYShsbix1bixmaSksdW4rPWZpKSxGcj1NYShsbix1bix5ciksdW4rPTE1JihraT1CdD4+PjE9PTE/UXRbRnJdOiRyW0ZyXSk7dmFy''@;'; put 'put ''IGdvPShraT4+Pj00KTw0PzA6a2ktMj4+MSxCaT16aVtraV07Zm9yKGdvPjAmJihCaSs9TWEobG4sdW4sZ28pLHVuKz1nbyksIUNuJiZJbjxFbyYmKEluPSgkdD1JcygkdCxFbykpLmxlbmd0aCk7ZG48RW87KSR0W2RuXT0kdFtkbi1CaV0sKytkbn1lbHNlICR0W2RuKytdPWtpfWVsc2V7NyZ1''@;'; put 'put ''biYmKHVuKz04LSg3JnVuKSk7dmFyIFVyPWxuW3VuPj4+M118bG5bMSsodW4+Pj4zKV08PDg7aWYodW4rPTMyLCFDbiYmSW48ZG4rVXImJihJbj0oJHQ9SXMoJHQsZG4rVXIpKS5sZW5ndGgpLCJmdW5jdGlvbiI9PXR5cGVvZiBsbi5jb3B5KWxuLmNvcHkoJHQsZG4sdW4+Pj4zLCh1bj4+PjMp''@;'; put 'put ''K1VyKSxkbis9VXIsdW4rPTgqVXI7ZWxzZSBmb3IoO1VyLS0gPjA7KSR0W2RuKytdPWxuW3VuPj4+M10sdW4rPTh9cmV0dXJuW0NuPyR0OiR0LnNsaWNlKDAsZG4pLHVuKzc+Pj4zXX0obG4uc2xpY2UobG4ubHx8MCksQ24pO3JldHVybiBsbi5sKz1CdFsxXSxCdFswXX1mdW5jdGlvbiBVaShs''@;'; put 'put ''bixDbil7aWYoIWxuKXRocm93IG5ldyBFcnJvcihDbik7dHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlLmVycm9yKENuKX1mdW5jdGlvbiBlaShsbixDbil7dmFyIHVuPWxuO3NzKHVuLDApO3ZhciBkbj17RmlsZUluZGV4OltdLEZ1bGxQYXRoczpbXX07Zm4oZG4se3Jvb3Q6Q24ucm9vdH0p''@;'; put 'put ''O2Zvcih2YXIgSW49dW4ubGVuZ3RoLTQ7KDgwIT11bltJbl18fDc1IT11bltJbisxXXx8NSE9dW5bSW4rMl18fDYhPXVuW0luKzNdKSYmSW4+PTA7KS0tSW47dW4ubD1Jbis0LHVuLmwrPTQ7dmFyIG5yPXVuLnJlYWRfc2hpZnQoMik7dW4ubCs9Njt2YXIgeXI9dW4ucmVhZF9zaGlmdCg0KTtm''@;'; put 'put ''b3IodW4ubD15cixJbj0wO0luPG5yOysrSW4pe3VuLmwrPTIwO3ZhciBVcj11bi5yZWFkX3NoaWZ0KDQpLEZyPXVuLnJlYWRfc2hpZnQoNCksa2k9dW4ucmVhZF9zaGlmdCgyKSxmaT11bi5yZWFkX3NoaWZ0KDIpLEVvPXVuLnJlYWRfc2hpZnQoMik7dW4ubCs9ODt2YXIgZ289dW4ucmVhZF9z''@;'; put 'put ''aGlmdCg0KSxCaT12ZSh1bi5zbGljZSh1bi5sK2tpLHVuLmwra2krZmkpKTt1bi5sKz1raStmaStFbzt2YXIgJG89dW4ubDt1bi5sPWdvKzQsa2EodW4sVXIsRnIsZG4sQmkpLHVuLmw9JG99cmV0dXJuIGRufWZ1bmN0aW9uIGthKGxuLENuLHVuLEJ0LCR0KXtsbi5sKz0yO3ZhciBkbj1sbi5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpLEluPWxuLnJlYWRfc2hpZnQoMiksbnI9ZnVuY3Rpb24gX2UobG4pe3ZhciBDbj02NTUzNSZsbi5yZWFkX3NoaWZ0KDIpLHVuPTY1NTM1JmxuLnJlYWRfc2hpZnQoMiksQnQ9bmV3IERhdGUsJHQ9MzEmdW4sZG49MTUmKHVuPj4+PTUpO3VuPj4+PTQsQnQuc2V0TWlsbGlz''@;'; put 'put ''ZWNvbmRzKDApLEJ0LnNldEZ1bGxZZWFyKHVuKzE5ODApLEJ0LnNldE1vbnRoKGRuLTEpLEJ0LnNldERhdGUoJHQpO3ZhciBJbj0zMSZDbixucj02MyYoQ24+Pj49NSk7cmV0dXJuIEJ0LnNldEhvdXJzKENuPj4+PTYpLEJ0LnNldE1pbnV0ZXMobnIpLEJ0LnNldFNlY29uZHMoSW48PDEpLEJ0''@;'; put 'put ''fShsbik7aWYoODI1NyZkbil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBlbmNyeXB0aW9uIik7Zm9yKHZhciB5cj1sbi5yZWFkX3NoaWZ0KDQpLFVyPWxuLnJlYWRfc2hpZnQoNCksRnI9bG4ucmVhZF9zaGlmdCg0KSxraT1sbi5yZWFkX3NoaWZ0KDIpLGZpPWxuLnJlYWRfc2hp''@;'; put 'put ''ZnQoMiksRW89IiIsZ289MDtnbzxraTsrK2dvKUVvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGxuW2xuLmwrK10pO2lmKGZpKXt2YXIgQmk9dmUobG4uc2xpY2UobG4ubCxsbi5sK2ZpKSk7KEJpWzIxNTg5XXx8e30pLm10JiYobnI9QmlbMjE1ODldLm10KSwoKCR0fHx7fSlbMjE1ODldfHx7fSku''@;'; put 'put ''bXQmJihucj0kdFsyMTU4OV0ubXQpfWxuLmwrPWZpO3ZhciAkbz1sbi5zbGljZShsbi5sLGxuLmwrVXIpO3N3aXRjaChJbil7Y2FzZSA4OiRvPWZ1bmN0aW9uIHhuKGxuLENuKXtpZighdnIpcmV0dXJuIGFpKGxuLENuKTt2YXIgQnQ9bmV3KDAsdnIuSW5mbGF0ZVJhdyksJHQ9QnQuX3Byb2Nl''@;'; put 'put ''c3NDaHVuayhsbi5zbGljZShsbi5sKSxCdC5fZmluaXNoRmx1c2hGbGFnKTtyZXR1cm4gbG4ubCs9QnQuYnl0ZXNSZWFkLCR0fShsbixGcik7YnJlYWs7Y2FzZSAwOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgQ29tcHJlc3Npb24gbWV0aG9kICIrSW4p''@;'; put 'put ''fXZhciByaT0hMTs4JmRuJiYoMTM0Njk1NzYwPT0oeXI9bG4ucmVhZF9zaGlmdCg0KSkmJih5cj1sbi5yZWFkX3NoaWZ0KDQpLHJpPSEwKSxVcj1sbi5yZWFkX3NoaWZ0KDQpLEZyPWxuLnJlYWRfc2hpZnQoNCkpLFVyIT1DbiYmVWkocmksIkJhZCBjb21wcmVzc2VkIHNpemU6ICIrQ24rIiAh''@;'; put 'put ''PSAiK1VyKSxGciE9dW4mJlVpKHJpLCJCYWQgdW5jb21wcmVzc2VkIHNpemU6ICIrdW4rIiAhPSAiK0ZyKTt2YXIgWHM9RmUuYnVmKCRvLDApO3lyPj4wIT1Ycz4+MCYmVWkocmksIkJhZCBDUkMzMiBjaGVja3N1bTogIit5cisiICE9ICIrWHMpLHFzKEJ0LEVvLCRvLHt1bnNhZmU6ITAsbXQ6''@;'; put 'put ''bnJ9KX1mdW5jdGlvbiBxcyhsbixDbix1bixCdCl7dmFyICR0PUJ0JiZCdC51bnNhZmU7JHR8fGZuKGxuKTt2YXIgZG49ISR0JiZOZS5maW5kKGxuLENuKTtpZighZG4pe3ZhciBJbj1sbi5GdWxsUGF0aHNbMF07Q24uc2xpY2UoMCxJbi5sZW5ndGgpPT1Jbj9Jbj1DbjooIi8iIT1Jbi5zbGlj''@;'; put 'put ''ZSgtMSkmJihJbis9Ii8iKSxJbj0oSW4rQ24pLnJlcGxhY2UoIi8vIiwiLyIpKSxkbj17bmFtZTpvZShDbiksdHlwZToyfSxsbi5GaWxlSW5kZXgucHVzaChkbiksbG4uRnVsbFBhdGhzLnB1c2goSW4pLCR0fHxOZS51dGlscy5jZmJfZ2MobG4pfXJldHVybiBkbi5jb250ZW50PXVuLGRuLnNp''@;'; put 'put ''emU9dW4/dW4ubGVuZ3RoOjAsQnQmJihCdC5DTFNJRCYmKGRuLmNsc2lkPUJ0LkNMU0lEKSxCdC5tdCYmKGRuLm10PUJ0Lm10KSxCdC5jdCYmKGRuLmN0PUJ0LmN0KSksZG59cmV0dXJuIFAuZmluZD1mdW5jdGlvbiBlcihsbixDbil7dmFyIHVuPWxuLkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24o''@;'; put 'put ''eXIpe3JldHVybiB5ci50b1VwcGVyQ2FzZSgpfSksQnQ9dW4ubWFwKGZ1bmN0aW9uKHlyKXt2YXIgVXI9eXIuc3BsaXQoIi8iKTtyZXR1cm4gVXJbVXIubGVuZ3RoLSgiLyI9PXlyLnNsaWNlKC0xKT8yOjEpXX0pLCR0PSExOzQ3PT09Q24uY2hhckNvZGVBdCgwKT8oJHQ9ITAsQ249dW5bMF0u''@;'; put 'put ''c2xpY2UoMCwtMSkrQ24pOiR0PS0xIT09Q24uaW5kZXhPZigiLyIpO3ZhciBkbj1Dbi50b1VwcGVyQ2FzZSgpLEluPSEwPT09JHQ/dW4uaW5kZXhPZihkbik6QnQuaW5kZXhPZihkbik7aWYoLTEhPT1JbilyZXR1cm4gbG4uRmlsZUluZGV4W0luXTt2YXIgbnI9IWRuLm1hdGNoKHApO2Zvcihk''@;'; put 'put ''bj1kbi5yZXBsYWNlKHksIiIpLG5yJiYoZG49ZG4ucmVwbGFjZShwLCIhIikpLEluPTA7SW48dW4ubGVuZ3RoOysrSW4paWYoKG5yP3VuW0luXS5yZXBsYWNlKHAsIiEiKTp1bltJbl0pLnJlcGxhY2UoeSwiIik9PWRufHwobnI/QnRbSW5dLnJlcGxhY2UocCwiISIpOkJ0W0luXSkucmVwbGFj''@;'; put 'put ''ZSh5LCIiKT09ZG4pcmV0dXJuIGxuLkZpbGVJbmRleFtJbl07cmV0dXJuIG51bGx9LFAucmVhZD1mdW5jdGlvbiBxbihsbixDbil7c3dpdGNoKENuJiZDbi50eXBlfHwiYmFzZTY0Iil7Y2FzZSJmaWxlIjpyZXR1cm4gZnVuY3Rpb24gZ24obG4sQ24pe3JldHVybiBqZSgpLFVlKE1lLnJlYWRG''@;'; put 'put ''aWxlU3luYyhsbiksQ24pfShsbixDbik7Y2FzZSJiYXNlNjQiOnJldHVybiBVZSh4KGxlLmRlY29kZShsbikpLENuKTtjYXNlImJpbmFyeSI6cmV0dXJuIFVlKHgobG4pLENuKX1yZXR1cm4gVWUobG4sQ24pfSxQLnBhcnNlPVVlLFAud3JpdGU9ZnVuY3Rpb24gRG4obG4sQ24pe3ZhciB1bj1P''@;'; put 'put ''bihsbixDbik7c3dpdGNoKENuJiZDbi50eXBlKXtjYXNlImZpbGUiOnJldHVybiBqZSgpLE1lLndyaXRlRmlsZVN5bmMoQ24uZmlsZW5hbWUsdW4pLHVuO2Nhc2UiYmluYXJ5IjpyZXR1cm4gZnIodW4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gbGUuZW5jb2RlKGZyKHVuKSl9cmV0dXJuIHVufSxQ''@;'; put 'put ''LndyaXRlRmlsZT1mdW5jdGlvbiB0aShsbixDbix1bil7amUoKTt2YXIgQnQ9T24obG4sdW4pO01lLndyaXRlRmlsZVN5bmMoQ24sQnQpfSxQLnV0aWxzPXtjZmJfbmV3OmZ1bmN0aW9uIENzKGxuKXt2YXIgQ249e307cmV0dXJuIGZuKENuLGxuKSxDbn0sY2ZiX2FkZDpxcyxjZmJfZGVsOmZ1''@;'; put 'put ''bmN0aW9uIGhsKGxuLENuKXtmbihsbik7dmFyIHVuPU5lLmZpbmQobG4sQ24pO2lmKHVuKWZvcih2YXIgQnQ9MDtCdDxsbi5GaWxlSW5kZXgubGVuZ3RoOysrQnQpaWYobG4uRmlsZUluZGV4W0J0XT09dW4pcmV0dXJuIGxuLkZpbGVJbmRleC5zcGxpY2UoQnQsMSksbG4uRnVsbFBhdGhzLnNw''@;'; put 'put ''bGljZShCdCwxKSwhMDtyZXR1cm4hMX0sY2ZiX21vdjpmdW5jdGlvbiBqMihsbixDbix1bil7Zm4obG4pO3ZhciBCdD1OZS5maW5kKGxuLENuKTtpZihCdClmb3IodmFyICR0PTA7JHQ8bG4uRmlsZUluZGV4Lmxlbmd0aDsrKyR0KWlmKGxuLkZpbGVJbmRleFskdF09PUJ0KXJldHVybiBsbi5G''@;'; put 'put ''aWxlSW5kZXhbJHRdLm5hbWU9b2UodW4pLGxuLkZ1bGxQYXRoc1skdF09dW4sITA7cmV0dXJuITF9LGNmYl9nYzpmdW5jdGlvbiBYcChsbil7em4obG4sITApfSxSZWFkU2hpZnQ6TmwsQ2hlY2tGaWVsZDp1MixwcmVwX2Jsb2I6c3MsYmNvbmNhdDpNLHVzZV96bGliOmZ1bmN0aW9uIHJyKGxu''@;'; put 'put ''KXt0cnl7dmFyIHVuPW5ldygwLGxuLkluZmxhdGVSYXcpO2lmKHVuLl9wcm9jZXNzQ2h1bmsobmV3IFVpbnQ4QXJyYXkoWzMsMF0pLHVuLl9maW5pc2hGbHVzaEZsYWcpLCF1bi5ieXRlc1JlYWQpdGhyb3cgbmV3IEVycm9yKCJ6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWQiKTt2cj1s''@;'; put 'put ''bn1jYXRjaChCdCl7Y29uc29sZS5lcnJvcigiY2Fubm90IHVzZSBuYXRpdmUgemxpYjogIisoQnQubWVzc2FnZXx8QnQpKX19LF9kZWZsYXRlUmF3OndzLF9pbmZsYXRlUmF3OmFpLGNvbnN0czpJaX0sUH0oKTt0cnl7TGU9VCg3ODc3Myl9Y2F0Y2h7fWZ1bmN0aW9uIEJlKHcpe3JldHVybiJz''@;'; put 'put ''dHJpbmciPT10eXBlb2Ygdz9OKHcpOkFycmF5LmlzQXJyYXkodyk/ZnVuY3Rpb24gZyh3KXtpZih0eXBlb2YgVWludDhBcnJheT4idSIpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCIpO3JldHVybiBuZXcgVWludDhBcnJheSh3KX0odyk6d31mdW5jdGlvbiBIZSh3LFAsRCl7aWYodHlw''@;'; put 'put ''ZW9mIExlPCJ1IiYmTGUud3JpdGVGaWxlU3luYylyZXR1cm4gRD9MZS53cml0ZUZpbGVTeW5jKHcsUCxEKTpMZS53cml0ZUZpbGVTeW5jKHcsUCk7dmFyIGVlPSJ1dGY4Ij09RD9IbyhQKTpQO2lmKHR5cGVvZiBJRV9TYXZlRmlsZTwidSIpcmV0dXJuIElFX1NhdmVGaWxlKGVlLHcpO2lmKHR5''@;'; put 'put ''cGVvZiBCbG9iPCJ1Iil7dmFyIG9lPW5ldyBCbG9iKFtCZShlZSldLHt0eXBlOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7aWYodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5tc1NhdmVCbG9iKXJldHVybiBuYXZpZ2F0b3IubXNTYXZlQmxvYihvZSx3KTtpZih0eXBlb2Yg''@;'; put 'put ''c2F2ZUFzPCJ1IilyZXR1cm4gc2F2ZUFzKG9lLHcpO2lmKHR5cGVvZiBVUkw8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50JiZVUkwuY3JlYXRlT2JqZWN0VVJMKXt2YXIgZ2U9VVJMLmNyZWF0ZU9iamVjdFVSTChvZSk7aWYoIm9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBjaHJvbWUmJiJmdW5jdGlvbiI9PXR5cGVvZihjaHJvbWUuZG93bmxvYWRzfHx7fSkuZG93bmxvYWQpcmV0dXJuIFVSTC5yZXZva2VPYmplY3RVUkwmJnR5cGVvZiBzZXRUaW1lb3V0PCJ1IiYmc2V0VGltZW91dChmdW5jdGlvbigpe1VSTC5yZXZva2VPYmplY3RVUkwoZ2UpfSw2ZTQpLGNo''@;'; put 'put ''cm9tZS5kb3dubG9hZHMuZG93bmxvYWQoe3VybDpnZSxmaWxlbmFtZTp3LHNhdmVBczohMH0pO3ZhciBfZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aWYobnVsbCE9X2UuZG93bmxvYWQpcmV0dXJuIF9lLmRvd25sb2FkPXcsX2UuaHJlZj1nZSxkb2N1bWVudC5ib2R5LmFwcGVuZENo''@;'; put 'put ''aWxkKF9lKSxfZS5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoX2UpLFVSTC5yZXZva2VPYmplY3RVUkwmJnR5cGVvZiBzZXRUaW1lb3V0PCJ1IiYmc2V0VGltZW91dChmdW5jdGlvbigpe1VSTC5yZXZva2VPYmplY3RVUkwoZ2UpfSw2ZTQpLGdlfX1pZih0eXBlb2YgJDwidSIm''@;'; put 'put ''JnR5cGVvZiBGaWxlPCJ1IiYmdHlwZW9mIEZvbGRlcjwidSIpdHJ5e3ZhciB2ZT1GaWxlKHcpO3JldHVybiB2ZS5vcGVuKCJ3IiksdmUuZW5jb2Rpbmc9ImJpbmFyeSIsQXJyYXkuaXNBcnJheShQKSYmKFA9RihQKSksdmUud3JpdGUoUCksdmUuY2xvc2UoKSxQfWNhdGNoKE1lKXtpZighTWUu''@;'; put 'put ''bWVzc2FnZXx8IU1lLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpdGhyb3cgTWV9dGhyb3cgbmV3IEVycm9yKCJjYW5ub3Qgc2F2ZSBmaWxlICIrdyl9ZnVuY3Rpb24gbXQodyl7Zm9yKHZhciBQPU9iamVjdC5rZXlzKHcpLEQ9W10sZWU9MDtlZTxQLmxlbmd0aDsrK2VlKU9iamVjdC5wcm90''@;'; put 'put ''b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3LFBbZWVdKSYmRC5wdXNoKFBbZWVdKTtyZXR1cm4gRH1mdW5jdGlvbiBLZSh3LFApe2Zvcih2YXIgRD1bXSxlZT1tdCh3KSxvZT0wO29lIT09ZWUubGVuZ3RoOysrb2UpbnVsbD09RFt3W2VlW29lXV1bUF1dJiYoRFt3W2VlW29lXV1bUF1dPWVl''@;'; put 'put ''W29lXSk7cmV0dXJuIER9ZnVuY3Rpb24gd2Uodyl7Zm9yKHZhciBQPVtdLEQ9bXQodyksZWU9MDtlZSE9PUQubGVuZ3RoOysrZWUpUFt3W0RbZWVdXV09RFtlZV07cmV0dXJuIFB9ZnVuY3Rpb24gSWUodyl7Zm9yKHZhciBQPVtdLEQ9bXQodyksZWU9MDtlZSE9PUQubGVuZ3RoOysrZWUpUFt3''@;'; put 'put ''W0RbZWVdXV09cGFyc2VJbnQoRFtlZV0sMTApO3JldHVybiBQfXZhciBxZSxodCxldD1uZXcgRGF0ZSgxODk5LDExLDMwLDAsMCwwKSxudD0wO2Z1bmN0aW9uIEVlKCl7bnQ9ZXQuZ2V0VGltZSgpKzZlNCooKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpLWV0LmdldFRpbWV6b25lT2Zm''@;'; put 'put ''c2V0KCkpLHFlPWZ1bmN0aW9uKFAsRCl7dmFyIGVlPVAuZ2V0VGltZSgpO3JldHVybiBEJiYoZWUtPTEyNjMxNjhlNSksKGVlLW50KS84NjRlNX0saHQ9ZnVuY3Rpb24oUCl7dmFyIEQ9bmV3IERhdGU7cmV0dXJuIEQuc2V0VGltZSgyNCpQKjYwKjYwKjFlMytudCksRH19ZnVuY3Rpb24gYXQo''@;'; put 'put ''dyl7dmFyIFA9MCxEPTAsZWU9ITEsb2U9dy5tYXRjaCgvUChbMC05XC5dK1kpPyhbMC05XC5dK00pPyhbMC05XC5dK0QpP1QoWzAtOVwuXStIKT8oWzAtOVwuXStNKT8oWzAtOVwuXStTKT8vKTtpZighb2UpdGhyb3cgbmV3IEVycm9yKCJ8Iit3KyJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0''@;'; put 'put ''aW9uIik7Zm9yKHZhciBnZT0xO2dlIT1vZS5sZW5ndGg7KytnZSlpZihvZVtnZV0pe3N3aXRjaChEPTEsZ2U+MyYmKGVlPSEwKSxvZVtnZV0uc2xpY2Uob2VbZ2VdLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIitv''@;'; put 'put ''ZVtnZV0uc2xpY2Uob2VbZ2VdLmxlbmd0aC0xKSk7Y2FzZSJEIjpEKj0yNDtjYXNlIkgiOkQqPTYwO2Nhc2UiTSI6aWYoIWVlKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBNIik7RCo9NjB9UCs9RCpwYXJzZUludChvZVtnZV0sMTApfXJldHVybiBQ''@;'; put 'put ''fUVlKCk7dmFyIGN0PW5ldyBEYXRlKCIyMDE3LTAyLTE5VDE5OjA2OjA5LjAwMFoiKTtpc05hTihjdC5nZXRGdWxsWWVhcigpKSYmKGN0PW5ldyBEYXRlKCIyLzE5LzE3IikpO3ZhciBPdD0yMDE3PT1jdC5nZXRGdWxsWWVhcigpO2Z1bmN0aW9uIFB0KHcsUCl7dmFyIEQ9bmV3IERhdGUodyk7''@;'; put 'put ''aWYoT3QpcmV0dXJuIFA+MD9ELnNldFRpbWUoRC5nZXRUaW1lKCkrNjAqRC5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyk6UDwwJiZELnNldFRpbWUoRC5nZXRUaW1lKCktNjAqRC5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyksRDtpZih3IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gdztpZigxOTE3''@;'; put 'put ''PT1jdC5nZXRGdWxsWWVhcigpJiYhaXNOYU4oRC5nZXRGdWxsWWVhcigpKSl7dmFyIGVlPUQuZ2V0RnVsbFllYXIoKTtyZXR1cm4gdy5pbmRleE9mKCIiK2VlKT4tMXx8RC5zZXRGdWxsWWVhcihELmdldEZ1bGxZZWFyKCkrMTAwKSxEfXZhciBvZT13Lm1hdGNoKC9cZCsvZyl8fFsiMjAxNyIs''@;'; put 'put ''IjIiLCIxOSIsIjAiLCIwIiwiMCJdLGdlPW5ldyBEYXRlKCtvZVswXSwrb2VbMV0tMSwrb2VbMl0sK29lWzNdfHwwLCtvZVs0XXx8MCwrb2VbNV18fDApO3JldHVybiB3LmluZGV4T2YoIloiKT4tMSYmKGdlPW5ldyBEYXRlKGdlLmdldFRpbWUoKS02MCpnZS5nZXRUaW1lem9uZU9mZnNldCgp''@;'; put 'put ''KjFlMykpLGdlfWZ1bmN0aW9uIEF0KHcpe2Zvcih2YXIgUD0iIixEPTA7RCE9dy5sZW5ndGg7KytEKVArPVN0cmluZy5mcm9tQ2hhckNvZGUod1tEXSk7cmV0dXJuIFB9ZnVuY3Rpb24gSnQodyl7aWYoIm9iamVjdCIhPXR5cGVvZiB3fHxudWxsPT13KXJldHVybiB3O2lmKHcgaW5zdGFuY2Vv''@;'; put 'put ''ZiBEYXRlKXJldHVybiBuZXcgRGF0ZSh3LmdldFRpbWUoKSk7aWYoQXJyYXkuaXNBcnJheSh3KSlyZXR1cm4gZnVuY3Rpb24gbW4odyl7Zm9yKHZhciBQPVtdLEQ9MDtEPHcubGVuZ3RoOysrRCl7dmFyIGVlPXdbRF07Im9iamVjdCI9PXR5cGVvZiBlZT9QW0RdPUp0KGVlKTpudWxsIT1lZSYm''@;'; put 'put ''KFBbRF09ZWUpfXJldHVybiBQfSh3KTt2YXIgUD17fTtmb3IodmFyIEQgaW4gdylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodyxEKSYmKFBbRF09SnQod1tEXSkpO3JldHVybiBQfWZ1bmN0aW9uIE50KHcsUCl7aWYoIm9iamVjdCIhPXR5cGVvZiBQfHxudWxsPT1QKXJl''@;'; put 'put ''dHVybiB3O2Zvcih2YXIgRCBpbiBQKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChQLEQpJiYod1tEXT1KdChQW0RdKSk7cmV0dXJuIHd9ZnVuY3Rpb24gYm4odyxQKXtmb3IodmFyIEQ9IiI7RC5sZW5ndGg8UDspRCs9dztyZXR1cm4gRH1mdW5jdGlvbiBHbih3KXt2YXIg''@;'; put 'put ''UD1OdW1iZXIodyk7aWYoIWlzTmFOKFApKXJldHVybiBpc0Zpbml0ZShQKT9QOk5hTjtpZighL1xkLy50ZXN0KHcpKXJldHVybiBQO3ZhciBEPTEsZWU9dy5yZXBsYWNlKC8oW1xkXSksKFtcZF0pL2csIiQxJDIiKS5yZXBsYWNlKC9bJF0vZywiIikucmVwbGFjZSgvWyVdL2csZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gRCo9MTAwLCIifSk7cmV0dXJuIGlzTmFOKFA9TnVtYmVyKGVlKSkmJihlZT1lZS5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbihvZSxnZSl7cmV0dXJuIEQ9LUQsZ2V9KSxpc05hTihQPU51bWJlcihlZSkpKT9QOlAvRH1mdW5jdGlvbiBvbih3KXt2YXIgUD1uZXcgRGF0''@;'; put 'put ''ZSh3KSxEPW5ldyBEYXRlKE5hTiksZWU9UC5nZXRZZWFyKCksb2U9UC5nZXRNb250aCgpLGdlPVAuZ2V0RGF0ZSgpO3JldHVybiBpc05hTihnZSl8fGVlPDB8fGVlPjgwOTk/RDoob2U+MHx8Z2U+MSkmJjEwMSE9ZWV8fHcudG9Mb3dlckNhc2UoKS5tYXRjaCgvamFufGZlYnxtYXJ8YXByfG1h''@;'; put 'put ''eXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKT9QOncubWF0Y2goL1teLTAtOTosXC9cXF0vKT9EOlB9ZnVuY3Rpb24gJG4odyxQKXtpZihQJiZQLnJhdylyZXR1cm57dDoicyIsdjp3fTtpZighdylyZXR1cm57dDoieiJ9O2lmKCJUUlVFIj09PXcpcmV0dXJue3Q6ImIiLHY6ITB9O2lm''@;'; put 'put ''KCJGQUxTRSI9PT13KXJldHVybnt0OiJiIix2OiExfTt2YXIgRD0iIixlZT1OdW1iZXIodyk7aWYoaXNGaW5pdGUoZWUpKXJldHVybnt0OiJuIix2OmVlfTtpZihpc05hTihlZSkmJi9cZC8udGVzdCh3KSl7dmFyIG9lPTEsZ2U9dy5yZXBsYWNlKC8oW1xkXSksKFtcZF0pL2csZnVuY3Rpb24o''@;'; put 'put ''aXQsZnQsTXQpe3JldHVybiBEfHwoRD0iIywjIzAiKSxmdCtNdH0pLnJlcGxhY2UoL1skXS9nLCIiKS5yZXBsYWNlKC9cLlxkKi8sZnVuY3Rpb24oaXQpe0R8fChEPSIwIiksRCs9Ii4iO2Zvcih2YXIgZnQ9MjtmdDw9aXQubGVuZ3RoOysrZnQpRCs9IjAiO3JldHVybiBpdH0pLnJlcGxhY2Uo''@;'; put 'put ''L1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIG9lKj0xMDAsRHx8KEQ9IjAiKSxEKz0iJSIsIiJ9KTtpZighaXNOYU4oZWU9TnVtYmVyKGdlKSkpcmV0dXJue3Q6Im4iLHY6ZWUvb2UsejpEfTtpZihnZT1nZS5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbihpdCxmdCl7cmV0dXJuIG9lPS1v''@;'; put 'put ''ZSxmdH0pLCFpc05hTihlZT1OdW1iZXIoZ2UpKSlyZXR1cm57dDoibiIsdjplZS9vZSx6OihEfHwiMCIpKyJfKTsoIisoRHx8IjAiKSsiKTtAIn19ZTppZighUHx8IVAucmF3RGF0ZXMpe3ZhciBfZT1QJiZQLmNlbGxEYXRlcyx2ZT1uZXcgRGF0ZSh3KSxqZT12ZS5nZXRZZWFyKCksVWU9dmUu''@;'; put 'put ''Z2V0TW9udGgoKSxYZT12ZS5nZXREYXRlKCk7aWYoaXNOYU4oWGUpfHxqZTwwfHxqZT44MDk5KWJyZWFrIGU7aWYoKFVlPjB8fFhlPjEpJiYxMDEhPWplKXJldHVybnt0Ol9lPyJkIjoibiIsdjpfZT92ZTpxZSh2ZSksejpQLmRhdGVORnx8Uy5fdGFibGVbMTRdfTtpZih3LnRvTG93ZXJDYXNl''@;'; put 'put ''KCkubWF0Y2goL2phbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLykpcmV0dXJue3Q6X2U/ImQiOiJuIix2Ol9lP3ZlOnFlKHZlKSx6OlAuZGF0ZU5GfHxTLl90YWJsZVsxNF19O2lmKHcubWF0Y2goL1teLTAtOTosXC9cXF0vKSlicmVhayBlO3JldHVybiB2''@;'; put 'put ''ZX1yZXR1cm57dDoicyIsdjp3fX12YXIgenQsTm49NT09ImFiYWNhYmEiLnNwbGl0KC8oOj9iKS9pKS5sZW5ndGg7ZnVuY3Rpb24gaG4odyl7cmV0dXJuIG51bGwhPXcmJiF3fWZ1bmN0aW9uIEN0KHcpe3JldHVybiB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3cuc2xpY2UoMSl9ZnVuY3Rp''@;'; put 'put ''b24gZW4odyl7cmV0dXJuIHc/dy5kYXRhP1Uody5kYXRhKTp3LmFzTm9kZUJ1ZmZlciYmZGU/VSh3LmFzTm9kZUJ1ZmZlcigpLnRvU3RyaW5nKCJiaW5hcnkiKSk6dy5hc0JpbmFyeT9VKHcuYXNCaW5hcnkoKSk6dy5fZGF0YSYmdy5fZGF0YS5nZXRDb250ZW50P1UoQXQoQXJyYXkucHJvdG90''@;'; put 'put ''eXBlLnNsaWNlLmNhbGwody5fZGF0YS5nZXRDb250ZW50KCksMCkpKTp3LmNvbnRlbnQmJncudHlwZT9VKEF0KHcuY29udGVudCkpOm51bGw6bnVsbH1mdW5jdGlvbiBfdCh3KXtpZighdylyZXR1cm4gbnVsbDtpZih3LmRhdGEpcmV0dXJuIFYody5kYXRhKTtpZih3LmFzTm9kZUJ1ZmZlciYm''@;'; put 'put ''ZGUpcmV0dXJuIHcuYXNOb2RlQnVmZmVyKCk7aWYody5fZGF0YSYmdy5fZGF0YS5nZXRDb250ZW50KXt2YXIgUD13Ll9kYXRhLmdldENvbnRlbnQoKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFA/VihQKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChQKX1yZXR1cm4gdy5jb250ZW50JiZ3''@;'; put 'put ''LnR5cGU/dy5jb250ZW50Om51bGx9ZnVuY3Rpb24gX24odyxQKXtmb3IodmFyIEQ9dy5GdWxsUGF0aHN8fG10KHcuZmlsZXMpLGVlPVAudG9Mb3dlckNhc2UoKSxvZT1lZS5yZXBsYWNlKC9cLy9nLCJcXCIpLGdlPTA7Z2U8RC5sZW5ndGg7KytnZSl7dmFyIF9lPURbZ2VdLnRvTG93ZXJDYXNl''@;'; put 'put ''KCk7aWYoZWU9PV9lfHxvZT09X2UpcmV0dXJuIHcuZmlsZXNbRFtnZV1dfXJldHVybiBudWxsfWZ1bmN0aW9uIG90KHcsUCl7dmFyIEQ9X24odyxQKTtpZihudWxsPT1EKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZmlsZSAiK1ArIiBpbiB6aXAiKTtyZXR1cm4gRH1mdW5jdGlvbiBJ''@;'; put 'put ''dCh3LFAsRCl7aWYoIUQpcmV0dXJuIGZ1bmN0aW9uIFZ0KHcpe3JldHVybiB3JiYiLmJpbiI9PT13Lm5hbWUuc2xpY2UoLTQpP190KHcpOmVuKHcpfShvdCh3LFApKTtpZighUClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIEl0KHcsUCl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIG5uKHcs''@;'; put 'put ''UCxEKXtpZighRClyZXR1cm4gZW4ob3QodyxQKSk7aWYoIVApcmV0dXJuIG51bGw7dHJ5e3JldHVybiBubih3LFApfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBEdCh3LFAsRCl7aWYoIUQpcmV0dXJuIF90KG90KHcsUCkpO2lmKCFQKXJldHVybiBudWxsO3RyeXtyZXR1cm4gRHQodyxQ''@;'; put 'put ''KX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gR3QodyxQLEQpe3cuRnVsbFBhdGhzP05lLnV0aWxzLmNmYl9hZGQodyxQLEQpOncuZmlsZShQLEQpfWZ1bmN0aW9uIE1uKCl7cmV0dXJuIHp0P25ldyB6dDpOZS51dGlscy5jZmJfbmV3KCl9ZnVuY3Rpb24gVG4odyxQKXt2YXIgRDtpZih6''@;'; put 'put ''dClzd2l0Y2goUC50eXBlKXtjYXNlImJhc2U2NCI6RD1uZXcgenQodyx7YmFzZTY0OiEwfSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmNhc2UiYXJyYXkiOkQ9bmV3IHp0KHcse2Jhc2U2NDohMX0pO2JyZWFrO2Nhc2UiYnVmZmVyIjpEPW5ldyB6dCh3KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitQLnR5cGUpfWVsc2Ugc3dpdGNoKFAudHlwZSl7Y2FzZSJiYXNlNjQiOkQ9TmUucmVhZCh3LHt0eXBlOiJiYXNlNjQifSk7YnJlYWs7Y2FzZSJiaW5hcnkiOkQ9TmUucmVhZCh3LHt0eXBlOiJiaW5hcnkifSk7YnJlYWs7Y2FzZSJidWZmZXIiOmNh''@;'; put 'put ''c2UiYXJyYXkiOkQ9TmUucmVhZCh3LHt0eXBlOiJidWZmZXIifSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUC50eXBlKX1yZXR1cm4gRH1mdW5jdGlvbiBzbih3LFApe2lmKCIvIj09dy5jaGFyQXQoMCkpcmV0dXJuIHcuc2xpY2UoMSk7dmFy''@;'; put 'put ''IEQ9UC5zcGxpdCgiLyIpOyIvIiE9UC5zbGljZSgtMSkmJkQucG9wKCk7Zm9yKHZhciBlZT13LnNwbGl0KCIvIik7MCE9PWVlLmxlbmd0aDspe3ZhciBvZT1lZS5zaGlmdCgpOyIuLiI9PT1vZT9ELnBvcCgpOiIuIiE9PW9lJiZELnB1c2gob2UpfXJldHVybiBELmpvaW4oIi8iKX10eXBlb2Yg''@;'; put 'put ''SlNaaXBTeW5jPCJ1IiYmKHp0PUpTWmlwU3luYyksV2UuZXhwb3J0cyYmdHlwZW9mIHp0PiJ1IiYmKHp0PVQoNzU0NDYpKTt2YXIgQm49Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5cclxuJyxGbj0vKD86W14iXHM/PlwvXSspXHMqPVxz''@;'; put 'put ''KigoPzoiKSg/OlteIl0qPykoPzoiKXwoPzonKSg/OlteJ10qPykoPzonKXwoPzpbXiciPlxzXSspKS9nLHF0PS88W1wvXD9dP1thLXpBLVowLTk6Xy1dKyg/OlxzK1teIlxzPz5cL10rXHMqPVxzKig/OiJbXiJdKiJ8J1teJ10qJ3xbXiciPlxzPV0rKSkqXHM/W1wvXD9dPz4vZztCbi5tYXRj''@;'; put 'put ''aChxdCl8fChxdD0vPFtePl0qPi9nKTt2YXIgSG49Lzxcdyo6LyxpaT0vPChcLz8pXHcrOi87ZnVuY3Rpb24gY24odyxQLEQpe2Zvcih2YXIgZWU9e30sb2U9MCxnZT0wO29lIT09dy5sZW5ndGgmJjMyIT09KGdlPXcuY2hhckNvZGVBdChvZSkpJiYxMCE9PWdlJiYxMyE9PWdlOysrb2UpO2lm''@;'; put 'put ''KFB8fChlZVswXT13LnNsaWNlKDAsb2UpKSxvZT09PXcubGVuZ3RoKXJldHVybiBlZTt2YXIgX2U9dy5tYXRjaChGbiksdmU9MCxNZT0iIixqZT0wLFVlPSIiLFhlPSIiLGl0PTE7aWYoX2UpZm9yKGplPTA7amUhPV9lLmxlbmd0aDsrK2plKXtmb3IoWGU9X2VbamVdLGdlPTA7Z2UhPVhlLmxl''@;'; put 'put ''bmd0aCYmNjEhPT1YZS5jaGFyQ29kZUF0KGdlKTsrK2dlKTtmb3IoVWU9WGUuc2xpY2UoMCxnZSkudHJpbSgpOzMyPT1YZS5jaGFyQ29kZUF0KGdlKzEpOykrK2dlO2ZvcihpdD0zND09KG9lPVhlLmNoYXJDb2RlQXQoZ2UrMSkpfHwzOT09b2U/MTowLE1lPVhlLnNsaWNlKGdlKzEraXQsWGUu''@;'; put 'put ''bGVuZ3RoLWl0KSx2ZT0wO3ZlIT1VZS5sZW5ndGgmJjU4IT09VWUuY2hhckNvZGVBdCh2ZSk7Kyt2ZSk7aWYodmU9PT1VZS5sZW5ndGgpVWUuaW5kZXhPZigiXyIpPjAmJihVZT1VZS5zbGljZSgwLFVlLmluZGV4T2YoIl8iKSkpLGVlW1VlXT1NZSxEfHwoZWVbVWUudG9Mb3dlckNhc2UoKV09''@;'; put 'put ''TWUpO2Vsc2V7dmFyIGZ0PSg1PT09dmUmJiJ4bWxucyI9PT1VZS5zbGljZSgwLDUpPyJ4bWxucyI6IiIpK1VlLnNsaWNlKHZlKzEpO2lmKGVlW2Z0XSYmImV4dCI9PVVlLnNsaWNlKHZlLTMsdmUpKWNvbnRpbnVlO2VlW2Z0XT1NZSxEfHwoZWVbZnQudG9Mb3dlckNhc2UoKV09TWUpfX1yZXR1''@;'; put 'put ''cm4gZWV9ZnVuY3Rpb24gam4odyl7cmV0dXJuIHcucmVwbGFjZShpaSwiPCQxIil9dmFyIFhyPXsiJnF1b3Q7IjonIicsIiZhcG9zOyI6IiciLCImZ3Q7IjoiPiIsIiZsdDsiOiI8IiwiJmFtcDsiOiImIn0sdmk9d2UoWHIpLEVyPWZ1bmN0aW9uKCl7dmFyIHc9LyYoPzpxdW90fGFwb3N8Z3R8''@;'; put 'put ''bHR8YW1wfCN4PyhbXGRhLWZBLUZdKykpOy9naSxQPS9feChbXGRhLWZBLUZdezR9KV8vZ2k7cmV0dXJuIGZ1bmN0aW9uIEQoZWUpe3ZhciBvZT1lZSsiIixnZT1vZS5pbmRleE9mKCI8IVtDREFUQVsiKTtpZigtMT09Z2UpcmV0dXJuIG9lLnJlcGxhY2UodyxmdW5jdGlvbih2ZSxNZSl7cmV0''@;'; put 'put ''dXJuIFhyW3ZlXXx8U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChNZSx2ZS5pbmRleE9mKCJ4Iik+LTE/MTY6MTApKXx8dmV9KS5yZXBsYWNlKFAsZnVuY3Rpb24odmUsTWUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KE1lLDE2KSl9KTt2YXIgX2U9b2UuaW5kZXhP''@;'; put 'put ''ZigiXV0+Iik7cmV0dXJuIEQob2Uuc2xpY2UoMCxnZSkpK29lLnNsaWNlKGdlKzksX2UpK0Qob2Uuc2xpY2UoX2UrMykpfX0oKSxZaT0vWyY8PiciXS9nLEpyPS9bXHUwMDAwLVx1MDAwOFx1MDAwYi1cdTAwMWZdL2csYW89L194WzAtOWEtZkEtRl17NH1fL2c7ZnVuY3Rpb24gQnIodyl7cmV0''@;'; put 'put ''dXJuKHcrIiIpLnJlcGxhY2UoYW8sIl94MDA1RiQmIikucmVwbGFjZShZaSxmdW5jdGlvbihEKXtyZXR1cm4gdmlbRF19KS5yZXBsYWNlKEpyLGZ1bmN0aW9uKEQpe3JldHVybiJfeCIrKCIwMDAiK0QuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSsiXyJ9KX1mdW5jdGlv''@;'; put 'put ''biBKaSh3KXtyZXR1cm4gQnIodykucmVwbGFjZSgvXG4vZywiX3gwMDBhXyIpfWZ1bmN0aW9uIHRvKHcpe3JldHVybiBCcih3KS5yZXBsYWNlKC8gL2csIl94MDAyMF8iKX12YXIgY289L1tcdTAwMDAtXHUwMDFmXS9nO2Z1bmN0aW9uIGxvKHcpe3JldHVybih3KyIiKS5yZXBsYWNlKFlpLGZ1''@;'; put 'put ''bmN0aW9uKEQpe3JldHVybiB2aVtEXX0pLnJlcGxhY2UoL1xuL2csIjxici8+IikucmVwbGFjZShjbyxmdW5jdGlvbihEKXtyZXR1cm4iJiN4IisoIjAwMCIrRC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpKyI7In0pfWZ1bmN0aW9uIHNvKHcpe3JldHVybih3KyIiKS5y''@;'; put 'put ''ZXBsYWNlKFlpLGZ1bmN0aW9uKEQpe3JldHVybiB2aVtEXX0pLnJlcGxhY2UoY28sZnVuY3Rpb24oRCl7cmV0dXJuIiYjeCIrRC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyI7In0pfXZhciBYaT1mdW5jdGlvbigpe3ZhciB3PS8mIyhcZCspOy9nO2Z1bmN0aW9u''@;'; put 'put ''IFAoRCxlZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZWUsMTApKX1yZXR1cm4gZnVuY3Rpb24oZWUpe3JldHVybiBlZS5yZXBsYWNlKHcsUCl9fSgpLHBvPWZ1bmN0aW9uKFApe3JldHVybiBQLnJlcGxhY2UoLyhcclxufFtcclxuXSkvZywiJiMxMDsiKX07ZnVuY3Rp''@;'; put 'put ''b24gX3Iodyl7c3dpdGNoKHcpe2Nhc2UgMTpjYXNlITA6Y2FzZSIxIjpjYXNlInRydWUiOmNhc2UiVFJVRSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIEZpPWZ1bmN0aW9uKFApe2Zvcih2YXIgRD0iIixlZT0wLG9lPTAsZ2U9MCxfZT0wLHZlPTAsTWU9MDtlZTxQLmxlbmd0aDsp''@;'; put 'put ''KG9lPVAuY2hhckNvZGVBdChlZSsrKSk8MTI4P0QrPVN0cmluZy5mcm9tQ2hhckNvZGUob2UpOihnZT1QLmNoYXJDb2RlQXQoZWUrKyksb2U+MTkxJiZvZTwyMjQ/KHZlPSgzMSZvZSk8PDYsdmV8PTYzJmdlLEQrPVN0cmluZy5mcm9tQ2hhckNvZGUodmUpKTooX2U9UC5jaGFyQ29kZUF0KGVl''@;'; put 'put ''KyspLG9lPDI0MD9EKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgxNSZvZSk8PDEyfCg2MyZnZSk8PDZ8NjMmX2UpOihNZT0oKDcmb2UpPDwxOHwoNjMmZ2UpPDwxMnwoNjMmX2UpPDw2fDYzJih2ZT1QLmNoYXJDb2RlQXQoZWUrKykpKS02NTUzNixEKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2''@;'; put 'put ''KyhNZT4+PjEwJjEwMjMpKSxEKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJk1lKSkpKSk7cmV0dXJuIER9LEhvPWZ1bmN0aW9uKHcpe2Zvcih2YXIgUD1bXSxEPTAsZWU9MCxvZT0wO0Q8dy5sZW5ndGg7KXN3aXRjaChlZT13LmNoYXJDb2RlQXQoRCsrKSwhMCl7Y2FzZSBlZTwx''@;'; put 'put ''Mjg6UC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZWUpKTticmVhaztjYXNlIGVlPDIwNDg6UC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTkyKyhlZT4+NikpKSxQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKDYzJmVlKSkpO2JyZWFrO2Nhc2UgZWU+PTU1Mjk2JiZlZTw1NzM0''@;'; put 'put ''NDplZS09NTUyOTYsb2U9dy5jaGFyQ29kZUF0KEQrKyktNTYzMjArKGVlPDwxMCksUC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjQwKyhvZT4+MTgmNykpKSxQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQrKG9lPj4xMiY2MykpKSxQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgx''@;'; put 'put ''MjgrKG9lPj42JjYzKSkpLFAucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmb2UpKSk7YnJlYWs7ZGVmYXVsdDpQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQrKGVlPj4xMikpKSxQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKGVlPj42JjYzKSkpLFAucHVzaChT''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmZWUpKSl9cmV0dXJuIFAuam9pbigiIil9O2lmKGRlKXt2YXIgZ2E9ZnVuY3Rpb24oUCl7dmFyIGVlLG9lLE1lLEQ9QnVmZmVyLmFsbG9jKDIqUC5sZW5ndGgpLGdlPTEsX2U9MCx2ZT0wO2ZvcihvZT0wO29lPFAubGVuZ3RoO29lKz1nZSlnZT0x''@;'; put 'put ''LChNZT1QLmNoYXJDb2RlQXQob2UpKTwxMjg/ZWU9TWU6TWU8MjI0PyhlZT02NCooMzEmTWUpKyg2MyZQLmNoYXJDb2RlQXQob2UrMSkpLGdlPTIpOk1lPDI0MD8oZWU9NDA5NiooMTUmTWUpKzY0Kig2MyZQLmNoYXJDb2RlQXQob2UrMSkpKyg2MyZQLmNoYXJDb2RlQXQob2UrMikpLGdlPTMp''@;'; put 'put ''OihnZT00LGVlPTI2MjE0NCooNyZNZSkrNDA5NiooNjMmUC5jaGFyQ29kZUF0KG9lKzEpKSs2NCooNjMmUC5jaGFyQ29kZUF0KG9lKzIpKSsoNjMmUC5jaGFyQ29kZUF0KG9lKzMpKSx2ZT01NTI5NisoKGVlLT02NTUzNik+Pj4xMCYxMDIzKSxlZT01NjMyMCsoMTAyMyZlZSkpLDAhPT12ZSYm''@;'; put 'put ''KERbX2UrK109MjU1JnZlLERbX2UrK109dmU+Pj44LHZlPTApLERbX2UrK109ZWUlMjU2LERbX2UrK109ZWU+Pj44O3JldHVybiBELnNsaWNlKDAsX2UpLnRvU3RyaW5nKCJ1Y3MyIil9LGxhPSJmb28gYmFyIGJhelx4ZTJceDk4XHg4M1x4ZjBceDlmXHg4ZFx4YTMiO0ZpKGxhKT09Z2EobGEp''@;'; put 'put ''JiYoRmk9Z2EpO3ZhciBWdT1mdW5jdGlvbihQKXtyZXR1cm4gdWUoUCwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX07RmkobGEpPT1WdShsYSkmJihGaT1WdSksSG89ZnVuY3Rpb24odyl7cmV0dXJuIHVlKHcsInV0ZjgiKS50b1N0cmluZygiYmluYXJ5Iil9fXZhciB3LGdzPSh3PXt9LGZ1''@;'; put 'put ''bmN0aW9uKEQsZWUpe3ZhciBvZT1EKyJ8IisoZWV8fCIiKTtyZXR1cm4gd1tvZV0/d1tvZV06d1tvZV09bmV3IFJlZ0V4cCgiPCg/Olxcdys6KT8iK0QrJyg/OiB4bWw6c3BhY2U9InByZXNlcnZlIik/KD86W14+XSopPihbXFxzXFxTXSo/KTwvKD86XFx3KzopPycrRCsiPiIsZWV8fCIiKX0p''@;'; put 'put ''LEJ1PWZ1bmN0aW9uKCl7dmFyIHc9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIlx4YjciXSxbInF1b3QiLCciJ10sWyJhcG9zIiwiJyJdLFsiZ3QiLCI+Il0sWyJsdCIsIjwiXSxbImFtcCIsIiYiXV0ubWFwKGZ1bmN0aW9uKFApe3JldHVybltuZXcgUmVnRXhwKCImIitQWzBdKyI7IiwiaWci''@;'; put 'put ''KSxQWzFdXX0pO3JldHVybiBmdW5jdGlvbihEKXtmb3IodmFyIGVlPUQucmVwbGFjZSgvXltcdFxuXHIgXSsvLCIiKS5yZXBsYWNlKC9bXHRcblxyIF0rJC8sIiIpLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLnJlcGxhY2UoLzxccypbYkJdW3JSXVxzKlwvPz4vZywiXG4iKS5yZXBsYWNl''@;'; put 'put ''KC88W14+XSo+L2csIiIpLG9lPTA7b2U8dy5sZW5ndGg7KytvZSllZT1lZS5yZXBsYWNlKHdbb2VdWzBdLHdbb2VdWzFdKTtyZXR1cm4gZWV9fSgpLFgwPWZ1bmN0aW9uKCl7dmFyIHc9e307cmV0dXJuIGZ1bmN0aW9uKEQpe3JldHVybiB2b2lkIDAhPT13W0RdP3dbRF06d1tEXT1uZXcgUmVn''@;'; put 'put ''RXhwKCI8KD86dnQ6KT8iK0QrIj4oW1xcc1xcU10qPyk8Lyg/OnZ0Oik/IitEKyI+IiwiZyIpfX0oKSxKMz0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxLZD0vPCg/OnZ0OikoW14+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIGQwKHcsUCl7dmFyIEQ9Y24odyksZWU9dy5tYXRjaChYMChELmJh''@;'; put 'put ''c2VUeXBlKSl8fFtdLG9lPVtdO2lmKGVlLmxlbmd0aCE9RC5zaXplKXtpZihQLldURil0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgdmVjdG9yIGxlbmd0aCAiK2VlLmxlbmd0aCsiICE9ICIrRC5zaXplKTtyZXR1cm4gb2V9cmV0dXJuIGVlLmZvckVhY2goZnVuY3Rpb24oZ2Upe3ZhciBf''@;'; put 'put ''ZT1nZS5yZXBsYWNlKEozLCIiKS5tYXRjaChLZCk7X2UmJm9lLnB1c2goe3Y6RmkoX2VbMl0pLHQ6X2VbMV19KX0pLG9lfXZhciBMYz0vKF5cc3xccyR8XG4pLztmdW5jdGlvbiB2YSh3LFApe3JldHVybiI8Iit3KyhQLm1hdGNoKExjKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4i''@;'; put 'put ''K1ArIjwvIit3KyI+In1mdW5jdGlvbiBGbCh3KXtyZXR1cm4gbXQodykubWFwKGZ1bmN0aW9uKFApe3JldHVybiIgIitQKyc9Iicrd1tQXSsnIid9KS5qb2luKCIiKX1mdW5jdGlvbiBNcih3LFAsRCl7cmV0dXJuIjwiK3crKG51bGwhPUQ/RmwoRCk6IiIpKyhudWxsIT1QPyhQLm1hdGNoKExj''@;'; put 'put ''KT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK1ArIjwvIit3OiIvIikrIj4ifWZ1bmN0aW9uIHIyKHcsUCl7dHJ5e3JldHVybiB3LnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCovLCIiKX1jYXRjaChEKXtpZihQKXRocm93IER9cmV0dXJuIiJ9dmFyIElyLEV1LHNhPXtkYzoi''@;'; put 'put ''aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLGRjdGVybXM6Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iLGRjbWl0eXBlOiJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIixteDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvbWFjL2V4Y2VsLzIwMDgv''@;'; put 'put ''bWFpbiIscjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIsc2pzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3NoZWV0anMvY29yZS1wcm9wZXJ0aWVzIix2dDoiaHR0cDov''@;'; put 'put ''L3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMiLHhzaToiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLHhzZDoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiLG1haW46WyJodHRwOi8v''@;'; put 'put ''c2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4iLCJodHRwOi8vc2No''@;'; put 'put ''ZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXX0sR2k9e286InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIseDoidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6ZXhjZWwiLHNzOiJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9m''@;'; put 'put ''ZmljZTpzcHJlYWRzaGVldCIsZHQ6InV1aWQ6QzJGNDEwMTAtNjVCMy0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyIixtdjoiaHR0cDovL21hY1ZtbFNjaGVtYVVyaSIsdjoidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiLGh0bWw6Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAi''@;'; put 'put ''fSxrbD1mdW5jdGlvbih3KXtmb3IodmFyIFA9W10sZWU9MDtlZTx3WzBdLmxlbmd0aDsrK2VlKWlmKHdbMF1bZWVdKWZvcih2YXIgb2U9MCxnZT13WzBdW2VlXS5sZW5ndGg7b2U8Z2U7b2UrPTEwMjQwKVAucHVzaC5hcHBseShQLHdbMF1bZWVdLnNsaWNlKG9lLG9lKzEwMjQwKSk7cmV0dXJu''@;'; put 'put ''IFB9LG8yPWtsLFBjPWZ1bmN0aW9uKHcsUCxEKXtmb3IodmFyIGVlPVtdLG9lPVA7b2U8RDtvZSs9MillZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoV24odyxvZSkpKTtyZXR1cm4gZWUuam9pbigiIikucmVwbGFjZSh5LCIiKX0sRGE9UGMscDA9ZnVuY3Rpb24odyxQLEQpe2Zvcih2YXIg''@;'; put 'put ''ZWU9W10sb2U9UDtvZTxQK0Q7KytvZSllZS5wdXNoKCgiMCIrd1tvZV0udG9TdHJpbmcoMTYpKS5zbGljZSgtMikpO3JldHVybiBlZS5qb2luKCIiKX0sS2w9cDAsa3U9ZnVuY3Rpb24odyxQLEQpe2Zvcih2YXIgZWU9W10sb2U9UDtvZTxEO29lKyspZWUucHVzaChTdHJpbmcuZnJvbUNoYXJD''@;'; put 'put ''b2RlKG5vKHcsb2UpKSk7cmV0dXJuIGVlLmpvaW4oIiIpfSxhMj1rdSxQYT1mdW5jdGlvbih3LFApe3ZhciBEPV9pKHcsUCk7cmV0dXJuIEQ+MD9rdSh3LFArNCxQKzQrRC0xKToiIn0sQ289UGEsbTA9ZnVuY3Rpb24odyxQKXt2YXIgRD1faSh3LFApO3JldHVybiBEPjA/a3UodyxQKzQsUCs0''@;'; put 'put ''K0QtMSk6IiJ9LFhkPW0wLEpkPWZ1bmN0aW9uKHcsUCl7dmFyIEQ9MipfaSh3LFApO3JldHVybiBEPjA/a3UodyxQKzQsUCs0K0QtMSk6IiJ9LGVwPUpkO0lyPUV1PWZ1bmN0aW9uKFAsRCl7dmFyIGVlPV9pKFAsRCk7cmV0dXJuIGVlPjA/UGMoUCxEKzQsRCs0K2VlKToiIn07dmFyIGcwLFFk''@;'; put 'put ''LElvPWZ1bmN0aW9uKHcsUCl7dmFyIEQ9X2kodyxQKTtyZXR1cm4gRD4wP2t1KHcsUCs0LFArNCtEKToiIn0sRWE9SW87ZzA9UWQ9ZnVuY3Rpb24odyxQKXtyZXR1cm4gZnVuY3Rpb24gJGwodyxQKXtmb3IodmFyIEQ9MS0yKih3W1ArN10+Pj43KSxlZT0oKDEyNyZ3W1ArN10pPDw0KSsod1tQ''@;'; put 'put ''KzZdPj4+NCYxNSksb2U9MTUmd1tQKzZdLGdlPTU7Z2U+PTA7LS1nZSlvZT0yNTYqb2Urd1tQK2dlXTtyZXR1cm4gMjA0Nz09ZWU/MD09b2U/RCooMS8wKTpOYU46KDA9PWVlP2VlPS0xMDIyOihlZS09MTAyMyxvZSs9TWF0aC5wb3coMiw1MikpLEQqTWF0aC5wb3coMixlZS01Mikqb2UpfSh3''@;'; put 'put ''LFApfTt2YXIgbDI9ZnVuY3Rpb24oUCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoUCl9O2RlJiYoUGM9ZnVuY3Rpb24odyxQLEQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIodyk/dy50b1N0cmluZygidXRmMTZsZSIsUCxEKS5yZXBsYWNlKHksIiIpOkRhKHcsUCxEKX0scDA9ZnVuY3Rpb24odyxQ''@;'; put 'put ''LEQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIodyk/dy50b1N0cmluZygiaGV4IixQLFArRCk6S2wodyxQLEQpfSxQYT1mdW5jdGlvbihQLEQpe2lmKCFCdWZmZXIuaXNCdWZmZXIoUCkpcmV0dXJuIENvKFAsRCk7dmFyIGVlPVAucmVhZFVJbnQzMkxFKEQpO3JldHVybiBlZT4wP1AudG9TdHJp''@;'; put 'put ''bmcoInV0ZjgiLEQrNCxEKzQrZWUtMSk6IiJ9LG0wPWZ1bmN0aW9uKFAsRCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihQKSlyZXR1cm4gWGQoUCxEKTt2YXIgZWU9UC5yZWFkVUludDMyTEUoRCk7cmV0dXJuIGVlPjA/UC50b1N0cmluZygidXRmOCIsRCs0LEQrNCtlZS0xKToiIn0sSmQ9ZnVuY3Rp''@;'; put 'put ''b24oUCxEKXtpZighQnVmZmVyLmlzQnVmZmVyKFApKXJldHVybiBlcChQLEQpO3ZhciBlZT0yKlAucmVhZFVJbnQzMkxFKEQpO3JldHVybiBQLnRvU3RyaW5nKCJ1dGYxNmxlIixEKzQsRCs0K2VlLTEpfSxJcj1mdW5jdGlvbihQLEQpe2lmKCFCdWZmZXIuaXNCdWZmZXIoUCkpcmV0dXJuIEV1''@;'; put 'put ''KFAsRCk7dmFyIGVlPVAucmVhZFVJbnQzMkxFKEQpO3JldHVybiBQLnRvU3RyaW5nKCJ1dGYxNmxlIixEKzQsRCs0K2VlKX0sSW89ZnVuY3Rpb24oUCxEKXtpZighQnVmZmVyLmlzQnVmZmVyKFApKXJldHVybiBFYShQLEQpO3ZhciBlZT1QLnJlYWRVSW50MzJMRShEKTtyZXR1cm4gUC50b1N0''@;'; put 'put ''cmluZygidXRmOCIsRCs0LEQrNCtlZSl9LGt1PWZ1bmN0aW9uKFAsRCxlZSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihQKT9QLnRvU3RyaW5nKCJ1dGY4IixELGVlKTphMihQLEQsZWUpfSxrbD1mdW5jdGlvbih3KXtyZXR1cm4gd1swXS5sZW5ndGg+MCYmQnVmZmVyLmlzQnVmZmVyKHdbMF1b''@;'; put 'put ''MF0pP0J1ZmZlci5jb25jYXQod1swXSk6bzIodyl9LE09ZnVuY3Rpb24odyl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih3WzBdKT9CdWZmZXIuY29uY2F0KHcpOltdLmNvbmNhdC5hcHBseShbXSx3KX0sZzA9ZnVuY3Rpb24oUCxEKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKFApP1AucmVhZERv''@;'; put 'put ''dWJsZUxFKEQpOlFkKFAsRCl9LGwyPWZ1bmN0aW9uKFApe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoUCl8fEFycmF5LmlzQXJyYXkoUCl9KSx0eXBlb2YgY3B0YWJsZTwidSImJihQYz1mdW5jdGlvbih3LFAsRCl7cmV0dXJuIGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsdy5zbGljZShQLEQp''@;'; put 'put ''KS5yZXBsYWNlKHksIiIpfSxrdT1mdW5jdGlvbih3LFAsRCl7cmV0dXJuIGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLHcuc2xpY2UoUCxEKSl9LFBhPWZ1bmN0aW9uKHcsUCl7dmFyIEQ9X2kodyxQKTtyZXR1cm4gRD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKEwsdy5zbGljZShQKzQsUCs0''@;'; put 'put ''K0QtMSkpOiIifSxtMD1mdW5jdGlvbih3LFApe3ZhciBEPV9pKHcsUCk7cmV0dXJuIEQ+MD9jcHRhYmxlLnV0aWxzLmRlY29kZShCLHcuc2xpY2UoUCs0LFArNCtELTEpKToiIn0sSmQ9ZnVuY3Rpb24odyxQKXt2YXIgRD0yKl9pKHcsUCk7cmV0dXJuIEQ+MD9jcHRhYmxlLnV0aWxzLmRlY29k''@;'; put 'put ''ZSgxMjAwLHcuc2xpY2UoUCs0LFArNCtELTEpKToiIn0sSXI9ZnVuY3Rpb24odyxQKXt2YXIgRD1faSh3LFApO3JldHVybiBEPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCx3LnNsaWNlKFArNCxQKzQrRCkpOiIifSxJbz1mdW5jdGlvbih3LFApe3ZhciBEPV9pKHcsUCk7cmV0dXJuIEQ+''@;'; put 'put ''MD9jcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSx3LnNsaWNlKFArNCxQKzQrRCkpOiIifSk7dmFyIG5vPWZ1bmN0aW9uKHcsUCl7cmV0dXJuIHdbUF19LFduPWZ1bmN0aW9uKHcsUCl7cmV0dXJuIDI1Nip3W1ArMV0rd1tQXX0sYmk9ZnVuY3Rpb24odyxQKXt2YXIgRD0yNTYqd1tQKzFdK3db''@;'; put 'put ''UF07cmV0dXJuIEQ8MzI3Njg/RDotMSooNjU1MzUtRCsxKX0sX2k9ZnVuY3Rpb24odyxQKXtyZXR1cm4gd1tQKzNdKigxPDwyNCkrKHdbUCsyXTw8MTYpKyh3W1ArMV08PDgpK3dbUF19LHVhPWZ1bmN0aW9uKHcsUCl7cmV0dXJuIHdbUCszXTw8MjR8d1tQKzJdPDwxNnx3W1ArMV08PDh8d1tQ''@;'; put 'put ''XX0sSGw9ZnVuY3Rpb24odyxQKXtyZXR1cm4gd1tQXTw8MjR8d1tQKzFdPDwxNnx3W1ArMl08PDh8d1tQKzNdfTtmdW5jdGlvbiBObCh3LFApe3ZhciBlZSxvZSxfZSx2ZSxNZSxqZSxEPSIiLGdlPVtdO3N3aXRjaChQKXtjYXNlImRiY3MiOmlmKGplPXRoaXMubCxkZSYmQnVmZmVyLmlzQnVm''@;'; put 'put ''ZmVyKHRoaXMpKUQ9dGhpcy5zbGljZSh0aGlzLmwsdGhpcy5sKzIqdykudG9TdHJpbmcoInV0ZjE2bGUiKTtlbHNlIGZvcihNZT0wO01lPHc7KytNZSlEKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFduKHRoaXMsamUpKSxqZSs9Mjt3Kj0yO2JyZWFrO2Nhc2UidXRmOCI6RD1rdSh0aGlzLHRoaXMu''@;'; put 'put ''bCx0aGlzLmwrdyk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjpEPVBjKHRoaXMsdGhpcy5sLHRoaXMubCsodyo9MikpO2JyZWFrO2Nhc2Uid3N0ciI6aWYoISh0eXBlb2YgY3B0YWJsZTwidSIpKXJldHVybiBObC5jYWxsKHRoaXMsdywiZGJjcyIpO0Q9Y3B0YWJsZS51dGlscy5kZWNvZGUoQix0aGlz''@;'; put 'put ''LnNsaWNlKHRoaXMubCx0aGlzLmwrMip3KSksdyo9MjticmVhaztjYXNlImxwc3RyLWFuc2kiOkQ9UGEodGhpcyx0aGlzLmwpLHc9NCtfaSh0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHN0ci1jcCI6RD1tMCh0aGlzLHRoaXMubCksdz00K19pKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxw''@;'; put 'put ''d3N0ciI6RD1KZCh0aGlzLHRoaXMubCksdz00KzIqX2kodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBwNCI6dz00K19pKHRoaXMsdGhpcy5sKSxEPUlyKHRoaXMsdGhpcy5sKSwyJncmJih3Kz0yKTticmVhaztjYXNlIjhscHA0Ijp3PTQrX2kodGhpcyx0aGlzLmwpLEQ9SW8odGhpcyx0aGlz''@;'; put 'put ''LmwpLDMmdyYmKHcrPTQtKDMmdykpO2JyZWFrO2Nhc2UiY3N0ciI6Zm9yKHc9MCxEPSIiOzAhPT0oX2U9bm8odGhpcyx0aGlzLmwrdysrKSk7KWdlLnB1c2gocShfZSkpO0Q9Z2Uuam9pbigiIik7YnJlYWs7Y2FzZSJfd3N0ciI6Zm9yKHc9MCxEPSIiOzAhPT0oX2U9V24odGhpcyx0aGlzLmwr''@;'; put 'put ''dykpOylnZS5wdXNoKHEoX2UpKSx3Kz0yO3crPTIsRD1nZS5qb2luKCIiKTticmVhaztjYXNlImRiY3MtY29udCI6Zm9yKEQ9IiIsamU9dGhpcy5sLE1lPTA7TWU8dzsrK01lKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YoamUpKXJldHVybiBfZT1ubyh0aGlzLGplKSx0''@;'; put 'put ''aGlzLmw9amUrMSx2ZT1ObC5jYWxsKHRoaXMsdy1NZSxfZT8iZGJjcy1jb250Ijoic2Jjcy1jb250IiksZ2Uuam9pbigiIikrdmU7Z2UucHVzaChxKFduKHRoaXMsamUpKSksamUrPTJ9RD1nZS5qb2luKCIiKSx3Kj0yO2JyZWFrO2Nhc2UiY3BzdHIiOmlmKHR5cGVvZiBjcHRhYmxlPCJ1Iil7''@;'; put 'put ''RD1jcHRhYmxlLnV0aWxzLmRlY29kZShCLHRoaXMuc2xpY2UodGhpcy5sLHRoaXMubCt3KSk7YnJlYWt9Y2FzZSJzYmNzLWNvbnQiOmZvcihEPSIiLGplPXRoaXMubCxNZT0wO01lIT13OysrTWUpe2lmKHRoaXMubGVucyYmLTEhPT10aGlzLmxlbnMuaW5kZXhPZihqZSkpcmV0dXJuIF9lPW5v''@;'; put 'put ''KHRoaXMsamUpLHRoaXMubD1qZSsxLHZlPU5sLmNhbGwodGhpcyx3LU1lLF9lPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxnZS5qb2luKCIiKSt2ZTtnZS5wdXNoKHEobm8odGhpcyxqZSkpKSxqZSs9MX1EPWdlLmpvaW4oIiIpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKHcpe2Nhc2UgMTpyZXR1''@;'; put 'put ''cm4gZWU9bm8odGhpcyx0aGlzLmwpLHRoaXMubCsrLGVlO2Nhc2UgMjpyZXR1cm4gZWU9KCJpIj09PVA/Ymk6V24pKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTIsZWU7Y2FzZSA0OmNhc2UtNDpyZXR1cm4iaSIhPT1QJiYxMjgmdGhpc1t0aGlzLmwrM10/KG9lPV9pKHRoaXMsdGhpcy5sKSx0aGlz''@;'; put 'put ''LmwrPTQsb2UpOihlZT0odz4wP3VhOkhsKSh0aGlzLHRoaXMubCksdGhpcy5sKz00LGVlKTtjYXNlIDg6Y2FzZS04OmlmKCJmIj09PVApcmV0dXJuIG9lPTg9PXc/ZzAodGhpcyx0aGlzLmwpOmcwKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3Ro''@;'; put 'put ''aXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3RoaXMubCswXV0sMCksdGhpcy5sKz04LG9lO3c9ODtjYXNlIDE2OkQ9cDAodGhpcyx0aGlzLmwsdyl9fXJldHVybiB0aGlzLmwrPXcsRH12YXIgUW89ZnVuY3Rpb24odyxQLEQpe3dbRF09''@;'; put 'put ''MjU1JlAsd1tEKzFdPVA+Pj44JjI1NSx3W0QrMl09UD4+PjE2JjI1NSx3W0QrM109UD4+PjI0JjI1NX0sSjA9ZnVuY3Rpb24odyxQLEQpe3dbRF09MjU1JlAsd1tEKzFdPVA+PjgmMjU1LHdbRCsyXT1QPj4xNiYyNTUsd1tEKzNdPVA+PjI0JjI1NX0sRGw9ZnVuY3Rpb24odyxQLEQpe3dbRF09''@;'; put 'put ''MjU1JlAsd1tEKzFdPVA+Pj44JjI1NX07ZnVuY3Rpb24gczIodyxQLEQpe3ZhciBlZT0wLG9lPTA7aWYoImRiY3MiPT09RCl7Zm9yKG9lPTA7b2UhPVAubGVuZ3RoOysrb2UpRGwodGhpcyxQLmNoYXJDb2RlQXQob2UpLHRoaXMubCsyKm9lKTtlZT0yKlAubGVuZ3RofWVsc2UgaWYoInNiY3Mi''@;'; put 'put ''PT09RCl7aWYodHlwZW9mIGNwdGFibGU8InUiJiY4NzQ9PUwpZm9yKG9lPTA7b2UhPVAubGVuZ3RoOysrb2Upe3ZhciBnZT1jcHRhYmxlLnV0aWxzLmVuY29kZShMLFAuY2hhckF0KG9lKSk7dGhpc1t0aGlzLmwrb2VdPWdlWzBdfWVsc2UgZm9yKFA9UC5yZXBsYWNlKC9bXlx4MDAtXHg3Rl0v''@;'; put 'put ''ZywiXyIpLG9lPTA7b2UhPVAubGVuZ3RoOysrb2UpdGhpc1t0aGlzLmwrb2VdPTI1NSZQLmNoYXJDb2RlQXQob2UpO2VlPVAubGVuZ3RofWVsc2V7aWYoImhleCI9PT1EKXtmb3IoO29lPHc7KytvZSl0aGlzW3RoaXMubCsrXT1wYXJzZUludChQLnNsaWNlKDIqb2UsMipvZSsyKSwxNil8fDA7''@;'; put 'put ''cmV0dXJuIHRoaXN9aWYoInV0ZjE2bGUiPT09RCl7dmFyIF9lPU1hdGgubWluKHRoaXMubCt3LHRoaXMubGVuZ3RoKTtmb3Iob2U9MDtvZTxNYXRoLm1pbihQLmxlbmd0aCx3KTsrK29lKXt2YXIgdmU9UC5jaGFyQ29kZUF0KG9lKTt0aGlzW3RoaXMubCsrXT0yNTUmdmUsdGhpc1t0aGlzLmwr''@;'; put 'put ''K109dmU+Pjh9Zm9yKDt0aGlzLmw8X2U7KXRoaXNbdGhpcy5sKytdPTA7cmV0dXJuIHRoaXN9c3dpdGNoKHcpe2Nhc2UgMTplZT0xLHRoaXNbdGhpcy5sXT0yNTUmUDticmVhaztjYXNlIDI6ZWU9Mix0aGlzW3RoaXMubF09MjU1JlAsdGhpc1t0aGlzLmwrMV09MjU1JihQPj4+PTgpO2JyZWFr''@;'; put 'put ''O2Nhc2UgMzplZT0zLHRoaXNbdGhpcy5sXT0yNTUmUCx0aGlzW3RoaXMubCsxXT0yNTUmKFA+Pj49OCksdGhpc1t0aGlzLmwrMl09MjU1JihQPj4+PTgpO2JyZWFrO2Nhc2UgNDplZT00LFFvKHRoaXMsUCx0aGlzLmwpO2JyZWFrO2Nhc2UgODppZihlZT04LCJmIj09PUQpeyFmdW5jdGlvbiBo''@;'; put 'put ''MCh3LFAsRCl7dmFyIGVlPShQPDB8fDEvUD09LTEvMD8xOjApPDw3LG9lPTAsZ2U9MCxfZT1lZT8tUDpQO2lzRmluaXRlKF9lKT8wPT1fZT9vZT1nZT0wOihvZT1NYXRoLmZsb29yKE1hdGgubG9nKF9lKS9NYXRoLkxOMiksZ2U9X2UqTWF0aC5wb3coMiw1Mi1vZSksb2U8PS0xMDIzJiYoIWlz''@;'; put 'put ''RmluaXRlKGdlKXx8Z2U8TWF0aC5wb3coMiw1MikpP29lPS0xMDIyOihnZS09TWF0aC5wb3coMiw1Miksb2UrPTEwMjMpKToob2U9MjA0NyxnZT1pc05hTihQKT8yNjk4NTowKTtmb3IodmFyIHZlPTA7dmU8PTU7Kyt2ZSxnZS89MjU2KXdbRCt2ZV09MjU1JmdlO3dbRCs2XT0oMTUmb2UpPDw0''@;'; put 'put ''fDE1JmdlLHdbRCs3XT1vZT4+NHxlZX0odGhpcyxQLHRoaXMubCk7YnJlYWt9Y2FzZSAxNjpicmVhaztjYXNlLTQ6ZWU9NCxKMCh0aGlzLFAsdGhpcy5sKX19cmV0dXJuIHRoaXMubCs9ZWUsdGhpc31mdW5jdGlvbiB1Mih3LFApe3ZhciBEPXAwKHRoaXMsdGhpcy5sLHcubGVuZ3RoPj4xKTtp''@;'; put 'put ''ZihEIT09dyl0aHJvdyBuZXcgRXJyb3IoUCsiRXhwZWN0ZWQgIit3KyIgc2F3ICIrRCk7dGhpcy5sKz13Lmxlbmd0aD4+MX1mdW5jdGlvbiBzcyh3LFApe3cubD1QLHcucmVhZF9zaGlmdD1ObCx3LmNoaz11Mix3LndyaXRlX3NoaWZ0PXMyfWZ1bmN0aW9uIHh1KHcsUCl7dy5sKz1QfWZ1bmN0''@;'; put 'put ''aW9uIHByKHcpe3ZhciBQPVkodyk7cmV0dXJuIHNzKFAsMCksUH1mdW5jdGlvbiB6byh3LFAsRCl7aWYodyl7dmFyIGVlLG9lLGdlO3NzKHcsdy5sfHwwKTtmb3IodmFyIF9lPXcubGVuZ3RoLHZlPTAsTWU9MDt3Lmw8X2U7KXsxMjgmKHZlPXcucmVhZF9zaGlmdCgxKSkmJih2ZT0oMTI3JnZl''@;'; put 'put ''KSsoKDEyNyZ3LnJlYWRfc2hpZnQoMSkpPDw3KSk7dmFyIGplPUgyW3ZlXXx8SDJbNjU1MzVdO2ZvcihnZT0xMjcmKGVlPXcucmVhZF9zaGlmdCgxKSksb2U9MTtvZTw0JiYxMjgmZWU7KytvZSlnZSs9KDEyNyYoZWU9dy5yZWFkX3NoaWZ0KDEpKSk8PDcqb2U7TWU9dy5sK2dlO3ZhciBVZT0o''@;'; put 'put ''amUuZnx8eHUpKHcsZ2UsRCk7aWYody5sPU1lLFAoVWUsamUubix2ZSkpcmV0dXJufX19ZnVuY3Rpb24gQXUoKXt2YXIgdz1bXSxQPWRlPzI1NjoyMDQ4LEQ9ZnVuY3Rpb24oamUpe3ZhciBVZT1wcihqZSk7cmV0dXJuIHNzKFVlLDApLFVlfSxlZT1EKFApLG9lPWZ1bmN0aW9uKCl7ZWUmJihl''@;'; put 'put ''ZS5sZW5ndGg+ZWUubCYmKChlZT1lZS5zbGljZSgwLGVlLmwpKS5sPWVlLmxlbmd0aCksZWUubGVuZ3RoPjAmJncucHVzaChlZSksZWU9bnVsbCl9LGdlPWZ1bmN0aW9uKGplKXtyZXR1cm4gZWUmJmplPGVlLmxlbmd0aC1lZS5sP2VlOihvZSgpLGVlPUQoTWF0aC5tYXgoamUrMSxQKSkpfTty''@;'; put 'put ''ZXR1cm57bmV4dDpnZSxwdXNoOmZ1bmN0aW9uKGplKXtvZSgpLG51bGw9PShlZT1qZSkubCYmKGVlLmw9ZWUubGVuZ3RoKSxnZShQKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIG9lKCksa2woW3ddKX0sX2J1ZnM6d319ZnVuY3Rpb24gaGkodyxQLEQsZWUpe3ZhciBnZSxvZT0rZ2dbUF07aWYo''@;'; put 'put ''IWlzTmFOKG9lKSl7ZWV8fChlZT1IMltvZV0ucHx8KER8fFtdKS5sZW5ndGh8fDApLGdlPTErKG9lPj0xMjg/MTowKSsxLGVlPj0xMjgmJisrZ2UsZWU+PTE2Mzg0JiYrK2dlLGVlPj0yMDk3MTUyJiYrK2dlO3ZhciBfZT13Lm5leHQoZ2UpO29lPD0xMjc/X2Uud3JpdGVfc2hpZnQoMSxvZSk6''@;'; put 'put ''KF9lLndyaXRlX3NoaWZ0KDEsMTI4KygxMjcmb2UpKSxfZS53cml0ZV9zaGlmdCgxLG9lPj43KSk7Zm9yKHZhciB2ZT0wOzQhPXZlOysrdmUpe2lmKCEoZWU+PTEyOCkpe19lLndyaXRlX3NoaWZ0KDEsZWUpO2JyZWFrfV9lLndyaXRlX3NoaWZ0KDEsMTI4KygxMjcmZWUpKSxlZT4+PTd9ZWU+''@;'; put 'put ''MCYmbDIoRCkmJncucHVzaChEKX19ZnVuY3Rpb24gcGModyxQLEQpe3ZhciBlZT1KdCh3KTtpZihQLnM/KGVlLmNSZWwmJihlZS5jKz1QLnMuYyksZWUuclJlbCYmKGVlLnIrPVAucy5yKSk6KGVlLmNSZWwmJihlZS5jKz1QLmMpLGVlLnJSZWwmJihlZS5yKz1QLnIpKSwhRHx8RC5iaWZmPDEy''@;'; put 'put ''KXtmb3IoO2VlLmM+PTI1NjspZWUuYy09MjU2O2Zvcig7ZWUucj49NjU1MzY7KWVlLnItPTY1NTM2fXJldHVybiBlZX1mdW5jdGlvbiBocih3LFAsRCl7dmFyIGVlPUp0KHcpO3JldHVybiBlZS5zPXBjKGVlLnMsUC5zLEQpLGVlLmU9cGMoZWUuZSxQLnMsRCksZWV9ZnVuY3Rpb24gZWgodyxQ''@;'; put 'put ''KXtpZih3LmNSZWwmJncuYzwwKWZvcih3PUp0KHcpO3cuYzwwOyl3LmMrPVA+OD8xNjM4NDoyNTY7aWYody5yUmVsJiZ3LnI8MClmb3Iodz1KdCh3KTt3LnI8MDspdy5yKz1QPjg/MTA0ODU3NjpQPjU/NjU1MzY6MTYzODQ7aWYody5jUmVsJiZ3LmM+PShQPjg/MTYzODQ6MjU2KSlmb3Iodz1K''@;'; put 'put ''dCh3KTt3LmM+PShQPjg/MTYzODQ6MjU2KTspdy5jLT1QPjg/MTYzODQ6MjU2O2lmKHcuclJlbCYmdy5yPj0xMDQ4NTc2KWZvcih3PUp0KHcpO3cucj49MTA0ODU3Njspdy5yLT0xMDQ4NTc2O3ZhciBEPXBpKHcpO3JldHVybiF3LmNSZWwmJm51bGwhPXcuY1JlbCYmKEQ9ZnVuY3Rpb24gSWIo''@;'; put 'put ''dyl7cmV0dXJuIHcucmVwbGFjZSgvXihbQS1aXSkvLCIkJCQxIil9KEQpKSwhdy5yUmVsJiZudWxsIT13LnJSZWwmJihEPWZ1bmN0aW9uIEw2KHcpe3JldHVybiB3LnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfShEKSksRH1mdW5jdGlvbiB4aSh3LFApe3JldHVybiAwIT13''@;'; put 'put ''LnMucnx8dy5zLnJSZWx8fHcuZS5yIT0oUC5iaWZmPj0xMj8xMDQ4NTc1OlAuYmlmZj49OD82NTUzNjoxNjM4NCl8fHcuZS5yUmVsPzAhPXcucy5jfHx3LnMuY1JlbHx8dy5lLmMhPShQLmJpZmY+PTEyPzE2MzgzOjI1NSl8fHcuZS5jUmVsP2VoKHcucyxQLmJpZmYpKyI6IitlaCh3LmUsUC5i''@;'; put 'put ''aWZmKToody5zLnJSZWw/IiI6IiQiKStWYSh3LnMucikrIjoiKyh3LmUuclJlbD8iIjoiJCIpK1ZhKHcuZS5yKToody5zLmNSZWw/IiI6IiQiKStCYSh3LnMuYykrIjoiKyh3LmUuY1JlbD8iIjoiJCIpK0JhKHcuZS5jKX12YXIgVWY9e307ZnVuY3Rpb24gUTAodyl7cmV0dXJuIHBhcnNlSW50''@;'; put 'put ''KGZ1bmN0aW9uIHRwKHcpe3JldHVybiB3LnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX0odyksMTApLTF9ZnVuY3Rpb24gVmEodyl7cmV0dXJuIiIrKHcrMSl9ZnVuY3Rpb24gYzIodyl7Zm9yKHZhciBQPWZ1bmN0aW9uIGFhKHcpe3JldHVybiB3LnJlcGxhY2UoL15cJChbQS1aXSkvLCIkMSIp''@;'; put 'put ''fSh3KSxEPTAsZWU9MDtlZSE9PVAubGVuZ3RoOysrZWUpRD0yNipEK1AuY2hhckNvZGVBdChlZSktNjQ7cmV0dXJuIEQtMX1mdW5jdGlvbiBCYSh3KXtpZih3PDApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbHVtbiAiK3cpO3ZhciBQPSIiO2ZvcigrK3c7dzt3PU1hdGguZmxvb3IoKHct''@;'; put 'put ''MSkvMjYpKVA9U3RyaW5nLmZyb21DaGFyQ29kZSgody0xKSUyNis2NSkrUDtyZXR1cm4gUH1mdW5jdGlvbiBjYSh3KXtmb3IodmFyIFA9MCxEPTAsZWU9MDtlZTx3Lmxlbmd0aDsrK2VlKXt2YXIgb2U9dy5jaGFyQ29kZUF0KGVlKTtvZT49NDgmJm9lPD01Nz9QPTEwKlArKG9lLTQ4KTpvZT49''@;'; put 'put ''NjUmJm9lPD05MCYmKEQ9MjYqRCsob2UtNjQpKX1yZXR1cm57YzpELTEscjpQLTF9fWZ1bmN0aW9uIHBpKHcpe2Zvcih2YXIgUD13LmMrMSxEPSIiO1A7UD0oUC0xKS8yNnwwKUQ9U3RyaW5nLmZyb21DaGFyQ29kZSgoUC0xKSUyNis2NSkrRDtyZXR1cm4gRCsody5yKzEpfWZ1bmN0aW9uIEth''@;'; put 'put ''KHcpe3ZhciBQPXcuaW5kZXhPZigiOiIpO3JldHVybi0xPT1QP3tzOmNhKHcpLGU6Y2Eodyl9OntzOmNhKHcuc2xpY2UoMCxQKSksZTpjYSh3LnNsaWNlKFArMSkpfX1mdW5jdGlvbiBWbyh3LFApe3JldHVybiB0eXBlb2YgUD4idSJ8fCJudW1iZXIiPT10eXBlb2YgUD9Wbyh3LnMsdy5lKToo''@;'; put 'put ''InN0cmluZyIhPXR5cGVvZiB3JiYodz1waSh3KSksInN0cmluZyIhPXR5cGVvZiBQJiYoUD1waShQKSksdz09UD93OncrIjoiK1ApfWZ1bmN0aW9uIFBpKHcpe3ZhciBQPUpTT04ucGFyc2UoJ3sicyI6eyJjIjowLCJyIjowfSwiZSI6eyJjIjowLCJyIjowfX0nKSxEPTAsZWU9MCxvZT0wLGdl''@;'; put 'put ''PXcubGVuZ3RoO2ZvcihEPTA7ZWU8Z2UmJiEoKG9lPXcuY2hhckNvZGVBdChlZSktNjQpPDF8fG9lPjI2KTsrK2VlKUQ9MjYqRCtvZTtmb3IoUC5zLmM9LS1ELEQ9MDtlZTxnZSYmISgob2U9dy5jaGFyQ29kZUF0KGVlKS00OCk8MHx8b2U+OSk7KytlZSlEPTEwKkQrb2U7aWYoUC5zLnI9LS1E''@;'; put 'put ''LGVlPT09Z2V8fDU4PT09dy5jaGFyQ29kZUF0KCsrZWUpKXJldHVybiBQLmUuYz1QLnMuYyxQLmUucj1QLnMucixQO2ZvcihEPTA7ZWUhPWdlJiYhKChvZT13LmNoYXJDb2RlQXQoZWUpLTY0KTwxfHxvZT4yNik7KytlZSlEPTI2KkQrb2U7Zm9yKFAuZS5jPS0tRCxEPTA7ZWUhPWdlJiYhKChv''@;'; put 'put ''ZT13LmNoYXJDb2RlQXQoZWUpLTQ4KTwwfHxvZT45KTsrK2VlKUQ9MTAqRCtvZTtyZXR1cm4gUC5lLnI9LS1ELFB9ZnVuY3Rpb24gUDYodyxQKXt2YXIgRD0iZCI9PXcudCYmUCBpbnN0YW5jZW9mIERhdGU7aWYobnVsbCE9dy56KXRyeXtyZXR1cm4gdy53PVMuZm9ybWF0KHcueixEP3FlKFAp''@;'; put 'put ''OlApfWNhdGNoe310cnl7cmV0dXJuIHcudz1TLmZvcm1hdCgody5YRnx8e30pLm51bUZtdElkfHwoRD8xNDowKSxEP3FlKFApOlApfWNhdGNoe3JldHVybiIiK1B9fWZ1bmN0aW9uIG1jKHcsUCxEKXtyZXR1cm4gbnVsbD09d3x8bnVsbD09dy50fHwieiI9PXcudD8iIjp2b2lkIDAhPT13Lnc/''@;'; put 'put ''dy53OigiZCI9PXcudCYmIXcueiYmRCYmRC5kYXRlTkYmJih3Lno9RC5kYXRlTkYpLCJlIj09dy50P25hW3cudl18fHcudjpQNih3LG51bGw9PVA/dy52OlApKX1mdW5jdGlvbiBaZih3LFApe3ZhciBEPVAmJlAuc2hlZXQ/UC5zaGVldDoiU2hlZXQxIixlZT17fTtyZXR1cm4gZWVbRF09dyx7''@;'; put 'put ''U2hlZXROYW1lczpbRF0sU2hlZXRzOmVlfX1mdW5jdGlvbiB2MCh3LFAsRCl7dmFyIGVlPUR8fHt9LG9lPXc/QXJyYXkuaXNBcnJheSh3KTplZS5kZW5zZTtudWxsIT1uZSYmbnVsbD09b2UmJihvZT1uZSk7dmFyIGdlPXd8fChvZT9bXTp7fSksX2U9MCx2ZT0wO2lmKGdlJiZudWxsIT1lZS5v''@;'; put 'put ''cmlnaW4pe2lmKCJudW1iZXIiPT10eXBlb2YgZWUub3JpZ2luKV9lPWVlLm9yaWdpbjtlbHNle3ZhciBNZT0ic3RyaW5nIj09dHlwZW9mIGVlLm9yaWdpbj9jYShlZS5vcmlnaW4pOmVlLm9yaWdpbjtfZT1NZS5yLHZlPU1lLmN9Z2VbIiFyZWYiXXx8KGdlWyIhcmVmIl09IkExOkExIil9dmFy''@;'; put 'put ''IGplPXtzOntjOjFlNyxyOjFlN30sZTp7YzowLHI6MH19O2lmKGdlWyIhcmVmIl0pe3ZhciBVZT1QaShnZVsiIXJlZiJdKTtqZS5zLmM9VWUucy5jLGplLnMucj1VZS5zLnIsamUuZS5jPU1hdGgubWF4KGplLmUuYyxVZS5lLmMpLGplLmUucj1NYXRoLm1heChqZS5lLnIsVWUuZS5yKSwtMT09''@;'; put 'put ''X2UmJihqZS5lLnI9X2U9VWUuZS5yKzEpfWZvcih2YXIgWGU9MDtYZSE9UC5sZW5ndGg7KytYZSlpZihQW1hlXSl7aWYoIUFycmF5LmlzQXJyYXkoUFtYZV0pKXRocm93IG5ldyBFcnJvcigiYW9hX3RvX3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzIik7Zm9yKHZhciBpdD0wO2l0''@;'; put 'put ''IT1QW1hlXS5sZW5ndGg7KytpdClpZighKHR5cGVvZiBQW1hlXVtpdF0+InUiKSl7dmFyIGZ0PXt2OlBbWGVdW2l0XX0sTXQ9X2UrWGUsdXQ9dmUraXQ7aWYoamUucy5yPk10JiYoamUucy5yPU10KSxqZS5zLmM+dXQmJihqZS5zLmM9dXQpLGplLmUucjxNdCYmKGplLmUucj1NdCksamUuZS5j''@;'; put 'put ''PHV0JiYoamUuZS5jPXV0KSwhUFtYZV1baXRdfHwib2JqZWN0IiE9dHlwZW9mIFBbWGVdW2l0XXx8QXJyYXkuaXNBcnJheShQW1hlXVtpdF0pfHxQW1hlXVtpdF1pbnN0YW5jZW9mIERhdGUpaWYoQXJyYXkuaXNBcnJheShmdC52KSYmKGZ0LmY9UFtYZV1baXRdWzFdLGZ0LnY9ZnQudlswXSks''@;'; put 'put ''bnVsbD09PWZ0LnYpaWYoZnQuZilmdC50PSJuIjtlbHNlIGlmKGVlLm51bGxFcnJvcilmdC50PSJlIixmdC52PTA7ZWxzZXtpZighZWUuc2hlZXRTdHVicyljb250aW51ZTtmdC50PSJ6In1lbHNlIm51bWJlciI9PXR5cGVvZiBmdC52P2Z0LnQ9Im4iOiJib29sZWFuIj09dHlwZW9mIGZ0LnY/''@;'; put 'put ''ZnQudD0iYiI6ZnQudiBpbnN0YW5jZW9mIERhdGU/KGZ0Lno9ZWUuZGF0ZU5GfHxTLl90YWJsZVsxNF0sZWUuY2VsbERhdGVzPyhmdC50PSJkIixmdC53PVMuZm9ybWF0KGZ0LnoscWUoZnQudikpKTooZnQudD0ibiIsZnQudj1xZShmdC52KSxmdC53PVMuZm9ybWF0KGZ0LnosZnQudikpKTpm''@;'; put 'put ''dC50PSJzIjtlbHNlIGZ0PVBbWGVdW2l0XTtpZihmdCYmZnQuaCl0cnl7ZnQuUj1ZYy5odG1sX3RvX3JzKGZ0LmgpLGZ0LnY9IiI7Zm9yKHZhciB3dD0wO3d0PGZ0LlIubGVuZ3RoOysrd3QpZnQudis9ZnQuUlt3dF0udnx8IiJ9Y2F0Y2h7fWlmKG9lKWdlW010XXx8KGdlW010XT1bXSksZ2Vb''@;'; put 'put ''TXRdW3V0XSYmZ2VbTXRdW3V0XS5zJiYoZnQucz1nZVtNdF1bdXRdLnMpLGdlW010XVt1dF0mJmdlW010XVt1dF0ueiYmKGZ0Lno9Z2VbTXRdW3V0XS56KSxnZVtNdF1bdXRdPWZ0O2Vsc2V7dmFyIEh0PXBpKHtjOnV0LHI6TXR9KTtnZVtIdF0mJmdlW0h0XS5zJiYoZnQucz1nZVtIdF0ucyks''@;'; put 'put ''Z2VbSHRdJiZnZVtIdF0ueiYmKGZ0Lno9Z2VbSHRdLnopLGdlW0h0XT1mdH19fXJldHVybiBqZS5zLmM8MWU3JiYoZ2VbIiFyZWYiXT1WbyhqZSkpLGdlfWZ1bmN0aW9uICQxKHcsUCl7cmV0dXJuIHYwKG51bGwsdyxQKX1mdW5jdGlvbiBGYyh3LFApe3JldHVybiBQfHwoUD1wcig0KSksUC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LHcpLFB9ZnVuY3Rpb24gVHUodyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDQpO3JldHVybiAwPT09UD8iIjp3LnJlYWRfc2hpZnQoUCwiZGJjcyIpfWZ1bmN0aW9uIGN1KHcsUCl7dmFyIEQ9ITE7cmV0dXJuIG51bGw9PVAmJihEPSEwLFA9cHIoNCsyKncubGVuZ3RoKSksUC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LHcubGVuZ3RoKSx3Lmxlbmd0aD4wJiZQLndyaXRlX3NoaWZ0KDAsdywiZGJjcyIpLEQ/UC5zbGljZSgwLFAubCk6UH1mdW5jdGlvbiBINih3KXtyZXR1cm57aWNoOncucmVhZF9zaGlmdCgyKSxpZm50OncucmVhZF9zaGlmdCgyKX19ZnVuY3Rpb24gY2wodyxQKXt2YXIg''@;'; put 'put ''RD13LmwsZWU9dy5yZWFkX3NoaWZ0KDEpLG9lPVR1KHcpLGdlPVtdLF9lPXt0Om9lLGg6b2V9O2lmKDEmZWUpe2Zvcih2YXIgdmU9dy5yZWFkX3NoaWZ0KDQpLE1lPTA7TWUhPXZlOysrTWUpZ2UucHVzaChINih3KSk7X2Uucj1nZX1lbHNlIF9lLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4g''@;'; put 'put ''dy5sPUQrUCxfZX0hZnVuY3Rpb24odyxQKXt2YXIgRDtpZih0eXBlb2YgY3J5cHRvQnJvd3NlcmlmeTwidSIpRD1jcnlwdG9Ccm93c2VyaWZ5O2Vsc2UgaWYodHlwZW9mIFA8InUiKUQ9UDtlbHNlIHRyeXtEPVQoNzc5MDMpfWNhdGNoe0Q9bnVsbH13LnJjND1mdW5jdGlvbihlZSxvZSl7dmFy''@;'; put 'put ''IGdlPW5ldyBBcnJheSgyNTYpLF9lPTAsdmU9MCxNZT0wLGplPTA7Zm9yKHZlPTA7MjU2IT12ZTsrK3ZlKWdlW3ZlXT12ZTtmb3IodmU9MDsyNTYhPXZlOysrdmUpTWU9TWUrZ2VbdmVdK2VlW3ZlJWVlLmxlbmd0aF0uY2hhckNvZGVBdCgwKSYyNTUsamU9Z2VbdmVdLGdlW3ZlXT1nZVtNZV0s''@;'; put 'put ''Z2VbTWVdPWplO3ZlPU1lPTA7dmFyIFVlPVkob2UubGVuZ3RoKTtmb3IoX2U9MDtfZSE9b2UubGVuZ3RoOysrX2UpamU9Z2VbdmU9dmUrMSYyNTVdLGdlW3ZlXT1nZVtNZT0oTWUrZ2VbdmVdKSUyNTZdLGdlW01lXT1qZSxVZVtfZV09b2VbX2VdXmdlW2dlW3ZlXStnZVtNZV0mMjU1XTtyZXR1''@;'; put 'put ''cm4gVWV9LHcubWQ1PWZ1bmN0aW9uKGVlKXtpZighRCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNyeXB0byIpO3JldHVybiBELmNyZWF0ZUhhc2goIm1kNSIpLnVwZGF0ZShCdWZmZXIuZnJvbShlZSkpLmRpZ2VzdCgiaGV4Iil9fShVZix0eXBlb2YgY3J5cHRvPCJ1Ij9jcnlwdG86''@;'; put 'put ''dm9pZCAwKTt2YXIgUmI9Y2w7ZnVuY3Rpb24gZ2Modyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDQpLEQ9dy5yZWFkX3NoaWZ0KDIpO3JldHVybiBEKz13LnJlYWRfc2hpZnQoMSk8PDE2LHcubCsrLHtjOlAsaVN0eWxlUmVmOkR9fWZ1bmN0aW9uIEhpKHcsUCl7cmV0dXJuIG51bGw9PVAmJihQPXBy''@;'; put 'put ''KDgpKSxQLndyaXRlX3NoaWZ0KC00LHcuYyksUC53cml0ZV9zaGlmdCgzLHcuaVN0eWxlUmVmfHx3LnMpLFAud3JpdGVfc2hpZnQoMSwwKSxQfWZ1bmN0aW9uIHkwKHcpe3ZhciBQPXcucmVhZF9zaGlmdCgyKTtyZXR1cm4gUCs9dy5yZWFkX3NoaWZ0KDEpPDwxNix3LmwrKyx7YzotMSxpU3R5''@;'; put 'put ''bGVSZWY6UH19ZnVuY3Rpb24gcmModyxQKXtyZXR1cm4gbnVsbD09UCYmKFA9cHIoNCkpLFAud3JpdGVfc2hpZnQoMyx3LmlTdHlsZVJlZnx8dy5zKSxQLndyaXRlX3NoaWZ0KDEsMCksUH12YXIgZjI9VHUsTjY9Y3U7ZnVuY3Rpb24gSGModyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDQpO3JldHVy''@;'; put 'put ''biAwPT09UHx8NDI5NDk2NzI5NT09PVA/IiI6dy5yZWFkX3NoaWZ0KFAsImRiY3MiKX1mdW5jdGlvbiBXZih3LFApe3ZhciBEPSExO3JldHVybiBudWxsPT1QJiYoRD0hMCxQPXByKDEyNykpLFAud3JpdGVfc2hpZnQoNCx3Lmxlbmd0aD4wP3cubGVuZ3RoOjQyOTQ5NjcyOTUpLHcubGVuZ3Ro''@;'; put 'put ''PjAmJlAud3JpdGVfc2hpZnQoMCx3LCJkYmNzIiksRD9QLnNsaWNlKDAsUC5sKTpQfXZhciB2Yz1UdSxxMT1IYyxqdT1XZjtmdW5jdGlvbiBpYyh3KXt2YXIgUD13LnNsaWNlKHcubCx3LmwrNCksRD0xJlBbMF0sZWU9MiZQWzBdO3cubCs9NCxQWzBdJj0yNTI7dmFyIG9lPTA9PT1lZT9nMChb''@;'; put 'put ''MCwwLDAsMCxQWzBdLFBbMV0sUFsyXSxQWzNdXSwwKTp1YShQLDApPj4yO3JldHVybiBEP29lLzEwMDpvZX1mdW5jdGlvbiB4YSh3LFApe251bGw9PVAmJihQPXByKDQpKTt2YXIgRD0wLGVlPTAsb2U9MTAwKnc7aWYodz09KDB8dykmJnc+PS0oMTw8MjkpJiZ3PDE8PDI5P2VlPTE6b2U9PSgw''@;'; put 'put ''fG9lKSYmb2U+PS0oMTw8MjkpJiZvZTwxPDwyOSYmKGVlPTEsRD0xKSwhZWUpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBSa051bWJlciAiK3cpO1Aud3JpdGVfc2hpZnQoLTQsKChEP29lOncpPDwyKSsoRCsyKSl9ZnVuY3Rpb24gR2Yodyl7dmFyIFA9e3M6e30sZTp7fX07cmV0dXJu''@;'; put 'put ''IFAucy5yPXcucmVhZF9zaGlmdCg0KSxQLmUucj13LnJlYWRfc2hpZnQoNCksUC5zLmM9dy5yZWFkX3NoaWZ0KDQpLFAuZS5jPXcucmVhZF9zaGlmdCg0KSxQfXZhciBvYz1HZixYMT1mdW5jdGlvbiBkMih3LFApe3JldHVybiBQfHwoUD1wcigxNikpLFAud3JpdGVfc2hpZnQoNCx3LnMuciks''@;'; put 'put ''UC53cml0ZV9zaGlmdCg0LHcuZS5yKSxQLndyaXRlX3NoaWZ0KDQsdy5zLmMpLFAud3JpdGVfc2hpZnQoNCx3LmUuYyksUH07ZnVuY3Rpb24gYjAodyl7Zm9yKHZhciBQPXcucmVhZF9zaGlmdCg0KSxEPVtdLGVlPTA7ZWU8UDsrK2VlKXt2YXIgb2U9b2Modyk7RC5wdXNoKFZvKG9lKSl9cmV0''@;'; put 'put ''dXJuIEQuam9pbigiLCIpfWZ1bmN0aW9uIHlsKHcpe2lmKHcubGVuZ3RoLXcubDw4KXRocm93IlhMUyBYbnVtIEJ1ZmZlciB1bmRlcmZsb3ciO3JldHVybiB3LnJlYWRfc2hpZnQoOCwiZiIpfWZ1bmN0aW9uIHp1KHcsUCl7cmV0dXJuKFB8fHByKDgpKS53cml0ZV9zaGlmdCg4LHcsImYiKX1m''@;'; put 'put ''dW5jdGlvbiAkZih3KXt2YXIgUD17fSxlZT13LnJlYWRfc2hpZnQoMSk+Pj4xLG9lPXcucmVhZF9zaGlmdCgxKSxnZT13LnJlYWRfc2hpZnQoMiwiaSIpLF9lPXcucmVhZF9zaGlmdCgxKSx2ZT13LnJlYWRfc2hpZnQoMSksTWU9dy5yZWFkX3NoaWZ0KDEpO3N3aXRjaCh3LmwrKyxlZSl7Y2Fz''@;'; put 'put ''ZSAwOlAuYXV0bz0xO2JyZWFrO2Nhc2UgMTpQLmluZGV4PW9lO3ZhciBqZT1TcltvZV07amUmJihQLnJnYj1mZihqZSkpO2JyZWFrO2Nhc2UgMjpQLnJnYj1mZihbX2UsdmUsTWVdKTticmVhaztjYXNlIDM6UC50aGVtZT1vZX1yZXR1cm4gMCE9Z2UmJihQLnRpbnQ9Z2U+MD9nZS8zMjc2Nzpn''@;'; put 'put ''ZS8zMjc2OCksUH1mdW5jdGlvbiB0aCh3LFApe2lmKFB8fChQPXByKDgpKSwhd3x8dy5hdXRvKXJldHVybiBQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApLFA7bnVsbCE9dy5pbmRleD8oUC53cml0ZV9zaGlmdCgxLDIpLFAud3JpdGVfc2hpZnQoMSx3LmluZGV4KSk6bnVs''@;'; put 'put ''bCE9dy50aGVtZT8oUC53cml0ZV9zaGlmdCgxLDYpLFAud3JpdGVfc2hpZnQoMSx3LnRoZW1lKSk6KFAud3JpdGVfc2hpZnQoMSw1KSxQLndyaXRlX3NoaWZ0KDEsMCkpO3ZhciBEPXcudGludHx8MDtpZihEPjA/RCo9MzI3Njc6RDwwJiYoRCo9MzI3NjgpLFAud3JpdGVfc2hpZnQoMixEKSx3''@;'; put 'put ''LnJnYiYmbnVsbD09dy50aGVtZSl7dmFyIGVlPXcucmdifHwiRkZGRkZGIjsibnVtYmVyIj09dHlwZW9mIGVlJiYoZWU9KCIwMDAwMDAiK2VlLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpKSxQLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQoZWUuc2xpY2UoMCwyKSwxNikpLFAud3JpdGVfc2hpZnQo''@;'; put 'put ''MSxwYXJzZUludChlZS5zbGljZSgyLDQpLDE2KSksUC53cml0ZV9zaGlmdCgxLHBhcnNlSW50KGVlLnNsaWNlKDQsNiksMTYpKSxQLndyaXRlX3NoaWZ0KDEsMjU1KX1lbHNlIFAud3JpdGVfc2hpZnQoMiwwKSxQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCgxLDApO3JldHVybiBQ''@;'; put 'put ''fWZ1bmN0aW9uIGNtKHcpe3ZhciBQPXcucmVhZF9zaGlmdCgxKTtyZXR1cm4gdy5sKysse2ZCb2xkOjEmUCxmSXRhbGljOjImUCxmVW5kZXJsaW5lOjQmUCxmU3RyaWtlb3V0OjgmUCxmT3V0bGluZToxNiZQLGZTaGFkb3c6MzImUCxmQ29uZGVuc2U6NjQmUCxmRXh0ZW5kOjEyOCZQfX1mdW5j''@;'; put 'put ''dGlvbiBmbSh3LFApe3ZhciBlZT13LnJlYWRfc2hpZnQoNCk7c3dpdGNoKGVlKXtjYXNlIDA6cmV0dXJuIiI7Y2FzZSA0Mjk0OTY3Mjk1OmNhc2UgNDI5NDk2NzI5NDpyZXR1cm57MjoiQklUTUFQIiwzOiJNRVRBRklMRVBJQ1QiLDg6IkRJQiIsMTQ6IkVOSE1FVEFGSUxFIn1bdy5yZWFkX3No''@;'; put 'put ''aWZ0KDQpXXx8IiJ9aWYoZWU+NDAwKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgQ2xpcGJvYXJkOiAiK2VlLnRvU3RyaW5nKDE2KSk7cmV0dXJuIHcubC09NCx3LnJlYWRfc2hpZnQoMCwxPT1QPyJscHN0ciI6Imxwd3N0ciIpfXZhciBucD0yLEVsPTMsVXU9MTIsVjY9ODEsSGI9Wzgw''@;'; put 'put ''LFY2XSxtbT17MTp7bjoiQ29kZVBhZ2UiLHQ6bnB9LDI6e246IkNhdGVnb3J5Iix0OjgwfSwzOntuOiJQcmVzZW50YXRpb25Gb3JtYXQiLHQ6ODB9LDQ6e246IkJ5dGVDb3VudCIsdDpFbH0sNTp7bjoiTGluZUNvdW50Iix0OkVsfSw2OntuOiJQYXJhZ3JhcGhDb3VudCIsdDpFbH0sNzp7bjoi''@;'; put 'put ''U2xpZGVDb3VudCIsdDpFbH0sODp7bjoiTm90ZUNvdW50Iix0OkVsfSw5OntuOiJIaWRkZW5Db3VudCIsdDpFbH0sMTA6e246Ik11bHRpbWVkaWFDbGlwQ291bnQiLHQ6RWx9LDExOntuOiJTY2FsZUNyb3AiLHQ6MTF9LDEyOntuOiJIZWFkaW5nUGFpcnMiLHQ6NDA5NnxVdX0sMTM6e246IlRp''@;'; put 'put ''dGxlc09mUGFydHMiLHQ6NDEyNn0sMTQ6e246Ik1hbmFnZXIiLHQ6ODB9LDE1OntuOiJDb21wYW55Iix0OjgwfSwxNjp7bjoiTGlua3NVcFRvRGF0ZSIsdDoxMX0sMTc6e246IkNoYXJhY3RlckNvdW50Iix0OkVsfSwxOTp7bjoiU2hhcmVkRG9jIix0OjExfSwyMjp7bjoiSHlwZXJsaW5rc0No''@;'; put 'put ''YW5nZWQiLHQ6MTF9LDIzOntuOiJBcHBWZXJzaW9uIix0OkVsLHA6InZlcnNpb24ifSwyNDp7bjoiRGlnU2lnIix0OjY1fSwyNjp7bjoiQ29udGVudFR5cGUiLHQ6ODB9LDI3OntuOiJDb250ZW50U3RhdHVzIix0OjgwfSwyODp7bjoiTGFuZ3VhZ2UiLHQ6ODB9LDI5OntuOiJWZXJzaW9uIix0''@;'; put 'put ''OjgwfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxlIix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0sa3I9ezE6e246IkNvZGVQYWdlIix0Om5wfSwyOntuOiJUaXRsZSIsdDo4MH0sMzp7bjoiU3ViamVjdCIsdDo4MH0sNDp7bjoiQXV0aG9y''@;'; put 'put ''Iix0OjgwfSw1OntuOiJLZXl3b3JkcyIsdDo4MH0sNjp7bjoiQ29tbWVudHMiLHQ6ODB9LDc6e246IlRlbXBsYXRlIix0OjgwfSw4OntuOiJMYXN0QXV0aG9yIix0OjgwfSw5OntuOiJSZXZOdW1iZXIiLHQ6ODB9LDEwOntuOiJFZGl0VGltZSIsdDo2NH0sMTE6e246Ikxhc3RQcmludGVkIix0''@;'; put 'put ''OjY0fSwxMjp7bjoiQ3JlYXRlZERhdGUiLHQ6NjR9LDEzOntuOiJNb2RpZmllZERhdGUiLHQ6NjR9LDE0OntuOiJQYWdlQ291bnQiLHQ6RWx9LDE1OntuOiJXb3JkQ291bnQiLHQ6RWx9LDE2OntuOiJDaGFyQ291bnQiLHQ6RWx9LDE3OntuOiJUaHVtYm5haWwiLHQ6NzF9LDE4OntuOiJBcHBs''@;'; put 'put ''aWNhdGlvbiIsdDo4MH0sMTk6e246IkRvY1NlY3VyaXR5Iix0OkVsfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxlIix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0sZ209S2UobW0sIm4iKSx2bT1LZShrciwibiIpLEI2PXsxOiJVUyIsMjoi''@;'; put 'put ''Q0EiLDM6IiIsNzoiUlUiLDIwOiJFRyIsMzA6IkdSIiwzMToiTkwiLDMyOiJCRSIsMzM6IkZSIiwzNDoiRVMiLDM2OiJIVSIsMzk6IklUIiw0MToiQ0giLDQzOiJBVCIsNDQ6IkdCIiw0NToiREsiLDQ2OiJTRSIsNDc6Ik5PIiw0ODoiUEwiLDQ5OiJERSIsNTI6Ik1YIiw1NToiQlIiLDYxOiJB''@;'; put 'put ''VSIsNjQ6Ik5aIiw2NjoiVEgiLDgxOiJKUCIsODI6IktSIiw4NDoiVk4iLDg2OiJDTiIsOTA6IlRSIiwxMDU6IkpTIiwyMTM6IkRaIiwyMTY6Ik1BIiwyMTg6IkxZIiwzNTE6IlBUIiwzNTQ6IklTIiwzNTg6IkZJIiw0MjA6IkNaIiw4ODY6IlRXIiw5NjE6IkxCIiw5NjI6IkpPIiw5NjM6IlNZ''@;'; put 'put ''Iiw5NjQ6IklRIiw5NjU6IktXIiw5NjY6IlNBIiw5NzE6IkFFIiw5NzI6IklMIiw5NzQ6IlFBIiw5ODE6IklSIiw2NTUzNToiVVMifSxEaT1bbnVsbCwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRh''@;'; put 'put ''cmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il07ZnVuY3Rpb24geW0odyl7cmV0''@;'; put 'put ''dXJuIHcubWFwKGZ1bmN0aW9uKFApe3JldHVybltQPj4xNiYyNTUsUD4+OCYyNTUsMjU1JlBdfSl9dmFyIGlwPXltKFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcx''@;'; put 'put ''MTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwxMDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4''@;'; put 'put ''Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMx''@;'; put 'put ''NTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSxTcj1KdChpcCksVmw9eW0oWzEyNjMyMjU2LDk4Njg5NTAsODQyMTUwNCw2NzEwODg2LDMzNTU0NDMsMTY3''@;'; put 'put ''MTE2ODAsMzI3NjgsMTMzNjk0OTcsMTI4LDMzOTQ1NjAsMjYzNjcsMTAwMjcyMTIsMTAwNTMxNzEsMTI4LDMyNzY4LDgzODg2MDgsMzI4OTYsODM4ODczNiw4NDIxMzc2LDEzNjMxNDg4LDE0NTM5OTk0LDEzMDY4ODUwLDEzOTI0MzUyLDk5Njc0OTYsOTE3NTI2Nyw5MTk1MDA4LDM2ODM1Mzcs''@;'; put 'put ''MTA2OTI1OCw4ODgwODk5LDc0OTQ2NCwyODkzNDc2LDExNzQ1NzMwLDM3NTAyMDEsMTU1NTk1MDMsMTgzNzk0MSwxMjA4NDM1OSw3NjMyMjUwLDczNjMzMjgsOTUxNDU4OCw4Mjg4NjE3LDMwMzY4MTQsMTExODQ4MTBdKSxuYT17MDoiI05VTEwhIiw3OiIjRElWLzAhIiwxNToiI1ZBTFVFISIs''@;'; put 'put ''MjM6IiNSRUYhIiwyOToiI05BTUU/IiwzNjoiI05VTSEiLDQyOiIjTi9BIiw0MzoiI0dFVFRJTkdfREFUQSIsMjU1OiIjV1RGPyJ9LHFsPUllKG5hKSx6cz17ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1s''@;'; put 'put ''Ijoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWwiOiJjb3JlcHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sIjoiY3VzdHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIjoiZXh0cHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tWG1sUHJvcGVydGllcyt4bWwiOiJjdXN0b214bWxwcm9wcyIsImFwcGxpY2F0aW9uL3Zu''@;'; put 'put ''ZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoicGl2b3RzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNw''@;'; put 'put ''cmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiOiJwaXZvdHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbCI6ImNoYXJ0b2JqcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6''@;'; put 'put ''ImNoYXJ0Y29sb3JzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydHN0eWxlK3htbCI6ImNoYXJ0c3R5bGVzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbCI6ImNoYXJ0ZXhzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNj''@;'; put 'put ''aGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJT''@;'; put 'put ''ZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNh''@;'; put 'put ''dGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJjb25ucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbCI6ImNvbm5zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayI6''@;'; put 'put ''ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uIjoicGl2b3RjYWNoZXMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJl''@;'; put 'put ''Y29yZHMiOiJwaXZvdHJlY29yZHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiOiJwaXZvdGNhY2hlcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1''@;'; put 'put ''bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6InBpdm90cmVjb3JkcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5xdWVyeVRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1''@;'; put 'put ''ZXJ5VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC51c2VyTmFtZXMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uSGVhZGVycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25Mb2ciOiJUT0RPIiwiYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25IZWFkZXJzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkxvZyt4bWwiOiJU''@;'; put 'put ''T0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlck5hbWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVTaW5nbGVDZWxscyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZv''@;'; put 'put ''cm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92''@;'; put 'put ''bmQubXMtZXhjZWwuc2xpY2VyK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53c1NvcnRNYXAiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlIjoidGFibGVz''@;'; put 'put ''IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sIjoidGFibGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3Zu''@;'; put 'put ''ZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNh''@;'; put 'put ''dGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQu''@;'; put 'put ''b3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbCI6ImN0cmxwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9y''@;'; put 'put ''bWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhIjoiZGF0YW1vZGVscyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5TdXJ2ZXkreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbCI6ImRyYXdpbmdzIiwiYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbCI6IlRPRE8iLCJhcHBs''@;'; put 'put ''aWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sIjoiVE9ETyIsImFwcGxp''@;'; put 'put ''Y2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3Blbnht''@;'; put 'put ''bGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCI6InJlbHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQub2xlT2JqZWN0IjoiVE9ETyIsImltYWdlL3BuZyI6IlRPRE8iLHNoZWV0OiJqcyJ9LEtmPWZ1bmN0aW9uKCl7dmFyIHc9e3dvcmti''@;'; put 'put ''b29rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiLHhsc206ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsc2I6ImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4iLHhsYW06ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiLHhsdHg6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRz''@;'; put 'put ''aGVldG1sLnRlbXBsYXRlLm1haW4reG1sIn0sc3Ryczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzIn0s''@;'; put 'put ''Y29tbWVudHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzIn0sc2hlZXRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3Bl''@;'; put 'put ''bnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0In0sY2hhcnRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFk''@;'; put 'put ''c2hlZXRtbC5jaGFydHNoZWV0K3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXQifSxkaWFsb2dzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWwiLHhsc2I6''@;'; put 'put ''ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5kaWFsb2dzaGVldCJ9LG1hY3Jvczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCJ9LHRhYmxlczp7eGxzeDoiYXBwbGljYXRpb24v''@;'; put 'put ''dm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGUifSxwaXZvdHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRz''@;'; put 'put ''aGVldG1sLnBpdm90VGFibGUreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RUYWJsZSJ9LHBpdm90Y2FjaGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlv''@;'; put 'put ''bit4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiJ9LHBpdm90cmVjb3Jkczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIix4''@;'; put 'put ''bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMifSxjb25uczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMt''@;'; put 'put ''ZXhjZWwuY29ubmVjdGlvbnMifSxsaW5rczp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayJ9LHN0eWxlczp7''@;'; put 'put ''eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxlcyJ9fTtyZXR1cm4gbXQodykuZm9yRWFjaChmdW5jdGlvbihQKXtbInhsc20iLCJ4bGFt''@;'; put 'put ''Il0uZm9yRWFjaChmdW5jdGlvbihEKXt3W1BdW0RdfHwod1tQXVtEXT13W1BdLnhsc3gpfSl9KSxtdCh3KS5mb3JFYWNoKGZ1bmN0aW9uKFApe210KHdbUF0pLmZvckVhY2goZnVuY3Rpb24oRCl7enNbd1tQXVtEXV09UH0pfSksd30oKSxadT1mdW5jdGlvbiBPZSh3KXtmb3IodmFyIFA9W10s''@;'; put 'put ''RD1tdCh3KSxlZT0wO2VlIT09RC5sZW5ndGg7KytlZSludWxsPT1QW3dbRFtlZV1dXSYmKFBbd1tEW2VlXV1dPVtdKSxQW3dbRFtlZV1dXS5wdXNoKERbZWVdKTtyZXR1cm4gUH0oenMpO3NhLkNUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRl''@;'; put 'put ''bnQtdHlwZXMiO3ZhciBvcD1NcigiVHlwZXMiLG51bGwse3htbG5zOnNhLkNULCJ4bWxuczp4c2QiOnNhLnhzZCwieG1sbnM6eHNpIjpzYS54c2l9KSxOYj1bWyJ4bWwiLCJhcHBsaWNhdGlvbi94bWwiXSxbImJpbiIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFj''@;'; put 'put ''cm9FbmFibGVkLm1haW4iXSxbInZtbCIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nIl0sWyJkYXRhIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGEiXSxbImJtcCIsImltYWdl''@;'; put 'put ''L2JtcCJdLFsicG5nIiwiaW1hZ2UvcG5nIl0sWyJnaWYiLCJpbWFnZS9naWYiXSxbImVtZiIsImltYWdlL3gtZW1mIl0sWyJ3bWYiLCJpbWFnZS94LXdtZiJdLFsianBnIiwiaW1hZ2UvanBlZyJdLFsianBlZyIsImltYWdlL2pwZWciXSxbInRpZiIsImltYWdlL3RpZmYiXSxbInRpZmYiLCJp''@;'; put 'put ''bWFnZS90aWZmIl0sWyJwZGYiLCJhcHBsaWNhdGlvbi9wZGYiXSxbInJlbHMiLFp1LnJlbHNbMF1dXS5tYXAoZnVuY3Rpb24odyl7cmV0dXJuIE1yKCJEZWZhdWx0IixudWxsLHtFeHRlbnNpb246d1swXSxDb250ZW50VHlwZTp3WzFdfSl9KSxOaT17V0I6Imh0dHA6Ly9zY2hlbWFzLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLFNIRUVUOiJodHRwOi8vc2hlZXRqcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50IixITElOSzoiaHR0''@;'; put 'put ''cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9oeXBlcmxpbmsiLFZNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy92bWxEcmF3aW5nIixYUEFU''@;'; put 'put ''SDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmtQYXRoIixYTUlTUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsRXh0ZXJuYWxMaW5r''@;'; put 'put ''UGF0aC94bFBhdGhNaXNzaW5nIixYTElOSzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmsiLENYTUw6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8y''@;'; put 'put ''MDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sIixDWE1MUDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWxQcm9wcyIsVkJBOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2''@;'; put 'put ''L3JlbGF0aW9uc2hpcHMvdmJhUHJvamVjdCJ9O2Z1bmN0aW9uIGppKHcpe3ZhciBQPXcubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gdy5zbGljZSgwLFArMSkrIl9yZWxzLyIrdy5zbGljZShQKzEpKyIucmVscyJ9ZnVuY3Rpb24gUG8odyxQKXt2YXIgRD17IiFpZCI6e319O2lmKCF3KXJldHVy''@;'; put 'put ''biBEOyIvIiE9PVAuY2hhckF0KDApJiYoUD0iLyIrUCk7dmFyIGVlPXt9O3JldHVybih3Lm1hdGNoKHF0KXx8W10pLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBnZT1jbihvZSk7aWYoIjxSZWxhdGlvbnNoaXAiPT09Z2VbMF0pe3ZhciBfZT17fTtfZS5UeXBlPWdlLlR5cGUsX2UuVGFyZ2V0''@;'; put 'put ''PWdlLlRhcmdldCxfZS5JZD1nZS5JZCxfZS5UYXJnZXRNb2RlPWdlLlRhcmdldE1vZGU7dmFyIHZlPSJFeHRlcm5hbCI9PT1nZS5UYXJnZXRNb2RlP2dlLlRhcmdldDpzbihnZS5UYXJnZXQsUCk7RFt2ZV09X2UsZWVbZ2UuSWRdPV9lfX0pLERbIiFpZCJdPWVlLER9c2EuUkVMUz0iaHR0cDov''@;'; put 'put ''L3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIjt2YXIgZmw9TXIoIlJlbGF0aW9uc2hpcHMiLG51bGwse3htbG5zOnNhLlJFTFN9KTtmdW5jdGlvbiBYbCh3KXt2YXIgUD1bQm4sZmxdO3JldHVybiBtdCh3WyIhaWQiXSkuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihEKXtQW1AubGVuZ3RoXT1NcigiUmVsYXRpb25zaGlwIixudWxsLHdbIiFpZCJdW0RdKX0pLFAubGVuZ3RoPjImJihQW1AubGVuZ3RoXT0iPC9SZWxhdGlvbnNoaXBzPiIsUFsxXT1QWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxQLmpvaW4oIiIpfXZhciBKMT1bTmkuSExJTkssTmkuWFBB''@;'; put 'put ''VEgsTmkuWE1JU1NdO2Z1bmN0aW9uIEdvKHcsUCxELGVlLG9lLGdlKXtpZihvZXx8KG9lPXt9KSx3WyIhaWQiXXx8KHdbIiFpZCJdPXt9KSxQPDApZm9yKFA9MTt3WyIhaWQiXVsicklkIitQXTsrK1ApO2lmKG9lLklkPSJySWQiK1Asb2UuVHlwZT1lZSxvZS5UYXJnZXQ9RCxnZT9vZS5UYXJn''@;'; put 'put ''ZXRNb2RlPWdlOkoxLmluZGV4T2Yob2UuVHlwZSk+LTEmJihvZS5UYXJnZXRNb2RlPSJFeHRlcm5hbCIpLHdbIiFpZCJdW29lLklkXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZXdyaXRlIHJJZCAiK1ApO3JldHVybiB3WyIhaWQiXVtvZS5JZF09b2Usd1soIi8iK29lLlRhcmdldCkucmVw''@;'; put 'put ''bGFjZSgiLy8iLCIvIildPW9lLFB9dmFyIE5jPSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IjtmdW5jdGlvbiBRMSh3LFAsRCl7cmV0dXJuWycgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSInK3crJyI+XG4nLCcgICAgPHJkZjp0eXBlIHJkZjpy''@;'; put 'put ''ZXNvdXJjZT0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhLycrKER8fCJvZGYiKSsiIyIrUCsnIi8+XG4nLCIgIDwvcmRmOkRlc2NyaXB0aW9uPlxuIl0uam9pbigiIil9ZnVuY3Rpb24gWm8odyxQKXtyZXR1cm5bJyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6''@;'; put 'put ''YWJvdXQ9IicrdysnIj5cbicsJyAgICA8bnMwOmhhc1BhcnQgeG1sbnM6bnMwPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvcGtnIyIgcmRmOnJlc291cmNlPSInK1ArJyIvPlxuJywiICA8L3JkZjpEZXNjcmlwdGlvbj5cbiJdLmpvaW4oIiIpfXZhciBf''@;'; put 'put ''bT1mdW5jdGlvbigpe3ZhciB3PSc8b2ZmaWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOm1ldGE9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAi''@;'; put 'put ''IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxvZmZpY2U6bWV0YT48bWV0YTpnZW5lcmF0b3I+U2hlZXRKUyAnK0gudmVyc2lvbisiPC9tZXRh''@;'; put 'put ''OmdlbmVyYXRvcj48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+IjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gd319KCksVXM9W1siY3A6Y2F0ZWdvcnkiLCJDYXRlZ29yeSJdLFsiY3A6Y29udGVudFN0YXR1cyIsIkNvbnRlbnRTdGF0dXMiXSxbImNwOmtleXdvcmRzIiwi''@;'; put 'put ''S2V5d29yZHMiXSxbImNwOmxhc3RNb2RpZmllZEJ5IiwiTGFzdEF1dGhvciJdLFsiY3A6bGFzdFByaW50ZWQiLCJMYXN0UHJpbnRlZCJdLFsiY3A6cmV2aXNpb24iLCJSZXZOdW1iZXIiXSxbImNwOnZlcnNpb24iLCJWZXJzaW9uIl0sWyJkYzpjcmVhdG9yIiwiQXV0aG9yIl0sWyJkYzpkZXNj''@;'; put 'put ''cmlwdGlvbiIsIkNvbW1lbnRzIl0sWyJkYzppZGVudGlmaWVyIiwiSWRlbnRpZmllciJdLFsiZGM6bGFuZ3VhZ2UiLCJMYW5ndWFnZSJdLFsiZGM6c3ViamVjdCIsIlN1YmplY3QiXSxbImRjOnRpdGxlIiwiVGl0bGUiXSxbImRjdGVybXM6Y3JlYXRlZCIsIkNyZWF0ZWREYXRlIiwiZGF0ZSJd''@;'; put 'put ''LFsiZGN0ZXJtczptb2RpZmllZCIsIk1vZGlmaWVkRGF0ZSIsImRhdGUiXV07c2EuQ09SRV9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiLE5pLkNPUkVfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9w''@;'; put 'put ''ZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiO3ZhciBKbD1mdW5jdGlvbigpe2Zvcih2YXIgdz1uZXcgQXJyYXkoVXMubGVuZ3RoKSxQPTA7UDxVcy5sZW5ndGg7KytQKXt2YXIgRD1Vc1tQXSxlZT0iKD86IitEWzBd''@;'; put 'put ''LnNsaWNlKDAsRFswXS5pbmRleE9mKCI6IikpKyI6KSIrRFswXS5zbGljZShEWzBdLmluZGV4T2YoIjoiKSsxKTt3W1BdPW5ldyBSZWdFeHAoIjwiK2VlKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrZWUrIj4iKX1yZXR1cm4gd30oKTtmdW5jdGlvbiBuaCh3KXt2YXIgUD17fTt3PUZpKHcpO2Zv''@;'; put 'put ''cih2YXIgRD0wO0Q8VXMubGVuZ3RoOysrRCl7dmFyIGVlPVVzW0RdLG9lPXcubWF0Y2goSmxbRF0pO251bGwhPW9lJiZvZS5sZW5ndGg+MCYmKFBbZWVbMV1dPUVyKG9lWzFdKSksImRhdGUiPT09ZWVbMl0mJlBbZWVbMV1dJiYoUFtlZVsxXV09UHQoUFtlZVsxXV0pKX1yZXR1cm4gUH12YXIg''@;'; put 'put ''cmg9TXIoImNwOmNvcmVQcm9wZXJ0aWVzIixudWxsLHsieG1sbnM6Y3AiOnNhLkNPUkVfUFJPUFMsInhtbG5zOmRjIjpzYS5kYywieG1sbnM6ZGN0ZXJtcyI6c2EuZGN0ZXJtcywieG1sbnM6ZGNtaXR5cGUiOnNhLmRjbWl0eXBlLCJ4bWxuczp4c2kiOnNhLnhzaX0pO2Z1bmN0aW9uIHljKHcs''@;'; put 'put ''UCxELGVlLG9lKXtudWxsIT1vZVt3XXx8bnVsbD09UHx8IiI9PT1QfHwob2Vbd109UCxQPUJyKFApLGVlW2VlLmxlbmd0aF09RD9Ncih3LFAsRCk6dmEodyxQKSl9dmFyIGVmPVtbIkFwcGxpY2F0aW9uIiwiQXBwbGljYXRpb24iLCJzdHJpbmciXSxbIkFwcFZlcnNpb24iLCJBcHBWZXJzaW9u''@;'; put 'put ''Iiwic3RyaW5nIl0sWyJDb21wYW55IiwiQ29tcGFueSIsInN0cmluZyJdLFsiRG9jU2VjdXJpdHkiLCJEb2NTZWN1cml0eSIsInN0cmluZyJdLFsiTWFuYWdlciIsIk1hbmFnZXIiLCJzdHJpbmciXSxbIkh5cGVybGlua3NDaGFuZ2VkIiwiSHlwZXJsaW5rc0NoYW5nZWQiLCJib29sIl0sWyJT''@;'; put 'put ''aGFyZWREb2MiLCJTaGFyZWREb2MiLCJib29sIl0sWyJMaW5rc1VwVG9EYXRlIiwiTGlua3NVcFRvRGF0ZSIsImJvb2wiXSxbIlNjYWxlQ3JvcCIsIlNjYWxlQ3JvcCIsImJvb2wiXSxbIkhlYWRpbmdQYWlycyIsIkhlYWRpbmdQYWlycyIsInJhdyJdLFsiVGl0bGVzT2ZQYXJ0cyIsIlRpdGxl''@;'; put 'put ''c09mUGFydHMiLCJyYXciXV07ZnVuY3Rpb24gdzAodyxQLEQsZWUpe3ZhciBvZT1bXTtpZigic3RyaW5nIj09dHlwZW9mIHcpb2U9ZDAodyxlZSk7ZWxzZSBmb3IodmFyIGdlPTA7Z2U8dy5sZW5ndGg7KytnZSlvZT1vZS5jb25jYXQod1tnZV0ubWFwKGZ1bmN0aW9uKFVlKXtyZXR1cm57djpV''@;'; put 'put ''ZX19KSk7dmFyIF9lPSJzdHJpbmciPT10eXBlb2YgUD9kMChQLGVlKS5tYXAoZnVuY3Rpb24oVWUpe3JldHVybiBVZS52fSk6UCx2ZT0wLE1lPTA7aWYoX2UubGVuZ3RoPjApZm9yKHZhciBqZT0wO2plIT09b2UubGVuZ3RoO2plKz0yKXtzd2l0Y2goTWU9K29lW2plKzFdLnYsb2VbamVdLnYp''@;'; put 'put ''e2Nhc2UiV29ya3NoZWV0cyI6Y2FzZSJcdTVkZTVcdTRmNWNcdTg4NjgiOmNhc2UiXHUwNDFiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDRiIjpjYXNlIlx1MDYyM1x1MDY0OFx1MDYzMVx1MDYyN1x1MDY0MiBcdTA2MjdcdTA2NDRcdTA2MzlcdTA2NDVcdTA2NDQiOmNhc2UiXHUzMGVmXHUzMGZj''@;'; put 'put ''XHUzMGFmXHUzMGI3XHUzMGZjXHUzMGM4IjpjYXNlIlx1MDVkMlx1MDVkY1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZTJcdTA1ZDFcdTA1ZDVcdTA1ZDNcdTA1ZDQiOmNhc2UiQXJiZWl0c2JsXHhlNHR0ZXIiOmNhc2UiXHhjN2FsXHUwMTMxXHUwMTVmbWEgU2F5ZmFsYXJc''@;'; put 'put ''dTAxMzEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY1x4ZTFsY3VsbyI6Y2FzZSJQbGFuaWxoYXMiOmNhc2UiUmVnbmVhcmsiOmNhc2UiSG9qYXMgZGUgY1x4ZTFsY3VsbyI6Y2FzZSJXZXJrYmxhZGVuIjpELldvcmtzaGVl''@;'; put 'put ''dHM9TWUsRC5TaGVldE5hbWVzPV9lLnNsaWNlKHZlLHZlK01lKTticmVhaztjYXNlIk5hbWVkIFJhbmdlcyI6Y2FzZSJSYW5nb3MgY29uIG5vbWJyZSI6Y2FzZSJcdTU0MGRcdTUyNGRcdTRlZDhcdTMwNGRcdTRlMDBcdTg5YTciOmNhc2UiQmVuYW5udGUgQmVyZWljaGUiOmNhc2UiTmF2bmdp''@;'; put 'put ''dm5lIG9tclx4ZTVkZXIiOkQuTmFtZWRSYW5nZXM9TWUsRC5EZWZpbmVkTmFtZXM9X2Uuc2xpY2UodmUsdmUrTWUpO2JyZWFrO2Nhc2UiQ2hhcnRzIjpjYXNlIkRpYWdyYW1tZSI6RC5DaGFydHNoZWV0cz1NZSxELkNoYXJ0TmFtZXM9X2Uuc2xpY2UodmUsdmUrTWUpfXZlKz1NZX19c2EuRVhU''@;'; put 'put ''X1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIixOaS5FWFRfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMv''@;'; put 'put ''ZXh0ZW5kZWQtcHJvcGVydGllcyI7dmFyIGxwPU1yKCJQcm9wZXJ0aWVzIixudWxsLHt4bWxuczpzYS5FWFRfUFJPUFMsInhtbG5zOnZ0IjpzYS52dH0pO3NhLkNVU1RfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbS1w''@;'; put 'put ''cm9wZXJ0aWVzIixOaS5DVVNUX1BST1BTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbS1wcm9wZXJ0aWVzIjt2YXIgYXg9LzxbXj5dKz5bXjxdKi9nLHo2PU1yKCJQcm9wZXJ0aWVzIixudWxsLHt4bWxu''@;'; put 'put ''czpzYS5DVVNUX1BST1BTLCJ4bWxuczp2dCI6c2EudnR9KTt2YXIgaWg9e1RpdGxlOiJUaXRsZSIsU3ViamVjdDoiU3ViamVjdCIsQXV0aG9yOiJBdXRob3IiLEtleXdvcmRzOiJLZXl3b3JkcyIsQ29tbWVudHM6IkRlc2NyaXB0aW9uIixMYXN0QXV0aG9yOiJMYXN0QXV0aG9yIixSZXZOdW1i''@;'; put 'put ''ZXI6IlJldmlzaW9uIixBcHBsaWNhdGlvbjoiQXBwTmFtZSIsTGFzdFByaW50ZWQ6Ikxhc3RQcmludGVkIixDcmVhdGVkRGF0ZToiQ3JlYXRlZCIsTW9kaWZpZWREYXRlOiJMYXN0U2F2ZWQiLENhdGVnb3J5OiJDYXRlZ29yeSIsTWFuYWdlcjoiTWFuYWdlciIsQ29tcGFueToiQ29tcGFueSIs''@;'; put 'put ''QXBwVmVyc2lvbjoiVmVyc2lvbiIsQ29udGVudFN0YXR1czoiQ29udGVudFN0YXR1cyIsSWRlbnRpZmllcjoiSWRlbnRpZmllciIsTGFuZ3VhZ2U6Ikxhbmd1YWdlIn0sb2g9d2UoaWgpO2Z1bmN0aW9uIFhmKHcsUCxEKXt3W1A9b2hbUF18fFBdPUR9ZnVuY3Rpb24gT3Uodyl7dmFyIFA9dy5y''@;'; put 'put ''ZWFkX3NoaWZ0KDQpLEQ9dy5yZWFkX3NoaWZ0KDQpO3JldHVybiBuZXcgRGF0ZSgxZTMqKEQvMWU3Kk1hdGgucG93KDIsMzIpK1AvMWU3LTExNjQ0NDczNjAwKSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIEpmKHcsUCxEKXt2YXIgZWU9dy5sLG9lPXcucmVh''@;'; put 'put ''ZF9zaGlmdCgwLCJscHN0ci1jcCIpO2lmKEQpZm9yKDt3LmwtZWUmMzspKyt3Lmw7cmV0dXJuIG9lfWZ1bmN0aW9uIG5mKHcsUCxEKXt2YXIgZWU9dy5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpO3JldHVybiBEJiYody5sKz00LShlZS5sZW5ndGgrMSYzKSYzKSxlZX1mdW5jdGlvbiB5Mih3LFAs''@;'; put 'put ''RCl7cmV0dXJuIDMxPT09UD9uZih3KTpKZih3LDAsRCl9ZnVuY3Rpb24gYWModyxQLEQpe3JldHVybiB5Mih3LFAsITE9PT1EPzA6NCl9ZnVuY3Rpb24gemIodyl7dmFyIFA9dy5sLEQ9U20odyxWNik7cmV0dXJuIDA9PXdbdy5sXSYmMD09d1t3LmwrMV0mJncubC1QJjImJih3LmwrPTIpLFtE''@;'; put 'put ''LFNtKHcsRWwpXX1mdW5jdGlvbiBVNih3LFApe2Zvcih2YXIgRD13LnJlYWRfc2hpZnQoNCksZWU9e30sb2U9MDtvZSE9RDsrK29lKXt2YXIgZ2U9dy5yZWFkX3NoaWZ0KDQpLF9lPXcucmVhZF9zaGlmdCg0KTtlZVtnZV09dy5yZWFkX3NoaWZ0KF9lLDEyMDA9PT1QPyJ1dGYxNmxlIjoidXRm''@;'; put 'put ''OCIpLnJlcGxhY2UoeSwiIikucmVwbGFjZShwLCIhIiksMTIwMD09PVAmJl9lJTImJih3LmwrPTIpfXJldHVybiAzJncubCYmKHcubD13Lmw+PjM8PDIpLGVlfWZ1bmN0aW9uIFo2KHcpe3ZhciBQPXcucmVhZF9zaGlmdCg0KSxEPXcuc2xpY2Uody5sLHcubCtQKTtyZXR1cm4gdy5sKz1QLCgz''@;'; put 'put ''JlApPjAmJih3LmwrPTQtKDMmUCkmMyksRH1mdW5jdGlvbiBTbSh3LFAsRCl7dmFyIG9lLGVlPXcucmVhZF9zaGlmdCgyKSxnZT1EfHx7fTtpZih3LmwrPTIsUCE9PVV1JiZlZSE9PVAmJi0xPT09SGIuaW5kZXhPZihQKSYmKDQxMjYhPSg2NTUzNCZQKXx8NDEyNiE9KDY1NTM0JmVlKSkpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0eXBlICIrUCsiIHNhdyAiK2VlKTtzd2l0Y2goUD09PVV1P2VlOlApe2Nhc2UgMjpyZXR1cm4gb2U9dy5yZWFkX3NoaWZ0KDIsImkiKSxnZS5yYXd8fCh3LmwrPTIpLG9lO2Nhc2UgMzpyZXR1cm4gdy5yZWFkX3NoaWZ0KDQsImkiKTtjYXNlIDExOnJl''@;'; put 'put ''dHVybiAwIT09dy5yZWFkX3NoaWZ0KDQpO2Nhc2UgMTk6cmV0dXJuIHcucmVhZF9zaGlmdCg0KTtjYXNlIDMwOnJldHVybiBKZih3LDAsNCkucmVwbGFjZSh5LCIiKTtjYXNlIDMxOnJldHVybiBuZih3KTtjYXNlIDY0OnJldHVybiBPdSh3KTtjYXNlIDY1OnJldHVybiBaNih3KTtjYXNlIDcx''@;'; put 'put ''OnJldHVybiBmdW5jdGlvbiBzeCh3KXt2YXIgUD17fTtyZXR1cm4gUC5TaXplPXcucmVhZF9zaGlmdCg0KSx3LmwrPVAuU2l6ZSszLShQLlNpemUtMSklNCxQfSh3KTtjYXNlIDgwOnJldHVybiBhYyh3LGVlLCFnZS5yYXcpLnJlcGxhY2UoeSwiIik7Y2FzZSA4MTpyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''Q20odyxQKXtpZighUCl0aHJvdyBuZXcgRXJyb3IoIlZ0VW5hbGlnbmVkU3RyaW5nIG11c3QgaGF2ZSBwb3NpdGl2ZSBsZW5ndGgiKTtyZXR1cm4geTIodyxQLDApfSh3LGVlKS5yZXBsYWNlKHksIiIpO2Nhc2UgNDEwODpyZXR1cm4gZnVuY3Rpb24gVWIodyl7Zm9yKHZhciBQPXcucmVhZF9z''@;'; put 'put ''aGlmdCg0KSxEPVtdLGVlPTA7ZWU8UC8yOysrZWUpRC5wdXNoKHpiKHcpKTtyZXR1cm4gRH0odyk7Y2FzZSA0MTI2OmNhc2UgNDEyNzpyZXR1cm4gNDEyNz09ZWU/ZnVuY3Rpb24gQmIodyl7Zm9yKHZhciBQPXcucmVhZF9zaGlmdCg0KSxEPVtdLGVlPTA7ZWUhPVA7KytlZSl7dmFyIG9lPXcu''@;'; put 'put ''bDtEW2VlXT13LnJlYWRfc2hpZnQoMCwibHB3c3RyIikucmVwbGFjZSh5LCIiKSx3Lmwtb2UmMiYmKHcubCs9Mil9cmV0dXJuIER9KHcpOmZ1bmN0aW9uIGpiKHcpe2Zvcih2YXIgUD13LnJlYWRfc2hpZnQoNCksRD1bXSxlZT0wO2VlIT1QOysrZWUpRFtlZV09dy5yZWFkX3NoaWZ0KDAsImxw''@;'; put 'put ''c3RyLWNwIikucmVwbGFjZSh5LCIiKTtyZXR1cm4gRH0odyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSAiK1ArIiAiK2VlKX19ZnVuY3Rpb24gWmIodyxQKXt2YXIgRD1wcig0KSxlZT1wcig0KTtzd2l0Y2goRC53cml0ZV9z''@;'; put 'put ''aGlmdCg0LDgwPT13PzMxOncpLHcpe2Nhc2UgMzplZS53cml0ZV9zaGlmdCgtNCxQKTticmVhaztjYXNlIDU6KGVlPXByKDgpKS53cml0ZV9zaGlmdCg4LFAsImYiKTticmVhaztjYXNlIDExOmVlLndyaXRlX3NoaWZ0KDQsUD8xOjApO2JyZWFrO2Nhc2UgNjQ6ZWU9ZnVuY3Rpb24gZHUodyl7''@;'; put 'put ''dmFyIEQ9KCJzdHJpbmciPT10eXBlb2Ygdz9uZXcgRGF0ZShEYXRlLnBhcnNlKHcpKTp3KS5nZXRUaW1lKCkvMWUzKzExNjQ0NDczNjAwLGVlPUQlTWF0aC5wb3coMiwzMiksb2U9KEQtZWUpL01hdGgucG93KDIsMzIpO29lKj0xZTc7dmFyIGdlPShlZSo9MWU3KS9NYXRoLnBvdygyLDMyKXww''@;'; put 'put ''O2dlPjAmJihlZSU9TWF0aC5wb3coMiwzMiksb2UrPWdlKTt2YXIgX2U9cHIoOCk7cmV0dXJuIF9lLndyaXRlX3NoaWZ0KDQsZWUpLF9lLndyaXRlX3NoaWZ0KDQsb2UpLF9lfShQKTticmVhaztjYXNlIDMxOmNhc2UgODA6Zm9yKChlZT1wcig0KzIqKFAubGVuZ3RoKzEpKyhQLmxlbmd0aCUy''@;'; put 'put ''PzA6MikpKS53cml0ZV9zaGlmdCg0LFAubGVuZ3RoKzEpLGVlLndyaXRlX3NoaWZ0KDAsUCwiZGJjcyIpO2VlLmwhPWVlLmxlbmd0aDspZWUud3JpdGVfc2hpZnQoMSwwKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZWRQcm9wZXJ0eVZhbHVlIHVucmVjb2duaXplZCB0eXBl''@;'; put 'put ''ICIrdysiICIrUCl9cmV0dXJuIE0oW0QsZWVdKX1mdW5jdGlvbiByZih3LFApe3ZhciBEPXcubCxlZT13LnJlYWRfc2hpZnQoNCksb2U9dy5yZWFkX3NoaWZ0KDQpLGdlPVtdLF9lPTAsdmU9MCxNZT0tMSxqZT17fTtmb3IoX2U9MDtfZSE9b2U7KytfZSl7dmFyIFVlPXcucmVhZF9zaGlmdCg0''@;'; put 'put ''KSxYZT13LnJlYWRfc2hpZnQoNCk7Z2VbX2VdPVtVZSxYZStEXX1nZS5zb3J0KGZ1bmN0aW9uKGt0LFR0KXtyZXR1cm4ga3RbMV0tVHRbMV19KTt2YXIgaXQ9e307Zm9yKF9lPTA7X2UhPW9lOysrX2Upe2lmKHcubCE9PWdlW19lXVsxXSl7dmFyIGZ0PSEwO2lmKF9lPjAmJlApc3dpdGNoKFBb''@;'; put 'put ''Z2VbX2UtMV1bMF1dLnQpe2Nhc2UgMjp3LmwrMj09PWdlW19lXVsxXSYmKHcubCs9MixmdD0hMSk7YnJlYWs7Y2FzZSA4MDpjYXNlIDQxMDg6dy5sPD1nZVtfZV1bMV0mJih3Lmw9Z2VbX2VdWzFdLGZ0PSExKX1pZigoIVB8fDA9PV9lKSYmdy5sPD1nZVtfZV1bMV0mJihmdD0hMSx3Lmw9Z2Vb''@;'; put 'put ''X2VdWzFdKSxmdCl0aHJvdyBuZXcgRXJyb3IoIlJlYWQgRXJyb3I6IEV4cGVjdGVkIGFkZHJlc3MgIitnZVtfZV1bMV0rIiBhdCAiK3cubCsiIDoiK19lKX1pZihQKXt2YXIgTXQ9UFtnZVtfZV1bMF1dO2lmKGl0W010Lm5dPVNtKHcsTXQudCx7cmF3OiEwfSksInZlcnNpb24iPT09TXQucCYm''@;'; put 'put ''KGl0W010Lm5dPVN0cmluZyhpdFtNdC5uXT4+MTYpKyIuIisoIjAwMDAiK1N0cmluZyg2NTUzNSZpdFtNdC5uXSkpLnNsaWNlKC00KSksIkNvZGVQYWdlIj09TXQubilzd2l0Y2goaXRbTXQubl0pe2Nhc2UgMDppdFtNdC5uXT0xMjUyO2Nhc2UgODc0OmNhc2UgOTMyOmNhc2UgOTM2OmNhc2Ug''@;'; put 'put ''OTQ5OmNhc2UgOTUwOmNhc2UgMTI1MDpjYXNlIDEyNTE6Y2FzZSAxMjUzOmNhc2UgMTI1NDpjYXNlIDEyNTU6Y2FzZSAxMjU2OmNhc2UgMTI1NzpjYXNlIDEyNTg6Y2FzZSAxZTQ6Y2FzZSAxMjAwOmNhc2UgMTIwMTpjYXNlIDEyNTI6Y2FzZSA2NWUzOmNhc2UtNTM2OmNhc2UgNjUwMDE6Y2Fz''@;'; put 'put ''ZS01MzU6eih2ZT1pdFtNdC5uXT4+PjAmNjU1MzUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb2RlUGFnZTogIitpdFtNdC5uXSl9fWVsc2UgaWYoMT09PWdlW19lXVswXSl7aWYodmU9aXQuQ29kZVBhZ2U9U20odyxucCkseih2ZSksLTEhPT1NZSl7dmFy''@;'; put 'put ''IHV0PXcubDt3Lmw9Z2VbTWVdWzFdLGplPVU2KHcsdmUpLHcubD11dH19ZWxzZSBpZigwPT09Z2VbX2VdWzBdKXtpZigwPT09dmUpe01lPV9lLHcubD1nZVtfZSsxXVsxXTtjb250aW51ZX1qZT1VNih3LHZlKX1lbHNle3ZhciBIdCx3dD1qZVtnZVtfZV1bMF1dO3N3aXRjaCh3W3cubF0pe2Nh''@;'; put 'put ''c2UgNjU6dy5sKz00LEh0PVo2KHcpO2JyZWFrO2Nhc2UgMzA6Y2FzZSAzMTp3LmwrPTQsSHQ9YWModyx3W3cubC00XSkucmVwbGFjZSgvXHUwMDAwKyQvLCIiKTticmVhaztjYXNlIDM6dy5sKz00LEh0PXcucmVhZF9zaGlmdCg0LCJpIik7YnJlYWs7Y2FzZSAxOTp3LmwrPTQsSHQ9dy5yZWFk''@;'; put 'put ''X3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTp3LmwrPTQsSHQ9dy5yZWFkX3NoaWZ0KDgsImYiKTticmVhaztjYXNlIDExOncubCs9NCxIdD14byh3LDQpO2JyZWFrO2Nhc2UgNjQ6dy5sKz00LEh0PVB0KE91KHcpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6''@;'; put 'put ''ICIrd1t3LmxdKX1pdFt3dF09SHR9fXJldHVybiB3Lmw9RCtlZSxpdH12YXIgWTY9WyJDb2RlUGFnZSIsIlRodW1ibmFpbCIsIl9QSURfTElOS0JBU0UiLCJfUElEX0hMSU5LUyIsIlN5c3RlbUlkZW50aWZpZXIiLCJGTVRJRCJdLmNvbmNhdChbIldvcmtzaGVldHMiLCJTaGVldE5hbWVzIiwi''@;'; put 'put ''TmFtZWRSYW5nZXMiLCJEZWZpbmVkTmFtZXMiLCJDaGFydHNoZWV0cyIsIkNoYXJ0TmFtZXMiXSk7ZnVuY3Rpb24gdXgodyl7c3dpdGNoKHR5cGVvZiB3KXtjYXNlImJvb2xlYW4iOnJldHVybiAxMTtjYXNlIm51bWJlciI6cmV0dXJuKDB8dyk9PXc/Mzo1O2Nhc2Uic3RyaW5nIjpyZXR1cm4g''@;'; put 'put ''MzE7Y2FzZSJvYmplY3QiOmlmKHcgaW5zdGFuY2VvZiBEYXRlKXJldHVybiA2NH1yZXR1cm4tMX1mdW5jdGlvbiBZYih3LFAsRCl7dmFyIGVlPXByKDgpLG9lPVtdLGdlPVtdLF9lPTgsdmU9MCxNZT1wcig4KSxqZT1wcig4KTtpZihNZS53cml0ZV9zaGlmdCg0LDIpLE1lLndyaXRlX3NoaWZ0''@;'; put 'put ''KDQsMTIwMCksamUud3JpdGVfc2hpZnQoNCwxKSxnZS5wdXNoKE1lKSxvZS5wdXNoKGplKSxfZSs9OCtNZS5sZW5ndGgsIVApeyhqZT1wcig4KSkud3JpdGVfc2hpZnQoNCwwKSxvZS51bnNoaWZ0KGplKTt2YXIgVWU9W3ByKDQpXTtmb3IoVWVbMF0ud3JpdGVfc2hpZnQoNCx3Lmxlbmd0aCks''@;'; put 'put ''dmU9MDt2ZTx3Lmxlbmd0aDsrK3ZlKXt2YXIgWGU9d1t2ZV1bMF07Zm9yKChNZT1wcig4KzIqKFhlLmxlbmd0aCsxKSsoWGUubGVuZ3RoJTI/MDoyKSkpLndyaXRlX3NoaWZ0KDQsdmUrMiksTWUud3JpdGVfc2hpZnQoNCxYZS5sZW5ndGgrMSksTWUud3JpdGVfc2hpZnQoMCxYZSwiZGJjcyIp''@;'; put 'put ''O01lLmwhPU1lLmxlbmd0aDspTWUud3JpdGVfc2hpZnQoMSwwKTtVZS5wdXNoKE1lKX1NZT1NKFVlKSxnZS51bnNoaWZ0KE1lKSxfZSs9OCtNZS5sZW5ndGh9Zm9yKHZlPTA7dmU8dy5sZW5ndGg7Kyt2ZSlpZigoIVB8fFBbd1t2ZV1bMF1dKSYmIShZNi5pbmRleE9mKHdbdmVdWzBdKT4tMSkm''@;'; put 'put ''Jm51bGwhPXdbdmVdWzFdKXt2YXIgaXQ9d1t2ZV1bMV0sZnQ9MDtpZihQKXt2YXIgTXQ9RFtmdD0rUFt3W3ZlXVswXV1dO2lmKCJ2ZXJzaW9uIj09TXQucCYmInN0cmluZyI9PXR5cGVvZiBpdCl7dmFyIHV0PWl0LnNwbGl0KCIuIik7aXQ9KCt1dFswXTw8MTYpKygrdXRbMV18fDApfU1lPVpi''@;'; put 'put ''KE10LnQsaXQpfWVsc2V7dmFyIHd0PXV4KGl0KTstMT09d3QmJih3dD0zMSxpdD1TdHJpbmcoaXQpKSxNZT1aYih3dCxpdCl9Z2UucHVzaChNZSksKGplPXByKDgpKS53cml0ZV9zaGlmdCg0LFA/ZnQ6Mit2ZSksb2UucHVzaChqZSksX2UrPTgrTWUubGVuZ3RofXZhciBIdD04KihnZS5sZW5n''@;'; put 'put ''dGgrMSk7Zm9yKHZlPTA7dmU8Z2UubGVuZ3RoOysrdmUpb2VbdmVdLndyaXRlX3NoaWZ0KDQsSHQpLEh0Kz1nZVt2ZV0ubGVuZ3RoO3JldHVybiBlZS53cml0ZV9zaGlmdCg0LF9lKSxlZS53cml0ZV9zaGlmdCg0LGdlLmxlbmd0aCksTShbZWVdLmNvbmNhdChvZSkuY29uY2F0KGdlKSl9ZnVu''@;'; put 'put ''Y3Rpb24gV2IodyxQLEQpe3ZhciBlZT13LmNvbnRlbnQ7aWYoIWVlKXJldHVybnt9O3NzKGVlLDApO3ZhciBvZSxnZSxfZSx2ZSxNZT0wO2VlLmNoaygiZmVmZiIsIkJ5dGUgT3JkZXI6ICIpLGVlLnJlYWRfc2hpZnQoMik7dmFyIGplPWVlLnJlYWRfc2hpZnQoNCksVWU9ZWUucmVhZF9zaGlm''@;'; put 'put ''dCgxNik7aWYoVWUhPT1OZS51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEJiZVZSE9PUQpdGhyb3cgbmV3IEVycm9yKCJCYWQgUHJvcGVydHlTZXQgQ0xTSUQgIitVZSk7aWYoMSE9PShvZT1lZS5yZWFkX3NoaWZ0KDQpKSYmMiE9PW9lKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICNT''@;'; put 'put ''ZXRzOiAiK29lKTtpZihnZT1lZS5yZWFkX3NoaWZ0KDE2KSx2ZT1lZS5yZWFkX3NoaWZ0KDQpLDE9PT1vZSYmdmUhPT1lZS5sKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoOiAiK3ZlKyIgIT09ICIrZWUubCk7Mj09PW9lJiYoX2U9ZWUucmVhZF9zaGlmdCgxNiksTWU9ZWUucmVh''@;'; put 'put ''ZF9zaGlmdCg0KSk7dmFyIE10LFhlPXJmKGVlLFApLGl0PXtTeXN0ZW1JZGVudGlmaWVyOmplfTtmb3IodmFyIGZ0IGluIFhlKWl0W2Z0XT1YZVtmdF07aWYoaXQuRk1USUQ9Z2UsMT09PW9lKXJldHVybiBpdDtpZihNZS1lZS5sPT0yJiYoZWUubCs9MiksZWUubCE9PU1lKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrZWUubCsiICE9PSAiK01lKTt0cnl7TXQ9cmYoZWUsbnVsbCl9Y2F0Y2h7fWZvcihmdCBpbiBNdClpdFtmdF09TXRbZnRdO3JldHVybiBpdC5GTVRJRD1bZ2UsX2VdLGl0fWZ1bmN0aW9uIHdpKHcsUCxELGVlLG9lLGdlKXt2YXIgX2U9cHIob2U/''@;'; put 'put ''Njg6NDgpLHZlPVtfZV07X2Uud3JpdGVfc2hpZnQoMiw2NTUzNCksX2Uud3JpdGVfc2hpZnQoMiwwKSxfZS53cml0ZV9zaGlmdCg0LDg0MjQxMjU5OSksX2Uud3JpdGVfc2hpZnQoMTYsTmUudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCwiaGV4IiksX2Uud3JpdGVfc2hpZnQoNCxvZT8yOjEp''@;'; put 'put ''LF9lLndyaXRlX3NoaWZ0KDE2LFAsImhleCIpLF9lLndyaXRlX3NoaWZ0KDQsb2U/Njg6NDgpO3ZhciBNZT1ZYih3LEQsZWUpO2lmKHZlLnB1c2goTWUpLG9lKXt2YXIgamU9WWIob2UsbnVsbCxudWxsKTtfZS53cml0ZV9zaGlmdCgxNixnZSwiaGV4IiksX2Uud3JpdGVfc2hpZnQoNCw2OCtN''@;'; put 'put ''ZS5sZW5ndGgpLHZlLnB1c2goamUpfXJldHVybiBNKHZlKX1mdW5jdGlvbiBRZih3LFApe3JldHVybiB3LnJlYWRfc2hpZnQoUCksbnVsbH1mdW5jdGlvbiB4byh3LFApe3JldHVybiAxPT09dy5yZWFkX3NoaWZ0KFApfWZ1bmN0aW9uIFpzKHcsUCl7cmV0dXJuIFB8fChQPXByKDIpKSxQLndy''@;'; put 'put ''aXRlX3NoaWZ0KDIsKyEhdyksUH1mdW5jdGlvbiB5cyh3KXtyZXR1cm4gdy5yZWFkX3NoaWZ0KDIsInUiKX1mdW5jdGlvbiBiYyh3LFApe3JldHVybiBQfHwoUD1wcigyKSksUC53cml0ZV9zaGlmdCgyLHcpLFB9ZnVuY3Rpb24gYWYodyxQKXtyZXR1cm4gZnVuY3Rpb24gTW0odyxQLEQpe2Zv''@;'; put 'put ''cih2YXIgZWU9W10sb2U9dy5sK1A7dy5sPG9lOyllZS5wdXNoKEQodyxvZS13LmwpKTtpZihvZSE9PXcubCl0aHJvdyBuZXcgRXJyb3IoIlNsdXJwIGVycm9yIik7cmV0dXJuIGVlfSh3LFAseXMpfWZ1bmN0aW9uIEdiKHcsUCxEKXtyZXR1cm4gRHx8KEQ9cHIoMikpLEQud3JpdGVfc2hpZnQo''@;'; put 'put ''MSwiZSI9PVA/K3c6KyEhdyksRC53cml0ZV9zaGlmdCgxLCJlIj09UD8xOjApLER9ZnVuY3Rpb24gZWQodyxQLEQpe3ZhciBlZT13LnJlYWRfc2hpZnQoRCYmRC5iaWZmPj0xMj8yOjEpLG9lPSJzYmNzLWNvbnQiLGdlPUI7RCYmRC5iaWZmPj04JiYoQj0xMjAwKSxEJiY4IT1ELmJpZmY/MTI9''@;'; put 'put ''PUQuYmlmZiYmKG9lPSJ3c3RyIik6dy5yZWFkX3NoaWZ0KDEpJiYob2U9ImRiY3MtY29udCIpLEQuYmlmZj49MiYmRC5iaWZmPD01JiYob2U9ImNwc3RyIik7dmFyIHZlPWVlP3cucmVhZF9zaGlmdChlZSxvZSk6IiI7cmV0dXJuIEI9Z2UsdmV9ZnVuY3Rpb24gRzYodyl7dmFyIFA9QjtCPTEy''@;'; put 'put ''MDA7dmFyIE1lLEQ9dy5yZWFkX3NoaWZ0KDIpLGVlPXcucmVhZF9zaGlmdCgxKSxvZT00JmVlLGdlPTgmZWUsX2U9MSsoMSZlZSksdmU9MCxqZT17fTtnZSYmKHZlPXcucmVhZF9zaGlmdCgyKSksb2UmJihNZT13LnJlYWRfc2hpZnQoNCkpO3ZhciBYZT0wPT09RD8iIjp3LnJlYWRfc2hpZnQo''@;'; put 'put ''RCwyPT1fZT8iZGJjcy1jb250Ijoic2Jjcy1jb250Iik7aWYoZ2UpZm9yKGplLl9SPVtdO3ZlLS0gPjA7KWplLl9SLnB1c2goe2lkeDp3LnJlYWRfc2hpZnQoMiksaWZudDp3LnJlYWRfc2hpZnQoMil9KTtyZXR1cm4gb2UmJih3LmwrPU1lKSxqZS50PVhlLGdlfHwoamUucj0iPHQ+IitqZS50''@;'; put 'put ''KyI8L3Q+IiksQj1QLGplfWZ1bmN0aW9uIGUxKHcsUCl7dmFyIEQ9dy5SJiZ3LlIubGVuZ3RofHx3LnI7dy5yJiYody5SPXM4KHcucikpO3ZhciBlZT0iIixvZT0wO0Q/dy5SLmZvckVhY2goZnVuY3Rpb24oTXQpe29lKyssZWUrPU10LnZ8fCIifSk6KGVlPXcudHx8IiIsb2U9MSk7dmFyIGdl''@;'; put 'put ''PXByKDMrKG9lPjE/MjowKSk7Z2Uud3JpdGVfc2hpZnQoMixlZS5sZW5ndGgpLGdlLndyaXRlX3NoaWZ0KDEsMXwob2U+MT84OjApKSxvZT4xJiZnZS53cml0ZV9zaGlmdCgyLG9lKTt2YXIgX2U9cHIoMiplZS5sZW5ndGgpO19lLndyaXRlX3NoaWZ0KDIqZWUubGVuZ3RoLGVlLCJ1dGYxNmxl''@;'; put 'put ''Iik7dmFyIHZlPVtnZSxfZV07aWYoRCl7dmFyIE1lPXByKDQqdy5SLmxlbmd0aCksamU9MDt2ZS5wdXNoKE1lKTtmb3IodmFyIFVlPTA7VWU8dy5SLmxlbmd0aDsrK1VlKXt2YXIgWGU9dy5SW1VlXTtNZS53cml0ZV9zaGlmdCgyLGplKSxqZSs9KFhlLnZ8fCIiKS5sZW5ndGg7dmFyIGl0PVhl''@;'; put 'put ''LnM/d2MoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpYZS5zfSxQKTowLGZ0PVAuY2VsbFhmc1tpdF0uZm9udElkO01lLndyaXRlX3NoaWZ0KDIsZnQ8ND9mdDpmdCsxKX19cmV0dXJuIE0odmUpfWZ1bmN0aW9uIHRkKHcsUCxEKXtpZihEKXtpZihELmJpZmY+PTImJkQu''@;'; put 'put ''YmlmZjw9NSlyZXR1cm4gdy5yZWFkX3NoaWZ0KFAsImNwc3RyIik7aWYoRC5iaWZmPj0xMilyZXR1cm4gdy5yZWFkX3NoaWZ0KFAsImRiY3MtY29udCIpfXZhciBvZT13LnJlYWRfc2hpZnQoMSk7cmV0dXJuIHcucmVhZF9zaGlmdChQLDA9PT1vZT8ic2Jjcy1jb250IjoiZGJjcy1jb250Iil9''@;'; put 'put ''ZnVuY3Rpb24gYWgodyxQLEQpe3ZhciBlZT13LnJlYWRfc2hpZnQoRCYmMj09RC5iaWZmPzE6Mik7cmV0dXJuIDA9PT1lZT8ody5sKyssIiIpOnRkKHcsZWUsRCl9ZnVuY3Rpb24gbGgodyxQLEQpe2lmKEQuYmlmZj41KXJldHVybiBhaCh3LDAsRCk7dmFyIGVlPXcucmVhZF9zaGlmdCgxKTty''@;'; put 'put ''ZXR1cm4gMD09PWVlPyh3LmwrKywiIik6dy5yZWFkX3NoaWZ0KGVlLEQuYmlmZjw9NHx8IXcubGVucz8iY3BzdHIiOiJzYmNzLWNvbnQiKX1mdW5jdGlvbiAkNih3LFAsRCl7cmV0dXJuIER8fChEPXByKDMrMip3Lmxlbmd0aCkpLEQud3JpdGVfc2hpZnQoMix3Lmxlbmd0aCksRC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDEpLEQud3JpdGVfc2hpZnQoMzEsdywidXRmMTZsZSIpLER9ZnVuY3Rpb24ga20odyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDQpO3JldHVybiBQPjA/dy5yZWFkX3NoaWZ0KFAsInV0ZjE2bGUiKS5yZXBsYWNlKHksIiIpOiIifWZ1bmN0aW9uIGNwKHcsUCl7UHx8KFA9cHIoNisyKncu''@;'; put 'put ''bGVuZ3RoKSksUC53cml0ZV9zaGlmdCg0LDErdy5sZW5ndGgpO2Zvcih2YXIgRD0wO0Q8dy5sZW5ndGg7KytEKVAud3JpdGVfc2hpZnQoMix3LmNoYXJDb2RlQXQoRCkpO3JldHVybiBQLndyaXRlX3NoaWZ0KDIsMCksUH1mdW5jdGlvbiBmcCh3KXt2YXIgUD1wcig1MTIpLEQ9MCxlZT13LlRh''@;'; put 'put ''cmdldDsiZmlsZTovLyI9PWVlLnNsaWNlKDAsNykmJihlZT1lZS5zbGljZSg3KSk7dmFyIG9lPWVlLmluZGV4T2YoIiMiKSxnZT1vZT4tMT8zMToyMztzd2l0Y2goZWUuY2hhckF0KDApKXtjYXNlIiMiOmdlPTI4O2JyZWFrO2Nhc2UiLiI6Z2UmPS0zfVAud3JpdGVfc2hpZnQoNCwyKSxQLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsZ2UpO3ZhciBfZT1bOCw2ODE1ODI3LDY2MTkyMzcsNDg0OTc4MCw4M107Zm9yKEQ9MDtEPF9lLmxlbmd0aDsrK0QpUC53cml0ZV9zaGlmdCg0LF9lW0RdKTtpZigyOD09Z2UpY3AoZWU9ZWUuc2xpY2UoMSksUCk7ZWxzZSBpZigyJmdlKXtmb3IoX2U9ImUwIGM5IGVhIDc5''@;'; put 'put ''IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiIi5zcGxpdCgiICIpLEQ9MDtEPF9lLmxlbmd0aDsrK0QpUC53cml0ZV9zaGlmdCgxLHBhcnNlSW50KF9lW0RdLDE2KSk7dmFyIHZlPW9lPi0xP2VlLnNsaWNlKDAsb2UpOmVlO2ZvcihQLndyaXRlX3NoaWZ0KDQsMioodmUubGVu''@;'; put 'put ''Z3RoKzEpKSxEPTA7RDx2ZS5sZW5ndGg7KytEKVAud3JpdGVfc2hpZnQoMix2ZS5jaGFyQ29kZUF0KEQpKTtQLndyaXRlX3NoaWZ0KDIsMCksOCZnZSYmY3Aob2U+LTE/ZWUuc2xpY2Uob2UrMSk6IiIsUCl9ZWxzZXtmb3IoX2U9IjAzIDAzIDAwIDAwIDAwIDAwIDAwIDAwIGMwIDAwIDAwIDAw''@;'; put 'put ''IDAwIDAwIDAwIDQ2Ii5zcGxpdCgiICIpLEQ9MDtEPF9lLmxlbmd0aDsrK0QpUC53cml0ZV9zaGlmdCgxLHBhcnNlSW50KF9lW0RdLDE2KSk7Zm9yKHZhciBNZT0wOyIuLi8iPT1lZS5zbGljZSgzKk1lLDMqTWUrMyl8fCIuLlxcIj09ZWUuc2xpY2UoMypNZSwzKk1lKzMpOykrK01lO2ZvcihQ''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsTWUpLFAud3JpdGVfc2hpZnQoNCxlZS5sZW5ndGgtMypNZSsxKSxEPTA7RDxlZS5sZW5ndGgtMypNZTsrK0QpUC53cml0ZV9zaGlmdCgxLDI1NSZlZS5jaGFyQ29kZUF0KEQrMypNZSkpO2ZvcihQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCgyLDY1NTM1''@;'; put 'put ''KSxQLndyaXRlX3NoaWZ0KDIsNTcwMDUpLEQ9MDtEPDY7KytEKVAud3JpdGVfc2hpZnQoNCwwKX1yZXR1cm4gUC5zbGljZSgwLFAubCl9ZnVuY3Rpb24gSzYodyl7cmV0dXJuW3cucmVhZF9zaGlmdCgxKSx3LnJlYWRfc2hpZnQoMSksdy5yZWFkX3NoaWZ0KDEpLHcucmVhZF9zaGlmdCgxKV19''@;'; put 'put ''ZnVuY3Rpb24gJGIodyxQKXt2YXIgRD1LNih3KTtyZXR1cm4gRFszXT0wLER9ZnVuY3Rpb24gamModyl7cmV0dXJue3I6dy5yZWFkX3NoaWZ0KDIpLGM6dy5yZWFkX3NoaWZ0KDIpLGl4ZmU6dy5yZWFkX3NoaWZ0KDIpfX1mdW5jdGlvbiB0MSh3LFAsRCxlZSl7cmV0dXJuIGVlfHwoZWU9cHIo''@;'; put 'put ''NikpLGVlLndyaXRlX3NoaWZ0KDIsdyksZWUud3JpdGVfc2hpZnQoMixQKSxlZS53cml0ZV9zaGlmdCgyLER8fDApLGVlfWZ1bmN0aW9uIHFiKHcsUCxEKXt2YXIgZWU9RC5iaWZmPjg/NDoyO3JldHVyblt3LnJlYWRfc2hpZnQoZWUpLHcucmVhZF9zaGlmdChlZSwiaSIpLHcucmVhZF9zaGlm''@;'; put 'put ''dChlZSwiaSIpXX1mdW5jdGlvbiBYYih3KXtyZXR1cm5bdy5yZWFkX3NoaWZ0KDIpLGljKHcpXX1mdW5jdGlvbiBiMih3KXt2YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6dy5yZWFkX3NoaWZ0KDIpLHI6UH0sZTp7Yzp3LnJlYWRfc2hpZnQoMiks''@;'; put 'put ''cjpEfX19ZnVuY3Rpb24gbjEodyxQKXtyZXR1cm4gUHx8KFA9cHIoOCkpLFAud3JpdGVfc2hpZnQoMix3LnMuciksUC53cml0ZV9zaGlmdCgyLHcuZS5yKSxQLndyaXRlX3NoaWZ0KDIsdy5zLmMpLFAud3JpdGVfc2hpZnQoMix3LmUuYyksUH1mdW5jdGlvbiBxNih3KXt2YXIgUD13LnJlYWRf''@;'; put 'put ''c2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6dy5yZWFkX3NoaWZ0KDEpLHI6UH0sZTp7Yzp3LnJlYWRfc2hpZnQoMSkscjpEfX19dmFyIGJsPXE2O2Z1bmN0aW9uIEVtKHcpe3cubCs9NDt2YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMiksZWU9dy5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpO3JldHVybiB3LmwrPTEyLFtELFAsZWVdfWZ1bmN0aW9uIFlzKHcpe3cubCs9Mix3LmwrPXcucmVhZF9zaGlmdCgyKX12YXIgWDY9ezA6WXMsNDpZcyw1OllzLDY6WXMsNzpmdW5jdGlvbiBlXyh3KXtyZXR1cm4gdy5sKz00LHcuY2Y9dy5yZWFkX3NoaWZ0KDIpLHt9fSw4''@;'; put 'put ''OllzLDk6WXMsMTA6WXMsMTE6WXMsMTI6WXMsMTM6ZnVuY3Rpb24gUWIodyl7dmFyIFA9e307cmV0dXJuIHcubCs9NCx3LmwrPTE2LFAuZlNoYXJlZE5vdGU9dy5yZWFkX3NoaWZ0KDIpLHcubCs9NCxQfSwxNDpZcywxNTpZcywxNjpZcywxNzpZcywxODpZcywxOTpZcywyMDpZcywyMTpFbX07''@;'; put 'put ''ZnVuY3Rpb24gemModyxQKXt2YXIgRD17QklGRlZlcjowLGR0OjB9O3N3aXRjaChELkJJRkZWZXI9dy5yZWFkX3NoaWZ0KDIpLChQLT0yKT49MiYmKEQuZHQ9dy5yZWFkX3NoaWZ0KDIpLHcubC09MiksRC5CSUZGVmVyKXtjYXNlIDE1MzY6Y2FzZSAxMjgwOmNhc2UgMTAyNDpjYXNlIDc2ODpj''@;'; put 'put ''YXNlIDUxMjpjYXNlIDI6Y2FzZSA3OmJyZWFrO2RlZmF1bHQ6aWYoUD42KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBCSUZGIFZlciAiK0QuQklGRlZlcil9cmV0dXJuIHcucmVhZF9zaGlmdChQKSxEfWZ1bmN0aW9uIHhtKHcsUCxEKXt2YXIgZWU9MTUzNixvZT0xNjtzd2l0Y2goRC5i''@;'; put 'put ''b29rVHlwZSl7Y2FzZSJiaWZmOCI6Y2FzZSJ4bGEiOmJyZWFrO2Nhc2UiYmlmZjUiOmVlPTEyODAsb2U9ODticmVhaztjYXNlImJpZmY0IjplZT00LG9lPTY7YnJlYWs7Y2FzZSJiaWZmMyI6ZWU9MyxvZT02O2JyZWFrO2Nhc2UiYmlmZjIiOmVlPTIsb2U9NDticmVhaztkZWZhdWx0OnRocm93''@;'; put 'put ''IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgQklGRiB2ZXJzaW9uIil9dmFyIGdlPXByKG9lKTtyZXR1cm4gZ2Uud3JpdGVfc2hpZnQoMixlZSksZ2Uud3JpdGVfc2hpZnQoMixQKSxvZT40JiZnZS53cml0ZV9zaGlmdCgyLDI5MjgyKSxvZT42JiZnZS53cml0ZV9zaGlmdCgyLDE5OTcpLG9lPjgm''@;'; put 'put ''JihnZS53cml0ZV9zaGlmdCgyLDQ5MTYxKSxnZS53cml0ZV9zaGlmdCgyLDEpLGdlLndyaXRlX3NoaWZ0KDIsMTc5OCksZ2Uud3JpdGVfc2hpZnQoMiwwKSksZ2V9ZnVuY3Rpb24gbzEodyxQKXt2YXIgRD0hUHx8UC5iaWZmPj04PzI6MSxlZT1wcig4K0Qqdy5uYW1lLmxlbmd0aCk7ZWUud3Jp''@;'; put 'put ''dGVfc2hpZnQoNCx3LnBvcyksZWUud3JpdGVfc2hpZnQoMSx3LmhzfHwwKSxlZS53cml0ZV9zaGlmdCgxLHcuZHQpLGVlLndyaXRlX3NoaWZ0KDEsdy5uYW1lLmxlbmd0aCksUC5iaWZmPj04JiZlZS53cml0ZV9zaGlmdCgxLDEpLGVlLndyaXRlX3NoaWZ0KEQqdy5uYW1lLmxlbmd0aCx3Lm5h''@;'; put 'put ''bWUsUC5iaWZmPDg/InNiY3MiOiJ1dGYxNmxlIik7dmFyIG9lPWVlLnNsaWNlKDAsZWUubCk7cmV0dXJuIG9lLmw9ZWUubCxvZX1mdW5jdGlvbiBQcih3KXtyZXR1cm4gdy5yZWFkX3NoaWZ0KDQpLG9jKHcpfWZ1bmN0aW9uIHJhKHcpe3JldHVybiB3LnJlYWRfc2hpZnQoNCksYjAodyl9ZnVu''@;'; put 'put ''Y3Rpb24gaHUodyxQLEQpe3JldHVybiB3LnJlYWRfc2hpZnQoNCksSEEodywwLEQpfWZ1bmN0aW9uIGExKHcsUCxEKXt2YXIgZWU9MDtEJiYyPT1ELmJpZmZ8fChlZT13LnJlYWRfc2hpZnQoMikpO3ZhciBvZT13LnJlYWRfc2hpZnQoMik7cmV0dXJuIEQmJjI9PUQuYmlmZiYmKGVlPTEtKG9l''@;'; put 'put ''Pj4xNSksb2UmPTMyNzY3KSxbe1Vuc3luY2VkOjEmZWUsRHlaZXJvOigyJmVlKT4+MSxFeEFzYzooNCZlZSk+PjIsRXhEc2M6KDgmZWUpPj4zfSxvZV19ZnVuY3Rpb24gUXIodyxQLEQsZWUpe3ZhciBvZT1EJiY1PT1ELmJpZmY7ZWV8fChlZT1wcihvZT8zK1AubGVuZ3RoOjUrMipQLmxlbmd0''@;'; put 'put ''aCkpLGVlLndyaXRlX3NoaWZ0KDIsdyksZWUud3JpdGVfc2hpZnQob2U/MToyLFAubGVuZ3RoKSxvZXx8ZWUud3JpdGVfc2hpZnQoMSwxKSxlZS53cml0ZV9zaGlmdCgob2U/MToyKSpQLmxlbmd0aCxQLG9lPyJzYmNzIjoidXRmMTZsZSIpO3ZhciBnZT1lZS5sZW5ndGg+ZWUubD9lZS5zbGlj''@;'; put 'put ''ZSgwLGVlLmwpOmVlO3JldHVybiBudWxsPT1nZS5sJiYoZ2UubD1nZS5sZW5ndGgpLGdlfXZhciBJYT1saDtmdW5jdGlvbiBVdCh3LFAsRCl7dmFyIGVlPXcubCtQLG9lPTghPUQuYmlmZiYmRC5iaWZmPzI6NCxnZT13LnJlYWRfc2hpZnQob2UpLF9lPXcucmVhZF9zaGlmdChvZSksdmU9dy5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpLE1lPXcucmVhZF9zaGlmdCgyKTtyZXR1cm4gdy5sPWVlLHtzOntyOmdlLGM6dmV9LGU6e3I6X2UsYzpNZX19fWZ1bmN0aW9uIGU4KHcsUCxELGVlKXt2YXIgZ2U9IUR8fCFELmJpZmZ8fDg9PUQuYmlmZjtlZXx8KGVlPXByKEQmJjU9PUQuYmlmZj8xNjoyMCkpLGVlLndy''@;'; put 'put ''aXRlX3NoaWZ0KDIsZ2UmJkQuY2VsbFN0eWxlcyYmdy5mb250SWQmJih3LmZvbnRJZDw0P3cuZm9udElkOncuZm9udElkKzEpfHwwKTt2YXIgX2U9MTt3LnByb3RlY3Rpb24mJih3LnByb3RlY3Rpb24uZWRpdGFibGUmJihfZSY9LTIpLHcucHJvdGVjdGlvbi5oaWRkZW4mJihfZXw9MikpLHcu''@;'; put 'put ''c3R5bGU/KGVlLndyaXRlX3NoaWZ0KDIsdy5udW1GbXRJZHx8MCksZWUud3JpdGVfc2hpZnQoMiw2NTUyNHxfZSkpOihlZS53cml0ZV9zaGlmdCgyLHcubnVtRm10SWR8fDApLGVlLndyaXRlX3NoaWZ0KDIsUDw8NHxfZSkpO3ZhciB2ZT13LmFsaWdubWVudHx8e307aWYoZ2Upe3ZhciBNZT0w''@;'; put 'put ''LGplPTA7TTguaW5kZXhPZih2ZS5ob3Jpem9udGFsKT4tMSYmKE1lfD1NOC5pbmRleE9mKHZlLmhvcml6b250YWwpKSx2ZS53cmFwVGV4dCYmKE1lfD04KSxIbS5pbmRleE9mKHZlLnZlcnRpY2FsKT4tMT9NZXw9SG0uaW5kZXhPZih2ZS52ZXJ0aWNhbCk8PDQ6bnVsbD09dmUudmVydGljYWwm''@;'; put 'put ''JihNZXw9MzIpLGVlLndyaXRlX3NoaWZ0KDEsTWUpLGVlLndyaXRlX3NoaWZ0KDEsMCksdmUuc2hyaW5rVG9GaXQmJihqZXw9MTYpLGVlLndyaXRlX3NoaWZ0KDIsamUpO3ZhciBVZT1udWxsO251bGwhPXcuYm9yZGVySWQmJihVZT1ELkJvcmRlcnMmJkQuQm9yZGVyc1t3LmJvcmRlcklkfHww''@;'; put 'put ''XXx8e30pO3ZhciBYZT0wLGl0PTAsZnQ9MDtVZSYmKG51bGwhPVVlLmxlZnQmJlVlLmxlZnQuc3R5bGUmJihYZXw9KGZ0PXBoLmluZGV4T2YoVWUubGVmdC5zdHlsZSkpPi0xP2Z0OjApLG51bGwhPVVlLnJpZ2h0JiZVZS5yaWdodC5zdHlsZSYmKFhlfD0oKGZ0PXBoLmluZGV4T2YoVWUucmln''@;'; put 'put ''aHQuc3R5bGUpKT4tMT9mdDowKTw8NCksbnVsbCE9VWUudG9wJiZVZS50b3Auc3R5bGUmJihpdHw9KGZ0PXBoLmluZGV4T2YoVWUudG9wLnN0eWxlKSk+LTE/ZnQ6MCksbnVsbCE9VWUuYm90dG9tJiZVZS5ib3R0b20uc3R5bGUmJihpdHw9KChmdD1waC5pbmRleE9mKFVlLmJvdHRvbS5zdHls''@;'; put 'put ''ZSkpPi0xP2Z0OjApPDw0KSksZWUud3JpdGVfc2hpZnQoMSxYZSksZWUud3JpdGVfc2hpZnQoMSxpdCksZWUud3JpdGVfc2hpZnQoMiwwKSxlZS53cml0ZV9zaGlmdCgyLDApLGVlLndyaXRlX3NoaWZ0KDEsMCk7dmFyIE10PTAsdXQ9RC5GaWxscyYmRC5GaWxsc1t3LmZpbGxJZHx8MF18fHt9''@;'; put 'put ''Oyh1dC5mZ0NvbG9yfHx1dC5iZ0NvbG9yKSYmKE10fD00KSxlZS53cml0ZV9zaGlmdCgxLE10KTt2YXIgd3Q9MDt3dHw9VHAodXQuZmdDb2xvciw2NSksd3R8PVRwKHV0LmJnQ29sb3IsNjUpPDw3LGVlLndyaXRlX3NoaWZ0KDIsd3QpfWVsc2UgZWUud3JpdGVfc2hpZnQoNCwwKSxlZS53cml0''@;'; put 'put ''ZV9zaGlmdCg0LDApLGVlLndyaXRlX3NoaWZ0KDIsMCk7cmV0dXJuIGVlfWZ1bmN0aW9uIFl1KHcsUCxEKXt2YXIgZWU9amModyk7KDI9PUQuYmlmZnx8OT09UCkmJisrdy5sO3ZhciBvZT1mdW5jdGlvbiBXNih3KXt2YXIgUD13LnJlYWRfc2hpZnQoMSk7cmV0dXJuIDE9PT13LnJlYWRfc2hp''@;'; put 'put ''ZnQoMSk/UDoxPT09UH0odyk7cmV0dXJuIGVlLnZhbD1vZSxlZS50PSEwPT09b2V8fCExPT09b2U/ImIiOiJlIixlZX12YXIgc2Y9ZnVuY3Rpb24gZHAodyxQLEQpe3JldHVybiAwPT09UD8iIjpsaCh3LDAsRCl9O2Z1bmN0aW9uIG5fKHcsUCxEKXt2YXIgb2UsZWU9dy5yZWFkX3NoaWZ0KDIp''@;'; put 'put ''LGdlPXtmQnVpbHRJbjoxJmVlLGZXYW50QWR2aXNlOmVlPj4+MSYxLGZXYW50UGljdDplZT4+PjImMSxmT2xlOmVlPj4+MyYxLGZPbGVMaW5rOmVlPj4+NCYxLGNmOmVlPj4+NSYxMDIzLGZJY29uOmVlPj4+MTUmMX07cmV0dXJuIDE0ODQ5PT09RC5zYmNjaCYmKG9lPWZ1bmN0aW9uIGZ4KHcs''@;'; put 'put ''UCxEKXt3LmwrPTQ7dmFyIGVlPXcubCsoUC09NCksb2U9ZWQodywwLEQpLGdlPXcucmVhZF9zaGlmdCgyKTtpZihnZSE9PShlZS09dy5sKSl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBBZGRpblVkZjogcGFkZGluZyA9ICIrZWUrIiAhPSAiK2dlKTtyZXR1cm4gdy5sKz1nZSxvZX0odyxQ''@;'; put 'put ''LTIsRCkpLGdlLmJvZHk9b2V8fHcucmVhZF9zaGlmdChQLTIpLCJzdHJpbmciPT10eXBlb2Ygb2UmJihnZS5OYW1lPW9lKSxnZX12YXIgQkY9WyJfeGxubS5Db25zb2xpZGF0ZV9BcmVhIiwiX3hsbm0uQXV0b19PcGVuIiwiX3hsbm0uQXV0b19DbG9zZSIsIl94bG5tLkV4dHJhY3QiLCJfeGxu''@;'; put 'put ''bS5EYXRhYmFzZSIsIl94bG5tLkNyaXRlcmlhIiwiX3hsbm0uUHJpbnRfQXJlYSIsIl94bG5tLlByaW50X1RpdGxlcyIsIl94bG5tLlJlY29yZGVyIiwiX3hsbm0uRGF0YV9Gb3JtIiwiX3hsbm0uQXV0b19BY3RpdmF0ZSIsIl94bG5tLkF1dG9fRGVhY3RpdmF0ZSIsIl94bG5tLlNoZWV0X1Rp''@;'; put 'put ''dGxlIiwiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIl07ZnVuY3Rpb24gdngodyxQLEQpe3ZhciBlZT13LmwrUCxvZT13LnJlYWRfc2hpZnQoMiksZ2U9dy5yZWFkX3NoaWZ0KDEpLF9lPXcucmVhZF9zaGlmdCgxKSx2ZT13LnJlYWRfc2hpZnQoRCYmMj09RC5iaWZmPzE6MiksTWU9MDsoIUR8fEQu''@;'; put 'put ''YmlmZj49NSkmJig1IT1ELmJpZmYmJih3LmwrPTIpLE1lPXcucmVhZF9zaGlmdCgyKSw1PT1ELmJpZmYmJih3LmwrPTIpLHcubCs9NCk7dmFyIGplPXRkKHcsX2UsRCk7MzImb2UmJihqZT1CRltqZS5jaGFyQ29kZUF0KDApXSk7dmFyIFVlPWVlLXcubDtEJiYyPT1ELmJpZmYmJi0tVWU7dmFy''@;'; put 'put ''IFhlPWVlIT13LmwmJjAhPT12ZSYmVWU+MD9mdW5jdGlvbiB6OCh3LFAsRCxlZSl7dmFyIF9lLG9lPXcubCtQLGdlPVFtKHcsZWUsRCk7cmV0dXJuIG9lIT09dy5sJiYoX2U9UnAodyxvZS13LmwsZ2UsRCkpLFtnZSxfZV19KHcsVWUsRCx2ZSk6W107cmV0dXJue2NoS2V5OmdlLE5hbWU6amUs''@;'; put 'put ''aXRhYjpNZSxyZ2NlOlhlfX1mdW5jdGlvbiB0OCh3LFAsRCl7aWYoRC5iaWZmPDgpcmV0dXJuIGZ1bmN0aW9uIHJfKHcsUCxEKXszPT13W3cubCsxXSYmd1t3LmxdKys7dmFyIGVlPWVkKHcsMCxEKTtyZXR1cm4gMz09ZWUuY2hhckNvZGVBdCgwKT9lZS5zbGljZSgxKTplZX0odywwLEQpO2Zv''@;'; put 'put ''cih2YXIgZWU9W10sb2U9dy5sK1AsZ2U9dy5yZWFkX3NoaWZ0KEQuYmlmZj44PzQ6Mik7MCE9Z2UtLTspZWUucHVzaChxYih3LDAsRCkpO2lmKHcubCE9b2UpdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIrdy5sKyIgIT0gIitvZSk7cmV0dXJuIGVlfWZ1bmN0aW9uIGJ4KHcs''@;'; put 'put ''UCxEKXt2YXIgZWU9Ymwodyw2KTtzd2l0Y2goRC5iaWZmKXtjYXNlIDI6dy5sKyssUC09NzticmVhaztjYXNlIDM6Y2FzZSA0OncubCs9MixQLT04O2JyZWFrO2RlZmF1bHQ6dy5sKz02LFAtPTEyfXJldHVybltlZSxLXyh3LFAsRCldfXZhciBuOD1bXTtmdW5jdGlvbiBfMih3KXt2YXIgUD1w''@;'; put 'put ''cigyNCksRD1jYSh3WzBdKTtQLndyaXRlX3NoaWZ0KDIsRC5yKSxQLndyaXRlX3NoaWZ0KDIsRC5yKSxQLndyaXRlX3NoaWZ0KDIsRC5jKSxQLndyaXRlX3NoaWZ0KDIsRC5jKTtmb3IodmFyIGVlPSJkMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAwMCBhYSAwMCA0YiBhOSAwYiIuc3Bs''@;'; put 'put ''aXQoIiAiKSxvZT0wO29lPDE2Oysrb2UpUC53cml0ZV9zaGlmdCgxLHBhcnNlSW50KGVlW29lXSwxNikpO3JldHVybiBNKFtQLGZwKHdbMV0pXSl9ZnVuY3Rpb24gVUYodyl7dmFyIFA9d1sxXS5Ub29sdGlwLEQ9cHIoMTArMiooUC5sZW5ndGgrMSkpO0Qud3JpdGVfc2hpZnQoMiwyMDQ4KTt2''@;'; put 'put ''YXIgZWU9Y2Eod1swXSk7RC53cml0ZV9zaGlmdCgyLGVlLnIpLEQud3JpdGVfc2hpZnQoMixlZS5yKSxELndyaXRlX3NoaWZ0KDIsZWUuYyksRC53cml0ZV9zaGlmdCgyLGVlLmMpO2Zvcih2YXIgb2U9MDtvZTxQLmxlbmd0aDsrK29lKUQud3JpdGVfc2hpZnQoMixQLmNoYXJDb2RlQXQob2Up''@;'; put 'put ''KTtyZXR1cm4gRC53cml0ZV9zaGlmdCgyLDApLER9ZnVuY3Rpb24gcmQodyxQLEQpe2lmKCFELmNlbGxTdHlsZXMpcmV0dXJuIHh1KHcsUCk7dmFyIGVlPUQmJkQuYmlmZj49MTI/NDoyLG9lPXcucmVhZF9zaGlmdChlZSksZ2U9dy5yZWFkX3NoaWZ0KGVlKSxfZT13LnJlYWRfc2hpZnQoZWUp''@;'; put 'put ''LHZlPXcucmVhZF9zaGlmdChlZSksTWU9dy5yZWFkX3NoaWZ0KDIpOzI9PWVlJiYody5sKz0yKTt2YXIgamU9e3M6b2UsZTpnZSx3Ol9lLGl4ZmU6dmUsZmxhZ3M6TWV9O3JldHVybihELmJpZmY+PTV8fCFELmJpZmYpJiYoamUubGV2ZWw9TWU+PjgmNyksamV9bjhbOF09ZnVuY3Rpb24odyxQ''@;'; put 'put ''KXt2YXIgRD13LmwrUDt3LmwrPTEwO3ZhciBlZT13LnJlYWRfc2hpZnQoMik7dy5sKz00LHcubCs9Mix3LmwrPTIsdy5sKz0yLHcubCs9NDt2YXIgb2U9dy5yZWFkX3NoaWZ0KDEpO3JldHVybiB3LmwrPW9lLHcubD1ELHtmbXQ6ZWV9fTt2YXIgeHg9amMsQXg9YWYsJEY9YWg7dmFyIHNoPWZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIHc9ezE6NDM3LDI6ODUwLDM6MTI1Miw0OjFlNCwxMDA6ODUyLDEwMTo4NjYsMTAyOjg2NSwxMDM6ODYxLDEwNDo4OTUsMTA1OjYyMCwxMDY6NzM3LDEwNzo4NTcsMTIwOjk1MCwxMjE6OTQ5LDEyMjo5MzYsMTIzOjkzMiwxMjQ6ODc0LDEyNToxMjU1LDEyNjoxMjU2LDE1''@;'; put 'put ''MDoxMDAwNywxNTE6MTAwMjksMTUyOjEwMDA2LDIwMDoxMjUwLDIwMToxMjUxLDIwMjoxMjU0LDIwMzoxMjUzLDA6MjAxMjcsODo4NjUsOTo0MzcsMTA6ODUwLDExOjQzNywxMzo0MzcsMTQ6ODUwLDE1OjQzNywxNjo4NTAsMTc6NDM3LDE4Ojg1MCwxOTo5MzIsMjA6ODUwLDIxOjQzNywyMjo4''@;'; put 'put ''NTAsMjM6ODY1LDI0OjQzNywyNTo0MzcsMjY6ODUwLDI3OjQzNywyODo4NjMsMjk6ODUwLDMxOjg1MiwzNDo4NTIsMzU6ODUyLDM2Ojg2MCwzNzo4NTAsMzg6ODY2LDU1Ojg1MCw2NDo4NTIsNzc6OTM2LDc4Ojk0OSw3OTo5NTAsODA6ODc0LDg3OjEyNTIsODg6MTI1Miw4OToxMjUyLDEwODo4''@;'; put 'put ''NjMsMTM0OjczNywxMzU6ODUyLDEzNjo4NTcsMjA0OjEyNTcsMjU1OjE2OTY5fSxQPXdlKHsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2''@;'; put 'put ''LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3fSk7ZnVuY3Rpb24gb2UoTWUsamUpe3ZhciBVZT1qZXx8e307cmV0dXJuIFVlLmRhdGVORnx8KFVl''@;'; put 'put ''LmRhdGVORj0ieXl5eW1tZGQiKSwkMShmdW5jdGlvbiBlZShNZSxqZSl7dmFyIFVlPVtdLFhlPVkoMSk7c3dpdGNoKGplLnR5cGUpe2Nhc2UiYmFzZTY0IjpYZT14KGxlLmRlY29kZShNZSkpO2JyZWFrO2Nhc2UiYmluYXJ5IjpYZT14KE1lKTticmVhaztjYXNlImJ1ZmZlciI6Y2FzZSJhcnJh''@;'; put 'put ''eSI6WGU9TWV9c3MoWGUsMCk7dmFyIGl0PVhlLnJlYWRfc2hpZnQoMSksZnQ9ISEoMTM2Jml0KSxNdD0hMSx1dD0hMTtzd2l0Y2goaXQpe2Nhc2UgMjpjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAyNDU6YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5Ok10PSEwLGZ0PSEwO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTQwOnV0PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogIitpdC50b1N0cmluZygxNikpfXZhciB3dD0wLEh0PTUyMTsyPT1pdCYmKHd0PVhlLnJlYWRfc2hpZnQoMikpLFhlLmwrPTMsMiE9aXQmJih3dD1YZS5yZWFkX3NoaWZ0KDQp''@;'; put 'put ''KSx3dD4xMDQ4NTc2JiYod3Q9MWU2KSwyIT1pdCYmKEh0PVhlLnJlYWRfc2hpZnQoMikpO3ZhciBrdD1YZS5yZWFkX3NoaWZ0KDIpLFR0PWplLmNvZGVwYWdlfHwxMjUyOzIhPWl0JiYoWGUubCs9MTYsWGUucmVhZF9zaGlmdCgxKSwwIT09WGVbWGUubF0mJihUdD13W1hlW1hlLmxdXSksWGUu''@;'; put 'put ''bCs9MSxYZS5sKz0yKSx1dCYmKFhlLmwrPTM2KTtmb3IodmFyIFl0PVtdLGduPXt9LHFuPU1hdGgubWluKFhlLmxlbmd0aCwyPT1pdD81MjE6SHQtMTAtKE10PzI2NDowKSksZm49dXQ/MzI6MTE7WGUubDxxbiYmMTMhPVhlW1hlLmxdOylzd2l0Y2goZ249e30sZ24ubmFtZT1jcHRhYmxlLnV0''@;'; put 'put ''aWxzLmRlY29kZShUdCxYZS5zbGljZShYZS5sLFhlLmwrZm4pKS5yZXBsYWNlKC9bXHUwMDAwXHJcbl0uKiQvZywiIiksWGUubCs9Zm4sZ24udHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlKFhlLnJlYWRfc2hpZnQoMSkpLDIhPWl0JiYhdXQmJihnbi5vZmZzZXQ9WGUucmVhZF9zaGlmdCg0KSks''@;'; put 'put ''Z24ubGVuPVhlLnJlYWRfc2hpZnQoMSksMj09aXQmJihnbi5vZmZzZXQ9WGUucmVhZF9zaGlmdCgyKSksZ24uZGVjPVhlLnJlYWRfc2hpZnQoMSksZ24ubmFtZS5sZW5ndGgmJll0LnB1c2goZ24pLDIhPWl0JiYoWGUubCs9dXQ/MTM6MTQpLGduLnR5cGUpe2Nhc2UiQiI6KCFNdHx8OCE9Z24u''@;'; put 'put ''bGVuKSYmamUuV1RGJiZjb25zb2xlLmxvZygiU2tpcHBpbmcgIitnbi5uYW1lKyI6Iitnbi50eXBlKTticmVhaztjYXNlIkciOmNhc2UiUCI6amUuV1RGJiZjb25zb2xlLmxvZygiU2tpcHBpbmcgIitnbi5uYW1lKyI6Iitnbi50eXBlKTticmVhaztjYXNlIisiOmNhc2UiMCI6Y2FzZSJAIjpj''@;'; put 'put ''YXNlIkMiOmNhc2UiRCI6Y2FzZSJGIjpjYXNlIkkiOmNhc2UiTCI6Y2FzZSJNIjpjYXNlIk4iOmNhc2UiTyI6Y2FzZSJUIjpjYXNlIlkiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEZpZWxkIFR5cGU6ICIrZ24udHlwZSl9aWYoMTMhPT1YZVtYZS5sXSYmKFhlLmw9''@;'; put 'put ''SHQtMSksMTMhPT1YZS5yZWFkX3NoaWZ0KDEpKXRocm93IG5ldyBFcnJvcigiREJGIFRlcm1pbmF0b3Igbm90IGZvdW5kICIrWGUubCsiICIrWGVbWGUubF0pO1hlLmw9SHQ7dmFyIEtuPTAsem49MDtmb3IoVWVbMF09W10sem49MDt6biE9WXQubGVuZ3RoOysrem4pVWVbMF1bem5dPVl0W3pu''@;'; put 'put ''XS5uYW1lO2Zvcig7d3QtLSA+MDspaWYoNDIhPT1YZVtYZS5sXSlmb3IoKytYZS5sLFVlWysrS25dPVtdLHpuPTAsem49MDt6biE9WXQubGVuZ3RoOysrem4pe3ZhciBPbj1YZS5zbGljZShYZS5sLFhlLmwrWXRbem5dLmxlbik7WGUubCs9WXRbem5dLmxlbixzcyhPbiwwKTt2YXIgZXI9Y3B0''@;'; put 'put ''YWJsZS51dGlscy5kZWNvZGUoVHQsT24pO3N3aXRjaChZdFt6bl0udHlwZSl7Y2FzZSJDIjplci50cmltKCkubGVuZ3RoJiYoVWVbS25dW3puXT1lci5yZXBsYWNlKC9ccyskLywiIikpO2JyZWFrO2Nhc2UiRCI6VWVbS25dW3puXT04PT09ZXIubGVuZ3RoP25ldyBEYXRlKCtlci5zbGljZSgw''@;'; put 'put ''LDQpLCtlci5zbGljZSg0LDYpLTEsK2VyLnNsaWNlKDYsOCkpOmVyO2JyZWFrO2Nhc2UiRiI6VWVbS25dW3puXT1wYXJzZUZsb2F0KGVyLnRyaW0oKSk7YnJlYWs7Y2FzZSIrIjpjYXNlIkkiOlVlW0tuXVt6bl09dXQ/MjE0NzQ4MzY0OF5Pbi5yZWFkX3NoaWZ0KC00LCJpIik6T24ucmVhZF9z''@;'; put 'put ''aGlmdCg0LCJpIik7YnJlYWs7Y2FzZSJMIjpzd2l0Y2goZXIudHJpbSgpLnRvVXBwZXJDYXNlKCkpe2Nhc2UiWSI6Y2FzZSJUIjpVZVtLbl1bem5dPSEwO2JyZWFrO2Nhc2UiTiI6Y2FzZSJGIjpVZVtLbl1bem5dPSExO2JyZWFrO2Nhc2UiIjpjYXNlIj8iOmJyZWFrO2RlZmF1bHQ6dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJEQkYgVW5yZWNvZ25pemVkIEw6fCIrZXIrInwiKX1icmVhaztjYXNlIk0iOmlmKCFmdCl0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbmV4cGVjdGVkIE1FTU8gZm9yIHR5cGUgIitpdC50b1N0cmluZygxNikpO1VlW0tuXVt6bl09IiMjTUVNTyMjIisodXQ/cGFyc2VJbnQoZXIu''@;'; put 'put ''dHJpbSgpLDEwKTpPbi5yZWFkX3NoaWZ0KDQpKTticmVhaztjYXNlIk4iOihlcj1lci5yZXBsYWNlKC9cdTAwMDAvZywiIikudHJpbSgpKSYmIi4iIT1lciYmKFVlW0tuXVt6bl09K2VyfHwwKTticmVhaztjYXNlIkAiOlVlW0tuXVt6bl09bmV3IERhdGUoT24ucmVhZF9zaGlmdCgtOCwiZiIp''@;'; put 'put ''LTYyMTM1NjgzMmU1KTticmVhaztjYXNlIlQiOlVlW0tuXVt6bl09bmV3IERhdGUoODY0ZTUqKE9uLnJlYWRfc2hpZnQoNCktMjQ0MDU4OCkrT24ucmVhZF9zaGlmdCg0KSk7YnJlYWs7Y2FzZSJZIjpVZVtLbl1bem5dPU9uLnJlYWRfc2hpZnQoNCwiaSIpLzFlNDticmVhaztjYXNlIk8iOlVl''@;'; put 'put ''W0tuXVt6bl09LU9uLnJlYWRfc2hpZnQoLTgsImYiKTticmVhaztjYXNlIkIiOmlmKE10JiY4PT1ZdFt6bl0ubGVuKXtVZVtLbl1bem5dPU9uLnJlYWRfc2hpZnQoOCwiZiIpO2JyZWFrfWNhc2UiRyI6Y2FzZSJQIjpPbi5sKz1ZdFt6bl0ubGVuO2JyZWFrO2Nhc2UiMCI6aWYoIl9OdWxsRmxh''@;'; put 'put ''Z3MiPT09WXRbem5dLm5hbWUpYnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgIitZdFt6bl0udHlwZSl9fWVsc2UgWGUubCs9a3Q7aWYoMiE9aXQmJlhlLmw8WGUubGVuZ3RoJiYyNiE9WGVbWGUubCsrXSl0aHJvdyBuZXcgRXJyb3IoIkRC''@;'; put 'put ''RiBFT0YgTWFya2VyIG1pc3NpbmcgIisoWGUubC0xKSsiIG9mICIrWGUubGVuZ3RoKyIgIitYZVtYZS5sLTFdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGplJiZqZS5zaGVldFJvd3MmJihVZT1VZS5zbGljZSgwLGplLnNoZWV0Um93cykpLFVlfShNZSxVZSksVWUpfXZhciBfZT17Qjo4LEM6MjUw''@;'; put 'put ''LEw6MSxEOjgsIj8iOjAsIiI6MH07cmV0dXJue3ZlcnNpb25zOlsyLDMsNDgsNDksMTMxLDEzOSwxNDAsMjQ1XSx0b193b3JrYm9vazpmdW5jdGlvbiBnZShNZSxqZSl7dHJ5e3JldHVybiBaZihvZShNZSxqZSksamUpfWNhdGNoKFVlKXtpZihqZSYmamUuV1RGKXRocm93IFVlfXJldHVybntT''@;'; put 'put ''aGVldE5hbWVzOltdLFNoZWV0czp7fX19LHRvX3NoZWV0Om9lLGZyb21fc2hlZXQ6ZnVuY3Rpb24gdmUoTWUsamUpe3ZhciBVZT1qZXx8e307aWYoK1VlLmNvZGVwYWdlPj0wJiZ6KCtVZS5jb2RlcGFnZSksInN0cmluZyI9PVVlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUg''@;'; put 'put ''REJGIHRvIEpTIHN0cmluZyIpO3ZhciBYZT1BdSgpLGl0PXB2KE1lLHtoZWFkZXI6MSxyYXc6ITAsY2VsbERhdGVzOiEwfSksZnQ9aXRbMF0sTXQ9aXQuc2xpY2UoMSksdXQ9MCx3dD0wLEh0PTAsa3Q9MTtmb3IodXQ9MDt1dDxmdC5sZW5ndGg7Kyt1dClpZihudWxsIT11dCl7aWYoKytIdCwi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGZ0W3V0XSYmKGZ0W3V0XT1mdFt1dF0udG9TdHJpbmcoMTApKSwic3RyaW5nIiE9dHlwZW9mIGZ0W3V0XSl0aHJvdyBuZXcgRXJyb3IoIkRCRiBJbnZhbGlkIGNvbHVtbiBuYW1lICIrZnRbdXRdKyIgfCIrdHlwZW9mIGZ0W3V0XSsifCIpO2lmKGZ0LmluZGV4T2Yo''@;'; put 'put ''ZnRbdXRdKSE9PXV0KWZvcih3dD0wO3d0PDEwMjQ7Kyt3dClpZigtMT09ZnQuaW5kZXhPZihmdFt1dF0rIl8iK3d0KSl7ZnRbdXRdKz0iXyIrd3Q7YnJlYWt9fXZhciBUdD1QaShNZVsiIXJlZiJdKSxZdD1bXTtmb3IodXQ9MDt1dDw9VHQuZS5jLVR0LnMuYzsrK3V0KXt2YXIgZ249W107Zm9y''@;'; put 'put ''KHd0PTA7d3Q8TXQubGVuZ3RoOysrd3QpbnVsbCE9TXRbd3RdW3V0XSYmZ24ucHVzaChNdFt3dF1bdXRdKTtpZigwIT1nbi5sZW5ndGgmJm51bGwhPWZ0W3V0XSl7dmFyIHFuPSIiLGZuPSIiO2Zvcih3dD0wO3d0PGduLmxlbmd0aDsrK3d0KXtzd2l0Y2godHlwZW9mIGduW3d0XSl7Y2FzZSJu''@;'; put 'put ''dW1iZXIiOmZuPSJCIjticmVhaztjYXNlInN0cmluZyI6ZGVmYXVsdDpmbj0iQyI7YnJlYWs7Y2FzZSJib29sZWFuIjpmbj0iTCI7YnJlYWs7Y2FzZSJvYmplY3QiOmZuPWduW3d0XWluc3RhbmNlb2YgRGF0ZT8iRCI6IkMifWlmKCJDIj09KHFuPXFuJiZxbiE9Zm4/IkMiOmZuKSlicmVha31r''@;'; put 'put ''dCs9X2VbcW5dfHwwLFl0W3V0XT1xbn1lbHNlIFl0W3V0XT0iPyJ9dmFyIEtuPVhlLm5leHQoMzIpO2ZvcihLbi53cml0ZV9zaGlmdCg0LDMxODkwMjU3NiksS24ud3JpdGVfc2hpZnQoNCxNdC5sZW5ndGgpLEtuLndyaXRlX3NoaWZ0KDIsMjk2KzMyKkh0KSxLbi53cml0ZV9zaGlmdCgyLGt0''@;'; put 'put ''KSx1dD0wO3V0PDQ7Kyt1dClLbi53cml0ZV9zaGlmdCg0LDApO2ZvcihLbi53cml0ZV9zaGlmdCg0LDB8KCtQW0xdfHwzKTw8OCksdXQ9MCx3dD0wO3V0PGZ0Lmxlbmd0aDsrK3V0KWlmKG51bGwhPWZ0W3V0XSl7dmFyIHpuPVhlLm5leHQoMzIpLE9uPShmdFt1dF0uc2xpY2UoLTEwKSsiXDBc''@;'; put 'put ''MFwwXDBcMFwwXDBcMFwwXDBcMCIpLnNsaWNlKDAsMTEpO3puLndyaXRlX3NoaWZ0KDEsT24sInNiY3MiKSx6bi53cml0ZV9zaGlmdCgxLCI/Ij09WXRbdXRdPyJDIjpZdFt1dF0sInNiY3MiKSx6bi53cml0ZV9zaGlmdCg0LHd0KSx6bi53cml0ZV9zaGlmdCgxLF9lW1l0W3V0XV18fDApLHpu''@;'; put 'put ''LndyaXRlX3NoaWZ0KDEsMCksem4ud3JpdGVfc2hpZnQoMSwyKSx6bi53cml0ZV9zaGlmdCg0LDApLHpuLndyaXRlX3NoaWZ0KDEsMCksem4ud3JpdGVfc2hpZnQoNCwwKSx6bi53cml0ZV9zaGlmdCg0LDApLHd0Kz1fZVtZdFt1dF1dfHwwfXZhciBlcj1YZS5uZXh0KDI2NCk7Zm9yKGVyLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsMTMpLHV0PTA7dXQ8NjU7Kyt1dCllci53cml0ZV9zaGlmdCg0LDApO2Zvcih1dD0wO3V0PE10Lmxlbmd0aDsrK3V0KXt2YXIgdHI9WGUubmV4dChrdCk7Zm9yKHRyLndyaXRlX3NoaWZ0KDEsMCksd3Q9MDt3dDxmdC5sZW5ndGg7Kyt3dClpZihudWxsIT1mdFt3dF0pc3dp''@;'; put 'put ''dGNoKFl0W3d0XSl7Y2FzZSJMIjp0ci53cml0ZV9zaGlmdCgxLG51bGw9PU10W3V0XVt3dF0/NjM6TXRbdXRdW3d0XT84NDo3MCk7YnJlYWs7Y2FzZSJCIjp0ci53cml0ZV9zaGlmdCg4LE10W3V0XVt3dF18fDAsImYiKTticmVhaztjYXNlIkQiOk10W3V0XVt3dF0/KHRyLndyaXRlX3NoaWZ0''@;'; put 'put ''KDQsKCIwMDAwIitNdFt1dF1bd3RdLmdldEZ1bGxZZWFyKCkpLnNsaWNlKC00KSwic2JjcyIpLHRyLndyaXRlX3NoaWZ0KDIsKCIwMCIrKE10W3V0XVt3dF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksdHIud3JpdGVfc2hpZnQoMiwoIjAwIitNdFt1dF1bd3RdLmdldERhdGUo''@;'; put 'put ''KSkuc2xpY2UoLTIpLCJzYmNzIikpOnRyLndyaXRlX3NoaWZ0KDgsIjAwMDAwMDAwIiwic2JjcyIpO2JyZWFrO2Nhc2UiQyI6dmFyIFluPVN0cmluZyhNdFt1dF1bd3RdfHwiIik7Zm9yKHRyLndyaXRlX3NoaWZ0KDEsWW4sInNiY3MiKSxIdD0wO0h0PDI1MC1Zbi5sZW5ndGg7KytIdCl0ci53''@;'; put 'put ''cml0ZV9zaGlmdCgxLDMyKX19cmV0dXJuIFhlLm5leHQoMSkud3JpdGVfc2hpZnQoMSwyNiksWGUuZW5kKCl9fX0oKSxzXz1mdW5jdGlvbigpe3ZhciB3PXtBQToiXHhjMCIsQkE6Ilx4YzEiLENBOiJceGMyIixEQToxOTUsSEE6Ilx4YzQiLEpBOjE5NyxBRToiXHhjOCIsQkU6Ilx4YzkiLENF''@;'; put 'put ''OiJceGNhIixIRToiXHhjYiIsQUk6Ilx4Y2MiLEJJOiJceGNkIixDSToiXHhjZSIsSEk6Ilx4Y2YiLEFPOiJceGQyIixCTzoiXHhkMyIsQ086Ilx4ZDQiLERPOjIxMyxITzoiXHhkNiIsQVU6Ilx4ZDkiLEJVOiJceGRhIixDVToiXHhkYiIsSFU6Ilx4ZGMiLEFhOiJceGUwIixCYToiXHhlMSIs''@;'; put 'put ''Q2E6Ilx4ZTIiLERhOjIyNyxIYToiXHhlNCIsSmE6MjI5LEFlOiJceGU4IixCZToiXHhlOSIsQ2U6Ilx4ZWEiLEhlOiJceGViIixBaToiXHhlYyIsQmk6Ilx4ZWQiLENpOiJceGVlIixIaToiXHhlZiIsQW86Ilx4ZjIiLEJvOiJceGYzIixDbzoiXHhmNCIsRG86MjQ1LEhvOiJceGY2IixBdToi''@;'; put 'put ''XHhmOSIsQnU6Ilx4ZmEiLEN1OiJceGZiIixIdToiXHhmYyIsS0M6Ilx4YzciLEtjOiJceGU3IixxOiJceGU2Iix6OiJcdTAxNTMiLGE6Ilx4YzYiLGo6Ilx1MDE1MiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzox''@;'; put 'put ''NzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/Ijox''@;'; put 'put ''OTEsInsiOjIyM30sUD1uZXcgUmVnRXhwKCJceDFiTigiK210KHcpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpLEQ9ZnVuY3Rpb24oaXQsZnQpe3ZhciBNdD13W2Z0XTtyZXR1cm4ibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIE10P3RlKE10KTpNdH0sZWU9ZnVuY3Rpb24oaXQsZnQsTXQpe3ZhciB1dD1mdC5jaGFyQ29kZUF0KDApLTMyPDw0fE10LmNoYXJDb2RlQXQoMCktNDg7cmV0dXJuIDU5PT11dD9pdDp0ZSh1dCl9O2Z1bmN0aW9uIGdlKGl0LGZ0KXt2YXIgZXIsTXQ9aXQuc3BsaXQoL1tcblxyXSsv''@;'; put 'put ''KSx1dD0tMSx3dD0tMSxIdD0wLGt0PTAsVHQ9W10sWXQ9W10sZ249bnVsbCxxbj17fSxmbj1bXSxLbj1bXSx6bj1bXSxPbj0wO2ZvcigrZnQuY29kZXBhZ2U+PTAmJnooK2Z0LmNvZGVwYWdlKTtIdCE9PU10Lmxlbmd0aDsrK0h0KXtPbj0wO3ZhciBsaSx0cj1NdFtIdF0udHJpbSgpLnJlcGxh''@;'; put 'put ''Y2UoL1x4MUIoW1x4MjAtXHgyRl0pKFtceDMwLVx4M0ZdKS9nLGVlKS5yZXBsYWNlKFAsRCksWW49dHIucmVwbGFjZSgvOzsvZywiXDAiKS5zcGxpdCgiOyIpLm1hcChmdW5jdGlvbihDaSl7cmV0dXJuIENpLnJlcGxhY2UoL1x1MDAwMC9nLCI7Iil9KTtpZih0ci5sZW5ndGg+MClzd2l0Y2go''@;'; put 'put ''WW5bMF0pe2Nhc2UiSUQiOmNhc2UiRSI6Y2FzZSJCIjpjYXNlIk8iOmNhc2UiVyI6YnJlYWs7Y2FzZSJQIjoiUCI9PVluWzFdLmNoYXJBdCgwKSYmWXQucHVzaCh0ci5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCI7IikpO2JyZWFrO2Nhc2UiQyI6dmFyIEVpPSExLElpPSExLHRpPSExLGZyPSEx''@;'; put 'put ''LERuPS0xLHZyPS0xO2ZvcihrdD0xO2t0PFluLmxlbmd0aDsrK2t0KXN3aXRjaChZbltrdF0uY2hhckF0KDApKXtjYXNlIkEiOmNhc2UiRyI6YnJlYWs7Y2FzZSJYIjp3dD1wYXJzZUludChZbltrdF0uc2xpY2UoMSkpLTEsSWk9ITA7YnJlYWs7Y2FzZSJZIjpmb3IodXQ9cGFyc2VJbnQoWW5b''@;'; put 'put ''a3RdLnNsaWNlKDEpKS0xLElpfHwod3Q9MCksZXI9VHQubGVuZ3RoO2VyPD11dDsrK2VyKVR0W2VyXT1bXTticmVhaztjYXNlIksiOiciJz09PShsaT1ZbltrdF0uc2xpY2UoMSkpLmNoYXJBdCgwKT9saT1saS5zbGljZSgxLGxpLmxlbmd0aC0xKToiVFJVRSI9PT1saT9saT0hMDoiRkFMU0Ui''@;'; put 'put ''PT09bGk/bGk9ITE6aXNOYU4oR24obGkpKT9pc05hTihvbihsaSkuZ2V0RGF0ZSgpKXx8KGxpPVB0KGxpKSk6KGxpPUduKGxpKSxudWxsIT09Z24mJlMuaXNfZGF0ZShnbikmJihsaT1odChsaSkpKSx0eXBlb2YgY3B0YWJsZTwidSImJiJzdHJpbmciPT10eXBlb2YgbGkmJiJzdHJpbmciIT0o''@;'; put 'put ''ZnR8fHt9KS50eXBlJiYoZnR8fHt9KS5jb2RlcGFnZSYmKGxpPWNwdGFibGUudXRpbHMuZGVjb2RlKGZ0LmNvZGVwYWdlLGxpKSksRWk9ITA7YnJlYWs7Y2FzZSJFIjpmcj0hMDt2YXIgcnI9QTIoWW5ba3RdLnNsaWNlKDEpLHtyOnV0LGM6d3R9KTtUdFt1dF1bd3RdPVtUdFt1dF1bd3RdLHJy''@;'; put 'put ''XTticmVhaztjYXNlIlMiOnRpPSEwLFR0W3V0XVt3dF09W1R0W3V0XVt3dF0sIlM1UyJdO2JyZWFrO2Nhc2UiUiI6RG49cGFyc2VJbnQoWW5ba3RdLnNsaWNlKDEpKS0xO2JyZWFrO2Nhc2UiQyI6dnI9cGFyc2VJbnQoWW5ba3RdLnNsaWNlKDEpKS0xO2JyZWFrO2RlZmF1bHQ6aWYoZnQmJmZ0''@;'; put 'put ''LldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK3RyKX1pZihFaSYmKFR0W3V0XVt3dF0mJjI9PVR0W3V0XVt3dF0ubGVuZ3RoP1R0W3V0XVt3dF1bMF09bGk6VHRbdXRdW3d0XT1saSxnbj1udWxsKSx0aSl7aWYoZnIpdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBm''@;'; put 'put ''b3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIHhuPURuPi0xJiZUdFtEbl1bdnJdO2lmKCF4bnx8IXhuWzFdKXRocm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlIik7VHRbdXRdW3d0XVsxXT1iQSh4blsxXSx7cjp1dC1EbixjOnd0''@;'; put 'put ''LXZyfSl9YnJlYWs7Y2FzZSJGIjp2YXIgbXI9MDtmb3Ioa3Q9MTtrdDxZbi5sZW5ndGg7KytrdClzd2l0Y2goWW5ba3RdLmNoYXJBdCgwKSl7Y2FzZSJYIjp3dD1wYXJzZUludChZbltrdF0uc2xpY2UoMSkpLTEsKyttcjticmVhaztjYXNlIlkiOmZvcih1dD1wYXJzZUludChZbltrdF0uc2xp''@;'; put 'put ''Y2UoMSkpLTEsZXI9VHQubGVuZ3RoO2VyPD11dDsrK2VyKVR0W2VyXT1bXTticmVhaztjYXNlIk0iOk9uPXBhcnNlSW50KFluW2t0XS5zbGljZSgxKSkvMjA7YnJlYWs7Y2FzZSJGIjpjYXNlIkciOmNhc2UiUyI6Y2FzZSJEIjpjYXNlIk4iOmJyZWFrO2Nhc2UiUCI6Z249WXRbcGFyc2VJbnQo''@;'; put 'put ''WW5ba3RdLnNsaWNlKDEpKV07YnJlYWs7Y2FzZSJXIjpmb3Ioem49WW5ba3RdLnNsaWNlKDEpLnNwbGl0KCIgIiksZXI9cGFyc2VJbnQoem5bMF0sMTApO2VyPD1wYXJzZUludCh6blsxXSwxMCk7KytlcilPbj1wYXJzZUludCh6blsyXSwxMCksS25bZXItMV09MD09PU9uP3toaWRkZW46ITB9''@;'; put 'put ''Ont3Y2g6T259LF9jKEtuW2VyLTFdKTticmVhaztjYXNlIkMiOktuW3d0PXBhcnNlSW50KFluW2t0XS5zbGljZSgxKSktMV18fChLblt3dF09e30pO2JyZWFrO2Nhc2UiUiI6Zm5bdXQ9cGFyc2VJbnQoWW5ba3RdLnNsaWNlKDEpKS0xXXx8KGZuW3V0XT17fSksT24+MD8oZm5bdXRdLmhwdD1P''@;'; put 'put ''bixmblt1dF0uaHB4PWRmKE9uKSk6MD09PU9uJiYoZm5bdXRdLmhpZGRlbj0hMCk7YnJlYWs7ZGVmYXVsdDppZihmdCYmZnQuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrdHIpfW1yPDEmJihnbj1udWxsKTticmVhaztkZWZhdWx0OmlmKGZ0JiZmdC5XVEYpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIit0cil9fXJldHVybiBmbi5sZW5ndGg+MCYmKHFuWyIhcm93cyJdPWZuKSxLbi5sZW5ndGg+MCYmKHFuWyIhY29scyJdPUtuKSxmdCYmZnQuc2hlZXRSb3dzJiYoVHQ9VHQuc2xpY2UoMCxmdC5zaGVldFJvd3MpKSxbVHQscW5dfWZ1bmN0aW9u''@;'; put 'put ''IF9lKGl0LGZ0KXt2YXIgTXQ9ZnVuY3Rpb24gb2UoaXQsZnQpe3N3aXRjaChmdC50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIGdlKGxlLmRlY29kZShpdCksZnQpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gZ2UoaXQsZnQpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gZ2UoaXQudG9TdHJpbmcoImJpbmFy''@;'; put 'put ''eSIpLGZ0KTtjYXNlImFycmF5IjpyZXR1cm4gZ2UoQXQoaXQpLGZ0KX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrZnQudHlwZSl9KGl0LGZ0KSx3dD1NdFsxXSxIdD0kMShNdFswXSxmdCk7cmV0dXJuIG10KHd0KS5mb3JFYWNoKGZ1bmN0aW9uKGt0KXtIdFtrdF09d3Rb''@;'; put 'put ''a3RdfSksSHR9ZnVuY3Rpb24gTWUoaXQsZnQsTXQsdXQpe3ZhciB3dD0iQztZIisoTXQrMSkrIjtYIisodXQrMSkrIjtLIjtzd2l0Y2goaXQudCl7Y2FzZSJuIjp3dCs9aXQudnx8MCxpdC5mJiYhaXQuRiYmKHd0Kz0iO0UiK0lfKGl0LmYse3I6TXQsYzp1dH0pKTticmVhaztjYXNlImIiOnd0''@;'; put 'put ''Kz1pdC52PyJUUlVFIjoiRkFMU0UiO2JyZWFrO2Nhc2UiZSI6d3QrPWl0Lnd8fGl0LnY7YnJlYWs7Y2FzZSJkIjp3dCs9JyInKyhpdC53fHxpdC52KSsnIic7YnJlYWs7Y2FzZSJzIjp3dCs9JyInK2l0LnYucmVwbGFjZSgvIi9nLCIiKSsnIid9cmV0dXJuIHd0fXJldHVybiB3WyJ8Il09MjU0''@;'; put 'put ''LHt0b193b3JrYm9vazpmdW5jdGlvbiB2ZShpdCxmdCl7cmV0dXJuIFpmKF9lKGl0LGZ0KSxmdCl9LHRvX3NoZWV0Ol9lLGZyb21fc2hlZXQ6ZnVuY3Rpb24gWGUoaXQsZnQpe3ZhciBIdCxNdD1bIklEO1BTaGVldEpTO047RSJdLHV0PVtdLHd0PVBpKGl0WyIhcmVmIl0pLGt0PUFycmF5Lmlz''@;'; put 'put ''QXJyYXkoaXQpLFR0PSJcclxuIjtNdC5wdXNoKCJQO1BHZW5lcmFsIiksTXQucHVzaCgiRjtQMDtERzBHODtNMjU1IiksaXRbIiFjb2xzIl0mJmZ1bmN0aW9uIGplKGl0LGZ0KXtmdC5mb3JFYWNoKGZ1bmN0aW9uKE10LHV0KXt2YXIgd3Q9IkY7VyIrKHV0KzEpKyIgIisodXQrMSkrIiAiO010''@;'; put 'put ''LmhpZGRlbj93dCs9IjAiOigibnVtYmVyIj09dHlwZW9mIE10LndpZHRoJiYhTXQud3B4JiYoTXQud3B4PUl1KE10LndpZHRoKSksIm51bWJlciI9PXR5cGVvZiBNdC53cHgmJiFNdC53Y2gmJihNdC53Y2g9TTIoTXQud3B4KSksIm51bWJlciI9PXR5cGVvZiBNdC53Y2gmJih3dCs9TWF0aC5y''@;'; put 'put ''b3VuZChNdC53Y2gpKSksIiAiIT13dC5jaGFyQXQod3QubGVuZ3RoLTEpJiZpdC5wdXNoKHd0KX0pfShNdCxpdFsiIWNvbHMiXSksaXRbIiFyb3dzIl0mJmZ1bmN0aW9uIFVlKGl0LGZ0KXtmdC5mb3JFYWNoKGZ1bmN0aW9uKE10LHV0KXt2YXIgd3Q9IkY7IjtNdC5oaWRkZW4/d3QrPSJNMDsi''@;'; put 'put ''Ok10LmhwdD93dCs9Ik0iKzIwKk10LmhwdCsiOyI6TXQuaHB4JiYod3QrPSJNIisyMCp1aChNdC5ocHgpKyI7Iiksd3QubGVuZ3RoPjImJml0LnB1c2god3QrIlIiKyh1dCsxKSl9KX0oTXQsaXRbIiFyb3dzIl0pLE10LnB1c2goIkI7WSIrKHd0LmUuci13dC5zLnIrMSkrIjtYIisod3QuZS5j''@;'; put 'put ''LXd0LnMuYysxKSsiO0QiK1t3dC5zLmMsd3Qucy5yLHd0LmUuYyx3dC5lLnJdLmpvaW4oIiAiKSk7Zm9yKHZhciBZdD13dC5zLnI7WXQ8PXd0LmUucjsrK1l0KWZvcih2YXIgZ249d3Qucy5jO2duPD13dC5lLmM7Kytnbil7dmFyIHFuPXBpKHtyOll0LGM6Z259KTsoSHQ9a3Q/KGl0W1l0XXx8''@;'; put 'put ''W10pW2duXTppdFtxbl0pJiYobnVsbCE9SHQudnx8SHQuZiYmIUh0LkYpJiZ1dC5wdXNoKE1lKEh0LDAsWXQsZ24pKX1yZXR1cm4gTXQuam9pbihUdCkrVHQrdXQuam9pbihUdCkrVHQrIkUiK1R0fX19KCksZ3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiBQKGdlLF9lKXtmb3IodmFyIHZlPWdlLnNw''@;'; put 'put ''bGl0KCJcbiIpLE1lPS0xLGplPS0xLFVlPTAsWGU9W107VWUhPT12ZS5sZW5ndGg7KytVZSlpZigiQk9UIiE9PXZlW1VlXS50cmltKCkpe2lmKCEoTWU8MCkpe2Zvcih2YXIgaXQ9dmVbVWVdLnRyaW0oKS5zcGxpdCgiLCIpLGZ0PWl0WzBdLE10PWl0WzFdLHV0PXZlWysrVWVdfHwiIjsxJih1''@;'; put 'put ''dC5tYXRjaCgvWyJdL2cpfHxbXSkubGVuZ3RoJiZVZTx2ZS5sZW5ndGgtMTspdXQrPSJcbiIrdmVbKytVZV07c3dpdGNoKHV0PXV0LnRyaW0oKSwrZnQpe2Nhc2UtMTppZigiQk9UIj09PXV0KXtYZVsrK01lXT1bXSxqZT0wO2NvbnRpbnVlfWlmKCJFT0QiIT09dXQpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbnJlY29nbml6ZWQgRElGIHNwZWNpYWwgY29tbWFuZCAiK3V0KTticmVhaztjYXNlIDA6WGVbTWVdW2plXT0iVFJVRSI9PT11dHx8IkZBTFNFIiE9PXV0JiYoaXNOYU4oR24oTXQpKT9pc05hTihvbihNdCkuZ2V0RGF0ZSgpKT9NdDpQdChNdCk6R24oTXQpKSwrK2plO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MToodXQ9KHV0PXV0LnNsaWNlKDEsdXQubGVuZ3RoLTEpKS5yZXBsYWNlKC8iIi9nLCciJykpJiZ1dC5tYXRjaCgvXj0iLioiJC8pJiYodXQ9dXQuc2xpY2UoMiwtMSkpLFhlW01lXVtqZSsrXT0iIiE9PXV0P3V0Om51bGx9aWYoIkVPRCI9PT11dClicmVha319ZWxzZSBYZVsrK01lXT1bXSxq''@;'; put 'put ''ZT0wO3JldHVybiBfZSYmX2Uuc2hlZXRSb3dzJiYoWGU9WGUuc2xpY2UoMCxfZS5zaGVldFJvd3MpKSxYZX1mdW5jdGlvbiBEKGdlLF9lKXtyZXR1cm4gJDEoZnVuY3Rpb24gdyhnZSxfZSl7c3dpdGNoKF9lLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gUChsZS5kZWNvZGUoZ2UpLF9lKTtj''@;'; put 'put ''YXNlImJpbmFyeSI6cmV0dXJuIFAoZ2UsX2UpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gUChnZS50b1N0cmluZygiYmluYXJ5IiksX2UpO2Nhc2UiYXJyYXkiOnJldHVybiBQKEF0KGdlKSxfZSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK19lLnR5cGUpfShnZSxfZSksX2Up''@;'; put 'put ''fXZhciBnZSxfZTtyZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gZWUoZ2UsX2Upe3JldHVybiBaZihEKGdlLF9lKSxfZSl9LHRvX3NoZWV0OkQsZnJvbV9zaGVldDooZ2U9ZnVuY3Rpb24oTWUsamUsVWUsWGUsaXQpe01lLnB1c2goamUpLE1lLnB1c2goVWUrIiwiK1hlKSxNZS5wdXNoKCci''@;'; put 'put ''JytpdC5yZXBsYWNlKC8iL2csJyIiJykrJyInKX0sX2U9ZnVuY3Rpb24oTWUsamUsVWUsWGUpe01lLnB1c2goamUrIiwiK1VlKSxNZS5wdXNoKDE9PWplPyciJytYZS5yZXBsYWNlKC8iL2csJyIiJykrJyInOlhlKX0sZnVuY3Rpb24oTWUpe3ZhciBYZSxqZT1bXSxVZT1QaShNZVsiIXJlZiJd''@;'; put 'put ''KSxpdD1BcnJheS5pc0FycmF5KE1lKTtnZShqZSwiVEFCTEUiLDAsMSwic2hlZXRqcyIpLGdlKGplLCJWRUNUT1JTIiwwLFVlLmUuci1VZS5zLnIrMSwiIiksZ2UoamUsIlRVUExFUyIsMCxVZS5lLmMtVWUucy5jKzEsIiIpLGdlKGplLCJEQVRBIiwwLDAsIiIpO2Zvcih2YXIgZnQ9VWUucy5y''@;'; put 'put ''O2Z0PD1VZS5lLnI7KytmdCl7X2UoamUsLTEsMCwiQk9UIik7Zm9yKHZhciBNdD1VZS5zLmM7TXQ8PVVlLmUuYzsrK010KXt2YXIgdXQ9cGkoe3I6ZnQsYzpNdH0pO2lmKFhlPWl0PyhNZVtmdF18fFtdKVtNdF06TWVbdXRdKXN3aXRjaChYZS50KXtjYXNlIm4iOnZhciB3dD1YZS53OyF3dCYm''@;'; put 'put ''bnVsbCE9WGUudiYmKHd0PVhlLnYpLG51bGw9PXd0P19lKGplLDEsMCxYZS5mJiYhWGUuRj8iPSIrWGUuZjoiIik6X2UoamUsMCx3dCwiViIpO2JyZWFrO2Nhc2UiYiI6X2UoamUsMCxYZS52PzE6MCxYZS52PyJUUlVFIjoiRkFMU0UiKTticmVhaztjYXNlInMiOl9lKGplLDEsMCxpc05hTihY''@;'; put 'put ''ZS52KT9YZS52Oic9IicrWGUudisnIicpO2JyZWFrO2Nhc2UiZCI6WGUud3x8KFhlLnc9Uy5mb3JtYXQoWGUuenx8Uy5fdGFibGVbMTRdLHFlKFB0KFhlLnYpKSkpLF9lKGplLDAsWGUudywiViIpO2JyZWFrO2RlZmF1bHQ6X2UoamUsMSwwLCIiKX1lbHNlIF9lKGplLDEsMCwiIil9fXJldHVy''@;'; put 'put ''biBfZShqZSwtMSwwLCJFT0QiKSxqZS5qb2luKCJcclxuIil9KX19KCksRG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB3KFhlKXtyZXR1cm4gWGUucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZywiXG4iKX1mdW5jdGlvbiBQKFhlKXtyZXR1cm4g''@;'; put 'put ''WGUucmVwbGFjZSgvXFwvZywiXFxiIikucmVwbGFjZSgvOi9nLCJcXGMiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5jdGlvbiBlZShYZSxpdCl7cmV0dXJuICQxKGZ1bmN0aW9uIEQoWGUsaXQpe2Zvcih2YXIgZnQ9WGUuc3BsaXQoIlxuIiksTXQ9LTEsdXQ9LTEsd3Q9MCxIdD1bXTt3dCE9''@;'; put 'put ''PWZ0Lmxlbmd0aDsrK3d0KXt2YXIga3Q9ZnRbd3RdLnRyaW0oKS5zcGxpdCgiOiIpO2lmKCJjZWxsIj09PWt0WzBdKXt2YXIgVHQ9Y2Eoa3RbMV0pO2lmKEh0Lmxlbmd0aDw9VHQucilmb3IoTXQ9SHQubGVuZ3RoO010PD1UdC5yOysrTXQpSHRbTXRdfHwoSHRbTXRdPVtdKTtzd2l0Y2goTXQ9''@;'; put 'put ''VHQucix1dD1UdC5jLGt0WzJdKXtjYXNlInQiOkh0W010XVt1dF09dyhrdFszXSk7YnJlYWs7Y2FzZSJ2IjpIdFtNdF1bdXRdPStrdFszXTticmVhaztjYXNlInZ0ZiI6dmFyIFl0PWt0W2t0Lmxlbmd0aC0xXTtjYXNlInZ0YyI6SHRbTXRdW3V0XT0ibmwiPT09a3RbM10/ISEra3RbNF06K2t0''@;'; put 'put ''WzRdLCJ2dGYiPT1rdFsyXSYmKEh0W010XVt1dF09W0h0W010XVt1dF0sWXRdKX19fXJldHVybiBpdCYmaXQuc2hlZXRSb3dzJiYoSHQ9SHQuc2xpY2UoMCxpdC5zaGVldFJvd3MpKSxIdH0oWGUsaXQpLGl0KX12YXIgZ2U9WyJzb2NpYWxjYWxjOnZlcnNpb246MS41IiwiTUlNRS1WZXJzaW9u''@;'; put 'put ''OiAxLjAiLCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiXS5qb2luKCJcbiIpLF9lPVsiLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZSIsIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hh''@;'; put 'put ''cnNldD1VVEYtOCJdLmpvaW4oIlxuIikrIlxuIix2ZT1bIiMgU29jaWFsQ2FsYyBTcHJlYWRzaGVldCBDb250cm9sIFNhdmUiLCJwYXJ0OnNoZWV0Il0uam9pbigiXG4iKSxNZT0iLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZS0tIjtmdW5jdGlvbiBqZShYZSl7aWYoIVhlfHwh''@;'; put 'put ''WGVbIiFyZWYiXSlyZXR1cm4iIjtmb3IodmFyIE10LGl0PVtdLGZ0PVtdLHV0PSIiLHd0PUthKFhlWyIhcmVmIl0pLEh0PUFycmF5LmlzQXJyYXkoWGUpLGt0PXd0LnMucjtrdDw9d3QuZS5yOysra3QpZm9yKHZhciBUdD13dC5zLmM7VHQ8PXd0LmUuYzsrK1R0KWlmKHV0PXBpKHtyOmt0LGM6''@;'; put 'put ''VHR9KSwoTXQ9SHQ/KFhlW2t0XXx8W10pW1R0XTpYZVt1dF0pJiZudWxsIT1NdC52JiYieiIhPT1NdC50KXtzd2l0Y2goZnQ9WyJjZWxsIix1dCwidCJdLE10LnQpe2Nhc2UicyI6Y2FzZSJzdHIiOmZ0LnB1c2goUChNdC52KSk7YnJlYWs7Y2FzZSJuIjpNdC5mPyhmdFsyXT0idnRmIixmdFsz''@;'; put 'put ''XT0ibiIsZnRbNF09TXQudixmdFs1XT1QKE10LmYpKTooZnRbMl09InYiLGZ0WzNdPU10LnYpO2JyZWFrO2Nhc2UiYiI6ZnRbMl09InZ0IisoTXQuZj8iZiI6ImMiKSxmdFszXT0ibmwiLGZ0WzRdPU10LnY/IjEiOiIwIixmdFs1XT1QKE10LmZ8fChNdC52PyJUUlVFIjoiRkFMU0UiKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJkIjp2YXIgWXQ9cWUoUHQoTXQudikpO2Z0WzJdPSJ2dGMiLGZ0WzNdPSJuZCIsZnRbNF09IiIrWXQsZnRbNV09TXQud3x8Uy5mb3JtYXQoTXQuenx8Uy5fdGFibGVbMTRdLFl0KTticmVhaztjYXNlImUiOmNvbnRpbnVlfWl0LnB1c2goZnQuam9pbigiOiIpKX1yZXR1cm4gaXQu''@;'; put 'put ''cHVzaCgic2hlZXQ6YzoiKyh3dC5lLmMtd3Qucy5jKzEpKyI6cjoiKyh3dC5lLnItd3Qucy5yKzEpKyI6dHZmOjEiKSxpdC5wdXNoKCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraSIpLGl0LmpvaW4oIlxuIil9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIG9lKFhlLGl0KXtyZXR1cm4gWmYo''@;'; put 'put ''ZWUoWGUsaXQpLGl0KX0sdG9fc2hlZXQ6ZWUsZnJvbV9zaGVldDpmdW5jdGlvbiBVZShYZSl7cmV0dXJuW2dlLF9lLHZlLF9lLGplKFhlKSxNZV0uam9pbigiXG4iKX19fSgpLHVmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyhVZSxYZSxpdCxmdCxNdCl7TXQucmF3P1hlW2l0XVtmdF09VWU6IiI9''@;'; put 'put ''PT1VZXx8KFhlW2l0XVtmdF09JG4oVWUsTXQpPyRuKFVlLE10KS52OlVlKX12YXIgRD17NDQ6IiwiLDk6Ilx0Iiw1OToiOyJ9LGVlPXs0NDozLDk6Miw1OToxfTtmdW5jdGlvbiBvZShVZSl7Zm9yKHZhciBYZT17fSxpdD0hMSxmdD0wLE10PTA7ZnQ8VWUubGVuZ3RoOysrZnQpMzQ9PShNdD1V''@;'; put 'put ''ZS5jaGFyQ29kZUF0KGZ0KSk/aXQ9IWl0OiFpdCYmTXQgaW4gRCYmKFhlW010XT0oWGVbTXRdfHwwKSsxKTtmb3IoZnQgaW4gTXQ9W10sWGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFhlLGZ0KSYmTXQucHVzaChbWGVbZnRdLGZ0XSk7aWYoIU10Lmxlbmd0aClmb3Io''@;'; put 'put ''ZnQgaW4gWGU9ZWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFhlLGZ0KSYmTXQucHVzaChbWGVbZnRdLGZ0XSk7cmV0dXJuIE10LnNvcnQoZnVuY3Rpb24odXQsd3Qpe3JldHVybiB1dFswXS13dFswXXx8ZWVbdXRbMV1dLWVlW3d0WzFdXX0pLERbTXQucG9wKClbMV1d''@;'; put 'put ''fWZ1bmN0aW9uIF9lKFVlLFhlKXtyZXR1cm4hWGV8fCFYZS5QUk58fCJzZXA9Ij09VWUuc2xpY2UoMCw0KXx8VWUuaW5kZXhPZigiXHQiKT49MHx8VWUuaW5kZXhPZigiLCIpPj0wfHxVZS5pbmRleE9mKCI7Iik+PTA/ZnVuY3Rpb24gZ2UoVWUsWGUpe3ZhciBpdD1YZXx8e30sZnQ9IiI7bnVs''@;'; put 'put ''bCE9bmUmJm51bGw9PWl0LmRlbnNlJiYoaXQuZGVuc2U9bmUpO3ZhciBNdD1pdC5kZW5zZT9bXTp7fSx1dD17czp7YzowLHI6MH0sZTp7YzowLHI6MH19OyJzZXA9Ij09VWUuc2xpY2UoMCw0KT8xMz09VWUuY2hhckNvZGVBdCg1KSYmMTA9PVVlLmNoYXJDb2RlQXQoNik/KGZ0PVVlLmNoYXJB''@;'; put 'put ''dCg0KSxVZT1VZS5zbGljZSg3KSk6MTM9PVVlLmNoYXJDb2RlQXQoNSl8fDEwPT1VZS5jaGFyQ29kZUF0KDUpPyhmdD1VZS5jaGFyQXQoNCksVWU9VWUuc2xpY2UoNikpOmZ0PW9lKFVlLnNsaWNlKDAsMTAyNCkpOmZ0PW9lKFVlLnNsaWNlKDAsMTAyNCkpO3ZhciB3dD0wLEh0PTAsa3Q9MCxU''@;'; put 'put ''dD0wLFl0PTAsZ249ZnQuY2hhckNvZGVBdCgwKSxxbj0hMSxmbj0wLEtuPVVlLmNoYXJDb2RlQXQoMCk7VWU9VWUucmVwbGFjZSgvXHJcbi9nbSwiXG4iKTt2YXIgem49bnVsbCE9aXQuZGF0ZU5GP2Z1bmN0aW9uIGtlKHcpe3ZhciBQPSJudW1iZXIiPT10eXBlb2Ygdz9TLl90YWJsZVt3XTp3''@;'; put 'put ''O3JldHVybiBQPVAucmVwbGFjZShtZSwiKFxcZCspIiksbmV3IFJlZ0V4cCgiXiIrUCsiJCIpfShpdC5kYXRlTkYpOm51bGw7ZnVuY3Rpb24gT24oKXt2YXIgZXI9VWUuc2xpY2UoVHQsWXQpLHRyPXt9O2lmKCciJz09ZXIuY2hhckF0KDApJiYnIic9PWVyLmNoYXJBdChlci5sZW5ndGgtMSkm''@;'; put 'put ''Jihlcj1lci5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLDA9PT1lci5sZW5ndGgpdHIudD0ieiI7ZWxzZSBpZihpdC5yYXcpdHIudD0icyIsdHIudj1lcjtlbHNlIGlmKDA9PT1lci50cmltKCkubGVuZ3RoKXRyLnQ9InMiLHRyLnY9ZXI7ZWxzZSBpZig2MT09ZXIuY2hhckNvZGVB''@;'; put 'put ''dCgwKSkzND09ZXIuY2hhckNvZGVBdCgxKSYmMzQ9PWVyLmNoYXJDb2RlQXQoZXIubGVuZ3RoLTEpPyh0ci50PSJzIix0ci52PWVyLnNsaWNlKDIsLTEpLnJlcGxhY2UoLyIiL2csJyInKSk6ZnVuY3Rpb24gUl8odyl7cmV0dXJuIDEhPXcubGVuZ3RofShlcik/KHRyLnQ9Im4iLHRyLmY9ZXIu''@;'; put 'put ''c2xpY2UoMSkpOih0ci50PSJzIix0ci52PWVyKTtlbHNlIGlmKCJUUlVFIj09ZXIpdHIudD0iYiIsdHIudj0hMDtlbHNlIGlmKCJGQUxTRSI9PWVyKXRyLnQ9ImIiLHRyLnY9ITE7ZWxzZSBpZihpc05hTihrdD1HbihlcikpKWlmKCFpc05hTihvbihlcikuZ2V0RGF0ZSgpKXx8em4mJmVyLm1h''@;'; put 'put ''dGNoKHpuKSl7dHIuej1pdC5kYXRlTkZ8fFMuX3RhYmxlWzE0XTt2YXIgWW49MDt6biYmZXIubWF0Y2goem4pJiYoZXI9ZnVuY3Rpb24gVGUodyxQLEQpe3ZhciBlZT0tMSxvZT0tMSxnZT0tMSxfZT0tMSx2ZT0tMSxNZT0tMTsoUC5tYXRjaChtZSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFhl''@;'; put 'put ''LGl0KXt2YXIgZnQ9cGFyc2VJbnQoRFtpdCsxXSwxMCk7c3dpdGNoKFhlLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKXtjYXNlInkiOmVlPWZ0O2JyZWFrO2Nhc2UiZCI6Z2U9ZnQ7YnJlYWs7Y2FzZSJoIjpfZT1mdDticmVhaztjYXNlInMiOk1lPWZ0O2JyZWFrO2Nhc2UibSI6X2U+PTA/dmU9''@;'; put 'put ''ZnQ6b2U9ZnR9fSksTWU+PTAmJi0xPT12ZSYmb2U+PTAmJih2ZT1vZSxvZT0tMSk7dmFyIGplPSgiIisoZWU+PTA/ZWU6KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpKSkuc2xpY2UoLTQpKyItIisoIjAwIisob2U+PTE/b2U6MSkpLnNsaWNlKC0yKSsiLSIrKCIwMCIrKGdlPj0xP2dlOjEpKS5z''@;'; put 'put ''bGljZSgtMik7Nz09amUubGVuZ3RoJiYoamU9IjAiK2plKSw4PT1qZS5sZW5ndGgmJihqZT0iMjAiK2plKTt2YXIgVWU9KCIwMCIrKF9lPj0wP19lOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyh2ZT49MD92ZTowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisoTWU+PTA/TWU6MCkpLnNsaWNlKC0y''@;'; put 'put ''KTtyZXR1cm4tMT09X2UmJi0xPT12ZSYmLTE9PU1lP2plOi0xPT1lZSYmLTE9PW9lJiYtMT09Z2U/VWU6amUrIlQiK1VlfSgwLGl0LmRhdGVORixlci5tYXRjaCh6bil8fFtdKSxZbj0xKSxpdC5jZWxsRGF0ZXM/KHRyLnQ9ImQiLHRyLnY9UHQoZXIsWW4pKToodHIudD0ibiIsdHIudj1xZShQ''@;'; put 'put ''dChlcixZbikpKSwhMSE9PWl0LmNlbGxUZXh0JiYodHIudz1TLmZvcm1hdCh0ci56LHRyLnYgaW5zdGFuY2VvZiBEYXRlP3FlKHRyLnYpOnRyLnYpKSxpdC5jZWxsTkZ8fGRlbGV0ZSB0ci56fWVsc2UgdHIudD0icyIsdHIudj1lcjtlbHNlIHRyLnQ9Im4iLCExIT09aXQuY2VsbFRleHQmJih0''@;'; put 'put ''ci53PWVyKSx0ci52PWt0O2lmKCJ6Ij09dHIudHx8KGl0LmRlbnNlPyhNdFt3dF18fChNdFt3dF09W10pLE10W3d0XVtIdF09dHIpOk10W3BpKHtjOkh0LHI6d3R9KV09dHIpLEtuPVVlLmNoYXJDb2RlQXQoVHQ9WXQrMSksdXQuZS5jPEh0JiYodXQuZS5jPUh0KSx1dC5lLnI8d3QmJih1dC5l''@;'; put 'put ''LnI9d3QpLGZuPT1nbikrK0h0O2Vsc2UgaWYoSHQ9MCwrK3d0LGl0LnNoZWV0Um93cyYmaXQuc2hlZXRSb3dzPD13dClyZXR1cm4hMH1lOmZvcig7WXQ8VWUubGVuZ3RoOysrWXQpc3dpdGNoKGZuPVVlLmNoYXJDb2RlQXQoWXQpKXtjYXNlIDM0OjM0PT09S24mJihxbj0hcW4pO2JyZWFrO2Nh''@;'; put 'put ''c2UgZ246Y2FzZSAxMDpjYXNlIDEzOmlmKCFxbiYmT24oKSlicmVhayBlfXJldHVybiBZdC1UdD4wJiZPbigpLE10WyIhcmVmIl09Vm8odXQpLE10fShVZSxYZSk6JDEoZnVuY3Rpb24gUChVZSxYZSl7dmFyIGl0PVhlfHx7fSxmdD1bXTtpZighVWV8fDA9PT1VZS5sZW5ndGgpcmV0dXJuIGZ0''@;'; put 'put ''O2Zvcih2YXIgTXQ9VWUuc3BsaXQoL1tcclxuXS8pLHV0PU10Lmxlbmd0aC0xO3V0Pj0wJiYwPT09TXRbdXRdLmxlbmd0aDspLS11dDtmb3IodmFyIHd0PTEwLEh0PTAsa3Q9MDtrdDw9dXQ7KytrdCktMT09KEh0PU10W2t0XS5pbmRleE9mKCIgIikpP0h0PU10W2t0XS5sZW5ndGg6SHQrKyx3''@;'; put 'put ''dD1NYXRoLm1heCh3dCxIdCk7Zm9yKGt0PTA7a3Q8PXV0Oysra3Qpe2Z0W2t0XT1bXTt2YXIgVHQ9MDtmb3IodyhNdFtrdF0uc2xpY2UoMCx3dCkudHJpbSgpLGZ0LGt0LFR0LGl0KSxUdD0xO1R0PD0oTXRba3RdLmxlbmd0aC13dCkvMTArMTsrK1R0KXcoTXRba3RdLnNsaWNlKHd0KzEwKihU''@;'; put 'put ''dC0xKSx3dCsxMCpUdCkudHJpbSgpLGZ0LGt0LFR0LGl0KX1yZXR1cm4gaXQuc2hlZXRSb3dzJiYoZnQ9ZnQuc2xpY2UoMCxpdC5zaGVldFJvd3MpKSxmdH0oVWUsWGUpLFhlKX1mdW5jdGlvbiB2ZShVZSxYZSl7dmFyIGl0PSIiLGZ0PSJzdHJpbmciPT1YZS50eXBlP1swLDAsMCwwXTpLdyhV''@;'; put 'put ''ZSxYZSk7c3dpdGNoKFhlLnR5cGUpe2Nhc2UiYmFzZTY0IjppdD1sZS5kZWNvZGUoVWUpO2JyZWFrO2Nhc2UiYmluYXJ5IjpjYXNlInN0cmluZyI6aXQ9VWU7YnJlYWs7Y2FzZSJidWZmZXIiOml0PTY1MDAxPT1YZS5jb2RlcGFnZT9VZS50b1N0cmluZygidXRmOCIpOlhlLmNvZGVwYWdlJiZ0''@;'; put 'put ''eXBlb2YgY3B0YWJsZTwidSI/Y3B0YWJsZS51dGlscy5kZWNvZGUoWGUuY29kZXBhZ2UsVWUpOlVlLnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjppdD1BdChVZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrWGUudHlwZSl9''@;'; put 'put ''cmV0dXJuIDIzOT09ZnRbMF0mJjE4Nz09ZnRbMV0mJjE5MT09ZnRbMl0/aXQ9RmkoaXQuc2xpY2UoMykpOiJiaW5hcnkiPT1YZS50eXBlJiZ0eXBlb2YgY3B0YWJsZTwidSImJlhlLmNvZGVwYWdlJiYoaXQ9Y3B0YWJsZS51dGlscy5kZWNvZGUoWGUuY29kZXBhZ2UsY3B0YWJsZS51dGlscy5l''@;'; put 'put ''bmNvZGUoMjg1OTEsaXQpKSksInNvY2lhbGNhbGM6dmVyc2lvbjoiPT1pdC5zbGljZSgwLDE5KT9EbS50b19zaGVldCgic3RyaW5nIj09WGUudHlwZT9pdDpGaShpdCksWGUpOl9lKGl0LFhlKX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gTWUoVWUsWGUpe3JldHVybiBaZih2ZShVZSxY''@;'; put 'put ''ZSksWGUpfSx0b19zaGVldDp2ZSxmcm9tX3NoZWV0OmZ1bmN0aW9uIGplKFVlKXtmb3IodmFyIGZ0LFhlPVtdLGl0PVBpKFVlWyIhcmVmIl0pLE10PUFycmF5LmlzQXJyYXkoVWUpLHV0PWl0LnMucjt1dDw9aXQuZS5yOysrdXQpe2Zvcih2YXIgd3Q9W10sSHQ9aXQucy5jO0h0PD1pdC5lLmM7''@;'; put 'put ''KytIdCl7dmFyIGt0PXBpKHtyOnV0LGM6SHR9KTtpZigoZnQ9TXQ/KFVlW3V0XXx8W10pW0h0XTpVZVtrdF0pJiZudWxsIT1mdC52KXtmb3IodmFyIFR0PShmdC53fHwobWMoZnQpLGZ0LncpfHwiIikuc2xpY2UoMCwxMCk7VHQubGVuZ3RoPDEwOylUdCs9IiAiO3d0LnB1c2goVHQrKDA9PT1I''@;'; put 'put ''dD8iICI6IiIpKX1lbHNlIHd0LnB1c2goIiAgICAgICAgICAiKX1YZS5wdXNoKHd0LmpvaW4oIiIpKX1yZXR1cm4gWGUuam9pbigiXG4iKX19fSgpLGw4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyhEbix2cixycil7aWYoRG4pe3NzKERuLERuLmx8fDApO2Zvcih2YXIgeG49cnIuRW51bXx8dGk7''@;'; put 'put ''RG4ubDxEbi5sZW5ndGg7KXt2YXIgbXI9RG4ucmVhZF9zaGlmdCgyKSxDaT14blttcl18fHhuWzY1NTM1XSx6cj1Ebi5yZWFkX3NoaWZ0KDIpLHppPURuLmwrenIsd289Q2kuZiYmQ2kuZihEbix6cixycik7aWYoRG4ubD16aSx2cih3byxDaSxtcikpcmV0dXJufX19ZnVuY3Rpb24gRChEbix2''@;'; put 'put ''cil7aWYoIURuKXJldHVybiBEbjt2YXIgcnI9dnJ8fHt9O251bGwhPW5lJiZudWxsPT1yci5kZW5zZSYmKHJyLmRlbnNlPW5lKTt2YXIgeG49cnIuZGVuc2U/W106e30sbXI9IlNoZWV0MSIsQ2k9MCx6cj17fSx6aT1bbXJdLHdvPVtdLE9pPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sWG89''@;'; put 'put ''cnIuc2hlZXRSb3dzfHwwO2lmKDI9PURuWzJdKXJyLkVudW09dGksdyhEbixmdW5jdGlvbihtaSxybCxBbil7c3dpdGNoKEFuKXtjYXNlIDA6cnIudmVycz1taSxtaT49NDA5NiYmKHJyLnFwcm89ITApO2JyZWFrO2Nhc2UgNjpPaT1taTticmVhaztjYXNlIDE1OmNhc2UgNTE6cnIucXByb3x8''@;'; put 'put ''KG1pWzFdLnY9bWlbMV0udi5zbGljZSgxKSk7Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTY6MTQ9PUFuJiYxMTI9PSgxMTImbWlbMl0pJiYoMTUmbWlbMl0pPjEmJigxNSZtaVsyXSk8MTUmJihtaVsxXS56PXJyLmRhdGVORnx8Uy5fdGFibGVbMTRdLHJyLmNlbGxEYXRlcyYmKG1pWzFdLnQ9ImQi''@;'; put 'put ''LG1pWzFdLnY9aHQobWlbMV0udikpKTt2YXIgQWE9cnIuZGVuc2U/KHhuW21pWzBdLnJdfHxbXSlbbWlbMF0uY106eG5bcGkobWlbMF0pXTtpZihBYSl7QWEudD1taVsxXS50LEFhLnY9bWlbMV0udixudWxsIT1taVsxXS56JiYoQWEuej1taVsxXS56KSxudWxsIT1taVsxXS5mJiYoQWEuZj1t''@;'; put 'put ''aVsxXS5mKTticmVha31yci5kZW5zZT8oeG5bbWlbMF0ucl18fCh4blttaVswXS5yXT1bXSkseG5bbWlbMF0ucl1bbWlbMF0uY109bWlbMV0pOnhuW3BpKG1pWzBdKV09bWlbMV19fSxycik7ZWxzZXtpZigyNiE9RG5bMl0mJjE0IT1EblsyXSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXpl''@;'; put 'put ''ZCBMT1RVUyBCT0YgIitEblsyXSk7cnIuRW51bT1mciwxND09RG5bMl0mJihyci5xcHJvPSEwLERuLmw9MCksdyhEbixmdW5jdGlvbihtaSxybCxBbil7c3dpdGNoKEFuKXtjYXNlIDIyOm1pWzFdLnY9bWlbMV0udi5zbGljZSgxKTtjYXNlIDIzOmNhc2UgMjQ6Y2FzZSAyNTpjYXNlIDM3OmNh''@;'; put 'put ''c2UgMzk6Y2FzZSA0MDppZihtaVszXT5DaSYmKHhuWyIhcmVmIl09Vm8oT2kpLHpyW21yXT14bix4bj1yci5kZW5zZT9bXTp7fSxPaT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LHppLnB1c2gobXI9IlNoZWV0IisoKENpPW1pWzNdKSsxKSkpLFhvPjAmJm1pWzBdLnI+PVhvKWJyZWFrO3Jy''@;'; put 'put ''LmRlbnNlPyh4blttaVswXS5yXXx8KHhuW21pWzBdLnJdPVtdKSx4blttaVswXS5yXVttaVswXS5jXT1taVsxXSk6eG5bcGkobWlbMF0pXT1taVsxXSxPaS5lLmM8bWlbMF0uYyYmKE9pLmUuYz1taVswXS5jKSxPaS5lLnI8bWlbMF0uciYmKE9pLmUucj1taVswXS5yKTticmVhaztjYXNlIDI3''@;'; put 'put ''Om1pWzE0ZTNdJiYod29bbWlbMTRlM11bMF1dPW1pWzE0ZTNdWzFdKX19LHJyKX1pZih4blsiIXJlZiJdPVZvKE9pKSx6clttcl09eG4sIXdvLmxlbmd0aClyZXR1cm57U2hlZXROYW1lczp6aSxTaGVldHM6enJ9O2Zvcih2YXIgZm89e30sUm89W10sVG89MDtUbzx3by5sZW5ndGg7KytUbyl6''@;'; put 'put ''clt6aVtUb11dJiYoUm8ucHVzaCh3b1tUb10pLGZvW3dvW1RvXV09enJbemlbVG9dXSk7cmV0dXJue1NoZWV0TmFtZXM6Um8sU2hlZXRzOmZvfX1mdW5jdGlvbiBqZShEbix2cixycil7dmFyIHhuPVt7YzowLHI6MH0se3Q6Im4iLHY6MH0sMF07cmV0dXJuIHJyLnFwcm8mJjIwNzY4IT1yci52''@;'; put 'put ''ZXJzPyh4blswXS5jPURuLnJlYWRfc2hpZnQoMSksRG4ubCsrLHhuWzBdLnI9RG4ucmVhZF9zaGlmdCgyKSxEbi5sKz0yKTooeG5bMl09RG4ucmVhZF9zaGlmdCgxKSx4blswXS5jPURuLnJlYWRfc2hpZnQoMikseG5bMF0ucj1Ebi5yZWFkX3NoaWZ0KDIpKSx4bn1mdW5jdGlvbiBVZShEbix2''@;'; put 'put ''cixycil7dmFyIHhuPURuLmwrdnIsbXI9amUoRG4sMCxycik7aWYobXJbMV0udD0icyIsMjA3Njg9PXJyLnZlcnMpe0RuLmwrKzt2YXIgQ2k9RG4ucmVhZF9zaGlmdCgxKTtyZXR1cm4gbXJbMV0udj1Ebi5yZWFkX3NoaWZ0KENpLCJ1dGY4IiksbXJ9cmV0dXJuIHJyLnFwcm8mJkRuLmwrKyxt''@;'; put 'put ''clsxXS52PURuLnJlYWRfc2hpZnQoeG4tRG4ubCwiY3N0ciIpLG1yfWZ1bmN0aW9uIFhlKERuLHZyLHJyKXt2YXIgeG49cHIoNytyci5sZW5ndGgpO3huLndyaXRlX3NoaWZ0KDEsMjU1KSx4bi53cml0ZV9zaGlmdCgyLHZyKSx4bi53cml0ZV9zaGlmdCgyLERuKSx4bi53cml0ZV9zaGlmdCgx''@;'; put 'put ''LDM5KTtmb3IodmFyIG1yPTA7bXI8eG4ubGVuZ3RoOysrbXIpe3ZhciBDaT1yci5jaGFyQ29kZUF0KG1yKTt4bi53cml0ZV9zaGlmdCgxLENpPj0xMjg/OTU6Q2kpfXJldHVybiB4bi53cml0ZV9zaGlmdCgxLDApLHhufWZ1bmN0aW9uIGZ0KERuLHZyLHJyKXt2YXIgeG49cHIoNyk7cmV0dXJu''@;'; put 'put ''IHhuLndyaXRlX3NoaWZ0KDEsMjU1KSx4bi53cml0ZV9zaGlmdCgyLHZyKSx4bi53cml0ZV9zaGlmdCgyLERuKSx4bi53cml0ZV9zaGlmdCgyLHJyLCJpIikseG59ZnVuY3Rpb24gdXQoRG4sdnIscnIpe3ZhciB4bj1wcigxMyk7cmV0dXJuIHhuLndyaXRlX3NoaWZ0KDEsMjU1KSx4bi53cml0''@;'; put 'put ''ZV9zaGlmdCgyLHZyKSx4bi53cml0ZV9zaGlmdCgyLERuKSx4bi53cml0ZV9zaGlmdCg4LHJyLCJmIikseG59ZnVuY3Rpb24gSHQoRG4sdnIscnIpe3ZhciB4bj0zMjc2OCZ2cjtyZXR1cm4gdnI9KHhuP0RuOjApKygodnImPS0zMjc2OSk+PTgxOTI/dnItMTYzODQ6dnIpLCh4bj8iIjoiJCIp''@;'; put 'put ''Kyhycj9CYSh2cik6VmEodnIpKX12YXIgVHQ9ezUxOlsiRkFMU0UiLDBdLDUyOlsiVFJVRSIsMF0sNzA6WyJMRU4iLDFdLDgwOlsiU1VNIiw2OV0sODE6WyJBVkVSQUdFQSIsNjldLDgyOlsiQ09VTlRBIiw2OV0sODM6WyJNSU5BIiw2OV0sODQ6WyJNQVhBIiw2OV0sMTExOlsiVCIsMV19LFl0''@;'; put 'put ''PVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gcW4oRG4pe3ZhciB2cj1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3Jl''@;'; put 'put ''dHVybiB2clswXS5yPURuLnJlYWRfc2hpZnQoMiksdnJbM109RG5bRG4ubCsrXSx2clswXS5jPURuW0RuLmwrK10sdnJ9ZnVuY3Rpb24gS24oRG4sdnIscnIseG4pe3ZhciBtcj1wcig2K3huLmxlbmd0aCk7bXIud3JpdGVfc2hpZnQoMixEbiksbXIud3JpdGVfc2hpZnQoMSxyciksbXIud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSx2ciksbXIud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBDaT0wO0NpPHhuLmxlbmd0aDsrK0NpKXt2YXIgenI9eG4uY2hhckNvZGVBdChDaSk7bXIud3JpdGVfc2hpZnQoMSx6cj49MTI4Pzk1OnpyKX1yZXR1cm4gbXIud3JpdGVfc2hpZnQoMSwwKSxtcn1mdW5jdGlvbiBP''@;'; put 'put ''bihEbix2cil7dmFyIHJyPXFuKERuKSx4bj1Ebi5yZWFkX3NoaWZ0KDQpLG1yPURuLnJlYWRfc2hpZnQoNCksQ2k9RG4ucmVhZF9zaGlmdCgyKTtpZig2NTUzNT09Q2kpcmV0dXJuIDA9PT14biYmMzIyMTIyNTQ3Mj09PW1yPyhyclsxXS50PSJlIixyclsxXS52PTE1KTowPT09eG4mJjM0ODk2''@;'; put 'put ''NjA5Mjg9PT1tcj8ocnJbMV0udD0iZSIscnJbMV0udj00Mik6cnJbMV0udj0wLHJyO3ZhciB6cj0zMjc2OCZDaTtyZXR1cm4gQ2k9KDMyNzY3JkNpKS0xNjQ0NixyclsxXS52PSgxLTIqenIpKihtcipNYXRoLnBvdygyLENpKzMyKSt4bipNYXRoLnBvdygyLENpKSkscnJ9ZnVuY3Rpb24gZXIo''@;'; put 'put ''RG4sdnIscnIseG4pe3ZhciBtcj1wcigxNCk7aWYobXIud3JpdGVfc2hpZnQoMixEbiksbXIud3JpdGVfc2hpZnQoMSxyciksbXIud3JpdGVfc2hpZnQoMSx2ciksMD09eG4pcmV0dXJuIG1yLndyaXRlX3NoaWZ0KDQsMCksbXIud3JpdGVfc2hpZnQoNCwwKSxtci53cml0ZV9zaGlmdCgyLDY1''@;'; put 'put ''NTM1KSxtcjt2YXIgQ2k9MCx6cj0wLHdvPTA7cmV0dXJuIHhuPDAmJihDaT0xLHhuPS14biksenI9MHxNYXRoLmxvZzIoeG4pLDIxNDc0ODM2NDgmKHdvPSh4bi89TWF0aC5wb3coMix6ci0zMSkpPj4+MCl8fCgrK3pyLHdvPSh4bi89Mik+Pj4wKSx4bi09d28sd298PTIxNDc0ODM2NDgsd28+''@;'; put 'put ''Pj49MCx4bio9TWF0aC5wb3coMiwzMiksbXIud3JpdGVfc2hpZnQoNCx4bj4+PjApLG1yLndyaXRlX3NoaWZ0KDQsd28pLG1yLndyaXRlX3NoaWZ0KDIsenIrPTE2MzgzKyhDaT8zMjc2ODowKSksbXJ9ZnVuY3Rpb24ganIoRG4sdnIpe3ZhciBycj1xbihEbikseG49RG4ucmVhZF9zaGlmdCg4''@;'; put 'put ''LCJmIik7cmV0dXJuIHJyWzFdLnY9eG4scnJ9ZnVuY3Rpb24gSWkoRG4sdnIpe3ZhciBycj1wcig1K0RuLmxlbmd0aCk7cnIud3JpdGVfc2hpZnQoMiwxNGUzKSxyci53cml0ZV9zaGlmdCgyLHZyKTtmb3IodmFyIHhuPTA7eG48RG4ubGVuZ3RoOysreG4pe3ZhciBtcj1Ebi5jaGFyQ29kZUF0''@;'; put 'put ''KHhuKTtycltyci5sKytdPW1yPjEyNz85NTptcn1yZXR1cm4gcnJbcnIubCsrXT0wLHJyfXZhciB0aT17MDp7bjoiQk9GIixmOnlzfSwxOntuOiJFT0YifSwyOntuOiJDQUxDTU9ERSJ9LDM6e246IkNBTENPUkRFUiJ9LDQ6e246IlNQTElUIn0sNTp7bjoiU1lOQyJ9LDY6e246IlJBTkdFIixm''@;'; put 'put ''OmZ1bmN0aW9uIHZlKERuKXt2YXIgdnI9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtyZXR1cm4gdnIucy5jPURuLnJlYWRfc2hpZnQoMiksdnIucy5yPURuLnJlYWRfc2hpZnQoMiksdnIuZS5jPURuLnJlYWRfc2hpZnQoMiksdnIuZS5yPURuLnJlYWRfc2hpZnQoMiksNjU1MzU9PXZyLnMu''@;'; put 'put ''YyYmKHZyLnMuYz12ci5lLmM9dnIucy5yPXZyLmUucj0wKSx2cn19LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRXTyJ9LDEwOntuOiJDT0xXMiJ9LDExOntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6ZnVuY3Rpb24gaXQoRG4sdnIs''@;'; put 'put ''cnIpe3ZhciB4bj1qZShEbiwwLHJyKTtyZXR1cm4geG5bMV0udj1Ebi5yZWFkX3NoaWZ0KDIsImkiKSx4bn19LDE0OntuOiJOVU1CRVIiLGY6ZnVuY3Rpb24gTXQoRG4sdnIscnIpe3ZhciB4bj1qZShEbiwwLHJyKTtyZXR1cm4geG5bMV0udj1Ebi5yZWFkX3NoaWZ0KDgsImYiKSx4bn19LDE1''@;'; put 'put ''OntuOiJMQUJFTCIsZjpVZX0sMTY6e246IkZPUk1VTEEiLGY6ZnVuY3Rpb24gd3QoRG4sdnIscnIpe3ZhciB4bj1Ebi5sK3ZyLG1yPWplKERuLDAscnIpO2lmKG1yWzFdLnY9RG4ucmVhZF9zaGlmdCg4LCJmIikscnIucXBybylEbi5sPXhuO2Vsc2V7dmFyIENpPURuLnJlYWRfc2hpZnQoMik7''@;'; put 'put ''KGZ1bmN0aW9uIGduKERuLHZyKXtzcyhEbiwwKTtmb3IodmFyIHJyPVtdLHhuPTAsbXI9IiIsQ2k9IiI7RG4ubDxEbi5sZW5ndGg7KXt2YXIgenI9RG5bRG4ubCsrXTtzd2l0Y2goenIpe2Nhc2UgMDpyci5wdXNoKERuLnJlYWRfc2hpZnQoOCwiZiIpKTticmVhaztjYXNlIDE6Q2k9SHQodnJb''@;'; put 'put ''MF0uYyxEbi5yZWFkX3NoaWZ0KDIpLCEwKSxtcj1IdCh2clswXS5yLERuLnJlYWRfc2hpZnQoMiksITEpLHJyLnB1c2goQ2krbXIpO2JyZWFrO2Nhc2UgMjp2YXIgemk9SHQodnJbMF0uYyxEbi5yZWFkX3NoaWZ0KDIpLCEwKSx3bz1IdCh2clswXS5yLERuLnJlYWRfc2hpZnQoMiksITEpO0Np''@;'; put 'put ''PUh0KHZyWzBdLmMsRG4ucmVhZF9zaGlmdCgyKSwhMCksbXI9SHQodnJbMF0ucixEbi5yZWFkX3NoaWZ0KDIpLCExKSxyci5wdXNoKHppK3dvKyI6IitDaSttcik7YnJlYWs7Y2FzZSAzOmlmKERuLmw8RG4ubGVuZ3RoKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIldLMSBwcmVtYXR1cmUg''@;'; put 'put ''Zm9ybXVsYSBlbmQiKTticmVhaztjYXNlIDQ6cnIucHVzaCgiKCIrcnIucG9wKCkrIikiKTticmVhaztjYXNlIDU6cnIucHVzaChEbi5yZWFkX3NoaWZ0KDIpKTticmVhaztjYXNlIDY6Zm9yKHZhciBPaT0iIjt6cj1EbltEbi5sKytdOylPaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh6cik7cnIu''@;'; put 'put ''cHVzaCgnIicrT2kucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSA4OnJyLnB1c2goIi0iK3JyLnBvcCgpKTticmVhaztjYXNlIDIzOnJyLnB1c2goIisiK3JyLnBvcCgpKTticmVhaztjYXNlIDIyOnJyLnB1c2goIk5PVCgiK3JyLnBvcCgpKyIpIik7YnJlYWs7Y2FzZSAyMDpj''@;'; put 'put ''YXNlIDIxOnZhciBYbz1yci5wb3AoKSxmbz1yci5wb3AoKTtyci5wdXNoKFsiQU5EIiwiT1IiXVt6ci0yMF0rIigiK2ZvKyIsIitYbysiKSIpO2JyZWFrO2RlZmF1bHQ6aWYoenI8MzImJll0W3pyXSlYbz1yci5wb3AoKSxmbz1yci5wb3AoKSxyci5wdXNoKGZvK1l0W3pyXStYbyk7ZWxzZXtp''@;'; put 'put ''ZighVHRbenJdKXJldHVybiB6cjw9Nz9jb25zb2xlLmVycm9yKCJXSzEgaW52YWxpZCBvcGNvZGUgIit6ci50b1N0cmluZygxNikpOnpyPD0yND9jb25zb2xlLmVycm9yKCJXSzEgdW5zdXBwb3J0ZWQgb3AgIit6ci50b1N0cmluZygxNikpOnpyPD0zMD9jb25zb2xlLmVycm9yKCJXSzEgaW52''@;'; put 'put ''YWxpZCBvcGNvZGUgIit6ci50b1N0cmluZygxNikpOnpyPD0xMTU/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIGZ1bmN0aW9uIG9wY29kZSAiK3pyLnRvU3RyaW5nKDE2KSk6Y29uc29sZS5lcnJvcigiV0sxIHVucmVjb2duaXplZCBvcGNvZGUgIit6ci50b1N0cmluZygxNikpO2lm''@;'; put 'put ''KDY5PT0oeG49VHRbenJdWzFdKSYmKHhuPURuW0RuLmwrK10pLHhuPnJyLmxlbmd0aClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgMHgiK3pyLnRvU3RyaW5nKDE2KSsiOnwiK3JyLmpvaW4oInwiKSsifCIpO3ZhciBSbz1yci5zbGljZSgteG4pO3Jy''@;'; put 'put ''Lmxlbmd0aC09eG4scnIucHVzaChUdFt6cl1bMF0rIigiK1JvLmpvaW4oIiwiKSsiKSIpfX19MT09cnIubGVuZ3RoP3ZyWzFdLmY9IiIrcnJbMF06Y29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHwiK3JyLmpvaW4oInwiKSsifCIpfSkoRG4uc2xpY2UoRG4ubCxEbi5sK0Np''@;'; put 'put ''KSxtciksRG4ubCs9Q2l9cmV0dXJuIG1yfX0sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoiU1JBTkdFIn0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBS''@;'; put 'put ''T1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFCRUxGTVQifSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTEND''@;'; put 'put ''T1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjpVZX0sNTU6e246IlBBU1NXT1JEIn0sNTY6e246IkxPQ0tFRCJ9LDYwOntuOiJRVUVSWSJ9LDYxOntuOiJRVUVSWU5BTUUifSw2Mjp7bjoiUFJJTlQi''@;'; put 'put ''fSw2Mzp7bjoiUFJJTlROQU1FIn0sNjQ6e246IkdSQVBIMiJ9LDY1OntuOiJHUkFQSE5BTUUifSw2Njp7bjoiWk9PTSJ9LDY3OntuOiJTWU1TUExJVCJ9LDY4OntuOiJOU1JPV1MifSw2OTp7bjoiTlNDT0xTIn0sNzA6e246IlJVTEVSIn0sNzE6e246Ik5OQU1FIn0sNzI6e246IkFDT01NIn0s''@;'; put 'put ''NzM6e246IkFNQUNSTyJ9LDc0OntuOiJQQVJTRSJ9LDEwMjp7bjoiUFJBTkdFUz8/In0sMTAzOntuOiJSUkFOR0VTPz8ifSwxMDQ6e246IkZOQU1FPz8ifSwxMDU6e246Ik1SQU5HRVM/PyJ9LDY1NTM1OntuOiIifX0sZnI9ezA6e246IkJPRiJ9LDE6e246IkVPRiJ9LDI6e246IlBBU1NXT1JE''@;'; put 'put ''In0sMzp7bjoiQ0FMQ1NFVCJ9LDQ6e246IldJTkRPV1NFVCJ9LDU6e246IlNIRUVUQ0VMTFBUUiJ9LDY6e246IlNIRUVUTEFZT1VUIn0sNzp7bjoiQ09MVU1OV0lEVEgifSw4OntuOiJISURERU5DT0xVTU4ifSw5OntuOiJVU0VSUkFOR0UifSwxMDp7bjoiU1lTVEVNUkFOR0UifSwxMTp7bjoi''@;'; put 'put ''WkVST0ZPUkNFIn0sMTI6e246IlNPUlRLRVlESVIifSwxMzp7bjoiRklMRVNFQUwifSwxNDp7bjoiREFUQUZJTExOVU1TIn0sMTU6e246IlBSSU5UTUFJTiJ9LDE2OntuOiJQUklOVFNUUklORyJ9LDE3OntuOiJHUkFQSE1BSU4ifSwxODp7bjoiR1JBUEhTVFJJTkcifSwxOTp7bjoiPz8ifSwy''@;'; put 'put ''MDp7bjoiRVJSQ0VMTCJ9LDIxOntuOiJOQUNFTEwifSwyMjp7bjoiTEFCRUwxNiIsZjpmdW5jdGlvbiBmbihEbix2cil7dmFyIHJyPXFuKERuKTtyZXR1cm4gcnJbMV0udD0icyIscnJbMV0udj1Ebi5yZWFkX3NoaWZ0KHZyLTQsImNzdHIiKSxycn19LDIzOntuOiJOVU1CRVIxNyIsZjpPbn0s''@;'; put 'put ''MjQ6e246Ik5VTUJFUjE4IixmOmZ1bmN0aW9uIHpuKERuLHZyKXt2YXIgcnI9cW4oRG4pO3JyWzFdLnY9RG4ucmVhZF9zaGlmdCgyKTt2YXIgeG49cnJbMV0udj4+MTtpZigxJnJyWzFdLnYpc3dpdGNoKDcmeG4pe2Nhc2UgMDp4bj01ZTMqKHhuPj4zKTticmVhaztjYXNlIDE6eG49NTAwKih4''@;'; put 'put ''bj4+Myk7YnJlYWs7Y2FzZSAyOnhuPSh4bj4+MykvMjA7YnJlYWs7Y2FzZSAzOnhuPSh4bj4+MykvMjAwO2JyZWFrO2Nhc2UgNDp4bj0oeG4+PjMpLzJlMzticmVhaztjYXNlIDU6eG49KHhuPj4zKS8yZTQ7YnJlYWs7Y2FzZSA2OnhuPSh4bj4+MykvMTY7YnJlYWs7Y2FzZSA3OnhuPSh4bj4+''@;'; put 'put ''MykvNjR9cmV0dXJuIHJyWzFdLnY9eG4scnJ9fSwyNTp7bjoiRk9STVVMQTE5IixmOmZ1bmN0aW9uIHRyKERuLHZyKXt2YXIgcnI9T24oRG4pO3JldHVybiBEbi5sKz12ci0xNCxycn19LDI2OntuOiJGT1JNVUxBMUEifSwyNzp7bjoiWEZPUk1BVCIsZjpmdW5jdGlvbiBFaShEbix2cil7Zm9y''@;'; put 'put ''KHZhciBycj17fSx4bj1Ebi5sK3ZyO0RuLmw8eG47KXt2YXIgbXI9RG4ucmVhZF9zaGlmdCgyKTtpZigxNGUzPT1tcil7Zm9yKHJyW21yXT1bMCwiIl0scnJbbXJdWzBdPURuLnJlYWRfc2hpZnQoMik7RG5bRG4ubF07KXJyW21yXVsxXSs9U3RyaW5nLmZyb21DaGFyQ29kZShEbltEbi5sXSks''@;'; put 'put ''RG4ubCsrO0RuLmwrK319cmV0dXJuIHJyfX0sMjg6e246IkRUTEFCRUxNSVNDIn0sMjk6e246IkRUTEFCRUxDRUxMIn0sMzA6e246IkdSQVBIV0lORE9XIn0sMzE6e246IkNQQSJ9LDMyOntuOiJMUExBVVRPIn0sMzM6e246IlFVRVJZIn0sMzQ6e246IkhJRERFTlNIRUVUIn0sMzU6e246Ij8/''@;'; put 'put ''In0sMzc6e246Ik5VTUJFUjI1IixmOmZ1bmN0aW9uIFluKERuLHZyKXt2YXIgcnI9cW4oRG4pLHhuPURuLnJlYWRfc2hpZnQoNCk7cmV0dXJuIHJyWzFdLnY9eG4+PjYscnJ9fSwzODp7bjoiPz8ifSwzOTp7bjoiTlVNQkVSMjciLGY6anJ9LDQwOntuOiJGT1JNVUxBMjgiLGY6ZnVuY3Rpb24g''@;'; put 'put ''bGkoRG4sdnIpe3ZhciBycj1qcihEbik7cmV0dXJuIERuLmwrPXZyLTEwLHJyfX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0s''@;'; put 'put ''MTYzOntuOiI/PyJ9LDE3NDp7bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA1OntuOiI/''@;'; put 'put ''PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/PyJ9LDI2ODp7''@;'; put 'put ''bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoiPz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7bjoiPz8ifSw2''@;'; put 'put ''NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2NjE6e246Ij8/''@;'; put 'put ''In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNjAwOntuOiI/PyJ9LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9''@;'; put 'put ''LDIwNDg6e246Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fTtyZXR1cm57c2hlZXRfdG9fd2sxOmZ1bmN0aW9uIGVlKERu''@;'; put 'put ''LHZyKXt2YXIgcnI9dnJ8fHt9O2lmKCtyci5jb2RlcGFnZT49MCYmeigrcnIuY29kZXBhZ2UpLCJzdHJpbmciPT1yci50eXBlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmciKTt2YXIgeG49QXUoKSxtcj1QaShEblsiIXJlZiJdKSxDaT1BcnJheS5pc0Fy''@;'; put 'put ''cmF5KERuKSx6cj1bXTtTaSh4biwwLGZ1bmN0aW9uIGdlKERuKXt2YXIgdnI9cHIoMik7cmV0dXJuIHZyLndyaXRlX3NoaWZ0KDIsRG4pLHZyfSgxMDMwKSksU2koeG4sNixmdW5jdGlvbiBNZShEbil7dmFyIHZyPXByKDgpO3JldHVybiB2ci53cml0ZV9zaGlmdCgyLERuLnMuYyksdnIud3Jp''@;'; put 'put ''dGVfc2hpZnQoMixEbi5zLnIpLHZyLndyaXRlX3NoaWZ0KDIsRG4uZS5jKSx2ci53cml0ZV9zaGlmdCgyLERuLmUuciksdnJ9KG1yKSk7Zm9yKHZhciB6aT1tci5zLnI7emk8PW1yLmUucjsrK3ppKWZvcih2YXIgd289VmEoemkpLE9pPW1yLnMuYztPaTw9bXIuZS5jOysrT2kpe3ppPT09bXIu''@;'; put 'put ''cy5yJiYoenJbT2ldPUJhKE9pKSk7dmFyIGZvPUNpPyhEblt6aV18fFtdKVtPaV06RG5benJbT2ldK3dvXTtmbyYmInoiIT1mby50JiYoIm4iPT1mby50PygwfGZvLnYpPT1mby52JiZmby52Pj0tMzI3NjgmJmZvLnY8PTMyNzY3P1NpKHhuLDEzLGZ0KHppLE9pLGZvLnYpKTpTaSh4biwxNCx1''@;'; put 'put ''dCh6aSxPaSxmby52KSk6U2koeG4sMTUsWGUoemksT2ksbWMoZm8pLnNsaWNlKDAsMjM5KSkpKX1yZXR1cm4gU2koeG4sMSkseG4uZW5kKCl9LGJvb2tfdG9fd2szOmZ1bmN0aW9uIG9lKERuLHZyKXt2YXIgcnI9dnJ8fHt9O2lmKCtyci5jb2RlcGFnZT49MCYmeigrcnIuY29kZXBhZ2UpLCJz''@;'; put 'put ''dHJpbmciPT1yci50eXBlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMyB0byBKUyBzdHJpbmciKTt2YXIgeG49QXUoKTtTaSh4biwwLGZ1bmN0aW9uIF9lKERuKXt2YXIgdnI9cHIoMjYpO3ZyLndyaXRlX3NoaWZ0KDIsNDA5NiksdnIud3JpdGVfc2hpZnQoMiw0KSx2ci53cml0''@;'; put 'put ''ZV9zaGlmdCg0LDApO2Zvcih2YXIgcnI9MCx4bj0wLG1yPTAsQ2k9MDtDaTxEbi5TaGVldE5hbWVzLmxlbmd0aDsrK0NpKXt2YXIgemk9RG4uU2hlZXRzW0RuLlNoZWV0TmFtZXNbQ2ldXTtpZih6aSYmemlbIiFyZWYiXSl7Kyttcjt2YXIgd289S2EoemlbIiFyZWYiXSk7cnI8d28uZS5yJiYo''@;'; put 'put ''cnI9d28uZS5yKSx4bjx3by5lLmMmJih4bj13by5lLmMpfX1yZXR1cm4gdnIud3JpdGVfc2hpZnQoMixyciksdnIud3JpdGVfc2hpZnQoMSxtciksdnIud3JpdGVfc2hpZnQoMSx4biksdnIud3JpdGVfc2hpZnQoMiwwKSx2ci53cml0ZV9zaGlmdCgyLDApLHZyLndyaXRlX3NoaWZ0KDEsMSks''@;'; put 'put ''dnIud3JpdGVfc2hpZnQoMSwyKSx2ci53cml0ZV9zaGlmdCg0LDApLHZyLndyaXRlX3NoaWZ0KDQsMCksdnJ9KERuKSk7Zm9yKHZhciBtcj0wLENpPTA7bXI8RG4uU2hlZXROYW1lcy5sZW5ndGg7KyttcikoRG4uU2hlZXRzW0RuLlNoZWV0TmFtZXNbbXJdXXx8e30pWyIhcmVmIl0mJlNpKHhu''@;'; put 'put ''LDI3LElpKERuLlNoZWV0TmFtZXNbbXJdLENpKyspKTt2YXIgenI9MDtmb3IobXI9MDttcjxEbi5TaGVldE5hbWVzLmxlbmd0aDsrK21yKXt2YXIgemk9RG4uU2hlZXRzW0RuLlNoZWV0TmFtZXNbbXJdXTtpZih6aSYmemlbIiFyZWYiXSl7Zm9yKHZhciB3bz1QaSh6aVsiIXJlZiJdKSxPaT1B''@;'; put 'put ''cnJheS5pc0FycmF5KHppKSxYbz1bXSxmbz13by5zLnI7Zm88PXdvLmUucjsrK2ZvKWZvcih2YXIgUm89VmEoZm8pLFRvPXdvLnMuYztUbzw9d28uZS5jOysrVG8pe2ZvPT09d28ucy5yJiYoWG9bVG9dPUJhKFRvKSk7dmFyIHJsPU9pPyh6aVtmb118fFtdKVtUb106emlbWG9bVG9dK1JvXTty''@;'; put 'put ''bCYmInoiIT1ybC50JiYoIm4iPT1ybC50P1NpKHhuLDIzLGVyKGZvLFRvLHpyLHJsLnYpKTpTaSh4biwyMixLbihmbyxUbyx6cixtYyhybCkuc2xpY2UoMCwyMzkpKSkpfSsrenJ9fXJldHVybiBTaSh4biwxKSx4bi5lbmQoKX0sdG9fd29ya2Jvb2s6ZnVuY3Rpb24gUChEbix2cil7c3dpdGNo''@;'; put 'put ''KHZyLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gRCh4KGxlLmRlY29kZShEbikpLHZyKTtjYXNlImJpbmFyeSI6cmV0dXJuIEQoeChEbiksdnIpO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm4gRChEbix2cil9dGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSAiK3ZyLnR5cGV9fX0oKSxz''@;'; put 'put ''OD1mdW5jdGlvbigpe3ZhciB3PWdzKCJ0IiksUD1ncygiclByIik7ZnVuY3Rpb24gRChnZSl7dmFyIF9lPWdlLm1hdGNoKHcpO2lmKCFfZSlyZXR1cm57dDoicyIsdjoiIn07dmFyIHZlPXt0OiJzIix2OkVyKF9lWzFdKX0sTWU9Z2UubWF0Y2goUCk7cmV0dXJuIE1lJiYodmUucz1mdW5jdGlv''@;'; put 'put ''biBPeCh3KXt2YXIgUD17fSxEPXcubWF0Y2gocXQpLGVlPTAsb2U9ITE7aWYoRClmb3IoO2VlIT1ELmxlbmd0aDsrK2VlKXt2YXIgZ2U9Y24oRFtlZV0pO3N3aXRjaChnZVswXS5yZXBsYWNlKC9cdyo6L2csIiIpKXtjYXNlIjxjb25kZW5zZSI6Y2FzZSI8ZXh0ZW5kIjpicmVhaztjYXNlIjxz''@;'; put 'put ''aGFkb3ciOmlmKCFnZS52YWwpYnJlYWs7Y2FzZSI8c2hhZG93PiI6Y2FzZSI8c2hhZG93Lz4iOlAuc2hhZG93PTE7YnJlYWs7Y2FzZSI8L3NoYWRvdz4iOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09Z2UudmFsKWJyZWFrO1AuY3A9SVtwYXJzZUludChnZS52YWwsMTApXTticmVhaztj''@;'; put 'put ''YXNlIjxvdXRsaW5lIjppZighZ2UudmFsKWJyZWFrO2Nhc2UiPG91dGxpbmU+IjpjYXNlIjxvdXRsaW5lLz4iOlAub3V0bGluZT0xO2JyZWFrO2Nhc2UiPC9vdXRsaW5lPiI6YnJlYWs7Y2FzZSI8ckZvbnQiOlAubmFtZT1nZS52YWw7YnJlYWs7Y2FzZSI8c3oiOlAuc3o9Z2UudmFsO2JyZWFr''@;'; put 'put ''O2Nhc2UiPHN0cmlrZSI6aWYoIWdlLnZhbClicmVhaztjYXNlIjxzdHJpa2U+IjpjYXNlIjxzdHJpa2UvPiI6UC5zdHJpa2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8dSI6aWYoIWdlLnZhbClicmVhaztzd2l0Y2goZ2UudmFsKXtjYXNlImRvdWJsZSI6UC51bmRlcmxp''@;'; put 'put ''bmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOlAudW5kZXJsaW5lPTMzO2JyZWFrO2Nhc2UiZG91YmxlQWNjb3VudGluZyI6UC51bmRlcmxpbmU9MzR9Y2FzZSI8dT4iOmNhc2UiPHUvPiI6UC51bmRlcmxpbmV8fChQLnVuZGVybGluZT0xKTticmVhaztjYXNlIjwvdT4iOmJyZWFr''@;'; put 'put ''O2Nhc2UiPGIiOmlmKCIwIj09Z2UudmFsKWJyZWFrO2Nhc2UiPGI+IjpjYXNlIjxiLz4iOlAuYm9sZD0xO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aWYoIjAiPT1nZS52YWwpYnJlYWs7Y2FzZSI8aT4iOmNhc2UiPGkvPiI6UC5pdGFsaWM9MTticmVhaztjYXNlIjwvaT4iOmJy''@;'; put 'put ''ZWFrO2Nhc2UiPGNvbG9yIjpnZS5yZ2ImJihQLmNvbG9yPXtyZ2I6OD09Z2UucmdiLmxlbmd0aD9nZS5yZ2Iuc2xpY2UoMiw4KTooIjAwMDAwMCIrZ2UucmdiKS5zbGljZSgtNil9KTticmVhaztjYXNlIjxmYW1pbHkiOlAuZmFtaWx5PWdlLnZhbDticmVhaztjYXNlIjx2ZXJ0QWxpZ24iOiJu''@;'; put 'put ''b25lIiE9KGdlLnZhbHx8Im5vbmUiKSYmKFAudmFsaWduPWdlLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8c2NoZW1lIjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOm9lPSEwO2JyZWFrO2Nhc2UiPC9l''@;'; put 'put ''eHQ+IjpvZT0hMTticmVhaztkZWZhdWx0OmlmKDQ3IT09Z2VbMF0uY2hhckNvZGVBdCgxKSYmIW9lKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHJpY2ggZm9ybWF0ICIrZ2VbMF0pfX1yZXR1cm4gUH0oTWVbMV0pKSx2ZX12YXIgZWU9LzwoPzpcdys6KT9yPi9nLG9lPS88XC8oPzpc''@;'; put 'put ''dys6KT9yPi87cmV0dXJuIGZ1bmN0aW9uKF9lKXtyZXR1cm4gX2UucmVwbGFjZShlZSwiIikuc3BsaXQob2UpLm1hcChEKS5maWx0ZXIoZnVuY3Rpb24odmUpe3JldHVybiB2ZS52fSl9fSgpLGNmPXsxOiJzaW5nbGUiLDI6ImRvdWJsZSIsMzM6InNpbmdsZS1hY2NvdW50aW5nIiwzNDoiZG91''@;'; put 'put ''YmxlLWFjY291bnRpbmcifSx1Xz1mdW5jdGlvbigpe3ZhciBQPS8oXHJcbnxcbikvZztmdW5jdGlvbiBlZShvZSl7dmFyIGdlPVtbXSxvZS52LFtdXTtyZXR1cm4gb2Uudj8ob2UucyYmZnVuY3Rpb24gRChvZSxnZSxfZSl7dmFyIHZlPVtdO29lLnVuZGVybGluZSYmdmUucHVzaCgidGV4dC1k''@;'; put 'put ''ZWNvcmF0aW9uOiB1bmRlcmxpbmU7Iiksb2UudW5kZXJsaW5lPjEmJnZlLnB1c2goInRleHQtdW5kZXJsaW5lLXN0eWxlOiIrY2Zbb2UudW5kZXJsaW5lXSsiOyIpLG9lLnN6JiZ2ZS5wdXNoKCJmb250LXNpemU6IitvZS5zeisicHQ7Iiksb2Uub3V0bGluZSYmdmUucHVzaCgidGV4dC1lZmZl''@;'; put 'put ''Y3Q6IG91dGxpbmU7Iiksb2Uuc2hhZG93JiZ2ZS5wdXNoKCJ0ZXh0LXNoYWRvdzogYXV0bzsiKSxvZS5jb2xvciYmb2UuY29sb3IucmdiJiZ2ZS5wdXNoKCJjb2xvcjogIyIrVWMob2UuY29sb3IucmdiKSsiOyIpLGdlLnB1c2goJzxzcGFuIHN0eWxlPSInK3ZlLmpvaW4oIiIpKyciPicpLG9l''@;'; put 'put ''LmJvbGQmJihnZS5wdXNoKCI8Yj4iKSxfZS5wdXNoKCI8L2I+IikpLG9lLml0YWxpYyYmKGdlLnB1c2goIjxpPiIpLF9lLnB1c2goIjwvaT4iKSksb2Uuc3RyaWtlJiYoZ2UucHVzaCgiPHM+IiksX2UucHVzaCgiPC9zPiIpKTt2YXIgTWU9b2UudmFsaWdufHwiIjsic3VwZXJzY3JpcHQiPT1N''@;'; put 'put ''ZXx8InN1cGVyIj09TWU/TWU9InN1cCI6InN1YnNjcmlwdCI9PU1lJiYoTWU9InN1YiIpLCIiIT1NZSYmKGdlLnB1c2goIjwiK01lKyI+IiksX2UucHVzaCgiPC8iK01lKyI+IikpLF9lLnB1c2goIjwvc3Bhbj4iKX0ob2UucyxnZVswXSxnZVsyXSksZ2VbMF0uam9pbigiIikrZ2VbMV0ucmVw''@;'; put 'put ''bGFjZShQLCI8YnIvPiIpK2dlWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oZ2Upe3JldHVybiBnZS5tYXAoZWUpLmpvaW4oIiIpfX0oKTtmdW5jdGlvbiB3Mih3KXtyZXR1cm4gdy5tYXAoZnVuY3Rpb24oRCl7cmV0dXJuIGZ1bmN0aW9uIHU4KHcpe3ZhciBQPSIiLEQ9W107cmV0''@;'; put 'put ''dXJuIHcucyYmKHcucy5ib2xkJiZELnB1c2goIjxiLz4iKSx3LnMuaXRhbGljJiZELnB1c2goIjxpLz4iKSx3LnMuc3RyaWtlJiZELnB1c2goIjxzdHJpa2UvPiIpLHcucy51bmRlcmxpbmUmJkQucHVzaCgnPHUgdmFsPSInKyhiOFt3LnMudW5kZXJsaW5lXXx8InNpbmdsZSIpKyciLz4nKSx3''@;'; put 'put ''LnMuY29sb3ImJkQucHVzaChsZCh3LnMuY29sb3IpKSx3LnMuc3omJkQucHVzaCgnPHN6IHZhbD0iJyt3LnMuc3orJyIvPicpLHcucy5uYW1lJiZELnB1c2goJzxyRm9udCB2YWw9Iicrdy5zLm5hbWUrJyIvPicpLCgic3VwZXIiPT13LnMudmFsaWdufHwic3ViIj09dy5zLnZhbGlnbikmJkQu''@;'; put 'put ''cHVzaCgnPHZlcnRBbGlnbiB2YWw9Iicrdy5zLnZhbGlnbisnc2NyaXB0Ii8+JykpLEQubGVuZ3RoJiYoUCs9IjxyUHI+IitELmpvaW4oIiIpKyI8L3JQcj4iKSwiPHI+IisoUCs9TXIoInQiLEJyKHcudiksbnVsbCkpKyI8L3I+In0oRCl9KS5qb2luKCIiKX12YXIgRHg9LzwoPzpcdys6KT90''@;'; put 'put ''W14+XSo+KFtePF0qKTxcLyg/Olx3KzopP3Q+L2csY189LzwoPzpcdys6KT9yXGJbXj5dKj4vLGZfPS88KD86XHcrOik/clBoLio/PihbXHNcU10qPyk8XC8oPzpcdys6KT9yUGg+L2c7ZnVuY3Rpb24gZF8odyxQKXt2YXIgRD0hUHx8UC5jZWxsSFRNTCxlZT17fTtyZXR1cm4gdz8ody5tYXRj''@;'; put 'put ''aCgvXlxzKjwoPzpcdys6KT90W14+XSo+Lyk/KGVlLnQ9RXIoRmkody5zbGljZSh3LmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8IiIpKSxlZS5yPUZpKHcpLEQmJihlZS5oPWxvKGVlLnQpKSk6dy5tYXRjaChjXykmJihlZS5yPUZpKHcpLGVlLnQ9RXIoRmko''@;'; put 'put ''KHcucmVwbGFjZShmXywiIikubWF0Y2goRHgpfHxbXSkuam9pbigiIikucmVwbGFjZShxdCwiIikpKSxlZS5SPXM4KGVlLnIpLEQmJihlZS5oPXVfKGVlLlIpKSksZWUpOnt0OiIifX12YXIgSXg9LzwoPzpcdys6KT9zc3QoW14+XSopPihbXHNcU10qKTxcLyg/Olx3KzopP3NzdD4vLFJ4PS88''@;'; put 'put ''KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csTHg9LzxcLyg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi87TmkuU1NUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiO3ZhciBKRj0vXlxzfFxz''@;'; put 'put ''JHxbXHRcblxyXS87ZnVuY3Rpb24gYzgodyxQKXtpZighUC5ib29rU1NUKXJldHVybiIiO3ZhciBEPVtCbl07RFtELmxlbmd0aF09TXIoInNzdCIsbnVsbCx7eG1sbnM6c2EubWFpblswXSxjb3VudDp3LkNvdW50LHVuaXF1ZUNvdW50OncuVW5pcXVlfSk7Zm9yKHZhciBlZT0wO2VlIT13Lmxl''@;'; put 'put ''bmd0aDsrK2VlKWlmKG51bGwhPXdbZWVdKXt2YXIgb2U9d1tlZV0sZ2U9IjxzaT4iO29lLnI/Z2UrPW9lLnI6KGdlKz0iPHQiLG9lLnR8fChvZS50PSIiKSxvZS50Lm1hdGNoKEpGKSYmKGdlKz0nIHhtbDpzcGFjZT0icHJlc2VydmUiJyksZ2UrPSI+IitCcihvZS50KSsiPC90PiIpLERbRC5s''@;'; put 'put ''ZW5ndGhdPWdlKz0iPC9zaT4ifXJldHVybiBELmxlbmd0aD4yJiYoRFtELmxlbmd0aF09Ijwvc3N0PiIsRFsxXT1EWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxELmpvaW4oIiIpfXZhciBIeD1mdW5jdGlvbiBLMSh3LFAsRCl7dmFyIGVlPTEzKzQqdy50Lmxlbmd0aCxvZT13LlImJncuUi5sZW5n''@;'; put 'put ''dGh8fHcucjt3LnImJih3LlI9czgody5yKSksb2UmJihlZSs9NCs0KncuUi5sZW5ndGgpO3ZhciBnZT0hMTtpZihudWxsPT1EJiYoZ2U9ITAsRD1wcihlZSkpLEQud3JpdGVfc2hpZnQoMSxvZT8xOjApLGN1KHcudCxEKSxvZSl7RC53cml0ZV9zaGlmdCg0LHcuUi5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''X2U9MCx2ZT0wO3ZlPHcuUi5sZW5ndGg7Kyt2ZSl7dmFyIE1lPXcuUlt2ZV07RC53cml0ZV9zaGlmdCgyLF9lKSxfZSs9KE1lLnZ8fCIiKS5sZW5ndGg7dmFyIGplPU1lLnM/d2MoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpNZS5zfSxQKTowO0Qud3JpdGVfc2hpZnQo''@;'; put 'put ''MixQLmNlbGxYZnNbamVdLmZvbnRJZCl9fXJldHVybiBnZT9ELnNsaWNlKDAsRC5sKTpEfTtmdW5jdGlvbiB2cCh3LFApe3ZhciBEPUF1KCk7aGkoRCwiQnJ0QmVnaW5Tc3QiLGZ1bmN0aW9uIEZ4KHcsUCl7cmV0dXJuIFB8fChQPXByKDgpKSxQLndyaXRlX3NoaWZ0KDQsdy5Db3VudCksUC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LHcuVW5pcXVlKSxQfSh3KSk7Zm9yKHZhciBlZT0wO2VlPHcubGVuZ3RoOysrZWUpaGkoRCwiQnJ0U1NUSXRlbSIsSHgod1tlZV0sUCkpO3JldHVybiBoaShELCJCcnRFbmRTc3QiKSxELmVuZCgpfWZ1bmN0aW9uIHhsKHcpe2lmKHR5cGVvZiBjcHRhYmxlPCJ1IilyZXR1''@;'; put 'put ''cm4gY3B0YWJsZS51dGlscy5lbmNvZGUoTCx3KTtmb3IodmFyIFA9W10sRD13LnNwbGl0KCIiKSxlZT0wO2VlPEQubGVuZ3RoOysrZWUpUFtlZV09RFtlZV0uY2hhckNvZGVBdCgwKTtyZXR1cm4gUH1mdW5jdGlvbiBsMSh3LFApe3ZhciBEPXt9O3JldHVybiBELk1ham9yPXcucmVhZF9zaGlm''@;'; put 'put ''dCgyKSxELk1pbm9yPXcucmVhZF9zaGlmdCgyKSxQPj00JiYody5sKz1QLTQpLER9ZnVuY3Rpb24gTngodyl7Zm9yKHZhciBQPXcucmVhZF9zaGlmdCg0KSxEPXcubCtQLTQsZWU9e30sb2U9dy5yZWFkX3NoaWZ0KDQpLGdlPVtdO29lLS0gPjA7KWdlLnB1c2goe3Q6dy5yZWFkX3NoaWZ0KDQp''@;'; put 'put ''LHY6dy5yZWFkX3NoaWZ0KDAsImxwcDQiKX0pO2lmKGVlLm5hbWU9dy5yZWFkX3NoaWZ0KDAsImxwcDQiKSxlZS5jb21wcz1nZSx3LmwhPUQpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YVNwYWNlTWFwRW50cnk6ICIrdy5sKyIgIT0gIitEKTtyZXR1cm4gZWV9ZnVuY3Rpb24gaF8odyxQKXt2''@;'; put 'put ''YXIgRD13LmwrUCxlZT17fTtlZS5GbGFncz02MyZ3LnJlYWRfc2hpZnQoNCksdy5sKz00LGVlLkFsZ0lEPXcucmVhZF9zaGlmdCg0KTt2YXIgb2U9ITE7c3dpdGNoKGVlLkFsZ0lEKXtjYXNlIDI2MTI2OmNhc2UgMjYxMjc6Y2FzZSAyNjEyODpvZT0zNj09ZWUuRmxhZ3M7YnJlYWs7Y2FzZSAy''@;'; put 'put ''NjYyNTpvZT00PT0oNTImZWUuRmxhZ3MpO2JyZWFrO2Nhc2UgMDpvZT0xNj09ZWUuRmxhZ3N8fDQ9PWVlLkZsYWdzfHwzNj09ZWUuRmxhZ3M7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG06ICIrZWUuQWxnSUR9aWYoIW9lKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiRW5jcnlwdGlvbiBGbGFncy9BbGdJRCBtaXNtYXRjaCIpO3JldHVybiBlZS5BbGdJREhhc2g9dy5yZWFkX3NoaWZ0KDQpLGVlLktleVNpemU9dy5yZWFkX3NoaWZ0KDQpLGVlLlByb3ZpZGVyVHlwZT13LnJlYWRfc2hpZnQoNCksdy5sKz04LGVlLkNTUE5hbWU9dy5yZWFkX3NoaWZ0''@;'; put 'put ''KEQtdy5sPj4xLCJ1dGYxNmxlIiksdy5sPUQsZWV9ZnVuY3Rpb24gZjgodyxQKXt2YXIgRD17fSxlZT13LmwrUDtyZXR1cm4gdy5sKz00LEQuU2FsdD13LnNsaWNlKHcubCx3LmwrMTYpLHcubCs9MTYsRC5WZXJpZmllcj13LnNsaWNlKHcubCx3LmwrMTYpLHcubCs9MTYsdy5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpLEQuVmVyaWZpZXJIYXNoPXcuc2xpY2Uody5sLGVlKSx3Lmw9ZWUsRH1mdW5jdGlvbiBQUSh3KXtpZigzNiE9KDYzJncucmVhZF9zaGlmdCg0KSkpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uSW5mbyBtaXNtYXRjaCIpO3ZhciBEPXcucmVhZF9zaGlmdCg0KTtyZXR1cm57dDoiU3Rk''@;'; put 'put ''IixoOmhfKHcsRCksdjpmOCh3LHcubGVuZ3RoLXcubCl9fWZ1bmN0aW9uIG5IKCl7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIEZRKHcpe3ZhciBQPVsic2FsdFNpemUiLCJibG9ja1NpemUiLCJrZXlC''@;'; put 'put ''aXRzIiwiaGFzaFNpemUiLCJjaXBoZXJBbGdvcml0aG0iLCJjaXBoZXJDaGFpbmluZyIsImhhc2hBbGdvcml0aG0iLCJzYWx0VmFsdWUiXTt3LmwrPTQ7dmFyIEQ9dy5yZWFkX3NoaWZ0KHcubGVuZ3RoLXcubCwidXRmOCIpLGVlPXt9O3JldHVybiBELnJlcGxhY2UocXQsZnVuY3Rpb24oZ2Up''@;'; put 'put ''e3ZhciBfZT1jbihnZSk7c3dpdGNoKGpuKF9lWzBdKSl7Y2FzZSI8P3htbCI6Y2FzZSI8ZW5jcnlwdGlvbiI6Y2FzZSI8L2VuY3J5cHRpb24+IjpjYXNlIjwva2V5RW5jcnlwdG9ycz4iOmNhc2UiPC9rZXlFbmNyeXB0b3I+IjpicmVhaztjYXNlIjxrZXlEYXRhIjpQLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24odmUpe2VlW3ZlXT1fZVt2ZV19KTticmVhaztjYXNlIjxkYXRhSW50ZWdyaXR5IjplZS5lbmNyeXB0ZWRIbWFjS2V5PV9lLmVuY3J5cHRlZEhtYWNLZXksZWUuZW5jcnlwdGVkSG1hY1ZhbHVlPV9lLmVuY3J5cHRlZEhtYWNWYWx1ZTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3JzPiI6Y2Fz''@;'; put 'put ''ZSI8a2V5RW5jcnlwdG9ycyI6ZWUuZW5jcz1bXTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3IiOmVlLnVyaT1fZS51cmk7YnJlYWs7Y2FzZSI8ZW5jcnlwdGVkS2V5IjplZS5lbmNzLnB1c2goX2UpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgX2VbMF19fSksZWV9ZnVuY3Rpb24gVngodyl7dmFyIEQs''@;'; put 'put ''Z2UsUD0wLGVlPXhsKHcpLG9lPWVlLmxlbmd0aCsxO2ZvcigoRD1ZKG9lKSlbMF09ZWUubGVuZ3RoLGdlPTE7Z2UhPW9lOysrZ2UpRFtnZV09ZWVbZ2UtMV07Zm9yKGdlPW9lLTE7Z2U+PTA7LS1nZSlQPSgoMTYzODQmUD8xOjApfFA8PDEmMzI3NjcpXkRbZ2VdO3JldHVybiA1MjgxMV5QfXZh''@;'; put 'put ''ciBySD1mdW5jdGlvbigpe3ZhciB3PVsxODcsMjU1LDI1NSwxODYsMjU1LDI1NSwxODUsMTI4LDAsMTkwLDE1LDAsMTkxLDE1LDBdLFA9WzU3ODQwLDc0MzksNTIzODAsMzM5ODQsNDM2NCwzNjAwLDYxOTAyLDEyNjA2LDYyNTgsNTc2NTcsNTQyODcsMzQwNDEsMTAyNTIsNDMzNzAsMjAxNjNd''@;'; put 'put ''LEQ9WzQ0Nzk2LDE5OTI5LDM5ODU4LDEwMDUzLDIwMTA2LDQwMjEyLDEwNzYxLDMxNTg1LDYzMTcwLDY0OTMzLDYwMjY3LDUwOTM1LDQwMzk5LDExMTk5LDE3NzYzLDM1NTI2LDE0NTMsMjkwNiw1ODEyLDExNjI0LDIzMjQ4LDg4NSwxNzcwLDM1NDAsNzA4MCwxNDE2MCwyODMyMCw1NjY0MCw1''@;'; put 'put ''NTM2OSw0MTEzOSwyMDgwNyw0MTYxNCwyMTgyMSw0MzY0MiwxNzYyMSwyODQ4NSw1Njk3MCw0NDM0MSwxOTAxOSwzODAzOCwxNDYwNSwyOTIxMCw2MDE5NSw1MDc5MSw0MDE3NSwxMDc1MSwyMTUwMiw0MzAwNCwyNDUzNywxODM4NywzNjc3NCwzOTQ5LDc4OTgsMTU3OTYsMzE1OTIsNjMxODQs''@;'; put 'put ''NDcyMDEsMjQ4MDMsNDk2MDYsMzc4MDUsMTQyMDMsMjg0MDYsNTY4MTIsMTc4MjQsMzU2NDgsMTY5NywzMzk0LDY3ODgsMTM1NzYsMjcxNTIsNDM2MDEsMTc1MzksMzUwNzgsNTU3LDExMTQsMjIyOCw0NDU2LDMwMzg4LDYwNzc2LDUxOTUzLDM0MjQzLDcwNzksMTQxNTgsMjgzMTYsMTQxMjgs''@;'; put 'put ''MjgyNTYsNTY1MTIsNDM0MjUsMTcyNTEsMzQ1MDIsNzU5NywxMzEwNSwyNjIxMCw1MjQyMCwzNTI0MSw4ODMsMTc2NiwzNTMyLDQxMjksODI1OCwxNjUxNiwzMzAzMiw0NjU3LDkzMTQsMTg2MjhdLG9lPWZ1bmN0aW9uKF9lLHZlKXtyZXR1cm4gZnVuY3Rpb24oX2Upe3JldHVybiAyNTUmKF9l''@;'; put 'put ''Pj4xfF9lPDw3KX0oX2VedmUpfTtyZXR1cm4gZnVuY3Rpb24odmUpe2Zvcih2YXIgTWU9eGwodmUpLGplPWZ1bmN0aW9uKF9lKXtmb3IodmFyIHZlPVBbX2UubGVuZ3RoLTFdLE1lPTEwNCxqZT1fZS5sZW5ndGgtMTtqZT49MDstLWplKWZvcih2YXIgVWU9X2VbamVdLFhlPTA7NyE9WGU7KytY''@;'; put 'put ''ZSk2NCZVZSYmKHZlXj1EW01lXSksVWUqPTIsLS1NZTtyZXR1cm4gdmV9KE1lKSxVZT1NZS5sZW5ndGgsWGU9WSgxNiksaXQ9MDsxNiE9aXQ7KytpdClYZVtpdF09MDt2YXIgdXQ7Zm9yKDE9PSgxJlVlKSYmKFhlW1VlXT1vZSh3WzBdLGplPj44KSxYZVstLVVlXT1vZShNZVtNZS5sZW5ndGgt''@;'; put 'put ''MV0sMjU1JmplKSk7VWU+MDspWGVbLS1VZV09b2UoTWVbVWVdLGplPj44KSxYZVstLVVlXT1vZShNZVtVZV0sMjU1JmplKTtmb3IoVWU9MTUsdXQ9MTUtTWUubGVuZ3RoO3V0PjA7KVhlW1VlXT1vZSh3W3V0XSxqZT4+OCksLS11dCxYZVstLVVlXT1vZShNZVtVZV0sMjU1JmplKSwtLVVlLC0t''@;'; put 'put ''dXQ7cmV0dXJuIFhlfX0oKTt2YXIgZDg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB3KG9lLGdlKXtzd2l0Y2goZ2UudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBQKGxlLmRlY29kZShvZSksZ2UpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gUChvZSxnZSk7Y2FzZSJidWZmZXIiOnJldHVybiBQKG9lLnRv''@;'; put 'put ''U3RyaW5nKCJiaW5hcnkiKSxnZSk7Y2FzZSJhcnJheSI6cmV0dXJuIFAoQXQob2UpLGdlKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrZ2UudHlwZSl9ZnVuY3Rpb24gUChvZSxnZSl7dmFyIHZlPShnZXx8e30pLmRlbnNlP1tdOnt9O2lmKCFvZS5tYXRjaCgvXFx0cm93''@;'; put 'put ''ZC8pKXRocm93IG5ldyBFcnJvcigiUlRGIG1pc3NpbmcgdGFibGUiKTtyZXR1cm4gdmVbIiFyZWYiXT1Wbyh7czp7YzowLHI6MH0sZTp7YzowLHI6MH19KSx2ZX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gRChvZSxnZSl7cmV0dXJuIFpmKHcob2UsZ2UpLGdlKX0sdG9fc2hlZXQ6dyxm''@;'; put 'put ''cm9tX3NoZWV0OmZ1bmN0aW9uIGVlKG9lKXtmb3IodmFyIHZlLGdlPVsie1xccnRmMVxcYW5zaSJdLF9lPVBpKG9lWyIhcmVmIl0pLE1lPUFycmF5LmlzQXJyYXkob2UpLGplPV9lLnMucjtqZTw9X2UuZS5yOysramUpe2dlLnB1c2goIlxcdHJvd2RcXHRyYXV0b2ZpdDEiKTtmb3IodmFyIFVl''@;'; put 'put ''PV9lLnMuYztVZTw9X2UuZS5jOysrVWUpZ2UucHVzaCgiXFxjZWxseCIrKFVlKzEpKTtmb3IoZ2UucHVzaCgiXFxwYXJkXFxpbnRibCIpLFVlPV9lLnMuYztVZTw9X2UuZS5jOysrVWUpe3ZhciBYZT1waSh7cjpqZSxjOlVlfSk7KHZlPU1lPyhvZVtqZV18fFtdKVtVZV06b2VbWGVdKSYmKG51''@;'; put 'put ''bGwhPXZlLnZ8fHZlLmYmJiF2ZS5GKSYmKGdlLnB1c2goIiAiKyh2ZS53fHwobWModmUpLHZlLncpKSksZ2UucHVzaCgiXFxjZWxsIikpfWdlLnB1c2goIlxccGFyZFxcaW50YmxcXHJvdyIpfXJldHVybiBnZS5qb2luKCIiKSsifSJ9fX0oKTtmdW5jdGlvbiBTMih3KXt2YXIgUD13LnNsaWNl''@;'; put 'put ''KCIjIj09PXdbMF0/MTowKS5zbGljZSgwLDYpO3JldHVybltwYXJzZUludChQLnNsaWNlKDAsMiksMTYpLHBhcnNlSW50KFAuc2xpY2UoMiw0KSwxNikscGFyc2VJbnQoUC5zbGljZSg0LDYpLDE2KV19ZnVuY3Rpb24gZmYodyl7Zm9yKHZhciBQPTAsRD0xOzMhPVA7KytQKUQ9MjU2KkQrKHdb''@;'; put 'put ''UF0+MjU1PzI1NTp3W1BdPDA/MDp3W1BdKTtyZXR1cm4gRC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKX1mdW5jdGlvbiBzMSh3LFApe2lmKG51bGw9PXcpcmV0dXJuIG51bGwhPVA7aWYobnVsbD09UClyZXR1cm4hMDtpZigxPT13LmF1dG8mJjE9PVAuYXV0bylyZXR1cm4h''@;'; put 'put ''MTtpZighIXcuYXV0byE9ISFQLmF1dG98fG51bGw9PXcudGhlbWUhPShudWxsPT1QLnRoZW1lKSlyZXR1cm4hMDtpZihudWxsIT13LnRoZW1lKXJldHVybiB3LnRoZW1lIT1QLnRoZW1lfHx3LnRpbnQhPVAudGludDtpZihudWxsPT13LnJnYiYmbnVsbD09UC5yZ2IpcmV0dXJuITE7dmFyIEQ9''@;'; put 'put ''dy5yZ2I7Im51bWJlciI9PXR5cGVvZiBEJiYoRD1ELnRvU3RyaW5nKDE2KSksRD1ELnNsaWNlKC02KTt2YXIgZWU9UC5yZ2I7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlZSYmKGVlPWVlLnRvU3RyaW5nKDE2KSksZWU9ZWUuc2xpY2UoLTYpLEQudG9Mb3dlckNhc2UoKSE9ZWUudG9Mb3dlckNh''@;'; put 'put ''c2UoKX1mdW5jdGlvbiBoOCh3LFApe3JldHVybiBudWxsPT13P251bGwhPVA6bnVsbD09UD9udWxsIT13Oncuc3R5bGUhPVAuc3R5bGV8fHMxKHcuY29sb3IsUC5jb2xvcil9ZnVuY3Rpb24gaWQodyxQKXtpZigwPT09UClyZXR1cm4gdzt2YXIgRD1mdW5jdGlvbiBrMCh3KXt2YXIgUD13WzBd''@;'; put 'put ''LzI1NSxEPXdbMV0vMjU1LGVlPXdbMl0vMjU1LG9lPU1hdGgubWF4KFAsRCxlZSksZ2U9TWF0aC5taW4oUCxELGVlKSxfZT1vZS1nZTtpZigwPT09X2UpcmV0dXJuWzAsMCxQXTt2YXIgTWUsdmU9MCxqZT1vZStnZTtzd2l0Y2goTWU9X2UvKGplPjE/Mi1qZTpqZSksb2Upe2Nhc2UgUDp2ZT0o''@;'; put 'put ''KEQtZWUpL19lKzYpJTY7YnJlYWs7Y2FzZSBEOnZlPShlZS1QKS9fZSsyO2JyZWFrO2Nhc2UgZWU6dmU9KFAtRCkvX2UrNH1yZXR1cm5bdmUvNixNZSxqZS8yXX0oUzIodykpO3JldHVybiBEWzJdPVA8MD9EWzJdKigxK1ApOjEtKDEtRFsyXSkqKDEtUCksZmYoZnVuY3Rpb24gUm0odyl7dmFy''@;'; put 'put ''IE1lLEQ9d1sxXSxlZT13WzJdLG9lPTIqRCooZWU8LjU/ZWU6MS1lZSksZ2U9ZWUtb2UvMixfZT1bZ2UsZ2UsZ2VdLHZlPTYqd1swXTtpZigwIT09RClzd2l0Y2goMHx2ZSl7Y2FzZSAwOmNhc2UgNjpNZT1vZSp2ZSxfZVswXSs9b2UsX2VbMV0rPU1lO2JyZWFrO2Nhc2UgMTpfZVswXSs9TWU9''@;'; put 'put ''b2UqKDItdmUpLF9lWzFdKz1vZTticmVhaztjYXNlIDI6TWU9b2UqKHZlLTIpLF9lWzFdKz1vZSxfZVsyXSs9TWU7YnJlYWs7Y2FzZSAzOl9lWzFdKz1NZT1vZSooNC12ZSksX2VbMl0rPW9lO2JyZWFrO2Nhc2UgNDpNZT1vZSoodmUtNCksX2VbMl0rPW9lLF9lWzBdKz1NZTticmVhaztjYXNl''@;'; put 'put ''IDU6X2VbMl0rPU1lPW9lKig2LXZlKSxfZVswXSs9b2V9Zm9yKHZhciBqZT0wOzMhPWplOysramUpX2VbamVdPU1hdGgucm91bmQoMjU1Kl9lW2plXSk7cmV0dXJuIF9lfShEKSl9dmFyIEJ4PTYsX3M9Qng7ZnVuY3Rpb24gSXUodyl7cmV0dXJuIE1hdGguZmxvb3IoKHcrTWF0aC5yb3VuZCgx''@;'; put 'put ''MjgvX3MpLzI1NikqX3MpfWZ1bmN0aW9uIE0yKHcpe3JldHVybiBNYXRoLmZsb29yKCh3LTUpL19zKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIG9kKHcpe3JldHVybiBNYXRoLnJvdW5kKCh3Kl9zKzUpL19zKjI1NikvMjU2fWZ1bmN0aW9uIF9jKHcpe3cuYmVzdEZpdCYmZGVsZXRlIHcuYmVzdEZp''@;'; put 'put ''dCx3LndpZHRoPyh3LndweD1JdSh3LndpZHRoKSx3LndjaD1NMih3LndweCksdy5NRFc9X3MpOncud3B4Pyh3LndjaD1NMih3LndweCksdy53aWR0aD1vZCh3LndjaCksdy5NRFc9X3MpOiJudW1iZXIiPT10eXBlb2Ygdy53Y2gmJih3LndpZHRoPW9kKHcud2NoKSx3LndweD1JdSh3LndpZHRo''@;'; put 'put ''KSx3Lk1EVz1fcyksdy5jdXN0b21XaWR0aCYmZGVsZXRlIHcuY3VzdG9tV2lkdGh9dmFyIHBfPTk2LGsyPXBfO2Z1bmN0aW9uIHVoKHcpe3JldHVybiA3Mip3L2syfWZ1bmN0aW9uIGRmKHcpe3JldHVybiB3KmsyLzcyfWZ1bmN0aW9uIHA4KHcpe2syPXc9e29zeDo3Mix3aW46OTYsd2luMTAw''@;'; put 'put ''Ojk2LHdpbjEyNToxMjAsd2luMTUwOjE0NH1bd118fHd8fHBfLGc4PUUwW3ddfWZ1bmN0aW9uIFNwKHcpe3cuaHB4P3cuaHB0PXVoKHcuaHB4KTp3LmhwdCYmKHcuaHB4PWRmKHcuaHB0KSl9dmFyIExtPXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3Jh''@;'; put 'put ''eTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0Rp''@;'; put 'put ''YWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn0sc0g9d2UoTG0pLGNoPXtvcmFu''@;'; put 'put ''Z2U6MTY3NTM5MjAsYmxhY2s6MCxuYXZ5OjEyOCxibHVlOjI1NSxncmVlbjozMjc2OCx0ZWFsOjMyODk2LGxpbWU6NjUyODAsYXF1YTo2NTUzNSxzaWx2ZXI6MTI2MzIyNTYsbWFyb29uOjgzODg2MDgscHVycGxlOjgzODg3MzYsb2xpdmU6ODQyMTM3NixncmF5Ojg0MjE1MDQscmVkOjE2NzEx''@;'; put 'put ''NjgwLGZ1Y2hzaWE6MTY3MTE5MzUseWVsbG93OjE2Nzc2OTYwLHdoaXRlOjE2Nzc3MjE1fTtmdW5jdGlvbiBQbSh3LFApe2lmKHcucmVwbGFjZSgiIyIsIiIpLm1hdGNoKC9eWzAtOWEtZkEtRl17Nn0kLykpcmV0dXJuIHBhcnNlSW50KHcucmVwbGFjZSgiIyIsIiIpLDE2KTtpZihjaFt3XSly''@;'; put 'put ''ZXR1cm4gY2hbd107dmFyIEQ9dy5tYXRjaCgvcmdiXChccyooXGQqKVxzKixccyooXGQqKVxzKixccyooXGQqKVxzKlwpLyk7aWYoRClyZXR1cm4oK0RbMV08PDE2KSsoK0RbMl08PDgpKyArRFszXTtpZihEPXcubWF0Y2goL3JnYmFcKFxzKihcZCopXHMqLFxzKihcZCopXHMqLFxzKihcZCop''@;'; put 'put ''XHMqKFxkKikvKSlyZXR1cm4gMCE9KERbNF0mJkRbNF0ubGVuZ3RoPjAmJitEWzRdfHwwKXx8K0RbMV0+MHx8K0RbMl0+MHx8K0RbM10+MD8oK0RbMV08PDE2KSsoK0RbMl08PDgpKyArRFszXTpQPy0xOjE2Nzc3MjE1O3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBIVE1MIGNvbG9yICIrdyl9''@;'; put 'put ''dmFyIEUwPXt9O2Z1bmN0aW9uIG04KHcpe3c9d3x8OTY7dmFyIFA9e0NhbGlicmk6W10sQXJpYWw6W10sIlNwYXJrYXNzZSBSZyI6W10sXHU1YjhiXHU0ZjUzOltdLFx1NmUzOFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZjpbXSwiQ2VudHVyeSBHb3RoaWMiOltdfTtyZXR1cm4gUC5DYWxpYnJp''@;'; put 'put ''WzExXT03LFAuQ2FsaWJyaVsxMl09ezcyOjYsOTY6OCwxMjA6MTAsMTQ0OjEyfVt3XXx8OCxQLkNhbGlicmlbMTNdPTEwLFAuQ2FsaWJyaVsxNF09MTEsUC5DYWxpYnJpWzE2XT0xMixQLkNhbGlicmlbMThdPTE0LFAuQ2FsaWJyaVsyMF09MTYsUC5cdTViOGJcdTRmNTNbMTFdPTgsUC5cdTZl''@;'; put 'put ''MzhcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWZbMTFdPTgsUFsiU3Bhcmthc3NlIFJnIl1bMTFdPTcsUC5BcmlhbFsxMF09NyxQWyJDZW50dXJ5IEdvdGhpYyJdWzEyXT05LFB9RTBbNzJdPW04KDcyKSxFMFs5Nl09bTgoOTYpLEUwWzEyMF09bTgoMTIwKSxFMFsxNDRdPW04KDE0NCk7dmFyIGc4''@;'; put 'put ''PUUwWzk2XTtmdW5jdGlvbiB2OCh3KXtyZXR1cm4oZzhbdy5uYW1lfHx3LkZvbnROYW1lXXx8W10pW3cuc3p8fHcuU2l6ZV19ZnVuY3Rpb24gaGYodyl7aWYodyl7dmFyIFA9djgodyk7aWYoUClyZXR1cm4gX3M9UH1yZXR1cm4gX3M9Nn1mdW5jdGlvbiBtXyh3LFAsRCl7cmV0dXJuIGZmKGZ1''@;'; put 'put ''bmN0aW9uIHp4KHcsUCxEKXtyZXR1cm5bTWF0aC5yb3VuZChQWzBdKkQrd1swXSooMS1EKSksTWF0aC5yb3VuZChQWzFdKkQrd1sxXSooMS1EKSksTWF0aC5yb3VuZChQWzJdKkQrd1syXSooMS1EKSldfShTMigibnVtYmVyIj09dHlwZW9mIHcucmdiPygiMDAwMDAiK3cudG9TdHJpbmcoMTYp''@;'; put 'put ''KS5zbGljZSgtNik6dy5yZ2IpLFMyKCJudW1iZXIiPT10eXBlb2YgUC5yZ2I/KCIwMDAwMCIrUC50b1N0cmluZygxNikpLnNsaWNlKC02KTpQLnJnYiksRCkpfWZ1bmN0aW9uIHk4KHcsUCxEKXtpZihEKXN3aXRjaCgrdyl7Y2FzZSA2NDp3PTY1O2JyZWFrO2Nhc2UgNjU6dz02NH12YXIgZWU9''@;'; put 'put ''UCYmUFsrd118fFNyWyt3XXx8VmxbK3ctMjAwXTtpZig4MT09K3cmJihlZT1TclsxXSksZWV8fChlZT1TclsxXSksIWVlKXRocm93IG5ldyBFcnJvcigiYmFkIElDViBpbmRleCAiK3cpO3JldHVybiBmZihlZSl9ZnVuY3Rpb24gZmgodyxQLEQpe3ZhciBlZT17fTtyZXR1cm4gbnVsbCE9dy5p''@;'; put 'put ''bmRleGVkJiYoZWUuaW5kZXg9cGFyc2VJbnQody5pbmRleGVkLDEwKSxlZS5yZ2I9eTgoZWUuaW5kZXgsUC5JbmRleGVkKSksbnVsbCE9dy50aGVtZSYmKGVlLnRoZW1lPXBhcnNlSW50KHcudGhlbWUsMTApKSxudWxsIT13LnRpbnQmJihlZS50aW50PXBhcnNlRmxvYXQody50aW50KSksbnVs''@;'; put 'put ''bCE9dy5yZ2ImJihlZS5yZ2I9dy5yZ2Iuc2xpY2UoLTYpKSxudWxsIT1lZS50aGVtZSYmIWVlLnJnYiYmRC50aGVtZUVsZW1lbnRzJiYoZWUucmdiPWlkKEQudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbZWUudGhlbWVdLnJnYixlZS50aW50fHwwKSxlZS5yYXdfcmdiPUQudGhlbWVFbGVtZW50''@;'; put 'put ''cy5jbHJTY2hlbWVbZWUudGhlbWVdLnJnYiksZWV9ZnVuY3Rpb24gTXAodyxQLEQsZWUpe1AuQm9yZGVycz1bXTt2YXIgb2U9e30sZ2U9e30sX2U9ITE7KHdbMF0ubWF0Y2gocXQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2ZSl7dmFyIE1lPWNuKHZlKTtzd2l0Y2goam4oTWVbMF0pKXtjYXNl''@;'; put 'put ''Ijxib3JkZXJzIjpjYXNlIjxib3JkZXJzPiI6Y2FzZSI8L2JvcmRlcnM+IjpjYXNlIjwvYm9yZGVyPiI6Y2FzZSI8bGVmdC8+IjpjYXNlIjwvbGVmdD4iOmNhc2UiPHJpZ2h0Lz4iOmNhc2UiPC9yaWdodD4iOmNhc2UiPHRvcC8+IjpjYXNlIjwvdG9wPiI6Y2FzZSI8Ym90dG9tLz4iOmNhc2Ui''@;'; put 'put ''PC9ib3R0b20+IjpjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9udGFsPiI6Y2FzZSI8aG9yaXpvbnRhbC8+IjpjYXNlIjx2ZXJ0aWNhbCI6Y2FzZSI8dmVydGljYWw+IjpjYXNlIjx2ZXJ0aWNh''@;'; put 'put ''bC8+IjpjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjpjYXNlIjxzdGFydC8+IjpjYXNlIjwvc3RhcnQ+IjpjYXNlIjxlbmQiOmNhc2UiPGVuZD4iOmNhc2UiPGVuZC8+IjpjYXNlIjwvZW5kPiI6Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRM''@;'; put 'put ''c3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6b2U9e30sTWUuZGlhZ29uYWxVcCYmKG9lLmRpYWdvbmFsVXA9X3IoTWUuZGlhZ29uYWxVcCkpLE1lLmRpYWdvbmFsRG93biYmKG9lLmRpYWdvbmFsRG93bj1fcihN''@;'; put 'put ''ZS5kaWFnb25hbERvd24pKSxQLkJvcmRlcnMucHVzaChvZSk7YnJlYWs7Y2FzZSI8bGVmdCI6Y2FzZSI8bGVmdD4iOmdlPW9lLmxlZnQ9e30sTWUuc3R5bGUmJihnZS5zdHlsZT1NZS5zdHlsZSk7YnJlYWs7Y2FzZSI8cmlnaHQiOmNhc2UiPHJpZ2h0PiI6Z2U9b2UucmlnaHQ9e30sTWUuc3R5''@;'; put 'put ''bGUmJihnZS5zdHlsZT1NZS5zdHlsZSk7YnJlYWs7Y2FzZSI8dG9wIjpjYXNlIjx0b3A+IjpnZT1vZS50b3A9e30sTWUuc3R5bGUmJihnZS5zdHlsZT1NZS5zdHlsZSk7YnJlYWs7Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpnZT1vZS5ib3R0b209e30sTWUuc3R5bGUmJihnZS5zdHls''@;'; put 'put ''ZT1NZS5zdHlsZSk7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6b2UuZGlhZ29uYWw9Z2UsZ2U9e307YnJlYWs7Y2FzZSI8L2hvcml6b250YWw+IjpvZS5ob3Jpem9udGFsPWdlLGdlPXt9O2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOm9lLnZlcnRpY2FsPWdlLGdlPXt9O2JyZWFrO2Nhc2UiPGNv''@;'; put 'put ''bG9yIjpjYXNlIjxjb2xvcj4iOmdlLmNvbG9yfHwoZ2UuY29sb3I9e30pLE1lLmF1dG8mJihnZS5jb2xvci5hdXRvPV9yKE1lLmF1dG8pKSxudWxsIT1NZS5yZ2I/Z2UuY29sb3IucmdiPU1lLnJnYi5zbGljZSgtNik6TWUuaW5kZXhlZD8oZ2UuY29sb3IuaW5kZXg9cGFyc2VJbnQoTWUuaW5k''@;'; put 'put ''ZXhlZCwxMCksZ2UuY29sb3IucmdiPXk4KGdlLmNvbG9yLmluZGV4LFAuSW5kZXhlZCwhMSkpOk1lLnRoZW1lJiYoZ2UuY29sb3IudGhlbWU9cGFyc2VJbnQoTWUudGhlbWUsMTApLE1lLnRpbnQmJihnZS5jb2xvci50aW50PXBhcnNlRmxvYXQoTWUudGludCkpLE1lLnRoZW1lJiZELnRoZW1l''@;'; put 'put ''RWxlbWVudHMmJkQudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUmJihnZS5jb2xvci5yZ2I9aWQoRC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtnZS5jb2xvci50aGVtZV0ucmdiLGdlLmNvbG9yLnRpbnR8fDApKSksIU1lLmF1dG8mJm51bGw9PU1lLnJnYiYmIU1lLmluZGV4ZWQmJmRlbGV0ZSBn''@;'; put 'put ''ZS5jb2xvcjticmVhaztjYXNlIjxleHQiOl9lPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpfZT0hMTticmVhaztkZWZhdWx0OmlmKGVlJiZlZS5XVEYmJiFfZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK01lWzBdKyIgaW4gYm9yZGVycyIpfX0pfWZ1bmN0aW9uIGtwKHcsUCl7dmFy''@;'; put 'put ''IEQ9WyI8IitQXTtyZXR1cm4gdyYmdy5zdHlsZT8oRC5wdXNoKCcgc3R5bGU9Iicrdy5zdHlsZSsnIicpLHcuY29sb3I/KEQucHVzaCgiPiIpLEQucHVzaChsZCh3LmNvbG9yLCEwKSksRC5qb2luKCIiKSsiPC8iK1ArIj4iKTpELmpvaW4oIiIpKyIvPiIpOkRbMF0rIi8+In1mdW5jdGlvbiBn''@;'; put 'put ''Xyh3LFAsRCxlZSl7UC5GaWxscz1bXTt2YXIgb2U9e30sZ2U9e30sX2U9ITEsdmU9ITE7KHdbMF0ubWF0Y2gocXQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihNZSl7dmFyIGplPWNuKE1lKTtzd2l0Y2goam4oamVbMF0pKXtjYXNlIjxmaWxscyI6Y2FzZSI8ZmlsbHM+IjpjYXNlIjwvZmlsbHM+''@;'; put 'put ''IjpjYXNlIjwvZmlsbD4iOmNhc2UiPC9ncmFkaWVudEZpbGw+IjpjYXNlIjxiZ0NvbG9yLz4iOmNhc2UiPC9iZ0NvbG9yPiI6Y2FzZSI8ZmdDb2xvci8+IjpjYXNlIjwvZmdDb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmNhc2UiPHN0b3AvPiI6Y2FzZSI8ZXh0THN0Ijpj''@;'; put 'put ''YXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZmlsbD4iOmNhc2UiPGZpbGwiOmNhc2UiPGZpbGwvPiI6UC5GaWxscy5wdXNoKG9lPXt9KTticmVhaztjYXNlIjxncmFkaWVudEZpbGw+IjpvZS5zdG9wcz1bXTticmVhaztjYXNlIjxncmFkaWVudEZpbGwiOm9lLnN0''@;'; put 'put ''b3BzPVtdLGplLmRlZ3JlZSYmKG9lLmFuZ2xlPStqZS5kZWdyZWUpO2JyZWFrO2Nhc2UiPHBhdHRlcm5GaWxsIjpjYXNlIjxwYXR0ZXJuRmlsbD4iOmplLnBhdHRlcm5UeXBlJiYob2UucGF0dGVyblR5cGU9amUucGF0dGVyblR5cGUpO2JyZWFrO2Nhc2UiPHBhdHRlcm5GaWxsLz4iOmNhc2Ui''@;'; put 'put ''PC9wYXR0ZXJuRmlsbD4iOmlmKF9lKXRocm93IG5ldyBFcnJvcigiYmFkIHN0b3AiKTticmVhaztjYXNlIjxjb2xvciI6Y2FzZSI8YmdDb2xvciI6Y2FzZSI8ZmdDb2xvciI6dmFyIFVlPWpuKGplWzBdKS5zbGljZSgxKTsiY29sb3IiIT1VZSYmIW9lW1VlXSYmKG9lW1VlXT17fSk7dmFyIFhl''@;'; put 'put ''PV9lP2dlOm9lW1VlXTtudWxsIT1qZS5pbmRleGVkJiYoWGUuaW5kZXg9cGFyc2VJbnQoamUuaW5kZXhlZCwxMCksWGUucmdiPXk4KFhlLmluZGV4LFAuSW5kZXhlZCkpLG51bGwhPWplLnRoZW1lJiYoWGUudGhlbWU9cGFyc2VJbnQoamUudGhlbWUsMTApKSxudWxsIT1qZS50aW50JiYoWGUu''@;'; put 'put ''dGludD1wYXJzZUZsb2F0KGplLnRpbnQpKSxudWxsIT1qZS5yZ2ImJihYZS5yZ2I9amUucmdiLnNsaWNlKC02KSksbnVsbCE9amUuYXV0byYmZGVsZXRlIG9lW1VlXSxudWxsIT1YZS50aGVtZSYmIVhlLnJnYiYmRC50aGVtZUVsZW1lbnRzJiYoWGUucmdiPWlkKEQudGhlbWVFbGVtZW50cy5j''@;'; put 'put ''bHJTY2hlbWVbWGUudGhlbWVdLnJnYixYZS50aW50fHwwKSxlZS5XVEYmJihYZS5yYXdfcmdiPUQudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbWGUudGhlbWVdLnJnYikpO2JyZWFrO2Nhc2UiPHN0b3A+IjpfZT0hMCxnZT17fTticmVhaztjYXNlIjxzdG9wIjpfZT0hMCxnZT17fSxudWxsIT1q''@;'; put 'put ''ZS5wb3NpdGlvbiYmKGdlLnY9cGFyc2VGbG9hdChqZS5wb3NpdGlvbikpO2JyZWFrO2Nhc2UiPC9zdG9wPiI6X2U9ITEsb2Uuc3RvcHMucHVzaChnZSk7YnJlYWs7Y2FzZSI8ZXh0Ijp2ZT0hMDticmVhaztjYXNlIjwvZXh0PiI6dmU9ITE7YnJlYWs7ZGVmYXVsdDppZihlZSYmZWUuV1RGJiYh''@;'; put 'put ''dmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitqZVswXSsiIGluIGZpbGxzIil9fSl9ZnVuY3Rpb24gY0godyxQLEQsZWUpe1AuRm9udHM9W107dmFyIG9lPXt9LGdlPSExOyh3WzBdLm1hdGNoKHF0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oX2Upe3ZhciB2ZT1jbihfZSk7c3dp''@;'; put 'put ''dGNoKGpuKHZlWzBdKSl7Y2FzZSI8Zm9udHMiOmNhc2UiPGZvbnRzPiI6Y2FzZSI8L2ZvbnRzPiI6YnJlYWs7Y2FzZSI8Zm9udCI6Y2FzZSI8Zm9udD4iOmlmKCIvPiIhPV9lLnNsaWNlKC0yKSlicmVhaztjYXNlIjwvZm9udD4iOmNhc2UiPGZvbnQvPiI6UC5Gb250cy5wdXNoKG9lKSxvZT17''@;'; put 'put ''fTticmVhaztjYXNlIjxuYW1lIjp2ZS52YWwmJihvZS5uYW1lPUZpKHZlLnZhbCkpO2JyZWFrO2Nhc2UiPG5hbWUvPiI6Y2FzZSI8L25hbWU+IjpicmVhaztjYXNlIjxiIjpvZS5ib2xkPXZlLnZhbD9fcih2ZS52YWwpOjE7YnJlYWs7Y2FzZSI8Yi8+IjpjYXNlIjxiPiI6b2UuYm9sZD0xO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6b2UuaXRhbGljPXZlLnZhbD9fcih2ZS52YWwpOjE7YnJlYWs7Y2FzZSI8aS8+IjpjYXNlIjxpPiI6b2UuaXRhbGljPTE7YnJlYWs7Y2FzZSI8L2k+IjpicmVhaztjYXNlIjx1Ijpzd2l0Y2godmUudmFsKXtjYXNlIm5vbmUiOm9lLnVuZGVy''@;'; put 'put ''bGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjpvZS51bmRlcmxpbmU9MTticmVhaztjYXNlImRvdWJsZSI6b2UudW5kZXJsaW5lPTI7YnJlYWs7Y2FzZSJzaW5nbGVBY2NvdW50aW5nIjpvZS51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjpvZS51bmRlcmxpbmU9MzR9''@;'; put 'put ''YnJlYWs7Y2FzZSI8dS8+IjpjYXNlIjx1PiI6b2UudW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxzdHJpa2UiOm9lLnN0cmlrZT12ZS52YWw/X3IodmUudmFsKToxO2JyZWFrO2Nhc2UiPHN0cmlrZS8+IjpvZS5zdHJpa2U9MTticmVhaztjYXNlIjxvdXRsaW5lIjpv''@;'; put 'put ''ZS5vdXRsaW5lPXZlLnZhbD9fcih2ZS52YWwpOjE7YnJlYWs7Y2FzZSI8b3V0bGluZS8+IjpvZS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8c2hhZG93IjpvZS5zaGFkb3c9dmUudmFsP19yKHZlLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6b2Uuc2hhZG93PTE7YnJlYWs7Y2FzZSI8Y29u''@;'; put 'put ''ZGVuc2UiOm9lLmNvbmRlbnNlPXZlLnZhbD9fcih2ZS52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6b2UuY29uZGVuc2U9MTticmVhaztjYXNlIjxleHRlbmQiOm9lLmV4dGVuZD12ZS52YWw/X3IodmUudmFsKToxO2JyZWFrO2Nhc2UiPGV4dGVuZC8+IjpvZS5leHRlbmQ9MTticmVh''@;'; put 'put ''aztjYXNlIjxzeiI6dmUudmFsJiYob2Uuc3o9K3ZlLnZhbCk7YnJlYWs7Y2FzZSI8c3ovPiI6Y2FzZSI8L3N6PiI6YnJlYWs7Y2FzZSI8dmVydEFsaWduIjoibm9uZSIhPSh2ZS52YWx8fCJub25lIikmJihvZS52YWxpZ249dmUudmFsLnJlcGxhY2UoInNjcmlwdCIsIiIpKTticmVhaztjYXNl''@;'; put 'put ''Ijx2ZXJ0QWxpZ24vPiI6Y2FzZSI8L3ZlcnRBbGlnbj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6dmUudmFsJiYob2UuZmFtaWx5PXBhcnNlSW50KHZlLnZhbCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjp2ZS52YWwmJihvZS5z''@;'; put 'put ''Y2hlbWU9dmUudmFsKTticmVhaztjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09dmUudmFsKWJyZWFrO3ZlLmNvZGVwYWdlPUlbcGFyc2VJbnQodmUudmFsLDEwKV07YnJlYWs7Y2FzZSI8Y29sb3IiOm9lLmNvbG9yfHwob2UuY29s''@;'; put 'put ''b3I9e30pLHZlLmF1dG8mJihvZS5jb2xvci5hdXRvPV9yKHZlLmF1dG8pKSx2ZS5yZ2I/b2UuY29sb3IucmdiPXZlLnJnYi5zbGljZSgtNik6dmUuaW5kZXhlZD8ob2UuY29sb3IuaW5kZXg9cGFyc2VJbnQodmUuaW5kZXhlZCwxMCksb2UuY29sb3IucmdiPXk4KG9lLmNvbG9yLmluZGV4LFAu''@;'; put 'put ''SW5kZXhlZCkpOnZlLnRoZW1lJiYob2UuY29sb3IudGhlbWU9cGFyc2VJbnQodmUudGhlbWUsMTApLHZlLnRpbnQmJihvZS5jb2xvci50aW50PXBhcnNlRmxvYXQodmUudGludCkpLHZlLnRoZW1lJiZELnRoZW1lRWxlbWVudHMmJkQudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUmJihvZS5jb2xv''@;'; put 'put ''ci5yZ2I9aWQoRC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtvZS5jb2xvci50aGVtZV0ucmdiLG9lLmNvbG9yLnRpbnR8fDApKSk7YnJlYWs7Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6YnJlYWs7Y2FzZSI8QWx0ZXJuYXRlQ29udGVudCI6Z2U9ITA7YnJlYWs7Y2FzZSI8L0FsdGVy''@;'; put 'put ''bmF0ZUNvbnRlbnQ+IjpnZT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmdlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpnZT0hMTticmVhaztkZWZhdWx0OmlmKGVlJiZlZS5XVEYmJiFnZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoInVucmVjb2duaXplZCAiK3ZlWzBdKyIgaW4gZm9udHMiKX19KX12YXIgYjg9ezA6Im5vbmUiLDE6InNpbmdsZSIsMjoiZG91YmxlIiwzMzoic2luZ2xlQWNjb3VudGluZyIsMzQ6ImRvdWJsZUFjY291bnRpbmcifSxhZD1bIm51bUZtdElkIiwiZmlsbElkIiwiZm9udElkIiwiYm9yZGVy''@;'; put 'put ''SWQiLCJ4ZklkIl0sZGg9WyJhcHBseUFsaWdubWVudCIsImFwcGx5Qm9yZGVyIiwiYXBwbHlGaWxsIiwiYXBwbHlGb250IiwiYXBwbHlOdW1iZXJGb3JtYXQiLCJhcHBseVByb3RlY3Rpb24iLCJwaXZvdEJ1dHRvbiIsInF1b3RlUHJlZml4Il0sbUg9ZnVuY3Rpb24oKXt2YXIgdz0vPCg/Olx3''@;'; put 'put ''KzopP2ZvbnQoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Zm9udD4vLFA9LzwoPzpcdys6KT9udW1GbXQoW14+XSopXC8+LyxEPS88KD86XHcrOik/ZmlsbChbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9maWxsPi8sb2U9LzwoPzpcdys6KT9ib3JkZXIoW14+XSopPltcU1xzXSo/PFwv''@;'; put 'put ''KD86XHcrOik/Ym9yZGVyPi87cmV0dXJuIGZ1bmN0aW9uKHZlLE1lLGplLFVlKXt2YXIgZnQsTXQsWGU9e30saXQ9e307cmV0dXJuKGZ0PXZlLm1hdGNoKHcpKSYmKGNIKGZ0LFhlLGplLFVlKSwoWGUuRm9udHN8fFtdKVswXSYmTnQoaXQsWGUuRm9udHNbMF0pKSwoZnQ9dmUubWF0Y2goUCkp''@;'; put 'put ''JiYoTXQ9Y24oRmkoZnRbMF0pKSxpdC56PU10LmZvcm1hdENvZGU/RXIoTXQuZm9ybWF0Q29kZSk6KE1lLk51bWJlckZtdHx8W10pWytNdC5udW1GbXRJZF18fCJHZW5lcmFsIiksKGZ0PXZlLm1hdGNoKEQpKSYmKGdfKGZ0LFhlLGplLFVlKSwoWGUuRmlsbHN8fFtdKVswXSYmTnQoaXQsWGUu''@;'; put 'put ''RmlsbHNbMF0pKSwoZnQ9dmUubWF0Y2gob2UpKSYmKE1wKGZ0LFhlLGplLFVlKSwoWGUuQm9yZGVyc3x8W10pWzBdJiZOdChpdCxYZS5Cb3JkZXJzWzBdKSksaXR9fSgpLFpRPS88KD86XHcrOik/ZHhmPltcU1xzXSo/PFwvKD86XHcrOik/ZHhmPi9nLEdRPS88KD86XHcrOik/dGFibGVTdHls''@;'; put 'put ''ZVxiLio/PltcU1xzXSo/PFwvKD86XHcrOik/dGFibGVTdHlsZT4vZzt2YXIgQzg9ZnVuY3Rpb24oKXt2YXIgUD0vPCg/Olx3KzopP251bUZtdHMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/bnVtRm10cz4vLEQ9LzwoPzpcdys6KT9jZWxsU3R5bGVYZnMoW14+XSopPltcU1xzXSo/PFwv''@;'; put 'put ''KD86XHcrOik/Y2VsbFN0eWxlWGZzPi8sZWU9LzwoPzpcdys6KT9jZWxsU3R5bGVzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2NlbGxTdHlsZXM+LyxvZT0vPCg/Olx3KzopP2NlbGxYZnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Y2VsbFhmcz4vLGdlPS88KD86XHcrOik/Zmls''@;'; put 'put ''bHMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/ZmlsbHM+LyxfZT0vPCg/Olx3KzopP2ZvbnRzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZvbnRzPi8sdmU9LzwoPzpcdys6KT9ib3JkZXJzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2JvcmRlcnM+LyxNZT0vPCg/Olx3Kzop''@;'; put 'put ''P2luZGV4ZWRDb2xvcnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/aW5kZXhlZENvbG9ycz4vLGplPS88KD86XHcrOik/dGFibGVTdHlsZXMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/dGFibGVTdHlsZXM+LyxVZT0vPCg/Olx3KzopP2R4ZnMoW14+XSopPltcU1xzXSo/PFwvKD86''@;'; put 'put ''XHcrOik/ZHhmcz4vO3JldHVybiBmdW5jdGlvbihpdCxmdCxNdCl7dmFyIHd0LHV0PXt9O3JldHVybiBpdD8oKHd0PShpdD1pdC5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIikucmVwbGFjZSgvPCFET0NUWVBFW15cW10qXFtbXlxdXSpcXT4vZ20sIiIpKS5tYXRjaChNZSkpJiZm''@;'; put 'put ''dW5jdGlvbiB2Xyh3LFAsRCl7UC5JbmRleGVkfHwoUC5JbmRleGVkPVtdKTt2YXIgZWU9ITE7KHdbMF0ubWF0Y2gocXQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihvZSl7dmFyIGdlPWNuKG9lKTtzd2l0Y2goam4oZ2VbMF0pKXtjYXNlIjxpbmRleGVkQ29sb3JzPiI6Y2FzZSI8aW5kZXhlZENv''@;'; put 'put ''bG9ycyI6Y2FzZSI8aW5kZXhlZENvbG9ycy8+IjpjYXNlIjwvaW5kZXhlZENvbG9ycz4iOmNhc2UiPC9yZ2JDb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHJnYkNvbG9yIjpkZWxldGUgZ2VbMF07dmFyIF9lPXBhcnNlSW50''@;'; put 'put ''KGdlLnJnYi5zbGljZSgtNiksMTYpO1AuSW5kZXhlZC5wdXNoKFtfZT4+MTYmMjU1LF9lPj44JjI1NSwyNTUmX2VdKTticmVhaztjYXNlIjxleHQiOmVlPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjplZT0hMTticmVhaztkZWZhdWx0OmlmKEQmJkQuV1RGJiYhZWUpdGhyb3cgbmV3IEVycm9yKCJ1''@;'; put 'put ''bnJlY29nbml6ZWQgIitnZVswXSsiIGluIGNlbGxTdHlsZXMiKX19KX0od3QsdXQsTXQpLCh3dD1pdC5tYXRjaChQKSkmJmZ1bmN0aW9uIGRIKHcsUCxEKXtQLk51bWJlckZtdD1bXTtmb3IodmFyIGVlPW10KFMuX3RhYmxlKSxvZT0wO29lPGVlLmxlbmd0aDsrK29lKVAuTnVtYmVyRm10W2Vl''@;'; put 'put ''W29lXV09Uy5fdGFibGVbZWVbb2VdXTt2YXIgZ2U9d1swXS5tYXRjaChxdCk7aWYoZ2UpZm9yKG9lPTA7b2U8Z2UubGVuZ3RoOysrb2Upe3ZhciBfZT1jbihnZVtvZV0pO3N3aXRjaChqbihfZVswXSkpe2Nhc2UiPG51bUZtdHMiOmNhc2UiPC9udW1GbXRzPiI6Y2FzZSI8bnVtRm10cy8+Ijpj''@;'; put 'put ''YXNlIjxudW1GbXRzPiI6Y2FzZSI8L251bUZtdD4iOmJyZWFrO2Nhc2UiPG51bUZtdCI6dmFyIHZlPUVyKEZpKF9lLmZvcm1hdENvZGUpKSxNZT1wYXJzZUludChfZS5udW1GbXRJZCwxMCk7aWYoUC5OdW1iZXJGbXRbTWVdPXZlLE1lPjApe2lmKE1lPjM5Mil7Zm9yKE1lPTM5MjtNZT42MCYm''@;'; put 'put ''bnVsbCE9UC5OdW1iZXJGbXRbTWVdOy0tTWUpO1AuTnVtYmVyRm10W01lXT12ZX1TLmxvYWQodmUsTWUpfWJyZWFrO2RlZmF1bHQ6aWYoRC5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitfZVswXSsiIGluIG51bUZtdHMiKX19fSh3dCx1dCxNdCksKHd0PWl0Lm1hdGNoKF9l''@;'; put 'put ''KSkmJmNIKHd0LHV0LGZ0LE10KSwod3Q9aXQubWF0Y2goZ2UpKSYmZ18od3QsdXQsZnQsTXQpLCh3dD1pdC5tYXRjaCh2ZSkpJiZNcCh3dCx1dCxmdCxNdCksKHd0PWl0Lm1hdGNoKEQpKSYmZnVuY3Rpb24gWngodyxQLEQpe1AuQ2VsbFN0eWxlWGY9W107dmFyIGVlLG9lPSExOyh3WzBdLm1h''@;'; put 'put ''dGNoKHF0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oZ2Upe3ZhciBfZT1jbihnZSksdmU9MDtzd2l0Y2goam4oX2VbMF0pKXtjYXNlIjxjZWxsU3R5bGVYZnMiOmNhc2UiPGNlbGxTdHlsZVhmcz4iOmNhc2UiPGNlbGxTdHlsZVhmcy8+IjpjYXNlIjwvY2VsbFN0eWxlWGZzPiI6Y2FzZSI8L3hm''@;'; put 'put ''PiI6Y2FzZSI8L2FsaWdubWVudD4iOmNhc2UiPC9wcm90ZWN0aW9uPiI6Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Zm9yKGRlbGV0ZShlZT1fZSlbMF0sdmU9MDt2ZTxh''@;'; put 'put ''ZC5sZW5ndGg7Kyt2ZSllZVthZFt2ZV1dJiYoZWVbYWRbdmVdXT1wYXJzZUludChlZVthZFt2ZV1dLDEwKSk7Zm9yKHZlPTA7dmU8ZGgubGVuZ3RoOysrdmUpZWVbZGhbdmVdXSYmKGVlW2RoW3ZlXV09X3IoZWVbZGhbdmVdXSkpO2lmKFAuTnVtYmVyRm10JiZlZS5udW1GbXRJZD4zOTIpZm9y''@;'; put 'put ''KHZlPTM5Mjt2ZT42MDstLXZlKWlmKFAuTnVtYmVyRm10W2VlLm51bUZtdElkXT09UC5OdW1iZXJGbXRbdmVdKXtlZS5udW1GbXRJZD12ZTticmVha31QLkNlbGxTdHlsZVhmLnB1c2goZWUpO2JyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOnZhciBNZT17fTtfZS52''@;'; put 'put ''ZXJ0aWNhbCYmKE1lLnZlcnRpY2FsPV9lLnZlcnRpY2FsKSxfZS5ob3Jpem9udGFsJiYoTWUuaG9yaXpvbnRhbD1fZS5ob3Jpem9udGFsKSxudWxsIT1fZS50ZXh0Um90YXRpb24mJihNZS50ZXh0Um90YXRpb249X2UudGV4dFJvdGF0aW9uKSxfZS5pbmRlbnQmJihNZS5pbmRlbnQ9X2UuaW5k''@;'; put 'put ''ZW50KSxfZS53cmFwVGV4dCYmKE1lLndyYXBUZXh0PV9lLndyYXBUZXh0KSxfZS5zaHJpbmtUb0ZpdCYmKE1lLnNocmlua1RvRml0PV9yKF9lLnNocmlua1RvRml0KSksZWUuYWxpZ25tZW50PU1lO2JyZWFrO2Nhc2UiPHByb3RlY3Rpb24iOmVlLnByb3RlY3Rpb249e30sX3IoX2UuaGlkZGVu''@;'; put 'put ''KSYmKGVlLnByb3RlY3Rpb24uaGlkZGVuPSEwKSxudWxsIT1fZS5sb2NrZWQmJihlZS5wcm90ZWN0aW9uLmVkaXRhYmxlPSFfcihfZS5sb2NrZWQpKTticmVhaztjYXNlIjxleHQiOm9lPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpvZT0hMTticmVhaztkZWZhdWx0OmlmKEQmJkQuV1RGJiYhb2Up''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitfZVswXSsiIGluIGNlbGxTdHlsZVhmcyIpfX0pfSh3dCx1dCxNdCksKHd0PWl0Lm1hdGNoKGVlKSkmJmZ1bmN0aW9uIGhIKHcsUCxEKXtQLkNlbGxTdHlsZVhmfHwoUC5DZWxsU3R5bGVYZj1bXSk7dmFyIGVlPSExOyh3WzBdLm1hdGNo''@;'; put 'put ''KHF0KXx8W10pLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBnZT1jbihvZSk7c3dpdGNoKGpuKGdlWzBdKSl7Y2FzZSI8Y2VsbFN0eWxlcyI6Y2FzZSI8Y2VsbFN0eWxlcz4iOmNhc2UiPGNlbGxTdHlsZXMvPiI6Y2FzZSI8L2NlbGxTdHlsZXM+IjpjYXNlIjwveGY+IjpjYXNlIjwvY2VsbFN0''@;'; put 'put ''eWxlPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8Y2VsbFN0eWxlIjpjYXNlIjxjZWxsU3R5bGUvPiI6ZGVsZXRlIGdlWzBdO3ZhciBfZT0rZ2UueGZJZDtpZihQLkNlbGxTdHlsZVhmW19lXSlQLkNlbGxTdHlsZVhmW19lXS5zdHls''@;'; put 'put ''ZT1GaShnZS5uYW1lKTtlbHNlIGlmKCFnZS5idWlsdGluSWQpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBDZWxsU3R5bGUgIitfZSk7YnJlYWs7Y2FzZSI8ZXh0IjplZT0hMDticmVhaztjYXNlIjwvZXh0PiI6ZWU9ITE7YnJlYWs7ZGVmYXVsdDppZihEJiZELldURiYmIWVlKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrZ2VbMF0rIiBpbiBjZWxsU3R5bGVzIil9fSl9KHd0LHV0LE10KSwod3Q9aXQubWF0Y2gob2UpKSYmZnVuY3Rpb24gVXgodyxQLEQpe1AuQ2VsbFhmPVtdO3ZhciBlZSxvZT0hMTsod1swXS5tYXRjaChxdCl8fFtdKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKGdlKXt2YXIgX2U9Y24oZ2UpLHZlPTA7c3dpdGNoKGpuKF9lWzBdKSl7Y2FzZSI8Y2VsbFhmcyI6Y2FzZSI8Y2VsbFhmcz4iOmNhc2UiPGNlbGxYZnMvPiI6Y2FzZSI8L2NlbGxYZnM+IjpjYXNlIjwveGY+IjpjYXNlIjwvYWxpZ25tZW50PiI6Y2FzZSI8L3Byb3RlY3Rpb24+IjpjYXNl''@;'; put 'put ''Ijxwcm90ZWN0aW9uLz4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPHhmIjpjYXNlIjx4Zi8+Ijpmb3IoZGVsZXRlKGVlPV9lKVswXSx2ZT0wO3ZlPGFkLmxlbmd0aDsrK3ZlKWVlW2FkW3ZlXV0mJihlZVthZFt2ZV1dPXBhcnNlSW50''@;'; put 'put ''KGVlW2FkW3ZlXV0sMTApKTtmb3IodmU9MDt2ZTxkaC5sZW5ndGg7Kyt2ZSllZVtkaFt2ZV1dJiYoZWVbZGhbdmVdXT1fcihlZVtkaFt2ZV1dKSk7aWYoUC5OdW1iZXJGbXQmJmVlLm51bUZtdElkPjM5Milmb3IodmU9MzkyO3ZlPjYwOy0tdmUpaWYoUC5OdW1iZXJGbXRbZWUubnVtRm10SWRd''@;'; put 'put ''PT1QLk51bWJlckZtdFt2ZV0pe2VlLm51bUZtdElkPXZlO2JyZWFrfVAuQ2VsbFN0eWxlWGYmJmVlLnhmSWQmJlAuQ2VsbFN0eWxlWGZbZWUueGZJZF0mJlAuQ2VsbFN0eWxlWGZbZWUueGZJZF0uc3R5bGUmJihlZS5zdHlsZT1QLkNlbGxTdHlsZVhmW2VlLnhmSWRdLnN0eWxlKSxQLkNlbGxY''@;'; put 'put ''Zi5wdXNoKGVlKTticmVhaztjYXNlIjxhbGlnbm1lbnQiOmNhc2UiPGFsaWdubWVudC8+Ijp2YXIgTWU9e307X2UudmVydGljYWwmJihNZS52ZXJ0aWNhbD1fZS52ZXJ0aWNhbCksX2UuaG9yaXpvbnRhbCYmKE1lLmhvcml6b250YWw9X2UuaG9yaXpvbnRhbCksbnVsbCE9X2UudGV4dFJvdGF0''@;'; put 'put ''aW9uJiYoTWUudGV4dFJvdGF0aW9uPV9lLnRleHRSb3RhdGlvbiksX2UuaW5kZW50JiYoTWUuaW5kZW50PV9lLmluZGVudCksX2Uud3JhcFRleHQmJihNZS53cmFwVGV4dD1fcihfZS53cmFwVGV4dCkpLF9lLnNocmlua1RvRml0JiYoTWUuc2hyaW5rVG9GaXQ9X3IoX2Uuc2hyaW5rVG9GaXQp''@;'; put 'put ''KSxlZS5hbGlnbm1lbnQ9TWU7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6ZWUucHJvdGVjdGlvbj17fSxfcihfZS5oaWRkZW4pJiYoZWUucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPV9lLmxvY2tlZCYmKGVlLnByb3RlY3Rpb24uZWRpdGFibGU9IV9yKF9lLmxvY2tlZCkpO2JyZWFrO2Nh''@;'; put 'put ''c2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPGV4dCI6b2U9ITA7YnJlYWs7Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpjYXNlIjwvZXh0PiI6b2U9ITE7YnJlYWs7ZGVmYXVsdDppZihEJiZELldURiYmIW9lKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrX2VbMF0rIiBpbiBj''@;'; put 'put ''ZWxsWGZzIil9fSl9KHd0LHV0LE10KSwod3Q9aXQubWF0Y2goVWUpKSYmZnVuY3Rpb24geV8odyxQLEQsZWUpe1AuRFhGfHwoUC5EWEY9W10pLCh3WzBdLm1hdGNoKFpRKXx8W10pLmZvckVhY2goZnVuY3Rpb24ob2Upe1AuRFhGLnB1c2gobUgob2UsUCxELGVlKSl9KX0od3QsdXQsZnQsTXQp''@;'; put 'put ''LCh3dD1pdC5tYXRjaChqZSkpJiZmdW5jdGlvbiAkUSh3LFAsRCxlZSl7UC5UYWJsZXx8KFAuVGFibGU9W10pLCh3WzBdLm1hdGNoKEdRKXx8W10pLmZvckVhY2goZnVuY3Rpb24ob2Upe1AuVGFibGUucHVzaChmdW5jdGlvbiBZUSh3LFAsRCxlZSl7dmFyIG9lPSExLGdlPXt9O3JldHVybih3''@;'; put 'put ''Lm1hdGNoKHF0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oX2Upe3ZhciB2ZT1jbihfZSk7c3dpdGNoKGpuKHZlWzBdKSl7Y2FzZSI8dGFibGVTdHlsZT4iOmNhc2UiPHRhYmxlU3R5bGUiOmdlLm5hbWU9dmUubmFtZS5yZXBsYWNlKC9eKFRhYmxlfFBpdm90KVN0eWxlLywiIiksZ2UucmF3bmFt''@;'; put 'put ''ZT12ZS5uYW1lLGdlLnBpdm90PSF2ZS5waXZvdHx8X3IodmUucGl2b3QpLGdlLnRhYmxlPSF2ZS50YWJsZXx8X3IodmUudGFibGUpO2JyZWFrO2Nhc2UiPHRhYmxlU3R5bGUvPiI6Y2FzZSI8L3RhYmxlU3R5bGU+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+''@;'; put 'put ''IjpicmVhaztjYXNlIjx0YWJsZVN0eWxlRWxlbWVudCI6aWYodmUudHlwZSYmdmUuZHhmSWQpe2lmKCFQLkRYRnx8IVAuRFhGWyt2ZS5keGZJZF0pdGhyb3cgbmV3IEVycm9yKF9lKyIgY2Fubm90IGZpbmQgRFhGIik7Z2VbdmUudHlwZV09UC5EWEZbK3ZlLmR4ZklkXX1icmVhaztjYXNlIjxl''@;'; put 'put ''eHQiOm9lPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpvZT0hMTticmVhaztkZWZhdWx0OmlmKGVlJiZlZS5XVEYmJiFvZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3ZlWzBdKyIgaW4gdGFibGVTdHlsZSIpfX0pLGdlfShvZSxQLDAsZWUpKX0pfSh3dCx1dCwwLE10KSwodXQuRm9u''@;'; put 'put ''dHN8fFtdKVswXSYmaGYodXQuRm9udHNbMF0pLHV0KTp1dH19KCksWXg9TXIoInN0eWxlU2hlZXQiLG51bGwse3htbG5zOnNhLm1haW5bMF0sInhtbG5zOnZ0IjpzYS52dH0pO2Z1bmN0aW9uIFd4KHcsUCl7dmFyIGVlLEQ9W0JuLFl4XTt3LlNTRiYmbnVsbCE9KGVlPWZ1bmN0aW9uIF84KHcp''@;'; put 'put ''e3ZhciBQPVsiPG51bUZtdHM+Il07cmV0dXJuW1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbihEKXtmb3IodmFyIGVlPURbMF07ZWU8PURbMV07KytlZSludWxsIT13W2VlXSYmKFBbUC5sZW5ndGhdPU1yKCJudW1GbXQiLG51bGwse251bUZtdElkOmVl''@;'; put 'put ''LGZvcm1hdENvZGU6QnIod1tlZV0pfSkpfSksMT09PVAubGVuZ3RoPyIiOihQW1AubGVuZ3RoXT0iPC9udW1GbXRzPiIsUFswXT1NcigibnVtRm10cyIsbnVsbCx7Y291bnQ6UC5sZW5ndGgtMn0pLnJlcGxhY2UoIi8+IiwiPiIpLFAuam9pbigiIikpfSh3LlNTRikpJiYoRFtELmxlbmd0aF09''@;'; put 'put ''ZWUpLERbRC5sZW5ndGhdPWZ1bmN0aW9uIGZIKHcpe3ZhciBQPVtdO3JldHVybiB3LmZvckVhY2goZnVuY3Rpb24oRCl7dmFyIGVlPVsiPGZvbnQ+Il07RC5ib2xkJiZlZS5wdXNoKCI8Yi8+IiksRC5pdGFsaWMmJmVlLnB1c2goIjxpLz4iKSxELnN0cmlrZSYmZWUucHVzaCgiPHN0cmlrZS8+''@;'; put 'put ''IiksRC5zaGFkb3cmJmVlLnB1c2goIjxzaGFkb3cvPiIpLGI4WytELnVuZGVybGluZV0mJmVlLnB1c2goJzx1IHZhbD0iJytiOFsrRC51bmRlcmxpbmVdKyciLz4nKSxELnN6JiZlZS5wdXNoKCc8c3ogdmFsPSInK0Quc3orJyIvPicpLEQuY29sb3ImJmVlLnB1c2gobGQoRC5jb2xvciwhMCkp''@;'; put 'put ''LEQubmFtZSYmZWUucHVzaCgnPG5hbWUgdmFsPSInK0QubmFtZSsnIi8+JyksRC5mYW1pbHkmJmVlLnB1c2goJzxmYW1pbHkgdmFsPSInK0QuZmFtaWx5KyciLz4nKSxELnNjaGVtZSYmZWUucHVzaCgnPHNjaGVtZSB2YWw9IicrRC5zY2hlbWUrJyIvPicpLEQudmFsaWduJiZlZS5wdXNoKCc8''@;'; put 'put ''dmVydEFsaWduIHZhbD0iJytELnZhbGlnbisoInN1YiI9PUQudmFsaWdufHwic3VwZXIiPT1ELnZhbGlnbj8ic2NyaXB0IjoiIikrJyIvPicpLFAucHVzaChlZS5qb2luKCIiKSsiPC9mb250PiIpfSksJzxmb250cyBjb3VudD0iJytQLmxlbmd0aCsnIj4nK1Auam9pbigiIikrIjwvZm9udHM+''@;'; put 'put ''In0oKHcuU3R5bGVzfHx7fSkuRm9udHN8fFtdKSxEW0QubGVuZ3RoXT1mdW5jdGlvbiB1SCh3KXt2YXIgUD1bXTtyZXR1cm4gdy5mb3JFYWNoKGZ1bmN0aW9uKEQpe3ZhciBlZT1udWxsO2lmKEQuc3RvcHMmJkQuc3RvcHMubGVuZ3RoKXt2YXIgb2U9e307RC5hbmdsZSYmKG9lLmRlZ3JlZT1N''@;'; put 'put ''YXRoLnJvdW5kKEQuYW5nbGUpKSxlZT1ELnN0b3BzLm1hcChmdW5jdGlvbihnZSl7cmV0dXJuIE1yKCJzdG9wIixsZChnZSwiY29sb3IiLCEwKSxudWxsIT1nZS52P3twb3NpdGlvbjpnZS52fTp7fSl9KSxQLnB1c2goIjxmaWxsPiIrTXIoImdyYWRpZW50RmlsbCIsZWUuam9pbigiIiksb2Up''@;'; put 'put ''KyI8L2ZpbGw+Iil9ZWxzZXtpZihELmZnQ29sb3Ipe2lmKGVlPShlZXx8IiIpKyI8ZmdDb2xvciAiLEQuZmdDb2xvci50aGVtZSllZSs9J3RoZW1lPSInK0QuZmdDb2xvci50aGVtZSsnIicrKEQuZmdDb2xvci50aW50PycgdGludD0iJytELmZnQ29sb3IudGludCsnIic6IiIpKyIvPiI7ZWxz''@;'; put 'put ''ZSBpZihudWxsIT1ELmZnQ29sb3IuaW5kZXgmJm51bGw9PUQuZmdDb2xvci5yZ2IpZWUrPSdpbmRleGVkPSInK0QuZmdDb2xvci5pbmRleCsnIi8+JztlbHNlIGlmKEQuZmdDb2xvci5hdXRvKWVlKz0nYXV0bz0iMSIvPic7ZWxzZXtpZihudWxsPT1ELmZnQ29sb3IucmdiKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiQmFkIGNvbG9yICIrbXQoRC5mZ0NvbG9yKS5qb2luKCJ8IikpO2VlKz0ncmdiPSJGRicrVWMoRC5mZ0NvbG9yLnJnYikrJyIvPid9InNvbGlkIj09RC5wYXR0ZXJuVHlwZSYmIUQuYmdDb2xvciYmKEQuYmdDb2xvcj17aW5kZXg6NjR9KX1pZihELmJnQ29sb3IpaWYoZWU9KGVlfHwi''@;'; put 'put ''IikrIjxiZ0NvbG9yICIsRC5iZ0NvbG9yLnRoZW1lKWVlKz0ndGhlbWU9IicrRC5iZ0NvbG9yLnRoZW1lKyciLz4nO2Vsc2UgaWYobnVsbCE9RC5iZ0NvbG9yLmluZGV4JiZudWxsPT1ELmJnQ29sb3IucmdiKWVlKz0naW5kZXhlZD0iJytELmJnQ29sb3IuaW5kZXgrJyIvPic7ZWxzZSBpZihE''@;'; put 'put ''LmJnQ29sb3IuYXV0byllZSs9J2F1dG89IjEiLz4nO2Vsc2V7aWYobnVsbD09RC5iZ0NvbG9yLnJnYil0aHJvdyBuZXcgRXJyb3IoIkJhZCBjb2xvciAiK210KEQuYmdDb2xvcikuam9pbigifCIpKTtlZSs9J3JnYj0iRkYnK1VjKEQuYmdDb2xvci5yZ2IpKyciLz4nfVAucHVzaCgiPGZpbGw+''@;'; put 'put ''IitNcigicGF0dGVybkZpbGwiLGVlLHtwYXR0ZXJuVHlwZTpELnBhdHRlcm5UeXBlfSkrIjwvZmlsbD4iKX19KSwnPGZpbGxzIGNvdW50PSInK1AubGVuZ3RoKyciPicrUC5qb2luKCIiKSsiPC9maWxscz4ifSgody5TdHlsZXN8fHt9KS5GaWxsc3x8W10pLERbRC5sZW5ndGhdPWZ1bmN0aW9u''@;'; put 'put ''IGpRKHcpe3ZhciBQPVtdO3JldHVybiB3LmZvckVhY2goZnVuY3Rpb24oRCl7dmFyIGVlPVtdO2VlLnB1c2goa3AoRC5sZWZ0LCJsZWZ0IikpLGVlLnB1c2goa3AoRC5yaWdodCwicmlnaHQiKSksZWUucHVzaChrcChELnRvcCwidG9wIikpLGVlLnB1c2goa3AoRC5ib3R0b20sImJvdHRvbSIp''@;'; put 'put ''KSxlZS5wdXNoKGtwKEQuZGlhZ29uYWwsImRpYWdvbmFsIikpLFAucHVzaCgiPGJvcmRlcj4iK2VlLmpvaW4oIiIpKyI8L2JvcmRlcj4iKX0pLCc8Ym9yZGVycyBjb3VudD0iJytQLmxlbmd0aCsnIj4nK1Auam9pbigiIikrIjwvYm9yZGVycz4ifSgody5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxb''@;'; put 'put ''XSksRFtELmxlbmd0aF09ZnVuY3Rpb24gVVEodyl7dmFyIFA9Wyc8eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIvPiddO2lmKHcpZm9yKHZhciBEPTE7RDx3Lmxlbmd0aDsrK0QpUC5wdXNoKE1yKCJ4ZiIsbnVsbCx7bnVtRm10SWQ6d1tEXS5udW1G''@;'; put 'put ''bXRJZHx8MCxmb250SWQ6d1tEXS5mb250SWR8fDAsZmlsbElkOndbRF0uZmlsbElkfHwwLGJvcmRlcklkOndbRF0uYm9yZGVySWR8fDB9KSk7cmV0dXJuJzxjZWxsU3R5bGVYZnMgY291bnQ9IicrUC5sZW5ndGgrJyI+JytQLmpvaW4oIiIpKyI8L2NlbGxTdHlsZVhmcz4ifShQLmNlbGxTdHls''@;'; put 'put ''ZVhmcyksKGVlPWZ1bmN0aW9uIHpRKHcpe3ZhciBQPVtdO3JldHVybiBQW1AubGVuZ3RoXT1NcigiY2VsbFhmcyIsbnVsbCksdy5mb3JFYWNoKGZ1bmN0aW9uKEQpe3ZhciBlZT1ELmFsaWdubWVudDtkZWxldGUgRC5hbGlnbm1lbnQ7dmFyIG9lPUQucHJvdGVjdGlvbjtkZWxldGUgRC5wcm90''@;'; put 'put ''ZWN0aW9uO3ZhciBnZT1lZT9NcigiYWxpZ25tZW50IixudWxsLGVlKToiIjtnZSs9b2U/TXIoInByb3RlY3Rpb24iLG51bGwse2hpZGRlbjpvZS5oaWRkZW4/MTowLGxvY2tlZDpvZS5lZGl0YWJsZT8wOjF9KToiIixQW1AubGVuZ3RoXT1NcigieGYiLGdlfHxudWxsLEQpLGVlJiYoRC5hbGln''@;'; put 'put ''bm1lbnQ9ZWUpLG9lJiYoRC5wcm90ZWN0aW9uPW9lKX0pLFBbUC5sZW5ndGhdPSI8L2NlbGxYZnM+IiwyPT09UC5sZW5ndGg/IiI6KFBbMF09TXIoImNlbGxYZnMiLG51bGwse2NvdW50OlAubGVuZ3RoLTJ9KS5yZXBsYWNlKCIvPiIsIj4iKSxQLmpvaW4oIiIpKX0oUC5jZWxsWGZzKSkmJihE''@;'; put 'put ''W0QubGVuZ3RoXT1lZSksRFtELmxlbmd0aF09ZnVuY3Rpb24gcEgodyl7dmFyIFA9Wyc8Y2VsbFN0eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIi8+J107aWYodylmb3IodmFyIEQ9MTtEPHcubGVuZ3RoOysrRClQLnB1c2goTXIoImNlbGxTdHlsZSIsbnVsbCx7bmFt''@;'; put 'put ''ZTp3W0RdLm5hbWUseGZJZDpEfSkpO3JldHVybic8Y2VsbFN0eWxlcyBjb3VudD0iJytQLmxlbmd0aCsnIj4nK1Auam9pbigiIikrIjwvY2VsbFN0eWxlcz4ifShQLmNlbGxTdHlsZVhmcyksdy5TdHlsZXMuRFhGfHwody5TdHlsZXMuRFhGPVtdKTt2YXIgb2U9ZnVuY3Rpb24gS1EodyxQLEQp''@;'; put 'put ''e3ZhciBlZT1bJzx0YWJsZVN0eWxlcyBjb3VudD0iJysod3x8W10pLmxlbmd0aCsnIiBkZWZhdWx0VGFibGVTdHlsZT0iVGFibGVTdHlsZU1lZGl1bTkiIGRlZmF1bHRQaXZvdFN0eWxlPSJQaXZvdFN0eWxlTWVkaXVtNCInXTtyZXR1cm4gdyYmdy5sZW5ndGg/KGVlWzBdKz0iPiIsdy5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKG9lKXtlZS5wdXNoKGZ1bmN0aW9uIFdRKHcsUCxEKXt2YXIgZWU9W107WyJ3aG9sZVRhYmxlIiwiaGVhZGVyUm93IiwidG90YWxSb3ciLCJmaXJzdENvbHVtbiIsImxhc3RDb2x1bW4iLCJmaXJzdFJvd1N0cmlwZSIsInNlY29uZFJvd1N0cmlwZSIsImZpcnN0Q29sdW1u''@;'; put 'put ''U3RyaXBlIiwic2Vjb25kQ29sdW1uU3RyaXBlIiwiZmlyc3RIZWFkZXJDZWxsIiwibGFzdEhlYWRlckNlbGwiLCJmaXJzdFRvdGFsQ2VsbCIsImxhc3RUb3RhbENlbGwiLCJmaXJzdFN1YnRvdGFsQ29sdW1uIiwic2Vjb25kU3VidG90YWxDb2x1bW4iLCJ0aGlyZFN1YnRvdGFsQ29sdW1uIiwi''@;'; put 'put ''Zmlyc3RTdWJ0b3RhbFJvdyIsInNlY29uZFN1YnRvdGFsUm93IiwidGhpcmRTdWJ0b3RhbFJvdyIsImJsYW5rUm93IiwiZmlyc3RDb2x1bW5TdWJoZWFkaW5nIiwic2Vjb25kQ29sdW1uU3ViaGVhZGluZyIsInRoaXJkQ29sdW1uU3ViaGVhZGluZyIsImZpcnN0Um93U3ViaGVhZGluZyIsInNl''@;'; put 'put ''Y29uZFJvd1N1YmhlYWRpbmciLCJ0aGlyZFJvd1N1YmhlYWRpbmciLCJwYWdlRmllbGRMYWJlbHMiLCJwYWdlRmllbGRWYWx1ZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKGdlKXtpZih3W2dlXSl7dmFyIF9lPWpvKFAsd1tnZV0pO2VlLnB1c2goJzx0YWJsZVN0eWxlRWxlbWVudCBkeGZJZD0iJytf''@;'; put 'put ''ZSsnIiB0eXBlPSInK2dlKyciLz4nKX19KTt2YXIgb2U9Jzx0YWJsZVN0eWxlIGNvdW50PSInK2VlLmxlbmd0aCsnIiBwaXZvdD0iJysgKyEhdy5waXZvdCsnIiBuYW1lPSInK3cubmFtZSsnIic7cmV0dXJuIGVlLmxlbmd0aD9vZSsiPiIrZWUuam9pbigiIikrIjwvdGFibGVTdHlsZT4iOm9l''@;'; put 'put ''KyIvPiJ9KG9lLFApKX0pLGVlLmpvaW4oIiIpKyI8L3RhYmxlU3R5bGVzPiIpOmVlWzBdKyIvPiJ9KCh3LlN0eWxlc3x8e30pLlRhYmxlfHxbXSx3LlN0eWxlcy5EWEYpO3JldHVybiBEW0QubGVuZ3RoXT1mdW5jdGlvbiB3OCh3LFApe2lmKCF3Lmxlbmd0aClyZXR1cm4nPGR4ZnMgY291bnQ9''@;'; put 'put ''IjAiLz4nO3ZhciBEPVsnPGR4ZnMgY291bnQ9Iicrdy5sZW5ndGgrJyI+J107cmV0dXJuIHcuZm9yRWFjaChmdW5jdGlvbihlZSl7RC5wdXNoKGZ1bmN0aW9uIGdIKHcsUCl7dmFyIEQ9e2JvbGQ6ImIiLGl0YWxpYzoiaSIsdmFsaWduOiJ2ZXJ0QWxpZ24ifSxlZT1bIjxkeGY+Il0sb2U9W10s''@;'; put 'put ''Z2U9W10sX2U9W10sTWU9W107cmV0dXJuIG10KHcpLmZvckVhY2goZnVuY3Rpb24oVWUpe3N3aXRjaChVZSl7Y2FzZSJib2xkIjpjYXNlIml0YWxpYyI6Y2FzZSJzdHJpa2UiOmNhc2UidW5kZXJsaW5lIjpjYXNlImNvbG9yIjpjYXNlInZhbGlnbiI6Y2FzZSJzeiI6Y2FzZSJuYW1lIjpjYXNl''@;'; put 'put ''Im91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNoYXJzZXQiOmNhc2UiZmFtaWx5IjpjYXNlImNvbmRlbnNlIjpjYXNlImV4dGVuZCI6Y2FzZSJzY2hlbWUiOm9lLnB1c2goVWUpO2JyZWFrO2Nhc2UiYmdDb2xvciI6Y2FzZSJmZ0NvbG9yIjpfZS5wdXNoKFVlKTticmVhaztjYXNlInoiOmdl''@;'; put 'put ''LnB1c2goVWUpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImRpYWdvbmFsIjpjYXNlInZlcnRpY2FsIjpjYXNlImhvcml6b250YWwiOk1lLnB1c2goVWUpO2JyZWFrO2Nhc2UicGF0dGVyblR5cGUiOmNhc2UiZGlhZ29uYWxEb3duIjpj''@;'; put 'put ''YXNlImRpYWdvbmFsVXAiOmNhc2Uic3RvcHMiOmNhc2UiZGVncmVlIjpicmVhaztkZWZhdWx0OnRocm93IlVucmVjb2duaXplZCAiK1VlKyIgaW4gRFhGIn19KSxvZS5sZW5ndGg+MCYmKGVlLnB1c2goIjxmb250PiIpLG9lLmZvckVhY2goZnVuY3Rpb24oVWUpe3N3aXRjaChVZSl7Y2FzZSJi''@;'; put 'put ''b2xkIjpjYXNlIml0YWxpYyI6Y2FzZSJzdHJpa2UiOmNhc2Uib3V0bGluZSI6Y2FzZSJzaGFkb3ciOmNhc2UiY29uZGVuc2UiOmNhc2UiZXh0ZW5kIjplZS5wdXNoKCI8IisoRFtVZV18fFVlKSsnIHZhbD0iJysod1tVZV0/IjEiOiIwIikrJyIvPicpO2JyZWFrO2Nhc2UiY29sb3IiOmVlLnB1''@;'; put 'put ''c2gobGQod1tVZV0sVWUsITApKTticmVhaztjYXNlImZhbWlseSI6Y2FzZSJuYW1lIjpjYXNlInN6IjpjYXNlInNjaGVtZSI6ZWUucHVzaCgiPCIrKERbVWVdfHxVZSkrJyB2YWw9Iicrd1tVZV0rJyIvPicpO2JyZWFrO2Nhc2UidW5kZXJsaW5lIjplZS5wdXNoKCc8dSB2YWw9IicrYjhbd1tV''@;'; put 'put ''ZV18fDBdKyciLz4nKTticmVhaztjYXNlInZhbGlnbiI6ZWUucHVzaCgnPHZlcnRBbGlnbiB2YWw9Iicrdy52YWxpZ24rKCJzdWIiPT13LnZhbGlnbnx8InN1cGVyIj09dy52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKTticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkICIrVWUrIiA6''@;'; put 'put ''IGZvbnQgRFhGIn19KSxlZS5wdXNoKCI8L2ZvbnQ+IikpLGdlLmxlbmd0aD4wJiZlZS5wdXNoKCc8bnVtRm10IGZvcm1hdENvZGU9IicrQnIody56KSsnIiBudW1GbXRJZD0iJytmdW5jdGlvbiBIcCh3LFApe2lmKCJudW1iZXIiPT10eXBlb2YgdylyZXR1cm4gdzt2YXIgRD1QLnJldnNzZlt3''@;'; put 'put ''Pz8iR2VuZXJhbCJdLGVlPTYwO2lmKG51bGw9PUQpZm9yKDtlZTwzOTI7KytlZSlpZihudWxsPT1QLnNzZltlZV0pcmV0dXJuIFMubG9hZCh3LGVlKSxQLnNzZltlZV09dyxQLnJldnNzZlt3XT1lZSxlZTtyZXR1cm4gRH0ody56LFApKyciLz4nKSxfZS5sZW5ndGg+MCYmKGVlLnB1c2goIjxm''@;'; put 'put ''aWxsPiIpLGVlLnB1c2goIjxwYXR0ZXJuRmlsbCIrKHcucGF0dGVyblR5cGU/JyBwYXR0ZXJuVHlwZT0iJyt3LnBhdHRlcm5UeXBlKyciPic6Ij4iKSksX2UuZm9yRWFjaChmdW5jdGlvbihVZSl7c3dpdGNoKFVlKXtjYXNlInBhdHRlcm5UeXBlIjpicmVhaztjYXNlImZnQ29sb3IiOmNhc2Ui''@;'; put 'put ''YmdDb2xvciI6ZWUucHVzaChsZCh3W1VlXSxVZSwhMCkpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgIitVZSsiIDogZmlsbCBEWEYifX0pLGVlLnB1c2goIjwvcGF0dGVybkZpbGw+IiksZWUucHVzaCgiPC9maWxsPiIpKSxNZS5sZW5ndGg+MD8oZWUucHVzaChbIjxib3JkZXIi''@;'; put 'put ''LG51bGwhPXcuZGlhZ29uYWxEb3duPycgZGlhZ29uYWxEb3duPSInKyArISF3LmRpYWdvbmFsRG93bisnIic6IiIsbnVsbCE9dy5kaWFnb25hbFVwPycgZGlhZ29uYWxVcD0iJysgKyEhdy5kaWFnb25hbFVwKyciJzoiIiwiPiJdLmpvaW4oIiIpKSxNZS5mb3JFYWNoKGZ1bmN0aW9uKFVlKXtl''@;'; put 'put ''ZS5wdXNoKGtwKHdbVWVdLFVlKSl9KSxlZS5wdXNoKCI8L2JvcmRlcj4iKSk6KG51bGwhPXcuZGlhZ29uYWxEb3dufHxudWxsIT13LmRpYWdvbmFsVXApJiZlZS5wdXNoKFsiPGJvcmRlciIsbnVsbCE9dy5kaWFnb25hbERvd24/JyBkaWFnb25hbERvd249IicrICshIXcuZGlhZ29uYWxEb3du''@;'; put 'put ''KyciJzoiIixudWxsIT13LmRpYWdvbmFsVXA/JyBkaWFnb25hbFVwPSInKyArISF3LmRpYWdvbmFsVXArJyInOiIiLCIvPiJdLmpvaW4oIiIpKSwxPT1lZS5sZW5ndGg/IjxkeGYvPiI6ZWUuam9pbigiIikrIjwvZHhmPiJ9KGVlLFApKX0pLEQuam9pbigiIikrIjwvZHhmcz4ifSh3LlN0eWxl''@;'; put 'put ''cy5EWEYsUCksRFtELmxlbmd0aF09b2UsRC5sZW5ndGg+MiYmKERbRC5sZW5ndGhdPSI8L3N0eWxlU2hlZXQ+IixEWzFdPURbMV0ucmVwbGFjZSgiLz4iLCI+IikpLEQuam9pbigiIil9ZnVuY3Rpb24gRXAodyxQLEQpe0R8fChEPXByKDYrNCpQLmxlbmd0aCkpLEQud3JpdGVfc2hpZnQoMix3''@;'; put 'put ''KSxjdShQLEQpO3ZhciBlZT1ELmxlbmd0aD5ELmw/RC5zbGljZSgwLEQubCk6RDtyZXR1cm4gbnVsbD09RC5sJiYoRC5sPUQubGVuZ3RoKSxlZX1mdW5jdGlvbiBTOCh3KXtyZXR1cm57Y29sb3I6JGYodykscG9zOnlsKHcpfX1OaS5TVFk9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRz''@;'; put 'put ''Lm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIjt2YXIgRm09WyJub25lIiwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dy''@;'; put 'put ''aWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il0saGg9d2UoRm0pLE04PVsiZ2VuZXJhbCIsImxlZnQiLCJjZW50ZXIiLCJy''@;'; put 'put ''aWdodCIsImZpbGwiLCJqdXN0aWZ5IiwiY2VudGVyQ29udGludW91cyIsImRpc3RyaWJ1dGVkIl0sSG09WyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iLCJqdXN0aWZ5IiwiZGlzdHJpYnV0ZWQiXTtmdW5jdGlvbiBfXyh3LFAsRCl7RHx8KEQ9cHIoMTYpKSxELndyaXRlX3NoaWZ0KDIsUHx8MCks''@;'; put 'put ''RC53cml0ZV9zaGlmdCgyLHcubnVtRm10SWR8fDApLEQud3JpdGVfc2hpZnQoMix3LmZvbnRJZHx8MCksRC53cml0ZV9zaGlmdCgyLHcuZmlsbElkfHwwKSxELndyaXRlX3NoaWZ0KDIsdy5ib3JkZXJJZHx8MCksRC53cml0ZV9zaGlmdCgxLHcuYWxpZ25tZW50JiZ3LmFsaWdubWVudC50ZXh0''@;'; put 'put ''Um90YXRpb258fDApLEQud3JpdGVfc2hpZnQoMSx3LmFsaWdubWVudCYmdy5hbGlnbm1lbnQuaW5kZW50fHwwKTt2YXIgZWU9MCxvZT0wO2lmKHcuYWxpZ25tZW50KXtpZih3LmFsaWdubWVudC5ob3Jpem9udGFsKXt2YXIgZ2U9TTguaW5kZXhPZih3LmFsaWdubWVudC5ob3Jpem9udGFsKTtn''@;'; put 'put ''ZTwwJiYoZ2U9MCksZWV8PWdlfWlmKHcuYWxpZ25tZW50LnZlcnRpY2FsKXt2YXIgX2U9SG0uaW5kZXhPZih3LmFsaWdubWVudC52ZXJ0aWNhbCk7X2U8MCYmKF9lPTIpLGVlfD1fZTw8M313LmFsaWdubWVudC53cmFwVGV4dCYmKGVlfD02NCksdy5hbGlnbm1lbnQuc2hyaW5rVG9GaXQmJihv''@;'; put 'put ''ZXw9MSl9cmV0dXJuIEQud3JpdGVfc2hpZnQoMSxlZSksRC53cml0ZV9zaGlmdCgxLG9lKSxELndyaXRlX3NoaWZ0KDEsMCksRC53cml0ZV9zaGlmdCgxLDApLER9dmFyIHBoPVsibm9uZSIsInRoaW4iLCJtZWRpdW0iLCJkYXNoZWQiLCJkb3R0ZWQiLCJ0aGljayIsImRvdWJsZSIsImhhaXIi''@;'; put 'put ''LCJtZWRpdW1EYXNoZWQiLCJkYXNoRG90IiwibWVkaXVtRGFzaERvdCIsImRhc2hEb3REb3QiLCJtZWRpdW1EYXNoRG90RG90Iiwic2xhbnREYXNoRG90Il07ZnVuY3Rpb24gTm0odyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDEpO3cubCs9MTt2YXIgRD0kZih3KTtyZXR1cm57c3R5bGU6cGhbUF0s''@;'; put 'put ''Y29sb3I6RH19ZnVuY3Rpb24geHAodyxQKXtyZXR1cm4gUHx8KFA9cHIoMTApKSx3JiZ3LnN0eWxlJiYiIiE9dy5zdHlsZSYmIm5vbmUiIT13LnN0eWxlJiYtMSE9PXBoLmluZGV4T2Yody5zdHlsZSk/KFAud3JpdGVfc2hpZnQoMSxwaC5pbmRleE9mKHcuc3R5bGUpKSxQLndyaXRlX3NoaWZ0''@;'; put 'put ''KDEsMCksdy5jb2xvcj90aCh3LmNvbG9yLFApOihQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApKSk6KFAud3JpdGVfc2hpZnQoMSwwKSxQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKSksUH1mdW5jdGlvbiBzYyh3LFAp''@;'; put 'put ''e3JldHVybiBQfHwoUD1wcig1MikpLFAud3JpdGVfc2hpZnQoNCx3LnhmSWQpLFAud3JpdGVfc2hpZnQoMiwxKSxQLndyaXRlX3NoaWZ0KDEsK3cuYnVpbHRpbklkKSxQLndyaXRlX3NoaWZ0KDEsMCksV2Yody5uYW1lfHwiIixQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH1mdW5j''@;'; put 'put ''dGlvbiBWbSh3LFApeyFQfHwhUC50aGVtZUVsZW1lbnRzfHwhUC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZXx8bnVsbCE9dy50aGVtZSYmKHcucmdiPWlkKFAudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbdy50aGVtZV0ucmdiLHcudGludHx8MCkpfWZ1bmN0aW9uIGtIKHcsUCl7dmFyIEQ9QXUo''@;'; put 'put ''KTtyZXR1cm4gaGkoRCwiQnJ0QmVnaW5TdHlsZVNoZWV0IiksZnVuY3Rpb24gV3UodyxQKXtpZihQKXt2YXIgRD0wO1tbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWzUwLDM5Ml1dLmZvckVhY2goZnVuY3Rpb24oZWUpe2Zvcih2YXIgb2U9ZWVbMF07b2U8PWVlWzFdOysrb2UpbnVsbCE9UFtvZV0m''@;'; put 'put ''JisrRH0pLDAhPUQmJihoaSh3LCJCcnRCZWdpbkZtdHMiLEZjKEQpKSxbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtmb3IodmFyIG9lPWVlWzBdO29lPD1lZVsxXTsrK29lKW51bGwhPVBbb2VdJiZoaSh3LCJCcnRGbXQiLEVwKG9lLFBbb2Vd''@;'; put 'put ''KSl9KSxoaSh3LCJCcnRFbmRGbXRzIikpfX0oRCx3LlNTRiksZnVuY3Rpb24gQm0odyxQKXt2YXIgRD1QLmxlbmd0aDswIT1EJiYoaGkodywiQnJ0QmVnaW5Gb250cyIsRmMoRCkpLFAuZm9yRWFjaChmdW5jdGlvbihlZSl7aGkodywiQnJ0Rm9udCIsZnVuY3Rpb24gS3godyxQKXtQfHwoUD1w''@;'; put 'put ''cigxNTMpKSxQLndyaXRlX3NoaWZ0KDIsMjAqdy5zeiksZnVuY3Rpb24gcDIodyxQKXtQfHwoUD1wcigyKSksUC53cml0ZV9zaGlmdCgxLCh3Lml0YWxpYz8yOjApfCh3LnN0cmlrZT84OjApfCh3Lm91dGxpbmU/MTY6MCl8KHcuc2hhZG93PzMyOjApfCh3LmNvbmRlbnNlPzY0OjApfCh3LmV4''@;'; put 'put ''dGVuZD8xMjg6MCkpLFAud3JpdGVfc2hpZnQoMSwwKX0odyxQKSxQLndyaXRlX3NoaWZ0KDIsdy5ib2xkPzcwMDo0MDApO3ZhciBEPTA7InN1cGVyIj09dy52YWxpZ24/RD0xOiJzdWIiPT13LnZhbGlnbiYmKEQ9MiksUC53cml0ZV9zaGlmdCgyLEQpLFAud3JpdGVfc2hpZnQoMSx3LnVuZGVy''@;'; put 'put ''bGluZXx8MCksUC53cml0ZV9zaGlmdCgxLHcuZmFtaWx5fHwwKSxQLndyaXRlX3NoaWZ0KDEsdy5jaGFyc2V0fHwwKSxQLndyaXRlX3NoaWZ0KDEsMCksdGgody5jb2xvcixQKTt2YXIgZWU9MDtyZXR1cm4ibWFqb3IiPT13LnNjaGVtZSYmKGVlPTEpLCJtaW5vciI9PXcuc2NoZW1lJiYoZWU9''@;'; put 'put ''MiksUC53cml0ZV9zaGlmdCgxLGVlKSxjdSh3Lm5hbWUsUCksUC5sZW5ndGg+UC5sP1Auc2xpY2UoMCxQLmwpOlB9KGVlKSl9KSxoaSh3LCJCcnRFbmRGb250cyIpKX0oRCwody5TdHlsZXN8fHt9KS5Gb250c3x8W10pLGZ1bmN0aW9uIHF4KHcsUCl7dmFyIEQ9UC5sZW5ndGg7MCE9RCYmKGhp''@;'; put 'put ''KHcsIkJydEJlZ2luRmlsbHMiLEZjKEQpKSxQLmZvckVhY2goZnVuY3Rpb24oZWUpe2hpKHcsIkJydEZpbGwiLGZ1bmN0aW9uIHlIKHcsUCl7UHx8KFA9cHIoODQpKTt2YXIgRD1oaFt3LnBhdHRlcm5UeXBlXTtudWxsPT1EJiYoRD00MCksUC53cml0ZV9zaGlmdCg0LEQ9K0QpO3ZhciBlZT0w''@;'; put 'put ''O2lmKDQwIT1EKWZvcih0aCh3LmZnQ29sb3J8fHtpbmRleDo2NH0sUCksdGgody5iZ0NvbG9yfHx7aW5kZXg6NjV9LFApO2VlPDEyOysrZWUpUC53cml0ZV9zaGlmdCg0LDApO2Vsc2V7Zm9yKDtlZTw0OysrZWUpUC53cml0ZV9zaGlmdCg0LDApO2Zvcig7ZWU8MTI7KytlZSlQLndyaXRlX3No''@;'; put 'put ''aWZ0KDQsMCl9cmV0dXJuIFAubGVuZ3RoPlAubD9QLnNsaWNlKDAsUC5sKTpQfShlZSkpfSksaGkodywiQnJ0RW5kRmlsbHMiKSl9KEQsKHcuU3R5bGVzfHx7fSkuRmlsbHN8fFtdKSxmdW5jdGlvbiBYeCh3LFApe3ZhciBEPVAubGVuZ3RoOzAhPUQmJihoaSh3LCJCcnRCZWdpbkJvcmRlcnMi''@;'; put 'put ''LEZjKEQpKSxQLmZvckVhY2goZnVuY3Rpb24oZWUpe2hpKHcsIkJydEJvcmRlciIsZnVuY3Rpb24gX0godyxQKXtyZXR1cm4gUHx8KFA9cHIoNTEpKSxQLndyaXRlX3NoaWZ0KDEsMCkseHAody50b3AsUCkseHAody5ib3R0b20sUCkseHAody5sZWZ0LFApLHhwKHcucmlnaHQsUCkseHAobnVs''@;'; put 'put ''bCxQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH0oZWUpKX0pLGhpKHcsIkJydEVuZEJvcmRlcnMiKSl9KEQsKHcuU3R5bGVzfHx7fSkuQm9yZGVyc3x8W10pLGZ1bmN0aW9uIHdIKHcsUCl7dmFyIEQ9MTtpZihQJiYoRD1QLmxlbmd0aCksaGkodywiQnJ0QmVnaW5DZWxsU3R5bGVY''@;'; put 'put ''RnMiLEZjKEQpKSxoaSh3LCJCcnRYRiIsX18oe251bUZtdElkOjAsZm9udElkOjAsZmlsbElkOjAsYm9yZGVySWQ6MH0sNjU1MzUpKSxQKWZvcih2YXIgZWU9MTtlZTxQLmxlbmd0aDsrK2VlKWhpKHcsIkJydFhGIixfXyh7bnVtRm10SWQ6UFtlZV0ubnVtRm10SWR8fDAsZm9udElkOlBbZWVd''@;'; put 'put ''LmZvbnRJZHx8MCxmaWxsSWQ6UFtlZV0uZmlsbElkfHwwLGJvcmRlcklkOlBbZWVdLmJvcmRlcklkfHwwfSw2NTUzNSkpO2hpKHcsIkJydEVuZENlbGxTdHlsZVhGcyIpfShELFAuY2VsbFN0eWxlWGZzKSxmdW5jdGlvbiBKeCh3LFApe2hpKHcsIkJydEJlZ2luQ2VsbFhGcyIsRmMoUC5sZW5n''@;'; put 'put ''dGgpKSxQLmZvckVhY2goZnVuY3Rpb24oRCl7aGkodywiQnJ0WEYiLF9fKEQsMCkpfSksaGkodywiQnJ0RW5kQ2VsbFhGcyIpfShELFAuY2VsbFhmcyksZnVuY3Rpb24gQ0godyxQKXt2YXIgRD0xO2lmKFAmJihEPVAubGVuZ3RoKSxoaSh3LCJCcnRCZWdpblN0eWxlcyIsRmMoRCkpLGhpKHcs''@;'; put 'put ''IkJydFN0eWxlIixzYyh7eGZJZDowLGJ1aWx0aW5JZDowLG5hbWU6Ik5vcm1hbCJ9KSksUClmb3IodmFyIGVlPTE7ZWU8UC5sZW5ndGg7KytlZSloaSh3LCJCcnRTdHlsZSIsc2Moe3hmSWQ6ZWUsYnVpbHRpbklkOjAsbmFtZTpQW2VlXS5uYW1lfSkpO2hpKHcsIkJydEVuZFN0eWxlcyIpfShE''@;'; put 'put ''LFAuY2VsbFN0eWxlWGZzKSxmdW5jdGlvbiBReCh3KXtoaSh3LCJCcnRCZWdpbkRYRnMiLEZjKDApKSxoaSh3LCJCcnRFbmREWEZzIil9KEQpLGZ1bmN0aW9uIFNIKHcpe2hpKHcsIkJydEJlZ2luVGFibGVTdHlsZXMiLGZ1bmN0aW9uIHdfKHcsUCxEKXt2YXIgZWU9cHIoMjA1Mik7cmV0dXJu''@;'; put 'put ''IGVlLndyaXRlX3NoaWZ0KDQsdyksV2YoUCxlZSksV2YoRCxlZSksZWUubGVuZ3RoPmVlLmw/ZWUuc2xpY2UoMCxlZS5sKTplZX0oMCwiVGFibGVTdHlsZU1lZGl1bTkiLCJQaXZvdFN0eWxlTWVkaXVtNCIpKSxoaSh3LCJCcnRFbmRUYWJsZVN0eWxlcyIpfShEKSxoaShELCJCcnRFbmRTdHls''@;'; put 'put ''ZVNoZWV0IiksRC5lbmQoKX1OaS5USEVNRT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy90aGVtZSI7dmFyIEVIPVsiPC9hOmx0MT4iLCI8L2E6ZGsxPiIsIjwvYTpsdDI+IiwiPC9hOmRrMj4iLCI8L2E6YWNjZW50''@;'; put 'put ''MT4iLCI8L2E6YWNjZW50Mj4iLCI8L2E6YWNjZW50Mz4iLCI8L2E6YWNjZW50ND4iLCI8L2E6YWNjZW50NT4iLCI8L2E6YWNjZW50Nj4iLCI8L2E6aGxpbms+IiwiPC9hOmZvbEhsaW5rPiJdO2Z1bmN0aW9uIFNfKHcsUCxEKXtQLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lPVtdO3ZhciBlZT17''@;'; put 'put ''fTsod1swXS5tYXRjaChxdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXt2YXIgZ2U9Y24ob2UpO3N3aXRjaChnZVswXSl7Y2FzZSI8YTpjbHJTY2hlbWUiOmNhc2UiPC9hOmNsclNjaGVtZT4iOmNhc2UiPC9hOnNyZ2JDbHI+IjpjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjxhOnNy''@;'; put 'put ''Z2JDbHIiOmVlLnJnYj1nZS52YWw7YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOmVlLnJnYj1nZS5sYXN0Q2xyO2JyZWFrO2Nhc2UiPGE6ZGsxPiI6Y2FzZSI8L2E6ZGsxPiI6Y2FzZSI8YTpsdDE+IjpjYXNlIjwvYTpsdDE+IjpjYXNlIjxhOmRrMj4iOmNhc2UiPC9hOmRrMj4iOmNhc2UiPGE6bHQy''@;'; put 'put ''PiI6Y2FzZSI8L2E6bHQyPiI6Y2FzZSI8YTphY2NlbnQxPiI6Y2FzZSI8L2E6YWNjZW50MT4iOmNhc2UiPGE6YWNjZW50Mj4iOmNhc2UiPC9hOmFjY2VudDI+IjpjYXNlIjxhOmFjY2VudDM+IjpjYXNlIjwvYTphY2NlbnQzPiI6Y2FzZSI8YTphY2NlbnQ0PiI6Y2FzZSI8L2E6YWNjZW50ND4i''@;'; put 'put ''OmNhc2UiPGE6YWNjZW50NT4iOmNhc2UiPC9hOmFjY2VudDU+IjpjYXNlIjxhOmFjY2VudDY+IjpjYXNlIjwvYTphY2NlbnQ2PiI6Y2FzZSI8YTpobGluaz4iOmNhc2UiPC9hOmhsaW5rPiI6Y2FzZSI8YTpmb2xIbGluaz4iOmNhc2UiPC9hOmZvbEhsaW5rPiI6Ii8iPT09Z2VbMF0uY2hhckF0''@;'; put 'put ''KDEpPyhQLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0VILmluZGV4T2YoZ2VbMF0pXT1lZSxlZT17fSk6ZWUubmFtZT1nZVswXS5zbGljZSgzLGdlWzBdLmxlbmd0aC0xKTticmVhaztkZWZhdWx0OmlmKEQmJkQuV1RGKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICIrZ2VbMF0rIiBp''@;'; put 'put ''biBjbHJTY2hlbWUiKX19KX1mdW5jdGlvbiBNXygpe31mdW5jdGlvbiB4SCgpe312YXIgam09LzxhOmNsclNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Y2xyU2NoZW1lPi8sQUg9LzxhOmZvbnRTY2hlbWUoW14+XSopPltcc1xTXSo8XC9hOmZvbnRTY2hlbWU+LyxUSD0vPGE6Zm10U2NoZW1l''@;'; put 'put ''KFtePl0qKT5bXHNcU10qPFwvYTpmbXRTY2hlbWU+Lyx0QT0vPGE6dGhlbWVFbGVtZW50cyhbXj5dKik+W1xzXFNdKjxcL2E6dGhlbWVFbGVtZW50cz4vO2Z1bmN0aW9uIGs4KHcsUCl7aWYoIXd8fDA9PT13Lmxlbmd0aClyZXR1cm4gazgoRTIoKSk7dmFyIEQsZWU9e307aWYoIShEPXcubWF0''@;'; put 'put ''Y2godEEpKSl0aHJvdyBuZXcgRXJyb3IoInRoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lIik7cmV0dXJuIGZ1bmN0aW9uIGVBKHcsUCxEKXt2YXIgZWU7UC50aGVtZUVsZW1lbnRzPXt9LFtbImNsclNjaGVtZSIsam0sU19dLFsiZm9udFNjaGVtZSIsQUgsTV9dLFsiZm10U2NoZW1l''@;'; put 'put ''IixUSCx4SF1dLmZvckVhY2goZnVuY3Rpb24ob2Upe2lmKCEoZWU9dy5tYXRjaChvZVsxXSkpKXRocm93IG5ldyBFcnJvcihvZVswXSsiIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7b2VbMl0oZWUsUCxEKX0pfShEWzBdLGVlLFApLGVlLnJhdz13LGVlfWZ1bmN0aW9uIEUyKHcsUCl7''@;'; put 'put ''aWYoUCYmUC50aGVtZVhMU1gpcmV0dXJuIFAudGhlbWVYTFNYO2lmKHcmJiJzdHJpbmciPT10eXBlb2Ygdy5yYXcpcmV0dXJuIHcucmF3O3ZhciBEPVtCbl07cmV0dXJuIERbRC5sZW5ndGhdPSc8YTp0aGVtZSB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJh''@;'; put 'put ''d2luZ21sLzIwMDYvbWFpbiIgbmFtZT0iT2ZmaWNlIFRoZW1lIj4nLERbRC5sZW5ndGhdPSI8YTp0aGVtZUVsZW1lbnRzPiIsRFtELmxlbmd0aF09JzxhOmNsclNjaGVtZSBuYW1lPSJPZmZpY2UiPicsRFtELmxlbmd0aF09JzxhOmRrMT48YTpzeXNDbHIgdmFsPSJ3aW5kb3dUZXh0IiBsYXN0''@;'; put 'put ''Q2xyPSIwMDAwMDAiLz48L2E6ZGsxPicsRFtELmxlbmd0aF09JzxhOmx0MT48YTpzeXNDbHIgdmFsPSJ3aW5kb3ciIGxhc3RDbHI9IkZGRkZGRiIvPjwvYTpsdDE+JyxEW0QubGVuZ3RoXT0nPGE6ZGsyPjxhOnNyZ2JDbHIgdmFsPSIxRjQ5N0QiLz48L2E6ZGsyPicsRFtELmxlbmd0aF09Jzxh''@;'; put 'put ''Omx0Mj48YTpzcmdiQ2xyIHZhbD0iRUVFQ0UxIi8+PC9hOmx0Mj4nLERbRC5sZW5ndGhdPSc8YTphY2NlbnQxPjxhOnNyZ2JDbHIgdmFsPSI0RjgxQkQiLz48L2E6YWNjZW50MT4nLERbRC5sZW5ndGhdPSc8YTphY2NlbnQyPjxhOnNyZ2JDbHIgdmFsPSJDMDUwNEQiLz48L2E6YWNjZW50Mj4n''@;'; put 'put ''LERbRC5sZW5ndGhdPSc8YTphY2NlbnQzPjxhOnNyZ2JDbHIgdmFsPSI5QkJCNTkiLz48L2E6YWNjZW50Mz4nLERbRC5sZW5ndGhdPSc8YTphY2NlbnQ0PjxhOnNyZ2JDbHIgdmFsPSI4MDY0QTIiLz48L2E6YWNjZW50ND4nLERbRC5sZW5ndGhdPSc8YTphY2NlbnQ1PjxhOnNyZ2JDbHIgdmFs''@;'; put 'put ''PSI0QkFDQzYiLz48L2E6YWNjZW50NT4nLERbRC5sZW5ndGhdPSc8YTphY2NlbnQ2PjxhOnNyZ2JDbHIgdmFsPSJGNzk2NDYiLz48L2E6YWNjZW50Nj4nLERbRC5sZW5ndGhdPSc8YTpobGluaz48YTpzcmdiQ2xyIHZhbD0iMDAwMEZGIi8+PC9hOmhsaW5rPicsRFtELmxlbmd0aF09JzxhOmZv''@;'; put 'put ''bEhsaW5rPjxhOnNyZ2JDbHIgdmFsPSI4MDAwODAiLz48L2E6Zm9sSGxpbms+JyxEW0QubGVuZ3RoXT0iPC9hOmNsclNjaGVtZT4iLERbRC5sZW5ndGhdPSc8YTpmb250U2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxEW0QubGVuZ3RoXT0iPGE6bWFqb3JGb250PiIsRFtELmxlbmd0aF09JzxhOmxh''@;'; put 'put ''dGluIHR5cGVmYWNlPSJDYW1icmlhIi8+JyxEW0QubGVuZ3RoXT0nPGE6ZWEgdHlwZWZhY2U9IiIvPicsRFtELmxlbmd0aF09JzxhOmNzIHR5cGVmYWNlPSIiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSnBhbiIgdHlwZWZhY2U9Ilx1ZmYyZFx1ZmYzMyBcdWZmMzBcdTMwYjRc''@;'; put 'put ''dTMwYjdcdTMwYzNcdTMwYWYiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIvPicsRFtELmxl''@;'; put 'put ''bmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0iXHU2NWIwXHU3ZDMwXHU2NjBlXHU5YWQ0Ii8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGVi''@;'; put 'put ''ciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQg''@;'; put 'put ''c2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPicsRFtELmxlbmd0aF09Jzxh''@;'; put 'put ''OmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPicsRFtELmxlbmd0aF09''@;'; put 'put ''JzxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBl''@;'; put 'put ''ZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNj''@;'; put 'put ''cmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPicsRFtELmxlbmd0''@;'; put 'put ''aF09JzxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+JyxE''@;'; put 'put ''W0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBl''@;'; put 'put ''ZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxEW0QubGVuZ3RoXT0iPC9h''@;'; put 'put ''Om1ham9yRm9udD4iLERbRC5sZW5ndGhdPSI8YTptaW5vckZvbnQ+IixEW0QubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbGlicmkiLz4nLERbRC5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxEW0QubGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicsRFtELmxlbmd0aF09''@;'; put 'put ''JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0iXHVmZjJkXHVmZjMzIFx1ZmYzMFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZiIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0iXHViOWQxXHVjNzQwIFx1YWNlMFx1YjUxNSIvPicsRFtELmxlbmd0''@;'; put 'put ''aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5zIiB0eXBlZmFjZT0iXHU1YjhiXHU0ZjUzIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSJcdTY1YjBcdTdkMzBcdTY2MGVcdTlhZDQiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlw''@;'; put 'put ''ZWZhY2U9IkFyaWFsIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhlYnIiIHR5cGVmYWNlPSJBcmlhbCIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5''@;'; put 'put ''cGVmYWNlPSJOeWFsYSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS2htciIg''@;'; put 'put ''dHlwZWZhY2U9IkRhdW5QZW5oIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2Fu''@;'; put 'put ''cyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxE''@;'; put 'put ''W0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIgdHlwZWZhY2U9Ik1WIEJvbGkiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZh''@;'; put 'put ''Y2U9Ik1hbmdhbCIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUYW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlw''@;'; put 'put ''ZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxEW0QubGVuZ3RoXT0nPGE6Zm9udCBz''@;'; put 'put ''Y3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4nLERbRC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxE''@;'; put 'put ''W0QubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJBcmlhbCIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJVaWdoIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFVpZ2h1ciIvPicsRFtELmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHZW9yIiB0eXBlZmFjZT0i''@;'; put 'put ''U3lsZmFlbiIvPicsRFtELmxlbmd0aF09IjwvYTptaW5vckZvbnQ+IixEW0QubGVuZ3RoXT0iPC9hOmZvbnRTY2hlbWU+IixEW0QubGVuZ3RoXT0nPGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxEW0QubGVuZ3RoXT0iPGE6ZmlsbFN0eWxlTHN0PiIsRFtELmxlbmd0aF09JzxhOnNvbGlk''@;'; put 'put ''RmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+JyxEW0QubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLERbRC5sZW5ndGhdPSI8YTpnc0xzdD4iLERbRC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xy''@;'; put 'put ''Ij48YTp0aW50IHZhbD0iNTAwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLERbRC5sZW5ndGhdPSc8YTpncyBwb3M9IjM1MDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjM3MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAw''@;'; put 'put ''MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxEW0QubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMTUwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLERbRC5sZW5ndGhd''@;'; put 'put ''PSI8L2E6Z3NMc3Q+IixEW0QubGVuZ3RoXT0nPGE6bGluIGFuZz0iMTYyMDAwMDAiIHNjYWxlZD0iMSIvPicsRFtELmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLERbRC5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsRFtELmxlbmd0aF09IjxhOmdzTHN0PiIsRFtELmxl''@;'; put 'put ''bmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxMDAwMDAiLz48YTpzaGFkZSB2YWw9IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjEzMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsRFtELmxlbmd0aF09JzxhOmdzIHBvcz0iMTAw''@;'; put 'put ''MDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjUwMDAwIi8+PGE6c2hhZGUgdmFsPSIxMDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLERbRC5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixEW0QubGVuZ3RoXT0nPGE6bGlu''@;'; put 'put ''IGFuZz0iMTYyMDAwMDAiIHNjYWxlZD0iMCIvPicsRFtELmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLERbRC5sZW5ndGhdPSI8L2E6ZmlsbFN0eWxlTHN0PiIsRFtELmxlbmd0aF09IjxhOmxuU3R5bGVMc3Q+IixEW0QubGVuZ3RoXT0nPGE6bG4gdz0iOTUyNSIgY2FwPSJmbGF0IiBjbXBkPSJz''@;'; put 'put ''bmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9Ijk1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTA1MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxEW0Qu''@;'; put 'put ''bGVuZ3RoXT0nPGE6bG4gdz0iMjU0MDAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLERbRC5sZW5ndGhdPSc8YTpsbiB3''@;'; put 'put ''PSIzODEwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicsRFtELmxlbmd0aF09IjwvYTpsblN0eWxlTHN0PiIsRFtELmxl''@;'; put 'put ''bmd0aF09IjxhOmVmZmVjdFN0eWxlTHN0PiIsRFtELmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIsRFtELmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLERbRC5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIwMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFw''@;'; put 'put ''ZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzODAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxEW0QubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLERbRC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixEW0QubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5''@;'; put 'put ''bGU+IixEW0QubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIsRFtELmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM1MDAwIi8+''@;'; put 'put ''PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLERbRC5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIsRFtELmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLERbRC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLERbRC5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixEW0QubGVuZ3RoXT0nPGE6b3V0''@;'; put 'put ''ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicsRFtELmxlbmd0aF09IjwvYTplZmZlY3RM''@;'; put 'put ''c3Q+IixEW0QubGVuZ3RoXT0nPGE6c2NlbmUzZD48YTpjYW1lcmEgcHJzdD0ib3J0aG9ncmFwaGljRnJvbnQiPjxhOnJvdCBsYXQ9IjAiIGxvbj0iMCIgcmV2PSIwIi8+PC9hOmNhbWVyYT48YTpsaWdodFJpZyByaWc9InRocmVlUHQiIGRpcj0idCI+PGE6cm90IGxhdD0iMCIgbG9uPSIwIiBy''@;'; put 'put ''ZXY9IjEyMDAwMDAiLz48L2E6bGlnaHRSaWc+PC9hOnNjZW5lM2Q+JyxEW0QubGVuZ3RoXT0nPGE6c3AzZD48YTpiZXZlbFQgdz0iNjM1MDAiIGg9IjI1NDAwIi8+PC9hOnNwM2Q+JyxEW0QubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIsRFtELmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZUxz''@;'; put 'put ''dD4iLERbRC5sZW5ndGhdPSI8YTpiZ0ZpbGxTdHlsZUxzdD4iLERbRC5sZW5ndGhdPSc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPicsRFtELmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxEW0QubGVuZ3RoXT0iPGE6''@;'; put 'put ''Z3NMc3Q+IixEW0QubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxEW0QubGVuZ3RoXT0nPGE6Z3MgcG9zPSI0MDAwMCI+PGE6c2No''@;'; put 'put ''ZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI0NTAwMCIvPjxhOnNoYWRlIHZhbD0iOTkwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLERbRC5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIi''@;'; put 'put ''PjxhOnNoYWRlIHZhbD0iMjAwMDAiLz48YTpzYXRNb2QgdmFsPSIyNTUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLERbRC5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixEW0QubGVuZ3RoXT0nPGE6cGF0aCBwYXRoPSJjaXJjbGUiPjxhOmZpbGxUb1JlY3QgbD0iNTAwMDAiIHQ9Ii04MDAwMCIg''@;'; put 'put ''cj0iNTAwMDAiIGI9IjE4MDAwMCIvPjwvYTpwYXRoPicsRFtELmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLERbRC5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsRFtELmxlbmd0aF09IjxhOmdzTHN0PiIsRFtELmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1l''@;'; put 'put ''Q2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI4MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsRFtELmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIzMDAwMCIvPjxh''@;'; put 'put ''OnNhdE1vZCB2YWw9IjIwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsRFtELmxlbmd0aF09IjwvYTpnc0xzdD4iLERbRC5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iNTAwMDAiIHI9IjUwMDAwIiBiPSI1MDAwMCIvPjwvYTpw''@;'; put 'put ''YXRoPicsRFtELmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLERbRC5sZW5ndGhdPSI8L2E6YmdGaWxsU3R5bGVMc3Q+IixEW0QubGVuZ3RoXT0iPC9hOmZtdFNjaGVtZT4iLERbRC5sZW5ndGhdPSI8L2E6dGhlbWVFbGVtZW50cz4iLERbRC5sZW5ndGhdPSI8YTpvYmplY3REZWZhdWx0cz4iLERb''@;'; put 'put ''RC5sZW5ndGhdPSI8YTpzcERlZj4iLERbRC5sZW5ndGhdPSc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjEiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjMiPjxhOnNjaGVtZUNsciB2''@;'; put 'put ''YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PSIyIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9Imx0MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLERbRC5s''@;'; put 'put ''ZW5ndGhdPSI8L2E6c3BEZWY+IixEW0QubGVuZ3RoXT0iPGE6bG5EZWY+IixEW0QubGVuZ3RoXT0nPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PSIyIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYg''@;'; put 'put ''aWR4PSIwIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9Im1pbm9yIj48YTpzY2hlbWVDbHIgdmFsPSJ0eDEiLz48L2E6Zm9u''@;'; put 'put ''dFJlZj48L2E6c3R5bGU+JyxEW0QubGVuZ3RoXT0iPC9hOmxuRGVmPiIsRFtELmxlbmd0aF09IjwvYTpvYmplY3REZWZhdWx0cz4iLERbRC5sZW5ndGhdPSI8YTpleHRyYUNsclNjaGVtZUxzdC8+IixEW0QubGVuZ3RoXT0iPC9hOnRoZW1lPiIsRC5qb2luKCIiKX1mdW5jdGlvbiBESCh3KXt2''@;'; put 'put ''YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMiktNCxlZT1bUF07c3dpdGNoKFApe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6ZWVbMV09ZnVuY3Rpb24ga18odyl7dmFyIFA9e307c3dpdGNoKFAueGNsclR5cGU9''@;'; put 'put ''dy5yZWFkX3NoaWZ0KDIpLFAublRpbnRTaGFkZT13LnJlYWRfc2hpZnQoMiksUC54Y2xyVHlwZSl7Y2FzZSAwOmNhc2UgNDp3LmwrPTQ7YnJlYWs7Y2FzZSAxOlAueGNsclZhbHVlPWZ1bmN0aW9uIHg4KHcsUCl7cmV0dXJuIHh1KHcsUCl9KHcsNCk7YnJlYWs7Y2FzZSAyOlAueGNsclZhbHVl''@;'; put 'put ''PUs2KHcpO2JyZWFrO2Nhc2UgMzpQLnhjbHJWYWx1ZT1mdW5jdGlvbiBuQSh3KXtyZXR1cm4gdy5yZWFkX3NoaWZ0KDQpfSh3KX1yZXR1cm4gdy5sKz04LFB9KHcpO2JyZWFrO2Nhc2UgNjplZVsxXT1mdW5jdGlvbiBPSCh3LFApe3JldHVybiB4dSh3LFApfSh3LEQpO2JyZWFrO2Nhc2UgMTQ6''@;'; put 'put ''Y2FzZSAxNTplZVsxXT13LnJlYWRfc2hpZnQoMT09PUQ/MToyKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIEV4dFByb3AgdHlwZTogIitQKyIgIitEKX1yZXR1cm4gZWV9ZnVuY3Rpb24gUkgodyxQKXtQLmZvckVhY2goZnVuY3Rpb24oRCl7c3dpdGNoKERb''@;'; put 'put ''MF0pe2Nhc2UgNDpjYXNlIDU6Y2FzZSA2OmNhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6YnJlYWs7Y2FzZSAxMzp3LmZvbnQmJncuZm9udC5jb2xvciYmQXJyYXkuaXNBcnJheShEWzFdLnhjbHJWYWx1ZSkmJih3LmZvbnQuY29sb3IucmdiPWZm''@;'; put 'put ''KERbMV0ueGNsclZhbHVlKSl9fSl9ZnVuY3Rpb24gZGwodyl7cmV0dXJuIHcvOTE0NDAwKmsyfWZ1bmN0aW9uIHJBKHcsUCl7dmFyIEQ9e307aWYody5wb3MpRC54PWRsKHcucG9zLngpLEQueT1kbCh3LnBvcy55KTtlbHNle2lmKCF3LmZyb20pdGhyb3ciYmFkIGFuY2hvciBzdGFydCI7RC5y''@;'; put 'put ''PXcuZnJvbS5yfHwwLEQuYz13LmZyb20uY3x8MCx3LmZyb20uY09mZiYmKEQueD1kbCh3LmZyb20uY09mZikpLHcuZnJvbS5yT2ZmJiYoRC55PWRsKHcuZnJvbS5yT2ZmKSl9aWYody5leHQpRC53PWRsKHcuZXh0LngpLEQuaD1kbCh3LmV4dC55KTtlbHNle2lmKCF3LnRvKXRocm93ImJhZCBh''@;'; put 'put ''bmNob3IgZW5kIjtELkM9dy50by5jLEQuUj13LnRvLnIsdy50by5jT2ZmJiYoRC5YPWRsKHcudG8uY09mZikpLHcudG8uck9mZiYmKEQuWT1kbCh3LnRvLnJPZmYpKX1yZXR1cm4gRH1mdW5jdGlvbiB4Mih3LFApe3ZhciBEPXt4Oi0xLHk6LTEsdzotMSxoOi0xfTtpZih3LnBvcylELng9ZGwo''@;'; put 'put ''dy5wb3MueCksRC55PWRsKHcucG9zLnkpO2Vsc2V7aWYoIXcuZnJvbSl0aHJvdyJiYWQgYW5jaG9yIHN0YXJ0IjtELng9cGYoUCx3LmZyb20uYywiQyIpK2RsKHcuZnJvbS5jT2ZmKSxELnk9cGYoUCx3LmZyb20uciwiUiIpK2RsKHcuZnJvbS5yT2ZmKX1pZih3LmV4dClELnc9ZGwody5leHQu''@;'; put 'put ''eCksRC5oPWRsKHcuZXh0LnkpO2Vsc2V7aWYoIXcudG8pdGhyb3ciYmFkIGFuY2hvciBlbmQiO0Qudz1wZihQLHcudG8uYywiQyIpK2RsKHcudG8uY09mZiktRC54LEQuaD1wZihQLHcudG8uciwiUiIpK2RsKHcudG8uck9mZiktRC55fXJldHVybiBEfWZ1bmN0aW9uIEE4KHcsUCl7dmFyIEQ9''@;'; put 'put ''e3I6LTEsYzotMSx4Oi0xLHk6LTEsUjotMSxDOi0xLFg6LTEsWTotMX07c3dpdGNoKHcudHlwZSl7Y2FzZSJ0d29DZWxsQW5jaG9yIjpELnI9dy5mcm9tLnIsRC55PWRsKHcuZnJvbS5yT2ZmKSxELlI9dy50by5yLEQuWT1kbCh3LnRvLnJPZmYpLEQuYz13LmZyb20uYyxELng9ZGwody5mcm9t''@;'; put 'put ''LmNPZmYpLEQuQz13LnRvLmMsRC5YPWRsKHcudG8uY09mZik7YnJlYWs7Y2FzZSJvbmVDZWxsQW5jaG9yIjpELnI9dy5mcm9tLnIsRC55PWRsKHcuZnJvbS5yT2ZmKTt2YXIgZWU9bWgoUCxELnIsRC55K2RsKHcuZXh0LnkpKTtELlI9ZWVbMF0sRC5ZPWVlWzFdLEQuYz13LmZyb20uYyxELng9''@;'; put 'put ''ZGwody5mcm9tLmNPZmYpO3ZhciBvZT1POChQLEQuYyxELngrZGwody5leHQueCkpO0QuQz1vZVswXSxELlg9b2VbMV07YnJlYWs7Y2FzZSJhYnNvbHV0ZUFuY2hvciI6dmFyIGdlPW1oKFAsMCxkbCh3LnBvcy55KSk7RC5yPWdlWzBdLEQueT1nZVsxXTt2YXIgX2U9bWgoUCxELnIsRC55K2Rs''@;'; put 'put ''KHcuZXh0LnkpKTtELlI9X2VbMF0sRC5ZPV9lWzFdO3ZhciB2ZT1taChQLDAsZGwody5wb3MueCkpO0QuYz12ZVswXSxELng9dmVbMV07dmFyIE1lPW1oKFAsRC5jLEQueCtkbCh3LmV4dC54KSk7RC5DPU1lWzBdLEQuWD1NZVsxXTticmVhaztkZWZhdWx0OnRocm93ImJhZCBhbmNob3IgdHlw''@;'; put 'put ''ZSAiK3cudHlwZX1yZXR1cm4gRH1mdW5jdGlvbiBUOCh3LFApe3ZhciBEPXcudHJpbSgpLnNwbGl0KC9ccyosXHMqLyk7UFsiIXBvcyJdPXtjOitEWzBdLHg6K0RbMV0scjorRFsyXSx5OitEWzNdLEM6K0RbNF0sWDorRFs1XSxSOitEWzZdLFk6K0RbN119fWZ1bmN0aW9uIGlBKHcsUCxEKXt2''@;'; put 'put ''YXIgZWU9LTE7aWYobnVsbCE9dy5SfHxudWxsIT13LkMpZWU9MDtlbHNle2lmKG51bGw9PXcueHx8bnVsbD09dy55fHxudWxsPT13Lnd8fG51bGw9PXcuaCl0aHJvdyJjYW5ub3QgcGFyc2UgYW5jaG9yICIrSlNPTi5zdHJpbmdpZnkodyk7ZWU9MSsyKiEody5jfHx3LnIpfWlmKGVlIT1QKXtz''@;'; put 'put ''d2l0Y2goUCl7Y2FzZSAwOmNhc2UgMTppZigzIT1lZSlicmVhazt2YXIgb2U9TzgoRCx3LmN8fDAsdy54fHwwKTt3LmM9b2VbMF0sdy54PW9lWzFdO3ZhciBnZT1taChELHcucnx8MCx3Lnl8fDApO3cucj1nZVswXSx3Lnk9Z2VbMV07YnJlYWs7Y2FzZSAzOmlmKDM9PWVlKWJyZWFrO3ZhciBf''@;'; put 'put ''ZT13LmN8fDAsdmU9dy54fHwwO2RlbGV0ZSB3LmMsZGVsZXRlIHcueCx3Lng9KF9lP3ptKEQsX2UpOjApK3ZlO3ZhciBNZT13LnJ8fDAsamU9dy55fHwwO2RlbGV0ZSB3LnIsZGVsZXRlIHcueSx3Lnk9KE1lP0FwKEQsTWUpOjApK2plO2JyZWFrO2RlZmF1bHQ6dGhyb3ciY29udmVydF9hbmNo''@;'; put 'put ''b3IgdW5yZWNvZ25pemVkIHR5cGUgIitQfXN3aXRjaChQKXtjYXNlIDA6aWYoMD09ZWUpYnJlYWs7dmFyIFVlPU84KEQsdy5jfHwwLCh3Lnh8fDApK3cudyk7ZGVsZXRlIHcudyx3LkM9VWVbMF0sdy5YPVVlWzFdO3ZhciBYZT1taChELHcucnx8MCwody55fHwwKSt3LmgpO2RlbGV0ZSB3Lmgs''@;'; put 'put ''dy5SPVhlWzBdLHcuWT1YZVsxXTticmVhaztjYXNlIDE6Y2FzZSAzOmlmKDAhPWVlKWJyZWFrO3ZhciBpdD13LkN8fDAsZnQ9dy5YfHwwO2RlbGV0ZSB3LkMsZGVsZXRlIHcuWCx3Lnc9em0oRCxpdCkrZnQtKHcuYz96bShELHcuYyk6MCktKHcueHx8MCk7dmFyIE10PXcuUnx8MCx1dD13Lll8''@;'; put 'put ''fDA7ZGVsZXRlIHcuUixkZWxldGUgdy5ZLHcuaD1BcChELE10KSt1dC0ody5yP0FwKEQsdy5yKTowKS0ody55fHwwKTticmVhaztkZWZhdWx0OnRocm93ImNvbnZlcnRfYW5jaG9yIHVucmVjb2duaXplZCB0eXBlICIrUH19fWZ1bmN0aW9uIG9BKHcpe3ZhciBQPVt3LmN8fDAsTWF0aC5yb3Vu''@;'; put 'put ''ZCh3Lnh8fDApLHcucnx8MCxNYXRoLnJvdW5kKHcueXx8MCldO3JldHVybihQPVAuY29uY2F0KHcuaCYmdy53P1tQWzBdLE1hdGgucm91bmQoUFsxXSt3LncpLFBbMl0sTWF0aC5yb3VuZChQWzNdK3cuaCldOlt3LkN8fDAsTWF0aC5yb3VuZCh3Llh8fDApLHcuUnx8MCxNYXRoLnJvdW5kKHcu''@;'; put 'put ''WXx8MCldKSkuam9pbigiLCAiKX1mdW5jdGlvbiBBcCh3LFApe2lmKCF3KXJldHVybiAwO2Zvcih2YXIgRD0wOy0tUD49MDspe3ZhciBlZT0oKHdbIiFyb3dzIl18fFtdKVtQXXx8e30pLmhweDtudWxsPT1lZSYmKGVlPSgod1siIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51''@;'; put 'put ''bGw9PWVlJiYoZWU9MjQpLEQrPWVlfXJldHVybiBEfWZ1bmN0aW9uIHptKHcsUCl7aWYoIXcpcmV0dXJuIDA7Zm9yKHZhciBEPTA7LS1QPj0wOyl7dmFyIGVlPSgod1siIWNvbHMiXXx8W10pW1BdfHx7fSkud3B4O2lmKG51bGw9PWVlJiYoZWU9KCh3WyIhc2hlZXRGb3JtYXQiXXx8e30pLmNv''@;'; put 'put ''bHx8e30pLndweCksbnVsbD09ZWUpe3ZhciBvZT17d2NoOjguNDN9O19jKG9lKSx3WyIhY29scyJdJiYod1siIWNvbHMiXVtQXT1vZSksZWU9b2Uud3B4fUQrPWVlfXJldHVybiBEfWZ1bmN0aW9uIHBmKHcsUCxEKXtyZXR1cm4iQyI9PUQ/em0odyxQKTpBcCh3LFApfWZ1bmN0aW9uIG1oKHcs''@;'; put 'put ''UCxEKXt2YXIgZWU9W1AsRF07aWYoIXcpcmV0dXJuIGVlO2Zvcig7Oyl7dmFyIG9lPSh3WyIhcm93cyJdfHxbXSlbZWVbMF1dfHx7fTtpZihvZS5oaWRkZW4pKytlZVswXTtlbHNle3ZhciBnZT1vZS5ocHg7aWYobnVsbD09Z2UmJihnZT0oKHdbIiFzaGVldEZvcm1hdCJdfHx7fSkucm93fHx7''@;'; put 'put ''fSkuaHB4KSxudWxsPT1nZSYmKGdlPWRmKDE1KSksZWVbMV08Z2UpYnJlYWs7ZWVbMF0rKyxlZVsxXS09Z2V9fXJldHVybiBlZX1mdW5jdGlvbiBPOCh3LFAsRCl7dmFyIGVlPVtQLERdO2lmKCF3KXJldHVybiBlZTtmb3IoOzspe3ZhciBvZT0od1siIWNvbHMiXXx8W10pW2VlWzBdXXx8e307''@;'; put 'put ''aWYob2UuaGlkZGVufHwwPT09b2Uud3B4KSsrZWVbMF07ZWxzZXt2YXIgZ2U9b2Uud3B4O2lmKG51bGw9PWdlJiYoZ2U9KCh3WyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCksbnVsbD09Z2Upe3ZhciBfZT17d2NoOjguNDN9O19jKF9lKSx3WyIhY29scyJdJiYod1siIWNvbHMi''@;'; put 'put ''XVtlZVswXV09X2UpLGdlPV9lLndweH1pZihlZVsxXTxnZSlicmVhaztlZVswXSsrLGVlWzFdLT1nZX19cmV0dXJuIGVlfWZ1bmN0aW9uIFVjKHcpe3JldHVybigiMDAwMDAwIisoIm51bWJlciI9PXR5cGVvZiB3P3cudG9TdHJpbmcoMTYpOncpKS5zbGljZSgtNil9ZnVuY3Rpb24gbGQodyxQ''@;'; put 'put ''LEQpe3ZhciBlZT0ic3RyaW5nIj09dHlwZW9mIFA/ISFEOiEhUDsic3RyaW5nIiE9dHlwZW9mIFAmJihQPSJjb2xvciIpO3ZhciBvZT0iPCIrUCsiICI7cmV0dXJuIHcuYXV0bz9vZSsnYXV0bz0iMSIvPic6dy5pbmRleCYmbnVsbD09dy5yZ2I/b2UrJ2luZGV4ZWQ9Iicrdy5pbmRleCsnIi8+''@;'; put 'put ''JzpudWxsIT13LnRoZW1lP29lKyd0aGVtZT0iJyt3LnRoZW1lKyciJysody50aW50PycgdGludD0iJyt3LnRpbnQrJyInOiIiKSsiLz4iOm51bGwhPXcucmdiP29lKydyZ2I9IicrKGVlPyJGRiI6IiIpK1VjKHcucmdiKSsnIi8+JzpvZSsiLz4ifWZ1bmN0aW9uIFRwKHcsUCl7aWYoIXd8fG51''@;'; put 'put ''bGw9PXcucmdiKXJldHVybiBQO2Zvcih2YXIgRD0oIjAwMDAwMCIrdy5yZ2IudG9TdHJpbmcoMTYpKS5zbGljZSgtNiksZWU9W0Quc2xpY2UoMCwyKSxELnNsaWNlKDIsNCksRC5zbGljZSg0LDYpXS5tYXAoZnVuY3Rpb24oX2Upe3JldHVybiBwYXJzZUludChfZSwxNil9KSxvZT0wO29lPFNy''@;'; put 'put ''Lmxlbmd0aDsrK29lKXt2YXIgZ2U9U3Jbb2VdO2lmKGdlWzBdPT1lZVswXSYmZ2VbMV09PWVlWzFdJiZnZVsyXT09ZWVbMl0pcmV0dXJuIG9lfXJldHVybiBTci5sZW5ndGg8NjQ/KFNyLnB1c2goW2VlWzBdLGVlWzFdLGVlWzJdXSksU3IubGVuZ3RoLTEpOlB9ZnVuY3Rpb24gbWYodyl7dmFy''@;'; put 'put ''IFA9WyIiLCIiLCIiXTtpZighdylyZXR1cm5bXTt2YXIgRD0iIixlZT13JiZ3LnM/ZnVuY3Rpb24gTEgodyl7dmFyIFA9WyIiLCIiXTtpZighdylyZXR1cm4gUDtpZih3LnN6JiYoUFswXSs9IiYiK3cuc3osUFsxXT0iJjEyIitQWzFdKSx3Lm5hbWUmJihQWzBdKz0nJiInK3cubmFtZSsnLFJl''@;'; put 'put ''Z3VsYXIiJyxQWzFdPScmIi0sUmVndWxhciInK1BbMV0pLHcuYm9sZCYmKFBbMF0rPSImQiIsUFsxXT0iJkIiK1BbMV0pLHcudW5kZXJsaW5lKXt2YXIgRD0yPT13LnVuZGVybGluZT8iJkUiOiImVSI7UFswXSs9RCxQWzFdPUQrUFsxXX1yZXR1cm4gdy5pdGFsaWMmJihQWzBdKz0iJkkiLFBb''@;'; put 'put ''MV09IiZJIitQWzFdKSx3LmNvbG9yJiZudWxsIT13LmNvbG9yLnJnYiYmKFBbMF0rPSImSyIrVWMody5jb2xvci5yZ2IpLFBbMV0rPSImSzAwMDAwMCIpLHcuc3RyaWtlJiYoUFswXSs9IiZTIixQWzFdPSImUyIrUFsxXSksInN1cGVyIj09dy52YWxpZ24mJihQWzBdKz0iJlgiLFBbMV09IiZY''@;'; put 'put ''IitQWzFdKSwic3ViIj09dy52YWxpZ24mJihQWzBdKz0iJlkiLFBbMV09IiZZIitQWzFdKSxQfSh3LnMpOlsiIiwiIl07cmV0dXJuInN0cmluZyI9PXR5cGVvZiB3P1t3LHcsd106bnVsbCE9dy5maXJzdHx8bnVsbCE9dy5ldmVufHxudWxsIT13Lm9kZD8obnVsbCE9dy5vZGQmJihQWzBdPW1m''@;'; put 'put ''KHcub2RkKVswXSksdm9pZCAwPT09dy5maXJzdCYmUFswXSYmKFBbMV09UFswXSksbnVsbCE9dy5maXJzdCYmKFBbMV09bWYody5maXJzdClbMF0pLG51bGwhPXcuZXZlbiYmKFBbMl09bWYody5ldmVuKVswXSksUCk6dy5sZWZ0fHx3LmNlbnRlcnx8dy5yaWdodD8ody5sZWZ0JiYoRCs9IiZM''@;'; put 'put ''IittZih3LmxlZnQpWzBdKSx3LmNlbnRlciYmKEQrPSImQyIrbWYody5jZW50ZXIpWzBdKSx3LnJpZ2h0JiYoRCs9IiZSIittZih3LnJpZ2h0KVswXSksW0QsRCxEXSk6bnVsbCE9dy52P1tEPWVlWzBdK3cudi5yZXBsYWNlKC8mL2csIiYmIikrZWVbMV0sRCxEXTpudWxsIT13Lnc/W0Q9ZWVb''@;'; put 'put ''MF0rdy53K2VlWzFdLEQsRF06QXJyYXkuaXNBcnJheSh3LlIpPyh3LlIuZm9yRWFjaChmdW5jdGlvbihvZSl7RCs9bWYob2UpWzBdfSksW0QsRCxEXSk6W119dmFyIEQ4PXsxOiJMZXR0ZXIiLDM6IlRhYmxvaWQiLDU6IkxlZ2FsIiw3OiJFeGVjdXRpdmUiLDg6IkEzIiw5OiJBNCIsMTE6IkE1''@;'; put 'put ''IiwxMjoiQjQiLDEzOiJCNSIsMTQ6IkZvbGlvIiwyMDoiRW52ZWxvcGUiLDM3OiJNb25hcmNoIiw3MDoiQTYifSxFXz13ZShEOCk7TmkuQ09OTj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jb25uZWN0aW9ucyI7''@;'; put 'put ''dmFyIFI4PU1yKCJleHRlcm5hbExpbmsiLG51bGwse3htbG5zOnNhLm1haW5bMF19KTtOaS5JTUc9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaW1hZ2UiLE5pLkRSQVc9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxm''@;'; put 'put ''b3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZHJhd2luZyI7dmFyIFBIPXt0OiJ0b3AiLGN0cjoiY2VudGVyIixiOiJib3R0b20iLGp1c3Q6InRvcCIsZGlzdDoidG9wIn0sY0E9e2N0cjoiY2VudGVyIixkaXN0OiJjZW50ZXIiLGp1c3Q6ImNlbnRlciIsanVz''@;'; put 'put ''dExvdzoiY2VudGVyIixsOiJsZWZ0IixyOiJyaWdodCIsdGhhaURpc3Q6ImNlbnRlciJ9O2Z1bmN0aW9uIGZBKCl7dmFyIHc9W0JuXTtyZXR1cm4gdy5wdXNoKCc8eGRyOndzRHIgeG1sbnM6eGRyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvc3By''@;'; put 'put ''ZWFkc2hlZXREcmF3aW5nIiB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIvPicpLHcuam9pbigiIil9ZnVuY3Rpb24gZEEodyl7dmFyIEQsUD13WyIhZGF0YSJdO3JldHVybiJiYXNlNjQiPT09d1siIWRhdGF0eXBlIl0/KChE''@;'; put 'put ''PVAubWF0Y2goL15kYXRhOi4qLC8pKSYmKFA9UC5zbGljZShEWzBdLmxlbmd0aCkpLGxlLmRlY29kZShQKSk6UH1OaS5UQUJMRT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy90YWJsZSI7dmFyIE9wPS88KD86XHcr''@;'; put 'put ''Oik/c2hhcGUoPzpbXlx3XVtePl0qKT8+KFtcc1xTXSo/KTxcLyg/Olx3KzopP3NoYXBlPi9nO2Z1bmN0aW9uIFZIKHcsUCxELGVlKXt2YXIgb2U9WzIxNjAwLDIxNjAwXSxnZT1bIm0wLDBsMCIsb2VbMV0sb2VbMF0sb2VbMV0sb2VbMF0sIjB4ZSJdLmpvaW4oIiwiKSxfZT1bTXIoInhtbCIs''@;'; put 'put ''bnVsbCx7InhtbG5zOnYiOkdpLnYsInhtbG5zOm8iOkdpLm8sInhtbG5zOngiOkdpLngsInhtbG5zOm12IjpHaS5tdn0pLnJlcGxhY2UoL1wvPi8sIj4iKSxNcigibzpzaGFwZWxheW91dCIsTXIoIm86aWRtYXAiLG51bGwseyJ2OmV4dCI6ImVkaXQifSkseyJ2OmV4dCI6ImVkaXQifSldLHZl''@;'; put 'put ''PTEwMjQqdyxNZT1EfHxbXTtNZS5sZW5ndGg+MCYmX2UucHVzaChNcigidjpzaGFwZXR5cGUiLFtNcigidjpzdHJva2UiLG51bGwse2pvaW5zdHlsZToibWl0ZXIifSksTXIoInY6cGF0aCIsbnVsbCx7c2hhZG93b2s6ImYiLGV4dHJ1c2lvbm9rOiJmIixzdHJva2VvazoiZiIsZmlsbG9rOiJm''@;'; put 'put ''Iiwibzpjb25uZWN0dHlwZSI6InJlY3QifSksTXIoIm86bG9jayIsbnVsbCx7InY6ZXh0IjoiZWRpdCIsc2hhcGV0eXBlOiJ0In0pXS5qb2luKCIiKSx7aWQ6Il94MDAwMF90MjAxIixjb29yZHNpemU6b2Uuam9pbigiLCIpLCJvOnNwdCI6MjAxLHBhdGg6Z2V9KSksTWUuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihVZSl7Kyt2ZSxfZT1fZS5jb25jYXQoZnVuY3Rpb24gcEEodyxQKXt2YXIgRD17aWQ6Il94MDAwMF9zIitQLHR5cGU6IiNfeDAwMDBfdDIwMSIsc3R5bGU6Im1zby13cmFwLXN0eWxlOnRpZ2h0In07KCJSYWRpbyI9PXdbIiF0eXBlIl18fCJDaGVja2JveCI9PXdbIiF0eXBlIl18fCJM''@;'; put 'put ''aXN0Ij09d1siIXR5cGUiXXx8IkRyb3AiPT13WyIhdHlwZSJdKSYmKEQuc3Ryb2tlZD0iZiIpLCJMYWJlbCI9PXdbIiF0eXBlIl0mJihELmZpbGxlZD0iZiIpO3ZhciBlZT0iIjt3LnQmJmhBW3dbIiF0eXBlIl1dJiYoZWU9aEFbd1siIXR5cGUiXV0ucmVwbGFjZSgvIyMjIy8sQnIody50KSkp''@;'; put 'put ''O3ZhciBvZT1bXTtyZXR1cm4gdy5tYWNybyYmb2UucHVzaCh2YSgieDpGbWxhTWFjcm8iLHcubWFjcm8pKSx3LmxpbmsmJm9lLnB1c2godmEoIng6Rm1sYUxpbmsiLHcubGluaykpLHcudmFsJiZvZS5wdXNoKHZhKCJSYWRpbyI9PXdbIiF0eXBlIl18fCJDaGVja2JveCI9PXdbIiF0eXBlIl0/''@;'; put 'put ''Ing6Q2hlY2tlZCI6Ing6VmFsIixTdHJpbmcody52YWwpKSksdy5yZWYmJm9lLnB1c2godmEoIng6Rm1sYVJhbmdlIix3LnJlZikpLHcuc2VsJiYiTGlzdCI9PXdbIiF0eXBlIl0mJm9lLnB1c2godmEoIng6U2VsVHlwZSIsdy5zZWwpKSx3Lm1pbiYmb2UucHVzaCh2YSgieDpNaW4iLFN0cmlu''@;'; put 'put ''Zyh3Lm1pbikpKSx3Lm1heCYmb2UucHVzaCh2YSgieDpNYXgiLFN0cmluZyh3Lm1heCkpKSx3LnN0ZXAmJm9lLnB1c2godmEoIng6SW5jIixTdHJpbmcody5zdGVwKSkpLHcucGFnZSYmb2UucHVzaCh2YSgieDpQYWdlIixTdHJpbmcody5wYWdlKSkpLFtdLmNvbmNhdChbIjx2OnNoYXBlIitG''@;'; put 'put ''bChEKSsiPiJdKS5jb25jYXQoVF9bd1siIXR5cGUiXV18fFtdKS5jb25jYXQoW2VlXSkuY29uY2F0KFsnPHg6Q2xpZW50RGF0YSBPYmplY3RUeXBlPSInK3dbIiF0eXBlIl0rJyI+Jyx2YSgieDpBbmNob3IiLG9BKHdbIiFwb3MiXSkpLHZhKCJ4OlByaW50T2JqZWN0IiwiRmFsc2UiKV0pLmNv''@;'; put 'put ''bmNhdChvZSkuY29uY2F0KEpRW3dbIiF0eXBlIl1dfHxbXSkuY29uY2F0KFsiPC94OkNsaWVudERhdGE+IiwiPC92OnNoYXBlPiJdKX0oVWUsdmUpKX0pO3ZhciBqZT1QfHxbXTtyZXR1cm4gamUubGVuZ3RoPjAmJl9lLnB1c2goTXIoInY6c2hhcGV0eXBlIixbTXIoInY6c3Ryb2tlIixudWxs''@;'; put 'put ''LHtqb2luc3R5bGU6Im1pdGVyIn0pLE1yKCJ2OnBhdGgiLG51bGwse2dyYWRpZW50c2hhcGVvazoidCIsIm86Y29ubmVjdHR5cGUiOiJyZWN0In0pXS5qb2luKCIiKSx7aWQ6Il94MDAwMF90MjAyIixjb29yZHNpemU6b2Uuam9pbigiLCIpLCJvOnNwdCI6MjAyLHBhdGg6Z2V9KSksamUuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihVZSl7Kyt2ZSxfZT1fZS5jb25jYXQoZnVuY3Rpb24gR20odyxQLEQpe3ZhciBlZT1jYSh3WzBdKSxvZT13WzFdLmZpbGx8fHt9O3dbMV0ucyYmKG9lPXt0eXBlOndbMV0ucy5wYXR0ZXJuVHlwZXx8InNvbGlkIn0sd1sxXS5zLmZnQ29sb3ImJihvZS5jb2xvcjI9b2Uu''@;'; put 'put ''Y29sb3IxPSIjIitVYyh3WzFdLnMuZmdDb2xvci5yZ2IpKSx3WzFdLnMuYmdDb2xvciYmKG9lLmNvbG9yMj0iIyIrVWMod1sxXS5zLmJnQ29sb3IucmdiKSkpO3ZhciBnZT17Y29sb3IyOm9lLmNvbG9yMnx8IiNCRUZGODIiLHR5cGU6b2UudHlwZXx8ImdyYWRpZW50In07ImdyYWRpZW50Ij09''@;'; put 'put ''Z2UudHlwZSYmKGdlLmFuZ2xlPSItMTgwIik7dmFyIF9lPSJncmFkaWVudCI9PWdlLnR5cGU/TXIoIm86ZmlsbCIsbnVsbCx7dHlwZToiZ3JhZGllbnRVbnNjYWxlZCIsInY6ZXh0IjoidmlldyJ9KTpudWxsLHZlPU1yKCJ2OmZpbGwiLF9lLGdlKSxNZT17fTt3WzFdLnNoYWRvdyYmKHdbMV0u''@;'; put 'put ''c2hhZG93LmNvbG9yJiYoTWUuY29sb3I9d1sxXS5zaGFkb3cuY29sb3IpLHdbMV0uc2hhZG93Lm9uJiYoTWUub249d1sxXS5zaGFkb3cub24pKSxNZS5vYnNjdXJlZD0idCI7dmFyIGplPSEwLFVlPSEwLFhlPXdbMV1bIiFwb3MiXT9KdCh3WzFdWyIhcG9zIl0pOm51bGw7cmV0dXJuIFhlJiYo''@;'; put 'put ''VWU9bnVsbD09WGUuUiYmbnVsbD09WGUuQyYmbnVsbD09WGUuWCYmbnVsbD09WGUuWSxqZT0hWGUuciYmIVhlLmMsaUEoWGUsMCxEKSksWyI8djpzaGFwZSIrRmwoe2lkOiJfeDAwMDBfcyIrUCx0eXBlOiIjX3gwMDAwX3QyMDIiLHN0eWxlOiJwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLWxl''@;'; put 'put ''ZnQ6ODBwdDttYXJnaW4tdG9wOjVwdDt3aWR0aDoxMDRwdDtoZWlnaHQ6NjRwdDt6LWluZGV4OjEwIisod1sxXS5oaWRkZW4/Ijt2aXNpYmlsaXR5OmhpZGRlbiI6IiIpLGZpbGxjb2xvcjpvZS5jb2xvcjF8fCIjRUNGQUQ0IixzdHJva2Vjb2xvcjood1sxXS5zdHJva2V8fHt9KS5jb2xvcnx8''@;'; put 'put ''IiNlZGVhYTEifSkrIj4iLHZlLE1yKCJ2OnNoYWRvdyIsbnVsbCxNZSksTXIoInY6cGF0aCIsbnVsbCx7Im86Y29ubmVjdHR5cGUiOiJub25lIn0pLCc8djp0ZXh0Ym94PjxkaXYgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC9kaXY+PC92OnRleHRib3g+JywnPHg6Q2xpZW50RGF0YSBPYmpl''@;'; put 'put ''Y3RUeXBlPSJOb3RlIj4nLGplPyI8eDpNb3ZlV2l0aENlbGxzLz4iOiIiLFVlPyI8eDpTaXplV2l0aENlbGxzLz4iOiIiLHZhKCJ4OkFuY2hvciIsWGU/b0EoWGUpOndbMV0ucmF3YW5jaG9yfHxbZWUuYysxLDAsZWUucisxLDAsZWUuYyszLDIwLGVlLnIrNSwyMF0uam9pbigiLCIpKSx2YSgi''@;'; put 'put ''eDpBdXRvRmlsbCIsIkZhbHNlIiksdmEoIng6Um93IixTdHJpbmcoZWUucikpLHZhKCJ4OkNvbHVtbiIsU3RyaW5nKGVlLmMpKSx3WzFdLmhpZGRlbj8iIjoiPHg6VmlzaWJsZS8+IiwiPC94OkNsaWVudERhdGE+IiwiPC92OnNoYXBlPiJdfShVZSx2ZSxlZSkpfSksX2UucHVzaCgiPC94bWw+''@;'; put 'put ''IiksX2Uuam9pbigiIil9dmFyIEpRPXtCdXR0b246WyI8eDpBdXRvRmlsbD5GYWxzZTwveDpBdXRvRmlsbD4iLCI8eDpUZXh0SEFsaWduPkNlbnRlcjwveDpUZXh0SEFsaWduPiIsIjx4OlRleHRWQWxpZ24+Q2VudGVyPC94OlRleHRWQWxpZ24+Il0sR0JveDpbIjx4OlNpemVXaXRoQ2VsbHMv''@;'; put 'put ''PiIsIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4Ok5vVGhyZWVELz4iXSxMYWJlbDpbIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiJdLFJhZGlvOlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0Zp''@;'; put 'put ''bGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0b0xpbmU+IiwiPHg6VGV4dFZBbGlnbj5DZW50ZXI8L3g6VGV4dFZBbGlnbj4iLCI8eDpOb1RocmVlRC8+Il0sQ2hlY2tib3g6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvRmlsbD5GYWxzZTwveDpB''@;'; put 'put ''dXRvRmlsbD4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpUZXh0VkFsaWduPkNlbnRlcjwveDpUZXh0VkFsaWduPiIsIjx4Ok5vVGhyZWVELz4iXSxEcm9wOlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0b0xpbmU+IiwiPHg6Tm9U''@;'; put 'put ''aHJlZUQyLz4iLCI8eDpTZWxUeXBlPlNpbmdsZTwveDpTZWxUeXBlPiIsIjx4OkRyb3BTdHlsZT5Db21ibzwveDpEcm9wU3R5bGU+IiwiPHg6TENUPk5vcm1hbDwveDpMQ1Q+IiwiPHg6RHJvcExpbmVzPjQ8L3g6RHJvcExpbmVzPiJdLExpc3Q6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpB''@;'; put 'put ''dXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpOb1RocmVlRDIvPiIsIjx4OkxDVD5Ob3JtYWw8L3g6TENUPiIsIjx4OlZhbD4wPC94OlZhbD4iLCI8eDpNaW4+MDwveDpNaW4+IiwiPHg6TWF4PjU8L3g6TWF4PiIsIjx4OkluYz4xPC94OkluYz4iLCI8eDpQYWdlPjQ8L3g6UGFnZT4i''@;'; put 'put ''LCI8eDpEeD4xNTwveDpEeD4iXSxTY3JvbGw6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpIb3Jpei8+IiwiPHg6RHg+MTU8L3g6RHg+Il0sU3BpbjpbIjx4OkR4PjE1PC94OkR4PiJdfSxoQT17QnV0dG9uOiI8djp0ZXh0Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNp''@;'; put 'put ''bmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGZvbnQgZmFjZT0nQ2FsaWJyaScgc2l6ZT0nMjQwJyBjb2xvcj0nIzAwMDAwMCc+IyMjIzwvZm9udD48L2Rpdj48L3Y6dGV4dGJveD4iLEdCb3g6Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0''@;'; put 'put ''OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nIzAwMDAwMCc+IyMjIzwvZm9udD48L2Rpdj48L3Y6dGV4dGJveD4iLFJhZGlvOiI8djp0ZXh0Ym94IHN0eWxlPSdt''@;'; put 'put ''c28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNpbmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9J2F1dG8nPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixMYWJlbDoiPHY6dGV4''@;'; put 'put ''dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94''@;'; put 'put ''PiIsQ2hlY2tib3g6Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nIzAwMDAwMCc+IyMjIzwvZm9u''@;'; put 'put ''dD48L2Rpdj48L3Y6dGV4dGJveD4iLHNoZWV0anM6ImRhZnVxIn0sVF89e0J1dHRvbjpbJzx2OmZpbGwgY29sb3IyPSIjZjBmMGYwIFs2N10iIG86ZGV0ZWN0bW91c2VjbGljaz0idCIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sR0JveDpbJzxvOmxvY2sgdjpl''@;'; put 'put ''eHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sRHJvcDpbJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0IiB0ZXh0PSJ0Ii8+J10sTGlzdDpbJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0IiB0ZXh0PSJ0Ii8+J10sU3BpbjpbJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJv''@;'; put 'put ''dGF0aW9uPSJ0IiB0ZXh0PSJ0Ii8+J10sU2Nyb2xsOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxMYWJlbDpbJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sUmFkaW86Wyc8djpwYXRoIHNoYWRvd29rPSJ0IiBzdHJva2Vvaz0i''@;'; put 'put ''dCIgZmlsbG9rPSJ0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxDaGVja2JveDpbJzx2OnBhdGggc2hhZG93b2s9InQiIHN0cm9rZW9rPSJ0IiBmaWxsb2s9InQiLz4nLCc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLHNoZWV0anM6W119''@;'; put 'put ''O2Z1bmN0aW9uIEw4KHcsUCxELGVlKXt2YXIgb2U9eyIhaWQiOnt9fSxnZT1bTXIoInhtbCIsbnVsbCx7InhtbG5zOnYiOkdpLnYsInhtbG5zOm8iOkdpLm8sInhtbG5zOngiOkdpLnh9KS5yZXBsYWNlKC9cLz4vLCI+IiksTXIoIm86c2hhcGVsYXlvdXQiLE1yKCJvOmlkbWFwIixudWxsLHsi''@;'; put 'put ''djpleHQiOiJlZGl0IixkYXRhOjF9KSx7InY6ZXh0IjoiZWRpdCJ9KSwnPHY6c2hhcGV0eXBlIGlkPSJfeDAwMDBfdDc1IiBjb29yZHNpemU9IjIxNjAwLDIxNjAwIiBvOnNwdD0iNzUiIG86cHJlZmVycmVsYXRpdmU9InQiIHBhdGg9Im1ANEA1bEA0QDExQDlAMTFAOUA1eGUiIGZpbGxlZD0i''@;'; put 'put ''ZiIgc3Ryb2tlZD0iZiI+JywnPHY6c3Ryb2tlIGpvaW5zdHlsZT0ibWl0ZXIiLz4nLCI8djpmb3JtdWxhcz4iLCc8djpmIGVxbj0iaWYgbGluZURyYXduIHBpeGVsTGluZVdpZHRoIDAiLz4nLCc8djpmIGVxbj0ic3VtIEAwIDEgMCIvPicsJzx2OmYgZXFuPSJzdW0gMCAwIEAxIi8+JywnPHY6''@;'; put 'put ''ZiBlcW49InByb2QgQDIgMSAyIi8+JywnPHY6ZiBlcW49InByb2QgQDMgMjE2MDAgcGl4ZWxXaWR0aCIvPicsJzx2OmYgZXFuPSJwcm9kIEAzIDIxNjAwIHBpeGVsSGVpZ2h0Ii8+JywnPHY6ZiBlcW49InN1bSBAMCAwIDEiLz4nLCc8djpmIGVxbj0icHJvZCBANiAxIDIiLz4nLCc8djpmIGVx''@;'; put 'put ''bj0icHJvZCBANyAyMTYwMCBwaXhlbFdpZHRoIi8+JywnPHY6ZiBlcW49InN1bSBAOCAyMTYwMCAwIi8+JywnPHY6ZiBlcW49InByb2QgQDcgMjE2MDAgcGl4ZWxIZWlnaHQiLz4nLCc8djpmIGVxbj0ic3VtIEAxMCAyMTYwMCAwIi8+JywiPC92OmZvcm11bGFzPiIsJzx2OnBhdGggbzpleHRy''@;'; put 'put ''dXNpb25vaz0iZiIgZ3JhZGllbnRzaGFwZW9rPSJ0IiBvOmNvbm5lY3R0eXBlPSJyZWN0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgYXNwZWN0cmF0aW89InQiLz4nLCI8L3Y6c2hhcGV0eXBlPiJdLF9lPTE7WyJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKHZlKXtlZVt2''@;'; put 'put ''ZV0mJlsib2RkIiwiZXZlbiIsImZpcnN0Il0uZm9yRWFjaChmdW5jdGlvbihNZSl7ZWVbdmVdW01lXSYmWyJsZWZ0IiwicmlnaHQiLCJjZW50ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKGplKXtpZihBcnJheS5pc0FycmF5KGVlW3ZlXVtNZV1bamVdKSlmb3IodmFyIFVlPTA7VWU8ZWVbdmVdW01l''@;'; put 'put ''XVtqZV0ubGVuZ3RoOysrVWUpaWYoZWVbdmVdW01lXVtqZV1bVWVdKXt2YXIgWGU9ZWVbdmVdW01lXVtqZV1bVWVdO2lmKCJyZW1vdGUiPT1YZVsiIWRhdGF0eXBlIl0pdGhyb3ciQ2Fubm90IHVzZSBsaW5rZWQgaW1hZ2UgaW4gaGVhZGVyIG9yIGZvb3RlciI7Zm9yKDtfbih3LCJ4bC9tZWRp''@;'; put 'put ''YS9pbWFnZSIrX2UrIi5qcGciKTspKytfZTt3LmZpbGUoInhsL21lZGlhL2ltYWdlIitfZSsiLmpwZyIsZEEoWGUpLHtiaW5hcnk6ITB9KSxHbyhvZSwtMSwiLi4vbWVkaWEvaW1hZ2UiK19lKyIuanBnIixOaS5JTUcpO3ZhciBpdD0iX3gwMDAwX3MiKygxMDI1K1hlLl9jbnQpLGZ0PSJwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZTttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6MDt6LWluZGV4OiIrKFhlLl9jbnQrMSkrIjsiO2Z0Kz0id2lkdGg6IitYZVsiIXBvcyJdLncrInB4OyIsZnQrPSJoZWlnaHQ6IitYZVsiIXBvcyJdLmgrInB4OyI7dmFyIE10PWplLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgp''@;'; put 'put ''K3ZlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpOyJvZGQiIT09TWUmJihNdCs9TWUudG9VcHBlckNhc2UoKSksZWVbdmVdW01lXVtqZV0ubGVuZ3RoPjEmJihNdCs9VWUpLGdlLnB1c2goTXIoInY6c2hhcGUiLFsnPHY6aW1hZ2VkYXRhIG86cmVsaWQ9InJJZCcrKFhlLl9jbnQrMSkrJyIgbzp0''@;'; put 'put ''aXRsZT0ic2hlZXRqcyIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10uam9pbigiIikse2lkOk10LCJvOnNwaWQiOml0LHR5cGU6IiNfeDAwMDBfdDc1IixzdHlsZTpmdH0pKX19KX0pfSksZ2UucHVzaCgiPC94bWw+Iiksdy5maWxlKCJ4bC9kcmF3aW5ncy92bWxE''@;'; put 'put ''cmF3aW5nIitEKyJIRi52bWwiLGdlLmpvaW4oIiIpKSx3LmZpbGUoInhsL2RyYXdpbmdzL19yZWxzL3ZtbERyYXdpbmciK0QrIkhGLnZtbC5yZWxzIixYbChvZSkpfU5pLkNNTlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9u''@;'; put 'put ''c2hpcHMvY29tbWVudHMiO3ZhciBnQT1NcigiY29tbWVudHMiLG51bGwse3htbG5zOnNhLm1haW5bMF19KTtmdW5jdGlvbiB2QSh3KXt2YXIgUD1bQm4sZ0FdLEQ9W107cmV0dXJuIFAucHVzaCgiPGF1dGhvcnM+Iiksdy5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtlZVsxXS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKG9lKXt2YXIgZ2U9QnIob2UuYSk7RC5pbmRleE9mKGdlKT4tMXx8KEQucHVzaChnZSksUC5wdXNoKCI8YXV0aG9yPiIrZ2UrIjwvYXV0aG9yPiIpKX0pfSksUC5wdXNoKCI8L2F1dGhvcnM+IiksUC5wdXNoKCI8Y29tbWVudExpc3Q+Iiksdy5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtlZVsx''@;'; put 'put ''XS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXtQLnB1c2goJzxjb21tZW50IHJlZj0iJytlZVswXSsnIiBhdXRob3JJZD0iJytELmluZGV4T2YoQnIob2UuYSkpKyciPjx0ZXh0PicpLFAucHVzaChvZS5SP3cyKG9lLlIpOnZhKCJ0IixudWxsPT1vZS50PyIiOkJyKG9lLnQpKSksUC5wdXNoKCI8L3Rl''@;'; put 'put ''eHQ+PC9jb21tZW50PiIpfSl9KSxQLnB1c2goIjwvY29tbWVudExpc3Q+IiksUC5sZW5ndGg+MiYmKFBbUC5sZW5ndGhdPSI8L2NvbW1lbnRzPiIsUFsxXT1QWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxQLmpvaW4oIiIpfXZhciBqSD1UdTtmdW5jdGlvbiBaSCh3KXt2YXIgUD1BdSgpLEQ9W107''@;'; put 'put ''cmV0dXJuIGhpKFAsIkJydEJlZ2luQ29tbWVudHMiKSxoaShQLCJCcnRCZWdpbkNvbW1lbnRBdXRob3JzIiksdy5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtlZVsxXS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXtELmluZGV4T2Yob2UuYSk+LTF8fChELnB1c2gob2UuYS5zbGljZSgwLDU0KSksaGkoUCwi''@;'; put 'put ''QnJ0Q29tbWVudEF1dGhvciIsZnVuY3Rpb24gekgodyl7cmV0dXJuIGN1KHcuc2xpY2UoMCw1NCkpfShvZS5hKSkpfSl9KSxoaShQLCJCcnRFbmRDb21tZW50QXV0aG9ycyIpLGhpKFAsIkJydEJlZ2luQ29tbWVudExpc3QiKSx3LmZvckVhY2goZnVuY3Rpb24oZWUpe2VlWzFdLmZvckVhY2go''@;'; put 'put ''ZnVuY3Rpb24ob2Upe29lLmlhdXRob3I9RC5pbmRleE9mKG9lLmEpO3ZhciBnZT17czpjYShlZVswXSksZTpjYShlZVswXSl9O2hpKFAsIkJydEJlZ2luQ29tbWVudCIsZnVuY3Rpb24gQkgodyxQKXtyZXR1cm4gbnVsbD09UCYmKFA9cHIoMzYpKSxQLndyaXRlX3NoaWZ0KDQsd1sxXS5pYXV0''@;'; put 'put ''aG9yKSxYMSh3WzBdLFApLFAud3JpdGVfc2hpZnQoNCwwKSxQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKSxQfShbZ2Usb2VdKSksb2UudCYmb2UudC5sZW5ndGg+MCYmaGkoUCwiQnJ0Q29tbWVudFRleHQiLGZ1bmN0aW9uIHNyKHcsUCl7''@;'; put 'put ''dmFyIEQ9ITE7cmV0dXJuIG51bGw9PVAmJihEPSEwLFA9cHIoMjMrNCp3LnQubGVuZ3RoKSksUC53cml0ZV9zaGlmdCgxLDEpLGN1KHcudCxQKSxQLndyaXRlX3NoaWZ0KDQsMSksZnVuY3Rpb24gWWYodyxQKXtQfHwoUD1wcig0KSksUC53cml0ZV9zaGlmdCgyLHcuaWNofHwwKSxQLndyaXRl''@;'; put 'put ''X3NoaWZ0KDIsdy5pZm50fHwwKX0oe2ljaDowLGlmbnQ6MH0sUCksRD9QLnNsaWNlKDAsUC5sKTpQfShvZSkpLGhpKFAsIkJydEVuZENvbW1lbnQiKSxkZWxldGUgb2UuaWF1dGhvcn0pfSksaGkoUCwiQnJ0RW5kQ29tbWVudExpc3QiKSxoaShQLCJCcnRFbmRDb21tZW50cyIpLFAuZW5kKCl9''@;'; put 'put ''dmFyIGdoPSJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiLFFRPVsieGxzYiIsInhsc20iLCJ4bGFtIiwiYmlmZjgiLCJ4bGEiXTtOaS5EUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kaWFs''@;'; put 'put ''b2dzaGVldCIsTmkuTVM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bE1hY3Jvc2hlZXQiO3ZhciBBMj1mdW5jdGlvbigpe3ZhciB3PS8oXnxbXkEtWmEtel9dKVIoXFs/LT9cZCtcXXxbMS05XVxkKnwpQyhcWz8tP1xkK1xdfFsxLTld''@;'; put 'put ''XGQqfCkoPyFbQS1aYS16MC05X10pL2csUD17cjowLGM6MH07ZnVuY3Rpb24gRChlZSxvZSxnZSxfZSl7dmFyIHZlPSExLE1lPSExOzA9PWdlLmxlbmd0aD9NZT0hMDoiWyI9PWdlLmNoYXJBdCgwKSYmKE1lPSEwLGdlPWdlLnNsaWNlKDEsLTEpKSwwPT1fZS5sZW5ndGg/dmU9ITA6IlsiPT1f''@;'; put 'put ''ZS5jaGFyQXQoMCkmJih2ZT0hMCxfZT1fZS5zbGljZSgxLC0xKSk7dmFyIGplPWdlLmxlbmd0aD4wPzB8cGFyc2VJbnQoZ2UsMTApOjAsVWU9X2UubGVuZ3RoPjA/MHxwYXJzZUludChfZSwxMCk6MDtyZXR1cm4gdmU/VWUrPVAuYzotLVVlLE1lP2plKz1QLnI6LS1qZSxvZSsodmU/IiI6IiQi''@;'; put 'put ''KStCYShVZSkrKE1lPyIiOiIkIikrVmEoamUpfXJldHVybiBmdW5jdGlvbihvZSxnZSl7cmV0dXJuIFA9Z2Usb2UucmVwbGFjZSh3LEQpfX0oKSxEXz0vKF58W14uX0EtWjAtOV0pKFskXT8pKFtBLVpdezEsMn18W0EtV11bQS1aXXsyfXxYW0EtRV1bQS1aXXxYRltBLURdKShbJF0/KSgxMFsw''@;'; put 'put ''LTNdXGR7NH18MTA0WzAtN11cZHszfXwxMDQ4WzAtNF1cZHsyfXwxMDQ4NVswLTZdXGR8MTA0ODU3WzAtNl18WzEtOV1cZHswLDV9KSg/IVtfLlwoQS1aYS16MC05XSkvZyxJXz1mdW5jdGlvbihQLEQpe3JldHVybiBQLnJlcGxhY2UoRF8sZnVuY3Rpb24oZWUsb2UsZ2UsX2UsdmUsTWUpe3Zh''@;'; put 'put ''ciBqZT1jMihfZSktKGdlPzA6RC5jKSxVZT1RMChNZSktKHZlPzA6RC5yKTtyZXR1cm4gb2UrIlIiKygwPT1VZT8iIjp2ZT9VZSsxOiJbIitVZSsiXSIpKyJDIisoMD09amU/IiI6Z2U/amUrMToiWyIramUrIl0iKX0pfTtmdW5jdGlvbiBiQSh3LFApe3JldHVybiB3LnJlcGxhY2UoRF8sZnVu''@;'; put 'put ''Y3Rpb24oRCxlZSxvZSxnZSxfZSx2ZSl7cmV0dXJuIGVlKygiJCI9PW9lP29lK2dlOkJhKGMyKGdlKStQLmMpKSsoIiQiPT1fZT9fZSt2ZTpWYShRMCh2ZSkrUC5yKSl9KS5yZXBsYWNlKC8oXGQrKTooXGQrKS9nLGZ1bmN0aW9uKEQsZWUsb2Upe3JldHVybiBWYShRMChlZSkrUC5yKSsiOiIr''@;'; put 'put ''VmEoUTAob2UpK1Aucil9KX1mdW5jdGlvbiBXSCh3LFAsRCl7dmFyIG9lPUthKFApLnMsZ2U9Y2EoRCk7cmV0dXJuIGJBKHcse3I6Z2Uuci1vZS5yLGM6Z2UuYy1vZS5jfSl9ZnVuY3Rpb24gZ2Yodyl7cmV0dXJuIHcucmVwbGFjZSgvX3hsZm5cLi9nLCIiKX1mdW5jdGlvbiBqbCh3KXt3Lmwr''@;'; put 'put ''PTF9ZnVuY3Rpb24gc2QodyxQKXt2YXIgRD13LnJlYWRfc2hpZnQoMT09UD8xOjIpO3JldHVyblsxNjM4MyZELEQ+PjE0JjEsRD4+MTUmMV19ZnVuY3Rpb24gTF8odyxQLEQpe3ZhciBlZT0yO2lmKEQpe2lmKEQuYmlmZj49MiYmRC5iaWZmPD01KXJldHVybiBQXyh3KTsxMj09RC5iaWZmJiYo''@;'; put 'put ''ZWU9NCl9dmFyIG9lPXcucmVhZF9zaGlmdChlZSksZ2U9dy5yZWFkX3NoaWZ0KGVlKSxfZT1zZCh3LDIpLHZlPXNkKHcsMik7cmV0dXJue3M6e3I6b2UsYzpfZVswXSxjUmVsOl9lWzFdLHJSZWw6X2VbMl19LGU6e3I6Z2UsYzp2ZVswXSxjUmVsOnZlWzFdLHJSZWw6dmVbMl19fX1mdW5jdGlv''@;'; put 'put ''biBQXyh3KXt2YXIgUD1zZCh3LDIpLEQ9c2QodywyKSxlZT13LnJlYWRfc2hpZnQoMSksb2U9dy5yZWFkX3NoaWZ0KDEpO3JldHVybntzOntyOlBbMF0sYzplZSxjUmVsOlBbMV0sclJlbDpQWzJdfSxlOntyOkRbMF0sYzpvZSxjUmVsOkRbMV0sclJlbDpEWzJdfX19ZnVuY3Rpb24gR0godyxQ''@;'; put 'put ''LEQpe2lmKEQmJkQuYmlmZj49MiYmRC5iaWZmPD01KXJldHVybiBmdW5jdGlvbiBvZWUodyl7dmFyIFA9c2QodywyKSxEPXcucmVhZF9zaGlmdCgxKTtyZXR1cm57cjpQWzBdLGM6RCxjUmVsOlBbMV0sclJlbDpQWzJdfX0odyk7dmFyIGVlPXcucmVhZF9zaGlmdChEJiYxMj09RC5iaWZmPzQ6''@;'; put 'put ''Miksb2U9c2QodywyKTtyZXR1cm57cjplZSxjOm9lWzBdLGNSZWw6b2VbMV0sclJlbDpvZVsyXX19ZnVuY3Rpb24gRl8odyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDIpLEQ9dy5yZWFkX3NoaWZ0KDIpO3JldHVybntyOlAsYzoyNTUmRCxmUXVvdGVkOiEhKDE2Mzg0JkQpLGNSZWw6RD4+MTUsclJl''@;'; put 'put ''bDpEPj4xNX19ZnVuY3Rpb24gdmgodyl7cmV0dXJuW3cucmVhZF9zaGlmdCgxKSx3LnJlYWRfc2hpZnQoMSldfWZ1bmN0aW9uIEVBKHcsUCl7dmFyIEQ9W3cucmVhZF9zaGlmdCgxKV07aWYoMTI9PVApc3dpdGNoKERbMF0pe2Nhc2UgMjpEWzBdPTQ7YnJlYWs7Y2FzZSA0OkRbMF09MTY7YnJl''@;'; put 'put ''YWs7Y2FzZSAwOkRbMF09MTticmVhaztjYXNlIDE6RFswXT0yfXN3aXRjaChEWzBdKXtjYXNlIDQ6RFsxXT14byh3LDEpPyJUUlVFIjoiRkFMU0UiLDEyIT1QJiYody5sKz03KTticmVhaztjYXNlIDM3OmNhc2UgMTY6RFsxXT1uYVt3W3cubF1dLHcubCs9MTI9PVA/NDo4O2JyZWFrO2Nhc2Ug''@;'; put 'put ''MDp3LmwrPTg7YnJlYWs7Y2FzZSAxOkRbMV09eWwodyk7YnJlYWs7Y2FzZSAyOkRbMV09bGgodywwLHtiaWZmOlA+MCYmUDw4PzI6UH0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJCYWQgU2VyQXI6ICIrRFswXSl9cmV0dXJuIER9ZnVuY3Rpb24gQl8odyxQLEQpe2Zvcih2YXIg''@;'; put 'put ''ZWU9dy5yZWFkX3NoaWZ0KDEyPT1ELmJpZmY/NDoyKSxvZT1bXSxnZT0wO2dlIT1lZTsrK2dlKW9lLnB1c2goKDEyPT1ELmJpZmY/b2M6YjIpKHcsOCkpO3JldHVybiBvZX1mdW5jdGlvbiBvTih3LFAsRCl7dmFyIGVlPTAsb2U9MDsxMj09RC5iaWZmPyhlZT13LnJlYWRfc2hpZnQoNCksb2U9''@;'; put 'put ''dy5yZWFkX3NoaWZ0KDQpKToob2U9MSt3LnJlYWRfc2hpZnQoMSksZWU9MSt3LnJlYWRfc2hpZnQoMikpLEQuYmlmZj49MiYmRC5iaWZmPDgmJigtLWVlLDA9PS0tb2UmJihvZT0yNTYpKTtmb3IodmFyIGdlPTAsX2U9W107Z2UhPWVlJiYoX2VbZ2VdPVtdKTsrK2dlKWZvcih2YXIgdmU9MDt2''@;'; put 'put ''ZSE9b2U7Kyt2ZSlfZVtnZV1bdmVdPUVBKHcsRC5iaWZmKTtyZXR1cm4gX2V9ZnVuY3Rpb24gWG0odyxQLEQpe3JldHVybiB3LmwrPTIsW0ZfKHcpXX1mdW5jdGlvbiBKbSh3KXtyZXR1cm4gdy5sKz02LFtdfXZhciBGOD1YbSxsTj1KbSxaXz1KbSxIOD1YbTtmdW5jdGlvbiB1MSh3KXtyZXR1''@;'; put 'put ''cm4gdy5sKz0yLFt5cyh3KSwxJncucmVhZF9zaGlmdCgyKV19dmFyIFlfPVhtLFdfPXUxLHNOPUptLHVOPVhtLERBPVhtLElwPVsiRGF0YSIsIkFsbCIsIkhlYWRlcnMiLCI/PyIsIj9EYXRhMiIsIj8/IiwiP0RhdGFIZWFkZXJzIiwiPz8iLCJUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/RGF0''@;'; put 'put ''YVRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9DdXJyZW50Il0scWE9ezE6e246IlB0Z0V4cCIsZjpmdW5jdGlvbiB1ZWUodyxQLEQpe3JldHVybiB3LmwrKyxEJiYxMj09RC5iaWZmP1t3LnJlYWRfc2hpZnQoNCwiaSIpLDBdOlt3LnJlYWRfc2hpZnQoMiksdy5yZWFkX3NoaWZ0KEQmJjI9PUQu''@;'; put 'put ''YmlmZj8xOjIpXX19LDI6e246IlB0Z1RibCIsZjp4dX0sMzp7bjoiUHRnQWRkIixmOmpsfSw0OntuOiJQdGdTdWIiLGY6amx9LDU6e246IlB0Z011bCIsZjpqbH0sNjp7bjoiUHRnRGl2IixmOmpsfSw3OntuOiJQdGdQb3dlciIsZjpqbH0sODp7bjoiUHRnQ29uY2F0IixmOmpsfSw5OntuOiJQ''@;'; put 'put ''dGdMdCIsZjpqbH0sMTA6e246IlB0Z0xlIixmOmpsfSwxMTp7bjoiUHRnRXEiLGY6amx9LDEyOntuOiJQdGdHZSIsZjpqbH0sMTM6e246IlB0Z0d0IixmOmpsfSwxNDp7bjoiUHRnTmUiLGY6amx9LDE1OntuOiJQdGdJc2VjdCIsZjpqbH0sMTY6e246IlB0Z1VuaW9uIixmOmpsfSwxNzp7bjoi''@;'; put 'put ''UHRnUmFuZ2UiLGY6amx9LDE4OntuOiJQdGdVcGx1cyIsZjpqbH0sMTk6e246IlB0Z1VtaW51cyIsZjpqbH0sMjA6e246IlB0Z1BlcmNlbnQiLGY6amx9LDIxOntuOiJQdGdQYXJlbiIsZjpqbH0sMjI6e246IlB0Z01pc3NBcmciLGY6amx9LDIzOntuOiJQdGdTdHIiLGY6ZnVuY3Rpb24ga0Eo''@;'; put 'put ''dyxQLEQpe3JldHVybiB3LmwrKyxlZCh3LDAsRCl9fSwyNjp7bjoiUHRnU2hlZXQiLGY6ZnVuY3Rpb24gZE4odyxQLEQpe3JldHVybiB3LmwrPTUsdy5sKz0yLHcubCs9Mj09RC5iaWZmPzE6NCxbIlBUR1NIRUVUIl19fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6ZnVuY3Rpb24gR18odyxQLEQp''@;'; put 'put ''e3JldHVybiB3LmwrPTI9PUQuYmlmZj80OjUsWyJQVEdFTkRTSEVFVCJdfX0sMjg6e246IlB0Z0VyciIsZjpmdW5jdGlvbiBLbSh3KXtyZXR1cm4gdy5sKyssbmFbdy5yZWFkX3NoaWZ0KDEpXX19LDI5OntuOiJQdGdCb29sIixmOmZ1bmN0aW9uIHFtKHcpe3JldHVybiB3LmwrKywwIT09dy5y''@;'; put 'put ''ZWFkX3NoaWZ0KDEpfX0sMzA6e246IlB0Z0ludCIsZjpmdW5jdGlvbiBNaSh3KXtyZXR1cm4gdy5sKyssdy5yZWFkX3NoaWZ0KDIpfX0sMzE6e246IlB0Z051bSIsZjpmdW5jdGlvbiBNQSh3KXtyZXR1cm4gdy5sKysseWwodyl9fSwzMjp7bjoiUHRnQXJyYXkiLGY6ZnVuY3Rpb24gWEgodyxQ''@;'; put 'put ''LEQpe3ZhciBlZT0oOTYmd1t3LmwrK10pPj41O3JldHVybiB3LmwrPTI9PUQuYmlmZj82OjEyPT1ELmJpZmY/MTQ6NyxbZWVdfX0sMzM6e246IlB0Z0Z1bmMiLGY6ZnVuY3Rpb24gck4odyxQLEQpe3ZhciBlZT0oOTYmd1t3LmxdKT4+NTt3LmwrPTE7dmFyIG9lPXcucmVhZF9zaGlmdChEJiZE''@;'; put 'put ''LmJpZmY8PTM/MToyKTtyZXR1cm5bdHdbb2VdLGV3W29lXSxlZV19fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjpmdW5jdGlvbiBpTih3LFAsRCl7dmFyIGVlPXdbdy5sKytdLG9lPXcucmVhZF9zaGlmdCgxKSxnZT1EJiZELmJpZmY8PTM/Wzg4PT1lZT8tMTowLHcucmVhZF9zaGlmdCgxKV06ZnVu''@;'; put 'put ''Y3Rpb24gU0Eodyl7cmV0dXJuW3dbdy5sKzFdPj43LDMyNzY3JncucmVhZF9zaGlmdCgyKV19KHcpO3JldHVybltvZSwoMD09PWdlWzBdP2V3OnZOKVtnZVsxXV1dfX0sMzU6e246IlB0Z05hbWUiLGY6ZnVuY3Rpb24geEEodyxQLEQpe3ZhciBlZT13LnJlYWRfc2hpZnQoMSk+Pj41JjMsZ2U9''@;'; put 'put ''dy5yZWFkX3NoaWZ0KCFEfHxELmJpZmY+PTg/NDoyKTtzd2l0Y2goRC5iaWZmKXtjYXNlIDI6dy5sKz01O2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dy5sKz04O2JyZWFrO2Nhc2UgNTp3LmwrPTEyfXJldHVybltlZSwwLGdlXX19LDM2OntuOiJQdGdSZWYiLGY6ZnVuY3Rpb24gQ0EodyxQLEQpe3Zh''@;'; put 'put ''ciBlZT0oOTYmd1t3LmxdKT4+NTtyZXR1cm4gdy5sKz0xLFtlZSxHSCh3LDAsRCldfX0sMzc6e246IlB0Z0FyZWEiLGY6ZnVuY3Rpb24gbGVlKHcsUCxEKXtyZXR1cm5bKDk2Jndbdy5sKytdKT4+NSxMXyh3LDAsRCldfX0sMzg6e246IlB0Z01lbUFyZWEiLGY6ZnVuY3Rpb24gY2VlKHcsUCxE''@;'; put 'put ''KXt2YXIgZWU9dy5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiB3LmwrPUQmJjI9PUQuYmlmZj8zOjQsW2VlLHcucmVhZF9zaGlmdChEJiYyPT1ELmJpZmY/MToyKV19fSwzOTp7bjoiUHRnTWVtRXJyIixmOnh1fSw0MDp7bjoiUHRnTWVtTm9NZW0iLGY6eHV9LDQxOntuOiJQdGdNZW1GdW5j''@;'; put 'put ''IixmOmZ1bmN0aW9uIHpfKHcsUCxEKXtyZXR1cm5bdy5yZWFkX3NoaWZ0KDEpPj4+NSYzLHcucmVhZF9zaGlmdChEJiYyPT1ELmJpZmY/MToyKV19fSw0Mjp7bjoiUHRnUmVmRXJyIixmOmZ1bmN0aW9uIGFOKHcsUCxEKXt2YXIgZWU9dy5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiB3Lmwr''@;'; put 'put ''PTQsRC5iaWZmPDgmJncubC0tLDEyPT1ELmJpZmYmJih3LmwrPTIpLFtlZV19fSw0Mzp7bjoiUHRnQXJlYUVyciIsZjpmdW5jdGlvbiAkSCh3LFAsRCl7dmFyIGVlPSg5NiZ3W3cubCsrXSk+PjU7cmV0dXJuIHcubCs9RCYmRC5iaWZmPjg/MTI6RC5iaWZmPDg/Njo4LFtlZV19fSw0NDp7bjoi''@;'; put 'put ''UHRnUmVmTiIsZjpmdW5jdGlvbiB0Tih3LFAsRCl7dmFyIGVlPSg5NiZ3W3cubF0pPj41O3cubCs9MTt2YXIgb2U9ZnVuY3Rpb24gSF8odyxQLEQpe3ZhciBlZT1EJiZELmJpZmY/RC5iaWZmOjg7aWYoZWU+PTImJmVlPD01KXJldHVybiBmdW5jdGlvbiBhZWUodyl7dmFyIFA9dy5yZWFkX3No''@;'; put 'put ''aWZ0KDIpLEQ9dy5yZWFkX3NoaWZ0KDEpLGVlPSgzMjc2OCZQKT4+MTUsb2U9KDE2Mzg0JlApPj4xNDtyZXR1cm4gUCY9MTYzODMsMT09ZWUmJlA+PTgxOTImJihQLT0xNjM4NCksMT09b2UmJkQ+PTEyOCYmKEQtPTI1Nikse3I6UCxjOkQsY1JlbDpvZSxyUmVsOmVlfX0odyk7dmFyIG9lPXcu''@;'; put 'put ''cmVhZF9zaGlmdChlZT49MTI/NDoyKSxnZT13LnJlYWRfc2hpZnQoMiksX2U9KDE2Mzg0JmdlKT4+MTQsdmU9KDMyNzY4JmdlKT4+MTU7aWYoZ2UmPTE2MzgzLDE9PXZlKWZvcig7b2U+NTI0Mjg3OylvZS09MTA0ODU3NjtpZigxPT1fZSlmb3IoO2dlPjgxOTE7KWdlLT0xNjM4NDtyZXR1cm57''@;'; put 'put ''cjpvZSxjOmdlLGNSZWw6X2UsclJlbDp2ZX19KHcsMCxEKTtyZXR1cm5bZWUsb2VdfX0sNDU6e246IlB0Z0FyZWFOIixmOmZ1bmN0aW9uIHFIKHcsUCxEKXt2YXIgZWU9KDk2Jndbdy5sKytdKT4+NSxvZT1mdW5jdGlvbiBpZWUodyxQLEQpe2lmKEQuYmlmZjw4KXJldHVybiBQXyh3KTt2YXIg''@;'; put 'put ''ZWU9dy5yZWFkX3NoaWZ0KDEyPT1ELmJpZmY/NDoyKSxvZT13LnJlYWRfc2hpZnQoMTI9PUQuYmlmZj80OjIpLGdlPXNkKHcsMiksX2U9c2QodywyKTtyZXR1cm57czp7cjplZSxjOmdlWzBdLGNSZWw6Z2VbMV0sclJlbDpnZVsyXX0sZTp7cjpvZSxjOl9lWzBdLGNSZWw6X2VbMV0sclJlbDpf''@;'; put 'put ''ZVsyXX19fSh3LDAsRCk7cmV0dXJuW2VlLG9lXX19LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpmdW5jdGlvbiBOOCh3KXtyZXR1cm5bdy5yZWFkX3NoaWZ0KDEpPj4+NSYzLHcucmVhZF9zaGlmdCgyKV19fSw0Nzp7bjoiUHRnTWVtTm9NZW1OIixmOmZ1bmN0aW9uIGhOKHcpe3JldHVyblt3LnJl''@;'; put 'put ''YWRfc2hpZnQoMSk+Pj41JjMsdy5yZWFkX3NoaWZ0KDIpXX19LDU3OntuOiJQdGdOYW1lWCIsZjpmdW5jdGlvbiBBQSh3LFAsRCl7cmV0dXJuIDU9PUQuYmlmZj9mdW5jdGlvbiBqXyh3KXt2YXIgUD13LnJlYWRfc2hpZnQoMSk+Pj41JjMsRD13LnJlYWRfc2hpZnQoMiwiaSIpO3cubCs9ODt2''@;'; put 'put ''YXIgZWU9dy5yZWFkX3NoaWZ0KDIpO3JldHVybiB3LmwrPTEyLFtQLEQsZWVdfSh3KTpbdy5yZWFkX3NoaWZ0KDEpPj4+NSYzLHcucmVhZF9zaGlmdCgyKSx3LnJlYWRfc2hpZnQoNCldfX0sNTg6e246IlB0Z1JlZjNkIixmOmZ1bmN0aW9uIG5OKHcsUCxEKXt2YXIgZWU9KDk2Jndbdy5sXSk+''@;'; put 'put ''PjU7dy5sKz0xO3ZhciBvZT13LnJlYWRfc2hpZnQoMik7cmV0dXJuIEQmJjU9PUQuYmlmZiYmKHcubCs9MTIpLFtlZSxvZSxHSCh3LDAsRCldfX0sNTk6e246IlB0Z0FyZWEzZCIsZjpmdW5jdGlvbiBfQSh3LFAsRCl7dmFyIGVlPSg5NiZ3W3cubCsrXSk+PjUsb2U9dy5yZWFkX3NoaWZ0KDIs''@;'; put 'put ''ImkiKTtpZihEJiY1PT09RC5iaWZmKXcubCs9MTI7cmV0dXJuW2VlLG9lLExfKHcsMCxEKV19fSw2MDp7bjoiUHRnUmVmRXJyM2QiLGY6ZnVuY3Rpb24gVV8odyxQLEQpe3ZhciBlZT0oOTYmd1t3LmwrK10pPj41LG9lPXcucmVhZF9zaGlmdCgyKSxnZT00O2lmKEQpc3dpdGNoKEQuYmlmZil7''@;'; put 'put ''Y2FzZSA1OmdlPTE1O2JyZWFrO2Nhc2UgMTI6Z2U9Nn1yZXR1cm4gdy5sKz1nZSxbZWUsb2VdfX0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpmdW5jdGlvbiBLSCh3LFAsRCl7dmFyIGVlPSg5NiZ3W3cubCsrXSk+PjUsb2U9dy5yZWFkX3NoaWZ0KDIpLGdlPTg7aWYoRClzd2l0Y2goRC5iaWZm''@;'; put 'put ''KXtjYXNlIDU6dy5sKz0xMixnZT02O2JyZWFrO2Nhc2UgMTI6Z2U9MTJ9cmV0dXJuIHcubCs9Z2UsW2VlLG9lXX19LDI1NTp7fX0scE49ezY0OjMyLDk2OjMyLDY1OjMzLDk3OjMzLDY2OjM0LDk4OjM0LDY3OjM1LDk5OjM1LDY4OjM2LDEwMDozNiw2OTozNywxMDE6MzcsNzA6MzgsMTAyOjM4''@;'; put 'put ''LDcxOjM5LDEwMzozOSw3Mjo0MCwxMDQ6NDAsNzM6NDEsMTA1OjQxLDc0OjQyLDEwNjo0Miw3NTo0MywxMDc6NDMsNzY6NDQsMTA4OjQ0LDc3OjQ1LDEwOTo0NSw3ODo0NiwxMTA6NDYsNzk6NDcsMTExOjQ3LDg4OjM0LDEyMDozNCw4OTo1NywxMjE6NTcsOTA6NTgsMTIyOjU4LDkxOjU5LDEy''@;'; put 'put ''Mzo1OSw5Mjo2MCwxMjQ6NjAsOTM6NjEsMTI1OjYxfTshZnVuY3Rpb24oKXtmb3IodmFyIHcgaW4gcE4pcWFbd109cWFbcE5bd11dfSgpO3ZhciBSQT17MTp7bjoiUHRnRWxmTGVsIixmOnUxfSwyOntuOiJQdGdFbGZSdyIsZjp1Tn0sMzp7bjoiUHRnRWxmQ29sIixmOkY4fSw2OntuOiJQdGdF''@;'; put 'put ''bGZSd1YiLGY6REF9LDc6e246IlB0Z0VsZkNvbFYiLGY6SDh9LDEwOntuOiJQdGdFbGZSYWRpY2FsIixmOllffSwxMTp7bjoiUHRnRWxmUmFkaWNhbFMiLGY6c059LDEzOntuOiJQdGdFbGZDb2xTIixmOmxOfSwxNTp7bjoiUHRnRWxmQ29sU1YiLGY6Wl99LDE2OntuOiJQdGdFbGZSYWRpY2Fs''@;'; put 'put ''TGVsIixmOldffSwyNTp7bjoiUHRnTGlzdCIsZjpmdW5jdGlvbiBjTih3KXt3LmwrPTI7dmFyIFA9dy5yZWFkX3NoaWZ0KDIpLEQ9dy5yZWFkX3NoaWZ0KDIpLGVlPXcucmVhZF9zaGlmdCg0KSxvZT13LnJlYWRfc2hpZnQoMiksZ2U9dy5yZWFkX3NoaWZ0KDIpO3JldHVybntpeHRpOlAsY29s''@;'; put 'put ''dHlwZTozJkQscnQ6SXBbRD4+MiYzMV0saWR4OmVlLGM6b2UsQzpnZX19fSwyOTp7bjoiUHRnU3hOYW1lIixmOmZ1bmN0aW9uIGZOKHcpe3JldHVybiB3LmwrPTIsW3cucmVhZF9zaGlmdCg0KV19fSwyNTU6e319LFY4PXswOntuOiJQdGdBdHRyTm9vcCIsZjpmdW5jdGlvbiBJQSh3KXtyZXR1''@;'; put 'put ''cm4gdy5sKz00LFswLDBdfX0sMTp7bjoiUHRnQXR0clNlbWkiLGY6ZnVuY3Rpb24gRHAodyxQLEQpe3ZhciBlZT0yNTUmd1t3LmwrMV0/MTowO3JldHVybiB3LmwrPUQmJjI9PUQuYmlmZj8zOjQsW2VlXX19LDI6e246IlB0Z0F0dHJJZiIsZjpmdW5jdGlvbiBOXyh3LFAsRCl7dmFyIGVlPTI1''@;'; put 'put ''NSZ3W3cubCsxXT8xOjA7cmV0dXJuIHcubCs9MixbZWUsdy5yZWFkX3NoaWZ0KEQmJjI9PUQuYmlmZj8xOjIpXX19LDQ6e246IlB0Z0F0dHJDaG9vc2UiLGY6ZnVuY3Rpb24gUDgodyxQLEQpe3cubCs9Mjtmb3IodmFyIGVlPXcucmVhZF9zaGlmdChEJiYyPT1ELmJpZmY/MToyKSxvZT1bXSxn''@;'; put 'put ''ZT0wO2dlPD1lZTsrK2dlKW9lLnB1c2gody5yZWFkX3NoaWZ0KEQmJjI9PUQuYmlmZj8xOjIpKTtyZXR1cm4gb2V9fSw4OntuOiJQdGdBdHRyR290byIsZjpmdW5jdGlvbiBKSCh3LFAsRCl7dmFyIGVlPTI1NSZ3W3cubCsxXT8xOjA7cmV0dXJuIHcubCs9MixbZWUsdy5yZWFkX3NoaWZ0KEQm''@;'; put 'put ''JjI9PUQuYmlmZj8xOjIpXX19LDE2OntuOiJQdGdBdHRyU3VtIixmOmZ1bmN0aW9uIHNlZSh3LFAsRCl7dy5sKz1EJiYyPT1ELmJpZmY/Mzo0fX0sMzI6e246IlB0Z0F0dHJCYXhjZWwiLGY6ZnVuY3Rpb24gd0Eodyl7dmFyIFA9MSZ3W3cubCsxXTtyZXR1cm4gdy5sKz00LFtQLDFdfX0sNjQ6''@;'; put 'put ''e246IlB0Z0F0dHJTcGFjZSIsZjpmdW5jdGlvbiBlTih3KXtyZXR1cm4gdy5yZWFkX3NoaWZ0KDIpLHZoKHcpfX0sNjU6e246IlB0Z0F0dHJTcGFjZVNlbWkiLGY6ZnVuY3Rpb24gVl8odyl7cmV0dXJuIHcucmVhZF9zaGlmdCgyKSx2aCh3KX19LDEyODp7bjoiUHRnQXR0cklmRXJyb3IiLGY6''@;'; put 'put ''ZnVuY3Rpb24gUUgodyl7dmFyIFA9MjU1Jndbdy5sKzFdPzE6MDtyZXR1cm4gdy5sKz0yLFtQLHcucmVhZF9zaGlmdCgyKV19fSwyNTU6e319O2Z1bmN0aW9uIFJwKHcsUCxELGVlLG9lKXtpZihlZS5iaWZmPDgpcmV0dXJuIHh1KHcsUCk7Zm9yKHZhciBnZT13LmwrUCxfZT1bXSx2ZT0wO3Zl''@;'; put 'put ''IT09RC5sZW5ndGg7Kyt2ZSlzd2l0Y2goRFt2ZV1bMF0pe2Nhc2UiUHRnQXJyYXkiOkRbdmVdWzFdPW9OKHcsMCxlZSksX2UucHVzaChEW3ZlXVsxXSk7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhIjpEW3ZlXVsyXT1CXyh3LDAsZWUpLF9lLnB1c2goRFt2ZV1bMl0pO2JyZWFrO2Nhc2UiUHRnRXhw''@;'; put 'put ''IjplZSYmMTI9PWVlLmJpZmYmJihEW3ZlXVsxXVsxXT13LnJlYWRfc2hpZnQoNCksX2UucHVzaChEW3ZlXVsxXSkpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjp0aHJvdyJVbnN1cHBvcnRlZCAiK0Rb''@;'; put 'put ''dmVdWzBdfXJldHVybiBQPWdlLXcubCwhb2UmJjAhPT1QJiZfZS5wdXNoKHh1KHcsUCkpLF9lfWZ1bmN0aW9uIFFtKHcsUCxEKXtmb3IodmFyIG9lLGdlLGVlPXcubCtQLF9lPVtdO2VlIT13Lmw7KVA9ZWUtdy5sLG9lPXFhW2dlPXdbdy5sXV0sKDI0PT09Z2V8fDI1PT09Z2UpJiYob2U9KDI0''@;'; put 'put ''PT09Z2U/UkE6VjgpW3dbdy5sKzFdXSksb2UmJm9lLmY/X2UucHVzaChbb2UubixvZS5mKHcsUCxEKV0pOnh1KHcsUCk7cmV0dXJuIF9lfWZ1bmN0aW9uIGZlZSh3KXtmb3IodmFyIFA9W10sRD0wO0Q8dy5sZW5ndGg7KytEKXtmb3IodmFyIGVlPXdbRF0sb2U9W10sZ2U9MDtnZTxlZS5sZW5n''@;'; put 'put ''dGg7KytnZSl7dmFyIF9lPWVlW2dlXTtvZS5wdXNoKF9lPzI9PT1fZVswXT8nIicrX2VbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJzpfZVsxXToiIil9UC5wdXNoKG9lLmpvaW4oIiwiKSl9cmV0dXJuIFAuam9pbigiOyIpfVY4WzMzXT1WOFszMl07dmFyIEI4PXtQdGdBZGQ6IisiLFB0Z0Nv''@;'; put 'put ''bmNhdDoiJiIsUHRnRGl2OiIvIixQdGdFcToiPSIsUHRnR2U6Ij49IixQdGdHdDoiPiIsUHRnTGU6Ijw9IixQdGdMdDoiPCIsUHRnTXVsOiIqIixQdGdOZToiPD4iLFB0Z1Bvd2VyOiJeIixQdGdTdWI6Ii0ifSxtTj1uZXcgUmVnRXhwKC9bXlx3XHU0RTAwLVx1OUZGRlx1MzA0MC1cdTMwRkZd''@;'; put 'put ''Lyk7ZnVuY3Rpb24gajgodyxQLEQpe2lmKCF3KXJldHVybiJTSDMzVEpTRVJSMCI7aWYoRC5iaWZmPjgmJighdy5YVEl8fCF3LlhUSVtQXSkpcmV0dXJuIHcuU2hlZXROYW1lc1tQXTtpZighdy5YVEkpcmV0dXJuIlNIMzNUSlNFUlI2Ijt2YXIgZWU9dy5YVElbUF07aWYoRC5iaWZmPDgpcmV0''@;'; put 'put ''dXJuIFA+MWU0JiYoUC09NjU1MzYpLFA8MCYmKFA9LVApLDA9PVA/IiI6dy5YVElbUC0xXTtpZighZWUpcmV0dXJuIlNIMzNUSlNFUlIxIjt2YXIgb2U9IiI7aWYoRC5iaWZmPjgpc3dpdGNoKHdbZWVbMF1dWzBdKXtjYXNlIDM1NzpyZXR1cm4gb2U9LTE9PWVlWzFdPyIjUkVGIjp3LlNoZWV0''@;'; put 'put ''TmFtZXNbZWVbMV1dLGVlWzFdPT1lZVsyXT9vZTpvZSsiOiIrdy5TaGVldE5hbWVzW2VlWzJdXTtjYXNlIDM1ODpyZXR1cm4gbnVsbCE9RC5TSUQ/dy5TaGVldE5hbWVzW0QuU0lEXToiU0gzM1RKU1NBTUUiK3dbZWVbMF1dWzBdO2RlZmF1bHQ6cmV0dXJuIlNIMzNUSlNTUkMiK3dbZWVbMF1d''@;'; put 'put ''WzBdfXN3aXRjaCh3W2VlWzBdXVswXVswXSl7Y2FzZSAxMDI1OnJldHVybiBvZT0tMT09ZWVbMV0/IiNSRUYiOncuU2hlZXROYW1lc1tlZVsxXV18fCJTSDMzVEpTRVJSMyIsZWVbMV09PWVlWzJdP29lOm9lKyI6Iit3LlNoZWV0TmFtZXNbZWVbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIHdbZWVb''@;'; put 'put ''MF1dLnNsaWNlKDEpLm1hcChmdW5jdGlvbihnZSl7cmV0dXJuIGdlLk5hbWV9KS5qb2luKCI7OyIpO2RlZmF1bHQ6cmV0dXJuIHdbZWVbMF1dWzBdWzNdPyhvZT0tMT09ZWVbMV0/IiNSRUYiOndbZWVbMF1dWzBdWzNdW2VlWzFdXXx8IlNIMzNUSlNFUlI0IixlZVsxXT09ZWVbMl0/b2U6b2Ur''@;'; put 'put ''IjoiK3dbZWVbMF1dWzBdWzNdW2VlWzJdXSk6IlNIMzNUSlNFUlIyIn19ZnVuY3Rpb24gTzIodyxQLEQpe3JldHVybiBmdW5jdGlvbiAkXyh3LFApe2lmKCEod3x8UCYmUC5iaWZmPD01JiZQLmJpZmY+PTIpKXRocm93IG5ldyBFcnJvcigiZW1wdHkgc2hlZXQgbmFtZSIpO3JldHVybi8jUkVG''@;'; put 'put ''Ly50ZXN0KHcpP3c6bU4udGVzdCh3KT8iJyIrdysiJyI6d30oajgodyxQLEQpLEQpfWZ1bmN0aW9uIERzKHcsUCxELGVlLG9lLGdlKXt2YXIgamUsVWUsWGUsTXQsX2U9b2UmJm9lLmJpZmZ8fDgsdmU9Z2UmJm51bGwhPVA/UDp7czp7YzowLHI6MH0sZTp7YzowLHI6MH19LE1lPVtdLGl0PTAs''@;'; put 'put ''ZnQ9MCx1dD0iIjtpZighd1swXXx8IXdbMF1bMF0pcmV0dXJuIiI7Zm9yKHZhciB3dD0tMSxIdD0iIixrdD0wLFR0PXdbMF0ubGVuZ3RoO2t0PFR0Oysra3Qpe3ZhciBZdD13WzBdW2t0XTtzd2l0Y2goWXRbMF0pe2Nhc2UiUHRnVW1pbnVzIjpNZS5wdXNoKCItIitNZS5wb3AoKSk7YnJlYWs7''@;'; put 'put ''Y2FzZSJQdGdVcGx1cyI6TWUucHVzaCgiKyIrTWUucG9wKCkpO2JyZWFrO2Nhc2UiUHRnUGVyY2VudCI6TWUucHVzaChNZS5wb3AoKSsiJSIpO2JyZWFrO2Nhc2UiUHRnQWRkIjpjYXNlIlB0Z0NvbmNhdCI6Y2FzZSJQdGdEaXYiOmNhc2UiUHRnRXEiOmNhc2UiUHRnR2UiOmNhc2UiUHRnR3Qi''@;'; put 'put ''OmNhc2UiUHRnTGUiOmNhc2UiUHRnTHQiOmNhc2UiUHRnTXVsIjpjYXNlIlB0Z05lIjpjYXNlIlB0Z1Bvd2VyIjpjYXNlIlB0Z1N1YiI6aWYoamU9TWUucG9wKCksVWU9TWUucG9wKCksd3Q+PTApe3N3aXRjaCh3WzBdW3d0XVsxXVswXSl7Y2FzZSAwOkh0PWJuKCIgIix3WzBdW3d0XVsxXVsx''@;'; put 'put ''XSk7YnJlYWs7Y2FzZSAxOkh0PWJuKCJcciIsd1swXVt3dF1bMV1bMV0pO2JyZWFrO2RlZmF1bHQ6aWYoSHQ9IiIsb2UuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrd1swXVt3dF1bMV1bMF0pfVVlKz1IdCx3dD0tMX1NZS5wdXNoKFVlK0I4W1l0''@;'; put 'put ''WzBdXStqZSk7YnJlYWs7Y2FzZSJQdGdJc2VjdCI6amU9TWUucG9wKCksVWU9TWUucG9wKCksTWUucHVzaChVZSsiICIramUpO2JyZWFrO2Nhc2UiUHRnVW5pb24iOmplPU1lLnBvcCgpLFVlPU1lLnBvcCgpLE1lLnB1c2goVWUrIiwiK2plKTticmVhaztjYXNlIlB0Z1JhbmdlIjpqZT1NZS5w''@;'; put 'put ''b3AoKSxVZT1NZS5wb3AoKSxNZS5wdXNoKFVlKyI6IitqZSk7YnJlYWs7Y2FzZSJQdGdBdHRyQ2hvb3NlIjpjYXNlIlB0Z0F0dHJHb3RvIjpjYXNlIlB0Z0F0dHJJZiI6Y2FzZSJQdGdBdHRySWZFcnJvciI6Y2FzZSJQdGdBdHRyQmF4Y2VsIjpjYXNlIlB0Z0F0dHJTZW1pIjpjYXNlIlB0Z01l''@;'; put 'put ''bUFyZWEiOmNhc2UiUHRnVGJsIjpjYXNlIlB0Z01lbUVyciI6Y2FzZSJQdGdNZW1BcmVhTiI6Y2FzZSJQdGdNZW1Ob01lbU4iOmNhc2UiUHRnQXR0ck5vb3AiOmNhc2UiUHRnU2hlZXQiOmNhc2UiUHRnRW5kU2hlZXQiOmNhc2UiUHRnTWVtRnVuYyI6Y2FzZSJQdGdNZW1Ob01lbSI6YnJlYWs7''@;'; put 'put ''Y2FzZSJQdGdSZWYiOlhlPXBjKFl0WzFdWzFdLHZlLG9lKSxNZS5wdXNoKGVoKFhlLF9lKSk7YnJlYWs7Y2FzZSJQdGdSZWZOIjpYZT1EP3BjKFl0WzFdWzFdLEQsb2UpOll0WzFdWzFdLE1lLnB1c2goZWgoWGUsX2UpKTticmVhaztjYXNlIlB0Z1JlZjNkIjppdD1ZdFsxXVsxXSxYZT1wYyhZ''@;'; put 'put ''dFsxXVsyXSx2ZSxvZSksdXQ9TzIoZWUsaXQsb2UpLE1lLnB1c2godXQrIiEiK2VoKFhlLF9lKSk7YnJlYWs7Y2FzZSJQdGdGdW5jIjpjYXNlIlB0Z0Z1bmNWYXIiOnZhciBxbj1ZdFsxXVswXSxmbj1ZdFsxXVsxXTtxbnx8KHFuPTApO3ZhciBLbj0wPT0ocW4mPTEyNyk/W106TWUuc2xpY2Uo''@;'; put 'put ''LXFuKTtNZS5sZW5ndGgtPXFuLCJVc2VyIj09PWZuJiYoZm49S24uc2hpZnQoKSksTWUucHVzaChmbisiKCIrS24uam9pbigiLCIpKyIpIik7YnJlYWs7Y2FzZSJQdGdCb29sIjpNZS5wdXNoKFl0WzFdPyJUUlVFIjoiRkFMU0UiKTticmVhaztjYXNlIlB0Z0ludCI6Y2FzZSJQdGdOdW0iOk1l''@;'; put 'put ''LnB1c2goU3RyaW5nKFl0WzFdKSk7YnJlYWs7Y2FzZSJQdGdTdHIiOk1lLnB1c2goJyInK1l0WzFdLnJlcGxhY2UoLyIvZywnIiInKSsnIicpO2JyZWFrO2Nhc2UiUHRnRXJyIjpNZS5wdXNoKFl0WzFdKTticmVhaztjYXNlIlB0Z0FyZWFOIjpNdD1ocihZdFsxXVsxXSxEP3tzOkR9OnZlLG9l''@;'; put 'put ''KSxNZS5wdXNoKHhpKE10LG9lKSk7YnJlYWs7Y2FzZSJQdGdBcmVhIjpNdD1ocihZdFsxXVsxXSx2ZSxvZSksTWUucHVzaCh4aShNdCxvZSkpO2JyZWFrO2Nhc2UiUHRnQXJlYTNkIjppdD1ZdFsxXVsxXSxNdD1ocihZdFsxXVsyXSx2ZSxvZSksdXQ9TzIoZWUsaXQsb2UpLE1lLnB1c2godXQr''@;'; put 'put ''IiEiK3hpKE10LG9lKSk7YnJlYWs7Y2FzZSJQdGdBdHRyU3VtIjpNZS5wdXNoKCJTVU0oIitNZS5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UiUHRnTmFtZSI6dmFyIHpuPShlZS5uYW1lc3x8W10pWyhmdD1ZdFsxXVsyXSktMV18fChlZVswXXx8W10pW2Z0XSxPbj16bj96bi5OYW1lOiJTSDMzVEpT''@;'; put 'put ''TkFNRSIrU3RyaW5nKGZ0KTtPbiBpbiBuZyYmKE9uPW5nW09uXSksTWUucHVzaChPbik7YnJlYWs7Y2FzZSJQdGdOYW1lWCI6dmFyIHRyLGVyPVl0WzFdWzFdO2lmKGZ0PVl0WzFdWzJdLCEob2UuYmlmZjw9NSkpe3ZhciBZbj0iIjtpZigxNDg0OT09KChlZVtlcl18fFtdKVswXXx8W10pWzBd''@;'; put 'put ''fHwoMTAyNT09KChlZVtlcl18fFtdKVswXXx8W10pWzBdP2VlW2VyXVtmdF0mJmVlW2VyXVtmdF0uaXRhYj4wJiYoWW49ZWUuU2hlZXROYW1lc1tlZVtlcl1bZnRdLml0YWItMV0rIiEiKTpZbj1lZS5TaGVldE5hbWVzW2Z0LTFdKyIhIiksZWVbZXJdJiZlZVtlcl1bZnRdKVluKz1lZVtlcl1b''@;'; put 'put ''ZnRdLk5hbWU7ZWxzZSBpZihlZVswXSYmZWVbMF1bZnRdKVluKz1lZVswXVtmdF0uTmFtZTtlbHNle3ZhciBsaT0oajgoZWUsZXIsb2UpfHwiIikuc3BsaXQoIjs7Iik7bGlbZnQtMV0/WW49bGlbZnQtMV06WW4rPSJTSDMzVEpTRVJSWCJ9TWUucHVzaChZbik7YnJlYWt9ZXI8MCYmKGVyPS1l''@;'; put 'put ''ciksZWVbZXJdJiYodHI9ZWVbZXJdW2Z0XSksdHJ8fCh0cj17TmFtZToiU0gzM1RKU0VSUlkifSksTWUucHVzaCh0ci5OYW1lKTticmVhaztjYXNlIlB0Z1BhcmVuIjp2YXIgRWk9IigiLElpPSIpIjtpZih3dD49MCl7c3dpdGNoKEh0PSIiLHdbMF1bd3RdWzFdWzBdKXtjYXNlIDI6RWk9Ym4o''@;'; put 'put ''IiAiLHdbMF1bd3RdWzFdWzFdKStFaTticmVhaztjYXNlIDM6RWk9Ym4oIlxyIix3WzBdW3d0XVsxXVsxXSkrRWk7YnJlYWs7Y2FzZSA0OklpPWJuKCIgIix3WzBdW3d0XVsxXVsxXSkrSWk7YnJlYWs7Y2FzZSA1OklpPWJuKCJcciIsd1swXVt3dF1bMV1bMV0pK0lpO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''aWYob2UuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrd1swXVt3dF1bMV1bMF0pfXd0PS0xfU1lLnB1c2goRWkrTWUucG9wKCkrSWkpO2JyZWFrO2Nhc2UiUHRnUmVmRXJyIjpjYXNlIlB0Z0FyZWFFcnIiOmNhc2UiUHRnQXJlYUVycjNkIjpjYXNl''@;'; put 'put ''IlB0Z1JlZkVycjNkIjpNZS5wdXNoKCIjUkVGISIpO2JyZWFrO2Nhc2UiUHRnRXhwIjp2YXIgZnI9e2M6RC5jLHI6RC5yfTtpZihlZS5zaGFyZWRmW3BpKFhlPXtjOll0WzFdWzFdLHI6WXRbMV1bMF19KV0pe3ZhciBEbj1lZS5zaGFyZWRmW3BpKFhlKV07TWUucHVzaChEcyhEbix2ZSxmcixl''@;'; put 'put ''ZSxvZSkpfWVsc2V7dmFyIHZyPSExO2ZvcihqZT0wO2plIT1lZS5hcnJheWYubGVuZ3RoOysramUpaWYoIShYZS5jPChVZT1lZS5hcnJheWZbamVdKVswXS5zLmN8fFhlLmM+VWVbMF0uZS5jfHxYZS5yPFVlWzBdLnMucnx8WGUucj5VZVswXS5lLnIpKXtNZS5wdXNoKERzKFVlWzFdLHZlLGZy''@;'; put 'put ''LGVlLG9lKSksdnI9ITA7YnJlYWt9dnJ8fE1lLnB1c2goWXRbMV0pfWJyZWFrO2Nhc2UiUHRnQXJyYXkiOk1lLnB1c2goInsiK2ZlZShZdFsxXSkrIn0iKTticmVhaztjYXNlIlB0Z0F0dHJTcGFjZSI6Y2FzZSJQdGdBdHRyU3BhY2VTZW1pIjp3dD1rdDticmVhaztjYXNlIlB0Z01pc3NBcmci''@;'; put 'put ''Ok1lLnB1c2goIiIpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6TWUucHVzaCgiVGFibGUiK1l0WzFdLmlkeCsiWyMiK1l0WzFdLnJ0KyJdIik7YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxl''@;'; put 'put ''bCI6Y2FzZSJQdGdFbGZSYWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNv''@;'; put 'put ''Z25pemVkIEZvcm11bGEgVG9rZW46ICIrU3RyaW5nKFl0KSl9aWYoMyE9b2UuYmlmZiYmd3Q+PTAmJi0xPT1bIlB0Z0F0dHJTcGFjZSIsIlB0Z0F0dHJTcGFjZVNlbWkiLCJQdGdBdHRyR290byJdLmluZGV4T2Yod1swXVtrdF1bMF0pKXt2YXIgeG49ITA7c3dpdGNoKChZdD13WzBdW3d0XSlb''@;'; put 'put ''MV1bMF0pe2Nhc2UgNDp4bj0hMTtjYXNlIDA6SHQ9Ym4oIiAiLFl0WzFdWzFdKTticmVhaztjYXNlIDU6eG49ITE7Y2FzZSAxOkh0PWJuKCJcciIsWXRbMV1bMV0pO2JyZWFrO2RlZmF1bHQ6aWYoSHQ9IiIsb2UuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VU''@;'; put 'put ''eXBlICIrWXRbMV1bMF0pfU1lLnB1c2goKHhuP0h0OiIiKStNZS5wb3AoKSsoeG4/IiI6SHQpKSx3dD0tMX19aWYoTWUubGVuZ3RoPjEmJm9lLldURil0aHJvdyBuZXcgRXJyb3IoImJhZCBmb3JtdWxhIHN0YWNrIik7cmV0dXJuIE1lWzBdfWZ1bmN0aW9uIEtfKHcsUCxEKXt2YXIgZ2UsZWU9''@;'; put 'put ''dy5sK1Asb2U9Mj09RC5iaWZmPzE6MixfZT13LnJlYWRfc2hpZnQob2UpO2lmKDY1NTM1PT1fZSlyZXR1cm5bW10seHUodyxQLTIpXTt2YXIgdmU9UW0odyxfZSxEKTtyZXR1cm4gUCE9PV9lK29lJiYoZ2U9UnAodyxQLV9lLW9lLHZlLEQpKSx3Lmw9ZWUsW3ZlLGdlXX1mdW5jdGlvbiB0Zyh3''@;'; put 'put ''LFAsRCl7dmFyIG9lLGVlPXcubCtQLGdlPXcucmVhZF9zaGlmdCgyKSxfZT1RbSh3LGdlLEQpO3JldHVybiA2NTUzNT09Z2U/W1tdLHh1KHcsUC0yKV06KFAhPT1nZSsyJiYob2U9UnAodyxlZS1nZS0yLF9lLEQpKSxbX2Usb2VdKX1mdW5jdGlvbiBMcCh3LFAsRCl7dmFyIGVlPXcubCtQLG9l''@;'; put 'put ''PWpjKHcpOzI9PUQuYmlmZiYmKyt3Lmw7dmFyIGdlPWZ1bmN0aW9uIExBKHcpe3ZhciBQO2lmKDY1NTM1IT09V24odyx3LmwrNikpcmV0dXJuW3lsKHcpLCJuIl07c3dpdGNoKHdbdy5sXSl7Y2FzZSAwOnJldHVybiB3LmwrPTgsWyJTdHJpbmciLCJzIl07Y2FzZSAxOnJldHVybiBQPTE9PT13''@;'; put 'put ''W3cubCsyXSx3LmwrPTgsW1AsImIiXTtjYXNlIDI6cmV0dXJuIFA9d1t3LmwrMl0sdy5sKz04LFtQLCJlIl07Y2FzZSAzOnJldHVybiB3LmwrPTgsWyIiLCJzIl19cmV0dXJuW119KHcpLF9lPXcucmVhZF9zaGlmdCgxKTsyIT1ELmJpZmYmJih3LnJlYWRfc2hpZnQoMSksRC5iaWZmPj01JiZ3''@;'; put 'put ''LnJlYWRfc2hpZnQoNCkpO3ZhciB2ZT1mdW5jdGlvbiBlZyh3LFAsRCl7dmFyIGdlLGVlPXcubCtQLG9lPTI9PUQuYmlmZj8xOjIsX2U9dy5yZWFkX3NoaWZ0KG9lKTtpZig2NTUzNT09X2UpcmV0dXJuW1tdLHh1KHcsUC0yKV07dmFyIHZlPVFtKHcsX2UsRCk7cmV0dXJuIFAhPT1fZStvZSYm''@;'; put 'put ''KGdlPVJwKHcsUC1fZS1vZSx2ZSxEKSksdy5sPWVlLFt2ZSxnZV19KHcsZWUtdy5sLEQpO3JldHVybntjZWxsOm9lLHZhbDpnZVswXSxmb3JtdWxhOnZlLHNoYXJlZDpfZT4+MyYxLHR0OmdlWzFdfX1mdW5jdGlvbiBEMih3LFAsRCl7dmFyIGVlPXcucmVhZF9zaGlmdCg0KSxvZT1RbSh3LGVl''@;'; put 'put ''LEQpLGdlPXcucmVhZF9zaGlmdCg0KTtyZXR1cm5bb2UsZ2U+MD9ScCh3LGdlLG9lLEQsITApOm51bGxdfXZhciBQQT1EMixVOD1EMixGQT1EMixIQT1mdW5jdGlvbiBYXyh3LFAsRCl7dmFyIGVlPXcucmVhZF9zaGlmdCg0KSxvZT13LnJlYWRfc2hpZnQoNCksZ2U9UW0odyxlZSxEKTtyZXR1''@;'; put 'put ''cm5bZ2Usb2U+MD9ScCh3LG9lLGdlLEQsITApOm51bGxdfSxOQT1EMixnTj1EMjtmdW5jdGlvbiBKXyh3KXtpZigoMHx3KT09dyYmdzxNYXRoLnBvdygyLDE2KSYmdz49MCl7dmFyIFA9cHIoMTEpO3JldHVybiBQLndyaXRlX3NoaWZ0KDQsMyksUC53cml0ZV9zaGlmdCgxLDMwKSxQLndyaXRl''@;'; put 'put ''X3NoaWZ0KDIsdyksUC53cml0ZV9zaGlmdCg0LDApLFB9dmFyIEQ9cHIoMTcpO3JldHVybiBELndyaXRlX3NoaWZ0KDQsMTEpLEQud3JpdGVfc2hpZnQoMSwzMSksRC53cml0ZV9zaGlmdCg4LHcpLEQud3JpdGVfc2hpZnQoNCwwKSxEfWZ1bmN0aW9uIFZBKHcpe3ZhciBQPXByKDcpO1Aud3Jp''@;'; put 'put ''dGVfc2hpZnQoNCwzKzIqdy5sZW5ndGgpLFAud3JpdGVfc2hpZnQoMSwyMyksUC53cml0ZV9zaGlmdCgyLHcubGVuZ3RoKTt2YXIgRD1wcigyKncubGVuZ3RoKTtELndyaXRlX3NoaWZ0KDIqdy5sZW5ndGgsdywidXRmMTZsZSIpO3ZhciBlZT1wcig0KTtyZXR1cm4gZWUud3JpdGVfc2hpZnQo''@;'; put 'put ''NCwwKSxNKFtQLEQsZWVdKX1mdW5jdGlvbiBQcCh3KXtpZih3Lm1hdGNoKC9eIyhESVZcLzAhfEdFVFRJTkdfREFUQXxOXC9BfE5BTUVcP3xOVUxMIXxOVU0hfFJFRiF8VkFMVUUhKSQvKSlyZXR1cm4gZnVuY3Rpb24gaGVlKHcpe3ZhciBQPXByKDEwKTtyZXR1cm4gUC53cml0ZV9zaGlmdCg0''@;'; put 'put ''LDIpLFAud3JpdGVfc2hpZnQoMSwyOCksUC53cml0ZV9zaGlmdCgxLHcpLFAud3JpdGVfc2hpZnQoNCwwKSxQfSgrcWxbd10pO2lmKHcubWF0Y2goL15cJD8oPzpbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF18W0EtWl17MSwyfSlcJD8oPzoxMFswLTNdXGR7NH18MTA0WzAtN11c''@;'; put 'put ''ZHszfXwxMDQ4WzAtNF1cZHsyfXwxMDQ4NVswLTZdXGR8MTA0ODU3WzAtNl18WzEtOV1cZHswLDV9KSQvKSlyZXR1cm4gZnVuY3Rpb24gUV8odyl7dmFyIFA9Y2EodyksRD1wcigxNSk7cmV0dXJuIEQud3JpdGVfc2hpZnQoNCw3KSxELndyaXRlX3NoaWZ0KDEsMzYpLEQud3JpdGVfc2hpZnQo''@;'; put 'put ''NCxQLnIpLEQud3JpdGVfc2hpZnQoMixQLmN8KCIkIj09dy5jaGFyQXQoMCk/MDoxKTw8MTR8KHcubWF0Y2goL1wkXGQvKT8wOjEpPDwxNSksRC53cml0ZV9zaGlmdCg0LDApLER9KHcpO2lmKHcubWF0Y2goL14iLioiJC8pKXJldHVybiBWQSh3KTt0aHJvdyJGb3JtdWxhIHwiK3crInwgbm90''@;'; put 'put ''IHN1cHBvcnRlZCBmb3IgWExTQiJ9dmFyIHZOPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQIiw4OiJQUklOVCIsOToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQi''@;'; put 'put ''LDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQuUFJJTlQuVElUTEVTIiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJS''@;'; put 'put ''RU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04iLDM0OiJEQVRBLkZJTkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5E''@;'; put 'put ''RUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIsNDU6IkJPUkRFUiIsNDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNP''@;'; put 'put ''TFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQiLDU3OiJGSUxMLkRPV04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNS''@;'; put 'put ''RUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIiLDY5OiJHQUxMRVJZLkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIs''@;'; put 'put ''NzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJBWEVTIiw3OToiTEVHRU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJB''@;'; put 'put ''REQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6IkZPUk1BVC5URVhUIiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJT''@;'; put 'put ''RSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAwOiJEQVRBLkZJTkQuUFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVY''@;'; put 'put ''VCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6IkNPUFkuUElDVFVSRSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRF''@;'; put 'put ''Lk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwxMjA6IkNBTkNFTC5DT1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwx''@;'; put 'put ''MjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoiRk9STVVMQS5SRVBMQUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJT''@;'; put 'put ''RUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFUQSIsMTQwOiJESVNBQkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0''@;'; put 'put ''MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05UIiwxNTE6IkZJTEwuVVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRF''@;'; put 'put ''TEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRPVy5NQVhJTUlaRSIsMTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxD''@;'; put 'put ''VUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcuVE8uRlJPTlQiLDE3NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4u''@;'; put 'put ''Q0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5MjoiU09SVC5TUEVDSUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIs''@;'; put 'put ''MTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JPVVAiLDIwMToiVVBEQVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAz''@;'; put 'put ''OiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBMSUNBVEUiLDIxMjoiQVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRP''@;'; put 'put ''Lk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVTIiwyMjA6IlNIT1cuVE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVX''@;'; put 'put ''IiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlMRSIsMjQwOiJMSU5FLlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0''@;'; put 'put ''OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpPT00iLDI1OToiSU5TRVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlO''@;'; put 'put ''SU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJHQUxMRVJZLjNELlNVUkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6''@;'; put 'put ''IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZFIiwyODM6IldPUktCT09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BU''@;'; put 'put ''SU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIsMjkzOiJBU1NJR04uVE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5''@;'; put 'put ''NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NFTkFSSU8uQUREIiwzMDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NF''@;'; put 'put ''TkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5GSUVMRCIsMzE1OiJQSVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5G''@;'; put 'put ''SUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xCQVJTIiwzMjQ6IlZCQUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hB''@;'; put 'put ''UlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQuUElDVFVSRSIsMzQzOiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5E''@;'; put 'put ''T1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3MDoiRklMVEVSLkFEVkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxF''@;'; put 'put ''UiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwzODA6IklOU0VSVC5USVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMi''@;'; put 'put ''LDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIsMzkwOiJBREQuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUu''@;'; put 'put ''Q0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVFVFMiLDM5ODoiU1VCVE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFM''@;'; put 'put ''LlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwuU0NSRUVOIiw0MTc6IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NS''@;'; put 'put ''T0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIsNDMwOiJUUkFDRVIuTkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFS''@;'; put 'put ''Iiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJMSVNUQk9YLlBST1BFUlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJU''@;'; put 'put ''SUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBVU0hCVVRUT04uUFJPUEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRF''@;'; put 'put ''RkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1MzoiUkVNT1ZFLkxJU1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5J''@;'; put 'put ''VEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJRVMuWCIsNDYyOiJTRVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0''@;'; put 'put ''NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIsNDcwOiJNQUlMLkVESVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0''@;'; put 'put ''NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6IlZCQS5NQUtFLkFERElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIs''@;'; put 'put ''NDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcuREVGSU5FIiw0OTU6IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJB''@;'; put 'put ''Q0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVBUi5QUklOVC5BUkVBIiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6''@;'; put 'put ''Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJFVklTSU9OUyIsNjIxOiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6''@;'; put 'put ''Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5JTktBTk5PVFMifSxldz17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05B''@;'; put 'put ''IiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJTiIsMTY6IkNPUyIsMTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIs''@;'; put 'put ''MjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVOIiwzMzoiVkFMVUUiLDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJB''@;'; put 'put ''TkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQiLDQ5OiJMSU5FU1QiLDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6''@;'; put 'put ''IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIsNjU6IkRBVEUiLDY2OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgi''@;'; put 'put ''LDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4MDoiUkVMUkVGIiw4MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgz''@;'; put 'put ''OiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1FTlRTIiw5NDoiQUNUSVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2''@;'; put 'put ''OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VULkZPUk1VTEEiLDEwNzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVF''@;'; put 'put ''IiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBMQUNFIiwxMjA6IlNVQlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJO''@;'; put 'put ''QU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIsMTMzOiJGQ0xPU0UiLDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIs''@;'; put 'put ''MTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYiLDE0NjoiUkVGVEVYVCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElS''@;'; put 'put ''RUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJFTkFNRS5DT01NQU5EIiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVU''@;'; put 'put ''RS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJGSUxFUyIsMTY3OiJJUE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRB''@;'; put 'put ''IiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVSTUlOQVRFIiwxODA6IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJH''@;'; put 'put ''RVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklTTk9OVEVYVCIsMTkxOiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6''@;'; put 'put ''IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6IlVTRE9MTEFSIiwyMDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIw''@;'; put 'put ''NzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6IkFERFJFU1MiLDIyMDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIy''@;'; put 'put ''OiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMyOiJBU0lOSCIsMjMzOiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJE''@;'; put 'put ''R0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQuTElOSy5JTkZPIiwyNDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0''@;'; put 'put ''NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIiLDI1NjoiUkVTRVQuVE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4''@;'; put 'put ''OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6IkVOQUJMRS5UT09MIiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVH''@;'; put 'put ''SVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5WIiwyNzY6IkNPTUJJTiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNS''@;'; put 'put ''SVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1BSU5WIiwyODg6IkNFSUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5''@;'; put 'put ''MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIsMjk4OiJPREQiLDI5OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMw''@;'; put 'put ''MToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6IkZURVNUIiwzMTE6IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwz''@;'; put 'put ''MTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNLRVciLDMyNDoiWlRFU1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwi''@;'; put 'put ''LDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMzNjoiQ09OQ0FURU5BVEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1Qu''@;'; put 'put ''QURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VNSUYiLDM0NjoiQ09VTlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6''@;'; put 'put ''IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElBTE9HIiwzNTY6IlNBVkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwz''@;'; put 'put ''NTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwzNjc6IlZBUkEiLDM2ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9G''@;'; put 'put ''V0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3NjoiUk9VTkRCQUhURE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4''@;'; put 'put ''OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgyREVDIiwzODY6IkhFWDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJE''@;'; put 'put ''RUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1ESVYiLDM5ODoiSU1QT1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNR''@;'; put 'put ''UlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFSWSIsNDEwOiJJTVJFQUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNV''@;'; put 'put ''TSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNPREQiLDQyMjoiTVJPVU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0''@;'; put 'put ''MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoiUkVDRUlWRUQiLDQzNToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQz''@;'; put 'put ''NzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlOQUwiLDQ0NjoiRUZGRUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNV''@;'; put 'put ''TUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1NzoiQ09VUFBDRCIsNDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJ''@;'; put 'put ''T04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JMSU5DIiw0Njg6IkNPTlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJB''@;'; put 'put ''Q0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1CRVIiLDQ3ODoiQ1VCRVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4''@;'; put 'put ''MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSx0dz17MjoxLDM6MSwxMDowLDE1OjEsMTY6MSwxNzoxLDE4OjEsMTk6MCwyMDoxLDIxOjEsMjI6MSwyMzoxLDI0OjEsMjU6MSwyNjoxLDI3OjIsMzA6MiwzMToz''@;'; put 'put ''LDMyOjEsMzM6MSwzNDowLDM1OjAsMzg6MSwzOToyLDQwOjMsNDE6Myw0MjozLDQzOjMsNDQ6Myw0NTozLDQ3OjMsNDg6Miw1MzoxLDYxOjMsNjM6MCw2NTozLDY2OjMsNjc6MSw2ODoxLDY5OjEsNzA6MSw3MToxLDcyOjEsNzM6MSw3NDowLDc1OjEsNzY6MSw3NzoxLDc5OjIsODA6Miw4Mzox''@;'; put 'put ''LDg1OjAsODY6MSw4OTowLDkwOjEsOTQ6MCw5NTowLDk3OjIsOTg6MSw5OToxLDEwMTozLDEwMjozLDEwNToxLDEwNjoxLDEwODoyLDExMToxLDExMjoxLDExMzoxLDExNDoxLDExNzoyLDExODoxLDExOTo0LDEyMToxLDEyNjoxLDEyNzoxLDEyODoxLDEyOToxLDEzMDoxLDEzMToxLDEzMzox''@;'; put 'put ''LDEzNDoxLDEzNToxLDEzNjoyLDEzNzoyLDEzODoyLDE0MDoxLDE0MToxLDE0MjozLDE0Mzo0LDE0NDo0LDE2MToxLDE2MjoxLDE2MzoxLDE2NDoxLDE2NToyLDE3MjoxLDE3NToyLDE3NjoyLDE3NzozLDE3ODoyLDE3OToxLDE4NDoxLDE4NjoxLDE4OTozLDE5MDoxLDE5NTozLDE5NjozLDE5''@;'; put 'put ''NzoxLDE5ODoxLDE5OTozLDIwMToxLDIwNzo0LDIxMDozLDIxMToxLDIxMjoyLDIxMzoyLDIxNDoxLDIxNToxLDIyNTowLDIyOToxLDIzMDoxLDIzMToxLDIzMjoxLDIzMzoxLDIzNDoxLDIzNTozLDI0NDoxLDI0Nzo0LDI1MjoyLDI1NzoxLDI2MToxLDI3MToxLDI3Mzo0LDI3NDoyLDI3NToy''@;'; put 'put ''LDI3NjoyLDI3NzozLDI3ODozLDI3OToxLDI4MDozLDI4MTozLDI4MjozLDI4MzoxLDI4NDoxLDI4NToyLDI4Njo0LDI4NzozLDI4ODoyLDI4OTo0LDI5MDozLDI5MTozLDI5MjozLDI5Mzo0LDI5NDoxLDI5NTozLDI5NjoxLDI5NzozLDI5ODoxLDI5OToyLDMwMDozLDMwMTozLDMwMjo0LDMw''@;'; put 'put ''MzoyLDMwNDoyLDMwNToyLDMwNjoyLDMwNzoyLDMwODoyLDMwOTozLDMxMDoyLDMxMToyLDMxMjoyLDMxMzoyLDMxNDoyLDMxNToyLDMxNjo0LDMyNToyLDMyNjoyLDMyNzoyLDMyODoyLDMzMToyLDMzMjoyLDMzNzoyLDM0MjoxLDM0MzoxLDM0NjoyLDM0NzoxLDM1MDo0LDM1MTozLDM1Mjox''@;'; put 'put ''LDM1MzoyLDM2MDoxLDM2ODoxLDM2OToxLDM3MDoxLDM3MToxLDM3MjoxLDM3MzoxLDM3NDoxLDM3NToxLDM3NjoxLDM3NzoxLDM3ODoxLDM4MjozLDM4NToxLDM5MjoxLDM5MzoxLDM5NjoyLDM5NzoyLDM5ODoyLDM5OToxLDQwMDoxLDQwMToxLDQwMjoxLDQwMzoxLDQwNDoxLDQwNToxLDQw''@;'; put 'put ''NjoxLDQwNzoxLDQwODoxLDQwOToxLDQxMDoxLDQxNDo0LDQxNToxLDQxNjoxLDQxNzoyLDQyMDoxLDQyMToxLDQyMjoyLDQyNDoxLDQyNToyLDQyNjoyLDQyNzoyLDQyODoyLDQzMDozLDQzODozLDQzOTozLDQ0MDozLDQ0MzoyLDQ0NDoyLDQ0NToyLDQ0NjoyLDQ0Nzo2LDQ0ODo2LDQ0OToy''@;'; put 'put ''LDQ1MDoyLDQ2NDoyLDQ2ODozLDQ3NjoyLDQ3OToxLDQ4MDoyLDY1NTM1OjB9LG5nPXsiX3hsZm4uQUNPVCI6IkFDT1QiLCJfeGxmbi5BQ09USCI6IkFDT1RIIiwiX3hsZm4uQUdHUkVHQVRFIjoiQUdHUkVHQVRFIiwiX3hsZm4uQVJBQklDIjoiQVJBQklDIiwiX3hsZm4uQVZFUkFHRUlGIjoi''@;'; put 'put ''QVZFUkFHRUlGIiwiX3hsZm4uQVZFUkFHRUlGUyI6IkFWRVJBR0VJRlMiLCJfeGxmbi5CQVNFIjoiQkFTRSIsIl94bGZuLkJFVEEuRElTVCI6IkJFVEEuRElTVCIsIl94bGZuLkJFVEEuSU5WIjoiQkVUQS5JTlYiLCJfeGxmbi5CSU5PTS5ESVNUIjoiQklOT00uRElTVCIsIl94bGZuLkJJTk9N''@;'; put 'put ''LkRJU1QuUkFOR0UiOiJCSU5PTS5ESVNULlJBTkdFIiwiX3hsZm4uQklOT00uSU5WIjoiQklOT00uSU5WIiwiX3hsZm4uQklUQU5EIjoiQklUQU5EIiwiX3hsZm4uQklUTFNISUZUIjoiQklUTFNISUZUIiwiX3hsZm4uQklUT1IiOiJCSVRPUiIsIl94bGZuLkJJVFJTSElGVCI6IkJJVFJTSElG''@;'; put 'put ''VCIsIl94bGZuLkJJVFhPUiI6IkJJVFhPUiIsIl94bGZuLkNFSUxJTkcuTUFUSCI6IkNFSUxJTkcuTUFUSCIsIl94bGZuLkNFSUxJTkcuUFJFQ0lTRSI6IkNFSUxJTkcuUFJFQ0lTRSIsIl94bGZuLkNISVNRLkRJU1QiOiJDSElTUS5ESVNUIiwiX3hsZm4uQ0hJU1EuRElTVC5SVCI6IkNISVNR''@;'; put 'put ''LkRJU1QuUlQiLCJfeGxmbi5DSElTUS5JTlYiOiJDSElTUS5JTlYiLCJfeGxmbi5DSElTUS5JTlYuUlQiOiJDSElTUS5JTlYuUlQiLCJfeGxmbi5DSElTUS5URVNUIjoiQ0hJU1EuVEVTVCIsIl94bGZuLkNPTUJJTkEiOiJDT01CSU5BIiwiX3hsZm4uQ09OQ0FUIjoiQ09OQ0FUIiwiX3hsZm4u''@;'; put 'put ''Q09ORklERU5DRS5OT1JNIjoiQ09ORklERU5DRS5OT1JNIiwiX3hsZm4uQ09ORklERU5DRS5UIjoiQ09ORklERU5DRS5UIiwiX3hsZm4uQ09UIjoiQ09UIiwiX3hsZm4uQ09USCI6IkNPVEgiLCJfeGxmbi5DT1VOVElGUyI6IkNPVU5USUZTIiwiX3hsZm4uQ09WQVJJQU5DRS5QIjoiQ09WQVJJ''@;'; put 'put ''QU5DRS5QIiwiX3hsZm4uQ09WQVJJQU5DRS5TIjoiQ09WQVJJQU5DRS5TIiwiX3hsZm4uQ1NDIjoiQ1NDIiwiX3hsZm4uQ1NDSCI6IkNTQ0giLCJfeGxmbi5EQVlTIjoiREFZUyIsIl94bGZuLkRFQ0lNQUwiOiJERUNJTUFMIiwiX3hsZm4uRUNNQS5DRUlMSU5HIjoiRUNNQS5DRUlMSU5HIiwi''@;'; put 'put ''X3hsZm4uRVJGLlBSRUNJU0UiOiJFUkYuUFJFQ0lTRSIsIl94bGZuLkVSRkMuUFJFQ0lTRSI6IkVSRkMuUFJFQ0lTRSIsIl94bGZuLkVYUE9OLkRJU1QiOiJFWFBPTi5ESVNUIiwiX3hsZm4uRi5ESVNUIjoiRi5ESVNUIiwiX3hsZm4uRi5ESVNULlJUIjoiRi5ESVNULlJUIiwiX3hsZm4uRi5J''@;'; put 'put ''TlYiOiJGLklOViIsIl94bGZuLkYuSU5WLlJUIjoiRi5JTlYuUlQiLCJfeGxmbi5GLlRFU1QiOiJGLlRFU1QiLCJfeGxmbi5GSUxURVJYTUwiOiJGSUxURVJYTUwiLCJfeGxmbi5GTE9PUi5NQVRIIjoiRkxPT1IuTUFUSCIsIl94bGZuLkZMT09SLlBSRUNJU0UiOiJGTE9PUi5QUkVDSVNFIiwi''@;'; put 'put ''X3hsZm4uRk9SRUNBU1QuRVRTIjoiRk9SRUNBU1QuRVRTIiwiX3hsZm4uRk9SRUNBU1QuRVRTLkNPTkZJTlQiOiJGT1JFQ0FTVC5FVFMuQ09ORklOVCIsIl94bGZuLkZPUkVDQVNULkVUUy5TRUFTT05BTElUWSI6IkZPUkVDQVNULkVUUy5TRUFTT05BTElUWSIsIl94bGZuLkZPUkVDQVNULkVU''@;'; put 'put ''Uy5TVEFUIjoiRk9SRUNBU1QuRVRTLlNUQVQiLCJfeGxmbi5GT1JFQ0FTVC5MSU5FQVIiOiJGT1JFQ0FTVC5MSU5FQVIiLCJfeGxmbi5GT1JNVUxBVEVYVCI6IkZPUk1VTEFURVhUIiwiX3hsZm4uR0FNTUEiOiJHQU1NQSIsIl94bGZuLkdBTU1BLkRJU1QiOiJHQU1NQS5ESVNUIiwiX3hsZm4u''@;'; put 'put ''R0FNTUEuSU5WIjoiR0FNTUEuSU5WIiwiX3hsZm4uR0FNTUFMTi5QUkVDSVNFIjoiR0FNTUFMTi5QUkVDSVNFIiwiX3hsZm4uR0FVU1MiOiJHQVVTUyIsIl94bGZuLkhZUEdFT00uRElTVCI6IkhZUEdFT00uRElTVCIsIl94bGZuLklGRVJST1IiOiJJRkVSUk9SIiwiX3hsZm4uSUZOQSI6IklG''@;'; put 'put ''TkEiLCJfeGxmbi5JRlMiOiJJRlMiLCJfeGxmbi5JTUNPU0giOiJJTUNPU0giLCJfeGxmbi5JTUNPVCI6IklNQ09UIiwiX3hsZm4uSU1DU0MiOiJJTUNTQyIsIl94bGZuLklNQ1NDSCI6IklNQ1NDSCIsIl94bGZuLklNU0VDIjoiSU1TRUMiLCJfeGxmbi5JTVNFQ0giOiJJTVNFQ0giLCJfeGxm''@;'; put 'put ''bi5JTVNJTkgiOiJJTVNJTkgiLCJfeGxmbi5JTVRBTiI6IklNVEFOIiwiX3hsZm4uSVNGT1JNVUxBIjoiSVNGT1JNVUxBIiwiX3hsZm4uSVNPLkNFSUxJTkciOiJJU08uQ0VJTElORyIsIl94bGZuLklTT1dFRUtOVU0iOiJJU09XRUVLTlVNIiwiX3hsZm4uTE9HTk9STS5ESVNUIjoiTE9HTk9S''@;'; put 'put ''TS5ESVNUIiwiX3hsZm4uTE9HTk9STS5JTlYiOiJMT0dOT1JNLklOViIsIl94bGZuLk1BWElGUyI6Ik1BWElGUyIsIl94bGZuLk1JTklGUyI6Ik1JTklGUyIsIl94bGZuLk1PREUuTVVMVCI6Ik1PREUuTVVMVCIsIl94bGZuLk1PREUuU05HTCI6Ik1PREUuU05HTCIsIl94bGZuLk1VTklUIjoi''@;'; put 'put ''TVVOSVQiLCJfeGxmbi5ORUdCSU5PTS5ESVNUIjoiTkVHQklOT00uRElTVCIsIl94bGZuLk5FVFdPUktEQVlTLklOVEwiOiJORVRXT1JLREFZUy5JTlRMIiwiX3hsZm4uTklHQklOT00iOiJOSUdCSU5PTSIsIl94bGZuLk5PUk0uRElTVCI6Ik5PUk0uRElTVCIsIl94bGZuLk5PUk0uSU5WIjoi''@;'; put 'put ''Tk9STS5JTlYiLCJfeGxmbi5OT1JNLlMuRElTVCI6Ik5PUk0uUy5ESVNUIiwiX3hsZm4uTk9STS5TLklOViI6Ik5PUk0uUy5JTlYiLCJfeGxmbi5OVU1CRVJWQUxVRSI6Ik5VTUJFUlZBTFVFIiwiX3hsZm4uUERVUkFUSU9OIjoiUERVUkFUSU9OIiwiX3hsZm4uUEVSQ0VOVElMRS5FWEMiOiJQ''@;'; put 'put ''RVJDRU5USUxFLkVYQyIsIl94bGZuLlBFUkNFTlRJTEUuSU5DIjoiUEVSQ0VOVElMRS5JTkMiLCJfeGxmbi5QRVJDRU5UUkFOSy5FWEMiOiJQRVJDRU5UUkFOSy5FWEMiLCJfeGxmbi5QRVJDRU5UUkFOSy5JTkMiOiJQRVJDRU5UUkFOSy5JTkMiLCJfeGxmbi5QRVJNVVRBVElPTkEiOiJQRVJN''@;'; put 'put ''VVRBVElPTkEiLCJfeGxmbi5QSEkiOiJQSEkiLCJfeGxmbi5QT0lTU09OLkRJU1QiOiJQT0lTU09OLkRJU1QiLCJfeGxmbi5RVUFSVElMRS5FWEMiOiJRVUFSVElMRS5FWEMiLCJfeGxmbi5RVUFSVElMRS5JTkMiOiJRVUFSVElMRS5JTkMiLCJfeGxmbi5RVUVSWVNUUklORyI6IlFVRVJZU1RS''@;'; put 'put ''SU5HIiwiX3hsZm4uUkFOSy5BVkciOiJSQU5LLkFWRyIsIl94bGZuLlJBTksuRVEiOiJSQU5LLkVRIiwiX3hsZm4uUlJJIjoiUlJJIiwiX3hsZm4uU0VDIjoiU0VDIiwiX3hsZm4uU0VDSCI6IlNFQ0giLCJfeGxmbi5TSEVFVCI6IlNIRUVUIiwiX3hsZm4uU0hFRVRTIjoiU0hFRVRTIiwiX3hs''@;'; put 'put ''Zm4uU0tFVy5QIjoiU0tFVy5QIiwiX3hsZm4uU1RERVYuUCI6IlNUREVWLlAiLCJfeGxmbi5TVERFVi5TIjoiU1RERVYuUyIsIl94bGZuLlNVTUlGUyI6IlNVTUlGUyIsIl94bGZuLlNXSVRDSCI6IlNXSVRDSCIsIl94bGZuLlQuRElTVCI6IlQuRElTVCIsIl94bGZuLlQuRElTVC4yVCI6IlQu''@;'; put 'put ''RElTVC4yVCIsIl94bGZuLlQuRElTVC5SVCI6IlQuRElTVC5SVCIsIl94bGZuLlQuSU5WIjoiVC5JTlYiLCJfeGxmbi5ULklOVi4yVCI6IlQuSU5WLjJUIiwiX3hsZm4uVC5URVNUIjoiVC5URVNUIiwiX3hsZm4uVEVYVEpPSU4iOiJURVhUSk9JTiIsIl94bGZuLlVOSUNIQVIiOiJVTklDSEFS''@;'; put 'put ''IiwiX3hsZm4uVU5JQ09ERSI6IlVOSUNPREUiLCJfeGxmbi5WQVIuUCI6IlZBUi5QIiwiX3hsZm4uVkFSLlMiOiJWQVIuUyIsIl94bGZuLldFQlNFUlZJQ0UiOiJXRUJTRVJWSUNFIiwiX3hsZm4uV0VJQlVMTC5ESVNUIjoiV0VJQlVMTC5ESVNUIiwiX3hsZm4uV09SS0RBWS5JTlRMIjoiV09S''@;'; put 'put ''S0RBWS5JTlRMIiwiX3hsZm4uWE9SIjoiWE9SIiwiX3hsZm4uWi5URVNUIjoiWi5URVNUIn07ZnVuY3Rpb24gQkEodyl7cmV0dXJuIm9mOiI9PXcuc2xpY2UoMCwzKSYmKHc9dy5zbGljZSgzKSksNjE9PXcuY2hhckNvZGVBdCgwKSYmNjE9PSh3PXcuc2xpY2UoMSkpLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''Jih3PXcuc2xpY2UoMSkpLCh3PSh3PSh3PXcucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSkucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbihQLEQpe3JldHVybiBELnJlcGxhY2UoL1wuL2csIiIpfSkpLnJlcGxh''@;'; put 'put ''Y2UoL1xbLigjW0EtWl0qWz8hXSlcXS9nLCIkMSIpKS5yZXBsYWNlKC9bO35dL2csIiwiKS5yZXBsYWNlKC9cfC9nLCI7Iil9ZnVuY3Rpb24gakEodyl7cmV0dXJuKCJvZjo9Iit3LnJlcGxhY2UoRF8sIiQxWy4kMiQzJDQkNV0iKS5yZXBsYWNlKC9cXTpcWy9nLCI6IikpLnJlcGxhY2UoLzsv''@;'; put 'put ''ZywifCIpLnJlcGxhY2UoLywvZywiOyIpfWZ1bmN0aW9uIG53KHcpe3ZhciBQPXcuc3BsaXQoIjoiKTtyZXR1cm5bUFswXS5zcGxpdCgiLiIpWzBdLFBbMF0uc3BsaXQoIi4iKVsxXSsoUC5sZW5ndGg+MT8iOiIrKFBbMV0uc3BsaXQoIi4iKVsxXXx8UFsxXS5zcGxpdCgiLiIpWzBdKToiIild''@;'; put 'put ''fWZ1bmN0aW9uIHpBKHcpe3JldHVybiB3LnJlcGxhY2UoL1wuLywiISIpfXZhciBaOD17fSxGcD17fTtOaS5XUz1bImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0IiwiaHR0cDovL3B1cmwub2NsYy5v''@;'; put 'put ''cmcvb294bWwvb2ZmaWNlRG9jdW1lbnQvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiXTt2YXIgYzE9dHlwZW9mIE1hcDwidSI7ZnVuY3Rpb24gcncodyxQLEQsZWUpe3ZhciBvZT0wLGdlPXcubGVuZ3RoO2lmKGVlKXtpZihjMT9lZS5oYXMoUCk6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eS5jYWxsKGVlLFApKWZvcih2YXIgX2U9YzE/ZWUuZ2V0KFApOmVlW1BdO29lPF9lLmxlbmd0aDsrK29lKWlmKHdbX2Vbb2VdXS50PT09UCYmKCF3W19lW29lXV0uciYmIUR8fHdbX2Vbb2VdXS5yPT1EKSlyZXR1cm4gdy5Db3VudCsrLF9lW29lXX1lbHNlIGZvcig7b2U8Z2U7KytvZSlp''@;'; put 'put ''Zih3W29lXS50PT09UCYmKCF3W29lXS5yJiYhRHx8d1tvZV0ucj09RCkpcmV0dXJuIHcuQ291bnQrKyxvZTtyZXR1cm4gd1tnZV09e3Q6UCxyOkR9LHcuQ291bnQrKyx3LlVuaXF1ZSsrLGVlJiYoYzE/KGVlLmhhcyhQKXx8ZWUuc2V0KFAsW10pLGVlLmdldChQKS5wdXNoKGdlKSk6KE9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSxQKXx8KGVlW1BdPVtdKSxlZVtQXS5wdXNoKGdlKSkpLGdlfWZ1bmN0aW9uIHVkKHcsUCl7dmFyIEQ9e21pbjp3KzEsbWF4OncrMX0sZWU9X3M7aWYoIVApcmV0dXJuIFA7dmFyIG9lPS0xO3JldHVybiBQLmF1dG8mJihELmJlc3RG''@;'; put 'put ''aXQ9MSxQLmJlc3R3aWR0aCYmKG9lPVAuYmVzdHdpZHRoKSxkZWxldGUgUC5iZXN0d2lkdGgpLG51bGwhPVAud3B4P29lPU0yKFAud3B4KTpudWxsIT1QLndjaD9vZT1QLndjaDpudWxsIT1QLndpZHRoJiYoRC5jdXN0b21XaWR0aD0xKSxvZT4tMT8oRC53aWR0aD1vZChvZSksRC5jdXN0b21X''@;'; put 'put ''aWR0aD0xKTpudWxsIT1QLndpZHRoJiYoRC53aWR0aD1QLndpZHRoKSxQLmhpZGRlbiYmKEQuaGlkZGVuPSEwKSxELmJlc3RGaXQmJmRlbGV0ZSBELmN1c3RvbVdpZHRoLF9zPWVlLG51bGwhPVAubGV2ZWwmJihELm91dGxpbmVMZXZlbD1ELmxldmVsPVAubGV2ZWwpLG51bGwhPVAuc3R5bGUm''@;'; put 'put ''JihELnN0eWxlPVAuc3R5bGUpLER9ZnVuY3Rpb24gVmkodyxQLEQpe3ZhciBlZT1LYSh3WyIhcmVmIl0pLG9lPTAsZ2U9d1siIW1lcmdlcyJdfHxbXSxfZT1BcnJheS5pc0FycmF5KHcpO2U6Zm9yKHZhciB2ZT0wO3ZlPD1lZS5lLnI7Kyt2ZSl7Zm9yKHZhciBNZT0wO01lPGdlLmxlbmd0aDsr''@;'; put 'put ''K01lKWlmKGdlW01lXS5zLnI8PXZlJiZ2ZTw9Z2VbTWVdLmUuciYmZ2VbTWVdLnMuYzw9RCYmRDw9Z2VbTWVdLmUuYyljb250aW51ZSBlO3ZhciBqZT1fZT8od1t2ZV18fFtdKVtEXTp3W3BpKHtyOnZlLGM6RH0pXTtpZihqZSl7dmFyIFVlPTE7aWYoamUucyYmKFVlPXY4KGplLnMpL2c4LkNh''@;'; put 'put ''bGlicmlbMTJdfHwxKSxqZS53KW9lPU1hdGgubWF4KG9lLGplLncubGVuZ3RoKlVlKTtlbHNlIHN3aXRjaChqZS50KXtjYXNlImIiOmNhc2UiZSI6b2U9TWF0aC5tYXgob2UsNSpVZSk7YnJlYWs7Y2FzZSJzIjpvZT1NYXRoLm1heChvZSxqZS52Lmxlbmd0aCpVZSoxLjJ8MCk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJuIjpQNihqZSxqZS52KSxvZT1NYXRoLm1heChvZSxTdHJpbmcoamUud3x8amUudikubGVuZ3RoKlVlKTticmVhaztjYXNlImQiOm9lPU1hdGgubWF4KG9lLDgqVWUpfX19b2U8MSYmKG9lPTEpLFAuYmVzdHdpZHRoPW9lfWZ1bmN0aW9uIEkyKHcsUCl7aWYodyl7dmFyIEQ9Wy43LC43LC43''@;'; put 'put ''NSwuNzUsLjMsLjNdOyJ4bG1sIj09UCYmKEQ9WzEsMSwxLDEsLjUsLjVdKSxudWxsPT13LmxlZnQmJih3LmxlZnQ9RFswXSksbnVsbD09dy5yaWdodCYmKHcucmlnaHQ9RFsxXSksbnVsbD09dy50b3AmJih3LnRvcD1EWzJdKSxudWxsPT13LmJvdHRvbSYmKHcuYm90dG9tPURbM10pLG51bGw9''@;'; put 'put ''PXcuaGVhZGVyJiYody5oZWFkZXI9RFs0XSksbnVsbD09dy5mb290ZXImJih3LmZvb3Rlcj1EWzVdKX19ZnVuY3Rpb24gam8odyxQKXtmb3IodmFyIEQ9bXQoUCksZWU9MDtlZTx3Lmxlbmd0aDsrK2VlKXt2YXIgb2U9ITAsZ2U9d1tlZV07aWYoZ2UmJkQubGVuZ3RoPT1tdChnZSkubGVuZ3Ro''@;'; put 'put ''JiYoRC5mb3JFYWNoKGZ1bmN0aW9uKF9lKXtpZihvZSl7aWYobnVsbD09PVBbX2VdIT0obnVsbD09PWdlW19lXSkpcmV0dXJuIHZvaWQob2U9ITEpO2lmKCJvYmplY3QiPT10eXBlb2YgUFtfZV0paWYoWyJjb2xvciIsImZnQ29sb3IiLCJiZ0NvbG9yIl0uaW5kZXhPZihfZSk+LTEpe2lmKHMx''@;'; put 'put ''KFBbX2VdLGdlW19lXSkpcmV0dXJuIHZvaWQob2U9ITEpfWVsc2V7aWYoIShbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmluZGV4T2YoX2UpPi0xKSlyZXR1cm4gdm9pZChvZT0hMSk7aWYoaDgoUFtfZV0sZ2VbX2VdKSlyZXR1cm4gdm9pZChvZT0hMSl9aWYoUFtfZV0hPWdlW19l''@;'; put 'put ''XSlyZXR1cm4gdm9pZChvZT0hMSl9fSksb2UpKXJldHVybiBlZX1yZXR1cm4gd1t3Lmxlbmd0aF09SnQoUCksdy5sZW5ndGgtMX1mdW5jdGlvbiB3Yyh3LFAsRCxlZSl7dmFyIG9lPWVlLnJldnNzZltudWxsIT1ELno/RC56OiJHZW5lcmFsIl0sZ2U9NjAsX2U9dy5sZW5ndGg7aWYobnVsbD09''@;'; put 'put ''b2UmJmVlLnNzZilmb3IoO2dlPDM5MjsrK2dlKWlmKG51bGw9PWVlLnNzZltnZV0pe1MubG9hZChELnosZ2UpLGVlLnNzZltnZV09RC56LGVlLnJldnNzZltELnpdPW9lPWdlO2JyZWFrfXZhciB2ZT0wLE1lPTAsamU9MCxVZT0wO2lmKGVlLmNlbGxTdHlsZXMpe2lmKEQucyl7aWYoZWUuRm9u''@;'; put 'put ''dHMpe0Qucy5jb2xvcnx8KEQucy5jb2xvcj17dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9KTtmb3IodmFyIFhlPShELnMuYm9sZD8xOjApfChELnMuaXRhbGljPzI6MCl8KEQucy5zdHJpa2U/NDowKXwoRC5zLnNoYWRvdz84OjApO3ZlPGVlLkZvbnRzLmxlbmd0aDsrK3ZlKXt2YXIgaXQ9ZWUuRm9u''@;'; put 'put ''dHNbdmVdO2lmKG51bGw9PWl0LmZvbnRoYXNoJiYoaXQuZm9udGhhc2g9KGl0LmJvbGQ/MTowKXwoaXQuaXRhbGljPzI6MCl8KGl0LnN0cmlrZT80OjApfChpdC5zaGFkb3c/ODowKSksIShYZSE9aXQuZm9udGhhc2h8fCEhRC5zLmNvbG9yIT0hIWl0LmNvbG9yfHxELnMudmFsaWduIT1pdC52''@;'; put 'put ''YWxpZ258fChELnMuc3p8fGl0LnN6KSYmKEQucy5zenx8MTIpIT0oaXQuc3p8fDEyKXx8RC5zLm5hbWUmJkQucy5uYW1lIT1pdC5uYW1lfHwoRC5zLnVuZGVybGluZXx8MCkhPShpdC51bmRlcmxpbmV8fDApfHxELnMuY29sb3ImJnMxKEQucy5jb2xvcixpdC5jb2xvcikpKWJyZWFrfXZlPT1l''@;'; put 'put ''ZS5Gb250cy5sZW5ndGgmJihlZS5Gb250cy5wdXNoKHtzejpELnMuc3p8fDEyLGNvbG9yOkQucy5jb2xvcnx8e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOkQucy5uYW1lfHwiQ2FsaWJyaSIsZmFtaWx5OkQucy5mYW1pbHl8fDIsc2NoZW1lOkQucy5zY2hlbWUsYm9sZDpELnMuYm9sZCxp''@;'; put 'put ''dGFsaWM6RC5zLml0YWxpYyxzdHJpa2U6RC5zLnN0cmlrZSxzaGFkb3c6RC5zLnNoYWRvdyx2YWxpZ246RC5zLnZhbGlnbix1bmRlcmxpbmU6RC5zLnVuZGVybGluZX0pLDE9PWVlLkZvbnRzLmxlbmd0aCYmaGYoZWUuRm9udHNbMF0pKX1pZihlZS5GaWxscyl7Zm9yKDtNZTxlZS5GaWxscy5s''@;'; put 'put ''ZW5ndGg7KytNZSl7dmFyIGZ0PWVlLkZpbGxzW01lXTtpZighIUQucy5zdG9wcz09ISFmdC5zdG9wcyl7aWYoRC5zLnN0b3BzKXtpZihELnMuYW5nbGUhPWZ0LmFuZ2xlKWNvbnRpbnVlO3ZhciBNdD0hMDtpZihELnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihrdCxUdCl7czEoa3QsZnQuc3Rv''@;'; put 'put ''cHNbVHRdKSYmKE10PSExKSxrdC52IT1mdC5zdG9wc1tUdF0udiYmKE10PSExKX0pLCFNdCljb250aW51ZX1lbHNle2lmKG51bGw9PUQucy5wYXR0ZXJuVHlwZSYmRC5zLmZnQ29sb3ImJihELnMucGF0dGVyblR5cGU9InNvbGlkIiksbnVsbD09RC5zLnBhdHRlcm5UeXBlKWJyZWFrO2lmKEQu''@;'; put 'put ''cy5wYXR0ZXJuVHlwZSE9ZnQucGF0dGVyblR5cGV8fHMxKEQucy5mZ0NvbG9yLGZ0LmZnQ29sb3IpfHxzMShELnMuYmdDb2xvcixmdC5iZ0NvbG9yKSljb250aW51ZX1icmVha319aWYoTWU9PWVlLkZpbGxzLmxlbmd0aCl7dmFyIHV0PXt9O0Qucy5zdG9wcz8obnVsbCE9RC5zLmFuZ2xlJiYo''@;'; put 'put ''dXQuYW5nbGU9RC5zLmFuZ2xlKSx1dC5zdG9wcz1bXSxELnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihrdCl7dXQuc3RvcHMucHVzaChKdChrdCkpfSkpOnV0PXtwYXR0ZXJuVHlwZTpELnMucGF0dGVyblR5cGUsZmdDb2xvcjpELnMuZmdDb2xvcixiZ0NvbG9yOkQucy5iZ0NvbG9yfSxlZS5G''@;'; put 'put ''aWxscy5wdXNoKHV0KX19aWYoZWUuQm9yZGVycyl7Zm9yKDtqZTxlZS5Cb3JkZXJzLmxlbmd0aDsrK2plKXt2YXIgd3Q9ZWUuQm9yZGVyc1tqZV0sSHQ9InRvcCI7aWYoRC5zW0h0XSl7aWYoIXd0W0h0XXx8RC5zW0h0XS5zdHlsZSE9d3RbSHRdLnN0eWxlfHxzMShELnNbSHRdLmNvbG9yLHd0''@;'; put 'put ''W0h0XS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT13dFtIdF0pY29udGludWU7aWYoRC5zW0h0PSJib3R0b20iXSl7aWYoIXd0W0h0XXx8RC5zW0h0XS5zdHlsZSE9d3RbSHRdLnN0eWxlfHxzMShELnNbSHRdLmNvbG9yLHd0W0h0XS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxs''@;'; put 'put ''IT13dFtIdF0pY29udGludWU7aWYoRC5zW0h0PSJsZWZ0Il0pe2lmKCF3dFtIdF18fEQuc1tIdF0uc3R5bGUhPXd0W0h0XS5zdHlsZXx8czEoRC5zW0h0XS5jb2xvcix3dFtIdF0uY29sb3IpKWNvbnRpbnVlfWVsc2UgaWYobnVsbCE9d3RbSHRdKWNvbnRpbnVlO2lmKEQuc1tIdD0icmlnaHQi''@;'; put 'put ''XSl7aWYoIXd0W0h0XXx8RC5zW0h0XS5zdHlsZSE9d3RbSHRdLnN0eWxlfHxzMShELnNbSHRdLmNvbG9yLHd0W0h0XS5jb2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT13dFtIdF0pY29udGludWU7YnJlYWt9amU9PWVlLkJvcmRlcnMubGVuZ3RoJiZlZS5Cb3JkZXJzLnB1c2goe3RvcDpE''@;'; put 'put ''LnMudG9wJiZKdChELnMudG9wKXx8dm9pZCAwLGJvdHRvbTpELnMuYm90dG9tJiZKdChELnMuYm90dG9tKXx8dm9pZCAwLGxlZnQ6RC5zLmxlZnQmJkp0KEQucy5sZWZ0KXx8dm9pZCAwLHJpZ2h0OkQucy5yaWdodCYmSnQoRC5zLnJpZ2h0KXx8dm9pZCAwfSl9aWYoUCYmRC5zLnN0eWxlJiYi''@;'; put 'put ''Tm9ybWFsIiE9PUQucy5zdHlsZSl7Zm9yKFVlPTE7VWU8UC5sZW5ndGgmJlBbVWVdLm5hbWUhPUQucy5zdHlsZTsrK1VlKTtVZT09UC5sZW5ndGgmJlAucHVzaCh7bmFtZTpELnMuc3R5bGUsbnVtRm10SWQ6b2UsZm9udElkOnZlLGZpbGxJZDpNZSxib3JkZXJJZDpqZX0pfX1mb3IoZ2U9MDtn''@;'; put 'put ''ZSE9X2U7KytnZSlpZih3W2dlXS5udW1GbXRJZD09b2UmJndbZ2VdLmZvbnRJZD09dmUmJndbZ2VdLmZpbGxJZD09TWUmJndbZ2VdLmJvcmRlcklkPT1qZSYmd1tnZV0ueGZJZD09VWUpe2lmKEQucyYmRC5zLmFsaWdubWVudCl7aWYoIXdbZ2VdLmFsaWdubWVudCljb250aW51ZTtpZihELnMu''@;'; put 'put ''YWxpZ25tZW50Lmhvcml6b250YWwhPXdbZ2VdLmFsaWdubWVudC5ob3Jpem9udGFsfHxELnMuYWxpZ25tZW50LnZlcnRpY2FsIT13W2dlXS5hbGlnbm1lbnQudmVydGljYWx8fEQucy5hbGlnbm1lbnQud3JhcFRleHQhPXdbZ2VdLmFsaWdubWVudC53cmFwVGV4dHx8RC5zLmFsaWdubWVudC5z''@;'; put 'put ''aHJpbmtUb0ZpdCE9d1tnZV0uYWxpZ25tZW50LnNocmlua1RvRml0fHxELnMuYWxpZ25tZW50LnRleHRSb3RhdGlvbiE9d1tnZV0uYWxpZ25tZW50LnRleHRSb3RhdGlvbnx8RC5zLmFsaWdubWVudC5pbmRlbnQhPXdbZ2VdLmFsaWdubWVudC5pbmRlbnQpY29udGludWV9ZWxzZSBpZih3W2dl''@;'; put 'put ''XS5hbGlnbm1lbnQpY29udGludWU7aWYoRC5zKXtpZighIUQucy5oaWRkZW49PSghd1tnZV0ucHJvdGVjdGlvbnx8IXdbZ2VdLnByb3RlY3Rpb24uaGlkZGVuKXx8ISFELnMuZWRpdGFibGU9PSghd1tnZV0ucHJvdGVjdGlvbnx8IXdbZ2VdLnByb3RlY3Rpb24uZWRpdGFibGUpKWNvbnRpbnVl''@;'; put 'put ''fWVsc2UgaWYod1tnZV0ucHJvdGVjdGlvbiljb250aW51ZTtyZXR1cm4gZ2V9fWVsc2UgZm9yKGdlPTA7Z2UhPV9lOysrZ2UpaWYod1tnZV0ubnVtRm10SWQ9PT1vZSlyZXR1cm4gZ2U7cmV0dXJuIHdbX2VdPXtudW1GbXRJZDpvZSxmb250SWQ6dmUsZmlsbElkOk1lLGJvcmRlcklkOmplLHhm''@;'; put 'put ''SWQ6VWUsYXBwbHlOdW1iZXJGb3JtYXQ6MX0sdmU+MCYmKHdbX2VdLmFwcGx5Rm9udD0xKSxNZT4wJiYod1tfZV0uYXBwbHlGaWxsPTEpLGplPjAmJih3W19lXS5hcHBseUJvcmRlcj0xKSwhUCYmRC5zJiZELnMuc3R5bGUmJiJOb3JtYWwiIT1ELnMuc3R5bGUmJih3W19lXS5zdHlsZT1ELnMu''@;'; put 'put ''c3R5bGUpLEQucyYmRC5zLmFsaWdubWVudCYmKHdbX2VdLmFsaWdubWVudD17fSxbImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIndyYXBUZXh0Iiwic2hyaW5rVG9GaXQiLCJpbmRlbnQiLCJ0ZXh0Um90YXRpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKGt0KXtudWxsIT1ELnMuYWxpZ25tZW50W2t0''@;'; put 'put ''XSYmKHdbX2VdLmFsaWdubWVudFtrdF09RC5zLmFsaWdubWVudFtrdF0pfSkpLEQucyYmRC5zLmhpZGRlbiYmKHdbX2VdLnByb3RlY3Rpb258fCh3W19lXS5wcm90ZWN0aW9uPXt9KSx3W19lXS5wcm90ZWN0aW9uLmhpZGRlbj0hMCksRC5zJiZELnMuZWRpdGFibGUmJih3W19lXS5wcm90ZWN0''@;'; put 'put ''aW9ufHwod1tfZV0ucHJvdGVjdGlvbj17fSksd1tfZV0ucHJvdGVjdGlvbi5lZGl0YWJsZT0hMCksX2V9ZnVuY3Rpb24gWTgodyxQLEQsZWUsb2UsZ2UsX2UsdmUpeyJkIj09PXcudCYmInN0cmluZyI9PXR5cGVvZiB3LnYmJih3LnY9UHQody52KSk7dHJ5e2dlLmNlbGxORiYmKHcuej1TLl90''@;'; put 'put ''YWJsZVtQXSl9Y2F0Y2goamUpe2lmKGdlLldURil0aHJvdyBqZX1pZigoIWdlfHwhMSE9PWdlLmNlbGxUZXh0KSYmInoiIT13LnQpdHJ5e2lmKG51bGw9PVMuX3RhYmxlW1BdJiZTLmxvYWQoZmVbUF18fCJHZW5lcmFsIixQKSwiZSI9PT13LnQpdy53PXcud3x8bmFbdy52XTtlbHNlIGlmKDA9''@;'; put 'put ''PT1QKWlmKCJuIj09PXcudCl3Lnc9KDB8dy52KT09PXcudj9TLl9nZW5lcmFsX2ludCh3LnYpOlMuX2dlbmVyYWxfbnVtKHcudik7ZWxzZSBpZigiZCI9PT13LnQpe3ZhciBNZT1xZSh3LnYpO3cudz0oMHxNZSk9PT1NZT9TLl9nZW5lcmFsX2ludChNZSk6Uy5fZ2VuZXJhbF9udW0oTWUpfWVs''@;'; put 'put ''c2V7aWYodm9pZCAwPT09dy52KXJldHVybiIiO3cudz1TLl9nZW5lcmFsKHcudixGcCl9ZWxzZSB3Lnc9Uy5mb3JtYXQoUCwiZCI9PT13LnQ/cWUody52KTp3LnYsRnApfWNhdGNoKGplKXtpZihnZS5XVEYpdGhyb3cgamV9aWYoZ2UuY2VsbFN0eWxlcyYmdmUpe2lmKHcucz17fSxudWxsIT1E''@;'; put 'put ''JiZ2ZS5GaWxscyl0cnl7TnQody5zLHZlLkZpbGxzW0RdKX1jYXRjaChqZSl7aWYoZ2UuV1RGKXRocm93IGplfWlmKG51bGwhPWVlJiZ2ZS5Gb250cyl0cnl7TnQody5zLHZlLkZvbnRzW2VlXSl9Y2F0Y2goamUpe2lmKGdlLldURil0aHJvdyBqZX1pZihudWxsIT1vZSYmdmUuQm9yZGVycyl0''@;'; put 'put ''cnl7TnQody5zLHZlLkJvcmRlcnNbb2VdKX1jYXRjaChqZSl7aWYoZ2UuV1RGKXRocm93IGplfX19ZnVuY3Rpb24gcmcodyxQLEQpe2lmKHcmJndbIiFyZWYiXSl7dmFyIGVlPVBpKHdbIiFyZWYiXSk7aWYoZWUuZS5jPGVlLnMuY3x8ZWUuZS5yPGVlLnMucil0aHJvdyBuZXcgRXJyb3IoIkJh''@;'; put 'put ''ZCByYW5nZSAoIitEKyIpOiAiK3dbIiFyZWYiXSl9fXZhciBpdz0vPCg/Olx3Oik/bWVyZ2VDZWxsIHJlZj0iW0EtWjAtOTpdKyJccypbXC9dPz4vZyxpZz0vPCg/Olx3KzopP3NoZWV0RGF0YVtePl0qPihbXHNcU10qKTxcLyg/Olx3KzopP3NoZWV0RGF0YT4vLFVBPS88KD86XHc6KT9oeXBl''@;'; put 'put ''cmxpbmsgW14+XSo+L2dtLHBlZT0vIihcdyo6XHcqKSIvLG93PS88KD86XHc6KT9jb2xcYltePl0qW1wvXT8+L2csUjI9LzwoPzpcdzopP2NvbnRyb2xcYltePl0qW1wvXT8+L2csVzg9LzwoPzpcdzopP2F1dG9GaWx0ZXJbXj5dKihbXC9dfD4oW1xzXFNdKik8XC8oPzpcdzopP2F1dG9GaWx0''@;'; put 'put ''ZXIpPi9nLGF3PS88KD86XHc6KT9wYWdlTWFyZ2luc1tePl0qXC8+L2csbHc9LzwoPzpcdzopP3NoZWV0UHJcYig/OltePmEtel1bXj5dKik/XC8+LyxiTj0vPCg/Olx3Oik/c2hlZXRQcm90ZWN0aW9uXGIoPzpbXj5hLXpdW14+XSopP1wvPi8sX049LzwoPzpcdzopP3NoZWV0UHJbXj5dKig/''@;'; put 'put ''OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRQcik+Lyx3Tj0vPCg/Olx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9zaGVldFZpZXdzKT4vLFpBPS88KD86XHcrOik/ZGF0YVZhbGlkYXRpb25zW14+XSooPzpbXC9dfD4oW1xzXFNdKj8pPFwv''@;'; put 'put ''KD86XHcrOik/ZGF0YVZhbGlkYXRpb25zKT4vLEc4PS88KD86XHcrOik/Y29uZGl0aW9uYWxGb3JtYXR0aW5nXGJbXj5dKig/OltcL118PihbXHNcU10qPyk8XC8oPzpcdys6KT9jb25kaXRpb25hbEZvcm1hdHRpbmcpPi9nLEwyPS88KD86XHc6KT9zaGVldEZvcm1hdFByW14+XSpcLz4vLHN3''@;'; put 'put ''PS88KD86XHcrOik/dGFibGVQYXJ0cy4qPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/dGFibGVQYXJ0cz4vLE5wPS88KD86XHc6KT9wYWdlU2V0dXBbXj5dKlwvPi8sY2Q9LzwoPzpcdzopP3Jvd0JyZWFrc1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9yb3dCcmVha3MpPi8sWUE9''@;'; put 'put ''LzwoPzpcdzopP2NvbEJyZWFrc1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9jb2xCcmVha3MpPi8sbWVlPS88KD86XHc6KT9oZWFkZXJGb290ZXJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/aGVhZGVyRm9vdGVyKT4vLENOPS88KD86XHc6KT9wcmludE9wdGlv''@;'; put 'put ''bnNcYltePlwvXSpcLz4vO3ZhciBXQT0vPCg/Olx3Oik/dGFibGVQYXJ0XGJbXlwvPl0qW1wvXT8+L2c7ZnVuY3Rpb24gJDgodyxQLEQsZWUpe3ZhciBvZT1jbih3KTtELlNoZWV0c1tlZV18fChELlNoZWV0c1tlZV09e30pLG9lLmNvZGVOYW1lJiYoRC5TaGVldHNbZWVdLkNvZGVOYW1lPW9l''@;'; put 'put ''LmNvZGVOYW1lKX12YXIgSzg9LzwoPzpcdzopP3RhYkNvbG9yW14+XSpbXC9dPz4vLCRBPS88KD86XHc6KT9wYWdlU2V0VXBQcltePl0qW1wvXT8+LyxLQT0vPCg/Olx3Oik/b3V0bGluZVByW14+XSpbXC9dPz4vLFNlPXtkaXNwbGF5ZWQ6ImFzRGlzcGxheWVkIixlbmQ6ImF0RW5kIixub25l''@;'; put 'put ''OiJub25lIn0sdXc9d2UoU2UpLFNOPXtkaXNwbGF5ZWQ6ImRpc3BsYXllZCIsbm9uZToiYmxhbmsiLGRhc2g6ImRhc2giLCJuL2EiOiJOQSJ9LFhBPXdlKFNOKSxlVD0vPCg/Olx3Oik/YnJrW14+XSpcLz4vZyxjdz1bIm9iamVjdHMiLCJzY2VuYXJpb3MiLCJzZWxlY3RMb2NrZWRDZWxscyIs''@;'; put 'put ''InNlbGVjdFVubG9ja2VkQ2VsbHMiXSxmdz1bImZvcm1hdENvbHVtbnMiLCJmb3JtYXRSb3dzIiwiZm9ybWF0Q2VsbHMiLCJpbnNlcnRDb2x1bW5zIiwiaW5zZXJ0Um93cyIsImluc2VydEh5cGVybGlua3MiLCJkZWxldGVDb2x1bW5zIiwiZGVsZXRlUm93cyIsInNvcnQiLCJhdXRvRmlsdGVy''@;'; put 'put ''IiwicGl2b3RUYWJsZXMiXTtmdW5jdGlvbiByVCh3KXt2YXIgUD17fTtyZXR1cm5bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImhlYWRlciIsImZvb3RlciJdLmZvckVhY2goZnVuY3Rpb24oRCl7d1tEXSYmKFBbRF09cGFyc2VGbG9hdCh3W0RdKSl9KSxQfXZhciBYOD17Q3VzdG9t''@;'; put 'put ''OiJjdXN0b20iLERhdGU6ImRhdGUiLFRpbWU6InRpbWUiLExlbmd0aDoidGV4dExlbmd0aCIsTGlzdDoibGlzdCIsRGVjaW1hbDoiZGVjaW1hbCIsV2hvbGU6Indob2xlIixBbnk6Im5vbmUifSxvVD13ZShYOCksQnA9e0lOOiJiZXR3ZWVuIixPVDoibm90QmV0d2VlbiIsRVE6ImVxdWFsIixO''@;'; put 'put ''RToibm90RXF1YWwiLEdUOiJncmVhdGVyVGhhbiIsTFQ6Imxlc3NUaGFuIixHRToiZ3JlYXRlclRoYW5PckVxdWFsIixMRToibGVzc1RoYW5PckVxdWFsIn0sYVQ9d2UoQnApO2Z1bmN0aW9uIGxUKHcsUCxEKXt2YXIgZWU9W10sb2U9e30sZ2U9IiIsX2U9ITEsdmU9MCxNZT0wO3JldHVybiB3''@;'; put 'put ''LnJlcGxhY2UocXQsZnVuY3Rpb24oamUsVWUpe3ZhciBYZT1jbihqZSk7c3dpdGNoKGpuKFhlWzBdKSl7Y2FzZSI8ZGF0YVZhbGlkYXRpb25zIjpjYXNlIjxkYXRhVmFsaWRhdGlvbnM+IjpjYXNlIjwvZGF0YVZhbGlkYXRpb25zPiI6YnJlYWs7Y2FzZSI8ZGF0YVZhbGlkYXRpb24iOm9lPXt0''@;'; put 'put ''Om9UW1hlLnR5cGV8fCJub25lIl0scmVmOihnZT1YZS5zcXJlZik/Z2UuaW5kZXhPZigiICIpPi0xP2dlOlBpKGdlKToiIn0sWGUub3BlcmF0b3ImJihvZS5vcD1hVFtYZS5vcGVyYXRvcl0pLG9lLmJsYW5rPSEhWGUuYWxsb3dCbGFuayYmX3IoWGUuYWxsb3dCbGFuayksKCFYZS5zaG93SW5w''@;'; put 'put ''dXRNZXNzYWdlfHwhX3IoWGUuc2hvd0lucHV0TWVzc2FnZSkpJiYob2UuaW5wdXQ9ITEpLFhlLnByb21wdFRpdGxlJiYoKG9lLmlucHV0fHwob2UuaW5wdXQ9e30pKS50aXRsZT1FcihYZS5wcm9tcHRUaXRsZSkpLFhlLnByb21wdCYmKChvZS5pbnB1dHx8KG9lLmlucHV0PXt9KSkubWVzc2Fn''@;'; put 'put ''ZT1FcihYZS5wcm9tcHQpKSwoIVhlLnNob3dFcnJvck1lc3NhZ2V8fCFfcihYZS5zaG93RXJyb3JNZXNzYWdlKSkmJihvZS5lcnJvcj0hMSksWGUuZXJyb3JUaXRsZSYmKChvZS5lcnJvcnx8KG9lLmVycm9yPXt9KSkudGl0bGU9RXIoWGUuZXJyb3JUaXRsZSkpLFhlLmVycm9yJiYoKG9lLmVy''@;'; put 'put ''cm9yfHwob2UuZXJyb3I9e30pKS5tZXNzYWdlPUVyKFhlLmVycm9yKSksb2UuZXJyb3I/b2UuZXJyb3Iuc3R5bGU9WGUuZXJyb3JTdHlsZXx8InN0b3AiOlhlLmVycm9yU3R5bGUmJihvZS5lcnJvcj17c3R5bGU6WGUuZXJyb3JTdHlsZX0pLG9lLnQmJmVlLnB1c2gob2UpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGRhdGFWYWxpZGF0aW9uLz4iOmNhc2UiPC9kYXRhVmFsaWRhdGlvbj4iOmJyZWFrO2Nhc2UiPHNxcmVmPiI6TWU9VWUramUubGVuZ3RoO2JyZWFrO2Nhc2UiPC9zcXJlZj4iOmdlPXcuc2xpY2UoTWUsVWUpLG9lLnJlZj1nZT9nZS5pbmRleE9mKCIgIik+LTE/Z2U6UGkoZ2UpOiIiO2JyZWFr''@;'; put 'put ''O2Nhc2UiPGY+IjpjYXNlIjxmb3JtdWxhMSI6Y2FzZSI8Zm9ybXVsYTE+IjpjYXNlIjxmb3JtdWxhMiI6Y2FzZSI8Zm9ybXVsYTI+Ijp2ZT1VZStqZS5sZW5ndGg7YnJlYWs7Y2FzZSI8L2Zvcm11bGExPiI6Y2FzZSI8L2Zvcm11bGEyPiI6aWYoRClicmVhaztjYXNlIjwvZj4iOnZhciBpdD1F''@;'; put 'put ''cihGaSh3LnNsaWNlKHZlLFVlKSkpO3N3aXRjaChvZS50KXtjYXNlIkxpc3QiOmlmKG9lLmx8fG9lLmYpYnJlYWs7aWYoMzQ9PWl0LmNoYXJDb2RlQXQoMCkpe29lLmw9aXQuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKTticmVha31jYXNlIkN1c3RvbSI6bnVsbD09b2UuZiYmKG9lLmY9aXQpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiRGF0ZSI6Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJUaW1lIjpjYXNlIldob2xlIjpvZS5vcHx8KG9lLm9wPSJJTiIpLG51bGw9PW9lLnY/b2Uudj1pc05hTigraXQpP2l0OitpdDoob2UubWluPW9lLnYsb2UubWF4PWlzTmFOKCtpdCk/aXQ6K2l0LGRlbGV0ZSBv''@;'; put 'put ''ZS52KX1icmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOl9lPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpfZT0hMTticmVhaztkZWZhdWx0OmlmKFAmJlAuV1RGJiYhX2UpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQg''@;'; put 'put ''IitYZVswXSsiIGluIGRhdGEgdmFsaWRhdGlvbiIpfXJldHVybiBqZX0pLGVlfXZhciBtdz17SU46ImNvbnRhaW5zVGV4dCIsT1Q6Im5vdENvbnRhaW5zVGV4dCIsU1Q6ImJlZ2luc1dpdGgiLE5EOiJlbmRzV2l0aCJ9LHNUPXdlKG13KSx1VD17TE06Imxhc3RNb250aCIsTFM6Imxhc3Q3RGF5''@;'; put 'put ''cyIsTFc6Imxhc3RXZWVrIixOTToibmV4dE1vbnRoIixOVzoibmV4dFdlZWsiLFRNOiJ0aGlzTW9udGgiLFRXOiJ0aGlzV2VlayIsVEQ6InRvZGF5IixUTzoidG9tb3Jyb3ciLFlTOiJ5ZXN0ZXJkYXkifSxUTj13ZSh1VCk7ZnVuY3Rpb24gSjgodyl7dmFyIFA9e307cmV0dXJuIG51bGwhPXcu''@;'; put 'put ''dmFsJiYoaXNOYU4oK3cudmFsKT9QLmY9dy52YWw6UC52PSt3LnZhbCksUC50PXcudHlwZSxQfWZ1bmN0aW9uIFAyKHcpe3JldHVybiBNcigiY2Z2byIsbnVsbCx7dHlwZTp3LnQsdmFsOm51bGwhPXcudj93LnY6QnIody5mKX0pfWZ1bmN0aW9uIFE4KHcsUCxELGVlKXt2YXIgb2U9Sjgodyk7''@;'; put 'put ''cmV0dXJuIG9lLmNvbG9yPWZoKFAsRCxlZSksb2V9ZnVuY3Rpb24gY1QodyxQLEQsZWUsb2Upe3ZhciBnZT0ody5tYXRjaCgvc3FyZWY9IihbXHc6JCBdKikiLyl8fFtdKVsxXTtyZXR1cm4gZnVuY3Rpb24gT04odyxQLEQsZWUsb2UsZ2Upe3ZhciBfZT0hMSx2ZT1bXSxNZT17ZjpbXX0samU9''@;'; put 'put ''MCxVZT0wLFhlPXtjZnZvczpbXSxjb2xvcnM6W119LGl0PXt9LGZ0PS0xLE10PTAsdXQ9IiI7cmV0dXJuIHcucmVwbGFjZShxdCxmdW5jdGlvbih3dCxIdCl7dmFyIGt0PWNuKHd0KTtzd2l0Y2goam4oa3RbMF0pKXtjYXNlIjxjb25kaXRpb25hbEZvcm1hdHRpbmciOmNhc2UiPC9jb25kaXRp''@;'; put 'put ''b25hbEZvcm1hdHRpbmc+IjpicmVhaztjYXNlIjxjZlJ1bGUiOmNhc2UiPGNmUnVsZT4iOmlmKFVlPUh0LGl0PWt0LE1lPXtyZWY6UCxmOltdfSwhd3QubWF0Y2goL1wvPi8pKWJyZWFrO2Nhc2UiPC9jZlJ1bGU+Ijpzd2l0Y2goaXQuZHhmSWQmJm9lJiZvZS5EWEYmJihNZS5zPW9lLkRYRlsr''@;'; put 'put ''aXQuZHhmSWRdKSxpdC50eXBlKXtjYXNlImR1cGxpY2F0ZVZhbHVlcyI6TWUudD0iZHVwIjticmVhaztjYXNlInVuaXF1ZVZhbHVlcyI6TWUudD0idW5pcXVlIjticmVhaztjYXNlImNvbnRhaW5zQmxhbmtzIjpNZS50PSJibGFuayIsTWUudj0hMDticmVhaztjYXNlIm5vdENvbnRhaW5zQmxh''@;'; put 'put ''bmtzIjpNZS50PSJibGFuayIsTWUudj0hMTticmVhaztjYXNlImNvbnRhaW5zRXJyb3JzIjpNZS50PSJlcnJvciIsTWUudj0hMDticmVhaztjYXNlIm5vdENvbnRhaW5zRXJyb3JzIjpNZS50PSJlcnJvciIsTWUudj0hMTticmVhaztjYXNlImNlbGxJcyI6c3dpdGNoKGl0Lm9wZXJhdG9yKXtj''@;'; put 'put ''YXNlImNvbnRhaW5zVGV4dCI6Y2FzZSJub3RDb250YWlucyI6Y2FzZSJiZWdpbnNXaXRoIjpjYXNlImVuZHNXaXRoIjppZihNZS50PSJ0ZXh0IixNZS5vcD1zVFtpdC5vcGVyYXRvcl0sbnVsbD09aXQudGV4dCl0aHJvdyBuZXcgRXJyb3IoIkNGIFRleHQgUnVsZSAiK01lLm9wKyIgbWlzc2lu''@;'; put 'put ''ZyB0ZXh0Iik7TWUudj1pdC50ZXh0LE1lLmY9TWUuZlswXSxudWxsPT1NZS5mJiZkZWxldGUgTWUuZjticmVhaztkZWZhdWx0Ok1lLnQ9InZhbCIsTWUub3A9YVRbaXQub3BlcmF0b3JdLDE9PU1lLmYubGVuZ3RoP2lzTmFOKCtNZS5mWzBdKT9NZS5mPU1lLmZbMF06KE1lLnY9K01lLmZbMF0s''@;'; put 'put ''ZGVsZXRlIE1lLmYpOihNZS5taW49aXNOYU4oK01lLmZbMF0pP01lLmZbMF06K01lLmZbMF0sTWUubWF4PWlzTmFOKCtNZS5mWzFdKT9NZS5mWzFdOitNZS5mWzFdLGRlbGV0ZSBNZS5mKX1icmVhaztjYXNlImV4cHJlc3Npb24iOk1lLnQ9ImZvcm11bGEiLE1lLmY9TWUuZlswXTticmVhaztj''@;'; put 'put ''YXNlImNvbnRhaW5zVGV4dCI6Y2FzZSJub3RDb250YWluc1RleHQiOmNhc2UiYmVnaW5zV2l0aCI6Y2FzZSJlbmRzV2l0aCI6aWYoTWUudD0idGV4dCIsTWUub3A9c1RbaXQudHlwZV0sbnVsbD09aXQudGV4dCYmTWUuZi5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIkNGIFRleHQgUnVsZSAi''@;'; put 'put ''K01lLm9wKyIgbWlzc2luZyB0ZXh0Iik7TWUudj1udWxsIT1pdC50ZXh0P2l0LnRleHQ6TWUuZlsxXS5tYXRjaCgvIi4qIi8pP01lLmZbMV0uc2xpY2UoMSwtMSk6TWUuZlsxXSxNZS5mPU1lLmZbMF0sbnVsbD09TWUuZiYmZGVsZXRlIE1lLmY7YnJlYWs7Y2FzZSJjb2xvclNjYWxlIjppZihN''@;'; put 'put ''ZS50PSJzY2FsZSIsIU1lLmNvbG9yU2NhbGUpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGNvbG9yU2NhbGUiKTtNZS5jbWluPVE4KChYZT1NZS5jb2xvclNjYWxlKS5jZnZvc1swXSxYZS5jb2xvcnNbMF0sb2UsZWUpLDM9PVhlLmNmdm9zLmxlbmd0aCYmKE1lLmNtaWQ9UTgoWGUuY2Z2b3Nb''@;'; put 'put ''MV0sWGUuY29sb3JzWzFdLG9lLGVlKSksTWUuY21heD1ROChYZS5jZnZvc1tYZS5jZnZvcy5sZW5ndGgtMV0sWGUuY29sb3JzW1hlLmNmdm9zLmxlbmd0aC0xXSxvZSxlZSk7YnJlYWs7Y2FzZSJkYXRhQmFyIjppZihNZS50PSJiYXIiLCFNZS5kYXRhQmFyKXRocm93IG5ldyBFcnJvcigibWlz''@;'; put 'put ''c2luZyBkYXRhQmFyIik7KFhlPU1lLmRhdGFCYXIpLmNvbG9yc1swXSYmKE1lLmNvbG9yPWZoKFhlLmNvbG9yc1swXSxvZSxlZSkpLE1lLmNtaW49SjgoWGUuY2Z2b3NbMF0pLE1lLmNtYXg9SjgoWGUuY2Z2b3NbMV0pO2JyZWFrO2Nhc2UiaWNvblNldCI6aWYoTWUudD0iaWNvbiIsIU1lLmlj''@;'; put 'put ''b25TZXQpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGljb25TZXQiKTtNZS50aHJlc2g9KFhlPU1lLmljb25TZXQpLmNmdm9zLm1hcChmdW5jdGlvbihUdCl7cmV0dXJuIEo4KFR0KX0pLE1lLnY9WGUudGFnJiZYZS50YWcuaWNvblNldHx8IjNUcmFmZmljTGlnaHRzMSIsTWUucmV2PV9yKFhl''@;'; put 'put ''LnRhZy5yZXZlcnNlfHwiZmFsc2UiKSxNZS5wY3Q9X3IoWGUudGFnLnBlcmNlbnR8fCJ0cnVlIiksTWUuaGlkZGVuPSFfcihYZS50YWcuc2hvd1ZhbHVlfHwidHJ1ZSIpO2JyZWFrO2Nhc2UidGltZVBlcmlvZCI6TWUudD0iZGF0ZSIsTWUub3A9VE5baXQudGltZVBlcmlvZF07YnJlYWs7Y2Fz''@;'; put 'put ''ZSJhYm92ZUF2ZXJhZ2UiOk1lLnQ9ImF2ZyIsTWUub3A9IjAiPT1pdC5hYm92ZUF2ZXJhZ2U/IkwiOiJHIixNZS5vcCs9aXQuc3RkRGV2P2l0LnN0ZERldjpfcihpdC5lcXVhbEF2ZXJhZ2V8fCIwIik/IkUiOiJUIjticmVhaztjYXNlInRvcDEwIjpNZS50PSJyYW5rIixNZS5vcD0oX3IoaXQu''@;'; put 'put ''Ym90dG9tfHwiMCIpPyJCIjoiVCIpKyhfcihpdC5wZXJjZW50fHwiMCIpPyJQIjoiViIpLE1lLnY9K2l0LnJhbms7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnN1cHBvcnRlZCBDRiBUeXBlICIraXQudHlwZX1pZihkZWxldGUgTWUuY29sb3JTY2FsZSxkZWxldGUgTWUuZGF0YUJhcixkZWxldGUg''@;'; put 'put ''TWUuaWNvblNldCwhTWUudCl0aHJvdyBjb25zb2xlLmxvZyh3LnNsaWNlKFVlLEh0K3d0Lmxlbmd0aCkpLCJiYWQgQ0YgcnVsZSI7bnVsbCE9TWUuZiYmIU1lLmYubGVuZ3RoJiZkZWxldGUgTWUuZixNZS5kZWx8fHZlLnB1c2goTWUpO2JyZWFrO2Nhc2UiPGZvcm11bGEiOmNhc2UiPGZvcm11''@;'; put 'put ''bGE+IjpqZT1IdCt3dC5sZW5ndGg7YnJlYWs7Y2FzZSI8L2Zvcm11bGE+IjpNZS5mLnB1c2goRXIody5zbGljZShqZSxIdCkpKTticmVhaztjYXNlIjxmIjpjYXNlIjxmPiI6amU9SHQrd3QubGVuZ3RoO2JyZWFrO2Nhc2UiPC9mPiI6TWUuZi5wdXNoKEVyKHcuc2xpY2UoamUsSHQpKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSI8c3FyZWY+IjpNdD1IdCt3dC5sZW5ndGg7YnJlYWs7Y2FzZSI8L3NxcmVmPiI6dXQ9dy5zbGljZShNdCxIdCksUD11dD91dC5pbmRleE9mKCIgIik+LTE/dXQ6UGkodXQpOiIiLE1lLnJlZj1QLHZlLmZvckVhY2goZnVuY3Rpb24oVHQpe1R0LnJlZj1QfSk7YnJlYWs7Y2FzZSI8''@;'; put 'put ''Y29sb3JTY2FsZSI6Y2FzZSI8Y29sb3JTY2FsZT4iOmNhc2UiPGRhdGFCYXIiOmNhc2UiPGRhdGFCYXI+IjpjYXNlIjxpY29uU2V0IjpjYXNlIjxpY29uU2V0PiI6WGU9e2Nmdm9zOltdLGNvbG9yczpbXSx0YWc6a3R9LGplPUh0K3d0Lmxlbmd0aDticmVhaztjYXNlIjwvY29sb3JTY2FsZT4i''@;'; put 'put ''Ok1lLmNvbG9yU2NhbGU9WGU7YnJlYWs7Y2FzZSI8L2RhdGFCYXI+IjpNZS5kYXRhQmFyPVhlO2JyZWFrO2Nhc2UiPC9pY29uU2V0PiI6TWUuaWNvblNldD1YZTticmVhaztjYXNlIjxjZnZvIjpjYXNlIjxjZnZvLz4iOlhlLmNmdm9zLnB1c2goa3QpO2JyZWFrO2Nhc2UiPC9jZnZvPiI6YnJl''@;'; put 'put ''YWs7Y2FzZSI8Y29sb3IiOlhlLmNvbG9ycy5wdXNoKGt0KTticmVhaztjYXNlIjwvY29sb3I+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOl9lPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpfZT0hMTticmVhaztjYXNlIjxuZWdh''@;'; put 'put ''dGl2ZUZpbGxDb2xvciI6Y2FzZSI8YXhpc0NvbG9yIjpjYXNlIjxib3JkZXJDb2xvciI6Y2FzZSI8bmVnYXRpdmVCb3JkZXJDb2xvciI6Y2FzZSI8Y2ZJY29uIjpNZS5kZWw9ITA7YnJlYWs7Y2FzZSI8ZHhmPiI6X2U9ITAsZnQ9SHQ7YnJlYWs7Y2FzZSI8L2R4Zj4iOl9lPSExLE1lLnM9bUgo''@;'; put 'put ''dy5zbGljZShmdCxIdCt3dC5sZW5ndGgpLG9lLGVlLEQpO2JyZWFrO2RlZmF1bHQ6aWYoRCYmRC5XVEYpe2lmKGdlKWJyZWFrO2lmKCFfZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2t0WzBdKyIgaW4gY29uZGZtdCIpfX1yZXR1cm4gd3R9KSx2ZX0odyxnZSxQLEQsZWUsb2Up''@;'; put 'put ''fXZhciBJTj0vPCg/Olx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cLz8+L2c7ZnVuY3Rpb24gYWcodyxQKXt2YXIgRD0wLGVlPTAsb2U9MCxnZT0wO2lmKCFQfHwhUC5DZWxsWGYpcmV0dXJuIG51bGw7dmFyIF9lPVAuQ2VsbFhmW3ddO251bGwhPV9lJiYobnVsbCE9X2UubnVtRm10''@;'; put 'put ''SWQmJihEPV9lLm51bUZtdElkKSxudWxsIT1fZS5maWxsSWQmJihlZT1fZS5maWxsSWQpLG51bGwhPV9lLmZvbnRJZCYmKG9lPV9lLmZvbnRJZCksbnVsbCE9X2UuYm9yZGVySWQmJihnZT1fZS5ib3JkZXJJZCkpO3ZhciB2ZT17dDoieiJ9O3RyeXtZOCh2ZSxELGVlLG9lLGdlLHtXVEY6MSxj''@;'; put 'put ''ZWxsU3R5bGVzOiEwfSwwLFApfWNhdGNoe31yZXR1cm4gdmUuc31mdW5jdGlvbiBSTih3LFAsRCxlZSl7aWYodm9pZCAwPT09dy52JiZ2b2lkIDA9PT13LmYmJm51bGw9PXcucyYmIXcuY3x8InoiPT09dy50JiYhdy5jJiYhZWUuc2hlZXRTdHVicylyZXR1cm4iIjt2YXIgb2U9IiIsZ2U9dy50''@;'; put 'put ''LF9lPXcudjtpZigieiIhPT13LnQpc3dpdGNoKHcudCl7Y2FzZSJiIjpvZT13LnY/IjEiOiIwIjticmVhaztjYXNlIm4iOm9lPSIiK3cudjticmVhaztjYXNlImUiOm9lPW5hW3cudl07YnJlYWs7Y2FzZSJkIjplZSYmZWUuY2VsbERhdGVzP29lPVB0KHcudiwtMSkudG9JU09TdHJpbmcoKToo''@;'; put 'put ''KHc9SnQodykpLnQ9Im4iLG9lPSIiKyh3LnY9cWUoUHQody52KSkpKSx0eXBlb2Ygdy56PiJ1IiYmKHcuej1TLl90YWJsZVsxNF0pO2JyZWFrO2RlZmF1bHQ6b2U9dy52fXZhciB2ZT0ieiI9PXcudD8iIjp2YSgidiIsQnIob2UpKSxNZT17cjpQfSxqZT1lZT93YyhlZS5jZWxsWGZzLGVlLmNl''@;'; put 'put ''bGxTdHlsZVhmcyx3LGVlKTowO3N3aXRjaCgwIT09amUmJihNZS5zPWplKSx3LnQpe2Nhc2UibiI6Y2FzZSJ6IjpicmVhaztjYXNlImQiOk1lLnQ9ImQiO2JyZWFrO2Nhc2UiYiI6TWUudD0iYiI7YnJlYWs7Y2FzZSJlIjpNZS50PSJlIjticmVhaztkZWZhdWx0OmlmKG51bGw9PXcudil7ZGVs''@;'; put 'put ''ZXRlIHcudDticmVha31pZihlZSYmZWUuYm9va1NTVCl7dmU9dmEoInYiLCIiK3J3KGVlLlN0cmluZ3Msdy52LHcuUj93LnI9dzIody5SKTpudWxsLGVlLnJldlN0cmluZ3MpKSxNZS50PSJzIjticmVha31BcnJheS5pc0FycmF5KHcuUik/KHZlPSI8aXM+Iit3Mih3LlIpKyI8L2lzPiIsTWUu''@;'; put 'put ''dD0iaW5saW5lU3RyIik6TWUudD0ic3RyIn1pZih3LnQhPWdlJiYody50PWdlLHcudj1fZSksdy5mKXt2YXIgVWU9dy5GJiZ3LkYuc2xpY2UoMCxQLmxlbmd0aCk9PVA/e3Q6ImFycmF5IixyZWY6dy5GfTpudWxsO3ZlPU1yKCJmIixCcih3LmYpLFVlKSsobnVsbCE9dy52P3ZlOiIiKX1yZXR1''@;'; put 'put ''cm4gdy5sJiZEWyIhbGlua3MiXS5wdXNoKFtQLHcubF0pLHcuYyYmRFsiIWNvbW1lbnRzIl0ucHVzaChbUCx3LmNdKSxNcigiYyIsdmUsTWUpfXZhciBMTj1mdW5jdGlvbigpe3ZhciB3PS88KD86XHcrOik/Y1sgXC8+XS8sUD0vPFwvKD86XHcrOik/cm93Pi8sRD0vcj1bIiddKFteIiddKilb''@;'; put 'put ''IiddLyxlZT0vPCg/Olx3KzopP2lzPihbXFNcc10qPyk8XC8oPzpcdys6KT9pcz4vLG9lPS9yZWY9WyInXShbXiInXSopWyInXS8sZ2U9Z3MoInYiKSxfZT1ncygiZiIpO3JldHVybiBmdW5jdGlvbihNZSxqZSxVZSxYZSxpdCxmdCxNdCl7Zm9yKHZhciBmbixLbixlcix0cix0aSx1dD0wLHd0''@;'; put 'put ''PSIiLEh0PVtdLGt0PVtdLFR0PTAsWXQ9MCxnbj0wLHFuPSIiLHpuPTAsT249MCxZbj0wLGpyPTAsbGk9MCxFaT0wLElpPUFycmF5LmlzQXJyYXkoTXQuQ2VsbFhmKSxmcj1bXSxEbj1bXSx2cj1BcnJheS5pc0FycmF5KFVlKSxycj1bXSx4bj17fSxtcj0hMSxDaT1NZS5zcGxpdChQKSx6cj0h''@;'; put 'put ''IVhlLnNoZWV0U3R1YnMsemk9ISFYZS5jZWxsSFRNTCx3bz0hKCExPT09WGUuY2VsbFRleHQmJiFYZS5jZWxsTkYmJiFYZS5jZWxsU3R5bGVzKSxPaT0wLFhvPUNpLmxlbmd0aDtPaSE9WG87KytPaSl7dmFyIGZvPSh3dD1DaVtPaV0udHJpbSgpKS5sZW5ndGg7aWYoMCE9PWZvKXt2YXIgUm89''@;'; put 'put ''MDtlOmZvcih1dD0wO3V0PGZvOysrdXQpc3dpdGNoKHd0W3V0XSl7Y2FzZSI+IjppZigiLyIhPXd0W3V0LTFdKXsrK3V0O2JyZWFrIGV9WGUuY2VsbFN0eWxlcyYmbnVsbCE9KEtuPWNuKHd0LnNsaWNlKFJvLHV0KSwhMCkpLnImJnBhcnNlSW50KEtuLnIsMTApJiYoem49cGFyc2VJbnQoS24u''@;'; put 'put ''ciwxMCkseG49e30sbXI9ITEsS24uaHQmJihtcj0hMCx4bi5ocHQ9cGFyc2VGbG9hdChLbi5odCkseG4uaHB4PWRmKHhuLmhwdCkpLEtuLmR5RGVzY2VudCYmKG1yPSEwLHhuLmR5RGVzY2VudD1Lbi5keURlc2NlbnQpLCIxIj09S24uaGlkZGVuJiYobXI9ITAseG4uaGlkZGVuPSEwKSxudWxs''@;'; put 'put ''IT1Lbi5vdXRsaW5lTGV2ZWwmJihtcj0hMCx4bi5sZXZlbD0rS24ub3V0bGluZUxldmVsKSxLbi5zJiZNdCYmTXQuQ2VsbFhmJiYobXI9ITAseG4ucz1hZyhLbi5zLE10KSksbXImJihyclt6bi0xXT14bikpO2JyZWFrO2Nhc2UiPCI6Um89dXR9aWYoUm8+PXV0KWJyZWFrO2lmKHpuPW51bGwh''@;'; put 'put ''PShLbj1jbih3dC5zbGljZShSbyx1dCksITApKS5yP3BhcnNlSW50KEtuLnIsMTApOnpuKzEsT249LTEsIShYZS5zaGVldFJvd3MmJlhlLnNoZWV0Um93czx6bikpe1hlLm5vZGltfHwoaXQucy5yPnpuLTEmJihpdC5zLnI9em4tMSksaXQuZS5yPHpuLTEmJihpdC5lLnI9em4tMSkpO3ZhciBU''@;'; put 'put ''bz17dDoicm93Iixyb3c6W10sUjp6bi0xLGlkeDpqZX07WGUuY2VsbFN0eWxlcyYmKHhuPXt9LG1yPSExLEtuLmh0JiYobXI9ITAseG4uaHB0PXBhcnNlRmxvYXQoS24uaHQpLHhuLmhweD1kZih4bi5ocHQpKSxLbi5keURlc2NlbnQmJihtcj0hMCx4bi5keURlc2NlbnQ9S24uZHlEZXNjZW50''@;'; put 'put ''KSwiMSI9PUtuLmhpZGRlbiYmKG1yPSEwLHhuLmhpZGRlbj0hMCksbnVsbCE9S24ub3V0bGluZUxldmVsJiYobXI9ITAseG4ubGV2ZWw9K0tuLm91dGxpbmVMZXZlbCksS24ucyYmKG1yPSEwLHhuLnM9YWcoS24ucyxNdCkpLG1yJiYoWGUuY2FsbGJhY2s/VG8ucHJvcHM9eG46cnJbem4tMV09''@;'; put 'put ''eG4pKSxIdD13dC5zbGljZSh1dCkuc3BsaXQodyk7Zm9yKHZhciBtaT0wO21pIT1IdC5sZW5ndGgmJiI8Ij09SHRbbWldLnRyaW0oKS5jaGFyQXQoMCk7KyttaSk7Zm9yKEh0PUh0LnNsaWNlKG1pKSx1dD0wO3V0IT1IdC5sZW5ndGg7Kyt1dClpZigwIT09KHd0PUh0W3V0XS50cmltKCkpLmxl''@;'; put 'put ''bmd0aCl7aWYoa3Q9d3QubWF0Y2goRCksVHQ9dXQsWXQ9MCxnbj0wLHd0PSI8YyAiKygiPCI9PXd0LnNsaWNlKDAsMSk/Ij4iOiIiKSt3dCxudWxsIT1rdCYmMj09PWt0Lmxlbmd0aCl7Zm9yKFR0PTAscW49a3RbMV0sWXQ9MDtZdCE9cW4ubGVuZ3RoJiYhKChnbj1xbi5jaGFyQ29kZUF0KFl0''@;'; put 'put ''KS02NCk8MXx8Z24+MjYpOysrWXQpVHQ9MjYqVHQrZ247T249LS1UdH1lbHNlKytPbjtmb3IoWXQ9MDtZdCE9d3QubGVuZ3RoJiY2MiE9PXd0LmNoYXJDb2RlQXQoWXQpOysrWXQpO2lmKCsrWXQsKEtuPWNuKHd0LnNsaWNlKDAsWXQpLCEwKSkucnx8KEtuLnI9cGkoe3I6em4tMSxjOk9ufSkp''@;'; put 'put ''LGZuPXt0OiIifSxudWxsIT0oa3Q9KHFuPXd0LnNsaWNlKFl0KSkubWF0Y2goZ2UpKSYmIiIhPT1rdFsxXSYmKGZuLnY9RXIoa3RbMV0pKSxYZS5jZWxsRm9ybXVsYSl7aWYobnVsbCE9KGt0PXFuLm1hdGNoKF9lKSkmJiIiIT09a3RbMV0pe2lmKGZuLmY9RXIoRmkoa3RbMV0pKS5yZXBsYWNl''@;'; put 'put ''KC9cclxuL2csIlxuIiksWGUueGxmbnx8KGZuLmY9Z2YoZm4uZikpLGt0WzBdLmluZGV4T2YoJ3Q9ImFycmF5IicpPi0xKWZuLkY9KHFuLm1hdGNoKG9lKXx8W10pWzFdLGZuLkYuaW5kZXhPZigiOiIpPi0xJiZmci5wdXNoKFtQaShmbi5GKSxmbi5GXSk7ZWxzZSBpZihrdFswXS5pbmRleE9m''@;'; put 'put ''KCd0PSJzaGFyZWQiJyk+LTEpe3RyPWNuKGt0WzBdKTt2YXIgcmw9RXIoRmkoa3RbMV0pKTtYZS54bGZufHwocmw9Z2YocmwpKSxEbltwYXJzZUludCh0ci5zaSwxMCldPVt0cixybCxLbi5yXX19ZWxzZShrdD1xbi5tYXRjaCgvPGZbXj5dKlwvPi8pKSYmRG5bKHRyPWNuKGt0WzBdKSkuc2ld''@;'; put 'put ''JiYoZm4uZj1XSChEblt0ci5zaV1bMV0sRG5bdHIuc2ldWzJdLEtuLnIpKTt2YXIgQW49Y2EoS24ucik7Zm9yKFl0PTA7WXQ8ZnIubGVuZ3RoOysrWXQpQW4ucj49ZnJbWXRdWzBdLnMuciYmQW4ucjw9ZnJbWXRdWzBdLmUuciYmQW4uYz49ZnJbWXRdWzBdLnMuYyYmQW4uYzw9ZnJbWXRdWzBd''@;'; put 'put ''LmUuYyYmKGZuLkY9ZnJbWXRdWzFdKX1pZihudWxsPT1Lbi50JiZ2b2lkIDA9PT1mbi52KWlmKGZuLmZ8fGZuLkYpZm4udj0wLGZuLnQ9Im4iO2Vsc2V7aWYoIXpyKWNvbnRpbnVlO2ZuLnQ9InoifWVsc2UgZm4udD1Lbi50fHwibiI7c3dpdGNoKGl0LnMuYz5PbiYmKGl0LnMuYz1PbiksaXQu''@;'; put 'put ''ZS5jPE9uJiYoaXQuZS5jPU9uKSxmbi50KXtjYXNlIm4iOmlmKCIiPT1mbi52fHxudWxsPT1mbi52KXtpZighenIpY29udGludWU7Zm4udD0ieiJ9ZWxzZSBmbi52PXBhcnNlRmxvYXQoZm4udik7YnJlYWs7Y2FzZSJzIjppZih0eXBlb2YgZm4udj4idSIpe2lmKCF6ciljb250aW51ZTtmbi50''@;'; put 'put ''PSJ6In1lbHNlIGVyPVo4W3BhcnNlSW50KGZuLnYsMTApXSxmbi52PWVyLnQsZm4ucj1lci5yLGVyLlImJihmbi5SPWVyLlIpLHppJiYoZm4uaD1lci5oKTticmVhaztjYXNlInN0ciI6Zm4udD0icyIsZm4udj1udWxsIT1mbi52P0ZpKGZuLnYpOiIiLHppJiYoZm4uaD1sbyhmbi52KSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJpbmxpbmVTdHIiOmt0PXFuLm1hdGNoKGVlKSxmbi50PSJzIixudWxsIT1rdCYmKGVyPWRfKGt0WzFdKSk/KGZuLnY9ZXIudCxlci5SJiYoZm4uUj1lci5SKSx6aSYmKGZuLmg9ZXIuaCkpOmZuLnY9IiI7YnJlYWs7Y2FzZSJiIjpmbi52PV9yKGZuLnYpO2JyZWFrO2Nhc2UiZCI6''@;'; put 'put ''WGUuY2VsbERhdGVzP2ZuLnY9UHQoZm4udiwxKTooZm4udj1xZShQdChmbi52LDEpKSxmbi50PSJuIik7YnJlYWs7Y2FzZSJlIjohMSE9PVhlLmNlbGxUZXh0JiYoZm4udz1mbi52KSxmbi52PXFsW2ZuLnZdfWlmKHdvKXtZbj1qcj1saT1FaT0wLHRpPW51bGwsSWkmJnZvaWQgMCE9PUtuLnMm''@;'; put 'put ''Jm51bGwhPSh0aT1NdC5DZWxsWGZbS24uc10pJiYobnVsbCE9dGkubnVtRm10SWQmJihZbj10aS5udW1GbXRJZCksWGUuY2VsbFN0eWxlcyYmKG51bGwhPXRpLmZpbGxJZCYmKGpyPXRpLmZpbGxJZCksbnVsbCE9dGkuZm9udElkJiYobGk9dGkuZm9udElkKSxudWxsIT10aS5ib3JkZXJJZCYm''@;'; put 'put ''KEVpPXRpLmJvcmRlcklkKSkpO3RyeXtZOChmbixZbixqcixsaSxFaSxYZSwwLE10KX1jYXRjaHt9WGUuY2VsbFN0eWxlcyYmZm4ucyYmKHRpJiZ0aS5hbGlnbm1lbnQmJihmbi5zLmFsaWdubWVudD1KdCh0aS5hbGlnbm1lbnQpKSx0aSYmdGkucHJvdGVjdGlvbiYmKG51bGwhPXRpLnByb3Rl''@;'; put 'put ''Y3Rpb24uaGlkZGVuJiYoZm4ucy5oaWRkZW49dGkucHJvdGVjdGlvbi5oaWRkZW4pLG51bGwhPXRpLnByb3RlY3Rpb24uZWRpdGFibGUmJihmbi5zLmVkaXRhYmxlPXRpLnByb3RlY3Rpb24uZWRpdGFibGUpKSx0aSYmdGkuc3R5bGUmJihmbi5zLnN0eWxlPXRpLnN0eWxlKSksWGUuY2VsbERh''@;'; put 'put ''dGVzJiZJaSYmIm4iPT1mbi50JiZTLmlzX2RhdGUoUy5fdGFibGVbWW5dKSYmKGZuLnQ9ImQiLGZuLnY9aHQoZm4udikpfXZhciBBYTtYZS5ub2RpbSYmKEFhPWNhKEtuLnIpLGl0LnMucj5BYS5yJiYoaXQucy5yPUFhLnIpLGl0LmUucjxBYS5yJiYoaXQuZS5yPUFhLnIpKSxYZS5jYWxsYmFj''@;'; put 'put ''az8oQWE9Y2EoS24uciksVG8ucm93W0FhLmNdPWZuKTp2cj8oVWVbKEFhPWNhKEtuLnIpKS5yXXx8KFVlW0FhLnJdPVtdKSxVZVtBYS5yXVtBYS5jXT1mbik6VWVbS24ucl09Zm59WGUuY2FsbGJhY2smJlhlLmNhbGxiYWNrKFRvKX19fXpyJiYhWGUuY2FsbGJhY2smJmFnKDAsTXQpLHJyLmxl''@;'; put 'put ''bmd0aD4wJiYoVWVbIiFyb3dzIl09cnIpfX0oKSxmVD1Ncigid29ya3NoZWV0IixudWxsLHt4bWxuczpzYS5tYWluWzBdLCJ4bWxuczpyIjpzYS5yLCJ4bWxuczp4MTRhYyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIiwieG1s''@;'; put 'put ''bnM6bWMiOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNiIsIm1jOklnbm9yYWJsZSI6IngxNGFjIn0pO2Z1bmN0aW9uIEZOKHcsUCxELGVlKXt2YXIgX2Usb2U9W0JuLGZUXSx2ZT0iIixNZT1ELlNoZWV0c1tELlNoZWV0TmFtZXNb''@;'; put 'put ''d11dO251bGw9PU1lJiYoTWU9e30pO3ZhciBqZT1NZVsiIXJlZiJdfHwiQTEiLFVlPVBpKGplKTtpZihVZS5lLmM+MTYzODN8fFVlLmUucj4xMDQ4NTc1KXtpZihQLldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIramUrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2Iik7''@;'; put 'put ''VWUuZS5jPU1hdGgubWluKFVlLmUuYywxNjM4MyksVWUuZS5yPU1hdGgubWluKFVlLmUuYywxMDQ4NTc1KSxqZT1WbyhVZSl9ZWV8fChlZT17fSksTWVbIiFjb21tZW50cyJdPVtdO3ZhciBYZT1bXSxpdD1NZVsiIXByaW50Il07aWYoZnVuY3Rpb24gcW8odyxQLEQsZWUsb2Upe3ZhciBnZT0h''@;'; put 'put ''MSxfZT17fSx2ZT1udWxsO2lmKCJ4bHN4IiE9PWVlLmJvb2tUeXBlJiZQLnZiYXJhdyl7dmFyIE1lPVAuU2hlZXROYW1lc1tEXTt0cnl7UC5Xb3JrYm9vayYmKE1lPVAuV29ya2Jvb2suU2hlZXRzW0RdLkNvZGVOYW1lfHxNZSl9Y2F0Y2h7fWdlPSEwLF9lLmNvZGVOYW1lPUJyKE1lKX13JiZ3''@;'; put 'put ''WyIhY29uZGZtdCJdJiYoX2UuZW5hYmxlRm9ybWF0Q29uZGl0aW9uc0NhbGN1bGF0aW9uPSIxIiksdyYmd1siIXRhYmNvbG9yIl0mJih2ZT0odmV8fCIiKSsnPHRhYkNvbG9yIHJnYj0iRkYnK1VjKHdbIiF0YWJjb2xvciJdLnJnYikrJyIvPicpO3ZhciBqZT0hMSxVZT17fTtpZigoKCh3fHx7''@;'; put 'put ''fSlbIiFwcmludCJdfHx7fSkucHJvcHN8fHt9KS5maXQmJihqZT0hMCxVZS5maXRUb1BhZ2U9MSksamUmJih2ZT0odmV8fCIiKStNcigicGFnZVNldFVwUHIiLG51bGwsVWUpKSx3JiZ3WyIhb3V0bGluZSJdKXt2YXIgWGU9e3N1bW1hcnlCZWxvdzoxLHN1bW1hcnlSaWdodDoxfTt3WyIhb3V0''@;'; put 'put ''bGluZSJdLmFib3ZlJiYoWGUuc3VtbWFyeUJlbG93PTApLHdbIiFvdXRsaW5lIl0ubGVmdCYmKFhlLnN1bW1hcnlSaWdodD0wKSx2ZT0odmV8fCIiKStNcigib3V0bGluZVByIixudWxsLFhlKX0hZ2UmJiF2ZXx8KG9lW29lLmxlbmd0aF09TXIoInNoZWV0UHIiLHZlLF9lKSl9KE1lLEQsdyxQ''@;'; put 'put ''LG9lKSxvZVtvZS5sZW5ndGhdPU1yKCJkaW1lbnNpb24iLG51bGwse3JlZjpqZX0pLG9lW29lLmxlbmd0aF09ZnVuY3Rpb24gZ3codyxQLEQsZWUpe3ZhciBvZT17d29ya2Jvb2tWaWV3SWQ6IjAifTtpZigoKChlZXx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKS5sZW5ndGgpe3ZhciBn''@;'; put 'put ''ZT1lZS5Xb3JrYm9vay5WaWV3cyxfZT1nZVtEXXx8Z2VbMF07b2UucmlnaHRUb0xlZnQ9X2UuUlRMPyIxIjoiMCIsX2Uuem9vbSYmKG9lLnpvb21TY2FsZT1fZS56b29tKSxudWxsIT1fZS5ncmlkJiYob2Uuc2hvd0dyaWRMaW5lcz1fZS5ncmlkKSxfZS52aWV3JiYob2Uudmlldz1fZS52aWV3''@;'; put 'put ''KX1udWxsIT13WyIhZ3JpZGxpbmVzIl0mJihvZS5zaG93R3JpZExpbmVzPSEhd1siIWdyaWRsaW5lcyJdKTt2YXIgdmU9IiIsTWU9e3I6MCxjOjB9O2lmKHdbIiFzZWwiXSl7aWYoIShNZT13WyIhc2VsIl0uY2VsbCkpe2lmKCF3WyIhc2VsIl0ucmFuZ2UpdGhyb3cgbmV3IEVycm9yKCJNdXN0''@;'; put 'put ''IHNwZWNpZnkgYSBzZWxlY3Rpb24gY2VsbCBvciByYW5nZSIpO01lPUthKHdbIiFzZWwiXS5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zfSJzdHJpbmciPT10eXBlb2YgTWUmJihNZT1jYShNZSkpfXZhciBVZT13WyIhZnJlZXplIl0/InN0cmluZyI9PXR5cGVvZiB3WyIhZnJlZXplIl0/''@;'; put 'put ''Y2Eod1siIWZyZWV6ZSJdKTp3WyIhZnJlZXplIl06e2M6MCxyOjB9O2lmKHdbIiFmcmVlemUiXSl7dmFyIFhlPXBpKFVlKSxpdD17c3RhdGU6ImZyb3plbiIseFNwbGl0OlVlLmMseVNwbGl0OlVlLnIsdG9wTGVmdENlbGw6WGV9O3dbIiFzZWwiXSYmKGl0LmFjdGl2ZVBhbmU9KE1lLnI+PVVl''@;'; put 'put ''LnImJlVlLnI+MD8iYm90dG9tIjoidG9wIikrKE1lLmM+PVVlLmMmJlVlLmM+MD8iUmlnaHQiOiJMZWZ0IikpLHZlPU1yKCJwYW5lIixudWxsLGl0KX1pZih3WyIhc2VsIl0pe3ZhciBmdD17YWN0aXZlQ2VsbDoic3RyaW5nIj09dHlwZW9mIE1lP01lOnBpKE1lKX07ZnQuc3FyZWY9d1siIXNl''@;'; put 'put ''bCJdLnJhbmdlP3dbIiFzZWwiXS5yYW5nZTpmdC5hY3RpdmVDZWxsKyI6IitmdC5hY3RpdmVDZWxsLHZlKz1Ncigic2VsZWN0aW9uIixudWxsLGZ0KSx3WyIhZnJlZXplIl0mJihVZS5jPjAmJihmdC5wYW5lPSJ0b3BSaWdodCIsdmUrPU1yKCJzZWxlY3Rpb24iLG51bGwsZnQpKSxVZS5yPjAm''@;'; put 'put ''JihmdC5wYW5lPSJib3R0b21MZWZ0Iix2ZSs9TXIoInNlbGVjdGlvbiIsbnVsbCxmdCkpLFVlLmM+MCYmVWUucj4wJiYoZnQucGFuZT0iYm90dG9tUmlnaHQiLHZlKz1Ncigic2VsZWN0aW9uIixudWxsLGZ0KSkpfXJldHVybiBNcigic2hlZXRWaWV3cyIsTXIoInNoZWV0VmlldyIsdmV8fG51''@;'; put 'put ''bGwsb2UpLHt9KX0oTWUsMCx3LEQpLFAuc2hlZXRGb3JtYXQpe3ZhciBmdD17ZGVmYXVsdFJvd0hlaWdodDpQLnNoZWV0Rm9ybWF0LmRlZmF1bHRSb3dIZWlnaHR8fCIxNiIsYmFzZUNvbFdpZHRoOlAuc2hlZXRGb3JtYXQuYmFzZUNvbFdpZHRofHwiMTAifTtudWxsIT1QLnNoZWV0Rm9ybWF0''@;'; put 'put ''Lm91dGxpbmVMZXZlbFJvdyYmKGZ0Lm91dGxpbmVMZXZlbFJvdz1QLnNoZWV0Rm9ybWF0Lm91dGxpbmVMZXZlbFJvdyksb2Vbb2UubGVuZ3RoXT1Ncigic2hlZXRGb3JtYXRQciIsbnVsbCxmdCl9ZWxzZSBpZihNZVsiIXNoZWV0Rm9ybWF0Il0pe3ZhciBNdD17fSx1dD0hMTtNZVsiIXNoZWV0''@;'; put 'put ''Rm9ybWF0Il0ucm93JiYoTWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHQ/KHV0PSEwLE10LmRlZmF1bHRSb3dIZWlnaHQ9TWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHQsTXQuY3VzdG9tSGVpZ2h0PTEpOk1lWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB4Pyh1dD0hMCxNdC5kZWZhdWx0Um93SGVp''@;'; put 'put ''Z2h0PXVoKE1lWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB4KSxNdC5jdXN0b21IZWlnaHQ9MSk6KDA9PT1NZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdHx8MD09PU1lWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB4fHxNZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhpZGRlbikmJih1dD0hMCxNdC5kZWZh''@;'; put 'put ''dWx0Um93SGVpZ2h0PU10LmRlZmF1bHRSb3dIZWlnaHR8fDE2LE10LmN1c3RvbUhlaWdodD0xLE10Lnplcm9IZWlnaHQ9MSksTWVbIiFzaGVldEZvcm1hdCJdLmR5RGVzY2VudCYmKE10WyJ4MTRhYzpkeURlc2NlbnQiXT1NZVsiIXNoZWV0Rm9ybWF0Il0uZHlEZXNjZW50KSksTWVbIiFzaGVl''@;'; put 'put ''dEZvcm1hdCJdLmNvbCYmKE1lWyIhc2hlZXRGb3JtYXQiXS5jb2wud2NofHxfYyhNZVsiIXNoZWV0Rm9ybWF0Il0uY29sKSxNdC5kZWZhdWx0Q29sV2lkdGg9TWVbIiFzaGVldEZvcm1hdCJdLmNvbC53Y2grNS9fc3x8MCx1dD0hMCksbnVsbD09TXQuZGVmYXVsdFJvd0hlaWdodCYmKE10LmRl''@;'; put 'put ''ZmF1bHRSb3dIZWlnaHQ9MTYpLG51bGw9PU10LmRlZmF1bHRDb2xXaWR0aCYmKE10LmRlZmF1bHRDb2xXaWR0aD0xMCksTXQub3V0bGluZUxldmVsUm93PU10Lm91dGxpbmVMZXZlbFJvd3x8Nyx1dCYmKG9lW29lLmxlbmd0aF09TXIoInNoZWV0Rm9ybWF0UHIiLG51bGwsTXQpKX1udWxsIT1N''@;'; put 'put ''ZVsiIWNvbHMiXSYmTWVbIiFjb2xzIl0ubGVuZ3RoPjAmJihvZVtvZS5sZW5ndGhdPWZ1bmN0aW9uIGR3KHcsUCxEKXtmb3IodmFyIG9lLGVlPVsiPGNvbHM+Il0sZ2U9MDtnZSE9UC5sZW5ndGg7KytnZSlpZihvZT1QW2dlXSl7aWYob2UuYXV0byYmVmkodyxvZSxnZSksb2Uuc3x8b2Uueil7''@;'; put 'put ''dmFyIF9lPXt0OiJ6In07bnVsbCE9b2UucyYmKF9lLnM9b2UucyksbnVsbCE9b2UueiYmKF9lLno9b2Uueiksb2Uuc3R5bGU9d2MoRC5jZWxsWGZzLEQuY2VsbFN0eWxlWGZzLF9lLEQpfWVlW2VlLmxlbmd0aF09TXIoImNvbCIsbnVsbCx1ZChnZSxvZSkpfXJldHVybiBlZVtlZS5sZW5ndGhd''@;'; put 'put ''PSI8L2NvbHM+IixlZS5qb2luKCIiKX0oTWUsTWVbIiFjb2xzIl0sUCkpLG9lW19lPW9lLmxlbmd0aF09IjxzaGVldERhdGEvPiIsTWVbIiFsaW5rcyJdPVtdLG51bGwhPU1lWyIhcmVmIl0mJih2ZT1mdW5jdGlvbiBQTih3LFAsRCxlZSl7dmFyIE1lLHd0LG9lPVtdLGdlPVtdLF9lPVBpKHdb''@;'; put 'put ''IiFyZWYiXSksdmU9IiIsamU9IiIsVWU9W10sWGU9MCxpdD0wLGZ0PXdbIiFyb3dzIl0sTXQ9QXJyYXkuaXNBcnJheSh3KSx1dD17cjpqZX0sSHQ9LTE7Zm9yKGl0PV9lLnMuYztpdDw9X2UuZS5jOysraXQpVWVbaXRdPUJhKGl0KTtmb3IoWGU9X2Uucy5yO1hlPD1fZS5lLnI7KytYZSl7Zm9y''@;'; put 'put ''KGdlPVtdLGplPVZhKFhlKSxpdD1fZS5zLmM7aXQ8PV9lLmUuYzsrK2l0KXtNZT1VZVtpdF0ramU7dmFyIGt0PU10Pyh3W1hlXXx8W10pW2l0XTp3W01lXTt2b2lkIDAhPT1rdCYmbnVsbCE9KHZlPVJOKGt0LE1lLHcsUCkpJiZnZS5wdXNoKHZlKX0oZ2UubGVuZ3RoPjB8fGZ0JiZmdFtYZV0p''@;'; put 'put ''JiYodXQ9e3I6amV9LGZ0JiZmdFtYZV0mJigod3Q9ZnRbWGVdKS5oaWRkZW4mJih1dC5oaWRkZW49MSksSHQ9LTEsd3QuaHB4P0h0PXVoKHd0LmhweCk6d3QuaHB0JiYoSHQ9d3QuaHB0KSxIdD4tMSYmKHV0Lmh0PUh0LHV0LmN1c3RvbUhlaWdodD0xKSx3dC5sZXZlbCYmKHV0Lm91dGxpbmVM''@;'; put 'put ''ZXZlbD13dC5sZXZlbCksd3QuZHlEZXNjZW50JiYodXRbIngxNGFjOmR5RGVzY2VudCJdPXd0LmR5RGVzY2VudCksd3QucyYmKHV0LnM9d2MoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJ6IixzOnd0LnN9LFApLHV0LmN1c3RvbUZvcm1hdD0xKSksb2Vbb2UubGVuZ3RoXT1Ncigicm93''@;'; put 'put ''IixnZS5qb2luKCIiKSx1dCkpfWlmKGZ0KWZvcig7WGU8ZnQubGVuZ3RoOysrWGUpZnQmJmZ0W1hlXSYmKHV0PXtyOlhlKzF9LCh3dD1mdFtYZV0pLmhpZGRlbiYmKHV0LmhpZGRlbj0xKSxIdD0tMSx3dC5ocHg/SHQ9dWgod3QuaHB4KTp3dC5ocHQmJihIdD13dC5ocHQpLEh0Pi0xJiYodXQu''@;'; put 'put ''aHQ9SHQsdXQuY3VzdG9tSGVpZ2h0PTEpLHd0LmxldmVsJiYodXQub3V0bGluZUxldmVsPXd0LmxldmVsKSxvZVtvZS5sZW5ndGhdPU1yKCJyb3ciLCIiLHV0KSk7cmV0dXJuIG9lLmpvaW4oIiIpfShNZSxQKSx2ZS5sZW5ndGg+MCYmKG9lW29lLmxlbmd0aF09dmUpKSxvZS5sZW5ndGg+X2Ur''@;'; put 'put ''MSYmKG9lW29lLmxlbmd0aF09Ijwvc2hlZXREYXRhPiIsb2VbX2VdPW9lW19lXS5yZXBsYWNlKCIvPiIsIj4iKSksTWVbIiFwcm90ZWN0Il0mJihvZVtvZS5sZW5ndGhdPWZ1bmN0aW9uIEFsKHcpe3ZhciBQPXtzaGVldDoxfTtyZXR1cm4gY3cuZm9yRWFjaChmdW5jdGlvbihEKXtudWxsIT13''@;'; put 'put ''W0RdJiZ3W0RdJiYoUFtEXT0iMSIpfSksZncuZm9yRWFjaChmdW5jdGlvbihEKXtudWxsIT13W0RdJiYhd1tEXSYmKFBbRF09IjAiKX0pLHcucGFzc3dvcmQ/UC5wYXNzd29yZD1WeCh3LnBhc3N3b3JkKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTp3LmVuY3J5cHRpb24mJihQLmFsZ29y''@;'; put 'put ''aXRobU5hbWU9dy5lbmNyeXB0aW9uLmFsZ28sUC5oYXNoVmFsdWU9dy5lbmNyeXB0aW9uLmhhc2gsUC5zYWx0VmFsdWU9dy5lbmNyeXB0aW9uLnNhbHQsUC5zcGluQ291bnQ9dy5lbmNyeXB0aW9uLnNwaW4pLE1yKCJzaGVldFByb3RlY3Rpb24iLG51bGwsUCl9KE1lWyIhcHJvdGVjdCJdKSks''@;'; put 'put ''bnVsbCE9TWVbIiFhdXRvZmlsdGVyIl0mJihvZVtvZS5sZW5ndGhdPWZ1bmN0aW9uIGlUKHcsUCxELGVlKXt2YXIgb2U9InN0cmluZyI9PXR5cGVvZiB3LnJlZj93LnJlZjpWbyh3LnJlZik7RC5Xb3JrYm9va3x8KEQuV29ya2Jvb2s9e1NoZWV0czpbXX0pLEQuV29ya2Jvb2suTmFtZXN8fChE''@;'; put 'put ''Lldvcmtib29rLk5hbWVzPVtdKTt2YXIgZ2U9RC5Xb3JrYm9vay5OYW1lcyxfZT1LYShvZSk7X2Uucy5yPT1fZS5lLnImJihfZS5lLnI9S2EoUFsiIXJlZiJdKS5lLnIsb2U9Vm8oX2UpKTtmb3IodmFyIHZlPTA7dmU8Z2UubGVuZ3RoOysrdmUpe3ZhciBNZT1nZVt2ZV07aWYoIl94bG5tLl9G''@;'; put 'put ''aWx0ZXJEYXRhYmFzZSI9PU1lLk5hbWUmJk1lLlNoZWV0PT1lZSl7TWUuUmVmPSInIitELlNoZWV0TmFtZXNbZWVdKyInISIrb2U7YnJlYWt9fXJldHVybiB2ZT09Z2UubGVuZ3RoJiZnZS5wdXNoKHtOYW1lOiJfeGxubS5fRmlsdGVyRGF0YWJhc2UiLFNoZWV0OmVlLFJlZjoiJyIrRC5TaGVl''@;'; put 'put ''dE5hbWVzW2VlXSsiJyEiK29lfSksTXIoImF1dG9GaWx0ZXIiLG51bGwse3JlZjpvZX0pfShNZVsiIWF1dG9maWx0ZXIiXSxNZSxELHcpKSxudWxsIT1NZVsiIW1lcmdlcyJdJiZNZVsiIW1lcmdlcyJdLmxlbmd0aD4wJiYob2Vbb2UubGVuZ3RoXT1mdW5jdGlvbiB5ZWUodyl7aWYoMD09PXcu''@;'; put 'put ''bGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgUD0nPG1lcmdlQ2VsbHMgY291bnQ9Iicrdy5sZW5ndGgrJyI+JyxEPTA7RCE9dy5sZW5ndGg7KytEKVArPSc8bWVyZ2VDZWxsIHJlZj0iJytWbyh3W0RdKSsnIi8+JztyZXR1cm4gUCsiPC9tZXJnZUNlbGxzPiJ9KE1lWyIhbWVyZ2VzIl0pKSxNZVsi''@;'; put 'put ''IWNvbmRmbXQiXSYmKG9lW29lLmxlbmd0aF09ZnVuY3Rpb24gRE4odyxQKXtyZXR1cm4gdy5tYXAoZnVuY3Rpb24oRCxlZSl7cmV0dXJuIGZ1bmN0aW9uIFpjKHcsUCxEKXt2YXIgZWU9dy5zP2pvKEQuRFhGLHcucyk6LTEsb2U9InN0cmluZyI9PXR5cGVvZiB3LnJlZj93LnJlZjpWbyh3LnJl''@;'; put 'put ''ZiksX2U9UGkob2UucmVwbGFjZSgvXHMuKiQvLCIiKSkucztfZS5yPDAmJihfZS5yPTApLF9lLmM8MCYmKF9lLmM9MCk7dmFyIHZlPSIiLE1lPXtwcmlvcml0eTpQKzF9O3N3aXRjaChlZT4tMSYmKE1lLmR4ZklkPWVlKSx3LnQpe2Nhc2UidW5pcXVlIjpNZS50eXBlPSJ1bmlxdWVWYWx1ZXMi''@;'; put 'put ''O2JyZWFrO2Nhc2UiZHVwIjpNZS50eXBlPSJkdXBsaWNhdGVWYWx1ZXMiO2JyZWFrO2Nhc2UiYmxhbmsiOk1lLnR5cGU9KHcudj8iYyI6Im5vdEMiKSsib250YWluc0JsYW5rcyIsdmU9Ijxmb3JtdWxhPkxFTihUUklNKCIrcGkoX2UpKyIpKSIrKHcudj8iPSI6IiZndDsiKSsiMDwvZm9ybXVs''@;'; put 'put ''YT4iO2JyZWFrO2Nhc2UiZXJyb3IiOk1lLnR5cGU9KHcudj8iYyI6Im5vdEMiKSsib250YWluc0Vycm9ycyI7YnJlYWs7Y2FzZSJmb3JtdWxhIjpNZS50eXBlPSJleHByZXNzaW9uIix2ZT1NcigiZm9ybXVsYSIsQnIody5mKSx7fSk7YnJlYWs7Y2FzZSJkYXRlIjpNZS50eXBlPSJ0aW1lUGVy''@;'; put 'put ''aW9kIixNZS50aW1lUGVyaW9kPXVUW3cub3BdO2JyZWFrO2Nhc2UidGV4dCI6c3dpdGNoKE1lLnR5cGU9TWUub3BlcmF0b3I9bXdbdy5vcF0sTWUudGV4dD13LnYsdy5vcCl7Y2FzZSJJTiI6dmU9Jzxmb3JtdWxhPk5PVChJU0VSUk9SKFNFQVJDSCgiJytCcih3LnYpKyciLCcrcGkoX2UpKyIp''@;'; put 'put ''KSk8L2Zvcm11bGE+IjticmVhaztjYXNlIk9UIjp2ZT0nPGZvcm11bGE+SVNFUlJPUihTRUFSQ0goIicrQnIody52KSsnIiwnK3BpKF9lKSsiKSk8L2Zvcm11bGE+IjticmVhaztjYXNlIlNUIjp2ZT0iPGZvcm11bGE+TEVGVCgiK3BpKF9lKSsnLExFTigiJytCcih3LnYpKyciKSk9IicrQnIo''@;'; put 'put ''dy52KSsnIjwvZm9ybXVsYT4nO2JyZWFrO2Nhc2UiTkQiOnZlPSI8Zm9ybXVsYT5SSUdIVCgiK3BpKF9lKSsnLExFTigiJytCcih3LnYpKyciKSk9IicrQnIody52KSsnIjwvZm9ybXVsYT4nfWJyZWFrO2Nhc2UidmFsIjpNZS50eXBlPSJjZWxsSXMiLE1lLm9wZXJhdG9yPUJwW3cub3BdLHZl''@;'; put 'put ''PW51bGwhPXcubWluP01yKCJmb3JtdWxhIixCcihTdHJpbmcody5taW4pKSx7fSkrTXIoImZvcm11bGEiLEJyKFN0cmluZyh3Lm1heCkpLHt9KTpNcigiZm9ybXVsYSIsQnIobnVsbCE9dy52P1N0cmluZygic3RyaW5nIj09dHlwZW9mIHcudj8nIicrdy52LnJlcGxhY2UoLyIvZywnIiInKSsn''@;'; put 'put ''Iic6dy52KTp3LmYpLHt9KTticmVhaztjYXNlImF2ZyI6c3dpdGNoKE1lLnR5cGU9ImFib3ZlQXZlcmFnZSIsTWUuYWJvdmVBdmVyYWdlPSJMIj09dy5vcC5jaGFyQXQoMCk/IjAiOiIxIix3Lm9wLmNoYXJBdCgxKSl7Y2FzZSJUIjpNZS5lcXVhbEF2ZXJhZ2U9IjAiO2JyZWFrO2Nhc2UiRSI6''@;'; put 'put ''TWUuZXF1YWxBdmVyYWdlPSIxIjticmVhaztkZWZhdWx0Ok1lLnN0ZERldj13Lm9wLmNoYXJBdCgxKX1icmVhaztjYXNlInJhbmsiOk1lLnR5cGU9InRvcDEwIixNZS5ib3R0b209IkIiPT13Lm9wLmNoYXJBdCgwKT8iMSI6IjAiLE1lLnBlcmNlbnQ9IlAiPT13Lm9wLmNoYXJBdCgxKT8iMSI6''@;'; put 'put ''IjAiLE1lLnJhbms9dy52O2JyZWFrO2Nhc2UiaWNvbiI6TWUudHlwZT0iaWNvblNldCI7dmFyIGplPXtpY29uU2V0OncudixwZXJjZW50OncucGN0PyJ0cnVlIjoiZmFsc2UifTt3LnJldiYmKGplLnJldmVyc2U9InRydWUiKSx3LmhpZGRlbiYmKGplLnNob3dWYWx1ZT0iZmFsc2UiKSx2ZT1N''@;'; put 'put ''cigiaWNvblNldCIsdy50aHJlc2gubWFwKFAyKS5qb2luKCIiKSxqZSk7YnJlYWs7Y2FzZSJzY2FsZSI6TWUudHlwZT0iY29sb3JTY2FsZSIsdmUrPVAyKHcuY21pbiksdy5jbWlkJiYodmUrPVAyKHcuY21pZCkpLHZlKz1QMih3LmNtYXgpLHZlKz1sZCh3LmNtaW4uY29sb3IpLHcuY21pZCYm''@;'; put 'put ''KHZlKz1sZCh3LmNtaWQuY29sb3IpKSx2ZT1NcigiY29sb3JTY2FsZSIsdmUrPWxkKHcuY21heC5jb2xvcikse30pO2JyZWFrO2Nhc2UiYmFyIjpNZS50eXBlPSJkYXRhQmFyIix2ZSs9UDIody5jbWluKSx2ZSs9UDIody5jbWF4KSx2ZT1NcigiZGF0YUJhciIsdmUrPWxkKHcuY29sb3IpLHt9''@;'; put 'put ''KTticmVhaztkZWZhdWx0OnRocm93IGNvbnNvbGUubG9nKHcpLCJDRiBtaXNzaW5nIHR5cGUgIit3LnR9cmV0dXJuJzxjb25kaXRpb25hbEZvcm1hdHRpbmcgc3FyZWY9Iicrb2UrJyI+JytNcigiY2ZSdWxlIiwiIj09dmU/bnVsbDp2ZSxNZSkrIjwvY29uZGl0aW9uYWxGb3JtYXR0aW5nPiJ9''@;'; put 'put ''KEQsZWUsUCl9KS5qb2luKCIiKX0oTWVbIiFjb25kZm10Il0sUCkpLE1lWyIhdmFsaWRhdGlvbnMiXSYmKG9lW29lLmxlbmd0aF09ZnVuY3Rpb24gQU4odyl7aWYoIXd8fDA9PXcubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgUD1bXSxEPTAsZWU9MDtlZTx3Lmxlbmd0aDsrK2VlKXt2YXIgb2U9''@;'; put 'put ''d1tlZV0sZ2U9WDhbb2UudF07aWYob2UucmVmJiYoInN0cmluZyIhPXR5cGVvZiBvZS5yZWZ8fC0xIT1vZS5yZWYuaW5kZXhPZigiICIpfHwob2UucmVmPVBpKG9lLnJlZiksb2UucmVmLnMmJiEob2UucmVmLnMuYzwwKSkpKXsrK0Q7dmFyIF9lPXt0eXBlOmdlLGFsbG93Qmxhbms6KygwIT1v''@;'; put 'put ''ZS5ibGFuayksc2hvd0lucHV0TWVzc2FnZTorKDAhPW9lLmlucHV0KSxzaG93RXJyb3JNZXNzYWdlOisoMCE9b2UuZXJyb3IpLHNxcmVmOiJzdHJpbmciPT10eXBlb2Ygb2UucmVmP29lLnJlZjpWbyhvZS5yZWYpfTtpZihvZS5pbnB1dCYmKG9lLmlucHV0LnRpdGxlJiYoX2UucHJvbXB0VGl0''@;'; put 'put ''bGU9Smkob2UuaW5wdXQudGl0bGUpKSxvZS5pbnB1dC5tZXNzYWdlJiYoX2UucHJvbXB0PUppKG9lLmlucHV0Lm1lc3NhZ2UpKSksb2UuZXJyb3ImJihvZS5lcnJvci50aXRsZSYmKF9lLmVycm9yVGl0bGU9Smkob2UuZXJyb3IudGl0bGUpKSxvZS5lcnJvci5tZXNzYWdlJiYoX2UuZXJyb3I9''@;'; put 'put ''Smkob2UuZXJyb3IubWVzc2FnZSkpLG9lLmVycm9yLnN0eWxlJiYoX2UuZXJyb3JTdHlsZT1vZS5lcnJvci5zdHlsZSkpLCFnZSl0aHJvdyBuZXcgRXJyb3IoIkJhZCB2YWxpZGF0aW9uOiB1bnJlY29nbml6ZWQgdHlwZSAiK29lLnQpO3ZhciB2ZT0iIjtzd2l0Y2gob2UudCl7Y2FzZSJBbnki''@;'; put 'put ''OmJyZWFrO2Nhc2UiTGlzdCI6Y2FzZSJDdXN0b20iOmlmKG9lLmwpe2lmKG9lLmwuam9pbigiLCIpLmxlbmd0aD4yNTApdGhyb3cgbmV3IEVycm9yKCJEViBsZW5ndGggPiAyNTAgdHJpZ2dlcnMgY29ycnVwdGlvbiBlcnJvcnMgaW4gRXhjZWwuICBVc2UgYSBsb29rdXAgdGFibGUiKTt2ZT0n''@;'; put 'put ''PGZvcm11bGExPiInK0JyKG9lLmwuam9pbigiLCIpKSsnIjwvZm9ybXVsYTE+J31lbHNlIHZlPSI8Zm9ybXVsYTE+IitCcihvZS5mKSsiPC9mb3JtdWxhMT4iO2JyZWFrO2Nhc2UiRGF0ZSI6Y2FzZSJUaW1lIjpjYXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3RoIjpjYXNlIldob2xlIjppZighQnBb''@;'; put 'put ''b2Uub3BdKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbiB0eXBlICIrb2Uub3ArIiBmb3IgIitvZS50KTtpZihfZS5vcGVyYXRvcj1CcFtvZS5vcF0sbnVsbCE9b2Uudil2ZT0iPGZvcm11bGExPiIrQnIoU3RyaW5nKG9lLnYgaW5zdGFuY2VvZiBEYXRlP3FlKG9lLnYpOm9l''@;'; put 'put ''LnYpKSsiPC9mb3JtdWxhMT4iO2Vsc2V7aWYobnVsbD09b2UubWlufHxudWxsPT1vZS5tYXgpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YSBWYWxpZGF0aW9uOiBgdmAgb3IgYG1pbmArYG1heGAgcmVxdWlyZWQgZm9yIFR5cGUgIitvZS50KTt2ZT0iPGZvcm11bGExPiIrQnIoU3RyaW5nKG9l''@;'; put 'put ''Lm1pbiBpbnN0YW5jZW9mIERhdGU/cWUob2UubWluKTpvZS5taW4pKSsiPC9mb3JtdWxhMT48Zm9ybXVsYTI+IitCcihTdHJpbmcob2UubWF4IGluc3RhbmNlb2YgRGF0ZT9xZShvZS5tYXgpOm9lLm1heCkpKyI8L2Zvcm11bGEyPiJ9fVAucHVzaChNcigiZGF0YVZhbGlkYXRpb24iLHZlfHxu''@;'; put 'put ''dWxsLF9lKSl9fXJldHVybiBEPjA/JzxkYXRhVmFsaWRhdGlvbnMgY291bnQ9IicrRCsnIj4nK1Auam9pbigiIikrIjwvZGF0YVZhbGlkYXRpb25zPiI6IiJ9KE1lWyIhdmFsaWRhdGlvbnMiXSkpO3ZhciBIdCx3dD0tMSxrdD0tMTtpZihNZVsiIWxpbmtzIl0ubGVuZ3RoPjAmJihvZVtvZS5s''@;'; put 'put ''ZW5ndGhdPSI8aHlwZXJsaW5rcz4iLE1lWyIhbGlua3MiXS5mb3JFYWNoKGZ1bmN0aW9uKGZuKXtmblsxXS5UYXJnZXQmJihIdD17cmVmOmZuWzBdfSwiIyIhPWZuWzFdLlRhcmdldC5jaGFyQXQoMCkmJihrdD1HbyhlZSwtMSxCcihmblsxXS5UYXJnZXQpLnJlcGxhY2UoLyMuKiQvLCIiKSxO''@;'; put 'put ''aS5ITElOSyksSHRbInI6aWQiXT0icklkIitrdCksKHd0PWZuWzFdLlRhcmdldC5pbmRleE9mKCIjIikpPi0xJiYoSHQubG9jYXRpb249QnIoZm5bMV0uVGFyZ2V0LnNsaWNlKHd0KzEpKSksZm5bMV0uVG9vbHRpcCYmKEh0LnRvb2x0aXA9QnIoZm5bMV0uVG9vbHRpcCkpLG9lW29lLmxlbmd0''@;'; put 'put ''aF09TXIoImh5cGVybGluayIsbnVsbCxIdCkpfSksb2Vbb2UubGVuZ3RoXT0iPC9oeXBlcmxpbmtzPiIpLGRlbGV0ZSBNZVsiIWxpbmtzIl0saXQpe3ZhciBUdD1mdW5jdGlvbiBRQSh3KXtpZih3LnByb3BzKXt2YXIgUD17fSxEPXcucHJvcHM7cmV0dXJuIEQuZ3JpZGxpbmVzJiYoUC5ncmlk''@;'; put 'put ''TGluZXM9UC5ncmlkTGluZXNTZXQ9MSksRC5oZWFkaW5ncyYmKFAuaGVhZGluZ3M9MSksRC5jZW50ZXJYJiYoUC5ob3Jpem9udGFsQ2VudGVyZWQ9MSksRC5jZW50ZXJZJiYoUC52ZXJ0aWNhbENlbnRlcmVkPTEpLE1yKCJwcmludE9wdGlvbnMiLG51bGwsUCl9cmV0dXJuIiJ9KGl0KTtUdC5s''@;'; put 'put ''ZW5ndGgmJihvZVtvZS5sZW5ndGhdPVR0KX1pZigobnVsbCE9TWVbIiFtYXJnaW5zIl18fGl0JiZpdC5tYXJnaW5zKSYmKG9lW29lLmxlbmd0aF09ZnVuY3Rpb24gcTgodyl7cmV0dXJuIEkyKHcpLE1yKCJwYWdlTWFyZ2lucyIsbnVsbCx3KX0oTWVbIiFtYXJnaW5zIl18fGl0Lm1hcmdpbnMp''@;'; put 'put ''KSxpdCl7dmFyIFl0PWZ1bmN0aW9uIE1OKHcpe2lmKHcucHJvcHMpe3ZhciBQPXt9LEQ9dy5wcm9wcztpZihELm9yaWVudGF0aW9uJiYoUC5vcmllbnRhdGlvbj1ELm9yaWVudGF0aW9uKSxELnNjYWxlJiYoUC5zY2FsZT1ELnNjYWxlKSxELmZpdCYmKG51bGwhPUQuZml0LmhlaWdodCYmKFAu''@;'; put 'put ''Zml0VG9IZWlnaHQ9RC5maXQuaGVpZ2h0KSxudWxsIT1ELmZpdC53aWR0aCYmKFAuZml0VG9XaWR0aD1ELmZpdC53aWR0aCkpLEQuZHBpJiYoUC5ob3Jpem9udGFsRHBpPVAudmVydGljYWxEcGk9RC5kcGkpLG51bGwhPUQuZmlyc3QmJihQLmZpcnN0UGFnZU51bWJlcj1ELmZpcnN0LFAudXNl''@;'; put 'put ''Rmlyc3RQYWdlTnVtYmVyPTEpLEQuYncmJihQLmJsYWNrQW5kV2hpdGU9MSksRC5kcmFmdCYmKFAuZHJhZnQ9MSksRC5jb21tZW50cyYmKFAuY2VsbENvbW1lbnRzPVNlW0QuY29tbWVudHNdfHwibm9uZSIpLEQuZXJyb3JzJiYoUC5lcnJvcnM9U05bRC5lcnJvcnNdfHwibm9uZSIpLEQucGFw''@;'; put 'put ''ZXIpc3dpdGNoKHR5cGVvZiBELnBhcGVyKXtjYXNlIm51bWJlciI6UC5wYXBlclNpemU9RC5wYXBlcjticmVhaztjYXNlInN0cmluZyI6RV9bRC5wYXBlcl0/UC5wYXBlclNpemU9RV9bRC5wYXBlcl06K0QucGFwZXImJihQLnBhcGVyU2l6ZT0rRC5wYXBlcik7YnJlYWs7Y2FzZSJvYmplY3Qi''@;'; put 'put ''OmlmKCFELnBhcGVyLmhlaWdodHx8IUQucGFwZXIud2lkdGgpdGhyb3ciQ3VzdG9tIFBhcGVyIFNpemUgbXVzdCBpbmNsdWRlIHdpZHRoIGFuZCBoZWlnaHQhIjtQLnBhcGVySGVpZ2h0PUQucGFwZXIuaGVpZ2h0LFAucGFwZXJXaWR0aD1ELnBhcGVyLndpZHRofXJldHVyblsxLCEwLCJ0cnVl''@;'; put 'put ''Iiwib3ZlciJdLmluZGV4T2YoRC5vcmRlcik+LTEmJihQLnBhZ2VPcmRlcj0ib3ZlclRoZW5Eb3duIiksTXIoInBhZ2VTZXR1cCIsbnVsbCxQKX1yZXR1cm4iIn0oaXQpO1l0Lmxlbmd0aCYmKG9lW29lLmxlbmd0aF09WXQpLFl0PWZ1bmN0aW9uIHB3KHcpe3ZhciBQPVtdLEQ9IiIsZWU9IiIs''@;'; put 'put ''b2U9IiIsZ2U9IiIsX2U9IiIsdmU9IiIsTWU9IiIsamU9bWYody5oZWFkZXIpO2plLmxlbmd0aCYmKGVlPWplWzBdLHZlPWplWzFdLGdlPWplWzJdKTt2YXIgVWU9bWYody5mb290ZXIpO3JldHVybiBVZS5sZW5ndGgmJihvZT1VZVswXSxNZT1VZVsxXSxfZT1VZVsyXSksZWUmJlAucHVzaCgi''@;'; put 'put ''PG9kZEhlYWRlcj4iK0JyKGVlKSsiPC9vZGRIZWFkZXI+Iiksb2UmJlAucHVzaCgiPG9kZEZvb3Rlcj4iK0JyKG9lKSsiPC9vZGRGb290ZXI+IiksKF9lIT1vZXx8Z2UhPWVlKSYmKEQrPScgZGlmZmVyZW50T2RkRXZlbj0iMSInLFAucHVzaCgiPGV2ZW5IZWFkZXI+IitCcihnZSkrIjwvZXZl''@;'; put 'put ''bkhlYWRlcj4iKSxQLnB1c2goIjxldmVuRm9vdGVyPiIrQnIoX2UpKyI8L2V2ZW5Gb290ZXI+IikpLChNZSE9b2V8fHZlIT1lZSkmJihEKz0nIGRpZmZlcmVudEZpcnN0PSIxIicsUC5wdXNoKCI8Zmlyc3RIZWFkZXI+IitCcih2ZSkrIjwvZmlyc3RIZWFkZXI+IiksUC5wdXNoKCI8Zmlyc3RG''@;'; put 'put ''b290ZXI+IitCcihNZSkrIjwvZmlyc3RGb290ZXI+IikpLFAubGVuZ3RoPyI8aGVhZGVyRm9vdGVyIitEKyI+IitQLmpvaW4oIiIpKyI8L2hlYWRlckZvb3Rlcj4iOiIifShpdCksWXQubGVuZ3RoJiYob2Vbb2UubGVuZ3RoXT1ZdCl9aWYoKG51bGwhPU1lWyIhcm93QnJlYWtzIl18fGl0JiZp''@;'; put 'put ''dC5yb3dCcmVha3MpJiYob2Vbb2UubGVuZ3RoXT1mdW5jdGlvbiBFTih3KXtpZigwPT13Lmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIFA9Wyc8cm93QnJlYWtzIGNvdW50PSInK3cubGVuZ3RoKyciIG1hbnVhbEJyZWFrQ291bnQ9Iicrdy5sZW5ndGgrJyI+J10sRD0wO0Q8dy5sZW5ndGg7KytE''@;'; put 'put ''KVAucHVzaCgnPGJyayBpZD0iJyt3W0RdLlIrJyIgbWFuPSIxIi8+Jyk7cmV0dXJuIFAuam9pbigiIikrIjwvcm93QnJlYWtzPiJ9KE1lWyIhcm93QnJlYWtzIl18fGl0LnJvd0JyZWFrcykpLChudWxsIT1NZVsiIWNvbEJyZWFrcyJdfHxpdCYmaXQuY29sQnJlYWtzKSYmKG9lW29lLmxlbmd0''@;'; put 'put ''aF09ZnVuY3Rpb24gYmVlKHcpe2lmKDA9PXcubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgUD1bJzxjb2xCcmVha3MgY291bnQ9Iicrdy5sZW5ndGgrJyIgbWFudWFsQnJlYWtDb3VudD0iJyt3Lmxlbmd0aCsnIj4nXSxEPTA7RDx3Lmxlbmd0aDsrK0QpUC5wdXNoKCc8YnJrIGlkPSInK3dbRF0u''@;'; put 'put ''QysnIiBtYW49IjEiLz4nKTtyZXR1cm4gUC5qb2luKCIiKSsiPC9jb2xCcmVha3M+In0oTWVbIiFjb2xCcmVha3MiXXx8aXQuY29sQnJlYWtzKSksKCFQfHxQLmlnbm9yZUVDfHxudWxsPT1QLmlnbm9yZUVDKSYmKG9lW29lLmxlbmd0aF09dmEoImlnbm9yZWRFcnJvcnMiLE1yKCJpZ25vcmVk''@;'; put 'put ''RXJyb3IiLG51bGwse251bWJlclN0b3JlZEFzVGV4dDoxLHNxcmVmOmplfSkpKSxNZVsiIWNoYXJ0cyJdJiZYZS5wdXNoLmFwcGx5KFhlLE1lWyIhY2hhcnRzIl0pLE1lWyIhaW1hZ2VzIl0mJlhlLnB1c2guYXBwbHkoWGUsTWVbIiFpbWFnZXMiXSksTWVbIiFzaGFwZXMiXSYmWGUucHVzaC5h''@;'; put 'put ''cHBseShYZSxNZVsiIXNoYXBlcyJdKSxYZS5sZW5ndGg+MCYmKGt0PUdvKGVlLC0xLCIuLi9kcmF3aW5ncy9kcmF3aW5nIisodysxKSsiLnhtbCIsTmkuRFJBVyksb2Vbb2UubGVuZ3RoXT1NcigiZHJhd2luZyIsbnVsbCx7InI6aWQiOiJySWQiK2t0fSksTWVbIiFkcmF3aW5nIl09WGUpLChN''@;'; put 'put ''ZVsiIWNvbW1lbnRzIl0ubGVuZ3RoPjB8fChNZVsiIWNvbnRyb2xzIl18fFtdKS5sZW5ndGg+MCkmJihrdD1HbyhlZSwtMSwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZyIrKHcrMSkrIi52bWwiLE5pLlZNTCksb2Vbb2UubGVuZ3RoXT1NcigibGVnYWN5RHJhd2luZyIsbnVsbCx7InI6aWQiOiJy''@;'; put 'put ''SWQiK2t0fSksTWVbIiFsZWdhY3kiXT1rdCksTWVbIiFwcmludCJdJiZNZVsiIXByaW50Il0uaW1hZ2VzKXt2YXIgZ249TWVbIiFwcmludCJdLmltYWdlcyxxbj0wO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbihmbil7Z25bZm5dJiZbIm9kZCIsImV2ZW4iLCJmaXJzdCJd''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oS24pe2duW2ZuXVtLbl0mJlsibGVmdCIsInJpZ2h0IiwiY2VudGVyIl0uZm9yRWFjaChmdW5jdGlvbih6bil7aWYoQXJyYXkuaXNBcnJheShnbltmbl1bS25dW3puXSkpZm9yKHZhciBPbj0wO09uPGduW2ZuXVtLbl1bem5dLmxlbmd0aDsrK09uKWduW2ZuXVtL''@;'; put 'put ''bl1bem5dW09uXSYmKGduW2ZuXVtLbl1bem5dW09uXS5fY250PXFuKyspfSl9KX0pLHFuPjAmJihrdD1HbyhlZSwtMSwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZyIrKHcrMSkrIkhGLnZtbCIsTmkuVk1MKSxvZVtvZS5sZW5ndGhdPU1yKCJsZWdhY3lEcmF3aW5nSEYiLG51bGwseyJyOmlkIjoi''@;'; put 'put ''cklkIitrdH0pLE1lWyIhbGVnYWN5SEYiXT1rdCl9cmV0dXJuKE1lWyIhdGFibGVzIl18fFtdKS5sZW5ndGg+MCYmKG9lW29lLmxlbmd0aF09Jzx0YWJsZVBhcnRzIGNvdW50PSInK01lWyIhdGFibGVzIl0ubGVuZ3RoKyciPicsTWVbIiF0YWJsZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKGZuLEtu''@;'; put 'put ''KXtrdD1HbyhlZSwtMSwiLi4vdGFibGVzL3RhYmxlIisodysxKSsiXyIrS24rIi54bWwiLE5pLlRBQkxFKSxvZVtvZS5sZW5ndGhdPSc8dGFibGVQYXJ0IHI6aWQ9InJJZCcra3QrJyIvPid9KSxvZVtvZS5sZW5ndGhdPSI8L3RhYmxlUGFydHM+Iiksb2UubGVuZ3RoPjEmJihvZVtvZS5sZW5n''@;'; put 'put ''dGhdPSI8L3dvcmtzaGVldD4iLG9lWzFdPW9lWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxvZS5qb2luKCIiKX1mdW5jdGlvbiBOTih3LFAsRCxlZSl7dmFyIG9lPWZ1bmN0aW9uIHZ3KHcsUCxEKXt2YXIgZWU9cHIoMTQ1KSxvZT0oRFsiIXJvd3MiXXx8W10pW3ddfHx7fTtlZS53cml0ZV9zaGlm''@;'; put 'put ''dCg0LHcpLGVlLndyaXRlX3NoaWZ0KDQsMCk7dmFyIGdlPTMyMDtvZS5ocHg/Z2U9MjAqdWgob2UuaHB4KTpvZS5ocHQmJihnZT0yMCpvZS5ocHQpLGVlLndyaXRlX3NoaWZ0KDIsZ2UpLGVlLndyaXRlX3NoaWZ0KDEsMCk7dmFyIF9lPTA7b2UubGV2ZWwmJihfZXw9b2UubGV2ZWwpLG9lLmhp''@;'; put 'put ''ZGRlbiYmKF9lfD0xNiksKG9lLmhweHx8b2UuaHB0KSYmKF9lfD0zMiksZWUud3JpdGVfc2hpZnQoMSxfZSksZWUud3JpdGVfc2hpZnQoMSwwKTt2YXIgdmU9MCxNZT1lZS5sO2VlLmwrPTQ7Zm9yKHZhciBqZT17cjp3LGM6MH0sVWU9MDtVZTwxNjsrK1VlKWlmKCEoUC5zLmM+VWUrMTw8MTB8''@;'; put 'put ''fFAuZS5jPFVlPDwxMCkpe2Zvcih2YXIgWGU9LTEsaXQ9LTEsZnQ9VWU8PDEwO2Z0PFVlKzE8PDEwOysrZnQpamUuYz1mdCwoQXJyYXkuaXNBcnJheShEKT8oRFtqZS5yXXx8W10pW2plLmNdOkRbcGkoamUpXSkmJihYZTwwJiYoWGU9ZnQpLGl0PWZ0KTtYZTwwfHwoKyt2ZSxlZS53cml0ZV9z''@;'; put 'put ''aGlmdCg0LFhlKSxlZS53cml0ZV9zaGlmdCg0LGl0KSl9dmFyIHV0PWVlLmw7cmV0dXJuIGVlLmw9TWUsZWUud3JpdGVfc2hpZnQoNCx2ZSksZWUubD11dCxlZS5sZW5ndGg+ZWUubD9lZS5zbGljZSgwLGVlLmwpOmVlfShlZSxELFApOyhvZS5sZW5ndGg+MTd8fChQWyIhcm93cyJdfHxbXSlb''@;'; put 'put ''ZWVdKSYmaGkodywiQnJ0Um93SGRyIixvZSl9dmFyIFZOPW9jLEJOPVgxO2Z1bmN0aW9uIGJUKHcpe3JldHVyblt5MCh3KSx5bCh3KSwibiJdfXZhciBKTj1vYyxTVD1YMSx4VD1bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImhlYWRlciIsImZvb3RlciJdLHJvPVsiQW55IiwiV2hv''@;'; put 'put ''bGUiLCJEZWNpbWFsIiwiTGlzdCIsIkRhdGUiLCJUaW1lIiwiTGVuZ3RoIiwiQ3VzdG9tIl0sQ3c9WyJJTiIsIk9UIiwiRVEiLCJORSIsIkdUIiwiTFQiLCJHRSIsIkxFIl07ZnVuY3Rpb24gZlYodyl7dmFyIFA9cHIoNCksRD1bUF0sZWU9cm8uaW5kZXhPZih3LnQpO2lmKGVlPDApdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJCYWQgdmFsaWRhdGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIit3LnQpO3ZhciBnZT1Ddy5pbmRleE9mKHcub3ApO3N3aXRjaChlZSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDc6Z2U9MDticmVhaztkZWZhdWx0OmlmKC0xPT1nZSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhIFZh''@;'; put 'put ''bGlkYXRpb24gdHlwZSAiK3cub3ArIiBmb3IgIit3LnQpfVAud3JpdGVfc2hpZnQoMSwwfGVlKSxQLndyaXRlX3NoaWZ0KDEsMSksUC53cml0ZV9zaGlmdCgxLDEyfGdlPDw0KSxQLndyaXRlX3NoaWZ0KDEsMCksRC5wdXNoKGZ1bmN0aW9uIGgyKHcpe3ZhciBQPXcuc3BsaXQoL1xzKixccyov''@;'; put 'put ''KSxEPXByKDQpO0Qud3JpdGVfc2hpZnQoNCxQLmxlbmd0aCk7dmFyIGVlPVtEXTtyZXR1cm4gUC5mb3JFYWNoKGZ1bmN0aW9uKG9lKXtlZS5wdXNoKFgxKFBpKG9lKSkpfSksTShlZSl9KCJzdHJpbmciPT10eXBlb2Ygdy5yZWY/dy5yZWY6Vm8ody5yZWYpKSk7dmFyIF9lPXByKDE2KTtfZS53''@;'; put 'put ''cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLF9lLndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksX2Uud3JpdGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxfZS53cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLEQucHVzaChfZSk7dmFyIHZlPXByKDgpO3ZlLndyaXRlX3NoaWZ0KDQsMCksdmUud3JpdGVf''@;'; put 'put ''c2hpZnQoNCwwKTt2YXIgTWU9MTtzd2l0Y2gody50KXtjYXNlIkFueSI6RC5wdXNoKHZlKSxELnB1c2godmUpO2JyZWFrO2Nhc2UiRGVjaW1hbCI6Y2FzZSJMZW5ndGgiOmNhc2UiV2hvbGUiOmlmKG51bGwhPXcudnx8bnVsbCE9dy5mKUQucHVzaCgibnVtYmVyIj09dHlwZW9mIHcudj9KXyh3''@;'; put 'put ''LnYpOlBwKG51bGw9PXcudj93LmY6dy52KSk7ZWxzZXtpZihudWxsPT13Lm1pbnx8bnVsbD09dy5tYXgpdGhyb3ciVW5zdXBwb3J0ZWQgRGF0YSBWYWxpZGF0aW9uOiBgdmAgb3IgYG1pbmArYG1heGAgcmVxdWlyZWQgZm9yIFR5cGUgIit3LnQ7RC5wdXNoKCJudW1iZXIiPT10eXBlb2Ygdy5t''@;'; put 'put ''aW4/Sl8ody5taW4pOlBwKHcubWluKSksRC5wdXNoKCJudW1iZXIiPT10eXBlb2Ygdy5tYXg/Sl8ody5tYXgpOlBwKHcubWF4KSksTWU9Mn1icmVhaztjYXNlIkxpc3QiOmlmKG51bGwhPXcubCl7RC5wdXNoKFZBKHcubC5qb2luKCIsIikpKTticmVha31jYXNlIkN1c3RvbSI6aWYoIm51bGwi''@;'; put 'put ''IT13LmYpe0QucHVzaChQcCh3LmYpKTticmVha310aHJvdyJVbnN1cHBvcnRlZCBEYXRhIFZhbGlkYXRpb246IGBmYCIrKCJMaXN0Ij09dy50PyIgb3IgYGxgIjoiIikrIiByZXF1aXJlZCBmb3IgVHlwZSAiK3cudDtkZWZhdWx0OnRocm93IlhMU0IgZG9lcyBub3Qgc3VwcG9ydCBEYXRhIFZh''@;'; put 'put ''bGlkYXRpb24gdHlwZSAiK3cudH1yZXR1cm4gMT09TWUmJkQucHVzaCh2ZSksTShEKX1mdW5jdGlvbiBoVih3LFAsRCxlZSxvZSxnZSxfZSl7aWYodm9pZCAwPT09UC52JiZudWxsPT1QLnN8fCJ6Ij09PVAudCYmIW9lLnNoZWV0U3R1YnMpcmV0dXJuITE7dmFyIHZlPSIiO3N3aXRjaChQLnQp''@;'; put 'put ''e2Nhc2UiYiI6dmU9UC52PyIxIjoiMCI7YnJlYWs7Y2FzZSJkIjooUD1KdChQKSkuej1QLnp8fFMuX3RhYmxlWzE0XSxQLnY9cWUoUHQoUC52KSksUC50PSJuIjticmVhaztjYXNlIm4iOmNhc2UiZSI6dmU9IiIrUC52O2JyZWFrO2RlZmF1bHQ6dmU9UC52fXZhciBNZT17cjpELGM6ZWV9O3N3''@;'; put 'put ''aXRjaChNZS5zPXdjKG9lLmNlbGxYZnMsb2UuY2VsbFN0eWxlWGZzLFAsb2UpLFAubCYmZ2VbIiFsaW5rcyJdLnB1c2goW3BpKE1lKSxQLmxdKSxQLmMmJmdlWyIhY29tbWVudHMiXS5wdXNoKFtwaShNZSksUC5jXSksUC50KXtjYXNlInMiOmNhc2Uic3RyIjppZihvZS5ib29rU1NUKXtpZih2''@;'; put 'put ''ZT1ydyhvZS5TdHJpbmdzLFAudixQLlI/UC5yPXcyKFAuUik6bnVsbCxvZS5yZXZTdHJpbmdzKSxQLlIpZm9yKHZhciBqZT0wO2plPFAuUi5sZW5ndGg7KytqZSlQLlJbamVdLnMmJndjKG9lLmNlbGxYZnMsb2UuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpQLlJbamVdLnN9LG9lKTtNZS50''@;'; put 'put ''PSJzIixNZS52PXZlLF9lP2hpKHcsIkJydFNob3J0SXNzdCIsZnVuY3Rpb24gWU4odyxQLEQpe3JldHVybiBudWxsPT1EJiYoRD1wcig4KSkscmMoUCxEKSxELndyaXRlX3NoaWZ0KDQsUC52KSxEfSgwLE1lKSk6aGkodywiQnJ0Q2VsbElzc3QiLGZ1bmN0aW9uIF93KHcsUCxEKXtyZXR1cm4g''@;'; put 'put ''bnVsbD09RCYmKEQ9cHIoMTIpKSxIaShQLEQpLEQud3JpdGVfc2hpZnQoNCxQLnYpLER9KDAsTWUpKX1lbHNlIE1lLnQ9InN0ciIsX2U/aGkodywiQnJ0U2hvcnRTdCIsZnVuY3Rpb24gU2VlKHcsUCxEKXtyZXR1cm4gbnVsbD09RCYmKEQ9cHIoOCs0Kncudi5sZW5ndGgpKSxyYyhQLEQpLGN1''@;'; put 'put ''KHcudixEKSxELmxlbmd0aD5ELmw/RC5zbGljZSgwLEQubCk6RH0oUCxNZSkpOmhpKHcsIkJydENlbGxTdCIsZnVuY3Rpb24gbGcodyxQLEQpe3JldHVybiBudWxsPT1EJiYoRD1wcigxMis0Kncudi5sZW5ndGgpKSxIaShQLEQpLGN1KHcudixEKSxELmxlbmd0aD5ELmw/RC5zbGljZSgwLEQu''@;'; put 'put ''bCk6RH0oUCxNZSkpO3JldHVybiEwO2Nhc2UibiI6cmV0dXJuIFAudj09KDB8UC52KSYmUC52Pi0xZTMmJlAudjwxZTM/X2U/aGkodywiQnJ0U2hvcnRSayIsZnVuY3Rpb24gS04odyxQLEQpe3JldHVybiBudWxsPT1EJiYoRD1wcig4KSkscmMoUCxEKSx4YSh3LnYsRCksRH0oUCxNZSkpOmhp''@;'; put 'put ''KHcsIkJydENlbGxSayIsZnVuY3Rpb24gQ2VlKHcsUCxEKXtyZXR1cm4gbnVsbD09RCYmKEQ9cHIoMTIpKSxIaShQLEQpLHhhKHcudixEKSxEfShQLE1lKSk6X2U/aGkodywiQnJ0U2hvcnRSZWFsIixmdW5jdGlvbiBHTih3LFAsRCl7cmV0dXJuIG51bGw9PUQmJihEPXByKDEyKSkscmMoUCxE''@;'; put 'put ''KSx6dSh3LnYsRCksRH0oUCxNZSkpOmhpKHcsIkJydENlbGxSZWFsIixmdW5jdGlvbiB3dyh3LFAsRCl7cmV0dXJuIG51bGw9PUQmJihEPXByKDE2KSksSGkoUCxEKSx6dSh3LnYsRCksRH0oUCxNZSkpLCEwO2Nhc2UiYiI6cmV0dXJuIE1lLnQ9ImIiLF9lP2hpKHcsIkJydFNob3J0Qm9vbCIs''@;'; put 'put ''ZnVuY3Rpb24gYncodyxQLEQpe3JldHVybiBudWxsPT1EJiYoRD1wcig1KSkscmMoUCxEKSxELndyaXRlX3NoaWZ0KDEsdy52PzE6MCksRH0oUCxNZSkpOmhpKHcsIkJydENlbGxCb29sIixmdW5jdGlvbiBwVCh3LFAsRCl7cmV0dXJuIG51bGw9PUQmJihEPXByKDkpKSxIaShQLEQpLEQud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSx3LnY/MTowKSxEfShQLE1lKSksITA7Y2FzZSJlIjpyZXR1cm4gTWUudD0iZSIsX2U/aGkodywiQnJ0U2hvcnRFcnJvciIsZnVuY3Rpb24gdlQodyxQLEQpe3JldHVybiBudWxsPT1EJiYoRD1wcig4KSkscmMoUCxEKSxELndyaXRlX3NoaWZ0KDEsdy52KSxELndyaXRlX3No''@;'; put 'put ''aWZ0KDIsMCksRC53cml0ZV9zaGlmdCgxLDApLER9KFAsTWUpKTpoaSh3LCJCcnRDZWxsRXJyb3IiLGZ1bmN0aW9uIG1UKHcsUCxEKXtyZXR1cm4gbnVsbD09RCYmKEQ9cHIoOSkpLEhpKFAsRCksRC53cml0ZV9zaGlmdCgxLHcudiksRH0oUCxNZSkpLCEwfXJldHVybiBfZT9oaSh3LCJCcnRT''@;'; put 'put ''aG9ydEJsYW5rIixmdW5jdGlvbiBaTih3LFAsRCl7cmV0dXJuIG51bGw9PUQmJihEPXByKDQpKSxyYyhQLEQpfSgwLE1lKSk6aGkodywiQnJ0Q2VsbEJsYW5rIixmdW5jdGlvbiBVTih3LFAsRCl7cmV0dXJuIG51bGw9PUQmJihEPXByKDgpKSxIaShQLEQpfSgwLE1lKSksITB9ZnVuY3Rpb24g''@;'; put 'put ''eVYodyxQLEQsZWUpe3ZhciBvZT1BdSgpLGdlPUQuU2hlZXROYW1lc1t3XSxfZT1ELlNoZWV0c1tnZV18fHt9LHZlPWdlO3RyeXtEJiZELldvcmtib29rJiYodmU9RC5Xb3JrYm9vay5TaGVldHNbd10uQ29kZU5hbWV8fHZlKX1jYXRjaHt9dmFyIE1lPVBpKF9lWyIhcmVmIl18fCJBMSIpO2lm''@;'; put 'put ''KE1lLmUuYz4xNjM4M3x8TWUuZS5yPjEwNDg1NzUpe2lmKFAuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisoX2VbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2Iik7TWUuZS5jPU1hdGgubWluKE1lLmUuYywxNjM4MyksTWUuZS5yPU1hdGgu''@;'; put 'put ''bWluKE1lLmUuYywxMDQ4NTc1KX1yZXR1cm4gX2VbIiFsaW5rcyJdPVtdLF9lWyIhY29tbWVudHMiXT1bXSxoaShvZSwiQnJ0QmVnaW5TaGVldCIpLChELnZiYXJhd3x8X2VbIiFvdXRsaW5lIl0pJiZoaShvZSwiQnJ0V3NQcm9wIixmdW5jdGlvbiB2Zih3LFAsRCl7bnVsbD09RCYmKEQ9cHIo''@;'; put 'put ''ODQrNCp3Lmxlbmd0aCkpO3ZhciBlZT0xOTI7UCYmKFAuYWJvdmUmJihlZSY9LTY1KSxQLmxlZnQmJihlZSY9LTEyOSkpLEQud3JpdGVfc2hpZnQoMSxlZSk7Zm9yKHZhciBvZT0xO29lPDM7KytvZSlELndyaXRlX3NoaWZ0KDEsMCk7cmV0dXJuIHRoKHthdXRvOjF9LEQpLEQud3JpdGVfc2hp''@;'; put 'put ''ZnQoLTQsLTEpLEQud3JpdGVfc2hpZnQoLTQsLTEpLE42KHcsRCksRC5zbGljZSgwLEQubCl9KHZlLF9lWyIhb3V0bGluZSJdKSksaGkob2UsIkJydFdzRGltIixCTihNZSkpLGZ1bmN0aW9uIElUKHcsUCxEKXtoaSh3LCJCcnRCZWdpbldzVmlld3MiKSxoaSh3LCJCcnRCZWdpbldzVmlldyIs''@;'; put 'put ''ZnVuY3Rpb24gYVYodyxQLEQpe251bGw9PUQmJihEPXByKDMwKSk7dmFyIGVlPTkyNDtyZXR1cm4oKChQfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCYmKGVlfD0zMiksaG4od1siIWdyaWRsaW5lcyJdKSYmKGVlJj0tNSksaG4oKCgoUHx8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5ncmlk''@;'; put 'put ''KSYmKGVlJj0tNSksRC53cml0ZV9zaGlmdCgyLGVlKSxELndyaXRlX3NoaWZ0KDQsMCksRC53cml0ZV9zaGlmdCg0LDApLEQud3JpdGVfc2hpZnQoNCwwKSxELndyaXRlX3NoaWZ0KDEsMCksRC53cml0ZV9zaGlmdCgxLDApLEQud3JpdGVfc2hpZnQoMiwwKSxELndyaXRlX3NoaWZ0KDIsMTAw''@;'; put 'put ''KSxELndyaXRlX3NoaWZ0KDIsMCksRC53cml0ZV9zaGlmdCgyLDApLEQud3JpdGVfc2hpZnQoMiwwKSxELndyaXRlX3NoaWZ0KDQsMCksRH0oUCxEKSksUFsiIWZyZWV6ZSJdJiZoaSh3LCJCcnRQYW5lIixmdW5jdGlvbiBFVCh3KXt2YXIgUD1jYSh3WyIhZnJlZXplIl0pLEQ9cHIoMjkpO3Jl''@;'; put 'put ''dHVybiBELndyaXRlX3NoaWZ0KDgsUC5jLCJmIiksRC53cml0ZV9zaGlmdCg4LFAuciwiZiIpLEQud3JpdGVfc2hpZnQoNCxQLnIpLEQud3JpdGVfc2hpZnQoNCxQLmMpLEQud3JpdGVfc2hpZnQoNCwwKSxELndyaXRlX3NoaWZ0KDEsMyksRH0oUCkpLFBbIiFzZWwiXSYmaGkodywiQnJ0U2Vs''@;'; put 'put ''IixmdW5jdGlvbiB0Vih3LFApe3ZhciBEPXByKDM2KSxlZT13LmNlbGw7aWYoIWVlKXtpZighdy5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7ZWU9cGkoS2Eody5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zKX12YXIg''@;'; put 'put ''b2U9InN0cmluZyI9PXR5cGVvZiBlZT9jYShlZSk6ZWU7aWYoUCl7dmFyIGdlPSJzdHJpbmciPT10eXBlb2YgUD9jYShQKTpQO0Qud3JpdGVfc2hpZnQoNCxvZS5yPj1nZS5yJiZvZS5jPj1nZS5jPzA6b2Uucj49Z2UuciYmb2UuYzxnZS5jPzI6b2UucjxnZS5yJiZvZS5jPj1nZS5jPzE6Myl9''@;'; put 'put ''ZWxzZSBELndyaXRlX3NoaWZ0KDQsMyk7cmV0dXJuIEQud3JpdGVfc2hpZnQoNCxvZS5yKSxELndyaXRlX3NoaWZ0KDQsb2UuYyksRC53cml0ZV9zaGlmdCg0LDApLEQud3JpdGVfc2hpZnQoNCwxKSxELndyaXRlX3NoaWZ0KDQsb2UuciksRC53cml0ZV9zaGlmdCg0LG9lLnIpLEQud3JpdGVf''@;'; put 'put ''c2hpZnQoNCxvZS5jKSxELndyaXRlX3NoaWZ0KDQsb2UuYyksRH0oUFsiIXNlbCJdLFBbIiFmcmVlemUiXSkpLGhpKHcsIkJydEVuZFdzVmlldyIpLGhpKHcsIkJydEVuZFdzVmlld3MiKX0ob2UsX2UsRC5Xb3JrYm9vayksZnVuY3Rpb24gVFQodyxQKXshUHx8IVBbIiFjb2xzIl18fChoaSh3''@;'; put 'put ''LCJCcnRCZWdpbkNvbEluZm9zIiksUFsiIWNvbHMiXS5mb3JFYWNoKGZ1bmN0aW9uKEQsZWUpe0QmJmhpKHcsIkJydENvbEluZm8iLGZ1bmN0aW9uIE1lZSh3LFAsRCl7bnVsbD09RCYmKEQ9cHIoMTgpKTt2YXIgZWU9dWQodyxQKTtELndyaXRlX3NoaWZ0KC00LHcpLEQud3JpdGVfc2hpZnQo''@;'; put 'put ''LTQsdyksRC53cml0ZV9zaGlmdCg0LDI1NiooZWUud2lkdGh8fDEwKSksRC53cml0ZV9zaGlmdCg0LDApO3ZhciBvZT0wO3JldHVybiBQLmhpZGRlbiYmKG9lfD0xKSwibnVtYmVyIj09dHlwZW9mIGVlLndpZHRoJiYob2V8PTIpLFAubGV2ZWwmJihvZXw9UC5sZXZlbDw8OCksRC53cml0ZV9z''@;'; put 'put ''aGlmdCgyLG9lKSxEfShlZSxEKSl9KSxoaSh3LCJCcnRFbmRDb2xJbmZvcyIpKX0ob2UsX2UpLGZ1bmN0aW9uIHBWKHcsUCxELGVlKXt2YXIgb2U9UGkoUFsiIXJlZiJdfHwiQTEiKSxfZT0iIix2ZT1bXTtoaSh3LCJCcnRCZWdpblNoZWV0RGF0YSIpO3ZhciBNZT1BcnJheS5pc0FycmF5KFAp''@;'; put 'put ''LGplPW9lLmUucjtQWyIhcm93cyJdJiYoamU9TWF0aC5tYXgob2UuZS5yLFBbIiFyb3dzIl0ubGVuZ3RoLTEpKTtmb3IodmFyIFVlPW9lLnMucjtVZTw9amU7KytVZSl7X2U9VmEoVWUpLE5OKHcsUCxvZSxVZSk7dmFyIFhlPSExO2lmKFVlPD1vZS5lLnIpZm9yKHZhciBpdD1vZS5zLmM7aXQ8''@;'; put 'put ''PW9lLmUuYzsrK2l0KXtVZT09PW9lLnMuciYmKHZlW2l0XT1CYShpdCkpO3ZhciBmdD1NZT8oUFtVZV18fFtdKVtpdF06UFt2ZVtpdF0rX2VdO1hlPSEhZnQmJmhWKHcsZnQsVWUsaXQsZWUsUCxYZSl9fWhpKHcsIkJydEVuZFNoZWV0RGF0YSIpfShvZSxfZSwwLFApLGZ1bmN0aW9uIGl2KHcs''@;'; put 'put ''UCl7UFsiIXByb3RlY3QiXSYmaGkodywiQnJ0U2hlZXRQcm90ZWN0aW9uIixmdW5jdGlvbiBzVih3LFApe3JldHVybiBudWxsPT1QJiYoUD1wcig2NikpLFAud3JpdGVfc2hpZnQoMix3LnBhc3N3b3JkP1Z4KHcucGFzc3dvcmQpOjApLFAud3JpdGVfc2hpZnQoNCwxKSxbWyJvYmplY3RzIiwh''@;'; put 'put ''MV0sWyJzY2VuYXJpb3MiLCExXSxbImZvcm1hdENlbGxzIiwhMF0sWyJmb3JtYXRDb2x1bW5zIiwhMF0sWyJmb3JtYXRSb3dzIiwhMF0sWyJpbnNlcnRDb2x1bW5zIiwhMF0sWyJpbnNlcnRSb3dzIiwhMF0sWyJpbnNlcnRIeXBlcmxpbmtzIiwhMF0sWyJkZWxldGVDb2x1bW5zIiwhMF0sWyJk''@;'; put 'put ''ZWxldGVSb3dzIiwhMF0sWyJzZWxlY3RMb2NrZWRDZWxscyIsITFdLFsic29ydCIsITBdLFsiYXV0b0ZpbHRlciIsITBdLFsicGl2b3RUYWJsZXMiLCEwXSxbInNlbGVjdFVubG9ja2VkQ2VsbHMiLCExXV0uZm9yRWFjaChmdW5jdGlvbihEKXtQLndyaXRlX3NoaWZ0KDQsRFsxXT9udWxsPT13''@;'; put 'put ''W0RbMF1dfHx3W0RbMF1dPzA6MTpudWxsIT13W0RbMF1dJiZ3W0RbMF1dPzA6MSl9KSxQfShQWyIhcHJvdGVjdCJdKSl9KG9lLF9lKSxmdW5jdGlvbiBEVCh3LFAsRCxlZSl7aWYoUFsiIWF1dG9maWx0ZXIiXSl7dmFyIG9lPVBbIiFhdXRvZmlsdGVyIl0sZ2U9InN0cmluZyI9PXR5cGVvZiBv''@;'; put 'put ''ZS5yZWY/b2UucmVmOlZvKG9lLnJlZik7RC5Xb3JrYm9va3x8KEQuV29ya2Jvb2s9e1NoZWV0czpbXX0pLEQuV29ya2Jvb2suTmFtZXN8fChELldvcmtib29rLk5hbWVzPVtdKTt2YXIgX2U9RC5Xb3JrYm9vay5OYW1lcyx2ZT1LYShnZSk7dmUucy5yPT12ZS5lLnImJih2ZS5lLnI9S2EoUFsi''@;'; put 'put ''IXJlZiJdKS5lLnIsZ2U9Vm8odmUpKTtmb3IodmFyIE1lPTA7TWU8X2UubGVuZ3RoOysrTWUpe3ZhciBqZT1fZVtNZV07aWYoIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSI9PWplLk5hbWUmJmplLlNoZWV0PT1lZSl7amUuUmVmPSInIitELlNoZWV0TmFtZXNbZWVdKyInISIrZ2U7YnJlYWt9fU1l''@;'; put 'put ''PT1fZS5sZW5ndGgmJl9lLnB1c2goe05hbWU6Il94bG5tLl9GaWx0ZXJEYXRhYmFzZSIsU2hlZXQ6ZWUsUmVmOiInIitELlNoZWV0TmFtZXNbZWVdKyInISIrZ2V9KSxoaSh3LCJCcnRCZWdpbkFGaWx0ZXIiLFgxKFBpKGdlKSkpLGhpKHcsIkJydEVuZEFGaWx0ZXIiKX19KG9lLF9lLEQsdyks''@;'; put 'put ''ZnVuY3Rpb24gbVYodyxQKXshUHx8IVBbIiFtZXJnZXMiXXx8KGhpKHcsIkJydEJlZ2luTWVyZ2VDZWxscyIsZnVuY3Rpb24gTVQodyxQKXtyZXR1cm4gbnVsbD09UCYmKFA9cHIoNCkpLFAud3JpdGVfc2hpZnQoNCx3KSxQfShQWyIhbWVyZ2VzIl0ubGVuZ3RoKSksUFsiIW1lcmdlcyJdLmZv''@;'; put 'put ''ckVhY2goZnVuY3Rpb24oRCl7aGkodywiQnJ0TWVyZ2VDZWxsIixTVChEKSl9KSxoaSh3LCJCcnRFbmRNZXJnZUNlbGxzIikpfShvZSxfZSksZnVuY3Rpb24gdlYodyxQKXtpZihQKXtoaSh3LCJCcnRCZWdpbkRWYWxzIixmdW5jdGlvbiBBVCh3LFApe251bGw9PVAmJihQPXByKDE4KSksUC53''@;'; put 'put ''cml0ZV9zaGlmdCgyLDApLFAud3JpdGVfc2hpZnQoNCwwKSxQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgRD0wLGVlPTA7ZWU8dy5sZW5ndGg7KytlZSkoKHdbZWVdfHx7fSkucmVmfHx7fSkucyYmd1tlZV0ucmVmLnMuYzwwfHwrK0Q7cmV0dXJuIFAud3Jp''@;'; put 'put ''dGVfc2hpZnQoNCxEKSxQfShQKSk7Zm9yKHZhciBEPTA7RDxQLmxlbmd0aDsrK0QpKChQW0RdfHx7fSkucmVmfHx7fSkucyYmUFtEXS5yZWYucy5jPDB8fGhpKHcsIkJydERWYWwiLGZWKFBbRF0pKTtoaSh3LCJCcnRFbmREVmFscyIpfX0ob2UsX2VbIiF2YWxpZGF0aW9ucyJdKSxmdW5jdGlv''@;'; put 'put ''biBnVih3LFAsRCl7UFsiIWxpbmtzIl0uZm9yRWFjaChmdW5jdGlvbihlZSl7aWYoZWVbMV0uVGFyZ2V0KXt2YXIgb2U9R28oRCwtMSxlZVsxXS5UYXJnZXQucmVwbGFjZSgvIy4qJC8sIiIpLE5pLkhMSU5LKTtoaSh3LCJCcnRITGluayIsZnVuY3Rpb24gUU4odyxQKXt2YXIgRD1wcig1MCs0''@;'; put 'put ''Kih3WzFdLlRhcmdldC5sZW5ndGgrKHdbMV0uVG9vbHRpcHx8IiIpLmxlbmd0aCkpO1gxKHtzOmNhKHdbMF0pLGU6Y2Eod1swXSl9LEQpLGp1KCJySWQiK1AsRCk7dmFyIGVlPXdbMV0uVGFyZ2V0LmluZGV4T2YoIiMiKTtyZXR1cm4gY3UoKC0xPT1lZT8iIjp3WzFdLlRhcmdldC5zbGljZShl''@;'; put 'put ''ZSsxKSl8fCIiLEQpLGN1KHdbMV0uVG9vbHRpcHx8IiIsRCksY3UoIiIsRCksRC5zbGljZSgwLEQubCl9KGVlLG9lKSl9fSksZGVsZXRlIFBbIiFsaW5rcyJdfShvZSxfZSxlZSksX2VbIiFtYXJnaW5zIl0mJmhpKG9lLCJCcnRNYXJnaW5zIixmdW5jdGlvbiBpVih3LFApe3JldHVybiBudWxs''@;'; put 'put ''PT1QJiYoUD1wcig0OCkpLEkyKHcpLHhULmZvckVhY2goZnVuY3Rpb24oRCl7enUod1tEXSxQKX0pLFB9KF9lWyIhbWFyZ2lucyJdKSksKCFQfHxQLmlnbm9yZUVDfHxudWxsPT1QLmlnbm9yZUVDKSYmZnVuY3Rpb24gT1QodyxQKXshUHx8IVBbIiFyZWYiXXx8KGhpKHcsIkJydEJlZ2luQ2Vs''@;'; put 'put ''bElnbm9yZUVDcyIpLGhpKHcsIkJydENlbGxJZ25vcmVFQyIsZnVuY3Rpb24gbFYodyl7dmFyIFA9cHIoMjQpO3JldHVybiBQLndyaXRlX3NoaWZ0KDQsNCksUC53cml0ZV9zaGlmdCg0LDEpLFgxKHcsUCksUH0oUGkoUFsiIXJlZiJdKSkpLGhpKHcsIkJydEVuZENlbGxJZ25vcmVFQ3MiKSl9''@;'; put 'put ''KG9lLF9lKSxmdW5jdGlvbiBrZWUodyxQLEQsZWUpe2lmKFBbIiFjb21tZW50cyJdLmxlbmd0aD4wKXt2YXIgb2U9R28oZWUsLTEsIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmciKyhEKzEpKyIudm1sIixOaS5WTUwpO2hpKHcsIkJydExlZ2FjeURyYXdpbmciLGp1KCJySWQiK29lKSksUFsiIWxl''@;'; put 'put ''Z2FjeSJdPW9lfX0ob2UsX2UsdyxlZSksaGkob2UsIkJydEVuZFNoZWV0Iiksb2UuZW5kKCl9ZnVuY3Rpb24gb3Yodyl7dmFyIGVlLFA9W10sRD13Lm1hdGNoKC9ePGM6bnVtQ2FjaGU+Lyk7KHcubWF0Y2goLzxjOnB0IGlkeD0iKFxkKikiPiguKj8pPFwvYzpwdD4vZ20pfHxbXSkuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihnZSl7dmFyIF9lPWdlLm1hdGNoKC88YzpwdCBpZHg9IihcZCo/KSI+PGM6dj4oLiopPFwvYzp2PjxcL2M6cHQ+Lyk7X2UmJihQWytfZVsxXV09RD8rX2VbMl06X2VbMl0pfSk7dmFyIG9lPUVyKCh3Lm1hdGNoKC88Yzpmb3JtYXRDb2RlPihbXHNcU10qPyk8XC9jOmZvcm1h''@;'; put 'put ''dENvZGU+Lyl8fFsiIiwiR2VuZXJhbCJdKVsxXSk7cmV0dXJuKHcubWF0Y2goLzxjOmY+KC4qPyk8XC9jOmY+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24oZ2Upe2VlPWdlLnJlcGxhY2UoLzwuKj8+L2csIiIpfSksW1Asb2UsZWVdfU5pLkNIQVJUPSJodHRwOi8vc2NoZW1hcy5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0IixOaS5DSEFSVEVYPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE0L3JlbGF0aW9uc2hpcHMvY2hhcnRFeCI7dmFyIGNnPS88KD86XHcrOik/Y2hhcnQ+KFtcc1xTXSo/KTxc''@;'; put 'put ''Lyg/Olx3KzopP2NoYXJ0Pi8sR3U9LzwoPzpcdys6KT9wbG90QXJlYT4oW1xzXFNdKj8pPFwvKD86XHcrOik/cGxvdEFyZWE+LyxGMj0vPCg/Olx3KzopP2xlZ2VuZD4oW1xzXFNdKj8pPFwvKD86XHcrOik/bGVnZW5kPi8sYXY9LzwoPzpcdys6KT90aXRsZT4oW1xzXFNdKj8pPFwvKD86XHcr''@;'; put 'put ''Oik/dGl0bGU+LztmdW5jdGlvbiB4MCh3LFAsRCxlZSxvZSxnZSxfZSx2ZSl7dmFyIE1lPWdlfHx7IiF0eXBlIjoiY2hhcnQifTtpZighdylyZXR1cm4gZ2U7X2UmJl9lLkFuY2hvciYmKE1lWyIhcG9zIl09eDIoX2UuQW5jaG9yLHZlKSxNZVsiIXBvc1R5cGUiXT1fZS5BbmNob3IudHlwZS5y''@;'; put 'put ''ZXBsYWNlKC9BbmNob3IvLCIiKSxNZVsiIWFic3BvcyJdPXgyKF9lLkFuY2hvcix2ZSksTWVbIiFyZWxwb3MiXT1BOChfZS5BbmNob3IsdmUpKSxNZVsiIXBsb3QiXT1bXTt2YXIgamU9IiIsVWU9IiIsWGU9dy5tYXRjaChjZyk7WGU/KGplPXcuc2xpY2UoMCxYZS5pbmRleCksVWU9dy5zbGlj''@;'; put 'put ''ZShYZS5pbmRleCtYZVswXS5sZW5ndGgpKTpqZT1VZT13O3ZhciBpdD1bXSxmdD1qZS5tYXRjaCgvPGM6bGFuZy4qPz4vKXx8dy5tYXRjaCgvPGM6bGFuZy4qPz4vKXx8VWUubWF0Y2goLzxjOmxhbmcuKj8+Lyk7cmV0dXJuIGZ0JiYoTWVbIiFsYW5nIl09KGNuKGZ0WzBdKXx8e30pLnZhbHx8''@;'; put 'put ''ImVuLVVTIiksWGUmJigoaXQ9WGVbMV0ubWF0Y2goYXYpKSYmZnVuY3Rpb24geWYodyxQKXt2YXIgRD0iIjt3Lm1hdGNoKC88YzpyaWNoPi8pJiZ3LnJlcGxhY2UoLzxhOnQ+KFtcc1xTXSo/KTxcL2E6dD4vZyxmdW5jdGlvbihlZSxvZSl7RCs9b2V9KSxQWyIhdGl0bGUiXT1EfHwiQ2hhcnQg''@;'; put 'put ''VGl0bGUifShpdFsxXSxNZSksZnVuY3Rpb24genAodyxQKXtpZih3KXt2YXIgRD0wLGVlPTAsb2U9IkEiLGdlPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O3cucmVwbGFjZShScixmdW5jdGlvbihfZSx2ZSl7dmFyIE1lPXt0OnZlLGM6RCx3OjAsc2VyOltdfSxqZT1bXSxVZT0oX2Uu''@;'; put 'put ''bWF0Y2goLzxjOnNlci8pfHxbXSkuaW5kZXgsWGU9VWU/X2Uuc2xpY2UoMCxVZSk6X2U7InNjYXR0ZXIiPT12ZSYmKGplPV9lLm1hdGNoKC88YzpzY2F0dGVyU3R5bGUoW15cLz5dKilcLz4vbSkpJiZjbihqZVswXSksImJhciI9PXZlJiYoamU9X2UubWF0Y2goLzxjOmJhckRpcihbXlwvPl0q''@;'; put 'put ''KVwvPi9tKSkmJihNZS5iYXJEaXI9ImJhciI9PWNuKGplWzBdKS52YWw/ImgiOiJ2IiksKGplPVhlLm1hdGNoKC88Yzpncm91cGluZyhbXlwvPl0qKVwvPi9tKSkmJihNZS5ncm91cGluZz1jbihqZVswXSkudmFsfHwic3RhbmRhcmQiKSwoX2UubWF0Y2goanApfHxbXSkuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihmdCl7dmFyIE10PVtdLHV0PXt9LHd0PVtdO2lmKGZ0Lm1hdGNoKC88Yzp0eD4vKSl7dmFyIEh0PW92KChmdC5tYXRjaCgvPGM6dHg+KFtcc1xTXSo/KTxcL2M6dHg+Lyl8fFtdKVsxXXx8IiIpfHxbXTtIdFswXSYmSHRbMF1bMF0mJih1dC5uYW1lPUh0WzBdWzBdKSxIdFsyXSYmKHV0''@;'; put 'put ''Lm5hbWVyZWY9SHRbMl0pfVsieFZhbCIsInlWYWwiLCJjYXQiLCJ2YWwiLCJidWJibGVTaXplIl0uZm9yRWFjaChmdW5jdGlvbihrdCl7dmFyIFl0LFR0PWZ0Lm1hdGNoKG5ldyBSZWdFeHAoIjxjOiIra3QrIj5bXFxzXFxTXSo/PFxcL2M6IitrdCsiPiIsImdtIikpO1R0JiYoKFR0WzBdLm1h''@;'; put 'put ''dGNoKC88YzpmPiguKj8pPFwvYzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGduKXtZdD1nbi5yZXBsYWNlKC88Lio/Pi9nLCIiKX0pLChUdFswXS5tYXRjaCgvPGM6KD86XHcqKUNhY2hlPltcc1xTXSo/PFwvYzooPzpcdyopQ2FjaGU+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''Z24pe3ZhciBxbj1vdihnbik7Z2Uucy5yPWdlLnMuYz0wLGdlLmUuYz1ELG9lPUJhKEQpLHFuWzBdLmZvckVhY2goZnVuY3Rpb24oZm4sS24pe1Bbb2UrVmEoS24pXT17dDoibnVtYmVyIj09dHlwZW9mIGZuPyJuIjoicyIsdjpmbix6OnFuWzFdfSxlZT1Lbn0pLGdlLmUucjxlZSYmKGdlLmUu''@;'; put 'put ''cj1lZSksKytELE1lLncrKyxNdC5wdXNoKGt0KSwocW5bMl18fFl0KSYmd3QucHVzaChxblsyXXx8WXQpLCJ2YWwiPT1rdCYmKHV0Lno9cW5bMV18fCJHZW5lcmFsIil9KSl9KSwoamU9X2UubWF0Y2goLzxjOnNtb290aChbXlwvPl0qKVwvPi9tKSkmJih1dC5zbW9vdGg9bnVsbD09Y24oamVb''@;'; put 'put ''MF0pLnZhbHx8X3IoY24oamVbMF0pLnZhbCkpLHV0LmNvbHM9TXQsdXQucmFuZ2VzPXd0LE1lLnNlci5wdXNoKHV0KX0pLCJkb3VnaG51dCI9PXZlJiYoamU9X2UubWF0Y2goLzxjOmhvbGVTaXplKFteXC8+XSopXC8+L20pKSYmKE1lLmhvbGU9KGNuKGplWzBdKS52YWx8fDEwKS8xMDApLFBb''@;'; put 'put ''IiFwbG90Il0ucHVzaChNZSl9KSxEPjAmJihQWyIhcmVmIl09Vm8oZ2UpKX19KChYZVsxXS5tYXRjaChHdSl8fFtdKVsxXSxNZSksbnVsbCE9KGl0PVhlWzFdLm1hdGNoKEYyKSkmJmZ1bmN0aW9uIGJWKHcsUCl7dmFyIEQ7UFsiIWxlZ2VuZCJdPXtwb3M6InIifSwoRD13Lm1hdGNoKC88Yzps''@;'; put 'put ''ZWdlbmRQb3MoW15cLz5dKilcLz4vbSkpJiYoUFsiIWxlZ2VuZCJdLnBvcz1jbihEWzBdKS52YWx8fCJyIil9KGl0WzBdLE1lKSksTWV9dmFyIFJyPS88YzooKD86YXJlYXxsaW5lfHN0b2NrfHJhZGFyfHNjYXR0ZXJ8cGllfGRvdWdobnV0fGJhcnxvZlBpZXxzdXJmYWNlfGJ1YmJsZSkoPzoz''@;'; put 'put ''RCk/KUNoYXJ0W14+XSo+KFtcc1xTXSo/KTxcL2M6KD86YXJlYXxsaW5lfHN0b2NrfHJhZGFyfHNjYXR0ZXJ8cGllfGRvdWdobnV0fGJhcnxvZlBpZXxzdXJmYWNlfGJ1YmJsZSkoPzozRCk/Q2hhcnQ+L2dtLGpwPS88YzpzZXI+KFtcc1xTXSo/KTxcL2M6c2VyPi9nbTtOaS5DUz0iaHR0cDov''@;'; put 'put ''L3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydHNoZWV0Ijt2YXIgVXA9TXIoImNoYXJ0c2hlZXQiLG51bGwse3htbG5zOnNhLm1haW5bMF0sInhtbG5zOnIiOnNhLnJ9KTtmdW5jdGlvbiBZcCh3LFAsRCxlZSl7dmFyIG9l''@;'; put 'put ''PVtCbixVcF07cmV0dXJuIG9lLnB1c2goIjxzaGVldFByLz4iKSxvZS5wdXNoKCc8c2hlZXRWaWV3cz48c2hlZXRWaWV3IHpvb21TY2FsZT0iMTAwIiB3b3JrYm9va1ZpZXdJZD0iMCIgem9vbVRvRml0PSIxIi8+PC9zaGVldFZpZXdzPicpLG9lW29lLmxlbmd0aF09TXIoImRyYXdpbmciLG51''@;'; put 'put ''bGwseyJyOmlkIjoicklkMSJ9KSxHbyhlZSwtMSwiLi4vZHJhd2luZ3MvZHJhd2luZyIrKHcrMSkrIi54bWwiLE5pLkRSQVcpLG9lLmxlbmd0aD4yJiYob2Vbb2UubGVuZ3RoXT0iPC9jaGFydHNoZWV0PiIsb2VbMV09b2VbMV0ucmVwbGFjZSgiLz4iLCI+IikpLG9lLmpvaW4oIiIpfWZ1bmN0''@;'; put 'put ''aW9uICRwKCl7dmFyIHc9QXUoKTtyZXR1cm4gaGkodywiQnJ0QmVnaW5TaGVldCIpLGhpKHcsIkJydEVuZFNoZWV0Iiksdy5lbmQoKX12YXIgeWg9W1siYWxsb3dSZWZyZXNoUXVlcnkiLCExLCJib29sIl0sWyJhdXRvQ29tcHJlc3NQaWN0dXJlcyIsITAsImJvb2wiXSxbImJhY2t1cEZpbGUi''@;'; put 'put ''LCExLCJib29sIl0sWyJjaGVja0NvbXBhdGliaWxpdHkiLCExLCJib29sIl0sWyJDb2RlTmFtZSIsIiJdLFsiZGF0ZTE5MDQiLCExLCJib29sIl0sWyJkZWZhdWx0VGhlbWVWZXJzaW9uIiwwLCJpbnQiXSxbImZpbHRlclByaXZhY3kiLCExLCJib29sIl0sWyJoaWRlUGl2b3RGaWVsZExpc3Qi''@;'; put 'put ''LCExLCJib29sIl0sWyJwcm9tcHRlZFNvbHV0aW9ucyIsITEsImJvb2wiXSxbInB1Ymxpc2hJdGVtcyIsITEsImJvb2wiXSxbInJlZnJlc2hBbGxDb25uZWN0aW9ucyIsITEsImJvb2wiXSxbInNhdmVFeHRlcm5hbExpbmtWYWx1ZXMiLCEwLCJib29sIl0sWyJzaG93Qm9yZGVyVW5zZWxlY3Rl''@;'; put 'put ''ZFRhYmxlcyIsITAsImJvb2wiXSxbInNob3dJbmtBbm5vdGF0aW9uIiwhMCwiYm9vbCJdLFsic2hvd09iamVjdHMiLCJhbGwiXSxbInNob3dQaXZvdENoYXJ0RmlsdGVyIiwhMSwiYm9vbCJdLFsidXBkYXRlTGlua3MiLCJ1c2VyU2V0Il1dLFJUPVtbImFjdGl2ZVRhYiIsMCwiaW50Il0sWyJh''@;'; put 'put ''dXRvRmlsdGVyRGF0ZUdyb3VwaW5nIiwhMCwiYm9vbCJdLFsiZmlyc3RTaGVldCIsMCwiaW50Il0sWyJtaW5pbWl6ZWQiLCExLCJib29sIl0sWyJzaG93SG9yaXpvbnRhbFNjcm9sbCIsITAsImJvb2wiXSxbInNob3dTaGVldFRhYnMiLCEwLCJib29sIl0sWyJzaG93VmVydGljYWxTY3JvbGwi''@;'; put 'put ''LCEwLCJib29sIl0sWyJ0YWJSYXRpbyIsNjAwLCJpbnQiXSxbInZpc2liaWxpdHkiLCJ2aXNpYmxlIl1dLExUPVtdLFBUPVtbImNhbGNDb21wbGV0ZWQiLCJ0cnVlIl0sWyJjYWxjTW9kZSIsImF1dG8iXSxbImNhbGNPblNhdmUiLCJ0cnVlIl0sWyJjb25jdXJyZW50Q2FsYyIsInRydWUiXSxb''@;'; put 'put ''ImZ1bGxDYWxjT25Mb2FkIiwiZmFsc2UiXSxbImZ1bGxQcmVjaXNpb24iLCJ0cnVlIl0sWyJpdGVyYXRlIiwiZmFsc2UiXSxbIml0ZXJhdGVDb3VudCIsIjEwMCJdLFsiaXRlcmF0ZURlbHRhIiwiMC4wMDEiXSxbInJlZk1vZGUiLCJBMSJdXTtmdW5jdGlvbiBTdyh3LFApe2Zvcih2YXIgRD0w''@;'; put 'put ''O0QhPXcubGVuZ3RoOysrRClmb3IodmFyIGVlPXdbRF0sb2U9MDtvZSE9UC5sZW5ndGg7KytvZSl7dmFyIGdlPVBbb2VdO2lmKG51bGw9PWVlW2dlWzBdXSllZVtnZVswXV09Z2VbMV07ZWxzZSBzd2l0Y2goZ2VbMl0pe2Nhc2UiYm9vbCI6InN0cmluZyI9PXR5cGVvZiBlZVtnZVswXV0mJihl''@;'; put 'put ''ZVtnZVswXV09X3IoZWVbZ2VbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOiJzdHJpbmciPT10eXBlb2YgZWVbZ2VbMF1dJiYoZWVbZ2VbMF1dPXBhcnNlSW50KGVlW2dlWzBdXSwxMCkpfX19ZnVuY3Rpb24gTXcodyxQKXtmb3IodmFyIEQ9MDtEIT1QLmxlbmd0aDsrK0Qpe3ZhciBlZT1QW0RdO2lm''@;'; put 'put ''KG51bGw9PXdbZWVbMF1dKXdbZWVbMF1dPWVlWzFdO2Vsc2Ugc3dpdGNoKGVlWzJdKXtjYXNlImJvb2wiOiJzdHJpbmciPT10eXBlb2Ygd1tlZVswXV0mJih3W2VlWzBdXT1fcih3W2VlWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijoic3RyaW5nIj09dHlwZW9mIHdbZWVbMF1dJiYod1tlZVswXV09''@;'; put 'put ''cGFyc2VJbnQod1tlZVswXV0sMTApKX19fWZ1bmN0aW9uIGt3KHcpe013KHcuV0JQcm9wcyx5aCksTXcody5DYWxjUHIsUFQpLFN3KHcuV0JWaWV3LFJUKSxTdyh3LlNoZWV0cyxMVCksRnAuZGF0ZTE5MDQ9X3Iody5XQlByb3BzLmRhdGUxOTA0KX12YXIgSFQ9Il1bKj8vXFwiLnNwbGl0KCIi''@;'; put 'put ''KTtmdW5jdGlvbiBFdyh3LFApe2lmKHcubGVuZ3RoPjMxKXtpZihQKXJldHVybiExO3Rocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZXMgY2Fubm90IGV4Y2VlZCAzMSBjaGFycyIpfXZhciBEPSEwO3JldHVybiBIVC5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtpZigtMSE9dy5pbmRleE9mKGVlKSl7''@;'; put 'put ''aWYoIVApdGhyb3cgbmV3IEVycm9yKCJTaGVldCBuYW1lIGNhbm5vdCBjb250YWluIDogXFwgLyA/ICogWyBdIik7RD0hMX19KSxEfXZhciBFZWU9Lzxcdys6d29ya2Jvb2svLEFlZT1Ncigid29ya2Jvb2siLG51bGwse3htbG5zOnNhLm1haW5bMF0sInhtbG5zOnIiOnNhLnJ9KTtmdW5jdGlv''@;'; put 'put ''biBTVih3LFApe3ZhciBEPVB8fHt9LGVlPVtCbl07ZWVbZWUubGVuZ3RoXT1BZWU7dmFyIG9lPXcuV29ya2Jvb2smJih3Lldvcmtib29rLk5hbWVzfHxbXSkubGVuZ3RoPjA7dy5Xb3JrYm9vayYmdy5Xb3JrYm9vay5Nb2RpZnkmJihlZVtlZS5sZW5ndGhdPWZ1bmN0aW9uIHdWKHcpe3ZhciBQ''@;'; put 'put ''PXt9O3JldHVybiB3Lndhcm4mJihQLnJlYWRPbmx5UmVjb21tZW5kZWQ9MSksUC51c2VyTmFtZT13LnVzZXJ8fCJTaGVldCBKUyIsdy5lbmNyeXB0aW9uJiYody5lbmNyeXB0aW9uLmFsZ28mJihQLmFsZ29yaXRobU5hbWU9dy5lbmNyeXB0aW9uLmFsZ28pLHcuZW5jcnlwdGlvbi5oYXNoJiYo''@;'; put 'put ''UC5oYXNoVmFsdWU9dy5lbmNyeXB0aW9uLmhhc2gpLHcuZW5jcnlwdGlvbi5zYWx0JiYoUC5zYWx0VmFsdWU9dy5lbmNyeXB0aW9uLnNhbHQpLHcuZW5jcnlwdGlvbi5zcGluJiYoUC5zcGluQ291bnQ9dy5lbmNyeXB0aW9uLnNwaW4pKSxNcigiZmlsZVNoYXJpbmciLG51bGwsUCl9KHcuV29y''@;'; put 'put ''a2Jvb2suTW9kaWZ5KSk7dmFyIGdlPXtjb2RlTmFtZToiVGhpc1dvcmtib29rIn07dy5Xb3JrYm9vayYmdy5Xb3JrYm9vay5XQlByb3BzJiYoeWguZm9yRWFjaChmdW5jdGlvbihqZSl7bnVsbCE9dy5Xb3JrYm9vay5XQlByb3BzW2plWzBdXSYmdy5Xb3JrYm9vay5XQlByb3BzW2plWzBdXSE9''@;'; put 'put ''amVbMV0mJihnZVtqZVswXV09dy5Xb3JrYm9vay5XQlByb3BzW2plWzBdXSl9KSx3Lldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUmJihnZS5jb2RlTmFtZT13Lldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUsZGVsZXRlIGdlLkNvZGVOYW1lKSksZWVbZWUubGVuZ3RoXT1Ncigid29ya2Jvb2tQ''@;'; put 'put ''ciIsbnVsbCxnZSksdy5Xb3JrYm9vayYmdy5Xb3JrYm9vay5Qcm90ZWN0aW9uJiYoZWVbZWUubGVuZ3RoXT1mdW5jdGlvbiBDVih3KXt2YXIgUD17fTtyZXR1cm4gdy5sb2NrU3RydWN0dXJlJiYoUC5sb2NrU3RydWN0dXJlPTEpLHcubG9ja1dpbmRvd3MmJihQLmxvY2tXaW5kb3dzPTEpLHcu''@;'; put 'put ''ZW5jcnlwdGlvbiYmKHcuZW5jcnlwdGlvbi5hbGdvJiYoUC53b3JrYm9va0FsZ29yaXRobU5hbWU9dy5lbmNyeXB0aW9uLmFsZ28pLHcuZW5jcnlwdGlvbi5oYXNoJiYoUC53b3JrYm9va0hhc2hWYWx1ZT13LmVuY3J5cHRpb24uaGFzaCksdy5lbmNyeXB0aW9uLnNhbHQmJihQLndvcmtib29r''@;'; put 'put ''U2FsdFZhbHVlPXcuZW5jcnlwdGlvbi5zYWx0KSx3LmVuY3J5cHRpb24uc3BpbiYmKFAud29ya2Jvb2tTcGluQ291bnQ9dy5lbmNyeXB0aW9uLnNwaW4pKSxNcigid29ya2Jvb2tQcm90ZWN0aW9uIixudWxsLFApfSh3Lldvcmtib29rLlByb3RlY3Rpb24pKTt2YXIgX2U9dy5Xb3JrYm9vayYm''@;'; put 'put ''dy5Xb3JrYm9vay5TaGVldHN8fFtdLHZlPTA7aWYoX2UmJl9lWzBdJiZfZVswXS5IaWRkZW4pe2ZvcihlZVtlZS5sZW5ndGhdPSI8Ym9va1ZpZXdzPiIsdmU9MDt2ZSE9dy5TaGVldE5hbWVzLmxlbmd0aCYmX2VbdmVdJiZfZVt2ZV0uSGlkZGVuOysrdmUpO3ZlPT13LlNoZWV0TmFtZXMubGVu''@;'; put 'put ''Z3RoJiYodmU9MCksZWVbZWUubGVuZ3RoXT0nPHdvcmtib29rVmlldyBmaXJzdFNoZWV0PSInK3ZlKyciIGFjdGl2ZVRhYj0iJyt2ZSsnIi8+JyxlZVtlZS5sZW5ndGhdPSI8L2Jvb2tWaWV3cz4ifWZvcihlZVtlZS5sZW5ndGhdPSI8c2hlZXRzPiIsdmU9MDt2ZSE9dy5TaGVldE5hbWVzLmxl''@;'; put 'put ''bmd0aDsrK3ZlKXt2YXIgTWU9e25hbWU6QnIody5TaGVldE5hbWVzW3ZlXS5zbGljZSgwLDMxKSl9O2lmKE1lLnNoZWV0SWQ9IiIrKHZlKzEpLE1lWyJyOmlkIl09InJJZCIrKHZlKzEpLF9lW3ZlXSlzd2l0Y2goX2VbdmVdLkhpZGRlbil7Y2FzZSAxOk1lLnN0YXRlPSJoaWRkZW4iO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjpNZS5zdGF0ZT0idmVyeUhpZGRlbiJ9ZWVbZWUubGVuZ3RoXT1Ncigic2hlZXQiLG51bGwsTWUpfXJldHVybiBlZVtlZS5sZW5ndGhdPSI8L3NoZWV0cz4iLHcuRXh0ZXJuYWxXQiYmdy5FeHRlcm5hbFdCLmxlbmd0aCYmKGVlW2VlLmxlbmd0aF09IjxleHRlcm5hbFJlZmVyZW5j''@;'; put 'put ''ZXM+Iiwody5FeHRlcm5hbFdCfHxbXSkuZm9yRWFjaChmdW5jdGlvbihqZSxVZSl7dmFyIFhlPUdvKEQud2JyZWxzLC0xLCJleHRlcm5hbExpbmtzL2V4dGVybmFsTGluayIrKFVlKzEpKyIueG1sIixOaS5YTElOSyk7ZWVbZWUubGVuZ3RoXT0nPGV4dGVybmFsUmVmZXJlbmNlIHI6aWQ9InJJ''@;'; put 'put ''ZCcrWGUrJyIvPid9KSxlZVtlZS5sZW5ndGhdPSI8L2V4dGVybmFsUmVmZXJlbmNlcz4iKSxvZSYmKGVlW2VlLmxlbmd0aF09IjxkZWZpbmVkTmFtZXM+Iix3Lldvcmtib29rJiZ3Lldvcmtib29rLk5hbWVzJiZ3Lldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24oamUpe3ZhciBVZT17''@;'; put 'put ''bmFtZTpqZS5OYW1lfTtqZS5Db21tZW50JiYoVWUuY29tbWVudD1qZS5Db21tZW50KSxudWxsIT1qZS5TaGVldCYmKFVlLmxvY2FsU2hlZXRJZD0iIitqZS5TaGVldCksamUuSGlkZGVuJiYoVWUuaGlkZGVuPSIxIiksamUuUmVmJiYoZWVbZWUubGVuZ3RoXT1NcigiZGVmaW5lZE5hbWUiLEJy''@;'; put 'put ''KGplLlJlZiksVWUpKX0pLGVlW2VlLmxlbmd0aF09IjwvZGVmaW5lZE5hbWVzPiIpLEQmJkQucGl2b3RzJiZELnBpdm90cy5sZW5ndGg+MCYmKGVlLnB1c2goIjxwaXZvdENhY2hlcz4iKSxELnBpdm90cy5mb3JFYWNoKGZ1bmN0aW9uKGplLFVlKXtlZS5wdXNoKCc8cGl2b3RDYWNoZSBjYWNo''@;'; put 'put ''ZUlkPSInKyhVZSsxKSsnIiByOmlkPSJySWQnK2plWzJdKyciLz4nKX0pLGVlLnB1c2goIjwvcGl2b3RDYWNoZXM+IikpLGVlLmxlbmd0aD4yJiYoZWVbZWUubGVuZ3RoXT0iPC93b3JrYm9vaz4iLGVlWzFdPWVlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxlZS5qb2luKCIiKX1mdW5jdGlvbiBN''@;'; put 'put ''Vih3LFApe3JldHVybiBQfHwoUD1wcigxMjcpKSxQLndyaXRlX3NoaWZ0KDQsdy5IaWRkZW4pLFAud3JpdGVfc2hpZnQoNCx3LmlUYWJJRCksanUody5zdHJSZWxJRCxQKSxjdSh3Lm5hbWUuc2xpY2UoMCwzMSksUCksUC5sZW5ndGg+UC5sP1Auc2xpY2UoMCxQLmwpOlB9ZnVuY3Rpb24gQXco''@;'; put 'put ''dyxQKXt2YXIgRD17fTtyZXR1cm4gdy5yZWFkX3NoaWZ0KDQpLEQuQXJjaElEPXcucmVhZF9zaGlmdCg0KSx3LmwrPVAtOCxEfWZ1bmN0aW9uIHhWKHcsUCl7dmFyIEQ9QXUoKTtyZXR1cm4gaGkoRCwiQnJ0QmVnaW5Cb29rIiksaGkoRCwiQnJ0RmlsZVZlcnNpb24iLGZ1bmN0aW9uIE5UKHcs''@;'; put 'put ''UCl7UHx8KFA9cHIoMTI3KSk7Zm9yKHZhciBEPTA7NCE9RDsrK0QpUC53cml0ZV9zaGlmdCg0LDApO3JldHVybiBjdSgiU2hlZXRKUyIsUCksY3UoSC52ZXJzaW9uLFApLGN1KEgudmVyc2lvbixQKSxjdSgiNzI2MiIsUCksUC5sZW5ndGg+UC5sP1Auc2xpY2UoMCxQLmwpOlB9KCkpLGhpKEQs''@;'; put 'put ''IkJydFdiUHJvcCIsZnVuY3Rpb24gRVYodyxQKXtQfHwoUD1wcig3MikpO3ZhciBEPTA7cmV0dXJuIHcmJncuZmlsdGVyUHJpdmFjeSYmKER8PTgpLFAud3JpdGVfc2hpZnQoNCxEKSxQLndyaXRlX3NoaWZ0KDQsMCksTjYodyYmdy5Db2RlTmFtZXx8IlRoaXNXb3JrYm9vayIsUCksUC5zbGlj''@;'; put 'put ''ZSgwLFAubCl9KHcuV29ya2Jvb2smJncuV29ya2Jvb2suV0JQcm9wc3x8bnVsbCkpLGZ1bmN0aW9uIFZUKHcsUCl7aWYoUC5Xb3JrYm9vayYmUC5Xb3JrYm9vay5TaGVldHMpe2Zvcih2YXIgRD1QLldvcmtib29rLlNoZWV0cyxlZT0wLG9lPS0xLGdlPS0xO2VlPEQubGVuZ3RoOysrZWUpIURb''@;'; put 'put ''ZWVdfHwhRFtlZV0uSGlkZGVuJiYtMT09b2U/b2U9ZWU6MT09RFtlZV0uSGlkZGVuJiYtMT09Z2UmJihnZT1lZSk7Z2U+b2V8fChoaSh3LCJCcnRCZWdpbkJvb2tWaWV3cyIpLGhpKHcsIkJydEJvb2tWaWV3IixmdW5jdGlvbiBkZyh3LFApe3JldHVybiBQfHwoUD1wcigyOSkpLFAud3JpdGVf''@;'; put 'put ''c2hpZnQoLTQsMCksUC53cml0ZV9zaGlmdCgtNCw0NjApLFAud3JpdGVfc2hpZnQoNCwyODgwMCksUC53cml0ZV9zaGlmdCg0LDE3NjAwKSxQLndyaXRlX3NoaWZ0KDQsNTAwKSxQLndyaXRlX3NoaWZ0KDQsdyksUC53cml0ZV9zaGlmdCg0LHcpLFAud3JpdGVfc2hpZnQoMSwxMjApLFAubGVu''@;'; put 'put ''Z3RoPlAubD9QLnNsaWNlKDAsUC5sKTpQfShvZSkpLGhpKHcsIkJydEVuZEJvb2tWaWV3cyIpKX19KEQsdyksZnVuY3Rpb24gbHYodyxQKXtoaSh3LCJCcnRCZWdpbkJ1bmRsZVNocyIpO2Zvcih2YXIgRD0wO0QhPVAuU2hlZXROYW1lcy5sZW5ndGg7KytEKWhpKHcsIkJydEJ1bmRsZVNoIixN''@;'; put 'put ''Vih7SGlkZGVuOlAuV29ya2Jvb2smJlAuV29ya2Jvb2suU2hlZXRzJiZQLldvcmtib29rLlNoZWV0c1tEXSYmUC5Xb3JrYm9vay5TaGVldHNbRF0uSGlkZGVufHwwLGlUYWJJRDpEKzEsc3RyUmVsSUQ6InJJZCIrKEQrMSksbmFtZTpQLlNoZWV0TmFtZXNbRF19KSk7aGkodywiQnJ0RW5kQnVu''@;'; put 'put ''ZGxlU2hzIil9KEQsdyksaGkoRCwiQnJ0RW5kQm9vayIpLEQuZW5kKCl9ZnVuY3Rpb24gTFYodyxQLEQsZWUsb2Upe3JldHVybigiLmJpbiI9PT1QLnNsaWNlKC00KT95VjpGTikodyxELGVlLG9lKX1mdW5jdGlvbiBCVCh3LFAsRCxlZSxvZSl7cmV0dXJuKCIuYmluIj09PVAuc2xpY2UoLTQp''@;'; put 'put ''PyRwOllwKSh3LEQsZWUsb2UpfWZ1bmN0aW9uIEZWKHcsUCxEKXtyZXR1cm4oIi5iaW4iPT09UC5zbGljZSgtNCk/dnA6YzgpKHcsRCl9ZnVuY3Rpb24gdHQodyxQLEQpe3JldHVybigiLmJpbiI9PT1QLnNsaWNlKC00KT9aSDp2QSkodyxEKX12YXIgSXc9LyhbXHc6XSspPSgoPzoiKShbXiJd''@;'; put 'put ''KikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZyxSdz0vKFtcdzpdKyk9KCg/OiIpKD86W14iXSopKD86Iil8KD86JykoPzpbXiddKikoPzonKSkvO2Z1bmN0aW9uIENjKHcsUCl7dmFyIEQ9dy5zcGxpdCgvXHMrLyksZWU9W107aWYoUHx8KGVlWzBdPURbMF0pLDE9PT1ELmxlbmd0aClyZXR1''@;'; put 'put ''cm4gZWU7dmFyIGdlLF9lLE1lLG9lPXcubWF0Y2goSXcpO2lmKG9lKWZvcihNZT0wO01lIT1vZS5sZW5ndGg7KytNZSktMT09PShfZT0oZ2U9b2VbTWVdLm1hdGNoKFJ3KSlbMV0uaW5kZXhPZigiOiIpKT9lZVtnZVsxXV09Z2VbMl0uc2xpY2UoMSxnZVsyXS5sZW5ndGgtMSk6ZWVbInhtbG5z''@;'; put 'put ''OiI9PT1nZVsxXS5zbGljZSgwLDYpPyJ4bWxucyIrZ2VbMV0uc2xpY2UoNik6Z2VbMV0uc2xpY2UoX2UrMSldPWdlWzJdLnNsaWNlKDEsZ2VbMl0ubGVuZ3RoLTEpO3JldHVybiBlZX1mdW5jdGlvbiBqVCh3KXt2YXIgRD17fTtpZigxPT09dy5zcGxpdCgvXHMrLykubGVuZ3RoKXJldHVybiBE''@;'; put 'put ''O3ZhciBvZSxnZSx2ZSxlZT13Lm1hdGNoKEl3KTtpZihlZSlmb3IodmU9MDt2ZSE9ZWUubGVuZ3RoOysrdmUpLTE9PT0oZ2U9KG9lPWVlW3ZlXS5tYXRjaChSdykpWzFdLmluZGV4T2YoIjoiKSk/RFtvZVsxXV09b2VbMl0uc2xpY2UoMSxvZVsyXS5sZW5ndGgtMSk6RFsieG1sbnM6Ij09PW9l''@;'; put 'put ''WzFdLnNsaWNlKDAsNik/InhtbG5zIitvZVsxXS5zbGljZSg2KTpvZVsxXS5zbGljZShnZSsxKV09b2VbMl0uc2xpY2UoMSxvZVsyXS5sZW5ndGgtMSk7cmV0dXJuIER9ZnVuY3Rpb24gSFYodyl7dmFyIFA9e307aWYody5EZWZhdWx0Um93SGVpZ2h0KXt2YXIgRD17aHB4OjQqcGFyc2VJbnQo''@;'; put 'put ''dy5EZWZhdWx0Um93SGVpZ2h0KS8zfTtTcChEKSxQLnJvdz1EfWlmKHcuRGVmYXVsdENvbFdpZHRoKXt2YXIgZWU9e3dweDo0KnBhcnNlSW50KHcuRGVmYXVsdENvbFdpZHRoKS8zfTtfYyhlZSksUC5jb2w9ZWV9cmV0dXJuIFB9ZnVuY3Rpb24gUmUodyxQLEQsZWUpe3ZhciBvZT1lZTtzd2l0''@;'; put 'put ''Y2goKERbMF0ubWF0Y2goL2R0OmR0PSIoW1x3Ll0rKSIvKXx8WyIiLCIiXSlbMV0pe2Nhc2UiYm9vbGVhbiI6b2U9X3IoZWUpO2JyZWFrO2Nhc2UiaTIiOmNhc2UiaW50IjpvZT1wYXJzZUludChlZSwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6b2U9cGFyc2VGbG9hdChlZSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJkYXRlIjpjYXNlImRhdGVUaW1lLnR6IjpvZT1QdChlZSk7YnJlYWs7Y2FzZSJpOCI6Y2FzZSJzdHJpbmciOmNhc2UiZml4ZWQiOmNhc2UidXVpZCI6Y2FzZSJiaW4uYmFzZTY0IjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiYmFkIGN1c3Rwcm9wOiIrRFswXSl9d1tF''@;'; put 'put ''cihQKV09b2V9dmFyIHpUPXswOiJOb25lIiwxOiJTaW5nbGUiLDI6IkRvdWJsZSIsMzM6IlNpbmdsZUFjY291bnRpbmciLDM0OiJEb3VibGVBY2NvdW50aW5nIn0seWU9SWUoelQpO2Z1bmN0aW9uIENlKHcsUCxELGVlKXtpZihlZS5jZWxsU3R5bGVzKXtpZihEPUQucmVwbGFjZSgvXHMrL2cs''@;'; put 'put ''IiAiKSxQLkludGVyaW9yKXt2YXIgb2U9UC5JbnRlcmlvcjtvZS5QYXR0ZXJuJiYob2UucGF0dGVyblR5cGU9TG1bb2UuUGF0dGVybl18fG9lLlBhdHRlcm4pLG9lLkNvbG9yJiZvZS5Db2xvci5tYXRjaCgvI1swLTlBLUZhLWZdKi8pJiYob2UuZmdDb2xvcj17cmdiOm9lLkNvbG9yLnNsaWNl''@;'; put 'put ''KDEpfSl9IWZ1bmN0aW9uIFVUKHcpe3cuQm9yZGVycyYmKHcuQm9yZGVycy5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBEPVAuUG9zaXRpb24udG9Mb3dlckNhc2UoKTt3W0RdPXtzdHlsZTp0bihQLkxpbmVTdHlsZSwrUC5XZWlnaHQpLGNvbG9yOntyZ2I6KFAuQ29sb3J8fCIjMDAwMDAwIiku''@;'; put 'put ''c2xpY2UoMSl9fX0pLGRlbGV0ZSB3LkJvcmRlcnMpfShQKTt2YXIgX2UsZ2U9RC5tYXRjaCgvPCg/Olx3KzopP0ZvbnRcc1tePl0qPi8pO2dlJiYoX3IoKF9lPWNuKGdlWzBdKSkuQm9sZCkmJihQLkJvbGQ9ITApLF9yKF9lLkl0YWxpYykmJihQLkl0YWxpYz0hMCksX3IoX2UuU3RyaWtlVGhy''@;'; put 'put ''b3VnaCkmJihQLlN0cmlrZT0hMCksX2UuU2l6ZSYmKFAuU2l6ZT0rX2UuU2l6ZSksUC5Gb250TmFtZT1fZS5Gb250TmFtZT9fZS5Gb250TmFtZToiQXJpYWwiLF9lLlVuZGVybGluZSYmKFAuVW5kZXJsaW5lPXllW19lLlVuZGVybGluZV0pLF9lLkNvbG9yJiYoUC5SR0I9X2UuQ29sb3Iuc2xp''@;'; put 'put ''Y2UoLTYpKSksUC5BbGlnbm1lbnQmJihQLmFsaWdubWVudD17fSxQLkFsaWdubWVudC5WZXJ0aWNhbCYmKFAuYWxpZ25tZW50LnZlcnRpY2FsPVAuQWxpZ25tZW50LlZlcnRpY2FsLnRvTG93ZXJDYXNlKCkpLFAuQWxpZ25tZW50Lkhvcml6b250YWwmJihQLmFsaWdubWVudC5ob3Jpem9udGFs''@;'; put 'put ''PVAuQWxpZ25tZW50Lkhvcml6b250YWwudG9Mb3dlckNhc2UoKSksX3IoUC5BbGlnbm1lbnQuV3JhcFRleHR8fCIwIik/UC5hbGlnbm1lbnQud3JhcFRleHQ9ITA6bnVsbD09UC5BbGlnbm1lbnQuV3JhcFRleHQmJmRlbGV0ZSBQLmFsaWdubWVudC53cmFwVGV4dCxfcihQLkFsaWdubWVudC5T''@;'; put 'put ''aHJpbmtUb0ZpdHx8IjAiKSYmKFAuYWxpZ25tZW50LnNocmlua1RvRml0PSEwKSwrUC5BbGlnbm1lbnQuSW5kZW50JiYoUC5hbGlnbm1lbnQuaW5kZW50PStQLkFsaWdubWVudC5JbmRlbnR8fDApLCtQLkFsaWdubWVudC5Sb3RhdGUmJihQLmFsaWdubWVudC50ZXh0Um90YXRpb249K1AuQWxp''@;'; put 'put ''Z25tZW50LlJvdGF0ZXx8MCkpfXdbUC5JRF09UCwoIkRlZmF1bHQiPT1QLklEfHwiTm9ybWFsIj09UC5OYW1lKSYmaGYoUCl9ZnVuY3Rpb24gdG4odyxQKXtzd2l0Y2godyl7Y2FzZSJOb25lIjpyZXR1cm4ibm9uZSI7Y2FzZSJEYXNoIjpyZXR1cm4iZGFzaGVkIjtjYXNlIkRvdCI6cmV0dXJu''@;'; put 'put ''ImRvdHRlZCI7Y2FzZSJEYXNoRG90IjpyZXR1cm4iZGFzaERvdCI7Y2FzZSJEYXNoRG90RG90IjpyZXR1cm4iZGFzaERvdERvdCI7Y2FzZSJTbGFudERhc2hEb3QiOnJldHVybiJzbGFudERhc2hEb3QiO2Nhc2UiRG91YmxlIjpyZXR1cm4iZG91YmxlIjtjYXNlIkNvbnRpbnVvdXMiOnN3aXRj''@;'; put 'put ''aCgrUHx8MCl7Y2FzZSAwOnJldHVybiJoYWlyIjtjYXNlIDE6cmV0dXJuInRoaW4iO2Nhc2UgMjpyZXR1cm4ibWVkaXVtIjtjYXNlIDM6cmV0dXJuInRoaWNrIn1yZXR1cm4idGhpbiJ9cmV0dXJuIHd9ZnVuY3Rpb24gWlQodyxQLEQsZWUsb2UsZ2UsX2UsdmUsTWUsamUpe3ZhciBVZT0iR2Vu''@;'; put 'put ''ZXJhbCIsWGU9ZWUuU3R5bGVJRCxpdD17fTtqZT1qZXx8e307dmFyIGZ0PVtdLE10PTA7Zm9yKHZvaWQgMD09PVhlJiZ2ZSYmKFhlPXZlLlN0eWxlSUQpLHZvaWQgMD09PVhlJiZfZSYmKFhlPV9lLlN0eWxlSUQpO3ZvaWQgMCE9PWdlW1hlXTspe3ZhciB1dD1nZVtYZV07aWYoIkdlbmVyYWwi''@;'; put 'put ''PT1VZSYmdXQubmYmJihVZT1nZVtYZV0ubmYpLHV0LkludGVyaW9yJiZmdC5wdXNoKGdlW1hlXS5JbnRlcmlvciksdXQuYWxpZ25tZW50JiYoaXQuYWxpZ25tZW50fHwoaXQuYWxpZ25tZW50PUp0KHV0LmFsaWdubWVudCkpKSxudWxsPT1pdC5ib2xkJiZ1dC5Cb2xkJiYoaXQuYm9sZD0hMCks''@;'; put 'put ''bnVsbD09aXQuaXRhbGljJiZ1dC5JdGFsaWMmJihpdC5pdGFsaWM9ITApLG51bGw9PWl0LnN0cmlrZSYmdXQuU3RyaWtlJiYoaXQuc3RyaWtlPSEwKSxudWxsPT1pdC5zeiYmdXQuU2l6ZSYmKGl0LnN6PXV0LlNpemUpLG51bGw9PWl0Lm5hbWUmJnV0LkZvbnROYW1lJiYoaXQubmFtZT11dC5G''@;'; put 'put ''b250TmFtZSksbnVsbD09aXQudW5kZXJsaW5lJiZ1dC5VbmRlcmxpbmUmJihpdC51bmRlcmxpbmU9dXQuVW5kZXJsaW5lKSxudWxsPT1pdC5jb2xvciYmdXQuUkdCJiYoaXQuY29sb3I9e3JnYjp1dC5SR0J9KSxbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24oVHQpe251bGw9PWl0W1R0XSYmdXRbVHRdJiYoaXRbVHRdPUp0KHV0W1R0XSkpfSksIkRlZmF1bHQiPT1YZSlicmVhaztYZT11dC5QYXJlbnR8fCJEZWZhdWx0In1pdC5uYW1lfHwoaXQubmFtZT1nZS5EZWZhdWx0JiZnZS5EZWZhdWx0LkZvbnROYW1lfHwiQXJpYWwiKSxpdC5zenx8KGl0''@;'; put 'put ''LnN6PWdlLkRlZmF1bHQmJmdlLkRlZmF1bHQuU2l6ZXx8MTIpO3ZhciB3dD0iIjtpZih3fHxlZS5Gb3JtdWxhfHwiU3RyaW5nIj09RC5UeXBlfHwiTnVtYmVyIj09RC5UeXBlKXN3aXRjaChELlR5cGUpe2Nhc2UiQm9vbGVhbiI6ZWUudD0iYiIsZWUudj1fcih3KTticmVhaztjYXNlIlN0cmlu''@;'; put 'put ''ZyI6ZWUudD0icyIsd3Q9WGkoRXIodykpLGVlLnY9dy5pbmRleE9mKCI8Iik+LTE/RXIoUHx8dykucmVwbGFjZSgvPFteXSo/Pi9nLCIiKTp3dCx3LmluZGV4T2YoIjwiKT4tMSYmKGVlLlI9WWMuaHRtbF90b19ycyhFcih3KSkpO2JyZWFrO2Nhc2UiRGF0ZVRpbWUiOiJaIiE9dy5zbGljZSgt''@;'; put 'put ''MSkmJih3Kz0iWiIpLGVlLnY9KFB0KHcpLW5ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzApKSkvODY0ZTUsZWUudiE9ZWUudj9lZS52PUVyKHcpOmVlLnY8NjAmJihlZS52PWVlLnYtMSksKCFVZXx8IkdlbmVyYWwiPT1VZSkmJihVZT0ieXl5eS1tbS1kZCIpO2Nhc2UiTnVtYmVyIjp2b2lk''@;'; put 'put ''IDA9PT1lZS52JiYoZWUudj0rdyksZWUudHx8KGVlLnQ9Im4iKTticmVhaztjYXNlIkVycm9yIjplZS50PSJlIixlZS52PXFsW3ddLCExIT09amUuY2VsbFRleHQmJihlZS53PXcpO2JyZWFrO2RlZmF1bHQ6IiI9PXcmJiIiPT1QP2VlLnQ9InoiOihlZS50PSJzIix3dD1YaShFcih3KSksZWUu''@;'; put 'put ''dj13LmluZGV4T2YoIjwiKT4tMT9FcihQfHx3KS5yZXBsYWNlKC88W15dKj8+L2csIiIpOnd0LHcuaW5kZXhPZigiPCIpPi0xJiYoZWUuUj1ZYy5odG1sX3RvX3JzKEVyKHcpKSkpfWVsc2UgZWUudD0ieiIsZGVsZXRlIGVlLnY7aWYoZnVuY3Rpb24gTHcodyxQLEQpe2lmKCJ6IiE9PXcudCl7''@;'; put 'put ''aWYoIUR8fCExIT09RC5jZWxsVGV4dCl0cnl7dy53PSJlIj09PXcudD93Lnd8fG5hW3cudl06IkdlbmVyYWwiPT09UD8ibiI9PT13LnQ/KDB8dy52KT09PXcudj9TLl9nZW5lcmFsX2ludCh3LnYpOlMuX2dlbmVyYWxfbnVtKHcudik6Uy5fZ2VuZXJhbCh3LnYpOmZ1bmN0aW9uIFFpKHcsUCl7''@;'; put 'put ''dmFyIEQ9cmVbd118fEVyKHcpO3JldHVybiJHZW5lcmFsIj09PUQ/Uy5fZ2VuZXJhbChQKTpTLmZvcm1hdChELFApfShQfHwiR2VuZXJhbCIsdy52KX1jYXRjaChnZSl7aWYoRC5XVEYpdGhyb3cgZ2V9dHJ5e3ZhciBlZT1yZVtQXXx8UHx8IkdlbmVyYWwiO2lmKEQuY2VsbE5GJiYody56PWVl''@;'; put 'put ''KSxELmNlbGxEYXRlcyYmIm4iPT13LnQmJlMuaXNfZGF0ZShlZSkpe3ZhciBvZT1TLnBhcnNlX2RhdGVfY29kZSh3LnYpO29lJiYody50PSJkIix3LnY9bmV3IERhdGUob2UueSxvZS5tLTEsb2UuZCxvZS5ILG9lLk0sb2UuUyxvZS51KSl9fWNhdGNoKGdlKXtpZihELldURil0aHJvdyBnZX19''@;'; put 'put ''fShlZSxVZSxqZSksITEhPT1qZS5jZWxsRm9ybXVsYSlpZihlZS5Gb3JtdWxhKXt2YXIgSHQ9RXIoZWUuRm9ybXVsYSk7NjE9PUh0LmNoYXJDb2RlQXQoMCkmJihIdD1IdC5zbGljZSgxKSksZWUuZj1BMihIdCxvZSksZGVsZXRlIGVlLkZvcm11bGEsIlJDIj09ZWUuQXJyYXlSYW5nZT9lZS5G''@;'; put 'put ''PUEyKCJSQzpSQyIsb2UpOmVlLkFycmF5UmFuZ2UmJihlZS5GPUEyKGVlLkFycmF5UmFuZ2Usb2UpLE1lLnB1c2goW1BpKGVlLkYpLGVlLkZdKSl9ZWxzZSBmb3IoTXQ9MDtNdDxNZS5sZW5ndGg7KytNdClvZS5yPj1NZVtNdF1bMF0ucy5yJiZvZS5yPD1NZVtNdF1bMF0uZS5yJiZvZS5jPj1N''@;'; put 'put ''ZVtNdF1bMF0ucy5jJiZvZS5jPD1NZVtNdF1bMF0uZS5jJiYoZWUuRj1NZVtNdF1bMV0pO2lmKGplLmNlbGxTdHlsZXMmJihmdC5mb3JFYWNoKGZ1bmN0aW9uKFR0KXshaXQucGF0dGVyblR5cGUmJlR0LnBhdHRlcm5UeXBlJiYoaXQucGF0dGVyblR5cGU9VHQucGF0dGVyblR5cGUpLCFpdC5m''@;'; put 'put ''Z0NvbG9yJiZUdC5mZ0NvbG9yJiYoaXQuZmdDb2xvcj1UdC5mZ0NvbG9yKX0pLGVlLnM9aXQpLHZvaWQgMCE9PWVlLlN0eWxlSUQmJihlZS5peGZlPWVlLlN0eWxlSUQpLGVlLlImJmVlLnMpe3ZhciBrdD1KdChlZS5zKTtkZWxldGUga3QuYm9sZCxkZWxldGUga3QuaXRhbGljLGRlbGV0ZSBr''@;'; put 'put ''dC51bmRlcmxpbmUsZGVsZXRlIGt0LnN0cmlrZSxlZS5SLmZvckVhY2goZnVuY3Rpb24oVHQpe1R0LnM9TnQoSnQoa3QpLFR0LnMpfSl9fWZ1bmN0aW9uIE5WKHcpe3cudD13LnZ8fCIiLHcudD13LnQucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2csIlxuIiksdy52PXcudz13''@;'; put 'put ''Lml4ZmU9dm9pZCAwfWZ1bmN0aW9uIFB3KHcpe2lmKGRlJiZCdWZmZXIuaXNCdWZmZXIodykpcmV0dXJuIHcudG9TdHJpbmcoInV0ZjgiKTtpZigic3RyaW5nIj09dHlwZW9mIHcpcmV0dXJuIHc7aWYodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ3IGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1''@;'; put 'put ''cm4gRmkoRihDKHcpKSk7dGhyb3cgbmV3IEVycm9yKCJCYWQgaW5wdXQgZm9ybWF0OiBleHBlY3RlZCBCdWZmZXIgb3Igc3RyaW5nIil9dmFyIFdyPS88KFwvPykoW15ccz8+PCFcLzpdKjp8KShbXlxzPzw+OlwvXFtdKykoPzpbXHM/OjxcL11bXj5dKik/Pi9nbTtmdW5jdGlvbiBHcih3LFAp''@;'; put 'put ''e3ZhciBEPVB8fHt9LGVlPVUoUHcodykpOygiYmluYXJ5Ij09RC50eXBlfHwiYXJyYXkiPT1ELnR5cGV8fCJiYXNlNjQiPT1ELnR5cGUpJiYoZWU9dHlwZW9mIGNwdGFibGU8InUiP2NwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLFYoZWUpKTpGaShlZSkpO3ZhciBvZT1lZS5zbGljZSgwLDEw''@;'; put 'put ''MjQpLnRvTG93ZXJDYXNlKCksZ2U9ITE7aWYoKDEwMjMmb2UuaW5kZXhPZigiPiIpKT5NYXRoLm1pbigxMDIzJm9lLmluZGV4T2YoIiwiKSwxMDIzJm9lLmluZGV4T2YoIjsiKSkpe3ZhciBfZT1KdChEKTtyZXR1cm4gX2UudHlwZT0ic3RyaW5nIix1Zi50b193b3JrYm9vayhlZSxfZSl9aWYo''@;'; put 'put ''LTE9PW9lLmluZGV4T2YoIjw/eG1sIikmJlsiaHRtbCIsInRhYmxlIiwiaGVhZCIsIm1ldGEiLCJzY3JpcHQiLCJzdHlsZSIsImRpdiJdLmZvckVhY2goZnVuY3Rpb24odWMpe29lLmluZGV4T2YoIjwiK3VjKT49MCYmKGdlPSEwKX0pLGdlKXJldHVybiBZYy50b193b3JrYm9vayhlZSxEKTt2''@;'; put 'put ''YXIgdmUsamUsTWU9W107bnVsbCE9bmUmJm51bGw9PUQuZGVuc2UmJihELmRlbnNlPW5lKTt2YXIgZnIsVWU9e30sWGU9W10saXQ9RC5kZW5zZT9bXTp7fSxmdD0iIixNdD17fSx1dD17fSx3dD17fSxIdD1DYygnPERhdGEgc3M6VHlwZT0iU3RyaW5nIj4nKSxrdD0wLFR0PTAsWXQ9MCxnbj17''@;'; put 'put ''czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxxbj17fSxmbj17fSxLbj0iIix6bj0wLE9uPVtdLGVyPXt9LHRyPXt9LFluPTAsanI9W10sbGk9e30sRWk9W10sSWk9e30sdGk9W10sRG49ITEsdnI9W10scnI9W10seG49e30sbXI9MCxDaT0wLHpyPXtTaGVldHM6W10sV0JQcm9wczp7ZGF0''@;'; put 'put ''ZTE5MDQ6ITF9fSx6aT17fTtXci5sYXN0SW5kZXg9MCxlZT1lZS5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIik7Zm9yKHZhciB3bz0iIjt2ZT1Xci5leGVjKGVlKTspc3dpdGNoKHZlWzNdPSh3bz12ZVszXSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJkYXRhIjppZigiZGF0YSI9PXdv''@;'; put 'put ''KXtpZigiLyI9PT12ZVsxXSl7aWYoKGplPU1lLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK2plLmpvaW4oInwiKSl9ZWxzZSIvIiE9PXZlWzBdLmNoYXJBdCh2ZVswXS5sZW5ndGgtMikmJk1lLnB1c2goW3ZlWzNdLCEwXSk7YnJlYWt9aWYoTWVbTWUu''@;'; put 'put ''bGVuZ3RoLTFdWzFdKWJyZWFrOyIvIj09PXZlWzFdP1pUKGVlLnNsaWNlKGt0LHZlLmluZGV4KSxLbixIdCwiY29tbWVudCI9PU1lW01lLmxlbmd0aC0xXVswXT9JaTp1dCx7YzpUdCxyOll0fSxxbix0aVtUdF0sd3QsdnIsRCk6KEtuPSIiLEh0PUNjKHZlWzBdKSxrdD12ZS5pbmRleCt2ZVsw''@;'; put 'put ''XS5sZW5ndGgpO2JyZWFrO2Nhc2UiY2VsbCI6aWYoIi8iPT09dmVbMV18fCIvPiI9PT12ZVswXS5zbGljZSgtMikpe2lmKCIvPiI9PT12ZVswXS5zbGljZSgtMikpe2lmKCh1dD1qVCh2ZVswXSkpLkluZGV4JiYoVHQ9K3V0LkluZGV4LTEpLFR0PGduLnMuYyYmKGduLnMuYz1UdCksVHQ+Z24u''@;'; put 'put ''ZS5jJiYoZ24uZS5jPVR0KSxFaT1bXSwhRC5zaGVldFN0dWJzKXsrK1R0O2JyZWFrfVpUKCIiLCIiLHt9LCJjb21tZW50Ij09TWVbTWUubGVuZ3RoLTFdWzBdP0lpOnV0LHtjOlR0LHI6WXR9LHFuLHRpW1R0XSx3dCx2cixEKX1pZihFaS5sZW5ndGg+MCYmKHV0LmM9RWkpLCghRC5zaGVldFJv''@;'; put 'put ''d3N8fEQuc2hlZXRSb3dzPll0KSYmKHZvaWQgMCE9PXV0LnZ8fEQuc2hlZXRTdHVicykmJihELmRlbnNlPyhpdFtZdF18fChpdFtZdF09W10pLGl0W1l0XVtUdF09dXQpOml0W0JhKFR0KStWYShZdCldPXV0KSx1dC5IUmVmJiYodXQubD17VGFyZ2V0OkVyKHV0LkhSZWYpfSx1dC5IUmVmU2Ny''@;'; put 'put ''ZWVuVGlwJiYodXQubC5Ub29sdGlwPXV0LkhSZWZTY3JlZW5UaXApLGRlbGV0ZSB1dC5IUmVmLGRlbGV0ZSB1dC5IUmVmU2NyZWVuVGlwKSwodXQuTWVyZ2VBY3Jvc3N8fHV0Lk1lcmdlRG93bikmJihtcj1UdCsoMHxwYXJzZUludCh1dC5NZXJnZUFjcm9zcywxMCkpLENpPVl0KygwfHBhcnNl''@;'; put 'put ''SW50KHV0Lk1lcmdlRG93biwxMCkpLChtcj5UdHx8Q2k+WXQpJiZPbi5wdXNoKHtzOntjOlR0LHI6WXR9LGU6e2M6bXIscjpDaX19KSksRC5zaGVldFN0dWJzKWlmKHV0Lk1lcmdlQWNyb3NzfHx1dC5NZXJnZURvd24pe2Zvcih2YXIgT2k9VHQ7T2k8PW1yOysrT2kpZm9yKHZhciBYbz1ZdDtY''@;'; put 'put ''bzw9Q2k7KytYbykoT2k+VHR8fFhvPll0KSYmKEQuZGVuc2U/KGl0W1hvXXx8KGl0W1hvXT1bXSksaXRbWG9dW09pXT17dDoieiJ9KTppdFtCYShPaSkrVmEoWG8pXT17dDoieiJ9KTtUdD1tcisxfWVsc2UrK1R0O2Vsc2UgdXQuTWVyZ2VBY3Jvc3M/VHQ9bXIrMTorK1R0fWVsc2UodXQ9alQo''@;'; put 'put ''dmVbMF0pKS5JbmRleCYmKFR0PSt1dC5JbmRleC0xKSxUdDxnbi5zLmMmJihnbi5zLmM9VHQpLFR0PmduLmUuYyYmKGduLmUuYz1UdCksIi8+Ij09PXZlWzBdLnNsaWNlKC0yKSYmKytUdCxFaT1bXTticmVhaztjYXNlInJvdyI6Ii8iPT09dmVbMV18fCIvPiI9PT12ZVswXS5zbGljZSgtMik/''@;'; put 'put ''KFl0PGduLnMuciYmKGduLnMucj1ZdCksWXQ+Z24uZS5yJiYoZ24uZS5yPVl0KSwiLz4iPT09dmVbMF0uc2xpY2UoLTIpJiYod3Q9Q2ModmVbMF0pKS5JbmRleCYmKFl0PSt3dC5JbmRleC0xKSxUdD0wLCsrWXQpOigod3Q9Q2ModmVbMF0pKS5JbmRleCYmKFl0PSt3dC5JbmRleC0xKSx4bj17''@;'; put 'put ''fSwoIjAiPT13dC5BdXRvRml0SGVpZ2h0fHx3dC5IZWlnaHQpJiYoeG4uaHB0PXBhcnNlRmxvYXQod3QuSGVpZ2h0KSx4bi5ocHg9ZGYoeG4uaHB0KSxycltZdF09eG4pLCIxIj09d3QuSGlkZGVuJiYoeG4uaGlkZGVuPSEwLHJyW1l0XT14bikpO2JyZWFrO2Nhc2Uid29ya3NoZWV0IjppZigi''@;'; put 'put ''LyI9PT12ZVsxXSl7aWYoKGplPU1lLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK2plLmpvaW4oInwiKSk7WGUucHVzaChmdCksZ24ucy5yPD1nbi5lLnImJmduLnMuYzw9Z24uZS5jJiYoaXRbIiFyZWYiXT1WbyhnbiksRC5zaGVldFJvd3MmJkQuc2hl''@;'; put 'put ''ZXRSb3dzPD1nbi5lLnImJihpdFsiIWZ1bGxyZWYiXT1pdFsiIXJlZiJdLGduLmUucj1ELnNoZWV0Um93cy0xLGl0WyIhcmVmIl09Vm8oZ24pKSksT24ubGVuZ3RoJiYoaXRbIiFtZXJnZXMiXT1PbiksdGkubGVuZ3RoPjAmJihpdFsiIWNvbHMiXT10aSkscnIubGVuZ3RoPjAmJihpdFsiIXJv''@;'; put 'put ''d3MiXT1yciksTXQmJihpdFsiIXNoZWV0Rm9ybWF0Il09SFYoTXQpKSxVZVtmdF09aXR9ZWxzZSBnbj17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxZdD1UdD0wLE1lLnB1c2goW3ZlWzNdLCExXSksamU9Q2ModmVbMF0pLGZ0PUVyKGplLk5hbWUpLGl0PUQuZGVuc2U/W106e30sT249''@;'; put 'put ''W10sdnI9W10scnI9W10senIuU2hlZXRzLnB1c2goemk9e25hbWU6ZnQsSGlkZGVuOjB9KTticmVhaztjYXNlInRhYmxlIjppZigiLyI9PT12ZVsxXSl7aWYoKGplPU1lLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK2plLmpvaW4oInwiKSl9ZWxzZXtp''@;'; put 'put ''ZigiLz4iPT12ZVswXS5zbGljZSgtMikpYnJlYWs7TXQ9Q2ModmVbMF0pLE1lLnB1c2goW3ZlWzNdLCExXSksdGk9W10sRG49ITF9YnJlYWs7Y2FzZSJzdHlsZSI6Ii8iPT09dmVbMV0/Q2UocW4sZm4sS24sRCk6KGZuPUNjKHZlWzBdKSxLbj0iIik7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQi''@;'; put 'put ''OmZuLm5mPUVyKENjKHZlWzBdKS5Gb3JtYXR8fCJHZW5lcmFsIikscmVbZm4ubmZdJiYoZm4ubmY9cmVbZm4ubmZdKTtmb3IodmFyIGZvPTA7MzkyIT1mbyYmUy5fdGFibGVbZm9dIT1mbi5uZjsrK2ZvKTtpZigzOTI9PWZvKWZvcihmbz01NzszOTIhPWZvOysrZm8paWYobnVsbD09Uy5fdGFi''@;'; put 'put ''bGVbZm9dKXtTLmxvYWQoZm4ubmYsZm8pO2JyZWFrfWJyZWFrO2Nhc2UiY29sdW1uIjppZigidGFibGUiIT09TWVbTWUubGVuZ3RoLTFdWzBdfHwiLyI9PT12ZVsxXSlicmVhaztpZigoZnI9Q2ModmVbMF0pKS5IaWRkZW4mJihmci5oaWRkZW49ITAsZGVsZXRlIGZyLkhpZGRlbiksZnIuV2lk''@;'; put 'put ''dGg/ZnIud3B4PTQqcGFyc2VJbnQoZnIuV2lkdGgsMTApLzM6K2ZyLkF1dG9GaXRXaWR0aCYmKGZyLmF1dG89MSksIURuJiZmci53cHg+MTApe0RuPSEwLF9zPUJ4O2Zvcih2YXIgUm89MDtSbzx0aS5sZW5ndGg7KytSbyl0aVtSb10mJl9jKHRpW1JvXSl9RG4mJl9jKGZyKSx0aVtmci5JbmRl''@;'; put 'put ''eC0xfHx0aS5sZW5ndGhdPWZyO2Zvcih2YXIgVG89MDtUbzwrZnIuU3BhbjsrK1RvKXRpW3RpLmxlbmd0aF09SnQoZnIpO2JyZWFrO2Nhc2UibmFtZWRyYW5nZSI6aWYoIi8iPT09dmVbMV0pYnJlYWs7enIuTmFtZXN8fCh6ci5OYW1lcz1bXSk7dmFyIG1pPWNuKHZlWzBdKSxybD17TmFtZTpt''@;'; put 'put ''aS5OYW1lLFJlZjpBMihtaS5SZWZlcnNUby5zbGljZSgxKSx7cjowLGM6MH0pfTt6ci5TaGVldHMubGVuZ3RoPjAmJihybC5TaGVldD16ci5TaGVldHMubGVuZ3RoLTEpLHpyLk5hbWVzLnB1c2gocmwpO2JyZWFrO2Nhc2UibmFtZWRjZWxsIjpjYXNlImIiOmNhc2UiaSI6Y2FzZSJ1IjpjYXNl''@;'; put 'put ''InMiOmNhc2UiZW0iOmNhc2UiaDIiOmNhc2UiaDMiOmNhc2Uic3ViIjpjYXNlInN1cCI6Y2FzZSJzcGFuIjpjYXNlInByb3RlY3Rpb24iOmNhc2UicGFyYWdyYXBocyI6Y2FzZSJuYW1lIjpicmVhaztjYXNlImFsaWdubWVudCI6aWYoIUQuY2VsbFN0eWxlc3x8Ii8iPT09dmVbMV0pYnJlYWs7''@;'; put 'put ''Zm4uQWxpZ25tZW50PUNjKHZlWzBdKTticmVhaztjYXNlImJvcmRlcnMiOiIvIiE9PXZlWzFdJiYoZm4uQm9yZGVycz1bXSk7YnJlYWs7Y2FzZSJib3JkZXIiOmlmKCIvIj09PXZlWzFdKWJyZWFrO2ZuLkJvcmRlcnN8fChmbi5Cb3JkZXJzPVtdKSxmbi5Cb3JkZXJzLnB1c2goQ2ModmVbMF0p''@;'; put 'put ''KTticmVhaztjYXNlImZvbnQiOmlmKCIvPiI9PT12ZVswXS5zbGljZSgtMikpe0tuKz12ZVswXTticmVha30iLyI9PT12ZVsxXT9Lbis9ZWUuc2xpY2Uoem4sdmUuaW5kZXgrdmVbMF0ubGVuZ3RoKTp6bj12ZS5pbmRleDticmVhaztjYXNlImludGVyaW9yIjppZighRC5jZWxsU3R5bGVzfHwi''@;'; put 'put ''LyI9PT12ZVsxXSlicmVhaztmbi5JbnRlcmlvcj1DYyh2ZVswXSk7YnJlYWs7Y2FzZSJhdXRob3IiOmNhc2UidGl0bGUiOmNhc2UiZGVzY3JpcHRpb24iOmNhc2UiY3JlYXRlZCI6Y2FzZSJrZXl3b3JkcyI6Y2FzZSJzdWJqZWN0IjpjYXNlImNhdGVnb3J5IjpjYXNlImNvbXBhbnkiOmNhc2Ui''@;'; put 'put ''bGFzdGF1dGhvciI6Y2FzZSJsYXN0c2F2ZWQiOmNhc2UibGFzdHByaW50ZWQiOmNhc2UidmVyc2lvbiI6Y2FzZSJyZXZpc2lvbiI6Y2FzZSJ0b3RhbHRpbWUiOmNhc2UiaHlwZXJsaW5rYmFzZSI6Y2FzZSJtYW5hZ2VyIjpjYXNlImNvbnRlbnRzdGF0dXMiOmNhc2UiaWRlbnRpZmllciI6Y2Fz''@;'; put 'put ''ZSJsYW5ndWFnZSI6Y2FzZSJhcHBuYW1lIjppZigiLz4iPT09dmVbMF0uc2xpY2UoLTIpKWJyZWFrOyIvIj09PXZlWzFdP1hmKGVyLHdvLGVlLnNsaWNlKFluLHZlLmluZGV4KSk6WW49dmUuaW5kZXgrdmVbMF0ubGVuZ3RoO2JyZWFrO2Nhc2Uic3R5bGVzIjpjYXNlIndvcmtib29rIjppZigi''@;'; put 'put ''LyI9PT12ZVsxXSl7aWYoKGplPU1lLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK2plLmpvaW4oInwiKSl9ZWxzZSBNZS5wdXNoKFt2ZVszXSwhMV0pO2JyZWFrO2Nhc2UiY29tbWVudCI6aWYoIi8iPT09dmVbMV0pe2lmKChqZT1NZS5wb3AoKSlbMF0h''@;'; put 'put ''PT12ZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitqZS5qb2luKCJ8IikpO05WKElpKSxFaS5wdXNoKElpKX1lbHNlIE1lLnB1c2goW3ZlWzNdLCExXSksSWk9e2E6KGplPUNjKHZlWzBdKSkuQXV0aG9yfTticmVhaztjYXNlImF1dG9maWx0ZXIiOmlmKCIvIj09PXZlWzFdKXtp''@;'; put 'put ''ZigoamU9TWUucG9wKCkpWzBdIT09dmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIramUuam9pbigifCIpKX1lbHNlIGlmKCIvIiE9PXZlWzBdLmNoYXJBdCh2ZVswXS5sZW5ndGgtMikpe3ZhciBBbj1DYyh2ZVswXSk7aXRbIiFhdXRvZmlsdGVyIl09e3JlZjpBMihBbi5SYW5n''@;'; put 'put ''ZSkucmVwbGFjZSgvXCQvZywiIil9LE1lLnB1c2goW3ZlWzNdLCEwXSl9YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYoaXRbIiF2YWxpZGF0aW9ucyJdfHwoaXRbIiF2YWxpZGF0aW9ucyJdPVtdKSwiLyI9PT12ZVsxXSl7aWYoKGplPU1lLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiQmFkIHN0YXRlOiAiK2plLmpvaW4oInwiKSl9ZWxzZSIvIiE9PXZlWzBdLmNoYXJBdCh2ZVswXS5sZW5ndGgtMikmJk1lLnB1c2goW3ZlWzNdLCEwXSksbGk9e307YnJlYWs7Y2FzZSJwaXhlbHNwZXJpbmNoIjppZigiLyI9PT12ZVsxXSl7dmFyIEFhPStlZS5zbGljZShrdCx2''@;'; put 'put ''ZS5pbmRleCk7KDcyPT1BYXx8OTY9PUFhKSYmcDgoQWEpfWVsc2Uga3Q9dmUuaW5kZXgrdmVbMF0ubGVuZ3RoO2JyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6Y2FzZSJkb2N1bWVudHByb3BlcnRpZXMiOmNhc2UiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIjpjYXNlIm9mZmljZWRvY3Vt''@;'; put 'put ''ZW50c2V0dGluZ3MiOmNhc2UicGl2b3R0YWJsZSI6Y2FzZSJwaXZvdGNhY2hlIjpjYXNlIm5hbWVzIjpjYXNlIm1hcGluZm8iOmNhc2UicGFnZWJyZWFrcyI6Y2FzZSJxdWVyeXRhYmxlIjpjYXNlInNvcnRpbmciOmNhc2Uic2NoZW1hIjpjYXNlImNvbmRpdGlvbmFsZm9ybWF0dGluZyI6Y2Fz''@;'; put 'put ''ZSJzbWFydHRhZ3R5cGUiOmNhc2Uic21hcnR0YWdzIjpjYXNlImV4Y2Vsd29ya2Jvb2siOmNhc2Uid29ya2Jvb2tvcHRpb25zIjpjYXNlIndvcmtzaGVldG9wdGlvbnMiOmlmKCIvIj09PXZlWzFdKXtpZigoamU9TWUucG9wKCkpWzBdIT09dmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3Rh''@;'; put 'put ''dGU6ICIramUuam9pbigifCIpKX1lbHNlIi8iIT09dmVbMF0uY2hhckF0KHZlWzBdLmxlbmd0aC0yKSYmTWUucHVzaChbdmVbM10sITBdKTticmVhaztkZWZhdWx0OmlmKDA9PU1lLmxlbmd0aCYmImRvY3VtZW50Ij09dmVbM118fDA9PU1lLmxlbmd0aCYmInVvZiI9PXZlWzNdKXJldHVybiBV''@;'; put 'put ''dyhlZSxEKTt2YXIgTWE9ITA7c3dpdGNoKE1lW01lLmxlbmd0aC0xXVswXSl7Y2FzZSJvZmZpY2Vkb2N1bWVudHNldHRpbmdzIjpzd2l0Y2godmVbM10pe2Nhc2UiYWxsb3dwbmciOmNhc2UicmVtb3ZlcGVyc29uYWxpbmZvcm1hdGlvbiI6Y2FzZSJkb3dubG9hZGNvbXBvbmVudHMiOmNhc2Ui''@;'; put 'put ''bG9jYXRpb25vZmNvbXBvbmVudHMiOmNhc2UiY29sb3JzIjpjYXNlImNvbG9yIjpjYXNlImluZGV4IjpjYXNlInJnYiI6Y2FzZSJ0YXJnZXRzY3JlZW5zaXplIjpjYXNlInJlYWRvbmx5cmVjb21tZW5kZWQiOmJyZWFrO2RlZmF1bHQ6TWE9ITF9YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25z''@;'; put 'put ''Ijpzd2l0Y2godmVbM10pe2Nhc2UidG9vbGJhciI6Y2FzZSJoaWRlb2ZmaWNlbG9nbyI6Y2FzZSJzcHJlYWRzaGVldGF1dG9maXQiOmNhc2UibGFiZWwiOmNhc2UiY2FwdGlvbiI6Y2FzZSJtYXhoZWlnaHQiOmNhc2UibWF4d2lkdGgiOmNhc2UibmV4dHNoZWV0bnVtYmVyIjpicmVhaztkZWZh''@;'; put 'put ''dWx0Ok1hPSExfWJyZWFrO2Nhc2UiZXhjZWx3b3JrYm9vayI6c3dpdGNoKHZlWzNdKXtjYXNlImRhdGUxOTA0Ijp6ci5XQlByb3BzLmRhdGUxOTA0PSEwO2JyZWFrO2Nhc2Uid2luZG93aGVpZ2h0IjpjYXNlIndpbmRvd3dpZHRoIjpjYXNlIndpbmRvd3RvcHgiOmNhc2Uid2luZG93dG9weSI6''@;'; put 'put ''Y2FzZSJ0YWJyYXRpbyI6Y2FzZSJwcm90ZWN0c3RydWN0dXJlIjpjYXNlInByb3RlY3R3aW5kb3ciOmNhc2UicHJvdGVjdHdpbmRvd3MiOmNhc2UiYWN0aXZlc2hlZXQiOmNhc2UiZGlzcGxheWlua25vdGVzIjpjYXNlImZpcnN0dmlzaWJsZXNoZWV0IjpjYXNlInN1cGJvb2siOmNhc2Uic2hl''@;'; put 'put ''ZXRuYW1lIjpjYXNlInNoZWV0aW5kZXgiOmNhc2Uic2hlZXRpbmRleGZpcnN0IjpjYXNlInNoZWV0aW5kZXhsYXN0IjpjYXNlImRsbCI6Y2FzZSJhY2NlcHRsYWJlbHNpbmZvcm11bGFzIjpjYXNlImRvbm90c2F2ZWxpbmt2YWx1ZXMiOmNhc2UiaXRlcmF0aW9uIjpjYXNlIm1heGl0ZXJhdGlv''@;'; put 'put ''bnMiOmNhc2UibWF4Y2hhbmdlIjpjYXNlInBhdGgiOmNhc2UieGN0IjpjYXNlImNvdW50IjpjYXNlInNlbGVjdGVkc2hlZXRzIjpjYXNlImNhbGN1bGF0aW9uIjpjYXNlInVuY2FsY2VkIjpjYXNlInN0YXJ0dXBwcm9tcHQiOmNhc2UiY3JuIjpjYXNlImV4dGVybm5hbWUiOmNhc2UiZm9ybXVs''@;'; put 'put ''YSI6Y2FzZSJjb2xmaXJzdCI6Y2FzZSJjb2xsYXN0IjpjYXNlIndhbnRhZHZpc2UiOmNhc2UiYm9vbGVhbiI6Y2FzZSJlcnJvciI6Y2FzZSJ0ZXh0IjpjYXNlIm9sZSI6Y2FzZSJub2F1dG9yZWNvdmVyIjpjYXNlInB1Ymxpc2hvYmplY3RzIjpjYXNlImRvbm90Y2FsY3VsYXRlYmVmb3Jlc2F2''@;'; put 'put ''ZSI6Y2FzZSJudW1iZXIiOmNhc2UicmVmbW9kZXIxYzEiOmNhc2UiZW1iZWRzYXZlc21hcnR0YWdzIjpicmVhaztkZWZhdWx0Ok1hPSExfWJyZWFrO2Nhc2Uid29ya2Jvb2tvcHRpb25zIjpzd2l0Y2godmVbM10pe2Nhc2Uib3djdmVyc2lvbiI6Y2FzZSJoZWlnaHQiOmNhc2Uid2lkdGgiOmJy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6TWE9ITF9YnJlYWs7Y2FzZSJ3b3Jrc2hlZXRvcHRpb25zIjpzd2l0Y2godmVbM10pe2Nhc2UidmlzaWJsZSI6aWYoIi8+IiE9PXZlWzBdLnNsaWNlKC0yKSlpZigiLyI9PT12ZVsxXSlzd2l0Y2goZWUuc2xpY2UoWW4sdmUuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjp6''@;'; put 'put ''aS5IaWRkZW49MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6emkuSGlkZGVuPTJ9ZWxzZSBZbj12ZS5pbmRleCt2ZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOml0WyIhbWFyZ2lucyJdfHxJMihpdFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGl0WyIhbWFyZ2lucyJdLmhlYWRl''@;'; put 'put ''cj1jbih2ZVswXSkuTWFyZ2luO2JyZWFrO2Nhc2UiZm9vdGVyIjppdFsiIW1hcmdpbnMiXXx8STIoaXRbIiFtYXJnaW5zIl09e30sInhsbWwiKSxpdFsiIW1hcmdpbnMiXS5mb290ZXI9Y24odmVbMF0pLk1hcmdpbjticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgSXM9Y24odmVbMF0pO2l0''@;'; put 'put ''WyIhbWFyZ2lucyJdfHxJMihpdFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLElzLlRvcCYmKGl0WyIhbWFyZ2lucyJdLnRvcD1Jcy5Ub3ApLElzLkxlZnQmJihpdFsiIW1hcmdpbnMiXS5sZWZ0PUlzLkxlZnQpLElzLlJpZ2h0JiYoaXRbIiFtYXJnaW5zIl0ucmlnaHQ9SXMuUmlnaHQpLElzLkJv''@;'; put 'put ''dHRvbSYmKGl0WyIhbWFyZ2lucyJdLmJvdHRvbT1Jcy5Cb3R0b20pO2JyZWFrO2Nhc2UiZGlzcGxheXJpZ2h0dG9sZWZ0Ijp6ci5WaWV3c3x8KHpyLlZpZXdzPVtdKSx6ci5WaWV3c1swXXx8KHpyLlZpZXdzWzBdPXt9KSx6ci5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5l''@;'; put 'put ''cyI6Y2FzZSJmcm96ZW5ub3NwbGl0IjpjYXNlImFjdGl2ZXJvdyI6Y2FzZSJhY3RpdmVjb2wiOmNhc2UidG9wcm93Ym90dG9tcGFuZSI6Y2FzZSJsZWZ0Y29sdW1ucmlnaHRwYW5lIjpjYXNlInVuc3luY2VkIjpjYXNlInByaW50IjpjYXNlInByaW50ZXJyb3JzIjpjYXNlInBhbmVzIjpjYXNl''@;'; put 'put ''InNjYWxlIjpjYXNlInBhbmUiOmNhc2UibnVtYmVyIjpjYXNlImxheW91dCI6Y2FzZSJwYWdlc2V0dXAiOmNhc2Uic2VsZWN0ZWQiOmNhc2UicHJvdGVjdG9iamVjdHMiOmNhc2UiZW5hYmxlc2VsZWN0aW9uIjpjYXNlInByb3RlY3RzY2VuYXJpb3MiOmNhc2UidmFsaWRwcmludGVyaW5mbyI6''@;'; put 'put ''Y2FzZSJob3Jpem9udGFscmVzb2x1dGlvbiI6Y2FzZSJ2ZXJ0aWNhbHJlc29sdXRpb24iOmNhc2UibnVtYmVyb2Zjb3BpZXMiOmNhc2UiYWN0aXZlcGFuZSI6Y2FzZSJ0b3Byb3d2aXNpYmxlIjpjYXNlImxlZnRjb2x1bW52aXNpYmxlIjpjYXNlImZpdHRvcGFnZSI6Y2FzZSJyYW5nZXNlbGVj''@;'; put 'put ''dGlvbiI6Y2FzZSJwYXBlcnNpemVpbmRleCI6Y2FzZSJwYWdlbGF5b3V0em9vbSI6Y2FzZSJwYWdlYnJlYWt6b29tIjpjYXNlImZpbHRlcm9uIjpjYXNlImZpdHdpZHRoIjpjYXNlImZpdGhlaWdodCI6Y2FzZSJjb21tZW50c2xheW91dCI6Y2FzZSJ6b29tIjpjYXNlImxlZnR0b3JpZ2h0Ijpj''@;'; put 'put ''YXNlImdyaWRsaW5lcyI6Y2FzZSJhbGxvd3NvcnQiOmNhc2UiYWxsb3dmaWx0ZXIiOmNhc2UiYWxsb3dpbnNlcnRyb3dzIjpjYXNlImFsbG93ZGVsZXRlcm93cyI6Y2FzZSJhbGxvd2luc2VydGNvbHMiOmNhc2UiYWxsb3dkZWxldGVjb2xzIjpjYXNlImFsbG93aW5zZXJ0aHlwZXJsaW5rcyI6''@;'; put 'put ''Y2FzZSJhbGxvd2Zvcm1hdGNlbGxzIjpjYXNlImFsbG93c2l6ZWNvbHMiOmNhc2UiYWxsb3dzaXplcm93cyI6Y2FzZSJ0YWJjb2xvcmluZGV4IjpjYXNlImRvbm90ZGlzcGxheWhlYWRpbmdzIjpjYXNlInNob3dwYWdlbGF5b3V0em9vbSI6Y2FzZSJibGFja2FuZHdoaXRlIjpjYXNlImRvbm90''@;'; put 'put ''ZGlzcGxheXplcm9zIjpjYXNlImRpc3BsYXlwYWdlYnJlYWsiOmNhc2Uicm93Y29saGVhZGluZ3MiOmNhc2UiZG9ub3RkaXNwbGF5b3V0bGluZSI6Y2FzZSJub29yaWVudGF0aW9uIjpjYXNlImFsbG93dXNlcGl2b3R0YWJsZXMiOmNhc2UiemVyb2hlaWdodCI6Y2FzZSJ2aWV3YWJsZXJhbmdl''@;'; put 'put ''IjpjYXNlInNlbGVjdGlvbiI6Y2FzZSJwcm90ZWN0Y29udGVudHMiOmJyZWFrO2Nhc2Uic3BsaXRob3Jpem9udGFsIjpjYXNlInNwbGl0dmVydGljYWwiOmlmKCIvPiIhPT12ZVswXS5zbGljZSgtMikpaWYoIi8iPT12ZVsxXSl7aXRbIiFmcmVlemUiXXx8KGl0WyIhZnJlZXplIl09IkExIik7''@;'; put 'put ''dmFyIHVzPWNhKGl0WyIhZnJlZXplIl0pOyJzcGxpdGhvcml6b250YWwiPT12ZVszXT91cy5yPStlZS5zbGljZShZbix2ZS5pbmRleCk6dXMuYz0rZWUuc2xpY2UoWW4sdmUuaW5kZXgpLGl0WyIhZnJlZXplIl09cGkodXMpfWVsc2UgWW49dmUuaW5kZXgrdmVbMF0ubGVuZ3RoO2JyZWFrO2Nh''@;'; put 'put ''c2UiZG9ub3RkaXNwbGF5Z3JpZGxpbmVzIjppdFsiIWdyaWRsaW5lcyJdPSExO2JyZWFrO2Nhc2Uibm9zdW1tYXJ5cm93c2JlbG93ZGV0YWlsIjppdFsiIW91dGxpbmUiXXx8KGl0WyIhb3V0bGluZSJdPXt9KSxpdFsiIW91dGxpbmUiXS5hYm92ZT0hMDticmVhaztjYXNlIm5vc3VtbWFyeWNv''@;'; put 'put ''bHVtbnNyaWdodGRldGFpbCI6aXRbIiFvdXRsaW5lIl18fChpdFsiIW91dGxpbmUiXT17fSksaXRbIiFvdXRsaW5lIl0ubGVmdD0hMDticmVhaztkZWZhdWx0Ok1hPSExfWJyZWFrO2Nhc2UicGl2b3R0YWJsZSI6Y2FzZSJwaXZvdGNhY2hlIjpzd2l0Y2godmVbM10pe2Nhc2UiaW1tZWRpYXRl''@;'; put 'put ''aXRlbXNvbmRyb3AiOmNhc2Uic2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCI6Y2FzZSJjb21wYWN0cm93aW5kZW50IjpjYXNlImxvY2F0aW9uIjpjYXNlInBpdm90ZmllbGQiOmNhc2Uib3JpZW50YXRpb24iOmNhc2UibGF5b3V0Zm9ybSI6Y2FzZSJsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uIjpj''@;'; put 'put ''YXNlImxheW91dGNvbXBhY3Ryb3ciOmNhc2UicG9zaXRpb24iOmNhc2UicGl2b3RpdGVtIjpjYXNlImRhdGF0eXBlIjpjYXNlImRhdGFmaWVsZCI6Y2FzZSJzb3VyY2VuYW1lIjpjYXNlInBhcmVudGZpZWxkIjpjYXNlInB0bGluZWl0ZW1zIjpjYXNlInB0bGluZWl0ZW0iOmNhc2UiY291bnRv''@;'; put 'put ''ZnNhbWVpdGVtcyI6Y2FzZSJpdGVtIjpjYXNlIml0ZW10eXBlIjpjYXNlInB0c291cmNlIjpjYXNlImNhY2hlaW5kZXgiOmNhc2UiY29uc29saWRhdGlvbnJlZmVyZW5jZSI6Y2FzZSJmaWxlbmFtZSI6Y2FzZSJyZWZlcmVuY2UiOmNhc2Uibm9jb2x1bW5ncmFuZCI6Y2FzZSJub3Jvd2dyYW5k''@;'; put 'put ''IjpjYXNlImJsYW5rbGluZWFmdGVyaXRlbXMiOmNhc2UiaGlkZGVuIjpjYXNlInN1YnRvdGFsIjpjYXNlImJhc2VmaWVsZCI6Y2FzZSJtYXBjaGlsZGl0ZW1zIjpjYXNlImZ1bmN0aW9uIjpjYXNlInJlZnJlc2hvbmZpbGVvcGVuIjpjYXNlInByaW50c2V0dGl0bGVzIjpjYXNlIm1lcmdlbGFi''@;'; put 'put ''ZWxzIjpjYXNlImRlZmF1bHR2ZXJzaW9uIjpjYXNlInJlZnJlc2huYW1lIjpjYXNlInJlZnJlc2hkYXRlIjpjYXNlInJlZnJlc2hkYXRlY29weSI6Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmNhc2UidmVyc2lvbmxhc3R1cGRhdGUiOmNhc2UidmVyc2lvbnVwZGF0ZWFibGVtaW4iOmNhc2Ui''@;'; put 'put ''dmVyc2lvbnJlZnJlc2hhYmxlbWluIjpjYXNlImNhbGN1bGF0aW9uIjpicmVhaztkZWZhdWx0Ok1hPSExfWJyZWFrO2Nhc2UicGFnZWJyZWFrcyI6c3dpdGNoKHZlWzNdKXtjYXNlImNvbGJyZWFrcyI6Y2FzZSJjb2xicmVhayI6Y2FzZSJyb3dicmVha3MiOmNhc2Uicm93YnJlYWsiOmNhc2Ui''@;'; put 'put ''Y29sc3RhcnQiOmNhc2UiY29sZW5kIjpjYXNlInJvd2VuZCI6YnJlYWs7ZGVmYXVsdDpNYT0hMX1icmVhaztjYXNlImF1dG9maWx0ZXIiOnN3aXRjaCh2ZVszXSl7Y2FzZSJhdXRvZmlsdGVyY29sdW1uIjpjYXNlImF1dG9maWx0ZXJjb25kaXRpb24iOmNhc2UiYXV0b2ZpbHRlcmFuZCI6Y2Fz''@;'; put 'put ''ZSJhdXRvZmlsdGVyb3IiOmJyZWFrO2RlZmF1bHQ6TWE9ITF9YnJlYWs7Y2FzZSJxdWVyeXRhYmxlIjpzd2l0Y2godmVbM10pe2Nhc2UiaWQiOmNhc2UiYXV0b2Zvcm1hdGZvbnQiOmNhc2UiYXV0b2Zvcm1hdHBhdHRlcm4iOmNhc2UicXVlcnlzb3VyY2UiOmNhc2UicXVlcnl0eXBlIjpjYXNl''@;'; put 'put ''ImVuYWJsZXJlZGlyZWN0aW9ucyI6Y2FzZSJyZWZyZXNoZWRpbnhsOSI6Y2FzZSJ1cmxzdHJpbmciOmNhc2UiaHRtbHRhYmxlcyI6Y2FzZSJjb25uZWN0aW9uIjpjYXNlImNvbW1hbmR0ZXh0IjpjYXNlInJlZnJlc2hpbmZvIjpjYXNlIm5vdGl0bGVzIjpjYXNlIm5leHRpZCI6Y2FzZSJjb2x1''@;'; put 'put ''bW5pbmZvIjpjYXNlIm92ZXJ3cml0ZWNlbGxzIjpjYXNlImRvbm90cHJvbXB0Zm9yZmlsZSI6Y2FzZSJ0ZXh0d2l6YXJkc2V0dGluZ3MiOmNhc2Uic291cmNlIjpjYXNlIm51bWJlciI6Y2FzZSJkZWNpbWFsIjpjYXNlInRob3VzYW5kc2VwYXJhdG9yIjpjYXNlInRyYWlsaW5nbWludXNudW1i''@;'; put 'put ''ZXJzIjpjYXNlImZvcm1hdHNldHRpbmdzIjpjYXNlImZpZWxkdHlwZSI6Y2FzZSJkZWxpbWl0ZXJzIjpjYXNlInRhYiI6Y2FzZSJjb21tYSI6Y2FzZSJhdXRvZm9ybWF0bmFtZSI6Y2FzZSJ2ZXJzaW9ubGFzdGVkaXQiOmNhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpicmVhaztkZWZhdWx0Ok1h''@;'; put 'put ''PSExfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOnN3aXRjaCh2ZVszXSl7Y2FzZSJyYW5nZSI6bGkucmVmPXZlO2JyZWFrO2Nhc2UidHlwZSI6Y2FzZSJtaW4iOmNhc2UibWF4IjpjYXNlInNvcnQiOmNhc2UiZGVzY2VuZGluZyI6Y2FzZSJvcmRlciI6Y2FzZSJjYXNlc2Vuc2l0aXZlIjpj''@;'; put 'put ''YXNlInZhbHVlIjpjYXNlImVycm9yc3R5bGUiOmNhc2UiZXJyb3JtZXNzYWdlIjpjYXNlImVycm9ydGl0bGUiOmNhc2UiaW5wdXRtZXNzYWdlIjpjYXNlImlucHV0dGl0bGUiOmNhc2UiY29tYm9oaWRlIjpjYXNlImlucHV0aGlkZSI6Y2FzZSJjb25kaXRpb24iOmNhc2UicXVhbGlmaWVyIjpj''@;'; put 'put ''YXNlInVzZWJsYW5rIjpjYXNlInZhbHVlMSI6Y2FzZSJ2YWx1ZTIiOmNhc2UiZm9ybWF0IjpjYXNlImNlbGxyYW5nZWxpc3QiOmJyZWFrO2RlZmF1bHQ6TWE9ITF9YnJlYWs7Y2FzZSJzb3J0aW5nIjpjYXNlImNvbmRpdGlvbmFsZm9ybWF0dGluZyI6c3dpdGNoKHZlWzNdKXtjYXNlInJhbmdl''@;'; put 'put ''IjpjYXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRlc2NlbmRpbmciOmNhc2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVzc2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImNl''@;'; put 'put ''bGxyYW5nZWxpc3QiOmNhc2UiaW5wdXRtZXNzYWdlIjpjYXNlImlucHV0dGl0bGUiOmNhc2UiY29tYm9oaWRlIjpjYXNlImlucHV0aGlkZSI6Y2FzZSJjb25kaXRpb24iOmNhc2UicXVhbGlmaWVyIjpjYXNlInVzZWJsYW5rIjpjYXNlInZhbHVlMSI6Y2FzZSJ2YWx1ZTIiOmNhc2UiZm9ybWF0''@;'; put 'put ''IjpicmVhaztkZWZhdWx0Ok1hPSExfWJyZWFrO2Nhc2UibWFwaW5mbyI6Y2FzZSJzY2hlbWEiOmNhc2UiZGF0YSI6c3dpdGNoKHZlWzNdKXtjYXNlIm1hcCI6Y2FzZSJlbnRyeSI6Y2FzZSJyYW5nZSI6Y2FzZSJ4cGF0aCI6Y2FzZSJmaWVsZCI6Y2FzZSJ4c2R0eXBlIjpjYXNlImZpbHRlcm9u''@;'; put 'put ''IjpjYXNlImFnZ3JlZ2F0ZSI6Y2FzZSJlbGVtZW50dHlwZSI6Y2FzZSJhdHRyaWJ1dGV0eXBlIjpjYXNlInNjaGVtYSI6Y2FzZSJlbGVtZW50IjpjYXNlImNvbXBsZXh0eXBlIjpjYXNlImRhdGF0eXBlIjpjYXNlImFsbCI6Y2FzZSJhdHRyaWJ1dGUiOmNhc2UiZXh0ZW5kcyI6Y2FzZSJyb3ci''@;'; put 'put ''OmJyZWFrO2RlZmF1bHQ6TWE9ITF9YnJlYWs7Y2FzZSJzbWFydHRhZ3MiOmJyZWFrO2RlZmF1bHQ6TWE9ITF9aWYoTWF8fHZlWzNdLm1hdGNoKC8hXFtDREFUQS8pKWJyZWFrO2lmKCFNZVtNZS5sZW5ndGgtMV1bMV0pdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIit2ZVszXSsifCIrTWUuam9p''@;'; put 'put ''bigifCIpO2lmKCJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiPT09TWVbTWUubGVuZ3RoLTFdWzBdKXtpZigiLz4iPT09dmVbMF0uc2xpY2UoLTIpKWJyZWFrOyIvIj09PXZlWzFdP1JlKHRyLHdvLGpyLGVlLnNsaWNlKFluLHZlLmluZGV4KSk6KGpyPXZlLFluPXZlLmluZGV4K3ZlWzBdLmxl''@;'; put 'put ''bmd0aCk7YnJlYWt9aWYoRC5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIit2ZVszXSsifCIrTWUuam9pbigifCIpfXZhciB3cz17fTtyZXR1cm4hRC5ib29rU2hlZXRzJiYhRC5ib29rUHJvcHMmJih3cy5TaGVldHM9VWUpLHdzLlNoZWV0TmFtZXM9WGUsd3MuV29ya2Jvb2s9enIsd3Mu''@;'; put 'put ''U1NGPVMuZ2V0X3RhYmxlKCksd3MuUHJvcHM9ZXIsd3MuQ3VzdHByb3BzPXRyLHdzLlNoZWV0cyYmd3MuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHVjKXt2YXIgbnM9d3MuU2hlZXRzW3VjXTtuc1siIW1lcmdlcyJdJiZuc1siIW1lcmdlcyJdLmZvckVhY2goZnVuY3Rpb24oUXQpeyJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgUXQmJihRdD1ILnV0aWxzLmRlY29kZV9yYW5nZShRdCkpO3ZhciB2bj1ILnV0aWxzLmVuY29kZV9jZWxsKFF0LnMpLFBuPUFycmF5LmlzQXJyYXkobnMpPyhuc1tRdC5zLnJdfHxbXSlbUXQucy5jXTpuc1t2bl07UG4mJlBuLnMmJihudWxsIT1Qbi5zLnRvcCYmZWEu''@;'; put 'put ''c2hlZXRfc2V0X3JhbmdlX3N0eWxlKG5zLFF0LHt0b3A6UG4ucy50b3B9KSxudWxsIT1Qbi5zLmJvdHRvbSYmZWEuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKG5zLFF0LHtib3R0b206UG4ucy5ib3R0b219KSxudWxsIT1Qbi5zLmxlZnQmJmVhLnNoZWV0X3NldF9yYW5nZV9zdHlsZShucyxRdCx7''@;'; put 'put ''bGVmdDpQbi5zLmxlZnR9KSxudWxsIT1Qbi5zLnJpZ2h0JiZlYS5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUobnMsUXQse3JpZ2h0OlBuLnMucmlnaHR9KSl9KX0pLHdzfWZ1bmN0aW9uIGVzKHcsUCl7c3dpdGNoKGR2KFA9UHx8e30pLFAudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYmFzZTY0IjpyZXR1''@;'; put 'put ''cm4gR3IobGUuZGVjb2RlKHcpLFApO2Nhc2UiYmluYXJ5IjpjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpyZXR1cm4gR3IodyxQKTtjYXNlImFycmF5IjpyZXR1cm4gR3IoRih3KSxQKX19ZnVuY3Rpb24gWm4odyl7cmV0dXJuIE1yKCJOYW1lZFJhbmdlIixudWxsLHsic3M6TmFtZSI6dy5OYW1l''@;'; put 'put ''LCJzczpSZWZlcnNUbyI6Ij0iK0lfKHcuUmVmLHtyOjAsYzowfSl9KX1mdW5jdGlvbiBHVCh3LFAsRCxlZSxvZSxnZSxfZSl7aWYoIXd8fG51bGw9PXcudiYmbnVsbD09dy5mJiYhZWUuc2hlZXRTdHVicylyZXR1cm4iIjt2YXIgdmU9e307aWYody5mJiYodmVbInNzOkZvcm11bGEiXT0iPSIr''@;'; put 'put ''QnIoSV8ody5mLF9lKSkpLHcuRiYmdy5GLnNsaWNlKDAsUC5sZW5ndGgpPT1QKXt2YXIgTWU9Y2Eody5GLnNsaWNlKFAubGVuZ3RoKzEpKTt2ZVsic3M6QXJyYXlSYW5nZSJdPSJSQzpSIisoTWUucj09X2Uucj8iIjoiWyIrKE1lLnItX2UucikrIl0iKSsiQyIrKE1lLmM9PV9lLmM/IiI6Ilsi''@;'; put 'put ''KyhNZS5jLV9lLmMpKyJdIil9aWYody5sJiZ3LmwuVGFyZ2V0JiYodmVbInNzOkhSZWYiXT1Ccih3LmwuVGFyZ2V0KSx3LmwuVG9vbHRpcCYmKHZlWyJ4OkhSZWZTY3JlZW5UaXAiXT1Ccih3LmwuVG9vbHRpcCkpKSxEWyIhbWVyZ2VzIl0pZm9yKHZhciBqZT1EWyIhbWVyZ2VzIl0sVWU9MDtV''@;'; put 'put ''ZSE9amUubGVuZ3RoOysrVWUpamVbVWVdLnMuYyE9X2UuY3x8amVbVWVdLnMuciE9X2Uucnx8KGplW1VlXS5lLmM+amVbVWVdLnMuYyYmKHZlWyJzczpNZXJnZUFjcm9zcyJdPWplW1VlXS5lLmMtamVbVWVdLnMuYyksamVbVWVdLmUucj5qZVtVZV0ucy5yJiYodmVbInNzOk1lcmdlRG93biJd''@;'; put 'put ''PWplW1VlXS5lLnItamVbVWVdLnMucikpO3ZhciBYZT0iIixpdD0iIjtzd2l0Y2gody50KXtjYXNlInoiOmlmKCFlZS5zaGVldFN0dWJzKXJldHVybiIiO2JyZWFrO2Nhc2UibiI6WGU9Ik51bWJlciIsaXQ9U3RyaW5nKHcudik7YnJlYWs7Y2FzZSJiIjpYZT0iQm9vbGVhbiIsaXQ9dy52PyIx''@;'; put 'put ''IjoiMCI7YnJlYWs7Y2FzZSJlIjpYZT0iRXJyb3IiLGl0PW5hW3cudl07YnJlYWs7Y2FzZSJkIjpYZT0iRGF0ZVRpbWUiLGl0PW5ldyBEYXRlKHcudikudG9JU09TdHJpbmcoKSxudWxsPT13LnomJih3Lno9dy56fHxTLl90YWJsZVsxNF0pO2JyZWFrO2Nhc2UicyI6WGU9IlN0cmluZyIsaXQ9''@;'; put 'put ''c28ody52fHwiIil9dmFyIGZ0PXdjKGVlLmNlbGxYZnMsbnVsbCx3LGVlKTt2ZVsic3M6U3R5bGVJRCJdPSJzIisoMjErZnQpLHZlWyJzczpJbmRleCJdPV9lLmMrMTt2YXIgTXQ9bnVsbCE9dy52P2l0OiIiLHV0PSJ6Ij09dy50PyIiOncuUj9mdW5jdGlvbiBqVih3KXtyZXR1cm4nPHNzOkRh''@;'; put 'put ''dGEgc3M6VHlwZT0iU3RyaW5nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Jyt3Lm1hcChmdW5jdGlvbihEKXt2YXIgZWU9c28oRC52KTtyZXR1cm4gRC5zJiYoRC5zLmJvbGQmJihlZT0iPEI+IitlZSsiPC9CPiIpLEQucy5pdGFsaWMmJihlZT0iPEk+IitlZSsi''@;'; put 'put ''PC9JPiIpLEQucy5zdHJpa2UmJihlZT0iPFM+IitlZSsiPC9TPiIpLEQucy51bmRlcmxpbmUmJihlZT0iPFU+IitlZSsiPC9VPiIpLCJzdXBlciI9PUQucy52YWxpZ24mJihlZT0iPFN1cD4iK2VlKyI8L1N1cD4iKSwic3ViIj09RC5zLnZhbGlnbiYmKGVlPSI8U3ViPiIrZWUrIjwvU3ViPiIp''@;'; put 'put ''LChELnMubmFtZXx8RC5zLnN6fHxELnMuY29sb3ImJm51bGwhPUQucy5jb2xvci5yZ2IpJiYoZWU9WyI8Rm9udCIsRC5zLm5hbWU/JyBodG1sOkZhY2U9IicrRC5zLm5hbWUrJyInOiIiLEQucy5zej8nIGh0bWw6U2l6ZT0iJytELnMuc3orJyInOiIiLEQucy5jb2xvcj8nIGh0bWw6Q29sb3I9''@;'; put 'put ''IiMnKygiMDAwMDAwIisoIm51bWJlciI9PXR5cGVvZiBELnMuY29sb3IucmdiP0Qucy5jb2xvci5yZ2IudG9TdHJpbmcoMTYpOkQucy5jb2xvci5yZ2IpKS5zbGljZSgtNikrJyInOiIiLCI+IixlZSwiPC9Gb250PiJdLmpvaW4oIiIpKSksZWV9KS5qb2luKCIiKSsiPC9EYXRhPiJ9KHcuUik6''@;'; put 'put ''JzxEYXRhIHNzOlR5cGU9IicrWGUrJyI+JytNdCsiPC9EYXRhPiI7cmV0dXJuKHcuY3x8W10pLmxlbmd0aD4wJiYodXQrPWZ1bmN0aW9uIEZ3KHcpe3JldHVybiB3Lm1hcChmdW5jdGlvbihQKXt2YXIgZWU9TXIoInNzOkRhdGEiLHBvKFAudHx8IiIpLHt4bWxuczoiaHR0cDovL3d3dy53My5v''@;'; put 'put ''cmcvVFIvUkVDLWh0bWw0MCJ9KTtyZXR1cm4gTXIoIkNvbW1lbnQiLGVlLHsic3M6QXV0aG9yIjpQLmF9KX0pLmpvaW4oIiIpfSh3LmMpKSxNcigiQ2VsbCIsdXQsdmUpfWZ1bmN0aW9uICRUKHcsUCl7dmFyIEQ9JzxSb3cgc3M6SW5kZXg9IicrKHcrMSkrJyInO3JldHVybiBQJiYoUC5ocHgm''@;'; put 'put ''JiFQLmhwdCYmKFAuaHB0PXVoKFAuaHB4KSksUC5ocHQmJihEKz0nIHNzOkF1dG9GaXRIZWlnaHQ9IjAiIHNzOkhlaWdodD0iJytQLmhwdCsnIicpLFAuaGlkZGVuJiYoRCs9JyBzczpIaWRkZW49IjEiJykpLEQrIj4ifWZ1bmN0aW9uIEdlKHcsUCxEKXt2YXIgZWU9W10sZ2U9RC5TaGVldHNb''@;'; put 'put ''RC5TaGVldE5hbWVzW3ddXSxfZT1nZT9mdW5jdGlvbiBXVCh3LFAsRCxlZSl7aWYoIXd8fCEoKGVlfHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcylyZXR1cm4iIjtmb3IodmFyIG9lPWVlLldvcmtib29rLk5hbWVzLGdlPVtdLF9lPTA7X2U8b2UubGVuZ3RoOysrX2Upe3ZhciB2ZT1vZVtfZV07''@;'; put 'put ''dmUuU2hlZXQ9PUQmJih2ZS5OYW1lLm1hdGNoKC9eX3hsZm5cLi8pfHxnZS5wdXNoKFpuKHZlKSkpfXJldHVybiBnZS5qb2luKCIiKX0oZ2UsMCx3LEQpOiIiO3JldHVybiBfZS5sZW5ndGg+MCYmZWUucHVzaCgiPE5hbWVzPiIrX2UrIjwvTmFtZXM+IiksX2U9Z2U/ZnVuY3Rpb24gS1QodyxQ''@;'; put 'put ''LEQsZWUpe2lmKCF3WyIhcmVmIl0pcmV0dXJuIiI7dmFyIG9lPVBpKHdbIiFyZWYiXSksZ2U9d1siIW1lcmdlcyJdfHxbXSxfZT0wLHZlPVtdO3dbIiFjb2xzIl0mJndbIiFjb2xzIl0uZm9yRWFjaChmdW5jdGlvbih3dCxIdCl7X2Mod3QpO3ZhciBrdD0hIXd0LndpZHRoLFR0PXVkKEh0LHd0''@;'; put 'put ''KSxZdD17InNzOkluZGV4IjpIdCsxfTtrdCYmKFl0WyJzczpXaWR0aCJdPUl1KFR0LndpZHRoKSksd3QuaGlkZGVuJiYoWXRbInNzOkhpZGRlbiJdPSIxIiksdmUucHVzaChNcigiQ29sdW1uIixudWxsLFl0KSl9KTtmb3IodmFyIE1lPUFycmF5LmlzQXJyYXkodyksamU9b2Uucy5yO2plPD1v''@;'; put 'put ''ZS5lLnI7KytqZSl7Zm9yKHZhciBVZT1bJFQoamUsKHdbIiFyb3dzIl18fFtdKVtqZV0pXSxYZT1vZS5zLmM7WGU8PW9lLmUuYzsrK1hlKXt2YXIgaXQ9ITE7Zm9yKF9lPTA7X2UhPWdlLmxlbmd0aDsrK19lKWlmKCEoZ2VbX2VdLnMuYz5YZXx8Z2VbX2VdLnMucj5qZXx8Z2VbX2VdLmUuYzxY''@;'; put 'put ''ZXx8Z2VbX2VdLmUucjxqZSkpeyhnZVtfZV0ucy5jIT1YZXx8Z2VbX2VdLnMuciE9amUpJiYoaXQ9ITApO2JyZWFrfWlmKCFpdCl7dmFyIGZ0PXtyOmplLGM6WGV9LE10PXBpKGZ0KTtVZS5wdXNoKEdUKE1lPyh3W2plXXx8W10pW1hlXTp3W010XSxNdCx3LFAsMCwwLGZ0KSl9fVVlLnB1c2go''@;'; put 'put ''IjwvUm93PiIpLFVlLmxlbmd0aD4yJiZ2ZS5wdXNoKFVlLmpvaW4oIiIpKX1yZXR1cm4gdmUuam9pbigiIil9KGdlLFApOiIiLF9lLmxlbmd0aD4wJiZlZS5wdXNoKCI8VGFibGU+IitfZSsiPC9UYWJsZT4iKSxlZS5wdXNoKGZ1bmN0aW9uIEV0KHcsUCxELGVlKXtpZighdylyZXR1cm4iIjt2''@;'; put 'put ''YXIgb2U9W107aWYod1siIW1hcmdpbnMiXSYmKG9lLnB1c2goIjxQYWdlU2V0dXA+Iiksd1siIW1hcmdpbnMiXS5oZWFkZXImJm9lLnB1c2goTXIoIkhlYWRlciIsbnVsbCx7Ing6TWFyZ2luIjp3WyIhbWFyZ2lucyJdLmhlYWRlcn0pKSx3WyIhbWFyZ2lucyJdLmZvb3RlciYmb2UucHVzaChN''@;'; put 'put ''cigiRm9vdGVyIixudWxsLHsieDpNYXJnaW4iOndbIiFtYXJnaW5zIl0uZm9vdGVyfSkpLG9lLnB1c2goTXIoIlBhZ2VNYXJnaW5zIixudWxsLHsieDpCb3R0b20iOndbIiFtYXJnaW5zIl0uYm90dG9tfHwiMC43NSIsIng6TGVmdCI6d1siIW1hcmdpbnMiXS5sZWZ0fHwiMC43IiwieDpSaWdo''@;'; put 'put ''dCI6d1siIW1hcmdpbnMiXS5yaWdodHx8IjAuNyIsIng6VG9wIjp3WyIhbWFyZ2lucyJdLnRvcHx8IjAuNzUifSkpLG9lLnB1c2goIjwvUGFnZVNldHVwPiIpKSxlZSYmZWUuV29ya2Jvb2smJmVlLldvcmtib29rLlNoZWV0cyYmZWUuV29ya2Jvb2suU2hlZXRzW0RdKWlmKGVlLldvcmtib29r''@;'; put 'put ''LlNoZWV0c1tEXS5IaWRkZW4pb2UucHVzaChNcigiVmlzaWJsZSIsMT09ZWUuV29ya2Jvb2suU2hlZXRzW0RdLkhpZGRlbj8iU2hlZXRIaWRkZW4iOiJTaGVldFZlcnlIaWRkZW4iLHt9KSk7ZWxzZXtmb3IodmFyIGdlPTA7Z2U8RCYmKCFlZS5Xb3JrYm9vay5TaGVldHNbZ2VdfHxlZS5Xb3Jr''@;'; put 'put ''Ym9vay5TaGVldHNbZ2VdLkhpZGRlbik7KytnZSk7Z2U9PUQmJm9lLnB1c2goIjxTZWxlY3RlZC8+Iil9aWYoKCgoKGVlfHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRMJiZvZS5wdXNoKCI8RGlzcGxheVJpZ2h0VG9MZWZ0Lz4iKSxobih3WyIhZ3JpZGxpbmVzIl0p''@;'; put 'put ''JiZvZS5wdXNoKCI8RG9Ob3REaXNwbGF5R3JpZGxpbmVzLz4iKSx3WyIhZnJlZXplIl0pe29lLnB1c2goIjxGcmVlemVQYW5lcy8+Iiksb2UucHVzaCgiPEZyb3plbk5vU3BsaXQvPiIpO3ZhciBfZT1jYSh3WyIhZnJlZXplIl0pO19lLnI+MCYmKG9lLnB1c2godmEoIlNwbGl0SG9yaXpvbnRh''@;'; put 'put ''bCIsIiIrX2UucikpLG9lLnB1c2godmEoIlRvcFJvd0JvdHRvbVBhbmUiLCIiK19lLnIpKSksX2UuYz4wJiYob2UucHVzaCh2YSgiU3BsaXRWZXJ0aWNhbCIsIiIrX2UuYykpLG9lLnB1c2godmEoIkxlZnRDb2x1bW5SaWdodFBhbmUiLCIiK19lLmMpKSl9cmV0dXJuIHdbIiFwcm90ZWN0Il0m''@;'; put 'put ''JihvZS5wdXNoKHZhKCJQcm90ZWN0Q29udGVudHMiLCJUcnVlIikpLHdbIiFwcm90ZWN0Il0ub2JqZWN0cyYmb2UucHVzaCh2YSgiUHJvdGVjdE9iamVjdHMiLCJUcnVlIikpLHdbIiFwcm90ZWN0Il0uc2NlbmFyaW9zJiZvZS5wdXNoKHZhKCJQcm90ZWN0U2NlbmFyaW9zIiwiVHJ1ZSIpKSxu''@;'; put 'put ''dWxsPT13WyIhcHJvdGVjdCJdLnNlbGVjdExvY2tlZENlbGxzfHx3WyIhcHJvdGVjdCJdLnNlbGVjdExvY2tlZENlbGxzP251bGwhPXdbIiFwcm90ZWN0Il0uc2VsZWN0VW5sb2NrZWRDZWxscyYmIXdbIiFwcm90ZWN0Il0uc2VsZWN0VW5sb2NrZWRDZWxscyYmb2UucHVzaCh2YSgiRW5hYmxl''@;'; put 'put ''U2VsZWN0aW9uIiwiVW5sb2NrZWRDZWxscyIpKTpvZS5wdXNoKHZhKCJFbmFibGVTZWxlY3Rpb24iLCJOb1NlbGVjdGlvbiIpKSxbWyJmb3JtYXRDZWxscyIsIkFsbG93Rm9ybWF0Q2VsbHMiXSxbImZvcm1hdENvbHVtbnMiLCJBbGxvd1NpemVDb2xzIl0sWyJmb3JtYXRSb3dzIiwiQWxsb3dT''@;'; put 'put ''aXplUm93cyJdLFsiaW5zZXJ0Q29sdW1ucyIsIkFsbG93SW5zZXJ0Q29scyJdLFsiaW5zZXJ0Um93cyIsIkFsbG93SW5zZXJ0Um93cyJdLFsiaW5zZXJ0SHlwZXJsaW5rcyIsIkFsbG93SW5zZXJ0SHlwZXJsaW5rcyJdLFsiZGVsZXRlQ29sdW1ucyIsIkFsbG93RGVsZXRlQ29scyJdLFsiZGVs''@;'; put 'put ''ZXRlUm93cyIsIkFsbG93RGVsZXRlUm93cyJdLFsic29ydCIsIkFsbG93U29ydCJdLFsiYXV0b0ZpbHRlciIsIkFsbG93RmlsdGVyIl0sWyJwaXZvdFRhYmxlcyIsIkFsbG93VXNlUGl2b3RUYWJsZXMiXV0uZm9yRWFjaChmdW5jdGlvbih2ZSl7d1siIXByb3RlY3QiXVt2ZVswXV0mJm9lLnB1''@;'; put 'put ''c2goIjwiK3ZlWzFdKyIvPiIpfSkpLDA9PW9lLmxlbmd0aD8iIjpNcigiV29ya3NoZWV0T3B0aW9ucyIsb2Uuam9pbigiIikse3htbG5zOkdpLnh9KX0oZ2UsMCx3LEQpKSxlZS5qb2luKCIiKX1mdW5jdGlvbiB6Vih3LFApe1B8fChQPXt9KSx3LlNTRnx8KHcuU1NGPVMuZ2V0X3RhYmxlKCkp''@;'; put 'put ''LHcuU1NGJiYoUShTKSxTLmxvYWRfdGFibGUody5TU0YpLFAucmV2c3NmPUllKHcuU1NGKSxQLnJldnNzZlt3LlNTRls2NTUzNV1dPTAsUC5zc2Y9dy5TU0Ysdy5TdHlsZXM9e0ZvbnRzOlAuRm9udHM9W3tzejoxMixjb2xvcjp7dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9LG5hbWU6IkNhbGlicmki''@;'; put 'put ''LGZhbWlseToyLHNjaGVtZToibWlub3IifV0sRmlsbHM6UC5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5UeXBlOiJncmF5MTI1In1dLEJvcmRlcnM6UC5Cb3JkZXJzPVt7fV19LFAuY2VsbFhmcz1bXSxQLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSx3YyhQLmNl''@;'; put 'put ''bGxYZnMsbnVsbCx7fSx7cmV2c3NmOntHZW5lcmFsOjB9fSkpO3ZhciBEPVtdO0QucHVzaChmdW5jdGlvbiBZVCh3LFApe3ZhciBEPVtdO3JldHVybiB3LlByb3BzJiZELnB1c2goZnVuY3Rpb24gZnUodyxQKXt2YXIgRD1bXTtyZXR1cm4gbXQoaWgpLm1hcChmdW5jdGlvbihlZSl7Zm9yKHZh''@;'; put 'put ''ciBvZT0wO29lPFVzLmxlbmd0aDsrK29lKWlmKFVzW29lXVsxXT09ZWUpcmV0dXJuIFVzW29lXTtmb3Iob2U9MDtvZTxlZi5sZW5ndGg7KytvZSlpZihlZltvZV1bMV09PWVlKXJldHVybiBlZltvZV07dGhyb3cgZWV9KS5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtpZihudWxsIT13W2VlWzFdXSl7''@;'; put 'put ''dmFyIG9lPVAmJlAuUHJvcHMmJm51bGwhPVAuUHJvcHNbZWVbMV1dP1AuUHJvcHNbZWVbMV1dOndbZWVbMV1dOyJkYXRlIj09PWVlWzJdJiYob2U9bmV3IERhdGUob2UpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCpaLywiWiIpKSwibnVtYmVyIj09dHlwZW9mIG9lP29lPVN0cmluZyhv''@;'; put 'put ''ZSk6ITA9PT1vZXx8ITE9PT1vZT9vZT1vZT8iMSI6IjAiOm9lIGluc3RhbmNlb2YgRGF0ZSYmKG9lPW5ldyBEYXRlKG9lKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuXGQqWi8sIiIpKSxELnB1c2godmEoaWhbZWVbMV1dfHxlZVsxXSxvZSkpfX0pLE1yKCJEb2N1bWVudFByb3BlcnRpZXMi''@;'; put 'put ''LEQuam9pbigiIikse3htbG5zOkdpLm99KX0ody5Qcm9wcyxQKSksdy5DdXN0cHJvcHMmJkQucHVzaChmdW5jdGlvbiBseCh3LFApe3ZhciBEPVsiV29ya3NoZWV0cyIsIlNoZWV0TmFtZXMiXSxlZT0iQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzIixvZT1bXTtyZXR1cm4gdyYmbXQodykuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihnZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHcsZ2UpKXtmb3IodmFyIF9lPTA7X2U8VXMubGVuZ3RoOysrX2UpaWYoZ2U9PVVzW19lXVsxXSlyZXR1cm47Zm9yKF9lPTA7X2U8ZWYubGVuZ3RoOysrX2UpaWYoZ2U9PWVmW19lXVsxXSly''@;'; put 'put ''ZXR1cm47Zm9yKF9lPTA7X2U8RC5sZW5ndGg7KytfZSlpZihnZT09RFtfZV0pcmV0dXJuO3ZhciB2ZT13W2dlXSxNZT0ic3RyaW5nIjsibnVtYmVyIj09dHlwZW9mIHZlPyhNZT0iZmxvYXQiLHZlPVN0cmluZyh2ZSkpOiEwPT09dmV8fCExPT09dmU/KE1lPSJib29sZWFuIix2ZT12ZT8iMSI6''@;'; put 'put ''IjAiKTp2ZT1TdHJpbmcodmUpLG9lLnB1c2goTXIodG8oZ2UpLHZlLHsiZHQ6ZHQiOk1lfSkpfX0pLFAmJm10KFApLmZvckVhY2goZnVuY3Rpb24oZ2Upe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChQLGdlKSYmKCF3fHwhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eS5jYWxsKHcsZ2UpKSl7dmFyIF9lPVBbZ2VdLHZlPSJzdHJpbmciOyJudW1iZXIiPT10eXBlb2YgX2U/KHZlPSJmbG9hdCIsX2U9U3RyaW5nKF9lKSk6ITA9PT1fZXx8ITE9PT1fZT8odmU9ImJvb2xlYW4iLF9lPV9lPyIxIjoiMCIpOl9lIGluc3RhbmNlb2YgRGF0ZT8odmU9ImRh''@;'; put 'put ''dGVUaW1lLnR6IixfZT1fZS50b0lTT1N0cmluZygpKTpfZT1TdHJpbmcoX2UpLG9lLnB1c2goTXIodG8oZ2UpLF9lLHsiZHQ6ZHQiOnZlfSkpfX0pLCI8IitlZSsnIHhtbG5zPSInK0dpLm8rJyI+JytvZS5qb2luKCIiKSsiPC8iK2VlKyI+In0ody5Qcm9wcyx3LkN1c3Rwcm9wcykpLEQuam9p''@;'; put 'put ''bigiIil9KHcsUCkpLEQucHVzaCgiIiksRC5wdXNoKCIiKSxELnB1c2goIiIpO2Zvcih2YXIgZWU9MDtlZTx3LlNoZWV0TmFtZXMubGVuZ3RoOysrZWUpRC5wdXNoKE1yKCJXb3Jrc2hlZXQiLEdlKGVlLFAsdykseyJzczpOYW1lIjpCcih3LlNoZWV0TmFtZXNbZWVdKX0pKTtyZXR1cm4gRFsy''@;'; put 'put ''XT1mdW5jdGlvbiBCVih3LFApe3ZhciBlZT1bWyc8U3R5bGUgc3M6SUQ9IkRlZmF1bHQiIHNzOk5hbWU9Ik5vcm1hbCI+JywnPEFsaWdubWVudCBzczpWZXJ0aWNhbD0iQm90dG9tIi8+JywiPEJvcmRlcnMvPiIsJzxGb250IHNzOkZvbnROYW1lPSJDYWxpYnJpIiB4OkZhbWlseT0iU3dpc3Mi''@;'; put 'put ''IHNzOlNpemU9IjEyIiBzczpDb2xvcj0iIzAwMDAwMCIvPicsIjxJbnRlcmlvci8+IiwiPE51bWJlckZvcm1hdC8+IiwiPFByb3RlY3Rpb24vPiIsIjwvU3R5bGU+Il0uam9pbigiIildO3JldHVybiBQLmNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbihvZSxnZSl7dmFyIF9lPVtdO2lmKG9lLmFs''@;'; put 'put ''aWdubWVudCl7dmFyIHZlPXt9O29lLmFsaWdubWVudC5zaHJpbmtUb0ZpdCYmKHZlWyJzczpTaHJpbmtUb0ZpdCJdPSIxIiksb2UuYWxpZ25tZW50LndyYXBUZXh0JiYodmVbInNzOldyYXBUZXh0Il09IjEiKSxvZS5hbGlnbm1lbnQudmVydGljYWwmJih2ZVsic3M6VmVydGljYWwiXT1DdChv''@;'; put 'put ''ZS5hbGlnbm1lbnQudmVydGljYWwpKSxvZS5hbGlnbm1lbnQuaG9yaXpvbnRhbCYmKHZlWyJzczpIb3Jpem9udGFsIl09Q3Qob2UuYWxpZ25tZW50Lmhvcml6b250YWwpKSxvZS5hbGlnbm1lbnQuaW5kZW50JiYodmVbInNzOkluZGVudCJdPW9lLmFsaWdubWVudC5pbmRlbnQpLG9lLmFsaWdu''@;'; put 'put ''bWVudC50ZXh0Um90YXRpb24mJih2ZVsic3M6Um90YXRlIl09b2UuYWxpZ25tZW50LnRleHRSb3RhdGlvbiksX2UucHVzaChNcigiQWxpZ25tZW50IixudWxsLHZlKSl9ZTppZihudWxsIT1vZS5mb250SWQpe3ZhciBNZT1QLkZvbnRzW29lLmZvbnRJZF07aWYoIU1lKWJyZWFrIGU7dmFyIGpl''@;'; put 'put ''PXsic3M6Rm9udE5hbWUiOiJDYWxpYnJpIiwic3M6U2l6ZSI6IjEyIn0sVWU9ITE7TWUuYm9sZCYmKFVlPSEwLGplWyJzczpCb2xkIl09IjEiKSxNZS5pdGFsaWMmJihVZT0hMCxqZVsic3M6SXRhbGljIl09IjEiKSxNZS5zdHJpa2UmJihVZT0hMCxqZVsic3M6U3RyaWtlVGhyb3VnaCJdPSIx''@;'; put 'put ''IiksbnVsbCE9TWUudW5kZXJsaW5lJiYoVWU9ITAsamVbInNzOlVuZGVybGluZSJdPXpUW01lLnVuZGVybGluZV18fChNZS51bmRlcmxpbmU/IlNpbmdsZSI6Ik5vbmUiKSksbnVsbCE9TWUuc3omJihVZT0hMCxqZVsic3M6U2l6ZSJdPU1lLnN6KSxudWxsIT1NZS5uYW1lJiYoVWU9ITAsamVb''@;'; put 'put ''InNzOkZvbnROYW1lIl09TWUubmFtZSksTWUuY29sb3ImJm51bGwhPU1lLmNvbG9yLnJnYiYmKFVlPSEwLGplWyJzczpDb2xvciJdPSIjIisoIm51bWJlciI9PXR5cGVvZiBNZS5jb2xvci5yZ2I/IjAwMDAwMCIrTWUuY29sb3IucmdiLnRvU3RyaW5nKDE2KTpNZS5jb2xvci5yZ2IpLnNsaWNl''@;'; put 'put ''KC02KSksWyJzdWIiLCJzdXBlciJdLmluZGV4T2YoTWUudmFsaWduKT4tMSYmKGplWyJzczpWZXJ0aWNhbEFsaWduIl09Q3QoTWUudmFsaWduKSsic2NyaXB0IiksVWUmJl9lLnB1c2goTXIoIkZvbnQiLG51bGwsamUpKX1lOmlmKG9lLmZpbGxJZD4wKXt2YXIgWGU9UC5GaWxsc1tvZS5maWxs''@;'; put 'put ''SWRdO2lmKCFYZXx8IVhlLmZnQ29sb3J8fG51bGw9PVhlLmZnQ29sb3IucmdiKWJyZWFrIGU7X2UucHVzaChNcigiSW50ZXJpb3IiLG51bGwseyJzczpQYXR0ZXJuIjpzSFtYZS5wYXR0ZXJuVHlwZV18fCJTb2xpZCIsInNzOkNvbG9yIjoiIyIrKCJudW1iZXIiPT10eXBlb2YgWGUuZmdDb2xv''@;'; put 'put ''ci5yZ2I/IjAwIitYZS5mZ0NvbG9yLnJnYi50b1N0cmluZygxNik6WGUuZmdDb2xvci5yZ2IpLnNsaWNlKC02KX0pKX1fZS5wdXNoKE1yKCJOdW1iZXJGb3JtYXQiLG51bGwseyJzczpGb3JtYXQiOkJyKFMuX3RhYmxlW29lLm51bUZtdElkXSl9KSk7dmFyIGl0PXsic3M6SUQiOiJzIisoMjEr''@;'; put 'put ''Z2UpfTtvZS5zdHlsZSYmKGl0WyJzczpOYW1lIl09b2Uuc3R5bGUpLGVlLnB1c2goTXIoIlN0eWxlIixfZS5qb2luKCIiKSxpdCkpfSksTXIoIlN0eWxlcyIsZWUuam9pbigiIikpfSgwLFApLERbM109ZnVuY3Rpb24gcGcodyl7aWYoISgod3x8e30pLldvcmtib29rfHx7fSkuTmFtZXMpcmV0''@;'; put 'put ''dXJuIiI7Zm9yKHZhciBQPXcuV29ya2Jvb2suTmFtZXMsRD1bXSxlZT0wO2VlPFAubGVuZ3RoOysrZWUpe3ZhciBvZT1QW2VlXTtudWxsPT1vZS5TaGVldCYmKG9lLk5hbWUubWF0Y2goL15feGxmblwuLyl8fEQucHVzaChabihvZSkpKX1yZXR1cm4gTXIoIk5hbWVzIixELmpvaW4oIiIpKX0o''@;'; put 'put ''dyksQm4rTXIoIldvcmtib29rIixELmpvaW4oIiIpLHt4bWxuczpHaS5zcywieG1sbnM6byI6R2kubywieG1sbnM6eCI6R2kueCwieG1sbnM6c3MiOkdpLnNzLCJ4bWxuczpkdCI6R2kuZHQsInhtbG5zOmh0bWwiOkdpLmh0bWx9KX1mdW5jdGlvbiBEcih3LFAsRCxlZSl7dmFyIG9lPUQsZ2U9''@;'; put 'put ''W10sX2U9UC5zbGljZShQLmwsUC5sK29lKTtpZihlZSYmZWUuZW5jJiZlZS5lbmMuaW5zaXR1JiZfZS5sZW5ndGg+MClzd2l0Y2gody5uKXtjYXNlIkJPRiI6Y2FzZSJGaWxlUGFzcyI6Y2FzZSJGaWxlTG9jayI6Y2FzZSJJbnRlcmZhY2VIZHIiOmNhc2UiUlJESW5mbyI6Y2FzZSJSUkRIZWFk''@;'; put 'put ''IjpjYXNlIlVzckV4Y2wiOmNhc2UiRU9GIjplZS5lbmMuaW5zaXR1KHVlKHtsZW5ndGg6X2UubGVuZ3RofSksInNraXAiKTticmVhaztjYXNlIkJvdW5kU2hlZXQ4IjplZS5lbmMuaW5zaXR1KHVlKHtsZW5ndGg6NH0pLCJza2lwIiksX2U9QnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oX2Uu''@;'; put 'put ''c2xpY2UoMCw0KSksQnVmZmVyLmZyb20oZWUuZW5jLmluc2l0dShfZS5zbGljZSg0KSkpXSk7YnJlYWs7ZGVmYXVsdDpfZT1lZS5lbmMuaW5zaXR1KF9lKX1BcnJheS5pc0FycmF5KFApJiYhQXJyYXkuaXNBcnJheShfZSkmJihfZT1BcnJheS5mcm9tKF9lKSksZ2UucHVzaChfZSksUC5sKz1v''@;'; put 'put ''ZTtmb3IodmFyIHZlPWYxW1duKFAsUC5sKV0sTWU9MDtudWxsIT12ZSYmIkNvbnRpbnVlIj09PXZlLm4uc2xpY2UoMCw4KTspb2U9V24oUCxQLmwrMiksTWU9UC5sKzQsZWUmJmVlLmVuYyYmZWUuZW5jLmluc2l0dSYmZWUuZW5jLmluc2l0dSh1ZSh7bGVuZ3RoOjR9KSwic2tpcCIpLCJDb250''@;'; put 'put ''aW51ZUZydCI9PXZlLm4/TWUrPTQ6IkNvbnRpbnVlRnJ0Ij09dmUubi5zbGljZSgwLDExKSYmKE1lKz0xMixlZSYmZWUuZW5jJiZlZS5lbmMuaW5zaXR1JiZlZS5lbmMuaW5zaXR1KHVlKHtsZW5ndGg6OH0pLCJza2lwIikpLF9lPVAuc2xpY2UoTWUsUC5sKzQrb2UpLGVlJiZlZS5lbmMmJmVl''@;'; put 'put ''LmVuYy5pbnNpdHUmJl9lLmxlbmd0aD4wJiYoX2U9ZWUuZW5jLmluc2l0dShfZSkpLGdlLnB1c2goX2UpLFAubCs9NCtvZSx2ZT1mMVtXbihQLFAubCldO3ZhciBqZT1NKGdlKTtzcyhqZSwwKTt2YXIgVWU9MDtqZS5sZW5zPVtdO2Zvcih2YXIgWGU9MDtYZTxnZS5sZW5ndGg7KytYZSlqZS5s''@;'; put 'put ''ZW5zLnB1c2goVWUpLFVlKz1nZVtYZV0ubGVuZ3RoO2lmKGplLmxlbmd0aDxEKXRocm93IlhMUyBSZWNvcmQgIisodyYmdy5ufHwiPz8iKSsiIFRydW5jYXRlZDogIitqZS5sZW5ndGgrIiA8ICIrRDtyZXR1cm4gdy5mKGplLGplLmxlbmd0aCxlZSl9ZnVuY3Rpb24gUnUodyxQLEQpe2lmKCJ6''@;'; put 'put ''IiE9PXcudCYmdy5YRil7dmFyIGVlPTA7dHJ5e2VlPXcuenx8dy5YRi5udW1GbXRJZHx8MCxQLmNlbGxORiYmKHcuej1TLl90YWJsZVtlZV0pfWNhdGNoKGdlKXtpZihQLldURil0aHJvdyBnZX1pZighUHx8ITEhPT1QLmNlbGxUZXh0KXRyeXt3Lnc9ImUiPT09dy50P3cud3x8bmFbdy52XTow''@;'; put 'put ''PT09ZWV8fCJHZW5lcmFsIj09ZWU/Im4iPT09dy50PygwfHcudik9PT13LnY/Uy5fZ2VuZXJhbF9pbnQody52KTpTLl9nZW5lcmFsX251bSh3LnYpOlMuX2dlbmVyYWwody52KTpTLmZvcm1hdChlZSx3LnYse2RhdGUxOTA0OiEhRCxkYXRlTkY6UCYmUC5kYXRlTkZ9KX1jYXRjaChnZSl7aWYo''@;'; put 'put ''UC5XVEYpdGhyb3cgZ2V9aWYoUC5jZWxsRGF0ZXMmJmVlJiYibiI9PXcudCYmUy5pc19kYXRlKFMuX3RhYmxlW2VlXXx8U3RyaW5nKGVlKSkpe3ZhciBvZT1TLnBhcnNlX2RhdGVfY29kZSh3LnYpO29lJiYody50PSJkIix3LnY9bmV3IERhdGUob2UueSxvZS5tLTEsb2UuZCxvZS5ILG9lLk0s''@;'; put 'put ''b2UuUyxvZS51KSl9fX1mdW5jdGlvbiBiaCh3LFAsRCl7cmV0dXJue3Y6dyxpeGZlOlAsdDpEfX12YXIgcVQ9ZnVuY3Rpb24odyxQLEQpe1BbIiFvYmplY3RzIl09d30sS3A9e1NJOiJlMDg1OWZmMmY5NGY2ODEwYWI5MTA4MDAyYjI3YjNkOSIsRFNJOiIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4''@;'; put 'put ''MDAyYjJjZjlhZSIsVURJOiIwNWQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZSJ9O2Z1bmN0aW9uIG1nKHcsUCl7dmFyIEQsZWUsb2UsZ2U7aWYoUHx8KFA9e30pLGR2KFApLGooKSxQLmNvZGVwYWdlJiZSKFAuY29kZXBhZ2UpLHcuRnVsbFBhdGhzKXtpZihOZS5maW5kKHcsIi9lbmNy''@;'; put 'put ''eXB0aW9uIikpdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpO0Q9TmUuZmluZCh3LCIhQ29tcE9iaiIpLGVlPU5lLmZpbmQodywiL1dvcmtib29rIil8fE5lLmZpbmQodywiL0Jvb2siKX1lbHNle3N3aXRjaChQLnR5cGUpe2Nhc2UiYmFzZTY0Ijp3PXgobGUu''@;'; put 'put ''ZGVjb2RlKHcpKTticmVhaztjYXNlImJpbmFyeSI6dz14KHcpO2JyZWFrO2Nhc2UiYnVmZmVyIjpicmVhaztjYXNlImFycmF5IjpBcnJheS5pc0FycmF5KHcpfHwodz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh3KSl9c3ModywwKSxlZT17Y29udGVudDp3fX1pZihEJiZmdW5jdGlvbiBU''@;'; put 'put ''aSh3KXt2YXIgUD17fSxEPXcuY29udGVudDtpZihELmw9MjgsUC5BbnNpVXNlclR5cGU9RC5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSxQLkFuc2lDbGlwYm9hcmRGb3JtYXQ9ZnVuY3Rpb24gZG0odyl7cmV0dXJuIGZtKHcsMSl9KEQpLEQubGVuZ3RoLUQubDw9NClyZXR1cm4gUDt2YXIg''@;'; put 'put ''ZWU9RC5yZWFkX3NoaWZ0KDQpO2lmKDA9PWVlfHxlZT40MHx8KEQubC09NCxQLlJlc2VydmVkMT1ELnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpLEQubGVuZ3RoLUQubDw9NCl8fDE5MDc1MDU2NTIhPT0oZWU9RC5yZWFkX3NoaWZ0KDQpKXx8KFAuVW5pY29kZUNsaXBib2FyZEZvcm1hdD1m''@;'; put 'put ''dW5jdGlvbiBMYih3KXtyZXR1cm4gZm0odywyKX0oRCksMD09KGVlPUQucmVhZF9zaGlmdCg0KSl8fGVlPjQwKSlyZXR1cm4gUDtELmwtPTQsUC5SZXNlcnZlZDI9RC5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfShEKSxQLmJvb2tQcm9wcyYmIVAuYm9va1NoZWV0cylvZT17fTtlbHNle3ZhciBf''@;'; put 'put ''ZT1kZT8iYnVmZmVyIjoiYXJyYXkiO2lmKGVlJiZlZS5jb250ZW50KW9lPWZ1bmN0aW9uIFhUKHcsUCl7dmFyIEQ9e29wdHM6e319LGVlPXt9O251bGwhPW5lJiZudWxsPT1QLmRlbnNlJiYoUC5kZW5zZT1uZSk7dmFyIFhlLGZ0LHV0LHd0LFR0LFl0LG9lPVAuZGVuc2U/W106e30sZ2U9e30s''@;'; put 'put ''X2U9e30sdmU9bnVsbCxNZT1bXSxqZT0iIixVZT17fSxpdD0iIixIdD17fSxrdD1bXSxnbj1bXSxxbj1bXSxmbj17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxLbj17fSx6bj17Rm9udHM6W119LE9uPWZ1bmN0aW9uKGVpKXtyZXR1cm4gZWk8OD9TcltlaV06''@;'; put 'put ''ZWk8NjQmJnFuW2VpLThdfHxTcltlaV19LGVyPWZ1bmN0aW9uKGVpLGthKXt2YXIgQ3Msd2E9ZWkuWEYuZGF0YTt3YSYmKHdhLnBhdHRlcm5UeXBlfHxudWxsIT13YS5pY3ZGb3JlKSYma2EmJmthLmNlbGxTdHlsZXMmJihlaS5zPXt9LGVpLnMucGF0dGVyblR5cGU9d2EucGF0dGVyblR5cGUs''@;'; put 'put ''ZWkuWEYuZm9udCYmTnQoZWkucyxlaS5YRi5mb250KSx3YS5mV3JhcCYmKChlaS5zLmFsaWdubWVudHx8KGVpLnMuYWxpZ25tZW50PXt9KSkud3JhcFRleHQ9ITApLHdhLmZTaHJpbmtUb0ZpdCYmKChlaS5zLmFsaWdubWVudHx8KGVpLnMuYWxpZ25tZW50PXt9KSkuc2hyaW5rVG9GaXQ9ITAp''@;'; put 'put ''LHdhLmhhbGlnbiYmKChlaS5zLmFsaWdubWVudHx8KGVpLnMuYWxpZ25tZW50PXt9KSkuaG9yaXpvbnRhbD13YS5oYWxpZ24pLHdhLnZhbGlnbiYmKChlaS5zLmFsaWdubWVudHx8KGVpLnMuYWxpZ25tZW50PXt9KSkudmVydGljYWw9d2EudmFsaWduKSx3YS5jSW5kZW50JiYoKGVpLnMuYWxp''@;'; put 'put ''Z25tZW50fHwoZWkucy5hbGlnbm1lbnQ9e30pKS5pbmRlbnQ9d2EuY0luZGVudCksNjQhPXdhLmljdkZvcmUmJjY1IT13YS5pY3ZCYWNrJiYoKENzPWZmKE9uKHdhLmljdkZvcmUpKSkmJihlaS5zLmZnQ29sb3I9e3JnYjpDc30pLChDcz1mZihPbih3YS5pY3ZCYWNrKSkpJiYoZWkucy5iZ0Nv''@;'; put 'put ''bG9yPXtyZ2I6Q3N9KSksWyJMZWZ0IiwiUmlnaHQiLCJUb3AiLCJCb3R0b20iXS5mb3JFYWNoKGZ1bmN0aW9uKHFzKXt3YVsiZGciK3FzXSYmKGVpLnNbcXMudG9Mb3dlckNhc2UoKV09e3N0eWxlOnBoW3dhWyJkZyIrcXNdXSxjb2xvcjp7cmdiOmZmKE9uKHdhWyJpY3YiK3FzXSkpfX0pfSkp''@;'; put 'put ''fSx0cj1mdW5jdGlvbihlaSxrYSx3YSl7aWYoIShDaT4xfHx3YS5zaGVldFJvd3MmJmVpLnI+PXdhLnNoZWV0Um93cykpe2lmKHdhLmNlbGxTdHlsZXMmJmthLlhGJiZrYS5YRi5kYXRhJiZlcihrYSx3YSksZGVsZXRlIGthLml4ZmUsZGVsZXRlIGthLlhGLFhlPWVpLGl0PXBpKGVpKSwoIV9l''@;'; put 'put ''fHwhX2Uuc3x8IV9lLmUpJiYoX2U9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSksZWkucjxfZS5zLnImJihfZS5zLnI9ZWkuciksZWkuYzxfZS5zLmMmJihfZS5zLmM9ZWkuYyksZWkucisxPl9lLmUuciYmKF9lLmUucj1laS5yKzEpLGVpLmMrMT5fZS5lLmMmJihfZS5lLmM9ZWkuYysxKSx3''@;'; put 'put ''YS5jZWxsRm9ybXVsYSYma2EuZilmb3IodmFyIENzPTA7Q3M8a3QubGVuZ3RoOysrQ3MpaWYoIShrdFtDc11bMF0ucy5jPmVpLmN8fGt0W0NzXVswXS5zLnI+ZWkucnx8a3RbQ3NdWzBdLmUuYzxlaS5jfHxrdFtDc11bMF0uZS5yPGVpLnIpKXtrYS5GPVZvKGt0W0NzXVswXSksKGt0W0NzXVsw''@;'; put 'put ''XS5zLmMhPWVpLmN8fGt0W0NzXVswXS5zLnIhPWVpLnIpJiZkZWxldGUga2EuZixrYS5mJiYoa2EuZj0iIitEcyhrdFtDc11bMV0sX2UsZWkseG4sWW4pKTticmVha313YS5kZW5zZT8ob2VbZWkucl18fChvZVtlaS5yXT1bXSksb2VbZWkucl1bZWkuY109a2EpOm9lW2l0XT1rYX19LFluPXtl''@;'; put 'put ''bmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpIdCxhcnJheWY6a3QscnJ0YWJpZDpbXSxsYXN0dXNlcjoiIixiaWZmOjgsY29kZXBhZ2U6MCx3aW5sb2NrZWQ6MCxjZWxsU3R5bGVzOiEhUCYmISFQLmNlbGxTdHlsZXMsV1RGOiEhUCYmISFQLnd0Zn07WW4ucGFzc3dvcmQ9UC5wYXNz''@;'; put 'put ''d29yZD9QLnBhc3N3b3JkOiJWZWx2ZXRTd2VhdHNob3AiO3ZhciBsaSxqcj1udWxsLEVpPVtdLElpPVtdLHRpPVtdLGZyPVtdLHJyPSExLHhuPVtdO3huLlNoZWV0TmFtZXM9WW4uc25hbWVzLHhuLnNoYXJlZGY9WW4uc2hhcmVkZix4bi5hcnJheWY9WW4uYXJyYXlmLHhuLm5hbWVzPVtdLHhu''@;'; put 'put ''LlhUST1bXTt2YXIgT2ksbXI9IiIsQ2k9MCx6cj0wLHppPVtdLHdvPVtdO1luLmNvZGVwYWdlPTEyMDAseigxMjAwKTtmb3IodmFyIFhvPSExO3cubDx3Lmxlbmd0aC0xOyl7dmFyIGZvPXcubCxSbz13LnJlYWRfc2hpZnQoMik7aWYoWW4mJlluLmVuYyYmWW4uZW5jLmluc2l0dSYmWW4uZW5j''@;'; put 'put ''Lmluc2l0dSh1ZShbMCwwXSksImhlYWRlci0wIiksMD09PVJvJiYiRU9GIj09PW1yKWJyZWFrO3ZhciBUbz13Lmw9PT13Lmxlbmd0aD8wOncucmVhZF9zaGlmdCgyKTtZbiYmWW4uZW5jJiZZbi5lbmMuaW5zaXR1JiZZbi5lbmMuaW5zaXR1KHVlKFswLDBdKSwibGVuZ3RoLTAiKTt2YXIgbWk9''@;'; put 'put ''ZjFbUm9dO2lmKG1pJiZtaS5mKXtpZihQLmJvb2tTaGVldHMmJiJCb3VuZFNoZWV0OCI9PT1tciYmIkJvdW5kU2hlZXQ4IiE9PW1pLm4pYnJlYWs7aWYobXI9bWkubiwyPT09bWkucnx8MTI9PW1pLnIpe3ZhciBybD13LnJlYWRfc2hpZnQoMik7aWYoVG8tPTIsWW4mJlluLmVuYyYmWW4uZW5j''@;'; put 'put ''Lmluc2l0dSYmWW4uZW5jLmluc2l0dSh1ZShbMCwwXSkpLCFZbi5lbmMmJnJsIT09Um8mJigoMjU1JnJsKTw8OHxybD4+OCkhPT1Sbyl0aHJvdyBuZXcgRXJyb3IoInJ0IG1pc21hdGNoOiAiK3JsKyIhPSIrUm8pOzEyPT1taS5yJiYody5sKz0xMCxUby09MTAsWW4mJlluLmVuYyYmWW4uZW5j''@;'; put 'put ''Lmluc2l0dSYmWW4uZW5jLmluc2l0dSh1ZShbMCwwLDAsMCwwLDAsMCwwLDAsMF0pKSl9dmFyIEFuPURyKG1pLHcsVG8sWW4pLEFhPW1pLm47aWYoMD09Q2kmJiJCT0YiIT1BYSljb250aW51ZTtzd2l0Y2goQWEpe2Nhc2UiRGF0ZTE5MDQiOkQub3B0cy5EYXRlMTkwND1mbi5XQlByb3BzLmRh''@;'; put 'put ''dGUxOTA0PUFuO2JyZWFrO2Nhc2UiV3JpdGVQcm90ZWN0IjpELm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2UiRmlsZVBhc3MiOmlmKFluLmVuY3x8KHcubD0wLENpPTApLFluLmVuYz1BbiwhUC5wYXNzd29yZCYmbnVsbD09QW4udmFsaWQpdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlz''@;'; put 'put ''IHBhc3N3b3JkLXByb3RlY3RlZCIpO2lmKG51bGw9PUFuLnZhbGlkKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBzY2hlbWUgdW5zdXBwb3J0ZWQiKTtpZighQW4udmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIldyaXRlQWNjZXNz''@;'; put 'put ''IjpZbi5sYXN0dXNlcj1BbjticmVhaztjYXNlIkZpbGVTaGFyaW5nIjpjYXNlIlRlbXBsYXRlIjpjYXNlIkJvb2tCb29sIjpjYXNlIlVzZXNFTEZzIjpjYXNlIk1UUlNldHRpbmdzIjpjYXNlIlVuY2FsY2VkIjpjYXNlIkV4dFNTVCI6Y2FzZSJCb29rRXh0IjpjYXNlIlJpY2hUZXh0U3RyZWFt''@;'; put 'put ''IjpjYXNlIkJrSGltIjpjYXNlIkluZGV4IjpjYXNlIlByb3Q0UmV2IjpjYXNlIlByb3Q0UmV2UGFzcyI6YnJlYWs7Y2FzZSJDb2RlUGFnZSI6dmFyIE1hPU51bWJlcihBbik7c3dpdGNoKE1hKXtjYXNlIDIxMDEwOk1hPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODpNYT0xZTQ7YnJlYWs7Y2FzZSAz''@;'; put 'put ''Mjc2OTpNYT0xMjUyfXooWW4uY29kZXBhZ2U9TWEpLFhvPSEwO2JyZWFrO2Nhc2UiUlJUYWJJZCI6WW4ucnJ0YWJpZD1BbjticmVhaztjYXNlIldpblByb3RlY3QiOlluLndpbmxvY2tlZD1BbjticmVhaztjYXNlIlJlZnJlc2hBbGwiOmNhc2UiQ2FsY0NvdW50IjpjYXNlIkNhbGNEZWx0YSI6''@;'; put 'put ''Y2FzZSJDYWxjSXRlciI6Y2FzZSJDYWxjTW9kZSI6Y2FzZSJDYWxjUHJlY2lzaW9uIjpjYXNlIkNhbGNTYXZlUmVjYWxjIjpELm9wdHNbQWFdPUFuO2JyZWFrO2Nhc2UiQ2FsY1JlZk1vZGUiOlluLkNhbGNSZWZNb2RlPUFuO2JyZWFrO2Nhc2UiRm9yY2VGdWxsQ2FsY3VsYXRpb24iOkQub3B0''@;'; put 'put ''cy5GdWxsQ2FsYz1BbjticmVhaztjYXNlIldzQm9vbCI6QW4uZkRpYWxvZyYmKG9lWyIhdHlwZSJdPSJkaWFsb2ciKSxBbi5mQmVsb3d8fCgob2VbIiFvdXRsaW5lIl18fChvZVsiIW91dGxpbmUiXT17fSkpLmFib3ZlPSEwKSxBbi5mUmlnaHR8fCgob2VbIiFvdXRsaW5lIl18fChvZVsiIW91''@;'; put 'put ''dGxpbmUiXT17fSkpLmxlZnQ9ITApO2JyZWFrO2Nhc2UiWEYiOkFuLmZvbnQ9em4uRm9udHNbQW4uaWZudDw0P0FuLmlmbnQ6QW4uaWZudC0xXSxnbi5wdXNoKEFuKTticmVhaztjYXNlIlN1cEJvb2siOnhuLnB1c2goW0FuXSkseG5beG4ubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIkV4''@;'; put 'put ''dGVybk5hbWUiOnhuW3huLmxlbmd0aC0xXS5wdXNoKEFuKTticmVhaztjYXNlIkxibCI6T2k9e05hbWU6QW4uTmFtZSxSZWY6RHMoQW4ucmdjZSxfZSxudWxsLHhuLFluKX0sQW4uaXRhYj4wJiYoT2kuU2hlZXQ9QW4uaXRhYi0xKSx4bi5uYW1lcy5wdXNoKE9pKSx4blswXXx8KHhuWzBdPVtd''@;'; put 'put ''LHhuWzBdLlhUST1bXSkseG5beG4ubGVuZ3RoLTFdLnB1c2goQW4pLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT1Bbi5OYW1lJiZBbi5pdGFiPjAmJkFuLnJnY2UmJkFuLnJnY2VbMF0mJkFuLnJnY2VbMF1bMF0mJiJQdGdBcmVhM2QiPT1Bbi5yZ2NlWzBdWzBdWzBdJiYod29bQW4uaXRhYi0x''@;'; put 'put ''XT17cmVmOlZvKEFuLnJnY2VbMF1bMF1bMV1bMl0pfSk7YnJlYWs7Y2FzZSJFeHRlcm5Db3VudCI6WW4uRXh0ZXJuQ291bnQ9QW47YnJlYWs7Y2FzZSJFeHRlcm5TaGVldCI6MD09eG4ubGVuZ3RoJiYoeG5bMF09W10seG5bMF0uWFRJPVtdKSx4blt4bi5sZW5ndGgtMV0uWFRJPXhuW3huLmxl''@;'; put 'put ''bmd0aC0xXS5YVEkuY29uY2F0KEFuKSx4bi5YVEk9eG4uWFRJLmNvbmNhdChBbik7YnJlYWs7Y2FzZSJOYW1lQ210IjppZihZbi5iaWZmPDgpYnJlYWs7bnVsbCE9T2kmJihPaS5Db21tZW50PUFuWzFdKTticmVhaztjYXNlIlByb3RlY3QiOm9lWyIhcHJvdGVjdCJdPUFuO2JyZWFrO2Nhc2Ui''@;'; put 'put ''UGFzc3dvcmQiOjAhPT1BbiYmWW4uV1RGJiZjb25zb2xlLmVycm9yKCJQYXNzd29yZCB2ZXJpZmllcjogIitBbik7YnJlYWs7Y2FzZSJCb3VuZFNoZWV0OCI6Z2VbQW4ucG9zXT1BbixZbi5zbmFtZXMucHVzaChBbi5uYW1lKTticmVhaztjYXNlIkVPRiI6aWYob2VbIiFncmlkbGluZXMiXT0h''@;'; put 'put ''anJ8fGpyLmdyaWQsanI9bnVsbCwtLUNpKWJyZWFrO2lmKF9lLmUpe2lmKF9lLmUucj4wJiZfZS5lLmM+MCl7aWYoX2UuZS5yLS0sX2UuZS5jLS0sb2VbIiFyZWYiXT1WbyhfZSksUC5zaGVldFJvd3MmJlAuc2hlZXRSb3dzPD1fZS5lLnIpe3ZhciBJcz1fZS5lLnI7X2UuZS5yPVAuc2hlZXRS''@;'; put 'put ''b3dzLTEsb2VbIiFmdWxscmVmIl09b2VbIiFyZWYiXSxvZVsiIXJlZiJdPVZvKF9lKSxfZS5lLnI9SXN9X2UuZS5yKyssX2UuZS5jKyt9RWkubGVuZ3RoPjAmJihvZVsiIW1lcmdlcyJdPUVpKSxJaS5sZW5ndGg+MCYmcVQoSWksb2Usem4pLHRpLmxlbmd0aD4wJiYob2VbIiFjb2xzIl09dGkp''@;'; put 'put ''LGZyLmxlbmd0aD4wJiYob2VbIiFyb3dzIl09ZnIpLGZuLlNoZWV0cy5wdXNoKEtuKX0iIj09PWplP1VlPW9lOmVlW2plXT1vZSxvZT1QLmRlbnNlP1tdOnt9O2JyZWFrO2Nhc2UiQk9GIjppZig4PT09WW4uYmlmZiYmKFluLmJpZmY9ezk6Miw1MjE6MywxMDMzOjR9W1JvXXx8ezUxMjoyLDc2''@;'; put 'put ''ODozLDEwMjQ6NCwxMjgwOjUsMTUzNjo4LDI6Miw3OjJ9W0FuLkJJRkZWZXJdfHw4KSxZbi5iaWZmZ3Vlc3M9MD09QW4uQklGRlZlciwwPT1Bbi5CSUZGVmVyJiY0MDk2PT1Bbi5kdCYmKFluLmJpZmY9NSxYbz0hMCx6KFluLmNvZGVwYWdlPTI4NTkxKSksOD09WW4uYmlmZiYmMD09QW4uQklG''@;'; put 'put ''RlZlciYmMTY9PUFuLmR0JiYoWW4uYmlmZj0yKSxDaSsrKWJyZWFrO2lmKG9lPVAuZGVuc2U/W106e30sWW4uYmlmZjw4JiYhWG8mJihYbz0hMCx6KFluLmNvZGVwYWdlPVAuY29kZXBhZ2V8fDEyNTIpKSxZbi5iaWZmPDV8fDA9PUFuLkJJRkZWZXImJjQwOTY9PUFuLmR0KXsiIj09PWplJiYo''@;'; put 'put ''amU9IlNoZWV0MSIpLF9lPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX07dmFyIHVzPXtwb3M6dy5sLVRvLG5hbWU6amV9O2dlW3VzLnBvc109dXMsWW4uc25hbWVzLnB1c2goamUpfWVsc2UgamU9KGdlW2ZvXXx8e25hbWU6IiJ9KS5uYW1lOzMyPT1Bbi5kdCYmKG9lWyIhdHlwZSJdPSJjaGFy''@;'; put 'put ''dCIpLDY0PT1Bbi5kdCYmKG9lWyIhdHlwZSJdPSJtYWNybyIpLEVpPVtdLElpPVtdLFluLmFycmF5Zj1rdD1bXSx0aT1bXSxmcj1bXSxycj0hMSxLbj17SGlkZGVuOihnZVtmb118fHtoczowfSkuaHMsbmFtZTpqZX07YnJlYWs7Y2FzZSJOdW1iZXIiOmNhc2UiQklGRjJOVU0iOmNhc2UiQklG''@;'; put 'put ''RjJJTlQiOiJjaGFydCI9PW9lWyIhdHlwZSJdJiYoUC5kZW5zZT8ob2VbQW4ucl18fFtdKVtBbi5jXTpvZVtwaSh7YzpBbi5jLHI6QW4ucn0pXSkmJisrQW4uYyxUdD17aXhmZTpBbi5peGZlLFhGOmduW0FuLml4ZmVdfHx7fSx2OkFuLnZhbCx0OiJuIn0senI+MCYmKFR0Lno9emlbVHQuaXhm''@;'; put 'put ''ZT4+OCY2M10pLFJ1KFR0LFAsRC5vcHRzLkRhdGUxOTA0KSx0cih7YzpBbi5jLHI6QW4ucn0sVHQsUCk7YnJlYWs7Y2FzZSJCb29sRXJyIjpUdD17aXhmZTpBbi5peGZlLFhGOmduW0FuLml4ZmVdLHY6QW4udmFsLHQ6QW4udH0senI+MCYmKFR0Lno9emlbVHQuaXhmZT4+OCY2M10pLFJ1KFR0''@;'; put 'put ''LFAsRC5vcHRzLkRhdGUxOTA0KSx0cih7YzpBbi5jLHI6QW4ucn0sVHQsUCk7YnJlYWs7Y2FzZSJSSyI6VHQ9e2l4ZmU6QW4uaXhmZSxYRjpnbltBbi5peGZlXSx2OkFuLnJrbnVtLHQ6Im4ifSx6cj4wJiYoVHQuej16aVtUdC5peGZlPj44JjYzXSksUnUoVHQsUCxELm9wdHMuRGF0ZTE5MDQp''@;'; put 'put ''LHRyKHtjOkFuLmMscjpBbi5yfSxUdCxQKTticmVhaztjYXNlIk11bFJrIjpmb3IodmFyIHdzPUFuLmM7d3M8PUFuLkM7Kyt3cyl7dmFyIHVjPUFuLnJrcmVjW3dzLUFuLmNdWzBdO1R0PXtpeGZlOnVjLFhGOmduW3VjXSx2OkFuLnJrcmVjW3dzLUFuLmNdWzFdLHQ6Im4ifSx6cj4wJiYoVHQu''@;'; put 'put ''ej16aVtUdC5peGZlPj44JjYzXSksUnUoVHQsUCxELm9wdHMuRGF0ZTE5MDQpLHRyKHtjOndzLHI6QW4ucn0sVHQsUCl9YnJlYWs7Y2FzZSJGb3JtdWxhIjppZigiU3RyaW5nIj09QW4udmFsKXt2ZT1BbjticmVha31pZigoVHQ9YmgoQW4udmFsLEFuLmNlbGwuaXhmZSxBbi50dCkpLlhGPWdu''@;'; put 'put ''W1R0Lml4ZmVdLFAuY2VsbEZvcm11bGEpe3ZhciBucz1Bbi5mb3JtdWxhO2lmKG5zJiZuc1swXSYmbnNbMF1bMF0mJiJQdGdFeHAiPT1uc1swXVswXVswXSl7dmFyIFF0PW5zWzBdWzBdWzFdWzBdLHZuPW5zWzBdWzBdWzFdWzFdLFBuPXBpKHtyOlF0LGM6dm59KTtIdFtQbl0/VHQuZj0iIitE''@;'; put 'put ''cyhBbi5mb3JtdWxhLF9lLEFuLmNlbGwseG4sWW4pOlR0LkY9KChQLmRlbnNlPyhvZVtRdF18fFtdKVt2bl06b2VbUG5dKXx8e30pLkZ9ZWxzZSBUdC5mPSIiK0RzKEFuLmZvcm11bGEsX2UsQW4uY2VsbCx4bixZbil9enI+MCYmKFR0Lno9emlbVHQuaXhmZT4+OCY2M10pLFJ1KFR0LFAsRC5v''@;'; put 'put ''cHRzLkRhdGUxOTA0KSx0cihBbi5jZWxsLFR0LFApLHZlPUFuO2JyZWFrO2Nhc2UiU3RyaW5nIjppZighdmUpdGhyb3cgbmV3IEVycm9yKCJTdHJpbmcgcmVjb3JkIGV4cGVjdHMgRm9ybXVsYSIpO3ZlLnZhbD1BbiwoVHQ9YmgoQW4sdmUuY2VsbC5peGZlLCJzIikpLlhGPWduW1R0Lml4ZmVd''@;'; put 'put ''LFAuY2VsbEZvcm11bGEmJihUdC5mPSIiK0RzKHZlLmZvcm11bGEsX2UsdmUuY2VsbCx4bixZbikpLHpyPjAmJihUdC56PXppW1R0Lml4ZmU+PjgmNjNdKSxSdShUdCxQLEQub3B0cy5EYXRlMTkwNCksdHIodmUuY2VsbCxUdCxQKSx2ZT1udWxsO2JyZWFrO2Nhc2UiQXJyYXkiOmt0LnB1c2go''@;'; put 'put ''QW4pO3ZhciAkcj1waShBblswXS5zKTtpZihmdD1QLmRlbnNlPyhvZVtBblswXS5zLnJdfHxbXSlbQW5bMF0ucy5jXTpvZVskcl0sUC5jZWxsRm9ybXVsYSYmZnQpe2lmKCF2ZXx8ISRyfHwhZnQpYnJlYWs7ZnQuZj0iIitEcyhBblsxXSxfZSxBblswXSx4bixZbiksZnQuRj1WbyhBblswXSl9''@;'; put 'put ''YnJlYWs7Y2FzZSJTaHJGbWxhIjppZighUC5jZWxsRm9ybXVsYSlicmVhaztpZihpdCl7aWYoIXZlKWJyZWFrO0h0W3BpKHZlLmNlbGwpXT1BblswXSwoKGZ0PVAuZGVuc2U/KG9lW3ZlLmNlbGwucl18fFtdKVt2ZS5jZWxsLmNdOm9lW3BpKHZlLmNlbGwpXSl8fHt9KS5mPSIiK0RzKEFuWzBd''@;'; put 'put ''LF9lLFhlLHhuLFluKX1icmVhaztjYXNlIkxhYmVsU3N0IjpUdD1iaChNZVtBbi5pc3N0XS50LEFuLml4ZmUsInMiKSxNZVtBbi5pc3N0XS5oJiYoVHQuaD1NZVtBbi5pc3N0XS5oKSxUdC5YRj1nbltUdC5peGZlXSx6cj4wJiYoVHQuej16aVtUdC5peGZlPj44JjYzXSksUnUoVHQsUCxELm9w''@;'; put 'put ''dHMuRGF0ZTE5MDQpLHRyKHtjOkFuLmMscjpBbi5yfSxUdCxQKSxNZVtBbi5pc3N0XS5SJiYoVHQuUj1NZVtBbi5pc3N0XS5SLm1hcChmdW5jdGlvbihVaSl7dmFyIGVpPUp0KFVpKTtyZXR1cm4gVWkucz09em4uRm9udHNbMF0mJihlaS5zPVR0LnMpLGVpfSkpO2JyZWFrO2Nhc2UiQmxhbmsi''@;'; put 'put ''OlAuc2hlZXRTdHVicyYmKFR0PXtpeGZlOkFuLml4ZmUsWEY6Z25bQW4uaXhmZV0sdDoieiJ9LHpyPjAmJihUdC56PXppW1R0Lml4ZmU+PjgmNjNdKSxSdShUdCxQLEQub3B0cy5EYXRlMTkwNCksdHIoe2M6QW4uYyxyOkFuLnJ9LFR0LFApKTticmVhaztjYXNlIk11bEJsYW5rIjppZihQLnNo''@;'; put 'put ''ZWV0U3R1YnMpZm9yKHZhciBYbj1Bbi5jO1huPD1Bbi5DOysrWG4pe3ZhciBuaT1Bbi5peGZlW1huLUFuLmNdO1R0PXtpeGZlOm5pLFhGOmduW25pXSx0OiJ6In0senI+MCYmKFR0Lno9emlbVHQuaXhmZT4+OCY2M10pLFJ1KFR0LFAsRC5vcHRzLkRhdGUxOTA0KSx0cih7YzpYbixyOkFuLnJ9''@;'; put 'put ''LFR0LFApfWJyZWFrO2Nhc2UiUlN0cmluZyI6Y2FzZSJMYWJlbCI6Y2FzZSJCSUZGMlNUUiI6KFR0PWJoKEFuLnZhbCxBbi5peGZlLCJzIikpLlhGPWduW1R0Lml4ZmVdLHpyPjAmJihUdC56PXppW1R0Lml4ZmU+PjgmNjNdKSxSdShUdCxQLEQub3B0cy5EYXRlMTkwNCksdHIoe2M6QW4uYyxy''@;'; put 'put ''OkFuLnJ9LFR0LFApO2JyZWFrO2Nhc2UiRGltZW5zaW9ucyI6MT09PUNpJiYoX2U9QW4pO2JyZWFrO2Nhc2UiU1NUIjooTWU9QW4pLmZvckVhY2goZnVuY3Rpb24oVWkpe1VpLl9SPyhVaS5fUlswXSYmVWkuX1JbMF0uaWR4PjAmJlVpLl9SLnVuc2hpZnQoe2lkeDowLGlmbnQ6MH0pLFVpLlI9''@;'; put 'put ''VWkuX1IubWFwKGZ1bmN0aW9uKGVpLGthKXtyZXR1cm57dDoicyIsdjpVaS50LnNsaWNlKGVpLmlkeCwoVWkuX1Jba2ErMV18fHt9KS5pZHgpLHM6em4uRm9udHNbZWkuaWZudDw0P2VpLmlmbnQ6ZWkuaWZudC0xXX19KSxQLmNlbGxIVE1MJiYoVWkuaD11XyhVaS5SKSkpOlAuY2VsbEhUTUwm''@;'; put 'put ''JihVaS5oPWxvKFVpLnQpKSxkZWxldGUgVWkuX1J9KTticmVhaztjYXNlIkZvcm1hdCI6aWYoND09WW4uYmlmZil7emlbenIrK109QW5bMV07Zm9yKHZhciBvcj0wO29yPHpyKzE2MyYmUy5fdGFibGVbb3JdIT1BblsxXTsrK29yKTtvcj49MTYzJiZTLmxvYWQoQW5bMV0senIrMTYzKX1lbHNl''@;'; put 'put ''IFMubG9hZChBblsxXSxBblswXSk7YnJlYWs7Y2FzZSJCSUZGMkZPUk1BVCI6emlbenIrK109QW47Zm9yKHZhciBvaT0wO29pPHpyKzE2MyYmUy5fdGFibGVbb2ldIT1BbjsrK29pKTtvaT49MTYzJiZTLmxvYWQoQW4senIrMTYzKTticmVhaztjYXNlIk1lcmdlQ2VsbHMiOkVpPUVpLmNvbmNh''@;'; put 'put ''dChBbik7YnJlYWs7Y2FzZSJPYmoiOklpW0FuLmNtb1swXV09WW4ubGFzdG9iaj1BbjticmVhaztjYXNlIlR4TyI6WW4ubGFzdG9iai5UeE89QW47YnJlYWs7Y2FzZSJJbURhdGEiOlluLmxhc3RvYmouSW1EYXRhPUFuO2JyZWFrO2Nhc2UiSExpbmsiOmZvcih3dD1BblswXS5zLnI7d3Q8PUFu''@;'; put 'put ''WzBdLmUucjsrK3d0KWZvcih1dD1BblswXS5zLmM7dXQ8PUFuWzBdLmUuYzsrK3V0KShmdD1QLmRlbnNlPyhvZVt3dF18fFtdKVt1dF06b2VbcGkoe2M6dXQscjp3dH0pXSkmJihmdC5sPUFuWzFdKTticmVhaztjYXNlIkhMaW5rVG9vbHRpcCI6Zm9yKHd0PUFuWzBdLnMucjt3dDw9QW5bMF0u''@;'; put 'put ''ZS5yOysrd3QpZm9yKHV0PUFuWzBdLnMuYzt1dDw9QW5bMF0uZS5jOysrdXQpKGZ0PVAuZGVuc2U/KG9lW3d0XXx8W10pW3V0XTpvZVtwaSh7Yzp1dCxyOnd0fSldKSYmZnQubCYmKGZ0LmwuVG9vbHRpcD1BblsxXSk7YnJlYWs7Y2FzZSJOb3RlIjppZihZbi5iaWZmPD01JiZZbi5iaWZmPj0y''@;'; put 'put ''KWJyZWFrO2Z0PVAuZGVuc2U/KG9lW0FuWzBdLnJdfHxbXSlbQW5bMF0uY106b2VbcGkoQW5bMF0pXTt2YXIgeW89SWlbQW5bMl1dO2Z0fHwoUC5kZW5zZT8ob2VbQW5bMF0ucl18fChvZVtBblswXS5yXT1bXSksZnQ9b2VbQW5bMF0ucl1bQW5bMF0uY109e3Q6InoifSk6ZnQ9b2VbcGkoQW5b''@;'; put 'put ''MF0pXT17dDoieiJ9LF9lLmUucj1NYXRoLm1heChfZS5lLnIsQW5bMF0uciksX2Uucy5yPU1hdGgubWluKF9lLnMucixBblswXS5yKSxfZS5lLmM9TWF0aC5tYXgoX2UuZS5jLEFuWzBdLmMpLF9lLnMuYz1NYXRoLm1pbihfZS5zLmMsQW5bMF0uYykpLGZ0LmN8fChmdC5jPVtdKSxmdC5jLnB1''@;'; put 'put ''c2goe2E6QW5bMV0sdDp5by5UeE8udH0pO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKG1pLm4pe2Nhc2UiQ2xydENsaWVudCI6Y2FzZSJIZWFkZXIiOmNhc2UiRm9vdGVyIjpjYXNlIkhDZW50ZXIiOmNhc2UiVkNlbnRlciI6Y2FzZSJQbHMiOmNhc2UiR0NXIjpjYXNlIkxIUmVjb3JkIjpjYXNlIkRC''@;'; put 'put ''Q2VsbCI6Y2FzZSJFbnRFeFUyIjpjYXNlIlN4VmlldyI6Y2FzZSJTeHZkIjpjYXNlIlNYVkkiOmNhc2UiU1hWREV4IjpjYXNlIlN4SXZkIjpjYXNlIlNYU3RyaW5nIjpjYXNlIlN5bmMiOmNhc2UiQWRkaW4iOmNhc2UiU1hESSI6Y2FzZSJTWExJIjpjYXNlIlNYRXgiOmNhc2UiUXNpU1hUYWci''@;'; put 'put ''OmNhc2UiRmVhdCI6Y2FzZSJGZWF0SGRyIjpjYXNlIkZlYXRIZHIxMSI6Y2FzZSJGZWF0dXJlMTEiOmNhc2UiRmVhdHVyZTEyIjpjYXNlIkxpc3QxMiI6Y2FzZSJSZWNhbGNJZCI6Y2FzZSJEeEdDb2wiOmNhc2UiRmJpIjpjYXNlIkZiaTIiOmNhc2UiR2VsRnJhbWUiOmNhc2UiWEZDUkMiOmNh''@;'; put 'put ''c2UiU3R5bGUiOmNhc2UiU3R5bGVFeHQiOmNhc2UiU2NlbmFyaW9Qcm90ZWN0IjpjYXNlIk9ialByb3RlY3QiOmNhc2UiQ29uZEZtdDEyIjpjYXNlIlRhYmxlIjpjYXNlIlRhYmxlU3R5bGVzIjpjYXNlIlRhYmxlU3R5bGUiOmNhc2UiVGFibGVTdHlsZUVsZW1lbnQiOmNhc2UiU1hTdHJlYW1J''@;'; put 'put ''RCI6Y2FzZSJTWFZTIjpjYXNlIkRDb25SZWYiOmNhc2UiU1hBZGRsIjpjYXNlIkRDb25CaW4iOmNhc2UiRENvbk5hbWUiOmNhc2UiU1hQSSI6Y2FzZSJTeEZvcm1hdCI6Y2FzZSJTeFNlbGVjdCI6Y2FzZSJTeFJ1bGUiOmNhc2UiU3hGaWx0IjpjYXNlIlN4SXRtIjpjYXNlIlN4RFhGIjpjYXNl''@;'; put 'put ''IlNjZW5NYW4iOmNhc2UiRENvbiI6Y2FzZSJDZWxsV2F0Y2giOmNhc2UiUHJpbnRSb3dDb2wiOmNhc2UiUHJpbnRHcmlkIjpjYXNlIlByaW50U2l6ZSI6Y2FzZSJYQ1QiOmNhc2UiQ1JOIjpjYXNlIlNjbCI6Y2FzZSJTaGVldEV4dCI6Y2FzZSJTaGVldEV4dE9wdGlvbmFsIjpjYXNlIk9iTm9N''@;'; put 'put ''YWNyb3MiOmNhc2UiT2JQcm9qIjpjYXNlIkdVSURUeXBlTGliIjpjYXNlIldPcHQiOmNhc2UiUGhvbmV0aWNJbmZvIjpjYXNlIk9sZU9iamVjdFNpemUiOmNhc2UiRFhGIjpjYXNlIkRYRk4iOmNhc2UiRFhGTjEyIjpjYXNlIkRYRk4xMkxpc3QiOmNhc2UiRFhGTjEyTm9DQiI6Y2FzZSJEdiI6''@;'; put 'put ''Y2FzZSJEVmFsIjpjYXNlIkJSQUkiOmNhc2UiU2VyaWVzIjpjYXNlIlNlcmllc1RleHQiOmNhc2UiRENvbm4iOmNhc2UiRGJPclBhcmFtUXJ5IjpjYXNlIkRCUXVlcnlFeHQiOmNhc2UiT2xlRGJDb25uIjpjYXNlIkV4dFN0cmluZyI6Y2FzZSJJRm10UmVjb3JkIjpjYXNlIkNvbmRGbXQiOmNh''@;'; put 'put ''c2UiQ0YiOmNhc2UiQ0YxMiI6Y2FzZSJDRkV4IjpjYXNlIkV4Y2VsOUZpbGUiOmNhc2UiVW5pdHMiOmNhc2UiSW50ZXJmYWNlSGRyIjpjYXNlIk1tcyI6Y2FzZSJJbnRlcmZhY2VFbmQiOmNhc2UiRFNGIjpjYXNlIkJ1aWx0SW5Gbkdyb3VwQ291bnQiOmNhc2UiV2luZG93MSI6Y2FzZSJIaWRl''@;'; put 'put ''T2JqIjpjYXNlIkdyaWRTZXQiOmNhc2UiR3V0cyI6Y2FzZSJVc2VyQlZpZXciOmNhc2UiVXNlclNWaWV3QmVnaW4iOmNhc2UiVXNlclNWaWV3RW5kIjpjYXNlIkRlZkNvbFdpZHRoIjpjYXNlIkRlZmF1bHRSb3dIZWlnaHQiOmJyZWFrO2Nhc2UiWEZFeHQiOlJIKGduW0FuLml4ZmVdLEFuLmV4''@;'; put 'put ''dCk7YnJlYWs7Y2FzZSJDb2xJbmZvIjppZighWW4uY2VsbFN0eWxlcylicmVhaztmb3IoO0FuLmU+PUFuLnM7KXRpW0FuLmUtLV09e3dpZHRoOkFuLncvMjU2LGxldmVsOkFuLmxldmVsfHwwLGhpZGRlbjohISgxJkFuLmZsYWdzKX0scnJ8fChycj0hMCksX2ModGlbQW4uZSsxXSk7YnJlYWs7''@;'; put 'put ''Y2FzZSJSb3ciOnZhciBhaT17fTtudWxsIT1Bbi5sZXZlbCYmKGZyW0FuLnJdPWFpLGFpLmxldmVsPUFuLmxldmVsKSxBbi5oaWRkZW4mJihmcltBbi5yXT1haSxhaS5oaWRkZW49ITApLEFuLmhwdCYmKGZyW0FuLnJdPWFpLGFpLmhwdD1Bbi5ocHQsYWkuaHB4PWRmKEFuLmhwdCkpLEFuLml4''@;'; put 'put ''ZmUmJihmcltBbi5yXT1haSxlcihUdD17aXhmZTpBbi5peGZlLFhGOmduW0FuLml4ZmVdfHx7fSx2OjAsdDoibiJ9LFApLGFpLnM9VHQucyk7YnJlYWs7Y2FzZSJMZWZ0TWFyZ2luIjpjYXNlIlJpZ2h0TWFyZ2luIjpjYXNlIlRvcE1hcmdpbiI6Y2FzZSJCb3R0b21NYXJnaW4iOm9lWyIhbWFy''@;'; put 'put ''Z2lucyJdfHxJMihvZVsiIW1hcmdpbnMiXT17fSksb2VbIiFtYXJnaW5zIl1bQWEuc2xpY2UoMCwtNikudG9Mb3dlckNhc2UoKV09QW47YnJlYWs7Y2FzZSJTZWxlY3Rpb24iOm9lWyIhc2VsIl09QW47YnJlYWs7Y2FzZSJTZXR1cCI6b2VbIiFtYXJnaW5zIl18fEkyKG9lWyIhbWFyZ2lucyJd''@;'; put 'put ''PXt9KSxvZVsiIW1hcmdpbnMiXS5oZWFkZXI9QW4uaGVhZGVyLG9lWyIhbWFyZ2lucyJdLmZvb3Rlcj1Bbi5mb290ZXI7YnJlYWs7Y2FzZSJXaW5kb3cyIjpBbi5SVEwmJihmbi5WaWV3c1swXS5SVEw9ITApLGpyPUFuO2JyZWFrO2Nhc2UiQ291bnRyeSI6WXQ9QW47YnJlYWs7Y2FzZSJGb250''@;'; put 'put ''IjpBbi5pY3YmJk9uKEFuLmljdikmJihBbi5jb2xvcj17cmdiOmZmKE9uKEFuLmljdikpfSksZGVsZXRlIEFuLmljdiwwPT16bi5Gb250cy5sZW5ndGgmJmhmKEFuKSx6bi5Gb250cy5wdXNoKEFuKTticmVhaztjYXNlIlBhbGV0dGUiOnFuPUFuO2JyZWFrO2Nhc2UiVGhlbWUiOmxpPUFuO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiQ29kZU5hbWUiOmplP0tuLkNvZGVOYW1lPUFufHxLbi5uYW1lOmZuLldCUHJvcHMuQ29kZU5hbWU9QW58fCJUaGlzV29ya2Jvb2siO2JyZWFrO2Nhc2UiUGFuZSI6KGpyfHx7fSkuZnJvemVuJiYob2VbIiFmcmVlemUiXT1waSh7cjpBbi55fHwwLGM6QW4ueHx8MH0pKTticmVh''@;'; put 'put ''aztkZWZhdWx0OnN3aXRjaChtaS5uKXtjYXNlIkRhdCI6Y2FzZSJCZWdpbiI6Y2FzZSJFbmQiOmNhc2UiU3RhcnRCbG9jayI6Y2FzZSJFbmRCbG9jayI6Y2FzZSJGcmFtZSI6Y2FzZSJBcmVhIjpjYXNlIkF4aXMiOmNhc2UiQXhpc0xpbmUiOmNhc2UiVGljayI6Y2FzZSJBeGVzVXNlZCI6Y2Fz''@;'; put 'put ''ZSJDcnRMYXlvdXQxMiI6Y2FzZSJDcnRMYXlvdXQxMkEiOmNhc2UiQ3J0TGluayI6Y2FzZSJDcnRMaW5lIjpjYXNlIkNydE1sRnJ0IjpjYXNlIkNydE1sRnJ0Q29udGludWUiOmNhc2UiTGluZUZvcm1hdCI6Y2FzZSJBcmVhRm9ybWF0IjpjYXNlIkNoYXJ0IjpjYXNlIkNoYXJ0M2QiOmNhc2Ui''@;'; put 'put ''Q2hhcnQzREJhclNoYXBlIjpjYXNlIkNoYXJ0Rm9ybWF0IjpjYXNlIkNoYXJ0RnJ0SW5mbyI6Y2FzZSJQbG90QXJlYSI6Y2FzZSJQbG90R3Jvd3RoIjpjYXNlIlNlcmllc0xpc3QiOmNhc2UiU2VyUGFyZW50IjpjYXNlIlNlckF1eFRyZW5kIjpjYXNlIkRhdGFGb3JtYXQiOmNhc2UiU2VyVG9D''@;'; put 'put ''cnQiOmNhc2UiRm9udFgiOmNhc2UiQ2F0U2VyUmFuZ2UiOmNhc2UiQXhjRXh0IjpjYXNlIlNlckZtdCI6Y2FzZSJTaHRQcm9wcyI6Y2FzZSJEZWZhdWx0VGV4dCI6Y2FzZSJUZXh0IjpjYXNlIkNhdExhYiI6Y2FzZSJEYXRhTGFiRXh0Q29udGVudHMiOmNhc2UiTGVnZW5kIjpjYXNlIkxlZ2Vu''@;'; put 'put ''ZEV4Y2VwdGlvbiI6Y2FzZSJQaWUiOmNhc2UiU2NhdHRlciI6Y2FzZSJQaWVGb3JtYXQiOmNhc2UiTWFya2VyRm9ybWF0IjpjYXNlIlN0YXJ0T2JqZWN0IjpjYXNlIkVuZE9iamVjdCI6Y2FzZSJBbFJ1bnMiOmNhc2UiT2JqZWN0TGluayI6Y2FzZSJTSUluZGV4IjpjYXNlIkF0dGFjaGVkTGFi''@;'; put 'put ''ZWwiOmNhc2UiWU11bHQiOmNhc2UiTGluZSI6Y2FzZSJCYXIiOmNhc2UiU3VyZiI6Y2FzZSJBeGlzUGFyZW50IjpjYXNlIlBvcyI6Y2FzZSJWYWx1ZVJhbmdlIjpjYXNlIlNYVmlld0V4OSI6Y2FzZSJTWFZpZXdMaW5rIjpjYXNlIlBpdm90Q2hhcnRCaXRzIjpjYXNlIlNCYXNlUmVmIjpjYXNl''@;'; put 'put ''IlRleHRQcm9wc1N0cmVhbSI6Y2FzZSJMbkV4dCI6Y2FzZSJNa3JFeHQiOmNhc2UiQ3J0Q29vcHQiOmNhc2UiUXNpIjpjYXNlIlFzaWYiOmNhc2UiUXNpciI6Y2FzZSJRc2lTWFRhZyI6Y2FzZSJUeHRRcnkiOmNhc2UiRmlsdGVyTW9kZSI6Y2FzZSJBdXRvRmlsdGVyIjpjYXNlIkF1dG9GaWx0''@;'; put 'put ''ZXJJbmZvIjpjYXNlIkF1dG9GaWx0ZXIxMiI6Y2FzZSJEcm9wRG93bk9iaklkcyI6Y2FzZSJTb3J0IjpjYXNlIlNvcnREYXRhIjpjYXNlIlNoYXBlUHJvcHNTdHJlYW0iOmNhc2UiTXNvRHJhd2luZyI6Y2FzZSJNc29EcmF3aW5nR3JvdXAiOmNhc2UiTXNvRHJhd2luZ1NlbGVjdGlvbiI6Y2Fz''@;'; put 'put ''ZSJXZWJQdWIiOmNhc2UiQXV0b1dlYlB1YiI6Y2FzZSJIZWFkZXJGb290ZXIiOmNhc2UiSEZQaWN0dXJlIjpjYXNlIlBMViI6Y2FzZSJIb3Jpem9udGFsUGFnZUJyZWFrcyI6Y2FzZSJWZXJ0aWNhbFBhZ2VCcmVha3MiOmNhc2UiQmFja3VwIjpjYXNlIkNvbXByZXNzUGljdHVyZXMiOmNhc2Ui''@;'; put 'put ''Q29tcGF0MTIiOmNhc2UiQ29udGludWUiOmNhc2UiQ29udGludWVGcnQxMiI6Y2FzZSJGcnRGb250TGlzdCI6Y2FzZSJGcnRXcmFwcGVyIjpicmVhaztkZWZhdWx0OnN3aXRjaChtaS5uKXtjYXNlIlRhYklkQ29uZiI6Y2FzZSJSYWRhciI6Y2FzZSJSYWRhckFyZWEiOmNhc2UiRHJvcEJhciI6''@;'; put 'put ''Y2FzZSJJbnRsIjpjYXNlIkNvb3JkTGlzdCI6Y2FzZSJTZXJBdXhFcnJCYXIiOmNhc2UiQklGRjJGT05UQ0xSIjpjYXNlIkJJRkYyRk1UQ05UIjpjYXNlIkJJRkYyRk9OVFhUUkEiOmNhc2UiQklGRjJYRiI6Y2FzZSJCSUZGM1hGIjpjYXNlIkJJRkY0WEYiOmNhc2UiQklGRjJYRklOREVYIjpj''@;'; put 'put ''YXNlIkJJRkY0Rk1UQ05UIjpjYXNlIkJJRkYyUk9XIjpjYXNlIkJJRkYyV0lORE9XMiI6Y2FzZSJTQ0VOQVJJTyI6Y2FzZSJEQ29uQmluIjpjYXNlIlBpY0YiOmNhc2UiRGF0YUxhYkV4dCI6Y2FzZSJMZWwiOmNhc2UiQm9wUG9wIjpjYXNlIkJvcFBvcEN1c3RvbSI6Y2FzZSJSZWFsVGltZURh''@;'; put 'put ''dGEiOmNhc2UiTmFtZSI6Y2FzZSJMSE5HcmFwaCI6Y2FzZSJGbkdyb3VwTmFtZSI6Y2FzZSJBZGRNZW51IjpjYXNlIkxQciI6Y2FzZSJMaXN0T2JqIjpjYXNlIkxpc3RGaWVsZCI6Y2FzZSJSUlNvcnQiOmNhc2UiQmlnTmFtZSI6Y2FzZSJUb29sYmFySGRyIjpjYXNlIlRvb2xiYXJFbmQiOmNh''@;'; put 'put ''c2UiRERFT2JqTmFtZSI6Y2FzZSJGUlRBcmNoSWQkIjpicmVhaztkZWZhdWx0OmlmKFAuV1RGKXRocm93IlVucmVjb2duaXplZCBSZWNvcmQgIittaS5ufX19fX1lbHNlIHcubCs9VG8sWW4mJlluLmVuYyYmWW4uZW5jLmluc2l0dSYmWW4uZW5jLmluc2l0dSh1ZSh7bGVuZ3RoOlRvfSkpfXJl''@;'; put 'put ''dHVybiBELlNoZWV0TmFtZXM9bXQoZ2UpLnNvcnQoZnVuY3Rpb24oVWksZWkpe3JldHVybiBOdW1iZXIoVWkpLU51bWJlcihlaSl9KS5tYXAoZnVuY3Rpb24oVWkpe3JldHVybiBnZVtVaV0ubmFtZX0pLFAuYm9va1NoZWV0c3x8KEQuU2hlZXRzPWVlKSwhRC5TaGVldE5hbWVzLmxlbmd0aCYm''@;'; put 'put ''VWVbIiFyZWYiXT8oRC5TaGVldE5hbWVzLnB1c2goIlNoZWV0MSIpLEQuU2hlZXRzJiYoRC5TaGVldHMuU2hlZXQxPVVlKSk6RC5QcmVhbWJsZT1VZSxELlNoZWV0cyYmd28uZm9yRWFjaChmdW5jdGlvbihVaSxlaSl7RC5TaGVldHNbRC5TaGVldE5hbWVzW2VpXV1bIiFhdXRvZmlsdGVyIl09''@;'; put 'put ''VWl9KSxELlN0cmluZ3M9TWUsRC5TU0Y9Uy5nZXRfdGFibGUoKSxZbi5lbmMmJihELkVuY3J5cHRpb249WW4uZW5jKSxsaSYmKEQuVGhlbWVzPWxpKSxELk1ldGFkYXRhPXt9LHZvaWQgMCE9PVl0JiYoRC5NZXRhZGF0YS5Db3VudHJ5PVl0KSx4bi5uYW1lcy5sZW5ndGg+MCYmKGZuLk5hbWVz''@;'; put 'put ''PXhuLm5hbWVzKSxELldvcmtib29rPWZuLER9KGVlLmNvbnRlbnQsUCk7ZWxzZSBpZigoZ2U9TmUuZmluZCh3LCJQZXJmZWN0T2ZmaWNlX01BSU4iKSkmJmdlLmNvbnRlbnQpb2U9bDgudG9fd29ya2Jvb2soZ2UuY29udGVudCwoUC50eXBlPV9lLFApKTtlbHNle2lmKCEoZ2U9TmUuZmluZCh3''@;'; put 'put ''LCJOYXRpdmVDb250ZW50X01BSU4iKSl8fCFnZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtIik7b2U9bDgudG9fd29ya2Jvb2soZ2UuY29udGVudCwoUC50eXBlPV9lLFApKX1QLmJvb2tWQkEmJncuRnVsbFBhdGhzJiZOZS5maW5kKHcsIi9f''@;'; put 'put ''VkJBX1BST0pFQ1RfQ1VSL1ZCQS9kaXIiKSYmKG9lLnZiYXJhdz1mdW5jdGlvbiAkbSh3KXt2YXIgUD1OZS51dGlscy5jZmJfbmV3KHtyb290OiJSIn0pO3JldHVybiB3LkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKEQsZWUpe2lmKCIvIiE9PUQuc2xpY2UoLTEpJiZELm1hdGNoKC9fVkJB''@;'; put 'put ''X1BST0pFQ1RfQ1VSLykpe3ZhciBvZT1ELnJlcGxhY2UoL15bXlwvXSovLCJSIikucmVwbGFjZSgvXC9fVkJBX1BST0pFQ1RfQ1VSXHUwMDAwKi8sIiIpO05lLnV0aWxzLmNmYl9hZGQoUCxvZSx3LkZpbGVJbmRleFtlZV0uY29udGVudCl9fSksTmUud3JpdGUoUCl9KHcpKX12YXIgdmU9e307''@;'; put 'put ''cmV0dXJuIHcuRnVsbFBhdGhzJiZmdW5jdGlvbiBKVCh3LFAsRCl7dmFyIGVlPU5lLmZpbmQodywiIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIik7aWYoZWUmJmVlLnNpemU+MCl0cnl7dmFyIG9lPVdiKGVlLG1tLEtwLkRTSSk7Zm9yKHZhciBnZSBpbiBvZSlQW2dlXT1vZVtnZV19Y2F0''@;'; put 'put ''Y2goamUpe2lmKEQuV1RGKXRocm93IGplfXZhciBfZT1OZS5maW5kKHcsIiFTdW1tYXJ5SW5mb3JtYXRpb24iKTtpZihfZSYmX2Uuc2l6ZT4wKXRyeXt2YXIgdmU9V2IoX2Usa3IsS3AuU0kpO2Zvcih2YXIgTWUgaW4gdmUpbnVsbD09UFtNZV0mJihQW01lXT12ZVtNZV0pfWNhdGNoKGplKXtp''@;'; put 'put ''ZihELldURil0aHJvdyBqZX1QLkhlYWRpbmdQYWlycyYmUC5UaXRsZXNPZlBhcnRzJiYodzAoUC5IZWFkaW5nUGFpcnMsUC5UaXRsZXNPZlBhcnRzLFAsRCksZGVsZXRlIFAuSGVhZGluZ1BhaXJzLGRlbGV0ZSBQLlRpdGxlc09mUGFydHMpfSh3LHZlLFApLG9lLlByb3BzPW9lLkN1c3Rwcm9w''@;'; put 'put ''cz12ZSxQLmJvb2tGaWxlcyYmKG9lLmNmYj13KSxvZX12YXIgSDI9ezA6e246IkJydFJvd0hkciIsZjpmdW5jdGlvbiBITih3LFApe3ZhciBEPXt9LGVlPXcubCtQO0Qucj13LnJlYWRfc2hpZnQoNCksdy5sKz00O3ZhciBvZT13LnJlYWRfc2hpZnQoMik7dy5sKz0xO3ZhciBnZT13LnJlYWRf''@;'; put 'put ''c2hpZnQoMSk7cmV0dXJuIHcubD1lZSw3JmdlJiYoRC5sZXZlbD03JmdlKSwxNiZnZSYmKEQuaGlkZGVuPSEwKSwzMiZnZSYmKEQuaHB0PW9lLzIwKSxEfX0sMTp7bjoiQnJ0Q2VsbEJsYW5rIixmOmZ1bmN0aW9uIHl3KHcpe3JldHVybltnYyh3KV19fSwyOntuOiJCcnRDZWxsUmsiLGY6ZnVu''@;'; put 'put ''Y3Rpb24gJE4odyl7cmV0dXJuW2djKHcpLGljKHcpLCJuIl19fSwzOntuOiJCcnRDZWxsRXJyb3IiLGY6ZnVuY3Rpb24gd2VlKHcpe3JldHVybltnYyh3KSx3LnJlYWRfc2hpZnQoMSksImUiXX19LDQ6e246IkJydENlbGxCb29sIixmOmZ1bmN0aW9uIGhUKHcpe3JldHVybltnYyh3KSx3LnJl''@;'; put 'put ''YWRfc2hpZnQoMSksImIiXX19LDU6e246IkJydENlbGxSZWFsIixmOmZ1bmN0aW9uIFdOKHcpe3JldHVybltnYyh3KSx5bCh3KSwibiJdfX0sNjp7bjoiQnJ0Q2VsbFN0IixmOmZ1bmN0aW9uIHR2KHcpe3JldHVybltnYyh3KSxUdSh3KSwic3RyIl19fSw3OntuOiJCcnRDZWxsSXNzdCIsZjpm''@;'; put 'put ''dW5jdGlvbiB5VCh3KXtyZXR1cm5bZ2Modyksdy5yZWFkX3NoaWZ0KDQpLCJzIl19fSw4OntuOiJCcnRGbWxhU3RyaW5nIixmOmZ1bmN0aW9uIFhOKHcsUCxEKXt2YXIgZWU9dy5sK1Asb2U9Z2Modyk7b2Uucj1EWyIhcm93Il07dmFyIF9lPVtvZSxUdSh3KSwic3RyIl07aWYoRC5jZWxsRm9y''@;'; put 'put ''bXVsYSl7dy5sKz0yO3ZhciB2ZT1VOCh3LGVlLXcubCxEKTtfZVszXT1Ecyh2ZSxudWxsLG9lLEQuc3VwYm9va3MsRCl9ZWxzZSB3Lmw9ZWU7cmV0dXJuIF9lfX0sOTp7bjoiQnJ0Rm1sYU51bSIsZjpmdW5jdGlvbiBDVCh3LFAsRCl7dmFyIGVlPXcubCtQLG9lPWdjKHcpO29lLnI9RFsiIXJv''@;'; put 'put ''dyJdO3ZhciBfZT1bb2UseWwodyksIm4iXTtpZihELmNlbGxGb3JtdWxhKXt3LmwrPTI7dmFyIHZlPVU4KHcsZWUtdy5sLEQpO19lWzNdPURzKHZlLG51bGwsb2UsRC5zdXBib29rcyxEKX1lbHNlIHcubD1lZTtyZXR1cm4gX2V9fSwxMDp7bjoiQnJ0Rm1sYUJvb2wiLGY6ZnVuY3Rpb24gcU4o''@;'; put 'put ''dyxQLEQpe3ZhciBlZT13LmwrUCxvZT1nYyh3KTtvZS5yPURbIiFyb3ciXTt2YXIgX2U9W29lLHcucmVhZF9zaGlmdCgxKSwiYiJdO2lmKEQuY2VsbEZvcm11bGEpe3cubCs9Mjt2YXIgdmU9VTgodyxlZS13LmwsRCk7X2VbM109RHModmUsbnVsbCxvZSxELnN1cGJvb2tzLEQpfWVsc2Ugdy5s''@;'; put 'put ''PWVlO3JldHVybiBfZX19LDExOntuOiJCcnRGbWxhRXJyb3IiLGY6ZnVuY3Rpb24gd1QodyxQLEQpe3ZhciBlZT13LmwrUCxvZT1nYyh3KTtvZS5yPURbIiFyb3ciXTt2YXIgX2U9W29lLHcucmVhZF9zaGlmdCgxKSwiZSJdO2lmKEQuY2VsbEZvcm11bGEpe3cubCs9Mjt2YXIgdmU9VTgodyxl''@;'; put 'put ''ZS13LmwsRCk7X2VbM109RHModmUsbnVsbCxvZSxELnN1cGJvb2tzLEQpfWVsc2Ugdy5sPWVlO3JldHVybiBfZX19LDEyOntuOiJCcnRTaG9ydEJsYW5rIixmOmZ1bmN0aW9uIGRUKHcpe3JldHVyblt5MCh3KV19fSwxMzp7bjoiQnJ0U2hvcnRSayIsZjpmdW5jdGlvbiBfVCh3KXtyZXR1cm5b''@;'; put 'put ''eTAodyksaWModyksIm4iXX19LDE0OntuOiJCcnRTaG9ydEVycm9yIixmOmZ1bmN0aW9uIGdUKHcpe3JldHVyblt5MCh3KSx3LnJlYWRfc2hpZnQoMSksImUiXX19LDE1OntuOiJCcnRTaG9ydEJvb2wiLGY6ZnVuY3Rpb24gZXYodyl7cmV0dXJuW3kwKHcpLHcucmVhZF9zaGlmdCgxKSwiYiJd''@;'; put 'put ''fX0sMTY6e246IkJydFNob3J0UmVhbCIsZjpiVH0sMTc6e246IkJydFNob3J0U3QiLGY6ZnVuY3Rpb24gbnYodyl7cmV0dXJuW3kwKHcpLFR1KHcpLCJzdHIiXX19LDE4OntuOiJCcnRTaG9ydElzc3QiLGY6ZnVuY3Rpb24gZmQodyl7cmV0dXJuW3kwKHcpLHcucmVhZF9zaGlmdCg0KSwicyJd''@;'; put 'put ''fX0sMTk6e246IkJydFNTVEl0ZW0iLGY6Y2x9LDIwOntuOiJCcnRQQ0RJTWlzc2luZyJ9LDIxOntuOiJCcnRQQ0RJTnVtYmVyIn0sMjI6e246IkJydFBDRElCb29sZWFuIn0sMjM6e246IkJydFBDRElFcnJvciJ9LDI0OntuOiJCcnRQQ0RJU3RyaW5nIn0sMjU6e246IkJydFBDRElEYXRldGlt''@;'; put 'put ''ZSJ9LDI2OntuOiJCcnRQQ0RJSW5kZXgifSwyNzp7bjoiQnJ0UENESUFNaXNzaW5nIn0sMjg6e246IkJydFBDRElBTnVtYmVyIn0sMjk6e246IkJydFBDRElBQm9vbGVhbiJ9LDMwOntuOiJCcnRQQ0RJQUVycm9yIn0sMzE6e246IkJydFBDRElBU3RyaW5nIn0sMzI6e246IkJydFBDRElBRGF0''@;'; put 'put ''ZXRpbWUifSwzMzp7bjoiQnJ0UENSUmVjb3JkIn0sMzQ6e246IkJydFBDUlJlY29yZER0In0sMzU6e246IkJydEZSVEJlZ2luIn0sMzY6e246IkJydEZSVEVuZCJ9LDM3OntuOiJCcnRBQ0JlZ2luIn0sMzg6e246IkJydEFDRW5kIn0sMzk6e246IkJydE5hbWUiLGY6ZnVuY3Rpb24gZmcodyxQ''@;'; put 'put ''LEQpe3ZhciBlZT13LmwrUDt3LmwrPTQsdy5sKz0xO3ZhciBvZT13LnJlYWRfc2hpZnQoNCksZ2U9dmModyksX2U9TkEodywwLEQpLHZlPUhjKHcpO3cubD1lZTt2YXIgTWU9e05hbWU6Z2UsUHRnOl9lfTtyZXR1cm4gb2U8MjY4NDM1NDU1JiYoTWUuU2hlZXQ9b2UpLHZlJiYoTWUuQ29tbWVu''@;'; put 'put ''dD12ZSksTWV9fSw0MDp7bjoiQnJ0SW5kZXhSb3dCbG9jayJ9LDQyOntuOiJCcnRJbmRleEJsb2NrIn0sNDM6e246IkJydEZvbnQiLGY6ZnVuY3Rpb24gJHgodyxQLEQpe3ZhciBlZT17fTtlZS5zej13LnJlYWRfc2hpZnQoMikvMjA7dmFyIG9lPWNtKHcpO3N3aXRjaChvZS5mQm9sZCYmKGVl''@;'; put 'put ''LmJvbGQ9MSksb2UuZkl0YWxpYyYmKGVlLml0YWxpYz0xKSxvZS5mVW5kZXJsaW5lJiYoZWUudW5kZXJsaW5lPTEpLG9lLmZDb25kZW5zZSYmKGVlLmNvbmRlbnNlPTEpLG9lLmZFeHRlbmQmJihlZS5leHRlbmQ9MSksb2UuZlNoYWRvdyYmKGVlLnNoYWRvdz0xKSxvZS5mT3V0bGluZSYmKGVl''@;'; put 'put ''Lm91dGxpbmU9MSksb2UuZlN0cmlrZW91dCYmKGVlLnN0cmlrZT0xKSw3MDA9PT13LnJlYWRfc2hpZnQoMikmJihlZS5ib2xkPTEpLHcucmVhZF9zaGlmdCgyKSl7Y2FzZSAxOmVlLnZhbGlnbj0ic3VwZXIiO2JyZWFrO2Nhc2UgMjplZS52YWxpZ249InN1YiJ9dmFyIF9lPXcucmVhZF9zaGlm''@;'; put 'put ''dCgxKTswIT1fZSYmKGVlLnVuZGVybGluZT1fZSk7dmFyIHZlPXcucmVhZF9zaGlmdCgxKTt2ZT4wJiYoZWUuZmFtaWx5PXZlKTt2YXIgTWU9dy5yZWFkX3NoaWZ0KDEpO3N3aXRjaChNZT4wJiYoZWUuY2hhcnNldD1NZSksdy5sKyssZWUuY29sb3I9JGYodyksdy5yZWFkX3NoaWZ0KDEpKXtj''@;'; put 'put ''YXNlIDE6ZWUuc2NoZW1lPSJtYWpvciI7YnJlYWs7Y2FzZSAyOmVlLnNjaGVtZT0ibWlub3IifXJldHVybiBlZS5uYW1lPVR1KHcpLGVlfX0sNDQ6e246IkJydEZtdCIsZjpmdW5jdGlvbiBHeCh3LFApe3JldHVyblt3LnJlYWRfc2hpZnQoMiksVHUodyldfX0sNDU6e246IkJydEZpbGwiLGY6''@;'; put 'put ''ZnVuY3Rpb24gdkgodyxQKXt2YXIgRD13LmwrUCxlZT17fSxvZT13LnJlYWRfc2hpZnQoNCk7aWYoNDAhPW9lKXtlZS5wYXR0ZXJuVHlwZT1GbVtvZV07dmFyIGdlPSRmKHcpOzY0IT1nZS5pbmRleCYmKGVlLmZnQ29sb3I9Z2UpO3ZhciBfZT0kZih3KTs2NSE9X2UuaW5kZXgmJihlZS5iZ0Nv''@;'; put 'put ''bG9yPV9lKX1lbHNle3cubCs9MTYsdy5yZWFkX3NoaWZ0KDQpLHlsKHcpLHlsKHcpLHlsKHcpLHlsKHcpLHlsKHcpO2Zvcih2YXIgdmU9dy5yZWFkX3NoaWZ0KDQpLE1lPVtdLGplPTA7amU8dmU7KytqZSlNZS5wdXNoKFM4KHcpKX1yZXR1cm4gdy5sPUQsZWV9fSw0Njp7bjoiQnJ0Qm9yZGVy''@;'; put 'put ''IixmOmZ1bmN0aW9uIGJIKHcpe3ZhciBQPXt9O3cucmVhZF9zaGlmdCgxKTt2YXIgRD1ObSh3KTsibm9uZSIhPUQuc3R5bGUmJihQLnRvcD1EKTt2YXIgZWU9Tm0odyk7Im5vbmUiIT1lZS5zdHlsZSYmKFAuYm90dG9tPWVlKTt2YXIgb2U9Tm0odyk7Im5vbmUiIT1vZS5zdHlsZSYmKFAubGVm''@;'; put 'put ''dD1vZSk7dmFyIGdlPU5tKHcpOyJub25lIiE9Z2Uuc3R5bGUmJihQLnJpZ2h0PWdlKTt2YXIgX2U9Tm0odyk7cmV0dXJuIm5vbmUiIT1fZS5zdHlsZSYmKFAuZGlhZz1fZSksUH19LDQ3OntuOiJCcnRYRiIsZjpmdW5jdGlvbiBiXyh3LFApe3ZhciBEPXcubCtQLGVlPXt9LG9lPXcucmVhZF9z''@;'; put 'put ''aGlmdCgyKSxnZT13LnJlYWRfc2hpZnQoMiksX2U9dy5yZWFkX3NoaWZ0KDIpLHZlPXcucmVhZF9zaGlmdCgyKSxNZT13LnJlYWRfc2hpZnQoMiksamU9dy5yZWFkX3NoaWZ0KDEpO3cucmVhZF9zaGlmdCgxKTt2YXIgVWU9dy5yZWFkX3NoaWZ0KDIpLFhlPXcucmVhZF9zaGlmdCgxKTt3Lmw9''@;'; put 'put ''RCxlZS54ZklkPW9lLGVlLm51bUZtdElkPWdlLGVlLmZvbnRJZD1fZSxlZS5maWxsSWQ9dmUsZWUuYm9yZGVySWQ9TWUsMSZYZSYmMCE9ZWUubnVtRm10SWQmJihlZS5hcHBseU51bWJlckZvcm1hdD0hMCksZWUuYWxpZ25tZW50PXt9LGplPjAmJihlZS5hbGlnbm1lbnQudGV4dFJvdGF0aW9u''@;'; put 'put ''PWplKTt2YXIgaXQ9ITE7cmV0dXJuIDcmVWUmJihpdD0hMCxlZS5hbGlnbm1lbnQuaG9yaXpvbnRhbD1NOFs3JlVlXSksZWUuYWxpZ25tZW50LnZlcnRpY2FsPUhtW1VlPj4+MyY3XSxlZS5hbGlnbm1lbnQudmVydGljYWwmJihpdD0hMCksVWU+Pj42JjEmJihlZS5hbGlnbm1lbnQud3JhcFRl''@;'; put 'put ''eHQ9ITApLFVlPj4+OCYxJiYoZWUuYWxpZ25tZW50LnNocmlua1RvRml0PSEwKSxpdHx8ZGVsZXRlIGVlLmFsaWdubWVudCw0JlhlJiZpdCYmKGVlLmFwcGx5QWxpZ25tZW50PSEwKSxlZX19LDQ4OntuOiJCcnRTdHlsZSJ9LDQ5OntuOiJCcnRDZWxsTWV0YSJ9LDUwOntuOiJCcnRWYWx1ZU1l''@;'; put 'put ''dGEifSw1MTp7bjoiQnJ0TWRiIn0sNTI6e246IkJydEJlZ2luRm1kIn0sNTM6e246IkJydEVuZEZtZCJ9LDU0OntuOiJCcnRCZWdpbk1keCJ9LDU1OntuOiJCcnRFbmRNZHgifSw1Njp7bjoiQnJ0QmVnaW5NZHhUdXBsZSJ9LDU3OntuOiJCcnRFbmRNZHhUdXBsZSJ9LDU4OntuOiJCcnRNZHhN''@;'; put 'put ''YnJJc3RyIn0sNTk6e246IkJydFN0ciJ9LDYwOntuOiJCcnRDb2xJbmZvIixmOnJkfSw2Mjp7bjoiQnJ0Q2VsbFJTdHJpbmcifSw2Mzp7bjoiQnJ0Q2FsY0NoYWluSXRlbSQiLGY6ZnVuY3Rpb24gVW0odyl7dmFyIFA9e307UC5pPXcucmVhZF9zaGlmdCg0KTt2YXIgRD17fTtELnI9dy5yZWFk''@;'; put 'put ''X3NoaWZ0KDQpLEQuYz13LnJlYWRfc2hpZnQoNCksUC5yPXBpKEQpO3ZhciBlZT13LnJlYWRfc2hpZnQoMSk7cmV0dXJuIDImZWUmJihQLmw9IjEiKSw4JmVlJiYoUC5hPSIxIiksUH19LDY0OntuOiJCcnREVmFsIixmOmZ1bmN0aW9uIHJ2KHcsUCxEKXt2YXIgZWU9dy5sK1Asb2U9dy5yZWFk''@;'; put 'put ''X3NoaWZ0KDQpLGdlPWIwKHcpLF9lPUhjKHcpLHZlPUhjKHcpLE1lPUhjKHcpLGplPUhjKHcpLFVlPUZBKHcsUCxEKSxYZT13Lmw8ZWU/RkEodyxQLEQpOm51bGwsaXQ9MTUmb2UsZnQ9e3Q6cm9baXRdLHNxcmZ4OmdlLHM6W19lLHZlLE1lLGplXX07cmV0dXJuIFVlJiYoZnQuZjE9VWUpLFhl''@;'; put 'put ''JiYoZnQuZjI9WGUpLDA9PWl0fHwzPT1pdHx8Nz09aXR8fChmdC5vcD1Dd1tvZT4+MjAmMTVdKSxmdH19LDY1OntuOiJCcnRTeHZjZWxsTnVtIn0sNjY6e246IkJydFN4dmNlbGxTdHIifSw2Nzp7bjoiQnJ0U3h2Y2VsbEJvb2wifSw2ODp7bjoiQnJ0U3h2Y2VsbEVyciJ9LDY5OntuOiJCcnRT''@;'; put 'put ''eHZjZWxsRGF0ZSJ9LDcwOntuOiJCcnRTeHZjZWxsTmlsIn0sMTI4OntuOiJCcnRGaWxlVmVyc2lvbiJ9LDEyOTp7bjoiQnJ0QmVnaW5TaGVldCJ9LDEzMDp7bjoiQnJ0RW5kU2hlZXQifSwxMzE6e246IkJydEJlZ2luQm9vayIsZjp4dSxwOjB9LDEzMjp7bjoiQnJ0RW5kQm9vayJ9LDEzMzp7''@;'; put 'put ''bjoiQnJ0QmVnaW5Xc1ZpZXdzIn0sMTM0OntuOiJCcnRFbmRXc1ZpZXdzIn0sMTM1OntuOiJCcnRCZWdpbkJvb2tWaWV3cyJ9LDEzNjp7bjoiQnJ0RW5kQm9va1ZpZXdzIn0sMTM3OntuOiJCcnRCZWdpbldzVmlldyIsZjpmdW5jdGlvbiBvVih3KXt2YXIgUD13LnJlYWRfc2hpZnQoMik7cmV0''@;'; put 'put ''dXJuIHcubCs9Mjgse1JUTDozMiZQLGdyaWQ6ISEoNCZQKX19fSwxMzg6e246IkJydEVuZFdzVmlldyJ9LDEzOTp7bjoiQnJ0QmVnaW5Dc1ZpZXdzIn0sMTQwOntuOiJCcnRFbmRDc1ZpZXdzIn0sMTQxOntuOiJCcnRCZWdpbkNzVmlldyJ9LDE0Mjp7bjoiQnJ0RW5kQ3NWaWV3In0sMTQzOntu''@;'; put 'put ''OiJCcnRCZWdpbkJ1bmRsZVNocyJ9LDE0NDp7bjoiQnJ0RW5kQnVuZGxlU2hzIn0sMTQ1OntuOiJCcnRCZWdpblNoZWV0RGF0YSJ9LDE0Njp7bjoiQnJ0RW5kU2hlZXREYXRhIn0sMTQ3OntuOiJCcnRXc1Byb3AiLGY6ZnVuY3Rpb24gek4odyxQKXt2YXIgRD17fSxlZT13W3cubF07cmV0dXJu''@;'; put 'put ''Kyt3LmwsRC5hYm92ZT0hKDY0JmVlKSxELmxlZnQ9ISgxMjgmZWUpLHcubCs9MTgsRC5uYW1lPWYyKHcsUC0xOSksRH19LDE0ODp7bjoiQnJ0V3NEaW0iLGY6Vk4scDoxNn0sMTUxOntuOiJCcnRQYW5lIixmOmZ1bmN0aW9uIGtUKHcsUCl7dmFyIEQ9dy5sK1A7eWwodykseWwodyk7dmFyIGVl''@;'; put 'put ''PXcucmVhZF9zaGlmdCg0LCJpIiksb2U9dy5yZWFkX3NoaWZ0KDQsImkiKTtpZih3LnJlYWRfc2hpZnQoNCksdy5yZWFkX3NoaWZ0KDEpLEQhPXcubCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBCcnRQYW5lOiAiK0QrIiAhPSAiK3cubCk7cmV0dXJuW3BpKHtyOmVlLGM6b2V9KV19fSwxNTI6e246''@;'; put 'put ''IkJydFNlbCIsZjpmdW5jdGlvbiBlVih3LFApe3JldHVybiB3LnJlYWRfc2hpZnQoNCkse2NlbGw6cGkoe3I6dy5yZWFkX3NoaWZ0KDQpLGM6dy5yZWFkX3NoaWZ0KDQpfSl9fX0sMTUzOntuOiJCcnRXYlByb3AiLGY6ZnVuY3Rpb24ga1YodyxQKXt2YXIgRD17fSxlZT13LnJlYWRfc2hpZnQo''@;'; put 'put ''NCk7RC5kZWZhdWx0VGhlbWVWZXJzaW9uPXcucmVhZF9zaGlmdCg0KTt2YXIgb2U9UD44P1R1KHcpOiIiO3JldHVybiBvZS5sZW5ndGg+MCYmKEQuQ29kZU5hbWU9b2UpLEQuYXV0b0NvbXByZXNzUGljdHVyZXM9ISEoNjU1MzYmZWUpLEQuYmFja3VwRmlsZT0hISg2NCZlZSksRC5jaGVja0Nv''@;'; put 'put ''bXBhdGliaWxpdHk9ISEoNDA5NiZlZSksRC5kYXRlMTkwND0hISgxJmVlKSxELmZpbHRlclByaXZhY3k9ISEoOCZlZSksRC5oaWRlUGl2b3RGaWVsZExpc3Q9ISEoMTAyNCZlZSksRC5wcm9tcHRlZFNvbHV0aW9ucz0hISgxNiZlZSksRC5wdWJsaXNoSXRlbXM9ISEoMjA0OCZlZSksRC5yZWZy''@;'; put 'put ''ZXNoQWxsQ29ubmVjdGlvbnM9ISEoMjYyMTQ0JmVlKSxELnNhdmVFeHRlcm5hbExpbmtWYWx1ZXM9ISEoMTI4JmVlKSxELnNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzPSEhKDQmZWUpLEQuc2hvd0lua0Fubm90YXRpb249ISEoMzImZWUpLEQuc2hvd09iamVjdHM9WyJhbGwiLCJwbGFjZWhv''@;'; put 'put ''bGRlcnMiLCJub25lIl1bZWU+PjEzJjNdLEQuc2hvd1Bpdm90Q2hhcnRGaWx0ZXI9ISEoMzI3NjgmZWUpLEQudXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVtlZT4+OCYzXSxEfX0sMTU0OntuOiJCcnRXYkZhY3RvaWQifSwxNTU6e246IkJydEZpbGVSZWNvdmVyIn0s''@;'; put 'put ''MTU2OntuOiJCcnRCdW5kbGVTaCIsZjpmdW5jdGlvbiBUZWUodyxQKXt2YXIgRD17fTtyZXR1cm4gRC5IaWRkZW49dy5yZWFkX3NoaWZ0KDQpLEQuaVRhYklEPXcucmVhZF9zaGlmdCg0KSxELnN0clJlbElEPXExKHcsUC04KSxELm5hbWU9VHUodyksRH19LDE1Nzp7bjoiQnJ0Q2FsY1Byb3Ai''@;'; put 'put ''fSwxNTg6e246IkJydEJvb2tWaWV3In0sMTU5OntuOiJCcnRCZWdpblNzdCIsZjpmdW5jdGlvbiBDMih3KXtyZXR1cm5bdy5yZWFkX3NoaWZ0KDQpLHcucmVhZF9zaGlmdCg0KV19fSwxNjA6e246IkJydEVuZFNzdCJ9LDE2MTp7bjoiQnJ0QmVnaW5BRmlsdGVyIixmOm9jfSwxNjI6e246IkJy''@;'; put 'put ''dEVuZEFGaWx0ZXIifSwxNjM6e246IkJydEJlZ2luRmlsdGVyQ29sdW1uIn0sMTY0OntuOiJCcnRFbmRGaWx0ZXJDb2x1bW4ifSwxNjU6e246IkJydEJlZ2luRmlsdGVycyJ9LDE2Njp7bjoiQnJ0RW5kRmlsdGVycyJ9LDE2Nzp7bjoiQnJ0RmlsdGVyIn0sMTY4OntuOiJCcnRDb2xvckZpbHRl''@;'; put 'put ''ciJ9LDE2OTp7bjoiQnJ0SWNvbkZpbHRlciJ9LDE3MDp7bjoiQnJ0VG9wMTBGaWx0ZXIifSwxNzE6e246IkJydER5bmFtaWNGaWx0ZXIifSwxNzI6e246IkJydEJlZ2luQ3VzdG9tRmlsdGVycyJ9LDE3Mzp7bjoiQnJ0RW5kQ3VzdG9tRmlsdGVycyJ9LDE3NDp7bjoiQnJ0Q3VzdG9tRmlsdGVy''@;'; put 'put ''In0sMTc1OntuOiJCcnRBRmlsdGVyRGF0ZUdyb3VwSXRlbSJ9LDE3Njp7bjoiQnJ0TWVyZ2VDZWxsIixmOkpOfSwxNzc6e246IkJydEJlZ2luTWVyZ2VDZWxscyJ9LDE3ODp7bjoiQnJ0RW5kTWVyZ2VDZWxscyJ9LDE3OTp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlRGVmIn0sMTgwOntuOiJCcnRF''@;'; put 'put ''bmRQaXZvdENhY2hlRGVmIn0sMTgxOntuOiJCcnRCZWdpblBDREZpZWxkcyJ9LDE4Mjp7bjoiQnJ0RW5kUENERmllbGRzIn0sMTgzOntuOiJCcnRCZWdpblBDREZpZWxkIn0sMTg0OntuOiJCcnRFbmRQQ0RGaWVsZCJ9LDE4NTp7bjoiQnJ0QmVnaW5QQ0RTb3VyY2UifSwxODY6e246IkJydEVu''@;'; put 'put ''ZFBDRFNvdXJjZSJ9LDE4Nzp7bjoiQnJ0QmVnaW5QQ0RTUmFuZ2UifSwxODg6e246IkJydEVuZFBDRFNSYW5nZSJ9LDE4OTp7bjoiQnJ0QmVnaW5QQ0RGQXRibCJ9LDE5MDp7bjoiQnJ0RW5kUENERkF0YmwifSwxOTE6e246IkJydEJlZ2luUENESVJ1biJ9LDE5Mjp7bjoiQnJ0RW5kUENESVJ1''@;'; put 'put ''biJ9LDE5Mzp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlUmVjb3JkcyJ9LDE5NDp7bjoiQnJ0RW5kUGl2b3RDYWNoZVJlY29yZHMifSwxOTU6e246IkJydEJlZ2luUENESGllcmFyY2hpZXMifSwxOTY6e246IkJydEVuZFBDREhpZXJhcmNoaWVzIn0sMTk3OntuOiJCcnRCZWdpblBDREhpZXJhcmNo''@;'; put 'put ''eSJ9LDE5ODp7bjoiQnJ0RW5kUENESGllcmFyY2h5In0sMTk5OntuOiJCcnRCZWdpblBDREhGaWVsZHNVc2FnZSJ9LDIwMDp7bjoiQnJ0RW5kUENESEZpZWxkc1VzYWdlIn0sMjAxOntuOiJCcnRCZWdpbkV4dENvbm5lY3Rpb24ifSwyMDI6e246IkJydEVuZEV4dENvbm5lY3Rpb24ifSwyMDM6''@;'; put 'put ''e246IkJydEJlZ2luRUNEYlByb3BzIn0sMjA0OntuOiJCcnRFbmRFQ0RiUHJvcHMifSwyMDU6e246IkJydEJlZ2luRUNPbGFwUHJvcHMifSwyMDY6e246IkJydEVuZEVDT2xhcFByb3BzIn0sMjA3OntuOiJCcnRCZWdpblBDRFNDb25zb2wifSwyMDg6e246IkJydEVuZFBDRFNDb25zb2wifSwy''@;'; put 'put ''MDk6e246IkJydEJlZ2luUENEU0NQYWdlcyJ9LDIxMDp7bjoiQnJ0RW5kUENEU0NQYWdlcyJ9LDIxMTp7bjoiQnJ0QmVnaW5QQ0RTQ1BhZ2UifSwyMTI6e246IkJydEVuZFBDRFNDUGFnZSJ9LDIxMzp7bjoiQnJ0QmVnaW5QQ0RTQ1BJdGVtIn0sMjE0OntuOiJCcnRFbmRQQ0RTQ1BJdGVtIn0s''@;'; put 'put ''MjE1OntuOiJCcnRCZWdpblBDRFNDU2V0cyJ9LDIxNjp7bjoiQnJ0RW5kUENEU0NTZXRzIn0sMjE3OntuOiJCcnRCZWdpblBDRFNDU2V0In0sMjE4OntuOiJCcnRFbmRQQ0RTQ1NldCJ9LDIxOTp7bjoiQnJ0QmVnaW5QQ0RGR3JvdXAifSwyMjA6e246IkJydEVuZFBDREZHcm91cCJ9LDIyMTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5QQ0RGR0l0ZW1zIn0sMjIyOntuOiJCcnRFbmRQQ0RGR0l0ZW1zIn0sMjIzOntuOiJCcnRCZWdpblBDREZHUmFuZ2UifSwyMjQ6e246IkJydEVuZFBDREZHUmFuZ2UifSwyMjU6e246IkJydEJlZ2luUENERkdEaXNjcmV0ZSJ9LDIyNjp7bjoiQnJ0RW5kUENERkdEaXNjcmV0''@;'; put 'put ''ZSJ9LDIyNzp7bjoiQnJ0QmVnaW5QQ0RTRFR1cGxlQ2FjaGUifSwyMjg6e246IkJydEVuZFBDRFNEVHVwbGVDYWNoZSJ9LDIyOTp7bjoiQnJ0QmVnaW5QQ0RTRFRDRW50cmllcyJ9LDIzMDp7bjoiQnJ0RW5kUENEU0RUQ0VudHJpZXMifSwyMzE6e246IkJydEJlZ2luUENEU0RUQ0VNZW1iZXJz''@;'; put 'put ''In0sMjMyOntuOiJCcnRFbmRQQ0RTRFRDRU1lbWJlcnMifSwyMzM6e246IkJydEJlZ2luUENEU0RUQ0VNZW1iZXIifSwyMzQ6e246IkJydEVuZFBDRFNEVENFTWVtYmVyIn0sMjM1OntuOiJCcnRCZWdpblBDRFNEVENRdWVyaWVzIn0sMjM2OntuOiJCcnRFbmRQQ0RTRFRDUXVlcmllcyJ9LDIz''@;'; put 'put ''Nzp7bjoiQnJ0QmVnaW5QQ0RTRFRDUXVlcnkifSwyMzg6e246IkJydEVuZFBDRFNEVENRdWVyeSJ9LDIzOTp7bjoiQnJ0QmVnaW5QQ0RTRFRDU2V0cyJ9LDI0MDp7bjoiQnJ0RW5kUENEU0RUQ1NldHMifSwyNDE6e246IkJydEJlZ2luUENEU0RUQ1NldCJ9LDI0Mjp7bjoiQnJ0RW5kUENEU0RU''@;'; put 'put ''Q1NldCJ9LDI0Mzp7bjoiQnJ0QmVnaW5QQ0RDYWxjSXRlbXMifSwyNDQ6e246IkJydEVuZFBDRENhbGNJdGVtcyJ9LDI0NTp7bjoiQnJ0QmVnaW5QQ0RDYWxjSXRlbSJ9LDI0Njp7bjoiQnJ0RW5kUENEQ2FsY0l0ZW0ifSwyNDc6e246IkJydEJlZ2luUFJ1bGUifSwyNDg6e246IkJydEVuZFBS''@;'; put 'put ''dWxlIn0sMjQ5OntuOiJCcnRCZWdpblBSRmlsdGVycyJ9LDI1MDp7bjoiQnJ0RW5kUFJGaWx0ZXJzIn0sMjUxOntuOiJCcnRCZWdpblBSRmlsdGVyIn0sMjUyOntuOiJCcnRFbmRQUkZpbHRlciJ9LDI1Mzp7bjoiQnJ0QmVnaW5QTmFtZXMifSwyNTQ6e246IkJydEVuZFBOYW1lcyJ9LDI1NTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5QTmFtZSJ9LDI1Njp7bjoiQnJ0RW5kUE5hbWUifSwyNTc6e246IkJydEJlZ2luUE5QYWlycyJ9LDI1ODp7bjoiQnJ0RW5kUE5QYWlycyJ9LDI1OTp7bjoiQnJ0QmVnaW5QTlBhaXIifSwyNjA6e246IkJydEVuZFBOUGFpciJ9LDI2MTp7bjoiQnJ0QmVnaW5FQ1dlYlByb3Bz''@;'; put 'put ''In0sMjYyOntuOiJCcnRFbmRFQ1dlYlByb3BzIn0sMjYzOntuOiJCcnRCZWdpbkVjV3BUYWJsZXMifSwyNjQ6e246IkJydEVuZEVDV1BUYWJsZXMifSwyNjU6e246IkJydEJlZ2luRUNQYXJhbXMifSwyNjY6e246IkJydEVuZEVDUGFyYW1zIn0sMjY3OntuOiJCcnRCZWdpbkVDUGFyYW0ifSwy''@;'; put 'put ''Njg6e246IkJydEVuZEVDUGFyYW0ifSwyNjk6e246IkJydEJlZ2luUENES1BJcyJ9LDI3MDp7bjoiQnJ0RW5kUENES1BJcyJ9LDI3MTp7bjoiQnJ0QmVnaW5QQ0RLUEkifSwyNzI6e246IkJydEVuZFBDREtQSSJ9LDI3Mzp7bjoiQnJ0QmVnaW5EaW1zIn0sMjc0OntuOiJCcnRFbmREaW1zIn0s''@;'; put 'put ''Mjc1OntuOiJCcnRCZWdpbkRpbSJ9LDI3Njp7bjoiQnJ0RW5kRGltIn0sMjc3OntuOiJCcnRJbmRleFBhcnRFbmQifSwyNzg6e246IkJydEJlZ2luU3R5bGVTaGVldCJ9LDI3OTp7bjoiQnJ0RW5kU3R5bGVTaGVldCJ9LDI4MDp7bjoiQnJ0QmVnaW5TWFZpZXcifSwyODE6e246IkJydEVuZFNY''@;'; put 'put ''VkkifSwyODI6e246IkJydEJlZ2luU1hWSSJ9LDI4Mzp7bjoiQnJ0QmVnaW5TWFZJcyJ9LDI4NDp7bjoiQnJ0RW5kU1hWSXMifSwyODU6e246IkJydEJlZ2luU1hWRCJ9LDI4Njp7bjoiQnJ0RW5kU1hWRCJ9LDI4Nzp7bjoiQnJ0QmVnaW5TWFZEcyJ9LDI4ODp7bjoiQnJ0RW5kU1hWRHMifSwy''@;'; put 'put ''ODk6e246IkJydEJlZ2luU1hQSSJ9LDI5MDp7bjoiQnJ0RW5kU1hQSSJ9LDI5MTp7bjoiQnJ0QmVnaW5TWFBJcyJ9LDI5Mjp7bjoiQnJ0RW5kU1hQSXMifSwyOTM6e246IkJydEJlZ2luU1hESSJ9LDI5NDp7bjoiQnJ0RW5kU1hESSJ9LDI5NTp7bjoiQnJ0QmVnaW5TWERJcyJ9LDI5Njp7bjoi''@;'; put 'put ''QnJ0RW5kU1hESXMifSwyOTc6e246IkJydEJlZ2luU1hMSSJ9LDI5ODp7bjoiQnJ0RW5kU1hMSSJ9LDI5OTp7bjoiQnJ0QmVnaW5TWExJUndzIn0sMzAwOntuOiJCcnRFbmRTWExJUndzIn0sMzAxOntuOiJCcnRCZWdpblNYTElDb2xzIn0sMzAyOntuOiJCcnRFbmRTWExJQ29scyJ9LDMwMzp7''@;'; put 'put ''bjoiQnJ0QmVnaW5TWEZvcm1hdCJ9LDMwNDp7bjoiQnJ0RW5kU1hGb3JtYXQifSwzMDU6e246IkJydEJlZ2luU1hGb3JtYXRzIn0sMzA2OntuOiJCcnRFbmRTeEZvcm1hdHMifSwzMDc6e246IkJydEJlZ2luU3hTZWxlY3QifSwzMDg6e246IkJydEVuZFN4U2VsZWN0In0sMzA5OntuOiJCcnRC''@;'; put 'put ''ZWdpbklTWFZEUndzIn0sMzEwOntuOiJCcnRFbmRJU1hWRFJ3cyJ9LDMxMTp7bjoiQnJ0QmVnaW5JU1hWRENvbHMifSwzMTI6e246IkJydEVuZElTWFZEQ29scyJ9LDMxMzp7bjoiQnJ0RW5kU1hMb2NhdGlvbiJ9LDMxNDp7bjoiQnJ0QmVnaW5TWExvY2F0aW9uIn0sMzE1OntuOiJCcnRFbmRT''@;'; put 'put ''WFZpZXcifSwzMTY6e246IkJydEJlZ2luU1hUSHMifSwzMTc6e246IkJydEVuZFNYVEhzIn0sMzE4OntuOiJCcnRCZWdpblNYVEgifSwzMTk6e246IkJydEVuZFNYVEgifSwzMjA6e246IkJydEJlZ2luSVNYVEhSd3MifSwzMjE6e246IkJydEVuZElTWFRIUndzIn0sMzIyOntuOiJCcnRCZWdp''@;'; put 'put ''bklTWFRIQ29scyJ9LDMyMzp7bjoiQnJ0RW5kSVNYVEhDb2xzIn0sMzI0OntuOiJCcnRCZWdpblNYVERNUFMifSwzMjU6e246IkJydEVuZFNYVERNUHMifSwzMjY6e246IkJydEJlZ2luU1hURE1QIn0sMzI3OntuOiJCcnRFbmRTWFRETVAifSwzMjg6e246IkJydEJlZ2luU1hUSEl0ZW1zIn0s''@;'; put 'put ''MzI5OntuOiJCcnRFbmRTWFRISXRlbXMifSwzMzA6e246IkJydEJlZ2luU1hUSEl0ZW0ifSwzMzE6e246IkJydEVuZFNYVEhJdGVtIn0sMzMyOntuOiJCcnRCZWdpbk1ldGFkYXRhIn0sMzMzOntuOiJCcnRFbmRNZXRhZGF0YSJ9LDMzNDp7bjoiQnJ0QmVnaW5Fc21kdGluZm8ifSwzMzU6e246''@;'; put 'put ''IkJydE1kdGluZm8ifSwzMzY6e246IkJydEVuZEVzbWR0aW5mbyJ9LDMzNzp7bjoiQnJ0QmVnaW5Fc21kYiJ9LDMzODp7bjoiQnJ0RW5kRXNtZGIifSwzMzk6e246IkJydEJlZ2luRXNmbWQifSwzNDA6e246IkJydEVuZEVzZm1kIn0sMzQxOntuOiJCcnRCZWdpblNpbmdsZUNlbGxzIn0sMzQy''@;'; put 'put ''OntuOiJCcnRFbmRTaW5nbGVDZWxscyJ9LDM0Mzp7bjoiQnJ0QmVnaW5MaXN0In0sMzQ0OntuOiJCcnRFbmRMaXN0In0sMzQ1OntuOiJCcnRCZWdpbkxpc3RDb2xzIn0sMzQ2OntuOiJCcnRFbmRMaXN0Q29scyJ9LDM0Nzp7bjoiQnJ0QmVnaW5MaXN0Q29sIn0sMzQ4OntuOiJCcnRFbmRMaXN0''@;'; put 'put ''Q29sIn0sMzQ5OntuOiJCcnRCZWdpbkxpc3RYbWxDUHIifSwzNTA6e246IkJydEVuZExpc3RYbWxDUHIifSwzNTE6e246IkJydExpc3RDQ0ZtbGEifSwzNTI6e246IkJydExpc3RUckZtbGEifSwzNTM6e246IkJydEJlZ2luRXh0ZXJuYWxzIn0sMzU0OntuOiJCcnRFbmRFeHRlcm5hbHMifSwz''@;'; put 'put ''NTU6e246IkJydFN1cEJvb2tTcmMiLGY6cTF9LDM1Nzp7bjoiQnJ0U3VwU2VsZiJ9LDM1ODp7bjoiQnJ0U3VwU2FtZSJ9LDM1OTp7bjoiQnJ0U3VwVGFicyJ9LDM2MDp7bjoiQnJ0QmVnaW5TdXBCb29rIn0sMzYxOntuOiJCcnRQbGFjZWhvbGRlck5hbWUifSwzNjI6e246IkJydEV4dGVyblNo''@;'; put 'put ''ZWV0IixmOnQ4fSwzNjM6e246IkJydEV4dGVyblRhYmxlU3RhcnQifSwzNjQ6e246IkJydEV4dGVyblRhYmxlRW5kIn0sMzY2OntuOiJCcnRFeHRlcm5Sb3dIZHIifSwzNjc6e246IkJydEV4dGVybkNlbGxCbGFuayJ9LDM2ODp7bjoiQnJ0RXh0ZXJuQ2VsbFJlYWwifSwzNjk6e246IkJydEV4''@;'; put 'put ''dGVybkNlbGxCb29sIn0sMzcwOntuOiJCcnRFeHRlcm5DZWxsRXJyb3IifSwzNzE6e246IkJydEV4dGVybkNlbGxTdHJpbmcifSwzNzI6e246IkJydEJlZ2luRXNtZHgifSwzNzM6e246IkJydEVuZEVzbWR4In0sMzc0OntuOiJCcnRCZWdpbk1keFNldCJ9LDM3NTp7bjoiQnJ0RW5kTWR4U2V0''@;'; put 'put ''In0sMzc2OntuOiJCcnRCZWdpbk1keE1iclByb3AifSwzNzc6e246IkJydEVuZE1keE1iclByb3AifSwzNzg6e246IkJydEJlZ2luTWR4S1BJIn0sMzc5OntuOiJCcnRFbmRNZHhLUEkifSwzODA6e246IkJydEJlZ2luRXNzdHIifSwzODE6e246IkJydEVuZEVzc3RyIn0sMzgyOntuOiJCcnRC''@;'; put 'put ''ZWdpblBSRkl0ZW0ifSwzODM6e246IkJydEVuZFBSRkl0ZW0ifSwzODQ6e246IkJydEJlZ2luUGl2b3RDYWNoZUlEcyJ9LDM4NTp7bjoiQnJ0RW5kUGl2b3RDYWNoZUlEcyJ9LDM4Njp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlSUQifSwzODc6e246IkJydEVuZFBpdm90Q2FjaGVJRCJ9LDM4ODp7''@;'; put 'put ''bjoiQnJ0QmVnaW5JU1hWSXMifSwzODk6e246IkJydEVuZElTWFZJcyJ9LDM5MDp7bjoiQnJ0QmVnaW5Db2xJbmZvcyJ9LDM5MTp7bjoiQnJ0RW5kQ29sSW5mb3MifSwzOTI6e246IkJydEJlZ2luUndCcmsifSwzOTM6e246IkJydEVuZFJ3QnJrIn0sMzk0OntuOiJCcnRCZWdpbkNvbEJyayJ9''@;'; put 'put ''LDM5NTp7bjoiQnJ0RW5kQ29sQnJrIn0sMzk2OntuOiJCcnRCcmsifSwzOTc6e246IkJydFVzZXJCb29rVmlldyJ9LDM5ODp7bjoiQnJ0SW5mbyJ9LDM5OTp7bjoiQnJ0Q1VzciJ9LDQwMDp7bjoiQnJ0VXNyIn0sNDAxOntuOiJCcnRCZWdpblVzZXJzIn0sNDAzOntuOiJCcnRFT0YifSw0MDQ6''@;'; put 'put ''e246IkJydFVDUiJ9LDQwNTp7bjoiQnJ0UlJJbnNEZWwifSw0MDY6e246IkJydFJSRW5kSW5zRGVsIn0sNDA3OntuOiJCcnRSUk1vdmUifSw0MDg6e246IkJydFJSRW5kTW92ZSJ9LDQwOTp7bjoiQnJ0UlJDaGdDZWxsIn0sNDEwOntuOiJCcnRSUkVuZENoZ0NlbGwifSw0MTE6e246IkJydFJS''@;'; put 'put ''SGVhZGVyIn0sNDEyOntuOiJCcnRSUlVzZXJWaWV3In0sNDEzOntuOiJCcnRSUlJlblNoZWV0In0sNDE0OntuOiJCcnRSUkluc2VydFNoIn0sNDE1OntuOiJCcnRSUkRlZk5hbWUifSw0MTY6e246IkJydFJSTm90ZSJ9LDQxNzp7bjoiQnJ0UlJDb25mbGljdCJ9LDQxODp7bjoiQnJ0UlJUUVNJ''@;'; put 'put ''RiJ9LDQxOTp7bjoiQnJ0UlJGb3JtYXQifSw0MjA6e246IkJydFJSRW5kRm9ybWF0In0sNDIxOntuOiJCcnRSUkF1dG9GbXQifSw0MjI6e246IkJydEJlZ2luVXNlclNoVmlld3MifSw0MjM6e246IkJydEJlZ2luVXNlclNoVmlldyJ9LDQyNDp7bjoiQnJ0RW5kVXNlclNoVmlldyJ9LDQyNTp7''@;'; put 'put ''bjoiQnJ0RW5kVXNlclNoVmlld3MifSw0MjY6e246IkJydEFyckZtbGEiLGY6ZnVuY3Rpb24gdWcodyxQLEQpe3ZhciBlZT13LmwrUCxvZT1HZih3KSxnZT13LnJlYWRfc2hpZnQoMSksX2U9W29lXTtpZihfZVsyXT1nZSxELmNlbGxGb3JtdWxhKXt2YXIgdmU9UEEodyxlZS13LmwsRCk7X2Vb''@;'; put 'put ''MV09dmV9ZWxzZSB3Lmw9ZWU7cmV0dXJuIF9lfX0sNDI3OntuOiJCcnRTaHJGbWxhIixmOmZ1bmN0aW9uIG5WKHcsUCxEKXt2YXIgZWU9dy5sK1AsZ2U9W29jKHcsMTYpXTtpZihELmNlbGxGb3JtdWxhKXt2YXIgX2U9Z04odyxlZS13LmwsRCk7Z2VbMV09X2Usdy5sPWVlfWVsc2Ugdy5sPWVl''@;'; put 'put ''O3JldHVybiBnZX19LDQyODp7bjoiQnJ0VGFibGUifSw0Mjk6e246IkJydEJlZ2luRXh0Q29ubmVjdGlvbnMifSw0MzA6e246IkJydEVuZEV4dENvbm5lY3Rpb25zIn0sNDMxOntuOiJCcnRCZWdpblBDRENhbGNNZW1zIn0sNDMyOntuOiJCcnRFbmRQQ0RDYWxjTWVtcyJ9LDQzMzp7bjoiQnJ0''@;'; put 'put ''QmVnaW5QQ0RDYWxjTWVtIn0sNDM0OntuOiJCcnRFbmRQQ0RDYWxjTWVtIn0sNDM1OntuOiJCcnRCZWdpblBDREhHTGV2ZWxzIn0sNDM2OntuOiJCcnRFbmRQQ0RIR0xldmVscyJ9LDQzNzp7bjoiQnJ0QmVnaW5QQ0RIR0xldmVsIn0sNDM4OntuOiJCcnRFbmRQQ0RIR0xldmVsIn0sNDM5Ontu''@;'; put 'put ''OiJCcnRCZWdpblBDREhHTEdyb3VwcyJ9LDQ0MDp7bjoiQnJ0RW5kUENESEdMR3JvdXBzIn0sNDQxOntuOiJCcnRCZWdpblBDREhHTEdyb3VwIn0sNDQyOntuOiJCcnRFbmRQQ0RIR0xHcm91cCJ9LDQ0Mzp7bjoiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVycyJ9LDQ0NDp7bjoiQnJ0RW5kUENESEdM''@;'; put 'put ''R01lbWJlcnMifSw0NDU6e246IkJydEJlZ2luUENESEdMR01lbWJlciJ9LDQ0Njp7bjoiQnJ0RW5kUENESEdMR01lbWJlciJ9LDQ0Nzp7bjoiQnJ0QmVnaW5RU0kifSw0NDg6e246IkJydEVuZFFTSSJ9LDQ0OTp7bjoiQnJ0QmVnaW5RU0lSIn0sNDUwOntuOiJCcnRFbmRRU0lSIn0sNDUxOntu''@;'; put 'put ''OiJCcnRCZWdpbkRlbGV0ZWROYW1lcyJ9LDQ1Mjp7bjoiQnJ0RW5kRGVsZXRlZE5hbWVzIn0sNDUzOntuOiJCcnRCZWdpbkRlbGV0ZWROYW1lIn0sNDU0OntuOiJCcnRFbmREZWxldGVkTmFtZSJ9LDQ1NTp7bjoiQnJ0QmVnaW5RU0lGcyJ9LDQ1Njp7bjoiQnJ0RW5kUVNJRnMifSw0NTc6e246''@;'; put 'put ''IkJydEJlZ2luUVNJRiJ9LDQ1ODp7bjoiQnJ0RW5kUVNJRiJ9LDQ1OTp7bjoiQnJ0QmVnaW5BdXRvU29ydFNjb3BlIn0sNDYwOntuOiJCcnRFbmRBdXRvU29ydFNjb3BlIn0sNDYxOntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZyJ9LDQ2Mjp7bjoiQnJ0RW5kQ29uZGl0aW9uYWxG''@;'; put 'put ''b3JtYXR0aW5nIn0sNDYzOntuOiJCcnRCZWdpbkNGUnVsZSJ9LDQ2NDp7bjoiQnJ0RW5kQ0ZSdWxlIn0sNDY1OntuOiJCcnRCZWdpbkljb25TZXQifSw0NjY6e246IkJydEVuZEljb25TZXQifSw0Njc6e246IkJydEJlZ2luRGF0YWJhciJ9LDQ2ODp7bjoiQnJ0RW5kRGF0YWJhciJ9LDQ2OTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5Db2xvclNjYWxlIn0sNDcwOntuOiJCcnRFbmRDb2xvclNjYWxlIn0sNDcxOntuOiJCcnRDRlZPIn0sNDcyOntuOiJCcnRFeHRlcm5WYWx1ZU1ldGEifSw0NzM6e246IkJydEJlZ2luQ29sb3JQYWxldHRlIn0sNDc0OntuOiJCcnRFbmRDb2xvclBhbGV0dGUifSw0NzU6e246''@;'; put 'put ''IkJydEluZGV4ZWRDb2xvciJ9LDQ3Njp7bjoiQnJ0TWFyZ2lucyIsZjpmdW5jdGlvbiByVih3KXt2YXIgUD17fTtyZXR1cm4geFQuZm9yRWFjaChmdW5jdGlvbihEKXtQW0RdPXlsKHcpfSksUH19LDQ3Nzp7bjoiQnJ0UHJpbnRPcHRpb25zIn0sNDc4OntuOiJCcnRQYWdlU2V0dXAifSw0Nzk6''@;'; put 'put ''e246IkJydEJlZ2luSGVhZGVyRm9vdGVyIn0sNDgwOntuOiJCcnRFbmRIZWFkZXJGb290ZXIifSw0ODE6e246IkJydEJlZ2luU1hDcnRGb3JtYXQifSw0ODI6e246IkJydEVuZFNYQ3J0Rm9ybWF0In0sNDgzOntuOiJCcnRCZWdpblNYQ3J0Rm9ybWF0cyJ9LDQ4NDp7bjoiQnJ0RW5kU1hDcnRG''@;'; put 'put ''b3JtYXRzIn0sNDg1OntuOiJCcnRXc0ZtdEluZm8iLGY6ZnVuY3Rpb24gak4odyl7dmFyIFA9e30sRD17fSxlZT17fSxvZT13LnJlYWRfc2hpZnQoNCksZ2U9dy5yZWFkX3NoaWZ0KDIpO2VlLndjaD1vZTw9NjU1MzY/b2UvMjU2OmdlO3ZhciBfZT13LnJlYWRfc2hpZnQoMik7RC5ocHQ9X2Uv''@;'; put 'put ''MjA7dmFyIHZlPXcucmVhZF9zaGlmdCgyKTtyZXR1cm4gMiZ2ZSYmKEQuaGlkZGVuPSEwKSw0JnZlJiYoUC50b3B0aGljaz0hMCksOCZ2ZSYmKFAuYm90dGhpY2s9ITApLFAucm93b3V0bGluZT13LnJlYWRfc2hpZnQoMSksUC5jb2xvdXRsaW5lPXcucmVhZF9zaGlmdCgxKSxTcChEKSxQLnJv''@;'; put 'put ''dz1ELF9jKGVlKSxQLmNvbD1lZSxQfX0sNDg2OntuOiJCcnRCZWdpbk1ncyJ9LDQ4Nzp7bjoiQnJ0RW5kTUdzIn0sNDg4OntuOiJCcnRCZWdpbk1HTWFwcyJ9LDQ4OTp7bjoiQnJ0RW5kTUdNYXBzIn0sNDkwOntuOiJCcnRCZWdpbk1HIn0sNDkxOntuOiJCcnRFbmRNRyJ9LDQ5Mjp7bjoiQnJ0''@;'; put 'put ''QmVnaW5NYXAifSw0OTM6e246IkJydEVuZE1hcCJ9LDQ5NDp7bjoiQnJ0SExpbmsiLGY6ZnVuY3Rpb24gc2codyxQKXt2YXIgRD13LmwrUCxlZT1vYyh3LDE2KSxvZT1IYyh3KSxnZT1UdSh3KSxfZT1UdSh3KSx2ZT1UdSh3KTt3Lmw9RDt2YXIgTWU9e3JmeDplZSxyZWxJZDpvZSxsb2M6Z2Us''@;'; put 'put ''ZGlzcGxheTp2ZX07cmV0dXJuIF9lJiYoTWUuVG9vbHRpcD1fZSksTWV9fSw0OTU6e246IkJydEJlZ2luRENvbiJ9LDQ5Njp7bjoiQnJ0RW5kRENvbiJ9LDQ5Nzp7bjoiQnJ0QmVnaW5EUmVmcyJ9LDQ5ODp7bjoiQnJ0RW5kRFJlZnMifSw0OTk6e246IkJydERSZWYifSw1MDA6e246IkJydEJl''@;'; put 'put ''Z2luU2Nlbk1hbiJ9LDUwMTp7bjoiQnJ0RW5kU2Nlbk1hbiJ9LDUwMjp7bjoiQnJ0QmVnaW5TY3QifSw1MDM6e246IkJydEVuZFNjdCJ9LDUwNDp7bjoiQnJ0U2xjIn0sNTA1OntuOiJCcnRCZWdpbkRYRnMifSw1MDY6e246IkJydEVuZERYRnMifSw1MDc6e246IkJydERYRiJ9LDUwODp7bjoi''@;'; put 'put ''QnJ0QmVnaW5UYWJsZVN0eWxlcyJ9LDUwOTp7bjoiQnJ0RW5kVGFibGVTdHlsZXMifSw1MTA6e246IkJydEJlZ2luVGFibGVTdHlsZSJ9LDUxMTp7bjoiQnJ0RW5kVGFibGVTdHlsZSJ9LDUxMjp7bjoiQnJ0VGFibGVTdHlsZUVsZW1lbnQifSw1MTM6e246IkJydFRhYmxlU3R5bGVDbGllbnQi''@;'; put 'put ''fSw1MTQ6e246IkJydEJlZ2luVm9sRGVwcyJ9LDUxNTp7bjoiQnJ0RW5kVm9sRGVwcyJ9LDUxNjp7bjoiQnJ0QmVnaW5Wb2xUeXBlIn0sNTE3OntuOiJCcnRFbmRWb2xUeXBlIn0sNTE4OntuOiJCcnRCZWdpblZvbE1haW4ifSw1MTk6e246IkJydEVuZFZvbE1haW4ifSw1MjA6e246IkJydEJl''@;'; put 'put ''Z2luVm9sVG9waWMifSw1MjE6e246IkJydEVuZFZvbFRvcGljIn0sNTIyOntuOiJCcnRWb2xTdWJ0b3BpYyJ9LDUyMzp7bjoiQnJ0Vm9sUmVmIn0sNTI0OntuOiJCcnRWb2xOdW0ifSw1MjU6e246IkJydFZvbEVyciJ9LDUyNjp7bjoiQnJ0Vm9sU3RyIn0sNTI3OntuOiJCcnRWb2xCb29sIn0s''@;'; put 'put ''NTI4OntuOiJCcnRCZWdpbkNhbGNDaGFpbiQifSw1Mjk6e246IkJydEVuZENhbGNDaGFpbiQifSw1MzA6e246IkJydEJlZ2luU29ydFN0YXRlIn0sNTMxOntuOiJCcnRFbmRTb3J0U3RhdGUifSw1MzI6e246IkJydEJlZ2luU29ydENvbmQifSw1MzM6e246IkJydEVuZFNvcnRDb25kIn0sNTM0''@;'; put 'put ''OntuOiJCcnRCb29rUHJvdGVjdGlvbiJ9LDUzNTp7bjoiQnJ0U2hlZXRQcm90ZWN0aW9uIn0sNTM2OntuOiJCcnRSYW5nZVByb3RlY3Rpb24ifSw1Mzc6e246IkJydFBob25ldGljSW5mbyJ9LDUzODp7bjoiQnJ0QmVnaW5FQ1R4dFdpeiJ9LDUzOTp7bjoiQnJ0RW5kRUNUeHRXaXoifSw1NDA6''@;'; put 'put ''e246IkJydEJlZ2luRUNUV0ZsZEluZm9Mc3QifSw1NDE6e246IkJydEVuZEVDVFdGbGRJbmZvTHN0In0sNTQyOntuOiJCcnRCZWdpbkVDVHdGbGRJbmZvIn0sNTQ4OntuOiJCcnRGaWxlU2hhcmluZyJ9LDU0OTp7bjoiQnJ0T2xlU2l6ZSJ9LDU1MDp7bjoiQnJ0RHJhd2luZyIsZjpxMX0sNTUx''@;'; put 'put ''OntuOiJCcnRMZWdhY3lEcmF3aW5nIn0sNTUyOntuOiJCcnRMZWdhY3lEcmF3aW5nSEYifSw1NTM6e246IkJydFdlYk9wdCJ9LDU1NDp7bjoiQnJ0QmVnaW5XZWJQdWJJdGVtcyJ9LDU1NTp7bjoiQnJ0RW5kV2ViUHViSXRlbXMifSw1NTY6e246IkJydEJlZ2luV2ViUHViSXRlbSJ9LDU1Nzp7''@;'; put 'put ''bjoiQnJ0RW5kV2ViUHViSXRlbSJ9LDU1ODp7bjoiQnJ0QmVnaW5TWENvbmRGbXQifSw1NTk6e246IkJydEVuZFNYQ29uZEZtdCJ9LDU2MDp7bjoiQnJ0QmVnaW5TWENvbmRGbXRzIn0sNTYxOntuOiJCcnRFbmRTWENvbmRGbXRzIn0sNTYyOntuOiJCcnRCa0hpbSJ9LDU2NDp7bjoiQnJ0Q29s''@;'; put 'put ''b3IifSw1NjU6e246IkJydEJlZ2luSW5kZXhlZENvbG9ycyJ9LDU2Njp7bjoiQnJ0RW5kSW5kZXhlZENvbG9ycyJ9LDU2OTp7bjoiQnJ0QmVnaW5NUlVDb2xvcnMifSw1NzA6e246IkJydEVuZE1SVUNvbG9ycyJ9LDU3Mjp7bjoiQnJ0TVJVQ29sb3IifSw1NzM6e246IkJydEJlZ2luRFZhbHMi''@;'; put 'put ''fSw1NzQ6e246IkJydEVuZERWYWxzIn0sNTc3OntuOiJCcnRTdXBOYW1lU3RhcnQifSw1Nzg6e246IkJydFN1cE5hbWVWYWx1ZVN0YXJ0In0sNTc5OntuOiJCcnRTdXBOYW1lVmFsdWVFbmQifSw1ODA6e246IkJydFN1cE5hbWVOdW0ifSw1ODE6e246IkJydFN1cE5hbWVFcnIifSw1ODI6e246''@;'; put 'put ''IkJydFN1cE5hbWVTdCJ9LDU4Mzp7bjoiQnJ0U3VwTmFtZU5pbCJ9LDU4NDp7bjoiQnJ0U3VwTmFtZUJvb2wifSw1ODU6e246IkJydFN1cE5hbWVGbWxhIn0sNTg2OntuOiJCcnRTdXBOYW1lQml0cyJ9LDU4Nzp7bjoiQnJ0U3VwTmFtZUVuZCJ9LDU4ODp7bjoiQnJ0RW5kU3VwQm9vayJ9LDU4''@;'; put 'put ''OTp7bjoiQnJ0Q2VsbFNtYXJ0VGFnUHJvcGVydHkifSw1OTA6e246IkJydEJlZ2luQ2VsbFNtYXJ0VGFnIn0sNTkxOntuOiJCcnRFbmRDZWxsU21hcnRUYWcifSw1OTI6e246IkJydEJlZ2luQ2VsbFNtYXJ0VGFncyJ9LDU5Mzp7bjoiQnJ0RW5kQ2VsbFNtYXJ0VGFncyJ9LDU5NDp7bjoiQnJ0''@;'; put 'put ''QmVnaW5TbWFydFRhZ3MifSw1OTU6e246IkJydEVuZFNtYXJ0VGFncyJ9LDU5Njp7bjoiQnJ0U21hcnRUYWdUeXBlIn0sNTk3OntuOiJCcnRCZWdpblNtYXJ0VGFnVHlwZXMifSw1OTg6e246IkJydEVuZFNtYXJ0VGFnVHlwZXMifSw1OTk6e246IkJydEJlZ2luU1hGaWx0ZXJzIn0sNjAwOntu''@;'; put 'put ''OiJCcnRFbmRTWEZpbHRlcnMifSw2MDE6e246IkJydEJlZ2luU1hGSUxURVIifSw2MDI6e246IkJydEVuZFNYRmlsdGVyIn0sNjAzOntuOiJCcnRCZWdpbkZpbGxzIn0sNjA0OntuOiJCcnRFbmRGaWxscyJ9LDYwNTp7bjoiQnJ0QmVnaW5DZWxsV2F0Y2hlcyJ9LDYwNjp7bjoiQnJ0RW5kQ2Vs''@;'; put 'put ''bFdhdGNoZXMifSw2MDc6e246IkJydENlbGxXYXRjaCJ9LDYwODp7bjoiQnJ0QmVnaW5DUkVycnMifSw2MDk6e246IkJydEVuZENSRXJycyJ9LDYxMDp7bjoiQnJ0Q3Jhc2hSZWNFcnIifSw2MTE6e246IkJydEJlZ2luRm9udHMifSw2MTI6e246IkJydEVuZEZvbnRzIn0sNjEzOntuOiJCcnRC''@;'; put 'put ''ZWdpbkJvcmRlcnMifSw2MTQ6e246IkJydEVuZEJvcmRlcnMifSw2MTU6e246IkJydEJlZ2luRm10cyJ9LDYxNjp7bjoiQnJ0RW5kRm10cyJ9LDYxNzp7bjoiQnJ0QmVnaW5DZWxsWEZzIn0sNjE4OntuOiJCcnRFbmRDZWxsWEZzIn0sNjE5OntuOiJCcnRCZWdpblN0eWxlcyJ9LDYyMDp7bjoi''@;'; put 'put ''QnJ0RW5kU3R5bGVzIn0sNjI1OntuOiJCcnRCaWdOYW1lIn0sNjI2OntuOiJCcnRCZWdpbkNlbGxTdHlsZVhGcyJ9LDYyNzp7bjoiQnJ0RW5kQ2VsbFN0eWxlWEZzIn0sNjI4OntuOiJCcnRCZWdpbkNvbW1lbnRzIn0sNjI5OntuOiJCcnRFbmRDb21tZW50cyJ9LDYzMDp7bjoiQnJ0QmVnaW5D''@;'; put 'put ''b21tZW50QXV0aG9ycyJ9LDYzMTp7bjoiQnJ0RW5kQ29tbWVudEF1dGhvcnMifSw2MzI6e246IkJydENvbW1lbnRBdXRob3IiLGY6akh9LDYzMzp7bjoiQnJ0QmVnaW5Db21tZW50TGlzdCJ9LDYzNDp7bjoiQnJ0RW5kQ29tbWVudExpc3QifSw2MzU6e246IkJydEJlZ2luQ29tbWVudCIsZjpm''@;'; put 'put ''dW5jdGlvbiB5QSh3KXt2YXIgUD17fTtQLmlhdXRob3I9dy5yZWFkX3NoaWZ0KDQpO3ZhciBEPW9jKHcsMTYpO3JldHVybiBQLnJmeD1ELnMsUC5yZWY9cGkoRC5zKSx3LmwrPTE2LFB9fSw2MzY6e246IkJydEVuZENvbW1lbnQifSw2Mzc6e246IkJydENvbW1lbnRUZXh0IixmOlJifSw2Mzg6''@;'; put 'put ''e246IkJydEJlZ2luT2xlT2JqZWN0cyJ9LDYzOTp7bjoiQnJ0T2xlT2JqZWN0In0sNjQwOntuOiJCcnRFbmRPbGVPYmplY3RzIn0sNjQxOntuOiJCcnRCZWdpblN4cnVsZXMifSw2NDI6e246IkJydEVuZFN4UnVsZXMifSw2NDM6e246IkJydEJlZ2luQWN0aXZlWENvbnRyb2xzIn0sNjQ0Ontu''@;'; put 'put ''OiJCcnRBY3RpdmVYIn0sNjQ1OntuOiJCcnRFbmRBY3RpdmVYQ29udHJvbHMifSw2NDY6e246IkJydEJlZ2luUENEU0RUQ0VNZW1iZXJzU29ydEJ5In0sNjQ4OntuOiJCcnRCZWdpbkNlbGxJZ25vcmVFQ3MifSw2NDk6e246IkJydENlbGxJZ25vcmVFQyJ9LDY1MDp7bjoiQnJ0RW5kQ2VsbEln''@;'; put 'put ''bm9yZUVDcyJ9LDY1MTp7bjoiQnJ0Q3NQcm9wIixmOmZ1bmN0aW9uIFdwKHcsUCl7cmV0dXJuIHcubCs9MTAse25hbWU6VHUodyl9fX0sNjUyOntuOiJCcnRDc1BhZ2VTZXR1cCJ9LDY1Mzp7bjoiQnJ0QmVnaW5Vc2VyQ3NWaWV3cyJ9LDY1NDp7bjoiQnJ0RW5kVXNlckNzVmlld3MifSw2NTU6''@;'; put 'put ''e246IkJydEJlZ2luVXNlckNzVmlldyJ9LDY1Njp7bjoiQnJ0RW5kVXNlckNzVmlldyJ9LDY1Nzp7bjoiQnJ0QmVnaW5QY2RTRkNJRW50cmllcyJ9LDY1ODp7bjoiQnJ0RW5kUENEU0ZDSUVudHJpZXMifSw2NTk6e246IkJydFBDRFNGQ0lFbnRyeSJ9LDY2MDp7bjoiQnJ0QmVnaW5MaXN0UGFy''@;'; put 'put ''dHMifSw2NjE6e246IkJydExpc3RQYXJ0In0sNjYyOntuOiJCcnRFbmRMaXN0UGFydHMifSw2NjM6e246IkJydFNoZWV0Q2FsY1Byb3AifSw2NjQ6e246IkJydEJlZ2luRm5Hcm91cCJ9LDY2NTp7bjoiQnJ0Rm5Hcm91cCJ9LDY2Njp7bjoiQnJ0RW5kRm5Hcm91cCJ9LDY2Nzp7bjoiQnJ0U3Vw''@;'; put 'put ''QWRkaW4ifSw2Njg6e246IkJydFNYVERNUE9yZGVyIn0sNjY5OntuOiJCcnRDc1Byb3RlY3Rpb24ifSw2NzE6e246IkJydEJlZ2luV3NTb3J0TWFwIn0sNjcyOntuOiJCcnRFbmRXc1NvcnRNYXAifSw2NzM6e246IkJydEJlZ2luUlJTb3J0In0sNjc0OntuOiJCcnRFbmRSUlNvcnQifSw2NzU6''@;'; put 'put ''e246IkJydFJSU29ydEl0ZW0ifSw2NzY6e246IkJydEZpbGVTaGFyaW5nSXNvIn0sNjc3OntuOiJCcnRCb29rUHJvdGVjdGlvbklzbyJ9LDY3ODp7bjoiQnJ0U2hlZXRQcm90ZWN0aW9uSXNvIn0sNjc5OntuOiJCcnRDc1Byb3RlY3Rpb25Jc28ifSw2ODA6e246IkJydFJhbmdlUHJvdGVjdGlv''@;'; put 'put ''bklzbyJ9LDY4MTp7bjoiQnJ0RFZhbExpc3QifSwxMDI0OntuOiJCcnRSd0Rlc2NlbnQifSwxMDI1OntuOiJCcnRLbm93bkZvbnRzIn0sMTAyNjp7bjoiQnJ0QmVnaW5TWFR1cGxlU2V0In0sMTAyNzp7bjoiQnJ0RW5kU1hUdXBsZVNldCJ9LDEwMjg6e246IkJydEJlZ2luU1hUdXBsZVNldEhl''@;'; put 'put ''YWRlciJ9LDEwMjk6e246IkJydEVuZFNYVHVwbGVTZXRIZWFkZXIifSwxMDMwOntuOiJCcnRTWFR1cGxlU2V0SGVhZGVySXRlbSJ9LDEwMzE6e246IkJydEJlZ2luU1hUdXBsZVNldERhdGEifSwxMDMyOntuOiJCcnRFbmRTWFR1cGxlU2V0RGF0YSJ9LDEwMzM6e246IkJydEJlZ2luU1hUdXBs''@;'; put 'put ''ZVNldFJvdyJ9LDEwMzQ6e246IkJydEVuZFNYVHVwbGVTZXRSb3cifSwxMDM1OntuOiJCcnRTWFR1cGxlU2V0Um93SXRlbSJ9LDEwMzY6e246IkJydE5hbWVFeHQifSwxMDM3OntuOiJCcnRQQ0RIMTQifSwxMDM4OntuOiJCcnRCZWdpblBDRENhbGNNZW0xNCJ9LDEwMzk6e246IkJydEVuZFBD''@;'; put 'put ''RENhbGNNZW0xNCJ9LDEwNDA6e246IkJydFNYVEgxNCJ9LDEwNDE6e246IkJydEJlZ2luU3BhcmtsaW5lR3JvdXAifSwxMDQyOntuOiJCcnRFbmRTcGFya2xpbmVHcm91cCJ9LDEwNDM6e246IkJydFNwYXJrbGluZSJ9LDEwNDQ6e246IkJydFNYREkxNCJ9LDEwNDU6e246IkJydFdzRm10SW5m''@;'; put 'put ''b0V4MTQifSwxMDQ2OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZzE0In0sMTA0Nzp7bjoiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTQifSwxMDQ4OntuOiJCcnRCZWdpbkNGUnVsZTE0In0sMTA0OTp7bjoiQnJ0RW5kQ0ZSdWxlMTQifSwxMDUwOntuOiJCcnRDRlZPMTQi''@;'; put 'put ''fSwxMDUxOntuOiJCcnRCZWdpbkRhdGFiYXIxNCJ9LDEwNTI6e246IkJydEJlZ2luSWNvblNldDE0In0sMTA1Mzp7bjoiQnJ0RFZhbDE0IixmOmZ1bmN0aW9uIHVWKHcsUCxEKXt2YXIgZWU9ZnVuY3Rpb24gS3QodyxQLEQpe3ZhciBlZT13LnJlYWRfc2hpZnQoNCksb2U9e307cmV0dXJuIDEm''@;'; put 'put ''ZWUmJihvZS5yZWZzPWZ1bmN0aW9uIFVuKHcpe2Zvcih2YXIgUD13LnJlYWRfc2hpZnQoNCksRD1bXTtQLS0gPjA7KUQucHVzaChQcih3KSk7cmV0dXJuIER9KHcpKSwyJmVlJiYob2Uuc3FyZWZzPWZ1bmN0aW9uIFNvKHcpe2Zvcih2YXIgUD13LnJlYWRfc2hpZnQoNCksRD1bXTtQLS0gPjA7''@;'; put 'put ''KUQucHVzaChyYSh3KSk7cmV0dXJuIER9KHcpKSw0JmVlJiYob2UuZm9ybXVsYXM9ZnVuY3Rpb24gWWEodyxQLEQpe2Zvcih2YXIgZWU9dy5yZWFkX3NoaWZ0KDQpLG9lPVtdO2VlLS0gPjA7KW9lLnB1c2goaHUodywwLEQpKTtyZXR1cm4gb2V9KHcsMCxEKSksOCZlZSYmKG9lLnJlbElEPWZ1''@;'; put 'put ''bmN0aW9uIEY2KHcpe3ZhciBQPXcucmVhZF9zaGlmdCgyKTtyZXR1cm4gMD09PVA/IiI6dy5yZWFkX3NoaWZ0KFAsInV0ZjE2bGUiKX0odykpLG9lfSh3LDAsRCksb2U9dy5yZWFkX3NoaWZ0KDQpLGdlPUhjKHcpLF9lPUhjKHcpLHZlPUhjKHcpLE1lPUhjKHcpLGplPShlZS5mb3JtdWxhc3x8''@;'; put 'put ''W10pWzBdLFVlPShlZS5mb3JtdWxhc3x8W10pWzFdLFhlPTE1Jm9lLGl0PXt0OnJvW1hlXSxzcXJmeDplZS5zcXJlZnNbMF0sczpbZ2UsX2UsdmUsTWVdfTtyZXR1cm4gamUmJihpdC5mMT1qZSksVWUmJihpdC5mMj1VZSksMD09WGV8fDM9PVhlfHw3PT1YZXx8KGl0Lm9wPUN3W29lPj4yMCYx''@;'; put 'put ''NV0pLGl0fX0sMTA1NDp7bjoiQnJ0QmVnaW5EVmFsczE0In0sMTA1NTp7bjoiQnJ0Q29sb3IxNCJ9LDEwNTY6e246IkJydEJlZ2luU3BhcmtsaW5lcyJ9LDEwNTc6e246IkJydEVuZFNwYXJrbGluZXMifSwxMDU4OntuOiJCcnRCZWdpblNwYXJrbGluZUdyb3VwcyJ9LDEwNTk6e246IkJydEVu''@;'; put 'put ''ZFNwYXJrbGluZUdyb3VwcyJ9LDEwNjE6e246IkJydFNYVkQxNCJ9LDEwNjI6e246IkJydEJlZ2luU1hWaWV3MTQifSwxMDYzOntuOiJCcnRFbmRTWFZpZXcxNCJ9LDEwNjQ6e246IkJydEJlZ2luU1hWaWV3MTYifSwxMDY1OntuOiJCcnRFbmRTWFZpZXcxNiJ9LDEwNjY6e246IkJydEJlZ2lu''@;'; put 'put ''UENEMTQifSwxMDY3OntuOiJCcnRFbmRQQ0QxNCJ9LDEwNjg6e246IkJydEJlZ2luRXh0Q29ubjE0In0sMTA2OTp7bjoiQnJ0RW5kRXh0Q29ubjE0In0sMTA3MDp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZUlEcyJ9LDEwNzE6e246IkJydEVuZFNsaWNlckNhY2hlSURzIn0sMTA3Mjp7bjoiQnJ0''@;'; put 'put ''QmVnaW5TbGljZXJDYWNoZUlEIn0sMTA3Mzp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVJRCJ9LDEwNzU6e246IkJydEJlZ2luU2xpY2VyQ2FjaGUifSwxMDc2OntuOiJCcnRFbmRTbGljZXJDYWNoZSJ9LDEwNzc6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVEZWYifSwxMDc4OntuOiJCcnRFbmRTbGlj''@;'; put 'put ''ZXJDYWNoZURlZiJ9LDEwNzk6e246IkJydEJlZ2luU2xpY2Vyc0V4In0sMTA4MDp7bjoiQnJ0RW5kU2xpY2Vyc0V4In0sMTA4MTp7bjoiQnJ0QmVnaW5TbGljZXJFeCJ9LDEwODI6e246IkJydEVuZFNsaWNlckV4In0sMTA4Mzp7bjoiQnJ0QmVnaW5TbGljZXIifSwxMDg0OntuOiJCcnRFbmRT''@;'; put 'put ''bGljZXIifSwxMDg1OntuOiJCcnRTbGljZXJDYWNoZVBpdm90VGFibGVzIn0sMTA4Njp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZU9sYXBJbXBsIn0sMTA4Nzp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVPbGFwSW1wbCJ9LDEwODg6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVMZXZlbHNEYXRhIn0sMTA4''@;'; put 'put ''OTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbHNEYXRhIn0sMTA5MDp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsRGF0YSJ9LDEwOTE6e246IkJydEVuZFNsaWNlckNhY2hlTGV2ZWxEYXRhIn0sMTA5Mjp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2VzIn0sMTA5Mzp7bjoiQnJ0''@;'; put 'put ''RW5kU2xpY2VyQ2FjaGVTaVJhbmdlcyJ9LDEwOTQ6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVTaVJhbmdlIn0sMTA5NTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVTaVJhbmdlIn0sMTA5Njp7bjoiQnJ0U2xpY2VyQ2FjaGVPbGFwSXRlbSJ9LDEwOTc6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVTZWxl''@;'; put 'put ''Y3Rpb25zIn0sMTA5ODp7bjoiQnJ0U2xpY2VyQ2FjaGVTZWxlY3Rpb24ifSwxMDk5OntuOiJCcnRFbmRTbGljZXJDYWNoZVNlbGVjdGlvbnMifSwxMTAwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlTmF0aXZlIn0sMTEwMTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVOYXRpdmUifSwxMTAyOntuOiJC''@;'; put 'put ''cnRTbGljZXJDYWNoZU5hdGl2ZUl0ZW0ifSwxMTAzOntuOiJCcnRSYW5nZVByb3RlY3Rpb24xNCJ9LDExMDQ6e246IkJydFJhbmdlUHJvdGVjdGlvbklzbzE0In0sMTEwNTp7bjoiQnJ0Q2VsbElnbm9yZUVDMTQifSwxMTExOntuOiJCcnRMaXN0MTQifSwxMTEyOntuOiJCcnRDRkljb24ifSwx''@;'; put 'put ''MTEzOntuOiJCcnRCZWdpblNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHMifSwxMTE0OntuOiJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSURzIn0sMTExNTp7bjoiQnJ0QmVnaW5TbGljZXJzIn0sMTExNjp7bjoiQnJ0RW5kU2xpY2VycyJ9LDExMTc6e246IkJydFdiUHJvcDE0In0sMTEx''@;'; put 'put ''ODp7bjoiQnJ0QmVnaW5TWEVkaXQifSwxMTE5OntuOiJCcnRFbmRTWEVkaXQifSwxMTIwOntuOiJCcnRCZWdpblNYRWRpdHMifSwxMTIxOntuOiJCcnRFbmRTWEVkaXRzIn0sMTEyMjp7bjoiQnJ0QmVnaW5TWENoYW5nZSJ9LDExMjM6e246IkJydEVuZFNYQ2hhbmdlIn0sMTEyNDp7bjoiQnJ0''@;'; put 'put ''QmVnaW5TWENoYW5nZXMifSwxMTI1OntuOiJCcnRFbmRTWENoYW5nZXMifSwxMTI2OntuOiJCcnRTWFR1cGxlSXRlbXMifSwxMTI4OntuOiJCcnRCZWdpblNsaWNlclN0eWxlIn0sMTEyOTp7bjoiQnJ0RW5kU2xpY2VyU3R5bGUifSwxMTMwOntuOiJCcnRTbGljZXJTdHlsZUVsZW1lbnQifSwx''@;'; put 'put ''MTMxOntuOiJCcnRCZWdpblN0eWxlU2hlZXRFeHQxNCJ9LDExMzI6e246IkJydEVuZFN0eWxlU2hlZXRFeHQxNCJ9LDExMzM6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEIn0sMTEzNDp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEIn0sMTEzNTp7bjoiQnJ0''@;'; put 'put ''QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmdzIn0sMTEzNjp7bjoiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5ncyJ9LDExMzc6e246IkJydEJlZ2luUENEQ2FsY01lbUV4dCJ9LDExMzg6e246IkJydEVuZFBDRENhbGNNZW1FeHQifSwxMTM5OntuOiJCcnRCZWdpblBDRENhbGNNZW1zRXh0''@;'; put 'put ''In0sMTE0MDp7bjoiQnJ0RW5kUENEQ2FsY01lbXNFeHQifSwxMTQxOntuOiJCcnRQQ0RGaWVsZDE0In0sMTE0Mjp7bjoiQnJ0QmVnaW5TbGljZXJTdHlsZXMifSwxMTQzOntuOiJCcnRFbmRTbGljZXJTdHlsZXMifSwxMTQ0OntuOiJCcnRCZWdpblNsaWNlclN0eWxlRWxlbWVudHMifSwxMTQ1''@;'; put 'put ''OntuOiJCcnRFbmRTbGljZXJTdHlsZUVsZW1lbnRzIn0sMTE0Njp7bjoiQnJ0Q0ZSdWxlRXh0In0sMTE0Nzp7bjoiQnJ0QmVnaW5TWENvbmRGbXQxNCJ9LDExNDg6e246IkJydEVuZFNYQ29uZEZtdDE0In0sMTE0OTp7bjoiQnJ0QmVnaW5TWENvbmRGbXRzMTQifSwxMTUwOntuOiJCcnRFbmRT''@;'; put 'put ''WENvbmRGbXRzMTQifSwxMTUyOntuOiJCcnRCZWdpblNvcnRDb25kMTQifSwxMTUzOntuOiJCcnRFbmRTb3J0Q29uZDE0In0sMTE1NDp7bjoiQnJ0RW5kRFZhbHMxNCJ9LDExNTU6e246IkJydEVuZEljb25TZXQxNCJ9LDExNTY6e246IkJydEVuZERhdGFiYXIxNCJ9LDExNTc6e246IkJydEJl''@;'; put 'put ''Z2luQ29sb3JTY2FsZTE0In0sMTE1ODp7bjoiQnJ0RW5kQ29sb3JTY2FsZTE0In0sMTE1OTp7bjoiQnJ0QmVnaW5TeHJ1bGVzMTQifSwxMTYwOntuOiJCcnRFbmRTeHJ1bGVzMTQifSwxMTYxOntuOiJCcnRCZWdpblBSdWxlMTQifSwxMTYyOntuOiJCcnRFbmRQUnVsZTE0In0sMTE2Mzp7bjoi''@;'; put 'put ''QnJ0QmVnaW5QUkZpbHRlcnMxNCJ9LDExNjQ6e246IkJydEVuZFBSRmlsdGVyczE0In0sMTE2NTp7bjoiQnJ0QmVnaW5QUkZpbHRlcjE0In0sMTE2Njp7bjoiQnJ0RW5kUFJGaWx0ZXIxNCJ9LDExNjc6e246IkJydEJlZ2luUFJGSXRlbTE0In0sMTE2ODp7bjoiQnJ0RW5kUFJGSXRlbTE0In0s''@;'; put 'put ''MTE2OTp7bjoiQnJ0QmVnaW5DZWxsSWdub3JlRUNzMTQifSwxMTcwOntuOiJCcnRFbmRDZWxsSWdub3JlRUNzMTQifSwxMTcxOntuOiJCcnREeGYxNCJ9LDExNzI6e246IkJydEJlZ2luRHhGMTRzIn0sMTE3Mzp7bjoiQnJ0RW5kRHhmMTRzIn0sMTE3Nzp7bjoiQnJ0RmlsdGVyMTQifSwxMTc4''@;'; put 'put ''OntuOiJCcnRCZWdpbkN1c3RvbUZpbHRlcnMxNCJ9LDExODA6e246IkJydEN1c3RvbUZpbHRlcjE0In0sMTE4MTp7bjoiQnJ0SWNvbkZpbHRlcjE0In0sMTE4Mjp7bjoiQnJ0UGl2b3RDYWNoZUNvbm5lY3Rpb25OYW1lIn0sMjA0ODp7bjoiQnJ0QmVnaW5EZWNvdXBsZWRQaXZvdENhY2hlSURz''@;'; put 'put ''In0sMjA0OTp7bjoiQnJ0RW5kRGVjb3VwbGVkUGl2b3RDYWNoZUlEcyJ9LDIwNTA6e246IkJydERlY291cGxlZFBpdm90Q2FjaGVJRCJ9LDIwNTE6e246IkJydEJlZ2luUGl2b3RUYWJsZVJlZnMifSwyMDUyOntuOiJCcnRFbmRQaXZvdFRhYmxlUmVmcyJ9LDIwNTM6e246IkJydFBpdm90VGFi''@;'; put 'put ''bGVSZWYifSwyMDU0OntuOiJCcnRTbGljZXJDYWNoZUJvb2tQaXZvdFRhYmxlcyJ9LDIwNTU6e246IkJydEJlZ2luU3h2Y2VsbHMifSwyMDU2OntuOiJCcnRFbmRTeHZjZWxscyJ9LDIwNTc6e246IkJydEJlZ2luU3hSb3cifSwyMDU4OntuOiJCcnRFbmRTeFJvdyJ9LDIwNjA6e246IkJydFBj''@;'; put 'put ''ZENhbGNNZW0xNSJ9LDIwNjc6e246IkJydFFzaTE1In0sMjA2ODp7bjoiQnJ0QmVnaW5XZWJFeHRlbnNpb25zIn0sMjA2OTp7bjoiQnJ0RW5kV2ViRXh0ZW5zaW9ucyJ9LDIwNzA6e246IkJydFdlYkV4dGVuc2lvbiJ9LDIwNzE6e246IkJydEFic1BhdGgxNSJ9LDIwNzI6e246IkJydEJlZ2lu''@;'; put 'put ''UGl2b3RUYWJsZVVJU2V0dGluZ3MifSwyMDczOntuOiJCcnRFbmRQaXZvdFRhYmxlVUlTZXR0aW5ncyJ9LDIwNzU6e246IkJydFRhYmxlU2xpY2VyQ2FjaGVJRHMifSwyMDc2OntuOiJCcnRUYWJsZVNsaWNlckNhY2hlSUQifSwyMDc3OntuOiJCcnRCZWdpblRhYmxlU2xpY2VyQ2FjaGUifSwy''@;'; put 'put ''MDc4OntuOiJCcnRFbmRUYWJsZVNsaWNlckNhY2hlIn0sMjA3OTp7bjoiQnJ0U3hGaWx0ZXIxNSJ9LDIwODA6e246IkJydEJlZ2luVGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRHMifSwyMDgxOntuOiJCcnRFbmRUaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEcyJ9LDIwODI6e246IkJydFRpbWVs''@;'; put 'put ''aW5lQ2FjaGVQaXZvdENhY2hlSUQifSwyMDgzOntuOiJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRHMifSwyMDg0OntuOiJCcnRFbmRUaW1lbGluZUNhY2hlSURzIn0sMjA4NTp7bjoiQnJ0QmVnaW5UaW1lbGluZUNhY2hlSUQifSwyMDg2OntuOiJCcnRFbmRUaW1lbGluZUNhY2hlSUQifSwyMDg3''@;'; put 'put ''OntuOiJCcnRCZWdpblRpbWVsaW5lc0V4In0sMjA4ODp7bjoiQnJ0RW5kVGltZWxpbmVzRXgifSwyMDg5OntuOiJCcnRCZWdpblRpbWVsaW5lRXgifSwyMDkwOntuOiJCcnRFbmRUaW1lbGluZUV4In0sMjA5MTp7bjoiQnJ0V29ya0Jvb2tQcjE1In0sMjA5Mjp7bjoiQnJ0UENESDE1In0sMjA5''@;'; put 'put ''Mzp7bjoiQnJ0QmVnaW5UaW1lbGluZVN0eWxlIn0sMjA5NDp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZSJ9LDIwOTU6e246IkJydFRpbWVsaW5lU3R5bGVFbGVtZW50In0sMjA5Njp7bjoiQnJ0QmVnaW5UaW1lbGluZVN0eWxlc2hlZXRFeHQxNSJ9LDIwOTc6e246IkJydEVuZFRpbWVsaW5lU3R5''@;'; put 'put ''bGVzaGVldEV4dDE1In0sMjA5ODp7bjoiQnJ0QmVnaW5UaW1lbGluZVN0eWxlcyJ9LDIwOTk6e246IkJydEVuZFRpbWVsaW5lU3R5bGVzIn0sMjEwMDp7bjoiQnJ0QmVnaW5UaW1lbGluZVN0eWxlRWxlbWVudHMifSwyMTAxOntuOiJCcnRFbmRUaW1lbGluZVN0eWxlRWxlbWVudHMifSwyMTAy''@;'; put 'put ''OntuOiJCcnREeGYxNSJ9LDIxMDM6e246IkJydEJlZ2luRHhmczE1In0sMjEwNDp7bjoiYnJ0RW5kRHhmczE1In0sMjEwNTp7bjoiQnJ0U2xpY2VyQ2FjaGVIaWRlSXRlbXNXaXRoTm9EYXRhIn0sMjEwNjp7bjoiQnJ0QmVnaW5JdGVtVW5pcXVlTmFtZXMifSwyMTA3OntuOiJCcnRFbmRJdGVt''@;'; put 'put ''VW5pcXVlTmFtZXMifSwyMTA4OntuOiJCcnRJdGVtVW5pcXVlTmFtZSJ9LDIxMDk6e246IkJydEJlZ2luRXh0Q29ubjE1In0sMjExMDp7bjoiQnJ0RW5kRXh0Q29ubjE1In0sMjExMTp7bjoiQnJ0QmVnaW5PbGVkYlByMTUifSwyMTEyOntuOiJCcnRFbmRPbGVkYlByMTUifSwyMTEzOntuOiJC''@;'; put 'put ''cnRCZWdpbkRhdGFGZWVkUHIxNSJ9LDIxMTQ6e246IkJydEVuZERhdGFGZWVkUHIxNSJ9LDIxMTU6e246IkJydFRleHRQcjE1In0sMjExNjp7bjoiQnJ0UmFuZ2VQcjE1In0sMjExNzp7bjoiQnJ0RGJDb21tYW5kMTUifSwyMTE4OntuOiJCcnRCZWdpbkRiVGFibGVzMTUifSwyMTE5OntuOiJC''@;'; put 'put ''cnRFbmREYlRhYmxlczE1In0sMjEyMDp7bjoiQnJ0RGJUYWJsZTE1In0sMjEyMTp7bjoiQnJ0QmVnaW5EYXRhTW9kZWwifSwyMTIyOntuOiJCcnRFbmREYXRhTW9kZWwifSwyMTIzOntuOiJCcnRCZWdpbk1vZGVsVGFibGVzIn0sMjEyNDp7bjoiQnJ0RW5kTW9kZWxUYWJsZXMifSwyMTI1Ontu''@;'; put 'put ''OiJCcnRNb2RlbFRhYmxlIn0sMjEyNjp7bjoiQnJ0QmVnaW5Nb2RlbFJlbGF0aW9uc2hpcHMifSwyMTI3OntuOiJCcnRFbmRNb2RlbFJlbGF0aW9uc2hpcHMifSwyMTI4OntuOiJCcnRNb2RlbFJlbGF0aW9uc2hpcCJ9LDIxMjk6e246IkJydEJlZ2luRUNUeHRXaXoxNSJ9LDIxMzA6e246IkJy''@;'; put 'put ''dEVuZEVDVHh0V2l6MTUifSwyMTMxOntuOiJCcnRCZWdpbkVDVFdGbGRJbmZvTHN0MTUifSwyMTMyOntuOiJCcnRFbmRFQ1RXRmxkSW5mb0xzdDE1In0sMjEzMzp7bjoiQnJ0QmVnaW5FQ1RXRmxkSW5mbzE1In0sMjEzNDp7bjoiQnJ0RmllbGRMaXN0QWN0aXZlSXRlbSJ9LDIxMzU6e246IkJy''@;'; put 'put ''dFBpdm90Q2FjaGVJZFZlcnNpb24ifSwyMTM2OntuOiJCcnRTWERJMTUifSwyMTM3OntuOiJCcnRCZWdpbk1vZGVsVGltZUdyb3VwaW5ncyJ9LDIxMzg6e246IkJydEVuZE1vZGVsVGltZUdyb3VwaW5ncyJ9LDIxMzk6e246IkJydEJlZ2luTW9kZWxUaW1lR3JvdXBpbmcifSwyMTQwOntuOiJC''@;'; put 'put ''cnRFbmRNb2RlbFRpbWVHcm91cGluZyJ9LDIxNDE6e246IkJydE1vZGVsVGltZUdyb3VwaW5nQ2FsY0NvbCJ9LDMwNzI6e246IkJydFVpZCJ9LDMwNzM6e246IkJydFJldmlzaW9uUHRyIn0sNTA5NTp7bjoiQnJ0QmVnaW5DYWxjRmVhdHVyZXMifSw1MDk2OntuOiJCcnRFbmRDYWxjRmVhdHVy''@;'; put 'put ''ZXMifSw1MDk3OntuOiJCcnRDYWxjRmVhdHVyZSJ9LDY1NTM1OntuOiIifX0sZ2c9S2UoSDIsIm4iKTtnZy5CcnRGUlRBcmNoSUQkPTE2O3ZhciBmMT17Njp7bjoiRm9ybXVsYSIsZjpMcH0sMTA6e246IkVPRiIsZjpRZn0sMTI6e246IkNhbGNDb3VudCIsZjp5c30sMTM6e246IkNhbGNNb2Rl''@;'; put 'put ''IixmOnlzfSwxNDp7bjoiQ2FsY1ByZWNpc2lvbiIsZjp4b30sMTU6e246IkNhbGNSZWZNb2RlIixmOnhvfSwxNjp7bjoiQ2FsY0RlbHRhIixmOnlsfSwxNzp7bjoiQ2FsY0l0ZXIiLGY6eG99LDE4OntuOiJQcm90ZWN0IixmOnhvfSwxOTp7bjoiUGFzc3dvcmQiLGY6eXN9LDIwOntuOiJIZWFk''@;'; put 'put ''ZXIiLGY6c2Z9LDIxOntuOiJGb290ZXIiLGY6c2Z9LDIzOntuOiJFeHRlcm5TaGVldCIsZjp0OH0sMjQ6e246IkxibCIsZjp2eH0sMjU6e246IldpblByb3RlY3QiLGY6eG99LDI2OntuOiJWZXJ0aWNhbFBhZ2VCcmVha3MifSwyNzp7bjoiSG9yaXpvbnRhbFBhZ2VCcmVha3MifSwyODp7bjoi''@;'; put 'put ''Tm90ZSIsZjpmdW5jdGlvbiB3eCh3LFAsRCl7cmV0dXJuIGZ1bmN0aW9uIG9fKHcsUCxEKXtpZighKEQuYmlmZjw4KSl7dmFyIGVlPXcucmVhZF9zaGlmdCgyKSxvZT13LnJlYWRfc2hpZnQoMiksZ2U9dy5yZWFkX3NoaWZ0KDIpLF9lPXcucmVhZF9zaGlmdCgyKSx2ZT1saCh3LDAsRCk7cmV0''@;'; put 'put ''dXJuIEQuYmlmZjw4JiZ3LnJlYWRfc2hpZnQoMSksW3tyOmVlLGM6b2V9LHZlLF9lLGdlXX19KHcsMCxEKX19LDI5OntuOiJTZWxlY3Rpb24iLGY6ZnVuY3Rpb24gbXAodyxQLEQpe3JldHVybiBEJiZELmJpZmY8NT8ody5sKz1QLHtjZWxsOntyOjAsYzowfX0pOih3LnJlYWRfc2hpZnQoMSks''@;'; put 'put ''e2NlbGw6cGkoe3I6dy5yZWFkX3NoaWZ0KDIpLGM6dy5yZWFkX3NoaWZ0KDIpfSl9KX19LDM0OntuOiJEYXRlMTkwNCIsZjp4b30sMzU6e246IkV4dGVybk5hbWUiLGY6bl99LDM4OntuOiJMZWZ0TWFyZ2luIixmOnlsfSwzOTp7bjoiUmlnaHRNYXJnaW4iLGY6eWx9LDQwOntuOiJUb3BNYXJn''@;'; put 'put ''aW4iLGY6eWx9LDQxOntuOiJCb3R0b21NYXJnaW4iLGY6eWx9LDQyOntuOiJQcmludFJvd0NvbCIsZjp4b30sNDM6e246IlByaW50R3JpZCIsZjp4b30sNDc6e246IkZpbGVQYXNzIixmOmZ1bmN0aW9uIEdzKHcsUCxEKXtpZihELmVuYylyZXR1cm4gRC5lbmM7dmFyIGVlPXtUeXBlOkQuYmlm''@;'; put 'put ''Zj49OD93LnJlYWRfc2hpZnQoMik6MH07cmV0dXJuIGVlLlR5cGU/ZnVuY3Rpb24gb0godyxQLEQsZWUpe3ZhciBvZT1lZXx8e307aWYob2UuSW5mbz13LnJlYWRfc2hpZnQoMiksdy5sLT0yLDE9PT1vZS5JbmZvKXtpZihvZS5EYXRhPWZ1bmN0aW9uIE5RKHcpe3ZhciBQPXt9LEQ9UC5FbmNy''@;'; put 'put ''eXB0aW9uVmVyc2lvbkluZm89bDEodyw0KTtpZigxIT1ELk1ham9yfHwxIT1ELk1pbm9yKXRocm93InVucmVjb2duaXplZCB2ZXJzaW9uIGNvZGUgIitELk1ham9yKyIgOiAiK0QuTWlub3I7cmV0dXJuIFAuU2FsdD13LnJlYWRfc2hpZnQoMTYpLFAuRW5jcnlwdGVkVmVyaWZpZXI9dy5yZWFk''@;'; put 'put ''X3NoaWZ0KDE2KSxQLkVuY3J5cHRlZFZlcmlmaWVySGFzaD13LnJlYWRfc2hpZnQoMTYpLFB9KHcpLEQucGFzc3dvcmQmJnR5cGVvZiBmdjwidSIpe3ZhciBnZT1mdihELnBhc3N3b3JkLG9lLkRhdGEuU2FsdCwiMDAwMDAwMDAiKSxfZT11ZShvZS5EYXRhLkVuY3J5cHRlZFZlcmlmaWVyK29l''@;'; put 'put ''LkRhdGEuRW5jcnlwdGVkVmVyaWZpZXJIYXNoLCJoZXgiKSx2ZT1VZi5yYzQodWUoZ2UsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSxfZSk7ZWUudmFsaWQ9VWYubWQ1KHZlLnNsaWNlKDAsMTYpKT09QnVmZmVyLmZyb20odmUuc2xpY2UoMTYpKS50b1N0cmluZygiaGV4Iiksb2UuRGF0YS5L''@;'; put 'put ''ZXk9Z2UsZWUuaW5zaXR1PWZ1bmN0aW9uIGFyKHcsUCl7dmFyIEQ9bmV3IEFycmF5KDI1NiksZWU9MCxvZT0wLGdlPTAsX2U9MDtmdW5jdGlvbiB2ZShpdCl7Zm9yKGVlPTAsb2U9MCxnZT0wLF9lPTAsb2U9MDsyNTYhPW9lOysrb2UpRFtvZV09b2U7Zm9yKGdlPTAsb2U9MDsyNTYhPW9lOysr''@;'; put 'put ''b2Upe3RyeXtnZT1nZStEW29lXStpdFtvZSVpdC5sZW5ndGhdLmNoYXJDb2RlQXQoMCkmMjU1fWNhdGNoKGZ0KXt0aHJvdyBjb25zb2xlLmxvZyhvZSxpdFtvZSVpdC5sZW5ndGhdKSxmdH1fZT1EW29lXSxEW29lXT1EW2dlXSxEW2dlXT1fZX1vZT1nZT0wfWZ1bmN0aW9uIE1lKGl0KXt2YXIg''@;'; put 'put ''ZnQ9WShpdC5sZW5ndGgpO2ZvcihlZT0wO2VlIT1pdC5sZW5ndGg7KytlZSlfZT1EW29lPW9lKzEmMjU1XSxEW29lXT1EW2dlPShnZStEW29lXSklMjU2XSxEW2dlXT1fZSxmdFtlZV09aXRbZWVdXkRbRFtvZV0rRFtnZV0mMjU1XTtyZXR1cm4gQnVmZmVyLmZyb20oZnQpfXZhciBqZT13Lktl''@;'; put 'put ''eSxVZT0wO3ZlKHVlKGplLCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpO3ZhciBYZT0wO3JldHVybiBmdW5jdGlvbihpdCl7aWYoWGUraXQubGVuZ3RoPDEwMjQpcmV0dXJuIFhlKz1pdC5sZW5ndGgsTWUoaXQpO3ZhciB1dD0wLHd0PXVlKGl0LnNsaWNlKHV0LHV0KyhNdD0xMDI0LVhlKSkp''@;'; put 'put ''O3V0Kz1NdCxYZT0wO3ZhciBIdD1NZSh3dCk7Zm9yKHV0PT1pdC5sZW5ndGgmJigrK1VlLGplPWZ2KFAsdy5TYWx0LGN2KFVlKSksdmUodWUoamUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpO3V0PGl0Lmxlbmd0aDspeysrVWUsamU9ZnYoUCx3LlNhbHQsY3YoVWUpKSx2ZShCdWZmZXIu''@;'; put 'put ''ZnJvbShqZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKTt2YXIgTXQ9TWF0aC5taW4oMTAyNCxpdC5sZW5ndGgtdXQpO3d0PXVlKGl0LnNsaWNlKHV0LHV0K010KSksdXQrPU10LFhlPU10LEh0PUJ1ZmZlci5jb25jYXQoW0h0LE1lKHd0KV0pfXJldHVybiBIdH19KG9lLkRhdGEsRC5wYXNz''@;'; put 'put ''d29yZCl9fWVsc2UgaWYob2UuRGF0YT1mdW5jdGlvbiBIUSh3LFApe3ZhciBEPXt9LGVlPUQuRW5jcnlwdGlvblZlcnNpb25JbmZvPWwxKHcsNCk7aWYoUC09NCwyIT1lZS5NaW5vcil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtaW5vciB2ZXJzaW9uIGNvZGU6ICIrZWUuTWlub3Ip''@;'; put 'put ''O2lmKGVlLk1ham9yPjR8fGVlLk1ham9yPDIpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAiK2VlLk1ham9yKTtELkZsYWdzPXcucmVhZF9zaGlmdCg0KSxQLT00O3ZhciBvZT13LnJlYWRfc2hpZnQoNCk7cmV0dXJuIFAtPTQsRC5FbmNyeXB0aW9u''@;'; put 'put ''SGVhZGVyPWhfKHcsb2UpLEQuRW5jcnlwdGlvblZlcmlmaWVyPWY4KHcsUC09b2UpLER9KHcsUCksb2UuRGF0YSYmb2UuRGF0YS5FbmNyeXB0aW9uSGVhZGVyJiYyNjYyNT09PW9lLkRhdGEuRW5jcnlwdGlvbkhlYWRlci5BbGdJRCYmRC5wYXNzd29yZCYmdHlwZW9mIHdyPCJ1Iil7dmFyIE1l''@;'; put 'put ''PXdyKEQucGFzc3dvcmQsb2UuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIuU2FsdC50b1N0cmluZygiaGV4IiksIjAwMDAwMDAwIiksamU9b2UuRGF0YS5FbmNyeXB0aW9uSGVhZGVyLktleVNpemU+Pj4zOzU9PWplfHxqZTxNZS5sZW5ndGgmJihNZT1NZS5zbGljZSgwLGplKSk7dmFyIFVlPXVl''@;'; put 'put ''KG9lLkRhdGEuRW5jcnlwdGlvblZlcmlmaWVyLlZlcmlmaWVyLnRvU3RyaW5nKCJoZXgiKStvZS5EYXRhLkVuY3J5cHRpb25WZXJpZmllci5WZXJpZmllckhhc2gudG9TdHJpbmcoImhleCIpLCJoZXgiKSxYZT1VZi5yYzQoTWUudG9TdHJpbmcoImJpbmFyeSIpLFVlKTtlZS52YWxpZD10cyhY''@;'; put 'put ''ZS5zbGljZSgwLGplKSwiU0hBMSIpLnRvU3RyaW5nKCJoZXgiKT09WGUuc2xpY2UoamUpLnRvU3RyaW5nKCJoZXgiKSxvZS5EYXRhLktleT1NZSxlZS52YWxpZCYmKGVlLmluc2l0dT1mdW5jdGlvbiAkdSh3LFApe3ZhciBEPW5ldyBBcnJheSgyNTYpLGVlPTAsb2U9MCxnZT0wLF9lPTAsdmU9''@;'; put 'put ''dy5FbmNyeXB0aW9uSGVhZGVyLktleVNpemU+Pj4zO2Z1bmN0aW9uIE1lKGZ0KXtmb3IoZnQ9QnVmZmVyLmZyb20oZnQuc2xpY2UoMCx2ZSkpLGVlPTAsb2U9MCxnZT0wLF9lPTAsb2U9MDsyNTYhPW9lOysrb2UpRFtvZV09b2U7Zm9yKGdlPTAsb2U9MDsyNTYhPW9lOysrb2Upe3ZhciBNdD1m''@;'; put 'put ''dFtvZSVmdC5sZW5ndGhdO2dlPWdlK0Rbb2VdKygic3RyaW5nIj09dHlwZW9mIE10P010LmNoYXJDb2RlQXQoMCk6TXQpJjI1NSxfZT1EW29lXSxEW29lXT1EW2dlXSxEW2dlXT1fZX1vZT1nZT0wfWZ1bmN0aW9uIGplKGZ0KXt2YXIgTXQ9WShmdC5sZW5ndGgpO2ZvcihlZT0wO2VlIT1mdC5s''@;'; put 'put ''ZW5ndGg7KytlZSlfZT1EW29lPW9lKzEmMjU1XSxEW29lXT1EW2dlPShnZStEW29lXSklMjU2XSxEW2dlXT1fZSxNdFtlZV09ZnRbZWVdXkRbRFtvZV0rRFtnZV0mMjU1XTtyZXR1cm4gQnVmZmVyLmZyb20oTXQpfXZhciBVZT13LktleSxYZT0wO01lKHVlKFVlLCJoZXgiKS50b1N0cmluZygi''@;'; put 'put ''YmluYXJ5IikpO3ZhciBpdD0wO3JldHVybiBmdW5jdGlvbihmdCl7aWYoaXQrZnQubGVuZ3RoPDEwMjQpcmV0dXJuIGl0Kz1mdC5sZW5ndGgsamUoZnQpO3ZhciB1dD0xMDI0LWl0LHd0PTAsSHQ9QnVmZmVyLmZyb20oZnQuc2xpY2Uod3Qsd3QrdXQpKTt3dCs9dXQsaXQ9MDt2YXIga3Q9amUo''@;'; put 'put ''SHQpO2Zvcih3dD09ZnQubGVuZ3RoJiYoKytYZSxVZT13cihQLHcuRW5jcnlwdGlvblZlcmlmaWVyLlNhbHQsY3YoWGUpKSxNZShCdWZmZXIuZnJvbShVZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKSk7d3Q8ZnQubGVuZ3RoOykrK1hlLFVlPXdyKFAsdy5FbmNyeXB0aW9uVmVyaWZpZXIu''@;'; put 'put ''U2FsdCxjdihYZSkpLE1lKEJ1ZmZlci5mcm9tKFVlLCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpLHV0PU1hdGgubWluKDEwMjQsZnQubGVuZ3RoLXd0KSxIdD1CdWZmZXIuZnJvbShmdC5zbGljZSh3dCx3dCt1dCkpLHd0Kz11dCx1dDwxMDI0JiYoaXQ9dXQpLGt0PUJ1ZmZlci5jb25jYXQo''@;'; put 'put ''W2t0LGplKEh0KV0pO3JldHVybiBrdH19KG9lLkRhdGEsRC5wYXNzd29yZCkpfXJldHVybiBvZX0odyxQLTIsRCxlZSk6ZnVuY3Rpb24gaUgodyxQLEQsZWUpe3ZhciBvZT17a2V5OnlzKHcpLHZlcmlmaWNhdGlvbkJ5dGVzOnlzKHcpfTtELnBhc3N3b3JkJiYob2UudmVyaWZpZXI9VngoRC5w''@;'; put 'put ''YXNzd29yZCkpLGVlLnZhbGlkPW9lLnZlcmlmaWNhdGlvbkJ5dGVzPT09b2UudmVyaWZpZXIsZWUudmFsaWQmJihlZS5pbnNpdHU9ZnVuY3Rpb24odyxQKXt2YXIgRD1QfHwwLGVlPXJIKHcpO3JldHVybiBmdW5jdGlvbihvZSl7dmFyIGdlPWZ1bmN0aW9uKHcsUCxELGVlLG9lKXt2YXIgZ2Us''@;'; put 'put ''X2U7Zm9yKG9lfHwob2U9UCksZWV8fChlZT1ySCgiIikpLGdlPTA7Z2UhPVAubGVuZ3RoOysrZ2UpX2U9MjU1JigoX2U9UFtnZV0pPj41fF9lPDwzKSxvZVtnZV09X2VePWVlW0RdLEQ9RCsxJjE1O3JldHVybltvZSxELGVlXX0oMCxvZSxELGVlKTtyZXR1cm4gRD1nZVsxXSxnZVswXX19KEQu''@;'; put 'put ''cGFzc3dvcmQsMCkpfSh3LDAsRCxlZSksZWV9fSw0OTp7bjoiRm9udCIsZjpmdW5jdGlvbiBoeCh3LFAsRCl7dmFyIGVlPXtzejp3LnJlYWRfc2hpZnQoMikvMjB9LG9lPWNtKHcpO29lLmZCb2xkJiYoZWUuYm9sZD0xKSxvZS5mSXRhbGljJiYoZWUuaXRhbGljPTEpLG9lLmZVbmRlcmxpbmUm''@;'; put 'put ''JihlZS51bmRlcmxpbmU9MSksb2UuZkNvbmRlbnNlJiYoZWUuY29uZGVuc2U9MSksb2UuZkV4dGVuZCYmKGVlLmV4dGVuZD0xKSxvZS5mU2hhZG93JiYoZWUuc2hhZG93PTEpLG9lLmZPdXRsaW5lJiYoZWUub3V0bGluZT0xKSxvZS5mU3RyaWtlb3V0JiYoZWUuc3RyaWtlPTEpO3ZhciBnZT1E''@;'; put 'put ''JiZELmJpZmZ8fDg7aWYoMiE9Z2UmJihlZS5pY3Y9dy5yZWFkX3NoaWZ0KDIpLDMhPWdlJiY0IT1nZSkpe3N3aXRjaCg3MDA9PT13LnJlYWRfc2hpZnQoMikmJihlZS5ib2xkPTEpLHcucmVhZF9zaGlmdCgyKSl7Y2FzZSAxOmVlLnZhbGlnbj0ic3VwZXIiO2JyZWFrO2Nhc2UgMjplZS52YWxp''@;'; put 'put ''Z249InN1YiJ9dmFyIHZlPXcucmVhZF9zaGlmdCgxKTswIT12ZSYmKGVlLnVuZGVybGluZT12ZSk7dmFyIE1lPXcucmVhZF9zaGlmdCgxKTtNZT4wJiYoZWUuZmFtaWx5PU1lKTt2YXIgamU9dy5yZWFkX3NoaWZ0KDEpO2plPjAmJihlZS5jaGFyc2V0PWplKSx3LmwrPTF9cmV0dXJuIGVlLm5h''@;'; put 'put ''bWU9ZWQodywwLEQpLGVlfX0sNTE6e246IlByaW50U2l6ZSIsZjp5c30sNjA6e246IkNvbnRpbnVlIn0sNjE6e246IldpbmRvdzEiLGY6ZnVuY3Rpb24gQm8odyl7cmV0dXJue1Bvczpbdy5yZWFkX3NoaWZ0KDIpLHcucmVhZF9zaGlmdCgyKV0sRGltOlt3LnJlYWRfc2hpZnQoMiksdy5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpXSxGbGFnczp3LnJlYWRfc2hpZnQoMiksQ3VyVGFiOncucmVhZF9zaGlmdCgyKSxGaXJzdFRhYjp3LnJlYWRfc2hpZnQoMiksU2VsZWN0ZWQ6dy5yZWFkX3NoaWZ0KDIpLFRhYlJhdGlvOncucmVhZF9zaGlmdCgyKX19fSw2NDp7bjoiQmFja3VwIixmOnhvfSw2NTp7bjoiUGFu''@;'; put 'put ''ZSIsZjpmdW5jdGlvbiBERih3LFAsRCl7aWYoRCYmRC5iaWZmPDUpcmV0dXJue307dmFyIGVlPXt9O3JldHVybiBlZS54PXcucmVhZF9zaGlmdCgyKSxlZS55PXcucmVhZF9zaGlmdCgyKSxlZS5yd1RvcD13LnJlYWRfc2hpZnQoMiksZWUuY29sTGVmdD13LnJlYWRfc2hpZnQoMiksZWUucG5u''@;'; put 'put ''QWNjdD13LnJlYWRfc2hpZnQoMSksdy5yZWFkX3NoaWZ0KDEpLGVlfX0sNjY6e246IkNvZGVQYWdlIixmOnlzfSw3Nzp7bjoiUGxzIixmOnh1fSw4MDp7bjoiRENvbiJ9LDgxOntuOiJEQ29uUmVmIn0sODI6e246IkRDb25OYW1lIn0sODU6e246IkRlZkNvbFdpZHRoIixmOnlzfSw4OTp7bjoi''@;'; put 'put ''WENUIn0sOTA6e246IkNSTiJ9LDkxOntuOiJGaWxlU2hhcmluZyJ9LDkyOntuOiJXcml0ZUFjY2VzcyIsZjpmdW5jdGlvbiBKNih3LFAsRCl7aWYoRC5lbmMpcmV0dXJuIHcubCs9UCwiIjt2YXIgZWU9dy5sLG9lPWxoKHcsMCxEKTtyZXR1cm4gdy5yZWFkX3NoaWZ0KFArZWUtdy5sKSxvZX19''@;'; put 'put ''LDkzOntuOiJPYmoiLGY6ZnVuY3Rpb24gTXgodyxQLEQpe2lmKEQmJkQuYmlmZjw4KXJldHVybiBmdW5jdGlvbiBqRih3LFAsRCl7dy5sKz00O3ZhciBlZT13LnJlYWRfc2hpZnQoMiksb2U9dy5yZWFkX3NoaWZ0KDIpLGdlPXcucmVhZF9zaGlmdCgyKTt3LmwrPTIsdy5sKz0yLHcubCs9Mix3''@;'; put 'put ''LmwrPTIsdy5sKz0yLHcubCs9Mix3LmwrPTIsdy5sKz0yLHcubCs9Mix3LmwrPTY7dmFyIF9lPVtdO3JldHVybiBfZS5wdXNoKChuOFtlZV18fHh1KSh3LFAtPTM2LEQpKSx7Y21vOltvZSxlZSxnZV0sZnQ6X2V9fSh3LFAsRCk7dmFyIGVlPUVtKHcpLG9lPWZ1bmN0aW9uIHIxKHcsUCxEKXtm''@;'; put 'put ''b3IodmFyIGVlPXcubCtQLG9lPVtdO3cubDxlZTspe3ZhciBnZT13LnJlYWRfc2hpZnQoMik7dy5sLT0yO3RyeXtvZVtnZV09WDZbZ2VdKHcsZWUtdy5sKX1jYXRjaHtyZXR1cm4gdy5sPWVlLG9lfX1yZXR1cm4gdy5sIT1lZSYmKHcubD1lZSksb2V9KHcsUC0yMik7cmV0dXJue2NtbzplZSxm''@;'; put 'put ''dDpvZX19fSw5NDp7bjoiVW5jYWxjZWQifSw5NTp7bjoiQ2FsY1NhdmVSZWNhbGMiLGY6eG99LDk2OntuOiJUZW1wbGF0ZSJ9LDk3OntuOiJJbnRsIn0sOTk6e246Ik9ialByb3RlY3QiLGY6eG99LDEyNTp7bjoiQ29sSW5mbyIsZjpyZH0sMTI4OntuOiJHdXRzIixmOmZ1bmN0aW9uIFRRKHcp''@;'; put 'put ''e3cubCs9NDt2YXIgUD1bdy5yZWFkX3NoaWZ0KDIpLHcucmVhZF9zaGlmdCgyKV07aWYoMCE9PVBbMF0mJlBbMF0tLSwwIT09UFsxXSYmUFsxXS0tLFBbMF0+N3x8UFsxXT43KXRocm93IG5ldyBFcnJvcigiQmFkIEd1dHRlcnM6ICIrUC5qb2luKCJ8IikpO3JldHVybiBQfX0sMTI5OntuOiJX''@;'; put 'put ''c0Jvb2wiLGY6ZnVuY3Rpb24gX2wodyxQLEQpe3ZhciBlZT1EJiY4PT1ELmJpZmZ8fDI9PVA/dy5yZWFkX3NoaWZ0KDIpOih3LmwrPVAsMCk7cmV0dXJue2ZEaWFsb2c6MTYmZWUsZkJlbG93OjY0JmVlLGZSaWdodDoxMjgmZWV9fX0sMTMwOntuOiJHcmlkU2V0IixmOnlzfSwxMzE6e246IkhD''@;'; put 'put ''ZW50ZXIiLGY6eG99LDEzMjp7bjoiVkNlbnRlciIsZjp4b30sMTMzOntuOiJCb3VuZFNoZWV0OCIsZjpmdW5jdGlvbiBBbSh3LFAsRCl7dmFyIGVlPXcucmVhZF9zaGlmdCg0KSxvZT0zJncucmVhZF9zaGlmdCgxKSxnZT13LnJlYWRfc2hpZnQoMSk7c3dpdGNoKGdlKXtjYXNlIDA6Z2U9Ildv''@;'; put 'put ''cmtzaGVldCI7YnJlYWs7Y2FzZSAxOmdlPSJNYWNyb3NoZWV0IjticmVhaztjYXNlIDI6Z2U9IkNoYXJ0c2hlZXQiO2JyZWFrO2Nhc2UgNjpnZT0iVkJBTW9kdWxlIn12YXIgX2U9ZWQodywwLEQpO3JldHVybiAwPT09X2UubGVuZ3RoJiYoX2U9IlNoZWV0MSIpLHtwb3M6ZWUsaHM6b2UsZHQ6''@;'; put 'put ''Z2UsbmFtZTpfZX19fSwxMzQ6e246IldyaXRlUHJvdGVjdCJ9LDE0MDp7bjoiQ291bnRyeSIsZjpmdW5jdGlvbiBaRih3KXt2YXIgRCxQPVswLDBdO3JldHVybiBEPXcucmVhZF9zaGlmdCgyKSxQWzBdPUI2W0RdfHxELEQ9dy5yZWFkX3NoaWZ0KDIpLFBbMV09QjZbRF18fEQsUH19LDE0MTp7''@;'; put 'put ''bjoiSGlkZU9iaiIsZjp5c30sMTQ0OntuOiJTb3J0In0sMTQ2OntuOiJQYWxldHRlIixmOmZ1bmN0aW9uIGt4KHcpe2Zvcih2YXIgUD13LnJlYWRfc2hpZnQoMiksRD1bXTtQLS0gPjA7KUQucHVzaCgkYih3KSk7cmV0dXJuIER9fSwxNTE6e246IlN5bmMifSwxNTI6e246IkxQciJ9LDE1Mzp7''@;'; put 'put ''bjoiRHhHQ29sIn0sMTU0OntuOiJGbkdyb3VwTmFtZSJ9LDE1NTp7bjoiRmlsdGVyTW9kZSJ9LDE1Njp7bjoiQnVpbHRJbkZuR3JvdXBDb3VudCIsZjp5c30sMTU3OntuOiJBdXRvRmlsdGVySW5mbyJ9LDE1ODp7bjoiQXV0b0ZpbHRlciJ9LDE2MDp7bjoiU2NsIixmOkF4fSwxNjE6e246IlNl''@;'; put 'put ''dHVwIixmOmZ1bmN0aW9uIGk4KHcsUCl7dmFyIEQ9e307cmV0dXJuIFA8MzJ8fCh3LmwrPTE2LEQuaGVhZGVyPXlsKHcpLEQuZm9vdGVyPXlsKHcpLHcubCs9MiksRH19LDE3NDp7bjoiU2Nlbk1hbiJ9LDE3NTp7bjoiU0NFTkFSSU8ifSwxNzY6e246IlN4VmlldyJ9LDE3Nzp7bjoiU3h2ZCJ9''@;'; put 'put ''LDE3ODp7bjoiU1hWSSJ9LDE4MDp7bjoiU3hJdmQifSwxODE6e246IlNYTEkifSwxODI6e246IlNYUEkifSwxODQ6e246IkRvY1JvdXRlIn0sMTg1OntuOiJSZWNpcE5hbWUifSwxODk6e246Ik11bFJrIixmOmZ1bmN0aW9uIHB4KHcsUCl7Zm9yKHZhciBEPXcubCtQLTIsZWU9dy5yZWFkX3No''@;'; put 'put ''aWZ0KDIpLG9lPXcucmVhZF9zaGlmdCgyKSxnZT1bXTt3Lmw8RDspZ2UucHVzaChYYih3KSk7aWYody5sIT09RCl0aHJvdyBuZXcgRXJyb3IoIk11bFJLIHJlYWQgZXJyb3IiKTt2YXIgX2U9dy5yZWFkX3NoaWZ0KDIpO2lmKGdlLmxlbmd0aCE9X2Utb2UrMSl0aHJvdyBuZXcgRXJyb3IoIk11''@;'; put 'put ''bFJLIGxlbmd0aCBtaXNtYXRjaCIpO3JldHVybntyOmVlLGM6b2UsQzpfZSxya3JlYzpnZX19fSwxOTA6e246Ik11bEJsYW5rIixmOmZ1bmN0aW9uIFRtKHcsUCl7Zm9yKHZhciBEPXcubCtQLTIsZWU9dy5yZWFkX3NoaWZ0KDIpLG9lPXcucmVhZF9zaGlmdCgyKSxnZT1bXTt3Lmw8RDspZ2Uu''@;'; put 'put ''cHVzaCh3LnJlYWRfc2hpZnQoMikpO2lmKHcubCE9PUQpdGhyb3cgbmV3IEVycm9yKCJNdWxCbGFuayByZWFkIGVycm9yIik7dmFyIF9lPXcucmVhZF9zaGlmdCgyKTtpZihnZS5sZW5ndGghPV9lLW9lKzEpdGhyb3cgbmV3IEVycm9yKCJNdWxCbGFuayBsZW5ndGggbWlzbWF0Y2giKTtyZXR1''@;'; put 'put ''cm57cjplZSxjOm9lLEM6X2UsaXhmZTpnZX19fSwxOTM6e246Ik1tcyIsZjpRZn0sMTk3OntuOiJTWERJIn0sMTk4OntuOiJTWERCIn0sMTk5OntuOiJTWEZEQiJ9LDIwMDp7bjoiU1hEQkIifSwyMDE6e246IlNYTnVtIn0sMjAyOntuOiJTeEJvb2wiLGY6eG99LDIwMzp7bjoiU3hFcnIifSwy''@;'; put 'put ''MDQ6e246IlNYSW50In0sMjA1OntuOiJTWFN0cmluZyJ9LDIwNjp7bjoiU1hEdHIifSwyMDc6e246IlN4TmlsIn0sMjA4OntuOiJTWFRibCJ9LDIwOTp7bjoiU1hUQlJHSUlUTSJ9LDIxMDp7bjoiU3hUYnBnIn0sMjExOntuOiJPYlByb2oifSwyMTM6e246IlNYU3RyZWFtSUQifSwyMTU6e246''@;'; put 'put ''IkRCQ2VsbCJ9LDIxNjp7bjoiU1hSbmcifSwyMTc6e246IlN4SXN4b3BlciJ9LDIxODp7bjoiQm9va0Jvb2wiLGY6eXN9LDIyMDp7bjoiRGJPclBhcmFtUXJ5In0sMjIxOntuOiJTY2VuYXJpb1Byb3RlY3QiLGY6eG99LDIyMjp7bjoiT2xlT2JqZWN0U2l6ZSJ9LDIyNDp7bjoiWEYiLGY6ZnVu''@;'; put 'put ''Y3Rpb24gdF8odyxQLEQpe3ZhciBlZT17fTtyZXR1cm4gZWUuaWZudD13LnJlYWRfc2hpZnQoMiksZWUubnVtRm10SWQ9dy5yZWFkX3NoaWZ0KDIpLGVlLmZsYWdzPXcucmVhZF9zaGlmdCgyKSxlZS5mU3R5bGU9ZWUuZmxhZ3M+PjImMSxlZS5kYXRhPWZ1bmN0aW9uIGxmKHcsUCxELGVlKXt2''@;'; put 'put ''YXIgb2U9e30sZ2U9dy5yZWFkX3NoaWZ0KDQpLF9lPXcucmVhZF9zaGlmdCg0KSx2ZT13LnJlYWRfc2hpZnQoNCksTWU9dy5yZWFkX3NoaWZ0KDIpO2lmKG9lLnBhdHRlcm5UeXBlPURpW3ZlPj4yNl0sIWVlLmNlbGxTdHlsZXMpcmV0dXJuIG9lO3ZhciBqZT03JmdlO3N3aXRjaChqZSl7Y2Fz''@;'; put 'put ''ZSAxOm9lLmhhbGlnbj0ibGVmdCI7YnJlYWs7Y2FzZSAyOm9lLmhhbGlnbj0iY2VudGVyIjticmVhaztjYXNlIDM6b2UuaGFsaWduPSJyaWdodCJ9c3dpdGNoKG9lLmZXcmFwPWdlPj4zJjEsamU9Z2U+PjQmNyl7Y2FzZSAwOm9lLnZhbGlnbj0idG9wIjticmVhaztjYXNlIDE6b2UudmFsaWdu''@;'; put 'put ''PSJjZW50ZXIiO2JyZWFrO2Nhc2UgMjpvZS52YWxpZ249ImJvdHRvbSJ9cmV0dXJuIG9lLmZKdXN0TGFzdD1nZT4+NyYxLG9lLnRyb3Q9Z2U+PjgmMjU1LG9lLmNJbmRlbnQ9Z2U+PjE2JjE1LG9lLmZTaHJpbmtUb0ZpdD1nZT4+MjAmMSxvZS5pUmVhZE9yZGVyPWdlPj4yMiYyLG9lLmZBdHJO''@;'; put 'put ''dW09Z2U+PjI2JjEsb2UuZkF0ckZudD1nZT4+MjcmMSxvZS5mQXRyQWxjPWdlPj4yOCYxLG9lLmZBdHJCZHI9Z2U+PjI5JjEsb2UuZkF0clBhdD1nZT4+MzAmMSxvZS5mQXRyUHJvdD1nZT4+MzEmMSxvZS5kZ0xlZnQ9MTUmX2Usb2UuZGdSaWdodD1fZT4+NCYxNSxvZS5kZ1RvcD1fZT4+OCYx''@;'; put 'put ''NSxvZS5kZ0JvdHRvbT1fZT4+MTImMTUsb2UuaWN2TGVmdD1fZT4+MTYmMTI3LG9lLmljdlJpZ2h0PV9lPj4yMyYxMjcsb2UuZ3JiaXREaWFnPV9lPj4zMCYzLG9lLmljdlRvcD0xMjcmdmUsb2UuaWN2Qm90dG9tPXZlPj43JjEyNyxvZS5pY3ZEaWFnPXZlPj4xNCYxMjcsb2UuZGdEaWFnPXZl''@;'; put 'put ''Pj4yMSYxNSxvZS5pY3ZGb3JlPTEyNyZNZSxvZS5pY3ZCYWNrPU1lPj43JjEyNyxvZS5mc3hCdXR0b249TWU+PjE0JjEsb2V9KHcsMCwwLEQpLGVlfX0sMjI1OntuOiJJbnRlcmZhY2VIZHIiLGY6ZnVuY3Rpb24gUzAodyxQKXtyZXR1cm4gMD09PVB8fHcucmVhZF9zaGlmdCgyKSwxMjAwfX0s''@;'; put 'put ''MjI2OntuOiJJbnRlcmZhY2VFbmQiLGY6UWZ9LDIyNzp7bjoiU1hWUyJ9LDIyOTp7bjoiTWVyZ2VDZWxscyIsZjpmdW5jdGlvbiBDeCh3LFApe2Zvcih2YXIgRD1bXSxlZT13LnJlYWRfc2hpZnQoMik7ZWUtLTspRC5wdXNoKGIyKHcpKTtyZXR1cm4gRH19LDIzMzp7bjoiQmtIaW0ifSwyMzU6''@;'; put 'put ''e246Ik1zb0RyYXdpbmdHcm91cCJ9LDIzNjp7bjoiTXNvRHJhd2luZyJ9LDIzNzp7bjoiTXNvRHJhd2luZ1NlbGVjdGlvbiJ9LDIzOTp7bjoiUGhvbmV0aWNJbmZvIn0sMjQwOntuOiJTeFJ1bGUifSwyNDE6e246IlNYRXgifSwyNDI6e246IlN4RmlsdCJ9LDI0NDp7bjoiU3hEWEYifSwyNDU6''@;'; put 'put ''e246IlN4SXRtIn0sMjQ2OntuOiJTeE5hbWUifSwyNDc6e246IlN4U2VsZWN0In0sMjQ4OntuOiJTWFBhaXIifSwyNDk6e246IlN4Rm1sYSJ9LDI1MTp7bjoiU3hGb3JtYXQifSwyNTI6e246IlNTVCIsZjpmdW5jdGlvbiBXcyh3LFApe2Zvcih2YXIgRD13LmwrUCxlZT13LnJlYWRfc2hpZnQo''@;'; put 'put ''NCksb2U9dy5yZWFkX3NoaWZ0KDQpLGdlPVtdLF9lPTA7X2UhPW9lJiZ3Lmw8RDsrK19lKWdlLnB1c2goRzYodykpO3JldHVybiBnZS5Db3VudD1lZSxnZS5VbmlxdWU9b2UsZ2V9fSwyNTM6e246IkxhYmVsU3N0IixmOmZ1bmN0aW9uIFJGKHcpe3ZhciBQPWpjKHcpO3JldHVybiBQLmlzc3Q9''@;'; put 'put ''dy5yZWFkX3NoaWZ0KDQpLFB9fSwyNTU6e246IkV4dFNTVCIsZjpmdW5jdGlvbiBBZSh3LFApe3ZhciBEPXt9O3JldHVybiBELmRzc3Q9dy5yZWFkX3NoaWZ0KDIpLHcubCs9UC0yLER9fSwyNTY6e246IlNYVkRFeCJ9LDI1OTp7bjoiU1hGb3JtdWxhIn0sMjkwOntuOiJTWERCRXgifSwzMTE6''@;'; put 'put ''e246IlJSREluc0RlbCJ9LDMxMjp7bjoiUlJESGVhZCJ9LDMxNTp7bjoiUlJEQ2hnQ2VsbCJ9LDMxNzp7bjoiUlJUYWJJZCIsZjphZn0sMzE4OntuOiJSUkRSZW5TaGVldCJ9LDMxOTp7bjoiUlJTb3J0In0sMzIwOntuOiJSUkRNb3ZlIn0sMzMwOntuOiJSUkZvcm1hdCJ9LDMzMTp7bjoiUlJB''@;'; put 'put ''dXRvRm10In0sMzMzOntuOiJSUkluc2VydFNoIn0sMzM0OntuOiJSUkRNb3ZlQmVnaW4ifSwzMzU6e246IlJSRE1vdmVFbmQifSwzMzY6e246IlJSREluc0RlbEJlZ2luIn0sMzM3OntuOiJSUkRJbnNEZWxFbmQifSwzMzg6e246IlJSRENvbmZsaWN0In0sMzM5OntuOiJSUkREZWZOYW1lIn0s''@;'; put 'put ''MzQwOntuOiJSUkRSc3RFdHhwIn0sMzUxOntuOiJMUm5nIn0sMzUyOntuOiJVc2VzRUxGcyIsZjp4b30sMzUzOntuOiJEU0YiLGY6UWZ9LDQwMTp7bjoiQ1VzciJ9LDQwMjp7bjoiQ2JVc3IifSw0MDM6e246IlVzckluZm8ifSw0MDQ6e246IlVzckV4Y2wifSw0MDU6e246IkZpbGVMb2NrIn0s''@;'; put 'put ''NDA2OntuOiJSUkRJbmZvIn0sNDA3OntuOiJCQ1VzcnMifSw0MDg6e246IlVzckNoayJ9LDQyNTp7bjoiVXNlckJWaWV3In0sNDI2OntuOiJVc2VyU1ZpZXdCZWdpbiJ9LDQyNzp7bjoiVXNlclNWaWV3RW5kIn0sNDI4OntuOiJSUkRVc2VyVmlldyJ9LDQyOTp7bjoiUXNpIn0sNDMwOntuOiJT''@;'; put 'put ''dXBCb29rIixmOmZ1bmN0aW9uIFZGKHcsUCxEKXt2YXIgZWU9dy5sK1Asb2U9dy5yZWFkX3NoaWZ0KDIpLGdlPXcucmVhZF9zaGlmdCgyKTtpZihELnNiY2NoPWdlLDEwMjU9PWdlfHwxNDg0OT09Z2UpcmV0dXJuW2dlLG9lXTtpZihnZTwxfHxnZT4yNTUpdGhyb3cgbmV3IEVycm9yKCJVbmV4''@;'; put 'put ''cGVjdGVkIFN1cEJvb2sgdHlwZTogIitnZSk7Zm9yKHZhciBfZT10ZCh3LGdlKSx2ZT1bXTtlZT53Lmw7KXZlLnB1c2goYWgodykpO3JldHVybltnZSxvZSxfZSx2ZV19fSw0MzE6e246IlByb3Q0UmV2IixmOnhvfSw0MzI6e246IkNvbmRGbXQifSw0MzM6e246IkNGIn0sNDM0OntuOiJEVmFs''@;'; put 'put ''In0sNDM3OntuOiJEQ29uQmluIn0sNDM4OntuOiJUeE8iLGY6ZnVuY3Rpb24gekYodyxQLEQpe3ZhciBlZT13Lmwsb2U9IiIsZ2U9LTE7dHJ5e3cubCs9NCwtMT09WzAsNSw3LDExLDEyLDE0XS5pbmRleE9mKChELmxhc3RvYmp8fHtjbW86WzAsMF19KS5jbW9bMV0pP3cubCs9NjpmdW5jdGlv''@;'; put 'put ''biBWYyh3KXt2YXIgUD13LnJlYWRfc2hpZnQoMSk7dy5sKys7dmFyIEQ9dy5yZWFkX3NoaWZ0KDIpO3cubCs9Mn0odyk7dmFyIE1lPXcucmVhZF9zaGlmdCgyKTt3LnJlYWRfc2hpZnQoMiksZ2U9dy5yZWFkX3NoaWZ0KDIpO3ZhciBVZT13LnJlYWRfc2hpZnQoMik7dy5sKz1VZTtmb3IodmFy''@;'; put 'put ''IFhlPTE7WGU8dy5sZW5zLmxlbmd0aC0xOysrWGUpe2lmKHcubC1lZSE9dy5sZW5zW1hlXSl0aHJvdyBuZXcgRXJyb3IoIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZCIpO3ZhciBpdD13W3cubF07aWYoKG9lKz10ZCh3LHcubGVuc1tYZSsxXS13LmxlbnNbWGVdLTEpKS5sZW5ndGg+PShpdD9N''@;'; put 'put ''ZToyKk1lKSlicmVha31pZihvZS5sZW5ndGghPT1NZSYmb2UubGVuZ3RoIT09MipNZSl0aHJvdyBuZXcgRXJyb3IoImNjaFRleHQ6ICIrTWUrIiAhPSAiK29lLmxlbmd0aCk7cmV0dXJuIHcubD1lZStQLHt0Om9lLGlmbnQ6Z2V9fWNhdGNoe3JldHVybiB3Lmw9ZWUrUCx7dDpvZSxpZm50Omdl''@;'; put 'put ''fX19fSw0Mzk6e246IlJlZnJlc2hBbGwiLGY6eG99LDQ0MDp7bjoiSExpbmsiLGY6ZnVuY3Rpb24gbGModyxQKXt2YXIgRD1iMih3KTt3LmwrPTE2O3ZhciBlZT1mdW5jdGlvbiBCYyh3LFApe3ZhciBEPXcubCtQLGVlPXcucmVhZF9zaGlmdCg0KTtpZigyIT09ZWUpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbnJlY29nbml6ZWQgc3RyZWFtVmVyc2lvbjogIitlZSk7dmFyIG9lPXcucmVhZF9zaGlmdCgyKTt3LmwrPTI7dmFyIGdlLF9lLHZlLE1lLFVlLFhlLGplPSIiOzE2Jm9lJiYoZ2U9a20odykpLDEyOCZvZSYmKF9lPWttKHcpKSwyNTc9PSgyNTcmb2UpJiYodmU9a20odykpLDE9PSgyNTcm''@;'; put 'put ''b2UpJiYoTWU9ZnVuY3Rpb24gdXAodyxQKXt2YXIgRD13LnJlYWRfc2hpZnQoMTYpO3N3aXRjaChEKXtjYXNlImUwYzllYTc5ZjliYWNlMTE4YzgyMDBhYTAwNGJhOTBiIjpyZXR1cm4gZnVuY3Rpb24gc3Aodyl7dmFyIFA9dy5yZWFkX3NoaWZ0KDQpLEQ9dy5sLGVlPSExO1A+MjQmJih3Lmwr''@;'; put 'put ''PVAtMjQsIjc5NTg4MWY0M2IxZDdmNDhhZjJjODI1ZGM0ODUyNzYzIj09PXcucmVhZF9zaGlmdCgxNikmJihlZT0hMCksdy5sPUQpO3ZhciBvZT13LnJlYWRfc2hpZnQoKGVlP1AtMjQ6UCk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKHksIiIpO3JldHVybiBlZSYmKHcubCs9MjQpLG9lfSh3KTtj''@;'; put 'put ''YXNlIjAzMDMwMDAwMDAwMDAwMDBjMDAwMDAwMDAwMDAwMDQ2IjpyZXR1cm4gZnVuY3Rpb24gYnModyl7Zm9yKHZhciBQPXcucmVhZF9zaGlmdCgyKSxEPSIiO1AtLSA+MDspRCs9Ii4uLyI7dmFyIGVlPXcucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIik7aWYody5sKz0yLDU3MDA1IT13LnJl''@;'; put 'put ''YWRfc2hpZnQoMikpdGhyb3cgbmV3IEVycm9yKCJCYWQgRmlsZU1vbmlrZXIiKTtpZigwPT09dy5yZWFkX3NoaWZ0KDQpKXJldHVybiBEK2VlLnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgZ2U9dy5yZWFkX3NoaWZ0KDQpO2lmKDMhPXcucmVhZF9zaGlmdCgyKSl0aHJvdyBuZXcgRXJyb3IoIkJh''@;'; put 'put ''ZCBGaWxlTW9uaWtlciIpO3JldHVybiBEK3cucmVhZF9zaGlmdChnZT4+MSwidXRmMTZsZSIpLnJlcGxhY2UoeSwiIil9KHcpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNb25pa2VyICIrRCl9fSh3KSksOCZvZSYmKGplPWttKHcpKSwzMiZvZSYmKFVlPXcucmVhZF9z''@;'; put 'put ''aGlmdCgxNikpLDY0Jm9lJiYoWGU9T3UodykpLHcubD1EO3ZhciBpdD1fZXx8dmV8fE1lfHwiIjtpdCYmamUmJihpdCs9IiMiK2plKSxpdHx8KGl0PSIjIitqZSksMiZvZSYmIi8iPT1pdC5jaGFyQXQoMCkmJiIvIiE9aXQuY2hhckF0KDEpJiYoaXQ9ImZpbGU6Ly8iK2l0KTt2YXIgZnQ9e1Rh''@;'; put 'put ''cmdldDppdH07cmV0dXJuIFVlJiYoZnQuZ3VpZD1VZSksWGUmJihmdC50aW1lPVhlKSxnZSYmKGZ0LlRvb2x0aXA9Z2UpLGZ0fSh3LFAtMjQpO3JldHVybltELGVlXX19LDQ0MTp7bjoiTGVsIn0sNDQyOntuOiJDb2RlTmFtZSIsZjphaH0sNDQzOntuOiJTWEZEQlR5cGUifSw0NDQ6e246IlBy''@;'; put 'put ''b3Q0UmV2UGFzcyIsZjp5c30sNDQ1OntuOiJPYk5vTWFjcm9zIn0sNDQ2OntuOiJEdiJ9LDQ0ODp7bjoiRXhjZWw5RmlsZSIsZjpRZn0sNDQ5OntuOiJSZWNhbGNJZCIsZjpmdW5jdGlvbiBNMCh3KXtyZXR1cm4gdy5yZWFkX3NoaWZ0KDIpLHcucmVhZF9zaGlmdCg0KX0scjoyfSw0NTA6e246''@;'; put 'put ''IkVudEV4VTIiLGY6UWZ9LDUxMjp7bjoiRGltZW5zaW9ucyIsZjpVdH0sNTEzOntuOiJCbGFuayIsZjp4eH0sNTE1OntuOiJOdW1iZXIiLGY6ZnVuY3Rpb24gZ3godyxQLEQpe0QuYmlmZmd1ZXNzJiYyPT1ELmJpZmYmJihELmJpZmY9NSk7dmFyIGVlPWpjKHcpLG9lPXlsKHcpO3JldHVybiBl''@;'; put 'put ''ZS52YWw9b2UsZWV9fSw1MTY6e246IkxhYmVsIixmOmZ1bmN0aW9uIFBGKHcsUCxEKXtELmJpZmZndWVzcyYmMj09RC5iaWZmJiYoRC5iaWZmPTUpO3ZhciBvZT1qYyh3KTsyPT1ELmJpZmYmJncubCsrO3ZhciBnZT1haCh3LDAsRCk7cmV0dXJuIG9lLnZhbD1nZSxvZX19LDUxNzp7bjoiQm9v''@;'; put 'put ''bEVyciIsZjpZdX0sNTE5OntuOiJTdHJpbmciLGY6JEZ9LDUyMDp7bjoiUm93IixmOmZ1bmN0aW9uIEplKHcpe3ZhciBQPXt9O1Aucj13LnJlYWRfc2hpZnQoMiksUC5jPXcucmVhZF9zaGlmdCgyKSxQLmNudD13LnJlYWRfc2hpZnQoMiktUC5jO3ZhciBEPXcucmVhZF9zaGlmdCgyKTt3Lmwr''@;'; put 'put ''PTQ7dmFyIGVlPXcucmVhZF9zaGlmdCgxKTt3LmwrPTE7dmFyIG9lPXcucmVhZF9zaGlmdCgyKTtyZXR1cm4gUC5peGZlPTQwOTUmb2UsNyZlZSYmKFAubGV2ZWw9NyZlZSksMzImZWUmJihQLmhpZGRlbj0hMCksNjQmZWUmJihQLmhwdD1ELzIwKSxQfX0sNTIzOntuOiJJbmRleCJ9LDU0NTp7''@;'; put 'put ''bjoiQXJyYXkiLGY6Ynh9LDU0OTp7bjoiRGVmYXVsdFJvd0hlaWdodCIsZjphMX0sNTY2OntuOiJUYWJsZSJ9LDU3NDp7bjoiV2luZG93MiIsZjpmdW5jdGlvbiBBUSh3LFAsRCl7aWYoRCYmRC5iaWZmPj0yJiZELmJpZmY8NSlyZXR1cm57fTt2YXIgZWU9dy5yZWFkX3NoaWZ0KDIpO3JldHVy''@;'; put 'put ''bntSVEw6NjQmZWUsZ3JpZDohISgyJmVlKSxmcm96ZW46ISEoOCZlZSl9fX0sNjM4OntuOiJSSyIsZjpmdW5jdGlvbiBEdSh3KXt2YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMiksZWU9WGIodyk7cmV0dXJue3I6UCxjOkQsaXhmZTplZVswXSxya251bTplZVsxXX19fSw2''@;'; put 'put ''NTk6e246IlN0eWxlIixmOmZ1bmN0aW9uIE5GKHcsUCxEKXtyZXR1cm4gdy5sKz1QLHt9fX0sMTA0ODp7bjoiQmlnTmFtZSJ9LDEwNTQ6e246IkZvcm1hdCIsZjpmdW5jdGlvbiBIRih3LFAsRCl7cmV0dXJuW3cucmVhZF9zaGlmdCgyKSxsaCh3LDAsRCldfX0sMTA4NDp7bjoiQ29udGludWVC''@;'; put 'put ''aWdOYW1lIn0sMTIxMjp7bjoiU2hyRm1sYSIsZjpmdW5jdGlvbiBpXyh3LFAsRCl7dmFyIGVlPXE2KHcpO3cubCsrO3ZhciBvZT13LnJlYWRfc2hpZnQoMSk7cmV0dXJuW3RnKHcsUC09OCxEKSxvZSxlZV19fSwyMDQ4OntuOiJITGlua1Rvb2x0aXAiLGY6ZnVuY3Rpb24gUWwodyxQKXt3LnJl''@;'; put 'put ''YWRfc2hpZnQoMik7dmFyIEQ9YjIodyksZWU9dy5yZWFkX3NoaWZ0KChQLTEwKS8yLCJkYmNzLWNvbnQiKTtyZXR1cm5bRCxlZT1lZS5yZXBsYWNlKHksIiIpXX19LDIwNDk6e246IldlYlB1YiJ9LDIwNTA6e246IlFzaVNYVGFnIn0sMjA1MTp7bjoiREJRdWVyeUV4dCJ9LDIwNTI6e246IkV4''@;'; put 'put ''dFN0cmluZyJ9LDIwNTM6e246IlR4dFFyeSJ9LDIwNTQ6e246IlFzaXIifSwyMDU1OntuOiJRc2lmIn0sMjA1Njp7bjoiUlJEVFFTSUYifSwyMDU3OntuOiJCT0YiLGY6emN9LDIwNTg6e246Ik9sZURiQ29ubiJ9LDIwNTk6e246IldPcHQifSwyMDYwOntuOiJTWFZpZXdFeCJ9LDIwNjE6e246''@;'; put 'put ''IlNYVEgifSwyMDYyOntuOiJTWFBJRXgifSwyMDYzOntuOiJTWFZEVEV4In0sMjA2NDp7bjoiU1hWaWV3RXg5In0sMjA2Njp7bjoiQ29udGludWVGcnQifSwyMDY3OntuOiJSZWFsVGltZURhdGEifSwyMTI4OntuOiJDaGFydEZydEluZm8ifSwyMTI5OntuOiJGcnRXcmFwcGVyIn0sMjEzMDp7''@;'; put 'put ''bjoiU3RhcnRCbG9jayJ9LDIxMzE6e246IkVuZEJsb2NrIn0sMjEzMjp7bjoiU3RhcnRPYmplY3QifSwyMTMzOntuOiJFbmRPYmplY3QifSwyMTM0OntuOiJDYXRMYWIifSwyMTM1OntuOiJZTXVsdCJ9LDIxMzY6e246IlNYVmlld0xpbmsifSwyMTM3OntuOiJQaXZvdENoYXJ0Qml0cyJ9LDIx''@;'; put 'put ''Mzg6e246IkZydEZvbnRMaXN0In0sMjE0Njp7bjoiU2hlZXRFeHQifSwyMTQ3OntuOiJCb29rRXh0IixyOjEyfSwyMTQ4OntuOiJTWEFkZGwifSwyMTQ5OntuOiJDckVyciJ9LDIxNTA6e246IkhGUGljdHVyZSJ9LDIxNTE6e246IkZlYXRIZHIiLGY6UWZ9LDIxNTI6e246IkZlYXQifSwyMTU0''@;'; put 'put ''OntuOiJEYXRhTGFiRXh0In0sMjE1NTp7bjoiRGF0YUxhYkV4dENvbnRlbnRzIn0sMjE1Njp7bjoiQ2VsbFdhdGNoIn0sMjE2MTp7bjoiRmVhdEhkcjExIn0sMjE2Mjp7bjoiRmVhdHVyZTExIn0sMjE2NDp7bjoiRHJvcERvd25PYmpJZHMifSwyMTY1OntuOiJDb250aW51ZUZydDExIn0sMjE2''@;'; put 'put ''Njp7bjoiRENvbm4ifSwyMTY3OntuOiJMaXN0MTIifSwyMTY4OntuOiJGZWF0dXJlMTIifSwyMTY5OntuOiJDb25kRm10MTIifSwyMTcwOntuOiJDRjEyIn0sMjE3MTp7bjoiQ0ZFeCJ9LDIxNzI6e246IlhGQ1JDIixmOmZ1bmN0aW9uIHI4KHcpe3cubCs9Mjt2YXIgUD17Y3hmczowLGNyYzow''@;'; put 'put ''fTtyZXR1cm4gUC5jeGZzPXcucmVhZF9zaGlmdCgyKSxQLmNyYz13LnJlYWRfc2hpZnQoNCksUH0scjoxMn0sMjE3Mzp7bjoiWEZFeHQiLGY6ZnVuY3Rpb24gSUgodyxQKXt3LmwrPTI7dmFyIGVlPXcucmVhZF9zaGlmdCgyKTt3LmwrPTI7Zm9yKHZhciBvZT13LnJlYWRfc2hpZnQoMiksZ2U9''@;'; put 'put ''W107b2UtLSA+MDspZ2UucHVzaChESCh3KSk7cmV0dXJue2l4ZmU6ZWUsZXh0OmdlfX0scjoxMn0sMjE3NDp7bjoiQXV0b0ZpbHRlcjEyIn0sMjE3NTp7bjoiQ29udGludWVGcnQxMiJ9LDIxODA6e246Ik1EVEluZm8ifSwyMTgxOntuOiJNRFhTdHIifSwyMTgyOntuOiJNRFhUdXBsZSJ9LDIx''@;'; put 'put ''ODM6e246Ik1EWFNldCJ9LDIxODQ6e246Ik1EWFByb3AifSwyMTg1OntuOiJNRFhLUEkifSwyMTg2OntuOiJNREIifSwyMTg3OntuOiJQTFYifSwyMTg4OntuOiJDb21wYXQxMiIsZjp4byxyOjEyfSwyMTg5OntuOiJEWEYifSwyMTkwOntuOiJUYWJsZVN0eWxlcyIscjoxMn0sMjE5MTp7bjoi''@;'; put 'put ''VGFibGVTdHlsZSJ9LDIxOTI6e246IlRhYmxlU3R5bGVFbGVtZW50In0sMjE5NDp7bjoiU3R5bGVFeHQifSwyMTk1OntuOiJOYW1lUHVibGlzaCJ9LDIxOTY6e246Ik5hbWVDbXQiLGY6ZnVuY3Rpb24geXgodyxQLEQpe2lmKCEoRC5iaWZmPDgpKXt2YXIgZWU9dy5yZWFkX3NoaWZ0KDIpLG9l''@;'; put 'put ''PXcucmVhZF9zaGlmdCgyKTtyZXR1cm5bdGQodyxlZSxEKSx0ZCh3LG9lLEQpXX13LmwrPVB9LHI6MTJ9LDIxOTc6e246IlNvcnREYXRhIn0sMjE5ODp7bjoiVGhlbWUiLGY6ZnVuY3Rpb24gRTgodyxQLEQpe3ZhciBlZT13LmwrUDtpZigxMjQyMjYhPT13LnJlYWRfc2hpZnQoNCkpe2lmKCFE''@;'; put 'put ''LmNlbGxTdHlsZXMpcmV0dXJuIHZvaWQody5sPWVlKTt2YXIgX2UsZ2U9dy5zbGljZSh3LmwpO3cubD1lZTt0cnl7X2U9VG4oZ2Use3R5cGU6ImFycmF5In0pfWNhdGNoe3JldHVybn12YXIgdmU9bm4oX2UsInRoZW1lL3RoZW1lL3RoZW1lMS54bWwiLCEwKTtpZih2ZSlyZXR1cm4gazgodmUs''@;'; put 'put ''RCl9fSxyOjEyfSwyMTk5OntuOiJHVUlEVHlwZUxpYiJ9LDIyMDA6e246IkZuR3JwMTIifSwyMjAxOntuOiJOYW1lRm5HcnAxMiJ9LDIyMDI6e246Ik1UUlNldHRpbmdzIixmOmZ1bmN0aW9uIF94KHcpe3JldHVyblswIT09dy5yZWFkX3NoaWZ0KDQpLDAhPT13LnJlYWRfc2hpZnQoNCksdy5y''@;'; put 'put ''ZWFkX3NoaWZ0KDQpXX0scjoxMn0sMjIwMzp7bjoiQ29tcHJlc3NQaWN0dXJlcyIsZjpRZn0sMjIwNDp7bjoiSGVhZGVyRm9vdGVyIn0sMjIwNTp7bjoiQ3J0TGF5b3V0MTIifSwyMjA2OntuOiJDcnRNbEZydCJ9LDIyMDc6e246IkNydE1sRnJ0Q29udGludWUifSwyMjExOntuOiJGb3JjZUZ1''@;'; put 'put ''bGxDYWxjdWxhdGlvbiIsZjpmdW5jdGlvbiBSdCh3KXt2YXIgUD1mdW5jdGlvbiBLYih3KXt2YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMik7cmV0dXJuIHcubCs9OCx7dHlwZTpQLGZsYWdzOkR9fSh3KTtpZigyMjExIT1QLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJJbnZh''@;'; put 'put ''bGlkIEZ1dHVyZSBSZWNvcmQgIitQLnR5cGUpO3JldHVybiAwIT09dy5yZWFkX3NoaWZ0KDQpfX0sMjIxMjp7bjoiU2hhcGVQcm9wc1N0cmVhbSJ9LDIyMTM6e246IlRleHRQcm9wc1N0cmVhbSJ9LDIyMTQ6e246IlJpY2hUZXh0U3RyZWFtIn0sMjIxNTp7bjoiQ3J0TGF5b3V0MTJBIn0sNDA5''@;'; put 'put ''Nzp7bjoiVW5pdHMifSw0MDk4OntuOiJDaGFydCJ9LDQwOTk6e246IlNlcmllcyJ9LDQxMDI6e246IkRhdGFGb3JtYXQifSw0MTAzOntuOiJMaW5lRm9ybWF0In0sNDEwNTp7bjoiTWFya2VyRm9ybWF0In0sNDEwNjp7bjoiQXJlYUZvcm1hdCJ9LDQxMDc6e246IlBpZUZvcm1hdCJ9LDQxMDg6''@;'; put 'put ''e246IkF0dGFjaGVkTGFiZWwifSw0MTA5OntuOiJTZXJpZXNUZXh0In0sNDExNjp7bjoiQ2hhcnRGb3JtYXQifSw0MTE3OntuOiJMZWdlbmQifSw0MTE4OntuOiJTZXJpZXNMaXN0In0sNDExOTp7bjoiQmFyIn0sNDEyMDp7bjoiTGluZSJ9LDQxMjE6e246IlBpZSJ9LDQxMjI6e246IkFyZWEi''@;'; put 'put ''fSw0MTIzOntuOiJTY2F0dGVyIn0sNDEyNDp7bjoiQ3J0TGluZSJ9LDQxMjU6e246IkF4aXMifSw0MTI2OntuOiJUaWNrIn0sNDEyNzp7bjoiVmFsdWVSYW5nZSJ9LDQxMjg6e246IkNhdFNlclJhbmdlIn0sNDEyOTp7bjoiQXhpc0xpbmUifSw0MTMwOntuOiJDcnRMaW5rIn0sNDEzMjp7bjoi''@;'; put 'put ''RGVmYXVsdFRleHQifSw0MTMzOntuOiJUZXh0In0sNDEzNDp7bjoiRm9udFgiLGY6eXN9LDQxMzU6e246Ik9iamVjdExpbmsifSw0MTQ2OntuOiJGcmFtZSJ9LDQxNDc6e246IkJlZ2luIn0sNDE0ODp7bjoiRW5kIn0sNDE0OTp7bjoiUGxvdEFyZWEifSw0MTU0OntuOiJDaGFydDNkIn0sNDE1''@;'; put 'put ''Njp7bjoiUGljRiJ9LDQxNTc6e246IkRyb3BCYXIifSw0MTU4OntuOiJSYWRhciJ9LDQxNTk6e246IlN1cmYifSw0MTYwOntuOiJSYWRhckFyZWEifSw0MTYxOntuOiJBeGlzUGFyZW50In0sNDE2Mzp7bjoiTGVnZW5kRXhjZXB0aW9uIn0sNDE2NDp7bjoiU2h0UHJvcHMiLGY6ZnVuY3Rpb24g''@;'; put 'put ''YTgodyxQLEQpe3ZhciBlZT17YXJlYTohMX07aWYoNSE9RC5iaWZmKXJldHVybiB3LmwrPVAsZWU7dmFyIG9lPXcucmVhZF9zaGlmdCgxKTtyZXR1cm4gdy5sKz0zLDE2Jm9lJiYoZWUuYXJlYT0hMCksZWV9fSw0MTY1OntuOiJTZXJUb0NydCJ9LDQxNjY6e246IkF4ZXNVc2VkIn0sNDE2ODp7''@;'; put 'put ''bjoiU0Jhc2VSZWYifSw0MTcwOntuOiJTZXJQYXJlbnQifSw0MTcxOntuOiJTZXJBdXhUcmVuZCJ9LDQxNzQ6e246IklGbXRSZWNvcmQifSw0MTc1OntuOiJQb3MifSw0MTc2OntuOiJBbFJ1bnMifSw0MTc3OntuOiJCUkFJIn0sNDE4Nzp7bjoiU2VyQXV4RXJyQmFyIn0sNDE4ODp7bjoiQ2xy''@;'; put 'put ''dENsaWVudCIsZjpmdW5jdGlvbiBXRih3KXtmb3IodmFyIFA9dy5yZWFkX3NoaWZ0KDIpLEQ9W107UC0tID4wOylELnB1c2goJGIodykpO3JldHVybiBEfX0sNDE4OTp7bjoiU2VyRm10In0sNDE5MTp7bjoiQ2hhcnQzREJhclNoYXBlIn0sNDE5Mjp7bjoiRmJpIn0sNDE5Mzp7bjoiQm9wUG9w''@;'; put 'put ''In0sNDE5NDp7bjoiQXhjRXh0In0sNDE5NTp7bjoiRGF0In0sNDE5Njp7bjoiUGxvdEdyb3d0aCJ9LDQxOTc6e246IlNJSW5kZXgifSw0MTk4OntuOiJHZWxGcmFtZSJ9LDQxOTk6e246IkJvcFBvcEN1c3RvbSJ9LDQyMDA6e246IkZiaTIifSwwOntuOiJEaW1lbnNpb25zIixmOlV0fSwxOntu''@;'; put 'put ''OiJCSUZGMkJMQU5LIn0sMjp7bjoiQklGRjJJTlQiLGY6ZnVuY3Rpb24gcUYodyl7dmFyIFA9amModyk7Kyt3Lmw7dmFyIEQ9dy5yZWFkX3NoaWZ0KDIpO3JldHVybiBQLnQ9Im4iLFAudmFsPUQsUH19LDM6e246IkJJRkYyTlVNIixmOmZ1bmN0aW9uIGxfKHcpe3ZhciBQPWpjKHcpOysrdy5s''@;'; put 'put ''O3ZhciBEPXlsKHcpO3JldHVybiBQLnQ9Im4iLFAudmFsPUQsUH19LDQ6e246IkJJRkYyU1RSIixmOmZ1bmN0aW9uIE9RKHcsUCxEKXtELmJpZmZndWVzcyYmNT09RC5iaWZmJiYoRC5iaWZmPTIpO3ZhciBlZT1qYyh3KTsrK3cubDt2YXIgb2U9bGgodywwLEQpO3JldHVybiBlZS50PSJzdHIi''@;'; put 'put ''LGVlLnZhbD1vZSxlZX19LDU6e246IkJvb2xFcnIiLGY6WXV9LDc6e246IlN0cmluZyIsZjpmdW5jdGlvbiBJUSh3KXt2YXIgUD13LnJlYWRfc2hpZnQoMSk7cmV0dXJuIDA9PT1QPyh3LmwrKywiIik6dy5yZWFkX3NoaWZ0KFAsInNiY3MtY29udCIpfX0sODp7bjoiQklGRjJST1cifSw5Ontu''@;'; put 'put ''OiJCT0YiLGY6emN9LDExOntuOiJJbmRleCJ9LDIyOntuOiJFeHRlcm5Db3VudCIsZjp5c30sMzA6e246IkJJRkYyRk9STUFUIixmOklhfSwzMTp7bjoiQklGRjJGTVRDTlQifSwzMjp7bjoiQklGRjJDT0xJTkZPIn0sMzM6e246IkFycmF5IixmOmJ4fSwzNjp7bjoiQ09MV0lEVEgifSwzNzp7''@;'; put 'put ''bjoiRGVmYXVsdFJvd0hlaWdodCIsZjphMX0sNTA6e246IkJJRkYyRk9OVFhUUkEiLGY6ZnVuY3Rpb24gUlEodyxQKXt3LmwrPTYsdy5sKz0yLHcubCs9MSx3LmwrPTMsdy5sKz0xLHcubCs9UC0xM319LDYyOntuOiJCSUZGMldJTkRPVzIifSw1Mjp7bjoiRERFT2JqTmFtZSJ9LDY3OntuOiJC''@;'; put 'put ''SUZGMlhGIn0sNjg6e246IkJJRkYyWEZJTkRFWCIsZjp5c30sNjk6e246IkJJRkYyRk9OVENMUiJ9LDg2OntuOiJCSUZGNEZNVENOVCJ9LDEyNjp7bjoiUksifSwxMjc6e246IkltRGF0YSIsZjpmdW5jdGlvbiBLRih3KXt2YXIgUD13LnJlYWRfc2hpZnQoMiksRD13LnJlYWRfc2hpZnQoMiks''@;'; put 'put ''ZWU9dy5yZWFkX3NoaWZ0KDQpLG9lPXtmbXQ6UCxlbnY6RCxsZW46ZWUsZGF0YTp3LnNsaWNlKHcubCx3LmwrZWUpfTtyZXR1cm4gdy5sKz1lZSxvZX19LDEzNTp7bjoiQWRkaW4ifSwxMzY6e246IkVkZyJ9LDEzNzp7bjoiUHViIn0sMTQ1OntuOiJTdWIifSwxNDg6e246IkxIUmVjb3JkIn0s''@;'; put 'put ''MTQ5OntuOiJMSE5HcmFwaCJ9LDE1MDp7bjoiU291bmQifSwxNjk6e246IkNvb3JkTGlzdCJ9LDE3MTp7bjoiR0NXIn0sMTg4OntuOiJTaHJGbWxhIn0sMTkxOntuOiJUb29sYmFySGRyIn0sMTkyOntuOiJUb29sYmFyRW5kIn0sMTk0OntuOiJBZGRNZW51In0sMTk1OntuOiJEZWxNZW51In0s''@;'; put 'put ''MjE0OntuOiJSU3RyaW5nIixmOmZ1bmN0aW9uIFR4KHcsUCxEKXt2YXIgZWU9dy5sK1Asb2U9amModyksZ2U9dy5yZWFkX3NoaWZ0KDIpLF9lPXRkKHcsZ2UsRCk7cmV0dXJuIHcubD1lZSxvZS50PSJzdHIiLG9lLnZhbD1fZSxvZX19LDIyMzp7bjoiVUREZXNjIn0sMjM0OntuOiJUYWJJZENv''@;'; put 'put ''bmYifSwzNTQ6e246IlhMNU1vZGlmeSJ9LDQyMTp7bjoiRmlsZVNoYXJpbmcyIn0sNTE4OntuOiJGb3JtdWxhIixmOkxwfSw1MjE6e246IkJPRiIsZjp6Y30sNTM2OntuOiJMYmwiLGY6dnh9LDU0Nzp7bjoiRXh0ZXJuTmFtZSIsZjpuX30sNTYxOntuOiJGb250In0sNTc5OntuOiJCSUZGM1hG''@;'; put 'put ''In0sMTAzMDp7bjoiRm9ybXVsYSIsZjpMcH0sMTAzMzp7bjoiQk9GIixmOnpjfSwxMDkxOntuOiJCSUZGNFhGIn0sMjE1Nzp7bjoiRmVhdEluZm8ifSwyMTYzOntuOiJGZWF0SW5mbzExIn0sMjE3Nzp7bjoiU1hBZGRsMTIifSwyMjQwOntuOiJBdXRvV2ViUHViIn0sMjI0MTp7bjoiTGlzdE9i''@;'; put 'put ''aiJ9LDIyNDI6e246Ikxpc3RGaWVsZCJ9LDIyNDM6e246Ikxpc3REViJ9LDIyNDQ6e246Ikxpc3RDb25kRm10In0sMjI0NTp7bjoiTGlzdENGIn0sMjI0Njp7bjoiRk1RcnkifSwyMjQ3OntuOiJGTVNRcnkifSwyMjQ4OntuOiJQTFYifSwyMjQ5OntuOiJMbkV4dCJ9LDIyNTA6e246Ik1rckV4''@;'; put 'put ''dCJ9LDIyNTE6e246IkNydENvb3B0In0sMjI2Mjp7bjoiRlJUQXJjaElkJCIscjoxMn0sMjkyODI6e319LHRPPUtlKGYxLCJuIik7ZnVuY3Rpb24gU2kodyxQLEQsZWUpe3ZhciBvZT0rUHx8K3RPW1BdO2lmKCFpc05hTihvZSkpe3ZhciBnZT1lZXx8KER8fFtdKS5sZW5ndGh8fDAsX2U9dy5u''@;'; put 'put ''ZXh0KDQpO19lLndyaXRlX3NoaWZ0KDIsb2UpLF9lLndyaXRlX3NoaWZ0KDIsZ2UpLGdlPjAmJmwyKEQpJiZ3LnB1c2goRCl9fWZ1bmN0aW9uIGQxKHcsUCxEKXtyZXR1cm4gd3x8KHc9cHIoNykpLHcud3JpdGVfc2hpZnQoMixQKSx3LndyaXRlX3NoaWZ0KDIsRCksdy53cml0ZV9zaGlmdCgy''@;'; put 'put ''LDApLHcud3JpdGVfc2hpZnQoMSwwKSx3fWZ1bmN0aW9uIFZ3KHcsUCxELGVlKXtpZihudWxsIT1QLnYpc3dpdGNoKFAudCl7Y2FzZSJkIjpjYXNlIm4iOnZhciBvZT0iZCI9PVAudD9xZShQdChQLnYpKTpQLnY7cmV0dXJuIHZvaWQob2U9PSgwfG9lKSYmb2U+PTAmJm9lPDY1NTM2P1NpKHcs''@;'; put 'put ''MixmdW5jdGlvbiBYRih3LFAsRCl7dmFyIGVlPXByKDkpO3JldHVybiBkMShlZSx3LFApLGVlLndyaXRlX3NoaWZ0KDIsRCksZWV9KEQsZWUsb2UpKTpTaSh3LDMsZnVuY3Rpb24gRFEodyxQLEQpe3ZhciBlZT1wcigxNSk7cmV0dXJuIGQxKGVlLHcsUCksZWUud3JpdGVfc2hpZnQoOCxELCJm''@;'; put 'put ''IiksZWV9KEQsZWUsb2UpKSk7Y2FzZSJiIjpjYXNlImUiOnJldHVybiB2b2lkIFNpKHcsNSxmdW5jdGlvbiBOdyh3LFAsRCxlZSl7dmFyIG9lPXByKDkpO3JldHVybiBkMShvZSx3LFApLEdiKEQsZWV8fCJiIixvZSksb2V9KEQsZWUsUC52LFAudCkpO2Nhc2UicyI6Y2FzZSJzdHIiOnJldHVy''@;'; put 'put ''biB2b2lkIFNpKHcsNCxmdW5jdGlvbiBVVih3LFAsRCl7dmFyIGVlPXByKDgrMipELmxlbmd0aCk7cmV0dXJuIGQxKGVlLHcsUCksZWUud3JpdGVfc2hpZnQoMSxELmxlbmd0aCksZWUud3JpdGVfc2hpZnQoRC5sZW5ndGgsRCwic2JjcyIpLGVlLmw8ZWUubGVuZ3RoP2VlLnNsaWNlKDAsZWUu''@;'; put 'put ''bCk6ZWV9KEQsZWUsKFAudnx8IiIpLnNsaWNlKDAsMjU1KSkpfVNpKHcsMSxkMShudWxsLEQsZWUpKX1mdW5jdGlvbiBHVih3LFAsRCxlZSxvZSl7dmFyIGdlPTE2K3djKG9lLmNlbGxYZnMsb2UuY2VsbFN0eWxlWGZzLFAsb2UpO2lmKG51bGwhPVAudnx8UC5iZilpZihQLmJmKVNpKHcsIkZv''@;'; put 'put ''cm11bGEiLGZ1bmN0aW9uIGRlZSh3LFAsRCxlZSxvZSl7dmFyIGdlPXQxKFAsRCxvZSksX2U9ZnVuY3Rpb24gcV8odyl7aWYobnVsbD09dyl7dmFyIFA9cHIoOCk7cmV0dXJuIFAud3JpdGVfc2hpZnQoMSwzKSxQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCgyLDApLFAud3JpdGVf''@;'; put 'put ''c2hpZnQoMiwwKSxQLndyaXRlX3NoaWZ0KDIsNjU1MzUpLFB9cmV0dXJuIHp1KCJudW1iZXIiPT10eXBlb2Ygdz93OjApfSh3LnYpLHZlPXByKDYpO3ZlLndyaXRlX3NoaWZ0KDIsMzMpLHZlLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKHZhciBqZT1wcih3LmJmLmxlbmd0aCksVWU9MDtVZTx3LmJm''@;'; put 'put ''Lmxlbmd0aDsrK1VlKWplW1VlXT13LmJmW1VlXTtyZXR1cm4gTShbZ2UsX2UsdmUsamVdKX0oUCxELGVlLDAsZ2UpKTtlbHNlIHN3aXRjaChQLnQpe2Nhc2UiZCI6Y2FzZSJuIjpTaSh3LCJOdW1iZXIiLGZ1bmN0aW9uIHBwKHcsUCxELGVlKXt2YXIgb2U9cHIoMTQpO3JldHVybiB0MSh3LFAs''@;'; put 'put ''ZWUsb2UpLHp1KEQsb2UpLG9lfShELGVlLCJkIj09UC50P3FlKFB0KFAudikpOlAudixnZSkpO2JyZWFrO2Nhc2UiYiI6Y2FzZSJlIjpTaSh3LDUxNyxmdW5jdGlvbiBuZCh3LFAsRCxlZSxvZSxnZSl7dmFyIF9lPXByKDgpO3JldHVybiB0MSh3LFAsZWUsX2UpLEdiKEQsZ2UsX2UpLF9lfShE''@;'; put 'put ''LGVlLFAudixnZSwwLFAudCkpO2JyZWFrO2Nhc2UicyI6Y2FzZSJzdHIiOmlmKG9lLmJvb2tTU1Qpe3ZhciB2ZT1ydyhvZS5TdHJpbmdzLFAudixQLlI/UC5yPXcyKFAuUik6bnVsbCxvZS5yZXZTdHJpbmdzKTtpZihQLlIpZm9yKHZhciBNZT0wO01lPFAuUi5sZW5ndGg7KytNZSlQLlJbTWVd''@;'; put 'put ''LnMmJndjKG9lLmNlbGxYZnMsb2UuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpQLlJbTWVdLnN9LG9lKTtTaSh3LCJMYWJlbFNzdCIsZnVuY3Rpb24gTEYodyxQLEQsZWUpe3ZhciBvZT1wcigxMCk7cmV0dXJuIHQxKHcsUCxlZSxvZSksb2Uud3JpdGVfc2hpZnQoNCxEKSxvZX0oRCxlZSx2''@;'; put 'put ''ZSxnZSkpfWVsc2UgU2kodywiTGFiZWwiLGZ1bmN0aW9uIEZGKHcsUCxELGVlLG9lKXt2YXIgZ2U9IW9lfHw4PT1vZS5iaWZmLF9lPXByKCtnZSs4KygxK2dlKSpELmxlbmd0aCk7cmV0dXJuIHQxKHcsUCxlZSxfZSksX2Uud3JpdGVfc2hpZnQoMixELmxlbmd0aCksZ2UmJl9lLndyaXRlX3No''@;'; put 'put ''aWZ0KDEsMSksX2Uud3JpdGVfc2hpZnQoKDErZ2UpKkQubGVuZ3RoLEQsZ2U/InV0ZjE2bGUiOiJzYmNzIiksX2V9KEQsZWUsKFAudnx8IiIpLnNsaWNlKDAsMjU1KSxnZSxvZSkpO2JyZWFrO2RlZmF1bHQ6U2kodywiQmxhbmsiLHQxKEQsZWUsZ2UpKX1lbHNlIFNpKHcsIkJsYW5rIix0MShE''@;'; put 'put ''LGVlLGdlKSl9ZnVuY3Rpb24gJFYodyxQLEQpe3ZhciBVZSxlZT1BdSgpLG9lPUQuU2hlZXROYW1lc1t3XSxnZT1ELlNoZWV0c1tvZV18fHt9LF9lPShEfHx7fSkuV29ya2Jvb2t8fHt9LHZlPShfZS5TaGVldHN8fFtdKVt3XXx8e30sTWU9QXJyYXkuaXNBcnJheShnZSksamU9OD09UC5iaWZm''@;'; put 'put ''LFhlPSIiLGl0PVtdLGZ0PVBpKGdlWyIhcmVmIl18fCJBMSIpLE10PWplPzY1NTM2OjE2Mzg0O2lmKGZ0LmUuYz4yNTV8fGZ0LmUucj49TXQpe2lmKFAuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisoZ2VbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2''@;'; put 'put ''Mzg0Iik7ZnQuZS5jPU1hdGgubWluKGZ0LmUuYywyNTUpLGZ0LmUucj1NYXRoLm1pbihmdC5lLmMsTXQtMSl9U2koZWUsMjA1Nyx4bSgwLDE2LFApKSxTaShlZSwiQ2FsY01vZGUiLGJjKDEpKSxTaShlZSwiQ2FsY0NvdW50IixiYygxMDApKSxTaShlZSwiQ2FsY1JlZk1vZGUiLFpzKCEwKSks''@;'; put 'put ''U2koZWUsIkNhbGNJdGVyIixacyghMSkpLFNpKGVlLCJDYWxjRGVsdGEiLHp1KC4wMDEpKSxTaShlZSwiQ2FsY1NhdmVSZWNhbGMiLFpzKCEwKSksU2koZWUsIlByaW50Um93Q29sIixacyghMSkpLFNpKGVlLCJQcmludEdyaWQiLFpzKCExKSksU2koZWUsIkdyaWRTZXQiLGJjKDEpKSxTaShl''@;'; put 'put ''ZSwiR3V0cyIsZnVuY3Rpb24gbXgodyl7dmFyIFA9cHIoOCk7cmV0dXJuIFAud3JpdGVfc2hpZnQoNCwwKSxQLndyaXRlX3NoaWZ0KDIsd1swXT93WzBdKzE6MCksUC53cml0ZV9zaGlmdCgyLHdbMV0/d1sxXSsxOjApLFB9KFswLDBdKSksU2koZWUsIkhDZW50ZXIiLFpzKCExKSksU2koZWUs''@;'; put 'put ''IlZDZW50ZXIiLFpzKCExKSk7dmFyIHV0PWdlWyIhcHJpbnQiXSYmZ2VbIiFwcmludCJdLm1hcmdpbnN8fGdlWyIhbWFyZ2lucyJdO3V0JiYobnVsbCE9dXQubGVmdCYmU2koZWUsIkxlZnRNYXJnaW4iLHp1KHV0LmxlZnQpKSxudWxsIT11dC5yaWdodCYmU2koZWUsIlJpZ2h0TWFyZ2luIix6''@;'; put 'put ''dSh1dC5yaWdodCkpLG51bGwhPXV0LnRvcCYmU2koZWUsIlRvcE1hcmdpbiIsenUodXQudG9wKSksbnVsbCE9dXQuYm90dG9tJiZTaShlZSwiQm90dG9tTWFyZ2luIix6dSh1dC5ib3R0b20pKSwobnVsbCE9dXQuaGVhZGVyfHxudWxsIT11dC5mb290ZXIpJiZTaShlZSwiU2V0dXAiLGZ1bmN0''@;'; put 'put ''aW9uIG84KHcsUCl7dmFyIEQ9cHIoMzQpLGVlPSExLG9lPTcwO3JldHVybiJsYW5kc2NhcGUiPT0oUC5wcm9wc3x8e30pLm9yaWVudGF0aW9uJiYoZWU9ITAsb2UmPS02NyksZWUmJihvZSY9LTUpLEQud3JpdGVfc2hpZnQoMiwxKSxELndyaXRlX3NoaWZ0KDIsMTAwKSxELndyaXRlX3NoaWZ0''@;'; put 'put ''KDIsMCksRC53cml0ZV9zaGlmdCgyLDApLEQud3JpdGVfc2hpZnQoMiwwKSxELndyaXRlX3NoaWZ0KDEsb2UpLEQud3JpdGVfc2hpZnQoMSwwKSxELndyaXRlX3NoaWZ0KDIsNjAwKSxELndyaXRlX3NoaWZ0KDIsNjAwKSx6dShudWxsPT13LmhlYWRlcj8uNTp3LmhlYWRlcixEKSx6dShudWxs''@;'; put 'put ''PT13LmZvb3Rlcj8uNTp3LmZvb3RlcixEKSxELndyaXRlX3NoaWZ0KDIsMSksRH0odXQsZ2VbIiFwcmludCJdfHx7fSkpKSxqZSYmZnVuY3Rpb24gck8odyxQLEQpe2lmKFApe3ZhciBlZT0wO1AuZm9yRWFjaChmdW5jdGlvbihvZSxnZSl7KytlZTw9MjU2JiZvZSYmKG9lLmF1dG8mJlZpKEQs''@;'; put 'put ''b2UsZ2UpLFNpKHcsIkNvbEluZm8iLGZ1bmN0aW9uIEdGKHcsUCl7dmFyIEQ9cHIoMTIpO0Qud3JpdGVfc2hpZnQoMixQKSxELndyaXRlX3NoaWZ0KDIsUCksRC53cml0ZV9zaGlmdCgyLDI1Nip3LndpZHRoKSxELndyaXRlX3NoaWZ0KDIsMCk7dmFyIGVlPTA7cmV0dXJuIHcuaGlkZGVuJiYo''@;'; put 'put ''ZWV8PTEpLEQud3JpdGVfc2hpZnQoMSxlZSksRC53cml0ZV9zaGlmdCgxLGVlPXcubGV2ZWx8fDApLEQud3JpdGVfc2hpZnQoMiwwKSxEfSh1ZChnZSxvZSksZ2UpKSl9KX19KGVlLGdlWyIhY29scyJdLGdlKSxTaShlZSwiRGltZW5zaW9ucyIsZnVuY3Rpb24gWnQodyxQKXt2YXIgRD04IT1Q''@;'; put 'put ''LmJpZmYmJlAuYmlmZj8yOjQsZWU9cHIoMipEKzYpO3JldHVybiBlZS53cml0ZV9zaGlmdChELHcucy5yKSxlZS53cml0ZV9zaGlmdChELHcuZS5yKzEpLGVlLndyaXRlX3NoaWZ0KDIsdy5zLmMpLGVlLndyaXRlX3NoaWZ0KDIsdy5lLmMrMSksZWUud3JpdGVfc2hpZnQoMiwwKSxlZX0oZnQs''@;'; put 'put ''UCkpLGplJiYoZ2VbIiFsaW5rcyJdPVtdKSxnZVsiIXJvd3MiXSYmamUmJmdlWyIhcm93cyJdLmZvckVhY2goZnVuY3Rpb24oWXQsZ24pe2Zvcih2YXIgcW49VmEoZ24pLGZuPTI1NixLbj0wLHpuPVl0LnM/MTYrd2MoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpZdC5z''@;'; put 'put ''fSxQKTowLE9uPWZ0LnMuYztPbjw9ZnQuZS5jOysrT24pKE1lPyhnZVtnbl18fFtdKVtPbl06Z2VbaXRbT25dK3FuXSkmJihPbjxmbiYmKGZuPU9uKSxPbj5LbiYmKEtuPU9uKSk7S248Zm4mJihmbj1Lbj0wKSxTaShlZSwiUm93IixmdW5jdGlvbiBidCh3LFAsRCl7dmFyIGVlPXByKDE2KTtl''@;'; put 'put ''ZS53cml0ZV9zaGlmdCgyLFApLGVlLndyaXRlX3NoaWZ0KDIsRFswXSksZWUud3JpdGVfc2hpZnQoMixEWzFdKzEpLGVlLndyaXRlX3NoaWZ0KDIsMjAqdy5ocHR8fDIwKnVoKHcuaHB4KXx8MzMwKSxlZS53cml0ZV9zaGlmdCg0LDApO3ZhciBvZT0wO3JldHVybiBvZXw9MHx3LmxldmVsLHcu''@;'; put 'put ''aGlkZGVuJiYob2V8PTMyKSxvZXw9NjQsRFsyXSYmKG9lfD0xMjgpLGVlLndyaXRlX3NoaWZ0KDEsb2UpLGVlLndyaXRlX3NoaWZ0KDEsMSksZWUud3JpdGVfc2hpZnQoMixEWzJdfHwwKSxlZX0oWXQsZ24sW2ZuLEtuLHpuXSkpfSk7Zm9yKHZhciB3dD1mdC5zLnI7d3Q8PWZ0LmUucjsrK3d0''@;'; put 'put ''KXtYZT1WYSh3dCk7Zm9yKHZhciBIdD1mdC5zLmM7SHQ8PWZ0LmUuYzsrK0h0KXt3dD09PWZ0LnMuciYmKGl0W0h0XT1CYShIdCkpLFVlPWl0W0h0XStYZTt2YXIga3Q9TWU/KGdlW3d0XXx8W10pW0h0XTpnZVtVZV07a3QmJihHVihlZSxrdCx3dCxIdCxQKSxqZSYma3QubCYmZ2VbIiFsaW5r''@;'; put 'put ''cyJdLnB1c2goW1VlLGt0LmxdKSl9fXZhciBUdD12ZS5Db2RlTmFtZXx8dmUubmFtZXx8b2U7cmV0dXJuKGplfHw1PT1QLmJpZmYmJmdlWyIhZnJlZXplIl0pJiZTaShlZSwiV2luZG93MiIsZnVuY3Rpb24gT0YodyxQLEQsZWUpe3ZhciBvZT1lZSYmZWUuYmlmZnx8OCxnZT1wcig4PT1vZT8x''@;'; put 'put ''ODoxMCksX2U9MTcxODtyZXR1cm4gRD4wJiYoX2UmPS01MTMpLGhuKFBbIiFncmlkbGluZXMiXSkmJihfZSY9LTMpLFBbIiFmcmVlemUiXSYmKF9lfD04KSx3JiZ3LlJUTCYmKF9lfD02NCksNT09b2UmJihfZT00NDYpLGdlLndyaXRlX3NoaWZ0KDIsX2UpLDg9PW9lPyhnZS53cml0ZV9zaGlm''@;'; put 'put ''dCg0LDApLGdlLndyaXRlX3NoaWZ0KDQsNjQpLGdlLndyaXRlX3NoaWZ0KDQsMCksZ2Uud3JpdGVfc2hpZnQoNCwwKSk6KGdlLndyaXRlX3NoaWZ0KDQsMCksZ2Uud3JpdGVfc2hpZnQoNCwwKSksZ2V9KChfZS5WaWV3c3x8W10pWzBdLGdlLHcpKSwoamV8fDU9PVAuYmlmZikmJmdlWyIhZnJl''@;'; put 'put ''ZXplIl0mJlNpKGVlLCJQYW5lIixmdW5jdGlvbiBJRih3KXsic3RyaW5nIj09dHlwZW9mIHcmJih3PWNhKHcpKTt2YXIgUD1wcigxMCk7cmV0dXJuIFAud3JpdGVfc2hpZnQoMix3LmMpLFAud3JpdGVfc2hpZnQoMix3LnIpLFAud3JpdGVfc2hpZnQoMix3LnIpLFAud3JpdGVfc2hpZnQoMix3''@;'; put 'put ''LmMpLFAud3JpdGVfc2hpZnQoMSwzKSxQLndyaXRlX3NoaWZ0KDEsMCksUH0oZ2VbIiFmcmVlemUiXSkpLGplJiZnZVsiIXNlbCJdJiZTaShlZSwiU2VsZWN0aW9uIixmdW5jdGlvbiBPbSh3LFApe3ZhciBEPXByKDE1KSxlZT13LmNlbGw7aWYoIWVlKXtpZighdy5yYW5nZSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7ZWU9cGkoS2Eody5yYW5nZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zKX12YXIgb2U9InN0cmluZyI9PXR5cGVvZiBlZT9jYShlZSk6ZWU7aWYoUCl7dmFyIGdlPSJzdHJpbmciPT10eXBlb2YgUD9jYShQKTpQ''@;'; put 'put ''O0Qud3JpdGVfc2hpZnQoMSxvZS5yPj1nZS5yJiZvZS5jPj1nZS5jPzA6b2Uucj49Z2UuciYmb2UuYzxnZS5jPzI6b2UucjxnZS5yJiZvZS5jPj1nZS5jPzE6Myl9ZWxzZSBELndyaXRlX3NoaWZ0KDEsMyk7cmV0dXJuIEQud3JpdGVfc2hpZnQoMixvZS5yKSxELndyaXRlX3NoaWZ0KDIsb2Uu''@;'; put 'put ''YyksRC53cml0ZV9zaGlmdCgyLDApLEQud3JpdGVfc2hpZnQoMiwxKSxmdW5jdGlvbiBKYih3LFApe1B8fChQPXByKDYpKSxQLndyaXRlX3NoaWZ0KDIsdy5zP3cucy5yOncuciksUC53cml0ZV9zaGlmdCgyLHcuZT93LmUucjp3LnIpLFAud3JpdGVfc2hpZnQoMSx3LnM/dy5zLmM6dy5jKSxQ''@;'; put 'put ''LndyaXRlX3NoaWZ0KDEsdy5lP3cuZS5jOncuYyl9KHtzOm9lLGU6b2V9LEQpLER9KGdlWyIhc2VsIl0sZ2VbIiFmcmVlemUiXSkpLGplJiYoZ2VbIiFtZXJnZXMiXXx8W10pLmxlbmd0aCYmU2koZWUsIk1lcmdlQ2VsbHMiLGZ1bmN0aW9uIFN4KHcpe3ZhciBQPXByKDIrOCp3Lmxlbmd0aCk7''@;'; put 'put ''UC53cml0ZV9zaGlmdCgyLHcubGVuZ3RoKTtmb3IodmFyIEQ9MDtEPHcubGVuZ3RoOysrRCluMSh3W0RdLFApO3JldHVybiBQfShnZVsiIW1lcmdlcyJdKSksamUmJmZ1bmN0aW9uICRzKHcsUCl7Zm9yKHZhciBEPTA7RDxQWyIhbGlua3MiXS5sZW5ndGg7KytEKXt2YXIgZWU9UFsiIWxpbmtz''@;'; put 'put ''Il1bRF07U2kodywiSExpbmsiLF8yKGVlKSksZWVbMV0uVG9vbHRpcCYmU2kodywiSExpbmtUb29sdGlwIixVRihlZSkpfWRlbGV0ZSBQWyIhbGlua3MiXX0oZWUsZ2UpLFNpKGVlLCJDb2RlTmFtZSIsJDYoVHQpKSxqZSYmZnVuY3Rpb24gbk8odyxQKXt2YXIgRD1wcigxOSk7RC53cml0ZV9z''@;'; put 'put ''aGlmdCg0LDIxNTEpLEQud3JpdGVfc2hpZnQoNCwwKSxELndyaXRlX3NoaWZ0KDQsMCksRC53cml0ZV9zaGlmdCgyLDMpLEQud3JpdGVfc2hpZnQoMSwxKSxELndyaXRlX3NoaWZ0KDQsMCksU2kodywiRmVhdEhkciIsRCksKEQ9cHIoMzkpKS53cml0ZV9zaGlmdCg0LDIxNTIpLEQud3JpdGVf''@;'; put 'put ''c2hpZnQoNCwwKSxELndyaXRlX3NoaWZ0KDQsMCksRC53cml0ZV9zaGlmdCgyLDMpLEQud3JpdGVfc2hpZnQoMSwwKSxELndyaXRlX3NoaWZ0KDQsMCksRC53cml0ZV9zaGlmdCgyLDEpLEQud3JpdGVfc2hpZnQoNCw0KSxELndyaXRlX3NoaWZ0KDIsMCksbjEoUGkoUFsiIXJlZiJdfHwiQTEi''@;'; put 'put ''KSxEKSxELndyaXRlX3NoaWZ0KDQsNCksU2kodywiRmVhdCIsRCl9KGVlLGdlKSxTaShlZSwiRU9GIiksZWUuZW5kKCl9ZnVuY3Rpb24gaU8odyxQLEQpe3ZhciBlZT1BdSgpLG9lPSh3fHx7fSkuV29ya2Jvb2t8fHt9LGdlPW9lLlNoZWV0c3x8W10sX2U9b2UuV0JQcm9wc3x8e30sdmU9OD09''@;'; put 'put ''RC5iaWZmLE1lPTU9PUQuYmlmZjtTaShlZSwyMDU3LHhtKDAsNSxEKSksInhsYSI9PUQuYm9va1R5cGUmJlNpKGVlLCJBZGRpbiIpLFNpKGVlLCJJbnRlcmZhY2VIZHIiLHZlP2JjKDEyMDApOm51bGwpLFNpKGVlLCJNbXMiLGZ1bmN0aW9uIGN4KHcsUCl7UHx8KFA9cHIodykpO2Zvcih2YXIg''@;'; put 'put ''RD0wO0Q8dzsrK0QpUC53cml0ZV9zaGlmdCgxLDApO3JldHVybiBQfSgyKSksTWUmJlNpKGVlLCJUb29sYmFySGRyIiksTWUmJlNpKGVlLCJUb29sYmFyRW5kIiksU2koZWUsIkludGVyZmFjZUVuZCIpLFNpKGVlLCJXcml0ZUFjY2VzcyIsZnVuY3Rpb24gUTYodyxQKXt2YXIgRD0hUHx8OD09''@;'; put 'put ''UC5iaWZmLGVlPXByKEQ/MTEyOjU0KTtmb3IoZWUud3JpdGVfc2hpZnQoOD09UC5iaWZmPzI6MSw3KSxEJiZlZS53cml0ZV9zaGlmdCgxLDApLGVlLndyaXRlX3NoaWZ0KDQsODU5MDA3MDU5KSxlZS53cml0ZV9zaGlmdCg0LDU0NTg1NDh8KEQ/MDo1MzY4NzA5MTIpKTtlZS5sPGVlLmxlbmd0''@;'; put 'put ''aDspZWUud3JpdGVfc2hpZnQoMSxEPzA6MzIpO3JldHVybiBlZX0oMCxEKSksU2koZWUsIkNvZGVQYWdlIixiYyh2ZT8xMjAwOjEyNTIpKSx2ZSYmU2koZWUsIkRTRiIsYmMoMCkpLHZlJiZTaShlZSwiRXhjZWw5RmlsZSIpLFNpKGVlLCJSUlRhYklkIixmdW5jdGlvbiBhXyh3KXtmb3IodmFy''@;'; put 'put ''IFA9cHIoMip3KSxEPTA7RDx3OysrRClQLndyaXRlX3NoaWZ0KDIsRCsxKTtyZXR1cm4gUH0ody5TaGVldE5hbWVzLmxlbmd0aCkpLHZlJiZ3LnZiYXJhdyYmU2koZWUsIk9iUHJvaiIpLHZlJiZ3LnZiYXJhdyYmU2koZWUsIkNvZGVOYW1lIiwkNihfZS5Db2RlTmFtZXx8IlRoaXNXb3JrYm9v''@;'; put 'put ''ayIpKSxTaShlZSwiQnVpbHRJbkZuR3JvdXBDb3VudCIsYmMoMTcpKSxTaShlZSwiV2luUHJvdGVjdCIsWnMoITEpKSxTaShlZSwiUHJvdGVjdCIsWnMoITEpKSxTaShlZSwiUGFzc3dvcmQiLGJjKDApKSx2ZSYmU2koZWUsIlByb3Q0UmV2IixacyghMSkpLHZlJiZTaShlZSwiUHJvdDRSZXZQ''@;'; put 'put ''YXNzIixiYygwKSksU2koZWUsIldpbmRvdzEiLGZ1bmN0aW9uIGR4KCl7dmFyIHc9cHIoMTgpO3JldHVybiB3LndyaXRlX3NoaWZ0KDIsMCksdy53cml0ZV9zaGlmdCgyLDApLHcud3JpdGVfc2hpZnQoMiwyOTI4MCksdy53cml0ZV9zaGlmdCgyLDE3NjAwKSx3LndyaXRlX3NoaWZ0KDIsNTYp''@;'; put 'put ''LHcud3JpdGVfc2hpZnQoMiwwKSx3LndyaXRlX3NoaWZ0KDIsMCksdy53cml0ZV9zaGlmdCgyLDEpLHcud3JpdGVfc2hpZnQoMiw1MDApLHd9KCkpLFNpKGVlLCJCYWNrdXAiLFpzKCExKSksU2koZWUsIkhpZGVPYmoiLGJjKDApKSxTaShlZSwiRGF0ZTE5MDQiLFpzKCJ0cnVlIj09ZnVuY3Rp''@;'; put 'put ''b24gRlQodyl7cmV0dXJuIHcuV29ya2Jvb2smJncuV29ya2Jvb2suV0JQcm9wcyYmX3Iody5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0KT8idHJ1ZSI6ImZhbHNlIn0odykpKSxTaShlZSwiQ2FsY1ByZWNpc2lvbiIsWnMoITApKSx2ZSYmU2koZWUsIlJlZnJlc2hBbGwiLFpzKCExKSksU2ko''@;'; put 'put ''ZWUsIkJvb2tCb29sIixiYygwKSksU3I9eW0oWzAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1XSksZnVuY3Rpb24gWlYodyxQLEQpeygoKFB8fHt9''@;'; put 'put ''KS5TdHlsZXN8fHt9KS5Gb250c3x8W3tzejoxMixjb2xvcjp7dGhlbWU6MX0sbmFtZToiQXJpYWwiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0pLmZvckVhY2goZnVuY3Rpb24oZWUpe1NpKHcsIkZvbnQiLGZ1bmN0aW9uIGhwKHcsUCl7dmFyIEQ9dy5uYW1lfHwiQXJpYWwiLGVlPVAmJjU9''@;'; put 'put ''PVAuYmlmZixnZT1wcihlZT8xNStELmxlbmd0aDoxNisyKkQubGVuZ3RoKTtnZS53cml0ZV9zaGlmdCgyLDIwKih3LnN6fHwxMikpO3ZhciBfZT0wO3JldHVybiB3LmJvbGQmJihfZXw9MSksdy5pdGFsaWMmJihfZXw9Miksdy5zdHJpa2UmJihfZXw9OCksdy5zaGFkb3cmJihfZXw9MzIpLGdl''@;'; put 'put ''LndyaXRlX3NoaWZ0KDEsX2UpLGdlLndyaXRlX3NoaWZ0KDEsMCksZ2Uud3JpdGVfc2hpZnQoMix3LmNvbG9yP1RwKHcuY29sb3IsNjQpOjY0KSxnZS53cml0ZV9zaGlmdCgyLHcuYm9sZD83MDA6NDAwKSxnZS53cml0ZV9zaGlmdCgyLCJzdXBlciI9PXcudmFsaWduPzE6InN1YiI9PXcudmFs''@;'; put 'put ''aWduPzI6MCksZ2Uud3JpdGVfc2hpZnQoMSx3LnVuZGVybGluZXx8MCksZ2Uud3JpdGVfc2hpZnQoMSxnZS5mYW1pbHl8fDApLGdlLndyaXRlX3NoaWZ0KDEsZ2UuY2hhcnNldHx8MCksZ2Uud3JpdGVfc2hpZnQoMSwwKSxnZS53cml0ZV9zaGlmdCgxLEQubGVuZ3RoKSxlZXx8Z2Uud3JpdGVf''@;'; put 'put ''c2hpZnQoMSwxKSxnZS53cml0ZV9zaGlmdCgoZWU/MToyKSpELmxlbmd0aCxELGVlPyJzYmNzIjoidXRmMTZsZSIpLGdlfShlZSxEKSl9KX0oZWUsdyxEKSxmdW5jdGlvbiBZVih3LFAsRCl7UCYmW1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbihlZSl7''@;'; put 'put ''Zm9yKHZhciBvZT1lZVswXTtvZTw9ZWVbMV07KytvZSludWxsIT1QW29lXSYmU2kodywiRm9ybWF0IixRcihvZSxQW29lXSxEKSl9KX0oZWUsdy5TU0YsRCksZnVuY3Rpb24gV1YodyxQKXtmb3IodmFyIEQ9MDtEPDE2OysrRClTaSh3LCJYRiIsZTgoe251bUZtdElkOjAsc3R5bGU6ITB9LDAs''@;'; put 'put ''UCkpO1AuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtTaSh3LCJYRiIsZTgoZWUsMCxQKSl9KX0oZWUsRCksU2koZWUsIlBhbGV0dGUiLGZ1bmN0aW9uIEV4KHcpe3ZhciBQPXByKDIyNik7UC53cml0ZV9zaGlmdCgyLDU2KTtmb3IodmFyIEQ9MDtEPDU2OysrRCl7dmFyIGVlPXdbRCs4''@;'; put 'put ''XXx8aXBbRCs4XTtQLndyaXRlX3NoaWZ0KDEsZWVbMF0pLFAud3JpdGVfc2hpZnQoMSxlZVsxXSksUC53cml0ZV9zaGlmdCgxLGVlWzJdKSxQLndyaXRlX3NoaWZ0KDEsMCl9cmV0dXJuIFB9KFNyKSksU3I9SnQoaXApLHZlJiZTaShlZSwiVXNlc0VMRnMiLFpzKCExKSk7dmFyIFVlPWVlLmVu''@;'; put 'put ''ZCgpLFhlPUF1KCk7dmUmJlNpKFhlLCJDb3VudHJ5IixmdW5jdGlvbiBZRih3KXtyZXR1cm4gd3x8KHc9cHIoNCkpLHcud3JpdGVfc2hpZnQoMiwxKSx3LndyaXRlX3NoaWZ0KDIsMSksd30oKSksdmUmJkQuU3RyaW5ncyYmZnVuY3Rpb24gSHcodyxQLEQsZWUpe3ZhciBvZT1lZXx8KER8fFtd''@;'; put 'put ''KS5sZW5ndGh8fDA7aWYob2U8PTgyMjQpcmV0dXJuIFNpKHcsUCxELG9lKTt2YXIgZ2U9K1B8fCt0T1tQXTtpZighaXNOYU4oZ2UpKXtmb3IodmFyIF9lPUQucGFydHN8fFtdLHZlPTAsTWU9MCxqZT0wO2plKyhfZVt2ZV18fDgyMjQpPD04MjI0OylqZSs9X2VbdmVdfHw4MjI0LHZlKys7dmFy''@;'; put 'put ''IFVlPXcubmV4dCg0KTtmb3IoVWUud3JpdGVfc2hpZnQoMixnZSksVWUud3JpdGVfc2hpZnQoMixqZSksdy5wdXNoKEQuc2xpY2UoTWUsTWUramUpKSxNZSs9amU7TWU8b2U7KXtmb3IoKFVlPXcubmV4dCg0KSkud3JpdGVfc2hpZnQoMiw2MCksamU9MDtqZSsoX2VbdmVdfHw4MjI0KTw9ODIy''@;'; put 'put ''NDspamUrPV9lW3ZlXXx8ODIyNCx2ZSsrO1VlLndyaXRlX3NoaWZ0KDIsamUpLHcucHVzaChELnNsaWNlKE1lLE1lK2plKSksTWUrPWplfX19KFhlLCJTU1QiLGZ1bmN0aW9uIFNhKHcsUCl7dmFyIEQ9cHIoOCk7RC53cml0ZV9zaGlmdCg0LHcuQ291bnQpLEQud3JpdGVfc2hpZnQoNCx3LlVu''@;'; put 'put ''aXF1ZSk7Zm9yKHZhciBlZT1bXSxvZT0wO29lPHcubGVuZ3RoOysrb2UpZWVbb2VdPWUxKHdbb2VdLFApO3ZhciBnZT1NKFtEXS5jb25jYXQoZWUpKTtyZXR1cm4gZ2UucGFydHM9W0QubGVuZ3RoXS5jb25jYXQoZWUubWFwKGZ1bmN0aW9uKF9lKXtyZXR1cm4gX2UubGVuZ3RofSkpLGdlfShE''@;'; put 'put ''LlN0cmluZ3MsRCkpLFNpKFhlLCJFT0YiKTt2YXIgaXQ9WGUuZW5kKCksZnQ9QXUoKSxNdD0wLHV0PTA7Zm9yKHV0PTA7dXQ8dy5TaGVldE5hbWVzLmxlbmd0aDsrK3V0KU10Kz0odmU/MTI6MTEpKyh2ZT8yOjEpKncuU2hlZXROYW1lc1t1dF0ubGVuZ3RoO3ZhciB3dD1VZS5sZW5ndGgrTXQr''@;'; put 'put ''aXQubGVuZ3RoO2Zvcih1dD0wO3V0PHcuU2hlZXROYW1lcy5sZW5ndGg7Kyt1dClTaShmdCwiQm91bmRTaGVldDgiLG8xKHtwb3M6d3QsaHM6KGdlW3V0XXx8e30pLkhpZGRlbnx8MCxkdDowLG5hbWU6dy5TaGVldE5hbWVzW3V0XX0sRCkpLHd0Kz1QW3V0XS5sZW5ndGg7dmFyIGt0PWZ0LmVu''@;'; put 'put ''ZCgpO2lmKE10IT1rdC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJCUzggIitNdCsiICE9ICIra3QubGVuZ3RoKTt2YXIgVHQ9W107cmV0dXJuIFVlLmxlbmd0aCYmVHQucHVzaChVZSksa3QubGVuZ3RoJiZUdC5wdXNoKGt0KSxpdC5sZW5ndGgmJlR0LnB1c2goaXQpLGtsKFtUdF0pfWZ1bmN0''@;'; put 'put ''aW9uIEJ3KHcsUCl7dmFyIEQ9UHx8e307c3dpdGNoKEQuYmlmZnx8Mil7Y2FzZSA4OmNhc2UgNTpyZXR1cm4gZnVuY3Rpb24gS1YodyxQKXt2YXIgRD1QfHx7fSxlZT1bXTtwOChQJiZQLlBQSXx8OTYpLHcmJiF3LlNTRiYmKHcuU1NGPVMuZ2V0X3RhYmxlKCkpLHcmJncuU1NGJiYoUShTKSxT''@;'; put 'put ''LmxvYWRfdGFibGUody5TU0YpLEQucmV2c3NmPUllKHcuU1NGKSxELnJldnNzZlt3LlNTRls2NTUzNV1dPTAsRC5zc2Y9dy5TU0YpLHcuU3R5bGVzPXtGb250czpELkZvbnRzPVt7c3o6MTIsY29sb3I6e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOiJDYWxpYnJpIixmYW1pbHk6MixzY2hl''@;'; put 'put ''bWU6Im1pbm9yIn1dLEZpbGxzOkQuRmlsbHM9W3twYXR0ZXJuVHlwZToibm9uZSJ9LHtwYXR0ZXJuVHlwZToiZ3JheTEyNSJ9XSxCb3JkZXJzOkQuQm9yZGVycz1be31dLERYRjpELkRYRj13LlN0eWxlcyYmdy5TdHlsZXMuRFhGfHxbXX0saGYoRC5Gb250c1swXSksRC5TdHJpbmdzPVtdLEQu''@;'; put 'put ''U3RyaW5ncy5Db3VudD0wLEQuU3RyaW5ncy5VbmlxdWU9MCxjMT9ELnJldlN0cmluZ3M9bmV3IE1hcDooRC5yZXZTdHJpbmdzPXt9LEQucmV2U3RyaW5ncy5mb289W10sZGVsZXRlIEQucmV2U3RyaW5ncy5mb28pLCR3KEQpLEQuY2VsbFhmcz1bXSxELmNlbGxTdHlsZVhmcz1be25hbWU6Ik5v''@;'; put 'put ''cm1hbCJ9XSx3YyhELmNlbGxYZnMsRC5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2VuZXJhbDowfX0pLHcuUHJvcHN8fCh3LlByb3BzPXt9KTtmb3IodmFyIG9lPTA7b2U8dy5TaGVldE5hbWVzLmxlbmd0aDsrK29lKWVlW2VlLmxlbmd0aF09JFYob2UsRCx3KTtyZXR1cm4gZWUudW5zaGlm''@;'; put 'put ''dChpTyh3LGVlLEQpKSxrbChbZWVdKX0odyxQKTtjYXNlIDQ6Y2FzZSAzOmNhc2UgMjpyZXR1cm4gZnVuY3Rpb24gSWVlKHcsUCl7dmFyIEQ9UHx8e307bnVsbCE9bmUmJm51bGw9PUQuZGVuc2UmJihELmRlbnNlPW5lKTtmb3IodmFyIGVlPUF1KCksb2U9MCxnZT0wO2dlPHcuU2hlZXROYW1l''@;'; put 'put ''cy5sZW5ndGg7KytnZSl3LlNoZWV0TmFtZXNbZ2VdPT1ELnNoZWV0JiYob2U9Z2UpO2lmKDA9PW9lJiZELnNoZWV0JiZ3LlNoZWV0TmFtZXNbMF0hPUQuc2hlZXQpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrRC5zaGVldCk7cmV0dXJuIFNpKGVlLDQ9PUQuYmlmZj8xMDMz''@;'; put 'put ''OjM9PUQuYmlmZj81MjE6OSx4bSgwLDE2LEQpKSxmdW5jdGlvbiBEZWUodyxQLEQsZWUpe3ZhciBfZSxvZT1BcnJheS5pc0FycmF5KFApLGdlPVBpKFBbIiFyZWYiXXx8IkExIiksdmU9IiIsTWU9W107aWYoZ2UuZS5jPjI1NXx8Z2UuZS5yPjE2MzgzKXtpZihlZS5XVEYpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJSYW5nZSAiKyhQWyIhcmVmIl18fCJBMSIpKyIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6SVYxNjM4NCIpO2dlLmUuYz1NYXRoLm1pbihnZS5lLmMsMjU1KSxnZS5lLnI9TWF0aC5taW4oZ2UuZS5jLDE2MzgzKSxfZT1WbyhnZSl9Zm9yKHZhciBqZT1nZS5zLnI7amU8PWdlLmUucjsr''@;'; put 'put ''K2plKXt2ZT1WYShqZSk7Zm9yKHZhciBVZT1nZS5zLmM7VWU8PWdlLmUuYzsrK1VlKXtqZT09PWdlLnMuciYmKE1lW1VlXT1CYShVZSkpLF9lPU1lW1VlXSt2ZTt2YXIgWGU9b2U/KFBbamVdfHxbXSlbVWVdOlBbX2VdO1hlJiZWdyh3LFhlLGplLFVlKX19fShlZSx3LlNoZWV0c1t3LlNoZWV0''@;'; put 'put ''TmFtZXNbb2VdXSwwLEQpLFNpKGVlLDEwKSxlZS5lbmQoKX0odyxQKX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdHlwZSAiK0QuYm9va1R5cGUrIiBmb3IgQklGRiIpfXZhciBZYz1mdW5jdGlvbigpe3ZhciB3PXtjZW50ZXJDb250aW51b3VzOiJjZW50ZXIiLGp1c3RpZnk6ImxlZnQifTtm''@;'; put 'put ''dW5jdGlvbiBEKFhlLGl0KXt2YXIgZnQ9aXR8fHt9O251bGwhPW5lJiZudWxsPT1mdC5kZW5zZSYmKGZ0LmRlbnNlPW5lKTt2YXIgTXQ9ZnQuZGVuc2U/W106e30sdXQ9KFhlPVhlLnJlcGxhY2UoLzwhLS0uKj8tLT4vZywiIikpLm1hdGNoKC88dGFibGUvaSk7aWYoIXV0KXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+Iik7dmFyIHd0PVhlLm1hdGNoKC88XC90YWJsZS9pKSxIdD11dC5pbmRleCxrdD13dCYmd3QuaW5kZXh8fFhlLmxlbmd0aCxUdD1mdW5jdGlvbiBwdCh3LFAsRCl7aWYoTm58fCJzdHJpbmciPT10eXBlb2YgUClyZXR1''@;'; put 'put ''cm4gdy5zcGxpdChQKTtmb3IodmFyIGVlPXcuc3BsaXQoUCksb2U9W2VlWzBdXSxnZT0xO2dlPGVlLmxlbmd0aDsrK2dlKW9lLnB1c2goRCksb2UucHVzaChlZVtnZV0pO3JldHVybiBvZX0oWGUuc2xpY2UoSHQsa3QpLC8oOj88dHJbXj5dKj4pL2ksIjx0cj4iKSxZdD0tMSxnbj0wLHFuPTAs''@;'; put 'put ''Zm49MCxLbj17czp7cjoxZTcsYzoxZTd9LGU6e3I6MCxjOjB9fSx6bj1bXTtmb3IoSHQ9MDtIdDxUdC5sZW5ndGg7KytIdCl7dmFyIE9uPVR0W0h0XS50cmltKCksZXI9T24uc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO2lmKCI8dHIiIT1lcil7aWYoIjx0ZCI9PWVyfHwiPHRoIj09ZXIpe3Zh''@;'; put 'put ''ciB0cj1Pbi5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihrdD0wO2t0PHRyLmxlbmd0aDsrK2t0KXt2YXIgWW49dHJba3RdLnRyaW0oKTtpZihZbi5tYXRjaCgvPHRbZGhdL2kpKXtmb3IodmFyIGpyPVluLGxpPTA7IjwiPT1qci5jaGFyQXQoMCkmJihsaT1qci5pbmRleE9mKCI+IikpPi0xOylq''@;'; put 'put ''cj1qci5zbGljZShsaSsxKTtmb3IodmFyIEVpPTA7RWk8em4ubGVuZ3RoOysrRWkpe3ZhciBJaT16bltFaV07SWkucy5jPT1nbiYmSWkucy5yPFl0JiZZdDw9SWkuZS5yJiYoZ249SWkuZS5jKzEsRWk9LTEpfXZhciB0aT1jbihZbi5zbGljZSgwLFluLmluZGV4T2YoIj4iKSkpO2ZuPXRpLmNv''@;'; put 'put ''bHNwYW4/K3RpLmNvbHNwYW46MSwoKHFuPSt0aS5yb3dzcGFuKT4xfHxmbj4xKSYmem4ucHVzaCh7czp7cjpZdCxjOmdufSxlOntyOll0Kyhxbnx8MSktMSxjOmduK2ZuLTF9fSk7dmFyIGZyPXRpLnR8fHRpWyJkYXRhLXQiXXx8IiI7aWYoIWpyLmxlbmd0aCl7Z24rPWZuO2NvbnRpbnVlfWlm''@;'; put 'put ''KGpyPUJ1KGpyKSxLbi5zLnI+WXQmJihLbi5zLnI9WXQpLEtuLmUucjxZdCYmKEtuLmUucj1ZdCksS24ucy5jPmduJiYoS24ucy5jPWduKSxLbi5lLmM8Z24mJihLbi5lLmM9Z24pLGpyLmxlbmd0aCl7dmFyIERuPXt0OiJzIix2OmpyfTtmdC5yYXd8fCFqci50cmltKCkubGVuZ3RofHwicyI9''@;'; put 'put ''PWZyfHwoRG49JG4oanIsZnQpKSxmdC5kZW5zZT8oTXRbWXRdfHwoTXRbWXRdPVtdKSxNdFtZdF1bZ25dPURuKTpNdFtwaSh7cjpZdCxjOmdufSldPURuLGduKz1mbn19fX19ZWxzZXtpZigrK1l0LGZ0LnNoZWV0Um93cyYmZnQuc2hlZXRSb3dzPD1ZdCl7LS1ZdDticmVha31nbj0wfX1yZXR1''@;'; put 'put ''cm4gTXRbIiFyZWYiXT1WbyhLbiksem4ubGVuZ3RoJiYoTXRbIiFtZXJnZXMiXT16biksTXR9ZnVuY3Rpb24gb2UoWGUsaXQsZnQsTXQsdXQsd3Qpe3ZhciBUdCxIdD1YZVsiIW1lcmdlcyJdfHxbXSxrdD1bXSxZdD17c3R5bGU6W119LGduPSExO2Z1bmN0aW9uIHFuKE9pLFhvLGZvKXt2YXIg''@;'; put 'put ''Um89IiIsVG89MDtpZihUdFtPaV0pc3dpdGNoKFR0W09pXS5zdHlsZSl7Y2FzZSJ0aGluIjpjYXNlImhhaXIiOlJvPSJzb2xpZCIsVG89MTticmVhaztjYXNlIm1lZGl1bSI6Um89InNvbGlkIixUbz0yO2JyZWFrO2Nhc2UidGhpY2siOlJvPSJzb2xpZCIsVG89MzticmVhaztjYXNlImRvdWJs''@;'; put 'put ''ZSI6Um89ImRvdWJsZSIsVG89MzticmVhaztjYXNlImRvdHRlZCI6Y2FzZSJkYXNoRG90RG90IjpSbz0iZG90dGVkIixUbz0xO2JyZWFrO2Nhc2UibWVkaXVtRGFzaERvdERvdCI6Um89ImRvdHRlZCIsVG89MjticmVhaztjYXNlImRhc2hlZCI6Y2FzZSJkYXNoRG90IjpjYXNlInNsYW50RGFz''@;'; put 'put ''aERvdCI6Um89ImRhc2hlZCIsVG89MTticmVhaztjYXNlIm1lZGl1bURhc2hlZCI6Y2FzZSJtZWRpdW1EYXNoRG90IjpSbz0iZGFzaGVkIixUbz0yfWU6aWYoMD09VG8pe3N3aXRjaChPaSl7Y2FzZSJ0b3AiOi0tWG87YnJlYWs7Y2FzZSJsZWZ0IjotLWZvO2JyZWFrO2Nhc2UiYm90dG9tIjor''@;'; put 'put ''K1hvO2JyZWFrO2Nhc2UicmlnaHQiOisrZm99dmFyIG1pPVhvPj0wJiZmbz49MD9NdC5kZW5zZT8oWGVbWG9dfHxbXSlbZm9dOlhlW3BpKHtyOlhvLGM6Zm99KV06bnVsbDtpZihtaSl7aWYobWkucyYmbWkuc1t7dG9wOiJib3R0b20iLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCIscmlnaHQ6''@;'; put 'put ''ImxlZnQifVtPaV1dKWJyZWFrIGU7bWkucyYmbWkucy5mZ0NvbG9yJiYoVG89MSl9VHQuZmdDb2xvciYmKFRvPTEpLCFtaSYmZ24mJjA9PVRvJiYoVG89MSl9MCE9VG8mJlRvJiYoWXQuc3R5bGUucHVzaCgiYm9yZGVyLSIrT2krIi1zdHlsZToiKyhSb3x8InRyYW5zcGFyZW50IikpLFl0LnN0''@;'; put 'put ''eWxlLnB1c2goImJvcmRlci0iK09pKyItd2lkdGg6IitUbysicHgiKSwiIj09Um8/WXQuc3R5bGUucHVzaCgiYm9yZGVyLSIrT2krIi1jb2xvcjogdHJhbnNwYXJlbnQiKTpUdFtPaV0uY29sb3ImJlR0W09pXS5jb2xvci5yZ2ImJll0LnN0eWxlLnB1c2goImJvcmRlci0iK09pKyItY29sb3I6''@;'; put 'put ''IyIrVWMoVHRbT2ldLmNvbG9yLnJnYikpKX1mb3IodmFyIGZuPWl0LnMuYztmbjw9aXQuZS5jOysrZm4pe2Zvcih2YXIgS249MCx6bj0wLE9uPTA7T248SHQubGVuZ3RoOysrT24paWYoIShIdFtPbl0ucy5yPmZ0fHxIdFtPbl0ucy5jPmZufHxIdFtPbl0uZS5yPGZ0fHxIdFtPbl0uZS5jPGZu''@;'; put 'put ''KSl7aWYoSHRbT25dLnMucjxmdHx8SHRbT25dLnMuYzxmbil7S249LTE7YnJlYWt9S249SHRbT25dLmUuci1IdFtPbl0ucy5yKzEsem49SHRbT25dLmUuYy1IdFtPbl0ucy5jKzE7YnJlYWt9aWYoIShLbjwwKSl7dmFyIGVyPXBpKHtyOmZ0LGM6Zm59KSx0cj1NdC5kZW5zZT8oWGVbZnRdfHxb''@;'; put 'put ''XSlbZm5dOlhlW2VyXTt0cj9nbj0hMTooZ249ITAsdHI9e3Q6InoiLHM6e319KTt2YXIgWW49InoiPT10ci50PyIiOnRyLmh8fGxvKHRyLnd8fChtYyh0ciksdHIudyl8fCIiKTtpZihZdD17c3R5bGU6W119LFR0PXRyLnMpe3ZhciBqcj0xO2lmKCgic3VwZXIiPT1UdC52YWxpZ258fCJzdWIi''@;'; put 'put ''PT1UdC52YWxpZ24pJiYoanI9LjgzLFluPU1yKCJzcGFuIixZbix7c3R5bGU6InZlcnRpY2FsLWFsaWduOiAiK1R0LnZhbGlnbn0pKSxZdC5zdHlsZS5wdXNoKCJmb250LXdlaWdodDoiKyhUdC5ib2xkPzcwMDo0MDApKSxUdC5pdGFsaWMmJll0LnN0eWxlLnB1c2goImZvbnQtc3R5bGU6IGl0''@;'; put 'put ''YWxpYyIpLChUdC51bmRlcmxpbmV8fFR0LnN0cmlrZSkmJll0LnN0eWxlLnB1c2goInRleHQtZGVjb3JhdGlvbjoiKyhUdC51bmRlcmxpbmU/IiB1bmRlcmxpbmUiOiIiKSsoVHQuc3RyaWtlPyIgbGluZS10aHJvdWdoIjoiIikpLFR0LmNvbG9yJiZUdC5jb2xvci5yZ2ImJll0LnN0eWxlLnB1''@;'; put 'put ''c2goImNvbG9yOiAjIitVYyhUdC5jb2xvci5yZ2IpKSxUdC5uYW1lJiZZdC5zdHlsZS5wdXNoKCJmb250LWZhbWlseToiK1R0Lm5hbWUrIiwgc2Fucy1zZXJpZiIpLFR0LnN6JiZZdC5zdHlsZS5wdXNoKCJmb250LXNpemU6IitUdC5zeipqcisicHQiKSxudWxsIT09VHQucGF0dGVyblR5cGUm''@;'; put 'put ''JlR0LmZnQ29sb3ImJlR0LmZnQ29sb3IucmdiJiZZdC5zdHlsZS5wdXNoKCJiYWNrZ3JvdW5kLWNvbG9yOiAjIitVYyhUdC5mZ0NvbG9yLnJnYikpLFsidG9wIiwibGVmdCJdLmZvckVhY2goZnVuY3Rpb24oT2kpe3FuKE9pLGZ0LGZuKX0pLEtuPjF8fHpuPjEpe3ZhciBsaT1waSh7cjpmdCtL''@;'; put 'put ''bi0xLGM6Zm4rem4tMX0pLEVpPU10LmRlbnNlPyhYZVtmdCtLbi0xXXx8W10pW2ZuK3puLTFdOlhlW2xpXSx0aT1UdDtUdD1FaSYmRWkuc3x8VHQsWyJib3R0b20iLCJyaWdodCJdLmZvckVhY2goZnVuY3Rpb24oT2kpe3FuKE9pLGZ0LGZuKX0pLFR0PXRpfWVsc2VbImJvdHRvbSIsInJpZ2h0''@;'; put 'put ''Il0uZm9yRWFjaChmdW5jdGlvbihPaSl7cW4oT2ksZnQsZm4pfSk7aWYoVHQuYWxpZ25tZW50KXtpZihUdC5hbGlnbm1lbnQuaG9yaXpvbnRhbD9ZdC5zdHlsZS5wdXNoKCJ0ZXh0LWFsaWduOiAiKyh3W1R0LmFsaWdubWVudC5ob3Jpem9udGFsXXx8VHQuYWxpZ25tZW50Lmhvcml6b250YWwp''@;'; put 'put ''KToibiI9PXRyLnQmJll0LnN0eWxlLnB1c2goInRleHQtYWxpZ246IHJpZ2h0IiksVHQuYWxpZ25tZW50LnZlcnRpY2FsKXt2YXIgZnI9VHQuYWxpZ25tZW50LnZlcnRpY2FsO1l0LnN0eWxlLnB1c2goInZlcnRpY2FsLWFsaWduOiAiKygiY2VudGVyIj09ZnI/Im1pZGRsZSI6ZnIpKX1pZihU''@;'; put 'put ''dC5hbGlnbm1lbnQud3JhcFRleHQpWXQuc3R5bGUucHVzaCgid2hpdGUtc3BhY2U6IHByZS13cmFwIik7ZWxzZXt2YXIgRG49TXQuZGVuc2U/KFhlW2Z0XXx8W10pW2ZuKzFdOlhlW3BpKHtyOmZ0LGM6Zm4rMX0pXTtEbiYmInoiIT1Ebi50JiZZdC5zdHlsZS5wdXNoKCJ3aGl0ZS1zcGFjZTog''@;'; put 'put ''cHJlLXdyYXAiKX19ZWxzZSJuIj09dHIudCYmWXQuc3R5bGUucHVzaCgidGV4dC1hbGlnbjogcmlnaHQiKTt2YXIgdnI9KChYZVsiIWNvbHMiXXx8W10pW2ZuXXx8e30pLndweDtudWxsPT12ciYmKHZyPSgoWGVbIiFzaGVldEZvcm1hdCJdfHx7fSkuY29sfHx7fSkud3B4KX12YXIgcnI9MDtp''@;'; put 'put ''Zih6bjw9MSYmS248PTEmJihycj0oKFhlWyIhY29scyJdfHxbXSlbZm5dfHx7fSkud3B4KSYmWXQuc3R5bGUucHVzaCgid2lkdGg6ICIrcnIrInB4IiksWGVbIiFjb25kZm10Il0mJmdlKHRyLGZ0LGZuLFhlWyIhY29uZGZtdCJdLFl0LnN0eWxlLFhlKSwwPT1ZdC5zdHlsZS5sZW5ndGg/ZGVs''@;'; put 'put ''ZXRlIFl0LnN0eWxlOll0LnN0eWxlPVl0LnN0eWxlLmpvaW4oIjsiKSxNdC5jc3Mpe3ZhciB4bj11dC5pbmRleE9mKFl0LnN0eWxlKTstMT09eG4mJih1dC5wdXNoKFl0LnN0eWxlKSx4bj11dC5sZW5ndGgtMSksZGVsZXRlIFl0LnN0eWxlLFl0LmNsYXNzPSJzanMiKyh3dHx8IiIpKyItIit4''@;'; put 'put ''bn1Lbj4xJiYoWXQucm93c3Bhbj1Lbiksem4+MSYmKFl0LmNvbHNwYW49em4pLE10LmVkaXRhYmxlP1luPSc8c3BhbiBjb250ZW50ZWRpdGFibGU9InRydWUiPicrWW4rIjwvc3Bhbj4iOnRyJiYoWXRbImRhdGEtdCJdPXRyJiZ0ci50fHwieiIsbnVsbCE9dHIudiYmKFl0WyJkYXRhLXYiXT10''@;'; put 'put ''ci52KSxudWxsIT10ci56JiYoWXRbImRhdGEteiJdPXRyLnopKSxZdC5pZD0oTXQuaWR8fCJzanMiKSsiLSIrZXIsa3QucHVzaChNcigidGQiLFluLFl0KSl9fXZhciBDaSxtcj17c3R5bGU6W119OyhDaT1YZVsiIXNoZWV0Rm9ybWF0Il0pJiZDaS5yb3cmJihTcChDaS5yb3cpLENpLnJvdy5o''@;'; put 'put ''cHgmJihtci5zdHlsZS5wdXNoKFsiaGVpZ2h0IixDaS5yb3cuaHB4KyJweCJdKSxtci5oZWlnaHQ9TWF0aC5yb3VuZChDaS5yb3cuaHB4KSkpO3ZhciB6cj1YZVsiIXJvd3MiXTtpZih6ciYmenJbZnRdKXt2YXIgemk9enJbZnRdO3ppLmhweCYmKG1yLnN0eWxlLnB1c2goWyJoZWlnaHQiLCt6''@;'; put 'put ''aS5ocHgrInB4Il0pLG1yLmhlaWdodD1NYXRoLnJvdW5kKHppLmhweCkpLHppLmhpZGRlbiYmbXIuc3R5bGUucHVzaChbImRpc3BsYXkiLCJub25lIl0pfXZhciB3bz1bXTtyZXR1cm4gbXIuc3R5bGU9bXIuc3R5bGUucmV2ZXJzZSgpLmZpbHRlcihmdW5jdGlvbihPaSl7cmV0dXJuISh3by5p''@;'; put 'put ''bmRleE9mKE9pWzBdKT4tMXx8KHdvLnB1c2goT2lbMF0pLDApKX0pLm1hcChmdW5jdGlvbihPaSl7cmV0dXJuIE9pWzBdKyI6IitPaVsxXX0pLDA9PW1yLnN0eWxlLmxlbmd0aD9kZWxldGUgbXIuc3R5bGU6bXIuc3R5bGU9bXIuc3R5bGUuam9pbigiOyIpLE1yKCJ0ciIsa3Quam9pbigiIiks''@;'; put 'put ''bXIpfWZ1bmN0aW9uIGdlKFhlLGl0LGZ0LE10LHV0LHd0KXtNdC5mb3JFYWNoKGZ1bmN0aW9uKEh0KXtpZihIdC5fcmVmfHwoSHQuX3JlZj0ic3RyaW5nIj09dHlwZW9mIEh0LnJlZj9LYShIdC5yZWYpOkh0LnJlZiksIShIdC5fcmVmLnMuYz5mdHx8SHQuX3JlZi5lLmM8ZnR8fEh0Ll9yZWYu''@;'; put 'put ''cy5yPml0fHxIdC5fcmVmLmUucjxpdHx8InNjYWxlIiE9PUh0LnQpKXtpZigibiIhPVhlLnQpcmV0dXJuO3ZhciBrdDtpZihudWxsPT1IdC5fbWluKXtIdC5fdmFsdWVzPVtdO2Zvcih2YXIgVHQ9SHQuX3JlZi5zLnI7VHQ8PUh0Ll9yZWYuZS5yOysrVHQpZm9yKHZhciBZdD1IdC5fcmVmLnMu''@;'; put 'put ''YztZdDw9SHQuX3JlZi5lLmM7KytZdCl7dmFyIGduPUFycmF5LmlzQXJyYXkod3QpPyh3dFtUdF18fFtdKVtZdF06d3RbcGkoe3I6VHQsYzpZdH0pXTtnbiYmIm4iPT1nbi50JiZIdC5fdmFsdWVzLnB1c2goZ24udil9aWYoSHQuX3ZhbHVlcy5zb3J0KGZ1bmN0aW9uKHFuLGZuKXtyZXR1cm4g''@;'; put 'put ''cW4tZm59KSxIdC5fbWluPUh0Ll92YWx1ZXNbMF0sSHQuX21heD1IdC5fdmFsdWVzLnNsaWNlKC0xKVswXSxIdC5fYmFuZD1IdC5fbWF4LUh0Ll9taW4sSHQuY21pZCl7c3dpdGNoKEh0LmNtaWQudCl7Y2FzZSJudW0iOkh0Ll9taWQ9SHQuY21pZC52O2JyZWFrO2Nhc2UicGVyY2VudCI6SHQu''@;'; put 'put ''X21pZD1IdC5jbWlkLnYvMTAwKkh0Ll9iYW5kK0h0Ll9taW47YnJlYWs7Y2FzZSJwZXJjZW50aWxlIjpIdC5fbWlkPWZ1bmN0aW9uIHBuKHcsUCl7aWYoMD09UClyZXR1cm4gd1swXTtpZigxMDA9PVApcmV0dXJuIHdbdy5sZW5ndGgtMV07dmFyIGVlPVAvMTAwKih3Lmxlbmd0aC0xKSxvZT1l''@;'; put 'put ''ZS1NYXRoLmZsb29yKGVlKTtyZXR1cm4gb2Uqd1tNYXRoLmNlaWwoZWUpXSsoMS1vZSkqd1tNYXRoLmZsb29yKGVlKV19KEh0Ll92YWx1ZXMsSHQuY21pZC52KX1IdC5fYmFuZGg9SHQuX21heC1IdC5fbWlkLEh0Ll9iYW5kbD1IdC5fbWlkLUh0Ll9taW59fShrdD1IdC5jbWlkP1hlLnY+PUh0''@;'; put 'put ''Ll9taWQ/bV8oSHQuY21pZC5jb2xvcixIdC5jbWF4LmNvbG9yLChYZS52LUh0Ll9taWQpL0h0Ll9iYW5kaCk6bV8oSHQuY21pbi5jb2xvcixIdC5jbWlkLmNvbG9yLChYZS52LUh0Ll9taW4pL0h0Ll9iYW5kbCk6bV8oSHQuY21pbi5jb2xvcixIdC5jbWF4LmNvbG9yLChYZS52LUh0Ll9taW4p''@;'; put 'put ''L0h0Ll9iYW5kKSkmJnV0LnB1c2goImJhY2tncm91bmQtY29sb3I6ICMiK2t0KX19KX1mdW5jdGlvbiBfZShYZSxpdCl7dmFyIGZ0PXtzcGFuOml0fHwxLHN0eWxlOiIifSxNdD1bXTtyZXR1cm4gWGUmJlhlLndweCYmKGZ0LndpZHRoPU1hdGgucm91bmQoNCpYZS53cHgvMyksTXQucHVzaCgi''@;'; put 'put ''d2lkdGg6IisoWGUud3B4fHwwKSsicHgiKSksTXQubGVuZ3RoPjAmJihmdC5zdHlsZT1NdC5qb2luKCI7IikpLE1yKCJjb2wiLG51bGwsZnQpfWZ1bmN0aW9uIHZlKFhlLGl0LGZ0KXt2YXIgTXQ9e2JvcmRlcjowLGNlbGxwYWRkaW5nOjAsY2VsbHNwYWNpbmc6MCxzdHlsZTpbImJvcmRlci1j''@;'; put 'put ''b2xsYXBzZTpjb2xsYXBzZSIsInRhYmxlLWxheW91dDpmaXhlZCJdLmpvaW4oIjsiKX07ZnQmJmZ0LmlkJiYoTXQuaWQ9ZnQuaWQpO3ZhciB1dD1YZVsiIWNvbHMiXSx3dD1YZVsiIXNoZWV0Rm9ybWF0Il07aWYoWGUmJnV0KXtmb3IodmFyIEh0PTAsVHQ9aXQucy5jO1R0PD1pdC5lLmM7KytU''@;'; put 'put ''dCl7dmFyIFl0PXV0W1R0XTtIdCs9WXQmJll0LndweD9ZdC53cHg6d3QmJnd0LmNvbCYmd3QuY29sLndweD93dC5jb2wud3B4OjUzfU10LnN0eWxlKz0iO3dpZHRoOiIrSHQrInB4In12YXIgcW4sZ249WyI8dGFibGUiK0ZsKE10KSsiPiJdO2lmKGduLnB1c2goIjxzdHlsZT50ZCB7IHBhZGRp''@;'; put 'put ''bmctdG9wOiAxcHg7IHBhZGRpbmctcmlnaHQ6MXB4OyBwYWRkaW5nLWxlZnQ6MXB4OyB0ZXh0LWFsaWduOmdlbmVyYWw7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgYm9yZGVyOjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiIrKGZ0JiZmdC5ncmlkY29sb3I/ZnQuZ3JpZGNvbG9yOmhuKFhlWyIh''@;'; put 'put ''Z3JpZGxpbmVzIl0pPyJ0cmFuc3BhcmVudCI6ImJsYWNrIikrIjsgd2hpdGUtc3BhY2U6bm93cmFwOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfTwvc3R5bGU+IiksZ24ucHVzaCgnPGNvbGdyb3VwIHNwYW49IicrKGl0LmUuYy1pdC5zLmMrMSkrJyI+JyksdXQpe2Zvcih2YXIgZm49aXQucy5j''@;'; put 'put ''O2ZuPE1hdGgubWluKHV0Lmxlbmd0aCxpdC5lLmMrMSk7KytmbikhKHFuPXV0W2ZuXSkmJnd0JiZ3dC5jb2wmJihxbj13dC5jb2wpLHFufHwocW49e3dweDo1M30pLGduLnB1c2goX2UocW4sMSkpO2l0LmUuYy1pdC5zLmMrMT51dC5sZW5ndGgmJihxbj1udWxsLHd0JiZ3dC5jb2wmJihxbj13''@;'; put 'put ''dC5jb2wpLHFufHwocW49e3dweDo1M30pLGduLnB1c2goX2UocW4saXQuZS5jLWl0LnMuYysxLXV0Lmxlbmd0aCkpKX1lbHNlIHFuPW51bGwsd3QmJnd0LmNvbCYmKHFuPXd0LmNvbCkscW58fChxbj17d3B4OjUzfSksZ24ucHVzaChfZShxbixpdC5lLmMtaXQucy5jKzEpKTtyZXR1cm4gZ24u''@;'; put 'put ''cHVzaCgiPC9jb2xncm91cD4iKSxnbi5qb2luKCIiKX12YXIgTWU9JzxodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+PHRpdGxlPlNoZWV0SlMgVGFibGUgRXhwb3J0PC90aXRsZT48L2hlYWQ+PGJvZHk+JyxqZT0iPC9ib2R5PjwvaHRtbD4iO3JldHVybnt0b193b3JrYm9vazpm''@;'; put 'put ''dW5jdGlvbiBlZShYZSxpdCl7cmV0dXJuIFpmKEQoWGUsaXQpLGl0KX0sdG9fc2hlZXQ6RCxfcm93Om9lLEJFR0lOOk1lLEVORDpqZSxfcHJlYW1ibGU6dmUsaHRtbF90b19yczpmdW5jdGlvbiBQKFhlKXt2YXIgaXQ9W10sZnQ9e30sTXQ9MDtyZXR1cm4gWGUucmVwbGFjZSgvPChcLz8pKFte''@;'; put 'put ''XHM/PiFcLzpdKjp8KShbXlxzPz46XC9dKylbXj5dKj4vZ20sZnVuY3Rpb24odXQsd3QsSHQsa3QsVHQpe3ZhciBnbj1qbihjbih1dClbMF0pLnJlcGxhY2UoL1s8XC8+XS9nLCIiKSxxbj1YZS5zbGljZShNdCxUdCkucmVwbGFjZSgvXHMvZywiICIpO3N3aXRjaChxbi5sZW5ndGg+MCYmKGl0''@;'; put 'put ''LnB1c2goe3Q6InMiLHY6cW4sczpmdH0pLGZ0PUp0KGZ0KSksZ24udG9Mb3dlckNhc2UoKSl7Y2FzZSJiIjoiLyIhPXd0P2Z0LmJvbGQ9ITA6ZGVsZXRlIGZ0LmJvbGQ7YnJlYWs7Y2FzZSJpIjoiLyIhPXd0P2Z0Lml0YWxpYz0hMDpkZWxldGUgZnQuaXRhbGljO2JyZWFrO2Nhc2UidSI6Ii8i''@;'; put 'put ''IT13dD9mdC51bmRlcmxpbmU9MTpkZWxldGUgZnQudW5kZXJsaW5lO2JyZWFrO2Nhc2UicyI6Ii8iIT13dD9mdC5zdHJpa2U9ITA6ZGVsZXRlIGZ0LnN0cmlrZX1yZXR1cm4gTXQ9VHQrdXQubGVuZ3RoLHV0fSksaXR9LGZyb21fc2hlZXQ6ZnVuY3Rpb24gVWUoWGUsaXQpe3ZhciBmdD1pdHx8''@;'; put 'put ''e30sdXQ9bnVsbCE9ZnQuZm9vdGVyP2Z0LmZvb3RlcjpqZSx3dD1bbnVsbCE9ZnQuaGVhZGVyP2Z0LmhlYWRlcjpNZSwiIl0sSHQ9W10sa3Q9KG5ldyBEYXRlKS52YWx1ZU9mKCk7WGV8fChYZT17fSksWGVbIiFyZWYiXXx8KFhlWyIhcmVmIl09IkExOkExIik7dmFyIFR0PUthKFhlWyIhcmVm''@;'; put 'put ''Il0pO2lmKGZ0LmRlbnNlPUFycmF5LmlzQXJyYXkoWGUpLGZ0LnNraXBlbmQpe3ZhciBZdD1UdC5lLnI7ZTpmb3IoO1l0Pj1UdC5zLnI7LS1ZdClmb3IodmFyIGduPVR0LmUuYztnbj49VHQucy5jOy0tZ24paWYobnVsbCE9KChmdC5kZW5zZT8oWGVbWXRdfHxbXSlbZ25dOlhlW3BpKHtyOll0''@;'; put 'put ''LGM6Z259KV0pfHx7fSkudilicmVhayBlO1R0LmUucj1ZdDt2YXIgcW49VHQuZS5jO2U6Zm9yKDtxbj49VHQucy5jOy0tcW4pZm9yKHZhciBmbj1UdC5lLnI7Zm4+PVR0LnMucjstLWZuKWlmKG51bGwhPSgoZnQuZGVuc2U/KFhlW2ZuXXx8W10pW3FuXTpYZVtwaSh7cjpmbixjOnFufSldKXx8''@;'; put 'put ''e30pLnYpYnJlYWsgZTtUdC5lLmM9cW59d3QucHVzaCh2ZShYZSxUdCxmdCkpO2Zvcih2YXIgS249VHQucy5yO0tuPD1UdC5lLnI7KytLbil3dC5wdXNoKG9lKFhlLFR0LEtuLGZ0LEh0LGt0KSk7cmV0dXJuIHd0LnB1c2goIjwvdGFibGU+Iit1dCksZnQuY3NzJiYod3RbMV09IjxzdHlsZT5c''@;'; put 'put ''biIrSHQubWFwKGZ1bmN0aW9uKHpuLE9uKXtyZXR1cm4iLnNqcyIra3QrIi0iK09uKyIgeyIrem4rIn0ifSkuam9pbigiXG4iKSsiPC9zdHlsZT4iKSx3dC5qb2luKCIiKX19fSgpO2Z1bmN0aW9uIE4yKHcsUCxEKXt2YXIgZWU9e307aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGU+InUiKXJl''@;'; put 'put ''dHVybiBlZTt2YXIgb2U9Z2V0Q29tcHV0ZWRTdHlsZSh3KTtpZigoNzAwPT1vZVsiZm9udC13ZWlnaHQiXXx8ImJvbGQiPT1vZVsiZm9udC13ZWlnaHQiXSkmJihlZS5ib2xkPSEwKSwob2VbImZvbnQtc3R5bGUiXXx8IiIpLm1hdGNoKC9pdGFsaWMvKSYmKGVlLml0YWxpYz0hMCksKG9lWyJ0''@;'; put 'put ''ZXh0LWRlY29yYXRpb24iXXx8IiIpLm1hdGNoKC91bmRlcmxpbmUvKSYmKGVlLnVuZGVybGluZT0xKSwob2VbInRleHQtZGVjb3JhdGlvbiJdfHwiIikubWF0Y2goL2xpbmUtdGhyb3VnaC8pJiYoZWUuc3RyaWtlPTEpLHBhcnNlSW50KG9lWyJmb250LXNpemUiXSkmJihlZS5zej1wYXJzZUZs''@;'; put 'put ''b2F0KG9lWyJmb250LXNpemUiXSkqKG9lWyJmb250LXNpemUiXS5tYXRjaCgvcHgvKT8zLzQ6MSkpLG9lWyJmb250LWZhbWlseSJdJiYoZWUubmFtZT1vZVsiZm9udC1mYW1pbHkiXS5zcGxpdCgiLCIpWzBdLnJlcGxhY2UoL1xzKiJccyovZywiIikpLG9lLmNvbG9yKXt2YXIgZ2U9UG0ob2Uu''@;'; put 'put ''Y29sb3IudG9Mb3dlckNhc2UoKSwhMCk7Z2U+PTAmJihlZS5jb2xvcj17cmdiOmdlfSl9c3dpdGNoKG9lWyJ0ZXh0LXRyYW5zZm9ybSJdJiYoZWUudGV4dF90cmFuc2Zvcm09b2VbInRleHQtdHJhbnNmb3JtIl0udG9Mb3dlckNhc2UoKSksIm5vbmUiIT0ob2VbInRleHQtc2hhZG93Il18fCJu''@;'; put 'put ''b25lIikmJihlZS5zaGFkb3c9ITApLG9lWyJ0ZXh0LWFsaWduIl0pe2Nhc2UiY2VudGVyIjplZS5hbGlnbm1lbnQ9e2hvcml6b250YWw6ImNlbnRlciJ9O2JyZWFrO2Nhc2UicmlnaHQiOmVlLmFsaWdubWVudD17aG9yaXpvbnRhbDoicmlnaHQifTticmVhaztjYXNlImxlZnQiOmVlLmFsaWdu''@;'; put 'put ''bWVudD17aG9yaXpvbnRhbDoibGVmdCJ9O2JyZWFrO2Nhc2UianVzdGlmeSI6ZWUuYWxpZ25tZW50PXtob3Jpem9udGFsOiJqdXN0aWZ5In19c3dpdGNoKG9lWyJ2ZXJ0aWNhbC1hbGlnbiJdKXtjYXNlInRvcCI6Y2FzZSJtaWRkbGUiOmNhc2UiYm90dG9tIjplZS5hbGlnbm1lbnR8fChlZS5h''@;'; put 'put ''bGlnbm1lbnQ9e30pLGVlLmFsaWdubWVudC52ZXJ0aWNhbD1vZVsidmVydGljYWwtYWxpZ24iXSwibWlkZGxlIj09ZWUuYWxpZ25tZW50LnZlcnRpY2FsJiYoZWUuYWxpZ25tZW50LnZlcnRpY2FsPSJjZW50ZXIiKTticmVhaztjYXNlInN1YiI6Y2FzZSJzdXBlciI6ZWUudmFsaWduPW9lWyJ2''@;'; put 'put ''ZXJ0aWNhbC1hbGlnbiJdLGVlLnN6JiYoZWUuc3ovPS44Myl9dmFyIF9lPVAmJmdldENvbXB1dGVkU3R5bGUoUCk7cmV0dXJuIF9lJiZEJiZQJiZbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24odmUpe3ZhciBNZT12ZS5jaGFyQXQoMCkudG9VcHBlckNh''@;'; put 'put ''c2UoKSt2ZS5zbGljZSgxKSxqZT1fZVsiYm9yZGVyLSIrdmUrIi1zdHlsZSJdO2lmKCgibm9uZSI9PWplfHwhamUpJiYoamU9X2VbImJvcmRlciIrTWUrIlN0eWxlIl0pLCJub25lIiE9amUmJmplKXt2YXIgVWU9cGFyc2VJbnQoX2VbImJvcmRlci0iK3ZlKyItd2lkdGgiXXx8X2VbImJvcmRl''@;'; put 'put ''ciIrTWUrIldpZHRoIl0sMTApLFhlPSJ0aGluIjtpZihVZT4wKXtzd2l0Y2goamUpe2Nhc2UiZG91YmxlIjpYZT0iZG91YmxlIjticmVhaztjYXNlImRhc2hlZCI6WGU9VWU+PTI/Im1lZGl1bURhc2hlZCI6ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOlhlPVVlPj0yPyJtZWRpdW1EYXNo''@;'; put 'put ''RG90RG90IjoiZG90dGVkIjticmVhaztjYXNlInNvbGlkIjpYZT1VZT49Mz8idGhpY2siOlVlPj0yPyJtZWRpdW0iOiJ0aGluIn1pZihlZVt2ZV09e3N0eWxlOlhlfSxfZVsiYm9yZGVyLSIrdmUrIi1jb2xvciJdfHxfZVsiYm9yZGVyIitNZSsiQ29sb3IiXSl7dmFyIGl0PVBtKChfZVsiYm9y''@;'; put 'put ''ZGVyLSIrdmUrIi1jb2xvciJdfHxfZVsiYm9yZGVyIitNZSsiQ29sb3IiXSkudG9Mb3dlckNhc2UoKSwhMCk7aXQ+PTAmJihlZVt2ZV0uY29sb3I9e3JnYjppdH0pfX19fSksZWV9ZnVuY3Rpb24gancodyxQLEQpe3ZhciBlZT13LmNoaWxkTm9kZXM7aWYoMT09dy5ub2RlVHlwZSlzd2l0Y2go''@;'; put 'put ''dy50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe2Nhc2UicCI6UC5sZW5ndGg+MCYmUC5wdXNoKHt0OiJ0Iix2OiJcbiIsczpEfSk7YnJlYWs7Y2FzZSJzZWxlY3QiOnJldHVybiBmdW5jdGlvbiBYVih3LFAsRCl7UC5wdXNoKHt0OiJ0Iix2OncuY2hpbGRyZW5bdy5zZWxlY3RlZEluZGV4XS5pbm5l''@;'; put 'put ''clRleHQsczpEfSl9KHcsUCxEKX1pZihlZS5sZW5ndGg+MCl7dmFyIG9lPU4yKHcsbnVsbCwhMSk7RCYmKEQudW5kZXJsaW5lJiYob2UudW5kZXJsaW5lPUQudW5kZXJsaW5lKSxELnN0cmlrZSYmKG9lLnN0cmlrZT1ELnN0cmlrZSkpO2Zvcih2YXIgZ2U9MDtnZTxlZS5sZW5ndGg7KytnZSl7''@;'; put 'put ''dHJ5e2lmKGVlW2dlXS5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpY29udGludWV9Y2F0Y2h7fWp3KGVlW2dlXSxQLG9lKX1kZWxldGUgb2UudGV4dF90cmFuc2Zvcm19ZWxzZSBpZigzPT13Lm5vZGVUeXBlKXt2YXIgX2U9e3Q6InQiLHY6dy5ub2RlVmFsdWUucmVwbGFjZSgvXltcbiBd''@;'; put 'put ''Ky8sIiAiKS5yZXBsYWNlKC9bXG4gXSskLywiICIpLHM6RH07c3dpdGNoKEQudGV4dF90cmFuc2Zvcm0pe2Nhc2UidXBwZXJjYXNlIjpfZS52PV9lLnYudG9VcHBlckNhc2UoKTticmVhaztjYXNlImxvd2VyY2FzZSI6X2Uudj1fZS52LnRvTG93ZXJDYXNlKCl9KFAubGVuZ3RoPjB8fF9lLnYm''@;'; put 'put ''JiIgIiE9X2UudikmJlAucHVzaChfZSl9ZWxzZSAxPT13Lm5vZGVUeXBlJiYiYnIiPT09dy50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJlAucHVzaCh7dDoidCIsdjoiXG4iLHM6RH0pfWZ1bmN0aW9uIHp3KHcsUCxELGVlLG9lKXt2YXIgX2UsZ2U9dy5pbm5lckhUTUw7aWYodHlwZW9mIGdldENv''@;'; put 'put ''bXB1dGVkU3R5bGU8InUiKXN3aXRjaChfZT1nZXRDb21wdXRlZFN0eWxlKHcpLChfZVsid2hpdGUtc3BhY2UiXXx8IiIpLm1hdGNoKC9wcmUvKSYmKGdlPWdlLnJlcGxhY2UoL1xuL2csIjxici8+IikpLChfZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXBw''@;'; put 'put ''ZXJjYXNlIjpnZT1nZS50b1VwcGVyQ2FzZSgpO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpnZT1nZS50b0xvd2VyQ2FzZSgpfXZhciB2ZT1mdW5jdGlvbiBxVih3LFAsRCxlZSl7dmFyIG9lPXt0OiJzIix2OlB9LGdlPSIiO2lmKHcpe0Q9dy5nZXRBdHRyaWJ1dGUoImRhdGEtdCIpfHx3LmdldEF0''@;'; put 'put ''dHJpYnV0ZSgidCIpO3ZhciBfZT13LmdldEF0dHJpYnV0ZSgiZGF0YS12Iil8fHcuZ2V0QXR0cmlidXRlKCJ2Iik7aWYobnVsbCE9KGdlPXcuZ2V0QXR0cmlidXRlKCJkYXRhLXoiKXx8dy5nZXRBdHRyaWJ1dGUoInoiKSkmJihvZS56PWdlKSxudWxsIT1EJiZudWxsIT1fZSlyZXR1cm4gb2Uu''@;'; put 'put ''dD1ELG9lLnY9X2Usb2V9cmV0dXJuIG51bGwhPVAmJigwPT1QLmxlbmd0aD9vZS50PUR8fCJ6IjplZS5yYXd8fCFQLnRyaW0oKS5sZW5ndGh8fCJzIj09RHx8KG9lPSRuKFAsZWUpKSksZ2UmJihvZS56PWdlKSxvZX0odyxCdShnZSksRCxvZSk7aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGU8''@;'; put 'put ''InUiJiYodmUucz1OMih3LFAsb2UuYm9yZGVycyksZGVsZXRlIHZlLnMudGV4dF90cmFuc2Zvcm0sdy5jaGlsZE5vZGVzLmxlbmd0aD4xfHwxPT13LmNoaWxkTm9kZXMubGVuZ3RoJiYzIT13LmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpKXN3aXRjaChqdyh3LHZlLlI9W10sbnVsbCksdmUuUiYm''@;'; put 'put ''dmUuUlt2ZS5SLmxlbmd0aC0xXSYmIlxuIj09dmUuUlt2ZS5SLmxlbmd0aC0xXS52JiZ2ZS5SLmxlbmd0aC0tLChfZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXBwZXJjYXNlIjp2ZS5SLmZvckVhY2goZnVuY3Rpb24oaXQpe2l0LnY9aXQudi50b1VwcGVy''@;'; put 'put ''Q2FzZSgpfSk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOnZlLlIuZm9yRWFjaChmdW5jdGlvbihpdCl7aXQudj1pdC52LnRvTG93ZXJDYXNlKCl9KX1pZigicyI9PXZlLnQpe3ZhciBNZT12ZS52Lm1hdGNoKC9cbi8pOyFNZSYmdmUuUiYmdmUuUi5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGl0LnYmJml0LnYubWF0Y2goL1xuLykmJihNZT0hMCl9KSwicyI9PXZlLnQmJk1lJiYodmUuc3x8KHZlLnM9e30pLHZlLnMuYWxpZ25tZW50fHwodmUucy5hbGlnbm1lbnQ9e30pLHZlLnMuYWxpZ25tZW50LndyYXBUZXh0PSEwKX1pZihQKXt2YXIgamU9IiIsVWU9UC5nZXRF''@;'; put 'put ''bGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKFVlJiZVZS5sZW5ndGgpZm9yKHZhciBYZT0wO1hlPFVlLmxlbmd0aCYmKCFVZVtYZV0uaGFzQXR0cmlidXRlKCJocmVmIil8fCIjIj09KGplPVVlW1hlXS5nZXRBdHRyaWJ1dGUoImhyZWYiKSkuY2hhckF0KDApKTsrK1hlKTtqZSYmIiMiIT1qZS5j''@;'; put 'put ''aGFyQXQoMCkmJih2ZS5sPXtUYXJnZXQ6amV9KX1yZXR1cm4gdmV9ZnVuY3Rpb24gYU8odyxQLEQpe3ZhciBvZSxlZT1QLnJvd3M7aWYoIWVlKXtpZihEJiZudWxsIT1ELm9yaWdpbil0aHJvdyJVbnN1cHBvcnRlZCBvcmlnaW4gd2hlbiAiK1AudGFnTmFtZSsiIGlzIG5vdCBhIFRBQkxFIjty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gb08odyxQLEQpe0Q9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShEfHx7fSkpO3ZhciBnZT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O3dbIiFtZXJnZXMiXXx8KHdbIiFtZXJnZXMiXT1bXSk7Zm9yKHZhciB2ZSxfZT1QLmNoaWxkcmVuLE1lPTAsamU9MDtqZTxf''@;'; put 'put ''ZS5sZW5ndGg7KytqZSl7dmFyIGl0LFVlPV9lW2plXSxYZT0iIjt0cnl7dHlwZW9mIGdldENvbXB1dGVkU3R5bGU8InUiP2l0PWdldENvbXB1dGVkU3R5bGU6VWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyYmImZ1bmN0aW9uIj09dHlwZW9mIFVlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZp''@;'; put 'put ''ZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGl0PVVlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl9Y2F0Y2h7fWlmKCFpdHx8Im5vbmUiIT1pdChVZSkuZGlzcGxheSlzd2l0Y2goVWUudGFnTmFtZS50b1VwcGVyQ2FzZSgpKXtjYXNlIlRBQkxFIjpNZT0tMSx3WyIh''@;'; put 'put ''cmVmIl0mJihELm9yaWdpbj0tMSksYU8odyxVZSxEKTticmVhaztjYXNlIkJSIjpjYXNlIkhSIjpNZT0tMSx3WyIhcmVmIl0/KCsrKGdlPUthKHdbIiFyZWYiXSkpLmUucix3WyIhcmVmIl09Vm8oZ2UpKTp3WyIhcmVmIl09IkExOkExIjticmVhaztjYXNlIkRJViI6Y2FzZSJQIjpjYXNlIkgx''@;'; put 'put ''IjpjYXNlIkgyIjpjYXNlIkgzIjpjYXNlIkg0IjpjYXNlIkg1IjpjYXNlIkg2IjpNZT0tMSx2ZT16dyhVZSxudWxsLCIiLDAsRCksd1siIXJlZiJdPyhELm9yaWdpbj0tMSx2MCh3LFtbdmVdXSxEKSk6KHdbIiFyZWYiXT0iQTEiLEFycmF5LmlzQXJyYXkodyk/KHdbMF18fCh3WzBdPVtdKSx3''@;'; put 'put ''WzBdWzBdPXZlKTp3LkExPXZlKSx3WyIhcm93cyJdfHwod1siIXJvd3MiXT1bXSksaXQmJihnZT1LYSh3WyIhcmVmIl0pLChYZT1pdChVZSkuaGVpZ2h0KSYmImF1dG8iIT1YZSYmKHdbIiFyb3dzIl1bZ2UuZS5yXT17aHB0OnBhcnNlSW50KFhlLDEwKX0pKTticmVhaztjYXNlIlNQQU4iOmNh''@;'; put 'put ''c2UiQSI6Y2FzZSJCIjpjYXNlIkVNIjpjYXNlIkkiOmNhc2UiRk9OVCI6Y2FzZSJTIjpjYXNlIlNVQiI6Y2FzZSJTVVAiOmNhc2UiVSI6dmU9encoVWUsbnVsbCwiIiwwLEQpLHdbIiFyZWYiXXx8KHdbIiFyZWYiXT0iQTE6QTEiKSx2MCh3LFtbdmVdXSx7b3JpZ2luOnBpKHtyOihNZTwwPzE6''@;'; put 'put ''MCkrKGdlPUthKHdbIiFyZWYiXSkpLmUucixjOisrTWV9KX0pO2JyZWFrO2Nhc2UiREwiOmNhc2UiVUwiOmNhc2UiT0wiOk1lPS0xLGNvbnNvbGUuZXJyb3IoIkhUTUwgQ29udmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IGxpc3QgZWxlbWVudCAiK1VlLnRhZ05hbWUudG9VcHBlckNhc2UoKSk7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDpNZT0tMSxjb25zb2xlLmVycm9yKCJTa2lwcGluZyAiK1VlLnRhZ05hbWUudG9VcHBlckNhc2UoKSl9fXJldHVybiB3fSh3LFAsRCl9dHJ5e3R5cGVvZiBnZXRDb21wdXRlZFN0eWxlPCJ1Ij9vZT1nZXRDb21wdXRlZFN0eWxlOlAub3duZXJEb2N1bWVudC5kZWZhdWx0''@;'; put 'put ''VmlldyYmImZ1bmN0aW9uIj09dHlwZW9mIFAub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYob2U9UC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUpfWNhdGNoe312YXIgZ2U9RHx8e307bnVsbCE9bmUmJihnZS5kZW5zZT1uZSk7''@;'; put 'put ''dmFyIF9lPTAsdmU9MDtpZihudWxsIT1nZS5vcmlnaW4paWYoIm51bWJlciI9PXR5cGVvZiBnZS5vcmlnaW4pX2U9Z2Uub3JpZ2luO2Vsc2V7dmFyIE1lPSJzdHJpbmciPT10eXBlb2YgZ2Uub3JpZ2luP2NhKGdlLm9yaWdpbik6Z2Uub3JpZ2luO19lPU1lLnIsdmU9TWUuY312YXIgamU9TWF0''@;'; put 'put ''aC5taW4oZ2Uuc2hlZXRSb3dzfHwxZTcsZWUubGVuZ3RoKSxVZT17czp7cjowLGM6MH0sZTp7cjpfZSxjOnZlfX07aWYod1siIXJlZiJdKXt2YXIgWGU9S2Eod1siIXJlZiJdKTtVZS5zLnI9TWF0aC5taW4oVWUucy5yLFhlLnMuciksVWUucy5jPU1hdGgubWluKFVlLnMuYyxYZS5zLmMpLFVl''@;'; put 'put ''LmUucj1NYXRoLm1heChVZS5lLnIsWGUuZS5yKSxVZS5lLmM9TWF0aC5tYXgoVWUuZS5jLFhlLmUuYyksLTE9PV9lJiYoVWUuZS5yPV9lPVhlLmUucisxKX12YXIgaXQ9W10sZnQ9MCxNdD13WyIhcm93cyJdfHwod1siIXJvd3MiXT1bXSksdXQ9MCx3dD0wLEh0PTAsa3Q9MCxUdD0wLFl0PTA7''@;'; put 'put ''Zm9yKHdbIiFjb2xzIl18fCh3WyIhY29scyJdPVtdKTt1dDxlZS5sZW5ndGgmJnd0PGplOysrdXQpe2Zvcih2YXIgZ249ZWVbdXRdLHFuPWduLnBhcmVudEVsZW1lbnQ7IlRBQkxFIiE9cW4udGFnTmFtZS50b1VwcGVyQ2FzZSgpOylxbj1xbi5wYXJlbnRFbGVtZW50O2lmKHFuPT1QKXtlOmlm''@;'; put 'put ''KHR5cGVvZiBvZTwidSIpe3ZhciBmbj1vZShnbik7aWYobnVsbD09Zm4pYnJlYWsgZTtpZihmbi5zdHlsZXx8KGZuLnN0eWxlPXt9KSxnZS5kaXNwbGF5JiYibm9uZSI9PShmbi5kaXNwbGF5fHxmbi5zdHlsZS5kaXNwbGF5KSljb250aW51ZTsibm9uZSI9PShmbi5kaXNwbGF5fHxmbi5zdHls''@;'; put 'put ''ZS5kaXNwbGF5KSYmKChNdFt3dF18fChNdFt3dF09e30pKS5oaWRkZW49ITApfXZhciBLbj1nbi5jZWxscztmb3IoSHQ9a3Q9MDtIdDxLbi5sZW5ndGg7KytIdCl7dmFyIHpuPUtuW0h0XSxPbj1udWxsO2lmKCEodHlwZW9mIG9lPCJ1IiYmKG51bGw9PU9uJiYoT249b2Uoem4pKSxPbi5zdHls''@;'; put 'put ''ZXx8KE9uLnN0eWxlPXt9KSxnZS5kaXNwbGF5JiZudWxsIT1PbiYmIm5vbmUiPT0oT24uZGlzcGxheXx8T24uc3R5bGUuZGlzcGxheSkpKSl7Zm9yKFl0PSt6bi5nZXRBdHRyaWJ1dGUoImNvbHNwYW4iKXx8MSxmdD0wO2Z0PGl0Lmxlbmd0aDsrK2Z0KXt2YXIgZXI9aXRbZnRdO2VyLnMuYz09''@;'; put 'put ''a3QrdmUmJmVyLnMucjx3dCtfZSYmd3QrX2U8PWVyLmUuciYmKGt0PWVyLmUuYysxLXZlLGZ0PS0xKX0oKFR0PSt6bi5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKXx8MSk+MXx8WXQ+MSkmJml0LnB1c2goe3M6e3I6d3QrX2UsYzprdCt2ZX0sZTp7cjp3dCtfZSsoVHR8fDEpLTEsYzprdCt2ZSso''@;'; put 'put ''WXR8fDEpLTF9fSk7dmFyIHRyPXpuLmdldEF0dHJpYnV0ZSgidCIpfHwiIixZbj16bi5nZXRBdHRyaWJ1dGUoImJnY29sb3IiKTtlOmlmKHR5cGVvZiBvZTwidSIpe2lmKG51bGw9PU9uJiYoT249b2Uoem4pKSxudWxsPT1PbilicmVhayBlO2lmKE9uLnN0eWxlfHwoT24uc3R5bGU9e30pLDE9''@;'; put 'put ''PVl0JiZPbi53aWR0aCYmKHdbIiFjb2xzIl1ba3QrdmVdPXdbIiFjb2xzIl1ba3QrdmVdfHx7fSxPbi53aWR0aC5tYXRjaCgvcHgvKT93WyIhY29scyJdW2t0K3ZlXS53cHg9TWF0aC5tYXgocGFyc2VJbnQoT24ud2lkdGgsMTApKzUsd1siIWNvbHMiXVtrdCt2ZV0ud3B4fHwwKTpPbi53aWR0''@;'; put 'put ''aC5tYXRjaCgvcHQvKSYmKHdbIiFjb2xzIl1ba3QrdmVdLndweD1NYXRoLm1heCg0KnBhcnNlSW50KE9uLndpZHRoLDEwKS8zKzUsd1siIWNvbHMiXVtrdCt2ZV0ud3B4fHwwKSkpLFR0PD0xKXtNdFt3dCtfZV18fChNdFt3dCtfZV09e30pO3ZhciBqcj1Pbi5oZWlnaHQ7KGpyPWpyLm1hdGNo''@;'; put 'put ''KC9wdC8pP2RmKHBhcnNlSW50KGpyLDEwKSk6cGFyc2VJbnQoanIsMTApKT4oTXRbd3QrX2VdLmhweHx8ZGYoTXRbd3QrX2VdLmhwdCl8fDApJiYoZGVsZXRlIE10W3d0K19lXS5ocHQsTXRbd3QrX2VdLmhweD1qcil9fXZhciBsaT16bjtpZih6bi5maXJzdEVsZW1lbnRDaGlsZCYmMT09em4u''@;'; put 'put ''Y2hpbGRyZW4ubGVuZ3RoJiYic3BhbiI9PXpuLmZpcnN0RWxlbWVudENoaWxkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2Zvcih2YXIgRWk9MCxJaT16bi5jaGlsZE5vZGVzLHRpPTA7dGk8SWkubGVuZ3RoOysrdGkpMz09SWlbdGldLm5vZGVUeXBlJiYrK0VpOzA9PUVpJiYoem49em4uZmly''@;'; put 'put ''c3RFbGVtZW50Q2hpbGQpfXZhciBmcj16dyh6bixsaSx0ciwwLGdlKTtpZihPbil7dmFyIERuPW9lKHpuKTtpZihEbiYmIURuLnN0eWxlJiYoRG4uc3R5bGU9e30pLChEbiYmRG5bImJhY2tncm91bmQtY29sb3IiXXx8T25bImJhY2tncm91bmQtY29sb3IiXSkmJihmci5zfHwoZnIucz17fSks''@;'; put 'put ''IWZyLnMuZmdDb2xvcikpdHJ5e3ZhciB2cj1EbiYmRG5bImJhY2tncm91bmQtY29sb3IiXXx8T25bImJhY2tncm91bmQtY29sb3IiXTt2ci5tYXRjaCgvcmdiYVsoXVxzKjAuKlspXS9pKSYmKHZyPU9uWyJiYWNrZ3JvdW5kLWNvbG9yIl0pO3ZhciBycj1QbSh2ci50b0xvd2VyQ2FzZSgpLCEw''@;'; put 'put ''KTtycj49MCYmKGZyLnMuZmdDb2xvcj17cmdiOnJyfSl9Y2F0Y2h7fXN3aXRjaChPblsidmVydGljYWwtYWxpZ24iXSl7Y2FzZSJtaWRkbGUiOmNhc2UiYmFzZWxpbmUiOmZyLnN8fChmci5zPXt9KSxmci5zLmFsaWdubWVudHx8KGZyLnMuYWxpZ25tZW50PXt9KSxmci5zLmFsaWdubWVudC52''@;'; put 'put ''ZXJ0aWNhbD0iY2VudGVyIn19aWYoWW4mJihmci5zfHwoZnIucz17fSksIWZyLnMuZmdDb2xvcikpdHJ5e3ZhciB4bj1QbShZbi50b0xvd2VyQ2FzZSgpLCEwKTt4bj49MCYmKGZyLnMuZmdDb2xvcj17cmdiOnhufSl9Y2F0Y2h7fWlmKGdlLmRlbnNlPyh3W3d0K19lXXx8KHdbd3QrX2VdPVtd''@;'; put 'put ''KSx3W3d0K19lXVtrdCt2ZV09ZnIpOndbcGkoe2M6a3QrdmUscjp3dCtfZX0pXT1mcixUdD4xfHxZdD4xKWZvcih2YXIgbXI9d3Q7bXI8d3QrVHQ7Kyttcilmb3IodmFyIENpPWt0O0NpPGt0K1l0OysrQ2kpd3Q9PW1yJiZrdD09Q2l8fChnZS5kZW5zZT8od1ttcitfZV18fCh3W21yK19lXT1b''@;'; put 'put ''XSksd1ttcitfZV1bQ2krdmVdPXt0OiJ6IixzOkp0KGZyLnN8fHt9KX0pOndbcGkoe2M6Q2krdmUscjptcitfZX0pXT17dDoieiIsczpKdChmci5zfHx7fSl9KTtVZS5lLmM8a3QrdmUmJihVZS5lLmM9a3QrdmUpLGt0Kz1ZdH19Kyt3dH19aWYoaXQubGVuZ3RoJiYod1siIW1lcmdlcyJdPSh3''@;'; put 'put ''WyIhbWVyZ2VzIl18fFtdKS5jb25jYXQoaXQpKSxVZS5lLnI9TWF0aC5tYXgoVWUuZS5yLHd0LTErX2UpLHdbIiFyZWYiXT1WbyhVZSksd3Q+PWplJiYod1siIWZ1bGxyZWYiXT1WbygoVWUuZS5yPWVlLmxlbmd0aC11dCt3dC0xK19lLFVlKSkpLGdlLmJvcmRlcnMpZm9yKHd0PVVlLnMucjt3''@;'; put 'put ''dDw9VWUuZS5yOysrd3QpZm9yKGt0PVVlLnMuYztrdDw9VWUuZS5jOysra3QpaWYoIWdlLmRlbnNlKXt2YXIgenI9d1twaSh7cjp3dCxjOmt0fSldO2lmKCF6cnx8IXpyLnMpY29udGludWU7aWYod3Q+MCl7dmFyIHppPXdbcGkoe3I6d3QtMSxjOmt0fSldO3ppJiZ6aS5zJiZ6aS5zLmJvdHRv''@;'; put 'put ''bSYmZGVsZXRlIHpyLnMudG9wfWlmKGt0PjApe3ZhciB3bz13W3BpKHtyOnd0LGM6a3QtMX0pXTt3byYmd28ucyYmd28ucy5ib3R0b20mJmRlbGV0ZSB6ci5zLmxlZnR9fXJldHVybiB3fWZ1bmN0aW9uIFdjKHcsUCl7cmV0dXJuIGFPKChQfHx7fSkuZGVuc2U/W106e30sdyxQKX12YXIgaDE9''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgdz1mdW5jdGlvbihlZSxvZSxnZSl7dmFyIF9lPWVlLnJlcGxhY2UoL1tcdFxyXG5dL2csIiAiKS50cmltKCkucmVwbGFjZSgvICsvZywiICIpLnJlcGxhY2UoLzx0ZXh0OnNcLz4vZywiICIpLnJlcGxhY2UoLzx0ZXh0OnMgdGV4dDpjPSIoXGQrKSJcLz4vZyxmdW5j''@;'; put 'put ''dGlvbihVZSxYZSl7cmV0dXJuIEFycmF5KHBhcnNlSW50KFhlLDEwKSsxKS5qb2luKCIgIil9KS5yZXBsYWNlKC88dGV4dDp0YWJbXj5dKlwvPi9nLCJcdCIpLnJlcGxhY2UoLzx0ZXh0OmxpbmUtYnJlYWtcLz4vZywiXG4iKSx2ZT1FcihfZS5yZXBsYWNlKC88W14+XSo+L2csIiIpKSxNZT1b''@;'; put 'put ''XSxqZT0wO3JldHVybiBfZS5yZXBsYWNlKC8oPHRleHQ6c3Bhbi4qPz4pKC4qPyk8W1wvXXRleHQ6c3Bhbj4vZyxmdW5jdGlvbihVZSxYZSxpdCxmdCl7ZnQhPWplJiZNZS5wdXNoKHt0OiJzIix2OkVyKF9lLnNsaWNlKGplLGZ0KSl9KTt2YXIgTXQ9e3Q6InMiLHY6RXIoaXQpfSx1dD1jbihY''@;'; put 'put ''ZSlbInN0eWxlLW5hbWUiXTtyZXR1cm4gdXQmJmdlW3V0XSYmKE10LnM9SnQoZ2VbdXRdKSksTWUucHVzaChNdCksamU9ZnQrVWUubGVuZ3RoLCIifSksamU8X2UubGVuZ3RoJiZNZS5wdXNoKHt0OiJzIix2OkVyKF9lLnNsaWNlKGplKSl9KSxbdmUsTWVdfSxQPXtkYXk6WyJkIiwiZGQiXSxt''@;'; put 'put ''b250aDpbIm0iLCJtbSJdLHllYXI6WyJ5IiwieXkiXSxob3VyczpbImgiLCJoaCJdLG1pbnV0ZXM6WyJtIiwibW0iXSxzZWNvbmRzOlsicyIsInNzIl0sImFtLXBtIjpbIkEvUCIsIkFNL1BNIl0sImRheS1vZi13ZWVrIjpbImRkZCIsImRkZGQiXSxlcmE6WyJlIiwiZWUiXSxxdWFydGVyOlsi''@;'; put 'put ''XFxRbSIsJ21cXCJ0aCBxdWFydGVyIiddfSxEPWZ1bmN0aW9uKGVlLG9lKXt2YXIgZ2U9Y24oZWUuc2xpY2UoMCxlZS5pbmRleE9mKCI+IikpKSxfZT1lZS5zbGljZShlZS5pbmRleE9mKCI+IikrMSksdmU9e25hbWU6Z2UubmFtZSxmYW1pbHk6Z2UuZmFtaWx5fTtbWyJwYXJlbnQiLCJwYXJl''@;'; put 'put ''bnQtc3R5bGUtbmFtZSJdLFsiZGF0YW5hbWUiLCJkYXRhLXN0eWxlLW5hbWUiXSxbIm1wbmFtZSIsIm1hc3Rlci1wYWdlLW5hbWUiXV0uZm9yRWFjaChmdW5jdGlvbihqZSl7Z2VbamVbMV1dJiYodmVbamVbMF1dPWdlW2plWzFdXSl9KTt2YXIgTWU9e307X2UucmVwbGFjZShxdCxmdW5jdGlv''@;'; put 'put ''bihqZSl7dmFyIFVlPWNuKGplKTtpZigiPHN0eWxlOnRleHQtcHJvcGVydGllcyI9PT1VZVswXSl7aWYoVWVbImZvbnQtd2VpZ2h0Il0mJihNZS5ib2xkPSsoImJvbGQiPT1VZVsiZm9udC13ZWlnaHQiXXx8IjcwMCI9PVVlWyJmb250LXdlaWdodCJdKSksKCJpdGFsaWMiPT1VZVsiZm9udC1z''@;'; put 'put ''dHlsZSJdfHwib2JsaXF1ZSI9PVVlWyJmb250LXN0eWxlIl0pJiYoTWUuaXRhbGljPTEpLCJub25lIiE9KFVlWyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSIpP01lLnVuZGVybGluZT0iZG91YmxlIj09VWVbInRleHQtdW5kZXJsaW5lLXR5cGUiXT8yOjE6KFVlWyJ0ZXh0LXVuZGVy''@;'; put 'put ''bGluZS1zdHlsZSJdfHwibm9uZSI9PVVlWyJ0ZXh0LXVuZGVybGluZS10eXBlIl0pJiYoTWUudW5kZXJsaW5lPTApLChVZVsiZm9udC1zaXplIl18fCIiKS5tYXRjaCgvcHQkLykmJihNZS5zej0rVWVbImZvbnQtc2l6ZSJdLnJlcGxhY2UoInB0IiwiIikpLCJub25lIiE9KFVlWyJ0ZXh0LWxp''@;'; put 'put ''bmUtdGhyb3VnaC1zdHlsZSJdfHwibm9uZSIpJiYoTWUuc3RyaWtlPTEpLFVlWyJmb250LW5hbWUiXSYmKE1lLm5hbWU9VWVbImZvbnQtbmFtZSJdKSxVZS5jb2xvcil7dmFyIFhlPVBtKFVlLmNvbG9yLCEwKTtYZT49MCYmKE1lLmNvbG9yPVhlKX1zd2l0Y2goVWVbInRleHQtcG9zaXRpb24i''@;'; put 'put ''XSl7Y2FzZSJzdXBlciI6TWUudmFsaWduPSJzdXBlciI7YnJlYWs7Y2FzZSJzdWIiOk1lLnZhbGlnbj0ic3ViIjticmVhaztkZWZhdWx0OihVZVsidGV4dC1wb3NpdGlvbiJdfHwiIikubWF0Y2goLyUvKSYmKE1lLnZhbGlnbj0iLSI9PVVlWyJ0ZXh0LXBvc2l0aW9uIl0uY2hhckF0KDApPyJz''@;'; put 'put ''dWIiOiJzdXBlciIpfSJub25lIiE9KFVlWyJ0ZXh0LXNoYWRvdyJdfHwibm9uZSIpJiYoTWUuc2hhZG93PTEpfXJldHVybiIifSksb2VbZ2UubmFtZV09TWV9O3JldHVybiBmdW5jdGlvbihvZSxnZSl7dmFyIF9lPWdlfHx7fTtudWxsIT1uZSYmbnVsbD09X2UuZGVuc2UmJihfZS5kZW5zZT1u''@;'; put 'put ''ZSk7dmFyIGplLFVlLE10LHV0LFR0LFl0LHZlPVB3KG9lKSxNZT1bXSxYZT17bmFtZToiIn0saXQ9IiIsZnQ9MCx3dD17fSxIdD1bXSxrdD1fZS5kZW5zZT9bXTp7fSxnbj17dmFsdWU6IiJ9LHFuPSIiLGZuPTAsem49W10sT249LTEsZXI9LTEsdHI9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAs''@;'; put 'put ''YzowfX0sWW49MCxqcj17fSxsaT1bXSxFaT17fSxJaT0wLHRpPTAsZnI9W10sRG49MSx2cj0xLHJyPVtdLHhuPXtOYW1lczpbXX0sbXI9e30sQ2k9WyIiLCIiXSx6cj1bXSx6aT17fSx3bz17fSxPaT0wLFhvPSIiLGZvPTAsUm89ITEsVG89ITEsbWk9MDtmb3IoV3IubGFzdEluZGV4PTAsdmU9''@;'; put 'put ''dmUucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFtdKlxbW15cXV0qXF0+L2dtLCIiKTtUdD1Xci5leGVjKHZlKTspc3dpdGNoKFR0WzNdPVR0WzNdLnJlcGxhY2UoL18uKiQvLCIiKSl7Y2FzZSJ0YWJsZSI6Y2FzZSJcdTVkZTVcdTRmNWNc''@;'; put 'put ''dTg4NjgiOiIvIj09PVR0WzFdPyhrdFsiIXJlZiJdPXRyLmUuYz49dHIucy5jJiZ0ci5lLnI+PXRyLnMucj9Wbyh0cik6IkExOkExIixfZS5zaGVldFJvd3M+MCYmX2Uuc2hlZXRSb3dzPD10ci5lLnImJihrdFsiIWZ1bGxyZWYiXT1rdFsiIXJlZiJdLHRyLmUucj1fZS5zaGVldFJvd3MtMSxr''@;'; put 'put ''dFsiIXJlZiJdPVZvKHRyKSksbGkubGVuZ3RoJiYoa3RbIiFtZXJnZXMiXT1saSksZnIubGVuZ3RoJiYoa3RbIiFyb3dzIl09ZnIpLE10Lm5hbWU9TXQuXHU1NDBkXHU3OWYwfHxNdC5uYW1lLHR5cGVvZiBKU09OPCJ1IiYmSlNPTi5zdHJpbmdpZnkoTXQpLEh0LnB1c2goTXQubmFtZSksd3Rb''@;'; put 'put ''TXQubmFtZV09a3QsVG89ITEpOiIvIiE9PVR0WzBdLmNoYXJBdChUdFswXS5sZW5ndGgtMikmJihNdD1jbihUdFswXSwhMSksT249ZXI9LTEsdHIucy5yPXRyLnMuYz0xZTcsdHIuZS5yPXRyLmUuYz0wLGt0PV9lLmRlbnNlP1tdOnt9LGxpPVtdLGZyPVtdLFRvPSEwKTticmVhaztjYXNlInRh''@;'; put 'put ''YmxlLXJvdy1ncm91cCI6Ii8iPT09VHRbMV0/LS1ZbjorK1luO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIlx1ODg0YyI6aWYoIi8iPT09VHRbMV0pe09uKz1EbixEbj0xO2JyZWFrfWlmKCh1dD1jbihUdFswXSwhMSkpLlx1ODg0Y1x1NTNmNz9Pbj11dC5cdTg4NGNcdTUzZjctMTotMT09''@;'; put 'put ''T24mJihPbj0wKSwoRG49K3V0WyJudW1iZXItcm93cy1yZXBlYXRlZCJdfHwxKTwxMClmb3IobWk9MDttaTxEbjsrK21pKVluPjAmJihmcltPbittaV09e2xldmVsOllufSk7ZXI9LTE7YnJlYWs7Y2FzZSJjb3ZlcmVkLXRhYmxlLWNlbGwiOiIvIiE9PVR0WzFdJiYrK2VyLF9lLnNoZWV0U3R1''@;'; put 'put ''YnMmJihfZS5kZW5zZT8oa3RbT25dfHwoa3RbT25dPVtdKSxrdFtPbl1bZXJdPXt0OiJ6In0pOmt0W3BpKHtyOk9uLGM6ZXJ9KV09e3Q6InoifSkscW49IiIsem49W107YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsIjpjYXNlIlx1NjU3MFx1NjM2ZSI6aWYoIi8iPT09VHRbMF0uY2hhckF0KFR0WzBd''@;'; put 'put ''Lmxlbmd0aC0yKSkrK2VyLGduPWNuKFR0WzBdLCExKSx2cj1wYXJzZUludChnblsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxZdD17dDoieiIsdjpudWxsfSxnbi5mb3JtdWxhJiYwIT1fZS5jZWxsRm9ybXVsYSYmKFl0LmY9QkEoRXIoZ24uZm9ybXVsYSkpKSwic3RyaW5n''@;'; put 'put ''Ij09KGduLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8Z25bInZhbHVlLXR5cGUiXSkmJihZdC50PSJzIixZdC52PUVyKGduWyJzdHJpbmctdmFsdWUiXXx8IiIpLF9lLmRlbnNlPyhrdFtPbl18fChrdFtPbl09W10pLGt0W09uXVtlcl09WXQpOmt0W3BpKHtyOk9uLGM6ZXJ9KV09WXQpLGVy''@;'; put 'put ''Kz12ci0xO2Vsc2UgaWYoIi8iIT09VHRbMV0pe3ZyPTE7dmFyIHJsPURuP09uK0RuLTE6T247aWYoKytlcj50ci5lLmMmJih0ci5lLmM9ZXIpLGVyPHRyLnMuYyYmKHRyLnMuYz1lciksT248dHIucy5yJiYodHIucy5yPU9uKSxybD50ci5lLnImJih0ci5lLnI9cmwpLHpyPVtdLHppPXt9LFl0''@;'; put 'put ''PXt0Oihnbj1jbihUdFswXSwhMSkpLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8Z25bInZhbHVlLXR5cGUiXSx2Om51bGx9LF9lLmNlbGxGb3JtdWxhKWlmKGduLmZvcm11bGEmJihnbi5mb3JtdWxhPUVyKGduLmZvcm11bGEpKSxnblsibnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQi''@;'; put 'put ''XSYmZ25bIm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl0mJihJaT1wYXJzZUludChnblsibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsdGk9cGFyc2VJbnQoZ25bIm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl0sMTApfHwwLFl0LkY9Vm8oRWk9e3M6e3I6T24s''@;'; put 'put ''Yzplcn0sZTp7cjpPbitJaS0xLGM6ZXIrdGktMX19KSxyci5wdXNoKFtFaSxZdC5GXSkpLGduLmZvcm11bGEpWXQuZj1CQShnbi5mb3JtdWxhKTtlbHNlIGZvcihtaT0wO21pPHJyLmxlbmd0aDsrK21pKU9uPj1yclttaV1bMF0ucy5yJiZPbjw9cnJbbWldWzBdLmUuciYmZXI+PXJyW21pXVsw''@;'; put 'put ''XS5zLmMmJmVyPD1yclttaV1bMF0uZS5jJiYoWXQuRj1yclttaV1bMV0pO3N3aXRjaCgoZ25bIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8Z25bIm51bWJlci1yb3dzLXNwYW5uZWQiXSkmJihJaT1wYXJzZUludChnblsibnVtYmVyLXJvd3Mtc3Bhbm5lZCJdLDEwKXx8MCx0aT1wYXJzZUlu''@;'; put 'put ''dChnblsibnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxsaS5wdXNoKEVpPXtzOntyOk9uLGM6ZXJ9LGU6e3I6T24rSWktMSxjOmVyK3RpLTF9fSkpLGduWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYodnI9cGFyc2VJbnQoZ25bIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl0s''@;'; put 'put ''MTApKSxZdC50KXtjYXNlImJvb2xlYW4iOll0LnQ9ImIiLFl0LnY9X3IoZ25bImJvb2xlYW4tdmFsdWUiXSk7YnJlYWs7Y2FzZSJmbG9hdCI6Y2FzZSJwZXJjZW50YWdlIjpjYXNlImN1cnJlbmN5IjpZdC50PSJuIixZdC52PXBhcnNlRmxvYXQoZ24udmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6''@;'; put 'put ''WXQudD0iZCIsWXQudj1QdChnblsiZGF0ZS12YWx1ZSJdKSxfZS5jZWxsRGF0ZXN8fChZdC50PSJuIixZdC52PXFlKFl0LnYpKSxZdC56PSJtL2QveXkiO2JyZWFrO2Nhc2UidGltZSI6WXQudD0ibiIsWXQudj1hdChnblsidGltZS12YWx1ZSJdKS84NjQwMCxfZS5jZWxsRGF0ZXMmJihZdC50''@;'; put 'put ''PSJkIixZdC52PWh0KFl0LnYpKSxZdC56PSJISDpNTTpTUyI7YnJlYWs7Y2FzZSJudW1iZXIiOll0LnQ9Im4iLFl0LnY9cGFyc2VGbG9hdChnbi5cdTY1NzBcdTYzNmVcdTY1NzBcdTUwM2MpO2JyZWFrO2RlZmF1bHQ6aWYoInN0cmluZyIhPT1ZdC50JiYidGV4dCIhPT1ZdC50JiZZdC50KXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSAiK1l0LnQpO1l0LnQ9InMiLG51bGwhPWduWyJzdHJpbmctdmFsdWUiXSYmKHFuPUVyKGduWyJzdHJpbmctdmFsdWUiXSksem49W10pfX1lbHNle2lmKFJvPSExLCJzIj09PVl0LnQmJihZdC52PXFufHwiIix6bi5sZW5ndGgm''@;'; put 'put ''JihZdC5SPXpuKSxSbz0wPT1mbiksbXIuVGFyZ2V0JiYoWXQubD1tciksenIubGVuZ3RoPjAmJihZdC5jPXpyLHpyPVtdKSxxbiYmITEhPT1fZS5jZWxsVGV4dCYmKFl0Lnc9cW4pLFJvJiYoWXQudD0ieiIsZGVsZXRlIFl0LnYpLF9lLmNlbGxIVE1MJiYoWXQuaD1ZdC5SP3VfKFl0LlIpOmxv''@;'; put 'put ''KCIiK1l0LnYpKSwoIVJvfHxfZS5zaGVldFN0dWJzKSYmIShfZS5zaGVldFJvd3MmJl9lLnNoZWV0Um93czw9T24pKWZvcih2YXIgQW49MDtBbjxEbjsrK0FuKXtpZih2cj1wYXJzZUludChnblsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxfZS5kZW5zZSlmb3Ioa3RbT24r''@;'; put 'put ''QW5dfHwoa3RbT24rQW5dPVtdKSxrdFtPbitBbl1bZXJdPTA9PUFuP1l0Okp0KFl0KTstLXZyPjA7KWt0W09uK0FuXVtlcit2cl09SnQoWXQpO2Vsc2UgZm9yKGt0W3BpKHtyOk9uK0FuLGM6ZXJ9KV09WXQ7LS12cj4wOylrdFtwaSh7cjpPbitBbixjOmVyK3ZyfSldPUp0KFl0KTt0ci5lLmM8''@;'; put 'put ''PWVyJiYodHIuZS5jPWVyKX1lcis9KHZyPXBhcnNlSW50KGduWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdfHwiMSIsMTApKS0xLHZyPTAsWXQ9e30scW49IiIsem49W119bXI9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIlx1NzUzNVx1NWI1''@;'; put 'put ''MFx1ODg2OFx1NjgzY1x1NjU4N1x1Njg2MyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSJcdTRlM2JcdTRmNTMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKCIvIj09PVR0WzFdKXtpZigoamU9TWUucG9wKCkp''@;'; put 'put ''WzBdIT09VHRbM10pdGhyb3ciQmFkIHN0YXRlOiAiK2plfWVsc2UiLyIhPT1UdFswXS5jaGFyQXQoVHRbMF0ubGVuZ3RoLTIpJiZNZS5wdXNoKFtUdFszXSwhMF0pO2JyZWFrO2Nhc2UiYW5ub3RhdGlvbiI6aWYoIi8iPT09VHRbMV0pe2lmKChqZT1NZS5wb3AoKSlbMF0hPT1UdFszXSl0aHJv''@;'; put 'put ''dyJCYWQgc3RhdGU6ICIramU7emkudD1xbix6bi5sZW5ndGgmJih6aS5SPXpuKSx6aS5hPVhvLHpyLnB1c2goemkpfWVsc2UiLyIhPT1UdFswXS5jaGFyQXQoVHRbMF0ubGVuZ3RoLTIpJiZNZS5wdXNoKFtUdFszXSwhMV0pO1hvPSIiLGZvPTAscW49IiIsZm49MCx6bj1bXTticmVhaztjYXNl''@;'; put 'put ''ImNyZWF0b3IiOiIvIj09PVR0WzFdP1hvPXZlLnNsaWNlKGZvLFR0LmluZGV4KTpmbz1UdC5pbmRleCtUdFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJtZXRhIjpjYXNlIlx1NTE0M1x1NjU3MFx1NjM2ZSI6Y2FzZSJzZXR0aW5ncyI6Y2FzZSJjb25maWctaXRlbS1zZXQiOmNhc2UiY29uZmlnLWl0''@;'; put 'put ''ZW0tbWFwLWluZGV4ZWQiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLWVudHJ5IjpjYXNlImNvbmZpZy1pdGVtLW1hcC1uYW1lZCI6Y2FzZSJzaGFwZXMiOmNhc2UiZnJhbWUiOmNhc2UidGV4dC1ib3giOmNhc2UiaW1hZ2UiOmNhc2UiZGF0YS1waWxvdC10YWJsZXMiOmNhc2UibGlzdC1zdHlsZSI6''@;'; put 'put ''Y2FzZSJmb3JtIjpjYXNlImRkZS1saW5rcyI6Y2FzZSJldmVudC1saXN0ZW5lcnMiOmNhc2UiY2hhcnQiOmlmKCIvIj09PVR0WzFdKXtpZigoamU9TWUucG9wKCkpWzBdIT09VHRbM10pdGhyb3ciQmFkIHN0YXRlOiAiK2plfWVsc2UiLyIhPT1UdFswXS5jaGFyQXQoVHRbMF0ubGVuZ3RoLTIp''@;'; put 'put ''JiZNZS5wdXNoKFtUdFszXSwhMV0pO3FuPSIiLGZuPTAsem49W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiY3VycmVuY3ktc3R5bGUiOmNhc2Uic2NyaXB0IjpjYXNlImxpYnJhcmllcyI6Y2FzZSJhdXRvbWF0aWMtc3R5bGVzIjpj''@;'; put 'put ''YXNlImRlZmF1bHQtc3R5bGUiOmNhc2UicGFnZS1sYXlvdXQiOmNhc2UibWFwIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJwYXJhZ3JhcGgtcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLXJvdy1wcm9wZXJ0''@;'; put 'put ''aWVzIjpjYXNlInRhYmxlLWNlbGwtcHJvcGVydGllcyI6Y2FzZSJmcmFjdGlvbiI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlImJvb2xlYW4iOmNhc2UidGV4dC1zdHlsZSI6Y2FzZSJ0ZXh0LWNvbnRlbnQiOmNhc2UidGV4dC1wcm9wZXJ0aWVzIjpjYXNlImVtYmVkZGVkLXRleHQiOmNhc2Ui''@;'; put 'put ''Ym9keSI6Y2FzZSJcdTc1MzVcdTViNTBcdTg4NjhcdTY4M2MiOmNhc2UiZm9ybXMiOmNhc2UidGFibGUtY29sdW1uIjpjYXNlInRhYmxlLWhlYWRlci1yb3dzIjpjYXNlInRhYmxlLXJvd3MiOmNhc2UidGFibGUtY29sdW1uLWdyb3VwIjpjYXNlInRhYmxlLWhlYWRlci1jb2x1bW5zIjpjYXNl''@;'; put 'put ''InRhYmxlLWNvbHVtbnMiOmNhc2UibnVsbC1kYXRlIjpjYXNlImdyYXBoaWMtcHJvcGVydGllcyI6Y2FzZSJjYWxjdWxhdGlvbi1zZXR0aW5ncyI6Y2FzZSJuYW1lZC1leHByZXNzaW9ucyI6Y2FzZSJsYWJlbC1yYW5nZSI6Y2FzZSJsYWJlbC1yYW5nZXMiOmNhc2UibmFtZWQtZXhwcmVzc2lv''@;'; put 'put ''biI6Y2FzZSJzb3J0IjpjYXNlInNvcnQtYnkiOmNhc2Uic29ydC1ncm91cHMiOmNhc2UidGFiIjpjYXNlImxpbmUtYnJlYWsiOmNhc2Uic3BhbiI6Y2FzZSJzIjpjYXNlImRhdGUiOmNhc2Uib2JqZWN0IjpjYXNlInRpdGxlIjpjYXNlIlx1NjgwN1x1OTg5OCI6Y2FzZSJkZXNjIjpjYXNlImJp''@;'; put 'put ''bmFyeS1kYXRhIjpjYXNlInRhYmxlLXNvdXJjZSI6Y2FzZSJzY2VuYXJpbyI6Y2FzZSJpdGVyYXRpb24iOmNhc2UiY29udGVudC12YWxpZGF0aW9ucyI6Y2FzZSJjb250ZW50LXZhbGlkYXRpb24iOmNhc2UiaGVscC1tZXNzYWdlIjpjYXNlImVycm9yLW1lc3NhZ2UiOmNhc2UiZGF0YWJhc2Ut''@;'; put 'put ''cmFuZ2VzIjpjYXNlImZpbHRlciI6Y2FzZSJmaWx0ZXItYW5kIjpjYXNlImZpbHRlci1vciI6Y2FzZSJmaWx0ZXItY29uZGl0aW9uIjpjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpjYXNlImxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIjpjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6''@;'; put 'put ''Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2FzZSJzZW5kZXItZW1haWwiOmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVy''@;'; put 'put ''LWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29kZSI6Y2FzZSJzZW5kZXItY291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2Ui''@;'; put 'put ''OmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6Y2FzZSJldmVudC1saXN0ZW5lciI6Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24t''@;'; put 'put ''ZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2UiZWRpdGluZy1jeWNsZXMiOmNhc2UiY29uZmlnLWl0ZW0iOmNhc2UicGFnZS1udW1iZXIiOmNh''@;'; put 'put ''c2UicGFnZS1jb3VudCI6Y2FzZSJ0aW1lIjpjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpjYXNlImRldGVjdGl2ZSI6Y2FzZSJvcGVyYXRpb24iOmNhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmNhc2UiZGF0YS1waWxvdC10YWJsZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Ut''@;'; put 'put ''c2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2FzZSJkYXRhLXBpbG90LW1lbWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0''@;'; put 'put ''YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRh''@;'; put 'put ''dGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpjYXNlInJlY3QiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUtc291cmNlIjpjYXNlInByb3BlcnRpZXMiOmNhc2UicHJvcGVydHkiOmNhc2UidGFibGUtcHJv''@;'; put 'put ''dGVjdGlvbiI6Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlInBlcmNlbnRhZ2Utc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjppZigiLyI9PT1U''@;'; put 'put ''dFsxXSl7aWYoanJbWGUubmFtZV09aXQsKGplPU1lLnBvcCgpKVswXSE9PVR0WzNdKXRocm93IkJhZCBzdGF0ZTogIitqZX1lbHNlIi8iIT09VHRbMF0uY2hhckF0KFR0WzBdLmxlbmd0aC0yKSYmKGl0PSIiLFhlPWNuKFR0WzBdLCExKSxNZS5wdXNoKFtUdFszXSwhMF0pKTticmVhaztjYXNl''@;'; put 'put ''InN0eWxlIjoiLz4iPT09VHRbMF0uc2xpY2UoLTIpP0QoVHRbMF0sd28pOiIvIj09VHRbMV0/RCh2ZS5zbGljZShPaSxUdC5pbmRleCtUdFswXS5sZW5ndGgpLHdvKTpPaT1UdC5pbmRleDticmVhaztjYXNlIm51bWJlciI6Y2FzZSJkYXkiOmNhc2UibW9udGgiOmNhc2UieWVhciI6Y2FzZSJl''@;'; put 'put ''cmEiOmNhc2UiZGF5LW9mLXdlZWsiOmNhc2Uid2Vlay1vZi15ZWFyIjpjYXNlInF1YXJ0ZXIiOmNhc2UiaG91cnMiOmNhc2UibWludXRlcyI6Y2FzZSJzZWNvbmRzIjpjYXNlImFtLXBtIjpzd2l0Y2goTWVbTWUubGVuZ3RoLTFdWzBdKXtjYXNlInRpbWUtc3R5bGUiOmNhc2UiZGF0ZS1zdHls''@;'; put 'put ''ZSI6VWU9Y24oVHRbMF0sITEpLGl0Kz1QW1R0WzNdXVsibG9uZyI9PT1VZS5zdHlsZT8xOjBdfWJyZWFrO2Nhc2UidGV4dCI6aWYoIi8+Ij09PVR0WzBdLnNsaWNlKC0yKSlicmVhaztpZigiLyI9PT1UdFsxXSlzd2l0Y2goTWVbTWUubGVuZ3RoLTFdWzBdKXtjYXNlIm51bWJlci1zdHlsZSI6''@;'; put 'put ''Y2FzZSJkYXRlLXN0eWxlIjpjYXNlInRpbWUtc3R5bGUiOml0Kz12ZS5zbGljZShmdCxUdC5pbmRleCl9ZWxzZSBmdD1UdC5pbmRleCtUdFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5nZSI6Q2k9bncoKFVlPWNuKFR0WzBdLCExKSlbImNlbGwtcmFuZ2UtYWRkcmVzcyJdKTt2YXIg''@;'; put 'put ''QWE9e05hbWU6VWUubmFtZSxSZWY6Q2lbMF0rIiEiK0NpWzFdfTtUbyYmKEFhLlNoZWV0PUh0Lmxlbmd0aCkseG4uTmFtZXMucHVzaChBYSk7YnJlYWs7Y2FzZSJwIjpjYXNlIlx1NjU4N1x1NjcyY1x1NGUzMiI6aWYoWyJtYXN0ZXItc3R5bGVzIl0uaW5kZXhPZihNZVtNZS5sZW5ndGgtMV1b''@;'; put 'put ''MF0pPi0xKWJyZWFrO2lmKCIvIiE9PVR0WzFdfHxnbiYmZ25bInN0cmluZy12YWx1ZSJdKWNuKFR0WzBdLCExKSxmbj1UdC5pbmRleCtUdFswXS5sZW5ndGg7ZWxzZXt2YXIgTWE9dyh2ZS5zbGljZShmbixUdC5pbmRleCksMCx3byk7cW49KHFuLmxlbmd0aD4wP3FuKyJcbiI6IiIpK01hWzBd''@;'; put 'put ''LHpuPU1hWzFdfWJyZWFrO2Nhc2UiZGF0YWJhc2UtcmFuZ2UiOmlmKCIvIj09PVR0WzFdKWJyZWFrO3RyeXt3dFsoQ2k9bncoY24oVHRbMF0pWyJ0YXJnZXQtcmFuZ2UtYWRkcmVzcyJdKSlbMF1dWyIhYXV0b2ZpbHRlciJdPXtyZWY6Q2lbMV19fWNhdGNoe31icmVhaztjYXNlImEiOmlmKCIv''@;'; put 'put ''IiE9PVR0WzFdKXtpZighKG1yPWNuKFR0WzBdLCExKSkuaHJlZilicmVhazttci5UYXJnZXQ9RXIobXIuaHJlZiksZGVsZXRlIG1yLmhyZWYsIiMiPT1tci5UYXJnZXQuY2hhckF0KDApJiZtci5UYXJnZXQuaW5kZXhPZigiLiIpPi0xPyhDaT1udyhtci5UYXJnZXQuc2xpY2UoMSkpLG1yLlRh''@;'; put 'put ''cmdldD0iIyIrQ2lbMF0rIiEiK0NpWzFdKTptci5UYXJnZXQubWF0Y2goL15cLlwuW1xcXC9dLykmJihtci5UYXJnZXQ9bXIuVGFyZ2V0LnNsaWNlKDMpKX1icmVhaztkZWZhdWx0OnN3aXRjaChUdFsyXSl7Y2FzZSJkYzoiOmNhc2UiY2FsY2V4dDoiOmNhc2UibG9leHQ6IjpjYXNlIm9vbzoi''@;'; put 'put ''OmNhc2UiY2hhcnRvb286IjpjYXNlImRyYXc6IjpjYXNlInN0eWxlOiI6Y2FzZSJjaGFydDoiOmNhc2UiZm9ybToiOmNhc2UidW9mOiI6Y2FzZSJcdTg4Njg6IjpjYXNlIlx1NWI1NzoiOmJyZWFrO2RlZmF1bHQ6aWYoX2UuV1RGKXRocm93IG5ldyBFcnJvcihUdCl9fXZhciBJcz17U2hlZXRz''@;'; put 'put ''Ond0LFNoZWV0TmFtZXM6SHQsV29ya2Jvb2s6eG59O3JldHVybiBfZS5ib29rU2hlZXRzJiZkZWxldGUgSXMuU2hlZXRzLElzfX0oKTtmdW5jdGlvbiBVdyh3LFApe3JldHVybiBoMSh3LFApfXZhciBiZj1mdW5jdGlvbigpe3ZhciB3PVsiICA8b2ZmaWNlOm1hc3Rlci1zdHlsZXM+IiwnICAg''@;'; put 'put ''IDxzdHlsZTptYXN0ZXItcGFnZSBzdHlsZTpuYW1lPSJtcDEiIHN0eWxlOnBhZ2UtbGF5b3V0LW5hbWU9Im1wMSI+JywiICAgICAgPHN0eWxlOmhlYWRlci8+IiwnICAgICAgPHN0eWxlOmhlYWRlci1sZWZ0IHN0eWxlOmRpc3BsYXk9ImZhbHNlIi8+JywiICAgICAgPHN0eWxlOmZvb3Rlci8+''@;'; put 'put ''IiwnICAgICAgPHN0eWxlOmZvb3Rlci1sZWZ0IHN0eWxlOmRpc3BsYXk9ImZhbHNlIi8+JywiICAgIDwvc3R5bGU6bWFzdGVyLXBhZ2U+IiwiICA8L29mZmljZTptYXN0ZXItc3R5bGVzPiJdLmpvaW4oIlxuIiksUD0iPG9mZmljZTpkb2N1bWVudC1zdHlsZXMgIitGbCh7InhtbG5zOm9mZmlj''@;'; put 'put ''ZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInhtbG5zOnRhYmxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6''@;'; put 'put ''eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ4bWxuczpkcmF3IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIsInhtbG5zOmZvIjoidXJuOm9hc2lz''@;'; put 'put ''Om5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAiLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6bnVtYmVyIjoidXJuOm9h''@;'; put 'put ''c2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIiwieG1sbnM6c3ZnIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1s''@;'; put 'put ''bnM6b2Y6MS4yIiwib2ZmaWNlOnZlcnNpb24iOiIxLjIifSkrIj5cbiIrdysiXG48L29mZmljZTpkb2N1bWVudC1zdHlsZXM+IjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQm4rUH19KCksQTA9ZnVuY3Rpb24oKXt2YXIgdz1mdW5jdGlvbih2ZSxNZSl7cmV0dXJuIEJyKHZlKS5yZXBsYWNl''@;'; put 'put ''KC8gICsvZyxmdW5jdGlvbihqZSl7cmV0dXJuJzx0ZXh0OnMgdGV4dDpjPSInK2plLmxlbmd0aCsnIi8+J30pLnJlcGxhY2UoL1x0L2csIjx0ZXh0OnRhYi8+IikucmVwbGFjZSgvXG4vZyxNZT8iPHRleHQ6bGluZS1icmVhay8+IjoiPC90ZXh0OnA+PHRleHQ6cD4iKS5yZXBsYWNlKC9eIC8s''@;'; put 'put ''Ijx0ZXh0OnMvPiIpLnJlcGxhY2UoLyAkLywiPHRleHQ6cy8+Iil9LFA9ZnVuY3Rpb24odmUpe3JldHVybiB2ZS5tYXAoZnVuY3Rpb24oTWUpe3ZhciBqZT0iIjtyZXR1cm4gbnVsbCE9TWUub2RzJiYoamUrPScgdGV4dDpzdHlsZS1uYW1lPSJUJytNZS5vZHMrJyInKSxNZS52PyI8dGV4dDpz''@;'; put 'put ''cGFuIitqZSsiPiIrdyhNZS52LCEwKSsiPC90ZXh0OnNwYW4+IjoiIn0pLmpvaW4oIiIpfSxEPSIgICAgICAgICAgPHRhYmxlOnRhYmxlLWNlbGwgLz5cbiIsb2U9ZnVuY3Rpb24odmUsTWUsamUpe3ZhciBVZT1bXTtVZS5wdXNoKCcgICAgICA8dGFibGU6dGFibGUgdGFibGU6bmFtZT0iJytC''@;'; put 'put ''cihNZS5TaGVldE5hbWVzW2plXSkrJyIgdGFibGU6c3R5bGUtbmFtZT0idGExIj5cbicpO3ZhciBYZT0wLGl0PTAsZnQ9S2EodmVbIiFyZWYiXXx8IkExIiksTXQ9dmVbIiFtZXJnZXMiXXx8W10sdXQ9MCx3dD1BcnJheS5pc0FycmF5KHZlKTtpZih2ZVsiIWNvbHMiXSlmb3IoaXQ9MDtpdDw9''@;'; put 'put ''ZnQuZS5jOysraXQpVWUucHVzaCgiICAgICAgICA8dGFibGU6dGFibGUtY29sdW1uIisodmVbIiFjb2xzIl1baXRdPycgdGFibGU6c3R5bGUtbmFtZT0iY28nK3ZlWyIhY29scyJdW2l0XS5vZHMrJyInOiIiKSsiPjwvdGFibGU6dGFibGUtY29sdW1uPlxuIik7dmFyIGt0PXZlWyIhcm93cyJd''@;'; put 'put ''fHxbXTtmb3IoWGU9MDtYZTxmdC5zLnI7KytYZSlVZS5wdXNoKCIgICAgICAgIDx0YWJsZTp0YWJsZS1yb3ciKyhrdFtYZV0/JyB0YWJsZTpzdHlsZS1uYW1lPSJybycra3RbWGVdLm9kcysnIic6IiIpKyI+PC90YWJsZTp0YWJsZS1yb3c+XG4iKTtmb3IoO1hlPD1mdC5lLnI7KytYZSl7Zm9y''@;'; put 'put ''KFVlLnB1c2goIiAgICAgICAgPHRhYmxlOnRhYmxlLXJvdyIrKGt0W1hlXT8nIHRhYmxlOnN0eWxlLW5hbWU9InJvJytrdFtYZV0ub2RzKyciJzoiIikrIj5cbiIpLGl0PTA7aXQ8ZnQucy5jOysraXQpVWUucHVzaChEKTtmb3IoO2l0PD1mdC5lLmM7KytpdCl7dmFyIFR0PSExLFl0PXt9LGdu''@;'; put 'put ''PSIiO2Zvcih1dD0wO3V0IT1NdC5sZW5ndGg7Kyt1dClpZighKE10W3V0XS5zLmM+aXR8fE10W3V0XS5zLnI+WGV8fE10W3V0XS5lLmM8aXR8fE10W3V0XS5lLnI8WGUpKXsoTXRbdXRdLnMuYyE9aXR8fE10W3V0XS5zLnIhPVhlKSYmKFR0PSEwKSxZdFsidGFibGU6bnVtYmVyLWNvbHVtbnMt''@;'; put 'put ''c3Bhbm5lZCJdPU10W3V0XS5lLmMtTXRbdXRdLnMuYysxLFl0WyJ0YWJsZTpudW1iZXItcm93cy1zcGFubmVkIl09TXRbdXRdLmUuci1NdFt1dF0ucy5yKzE7YnJlYWt9aWYoVHQpVWUucHVzaCgiICAgICAgICAgIDx0YWJsZTpjb3ZlcmVkLXRhYmxlLWNlbGwvPlxuIik7ZWxzZXt2YXIgcW49''@;'; put 'put ''cGkoe3I6WGUsYzppdH0pLGZuPXd0Pyh2ZVtYZV18fFtdKVtpdF06dmVbcW5dO2lmKGZuJiZmbi5mJiYoWXRbInRhYmxlOmZvcm11bGEiXT1CcihqQShmbi5mKSksZm4uRiYmZm4uRi5zbGljZSgwLHFuLmxlbmd0aCk9PXFuKSl7dmFyIEtuPUthKGZuLkYpO1l0WyJ0YWJsZTpudW1iZXItbWF0''@;'; put 'put ''cml4LWNvbHVtbnMtc3Bhbm5lZCJdPUtuLmUuYy1Lbi5zLmMrMSxZdFsidGFibGU6bnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXT1Lbi5lLnItS24ucy5yKzF9aWYoZm4pe3N3aXRjaChmbi50KXtjYXNlImIiOmduPWZuLnY/IlRSVUUiOiJGQUxTRSIsWXRbIm9mZmljZTp2YWx1ZS10eXBl''@;'; put 'put ''Il09ImJvb2xlYW4iLFl0WyJvZmZpY2U6Ym9vbGVhbi12YWx1ZSJdPWZuLnY/InRydWUiOiJmYWxzZSI7YnJlYWs7Y2FzZSJuIjpnbj1mbi53fHxTdHJpbmcoZm4udnx8MCksWXRbIm9mZmljZTp2YWx1ZS10eXBlIl09ImZsb2F0IixZdFsib2ZmaWNlOnZhbHVlIl09Zm4udnx8MDticmVhaztj''@;'; put 'put ''YXNlInMiOmNhc2Uic3RyIjpnbj1mbi52LFl0WyJvZmZpY2U6dmFsdWUtdHlwZSJdPSJzdHJpbmciO2JyZWFrO2Nhc2UiZCI6Z249Zm4ud3x8UHQoZm4udikudG9JU09TdHJpbmcoKSxZdFsib2ZmaWNlOnZhbHVlLXR5cGUiXT0iZGF0ZSIsWXRbIm9mZmljZTpkYXRlLXZhbHVlIl09UHQoZm4u''@;'; put 'put ''dikudG9JU09TdHJpbmcoKSxZdFsidGFibGU6c3R5bGUtbmFtZSJdPSJjZTEiO2JyZWFrO2RlZmF1bHQ6VWUucHVzaChEKTtjb250aW51ZX1udWxsIT1mbi5vZHMmJiFZdFsidGFibGU6c3R5bGUtbmFtZSJdJiYoWXRbInRhYmxlOnN0eWxlLW5hbWUiXT0iY2UiK2ZuLm9kcyk7dmFyIHpuPSFm''@;'; put 'put ''bi5SfHxmbi5sJiZmbi5sLlRhcmdldD93KGduKTpQKGZuLlIpO2lmKGZuLmwmJmZuLmwuVGFyZ2V0KXt2YXIgT249Zm4ubC5UYXJnZXQ7IiMiIT0oT249IiMiPT1Pbi5jaGFyQXQoMCk/IiMiK3pBKE9uLnNsaWNlKDEpKTpPbikuY2hhckF0KDApJiYhT24ubWF0Y2goL15cdys6LykmJihPbj0i''@;'; put 'put ''Li4vIitPbiksem49TXIoInRleHQ6YSIsem4seyJ4bGluazpocmVmIjpPbi5yZXBsYWNlKC8mL2csIiZhbXA7Iil9KX1VZS5wdXNoKCIgICAgICAgICAgIitNcigidGFibGU6dGFibGUtY2VsbCIsTXIoInRleHQ6cCIsem4se30pLFl0KSsiXG4iKX1lbHNlIFVlLnB1c2goRCl9fVVlLnB1c2go''@;'; put 'put ''IiAgICAgICAgPC90YWJsZTp0YWJsZS1yb3c+XG4iKX1yZXR1cm4gVWUucHVzaCgiICAgICAgPC90YWJsZTp0YWJsZT5cbiIpLFVlLmpvaW4oIiIpfSxnZT17Y2VudGVyOiJjZW50ZXIiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn07cmV0dXJuIGZ1bmN0aW9uKE1lLGplKXt2YXIgVWU9W0Ju''@;'; put 'put ''XSxYZT1GbCh7InhtbG5zOm9mZmljZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInhtbG5zOnRhYmxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpu''@;'; put 'put ''YW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ4bWxuczpkcmF3IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIs''@;'; put 'put ''InhtbG5zOmZvIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAiLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwi''@;'; put 'put ''eG1sbnM6bWV0YSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiLCJ4bWxuczpudW1iZXIiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiLCJ4bWxuczpwcmVzZW50YXRpb24iOiJ1cm46b2FzaXM6bmFt''@;'; put 'put ''ZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjAiLCJ4bWxuczpzdmciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIsInhtbG5zOmNoYXJ0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxu''@;'; put 'put ''czpjaGFydDoxLjAiLCJ4bWxuczpkcjNkIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcjNkOjEuMCIsInhtbG5zOm1hdGgiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIiwieG1sbnM6Zm9ybSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9j''@;'; put 'put ''dW1lbnQ6eG1sbnM6Zm9ybToxLjAiLCJ4bWxuczpzY3JpcHQiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnNjcmlwdDoxLjAiLCJ4bWxuczpvb28iOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiLCJ4bWxuczpvb293IjoiaHR0cDovL29wZW5vZmZp''@;'; put 'put ''Y2Uub3JnLzIwMDQvd3JpdGVyIiwieG1sbnM6b29vYyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGMiLCJ4bWxuczpkb20iOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMiLCJ4bWxuczp4Zm9ybXMiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAyL3hmb3JtcyIsInht''@;'; put 'put ''bG5zOnhzZCI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwieG1sbnM6eHNpIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLCJ4bWxuczpzaGVldCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6c2gzM3RqczoxLjAiLCJ4bWxu''@;'; put 'put ''czpycHQiOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNS9yZXBvcnQiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiwieG1sbnM6eGh0bWwiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwieG1sbnM6Z3JkZGwiOiJodHRw''@;'; put 'put ''Oi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3IyIsInhtbG5zOnRhYmxlb29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDkvdGFibGUiLCJ4bWxuczpkcmF3b29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMTAvZHJhdyIsInhtbG5zOmNhbGNleHQiOiJ1cm46b3JnOmRvY3Vt''@;'; put 'put ''ZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMCIsInhtbG5zOmxvZXh0IjoidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOm9mZmljZTp4bWxuczpsb2V4dDoxLjAiLCJ4bWxuczpmaWVsZCI6InVybjpvcGVu''@;'; put 'put ''b2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb28tbXMtaW50ZXJvcDp4bWxuczpmaWVsZDoxLjAiLCJ4bWxuczpmb3JteCI6InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3htbC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMCIsInhtbG5zOmNzczN0IjoiaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvVFIvY3NzMy10ZXh0LyIsIm9mZmljZTp2ZXJzaW9uIjoiMS4yIn0pLGl0PUZsKHsieG1sbnM6Y29uZmlnIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjb25maWc6MS4wIiwib2ZmaWNlOm1pbWV0eXBlIjoiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9w''@;'; put 'put ''ZW5kb2N1bWVudC5zcHJlYWRzaGVldCJ9KTsiZm9kcyI9PWplLmJvb2tUeXBlPyhVZS5wdXNoKCI8b2ZmaWNlOmRvY3VtZW50IitYZStpdCsiPlxuIiksVWUucHVzaChfbSgpLnJlcGxhY2UoL29mZmljZTpkb2N1bWVudC1tZXRhL2csIm9mZmljZTptZXRhIikpKTpVZS5wdXNoKCI8b2ZmaWNl''@;'; put 'put ''OmRvY3VtZW50LWNvbnRlbnQiK1hlKyI+XG4iKSxmdW5jdGlvbih2ZSxNZSl7dmFyIGplPVtdLFVlPXt9O2plLnB1c2goIiA8b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKSxqZS5wdXNoKCcgIDxudW1iZXI6ZGF0ZS1zdHlsZSBzdHlsZTpuYW1lPSJOMzciIG51bWJlcjphdXRvbWF0aWMt''@;'; put 'put ''b3JkZXI9InRydWUiPlxuJyksamUucHVzaCgnICAgPG51bWJlcjptb250aCBudW1iZXI6c3R5bGU9ImxvbmciLz5cbicpLGplLnB1c2goIiAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5cbiIpLGplLnB1c2goJyAgIDxudW1iZXI6ZGF5IG51bWJlcjpzdHlsZT0ibG9uZyIvPlxuJyks''@;'; put 'put ''amUucHVzaCgiICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxuIiksamUucHVzaCgiICAgPG51bWJlcjp5ZWFyLz5cbiIpLGplLnB1c2goIiAgPC9udW1iZXI6ZGF0ZS1zdHlsZT5cbiIpO3ZhciBYZT0wO01lLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKHV0KXtyZXR1cm4gTWUuU2hl''@;'; put 'put ''ZXRzW3V0XX0pLmZvckVhY2goZnVuY3Rpb24odXQpe2lmKHV0JiZ1dFsiIWNvbHMiXSlmb3IodmFyIHd0PTA7d3Q8dXRbIiFjb2xzIl0ubGVuZ3RoOysrd3QpaWYodXRbIiFjb2xzIl1bd3RdKXt2YXIgSHQ9dXRbIiFjb2xzIl1bd3RdO2lmKG51bGw9PUh0LndpZHRoJiZudWxsPT1IdC53cHgm''@;'; put 'put ''Jm51bGw9PUh0LndjaCljb250aW51ZTtfYyhIdCksSHQub2RzPVhlO3ZhciBrdD11dFsiIWNvbHMiXVt3dF0ud3B4KyJweCI7amUucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iY28nK1hlKyciIHN0eWxlOmZhbWlseT0idGFibGUtY29sdW1uIj5cbicpLGplLnB1c2goJyAgIDxz''@;'; put 'put ''dHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOmNvbHVtbi13aWR0aD0iJytrdCsnIi8+XG4nKSxqZS5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSwrK1hlfX0pO3ZhciBpdD0wO01lLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKHV0KXty''@;'; put 'put ''ZXR1cm4gTWUuU2hlZXRzW3V0XX0pLmZvckVhY2goZnVuY3Rpb24odXQpe2lmKHV0JiZ1dFsiIXJvd3MiXSlmb3IodmFyIHd0PTA7d3Q8dXRbIiFyb3dzIl0ubGVuZ3RoOysrd3QpaWYodXRbIiFyb3dzIl1bd3RdKXt1dFsiIXJvd3MiXVt3dF0ub2RzPWl0O3ZhciBIdD11dFsiIXJvd3MiXVt3''@;'; put 'put ''dF0uaHB4KyJweCI7amUucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0icm8nK2l0KyciIHN0eWxlOmZhbWlseT0idGFibGUtcm93Ij5cbicpLGplLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1yb3ctcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOnJvdy1oZWln''@;'; put 'put ''aHQ9IicrSHQrJyIvPlxuJyksamUucHVzaCgiICA8L3N0eWxlOnN0eWxlPlxuIiksKytpdH19KSxqZS5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJ0YTEiIHN0eWxlOmZhbWlseT0idGFibGUiIHN0eWxlOm1hc3Rlci1wYWdlLW5hbWU9Im1wMSI+XG4nKSxqZS5wdXNoKCcgICA8''@;'; put 'put ''c3R5bGU6dGFibGUtcHJvcGVydGllcyB0YWJsZTpkaXNwbGF5PSJ0cnVlIiBzdHlsZTp3cml0aW5nLW1vZGU9ImxyLXRiIi8+XG4nKSxqZS5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSxqZS5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJjZTEiIHN0eWxlOmZhbWlseT0idGFi''@;'; put 'put ''bGUtY2VsbCIgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9IkRlZmF1bHQiIHN0eWxlOmRhdGEtc3R5bGUtbmFtZT0iTjM3Ii8+XG4nKTt2YXIgZnQ9MjtpdD0wLE1lLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKHV0KXtyZXR1cm4gTWUuU2hlZXRzW3V0XX0pLmZvckVhY2goZnVuY3Rpb24odXQp''@;'; put 'put ''e2lmKHV0KWZvcih2YXIgd3Q9MCxIdD0wLGt0PUthKHV0WyIhcmVmIl0pLFR0PUFycmF5LmlzQXJyYXkodXQpO3d0PD1rdC5lLnI7Kyt3dClmb3IoSHQ9MDtIdDw9a3QuZS5jOysrSHQpe3ZhciBZdD1waSh7cjp3dCxjOkh0fSksZ249VHQ/KHV0W3d0XXx8W10pW0h0XTp1dFtZdF07aWYoZ24m''@;'; put 'put ''Jihnbi5zfHxnbi5SKSl7dmFyIHFuPVtdO2duLnMmJnFuLnB1c2goW2duLCEwXSksZ24uUiYmZ24uUi5mb3JFYWNoKGZ1bmN0aW9uKGZuKXtmbiYmZm4ucyYmcW4ucHVzaChbZm4sITFdKX0pLHFuLmZvckVhY2goZnVuY3Rpb24oZm4pe3ZhciBLbj1mblswXSx6bj1Lbi5zLE9uPSIiLGVyPXsi''@;'; put 'put ''c3R5bGU6bmFtZSI6KGZuWzFdPyJjZSI6IlQiKStmdCwic3R5bGU6ZmFtaWx5IjpmblsxXT8idGFibGUtY2VsbCI6InRleHQifTtmblsxXSYmKGVyWyJzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZSJdPSJEZWZhdWx0Iixlclsic3R5bGU6ZGF0YS1zdHlsZS1uYW1lIl09Ik4wIik7dmFyIHRyPXt9''@;'; put 'put ''LFluPSExLGpyPXt9LGxpPSExLEVpPXt9LElpPSExO2lmKHpuLmNvbG9yJiYoanJbImZvOmNvbG9yIl09IiMiK1VjKHpuLmNvbG9yLnJnYiksbGk9ITApLHpuLnN6JiYoanJbImZvOmZvbnQtc2l6ZSJdPXpuLnN6KyJwdCIsbGk9ITApLHpuLmJvbGQmJihqclsiZm86Zm9udC13ZWlnaHQiXT0i''@;'; put 'put ''Ym9sZCIsbGk9ITApLHpuLml0YWxpYyYmKGpyWyJmbzpmb250LXN0eWxlIl09Iml0YWxpYyIsbGk9ITApLHpuLm5hbWUmJihVZVt6bi5uYW1lXXx8KFVlW3puLm5hbWVdPXpuLm5hbWUubWF0Y2goLyAvKT8iJmFwb3M7Iit6bi5uYW1lKyImYXBvczsiOnpuLm5hbWUpLGpyWyJzdHlsZTpmb250''@;'; put 'put ''LW5hbWUiXT16bi5uYW1lLGxpPSEwKSx6bi5zdHJpa2UmJihqclsic3R5bGU6dGV4dC1saW5lLXRocm91Z2gtc3R5bGUiXT0ic29saWQiLGpyWyJzdHlsZTp0ZXh0LWxpbmUtdGhyb3VnaC10eXBlIl09InNpbmdsZSIsbGk9ITApLHpuLnVuZGVybGluZSYmKGpyWyJzdHlsZTp0ZXh0LXVuZGVy''@;'; put 'put ''bGluZS1zdHlsZSJdPSJzb2xpZCIsanJbInN0eWxlOnRleHQtdW5kZXJsaW5lLXdpZHRoIl09ImF1dG8iLGpyWyJzdHlsZTp0ZXh0LXVuZGVybGluZS1jb2xvciJdPSJmb250LWNvbG9yIixsaT0hMCksZm5bMV0pe2lmKHpuLmFsaWdubWVudCl7dmFyIHRpPXpuLmFsaWdubWVudDt0aS53cmFw''@;'; put 'put ''VGV4dCYmKHRyWyJmbzp3cmFwLW9wdGlvbiJdPSJ3cmFwIixZbj0hMCksdGkudmVydGljYWwmJih0clsic3R5bGU6dmVydGljYWwtYWxpZ24iXT0iY2VudGVyIj09dGkudmVydGljYWw/Im1pZGRsZSI6dGkudmVydGljYWwsWW49ITApLGdlW3RpLmhvcml6b250YWxdJiYoRWlbImZvOnRleHQt''@;'; put 'put ''YWxpZ24iXT1nZVt0aS5ob3Jpem9udGFsXSxJaT0hMCl9em4uZmdDb2xvciYmKHRyWyJmbzpiYWNrZ3JvdW5kLWNvbG9yIl09IiMiK1VjKHpuLmZnQ29sb3IucmdiKSxZbj0hMCl9WW4mJihPbis9TXIoInN0eWxlOnRhYmxlLWNlbGwtcHJvcGVydGllcyIsbnVsbCx0cikpLGxpJiYoT24rPU1y''@;'; put 'put ''KCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiLG51bGwsanIpKSxJaSYmKE9uKz1Ncigic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiLG51bGwsRWkpKSxqZS5wdXNoKCIgICIrTXIoInN0eWxlOnN0eWxlIixPbixlcikrIlxuIiksS24ub2RzPWZ0LCsrZnR9KX19fSksamUucHVzaCgiIDwvb2Zm''@;'; put 'put ''aWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKTt2YXIgTXQ9IiA8b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz5cbiIrbXQoVWUpLm1hcChmdW5jdGlvbih1dCl7cmV0dXJuJyAgPHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSInK3V0KyciIHN2Zzpmb250LWZhbWlseT0iJytVZVt1dF0rJyIvPlxu''@;'; put 'put ''J30pLmpvaW4oIiIpKyIgPC9vZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuIjt2ZS5wdXNoKE10KSx2ZS5wdXNoKGplLmpvaW4oIiIpKX0oVWUsTWUpLFVlLnB1c2goIiAgPG9mZmljZTpib2R5PlxuIiksVWUucHVzaCgiICAgIDxvZmZpY2U6c3ByZWFkc2hlZXQ+XG4iKTtmb3IodmFyIGZ0PTA7''@;'; put 'put ''ZnQhPU1lLlNoZWV0TmFtZXMubGVuZ3RoOysrZnQpVWUucHVzaChvZShNZS5TaGVldHNbTWUuU2hlZXROYW1lc1tmdF1dLE1lLGZ0KSk7cmV0dXJuIFVlLnB1c2goIiAgICA8L29mZmljZTpzcHJlYWRzaGVldD5cbiIpLFVlLnB1c2goIiAgPC9vZmZpY2U6Ym9keT5cbiIpLFVlLnB1c2goImZv''@;'; put 'put ''ZHMiPT1qZS5ib29rVHlwZT8iPC9vZmZpY2U6ZG9jdW1lbnQ+IjoiPC9vZmZpY2U6ZG9jdW1lbnQtY29udGVudD4iKSxVZS5qb2luKCIiKX19KCk7ZnVuY3Rpb24gVDAodyxQKXtpZigiZm9kcyI9PVAuYm9va1R5cGUpcmV0dXJuIEEwKHcsUCk7dmFyIEQ9TW4oKSxlZT0iIixvZT1bXSxnZT1b''@;'; put 'put ''XTtyZXR1cm4gR3QoRCxlZT0ibWltZXR5cGUiLCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IiksR3QoRCxlZT0iY29udGVudC54bWwiLEEwKHcsUCkpLG9lLnB1c2goW2VlLCJ0ZXh0L3htbCJdKSxnZS5wdXNoKFtlZSwiQ29udGVudEZpbGUiXSksR3Qo''@;'; put 'put ''RCxlZT0ic3R5bGVzLnhtbCIsYmYodyxQKSksb2UucHVzaChbZWUsInRleHQveG1sIl0pLGdlLnB1c2goW2VlLCJTdHlsZXNGaWxlIl0pLEd0KEQsZWU9Im1ldGEueG1sIixCbitfbSgpKSxvZS5wdXNoKFtlZSwidGV4dC94bWwiXSksZ2UucHVzaChbZWUsIk1ldGFkYXRhRmlsZSJdKSxHdChE''@;'; put 'put ''LGVlPSJtYW5pZmVzdC5yZGYiLGZ1bmN0aW9uIGcyKHcpe3ZhciBQPVtCbl07UC5wdXNoKCc8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPlxuJyk7Zm9yKHZhciBEPTA7RCE9dy5sZW5ndGg7KytEKVAucHVzaChRMSh3W0Rd''@;'; put 'put ''WzBdLHdbRF1bMV0pKSxQLnB1c2goWm8oIiIsd1tEXVswXSkpO3JldHVybiBQLnB1c2goUTEoIiIsIkRvY3VtZW50IiwicGtnIikpLFAucHVzaCgiPC9yZGY6UkRGPiIpLFAuam9pbigiIil9KGdlKSksb2UucHVzaChbZWUsImFwcGxpY2F0aW9uL3JkZit4bWwiXSksR3QoRCxlZT0iTUVUQS1J''@;'; put 'put ''TkYvbWFuaWZlc3QueG1sIixmdW5jdGlvbiBxZih3KXt2YXIgUD1bQm5dO1AucHVzaCgnPG1hbmlmZXN0Om1hbmlmZXN0IHhtbG5zOm1hbmlmZXN0PSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1hbmlmZXN0OjEuMCIgbWFuaWZlc3Q6dmVyc2lvbj0iMS4yIj5cbicp''@;'; put 'put ''LFAucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9Ii8iIG1hbmlmZXN0OnZlcnNpb249IjEuMiIgbWFuaWZlc3Q6bWVkaWEtdHlwZT0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCIvPlxuJyk7Zm9yKHZhciBEPTA7''@;'; put 'put ''RDx3Lmxlbmd0aDsrK0QpUC5wdXNoKCcgIDxtYW5pZmVzdDpmaWxlLWVudHJ5IG1hbmlmZXN0OmZ1bGwtcGF0aD0iJyt3W0RdWzBdKyciIG1hbmlmZXN0Om1lZGlhLXR5cGU9Iicrd1tEXVsxXSsnIi8+XG4nKTtyZXR1cm4gUC5wdXNoKCI8L21hbmlmZXN0Om1hbmlmZXN0PiIpLFAuam9pbigi''@;'; put 'put ''Iil9KG9lKSksRH1mdW5jdGlvbiBfZih3KXtyZXR1cm4gZnVuY3Rpb24oRCxlZSl7dmFyIG9lPWZ1bmN0aW9uIHNPKHcsUCl7aWYoIVApcmV0dXJuIDA7dmFyIEQ9dy5TaGVldE5hbWVzLmluZGV4T2YoUCk7aWYoLTE9PUQpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrUCk7''@;'; put 'put ''cmV0dXJuIER9KEQsZWUuc2hlZXQpO3JldHVybiB3LmZyb21fc2hlZXQoRC5TaGVldHNbRC5TaGVldE5hbWVzW29lXV0sZWUsRCl9fXZhciBKVj1fZihZYyksUVY9X2Yoe2Zyb21fc2hlZXQ6S3N9KSxlQj1fZih0eXBlb2Ygc188InUiP3NfOnt9KSx0Qj1fZih0eXBlb2YgZ3A8InUiP2dwOnt9''@;'; put 'put ''KSxadz1fZih0eXBlb2YgdWY8InUiP3VmOnt9KSx2Zz1fZih0eXBlb2YgZDg8InUiP2Q4Ont9KSxuQj1fZih7ZnJvbV9zaGVldDptQn0pLHVPPV9mKHR5cGVvZiBzaDwidSI/c2g6e30pLHJCPV9mKHR5cGVvZiBEbTwidSI/RG06e30pLHB1PVQoNzc5MDMpfHx0eXBlb2Ygd2luZG93PCJ1IiYm''@;'; put 'put ''d2luZG93LmNyeXB0b0Jyb3dzZXJpZnk7aWYoIXB1KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgY3J5cHRvIGV4dGVuc2lvbnMhIik7dmFyIFl3PXtTSEE1MTI6InNoYTUxMiIsU0hBMjU2OiJzaGEyNTYiLFNIQTM4NDoic2hhMzg0IixTSEExOiJzaGExIixNRDU6Im1kNSIsTUQ0OiJt''@;'; put 'put ''ZDQiLE1EMjoibWQyIn07ZnVuY3Rpb24gdHModyxQKXtzd2l0Y2goUD0oUHx8IiIpLnJlcGxhY2UoLy0vZywiIikpe2Nhc2UiU0hBLTUxMiI6Y2FzZSJTSEE1MTIiOnJldHVybiBuZXcgcHUuY3JlYXRlSGFzaCgic2hhNTEyIikudXBkYXRlKHcpLmRpZ2VzdCgpO2Nhc2UiU0hBLTEiOmNhc2Ui''@;'; put 'put ''U0hBMSI6cmV0dXJuIG5ldyBwdS5jcmVhdGVIYXNoKCJzaGExIikudXBkYXRlKHcpLmRpZ2VzdCgpO2Nhc2UiTUQyIjpyZXR1cm4gbmV3IHB1LmNyZWF0ZUhhc2goIm1kMiIpLnVwZGF0ZSh3KS5kaWdlc3QoKTtkZWZhdWx0OmlmKFl3W1BdKXJldHVybiBuZXcgcHUuY3JlYXRlSGFzaChZd1tQ''@;'; put 'put ''XSkudXBkYXRlKHcpLmRpZ2VzdCgpO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgaGFzaCBhbGdvcml0aG0gIitQKX19ZnVuY3Rpb24gd2YodyxQLEQpe2lmKCJyYzIiPT1EKXRocm93IlVuc3VwcG9ydGVkIFJDMiI7dmFyIGVlPXB1LmNyZWF0ZURlY2lwaGVyaXYoRHx8ImFlcy0yNTYt''@;'; put 'put ''Y2JjIix3LFApO3JldHVybiBlZS5zZXRBdXRvUGFkZGluZyghMSksZWV9ZnVuY3Rpb24gY3Yodyl7cmV0dXJuWygiMDAiKygyNTUmdykudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKHc+Pj44JjI1NSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKHc+Pj4xNiYyNTUpLnRv''@;'; put 'put ''U3RyaW5nKDE2KSkuc2xpY2UoLTIpLCgiMDAiKyh3Pj4+MjQmMjU1KS50b1N0cmluZygxNikpLnNsaWNlKC0yKV0uam9pbigiIil9dmFyIGZ2PWZ1bmN0aW9uKHcsUCxEKXtmb3IodmFyIGVlPSJzdHJpbmciPT10eXBlb2YgUD9CdWZmZXIuZnJvbShQLCJoZXgiKTpQLG9lPSJzdHJpbmciPT10''@;'; put 'put ''eXBlb2Ygdz9CdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLHcpKTp3LGdlPSJzdHJpbmciPT10eXBlb2YgRD9CdWZmZXIuZnJvbShELCJoZXgiKTpELF9lPXRzKG9lLCJNRDUiKSx2ZT1CdWZmZXIuY29uY2F0KFtfZS5zbGljZSgwLDUpLGVlXSksTWU9MDtNZTw0OysrTWUp''@;'; put 'put ''dmU9QnVmZmVyLmNvbmNhdChbdmUsdmVdKTt2YXIgamU9dHModmUsIk1ENSIpO3JldHVybih0cyhCdWZmZXIuY29uY2F0KFtqZS5zbGljZSgwLDUpLGdlXSksIk1ENSIpLnRvU3RyaW5nKCJoZXgiKSsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKS5zbGljZSgwLDMyKX0sd3I9''@;'; put 'put ''ZnVuY3Rpb24odyxQLEQpe3ZhciBlZT0ic3RyaW5nIj09dHlwZW9mIFA/QnVmZmVyLmZyb20oUCwiaGV4Iik6UCxvZT0ic3RyaW5nIj09dHlwZW9mIHc/QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCx3KSk6dyxnZT0ic3RyaW5nIj09dHlwZW9mIEQ/QnVmZmVyLmZyb20o''@;'; put 'put ''RCwiaGV4Iik6RCxfZT10cyhCdWZmZXIuY29uY2F0KFtlZSxvZV0pLCJTSEExIik7cmV0dXJuIHRzKEJ1ZmZlci5jb25jYXQoW19lLGdlXSksIlNIQTEiKX0sTzA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBQKCl7fVAucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKHV0KXt0aGlzLl9pPTA7dmFyIHd0''@;'; put 'put ''PXRoaXMuX2J1aWxkKHV0LCIiKTtyZXR1cm4iIj09PXd0PyIiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+Jyt3dH0sUC5wcm90b3R5cGUuX2J1aWxkPWZ1bmN0aW9uKHV0LHd0KXtpZih0aGlzLl9pKyslMWU2PT0wJiYodGhpcy5fYz13''@;'; put 'put ''dFswXSksbnVsbD09dXR8fCJvYmplY3QiIT10eXBlb2YgdXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB1dCludWxsIT11dCYmKHd0Kz1mdW5jdGlvbiB3KHV0LHd0KXtyZXR1cm4gbnVsbD09dXR8fCh1dD11dC50b1N0cmluZygpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZs''@;'; put 'put ''dDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSx3dCYmKHV0PXV0LnJlcGxhY2UoLyIvZywiJnF1b3Q7IikpKSx1dH0odXQpKTtlbHNle2lmKCF1dC5uYW1lKXRocm93IG5ldyBFcnJvcigiWE1MIG5vZGUgZG9lcyBub3QgaGF2ZSBuYW1lOiAiK0pTT04uc3RyaW5naWZ5KHV0KSk7d3QrPSI8Iit1''@;'; put 'put ''dC5uYW1lO3ZhciBIdD10aGlzO3d0Kz11dC5hdHRyaWJ1dGVzJiZGbCh1dC5hdHRyaWJ1dGVzKXx8IiIsQXJyYXkuaXNBcnJheSh1dC5jaGlsZHJlbikmJjAhPXV0LmNoaWxkcmVuLmxlbmd0aD8od3QrPSI+Iix1dC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGt0KXt3dD1IdC5fYnVpbGQo''@;'; put 'put ''a3Qsd3QpfSksd3QrPSI8LyIrdXQubmFtZSsiPiIpOnd0Kz0iLz4ifXJldHVybiB3dH07dmFyIEQ9QnVmZmVyLmZyb20oWzQsMCw0LDAsNjQsMCwwLDBdKSxnZT17ZGF0YUludGVncml0eTp7aG1hY0tleTpCdWZmZXIuZnJvbShbOTUsMTc4LDE3MywxLDEyLDE4NSwyMjUsMjQ2XSksaG1hY1Zh''@;'; put 'put ''bHVlOkJ1ZmZlci5mcm9tKFsxNjAsMTAzLDEyNywyLDE3OCw0NCwxMzIsNTFdKX0sa2V5OkJ1ZmZlci5mcm9tKFsyMCwxMTAsMTEsMjMxLDE3MSwxNzIsMjA4LDIxNF0pLHZlcmlmaWVySGFzaDp7aW5wdXQ6QnVmZmVyLmZyb20oWzI1NCwxNjcsMjEwLDExOCw1OSw3NSwxNTgsMTIxXSksdmFs''@;'; put 'put ''dWU6QnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4LDk3LDUyLDc4XSl9fTtmdW5jdGlvbiBfZSh1dCx3dCxIdCxrdCxUdCxZdCl7dmFyIGduPXd0LnRvTG93ZXJDYXNlKCkrIi0iKzgqa3QubGVuZ3RoO2lmKCJDaGFpbmluZ01vZGVDQkMiIT09SHQpdGhyb3cgbmV3IEVycm9yKCJVbmtu''@;'; put 'put ''b3duIGNpcGhlciBjaGFpbmluZzogIitIdCk7dmFyIHFuPXB1W3V0PyJjcmVhdGVDaXBoZXJpdiI6ImNyZWF0ZURlY2lwaGVyaXYiXShnbis9Ii1jYmMiLGt0LFR0KTtxbi5zZXRBdXRvUGFkZGluZyghMSk7dmFyIGZuPXFuLnVwZGF0ZShZdCksS249W2ZuXTt0cnl7dmFyIHpuPXFuLmZpbmFs''@;'; put 'put ''KCk7S24ucHVzaCh6bil9Y2F0Y2h7fXJldHVybiBCdWZmZXIuY29uY2F0KEtuKX1mdW5jdGlvbiB2ZSh1dCl7dXQ9dXQudG9Mb3dlckNhc2UoKTt2YXIgd3Q9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYocHUuZ2V0SGFzaGVzKCkuaW5kZXhPZih1dCk8MCl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlVuc3VwcG9ydGVkIGhhc2ggYWxnb3JpdGhtICIrdXQpO3ZhciBrdD1wdS5jcmVhdGVIYXNoKHV0KTtyZXR1cm4ga3QudXBkYXRlKEJ1ZmZlci5jb25jYXQod3QpKSxrdC5kaWdlc3QoKX1mdW5jdGlvbiBNZSh1dCx3dCxIdCxrdCl7Im51bWJlciI9PXR5cGVvZiBrdCYmKGt0PWplKGt0KSk7''@;'; put 'put ''dmFyIFR0PXZlKHV0LHd0LGt0KTtpZihUdC5sZW5ndGg8SHQpe3ZhciBZdD1CdWZmZXIuYWxsb2MoSHQsNTQpO1R0LmNvcHkoWXQpLFR0PVl0fWVsc2UgVHQubGVuZ3RoPkh0JiYoVHQ9VHQuc2xpY2UoMCxIdCkpO3JldHVybiBUdH1mdW5jdGlvbiBqZSh1dCx3dCl7dmFyIEh0PUJ1ZmZlci5h''@;'; put 'put ''bGxvYyh3dHx8NCk7cmV0dXJuIEh0LndyaXRlVUludDMyTEUodXQsMCksSHR9ZnVuY3Rpb24gVWUodXQsd3QsSHQsa3QsVHQsWXQpe2Zvcih2YXIgcW49dmUod3QsSHQsQnVmZmVyLmZyb20odXQsInV0ZjE2bGUiKSksZm49MDtmbjxrdDtmbisrKXFuPXZlKHd0LGplKGZuKSxxbik7dmFyIHpu''@;'; put 'put ''PVR0Lzg7aWYoKHFuPXZlKHd0LHFuLFl0KSkubGVuZ3RoPHpuKXt2YXIgT249QnVmZmVyLmFsbG9jKHpuLDU0KTtxbi5jb3B5KE9uKSxxbj1Pbn1lbHNlIHFuLmxlbmd0aD56biYmKHFuPXFuLnNsaWNlKDAsem4pKTtyZXR1cm4gcW59cmV0dXJuIHB1LnJhbmRvbUJ5dGVzfHwocHUucmFuZG9t''@;'; put 'put ''Qnl0ZXM9ZnVuY3Rpb24odXQpe2Zvcih2YXIgd3Q9QnVmZmVyLmFsbG9jKHV0KSxIdD0wO0h0PHV0OysrSHQpd3RbSHRdPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpO3JldHVybiB3dH0pLGZ1bmN0aW9uIE10KHV0LHd0KXtpZigic3RyaW5nIj09dHlwZW9mIHV0KXJldHVybiBNdChC''@;'; put 'put ''dWZmZXIuZnJvbSh1dCwiYmluYXJ5Iiksd3QpO3ZhciBIdD1wdS5yYW5kb21CeXRlcygzMiksa3Q9e3BhY2thZ2U6e2NpcGhlckFsZ29yaXRobToiQUVTIixjaXBoZXJDaGFpbmluZzoiQ2hhaW5pbmdNb2RlQ0JDIixzYWx0VmFsdWU6cHUucmFuZG9tQnl0ZXMoMTYpLGhhc2hBbGdvcml0aG06''@;'; put 'put ''IlNIQTUxMiIsaGFzaFNpemU6NjQsYmxvY2tTaXplOjE2LGtleUJpdHM6OCpIdC5sZW5ndGh9LGtleTp7Y2lwaGVyQWxnb3JpdGhtOiJBRVMiLGNpcGhlckNoYWluaW5nOiJDaGFpbmluZ01vZGVDQkMiLHNhbHRWYWx1ZTpwdS5yYW5kb21CeXRlcygxNiksaGFzaEFsZ29yaXRobToiU0hBNTEy''@;'; put 'put ''IixoYXNoU2l6ZTo2NCxibG9ja1NpemU6MTYsc3BpbkNvdW50OjEsa2V5Qml0czoyNTZ9fSxUdD1mdW5jdGlvbiBYZSh1dCx3dCxIdCxrdCxUdCxZdCxnbixxbil7Zm9yKHZhciBmbj1bXSxLbj11dD8wOjgsem49MCxPbj0wLGVyPTA7ZXI8cW4ubGVuZ3RoOyl7KGVyPShPbj1lcikrNDA5Nik+''@;'; put 'put ''cW4ubGVuZ3RoJiYoZXI9cW4ubGVuZ3RoKTt2YXIgdHI9cW4uc2xpY2UoT24rS24sZXIrS24pLFluPXRyLmxlbmd0aCVUdDtZbiYmKHRyPUJ1ZmZlci5jb25jYXQoW3RyLEJ1ZmZlci5hbGxvYyhUdC1ZbildKSk7dmFyIGxpPV9lKHV0LHd0LEh0LGduLE1lKGt0LFl0LFR0LHpuKSx0cik7Zm4u''@;'; put 'put ''cHVzaChsaSksem4rK312YXIgRWk9QnVmZmVyLmNvbmNhdChmbik7aWYodXQpRWk9QnVmZmVyLmNvbmNhdChbamUocW4ubGVuZ3RoLDgpLEVpXSk7ZWxzZXt2YXIgSWk9cW4ucmVhZFVJbnQzMkxFKDApO0VpPUVpLnNsaWNlKDAsSWkpfXJldHVybiBFaX0oITAsa3QucGFja2FnZS5jaXBoZXJB''@;'; put 'put ''bGdvcml0aG0sa3QucGFja2FnZS5jaXBoZXJDaGFpbmluZyxrdC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sa3QucGFja2FnZS5ibG9ja1NpemUsa3QucGFja2FnZS5zYWx0VmFsdWUsSHQsdXQpLFl0PXB1LnJhbmRvbUJ5dGVzKDY0KSxnbj1NZShrdC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sa3Qu''@;'; put 'put ''cGFja2FnZS5zYWx0VmFsdWUsa3QucGFja2FnZS5ibG9ja1NpemUsZ2UuZGF0YUludGVncml0eS5obWFjS2V5KSxxbj1fZSghMCxrdC5wYWNrYWdlLmNpcGhlckFsZ29yaXRobSxrdC5wYWNrYWdlLmNpcGhlckNoYWluaW5nLEh0LGduLFl0KSxmbj1mdW5jdGlvbiBpdCh1dCx3dCl7dXQ9dXQu''@;'; put 'put ''dG9Mb3dlckNhc2UoKTt2YXIgSHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMik7aWYocHUuZ2V0SGFzaGVzKCkuaW5kZXhPZih1dCk8MCl0aHJvdyBuZXcgRXJyb3IoIkhNQUMgYWxnb3JpdGhtICciK3V0KyInIG5vdCBzdXBwb3J0ZWQhIik7dmFyIFR0PXB1LmNyZWF0ZUhtYWModXQsd3Qp''@;'; put 'put ''O3JldHVybiBUdC51cGRhdGUoQnVmZmVyLmNvbmNhdChIdCkpLFR0LmRpZ2VzdCgpfShrdC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sWXQsVHQpLEtuPU1lKGt0LnBhY2thZ2UuaGFzaEFsZ29yaXRobSxrdC5wYWNrYWdlLnNhbHRWYWx1ZSxrdC5wYWNrYWdlLmJsb2NrU2l6ZSxnZS5kYXRhSW50''@;'; put 'put ''ZWdyaXR5LmhtYWNWYWx1ZSksem49X2UoITAsa3QucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sa3QucGFja2FnZS5jaXBoZXJDaGFpbmluZyxIdCxLbixmbik7a3QuZGF0YUludGVncml0eT17ZW5jcnlwdGVkSG1hY0tleTpxbixlbmNyeXB0ZWRIbWFjVmFsdWU6em59O3ZhciBPbj1VZSh3dCxr''@;'; put 'put ''dC5rZXkuaGFzaEFsZ29yaXRobSxrdC5rZXkuc2FsdFZhbHVlLGt0LmtleS5zcGluQ291bnQsa3Qua2V5LmtleUJpdHMsZ2Uua2V5KTtrdC5rZXkuZW5jcnlwdGVkS2V5VmFsdWU9X2UoITAsa3Qua2V5LmNpcGhlckFsZ29yaXRobSxrdC5rZXkuY2lwaGVyQ2hhaW5pbmcsT24sa3Qua2V5LnNh''@;'; put 'put ''bHRWYWx1ZSxIdCk7dmFyIGVyPXB1LnJhbmRvbUJ5dGVzKDE2KSx0cj1VZSh3dCxrdC5rZXkuaGFzaEFsZ29yaXRobSxrdC5rZXkuc2FsdFZhbHVlLGt0LmtleS5zcGluQ291bnQsa3Qua2V5LmtleUJpdHMsZ2UudmVyaWZpZXJIYXNoLmlucHV0KTtrdC5rZXkuZW5jcnlwdGVkVmVyaWZpZXJI''@;'; put 'put ''YXNoSW5wdXQ9X2UoITAsa3Qua2V5LmNpcGhlckFsZ29yaXRobSxrdC5rZXkuY2lwaGVyQ2hhaW5pbmcsdHIsa3Qua2V5LnNhbHRWYWx1ZSxlcik7dmFyIFluPXZlKGt0LmtleS5oYXNoQWxnb3JpdGhtLGVyKSxqcj1VZSh3dCxrdC5rZXkuaGFzaEFsZ29yaXRobSxrdC5rZXkuc2FsdFZhbHVl''@;'; put 'put ''LGt0LmtleS5zcGluQ291bnQsa3Qua2V5LmtleUJpdHMsZ2UudmVyaWZpZXJIYXNoLnZhbHVlKTtrdC5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoVmFsdWU9X2UoITAsa3Qua2V5LmNpcGhlckFsZ29yaXRobSxrdC5rZXkuY2lwaGVyQ2hhaW5pbmcsanIsa3Qua2V5LnNhbHRWYWx1ZSxZbik7''@;'; put 'put ''dmFyIGxpPWZ1bmN0aW9uIGZ0KHV0KXt2YXIgd3Q9e25hbWU6ImVuY3J5cHRpb24iLGF0dHJpYnV0ZXM6e3htbG5zOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L2VuY3J5cHRpb24iLCJ4bWxuczpwIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZp''@;'; put 'put ''Y2UvMjAwNi9rZXlFbmNyeXB0b3IvcGFzc3dvcmQiLCJ4bWxuczpjIjoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9rZXlFbmNyeXB0b3IvY2VydGlmaWNhdGUifSxjaGlsZHJlbjpbe25hbWU6ImtleURhdGEiLGF0dHJpYnV0ZXM6e3NhbHRTaXplOnV0LnBhY2th''@;'; put 'put ''Z2Uuc2FsdFZhbHVlLmxlbmd0aCxibG9ja1NpemU6dXQucGFja2FnZS5ibG9ja1NpemUsa2V5Qml0czp1dC5wYWNrYWdlLmtleUJpdHMsaGFzaFNpemU6dXQucGFja2FnZS5oYXNoU2l6ZSxjaXBoZXJBbGdvcml0aG06dXQucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sY2lwaGVyQ2hhaW5pbmc6''@;'; put 'put ''dXQucGFja2FnZS5jaXBoZXJDaGFpbmluZyxoYXNoQWxnb3JpdGhtOnV0LnBhY2thZ2UuaGFzaEFsZ29yaXRobSxzYWx0VmFsdWU6dXQucGFja2FnZS5zYWx0VmFsdWUudG9TdHJpbmcoImJhc2U2NCIpfX0se25hbWU6ImRhdGFJbnRlZ3JpdHkiLGF0dHJpYnV0ZXM6e2VuY3J5cHRlZEhtYWNL''@;'; put 'put ''ZXk6dXQuZGF0YUludGVncml0eS5lbmNyeXB0ZWRIbWFjS2V5LnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRIbWFjVmFsdWU6dXQuZGF0YUludGVncml0eS5lbmNyeXB0ZWRIbWFjVmFsdWUudG9TdHJpbmcoImJhc2U2NCIpfX0se25hbWU6ImtleUVuY3J5cHRvcnMiLGNoaWxkcmVuOlt7''@;'; put 'put ''bmFtZToia2V5RW5jcnlwdG9yIixhdHRyaWJ1dGVzOnt1cmk6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL3Bhc3N3b3JkIn0sY2hpbGRyZW46W3tuYW1lOiJwOmVuY3J5cHRlZEtleSIsYXR0cmlidXRlczp7c3BpbkNvdW50OnV0LmtleS5z''@;'; put 'put ''cGluQ291bnQsc2FsdFNpemU6dXQua2V5LnNhbHRWYWx1ZS5sZW5ndGgsYmxvY2tTaXplOnV0LmtleS5ibG9ja1NpemUsa2V5Qml0czp1dC5rZXkua2V5Qml0cyxoYXNoU2l6ZTp1dC5rZXkuaGFzaFNpemUsY2lwaGVyQWxnb3JpdGhtOnV0LmtleS5jaXBoZXJBbGdvcml0aG0sY2lwaGVyQ2hh''@;'; put 'put ''aW5pbmc6dXQua2V5LmNpcGhlckNoYWluaW5nLGhhc2hBbGdvcml0aG06dXQua2V5Lmhhc2hBbGdvcml0aG0sc2FsdFZhbHVlOnV0LmtleS5zYWx0VmFsdWUudG9TdHJpbmcoImJhc2U2NCIpLGVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0OnV0LmtleS5lbmNyeXB0ZWRWZXJpZmllckhhc2hJ''@;'; put 'put ''bnB1dC50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkVmVyaWZpZXJIYXNoVmFsdWU6dXQua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRLZXlWYWx1ZTp1dC5rZXkuZW5jcnlwdGVkS2V5VmFsdWUudG9TdHJpbmcoImJhc2U2NCIp''@;'; put 'put ''fX1dfV19XX0sa3Q9KG5ldyBQKS5idWlsZCh3dCk7cmV0dXJuIEJ1ZmZlci5jb25jYXQoW0QsQnVmZmVyLmZyb20oa3QsInV0ZjgiKV0pfShrdCksRWk9TmUudXRpbHMuY2ZiX25ldygpO3JldHVybiBOZS51dGlscy5jZmJfYWRkKEVpLCJFbmNyeXB0aW9uSW5mbyIsbGkpLE5lLnV0aWxzLmNm''@;'; put 'put ''Yl9hZGQoRWksIkVuY3J5cHRlZFBhY2thZ2UiLFR0KSxFaX19KCk7ZnVuY3Rpb24geWcodyl7cmV0dXJuIGZ1bmN0aW9uKEQpe2Zvcih2YXIgZWU9MDtlZSE9dy5sZW5ndGg7KytlZSl7dmFyIG9lPXdbZWVdO3ZvaWQgMD09PURbb2VbMF1dJiYoRFtvZVswXV09b2VbMV0pLCJuIj09PW9lWzJd''@;'; put 'put ''JiYoRFtvZVswXV09TnVtYmVyKERbb2VbMF1dKSl9fX12YXIgZHY9ZnVuY3Rpb24odyl7eWcoW1siY2VsbE5GIiwhMV0sWyJjZWxsSFRNTCIsITBdLFsiY2VsbEZvcm11bGEiLCEwXSxbImNlbGxTdHlsZXMiLCExXSxbImNlbGxUZXh0IiwhMF0sWyJjZWxsRGF0ZXMiLCExXSxbInNoZWV0U3R1''@;'; put 'put ''YnMiLCExXSxbInNoZWV0Um93cyIsMCwibiJdLFsiYm9va0RlcHMiLCExXSxbImJvb2tTaGVldHMiLCExXSxbImJvb2tQcm9wcyIsITFdLFsiYm9va0ZpbGVzIiwhMV0sWyJib29rVkJBIiwhMV0sWyJwYXNzd29yZCIsIiJdLFsiV1RGIiwhMV1dKSh3KSx3LmJvb2tJbWFnZXMmJih3LmNlbGxT''@;'; put 'put ''dHlsZXM9ITApfSwkdz15ZyhbWyJjZWxsRGF0ZXMiLCExXSxbImJvb2tTU1QiLCExXSxbImJvb2tUeXBlIiwieGxzeCJdLFsiY29tcHJlc3Npb24iLCExXSxbIldURiIsITFdXSk7ZnVuY3Rpb24gZk8odyl7cmV0dXJuIE5pLldTLmluZGV4T2Yodyk+LTE/InNoZWV0IjpOaS5DUyYmdz09Tmku''@;'; put 'put ''Q1M/ImNoYXJ0IjpOaS5EUyYmdz09TmkuRFM/ImRpYWxvZyI6TmkuTVMmJnc9PU5pLk1TPyJtYWNybyI6dyYmdy5sZW5ndGg/dzoic2hlZXQifXZhciBodj1bXTtmdW5jdGlvbiBvQih3LFAsRCxlZSxvZSxnZSxfZSx2ZSxNZSxqZSxVZSxYZSl7dHJ5e2dlW2VlXT1Qbyhubih3LEQsITApLFAp''@;'; put 'put ''O3ZhciBmdCxpdD1JdCh3LFApO3N3aXRjaCh2ZSl7Y2FzZSJzaGVldCI6ZnQ9ZnVuY3Rpb24gQVYodyxQLEQsZWUsb2UsZ2UsX2UsdmUpe3JldHVybiIuYmluIj09PVAuc2xpY2UoLTQpP2Z1bmN0aW9uIGRWKHcsUCxELGVlLG9lLGdlLF9lKXtpZighdylyZXR1cm4gdzt2YXIgdmU9UHx8e307''@;'; put 'put ''ZWV8fChlZT17IiFpZCI6e319KSxudWxsIT1uZSYmbnVsbD09dmUuZGVuc2UmJih2ZS5kZW5zZT1uZSk7dmFyIGplLE10LHV0LHd0LEh0LGt0LFR0LFl0LGduLHFuLE1lPXZlLmRlbnNlP1tdOnt9LFVlPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LFhlPVtdLGl0PSExLGZ0PSExLGZu''@;'; put 'put ''PVtdO3ZlLmJpZmY9MTIsdmVbIiFyb3ciXT0wO3ZhciBLbj0wLHpuPSExLE9uPVtdLGVyPXt9LHRyPXZlLnN1cGJvb2tzfHxvZS5zdXBib29rc3x8W1tdXTtpZih0ci5zaGFyZWRmPWVyLHRyLmFycmF5Zj1Pbix0ci5TaGVldE5hbWVzPW9lLlNoZWV0TmFtZXN8fG9lLlNoZWV0cy5tYXAoZnVu''@;'; put 'put ''Y3Rpb24odGkpe3JldHVybiB0aS5uYW1lfSksIXZlLnN1cGJvb2tzJiYodmUuc3VwYm9va3M9dHIsb2UuTmFtZXMpKWZvcih2YXIgWW49MDtZbjxvZS5OYW1lcy5sZW5ndGg7KytZbil0clswXVtZbisxXT1vZS5OYW1lc1tZbl07dmFyIGpyPVtdLGxpPVtdLEVpPSExO2lmKEgyWzE2XT17bjoi''@;'; put 'put ''QnJ0U2hvcnRSZWFsIixmOmJUfSx6byh3LGZ1bmN0aW9uKGZyLERuLHZyKXtpZighZnQpc3dpdGNoKHZyKXtjYXNlIDE0ODpqZT1mcjticmVhaztjYXNlIDA6TXQ9ZnIsdmUuc2hlZXRSb3dzJiZ2ZS5zaGVldFJvd3M8PU10LnImJihmdD0hMCksZ249VmEoSHQ9TXQuciksdmVbIiFyb3ciXT1N''@;'; put 'put ''dC5yLChmci5oaWRkZW58fGZyLmhwdHx8bnVsbCE9ZnIubGV2ZWwpJiYoZnIuaHB0JiYoZnIuaHB4PWRmKGZyLmhwdCkpLGxpW2ZyLnJdPWZyKTticmVhaztjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA2OmNhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMTpjYXNl''@;'; put 'put ''IDEzOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpzd2l0Y2godXQ9e3Q6ZnJbMl19LGZyWzJdKXtjYXNlIm4iOnV0LnY9ZnJbMV07YnJlYWs7Y2FzZSJzIjp1dC52PShZdD1aOFtmclsxXV0pLnQsdmUuY2VsbFN0eWxlcyYmKHV0LlI9ZnVuY3Rpb24gZUgodyxQKXtp''@;'; put 'put ''Zih3LlIpcmV0dXJuIHcuUjtpZihQJiZQLkZvbnRzJiYoMSE9dy5yLmxlbmd0aHx8MCE9dy5yWzBdLmljaCkpe3cuUj1bXTt2YXIgRD0wLGVlPXcucltEXSxvZT13LnJbRCsxXTtmb3IoZWUuaWNoPjAmJncuUi5wdXNoKHt0OiJzIix2OncudC5zbGljZSgwLGVlLmljaCl9KTtEPHcuci5sZW5n''@;'; put 'put ''dGgtMTsrK0Qpdy5SLnB1c2goe3Q6InMiLHY6dy50LnNsaWNlKChlZT13LnJbRF0pLmljaCwob2U9dy5yW0QrMV0pLmljaCksczpQLkZvbnRzW2VlLmlmbnRdfSk7cmV0dXJuIHcuUi5wdXNoKHt0OiJzIix2OncudC5zbGljZSgob2V8fGVlKS5pY2gpLHM6UC5Gb250c1sob2V8fGVlKS5pZm50''@;'; put 'put ''XX0pLHcuUn19KFl0LF9lKSk7YnJlYWs7Y2FzZSJiIjp1dC52PSEhZnJbMV07YnJlYWs7Y2FzZSJlIjp1dC52PWZyWzFdLCExIT09dmUuY2VsbFRleHQmJih1dC53PW5hW3V0LnZdKTticmVhaztjYXNlInN0ciI6dXQudD0icyIsdXQudj1mclsxXX1pZigod3Q9X2UuQ2VsbFhmW2ZyWzBdLmlT''@;'; put 'put ''dHlsZVJlZl0pJiZZOCh1dCx3dC5udW1GbXRJZCx3dC5maWxsSWQsd3QuZm9udElkLHd0LmJvcmRlcklkLHZlLDAsX2UpLHZlLmNlbGxTdHlsZXMmJnV0LnMmJnd0LmFsaWdubWVudCYmKHV0LnMuYWxpZ25tZW50PUp0KHd0LmFsaWdubWVudCkpLGt0PS0xPT1mclswXS5jP2t0KzE6ZnJbMF0u''@;'; put 'put ''Yyx2ZS5kZW5zZT8oTWVbSHRdfHwoTWVbSHRdPVtdKSxNZVtIdF1ba3RdPXV0KTpNZVtCYShrdCkrZ25dPXV0LHZlLmNlbGxGb3JtdWxhKXtmb3Ioem49ITEsS249MDtLbjxPbi5sZW5ndGg7KytLbil7dmFyIHJyPU9uW0tuXTtNdC5yPj1yclswXS5zLnImJk10LnI8PXJyWzBdLmUuciYma3Q+''@;'; put 'put ''PXJyWzBdLnMuYyYma3Q8PXJyWzBdLmUuYyYmKHV0LkY9Vm8ocnJbMF0pLHpuPSEwKX0hem4mJmZyLmxlbmd0aD4zJiYodXQuZj1mclszXSl9aWYoVWUucy5yPk10LnImJihVZS5zLnI9TXQuciksVWUucy5jPmt0JiYoVWUucy5jPWt0KSxVZS5lLnI8TXQuciYmKFVlLmUucj1NdC5yKSxVZS5l''@;'; put 'put ''LmM8a3QmJihVZS5lLmM9a3QpLHZlLmNlbGxEYXRlcyYmd3QmJiJuIj09dXQudCYmUy5pc19kYXRlKFMuX3RhYmxlW3d0Lm51bUZtdElkXSkpe3ZhciB4bj1TLnBhcnNlX2RhdGVfY29kZSh1dC52KTt4biYmKHV0LnQ9ImQiLHV0LnY9bmV3IERhdGUoeG4ueSx4bi5tLTEseG4uZCx4bi5ILHhu''@;'; put 'put ''Lk0seG4uUyx4bi51KSl9YnJlYWs7Y2FzZSAxOmNhc2UgMTI6aWYoIXZlLnNoZWV0U3R1YnN8fGl0KWJyZWFrO3V0PXt0OiJ6Iix2OnZvaWQgMH0sa3Q9LTE9PWZyWzBdLmM/a3QrMTpmclswXS5jLCh3dD1fZS5DZWxsWGZbZnJbMF0uaVN0eWxlUmVmXSkmJlk4KHV0LHd0Lm51bUZtdElkLHd0''@;'; put 'put ''LmZpbGxJZCx3dC5mb250SWQsd3QuYm9yZGVySWQsdmUsMCxfZSksdmUuY2VsbFN0eWxlcyYmdXQucyYmd3QuYWxpZ25tZW50JiYodXQucy5hbGlnbm1lbnQ9SnQod3QuYWxpZ25tZW50KSksdmUuZGVuc2U/KE1lW0h0XXx8KE1lW0h0XT1bXSksTWVbSHRdW2t0XT11dCk6TWVbQmEoa3QpK2du''@;'; put 'put ''XT11dCxVZS5zLnI+TXQuciYmKFVlLnMucj1NdC5yKSxVZS5zLmM+a3QmJihVZS5zLmM9a3QpLFVlLmUucjxNdC5yJiYoVWUuZS5yPU10LnIpLFVlLmUuYzxrdCYmKFVlLmUuYz1rdCk7YnJlYWs7Y2FzZSAxNzY6Zm4ucHVzaChmcik7YnJlYWs7Y2FzZSA0OTQ6dmFyIG1yPWVlWyIhaWQiXVtm''@;'; put 'put ''ci5yZWxJZF07Zm9yKG1yPyhmci5UYXJnZXQ9bXIuVGFyZ2V0LGZyLmxvYyYmKGZyLlRhcmdldCs9IiMiK2ZyLmxvYyksZnIuUmVsPW1yKToiIj09ZnIucmVsSWQmJihmci5UYXJnZXQ9IiMiK2ZyLmxvYyksSHQ9ZnIucmZ4LnMucjtIdDw9ZnIucmZ4LmUucjsrK0h0KWZvcihrdD1mci5yZngu''@;'; put 'put ''cy5jO2t0PD1mci5yZnguZS5jOysra3QpdmUuZGVuc2U/KE1lW0h0XXx8KE1lW0h0XT1bXSksTWVbSHRdW2t0XXx8KE1lW0h0XVtrdF09e3Q6InoiLHY6dm9pZCAwfSksTWVbSHRdW2t0XS5sPWZyKTooVHQ9cGkoe2M6a3QscjpIdH0pLE1lW1R0XXx8KE1lW1R0XT17dDoieiIsdjp2b2lkIDB9''@;'; put 'put ''KSxNZVtUdF0ubD1mcik7YnJlYWs7Y2FzZSA0MjY6aWYoIXZlLmNlbGxGb3JtdWxhKWJyZWFrO09uLnB1c2goZnIpLChxbj12ZS5kZW5zZT9NZVtIdF1ba3RdOk1lW0JhKGt0KStnbl0pLmY9RHMoZnJbMV0sVWUse3I6TXQucixjOmt0fSx0cix2ZSkscW4uRj1WbyhmclswXSk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSA0Mjc6aWYoIXZlLmNlbGxGb3JtdWxhKWJyZWFrO2VyW3BpKGZyWzBdLnMpXT1mclsxXSwocW49dmUuZGVuc2U/TWVbSHRdW2t0XTpNZVtCYShrdCkrZ25dKS5mPURzKGZyWzFdLFVlLHtyOk10LnIsYzprdH0sdHIsdmUpO2JyZWFrO2Nhc2UgNjA6aWYoIXZlLmNlbGxTdHlsZXMpYnJlYWs7''@;'; put 'put ''Zm9yKDtmci5lPj1mci5zOylqcltmci5lLS1dPXt3aWR0aDpmci53LzI1NixoaWRkZW46ISEoMSZmci5mbGFncyksbGV2ZWw6ZnIubGV2ZWx9LEVpfHwoRWk9ITApLF9jKGpyW2ZyLmUrMV0pO2JyZWFrO2Nhc2UgMTYxOk1lWyIhYXV0b2ZpbHRlciJdPXtyZWY6Vm8oZnIpfTticmVhaztjYXNl''@;'; put 'put ''IDQ3NjpNZVsiIW1hcmdpbnMiXT1mcjticmVhaztjYXNlIDE0NzpvZS5TaGVldHNbRF18fChvZS5TaGVldHNbRF09e30pLGZyLm5hbWUmJihvZS5TaGVldHNbRF0uQ29kZU5hbWU9ZnIubmFtZSksKGZyLmFib3ZlfHxmci5sZWZ0KSYmKE1lWyIhb3V0bGluZSJdPXthYm92ZTpmci5hYm92ZSxs''@;'; put 'put ''ZWZ0OmZyLmxlZnR9KTticmVhaztjYXNlIDEzNzpvZS5WaWV3c3x8KG9lLlZpZXdzPVt7fV0pLG9lLlZpZXdzWzBdfHwob2UuVmlld3NbMF09e30pLGZyLlJUTCYmKG9lLlZpZXdzWzBdLlJUTD0hMCksZnIuZ3JpZHx8KG9lLlZpZXdzWzBdLmdyaWQ9ITEsTWVbIiFncmlkbGluZXMiXT0hMSk7''@;'; put 'put ''YnJlYWs7Y2FzZSA0ODU6TWVbIiFzaGVldEZvcm1hdCJdPWZyO2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMDUzOiFmdW5jdGlvbiBjVih3LFAsRCxlZSl7aWYoUCl7dmFyIG9lPXtyZWY6UC5zcXJmeCx0OlAudH07UC5vcCYmKG9lLm9wPVAub3ApO3ZhciBnZT0iIixfZT0iIix2ZT1QLnNxcmZ4PyJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgUC5zcXJmeD9QaShQLnNxcmZ4LnNwbGl0KCIsIilbMF0pOlAuc3FyZng6bnVsbDtpZihQLmYxJiYoZ2U9RHMoUC5mMSx2ZSxudWxsLEQsZWUsITApKSxQLmYyJiYoX2U9RHMoUC5mMix2ZSxudWxsLEQsZWUsITApKSxQLm9wJiZbIklOIiwiT1QiXS5pbmRleE9mKFAu''@;'; put 'put ''b3ApPj0tMSlvZS5taW49Z2Usb2UubWF4PV9lO2Vsc2UgaWYoUC5vcClvZS52PWdlO2Vsc2UgdHJ5e3N3aXRjaChQLnQpe2Nhc2UiTGlzdCI6aWYoIlB0Z1N0ciI9PT1QLmYxWzBdWzBdWzBdJiYxPT1QLmYxWzBdLmxlbmd0aCl7b2UubD1QLmYxWzBdWzBdWzFdLnNwbGl0KCIsIik7YnJlYWt9''@;'; put 'put ''Y2FzZSJDdXN0b20iOm9lLmY9Z2V9fWNhdGNoe313WyIhdmFsaWRhdGlvbnMiXXx8KHdbIiF2YWxpZGF0aW9ucyJdPVtdKSx3WyIhdmFsaWRhdGlvbnMiXS5wdXNoKG9lKX19KE1lLGZyLHRyLHZlKTticmVhaztjYXNlIDE1MTpNZVsiIWZyZWV6ZSJdPWZyWzBdO2JyZWFrO2Nhc2UgMTUyOk1l''@;'; put 'put ''WyIhc2VsIl09ZnI7YnJlYWs7Y2FzZSAxNzU6Y2FzZSA2NDQ6Y2FzZSA2MjU6Y2FzZSA1NjI6Y2FzZSAzOTY6Y2FzZSAxMTEyOmNhc2UgMTE0NjpjYXNlIDQ3MTpjYXNlIDEwNTA6Y2FzZSA2NDk6Y2FzZSAxMTA1OmNhc2UgNDk6Y2FzZSA1ODk6Y2FzZSA2MDc6Y2FzZSA1NjQ6Y2FzZSAxMDU1''@;'; put 'put ''OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTE4MDpjYXNlIDQ5OTpjYXNlIDUwNzpjYXNlIDU1MDpjYXNlIDE3MTpjYXNlIDE2NzpjYXNlIDExNzc6Y2FzZSAxNjk6Y2FzZSAxMTgxOmNhc2UgNTUxOmNhc2UgNTUyOmNhc2UgNjYxOmNhc2UgNjM5OmNhc2UgNDc4OmNhc2UgNTM3OmNhc2UgNDc3''@;'; put 'put ''OmNhc2UgNTM2OmNhc2UgMTEwMzpjYXNlIDY4MDpjYXNlIDExMDQ6Y2FzZSAxMDI0OmNhc2UgNjYzOmNhc2UgNTM1OmNhc2UgNjc4OmNhc2UgNTA0OmNhc2UgMTA0MzpjYXNlIDQyODpjYXNlIDE3MDpjYXNlIDMwNzI6Y2FzZSA1MDpjYXNlIDIwNzA6Y2FzZSAxMDQ1OmJyZWFrO2Nhc2UgMzU6''@;'; put 'put ''aXQ9ITA7YnJlYWs7Y2FzZSAzNjppdD0hMTticmVhaztjYXNlIDM3OlhlLnB1c2goRG4pLGl0PSEwO2JyZWFrO2Nhc2UgMzg6WGUucG9wKCksaXQ9ITE7YnJlYWs7ZGVmYXVsdDppZighKChEbnx8IiIpLmluZGV4T2YoIkJlZ2luIik+MCkmJiEoKERufHwiIikuaW5kZXhPZigiRW5kIik+MCkm''@;'; put 'put ''JighaXR8fHZlLldURiYmIkJydEFDQmVnaW4iIT1YZVtYZS5sZW5ndGgtMV0pKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIit2cisiICIrRG4pfX0sdmUpLGRlbGV0ZSB2ZS5zdXBib29rcyxkZWxldGUgdmVbIiFyb3ciXSwhTWVbIiFyZWYiXSYmKFVlLnMucjwyZTZ8fGpl''@;'; put 'put ''JiYoamUuZS5yPjB8fGplLmUuYz4wfHxqZS5zLnI+MHx8amUucy5jPjApKSYmKE1lWyIhcmVmIl09Vm8oamV8fFVlKSksdmUuc2hlZXRSb3dzJiZNZVsiIXJlZiJdKXt2YXIgSWk9UGkoTWVbIiFyZWYiXSk7dmUuc2hlZXRSb3dzPD0rSWkuZS5yJiYoSWkuZS5yPXZlLnNoZWV0Um93cy0xLElp''@;'; put 'put ''LmUucj5VZS5lLnImJihJaS5lLnI9VWUuZS5yKSxJaS5lLnI8SWkucy5yJiYoSWkucy5yPUlpLmUuciksSWkuZS5jPlVlLmUuYyYmKElpLmUuYz1VZS5lLmMpLElpLmUuYzxJaS5zLmMmJihJaS5zLmM9SWkuZS5jKSxNZVsiIWZ1bGxyZWYiXT1NZVsiIXJlZiJdLE1lWyIhcmVmIl09Vm8oSWkp''@;'; put 'put ''KX1yZXR1cm4gZm4ubGVuZ3RoPjAmJihNZVsiIW1lcmdlcyJdPWZuKSxqci5sZW5ndGg+MCYmKE1lWyIhY29scyJdPWpyKSxsaS5sZW5ndGg+MCYmKE1lWyIhcm93cyJdPWxpKSxNZX0odyxlZSxELG9lLGdlLDAsdmUpOmZ1bmN0aW9uIGdlZSh3LFAsRCxlZSxvZSxnZSxfZSl7aWYoIXcpcmV0''@;'; put 'put ''dXJuIHc7ZWV8fChlZT17IiFpZCI6e319KSxudWxsIT1uZSYmbnVsbD09UC5kZW5zZSYmKFAuZGVuc2U9bmUpO3ZhciB2ZT1QLmRlbnNlP1tdOnt9LE1lPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LGplPSIiLFVlPSIiLFhlPXcubWF0Y2goaWcpO1hlPyhqZT13LnNsaWNlKDAsWGUu''@;'; put 'put ''aW5kZXgpLFVlPXcuc2xpY2UoWGUuaW5kZXgrWGVbMF0ubGVuZ3RoKSk6amU9VWU9dzt2YXIgaXQ9VWUubGFzdEluZGV4T2YoImV4dExzdCIpLE10PSgtMT09aXR8fFVlLnNsaWNlKGl0KSxqZS5tYXRjaChsdykpO010PyQ4KE10WzBdLDAsb2UsRCk6KE10PWplLm1hdGNoKF9OKSkmJmZ1bmN0''@;'; put 'put ''aW9uIHFBKHcsUCxELGVlLG9lLGdlLF9lKXskOCh3LnNsaWNlKDAsdy5pbmRleE9mKCI+IikpLDAsZWUsb2UpO3ZhciB2ZT1QLm1hdGNoKEs4KTtpZih2ZSl7dmFyIGplPWZoKGNuKHZlWzBdKSxnZSxfZSk7RFsiIXRhYmNvbG9yIl09amV9aWYoKHZlPVAubWF0Y2goJEEpKSYmY24odmVbMF0p''@;'; put 'put ''LmZpdFRvUGFnZSYmKERbIiFwcmludCJdfHwoRFsiIXByaW50Il09e30pLERbIiFwcmludCJdLnByb3BzfHwoRFsiIXByaW50Il0ucHJvcHM9e30pLERbIiFwcmludCJdLnByb3BzLmZpdHx8KERbIiFwcmludCJdLnByb3BzLmZpdD17fSksbnVsbD09RFsiIXByaW50Il0ucHJvcHMuZml0Lmhl''@;'; put 'put ''aWdodCYmKERbIiFwcmludCJdLnByb3BzLmZpdC5oZWlnaHQ9MSksbnVsbD09RFsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoJiYoRFsiIXByaW50Il0ucHJvcHMuZml0LndpZHRoPTEpKSx2ZT1QLm1hdGNoKEtBKSl7RFsiIW91dGxpbmUiXT17fTt2YXIgWGU9Y24odmVbMF0pO1hlLnN1bW1h''@;'; put 'put ''cnlCZWxvdyYmKERbIiFvdXRsaW5lIl0uYWJvdmU9IV9yKFhlLnN1bW1hcnlCZWxvdykpLFhlLnN1bW1hcnlSaWdodCYmKERbIiFvdXRsaW5lIl0ubGVmdD0hX3IoWGUuc3VtbWFyeVJpZ2h0KSl9fShNdFswXSxNdFsxXXx8IiIsdmUsb2UsRCxfZSxnZSk7dmFyIHV0PShqZS5tYXRjaCgvPCg/''@;'; put 'put ''Olx3KjopP2RpbWVuc2lvbi8pfHx7aW5kZXg6LTF9KS5pbmRleDtpZih1dD4wKXt2YXIgd3Q9amUuc2xpY2UodXQsdXQrNTApLm1hdGNoKHBlZSk7d3QmJighUHx8IVAubm9kaW0pJiZmdW5jdGlvbiB5Tih3LFApe3ZhciBEPVBpKFApO0Qucy5yPD1ELmUuciYmRC5zLmM8PUQuZS5jJiZELnMu''@;'; put 'put ''cj49MCYmRC5zLmM+PTAmJih3WyIhcmVmIl09Vm8oRCkpfSh2ZSx3dFsxXSl9dmFyIEh0PWplLm1hdGNoKHdOKTtIdCYmSHRbMV0mJmZ1bmN0aW9uIF9lZSh3LFAsRCxlZSl7RC5WaWV3c3x8KEQuVmlld3M9W3t9XSk7dmFyIG9lPTA7dy5yZXBsYWNlKElOLGZ1bmN0aW9uKGdlLF9lKXt2YXIg''@;'; put 'put ''dmU9Y24oZ2UpO2lmKEQuVmlld3NbZWVdfHwoRC5WaWV3c1tlZV09e30pLF9yKHZlLnJpZ2h0VG9MZWZ0KSYmKEQuVmlld3NbZWVdLlJUTD0hMCksdmUuc2hvd0dyaWRMaW5lcyYmKEQuVmlld3NbZWVdLmdyaWQ9X3IodmUuc2hvd0dyaWRMaW5lcyksbnVsbD09UFsiIWdyaWRsaW5lcyJdJiYo''@;'; put 'put ''UFsiIWdyaWRsaW5lcyJdPV9yKHZlLnNob3dHcmlkTGluZXMpKSksK3ZlLnpvb21TY2FsZSYmKEQuVmlld3NbZWVdLnpvb209K3ZlLnpvb21TY2FsZSksdmUudmlldyYmKEQuVmlld3NbZWVdLnZpZXc9dmUudmlldyksMT09KytvZSYmIi8+IiE9Z2Uuc2xpY2UoLTIpKXt2YXIgTWU9dy5zbGlj''@;'; put 'put ''ZShfZStnZS5sZW5ndGgpLGplPU1lLm1hdGNoKC88XC8oPzpcdzopP3NoZWV0Vmlldyg/OltePmEtel1bXj5dKik/XC8/Pi8pO2lmKCFqZSlyZXR1cm4iIjt2YXIgVWU9KE1lPU1lLnNsaWNlKDAsamUuaW5kZXgpKS5tYXRjaCgvPCg/Olx3Oik/cGFuZSg/OltePmEtel1bXj5dKik/XC8/Pi8p''@;'; put 'put ''O2lmKFVlKXt2YXIgWGU9Y24oVWVbMF0pOyJmcm96ZW4iPT1YZS5zdGF0ZT9QWyIhZnJlZXplIl09QmEoK1hlLnhTcGxpdHx8MCkrVmEoK1hlLnlTcGxpdHx8MCk6WGUudG9wTGVmdENlbGwmJihQWyIhZnJlZXplIl09WGUudG9wTGVmdENlbGwpfXZhciBpdD1NZS5tYXRjaCgvPCg/Olx3Oik/''@;'; put 'put ''c2VsZWN0aW9uKD86W14+YS16XVtePl0qKT9cLz8+Lyk7aWYoaXQpe3ZhciBmdD1jbihpdFswXSk7aWYoZnQuYWN0aXZlQ2VsbCYmKFBbIiFzZWwiXT17Y2VsbDpmdC5hY3RpdmVDZWxsfSksZnQuc3FyZWYpe3ZhciBNdD1mdC5zcXJlZi5yZXBsYWNlKC9ccy4qJC8sIiIpO1BbIiFzZWwiXXx8''@;'; put 'put ''KFBbIiFzZWwiXT17Y2VsbDpwaShLYShNdCkucyl9KSxQWyIhc2VsIl0ucmFuZ2U9ZnQuc3FyZWZ9fX1yZXR1cm4iIn0pfShIdFsxXSx2ZSxvZSxEKTt2YXIga3Q9amUubWF0Y2goTDIpLFR0PVtdO2lmKFAuY2VsbFN0eWxlcyl7dmFyIFl0PWplLm1hdGNoKG93KTtZdCYmZnVuY3Rpb24gVnAo''@;'; put 'put ''dyxQLEQpe2Zvcih2YXIgZWU9ITEsb2U9MDtvZSE9UC5sZW5ndGg7KytvZSl7dmFyIGdlPWNuKFBbb2VdLCEwKTtnZS5oaWRkZW4mJihnZS5oaWRkZW49X3IoZ2UuaGlkZGVuKSk7dmFyIF9lPXBhcnNlSW50KGdlLm1pbiwxMCktMSx2ZT1wYXJzZUludChnZS5tYXgsMTApLTE7Zm9yKGdlLm91''@;'; put 'put ''dGxpbmVMZXZlbCYmKGdlLmxldmVsPStnZS5vdXRsaW5lTGV2ZWx8fDApLGRlbGV0ZSBnZS5taW4sZGVsZXRlIGdlLm1heCxnZS53aWR0aD0rZ2Uud2lkdGgsIWVlJiZnZS53aWR0aCYmKGVlPSEwKSxfYyhnZSksZ2Uuc3R5bGUmJihnZS5zPWFnKGdlLnN0eWxlLEQpKTtfZTw9dmU7KXdbX2Ur''@;'; put 'put ''K109SnQoZ2UpfX0oVHQsWXQsX2UpfWlmKFhlJiZMTihYZVsxXSxELHZlLFAsTWUsZ2UsX2UpLFAuY2FsbGJhY2spcmV0dXJuIHZlO3ZhciBnbj1VZS5tYXRjaChiTik7Z24mJih2ZVsiIXByb3RlY3QiXT1mdW5jdGlvbiBydCh3KXt2YXIgUD1jbih3LCEwLCEwKSxEPXt9O2lmKF9yKFAuc2hl''@;'; put 'put ''ZXQpKXJldHVybiBjdy5mb3JFYWNoKGZ1bmN0aW9uKGVlKXtEW2VlXT1udWxsIT1QW2VlXSYmX3IoUFtlZV0pfSksZncuZm9yRWFjaChmdW5jdGlvbihlZSl7RFtlZV09bnVsbD09UFtlZV18fF9yKFBbZWVdKX0pLFAuYWxnb3JpdGhtTmFtZSYmKEQuZW5jcnlwdGlvbj17YWxnbzpQLmFsZ29y''@;'; put 'put ''aXRobU5hbWUsaGFzaDpQLmhhc2hWYWx1ZSxzYWx0OlAuc2FsdFZhbHVlLHNwaW46K1Auc3BpbkNvdW50fHwxZTV9KSxEfShnblswXSkpO3ZhciBxbj1VZS5tYXRjaChXOCk7cW4mJih2ZVsiIWF1dG9maWx0ZXIiXT1mdW5jdGlvbiBvZyh3KXtyZXR1cm57cmVmOih3Lm1hdGNoKC9yZWY9Iihb''@;'; put 'put ''XiJdKikiLyl8fFtdKVsxXX19KHFuWzBdKSk7dmFyIGZuPVtdLEtuPVVlLm1hdGNoKGl3KTtpZihLbilmb3IodXQ9MDt1dCE9S24ubGVuZ3RoOysrdXQpZm5bdXRdPVBpKEtuW3V0XS5zbGljZShLblt1dF0uaW5kZXhPZignIicpKzEpKTt2YXIgem49KC0xPT1pdD9VZTpVZS5zbGljZSgwLGl0''@;'; put 'put ''KSkubWF0Y2goRzgpO3puJiYodmVbIiFjb25kZm10Il09W10uY29uY2F0LmFwcGx5KFtdLHpuLm1hcChmdW5jdGlvbihEbil7cmV0dXJuIGNUKERuLFAsZ2UsX2UpfSkpKSxpdD4tMSYmKHpuPVVlLnNsaWNlKGl0KS5tYXRjaChHOCkpJiYodmVbIiFjb25kZm10Il18fCh2ZVsiIWNvbmRmbXQi''@;'; put 'put ''XT1bXSksdmVbIiFjb25kZm10Il09dmVbIiFjb25kZm10Il0uY29uY2F0LmFwcGx5KHZlWyIhY29uZGZtdCJdLHpuLm1hcChmdW5jdGlvbihEbil7cmV0dXJuIGNUKERuLFAsZ2UsX2UsITApfSkpKTt2YXIgT249KC0xPT1pdD9VZTpVZS5zbGljZSgwLGl0KSkubWF0Y2goWkEpO09uJiYodmVb''@;'; put 'put ''IiF2YWxpZGF0aW9ucyJdPWxUKE9uWzBdLFApKSxpdD4tMSYmKE9uPVVlLnNsaWNlKGl0KS5tYXRjaChaQSkpJiYodmVbIiF2YWxpZGF0aW9ucyJdfHwodmVbIiF2YWxpZGF0aW9ucyJdPVtdKSx2ZVsiIXZhbGlkYXRpb25zIl09dmVbIiF2YWxpZGF0aW9ucyJdLmNvbmNhdChsVChPblswXSxQ''@;'; put 'put ''LCEwKSkpO3ZhciBlcj1VZS5tYXRjaChVQSk7ZXImJmZ1bmN0aW9uIG5UKHcsUCxEKXtmb3IodmFyIGVlPUFycmF5LmlzQXJyYXkodyksb2U9MDtvZSE9UC5sZW5ndGg7KytvZSl7dmFyIGdlPWNuKEZpKFBbb2VdKSwhMCk7aWYoIWdlLnJlZilyZXR1cm47dmFyIF9lPSgoRHx8e30pWyIhaWQi''@;'; put 'put ''XXx8W10pW2dlLmlkXTtfZT8oZ2UuVGFyZ2V0PV9lLlRhcmdldCxnZS5sb2NhdGlvbiYmKGdlLlRhcmdldCs9IiMiK0VyKGdlLmxvY2F0aW9uKSkpOihnZS5UYXJnZXQ9IiMiK0VyKGdlLmxvY2F0aW9uKSxfZT17VGFyZ2V0OmdlLlRhcmdldCxUYXJnZXRNb2RlOiJJbnRlcm5hbCJ9KSxnZS5S''@;'; put 'put ''ZWw9X2UsZ2UudG9vbHRpcCYmKGdlLlRvb2x0aXA9Z2UudG9vbHRpcCxkZWxldGUgZ2UudG9vbHRpcCk7Zm9yKHZhciB2ZT1QaShnZS5yZWYpLE1lPXZlLnMucjtNZTw9dmUuZS5yOysrTWUpZm9yKHZhciBqZT12ZS5zLmM7amU8PXZlLmUuYzsrK2plKXt2YXIgVWU9cGkoe2M6amUscjpNZX0p''@;'; put 'put ''O2VlPyh3W01lXXx8KHdbTWVdPVtdKSx3W01lXVtqZV18fCh3W01lXVtqZV09e3Q6InoiLHY6dm9pZCAwfSksd1tNZV1bamVdLmw9Z2UpOih3W1VlXXx8KHdbVWVdPXt0OiJ6Iix2OnZvaWQgMH0pLHdbVWVdLmw9Z2UpfX19KHZlLGVyLGVlKTt2YXIgdHI9VWUubWF0Y2goQ04pO3RyJiZmdW5j''@;'; put 'put ''dGlvbiBrTih3LFApe3ZhciBEPWNuKHcsITEsITApO1BbIiFwcmludCJdfHwoUFsiIXByaW50Il09e30pLFBbIiFwcmludCJdLnByb3BzfHwoUFsiIXByaW50Il0ucHJvcHM9e30pO3ZhciBlZT1QWyIhcHJpbnQiXS5wcm9wcztELmdyaWRMaW5lcyYmKGVlLmdyaWRsaW5lcz1fcihELmdyaWRM''@;'; put 'put ''aW5lcykpLG51bGwhPUQuaG9yaXpvbnRhbENlbnRlcmVkJiYoZWUuY2VudGVyWD1fcihELmhvcml6b250YWxDZW50ZXJlZCkpLG51bGwhPUQudmVydGljYWxDZW50ZXJlZCYmKGVlLmNlbnRlclk9X3IoRC52ZXJ0aWNhbENlbnRlcmVkKSl9KHRyWzBdLHZlKTt2YXIgWW49VWUubWF0Y2goYXcp''@;'; put 'put ''O1luJiYoKHZlWyIhcHJpbnQiXXx8KHZlWyIhcHJpbnQiXT17fSkpLm1hcmdpbnM9dmVbIiFtYXJnaW5zIl09clQoY24oWW5bMF0pKSk7dmFyIGpyPVVlLm1hdGNoKE5wKTtqciYmZnVuY3Rpb24gSkEodyxQKXt2YXIgRD1jbih3LCExLCEwKTtkZWxldGUgRC5pZCxkZWxldGUgRFswXSxQWyIh''@;'; put 'put ''cHJpbnQiXXx8KFBbIiFwcmludCJdPXt9KSxQWyIhcHJpbnQiXS5wcm9wc3x8KFBbIiFwcmludCJdLnByb3BzPXt9KTt2YXIgZWU9UFsiIXByaW50Il0ucHJvcHM7RC5vcmllbnRhdGlvbiYmKGVlLm9yaWVudGF0aW9uPUQub3JpZW50YXRpb24pLEQuc2NhbGUmJihlZS5zY2FsZT0rRC5zY2Fs''@;'; put 'put ''ZSksK0QuZml0VG9IZWlnaHQ+PTAmJigoZWUuZml0fHwoZWUuZml0PXt9KSkuaGVpZ2h0PStELmZpdFRvSGVpZ2h0KSwrRC5maXRUb1dpZHRoPj0wJiYoKGVlLmZpdHx8KGVlLmZpdD17fSkpLndpZHRoPStELmZpdFRvV2lkdGgpLEQucGFwZXJIZWlnaHQmJkQucGFwZXJXaWR0aD9lZS5wYXBl''@;'; put 'put ''cj17d2lkdGg6RC5wYXBlcldpZHRoLGhlaWdodDpELnBhcGVySGVpZ2h0fTpELnBhcGVyU2l6ZSYmKGVlLnBhcGVyPUQ4W2VlLnBhcGVyPStELnBhcGVyU2l6ZV18fGVlLnBhcGVyKSxELmhvcml6b250YWxEcGk/ZWUuZHBpPStELmhvcml6b250YWxEcGk6RC52ZXJ0aWNhbERwaSYmKGVlLmRw''@;'; put 'put ''aT0rRC52ZXJ0aWNhbERwaSksImF1dG9tYXRpYyIhPShELmZpcnN0UGFnZU51bWJlcnx8ImF1dG9tYXRpYyIpJiYoZWUuZmlyc3Q9K0QuZmlyc3RQYWdlTnVtYmVyKSxfcihELmJsYWNrQW5kV2hpdGUpJiYoZWUuYnc9ITApLF9yKEQuZHJhZnQpJiYoZWUuZHJhZnQ9ITApLCJvdmVyVGhlbkRv''@;'; put 'put ''d24iPT1ELnBhZ2VPcmRlciYmKGVlLm9yZGVyPSJvdmVyIiksdXdbRC5jZWxsQ29tbWVudHNdJiYoZWUuY29tbWVudHM9dXdbRC5jZWxsQ29tbWVudHNdKSxYQVtELmVycm9yc10mJihlZS5lcnJvcnM9WEFbRC5lcnJvcnNdKX0oanJbMF0sdmUpO3ZhciBsaT1VZS5tYXRjaChtZWUpO2xpJiZm''@;'; put 'put ''dW5jdGlvbiBodyh3LFApe2lmKFBbIiFwcmludCJdfHwoUFsiIXByaW50Il09e30pLHdbMV0pe3ZhciBEPSIiLGVlPTA7d1sxXS5yZXBsYWNlKHF0LGZ1bmN0aW9uKG9lLGdlKXtpZigiLyIhPW9lLmNoYXJBdCgxKSlEPW9lLnNsaWNlKDEsLTEpLGVlPWdlK29lLmxlbmd0aDtlbHNlIGlmKEQp''@;'; put 'put ''e3ZhciBfZT1ELm1hdGNoKC9IZWFkZXIvKT8iaGVhZGVyIjoiZm9vdGVyIix2ZT1ELnJlcGxhY2UoL0hlYWRlcnxGb290ZXIvLCIiKTtEPSIiLFBbIiFwcmludCJdW19lXXx8KFBbIiFwcmludCJdW19lXT17fSksUFsiIXByaW50Il1bX2VdW3ZlXT1FcihGaSh3WzFdLnNsaWNlKGVlLGdlKSkp''@;'; put 'put ''fX0pfX0obGksdmUpO3ZhciBFaT1VZS5tYXRjaChjZCk7RWkmJigodmVbIiFwcmludCJdfHwodmVbIiFwcmludCJdPXt9KSkucm93QnJlYWtzPXZlWyIhcm93QnJlYWtzIl09ZnVuY3Rpb24gdFQodyl7dmFyIFA9W107cmV0dXJuKHcubWF0Y2goZVQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihE''@;'; put 'put ''KXt2YXIgZWU9Y24oRCk7UC5wdXNoKHtSOitlZS5pZH0pfSksUH0oRWlbMF0pKTt2YXIgSWk9VWUubWF0Y2goWUEpO0lpJiYoKHZlWyIhcHJpbnQiXXx8KHZlWyIhcHJpbnQiXT17fSkpLmNvbEJyZWFrcz12ZVsiIWNvbEJyZWFrcyJdPWZ1bmN0aW9uIHhOKHcpe3ZhciBQPVtdO3JldHVybih3''@;'; put 'put ''Lm1hdGNoKGVUKXx8W10pLmZvckVhY2goZnVuY3Rpb24oRCl7dmFyIGVlPWNuKEQpO1AucHVzaCh7QzorZWUuaWR9KX0pLFB9KElpWzBdKSk7dmFyIHRpPVtdO2lmKCh0aT1VZS5tYXRjaCgvZHJhd2luZyByOmlkPSIoLio/KSIvKSkmJih2ZVsiIXJlbCJdPXRpWzFdKSwodGk9VWUubWF0Y2go''@;'; put 'put ''L2xlZ2FjeURyYXdpbmcgcjppZD0iKC4qPykiLykpJiYodmVbIiFsZWdyZWwiXT10aVsxXSksKHRpPVVlLm1hdGNoKFIyKSkmJih2ZVsiIWN0cmxpZCJdPXRpLm1hcChmdW5jdGlvbihEbil7cmV0dXJuIGNuKERuKX0pKSwodGk9VWUubWF0Y2goc3cpKSYmZnVuY3Rpb24gR0EodyxQKXt3WyIh''@;'; put 'put ''dGFibGVyZWZzIl18fCh3WyIhdGFibGVyZWZzIl09W10pLChQLm1hdGNoKFdBKXx8W10pLmZvckVhY2goZnVuY3Rpb24oRCl7d1siIXRhYmxlcmVmcyJdLnB1c2goY24oRCkuaWQpfSl9KHZlLHRpWzFdKSxQJiZQLm5vZGltJiYoTWUucy5jPU1lLnMucj0wKSwhdmVbIiFyZWYiXSYmTWUuZS5j''@;'; put 'put ''Pj1NZS5zLmMmJk1lLmUucj49TWUucy5yJiYodmVbIiFyZWYiXT1WbyhNZSkpLFAuc2hlZXRSb3dzPjAmJnZlWyIhcmVmIl0pe3ZhciBmcj1QaSh2ZVsiIXJlZiJdKTtQLnNoZWV0Um93czw9K2ZyLmUuciYmKGZyLmUucj1QLnNoZWV0Um93cy0xLGZyLmUucj5NZS5lLnImJihmci5lLnI9TWUu''@;'; put 'put ''ZS5yKSxmci5lLnI8ZnIucy5yJiYoZnIucy5yPWZyLmUuciksZnIuZS5jPk1lLmUuYyYmKGZyLmUuYz1NZS5lLmMpLGZyLmUuYzxmci5zLmMmJihmci5zLmM9ZnIuZS5jKSx2ZVsiIWZ1bGxyZWYiXT12ZVsiIXJlZiJdLHZlWyIhcmVmIl09Vm8oZnIpKX1yZXR1cm4ga3QmJih2ZVsiIXNoZWV0''@;'; put 'put ''Rm9ybWF0Il09ZnVuY3Rpb24gdmVlKHcpe3ZhciBQPXt9LEQ9e30sZWU9ITEsb2U9e30sZ2U9ITE7cmV0dXJuIHcuZGVmYXVsdFJvd0hlaWdodCYmKGVlPSEwLEQuaHB0PXBhcnNlRmxvYXQody5kZWZhdWx0Um93SGVpZ2h0KSksdy56ZXJvSGVpZ2h0JiYoZWU9ITAsRC5oaWRkZW49X3Iody56''@;'; put 'put ''ZXJvSGVpZ2h0KSksdy5iYXNlQ29sV2lkdGg/KGdlPSEwLG9lLndjaD1wYXJzZUZsb2F0KHcuYmFzZUNvbFdpZHRoKSk6dy5kZWZhdWx0Q29sV2lkdGgmJihnZT0hMCxvZS53Y2g9cGFyc2VGbG9hdCh3LmRlZmF1bHRDb2xXaWR0aCktNS9fcyksdy5vdXRsaW5lTGV2ZWxDb2wmJihQLmNvbG91''@;'; put 'put ''dGxpbmU9cGFyc2VJbnQody5vdXRsaW5lTGV2ZWxDb2wpKSx3Lm91dGxpbmVMZXZlbFJvdyYmKFAucm93b3V0bGluZT1wYXJzZUludCh3Lm91dGxpbmVMZXZlbFJvdykpLHcudGhpY2tCb3R0b20mJihQLmJvdHRoaWNrPV9yKHcudGhpY2tCb3R0b20pKSx3LnRoaWNrVG9wJiYoUC50b3B0aGlj''@;'; put 'put ''az1fcih3LnRoaWNrVG9wKSksdy5keURlc2NlbnQmJihQLmR5RGVzY2VudD1wYXJzZUZsb2F0KHcuZHlEZXNjZW50KSksZWUmJihTcChEKSxQLnJvdz1EKSxnZSYmKF9jKG9lKSxQLmNvbD1vZSksUH0oY24oa3RbMF0pKSksVHQubGVuZ3RoPjAmJih2ZVsiIWNvbHMiXT1UdCksZm4ubGVuZ3Ro''@;'; put 'put ''PjAmJih2ZVsiIW1lcmdlcyJdPWZuKSxlZVsiIWlkIl1bdmVbIiFyZWwiXV0mJih2ZVsiIWRyYXdlbCJdPWVlWyIhaWQiXVt2ZVsiIXJlbCJdXSksZWVbIiFpZCJdW3ZlWyIhbGVncmVsIl1dJiYodmVbIiFsZWdkcmF3ZWwiXT1lZVsiIWlkIl1bdmVbIiFsZWdyZWwiXV0pLCh2ZVsiIWN0cmxp''@;'; put 'put ''ZCJdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihEbil7RG4ucmVsPWVlWyIhaWQiXVtEbi5pZF19KSxudWxsPT12ZVsiIWdyaWRsaW5lcyJdJiYodmVbIiFncmlkbGluZXMiXT0hMCksdmV9KHcsZWUsRCxvZSxnZSxfZSx2ZSl9KGl0LFAsb2UsTWUsZ2VbZWVdLGplLFVlLFhlKTticmVhaztjYXNl''@;'; put 'put ''ImNoYXJ0IjpmdD1mdW5jdGlvbiBUVih3LFAsRCxlZSxvZSxnZSxfZSx2ZSl7cmV0dXJuIi5iaW4iPT09UC5zbGljZSgtNCk/ZnVuY3Rpb24gR3AodyxQLEQsZWUsb2Upe2lmKCF3KXJldHVybiB3O2VlfHwoZWU9eyIhaWQiOnt9fSk7dmFyIGdlPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwi''@;'; put 'put ''Om51bGwsIiFyZWwiOiIifSxfZT1bXSx2ZT0hMTtyZXR1cm4gem8odyxmdW5jdGlvbihqZSxVZSxYZSl7c3dpdGNoKFhlKXtjYXNlIDU1MDpnZVsiIXJlbCJdPWplO2JyZWFrO2Nhc2UgNjUxOm9lLlNoZWV0c1tEXXx8KG9lLlNoZWV0c1tEXT17fSksamUubmFtZSYmKG9lLlNoZWV0c1tEXS5D''@;'; put 'put ''b2RlTmFtZT1qZS5uYW1lKTticmVhaztjYXNlIDU2MjpjYXNlIDY1MjpjYXNlIDY2OTpjYXNlIDY3OTpjYXNlIDU1MTpjYXNlIDU1MjpjYXNlIDQ3NjpjYXNlIDMwNzI6YnJlYWs7Y2FzZSAzNTp2ZT0hMDticmVhaztjYXNlIDM2OnZlPSExO2JyZWFrO2Nhc2UgMzc6X2UucHVzaChVZSk7YnJl''@;'; put 'put ''YWs7Y2FzZSAzODpfZS5wb3AoKTticmVhaztkZWZhdWx0OmlmKChVZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MClfZS5wdXNoKFVlKTtlbHNlIGlmKChVZXx8IiIpLmluZGV4T2YoIkVuZCIpPjApX2UucG9wKCk7ZWxzZSBpZighdmV8fFAuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3Rl''@;'; put 'put ''ZCByZWNvcmQgIitYZSsiICIrVWUpfX0sUCksZWVbIiFpZCJdW2dlWyIhcmVsIl1dJiYoZ2VbIiFkcmF3ZWwiXT1lZVsiIWlkIl1bZ2VbIiFyZWwiXV0pLGdlfSh3LGVlLEQsb2UsZ2UpOmZ1bmN0aW9uIFpwKHcsUCxELGVlLG9lKXtpZighdylyZXR1cm4gdztlZXx8KGVlPXsiIWlkIjp7fX0p''@;'; put 'put ''O3ZhciBfZSxnZT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sdmU9dy5tYXRjaChsdyk7dmUmJiQ4KHZlWzBdLDAsb2UsRCk7dmFyIE1lPXcubWF0Y2goYXcpO3JldHVybiBNZSYmKGdlWyIhbWFyZ2lucyJdPXJUKGNuKE1lWzBdKSkpLChfZT13Lm1hdGNoKC9k''@;'; put 'put ''cmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKGdlWyIhcmVsIl09X2VbMV0pLGVlWyIhaWQiXVtnZVsiIXJlbCJdXSYmKGdlWyIhZHJhd2VsIl09ZWVbIiFpZCJdW2dlWyIhcmVsIl1dKSxnZX0odywwLEQsb2UsZ2UpfShpdCxQLG9lLE1lLGdlW2VlXSxqZSk7YnJlYWs7Y2FzZSJtYWNybyI6ZnQ9''@;'; put 'put ''ZnVuY3Rpb24gT1YodyxQLEQsZWUsb2UsZ2UsX2UsdmUpe3JldHVybiBQLnNsaWNlKC00KSx7IiF0eXBlIjoibWFjcm8ifX0oMCxQKTticmVhaztjYXNlImRpYWxvZyI6ZnQ9ZnVuY3Rpb24gRFYodyxQLEQsZWUsb2UsZ2UsX2UsdmUpe3JldHVybiBQLnNsaWNlKC00KSx7IiF0eXBlIjoiZGlh''@;'; put 'put ''bG9nIn19KDAsUCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrdmUpfWlmKE1lLmNhbGxiYWNrKXJldHVybjtfZVtlZV09ZnQsZnVuY3Rpb24gaE8odyxQLEQsZWUsb2UsZ2UsX2UsdmUpe2lmKHcmJndbIiFkcmF3ZWwiXSl7dmFyIE1l''@;'; put 'put ''PXNuKHdbIiFkcmF3ZWwiXS5UYXJnZXQsZWUpLGplPWppKE1lKSxVZT1mdW5jdGlvbiBISCh3LFAsRCxlZSxvZSl7dmFyIGdlPXtjaGFydHM6W10saW1hZ2VzOltdLHNoYXBlczpbXX07aWYoIXcpcmV0dXJuIGdlO3ZhciBfZT1vZXx8e307cmV0dXJuKHcubWF0Y2goLzxbXjxdKj8oYWJzb2x1''@;'; put 'put ''dGVBbmNob3J8b25lQ2VsbEFuY2hvcnx0d29DZWxsQW5jaG9yKS4qPyhhYnNvbHV0ZUFuY2hvcnxvbmVDZWxsQW5jaG9yfHR3b0NlbGxBbmNob3IpLio/Pi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24odmUpe3ZhciBNZT0iIixqZT17dHlwZToiIn0sVWU9e30sWGU9ITAsaXQ9ITEsZnQ9ITEs''@;'; put 'put ''TXQ9ITEsdXQ9e3M6e319LHd0PS0xLEh0PVtdLGt0PVtdLFR0PXtzOnthbGlnbm1lbnQ6e2hvcml6b250YWw6ImNlbnRlciIsdmVydGljYWw6ImNlbnRlciJ9fX0sWXQ9IiIsZ249LTEsZm49e307dmUucmVwbGFjZShxdCxmdW5jdGlvbihLbix6bil7SHQ9bnVsbDt2YXIgT249Y24oS24pLGVy''@;'; put 'put ''PWpuKE9uWzBdKS5yZXBsYWNlKC9bXC9dPz4kLywiIik7c3dpdGNoKGVyKXtjYXNlIjxjbGllbnREYXRhIjpicmVhaztjYXNlIjxhYnNvbHV0ZUFuY2hvciI6Y2FzZSI8b25lQ2VsbEFuY2hvciI6Y2FzZSI8dHdvQ2VsbEFuY2hvciI6amUudHlwZT1qbihPblswXSkucmVwbGFjZSgvWzw+XS9n''@;'; put 'put ''LCIiKTticmVhaztjYXNlIjwvYWJzb2x1dGVBbmNob3IiOmNhc2UiPC9vbmVDZWxsQW5jaG9yIjpjYXNlIjwvdHdvQ2VsbEFuY2hvciI6YnJlYWs7Y2FzZSI8cG9zIjpqZS5wb3M9e3g6K09uLngseTorT24ueX07YnJlYWs7Y2FzZSI8ZXh0IjpYZSYmKGplLmV4dD17eDorT24uY3gseTorT24u''@;'; put 'put ''Y3l9KTticmVhaztjYXNlIjxmcm9tIjpjYXNlIjx0byI6VWU9e307YnJlYWs7Y2FzZSI8L2Zyb20iOlhlJiYoamUuZnJvbT1VZSk7YnJlYWs7Y2FzZSI8L3RvIjpYZSYmKGplLnRvPVVlKTticmVhaztjYXNlIjxjb2wiOmNhc2UiPGNvbE9mZiI6Y2FzZSI8cm93IjpjYXNlIjxyb3dPZmYiOnd0''@;'; put 'put ''PXpuK0tuLmxlbmd0aDticmVhaztjYXNlIjwvY29sIjpVZS5jPSt2ZS5zbGljZSh3dCx6bik7YnJlYWs7Y2FzZSI8L2NvbE9mZiI6VWUuY09mZj0rdmUuc2xpY2Uod3Qsem4pO2JyZWFrO2Nhc2UiPC9yb3ciOlVlLnI9K3ZlLnNsaWNlKHd0LHpuKTticmVhaztjYXNlIjwvcm93T2ZmIjpVZS5y''@;'; put 'put ''T2ZmPSt2ZS5zbGljZSh3dCx6bik7YnJlYWs7Y2FzZSI8c3AiOk1lPSJzaGFwZSIsVHQuQW5jaG9yPWplLGdlLnNoYXBlcy5wdXNoKFR0KSxYZT0hMTticmVhaztjYXNlIjwvc3AiOlhlPSEwO2JyZWFrO2Nhc2UiPGdyYXBoaWNGcmFtZSI6TWU9ImdyYXBoaWMiLFhlPSExO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PC9ncmFwaGljRnJhbWUiOlhlPSEwO2JyZWFrO2Nhc2UiPHBpYyI6TWU9InBpY3R1cmUiLFhlPSExO2JyZWFrO2Nhc2UiPC9waWMiOlhlPSEwO2JyZWFrO2Nhc2UiPGdycFNwIjpNZT0iZ3JvdXBzaGFwZSIsWGU9ITE7YnJlYWs7Y2FzZSI8L2dycFNwIjpYZT0hMDticmVhaztjYXNlIjxncmFw''@;'; put 'put ''aGljIjpjYXNlIjwvZ3JhcGhpYyI6Y2FzZSI8eGZybSI6Y2FzZSI8L3hmcm0iOmNhc2UiPG9mZiI6YnJlYWs7Y2FzZSI8Z3JhcGhpY0RhdGEiOml0PSEwO2JyZWFrO2Nhc2UiPC9ncmFwaGljRGF0YSI6aXQ9ITE7YnJlYWs7Y2FzZSI8YmxpcEZpbGwiOml0PSEwO2JyZWFrO2Nhc2UiPC9ibGlw''@;'; put 'put ''RmlsbCI6aXQ9ITE7YnJlYWs7Y2FzZSI8L2JsaXAiOmJyZWFrO2Nhc2UiPHNyY1JlY3QiOml0PSEwO2JyZWFrO2Nhc2UiPC9zcmNSZWN0IjppdD0hMTticmVhaztjYXNlIjxub0ZpbGwiOmlmKGZ0KWJyZWFrOyI8c3BQciI9PWt0LnNsaWNlKC0xKVswXSYmKFR0LnMuZmdDb2xvcj1udWxsKTti''@;'; put 'put ''cmVhaztjYXNlIjwvc29saWRGaWxsIjppZihmdHx8TXQpYnJlYWs7IjxzcFByIj09a3Quc2xpY2UoLTIpWzBdP1R0LnMuZmdDb2xvcj1mbjoiPHJQciI9PWt0LnNsaWNlKC0yKVswXSYma3QuaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYodXQucy5jb2xvcj1mbiksZm49e30sTXQ9ITE7YnJlYWs7''@;'; put 'put ''Y2FzZSI8cHJzdEdlb20iOiJzaGFwZSI9PU1lJiYoVHRbIiFzaGFwZSJdPU9uLnByc3QpO2JyZWFrO2Nhc2UiPC9wcnN0R2VvbSI6Y2FzZSI8YXZMc3QiOmJyZWFrO2Nhc2UiPHR4Qm9keSI6aXQ9ITAsVHQuUj1bXTticmVhaztjYXNlIjwvdHhCb2R5IjppdD0hMTticmVhaztjYXNlIjxib2R5''@;'; put 'put ''UHIiOlR0LnMuYWxpZ25tZW50LnZlcnRpY2FsPVBIW09uLmFuY2hvcnx8InQiXXx8InRvcCI7YnJlYWs7Y2FzZSI8bHN0U3R5bGUiOmJyZWFrO2Nhc2UiPHQiOmduPXpuK0tuLmxlbmd0aDticmVhaztjYXNlIjxiciI6Y2FzZSI8YnIvPiI6WXQrPSJcbiI7YnJlYWs7Y2FzZSI8L3QiOll0Kz12''@;'; put 'put ''ZS5zbGljZShnbix6bik7YnJlYWs7Y2FzZSI8cFByIjpUdC5zLmFsaWdubWVudC5ob3Jpem9udGFsfHwoVHQucy5hbGlnbm1lbnQuaG9yaXpvbnRhbD1jQVtPbi5hbGdufHwibCJdfHwibGVmdCIpLGt0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKHV0LnMuYWxpZ25tZW50Lmhvcml6b250YWw9''@;'; put 'put ''Y0FbT24uYWxnbnx8ImwiXXx8ImxlZnQiKTticmVhaztjYXNlIjxyUHIiOk9uLnN6JiZrdC5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihUdC5zLnN6PXV0LnMuc3o9K09uLnN6LzEwMCk7YnJlYWs7Y2FzZSI8cCI6WXQ9IiIsdXQ9e3Q6InMiLHY6IiIsczp7YWxpZ25tZW50Ont9fX07YnJlYWs7''@;'; put 'put ''Y2FzZSI8L3AiOiJzaGFwZSI9PU1lJiZrdC5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihUdC52PShUdC52fHwiIikrWXQsdXQudj1ZdCxUdC5SLnB1c2godXQpKTticmVhaztjYXNlIjxsYXRpbiI6T24udHlwZWZhY2UmJmt0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKHV0LnMubmFtZT1Pbi50''@;'; put 'put ''eXBlZmFjZSk7YnJlYWs7Y2FzZSI8c3R5bGUiOml0PSEwLGZ0PSEwO2JyZWFrO2Nhc2UiPC9zdHlsZSI6aXQ9ITEsZnQ9ITE7YnJlYWs7Y2FzZSI8bG5SZWYiOmNhc2UiPGZpbGxSZWYiOmNhc2UiPGVmZmVjdFJlZiI6Y2FzZSI8Zm9udFJlZiI6YnJlYWs7Y2FzZSI8L2ZpbGxSZWYiOiFmdCYm''@;'; put 'put ''InNoYXBlIj09TWUmJihUdC5zLmZnQ29sb3I9Zm4pLGZuPXt9O2JyZWFrO2Nhc2UiPC9mb250UmVmIjohZnQmJiJzaGFwZSI9PU1lJiYoVHQucy5jb2xvcj1mbiksZm49e307YnJlYWs7Y2FzZSI8c2NoZW1lQ2xyIjp2YXIgdHI9e2JnMToibHQxIixiZzI6Imx0MiIsdHgxOiJkazEiLHR4Mjoi''@;'; put 'put ''ZGsyIn1bT24udmFsXXx8T24udmFsLFluPSgoZWUudGhlbWVFbGVtZW50c3x8e30pLmNsclNjaGVtZXx8W10pLmZpbmQoZnVuY3Rpb24obGkpe3JldHVybiBsaS5uYW1lPT10cn0pO1luP2ZuLnJnYj1Zbi5yZ2I6TXQ9ITA7YnJlYWs7Y2FzZSI8c2NyZ2JDbHIiOk10PSEwO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PHNyZ2JDbHIiOmZuLnJnYj1Pbi52YWwuc2xpY2UoLTYpO2JyZWFrO2Nhc2UiPGhzbENsciI6Y2FzZSI8c3lzQ2xyIjpjYXNlIjxwcnN0Q2xyIjpNdD0hMDticmVhaztjYXNlIjxjaGFydCI6SHQ9Z2UuY2hhcnRzO3ZhciBqcj1Pbi5pZDtjYXNlIjxibGlwIjpIdHx8KEh0PWdlLmltYWdlcyxq''@;'; put 'put ''cj1Pbi5lbWJlZCksSHQucHVzaCh7QW5jaG9yOmplLFRhcmdldDooUFsiIWlkIl1banJdfHx7fSkuVGFyZ2V0fSksT24ubGluayYmKEh0W0h0Lmxlbmd0aC0xXS5MaW5rPShQWyIhaWQiXVtPbi5saW5rXXx8e30pLlRhcmdldCk7YnJlYWs7Y2FzZSI8Z3JwU3BQciI6aXQ9ITA7YnJlYWs7Y2Fz''@;'; put 'put ''ZSI8L2dycFNwUHIiOml0PSExO2JyZWFrO2Nhc2UiPG52R3JwU3BQciI6aXQ9ITA7YnJlYWs7Y2FzZSI8L252R3JwU3BQciI6aXQ9ITE7YnJlYWs7Y2FzZSI8c3BQciI6aXQ9ITA7YnJlYWs7Y2FzZSI8L3NwUHIiOml0PSExO2JyZWFrO2Nhc2UiPHN0cmV0Y2giOmNhc2UiPC9zdHJldGNoIjpj''@;'; put 'put ''YXNlIjxmaWxsUmVjdCI6Y2FzZSI8bnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8L252R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPGNOdkdyYXBoaWNGcmFtZVByIjpjYXNlIjwvY052R3JhcGhpY0ZyYW1lUHIiOmNhc2UiPGdyYXBoaWNGcmFtZUxvY2tzIjpjYXNlIjxudlBpY1ByIjpjYXNlIjwvbnZQ''@;'; put 'put ''aWNQciI6Y2FzZSI8Y052UGljUHIiOmNhc2UiPC9jTnZQaWNQciI6Y2FzZSI8cGljTG9ja3MiOmNhc2UiPGNOdkdycFNwUHIiOmNhc2UiPC9jTnZHcnBTcFByIjpjYXNlIjxncnBTcExvY2tzIjpjYXNlIjxudlNwUHIiOmNhc2UiPC9udlNwUHIiOmNhc2UiPGNOdlNwUHIiOmNhc2UiPC9jTnZT''@;'; put 'put ''cFByIjpjYXNlIjxzcExvY2tzIjpicmVhaztjYXNlIjxjTnZQciI6aXQ9ITA7YnJlYWs7Y2FzZSI8L2NOdlByIjppdD0hMTticmVhaztjYXNlIjxjeG5TcCI6aXQ9ITA7YnJlYWs7Y2FzZSI8L2N4blNwIjppdD0hMTticmVhaztjYXNlIjxjTnZDeG5TcFByIjppdD0hMDticmVhaztjYXNlIjwv''@;'; put 'put ''Y052Q3huU3BQciI6aXQ9ITE7YnJlYWs7Y2FzZSI8bnZDeG5TcFByIjpjYXNlIjwvbnZDeG5TcFByIjpicmVhaztjYXNlIjxleHRMc3QiOml0PSEwLGZ0PSEwO2JyZWFrO2Nhc2UiPC9leHRMc3QiOml0PSExLGZ0PSExO2JyZWFrO2Nhc2UiPC9leHQiOmJyZWFrO2RlZmF1bHQ6aWYoX2UmJl9l''@;'; put 'put ''LldURiYmIWl0KXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrT25bMF0rIiBpbiBkcmF3aW5nIil9cmV0dXJuIjwvIj09ZXIuc2xpY2UoMCwyKT9rdC5wb3AoKToiLz4iIT1Lbi5zbGljZShLbi5sZW5ndGgtMikmJmt0LnB1c2goZXIpLCIifSl9KSxnZX0obm4oRCxNZSwhMCksUG8o''@;'; put 'put ''bm4oRCxqZSwhMCksTWUpLDAsdmUsb2UpO2lmKFVlKXtpZihVZS5jaGFydHMpZm9yKHZhciBYZT0wO1hlPFVlLmNoYXJ0cy5sZW5ndGg7KytYZSl7dmFyIGl0PVVlLmNoYXJ0c1tYZV0sZnQ9c24oaXQuVGFyZ2V0LE1lKSxNdD1qaShmdCksdXQ9ImNoYXJ0Ij09UCYmMD09WGUsd3Q9eDAobm4o''@;'; put 'put ''RCxmdCwhMCksMCwwLFBvKG5uKEQsTXQsITApLGZ0KSwwLHV0P3c6bnVsbCxpdCx1dD9udWxsOncpO3V0fHwod1siIWNoYXJ0cyJdfHwod1siIWNoYXJ0cyJdPVtdKSx3WyIhY2hhcnRzIl0ucHVzaCh3dCkpfWlmKG9lLmJvb2tJbWFnZXMmJlVlLmltYWdlcylmb3IodmFyIEh0PTA7SHQ8VWUu''@;'; put 'put ''aW1hZ2VzLmxlbmd0aDsrK0h0KXt2YXIga3Q9VWUuaW1hZ2VzW0h0XSxUdD17IiF0eXBlIjoiaW1hZ2UiLCIhcG9zIjpyQShrdC5BbmNob3IpLCIhcG9zVHlwZSI6a3QuQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9yLywiIiksIiFhYnNwb3MiOngyKGt0LkFuY2hvcix3KSwiIXJlbHBvcyI6''@;'; put 'put ''QTgoa3QuQW5jaG9yLHcpfTtpZihrdC5UYXJnZXQmJihUdFsiIXBhdGgiXT1zbihrdC5UYXJnZXQsTWUpLFR0WyIhZGF0YSJdPUl0KEQsVHRbIiFwYXRoIl0pLFR0WyIhZGF0YXR5cGUiXT0ic3RyaW5nIj09dHlwZW9mIFR0WyIhZGF0YSJdPyJiaW5hcnkiOiJidWZmZXIiKSxrdC5MaW5rJiYo''@;'; put 'put ''VHRbIiFkYXRhdHlwZSJdfHwoVHRbIiFkYXRhdHlwZSJdPSJyZW1vdGUiKSxUdFsiIWxpbmsiXT1rdC5MaW5rKSwhVHRbIiFkYXRhdHlwZSJdKXRocm93IkltYWdlIGRhdGEgY2Fubm90IGJlIGZvdW5kIjt3WyIhaW1hZ2VzIl18fCh3WyIhaW1hZ2VzIl09W10pLHdbIiFpbWFnZXMiXS5wdXNo''@;'; put 'put ''KFR0KX12YXIgWXQsZ247aWYoVWUuc2hhcGVzKWZvcih2YXIgZm49MDtmbjxVZS5zaGFwZXMubGVuZ3RoOysrZm4pZ249eyIhdHlwZSI6InNoYXBlIiwiIXBvcyI6eDIoKFl0PVVlLnNoYXBlc1tmbl0pLkFuY2hvcix3KSwiIXBvc1R5cGUiOll0LkFuY2hvci50eXBlLnJlcGxhY2UoL0FuY2hv''@;'; put 'put ''ci8sIiIpLCIhYWJzcG9zIjp4MihZdC5BbmNob3IsdyksIiFyZWxwb3MiOkE4KFl0LkFuY2hvcix3KX0sWyJ2IiwiIXNoYXBlIiwicyIsIlIiXS5mb3JFYWNoKHFuKSx3WyIhc2hhcGVzIl18fCh3WyIhc2hhcGVzIl09W10pLHdbIiFzaGFwZXMiXS5wdXNoKGduKX19ZnVuY3Rpb24gcW4oS24p''@;'; put 'put ''e1l0W0tuXSYmKGduW0tuXT1ZdFtLbl0pfX0oZnQsdmUsdyxQLE1lLDAsMCxVZSk7dmFyIE10PVtdO3JldHVybiBnZSYmZ2VbZWVdJiZtdChnZVtlZV0pLmZvckVhY2goZnVuY3Rpb24odXQpe2lmKGdlW2VlXVt1dF0uVHlwZT09TmkuQ01OVCl7dmFyIHd0PXNuKGdlW2VlXVt1dF0uVGFyZ2V0''@;'; put 'put ''LFApO2lmKCEoTXQ9ZnVuY3Rpb24gT2VlKHcsUCxEKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBVSCh3LFApe3ZhciBEPVtdLGVlPVtdLG9lPXt9LGdlPSExO3JldHVybiB6byh3LGZ1bmN0aW9uKHZlLE1lLGplKXtzd2l0Y2goamUpe2Nhc2UgNjMyOmVlLnB1c2godmUp''@;'; put 'put ''O2JyZWFrO2Nhc2UgNjM1Om9lPXZlO2JyZWFrO2Nhc2UgNjM3Om9lLnQ9dmUudCxvZS5oPXZlLmgsb2Uucj12ZS5yO2JyZWFrO2Nhc2UgNjM2OmlmKG9lLmF1dGhvcj1lZVtvZS5pYXV0aG9yXSxkZWxldGUgb2UuaWF1dGhvcixQLnNoZWV0Um93cyYmb2UucmZ4JiZQLnNoZWV0Um93czw9b2Uu''@;'; put 'put ''cmZ4LnIpYnJlYWs7b2UudHx8KG9lLnQ9IiIpLGRlbGV0ZSBvZS5yZngsRC5wdXNoKG9lKTticmVhaztjYXNlIDMwNzI6Y2FzZSAzNzpjYXNlIDM4OmJyZWFrO2Nhc2UgMzU6Z2U9ITA7YnJlYWs7Y2FzZSAzNjpnZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKE1lfHwiIikuaW5kZXhPZigiQmVn''@;'; put 'put ''aW4iKT4wKSYmISgoTWV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCFnZXx8UC5XVEYpKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitqZSsiICIrTWUpfX0pLER9KHcsRCk6ZnVuY3Rpb24gbUEodyxQKXtpZih3Lm1hdGNoKC88KD86XHcrOik/Y29tbWVudHMgKlwvPi8p''@;'; put 'put ''KXJldHVybltdO3ZhciBEPVtdLGVlPVtdLG9lPXcubWF0Y2goLzwoPzpcdys6KT9hdXRob3JzPihbXHNcU10qKTxcLyg/Olx3KzopP2F1dGhvcnM+Lyk7b2UmJm9lWzFdJiZvZVsxXS5zcGxpdCgvPFwvXHcqOj9hdXRob3I+LykuZm9yRWFjaChmdW5jdGlvbihfZSl7aWYoIiIhPT1fZSYmIiIh''@;'; put 'put ''PT1fZS50cmltKCkpe3ZhciB2ZT1fZS5tYXRjaCgvPCg/Olx3KzopP2F1dGhvcltePl0qPiguKikvKTt2ZSYmRC5wdXNoKHZlWzFdKX19KTt2YXIgZ2U9dy5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRMaXN0PihbXHNcU10qKTxcLyg/Olx3KzopP2NvbW1lbnRMaXN0Pi8pO3JldHVybiBnZSYm''@;'; put 'put ''Z2VbMV0mJmdlWzFdLnNwbGl0KC88XC9cdyo6P2NvbW1lbnQ+LykuZm9yRWFjaChmdW5jdGlvbihfZSl7aWYoIiIhPT1fZSYmIiIhPT1fZS50cmltKCkpe3ZhciB2ZT1fZS5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRbXj5dKj4vKTtpZih2ZSl7dmFyIE1lPWNuKHZlWzBdKSxqZT17YXV0aG9y''@;'; put 'put ''Ok1lLmF1dGhvcklkJiZEW01lLmF1dGhvcklkXXx8InNoZWV0anNnaG9zdCIscmVmOk1lLnJlZixndWlkOk1lLmd1aWR9LFVlPWNhKE1lLnJlZik7aWYoIShQLnNoZWV0Um93cyYmUC5zaGVldFJvd3M8PVVlLnIpKXt2YXIgWGU9X2UubWF0Y2goLzwoPzpcdys6KT90ZXh0PihbXHNcU10qKTxc''@;'; put 'put ''Lyg/Olx3KzopP3RleHQ+LyksaXQ9ISFYZSYmISFYZVsxXSYmZF8oWGVbMV0pfHx7cjoiIix0OiIiLGg6IiJ9O2plLnI9aXQuciwiPHQ+PC90PiI9PWl0LnImJihpdC50PWl0Lmg9IiIpLGplLnQ9KGl0LnR8fCIiKS5yZXBsYWNlKC9cclxuL2csIlxuIikucmVwbGFjZSgvXHIvZywiXG4iKSxQ''@;'; put 'put ''LmNlbGxIVE1MJiYoamUuaD1pdC5oKSxlZS5wdXNoKGplKX19fX0pLGVlfSh3LEQpfShJdCh3LHd0LCEwKSx3dCxNZSkpfHwhTXQubGVuZ3RoKXJldHVybjshZnVuY3Rpb24gT18odyxQKXt2YXIgZWUsRD1BcnJheS5pc0FycmF5KHcpO1AuZm9yRWFjaChmdW5jdGlvbihvZSl7dmFyIGdlPWNh''@;'; put 'put ''KG9lLnJlZik7aWYoRD8od1tnZS5yXXx8KHdbZ2Uucl09W10pLGVlPXdbZ2Uucl1bZ2UuY10pOmVlPXdbb2UucmVmXSwhZWUpe2VlPXt0OiJ6In0sRD93W2dlLnJdW2dlLmNdPWVlOndbb2UucmVmXT1lZTt2YXIgX2U9UGkod1siIXJlZiJdfHwiQkRXR08xMDAwMDAxOkExIik7X2Uucy5yPmdl''@;'; put 'put ''LnImJihfZS5zLnI9Z2UuciksX2UuZS5yPGdlLnImJihfZS5lLnI9Z2UuciksX2Uucy5jPmdlLmMmJihfZS5zLmM9Z2UuYyksX2UuZS5jPGdlLmMmJihfZS5lLmM9Z2UuYyk7dmFyIHZlPVZvKF9lKTt2ZSE9PXdbIiFyZWYiXSYmKHdbIiFyZWYiXT12ZSl9ZWUuY3x8KGVlLmM9W10pO3ZhciBN''@;'; put 'put ''ZT17YTpvZS5hdXRob3IsdDpvZS50LHI6b2Uucn07TWUuciYmInN0cmluZyI9PXR5cGVvZiBNZS5yJiYoTWUuUj1zOChNZS5yKSksb2UuaCYmKE1lLmg9b2UuaCksZWUuYy5wdXNoKE1lKX0pfShmdCxNdCl9fSksZnVuY3Rpb24gaUIodyxQLEQsZWUsb2UsZ2UsX2UpeyF3fHwhd1siIXRhYmxl''@;'; put 'put ''cmVmcyJdfHwhRHx8IURbIiFpZCJdfHwod1siIXRhYmxlcyJdPVtdLHdbIiF0YWJsZXJlZnMiXS5mb3JFYWNoKGZ1bmN0aW9uKHZlKXt2YXIgTWU9RFsiIWlkIl1bdmVdO2lmKE1lJiZNZS5UYXJnZXQpe3ZhciBqZT1zbihNZS5UYXJnZXQsZWUpOyFmdW5jdGlvbiBZbSh3LFAsRCxlZSxvZSl7''@;'; put 'put ''dmFyIGdlPXtzdHlsZTp7fSxoZWFkZXI6MH0sX2U9ITE7dy5yZXBsYWNlKHF0LGZ1bmN0aW9uKHZlKXt2YXIgTWU9Y24odmUpO3N3aXRjaChqbihNZVswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPC90YWJsZT4iOmNhc2UiPC9hdXRvRmlsdGVyPiI6Y2FzZSI8c29ydFN0YXRlIjpjYXNlIjxzb3J0''@;'; put 'put ''U3RhdGU+IjpjYXNlIjwvc29ydFN0YXRlPiI6Y2FzZSI8L3RhYmxlQ29sdW1ucyI6Y2FzZSI8L3RhYmxlQ29sdW1ucz4iOmNhc2UiPC90YWJsZUNvbHVtbj4iOmNhc2UiPGNhbGN1bGF0ZWRDb2x1bW5Gb3JtdWxhPiI6Y2FzZSI8Y2FsY3VsYXRlZENvbHVtbkZvcm11bGEiOmNhc2UiPC9jYWxj''@;'; put 'put ''dWxhdGVkQ29sdW1uRm9ybXVsYT4iOmNhc2UiPHRvdGFsc1Jvd0Zvcm11bGE+IjpjYXNlIjx0b3RhbHNSb3dGb3JtdWxhIjpjYXNlIjwvdG90YWxzUm93Rm9ybXVsYT4iOmNhc2UiPHhtbENvbHVtblByPiI6Y2FzZSI8eG1sQ29sdW1uUHIiOmNhc2UiPC94bWxDb2x1bW5Qcj4iOmNhc2UiPHNv''@;'; put 'put ''cnRDb25kaXRpb24+IjpjYXNlIjxzb3J0Q29uZGl0aW9uIjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8dGFibGUiOk1lLnJlZiYmKGdlLnJlZj1NZS5yZWYpLE1lLm5hbWU/Z2UubmFtZT1NZS5uYW1lOk1l''@;'; put 'put ''LmRpc3BsYXlOYW1lJiYoZ2UubmFtZT1NZS5kaXNwbGF5TmFtZSksbnVsbCE9TWUuaGVhZGVycm93Y291bnQmJjEhPStNZS5oZWFkZXJyb3djb3VudD9nZS5oZWFkZXI9K01lLmhlYWRlcnJvd2NvdW50Om51bGw9PU1lLmhlYWRlcnJvd2NvdW50JiYoZ2UuaGVhZGVyPTEpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGF1dG9GaWx0ZXIiOmNhc2UiPGF1dG9GaWx0ZXI+IjpnZS5maWx0ZXI9ITA7YnJlYWs7Y2FzZSI8dGFibGVDb2x1bW5zIjpjYXNlIjx0YWJsZUNvbHVtbnM+IjpnZS5jb2xzPVtdO2JyZWFrO2Nhc2UiPHRhYmxlU3R5bGVJbmZvIjpNZS5zaG93Um93U3RyaXBlcyYmKGdlLnN0eWxlLnJvd3N0''@;'; put 'put ''cmlwZT1fcihNZS5zaG93Um93U3RyaXBlcykpLE1lLnNob3dDb2x1bW5TdHJpcGVzJiYoZ2Uuc3R5bGUuY29sc3RyaXBlPV9yKE1lLnNob3dDb2x1bW5TdHJpcGVzKSksTWUuc2hvd0ZpcnN0Q29sdW1uJiYoZ2Uuc3R5bGUuY29sZmlyc3Q9X3IoTWUuc2hvd0ZpcnN0Q29sdW1uKSksTWUuc2hv''@;'; put 'put ''d0xhc3RDb2x1bW4mJihnZS5zdHlsZS5jb2xsYXN0PV9yKE1lLnNob3dMYXN0Q29sdW1uKSksTWUubmFtZSYmKGdlLnN0eWxlLm5hbWU9TWUubmFtZS5yZXBsYWNlKC9eVGFibGVTdHlsZS8sIiIpKTticmVhaztjYXNlIjx0YWJsZUNvbHVtbiI6Y2FzZSI8dGFibGVDb2x1bW4+IjpnZS5jb2xz''@;'; put 'put ''LnB1c2goe2lkOitNZS5pZCxuYW1lOk1lLm5hbWV9KTticmVhaztjYXNlIjxmaWx0ZXJDb2x1bW4+IjpjYXNlIjxmaWx0ZXJDb2x1bW4iOmNhc2UiPGN1c3RvbUZpbHRlcnMiOmNhc2UiPGN1c3RvbUZpbHRlcnM+IjpjYXNlIjxleHQiOl9lPSEwO2JyZWFrO2Nhc2UiPC9maWx0ZXJDb2x1bW4+''@;'; put 'put ''IjpjYXNlIjwvY3VzdG9tRmlsdGVycz4iOmNhc2UiPC9leHQ+IjpfZT0hMTticmVhaztkZWZhdWx0OmlmKCFfZSYmb2UuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrTWVbMF0rIiBpbiB0YWJsZSIpfXJldHVybiB2ZX0pLGdlLmZpbHRlcnx8KGdlLmZpbHRlcj0hMSksZ2Uu''@;'; put 'put ''c3R5bGUubmFtZSYmIWdlLnN0eWxlLm5hbWUubWF0Y2goL14oTGlnaHR8TWVkaXVtfERhcmspXGQrJC8pJiZELlRhYmxlJiZELlRhYmxlLmZvckVhY2goZnVuY3Rpb24odmUpeyh2ZS5uYW1lPT1nZS5zdHlsZS5uYW1lfHx2ZS5yYXduYW1lPT1nZS5zdHlsZS5uYW1lKSYmKGdlLnN0eWxlLnJh''@;'; put 'put ''dz1KdCh2ZSkpfSksUFsiIXRhYmxlcyJdLnB1c2goZ2UpfShJdChQLGplLCEwKSx3LG9lLDAsX2UpfX0pLGRlbGV0ZSB3WyIhdGFibGVyZWZzIl0pfShmdCx3LGdlW2VlXSxQLFhlLDAsTWUpLHR5cGVvZiBwYXJzZV9zaGVldF9waXZvdDwidSImJmh2LnB1c2goW2Z0LHcsZ2VbZWVdLFAse1No''@;'; put 'put ''ZWV0czpfZX0sWGUsTWVdKSxmdW5jdGlvbiBwTyh3LFAsRCxlZSxvZSxnZSxfZSx2ZSl7aWYodyYmd1siIWxlZ2RyYXdlbCJdKXt2YXIgTWU9c24od1siIWxlZ2RyYXdlbCJdLlRhcmdldCxlZSksamU9bm4oRCxNZSwhMCk7amUmJmZ1bmN0aW9uIE5IKHcsUCxEKXt2YXIgZWU9MDsody5tYXRj''@;'; put 'put ''aChPcCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXt2YXIgSHQsa3QsVHQsWXQsZ24scW4sZm4sS24sZ2U9IiIsX2U9ITAsdmU9IiIsTWU9LTEsamU9e30sVWU9e30sWGU9e30saXQ9LTEsZnQ9LTEsTXQ9IiIsdXQ9IiIsd3Q9IiIsem49ITEsT249ITE7c3dpdGNoKG9lLnJlcGxhY2UocXQs''@;'; put 'put ''ZnVuY3Rpb24oWW4sanIpe3ZhciBsaT1jbihZbik7c3dpdGNoKGpuKGxpWzBdKSl7Y2FzZSI8c2hhcGUiOmxpLmZpbGxjb2xvciYmKGplLmNvbG9yMT1saS5maWxsY29sb3IpLGxpLnN0cm9rZWNvbG9yJiYoWGUuY29sb3I9bGkuc3Ryb2tlY29sb3IpO2JyZWFrO2Nhc2UiPGZpbGwiOmNhc2Ui''@;'; put 'put ''PGZpbGw+IjoiPHY6ZmlsbCI9PWxpWzBdJiYobGkuY29sb3IyJiYoamUuY29sb3IyPWxpLmNvbG9yMiksbGkudHlwZSYmKGplLnR5cGU9bGkudHlwZSkpO2JyZWFrO2Nhc2UiPC9maWxsPiI6Y2FzZSI8bG9jayI6Y2FzZSI8bG9jay8+IjpicmVhaztjYXNlIjxzaGFkb3ciOmxpLmNvbG9yJiYo''@;'; put 'put ''VWUuY29sb3I9bGkuY29sb3IpLGxpLm9uJiYoVWUub249bGkub24pO2JyZWFrO2Nhc2UiPENsaWVudERhdGEiOmxpLk9iamVjdFR5cGUmJihnZT1saS5PYmplY3RUeXBlKTticmVhaztjYXNlIjxWaXNpYmxlIjpjYXNlIjxWaXNpYmxlLz4iOl9lPSExO2JyZWFrO2Nhc2UiPEFuY2hvciI6Y2Fz''@;'; put 'put ''ZSI8QW5jaG9yPiI6Y2FzZSI8Um93IjpjYXNlIjxSb3c+IjpjYXNlIjxDb2x1bW4iOmNhc2UiPENvbHVtbj4iOmNhc2UiPEZtbGFNYWNybyI6Y2FzZSI8Rm1sYU1hY3JvPiI6Y2FzZSI8Rm1sYUxpbmsiOmNhc2UiPEZtbGFMaW5rPiI6Y2FzZSI8Rm1sYVJhbmdlIjpjYXNlIjxGbWxhUmFuZ2U+''@;'; put 'put ''IjpjYXNlIjxTZWxUeXBlIjpjYXNlIjxTZWxUeXBlPiI6Y2FzZSI8VmFsIjpjYXNlIjxWYWw+IjpjYXNlIjxNaW4iOmNhc2UiPE1pbj4iOmNhc2UiPE1heCI6Y2FzZSI8TWF4PiI6Y2FzZSI8SW5jIjpjYXNlIjxJbmM+IjpjYXNlIjxQYWdlIjpjYXNlIjxQYWdlPiI6Y2FzZSI8Q2hlY2tlZCI6''@;'; put 'put ''Y2FzZSI8Q2hlY2tlZD4iOmNhc2UiPHRleHRib3giOmNhc2UiPHRleHRib3g+IjpNZT1qcitZbi5sZW5ndGg7YnJlYWs7Y2FzZSI8L0FuY2hvcj4iOnZlPW9lLnNsaWNlKE1lLGpyKS50cmltKCk7YnJlYWs7Y2FzZSI8L1Jvdz4iOml0PStvZS5zbGljZShNZSxqcikudHJpbSgpO2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9Db2x1bW4+IjpmdD0rb2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjwvRm1sYU1hY3JvPiI6TXQ9b2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjwvRm1sYUxpbms+Ijp1dD1vZS5zbGljZShNZSxqcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhUmFuZ2U+''@;'; put 'put ''Ijpmbj1vZS5zbGljZShNZSxqcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9TZWxUeXBlPiI6S249b2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjwvVmFsPiI6SHQ9K29lLnNsaWNlKE1lLGpyKS50cmltKCk7YnJlYWs7Y2FzZSI8L01pbj4iOmt0PStvZS5zbGljZShNZSxqcikudHJp''@;'; put 'put ''bSgpO2JyZWFrO2Nhc2UiPC9NYXg+IjpUdD0rb2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjwvSW5jPiI6WXQ9K29lLnNsaWNlKE1lLGpyKS50cmltKCk7YnJlYWs7Y2FzZSI8L1BhZ2U+Ijpnbj0rb2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjwvQ2hlY2tlZD4i''@;'; put 'put ''OnFuPStvZS5zbGljZShNZSxqcikudHJpbSgpO2JyZWFrO2Nhc2UiPC90ZXh0Ym94PiI6d3Q9b2Uuc2xpY2UoTWUsanIpLnRyaW0oKTticmVhaztjYXNlIjxNb3ZlV2l0aENlbGxzLz4iOmNhc2UiPE1vdmVXaXRoQ2VsbHM+Ijp6bj0hMDticmVhaztjYXNlIjxTaXplV2l0aENlbGxzLz4iOmNh''@;'; put 'put ''c2UiPFNpemVXaXRoQ2VsbHM+IjpPbj0hMH1yZXR1cm4iIn0pLGdlKXtjYXNlIk5vdGUiOnZhciBlcj1lYS5zaGVldF9nZXRfY2VsbChQLGl0Pj0wJiZmdD49MD9waSh7cjppdCxjOmZ0fSk6RFtlZV0ucmVmKTtlci5jJiYoZXIuYy5oaWRkZW49X2UsdmUmJihlci5jLnJhd2FuY2hvcj12ZSxU''@;'; put 'put ''OCh2ZSxlci5jKSxpQShlci5jWyIhcG9zIl0sMiohIXpuKyEhT24sUCkpLGplLmNvbG9yMSYmKGVyLmMuZmlsbD1qZSksVWUuY29sb3ImJihlci5jLnNoYWRvdz1VZSksWGUuY29sb3ImJihlci5jLnN0cm9rZT1YZSkpLCsrZWU7YnJlYWs7Y2FzZSJCdXR0b24iOmNhc2UiR0JveCI6Y2FzZSJE''@;'; put 'put ''cm9wIjpjYXNlIkxhYmVsIjpjYXNlIkNoZWNrYm94IjpjYXNlIlNjcm9sbCI6Y2FzZSJMaXN0IjpjYXNlIlJhZGlvIjpjYXNlIlNwaW4iOmNhc2UiRWRpdCI6UFsiIWNvbnRyb2xzIl18fChQWyIhY29udHJvbHMiXT1bXSk7dmFyIHRyPXsiIXR5cGUiOmdlfTt2ZSYmVDgodmUsdHIpLE10JiYo''@;'; put 'put ''dHIubWFjcm89TXQucmVwbGFjZSgiWzBdISIsIiIpKSx1dCYmKHRyLmxpbms9dXQpLCJTY3JvbGwiPT1nZXx8IlNwaW4iPT1nZT8obnVsbD09SHQmJihIdD0wKSxudWxsPT1rdCYmKGt0PTApLG51bGw9PVR0JiYoVHQ9M2U0KSxudWxsPT1ZdCYmKFl0PTEpLCJTY3JvbGwiPT1nZSYmbnVsbD09''@;'; put 'put ''Z24mJihnbj0xMCkpOiJSYWRpbyI9PWdlfHwiQ2hlY2tib3giPT1nZT8obnVsbD09cW4mJihxbj0wKSxIdD1xbik6KCJMaXN0Ij09Z2V8fCJEcm9wIj09Z2UpJiYobnVsbCE9Zm4mJih0ci5yZWY9Zm4pLG51bGw9PUtuJiYoS249IlNpbmdsZSIpLCJMaXN0Ij09Z2UmJih0ci5zZWw9S24pKSxu''@;'; put 'put ''dWxsIT1IdCYmKHRyLnZhbD1IdCksbnVsbCE9a3QmJih0ci5taW49a3QpLG51bGwhPVR0JiYodHIubWF4PVR0KSxudWxsIT1ZdCYmKHRyLnN0ZXA9WXQpLG51bGwhPWduJiYodHIucGFnZT1nbiksd3QmJih0ci50PXd0LnJlcGxhY2UoL1xzKjxbXHNcU10qPz5ccyovZywiIikpLFBbIiFjb250''@;'; put 'put ''cm9scyJdLnB1c2godHIpfX0pfShGaShqZSksdyx2ZXx8W10pLHdbIiFMRFAiXT1NZSx3WyIhY3RybGlkIl0mJndbIiFjdHJsaWQiXS5mb3JFYWNoKGZ1bmN0aW9uKFVlKXtpZihVZS5yZWwmJlVlLnJlbC5UYXJnZXQpe3ZhciBYZT1zbihVZS5yZWwuVGFyZ2V0LGVlKTtVZS5wYXRoPVhlLGRl''@;'; put 'put ''bGV0ZSBVZS5yZWx9fSl9fShmdCwwLHcsUCwwLDAsMCxNdCksZnR9Y2F0Y2godXQpe2lmKE1lLldURil0aHJvdyB1dH19ZnVuY3Rpb24gbXUodyl7cmV0dXJuIi8iPT13LmNoYXJBdCgwKT93LnNsaWNlKDEpOnd9dmFyIGFCPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBtTyh3LFApe2lmKGh2PVtd''@;'; put 'put ''LGR2KFA9UHx8e30pLF9uKHcsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpfHxfbih3LCJvYmplY3RkYXRhLnhtbCIpKXJldHVybiBmdW5jdGlvbiBsTyh3LFApe1A9UHx8e30sX24odywiTUVUQS1JTkYvbWFuaWZlc3QueG1sIikmJmZ1bmN0aW9uIEJsKHcsUCl7Zm9yKHZhciBlZSxvZSxEPVB3''@;'; put 'put ''KHcpO2VlPVdyLmV4ZWMoRCk7KXN3aXRjaChlZVszXSl7Y2FzZSJtYW5pZmVzdCI6YnJlYWs7Y2FzZSJmaWxlLWVudHJ5IjppZigiLyI9PShvZT1jbihlZVswXSwhMSkpLnBhdGgmJm9lLnR5cGUhPT1OYyl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgT3BlbkRvY3VtZW50IGlzIG5vdCBhIHNwcmVh''@;'; put 'put ''ZHNoZWV0Iik7YnJlYWs7Y2FzZSJlbmNyeXB0aW9uLWRhdGEiOmNhc2UiYWxnb3JpdGhtIjpjYXNlInN0YXJ0LWtleS1nZW5lcmF0aW9uIjpjYXNlImtleS1kZXJpdmF0aW9uIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE9EUyBFbmNyeXB0aW9uIik7ZGVmYXVsdDppZihQJiZQLldU''@;'; put 'put ''Ril0aHJvdyBlZX19KEl0KHcsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpLFApO3ZhciBEPW5uKHcsImNvbnRlbnQueG1sIik7aWYoIUQpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlIik7dmFyIGVlPWgxKEZpKEQpLFApO3JldHVybiBfbih3''@;'; put 'put ''LCJtZXRhLnhtbCIpJiYoZWUuUHJvcHM9bmgoSXQodywibWV0YS54bWwiKSkpLGVlfSh3LFApO2lmKF9uKHcsIkluZGV4L0RvY3VtZW50Lml3YSIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyBmaWxlIik7dmFyIGdlLF9lLEQ9ZnVuY3Rpb24gdnQodyl7Zm9yKHZhciBQ''@;'; put 'put ''PXcuRnVsbFBhdGhzfHxtdCh3LmZpbGVzKSxEPVtdLGVlPTA7ZWU8UC5sZW5ndGg7KytlZSkiLyIhPVBbZWVdLnNsaWNlKC0xKSYmRC5wdXNoKFBbZWVdKTtyZXR1cm4gRC5zb3J0KCl9KHcpLGVlPWZ1bmN0aW9uIGo2KHcpe3ZhciBQPXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpb''@;'; put 'put ''XSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFpbnM6W10sdmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpbXSxwaXZv''@;'; put 'put ''dGNhY2hlczpbXSxwaXZvdHJlY29yZHM6W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpbXSxjdXN0b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5zOiIifTtp''@;'; put 'put ''Zighd3x8IXcubWF0Y2gpcmV0dXJuIFA7dmFyIEQ9e307aWYoKHcubWF0Y2gocXQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlZSl7dmFyIG9lPWNuKGVlKTtzd2l0Y2gob2VbMF0ucmVwbGFjZShIbiwiPCIpKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxUeXBlcyI6UC54bWxucz1vZVsieG1s''@;'; put 'put ''bnMiKyhvZVswXS5tYXRjaCgvPChcdyspOi8pfHxbIiIsIiJdKVsxXV07YnJlYWs7Y2FzZSI8RGVmYXVsdCI6RFtvZS5FeHRlbnNpb24udG9Mb3dlckNhc2UoKV09b2UuQ29udGVudFR5cGU7YnJlYWs7Y2FzZSI8T3ZlcnJpZGUiOnZvaWQgMCE9PVBbenNbb2UuQ29udGVudFR5cGVdXSYmUFt6''@;'; put 'put ''c1tvZS5Db250ZW50VHlwZV1dLnB1c2gob2UuUGFydE5hbWUpfX0pLFAueG1sbnMhPT1zYS5DVCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gTmFtZXNwYWNlOiAiK1AueG1sbnMpO3JldHVybiBQLmNhbGNjaGFpbj1QLmNhbGNjaGFpbnMubGVuZ3RoPjA/UC5jYWxjY2hhaW5zWzBdOiIiLFAu''@;'; put 'put ''c3N0PVAuc3Rycy5sZW5ndGg+MD9QLnN0cnNbMF06IiIsUC5zdHlsZT1QLnN0eWxlcy5sZW5ndGg+MD9QLnN0eWxlc1swXToiIixQLmNvbm49UC5jb25ucy5sZW5ndGg+MD9QLmNvbm5zWzBdOiIiLFAuZGVmYXVsdHM9RCxkZWxldGUgUC5jYWxjY2hhaW5zLFB9KG5uKHcsIltDb250ZW50X1R5''@;'; put 'put ''cGVzXS54bWwiKSksb2U9ITE7aWYoMD09PWVlLndvcmtib29rcy5sZW5ndGgmJkl0KHcsX2U9InhsL3dvcmtib29rLnhtbCIsITApJiZlZS53b3JrYm9va3MucHVzaChfZSksMD09PWVlLndvcmtib29rcy5sZW5ndGgpe2lmKCFJdCh3LF9lPSJ4bC93b3JrYm9vay5iaW4iLCEwKSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHdvcmtib29rIik7ZWUud29ya2Jvb2tzLnB1c2goX2UpLG9lPSEwfSJiaW4iPT1lZS53b3JrYm9va3NbMF0uc2xpY2UoLTMpJiYob2U9ITApO3ZhciB2ZT17fSxNZT17fTtpZighUC5ib29rU2hlZXRzJiYhUC5ib29rUHJvcHMpe2lmKFo4PVtdLGVl''@;'; put 'put ''LnNzdCl0cnl7Wjg9ZnVuY3Rpb24gdXYodyxQLEQpe3JldHVybiIuYmluIj09PVAuc2xpY2UoLTQpP2Z1bmN0aW9uIFFGKHcsUCl7dmFyIEQ9W10sZWU9ITE7cmV0dXJuIHpvKHcsZnVuY3Rpb24oZ2UsX2UsdmUpe3N3aXRjaCh2ZSl7Y2FzZSAxNTk6RC5Db3VudD1nZVswXSxELlVuaXF1ZT1n''@;'; put 'put ''ZVsxXTticmVhaztjYXNlIDE5OkQucHVzaChnZSk7YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTplZT0hMDticmVhaztjYXNlIDM2OmVlPSExO2JyZWFrO2RlZmF1bHQ6aWYoX2UuaW5kZXhPZigiQmVnaW4iKT4wfHxfZS5pbmRleE9mKCJFbmQiKSwhZWV8fFAuV1RGKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIit2ZSsiICIrX2UpfX0pLER9KHcsRCk6ZnVuY3Rpb24gUHgodyxQKXt2YXIgRD1bXSxlZT0iIjtpZighdylyZXR1cm4gRDt2YXIgb2U9dy5tYXRjaChJeCk7aWYob2Upe2VlPW9lWzJdLnJlcGxhY2UoUngsIiIpLnNwbGl0KEx4KTtmb3IodmFy''@;'; put 'put ''IGdlPTA7Z2UhPWVlLmxlbmd0aDsrK2dlKXt2YXIgX2U9ZF8oZWVbZ2VdLnRyaW0oKSxQKTtudWxsIT1fZSYmKERbRC5sZW5ndGhdPV9lKX1vZT1jbihvZVsxXSksRC5Db3VudD1vZS5jb3VudCxELlVuaXF1ZT1vZS51bmlxdWVDb3VudH1yZXR1cm4gRH0odyxEKX0oSXQodyxtdShlZS5zc3Qp''@;'; put 'put ''KSxlZS5zc3QsUCl9Y2F0Y2gocnIpe2lmKFAuV1RGKXRocm93IHJyfVAuY2VsbFN0eWxlcyYmZWUudGhlbWVzLmxlbmd0aCYmKHZlPWZ1bmN0aW9uIHN2KHcsUCxEKXtyZXR1cm4gazgodyxEKX0obm4odyxlZS50aGVtZXNbMF0ucmVwbGFjZSgvXlwvLywiIiksITApfHwiIiwwLFApKSxlZS5z''@;'; put 'put ''dHlsZSYmKE1lPWZ1bmN0aW9uIE93KHcsUCxELGVlKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBDXyh3LFAsRCl7dmFyIGVlPXtOdW1iZXJGbXQ6W119O2Zvcih2YXIgb2UgaW4gUy5fdGFibGUpZWUuTnVtYmVyRm10W29lXT1TLl90YWJsZVtvZV07ZWUuQ2VsbFhmPVtd''@;'; put 'put ''LGVlLkZvbnRzPVtdLGVlLkZpbGxzPVtdLGVlLkJvcmRlcnM9W107dmFyIGdlPVtdLF9lPSExO3JldHVybiB6byh3LGZ1bmN0aW9uKE1lLGplLFVlKXtzd2l0Y2goVWUpe2Nhc2UgNDQ6ZWUuTnVtYmVyRm10W01lWzBdXT1NZVsxXSxTLmxvYWQoTWVbMV0sTWVbMF0pO2JyZWFrO2Nhc2UgNDM6''@;'; put 'put ''Vm0oTWUuY29sb3IsUCksZWUuRm9udHMucHVzaChNZSk7YnJlYWs7Y2FzZSAxMDI1OmNhc2UgNDg6Y2FzZSA1MDc6Y2FzZSA1NzI6Y2FzZSA0NzU6Y2FzZSAxMTcxOmNhc2UgMjEwMjpjYXNlIDExMzA6Y2FzZSA1MTI6Y2FzZSAyMDk1OmNhc2UgMzA3MjpicmVhaztjYXNlIDQ1Ok1lLmZnQ29s''@;'; put 'put ''b3ImJlZtKE1lLmZnQ29sb3IsUCksTWUuYmdDb2xvciYmVm0oTWUuYmdDb2xvcixQKSxlZS5GaWxscy5wdXNoKE1lKTticmVhaztjYXNlIDQ2OlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiZGlhZyJdLmZvckVhY2goZnVuY3Rpb24oWGUpe01lW1hlXSYmTWVbWGVdLmNvbG9yJiZW''@;'; put 'put ''bShNZVtYZV0uY29sb3IsUCl9KSxlZS5Cb3JkZXJzLnB1c2goTWUpO2JyZWFrO2Nhc2UgNDc6IkJydEJlZ2luQ2VsbFhGcyI9PWdlW2dlLmxlbmd0aC0xXSYmZWUuQ2VsbFhmLnB1c2goTWUpO2JyZWFrO2Nhc2UgMzU6X2U9ITA7YnJlYWs7Y2FzZSAzNjpfZT0hMTticmVhaztjYXNlIDM3Omdl''@;'; put 'put ''LnB1c2goamUpLF9lPSEwO2JyZWFrO2Nhc2UgMzg6Z2UucG9wKCksX2U9ITE7YnJlYWs7ZGVmYXVsdDppZigoamV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApZ2UucHVzaChqZSk7ZWxzZSBpZigoamV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKWdlLnBvcCgpO2Vsc2UgaWYoIV9lfHxELldURiYm''@;'; put 'put ''IkJydEFDQmVnaW4iIT1nZVtnZS5sZW5ndGgtMV0pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK1VlKyIgIitqZSl9fSksKGVlLkZvbnRzfHxbXSlbMF0mJmhmKGVlLkZvbnRzWzBdKSxlZX0odyxELGVlKTpDOCh3LEQsZWUpfShJdCh3LG11KGVlLnN0eWxlKSksZWUuc3R5''@;'; put 'put ''bGUsdmUsUCkpfXZhciBqZT1lZS5saW5rcy5tYXAoZnVuY3Rpb24ocnIpe3RyeXt2YXIgeG49UG8obm4odyxqaShtdShycikpKSxycik7cmV0dXJuIGZ1bmN0aW9uIFJWKHcsUCxELGVlKXtyZXR1cm4iLmJpbiI9PT1ELnNsaWNlKC00KT9mdW5jdGlvbiBabSh3LFAsRCxlZSl7aWYoIXcpcmV0''@;'; put 'put ''dXJuIHc7dmFyIG9lPWVlfHx7fSxnZT0hMTt6byh3LGZ1bmN0aW9uKE1lLGplLFVlKXtzd2l0Y2goVWUpe2Nhc2UgMzU5OmNhc2UgMzYzOmNhc2UgMzY0OmNhc2UgMzY2OmNhc2UgMzY3OmNhc2UgMzY4OmNhc2UgMzY5OmNhc2UgMzcwOmNhc2UgMzcxOmNhc2UgNDcyOmNhc2UgNTc3OmNhc2Ug''@;'; put 'put ''NTc4OmNhc2UgNTc5OmNhc2UgNTgwOmNhc2UgNTgxOmNhc2UgNTgyOmNhc2UgNTgzOmNhc2UgNTg0OmNhc2UgNTg1OmNhc2UgNTg2OmNhc2UgNTg3OmJyZWFrO2Nhc2UgMzU6Z2U9ITA7YnJlYWs7Y2FzZSAzNjpnZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKGplfHwiIikuaW5kZXhPZigiQmVn''@;'; put 'put ''aW4iKT4wKSYmISgoamV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCFnZXx8b2UuV1RGKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrVWUudG9TdHJpbmcoMTYpKyIgIitqZSl9fSxvZSl9KHcsMCwwLGVlKTpmdW5jdGlvbiB4Xyh3LFAsRCxlZSl7dmFyIG9lPWVlfHx7''@;'; put 'put ''fSxnZT17U2hlZXROYW1lczpbXSxTaGVldHM6e319LHZlPSExLE1lPXt9LGplPS0xLFVlPS0xLFhlPXtzOntyOjAsYzowfSxlOntyOi0xLGM6LTF9fSxpdD17fSxmdD0wO3JldHVybih3fHwiIikucmVwbGFjZShxdCxmdW5jdGlvbihNdCx1dCl7dmFyIHd0PWNuKE10KTtzd2l0Y2goam4od3Rb''@;'; put 'put ''MF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxleHRlcm5hbExpbmsiOmNhc2UiPC9leHRlcm5hbExpbms+IjpjYXNlIjwvZXh0ZXJuYWxCb29rPiI6Y2FzZSI8c2hlZXROYW1lcyI6Y2FzZSI8c2hlZXROYW1lcz4iOmNhc2UiPC9zaGVldE5hbWVzPiI6Y2FzZSI8c2hlZXREYXRhU2V0PiI6Y2FzZSI8''@;'; put 'put ''c2hlZXREYXRhU2V0Lz4iOmNhc2UiPC9zaGVldERhdGFTZXQ+IjpjYXNlIjwvcm93PiI6YnJlYWs7Y2FzZSI8ZXh0ZXJuYWxCb29rIjpjYXNlIjxleHRlcm5hbEJvb2s+IjpnZS5UYXJnZXQ9UFsiIWlkIl1bd3QuaWRdLlRhcmdldCxnZS5NaXNzaW5nPVBbIiFpZCJdW3d0LmlkXS5UeXBlPT1O''@;'; put 'put ''aS5YTUlTUzticmVhaztjYXNlIjxzaGVldE5hbWUiOmdlLlNoZWV0TmFtZXMucHVzaChFcihGaSh3dC52YWwpKSk7YnJlYWs7Y2FzZSI8c2hlZXREYXRhIjpNZT17fSxnZS5TaGVldHNbZ2UuU2hlZXROYW1lc1t3dC5zaGVldElkXV09X3Iod3QucmVmcmVzaEVycm9yfHwiMCIpP251bGw6TWU7''@;'; put 'put ''YnJlYWs7Y2FzZSI8L3NoZWV0RGF0YT4iOlhlLmUuYz49MCYmKE1lWyIhcmVmIl09Vm8oWGUpKTticmVhaztjYXNlIjxyb3ciOmNhc2UiPHJvdz4iOnd0LnI/amU9cGFyc2VJbnQod3QuciwxMCktMTpqZSsrLFVlPS0xO2JyZWFrO2Nhc2UiPGNlbGwiOmNhc2UiPGNlbGw+Ijp3dC5yP1VlPWNh''@;'; put 'put ''KHd0LnIpLmM6KytVZSxpdC50PXd0LnR8fCJuIiwic3RyIj09aXQudCYmKGl0LnQ9InMiKTticmVhaztjYXNlIjwvY2VsbD4iOlhlLmUucjxqZSYmKFhlLmUucj1qZSksWGUuZS5jPFVlJiYoWGUuZS5jPVVlKSxNZVtwaSh7cjpqZSxjOlVlfSldPWl0LGl0PXt9O2JyZWFrO2Nhc2UiPHYiOmNh''@;'; put 'put ''c2UiPHY+IjpmdD1NdC5sZW5ndGgrdXQ7YnJlYWs7Y2FzZSI8L3Y+Ijp2YXIgSHQ9RXIody5zbGljZShmdCx1dCkpO2l0LnY9Im4iPT1pdC50P3BhcnNlRmxvYXQoSHQpOkh0O2JyZWFrO2Nhc2UiPHYvPiI6aXQudj0iIjticmVhaztjYXNlIjxkZWZpbmVkTmFtZXM+Ijp2ZT0hMDticmVhaztj''@;'; put 'put ''YXNlIjwvZGVmaW5lZE5hbWVzPiI6dmU9ITE7YnJlYWs7ZGVmYXVsdDppZighdmUmJm9lLldURil0aHJvdyJ1bnJlY29nbml6ZWQgIit3dFswXSsiIGluIGV4dGVybmFsIGxpbmsifX0pLGdlfSh3LFAsMCxlZSl9KEl0KHcsbXUocnIpKSx4bixycixQKX1jYXRjaHt9fSksVWU9ZnVuY3Rpb24g''@;'; put 'put ''aGcodyxQLEQpe3JldHVybiIuYmluIj09PVAuc2xpY2UoLTQpP2Z1bmN0aW9uIFR3KHcsUCl7dmFyIEQ9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSx4bWxuczoiIn0sZWU9W10sb2U9ITE7UHx8KFA9e30pLFAuYmlmZj0xMjt2YXIgZ2U9''@;'; put 'put ''W10sX2U9W1tdXTtyZXR1cm4gX2UuU2hlZXROYW1lcz1bXSxfZS5YVEk9W10sSDJbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOkF3fSx6byh3LGZ1bmN0aW9uKE1lLGplLFVlKXtzd2l0Y2goVWUpe2Nhc2UgMTU2Ol9lLlNoZWV0TmFtZXMucHVzaChNZS5uYW1lKSxELlNoZWV0cy5wdXNoKE1l''@;'; put 'put ''KTticmVhaztjYXNlIDE1MzpELldCUHJvcHM9TWU7YnJlYWs7Y2FzZSAzOTpudWxsIT1NZS5TaGVldCYmKFAuU0lEPU1lLlNoZWV0KSxNZS5SZWY9RHMoTWUuUHRnLG51bGwsbnVsbCxfZSxQKSxkZWxldGUgUC5TSUQsZGVsZXRlIE1lLlB0ZyxnZS5wdXNoKE1lKTticmVhaztjYXNlIDEwMzY6''@;'; put 'put ''Y2FzZSAzNjE6Y2FzZSAyMDcxOmNhc2UgMTU4OmNhc2UgMTQzOmNhc2UgNjY0OmNhc2UgMzUzOmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSA1MzQ6Y2FzZSA2Nzc6Y2FzZSAxNTc6Y2FzZSA2MTA6Y2FzZSAyMDUwOmNhc2UgMTU1OmNhc2UgNTQ4OmNhc2UgNjc2OmNhc2UgMTI4OmNhc2UgNjY1''@;'; put 'put ''OmNhc2UgMjEyODpjYXNlIDIxMjU6Y2FzZSA1NDk6Y2FzZSAyMDUzOmNhc2UgNTk2OmNhc2UgMjA3NjpjYXNlIDIwNzU6Y2FzZSAyMDgyOmNhc2UgMzk3OmNhc2UgMTU0OmNhc2UgMTExNzpjYXNlIDU1MzpjYXNlIDIwOTE6Y2FzZSAxNjpicmVhaztjYXNlIDM1NzpjYXNlIDM1ODpjYXNlIDM1''@;'; put 'put ''NTpjYXNlIDY2NzpfZVswXS5sZW5ndGg/X2UucHVzaChbVWUsTWVdKTpfZVswXT1bVWUsTWVdLF9lW19lLmxlbmd0aC0xXS5YVEk9W107YnJlYWs7Y2FzZSAzNjI6MD09PV9lLmxlbmd0aCYmKF9lWzBdPVtdLF9lWzBdLlhUST1bXSksX2VbX2UubGVuZ3RoLTFdLlhUST1fZVtfZS5sZW5ndGgt''@;'; put 'put ''MV0uWFRJLmNvbmNhdChNZSksX2UuWFRJPV9lLlhUSS5jb25jYXQoTWUpO2JyZWFrO2Nhc2UgMzU6Y2FzZSAzNzplZS5wdXNoKGplKSxvZT0hMDticmVhaztjYXNlIDM2OmNhc2UgMzg6ZWUucG9wKCksb2U9ITE7YnJlYWs7ZGVmYXVsdDppZighKChqZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+''@;'; put 'put ''MCkmJiEoKGplfHwiIikuaW5kZXhPZigiRW5kIik+MCkmJighb2V8fFAuV1RGJiYiQnJ0QUNCZWdpbiIhPWVlW2VlLmxlbmd0aC0xXSYmIkJydEZSVEJlZ2luIiE9ZWVbZWUubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrVWUrIiAiK2plKX19LFApLGt3''@;'; put 'put ''KEQpLEQuTmFtZXM9Z2UsRC5zdXBib29rcz1fZSxEfSh3LEQpOmZ1bmN0aW9uIHhlZSh3LFApe2lmKCF3KXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgZmlsZSIpO3ZhciBEPXtBcHBWZXJzaW9uOnt9LFdCUHJvcHM6e30sV0JWaWV3OltdLFNoZWV0czpbXSxDYWxjUHI6e30sTmFt''@;'; put 'put ''ZXM6W10sRXh0ZXJuOltdLHhtbG5zOiIifSxlZT0hMSxvZT0ieG1sbnMiLGdlPXt9LF9lPTA7aWYody5yZXBsYWNlKHF0LGZ1bmN0aW9uKE1lLGplKXt2YXIgVWU9Y24oTWUpO3N3aXRjaChqbihVZVswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPC93b3JrYm9vaz4iOmNhc2UiPGZpbGVWZXJzaW9u''@;'; put 'put ''Lz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmNhc2UiPGZpbGVTaGFyaW5nLz4iOmNhc2UiPC93b3JrYm9va1ByPiI6Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uLz4iOmNhc2UiPGJvb2tWaWV3cyI6Y2FzZSI8Ym9va1ZpZXdzPiI6Y2FzZSI8L2Jvb2tWaWV3cz4iOmNhc2UiPC93b3JrYm9va1Zp''@;'; put 'put ''ZXc+IjpjYXNlIjxzaGVldHMiOmNhc2UiPHNoZWV0cz4iOmNhc2UiPC9zaGVldHM+IjpjYXNlIjwvc2hlZXQ+IjpjYXNlIjxmdW5jdGlvbkdyb3VwcyI6Y2FzZSI8ZnVuY3Rpb25Hcm91cHMvPiI6Y2FzZSI8ZnVuY3Rpb25Hcm91cCI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzIjpjYXNlIjwv''@;'; put 'put ''ZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZGVmaW5lZE5hbWVzLz4iOmNhc2UiPGRlZmluZWROYW1lLz4iOmNhc2UiPC9jYWxjUHI+IjpjYXNlIjxvbGVTaXplIjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8L2N1c3RvbVdv''@;'; put 'put ''cmtib29rVmlld3M+IjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXdzIjpjYXNlIjxjdXN0b21Xb3JrYm9va1ZpZXciOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXc+IjpjYXNlIjxwaXZvdENhY2hlcz4iOmNhc2UiPC9waXZvdENhY2hlcz4iOmNhc2UiPHBpdm90Q2FjaGVzIjpjYXNlIjxwaXZv''@;'; put 'put ''dENhY2hlIjpjYXNlIjxzbWFydFRhZ1ByIjpjYXNlIjxzbWFydFRhZ1ByLz4iOmNhc2UiPHNtYXJ0VGFnVHlwZXMiOmNhc2UiPHNtYXJ0VGFnVHlwZXM+IjpjYXNlIjwvc21hcnRUYWdUeXBlcz4iOmNhc2UiPHNtYXJ0VGFnVHlwZSI6Y2FzZSI8d2ViUHVibGlzaGluZyI6Y2FzZSI8d2ViUHVi''@;'; put 'put ''bGlzaGluZy8+IjpjYXNlIjxmaWxlUmVjb3ZlcnlQciI6Y2FzZSI8ZmlsZVJlY292ZXJ5UHIvPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHM+IjpjYXNlIjx3ZWJQdWJsaXNoT2JqZWN0cyI6Y2FzZSI8L3dlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdCI6Y2FzZSI8''@;'; put 'put ''ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmNhc2UiPEFyY2hJRCI6Y2FzZSI8cmV2aXNpb25QdHIiOmJyZWFrO2Nhc2UiPHdvcmtib29rIjpNZS5tYXRjaChFZWUpJiYob2U9InhtbG5zIitNZS5tYXRjaCgvPChcdyspOi8pWzFdKSxELnht''@;'; put 'put ''bG5zPVVlW29lXTticmVhaztjYXNlIjxmaWxlVmVyc2lvbiI6ZGVsZXRlIFVlWzBdLEQuQXBwVmVyc2lvbj1VZTticmVhaztjYXNlIjxmaWxlU2hhcmluZyI6RC5Nb2RpZnk9e3VzZXI6VWUudXNlck5hbWUsd2FybjpfcihVZS5yZWFkT25seVJlY29tbWVuZGVkfHwiZmFsc2UiKX0sKFVlLmFs''@;'; put 'put ''Z29yaXRobU5hbWV8fFVlLmhhc2hWYWx1ZXx8VWUuc2FsdFZhbHVlfHxVZS5zcGluQ291bnQpJiYoRC5Nb2RpZnkuZW5jcnlwdGlvbj17YWxnbzpVZS5hbGdvcml0aG1OYW1lLGhhc2g6VWUuaGFzaFZhbHVlLHNhbHQ6VWUuc2FsdFZhbHVlLHNwaW46K1VlLnNwaW5Db3VudHx8MWU1fSk7YnJl''@;'; put 'put ''YWs7Y2FzZSI8d29ya2Jvb2tQciI6Y2FzZSI8d29ya2Jvb2tQci8+Ijp5aC5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtpZihudWxsIT1VZVtpdFswXV0pc3dpdGNoKGl0WzJdKXtjYXNlImJvb2wiOkQuV0JQcm9wc1tpdFswXV09X3IoVWVbaXRbMF1dKTticmVhaztjYXNlImludCI6RC5XQlByb3Bz''@;'; put 'put ''W2l0WzBdXT1wYXJzZUludChVZVtpdFswXV0sMTApO2JyZWFrO2RlZmF1bHQ6RC5XQlByb3BzW2l0WzBdXT1VZVtpdFswXV19fSksVWUuY29kZU5hbWUmJihELldCUHJvcHMuQ29kZU5hbWU9RmkoVWUuY29kZU5hbWUpKTticmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24iOnZhciBYZT1E''@;'; put 'put ''LlByb3RlY3Rpb258fHt9O1hlLmxvY2tTdHJ1Y3R1cmU9X3IoVWUubG9ja1N0cnVjdHVyZXx8ImZhbHNlIiksWGUubG9ja1dpbmRvd3M9X3IoVWUubG9ja1dpbmRvd3N8fCJmYWxzZSIpLFVlLndvcmtib29rQWxnb3JpdGhtTmFtZSYmKFhlLmVuY3J5cHRpb249e2FsZ286VWUud29ya2Jvb2tB''@;'; put 'put ''bGdvcml0aG1OYW1lLGhhc2g6VWUud29ya2Jvb2tIYXNoVmFsdWUsc2FsdDpVZS53b3JrYm9va1NhbHRWYWx1ZSxzcGluOitVZS53b3JrYm9va1NwaW5Db3VudHx8MWU1fSksRC5Qcm90ZWN0aW9uPVhlO2JyZWFrO2Nhc2UiPHdvcmtib29rVmlldyI6Y2FzZSI8d29ya2Jvb2tWaWV3Lz4iOmRl''@;'; put 'put ''bGV0ZSBVZVswXSxELldCVmlldy5wdXNoKFVlKTticmVhaztjYXNlIjxzaGVldCI6c3dpdGNoKFVlLnN0YXRlKXtjYXNlImhpZGRlbiI6VWUuSGlkZGVuPTE7YnJlYWs7Y2FzZSJ2ZXJ5SGlkZGVuIjpVZS5IaWRkZW49MjticmVhaztkZWZhdWx0OlVlLkhpZGRlbj0wfWRlbGV0ZSBVZS5zdGF0''@;'; put 'put ''ZSxVZS5uYW1lPUVyKEZpKFVlLm5hbWUpKSxkZWxldGUgVWVbMF0sRC5TaGVldHMucHVzaChVZSk7YnJlYWs7Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2UiOkQuRXh0ZXJuLnB1c2goVWUuaWQpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6Y2FzZSI8ZXh0''@;'; put 'put ''IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6ZWU9ITA7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lcz4iOmNhc2UiPC9leHQ+IjpjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOmVlPSExO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lIjooZ2U9e30pLk5h''@;'; put 'put ''bWU9RmkoVWUubmFtZSksVWUuY29tbWVudCYmKGdlLkNvbW1lbnQ9VWUuY29tbWVudCksVWUubG9jYWxTaGVldElkJiYoZ2UuU2hlZXQ9K1VlLmxvY2FsU2hlZXRJZCksX3IoVWUuaGlkZGVufHwiMCIpJiYoZ2UuSGlkZGVuPSEwKSxfZT1qZStNZS5sZW5ndGg7YnJlYWs7Y2FzZSI8L2RlZmlu''@;'; put 'put ''ZWROYW1lPiI6Z2UuUmVmPUVyKEZpKHcuc2xpY2UoX2UsamUpKSksRC5OYW1lcy5wdXNoKGdlKTticmVhaztjYXNlIjxjYWxjUHIiOmNhc2UiPGNhbGNQci8+IjpkZWxldGUgVWVbMF0sRC5DYWxjUHI9VWU7YnJlYWs7ZGVmYXVsdDppZighZWUmJlAuV1RGKXRocm93IG5ldyBFcnJvcigidW5y''@;'; put 'put ''ZWNvZ25pemVkICIrVWVbMF0rIiBpbiB3b3JrYm9vayIpfXJldHVybiBNZX0pLC0xPT09c2EubWFpbi5pbmRleE9mKEQueG1sbnMpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrRC54bWxucyk7cmV0dXJuIGt3KEQpLER9KHcsRCl9KEl0KHcsbXUoZWUud29ya2Jvb2tz''@;'; put 'put ''WzBdKSksZWUud29ya2Jvb2tzWzBdLFApLFhlPXt9LGl0PSIiO2VlLmNvcmVwcm9wcy5sZW5ndGgmJigoaXQ9SXQodyxtdShlZS5jb3JlcHJvcHNbMF0pLCEwKSkmJihYZT1uaChpdCkpLDAhPT1lZS5leHRwcm9wcy5sZW5ndGgmJihpdD1JdCh3LG11KGVlLmV4dHByb3BzWzBdKSwhMCkpJiZm''@;'; put 'put ''dW5jdGlvbiBhcCh3LFAsRCl7dmFyIGVlPXt9O1B8fChQPXt9KSx3PUZpKHcpLGVmLmZvckVhY2goZnVuY3Rpb24ob2Upe3ZhciBnZT0ody5tYXRjaChncyhvZVswXSkpfHxbXSlbMV07c3dpdGNoKG9lWzJdKXtjYXNlInN0cmluZyI6Z2UmJihQW29lWzFdXT1FcihnZSkpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''Ym9vbCI6UFtvZVsxXV09InRydWUiPT09Z2U7YnJlYWs7Y2FzZSJyYXciOnZhciBfZT13Lm1hdGNoKG5ldyBSZWdFeHAoIjwiK29lWzBdKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrb2VbMF0rIj4iKSk7X2UmJl9lLmxlbmd0aD4wJiYoZWVbb2VbMV1dPV9lWzFdKX19KSxlZS5IZWFkaW5nUGFp''@;'; put 'put ''cnMmJmVlLlRpdGxlc09mUGFydHMmJncwKGVlLkhlYWRpbmdQYWlycyxlZS5UaXRsZXNPZlBhcnRzLFAsRCl9KGl0LFhlLFApKTt2YXIgZnQ9e307KCFQLmJvb2tTaGVldHN8fFAuYm9va1Byb3BzKSYmMCE9PWVlLmN1c3Rwcm9wcy5sZW5ndGgmJihpdD1ubih3LG11KGVlLmN1c3Rwcm9wc1sw''@;'; put 'put ''XSksITApKSYmKGZ0PWZ1bmN0aW9uIHdtKHcsUCl7dmFyIEQ9e30sZWU9IiIsb2U9dy5tYXRjaChheCk7aWYob2UpZm9yKHZhciBnZT0wO2dlIT1vZS5sZW5ndGg7KytnZSl7dmFyIF9lPW9lW2dlXSx2ZT1jbihfZSk7c3dpdGNoKHZlWzBdKXtjYXNlIjw/eG1sIjpjYXNlIjxQcm9wZXJ0aWVz''@;'; put 'put ''IjpicmVhaztjYXNlIjxwcm9wZXJ0eSI6ZWU9RXIodmUubmFtZSk7YnJlYWs7Y2FzZSI8L3Byb3BlcnR5PiI6ZWU9bnVsbDticmVhaztkZWZhdWx0OmlmKDA9PT1fZS5pbmRleE9mKCI8dnQ6Iikpe3ZhciBNZT1fZS5zcGxpdCgiPiIpLGplPU1lWzBdLnNsaWNlKDQpLFVlPU1lWzFdO3N3aXRj''@;'; put 'put ''aChqZSl7Y2FzZSJscHN0ciI6Y2FzZSJic3RyIjpjYXNlImxwd3N0ciI6Y2FzZSJjeSI6Y2FzZSJlcnJvciI6RFtlZV09RXIoVWUpO2JyZWFrO2Nhc2UiYm9vbCI6RFtlZV09X3IoVWUpO2JyZWFrO2Nhc2UiaTEiOmNhc2UiaTIiOmNhc2UiaTQiOmNhc2UiaTgiOmNhc2UiaW50IjpjYXNlInVp''@;'; put 'put ''bnQiOkRbZWVdPXBhcnNlSW50KFVlLDEwKTticmVhaztjYXNlInI0IjpjYXNlInI4IjpjYXNlImRlY2ltYWwiOkRbZWVdPXBhcnNlRmxvYXQoVWUpO2JyZWFrO2Nhc2UiZmlsZXRpbWUiOmNhc2UiZGF0ZSI6RFtlZV09UHQoVWUpO2JyZWFrO2RlZmF1bHQ6aWYoIi8iPT1qZS5zbGljZSgtMSkp''@;'; put 'put ''YnJlYWs7UC5XVEYmJnR5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKCJVbmV4cGVjdGVkIixfZSxqZSxNZSl9fWVsc2UgaWYoIjwvIiE9PV9lLnNsaWNlKDAsMikmJlAuV1RGKXRocm93IG5ldyBFcnJvcihfZSl9fXJldHVybiBEfShpdCxQKSk7dmFyIE10PXt9O2lmKChQLmJvb2tT''@;'; put 'put ''aGVldHN8fFAuYm9va1Byb3BzKSYmKFVlLlNoZWV0cz9nZT1VZS5TaGVldHMubWFwKGZ1bmN0aW9uKHhuKXtyZXR1cm4geG4ubmFtZX0pOlhlLldvcmtzaGVldHMmJlhlLlNoZWV0TmFtZXMubGVuZ3RoPjAmJihnZT1YZS5TaGVldE5hbWVzKSxQLmJvb2tQcm9wcyYmKE10LlByb3BzPVhlLE10''@;'; put 'put ''LkN1c3Rwcm9wcz1mdCksUC5ib29rU2hlZXRzJiZ0eXBlb2YgZ2U8InUiJiYoTXQuU2hlZXROYW1lcz1nZSksUC5ib29rU2hlZXRzP010LlNoZWV0TmFtZXM6UC5ib29rUHJvcHMpKXJldHVybiBNdDtnZT17fTt2YXIgdXQ9e307UC5ib29rRGVwcyYmZWUuY2FsY2NoYWluJiYodXQ9ZnVuY3Rp''@;'; put 'put ''b24gSVYodyxQLEQpe3JldHVybiIuYmluIj09PVAuc2xpY2UoLTQpP2Z1bmN0aW9uIHNBKHcsUCxEKXt2YXIgZWU9W107cmV0dXJuIHpvKHcsZnVuY3Rpb24oX2UsdmUsTWUpe2lmKDYzPT09TWUpZWUucHVzaChfZSk7ZWxzZSBpZighKCh2ZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MHx8KHZl''@;'; put 'put ''fHwiIikuaW5kZXhPZigiRW5kIik+MCkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK01lKyIgIit2ZSl9KSxlZX0odyk6ZnVuY3Rpb24gSTgodyl7dmFyIFA9W107aWYoIXcpcmV0dXJuIFA7dmFyIEQ9MTtyZXR1cm4ody5tYXRjaChxdCl8fFtdKS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKGVlKXt2YXIgb2U9Y24oZWUpO3N3aXRjaChvZVswXSl7Y2FzZSI8P3htbCI6Y2FzZSI8Y2FsY0NoYWluIjpjYXNlIjxjYWxjQ2hhaW4+IjpjYXNlIjwvY2FsY0NoYWluPiI6YnJlYWs7Y2FzZSI8YyI6ZGVsZXRlIG9lWzBdLG9lLmk/RD1vZS5pOm9lLmk9RCxQLnB1c2gob2UpfX0pLFB9''@;'; put 'put ''KHcpfShJdCh3LG11KGVlLmNhbGNjaGFpbikpLGVlLmNhbGNjaGFpbikpO3ZhciBrdCxUdCx3dD0wLEh0PXt9LFl0PVVlLlNoZWV0cztYZS5Xb3Jrc2hlZXRzPVl0Lmxlbmd0aCxYZS5TaGVldE5hbWVzPVtdO2Zvcih2YXIgZ249MDtnbiE9WXQubGVuZ3RoOysrZ24pWGUuU2hlZXROYW1lc1tn''@;'; put 'put ''bl09WXRbZ25dLm5hbWU7dmFyIHFuPW9lPyJiaW4iOiJ4bWwiLGZuPWVlLndvcmtib29rc1swXS5sYXN0SW5kZXhPZigiLyIpLEtuPShlZS53b3JrYm9va3NbMF0uc2xpY2UoMCxmbisxKSsiX3JlbHMvIitlZS53b3JrYm9va3NbMF0uc2xpY2UoZm4rMSkrIi5yZWxzIikucmVwbGFjZSgvXlwv''@;'; put 'put ''LywiIik7X24odyxLbil8fChLbj0ieGwvX3JlbHMvd29ya2Jvb2suIitxbisiLnJlbHMiKTt2YXIgem49UG8obm4odyxLbiwhMCksS24pLE9uPXpuLGVyPVtdO3puJiYoVWUmJlVlLkV4dGVybiYmVWUuRXh0ZXJuLmxlbmd0aCYmVWUuRXh0ZXJuLmZvckVhY2goZnVuY3Rpb24ocnIseG4pe3Zh''@;'; put 'put ''ciBDaT0oIi94bC8iK3puWyIhaWQiXVtycl0uVGFyZ2V0KS5yZXBsYWNlKC9bXC9dW1wvXS9nLCIvIiksenI9ZWUubGlua3MuaW5kZXhPZihDaSk7enI+LTEmJihlclt4bl09amVbenJdKX0pLFVlJiZkZWxldGUgVWUuRXh0ZXJuKSx6biYmKHpuPWZ1bmN0aW9uIGRPKHcsUCl7aWYoIXcpcmV0''@;'; put 'put ''dXJuIDA7dHJ5e3c9UC5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiBlZS5pZHx8KGVlLmlkPWVlLnN0clJlbElEKSxbZWUubmFtZSx3WyIhaWQiXVtlZS5pZF0uVGFyZ2V0LGZPKHdbIiFpZCJdW2VlLmlkXS5UeXBlKV19KX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gdyYmMCE9PXcubGVuZ3Ro''@;'; put 'put ''P3c6bnVsbH0oem4sVWUuU2hlZXRzKSk7dmFyIHRyPV9uKHcsInhsL3dvcmtzaGVldHMvc2hlZXQueG1sIik/MTowLFluPVtdLGpyPVtdO2U6Zm9yKHd0PTA7d3QhPVhlLldvcmtzaGVldHM7Kyt3dCl7dmFyIGxpPSJzaGVldCI7aWYoem4mJnpuW3d0XT8oa3Q9InhsLyIrem5bd3RdWzFdLnJl''@;'; put 'put ''cGxhY2UoL1tcL10/eGxcLy8sIiIpLF9uKHcsa3QpfHwoa3Q9em5bd3RdWzFdKSxfbih3LGt0KXx8KGt0PUtuLnJlcGxhY2UoL19yZWxzXC8uKiQvLCIiKSt6blt3dF1bMV0pLGxpPXpuW3d0XVsyXSk6a3Q9KGt0PSJ4bC93b3Jrc2hlZXRzL3NoZWV0Iisod3QrMS10cikrIi4iK3FuKS5yZXBs''@;'; put 'put ''YWNlKC9zaGVldDBcLi8sInNoZWV0LiIpLFR0PWt0LnJlcGxhY2UoL14oLiopKFwvKShbXlwvXSopJC8sIiQxL19yZWxzLyQzLnJlbHMiKSxZbi5wdXNoKGt0KSxQJiZudWxsIT1QLnNoZWV0cylzd2l0Y2godHlwZW9mIFAuc2hlZXRzKXtjYXNlIm51bWJlciI6aWYod3QhPVAuc2hlZXRzKWNv''@;'; put 'put ''bnRpbnVlIGU7YnJlYWs7Y2FzZSJzdHJpbmciOmlmKFhlLlNoZWV0TmFtZXNbd3RdLnRvTG93ZXJDYXNlKCkhPVAuc2hlZXRzLnRvTG93ZXJDYXNlKCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoUC5zaGVldHMpKXtmb3IodmFyIEVp''@;'; put 'put ''PTAsSWk9MDtJaSE9UC5zaGVldHMubGVuZ3RoOysrSWkpIm51bWJlciI9PXR5cGVvZiBQLnNoZWV0c1tJaV0mJlAuc2hlZXRzW0lpXT09d3QmJihFaT0xKSwic3RyaW5nIj09dHlwZW9mIFAuc2hlZXRzW0lpXSYmUC5zaGVldHNbSWldLnRvTG93ZXJDYXNlKCk9PVhlLlNoZWV0TmFtZXNbd3Rd''@;'; put 'put ''LnRvTG93ZXJDYXNlKCkmJihFaT0xKTtpZighRWkpY29udGludWUgZX19aWYoIVAuc2tpcFBhcnNlKXt2YXIgdGk9b0IodyxrdCxUdCxYZS5TaGVldE5hbWVzW3d0XSx3dCxIdCxnZSxsaSxQLFVlLHZlLE1lKTt0aSYmdGlbIiFMRFAiXSYmKGpyW3d0XT10aVsiIUxEUCJdLGRlbGV0ZSB0aVsi''@;'; put 'put ''IUxEUCJdKX19aWYodHlwZW9mIHBhcnNlX3NoZWV0X3Bpdm90PCJ1Iilmb3Iod3Q9MDt3dDxodi5sZW5ndGg7Kyt3dClwYXJzZV9zaGVldF9waXZvdC5hcHBseShudWxsLGh2W3d0XSk7aWYoTXQ9e0RpcmVjdG9yeTplZSxXb3JrYm9vazpVZSxQcm9wczpYZSxDdXN0cHJvcHM6ZnQsRGVwczp1''@;'; put 'put ''dCxTaGVldHM6Z2UsU2hlZXROYW1lczpYZS5TaGVldE5hbWVzLFN0cmluZ3M6WjgsU3R5bGVzOk1lLFRoZW1lczp2ZSxTU0Y6Uy5nZXRfdGFibGUoKX0sIVAuc2tpcFBhcnNlKXtpZihmdW5jdGlvbiBhQSh3KXshd3x8IXcuV29ya2Jvb2t8fCF3Lldvcmtib29rLk5hbWVzfHx3Lldvcmtib29r''@;'; put 'put ''Lk5hbWVzLmZvckVhY2goZnVuY3Rpb24oUCl7aWYoUC5OYW1lJiYiX3hsbm0uIj09UC5OYW1lLnNsaWNlKDAsNikmJigiX3hsbm0uUHJpbnRfQXJlYSI9PVAuTmFtZXx8Il94bG5tLlByaW50X1RpdGxlcyI9PVAuTmFtZSkpe3ZhciBEPXcuU2hlZXRzW3cuU2hlZXROYW1lc1tQLlNoZWV0XV07''@;'; put 'put ''aWYoRCl7RFsiIXByaW50Il18fChEWyIhcHJpbnQiXT17fSksRFsiIXByaW50Il0ucHJvcHN8fChEWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIGVlPURbIiFwcmludCJdLG9lPVAuUmVmO2lmKCJfeGxubS5QcmludF9BcmVhIj09UC5OYW1lKXtvZS5pbmRleE9mKCIhIik+LTEmJihvZT1vZS5z''@;'; put 'put ''bGljZShvZS5pbmRleE9mKCIhIikrMSkpO3ZhciBnZT1QaShvZT1vZS5yZXBsYWNlKC9bJF0vZywiIikpO2VlLmFyZWE9Z2V9ZWxzZSJfeGxubS5QcmludF9UaXRsZXMiPT1QLk5hbWUmJihlZS50aXRsZXM9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0sb2Uuc3BsaXQoIiwiKS5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKF9lKXt2YXIgTWU9S2EoX2Uuc2xpY2UoX2UuaW5kZXhPZigiISIpKzEpLnJlcGxhY2UoL1skXS9nLCIiKSk7TWUucy5jPi0xJiYoZWUudGl0bGVzLnMuYz1NZS5zLmMpLE1lLmUuYz4tMSYmKGVlLnRpdGxlcy5lLmM9TWUuZS5jKSxNZS5zLnI+LTEmJihlZS50aXRsZXMu''@;'; put 'put ''cy5yPU1lLnMuciksTWUuZS5yPi0xJiYoZWUudGl0bGVzLmUucj1NZS5lLnIpfSkpfX19KX0oTXQpLFAmJlAuYm9va0ZpbGVzJiYoTXQua2V5cz1ELE10LmZpbGVzPXcuZmlsZXMpLFAmJlAuYm9va1ZCQSYmKGVlLnZiYS5sZW5ndGg+MD9NdC52YmFyYXc9SXQodyxtdShlZS52YmFbMF0pLCEw''@;'; put 'put ''KTplZS5kZWZhdWx0cyYmZWUuZGVmYXVsdHMuYmluPT09Z2gmJihNdC52YmFyYXc9SXQodywieGwvdmJhUHJvamVjdC5iaW4iLCEwKSkpLE9uJiZPblsiIWlkIl0pe2Zvcih2YXIgZnI9W10sRG49MTtEbjw9MTAyNDsrK0RuKU9uWyIhaWQiXVsicklkIitEbl0mJk9uWyIhaWQiXVsicklkIitE''@;'; put 'put ''bl0uVHlwZSYmL2N1c3RvbVhtbCQvLnRlc3QoT25bIiFpZCJdWyJySWQiK0RuXS5UeXBlKSYmZnIucHVzaChzbihPblsiIWlkIl1bInJJZCIrRG5dLlRhcmdldCxlZS53b3JrYm9va3NbMF0pKTtmci5sZW5ndGg+MCYmKE10LkN1c3RvbVhNTD1bXSxmci5mb3JFYWNoKGZ1bmN0aW9uKHJyKXt2''@;'; put 'put ''YXIgeG49e2RhdGE6bm4odyxtdShycikpfSxtcj1qaShycik7dHJ5e3ZhciBDaT1Qbyhubih3LG11KG1yKSwhMCksbXIpO2lmKENpKWZvcih2YXIgenI9MTt6cjw9MTAyNDsrK3pyKUNpWyIhaWQiXVsicklkIit6cl0mJkNpWyIhaWQiXVsicklkIit6cl0uVHlwZSYmL2N1c3RvbVhtbFByb3Bz''@;'; put 'put ''JC8udGVzdChDaVsiIWlkIl1bInJJZCIrenJdLlR5cGUpJiYoeG4ucHJvcHM9bm4odyxtdShzbihDaVsiIWlkIl1bInJJZCIrenJdLlRhcmdldCxycikpKSl9Y2F0Y2h7fU10LkN1c3RvbVhNTC5wdXNoKHhuKX0pKX12YXIgdnI9RHQodywieGwvbW9kZWwvaXRlbS5kYXRhIiwhMCk7dnImJihN''@;'; put 'put ''dC5tb2RlbD12ciksZWUuY29ubiYmKE10LmNvbm49SXQodyxtdShlZS5jb25uKSwhMCkpLGVyLmxlbmd0aCYmKE10LkV4dGVybmFsV0I9ZXIpLFVlJiYoVWUuUFBJPWsyKX1yZXR1cm4gUC50ZW1wbGF0ZSYmKE10Ll93c3BhdGhzPVluLE10Ll9zdHlwYXRoPW11KGVlLnN0eWxlfHwiIiksTXQu''@;'; put 'put ''X3dicGF0aD1tdShlZS53b3JrYm9va3NbMF18fCJ4bC93b3JrYm9vay54bWwiKSxNdC5fdm1scGF0aHM9anIsTXQuX3dicmVsc3BhdGg9S24sTXQuX2N0PW5uKHcsIltDb250ZW50X1R5cGVzXS54bWwiKSxNdC5maWxlcz13LmZpbGVzLGFCKE10LHcsUCkpLE10fWZ1bmN0aW9uIGxCKHcsUCl7''@;'; put 'put ''dmFyIEQ9UHx8e307RC5wYXNzd29yZHx8KEQucGFzc3dvcmQ9IlZlbHZldFN3ZWF0c2hvcCIpO3ZhciBlZT0iV29ya2Jvb2siLG9lPU5lLmZpbmQodyxlZSk7dHJ5e2lmKCEob2U9TmUuZmluZCh3LGVlPSIvIURhdGFTcGFjZXMvVmVyc2lvbiIpKXx8IW9lLmNvbnRlbnQpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrZWUpO2lmKGZ1bmN0aW9uIHRIKHcpe3ZhciBQPXt9O1AuaWQ9dy5yZWFkX3NoaWZ0KDAsImxwcDQiKSxQLlI9bDEodyw0KSxQLlU9bDEodyw0KSxQLlc9bDEodyw0KX0ob2UuY29udGVudCksIShvZT1OZS5maW5kKHcsZWU9''@;'; put 'put ''Ii8hRGF0YVNwYWNlcy9EYXRhU3BhY2VNYXAiKSl8fCFvZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK2VlKTt2YXIgZ2U9ZnVuY3Rpb24gSW0odyl7dmFyIFA9W107dy5sKz00O2Zvcih2YXIgRD13LnJlYWRfc2hpZnQoNCk7RC0t''@;'; put 'put ''ID4wOylQLnB1c2goTngodykpO3JldHVybiBQfShvZS5jb250ZW50KTtpZigxIT09Z2UubGVuZ3RofHwxIT09Z2VbMF0uY29tcHMubGVuZ3RofHwwIT09Z2VbMF0uY29tcHNbMF0udHx8IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UiIT09Z2VbMF0ubmFtZXx8IkVuY3J5cHRlZFBhY2thZ2Ui''@;'; put 'put ''IT09Z2VbMF0uY29tcHNbMF0udil0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCAiK2VlKTtpZighKG9lPU5lLmZpbmQodyxlZT0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZUluZm8vU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZSIpKXx8IW9lLmNvbnRlbnQpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrZWUpO3ZhciBfZT1mdW5jdGlvbiB5cCh3KXt2YXIgUD1bXTt3LmwrPTQ7Zm9yKHZhciBEPXcucmVhZF9zaGlmdCg0KTtELS0gPjA7KVAucHVzaCh3LnJlYWRfc2hpZnQoMCwibHBwNCIpKTtyZXR1cm4gUH0o''@;'; put 'put ''b2UuY29udGVudCk7aWYoMSE9X2UubGVuZ3RofHwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIhPV9lWzBdKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkICIrZWUpO2lmKCEob2U9TmUuZmluZCh3LGVlPSIvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9T''@;'; put 'put ''dHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5IikpfHwhb2UuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitlZSk7IWZ1bmN0aW9uIF9wKHcpe3ZhciBQPWZ1bmN0aW9uIGJwKHcpe3ZhciBQPXt9O3JldHVybiB3LnJlYWRf''@;'; put 'put ''c2hpZnQoNCksdy5sKz00LFAuaWQ9dy5yZWFkX3NoaWZ0KDAsImxwcDQiKSxQLm5hbWU9dy5yZWFkX3NoaWZ0KDAsImxwcDQiKSxQLlI9bDEodyw0KSxQLlU9bDEodyw0KSxQLlc9bDEodyw0KSxQfSh3KTtpZihQLmVuYW1lPXcucmVhZF9zaGlmdCgwLCI4bHBwNCIpLFAuYmxrc3o9dy5yZWFk''@;'; put 'put ''X3NoaWZ0KDQpLFAuY21vZGU9dy5yZWFkX3NoaWZ0KDQpLDQhPXcucmVhZF9zaGlmdCg0KSl0aHJvdyBuZXcgRXJyb3IoIkJhZCAhUHJpbWFyeSByZWNvcmQiKTtyZXR1cm4gUH0ob2UuY29udGVudCl9Y2F0Y2h7fWlmKCEob2U9TmUuZmluZCh3LGVlPSIvRW5jcnlwdGlvbkluZm8iKSl8fCFv''@;'; put 'put ''ZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK2VlKTt2YXIgdmU9ZnVuY3Rpb24gd3Aodyl7dmFyIFA9bDEodyk7c3dpdGNoKFAuTWlub3Ipe2Nhc2UgMjpyZXR1cm5bUC5NaW5vcixQUSh3KV07Y2FzZSAzOnJldHVybltQLk1pbm9y''@;'; put 'put ''LG5IKCldO2Nhc2UgNDpyZXR1cm5bUC5NaW5vcixGUSh3KV19dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSB1bnJlY29nbml6ZWQgVmVyc2lvbjogIitQLk1pbm9yKX0ob2UuY29udGVudCk7aWYoIShvZT1OZS5maW5kKHcsZWU9Ii9FbmNyeXB0ZWRQYWNrYWdlIikp''@;'; put 'put ''fHwhb2UuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitlZSk7aWYoND09dmVbMF0pcmV0dXJuIGZ1bmN0aW9uIFllKHcsUCxELGVlKXt2YXIgb2U9TmUudXRpbHMucHJlcF9ibG9iO2lmKCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu''@;'; put 'put ''Y29tL29mZmljZS8yMDA2L2tleUVuY3J5cHRvci9wYXNzd29yZCIhPXcudXJpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgRUNNQS0zNzYgQWdpbGUgVVJJICIrdy51cmkpO3ZhciBnZT13LmVuY3NbMF0sX2U9Z2UuaGFzaEFsZ29yaXRobSx2ZT0iYWVzLTI1Ni1jYmMiLE1lPUJ1ZmZl''@;'; put 'put ''ci5mcm9tKGdlLnNhbHRWYWx1ZSwiYmFzZTY0IiksamU9QnVmZmVyLmZyb20ody5zYWx0VmFsdWUsImJhc2U2NCIpLFVlPStnZS5ibG9ja1NpemUsWGU9K2dlLmtleUJpdHM+PjMsaXQ9dHMoQnVmZmVyLmNvbmNhdChbTWUsQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxE''@;'; put 'put ''KSldKSxfZSksZnQ9QnVmZmVyLmFsbG9jKDQpO29lKGZ0LDApO2Zvcih2YXIgTXQ9MDtNdDxnZS5zcGluQ291bnQ7KytNdClmdC5sPTAsZnQud3JpdGVfc2hpZnQoNCxNdCksaXQ9dHMoQnVmZmVyLmNvbmNhdChbZnQsaXRdKSxfZSk7dmFyIHV0PWZ1bmN0aW9uKHRyLFluLGpyLGxpKXt2YXIg''@;'; put 'put ''RWk9dHMoQnVmZmVyLmNvbmNhdChbdHIsQnVmZmVyLmZyb20oWzIwLDExMCwxMSwyMzEsMTcxLDE3MiwyMDgsMjE0XSldKSxsaSksSWk9RWkubGVuZ3RoPj1qcj9FaS5zbGljZSgwLGpyKTpCdWZmZXIuYWxsb2MoanIpO2lmKEVpLmxlbmd0aDxqcil7Zm9yKHZhciB0aT0wO3RpPEVpLmxlbmd0''@;'; put 'put ''aDsrK3RpKUlpW3RpXT1FaVt0aV07Zm9yKDt0aTxqcjsrK3RpKUlpW3RpXT01NH1yZXR1cm4gSWl9KGl0LDAsWGUsX2UpO3N3aXRjaChnZS5jaXBoZXJBbGdvcml0aG0pe2Nhc2UiQUVTIjppZigiQ2hhaW5pbmdNb2RlQ0JDIiE9Z2UuY2lwaGVyQ2hhaW5pbmcpdGhyb3cgbmV3IEVycm9yKCJV''@;'; put 'put ''bnN1cHBvcnRlZCBjaXBoZXIgY2hhaW5pbmcgIitnZS5jaXBoZXJDaGFpbmluZyk7dmU9ImFlcy0iK2dlLmtleUJpdHMrIi1jYmMiO2JyZWFrO2Nhc2UiUkMyIjp2ZT0icmMyIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2lwaGVyIGFsZ28gIitnZS5jaXBo''@;'; put 'put ''ZXJBbGdvcml0aG0pfU1lPWZ1bmN0aW9uKGVyKXtmb3IodmFyIHRyPUJ1ZmZlci5hbGxvYyhVZSksWW49MDtZbjxVZTsrK1luKXRyW1luXT1Zbjxlci5sZW5ndGg/ZXJbWW5dOjU0O3JldHVybiB0cn0oTWUpO3ZhciB3dD1CdWZmZXIuZnJvbShnZS5lbmNyeXB0ZWRLZXlWYWx1ZSwiYmFzZTY0''@;'; put 'put ''IiksSHQ9d2YodXQsTWUsdmUpLnVwZGF0ZSh3dCksa3Q9d2YodHMoQnVmZmVyLmNvbmNhdChbaXQsQnVmZmVyLmZyb20oWzIxNSwxNzAsMTUsMTA5LDQ4LDk3LDUyLDc4XSldKSxfZSkuc2xpY2UoMCxYZSksTWUsdmUpLnVwZGF0ZShCdWZmZXIuZnJvbShnZS5lbmNyeXB0ZWRWZXJpZmllckhh''@;'; put 'put ''c2hWYWx1ZSwiYmFzZTY0IikpLFR0PXRzKHdmKHRzKEJ1ZmZlci5jb25jYXQoW2l0LEJ1ZmZlci5mcm9tKFsyNTQsMTY3LDIxMCwxMTgsNTksNzUsMTU4LDEyMV0pXSksX2UpLnNsaWNlKDAsWGUpLE1lLHZlKS51cGRhdGUoQnVmZmVyLmZyb20oZ2UuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5w''@;'; put 'put ''dXQsImJhc2U2NCIpKSxfZSksWXQ9K2dlLmhhc2hTaXplfHxNYXRoLm1pbihrdC5sZW5ndGgsVHQubGVuZ3RoKTtpZigwIT1rdC5zbGljZSgwLFl0KS5jb21wYXJlKFR0LnNsaWNlKDAsWXQpKSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO29lKFAsMCk7dmFyIGduPVAu''@;'; put 'put ''cmVhZF9zaGlmdCg0KTtQLmwrPTQ7dmFyIHFuPVtdLGZuPUJ1ZmZlci5jb25jYXQoW2plLEJ1ZmZlci5hbGxvYyg0KV0pO2ZvcihvZShmbiksTXQ9MDtQLmw8UC5sZW5ndGg7KWZuLmw9TWUubGVuZ3RoLGZuLndyaXRlX3NoaWZ0KDQsTXQpLHFuLnB1c2god2YoSHQsdHMoQnVmZmVyLmZyb20o''@;'; put 'put ''Zm4pLF9lKS5zbGljZSgwLDE2KSx2ZSkudXBkYXRlKEJ1ZmZlci5mcm9tKFAuc2xpY2UoUC5sLFAubCs0MDk2KSkpKSxQLmwrPTQwOTYsKytNdDt2YXIgem49QnVmZmVyLmNvbmNhdChxbikuc2xpY2UoMCxnbiksT249SnQoZWUpO3JldHVybiBPbi50eXBlPSJidWZmZXIiLFYyKHpuLE9uKX0o''@;'; put 'put ''dmVbMV0sb2UuY29udGVudCxELnBhc3N3b3JkfHwiIixEKTtpZigyPT12ZVswXSlyZXR1cm4gZnVuY3Rpb24gR3codyxQLEQsZWUpe3ZhciBvZT1OZS51dGlscy5wcmVwX2Jsb2I7aWYoIlN0ZCIhPT13LnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlwdGlv''@;'; put 'put ''biIpO3ZhciBnZT13LnYuU2FsdCxfZT13LnYuVmVyaWZpZXIsdmU9dy52LlZlcmlmaWVySGFzaDtpZigzNiE9dy5oLkZsYWdzKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgU3RhbmRhcmQgRW5jcnlwdGlvbiBiYWQgRmxhZ3MiKTt2YXIgTWU9MCxqZT0iIjtzd2l0Y2gody5oLkFsZ0lEKXtj''@;'; put 'put ''YXNlIDI2MTI2Ok1lPTEyOCxqZT0iYWVzLTEyOC1lY2IiO2JyZWFrO2Nhc2UgMjYxMjc6TWU9MTk2LGplPSJhZXMtMTkyLWVjYiI7YnJlYWs7Y2FzZSAyNjEyODpNZT0yNTYsamU9ImFlcy0yNTYtZWNiIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgQmFkIFN0YW5k''@;'; put 'put ''YXJkIEVuY3J5cHRpb24iKX1pZigzMjc3MiE9dy5oLkFsZ0lESGFzaCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEJhZCBTdGFuZGFyZCBFbmNyeXB0aW9uIik7aWYody5oLktleVNpemUhPU1lKXRocm93IG5ldyBFcnJvcigiQWxnSUQvS2V5U2l6ZSBtaXNtYXRjaCIpO2lmKDI0IT13Lmgu''@;'; put 'put ''UHJvdmlkZXJUeXBlKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgdW5zdXBwb3J0ZWQgUHJvdmlkZXJUeXBlICIrdy5oLlByb3ZpZGVyVHlwZSk7aWYoIk1pY3Jvc29mdCBFbmhhbmNlZCBSU0EgYW5kIEFFUyBDcnlwdG9ncmFwaGljIFByb3ZpZGVyIiE9PXcuaC5DU1BOYW1lLnNsaWNlKDAs''@;'; put 'put ''NTMpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgQ3J5cHRvIFByb3ZpZGVyICIrdy5oLkNTUE5hbWUpO3ZhciBYZT0iU0hBLTEiLGl0PU1lPj4zLGZ0PXRzKEJ1ZmZlci5jb25jYXQoW2dlLGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsRCldKSxYZSksTXQ9QnVmZmVyLmFsbG9jKDQp''@;'; put 'put ''O29lKE10LDApO2Zvcih2YXIgdXQ9MDt1dDw1ZTQ7Kyt1dClNdC5sPTAsTXQud3JpdGVfc2hpZnQoNCx1dCksZnQ9dHMoQnVmZmVyLmNvbmNhdChbTXQsZnRdKSxYZSk7TXQubD0wLE10LndyaXRlX3NoaWZ0KDQsMCk7dmFyIHFuLGZuLEtuLHpuLE9uLEh0PSh6bj0oS249ZnVuY3Rpb24odHIs''@;'; put 'put ''WW4sanIpe2Zvcih2YXIgbGk9QnVmZmVyLmFsbG9jKDY0KSxFaT0wO0VpPGxpLmxlbmd0aDsrK0VpKWxpW0VpXT10cjtmb3IoRWk9MDtFaTxZbi5sZW5ndGg7KytFaSlsaVtFaV1ePVluW0VpXTtyZXR1cm4gdHMobGksanIpfSkoNTQscW49dHMoQnVmZmVyLmNvbmNhdChbZnQsTXRdKSxYZSks''@;'; put 'put ''Zm49WGUpLE9uPUtuKDkyLHFuLGZuKSxCdWZmZXIuY29uY2F0KFt6bixPbl0pLnNsaWNlKDAsaXQpKTtpZih3ZihIdCxCdWZmZXIuYWxsb2MoMCksamUpLnVwZGF0ZSh2ZSkuc2xpY2UoMCwyMCkuY29tcGFyZSh0cyh3ZihIdCxCdWZmZXIuYWxsb2MoMCksamUpLnVwZGF0ZShfZSksWGUpKSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBQYXNzd29yZCIpO29lKFAsMCk7dmFyIGt0PVAucmVhZF9zaGlmdCg0KTtQLmwrPTQ7dmFyIFR0PVtdO2Zvcih1dD0wO1AubDxQLmxlbmd0aDspVHQucHVzaCh3ZihIdCxCdWZmZXIuYWxsb2MoMCksamUpLnVwZGF0ZShQLnNsaWNlKFAubCxQLmwr''@;'; put 'put ''NDA5NikpKSxQLmwrPTQwOTYsKyt1dDtyZXR1cm4gVjIoQnVmZmVyLmNvbmNhdChUdCkuc2xpY2UoMCxrdCksZWUpfSh2ZVsxXSxvZS5jb250ZW50LEQucGFzc3dvcmR8fCIiLEQpO3Rocm93IG5ldyBFcnJvcigiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQiKX12YXIgc0I9ZnVuY3Rpb24o''@;'; put 'put ''KXt9O2Z1bmN0aW9uIHVCKHcsUCl7aWYoUC50ZW1wbGF0ZSlyZXR1cm4gc0IodyxQKTtpZigib2RzIj09UC5ib29rVHlwZSlyZXR1cm4gVDAodyxQKTtwOChQJiZQLlBQSXx8OTYpLHcmJiF3LlNTRiYmKHcuU1NGPVMuZ2V0X3RhYmxlKCkpLHcmJncuU1NGJiYoUShTKSxTLmxvYWRfdGFibGUo''@;'; put 'put ''dy5TU0YpLFAucmV2c3NmPUllKHcuU1NGKSxQLnJldnNzZlt3LlNTRls2NTUzNV1dPTAsUC5zc2Y9dy5TU0YpLHcuU3R5bGVzPXtGb250czpQLkZvbnRzPVt7c3o6MTIsY29sb3I6e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOiJDYWxpYnJpIixmYW1pbHk6MixzY2hlbWU6Im1pbm9yIn1d''@;'; put 'put ''LEZpbGxzOlAuRmlsbHM9W3twYXR0ZXJuVHlwZToibm9uZSJ9LHtwYXR0ZXJuVHlwZToiZ3JheTEyNSJ9XSxCb3JkZXJzOlAuQm9yZGVycz1be31dLERYRjpQLkRYRj13LlN0eWxlcyYmdy5TdHlsZXMuRFhGfHxbXSxUYWJsZTpQLlRhYmxlPXcuU3R5bGVzJiZ3LlN0eWxlcy5UYWJsZXx8W119''@;'; put 'put ''LFAub3ZlcnJpZGVNRFc/X3M9UC5vdmVycmlkZU1EVzpoZihQLkZvbnRzWzBdKSxQLnJlbHM9e30sUC53YnJlbHM9e30sUC5TdHJpbmdzPVtdLFAuU3RyaW5ncy5Db3VudD0wLFAuU3RyaW5ncy5VbmlxdWU9MCxjMT9QLnJldlN0cmluZ3M9bmV3IE1hcDooUC5yZXZTdHJpbmdzPXt9LFAucmV2''@;'; put 'put ''U3RyaW5ncy5mb289W10sZGVsZXRlIFAucmV2U3RyaW5ncy5mb28pO3ZhciBEPSJ4bHNiIj09UC5ib29rVHlwZT8iYmluIjoieG1sIixlZT1RUS5pbmRleE9mKFAuYm9va1R5cGUpPi0xLG9lPXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxy''@;'; put 'put ''ZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFpbnM6W10sdmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpbXSxwaXZvdGNhY2hlczpbXSxwaXZvdHJlY29yZHM6''@;'; put 'put ''W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpbXSxjdXN0b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5zOiIifTskdyhQPVB8fHt9KTt2YXIgZ2U9TW4oKSxf''@;'; put 'put ''ZT0iIix2ZT0wO2lmKFAuY2VsbFhmcz1bXSxQLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSx3YyhQLmNlbGxYZnMsUC5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2VuZXJhbDowfX0pLHcuUHJvcHN8fCh3LlByb3BzPXt9KSxHdChnZSxfZT0iZG9jUHJvcHMvY29yZS54bWwiLGZ1''@;'; put 'put ''bmN0aW9uIHYyKHcsUCl7dmFyIEQ9UHx8e30sZWU9W0JuLHJoXSxvZT17fTtpZighdyYmIUQuUHJvcHMpcmV0dXJuIGVlLmpvaW4oIiIpO3cmJihudWxsIT13LkNyZWF0ZWREYXRlJiZ5YygiZGN0ZXJtczpjcmVhdGVkIiwic3RyaW5nIj09dHlwZW9mIHcuQ3JlYXRlZERhdGU/dy5DcmVhdGVk''@;'; put 'put ''RGF0ZTpyMih3LkNyZWF0ZWREYXRlLEQuV1RGKSx7InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxlZSxvZSksbnVsbCE9dy5Nb2RpZmllZERhdGUmJnljKCJkY3Rlcm1zOm1vZGlmaWVkIiwic3RyaW5nIj09dHlwZW9mIHcuTW9kaWZpZWREYXRlP3cuTW9kaWZpZWREYXRlOnIyKHcuTW9k''@;'; put 'put ''aWZpZWREYXRlLEQuV1RGKSx7InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxlZSxvZSkpO2Zvcih2YXIgZ2U9MDtnZSE9VXMubGVuZ3RoOysrZ2Upe3ZhciBfZT1Vc1tnZV0sdmU9RC5Qcm9wcyYmbnVsbCE9RC5Qcm9wc1tfZVsxXV0/RC5Qcm9wc1tfZVsxXV06dz93W19lWzFdXTpudWxs''@;'; put 'put ''OyEwPT09dmU/dmU9IjEiOiExPT09dmU/dmU9IjAiOiJudW1iZXIiPT10eXBlb2YgdmUmJih2ZT1TdHJpbmcodmUpKSxudWxsIT12ZSYmeWMoX2VbMF0sdmUsbnVsbCxlZSxvZSl9cmV0dXJuIGVlLmxlbmd0aD4yJiYoZWVbZWUubGVuZ3RoXT0iPC9jcDpjb3JlUHJvcGVydGllcz4iLGVlWzFd''@;'; put 'put ''PWVlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxlZS5qb2luKCIiKX0ody5Qcm9wcyxQKSksb2UuY29yZXByb3BzLnB1c2goX2UpLEdvKFAucmVscywyLF9lLE5pLkNPUkVfUFJPUFMpLF9lPSJkb2NQcm9wcy9hcHAueG1sIiwhdy5Qcm9wc3x8IXcuUHJvcHMuU2hlZXROYW1lcylpZih3Lldvcmti''@;'; put 'put ''b29rJiZ3Lldvcmtib29rLlNoZWV0cyl7Zm9yKHZhciBNZT1bXSxqZT0wO2plPHcuU2hlZXROYW1lcy5sZW5ndGg7KytqZSkyIT0ody5Xb3JrYm9vay5TaGVldHNbamVdfHx7fSkuSGlkZGVuJiZNZS5wdXNoKHcuU2hlZXROYW1lc1tqZV0pO3cuUHJvcHMuU2hlZXROYW1lcz1NZX1lbHNlIHcu''@;'; put 'put ''UHJvcHMuU2hlZXROYW1lcz13LlNoZWV0TmFtZXM7dy5Qcm9wcy5Xb3Jrc2hlZXRzPXcuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGgsR3QoZ2UsX2UsZnVuY3Rpb24geWEodyl7dmFyIFA9W10sRD1NcjtyZXR1cm4gd3x8KHc9e30pLHcuQXBwbGljYXRpb249IlNoZWV0SlMiLFBbUC5sZW5ndGhd''@;'; put 'put ''PUJuLFBbUC5sZW5ndGhdPWxwLGVmLmZvckVhY2goZnVuY3Rpb24oZWUpe2lmKHZvaWQgMCE9PXdbZWVbMV1dKXt2YXIgb2U7c3dpdGNoKGVlWzJdKXtjYXNlInN0cmluZyI6b2U9QnIoU3RyaW5nKHdbZWVbMV1dKSk7YnJlYWs7Y2FzZSJib29sIjpvZT13W2VlWzFdXT8idHJ1ZSI6ImZhbHNl''@;'; put 'put ''In12b2lkIDAhPT1vZSYmKFBbUC5sZW5ndGhdPUQoZWVbMF0sb2UpKX19KSxQW1AubGVuZ3RoXT1EKCJIZWFkaW5nUGFpcnMiLEQoInZ0OnZlY3RvciIsRCgidnQ6dmFyaWFudCIsIjx2dDpscHN0cj5Xb3Jrc2hlZXRzPC92dDpscHN0cj4iKStEKCJ2dDp2YXJpYW50IixEKCJ2dDppNCIsU3Ry''@;'; put 'put ''aW5nKHcuV29ya3NoZWV0cykpKSx7c2l6ZToyLGJhc2VUeXBlOiJ2YXJpYW50In0pKSxQW1AubGVuZ3RoXT1EKCJUaXRsZXNPZlBhcnRzIixEKCJ2dDp2ZWN0b3IiLHcuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiI8dnQ6bHBzdHI+IitCcihlZSkrIjwvdnQ6bHBzdHI+In0p''@;'; put 'put ''LmpvaW4oIiIpLHtzaXplOncuV29ya3NoZWV0cyxiYXNlVHlwZToibHBzdHIifSkpLFAubGVuZ3RoPjImJihQW1AubGVuZ3RoXT0iPC9Qcm9wZXJ0aWVzPiIsUFsxXT1QWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxQLmpvaW4oIiIpfSh3LlByb3BzKSksb2UuZXh0cHJvcHMucHVzaChfZSksR28o''@;'; put 'put ''UC5yZWxzLDMsX2UsTmkuRVhUX1BST1BTKSx3LkN1c3Rwcm9wcyE9PXcuUHJvcHMmJm10KHcuQ3VzdHByb3BzfHx7fSkubGVuZ3RoPjAmJihHdChnZSxfZT0iZG9jUHJvcHMvY3VzdG9tLnhtbCIsZnVuY3Rpb24gQzAodyl7dmFyIFA9W0JuLHo2XTtpZighdylyZXR1cm4gUC5qb2luKCIiKTt2''@;'; put 'put ''YXIgRD0xO3JldHVybiBtdCh3KS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXsrK0QsUFtQLmxlbmd0aF09TXIoInByb3BlcnR5IixmdW5jdGlvbiBubCh3LFApe3N3aXRjaCh0eXBlb2Ygdyl7Y2FzZSJzdHJpbmciOnZhciBEPU1yKCJ2dDpscHdzdHIiLEJyKHcpKTtyZXR1cm4gUCYmKEQ9RC5yZXBs''@;'; put 'put ''YWNlKC8mcXVvdDsvZywiX3gwMDIyXyIpKSxEO2Nhc2UibnVtYmVyIjpyZXR1cm4gTXIoKDB8dyk9PXc/InZ0Omk0IjoidnQ6cjgiLEJyKFN0cmluZyh3KSkpO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIE1yKCJ2dDpib29sIix3PyJ0cnVlIjoiZmFsc2UiKX1pZih3IGluc3RhbmNlb2YgRGF0ZSly''@;'; put 'put ''ZXR1cm4gTXIoInZ0OmZpbGV0aW1lIixyMih3KSk7dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gc2VyaWFsaXplICIrdyl9KHdbb2VdLCEwKSx7Zm10aWQ6IntENUNERDUwNS0yRTlDLTEwMUItOTM5Ny0wODAwMkIyQ0Y5QUV9IixwaWQ6RCxuYW1lOkJyKG9lKX0pfSksUC5sZW5ndGg+MiYm''@;'; put 'put ''KFBbUC5sZW5ndGhdPSI8L1Byb3BlcnRpZXM+IixQWzFdPVBbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFAuam9pbigiIil9KHcuQ3VzdHByb3BzKSksb2UuY3VzdHByb3BzLnB1c2goX2UpLEdvKFAucmVscyw0LF9lLE5pLkNVU1RfUFJPUFMpKTt2YXIgVWU9W10sWGU9W107ZnVuY3Rpb24gaXQo''@;'; put 'put ''Z24scW4pe1hlLnB1c2goW3ZlLTEscW4sZ25dKX1mdW5jdGlvbiBmdChnbil7VWUucHVzaChbdmUtMSxnbl0pLEdvKE10LC0xLCIuLi9waXZvdFRhYmxlcy9waXZvdFRhYmxlIitVZS5sZW5ndGgrIi4iK0QsTmkuUElWT1QpfWZvcih2ZT0xO3ZlPD13LlNoZWV0TmFtZXMubGVuZ3RoOysrdmUp''@;'; put 'put ''e3ZhciBNdD17IiFpZCI6e319LHV0PXcuU2hlZXRzW3cuU2hlZXROYW1lc1t2ZS0xXV0sd3Q9KHV0fHx7fSlbIiF0eXBlIl18fCJzaGVldCI7c3dpdGNoKHd0KXtjYXNlImNoYXJ0IjppZih0eXBlb2Ygd3JpdGVfZHJhd2luZ188InUiKXtHdChnZSxfZT0ieGwvY2hhcnRzaGVldHMvc2hlZXQi''@;'; put 'put ''K3ZlKyIuIitELEJUKHZlLTEsX2UsUCx3LE10KSksb2UuY2hhcnRzLnB1c2goX2UpLEdvKFAud2JyZWxzLC0xLCJjaGFydHNoZWV0cy9zaGVldCIrdmUrIi4iK0QsTmkuQ1MpO2JyZWFrfWRlZmF1bHQ6R3QoZ2UsX2U9InhsL3dvcmtzaGVldHMvc2hlZXQiK3ZlKyIuIitELExWKHZlLTEsX2Us''@;'; put 'put ''UCx3LE10KSksb2Uuc2hlZXRzLnB1c2goX2UpLEdvKFAud2JyZWxzLC0xLCJ3b3Jrc2hlZXRzL3NoZWV0Iit2ZSsiLiIrRCxOaS5XU1swXSl9aWYodXQpeyJjaGFydCI9PXd0JiYhdXRbIiFwb3MiXSYmKHV0WyIhcG9zIl09e3g6MCx5OjAsdzo5MDAsaDo2MDB9KTt2YXIgSHQ9dXRbIiFjb21t''@;'; put 'put ''ZW50cyJdLGt0PSExO2lmKEh0JiZIdC5sZW5ndGg+MCl7dmFyIFR0PSJ4bC9jb21tZW50cyIrdmUrIi4iK0Q7R3QoZ2UsVHQsdHQoSHQsVHQsUCkpLG9lLmNvbW1lbnRzLnB1c2goVHQpLEdvKE10LC0xLCIuLi9jb21tZW50cyIrdmUrIi4iK0QsTmkuQ01OVCksa3Q9ITB9KHV0WyIhY29udHJv''@;'; put 'put ''bHMiXXx8W10pLmxlbmd0aD4wJiYoa3Q9ITApLHV0WyIhbGVnYWN5Il0mJmt0JiZHdChnZSwieGwvZHJhd2luZ3Mvdm1sRHJhd2luZyIrdmUrIi52bWwiLFZIKHZlLHV0WyIhY29tbWVudHMiXSx1dFsiIWNvbnRyb2xzIl0sdXQpKSx1dFsiIWxlZ2FjeUhGIl0mJkw4KGdlLDAsdmUsdXRbIiFw''@;'; put 'put ''cmludCJdLmltYWdlcyk7dmFyIFl0PSgiY2hhcnQiPT11dFsiIXR5cGUiXT9bdXRdOnV0WyIhY2hhcnRzIl18fFtdKS5jb25jYXQoKHV0WyIhaW1hZ2VzIl18fFtdKS5tYXAoZnVuY3Rpb24oZ24pe3JldHVybiBnblsiIXR5cGUiXXx8KGduWyIhdHlwZSJdPSJpbWFnZSIpLGdufSkpLmNvbmNh''@;'; put 'put ''dCgodXRbIiFzaGFwZXMiXXx8W10pLm1hcChmdW5jdGlvbihnbil7cmV0dXJuIGduWyIhdHlwZSJdfHwoZ25bIiF0eXBlIl09InNoYXBlIiksZ259KSk7WXQmJll0Lmxlbmd0aCYmKHR5cGVvZiB3cml0ZV9kcmF3aW5nXzwidSI/d3JpdGVfZHJhd2luZ18oZ2Usb2UsdmUsdXQsWXQpOihHdChn''@;'; put 'put ''ZSwieGwvZHJhd2luZ3MvZHJhd2luZyIrdmUrIi54bWwiLGZBKCkpLG9lLmRyYXdpbmdzLnB1c2goInhsL2RyYXdpbmdzL2RyYXdpbmciK3ZlKyIueG1sIikpKSxkZWxldGUgdXRbIiFjb21tZW50cyJdLGRlbGV0ZSB1dFsiIWxlZ2FjeSJdLGRlbGV0ZSB1dFsiIWxlZ2FjeUhGIl19dXQmJnV0''@;'; put 'put ''WyIhcGl2b3RzIl0mJiJ4bWwiPT1EJiZ0eXBlb2Ygd3JpdGVfcGl2b3RfeG1sPCJ1IiYmdXRbIiFwaXZvdHMiXS5mb3JFYWNoKGZ0KSxNdFsiIWlkIl0ucklkMSYmR3QoZ2UsamkoX2UpLFhsKE10KSksdXQmJnV0WyIhdGFibGVzIl0mJiJ4bWwiPT1EJiZ1dFsiIXRhYmxlcyJdLmZvckVhY2go''@;'; put 'put ''aXQpfXJldHVybiBudWxsIT1QLlN0cmluZ3MmJlAuU3RyaW5ncy5sZW5ndGg+MCYmKEd0KGdlLF9lPSJ4bC9zaGFyZWRTdHJpbmdzLiIrRCxGVihQLlN0cmluZ3MsX2UsUCkpLG9lLnN0cnMucHVzaChfZSksR28oUC53YnJlbHMsLTEsInNoYXJlZFN0cmluZ3MuIitELE5pLlNTVCkpLCJ4bWwi''@;'; put 'put ''PT1EJiZ0eXBlb2Ygd3JpdGVfcGl2b3RfeG1sPCJ1IiYmd3JpdGVfcGl2b3RfeG1sKFVlLHcsZ2Usb2UsUCksInhtbCI9PUQmJmZ1bmN0aW9uIFdtKHcsUCxELGVlKXt3LmZvckVhY2goZnVuY3Rpb24ob2UsZ2Upe3ZhciBfZT1QLlNoZWV0c1tQLlNoZWV0TmFtZXNbb2VbMF1dXSx2ZT0ieGwv''@;'; put 'put ''dGFibGVzL3RhYmxlIisob2VbMF0rMSkrIl8iK29lWzFdKyIueG1sIjtlZS50YWJsZXMucHVzaCh2ZSk7dmFyIE1lPW9lWzJdLnJlZnx8X2VbIiFyZWYiXTsic3RyaW5nIiE9dHlwZW9mIE1lJiYoTWU9Vm8oTWUpKTt2YXIgamU9UGkoTWUpLFVlPW9lWzJdLm5hbWV8fCJzanN0YmxfIitvZVsw''@;'; put 'put ''XSsiXyIrb2VbMV0sWGU9W0JuXSxpdD0haG4ob2VbMl0uaGVhZGVyKSxmdD1pdCYmIWhuKG9lWzJdLmZpbHRlcik7WGUucHVzaCgnPHRhYmxlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIGlkPSInKyhnZSsxKSsnIiBu''@;'; put 'put ''YW1lPSInK0JyKFVlKSsnIiBkaXNwbGF5TmFtZT0iJytCcihVZSkrJyIgcmVmPSInK01lKyciICcrKG51bGwhPW9lWzJdLmhlYWRlciYmMSE9b2VbMl0uaGVhZGVyPydoZWFkZXJSb3dDb3VudD0iJysob2VbMl0uaGVhZGVyfHwwKSsnIiAnOiIiKSsiPiIpLGZ0JiZYZS5wdXNoKCc8YXV0b0Zp''@;'; put 'put ''bHRlciByZWY9IicrTWUrJyIvPicpLFhlLnB1c2goJzx0YWJsZUNvbHVtbnMgY291bnQ9IicrKGplLmUuYy1qZS5zLmMrMSkrJyI+Jyk7Zm9yKHZhciBNdD1bXSx1dD1qZS5zLmM7dXQ8PWplLmUuYzsrK3V0KWlmKGl0KXtmb3IodmFyIHd0PXBpKHtyOmplLnMucixjOnV0fSksSHQ9X2Vbd3Rd''@;'; put 'put ''LGt0PW9lWzJdLmNvbHMmJm9lWzJdLmNvbHNbdXQtamUucy5jXSYmb2VbMl0uY29sc1t1dC1qZS5zLmNdLm5hbWV8fEh0JiYoSHQud3x8SHQudil8fCJDb2x1bW4gIisodXQtamUucy5jKzEpLFR0PWt0LFl0PTE7TXQuaW5kZXhPZihUdCk+LTEmJisrWXQ8MTYzODQ7KVR0PWt0K1l0O2lmKFR0''@;'; put 'put ''IT1rdCl0aHJvdyJ0YWJsZSBjb2x1bW5zICIrdXQrIiBhbmQgIisoTXQuaW5kZXhPZihrdCkramUucy5jKSsiIGhhdmUgdGhlIHNhbWUgaGVhZGVyICciK2t0KyInOyB0cnkgc2V0dGluZyBjZWxsICIrd3QrIiB0byAnIitUdCsiJyI7TXQucHVzaChUdCksWGUucHVzaCgnPHRhYmxlQ29sdW1u''@;'; put 'put ''IGlkPSInKyhvZVsyXS5jb2xzJiZvZVsyXS5jb2xzW3V0LWplLnMuY10mJm51bGwhPW9lWzJdLmNvbHNbdXQtamUucy5jXS5pZD9vZVsyXS5jb2xzW3V0LWplLnMuY10uaWQ6dXQtamUucy5jKzEpKyciIG5hbWU9IicrQnIoVHQpKyciLz4nKX1lbHNlIFhlLnB1c2gob2VbMl0uY29scyYmb2Vb''@;'; put 'put ''Ml0uY29sc1t1dC1qZS5zLmNdPyc8dGFibGVDb2x1bW4gaWQ9Iicrb2VbMl0uY29sc1t1dC1qZS5zLmNdLmlkKyciIG5hbWU9Iicrb2VbMl0uY29sc1t1dC1qZS5zLmNdLm5hbWUrJyIvPic6Jzx0YWJsZUNvbHVtbiBpZD0iJysodXQtamUucy5jKzEpKyciIHVuaXF1ZU5hbWU9IicrKHV0LWpl''@;'; put 'put ''LnMuYysxKSsnIiBuYW1lPSInKyh1dC1qZS5zLmMrMSkrJyIvPicpO1hlLnB1c2goIjwvdGFibGVDb2x1bW5zPiIpO3ZhciBxbj0rKCExIT09KG9lWzJdLnN0eWxlfHx7fSkucm93c3RyaXBlKSxmbj0rISEob2VbMl0uc3R5bGV8fHt9KS5jb2xzdHJpcGUsS249KyEhKG9lWzJdLnN0eWxlfHx7''@;'; put 'put ''fSkuY29sZmlyc3Qsem49KyEhKG9lWzJdLnN0eWxlfHx7fSkuY29sbGFzdCxPbj0ob2VbMl0uc3R5bGV8fHt9KS5uYW1lfHwiTWVkaXVtOSI7T249T24ubWF0Y2goL14oTGlnaHR8TWVkaXVtfERhcmspXGQrJC8pPyJUYWJsZVN0eWxlIitPbjpPbixYZS5wdXNoKCc8dGFibGVTdHlsZUluZm8g''@;'; put 'put ''bmFtZT0iJytPbisnIiBzaG93Rmlyc3RDb2x1bW49IicrS24rJyIgc2hvd0xhc3RDb2x1bW49Iicrem4rJyIgc2hvd1Jvd1N0cmlwZXM9IicrcW4rJyIgc2hvd0NvbHVtblN0cmlwZXM9IicrZm4rJyIvPicpLFhlLnB1c2goIjwvdGFibGU+IiksR3QoRCx2ZSxYZS5qb2luKCIiKSl9KX0oWGUs''@;'; put 'put ''dyxnZSxvZSksInhtbCI9PUQmJih3LkV4dGVybmFsV0J8fFtdKS5sZW5ndGgmJmZ1bmN0aW9uIEFfKHcsUCxEKXtELmxpbmtzfHwoRC5saW5rcz1bXSksdy5FeHRlcm5hbFdCJiZ3LkV4dGVybmFsV0IuZm9yRWFjaChmdW5jdGlvbihlZSxvZSl7dmFyIGdlPSIveGwvZXh0ZXJuYWxMaW5rcy9f''@;'; put 'put ''cmVscy9leHRlcm5hbExpbmsiKyhvZSsxKSsiLnhtbC5yZWxzIixfZT17fTtHbyhfZSwtMSxlZS5UYXJnZXQsZWUuTWlzc2luZz9OaS5YTUlTUzpOaS5YUEFUSCksR3QoUCxtdShnZSksWGwoX2UpKTt2YXIgdmU9Ii94bC9leHRlcm5hbExpbmtzL2V4dGVybmFsTGluayIrKG9lKzEpKyIueG1s''@;'; put 'put ''IjtELmxpbmtzLnB1c2godmUpLEd0KFAsbXUodmUpLGZ1bmN0aW9uIHVBKHcpe3ZhciBQPVtCbixSOF07cmV0dXJuKHcuU2hlZXROYW1lc3x8W10pLmxlbmd0aCYmKFAucHVzaCgnPGV4dGVybmFsQm9vayB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNl''@;'; put 'put ''RG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiByOmlkPSJySWQxIj4nKSxQLnB1c2goIjxzaGVldE5hbWVzPiIpLHcuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKEQpe1AucHVzaCgnPHNoZWV0TmFtZSB2YWw9IicrQnIoRCkrJyIvPicpfSksUC5wdXNoKCI8L3NoZWV0TmFtZXM+Iiks''@;'; put 'put ''UC5wdXNoKCI8c2hlZXREYXRhU2V0PiIpLHcuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKEQsZWUpe3ZhciBvZT13LlNoZWV0c1tEXSxnZT17c2hlZXRJZDplZX0sX2U9bnVsbDtpZihudWxsPT1vZSlnZS5yZWZyZXNoRXJyb3I9MTtlbHNlIGlmKG9lWyIhcmVmIl0pe3ZhciB2ZT1LYShv''@;'; put 'put ''ZVsiIXJlZiJdKTtfZT0iIjtmb3IodmFyIE1lPXZlLnMucjtNZTw9dmUuZS5yOysrTWUpe2Zvcih2YXIgamU9IiIsVWU9dmUucy5jO1VlPD12ZS5lLmM7KytVZSl7dmFyIFhlPXBpKHtyOk1lLGM6VWV9KTtvZVtYZV0mJihqZXx8KGplPSc8cm93IHI9IicrKE1lKzEpKyciPicpLGplKz0nPGNl''@;'; put 'put ''bGwgcj0iJytYZSsnIicrKG9lW1hlXS50PycgdD0iJytvZVtYZV0udCsnIic6IiIpKyI+PHY+IitCcihvZVtYZV0udikrIjwvdj48L2NlbGw+Iil9amUmJihfZSs9amUrIjwvcm93PiIpfX1QLnB1c2goTXIoInNoZWV0RGF0YSIsX2UsZ2UpKX0pLFAucHVzaCgiPC9zaGVldERhdGFTZXQ+Iiks''@;'; put 'put ''UC5wdXNoKCI8L2V4dGVybmFsQm9vaz4iKSksUC5sZW5ndGg+MiYmKFBbUC5sZW5ndGhdPSI8L2V4dGVybmFsTGluaz4iLFBbMV09UFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksUC5qb2luKCIiKX0oZWUpKX0pfSh3LGdlLG9lKSwieG1sIj09RCYmZnVuY3Rpb24gbEEodyl7dmFyIFAsRDt3Lldv''@;'; put 'put ''cmtib29rfHwody5Xb3JrYm9vaz17TmFtZXM6W119KSx3Lldvcmtib29rLk5hbWVzfHwody5Xb3JrYm9vay5OYW1lcz1bXSk7Zm9yKHZhciBlZT13Lldvcmtib29rLk5hbWVzLG9lPTA7b2U8dy5TaGVldE5hbWVzLmxlbmd0aDsrK29lKXt2YXIgZ2U9dy5TaGVldE5hbWVzW29lXSxfZT13LlNo''@;'; put 'put ''ZWV0c1tnZV07aWYoX2UmJl9lWyIhcHJpbnQiXSl7dmFyIHZlPSInIitnZSsiJyEiLE1lPV9lWyIhcHJpbnQiXTtpZihNZSl7dmFyIGplPSEoUD1NZS5hcmVhKSxVZT0hKEQ9TWUudGl0bGVzKSxYZT1QPyJzdHJpbmciPT10eXBlb2YgUD9QOlZvKFApOiIiO2lmKFAmJihlZS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKGZ0KXtmdC5TaGVldD09b2UmJiFqZSYmIl94bG5tLlByaW50X0FyZWEiPT1mdC5OYW1lJiYoamU9ITAsZnQuUmVmPXZlK1hlKX0pLGplfHxlZS5wdXNoKHtOYW1lOiJfeGxubS5QcmludF9BcmVhIixSZWY6dmUrWGUsU2hlZXQ6b2V9KSksRCl7dmFyIGl0PSIiO0Qucy5jPi0xJiZE''@;'; put 'put ''LmUuYz4tMSYmKGl0Kz12ZStCYShELnMuYykrIjoiK0JhKEQuZS5jKSsiLCIpLEQucy5yPi0xJiZELmUucj4tMSYmKGl0Kz12ZStWYShELnMucikrIjoiK1ZhKEQuZS5yKSsiLCIpLGl0PWl0LnNsaWNlKDAsLTEpLGVlLmZvckVhY2goZnVuY3Rpb24oZnQpe2Z0LlNoZWV0PT1vZSYmIVVlJiYi''@;'; put 'put ''X3hsbm0uUHJpbnRfVGl0bGVzIj09ZnQuTmFtZSYmKGplPSEwLGZ0LlJlZj1pdCl9KSxVZXx8ZWUucHVzaCh7TmFtZToiX3hsbm0uUHJpbnRfVGl0bGVzIixSZWY6aXQsU2hlZXQ6b2V9KX19fX19KHcpLEd0KGdlLF9lPSJ4bC93b3JrYm9vay4iK0QsZnVuY3Rpb24gRHcodyxQLEQpe3JldHVy''@;'; put 'put ''bigiLmJpbiI9PT1QLnNsaWNlKC00KT94VjpTVikodyxEKX0odyxfZSxQKSksb2Uud29ya2Jvb2tzLnB1c2goX2UpLEdvKFAucmVscywxLF9lLE5pLldCKSxHdChnZSxfZT0ieGwvdGhlbWUvdGhlbWUxLnhtbCIsRTIody5UaGVtZXMsUCkpLG9lLnRoZW1lcy5wdXNoKF9lKSxHbyhQLndicmVs''@;'; put 'put ''cywtMSwidGhlbWUvdGhlbWUxLnhtbCIsTmkuVEhFTUUpLEd0KGdlLF9lPSJ4bC9zdHlsZXMuIitELGZ1bmN0aW9uIFBWKHcsUCxEKXtyZXR1cm4oIi5iaW4iPT09UC5zbGljZSgtNCk/a0g6V3gpKHcsRCl9KHcsX2UsUCkpLG9lLnN0eWxlcy5wdXNoKF9lKSxHbyhQLndicmVscywtMSwic3R5''@;'; put 'put ''bGVzLiIrRCxOaS5TVFkpLHcudmJhcmF3JiZlZSYmKEd0KGdlLF9lPSJ4bC92YmFQcm9qZWN0LmJpbiIsdy52YmFyYXcpLG9lLnZiYS5wdXNoKF9lKSxHbyhQLndicmVscywtMSwidmJhUHJvamVjdC5iaW4iLE5pLlZCQSkpLHcubW9kZWwmJncubW9kZWwubGVuZ3RoJiYoR3QoZ2UsInhsL21v''@;'; put 'put ''ZGVsL2l0ZW0uZGF0YSIsdy5tb2RlbCksR28oUC53YnJlbHMsLTEsIm1vZGVsL2l0ZW0uZGF0YSIsTmkuUFdSUEQpKSx3LmNvbm4mJihHdChnZSwieGwvY29ubmVjdGlvbnMueG1sIix3LmNvbm4pLG9lLmNvbm5zLnB1c2goIi94bC9jb25uZWN0aW9ucy54bWwiKSxHbyhQLndicmVscywtMSwi''@;'; put 'put ''Y29ubmVjdGlvbnMueG1sIixOaS5DT05OKSksdy5DdXN0b21YTUwmJncuQ3VzdG9tWE1MLmZvckVhY2goZnVuY3Rpb24oZ24scW4pe2lmKEd0KGdlLCJjdXN0b21YbWwvaXRlbSIrKHFuKzEpKyIueG1sIixnbi5kYXRhKSxHbyhQLndicmVscywtMSwiLi4vY3VzdG9tWG1sL2l0ZW0iKyhxbisx''@;'; put 'put ''KSsiLnhtbCIsTmkuQ1hNTCksZ24ucHJvcHMpe0d0KGdlLCJjdXN0b21YbWwvaXRlbVByb3BzIisocW4rMSkrIi54bWwiLGduLnByb3BzKSxvZS5jdXN0b214bWxwcm9wcy5wdXNoKCIvY3VzdG9tWG1sL2l0ZW1Qcm9wcyIrKHFuKzEpKyIueG1sIik7dmFyIGZuPXt9O0dvKGZuLC0xLCJpdGVt''@;'; put 'put ''UHJvcHMiKyhxbisxKSsiLnhtbCIsTmkuQ1hNTFApLEd0KGdlLCJjdXN0b21YbWwvX3JlbHMvaXRlbSIrKHFuKzEpKyIueG1sLnJlbHMiLFhsKGZuKSl9fSksR3QoZ2UsIltDb250ZW50X1R5cGVzXS54bWwiLGZ1bmN0aW9uIFZiKHcsUCxEKXt2YXIgb2UsZWU9W107RHx8KGVlW2VlLmxlbmd0''@;'; put 'put ''aF09Qm4sZWVbZWUubGVuZ3RoXT1vcCxlZT1lZS5jb25jYXQoTmIpKTt2YXIgZ2U9ZnVuY3Rpb24oTWUpe3dbTWVdJiZ3W01lXS5sZW5ndGg+MCYmKGVlW2VlLmxlbmd0aF09TXIoIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT0ob2U9d1tNZV1bMF0pWzBdPyIiOiIvIikrb2UsQ29u''@;'; put 'put ''dGVudFR5cGU6S2ZbTWVdW1AuYm9va1R5cGV8fCJ4bHN4Il19KSl9LF9lPWZ1bmN0aW9uKE1lKXsod1tNZV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGplKXtlZVtlZS5sZW5ndGhdPU1yKCJPdmVycmlkZSIsbnVsbCx7UGFydE5hbWU6KCIvIj09amVbMF0/IiI6Ii8iKStqZSxDb250ZW50VHlw''@;'; put 'put ''ZTpLZltNZV1bUC5ib29rVHlwZXx8Inhsc3giXX0pfSl9LHZlPWZ1bmN0aW9uKE1lKXsod1tNZV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGplKXtlZVtlZS5sZW5ndGhdPU1yKCJPdmVycmlkZSIsbnVsbCx7UGFydE5hbWU6KCIvIj09amVbMF0/IiI6Ii8iKStqZSxDb250ZW50VHlwZTpadVtN''@;'; put 'put ''ZV1bMF19KX0pfTtyZXR1cm4gZ2UoIndvcmtib29rcyIpLF9lKCJzaGVldHMiKSxfZSgiY2hhcnRzIiksdmUoInRoZW1lcyIpLFsic3RycyIsInN0eWxlcyIsImNvbm5zIl0uZm9yRWFjaChnZSksWyJjb3JlcHJvcHMiLCJleHRwcm9wcyIsImN1c3Rwcm9wcyJdLmZvckVhY2godmUpLHZlKCJ2''@;'; put 'put ''YmEiKSx2ZSgiY29tbWVudHMiKSx2ZSgiZHJhd2luZ3MiKSxfZSgidGFibGVzIiksX2UoInBpdm90cyIpLF9lKCJwaXZvdGNhY2hlcyIpLF9lKCJwaXZvdHJlY29yZHMiKSx2ZSgiZGF0YW1vZGVscyIpLHZlKCJjdHJscHJvcHMiKSx2ZSgiY2hhcnRvYmpzIiksdmUoImNoYXJ0c3R5bGVzIiks''@;'; put 'put ''dmUoImNoYXJ0Y29sb3JzIiksdmUoImNoYXJ0ZXhzIiksX2UoImxpbmtzIiksdmUoImN1c3RvbXhtbHByb3BzIiksIUQmJmVlLmxlbmd0aD4yJiYoZWVbZWUubGVuZ3RoXT0iPC9UeXBlcz4iLGVlWzFdPWVlWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxlZS5qb2luKCIiKX0ob2UsUCkpLEd0KGdl''@;'; put 'put ''LCJfcmVscy8ucmVscyIsWGwoUC5yZWxzKSksR3QoZ2UsInhsL19yZWxzL3dvcmtib29rLiIrRCsiLnJlbHMiLFhsKFAud2JyZWxzKSksZGVsZXRlIFAuRm9udHMsZGVsZXRlIFAuRmlsbHMsZGVsZXRlIFAuQm9yZGVycyxkZWxldGUgUC5yZXZzc2YsZGVsZXRlIFAuc3NmLGdlfWZ1bmN0aW9u''@;'; put 'put ''IEt3KHcsUCl7dmFyIEQ9IiI7c3dpdGNoKChQfHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm5bd1swXSx3WzFdLHdbMl0sd1szXSx3WzRdLHdbNV0sd1s2XSx3WzddXTtjYXNlImJhc2U2NCI6RD1sZS5kZWNvZGUody5zbGljZSgwLDEyKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJiaW5hcnkiOkQ9dzticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIisoUCYmUC50eXBlfHwidW5kZWZpbmVkIikpfXJldHVybltELmNoYXJDb2RlQXQoMCksRC5jaGFyQ29kZUF0KDEpLEQuY2hhckNvZGVBdCgyKSxELmNoYXJDb2RlQXQo''@;'; put 'put ''MyksRC5jaGFyQ29kZUF0KDQpLEQuY2hhckNvZGVBdCg1KSxELmNoYXJDb2RlQXQoNiksRC5jaGFyQ29kZUF0KDcpXX1mdW5jdGlvbiBnTyh3LFApe3ZhciBEPTA7ZTpmb3IoO0Q8dy5sZW5ndGg7KXN3aXRjaCh3LmNoYXJDb2RlQXQoRCkpe2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOisrRDti''@;'; put 'put ''cmVhaztjYXNlIDYwOnJldHVybiBlcyh3LnNsaWNlKEQpLFApO2RlZmF1bHQ6YnJlYWsgZX1yZXR1cm4gdWYudG9fd29ya2Jvb2sodyxQKX1mdW5jdGlvbiBxdyh3LFAsRCxlZSl7cmV0dXJuIGVlPyhELnR5cGU9InN0cmluZyIsdWYudG9fd29ya2Jvb2sodyxEKSk6dWYudG9fd29ya2Jvb2so''@;'; put 'put ''UCxEKX1mdW5jdGlvbiBWMih3LFApe3ZhciBEPVMuZ2V0bG9jYWxlKCk7UShTKSxTLnNldGxvY2FsZShEKSxqKCk7dmFyIGVlPVB8fHt9O2lmKHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJncgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gVjIobmV3IFVpbnQ4QXJyYXkodyksKChlZT1K''@;'; put 'put ''dChlZSkpLnR5cGU9ImFycmF5IixlZSkpO3ZhciBnZSxvZT13LF9lPSExO2lmKHA4KGsyPWVlLlBQSXx8cF8pLGVlLmNlbGxTdHlsZXMmJihlZS5jZWxsTkY9ITAsZWUuc2hlZXRTdHVicz0hMCksRnA9e30sZWUuZGF0ZU5GJiYoRnAuZGF0ZU5GPWVlLmRhdGVORiksZWUudHlwZXx8KGVlLnR5''@;'; put 'put ''cGU9ZGUmJkJ1ZmZlci5pc0J1ZmZlcih3KT8iYnVmZmVyIjoiYmFzZTY0IiksImZpbGUiPT1lZS50eXBlJiYoZWUudHlwZT1kZT8iYnVmZmVyIjoiYmluYXJ5IixvZT1mdW5jdGlvbiBRZSh3KXtpZih0eXBlb2YgTGU8InUiKXJldHVybiBMZS5yZWFkRmlsZVN5bmModyk7aWYodHlwZW9mICQ8''@;'; put 'put ''InUiJiZ0eXBlb2YgRmlsZTwidSImJnR5cGVvZiBGb2xkZXI8InUiKXRyeXt2YXIgUD1GaWxlKHcpO1Aub3BlbigiciIpLFAuZW5jb2Rpbmc9ImJpbmFyeSI7dmFyIEQ9UC5yZWFkKCk7cmV0dXJuIFAuY2xvc2UoKSxEfWNhdGNoKGVlKXtpZighZWUubWVzc2FnZXx8IWVlLm1lc3NhZ2UubWF0''@;'; put 'put ''Y2goL29uc3RydWN0LykpdGhyb3cgZWV9dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYWNjZXNzIGZpbGUgIit3KX0odykpLCJzdHJpbmciPT1lZS50eXBlJiYoX2U9ITAsZWUudHlwZT0iYmluYXJ5IixlZS5jb2RlcGFnZT02NTAwMSxvZT1mdW5jdGlvbiBwQih3KXtyZXR1cm4gdy5tYXRjaCgv''@;'; put 'put ''W15ceDAwLVx4N0ZdLyk/SG8odyk6d30odykpLCJhcnJheSI9PWVlLnR5cGUmJnR5cGVvZiBVaW50OEFycmF5PCJ1IiYmdyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnR5cGVvZiBBcnJheUJ1ZmZlcjwidSIpe3ZhciB2ZT1uZXcgQXJyYXlCdWZmZXIoMyksTWU9bmV3IFVpbnQ4QXJyYXkodmUp''@;'; put 'put ''O2lmKE1lLmZvbz0iYmFyIiwhTWUuZm9vKXJldHVybihlZT1KdChlZSkpLnR5cGU9ImFycmF5IixWMihDKG9lKSxlZSl9c3dpdGNoKChnZT1LdyhvZSxlZSkpWzBdKXtjYXNlIDIwODppZigyMDc9PT1nZVsxXSYmMTc9PT1nZVsyXSYmMjI0PT09Z2VbM10mJjE2MT09PWdlWzRdJiYxNzc9PT1n''@;'; put 'put ''ZVs1XSYmMjY9PT1nZVs2XSYmMjI1PT09Z2VbN10pcmV0dXJuIGZ1bmN0aW9uIGNCKHcsUCl7cmV0dXJuIE5lLmZpbmQodywiRW5jcnlwdGVkUGFja2FnZSIpP2xCKHcsUCk6bWcodyxQKX0oTmUucmVhZChvZSxlZSksZWUpO2JyZWFrO2Nhc2UgOTppZihnZVsxXTw9OClyZXR1cm4gbWcob2Us''@;'; put 'put ''ZWUpO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIGVzKG9lLGVlKTtjYXNlIDczOmlmKDczPT09Z2VbMV0mJjQyPT09Z2VbMl0mJjA9PT1nZVszXSl0aHJvdyBuZXcgRXJyb3IoIlRJRkYgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2lmKDY4PT09Z2VbMV0pcmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IExRKHcsUCl7dmFyIEQ9UHx8e30sZWU9ISFELldURjtELldURj0hMDt0cnl7dmFyIG9lPXNfLnRvX3dvcmtib29rKHcsRCk7cmV0dXJuIEQuV1RGPWVlLG9lfWNhdGNoKGdlKXtpZihELldURj1lZSwhZ2UubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykmJmVlKXRocm93IGdl''@;'; put 'put ''O3JldHVybiB1Zi50b193b3JrYm9vayh3LFApfX0ob2UsZWUpO2JyZWFrO2Nhc2UgODQ6aWYoNjU9PT1nZVsxXSYmNjY9PT1nZVsyXSYmNzY9PT1nZVszXSlyZXR1cm4gZ3AudG9fd29ya2Jvb2sob2UsZWUpO2JyZWFrO2Nhc2UgODA6cmV0dXJuIDc1PT09Z2VbMV0mJmdlWzJdPDkmJmdlWzNd''@;'; put 'put ''PDk/ZnVuY3Rpb24gZkIodyxQKXt2YXIgZWU9dyxvZT1QfHx7fTtyZXR1cm4gb2UudHlwZXx8KG9lLnR5cGU9ZGUmJkJ1ZmZlci5pc0J1ZmZlcih3KT8iYnVmZmVyIjoiYmFzZTY0IiksbU8oVG4oZWUsb2UpLG9lKX0ob2UsZWUpOnF3KHcsb2UsZWUsX2UpO2Nhc2UgMjM5OnJldHVybiA2MD09''@;'; put 'put ''PWdlWzNdP2VzKG9lLGVlKTpxdyh3LG9lLGVlLF9lKTtjYXNlIDI1NTppZigyNTQ9PT1nZVsxXSlyZXR1cm4gZnVuY3Rpb24gaEIodyxQKXt2YXIgRD13O3JldHVybiJiYXNlNjQiPT1QLnR5cGUmJihEPWxlLmRlY29kZShEKSksRD1jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEQuc2xpY2Uo''@;'; put 'put ''MiksInN0ciIpLFAudHlwZT0iYmluYXJ5IixnTyhELFApfShvZSxlZSk7YnJlYWs7Y2FzZSAwOmlmKDA9PT1nZVsxXSYmZ2VbMl0+PTImJjA9PT1nZVszXSlyZXR1cm4gbDgudG9fd29ya2Jvb2sob2UsZWUpO2JyZWFrO2Nhc2UgMzpjYXNlIDEzMTpjYXNlIDEzOTpjYXNlIDE0MDpyZXR1cm4g''@;'; put 'put ''c2gudG9fd29ya2Jvb2sob2UsZWUpO2Nhc2UgMTIzOmlmKDkyPT09Z2VbMV0mJjExND09PWdlWzJdJiYxMTY9PT1nZVszXSlyZXR1cm4gZDgudG9fd29ya2Jvb2sob2UsZWUpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBmdW5jdGlvbiBkQih3LFApe3ZhciBEPSIiLGVl''@;'; put 'put ''PUt3KHcsUCk7c3dpdGNoKFAudHlwZSl7Y2FzZSJiYXNlNjQiOkQ9bGUuZGVjb2RlKHcpO2JyZWFrO2Nhc2UiYmluYXJ5IjpEPXc7YnJlYWs7Y2FzZSJidWZmZXIiOkQ9dy50b1N0cmluZygiYmluYXJ5Iik7YnJlYWs7Y2FzZSJhcnJheSI6RD1BdCh3KTticmVhaztkZWZhdWx0OnRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitQLnR5cGUpfXJldHVybiAyMzk9PWVlWzBdJiYxODc9PWVlWzFdJiYxOTE9PWVlWzJdJiYoRD1GaShEKSksZ08oRCxQKX0ob2UsZWUpfXJldHVybiBzaC52ZXJzaW9ucy5pbmRleE9mKGdlWzBdKT4tMSYmZ2VbMl08PTEyJiZnZVszXTw9MzE/''@;'; put 'put ''c2gudG9fd29ya2Jvb2sob2UsZWUpOnF3KHcsb2UsZWUsX2UpfWZ1bmN0aW9uIFh3KHcsUCl7dmFyIEQ9UHx8e307cmV0dXJuIEQudHlwZT0iZmlsZSIsVjIodyxEKX1mdW5jdGlvbiBKdyh3LFApe3N3aXRjaChQLnR5cGUpe2Nhc2UiYmFzZTY0IjpjYXNlImJpbmFyeSI6YnJlYWs7Y2FzZSJi''@;'; put 'put ''dWZmZXIiOmNhc2UiYXJyYXkiOlAudHlwZT0iIjticmVhaztjYXNlImZpbGUiOnJldHVybiBIZShQLmZpbGUsTmUud3JpdGUodyx7dHlwZTpkZT8iYnVmZmVyIjoiIn0pKTtjYXNlInN0cmluZyI6dGhyb3cgbmV3IEVycm9yKCInc3RyaW5nJyBvdXRwdXQgdHlwZSBpbnZhbGlkIGZvciAnIitQ''@;'; put 'put ''LmJvb2tUeXBlKyInIGZpbGVzIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUC50eXBlKX1yZXR1cm4gTmUud3JpdGUodyxQKX1mdW5jdGlvbiBwMSh3LFAsRCl7RHx8KEQ9IiIpO3ZhciBlZT1EK3c7c3dpdGNoKFAudHlwZSl7Y2FzZSJiYXNlNjQiOnJl''@;'; put 'put ''dHVybiBsZS5lbmNvZGUoSG8oZWUpKTtjYXNlImJpbmFyeSI6cmV0dXJuIEhvKGVlKTtjYXNlInN0cmluZyI6cmV0dXJuIHc7Y2FzZSJmaWxlIjpyZXR1cm4gSGUoUC5maWxlLGVlLCJ1dGY4Iik7Y2FzZSJidWZmZXIiOnJldHVybiBkZT91ZShlZSwidXRmOCIpOnAxKGVlLHt0eXBlOiJiaW5h''@;'; put 'put ''cnkifSkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihvZSl7cmV0dXJuIG9lLmNoYXJDb2RlQXQoMCl9KX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUC50eXBlKX1mdW5jdGlvbiBRdyh3LFApe3N3aXRjaChQLnR5cGUpe2Nhc2Uic3RyaW5nIjpjYXNlImJhc2U2NCI6Y2Fz''@;'; put 'put ''ZSJiaW5hcnkiOmZvcih2YXIgRD0iIixlZT0wO2VlPHcubGVuZ3RoOysrZWUpRCs9U3RyaW5nLmZyb21DaGFyQ29kZSh3W2VlXSk7cmV0dXJuImJhc2U2NCI9PVAudHlwZT9sZS5lbmNvZGUoRCk6InN0cmluZyI9PVAudHlwZT9GaShEKTpEO2Nhc2UiZmlsZSI6cmV0dXJuIEhlKFAuZmlsZSx3''@;'; put 'put ''KTtjYXNlImJ1ZmZlciI6cmV0dXJuIHc7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUC50eXBlKX19ZnVuY3Rpb24gYmcodyxQKXtqKCksZnVuY3Rpb24gX1Yodyl7aWYoIXd8fCF3LlNoZWV0TmFtZXN8fCF3LlNoZWV0cyl0aHJvdyBuZXcgRXJyb3IoIklu''@;'; put 'put ''dmFsaWQgV29ya2Jvb2siKTtpZighdy5TaGVldE5hbWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldvcmtib29rIGlzIGVtcHR5Iik7IWZ1bmN0aW9uIHh3KHcsUCxEKXt3LmZvckVhY2goZnVuY3Rpb24oZWUsb2Upe0V3KGVlKTtmb3IodmFyIGdlPTA7Z2U8b2U7KytnZSlpZihlZT09d1tn''@;'; put 'put ''ZV0pdGhyb3cgbmV3IEVycm9yKCJEdXBsaWNhdGUgU2hlZXQgTmFtZTogIitlZSk7aWYoRCl7dmFyIF9lPVAmJlBbb2VdJiZQW29lXS5Db2RlTmFtZXx8ZWU7aWYoOTU9PV9lLmNoYXJDb2RlQXQoMCkmJl9lLmxlbmd0aD4yMil0aHJvdyBuZXcgRXJyb3IoIkJhZCBDb2RlIE5hbWU6IFdvcmtz''@;'; put 'put ''aGVldCIrX2UpfX0pfSh3LlNoZWV0TmFtZXMsdy5Xb3JrYm9vayYmdy5Xb3JrYm9vay5TaGVldHN8fFtdLCEhdy52YmFyYXcpO2Zvcih2YXIgRD0wO0Q8dy5TaGVldE5hbWVzLmxlbmd0aDsrK0Qpcmcody5TaGVldHNbdy5TaGVldE5hbWVzW0RdXSwwLEQpfSh3KTt2YXIgRD1QfHx7fTtpZihE''@;'; put 'put ''LmNlbGxTdHlsZXMmJihELmNlbGxORj0hMCxELnNoZWV0U3R1YnM9ITApLCJhcnJheSI9PUQudHlwZSl7RC50eXBlPSJiaW5hcnkiO3ZhciBlZT1iZyh3LEQpO3JldHVybiBELnR5cGU9ImFycmF5IixOKGVlKX1zd2l0Y2goRC5ib29rVHlwZXx8Inhsc2IiKXtjYXNlInhtbCI6Y2FzZSJ4bG1s''@;'; put 'put ''IjpyZXR1cm4gcDEoelYodyxEKSxEKTtjYXNlInNsayI6Y2FzZSJzeWxrIjpyZXR1cm4gcDEoZUIodyxEKSxEKTtjYXNlImh0bSI6Y2FzZSJodG1sIjpyZXR1cm4gcDEoSlYodyxEKSxEKTtjYXNlInR4dCI6cmV0dXJuIGZ1bmN0aW9uIGJPKHcsUCl7c3dpdGNoKFAudHlwZSl7Y2FzZSJiYXNl''@;'; put 'put ''NjQiOnJldHVybiBsZS5lbmNvZGUodyk7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5nIjpyZXR1cm4gdztjYXNlImZpbGUiOnJldHVybiBIZShQLmZpbGUsdywiYmluYXJ5Iik7Y2FzZSJidWZmZXIiOnJldHVybiBkZT91ZSh3LCJiaW5hcnkiKTp3LnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24oRCl7''@;'; put 'put ''cmV0dXJuIEQuY2hhckNvZGVBdCgwKX0pfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitQLnR5cGUpfShuQih3LEQpLEQpO2Nhc2UiY3N2IjpyZXR1cm4gcDEoUVYodyxEKSxELCJcdWZlZmYiKTtjYXNlImRpZiI6cmV0dXJuIHAxKHRCKHcsRCksRCk7Y2FzZSJkYmYiOnJl''@;'; put 'put ''dHVybiBRdyh1Tyh3LEQpLEQpO2Nhc2UicHJuIjpyZXR1cm4gcDEoWncodyxEKSxEKTtjYXNlInJ0ZiI6cmV0dXJuIHAxKHZnKHcsRCksRCk7Y2FzZSJldGgiOnJldHVybiBwMShyQih3LEQpLEQpO2Nhc2UiZm9kcyI6cmV0dXJuIHAxKFQwKHcsRCksRCk7Y2FzZSJiaWZmMiI6RC5iaWZmfHwo''@;'; put 'put ''RC5iaWZmPTIpO2Nhc2UiYmlmZjMiOkQuYmlmZnx8KEQuYmlmZj0zKTtjYXNlImJpZmY0IjpyZXR1cm4gRC5iaWZmfHwoRC5iaWZmPTQpLFF3KEJ3KHcsRCksRCk7Y2FzZSJiaWZmNSI6RC5iaWZmfHwoRC5iaWZmPTUpO2Nhc2UiYmlmZjgiOmNhc2UieGxhIjpjYXNlInhscyI6cmV0dXJuIEQu''@;'; put 'put ''YmlmZnx8KEQuYmlmZj04KSxmdW5jdGlvbiB5Tyh3LFApe3ZhciBEPVB8fHt9O3JldHVybiBKdyhmdW5jdGlvbiBlTyh3LFApe3ZhciBEPVB8fHt9LGVlPU5lLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSksb2U9Ii9Xb3JrYm9vayI7c3dpdGNoKEQuYm9va1R5cGV8fCJ4bHMiKXtjYXNlInhs''@;'; put 'put ''cyI6RC5ib29rVHlwZT0iYmlmZjgiO2Nhc2UieGxhIjpELmJvb2tUeXBlfHwoRC5ib29rVHlwZT0ieGxhIik7Y2FzZSJiaWZmOCI6b2U9Ii9Xb3JrYm9vayIsRC5iaWZmPTg7YnJlYWs7Y2FzZSJiaWZmNSI6b2U9Ii9Cb29rIixELmJpZmY9NTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiaW52YWxpZCB0eXBlICIrRC5ib29rVHlwZSsiIGZvciBYTFMgQ0ZCIil9cmV0dXJuIE5lLnV0aWxzLmNmYl9hZGQoZWUsb2UsQncodyxEKSksOD09RC5iaWZmJiYody5Qcm9wc3x8dy5DdXN0cHJvcHMpJiZmdW5jdGlvbiBRVCh3LFApe3ZhciBfZSxEPVtdLGVlPVtdLG9lPVtdLGdlPTA7''@;'; put 'put ''aWYody5Qcm9wcylmb3IoX2U9bXQody5Qcm9wcyksZ2U9MDtnZTxfZS5sZW5ndGg7KytnZSkoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGdtLF9lW2dlXSk/RDpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodm0sX2VbZ2VdKT9lZTpvZSkucHVzaChb''@;'; put 'put ''X2VbZ2VdLHcuUHJvcHNbX2VbZ2VdXV0pO2lmKHcuQ3VzdHByb3BzKWZvcihfZT1tdCh3LkN1c3Rwcm9wcyksZ2U9MDtnZTxfZS5sZW5ndGg7KytnZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwody5Qcm9wc3x8e30sX2VbZ2VdKXx8KE9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHkuY2FsbChnbSxfZVtnZV0pP0Q6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZtLF9lW2dlXSk/ZWU6b2UpLnB1c2goW19lW2dlXSx3LkN1c3Rwcm9wc1tfZVtnZV1dXSk7dmFyIHZlPVtdO2ZvcihnZT0wO2dlPG9lLmxlbmd0aDsrK2dlKVk2LmluZGV4''@;'; put 'put ''T2Yob2VbZ2VdWzBdKT4tMXx8bnVsbCE9b2VbZ2VdWzFdJiZ2ZS5wdXNoKG9lW2dlXSk7ZWUubGVuZ3RoJiZOZS51dGlscy5jZmJfYWRkKFAsIi9ceDA1U3VtbWFyeUluZm9ybWF0aW9uIix3aShlZSxLcC5TSSx2bSxrcikpLChELmxlbmd0aHx8dmUubGVuZ3RoKSYmTmUudXRpbHMuY2ZiX2Fk''@;'; put 'put ''ZChQLCIvXHgwNURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIix3aShELEtwLkRTSSxnbSxtbSx2ZS5sZW5ndGg/dmU6bnVsbCxLcC5VREkpKX0odyxlZSksOD09RC5iaWZmJiZ3LnZiYXJhdyYmZnVuY3Rpb24gWUgodyxQKXtQLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKEQsZWUpe2lm''@;'; put 'put ''KDAhPWVlKXt2YXIgb2U9RC5yZXBsYWNlKC9bXlwvXSpbXC9dLywiL19WQkFfUFJPSkVDVF9DVVIvIik7Ii8iIT09b2Uuc2xpY2UoLTEpJiZOZS51dGlscy5jZmJfYWRkKHcsb2UsUC5GaWxlSW5kZXhbZWVdLmNvbnRlbnQpfX0pfShlZSxOZS5yZWFkKHcudmJhcmF3LHt0eXBlOiJzdHJpbmci''@;'; put 'put ''PT10eXBlb2Ygdy52YmFyYXc/ImJpbmFyeSI6ImJ1ZmZlciJ9KSksZWV9KHcsRCksRCl9KHcsRCk7Y2FzZSJ4bHN4IjpjYXNlInhsc20iOmNhc2UieGxhbSI6Y2FzZSJ4bHNiIjpjYXNlIm9kcyI6cmV0dXJuIGZ1bmN0aW9uIHZPKHcsUCl7dmFyIEQ9UHx8e30sZWU9dUIodyxEKSxvZT17fTtp''@;'; put 'put ''ZihELmNvbXByZXNzaW9uJiYob2UuY29tcHJlc3Npb249IkRFRkxBVEUiKSxELnBhc3N3b3JkKW9lLnR5cGU9ZGU/Im5vZGVidWZmZXIiOiJzdHJpbmciO2Vsc2Ugc3dpdGNoKEQudHlwZSl7Y2FzZSJiYXNlNjQiOm9lLnR5cGU9ImJhc2U2NCI7YnJlYWs7Y2FzZSJiaW5hcnkiOm9lLnR5cGU9''@;'; put 'put ''InN0cmluZyI7YnJlYWs7Y2FzZSJzdHJpbmciOnRocm93IG5ldyBFcnJvcigiJ3N0cmluZycgb3V0cHV0IHR5cGUgaW52YWxpZCBmb3IgJyIrRC5ib29rVHlwZSsiJyBmaWxlcyIpO2Nhc2UiYnVmZmVyIjpjYXNlImZpbGUiOm9lLnR5cGU9ZGU/Im5vZGVidWZmZXIiOiJzdHJpbmciO2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK0QudHlwZSl9dmFyIGdlPWVlLkZ1bGxQYXRocz9OZS53cml0ZShlZSx7ZmlsZVR5cGU6InppcCIsdHlwZTp7bm9kZWJ1ZmZlcjoiYnVmZmVyIixzdHJpbmc6ImJpbmFyeSJ9W29lLnR5cGVdfHxvZS50eXBlfSk6''@;'; put 'put ''ZWUuZ2VuZXJhdGUob2UpO3JldHVybiBELnBhc3N3b3JkJiZ0eXBlb2YgTzA8InUiP0p3KE8wKGdlLEQucGFzc3dvcmQpLEQpOiJmaWxlIj09PUQudHlwZT9IZShELmZpbGUsZ2UpOiJzdHJpbmciPT1ELnR5cGU/RmkoZ2UpOmdlfSh3LEQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJl''@;'; put 'put ''Y29nbml6ZWQgYm9va1R5cGUgfCIrRC5ib29rVHlwZSsifCIpfX1mdW5jdGlvbiBtMSh3KXtpZighdy5ib29rVHlwZSl7dmFyIEQ9dy5maWxlLnNsaWNlKHcuZmlsZS5sYXN0SW5kZXhPZigiLiIpKS50b0xvd2VyQ2FzZSgpO0QubWF0Y2goL15cLlthLXpdKyQvKSYmKHcuYm9va1R5cGU9RC5z''@;'; put 'put ''bGljZSgxKSksdy5ib29rVHlwZT17eGxzOiJiaWZmOCIsaHRtOiJodG1sIixzbGs6InN5bGsiLHNvY2lhbGNhbGM6ImV0aCIsU2gzM3RKUzoiV1RGIn1bdy5ib29rVHlwZV18fHcuYm9va1R5cGV9fWZ1bmN0aW9uIF9nKHcsUCxEKXt2YXIgZWU9RHx8e307cmV0dXJuIGVlLnR5cGU9ImZpbGUi''@;'; put 'put ''LGVlLmZpbGU9UCxtMShlZSksYmcodyxlZSl9ZnVuY3Rpb24gX08odyxQLEQsZWUsb2UsZ2UsX2UsdmUpe3ZhciBNZT1WYShEKSxqZT12ZS5kZWZ2YWwsVWU9dmUucmF3LFhlPSEwLGl0PTE9PT1vZT9bXTp7fTtpZigxIT09b2UpaWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXRyeXtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoaXQsIl9fcm93TnVtX18iLHt2YWx1ZTpELGVudW1lcmFibGU6ITF9KX1jYXRjaHtpdC5fX3Jvd051bV9fPUR9ZWxzZSBpdC5fX3Jvd051bV9fPUQ7aWYoIV9lfHx3W0RdKWZvcih2YXIgZnQ9UC5zLmM7ZnQ8PVAuZS5jOysrZnQpe3ZhciBNdD1fZT93W0RdW2Z0XTp3''@;'; put 'put ''W2VlW2Z0XStNZV07aWYodm9pZCAwIT09TXQmJnZvaWQgMCE9PU10LnQpe3ZhciB1dD1NdC52O3N3aXRjaChNdC50KXtjYXNlInoiOmlmKG51bGw9PXV0KWJyZWFrO2NvbnRpbnVlO2Nhc2UiZSI6dXQ9MD09dXQ/bnVsbDp2b2lkIDA7YnJlYWs7Y2FzZSJzIjpjYXNlImQiOmNhc2UiYiI6Y2Fz''@;'; put 'put ''ZSJuIjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHR5cGUgIitNdC50KX1pZihudWxsIT1nZVtmdF0pe2lmKG51bGw9PXV0KWlmKCJlIj09TXQudCYmbnVsbD09PXV0KWl0W2dlW2Z0XV09bnVsbDtlbHNlIGlmKHZvaWQgMCE9PWplKWl0W2dlW2Z0XV09amU7''@;'; put 'put ''ZWxzZXtpZighVWV8fG51bGwhPT11dCljb250aW51ZTtpdFtnZVtmdF1dPW51bGx9ZWxzZSBpdFtnZVtmdF1dPVVlP3V0Om1jKE10LHV0LHZlKTtudWxsIT11dCYmKFhlPSExKX19ZWxzZXtpZih2b2lkIDA9PT1qZSljb250aW51ZTtudWxsIT1nZVtmdF0mJihpdFtnZVtmdF1dPWplKX19cmV0''@;'; put 'put ''dXJue3JvdzppdCxpc2VtcHR5OlhlfX1mdW5jdGlvbiBwdih3LFApe2lmKG51bGw9PXd8fG51bGw9PXdbIiFyZWYiXSlyZXR1cm5bXTt2YXIgRD17dDoibiIsdjowfSxlZT0wLG9lPTEsZ2U9W10sX2U9MCx2ZT0iIixNZT1KU09OLnBhcnNlKCd7InMiOnsiciI6MCwiYyI6MH0sImUiOnsiciI6''@;'; put 'put ''MCwiYyI6MH19JyksamU9UHx8e30sVWU9bnVsbCE9amUucmFuZ2U/amUucmFuZ2U6d1siIXJlZiJdO3N3aXRjaCgxPT09amUuaGVhZGVyP2VlPTE6IkEiPT09amUuaGVhZGVyP2VlPTI6QXJyYXkuaXNBcnJheShqZS5oZWFkZXIpP2VlPTM6bnVsbD09amUuaGVhZGVyJiYoZWU9MCksdHlwZW9m''@;'; put 'put ''IFVlKXtjYXNlInN0cmluZyI6TWU9UGkoVWUpO2JyZWFrO2Nhc2UibnVtYmVyIjooTWU9UGkod1siIXJlZiJdKSkucy5yPVVlO2JyZWFrO2RlZmF1bHQ6TWU9VWV9ZWU+MCYmKG9lPTApO3ZhciBYZT1WYShNZS5zLnIpLGl0PVtdLGZ0PVtdLE10PTAsdXQ9MCx3dD1BcnJheS5pc0FycmF5KHcp''@;'; put 'put ''LEh0PU1lLnMucixrdD0wLFR0PTA7Zm9yKHd0JiYhd1tIdF0mJih3W0h0XT1bXSksa3Q9TWUucy5jO2t0PD1NZS5lLmM7KytrdClzd2l0Y2goaXRba3RdPUJhKGt0KSxEPXd0P3dbSHRdW2t0XTp3W2l0W2t0XStYZV0sZWUpe2Nhc2UgMTpnZVtrdF09a3QtTWUucy5jO2JyZWFrO2Nhc2UgMjpn''@;'; put 'put ''ZVtrdF09aXRba3RdO2JyZWFrO2Nhc2UgMzpnZVtrdF09amUuaGVhZGVyW2t0LU1lLnMuY107YnJlYWs7ZGVmYXVsdDpmb3IobnVsbD09RCYmKEQ9SlNPTi5wYXJzZSgneyJ3IjogIl9fRU1QVFkiLCAidCI6ICJzIn0nKSksdmU9X2U9bWMoRCxudWxsLGplKSx1dD0wLFR0PTA7VHQ8Z2UubGVu''@;'; put 'put ''Z3RoOysrVHQpZ2VbVHRdPT12ZSYmKHZlPV9lKyJfIisgKyt1dCk7Z2Vba3RdPXZlfWZvcihIdD1NZS5zLnIrb2U7SHQ8PU1lLmUucjsrK0h0KXt2YXIgWXQ9X08odyxNZSxIdCxpdCxlZSxnZSx3dCxqZSk7KCExPT09WXQuaXNlbXB0eXx8KDE9PT1lZT8hMSE9PWplLmJsYW5rcm93czpqZS5i''@;'; put 'put ''bGFua3Jvd3MpKSYmKGZ0W010KytdPVl0LnJvdyl9cmV0dXJuIGZ0Lmxlbmd0aD1NdCxmdH12YXIgZGQ9LyIvZztmdW5jdGlvbiB3Tyh3LFAsRCxlZSxvZSxnZSxfZSx2ZSl7Zm9yKHZhciBNZT0hMCxqZT1bXSxVZT0iIixYZT1WYShEKSxpdD1QLnMuYztpdDw9UC5lLmM7KytpdClpZihlZVtp''@;'; put 'put ''dF0pe3ZhciBmdD12ZS5kZW5zZT8od1tEXXx8W10pW2l0XTp3W2VlW2l0XStYZV07aWYobnVsbD09ZnQpVWU9IiI7ZWxzZSBpZihudWxsIT1mdC52KXtNZT0hMSxVZT0iIittYyhmdCxudWxsLHZlKTtmb3IodmFyIE10PTAsdXQ9MDtNdCE9PVVlLmxlbmd0aDsrK010KWlmKCh1dD1VZS5jaGFy''@;'; put 'put ''Q29kZUF0KE10KSk9PT1vZXx8dXQ9PT1nZXx8MzQ9PT11dCl7VWU9JyInK1VlLnJlcGxhY2UoZGQsJyIiJykrJyInO2JyZWFrfSJJRCI9PVVlJiYoVWU9JyJJRCInKX1lbHNlIG51bGw9PWZ0LmZ8fGZ0LkY/VWU9IiI6KE1lPSExLChVZT0iPSIrZnQuZikuaW5kZXhPZigiLCIpPj0wJiYoVWU9''@;'; put 'put ''JyInK1VlLnJlcGxhY2UoZGQsJyIiJykrJyInKSk7amUucHVzaChVZSl9cmV0dXJuITE9PT12ZS5ibGFua3Jvd3MmJk1lP251bGw6amUuam9pbihfZSl9ZnVuY3Rpb24gS3ModyxQKXt2YXIgRD1bXSxlZT1QPz97fTtpZihudWxsPT13fHxudWxsPT13WyIhcmVmIl0pcmV0dXJuIiI7dmFyIG9l''@;'; put 'put ''PVBpKHdbIiFyZWYiXSksZ2U9dm9pZCAwIT09ZWUuRlM/ZWUuRlM6IiwiLF9lPWdlLmNoYXJDb2RlQXQoMCksdmU9dm9pZCAwIT09ZWUuUlM/ZWUuUlM6IlxuIixNZT12ZS5jaGFyQ29kZUF0KDApLGplPW5ldyBSZWdFeHAoKCJ8Ij09Z2U/IlxcfCI6Z2UpKyIrJCIpLFVlPSIiLFhlPVtdO2Vl''@;'; put 'put ''LmRlbnNlPUFycmF5LmlzQXJyYXkodyk7Zm9yKHZhciBpdD1lZS5za2lwSGlkZGVuJiZ3WyIhY29scyJdfHxbXSxmdD1lZS5za2lwSGlkZGVuJiZ3WyIhcm93cyJdfHxbXSxNdD1vZS5zLmM7TXQ8PW9lLmUuYzsrK010KShpdFtNdF18fHt9KS5oaWRkZW58fChYZVtNdF09QmEoTXQpKTtmb3Io''@;'; put 'put ''dmFyIHV0PW9lLnMucjt1dDw9b2UuZS5yOysrdXQpKGZ0W3V0XXx8e30pLmhpZGRlbnx8bnVsbCE9KFVlPXdPKHcsb2UsdXQsWGUsX2UsTWUsZ2UsZWUpKSYmKGVlLnN0cmlwJiYoVWU9VWUucmVwbGFjZShqZSwiIikpLEQucHVzaChVZSt2ZSkpO3JldHVybiBkZWxldGUgZWUuZGVuc2UsRC5q''@;'; put 'put ''b2luKCIiKX1mdW5jdGlvbiBtQih3LFApe1B8fChQPXt9KSxQLkZTPSJcdCIsUC5SUz0iXG4iO3ZhciBEPUtzKHcsUCk7aWYodHlwZW9mIGNwdGFibGU+InUifHwic3RyaW5nIj09UC50eXBlKXJldHVybiBEO3ZhciBlZT1jcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLEQsInN0ciIpO3JldHVy''@;'; put 'put ''biBTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSkrU3RyaW5nLmZyb21DaGFyQ29kZSgyNTQpK2VlfWZ1bmN0aW9uIG12KHcpe3ZhciBELFA9IiIsZWU9IiI7aWYobnVsbD09d3x8bnVsbD09d1siIXJlZiJdKXJldHVybltdO3ZhciB2ZSxvZT1QaSh3WyIhcmVmIl0pLGdlPSIiLF9lPVtdLE1lPVtd''@;'; put 'put ''LGplPUFycmF5LmlzQXJyYXkodyk7Zm9yKHZlPW9lLnMuYzt2ZTw9b2UuZS5jOysrdmUpX2VbdmVdPUJhKHZlKTtmb3IodmFyIFVlPW9lLnMucjtVZTw9b2UuZS5yOysrVWUpZm9yKGdlPVZhKFVlKSx2ZT1vZS5zLmM7dmU8PW9lLmUuYzsrK3ZlKWlmKFA9X2VbdmVdK2dlLGVlPSIiLHZvaWQg''@;'; put 'put ''MCE9PShEPWplPyh3W1VlXXx8W10pW3ZlXTp3W1BdKSl7aWYobnVsbCE9RC5GKXtpZihQPUQuRiwhRC5mKWNvbnRpbnVlO2VlPUQuZiwtMT09UC5pbmRleE9mKCI6IikmJihQPVArIjoiK1ApfWlmKG51bGwhPUQuZillZT1ELmY7ZWxzZXtpZigieiI9PUQudCljb250aW51ZTtpZigibiI9PUQu''@;'; put 'put ''dCYmbnVsbCE9RC52KWVlPSIiK0QudjtlbHNlIGlmKCJiIj09RC50KWVlPUQudj8iVFJVRSI6IkZBTFNFIjtlbHNlIGlmKHZvaWQgMCE9PUQudyllZT0iJyIrRC53O2Vsc2V7aWYodm9pZCAwPT09RC52KWNvbnRpbnVlO2VlPSJzIj09RC50PyInIitELnY6IiIrRC52fX1NZVtNZS5sZW5ndGhd''@;'; put 'put ''PVArIj0iK2VlfXJldHVybiBNZX1mdW5jdGlvbiBlQyh3LFAsRCl7dmFyIGVlPUR8fHt9LG9lPSshZWUuc2tpcEhlYWRlcixnZT13fHx7fSxfZT0wLHZlPTA7aWYoZ2UmJm51bGwhPWVlLm9yaWdpbilpZigibnVtYmVyIj09dHlwZW9mIGVlLm9yaWdpbilfZT1lZS5vcmlnaW47ZWxzZXt2YXIg''@;'; put 'put ''TWU9InN0cmluZyI9PXR5cGVvZiBlZS5vcmlnaW4/Y2EoZWUub3JpZ2luKTplZS5vcmlnaW47X2U9TWUucix2ZT1NZS5jfXZhciBqZSxVZT1KU09OLnBhcnNlKCd7InMiOiB7ImMiOjAsICJyIjowfSwgImUiOiB7ImMiOjAsICJyIjowfX0nKTtpZihVZS5lLmM9dmUsVWUuZS5yPV9lK1AubGVu''@;'; put 'put ''Z3RoLTErb2UsZ2VbIiFyZWYiXSl7dmFyIFhlPVBpKGdlWyIhcmVmIl0pO1VlLmUuYz1NYXRoLm1heChVZS5lLmMsWGUuZS5jKSxVZS5lLnI9TWF0aC5tYXgoVWUuZS5yLFhlLmUuciksLTE9PV9lJiYoVWUuZS5yPShfZT1YZS5lLnIrMSkrUC5sZW5ndGgtMStvZSl9ZWxzZS0xPT1fZSYmKF9l''@;'; put 'put ''PTAsVWUuZS5yPVAubGVuZ3RoLTErb2UpO3ZhciBpdD1lZS5oZWFkZXJ8fFtdLGZ0PTA7UC5mb3JFYWNoKGZ1bmN0aW9uKHV0LHd0KXttdCh1dCkuZm9yRWFjaChmdW5jdGlvbihIdCl7LTE9PShmdD1pdC5pbmRleE9mKEh0KSkmJihpdFtmdD1pdC5sZW5ndGhdPUh0KTt2YXIga3Q9dXRbSHRd''@;'; put 'put ''LFR0PSJ6IixZdD0iIixnbj1waSh7Yzp2ZStmdCxyOl9lK3d0K29lfSk7aWYoamU9ZWEuc2hlZXRfZ2V0X2NlbGwoZ2UsZ24pLCFrdHx8Im9iamVjdCIhPXR5cGVvZiBrdHx8a3QgaW5zdGFuY2VvZiBEYXRlKXtpZigibnVtYmVyIj09dHlwZW9mIGt0P1R0PSJuIjoiYm9vbGVhbiI9PXR5cGVv''@;'; put 'put ''ZiBrdD9UdD0iYiI6InN0cmluZyI9PXR5cGVvZiBrdD9UdD0icyI6a3QgaW5zdGFuY2VvZiBEYXRlPyhUdD0iZCIsZWUuY2VsbERhdGVzfHwoVHQ9Im4iLGt0PXFlKGt0KSksWXQ9amUueiYmUy5pc19kYXRlKGplLnopP2plLno6ZWUuZGF0ZU5GfHxTLl90YWJsZVsxNF0pOm51bGw9PT1rdCYm''@;'; put 'put ''ZWUubnVsbEVycm9yJiYoVHQ9ImUiLGt0PTApLGplPyhqZS50PVR0LGplLnY9a3QsZGVsZXRlIGplLncsZGVsZXRlIGplLlIsWXQmJihqZS56PVl0KSk6Z2VbZ25dPWplPXt0OlR0LHY6a3R9LFl0JiYoamUuej1ZdCksamUmJmplLmgpdHJ5e2lmKGplLlI9WWMuaHRtbF90b19ycyhqZS5oKSwh''@;'; put 'put ''amUudil7amUudj0iIjtmb3IodmFyIHFuPTA7cW48amUuUi5sZW5ndGg7KytxbilqZS52Kz1qZS5SW3FuXS52fHwiIn19Y2F0Y2h7fX1lbHNlIGdlW2duXT1rdH0pfSksVWUuZS5jPU1hdGgubWF4KFVlLmUuYyx2ZStpdC5sZW5ndGgtMSk7dmFyIE10PVZhKF9lKTtpZihvZSlmb3IoZnQ9MDtm''@;'; put 'put ''dDxpdC5sZW5ndGg7KytmdClnZVtCYShmdCt2ZSkrTXRdPXt0OiJzIix2Oml0W2Z0XX07cmV0dXJuIGdlWyIhcmVmIl09Vm8oVWUpLGdlfXZhciBlYT17ZW5jb2RlX2NvbDpCYSxlbmNvZGVfcm93OlZhLGVuY29kZV9jZWxsOnBpLGVuY29kZV9yYW5nZTpWbyxkZWNvZGVfY29sOmMyLGRlY29k''@;'; put 'put ''ZV9yb3c6UTAsc3BsaXRfY2VsbDpmdW5jdGlvbiB1bSh3KXtyZXR1cm4gdy5yZXBsYWNlKC8oXCQ/W0EtWl0qKShcJD9cZCopLywiJDEsJDIiKS5zcGxpdCgiLCIpfSxkZWNvZGVfY2VsbDpjYSxkZWNvZGVfcmFuZ2U6S2EsZm9ybWF0X2NlbGw6bWMsZ2V0X2Zvcm11bGFlOm12LG1ha2VfY3N2''@;'; put 'put ''OktzLG1ha2VfanNvbjpwdixtYWtlX2Zvcm11bGFlOm12LGh0bWxfdG9fcnM6WWMuaHRtbF90b19ycyxzaGVldF9hZGRfYW9hOnYwLHNoZWV0X2FkZF9qc29uOmVDLHNoZWV0X2FkZF9kb206YU8sYW9hX3RvX3NoZWV0OiQxLGpzb25fdG9fc2hlZXQ6ZnVuY3Rpb24gUmVlKHcsUCl7cmV0dXJu''@;'; put 'put ''IGVDKG51bGwsdyxQKX0sdGFibGVfdG9fc2hlZXQ6V2MsdGFibGVfdG9fYm9vazpmdW5jdGlvbiBncih3LFApe3JldHVybiBaZihXYyh3LFApLFApfSxzaGVldF90b19jc3Y6S3Msc2hlZXRfdG9fdHh0Om1CLHNoZWV0X3RvX2pzb246cHYsc2hlZXRfdG9faHRtbDpZYy5mcm9tX3NoZWV0LHNo''@;'; put 'put ''ZWV0X3RvX2Zvcm11bGFlOm12LHNoZWV0X3RvX3Jvd19vYmplY3RfYXJyYXk6cHZ9O2Z1bmN0aW9uIENPKHcsUCxELGVlLG9lKXt2YXIgZ2U7aWYody5zdHlsZSYmISh3Ll9yYW5nZSYmKGdlPSJzdHJpbmciPT10eXBlb2Ygdy5fcmFuZ2U/SC51dGlscy5kZWNvZGVfcmFuZ2Uody5fcmFuZ2Up''@;'; put 'put ''OncuX3JhbmdlLEQuYz5nZS5lLmN8fEQuYzxnZS5zLmN8fEQucj5nZS5lLnJ8fEQucjxnZS5zLnIpKSYmZ2Upe3ZhciBfZT13LnN0eWxlLnN0eWxlO2lmKF9lKXtfZS53aG9sZVRhYmxlJiZlYS5hcHBseV9zdHlsZV9kZWx0YShlZSxfZS53aG9sZVRhYmxlKTtlOmlmKF9lLmhlYWRlclJvdylp''@;'; put 'put ''ZihvZSl7aWYoRC5yIT1nZS5zLnIpYnJlYWsgZTtobih3LnN0eWxlLmNvbGhlYWQpfHxlYS5hcHBseV9zdHlsZV9kZWx0YShlZSxfZS5oZWFkZXJSb3cpfWVsc2V7aWYoRC5yIT1nZS5zLnIpYnJlYWsgZTtobih3LmhlYWRlcil8fGVhLmFwcGx5X3N0eWxlX2RlbHRhKGVlLF9lLmhlYWRlclJv''@;'; put 'put ''dyl9fX19ZWEudGVzdF9wYXNzd29yZD1mdW5jdGlvbiBjTyh3LFApe3ZhciBEPUJ1ZmZlci5mcm9tKHcuc2FsdCwiYmFzZTY0IiksZWU9dy5hbGdvLG9lPXRzKEJ1ZmZlci5jb25jYXQoW0QsQnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxQKSldKSxlZSksZ2U9QnVmZmVy''@;'; put 'put ''LmFsbG9jKDQpO3NzKGdlLDApO2Zvcih2YXIgX2U9MDtfZTx3LnNwaW47KytfZSlnZS5sPTAsZ2Uud3JpdGVfc2hpZnQoNCxfZSksb2U9dHMoQnVmZmVyLmNvbmNhdChbb2UsZ2VdKSxlZSk7dmFyIHZlPUJ1ZmZlci5mcm9tKHcuaGFzaCwiYmFzZTY0Iik7cmV0dXJuIDA9PW9lLmNvbXBhcmUo''@;'; put 'put ''dmUpfSxlYS5oYXNoX3Bhc3N3b3JkPWZ1bmN0aW9uIFd3KHcpe3ZhciBQPXthbGdvOiJTSEEtNTEyIixzYWx0OiJVMmhsWlhSS1V5NWpiMjB2ZUd4emVBPT0iLHNwaW46MWUzfSxEPUJ1ZmZlci5mcm9tKFAuc2FsdCwiYmFzZTY0IiksZWU9UC5hbGdvLG9lPXRzKEJ1ZmZlci5jb25jYXQoW0Qs''@;'; put 'put ''QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCx3KSldKSxlZSksZ2U9QnVmZmVyLmFsbG9jKDQpO3NzKGdlLDApO2Zvcih2YXIgX2U9MDtfZTxQLnNwaW47KytfZSlnZS5sPTAsZ2Uud3JpdGVfc2hpZnQoNCxfZSksb2U9dHMoQnVmZmVyLmNvbmNhdChbb2UsZ2VdKSxlZSk7''@;'; put 'put ''cmV0dXJuIFAuaGFzaD1vZS50b1N0cmluZygiYmFzZTY0IiksUH0sZWEuc2hlZXRfc2V0X3JhbmdlX3N0eWxlPWZ1bmN0aW9uKHcsUCxEKXtpZihEKXt2YXIgZWU9InN0cmluZyI9PXR5cGVvZiBQP1BpKFApOlA7bnVsbCE9ZWUuciYmbnVsbCE9ZWUuYyYmKGVlPXtzOmVlLGU6ZWV9KTt2YXIg''@;'; put 'put ''dmUsb2U9ZWUucy5yLGdlPTAsX2U9IiIsTWU9S2Eod1siIXJlZiJdfHwiQTEiKTtNZS5zLnI+ZWUucy5yJiYoTWUucy5yPWVlLnMuciksTWUucy5jPmVlLnMuYyYmKE1lLnMuYz1lZS5zLmMpLE1lLmUucjxlZS5lLnImJihNZS5lLnI9ZWUuZS5yKSxNZS5lLmM8ZWUuZS5jJiYoTWUuZS5jPWVl''@;'; put 'put ''LmUuYyksd1siIXJlZiJdPVZvKE1lKTtmb3IodmFyIFVlPUFycmF5LmlzQXJyYXkodyk7b2U8PWVlLmUucjsrK29lKWZvcihnZT1lZS5zLmM7Z2U8PWVlLmUuYzsrK2dlKVVlPyh3W29lXXx8KHdbb2VdPVtdKSx3W29lXVtnZV18fCh3W29lXVtnZV09e3Q6InoifSksdmU9d1tvZV1bZ2VdKToo''@;'; put 'put ''d1tfZT1waSh7cjpvZSxjOmdlfSldfHwod1tfZV09e3Q6InoifSksdmU9d1tfZV0pLHZlLnN8fCh2ZS5zPXt9KSxPYmplY3Qua2V5cyhEKS5mb3JFYWNoKGplKSx2ZS5zLnBhdHRlcm5UeXBlJiYhdmUucy5mZ0NvbG9yJiYoZGVsZXRlIHZlLnMucGF0dGVyblR5cGUsZGVsZXRlIHZlLnMuYmdD''@;'; put 'put ''b2xvciksKHZlLnMuZmdDb2xvcnx8dmUucy5iZ0NvbG9yKSYmIm5vbmUiPT0odmUucy5wYXR0ZXJuVHlwZXx8Im5vbmUiKSYmKHZlLnMucGF0dGVyblR5cGU9InNvbGlkIik7aWYob2U9ZWUucy5yLEQudG9wfHxudWxsPT09RC50b3ApZm9yKGdlPWVlLnMuYztnZTw9ZWUuZS5jOysrZ2Upe2lm''@;'; put 'put ''KFVlKXtpZighd1tvZV0pY29udGludWU7dmU9d1tvZV1bZ2VdfWVsc2UgX2U9cGkoe3I6b2UsYzpnZX0pLHZlPXdbX2VdO3ZlJiYobnVsbD09PUQudG9wP2RlbGV0ZSB2ZS5zLnRvcDp2ZS5zLnRvcD1KdChELnRvcCkpfWlmKG9lPWVlLmUucixELmJvdHRvbXx8bnVsbD09PUQuYm90dG9tKWZv''@;'; put 'put ''cihnZT1lZS5zLmM7Z2U8PWVlLmUuYzsrK2dlKXtpZihVZSl7aWYoIXdbb2VdKWNvbnRpbnVlO3ZlPXdbb2VdW2dlXX1lbHNlIF9lPXBpKHtyOm9lLGM6Z2V9KSx2ZT13W19lXTt2ZSYmKG51bGw9PT1ELmJvdHRvbT9kZWxldGUgdmUucy5ib3R0b206dmUucy5ib3R0b209SnQoRC5ib3R0b20p''@;'; put 'put ''KX1pZihnZT1lZS5zLmMsRC5sZWZ0fHxudWxsPT09RC5sZWZ0KWZvcihvZT1lZS5zLnI7b2U8PWVlLmUucjsrK29lKXtpZihVZSl7aWYoIXdbb2VdKWNvbnRpbnVlO3ZlPXdbb2VdW2dlXX1lbHNlIF9lPXBpKHtyOm9lLGM6Z2V9KSx2ZT13W19lXTt2ZSYmKG51bGw9PT1ELmxlZnQ/ZGVsZXRl''@;'; put 'put ''IHZlLnMubGVmdDp2ZS5zLmxlZnQ9SnQoRC5sZWZ0KSl9aWYoZ2U9ZWUuZS5jLEQucmlnaHR8fG51bGw9PT1ELnJpZ2h0KWZvcihvZT1lZS5zLnI7b2U8PWVlLmUucjsrK29lKXtpZihVZSl7aWYoIXdbb2VdKWNvbnRpbnVlO3ZlPXdbb2VdW2dlXX1lbHNlIF9lPXBpKHtyOm9lLGM6Z2V9KSx2''@;'; put 'put ''ZT13W19lXTt2ZSYmKG51bGw9PT1ELnJpZ2h0P2RlbGV0ZSB2ZS5zLnJpZ2h0OnZlLnMucmlnaHQ9SnQoRC5yaWdodCkpfX1mdW5jdGlvbiBqZShYZSl7aWYoInRvcCIhPVhlJiYiYm90dG9tIiE9WGUmJiJsZWZ0IiE9WGUmJiJyaWdodCIhPVhlKXtpZigieiI9PVhlKXJldHVybiB2b2lkKHZl''@;'; put 'put ''Lno9RC56KTtpZigiYWxpZ25tZW50Ij09WGUpcmV0dXJuIHZvaWQodmUuc1tYZV0/T2JqZWN0LmtleXMoRFtYZV0pLmZvckVhY2goZnVuY3Rpb24oaXQpe3ZlLnNbWGVdW2l0XT1EW1hlXVtpdF19KTp2ZS5zW1hlXT1KdChEW1hlXSkpO2lmKCJpbmNvbCI9PVhlKXJldHVybiBnZT5lZS5zLmMm''@;'; put 'put ''JihudWxsPT09RC5sZWZ0P2RlbGV0ZSB2ZS5zLmxlZnQ6dmUucy5sZWZ0PSJvYmplY3QiPT10eXBlb2YgRFtYZV0/SnQoRFtYZV0pOkRbWGVdKSx2b2lkKGdlPGVlLmUuYyYmKG51bGw9PT1ELnJpZ2h0P2RlbGV0ZSB2ZS5zLnJpZ2h0OnZlLnMucmlnaHQ9Im9iamVjdCI9PXR5cGVvZiBEW1hl''@;'; put 'put ''XT9KdChEW1hlXSk6RFtYZV0pKTtpZigiaW5yb3ciPT1YZSlyZXR1cm4gb2U+ZWUucy5yJiYobnVsbD09PUQudG9wP2RlbGV0ZSB2ZS5zLnRvcDp2ZS5zLnRvcD0ib2JqZWN0Ij09dHlwZW9mIERbWGVdP0p0KERbWGVdKTpEW1hlXSksdm9pZChvZTxlZS5lLnImJihudWxsPT09RC5ib3R0b20/''@;'; put 'put ''ZGVsZXRlIHZlLnMuYm90dG9tOnZlLnMuYm90dG9tPSJvYmplY3QiPT10eXBlb2YgRFtYZV0/SnQoRFtYZV0pOkRbWGVdKSk7bnVsbD09PURbWGVdP2RlbGV0ZSB2ZS5zW1hlXTp2ZS5zW1hlXT1EW1hlXSYmQXJyYXkuaXNBcnJheShEW1hlXSk/RFtYZV0uc2xpY2UoKS5tYXAoZnVuY3Rpb24o''@;'; put 'put ''aXQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgaXQ/SnQoaXQpOml0fSk6Im9iamVjdCI9PXR5cGVvZiBEW1hlXT9KdChEW1hlXSk6RFtYZV19fX0sZWEuYXBwbHlfc3R5bGVfZGVsdGE9ZnVuY3Rpb24odyxQKXtbInN6IiwiYm9sZCIsIml0YWxpYyIsInVuZGVybGluZSIsInN0cmlrZSIsIm5h''@;'; put 'put ''bWUiLCJ2YWxpZ24iXS5mb3JFYWNoKGZ1bmN0aW9uKEQpe3ZhciBlZT1EOyJiZ0NvbG9yIj09RD9lZT0iZmdDb2xvciI6ImZnQ29sb3IiPT1EJiYoZWU9ImJnQ29sb3IiKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUCxEKSYmKG51bGw9PT1QW0RdP2RlbGV0ZSB3W2Vl''@;'; put 'put ''XTpudWxsIT1QW0RdJiYod1tlZV09UFtEXSkpfSksWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJhbGlnbm1lbnQiLCJwcm90ZWN0aW9uIiwiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmZvckVhY2goZnVuY3Rpb24oRCl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eS5jYWxsKFAsRCkmJihudWxsPT09UFtEXT9kZWxldGUgd1tEXTpudWxsIT1QW0RdJiYod1tEXT1KdChQW0RdKSkpfSl9LGVhLmdldF9jb21wdXRlZF9zdHlsZT1mdW5jdGlvbih3LFApeyJzdHJpbmciPT10eXBlb2YgUCYmKFA9SC51dGlscy5kZWNvZGVfY2VsbChQKSk7dmFyIEQ9QXJyYXku''@;'; put 'put ''aXNBcnJheSh3KT8od1tQLnJdfHxbXSlbUC5jXTp3W0gudXRpbHMuZW5jb2RlX2NlbGwoUCldLGVlPUp0KEQmJkQuc3x8e30pO3JldHVybiB3WyIhdGFibGVzIl0mJndbIiF0YWJsZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKG9lKXtDTyhvZSwwLFAsZWUpfSksd1siIXBpdm90cyJdJiZ3WyIhcGl2''@;'; put 'put ''b3RzIl0uZm9yRWFjaChmdW5jdGlvbihvZSl7Q08ob2UsMCxQLGVlLCEwKX0pLGVlfTt2YXIgU089e307ZWEuY2VsbF9hcnJheV90b19jc3Zfcm93PWZ1bmN0aW9uKHcsUCl7dmFyIEQ9UD8/e30sZWU9dm9pZCAwIT09RC5GUz9ELkZTOiIsIixvZT1lZS5jaGFyQ29kZUF0KDApLGdlPXZvaWQg''@;'; put 'put ''MCE9PUQuUlM/RC5SUzoiXG4iLF9lPWdlLmNoYXJDb2RlQXQoMCksdmU9U09bZWVdfHwoU09bZWVdPW5ldyBSZWdFeHAoKCJ8Ij09ZWU/IlxcfCI6ZWUpKyIrJCIpKSxNZT1mdW5jdGlvbiBxcCh3LFAsRCxlZSxvZSl7Zm9yKHZhciBnZT0hMCxfZT1bXSx2ZT0iIixNZT0wO01lPD13Lmxlbmd0''@;'; put 'put ''aC0xOysrTWUpe3ZhciBqZT13W01lXTtpZihudWxsPT1qZSl2ZT0iIjtlbHNlIGlmKG51bGwhPWplLnYpe2dlPSExLHZlPSIiK21jKGplLG51bGwsb2UpO2Zvcih2YXIgVWU9MCxYZT0wO1VlIT09dmUubGVuZ3RoOysrVWUpaWYoKFhlPXZlLmNoYXJDb2RlQXQoVWUpKT09PVB8fFhlPT09RHx8''@;'; put 'put ''MzQ9PT1YZSl7dmU9JyInK3ZlLnJlcGxhY2UoZGQsJyIiJykrJyInO2JyZWFrfSJJRCI9PXZlJiYodmU9JyJJRCInKX1lbHNlIG51bGw9PWplLmZ8fGplLkY/dmU9IiI6KGdlPSExLCh2ZT0iPSIramUuZikuaW5kZXhPZigiLCIpPj0wJiYodmU9JyInK3ZlLnJlcGxhY2UoZGQsJyIiJykrJyIn''@;'; put 'put ''KSk7X2UucHVzaCh2ZSl9cmV0dXJuITE9PT1vZS5ibGFua3Jvd3MmJmdlP251bGw6X2Uuam9pbihlZSl9KHcsb2UsX2UsZWUsRCk7cmV0dXJuIEQuc3RyaXAmJihNZT1NZS5yZXBsYWNlKHZlLCIiKSksTWUrZ2V9LGZ1bmN0aW9uKHcpe2Z1bmN0aW9uIEQoZ2UsX2UsdmUpe3JldHVybiBudWxs''@;'; put 'put ''IT1nZVtfZV0/Z2VbX2VdOmdlW19lXT12ZX1mdW5jdGlvbiBlZShnZSxfZSx2ZSl7aWYoInN0cmluZyI9PXR5cGVvZiBfZSl7aWYoQXJyYXkuaXNBcnJheShnZSkpe3ZhciBNZT1jYShfZSk7cmV0dXJuIGdlW01lLnJdfHwoZ2VbTWUucl09W10pLGdlW01lLnJdW01lLmNdfHwoZ2VbTWUucl1b''@;'; put 'put ''TWUuY109e3Q6InoifSl9cmV0dXJuIGdlW19lXXx8KGdlW19lXT17dDoieiJ9KX1yZXR1cm4gZWUoZ2UscGkoIm51bWJlciIhPXR5cGVvZiBfZT9fZTp7cjpfZSxjOnZlfHwwfSkpfXcuY29uc3RzPXcuY29uc3RzfHx7fSx3LnNoZWV0X2dldF9jZWxsPWVlLHcuYm9va19uZXc9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fSx3LmJvb2tfYXBwZW5kX3NoZWV0PWZ1bmN0aW9uKGdlLF9lLHZlKXtpZighdmUpZm9yKHZhciBNZT0xO01lPD02NTUzNSYmLTEhPWdlLlNoZWV0TmFtZXMuaW5kZXhPZih2ZT0iU2hlZXQiK01lKTsrK01lKTtpZihFdyh2ZSksZ2Uu''@;'; put 'put ''U2hlZXROYW1lcy5pbmRleE9mKHZlKT49MCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzaGVldCB3aXRoIG5hbWUgfCIrdmUrInwgYWxyZWFkeSBleGlzdHMhIik7Z2UuU2hlZXROYW1lcy5wdXNoKHZlKSxnZS5TaGVldHNbdmVdPV9lfSx3LmJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHk9ZnVuY3Rp''@;'; put 'put ''b24oZ2UsX2UsdmUpe0QoZ2UsIldvcmtib29rIix7fSksRChnZS5Xb3JrYm9vaywiU2hlZXRzIixbXSk7dmFyIE1lPWZ1bmN0aW9uIG9lKGdlLF9lKXtpZigibnVtYmVyIj09dHlwZW9mIF9lKXtpZihfZT49MCYmZ2UuU2hlZXROYW1lcy5sZW5ndGg+X2UpcmV0dXJuIF9lO3Rocm93IG5ldyBF''@;'; put 'put ''cnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgIyAiK19lKX1pZigic3RyaW5nIj09dHlwZW9mIF9lKXt2YXIgdmU9Z2UuU2hlZXROYW1lcy5pbmRleE9mKF9lKTtpZih2ZT4tMSlyZXR1cm4gdmU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzaGVldCBuYW1lIHwiK19lKyJ8Iil9dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJDYW5ub3QgZmluZCBzaGVldCB8IitfZSsifCIpfShnZSxfZSk7c3dpdGNoKEQoZ2UuV29ya2Jvb2suU2hlZXRzLE1lLHt9KSx2ZSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkJhZCBzaGVldCB2aXNpYmlsaXR5IHNldHRp''@;'; put 'put ''bmcgIit2ZSl9Z2UuV29ya2Jvb2suU2hlZXRzW01lXS5IaWRkZW49dmV9LGZ1bmN0aW9uIFAoZ2Upe2dlLmZvckVhY2goZnVuY3Rpb24oX2Upe3cuY29uc3RzW19lWzBdXT1fZVsxXX0pfShbWyJTSEVFVF9WSVNJQkxFIiwwXSxbIlNIRUVUX0hJRERFTiIsMV0sWyJTSEVFVF9WRVJZX0hJRERF''@;'; put 'put ''TiIsMl1dKSx3LmNlbGxfc2V0X251bWJlcl9mb3JtYXQ9ZnVuY3Rpb24oZ2UsX2Upe3JldHVybiBnZS56PV9lLGdlfSx3LmNlbGxfc2V0X2h5cGVybGluaz1mdW5jdGlvbihnZSxfZSx2ZSl7cmV0dXJuIF9lPyhnZS5sPXtUYXJnZXQ6X2V9LHZlJiYoZ2UubC5Ub29sdGlwPXZlKSxnZS5zfHwo''@;'; put 'put ''Z2Uucz17fSksZ2Uucy5jb2xvcj17dGhlbWU6MTB9KTooZGVsZXRlIGdlLmwsZ2UucyYmZ2Uucy5jb2xvciYmMTA9PWdlLnMuY29sb3IudGhlbWUmJmRlbGV0ZSBnZS5zLmNvbG9yKSxnZX0sdy5jZWxsX3NldF9pbnRlcm5hbF9saW5rPWZ1bmN0aW9uKGdlLF9lLHZlKXtyZXR1cm4gdy5jZWxs''@;'; put 'put ''X3NldF9oeXBlcmxpbmsoZ2UsIiMiK19lLHZlKX0sdy5jZWxsX2FkZF9jb21tZW50PWZ1bmN0aW9uKGdlLF9lLHZlKXtnZS5jfHwoZ2UuYz1bXSksZ2UuYy5wdXNoKHt0Ol9lLGE6dmV8fCJTaGVldEpTIn0pfSx3LnNoZWV0X3NldF9hcnJheV9mb3JtdWxhPWZ1bmN0aW9uKGdlLF9lLHZlKXtm''@;'; put 'put ''b3IodmFyIE1lPSJzdHJpbmciIT10eXBlb2YgX2U/X2U6UGkoX2UpLGplPSJzdHJpbmciPT10eXBlb2YgX2U/X2U6Vm8oX2UpLFVlPU1lLnMucjtVZTw9TWUuZS5yOysrVWUpZm9yKHZhciBYZT1NZS5zLmM7WGU8PU1lLmUuYzsrK1hlKXt2YXIgaXQ9ZWUoZ2UsVWUsWGUpO2l0LnQ9Im4iLGl0''@;'; put 'put ''LkY9amUsZGVsZXRlIGl0LnYsVWU9PU1lLnMuciYmWGU9PU1lLnMuYyYmKGl0LmY9dmUpfXJldHVybiBnZX19KGVhKSxkZSYmZnVuY3Rpb24oKXt2YXIgdz1UKDUxNzkzKS5SZWFkYWJsZTtILnN0cmVhbT17dG9fanNvbjpmdW5jdGlvbihvZSxnZSl7dmFyIF9lPXcoe29iamVjdE1vZGU6ITB9''@;'; put 'put ''KTtpZihudWxsPT1vZXx8bnVsbD09b2VbIiFyZWYiXSlyZXR1cm4gX2UucHVzaChudWxsKSxfZTt2YXIgdmU9e3Q6Im4iLHY6MH0sTWU9MCxqZT0xLFVlPVtdLFhlPTAsaXQ9IiIsZnQ9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSxNdD1nZXx8e30sdXQ9bnVsbCE9TXQucmFuZ2U/TXQucmFu''@;'; put 'put ''Z2U6b2VbIiFyZWYiXTtzd2l0Y2goMT09PU10LmhlYWRlcj9NZT0xOiJBIj09PU10LmhlYWRlcj9NZT0yOkFycmF5LmlzQXJyYXkoTXQuaGVhZGVyKSYmKE1lPTMpLHR5cGVvZiB1dCl7Y2FzZSJzdHJpbmciOmZ0PVBpKHV0KTticmVhaztjYXNlIm51bWJlciI6KGZ0PVBpKG9lWyIhcmVmIl0p''@;'; put 'put ''KS5zLnI9dXQ7YnJlYWs7ZGVmYXVsdDpmdD11dH1NZT4wJiYoamU9MCk7dmFyIHd0PVZhKGZ0LnMuciksSHQ9W10sa3Q9MCxUdD1BcnJheS5pc0FycmF5KG9lKSxZdD1mdC5zLnIsZ249MCxxbj0wO2ZvcihUdCYmIW9lW1l0XSYmKG9lW1l0XT1bXSksZ249ZnQucy5jO2duPD1mdC5lLmM7Kytn''@;'; put 'put ''bilzd2l0Y2goSHRbZ25dPUJhKGduKSx2ZT1UdD9vZVtZdF1bZ25dOm9lW0h0W2duXSt3dF0sTWUpe2Nhc2UgMTpVZVtnbl09Z24tZnQucy5jO2JyZWFrO2Nhc2UgMjpVZVtnbl09SHRbZ25dO2JyZWFrO2Nhc2UgMzpVZVtnbl09TXQuaGVhZGVyW2duLWZ0LnMuY107YnJlYWs7ZGVmYXVsdDpm''@;'; put 'put ''b3IobnVsbD09dmUmJih2ZT17dzoiX19FTVBUWSIsdDoicyJ9KSxpdD1YZT1tYyh2ZSxudWxsLE10KSxrdD0wLHFuPTA7cW48VWUubGVuZ3RoOysrcW4pVWVbcW5dPT1pdCYmKGl0PVhlKyJfIisgKytrdCk7VWVbZ25dPWl0fXJldHVybiBZdD1mdC5zLnIramUsX2UuX3JlYWQ9ZnVuY3Rpb24o''@;'; put 'put ''KXtpZihZdD5mdC5lLnIpcmV0dXJuIF9lLnB1c2gobnVsbCk7Zm9yKDtZdDw9ZnQuZS5yOyl7dmFyIGZuPV9PKG9lLGZ0LFl0LEh0LE1lLFVlLFR0LE10KTtpZigrK1l0LCExPT09Zm4uaXNlbXB0eXx8KDE9PT1NZT8hMSE9PU10LmJsYW5rcm93czpNdC5ibGFua3Jvd3MpKXtfZS5wdXNoKGZu''@;'; put 'put ''LnJvdyk7YnJlYWt9fX0sX2V9LHRvX2h0bWw6ZnVuY3Rpb24ob2UsZ2Upe3ZhciBfZT13KCksdmU9Z2V8fHt9LGplPW51bGwhPXZlLmZvb3Rlcj92ZS5mb290ZXI6WWMuRU5EO19lLnB1c2gobnVsbCE9dmUuaGVhZGVyP3ZlLmhlYWRlcjpZYy5CRUdJTik7dmFyIFVlPUthKG9lWyIhcmVmIl0p''@;'; put 'put ''O3ZlLmRlbnNlPUFycmF5LmlzQXJyYXkob2UpLF9lLnB1c2goWWMuX3ByZWFtYmxlKG9lLFVlLHZlKSk7dmFyIFhlPVVlLnMucixpdD0hMSxmdD1bXTtyZXR1cm4gX2UuX3JlYWQ9ZnVuY3Rpb24oKXtpZihYZT5VZS5lLnIpcmV0dXJuIGl0fHwoaXQ9ITAsX2UucHVzaCgiPC90YWJsZT4iK2pl''@;'; put 'put ''KSksX2UucHVzaChudWxsKTtmb3IoO1hlPD1VZS5lLnI7KXtfZS5wdXNoKFljLl9yb3cob2UsVWUsWGUsdmUsZnQsIiIpKSwrK1hlO2JyZWFrfX0sX2V9LHRvX2NzdjpmdW5jdGlvbihvZSxnZSl7dmFyIF9lPXcoKSx2ZT1nZT8/e307aWYobnVsbD09b2V8fG51bGw9PW9lWyIhcmVmIl0pcmV0''@;'; put 'put ''dXJuIF9lLnB1c2gobnVsbCksX2U7dmFyIE1lPVBpKG9lWyIhcmVmIl0pLGplPXZvaWQgMCE9PXZlLkZTP3ZlLkZTOiIsIixVZT1qZS5jaGFyQ29kZUF0KDApLFhlPXZvaWQgMCE9PXZlLlJTP3ZlLlJTOiJcbiIsaXQ9WGUuY2hhckNvZGVBdCgwKSxmdD1uZXcgUmVnRXhwKCgifCI9PWplPyJc''@;'; put 'put ''XHwiOmplKSsiKyQiKSxNdD0iIix1dD1bXTt2ZS5kZW5zZT1BcnJheS5pc0FycmF5KG9lKTtmb3IodmFyIHd0PXZlLnNraXBIaWRkZW4mJm9lWyIhY29scyJdfHxbXSxIdD12ZS5za2lwSGlkZGVuJiZvZVsiIXJvd3MiXXx8W10sa3Q9TWUucy5jO2t0PD1NZS5lLmM7KytrdCkod3Rba3RdfHx7''@;'; put 'put ''fSkuaGlkZGVufHwodXRba3RdPUJhKGt0KSk7dmFyIFR0PU1lLnMucixZdD0hMTtyZXR1cm4gX2UuX3JlYWQ9ZnVuY3Rpb24oKXtpZighWXQpcmV0dXJuIFl0PSEwLF9lLnB1c2goIlx1ZmVmZiIpO2Zvcig7VHQ8PU1lLmUucjspaWYoKytUdCwhKEh0W1R0LTFdfHx7fSkuaGlkZGVuJiZudWxs''@;'; put 'put ''IT0oTXQ9d08ob2UsTWUsVHQtMSx1dCxVZSxpdCxqZSx2ZSkpKXt2ZS5zdHJpcCYmKE10PU10LnJlcGxhY2UoZnQsIiIpKSxfZS5wdXNoKE10K1hlKTticmVha31yZXR1cm4gVHQ+TWUuZS5yP19lLnB1c2gobnVsbCk6dm9pZCAwfSxfZX19fSgpLEgucGFyc2VfeGxzY2ZiPW1nLEgucGFyc2Vf''@;'; put 'put ''emlwPW1PLEgucmVhZD1WMixILnJlYWRGaWxlPVh3LEgucmVhZEZpbGVTeW5jPVh3LEgud3JpdGU9YmcsSC53cml0ZUZpbGU9X2csSC53cml0ZUZpbGVTeW5jPV9nLEgud3JpdGVGaWxlQXN5bmM9ZnVuY3Rpb24gQjIodyxQLEQsZWUpe3ZhciBvZT1EfHx7fTtvZS50eXBlPSJmaWxlIixvZS5m''@;'; put 'put ''aWxlPXcsbTEob2UpLG9lLnR5cGU9ImJ1ZmZlciI7dmFyIGdlPWVlO3JldHVybiBnZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwoZ2U9RCksTGUud3JpdGVGaWxlKHcsYmcoUCxvZSksZ2UpfSxILnNldF9kYXRlX3N0eWxlPWZ1bmN0aW9uICRlKHcpe3N3aXRjaCh3KXtjYXNlIDA6RWUoKTticmVh''@;'; put 'put ''aztjYXNlIDE6IWZ1bmN0aW9uIERlKCl7dmFyIHc9bmV3IERhdGU7bnQ9ZXQuZ2V0VGltZSgpKzZlNCoody5nZXRUaW1lem9uZU9mZnNldCgpLWV0LmdldFRpbWV6b25lT2Zmc2V0KCkpO3ZhciBQPXcuZ2V0VGltZXpvbmVPZmZzZXQoKTtxZT1mdW5jdGlvbihlZSxvZSl7dmFyIGdlPWVlLmdl''@;'; put 'put ''dFRpbWUoKTtyZXR1cm4gb2UmJihnZS09MTI2MzE2OGU1KSwoZ2UtKGV0LmdldFRpbWUoKSs2ZTQqKGVlLmdldFRpbWV6b25lT2Zmc2V0KCktZXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpKS84NjRlNX0saHQ9ZnVuY3Rpb24oZWUpe3ZhciBvZT1uZXcgRGF0ZTtyZXR1cm4gb2Uuc2V0VGltZSgy''@;'; put 'put ''NCplZSo2MCo2MCoxZTMrbnQpLG9lLmdldFRpbWV6b25lT2Zmc2V0KCkhPT1QJiZvZS5zZXRUaW1lKG9lLmdldFRpbWUoKSs2ZTQqKG9lLmdldFRpbWV6b25lT2Zmc2V0KCktUCkpLG9lfX0oKX19LEgudXRpbHM9ZWEsSC5TU0Y9Uyx0eXBlb2YgTmU8InUiJiYoSC5DRkI9TmUpfSh6ZSl9LDI3''@;'; put 'put ''NDE0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBzZT16ZTtzZS5iaWdudW09VCg1MDQ3KSxzZS5kZWZpbmU9VCg5MDMwMikuZGVmaW5lLHNlLmJhc2U9VCg0MDUxMCksc2UuY29uc3RhbnRzPVQoNDQxNTUpLHNlLmRlY29kZXJzPVQoNzEzMDEpLHNlLmVuY29kZXJzPVQoMjM2OTMp''@;'; put 'put ''fSw5MDMwMjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7Y29uc3Qgc2U9VCgyMzY5Myksaz1UKDcxMzAxKSx2PVQoNjY2OTgpO2Z1bmN0aW9uIEgoQixMKXt0aGlzLm5hbWU9Qix0aGlzLmJvZHk9TCx0aGlzLmRlY29kZXJzPXt9LHRoaXMuZW5jb2RlcnM9e319emUuZGVmaW5lPWZ1bmN0aW9u''@;'; put 'put ''KEwsSyl7cmV0dXJuIG5ldyBIKEwsSyl9LEgucHJvdG90eXBlLl9jcmVhdGVOYW1lZD1mdW5jdGlvbihMKXtjb25zdCBLPXRoaXMubmFtZTtmdW5jdGlvbiBKKEkpe3RoaXMuX2luaXROYW1lZChJLEspfXJldHVybiB2KEosTCksSi5wcm90b3R5cGUuX2luaXROYW1lZD1mdW5jdGlvbihSLEUp''@;'; put 'put ''e0wuY2FsbCh0aGlzLFIsRSl9LG5ldyBKKHRoaXMpfSxILnByb3RvdHlwZS5fZ2V0RGVjb2Rlcj1mdW5jdGlvbihMKXtyZXR1cm4gdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShMPUx8fCJkZXIiKXx8KHRoaXMuZGVjb2RlcnNbTF09dGhpcy5fY3JlYXRlTmFtZWQoa1tMXSkpLHRoaXMu''@;'; put 'put ''ZGVjb2RlcnNbTF19LEgucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihMLEssSil7cmV0dXJuIHRoaXMuX2dldERlY29kZXIoSykuZGVjb2RlKEwsSil9LEgucHJvdG90eXBlLl9nZXRFbmNvZGVyPWZ1bmN0aW9uKEwpe3JldHVybiB0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KEw9THx8''@;'; put 'put ''ImRlciIpfHwodGhpcy5lbmNvZGVyc1tMXT10aGlzLl9jcmVhdGVOYW1lZChzZVtMXSkpLHRoaXMuZW5jb2RlcnNbTF19LEgucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihMLEssSil7cmV0dXJuIHRoaXMuX2dldEVuY29kZXIoSykuZW5jb2RlKEwsSil9fSw3NTcyMDooV2UsemUsVCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7Y29uc3Qgc2U9VCg2NjY5OCksaz1UKDk1Njg0KS5iLHY9VCgyNDE3OSkuQnVmZmVyO2Z1bmN0aW9uIGhlKEIsTCl7ay5jYWxsKHRoaXMsTCksdi5pc0J1ZmZlcihCKT8odGhpcy5iYXNlPUIsdGhpcy5vZmZzZXQ9MCx0aGlzLmxlbmd0aD1CLmxlbmd0aCk6dGhpcy5lcnJv''@;'; put 'put ''cigiSW5wdXQgbm90IEJ1ZmZlciIpfWZ1bmN0aW9uIEgoQixMKXtpZihBcnJheS5pc0FycmF5KEIpKXRoaXMubGVuZ3RoPTAsdGhpcy52YWx1ZT1CLm1hcChmdW5jdGlvbihLKXtyZXR1cm4gSC5pc0VuY29kZXJCdWZmZXIoSyl8fChLPW5ldyBIKEssTCkpLHRoaXMubGVuZ3RoKz1LLmxlbmd0''@;'; put 'put ''aCxLfSx0aGlzKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgQil7aWYoISgwPD1CJiZCPD0yNTUpKXJldHVybiBMLmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT1CLHRoaXMubGVuZ3RoPTF9ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIEIpdGhpcy52''@;'; put 'put ''YWx1ZT1CLHRoaXMubGVuZ3RoPXYuYnl0ZUxlbmd0aChCKTtlbHNle2lmKCF2LmlzQnVmZmVyKEIpKXJldHVybiBMLmVycm9yKCJVbnN1cHBvcnRlZCB0eXBlOiAiK3R5cGVvZiBCKTt0aGlzLnZhbHVlPUIsdGhpcy5sZW5ndGg9Qi5sZW5ndGh9fXNlKGhlLGspLHplLkM9aGUsaGUuaXNEZWNv''@;'; put 'put ''ZGVyQnVmZmVyPWZ1bmN0aW9uKEwpe3JldHVybiBMIGluc3RhbmNlb2YgaGV8fCJvYmplY3QiPT10eXBlb2YgTCYmdi5pc0J1ZmZlcihMLmJhc2UpJiYiRGVjb2RlckJ1ZmZlciI9PT1MLmNvbnN0cnVjdG9yLm5hbWUmJiJudW1iZXIiPT10eXBlb2YgTC5vZmZzZXQmJiJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgTC5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLnNhdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLnJlc3RvcmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLmlzRW1wdHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLnJlYWRVSW50OCYmImZ1bmN0aW9uIj09dHlwZW9mIEwuc2tpcCYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIEwucmF3fSxoZS5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3JldHVybntvZmZzZXQ6dGhpcy5vZmZzZXQscmVwb3J0ZXI6ay5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpfX0saGUucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oTCl7Y29uc3QgSz1uZXcgaGUodGhp''@;'; put 'put ''cy5iYXNlKTtyZXR1cm4gSy5vZmZzZXQ9TC5vZmZzZXQsSy5sZW5ndGg9dGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQ9TC5vZmZzZXQsay5wcm90b3R5cGUucmVzdG9yZS5jYWxsKHRoaXMsTC5yZXBvcnRlciksS30saGUucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5v''@;'; put 'put ''ZmZzZXQ9PT10aGlzLmxlbmd0aH0saGUucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihMKXtyZXR1cm4gdGhpcy5vZmZzZXQrMTw9dGhpcy5sZW5ndGg/dGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCEwKTp0aGlzLmVycm9yKEx8fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4i''@;'; put 'put ''KX0saGUucHJvdG90eXBlLnNraXA9ZnVuY3Rpb24oTCxLKXtpZighKHRoaXMub2Zmc2V0K0w8PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5lcnJvcihLfHwiRGVjb2RlckJ1ZmZlciBvdmVycnVuIik7Y29uc3QgSj1uZXcgaGUodGhpcy5iYXNlKTtyZXR1cm4gSi5fcmVwb3J0ZXJTdGF0ZT10''@;'; put 'put ''aGlzLl9yZXBvcnRlclN0YXRlLEoub2Zmc2V0PXRoaXMub2Zmc2V0LEoubGVuZ3RoPXRoaXMub2Zmc2V0K0wsdGhpcy5vZmZzZXQrPUwsSn0saGUucHJvdG90eXBlLnJhdz1mdW5jdGlvbihMKXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKEw/TC5vZmZzZXQ6dGhpcy5vZmZzZXQsdGhpcy5sZW5n''@;'; put 'put ''dGgpfSx6ZS5SPUgsSC5pc0VuY29kZXJCdWZmZXI9ZnVuY3Rpb24oTCl7cmV0dXJuIEwgaW5zdGFuY2VvZiBIfHwib2JqZWN0Ij09dHlwZW9mIEwmJiJFbmNvZGVyQnVmZmVyIj09PUwuY29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiBMLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIEwuam9pbn0sSC5wcm90b3R5cGUuam9pbj1mdW5jdGlvbihMLEspe3JldHVybiBMfHwoTD12LmFsbG9jKHRoaXMubGVuZ3RoKSksS3x8KEs9MCksMD09PXRoaXMubGVuZ3RofHwoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKT90aGlzLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oSil7Si5q''@;'; put 'put ''b2luKEwsSyksSys9Si5sZW5ndGh9KTooIm51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP0xbS109dGhpcy52YWx1ZToic3RyaW5nIj09dHlwZW9mIHRoaXMudmFsdWU/TC53cml0ZSh0aGlzLnZhbHVlLEspOnYuaXNCdWZmZXIodGhpcy52YWx1ZSkmJnRoaXMudmFsdWUuY29weShMLEspLEsr''@;'; put 'put ''PXRoaXMubGVuZ3RoKSksTH19LDQwNTEwOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBzZT16ZTtzZS5SZXBvcnRlcj1UKDk1Njg0KS5iLHNlLkRlY29kZXJCdWZmZXI9VCg3NTcyMCkuQyxzZS5FbmNvZGVyQnVmZmVyPVQoNzU3MjApLlIsc2UuTm9kZT1UKDU4NTMzKX0sNTg1MzM6''@;'; put 'put ''KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO2NvbnN0IHNlPVQoOTU2ODQpLmIsaz1UKDc1NzIwKS5SLHY9VCg3NTcyMCkuQyxoZT1UKDU3Nzk4KSxIPVsic2VxIiwic2Vxb2YiLCJzZXQiLCJzZXRvZiIsIm9iamlkIiwiYm9vbCIsImdlbnRpbWUiLCJ1dGN0aW1lIiwibnVsbF8iLCJlbnVtIiwi''@;'; put 'put ''aW50Iiwib2JqRGVzYyIsImJpdHN0ciIsImJtcHN0ciIsImNoYXJzdHIiLCJnZW5zdHIiLCJncmFwaHN0ciIsImlhNXN0ciIsImlzbzY0NnN0ciIsIm51bXN0ciIsIm9jdHN0ciIsInByaW50c3RyIiwidDYxc3RyIiwidW5pc3RyIiwidXRmOHN0ciIsInZpZGVvc3RyIl0sQj1bImtleSIsIm9i''@;'; put 'put ''aiIsInVzZSIsIm9wdGlvbmFsIiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImRlZiIsImNob2ljZSIsImFueSIsImNvbnRhaW5zIl0uY29uY2F0KEgpO2Z1bmN0aW9uIEsoSSxSLEUpe2NvbnN0IHo9e307dGhpcy5fYmFzZVN0YXRlPXosei5uYW1lPUUsei5lbmM9SSx6LnBhcmVudD1SfHxudWxs''@;'; put 'put ''LHouY2hpbGRyZW49bnVsbCx6LnRhZz1udWxsLHouYXJncz1udWxsLHoucmV2ZXJzZUFyZ3M9bnVsbCx6LmNob2ljZT1udWxsLHoub3B0aW9uYWw9ITEsei5hbnk9ITEsei5vYmo9ITEsei51c2U9bnVsbCx6LnVzZURlY29kZXI9bnVsbCx6LmtleT1udWxsLHouZGVmYXVsdD1udWxsLHouZXhw''@;'; put 'put ''bGljaXQ9bnVsbCx6LmltcGxpY2l0PW51bGwsei5jb250YWlucz1udWxsLHoucGFyZW50fHwoei5jaGlsZHJlbj1bXSx0aGlzLl93cmFwKCkpfVdlLmV4cG9ydHM9Sztjb25zdCBKPVsiZW5jIiwicGFyZW50IiwiY2hpbGRyZW4iLCJ0YWciLCJhcmdzIiwicmV2ZXJzZUFyZ3MiLCJjaG9pY2Ui''@;'; put 'put ''LCJvcHRpb25hbCIsImFueSIsIm9iaiIsInVzZSIsImFsdGVyZWRVc2UiLCJrZXkiLCJkZWZhdWx0IiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIl07Sy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtjb25zdCBSPXRoaXMuX2Jhc2VTdGF0ZSxFPXt9O0ouZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihqKXtFW2pdPVJbal19KTtjb25zdCB6PW5ldyB0aGlzLmNvbnN0cnVjdG9yKEUucGFyZW50KTtyZXR1cm4gei5fYmFzZVN0YXRlPUUsen0sSy5wcm90b3R5cGUuX3dyYXA9ZnVuY3Rpb24oKXtjb25zdCBSPXRoaXMuX2Jhc2VTdGF0ZTtCLmZvckVhY2goZnVuY3Rpb24oRSl7dGhpc1tF''@;'; put 'put ''XT1mdW5jdGlvbigpe2NvbnN0IGo9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIFIuY2hpbGRyZW4ucHVzaChqKSxqW0VdLmFwcGx5KGosYXJndW1lbnRzKX19LHRoaXMpfSxLLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihSKXtjb25zdCBFPXRoaXMuX2Jhc2VTdGF0ZTtoZShu''@;'; put 'put ''dWxsPT09RS5wYXJlbnQpLFIuY2FsbCh0aGlzKSxFLmNoaWxkcmVuPUUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKHope3JldHVybiB6Ll9iYXNlU3RhdGUucGFyZW50PT09dGhpc30sdGhpcyksaGUuZXF1YWwoRS5jaGlsZHJlbi5sZW5ndGgsMSwiUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkg''@;'; put 'put ''b25lIGNoaWxkIil9LEsucHJvdG90eXBlLl91c2VBcmdzPWZ1bmN0aW9uKFIpe2NvbnN0IEU9dGhpcy5fYmFzZVN0YXRlLHo9Ui5maWx0ZXIoZnVuY3Rpb24oail7cmV0dXJuIGogaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTtSPVIuZmlsdGVyKGZ1bmN0aW9uKGope3JldHVy''@;'; put 'put ''biEoaiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpfSx0aGlzKSwwIT09ei5sZW5ndGgmJihoZShudWxsPT09RS5jaGlsZHJlbiksRS5jaGlsZHJlbj16LHouZm9yRWFjaChmdW5jdGlvbihqKXtqLl9iYXNlU3RhdGUucGFyZW50PXRoaXN9LHRoaXMpKSwwIT09Ui5sZW5ndGgmJihoZShu''@;'; put 'put ''dWxsPT09RS5hcmdzKSxFLmFyZ3M9UixFLnJldmVyc2VBcmdzPVIubWFwKGZ1bmN0aW9uKGope2lmKCJvYmplY3QiIT10eXBlb2Yganx8ai5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gajtjb25zdCBWPXt9O3JldHVybiBPYmplY3Qua2V5cyhqKS5mb3JFYWNoKGZ1bmN0aW9uKEcpe0c9''@;'; put 'put ''PSgwfEcpJiYoR3w9MCksVltqW0ddXT1HfSksVn0pKX0sWyJfcGVla1RhZyIsIl9kZWNvZGVUYWciLCJfdXNlIiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlSW50IiwiX2RlY29kZUJvb2wiLCJfZGVjb2RlTGlzdCIsIl9l''@;'; put 'put ''bmNvZGVDb21wb3NpdGUiLCJfZW5jb2RlU3RyIiwiX2VuY29kZU9iamlkIiwiX2VuY29kZVRpbWUiLCJfZW5jb2RlTnVsbCIsIl9lbmNvZGVJbnQiLCJfZW5jb2RlQm9vbCJdLmZvckVhY2goZnVuY3Rpb24oSSl7Sy5wcm90b3R5cGVbSV09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoSSsi''@;'; put 'put ''IG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICIrdGhpcy5fYmFzZVN0YXRlLmVuYyl9fSksSC5mb3JFYWNoKGZ1bmN0aW9uKEkpe0sucHJvdG90eXBlW0ldPWZ1bmN0aW9uKCl7Y29uc3QgRT10aGlzLl9iYXNlU3RhdGUsej1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu''@;'; put 'put ''dHMpO3JldHVybiBoZShudWxsPT09RS50YWcpLEUudGFnPUksdGhpcy5fdXNlQXJncyh6KSx0aGlzfX0pLEsucHJvdG90eXBlLnVzZT1mdW5jdGlvbihSKXtoZShSKTtjb25zdCBFPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gaGUobnVsbD09PUUudXNlKSxFLnVzZT1SLHRoaXN9LEsucHJvdG90''@;'; put 'put ''eXBlLm9wdGlvbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5vcHRpb25hbD0hMCx0aGlzfSxLLnByb3RvdHlwZS5kZWY9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGhlKG51bGw9PT1FLmRlZmF1bHQpLEUuZGVmYXVsdD1SLEUub3B0aW9u''@;'; put 'put ''YWw9ITAsdGhpc30sSy5wcm90b3R5cGUuZXhwbGljaXQ9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGhlKG51bGw9PT1FLmV4cGxpY2l0JiZudWxsPT09RS5pbXBsaWNpdCksRS5leHBsaWNpdD1SLHRoaXN9LEsucHJvdG90eXBlLmltcGxpY2l0PWZ1bmN0aW9u''@;'; put 'put ''KFIpe2NvbnN0IEU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBoZShudWxsPT09RS5leHBsaWNpdCYmbnVsbD09PUUuaW1wbGljaXQpLEUuaW1wbGljaXQ9Uix0aGlzfSxLLnByb3RvdHlwZS5vYmo9ZnVuY3Rpb24oKXtjb25zdCBSPXRoaXMuX2Jhc2VTdGF0ZSxFPUFycmF5LnByb3RvdHlwZS5z''@;'; put 'put ''bGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFIub2JqPSEwLDAhPT1FLmxlbmd0aCYmdGhpcy5fdXNlQXJncyhFKSx0aGlzfSxLLnByb3RvdHlwZS5rZXk9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGhlKG51bGw9PT1FLmtleSksRS5rZXk9Uix0aGlzfSxL''@;'; put 'put ''LnByb3RvdHlwZS5hbnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLmFueT0hMCx0aGlzfSxLLnByb3RvdHlwZS5jaG9pY2U9ZnVuY3Rpb24oUil7Y29uc3QgRT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGhlKG51bGw9PT1FLmNob2ljZSksRS5jaG9pY2U9Uix0aGlzLl91c2VB''@;'; put 'put ''cmdzKE9iamVjdC5rZXlzKFIpLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gUlt6XX0pKSx0aGlzfSxLLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihSKXtjb25zdCBFPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gaGUobnVsbD09PUUudXNlKSxFLmNvbnRhaW5zPVIsdGhpc30sSy5wcm90b3R5''@;'; put 'put ''cGUuX2RlY29kZT1mdW5jdGlvbihSLEUpe2NvbnN0IHo9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT16LnBhcmVudClyZXR1cm4gUi53cmFwUmVzdWx0KHouY2hpbGRyZW5bMF0uX2RlY29kZShSLEUpKTtsZXQgVyxqPXouZGVmYXVsdCxWPSEwLEc9bnVsbDtpZihudWxsIT09ei5rZXkmJihH''@;'; put 'put ''PVIuZW50ZXJLZXkoei5rZXkpKSx6Lm9wdGlvbmFsKXtsZXQgVT1udWxsO2lmKG51bGwhPT16LmV4cGxpY2l0P1U9ei5leHBsaWNpdDpudWxsIT09ei5pbXBsaWNpdD9VPXouaW1wbGljaXQ6bnVsbCE9PXoudGFnJiYoVT16LnRhZyksbnVsbCE9PVV8fHouYW55KXtpZihWPXRoaXMuX3BlZWtU''@;'; put 'put ''YWcoUixVLHouYW55KSxSLmlzRXJyb3IoVikpcmV0dXJuIFZ9ZWxzZXtjb25zdCBxPVIuc2F2ZSgpO3RyeXtudWxsPT09ei5jaG9pY2U/dGhpcy5fZGVjb2RlR2VuZXJpYyh6LnRhZyxSLEUpOnRoaXMuX2RlY29kZUNob2ljZShSLEUpLFY9ITB9Y2F0Y2h7Vj0hMX1SLnJlc3RvcmUocSl9fWlm''@;'; put 'put ''KHoub2JqJiZWJiYoVz1SLmVudGVyT2JqZWN0KCkpLFYpe2lmKG51bGwhPT16LmV4cGxpY2l0KXtjb25zdCBxPXRoaXMuX2RlY29kZVRhZyhSLHouZXhwbGljaXQpO2lmKFIuaXNFcnJvcihxKSlyZXR1cm4gcTtSPXF9Y29uc3QgVT1SLm9mZnNldDtpZihudWxsPT09ei51c2UmJm51bGw9PT16''@;'; put 'put ''LmNob2ljZSl7bGV0IHE7ei5hbnkmJihxPVIuc2F2ZSgpKTtjb25zdCB0ZT10aGlzLl9kZWNvZGVUYWcoUixudWxsIT09ei5pbXBsaWNpdD96LmltcGxpY2l0OnoudGFnLHouYW55KTtpZihSLmlzRXJyb3IodGUpKXJldHVybiB0ZTt6LmFueT9qPVIucmF3KHEpOlI9dGV9aWYoRSYmRS50cmFj''@;'; put 'put ''ayYmbnVsbCE9PXoudGFnJiZFLnRyYWNrKFIucGF0aCgpLFUsUi5sZW5ndGgsInRhZ2dlZCIpLEUmJkUudHJhY2smJm51bGwhPT16LnRhZyYmRS50cmFjayhSLnBhdGgoKSxSLm9mZnNldCxSLmxlbmd0aCwiY29udGVudCIpLHouYW55fHwoaj1udWxsPT09ei5jaG9pY2U/dGhpcy5fZGVjb2Rl''@;'; put 'put ''R2VuZXJpYyh6LnRhZyxSLEUpOnRoaXMuX2RlY29kZUNob2ljZShSLEUpKSxSLmlzRXJyb3IoaikpcmV0dXJuIGo7aWYoIXouYW55JiZudWxsPT09ei5jaG9pY2UmJm51bGwhPT16LmNoaWxkcmVuJiZ6LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24odGUpe3RlLl9kZWNvZGUoUixFKX0pLHou''@;'; put 'put ''Y29udGFpbnMmJigib2N0c3RyIj09PXoudGFnfHwiYml0c3RyIj09PXoudGFnKSl7Y29uc3QgcT1uZXcgdihqKTtqPXRoaXMuX2dldFVzZSh6LmNvbnRhaW5zLFIuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKHEsRSl9fXJldHVybiB6Lm9iaiYmViYmKGo9Ui5sZWF2ZU9iamVjdChXKSks''@;'; put 'put ''bnVsbD09PXoua2V5fHxudWxsPT09aiYmITAhPT1WP251bGwhPT1HJiZSLmV4aXRLZXkoRyk6Ui5sZWF2ZUtleShHLHoua2V5LGopLGp9LEsucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKFIsRSx6KXtjb25zdCBqPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4ic2VxIj09PVJ8fCJz''@;'; put 'put ''ZXQiPT09Uj9udWxsOiJzZXFvZiI9PT1SfHwic2V0b2YiPT09Uj90aGlzLl9kZWNvZGVMaXN0KEUsUixqLmFyZ3NbMF0seik6L3N0ciQvLnRlc3QoUik/dGhpcy5fZGVjb2RlU3RyKEUsUix6KToib2JqaWQiPT09UiYmai5hcmdzP3RoaXMuX2RlY29kZU9iamlkKEUsai5hcmdzWzBdLGouYXJn''@;'; put 'put ''c1sxXSx6KToib2JqaWQiPT09Uj90aGlzLl9kZWNvZGVPYmppZChFLG51bGwsbnVsbCx6KToiZ2VudGltZSI9PT1SfHwidXRjdGltZSI9PT1SP3RoaXMuX2RlY29kZVRpbWUoRSxSLHopOiJudWxsXyI9PT1SP3RoaXMuX2RlY29kZU51bGwoRSx6KToiYm9vbCI9PT1SP3RoaXMuX2RlY29kZUJv''@;'; put 'put ''b2woRSx6KToib2JqRGVzYyI9PT1SP3RoaXMuX2RlY29kZVN0cihFLFIseik6ImludCI9PT1SfHwiZW51bSI9PT1SP3RoaXMuX2RlY29kZUludChFLGouYXJncyYmai5hcmdzWzBdLHopOm51bGwhPT1qLnVzZT90aGlzLl9nZXRVc2Uoai51c2UsRS5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNv''@;'; put 'put ''ZGUoRSx6KTpFLmVycm9yKCJ1bmtub3duIHRhZzogIitSKX0sSy5wcm90b3R5cGUuX2dldFVzZT1mdW5jdGlvbihSLEUpe2NvbnN0IHo9dGhpcy5fYmFzZVN0YXRlO3JldHVybiB6LnVzZURlY29kZXI9dGhpcy5fdXNlKFIsRSksaGUobnVsbD09PXoudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBh''@;'; put 'put ''cmVudCksei51c2VEZWNvZGVyPXoudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmNoaWxkcmVuWzBdLHouaW1wbGljaXQhPT16LnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCYmKHoudXNlRGVjb2Rlcj16LnVzZURlY29kZXIuY2xvbmUoKSx6LnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBs''@;'; put 'put ''aWNpdD16LmltcGxpY2l0KSx6LnVzZURlY29kZXJ9LEsucHJvdG90eXBlLl9kZWNvZGVDaG9pY2U9ZnVuY3Rpb24oUixFKXtjb25zdCB6PXRoaXMuX2Jhc2VTdGF0ZTtsZXQgaj1udWxsLFY9ITE7cmV0dXJuIE9iamVjdC5rZXlzKHouY2hvaWNlKS5zb21lKGZ1bmN0aW9uKEcpe2NvbnN0IFc9''@;'; put 'put ''Ui5zYXZlKCksVT16LmNob2ljZVtHXTt0cnl7Y29uc3QgcT1VLl9kZWNvZGUoUixFKTtpZihSLmlzRXJyb3IocSkpcmV0dXJuITE7aj17dHlwZTpHLHZhbHVlOnF9LFY9ITB9Y2F0Y2h7cmV0dXJuIFIucmVzdG9yZShXKSwhMX1yZXR1cm4hMH0sdGhpcyksVj9qOlIuZXJyb3IoIkNob2ljZSBu''@;'; put 'put ''b3QgbWF0Y2hlZCIpfSxLLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbihSKXtyZXR1cm4gbmV3IGsoUix0aGlzLnJlcG9ydGVyKX0sSy5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihSLEUseil7Y29uc3Qgaj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbCE9PWouZGVm''@;'; put 'put ''YXVsdCYmai5kZWZhdWx0PT09UilyZXR1cm47Y29uc3QgVj10aGlzLl9lbmNvZGVWYWx1ZShSLEUseik7cmV0dXJuIHZvaWQgMD09PVZ8fHRoaXMuX3NraXBEZWZhdWx0KFYsRSx6KT92b2lkIDA6Vn0sSy5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKFIsRSx6KXtjb25zdCBqPXRo''@;'; put 'put ''aXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09ai5wYXJlbnQpcmV0dXJuIGouY2hpbGRyZW5bMF0uX2VuY29kZShSLEV8fG5ldyBzZSk7bGV0IFY9bnVsbDtpZih0aGlzLnJlcG9ydGVyPUUsai5vcHRpb25hbCYmdm9pZCAwPT09Uil7aWYobnVsbD09PWouZGVmYXVsdClyZXR1cm47Uj1qLmRlZmF1''@;'; put 'put ''bHR9bGV0IEc9bnVsbCxXPSExO2lmKGouYW55KVY9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihSKTtlbHNlIGlmKGouY2hvaWNlKVY9dGhpcy5fZW5jb2RlQ2hvaWNlKFIsRSk7ZWxzZSBpZihqLmNvbnRhaW5zKUc9dGhpcy5fZ2V0VXNlKGouY29udGFpbnMseikuX2VuY29kZShSLEUpLFc9''@;'; put 'put ''ITA7ZWxzZSBpZihqLmNoaWxkcmVuKUc9ai5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oVSl7aWYoIm51bGxfIj09PVUuX2Jhc2VTdGF0ZS50YWcpcmV0dXJuIFUuX2VuY29kZShudWxsLEUsUik7aWYobnVsbD09PVUuX2Jhc2VTdGF0ZS5rZXkpcmV0dXJuIEUuZXJyb3IoIkNoaWxkIHNob3VsZCBo''@;'; put 'put ''YXZlIGEga2V5Iik7Y29uc3QgcT1FLmVudGVyS2V5KFUuX2Jhc2VTdGF0ZS5rZXkpO2lmKCJvYmplY3QiIT10eXBlb2YgUilyZXR1cm4gRS5lcnJvcigiQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Iik7Y29uc3QgdGU9VS5fZW5jb2RlKFJbVS5fYmFzZVN0YXRlLmtl''@;'; put 'put ''eV0sRSxSKTtyZXR1cm4gRS5sZWF2ZUtleShxKSx0ZX0sdGhpcykuZmlsdGVyKGZ1bmN0aW9uKFUpe3JldHVybiBVfSksRz10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEcpO2Vsc2UgaWYoInNlcW9mIj09PWoudGFnfHwic2V0b2YiPT09ai50YWcpe2lmKCFqLmFyZ3N8fDEhPT1qLmFyZ3Mu''@;'; put 'put ''bGVuZ3RoKXJldHVybiBFLmVycm9yKCJUb28gbWFueSBhcmdzIGZvciA6ICIrai50YWcpO2lmKCFBcnJheS5pc0FycmF5KFIpKXJldHVybiBFLmVycm9yKCJzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Iik7Y29uc3QgVT10aGlzLmNsb25lKCk7VS5fYmFzZVN0YXRlLmltcGxp''@;'; put 'put ''Y2l0PW51bGwsRz10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFIubWFwKGZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0sUikuX2VuY29kZShxLEUpfSxVKSl9ZWxzZSBudWxsIT09ai51c2U/Vj10aGlzLl9nZXRVc2Uoai51c2UseikuX2Vu''@;'; put 'put ''Y29kZShSLEUpOihHPXRoaXMuX2VuY29kZVByaW1pdGl2ZShqLnRhZyxSKSxXPSEwKTtpZighai5hbnkmJm51bGw9PT1qLmNob2ljZSl7Y29uc3QgVT1udWxsIT09ai5pbXBsaWNpdD9qLmltcGxpY2l0OmoudGFnLHE9bnVsbD09PWouaW1wbGljaXQ/InVuaXZlcnNhbCI6ImNvbnRleHQiO251''@;'; put 'put ''bGw9PT1VP251bGw9PT1qLnVzZSYmRS5lcnJvcigiVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpIik6bnVsbD09PWoudXNlJiYoVj10aGlzLl9lbmNvZGVDb21wb3NpdGUoVSxXLHEsRykpfXJldHVybiBudWxsIT09ai5leHBsaWNpdCYmKFY9dGhpcy5fZW5jb2RlQ29tcG9z''@;'; put 'put ''aXRlKGouZXhwbGljaXQsITEsImNvbnRleHQiLFYpKSxWfSxLLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlPWZ1bmN0aW9uKFIsRSl7Y29uc3Qgej10aGlzLl9iYXNlU3RhdGUsaj16LmNob2ljZVtSLnR5cGVdO3JldHVybiBqfHxoZSghMSxSLnR5cGUrIiBub3QgZm91bmQgaW4gIitKU09OLnN0''@;'; put 'put ''cmluZ2lmeShPYmplY3Qua2V5cyh6LmNob2ljZSkpKSxqLl9lbmNvZGUoUi52YWx1ZSxFKX0sSy5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZT1mdW5jdGlvbihSLEUpe2NvbnN0IHo9dGhpcy5fYmFzZVN0YXRlO2lmKC9zdHIkLy50ZXN0KFIpKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoRSxS''@;'; put 'put ''KTtpZigib2JqaWQiPT09UiYmei5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChFLHoucmV2ZXJzZUFyZ3NbMF0sei5hcmdzWzFdKTtpZigib2JqaWQiPT09UilyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoRSxudWxsLG51bGwpO2lmKCJnZW50aW1lIj09PVJ8fCJ1dGN0aW1lIj09PVIp''@;'; put 'put ''cmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoRSxSKTtpZigibnVsbF8iPT09UilyZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO2lmKCJpbnQiPT09Unx8ImVudW0iPT09UilyZXR1cm4gdGhpcy5fZW5jb2RlSW50KEUsei5hcmdzJiZ6LnJldmVyc2VBcmdzWzBdKTtpZigiYm9vbCI9PT1SKXJldHVy''@;'; put 'put ''biB0aGlzLl9lbmNvZGVCb29sKEUpO2lmKCJvYmpEZXNjIj09PVIpcmV0dXJuIHRoaXMuX2VuY29kZVN0cihFLFIpO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdGFnOiAiK1IpfSxLLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24oUil7cmV0dXJuL15bMC05IF0qJC8udGVzdChS''@;'; put 'put ''KX0sSy5wcm90b3R5cGUuX2lzUHJpbnRzdHI9ZnVuY3Rpb24oUil7cmV0dXJuL15bQS1aYS16MC05ICcoKSssLS4vOj0/XSokLy50ZXN0KFIpfX0sOTU2ODQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO2NvbnN0IHNlPVQoNjY2OTgpO2Z1bmN0aW9uIGsoaGUpe3RoaXMuX3JlcG9ydGVyU3Rh''@;'; put 'put ''dGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpoZXx8e30sZXJyb3JzOltdfX1mdW5jdGlvbiB2KGhlLEgpe3RoaXMucGF0aD1oZSx0aGlzLnJldGhyb3coSCl9emUuYj1rLGsucHJvdG90eXBlLmlzRXJyb3I9ZnVuY3Rpb24oSCl7cmV0dXJuIEggaW5zdGFuY2VvZiB2fSxrLnByb3RvdHlw''@;'; put 'put ''ZS5zYXZlPWZ1bmN0aW9uKCl7Y29uc3QgSD10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybntvYmo6SC5vYmoscGF0aExlbjpILnBhdGgubGVuZ3RofX0say5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihIKXtjb25zdCBCPXRoaXMuX3JlcG9ydGVyU3RhdGU7Qi5vYmo9SC5vYmosQi5wYXRo''@;'; put 'put ''PUIucGF0aC5zbGljZSgwLEgucGF0aExlbil9LGsucHJvdG90eXBlLmVudGVyS2V5PWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChIKX0say5wcm90b3R5cGUuZXhpdEtleT1mdW5jdGlvbihIKXtjb25zdCBCPXRoaXMuX3JlcG9ydGVyU3RhdGU7Qi5w''@;'; put 'put ''YXRoPUIucGF0aC5zbGljZSgwLEgtMSl9LGsucHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uKEgsQixMKXtjb25zdCBLPXRoaXMuX3JlcG9ydGVyU3RhdGU7dGhpcy5leGl0S2V5KEgpLG51bGwhPT1LLm9iaiYmKEsub2JqW0JdPUwpfSxrLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCIvIil9LGsucHJvdG90eXBlLmVudGVyT2JqZWN0PWZ1bmN0aW9uKCl7Y29uc3QgSD10aGlzLl9yZXBvcnRlclN0YXRlLEI9SC5vYmo7cmV0dXJuIEgub2JqPXt9LEJ9LGsucHJvdG90eXBlLmxlYXZlT2JqZWN0PWZ1bmN0aW9uKEgp''@;'; put 'put ''e2NvbnN0IEI9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxMPUIub2JqO3JldHVybiBCLm9iaj1ILEx9LGsucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKEgpe2xldCBCO2NvbnN0IEw9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxLPUggaW5zdGFuY2VvZiB2O2lmKEI9Sz9IOm5ldyB2KEwucGF0aC5tYXAoZnVu''@;'; put 'put ''Y3Rpb24oSil7cmV0dXJuIlsiK0pTT04uc3RyaW5naWZ5KEopKyJdIn0pLmpvaW4oIiIpLEgubWVzc2FnZXx8SCxILnN0YWNrKSwhTC5vcHRpb25zLnBhcnRpYWwpdGhyb3cgQjtyZXR1cm4gS3x8TC5lcnJvcnMucHVzaChCKSxCfSxrLnByb3RvdHlwZS53cmFwUmVzdWx0PWZ1bmN0aW9uKEgp''@;'; put 'put ''e2NvbnN0IEI9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtyZXR1cm4gQi5vcHRpb25zLnBhcnRpYWw/e3Jlc3VsdDp0aGlzLmlzRXJyb3IoSCk/bnVsbDpILGVycm9yczpCLmVycm9yc306SH0sc2UodixFcnJvciksdi5wcm90b3R5cGUucmV0aHJvdz1mdW5jdGlvbihIKXtpZih0aGlzLm1lc3NhZ2U9''@;'; put 'put ''SCsiIGF0OiAiKyh0aGlzLnBhdGh8fCIoc2hhbGxvdykiKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx2KSwhdGhpcy5zdGFjayl0cnl7dGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSl9Y2F0Y2goQil7dGhpcy5zdGFjaz1CLnN0YWNr''@;'; put 'put ''fXJldHVybiB0aGlzfX0sNjUwODY6KFdlLHplKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBUKHNlKXtjb25zdCBrPXt9O3JldHVybiBPYmplY3Qua2V5cyhzZSkuZm9yRWFjaChmdW5jdGlvbih2KXsoMHx2KT09diYmKHZ8PTApLGtbc2Vbdl1dPXZ9KSxrfXplLnRhZ0NsYXNzPXswOiJ1bml2''@;'; put 'put ''ZXJzYWwiLDE6ImFwcGxpY2F0aW9uIiwyOiJjb250ZXh0IiwzOiJwcml2YXRlIn0semUudGFnQ2xhc3NCeU5hbWU9VCh6ZS50YWdDbGFzcyksemUudGFnPXswOiJlbmQiLDE6ImJvb2wiLDI6ImludCIsMzoiYml0c3RyIiw0OiJvY3RzdHIiLDU6Im51bGxfIiw2OiJvYmppZCIsNzoib2JqRGVz''@;'; put 'put ''YyIsODoiZXh0ZXJuYWwiLDk6InJlYWwiLDEwOiJlbnVtIiwxMToiZW1iZWQiLDEyOiJ1dGY4c3RyIiwxMzoicmVsYXRpdmVPaWQiLDE2OiJzZXEiLDE3OiJzZXQiLDE4OiJudW1zdHIiLDE5OiJwcmludHN0ciIsMjA6InQ2MXN0ciIsMjE6InZpZGVvc3RyIiwyMjoiaWE1c3RyIiwyMzoidXRj''@;'; put 'put ''dGltZSIsMjQ6ImdlbnRpbWUiLDI1OiJncmFwaHN0ciIsMjY6ImlzbzY0NnN0ciIsMjc6ImdlbnN0ciIsMjg6InVuaXN0ciIsMjk6ImNoYXJzdHIiLDMwOiJibXBzdHIifSx6ZS50YWdCeU5hbWU9VCh6ZS50YWcpfSw0NDE1NTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7Y29uc3Qgc2U9emU7''@;'; put 'put ''c2UuX3JldmVyc2U9ZnVuY3Rpb24odil7Y29uc3QgaGU9e307cmV0dXJuIE9iamVjdC5rZXlzKHYpLmZvckVhY2goZnVuY3Rpb24oSCl7KDB8SCk9PUgmJihIfD0wKSxoZVt2W0hdXT1IfSksaGV9LHNlLmRlcj1UKDY1MDg2KX0sOTY4MzU6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO2NvbnN0''@;'; put 'put ''IHNlPVQoNjY2OTgpLGs9VCg1MDQ3KSx2PVQoNzU3MjApLkMsaGU9VCg1ODUzMyksSD1UKDY1MDg2KTtmdW5jdGlvbiBCKEkpe3RoaXMuZW5jPSJkZXIiLHRoaXMubmFtZT1JLm5hbWUsdGhpcy5lbnRpdHk9SSx0aGlzLnRyZWU9bmV3IEwsdGhpcy50cmVlLl9pbml0KEkuYm9keSl9ZnVuY3Rp''@;'; put 'put ''b24gTChJKXtoZS5jYWxsKHRoaXMsImRlciIsSSl9ZnVuY3Rpb24gSyhJLFIpe2xldCBFPUkucmVhZFVJbnQ4KFIpO2lmKEkuaXNFcnJvcihFKSlyZXR1cm4gRTtjb25zdCB6PUgudGFnQ2xhc3NbRT4+Nl0saj0wPT0oMzImRSk7aWYoMzE9PSgzMSZFKSl7bGV0IEc9RTtmb3IoRT0wOzEyOD09''@;'; put 'put ''KDEyOCZHKTspe2lmKEc9SS5yZWFkVUludDgoUiksSS5pc0Vycm9yKEcpKXJldHVybiBHO0U8PD03LEV8PTEyNyZHfX1lbHNlIEUmPTMxO3JldHVybntjbHM6eixwcmltaXRpdmU6aix0YWc6RSx0YWdTdHI6SC50YWdbRV19fWZ1bmN0aW9uIEooSSxSLEUpe2xldCB6PUkucmVhZFVJbnQ4KEUp''@;'; put 'put ''O2lmKEkuaXNFcnJvcih6KSlyZXR1cm4gejtpZighUiYmMTI4PT09eilyZXR1cm4gbnVsbDtpZighKDEyOCZ6KSlyZXR1cm4gejtjb25zdCBqPTEyNyZ6O2lmKGo+NClyZXR1cm4gSS5lcnJvcigibGVuZ3RoIG9jdGVjdCBpcyB0b28gbG9uZyIpO3o9MDtmb3IobGV0IFY9MDtWPGo7VisrKXt6''@;'; put 'put ''PDw9ODtjb25zdCBHPUkucmVhZFVJbnQ4KEUpO2lmKEkuaXNFcnJvcihHKSlyZXR1cm4gRzt6fD1HfXJldHVybiB6fVdlLmV4cG9ydHM9QixCLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oUixFKXtyZXR1cm4gdi5pc0RlY29kZXJCdWZmZXIoUil8fChSPW5ldyB2KFIsRSkpLHRoaXMudHJl''@;'; put 'put ''ZS5fZGVjb2RlKFIsRSl9LHNlKEwsaGUpLEwucHJvdG90eXBlLl9wZWVrVGFnPWZ1bmN0aW9uKFIsRSx6KXtpZihSLmlzRW1wdHkoKSlyZXR1cm4hMTtjb25zdCBqPVIuc2F2ZSgpLFY9SyhSLCdGYWlsZWQgdG8gcGVlayB0YWc6ICInK0UrJyInKTtyZXR1cm4gUi5pc0Vycm9yKFYpP1Y6KFIu''@;'; put 'put ''cmVzdG9yZShqKSxWLnRhZz09PUV8fFYudGFnU3RyPT09RXx8Vi50YWdTdHIrIm9mIj09PUV8fHopfSxMLnByb3RvdHlwZS5fZGVjb2RlVGFnPWZ1bmN0aW9uKFIsRSx6KXtjb25zdCBqPUsoUiwnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgIicrRSsnIicpO2lmKFIuaXNFcnJvcihqKSlyZXR1''@;'; put 'put ''cm4gajtsZXQgVj1KKFIsai5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mICInK0UrJyInKTtpZihSLmlzRXJyb3IoVikpcmV0dXJuIFY7aWYoIXomJmoudGFnIT09RSYmai50YWdTdHIhPT1FJiZqLnRhZ1N0cisib2YiIT09RSlyZXR1cm4gUi5lcnJvcignRmFpbGVkIHRvIG1h''@;'; put 'put ''dGNoIHRhZzogIicrRSsnIicpO2lmKGoucHJpbWl0aXZlfHxudWxsIT09VilyZXR1cm4gUi5za2lwKFYsJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytFKyciJyk7Y29uc3QgRz1SLnNhdmUoKSxXPXRoaXMuX3NraXBVbnRpbEVuZChSLCdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxl''@;'; put 'put ''bmd0aCBib2R5OiAiJyt0aGlzLnRhZysnIicpO3JldHVybiBSLmlzRXJyb3IoVyk/VzooVj1SLm9mZnNldC1HLm9mZnNldCxSLnJlc3RvcmUoRyksUi5za2lwKFYsJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytFKyciJykpfSxMLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kPWZ1bmN0aW9u''@;'; put 'put ''KFIsRSl7Zm9yKDs7KXtjb25zdCB6PUsoUixFKTtpZihSLmlzRXJyb3IoeikpcmV0dXJuIHo7Y29uc3Qgaj1KKFIsei5wcmltaXRpdmUsRSk7aWYoUi5pc0Vycm9yKGopKXJldHVybiBqO2xldCBWO2lmKFY9ei5wcmltaXRpdmV8fG51bGwhPT1qP1Iuc2tpcChqKTp0aGlzLl9za2lwVW50aWxF''@;'; put 'put ''bmQoUixFKSxSLmlzRXJyb3IoVikpcmV0dXJuIFY7aWYoImVuZCI9PT16LnRhZ1N0cilicmVha319LEwucHJvdG90eXBlLl9kZWNvZGVMaXN0PWZ1bmN0aW9uKFIsRSx6LGope2NvbnN0IFY9W107Zm9yKDshUi5pc0VtcHR5KCk7KXtjb25zdCBHPXRoaXMuX3BlZWtUYWcoUiwiZW5kIik7aWYo''@;'; put 'put ''Ui5pc0Vycm9yKEcpKXJldHVybiBHO2NvbnN0IFc9ei5kZWNvZGUoUiwiZGVyIixqKTtpZihSLmlzRXJyb3IoVykmJkcpYnJlYWs7Vi5wdXNoKFcpfXJldHVybiBWfSxMLnByb3RvdHlwZS5fZGVjb2RlU3RyPWZ1bmN0aW9uKFIsRSl7aWYoImJpdHN0ciI9PT1FKXtjb25zdCB6PVIucmVhZFVJ''@;'; put 'put ''bnQ4KCk7cmV0dXJuIFIuaXNFcnJvcih6KT96Ont1bnVzZWQ6eixkYXRhOlIucmF3KCl9fWlmKCJibXBzdHIiPT09RSl7Y29uc3Qgej1SLnJhdygpO2lmKHoubGVuZ3RoJTI9PTEpcmV0dXJuIFIuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBibXBzdHIgbGVuZ3RoIG1pc21hdGNo''@;'; put 'put ''Iik7bGV0IGo9IiI7Zm9yKGxldCBWPTA7Vjx6Lmxlbmd0aC8yO1YrKylqKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHoucmVhZFVJbnQxNkJFKDIqVikpO3JldHVybiBqfWlmKCJudW1zdHIiPT09RSl7Y29uc3Qgej1SLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc051bXN0''@;'; put 'put ''cih6KT96OlIuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfWlmKCJvY3RzdHIiPT09RSlyZXR1cm4gUi5yYXcoKTtpZigib2JqRGVzYyI9PT1FKXJldHVybiBSLnJhdygpO2lmKCJwcmludHN0ciI9PT1FKXtjb25zdCB6PVIu''@;'; put 'put ''cmF3KCkudG9TdHJpbmcoImFzY2lpIik7cmV0dXJuIHRoaXMuX2lzUHJpbnRzdHIoeik/ejpSLmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyIpfXJldHVybi9zdHIkLy50ZXN0KEUpP1IucmF3KCkudG9TdHJpbmcoKTpSLmVy''@;'; put 'put ''cm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogIitFKyIgdW5zdXBwb3J0ZWQiKX0sTC5wcm90b3R5cGUuX2RlY29kZU9iamlkPWZ1bmN0aW9uKFIsRSx6KXtsZXQgajtjb25zdCBWPVtdO2xldCBHPTAsVz0wO2Zvcig7IVIuaXNFbXB0eSgpOylXPVIucmVhZFVJbnQ4KCksRzw8PTcsR3w9''@;'; put 'put ''MTI3JlcsMTI4Jld8fChWLnB1c2goRyksRz0wKTtpZigxMjgmVyYmVi5wdXNoKEcpLGo9ej9WOltWWzBdLzQwfDAsVlswXSU0MF0uY29uY2F0KFYuc2xpY2UoMSkpLEUpe2xldCB0ZT1FW2ouam9pbigiICIpXTt2b2lkIDA9PT10ZSYmKHRlPUVbai5qb2luKCIuIildKSx2b2lkIDAhPT10ZSYm''@;'; put 'put ''KGo9dGUpfXJldHVybiBqfSxMLnByb3RvdHlwZS5fZGVjb2RlVGltZT1mdW5jdGlvbihSLEUpe2NvbnN0IHo9Ui5yYXcoKS50b1N0cmluZygpO2xldCBqLFYsRyxXLFUscTtpZigiZ2VudGltZSI9PT1FKWo9MHx6LnNsaWNlKDAsNCksVj0wfHouc2xpY2UoNCw2KSxHPTB8ei5zbGljZSg2LDgp''@;'; put 'put ''LFc9MHx6LnNsaWNlKDgsMTApLFU9MHx6LnNsaWNlKDEwLDEyKSxxPTB8ei5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRjdGltZSIhPT1FKXJldHVybiBSLmVycm9yKCJEZWNvZGluZyAiK0UrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7aj0wfHouc2xpY2UoMCwyKSxWPTB8ei5zbGlj''@;'; put 'put ''ZSgyLDQpLEc9MHx6LnNsaWNlKDQsNiksVz0wfHouc2xpY2UoNiw4KSxVPTB8ei5zbGljZSg4LDEwKSxxPTB8ei5zbGljZSgxMCwxMiksaj1qPDcwPzJlMytqOjE5MDAran1yZXR1cm4gRGF0ZS5VVEMoaixWLTEsRyxXLFUscSwwKX0sTC5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gbnVsbH0sTC5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24oUil7Y29uc3QgRT1SLnJlYWRVSW50OCgpO3JldHVybiBSLmlzRXJyb3IoRSk/RTowIT09RX0sTC5wcm90b3R5cGUuX2RlY29kZUludD1mdW5jdGlvbihSLEUpe2NvbnN0IHo9Ui5yYXcoKTtsZXQgaj1uZXcg''@;'; put 'put ''ayh6KTtyZXR1cm4gRSYmKGo9RVtqLnRvU3RyaW5nKDEwKV18fGopLGp9LEwucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oUixFKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUiYmKFI9UihFKSksUi5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LDcxMzAxOihXZSx6ZSxUKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijtjb25zdCBzZT16ZTtzZS5kZXI9VCg5NjgzNSksc2UucGVtPVQoMjIwOCl9LDIyMDg6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO2NvbnN0IHNlPVQoNjY2OTgpLGs9VCgyNDE3OSkuQnVmZmVyLHY9VCg5NjgzNSk7ZnVuY3Rpb24gaGUoSCl7di5jYWxsKHRoaXMsSCksdGhpcy5lbmM9''@;'; put 'put ''InBlbSJ9c2UoaGUsdiksV2UuZXhwb3J0cz1oZSxoZS5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKEIsTCl7Y29uc3QgSz1CLnRvU3RyaW5nKCkuc3BsaXQoL1tcclxuXSsvZyksSj1MLmxhYmVsLnRvVXBwZXJDYXNlKCksST0vXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87bGV0''@;'; put 'put ''IFI9LTEsRT0tMTtmb3IobGV0IFY9MDtWPEsubGVuZ3RoO1YrKyl7Y29uc3QgRz1LW1ZdLm1hdGNoKEkpO2lmKG51bGwhPT1HJiZHWzJdPT09Sil7aWYoLTEhPT1SKXtpZigiRU5EIiE9PUdbMV0pYnJlYWs7RT1WO2JyZWFrfWlmKCJCRUdJTiIhPT1HWzFdKWJyZWFrO1I9Vn19aWYoLTE9PT1S''@;'; put 'put ''fHwtMT09PUUpdGhyb3cgbmV3IEVycm9yKCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAiK0opO2NvbnN0IHo9Sy5zbGljZShSKzEsRSkuam9pbigiIik7ei5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCIiKTtjb25zdCBqPWsuZnJvbSh6LCJiYXNlNjQiKTtyZXR1cm4gdi5wcm90b3R5''@;'; put 'put ''cGUuZGVjb2RlLmNhbGwodGhpcyxqLEwpfX0sNjkxMzM6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO2NvbnN0IHNlPVQoNjY2OTgpLGs9VCgyNDE3OSkuQnVmZmVyLHY9VCg1ODUzMyksaGU9VCg2NTA4Nik7ZnVuY3Rpb24gSChKKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9Si5uYW1lLHRo''@;'; put 'put ''aXMuZW50aXR5PUosdGhpcy50cmVlPW5ldyBCLHRoaXMudHJlZS5faW5pdChKLmJvZHkpfWZ1bmN0aW9uIEIoSil7di5jYWxsKHRoaXMsImRlciIsSil9ZnVuY3Rpb24gTChKKXtyZXR1cm4gSjwxMD8iMCIrSjpKfVdlLmV4cG9ydHM9SCxILnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oSSxS''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoSSxSKS5qb2luKCl9LHNlKEIsdiksQi5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZT1mdW5jdGlvbihJLFIsRSx6KXtjb25zdCBqPWZ1bmN0aW9uIEsoSixJLFIsRSl7bGV0IHo7aWYoInNlcW9mIj09PUo/Sj0ic2VxIjoic2V0b2YiPT09SiYm''@;'; put 'put ''KEo9InNldCIpLGhlLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eShKKSl6PWhlLnRhZ0J5TmFtZVtKXTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgSnx8KDB8SikhPT1KKXJldHVybiBFLmVycm9yKCJVbmtub3duIHRhZzogIitKKTt6PUp9cmV0dXJuIHo+PTMxP0UuZXJyb3IoIk11bHRpLW9j''@;'; put 'put ''dGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCIpOihJfHwoenw9MzIpLHp8PWhlLnRhZ0NsYXNzQnlOYW1lW1J8fCJ1bml2ZXJzYWwiXTw8Nix6KX0oSSxSLEUsdGhpcy5yZXBvcnRlcik7aWYoei5sZW5ndGg8MTI4KXtjb25zdCBXPWsuYWxsb2MoMik7cmV0dXJuIFdbMF09aixXWzFdPXou''@;'; put 'put ''bGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW1csel0pfWxldCBWPTE7Zm9yKGxldCBXPXoubGVuZ3RoO1c+PTI1NjtXPj49OClWKys7Y29uc3QgRz1rLmFsbG9jKDIrVik7R1swXT1qLEdbMV09MTI4fFY7Zm9yKGxldCBXPTErVixVPXoubGVuZ3RoO1U+MDtXLS0sVT4+PTgpR1tX''@;'; put 'put ''XT0yNTUmVTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbRyx6XSl9LEIucHJvdG90eXBlLl9lbmNvZGVTdHI9ZnVuY3Rpb24oSSxSKXtpZigiYml0c3RyIj09PVIpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzB8SS51bnVzZWQsSS5kYXRhXSk7aWYoImJtcHN0''@;'; put 'put ''ciI9PT1SKXtjb25zdCBFPWsuYWxsb2MoMipJLmxlbmd0aCk7Zm9yKGxldCB6PTA7ejxJLmxlbmd0aDt6KyspRS53cml0ZVVJbnQxNkJFKEkuY2hhckNvZGVBdCh6KSwyKnopO3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEUpfXJldHVybiJudW1zdHIiPT09Uj90aGlzLl9pc051''@;'; put 'put ''bXN0cihJKT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEkpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgb25seSBkaWdpdHMgYW5kIHNwYWNlIik6InByaW50c3RyIj09PVI/dGhpcy5faXNQcmludHN0cihJKT90aGlzLl9j''@;'; put 'put ''cmVhdGVFbmNvZGVyQnVmZmVyKEkpOnRoaXMucmVwb3J0ZXIuZXJyb3IoIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBwcmludHN0ciBzdXBwb3J0cyBvbmx5IGxhdGluIHVwcGVyIGFuZCBsb3dlciBjYXNlIGxldHRlcnMsIGRpZ2l0cywgc3BhY2UsIGFwb3N0cm9waGUsIGxlZnQgYW5kIHJp''@;'; put 'put ''Z3RoIHBhcmVudGhlc2lzLCBwbHVzIHNpZ24sIGNvbW1hLCBoeXBoZW4sIGRvdCwgc2xhc2gsIGNvbG9uLCBlcXVhbCBzaWduLCBxdWVzdGlvbiBtYXJrIik6L3N0ciQvLnRlc3QoUil8fCJvYmpEZXNjIj09PVI/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihJKTp0aGlzLnJlcG9ydGVyLmVy''@;'; put 'put ''cm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogIitSKyIgdW5zdXBwb3J0ZWQiKX0sQi5wcm90b3R5cGUuX2VuY29kZU9iamlkPWZ1bmN0aW9uKEksUixFKXtpZigic3RyaW5nIj09dHlwZW9mIEkpe2lmKCFSKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJzdHJpbmcgb2JqaWQgZ2l2''@;'; put 'put ''ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kIik7aWYoIVIuaGFzT3duUHJvcGVydHkoSSkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwIik7ST1SW0ldLnNwbGl0KC9bXHMuXSsvZyk7Zm9yKGxldCBHPTA7RzxJLmxlbmd0aDtHKysp''@;'; put 'put ''SVtHXXw9MH1lbHNlIGlmKEFycmF5LmlzQXJyYXkoSSkpe0k9SS5zbGljZSgpO2ZvcihsZXQgRz0wO0c8SS5sZW5ndGg7RysrKUlbR118PTB9aWYoIUFycmF5LmlzQXJyYXkoSSkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBz''@;'; put 'put ''dHJpbmcsIGdvdDogIitKU09OLnN0cmluZ2lmeShJKSk7aWYoIUUpe2lmKElbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0IiKTtJLnNwbGljZSgwLDIsNDAqSVswXStJWzFdKX1sZXQgej0wO2ZvcihsZXQgRz0wO0c8SS5sZW5n''@;'; put 'put ''dGg7RysrKXtsZXQgVz1JW0ddO2Zvcih6Kys7Vz49MTI4O1c+Pj03KXorK31jb25zdCBqPWsuYWxsb2Moeik7bGV0IFY9ai5sZW5ndGgtMTtmb3IobGV0IEc9SS5sZW5ndGgtMTtHPj0wO0ctLSl7bGV0IFc9SVtHXTtmb3IoaltWLS1dPTEyNyZXOyhXPj49Nyk+MDspaltWLS1dPTEyOHwxMjcm''@;'; put 'put ''V31yZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihqKX0sQi5wcm90b3R5cGUuX2VuY29kZVRpbWU9ZnVuY3Rpb24oSSxSKXtsZXQgRTtjb25zdCB6PW5ldyBEYXRlKEkpO3JldHVybiJnZW50aW1lIj09PVI/RT1bTCh6LmdldFVUQ0Z1bGxZZWFyKCkpLEwoei5nZXRVVENNb250aCgp''@;'; put 'put ''KzEpLEwoei5nZXRVVENEYXRlKCkpLEwoei5nZXRVVENIb3VycygpKSxMKHouZ2V0VVRDTWludXRlcygpKSxMKHouZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOiJ1dGN0aW1lIj09PVI/RT1bTCh6LmdldFVUQ0Z1bGxZZWFyKCklMTAwKSxMKHouZ2V0VVRDTW9udGgoKSsxKSxMKHou''@;'; put 'put ''Z2V0VVRDRGF0ZSgpKSxMKHouZ2V0VVRDSG91cnMoKSksTCh6LmdldFVUQ01pbnV0ZXMoKSksTCh6LmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyAiK1IrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IiksdGhpcy5fZW5jb2Rl''@;'; put 'put ''U3RyKEUsIm9jdHN0ciIpfSxCLnByb3RvdHlwZS5fZW5jb2RlTnVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCIiKX0sQi5wcm90b3R5cGUuX2VuY29kZUludD1mdW5jdGlvbihJLFIpe2lmKCJzdHJpbmciPT10eXBlb2YgSSl7aWYoIVIpcmV0dXJuIHRo''@;'; put 'put ''aXMucmVwb3J0ZXIuZXJyb3IoIlN0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAiKTtpZighUi5oYXNPd25Qcm9wZXJ0eShJKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiVmFsdWVzIG1hcCBkb2Vzbid0IGNvbnRhaW46ICIrSlNPTi5zdHJpbmdpZnkoSSkp''@;'; put 'put ''O0k9UltJXX1pZigibnVtYmVyIiE9dHlwZW9mIEkmJiFrLmlzQnVmZmVyKEkpKXtjb25zdCBqPUkudG9BcnJheSgpOyFJLnNpZ24mJjEyOCZqWzBdJiZqLnVuc2hpZnQoMCksST1rLmZyb20oail9aWYoay5pc0J1ZmZlcihJKSl7bGV0IGo9SS5sZW5ndGg7MD09PUkubGVuZ3RoJiZqKys7Y29u''@;'; put 'put ''c3QgVj1rLmFsbG9jKGopO3JldHVybiBJLmNvcHkoViksMD09PUkubGVuZ3RoJiYoVlswXT0wKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFYpfWlmKEk8MTI4KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEkpO2lmKEk8MjU2KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVy''@;'; put 'put ''QnVmZmVyKFswLEldKTtsZXQgRT0xO2ZvcihsZXQgaj1JO2o+PTI1NjtqPj49OClFKys7Y29uc3Qgej1uZXcgQXJyYXkoRSk7Zm9yKGxldCBqPXoubGVuZ3RoLTE7aj49MDtqLS0peltqXT0yNTUmSSxJPj49ODtyZXR1cm4gMTI4JnpbMF0mJnoudW5zaGlmdCgwKSx0aGlzLl9jcmVhdGVFbmNv''@;'; put 'put ''ZGVyQnVmZmVyKGsuZnJvbSh6KSl9LEIucHJvdG90eXBlLl9lbmNvZGVCb29sPWZ1bmN0aW9uKEkpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEk/MjU1OjApfSxCLnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKEksUil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEkmJihJPUko''@;'; put 'put ''UikpLEkuX2dldEVuY29kZXIoImRlciIpLnRyZWV9LEIucHJvdG90eXBlLl9za2lwRGVmYXVsdD1mdW5jdGlvbihJLFIsRSl7Y29uc3Qgej10aGlzLl9iYXNlU3RhdGU7bGV0IGo7aWYobnVsbD09PXouZGVmYXVsdClyZXR1cm4hMTtjb25zdCBWPUkuam9pbigpO2lmKHZvaWQgMD09PXouZGVm''@;'; put 'put ''YXVsdEJ1ZmZlciYmKHouZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZSh6LmRlZmF1bHQsUixFKS5qb2luKCkpLFYubGVuZ3RoIT09ei5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4hMTtmb3Ioaj0wO2o8Vi5sZW5ndGg7aisrKWlmKFZbal0hPT16LmRlZmF1bHRCdWZmZXJbal0p''@;'; put 'put ''cmV0dXJuITE7cmV0dXJuITB9fSwyMzY5MzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7Y29uc3Qgc2U9emU7c2UuZGVyPVQoNjkxMzMpLHNlLnBlbT1UKDc5MDApfSw3OTAwOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBzZT1UKDY2Njk4KSxrPVQoNjkxMzMpO2Z1bmN0aW9uIHYo''@;'; put 'put ''aGUpe2suY2FsbCh0aGlzLGhlKSx0aGlzLmVuYz0icGVtIn1zZSh2LGspLFdlLmV4cG9ydHM9dix2LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oSCxCKXtjb25zdCBLPWsucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsSCkudG9TdHJpbmcoImJhc2U2NCIpLEo9WyItLS0tLUJFR0lOICIr''@;'; put 'put ''Qi5sYWJlbCsiLS0tLS0iXTtmb3IobGV0IEk9MDtJPEsubGVuZ3RoO0krPTY0KUoucHVzaChLLnNsaWNlKEksSSs2NCkpO3JldHVybiBKLnB1c2goIi0tLS0tRU5EICIrQi5sYWJlbCsiLS0tLS0iKSxKLmpvaW4oIlxuIil9fSw1MDQ3OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSxr''@;'; put 'put ''KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdihZLGIpe2lmKCFZKXRocm93IG5ldyBFcnJvcihifHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIGhlKFksYil7WS5zdXBlcl89Yjt2YXIgeD1mdW5jdGlvbigpe307eC5wcm90b3R5cGU9Yi5wcm90b3R5cGUsWS5wcm90b3R5cGU9bmV3IHgs''@;'; put 'put ''WS5wcm90b3R5cGUuY29uc3RydWN0b3I9WX1mdW5jdGlvbiBIKFksYix4KXtpZihILmlzQk4oWSkpcmV0dXJuIFk7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PVkmJigoImxlIj09PWJ8fCJiZSI9PT1iKSYmKHg9Yixi''@;'; put 'put ''PTEwKSx0aGlzLl9pbml0KFl8fDAsYnx8MTAseHx8ImJlIikpfXZhciBCOyJvYmplY3QiPT10eXBlb2Ygc2U/c2UuZXhwb3J0cz1IOmsuQk49SCxILkJOPUgsSC53b3JkU2l6ZT0yNjt0cnl7Qj10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZm''@;'; put 'put ''ZXI6VCg4MDk1MCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBMKFksYil7dmFyIHg9WS5jaGFyQ29kZUF0KGIpO3JldHVybiB4Pj02NSYmeDw9NzA/eC01NTp4Pj05NyYmeDw9MTAyP3gtODc6eC00OCYxNX1mdW5jdGlvbiBLKFksYix4KXt2YXIgTj1MKFkseCk7cmV0dXJuIHgtMT49YiYmKE58''@;'; put 'put ''PUwoWSx4LTEpPDw0KSxOfWZ1bmN0aW9uIEooWSxiLHgsTil7Zm9yKHZhciBGPTAsZz1NYXRoLm1pbihZLmxlbmd0aCx4KSxDPWI7QzxnO0MrKyl7dmFyIE09WS5jaGFyQ29kZUF0KEMpLTQ4O0YqPU4sRis9TT49NDk/TS00OSsxMDpNPj0xNz9NLTE3KzEwOk19cmV0dXJuIEZ9SC5pc0JOPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgSHx8bnVsbCE9PWImJiJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUgud29yZFNpemUmJkFycmF5LmlzQXJyYXkoYi53b3Jkcyl9LEgubWF4PWZ1bmN0aW9uKGIseCl7cmV0dXJuIGIuY21wKHgpPjA/Yjp4''@;'; put 'put ''fSxILm1pbj1mdW5jdGlvbihiLHgpe3JldHVybiBiLmNtcCh4KTwwP2I6eH0sSC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oYix4LE4pe2lmKCJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihiLHgsTik7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXJldHVybiB0aGlz''@;'; put 'put ''Ll9pbml0QXJyYXkoYix4LE4pOyJoZXgiPT09eCYmKHg9MTYpLHYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNik7dmFyIEY9MDsiLSI9PT0oYj1iLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKEYrKyx0aGlzLm5lZ2F0aXZlPTEpLEY8Yi5sZW5ndGgmJigxNj09PXg/dGhpcy5f''@;'; put 'put ''cGFyc2VIZXgoYixGLE4pOih0aGlzLl9wYXJzZUJhc2UoYix4LEYpLCJsZSI9PT1OJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseCxOKSkpfSxILnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihiLHgsTil7YjwwJiYodGhpcy5uZWdhdGl2ZT0xLGI9LWIpLGI8NjcxMDg4''@;'; put 'put ''NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmJdLHRoaXMubGVuZ3RoPTEpOmI8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToodihiPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYz''@;'; put 'put ''JmIsYi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09TiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsTil9LEgucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oYix4LE4pe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiLmxlbmd0aCksYi5sZW5n''@;'; put 'put ''dGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoYi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09MDt2YXIg''@;'; put 'put ''ZyxDLE09MDtpZigiYmUiPT09Tilmb3IoRj1iLmxlbmd0aC0xLGc9MDtGPj0wO0YtPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltGXXxiW0YtMV08PDh8YltGLTJdPDwxNik8PE0mNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1NJjY3MTA4ODYzLChNKz0yNCk+PTI2JiYoTS09MjYsZysr''@;'; put 'put ''KTtlbHNlIGlmKCJsZSI9PT1OKWZvcihGPTAsZz0wO0Y8Yi5sZW5ndGg7Ris9Myl0aGlzLndvcmRzW2ddfD0oQz1iW0ZdfGJbRisxXTw8OHxiW0YrMl08PDE2KTw8TSY2NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LU0mNjcxMDg4NjMsKE0rPTI0KT49MjYmJihNLT0yNixnKyspO3Jl''@;'; put 'put ''dHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihiLHgsTil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChiLmxlbmd0aC14KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBGPTA7Rjx0aGlzLmxlbmd0aDtGKyspdGhpcy53''@;'; put 'put ''b3Jkc1tGXT0wO3ZhciBNLGc9MCxDPTA7aWYoImJlIj09PU4pZm9yKEY9Yi5sZW5ndGgtMTtGPj14O0YtPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7ZWxzZSBmb3IoRj0oYi5sZW5n''@;'; put 'put ''dGgteCklMj09MD94KzE6eDtGPGIubGVuZ3RoO0YrPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGIs''@;'; put 'put ''eCxOKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgRj0wLGc9MTtnPD02NzEwODg2MztnKj14KUYrKztGLS0sZz1nL3h8MDtmb3IodmFyIEM9Yi5sZW5ndGgtTixNPUMlRix5PU1hdGgubWluKEMsQy1NKStOLHA9MCxTPU47Uzx5O1MrPUYpcD1KKGIsUyxTK0YseCksdGhp''@;'; put 'put ''cy5pbXVsbihnKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09TSl7dmFyIFE9MTtmb3IocD1KKGIsUyxiLmxlbmd0aCx4KSxTPTA7UzxNO1MrKylRKj14O3RoaXMuaW11bG4oUSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0''@;'; put 'put ''P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGIpe2Iud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoO3grKyliLndvcmRzW3hdPXRoaXMud29yZHNbeF07Yi5s''@;'; put 'put ''ZW5ndGg9dGhpcy5sZW5ndGgsYi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGIucmVkPXRoaXMucmVkfSxILnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyBIKG51bGwpO3JldHVybiB0aGlzLmNvcHkoYiksYn0sSC5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihiKXtmb3Io''@;'; put 'put ''O3RoaXMubGVuZ3RoPGI7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sSC5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9u''@;'; put 'put ''b3JtU2lnbigpfSxILnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sSC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6''@;'; put 'put ''ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgST1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxSPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2''@;'; put 'put ''LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLEU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3''@;'; put 'put ''NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2''@;'; put 'put ''MDQ2NjE3Nl07ZnVuY3Rpb24gaihZLGIseCl7eC5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlkubmVnYXRpdmU7dmFyIE49WS5sZW5ndGgrYi5sZW5ndGh8MDt4Lmxlbmd0aD1OLE49Ti0xfDA7dmFyIEY9MHxZLndvcmRzWzBdLGc9MHxiLndvcmRzWzBdLEM9RipnLHk9Qy82NzEwODg2NHwwO3gud29y''@;'; put 'put ''ZHNbMF09NjcxMDg4NjMmQztmb3IodmFyIHA9MTtwPE47cCsrKXtmb3IodmFyIFM9eT4+PjI2LFE9NjcxMDg4NjMmeSxyZT1NYXRoLm1pbihwLGIubGVuZ3RoLTEpLGZlPU1hdGgubWF4KDAscC1ZLmxlbmd0aCsxKTtmZTw9cmU7ZmUrKylTKz0oQz0oRj0wfFkud29yZHNbcC1mZXwwXSkqKGc9''@;'; put 'put ''MHxiLndvcmRzW2ZlXSkrUSkvNjcxMDg4NjR8MCxRPTY3MTA4ODYzJkM7eC53b3Jkc1twXT0wfFEseT0wfFN9cmV0dXJuIDAhPT15P3gud29yZHNbcF09MHx5OngubGVuZ3RoLS0seC5zdHJpcCgpfUgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGIseCl7dmFyIE47aWYoeD0wfHh8fDEs''@;'; put 'put ''MTY9PT0oYj1ifHwxMCl8fCJoZXgiPT09Yil7Tj0iIjtmb3IodmFyIEY9MCxnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLndvcmRzW0NdLHk9KDE2Nzc3MjE1JihNPDxGfGcpKS50b1N0cmluZygxNik7Tj0wIT0oZz1NPj4+MjQtRiYxNjc3NzIxNSl8fEMhPT10aGlzLmxl''@;'; put 'put ''bmd0aC0xP0lbNi15Lmxlbmd0aF0reStOOnkrTiwoRis9Mik+PTI2JiYoRi09MjYsQy0tKX1mb3IoMCE9PWcmJihOPWcudG9TdHJpbmcoMTYpK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn1pZihiPT09KDB8YikmJmI+PTIm''@;'; put 'put ''JmI8PTM2KXt2YXIgcD1SW2JdLFM9RVtiXTtOPSIiO3ZhciBRPXRoaXMuY2xvbmUoKTtmb3IoUS5uZWdhdGl2ZT0wOyFRLmlzWmVybygpOyl7dmFyIHJlPVEubW9kbihTKS50b1N0cmluZyhiKTtOPShRPVEuaWRpdm4oUykpLmlzWmVybygpP3JlK046SVtwLXJlLmxlbmd0aF0rcmUrTn1mb3Io''@;'; put 'put ''dGhpcy5pc1plcm8oKSYmKE49IjAiK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn12KCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEgucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGI9''@;'; put 'put ''dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2IrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9iKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmdighMSwiTnVt''@;'; put 'put ''YmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWI6Yn0sSC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxILnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihiLHgpe3JldHVybiB2''@;'; put 'put ''KHR5cGVvZiBCPCJ1IiksdGhpcy50b0FycmF5TGlrZShCLGIseCl9LEgucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxiLHgpfSxILnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihiLHgsTil7dmFyIEY9dGhpcy5ieXRl''@;'; put 'put ''TGVuZ3RoKCksZz1OfHxNYXRoLm1heCgxLEYpO3YoRjw9ZywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHYoZz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHkscCxDPSJsZSI9PT14LE09bmV3IGIoZyksUz10aGlzLmNs''@;'; put 'put ''b25lKCk7aWYoQyl7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtwXT15O2Zvcig7cDxnO3ArKylNW3BdPTB9ZWxzZXtmb3IocD0wO3A8Zy1GO3ArKylNW3BdPTA7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNo''@;'; put 'put ''cm4oOCksTVtnLXAtMV09eX1yZXR1cm4gTX0sSC5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGIpe3JldHVybiAzMi1NYXRoLmNsejMyKGIpfTpmdW5jdGlvbihiKXt2YXIgeD1iLE49MDtyZXR1cm4geD49NDA5NiYmKE4rPTEzLHg+Pj49MTMpLHg+PTY0JiYoTis9''@;'; put 'put ''Nyx4Pj4+PTcpLHg+PTgmJihOKz00LHg+Pj49NCkseD49MiYmKE4rPTIseD4+Pj0yKSxOK3h9LEgucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihiKXtpZigwPT09YilyZXR1cm4gMjY7dmFyIHg9YixOPTA7cmV0dXJuIDgxOTEmeHx8KE4rPTEzLHg+Pj49MTMpLDEyNyZ4fHwoTis9Nyx4''@;'; put 'put ''Pj4+PTcpLDE1Jnh8fChOKz00LHg+Pj49NCksMyZ4fHwoTis9Mix4Pj4+PTIpLDEmeHx8TisrLE59LEgucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEp''@;'; put 'put ''K3h9LEgucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGI9MCx4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBOPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbeF0pO2lmKGIrPU4sMjYhPT1OKWJyZWFrfXJldHVybiBifSxI''@;'; put 'put ''LnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxILnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oYikuaWFkZG4oMSk6dGhpcy5jbG9u''@;'; put 'put ''ZSgpfSxILnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy50ZXN0bihiLTEpP3RoaXMubm90bihiKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxILnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sSC5wcm90''@;'; put 'put ''b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEgucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEgucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxl''@;'; put 'put ''bmd0aDxiLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgeD0wO3g8Yi5sZW5ndGg7eCsrKXRoaXMud29yZHNbeF09dGhpcy53b3Jkc1t4XXxiLndvcmRzW3hdO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlvcj1mdW5jdGlvbihiKXtyZXR1cm4g''@;'; put 'put ''digwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxILnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihiKTpiLmNsb25lKCkuaW9yKHRoaXMpfSxILnByb3RvdHlwZS51b3I9ZnVuY3Rp''@;'; put 'put ''b24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxILnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihiKXt2YXIgeDt4PXRoaXMubGVuZ3RoPmIubGVuZ3RoP2I6dGhpcztmb3IodmFyIE49MDtOPHgubGVuZ3Ro''@;'; put 'put ''O04rKyl0aGlzLndvcmRzW05dPXRoaXMud29yZHNbTl0mYi53b3Jkc1tOXTtyZXR1cm4gdGhpcy5sZW5ndGg9eC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5k''@;'; put 'put ''KGIpfSxILnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxILnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlz''@;'; put 'put ''LmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxILnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgeCxOO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyh4PXRoaXMsTj1iKTooeD1iLE49dGhpcyk7Zm9yKHZhciBGPTA7RjxOLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tG''@;'; put 'put ''XT14LndvcmRzW0ZdXk4ud29yZHNbRl07aWYodGhpcyE9PXgpZm9yKDtGPHgubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXgud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPXgubGVuZ3RoLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0o''@;'; put 'put ''dGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihiKX0sSC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihiKTpiLmNsb25lKCkuaXhvcih0aGlzKX0sSC5wcm90b3R5cGUudXhvcj1mdW5jdGlv''@;'; put 'put ''bihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGIpOmIuY2xvbmUoKS5pdXhvcih0aGlzKX0sSC5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciB4PTB8TWF0aC5jZWlsKGIvMjYpLE49YiUy''@;'; put 'put ''Njt0aGlzLl9leHBhbmQoeCksTj4wJiZ4LS07Zm9yKHZhciBGPTA7Rjx4O0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJn50aGlzLndvcmRzW0ZdO3JldHVybiBOPjAmJih0aGlzLndvcmRzW0ZdPX50aGlzLndvcmRzW0ZdJjY3MTA4ODYzPj4yNi1OKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90''@;'; put 'put ''eXBlLm5vdG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihiKX0sSC5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihiLHgpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgTj1iLzI2fDAsRj1iJTI2O3JldHVybiB0aGlzLl9leHBhbmQoTisxKSx0aGlzLndvcmRz''@;'; put 'put ''W05dPXg/dGhpcy53b3Jkc1tOXXwxPDxGOnRoaXMud29yZHNbTl0mfigxPDxGKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYil7dmFyIHgsTixGO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHg9dGhp''@;'; put 'put ''cy5pc3ViKGIpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIGIubmVnYXRpdmU9MCx4PXRoaXMuaXN1YihiKSxiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5iLmxlbmd0aD8o''@;'; put 'put ''Tj10aGlzLEY9Yik6KE49YixGPXRoaXMpO2Zvcih2YXIgZz0wLEM9MDtDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJih4PSgwfE4ud29yZHNbQ10pKygwfEYud29yZHNbQ10pK2cpLGc9eD4+PjI2O2Zvcig7MCE9PWcmJkM8Ti5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109''@;'; put 'put ''NjcxMDg4NjMmKHg9KDB8Ti53b3Jkc1tDXSkrZyksZz14Pj4+MjY7aWYodGhpcy5sZW5ndGg9Ti5sZW5ndGgsMCE9PWcpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Zyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoTiE9PXRoaXMpZm9yKDtDPE4ubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPU4ud29y''@;'; put 'put ''ZHNbQ107cmV0dXJuIHRoaXN9LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiKXt2YXIgeDtyZXR1cm4gMCE9PWIubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAseD10aGlzLnN1YihiKSxiLm5lZ2F0aXZlXj0xLHgpOjA9PT1iLm5lZ2F0aXZlJiYwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHg9Yi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHgpOnRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGIpOmIuY2xvbmUoKS5pYWRkKHRoaXMpfSxILnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIpe2lmKDAhPT1iLm5lZ2F0''@;'; put 'put ''aXZlKXtiLm5lZ2F0aXZlPTA7dmFyIHg9dGhpcy5pYWRkKGIpO3JldHVybiBiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIg''@;'; put 'put ''RixnLE49dGhpcy5jbXAoYik7aWYoMD09PU4pcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO04+MD8oRj10aGlzLGc9Yik6KEY9YixnPXRoaXMpO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKylDPSh4PSgwfEYud29yZHNbTV0p''@;'; put 'put ''LSgwfGcud29yZHNbTV0pK0MpPj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJng7Zm9yKDswIT09QyYmTTxGLmxlbmd0aDtNKyspQz0oeD0oMHxGLndvcmRzW01dKStDKT4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ4O2lmKDA9PT1DJiZNPEYubGVuZ3RoJiZGIT09dGhpcylmb3IoO008''@;'; put 'put ''Ri5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Ri53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsTSksRiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaXN1YihiKX07dmFyIFY9ZnVuY3Rpb24oYix4LE4pe3ZhciB5LHAsUyxGPWIud29yZHMsZz14LndvcmRzLEM9Ti53b3JkcyxNPTAsUT0wfEZbMF0scmU9ODE5MSZRLGZlPVE+Pj4xMyxtZT0wfEZbMV0sa2U9ODE5MSZtZSxUZT1tZT4+PjEzLFBlPTB8RlsyXSxGZT04MTkxJlBlLE5l''@;'; put 'put ''PVBlPj4+MTMsTGU9MHxGWzNdLEJlPTgxOTEmTGUsSGU9TGU+Pj4xMyxRZT0wfEZbNF0sbXQ9ODE5MSZRZSxLZT1RZT4+PjEzLHdlPTB8Rls1XSxJZT04MTkxJndlLE9lPXdlPj4+MTMsZXQ9MHxGWzZdLG50PTgxOTEmZXQscWU9ZXQ+Pj4xMyxodD0wfEZbN10sRWU9ODE5MSZodCxEZT1odD4+''@;'; put 'put ''PjEzLCRlPTB8Rls4XSxhdD04MTkxJiRlLGN0PSRlPj4+MTMsT3Q9MHxGWzldLFB0PTgxOTEmT3QsQXQ9T3Q+Pj4xMyxKdD0wfGdbMF0sbW49ODE5MSZKdCxOdD1KdD4+PjEzLGJuPTB8Z1sxXSxHbj04MTkxJmJuLG9uPWJuPj4+MTMsJG49MHxnWzJdLE5uPTgxOTEmJG4scHQ9JG4+Pj4xMyxw''@;'; put 'put ''bj0wfGdbM10saG49ODE5MSZwbixDdD1wbj4+PjEzLGVuPTB8Z1s0XSxfdD04MTkxJmVuLFZ0PWVuPj4+MTMsX249MHxnWzVdLG90PTgxOTEmX24sSXQ9X24+Pj4xMyxubj0wfGdbNl0sRHQ9ODE5MSZubix2dD1ubj4+PjEzLEd0PTB8Z1s3XSxMbj04MTkxJkd0LHp0PUd0Pj4+MTMsTW49MHxn''@;'; put 'put ''WzhdLFRuPTgxOTEmTW4sc249TW4+Pj4xMyxCbj0wfGdbOV0sRm49ODE5MSZCbixxdD1Cbj4+PjEzO04ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPTE5O3ZhciBIbj0oTSsoeT1NYXRoLmltdWwocmUsbW4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKHJlLE50''@;'; put 'put ''KSkrTWF0aC5pbXVsKGZlLG1uKXwwKSk8PDEzKXwwO009KChTPU1hdGguaW11bChmZSxOdCkpKyhwPj4+MTMpfDApKyhIbj4+PjI2KXwwLEhuJj02NzEwODg2Myx5PU1hdGguaW11bChrZSxtbikscD0ocD1NYXRoLmltdWwoa2UsTnQpKStNYXRoLmltdWwoVGUsbW4pfDAsUz1NYXRoLmltdWwo''@;'; put 'put ''VGUsTnQpO3ZhciBpaT0oTSsoeT15K01hdGguaW11bChyZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLG9uKXwwKStNYXRoLmltdWwoZmUsR24pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsb24pfDApKyhwPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02''@;'; put 'put ''NzEwODg2Myx5PU1hdGguaW11bChGZSxtbikscD0ocD1NYXRoLmltdWwoRmUsTnQpKStNYXRoLmltdWwoTmUsbW4pfDAsUz1NYXRoLmltdWwoTmUsTnQpLHk9eStNYXRoLmltdWwoa2UsR24pfDAscD0ocD1wK01hdGguaW11bChrZSxvbil8MCkrTWF0aC5pbXVsKFRlLEduKXwwLFM9UytNYXRo''@;'; put 'put ''LmltdWwoVGUsb24pfDA7dmFyIGNuPShNKyh5PXkrTWF0aC5pbXVsKHJlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUscHQpfDApK01hdGguaW11bChmZSxObil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxwdCl8MCkrKHA+Pj4xMyl8MCkrKGNuPj4+MjYp''@;'; put 'put ''fDAsY24mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEJlLG1uKSxwPShwPU1hdGguaW11bChCZSxOdCkpK01hdGguaW11bChIZSxtbil8MCxTPU1hdGguaW11bChIZSxOdCkseT15K01hdGguaW11bChGZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLG9uKXwwKStNYXRoLmltdWwoTmUsR24pfDAs''@;'; put 'put ''Uz1TK01hdGguaW11bChOZSxvbil8MCx5PXkrTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UscHQpfDApK01hdGguaW11bChUZSxObil8MCxTPVMrTWF0aC5pbXVsKFRlLHB0KXwwO3ZhciBqbj0oTSsoeT15K01hdGguaW11bChyZSxobil8MCl8MCkrKCg4MTkxJihwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKHJlLEN0KXwwKStNYXRoLmltdWwoZmUsaG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsQ3QpfDApKyhwPj4+MTMpfDApKyhqbj4+PjI2KXwwLGpuJj02NzEwODg2Myx5PU1hdGguaW11bChtdCxtbikscD0ocD1NYXRoLmltdWwobXQsTnQpKStNYXRoLmlt''@;'; put 'put ''dWwoS2UsbW4pfDAsUz1NYXRoLmltdWwoS2UsTnQpLHk9eStNYXRoLmltdWwoQmUsR24pfDAscD0ocD1wK01hdGguaW11bChCZSxvbil8MCkrTWF0aC5pbXVsKEhlLEduKXwwLFM9UytNYXRoLmltdWwoSGUsb24pfDAseT15K01hdGguaW11bChGZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEZl''@;'; put 'put ''LHB0KXwwKStNYXRoLmltdWwoTmUsTm4pfDAsUz1TK01hdGguaW11bChOZSxwdCl8MCx5PXkrTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsQ3QpfDApK01hdGguaW11bChUZSxobil8MCxTPVMrTWF0aC5pbXVsKFRlLEN0KXwwO3ZhciBYcj0oTSsoeT15K01hdGguaW11''@;'; put 'put ''bChyZSxfdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLFZ0KXwwKStNYXRoLmltdWwoZmUsX3QpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsVnQpfDApKyhwPj4+MTMpfDApKyhYcj4+PjI2KXwwLFhyJj02NzEwODg2Myx5PU1hdGguaW11bChJZSxtbikscD0o''@;'; put 'put ''cD1NYXRoLmltdWwoSWUsTnQpKStNYXRoLmltdWwoT2UsbW4pfDAsUz1NYXRoLmltdWwoT2UsTnQpLHk9eStNYXRoLmltdWwobXQsR24pfDAscD0ocD1wK01hdGguaW11bChtdCxvbil8MCkrTWF0aC5pbXVsKEtlLEduKXwwLFM9UytNYXRoLmltdWwoS2Usb24pfDAseT15K01hdGguaW11bChC''@;'; put 'put ''ZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHB0KXwwKStNYXRoLmltdWwoSGUsTm4pfDAsUz1TK01hdGguaW11bChIZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEZlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsQ3QpfDApK01hdGguaW11bChOZSxobil8MCxTPVMrTWF0aC5pbXVsKE5lLEN0''@;'; put 'put ''KXwwLHk9eStNYXRoLmltdWwoa2UsX3QpfDAscD0ocD1wK01hdGguaW11bChrZSxWdCl8MCkrTWF0aC5pbXVsKFRlLF90KXwwLFM9UytNYXRoLmltdWwoVGUsVnQpfDA7dmFyIHZpPShNKyh5PXkrTWF0aC5pbXVsKHJlLG90KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsSXQp''@;'; put 'put ''fDApK01hdGguaW11bChmZSxvdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxJdCl8MCkrKHA+Pj4xMyl8MCkrKHZpPj4+MjYpfDAsdmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKG50LG1uKSxwPShwPU1hdGguaW11bChudCxOdCkpK01hdGguaW11bChxZSxtbil8MCxTPU1hdGgu''@;'; put 'put ''aW11bChxZSxOdCkseT15K01hdGguaW11bChJZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEllLG9uKXwwKStNYXRoLmltdWwoT2UsR24pfDAsUz1TK01hdGguaW11bChPZSxvbil8MCx5PXkrTWF0aC5pbXVsKG10LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwobXQscHQpfDApK01hdGguaW11bChL''@;'; put 'put ''ZSxObil8MCxTPVMrTWF0aC5pbXVsKEtlLHB0KXwwLHk9eStNYXRoLmltdWwoQmUsaG4pfDAscD0ocD1wK01hdGguaW11bChCZSxDdCl8MCkrTWF0aC5pbXVsKEhlLGhuKXwwLFM9UytNYXRoLmltdWwoSGUsQ3QpfDAseT15K01hdGguaW11bChGZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEZl''@;'; put 'put ''LFZ0KXwwKStNYXRoLmltdWwoTmUsX3QpfDAsUz1TK01hdGguaW11bChOZSxWdCl8MCx5PXkrTWF0aC5pbXVsKGtlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsSXQpfDApK01hdGguaW11bChUZSxvdCl8MCxTPVMrTWF0aC5pbXVsKFRlLEl0KXwwO3ZhciBFcj0oTSsoeT15K01hdGguaW11''@;'; put 'put ''bChyZSxEdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHZ0KXwwKStNYXRoLmltdWwoZmUsRHQpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsdnQpfDApKyhwPj4+MTMpfDApKyhFcj4+PjI2KXwwLEVyJj02NzEwODg2Myx5PU1hdGguaW11bChFZSxtbikscD0o''@;'; put 'put ''cD1NYXRoLmltdWwoRWUsTnQpKStNYXRoLmltdWwoRGUsbW4pfDAsUz1NYXRoLmltdWwoRGUsTnQpLHk9eStNYXRoLmltdWwobnQsR24pfDAscD0ocD1wK01hdGguaW11bChudCxvbil8MCkrTWF0aC5pbXVsKHFlLEduKXwwLFM9UytNYXRoLmltdWwocWUsb24pfDAseT15K01hdGguaW11bChJ''@;'; put 'put ''ZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEllLHB0KXwwKStNYXRoLmltdWwoT2UsTm4pfDAsUz1TK01hdGguaW11bChPZSxwdCl8MCx5PXkrTWF0aC5pbXVsKG10LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsQ3QpfDApK01hdGguaW11bChLZSxobil8MCxTPVMrTWF0aC5pbXVsKEtlLEN0''@;'; put 'put ''KXwwLHk9eStNYXRoLmltdWwoQmUsX3QpfDAscD0ocD1wK01hdGguaW11bChCZSxWdCl8MCkrTWF0aC5pbXVsKEhlLF90KXwwLFM9UytNYXRoLmltdWwoSGUsVnQpfDAseT15K01hdGguaW11bChGZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEl0KXwwKStNYXRoLmltdWwoTmUsb3QpfDAs''@;'; put 'put ''Uz1TK01hdGguaW11bChOZSxJdCl8MCx5PXkrTWF0aC5pbXVsKGtlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsdnQpfDApK01hdGguaW11bChUZSxEdCl8MCxTPVMrTWF0aC5pbXVsKFRlLHZ0KXwwO3ZhciBZaT0oTSsoeT15K01hdGguaW11bChyZSxMbil8MCl8MCkrKCg4MTkxJihwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKHJlLHp0KXwwKStNYXRoLmltdWwoZmUsTG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsenQpfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2Myx5PU1hdGguaW11bChhdCxtbikscD0ocD1NYXRoLmltdWwoYXQsTnQpKStNYXRoLmlt''@;'; put 'put ''dWwoY3QsbW4pfDAsUz1NYXRoLmltdWwoY3QsTnQpLHk9eStNYXRoLmltdWwoRWUsR24pfDAscD0ocD1wK01hdGguaW11bChFZSxvbil8MCkrTWF0aC5pbXVsKERlLEduKXwwLFM9UytNYXRoLmltdWwoRGUsb24pfDAseT15K01hdGguaW11bChudCxObil8MCxwPShwPXArTWF0aC5pbXVsKG50''@;'; put 'put ''LHB0KXwwKStNYXRoLmltdWwocWUsTm4pfDAsUz1TK01hdGguaW11bChxZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEllLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsQ3QpfDApK01hdGguaW11bChPZSxobil8MCxTPVMrTWF0aC5pbXVsKE9lLEN0KXwwLHk9eStNYXRoLmltdWwobXQsX3QpfDAs''@;'; put 'put ''cD0ocD1wK01hdGguaW11bChtdCxWdCl8MCkrTWF0aC5pbXVsKEtlLF90KXwwLFM9UytNYXRoLmltdWwoS2UsVnQpfDAseT15K01hdGguaW11bChCZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEJlLEl0KXwwKStNYXRoLmltdWwoSGUsb3QpfDAsUz1TK01hdGguaW11bChIZSxJdCl8MCx5PXkr''@;'; put 'put ''TWF0aC5pbXVsKEZlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsdnQpfDApK01hdGguaW11bChOZSxEdCl8MCxTPVMrTWF0aC5pbXVsKE5lLHZ0KXwwLHk9eStNYXRoLmltdWwoa2UsTG4pfDAscD0ocD1wK01hdGguaW11bChrZSx6dCl8MCkrTWF0aC5pbXVsKFRlLExuKXwwLFM9UytNYXRo''@;'; put 'put ''LmltdWwoVGUsenQpfDA7dmFyIEpyPShNKyh5PXkrTWF0aC5pbXVsKHJlLFRuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsc24pfDApK01hdGguaW11bChmZSxUbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxzbil8MCkrKHA+Pj4xMyl8MCkrKEpyPj4+MjYp''@;'; put 'put ''fDAsSnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG1uKSxwPShwPU1hdGguaW11bChQdCxOdCkpK01hdGguaW11bChBdCxtbil8MCxTPU1hdGguaW11bChBdCxOdCkseT15K01hdGguaW11bChhdCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LG9uKXwwKStNYXRoLmltdWwoY3QsR24pfDAs''@;'; put 'put ''Uz1TK01hdGguaW11bChjdCxvbil8MCx5PXkrTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscHQpfDApK01hdGguaW11bChEZSxObil8MCxTPVMrTWF0aC5pbXVsKERlLHB0KXwwLHk9eStNYXRoLmltdWwobnQsaG4pfDAscD0ocD1wK01hdGguaW11bChudCxDdCl8MCkr''@;'; put 'put ''TWF0aC5pbXVsKHFlLGhuKXwwLFM9UytNYXRoLmltdWwocWUsQ3QpfDAseT15K01hdGguaW11bChJZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLFZ0KXwwKStNYXRoLmltdWwoT2UsX3QpfDAsUz1TK01hdGguaW11bChPZSxWdCl8MCx5PXkrTWF0aC5pbXVsKG10LG90KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwobXQsSXQpfDApK01hdGguaW11bChLZSxvdCl8MCxTPVMrTWF0aC5pbXVsKEtlLEl0KXwwLHk9eStNYXRoLmltdWwoQmUsRHQpfDAscD0ocD1wK01hdGguaW11bChCZSx2dCl8MCkrTWF0aC5pbXVsKEhlLER0KXwwLFM9UytNYXRoLmltdWwoSGUsdnQpfDAseT15K01hdGguaW11''@;'; put 'put ''bChGZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHp0KXwwKStNYXRoLmltdWwoTmUsTG4pfDAsUz1TK01hdGguaW11bChOZSx6dCl8MCx5PXkrTWF0aC5pbXVsKGtlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usc24pfDApK01hdGguaW11bChUZSxUbil8MCxTPVMrTWF0aC5pbXVsKFRl''@;'; put 'put ''LHNuKXwwO3ZhciBhbz0oTSsoeT15K01hdGguaW11bChyZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHF0KXwwKStNYXRoLmltdWwoZmUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUscXQpfDApKyhwPj4+MTMpfDApKyhhbz4+PjI2KXwwLGFvJj02''@;'; put 'put ''NzEwODg2Myx5PU1hdGguaW11bChQdCxHbikscD0ocD1NYXRoLmltdWwoUHQsb24pKStNYXRoLmltdWwoQXQsR24pfDAsUz1NYXRoLmltdWwoQXQsb24pLHk9eStNYXRoLmltdWwoYXQsTm4pfDAscD0ocD1wK01hdGguaW11bChhdCxwdCl8MCkrTWF0aC5pbXVsKGN0LE5uKXwwLFM9UytNYXRo''@;'; put 'put ''LmltdWwoY3QscHQpfDAseT15K01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLEN0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsUz1TK01hdGguaW11bChEZSxDdCl8MCx5PXkrTWF0aC5pbXVsKG50LF90KXwwLHA9KHA9cCtNYXRoLmltdWwobnQsVnQpfDApK01hdGguaW11''@;'; put 'put ''bChxZSxfdCl8MCxTPVMrTWF0aC5pbXVsKHFlLFZ0KXwwLHk9eStNYXRoLmltdWwoSWUsb3QpfDAscD0ocD1wK01hdGguaW11bChJZSxJdCl8MCkrTWF0aC5pbXVsKE9lLG90KXwwLFM9UytNYXRoLmltdWwoT2UsSXQpfDAseT15K01hdGguaW11bChtdCxEdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KG10LHZ0KXwwKStNYXRoLmltdWwoS2UsRHQpfDAsUz1TK01hdGguaW11bChLZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEJlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsenQpfDApK01hdGguaW11bChIZSxMbil8MCxTPVMrTWF0aC5pbXVsKEhlLHp0KXwwLHk9eStNYXRoLmltdWwoRmUsVG4p''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChGZSxzbil8MCkrTWF0aC5pbXVsKE5lLFRuKXwwLFM9UytNYXRoLmltdWwoTmUsc24pfDA7dmFyIEJyPShNKyh5PXkrTWF0aC5pbXVsKGtlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoa2UscXQpfDApK01hdGguaW11bChUZSxGbil8MCkp''@;'; put 'put ''PDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChUZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LE5uKSxwPShwPU1hdGguaW11bChQdCxwdCkpK01hdGguaW11bChBdCxObil8MCxTPU1hdGguaW11bChBdCxwdCkseT15K01hdGguaW11''@;'; put 'put ''bChhdCxobil8MCxwPShwPXArTWF0aC5pbXVsKGF0LEN0KXwwKStNYXRoLmltdWwoY3QsaG4pfDAsUz1TK01hdGguaW11bChjdCxDdCl8MCx5PXkrTWF0aC5pbXVsKEVlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsVnQpfDApK01hdGguaW11bChEZSxfdCl8MCxTPVMrTWF0aC5pbXVsKERl''@;'; put 'put ''LFZ0KXwwLHk9eStNYXRoLmltdWwobnQsb3QpfDAscD0ocD1wK01hdGguaW11bChudCxJdCl8MCkrTWF0aC5pbXVsKHFlLG90KXwwLFM9UytNYXRoLmltdWwocWUsSXQpfDAseT15K01hdGguaW11bChJZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLHZ0KXwwKStNYXRoLmltdWwoT2UsRHQp''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChPZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG10LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsenQpfDApK01hdGguaW11bChLZSxMbil8MCxTPVMrTWF0aC5pbXVsKEtlLHp0KXwwLHk9eStNYXRoLmltdWwoQmUsVG4pfDAscD0ocD1wK01hdGguaW11bChCZSxzbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEhlLFRuKXwwLFM9UytNYXRoLmltdWwoSGUsc24pfDA7dmFyIEppPShNKyh5PXkrTWF0aC5pbXVsKEZlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUscXQpfDApK01hdGguaW11bChOZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChO''@;'; put 'put ''ZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LGhuKSxwPShwPU1hdGguaW11bChQdCxDdCkpK01hdGguaW11bChBdCxobil8MCxTPU1hdGguaW11bChBdCxDdCkseT15K01hdGguaW11bChhdCxfdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KGF0LFZ0KXwwKStNYXRoLmltdWwoY3QsX3QpfDAsUz1TK01hdGguaW11bChjdCxWdCl8MCx5PXkrTWF0aC5pbXVsKEVlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSXQpfDApK01hdGguaW11bChEZSxvdCl8MCxTPVMrTWF0aC5pbXVsKERlLEl0KXwwLHk9eStNYXRoLmltdWwobnQsRHQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChudCx2dCl8MCkrTWF0aC5pbXVsKHFlLER0KXwwLFM9UytNYXRoLmltdWwocWUsdnQpfDAseT15K01hdGguaW11bChJZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEllLHp0KXwwKStNYXRoLmltdWwoT2UsTG4pfDAsUz1TK01hdGguaW11bChPZSx6dCl8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKG10LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsc24pfDApK01hdGguaW11bChLZSxUbil8MCxTPVMrTWF0aC5pbXVsKEtlLHNuKXwwO3ZhciB0bz0oTSsoeT15K01hdGguaW11bChCZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEJlLHF0KXwwKStN''@;'; put 'put ''YXRoLmltdWwoSGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoSGUscXQpfDApKyhwPj4+MTMpfDApKyh0bz4+PjI2KXwwLHRvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxfdCkscD0ocD1NYXRoLmltdWwoUHQsVnQpKStNYXRoLmltdWwoQXQsX3QpfDAsUz1NYXRoLmltdWwo''@;'; put 'put ''QXQsVnQpLHk9eStNYXRoLmltdWwoYXQsb3QpfDAscD0ocD1wK01hdGguaW11bChhdCxJdCl8MCkrTWF0aC5pbXVsKGN0LG90KXwwLFM9UytNYXRoLmltdWwoY3QsSXQpfDAseT15K01hdGguaW11bChFZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLHZ0KXwwKStNYXRoLmltdWwoRGUsRHQp''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChEZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG50LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsenQpfDApK01hdGguaW11bChxZSxMbil8MCxTPVMrTWF0aC5pbXVsKHFlLHp0KXwwLHk9eStNYXRoLmltdWwoSWUsVG4pfDAscD0ocD1wK01hdGguaW11bChJZSxzbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKE9lLFRuKXwwLFM9UytNYXRoLmltdWwoT2Usc24pfDA7dmFyIGNvPShNKyh5PXkrTWF0aC5pbXVsKG10LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobXQscXQpfDApK01hdGguaW11bChLZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChL''@;'; put 'put ''ZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG90KSxwPShwPU1hdGguaW11bChQdCxJdCkpK01hdGguaW11bChBdCxvdCl8MCxTPU1hdGguaW11bChBdCxJdCkseT15K01hdGguaW11bChhdCxEdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KGF0LHZ0KXwwKStNYXRoLmltdWwoY3QsRHQpfDAsUz1TK01hdGguaW11bChjdCx2dCl8MCx5PXkrTWF0aC5pbXVsKEVlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsenQpfDApK01hdGguaW11bChEZSxMbil8MCxTPVMrTWF0aC5pbXVsKERlLHp0KXwwLHk9eStNYXRoLmltdWwobnQsVG4p''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChudCxzbil8MCkrTWF0aC5pbXVsKHFlLFRuKXwwLFM9UytNYXRoLmltdWwocWUsc24pfDA7dmFyIGxvPShNKyh5PXkrTWF0aC5pbXVsKEllLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoSWUscXQpfDApK01hdGguaW11bChPZSxGbil8MCkp''@;'; put 'put ''PDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChPZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LER0KSxwPShwPU1hdGguaW11bChQdCx2dCkpK01hdGguaW11bChBdCxEdCl8MCxTPU1hdGguaW11bChBdCx2dCkseT15K01hdGguaW11''@;'; put 'put ''bChhdCxMbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHp0KXwwKStNYXRoLmltdWwoY3QsTG4pfDAsUz1TK01hdGguaW11bChjdCx6dCl8MCx5PXkrTWF0aC5pbXVsKEVlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsc24pfDApK01hdGguaW11bChEZSxUbil8MCxTPVMrTWF0aC5pbXVsKERl''@;'; put 'put ''LHNuKXwwO3ZhciBzbz0oTSsoeT15K01hdGguaW11bChudCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG50LHF0KXwwKStNYXRoLmltdWwocWUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwocWUscXQpfDApKyhwPj4+MTMpfDApKyhzbz4+PjI2KXwwLHNvJj02''@;'; put 'put ''NzEwODg2Myx5PU1hdGguaW11bChQdCxMbikscD0ocD1NYXRoLmltdWwoUHQsenQpKStNYXRoLmltdWwoQXQsTG4pfDAsUz1NYXRoLmltdWwoQXQsenQpLHk9eStNYXRoLmltdWwoYXQsVG4pfDAscD0ocD1wK01hdGguaW11bChhdCxzbil8MCkrTWF0aC5pbXVsKGN0LFRuKXwwLFM9UytNYXRo''@;'; put 'put ''LmltdWwoY3Qsc24pfDA7dmFyIFhpPShNKyh5PXkrTWF0aC5pbXVsKEVlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRWUscXQpfDApK01hdGguaW11bChEZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChEZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYp''@;'; put 'put ''fDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LFRuKSxwPShwPU1hdGguaW11bChQdCxzbikpK01hdGguaW11bChBdCxUbil8MCxTPU1hdGguaW11bChBdCxzbik7dmFyIHBvPShNKyh5PXkrTWF0aC5pbXVsKGF0LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoYXQscXQp''@;'; put 'put ''fDApK01hdGguaW11bChjdCxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChjdCxxdCl8MCkrKHA+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzO3ZhciBfcj0oTSsoeT1NYXRoLmltdWwoUHQsRm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKFB0LHF0KSkrTWF0''@;'; put 'put ''aC5pbXVsKEF0LEZuKXwwKSk8PDEzKXwwO3JldHVybiBNPSgoUz1NYXRoLmltdWwoQXQscXQpKSsocD4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMsQ1swXT1IbixDWzFdPWlpLENbMl09Y24sQ1szXT1qbixDWzRdPVhyLENbNV09dmksQ1s2XT1FcixDWzddPVlpLENbOF09SnIs''@;'; put 'put ''Q1s5XT1hbyxDWzEwXT1CcixDWzExXT1KaSxDWzEyXT10byxDWzEzXT1jbyxDWzE0XT1sbyxDWzE1XT1zbyxDWzE2XT1YaSxDWzE3XT1wbyxDWzE4XT1fciwwIT09TSYmKENbMTldPU0sTi5sZW5ndGgrKyksTn07ZnVuY3Rpb24gVyhZLGIseCl7cmV0dXJuKG5ldyBVKS5tdWxwKFksYix4KX1m''@;'; put 'put ''dW5jdGlvbiBVKFksYil7dGhpcy54PVksdGhpcy55PWJ9TWF0aC5pbXVsfHwoVj1qKSxILnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihiLHgpe3ZhciBOLEY9dGhpcy5sZW5ndGgrYi5sZW5ndGg7cmV0dXJuIE49MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1iLmxlbmd0aD9WKHRoaXMsYix4KTpG''@;'; put 'put ''PDYzP2oodGhpcyxiLHgpOkY8MTAyND9mdW5jdGlvbiBHKFksYix4KXt4Lm5lZ2F0aXZlPWIubmVnYXRpdmVeWS5uZWdhdGl2ZSx4Lmxlbmd0aD1ZLmxlbmd0aCtiLmxlbmd0aDtmb3IodmFyIE49MCxGPTAsZz0wO2c8eC5sZW5ndGgtMTtnKyspe3ZhciBDPUY7Rj0wO2Zvcih2YXIgTT02NzEw''@;'; put 'put ''ODg2MyZOLHk9TWF0aC5taW4oZyxiLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsZy1ZLmxlbmd0aCsxKTtwPD15O3ArKyl7dmFyIGZlPSgwfFkud29yZHNbZy1wXSkqKDB8Yi53b3Jkc1twXSksbWU9NjcxMDg4NjMmZmU7TT02NzEwODg2MyYobWU9bWUrTXwwKSxGKz0oQz0oQz1DKyhmZS82NzEw''@;'; put 'put ''ODg2NHwwKXwwKSsobWU+Pj4yNil8MCk+Pj4yNixDJj02NzEwODg2M314LndvcmRzW2ddPU0sTj1DLEM9Rn1yZXR1cm4gMCE9PU4/eC53b3Jkc1tnXT1OOngubGVuZ3RoLS0seC5zdHJpcCgpfSh0aGlzLGIseCk6Vyh0aGlzLGIseCksTn0sVS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihi''@;'; put 'put ''KXtmb3IodmFyIHg9bmV3IEFycmF5KGIpLE49SC5wcm90b3R5cGUuX2NvdW50Qml0cyhiKS0xLEY9MDtGPGI7RisrKXhbRl09dGhpcy5yZXZCaW4oRixOLGIpO3JldHVybiB4fSxVLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oYix4LE4pe2lmKDA9PT1ifHxiPT09Ti0xKXJldHVybiBiO2Zv''@;'; put 'put ''cih2YXIgRj0wLGc9MDtnPHg7ZysrKUZ8PSgxJmIpPDx4LWctMSxiPj49MTtyZXR1cm4gRn0sVS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihiLHgsTixGLGcsQyl7Zm9yKHZhciBNPTA7TTxDO00rKylGW01dPXhbYltNXV0sZ1tNXT1OW2JbTV1dfSxVLnByb3RvdHlwZS50cmFuc2Zvcm09''@;'; put 'put ''ZnVuY3Rpb24oYix4LE4sRixnLEMpe3RoaXMucGVybXV0ZShDLGIseCxOLEYsZyk7Zm9yKHZhciBNPTE7TTxnO008PD0xKWZvcih2YXIgeT1NPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL3kpLFM9TWF0aC5zaW4oMipNYXRoLlBJL3kpLFE9MDtRPGc7USs9eSlmb3IodmFyIHJlPXAsZmU9Uyxt''@;'; put 'put ''ZT0wO21lPE07bWUrKyl7dmFyIGtlPU5bUSttZV0sVGU9RltRK21lXSxQZT1OW1ErbWUrTV0sRmU9RltRK21lK01dLE5lPXJlKlBlLWZlKkZlO0ZlPXJlKkZlK2ZlKlBlLE5bUSttZV09a2UrKFBlPU5lKSxGW1ErbWVdPVRlK0ZlLE5bUSttZStNXT1rZS1QZSxGW1ErbWUrTV09VGUtRmUsbWUh''@;'; put 'put ''PT15JiYoTmU9cCpyZS1TKmZlLGZlPXAqZmUrUypyZSxyZT1OZSl9fSxVLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihiLHgpe3ZhciBOPTF8TWF0aC5tYXgoeCxiKSxGPTEmTixnPTA7Zm9yKE49Ti8yfDA7TjtOPj4+PTEpZysrO3JldHVybiAxPDxnKzErRn0sVS5wcm90b3R5cGUu''@;'; put 'put ''Y29uanVnYXRlPWZ1bmN0aW9uKGIseCxOKXtpZighKE48PTEpKWZvcih2YXIgRj0wO0Y8Ti8yO0YrKyl7dmFyIGc9YltGXTtiW0ZdPWJbTi1GLTFdLGJbTi1GLTFdPWcsZz14W0ZdLHhbRl09LXhbTi1GLTFdLHhbTi1GLTFdPS1nfX0sVS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9u''@;'; put 'put ''KGIseCl7Zm9yKHZhciBOPTAsRj0wO0Y8eC8yO0YrKyl7dmFyIGc9ODE5MipNYXRoLnJvdW5kKGJbMipGKzFdL3gpK01hdGgucm91bmQoYlsyKkZdL3gpK047YltGXT02NzEwODg2MyZnLE49Zzw2NzEwODg2ND8wOmcvNjcxMDg4NjR8MH1yZXR1cm4gYn0sVS5wcm90b3R5cGUuY29udmVydDEz''@;'; put 'put ''Yj1mdW5jdGlvbihiLHgsTixGKXtmb3IodmFyIGc9MCxDPTA7Qzx4O0MrKylOWzIqQ109ODE5MSYoZys9MHxiW0NdKSxOWzIqQysxXT04MTkxJihnPj4+PTEzKSxnPj4+PTEzO2ZvcihDPTIqeDtDPEY7KytDKU5bQ109MDt2KDA9PT1nKSx2KDA9PSgtODE5MiZnKSl9LFUucHJvdG90eXBlLnN0''@;'; put 'put ''dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PW5ldyBBcnJheShiKSxOPTA7TjxiO04rKyl4W05dPTA7cmV0dXJuIHh9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYix4LE4pe3ZhciBGPTIqdGhpcy5ndWVzc0xlbjEzYihiLmxlbmd0aCx4Lmxlbmd0aCksZz10aGlzLm1ha2VSQlQoRiksQz10''@;'; put 'put ''aGlzLnN0dWIoRiksTT1uZXcgQXJyYXkoRikseT1uZXcgQXJyYXkoRikscD1uZXcgQXJyYXkoRiksUz1uZXcgQXJyYXkoRiksUT1uZXcgQXJyYXkoRikscmU9bmV3IEFycmF5KEYpLGZlPU4ud29yZHM7ZmUubGVuZ3RoPUYsdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsTSxGKSx0''@;'; put 'put ''aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxTLEYpLHRoaXMudHJhbnNmb3JtKE0sQyx5LHAsRixnKSx0aGlzLnRyYW5zZm9ybShTLEMsUSxyZSxGLGcpO2Zvcih2YXIgbWU9MDttZTxGO21lKyspe3ZhciBrZT15W21lXSpRW21lXS1wW21lXSpyZVttZV07cFttZV09eVttZV0qcmVb''@;'; put 'put ''bWVdK3BbbWVdKlFbbWVdLHlbbWVdPWtlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh5LHAsRiksdGhpcy50cmFuc2Zvcm0oeSxwLGZlLEMsRixnKSx0aGlzLmNvbmp1Z2F0ZShmZSxDLEYpLHRoaXMubm9ybWFsaXplMTNiKGZlLEYpLE4ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4u''@;'; put 'put ''bGVuZ3RoPWIubGVuZ3RoK3gubGVuZ3RoLE4uc3RyaXAoKX0sSC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksdGhpcy5tdWxUbyhiLHgpfSxILnByb3RvdHlwZS5tdWxmPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksVyh0aGlzLGIseCl9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxILnByb3RvdHlwZS5p''@;'; put 'put ''bXVsbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4ODY0KTtmb3IodmFyIHg9MCxOPTA7Tjx0aGlzLmxlbmd0aDtOKyspe3ZhciBGPSgwfHRoaXMud29yZHNbTl0pKmIsZz0oNjcxMDg4NjMmRikrKDY3MTA4ODYzJngpO3g+Pj0yNix4Kz1GLzY3MTA4ODY0fDAs''@;'; put 'put ''eCs9Zz4+PjI2LHRoaXMud29yZHNbTl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW05dPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sSC5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGIpfSxILnByb3RvdHlwZS5zcXI9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEgucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEgucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiKXt2YXIgeD1mdW5jdGlvbiB6KFkpe2Zvcih2YXIgYj1uZXcgQXJyYXkoWS5iaXRM''@;'; put 'put ''ZW5ndGgoKSkseD0wO3g8Yi5sZW5ndGg7eCsrKXt2YXIgRj14JTI2O2JbeF09KFkud29yZHNbeC8yNnwwXSYxPDxGKT4+PkZ9cmV0dXJuIGJ9KGIpO2lmKDA9PT14Lmxlbmd0aClyZXR1cm4gbmV3IEgoMSk7Zm9yKHZhciBOPXRoaXMsRj0wO0Y8eC5sZW5ndGgmJjA9PT14W0ZdO0YrKyxOPU4u''@;'; put 'put ''c3FyKCkpO2lmKCsrRjx4Lmxlbmd0aClmb3IodmFyIGc9Ti5zcXIoKTtGPHgubGVuZ3RoO0YrKyxnPWcuc3FyKCkpMCE9PXhbRl0mJihOPU4ubXVsKGcpKTtyZXR1cm4gTn0sSC5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgZyx4''@;'; put 'put ''PWIlMjYsTj0oYi14KS8yNixGPTY3MTA4ODYzPj4+MjYteDw8MjYteDtpZigwIT09eCl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgTT10aGlzLndvcmRzW2ddJkY7dGhpcy53b3Jkc1tnXT0oMHx0aGlzLndvcmRzW2ddKS1NPDx4fEMsQz1NPj4+MjYteH1DJiYodGhp''@;'; put 'put ''cy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1OKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytOXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7ZzxOO2crKyl0aGlzLndvcmRzW2ddPTA7dGhpcy5sZW5ndGgrPU59cmV0dXJuIHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''SC5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYix4LE4pe3ZhciBGO3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKSxGPXg/KHgteCUyNikvMjY6MDt2YXIg''@;'; put 'put ''Zz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLE09NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLHk9TjtpZihGLT1DLEY9TWF0aC5tYXgoMCxGKSx5KXtmb3IodmFyIHA9MDtwPEM7cCsrKXkud29yZHNbcF09dGhpcy53b3Jkc1twXTt5Lmxlbmd0aD1DfWlmKDAhPT1DKWlm''@;'; put 'put ''KHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBTPTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PVN8fHA+''@;'; put 'put ''PUYpO3AtLSl7dmFyIFE9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09Uzw8MjYtZ3xRPj4+ZyxTPVEmTX1yZXR1cm4geSYmMCE9PVMmJih5LndvcmRzW3kubGVuZ3RoKytdPVMpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlw''@;'; put 'put ''KCl9LEgucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIseCxOKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYix4LE4pfSxILnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYil9LEgucHJvdG90eXBlLnVzaGxuPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LEgucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxILnBy''@;'; put 'put ''b3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PU58fCEodGhpcy53b3Jkc1tOXSYxPDx4KSl9LEgucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXt2KCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Tj90aGlzOigwIT09eCYmTisrLHRoaXMubGVuZ3RoPU1hdGgubWluKE4s''@;'; put 'put ''dGhpcy5sZW5ndGgpLDAhPT14JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4KSx0aGlzLnN0cmlwKCkpfSxILnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiKX0sSC5wcm90b3R5cGUuaWFk''@;'; put 'put ''ZG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRzWzBd''@;'; put 'put ''KSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sSC5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGIpe3RoaXMud29yZHNbMF0rPWI7Zm9yKHZhciB4PTA7eDx0aGlzLmxlbmd0''@;'; put 'put ''aCYmdGhpcy53b3Jkc1t4XT49NjcxMDg4NjQ7eCsrKXRoaXMud29yZHNbeF0tPTY3MTA4ODY0LHg9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeCsxXT0xOnRoaXMud29yZHNbeCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx4KzEpLHRoaXN9LEgucHJv''@;'; put 'put ''dG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9MSx0''@;'; put 'put ''aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPDA7eCsrKXRoaXMud29yZHNb''@;'; put 'put ''eF0rPTY3MTA4ODY0LHRoaXMud29yZHNbeCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oYil9LEgucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vi''@;'; put 'put ''bihiKX0sSC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sSC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEgucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLHgsTil7dmFyIGc7''@;'; put 'put ''dGhpcy5fZXhwYW5kKGIubGVuZ3RoK04pO3ZhciBDLE09MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytOXSkrTTt2YXIgeT0oMHxiLndvcmRzW2ddKSp4O009KChDLT02NzEwODg2MyZ5KT4+MjYpLSh5LzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytOXT02NzEw''@;'; put 'put ''ODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1OO2crKylNPShDPSgwfHRoaXMud29yZHNbZytOXSkrTSk+PjI2LHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDO2lmKDA9PT1NKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHYoLTE9PT1NKSxNPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKU09KEM9''@;'; put 'put ''LSgwfHRoaXMud29yZHNbZ10pK00pPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGIseCl7dmFyIE4sRj10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cubGVu''@;'; put 'put ''Z3RoLTFdOzAhPShOPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oTiksRi5pdXNobG4oTiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLHk9Ri5sZW5ndGgtZy5sZW5ndGg7aWYoIm1vZCIhPT14KXsocD1uZXcgSChudWxsKSkubGVuZ3RoPXkrMSxwLndvcmRzPW5l''@;'; put 'put ''dyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBTPTA7UzxwLmxlbmd0aDtTKyspcC53b3Jkc1tTXT0wfXZhciBRPUYuY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLHkpOzA9PT1RLm5lZ2F0aXZlJiYoRj1RLHAmJihwLndvcmRzW3ldPTEpKTtmb3IodmFyIHJlPXktMTtyZT49MDtyZS0tKXt2YXIg''@;'; put 'put ''ZmU9NjcxMDg4NjQqKDB8Ri53b3Jkc1tnLmxlbmd0aCtyZV0pKygwfEYud29yZHNbZy5sZW5ndGgrcmUtMV0pO2ZvcihmZT1NYXRoLm1pbihmZS9DfDAsNjcxMDg4NjMpLEYuX2lzaGxuc3VibXVsKGcsZmUscmUpOzAhPT1GLm5lZ2F0aXZlOylmZS0tLEYubmVnYXRpdmU9MCxGLl9pc2hsbnN1''@;'; put 'put ''Ym11bChnLDEscmUpLEYuaXNaZXJvKCl8fChGLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tyZV09ZmUpfXJldHVybiBwJiZwLnN0cmlwKCksRi5zdHJpcCgpLCJkaXYiIT09eCYmMCE9PU4mJkYuaXVzaHJuKE4pLHtkaXY6cHx8bnVsbCxtb2Q6Rn19LEgucHJvdG90eXBlLmRpdm1vZD1mdW5j''@;'; put 'put ''dGlvbihiLHgsTil7cmV0dXJuIHYoIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgSCgwKSxtb2Q6bmV3IEgoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLHgpLCJtb2QiIT09eCYmKEY9Qy5kaXYubmVnKCkpLCJk''@;'; put 'put ''aXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpGLG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhDPXRoaXMuZGl2bW9kKGIubmVnKCkseCksIm1vZCIhPT14JiYoRj1DLmRpdi5uZWcoKSkse2RpdjpGLG1v''@;'; put 'put ''ZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLHgpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaXN1YihiKSkse2RpdjpDLmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3RofHx0''@;'; put 'put ''aGlzLmNtcChiKTwwP3tkaXY6bmV3IEgoMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PXg/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09eD97ZGl2Om51bGwsbW9kOm5ldyBIKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZu''@;'; put 'put ''KGIud29yZHNbMF0pLG1vZDpuZXcgSCh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIseCk7dmFyIEYsZyxDfSxILnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsImRpdiIsITEpLmRpdn0sSC5wcm90b3R5cGUubW9kPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LEgucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0sSC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oYil7dmFyIHg9dGhpcy5kaXZtb2QoYik7aWYoeC5t''@;'; put 'put ''b2QuaXNaZXJvKCkpcmV0dXJuIHguZGl2O3ZhciBOPTAhPT14LmRpdi5uZWdhdGl2ZT94Lm1vZC5pc3ViKGIpOngubW9kLEY9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1OLmNtcChGKTtyZXR1cm4gQzwwfHwxPT09ZyYmMD09PUM/eC5kaXY6MCE9PXguZGl2Lm5lZ2F0aXZlP3guZGl2Lmlz''@;'; put 'put ''dWJuKDEpOnguZGl2LmlhZGRuKDEpfSxILnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0oMTw8MjYpJWIsTj0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSlOPSh4Kk4rKDB8dGhpcy53b3Jkc1tGXSkpJWI7cmV0dXJuIE59LEgucHJvdG90eXBl''@;'; put 'put ''LmlkaXZuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0wLE49dGhpcy5sZW5ndGgtMTtOPj0wO04tLSl7dmFyIEY9KDB8dGhpcy53b3Jkc1tOXSkrNjcxMDg4NjQqeDt0aGlzLndvcmRzW05dPUYvYnwwLHg9RiVifXJldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBl''@;'; put 'put ''LmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sSC5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgeD10aGlzLE49Yi5jbG9uZSgpO3g9MCE9PXgubmVnYXRpdmU/eC51bW9kKGIpOnguY2xv''@;'; put 'put ''bmUoKTtmb3IodmFyIEY9bmV3IEgoMSksZz1uZXcgSCgwKSxDPW5ldyBIKDApLE09bmV3IEgoMSkseT0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7KXguaXVzaHJuKDEpLE4uaXVzaHJuKDEpLCsreTtmb3IodmFyIHA9Ti5jbG9uZSgpLFM9eC5jbG9uZSgpOyF4LmlzWmVybygpOyl7Zm9yKHZh''@;'; put 'put ''ciBRPTAscmU9MTshKHgud29yZHNbMF0mcmUpJiZRPDI2OysrUSxyZTw8PTEpO2lmKFE+MClmb3IoeC5pdXNocm4oUSk7US0tID4wOykoRi5pc09kZCgpfHxnLmlzT2RkKCkpJiYoRi5pYWRkKHApLGcuaXN1YihTKSksRi5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBmZT0wLG1lPTE7''@;'; put 'put ''IShOLndvcmRzWzBdJm1lKSYmZmU8MjY7KytmZSxtZTw8PTEpO2lmKGZlPjApZm9yKE4uaXVzaHJuKGZlKTtmZS0tID4wOykoQy5pc09kZCgpfHxNLmlzT2RkKCkpJiYoQy5pYWRkKHApLE0uaXN1YihTKSksQy5pdXNocm4oMSksTS5pdXNocm4oMSk7eC5jbXAoTik+PTA/KHguaXN1YihOKSxG''@;'; put 'put ''LmlzdWIoQyksZy5pc3ViKE0pKTooTi5pc3ViKHgpLEMuaXN1YihGKSxNLmlzdWIoZykpfXJldHVybnthOkMsYjpNLGdjZDpOLml1c2hsbih5KX19LEgucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgUSx4PXRoaXMsTj1i''@;'; put 'put ''LmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QoYik6eC5jbG9uZSgpO2Zvcih2YXIgRj1uZXcgSCgxKSxnPW5ldyBIKDApLEM9Ti5jbG9uZSgpO3guY21wbigxKT4wJiZOLmNtcG4oMSk+MDspe2Zvcih2YXIgTT0wLHk9MTshKHgud29yZHNbMF0meSkmJk08MjY7KytNLHk8PD0xKTtp''@;'; put 'put ''ZihNPjApZm9yKHguaXVzaHJuKE0pO00tLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoQyksRi5pdXNocm4oMSk7Zm9yKHZhciBwPTAsUz0xOyEoTi53b3Jkc1swXSZTKSYmcDwyNjsrK3AsUzw8PTEpO2lmKHA+MClmb3IoTi5pdXNocm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChDKSxn''@;'; put 'put ''Lml1c2hybigxKTt4LmNtcChOKT49MD8oeC5pc3ViKE4pLEYuaXN1YihnKSk6KE4uaXN1Yih4KSxnLmlzdWIoRikpfXJldHVybihRPTA9PT14LmNtcG4oMSk/RjpnKS5jbXBuKDApPDAmJlEuaWFkZChiKSxRfSxILnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8oKSly''@;'; put 'put ''ZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB4PXRoaXMuY2xvbmUoKSxOPWIuY2xvbmUoKTt4Lm5lZ2F0aXZlPTAsTi5uZWdhdGl2ZT0wO2Zvcih2YXIgRj0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7RisrKXguaXVzaHJuKDEpLE4uaXVzaHJuKDEp''@;'; put 'put ''O2Zvcig7Oyl7Zm9yKDt4LmlzRXZlbigpOyl4Lml1c2hybigxKTtmb3IoO04uaXNFdmVuKCk7KU4uaXVzaHJuKDEpO3ZhciBnPXguY21wKE4pO2lmKGc8MCl7dmFyIEM9eDt4PU4sTj1DfWVsc2UgaWYoMD09PWd8fDA9PT1OLmNtcG4oMSkpYnJlYWs7eC5pc3ViKE4pfXJldHVybiBOLml1c2hs''@;'; put 'put ''bihGKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sSC5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxILnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0o''@;'; put 'put ''MSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sSC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGIpO3ZhciB4PWIlMjYsTj0oYi14KS8yNixGPTE8PHg7aWYodGhpcy5sZW5n''@;'; put 'put ''dGg8PU4pcmV0dXJuIHRoaXMuX2V4cGFuZChOKzEpLHRoaXMud29yZHNbTl18PUYsdGhpcztmb3IodmFyIGc9RixDPU47MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT0wfHRoaXMud29yZHNbQ107Zz0oTSs9Zyk+Pj4yNix0aGlzLndvcmRzW0NdPU0mPTY3MTA4ODYzfXJldHVybiAw''@;'; put 'put ''IT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sSC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihiKXt2YXIgTix4PWI8MDtpZigwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSYmIXgpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJngpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpTj0xO2Vsc2V7eCYmKGI9LWIpLHYoYjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIEY9MHx0aGlzLndvcmRzWzBd''@;'; put 'put ''O049Rj09PWI/MDpGPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtTjpOfSxILnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSly''@;'; put 'put ''ZXR1cm4gMTt2YXIgeD10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXg6eH0sSC5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHg9''@;'; put 'put ''MCxOPXRoaXMubGVuZ3RoLTE7Tj49MDtOLS0pe3ZhciBGPTB8dGhpcy53b3Jkc1tOXSxnPTB8Yi53b3Jkc1tOXTtpZihGIT09Zyl7RjxnP3g9LTE6Rj5nJiYoeD0xKTticmVha319cmV0dXJuIHh9LEgucHJvdG90eXBlLmd0bj1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0s''@;'; put 'put ''SC5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sSC5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxILnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxILnByb3RvdHlw''@;'; put 'put ''ZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LEgucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LEgucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKTw9MH0sSC5wcm90b3R5cGUubHRlPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sSC5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wKGIpfSxILnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3''@;'; put 'put ''IHVlKGIpfSxILnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx2KDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRo''@;'; put 'put ''aXMpLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEgucHJvdG90eXBlLl9m''@;'; put 'put ''b3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxILnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5''@;'; put 'put ''cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElBZGQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sSC5wcm90b3R5''@;'; put 'put ''cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU2hsIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMu''@;'; put 'put ''cmVkLm11bCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LEgucHJvdG90eXBl''@;'; put 'put ''LnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxILnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5y''@;'; put 'put ''ZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQg''@;'; put 'put ''bnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEgucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlz''@;'; put 'put ''KSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxILnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''cmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3ZhciBxPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVu''@;'; put 'put ''Y3Rpb24gdGUoWSxiKXt0aGlzLm5hbWU9WSx0aGlzLnA9bmV3IEgoYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEgoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIG5lKCl7dGUuY2FsbCh0aGlzLCJr''@;'; put 'put ''MjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBpZSgpe3RlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAw''@;'; put 'put ''MDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gbGUoKXt0ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIGRlKCl7dGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiB1ZShZKXtpZigic3RyaW5nIj09dHlwZW9mIFkpe3ZhciBiPUguX3ByaW1lKFkpO3RoaXMubT1iLnAsdGhpcy5wcmltZT1ifWVsc2UgdihZLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0''@;'; put 'put ''ZXIgdGhhbiAxIiksdGhpcy5tPVksdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGNlKFkpe3VlLmNhbGwodGhpcyxZKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBIKDEpLml1''@;'; put 'put ''c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5y''@;'; put 'put ''KSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IEgobnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxifSx0ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihiKXt2''@;'; put 'put ''YXIgTix4PWI7ZG97dGhpcy5zcGxpdCh4LHRoaXMudG1wKSxOPSh4PSh4PXRoaXMuaW11bEsoeCkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShOPnRoaXMubik7dmFyIEY9Tjx0aGlzLm4/LTE6eC51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1GPyh4LndvcmRzWzBdPTAseC5s''@;'; put 'put ''ZW5ndGg9MSk6Rj4wP3guaXN1Yih0aGlzLnApOnZvaWQgMCE9PXguc3RyaXA/eC5zdHJpcCgpOnguX3N0cmlwKCkseH0sdGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIseCl7Yi5pdXNocm4odGhpcy5uLDAseCl9LHRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4gYi5p''@;'; put 'put ''bXVsKHRoaXMuayl9LGhlKG5lLHRlKSxuZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYix4KXtmb3IodmFyIE49NDE5NDMwMyxGPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEY7ZysrKXgud29yZHNbZ109Yi53b3Jkc1tnXTtpZih4Lmxlbmd0aD1GLGIubGVuZ3RoPD05KXJldHVybiBi''@;'; put 'put ''LndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2Zvcih4LndvcmRzW3gubGVuZ3RoKytdPUMmTixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgTT0wfGIud29yZHNbZ107Yi53b3Jkc1tnLTEwXT0oTSZOKTw8NHxDPj4+MjIsQz1NfWIud29yZHNbZy0xMF09Qz4+''@;'; put 'put ''Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LG5lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5ndGgrMV09MCxiLmxlbmd0aCs9Mjtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTB8''@;'; put 'put ''Yi53b3Jkc1tOXTtiLndvcmRzW05dPTY3MTA4ODYzJih4Kz05NzcqRikseD02NCpGKyh4LzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3RoLS0sMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJmIubGVuZ3RoLS0pLGJ9LGhlKGllLHRlKSxoZShsZSx0''@;'; put 'put ''ZSksaGUoZGUsdGUpLGRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTE5KigwfGIud29yZHNbTl0pK3gsZz02NzEwODg2MyZGO0Y+Pj49MjYsYi53b3Jkc1tOXT1nLHg9Rn1yZXR1cm4gMCE9PXgmJihiLndvcmRzW2Iu''@;'; put 'put ''bGVuZ3RoKytdPXgpLGJ9LEguX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIHg7aWYoImsyNTYiPT09Yil4PW5ldyBuZTtlbHNlIGlmKCJwMjI0Ij09PWIpeD1uZXcgaWU7ZWxzZSBpZigicDE5MiI9PT1iKXg9bmV3IGxlO2Vsc2V7aWYoInAyNTUxOSIhPT1iKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO3g9bmV3IGRlfXJldHVybiBxW2JdPXgseH0sdWUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksdihiLnJlZCwicmVkIHdvcmtzIG9u''@;'; put 'put ''bHkgd2l0aCByZWQgbnVtYmVycyIpfSx1ZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYix4KXt2KDA9PShiLm5lZ2F0aXZlfHgubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHYoYi5yZWQmJmIucmVkPT09eC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKX0sdWUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7cmV0''@;'; put 'put ''dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOLl9m''@;'; put 'put ''b3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5pYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOfSx1ZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVy''@;'; put 'put ''aWZ5MihiLHgpO3ZhciBOPWIuc3ViKHgpO3JldHVybiBOLmNtcG4oMCk8MCYmTi5pYWRkKHRoaXMubSksTi5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuaXN1Yih4KTtyZXR1cm4gTi5jbXBuKDApPDAm''@;'; put 'put ''Jk4uaWFkZCh0aGlzLm0pLE59LHVlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbih4KSl9LHVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYix4KSx0aGlzLmltb2Qo''@;'; put 'put ''Yi5pbXVsKHgpKX0sdWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIseCksdGhpcy5pbW9kKGIubXVsKHgpKX0sdWUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW11bChiLGIuY2xvbmUoKSl9LHVlLnByb3RvdHlwZS5z''@;'; put 'put ''cXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LHVlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgeD10aGlzLm0uYW5kbG4oMyk7aWYodih4JTI9PTEpLDM9PT14KXt2YXIgTj10aGlzLm0uYWRkKG5ldyBIKDEp''@;'; put 'put ''KS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsTil9Zm9yKHZhciBGPXRoaXMubS5zdWJuKDEpLGc9MDshRi5pc1plcm8oKSYmMD09PUYuYW5kbG4oMSk7KWcrKyxGLml1c2hybigxKTt2KCFGLmlzWmVybygpKTt2YXIgQz1uZXcgSCgxKS50b1JlZCh0aGlzKSxNPUMucmVkTmVnKCkseT10''@;'; put 'put ''aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IEgoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLHkpLmNtcChNKTspcC5yZWRJQWRkKE0pO2Zvcih2YXIgUz10aGlzLnBvdyhwLEYpLFE9dGhpcy5wb3coYixGLmFkZG4oMSkuaXVz''@;'; put 'put ''aHJuKDEpKSxyZT10aGlzLnBvdyhiLEYpLGZlPWc7MCE9PXJlLmNtcChDKTspe2Zvcih2YXIgbWU9cmUsa2U9MDswIT09bWUuY21wKEMpO2tlKyspbWU9bWUucmVkU3FyKCk7dihrZTxmZSk7dmFyIFRlPXRoaXMucG93KFMsbmV3IEgoMSkuaXVzaGxuKGZlLWtlLTEpKTtRPVEucmVkTXVsKFRl''@;'; put 'put ''KSxTPVRlLnJlZFNxcigpLHJlPXJlLnJlZE11bChTKSxmZT1rZX1yZXR1cm4gUX0sdWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIHg9Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXgubmVnYXRpdmU/KHgubmVnYXRpdmU9MCx0aGlzLmltb2QoeCkucmVkTmVnKCkpOnRoaXMu''@;'; put 'put ''aW1vZCh4KX0sdWUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT14LmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgRj1uZXcgQXJyYXkoMTYpO0ZbMF09bmV3IEgoMSkudG9SZWQodGhpcyksRlsx''@;'; put 'put ''XT1iO2Zvcih2YXIgZz0yO2c8Ri5sZW5ndGg7ZysrKUZbZ109dGhpcy5tdWwoRltnLTFdLGIpO3ZhciBDPUZbMF0sTT0wLHk9MCxwPXguYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz14Lmxlbmd0aC0xO2c+PTA7Zy0tKXtmb3IodmFyIFM9eC53b3Jkc1tnXSxRPXAtMTtRPj0w''@;'; put 'put ''O1EtLSl7dmFyIHJlPVM+PlEmMTtDIT09RlswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT1yZXx8MCE9PU0/KE08PD0xLE18PXJlLCg0PT0rK3l8fDA9PT1nJiYwPT09USkmJihDPXRoaXMubXVsKEMsRltNXSkseT0wLE09MCkpOnk9MH1wPTI2fXJldHVybiBDfSx1ZS5wcm90b3R5cGUuY29udmVy''@;'; put 'put ''dFRvPWZ1bmN0aW9uKGIpe3ZhciB4PWIudW1vZCh0aGlzLm0pO3JldHVybiB4PT09Yj94LmNsb25lKCk6eH0sdWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PWIuY2xvbmUoKTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxILm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5l''@;'; put 'put ''dyBjZShiKX0saGUoY2UsdWUpLGNlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sY2UucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYpKTty''@;'; put 'put ''ZXR1cm4geC5yZWQ9bnVsbCx4fSxjZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLHgpe2lmKGIuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIE49Yi5pbXVsKHgpLEY9Ti5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5p''@;'; put 'put ''bWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1OLmlzdWIoRikuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGNlLnByb3Rv''@;'; put 'put ''dHlwZS5tdWw9ZnVuY3Rpb24oYix4KXtpZihiLmlzWmVybygpfHx4LmlzWmVybygpKXJldHVybiBuZXcgSCgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIE49Yi5tdWwoeCksRj1OLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxn''@;'; put 'put ''PU4uaXN1YihGKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sY2UucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oV2U9VC5ubWQoV2UpLHRoaXMpfSwzNjA3MjooV2UsemUpPT57IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgVD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsc2U9bmV3IFVpbnQ4QXJyYXkoMjU2KSxrPTA7azw2NDtrKyspc2VbVC5jaGFyQ29kZUF0KGspXT1rO3plLmM9ZnVuY3Rpb24odil7dmFyIEgsaGU9bmV3IFVpbnQ4QXJyYXkodiksQj1oZS5sZW5ndGgsTD0iIjtmb3IoSD0wO0g8QjtIKz0z''@;'; put 'put ''KUwrPVRbaGVbSF0+PjJdLEwrPVRbKDMmaGVbSF0pPDw0fGhlW0grMV0+PjRdLEwrPVRbKDE1JmhlW0grMV0pPDwyfGhlW0grMl0+PjZdLEwrPVRbNjMmaGVbSCsyXV07cmV0dXJuIEIlMz09Mj9MPUwuc3Vic3RyaW5nKDAsTC5sZW5ndGgtMSkrIj0iOkIlMz09MSYmKEw9TC5zdWJzdHJpbmco''@;'; put 'put ''MCxMLmxlbmd0aC0yKSsiPT0iKSxMfSx6ZS5KPWZ1bmN0aW9uKHYpe3ZhciBCLEssSixJLFIsaGU9Ljc1KnYubGVuZ3RoLEg9di5sZW5ndGgsTD0wOyI9Ij09PXZbdi5sZW5ndGgtMV0mJihoZS0tLCI9Ij09PXZbdi5sZW5ndGgtMl0mJmhlLS0pO3ZhciBFPW5ldyBBcnJheUJ1ZmZlcihoZSks''@;'; put 'put ''ej1uZXcgVWludDhBcnJheShFKTtmb3IoQj0wO0I8SDtCKz00KUs9c2Vbdi5jaGFyQ29kZUF0KEIpXSxKPXNlW3YuY2hhckNvZGVBdChCKzEpXSxJPXNlW3YuY2hhckNvZGVBdChCKzIpXSxSPXNlW3YuY2hhckNvZGVBdChCKzMpXSx6W0wrK109Szw8MnxKPj40LHpbTCsrXT0oMTUmSik8PDR8''@;'; put 'put ''ST4+Mix6W0wrK109KDMmSSk8PDZ8NjMmUjtyZXR1cm4gRX19KCl9LDk5MTk6KFdlLHplKT0+eyJ1c2Ugc3RyaWN0Ijt6ZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIEwoeil7dmFyIGo9Qih6KSxHPWpbMV07cmV0dXJuIDMqKGpbMF0rRykvNC1HfSx6ZS50b0J5dGVBcnJheT1mdW5jdGlvbiBKKHop''@;'; put 'put ''e3ZhciBqLG5lLFY9Qih6KSxHPVZbMF0sVz1WWzFdLFU9bmV3IGsoZnVuY3Rpb24gSyh6LGosVil7cmV0dXJuIDMqKGorVikvNC1WfSgwLEcsVykpLHE9MCx0ZT1XPjA/Ry00Okc7Zm9yKG5lPTA7bmU8dGU7bmUrPTQpaj1zZVt6LmNoYXJDb2RlQXQobmUpXTw8MTh8c2Vbei5jaGFyQ29kZUF0''@;'; put 'put ''KG5lKzEpXTw8MTJ8c2Vbei5jaGFyQ29kZUF0KG5lKzIpXTw8NnxzZVt6LmNoYXJDb2RlQXQobmUrMyldLFVbcSsrXT1qPj4xNiYyNTUsVVtxKytdPWo+PjgmMjU1LFVbcSsrXT0yNTUmajtyZXR1cm4gMj09PVcmJihqPXNlW3ouY2hhckNvZGVBdChuZSldPDwyfHNlW3ouY2hhckNvZGVBdChu''@;'; put 'put ''ZSsxKV0+PjQsVVtxKytdPTI1NSZqKSwxPT09VyYmKGo9c2Vbei5jaGFyQ29kZUF0KG5lKV08PDEwfHNlW3ouY2hhckNvZGVBdChuZSsxKV08PDR8c2Vbei5jaGFyQ29kZUF0KG5lKzIpXT4+MixVW3ErK109aj4+OCYyNTUsVVtxKytdPTI1NSZqKSxVfSx6ZS5mcm9tQnl0ZUFycmF5PWZ1bmN0''@;'; put 'put ''aW9uIEUoeil7Zm9yKHZhciBqLFY9ei5sZW5ndGgsRz1WJTMsVz1bXSxVPTE2MzgzLHE9MCx0ZT1WLUc7cTx0ZTtxKz1VKVcucHVzaChSKHoscSxxK1U+dGU/dGU6cStVKSk7cmV0dXJuIDE9PT1HP1cucHVzaChUWyhqPXpbVi0xXSk+PjJdK1Rbajw8NCY2M10rIj09Iik6Mj09PUcmJlcucHVz''@;'; put 'put ''aChUWyhqPSh6W1YtMl08PDgpK3pbVi0xXSk+PjEwXStUW2o+PjQmNjNdK1Rbajw8MiY2M10rIj0iKSxXLmpvaW4oIiIpfTtmb3IodmFyIFQ9W10sc2U9W10saz10eXBlb2YgVWludDhBcnJheTwidSI/VWludDhBcnJheTpBcnJheSx2PSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl''@;'; put 'put ''ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixoZT0wO2hlPDY0OysraGUpVFtoZV09dltoZV0sc2Vbdi5jaGFyQ29kZUF0KGhlKV09aGU7ZnVuY3Rpb24gQih6KXt2YXIgaj16Lmxlbmd0aDtpZihqJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGgg''@;'; put 'put ''bXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgVj16LmluZGV4T2YoIj0iKTtyZXR1cm4tMT09PVYmJihWPWopLFtWLFY9PT1qPzA6NC1WJTRdfWZ1bmN0aW9uIEkoeil7cmV0dXJuIFRbej4+MTgmNjNdK1Rbej4+MTImNjNdK1Rbej4+NiY2M10rVFs2MyZ6XX1mdW5jdGlvbiBSKHosaixW''@;'; put 'put ''KXtmb3IodmFyIFc9W10sVT1qO1U8VjtVKz0zKVcucHVzaChJKCh6W1VdPDwxNiYxNjcxMTY4MCkrKHpbVSsxXTw8OCY2NTI4MCkrKDI1NSZ6W1UrMl0pKSk7cmV0dXJuIFcuam9pbigiIil9c2VbIi0iLmNoYXJDb2RlQXQoMCldPTYyLHNlWyJfIi5jaGFyQ29kZUF0KDApXT02M30sNjI2NjI6''@;'; put 'put ''ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlLGspeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB2KE4sRil7aWYoIU4pdGhyb3cgbmV3IEVycm9yKEZ8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaGUoTixGKXtOLnN1cGVyXz1GO3ZhciBnPWZ1bmN0aW9uKCl7fTtnLnByb3RvdHlw''@;'; put 'put ''ZT1GLnByb3RvdHlwZSxOLnByb3RvdHlwZT1uZXcgZyxOLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1OfWZ1bmN0aW9uIEgoTixGLGcpe2lmKEguaXNCTihOKSlyZXR1cm4gTjt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09''@;'; put 'put ''TiYmKCgibGUiPT09Rnx8ImJlIj09PUYpJiYoZz1GLEY9MTApLHRoaXMuX2luaXQoTnx8MCxGfHwxMCxnfHwiYmUiKSl9dmFyIEI7Im9iamVjdCI9PXR5cGVvZiBzZT9zZS5leHBvcnRzPUg6ay5CTj1ILEguQk49SCxILndvcmRTaXplPTI2O3RyeXtCPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBl''@;'; put 'put ''b2Ygd2luZG93LkJ1ZmZlcjwidSI/d2luZG93LkJ1ZmZlcjpUKDQ2NjAxKS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIEwoTixGKXt2YXIgZz1OLmNoYXJDb2RlQXQoRik7cmV0dXJuIGc+PTQ4JiZnPD01Nz9nLTQ4Omc+PTY1JiZnPD03MD9nLTU1Omc+PTk3JiZnPD0xMDI/Zy04Nzp2b2lkIHYo''@;'; put 'put ''ITEsIkludmFsaWQgY2hhcmFjdGVyIGluICIrTil9ZnVuY3Rpb24gSyhOLEYsZyl7dmFyIEM9TChOLGcpO3JldHVybiBnLTE+PUYmJihDfD1MKE4sZy0xKTw8NCksQ31mdW5jdGlvbiBKKE4sRixnLEMpe2Zvcih2YXIgTT0wLHk9MCxwPU1hdGgubWluKE4ubGVuZ3RoLGcpLFM9RjtTPHA7Uysr''@;'; put 'put ''KXt2YXIgUT1OLmNoYXJDb2RlQXQoUyktNDg7TSo9Qyx5PVE+PTQ5P1EtNDkrMTA6UT49MTc/US0xNysxMDpRLHYoUT49MCYmeTxDLCJJbnZhbGlkIGNoYXJhY3RlciIpLE0rPXl9cmV0dXJuIE19ZnVuY3Rpb24gSShOLEYpe04ud29yZHM9Ri53b3JkcyxOLmxlbmd0aD1GLmxlbmd0aCxOLm5l''@;'; put 'put ''Z2F0aXZlPUYubmVnYXRpdmUsTi5yZWQ9Ri5yZWR9aWYoSC5pc0JOPWZ1bmN0aW9uKEYpe3JldHVybiBGIGluc3RhbmNlb2YgSHx8bnVsbCE9PUYmJiJvYmplY3QiPT10eXBlb2YgRiYmRi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUgud29yZFNpemUmJkFycmF5LmlzQXJyYXkoRi53b3Jkcyl9''@;'; put 'put ''LEgubWF4PWZ1bmN0aW9uKEYsZyl7cmV0dXJuIEYuY21wKGcpPjA/RjpnfSxILm1pbj1mdW5jdGlvbihGLGcpe3JldHVybiBGLmNtcChnKTwwP0Y6Z30sSC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oRixnLEMpe2lmKCJudW1iZXIiPT10eXBlb2YgRilyZXR1cm4gdGhpcy5faW5pdE51bWJl''@;'; put 'put ''cihGLGcsQyk7aWYoIm9iamVjdCI9PXR5cGVvZiBGKXJldHVybiB0aGlzLl9pbml0QXJyYXkoRixnLEMpOyJoZXgiPT09ZyYmKGc9MTYpLHYoZz09PSgwfGcpJiZnPj0yJiZnPD0zNik7dmFyIE09MDsiLSI9PT0oRj1GLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKE0rKyx0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEpLE08Ri5sZW5ndGgmJigxNj09PWc/dGhpcy5fcGFyc2VIZXgoRixNLEMpOih0aGlzLl9wYXJzZUJhc2UoRixnLE0pLCJsZSI9PT1DJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksZyxDKSkpfSxILnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihG''@;'; put 'put ''LGcsQyl7RjwwJiYodGhpcy5uZWdhdGl2ZT0xLEY9LUYpLEY8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJkZdLHRoaXMubGVuZ3RoPTEpOkY8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmRixGLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToo''@;'; put 'put ''dihGPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJkYsRi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09QyYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGcsQyl9LEgucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oRixn''@;'; put 'put ''LEMpe2lmKHYoIm51bWJlciI9PXR5cGVvZiBGLmxlbmd0aCksRi5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoRi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''TT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgeSxwLFM9MDtpZigiYmUiPT09Qylmb3IoTT1GLmxlbmd0aC0xLHk9MDtNPj0wO00tPTMpdGhpcy53b3Jkc1t5XXw9KHA9RltNXXxGW00tMV08PDh8RltNLTJdPDwxNik8PFMmNjcxMDg4NjMsdGhpcy53b3Jkc1t5KzFd''@;'; put 'put ''PXA+Pj4yNi1TJjY3MTA4ODYzLChTKz0yNCk+PTI2JiYoUy09MjYseSsrKTtlbHNlIGlmKCJsZSI9PT1DKWZvcihNPTAseT0wO008Ri5sZW5ndGg7TSs9Myl0aGlzLndvcmRzW3ldfD0ocD1GW01dfEZbTSsxXTw8OHxGW00rMl08PDE2KTw8UyY2NzEwODg2Myx0aGlzLndvcmRzW3krMV09cD4+''@;'; put 'put ''PjI2LVMmNjcxMDg4NjMsKFMrPTI0KT49MjYmJihTLT0yNix5KyspO3JldHVybiB0aGlzLl9zdHJpcCgpfSxILnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oRixnLEMpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoRi5sZW5ndGgtZykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5s''@;'; put 'put ''ZW5ndGgpO2Zvcih2YXIgTT0wO008dGhpcy5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09MDt2YXIgUyx5PTAscD0wO2lmKCJiZSI9PT1DKWZvcihNPUYubGVuZ3RoLTE7TT49ZztNLT0yKVM9SyhGLGcsTSk8PHksdGhpcy53b3Jkc1twXXw9NjcxMDg4NjMmUyx5Pj0xOD8oeS09MTgsdGhpcy53''@;'; put 'put ''b3Jkc1twKz0xXXw9Uz4+PjI2KTp5Kz04O2Vsc2UgZm9yKE09KEYubGVuZ3RoLWcpJTI9PTA/ZysxOmc7TTxGLmxlbmd0aDtNKz0yKVM9SyhGLGcsTSk8PHksdGhpcy53b3Jkc1twXXw9NjcxMDg4NjMmUyx5Pj0xOD8oeS09MTgsdGhpcy53b3Jkc1twKz0xXXw9Uz4+PjI2KTp5Kz04O3RoaXMu''@;'; put 'put ''X3N0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oRixnLEMpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBNPTAseT0xO3k8PTY3MTA4ODYzO3kqPWcpTSsrO00tLSx5PXkvZ3wwO2Zvcih2YXIgcD1GLmxlbmd0aC1DLFM9cCVNLFE9TWF0aC5taW4o''@;'; put 'put ''cCxwLVMpK0MscmU9MCxmZT1DO2ZlPFE7ZmUrPU0pcmU9SihGLGZlLGZlK00sZyksdGhpcy5pbXVsbih5KSx0aGlzLndvcmRzWzBdK3JlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXJlOnRoaXMuX2lhZGRuKHJlKTtpZigwIT09Uyl7dmFyIG1lPTE7Zm9yKHJlPUooRixmZSxGLmxlbmd0aCxn''@;'; put 'put ''KSxmZT0wO2ZlPFM7ZmUrKyltZSo9Zzt0aGlzLmltdWxuKG1lKSx0aGlzLndvcmRzWzBdK3JlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXJlOnRoaXMuX2lhZGRuKHJlKX10aGlzLl9zdHJpcCgpfSxILnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKEYpe0Yud29yZHM9bmV3IEFycmF5KHRoaXMu''@;'; put 'put ''bGVuZ3RoKTtmb3IodmFyIGc9MDtnPHRoaXMubGVuZ3RoO2crKylGLndvcmRzW2ddPXRoaXMud29yZHNbZ107Ri5sZW5ndGg9dGhpcy5sZW5ndGgsRi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLEYucmVkPXRoaXMucmVkfSxILnByb3RvdHlwZS5fbW92ZT1mdW5jdGlvbihGKXtJKEYsdGhpcyl9''@;'; put 'put ''LEgucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIEY9bmV3IEgobnVsbCk7cmV0dXJuIHRoaXMuY29weShGKSxGfSxILnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKEYpe2Zvcig7dGhpcy5sZW5ndGg8RjspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxI''@;'; put 'put ''LnByb3RvdHlwZS5fc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxILnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRo''@;'; put 'put ''aXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sdHlwZW9mIFN5bWJvbDwidSImJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yKXRyeXtILnByb3RvdHlwZVtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1SfWNh''@;'; put 'put ''dGNoe0gucHJvdG90eXBlLmluc3BlY3Q9Un1lbHNlIEgucHJvdG90eXBlLmluc3BlY3Q9UjtmdW5jdGlvbiBSKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9dmFyIEU9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIw''@;'; put 'put ''MDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sej1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxqPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUs''@;'; put 'put ''NjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUs''@;'; put 'put ''MTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIFcoTixGLGcpe2cubmVnYXRpdmU9Ri5uZWdhdGl2ZV5OLm5lZ2F0aXZlO3ZhciBDPU4ubGVuZ3RoK0Yu''@;'; put 'put ''bGVuZ3RofDA7Zy5sZW5ndGg9QyxDPUMtMXwwO3ZhciBNPTB8Ti53b3Jkc1swXSx5PTB8Ri53b3Jkc1swXSxwPU0qeSxRPXAvNjcxMDg4NjR8MDtnLndvcmRzWzBdPTY3MTA4ODYzJnA7Zm9yKHZhciByZT0xO3JlPEM7cmUrKyl7Zm9yKHZhciBmZT1RPj4+MjYsbWU9NjcxMDg4NjMmUSxrZT1N''@;'; put 'put ''YXRoLm1pbihyZSxGLmxlbmd0aC0xKSxUZT1NYXRoLm1heCgwLHJlLU4ubGVuZ3RoKzEpO1RlPD1rZTtUZSsrKWZlKz0ocD0oTT0wfE4ud29yZHNbcmUtVGV8MF0pKih5PTB8Ri53b3Jkc1tUZV0pK21lKS82NzEwODg2NHwwLG1lPTY3MTA4ODYzJnA7Zy53b3Jkc1tyZV09MHxtZSxRPTB8ZmV9''@;'; put 'put ''cmV0dXJuIDAhPT1RP2cud29yZHNbcmVdPTB8UTpnLmxlbmd0aC0tLGcuX3N0cmlwKCl9SC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oRixnKXt2YXIgQztpZihnPTB8Z3x8MSwxNj09PShGPUZ8fDEwKXx8ImhleCI9PT1GKXtDPSIiO2Zvcih2YXIgTT0wLHk9MCxwPTA7cDx0aGlzLmxl''@;'; put 'put ''bmd0aDtwKyspe3ZhciBTPXRoaXMud29yZHNbcF0sUT0oMTY3NzcyMTUmKFM8PE18eSkpLnRvU3RyaW5nKDE2KTt5PVM+Pj4yNC1NJjE2Nzc3MjE1LChNKz0yKT49MjYmJihNLT0yNixwLS0pLEM9MCE9PXl8fHAhPT10aGlzLmxlbmd0aC0xP0VbNi1RLmxlbmd0aF0rUStDOlErQ31mb3IoMCE9''@;'; put 'put ''PXkmJihDPXkudG9TdHJpbmcoMTYpK0MpO0MubGVuZ3RoJWchPTA7KUM9IjAiK0M7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoQz0iLSIrQyksQ31pZihGPT09KDB8RikmJkY+PTImJkY8PTM2KXt2YXIgcmU9eltGXSxmZT1qW0ZdO0M9IiI7dmFyIG1lPXRoaXMuY2xvbmUoKTtmb3IobWUu''@;'; put 'put ''bmVnYXRpdmU9MDshbWUuaXNaZXJvKCk7KXt2YXIga2U9bWUubW9kcm4oZmUpLnRvU3RyaW5nKEYpO0M9KG1lPW1lLmlkaXZuKGZlKSkuaXNaZXJvKCk/a2UrQzpFW3JlLWtlLmxlbmd0aF0ra2UrQ31mb3IodGhpcy5pc1plcm8oKSYmKEM9IjAiK0MpO0MubGVuZ3RoJWchPTA7KUM9IjAiK0M7''@;'; put 'put ''cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoQz0iLSIrQyksQ312KCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEgucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIEY9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP0YrPTY3MTA4ODY0''@;'; put 'put ''KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9GKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmdighMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRo''@;'; put 'put ''aXMubmVnYXRpdmU/LUY6Rn0sSC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYsMil9LEImJihILnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihGLGcpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEIsRixnKX0pLEgucHJvdG90eXBlLnRvQXJy''@;'; put 'put ''YXk9ZnVuY3Rpb24oRixnKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxGLGcpfSxILnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihGLGcsQyl7dGhpcy5fc3RyaXAoKTt2YXIgTT10aGlzLmJ5dGVMZW5ndGgoKSx5PUN8fE1hdGgubWF4KDEsTSk7dihNPD15LCJieXRlIGFy''@;'; put 'put ''cmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksdih5PjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpO3ZhciBwPWZ1bmN0aW9uKEYsZyl7cmV0dXJuIEYuYWxsb2NVbnNhZmU/Ri5hbGxvY1Vuc2FmZShnKTpuZXcgRihnKX0oRix5KTtyZXR1cm4gdGhpc1siX3RvQXJyYXlM''@;'; put 'put ''aWtlIisoImxlIj09PWc/IkxFIjoiQkUiKV0ocCxNKSxwfSxILnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRT1mdW5jdGlvbihGLGcpe2Zvcih2YXIgQz0wLE09MCx5PTAscD0wO3k8dGhpcy5sZW5ndGg7eSsrKXt2YXIgUz10aGlzLndvcmRzW3ldPDxwfE07RltDKytdPTI1NSZTLEM8Ri5sZW5n''@;'; put 'put ''dGgmJihGW0MrK109Uz4+OCYyNTUpLEM8Ri5sZW5ndGgmJihGW0MrK109Uz4+MTYmMjU1KSw2PT09cD8oQzxGLmxlbmd0aCYmKEZbQysrXT1TPj4yNCYyNTUpLE09MCxwPTApOihNPVM+Pj4yNCxwKz0yKX1pZihDPEYubGVuZ3RoKWZvcihGW0MrK109TTtDPEYubGVuZ3RoOylGW0MrK109MH0s''@;'; put 'put ''SC5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkU9ZnVuY3Rpb24oRixnKXtmb3IodmFyIEM9Ri5sZW5ndGgtMSxNPTAseT0wLHA9MDt5PHRoaXMubGVuZ3RoO3krKyl7dmFyIFM9dGhpcy53b3Jkc1t5XTw8cHxNO0ZbQy0tXT0yNTUmUyxDPj0wJiYoRltDLS1dPVM+PjgmMjU1KSxDPj0wJiYoRltD''@;'; put 'put ''LS1dPVM+PjE2JjI1NSksNj09PXA/KEM+PTAmJihGW0MtLV09Uz4+MjQmMjU1KSxNPTAscD0wKTooTT1TPj4+MjQscCs9Mil9aWYoQz49MClmb3IoRltDLS1dPU07Qz49MDspRltDLS1dPTB9LEgucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihGKXtyZXR1cm4gMzIt''@;'; put 'put ''TWF0aC5jbHozMihGKX06ZnVuY3Rpb24oRil7dmFyIGc9RixDPTA7cmV0dXJuIGc+PTQwOTYmJihDKz0xMyxnPj4+PTEzKSxnPj02NCYmKEMrPTcsZz4+Pj03KSxnPj04JiYoQys9NCxnPj4+PTQpLGc+PTImJihDKz0yLGc+Pj49MiksQytnfSxILnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rp''@;'; put 'put ''b24oRil7aWYoMD09PUYpcmV0dXJuIDI2O3ZhciBnPUYsQz0wO3JldHVybiA4MTkxJmd8fChDKz0xMyxnPj4+PTEzKSwxMjcmZ3x8KEMrPTcsZz4+Pj03KSwxNSZnfHwoQys9NCxnPj4+PTQpLDMmZ3x8KEMrPTIsZz4+Pj0yKSwxJmd8fEMrKyxDfSxILnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgZz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStnfSxILnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBGPTAsZz0wO2c8dGhp''@;'; put 'put ''cy5sZW5ndGg7ZysrKXt2YXIgQz10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ddKTtpZihGKz1DLDI2IT09QylicmVha31yZXR1cm4gRn0sSC5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sSC5wcm90b3R5cGUu''@;'; put 'put ''dG9Ud29zPWZ1bmN0aW9uKEYpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKEYpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sSC5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMudGVzdG4oRi0xKT90aGlzLm5vdG4oRikuaWFkZG4oMSku''@;'; put 'put ''aW5lZygpOnRoaXMuY2xvbmUoKX0sSC5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEgucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxILnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxILnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKEYpe2Zvcig7dGhpcy5sZW5ndGg8Ri5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIGc9MDtnPEYubGVuZ3RoO2crKyl0aGlzLndvcmRzW2dd''@;'; put 'put ''PXRoaXMud29yZHNbZ118Ri53b3Jkc1tnXTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sSC5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKEYpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfEYubmVnYXRpdmUpKSx0aGlzLml1b3IoRil9LEgucHJvdG90eXBlLm9yPWZ1bmN0aW9uKEYpe3JldHVybiB0''@;'; put 'put ''aGlzLmxlbmd0aD5GLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKEYpOkYuY2xvbmUoKS5pb3IodGhpcyl9LEgucHJvdG90eXBlLnVvcj1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5sZW5ndGg+Ri5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoRik6Ri5jbG9uZSgpLml1b3IodGhpcyl9LEgucHJv''@;'; put 'put ''dG90eXBlLml1YW5kPWZ1bmN0aW9uKEYpe3ZhciBnO2c9dGhpcy5sZW5ndGg+Ri5sZW5ndGg/Rjp0aGlzO2Zvcih2YXIgQz0wO0M8Zy5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109dGhpcy53b3Jkc1tDXSZGLndvcmRzW0NdO3JldHVybiB0aGlzLmxlbmd0aD1nLmxlbmd0aCx0aGlzLl9zdHJp''@;'; put 'put ''cCgpfSxILnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKEYpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfEYubmVnYXRpdmUpKSx0aGlzLml1YW5kKEYpfSxILnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMubGVuZ3RoPkYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKEYp''@;'; put 'put ''OkYuY2xvbmUoKS5pYW5kKHRoaXMpfSxILnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmxlbmd0aD5GLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoRik6Ri5jbG9uZSgpLml1YW5kKHRoaXMpfSxILnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihGKXt2YXIgZyxDO3Ro''@;'; put 'put ''aXMubGVuZ3RoPkYubGVuZ3RoPyhnPXRoaXMsQz1GKTooZz1GLEM9dGhpcyk7Zm9yKHZhciBNPTA7TTxDLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT1nLndvcmRzW01dXkMud29yZHNbTV07aWYodGhpcyE9PWcpZm9yKDtNPGcubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPWcud29yZHNbTV07''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPWcubGVuZ3RoLHRoaXMuX3N0cmlwKCl9LEgucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oRil7cmV0dXJuIHYoMD09KHRoaXMubmVnYXRpdmV8Ri5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoRil9LEgucHJvdG90eXBlLnhvcj1mdW5jdGlvbihGKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5sZW5ndGg+Ri5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoRik6Ri5jbG9uZSgpLml4b3IodGhpcyl9LEgucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMubGVuZ3RoPkYubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihGKTpGLmNsb25lKCkuaXV4b3IodGhpcyl9LEgu''@;'; put 'put ''cHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKEYpe3YoIm51bWJlciI9PXR5cGVvZiBGJiZGPj0wKTt2YXIgZz0wfE1hdGguY2VpbChGLzI2KSxDPUYlMjY7dGhpcy5fZXhwYW5kKGcpLEM+MCYmZy0tO2Zvcih2YXIgTT0wO008ZztNKyspdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ+dGhpcy53b3Jk''@;'; put 'put ''c1tNXTtyZXR1cm4gQz4wJiYodGhpcy53b3Jkc1tNXT1+dGhpcy53b3Jkc1tNXSY2NzEwODg2Mz4+MjYtQyksdGhpcy5fc3RyaXAoKX0sSC5wcm90b3R5cGUubm90bj1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKEYpfSxILnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKEYs''@;'; put 'put ''Zyl7digibnVtYmVyIj09dHlwZW9mIEYmJkY+PTApO3ZhciBDPUYvMjZ8MCxNPUYlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChDKzEpLHRoaXMud29yZHNbQ109Zz90aGlzLndvcmRzW0NdfDE8PE06dGhpcy53b3Jkc1tDXSZ+KDE8PE0pLHRoaXMuX3N0cmlwKCl9LEgucHJvdG90eXBlLmlhZGQ9''@;'; put 'put ''ZnVuY3Rpb24oRil7dmFyIGcsQyxNO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ri5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGc9dGhpcy5pc3ViKEYpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PUYubmVnYXRp''@;'; put 'put ''dmUpcmV0dXJuIEYubmVnYXRpdmU9MCxnPXRoaXMuaXN1YihGKSxGLm5lZ2F0aXZlPTEsZy5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5GLmxlbmd0aD8oQz10aGlzLE09Rik6KEM9RixNPXRoaXMpO2Zvcih2YXIgeT0wLHA9MDtwPE0ubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPTY3MTA4ODYz''@;'; put 'put ''JihnPSgwfEMud29yZHNbcF0pKygwfE0ud29yZHNbcF0pK3kpLHk9Zz4+PjI2O2Zvcig7MCE9PXkmJnA8Qy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09NjcxMDg4NjMmKGc9KDB8Qy53b3Jkc1twXSkreSkseT1nPj4+MjY7aWYodGhpcy5sZW5ndGg9Qy5sZW5ndGgsMCE9PXkpdGhpcy53b3Jk''@;'; put 'put ''c1t0aGlzLmxlbmd0aF09eSx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoQyE9PXRoaXMpZm9yKDtwPEMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPUMud29yZHNbcF07cmV0dXJuIHRoaXN9LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihGKXt2YXIgZztyZXR1cm4gMCE9PUYubmVnYXRpdmUmJjA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlPyhGLm5lZ2F0aXZlPTAsZz10aGlzLnN1YihGKSxGLm5lZ2F0aXZlXj0xLGcpOjA9PT1GLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGc9Ri5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGcpOnRoaXMubGVuZ3RoPkYubGVuZ3Ro''@;'; put 'put ''P3RoaXMuY2xvbmUoKS5pYWRkKEYpOkYuY2xvbmUoKS5pYWRkKHRoaXMpfSxILnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKEYpe2lmKDAhPT1GLm5lZ2F0aXZlKXtGLm5lZ2F0aXZlPTA7dmFyIGc9dGhpcy5pYWRkKEYpO3JldHVybiBGLm5lZ2F0aXZlPTEsZy5fbm9ybVNpZ24oKX1pZigwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChGKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgTSx5LEM9dGhpcy5jbXAoRik7aWYoMD09PUMpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09''@;'; put 'put ''MCx0aGlzO0M+MD8oTT10aGlzLHk9Rik6KE09Rix5PXRoaXMpO2Zvcih2YXIgcD0wLFM9MDtTPHkubGVuZ3RoO1MrKylwPShnPSgwfE0ud29yZHNbU10pLSgwfHkud29yZHNbU10pK3ApPj4yNix0aGlzLndvcmRzW1NdPTY3MTA4ODYzJmc7Zm9yKDswIT09cCYmUzxNLmxlbmd0aDtTKyspcD0o''@;'; put 'put ''Zz0oMHxNLndvcmRzW1NdKStwKT4+MjYsdGhpcy53b3Jkc1tTXT02NzEwODg2MyZnO2lmKDA9PT1wJiZTPE0ubGVuZ3RoJiZNIT09dGhpcylmb3IoO1M8TS5sZW5ndGg7UysrKXRoaXMud29yZHNbU109TS53b3Jkc1tTXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgs''@;'; put 'put ''UyksTSE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuX3N0cmlwKCl9LEgucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoRil9O3ZhciBVPWZ1bmN0aW9uKEYsZyxDKXt2YXIgUSxyZSxmZSxNPUYud29yZHMseT1nLndvcmRzLHA9Qy53b3Jk''@;'; put 'put ''cyxTPTAsbWU9MHxNWzBdLGtlPTgxOTEmbWUsVGU9bWU+Pj4xMyxQZT0wfE1bMV0sRmU9ODE5MSZQZSxOZT1QZT4+PjEzLExlPTB8TVsyXSxCZT04MTkxJkxlLEhlPUxlPj4+MTMsUWU9MHxNWzNdLG10PTgxOTEmUWUsS2U9UWU+Pj4xMyx3ZT0wfE1bNF0sSWU9ODE5MSZ3ZSxPZT13ZT4+PjEz''@;'; put 'put ''LGV0PTB8TVs1XSxudD04MTkxJmV0LHFlPWV0Pj4+MTMsaHQ9MHxNWzZdLEVlPTgxOTEmaHQsRGU9aHQ+Pj4xMywkZT0wfE1bN10sYXQ9ODE5MSYkZSxjdD0kZT4+PjEzLE90PTB8TVs4XSxQdD04MTkxJk90LEF0PU90Pj4+MTMsSnQ9MHxNWzldLG1uPTgxOTEmSnQsTnQ9SnQ+Pj4xMyxibj0w''@;'; put 'put ''fHlbMF0sR249ODE5MSZibixvbj1ibj4+PjEzLCRuPTB8eVsxXSxObj04MTkxJiRuLHB0PSRuPj4+MTMscG49MHx5WzJdLGhuPTgxOTEmcG4sQ3Q9cG4+Pj4xMyxlbj0wfHlbM10sX3Q9ODE5MSZlbixWdD1lbj4+PjEzLF9uPTB8eVs0XSxvdD04MTkxJl9uLEl0PV9uPj4+MTMsbm49MHx5WzVd''@;'; put 'put ''LER0PTgxOTEmbm4sdnQ9bm4+Pj4xMyxHdD0wfHlbNl0sTG49ODE5MSZHdCx6dD1HdD4+PjEzLE1uPTB8eVs3XSxUbj04MTkxJk1uLHNuPU1uPj4+MTMsQm49MHx5WzhdLEZuPTgxOTEmQm4scXQ9Qm4+Pj4xMyxIbj0wfHlbOV0saWk9ODE5MSZIbixjbj1Ibj4+PjEzO0MubmVnYXRpdmU9Ri5u''@;'; put 'put ''ZWdhdGl2ZV5nLm5lZ2F0aXZlLEMubGVuZ3RoPTE5O3ZhciBqbj0oUysoUT1NYXRoLmltdWwoa2UsR24pKXwwKSsoKDgxOTEmKHJlPShyZT1NYXRoLmltdWwoa2Usb24pKStNYXRoLmltdWwoVGUsR24pfDApKTw8MTMpfDA7Uz0oKGZlPU1hdGguaW11bChUZSxvbikpKyhyZT4+PjEzKXwwKSso''@;'; put 'put ''am4+Pj4yNil8MCxqbiY9NjcxMDg4NjMsUT1NYXRoLmltdWwoRmUsR24pLHJlPShyZT1NYXRoLmltdWwoRmUsb24pKStNYXRoLmltdWwoTmUsR24pfDAsZmU9TWF0aC5pbXVsKE5lLG9uKTt2YXIgWHI9KFMrKFE9UStNYXRoLmltdWwoa2UsTm4pfDApfDApKygoODE5MSYocmU9KHJlPXJlK01h''@;'; put 'put ''dGguaW11bChrZSxwdCl8MCkrTWF0aC5pbXVsKFRlLE5uKXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmltdWwoVGUscHQpfDApKyhyZT4+PjEzKXwwKSsoWHI+Pj4yNil8MCxYciY9NjcxMDg4NjMsUT1NYXRoLmltdWwoQmUsR24pLHJlPShyZT1NYXRoLmltdWwoQmUsb24pKStNYXRoLmlt''@;'; put 'put ''dWwoSGUsR24pfDAsZmU9TWF0aC5pbXVsKEhlLG9uKSxRPVErTWF0aC5pbXVsKEZlLE5uKXwwLHJlPShyZT1yZStNYXRoLmltdWwoRmUscHQpfDApK01hdGguaW11bChOZSxObil8MCxmZT1mZStNYXRoLmltdWwoTmUscHQpfDA7dmFyIHZpPShTKyhRPVErTWF0aC5pbXVsKGtlLGhuKXwwKXww''@;'; put 'put ''KSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoa2UsQ3QpfDApK01hdGguaW11bChUZSxobil8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKFRlLEN0KXwwKSsocmU+Pj4xMyl8MCkrKHZpPj4+MjYpfDAsdmkmPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG10LEduKSxyZT0ocmU9TWF0''@;'; put 'put ''aC5pbXVsKG10LG9uKSkrTWF0aC5pbXVsKEtlLEduKXwwLGZlPU1hdGguaW11bChLZSxvbiksUT1RK01hdGguaW11bChCZSxObil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEJlLHB0KXwwKStNYXRoLmltdWwoSGUsTm4pfDAsZmU9ZmUrTWF0aC5pbXVsKEhlLHB0KXwwLFE9UStNYXRoLmltdWwo''@;'; put 'put ''RmUsaG4pfDAscmU9KHJlPXJlK01hdGguaW11bChGZSxDdCl8MCkrTWF0aC5pbXVsKE5lLGhuKXwwLGZlPWZlK01hdGguaW11bChOZSxDdCl8MDt2YXIgRXI9KFMrKFE9UStNYXRoLmltdWwoa2UsX3QpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChrZSxWdCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKFRlLF90KXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmltdWwoVGUsVnQpfDApKyhyZT4+PjEzKXwwKSsoRXI+Pj4yNil8MCxFciY9NjcxMDg4NjMsUT1NYXRoLmltdWwoSWUsR24pLHJlPShyZT1NYXRoLmltdWwoSWUsb24pKStNYXRoLmltdWwoT2UsR24pfDAsZmU9TWF0aC5pbXVs''@;'; put 'put ''KE9lLG9uKSxRPVErTWF0aC5pbXVsKG10LE5uKXwwLHJlPShyZT1yZStNYXRoLmltdWwobXQscHQpfDApK01hdGguaW11bChLZSxObil8MCxmZT1mZStNYXRoLmltdWwoS2UscHQpfDAsUT1RK01hdGguaW11bChCZSxobil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEJlLEN0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoSGUsaG4pfDAsZmU9ZmUrTWF0aC5pbXVsKEhlLEN0KXwwLFE9UStNYXRoLmltdWwoRmUsX3QpfDAscmU9KHJlPXJlK01hdGguaW11bChGZSxWdCl8MCkrTWF0aC5pbXVsKE5lLF90KXwwLGZlPWZlK01hdGguaW11bChOZSxWdCl8MDt2YXIgWWk9KFMrKFE9UStNYXRoLmltdWwoa2Usb3Qp''@;'; put 'put ''fDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChrZSxJdCl8MCkrTWF0aC5pbXVsKFRlLG90KXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmltdWwoVGUsSXQpfDApKyhyZT4+PjEzKXwwKSsoWWk+Pj4yNil8MCxZaSY9NjcxMDg4NjMsUT1NYXRoLmltdWwobnQsR24pLHJlPShy''@;'; put 'put ''ZT1NYXRoLmltdWwobnQsb24pKStNYXRoLmltdWwocWUsR24pfDAsZmU9TWF0aC5pbXVsKHFlLG9uKSxRPVErTWF0aC5pbXVsKEllLE5uKXwwLHJlPShyZT1yZStNYXRoLmltdWwoSWUscHQpfDApK01hdGguaW11bChPZSxObil8MCxmZT1mZStNYXRoLmltdWwoT2UscHQpfDAsUT1RK01hdGgu''@;'; put 'put ''aW11bChtdCxobil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG10LEN0KXwwKStNYXRoLmltdWwoS2UsaG4pfDAsZmU9ZmUrTWF0aC5pbXVsKEtlLEN0KXwwLFE9UStNYXRoLmltdWwoQmUsX3QpfDAscmU9KHJlPXJlK01hdGguaW11bChCZSxWdCl8MCkrTWF0aC5pbXVsKEhlLF90KXwwLGZlPWZl''@;'; put 'put ''K01hdGguaW11bChIZSxWdCl8MCxRPVErTWF0aC5pbXVsKEZlLG90KXwwLHJlPShyZT1yZStNYXRoLmltdWwoRmUsSXQpfDApK01hdGguaW11bChOZSxvdCl8MCxmZT1mZStNYXRoLmltdWwoTmUsSXQpfDA7dmFyIEpyPShTKyhRPVErTWF0aC5pbXVsKGtlLER0KXwwKXwwKSsoKDgxOTEmKHJl''@;'; put 'put ''PShyZT1yZStNYXRoLmltdWwoa2UsdnQpfDApK01hdGguaW11bChUZSxEdCl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKFRlLHZ0KXwwKSsocmU+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLFE9TWF0aC5pbXVsKEVlLEduKSxyZT0ocmU9TWF0aC5pbXVsKEVlLG9u''@;'; put 'put ''KSkrTWF0aC5pbXVsKERlLEduKXwwLGZlPU1hdGguaW11bChEZSxvbiksUT1RK01hdGguaW11bChudCxObil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG50LHB0KXwwKStNYXRoLmltdWwocWUsTm4pfDAsZmU9ZmUrTWF0aC5pbXVsKHFlLHB0KXwwLFE9UStNYXRoLmltdWwoSWUsaG4pfDAscmU9''@;'; put 'put ''KHJlPXJlK01hdGguaW11bChJZSxDdCl8MCkrTWF0aC5pbXVsKE9lLGhuKXwwLGZlPWZlK01hdGguaW11bChPZSxDdCl8MCxRPVErTWF0aC5pbXVsKG10LF90KXwwLHJlPShyZT1yZStNYXRoLmltdWwobXQsVnQpfDApK01hdGguaW11bChLZSxfdCl8MCxmZT1mZStNYXRoLmltdWwoS2UsVnQp''@;'; put 'put ''fDAsUT1RK01hdGguaW11bChCZSxvdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEJlLEl0KXwwKStNYXRoLmltdWwoSGUsb3QpfDAsZmU9ZmUrTWF0aC5pbXVsKEhlLEl0KXwwLFE9UStNYXRoLmltdWwoRmUsRHQpfDAscmU9KHJlPXJlK01hdGguaW11bChGZSx2dCl8MCkrTWF0aC5pbXVsKE5l''@;'; put 'put ''LER0KXwwLGZlPWZlK01hdGguaW11bChOZSx2dCl8MDt2YXIgYW89KFMrKFE9UStNYXRoLmltdWwoa2UsTG4pfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChrZSx6dCl8MCkrTWF0aC5pbXVsKFRlLExuKXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmltdWwoVGUsenQpfDAp''@;'; put 'put ''KyhyZT4+PjEzKXwwKSsoYW8+Pj4yNil8MCxhbyY9NjcxMDg4NjMsUT1NYXRoLmltdWwoYXQsR24pLHJlPShyZT1NYXRoLmltdWwoYXQsb24pKStNYXRoLmltdWwoY3QsR24pfDAsZmU9TWF0aC5pbXVsKGN0LG9uKSxRPVErTWF0aC5pbXVsKEVlLE5uKXwwLHJlPShyZT1yZStNYXRoLmltdWwo''@;'; put 'put ''RWUscHQpfDApK01hdGguaW11bChEZSxObil8MCxmZT1mZStNYXRoLmltdWwoRGUscHQpfDAsUT1RK01hdGguaW11bChudCxobil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG50LEN0KXwwKStNYXRoLmltdWwocWUsaG4pfDAsZmU9ZmUrTWF0aC5pbXVsKHFlLEN0KXwwLFE9UStNYXRoLmltdWwo''@;'; put 'put ''SWUsX3QpfDAscmU9KHJlPXJlK01hdGguaW11bChJZSxWdCl8MCkrTWF0aC5pbXVsKE9lLF90KXwwLGZlPWZlK01hdGguaW11bChPZSxWdCl8MCxRPVErTWF0aC5pbXVsKG10LG90KXwwLHJlPShyZT1yZStNYXRoLmltdWwobXQsSXQpfDApK01hdGguaW11bChLZSxvdCl8MCxmZT1mZStNYXRo''@;'; put 'put ''LmltdWwoS2UsSXQpfDAsUT1RK01hdGguaW11bChCZSxEdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEJlLHZ0KXwwKStNYXRoLmltdWwoSGUsRHQpfDAsZmU9ZmUrTWF0aC5pbXVsKEhlLHZ0KXwwLFE9UStNYXRoLmltdWwoRmUsTG4pfDAscmU9KHJlPXJlK01hdGguaW11bChGZSx6dCl8MCkr''@;'; put 'put ''TWF0aC5pbXVsKE5lLExuKXwwLGZlPWZlK01hdGguaW11bChOZSx6dCl8MDt2YXIgQnI9KFMrKFE9UStNYXRoLmltdWwoa2UsVG4pfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChrZSxzbil8MCkrTWF0aC5pbXVsKFRlLFRuKXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmlt''@;'; put 'put ''dWwoVGUsc24pfDApKyhyZT4+PjEzKXwwKSsoQnI+Pj4yNil8MCxCciY9NjcxMDg4NjMsUT1NYXRoLmltdWwoUHQsR24pLHJlPShyZT1NYXRoLmltdWwoUHQsb24pKStNYXRoLmltdWwoQXQsR24pfDAsZmU9TWF0aC5pbXVsKEF0LG9uKSxRPVErTWF0aC5pbXVsKGF0LE5uKXwwLHJlPShyZT1y''@;'; put 'put ''ZStNYXRoLmltdWwoYXQscHQpfDApK01hdGguaW11bChjdCxObil8MCxmZT1mZStNYXRoLmltdWwoY3QscHQpfDAsUT1RK01hdGguaW11bChFZSxobil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEVlLEN0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsZmU9ZmUrTWF0aC5pbXVsKERlLEN0KXwwLFE9''@;'; put 'put ''UStNYXRoLmltdWwobnQsX3QpfDAscmU9KHJlPXJlK01hdGguaW11bChudCxWdCl8MCkrTWF0aC5pbXVsKHFlLF90KXwwLGZlPWZlK01hdGguaW11bChxZSxWdCl8MCxRPVErTWF0aC5pbXVsKEllLG90KXwwLHJlPShyZT1yZStNYXRoLmltdWwoSWUsSXQpfDApK01hdGguaW11bChPZSxvdCl8''@;'; put 'put ''MCxmZT1mZStNYXRoLmltdWwoT2UsSXQpfDAsUT1RK01hdGguaW11bChtdCxEdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG10LHZ0KXwwKStNYXRoLmltdWwoS2UsRHQpfDAsZmU9ZmUrTWF0aC5pbXVsKEtlLHZ0KXwwLFE9UStNYXRoLmltdWwoQmUsTG4pfDAscmU9KHJlPXJlK01hdGguaW11''@;'; put 'put ''bChCZSx6dCl8MCkrTWF0aC5pbXVsKEhlLExuKXwwLGZlPWZlK01hdGguaW11bChIZSx6dCl8MCxRPVErTWF0aC5pbXVsKEZlLFRuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoRmUsc24pfDApK01hdGguaW11bChOZSxUbil8MCxmZT1mZStNYXRoLmltdWwoTmUsc24pfDA7dmFyIEppPShTKyhR''@;'; put 'put ''PVErTWF0aC5pbXVsKGtlLEZuKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoa2UscXQpfDApK01hdGguaW11bChUZSxGbil8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKFRlLHF0KXwwKSsocmU+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLFE9TWF0''@;'; put 'put ''aC5pbXVsKG1uLEduKSxyZT0ocmU9TWF0aC5pbXVsKG1uLG9uKSkrTWF0aC5pbXVsKE50LEduKXwwLGZlPU1hdGguaW11bChOdCxvbiksUT1RK01hdGguaW11bChQdCxObil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKFB0LHB0KXwwKStNYXRoLmltdWwoQXQsTm4pfDAsZmU9ZmUrTWF0aC5pbXVs''@;'; put 'put ''KEF0LHB0KXwwLFE9UStNYXRoLmltdWwoYXQsaG4pfDAscmU9KHJlPXJlK01hdGguaW11bChhdCxDdCl8MCkrTWF0aC5pbXVsKGN0LGhuKXwwLGZlPWZlK01hdGguaW11bChjdCxDdCl8MCxRPVErTWF0aC5pbXVsKEVlLF90KXwwLHJlPShyZT1yZStNYXRoLmltdWwoRWUsVnQpfDApK01hdGgu''@;'; put 'put ''aW11bChEZSxfdCl8MCxmZT1mZStNYXRoLmltdWwoRGUsVnQpfDAsUT1RK01hdGguaW11bChudCxvdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG50LEl0KXwwKStNYXRoLmltdWwocWUsb3QpfDAsZmU9ZmUrTWF0aC5pbXVsKHFlLEl0KXwwLFE9UStNYXRoLmltdWwoSWUsRHQpfDAscmU9KHJl''@;'; put 'put ''PXJlK01hdGguaW11bChJZSx2dCl8MCkrTWF0aC5pbXVsKE9lLER0KXwwLGZlPWZlK01hdGguaW11bChPZSx2dCl8MCxRPVErTWF0aC5pbXVsKG10LExuKXwwLHJlPShyZT1yZStNYXRoLmltdWwobXQsenQpfDApK01hdGguaW11bChLZSxMbil8MCxmZT1mZStNYXRoLmltdWwoS2UsenQpfDAs''@;'; put 'put ''UT1RK01hdGguaW11bChCZSxUbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEJlLHNuKXwwKStNYXRoLmltdWwoSGUsVG4pfDAsZmU9ZmUrTWF0aC5pbXVsKEhlLHNuKXwwLFE9UStNYXRoLmltdWwoRmUsRm4pfDAscmU9KHJlPXJlK01hdGguaW11bChGZSxxdCl8MCkrTWF0aC5pbXVsKE5lLEZu''@;'; put 'put ''KXwwLGZlPWZlK01hdGguaW11bChOZSxxdCl8MDt2YXIgdG89KFMrKFE9UStNYXRoLmltdWwoa2UsaWkpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChrZSxjbil8MCkrTWF0aC5pbXVsKFRlLGlpKXwwKSk8PDEzKXwwO1M9KChmZT1mZStNYXRoLmltdWwoVGUsY24pfDApKyhy''@;'; put 'put ''ZT4+PjEzKXwwKSsodG8+Pj4yNil8MCx0byY9NjcxMDg4NjMsUT1NYXRoLmltdWwobW4sTm4pLHJlPShyZT1NYXRoLmltdWwobW4scHQpKStNYXRoLmltdWwoTnQsTm4pfDAsZmU9TWF0aC5pbXVsKE50LHB0KSxRPVErTWF0aC5pbXVsKFB0LGhuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoUHQs''@;'; put 'put ''Q3QpfDApK01hdGguaW11bChBdCxobil8MCxmZT1mZStNYXRoLmltdWwoQXQsQ3QpfDAsUT1RK01hdGguaW11bChhdCxfdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKGF0LFZ0KXwwKStNYXRoLmltdWwoY3QsX3QpfDAsZmU9ZmUrTWF0aC5pbXVsKGN0LFZ0KXwwLFE9UStNYXRoLmltdWwoRWUs''@;'; put 'put ''b3QpfDAscmU9KHJlPXJlK01hdGguaW11bChFZSxJdCl8MCkrTWF0aC5pbXVsKERlLG90KXwwLGZlPWZlK01hdGguaW11bChEZSxJdCl8MCxRPVErTWF0aC5pbXVsKG50LER0KXwwLHJlPShyZT1yZStNYXRoLmltdWwobnQsdnQpfDApK01hdGguaW11bChxZSxEdCl8MCxmZT1mZStNYXRoLmlt''@;'; put 'put ''dWwocWUsdnQpfDAsUT1RK01hdGguaW11bChJZSxMbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKEllLHp0KXwwKStNYXRoLmltdWwoT2UsTG4pfDAsZmU9ZmUrTWF0aC5pbXVsKE9lLHp0KXwwLFE9UStNYXRoLmltdWwobXQsVG4pfDAscmU9KHJlPXJlK01hdGguaW11bChtdCxzbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEtlLFRuKXwwLGZlPWZlK01hdGguaW11bChLZSxzbil8MCxRPVErTWF0aC5pbXVsKEJlLEZuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoQmUscXQpfDApK01hdGguaW11bChIZSxGbil8MCxmZT1mZStNYXRoLmltdWwoSGUscXQpfDA7dmFyIGNvPShTKyhRPVErTWF0aC5pbXVsKEZl''@;'; put 'put ''LGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoRmUsY24pfDApK01hdGguaW11bChOZSxpaSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKE5lLGNuKXwwKSsocmU+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG1uLGhuKSxy''@;'; put 'put ''ZT0ocmU9TWF0aC5pbXVsKG1uLEN0KSkrTWF0aC5pbXVsKE50LGhuKXwwLGZlPU1hdGguaW11bChOdCxDdCksUT1RK01hdGguaW11bChQdCxfdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKFB0LFZ0KXwwKStNYXRoLmltdWwoQXQsX3QpfDAsZmU9ZmUrTWF0aC5pbXVsKEF0LFZ0KXwwLFE9UStN''@;'; put 'put ''YXRoLmltdWwoYXQsb3QpfDAscmU9KHJlPXJlK01hdGguaW11bChhdCxJdCl8MCkrTWF0aC5pbXVsKGN0LG90KXwwLGZlPWZlK01hdGguaW11bChjdCxJdCl8MCxRPVErTWF0aC5pbXVsKEVlLER0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoRWUsdnQpfDApK01hdGguaW11bChEZSxEdCl8MCxm''@;'; put 'put ''ZT1mZStNYXRoLmltdWwoRGUsdnQpfDAsUT1RK01hdGguaW11bChudCxMbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG50LHp0KXwwKStNYXRoLmltdWwocWUsTG4pfDAsZmU9ZmUrTWF0aC5pbXVsKHFlLHp0KXwwLFE9UStNYXRoLmltdWwoSWUsVG4pfDAscmU9KHJlPXJlK01hdGguaW11bChJ''@;'; put 'put ''ZSxzbil8MCkrTWF0aC5pbXVsKE9lLFRuKXwwLGZlPWZlK01hdGguaW11bChPZSxzbil8MCxRPVErTWF0aC5pbXVsKG10LEZuKXwwLHJlPShyZT1yZStNYXRoLmltdWwobXQscXQpfDApK01hdGguaW11bChLZSxGbil8MCxmZT1mZStNYXRoLmltdWwoS2UscXQpfDA7dmFyIGxvPShTKyhRPVEr''@;'; put 'put ''TWF0aC5pbXVsKEJlLGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoQmUsY24pfDApK01hdGguaW11bChIZSxpaSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKEhlLGNuKXwwKSsocmU+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLFE9TWF0aC5p''@;'; put 'put ''bXVsKG1uLF90KSxyZT0ocmU9TWF0aC5pbXVsKG1uLFZ0KSkrTWF0aC5pbXVsKE50LF90KXwwLGZlPU1hdGguaW11bChOdCxWdCksUT1RK01hdGguaW11bChQdCxvdCl8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKFB0LEl0KXwwKStNYXRoLmltdWwoQXQsb3QpfDAsZmU9ZmUrTWF0aC5pbXVsKEF0''@;'; put 'put ''LEl0KXwwLFE9UStNYXRoLmltdWwoYXQsRHQpfDAscmU9KHJlPXJlK01hdGguaW11bChhdCx2dCl8MCkrTWF0aC5pbXVsKGN0LER0KXwwLGZlPWZlK01hdGguaW11bChjdCx2dCl8MCxRPVErTWF0aC5pbXVsKEVlLExuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoRWUsenQpfDApK01hdGguaW11''@;'; put 'put ''bChEZSxMbil8MCxmZT1mZStNYXRoLmltdWwoRGUsenQpfDAsUT1RK01hdGguaW11bChudCxUbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKG50LHNuKXwwKStNYXRoLmltdWwocWUsVG4pfDAsZmU9ZmUrTWF0aC5pbXVsKHFlLHNuKXwwLFE9UStNYXRoLmltdWwoSWUsRm4pfDAscmU9KHJlPXJl''@;'; put 'put ''K01hdGguaW11bChJZSxxdCl8MCkrTWF0aC5pbXVsKE9lLEZuKXwwLGZlPWZlK01hdGguaW11bChPZSxxdCl8MDt2YXIgc289KFMrKFE9UStNYXRoLmltdWwobXQsaWkpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChtdCxjbil8MCkrTWF0aC5pbXVsKEtlLGlpKXwwKSk8PDEz''@;'; put 'put ''KXwwO1M9KChmZT1mZStNYXRoLmltdWwoS2UsY24pfDApKyhyZT4+PjEzKXwwKSsoc28+Pj4yNil8MCxzbyY9NjcxMDg4NjMsUT1NYXRoLmltdWwobW4sb3QpLHJlPShyZT1NYXRoLmltdWwobW4sSXQpKStNYXRoLmltdWwoTnQsb3QpfDAsZmU9TWF0aC5pbXVsKE50LEl0KSxRPVErTWF0aC5p''@;'; put 'put ''bXVsKFB0LER0KXwwLHJlPShyZT1yZStNYXRoLmltdWwoUHQsdnQpfDApK01hdGguaW11bChBdCxEdCl8MCxmZT1mZStNYXRoLmltdWwoQXQsdnQpfDAsUT1RK01hdGguaW11bChhdCxMbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKGF0LHp0KXwwKStNYXRoLmltdWwoY3QsTG4pfDAsZmU9ZmUr''@;'; put 'put ''TWF0aC5pbXVsKGN0LHp0KXwwLFE9UStNYXRoLmltdWwoRWUsVG4pfDAscmU9KHJlPXJlK01hdGguaW11bChFZSxzbil8MCkrTWF0aC5pbXVsKERlLFRuKXwwLGZlPWZlK01hdGguaW11bChEZSxzbil8MCxRPVErTWF0aC5pbXVsKG50LEZuKXwwLHJlPShyZT1yZStNYXRoLmltdWwobnQscXQp''@;'; put 'put ''fDApK01hdGguaW11bChxZSxGbil8MCxmZT1mZStNYXRoLmltdWwocWUscXQpfDA7dmFyIFhpPShTKyhRPVErTWF0aC5pbXVsKEllLGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoSWUsY24pfDApK01hdGguaW11bChPZSxpaSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0''@;'; put 'put ''aC5pbXVsKE9lLGNuKXwwKSsocmU+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG1uLER0KSxyZT0ocmU9TWF0aC5pbXVsKG1uLHZ0KSkrTWF0aC5pbXVsKE50LER0KXwwLGZlPU1hdGguaW11bChOdCx2dCksUT1RK01hdGguaW11bChQdCxMbil8MCxyZT0o''@;'; put 'put ''cmU9cmUrTWF0aC5pbXVsKFB0LHp0KXwwKStNYXRoLmltdWwoQXQsTG4pfDAsZmU9ZmUrTWF0aC5pbXVsKEF0LHp0KXwwLFE9UStNYXRoLmltdWwoYXQsVG4pfDAscmU9KHJlPXJlK01hdGguaW11bChhdCxzbil8MCkrTWF0aC5pbXVsKGN0LFRuKXwwLGZlPWZlK01hdGguaW11bChjdCxzbil8''@;'; put 'put ''MCxRPVErTWF0aC5pbXVsKEVlLEZuKXwwLHJlPShyZT1yZStNYXRoLmltdWwoRWUscXQpfDApK01hdGguaW11bChEZSxGbil8MCxmZT1mZStNYXRoLmltdWwoRGUscXQpfDA7dmFyIHBvPShTKyhRPVErTWF0aC5pbXVsKG50LGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwo''@;'; put 'put ''bnQsY24pfDApK01hdGguaW11bChxZSxpaSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKHFlLGNuKXwwKSsocmU+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG1uLExuKSxyZT0ocmU9TWF0aC5pbXVsKG1uLHp0KSkrTWF0aC5pbXVsKE50LExu''@;'; put 'put ''KXwwLGZlPU1hdGguaW11bChOdCx6dCksUT1RK01hdGguaW11bChQdCxUbil8MCxyZT0ocmU9cmUrTWF0aC5pbXVsKFB0LHNuKXwwKStNYXRoLmltdWwoQXQsVG4pfDAsZmU9ZmUrTWF0aC5pbXVsKEF0LHNuKXwwLFE9UStNYXRoLmltdWwoYXQsRm4pfDAscmU9KHJlPXJlK01hdGguaW11bChh''@;'; put 'put ''dCxxdCl8MCkrTWF0aC5pbXVsKGN0LEZuKXwwLGZlPWZlK01hdGguaW11bChjdCxxdCl8MDt2YXIgX3I9KFMrKFE9UStNYXRoLmltdWwoRWUsaWkpfDApfDApKygoODE5MSYocmU9KHJlPXJlK01hdGguaW11bChFZSxjbil8MCkrTWF0aC5pbXVsKERlLGlpKXwwKSk8PDEzKXwwO1M9KChmZT1m''@;'; put 'put ''ZStNYXRoLmltdWwoRGUsY24pfDApKyhyZT4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMsUT1NYXRoLmltdWwobW4sVG4pLHJlPShyZT1NYXRoLmltdWwobW4sc24pKStNYXRoLmltdWwoTnQsVG4pfDAsZmU9TWF0aC5pbXVsKE50LHNuKSxRPVErTWF0aC5pbXVsKFB0LEZuKXww''@;'; put 'put ''LHJlPShyZT1yZStNYXRoLmltdWwoUHQscXQpfDApK01hdGguaW11bChBdCxGbil8MCxmZT1mZStNYXRoLmltdWwoQXQscXQpfDA7dmFyIEZpPShTKyhRPVErTWF0aC5pbXVsKGF0LGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoYXQsY24pfDApK01hdGguaW11bChjdCxp''@;'; put 'put ''aSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKGN0LGNuKXwwKSsocmU+Pj4xMyl8MCkrKEZpPj4+MjYpfDAsRmkmPTY3MTA4ODYzLFE9TWF0aC5pbXVsKG1uLEZuKSxyZT0ocmU9TWF0aC5pbXVsKG1uLHF0KSkrTWF0aC5pbXVsKE50LEZuKXwwLGZlPU1hdGguaW11bChOdCxxdCk7''@;'; put 'put ''dmFyIEhvPShTKyhRPVErTWF0aC5pbXVsKFB0LGlpKXwwKXwwKSsoKDgxOTEmKHJlPShyZT1yZStNYXRoLmltdWwoUHQsY24pfDApK01hdGguaW11bChBdCxpaSl8MCkpPDwxMyl8MDtTPSgoZmU9ZmUrTWF0aC5pbXVsKEF0LGNuKXwwKSsocmU+Pj4xMyl8MCkrKEhvPj4+MjYpfDAsSG8mPTY3''@;'; put 'put ''MTA4ODYzO3ZhciBnYT0oUysoUT1NYXRoLmltdWwobW4saWkpKXwwKSsoKDgxOTEmKHJlPShyZT1NYXRoLmltdWwobW4sY24pKStNYXRoLmltdWwoTnQsaWkpfDApKTw8MTMpfDA7cmV0dXJuIFM9KChmZT1NYXRoLmltdWwoTnQsY24pKSsocmU+Pj4xMyl8MCkrKGdhPj4+MjYpfDAsZ2EmPTY3''@;'; put 'put ''MTA4ODYzLHBbMF09am4scFsxXT1YcixwWzJdPXZpLHBbM109RXIscFs0XT1ZaSxwWzVdPUpyLHBbNl09YW8scFs3XT1CcixwWzhdPUppLHBbOV09dG8scFsxMF09Y28scFsxMV09bG8scFsxMl09c28scFsxM109WGkscFsxNF09cG8scFsxNV09X3IscFsxNl09RmkscFsxN109SG8scFsxOF09''@;'; put 'put ''Z2EsMCE9PVMmJihwWzE5XT1TLEMubGVuZ3RoKyspLEN9O2Z1bmN0aW9uIHEoTixGLGcpe2cubmVnYXRpdmU9Ri5uZWdhdGl2ZV5OLm5lZ2F0aXZlLGcubGVuZ3RoPU4ubGVuZ3RoK0YubGVuZ3RoO2Zvcih2YXIgQz0wLE09MCx5PTA7eTxnLmxlbmd0aC0xO3krKyl7dmFyIHA9TTtNPTA7Zm9y''@;'; put 'put ''KHZhciBTPTY3MTA4ODYzJkMsUT1NYXRoLm1pbih5LEYubGVuZ3RoLTEpLHJlPU1hdGgubWF4KDAseS1OLmxlbmd0aCsxKTtyZTw9UTtyZSsrKXt2YXIgVGU9KDB8Ti53b3Jkc1t5LXJlXSkqKDB8Ri53b3Jkc1tyZV0pLFBlPTY3MTA4ODYzJlRlO1M9NjcxMDg4NjMmKFBlPVBlK1N8MCksTSs9''@;'; put 'put ''KHA9KHA9cCsoVGUvNjcxMDg4NjR8MCl8MCkrKFBlPj4+MjYpfDApPj4+MjYscCY9NjcxMDg4NjN9Zy53b3Jkc1t5XT1TLEM9cCxwPU19cmV0dXJuIDAhPT1DP2cud29yZHNbeV09QzpnLmxlbmd0aC0tLGcuX3N0cmlwKCl9ZnVuY3Rpb24gdGUoTixGLGcpe3JldHVybiBxKE4sRixnKX1mdW5j''@;'; put 'put ''dGlvbiBuZShOLEYpe3RoaXMueD1OLHRoaXMueT1GfU1hdGguaW11bHx8KFU9VyksSC5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oRixnKXt2YXIgTT10aGlzLmxlbmd0aCtGLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1GLmxlbmd0aD9VKHRoaXMsRixnKTpNPDYzP1co''@;'; put 'put ''dGhpcyxGLGcpOk08MTAyND9xKHRoaXMsRixnKTp0ZSh0aGlzLEYsZyl9LG5lLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKEYpe2Zvcih2YXIgZz1uZXcgQXJyYXkoRiksQz1ILnByb3RvdHlwZS5fY291bnRCaXRzKEYpLTEsTT0wO008RjtNKyspZ1tNXT10aGlzLnJldkJpbihNLEMsRik7''@;'; put 'put ''cmV0dXJuIGd9LG5lLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oRixnLEMpe2lmKDA9PT1GfHxGPT09Qy0xKXJldHVybiBGO2Zvcih2YXIgTT0wLHk9MDt5PGc7eSsrKU18PSgxJkYpPDxnLXktMSxGPj49MTtyZXR1cm4gTX0sbmUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oRixnLEMs''@;'; put 'put ''TSx5LHApe2Zvcih2YXIgUz0wO1M8cDtTKyspTVtTXT1nW0ZbU11dLHlbU109Q1tGW1NdXX0sbmUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihGLGcsQyxNLHkscCl7dGhpcy5wZXJtdXRlKHAsRixnLEMsTSx5KTtmb3IodmFyIFM9MTtTPHk7Uzw8PTEpZm9yKHZhciBRPVM8PDEscmU9''@;'; put 'put ''TWF0aC5jb3MoMipNYXRoLlBJL1EpLGZlPU1hdGguc2luKDIqTWF0aC5QSS9RKSxtZT0wO21lPHk7bWUrPVEpZm9yKHZhciBrZT1yZSxUZT1mZSxQZT0wO1BlPFM7UGUrKyl7dmFyIEZlPUNbbWUrUGVdLE5lPU1bbWUrUGVdLExlPUNbbWUrUGUrU10sQmU9TVttZStQZStTXSxIZT1rZSpMZS1U''@;'; put 'put ''ZSpCZTtCZT1rZSpCZStUZSpMZSxDW21lK1BlXT1GZSsoTGU9SGUpLE1bbWUrUGVdPU5lK0JlLENbbWUrUGUrU109RmUtTGUsTVttZStQZStTXT1OZS1CZSxQZSE9PVEmJihIZT1yZSprZS1mZSpUZSxUZT1yZSpUZStmZSprZSxrZT1IZSl9fSxuZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVu''@;'; put 'put ''Y3Rpb24oRixnKXt2YXIgQz0xfE1hdGgubWF4KGcsRiksTT0xJkMseT0wO2ZvcihDPUMvMnwwO0M7Qz4+Pj0xKXkrKztyZXR1cm4gMTw8eSsxK019LG5lLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oRixnLEMpe2lmKCEoQzw9MSkpZm9yKHZhciBNPTA7TTxDLzI7TSsrKXt2YXIgeT1G''@;'; put 'put ''W01dO0ZbTV09RltDLU0tMV0sRltDLU0tMV09eSx5PWdbTV0sZ1tNXT0tZ1tDLU0tMV0sZ1tDLU0tMV09LXl9fSxuZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKEYsZyl7Zm9yKHZhciBDPTAsTT0wO008Zy8yO00rKyl7dmFyIHk9ODE5MipNYXRoLnJvdW5kKEZbMipNKzFdL2cp''@;'; put 'put ''K01hdGgucm91bmQoRlsyKk1dL2cpK0M7RltNXT02NzEwODg2MyZ5LEM9eTw2NzEwODg2ND8wOnkvNjcxMDg4NjR8MH1yZXR1cm4gRn0sbmUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oRixnLEMsTSl7Zm9yKHZhciB5PTAscD0wO3A8ZztwKyspQ1syKnBdPTgxOTEmKHkrPTB8Rltw''@;'; put 'put ''XSksQ1syKnArMV09ODE5MSYoeT4+Pj0xMykseT4+Pj0xMztmb3IocD0yKmc7cDxNOysrcClDW3BdPTA7digwPT09eSksdigwPT0oLTgxOTImeSkpfSxuZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihGKXtmb3IodmFyIGc9bmV3IEFycmF5KEYpLEM9MDtDPEY7QysrKWdbQ109MDtyZXR1cm4g''@;'; put 'put ''Z30sbmUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oRixnLEMpe3ZhciBNPTIqdGhpcy5ndWVzc0xlbjEzYihGLmxlbmd0aCxnLmxlbmd0aCkseT10aGlzLm1ha2VSQlQoTSkscD10aGlzLnN0dWIoTSksUz1uZXcgQXJyYXkoTSksUT1uZXcgQXJyYXkoTSkscmU9bmV3IEFycmF5KE0pLGZlPW5l''@;'; put 'put ''dyBBcnJheShNKSxtZT1uZXcgQXJyYXkoTSksa2U9bmV3IEFycmF5KE0pLFRlPUMud29yZHM7VGUubGVuZ3RoPU0sdGhpcy5jb252ZXJ0MTNiKEYud29yZHMsRi5sZW5ndGgsUyxNKSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxmZSxNKSx0aGlzLnRyYW5zZm9ybShTLHAsUSxy''@;'; put 'put ''ZSxNLHkpLHRoaXMudHJhbnNmb3JtKGZlLHAsbWUsa2UsTSx5KTtmb3IodmFyIFBlPTA7UGU8TTtQZSsrKXt2YXIgRmU9UVtQZV0qbWVbUGVdLXJlW1BlXSprZVtQZV07cmVbUGVdPVFbUGVdKmtlW1BlXStyZVtQZV0qbWVbUGVdLFFbUGVdPUZlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShRLHJl''@;'; put 'put ''LE0pLHRoaXMudHJhbnNmb3JtKFEscmUsVGUscCxNLHkpLHRoaXMuY29uanVnYXRlKFRlLHAsTSksdGhpcy5ub3JtYWxpemUxM2IoVGUsTSksQy5uZWdhdGl2ZT1GLm5lZ2F0aXZlXmcubmVnYXRpdmUsQy5sZW5ndGg9Ri5sZW5ndGgrZy5sZW5ndGgsQy5fc3RyaXAoKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''bXVsPWZ1bmN0aW9uKEYpe3ZhciBnPW5ldyBIKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtGLmxlbmd0aCksdGhpcy5tdWxUbyhGLGcpfSxILnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKEYpe3ZhciBnPW5ldyBIKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBB''@;'; put 'put ''cnJheSh0aGlzLmxlbmd0aCtGLmxlbmd0aCksdGUodGhpcyxGLGcpfSxILnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oRix0aGlzKX0sSC5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oRil7dmFyIGc9RjwwO2cmJihGPS1GKSx2KCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgRiksdihGPDY3MTA4ODY0KTtmb3IodmFyIEM9MCxNPTA7TTx0aGlzLmxlbmd0aDtNKyspe3ZhciB5PSgwfHRoaXMud29yZHNbTV0pKkYscD0oNjcxMDg4NjMmeSkrKDY3MTA4ODYzJkMpO0M+Pj0yNixDKz15LzY3MTA4ODY0fDAsQys9cD4+PjI2LHRoaXMud29yZHNbTV09Njcx''@;'; put 'put ''MDg4NjMmcH1yZXR1cm4gMCE9PUMmJih0aGlzLndvcmRzW01dPUMsdGhpcy5sZW5ndGgrKyksZz90aGlzLmluZWcoKTp0aGlzfSxILnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oRil9LEgucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLm11bCh0aGlzKX0sSC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sSC5wcm90b3R5cGUucG93PWZ1bmN0aW9uKEYpe3ZhciBnPWZ1bmN0aW9uIEcoTil7Zm9yKHZhciBGPW5ldyBBcnJheShOLmJpdExlbmd0aCgpKSxnPTA7''@;'; put 'put ''ZzxGLmxlbmd0aDtnKyspRltnXT1OLndvcmRzW2cvMjZ8MF0+Pj5nJTI2JjE7cmV0dXJuIEZ9KEYpO2lmKDA9PT1nLmxlbmd0aClyZXR1cm4gbmV3IEgoMSk7Zm9yKHZhciBDPXRoaXMsTT0wO008Zy5sZW5ndGgmJjA9PT1nW01dO00rKyxDPUMuc3FyKCkpO2lmKCsrTTxnLmxlbmd0aClmb3Io''@;'; put 'put ''dmFyIHk9Qy5zcXIoKTtNPGcubGVuZ3RoO00rKyx5PXkuc3FyKCkpMCE9PWdbTV0mJihDPUMubXVsKHkpKTtyZXR1cm4gQ30sSC5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKEYpe3YoIm51bWJlciI9PXR5cGVvZiBGJiZGPj0wKTt2YXIgeSxnPUYlMjYsQz0oRi1nKS8yNixNPTY3MTA4ODYz''@;'; put 'put ''Pj4+MjYtZzw8MjYtZztpZigwIT09Zyl7dmFyIHA9MDtmb3IoeT0wO3k8dGhpcy5sZW5ndGg7eSsrKXt2YXIgUz10aGlzLndvcmRzW3ldJk07dGhpcy53b3Jkc1t5XT0oMHx0aGlzLndvcmRzW3ldKS1TPDxnfHAscD1TPj4+MjYtZ31wJiYodGhpcy53b3Jkc1t5XT1wLHRoaXMubGVuZ3RoKysp''@;'; put 'put ''fWlmKDAhPT1DKXtmb3IoeT10aGlzLmxlbmd0aC0xO3k+PTA7eS0tKXRoaXMud29yZHNbeStDXT10aGlzLndvcmRzW3ldO2Zvcih5PTA7eTxDO3krKyl0aGlzLndvcmRzW3ldPTA7dGhpcy5sZW5ndGgrPUN9cmV0dXJuIHRoaXMuX3N0cmlwKCl9LEgucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9u''@;'; put 'put ''KEYpe3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihGKX0sSC5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKEYsZyxDKXt2YXIgTTt2KCJudW1iZXIiPT10eXBlb2YgRiYmRj49MCksTT1nPyhnLWclMjYpLzI2OjA7dmFyIHk9RiUyNixwPU1hdGgubWluKChGLXkpLzI2''@;'; put 'put ''LHRoaXMubGVuZ3RoKSxTPTY3MTA4ODYzXjY3MTA4ODYzPj4+eTw8eSxRPUM7aWYoTS09cCxNPU1hdGgubWF4KDAsTSksUSl7Zm9yKHZhciByZT0wO3JlPHA7cmUrKylRLndvcmRzW3JlXT10aGlzLndvcmRzW3JlXTtRLmxlbmd0aD1wfWlmKDAhPT1wKWlmKHRoaXMubGVuZ3RoPnApZm9yKHRo''@;'; put 'put ''aXMubGVuZ3RoLT1wLHJlPTA7cmU8dGhpcy5sZW5ndGg7cmUrKyl0aGlzLndvcmRzW3JlXT10aGlzLndvcmRzW3JlK3BdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIGZlPTA7Zm9yKHJlPXRoaXMubGVuZ3RoLTE7cmU+PTAmJigwIT09ZmV8fHJlPj1NKTtyZS0tKXt2''@;'; put 'put ''YXIgbWU9MHx0aGlzLndvcmRzW3JlXTt0aGlzLndvcmRzW3JlXT1mZTw8MjYteXxtZT4+PnksZmU9bWUmU31yZXR1cm4gUSYmMCE9PWZlJiYoUS53b3Jkc1tRLmxlbmd0aCsrXT1mZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuX3N0cmlw''@;'; put 'put ''KCl9LEgucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKEYsZyxDKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oRixnLEMpfSxILnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oRil9LEgucHJvdG90eXBlLnVzaGxuPWZ1''@;'; put 'put ''bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKEYpfSxILnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oRil9LEgucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKEYpfSxILnBy''@;'; put 'put ''b3RvdHlwZS50ZXN0bj1mdW5jdGlvbihGKXt2KCJudW1iZXIiPT10eXBlb2YgRiYmRj49MCk7dmFyIGc9RiUyNixDPShGLWcpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PUN8fCEodGhpcy53b3Jkc1tDXSYxPDxnKSl9LEgucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihGKXt2KCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgRiYmRj49MCk7dmFyIGc9RiUyNixDPShGLWcpLzI2O3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Qz90aGlzOigwIT09ZyYmQysrLHRoaXMubGVuZ3RoPU1hdGgubWluKEMs''@;'; put 'put ''dGhpcy5sZW5ndGgpLDAhPT1nJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnKSx0aGlzLl9zdHJpcCgpKX0sSC5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oRil9LEgucHJvdG90eXBlLmlh''@;'; put 'put ''ZGRuPWZ1bmN0aW9uKEYpe3JldHVybiB2KCJudW1iZXIiPT10eXBlb2YgRiksdihGPDY3MTA4ODY0KSxGPDA/dGhpcy5pc3VibigtRik6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTw9Rj8odGhpcy53b3Jkc1swXT1GLSgwfHRoaXMud29yZHNb''@;'; put 'put ''MF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oRiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKEYpfSxILnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oRil7dGhpcy53b3Jkc1swXSs9Rjtmb3IodmFyIGc9MDtnPHRoaXMubGVu''@;'; put 'put ''Z3RoJiZ0aGlzLndvcmRzW2ddPj02NzEwODg2NDtnKyspdGhpcy53b3Jkc1tnXS09NjcxMDg4NjQsZz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tnKzFdPTE6dGhpcy53b3Jkc1tnKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGcrMSksdGhpc30sSC5w''@;'; put 'put ''cm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oRil7aWYodigibnVtYmVyIj09dHlwZW9mIEYpLHYoRjw2NzEwODg2NCksRjwwKXJldHVybiB0aGlzLmlhZGRuKC1GKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oRiksdGhpcy5uZWdhdGl2ZT0x''@;'; put 'put ''LHRoaXM7aWYodGhpcy53b3Jkc1swXS09RiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgZz0wO2c8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbZ108MDtnKyspdGhpcy53b3Jk''@;'; put 'put ''c1tnXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tnKzFdLT0xO3JldHVybiB0aGlzLl9zdHJpcCgpfSxILnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oRil9LEgucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''c3VibihGKX0sSC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sSC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEgucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihGLGcsQyl7dmFy''@;'; put 'put ''IHk7dGhpcy5fZXhwYW5kKEYubGVuZ3RoK0MpO3ZhciBwLFM9MDtmb3IoeT0wO3k8Ri5sZW5ndGg7eSsrKXtwPSgwfHRoaXMud29yZHNbeStDXSkrUzt2YXIgUT0oMHxGLndvcmRzW3ldKSpnO1M9KChwLT02NzEwODg2MyZRKT4+MjYpLShRLzY3MTA4ODY0fDApLHRoaXMud29yZHNbeStDXT02''@;'; put 'put ''NzEwODg2MyZwfWZvcig7eTx0aGlzLmxlbmd0aC1DO3krKylTPShwPSgwfHRoaXMud29yZHNbeStDXSkrUyk+PjI2LHRoaXMud29yZHNbeStDXT02NzEwODg2MyZwO2lmKDA9PT1TKXJldHVybiB0aGlzLl9zdHJpcCgpO2Zvcih2KC0xPT09UyksUz0wLHk9MDt5PHRoaXMubGVuZ3RoO3krKylT''@;'; put 'put ''PShwPS0oMHx0aGlzLndvcmRzW3ldKStTKT4+MjYsdGhpcy53b3Jkc1t5XT02NzEwODg2MyZwO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fc3RyaXAoKX0sSC5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oRixnKXt2YXIgQyxNPXRoaXMuY2xvbmUoKSx5PUYscD0wfHkud29yZHNb''@;'; put 'put ''eS5sZW5ndGgtMV07MCE9KEM9MjYtdGhpcy5fY291bnRCaXRzKHApKSYmKHk9eS51c2hsbihDKSxNLml1c2hsbihDKSxwPTB8eS53b3Jkc1t5Lmxlbmd0aC0xXSk7dmFyIHJlLFE9TS5sZW5ndGgteS5sZW5ndGg7aWYoIm1vZCIhPT1nKXsocmU9bmV3IEgobnVsbCkpLmxlbmd0aD1RKzEscmUu''@;'; put 'put ''d29yZHM9bmV3IEFycmF5KHJlLmxlbmd0aCk7Zm9yKHZhciBmZT0wO2ZlPHJlLmxlbmd0aDtmZSsrKXJlLndvcmRzW2ZlXT0wfXZhciBtZT1NLmNsb25lKCkuX2lzaGxuc3VibXVsKHksMSxRKTswPT09bWUubmVnYXRpdmUmJihNPW1lLHJlJiYocmUud29yZHNbUV09MSkpO2Zvcih2YXIga2U9''@;'; put 'put ''US0xO2tlPj0wO2tlLS0pe3ZhciBUZT02NzEwODg2NCooMHxNLndvcmRzW3kubGVuZ3RoK2tlXSkrKDB8TS53b3Jkc1t5Lmxlbmd0aCtrZS0xXSk7Zm9yKFRlPU1hdGgubWluKFRlL3B8MCw2NzEwODg2MyksTS5faXNobG5zdWJtdWwoeSxUZSxrZSk7MCE9PU0ubmVnYXRpdmU7KVRlLS0sTS5u''@;'; put 'put ''ZWdhdGl2ZT0wLE0uX2lzaGxuc3VibXVsKHksMSxrZSksTS5pc1plcm8oKXx8KE0ubmVnYXRpdmVePTEpO3JlJiYocmUud29yZHNba2VdPVRlKX1yZXR1cm4gcmUmJnJlLl9zdHJpcCgpLE0uX3N0cmlwKCksImRpdiIhPT1nJiYwIT09QyYmTS5pdXNocm4oQykse2RpdjpyZXx8bnVsbCxtb2Q6''@;'; put 'put ''TX19LEgucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihGLGcsQyl7cmV0dXJuIHYoIUYuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgSCgwKSxtb2Q6bmV3IEgoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ri5uZWdhdGl2ZT8ocD10aGlzLm5lZygpLmRpdm1vZChGLGcpLCJt''@;'; put 'put ''b2QiIT09ZyYmKE09cC5kaXYubmVnKCkpLCJkaXYiIT09ZyYmKHk9cC5tb2QubmVnKCksQyYmMCE9PXkubmVnYXRpdmUmJnkuaWFkZChGKSkse2RpdjpNLG1vZDp5fSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1GLm5lZ2F0aXZlPyhwPXRoaXMuZGl2bW9kKEYubmVnKCksZyksIm1vZCIhPT1n''@;'; put 'put ''JiYoTT1wLmRpdi5uZWcoKSkse2RpdjpNLG1vZDpwLm1vZH0pOnRoaXMubmVnYXRpdmUmRi5uZWdhdGl2ZT8ocD10aGlzLm5lZygpLmRpdm1vZChGLm5lZygpLGcpLCJkaXYiIT09ZyYmKHk9cC5tb2QubmVnKCksQyYmMCE9PXkubmVnYXRpdmUmJnkuaXN1YihGKSkse2RpdjpwLmRpdixtb2Q6''@;'; put 'put ''eX0pOkYubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChGKTwwP3tkaXY6bmV3IEgoMCksbW9kOnRoaXN9OjE9PT1GLmxlbmd0aD8iZGl2Ij09PWc/e2Rpdjp0aGlzLmRpdm4oRi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Zz97ZGl2Om51bGwsbW9kOm5ldyBIKHRoaXMubW9kcm4o''@;'; put 'put ''Ri53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihGLndvcmRzWzBdKSxtb2Q6bmV3IEgodGhpcy5tb2RybihGLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoRixnKTt2YXIgTSx5LHB9LEgucHJvdG90eXBlLmRpdj1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5kaXZtb2QoRiwiZGl2IiwhMSku''@;'; put 'put ''ZGl2fSxILnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuZGl2bW9kKEYsIm1vZCIsITEpLm1vZH0sSC5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5kaXZtb2QoRiwibW9kIiwhMCkubW9kfSxILnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihG''@;'; put 'put ''KXt2YXIgZz10aGlzLmRpdm1vZChGKTtpZihnLm1vZC5pc1plcm8oKSlyZXR1cm4gZy5kaXY7dmFyIEM9MCE9PWcuZGl2Lm5lZ2F0aXZlP2cubW9kLmlzdWIoRik6Zy5tb2QsTT1GLnVzaHJuKDEpLHk9Ri5hbmRsbigxKSxwPUMuY21wKE0pO3JldHVybiBwPDB8fDE9PT15JiYwPT09cD9nLmRp''@;'; put 'put ''djowIT09Zy5kaXYubmVnYXRpdmU/Zy5kaXYuaXN1Ym4oMSk6Zy5kaXYuaWFkZG4oMSl9LEgucHJvdG90eXBlLm1vZHJuPWZ1bmN0aW9uKEYpe3ZhciBnPUY8MDtnJiYoRj0tRiksdihGPD02NzEwODg2Myk7Zm9yKHZhciBDPSgxPDwyNiklRixNPTAseT10aGlzLmxlbmd0aC0xO3k+PTA7eS0t''@;'; put 'put ''KU09KEMqTSsoMHx0aGlzLndvcmRzW3ldKSklRjtyZXR1cm4gZz8tTTpNfSxILnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLm1vZHJuKEYpfSxILnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihGKXt2YXIgZz1GPDA7ZyYmKEY9LUYpLHYoRjw9NjcxMDg4NjMpO2Zvcih2''@;'; put 'put ''YXIgQz0wLE09dGhpcy5sZW5ndGgtMTtNPj0wO00tLSl7dmFyIHk9KDB8dGhpcy53b3Jkc1tNXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW01dPXkvRnwwLEM9eSVGfXJldHVybiB0aGlzLl9zdHJpcCgpLGc/dGhpcy5pbmVnKCk6dGhpc30sSC5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihGKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKEYpfSxILnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKEYpe3YoMD09PUYubmVnYXRpdmUpLHYoIUYuaXNaZXJvKCkpO3ZhciBnPXRoaXMsQz1GLmNsb25lKCk7Zz0wIT09Zy5uZWdhdGl2ZT9nLnVtb2QoRik6Zy5jbG9uZSgpO2Zvcih2YXIgTT1uZXcg''@;'; put 'put ''SCgxKSx5PW5ldyBIKDApLHA9bmV3IEgoMCksUz1uZXcgSCgxKSxRPTA7Zy5pc0V2ZW4oKSYmQy5pc0V2ZW4oKTspZy5pdXNocm4oMSksQy5pdXNocm4oMSksKytRO2Zvcih2YXIgcmU9Qy5jbG9uZSgpLGZlPWcuY2xvbmUoKTshZy5pc1plcm8oKTspe2Zvcih2YXIgbWU9MCxrZT0xOyEoZy53''@;'; put 'put ''b3Jkc1swXSZrZSkmJm1lPDI2OysrbWUsa2U8PD0xKTtpZihtZT4wKWZvcihnLml1c2hybihtZSk7bWUtLSA+MDspKE0uaXNPZGQoKXx8eS5pc09kZCgpKSYmKE0uaWFkZChyZSkseS5pc3ViKGZlKSksTS5pdXNocm4oMSkseS5pdXNocm4oMSk7Zm9yKHZhciBUZT0wLFBlPTE7IShDLndvcmRz''@;'; put 'put ''WzBdJlBlKSYmVGU8MjY7KytUZSxQZTw8PTEpO2lmKFRlPjApZm9yKEMuaXVzaHJuKFRlKTtUZS0tID4wOykocC5pc09kZCgpfHxTLmlzT2RkKCkpJiYocC5pYWRkKHJlKSxTLmlzdWIoZmUpKSxwLml1c2hybigxKSxTLml1c2hybigxKTtnLmNtcChDKT49MD8oZy5pc3ViKEMpLE0uaXN1Yihw''@;'; put 'put ''KSx5LmlzdWIoUykpOihDLmlzdWIoZykscC5pc3ViKE0pLFMuaXN1Yih5KSl9cmV0dXJue2E6cCxiOlMsZ2NkOkMuaXVzaGxuKFEpfX0sSC5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKEYpe3YoMD09PUYubmVnYXRpdmUpLHYoIUYuaXNaZXJvKCkpO3ZhciBtZSxnPXRoaXMsQz1GLmNsb25l''@;'; put 'put ''KCk7Zz0wIT09Zy5uZWdhdGl2ZT9nLnVtb2QoRik6Zy5jbG9uZSgpO2Zvcih2YXIgTT1uZXcgSCgxKSx5PW5ldyBIKDApLHA9Qy5jbG9uZSgpO2cuY21wbigxKT4wJiZDLmNtcG4oMSk+MDspe2Zvcih2YXIgUz0wLFE9MTshKGcud29yZHNbMF0mUSkmJlM8MjY7KytTLFE8PD0xKTtpZihTPjAp''@;'; put 'put ''Zm9yKGcuaXVzaHJuKFMpO1MtLSA+MDspTS5pc09kZCgpJiZNLmlhZGQocCksTS5pdXNocm4oMSk7Zm9yKHZhciByZT0wLGZlPTE7IShDLndvcmRzWzBdJmZlKSYmcmU8MjY7KytyZSxmZTw8PTEpO2lmKHJlPjApZm9yKEMuaXVzaHJuKHJlKTtyZS0tID4wOyl5LmlzT2RkKCkmJnkuaWFkZChw''@;'; put 'put ''KSx5Lml1c2hybigxKTtnLmNtcChDKT49MD8oZy5pc3ViKEMpLE0uaXN1Yih5KSk6KEMuaXN1YihnKSx5LmlzdWIoTSkpfXJldHVybihtZT0wPT09Zy5jbXBuKDEpP006eSkuY21wbigwKTwwJiZtZS5pYWRkKEYpLG1lfSxILnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oRil7aWYodGhpcy5pc1pl''@;'; put 'put ''cm8oKSlyZXR1cm4gRi5hYnMoKTtpZihGLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBnPXRoaXMuY2xvbmUoKSxDPUYuY2xvbmUoKTtnLm5lZ2F0aXZlPTAsQy5uZWdhdGl2ZT0wO2Zvcih2YXIgTT0wO2cuaXNFdmVuKCkmJkMuaXNFdmVuKCk7TSsrKWcuaXVzaHJuKDEpLEMuaXVz''@;'; put 'put ''aHJuKDEpO2Zvcig7Oyl7Zm9yKDtnLmlzRXZlbigpOylnLml1c2hybigxKTtmb3IoO0MuaXNFdmVuKCk7KUMuaXVzaHJuKDEpO3ZhciB5PWcuY21wKEMpO2lmKHk8MCl7dmFyIHA9ZztnPUMsQz1wfWVsc2UgaWYoMD09PXl8fDA9PT1DLmNtcG4oMSkpYnJlYWs7Zy5pc3ViKEMpfXJldHVybiBD''@;'; put 'put ''Lml1c2hsbihNKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5lZ2NkKEYpLmEudW1vZChGKX0sSC5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxILnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMud29yZHNbMF0mRn0sSC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oRil7digibnVtYmVyIj09dHlwZW9mIEYpO3ZhciBnPUYlMjYsQz0oRi1nKS8yNixNPTE8PGc7aWYodGhp''@;'; put 'put ''cy5sZW5ndGg8PUMpcmV0dXJuIHRoaXMuX2V4cGFuZChDKzEpLHRoaXMud29yZHNbQ118PU0sdGhpcztmb3IodmFyIHk9TSxwPUM7MCE9PXkmJnA8dGhpcy5sZW5ndGg7cCsrKXt2YXIgUz0wfHRoaXMud29yZHNbcF07eT0oUys9eSk+Pj4yNix0aGlzLndvcmRzW3BdPVMmPTY3MTA4ODYzfXJl''@;'; put 'put ''dHVybiAwIT09eSYmKHRoaXMud29yZHNbcF09eSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sSC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihGKXt2YXIgQyxnPUY8MDtp''@;'; put 'put ''ZigwIT09dGhpcy5uZWdhdGl2ZSYmIWcpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmcpcmV0dXJuIDE7aWYodGhpcy5fc3RyaXAoKSx0aGlzLmxlbmd0aD4xKUM9MTtlbHNle2cmJihGPS1GKSx2KEY8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBNPTB8dGhpcy53''@;'; put 'put ''b3Jkc1swXTtDPU09PT1GPzA6TTxGPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sSC5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKEYpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Ri5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PUYubmVn''@;'; put 'put ''YXRpdmUpcmV0dXJuIDE7dmFyIGc9dGhpcy51Y21wKEYpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1nOmd9LEgucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oRil7aWYodGhpcy5sZW5ndGg+Ri5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Ri5sZW5ndGgpcmV0dXJuLTE7Zm9y''@;'; put 'put ''KHZhciBnPTAsQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXt2YXIgTT0wfHRoaXMud29yZHNbQ10seT0wfEYud29yZHNbQ107aWYoTSE9PXkpe008eT9nPS0xOk0+eSYmKGc9MSk7YnJlYWt9fXJldHVybiBnfSxILnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oRil7cmV0dXJuIDE9PT10aGlzLmNt''@;'; put 'put ''cG4oRil9LEgucHJvdG90eXBlLmd0PWZ1bmN0aW9uKEYpe3JldHVybiAxPT09dGhpcy5jbXAoRil9LEgucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuY21wbihGKT49MH0sSC5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNtcChGKT49MH0sSC5w''@;'; put 'put ''cm90b3R5cGUubHRuPWZ1bmN0aW9uKEYpe3JldHVybi0xPT09dGhpcy5jbXBuKEYpfSxILnByb3RvdHlwZS5sdD1mdW5jdGlvbihGKXtyZXR1cm4tMT09PXRoaXMuY21wKEYpfSxILnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKEYpe3JldHVybiB0aGlzLmNtcG4oRik8PTB9LEgucHJvdG90eXBl''@;'; put 'put ''Lmx0ZT1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5jbXAoRik8PTB9LEgucHJvdG90eXBlLmVxbj1mdW5jdGlvbihGKXtyZXR1cm4gMD09PXRoaXMuY21wbihGKX0sSC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oRil7cmV0dXJuIDA9PT10aGlzLmNtcChGKX0sSC5yZWQ9ZnVuY3Rpb24oRil7cmV0''@;'; put 'put ''dXJuIG5ldyBiKEYpfSxILnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihGKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx2KDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEYuY29udmVy''@;'; put 'put ''dFRvKHRoaXMpLl9mb3JjZVJlZChGKX0sSC5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEgucHJvdG90''@;'; put 'put ''eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5yZWQ9Rix0aGlzfSxILnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihGKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChGKX0sSC5w''@;'; put 'put ''cm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKEYpe3JldHVybiB2KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsRil9LEgucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oRil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElBZGQg''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLEYpfSxILnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oRil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxGKX0sSC5w''@;'; put 'put ''cm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihGKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsRil9LEgucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihGKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU2hs''@;'; put 'put ''IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLEYpfSxILnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oRil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLEYp''@;'; put 'put ''LHRoaXMucmVkLm11bCh0aGlzLEYpfSxILnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKEYpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxGKSx0aGlzLnJlZC5pbXVsKHRoaXMsRil9LEgucHJv''@;'; put 'put ''dG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxILnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYo''@;'; put 'put ''dGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEgucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5''@;'; put 'put ''MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxILnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sSC5wcm90''@;'; put 'put ''b3R5cGUucmVkUG93PWZ1bmN0aW9uKEYpe3JldHVybiB2KHRoaXMucmVkJiYhRi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsRil9O3ZhciBpZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51''@;'; put 'put ''bGx9O2Z1bmN0aW9uIGxlKE4sRil7dGhpcy5uYW1lPU4sdGhpcy5wPW5ldyBIKEYsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBIKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBkZSgpe2xlLmNhbGwo''@;'; put 'put ''dGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gdWUoKXtsZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAw''@;'; put 'put ''MCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGNlKCl7bGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBZKCl7bGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBiKE4pe2lmKCJzdHJpbmciPT10eXBlb2YgTil7dmFyIEY9SC5fcHJpbWUoTik7dGhpcy5tPUYucCx0aGlzLnByaW1lPUZ9ZWxzZSB2KE4uZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUg''@;'; put 'put ''Z3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Tix0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24geChOKXtiLmNhbGwodGhpcyxOKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBIKDEp''@;'; put 'put ''Lml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhp''@;'; put 'put ''cy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWxlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIEY9bmV3IEgobnVsbCk7cmV0dXJuIEYud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxGfSxsZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihG''@;'; put 'put ''KXt2YXIgQyxnPUY7ZG97dGhpcy5zcGxpdChnLHRoaXMudG1wKSxDPShnPShnPXRoaXMuaW11bEsoZykpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIE09Qzx0aGlzLm4/LTE6Zy51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1NPyhnLndvcmRzWzBdPTAs''@;'; put 'put ''Zy5sZW5ndGg9MSk6TT4wP2cuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWcuc3RyaXA/Zy5zdHJpcCgpOmcuX3N0cmlwKCksZ30sbGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKEYsZyl7Ri5pdXNocm4odGhpcy5uLDAsZyl9LGxlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihGKXtyZXR1cm4g''@;'; put 'put ''Ri5pbXVsKHRoaXMuayl9LGhlKGRlLGxlKSxkZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oRixnKXtmb3IodmFyIEM9NDE5NDMwMyxNPU1hdGgubWluKEYubGVuZ3RoLDkpLHk9MDt5PE07eSsrKWcud29yZHNbeV09Ri53b3Jkc1t5XTtpZihnLmxlbmd0aD1NLEYubGVuZ3RoPD05KXJldHVy''@;'; put 'put ''biBGLndvcmRzWzBdPTAsdm9pZChGLmxlbmd0aD0xKTt2YXIgcD1GLndvcmRzWzldO2ZvcihnLndvcmRzW2cubGVuZ3RoKytdPXAmQyx5PTEwO3k8Ri5sZW5ndGg7eSsrKXt2YXIgUz0wfEYud29yZHNbeV07Ri53b3Jkc1t5LTEwXT0oUyZDKTw8NHxwPj4+MjIscD1TfUYud29yZHNbeS0xMF09''@;'; put 'put ''cD4+Pj0yMixGLmxlbmd0aC09MD09PXAmJkYubGVuZ3RoPjEwPzEwOjl9LGRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihGKXtGLndvcmRzW0YubGVuZ3RoXT0wLEYud29yZHNbRi5sZW5ndGgrMV09MCxGLmxlbmd0aCs9Mjtmb3IodmFyIGc9MCxDPTA7QzxGLmxlbmd0aDtDKyspe3ZhciBN''@;'; put 'put ''PTB8Ri53b3Jkc1tDXTtGLndvcmRzW0NdPTY3MTA4ODYzJihnKz05NzcqTSksZz02NCpNKyhnLzY3MTA4ODY0fDApfXJldHVybiAwPT09Ri53b3Jkc1tGLmxlbmd0aC0xXSYmKEYubGVuZ3RoLS0sMD09PUYud29yZHNbRi5sZW5ndGgtMV0mJkYubGVuZ3RoLS0pLEZ9LGhlKHVlLGxlKSxoZShj''@;'; put 'put ''ZSxsZSksaGUoWSxsZSksWS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oRil7Zm9yKHZhciBnPTAsQz0wO0M8Ri5sZW5ndGg7QysrKXt2YXIgTT0xOSooMHxGLndvcmRzW0NdKStnLHk9NjcxMDg4NjMmTTtNPj4+PTI2LEYud29yZHNbQ109eSxnPU19cmV0dXJuIDAhPT1nJiYoRi53b3Jkc1tG''@;'; put 'put ''Lmxlbmd0aCsrXT1nKSxGfSxILl9wcmltZT1mdW5jdGlvbihGKXtpZihpZVtGXSlyZXR1cm4gaWVbRl07dmFyIGc7aWYoImsyNTYiPT09RilnPW5ldyBkZTtlbHNlIGlmKCJwMjI0Ij09PUYpZz1uZXcgdWU7ZWxzZSBpZigicDE5MiI9PT1GKWc9bmV3IGNlO2Vsc2V7aWYoInAyNTUxOSIhPT1G''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK0YpO2c9bmV3IFl9cmV0dXJuIGllW0ZdPWcsZ30sYi5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oRil7digwPT09Ri5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx2KEYucmVkLCJyZWQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHJlZCBudW1iZXJzIil9LGIucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKEYsZyl7digwPT0oRi5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx2KEYucmVkJiZGLnJlZD09PWcucmVkLCJyZWQgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIil9LGIucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKEYpLl9mb3JjZVJlZCh0aGlzKTooSShGLEYudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKSksRil9LGIucHJvdG90eXBlLm5lZz1mdW5jdGlv''@;'; put 'put ''bihGKXtyZXR1cm4gRi5pc1plcm8oKT9GLmNsb25lKCk6dGhpcy5tLnN1YihGKS5fZm9yY2VSZWQodGhpcyl9LGIucHJvdG90eXBlLmFkZD1mdW5jdGlvbihGLGcpe3RoaXMuX3ZlcmlmeTIoRixnKTt2YXIgQz1GLmFkZChnKTtyZXR1cm4gQy5jbXAodGhpcy5tKT49MCYmQy5pc3ViKHRoaXMu''@;'; put 'put ''bSksQy5fZm9yY2VSZWQodGhpcyl9LGIucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oRixnKXt0aGlzLl92ZXJpZnkyKEYsZyk7dmFyIEM9Ri5pYWRkKGcpO3JldHVybiBDLmNtcCh0aGlzLm0pPj0wJiZDLmlzdWIodGhpcy5tKSxDfSxiLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oRixnKXt0aGlz''@;'; put 'put ''Ll92ZXJpZnkyKEYsZyk7dmFyIEM9Ri5zdWIoZyk7cmV0dXJuIEMuY21wbigwKTwwJiZDLmlhZGQodGhpcy5tKSxDLl9mb3JjZVJlZCh0aGlzKX0sYi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihGLGcpe3RoaXMuX3ZlcmlmeTIoRixnKTt2YXIgQz1GLmlzdWIoZyk7cmV0dXJuIEMuY21wbigw''@;'; put 'put ''KTwwJiZDLmlhZGQodGhpcy5tKSxDfSxiLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oRixnKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShGKSx0aGlzLmltb2QoRi51c2hsbihnKSl9LGIucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oRixnKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihGLGcpLHRoaXMuaW1v''@;'; put 'put ''ZChGLmltdWwoZykpfSxiLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oRixnKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihGLGcpLHRoaXMuaW1vZChGLm11bChnKSl9LGIucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuaW11bChGLEYuY2xvbmUoKSl9LGIucHJvdG90eXBlLnNx''@;'; put 'put ''cj1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5tdWwoRixGKX0sYi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihGKXtpZihGLmlzWmVybygpKXJldHVybiBGLmNsb25lKCk7dmFyIGc9dGhpcy5tLmFuZGxuKDMpO2lmKHYoZyUyPT0xKSwzPT09Zyl7dmFyIEM9dGhpcy5tLmFkZChuZXcgSCgxKSku''@;'; put 'put ''aXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhGLEMpfWZvcih2YXIgTT10aGlzLm0uc3VibigxKSx5PTA7IU0uaXNaZXJvKCkmJjA9PT1NLmFuZGxuKDEpOyl5KyssTS5pdXNocm4oMSk7dighTS5pc1plcm8oKSk7dmFyIHA9bmV3IEgoMSkudG9SZWQodGhpcyksUz1wLnJlZE5lZygpLFE9dGhp''@;'; put 'put ''cy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHJlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IocmU9bmV3IEgoMipyZSpyZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KHJlLFEpLmNtcChTKTspcmUucmVkSUFkZChTKTtmb3IodmFyIGZlPXRoaXMucG93KHJlLE0pLG1lPXRoaXMucG93KEYsTS5hZGRu''@;'; put 'put ''KDEpLml1c2hybigxKSksa2U9dGhpcy5wb3coRixNKSxUZT15OzAhPT1rZS5jbXAocCk7KXtmb3IodmFyIFBlPWtlLEZlPTA7MCE9PVBlLmNtcChwKTtGZSsrKVBlPVBlLnJlZFNxcigpO3YoRmU8VGUpO3ZhciBOZT10aGlzLnBvdyhmZSxuZXcgSCgxKS5pdXNobG4oVGUtRmUtMSkpO21lPW1l''@;'; put 'put ''LnJlZE11bChOZSksZmU9TmUucmVkU3FyKCksa2U9a2UucmVkTXVsKGZlKSxUZT1GZX1yZXR1cm4gbWV9LGIucHJvdG90eXBlLmludm09ZnVuY3Rpb24oRil7dmFyIGc9Ri5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PWcubmVnYXRpdmU/KGcubmVnYXRpdmU9MCx0aGlzLmltb2QoZykucmVk''@;'; put 'put ''TmVnKCkpOnRoaXMuaW1vZChnKX0sYi5wcm90b3R5cGUucG93PWZ1bmN0aW9uKEYsZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gbmV3IEgoMSkudG9SZWQodGhpcyk7aWYoMD09PWcuY21wbigxKSlyZXR1cm4gRi5jbG9uZSgpO3ZhciBNPW5ldyBBcnJheSgxNik7TVswXT1uZXcgSCgxKS50b1Jl''@;'; put 'put ''ZCh0aGlzKSxNWzFdPUY7Zm9yKHZhciB5PTI7eTxNLmxlbmd0aDt5KyspTVt5XT10aGlzLm11bChNW3ktMV0sRik7dmFyIHA9TVswXSxTPTAsUT0wLHJlPWcuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1yZSYmKHJlPTI2KSx5PWcubGVuZ3RoLTE7eT49MDt5LS0pe2Zvcih2YXIgZmU9Zy53b3Jk''@;'; put 'put ''c1t5XSxtZT1yZS0xO21lPj0wO21lLS0pe3ZhciBrZT1mZT4+bWUmMTtwIT09TVswXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1rZXx8MCE9PVM/KFM8PD0xLFN8PWtlLCg0PT0rK1F8fDA9PT15JiYwPT09bWUpJiYocD10aGlzLm11bChwLE1bU10pLFE9MCxTPTApKTpRPTB9cmU9MjZ9cmV0dXJu''@;'; put 'put ''IHB9LGIucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihGKXt2YXIgZz1GLnVtb2QodGhpcy5tKTtyZXR1cm4gZz09PUY/Zy5jbG9uZSgpOmd9LGIucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKEYpe3ZhciBnPUYuY2xvbmUoKTtyZXR1cm4gZy5yZWQ9bnVsbCxnfSxILm1vbnQ9''@;'; put 'put ''ZnVuY3Rpb24oRil7cmV0dXJuIG5ldyB4KEYpfSxoZSh4LGIpLHgucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihGKXtyZXR1cm4gdGhpcy5pbW9kKEYudXNobG4odGhpcy5zaGlmdCkpfSx4LnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihGKXt2YXIgZz10aGlzLmltb2QoRi5t''@;'; put 'put ''dWwodGhpcy5yaW52KSk7cmV0dXJuIGcucmVkPW51bGwsZ30seC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihGLGcpe2lmKEYuaXNaZXJvKCl8fGcuaXNaZXJvKCkpcmV0dXJuIEYud29yZHNbMF09MCxGLmxlbmd0aD0xLEY7dmFyIEM9Ri5pbXVsKGcpLE09Qy5tYXNrbih0aGlzLnNoaWZ0KS5t''@;'; put 'put ''dWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkseT1DLmlzdWIoTSkuaXVzaHJuKHRoaXMuc2hpZnQpLHA9eTtyZXR1cm4geS5jbXAodGhpcy5tKT49MD9wPXkuaXN1Yih0aGlzLm0pOnkuY21wbigwKTwwJiYocD15LmlhZGQodGhpcy5tKSkscC5fZm9yY2VSZWQo''@;'; put 'put ''dGhpcyl9LHgucHJvdG90eXBlLm11bD1mdW5jdGlvbihGLGcpe2lmKEYuaXNaZXJvKCl8fGcuaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgQz1GLm11bChnKSxNPUMubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQp''@;'; put 'put ''Lm11bCh0aGlzLm0pLHk9Qy5pc3ViKE0pLml1c2hybih0aGlzLnNoaWZ0KSxwPXk7cmV0dXJuIHkuY21wKHRoaXMubSk+PTA/cD15LmlzdWIodGhpcy5tKTp5LmNtcG4oMCk8MCYmKHA9eS5pYWRkKHRoaXMubSkpLHAuX2ZvcmNlUmVkKHRoaXMpfSx4LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9u''@;'; put 'put ''KEYpe3JldHVybiB0aGlzLmltb2QoRi5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFdlPVQubm1kKFdlKSx0aGlzKX0sNjAwODI6KFdlLHplLFQpPT57dmFyIHNlO2Z1bmN0aW9uIGsoaGUpe3RoaXMucmFuZD1oZX1pZihXZS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KEgpe3JldHVybiBzZXx8KHNlPW5ldyBrKG51bGwpKSxzZS5nZW5lcmF0ZShIKX0sV2UuZXhwb3J0cy5SYW5kPWssay5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuX3JhbmQoSCl9LGsucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKEgpe2lmKHRoaXMucmFuZC5n''@;'; put 'put ''ZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKEgpO2Zvcih2YXIgQj1uZXcgVWludDhBcnJheShIKSxMPTA7TDxCLmxlbmd0aDtMKyspQltMXT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiBCfSwib2JqZWN0Ij09dHlwZW9mIHNlbGYpc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRv''@;'; put 'put ''LmdldFJhbmRvbVZhbHVlcz9rLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihIKXt2YXIgQj1uZXcgVWludDhBcnJheShIKTtyZXR1cm4gc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKEIpLEJ9OnNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP2sucHJvdG90''@;'; put 'put ''eXBlLl9yYW5kPWZ1bmN0aW9uKEgpe3ZhciBCPW5ldyBVaW50OEFycmF5KEgpO3JldHVybiBzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhCKSxCfToib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmKGsucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qg''@;'; put 'put ''aW1wbGVtZW50ZWQgeWV0Iil9KTtlbHNlIHRyeXt2YXIgdj1UKDc3OTAzKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygdi5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQiKTtrLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihIKXtyZXR1cm4gdi5yYW5kb21CeXRlcyhI''@;'; put 'put ''KX19Y2F0Y2h7fX0sNjQwMzooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZlcjtmdW5jdGlvbiBrKEspe3NlLmlzQnVmZmVyKEspfHwoSz1zZS5mcm9tKEspKTtmb3IodmFyIEo9Sy5sZW5ndGgvNHwwLEk9bmV3IEFycmF5KEopLFI9MDtSPEo7UisrKUlbUl09Sy5yZWFkVUludDMyQkUo''@;'; put 'put ''NCpSKTtyZXR1cm4gSX1mdW5jdGlvbiB2KEspe2Zvcig7MDxLLmxlbmd0aDtLKyspS1swXT0wfWZ1bmN0aW9uIGhlKEssSixJLFIsRSl7Zm9yKHZhciBuZSxpZSxsZSxkZSx6PUlbMF0saj1JWzFdLFY9SVsyXSxHPUlbM10sVz1LWzBdXkpbMF0sVT1LWzFdXkpbMV0scT1LWzJdXkpbMl0sdGU9''@;'; put 'put ''S1szXV5KWzNdLHVlPTQsY2U9MTtjZTxFO2NlKyspbmU9eltXPj4+MjRdXmpbVT4+PjE2JjI1NV1eVltxPj4+OCYyNTVdXkdbMjU1JnRlXV5KW3VlKytdLGllPXpbVT4+PjI0XV5qW3E+Pj4xNiYyNTVdXlZbdGU+Pj44JjI1NV1eR1syNTUmV11eSlt1ZSsrXSxsZT16W3E+Pj4yNF1ealt0ZT4+''@;'; put 'put ''PjE2JjI1NV1eVltXPj4+OCYyNTVdXkdbMjU1JlVdXkpbdWUrK10sZGU9elt0ZT4+PjI0XV5qW1c+Pj4xNiYyNTVdXlZbVT4+PjgmMjU1XV5HWzI1NSZxXV5KW3VlKytdLFc9bmUsVT1pZSxxPWxlLHRlPWRlO3JldHVybiBuZT0oUltXPj4+MjRdPDwyNHxSW1U+Pj4xNiYyNTVdPDwxNnxSW3E+''@;'; put 'put ''Pj44JjI1NV08PDh8UlsyNTUmdGVdKV5KW3VlKytdLGllPShSW1U+Pj4yNF08PDI0fFJbcT4+PjE2JjI1NV08PDE2fFJbdGU+Pj44JjI1NV08PDh8UlsyNTUmV10pXkpbdWUrK10sbGU9KFJbcT4+PjI0XTw8MjR8Ult0ZT4+PjE2JjI1NV08PDE2fFJbVz4+PjgmMjU1XTw8OHxSWzI1NSZVXSle''@;'; put 'put ''Slt1ZSsrXSxkZT0oUlt0ZT4+PjI0XTw8MjR8UltXPj4+MTYmMjU1XTw8MTZ8UltVPj4+OCYyNTVdPDw4fFJbMjU1JnFdKV5KW3VlKytdLFtuZT4+Pj0wLGllPj4+PTAsbGU+Pj49MCxkZT4+Pj0wXX12YXIgSD1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sQj1mdW5jdGlvbigpe2Zv''@;'; put 'put ''cih2YXIgSz1uZXcgQXJyYXkoMjU2KSxKPTA7SjwyNTY7SisrKUtbSl09SjwxMjg/Sjw8MTpKPDwxXjI4Mztmb3IodmFyIEk9W10sUj1bXSxFPVtbXSxbXSxbXSxbXV0sej1bW10sW10sW10sW11dLGo9MCxWPTAsRz0wO0c8MjU2OysrRyl7dmFyIFc9Vl5WPDwxXlY8PDJeVjw8M15WPDw0O0lb''@;'; put 'put ''al09Vz1XPj4+OF4yNTUmV145OSxSW1ddPWo7dmFyIFU9S1tqXSxxPUtbVV0sdGU9S1txXSxuZT0yNTcqS1tXXV4xNjg0MzAwOCpXO0VbMF1bal09bmU8PDI0fG5lPj4+OCxFWzFdW2pdPW5lPDwxNnxuZT4+PjE2LEVbMl1bal09bmU8PDh8bmU+Pj4yNCxFWzNdW2pdPW5lLHpbMF1bV109KG5l''@;'; put 'put ''PTE2ODQzMDA5KnRlXjY1NTM3KnFeMjU3KlVeMTY4NDMwMDgqaik8PDI0fG5lPj4+OCx6WzFdW1ddPW5lPDwxNnxuZT4+PjE2LHpbMl1bV109bmU8PDh8bmU+Pj4yNCx6WzNdW1ddPW5lLDA9PT1qP2o9Vj0xOihqPVVeS1tLW0tbdGVeVV1dXSxWXj1LW0tbVl1dKX1yZXR1cm57U0JPWDpJLElO''@;'; put 'put ''Vl9TQk9YOlIsU1VCX01JWDpFLElOVl9TVUJfTUlYOnp9fSgpO2Z1bmN0aW9uIEwoSyl7dGhpcy5fa2V5PWsoSyksdGhpcy5fcmVzZXQoKX1MLmJsb2NrU2l6ZT0xNixMLmtleVNpemU9MzIsTC5wcm90b3R5cGUuYmxvY2tTaXplPUwuYmxvY2tTaXplLEwucHJvdG90eXBlLmtleVNpemU9TC5r''@;'; put 'put ''ZXlTaXplLEwucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgSz10aGlzLl9rZXksSj1LLmxlbmd0aCxJPUorNixSPTQqKEkrMSksRT1bXSx6PTA7ejxKO3orKylFW3pdPUtbel07Zm9yKHo9Sjt6PFI7eisrKXt2YXIgaj1FW3otMV07eiVKPT0wPyhqPUIuU0JPWFsoaj1qPDw4''@;'; put 'put ''fGo+Pj4yNCk+Pj4yNF08PDI0fEIuU0JPWFtqPj4+MTYmMjU1XTw8MTZ8Qi5TQk9YW2o+Pj44JjI1NV08PDh8Qi5TQk9YWzI1NSZqXSxqXj1IW3ovSnwwXTw8MjQpOko+NiYmeiVKPT00JiYoaj1CLlNCT1hbaj4+PjI0XTw8MjR8Qi5TQk9YW2o+Pj4xNiYyNTVdPDwxNnxCLlNCT1hbaj4+Pjgm''@;'; put 'put ''MjU1XTw8OHxCLlNCT1hbMjU1JmpdKSxFW3pdPUVbei1KXV5qfWZvcih2YXIgVj1bXSxHPTA7RzxSO0crKyl7dmFyIFc9Ui1HLFU9RVtXLShHJTQ/MDo0KV07VltHXT1HPDR8fFc8PTQ/VTpCLklOVl9TVUJfTUlYWzBdW0IuU0JPWFtVPj4+MjRdXV5CLklOVl9TVUJfTUlYWzFdW0IuU0JPWFtV''@;'; put 'put ''Pj4+MTYmMjU1XV1eQi5JTlZfU1VCX01JWFsyXVtCLlNCT1hbVT4+PjgmMjU1XV1eQi5JTlZfU1VCX01JWFszXVtCLlNCT1hbMjU1JlVdXX10aGlzLl9uUm91bmRzPUksdGhpcy5fa2V5U2NoZWR1bGU9RSx0aGlzLl9pbnZLZXlTY2hlZHVsZT1WfSxMLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tS''@;'; put 'put ''YXc9ZnVuY3Rpb24oSyl7cmV0dXJuIGhlKEs9ayhLKSx0aGlzLl9rZXlTY2hlZHVsZSxCLlNVQl9NSVgsQi5TQk9YLHRoaXMuX25Sb3VuZHMpfSxMLnByb3RvdHlwZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24oSyl7dmFyIEo9dGhpcy5lbmNyeXB0QmxvY2tSYXcoSyksST1zZS5hbGxvY1Vuc2Fm''@;'; put 'put ''ZSgxNik7cmV0dXJuIEkud3JpdGVVSW50MzJCRShKWzBdLDApLEkud3JpdGVVSW50MzJCRShKWzFdLDQpLEkud3JpdGVVSW50MzJCRShKWzJdLDgpLEkud3JpdGVVSW50MzJCRShKWzNdLDEyKSxJfSxMLnByb3RvdHlwZS5kZWNyeXB0QmxvY2s9ZnVuY3Rpb24oSyl7dmFyIEo9KEs9ayhLKSlb''@;'; put 'put ''MV07S1sxXT1LWzNdLEtbM109Sjt2YXIgST1oZShLLHRoaXMuX2ludktleVNjaGVkdWxlLEIuSU5WX1NVQl9NSVgsQi5JTlZfU0JPWCx0aGlzLl9uUm91bmRzKSxSPXNlLmFsbG9jVW5zYWZlKDE2KTtyZXR1cm4gUi53cml0ZVVJbnQzMkJFKElbMF0sMCksUi53cml0ZVVJbnQzMkJFKElbM10s''@;'; put 'put ''NCksUi53cml0ZVVJbnQzMkJFKElbMl0sOCksUi53cml0ZVVJbnQzMkJFKElbMV0sMTIpLFJ9LEwucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7dih0aGlzLl9rZXlTY2hlZHVsZSksdih0aGlzLl9pbnZLZXlTY2hlZHVsZSksdih0aGlzLl9rZXkpfSxXZS5leHBvcnRzLkFFUz1MfSw1NjA4''@;'; put 'put ''NzooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NDAzKSxrPVQoODQzKS5CdWZmZXIsdj1UKDg2NDIwKSxoZT1UKDY2Njk4KSxIPVQoMTUwMyksQj1UKDYzNjM2KSxMPVQoOTEwNyk7ZnVuY3Rpb24gSShSLEUseixqKXt2LmNhbGwodGhpcyk7dmFyIFY9ay5hbGxvYyg0LDApO3RoaXMuX2NpcGhlcj1u''@;'; put 'put ''ZXcgc2UuQUVTKEUpO3ZhciBHPXRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soVik7dGhpcy5fZ2hhc2g9bmV3IEgoRyksej1mdW5jdGlvbiBKKFIsRSx6KXtpZigxMj09PUUubGVuZ3RoKXJldHVybiBSLl9maW5JRD1rLmNvbmNhdChbRSxrLmZyb20oWzAsMCwwLDFdKV0pLGsuY29uY2F0KFtF''@;'; put 'put ''LGsuZnJvbShbMCwwLDAsMl0pXSk7dmFyIGo9bmV3IEgoeiksVj1FLmxlbmd0aCxHPVYlMTY7ai51cGRhdGUoRSksRyYmai51cGRhdGUoay5hbGxvYyhHPTE2LUcsMCkpLGoudXBkYXRlKGsuYWxsb2MoOCwwKSk7dmFyIFc9OCpWLFU9ay5hbGxvYyg4KTtVLndyaXRlVUludEJFKFcsMCw4KSxq''@;'; put 'put ''LnVwZGF0ZShVKSxSLl9maW5JRD1qLnN0YXRlO3ZhciBxPWsuZnJvbShSLl9maW5JRCk7cmV0dXJuIEwocSkscX0odGhpcyx6LEcpLHRoaXMuX3ByZXY9ay5mcm9tKHopLHRoaXMuX2NhY2hlPWsuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9ay5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9k''@;'; put 'put ''ZWNyeXB0PWosdGhpcy5fYWxlbj0wLHRoaXMuX2xlbj0wLHRoaXMuX21vZGU9Uix0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfWhlKEksdiksSS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihSKXtpZighdGhpcy5fY2FsbGVkJiZ0aGlzLl9hbGVuKXt2YXIgRT0xNi10aGlz''@;'; put 'put ''Ll9hbGVuJTE2O0U8MTYmJihFPWsuYWxsb2MoRSwwKSx0aGlzLl9naGFzaC51cGRhdGUoRSkpfXRoaXMuX2NhbGxlZD0hMDt2YXIgej10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxSKTtyZXR1cm4gdGhpcy5fZ2hhc2gudXBkYXRlKHRoaXMuX2RlY3J5cHQ/Ujp6KSx0aGlzLl9sZW4rPVIubGVu''@;'; put 'put ''Z3RoLHp9LEkucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dmFyIFI9Qih0aGlzLl9naGFzaC5maW5hbCg4''@;'; put 'put ''KnRoaXMuX2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlzLl9kZWNyeXB0JiZmdW5jdGlvbiBLKFIsRSl7dmFyIHo9MDtSLmxlbmd0aCE9PUUubGVuZ3RoJiZ6Kys7Zm9yKHZhciBqPU1hdGgubWluKFIubGVuZ3RoLEUubGVu''@;'; put 'put ''Z3RoKSxWPTA7VjxqOysrVil6Kz1SW1ZdXkVbVl07cmV0dXJuIHp9KFIsdGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEiKTt0aGlzLl9hdXRoVGFnPVIsdGhpcy5fY2lwaGVyLnNjcnViKCl9LEku''@;'; put 'put ''cHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0fHwhay5pc0J1ZmZlcih0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIik7cmV0dXJuIHRoaXMuX2F1dGhUYWd9''@;'; put 'put ''LEkucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oRSl7aWYoIXRoaXMuX2RlY3J5cHQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3RoaXMuX2F1dGhUYWc9RX0sSS5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9u''@;'; put 'put ''KEUpe2lmKHRoaXMuX2NhbGxlZCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRpbmcgdG8gc2V0IEFBRCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3RoaXMuX2doYXNoLnVwZGF0ZShFKSx0aGlzLl9hbGVuKz1FLmxlbmd0aH0sV2UuZXhwb3J0cz1JfSw4MjQ4OTooV2UsemUsVCk9Pnt2YXIgc2U9''@;'; put 'put ''VCgxMjY4OSksaz1UKDUwMDQ2KSx2PVQoNDQ5NDYpO3plLmNyZWF0ZUNpcGhlcj16ZS5DaXBoZXI9c2UuY3JlYXRlQ2lwaGVyLHplLmNyZWF0ZUNpcGhlcml2PXplLkNpcGhlcml2PXNlLmNyZWF0ZUNpcGhlcml2LHplLmNyZWF0ZURlY2lwaGVyPXplLkRlY2lwaGVyPWsuY3JlYXRlRGVjaXBo''@;'; put 'put ''ZXIsemUuY3JlYXRlRGVjaXBoZXJpdj16ZS5EZWNpcGhlcml2PWsuY3JlYXRlRGVjaXBoZXJpdix6ZS5saXN0Q2lwaGVycz16ZS5nZXRDaXBoZXJzPWZ1bmN0aW9uIGhlKCl7cmV0dXJuIE9iamVjdC5rZXlzKHYpfX0sNTAwNDY6KFdlLHplLFQpPT57dmFyIHNlPVQoNTYwODcpLGs9VCg4NDMp''@;'; put 'put ''LkJ1ZmZlcix2PVQoMTI0MjEpLGhlPVQoODkzNTQpLEg9VCg4NjQyMCksQj1UKDY0MDMpLEw9VCgzNjUwNSk7ZnVuY3Rpb24gSihqLFYsRyl7SC5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBJLHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgQi5BRVMoViksdGhpcy5fcHJl''@;'; put 'put ''dj1rLmZyb20oRyksdGhpcy5fbW9kZT1qLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIEkoKXt0aGlzLmNhY2hlPWsuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gRShqLFYsRyl7dmFyIFc9dltqLnRvTG93ZXJDYXNlKCldO2lmKCFXKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQg''@;'; put 'put ''c3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgRyYmKEc9ay5mcm9tKEcpKSwiR0NNIiE9PVcubW9kZSYmRy5sZW5ndGghPT1XLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrRy5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgViYmKFY9ay5mcm9t''@;'; put 'put ''KFYpKSxWLmxlbmd0aCE9PVcua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrVi5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09Vy50eXBlP25ldyBoZShXLm1vZHVsZSxWLEcsITApOiJhdXRoIj09PVcudHlwZT9uZXcgc2UoVy5tb2R1bGUsVixHLCEwKTpu''@;'; put 'put ''ZXcgSihXLm1vZHVsZSxWLEcpfVQoNjY2OTgpKEosSCksSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihqKXt0aGlzLl9jYWNoZS5hZGQoaik7Zm9yKHZhciBWLEcsVz1bXTtWPXRoaXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KUc9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMs''@;'; put 'put ''ViksVy5wdXNoKEcpO3JldHVybiBrLmNvbmNhdChXKX0sSi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGo9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZnVuY3Rpb24gUihqKXt2YXIgVj1qWzE1XTtpZihWPDF8fFY+MTYpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7Zm9yKHZhciBHPS0xOysrRzxWOylpZihqW0crKDE2LVYpXSE9PVYpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTYhPT1WKXJldHVybiBqLnNsaWNlKDAsMTYtVil9KHRoaXMuX21vZGUuZGVjcnlw''@;'; put 'put ''dCh0aGlzLGopKTtpZihqKXRocm93IG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEoucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKGope3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIWosdGhpc30sSS5wcm90b3R5cGUuYWRkPWZ1bmN0''@;'; put 'put ''aW9uKGope3RoaXMuY2FjaGU9ay5jb25jYXQoW3RoaXMuY2FjaGUsal0pfSxJLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oail7dmFyIFY7aWYoail7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTYpcmV0dXJuIFY9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xp''@;'; put 'put ''Y2UoMTYpLFZ9ZWxzZSBpZih0aGlzLmNhY2hlLmxlbmd0aD49MTYpcmV0dXJuIFY9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLFY7cmV0dXJuIG51bGx9LEkucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5n''@;'; put 'put ''dGgpcmV0dXJuIHRoaXMuY2FjaGV9LHplLmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uIHooaixWKXt2YXIgRz12W2oudG9Mb3dlckNhc2UoKV07aWYoIUcpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIFc9TChWLCExLEcua2V5LEcuaXYpO3JldHVybiBFKGos''@;'; put 'put ''Vy5rZXksVy5pdil9LHplLmNyZWF0ZURlY2lwaGVyaXY9RX0sMTI2ODk6KFdlLHplLFQpPT57dmFyIHNlPVQoMTI0MjEpLGs9VCg1NjA4Nyksdj1UKDg0MykuQnVmZmVyLGhlPVQoODkzNTQpLEg9VCg4NjQyMCksQj1UKDY0MDMpLEw9VCgzNjUwNSk7ZnVuY3Rpb24gSihqLFYsRyl7SC5jYWxs''@;'; put 'put ''KHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBSLHRoaXMuX2NpcGhlcj1uZXcgQi5BRVMoViksdGhpcy5fcHJldj12LmZyb20oRyksdGhpcy5fbW9kZT1qLHRoaXMuX2F1dG9wYWRkaW5nPSEwfVQoNjY2OTgpKEosSCksSi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihqKXt0aGlzLl9jYWNoZS5h''@;'; put 'put ''ZGQoaik7Zm9yKHZhciBWLEcsVz1bXTtWPXRoaXMuX2NhY2hlLmdldCgpOylHPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLFYpLFcucHVzaChHKTtyZXR1cm4gdi5jb25jYXQoVyl9O3ZhciBJPXYuYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIFIoKXt0aGlzLmNhY2hlPXYuYWxsb2NVbnNhZmUoMCl9''@;'; put 'put ''ZnVuY3Rpb24gRShqLFYsRyl7dmFyIFc9c2Vbai50b0xvd2VyQ2FzZSgpXTtpZighVyl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09dHlwZW9mIFYmJihWPXYuZnJvbShWKSksVi5sZW5ndGghPT1XLmtleS84KXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoImludmFsaWQga2V5IGxlbmd0aCAiK1YubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIEcmJihHPXYuZnJvbShHKSksIkdDTSIhPT1XLm1vZGUmJkcubGVuZ3RoIT09Vy5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK0cubGVuZ3RoKTtyZXR1cm4ic3Ry''@;'; put 'put ''ZWFtIj09PVcudHlwZT9uZXcgaGUoVy5tb2R1bGUsVixHKToiYXV0aCI9PT1XLnR5cGU/bmV3IGsoVy5tb2R1bGUsVixHKTpuZXcgSihXLm1vZHVsZSxWLEcpfUoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBqPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRp''@;'; put 'put ''bmcpcmV0dXJuIGo9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsaiksdGhpcy5fY2lwaGVyLnNjcnViKCksajtpZighai5lcXVhbHMoSSkpdGhyb3cgdGhpcy5fY2lwaGVyLnNjcnViKCksbmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sSi5wcm90b3R5cGUu''@;'; put 'put ''c2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oail7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhaix0aGlzfSxSLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oail7dGhpcy5jYWNoZT12LmNvbmNhdChbdGhpcy5jYWNoZSxqXSl9LFIucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2Fj''@;'; put 'put ''aGUubGVuZ3RoPjE1KXt2YXIgaj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLGp9cmV0dXJuIG51bGx9LFIucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBqPTE2LXRoaXMuY2FjaGUubGVuZ3RoLFY9di5hbGxv''@;'; put 'put ''Y1Vuc2FmZShqKSxHPS0xOysrRzxqOylWLndyaXRlVUludDgoaixHKTtyZXR1cm4gdi5jb25jYXQoW3RoaXMuY2FjaGUsVl0pfSx6ZS5jcmVhdGVDaXBoZXJpdj1FLHplLmNyZWF0ZUNpcGhlcj1mdW5jdGlvbiB6KGosVil7dmFyIEc9c2Vbai50b0xvd2VyQ2FzZSgpXTtpZighRyl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgVz1MKFYsITEsRy5rZXksRy5pdik7cmV0dXJuIEUoaixXLmtleSxXLml2KX19LDE1MDM6KFdlLHplLFQpPT57dmFyIHNlPVQoODQzKS5CdWZmZXIsaz1zZS5hbGxvYygxNiwwKTtmdW5jdGlvbiBoZShCKXt2YXIgTD1zZS5h''@;'; put 'put ''bGxvY1Vuc2FmZSgxNik7cmV0dXJuIEwud3JpdGVVSW50MzJCRShCWzBdPj4+MCwwKSxMLndyaXRlVUludDMyQkUoQlsxXT4+PjAsNCksTC53cml0ZVVJbnQzMkJFKEJbMl0+Pj4wLDgpLEwud3JpdGVVSW50MzJCRShCWzNdPj4+MCwxMiksTH1mdW5jdGlvbiBIKEIpe3RoaXMuaD1CLHRoaXMu''@;'; put 'put ''c3RhdGU9c2UuYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1zZS5hbGxvY1Vuc2FmZSgwKX1ILnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihCKXtmb3IodmFyIEw9LTE7KytMPEIubGVuZ3RoOyl0aGlzLnN0YXRlW0xdXj1CW0xdO3RoaXMuX211bHRpcGx5KCl9LEgucHJvdG90eXBlLl9tdWx0aXBs''@;'; put 'put ''eT1mdW5jdGlvbigpe2Zvcih2YXIgSyxJLEI9ZnVuY3Rpb24gdihCKXtyZXR1cm5bQi5yZWFkVUludDMyQkUoMCksQi5yZWFkVUludDMyQkUoNCksQi5yZWFkVUludDMyQkUoOCksQi5yZWFkVUludDMyQkUoMTIpXX0odGhpcy5oKSxMPVswLDAsMCwwXSxSPS0xOysrUjwxMjg7KXtmb3IoMCE9''@;'; put 'put ''KHRoaXMuc3RhdGVbfn4oUi84KV0mMTw8Ny1SJTgpJiYoTFswXV49QlswXSxMWzFdXj1CWzFdLExbMl1ePUJbMl0sTFszXV49QlszXSksST0wIT0oMSZCWzNdKSxLPTM7Sz4wO0stLSlCW0tdPUJbS10+Pj4xfCgxJkJbSy0xXSk8PDMxO0JbMF09QlswXT4+PjEsSSYmKEJbMF09QlswXV4yMjU8''@;'; put 'put ''PDI0KX10aGlzLnN0YXRlPWhlKEwpfSxILnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oQil7dGhpcy5jYWNoZT1zZS5jb25jYXQoW3RoaXMuY2FjaGUsQl0pO2Zvcih2YXIgTDt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KUw9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMu''@;'; put 'put ''Y2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2goTCl9LEgucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKEIsTCl7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKHNlLmNvbmNhdChbdGhpcy5jYWNoZSxrXSwxNikpLHRoaXMuZ2hhc2goaGUoWzAsQiwwLExdKSksdGhpcy5zdGF0''@;'; put 'put ''ZX0sV2UuZXhwb3J0cz1IfSw5MTA3OldlPT57V2UuZXhwb3J0cz1mdW5jdGlvbiB6ZShUKXtmb3IodmFyIGssc2U9VC5sZW5ndGg7c2UtLTspe2lmKDI1NSE9PShrPVQucmVhZFVJbnQ4KHNlKSkpe2srKyxULndyaXRlVUludDgoayxzZSk7YnJlYWt9VC53cml0ZVVJbnQ4KDAsc2UpfX19LDMx''@;'; put 'put ''MTc1OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDYzNjM2KTt6ZS5lbmNyeXB0PWZ1bmN0aW9uKGssdil7dmFyIGhlPXNlKHYsay5fcHJldik7cmV0dXJuIGsuX3ByZXY9ay5fY2lwaGVyLmVuY3J5cHRCbG9jayhoZSksay5fcHJldn0semUuZGVjcnlwdD1mdW5jdGlvbihrLHYpe3ZhciBoZT1rLl9w''@;'; put 'put ''cmV2O2suX3ByZXY9djt2YXIgSD1rLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHYpO3JldHVybiBzZShILGhlKX19LDQzNjMxOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg0MykuQnVmZmVyLGs9VCg2MzYzNik7ZnVuY3Rpb24gdihoZSxILEIpe3ZhciBMPUgubGVuZ3RoLEs9ayhILGhlLl9jYWNoZSk7''@;'; put 'put ''cmV0dXJuIGhlLl9jYWNoZT1oZS5fY2FjaGUuc2xpY2UoTCksaGUuX3ByZXY9c2UuY29uY2F0KFtoZS5fcHJldixCP0g6S10pLEt9emUuZW5jcnlwdD1mdW5jdGlvbihoZSxILEIpe2Zvcih2YXIgSyxMPXNlLmFsbG9jVW5zYWZlKDApO0gubGVuZ3RoOyl7aWYoMD09PWhlLl9jYWNoZS5sZW5n''@;'; put 'put ''dGgmJihoZS5fY2FjaGU9aGUuX2NpcGhlci5lbmNyeXB0QmxvY2soaGUuX3ByZXYpLGhlLl9wcmV2PXNlLmFsbG9jVW5zYWZlKDApKSwhKGhlLl9jYWNoZS5sZW5ndGg8PUgubGVuZ3RoKSl7TD1zZS5jb25jYXQoW0wsdihoZSxILEIpXSk7YnJlYWt9TD1zZS5jb25jYXQoW0wsdihoZSxILnNs''@;'; put 'put ''aWNlKDAsSz1oZS5fY2FjaGUubGVuZ3RoKSxCKV0pLEg9SC5zbGljZShLKX1yZXR1cm4gTH19LDMzODkyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg0MykuQnVmZmVyO2Z1bmN0aW9uIGsoaGUsSCxCKXtmb3IodmFyIFIsRSxLPS0xLEk9MDsrK0s8ODspSSs9KDEyOCYoRT1oZS5fY2lwaGVyLmVu''@;'; put 'put ''Y3J5cHRCbG9jayhoZS5fcHJldilbMF1eKFI9SCYxPDw3LUs/MTI4OjApKSk+PkslOCxoZS5fcHJldj12KGhlLl9wcmV2LEI/UjpFKTtyZXR1cm4gSX1mdW5jdGlvbiB2KGhlLEgpe3ZhciBCPWhlLmxlbmd0aCxMPS0xLEs9c2UuYWxsb2NVbnNhZmUoaGUubGVuZ3RoKTtmb3IoaGU9c2UuY29u''@;'; put 'put ''Y2F0KFtoZSxzZS5mcm9tKFtIXSldKTsrK0w8QjspS1tMXT1oZVtMXTw8MXxoZVtMKzFdPj43O3JldHVybiBLfXplLmVuY3J5cHQ9ZnVuY3Rpb24oaGUsSCxCKXtmb3IodmFyIEw9SC5sZW5ndGgsSz1zZS5hbGxvY1Vuc2FmZShMKSxKPS0xOysrSjxMOylLW0pdPWsoaGUsSFtKXSxCKTtyZXR1''@;'; put 'put ''cm4gS319LDM2Nzg3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg0MykuQnVmZmVyO2Z1bmN0aW9uIGsodixoZSxIKXt2YXIgTD12Ll9jaXBoZXIuZW5jcnlwdEJsb2NrKHYuX3ByZXYpWzBdXmhlO3JldHVybiB2Ll9wcmV2PXNlLmNvbmNhdChbdi5fcHJldi5zbGljZSgxKSxzZS5mcm9tKFtIP2hl''@;'; put 'put ''OkxdKV0pLEx9emUuZW5jcnlwdD1mdW5jdGlvbih2LGhlLEgpe2Zvcih2YXIgQj1oZS5sZW5ndGgsTD1zZS5hbGxvY1Vuc2FmZShCKSxLPS0xOysrSzxCOylMW0tdPWsodixoZVtLXSxIKTtyZXR1cm4gTH19LDg1MjY4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDYzNjM2KSxrPVQoODQzKS5CdWZm''@;'; put 'put ''ZXIsdj1UKDkxMDcpO2Z1bmN0aW9uIGhlKEIpe3ZhciBMPUIuX2NpcGhlci5lbmNyeXB0QmxvY2tSYXcoQi5fcHJldik7cmV0dXJuIHYoQi5fcHJldiksTH16ZS5lbmNyeXB0PWZ1bmN0aW9uKEIsTCl7dmFyIEs9TWF0aC5jZWlsKEwubGVuZ3RoLzE2KSxKPUIuX2NhY2hlLmxlbmd0aDtCLl9j''@;'; put 'put ''YWNoZT1rLmNvbmNhdChbQi5fY2FjaGUsay5hbGxvY1Vuc2FmZSgxNipLKV0pO2Zvcih2YXIgST0wO0k8SztJKyspe3ZhciBSPWhlKEIpLEU9SisxNipJO0IuX2NhY2hlLndyaXRlVUludDMyQkUoUlswXSxFKzApLEIuX2NhY2hlLndyaXRlVUludDMyQkUoUlsxXSxFKzQpLEIuX2NhY2hlLndy''@;'; put 'put ''aXRlVUludDMyQkUoUlsyXSxFKzgpLEIuX2NhY2hlLndyaXRlVUludDMyQkUoUlszXSxFKzEyKX12YXIgej1CLl9jYWNoZS5zbGljZSgwLEwubGVuZ3RoKTtyZXR1cm4gQi5fY2FjaGU9Qi5fY2FjaGUuc2xpY2UoTC5sZW5ndGgpLHNlKEwseil9fSw0NTk5NTooV2UsemUpPT57emUuZW5jcnlw''@;'; put 'put ''dD1mdW5jdGlvbihULHNlKXtyZXR1cm4gVC5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZSl9LHplLmRlY3J5cHQ9ZnVuY3Rpb24oVCxzZSl7cmV0dXJuIFQuX2NpcGhlci5kZWNyeXB0QmxvY2soc2UpfX0sMTI0MjE6KFdlLHplLFQpPT57dmFyIHNlPXtFQ0I6VCg0NTk5NSksQ0JDOlQoMzExNzUp''@;'; put 'put ''LENGQjpUKDQzNjMxKSxDRkI4OlQoMzY3ODcpLENGQjE6VCgzMzg5MiksT0ZCOlQoMzQ1MzIpLENUUjpUKDg1MjY4KSxHQ006VCg4NTI2OCl9LGs9VCg0NDk0Nik7Zm9yKHZhciB2IGluIGspa1t2XS5tb2R1bGU9c2Vba1t2XS5tb2RlXTtXZS5leHBvcnRzPWt9LDM0NTMyOihXZSx6ZSxUKT0+''@;'; put 'put ''e3ZhciBzZT1UKDYzNjM2KTtmdW5jdGlvbiBrKHYpe3JldHVybiB2Ll9wcmV2PXYuX2NpcGhlci5lbmNyeXB0QmxvY2sodi5fcHJldiksdi5fcHJldn16ZS5lbmNyeXB0PWZ1bmN0aW9uKHYsaGUpe2Zvcig7di5fY2FjaGUubGVuZ3RoPGhlLmxlbmd0aDspdi5fY2FjaGU9QnVmZmVyLmNvbmNh''@;'; put 'put ''dChbdi5fY2FjaGUsayh2KV0pO3ZhciBIPXYuX2NhY2hlLnNsaWNlKDAsaGUubGVuZ3RoKTtyZXR1cm4gdi5fY2FjaGU9di5fY2FjaGUuc2xpY2UoaGUubGVuZ3RoKSxzZShoZSxIKX19LDg5MzU0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY0MDMpLGs9VCg4NDMpLkJ1ZmZlcix2PVQoODY0MjAp''@;'; put 'put ''O2Z1bmN0aW9uIEgoQixMLEssSil7di5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgc2UuQUVTKEwpLHRoaXMuX3ByZXY9ay5mcm9tKEspLHRoaXMuX2NhY2hlPWsuYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9ay5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PUosdGhpcy5f''@;'; put 'put ''bW9kZT1CfVQoNjY2OTgpKEgsdiksSC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihCKXtyZXR1cm4gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsQix0aGlzLl9kZWNyeXB0KX0sSC5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dGhpcy5fY2lwaGVyLnNjcnViKCl9LFdlLmV4cG9ydHM9''@;'; put 'put ''SH0sMjU2MDA6KFdlLHplLFQpPT57dmFyIHNlPVQoMTQ5NDgpLGs9VCg4MjQ4OSksdj1UKDEyNDIxKSxoZT1UKDg5NDAyKSxIPVQoMzY1MDUpO2Z1bmN0aW9uIEsoUixFLHope2lmKFI9Ui50b0xvd2VyQ2FzZSgpLHZbUl0pcmV0dXJuIGsuY3JlYXRlQ2lwaGVyaXYoUixFLHopO2lmKGhlW1Jd''@;'; put 'put ''KXJldHVybiBuZXcgc2Uoe2tleTpFLGl2OnosbW9kZTpSfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9ZnVuY3Rpb24gSihSLEUseil7aWYoUj1SLnRvTG93ZXJDYXNlKCksdltSXSlyZXR1cm4gay5jcmVhdGVEZWNpcGhlcml2KFIsRSx6KTtpZihoZVtSXSly''@;'; put 'put ''ZXR1cm4gbmV3IHNlKHtrZXk6RSxpdjp6LG1vZGU6UixkZWNyeXB0OiEwfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9emUuY3JlYXRlQ2lwaGVyPXplLkNpcGhlcj1mdW5jdGlvbiBCKFIsRSl7dmFyIHosajtpZihSPVIudG9Mb3dlckNhc2UoKSx2W1JdKXo9''@;'; put 'put ''dltSXS5rZXksaj12W1JdLml2O2Vsc2V7aWYoIWhlW1JdKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3o9OCpoZVtSXS5rZXksaj1oZVtSXS5pdn12YXIgVj1IKEUsITEseixqKTtyZXR1cm4gSyhSLFYua2V5LFYuaXYpfSx6ZS5jcmVhdGVDaXBoZXJpdj16ZS5D''@;'; put 'put ''aXBoZXJpdj1LLHplLmNyZWF0ZURlY2lwaGVyPXplLkRlY2lwaGVyPWZ1bmN0aW9uIEwoUixFKXt2YXIgeixqO2lmKFI9Ui50b0xvd2VyQ2FzZSgpLHZbUl0pej12W1JdLmtleSxqPXZbUl0uaXY7ZWxzZXtpZighaGVbUl0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBl''@;'; put 'put ''Iik7ej04KmhlW1JdLmtleSxqPWhlW1JdLml2fXZhciBWPUgoRSwhMSx6LGopO3JldHVybiBKKFIsVi5rZXksVi5pdil9LHplLmNyZWF0ZURlY2lwaGVyaXY9emUuRGVjaXBoZXJpdj1KLHplLmxpc3RDaXBoZXJzPXplLmdldENpcGhlcnM9ZnVuY3Rpb24gSSgpe3JldHVybiBPYmplY3Qua2V5''@;'; put 'put ''cyhoZSkuY29uY2F0KGsuZ2V0Q2lwaGVycygpKX19LDE0OTQ4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg2NDIwKSxrPVQoNDAxMzIpLHY9VCg2NjY5OCksaGU9VCg4NDMpLkJ1ZmZlcixIPXsiZGVzLWVkZTMtY2JjIjprLkNCQy5pbnN0YW50aWF0ZShrLkVERSksImRlcy1lZGUzIjprLkVERSwi''@;'; put 'put ''ZGVzLWVkZS1jYmMiOmsuQ0JDLmluc3RhbnRpYXRlKGsuRURFKSwiZGVzLWVkZSI6ay5FREUsImRlcy1jYmMiOmsuQ0JDLmluc3RhbnRpYXRlKGsuREVTKSwiZGVzLWVjYiI6ay5ERVN9O2Z1bmN0aW9uIEIoTCl7c2UuY2FsbCh0aGlzKTt2YXIgSSxLPUwubW9kZS50b0xvd2VyQ2FzZSgpLEo9''@;'; put 'put ''SFtLXTtJPUwuZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5cHQiO3ZhciBSPUwua2V5O2hlLmlzQnVmZmVyKFIpfHwoUj1oZS5mcm9tKFIpKSwoImRlcy1lZGUiPT09S3x8ImRlcy1lZGUtY2JjIj09PUspJiYoUj1oZS5jb25jYXQoW1IsUi5zbGljZSgwLDgpXSkpO3ZhciBFPUwuaXY7aGUuaXNC''@;'; put 'put ''dWZmZXIoRSl8fChFPWhlLmZyb20oRSkpLHRoaXMuX2Rlcz1KLmNyZWF0ZSh7a2V5OlIsaXY6RSx0eXBlOkl9KX1ILmRlcz1IWyJkZXMtY2JjIl0sSC5kZXMzPUhbImRlcy1lZGUzLWNiYyJdLFdlLmV4cG9ydHM9Qix2KEIsc2UpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTCl7cmV0''@;'; put 'put ''dXJuIGhlLmZyb20odGhpcy5fZGVzLnVwZGF0ZShMKSl9LEIucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3JldHVybiBoZS5mcm9tKHRoaXMuX2Rlcy5maW5hbCgpKX19LDg5NDAyOihXZSx6ZSk9Pnt6ZVsiZGVzLWVjYiJdPXtrZXk6OCxpdjowfSx6ZVsiZGVzLWNiYyJdPXplLmRlcz17''@;'; put 'put ''a2V5OjgsaXY6OH0semVbImRlcy1lZGUzLWNiYyJdPXplLmRlczM9e2tleToyNCxpdjo4fSx6ZVsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LHplWyJkZXMtZWRlLWNiYyJdPXtrZXk6MTYsaXY6OH0semVbImRlcy1lZGUiXT17a2V5OjE2LGl2OjB9fSw3MTk0NjooV2UsemUsVCk9Pnt2YXIg''@;'; put 'put ''c2U9VCg2MjY2Miksaz1UKDQ0MDE5KTtmdW5jdGlvbiBoZShCKXt2YXIgSyxMPUIubW9kdWx1cy5ieXRlTGVuZ3RoKCk7ZG97Sz1uZXcgc2UoayhMKSl9d2hpbGUoSy5jbXAoQi5tb2R1bHVzKT49MHx8IUsudW1vZChCLnByaW1lMSl8fCFLLnVtb2QoQi5wcmltZTIpKTtyZXR1cm4gS31mdW5j''@;'; put 'put ''dGlvbiBIKEIsTCl7dmFyIEs9ZnVuY3Rpb24gdihCKXt2YXIgTD1oZShCKTtyZXR1cm57YmxpbmRlcjpMLnRvUmVkKHNlLm1vbnQoQi5tb2R1bHVzKSkucmVkUG93KG5ldyBzZShCLnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpLHVuYmxpbmRlcjpMLmludm0oQi5tb2R1bHVzKX19KEwpLEo9''@;'; put 'put ''TC5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxJPW5ldyBzZShCKS5tdWwoSy5ibGluZGVyKS51bW9kKEwubW9kdWx1cyksUj1JLnRvUmVkKHNlLm1vbnQoTC5wcmltZTEpKSxFPUkudG9SZWQoc2UubW9udChMLnByaW1lMikpLHo9TC5jb2VmZmljaWVudCxqPUwucHJpbWUxLFY9TC5wcmltZTIsRz1S''@;'; put 'put ''LnJlZFBvdyhMLmV4cG9uZW50MSkuZnJvbVJlZCgpLFc9RS5yZWRQb3coTC5leHBvbmVudDIpLmZyb21SZWQoKSxVPUcuaXN1YihXKS5pbXVsKHopLnVtb2QoaikuaW11bChWKTtyZXR1cm4gVy5pYWRkKFUpLmltdWwoSy51bmJsaW5kZXIpLnVtb2QoTC5tb2R1bHVzKS50b0FycmF5TGlrZShC''@;'; put 'put ''dWZmZXIsImJlIixKKX1ILmdldHI9aGUsV2UuZXhwb3J0cz1IfSw4MTY5OTooV2UsemUsVCk9PntXZS5leHBvcnRzPVQoNzUyMDcpfSwyNzY4NjooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZlcixrPVQoOTYzNjIpLHY9VCg5Njc0NSksaGU9VCg2NjY5OCksSD1UKDYzNjAyKSxCPVQo''@;'; put 'put ''NTExNzMpLEw9VCg3NTIwNyk7ZnVuY3Rpb24gSyhFKXt2LldyaXRhYmxlLmNhbGwodGhpcyk7dmFyIHo9TFtFXTtpZigheil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoVHlwZT16Lmhhc2gsdGhpcy5faGFzaD1rKHouaGFzaCksdGhpcy5fdGFn''@;'; put 'put ''PXouaWQsdGhpcy5fc2lnblR5cGU9ei5zaWdufWZ1bmN0aW9uIEooRSl7di5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB6PUxbRV07aWYoIXopdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaD1rKHouaGFzaCksdGhpcy5fdGFnPXouaWQsdGhpcy5f''@;'; put 'put ''c2lnblR5cGU9ei5zaWdufWZ1bmN0aW9uIEkoRSl7cmV0dXJuIG5ldyBLKEUpfWZ1bmN0aW9uIFIoRSl7cmV0dXJuIG5ldyBKKEUpfU9iamVjdC5rZXlzKEwpLmZvckVhY2goZnVuY3Rpb24oRSl7TFtFXS5pZD1zZS5mcm9tKExbRV0uaWQsImhleCIpLExbRS50b0xvd2VyQ2FzZSgpXT1MW0Vd''@;'; put 'put ''fSksaGUoSyx2LldyaXRhYmxlKSxLLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeixqLFYpe3RoaXMuX2hhc2gudXBkYXRlKHopLFYoKX0sSy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHosail7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB6JiYoej1zZS5mcm9tKHosaikpLHRoaXMuX2hh''@;'; put 'put ''c2gudXBkYXRlKHopLHRoaXN9LEsucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oeixqKXt0aGlzLmVuZCgpO3ZhciBWPXRoaXMuX2hhc2guZGlnZXN0KCksRz1IKFYseix0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpO3JldHVybiBqP0cudG9TdHJpbmcoaik6R30saGUo''@;'; put 'put ''Six2LldyaXRhYmxlKSxKLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeixqLFYpe3RoaXMuX2hhc2gudXBkYXRlKHopLFYoKX0sSi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHosail7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB6JiYoej1zZS5mcm9tKHosaikpLHRoaXMuX2hhc2gudXBk''@;'; put 'put ''YXRlKHopLHRoaXN9LEoucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih6LGosVil7InN0cmluZyI9PXR5cGVvZiBqJiYoaj1zZS5mcm9tKGosVikpLHRoaXMuZW5kKCk7dmFyIEc9dGhpcy5faGFzaC5kaWdlc3QoKTtyZXR1cm4gQihqLEcseix0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpfSxX''@;'; put 'put ''ZS5leHBvcnRzPXtTaWduOkksVmVyaWZ5OlIsY3JlYXRlU2lnbjpJLGNyZWF0ZVZlcmlmeTpSfX0sNjM2MDI6KFdlLHplLFQpPT57dmFyIHNlPVQoODQzKS5CdWZmZXIsaz1UKDg1ODI1KSx2PVQoNzE5NDYpLGhlPVQoODg2NTEpLmVjLEg9VCg2MjY2MiksQj1UKDg3OTgzKSxMPVQoMTMwOCk7''@;'; put 'put ''ZnVuY3Rpb24gRShXLFUscSx0ZSl7aWYoKFc9c2UuZnJvbShXLnRvQXJyYXkoKSkpLmxlbmd0aDxVLmJ5dGVMZW5ndGgoKSl7dmFyIG5lPXNlLmFsbG9jKFUuYnl0ZUxlbmd0aCgpLVcubGVuZ3RoKTtXPXNlLmNvbmNhdChbbmUsV10pfXZhciBpZT1xLmxlbmd0aCxsZT1mdW5jdGlvbiBqKFcs''@;'; put 'put ''VSl7Vz0oVz16KFcsVSkpLm1vZChVKTt2YXIgcT1zZS5mcm9tKFcudG9BcnJheSgpKTtpZihxLmxlbmd0aDxVLmJ5dGVMZW5ndGgoKSl7dmFyIHRlPXNlLmFsbG9jKFUuYnl0ZUxlbmd0aCgpLXEubGVuZ3RoKTtxPXNlLmNvbmNhdChbdGUscV0pfXJldHVybiBxfShxLFUpLGRlPXNlLmFsbG9j''@;'; put 'put ''KGllKTtkZS5maWxsKDEpO3ZhciB1ZT1zZS5hbGxvYyhpZSk7cmV0dXJuIHVlPWsodGUsdWUpLnVwZGF0ZShkZSkudXBkYXRlKHNlLmZyb20oWzBdKSkudXBkYXRlKFcpLnVwZGF0ZShsZSkuZGlnZXN0KCksZGU9ayh0ZSx1ZSkudXBkYXRlKGRlKS5kaWdlc3QoKSx7azp1ZT1rKHRlLHVlKS51''@;'; put 'put ''cGRhdGUoZGUpLnVwZGF0ZShzZS5mcm9tKFsxXSkpLnVwZGF0ZShXKS51cGRhdGUobGUpLmRpZ2VzdCgpLHY6ZGU9ayh0ZSx1ZSkudXBkYXRlKGRlKS5kaWdlc3QoKX19ZnVuY3Rpb24geihXLFUpe3ZhciBxPW5ldyBIKFcpLHRlPShXLmxlbmd0aDw8MyktVS5iaXRMZW5ndGgoKTtyZXR1cm4g''@;'; put 'put ''dGU+MCYmcS5pc2hybih0ZSkscX1mdW5jdGlvbiBWKFcsVSxxKXt2YXIgdGUsbmU7ZG97Zm9yKHRlPXNlLmFsbG9jKDApOzgqdGUubGVuZ3RoPFcuYml0TGVuZ3RoKCk7KVUudj1rKHEsVS5rKS51cGRhdGUoVS52KS5kaWdlc3QoKSx0ZT1zZS5jb25jYXQoW3RlLFUudl0pO25lPXoodGUsVyks''@;'; put 'put ''VS5rPWsocSxVLmspLnVwZGF0ZShVLnYpLnVwZGF0ZShzZS5mcm9tKFswXSkpLmRpZ2VzdCgpLFUudj1rKHEsVS5rKS51cGRhdGUoVS52KS5kaWdlc3QoKX13aGlsZSgtMSE9PW5lLmNtcChXKSk7cmV0dXJuIG5lfWZ1bmN0aW9uIEcoVyxVLHEsdGUpe3JldHVybiBXLnRvUmVkKEgubW9udChx''@;'; put 'put ''KSkucmVkUG93KFUpLmZyb21SZWQoKS5tb2QodGUpfVdlLmV4cG9ydHM9ZnVuY3Rpb24gSyhXLFUscSx0ZSxuZSl7dmFyIGllPUIoVSk7aWYoaWUuY3VydmUpe2lmKCJlY2RzYSIhPT10ZSYmImVjZHNhL3JzYSIhPT10ZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUi''@;'; put 'put ''KTtyZXR1cm4gZnVuY3Rpb24gSihXLFUpe3ZhciBxPUxbVS5jdXJ2ZS5qb2luKCIuIildO2lmKCFxKXRocm93IG5ldyBFcnJvcigidW5rbm93biBjdXJ2ZSAiK1UuY3VydmUuam9pbigiLiIpKTt2YXIgaWU9bmV3IGhlKHEpLmtleUZyb21Qcml2YXRlKFUucHJpdmF0ZUtleSkuc2lnbihXKTty''@;'; put 'put ''ZXR1cm4gc2UuZnJvbShpZS50b0RFUigpKX0oVyxpZSl9aWYoImRzYSI9PT1pZS50eXBlKXtpZigiZHNhIiE9PXRlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBJKFcsVSxxKXtmb3IodmFyIHVlLHRlPVUucGFyYW1zLnByaXZfa2V5''@;'; put 'put ''LG5lPVUucGFyYW1zLnAsaWU9VS5wYXJhbXMucSxsZT1VLnBhcmFtcy5nLGRlPW5ldyBIKDApLGNlPXooVyxpZSkubW9kKGllKSxZPSExLGI9RSh0ZSxpZSxXLHEpOyExPT09WTspZGU9RyhsZSx1ZT1WKGllLGIscSksbmUsaWUpLDA9PT0oWT11ZS5pbnZtKGllKS5pbXVsKGNlLmFkZCh0ZS5t''@;'; put 'put ''dWwoZGUpKSkubW9kKGllKSkuY21wbigwKSYmKFk9ITEsZGU9bmV3IEgoMCkpO3JldHVybiBmdW5jdGlvbiBSKFcsVSl7Vz1XLnRvQXJyYXkoKSxVPVUudG9BcnJheSgpLDEyOCZXWzBdJiYoVz1bMF0uY29uY2F0KFcpKSwxMjgmVVswXSYmKFU9WzBdLmNvbmNhdChVKSk7dmFyIHRlPVs0OCxX''@;'; put 'put ''Lmxlbmd0aCtVLmxlbmd0aCs0LDIsVy5sZW5ndGhdO3JldHVybiB0ZT10ZS5jb25jYXQoVyxbMixVLmxlbmd0aF0sVSksc2UuZnJvbSh0ZSl9KGRlLFkpfShXLGllLHEpfWlmKCJyc2EiIT09dGUmJiJlY2RzYS9yc2EiIT09dGUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0''@;'; put 'put ''eXBlIik7Vz1zZS5jb25jYXQoW25lLFddKTtmb3IodmFyIGxlPWllLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGRlPVswLDFdO1cubGVuZ3RoK2RlLmxlbmd0aCsxPGxlOylkZS5wdXNoKDI1NSk7ZGUucHVzaCgwKTtmb3IodmFyIHVlPS0xOysrdWU8Vy5sZW5ndGg7KWRlLnB1c2goV1t1ZV0pO3Jl''@;'; put 'put ''dHVybiB2KGRlLGllKX0sV2UuZXhwb3J0cy5nZXRLZXk9RSxXZS5leHBvcnRzLm1ha2VLZXk9Vn0sNTExNzM6KFdlLHplLFQpPT57dmFyIHNlPVQoODQzKS5CdWZmZXIsaz1UKDYyNjYyKSx2PVQoODg2NTEpLmVjLGhlPVQoODc5ODMpLEg9VCgxMzA4KTtmdW5jdGlvbiBKKEksUil7aWYoSS5j''@;'; put 'put ''bXBuKDApPD0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKTtpZihJLmNtcChSKT49Uil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIil9V2UuZXhwb3J0cz1mdW5jdGlvbiBCKEksUixFLHosail7dmFyIFY9aGUoRSk7aWYoImVjIj09PVYudHlwZSl7aWYoImVjZHNhIiE9PXom''@;'; put 'put ''JiJlY2RzYS9yc2EiIT09eil0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBMKEksUixFKXt2YXIgej1IW0UuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpXTtpZigheil0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUgIitF''@;'; put 'put ''LmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKSk7cmV0dXJuIG5ldyB2KHopLnZlcmlmeShSLEksRS5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGEpfShJLFIsVil9aWYoImRzYSI9PT1WLnR5cGUpe2lmKCJkc2EiIT09eil0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkg''@;'; put 'put ''dHlwZSIpO3JldHVybiBmdW5jdGlvbiBLKEksUixFKXt2YXIgej1FLmRhdGEucCxqPUUuZGF0YS5xLFY9RS5kYXRhLmcsRz1FLmRhdGEucHViX2tleSxXPWhlLnNpZ25hdHVyZS5kZWNvZGUoSSwiZGVyIiksVT1XLnMscT1XLnI7SihVLGopLEoocSxqKTt2YXIgdGU9ay5tb250KHopLG5lPVUu''@;'; put 'put ''aW52bShqKTtyZXR1cm4gMD09PVYudG9SZWQodGUpLnJlZFBvdyhuZXcgayhSKS5tdWwobmUpLm1vZChqKSkuZnJvbVJlZCgpLm11bChHLnRvUmVkKHRlKS5yZWRQb3cocS5tdWwobmUpLm1vZChqKSkuZnJvbVJlZCgpKS5tb2QoeikubW9kKGopLmNtcChxKX0oSSxSLFYpfWlmKCJyc2EiIT09''@;'; put 'put ''eiYmImVjZHNhL3JzYSIhPT16KXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7Uj1zZS5jb25jYXQoW2osUl0pO2Zvcih2YXIgRz1WLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLFc9WzFdLFU9MDtSLmxlbmd0aCtXLmxlbmd0aCsyPEc7KVcucHVzaCgyNTUpLFUrKztXLnB1''@;'; put 'put ''c2goMCk7Zm9yKHZhciBxPS0xOysrcTxSLmxlbmd0aDspVy5wdXNoKFJbcV0pO1c9c2UuZnJvbShXKTt2YXIgdGU9ay5tb250KFYubW9kdWx1cyk7ST0oST1uZXcgayhJKS50b1JlZCh0ZSkpLnJlZFBvdyhuZXcgayhWLnB1YmxpY0V4cG9uZW50KSksST1zZS5mcm9tKEkuZnJvbVJlZCgpLnRv''@;'; put 'put ''QXJyYXkoKSk7dmFyIG5lPVU8OD8xOjA7Zm9yKEc9TWF0aC5taW4oSS5sZW5ndGgsVy5sZW5ndGgpLEkubGVuZ3RoIT09Vy5sZW5ndGgmJihuZT0xKSxxPS0xOysrcTxHOyluZXw9SVtxXV5XW3FdO3JldHVybiAwPT09bmV9fSw2MzYzNjpXZT0+e1dlLmV4cG9ydHM9ZnVuY3Rpb24oVCxzZSl7''@;'; put 'put ''Zm9yKHZhciBrPU1hdGgubWluKFQubGVuZ3RoLHNlLmxlbmd0aCksdj1uZXcgQnVmZmVyKGspLGhlPTA7aGU8azsrK2hlKXZbaGVdPVRbaGVdXnNlW2hlXTtyZXR1cm4gdn19LDM5MDA3OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg5OTE5KSxrPVQoMjI2MDEpLHY9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKTpudWxsO3plLkJ1ZmZlcj1MLHplLlNsb3dCdWZmZXI9ZnVuY3Rpb24gVShLZSl7cmV0dXJuK0tlIT1LZSYmKEtlPTApLEwuYWxs''@;'; put 'put ''b2MoK0tlKX0semUuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIGhlPTIxNDc0ODM2NDc7ZnVuY3Rpb24gQihLZSl7aWYoS2U+aGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytLZSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIHdlPW5ldyBVaW50OEFy''@;'; put 'put ''cmF5KEtlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHdlLEwucHJvdG90eXBlKSx3ZX1mdW5jdGlvbiBMKEtlLHdlLEllKXtpZigibnVtYmVyIj09dHlwZW9mIEtlKXtpZigic3RyaW5nIj09dHlwZW9mIHdlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVu''@;'; put 'put ''dCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3JldHVybiBSKEtlKX1yZXR1cm4gSyhLZSx3ZSxJZSl9ZnVuY3Rpb24gSyhLZSx3ZSxJZSl7aWYoInN0cmluZyI9PXR5cGVvZiBLZSlyZXR1cm4gZnVuY3Rpb24gRShLZSx3ZSl7aWYoKCJzdHJpbmciIT10''@;'; put 'put ''eXBlb2Ygd2V8fCIiPT09d2UpJiYod2U9InV0ZjgiKSwhTC5pc0VuY29kaW5nKHdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3dlKTt2YXIgSWU9MHxxKEtlLHdlKSxPZT1CKEllKSxldD1PZS53cml0ZShLZSx3ZSk7cmV0dXJuIGV0IT09SWUmJihPZT1PZS5z''@;'; put 'put ''bGljZSgwLGV0KSksT2V9KEtlLHdlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoS2UpKXJldHVybiBmdW5jdGlvbiBqKEtlKXtpZihIZShLZSxVaW50OEFycmF5KSl7dmFyIHdlPW5ldyBVaW50OEFycmF5KEtlKTtyZXR1cm4gVih3ZS5idWZmZXIsd2UuYnl0ZU9mZnNldCx3ZS5ieXRlTGVuZ3Ro''@;'; put 'put ''KX1yZXR1cm4geihLZSl9KEtlKTtpZihudWxsPT1LZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAi''@;'; put 'put ''K3R5cGVvZiBLZSk7aWYoSGUoS2UsQXJyYXlCdWZmZXIpfHxLZSYmSGUoS2UuYnVmZmVyLEFycmF5QnVmZmVyKXx8dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPCJ1IiYmKEhlKEtlLFNoYXJlZEFycmF5QnVmZmVyKXx8S2UmJkhlKEtlLmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVy''@;'; put 'put ''biBWKEtlLHdlLEllKTtpZigibnVtYmVyIj09dHlwZW9mIEtlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3ZhciBPZT1LZS52YWx1ZU9mJiZLZS52YWx1ZU9mKCk7aWYo''@;'; put 'put ''bnVsbCE9T2UmJk9lIT09S2UpcmV0dXJuIEwuZnJvbShPZSx3ZSxJZSk7dmFyIGV0PWZ1bmN0aW9uIEcoS2Upe2lmKEwuaXNCdWZmZXIoS2UpKXt2YXIgd2U9MHxXKEtlLmxlbmd0aCksSWU9Qih3ZSk7cmV0dXJuIDA9PT1JZS5sZW5ndGh8fEtlLmNvcHkoSWUsMCwwLHdlKSxJZX1yZXR1cm4g''@;'; put 'put ''dm9pZCAwIT09S2UubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgS2UubGVuZ3RofHxRZShLZS5sZW5ndGgpP0IoMCk6eihLZSk6IkJ1ZmZlciI9PT1LZS50eXBlJiZBcnJheS5pc0FycmF5KEtlLmRhdGEpP3ooS2UuZGF0YSk6dm9pZCAwfShLZSk7aWYoZXQpcmV0dXJuIGV0O2lmKHR5cGVvZiBT''@;'; put 'put ''eW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBLZVtTeW1ib2wudG9QcmltaXRpdmVdKXJldHVybiBMLmZyb20oS2VbU3ltYm9sLnRvUHJpbWl0aXZlXSgic3RyaW5nIiksd2UsSWUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBh''@;'; put 'put ''cmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIEtlKX1mdW5jdGlvbiBKKEtlKXtpZigibnVtYmVyIiE9dHlwZW9mIEtlKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoS2U8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0tlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBSKEtlKXtyZXR1cm4gSihLZSksQihLZTwwPzA6''@;'; put 'put ''MHxXKEtlKSl9ZnVuY3Rpb24geihLZSl7Zm9yKHZhciB3ZT1LZS5sZW5ndGg8MD8wOjB8VyhLZS5sZW5ndGgpLEllPUIod2UpLE9lPTA7T2U8d2U7T2UrPTEpSWVbT2VdPTI1NSZLZVtPZV07cmV0dXJuIEllfWZ1bmN0aW9uIFYoS2Usd2UsSWUpe2lmKHdlPDB8fEtlLmJ5dGVMZW5ndGg8d2Up''@;'; put 'put ''dGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKEtlLmJ5dGVMZW5ndGg8d2UrKEllfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7dmFyIE9lO3JldHVybiBP''@;'; put 'put ''ZT12b2lkIDA9PT13ZSYmdm9pZCAwPT09SWU/bmV3IFVpbnQ4QXJyYXkoS2UpOnZvaWQgMD09PUllP25ldyBVaW50OEFycmF5KEtlLHdlKTpuZXcgVWludDhBcnJheShLZSx3ZSxJZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKE9lLEwucHJvdG90eXBlKSxPZX1mdW5jdGlvbiBXKEtlKXtpZihL''@;'; put 'put ''ZT49aGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK2hlLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8S2V9ZnVuY3Rpb24gcShLZSx3ZSl7aWYoTC5pc0J1ZmZlcihLZSkpcmV0dXJu''@;'; put 'put ''IEtlLmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoS2UpfHxIZShLZSxBcnJheUJ1ZmZlcikpcmV0dXJuIEtlLmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBLZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBz''@;'; put 'put ''dHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgS2UpO3ZhciBJZT1LZS5sZW5ndGgsT2U9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighT2UmJjA9PT1JZSlyZXR1cm4gMDtmb3IodmFyIGV0PSExOzspc3dpdGNoKHdl''@;'; put 'put ''KXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBJZTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBQZShLZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipJZTtjYXNlImhl''@;'; put 'put ''eCI6cmV0dXJuIEllPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIExlKEtlKS5sZW5ndGg7ZGVmYXVsdDppZihldClyZXR1cm4gT2U/LTE6UGUoS2UpLmxlbmd0aDt3ZT0oIiIrd2UpLnRvTG93ZXJDYXNlKCksZXQ9ITB9fWZ1bmN0aW9uIHRlKEtlLHdlLEllKXt2YXIgT2U9ITE7aWYoKHZvaWQg''@;'; put 'put ''MD09PXdlfHx3ZTwwKSYmKHdlPTApLHdlPnRoaXMubGVuZ3RofHwoKHZvaWQgMD09PUllfHxJZT50aGlzLmxlbmd0aCkmJihJZT10aGlzLmxlbmd0aCksSWU8PTApfHwoSWU+Pj49MCk8PSh3ZT4+Pj0wKSlyZXR1cm4iIjtmb3IoS2V8fChLZT0idXRmOCIpOzspc3dpdGNoKEtlKXtjYXNlImhl''@;'; put 'put ''eCI6cmV0dXJuIHkodGhpcyx3ZSxJZSk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTih0aGlzLHdlLEllKTtjYXNlImFzY2lpIjpyZXR1cm4gQyh0aGlzLHdlLEllKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBNKHRoaXMsd2UsSWUpO2Nhc2UiYmFzZTY0IjpyZXR1''@;'; put 'put ''cm4geCh0aGlzLHdlLEllKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIHAodGhpcyx3ZSxJZSk7ZGVmYXVsdDppZihPZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0tlKTtLZT0oS2UrIiIpLnRvTG93''@;'; put 'put ''ZXJDYXNlKCksT2U9ITB9fWZ1bmN0aW9uIG5lKEtlLHdlLEllKXt2YXIgT2U9S2Vbd2VdO0tlW3dlXT1LZVtJZV0sS2VbSWVdPU9lfWZ1bmN0aW9uIGllKEtlLHdlLEllLE9lLGV0KXtpZigwPT09S2UubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgSWU/KE9lPUllLEllPTAp''@;'; put 'put ''OkllPjIxNDc0ODM2NDc/SWU9MjE0NzQ4MzY0NzpJZTwtMjE0NzQ4MzY0OCYmKEllPS0yMTQ3NDgzNjQ4KSxRZShJZT0rSWUpJiYoSWU9ZXQ/MDpLZS5sZW5ndGgtMSksSWU8MCYmKEllPUtlLmxlbmd0aCtJZSksSWU+PUtlLmxlbmd0aCl7aWYoZXQpcmV0dXJuLTE7SWU9S2UubGVuZ3RoLTF9''@;'; put 'put ''ZWxzZSBpZihJZTwwKXtpZighZXQpcmV0dXJuLTE7SWU9MH1pZigic3RyaW5nIj09dHlwZW9mIHdlJiYod2U9TC5mcm9tKHdlLE9lKSksTC5pc0J1ZmZlcih3ZSkpcmV0dXJuIDA9PT13ZS5sZW5ndGg/LTE6bGUoS2Usd2UsSWUsT2UsZXQpO2lmKCJudW1iZXIiPT10eXBlb2Ygd2UpcmV0dXJu''@;'; put 'put ''IHdlJj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/ZXQ/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKEtlLHdlLEllKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKEtlLHdlLEllKTpsZShLZSxbd2VdLEll''@;'; put 'put ''LE9lLGV0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBsZShLZSx3ZSxJZSxPZSxldCl7dmFyIERlLG50PTEscWU9S2UubGVuZ3RoLGh0PXdlLmxlbmd0aDtpZih2b2lkIDAhPT1PZSYmKCJ1Y3MyIj09PShPZT1T''@;'; put 'put ''dHJpbmcoT2UpLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09T2V8fCJ1dGYxNmxlIj09PU9lfHwidXRmLTE2bGUiPT09T2UpKXtpZihLZS5sZW5ndGg8Mnx8d2UubGVuZ3RoPDIpcmV0dXJuLTE7bnQ9MixxZS89MixodC89MixJZS89Mn1mdW5jdGlvbiBFZShPdCxQdCl7cmV0dXJuIDE9PT1u''@;'; put 'put ''dD9PdFtQdF06T3QucmVhZFVJbnQxNkJFKFB0Km50KX1pZihldCl7dmFyICRlPS0xO2ZvcihEZT1JZTtEZTxxZTtEZSsrKWlmKEVlKEtlLERlKT09PUVlKHdlLC0xPT09JGU/MDpEZS0kZSkpe2lmKC0xPT09JGUmJigkZT1EZSksRGUtJGUrMT09PWh0KXJldHVybiAkZSpudH1lbHNlLTEhPT0k''@;'; put 'put ''ZSYmKERlLT1EZS0kZSksJGU9LTF9ZWxzZSBmb3IoSWUraHQ+cWUmJihJZT1xZS1odCksRGU9SWU7RGU+PTA7RGUtLSl7Zm9yKHZhciBhdD0hMCxjdD0wO2N0PGh0O2N0KyspaWYoRWUoS2UsRGUrY3QpIT09RWUod2UsY3QpKXthdD0hMTticmVha31pZihhdClyZXR1cm4gRGV9cmV0dXJuLTF9''@;'; put 'put ''ZnVuY3Rpb24gZGUoS2Usd2UsSWUsT2Upe0llPU51bWJlcihJZSl8fDA7dmFyIGV0PUtlLmxlbmd0aC1JZTtPZT8oT2U9TnVtYmVyKE9lKSk+ZXQmJihPZT1ldCk6T2U9ZXQ7dmFyIG50PXdlLmxlbmd0aDtPZT5udC8yJiYoT2U9bnQvMik7Zm9yKHZhciBxZT0wO3FlPE9lOysrcWUpe3ZhciBo''@;'; put 'put ''dD1wYXJzZUludCh3ZS5zdWJzdHIoMipxZSwyKSwxNik7aWYoUWUoaHQpKXJldHVybiBxZTtLZVtJZStxZV09aHR9cmV0dXJuIHFlfWZ1bmN0aW9uIHVlKEtlLHdlLEllLE9lKXtyZXR1cm4gQmUoUGUod2UsS2UubGVuZ3RoLUllKSxLZSxJZSxPZSl9ZnVuY3Rpb24gY2UoS2Usd2UsSWUsT2Up''@;'; put 'put ''e3JldHVybiBCZShmdW5jdGlvbiBGZShLZSl7Zm9yKHZhciB3ZT1bXSxJZT0wO0llPEtlLmxlbmd0aDsrK0llKXdlLnB1c2goMjU1JktlLmNoYXJDb2RlQXQoSWUpKTtyZXR1cm4gd2V9KHdlKSxLZSxJZSxPZSl9ZnVuY3Rpb24gWShLZSx3ZSxJZSxPZSl7cmV0dXJuIEJlKExlKHdlKSxLZSxJ''@;'; put 'put ''ZSxPZSl9ZnVuY3Rpb24gYihLZSx3ZSxJZSxPZSl7cmV0dXJuIEJlKGZ1bmN0aW9uIE5lKEtlLHdlKXtmb3IodmFyIEllLE9lLG50PVtdLHFlPTA7cWU8S2UubGVuZ3RoJiYhKCh3ZS09Mik8MCk7KytxZSlPZT0oSWU9S2UuY2hhckNvZGVBdChxZSkpPj44LG50LnB1c2goSWUlMjU2KSxudC5w''@;'; put 'put ''dXNoKE9lKTtyZXR1cm4gbnR9KHdlLEtlLmxlbmd0aC1JZSksS2UsSWUsT2UpfWZ1bmN0aW9uIHgoS2Usd2UsSWUpe3JldHVybiBzZS5mcm9tQnl0ZUFycmF5KDA9PT13ZSYmSWU9PT1LZS5sZW5ndGg/S2U6S2Uuc2xpY2Uod2UsSWUpKX1mdW5jdGlvbiBOKEtlLHdlLEllKXtJZT1NYXRoLm1p''@;'; put 'put ''bihLZS5sZW5ndGgsSWUpO2Zvcih2YXIgT2U9W10sZXQ9d2U7ZXQ8SWU7KXt2YXIgRWUsRGUsJGUsYXQsbnQ9S2VbZXRdLHFlPW51bGwsaHQ9bnQ+MjM5PzQ6bnQ+MjIzPzM6bnQ+MTkxPzI6MTtpZihldCtodDw9SWUpc3dpdGNoKGh0KXtjYXNlIDE6bnQ8MTI4JiYocWU9bnQpO2JyZWFrO2Nh''@;'; put 'put ''c2UgMjoxMjg9PSgxOTImKEVlPUtlW2V0KzFdKSkmJihhdD0oMzEmbnQpPDw2fDYzJkVlKT4xMjcmJihxZT1hdCk7YnJlYWs7Y2FzZSAzOkRlPUtlW2V0KzJdLDEyOD09KDE5MiYoRWU9S2VbZXQrMV0pKSYmMTI4PT0oMTkyJkRlKSYmKGF0PSgxNSZudCk8PDEyfCg2MyZFZSk8PDZ8NjMmRGUp''@;'; put 'put ''PjIwNDcmJihhdDw1NTI5Nnx8YXQ+NTczNDMpJiYocWU9YXQpO2JyZWFrO2Nhc2UgNDpEZT1LZVtldCsyXSwkZT1LZVtldCszXSwxMjg9PSgxOTImKEVlPUtlW2V0KzFdKSkmJjEyOD09KDE5MiZEZSkmJjEyOD09KDE5MiYkZSkmJihhdD0oMTUmbnQpPDwxOHwoNjMmRWUpPDwxMnwoNjMmRGUp''@;'; put 'put ''PDw2fDYzJiRlKT42NTUzNSYmYXQ8MTExNDExMiYmKHFlPWF0KX1udWxsPT09cWU/KHFlPTY1NTMzLGh0PTEpOnFlPjY1NTM1JiYoT2UucHVzaCgocWUtPTY1NTM2KT4+PjEwJjEwMjN8NTUyOTYpLHFlPTU2MzIwfDEwMjMmcWUpLE9lLnB1c2gocWUpLGV0Kz1odH1yZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''ZyhLZSl7dmFyIHdlPUtlLmxlbmd0aDtpZih3ZTw9RilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsS2UpO2Zvcih2YXIgSWU9IiIsT2U9MDtPZTx3ZTspSWUrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLEtlLnNsaWNlKE9lLE9lKz1GKSk7cmV0dXJu''@;'; put 'put ''IEllfShPZSl9emUua01heExlbmd0aD1oZSwhKEwuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbiBIKCl7dHJ5e3ZhciBLZT1uZXcgVWludDhBcnJheSgxKSx3ZT17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZih3ZSxVaW50OEFycmF5''@;'; put 'put ''LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKEtlLHdlKSw0Mj09PUtlLmZvbygpfWNhdGNoe3JldHVybiExfX0oKSkmJnR5cGVvZiBjb25zb2xlPCJ1IiYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0''@;'; put 'put ''eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShMLnByb3RvdHlwZSwicGFyZW50''@;'; put 'put ''Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihMLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoTC5pc0J1ZmZlcih0aGlz''@;'; put 'put ''KSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLEwucG9vbFNpemU9ODE5MixMLmZyb209ZnVuY3Rpb24oS2Usd2UsSWUpe3JldHVybiBLKEtlLHdlLEllKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKEwucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBl''@;'; put 'put ''T2YoTCxVaW50OEFycmF5KSxMLmFsbG9jPWZ1bmN0aW9uKEtlLHdlLEllKXtyZXR1cm4gZnVuY3Rpb24gSShLZSx3ZSxJZSl7cmV0dXJuIEooS2UpLEtlPD0wP0IoS2UpOnZvaWQgMCE9PXdlPyJzdHJpbmciPT10eXBlb2YgSWU/QihLZSkuZmlsbCh3ZSxJZSk6QihLZSkuZmlsbCh3ZSk6QihL''@;'; put 'put ''ZSl9KEtlLHdlLEllKX0sTC5hbGxvY1Vuc2FmZT1mdW5jdGlvbihLZSl7cmV0dXJuIFIoS2UpfSxMLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihLZSl7cmV0dXJuIFIoS2UpfSxMLmlzQnVmZmVyPWZ1bmN0aW9uKHdlKXtyZXR1cm4gbnVsbCE9d2UmJiEwPT09d2UuX2lzQnVmZmVyJiZ3ZSE9''@;'; put 'put ''PUwucHJvdG90eXBlfSxMLmNvbXBhcmU9ZnVuY3Rpb24od2UsSWUpe2lmKEhlKHdlLFVpbnQ4QXJyYXkpJiYod2U9TC5mcm9tKHdlLHdlLm9mZnNldCx3ZS5ieXRlTGVuZ3RoKSksSGUoSWUsVWludDhBcnJheSkmJihJZT1MLmZyb20oSWUsSWUub2Zmc2V0LEllLmJ5dGVMZW5ndGgpKSwhTC5p''@;'; put 'put ''c0J1ZmZlcih3ZSl8fCFMLmlzQnVmZmVyKEllKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZih3ZT09PUllKXJldHVybiAwO2Zvcih2YXIgT2U9d2UubGVuZ3RoLGV0''@;'; put 'put ''PUllLmxlbmd0aCxudD0wLHFlPU1hdGgubWluKE9lLGV0KTtudDxxZTsrK250KWlmKHdlW250XSE9PUllW250XSl7T2U9d2VbbnRdLGV0PUllW250XTticmVha31yZXR1cm4gT2U8ZXQ/LTE6ZXQ8T2U/MTowfSxMLmlzRW5jb2Rpbmc9ZnVuY3Rpb24od2Upe3N3aXRjaChTdHJpbmcod2UpLnRv''@;'; put 'put ''TG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0''@;'; put 'put ''OnJldHVybiExfX0sTC5jb25jYXQ9ZnVuY3Rpb24od2UsSWUpe2lmKCFBcnJheS5pc0FycmF5KHdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PXdlLmxlbmd0aClyZXR1cm4gTC5hbGxvYygwKTt2YXIg''@;'; put 'put ''T2U7aWYodm9pZCAwPT09SWUpZm9yKEllPTAsT2U9MDtPZTx3ZS5sZW5ndGg7KytPZSlJZSs9d2VbT2VdLmxlbmd0aDt2YXIgZXQ9TC5hbGxvY1Vuc2FmZShJZSksbnQ9MDtmb3IoT2U9MDtPZTx3ZS5sZW5ndGg7KytPZSl7dmFyIHFlPXdlW09lXTtpZihIZShxZSxVaW50OEFycmF5KSludCtx''@;'; put 'put ''ZS5sZW5ndGg+ZXQubGVuZ3RoP0wuZnJvbShxZSkuY29weShldCxudCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZXQscWUsbnQpO2Vsc2V7aWYoIUwuaXNCdWZmZXIocWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1''@;'; put 'put ''ZmZlcnMnKTtxZS5jb3B5KGV0LG50KX1udCs9cWUubGVuZ3RofXJldHVybiBldH0sTC5ieXRlTGVuZ3RoPXEsTC5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLEwucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciB3ZT10aGlzLmxlbmd0aDtpZih3ZSUyIT0wKXRocm93IG5ldyBSYW5nZUVy''@;'; put 'put ''cm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgSWU9MDtJZTx3ZTtJZSs9MiluZSh0aGlzLEllLEllKzEpO3JldHVybiB0aGlzfSxMLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgd2U9dGhpcy5sZW5ndGg7aWYod2UlNCE9MCl0''@;'; put 'put ''aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIEllPTA7SWU8d2U7SWUrPTQpbmUodGhpcyxJZSxJZSszKSxuZSh0aGlzLEllKzEsSWUrMik7cmV0dXJuIHRoaXN9LEwucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciB3ZT10aGlzLmxlbmd0aDtpZih3ZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgSWU9MDtJZTx3ZTtJZSs9OCluZSh0aGlzLEllLEllKzcpLG5lKHRoaXMsSWUrMSxJZSs2KSxuZSh0''@;'; put 'put ''aGlzLEllKzIsSWUrNSksbmUodGhpcyxJZSszLEllKzQpO3JldHVybiB0aGlzfSxMLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1MLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB3ZT10aGlzLmxlbmd0aDtyZXR1cm4gMD09PXdlPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP04o''@;'; put 'put ''dGhpcywwLHdlKTp0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LEwucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih3ZSl7aWYoIUwuaXNCdWZmZXIod2UpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PXdlfHwwPT09TC5jb21w''@;'; put 'put ''YXJlKHRoaXMsd2UpfSxMLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHdlPSIiLEllPXplLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB3ZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsSWUpLnJlcGxhY2UoLyguezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+SWUmJih3''@;'; put 'put ''ZSs9IiAuLi4gIiksIjxCdWZmZXIgIit3ZSsiPiJ9LHYmJihMLnByb3RvdHlwZVt2XT1MLnByb3RvdHlwZS5pbnNwZWN0KSxMLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKHdlLEllLE9lLGV0LG50KXtpZihIZSh3ZSxVaW50OEFycmF5KSYmKHdlPUwuZnJvbSh3ZSx3ZS5vZmZzZXQsd2Uu''@;'; put 'put ''Ynl0ZUxlbmd0aCkpLCFMLmlzQnVmZmVyKHdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB3ZSk7aWYodm9pZCAwPT09SWUmJihJZT0wKSx2''@;'; put 'put ''b2lkIDA9PT1PZSYmKE9lPXdlP3dlLmxlbmd0aDowKSx2b2lkIDA9PT1ldCYmKGV0PTApLHZvaWQgMD09PW50JiYobnQ9dGhpcy5sZW5ndGgpLEllPDB8fE9lPndlLmxlbmd0aHx8ZXQ8MHx8bnQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIp''@;'; put 'put ''O2lmKGV0Pj1udCYmSWU+PU9lKXJldHVybiAwO2lmKGV0Pj1udClyZXR1cm4tMTtpZihJZT49T2UpcmV0dXJuIDE7aWYodGhpcz09PXdlKXJldHVybiAwO2Zvcih2YXIgcWU9KG50Pj4+PTApLShldD4+Pj0wKSxodD0oT2U+Pj49MCktKEllPj4+PTApLEVlPU1hdGgubWluKHFlLGh0KSxEZT10''@;'; put 'put ''aGlzLnNsaWNlKGV0LG50KSwkZT13ZS5zbGljZShJZSxPZSksYXQ9MDthdDxFZTsrK2F0KWlmKERlW2F0XSE9PSRlW2F0XSl7cWU9RGVbYXRdLGh0PSRlW2F0XTticmVha31yZXR1cm4gcWU8aHQ/LTE6aHQ8cWU/MTowfSxMLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbih3ZSxJZSxPZSl7''@;'; put 'put ''cmV0dXJuLTEhPT10aGlzLmluZGV4T2Yod2UsSWUsT2UpfSxMLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gaWUodGhpcyx3ZSxJZSxPZSwhMCl9LEwucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gaWUodGhpcyx3ZSxJ''@;'; put 'put ''ZSxPZSwhMSl9LEwucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHdlLEllLE9lLGV0KXtpZih2b2lkIDA9PT1JZSlldD0idXRmOCIsT2U9dGhpcy5sZW5ndGgsSWU9MDtlbHNlIGlmKHZvaWQgMD09PU9lJiYic3RyaW5nIj09dHlwZW9mIEllKWV0PUllLE9lPXRoaXMubGVuZ3RoLEllPTA7ZWxz''@;'; put 'put ''ZXtpZighaXNGaW5pdGUoSWUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtJZT4+Pj0wLGlzRmluaXRlKE9lKT8oT2U+Pj49MCx2b2lkIDA9PT1ldCYmKGV0PSJ1dGY4Iikp''@;'; put 'put ''OihldD1PZSxPZT12b2lkIDApfXZhciBudD10aGlzLmxlbmd0aC1JZTtpZigodm9pZCAwPT09T2V8fE9lPm50KSYmKE9lPW50KSx3ZS5sZW5ndGg+MCYmKE9lPDB8fEllPDApfHxJZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1''@;'; put 'put ''ZmZlciBib3VuZHMiKTtldHx8KGV0PSJ1dGY4Iik7Zm9yKHZhciBxZT0hMTs7KXN3aXRjaChldCl7Y2FzZSJoZXgiOnJldHVybiBkZSh0aGlzLHdlLEllLE9lKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiB1ZSh0aGlzLHdlLEllLE9lKTtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6''@;'; put 'put ''Y2FzZSJiaW5hcnkiOnJldHVybiBjZSh0aGlzLHdlLEllLE9lKTtjYXNlImJhc2U2NCI6cmV0dXJuIFkodGhpcyx3ZSxJZSxPZSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBiKHRoaXMsd2UsSWUsT2UpO2RlZmF1bHQ6aWYocWUp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitldCk7ZXQ9KCIiK2V0KS50b0xvd2VyQ2FzZSgpLHFlPSEwfX0sTC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlz''@;'; put 'put ''Ll9hcnJ8fHRoaXMsMCl9fTt2YXIgRj00MDk2O2Z1bmN0aW9uIEMoS2Usd2UsSWUpe3ZhciBPZT0iIjtJZT1NYXRoLm1pbihLZS5sZW5ndGgsSWUpO2Zvcih2YXIgZXQ9d2U7ZXQ8SWU7KytldClPZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmS2VbZXRdKTtyZXR1cm4gT2V9ZnVuY3Rpb24g''@;'; put 'put ''TShLZSx3ZSxJZSl7dmFyIE9lPSIiO0llPU1hdGgubWluKEtlLmxlbmd0aCxJZSk7Zm9yKHZhciBldD13ZTtldDxJZTsrK2V0KU9lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKEtlW2V0XSk7cmV0dXJuIE9lfWZ1bmN0aW9uIHkoS2Usd2UsSWUpe3ZhciBPZT1LZS5sZW5ndGg7KCF3ZXx8d2U8MCkm''@;'; put 'put ''Jih3ZT0wKSwoIUllfHxJZTwwfHxJZT5PZSkmJihJZT1PZSk7Zm9yKHZhciBldD0iIixudD13ZTtudDxJZTsrK250KWV0Kz1tdFtLZVtudF1dO3JldHVybiBldH1mdW5jdGlvbiBwKEtlLHdlLEllKXtmb3IodmFyIE9lPUtlLnNsaWNlKHdlLEllKSxldD0iIixudD0wO250PE9lLmxlbmd0aC0x''@;'; put 'put ''O250Kz0yKWV0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKE9lW250XSsyNTYqT2VbbnQrMV0pO3JldHVybiBldH1mdW5jdGlvbiBTKEtlLHdlLEllKXtpZihLZSUxIT0wfHxLZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihLZSt3ZT5JZSl0aHJvdyBuZXcg''@;'; put 'put ''UmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIFEoS2Usd2UsSWUsT2UsZXQsbnQpe2lmKCFMLmlzQnVmZmVyKEtlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNl''@;'; put 'put ''Jyk7aWYod2U+ZXR8fHdlPG50KXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihJZStPZT5LZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHJlKEtlLHdlLEllLE9lLGV0''@;'; put 'put ''LG50KXtpZihJZStPZT5LZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKEllPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIGZlKEtlLHdlLEllLE9lLGV0KXtyZXR1cm4gd2U9K3dlLEllPj4+''@;'; put 'put ''PTAsZXR8fHJlKEtlLDAsSWUsNCksay53cml0ZShLZSx3ZSxJZSxPZSwyMyw0KSxJZSs0fWZ1bmN0aW9uIG1lKEtlLHdlLEllLE9lLGV0KXtyZXR1cm4gd2U9K3dlLEllPj4+PTAsZXR8fHJlKEtlLDAsSWUsOCksay53cml0ZShLZSx3ZSxJZSxPZSw1Miw4KSxJZSs4fUwucHJvdG90eXBlLnNs''@;'; put 'put ''aWNlPWZ1bmN0aW9uKHdlLEllKXt2YXIgT2U9dGhpcy5sZW5ndGg7KHdlPX5+d2UpPDA/KHdlKz1PZSk8MCYmKHdlPTApOndlPk9lJiYod2U9T2UpLChJZT12b2lkIDA9PT1JZT9PZTp+fkllKTwwPyhJZSs9T2UpPDAmJihJZT0wKTpJZT5PZSYmKEllPU9lKSxJZTx3ZSYmKEllPXdlKTt2YXIg''@;'; put 'put ''ZXQ9dGhpcy5zdWJhcnJheSh3ZSxJZSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihldCxMLnByb3RvdHlwZSksZXR9LEwucHJvdG90eXBlLnJlYWRVaW50TEU9TC5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbih3ZSxJZSxPZSl7d2U+Pj49MCxJZT4+Pj0wLE9lfHxTKHdlLEll''@;'; put 'put ''LHRoaXMubGVuZ3RoKTtmb3IodmFyIGV0PXRoaXNbd2VdLG50PTEscWU9MDsrK3FlPEllJiYobnQqPTI1Nik7KWV0Kz10aGlzW3dlK3FlXSpudDtyZXR1cm4gZXR9LEwucHJvdG90eXBlLnJlYWRVaW50QkU9TC5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbih3ZSxJZSxPZSl7d2U+Pj49''@;'; put 'put ''MCxJZT4+Pj0wLE9lfHxTKHdlLEllLHRoaXMubGVuZ3RoKTtmb3IodmFyIGV0PXRoaXNbd2UrLS1JZV0sbnQ9MTtJZT4wJiYobnQqPTI1Nik7KWV0Kz10aGlzW3dlKy0tSWVdKm50O3JldHVybiBldH0sTC5wcm90b3R5cGUucmVhZFVpbnQ4PUwucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlv''@;'; put 'put ''bih3ZSxJZSl7cmV0dXJuIHdlPj4+PTAsSWV8fFMod2UsMSx0aGlzLmxlbmd0aCksdGhpc1t3ZV19LEwucHJvdG90eXBlLnJlYWRVaW50MTZMRT1MLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24od2UsSWUpe3JldHVybiB3ZT4+Pj0wLEllfHxTKHdlLDIsdGhpcy5sZW5ndGgpLHRo''@;'; put 'put ''aXNbd2VdfHRoaXNbd2UrMV08PDh9LEwucHJvdG90eXBlLnJlYWRVaW50MTZCRT1MLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24od2UsSWUpe3JldHVybiB3ZT4+Pj0wLEllfHxTKHdlLDIsdGhpcy5sZW5ndGgpLHRoaXNbd2VdPDw4fHRoaXNbd2UrMV19LEwucHJvdG90eXBlLnJl''@;'; put 'put ''YWRVaW50MzJMRT1MLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24od2UsSWUpe3JldHVybiB3ZT4+Pj0wLEllfHxTKHdlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW3dlXXx0aGlzW3dlKzFdPDw4fHRoaXNbd2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW3dlKzNdfSxMLnByb3RvdHlwZS5y''@;'; put 'put ''ZWFkVWludDMyQkU9TC5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHdlLEllKXtyZXR1cm4gd2U+Pj49MCxJZXx8Uyh3ZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW3dlXSsodGhpc1t3ZSsxXTw8MTZ8dGhpc1t3ZSsyXTw8OHx0aGlzW3dlKzNdKX0sTC5wcm90b3R5cGUu''@;'; put 'put ''cmVhZEludExFPWZ1bmN0aW9uKHdlLEllLE9lKXt3ZT4+Pj0wLEllPj4+PTAsT2V8fFMod2UsSWUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgZXQ9dGhpc1t3ZV0sbnQ9MSxxZT0wOysrcWU8SWUmJihudCo9MjU2KTspZXQrPXRoaXNbd2UrcWVdKm50O3JldHVybiBldD49KG50Kj0xMjgpJiYoZXQt''@;'; put 'put ''PU1hdGgucG93KDIsOCpJZSkpLGV0fSxMLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24od2UsSWUsT2Upe3dlPj4+PTAsSWU+Pj49MCxPZXx8Uyh3ZSxJZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBldD1JZSxudD0xLHFlPXRoaXNbd2UrLS1ldF07ZXQ+MCYmKG50Kj0yNTYpOylxZSs9dGhp''@;'; put 'put ''c1t3ZSstLWV0XSpudDtyZXR1cm4gcWU+PShudCo9MTI4KSYmKHFlLT1NYXRoLnBvdygyLDgqSWUpKSxxZX0sTC5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24od2UsSWUpe3JldHVybiB3ZT4+Pj0wLEllfHxTKHdlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW3dlXT8tMSooMjU1LXRoaXNb''@;'; put 'put ''d2VdKzEpOnRoaXNbd2VdfSxMLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbih3ZSxJZSl7d2U+Pj49MCxJZXx8Uyh3ZSwyLHRoaXMubGVuZ3RoKTt2YXIgT2U9dGhpc1t3ZV18dGhpc1t3ZSsxXTw8ODtyZXR1cm4gMzI3NjgmT2U/NDI5NDkwMTc2MHxPZTpPZX0sTC5wcm90b3R5cGUu''@;'; put 'put ''cmVhZEludDE2QkU9ZnVuY3Rpb24od2UsSWUpe3dlPj4+PTAsSWV8fFMod2UsMix0aGlzLmxlbmd0aCk7dmFyIE9lPXRoaXNbd2UrMV18dGhpc1t3ZV08PDg7cmV0dXJuIDMyNzY4Jk9lPzQyOTQ5MDE3NjB8T2U6T2V9LEwucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHdlLEllKXty''@;'; put 'put ''ZXR1cm4gd2U+Pj49MCxJZXx8Uyh3ZSw0LHRoaXMubGVuZ3RoKSx0aGlzW3dlXXx0aGlzW3dlKzFdPDw4fHRoaXNbd2UrMl08PDE2fHRoaXNbd2UrM108PDI0fSxMLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIHdlPj4+PTAsSWV8fFMod2UsNCx0aGlzLmxl''@;'; put 'put ''bmd0aCksdGhpc1t3ZV08PDI0fHRoaXNbd2UrMV08PDE2fHRoaXNbd2UrMl08PDh8dGhpc1t3ZSszXX0sTC5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24od2UsSWUpe3JldHVybiB3ZT4+Pj0wLEllfHxTKHdlLDQsdGhpcy5sZW5ndGgpLGsucmVhZCh0aGlzLHdlLCEwLDIzLDQpfSxM''@;'; put 'put ''LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIHdlPj4+PTAsSWV8fFMod2UsNCx0aGlzLmxlbmd0aCksay5yZWFkKHRoaXMsd2UsITEsMjMsNCl9LEwucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIHdlPj4+PTAsSWV8fFMo''@;'; put 'put ''d2UsOCx0aGlzLmxlbmd0aCksay5yZWFkKHRoaXMsd2UsITAsNTIsOCl9LEwucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIHdlPj4+PTAsSWV8fFMod2UsOCx0aGlzLmxlbmd0aCksay5yZWFkKHRoaXMsd2UsITEsNTIsOCl9LEwucHJvdG90eXBlLndyaXRl''@;'; put 'put ''VWludExFPUwucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHdlLEllLE9lLGV0KXt3ZT0rd2UsSWU+Pj49MCxPZT4+Pj0wLGV0fHxRKHRoaXMsd2UsSWUsT2UsTWF0aC5wb3coMiw4Kk9lKS0xLDApO3ZhciBxZT0xLGh0PTA7Zm9yKHRoaXNbSWVdPTI1NSZ3ZTsrK2h0PE9lJiYocWUq''@;'; put 'put ''PTI1Nik7KXRoaXNbSWUraHRdPXdlL3FlJjI1NTtyZXR1cm4gSWUrT2V9LEwucHJvdG90eXBlLndyaXRlVWludEJFPUwucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHdlLEllLE9lLGV0KXt3ZT0rd2UsSWU+Pj49MCxPZT4+Pj0wLGV0fHxRKHRoaXMsd2UsSWUsT2UsTWF0aC5wb3co''@;'; put 'put ''Miw4Kk9lKS0xLDApO3ZhciBxZT1PZS0xLGh0PTE7Zm9yKHRoaXNbSWUrcWVdPTI1NSZ3ZTstLXFlPj0wJiYoaHQqPTI1Nik7KXRoaXNbSWUrcWVdPXdlL2h0JjI1NTtyZXR1cm4gSWUrT2V9LEwucHJvdG90eXBlLndyaXRlVWludDg9TC5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih3''@;'; put 'put ''ZSxJZSxPZSl7cmV0dXJuIHdlPSt3ZSxJZT4+Pj0wLE9lfHxRKHRoaXMsd2UsSWUsMSwyNTUsMCksdGhpc1tJZV09MjU1JndlLEllKzF9LEwucHJvdG90eXBlLndyaXRlVWludDE2TEU9TC5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbih3ZSxJZSxPZSl7cmV0dXJuIHdlPSt3ZSxJ''@;'; put 'put ''ZT4+Pj0wLE9lfHxRKHRoaXMsd2UsSWUsMiw2NTUzNSwwKSx0aGlzW0llXT0yNTUmd2UsdGhpc1tJZSsxXT13ZT4+PjgsSWUrMn0sTC5wcm90b3R5cGUud3JpdGVVaW50MTZCRT1MLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gd2U9K3dlLEllPj4+''@;'; put 'put ''PTAsT2V8fFEodGhpcyx3ZSxJZSwyLDY1NTM1LDApLHRoaXNbSWVdPXdlPj4+OCx0aGlzW0llKzFdPTI1NSZ3ZSxJZSsyfSxMLnByb3RvdHlwZS53cml0ZVVpbnQzMkxFPUwucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24od2UsSWUsT2Upe3JldHVybiB3ZT0rd2UsSWU+Pj49MCxP''@;'; put 'put ''ZXx8USh0aGlzLHdlLEllLDQsNDI5NDk2NzI5NSwwKSx0aGlzW0llKzNdPXdlPj4+MjQsdGhpc1tJZSsyXT13ZT4+PjE2LHRoaXNbSWUrMV09d2U+Pj44LHRoaXNbSWVdPTI1NSZ3ZSxJZSs0fSxMLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFPUwucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVu''@;'; put 'put ''Y3Rpb24od2UsSWUsT2Upe3JldHVybiB3ZT0rd2UsSWU+Pj49MCxPZXx8USh0aGlzLHdlLEllLDQsNDI5NDk2NzI5NSwwKSx0aGlzW0llXT13ZT4+PjI0LHRoaXNbSWUrMV09d2U+Pj4xNix0aGlzW0llKzJdPXdlPj4+OCx0aGlzW0llKzNdPTI1NSZ3ZSxJZSs0fSxMLnByb3RvdHlwZS53cml0''@;'; put 'put ''ZUludExFPWZ1bmN0aW9uKHdlLEllLE9lLGV0KXtpZih3ZT0rd2UsSWU+Pj49MCwhZXQpe3ZhciBudD1NYXRoLnBvdygyLDgqT2UtMSk7USh0aGlzLHdlLEllLE9lLG50LTEsLW50KX12YXIgcWU9MCxodD0xLEVlPTA7Zm9yKHRoaXNbSWVdPTI1NSZ3ZTsrK3FlPE9lJiYoaHQqPTI1Nik7KXdl''@;'; put 'put ''PDAmJjA9PT1FZSYmMCE9PXRoaXNbSWUrcWUtMV0mJihFZT0xKSx0aGlzW0llK3FlXT0od2UvaHQ+PjApLUVlJjI1NTtyZXR1cm4gSWUrT2V9LEwucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24od2UsSWUsT2UsZXQpe2lmKHdlPSt3ZSxJZT4+Pj0wLCFldCl7dmFyIG50PU1hdGgucG93''@;'; put 'put ''KDIsOCpPZS0xKTtRKHRoaXMsd2UsSWUsT2UsbnQtMSwtbnQpfXZhciBxZT1PZS0xLGh0PTEsRWU9MDtmb3IodGhpc1tJZStxZV09MjU1JndlOy0tcWU+PTAmJihodCo9MjU2KTspd2U8MCYmMD09PUVlJiYwIT09dGhpc1tJZStxZSsxXSYmKEVlPTEpLHRoaXNbSWUrcWVdPSh3ZS9odD4+MCkt''@;'; put 'put ''RWUmMjU1O3JldHVybiBJZStPZX0sTC5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gd2U9K3dlLEllPj4+PTAsT2V8fFEodGhpcyx3ZSxJZSwxLDEyNywtMTI4KSx3ZTwwJiYod2U9MjU1K3dlKzEpLHRoaXNbSWVdPTI1NSZ3ZSxJZSsxfSxMLnByb3RvdHlw''@;'; put 'put ''ZS53cml0ZUludDE2TEU9ZnVuY3Rpb24od2UsSWUsT2Upe3JldHVybiB3ZT0rd2UsSWU+Pj49MCxPZXx8USh0aGlzLHdlLEllLDIsMzI3NjcsLTMyNzY4KSx0aGlzW0llXT0yNTUmd2UsdGhpc1tJZSsxXT13ZT4+PjgsSWUrMn0sTC5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHdl''@;'; put 'put ''LEllLE9lKXtyZXR1cm4gd2U9K3dlLEllPj4+PTAsT2V8fFEodGhpcyx3ZSxJZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tJZV09d2U+Pj44LHRoaXNbSWUrMV09MjU1JndlLEllKzJ9LEwucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih3ZSxJZSxPZSl7cmV0dXJuIHdlPSt3ZSxJZT4+''@;'; put 'put ''Pj0wLE9lfHxRKHRoaXMsd2UsSWUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW0llXT0yNTUmd2UsdGhpc1tJZSsxXT13ZT4+PjgsdGhpc1tJZSsyXT13ZT4+PjE2LHRoaXNbSWUrM109d2U+Pj4yNCxJZSs0fSxMLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24od2UsSWUs''@;'; put 'put ''T2Upe3JldHVybiB3ZT0rd2UsSWU+Pj49MCxPZXx8USh0aGlzLHdlLEllLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksd2U8MCYmKHdlPTQyOTQ5NjcyOTUrd2UrMSksdGhpc1tJZV09d2U+Pj4yNCx0aGlzW0llKzFdPXdlPj4+MTYsdGhpc1tJZSsyXT13ZT4+PjgsdGhpc1tJZSszXT0yNTUm''@;'; put 'put ''d2UsSWUrNH0sTC5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gZmUodGhpcyx3ZSxJZSwhMCxPZSl9LEwucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbih3ZSxJZSxPZSl7cmV0dXJuIGZlKHRoaXMsd2UsSWUsITEsT2UpfSxMLnByb3RvdHlw''@;'; put 'put ''ZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKHdlLEllLE9lKXtyZXR1cm4gbWUodGhpcyx3ZSxJZSwhMCxPZSl9LEwucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24od2UsSWUsT2Upe3JldHVybiBtZSh0aGlzLHdlLEllLCExLE9lKX0sTC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih3''@;'; put 'put ''ZSxJZSxPZSxldCl7aWYoIUwuaXNCdWZmZXIod2UpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlciIpO2lmKE9lfHwoT2U9MCksIWV0JiYwIT09ZXQmJihldD10aGlzLmxlbmd0aCksSWU+PXdlLmxlbmd0aCYmKEllPXdlLmxlbmd0aCksSWV8fChJZT0w''@;'; put 'put ''KSxldD4wJiZldDxPZSYmKGV0PU9lKSxldD09PU9lfHwwPT09d2UubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoSWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKE9lPDB8fE9lPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcg''@;'; put 'put ''UmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoZXQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtldD50aGlzLmxlbmd0aCYmKGV0PXRoaXMubGVuZ3RoKSx3ZS5sZW5ndGgtSWU8ZXQtT2UmJihldD13ZS5sZW5ndGgtSWUrT2UpO3Zh''@;'; put 'put ''ciBudD1ldC1PZTtyZXR1cm4gdGhpcz09PXdlJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj90aGlzLmNvcHlXaXRoaW4oSWUsT2UsZXQpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHdlLHRoaXMuc3ViYXJyYXkoT2UsZXQpLEllKSxu''@;'; put 'put ''dH0sTC5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbih3ZSxJZSxPZSxldCl7aWYoInN0cmluZyI9PXR5cGVvZiB3ZSl7aWYoInN0cmluZyI9PXR5cGVvZiBJZT8oZXQ9SWUsSWU9MCxPZT10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiBPZSYmKGV0PU9lLE9lPXRoaXMubGVuZ3RoKSx2b2lk''@;'; put 'put ''IDAhPT1ldCYmInN0cmluZyIhPXR5cGVvZiBldCl0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBldCYmIUwuaXNFbmNvZGluZyhldCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitldCk7''@;'; put 'put ''aWYoMT09PXdlLmxlbmd0aCl7dmFyIG50PXdlLmNoYXJDb2RlQXQoMCk7KCJ1dGY4Ij09PWV0JiZudDwxMjh8fCJsYXRpbjEiPT09ZXQpJiYod2U9bnQpfX1lbHNlIm51bWJlciI9PXR5cGVvZiB3ZT93ZSY9MjU1OiJib29sZWFuIj09dHlwZW9mIHdlJiYod2U9TnVtYmVyKHdlKSk7aWYoSWU8''@;'; put 'put ''MHx8dGhpcy5sZW5ndGg8SWV8fHRoaXMubGVuZ3RoPE9lKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihPZTw9SWUpcmV0dXJuIHRoaXM7dmFyIHFlO2lmKEllPj4+PTAsT2U9dm9pZCAwPT09T2U/dGhpcy5sZW5ndGg6T2U+Pj4wLHdlfHwod2U9MCksIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiB3ZSlmb3IocWU9SWU7cWU8T2U7KytxZSl0aGlzW3FlXT13ZTtlbHNle3ZhciBodD1MLmlzQnVmZmVyKHdlKT93ZTpMLmZyb20od2UsZXQpLEVlPWh0Lmxlbmd0aDtpZigwPT09RWUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK3dlKyciIGlzIGludmFs''@;'; put 'put ''aWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3IocWU9MDtxZTxPZS1JZTsrK3FlKXRoaXNbcWUrSWVdPWh0W3FlJUVlXX1yZXR1cm4gdGhpc307dmFyIGtlPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gUGUoS2Usd2Upe3dlPXdlfHwxLzA7Zm9yKHZhciBJZSxPZT1LZS5sZW5ndGgs''@;'; put 'put ''ZXQ9bnVsbCxudD1bXSxxZT0wO3FlPE9lOysrcWUpe2lmKChJZT1LZS5jaGFyQ29kZUF0KHFlKSk+NTUyOTUmJkllPDU3MzQ0KXtpZighZXQpe2lmKEllPjU2MzE5KXsod2UtPTMpPi0xJiZudC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihxZSsxPT09T2Upeyh3ZS09Myk+LTEmJm50''@;'; put 'put ''LnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWV0PUllO2NvbnRpbnVlfWlmKEllPDU2MzIwKXsod2UtPTMpPi0xJiZudC5wdXNoKDIzOSwxOTEsMTg5KSxldD1JZTtjb250aW51ZX1JZT02NTUzNisoZXQtNTUyOTY8PDEwfEllLTU2MzIwKX1lbHNlIGV0JiYod2UtPTMpPi0xJiZudC5wdXNo''@;'; put 'put ''KDIzOSwxOTEsMTg5KTtpZihldD1udWxsLEllPDEyOCl7aWYoKHdlLT0xKTwwKWJyZWFrO250LnB1c2goSWUpfWVsc2UgaWYoSWU8MjA0OCl7aWYoKHdlLT0yKTwwKWJyZWFrO250LnB1c2goSWU+PjZ8MTkyLDYzJkllfDEyOCl9ZWxzZSBpZihJZTw2NTUzNil7aWYoKHdlLT0zKTwwKWJyZWFr''@;'; put 'put ''O250LnB1c2goSWU+PjEyfDIyNCxJZT4+NiY2M3wxMjgsNjMmSWV8MTI4KX1lbHNle2lmKCEoSWU8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigod2UtPTQpPDApYnJlYWs7bnQucHVzaChJZT4+MTh8MjQwLEllPj4xMiY2M3wxMjgsSWU+PjYmNjN8''@;'; put 'put ''MTI4LDYzJkllfDEyOCl9fXJldHVybiBudH1mdW5jdGlvbiBMZShLZSl7cmV0dXJuIHNlLnRvQnl0ZUFycmF5KGZ1bmN0aW9uIFRlKEtlKXtpZigoS2U9KEtlPUtlLnNwbGl0KCI9IilbMF0pLnRyaW0oKS5yZXBsYWNlKGtlLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtLZS5sZW5ndGgl''@;'; put 'put ''NCE9MDspS2UrPSI9IjtyZXR1cm4gS2V9KEtlKSl9ZnVuY3Rpb24gQmUoS2Usd2UsSWUsT2Upe2Zvcih2YXIgZXQ9MDtldDxPZSYmIShldCtJZT49d2UubGVuZ3RofHxldD49S2UubGVuZ3RoKTsrK2V0KXdlW2V0K0llXT1LZVtldF07cmV0dXJuIGV0fWZ1bmN0aW9uIEhlKEtlLHdlKXtyZXR1''@;'; put 'put ''cm4gS2UgaW5zdGFuY2VvZiB3ZXx8bnVsbCE9S2UmJm51bGwhPUtlLmNvbnN0cnVjdG9yJiZudWxsIT1LZS5jb25zdHJ1Y3Rvci5uYW1lJiZLZS5jb25zdHJ1Y3Rvci5uYW1lPT09d2UubmFtZX1mdW5jdGlvbiBRZShLZSl7cmV0dXJuIEtlIT1LZX12YXIgbXQ9ZnVuY3Rpb24oKXtmb3IodmFy''@;'; put 'put ''IEtlPSIwMTIzNDU2Nzg5YWJjZGVmIix3ZT1uZXcgQXJyYXkoMjU2KSxJZT0wO0llPDE2OysrSWUpZm9yKHZhciBPZT0xNipJZSxldD0wO2V0PDE2OysrZXQpd2VbT2UrZXRdPUtlW0llXStLZVtldF07cmV0dXJuIHdlfSgpfSw4NjQyMDooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZl''@;'; put 'put ''cixrPVQoNTE3OTMpLlRyYW5zZm9ybSx2PVQoNzIwMjQpLnM7ZnVuY3Rpb24gSChCKXtrLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT0ic3RyaW5nIj09dHlwZW9mIEIsdGhpcy5oYXNoTW9kZT90aGlzW0JdPXRoaXMuX2ZpbmFsT3JEaWdlc3Q6dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGln''@;'; put 'put ''ZXN0LHRoaXMuX2ZpbmFsJiYodGhpcy5fX2ZpbmFsPXRoaXMuX2ZpbmFsLHRoaXMuX2ZpbmFsPW51bGwpLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9lbmNvZGluZz1udWxsfVQoNjY2OTgpKEgsayksSC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEIsTCxLKXsic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IEImJihCPXNlLmZyb20oQixMKSk7dmFyIEo9dGhpcy5fdXBkYXRlKEIpO3JldHVybiB0aGlzLmhhc2hNb2RlP3RoaXM6KEsmJihKPXRoaXMuX3RvU3RyaW5nKEosSykpLEopfSxILnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbigpe30sSC5wcm90b3R5cGUuZ2V0QXV0aFRhZz1m''@;'; put 'put ''dW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxILnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0''@;'; put 'put ''YXRlIil9LEgucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sSC5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihCLEwsSyl7dmFyIEo7dHJ5e3RoaXMuaGFzaE1vZGU/dGhpcy5f''@;'; put 'put ''dXBkYXRlKEIpOnRoaXMucHVzaCh0aGlzLl91cGRhdGUoQikpfWNhdGNoKEkpe0o9SX1maW5hbGx5e0soSil9fSxILnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oQil7dmFyIEw7dHJ5e3RoaXMucHVzaCh0aGlzLl9fZmluYWwoKSl9Y2F0Y2goSyl7TD1LfUIoTCl9LEgucHJvdG90eXBlLl9m''@;'; put 'put ''aW5hbE9yRGlnZXN0PWZ1bmN0aW9uKEIpe3ZhciBMPXRoaXMuX19maW5hbCgpfHxzZS5hbGxvYygwKTtyZXR1cm4gQiYmKEw9dGhpcy5fdG9TdHJpbmcoTCxCLCEwKSksTH0sSC5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKEIsTCxLKXtpZih0aGlzLl9kZWNvZGVyfHwodGhpcy5fZGVj''@;'; put 'put ''b2Rlcj1uZXcgdihMKSx0aGlzLl9lbmNvZGluZz1MKSx0aGlzLl9lbmNvZGluZyE9PUwpdGhyb3cgbmV3IEVycm9yKCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzIik7dmFyIEo9dGhpcy5fZGVjb2Rlci53cml0ZShCKTtyZXR1cm4gSyYmKEorPXRoaXMuX2RlY29kZXIuZW5kKCkpLEp9LFdlLmV4''@;'; put 'put ''cG9ydHM9SH0sMzg4NDA6KFdlLHplLFQpPT57dmFyIHNlPVQoODg2NTEpLGs9VCgzMTg1KTtXZS5leHBvcnRzPWZ1bmN0aW9uKEwpe3JldHVybiBuZXcgaGUoTCl9O3ZhciB2PXtzZWNwMjU2azE6e25hbWU6InNlY3AyNTZrMSIsYnl0ZUxlbmd0aDozMn0sc2VjcDIyNHIxOntuYW1lOiJwMjI0''@;'; put 'put ''IixieXRlTGVuZ3RoOjI4fSxwcmltZTI1NnYxOntuYW1lOiJwMjU2IixieXRlTGVuZ3RoOjMyfSxwcmltZTE5MnYxOntuYW1lOiJwMTkyIixieXRlTGVuZ3RoOjI0fSxlZDI1NTE5OntuYW1lOiJlZDI1NTE5IixieXRlTGVuZ3RoOjMyfSxzZWNwMzg0cjE6e25hbWU6InAzODQiLGJ5dGVMZW5n''@;'; put 'put ''dGg6NDh9LHNlY3A1MjFyMTp7bmFtZToicDUyMSIsYnl0ZUxlbmd0aDo2Nn19O2Z1bmN0aW9uIGhlKEIpe3RoaXMuY3VydmVUeXBlPXZbQl0sdGhpcy5jdXJ2ZVR5cGV8fCh0aGlzLmN1cnZlVHlwZT17bmFtZTpCfSksdGhpcy5jdXJ2ZT1uZXcgc2UuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSks''@;'; put 'put ''dGhpcy5rZXlzPXZvaWQgMH1mdW5jdGlvbiBIKEIsTCxLKXtBcnJheS5pc0FycmF5KEIpfHwoQj1CLnRvQXJyYXkoKSk7dmFyIEo9bmV3IEJ1ZmZlcihCKTtpZihLJiZKLmxlbmd0aDxLKXt2YXIgST1uZXcgQnVmZmVyKEstSi5sZW5ndGgpO0kuZmlsbCgwKSxKPUJ1ZmZlci5jb25jYXQoW0ks''@;'; put 'put ''Sl0pfXJldHVybiBMP0oudG9TdHJpbmcoTCk6Sn12LnAyMjQ9di5zZWNwMjI0cjEsdi5wMjU2PXYuc2VjcDI1NnIxPXYucHJpbWUyNTZ2MSx2LnAxOTI9di5zZWNwMTkycjE9di5wcmltZTE5MnYxLHYucDM4ND12LnNlY3AzODRyMSx2LnA1MjE9di5zZWNwNTIxcjEsaGUucHJvdG90eXBlLmdl''@;'; put 'put ''bmVyYXRlS2V5cz1mdW5jdGlvbihCLEwpe3JldHVybiB0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5nZXRQdWJsaWNLZXkoQixMKX0saGUucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9ZnVuY3Rpb24oQixMLEspe3JldHVybiBMPUx8fCJ1dGY4IixCdWZmZXIuaXNCdWZm''@;'; put 'put ''ZXIoQil8fChCPW5ldyBCdWZmZXIoQixMKSksSCh0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMoQikuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxLLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxoZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0''@;'; put 'put ''aW9uKEIsTCl7dmFyIEs9dGhpcy5rZXlzLmdldFB1YmxpYygiY29tcHJlc3NlZCI9PT1MLCEwKTtyZXR1cm4iaHlicmlkIj09PUwmJihLWzBdPUtbSy5sZW5ndGgtMV0lMj83OjYpLEgoSyxCKX0saGUucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oQil7cmV0dXJuIEgodGhpcy5r''@;'; put 'put ''ZXlzLmdldFByaXZhdGUoKSxCKX0saGUucHJvdG90eXBlLnNldFB1YmxpY0tleT1mdW5jdGlvbihCLEwpe3JldHVybiBMPUx8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoQil8fChCPW5ldyBCdWZmZXIoQixMKSksdGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMoQiksdGhpc30saGUucHJvdG90eXBl''@;'; put 'put ''LnNldFByaXZhdGVLZXk9ZnVuY3Rpb24oQixMKXtMPUx8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoQil8fChCPW5ldyBCdWZmZXIoQixMKSk7dmFyIEs9bmV3IGsoQik7cmV0dXJuIEs9Sy50b1N0cmluZygxNiksdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMua2V5cy5f''@;'; put 'put ''aW1wb3J0UHJpdmF0ZShLKSx0aGlzfX0sMzE4NTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2Usayl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoWSxiKXtpZighWSl0aHJvdyBuZXcgRXJyb3IoYnx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBoZShZLGIpe1kuc3VwZXJfPWI7''@;'; put 'put ''dmFyIHg9ZnVuY3Rpb24oKXt9O3gucHJvdG90eXBlPWIucHJvdG90eXBlLFkucHJvdG90eXBlPW5ldyB4LFkucHJvdG90eXBlLmNvbnN0cnVjdG9yPVl9ZnVuY3Rpb24gSChZLGIseCl7aWYoSC5pc0JOKFkpKXJldHVybiBZO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5s''@;'; put 'put ''ZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1ZJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJih4PWIsYj0xMCksdGhpcy5faW5pdChZfHwwLGJ8fDEwLHh8fCJiZSIpKX12YXIgQjsib2JqZWN0Ij09dHlwZW9mIHNlP3NlLmV4cG9ydHM9SDprLkJOPUgsSC5CTj1ILEgud29yZFNpemU9MjY7''@;'; put 'put ''dHJ5e0I9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOlQoODYyMykuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBMKFksYil7dmFyIHg9WS5jaGFyQ29kZUF0KGIpO3JldHVybiB4Pj02NSYmeDw9NzA/eC01NTp4Pj05NyYmeDw9MTAyP3gt''@;'; put 'put ''ODc6eC00OCYxNX1mdW5jdGlvbiBLKFksYix4KXt2YXIgTj1MKFkseCk7cmV0dXJuIHgtMT49YiYmKE58PUwoWSx4LTEpPDw0KSxOfWZ1bmN0aW9uIEooWSxiLHgsTil7Zm9yKHZhciBGPTAsZz1NYXRoLm1pbihZLmxlbmd0aCx4KSxDPWI7QzxnO0MrKyl7dmFyIE09WS5jaGFyQ29kZUF0KEMp''@;'; put 'put ''LTQ4O0YqPU4sRis9TT49NDk/TS00OSsxMDpNPj0xNz9NLTE3KzEwOk19cmV0dXJuIEZ9SC5pc0JOPWZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgSHx8bnVsbCE9PWImJiJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUgud29yZFNpemUmJkFycmF5''@;'; put 'put ''LmlzQXJyYXkoYi53b3Jkcyl9LEgubWF4PWZ1bmN0aW9uKGIseCl7cmV0dXJuIGIuY21wKHgpPjA/Yjp4fSxILm1pbj1mdW5jdGlvbihiLHgpe3JldHVybiBiLmNtcCh4KTwwP2I6eH0sSC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oYix4LE4pe2lmKCJudW1iZXIiPT10eXBlb2YgYilyZXR1''@;'; put 'put ''cm4gdGhpcy5faW5pdE51bWJlcihiLHgsTik7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXJldHVybiB0aGlzLl9pbml0QXJyYXkoYix4LE4pOyJoZXgiPT09eCYmKHg9MTYpLHYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNik7dmFyIEY9MDsiLSI9PT0oYj1iLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMr''@;'; put 'put ''L2csIiIpKVswXSYmKEYrKyx0aGlzLm5lZ2F0aXZlPTEpLEY8Yi5sZW5ndGgmJigxNj09PXg/dGhpcy5fcGFyc2VIZXgoYixGLE4pOih0aGlzLl9wYXJzZUJhc2UoYix4LEYpLCJsZSI9PT1OJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseCxOKSkpfSxILnByb3RvdHlwZS5faW5p''@;'; put 'put ''dE51bWJlcj1mdW5jdGlvbihiLHgsTil7YjwwJiYodGhpcy5uZWdhdGl2ZT0xLGI9LWIpLGI8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmJdLHRoaXMubGVuZ3RoPTEpOmI8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYz''@;'; put 'put ''XSx0aGlzLmxlbmd0aD0yKToodihiPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09TiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsTil9LEgucHJvdG90eXBlLl9pbml0''@;'; put 'put ''QXJyYXk9ZnVuY3Rpb24oYix4LE4pe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiLmxlbmd0aCksYi5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoYi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhp''@;'; put 'put ''cy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09MDt2YXIgZyxDLE09MDtpZigiYmUiPT09Tilmb3IoRj1iLmxlbmd0aC0xLGc9MDtGPj0wO0YtPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltGXXxiW0YtMV08PDh8YltGLTJdPDwxNik8PE0mNjcxMDg4''@;'; put 'put ''NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1NJjY3MTA4ODYzLChNKz0yNCk+PTI2JiYoTS09MjYsZysrKTtlbHNlIGlmKCJsZSI9PT1OKWZvcihGPTAsZz0wO0Y8Yi5sZW5ndGg7Ris9Myl0aGlzLndvcmRzW2ddfD0oQz1iW0ZdfGJbRisxXTw8OHxiW0YrMl08PDE2KTw8TSY2NzEwODg2Myx0''@;'; put 'put ''aGlzLndvcmRzW2crMV09Qz4+PjI2LU0mNjcxMDg4NjMsKE0rPTI0KT49MjYmJihNLT0yNixnKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihiLHgsTil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChiLmxlbmd0aC14KS82KSx0aGlzLndvcmRz''@;'; put 'put ''PW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBGPTA7Rjx0aGlzLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT0wO3ZhciBNLGc9MCxDPTA7aWYoImJlIj09PU4pZm9yKEY9Yi5sZW5ndGgtMTtGPj14O0YtPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+''@;'; put 'put ''PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7ZWxzZSBmb3IoRj0oYi5sZW5ndGgteCklMj09MD94KzE6eDtGPGIubGVuZ3RoO0YrPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1N''@;'; put 'put ''Pj4+MjYpOmcrPTg7dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGIseCxOKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgRj0wLGc9MTtnPD02NzEwODg2MztnKj14KUYrKztGLS0sZz1nL3h8MDtmb3IodmFyIEM9Yi5sZW5ndGgtTixN''@;'; put 'put ''PUMlRix5PU1hdGgubWluKEMsQy1NKStOLHA9MCxTPU47Uzx5O1MrPUYpcD1KKGIsUyxTK0YseCksdGhpcy5pbXVsbihnKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09TSl7dmFyIFE9MTtmb3IocD1KKGIsUyxiLmxlbmd0''@;'; put 'put ''aCx4KSxTPTA7UzxNO1MrKylRKj14O3RoaXMuaW11bG4oUSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGIpe2Iud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3Ro''@;'; put 'put ''KTtmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoO3grKyliLndvcmRzW3hdPXRoaXMud29yZHNbeF07Yi5sZW5ndGg9dGhpcy5sZW5ndGgsYi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGIucmVkPXRoaXMucmVkfSxILnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyBIKG51bGwp''@;'; put 'put ''O3JldHVybiB0aGlzLmNvcHkoYiksYn0sSC5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGI7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sSC5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEm''@;'; put 'put ''JjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxILnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCks''@;'; put 'put ''dGhpc30sSC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgST1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAiXSxSPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLEU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0''@;'; put 'put ''MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwy''@;'; put 'put ''MDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gaihZLGIseCl7eC5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlkubmVnYXRpdmU7dmFyIE49WS5sZW5ndGgrYi5sZW5ndGh8MDt4Lmxlbmd0aD1OLE49Ti0xfDA7''@;'; put 'put ''dmFyIEY9MHxZLndvcmRzWzBdLGc9MHxiLndvcmRzWzBdLEM9RipnLHk9Qy82NzEwODg2NHwwO3gud29yZHNbMF09NjcxMDg4NjMmQztmb3IodmFyIHA9MTtwPE47cCsrKXtmb3IodmFyIFM9eT4+PjI2LFE9NjcxMDg4NjMmeSxyZT1NYXRoLm1pbihwLGIubGVuZ3RoLTEpLGZlPU1hdGgubWF4''@;'; put 'put ''KDAscC1ZLmxlbmd0aCsxKTtmZTw9cmU7ZmUrKylTKz0oQz0oRj0wfFkud29yZHNbcC1mZXwwXSkqKGc9MHxiLndvcmRzW2ZlXSkrUSkvNjcxMDg4NjR8MCxRPTY3MTA4ODYzJkM7eC53b3Jkc1twXT0wfFEseT0wfFN9cmV0dXJuIDAhPT15P3gud29yZHNbcF09MHx5OngubGVuZ3RoLS0seC5z''@;'; put 'put ''dHJpcCgpfUgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGIseCl7dmFyIE47aWYoeD0wfHh8fDEsMTY9PT0oYj1ifHwxMCl8fCJoZXgiPT09Yil7Tj0iIjtmb3IodmFyIEY9MCxnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLndvcmRzW0NdLHk9KDE2Nzc3MjE1JihN''@;'; put 'put ''PDxGfGcpKS50b1N0cmluZygxNik7Tj0wIT0oZz1NPj4+MjQtRiYxNjc3NzIxNSl8fEMhPT10aGlzLmxlbmd0aC0xP0lbNi15Lmxlbmd0aF0reStOOnkrTiwoRis9Mik+PTI2JiYoRi09MjYsQy0tKX1mb3IoMCE9PWcmJihOPWcudG9TdHJpbmcoMTYpK04pO04ubGVuZ3RoJXghPTA7KU49IjAi''@;'; put 'put ''K047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn1pZihiPT09KDB8YikmJmI+PTImJmI8PTM2KXt2YXIgcD1SW2JdLFM9RVtiXTtOPSIiO3ZhciBRPXRoaXMuY2xvbmUoKTtmb3IoUS5uZWdhdGl2ZT0wOyFRLmlzWmVybygpOyl7dmFyIHJlPVEubW9kbihTKS50b1N0cmlu''@;'; put 'put ''ZyhiKTtOPShRPVEuaWRpdm4oUykpLmlzWmVybygpP3JlK046SVtwLXJlLmxlbmd0aF0rcmUrTn1mb3IodGhpcy5pc1plcm8oKSYmKE49IjAiK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn12KCExLCJCYXNlIHNob3VsZCBi''@;'; put 'put ''ZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEgucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2IrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9iKz00NTAz''@;'; put 'put ''NTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmdighMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWI6Yn0sSC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMudG9TdHJpbmcoMTYpfSxILnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihiLHgpe3JldHVybiB2KHR5cGVvZiBCPCJ1IiksdGhpcy50b0FycmF5TGlrZShCLGIseCl9LEgucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxi''@;'; put 'put ''LHgpfSxILnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihiLHgsTil7dmFyIEY9dGhpcy5ieXRlTGVuZ3RoKCksZz1OfHxNYXRoLm1heCgxLEYpO3YoRjw9ZywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHYoZz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3Ro''@;'; put 'put ''IDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHkscCxDPSJsZSI9PT14LE09bmV3IGIoZyksUz10aGlzLmNsb25lKCk7aWYoQyl7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtwXT15O2Zvcig7cDxnO3ArKylNW3BdPTB9ZWxzZXtmb3IocD0wO3A8''@;'; put 'put ''Zy1GO3ArKylNW3BdPTA7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtnLXAtMV09eX1yZXR1cm4gTX0sSC5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGIpe3JldHVybiAzMi1NYXRoLmNsejMyKGIpfTpmdW5jdGlv''@;'; put 'put ''bihiKXt2YXIgeD1iLE49MDtyZXR1cm4geD49NDA5NiYmKE4rPTEzLHg+Pj49MTMpLHg+PTY0JiYoTis9Nyx4Pj4+PTcpLHg+PTgmJihOKz00LHg+Pj49NCkseD49MiYmKE4rPTIseD4+Pj0yKSxOK3h9LEgucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihiKXtpZigwPT09YilyZXR1cm4g''@;'; put 'put ''MjY7dmFyIHg9YixOPTA7cmV0dXJuIDgxOTEmeHx8KE4rPTEzLHg+Pj49MTMpLDEyNyZ4fHwoTis9Nyx4Pj4+PTcpLDE1Jnh8fChOKz00LHg+Pj49NCksMyZ4fHwoTis9Mix4Pj4+PTIpLDEmeHx8TisrLE59LEgucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX2Nv''@;'; put 'put ''dW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3h9LEgucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGI9MCx4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBOPXRo''@;'; put 'put ''aXMuX3plcm9CaXRzKHRoaXMud29yZHNbeF0pO2lmKGIrPU4sMjYhPT1OKWJyZWFrfXJldHVybiBifSxILnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxILnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYil7cmV0''@;'; put 'put ''dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oYikuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxILnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy50ZXN0bihiLTEpP3RoaXMubm90bihiKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxI''@;'; put 'put ''LnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sSC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEgucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMu''@;'; put 'put ''bmVnYXRpdmVePTEpLHRoaXN9LEgucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgeD0wO3g8Yi5sZW5ndGg7eCsrKXRoaXMud29yZHNbeF09dGhpcy53b3Jkc1t4XXxiLndvcmRz''@;'; put 'put ''W3hdO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxILnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhp''@;'; put 'put ''cy5jbG9uZSgpLmlvcihiKTpiLmNsb25lKCkuaW9yKHRoaXMpfSxILnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxILnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihi''@;'; put 'put ''KXt2YXIgeDt4PXRoaXMubGVuZ3RoPmIubGVuZ3RoP2I6dGhpcztmb3IodmFyIE49MDtOPHgubGVuZ3RoO04rKyl0aGlzLndvcmRzW05dPXRoaXMud29yZHNbTl0mYi53b3Jkc1tOXTtyZXR1cm4gdGhpcy5sZW5ndGg9eC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pYW5kPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5kKGIpfSxILnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxI''@;'; put 'put ''LnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxILnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgeCxOO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyh4PXRo''@;'; put 'put ''aXMsTj1iKTooeD1iLE49dGhpcyk7Zm9yKHZhciBGPTA7RjxOLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT14LndvcmRzW0ZdXk4ud29yZHNbRl07aWYodGhpcyE9PXgpZm9yKDtGPHgubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXgud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPXgubGVu''@;'; put 'put ''Z3RoLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihiKX0sSC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNs''@;'; put 'put ''b25lKCkuaXhvcihiKTpiLmNsb25lKCkuaXhvcih0aGlzKX0sSC5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGIpOmIuY2xvbmUoKS5pdXhvcih0aGlzKX0sSC5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24o''@;'; put 'put ''Yil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciB4PTB8TWF0aC5jZWlsKGIvMjYpLE49YiUyNjt0aGlzLl9leHBhbmQoeCksTj4wJiZ4LS07Zm9yKHZhciBGPTA7Rjx4O0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJn50aGlzLndvcmRzW0ZdO3JldHVybiBOPjAmJih0aGlzLndv''@;'; put 'put ''cmRzW0ZdPX50aGlzLndvcmRzW0ZdJjY3MTA4ODYzPj4yNi1OKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihiKX0sSC5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihiLHgpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZi''@;'; put 'put ''Pj0wKTt2YXIgTj1iLzI2fDAsRj1iJTI2O3JldHVybiB0aGlzLl9leHBhbmQoTisxKSx0aGlzLndvcmRzW05dPXg/dGhpcy53b3Jkc1tOXXwxPDxGOnRoaXMud29yZHNbTl0mfigxPDxGKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYil7dmFyIHgsTixGO2lmKDAh''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHg9dGhpcy5pc3ViKGIpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIGIubmVnYXRpdmU9MCx4PXRo''@;'; put 'put ''aXMuaXN1YihiKSxiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oTj10aGlzLEY9Yik6KE49YixGPXRoaXMpO2Zvcih2YXIgZz0wLEM9MDtDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJih4PSgwfE4ud29yZHNbQ10pKygwfEYud29y''@;'; put 'put ''ZHNbQ10pK2cpLGc9eD4+PjI2O2Zvcig7MCE9PWcmJkM8Ti5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKHg9KDB8Ti53b3Jkc1tDXSkrZyksZz14Pj4+MjY7aWYodGhpcy5sZW5ndGg9Ti5sZW5ndGgsMCE9PWcpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Zyx0aGlzLmxlbmd0''@;'; put 'put ''aCsrO2Vsc2UgaWYoTiE9PXRoaXMpZm9yKDtDPE4ubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPU4ud29yZHNbQ107cmV0dXJuIHRoaXN9LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiKXt2YXIgeDtyZXR1cm4gMCE9PWIubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhiLm5lZ2F0aXZl''@;'; put 'put ''PTAseD10aGlzLnN1YihiKSxiLm5lZ2F0aXZlXj0xLHgpOjA9PT1iLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHg9Yi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHgpOnRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGIpOmIuY2xv''@;'; put 'put ''bmUoKS5pYWRkKHRoaXMpfSxILnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIpe2lmKDAhPT1iLm5lZ2F0aXZlKXtiLm5lZ2F0aXZlPTA7dmFyIHg9dGhpcy5pYWRkKGIpO3JldHVybiBiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0wLHRoaXMuaWFkZChiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgRixnLE49dGhpcy5jbXAoYik7aWYoMD09PU4pcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO04+MD8oRj10aGlzLGc9Yik6KEY9''@;'; put 'put ''YixnPXRoaXMpO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKylDPSh4PSgwfEYud29yZHNbTV0pLSgwfGcud29yZHNbTV0pK0MpPj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJng7Zm9yKDswIT09QyYmTTxGLmxlbmd0aDtNKyspQz0oeD0oMHxGLndvcmRzW01dKStDKT4+MjYsdGhp''@;'; put 'put ''cy53b3Jkc1tNXT02NzEwODg2MyZ4O2lmKDA9PT1DJiZNPEYubGVuZ3RoJiZGIT09dGhpcylmb3IoO008Ri5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Ri53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsTSksRiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTEpLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihiKX07dmFyIFY9ZnVuY3Rpb24oYix4LE4pe3ZhciB5LHAsUyxGPWIud29yZHMsZz14LndvcmRzLEM9Ti53b3JkcyxNPTAsUT0wfEZbMF0scmU9ODE5MSZRLGZlPVE+''@;'; put 'put ''Pj4xMyxtZT0wfEZbMV0sa2U9ODE5MSZtZSxUZT1tZT4+PjEzLFBlPTB8RlsyXSxGZT04MTkxJlBlLE5lPVBlPj4+MTMsTGU9MHxGWzNdLEJlPTgxOTEmTGUsSGU9TGU+Pj4xMyxRZT0wfEZbNF0sbXQ9ODE5MSZRZSxLZT1RZT4+PjEzLHdlPTB8Rls1XSxJZT04MTkxJndlLE9lPXdlPj4+MTMs''@;'; put 'put ''ZXQ9MHxGWzZdLG50PTgxOTEmZXQscWU9ZXQ+Pj4xMyxodD0wfEZbN10sRWU9ODE5MSZodCxEZT1odD4+PjEzLCRlPTB8Rls4XSxhdD04MTkxJiRlLGN0PSRlPj4+MTMsT3Q9MHxGWzldLFB0PTgxOTEmT3QsQXQ9T3Q+Pj4xMyxKdD0wfGdbMF0sbW49ODE5MSZKdCxOdD1KdD4+PjEzLGJuPTB8''@;'; put 'put ''Z1sxXSxHbj04MTkxJmJuLG9uPWJuPj4+MTMsJG49MHxnWzJdLE5uPTgxOTEmJG4scHQ9JG4+Pj4xMyxwbj0wfGdbM10saG49ODE5MSZwbixDdD1wbj4+PjEzLGVuPTB8Z1s0XSxfdD04MTkxJmVuLFZ0PWVuPj4+MTMsX249MHxnWzVdLG90PTgxOTEmX24sSXQ9X24+Pj4xMyxubj0wfGdbNl0s''@;'; put 'put ''RHQ9ODE5MSZubix2dD1ubj4+PjEzLEd0PTB8Z1s3XSxMbj04MTkxJkd0LHp0PUd0Pj4+MTMsTW49MHxnWzhdLFRuPTgxOTEmTW4sc249TW4+Pj4xMyxCbj0wfGdbOV0sRm49ODE5MSZCbixxdD1Cbj4+PjEzO04ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPTE5O3Zh''@;'; put 'put ''ciBIbj0oTSsoeT1NYXRoLmltdWwocmUsbW4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKHJlLE50KSkrTWF0aC5pbXVsKGZlLG1uKXwwKSk8PDEzKXwwO009KChTPU1hdGguaW11bChmZSxOdCkpKyhwPj4+MTMpfDApKyhIbj4+PjI2KXwwLEhuJj02NzEwODg2Myx5PU1hdGguaW11bChr''@;'; put 'put ''ZSxtbikscD0ocD1NYXRoLmltdWwoa2UsTnQpKStNYXRoLmltdWwoVGUsbW4pfDAsUz1NYXRoLmltdWwoVGUsTnQpO3ZhciBpaT0oTSsoeT15K01hdGguaW11bChyZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLG9uKXwwKStNYXRoLmltdWwoZmUsR24pfDApKTw8MTMp''@;'; put 'put ''fDA7TT0oKFM9UytNYXRoLmltdWwoZmUsb24pfDApKyhwPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2Myx5PU1hdGguaW11bChGZSxtbikscD0ocD1NYXRoLmltdWwoRmUsTnQpKStNYXRoLmltdWwoTmUsbW4pfDAsUz1NYXRoLmltdWwoTmUsTnQpLHk9eStNYXRoLmltdWwoa2Us''@;'; put 'put ''R24pfDAscD0ocD1wK01hdGguaW11bChrZSxvbil8MCkrTWF0aC5pbXVsKFRlLEduKXwwLFM9UytNYXRoLmltdWwoVGUsb24pfDA7dmFyIGNuPShNKyh5PXkrTWF0aC5pbXVsKHJlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUscHQpfDApK01hdGguaW11bChmZSxObil8''@;'; put 'put ''MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxwdCl8MCkrKHA+Pj4xMyl8MCkrKGNuPj4+MjYpfDAsY24mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEJlLG1uKSxwPShwPU1hdGguaW11bChCZSxOdCkpK01hdGguaW11bChIZSxtbil8MCxTPU1hdGguaW11bChIZSxOdCkseT15K01hdGgu''@;'; put 'put ''aW11bChGZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLG9uKXwwKStNYXRoLmltdWwoTmUsR24pfDAsUz1TK01hdGguaW11bChOZSxvbil8MCx5PXkrTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UscHQpfDApK01hdGguaW11bChUZSxObil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KFRlLHB0KXwwO3ZhciBqbj0oTSsoeT15K01hdGguaW11bChyZSxobil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLEN0KXwwKStNYXRoLmltdWwoZmUsaG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsQ3QpfDApKyhwPj4+MTMpfDApKyhqbj4+PjI2KXwwLGpu''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChtdCxtbikscD0ocD1NYXRoLmltdWwobXQsTnQpKStNYXRoLmltdWwoS2UsbW4pfDAsUz1NYXRoLmltdWwoS2UsTnQpLHk9eStNYXRoLmltdWwoQmUsR24pfDAscD0ocD1wK01hdGguaW11bChCZSxvbil8MCkrTWF0aC5pbXVsKEhlLEduKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoSGUsb24pfDAseT15K01hdGguaW11bChGZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHB0KXwwKStNYXRoLmltdWwoTmUsTm4pfDAsUz1TK01hdGguaW11bChOZSxwdCl8MCx5PXkrTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsQ3QpfDApK01hdGgu''@;'; put 'put ''aW11bChUZSxobil8MCxTPVMrTWF0aC5pbXVsKFRlLEN0KXwwO3ZhciBYcj0oTSsoeT15K01hdGguaW11bChyZSxfdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLFZ0KXwwKStNYXRoLmltdWwoZmUsX3QpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsVnQpfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhYcj4+PjI2KXwwLFhyJj02NzEwODg2Myx5PU1hdGguaW11bChJZSxtbikscD0ocD1NYXRoLmltdWwoSWUsTnQpKStNYXRoLmltdWwoT2UsbW4pfDAsUz1NYXRoLmltdWwoT2UsTnQpLHk9eStNYXRoLmltdWwobXQsR24pfDAscD0ocD1wK01hdGguaW11bChtdCxvbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEtlLEduKXwwLFM9UytNYXRoLmltdWwoS2Usb24pfDAseT15K01hdGguaW11bChCZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHB0KXwwKStNYXRoLmltdWwoSGUsTm4pfDAsUz1TK01hdGguaW11bChIZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEZlLGhuKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoRmUsQ3QpfDApK01hdGguaW11bChOZSxobil8MCxTPVMrTWF0aC5pbXVsKE5lLEN0KXwwLHk9eStNYXRoLmltdWwoa2UsX3QpfDAscD0ocD1wK01hdGguaW11bChrZSxWdCl8MCkrTWF0aC5pbXVsKFRlLF90KXwwLFM9UytNYXRoLmltdWwoVGUsVnQpfDA7dmFyIHZpPShN''@;'; put 'put ''Kyh5PXkrTWF0aC5pbXVsKHJlLG90KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsSXQpfDApK01hdGguaW11bChmZSxvdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxJdCl8MCkrKHA+Pj4xMyl8MCkrKHZpPj4+MjYpfDAsdmkmPTY3MTA4ODYzLHk9TWF0aC5p''@;'; put 'put ''bXVsKG50LG1uKSxwPShwPU1hdGguaW11bChudCxOdCkpK01hdGguaW11bChxZSxtbil8MCxTPU1hdGguaW11bChxZSxOdCkseT15K01hdGguaW11bChJZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEllLG9uKXwwKStNYXRoLmltdWwoT2UsR24pfDAsUz1TK01hdGguaW11bChPZSxvbil8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKG10LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwobXQscHQpfDApK01hdGguaW11bChLZSxObil8MCxTPVMrTWF0aC5pbXVsKEtlLHB0KXwwLHk9eStNYXRoLmltdWwoQmUsaG4pfDAscD0ocD1wK01hdGguaW11bChCZSxDdCl8MCkrTWF0aC5pbXVsKEhlLGhuKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoSGUsQ3QpfDAseT15K01hdGguaW11bChGZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLFZ0KXwwKStNYXRoLmltdWwoTmUsX3QpfDAsUz1TK01hdGguaW11bChOZSxWdCl8MCx5PXkrTWF0aC5pbXVsKGtlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsSXQpfDApK01hdGgu''@;'; put 'put ''aW11bChUZSxvdCl8MCxTPVMrTWF0aC5pbXVsKFRlLEl0KXwwO3ZhciBFcj0oTSsoeT15K01hdGguaW11bChyZSxEdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHZ0KXwwKStNYXRoLmltdWwoZmUsRHQpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsdnQpfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhFcj4+PjI2KXwwLEVyJj02NzEwODg2Myx5PU1hdGguaW11bChFZSxtbikscD0ocD1NYXRoLmltdWwoRWUsTnQpKStNYXRoLmltdWwoRGUsbW4pfDAsUz1NYXRoLmltdWwoRGUsTnQpLHk9eStNYXRoLmltdWwobnQsR24pfDAscD0ocD1wK01hdGguaW11bChudCxvbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKHFlLEduKXwwLFM9UytNYXRoLmltdWwocWUsb24pfDAseT15K01hdGguaW11bChJZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEllLHB0KXwwKStNYXRoLmltdWwoT2UsTm4pfDAsUz1TK01hdGguaW11bChPZSxwdCl8MCx5PXkrTWF0aC5pbXVsKG10LGhuKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwobXQsQ3QpfDApK01hdGguaW11bChLZSxobil8MCxTPVMrTWF0aC5pbXVsKEtlLEN0KXwwLHk9eStNYXRoLmltdWwoQmUsX3QpfDAscD0ocD1wK01hdGguaW11bChCZSxWdCl8MCkrTWF0aC5pbXVsKEhlLF90KXwwLFM9UytNYXRoLmltdWwoSGUsVnQpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChGZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEl0KXwwKStNYXRoLmltdWwoTmUsb3QpfDAsUz1TK01hdGguaW11bChOZSxJdCl8MCx5PXkrTWF0aC5pbXVsKGtlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsdnQpfDApK01hdGguaW11bChUZSxEdCl8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KFRlLHZ0KXwwO3ZhciBZaT0oTSsoeT15K01hdGguaW11bChyZSxMbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHp0KXwwKStNYXRoLmltdWwoZmUsTG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsenQpfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlp''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChhdCxtbikscD0ocD1NYXRoLmltdWwoYXQsTnQpKStNYXRoLmltdWwoY3QsbW4pfDAsUz1NYXRoLmltdWwoY3QsTnQpLHk9eStNYXRoLmltdWwoRWUsR24pfDAscD0ocD1wK01hdGguaW11bChFZSxvbil8MCkrTWF0aC5pbXVsKERlLEduKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoRGUsb24pfDAseT15K01hdGguaW11bChudCxObil8MCxwPShwPXArTWF0aC5pbXVsKG50LHB0KXwwKStNYXRoLmltdWwocWUsTm4pfDAsUz1TK01hdGguaW11bChxZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEllLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsQ3QpfDApK01hdGgu''@;'; put 'put ''aW11bChPZSxobil8MCxTPVMrTWF0aC5pbXVsKE9lLEN0KXwwLHk9eStNYXRoLmltdWwobXQsX3QpfDAscD0ocD1wK01hdGguaW11bChtdCxWdCl8MCkrTWF0aC5pbXVsKEtlLF90KXwwLFM9UytNYXRoLmltdWwoS2UsVnQpfDAseT15K01hdGguaW11bChCZSxvdCl8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKEJlLEl0KXwwKStNYXRoLmltdWwoSGUsb3QpfDAsUz1TK01hdGguaW11bChIZSxJdCl8MCx5PXkrTWF0aC5pbXVsKEZlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsdnQpfDApK01hdGguaW11bChOZSxEdCl8MCxTPVMrTWF0aC5pbXVsKE5lLHZ0KXwwLHk9eStNYXRoLmltdWwoa2Us''@;'; put 'put ''TG4pfDAscD0ocD1wK01hdGguaW11bChrZSx6dCl8MCkrTWF0aC5pbXVsKFRlLExuKXwwLFM9UytNYXRoLmltdWwoVGUsenQpfDA7dmFyIEpyPShNKyh5PXkrTWF0aC5pbXVsKHJlLFRuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsc24pfDApK01hdGguaW11bChmZSxUbil8''@;'; put 'put ''MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxzbil8MCkrKHA+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG1uKSxwPShwPU1hdGguaW11bChQdCxOdCkpK01hdGguaW11bChBdCxtbil8MCxTPU1hdGguaW11bChBdCxOdCkseT15K01hdGgu''@;'; put 'put ''aW11bChhdCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LG9uKXwwKStNYXRoLmltdWwoY3QsR24pfDAsUz1TK01hdGguaW11bChjdCxvbil8MCx5PXkrTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscHQpfDApK01hdGguaW11bChEZSxObil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KERlLHB0KXwwLHk9eStNYXRoLmltdWwobnQsaG4pfDAscD0ocD1wK01hdGguaW11bChudCxDdCl8MCkrTWF0aC5pbXVsKHFlLGhuKXwwLFM9UytNYXRoLmltdWwocWUsQ3QpfDAseT15K01hdGguaW11bChJZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLFZ0KXwwKStNYXRoLmltdWwoT2Us''@;'; put 'put ''X3QpfDAsUz1TK01hdGguaW11bChPZSxWdCl8MCx5PXkrTWF0aC5pbXVsKG10LG90KXwwLHA9KHA9cCtNYXRoLmltdWwobXQsSXQpfDApK01hdGguaW11bChLZSxvdCl8MCxTPVMrTWF0aC5pbXVsKEtlLEl0KXwwLHk9eStNYXRoLmltdWwoQmUsRHQpfDAscD0ocD1wK01hdGguaW11bChCZSx2''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKEhlLER0KXwwLFM9UytNYXRoLmltdWwoSGUsdnQpfDAseT15K01hdGguaW11bChGZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHp0KXwwKStNYXRoLmltdWwoTmUsTG4pfDAsUz1TK01hdGguaW11bChOZSx6dCl8MCx5PXkrTWF0aC5pbXVsKGtlLFRuKXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoa2Usc24pfDApK01hdGguaW11bChUZSxUbil8MCxTPVMrTWF0aC5pbXVsKFRlLHNuKXwwO3ZhciBhbz0oTSsoeT15K01hdGguaW11bChyZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHF0KXwwKStNYXRoLmltdWwoZmUsRm4pfDApKTw8MTMp''@;'; put 'put ''fDA7TT0oKFM9UytNYXRoLmltdWwoZmUscXQpfDApKyhwPj4+MTMpfDApKyhhbz4+PjI2KXwwLGFvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxHbikscD0ocD1NYXRoLmltdWwoUHQsb24pKStNYXRoLmltdWwoQXQsR24pfDAsUz1NYXRoLmltdWwoQXQsb24pLHk9eStNYXRoLmltdWwoYXQs''@;'; put 'put ''Tm4pfDAscD0ocD1wK01hdGguaW11bChhdCxwdCl8MCkrTWF0aC5pbXVsKGN0LE5uKXwwLFM9UytNYXRoLmltdWwoY3QscHQpfDAseT15K01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLEN0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsUz1TK01hdGguaW11bChEZSxDdCl8''@;'; put 'put ''MCx5PXkrTWF0aC5pbXVsKG50LF90KXwwLHA9KHA9cCtNYXRoLmltdWwobnQsVnQpfDApK01hdGguaW11bChxZSxfdCl8MCxTPVMrTWF0aC5pbXVsKHFlLFZ0KXwwLHk9eStNYXRoLmltdWwoSWUsb3QpfDAscD0ocD1wK01hdGguaW11bChJZSxJdCl8MCkrTWF0aC5pbXVsKE9lLG90KXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoT2UsSXQpfDAseT15K01hdGguaW11bChtdCxEdCl8MCxwPShwPXArTWF0aC5pbXVsKG10LHZ0KXwwKStNYXRoLmltdWwoS2UsRHQpfDAsUz1TK01hdGguaW11bChLZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEJlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsenQpfDApK01h''@;'; put 'put ''dGguaW11bChIZSxMbil8MCxTPVMrTWF0aC5pbXVsKEhlLHp0KXwwLHk9eStNYXRoLmltdWwoRmUsVG4pfDAscD0ocD1wK01hdGguaW11bChGZSxzbil8MCkrTWF0aC5pbXVsKE5lLFRuKXwwLFM9UytNYXRoLmltdWwoTmUsc24pfDA7dmFyIEJyPShNKyh5PXkrTWF0aC5pbXVsKGtlLEZuKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoa2UscXQpfDApK01hdGguaW11bChUZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChUZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LE5uKSxwPShwPU1hdGguaW11''@;'; put 'put ''bChQdCxwdCkpK01hdGguaW11bChBdCxObil8MCxTPU1hdGguaW11bChBdCxwdCkseT15K01hdGguaW11bChhdCxobil8MCxwPShwPXArTWF0aC5pbXVsKGF0LEN0KXwwKStNYXRoLmltdWwoY3QsaG4pfDAsUz1TK01hdGguaW11bChjdCxDdCl8MCx5PXkrTWF0aC5pbXVsKEVlLF90KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoRWUsVnQpfDApK01hdGguaW11bChEZSxfdCl8MCxTPVMrTWF0aC5pbXVsKERlLFZ0KXwwLHk9eStNYXRoLmltdWwobnQsb3QpfDAscD0ocD1wK01hdGguaW11bChudCxJdCl8MCkrTWF0aC5pbXVsKHFlLG90KXwwLFM9UytNYXRoLmltdWwocWUsSXQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChJZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLHZ0KXwwKStNYXRoLmltdWwoT2UsRHQpfDAsUz1TK01hdGguaW11bChPZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG10LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsenQpfDApK01hdGguaW11bChLZSxMbil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKEtlLHp0KXwwLHk9eStNYXRoLmltdWwoQmUsVG4pfDAscD0ocD1wK01hdGguaW11bChCZSxzbil8MCkrTWF0aC5pbXVsKEhlLFRuKXwwLFM9UytNYXRoLmltdWwoSGUsc24pfDA7dmFyIEppPShNKyh5PXkrTWF0aC5pbXVsKEZlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRmUscXQpfDApK01hdGguaW11bChOZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChOZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LGhuKSxwPShwPU1hdGguaW11bChQdCxDdCkpK01hdGguaW11bChBdCxobil8''@;'; put 'put ''MCxTPU1hdGguaW11bChBdCxDdCkseT15K01hdGguaW11bChhdCxfdCl8MCxwPShwPXArTWF0aC5pbXVsKGF0LFZ0KXwwKStNYXRoLmltdWwoY3QsX3QpfDAsUz1TK01hdGguaW11bChjdCxWdCl8MCx5PXkrTWF0aC5pbXVsKEVlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSXQpfDApK01h''@;'; put 'put ''dGguaW11bChEZSxvdCl8MCxTPVMrTWF0aC5pbXVsKERlLEl0KXwwLHk9eStNYXRoLmltdWwobnQsRHQpfDAscD0ocD1wK01hdGguaW11bChudCx2dCl8MCkrTWF0aC5pbXVsKHFlLER0KXwwLFM9UytNYXRoLmltdWwocWUsdnQpfDAseT15K01hdGguaW11bChJZSxMbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEllLHp0KXwwKStNYXRoLmltdWwoT2UsTG4pfDAsUz1TK01hdGguaW11bChPZSx6dCl8MCx5PXkrTWF0aC5pbXVsKG10LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsc24pfDApK01hdGguaW11bChLZSxUbil8MCxTPVMrTWF0aC5pbXVsKEtlLHNuKXwwO3ZhciB0bz0oTSsoeT15''@;'; put 'put ''K01hdGguaW11bChCZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEJlLHF0KXwwKStNYXRoLmltdWwoSGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoSGUscXQpfDApKyhwPj4+MTMpfDApKyh0bz4+PjI2KXwwLHRvJj02NzEwODg2Myx5PU1hdGguaW11bChQ''@;'; put 'put ''dCxfdCkscD0ocD1NYXRoLmltdWwoUHQsVnQpKStNYXRoLmltdWwoQXQsX3QpfDAsUz1NYXRoLmltdWwoQXQsVnQpLHk9eStNYXRoLmltdWwoYXQsb3QpfDAscD0ocD1wK01hdGguaW11bChhdCxJdCl8MCkrTWF0aC5pbXVsKGN0LG90KXwwLFM9UytNYXRoLmltdWwoY3QsSXQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChFZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLHZ0KXwwKStNYXRoLmltdWwoRGUsRHQpfDAsUz1TK01hdGguaW11bChEZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG50LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsenQpfDApK01hdGguaW11bChxZSxMbil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHFlLHp0KXwwLHk9eStNYXRoLmltdWwoSWUsVG4pfDAscD0ocD1wK01hdGguaW11bChJZSxzbil8MCkrTWF0aC5pbXVsKE9lLFRuKXwwLFM9UytNYXRoLmltdWwoT2Usc24pfDA7dmFyIGNvPShNKyh5PXkrTWF0aC5pbXVsKG10LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwobXQscXQpfDApK01hdGguaW11bChLZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChLZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG90KSxwPShwPU1hdGguaW11bChQdCxJdCkpK01hdGguaW11bChBdCxvdCl8''@;'; put 'put ''MCxTPU1hdGguaW11bChBdCxJdCkseT15K01hdGguaW11bChhdCxEdCl8MCxwPShwPXArTWF0aC5pbXVsKGF0LHZ0KXwwKStNYXRoLmltdWwoY3QsRHQpfDAsUz1TK01hdGguaW11bChjdCx2dCl8MCx5PXkrTWF0aC5pbXVsKEVlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsenQpfDApK01h''@;'; put 'put ''dGguaW11bChEZSxMbil8MCxTPVMrTWF0aC5pbXVsKERlLHp0KXwwLHk9eStNYXRoLmltdWwobnQsVG4pfDAscD0ocD1wK01hdGguaW11bChudCxzbil8MCkrTWF0aC5pbXVsKHFlLFRuKXwwLFM9UytNYXRoLmltdWwocWUsc24pfDA7dmFyIGxvPShNKyh5PXkrTWF0aC5pbXVsKEllLEZuKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoSWUscXQpfDApK01hdGguaW11bChPZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChPZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LER0KSxwPShwPU1hdGguaW11''@;'; put 'put ''bChQdCx2dCkpK01hdGguaW11bChBdCxEdCl8MCxTPU1hdGguaW11bChBdCx2dCkseT15K01hdGguaW11bChhdCxMbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHp0KXwwKStNYXRoLmltdWwoY3QsTG4pfDAsUz1TK01hdGguaW11bChjdCx6dCl8MCx5PXkrTWF0aC5pbXVsKEVlLFRuKXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoRWUsc24pfDApK01hdGguaW11bChEZSxUbil8MCxTPVMrTWF0aC5pbXVsKERlLHNuKXwwO3ZhciBzbz0oTSsoeT15K01hdGguaW11bChudCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG50LHF0KXwwKStNYXRoLmltdWwocWUsRm4pfDApKTw8MTMp''@;'; put 'put ''fDA7TT0oKFM9UytNYXRoLmltdWwocWUscXQpfDApKyhwPj4+MTMpfDApKyhzbz4+PjI2KXwwLHNvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxMbikscD0ocD1NYXRoLmltdWwoUHQsenQpKStNYXRoLmltdWwoQXQsTG4pfDAsUz1NYXRoLmltdWwoQXQsenQpLHk9eStNYXRoLmltdWwoYXQs''@;'; put 'put ''VG4pfDAscD0ocD1wK01hdGguaW11bChhdCxzbil8MCkrTWF0aC5pbXVsKGN0LFRuKXwwLFM9UytNYXRoLmltdWwoY3Qsc24pfDA7dmFyIFhpPShNKyh5PXkrTWF0aC5pbXVsKEVlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRWUscXQpfDApK01hdGguaW11bChEZSxGbil8''@;'; put 'put ''MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChEZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LFRuKSxwPShwPU1hdGguaW11bChQdCxzbikpK01hdGguaW11bChBdCxUbil8MCxTPU1hdGguaW11bChBdCxzbik7dmFyIHBvPShN''@;'; put 'put ''Kyh5PXkrTWF0aC5pbXVsKGF0LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoYXQscXQpfDApK01hdGguaW11bChjdCxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChjdCxxdCl8MCkrKHA+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzO3ZhciBfcj0o''@;'; put 'put ''TSsoeT1NYXRoLmltdWwoUHQsRm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKFB0LHF0KSkrTWF0aC5pbXVsKEF0LEZuKXwwKSk8PDEzKXwwO3JldHVybiBNPSgoUz1NYXRoLmltdWwoQXQscXQpKSsocD4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMsQ1swXT1IbixDWzFd''@;'; put 'put ''PWlpLENbMl09Y24sQ1szXT1qbixDWzRdPVhyLENbNV09dmksQ1s2XT1FcixDWzddPVlpLENbOF09SnIsQ1s5XT1hbyxDWzEwXT1CcixDWzExXT1KaSxDWzEyXT10byxDWzEzXT1jbyxDWzE0XT1sbyxDWzE1XT1zbyxDWzE2XT1YaSxDWzE3XT1wbyxDWzE4XT1fciwwIT09TSYmKENbMTldPU0s''@;'; put 'put ''Ti5sZW5ndGgrKyksTn07ZnVuY3Rpb24gVyhZLGIseCl7cmV0dXJuKG5ldyBVKS5tdWxwKFksYix4KX1mdW5jdGlvbiBVKFksYil7dGhpcy54PVksdGhpcy55PWJ9TWF0aC5pbXVsfHwoVj1qKSxILnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihiLHgpe3ZhciBOLEY9dGhpcy5sZW5ndGgrYi5s''@;'; put 'put ''ZW5ndGg7cmV0dXJuIE49MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1iLmxlbmd0aD9WKHRoaXMsYix4KTpGPDYzP2oodGhpcyxiLHgpOkY8MTAyND9mdW5jdGlvbiBHKFksYix4KXt4Lm5lZ2F0aXZlPWIubmVnYXRpdmVeWS5uZWdhdGl2ZSx4Lmxlbmd0aD1ZLmxlbmd0aCtiLmxlbmd0aDtmb3Io''@;'; put 'put ''dmFyIE49MCxGPTAsZz0wO2c8eC5sZW5ndGgtMTtnKyspe3ZhciBDPUY7Rj0wO2Zvcih2YXIgTT02NzEwODg2MyZOLHk9TWF0aC5taW4oZyxiLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsZy1ZLmxlbmd0aCsxKTtwPD15O3ArKyl7dmFyIGZlPSgwfFkud29yZHNbZy1wXSkqKDB8Yi53b3Jkc1tw''@;'; put 'put ''XSksbWU9NjcxMDg4NjMmZmU7TT02NzEwODg2MyYobWU9bWUrTXwwKSxGKz0oQz0oQz1DKyhmZS82NzEwODg2NHwwKXwwKSsobWU+Pj4yNil8MCk+Pj4yNixDJj02NzEwODg2M314LndvcmRzW2ddPU0sTj1DLEM9Rn1yZXR1cm4gMCE9PU4/eC53b3Jkc1tnXT1OOngubGVuZ3RoLS0seC5zdHJp''@;'; put 'put ''cCgpfSh0aGlzLGIseCk6Vyh0aGlzLGIseCksTn0sVS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihiKXtmb3IodmFyIHg9bmV3IEFycmF5KGIpLE49SC5wcm90b3R5cGUuX2NvdW50Qml0cyhiKS0xLEY9MDtGPGI7RisrKXhbRl09dGhpcy5yZXZCaW4oRixOLGIpO3JldHVybiB4fSxVLnBy''@;'; put 'put ''b3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oYix4LE4pe2lmKDA9PT1ifHxiPT09Ti0xKXJldHVybiBiO2Zvcih2YXIgRj0wLGc9MDtnPHg7ZysrKUZ8PSgxJmIpPDx4LWctMSxiPj49MTtyZXR1cm4gRn0sVS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihiLHgsTixGLGcsQyl7Zm9yKHZhciBN''@;'; put 'put ''PTA7TTxDO00rKylGW01dPXhbYltNXV0sZ1tNXT1OW2JbTV1dfSxVLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYix4LE4sRixnLEMpe3RoaXMucGVybXV0ZShDLGIseCxOLEYsZyk7Zm9yKHZhciBNPTE7TTxnO008PD0xKWZvcih2YXIgeT1NPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJ''@;'; put 'put ''L3kpLFM9TWF0aC5zaW4oMipNYXRoLlBJL3kpLFE9MDtRPGc7USs9eSlmb3IodmFyIHJlPXAsZmU9UyxtZT0wO21lPE07bWUrKyl7dmFyIGtlPU5bUSttZV0sVGU9RltRK21lXSxQZT1OW1ErbWUrTV0sRmU9RltRK21lK01dLE5lPXJlKlBlLWZlKkZlO0ZlPXJlKkZlK2ZlKlBlLE5bUSttZV09''@;'; put 'put ''a2UrKFBlPU5lKSxGW1ErbWVdPVRlK0ZlLE5bUSttZStNXT1rZS1QZSxGW1ErbWUrTV09VGUtRmUsbWUhPT15JiYoTmU9cCpyZS1TKmZlLGZlPXAqZmUrUypyZSxyZT1OZSl9fSxVLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihiLHgpe3ZhciBOPTF8TWF0aC5tYXgoeCxiKSxGPTEm''@;'; put 'put ''TixnPTA7Zm9yKE49Ti8yfDA7TjtOPj4+PTEpZysrO3JldHVybiAxPDxnKzErRn0sVS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGIseCxOKXtpZighKE48PTEpKWZvcih2YXIgRj0wO0Y8Ti8yO0YrKyl7dmFyIGc9YltGXTtiW0ZdPWJbTi1GLTFdLGJbTi1GLTFdPWcsZz14W0ZdLHhb''@;'; put 'put ''Rl09LXhbTi1GLTFdLHhbTi1GLTFdPS1nfX0sVS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGIseCl7Zm9yKHZhciBOPTAsRj0wO0Y8eC8yO0YrKyl7dmFyIGc9ODE5MipNYXRoLnJvdW5kKGJbMipGKzFdL3gpK01hdGgucm91bmQoYlsyKkZdL3gpK047YltGXT02NzEwODg2MyZn''@;'; put 'put ''LE49Zzw2NzEwODg2ND8wOmcvNjcxMDg4NjR8MH1yZXR1cm4gYn0sVS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihiLHgsTixGKXtmb3IodmFyIGc9MCxDPTA7Qzx4O0MrKylOWzIqQ109ODE5MSYoZys9MHxiW0NdKSxOWzIqQysxXT04MTkxJihnPj4+PTEzKSxnPj4+PTEzO2ZvcihD''@;'; put 'put ''PTIqeDtDPEY7KytDKU5bQ109MDt2KDA9PT1nKSx2KDA9PSgtODE5MiZnKSl9LFUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PW5ldyBBcnJheShiKSxOPTA7TjxiO04rKyl4W05dPTA7cmV0dXJuIHh9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYix4LE4pe3ZhciBG''@;'; put 'put ''PTIqdGhpcy5ndWVzc0xlbjEzYihiLmxlbmd0aCx4Lmxlbmd0aCksZz10aGlzLm1ha2VSQlQoRiksQz10aGlzLnN0dWIoRiksTT1uZXcgQXJyYXkoRikseT1uZXcgQXJyYXkoRikscD1uZXcgQXJyYXkoRiksUz1uZXcgQXJyYXkoRiksUT1uZXcgQXJyYXkoRikscmU9bmV3IEFycmF5KEYpLGZl''@;'; put 'put ''PU4ud29yZHM7ZmUubGVuZ3RoPUYsdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsTSxGKSx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxTLEYpLHRoaXMudHJhbnNmb3JtKE0sQyx5LHAsRixnKSx0aGlzLnRyYW5zZm9ybShTLEMsUSxyZSxGLGcpO2Zvcih2YXIgbWU9''@;'; put 'put ''MDttZTxGO21lKyspe3ZhciBrZT15W21lXSpRW21lXS1wW21lXSpyZVttZV07cFttZV09eVttZV0qcmVbbWVdK3BbbWVdKlFbbWVdLHlbbWVdPWtlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh5LHAsRiksdGhpcy50cmFuc2Zvcm0oeSxwLGZlLEMsRixnKSx0aGlzLmNvbmp1Z2F0ZShmZSxDLEYp''@;'; put 'put ''LHRoaXMubm9ybWFsaXplMTNiKGZlLEYpLE4ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPWIubGVuZ3RoK3gubGVuZ3RoLE4uc3RyaXAoKX0sSC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJh''@;'; put 'put ''eSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksdGhpcy5tdWxUbyhiLHgpfSxILnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksVyh0aGlzLGIseCl9LEgucHJvdG90eXBlLmltdWw9''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxILnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4ODY0KTtmb3IodmFyIHg9MCxOPTA7Tjx0aGlzLmxlbmd0aDtOKyspe3ZhciBGPSgwfHRoaXMud29y''@;'; put 'put ''ZHNbTl0pKmIsZz0oNjcxMDg4NjMmRikrKDY3MTA4ODYzJngpO3g+Pj0yNix4Kz1GLzY3MTA4ODY0fDAseCs9Zz4+PjI2LHRoaXMud29yZHNbTl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW05dPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sSC5wcm90b3R5cGUubXVsbj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGIpfSxILnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEgucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEgucHJvdG90eXBlLnBv''@;'; put 'put ''dz1mdW5jdGlvbihiKXt2YXIgeD1mdW5jdGlvbiB6KFkpe2Zvcih2YXIgYj1uZXcgQXJyYXkoWS5iaXRMZW5ndGgoKSkseD0wO3g8Yi5sZW5ndGg7eCsrKXt2YXIgRj14JTI2O2JbeF09KFkud29yZHNbeC8yNnwwXSYxPDxGKT4+PkZ9cmV0dXJuIGJ9KGIpO2lmKDA9PT14Lmxlbmd0aClyZXR1''@;'; put 'put ''cm4gbmV3IEgoMSk7Zm9yKHZhciBOPXRoaXMsRj0wO0Y8eC5sZW5ndGgmJjA9PT14W0ZdO0YrKyxOPU4uc3FyKCkpO2lmKCsrRjx4Lmxlbmd0aClmb3IodmFyIGc9Ti5zcXIoKTtGPHgubGVuZ3RoO0YrKyxnPWcuc3FyKCkpMCE9PXhbRl0mJihOPU4ubXVsKGcpKTtyZXR1cm4gTn0sSC5wcm90''@;'; put 'put ''b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgZyx4PWIlMjYsTj0oYi14KS8yNixGPTY3MTA4ODYzPj4+MjYteDw8MjYteDtpZigwIT09eCl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgTT10aGlzLndvcmRzW2dd''@;'; put 'put ''JkY7dGhpcy53b3Jkc1tnXT0oMHx0aGlzLndvcmRzW2ddKS1NPDx4fEMsQz1NPj4+MjYteH1DJiYodGhpcy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1OKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytOXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7''@;'; put 'put ''ZzxOO2crKyl0aGlzLndvcmRzW2ddPTA7dGhpcy5sZW5ndGgrPU59cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYix4''@;'; put 'put ''LE4pe3ZhciBGO3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKSxGPXg/KHgteCUyNikvMjY6MDt2YXIgZz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLE09NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLHk9TjtpZihGLT1DLEY9TWF0aC5tYXgoMCxGKSx5KXtmb3IodmFy''@;'; put 'put ''IHA9MDtwPEM7cCsrKXkud29yZHNbcF09dGhpcy53b3Jkc1twXTt5Lmxlbmd0aD1DfWlmKDAhPT1DKWlmKHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09''@;'; put 'put ''MCx0aGlzLmxlbmd0aD0xO3ZhciBTPTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PVN8fHA+PUYpO3AtLSl7dmFyIFE9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09Uzw8MjYtZ3xRPj4+ZyxTPVEmTX1yZXR1cm4geSYmMCE9PVMmJih5LndvcmRzW3kubGVuZ3RoKytdPVMp''@;'; put 'put ''LDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIseCxOKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYix4LE4pfSxILnByb3RvdHlwZS5zaGxuPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYil9LEgucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LEgucHJv''@;'; put 'put ''dG90eXBlLnVzaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxILnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PU58fCEodGhp''@;'; put 'put ''cy53b3Jkc1tOXSYxPDx4KSl9LEgucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLmxlbmd0aDw9Tj90aGlzOigwIT09eCYmTisrLHRoaXMubGVuZ3RoPU1hdGgubWluKE4sdGhpcy5sZW5ndGgpLDAhPT14JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4KSx0aGlzLnN0cmlwKCkpfSxILnByb3RvdHlwZS5tYXNr''@;'; put 'put ''bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiKX0sSC5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5s''@;'; put 'put ''ZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''X2lhZGRuPWZ1bmN0aW9uKGIpe3RoaXMud29yZHNbMF0rPWI7Zm9yKHZhciB4PTA7eDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t4XT49NjcxMDg4NjQ7eCsrKXRoaXMud29yZHNbeF0tPTY3MTA4ODY0LHg9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeCsxXT0xOnRoaXMud29yZHNbeCsx''@;'; put 'put ''XSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx4KzEpLHRoaXN9LEgucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVn''@;'; put 'put ''YXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxz''@;'; put 'put ''ZSBmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPDA7eCsrKXRoaXMud29yZHNbeF0rPTY3MTA4ODY0LHRoaXMud29yZHNbeCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFk''@;'; put 'put ''ZG4oYil9LEgucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihiKX0sSC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sSC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xv''@;'; put 'put ''bmUoKS5pYWJzKCl9LEgucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLHgsTil7dmFyIGc7dGhpcy5fZXhwYW5kKGIubGVuZ3RoK04pO3ZhciBDLE09MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytOXSkrTTt2YXIgeT0oMHxiLndvcmRzW2ddKSp4''@;'; put 'put ''O009KChDLT02NzEwODg2MyZ5KT4+MjYpLSh5LzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1OO2crKylNPShDPSgwfHRoaXMud29yZHNbZytOXSkrTSk+PjI2LHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDO2lmKDA9PT1NKXJldHVy''@;'; put 'put ''biB0aGlzLnN0cmlwKCk7Zm9yKHYoLTE9PT1NKSxNPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKU09KEM9LSgwfHRoaXMud29yZHNbZ10pK00pPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl93b3Jk''@;'; put 'put ''RGl2PWZ1bmN0aW9uKGIseCl7dmFyIE4sRj10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdOzAhPShOPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oTiksRi5pdXNobG4oTiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLHk9Ri5sZW5ndGgt''@;'; put 'put ''Zy5sZW5ndGg7aWYoIm1vZCIhPT14KXsocD1uZXcgSChudWxsKSkubGVuZ3RoPXkrMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBTPTA7UzxwLmxlbmd0aDtTKyspcC53b3Jkc1tTXT0wfXZhciBRPUYuY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLHkpOzA9PT1RLm5lZ2F0''@;'; put 'put ''aXZlJiYoRj1RLHAmJihwLndvcmRzW3ldPTEpKTtmb3IodmFyIHJlPXktMTtyZT49MDtyZS0tKXt2YXIgZmU9NjcxMDg4NjQqKDB8Ri53b3Jkc1tnLmxlbmd0aCtyZV0pKygwfEYud29yZHNbZy5sZW5ndGgrcmUtMV0pO2ZvcihmZT1NYXRoLm1pbihmZS9DfDAsNjcxMDg4NjMpLEYuX2lzaGxu''@;'; put 'put ''c3VibXVsKGcsZmUscmUpOzAhPT1GLm5lZ2F0aXZlOylmZS0tLEYubmVnYXRpdmU9MCxGLl9pc2hsbnN1Ym11bChnLDEscmUpLEYuaXNaZXJvKCl8fChGLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tyZV09ZmUpfXJldHVybiBwJiZwLnN0cmlwKCksRi5zdHJpcCgpLCJkaXYiIT09eCYmMCE9''@;'; put 'put ''PU4mJkYuaXVzaHJuKE4pLHtkaXY6cHx8bnVsbCxtb2Q6Rn19LEgucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihiLHgsTil7cmV0dXJuIHYoIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgSCgwKSxtb2Q6bmV3IEgoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdh''@;'; put 'put ''dGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLHgpLCJtb2QiIT09eCYmKEY9Qy5kaXYubmVnKCkpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpGLG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhD''@;'; put 'put ''PXRoaXMuZGl2bW9kKGIubmVnKCkseCksIm1vZCIhPT14JiYoRj1DLmRpdi5uZWcoKSkse2RpdjpGLG1vZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLHgpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVn''@;'; put 'put ''YXRpdmUmJmcuaXN1YihiKSkse2RpdjpDLmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChiKTwwP3tkaXY6bmV3IEgoMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PXg/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09''@;'; put 'put ''eD97ZGl2Om51bGwsbW9kOm5ldyBIKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpuZXcgSCh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIseCk7dmFyIEYsZyxDfSxILnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7''@;'; put 'put ''cmV0dXJuIHRoaXMuZGl2bW9kKGIsImRpdiIsITEpLmRpdn0sSC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LEgucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0s''@;'; put 'put ''SC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oYil7dmFyIHg9dGhpcy5kaXZtb2QoYik7aWYoeC5tb2QuaXNaZXJvKCkpcmV0dXJuIHguZGl2O3ZhciBOPTAhPT14LmRpdi5uZWdhdGl2ZT94Lm1vZC5pc3ViKGIpOngubW9kLEY9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1OLmNtcChG''@;'; put 'put ''KTtyZXR1cm4gQzwwfHwxPT09ZyYmMD09PUM/eC5kaXY6MCE9PXguZGl2Lm5lZ2F0aXZlP3guZGl2LmlzdWJuKDEpOnguZGl2LmlhZGRuKDEpfSxILnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0oMTw8MjYpJWIsTj0wLEY9dGhpcy5sZW5ndGgt''@;'; put 'put ''MTtGPj0wO0YtLSlOPSh4Kk4rKDB8dGhpcy53b3Jkc1tGXSkpJWI7cmV0dXJuIE59LEgucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0wLE49dGhpcy5sZW5ndGgtMTtOPj0wO04tLSl7dmFyIEY9KDB8dGhpcy53b3Jkc1tOXSkrNjcxMDg4NjQq''@;'; put 'put ''eDt0aGlzLndvcmRzW05dPUYvYnwwLHg9RiVifXJldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sSC5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVy''@;'; put 'put ''bygpKTt2YXIgeD10aGlzLE49Yi5jbG9uZSgpO3g9MCE9PXgubmVnYXRpdmU/eC51bW9kKGIpOnguY2xvbmUoKTtmb3IodmFyIEY9bmV3IEgoMSksZz1uZXcgSCgwKSxDPW5ldyBIKDApLE09bmV3IEgoMSkseT0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7KXguaXVzaHJuKDEpLE4uaXVzaHJu''@;'; put 'put ''KDEpLCsreTtmb3IodmFyIHA9Ti5jbG9uZSgpLFM9eC5jbG9uZSgpOyF4LmlzWmVybygpOyl7Zm9yKHZhciBRPTAscmU9MTshKHgud29yZHNbMF0mcmUpJiZRPDI2OysrUSxyZTw8PTEpO2lmKFE+MClmb3IoeC5pdXNocm4oUSk7US0tID4wOykoRi5pc09kZCgpfHxnLmlzT2RkKCkpJiYoRi5p''@;'; put 'put ''YWRkKHApLGcuaXN1YihTKSksRi5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBmZT0wLG1lPTE7IShOLndvcmRzWzBdJm1lKSYmZmU8MjY7KytmZSxtZTw8PTEpO2lmKGZlPjApZm9yKE4uaXVzaHJuKGZlKTtmZS0tID4wOykoQy5pc09kZCgpfHxNLmlzT2RkKCkpJiYoQy5pYWRkKHAp''@;'; put 'put ''LE0uaXN1YihTKSksQy5pdXNocm4oMSksTS5pdXNocm4oMSk7eC5jbXAoTik+PTA/KHguaXN1YihOKSxGLmlzdWIoQyksZy5pc3ViKE0pKTooTi5pc3ViKHgpLEMuaXN1YihGKSxNLmlzdWIoZykpfXJldHVybnthOkMsYjpNLGdjZDpOLml1c2hsbih5KX19LEgucHJvdG90eXBlLl9pbnZtcD1m''@;'; put 'put ''dW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgUSx4PXRoaXMsTj1iLmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QoYik6eC5jbG9uZSgpO2Zvcih2YXIgRj1uZXcgSCgxKSxnPW5ldyBIKDApLEM9Ti5jbG9uZSgpO3guY21wbigxKT4wJiZOLmNt''@;'; put 'put ''cG4oMSk+MDspe2Zvcih2YXIgTT0wLHk9MTshKHgud29yZHNbMF0meSkmJk08MjY7KytNLHk8PD0xKTtpZihNPjApZm9yKHguaXVzaHJuKE0pO00tLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoQyksRi5pdXNocm4oMSk7Zm9yKHZhciBwPTAsUz0xOyEoTi53b3Jkc1swXSZTKSYmcDwyNjsrK3As''@;'; put 'put ''Uzw8PTEpO2lmKHA+MClmb3IoTi5pdXNocm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChDKSxnLml1c2hybigxKTt4LmNtcChOKT49MD8oeC5pc3ViKE4pLEYuaXN1YihnKSk6KE4uaXN1Yih4KSxnLmlzdWIoRikpfXJldHVybihRPTA9PT14LmNtcG4oMSk/RjpnKS5jbXBuKDApPDAm''@;'; put 'put ''JlEuaWFkZChiKSxRfSxILnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB4PXRoaXMuY2xvbmUoKSxOPWIuY2xvbmUoKTt4Lm5lZ2F0aXZlPTAsTi5uZWdhdGl2ZT0wO2Zv''@;'; put 'put ''cih2YXIgRj0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7RisrKXguaXVzaHJuKDEpLE4uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt4LmlzRXZlbigpOyl4Lml1c2hybigxKTtmb3IoO04uaXNFdmVuKCk7KU4uaXVzaHJuKDEpO3ZhciBnPXguY21wKE4pO2lmKGc8MCl7dmFyIEM9eDt4PU4sTj1D''@;'; put 'put ''fWVsc2UgaWYoMD09PWd8fDA9PT1OLmNtcG4oMSkpYnJlYWs7eC5pc3ViKE4pfXJldHVybiBOLml1c2hsbihGKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sSC5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9''@;'; put 'put ''PSgxJnRoaXMud29yZHNbMF0pfSxILnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sSC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7digi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGIpO3ZhciB4PWIlMjYsTj0oYi14KS8yNixGPTE8PHg7aWYodGhpcy5sZW5ndGg8PU4pcmV0dXJuIHRoaXMuX2V4cGFuZChOKzEpLHRoaXMud29yZHNbTl18PUYsdGhpcztmb3IodmFyIGc9RixDPU47MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT0wfHRo''@;'; put 'put ''aXMud29yZHNbQ107Zz0oTSs9Zyk+Pj4yNix0aGlzLndvcmRzW0NdPU0mPTY3MTA4ODYzfXJldHVybiAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhp''@;'; put 'put ''cy53b3Jkc1swXX0sSC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihiKXt2YXIgTix4PWI8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXgpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJngpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpTj0xO2Vsc2V7eCYmKGI9''@;'; put 'put ''LWIpLHYoYjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIEY9MHx0aGlzLndvcmRzWzBdO049Rj09PWI/MDpGPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtTjpOfSxILnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9''@;'; put 'put ''PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgeD10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXg6eH0sSC5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5i''@;'; put 'put ''Lmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHg9MCxOPXRoaXMubGVuZ3RoLTE7Tj49MDtOLS0pe3ZhciBGPTB8dGhpcy53b3Jkc1tOXSxnPTB8Yi53b3Jkc1tOXTtpZihGIT09Zyl7RjxnP3g9LTE6Rj5nJiYoeD0xKTticmVha319cmV0''@;'; put 'put ''dXJuIHh9LEgucHJvdG90eXBlLmd0bj1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0sSC5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sSC5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxI''@;'; put 'put ''LnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxILnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LEgucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LEgucHJvdG90eXBl''@;'; put 'put ''Lmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKTw9MH0sSC5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sSC5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5lcT1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wKGIpfSxILnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IHVlKGIpfSxILnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx2KDA9PT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJl''@;'; put 'put ''ZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEgucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxILnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkg''@;'; put 'put ''YSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LEgucHJv''@;'; put 'put ''dG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFN1YiB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sSC5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LEgu''@;'; put 'put ''cHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLm11bCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiks''@;'; put 'put ''dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5y''@;'; put 'put ''ZWQuc3FyKHRoaXMpfSxILnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkU3Fy''@;'; put 'put ''dD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEgucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwi''@;'; put 'put ''cmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxILnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVy''@;'; put 'put ''cyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sSC5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRo''@;'; put 'put ''aXMsYil9O3ZhciBxPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdGUoWSxiKXt0aGlzLm5hbWU9WSx0aGlzLnA9bmV3IEgoYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEgoMSkuaXVzaGxuKHRoaXMubikuaXN1''@;'; put 'put ''Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIG5lKCl7dGUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBpZSgpe3RlLmNhbGwodGhp''@;'; put 'put ''cywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gbGUoKXt0ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIp''@;'; put 'put ''fWZ1bmN0aW9uIGRlKCl7dGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiB1ZShZKXtpZigic3RyaW5nIj09dHlwZW9mIFkpe3ZhciBiPUguX3ByaW1lKFkpO3Ro''@;'; put 'put ''aXMubT1iLnAsdGhpcy5wcmltZT1ifWVsc2UgdihZLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVksdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGNlKFkpe3VlLmNhbGwodGhpcyxZKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNo''@;'; put 'put ''aWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBIKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwo''@;'; put 'put ''dGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IEgobnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5''@;'; put 'put ''KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxifSx0ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihiKXt2YXIgTix4PWI7ZG97dGhpcy5zcGxpdCh4LHRoaXMudG1wKSxOPSh4PSh4PXRoaXMuaW11bEsoeCkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShOPnRoaXMubik7dmFy''@;'; put 'put ''IEY9Tjx0aGlzLm4/LTE6eC51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1GPyh4LndvcmRzWzBdPTAseC5sZW5ndGg9MSk6Rj4wP3guaXN1Yih0aGlzLnApOnZvaWQgMCE9PXguc3RyaXA/eC5zdHJpcCgpOnguX3N0cmlwKCkseH0sdGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIseCl7Yi5p''@;'; put 'put ''dXNocm4odGhpcy5uLDAseCl9LHRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pbXVsKHRoaXMuayl9LGhlKG5lLHRlKSxuZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYix4KXtmb3IodmFyIE49NDE5NDMwMyxGPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEY7''@;'; put 'put ''ZysrKXgud29yZHNbZ109Yi53b3Jkc1tnXTtpZih4Lmxlbmd0aD1GLGIubGVuZ3RoPD05KXJldHVybiBiLndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2Zvcih4LndvcmRzW3gubGVuZ3RoKytdPUMmTixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgTT0wfGIu''@;'; put 'put ''d29yZHNbZ107Yi53b3Jkc1tnLTEwXT0oTSZOKTw8NHxDPj4+MjIsQz1NfWIud29yZHNbZy0xMF09Qz4+Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LG5lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5n''@;'; put 'put ''dGgrMV09MCxiLmxlbmd0aCs9Mjtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTB8Yi53b3Jkc1tOXTtiLndvcmRzW05dPTY3MTA4ODYzJih4Kz05NzcqRikseD02NCpGKyh4LzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3Ro''@;'; put 'put ''LS0sMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJmIubGVuZ3RoLS0pLGJ9LGhlKGllLHRlKSxoZShsZSx0ZSksaGUoZGUsdGUpLGRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTE5KigwfGIud29yZHNbTl0pK3gsZz02''@;'; put 'put ''NzEwODg2MyZGO0Y+Pj49MjYsYi53b3Jkc1tOXT1nLHg9Rn1yZXR1cm4gMCE9PXgmJihiLndvcmRzW2IubGVuZ3RoKytdPXgpLGJ9LEguX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIHg7aWYoImsyNTYiPT09Yil4PW5ldyBuZTtlbHNlIGlmKCJwMjI0Ij09PWIp''@;'; put 'put ''eD1uZXcgaWU7ZWxzZSBpZigicDE5MiI9PT1iKXg9bmV3IGxlO2Vsc2V7aWYoInAyNTUxOSIhPT1iKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO3g9bmV3IGRlfXJldHVybiBxW2JdPXgseH0sdWUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVn''@;'; put 'put ''YXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksdihiLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSx1ZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYix4KXt2KDA9PShiLm5lZ2F0aXZlfHgubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3''@;'; put 'put ''aXRoIHBvc2l0aXZlcyIpLHYoYi5yZWQmJmIucmVkPT09eC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sdWUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVt''@;'; put 'put ''b2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgp''@;'; put 'put ''O3ZhciBOPWIuYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOLl9mb3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5pYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0w''@;'; put 'put ''JiZOLmlzdWIodGhpcy5tKSxOfSx1ZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuc3ViKHgpO3JldHVybiBOLmNtcG4oMCk8MCYmTi5pYWRkKHRoaXMubSksTi5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9u''@;'; put 'put ''KGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuaXN1Yih4KTtyZXR1cm4gTi5jbXBuKDApPDAmJk4uaWFkZCh0aGlzLm0pLE59LHVlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbih4KSl9LHVlLnByb3Rv''@;'; put 'put ''dHlwZS5pbXVsPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYix4KSx0aGlzLmltb2QoYi5pbXVsKHgpKX0sdWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIseCksdGhpcy5pbW9kKGIubXVsKHgpKX0sdWUucHJvdG90eXBlLmlz''@;'; put 'put ''cXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW11bChiLGIuY2xvbmUoKSl9LHVlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LHVlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgeD10''@;'; put 'put ''aGlzLm0uYW5kbG4oMyk7aWYodih4JTI9PTEpLDM9PT14KXt2YXIgTj10aGlzLm0uYWRkKG5ldyBIKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsTil9Zm9yKHZhciBGPXRoaXMubS5zdWJuKDEpLGc9MDshRi5pc1plcm8oKSYmMD09PUYuYW5kbG4oMSk7KWcrKyxGLml1c2hybigx''@;'; put 'put ''KTt2KCFGLmlzWmVybygpKTt2YXIgQz1uZXcgSCgxKS50b1JlZCh0aGlzKSxNPUMucmVkTmVnKCkseT10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IEgoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLHkpLmNtcChNKTspcC5y''@;'; put 'put ''ZWRJQWRkKE0pO2Zvcih2YXIgUz10aGlzLnBvdyhwLEYpLFE9dGhpcy5wb3coYixGLmFkZG4oMSkuaXVzaHJuKDEpKSxyZT10aGlzLnBvdyhiLEYpLGZlPWc7MCE9PXJlLmNtcChDKTspe2Zvcih2YXIgbWU9cmUsa2U9MDswIT09bWUuY21wKEMpO2tlKyspbWU9bWUucmVkU3FyKCk7dihrZTxm''@;'; put 'put ''ZSk7dmFyIFRlPXRoaXMucG93KFMsbmV3IEgoMSkuaXVzaGxuKGZlLWtlLTEpKTtRPVEucmVkTXVsKFRlKSxTPVRlLnJlZFNxcigpLHJlPXJlLnJlZE11bChTKSxmZT1rZX1yZXR1cm4gUX0sdWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIHg9Yi5faW52bXAodGhpcy5tKTtyZXR1''@;'; put 'put ''cm4gMCE9PXgubmVnYXRpdmU/KHgubmVnYXRpdmU9MCx0aGlzLmltb2QoeCkucmVkTmVnKCkpOnRoaXMuaW1vZCh4KX0sdWUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT14LmNtcG4oMSkpcmV0dXJu''@;'; put 'put ''IGIuY2xvbmUoKTt2YXIgRj1uZXcgQXJyYXkoMTYpO0ZbMF09bmV3IEgoMSkudG9SZWQodGhpcyksRlsxXT1iO2Zvcih2YXIgZz0yO2c8Ri5sZW5ndGg7ZysrKUZbZ109dGhpcy5tdWwoRltnLTFdLGIpO3ZhciBDPUZbMF0sTT0wLHk9MCxwPXguYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYo''@;'; put 'put ''cD0yNiksZz14Lmxlbmd0aC0xO2c+PTA7Zy0tKXtmb3IodmFyIFM9eC53b3Jkc1tnXSxRPXAtMTtRPj0wO1EtLSl7dmFyIHJlPVM+PlEmMTtDIT09RlswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT1yZXx8MCE9PU0/KE08PD0xLE18PXJlLCg0PT0rK3l8fDA9PT1nJiYwPT09USkmJihDPXRoaXMu''@;'; put 'put ''bXVsKEMsRltNXSkseT0wLE09MCkpOnk9MH1wPTI2fXJldHVybiBDfSx1ZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3ZhciB4PWIudW1vZCh0aGlzLm0pO3JldHVybiB4PT09Yj94LmNsb25lKCk6eH0sdWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4''@;'; put 'put ''PWIuY2xvbmUoKTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxILm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBjZShiKX0saGUoY2UsdWUpLGNlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sY2UucHJvdG90eXBl''@;'; put 'put ''LmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxjZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLHgpe2lmKGIuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0''@;'; put 'put ''aD0xLGI7dmFyIE49Yi5pbXVsKHgpLEY9Ti5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1OLmlzdWIoRikuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0p''@;'; put 'put ''OmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGNlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYix4KXtpZihiLmlzWmVybygpfHx4LmlzWmVybygpKXJldHVybiBuZXcgSCgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIE49Yi5tdWwoeCksRj1OLm1hc2tu''@;'; put 'put ''KHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPU4uaXN1YihGKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0p''@;'; put 'put ''KSxDLl9mb3JjZVJlZCh0aGlzKX0sY2UucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oV2U9VC5ubWQoV2UpLHRoaXMpfSw5NjM2MjooV2UsemUsVCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIHNlPVQoNjY2OTgpLGs9VCg3NTgyOSksdj1UKDM5NzA2KSxoZT1UKDk3OTY1KSxIPVQoODY0MjApO2Z1bmN0aW9uIEIoTCl7SC5jYWxsKHRoaXMsImRpZ2VzdCIpLHRoaXMuX2hhc2g9TH1zZShCLEgpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTCl7dGhpcy5faGFzaC51''@;'; put 'put ''cGRhdGUoTCl9LEIucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpfSxXZS5leHBvcnRzPWZ1bmN0aW9uKEspe3JldHVybiJtZDUiPT09KEs9Sy50b0xvd2VyQ2FzZSgpKT9uZXcgazoicm1kMTYwIj09PUt8fCJyaXBlbWQxNjAiPT09Sz9uZXcg''@;'; put 'put ''djpuZXcgQihoZShLKSl9fSw4NzU4ODooV2UsemUsVCk9Pnt2YXIgc2U9VCg3NTgyOSk7V2UuZXhwb3J0cz1mdW5jdGlvbihrKXtyZXR1cm4obmV3IHNlKS51cGRhdGUoaykuZGlnZXN0KCl9fSw4NTgyNTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNjY2OTgpLGs9VCg5NTky''@;'; put 'put ''Miksdj1UKDg2NDIwKSxoZT1UKDg0MykuQnVmZmVyLEg9VCg4NzU4OCksQj1UKDM5NzA2KSxMPVQoOTc5NjUpLEs9aGUuYWxsb2MoMTI4KTtmdW5jdGlvbiBKKEksUil7di5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgUiYmKFI9aGUuZnJvbShSKSk7dmFyIEU9InNoYTUx''@;'; put 'put ''MiI9PT1JfHwic2hhMzg0Ij09PUk/MTI4OjY0O3RoaXMuX2FsZz1JLHRoaXMuX2tleT1SLFIubGVuZ3RoPkU/Uj0oInJtZDE2MCI9PT1JP25ldyBCOkwoSSkpLnVwZGF0ZShSKS5kaWdlc3QoKTpSLmxlbmd0aDxFJiYoUj1oZS5jb25jYXQoW1IsS10sRSkpO2Zvcih2YXIgaj10aGlzLl9pcGFk''@;'; put 'put ''PWhlLmFsbG9jVW5zYWZlKEUpLFY9dGhpcy5fb3BhZD1oZS5hbGxvY1Vuc2FmZShFKSxHPTA7RzxFO0crKylqW0ddPTU0XlJbR10sVltHXT05Ml5SW0ddO3RoaXMuX2hhc2g9InJtZDE2MCI9PT1JP25ldyBCOkwoSSksdGhpcy5faGFzaC51cGRhdGUoail9c2UoSix2KSxKLnByb3RvdHlwZS5f''@;'; put 'put ''dXBkYXRlPWZ1bmN0aW9uKEkpe3RoaXMuX2hhc2gudXBkYXRlKEkpfSxKLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgST10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgQjpMKHRoaXMuX2FsZykpLnVwZGF0ZSh0aGlzLl9vcGFkKS51''@;'; put 'put ''cGRhdGUoSSkuZGlnZXN0KCl9LFdlLmV4cG9ydHM9ZnVuY3Rpb24oUixFKXtyZXR1cm4icm1kMTYwIj09PShSPVIudG9Mb3dlckNhc2UoKSl8fCJyaXBlbWQxNjAiPT09Uj9uZXcgSigicm1kMTYwIixFKToibWQ1Ij09PVI/bmV3IGsoSCxFKTpuZXcgSihSLEUpfX0sOTU5MjI6KFdlLHplLFQp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDY2Njk4KSxrPVQoODQzKS5CdWZmZXIsdj1UKDg2NDIwKSxoZT1rLmFsbG9jKDEyOCksSD02NDtmdW5jdGlvbiBCKEwsSyl7di5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgSyYmKEs9ay5mcm9tKEspKSx0aGlzLl9hbGc9TCx0''@;'; put 'put ''aGlzLl9rZXk9SyxLLmxlbmd0aD5IP0s9TChLKTpLLmxlbmd0aDxIJiYoSz1rLmNvbmNhdChbSyxoZV0sSCkpO2Zvcih2YXIgSj10aGlzLl9pcGFkPWsuYWxsb2NVbnNhZmUoSCksST10aGlzLl9vcGFkPWsuYWxsb2NVbnNhZmUoSCksUj0wO1I8SDtSKyspSltSXT01NF5LW1JdLElbUl09OTJe''@;'; put 'put ''S1tSXTt0aGlzLl9oYXNoPVtKXX1zZShCLHYpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTCl7dGhpcy5faGFzaC5wdXNoKEwpfSxCLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgTD10aGlzLl9hbGcoay5jb25jYXQodGhpcy5faGFzaCkpO3JldHVybiB0aGlzLl9hbGco''@;'; put 'put ''ay5jb25jYXQoW3RoaXMuX29wYWQsTF0pKX0sV2UuZXhwb3J0cz1CfSw3NzkwMzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7emUucmFuZG9tQnl0ZXM9emUucm5nPXplLnBzZXVkb1JhbmRvbUJ5dGVzPXplLnBybmc9VCg0NDAxOSksemUuY3JlYXRlSGFzaD16ZS5IYXNoPVQoOTYzNjIpLHpl''@;'; put 'put ''LmNyZWF0ZUhtYWM9emUuSG1hYz1UKDg1ODI1KTt2YXIgc2U9VCg4MTY5OSksaz1PYmplY3Qua2V5cyhzZSksdj1bInNoYTEiLCJzaGEyMjQiLCJzaGEyNTYiLCJzaGEzODQiLCJzaGE1MTIiLCJtZDUiLCJybWQxNjAiXS5jb25jYXQoayk7emUuZ2V0SGFzaGVzPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHZ9O3ZhciBoZT1UKDU3MTAwKTt6ZS5wYmtkZjI9aGUucGJrZGYyLHplLnBia2RmMlN5bmM9aGUucGJrZGYyU3luYzt2YXIgSD1UKDI1NjAwKTt6ZS5DaXBoZXI9SC5DaXBoZXIsemUuY3JlYXRlQ2lwaGVyPUguY3JlYXRlQ2lwaGVyLHplLkNpcGhlcml2PUguQ2lwaGVyaXYsemUuY3JlYXRl''@;'; put 'put ''Q2lwaGVyaXY9SC5jcmVhdGVDaXBoZXJpdix6ZS5EZWNpcGhlcj1ILkRlY2lwaGVyLHplLmNyZWF0ZURlY2lwaGVyPUguY3JlYXRlRGVjaXBoZXIsemUuRGVjaXBoZXJpdj1ILkRlY2lwaGVyaXYsemUuY3JlYXRlRGVjaXBoZXJpdj1ILmNyZWF0ZURlY2lwaGVyaXYsemUuZ2V0Q2lwaGVycz1I''@;'; put 'put ''LmdldENpcGhlcnMsemUubGlzdENpcGhlcnM9SC5saXN0Q2lwaGVyczt2YXIgQj1UKDQ1MTQ0KTt6ZS5EaWZmaWVIZWxsbWFuR3JvdXA9Qi5EaWZmaWVIZWxsbWFuR3JvdXAsemUuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwPUIuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwLHplLmdldERpZmZp''@;'; put 'put ''ZUhlbGxtYW49Qi5nZXREaWZmaWVIZWxsbWFuLHplLmNyZWF0ZURpZmZpZUhlbGxtYW49Qi5jcmVhdGVEaWZmaWVIZWxsbWFuLHplLkRpZmZpZUhlbGxtYW49Qi5EaWZmaWVIZWxsbWFuO3ZhciBMPVQoMjc2ODYpO3plLmNyZWF0ZVNpZ249TC5jcmVhdGVTaWduLHplLlNpZ249TC5TaWduLHpl''@;'; put 'put ''LmNyZWF0ZVZlcmlmeT1MLmNyZWF0ZVZlcmlmeSx6ZS5WZXJpZnk9TC5WZXJpZnksemUuY3JlYXRlRUNESD1UKDM4ODQwKTt2YXIgSz1UKDI3MDUwKTt6ZS5wdWJsaWNFbmNyeXB0PUsucHVibGljRW5jcnlwdCx6ZS5wcml2YXRlRW5jcnlwdD1LLnByaXZhdGVFbmNyeXB0LHplLnB1YmxpY0Rl''@;'; put 'put ''Y3J5cHQ9Sy5wdWJsaWNEZWNyeXB0LHplLnByaXZhdGVEZWNyeXB0PUsucHJpdmF0ZURlY3J5cHQ7dmFyIEo9VCg2MTIzNyk7emUucmFuZG9tRmlsbD1KLnJhbmRvbUZpbGwsemUucmFuZG9tRmlsbFN5bmM9Si5yYW5kb21GaWxsU3luYyx6ZS5jcmVhdGVDcmVkZW50aWFscz1mdW5jdGlvbigp''@;'; put 'put ''e3Rocm93IG5ldyBFcnJvcihbInNvcnJ5LCBjcmVhdGVDcmVkZW50aWFscyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Iiwid2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMiLCJodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnkiXS5qb2luKCJcbiIpKX0s''@;'; put 'put ''emUuY29uc3RhbnRzPXtESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FOjIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6MSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOjQsREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUjo4LE5QTl9FTkFCTEVEOjEsQUxQTl9FTkFCTEVEOjEsUlNBX1BLQ1MxX1BB''@;'; put 'put ''RERJTkc6MSxSU0FfU1NMVjIzX1BBRERJTkc6MixSU0FfTk9fUEFERElORzozLFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6NCxSU0FfWDkzMV9QQURESU5HOjUsUlNBX1BLQ1MxX1BTU19QQURESU5HOjYsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOjIsUE9JTlRfQ09OVkVSU0lPTl9VTkNP''@;'; put 'put ''TVBSRVNTRUQ6NCxQT0lOVF9DT05WRVJTSU9OX0hZQlJJRDo2fX0sMTAwMTI6ZnVuY3Rpb24oV2UsemUpe3ZhciBzZSx2LGhlLEgsQixMLEssSixJLFIsRSxqLFQ7V2UuZXhwb3J0cz0oVD1UfHwoc2U9TWF0aCx2PU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKCl7ZnVuY3Rpb24gVigpe31yZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oRyl7dmFyIFc7cmV0dXJuIFYucHJvdG90eXBlPUcsVz1uZXcgVixWLnByb3RvdHlwZT1udWxsLFd9fSgpLEg9KGhlPXt9KS5saWI9e30sQj1ILkJhc2U9e2V4dGVuZDpmdW5jdGlvbihWKXt2YXIgRz12KHRoaXMpO3JldHVybiBWJiZHLm1peEluKFYpLCghRy5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eSgiaW5pdCIpfHx0aGlzLmluaXQ9PT1HLmluaXQpJiYoRy5pbml0PWZ1bmN0aW9uKCl7Ry4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxHLmluaXQucHJvdG90eXBlPUcsRy4kc3VwZXI9dGhpcyxHfSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgVj10aGlzLmV4dGVu''@;'; put 'put ''ZCgpO3JldHVybiBWLmluaXQuYXBwbHkoVixhcmd1bWVudHMpLFZ9LGluaXQ6ZnVuY3Rpb24oKXt9LG1peEluOmZ1bmN0aW9uKFYpe2Zvcih2YXIgRyBpbiBWKVYuaGFzT3duUHJvcGVydHkoRykmJih0aGlzW0ddPVZbR10pO1YuaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJih0aGlzLnRv''@;'; put 'put ''U3RyaW5nPVYudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19LEw9SC5Xb3JkQXJyYXk9Qi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oVixHKXtWPXRoaXMud29yZHM9Vnx8W10sdGhpcy5zaWdCeXRlcz1udWxsIT1HP0c6''@;'; put 'put ''NCpWLmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24oVil7cmV0dXJuKFZ8fEopLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKFYpe3ZhciBHPXRoaXMud29yZHMsVz1WLndvcmRzLFU9dGhpcy5zaWdCeXRlcyxxPVYuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLFUlNClmb3IodmFy''@;'; put 'put ''IHRlPTA7dGU8cTt0ZSsrKUdbVSt0ZT4+PjJdfD0oV1t0ZT4+PjJdPj4+MjQtdGUlNCo4JjI1NSk8PDI0LShVK3RlKSU0Kjg7ZWxzZSBmb3IodGU9MDt0ZTxxO3RlKz00KUdbVSt0ZT4+PjJdPVdbdGU+Pj4yXTtyZXR1cm4gdGhpcy5zaWdCeXRlcys9cSx0aGlzfSxjbGFtcDpmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBWPXRoaXMud29yZHMsRz10aGlzLnNpZ0J5dGVzO1ZbRz4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1HJTQqOCxWLmxlbmd0aD1zZS5jZWlsKEcvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIFY9Qi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBWLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCks''@;'; put 'put ''Vn0scmFuZG9tOmZ1bmN0aW9uKFYpe2Zvcih2YXIgcSxHPVtdLFc9ZnVuY3Rpb24oaWUpe3ZhciBsZT05ODc2NTQzMjEsZGU9NDI5NDk2NzI5NTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdWU9KChsZT0zNjk2OSooNjU1MzUmbGUpKyhsZT4+MTYpJmRlKTw8MTYpKyhpZT0xOGUzKig2NTUzNSZp''@;'; put 'put ''ZSkrKGllPj4xNikmZGUpJmRlO3JldHVybiB1ZS89NDI5NDk2NzI5NiwodWUrPS41KSooc2UucmFuZG9tKCk+LjU/MTotMSl9fSxVPTA7VTxWO1UrPTQpe3ZhciB0ZT1XKDQyOTQ5NjcyOTYqKHF8fHNlLnJhbmRvbSgpKSk7cT05ODc2NTQwNzEqdGUoKSxHLnB1c2goNDI5NDk2NzI5Nip0ZSgp''@;'; put 'put ''fDApfXJldHVybiBuZXcgTC5pbml0KEcsVil9fSksSz1oZS5lbmM9e30sSj1LLkhleD17c3RyaW5naWZ5OmZ1bmN0aW9uKFYpe2Zvcih2YXIgRz1WLndvcmRzLFc9Vi5zaWdCeXRlcyxVPVtdLHE9MDtxPFc7cSsrKXt2YXIgdGU9R1txPj4+Ml0+Pj4yNC1xJTQqOCYyNTU7VS5wdXNoKCh0ZT4+''@;'; put 'put ''PjQpLnRvU3RyaW5nKDE2KSksVS5wdXNoKCgxNSZ0ZSkudG9TdHJpbmcoMTYpKX1yZXR1cm4gVS5qb2luKCIiKX0scGFyc2U6ZnVuY3Rpb24oVil7Zm9yKHZhciBHPVYubGVuZ3RoLFc9W10sVT0wO1U8RztVKz0yKVdbVT4+PjNdfD1wYXJzZUludChWLnN1YnN0cihVLDIpLDE2KTw8MjQtVSU4''@;'; put 'put ''KjQ7cmV0dXJuIG5ldyBMLmluaXQoVyxHLzIpfX0sST1LLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKFYpe2Zvcih2YXIgRz1WLndvcmRzLFc9Vi5zaWdCeXRlcyxVPVtdLHE9MDtxPFc7cSsrKVUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKEdbcT4+PjJdPj4+MjQtcSU0KjgmMjU1KSk7''@;'; put 'put ''cmV0dXJuIFUuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKFYpe2Zvcih2YXIgRz1WLmxlbmd0aCxXPVtdLFU9MDtVPEc7VSsrKVdbVT4+PjJdfD0oMjU1JlYuY2hhckNvZGVBdChVKSk8PDI0LVUlNCo4O3JldHVybiBuZXcgTC5pbml0KFcsRyl9fSxSPUsuVXRmOD17c3RyaW5naWZ5OmZ1bmN0''@;'; put 'put ''aW9uKFYpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShJLnN0cmluZ2lmeShWKSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIFVURi04IGRhdGEiKX19LHBhcnNlOmZ1bmN0aW9uKFYpe3JldHVybiBJLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBv''@;'; put 'put ''bmVudChWKSkpfX0sRT1ILkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG09Qi5leHRlbmQoe3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgTC5pbml0LHRoaXMuX25EYXRhQnl0ZXM9MH0sX2FwcGVuZDpmdW5jdGlvbihWKXsic3RyaW5nIj09dHlwZW9mIFYmJihWPVIucGFyc2UoVikpLHRo''@;'; put 'put ''aXMuX2RhdGEuY29uY2F0KFYpLHRoaXMuX25EYXRhQnl0ZXMrPVYuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKFYpe3ZhciBHPXRoaXMuX2RhdGEsVz1HLndvcmRzLFU9Ry5zaWdCeXRlcyxxPXRoaXMuYmxvY2tTaXplLG5lPVUvKDQqcSksaWU9KG5lPVY/c2UuY2VpbChuZSk6c2UubWF4''@;'; put 'put ''KCgwfG5lKS10aGlzLl9taW5CdWZmZXJTaXplLDApKSpxLGxlPXNlLm1pbig0KmllLFUpO2lmKGllKXtmb3IodmFyIGRlPTA7ZGU8aWU7ZGUrPXEpdGhpcy5fZG9Qcm9jZXNzQmxvY2soVyxkZSk7dmFyIHVlPVcuc3BsaWNlKDAsaWUpO0cuc2lnQnl0ZXMtPWxlfXJldHVybiBuZXcgTC5pbml0''@;'; put 'put ''KHVlLGxlKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgVj1CLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIFYuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLFZ9LF9taW5CdWZmZXJTaXplOjB9KSxILkhhc2hlcj1FLmV4dGVuZCh7Y2ZnOkIuZXh0ZW5kKCksaW5pdDpmdW5jdGlvbihWKXt0aGlzLmNm''@;'; put 'put ''Zz10aGlzLmNmZy5leHRlbmQoViksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe0UucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbihWKXtyZXR1cm4gdGhpcy5fYXBwZW5kKFYpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5j''@;'; put 'put ''dGlvbihWKXtyZXR1cm4gViYmdGhpcy5fYXBwZW5kKFYpLHRoaXMuX2RvRmluYWxpemUoKX0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oVil7cmV0dXJuIGZ1bmN0aW9uKEcsVyl7cmV0dXJuIG5ldyBWLmluaXQoVykuZmluYWxpemUoRyl9fSxfY3JlYXRlSG1hY0hlbHBl''@;'; put 'put ''cjpmdW5jdGlvbihWKXtyZXR1cm4gZnVuY3Rpb24oRyxXKXtyZXR1cm4gbmV3IGouSE1BQy5pbml0KFYsVykuZmluYWxpemUoRyl9fX0pLGo9aGUuYWxnbz17fSxoZSksVCl9LDkyODczOmZ1bmN0aW9uKFdlLHplLFQpe3ZhciBzZTtXZS5leHBvcnRzPShzZT1UKDEwMDEyKSxmdW5jdGlvbihr''@;'; put 'put ''KXt2YXIgdj1zZSxoZT12LmxpYixIPWhlLldvcmRBcnJheSxCPWhlLkhhc2hlcixMPXYuYWxnbyxLPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgaj0wO2o8NjQ7aisrKUtbal09NDI5NDk2NzI5NiprLmFicyhrLnNpbihqKzEpKXwwfSgpO3ZhciBKPUwuTUQ1PUIuZXh0ZW5kKHtfZG9SZXNldDpm''@;'; put 'put ''dW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IEguaW5pdChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4XSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbihqLFYpe2Zvcih2YXIgRz0wO0c8MTY7RysrKXt2YXIgVz1WK0csVT1qW1ddO2pbV109MTY3MTE5MzUmKFU8''@;'; put 'put ''PDh8VT4+PjI0KXw0Mjc4MjU1MzYwJihVPDwyNHxVPj4+OCl9dmFyIHE9dGhpcy5faGFzaC53b3Jkcyx0ZT1qW1YrMF0sbmU9altWKzFdLGllPWpbVisyXSxsZT1qW1YrM10sZGU9altWKzRdLHVlPWpbVis1XSxjZT1qW1YrNl0sWT1qW1YrN10sYj1qW1YrOF0seD1qW1YrOV0sTj1qW1YrMTBd''@;'; put 'put ''LEY9altWKzExXSxnPWpbVisxMl0sQz1qW1YrMTNdLE09altWKzE0XSx5PWpbVisxNV0scD1xWzBdLFM9cVsxXSxRPXFbMl0scmU9cVszXTtwPUkocCxTLFEscmUsdGUsNyxLWzBdKSxyZT1JKHJlLHAsUyxRLG5lLDEyLEtbMV0pLFE9SShRLHJlLHAsUyxpZSwxNyxLWzJdKSxTPUkoUyxRLHJl''@;'; put 'put ''LHAsbGUsMjIsS1szXSkscD1JKHAsUyxRLHJlLGRlLDcsS1s0XSkscmU9SShyZSxwLFMsUSx1ZSwxMixLWzVdKSxRPUkoUSxyZSxwLFMsY2UsMTcsS1s2XSksUz1JKFMsUSxyZSxwLFksMjIsS1s3XSkscD1JKHAsUyxRLHJlLGIsNyxLWzhdKSxyZT1JKHJlLHAsUyxRLHgsMTIsS1s5XSksUT1J''@;'; put 'put ''KFEscmUscCxTLE4sMTcsS1sxMF0pLFM9SShTLFEscmUscCxGLDIyLEtbMTFdKSxwPUkocCxTLFEscmUsZyw3LEtbMTJdKSxyZT1JKHJlLHAsUyxRLEMsMTIsS1sxM10pLFE9SShRLHJlLHAsUyxNLDE3LEtbMTRdKSxwPVIocCxTPUkoUyxRLHJlLHAseSwyMixLWzE1XSksUSxyZSxuZSw1LEtb''@;'; put 'put ''MTZdKSxyZT1SKHJlLHAsUyxRLGNlLDksS1sxN10pLFE9UihRLHJlLHAsUyxGLDE0LEtbMThdKSxTPVIoUyxRLHJlLHAsdGUsMjAsS1sxOV0pLHA9UihwLFMsUSxyZSx1ZSw1LEtbMjBdKSxyZT1SKHJlLHAsUyxRLE4sOSxLWzIxXSksUT1SKFEscmUscCxTLHksMTQsS1syMl0pLFM9UihTLFEs''@;'; put 'put ''cmUscCxkZSwyMCxLWzIzXSkscD1SKHAsUyxRLHJlLHgsNSxLWzI0XSkscmU9UihyZSxwLFMsUSxNLDksS1syNV0pLFE9UihRLHJlLHAsUyxsZSwxNCxLWzI2XSksUz1SKFMsUSxyZSxwLGIsMjAsS1syN10pLHA9UihwLFMsUSxyZSxDLDUsS1syOF0pLHJlPVIocmUscCxTLFEsaWUsOSxLWzI5''@;'; put 'put ''XSksUT1SKFEscmUscCxTLFksMTQsS1szMF0pLHA9RShwLFM9UihTLFEscmUscCxnLDIwLEtbMzFdKSxRLHJlLHVlLDQsS1szMl0pLHJlPUUocmUscCxTLFEsYiwxMSxLWzMzXSksUT1FKFEscmUscCxTLEYsMTYsS1szNF0pLFM9RShTLFEscmUscCxNLDIzLEtbMzVdKSxwPUUocCxTLFEscmUs''@;'; put 'put ''bmUsNCxLWzM2XSkscmU9RShyZSxwLFMsUSxkZSwxMSxLWzM3XSksUT1FKFEscmUscCxTLFksMTYsS1szOF0pLFM9RShTLFEscmUscCxOLDIzLEtbMzldKSxwPUUocCxTLFEscmUsQyw0LEtbNDBdKSxyZT1FKHJlLHAsUyxRLHRlLDExLEtbNDFdKSxRPUUoUSxyZSxwLFMsbGUsMTYsS1s0Ml0p''@;'; put 'put ''LFM9RShTLFEscmUscCxjZSwyMyxLWzQzXSkscD1FKHAsUyxRLHJlLHgsNCxLWzQ0XSkscmU9RShyZSxwLFMsUSxnLDExLEtbNDVdKSxRPUUoUSxyZSxwLFMseSwxNixLWzQ2XSkscD16KHAsUz1FKFMsUSxyZSxwLGllLDIzLEtbNDddKSxRLHJlLHRlLDYsS1s0OF0pLHJlPXoocmUscCxTLFEs''@;'; put 'put ''WSwxMCxLWzQ5XSksUT16KFEscmUscCxTLE0sMTUsS1s1MF0pLFM9eihTLFEscmUscCx1ZSwyMSxLWzUxXSkscD16KHAsUyxRLHJlLGcsNixLWzUyXSkscmU9eihyZSxwLFMsUSxsZSwxMCxLWzUzXSksUT16KFEscmUscCxTLE4sMTUsS1s1NF0pLFM9eihTLFEscmUscCxuZSwyMSxLWzU1XSks''@;'; put 'put ''cD16KHAsUyxRLHJlLGIsNixLWzU2XSkscmU9eihyZSxwLFMsUSx5LDEwLEtbNTddKSxRPXooUSxyZSxwLFMsY2UsMTUsS1s1OF0pLFM9eihTLFEscmUscCxDLDIxLEtbNTldKSxwPXoocCxTLFEscmUsZGUsNixLWzYwXSkscmU9eihyZSxwLFMsUSxGLDEwLEtbNjFdKSxRPXooUSxyZSxwLFMs''@;'; put 'put ''aWUsMTUsS1s2Ml0pLFM9eihTLFEscmUscCx4LDIxLEtbNjNdKSxxWzBdPXFbMF0rcHwwLHFbMV09cVsxXStTfDAscVsyXT1xWzJdK1F8MCxxWzNdPXFbM10rcmV8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgaj10aGlzLl9kYXRhLFY9ai53b3JkcyxHPTgqdGhpcy5fbkRhdGFCeXRl''@;'; put 'put ''cyxXPTgqai5zaWdCeXRlcztWW1c+Pj41XXw9MTI4PDwyNC1XJTMyO3ZhciBVPWsuZmxvb3IoRy80Mjk0OTY3Mjk2KSxxPUc7VlsxNSsoVys2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoVTw8OHxVPj4+MjQpfDQyNzgyNTUzNjAmKFU8PDI0fFU+Pj44KSxWWzE0KyhXKzY0Pj4+OTw8NCldPTE2NzEx''@;'; put 'put ''OTM1JihxPDw4fHE+Pj4yNCl8NDI3ODI1NTM2MCYocTw8MjR8cT4+PjgpLGouc2lnQnl0ZXM9NCooVi5sZW5ndGgrMSksdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgdGU9dGhpcy5faGFzaCxuZT10ZS53b3JkcyxpZT0wO2llPDQ7aWUrKyl7dmFyIGxlPW5lW2llXTtuZVtpZV09MTY3MTE5MzUm''@;'; put 'put ''KGxlPDw4fGxlPj4+MjQpfDQyNzgyNTUzNjAmKGxlPDwyNHxsZT4+PjgpfXJldHVybiB0ZX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgaj1CLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIGouX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLGp9fSk7ZnVuY3Rpb24gSShqLFYsRyxXLFUscSx0ZSl7dmFy''@;'; put 'put ''IG5lPWorKFYmR3x+ViZXKStVK3RlO3JldHVybihuZTw8cXxuZT4+PjMyLXEpK1Z9ZnVuY3Rpb24gUihqLFYsRyxXLFUscSx0ZSl7dmFyIG5lPWorKFYmV3xHJn5XKStVK3RlO3JldHVybihuZTw8cXxuZT4+PjMyLXEpK1Z9ZnVuY3Rpb24gRShqLFYsRyxXLFUscSx0ZSl7dmFyIG5lPWorKFZe''@;'; put 'put ''R15XKStVK3RlO3JldHVybihuZTw8cXxuZT4+PjMyLXEpK1Z9ZnVuY3Rpb24geihqLFYsRyxXLFUscSx0ZSl7dmFyIG5lPWorKEdeKFZ8flcpKStVK3RlO3JldHVybihuZTw8cXxuZT4+PjMyLXEpK1Z9di5NRDU9Qi5fY3JlYXRlSGVscGVyKEopLHYuSG1hY01ENT1CLl9jcmVhdGVIbWFjSGVs''@;'; put 'put ''cGVyKEopfShNYXRoKSxzZS5NRDUpfSw0MDEzMjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7emUudXRpbHM9VCg1MjI5NCksemUuQ2lwaGVyPVQoMjk0ODQpLHplLkRFUz1UKDE0Mzc0KSx6ZS5DQkM9VCgxMjA2NiksemUuRURFPVQoNTk3MTApfSwxMjA2NjooV2UsemUsVCk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIHNlPVQoNTc3OTgpLGs9VCg2NjY5OCksdj17fTtmdW5jdGlvbiBoZShCKXtzZS5lcXVhbChCLmxlbmd0aCw4LCJJbnZhbGlkIElWIGxlbmd0aCIpLHRoaXMuaXY9bmV3IEFycmF5KDgpO2Zvcih2YXIgTD0wO0w8dGhpcy5pdi5sZW5ndGg7TCsrKXRoaXMuaXZbTF09QltMXX16''@;'; put 'put ''ZS5pbnN0YW50aWF0ZT1mdW5jdGlvbiBIKEIpe2Z1bmN0aW9uIEwoUil7Qi5jYWxsKHRoaXMsUiksdGhpcy5fY2JjSW5pdCgpfWsoTCxCKTtmb3IodmFyIEs9T2JqZWN0LmtleXModiksSj0wO0o8Sy5sZW5ndGg7SisrKXt2YXIgST1LW0pdO0wucHJvdG90eXBlW0ldPXZbSV19cmV0dXJuIEwu''@;'; put 'put ''Y3JlYXRlPWZ1bmN0aW9uKEUpe3JldHVybiBuZXcgTChFKX0sTH0sdi5fY2JjSW5pdD1mdW5jdGlvbigpe3ZhciBMPW5ldyBoZSh0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPUx9LHYuX3VwZGF0ZT1mdW5jdGlvbihMLEssSixJKXt2YXIgRT10aGlzLmNvbnN0cnVjdG9yLnN1cGVy''@;'; put 'put ''Xy5wcm90b3R5cGUsej10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgaj0wO2o8dGhpcy5ibG9ja1NpemU7aisrKXpbal1ePUxbSytqXTtmb3IoRS5fdXBkYXRlLmNhbGwodGhpcyx6LDAsSixJKSxqPTA7ajx0aGlzLmJsb2NrU2l6ZTtqKyspeltq''@;'; put 'put ''XT1KW0kral19ZWxzZXtmb3IoRS5fdXBkYXRlLmNhbGwodGhpcyxMLEssSixJKSxqPTA7ajx0aGlzLmJsb2NrU2l6ZTtqKyspSltJK2pdXj16W2pdO2ZvcihqPTA7ajx0aGlzLmJsb2NrU2l6ZTtqKyspeltqXT1MW0sral19fX0sMjk0ODQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBz''@;'; put 'put ''ZT1UKDU3Nzk4KTtmdW5jdGlvbiBrKHYpe3RoaXMub3B0aW9ucz12LHRoaXMudHlwZT10aGlzLm9wdGlvbnMudHlwZSx0aGlzLmJsb2NrU2l6ZT04LHRoaXMuX2luaXQoKSx0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5wYWRkaW5n''@;'; put 'put ''PSExIT09di5wYWRkaW5nfVdlLmV4cG9ydHM9ayxrLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30say5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGhlKXtyZXR1cm4gMD09PWhlLmxlbmd0aD9bXToiZGVjcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fdXBkYXRlRGVjcnlwdChoZSk6dGhp''@;'; put 'put ''cy5fdXBkYXRlRW5jcnlwdChoZSl9LGsucHJvdG90eXBlLl9idWZmZXI9ZnVuY3Rpb24oaGUsSCl7Zm9yKHZhciBCPU1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aC10aGlzLmJ1ZmZlck9mZixoZS5sZW5ndGgtSCksTD0wO0w8QjtMKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYrTF09''@;'; put 'put ''aGVbSCtMXTtyZXR1cm4gdGhpcy5idWZmZXJPZmYrPUIsQn0say5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uKGhlLEgpe3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxoZSxIKSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMuYmxvY2tTaXplfSxrLnByb3RvdHlwZS5fdXBk''@;'; put 'put ''YXRlRW5jcnlwdD1mdW5jdGlvbihoZSl7dmFyIEg9MCxCPTAsSz1uZXcgQXJyYXkoKCh0aGlzLmJ1ZmZlck9mZitoZS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihIKz10aGlzLl9idWZmZXIoaGUsSCksdGhpcy5idWZmZXJP''@;'; put 'put ''ZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJihCKz10aGlzLl9mbHVzaEJ1ZmZlcihLLEIpKSk7Zm9yKHZhciBKPWhlLmxlbmd0aC0oaGUubGVuZ3RoLUgpJXRoaXMuYmxvY2tTaXplO0g8SjtIKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoaGUsSCxLLEIpLEIrPXRoaXMuYmxvY2tTaXpl''@;'; put 'put ''O2Zvcig7SDxoZS5sZW5ndGg7SCsrLHRoaXMuYnVmZmVyT2ZmKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdPWhlW0hdO3JldHVybiBLfSxrLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihoZSl7Zm9yKHZhciBIPTAsQj0wLEw9TWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9m''@;'; put 'put ''ZitoZS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplKS0xLEs9bmV3IEFycmF5KEwqdGhpcy5ibG9ja1NpemUpO0w+MDtMLS0pSCs9dGhpcy5fYnVmZmVyKGhlLEgpLEIrPXRoaXMuX2ZsdXNoQnVmZmVyKEssQik7cmV0dXJuIEgrPXRoaXMuX2J1ZmZlcihoZSxIKSxLfSxrLnByb3RvdHlwZS5maW5h''@;'; put 'put ''bD1mdW5jdGlvbihoZSl7dmFyIEgsQjtyZXR1cm4gaGUmJihIPXRoaXMudXBkYXRlKGhlKSksQj0iZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZmluYWxFbmNyeXB0KCk6dGhpcy5fZmluYWxEZWNyeXB0KCksSD9ILmNvbmNhdChCKTpCfSxrLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKGhl''@;'; put 'put ''LEgpe2lmKDA9PT1IKXJldHVybiExO2Zvcig7SDxoZS5sZW5ndGg7KWhlW0grK109MDtyZXR1cm4hMH0say5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdD1mdW5jdGlvbigpe2lmKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsdGhpcy5idWZmZXJPZmYpKXJldHVybltdO3ZhciBoZT1uZXcgQXJyYXko''@;'; put 'put ''dGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxoZSwwKSxoZX0say5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKGhlKXtyZXR1cm4gaGV9LGsucHJvdG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtzZS5lcXVhbCh0aGlzLmJ1ZmZlck9mZix0''@;'; put 'put ''aGlzLmJsb2NrU2l6ZSwiTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQiKTt2YXIgaGU9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fZmx1c2hCdWZmZXIoaGUsMCksdGhpcy5fdW5wYWQoaGUpfX0sMTQzNzQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1U''@;'; put 'put ''KDU3Nzk4KSxrPVQoNjY2OTgpLHY9VCg1MjI5NCksaGU9VCgyOTQ4NCk7ZnVuY3Rpb24gSCgpe3RoaXMudG1wPW5ldyBBcnJheSgyKSx0aGlzLmtleXM9bnVsbH1mdW5jdGlvbiBCKEspe2hlLmNhbGwodGhpcyxLKTt2YXIgSj1uZXcgSDt0aGlzLl9kZXNTdGF0ZT1KLHRoaXMuZGVyaXZlS2V5''@;'; put 'put ''cyhKLEsua2V5KX1rKEIsaGUpLFdlLmV4cG9ydHM9QixCLmNyZWF0ZT1mdW5jdGlvbihKKXtyZXR1cm4gbmV3IEIoSil9O3ZhciBMPVsxLDEsMiwyLDIsMiwyLDIsMSwyLDIsMiwyLDIsMiwxXTtCLnByb3RvdHlwZS5kZXJpdmVLZXlzPWZ1bmN0aW9uKEosSSl7Si5rZXlzPW5ldyBBcnJheSgz''@;'; put 'put ''Miksc2UuZXF1YWwoSS5sZW5ndGgsdGhpcy5ibG9ja1NpemUsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBSPXYucmVhZFVJbnQzMkJFKEksMCksRT12LnJlYWRVSW50MzJCRShJLDQpO3YucGMxKFIsRSxKLnRtcCwwKSxSPUoudG1wWzBdLEU9Si50bXBbMV07Zm9yKHZhciB6PTA7ejxKLmtl''@;'; put 'put ''eXMubGVuZ3RoO3orPTIpe3ZhciBqPUxbej4+PjFdO1I9di5yMjhzaGwoUixqKSxFPXYucjI4c2hsKEUsaiksdi5wYzIoUixFLEoua2V5cyx6KX19LEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oSixJLFIsRSl7dmFyIHo9dGhpcy5fZGVzU3RhdGUsaj12LnJlYWRVSW50MzJCRShKLEkp''@;'; put 'put ''LFY9di5yZWFkVUludDMyQkUoSixJKzQpO3YuaXAoaixWLHoudG1wLDApLGo9ei50bXBbMF0sVj16LnRtcFsxXSwiZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZW5jcnlwdCh6LGosVix6LnRtcCwwKTp0aGlzLl9kZWNyeXB0KHosaixWLHoudG1wLDApLFY9ei50bXBbMV0sdi53cml0ZVVJ''@;'; put 'put ''bnQzMkJFKFIsaj16LnRtcFswXSxFKSx2LndyaXRlVUludDMyQkUoUixWLEUrNCl9LEIucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oSixJKXtpZighMT09PXRoaXMucGFkZGluZylyZXR1cm4hMTtmb3IodmFyIFI9Si5sZW5ndGgtSSxFPUk7RTxKLmxlbmd0aDtFKyspSltFXT1SO3JldHVybiEw''@;'; put 'put ''fSxCLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oSil7aWYoITE9PT10aGlzLnBhZGRpbmcpcmV0dXJuIEo7Zm9yKHZhciBJPUpbSi5sZW5ndGgtMV0sUj1KLmxlbmd0aC1JO1I8Si5sZW5ndGg7UisrKXNlLmVxdWFsKEpbUl0sSSk7cmV0dXJuIEouc2xpY2UoMCxKLmxlbmd0aC1JKX0sQi5w''@;'; put 'put ''cm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24oSixJLFIsRSx6KXtmb3IodmFyIGo9SSxWPVIsRz0wO0c8Si5rZXlzLmxlbmd0aDtHKz0yKXt2YXIgVz1KLmtleXNbR10sVT1KLmtleXNbRysxXTt2LmV4cGFuZChWLEoudG1wLDApO3ZhciBxPXYuc3Vic3RpdHV0ZShXXj1KLnRtcFswXSxVXj1K''@;'; put 'put ''LnRtcFsxXSksbmU9VjtWPShqXnYucGVybXV0ZShxKSk+Pj4wLGo9bmV9di5yaXAoVixqLEUseil9LEIucHJvdG90eXBlLl9kZWNyeXB0PWZ1bmN0aW9uKEosSSxSLEUseil7Zm9yKHZhciBqPVIsVj1JLEc9Si5rZXlzLmxlbmd0aC0yO0c+PTA7Ry09Mil7dmFyIFc9Si5rZXlzW0ddLFU9Si5r''@;'; put 'put ''ZXlzW0crMV07di5leHBhbmQoaixKLnRtcCwwKTt2YXIgcT12LnN1YnN0aXR1dGUoV149Si50bXBbMF0sVV49Si50bXBbMV0pLG5lPWo7aj0oVl52LnBlcm11dGUocSkpPj4+MCxWPW5lfXYucmlwKGosVixFLHopfX0sNTk3MTA6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDU3''@;'; put 'put ''Nzk4KSxrPVQoNjY2OTgpLHY9VCgyOTQ4NCksaGU9VCgxNDM3NCk7ZnVuY3Rpb24gSChMLEspe3NlLmVxdWFsKEsubGVuZ3RoLDI0LCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgSj1LLnNsaWNlKDAsOCksST1LLnNsaWNlKDgsMTYpLFI9Sy5zbGljZSgxNiwyNCk7dGhpcy5jaXBoZXJzPSJl''@;'; put 'put ''bmNyeXB0Ij09PUw/W2hlLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Okp9KSxoZS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpJfSksaGUuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6Un0pXTpbaGUuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6Un0pLGhlLmNyZWF0ZSh7dHlw''@;'; put 'put ''ZToiZW5jcnlwdCIsa2V5Okl9KSxoZS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpKfSldfWZ1bmN0aW9uIEIoTCl7di5jYWxsKHRoaXMsTCk7dmFyIEs9bmV3IEgodGhpcy50eXBlLHRoaXMub3B0aW9ucy5rZXkpO3RoaXMuX2VkZVN0YXRlPUt9ayhCLHYpLFdlLmV4cG9ydHM9QixCLmNy''@;'; put 'put ''ZWF0ZT1mdW5jdGlvbihLKXtyZXR1cm4gbmV3IEIoSyl9LEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oSyxKLEksUil7dmFyIEU9dGhpcy5fZWRlU3RhdGU7RS5jaXBoZXJzWzBdLl91cGRhdGUoSyxKLEksUiksRS5jaXBoZXJzWzFdLl91cGRhdGUoSSxSLEksUiksRS5jaXBoZXJzWzJd''@;'; put 'put ''Ll91cGRhdGUoSSxSLEksUil9LEIucHJvdG90eXBlLl9wYWQ9aGUucHJvdG90eXBlLl9wYWQsQi5wcm90b3R5cGUuX3VucGFkPWhlLnByb3RvdHlwZS5fdW5wYWR9LDUyMjk0OihXZSx6ZSk9PnsidXNlIHN0cmljdCI7emUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGhlLEgpe3JldHVybihoZVsw''@;'; put 'put ''K0hdPDwyNHxoZVsxK0hdPDwxNnxoZVsyK0hdPDw4fGhlWzMrSF0pPj4+MH0semUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihoZSxILEIpe2hlWzArQl09SD4+PjI0LGhlWzErQl09SD4+PjE2JjI1NSxoZVsyK0JdPUg+Pj44JjI1NSxoZVszK0JdPTI1NSZIfSx6ZS5pcD1mdW5jdGlvbihoZSxI''@;'; put 'put ''LEIsTCl7Zm9yKHZhciBLPTAsSj0wLEk9NjtJPj0wO0ktPTIpe2Zvcih2YXIgUj0wO1I8PTI0O1IrPTgpSzw8PTEsS3w9SD4+PlIrSSYxO2ZvcihSPTA7Ujw9MjQ7Uis9OClLPDw9MSxLfD1oZT4+PlIrSSYxfWZvcihJPTY7ST49MDtJLT0yKXtmb3IoUj0xO1I8PTI1O1IrPTgpSjw8PTEsSnw9''@;'; put 'put ''SD4+PlIrSSYxO2ZvcihSPTE7Ujw9MjU7Uis9OClKPDw9MSxKfD1oZT4+PlIrSSYxfUJbTCswXT1LPj4+MCxCW0wrMV09Sj4+PjB9LHplLnJpcD1mdW5jdGlvbihoZSxILEIsTCl7Zm9yKHZhciBLPTAsSj0wLEk9MDtJPDQ7SSsrKWZvcih2YXIgUj0yNDtSPj0wO1ItPTgpSzw8PTEsS3w9SD4+''@;'; put 'put ''PlIrSSYxLEs8PD0xLEt8PWhlPj4+UitJJjE7Zm9yKEk9NDtJPDg7SSsrKWZvcihSPTI0O1I+PTA7Ui09OClKPDw9MSxKfD1IPj4+UitJJjEsSjw8PTEsSnw9aGU+Pj5SK0kmMTtCW0wrMF09Sz4+PjAsQltMKzFdPUo+Pj4wfSx6ZS5wYzE9ZnVuY3Rpb24oaGUsSCxCLEwpe2Zvcih2YXIgSz0w''@;'; put 'put ''LEo9MCxJPTc7ST49NTtJLS0pe2Zvcih2YXIgUj0wO1I8PTI0O1IrPTgpSzw8PTEsS3w9SD4+UitJJjE7Zm9yKFI9MDtSPD0yNDtSKz04KUs8PD0xLEt8PWhlPj5SK0kmMX1mb3IoUj0wO1I8PTI0O1IrPTgpSzw8PTEsS3w9SD4+UitJJjE7Zm9yKEk9MTtJPD0zO0krKyl7Zm9yKFI9MDtSPD0y''@;'; put 'put ''NDtSKz04KUo8PD0xLEp8PUg+PlIrSSYxO2ZvcihSPTA7Ujw9MjQ7Uis9OClKPDw9MSxKfD1oZT4+UitJJjF9Zm9yKFI9MDtSPD0yNDtSKz04KUo8PD0xLEp8PWhlPj5SK0kmMTtCW0wrMF09Sz4+PjAsQltMKzFdPUo+Pj4wfSx6ZS5yMjhzaGw9ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIGhlPDxI''@;'; put 'put ''JjI2ODQzNTQ1NXxoZT4+PjI4LUh9O3ZhciBUPVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUsMjYsMTUsNCwyNSwxOSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO3plLnBjMj1m''@;'; put 'put ''dW5jdGlvbihoZSxILEIsTCl7Zm9yKHZhciBLPTAsSj0wLEk9VC5sZW5ndGg+Pj4xLFI9MDtSPEk7UisrKUs8PD0xLEt8PWhlPj4+VFtSXSYxO2ZvcihSPUk7UjxULmxlbmd0aDtSKyspSjw8PTEsSnw9SD4+PlRbUl0mMTtCW0wrMF09Sz4+PjAsQltMKzFdPUo+Pj4wfSx6ZS5leHBhbmQ9ZnVu''@;'; put 'put ''Y3Rpb24oaGUsSCxCKXt2YXIgTD0wLEs9MDtMPSgxJmhlKTw8NXxoZT4+PjI3O2Zvcih2YXIgSj0yMztKPj0xNTtKLT00KUw8PD02LEx8PWhlPj4+SiY2Mztmb3IoSj0xMTtKPj0zO0otPTQpS3w9aGU+Pj5KJjYzLEs8PD02O0t8PSgzMSZoZSk8PDF8aGU+Pj4zMSxIW0IrMF09TD4+PjAsSFtC''@;'; put 'put ''KzFdPUs+Pj4wfTt2YXIgc2U9WzE0LDAsNCwxNSwxMyw3LDEsNCwyLDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUsOSw5LDUsMCwzLDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2''@;'; put 'put ''LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUsMTEsMiwzLDgsNCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1LDAsMTMsMTQsOCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMyww''@;'; put 'put ''LDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAsMSwyLDEzLDgsMTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQsMTMsOSwwLDgsNiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUs''@;'; put 'put ''MCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIsNSwxMiwxMSwxLDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwxMSwxLDcsMTMsMTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwx''@;'; put 'put ''Myw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMsMCw5LDE0LDgsOSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEzLDE1LDYsOSwxNSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywx''@;'; put 'put ''LDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgsOSw0LDE0LDMsMTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwxLDEwLDcsMSw2LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1''@;'; put 'put ''LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwxMywxMyw4LDEyLDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1LDIsOSwzLDIsMTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDks''@;'; put 'put ''NywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwxMCwxNCw4LDIsMTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07emUuc3Vic3RpdHV0ZT1mdW5jdGlvbihoZSxIKXtmb3IodmFyIEI9MCxMPTA7TDw0O0wrKylCPDw9NCxCfD1zZVs2NCpMKyhoZT4+PjE4LTYqTCY2''@;'; put 'put ''MyldO2ZvcihMPTA7TDw0O0wrKylCPDw9NCxCfD1zZVsyNTYrNjQqTCsoSD4+PjE4LTYqTCY2MyldO3JldHVybiBCPj4+MH07dmFyIGs9WzE2LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDdd''@;'; put 'put ''O3plLnBlcm11dGU9ZnVuY3Rpb24oaGUpe2Zvcih2YXIgSD0wLEI9MDtCPGsubGVuZ3RoO0IrKylIPDw9MSxIfD1oZT4+PmtbQl0mMTtyZXR1cm4gSD4+PjB9LHplLnBhZFNwbGl0PWZ1bmN0aW9uKGhlLEgsQil7Zm9yKHZhciBMPWhlLnRvU3RyaW5nKDIpO0wubGVuZ3RoPEg7KUw9IjAiK0w7''@;'; put 'put ''Zm9yKHZhciBLPVtdLEo9MDtKPEg7Sis9QilLLnB1c2goTC5zbGljZShKLEorQikpO3JldHVybiBLLmpvaW4oIiAiKX19LDQ1MTQ0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDcxMDk2KSxrPVQoMjk3OTkpLHY9VCg5NTU4MCksSD17YmluYXJ5OiEwLGhleDohMCxiYXNlNjQ6ITB9O3plLkRpZmZp''@;'; put 'put ''ZUhlbGxtYW5Hcm91cD16ZS5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9emUuZ2V0RGlmZmllSGVsbG1hbj1mdW5jdGlvbiBoZShMKXt2YXIgSz1uZXcgQnVmZmVyKGtbTF0ucHJpbWUsImhleCIpLEo9bmV3IEJ1ZmZlcihrW0xdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyB2KEssSil9LHplLmNy''@;'; put 'put ''ZWF0ZURpZmZpZUhlbGxtYW49emUuRGlmZmllSGVsbG1hbj1mdW5jdGlvbiBCKEwsSyxKLEkpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoSyl8fHZvaWQgMD09PUhbS10/QihMLCJiaW5hcnkiLEssSik6KEs9S3x8ImJpbmFyeSIsST1JfHwiYmluYXJ5IixKPUp8fG5ldyBCdWZmZXIoWzJdKSxC''@;'; put 'put ''dWZmZXIuaXNCdWZmZXIoSil8fChKPW5ldyBCdWZmZXIoSixJKSksIm51bWJlciI9PXR5cGVvZiBMP25ldyB2KHNlKEwsSiksSiwhMCk6KEJ1ZmZlci5pc0J1ZmZlcihMKXx8KEw9bmV3IEJ1ZmZlcihMLEspKSxuZXcgdihMLEosITApKSl9fSw5NTU4MDooV2UsemUsVCk9Pnt2YXIgc2U9VCg4''@;'; put 'put ''NzMwMSksdj1uZXcoVCg0ODYwNikpLGhlPW5ldyBzZSgyNCksSD1uZXcgc2UoMTEpLEI9bmV3IHNlKDEwKSxMPW5ldyBzZSgzKSxLPW5ldyBzZSg3KSxKPVQoNzEwOTYpLEk9VCg0NDAxOSk7ZnVuY3Rpb24gUihXLFUpe3JldHVybiBVPVV8fCJ1dGY4IixCdWZmZXIuaXNCdWZmZXIoVyl8fChX''@;'; put 'put ''PW5ldyBCdWZmZXIoVyxVKSksdGhpcy5fcHViPW5ldyBzZShXKSx0aGlzfWZ1bmN0aW9uIEUoVyxVKXtyZXR1cm4gVT1VfHwidXRmOCIsQnVmZmVyLmlzQnVmZmVyKFcpfHwoVz1uZXcgQnVmZmVyKFcsVSkpLHRoaXMuX3ByaXY9bmV3IHNlKFcpLHRoaXN9V2UuZXhwb3J0cz1WO3ZhciB6PXt9''@;'; put 'put ''O2Z1bmN0aW9uIFYoVyxVLHEpe3RoaXMuc2V0R2VuZXJhdG9yKFUpLHRoaXMuX19wcmltZT1uZXcgc2UoVyksdGhpcy5fcHJpbWU9c2UubW9udCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPVcubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJp''@;'; put 'put ''bWVDb2RlPXZvaWQgMCxxPyh0aGlzLnNldFB1YmxpY0tleT1SLHRoaXMuc2V0UHJpdmF0ZUtleT1FKTp0aGlzLl9wcmltZUNvZGU9OH1mdW5jdGlvbiBHKFcsVSl7dmFyIHE9bmV3IEJ1ZmZlcihXLnRvQXJyYXkoKSk7cmV0dXJuIFU/cS50b1N0cmluZyhVKTpxfU9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShWLnByb3RvdHlwZSwidmVyaWZ5RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdGhpcy5fcHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPWZ1bmN0aW9uIGooVyxVKXt2YXIgcT1VLnRvU3RyaW5nKCJoZXgiKSx0ZT1bcSxX''@;'; put 'put ''LnRvU3RyaW5nKDE2KV0uam9pbigiXyIpO2lmKHRlIGluIHopcmV0dXJuIHpbdGVdO3ZhciBpZSxuZT0wO2lmKFcuaXNFdmVuKCl8fCFKLnNpbXBsZVNpZXZlfHwhSi5mZXJtYXRUZXN0KFcpfHwhdi50ZXN0KFcpKXJldHVybiBuZSs9MSx6W3RlXT1uZSs9IjAyIj09PXF8fCIwNSI9PT1xPzg6''@;'; put 'put ''NCxuZTtzd2l0Y2godi50ZXN0KFcuc2hybigxKSl8fChuZSs9MikscSl7Y2FzZSIwMiI6Vy5tb2QoaGUpLmNtcChIKSYmKG5lKz04KTticmVhaztjYXNlIjA1IjooaWU9Vy5tb2QoQikpLmNtcChMKSYmaWUuY21wKEspJiYobmUrPTgpO2JyZWFrO2RlZmF1bHQ6bmUrPTR9cmV0dXJuIHpbdGVd''@;'; put 'put ''PW5lLG5lfSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1lQ29kZX19KSxWLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpdnx8KHRoaXMuX3ByaXY9bmV3IHNlKEkodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dl''@;'; put 'put ''bi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSxWLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKFcpe3ZhciBVPShXPShXPW5ldyBzZShXKSkudG9SZWQodGhpcy5fcHJpbWUpKS5yZWRQb3codGhpcy5f''@;'; put 'put ''cHJpdikuZnJvbVJlZCgpLHE9bmV3IEJ1ZmZlcihVLnRvQXJyYXkoKSksdGU9dGhpcy5nZXRQcmltZSgpO2lmKHEubGVuZ3RoPHRlLmxlbmd0aCl7dmFyIG5lPW5ldyBCdWZmZXIodGUubGVuZ3RoLXEubGVuZ3RoKTtuZS5maWxsKDApLHE9QnVmZmVyLmNvbmNhdChbbmUscV0pfXJldHVybiBx''@;'; put 'put ''fSxWLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oVSl7cmV0dXJuIEcodGhpcy5fcHViLFUpfSxWLnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKFUpe3JldHVybiBHKHRoaXMuX3ByaXYsVSl9LFYucHJvdG90eXBlLmdldFByaW1lPWZ1bmN0aW9uKFcpe3JldHVybiBH''@;'; put 'put ''KHRoaXMuX19wcmltZSxXKX0sVi5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yPWZ1bmN0aW9uKFcpe3JldHVybiBHKHRoaXMuX2dlbixXKX0sVi5wcm90b3R5cGUuc2V0R2VuZXJhdG9yPWZ1bmN0aW9uKFcsVSl7cmV0dXJuIFU9VXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihXKXx8KFc9bmV3IEJ1''@;'; put 'put ''ZmZlcihXLFUpKSx0aGlzLl9fZ2VuPVcsdGhpcy5fZ2VuPW5ldyBzZShXKSx0aGlzfX0sNzEwOTY6KFdlLHplLFQpPT57dmFyIHNlPVQoNDQwMTkpO1dlLmV4cG9ydHM9bmUsbmUuc2ltcGxlU2lldmU9cSxuZS5mZXJtYXRUZXN0PXRlO3ZhciBrPVQoODczMDEpLHY9bmV3IGsoMjQpLEg9bmV3''@;'; put 'put ''KFQoNDg2MDYpKSxCPW5ldyBrKDEpLEw9bmV3IGsoMiksSz1uZXcgayg1KSxSPShuZXcgaygxNiksbmV3IGsoOCksbmV3IGsoMTApKSxFPW5ldyBrKDMpLGo9KG5ldyBrKDcpLG5ldyBrKDExKSksVj1uZXcgayg0KSxXPShuZXcgaygxMiksbnVsbCk7ZnVuY3Rpb24gcShpZSl7Zm9yKHZhciBs''@;'; put 'put ''ZT1mdW5jdGlvbiBVKCl7aWYobnVsbCE9PVcpcmV0dXJuIFc7dmFyIGxlPVtdO2xlWzBdPTI7Zm9yKHZhciBkZT0xLHVlPTM7dWU8MTA0ODU3Njt1ZSs9Mil7Zm9yKHZhciBjZT1NYXRoLmNlaWwoTWF0aC5zcXJ0KHVlKSksWT0wO1k8ZGUmJmxlW1ldPD1jZSYmdWUlbGVbWV0hPTA7WSsrKTtk''@;'; put 'put ''ZSE9PVkmJmxlW1ldPD1jZXx8KGxlW2RlKytdPXVlKX1yZXR1cm4gVz1sZSxsZX0oKSxkZT0wO2RlPGxlLmxlbmd0aDtkZSsrKWlmKDA9PT1pZS5tb2RuKGxlW2RlXSkpcmV0dXJuIDA9PT1pZS5jbXBuKGxlW2RlXSk7cmV0dXJuITB9ZnVuY3Rpb24gdGUoaWUpe3ZhciBsZT1rLm1vbnQoaWUp''@;'; put 'put ''O3JldHVybiAwPT09TC50b1JlZChsZSkucmVkUG93KGllLnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpfWZ1bmN0aW9uIG5lKGllLGxlKXtpZihpZTwxNilyZXR1cm4gbmV3IGsoMj09PWxlfHw1PT09bGU/WzE0MCwxMjNdOlsxNDAsMzldKTtsZT1uZXcgayhsZSk7Zm9yKHZhciBkZSx1ZTs7''@;'; put 'put ''KXtmb3IoZGU9bmV3IGsoc2UoTWF0aC5jZWlsKGllLzgpKSk7ZGUuYml0TGVuZ3RoKCk+aWU7KWRlLmlzaHJuKDEpO2lmKGRlLmlzRXZlbigpJiZkZS5pYWRkKEIpLGRlLnRlc3RuKDEpfHxkZS5pYWRkKEwpLGxlLmNtcChMKSl7aWYoIWxlLmNtcChLKSlmb3IoO2RlLm1vZChSKS5jbXAoRSk7''@;'; put 'put ''KWRlLmlhZGQoVil9ZWxzZSBmb3IoO2RlLm1vZCh2KS5jbXAoaik7KWRlLmlhZGQoVik7aWYocSh1ZT1kZS5zaHJuKDEpKSYmcShkZSkmJnRlKHVlKSYmdGUoZGUpJiZILnRlc3QodWUpJiZILnRlc3QoZGUpKXJldHVybiBkZX19fSw4NzMwMTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24o''@;'; put 'put ''c2Usayl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoWSxiKXtpZighWSl0aHJvdyBuZXcgRXJyb3IoYnx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBoZShZLGIpe1kuc3VwZXJfPWI7dmFyIHg9ZnVuY3Rpb24oKXt9O3gucHJvdG90eXBlPWIucHJvdG90eXBlLFkucHJvdG90eXBlPW5l''@;'; put 'put ''dyB4LFkucHJvdG90eXBlLmNvbnN0cnVjdG9yPVl9ZnVuY3Rpb24gSChZLGIseCl7aWYoSC5pc0JOKFkpKXJldHVybiBZO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1ZJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJih4''@;'; put 'put ''PWIsYj0xMCksdGhpcy5faW5pdChZfHwwLGJ8fDEwLHh8fCJiZSIpKX12YXIgQjsib2JqZWN0Ij09dHlwZW9mIHNlP3NlLmV4cG9ydHM9SDprLkJOPUgsSC5CTj1ILEgud29yZFNpemU9MjY7dHJ5e0I9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cu''@;'; put 'put ''QnVmZmVyOlQoNzc0OCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBMKFksYil7dmFyIHg9WS5jaGFyQ29kZUF0KGIpO3JldHVybiB4Pj02NSYmeDw9NzA/eC01NTp4Pj05NyYmeDw9MTAyP3gtODc6eC00OCYxNX1mdW5jdGlvbiBLKFksYix4KXt2YXIgTj1MKFkseCk7cmV0dXJuIHgtMT49YiYm''@;'; put 'put ''KE58PUwoWSx4LTEpPDw0KSxOfWZ1bmN0aW9uIEooWSxiLHgsTil7Zm9yKHZhciBGPTAsZz1NYXRoLm1pbihZLmxlbmd0aCx4KSxDPWI7QzxnO0MrKyl7dmFyIE09WS5jaGFyQ29kZUF0KEMpLTQ4O0YqPU4sRis9TT49NDk/TS00OSsxMDpNPj0xNz9NLTE3KzEwOk19cmV0dXJuIEZ9SC5pc0JO''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgSHx8bnVsbCE9PWImJiJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUgud29yZFNpemUmJkFycmF5LmlzQXJyYXkoYi53b3Jkcyl9LEgubWF4PWZ1bmN0aW9uKGIseCl7cmV0dXJuIGIuY21wKHgpPjA/''@;'; put 'put ''Yjp4fSxILm1pbj1mdW5jdGlvbihiLHgpe3JldHVybiBiLmNtcCh4KTwwP2I6eH0sSC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oYix4LE4pe2lmKCJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihiLHgsTik7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXJldHVybiB0''@;'; put 'put ''aGlzLl9pbml0QXJyYXkoYix4LE4pOyJoZXgiPT09eCYmKHg9MTYpLHYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNik7dmFyIEY9MDsiLSI9PT0oYj1iLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKEYrKyx0aGlzLm5lZ2F0aXZlPTEpLEY8Yi5sZW5ndGgmJigxNj09PXg/dGhp''@;'; put 'put ''cy5fcGFyc2VIZXgoYixGLE4pOih0aGlzLl9wYXJzZUJhc2UoYix4LEYpLCJsZSI9PT1OJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseCxOKSkpfSxILnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihiLHgsTil7YjwwJiYodGhpcy5uZWdhdGl2ZT0xLGI9LWIpLGI8Njcx''@;'; put 'put ''MDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmJdLHRoaXMubGVuZ3RoPTEpOmI8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToodihiPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4''@;'; put 'put ''ODYzJmIsYi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09TiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsTil9LEgucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oYix4LE4pe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiLmxlbmd0aCksYi5s''@;'; put 'put ''ZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoYi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09MDt2''@;'; put 'put ''YXIgZyxDLE09MDtpZigiYmUiPT09Tilmb3IoRj1iLmxlbmd0aC0xLGc9MDtGPj0wO0YtPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltGXXxiW0YtMV08PDh8YltGLTJdPDwxNik8PE0mNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1NJjY3MTA4ODYzLChNKz0yNCk+PTI2JiYoTS09MjYs''@;'; put 'put ''ZysrKTtlbHNlIGlmKCJsZSI9PT1OKWZvcihGPTAsZz0wO0Y8Yi5sZW5ndGg7Ris9Myl0aGlzLndvcmRzW2ddfD0oQz1iW0ZdfGJbRisxXTw8OHxiW0YrMl08PDE2KTw8TSY2NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LU0mNjcxMDg4NjMsKE0rPTI0KT49MjYmJihNLT0yNixnKysp''@;'; put 'put ''O3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihiLHgsTil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChiLmxlbmd0aC14KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBGPTA7Rjx0aGlzLmxlbmd0aDtGKyspdGhp''@;'; put 'put ''cy53b3Jkc1tGXT0wO3ZhciBNLGc9MCxDPTA7aWYoImJlIj09PU4pZm9yKEY9Yi5sZW5ndGgtMTtGPj14O0YtPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7ZWxzZSBmb3IoRj0oYi5s''@;'; put 'put ''ZW5ndGgteCklMj09MD94KzE6eDtGPGIubGVuZ3RoO0YrPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9u''@;'; put 'put ''KGIseCxOKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgRj0wLGc9MTtnPD02NzEwODg2MztnKj14KUYrKztGLS0sZz1nL3h8MDtmb3IodmFyIEM9Yi5sZW5ndGgtTixNPUMlRix5PU1hdGgubWluKEMsQy1NKStOLHA9MCxTPU47Uzx5O1MrPUYpcD1KKGIsUyxTK0YseCks''@;'; put 'put ''dGhpcy5pbXVsbihnKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09TSl7dmFyIFE9MTtmb3IocD1KKGIsUyxiLmxlbmd0aCx4KSxTPTA7UzxNO1MrKylRKj14O3RoaXMuaW11bG4oUSksdGhpcy53b3Jkc1swXStwPDY3MTA4''@;'; put 'put ''ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGIpe2Iud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoO3grKyliLndvcmRzW3hdPXRoaXMud29yZHNbeF07''@;'; put 'put ''Yi5sZW5ndGg9dGhpcy5sZW5ndGgsYi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGIucmVkPXRoaXMucmVkfSxILnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyBIKG51bGwpO3JldHVybiB0aGlzLmNvcHkoYiksYn0sSC5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihiKXtm''@;'; put 'put ''b3IoO3RoaXMubGVuZ3RoPGI7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sSC5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlz''@;'; put 'put ''Ll9ub3JtU2lnbigpfSxILnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sSC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJO''@;'; put 'put ''LVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgST1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAw''@;'; put 'put ''MDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxSPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYs''@;'; put 'put ''Niw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLEU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwx''@;'; put 'put ''Njc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3''@;'; put 'put ''NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gaihZLGIseCl7eC5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlkubmVnYXRpdmU7dmFyIE49WS5sZW5ndGgrYi5sZW5ndGh8MDt4Lmxlbmd0aD1OLE49Ti0xfDA7dmFyIEY9MHxZLndvcmRzWzBdLGc9MHxiLndvcmRzWzBdLEM9RipnLHk9Qy82NzEwODg2NHwwO3gu''@;'; put 'put ''d29yZHNbMF09NjcxMDg4NjMmQztmb3IodmFyIHA9MTtwPE47cCsrKXtmb3IodmFyIFM9eT4+PjI2LFE9NjcxMDg4NjMmeSxyZT1NYXRoLm1pbihwLGIubGVuZ3RoLTEpLGZlPU1hdGgubWF4KDAscC1ZLmxlbmd0aCsxKTtmZTw9cmU7ZmUrKylTKz0oQz0oRj0wfFkud29yZHNbcC1mZXwwXSkq''@;'; put 'put ''KGc9MHxiLndvcmRzW2ZlXSkrUSkvNjcxMDg4NjR8MCxRPTY3MTA4ODYzJkM7eC53b3Jkc1twXT0wfFEseT0wfFN9cmV0dXJuIDAhPT15P3gud29yZHNbcF09MHx5OngubGVuZ3RoLS0seC5zdHJpcCgpfUgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGIseCl7dmFyIE47aWYoeD0wfHh8''@;'; put 'put ''fDEsMTY9PT0oYj1ifHwxMCl8fCJoZXgiPT09Yil7Tj0iIjtmb3IodmFyIEY9MCxnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLndvcmRzW0NdLHk9KDE2Nzc3MjE1JihNPDxGfGcpKS50b1N0cmluZygxNik7Tj0wIT0oZz1NPj4+MjQtRiYxNjc3NzIxNSl8fEMhPT10aGlz''@;'; put 'put ''Lmxlbmd0aC0xP0lbNi15Lmxlbmd0aF0reStOOnkrTiwoRis9Mik+PTI2JiYoRi09MjYsQy0tKX1mb3IoMCE9PWcmJihOPWcudG9TdHJpbmcoMTYpK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn1pZihiPT09KDB8YikmJmI+''@;'; put 'put ''PTImJmI8PTM2KXt2YXIgcD1SW2JdLFM9RVtiXTtOPSIiO3ZhciBRPXRoaXMuY2xvbmUoKTtmb3IoUS5uZWdhdGl2ZT0wOyFRLmlzWmVybygpOyl7dmFyIHJlPVEubW9kbihTKS50b1N0cmluZyhiKTtOPShRPVEuaWRpdm4oUykpLmlzWmVybygpP3JlK046SVtwLXJlLmxlbmd0aF0rcmUrTn1m''@;'; put 'put ''b3IodGhpcy5pc1plcm8oKSYmKE49IjAiK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn12KCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEgucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IGI9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2IrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9iKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmdighMSwi''@;'; put 'put ''TnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWI6Yn0sSC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxILnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihiLHgpe3JldHVy''@;'; put 'put ''biB2KHR5cGVvZiBCPCJ1IiksdGhpcy50b0FycmF5TGlrZShCLGIseCl9LEgucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxiLHgpfSxILnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihiLHgsTil7dmFyIEY9dGhpcy5i''@;'; put 'put ''eXRlTGVuZ3RoKCksZz1OfHxNYXRoLm1heCgxLEYpO3YoRjw9ZywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHYoZz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHkscCxDPSJsZSI9PT14LE09bmV3IGIoZyksUz10aGlz''@;'; put 'put ''LmNsb25lKCk7aWYoQyl7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtwXT15O2Zvcig7cDxnO3ArKylNW3BdPTB9ZWxzZXtmb3IocD0wO3A8Zy1GO3ArKylNW3BdPTA7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5p''@;'; put 'put ''dXNocm4oOCksTVtnLXAtMV09eX1yZXR1cm4gTX0sSC5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGIpe3JldHVybiAzMi1NYXRoLmNsejMyKGIpfTpmdW5jdGlvbihiKXt2YXIgeD1iLE49MDtyZXR1cm4geD49NDA5NiYmKE4rPTEzLHg+Pj49MTMpLHg+PTY0JiYo''@;'; put 'put ''Tis9Nyx4Pj4+PTcpLHg+PTgmJihOKz00LHg+Pj49NCkseD49MiYmKE4rPTIseD4+Pj0yKSxOK3h9LEgucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihiKXtpZigwPT09YilyZXR1cm4gMjY7dmFyIHg9YixOPTA7cmV0dXJuIDgxOTEmeHx8KE4rPTEzLHg+Pj49MTMpLDEyNyZ4fHwoTis9''@;'; put 'put ''Nyx4Pj4+PTcpLDE1Jnh8fChOKz00LHg+Pj49NCksMyZ4fHwoTis9Mix4Pj4+PTIpLDEmeHx8TisrLE59LEgucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3Ro''@;'; put 'put ''LTEpK3h9LEgucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGI9MCx4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBOPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbeF0pO2lmKGIrPU4sMjYhPT1OKWJyZWFrfXJldHVybiBi''@;'; put 'put ''fSxILnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxILnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oYikuaWFkZG4oMSk6dGhpcy5j''@;'; put 'put ''bG9uZSgpfSxILnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy50ZXN0bihiLTEpP3RoaXMubm90bihiKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxILnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sSC5w''@;'; put 'put ''cm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEgucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEgucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oYil7Zm9yKDt0aGlz''@;'; put 'put ''Lmxlbmd0aDxiLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgeD0wO3g8Yi5sZW5ndGg7eCsrKXRoaXMud29yZHNbeF09dGhpcy53b3Jkc1t4XXxiLndvcmRzW3hdO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlvcj1mdW5jdGlvbihiKXtyZXR1''@;'; put 'put ''cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxILnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihiKTpiLmNsb25lKCkuaW9yKHRoaXMpfSxILnByb3RvdHlwZS51b3I9ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxILnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihiKXt2YXIgeDt4PXRoaXMubGVuZ3RoPmIubGVuZ3RoP2I6dGhpcztmb3IodmFyIE49MDtOPHgubGVu''@;'; put 'put ''Z3RoO04rKyl0aGlzLndvcmRzW05dPXRoaXMud29yZHNbTl0mYi53b3Jkc1tOXTtyZXR1cm4gdGhpcy5sZW5ndGg9eC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1''@;'; put 'put ''YW5kKGIpfSxILnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxILnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90''@;'; put 'put ''aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxILnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgeCxOO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyh4PXRoaXMsTj1iKTooeD1iLE49dGhpcyk7Zm9yKHZhciBGPTA7RjxOLmxlbmd0aDtGKyspdGhpcy53b3Jk''@;'; put 'put ''c1tGXT14LndvcmRzW0ZdXk4ud29yZHNbRl07aWYodGhpcyE9PXgpZm9yKDtGPHgubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXgud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPXgubGVuZ3RoLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigw''@;'; put 'put ''PT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihiKX0sSC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihiKTpiLmNsb25lKCkuaXhvcih0aGlzKX0sSC5wcm90b3R5cGUudXhvcj1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGIpOmIuY2xvbmUoKS5pdXhvcih0aGlzKX0sSC5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciB4PTB8TWF0aC5jZWlsKGIvMjYpLE49''@;'; put 'put ''YiUyNjt0aGlzLl9leHBhbmQoeCksTj4wJiZ4LS07Zm9yKHZhciBGPTA7Rjx4O0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJn50aGlzLndvcmRzW0ZdO3JldHVybiBOPjAmJih0aGlzLndvcmRzW0ZdPX50aGlzLndvcmRzW0ZdJjY3MTA4ODYzPj4yNi1OKSx0aGlzLnN0cmlwKCl9LEgucHJv''@;'; put 'put ''dG90eXBlLm5vdG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihiKX0sSC5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihiLHgpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgTj1iLzI2fDAsRj1iJTI2O3JldHVybiB0aGlzLl9leHBhbmQoTisxKSx0aGlzLndv''@;'; put 'put ''cmRzW05dPXg/dGhpcy53b3Jkc1tOXXwxPDxGOnRoaXMud29yZHNbTl0mfigxPDxGKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYil7dmFyIHgsTixGO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHg9''@;'; put 'put ''dGhpcy5pc3ViKGIpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIGIubmVnYXRpdmU9MCx4PXRoaXMuaXN1YihiKSxiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5iLmxlbmd0''@;'; put 'put ''aD8oTj10aGlzLEY9Yik6KE49YixGPXRoaXMpO2Zvcih2YXIgZz0wLEM9MDtDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJih4PSgwfE4ud29yZHNbQ10pKygwfEYud29yZHNbQ10pK2cpLGc9eD4+PjI2O2Zvcig7MCE9PWcmJkM8Ti5sZW5ndGg7QysrKXRoaXMud29yZHNb''@;'; put 'put ''Q109NjcxMDg4NjMmKHg9KDB8Ti53b3Jkc1tDXSkrZyksZz14Pj4+MjY7aWYodGhpcy5sZW5ndGg9Ti5sZW5ndGgsMCE9PWcpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Zyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoTiE9PXRoaXMpZm9yKDtDPE4ubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPU4u''@;'; put 'put ''d29yZHNbQ107cmV0dXJuIHRoaXN9LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiKXt2YXIgeDtyZXR1cm4gMCE9PWIubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAseD10aGlzLnN1YihiKSxiLm5lZ2F0aXZlXj0xLHgpOjA9PT1iLm5lZ2F0aXZlJiYwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHg9Yi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHgpOnRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGIpOmIuY2xvbmUoKS5pYWRkKHRoaXMpfSxILnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIpe2lmKDAhPT1iLm5l''@;'; put 'put ''Z2F0aXZlKXtiLm5lZ2F0aXZlPTA7dmFyIHg9dGhpcy5pYWRkKGIpO3JldHVybiBiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2''@;'; put 'put ''YXIgRixnLE49dGhpcy5jbXAoYik7aWYoMD09PU4pcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO04+MD8oRj10aGlzLGc9Yik6KEY9YixnPXRoaXMpO2Zvcih2YXIgQz0wLE09MDtNPGcubGVuZ3RoO00rKylDPSh4PSgwfEYud29yZHNb''@;'; put 'put ''TV0pLSgwfGcud29yZHNbTV0pK0MpPj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJng7Zm9yKDswIT09QyYmTTxGLmxlbmd0aDtNKyspQz0oeD0oMHxGLndvcmRzW01dKStDKT4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ4O2lmKDA9PT1DJiZNPEYubGVuZ3RoJiZGIT09dGhpcylmb3Io''@;'; put 'put ''O008Ri5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Ri53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsTSksRiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlz''@;'; put 'put ''LmNsb25lKCkuaXN1YihiKX07dmFyIFY9ZnVuY3Rpb24oYix4LE4pe3ZhciB5LHAsUyxGPWIud29yZHMsZz14LndvcmRzLEM9Ti53b3JkcyxNPTAsUT0wfEZbMF0scmU9ODE5MSZRLGZlPVE+Pj4xMyxtZT0wfEZbMV0sa2U9ODE5MSZtZSxUZT1tZT4+PjEzLFBlPTB8RlsyXSxGZT04MTkxJlBl''@;'; put 'put ''LE5lPVBlPj4+MTMsTGU9MHxGWzNdLEJlPTgxOTEmTGUsSGU9TGU+Pj4xMyxRZT0wfEZbNF0sbXQ9ODE5MSZRZSxLZT1RZT4+PjEzLHdlPTB8Rls1XSxJZT04MTkxJndlLE9lPXdlPj4+MTMsZXQ9MHxGWzZdLG50PTgxOTEmZXQscWU9ZXQ+Pj4xMyxodD0wfEZbN10sRWU9ODE5MSZodCxEZT1o''@;'; put 'put ''dD4+PjEzLCRlPTB8Rls4XSxhdD04MTkxJiRlLGN0PSRlPj4+MTMsT3Q9MHxGWzldLFB0PTgxOTEmT3QsQXQ9T3Q+Pj4xMyxKdD0wfGdbMF0sbW49ODE5MSZKdCxOdD1KdD4+PjEzLGJuPTB8Z1sxXSxHbj04MTkxJmJuLG9uPWJuPj4+MTMsJG49MHxnWzJdLE5uPTgxOTEmJG4scHQ9JG4+Pj4x''@;'; put 'put ''Myxwbj0wfGdbM10saG49ODE5MSZwbixDdD1wbj4+PjEzLGVuPTB8Z1s0XSxfdD04MTkxJmVuLFZ0PWVuPj4+MTMsX249MHxnWzVdLG90PTgxOTEmX24sSXQ9X24+Pj4xMyxubj0wfGdbNl0sRHQ9ODE5MSZubix2dD1ubj4+PjEzLEd0PTB8Z1s3XSxMbj04MTkxJkd0LHp0PUd0Pj4+MTMsTW49''@;'; put 'put ''MHxnWzhdLFRuPTgxOTEmTW4sc249TW4+Pj4xMyxCbj0wfGdbOV0sRm49ODE5MSZCbixxdD1Cbj4+PjEzO04ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPTE5O3ZhciBIbj0oTSsoeT1NYXRoLmltdWwocmUsbW4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKHJl''@;'; put 'put ''LE50KSkrTWF0aC5pbXVsKGZlLG1uKXwwKSk8PDEzKXwwO009KChTPU1hdGguaW11bChmZSxOdCkpKyhwPj4+MTMpfDApKyhIbj4+PjI2KXwwLEhuJj02NzEwODg2Myx5PU1hdGguaW11bChrZSxtbikscD0ocD1NYXRoLmltdWwoa2UsTnQpKStNYXRoLmltdWwoVGUsbW4pfDAsUz1NYXRoLmlt''@;'; put 'put ''dWwoVGUsTnQpO3ZhciBpaT0oTSsoeT15K01hdGguaW11bChyZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLG9uKXwwKStNYXRoLmltdWwoZmUsR24pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsb24pfDApKyhwPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlp''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChGZSxtbikscD0ocD1NYXRoLmltdWwoRmUsTnQpKStNYXRoLmltdWwoTmUsbW4pfDAsUz1NYXRoLmltdWwoTmUsTnQpLHk9eStNYXRoLmltdWwoa2UsR24pfDAscD0ocD1wK01hdGguaW11bChrZSxvbil8MCkrTWF0aC5pbXVsKFRlLEduKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoVGUsb24pfDA7dmFyIGNuPShNKyh5PXkrTWF0aC5pbXVsKHJlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUscHQpfDApK01hdGguaW11bChmZSxObil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxwdCl8MCkrKHA+Pj4xMyl8MCkrKGNuPj4+''@;'; put 'put ''MjYpfDAsY24mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEJlLG1uKSxwPShwPU1hdGguaW11bChCZSxOdCkpK01hdGguaW11bChIZSxtbil8MCxTPU1hdGguaW11bChIZSxOdCkseT15K01hdGguaW11bChGZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLG9uKXwwKStNYXRoLmltdWwoTmUsR24p''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChOZSxvbil8MCx5PXkrTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UscHQpfDApK01hdGguaW11bChUZSxObil8MCxTPVMrTWF0aC5pbXVsKFRlLHB0KXwwO3ZhciBqbj0oTSsoeT15K01hdGguaW11bChyZSxobil8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKHJlLEN0KXwwKStNYXRoLmltdWwoZmUsaG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsQ3QpfDApKyhwPj4+MTMpfDApKyhqbj4+PjI2KXwwLGpuJj02NzEwODg2Myx5PU1hdGguaW11bChtdCxtbikscD0ocD1NYXRoLmltdWwobXQsTnQpKStNYXRo''@;'; put 'put ''LmltdWwoS2UsbW4pfDAsUz1NYXRoLmltdWwoS2UsTnQpLHk9eStNYXRoLmltdWwoQmUsR24pfDAscD0ocD1wK01hdGguaW11bChCZSxvbil8MCkrTWF0aC5pbXVsKEhlLEduKXwwLFM9UytNYXRoLmltdWwoSGUsb24pfDAseT15K01hdGguaW11bChGZSxObil8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEZlLHB0KXwwKStNYXRoLmltdWwoTmUsTm4pfDAsUz1TK01hdGguaW11bChOZSxwdCl8MCx5PXkrTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsQ3QpfDApK01hdGguaW11bChUZSxobil8MCxTPVMrTWF0aC5pbXVsKFRlLEN0KXwwO3ZhciBYcj0oTSsoeT15K01hdGgu''@;'; put 'put ''aW11bChyZSxfdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLFZ0KXwwKStNYXRoLmltdWwoZmUsX3QpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsVnQpfDApKyhwPj4+MTMpfDApKyhYcj4+PjI2KXwwLFhyJj02NzEwODg2Myx5PU1hdGguaW11bChJZSxtbiks''@;'; put 'put ''cD0ocD1NYXRoLmltdWwoSWUsTnQpKStNYXRoLmltdWwoT2UsbW4pfDAsUz1NYXRoLmltdWwoT2UsTnQpLHk9eStNYXRoLmltdWwobXQsR24pfDAscD0ocD1wK01hdGguaW11bChtdCxvbil8MCkrTWF0aC5pbXVsKEtlLEduKXwwLFM9UytNYXRoLmltdWwoS2Usb24pfDAseT15K01hdGguaW11''@;'; put 'put ''bChCZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHB0KXwwKStNYXRoLmltdWwoSGUsTm4pfDAsUz1TK01hdGguaW11bChIZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEZlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsQ3QpfDApK01hdGguaW11bChOZSxobil8MCxTPVMrTWF0aC5pbXVsKE5l''@;'; put 'put ''LEN0KXwwLHk9eStNYXRoLmltdWwoa2UsX3QpfDAscD0ocD1wK01hdGguaW11bChrZSxWdCl8MCkrTWF0aC5pbXVsKFRlLF90KXwwLFM9UytNYXRoLmltdWwoVGUsVnQpfDA7dmFyIHZpPShNKyh5PXkrTWF0aC5pbXVsKHJlLG90KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUs''@;'; put 'put ''SXQpfDApK01hdGguaW11bChmZSxvdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxJdCl8MCkrKHA+Pj4xMyl8MCkrKHZpPj4+MjYpfDAsdmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKG50LG1uKSxwPShwPU1hdGguaW11bChudCxOdCkpK01hdGguaW11bChxZSxtbil8MCxTPU1h''@;'; put 'put ''dGguaW11bChxZSxOdCkseT15K01hdGguaW11bChJZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEllLG9uKXwwKStNYXRoLmltdWwoT2UsR24pfDAsUz1TK01hdGguaW11bChPZSxvbil8MCx5PXkrTWF0aC5pbXVsKG10LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwobXQscHQpfDApK01hdGguaW11''@;'; put 'put ''bChLZSxObil8MCxTPVMrTWF0aC5pbXVsKEtlLHB0KXwwLHk9eStNYXRoLmltdWwoQmUsaG4pfDAscD0ocD1wK01hdGguaW11bChCZSxDdCl8MCkrTWF0aC5pbXVsKEhlLGhuKXwwLFM9UytNYXRoLmltdWwoSGUsQ3QpfDAseT15K01hdGguaW11bChGZSxfdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEZlLFZ0KXwwKStNYXRoLmltdWwoTmUsX3QpfDAsUz1TK01hdGguaW11bChOZSxWdCl8MCx5PXkrTWF0aC5pbXVsKGtlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsSXQpfDApK01hdGguaW11bChUZSxvdCl8MCxTPVMrTWF0aC5pbXVsKFRlLEl0KXwwO3ZhciBFcj0oTSsoeT15K01hdGgu''@;'; put 'put ''aW11bChyZSxEdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHZ0KXwwKStNYXRoLmltdWwoZmUsRHQpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsdnQpfDApKyhwPj4+MTMpfDApKyhFcj4+PjI2KXwwLEVyJj02NzEwODg2Myx5PU1hdGguaW11bChFZSxtbiks''@;'; put 'put ''cD0ocD1NYXRoLmltdWwoRWUsTnQpKStNYXRoLmltdWwoRGUsbW4pfDAsUz1NYXRoLmltdWwoRGUsTnQpLHk9eStNYXRoLmltdWwobnQsR24pfDAscD0ocD1wK01hdGguaW11bChudCxvbil8MCkrTWF0aC5pbXVsKHFlLEduKXwwLFM9UytNYXRoLmltdWwocWUsb24pfDAseT15K01hdGguaW11''@;'; put 'put ''bChJZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEllLHB0KXwwKStNYXRoLmltdWwoT2UsTm4pfDAsUz1TK01hdGguaW11bChPZSxwdCl8MCx5PXkrTWF0aC5pbXVsKG10LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsQ3QpfDApK01hdGguaW11bChLZSxobil8MCxTPVMrTWF0aC5pbXVsKEtl''@;'; put 'put ''LEN0KXwwLHk9eStNYXRoLmltdWwoQmUsX3QpfDAscD0ocD1wK01hdGguaW11bChCZSxWdCl8MCkrTWF0aC5pbXVsKEhlLF90KXwwLFM9UytNYXRoLmltdWwoSGUsVnQpfDAseT15K01hdGguaW11bChGZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEl0KXwwKStNYXRoLmltdWwoTmUsb3Qp''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChOZSxJdCl8MCx5PXkrTWF0aC5pbXVsKGtlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsdnQpfDApK01hdGguaW11bChUZSxEdCl8MCxTPVMrTWF0aC5pbXVsKFRlLHZ0KXwwO3ZhciBZaT0oTSsoeT15K01hdGguaW11bChyZSxMbil8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKHJlLHp0KXwwKStNYXRoLmltdWwoZmUsTG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsenQpfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2Myx5PU1hdGguaW11bChhdCxtbikscD0ocD1NYXRoLmltdWwoYXQsTnQpKStNYXRo''@;'; put 'put ''LmltdWwoY3QsbW4pfDAsUz1NYXRoLmltdWwoY3QsTnQpLHk9eStNYXRoLmltdWwoRWUsR24pfDAscD0ocD1wK01hdGguaW11bChFZSxvbil8MCkrTWF0aC5pbXVsKERlLEduKXwwLFM9UytNYXRoLmltdWwoRGUsb24pfDAseT15K01hdGguaW11bChudCxObil8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KG50LHB0KXwwKStNYXRoLmltdWwocWUsTm4pfDAsUz1TK01hdGguaW11bChxZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEllLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsQ3QpfDApK01hdGguaW11bChPZSxobil8MCxTPVMrTWF0aC5pbXVsKE9lLEN0KXwwLHk9eStNYXRoLmltdWwobXQsX3Qp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChtdCxWdCl8MCkrTWF0aC5pbXVsKEtlLF90KXwwLFM9UytNYXRoLmltdWwoS2UsVnQpfDAseT15K01hdGguaW11bChCZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEJlLEl0KXwwKStNYXRoLmltdWwoSGUsb3QpfDAsUz1TK01hdGguaW11bChIZSxJdCl8MCx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKEZlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsdnQpfDApK01hdGguaW11bChOZSxEdCl8MCxTPVMrTWF0aC5pbXVsKE5lLHZ0KXwwLHk9eStNYXRoLmltdWwoa2UsTG4pfDAscD0ocD1wK01hdGguaW11bChrZSx6dCl8MCkrTWF0aC5pbXVsKFRlLExuKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoVGUsenQpfDA7dmFyIEpyPShNKyh5PXkrTWF0aC5pbXVsKHJlLFRuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsc24pfDApK01hdGguaW11bChmZSxUbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxzbil8MCkrKHA+Pj4xMyl8MCkrKEpyPj4+''@;'; put 'put ''MjYpfDAsSnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG1uKSxwPShwPU1hdGguaW11bChQdCxOdCkpK01hdGguaW11bChBdCxtbil8MCxTPU1hdGguaW11bChBdCxOdCkseT15K01hdGguaW11bChhdCxHbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LG9uKXwwKStNYXRoLmltdWwoY3QsR24p''@;'; put 'put ''fDAsUz1TK01hdGguaW11bChjdCxvbil8MCx5PXkrTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscHQpfDApK01hdGguaW11bChEZSxObil8MCxTPVMrTWF0aC5pbXVsKERlLHB0KXwwLHk9eStNYXRoLmltdWwobnQsaG4pfDAscD0ocD1wK01hdGguaW11bChudCxDdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKHFlLGhuKXwwLFM9UytNYXRoLmltdWwocWUsQ3QpfDAseT15K01hdGguaW11bChJZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLFZ0KXwwKStNYXRoLmltdWwoT2UsX3QpfDAsUz1TK01hdGguaW11bChPZSxWdCl8MCx5PXkrTWF0aC5pbXVsKG10LG90KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwobXQsSXQpfDApK01hdGguaW11bChLZSxvdCl8MCxTPVMrTWF0aC5pbXVsKEtlLEl0KXwwLHk9eStNYXRoLmltdWwoQmUsRHQpfDAscD0ocD1wK01hdGguaW11bChCZSx2dCl8MCkrTWF0aC5pbXVsKEhlLER0KXwwLFM9UytNYXRoLmltdWwoSGUsdnQpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChGZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHp0KXwwKStNYXRoLmltdWwoTmUsTG4pfDAsUz1TK01hdGguaW11bChOZSx6dCl8MCx5PXkrTWF0aC5pbXVsKGtlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usc24pfDApK01hdGguaW11bChUZSxUbil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KFRlLHNuKXwwO3ZhciBhbz0oTSsoeT15K01hdGguaW11bChyZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHF0KXwwKStNYXRoLmltdWwoZmUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUscXQpfDApKyhwPj4+MTMpfDApKyhhbz4+PjI2KXwwLGFv''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChQdCxHbikscD0ocD1NYXRoLmltdWwoUHQsb24pKStNYXRoLmltdWwoQXQsR24pfDAsUz1NYXRoLmltdWwoQXQsb24pLHk9eStNYXRoLmltdWwoYXQsTm4pfDAscD0ocD1wK01hdGguaW11bChhdCxwdCl8MCkrTWF0aC5pbXVsKGN0LE5uKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoY3QscHQpfDAseT15K01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLEN0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsUz1TK01hdGguaW11bChEZSxDdCl8MCx5PXkrTWF0aC5pbXVsKG50LF90KXwwLHA9KHA9cCtNYXRoLmltdWwobnQsVnQpfDApK01hdGgu''@;'; put 'put ''aW11bChxZSxfdCl8MCxTPVMrTWF0aC5pbXVsKHFlLFZ0KXwwLHk9eStNYXRoLmltdWwoSWUsb3QpfDAscD0ocD1wK01hdGguaW11bChJZSxJdCl8MCkrTWF0aC5pbXVsKE9lLG90KXwwLFM9UytNYXRoLmltdWwoT2UsSXQpfDAseT15K01hdGguaW11bChtdCxEdCl8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKG10LHZ0KXwwKStNYXRoLmltdWwoS2UsRHQpfDAsUz1TK01hdGguaW11bChLZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEJlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsenQpfDApK01hdGguaW11bChIZSxMbil8MCxTPVMrTWF0aC5pbXVsKEhlLHp0KXwwLHk9eStNYXRoLmltdWwoRmUs''@;'; put 'put ''VG4pfDAscD0ocD1wK01hdGguaW11bChGZSxzbil8MCkrTWF0aC5pbXVsKE5lLFRuKXwwLFM9UytNYXRoLmltdWwoTmUsc24pfDA7dmFyIEJyPShNKyh5PXkrTWF0aC5pbXVsKGtlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoa2UscXQpfDApK01hdGguaW11bChUZSxGbil8''@;'; put 'put ''MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChUZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LE5uKSxwPShwPU1hdGguaW11bChQdCxwdCkpK01hdGguaW11bChBdCxObil8MCxTPU1hdGguaW11bChBdCxwdCkseT15K01hdGgu''@;'; put 'put ''aW11bChhdCxobil8MCxwPShwPXArTWF0aC5pbXVsKGF0LEN0KXwwKStNYXRoLmltdWwoY3QsaG4pfDAsUz1TK01hdGguaW11bChjdCxDdCl8MCx5PXkrTWF0aC5pbXVsKEVlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsVnQpfDApK01hdGguaW11bChEZSxfdCl8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KERlLFZ0KXwwLHk9eStNYXRoLmltdWwobnQsb3QpfDAscD0ocD1wK01hdGguaW11bChudCxJdCl8MCkrTWF0aC5pbXVsKHFlLG90KXwwLFM9UytNYXRoLmltdWwocWUsSXQpfDAseT15K01hdGguaW11bChJZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLHZ0KXwwKStNYXRoLmltdWwoT2Us''@;'; put 'put ''RHQpfDAsUz1TK01hdGguaW11bChPZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG10LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsenQpfDApK01hdGguaW11bChLZSxMbil8MCxTPVMrTWF0aC5pbXVsKEtlLHp0KXwwLHk9eStNYXRoLmltdWwoQmUsVG4pfDAscD0ocD1wK01hdGguaW11bChCZSxz''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEhlLFRuKXwwLFM9UytNYXRoLmltdWwoSGUsc24pfDA7dmFyIEppPShNKyh5PXkrTWF0aC5pbXVsKEZlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUscXQpfDApK01hdGguaW11bChOZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11''@;'; put 'put ''bChOZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LGhuKSxwPShwPU1hdGguaW11bChQdCxDdCkpK01hdGguaW11bChBdCxobil8MCxTPU1hdGguaW11bChBdCxDdCkseT15K01hdGguaW11bChhdCxfdCl8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKGF0LFZ0KXwwKStNYXRoLmltdWwoY3QsX3QpfDAsUz1TK01hdGguaW11bChjdCxWdCl8MCx5PXkrTWF0aC5pbXVsKEVlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSXQpfDApK01hdGguaW11bChEZSxvdCl8MCxTPVMrTWF0aC5pbXVsKERlLEl0KXwwLHk9eStNYXRoLmltdWwobnQs''@;'; put 'put ''RHQpfDAscD0ocD1wK01hdGguaW11bChudCx2dCl8MCkrTWF0aC5pbXVsKHFlLER0KXwwLFM9UytNYXRoLmltdWwocWUsdnQpfDAseT15K01hdGguaW11bChJZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEllLHp0KXwwKStNYXRoLmltdWwoT2UsTG4pfDAsUz1TK01hdGguaW11bChPZSx6dCl8''@;'; put 'put ''MCx5PXkrTWF0aC5pbXVsKG10LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsc24pfDApK01hdGguaW11bChLZSxUbil8MCxTPVMrTWF0aC5pbXVsKEtlLHNuKXwwO3ZhciB0bz0oTSsoeT15K01hdGguaW11bChCZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEJlLHF0KXww''@;'; put 'put ''KStNYXRoLmltdWwoSGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoSGUscXQpfDApKyhwPj4+MTMpfDApKyh0bz4+PjI2KXwwLHRvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxfdCkscD0ocD1NYXRoLmltdWwoUHQsVnQpKStNYXRoLmltdWwoQXQsX3QpfDAsUz1NYXRoLmlt''@;'; put 'put ''dWwoQXQsVnQpLHk9eStNYXRoLmltdWwoYXQsb3QpfDAscD0ocD1wK01hdGguaW11bChhdCxJdCl8MCkrTWF0aC5pbXVsKGN0LG90KXwwLFM9UytNYXRoLmltdWwoY3QsSXQpfDAseT15K01hdGguaW11bChFZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLHZ0KXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''RHQpfDAsUz1TK01hdGguaW11bChEZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG50LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsenQpfDApK01hdGguaW11bChxZSxMbil8MCxTPVMrTWF0aC5pbXVsKHFlLHp0KXwwLHk9eStNYXRoLmltdWwoSWUsVG4pfDAscD0ocD1wK01hdGguaW11bChJZSxz''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKE9lLFRuKXwwLFM9UytNYXRoLmltdWwoT2Usc24pfDA7dmFyIGNvPShNKyh5PXkrTWF0aC5pbXVsKG10LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobXQscXQpfDApK01hdGguaW11bChLZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11''@;'; put 'put ''bChLZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG90KSxwPShwPU1hdGguaW11bChQdCxJdCkpK01hdGguaW11bChBdCxvdCl8MCxTPU1hdGguaW11bChBdCxJdCkseT15K01hdGguaW11bChhdCxEdCl8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKGF0LHZ0KXwwKStNYXRoLmltdWwoY3QsRHQpfDAsUz1TK01hdGguaW11bChjdCx2dCl8MCx5PXkrTWF0aC5pbXVsKEVlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsenQpfDApK01hdGguaW11bChEZSxMbil8MCxTPVMrTWF0aC5pbXVsKERlLHp0KXwwLHk9eStNYXRoLmltdWwobnQs''@;'; put 'put ''VG4pfDAscD0ocD1wK01hdGguaW11bChudCxzbil8MCkrTWF0aC5pbXVsKHFlLFRuKXwwLFM9UytNYXRoLmltdWwocWUsc24pfDA7dmFyIGxvPShNKyh5PXkrTWF0aC5pbXVsKEllLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoSWUscXQpfDApK01hdGguaW11bChPZSxGbil8''@;'; put 'put ''MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChPZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LER0KSxwPShwPU1hdGguaW11bChQdCx2dCkpK01hdGguaW11bChBdCxEdCl8MCxTPU1hdGguaW11bChBdCx2dCkseT15K01hdGgu''@;'; put 'put ''aW11bChhdCxMbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHp0KXwwKStNYXRoLmltdWwoY3QsTG4pfDAsUz1TK01hdGguaW11bChjdCx6dCl8MCx5PXkrTWF0aC5pbXVsKEVlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsc24pfDApK01hdGguaW11bChEZSxUbil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KERlLHNuKXwwO3ZhciBzbz0oTSsoeT15K01hdGguaW11bChudCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG50LHF0KXwwKStNYXRoLmltdWwocWUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwocWUscXQpfDApKyhwPj4+MTMpfDApKyhzbz4+PjI2KXwwLHNv''@;'; put 'put ''Jj02NzEwODg2Myx5PU1hdGguaW11bChQdCxMbikscD0ocD1NYXRoLmltdWwoUHQsenQpKStNYXRoLmltdWwoQXQsTG4pfDAsUz1NYXRoLmltdWwoQXQsenQpLHk9eStNYXRoLmltdWwoYXQsVG4pfDAscD0ocD1wK01hdGguaW11bChhdCxzbil8MCkrTWF0aC5pbXVsKGN0LFRuKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoY3Qsc24pfDA7dmFyIFhpPShNKyh5PXkrTWF0aC5pbXVsKEVlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRWUscXQpfDApK01hdGguaW11bChEZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChEZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+''@;'; put 'put ''MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LFRuKSxwPShwPU1hdGguaW11bChQdCxzbikpK01hdGguaW11bChBdCxUbil8MCxTPU1hdGguaW11bChBdCxzbik7dmFyIHBvPShNKyh5PXkrTWF0aC5pbXVsKGF0LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoYXQs''@;'; put 'put ''cXQpfDApK01hdGguaW11bChjdCxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChjdCxxdCl8MCkrKHA+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzO3ZhciBfcj0oTSsoeT1NYXRoLmltdWwoUHQsRm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKFB0LHF0KSkr''@;'; put 'put ''TWF0aC5pbXVsKEF0LEZuKXwwKSk8PDEzKXwwO3JldHVybiBNPSgoUz1NYXRoLmltdWwoQXQscXQpKSsocD4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMsQ1swXT1IbixDWzFdPWlpLENbMl09Y24sQ1szXT1qbixDWzRdPVhyLENbNV09dmksQ1s2XT1FcixDWzddPVlpLENbOF09''@;'; put 'put ''SnIsQ1s5XT1hbyxDWzEwXT1CcixDWzExXT1KaSxDWzEyXT10byxDWzEzXT1jbyxDWzE0XT1sbyxDWzE1XT1zbyxDWzE2XT1YaSxDWzE3XT1wbyxDWzE4XT1fciwwIT09TSYmKENbMTldPU0sTi5sZW5ndGgrKyksTn07ZnVuY3Rpb24gVyhZLGIseCl7cmV0dXJuKG5ldyBVKS5tdWxwKFksYix4''@;'; put 'put ''KX1mdW5jdGlvbiBVKFksYil7dGhpcy54PVksdGhpcy55PWJ9TWF0aC5pbXVsfHwoVj1qKSxILnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihiLHgpe3ZhciBOLEY9dGhpcy5sZW5ndGgrYi5sZW5ndGg7cmV0dXJuIE49MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1iLmxlbmd0aD9WKHRoaXMsYix4''@;'; put 'put ''KTpGPDYzP2oodGhpcyxiLHgpOkY8MTAyND9mdW5jdGlvbiBHKFksYix4KXt4Lm5lZ2F0aXZlPWIubmVnYXRpdmVeWS5uZWdhdGl2ZSx4Lmxlbmd0aD1ZLmxlbmd0aCtiLmxlbmd0aDtmb3IodmFyIE49MCxGPTAsZz0wO2c8eC5sZW5ndGgtMTtnKyspe3ZhciBDPUY7Rj0wO2Zvcih2YXIgTT02''@;'; put 'put ''NzEwODg2MyZOLHk9TWF0aC5taW4oZyxiLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsZy1ZLmxlbmd0aCsxKTtwPD15O3ArKyl7dmFyIGZlPSgwfFkud29yZHNbZy1wXSkqKDB8Yi53b3Jkc1twXSksbWU9NjcxMDg4NjMmZmU7TT02NzEwODg2MyYobWU9bWUrTXwwKSxGKz0oQz0oQz1DKyhmZS82''@;'; put 'put ''NzEwODg2NHwwKXwwKSsobWU+Pj4yNil8MCk+Pj4yNixDJj02NzEwODg2M314LndvcmRzW2ddPU0sTj1DLEM9Rn1yZXR1cm4gMCE9PU4/eC53b3Jkc1tnXT1OOngubGVuZ3RoLS0seC5zdHJpcCgpfSh0aGlzLGIseCk6Vyh0aGlzLGIseCksTn0sVS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlv''@;'; put 'put ''bihiKXtmb3IodmFyIHg9bmV3IEFycmF5KGIpLE49SC5wcm90b3R5cGUuX2NvdW50Qml0cyhiKS0xLEY9MDtGPGI7RisrKXhbRl09dGhpcy5yZXZCaW4oRixOLGIpO3JldHVybiB4fSxVLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oYix4LE4pe2lmKDA9PT1ifHxiPT09Ti0xKXJldHVybiBi''@;'; put 'put ''O2Zvcih2YXIgRj0wLGc9MDtnPHg7ZysrKUZ8PSgxJmIpPDx4LWctMSxiPj49MTtyZXR1cm4gRn0sVS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihiLHgsTixGLGcsQyl7Zm9yKHZhciBNPTA7TTxDO00rKylGW01dPXhbYltNXV0sZ1tNXT1OW2JbTV1dfSxVLnByb3RvdHlwZS50cmFuc2Zv''@;'; put 'put ''cm09ZnVuY3Rpb24oYix4LE4sRixnLEMpe3RoaXMucGVybXV0ZShDLGIseCxOLEYsZyk7Zm9yKHZhciBNPTE7TTxnO008PD0xKWZvcih2YXIgeT1NPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL3kpLFM9TWF0aC5zaW4oMipNYXRoLlBJL3kpLFE9MDtRPGc7USs9eSlmb3IodmFyIHJlPXAsZmU9''@;'; put 'put ''UyxtZT0wO21lPE07bWUrKyl7dmFyIGtlPU5bUSttZV0sVGU9RltRK21lXSxQZT1OW1ErbWUrTV0sRmU9RltRK21lK01dLE5lPXJlKlBlLWZlKkZlO0ZlPXJlKkZlK2ZlKlBlLE5bUSttZV09a2UrKFBlPU5lKSxGW1ErbWVdPVRlK0ZlLE5bUSttZStNXT1rZS1QZSxGW1ErbWUrTV09VGUtRmUs''@;'; put 'put ''bWUhPT15JiYoTmU9cCpyZS1TKmZlLGZlPXAqZmUrUypyZSxyZT1OZSl9fSxVLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihiLHgpe3ZhciBOPTF8TWF0aC5tYXgoeCxiKSxGPTEmTixnPTA7Zm9yKE49Ti8yfDA7TjtOPj4+PTEpZysrO3JldHVybiAxPDxnKzErRn0sVS5wcm90b3R5''@;'; put 'put ''cGUuY29uanVnYXRlPWZ1bmN0aW9uKGIseCxOKXtpZighKE48PTEpKWZvcih2YXIgRj0wO0Y8Ti8yO0YrKyl7dmFyIGc9YltGXTtiW0ZdPWJbTi1GLTFdLGJbTi1GLTFdPWcsZz14W0ZdLHhbRl09LXhbTi1GLTFdLHhbTi1GLTFdPS1nfX0sVS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0''@;'; put 'put ''aW9uKGIseCl7Zm9yKHZhciBOPTAsRj0wO0Y8eC8yO0YrKyl7dmFyIGc9ODE5MipNYXRoLnJvdW5kKGJbMipGKzFdL3gpK01hdGgucm91bmQoYlsyKkZdL3gpK047YltGXT02NzEwODg2MyZnLE49Zzw2NzEwODg2ND8wOmcvNjcxMDg4NjR8MH1yZXR1cm4gYn0sVS5wcm90b3R5cGUuY29udmVy''@;'; put 'put ''dDEzYj1mdW5jdGlvbihiLHgsTixGKXtmb3IodmFyIGc9MCxDPTA7Qzx4O0MrKylOWzIqQ109ODE5MSYoZys9MHxiW0NdKSxOWzIqQysxXT04MTkxJihnPj4+PTEzKSxnPj4+PTEzO2ZvcihDPTIqeDtDPEY7KytDKU5bQ109MDt2KDA9PT1nKSx2KDA9PSgtODE5MiZnKSl9LFUucHJvdG90eXBl''@;'; put 'put ''LnN0dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PW5ldyBBcnJheShiKSxOPTA7TjxiO04rKyl4W05dPTA7cmV0dXJuIHh9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYix4LE4pe3ZhciBGPTIqdGhpcy5ndWVzc0xlbjEzYihiLmxlbmd0aCx4Lmxlbmd0aCksZz10aGlzLm1ha2VSQlQoRiks''@;'; put 'put ''Qz10aGlzLnN0dWIoRiksTT1uZXcgQXJyYXkoRikseT1uZXcgQXJyYXkoRikscD1uZXcgQXJyYXkoRiksUz1uZXcgQXJyYXkoRiksUT1uZXcgQXJyYXkoRikscmU9bmV3IEFycmF5KEYpLGZlPU4ud29yZHM7ZmUubGVuZ3RoPUYsdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsTSxG''@;'; put 'put ''KSx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxTLEYpLHRoaXMudHJhbnNmb3JtKE0sQyx5LHAsRixnKSx0aGlzLnRyYW5zZm9ybShTLEMsUSxyZSxGLGcpO2Zvcih2YXIgbWU9MDttZTxGO21lKyspe3ZhciBrZT15W21lXSpRW21lXS1wW21lXSpyZVttZV07cFttZV09eVttZV0q''@;'; put 'put ''cmVbbWVdK3BbbWVdKlFbbWVdLHlbbWVdPWtlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh5LHAsRiksdGhpcy50cmFuc2Zvcm0oeSxwLGZlLEMsRixnKSx0aGlzLmNvbmp1Z2F0ZShmZSxDLEYpLHRoaXMubm9ybWFsaXplMTNiKGZlLEYpLE4ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZl''@;'; put 'put ''LE4ubGVuZ3RoPWIubGVuZ3RoK3gubGVuZ3RoLE4uc3RyaXAoKX0sSC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksdGhpcy5tdWxUbyhiLHgpfSxILnByb3RvdHlwZS5tdWxm''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksVyh0aGlzLGIseCl9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxILnByb3RvdHlw''@;'; put 'put ''ZS5pbXVsbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4ODY0KTtmb3IodmFyIHg9MCxOPTA7Tjx0aGlzLmxlbmd0aDtOKyspe3ZhciBGPSgwfHRoaXMud29yZHNbTl0pKmIsZz0oNjcxMDg4NjMmRikrKDY3MTA4ODYzJngpO3g+Pj0yNix4Kz1GLzY3MTA4ODY0''@;'; put 'put ''fDAseCs9Zz4+PjI2LHRoaXMud29yZHNbTl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW05dPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sSC5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGIpfSxILnByb3RvdHlwZS5zcXI9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEgucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEgucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiKXt2YXIgeD1mdW5jdGlvbiB6KFkpe2Zvcih2YXIgYj1uZXcgQXJyYXkoWS5i''@;'; put 'put ''aXRMZW5ndGgoKSkseD0wO3g8Yi5sZW5ndGg7eCsrKXt2YXIgRj14JTI2O2JbeF09KFkud29yZHNbeC8yNnwwXSYxPDxGKT4+PkZ9cmV0dXJuIGJ9KGIpO2lmKDA9PT14Lmxlbmd0aClyZXR1cm4gbmV3IEgoMSk7Zm9yKHZhciBOPXRoaXMsRj0wO0Y8eC5sZW5ndGgmJjA9PT14W0ZdO0YrKyxO''@;'; put 'put ''PU4uc3FyKCkpO2lmKCsrRjx4Lmxlbmd0aClmb3IodmFyIGc9Ti5zcXIoKTtGPHgubGVuZ3RoO0YrKyxnPWcuc3FyKCkpMCE9PXhbRl0mJihOPU4ubXVsKGcpKTtyZXR1cm4gTn0sSC5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIg''@;'; put 'put ''Zyx4PWIlMjYsTj0oYi14KS8yNixGPTY3MTA4ODYzPj4+MjYteDw8MjYteDtpZigwIT09eCl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgTT10aGlzLndvcmRzW2ddJkY7dGhpcy53b3Jkc1tnXT0oMHx0aGlzLndvcmRzW2ddKS1NPDx4fEMsQz1NPj4+MjYteH1DJiYo''@;'; put 'put ''dGhpcy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1OKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytOXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7ZzxOO2crKyl0aGlzLndvcmRzW2ddPTA7dGhpcy5sZW5ndGgrPU59cmV0dXJuIHRoaXMuc3RyaXAo''@;'; put 'put ''KX0sSC5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYix4LE4pe3ZhciBGO3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKSxGPXg/KHgteCUyNikvMjY6MDt2''@;'; put 'put ''YXIgZz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLE09NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLHk9TjtpZihGLT1DLEY9TWF0aC5tYXgoMCxGKSx5KXtmb3IodmFyIHA9MDtwPEM7cCsrKXkud29yZHNbcF09dGhpcy53b3Jkc1twXTt5Lmxlbmd0aD1DfWlmKDAhPT1D''@;'; put 'put ''KWlmKHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBTPTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PVN8''@;'; put 'put ''fHA+PUYpO3AtLSl7dmFyIFE9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09Uzw8MjYtZ3xRPj4+ZyxTPVEmTX1yZXR1cm4geSYmMCE9PVMmJih5LndvcmRzW3kubGVuZ3RoKytdPVMpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0''@;'; put 'put ''cmlwKCl9LEgucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIseCxOKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYix4LE4pfSxILnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYil9LEgucHJvdG90eXBlLnVzaGxu''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LEgucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxI''@;'; put 'put ''LnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PU58fCEodGhpcy53b3Jkc1tOXSYxPDx4KSl9LEgucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXt2KCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Tj90aGlzOigwIT09eCYmTisrLHRoaXMubGVuZ3RoPU1hdGgubWlu''@;'; put 'put ''KE4sdGhpcy5sZW5ndGgpLDAhPT14JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4KSx0aGlzLnN0cmlwKCkpfSxILnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''aWFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRz''@;'; put 'put ''WzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sSC5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGIpe3RoaXMud29yZHNbMF0rPWI7Zm9yKHZhciB4PTA7eDx0aGlzLmxl''@;'; put 'put ''bmd0aCYmdGhpcy53b3Jkc1t4XT49NjcxMDg4NjQ7eCsrKXRoaXMud29yZHNbeF0tPTY3MTA4ODY0LHg9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeCsxXT0xOnRoaXMud29yZHNbeCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx4KzEpLHRoaXN9LEgu''@;'; put 'put ''cHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPDA7eCsrKXRoaXMud29y''@;'; put 'put ''ZHNbeF0rPTY3MTA4ODY0LHRoaXMud29yZHNbeCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oYil9LEgucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''c3VibihiKX0sSC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sSC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEgucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLHgsTil7dmFy''@;'; put 'put ''IGc7dGhpcy5fZXhwYW5kKGIubGVuZ3RoK04pO3ZhciBDLE09MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytOXSkrTTt2YXIgeT0oMHxiLndvcmRzW2ddKSp4O009KChDLT02NzEwODg2MyZ5KT4+MjYpLSh5LzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytOXT02''@;'; put 'put ''NzEwODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1OO2crKylNPShDPSgwfHRoaXMud29yZHNbZytOXSkrTSk+PjI2LHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDO2lmKDA9PT1NKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHYoLTE9PT1NKSxNPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKU09''@;'; put 'put ''KEM9LSgwfHRoaXMud29yZHNbZ10pK00pPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGIseCl7dmFyIE4sRj10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cu''@;'; put 'put ''bGVuZ3RoLTFdOzAhPShOPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oTiksRi5pdXNobG4oTiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLHk9Ri5sZW5ndGgtZy5sZW5ndGg7aWYoIm1vZCIhPT14KXsocD1uZXcgSChudWxsKSkubGVuZ3RoPXkrMSxwLndvcmRz''@;'; put 'put ''PW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBTPTA7UzxwLmxlbmd0aDtTKyspcC53b3Jkc1tTXT0wfXZhciBRPUYuY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLHkpOzA9PT1RLm5lZ2F0aXZlJiYoRj1RLHAmJihwLndvcmRzW3ldPTEpKTtmb3IodmFyIHJlPXktMTtyZT49MDtyZS0tKXt2''@;'; put 'put ''YXIgZmU9NjcxMDg4NjQqKDB8Ri53b3Jkc1tnLmxlbmd0aCtyZV0pKygwfEYud29yZHNbZy5sZW5ndGgrcmUtMV0pO2ZvcihmZT1NYXRoLm1pbihmZS9DfDAsNjcxMDg4NjMpLEYuX2lzaGxuc3VibXVsKGcsZmUscmUpOzAhPT1GLm5lZ2F0aXZlOylmZS0tLEYubmVnYXRpdmU9MCxGLl9pc2hs''@;'; put 'put ''bnN1Ym11bChnLDEscmUpLEYuaXNaZXJvKCl8fChGLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tyZV09ZmUpfXJldHVybiBwJiZwLnN0cmlwKCksRi5zdHJpcCgpLCJkaXYiIT09eCYmMCE9PU4mJkYuaXVzaHJuKE4pLHtkaXY6cHx8bnVsbCxtb2Q6Rn19LEgucHJvdG90eXBlLmRpdm1vZD1m''@;'; put 'put ''dW5jdGlvbihiLHgsTil7cmV0dXJuIHYoIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgSCgwKSxtb2Q6bmV3IEgoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLHgpLCJtb2QiIT09eCYmKEY9Qy5kaXYubmVnKCkp''@;'; put 'put ''LCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpGLG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhDPXRoaXMuZGl2bW9kKGIubmVnKCkseCksIm1vZCIhPT14JiYoRj1DLmRpdi5uZWcoKSkse2RpdjpG''@;'; put 'put ''LG1vZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLHgpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaXN1YihiKSkse2RpdjpDLmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3Ro''@;'; put 'put ''fHx0aGlzLmNtcChiKTwwP3tkaXY6bmV3IEgoMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PXg/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09eD97ZGl2Om51bGwsbW9kOm5ldyBIKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5k''@;'; put 'put ''aXZuKGIud29yZHNbMF0pLG1vZDpuZXcgSCh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIseCk7dmFyIEYsZyxDfSxILnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsImRpdiIsITEpLmRpdn0sSC5wcm90b3R5cGUubW9kPWZ1bmN0''@;'; put 'put ''aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LEgucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0sSC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oYil7dmFyIHg9dGhpcy5kaXZtb2QoYik7aWYo''@;'; put 'put ''eC5tb2QuaXNaZXJvKCkpcmV0dXJuIHguZGl2O3ZhciBOPTAhPT14LmRpdi5uZWdhdGl2ZT94Lm1vZC5pc3ViKGIpOngubW9kLEY9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1OLmNtcChGKTtyZXR1cm4gQzwwfHwxPT09ZyYmMD09PUM/eC5kaXY6MCE9PXguZGl2Lm5lZ2F0aXZlP3guZGl2''@;'; put 'put ''LmlzdWJuKDEpOnguZGl2LmlhZGRuKDEpfSxILnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0oMTw8MjYpJWIsTj0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSlOPSh4Kk4rKDB8dGhpcy53b3Jkc1tGXSkpJWI7cmV0dXJuIE59LEgucHJvdG90''@;'; put 'put ''eXBlLmlkaXZuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0wLE49dGhpcy5sZW5ndGgtMTtOPj0wO04tLSl7dmFyIEY9KDB8dGhpcy53b3Jkc1tOXSkrNjcxMDg4NjQqeDt0aGlzLndvcmRzW05dPUYvYnwwLHg9RiVifXJldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90''@;'; put 'put ''eXBlLmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sSC5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgeD10aGlzLE49Yi5jbG9uZSgpO3g9MCE9PXgubmVnYXRpdmU/eC51bW9kKGIpOngu''@;'; put 'put ''Y2xvbmUoKTtmb3IodmFyIEY9bmV3IEgoMSksZz1uZXcgSCgwKSxDPW5ldyBIKDApLE09bmV3IEgoMSkseT0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7KXguaXVzaHJuKDEpLE4uaXVzaHJuKDEpLCsreTtmb3IodmFyIHA9Ti5jbG9uZSgpLFM9eC5jbG9uZSgpOyF4LmlzWmVybygpOyl7Zm9y''@;'; put 'put ''KHZhciBRPTAscmU9MTshKHgud29yZHNbMF0mcmUpJiZRPDI2OysrUSxyZTw8PTEpO2lmKFE+MClmb3IoeC5pdXNocm4oUSk7US0tID4wOykoRi5pc09kZCgpfHxnLmlzT2RkKCkpJiYoRi5pYWRkKHApLGcuaXN1YihTKSksRi5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBmZT0wLG1l''@;'; put 'put ''PTE7IShOLndvcmRzWzBdJm1lKSYmZmU8MjY7KytmZSxtZTw8PTEpO2lmKGZlPjApZm9yKE4uaXVzaHJuKGZlKTtmZS0tID4wOykoQy5pc09kZCgpfHxNLmlzT2RkKCkpJiYoQy5pYWRkKHApLE0uaXN1YihTKSksQy5pdXNocm4oMSksTS5pdXNocm4oMSk7eC5jbXAoTik+PTA/KHguaXN1YihO''@;'; put 'put ''KSxGLmlzdWIoQyksZy5pc3ViKE0pKTooTi5pc3ViKHgpLEMuaXN1YihGKSxNLmlzdWIoZykpfXJldHVybnthOkMsYjpNLGdjZDpOLml1c2hsbih5KX19LEgucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgUSx4PXRoaXMs''@;'; put 'put ''Tj1iLmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QoYik6eC5jbG9uZSgpO2Zvcih2YXIgRj1uZXcgSCgxKSxnPW5ldyBIKDApLEM9Ti5jbG9uZSgpO3guY21wbigxKT4wJiZOLmNtcG4oMSk+MDspe2Zvcih2YXIgTT0wLHk9MTshKHgud29yZHNbMF0meSkmJk08MjY7KytNLHk8PD0x''@;'; put 'put ''KTtpZihNPjApZm9yKHguaXVzaHJuKE0pO00tLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoQyksRi5pdXNocm4oMSk7Zm9yKHZhciBwPTAsUz0xOyEoTi53b3Jkc1swXSZTKSYmcDwyNjsrK3AsUzw8PTEpO2lmKHA+MClmb3IoTi5pdXNocm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChD''@;'; put 'put ''KSxnLml1c2hybigxKTt4LmNtcChOKT49MD8oeC5pc3ViKE4pLEYuaXN1YihnKSk6KE4uaXN1Yih4KSxnLmlzdWIoRikpfXJldHVybihRPTA9PT14LmNtcG4oMSk/RjpnKS5jbXBuKDApPDAmJlEuaWFkZChiKSxRfSxILnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8o''@;'; put 'put ''KSlyZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB4PXRoaXMuY2xvbmUoKSxOPWIuY2xvbmUoKTt4Lm5lZ2F0aXZlPTAsTi5uZWdhdGl2ZT0wO2Zvcih2YXIgRj0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7RisrKXguaXVzaHJuKDEpLE4uaXVzaHJu''@;'; put 'put ''KDEpO2Zvcig7Oyl7Zm9yKDt4LmlzRXZlbigpOyl4Lml1c2hybigxKTtmb3IoO04uaXNFdmVuKCk7KU4uaXVzaHJuKDEpO3ZhciBnPXguY21wKE4pO2lmKGc8MCl7dmFyIEM9eDt4PU4sTj1DfWVsc2UgaWYoMD09PWd8fDA9PT1OLmNtcG4oMSkpYnJlYWs7eC5pc3ViKE4pfXJldHVybiBOLml1''@;'; put 'put ''c2hsbihGKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sSC5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxILnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAx''@;'; put 'put ''PT0oMSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sSC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGIpO3ZhciB4PWIlMjYsTj0oYi14KS8yNixGPTE8PHg7aWYodGhpcy5s''@;'; put 'put ''ZW5ndGg8PU4pcmV0dXJuIHRoaXMuX2V4cGFuZChOKzEpLHRoaXMud29yZHNbTl18PUYsdGhpcztmb3IodmFyIGc9RixDPU47MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT0wfHRoaXMud29yZHNbQ107Zz0oTSs9Zyk+Pj4yNix0aGlzLndvcmRzW0NdPU0mPTY3MTA4ODYzfXJldHVy''@;'; put 'put ''biAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sSC5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihiKXt2YXIgTix4PWI8MDtpZigw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZSYmIXgpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJngpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpTj0xO2Vsc2V7eCYmKGI9LWIpLHYoYjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIEY9MHx0aGlzLndvcmRz''@;'; put 'put ''WzBdO049Rj09PWI/MDpGPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtTjpOfSxILnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2''@;'; put 'put ''ZSlyZXR1cm4gMTt2YXIgeD10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXg6eH0sSC5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFy''@;'; put 'put ''IHg9MCxOPXRoaXMubGVuZ3RoLTE7Tj49MDtOLS0pe3ZhciBGPTB8dGhpcy53b3Jkc1tOXSxnPTB8Yi53b3Jkc1tOXTtpZihGIT09Zyl7RjxnP3g9LTE6Rj5nJiYoeD0xKTticmVha319cmV0dXJuIHh9LEgucHJvdG90eXBlLmd0bj1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihi''@;'; put 'put ''KX0sSC5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sSC5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxILnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxILnByb3Rv''@;'; put 'put ''dHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LEgucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LEgucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKTw9MH0sSC5wcm90b3R5cGUubHRl''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sSC5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wKGIpfSxILnJlZD1mdW5jdGlvbihiKXtyZXR1cm4g''@;'; put 'put ''bmV3IHVlKGIpfSxILnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx2KDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRv''@;'; put 'put ''KHRoaXMpLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEgucHJvdG90eXBl''@;'; put 'put ''Ll9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxILnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sSC5wcm90''@;'; put 'put ''b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElBZGQgd29y''@;'; put 'put ''a3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sSC5wcm90''@;'; put 'put ''b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU2hsIHdv''@;'; put 'put ''cmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRo''@;'; put 'put ''aXMucmVkLm11bCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LEgucHJvdG90''@;'; put 'put ''eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxILnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhp''@;'; put 'put ''cy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEgucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0''@;'; put 'put ''aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxILnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sSC5wcm90b3R5''@;'; put 'put ''cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3ZhciBxPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07''@;'; put 'put ''ZnVuY3Rpb24gdGUoWSxiKXt0aGlzLm5hbWU9WSx0aGlzLnA9bmV3IEgoYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEgoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIG5lKCl7dGUuY2FsbCh0aGlz''@;'; put 'put ''LCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBpZSgpe3RlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAw''@;'; put 'put ''MDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gbGUoKXt0ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIGRlKCl7dGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiB1ZShZKXtpZigic3RyaW5nIj09dHlwZW9mIFkpe3ZhciBiPUguX3ByaW1lKFkpO3RoaXMubT1iLnAsdGhpcy5wcmltZT1ifWVsc2UgdihZLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdy''@;'; put 'put ''ZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVksdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGNlKFkpe3VlLmNhbGwodGhpcyxZKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBIKDEp''@;'; put 'put ''Lml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhp''@;'; put 'put ''cy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IEgobnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxifSx0ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihi''@;'; put 'put ''KXt2YXIgTix4PWI7ZG97dGhpcy5zcGxpdCh4LHRoaXMudG1wKSxOPSh4PSh4PXRoaXMuaW11bEsoeCkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShOPnRoaXMubik7dmFyIEY9Tjx0aGlzLm4/LTE6eC51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1GPyh4LndvcmRzWzBdPTAs''@;'; put 'put ''eC5sZW5ndGg9MSk6Rj4wP3guaXN1Yih0aGlzLnApOnZvaWQgMCE9PXguc3RyaXA/eC5zdHJpcCgpOnguX3N0cmlwKCkseH0sdGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIseCl7Yi5pdXNocm4odGhpcy5uLDAseCl9LHRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4g''@;'; put 'put ''Yi5pbXVsKHRoaXMuayl9LGhlKG5lLHRlKSxuZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYix4KXtmb3IodmFyIE49NDE5NDMwMyxGPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEY7ZysrKXgud29yZHNbZ109Yi53b3Jkc1tnXTtpZih4Lmxlbmd0aD1GLGIubGVuZ3RoPD05KXJldHVy''@;'; put 'put ''biBiLndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2Zvcih4LndvcmRzW3gubGVuZ3RoKytdPUMmTixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgTT0wfGIud29yZHNbZ107Yi53b3Jkc1tnLTEwXT0oTSZOKTw8NHxDPj4+MjIsQz1NfWIud29yZHNbZy0xMF09''@;'; put 'put ''Qz4+Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LG5lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5ndGgrMV09MCxiLmxlbmd0aCs9Mjtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBG''@;'; put 'put ''PTB8Yi53b3Jkc1tOXTtiLndvcmRzW05dPTY3MTA4ODYzJih4Kz05NzcqRikseD02NCpGKyh4LzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3RoLS0sMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJmIubGVuZ3RoLS0pLGJ9LGhlKGllLHRlKSxoZShs''@;'; put 'put ''ZSx0ZSksaGUoZGUsdGUpLGRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTE5KigwfGIud29yZHNbTl0pK3gsZz02NzEwODg2MyZGO0Y+Pj49MjYsYi53b3Jkc1tOXT1nLHg9Rn1yZXR1cm4gMCE9PXgmJihiLndvcmRz''@;'; put 'put ''W2IubGVuZ3RoKytdPXgpLGJ9LEguX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIHg7aWYoImsyNTYiPT09Yil4PW5ldyBuZTtlbHNlIGlmKCJwMjI0Ij09PWIpeD1uZXcgaWU7ZWxzZSBpZigicDE5MiI9PT1iKXg9bmV3IGxlO2Vsc2V7aWYoInAyNTUxOSIhPT1i''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO3g9bmV3IGRlfXJldHVybiBxW2JdPXgseH0sdWUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksdihiLnJlZCwicmVkIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSx1ZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYix4KXt2KDA9PShiLm5lZ2F0aXZlfHgubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHYoYi5yZWQmJmIucmVkPT09eC5yZWQsInJlZCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcmVkIG51bWJlcnMiKX0sdWUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7''@;'; put 'put ''cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxO''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5pYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOfSx1ZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5f''@;'; put 'put ''dmVyaWZ5MihiLHgpO3ZhciBOPWIuc3ViKHgpO3JldHVybiBOLmNtcG4oMCk8MCYmTi5pYWRkKHRoaXMubSksTi5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuaXN1Yih4KTtyZXR1cm4gTi5jbXBuKDAp''@;'; put 'put ''PDAmJk4uaWFkZCh0aGlzLm0pLE59LHVlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbih4KSl9LHVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYix4KSx0aGlzLmlt''@;'; put 'put ''b2QoYi5pbXVsKHgpKX0sdWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIseCksdGhpcy5pbW9kKGIubXVsKHgpKX0sdWUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW11bChiLGIuY2xvbmUoKSl9LHVlLnByb3RvdHlw''@;'; put 'put ''ZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LHVlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgeD10aGlzLm0uYW5kbG4oMyk7aWYodih4JTI9PTEpLDM9PT14KXt2YXIgTj10aGlzLm0uYWRkKG5ldyBI''@;'; put 'put ''KDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsTil9Zm9yKHZhciBGPXRoaXMubS5zdWJuKDEpLGc9MDshRi5pc1plcm8oKSYmMD09PUYuYW5kbG4oMSk7KWcrKyxGLml1c2hybigxKTt2KCFGLmlzWmVybygpKTt2YXIgQz1uZXcgSCgxKS50b1JlZCh0aGlzKSxNPUMucmVkTmVnKCks''@;'; put 'put ''eT10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IEgoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLHkpLmNtcChNKTspcC5yZWRJQWRkKE0pO2Zvcih2YXIgUz10aGlzLnBvdyhwLEYpLFE9dGhpcy5wb3coYixGLmFkZG4oMSku''@;'; put 'put ''aXVzaHJuKDEpKSxyZT10aGlzLnBvdyhiLEYpLGZlPWc7MCE9PXJlLmNtcChDKTspe2Zvcih2YXIgbWU9cmUsa2U9MDswIT09bWUuY21wKEMpO2tlKyspbWU9bWUucmVkU3FyKCk7dihrZTxmZSk7dmFyIFRlPXRoaXMucG93KFMsbmV3IEgoMSkuaXVzaGxuKGZlLWtlLTEpKTtRPVEucmVkTXVs''@;'; put 'put ''KFRlKSxTPVRlLnJlZFNxcigpLHJlPXJlLnJlZE11bChTKSxmZT1rZX1yZXR1cm4gUX0sdWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIHg9Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXgubmVnYXRpdmU/KHgubmVnYXRpdmU9MCx0aGlzLmltb2QoeCkucmVkTmVnKCkpOnRo''@;'; put 'put ''aXMuaW1vZCh4KX0sdWUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT14LmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgRj1uZXcgQXJyYXkoMTYpO0ZbMF09bmV3IEgoMSkudG9SZWQodGhpcyks''@;'; put 'put ''RlsxXT1iO2Zvcih2YXIgZz0yO2c8Ri5sZW5ndGg7ZysrKUZbZ109dGhpcy5tdWwoRltnLTFdLGIpO3ZhciBDPUZbMF0sTT0wLHk9MCxwPXguYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz14Lmxlbmd0aC0xO2c+PTA7Zy0tKXtmb3IodmFyIFM9eC53b3Jkc1tnXSxRPXAtMTtR''@;'; put 'put ''Pj0wO1EtLSl7dmFyIHJlPVM+PlEmMTtDIT09RlswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT1yZXx8MCE9PU0/KE08PD0xLE18PXJlLCg0PT0rK3l8fDA9PT1nJiYwPT09USkmJihDPXRoaXMubXVsKEMsRltNXSkseT0wLE09MCkpOnk9MH1wPTI2fXJldHVybiBDfSx1ZS5wcm90b3R5cGUuY29u''@;'; put 'put ''dmVydFRvPWZ1bmN0aW9uKGIpe3ZhciB4PWIudW1vZCh0aGlzLm0pO3JldHVybiB4PT09Yj94LmNsb25lKCk6eH0sdWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PWIuY2xvbmUoKTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxILm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IG5ldyBjZShiKX0saGUoY2UsdWUpLGNlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sY2UucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYp''@;'; put 'put ''KTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxjZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLHgpe2lmKGIuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIE49Yi5pbXVsKHgpLEY9Ti5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52''@;'; put 'put ''KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1OLmlzdWIoRikuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGNlLnBy''@;'; put 'put ''b3RvdHlwZS5tdWw9ZnVuY3Rpb24oYix4KXtpZihiLmlzWmVybygpfHx4LmlzWmVybygpKXJldHVybiBuZXcgSCgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIE49Yi5tdWwoeCksRj1OLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5t''@;'; put 'put ''KSxnPU4uaXN1YihGKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sY2UucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oV2U9VC5ubWQoV2UpLHRoaXMpfSw3MDg5NjpmdW5jdGlvbihXZSl7V2UuZXhwb3J0cz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB6ZShFZSl7cmV0dXJuKHplPSJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKERlKXtyZXR1cm4gdHlwZW9mIERlfTpmdW5jdGlvbihEZSl7cmV0dXJuIERlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZEZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmRGUh''@;'; put 'put ''PT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBEZX0pKEVlKX1mdW5jdGlvbiBUKEVlLERlKXtyZXR1cm4oVD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGF0LGN0KXtyZXR1cm4gYXQuX19wcm90b19fPWN0LGF0fSkoRWUsRGUpfWZ1bmN0aW9uIGsoRWUsRGUsJGUp''@;'; put 'put ''e3JldHVybihrPWZ1bmN0aW9uIHNlKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpP1JlZmxlY3QuY29uc3RydWN0OmZ1bmN0aW9uKGN0LE90LFB0KXt2YXIgQXQ9W251bGxdO0F0LnB1c2guYXBwbHkoQXQsT3QpO3ZhciBtbj1uZXcoRnVu''@;'; put 'put ''Y3Rpb24uYmluZC5hcHBseShjdCxBdCkpO3JldHVybiBQdCYmVChtbixQdC5wcm90b3R5cGUpLG1ufSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHYoRWUpe3JldHVybiBmdW5jdGlvbiBoZShFZSl7aWYoQXJyYXkuaXNBcnJheShFZSkpcmV0dXJuIEwoRWUpfShFZSl8fGZ1bmN0''@;'; put 'put ''aW9uIEgoRWUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1FZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1FZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKEVlKX0oRWUpfHxmdW5jdGlvbiBCKEVlLERlKXtpZihFZSl7aWYoInN0cmluZyI9PXR5cGVvZiBFZSlyZXR1cm4g''@;'; put 'put ''TChFZSxEZSk7dmFyICRlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChFZSkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT0kZSYmRWUuY29uc3RydWN0b3ImJigkZT1FZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PSRlfHwiU2V0Ij09PSRlKXJldHVybiBBcnJheS5mcm9tKEVl''@;'; put 'put ''KTtpZigiQXJndW1lbnRzIj09PSRlfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCgkZSkpcmV0dXJuIEwoRWUsRGUpfX0oRWUpfHxmdW5jdGlvbiBLKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRl''@;'; put 'put ''cmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gTChFZSxEZSl7KG51bGw9PURlfHxEZT5FZS5sZW5ndGgpJiYoRGU9RWUubGVuZ3RoKTtm''@;'; put 'put ''b3IodmFyICRlPTAsYXQ9bmV3IEFycmF5KERlKTskZTxEZTskZSsrKWF0WyRlXT1FZVskZV07cmV0dXJuIGF0fXZhciBKPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxJPU9iamVjdC5zZXRQcm90b3R5cGVPZixSPU9iamVjdC5pc0Zyb3plbixFPU9iamVjdC5nZXRQcm90b3R5cGVPZix6PU9iamVj''@;'; put 'put ''dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isaj1PYmplY3QuZnJlZXplLFY9T2JqZWN0LnNlYWwsRz1PYmplY3QuY3JlYXRlLFc9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LFU9Vy5hcHBseSxxPVcuY29uc3RydWN0O1V8fChVPWZ1bmN0aW9uKERlLCRlLGF0KXtyZXR1cm4gRGUuYXBw''@;'; put 'put ''bHkoJGUsYXQpfSksanx8KGo9ZnVuY3Rpb24oRGUpe3JldHVybiBEZX0pLFZ8fChWPWZ1bmN0aW9uKERlKXtyZXR1cm4gRGV9KSxxfHwocT1mdW5jdGlvbihEZSwkZSl7cmV0dXJuIGsoRGUsdigkZSkpfSk7dmFyIHRlPUYoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLG5lPUYoQXJyYXkucHJv''@;'; put 'put ''dG90eXBlLnBvcCksaWU9RihBcnJheS5wcm90b3R5cGUucHVzaCksbGU9RihTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlKSxkZT1GKFN0cmluZy5wcm90b3R5cGUudG9TdHJpbmcpLHVlPUYoU3RyaW5nLnByb3RvdHlwZS5tYXRjaCksY2U9RihTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Up''@;'; put 'put ''LFk9RihTdHJpbmcucHJvdG90eXBlLmluZGV4T2YpLGI9RihTdHJpbmcucHJvdG90eXBlLnRyaW0pLHg9RihSZWdFeHAucHJvdG90eXBlLnRlc3QpLE49ZnVuY3Rpb24gZyhFZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBEZT1hcmd1bWVudHMubGVuZ3RoLCRlPW5ldyBBcnJheShEZSks''@;'; put 'put ''YXQ9MDthdDxEZTthdCsrKSRlW2F0XT1hcmd1bWVudHNbYXRdO3JldHVybiBxKEVlLCRlKX19KFR5cGVFcnJvcik7ZnVuY3Rpb24gRihFZSl7cmV0dXJuIGZ1bmN0aW9uKERlKXtmb3IodmFyICRlPWFyZ3VtZW50cy5sZW5ndGgsYXQ9bmV3IEFycmF5KCRlPjE/JGUtMTowKSxjdD0xO2N0PCRl''@;'; put 'put ''O2N0KyspYXRbY3QtMV09YXJndW1lbnRzW2N0XTtyZXR1cm4gVShFZSxEZSxhdCl9fWZ1bmN0aW9uIEMoRWUsRGUsJGUpe3ZhciBhdDskZT1udWxsIT09KGF0PSRlKSYmdm9pZCAwIT09YXQ/YXQ6bGUsSSYmSShFZSxudWxsKTtmb3IodmFyIGN0PURlLmxlbmd0aDtjdC0tOyl7dmFyIE90PURl''@;'; put 'put ''W2N0XTtpZigic3RyaW5nIj09dHlwZW9mIE90KXt2YXIgUHQ9JGUoT3QpO1B0IT09T3QmJihSKERlKXx8KERlW2N0XT1QdCksT3Q9UHQpfUVlW090XT0hMH1yZXR1cm4gRWV9ZnVuY3Rpb24gTShFZSl7dmFyICRlLERlPUcobnVsbCk7Zm9yKCRlIGluIEVlKSEwPT09VShKLEVlLFskZV0pJiYo''@;'; put 'put ''RGVbJGVdPUVlWyRlXSk7cmV0dXJuIERlfWZ1bmN0aW9uIHkoRWUsRGUpe2Zvcig7bnVsbCE9PUVlOyl7dmFyICRlPXooRWUsRGUpO2lmKCRlKXtpZigkZS5nZXQpcmV0dXJuIEYoJGUuZ2V0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgJGUudmFsdWUpcmV0dXJuIEYoJGUudmFsdWUpfUVlPUUo''@;'; put 'put ''RWUpfXJldHVybiBmdW5jdGlvbiBhdChjdCl7cmV0dXJuIGNvbnNvbGUud2FybigiZmFsbGJhY2sgdmFsdWUgZm9yIixjdCksbnVsbH19dmFyIHA9aihbImEiLCJhYmJyIiwiYWNyb255bSIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiIiwiYmRpIiwiYmRv''@;'; put 'put ''IiwiYmlnIiwiYmxpbmsiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNlbnRlciIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJjb250ZW50IiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWNvcmF0b3IiLCJkZWwiLCJkZXRh''@;'; put 'put ''aWxzIiwiZGZuIiwiZGlhbG9nIiwiZGlyIiwiZGl2IiwiZGwiLCJkdCIsImVsZW1lbnQiLCJlbSIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvbnQiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91''@;'; put 'put ''cCIsImhyIiwiaHRtbCIsImkiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJtYWluIiwibWFwIiwibWFyayIsIm1hcnF1ZWUiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRlciIsIm5hdiIsIm5vYnIiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uIiwib3V0''@;'; put 'put ''cHV0IiwicCIsInBpY3R1cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJycCIsInJ0IiwicnVieSIsInMiLCJzYW1wIiwic2VjdGlvbiIsInNlbGVjdCIsInNoYWRvdyIsInNtYWxsIiwic291cmNlIiwic3BhY2VyIiwic3BhbiIsInN0cmlrZSIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3Vt''@;'; put 'put ''bWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidHIiLCJ0cmFjayIsInR0IiwidSIsInVsIiwidmFyIiwidmlkZW8iLCJ3YnIiXSksUz1qKFsic3ZnIiwiYSIsImFsdGdseXBoIiwiYWx0Z2x5''@;'; put 'put ''cGhkZWYiLCJhbHRnbHlwaGl0ZW0iLCJhbmltYXRlY29sb3IiLCJhbmltYXRlbW90aW9uIiwiYW5pbWF0ZXRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBwYXRoIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZmlsdGVyIiwiZm9udCIsImciLCJnbHlwaCIsImdseXBocmVmIiwiaGtlcm4iLCJp''@;'; put 'put ''bWFnZSIsImxpbmUiLCJsaW5lYXJncmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXRhZGF0YSIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxncmFkaWVudCIsInJlY3QiLCJzdG9wIiwic3R5bGUiLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0''@;'; put 'put ''IiwidGV4dHBhdGgiLCJ0aXRsZSIsInRyZWYiLCJ0c3BhbiIsInZpZXciLCJ2a2VybiJdKSxRPWooWyJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlz''@;'; put 'put ''cGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2lu''@;'; put 'put ''dExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSkscmU9aihbImFuaW1hdGUiLCJjb2xvci1wcm9maWxlIiwiY3Vyc29yIiwiZGlzY2FyZCIsImZlZHJvcHNoYWRvdyIsImZvbnQtZmFjZSIsImZvbnQtZmFjZS1mb3JtYXQi''@;'; put 'put ''LCJmb250LWZhY2UtbmFtZSIsImZvbnQtZmFjZS1zcmMiLCJmb250LWZhY2UtdXJpIiwiZm9yZWlnbm9iamVjdCIsImhhdGNoIiwiaGF0Y2hwYXRoIiwibWVzaCIsIm1lc2hncmFkaWVudCIsIm1lc2hwYXRjaCIsIm1lc2hyb3ciLCJtaXNzaW5nLWdseXBoIiwic2NyaXB0Iiwic2V0Iiwic29s''@;'; put 'put ''aWRjb2xvciIsInVua25vd24iLCJ1c2UiXSksZmU9aihbIm1hdGgiLCJtZW5jbG9zZSIsIm1lcnJvciIsIm1mZW5jZWQiLCJtZnJhYyIsIm1nbHlwaCIsIm1pIiwibWxhYmVsZWR0ciIsIm1tdWx0aXNjcmlwdHMiLCJtbiIsIm1vIiwibW92ZXIiLCJtcGFkZGVkIiwibXBoYW50b20iLCJtcm9v''@;'; put 'put ''dCIsIm1yb3ciLCJtcyIsIm1zcGFjZSIsIm1zcXJ0IiwibXN0eWxlIiwibXN1YiIsIm1zdXAiLCJtc3Vic3VwIiwibXRhYmxlIiwibXRkIiwibXRleHQiLCJtdHIiLCJtdW5kZXIiLCJtdW5kZXJvdmVyIl0pLG1lPWooWyJtYWN0aW9uIiwibWFsaWduZ3JvdXAiLCJtYWxpZ25tYXJrIiwibWxv''@;'; put 'put ''bmdkaXYiLCJtc2NhcnJpZXMiLCJtc2NhcnJ5IiwibXNncm91cCIsIm1zdGFjayIsIm1zbGluZSIsIm1zcm93Iiwic2VtYW50aWNzIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb24teG1sIiwibXByZXNjcmlwdHMiLCJub25lIl0pLGtlPWooWyIjdGV4dCJdKSxUZT1qKFsiYWNjZXB0IiwiYWN0''@;'; put 'put ''aW9uIiwiYWxpZ24iLCJhbHQiLCJhdXRvY2FwaXRhbGl6ZSIsImF1dG9jb21wbGV0ZSIsImF1dG9waWN0dXJlaW5waWN0dXJlIiwiYXV0b3BsYXkiLCJiYWNrZ3JvdW5kIiwiYmdjb2xvciIsImJvcmRlciIsImNhcHR1cmUiLCJjZWxscGFkZGluZyIsImNlbGxzcGFjaW5nIiwiY2hlY2tlZCIs''@;'; put 'put ''ImNpdGUiLCJjbGFzcyIsImNsZWFyIiwiY29sb3IiLCJjb2xzIiwiY29sc3BhbiIsImNvbnRyb2xzIiwiY29udHJvbHNsaXN0IiwiY29vcmRzIiwiY3Jvc3NvcmlnaW4iLCJkYXRldGltZSIsImRlY29kaW5nIiwiZGVmYXVsdCIsImRpciIsImRpc2FibGVkIiwiZGlzYWJsZXBpY3R1cmVpbnBp''@;'; put 'put ''Y3R1cmUiLCJkaXNhYmxlcmVtb3RlcGxheWJhY2siLCJkb3dubG9hZCIsImRyYWdnYWJsZSIsImVuY3R5cGUiLCJlbnRlcmtleWhpbnQiLCJmYWNlIiwiZm9yIiwiaGVhZGVycyIsImhlaWdodCIsImhpZGRlbiIsImhpZ2giLCJocmVmIiwiaHJlZmxhbmciLCJpZCIsImlucHV0bW9kZSIsImlu''@;'; put 'put ''dGVncml0eSIsImlzbWFwIiwia2luZCIsImxhYmVsIiwibGFuZyIsImxpc3QiLCJsb2FkaW5nIiwibG9vcCIsImxvdyIsIm1heCIsIm1heGxlbmd0aCIsIm1lZGlhIiwibWV0aG9kIiwibWluIiwibWlubGVuZ3RoIiwibXVsdGlwbGUiLCJtdXRlZCIsIm5hbWUiLCJub25jZSIsIm5vc2hhZGUi''@;'; put 'put ''LCJub3ZhbGlkYXRlIiwibm93cmFwIiwib3BlbiIsIm9wdGltdW0iLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJwbGF5c2lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwdWJkYXRlIiwicmFkaW9ncm91cCIsInJlYWRvbmx5IiwicmVsIiwicmVxdWlyZWQiLCJyZXYiLCJyZXZlcnNlZCIs''@;'; put 'put ''InJvbGUiLCJyb3dzIiwicm93c3BhbiIsInNwZWxsY2hlY2siLCJzY29wZSIsInNlbGVjdGVkIiwic2hhcGUiLCJzaXplIiwic2l6ZXMiLCJzcGFuIiwic3JjbGFuZyIsInN0YXJ0Iiwic3JjIiwic3Jjc2V0Iiwic3RlcCIsInN0eWxlIiwic3VtbWFyeSIsInRhYmluZGV4IiwidGl0bGUiLCJ0''@;'; put 'put ''cmFuc2xhdGUiLCJ0eXBlIiwidXNlbWFwIiwidmFsaWduIiwidmFsdWUiLCJ3aWR0aCIsInhtbG5zIiwic2xvdCJdKSxQZT1qKFsiYWNjZW50LWhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudC1iYXNlbGluZSIsImFzY2VudCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRy''@;'; put 'put ''aWJ1dGV0eXBlIiwiYXppbXV0aCIsImJhc2VmcmVxdWVuY3kiLCJiYXNlbGluZS1zaGlmdCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2xhc3MiLCJjbGlwIiwiY2xpcHBhdGh1bml0cyIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsImNvbG9yIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9y''@;'; put 'put ''LWludGVycG9sYXRpb24tZmlsdGVycyIsImNvbG9yLXByb2ZpbGUiLCJjb2xvci1yZW5kZXJpbmciLCJjeCIsImN5IiwiZCIsImR4IiwiZHkiLCJkaWZmdXNlY29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImR1ciIsImVkZ2Vtb2RlIiwiZWxldmF0aW9uIiwiZW5k''@;'; put 'put ''IiwiZmlsbCIsImZpbGwtb3BhY2l0eSIsImZpbGwtcnVsZSIsImZpbHRlciIsImZpbHRlcnVuaXRzIiwiZmxvb2QtY29sb3IiLCJmbG9vZC1vcGFjaXR5IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXNpemUtYWRqdXN0IiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZv''@;'; put 'put ''bnQtdmFyaWFudCIsImZvbnQtd2VpZ2h0IiwiZngiLCJmeSIsImcxIiwiZzIiLCJnbHlwaC1uYW1lIiwiZ2x5cGhyZWYiLCJncmFkaWVudHVuaXRzIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJpbWFnZS1yZW5kZXJpbmciLCJpbiIsImluMiIsImsiLCJrMSIs''@;'; put 'put ''ImsyIiwiazMiLCJrNCIsImtlcm5pbmciLCJrZXlwb2ludHMiLCJrZXlzcGxpbmVzIiwia2V5dGltZXMiLCJsYW5nIiwibGVuZ3RoYWRqdXN0IiwibGV0dGVyLXNwYWNpbmciLCJrZXJuZWxtYXRyaXgiLCJrZXJuZWx1bml0bGVuZ3RoIiwibGlnaHRpbmctY29sb3IiLCJsb2NhbCIsIm1hcmtl''@;'; put 'put ''ci1lbmQiLCJtYXJrZXItbWlkIiwibWFya2VyLXN0YXJ0IiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJtYXgiLCJtYXNrIiwibWVkaWEiLCJtZXRob2QiLCJtb2RlIiwibWluIiwibmFtZSIsIm51bW9j''@;'; put 'put ''dGF2ZXMiLCJvZmZzZXQiLCJvcGVyYXRvciIsIm9wYWNpdHkiLCJvcmRlciIsIm9yaWVudCIsIm9yaWVudGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJwYWludC1vcmRlciIsInBhdGgiLCJwYXRobGVuZ3RoIiwicGF0dGVybmNvbnRlbnR1bml0cyIsInBhdHRlcm50cmFuc2Zvcm0iLCJw''@;'; put 'put ''YXR0ZXJudW5pdHMiLCJwb2ludHMiLCJwcmVzZXJ2ZWFscGhhIiwicHJlc2VydmVhc3BlY3RyYXRpbyIsInByaW1pdGl2ZXVuaXRzIiwiciIsInJ4IiwicnkiLCJyYWRpdXMiLCJyZWZ4IiwicmVmeSIsInJlcGVhdGNvdW50IiwicmVwZWF0ZHVyIiwicmVzdGFydCIsInJlc3VsdCIsInJvdGF0''@;'; put 'put ''ZSIsInNjYWxlIiwic2VlZCIsInNoYXBlLXJlbmRlcmluZyIsInNwZWN1bGFyY29uc3RhbnQiLCJzcGVjdWxhcmV4cG9uZW50Iiwic3ByZWFkbWV0aG9kIiwic3RhcnRvZmZzZXQiLCJzdGRkZXZpYXRpb24iLCJzdGl0Y2h0aWxlcyIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJzdHJv''@;'; put 'put ''a2UtZGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2Utd2lkdGgiLCJzdHlsZSIsInN1cmZhY2VzY2FsZSIsInN5c3RlbWxhbmd1''@;'; put 'put ''YWdlIiwidGFiaW5kZXgiLCJ0YXJnZXR4IiwidGFyZ2V0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0ZXh0LWFuY2hvciIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtcmVuZGVyaW5nIiwidGV4dGxlbmd0aCIsInR5cGUiLCJ1MSIsInUyIiwidW5pY29kZSIsInZhbHVlcyIs''@;'; put 'put ''InZpZXdib3giLCJ2aXNpYmlsaXR5IiwidmVyc2lvbiIsInZlcnQtYWR2LXkiLCJ2ZXJ0LW9yaWdpbi14IiwidmVydC1vcmlnaW4teSIsIndpZHRoIiwid29yZC1zcGFjaW5nIiwid3JhcCIsIndyaXRpbmctbW9kZSIsInhjaGFubmVsc2VsZWN0b3IiLCJ5Y2hhbm5lbHNlbGVjdG9yIiwieCIs''@;'; put 'put ''IngxIiwieDIiLCJ4bWxucyIsInkiLCJ5MSIsInkyIiwieiIsInpvb21hbmRwYW4iXSksRmU9aihbImFjY2VudCIsImFjY2VudHVuZGVyIiwiYWxpZ24iLCJiZXZlbGxlZCIsImNsb3NlIiwiY29sdW1uc2FsaWduIiwiY29sdW1ubGluZXMiLCJjb2x1bW5zcGFuIiwiZGVub21hbGlnbiIsImRl''@;'; put 'put ''cHRoIiwiZGlyIiwiZGlzcGxheSIsImRpc3BsYXlzdHlsZSIsImVuY29kaW5nIiwiZmVuY2UiLCJmcmFtZSIsImhlaWdodCIsImhyZWYiLCJpZCIsImxhcmdlb3AiLCJsZW5ndGgiLCJsaW5ldGhpY2tuZXNzIiwibHNwYWNlIiwibHF1b3RlIiwibWF0aGJhY2tncm91bmQiLCJtYXRoY29sb3Ii''@;'; put 'put ''LCJtYXRoc2l6ZSIsIm1hdGh2YXJpYW50IiwibWF4c2l6ZSIsIm1pbnNpemUiLCJtb3ZhYmxlbGltaXRzIiwibm90YXRpb24iLCJudW1hbGlnbiIsIm9wZW4iLCJyb3dhbGlnbiIsInJvd2xpbmVzIiwicm93c3BhY2luZyIsInJvd3NwYW4iLCJyc3BhY2UiLCJycXVvdGUiLCJzY3JpcHRsZXZl''@;'; put 'put ''bCIsInNjcmlwdG1pbnNpemUiLCJzY3JpcHRzaXplbXVsdGlwbGllciIsInNlbGVjdGlvbiIsInNlcGFyYXRvciIsInNlcGFyYXRvcnMiLCJzdHJldGNoeSIsInN1YnNjcmlwdHNoaWZ0Iiwic3Vwc2NyaXB0c2hpZnQiLCJzeW1tZXRyaWMiLCJ2b2Zmc2V0Iiwid2lkdGgiLCJ4bWxucyJdKSxO''@;'; put 'put ''ZT1qKFsieGxpbms6aHJlZiIsInhtbDppZCIsInhsaW5rOnRpdGxlIiwieG1sOnNwYWNlIiwieG1sbnM6eGxpbmsiXSksTGU9VigvXHtce1tcd1xXXSp8W1x3XFddKlx9XH0vZ20pLEJlPVYoLzwlW1x3XFddKnxbXHdcV10qJT4vZ20pLEhlPVYoL1wke1tcd1xXXSp9L2dtKSxRZT1WKC9eZGF0''@;'; put 'put ''YS1bXC1cdy5cdTAwQjctXHVGRkZGXS8pLG10PVYoL15hcmlhLVtcLVx3XSskLyksS2U9VigvXig/Oig/Oig/OmZ8aHQpdHBzP3xtYWlsdG98dGVsfGNhbGx0b3xjaWR8eG1wcCk6fFteYS16XXxbYS16Ky5cLV0rKD86W15hLXorLlwtOl18JCkpL2kpLHdlPVYoL14oPzpcdytzY3JpcHR8ZGF0''@;'; put 'put ''YSk6L2kpLEllPVYoL1tcdTAwMDAtXHUwMDIwXHUwMEEwXHUxNjgwXHUxODBFXHUyMDAwLVx1MjAyOVx1MjA1Rlx1MzAwMF0vZyksT2U9VigvXmh0bWwkL2kpO3JldHVybiBmdW5jdGlvbiBxZSgpe3ZhciBFZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1''@;'; put 'put ''bWVudHNbMF06dHlwZW9mIHdpbmRvdz4idSI/bnVsbDp3aW5kb3csRGU9ZnVuY3Rpb24oV24pe3JldHVybiBxZShXbil9O2lmKERlLnZlcnNpb249IjIuNC43IixEZS5yZW1vdmVkPVtdLCFFZXx8IUVlLmRvY3VtZW50fHw5IT09RWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIERlLmlzU3Vw''@;'; put 'put ''cG9ydGVkPSExLERlO3ZhciAkZT1FZS5kb2N1bWVudCxhdD1FZS5kb2N1bWVudCxjdD1FZS5Eb2N1bWVudEZyYWdtZW50LE90PUVlLkhUTUxUZW1wbGF0ZUVsZW1lbnQsUHQ9RWUuTm9kZSxBdD1FZS5FbGVtZW50LEp0PUVlLk5vZGVGaWx0ZXIsbW49RWUuTmFtZWROb2RlTWFwLE50PXZvaWQg''@;'; put 'put ''MD09PW1uP0VlLk5hbWVkTm9kZU1hcHx8RWUuTW96TmFtZWRBdHRyTWFwOm1uLGJuPUVlLkhUTUxGb3JtRWxlbWVudCxHbj1FZS5ET01QYXJzZXIsb249RWUudHJ1c3RlZFR5cGVzLCRuPUF0LnByb3RvdHlwZSxObj15KCRuLCJjbG9uZU5vZGUiKSxwdD15KCRuLCJuZXh0U2libGluZyIpLHBu''@;'; put 'put ''PXkoJG4sImNoaWxkTm9kZXMiKSxobj15KCRuLCJwYXJlbnROb2RlIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE90KXt2YXIgQ3Q9YXQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtDdC5jb250ZW50JiZDdC5jb250ZW50Lm93bmVyRG9jdW1lbnQmJihhdD1DdC5jb250ZW50Lm93bmVyRG9j''@;'; put 'put ''dW1lbnQpfXZhciBlbj1mdW5jdGlvbihEZSwkZSl7aWYoIm9iamVjdCIhPT16ZShEZSl8fCJmdW5jdGlvbiIhPXR5cGVvZiBEZS5jcmVhdGVQb2xpY3kpcmV0dXJuIG51bGw7dmFyIGF0PW51bGwsY3Q9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7JGUuY3VycmVudFNjcmlwdCYmJGUuY3VycmVu''@;'; put 'put ''dFNjcmlwdC5oYXNBdHRyaWJ1dGUoY3QpJiYoYXQ9JGUuY3VycmVudFNjcmlwdC5nZXRBdHRyaWJ1dGUoY3QpKTt2YXIgT3Q9ImRvbXB1cmlmeSIrKGF0PyIjIithdDoiIik7dHJ5e3JldHVybiBEZS5jcmVhdGVQb2xpY3koT3Qse2NyZWF0ZUhUTUw6ZnVuY3Rpb24oQXQpe3JldHVybiBBdH0s''@;'; put 'put ''Y3JlYXRlU2NyaXB0VVJMOmZ1bmN0aW9uKEF0KXtyZXR1cm4gQXR9fSl9Y2F0Y2h7cmV0dXJuIGNvbnNvbGUud2FybigiVHJ1c3RlZFR5cGVzIHBvbGljeSAiK090KyIgY291bGQgbm90IGJlIGNyZWF0ZWQuIiksbnVsbH19KG9uLCRlKSxfdD1lbj9lbi5jcmVhdGVIVE1MKCIiKToiIixfbj1h''@;'; put 'put ''dC5pbXBsZW1lbnRhdGlvbixvdD1hdC5jcmVhdGVOb2RlSXRlcmF0b3IsSXQ9YXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxubj1hdC5nZXRFbGVtZW50c0J5VGFnTmFtZSxEdD0kZS5pbXBvcnROb2RlLHZ0PXt9O3RyeXt2dD1NKGF0KS5kb2N1bWVudE1vZGU/YXQuZG9jdW1lbnRNb2RlOnt9''@;'; put 'put ''fWNhdGNoe312YXIgR3Q9e307RGUuaXNTdXBwb3J0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGhuJiZfbiYmdm9pZCAwIT09X24uY3JlYXRlSFRNTERvY3VtZW50JiY5IT09dnQ7dmFyIG5sLCRsLExuPUxlLHp0PUJlLE1uPUhlLFRuPVFlLHNuPW10LEJuPXdlLEZuPUllLHF0PUtlLEhuPW51bGws''@;'; put 'put ''aWk9Qyh7fSxbXS5jb25jYXQodihwKSx2KFMpLHYoUSksdihmZSksdihrZSkpKSxjbj1udWxsLGpuPUMoe30sW10uY29uY2F0KHYoVGUpLHYoUGUpLHYoRmUpLHYoTmUpKSksWHI9T2JqZWN0LnNlYWwoT2JqZWN0LmNyZWF0ZShudWxsLHt0YWdOYW1lQ2hlY2s6e3dyaXRhYmxlOiEwLGNvbmZp''@;'; put 'put ''Z3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGx9LGF0dHJpYnV0ZU5hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzOnt3cml0YWJsZTohMCxjb25maWd1cmFi''@;'; put 'put ''bGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTohMX19KSksdmk9bnVsbCxFcj1udWxsLFlpPSEwLEpyPSEwLGFvPSExLEJyPSEwLEppPSExLHRvPSExLGNvPSExLGxvPSExLHNvPSExLFhpPSExLHBvPSExLF9yPSEwLEZpPSExLGdhPSEwLGxhPSExLFZ1PXt9LGdzPW51bGwsQnU9Qyh7fSxbImFu''@;'; put 'put ''bm90YXRpb24teG1sIiwiYXVkaW8iLCJjb2xncm91cCIsImRlc2MiLCJmb3JlaWdub2JqZWN0IiwiaGVhZCIsImlmcmFtZSIsIm1hdGgiLCJtaSIsIm1uIiwibW8iLCJtcyIsIm10ZXh0Iiwibm9lbWJlZCIsIm5vZnJhbWVzIiwibm9zY3JpcHQiLCJwbGFpbnRleHQiLCJzY3JpcHQiLCJzdHls''@;'; put 'put ''ZSIsInN2ZyIsInRlbXBsYXRlIiwidGhlYWQiLCJ0aXRsZSIsInZpZGVvIiwieG1wIl0pLFgwPW51bGwsSjM9Qyh7fSxbImF1ZGlvIiwidmlkZW8iLCJpbWciLCJzb3VyY2UiLCJpbWFnZSIsInRyYWNrIl0pLEtkPW51bGwsZDA9Qyh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJl''@;'; put 'put ''bCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLExjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIix2YT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLEZsPSJodHRw''@;'; put 'put ''Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixNcj1GbCxxZD0hMSxRMz1udWxsLHIyPUMoe30sW0xjLHZhLEZsXSxkZSksc2E9WyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCJ0ZXh0L2h0bWwiXSxoMD1udWxsLGtsPWF0LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxvMj1mdW5jdGlvbihXbil7cmV0''@;'; put 'put ''dXJuIFduIGluc3RhbmNlb2YgUmVnRXhwfHxXbiBpbnN0YW5jZW9mIEZ1bmN0aW9ufSxQYz1mdW5jdGlvbihXbil7aDAmJmgwPT09V258fCgoIVdufHwib2JqZWN0IiE9PXplKFduKSkmJihXbj17fSksV249TShXbiksbmw9bmw9LTE9PT1zYS5pbmRleE9mKFduLlBBUlNFUl9NRURJQV9UWVBF''@;'; put 'put ''KT8idGV4dC9odG1sIjpXbi5QQVJTRVJfTUVESUFfVFlQRSwkbD0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PW5sP2RlOmxlLEhuPSJBTExPV0VEX1RBR1MiaW4gV24/Qyh7fSxXbi5BTExPV0VEX1RBR1MsJGwpOmlpLGNuPSJBTExPV0VEX0FUVFIiaW4gV24/Qyh7fSxXbi5BTExPV0VEX0FU''@;'; put 'put ''VFIsJGwpOmpuLFEzPSJBTExPV0VEX05BTUVTUEFDRVMiaW4gV24/Qyh7fSxXbi5BTExPV0VEX05BTUVTUEFDRVMsZGUpOnIyLEtkPSJBRERfVVJJX1NBRkVfQVRUUiJpbiBXbj9DKE0oZDApLFduLkFERF9VUklfU0FGRV9BVFRSLCRsKTpkMCxYMD0iQUREX0RBVEFfVVJJX1RBR1MiaW4gV24/''@;'; put 'put ''QyhNKEozKSxXbi5BRERfREFUQV9VUklfVEFHUywkbCk6SjMsZ3M9IkZPUkJJRF9DT05URU5UUyJpbiBXbj9DKHt9LFduLkZPUkJJRF9DT05URU5UUywkbCk6QnUsdmk9IkZPUkJJRF9UQUdTImluIFduP0Moe30sV24uRk9SQklEX1RBR1MsJGwpOnt9LEVyPSJGT1JCSURfQVRUUiJpbiBXbj9D''@;'; put 'put ''KHt9LFduLkZPUkJJRF9BVFRSLCRsKTp7fSxWdT0iVVNFX1BST0ZJTEVTImluIFduJiZXbi5VU0VfUFJPRklMRVMsWWk9ITEhPT1Xbi5BTExPV19BUklBX0FUVFIsSnI9ITEhPT1Xbi5BTExPV19EQVRBX0FUVFIsYW89V24uQUxMT1dfVU5LTk9XTl9QUk9UT0NPTFN8fCExLEJyPSExIT09V24u''@;'; put 'put ''QUxMT1dfU0VMRl9DTE9TRV9JTl9BVFRSLEppPVduLlNBRkVfRk9SX1RFTVBMQVRFU3x8ITEsdG89V24uV0hPTEVfRE9DVU1FTlR8fCExLHNvPVduLlJFVFVSTl9ET018fCExLFhpPVduLlJFVFVSTl9ET01fRlJBR01FTlR8fCExLHBvPVduLlJFVFVSTl9UUlVTVEVEX1RZUEV8fCExLGxvPVdu''@;'; put 'put ''LkZPUkNFX0JPRFl8fCExLF9yPSExIT09V24uU0FOSVRJWkVfRE9NLEZpPVduLlNBTklUSVpFX05BTUVEX1BST1BTfHwhMSxnYT0hMSE9PVduLktFRVBfQ09OVEVOVCxsYT1Xbi5JTl9QTEFDRXx8ITEscXQ9V24uQUxMT1dFRF9VUklfUkVHRVhQfHxxdCxNcj1Xbi5OQU1FU1BBQ0V8fEZsLFhy''@;'; put 'put ''PVduLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HfHx7fSxXbi5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmbzIoV24uQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSYmKFhyLnRhZ05hbWVDaGVjaz1Xbi5DVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2spLFdu''@;'; put 'put ''LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZvMihXbi5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2spJiYoWHIuYXR0cmlidXRlTmFtZUNoZWNrPVduLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjayksV24uQ1VTVE9NX0VMRU1FTlRf''@;'; put 'put ''SEFORExJTkcmJiJib29sZWFuIj09dHlwZW9mIFduLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKFhyLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz1Xbi5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRC''@;'; put 'put ''dWlsdEluRWxlbWVudHMpLEppJiYoSnI9ITEpLFhpJiYoc289ITApLFZ1JiYoSG49Qyh7fSx2KGtlKSksY249W10sITA9PT1WdS5odG1sJiYoQyhIbixwKSxDKGNuLFRlKSksITA9PT1WdS5zdmcmJihDKEhuLFMpLEMoY24sUGUpLEMoY24sTmUpKSwhMD09PVZ1LnN2Z0ZpbHRlcnMmJihDKEhu''@;'; put 'put ''LFEpLEMoY24sUGUpLEMoY24sTmUpKSwhMD09PVZ1Lm1hdGhNbCYmKEMoSG4sZmUpLEMoY24sRmUpLEMoY24sTmUpKSksV24uQUREX1RBR1MmJihIbj09PWlpJiYoSG49TShIbikpLEMoSG4sV24uQUREX1RBR1MsJGwpKSxXbi5BRERfQVRUUiYmKGNuPT09am4mJihjbj1NKGNuKSksQyhjbixX''@;'; put 'put ''bi5BRERfQVRUUiwkbCkpLFduLkFERF9VUklfU0FGRV9BVFRSJiZDKEtkLFduLkFERF9VUklfU0FGRV9BVFRSLCRsKSxXbi5GT1JCSURfQ09OVEVOVFMmJihncz09PUJ1JiYoZ3M9TShncykpLEMoZ3MsV24uRk9SQklEX0NPTlRFTlRTLCRsKSksZ2EmJihIblsiI3RleHQiXT0hMCksdG8mJkMo''@;'; put 'put ''SG4sWyJodG1sIiwiaGVhZCIsImJvZHkiXSksSG4udGFibGUmJihDKEhuLFsidGJvZHkiXSksZGVsZXRlIHZpLnRib2R5KSxqJiZqKFduKSxoMD1Xbil9LERhPUMoe30sWyJtaSIsIm1vIiwibW4iLCJtcyIsIm10ZXh0Il0pLHAwPUMoe30sWyJmb3JlaWdub2JqZWN0IiwiZGVzYyIsInRpdGxl''@;'; put 'put ''IiwiYW5ub3RhdGlvbi14bWwiXSksS2w9Qyh7fSxbInRpdGxlIiwic3R5bGUiLCJmb250IiwiYSIsInNjcmlwdCJdKSxrdT1DKHt9LFMpO0Moa3UsUSksQyhrdSxyZSk7dmFyIGEyPUMoe30sZmUpO0MoYTIsbWUpO3ZhciBDbz1mdW5jdGlvbihXbil7aWUoRGUucmVtb3ZlZCx7ZWxlbWVudDpX''@;'; put 'put ''bn0pO3RyeXtXbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFduKX1jYXRjaHt0cnl7V24ub3V0ZXJIVE1MPV90fWNhdGNoe1duLnJlbW92ZSgpfX19LG0wPWZ1bmN0aW9uKFduLGJpKXt0cnl7aWUoRGUucmVtb3ZlZCx7YXR0cmlidXRlOmJpLmdldEF0dHJpYnV0ZU5vZGUoV24pLGZyb206Yml9''@;'; put 'put ''KX1jYXRjaHtpZShEZS5yZW1vdmVkLHthdHRyaWJ1dGU6bnVsbCxmcm9tOmJpfSl9aWYoYmkucmVtb3ZlQXR0cmlidXRlKFduKSwiaXMiPT09V24mJiFjbltXbl0paWYoc298fFhpKXRyeXtDbyhiaSl9Y2F0Y2h7fWVsc2UgdHJ5e2JpLnNldEF0dHJpYnV0ZShXbiwiIil9Y2F0Y2h7fX0sWGQ9''@;'; put 'put ''ZnVuY3Rpb24oV24pe3ZhciBiaSxfaTtpZihsbylXbj0iPHJlbW92ZT48L3JlbW92ZT4iK1duO2Vsc2V7dmFyIHVhPXVlKFduLC9eW1xyXG5cdCBdKy8pO19pPXVhJiZ1YVswXX0iYXBwbGljYXRpb24veGh0bWwreG1sIj09PW5sJiZNcj09PUZsJiYoV249JzxodG1sIHhtbG5zPSJodHRwOi8v''@;'; put 'put ''d3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48L2hlYWQ+PGJvZHk+JytXbisiPC9ib2R5PjwvaHRtbD4iKTt2YXIgSGw9ZW4/ZW4uY3JlYXRlSFRNTChXbik6V247aWYoTXI9PT1GbCl0cnl7Ymk9KG5ldyBHbikucGFyc2VGcm9tU3RyaW5nKEhsLG5sKX1jYXRjaHt9aWYoIWJpfHwhYmku''@;'; put 'put ''ZG9jdW1lbnRFbGVtZW50KXtiaT1fbi5jcmVhdGVEb2N1bWVudChNciwidGVtcGxhdGUiLG51bGwpO3RyeXtiaS5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MPXFkP190OkhsfWNhdGNoe319dmFyIE5sPWJpLmJvZHl8fGJpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gV24mJl9pJiZObC5pbnNl''@;'; put 'put ''cnRCZWZvcmUoYXQuY3JlYXRlVGV4dE5vZGUoX2kpLE5sLmNoaWxkTm9kZXNbMF18fG51bGwpLE1yPT09Rmw/bm4uY2FsbChiaSx0bz8iaHRtbCI6ImJvZHkiKVswXTp0bz9iaS5kb2N1bWVudEVsZW1lbnQ6Tmx9LEpkPWZ1bmN0aW9uKFduKXtyZXR1cm4gb3QuY2FsbChXbi5vd25lckRvY3Vt''@;'; put 'put ''ZW50fHxXbixXbixKdC5TSE9XX0VMRU1FTlR8SnQuU0hPV19DT01NRU5UfEp0LlNIT1dfVEVYVCxudWxsLCExKX0sSXI9ZnVuY3Rpb24oV24pe3JldHVybiJvYmplY3QiPT09emUoUHQpP1duIGluc3RhbmNlb2YgUHQ6V24mJiJvYmplY3QiPT09emUoV24pJiYibnVtYmVyIj09dHlwZW9mIFdu''@;'; put 'put ''Lm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIFduLm5vZGVOYW1lfSxFdT1mdW5jdGlvbihXbixiaSxfaSl7R3RbV25dJiZ0ZShHdFtXbl0sZnVuY3Rpb24odWEpe3VhLmNhbGwoRGUsYmksX2ksaDApfSl9LElvPWZ1bmN0aW9uKFduKXt2YXIgYmk7aWYoRXUoImJlZm9yZVNhbml0aXplRWxl''@;'; put 'put ''bWVudHMiLFduLG51bGwpLGZ1bmN0aW9uKFduKXtyZXR1cm4gV24gaW5zdGFuY2VvZiBibiYmKCJzdHJpbmciIT10eXBlb2YgV24ubm9kZU5hbWV8fCJzdHJpbmciIT10eXBlb2YgV24udGV4dENvbnRlbnR8fCJmdW5jdGlvbiIhPXR5cGVvZiBXbi5yZW1vdmVDaGlsZHx8IShXbi5hdHRyaWJ1''@;'; put 'put ''dGVzIGluc3RhbmNlb2YgTnQpfHwiZnVuY3Rpb24iIT10eXBlb2YgV24ucmVtb3ZlQXR0cmlidXRlfHwiZnVuY3Rpb24iIT10eXBlb2YgV24uc2V0QXR0cmlidXRlfHwic3RyaW5nIiE9dHlwZW9mIFduLm5hbWVzcGFjZVVSSXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFduLmluc2VydEJlZm9yZXx8''@;'; put 'put ''ImZ1bmN0aW9uIiE9dHlwZW9mIFduLmhhc0NoaWxkTm9kZXMpfShXbil8fHgoL1tcdTAwODAtXHVGRkZGXS8sV24ubm9kZU5hbWUpKXJldHVybiBDbyhXbiksITA7dmFyIF9pPSRsKFduLm5vZGVOYW1lKTtpZihFdSgidXBvblNhbml0aXplRWxlbWVudCIsV24se3RhZ05hbWU6X2ksYWxsb3dl''@;'; put 'put ''ZFRhZ3M6SG59KSxXbi5oYXNDaGlsZE5vZGVzKCkmJiFJcihXbi5maXJzdEVsZW1lbnRDaGlsZCkmJighSXIoV24uY29udGVudCl8fCFJcihXbi5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKSkmJngoLzxbL1x3XS9nLFduLmlubmVySFRNTCkmJngoLzxbL1x3XS9nLFduLnRleHRDb250ZW50''@;'; put 'put ''KXx8InNlbGVjdCI9PT1faSYmeCgvPHRlbXBsYXRlL2ksV24uaW5uZXJIVE1MKSlyZXR1cm4gQ28oV24pLCEwO2lmKCFIbltfaV18fHZpW19pXSl7aWYoIXZpW19pXSYmZzAoX2kpJiYoWHIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZ4KFhyLnRhZ05hbWVDaGVjayxfaSl8fFhy''@;'; put 'put ''LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZYci50YWdOYW1lQ2hlY2soX2kpKSlyZXR1cm4hMTtpZihnYSYmIWdzW19pXSl7dmFyIHVhPWhuKFduKXx8V24ucGFyZW50Tm9kZSxIbD1wbihXbil8fFduLmNoaWxkTm9kZXM7aWYoSGwmJnVhKWZvcih2YXIgUW89SGwubGVuZ3Ro''@;'; put 'put ''LTE7UW8+PTA7LS1Rbyl1YS5pbnNlcnRCZWZvcmUoTm4oSGxbUW9dLCEwKSxwdChXbikpfXJldHVybiBDbyhXbiksITB9cmV0dXJuIFduIGluc3RhbmNlb2YgQXQmJiFmdW5jdGlvbihXbil7dmFyIGJpPWhuKFduKTsoIWJpfHwhYmkudGFnTmFtZSkmJihiaT17bmFtZXNwYWNlVVJJOk1yLHRh''@;'; put 'put ''Z05hbWU6InRlbXBsYXRlIn0pO3ZhciBfaT1sZShXbi50YWdOYW1lKSx1YT1sZShiaS50YWdOYW1lKTtyZXR1cm4hIVEzW1duLm5hbWVzcGFjZVVSSV0mJihXbi5uYW1lc3BhY2VVUkk9PT12YT9iaS5uYW1lc3BhY2VVUkk9PT1GbD8ic3ZnIj09PV9pOmJpLm5hbWVzcGFjZVVSST09PUxjPyJz''@;'; put 'put ''dmciPT09X2kmJigiYW5ub3RhdGlvbi14bWwiPT09dWF8fERhW3VhXSk6ISFrdVtfaV06V24ubmFtZXNwYWNlVVJJPT09TGM/YmkubmFtZXNwYWNlVVJJPT09Rmw/Im1hdGgiPT09X2k6YmkubmFtZXNwYWNlVVJJPT09dmE/Im1hdGgiPT09X2kmJnAwW3VhXTohIWEyW19pXTpXbi5uYW1lc3Bh''@;'; put 'put ''Y2VVUkk9PT1GbD8hKGJpLm5hbWVzcGFjZVVSST09PXZhJiYhcDBbdWFdfHxiaS5uYW1lc3BhY2VVUkk9PT1MYyYmIURhW3VhXSkmJiFhMltfaV0mJihLbFtfaV18fCFrdVtfaV0pOiEoImFwcGxpY2F0aW9uL3hodG1sK3htbCIhPT1ubHx8IVEzW1duLm5hbWVzcGFjZVVSSV0pKX0oV24pfHwo''@;'; put 'put ''Im5vc2NyaXB0Ij09PV9pfHwibm9lbWJlZCI9PT1faXx8Im5vZnJhbWVzIj09PV9pKSYmeCgvPFwvbm8oc2NyaXB0fGVtYmVkfGZyYW1lcykvaSxXbi5pbm5lckhUTUwpPyhDbyhXbiksITApOihKaSYmMz09PVduLm5vZGVUeXBlJiYoYmk9Y2UoYmk9V24udGV4dENvbnRlbnQsTG4sIiAiKSxi''@;'; put 'put ''aT1jZShiaSx6dCwiICIpLGJpPWNlKGJpLE1uLCIgIiksV24udGV4dENvbnRlbnQhPT1iaSYmKGllKERlLnJlbW92ZWQse2VsZW1lbnQ6V24uY2xvbmVOb2RlKCl9KSxXbi50ZXh0Q29udGVudD1iaSkpLEV1KCJhZnRlclNhbml0aXplRWxlbWVudHMiLFduLG51bGwpLCExKX0sRWE9ZnVuY3Rp''@;'; put 'put ''b24oV24sYmksX2kpe2lmKF9yJiYoImlkIj09PWJpfHwibmFtZSI9PT1iaSkmJihfaSBpbiBhdHx8X2kgaW4ga2wpKXJldHVybiExO2lmKCghSnJ8fEVyW2JpXXx8IXgoVG4sYmkpKSYmKCFZaXx8IXgoc24sYmkpKSlpZighY25bYmldfHxFcltiaV0pe2lmKCEoZzAoV24pJiYoWHIudGFnTmFt''@;'; put 'put ''ZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZ4KFhyLnRhZ05hbWVDaGVjayxXbil8fFhyLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZYci50YWdOYW1lQ2hlY2soV24pKSYmKFhyLmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmeChYci5hdHRyaWJ1dGVO''@;'; put 'put ''YW1lQ2hlY2ssYmkpfHxYci5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmWHIuYXR0cmlidXRlTmFtZUNoZWNrKGJpKSl8fCJpcyI9PT1iaSYmWHIuYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzJiYoWHIudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhw''@;'; put 'put ''JiZ4KFhyLnRhZ05hbWVDaGVjayxfaSl8fFhyLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZYci50YWdOYW1lQ2hlY2soX2kpKSkpcmV0dXJuITF9ZWxzZSBpZighS2RbYmldJiYheChxdCxjZShfaSxGbiwiIikpJiYoInNyYyIhPT1iaSYmInhsaW5rOmhyZWYiIT09YmkmJiJo''@;'; put 'put ''cmVmIiE9PWJpfHwic2NyaXB0Ij09PVdufHwwIT09WShfaSwiZGF0YToiKXx8IVgwW1duXSkmJighYW98fHgoQm4sY2UoX2ksRm4sIiIpKSkmJl9pKXJldHVybiExO3JldHVybiEwfSxnMD1mdW5jdGlvbihXbil7cmV0dXJuIFduLmluZGV4T2YoIi0iKT4wfSxRZD1mdW5jdGlvbihXbil7dmFy''@;'; put 'put ''IGJpLF9pLHVhLEhsO0V1KCJiZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXMiLFduLG51bGwpO3ZhciBObD1Xbi5hdHRyaWJ1dGVzO2lmKE5sKXt2YXIgUW89e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczpjbn07Zm9yKEhsPU5sLmxlbmd0aDtI''@;'; put 'put ''bC0tOyl7dmFyIERsPShiaT1ObFtIbF0pLm5hbWUsczI9YmkubmFtZXNwYWNlVVJJO2lmKF9pPSJ2YWx1ZSI9PT1EbD9iaS52YWx1ZTpiKGJpLnZhbHVlKSx1YT0kbChEbCksUW8uYXR0ck5hbWU9dWEsUW8uYXR0clZhbHVlPV9pLFFvLmtlZXBBdHRyPSEwLFFvLmZvcmNlS2VlcEF0dHI9dm9p''@;'; put 'put ''ZCAwLEV1KCJ1cG9uU2FuaXRpemVBdHRyaWJ1dGUiLFduLFFvKSxfaT1Rby5hdHRyVmFsdWUsIVFvLmZvcmNlS2VlcEF0dHImJihtMChEbCxXbiksUW8ua2VlcEF0dHIpKXtpZighQnImJngoL1wvPi9pLF9pKSl7bTAoRGwsV24pO2NvbnRpbnVlfUppJiYoX2k9Y2UoX2ksTG4sIiAiKSxfaT1j''@;'; put 'put ''ZShfaSx6dCwiICIpLF9pPWNlKF9pLE1uLCIgIikpO3ZhciB1Mj0kbChXbi5ub2RlTmFtZSk7aWYoRWEodTIsdWEsX2kpKXtpZihGaSYmKCJpZCI9PT11YXx8Im5hbWUiPT09dWEpJiYobTAoRGwsV24pLF9pPSJ1c2VyLWNvbnRlbnQtIitfaSksZW4mJiJvYmplY3QiPT09emUob24pJiYiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2Ygb24uZ2V0QXR0cmlidXRlVHlwZSYmIXMyKXN3aXRjaChvbi5nZXRBdHRyaWJ1dGVUeXBlKHUyLHVhKSl7Y2FzZSJUcnVzdGVkSFRNTCI6X2k9ZW4uY3JlYXRlSFRNTChfaSk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjpfaT1lbi5jcmVhdGVTY3JpcHRVUkwo''@;'; put 'put ''X2kpfXRyeXtzMj9Xbi5zZXRBdHRyaWJ1dGVOUyhzMixEbCxfaSk6V24uc2V0QXR0cmlidXRlKERsLF9pKSxuZShEZS5yZW1vdmVkKX1jYXRjaHt9fX19RXUoImFmdGVyU2FuaXRpemVBdHRyaWJ1dGVzIixXbixudWxsKX19LGwyPWZ1bmN0aW9uIG5vKFduKXt2YXIgYmksX2k9SmQoV24pO2Zv''@;'; put 'put ''cihFdSgiYmVmb3JlU2FuaXRpemVTaGFkb3dET00iLFduLG51bGwpO2JpPV9pLm5leHROb2RlKCk7KUV1KCJ1cG9uU2FuaXRpemVTaGFkb3dOb2RlIixiaSxudWxsKSwhSW8oYmkpJiYoYmkuY29udGVudCBpbnN0YW5jZW9mIGN0JiZubyhiaS5jb250ZW50KSxRZChiaSkpO0V1KCJhZnRlclNh''@;'; put 'put ''bml0aXplU2hhZG93RE9NIixXbixudWxsKX07cmV0dXJuIERlLnNhbml0aXplPWZ1bmN0aW9uKG5vKXt2YXIgYmksX2ksdWEsSGwsTmwsV249YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKChxZD0hbm8pJiYobm89Ilx4M2MhLS1c''@;'; put 'put ''eDNlIiksInN0cmluZyIhPXR5cGVvZiBubyYmIUlyKG5vKSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG5vLnRvU3RyaW5nKXRocm93IE4oInRvU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIik7aWYoInN0cmluZyIhPXR5cGVvZihubz1uby50b1N0cmluZygpKSl0aHJvdyBOKCJkaXJ0eSBpcyBu''@;'; put 'put ''b3QgYSBzdHJpbmcsIGFib3J0aW5nIil9aWYoIURlLmlzU3VwcG9ydGVkKXtpZigib2JqZWN0Ij09PXplKEVlLnRvU3RhdGljSFRNTCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBFZS50b1N0YXRpY0hUTUwpe2lmKCJzdHJpbmciPT10eXBlb2Ygbm8pcmV0dXJuIEVlLnRvU3RhdGljSFRNTChubyk7''@;'; put 'put ''aWYoSXIobm8pKXJldHVybiBFZS50b1N0YXRpY0hUTUwobm8ub3V0ZXJIVE1MKX1yZXR1cm4gbm99aWYoY298fFBjKFduKSxEZS5yZW1vdmVkPVtdLCJzdHJpbmciPT10eXBlb2Ygbm8mJihsYT0hMSksbGEpe2lmKG5vLm5vZGVOYW1lKXt2YXIgUW89JGwobm8ubm9kZU5hbWUpO2lmKCFIbltR''@;'; put 'put ''b118fHZpW1FvXSl0aHJvdyBOKCJyb290IG5vZGUgaXMgZm9yYmlkZGVuIGFuZCBjYW5ub3QgYmUgc2FuaXRpemVkIGluLXBsYWNlIil9fWVsc2UgaWYobm8gaW5zdGFuY2VvZiBQdCkxPT09KF9pPShiaT1YZCgiXHgzYyEtLS0tXHgzZSIpKS5vd25lckRvY3VtZW50LmltcG9ydE5vZGUobm8s''@;'; put 'put ''ITApKS5ub2RlVHlwZSYmIkJPRFkiPT09X2kubm9kZU5hbWV8fCJIVE1MIj09PV9pLm5vZGVOYW1lP2JpPV9pOmJpLmFwcGVuZENoaWxkKF9pKTtlbHNle2lmKCFzbyYmIUppJiYhdG8mJi0xPT09bm8uaW5kZXhPZigiPCIpKXJldHVybiBlbiYmcG8/ZW4uY3JlYXRlSFRNTChubyk6bm87aWYo''@;'; put 'put ''IShiaT1YZChubykpKXJldHVybiBzbz9udWxsOnBvP190OiIifWJpJiZsbyYmQ28oYmkuZmlyc3RDaGlsZCk7Zm9yKHZhciBKMD1KZChsYT9ubzpiaSk7dWE9SjAubmV4dE5vZGUoKTspMz09PXVhLm5vZGVUeXBlJiZ1YT09PUhsfHxJbyh1YSl8fCh1YS5jb250ZW50IGluc3RhbmNlb2YgY3Qm''@;'; put 'put ''JmwyKHVhLmNvbnRlbnQpLFFkKHVhKSxIbD11YSk7aWYoSGw9bnVsbCxsYSlyZXR1cm4gbm87aWYoc28pe2lmKFhpKWZvcihObD1JdC5jYWxsKGJpLm93bmVyRG9jdW1lbnQpO2JpLmZpcnN0Q2hpbGQ7KU5sLmFwcGVuZENoaWxkKGJpLmZpcnN0Q2hpbGQpO2Vsc2UgTmw9Ymk7cmV0dXJuKGNu''@;'; put 'put ''LnNoYWRvd3Jvb3R8fGNuLnNoYWRvd3Jvb3Rtb2QpJiYoTmw9RHQuY2FsbCgkZSxObCwhMCkpLE5sfXZhciBEbD10bz9iaS5vdXRlckhUTUw6YmkuaW5uZXJIVE1MO3JldHVybiB0byYmSG5bIiFkb2N0eXBlIl0mJmJpLm93bmVyRG9jdW1lbnQmJmJpLm93bmVyRG9jdW1lbnQuZG9jdHlwZSYm''@;'; put 'put ''Ymkub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUmJngoT2UsYmkub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUpJiYoRGw9IjwhRE9DVFlQRSAiK2JpLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKyI+XG4iK0RsKSxKaSYmKERsPWNlKERsLExuLCIgIiksRGw9Y2UoRGwsenQsIiAiKSxE''@;'; put 'put ''bD1jZShEbCxNbiwiICIpKSxlbiYmcG8/ZW4uY3JlYXRlSFRNTChEbCk6RGx9LERlLnNldENvbmZpZz1mdW5jdGlvbihubyl7UGMobm8pLGNvPSEwfSxEZS5jbGVhckNvbmZpZz1mdW5jdGlvbigpe2gwPW51bGwsY289ITF9LERlLmlzVmFsaWRBdHRyaWJ1dGU9ZnVuY3Rpb24obm8sV24sYmkp''@;'; put 'put ''e2gwfHxQYyh7fSk7dmFyIF9pPSRsKG5vKSx1YT0kbChXbik7cmV0dXJuIEVhKF9pLHVhLGJpKX0sRGUuYWRkSG9vaz1mdW5jdGlvbihubyxXbil7ImZ1bmN0aW9uIj09dHlwZW9mIFduJiYoR3Rbbm9dPUd0W25vXXx8W10saWUoR3Rbbm9dLFduKSl9LERlLnJlbW92ZUhvb2s9ZnVuY3Rpb24o''@;'; put 'put ''bm8pe2lmKEd0W25vXSlyZXR1cm4gbmUoR3Rbbm9dKX0sRGUucmVtb3ZlSG9va3M9ZnVuY3Rpb24obm8pe0d0W25vXSYmKEd0W25vXT1bXSl9LERlLnJlbW92ZUFsbEhvb2tzPWZ1bmN0aW9uKCl7R3Q9e319LERlfSgpfSgpfSw4ODY1MTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNl''@;'; put 'put ''PXplO3NlLnZlcnNpb249VCgxODU5NykuaTgsc2UudXRpbHM9VCg0Njc2Nyksc2UucmFuZD1UKDYwMDgyKSxzZS5jdXJ2ZT1UKDkxMzIpLHNlLmN1cnZlcz1UKDgwNDkpLHNlLmVjPVQoNjQ0Myksc2UuZWRkc2E9VCg5OTU3Nyl9LDcxMzI0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''c2U9VCgzMTM4Nyksaz1UKDQ2NzY3KSx2PWsuZ2V0TkFGLGhlPWsuZ2V0SlNGLEg9ay5hc3NlcnQ7ZnVuY3Rpb24gQihLLEope3RoaXMudHlwZT1LLHRoaXMucD1uZXcgc2UoSi5wLDE2KSx0aGlzLnJlZD1KLnByaW1lP3NlLnJlZChKLnByaW1lKTpzZS5tb250KHRoaXMucCksdGhpcy56ZXJv''@;'; put 'put ''PW5ldyBzZSgwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IHNlKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgc2UoMikudG9SZWQodGhpcy5yZWQpLHRoaXMubj1KLm4mJm5ldyBzZShKLm4sMTYpLHRoaXMuZz1KLmcmJnRoaXMucG9pbnRGcm9tSlNPTihKLmcsSi5nUmVk''@;'; put 'put ''KSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIEk9dGhpcy5uJiZ0''@;'; put 'put ''aGlzLnAuZGl2KHRoaXMubik7IUl8fEkuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gTChLLEope3RoaXMuY3VydmU9Syx0aGlzLnR5cGU9Six0aGlzLnByZWNvbXB1dGVk''@;'; put 'put ''PW51bGx9V2UuZXhwb3J0cz1CLEIucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sQi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxCLnByb3RvdHlwZS5f''@;'; put 'put ''Zml4ZWROYWZNdWw9ZnVuY3Rpb24oSixJKXtIKEoucHJlY29tcHV0ZWQpO3ZhciBSPUouX2dldERvdWJsZXMoKSxFPXYoSSwxLHRoaXMuX2JpdExlbmd0aCksej0oMTw8Ui5zdGVwKzEpLShSLnN0ZXAlMj09MD8yOjEpO3ovPTM7dmFyIFYsRyxqPVtdO2ZvcihWPTA7VjxFLmxlbmd0aDtWKz1S''@;'; put 'put ''LnN0ZXApe0c9MDtmb3IodmFyIFc9VitSLnN0ZXAtMTtXPj1WO1ctLSlHPShHPDwxKStFW1ddO2oucHVzaChHKX1mb3IodmFyIFU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHE9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHRlPXo7dGU+MDt0ZS0tKXtmb3IoVj0wO1Y8ai5sZW5n''@;'; put 'put ''dGg7VisrKShHPWpbVl0pPT09dGU/cT1xLm1peGVkQWRkKFIucG9pbnRzW1ZdKTpHPT09LXRlJiYocT1xLm1peGVkQWRkKFIucG9pbnRzW1ZdLm5lZygpKSk7VT1VLmFkZChxKX1yZXR1cm4gVS50b1AoKX0sQi5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24oSixJKXtmb3IodmFyIFI9NCxF''@;'; put 'put ''PUouX2dldE5BRlBvaW50cyhSKSx6PUUucG9pbnRzLGo9dihJLFI9RS53bmQsdGhpcy5fYml0TGVuZ3RoKSxWPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxHPWoubGVuZ3RoLTE7Rz49MDtHLS0pe2Zvcih2YXIgVz0wO0c+PTAmJjA9PT1qW0ddO0ctLSlXKys7aWYoRz49MCYmVysrLFY9''@;'; put 'put ''Vi5kYmxwKFcpLEc8MClicmVhazt2YXIgVT1qW0ddO0goMCE9PVUpLFY9ImFmZmluZSI9PT1KLnR5cGU/Vi5taXhlZEFkZChVPjA/eltVLTE+PjFdOnpbLVUtMT4+MV0ubmVnKCkpOlYuYWRkKFU+MD96W1UtMT4+MV06elstVS0xPj4xXS5uZWcoKSl9cmV0dXJuImFmZmluZSI9PT1KLnR5cGU/''@;'; put 'put ''Vi50b1AoKTpWfSxCLnByb3RvdHlwZS5fd25hZk11bEFkZD1mdW5jdGlvbihKLEksUixFLHope3ZhciBVLHEsdGUsaj10aGlzLl93bmFmVDEsVj10aGlzLl93bmFmVDIsRz10aGlzLl93bmFmVDMsVz0wO2ZvcihVPTA7VTxFO1UrKyl7dmFyIG5lPSh0ZT1JW1VdKS5fZ2V0TkFGUG9pbnRzKEop''@;'; put 'put ''O2pbVV09bmUud25kLFZbVV09bmUucG9pbnRzfWZvcihVPUUtMTtVPj0xO1UtPTIpe3ZhciBpZT1VLTEsbGU9VTtpZigxPT09altpZV0mJjE9PT1qW2xlXSl7dmFyIGRlPVtJW2llXSxudWxsLG51bGwsSVtsZV1dOzA9PT1JW2llXS55LmNtcChJW2xlXS55KT8oZGVbMV09SVtpZV0uYWRkKElb''@;'; put 'put ''bGVdKSxkZVsyXT1JW2llXS50b0ooKS5taXhlZEFkZChJW2xlXS5uZWcoKSkpOjA9PT1JW2llXS55LmNtcChJW2xlXS55LnJlZE5lZygpKT8oZGVbMV09SVtpZV0udG9KKCkubWl4ZWRBZGQoSVtsZV0pLGRlWzJdPUlbaWVdLmFkZChJW2xlXS5uZWcoKSkpOihkZVsxXT1JW2llXS50b0ooKS5t''@;'; put 'put ''aXhlZEFkZChJW2xlXSksZGVbMl09SVtpZV0udG9KKCkubWl4ZWRBZGQoSVtsZV0ubmVnKCkpKTt2YXIgdWU9Wy0zLC0xLC01LC03LDAsNyw1LDEsM10sY2U9aGUoUltpZV0sUltsZV0pO2ZvcihXPU1hdGgubWF4KGNlWzBdLmxlbmd0aCxXKSxHW2llXT1uZXcgQXJyYXkoVyksR1tsZV09bmV3''@;'; put 'put ''IEFycmF5KFcpLHE9MDtxPFc7cSsrKUdbaWVdW3FdPXVlWzMqKDErKDB8Y2VbMF1bcV0pKSsoMSsoMHxjZVsxXVtxXSkpXSxHW2xlXVtxXT0wLFZbaWVdPWRlfWVsc2UgR1tpZV09dihSW2llXSxqW2llXSx0aGlzLl9iaXRMZW5ndGgpLEdbbGVdPXYoUltsZV0saltsZV0sdGhpcy5fYml0TGVu''@;'; put 'put ''Z3RoKSxXPU1hdGgubWF4KEdbaWVdLmxlbmd0aCxXKSxXPU1hdGgubWF4KEdbbGVdLmxlbmd0aCxXKX12YXIgeD10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksTj10aGlzLl93bmFmVDQ7Zm9yKFU9VztVPj0wO1UtLSl7Zm9yKHZhciBGPTA7VT49MDspe3ZhciBnPSEwO2ZvcihxPTA7cTxF''@;'; put 'put ''O3ErKylOW3FdPTB8R1txXVtVXSwwIT09TltxXSYmKGc9ITEpO2lmKCFnKWJyZWFrO0YrKyxVLS19aWYoVT49MCYmRisrLHg9eC5kYmxwKEYpLFU8MClicmVhaztmb3IocT0wO3E8RTtxKyspe3ZhciBDPU5bcV07MCE9PUMmJihDPjA/dGU9VltxXVtDLTE+PjFdOkM8MCYmKHRlPVZbcV1bLUMt''@;'; put 'put ''MT4+MV0ubmVnKCkpLHg9ImFmZmluZSI9PT10ZS50eXBlP3gubWl4ZWRBZGQodGUpOnguYWRkKHRlKSl9fWZvcihVPTA7VTxFO1UrKylWW1VdPW51bGw7cmV0dXJuIHo/eDp4LnRvUCgpfSxCLkJhc2VQb2ludD1MLEwucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJO''@;'; put 'put ''b3QgaW1wbGVtZW50ZWQiKX0sTC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sQi5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oSixJKXtKPWsudG9BcnJheShKLEkpO3ZhciBSPXRoaXMucC5ieXRlTGVuZ3RoKCk7''@;'; put 'put ''aWYoKDQ9PT1KWzBdfHw2PT09SlswXXx8Nz09PUpbMF0pJiZKLmxlbmd0aC0xPT0yKlIpcmV0dXJuIDY9PT1KWzBdP0goSltKLmxlbmd0aC0xXSUyPT0wKTo3PT09SlswXSYmSChKW0oubGVuZ3RoLTFdJTI9PTEpLHRoaXMucG9pbnQoSi5zbGljZSgxLDErUiksSi5zbGljZSgxK1IsMSsyKlIp''@;'; put 'put ''KTtpZigoMj09PUpbMF18fDM9PT1KWzBdKSYmSi5sZW5ndGgtMT09PVIpcmV0dXJuIHRoaXMucG9pbnRGcm9tWChKLnNsaWNlKDEsMStSKSwzPT09SlswXSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxMLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0''@;'; put 'put ''aW9uKEope3JldHVybiB0aGlzLmVuY29kZShKLCEwKX0sTC5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihKKXt2YXIgST10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLFI9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLEkpO3JldHVybiBKP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNv''@;'; put 'put ''bmNhdChSKTpbNF0uY29uY2F0KFIsdGhpcy5nZXRZKCkudG9BcnJheSgiYmUiLEkpKX0sTC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEosSSl7cmV0dXJuIGsuZW5jb2RlKHRoaXMuX2VuY29kZShJKSxKKX0sTC5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihKKXtpZih0aGlzLnBy''@;'; put 'put ''ZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBJPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gSS5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLEkuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsSiksSS5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1''@;'; put 'put ''dGVkPUksdGhpc30sTC5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24oSil7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuITE7dmFyIEk9dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhSSYmSS5wb2ludHMubGVuZ3RoPj1NYXRoLmNlaWwoKEouYml0TGVuZ3RoKCkrMSkv''@;'; put 'put ''SS5zdGVwKX0sTC5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24oSixJKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIFI9W3RoaXNdLEU9dGhpcyx6PTA7ejxJO3orPUope2Zv''@;'; put 'put ''cih2YXIgaj0wO2o8SjtqKyspRT1FLmRibCgpO1IucHVzaChFKX1yZXR1cm57c3RlcDpKLHBvaW50czpSfX0sTC5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihKKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRl''@;'; put 'put ''ZC5uYWY7Zm9yKHZhciBJPVt0aGlzXSxSPSgxPDxKKS0xLEU9MT09PVI/bnVsbDp0aGlzLmRibCgpLHo9MTt6PFI7eisrKUlbel09SVt6LTFdLmFkZChFKTtyZXR1cm57d25kOkoscG9pbnRzOkl9fSxMLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe3JldHVybiBudWxsfSxMLnByb3Rv''@;'; put 'put ''dHlwZS5kYmxwPWZ1bmN0aW9uKEope2Zvcih2YXIgST10aGlzLFI9MDtSPEo7UisrKUk9SS5kYmwoKTtyZXR1cm4gSX19LDI3NjY1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg0Njc2Nyksaz1UKDMxMzg3KSx2PVQoNjY2OTgpLGhlPVQoNzEzMjQpLEg9c2UuYXNzZXJ0O2Z1''@;'; put 'put ''bmN0aW9uIEIoSyl7dGhpcy50d2lzdGVkPTEhPSgwfEsuYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJi0xPT0oMHxLLmEpLHRoaXMuZXh0ZW5kZWQ9dGhpcy5tT25lQSxoZS5jYWxsKHRoaXMsImVkd2FyZHMiLEspLHRoaXMuYT1uZXcgayhLLmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhp''@;'; put 'put ''cy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBrKEsuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgayhLLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxIKCF0aGlzLnR3''@;'; put 'put ''aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT0oMHxLLmMpfWZ1bmN0aW9uIEwoSyxKLEksUixFKXtoZS5CYXNlUG9pbnQuY2FsbCh0aGlzLEssInByb2plY3RpdmUiKSxudWxsPT09SiYmbnVsbD09PUkmJm51bGw9PT1SPyh0aGlzLng9dGhpcy5jdXJ2''@;'; put 'put ''ZS56ZXJvLHRoaXMueT10aGlzLmN1cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PXRoaXMuY3VydmUuemVybyx0aGlzLnpPbmU9ITApOih0aGlzLng9bmV3IGsoSiwxNiksdGhpcy55PW5ldyBrKEksMTYpLHRoaXMuej1SP25ldyBrKFIsMTYpOnRoaXMuY3VydmUub25lLHRo''@;'; put 'put ''aXMudD1FJiZuZXcgayhFLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5y''@;'; put 'put ''ZWQpKSx0aGlzLnQmJiF0aGlzLnQucmVkJiYodGhpcy50PXRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZSx0aGlzLmN1cnZlLmV4dGVuZGVkJiYhdGhpcy50JiYodGhpcy50PXRoaXMueC5yZWRNdWwodGhpcy55KSx0aGlzLnpP''@;'; put 'put ''bmV8fCh0aGlzLnQ9dGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKSkpKX12KEIsaGUpLFdlLmV4cG9ydHM9QixCLnByb3RvdHlwZS5fbXVsQT1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5tT25lQT9KLnJlZE5lZygpOnRoaXMuYS5yZWRNdWwoSil9LEIucHJvdG90eXBlLl9tdWxDPWZ1''@;'; put 'put ''bmN0aW9uKEope3JldHVybiB0aGlzLm9uZUM/Sjp0aGlzLmMucmVkTXVsKEopfSxCLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oSixJLFIsRSl7cmV0dXJuIHRoaXMucG9pbnQoSixJLFIsRSl9LEIucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oSixJKXsoSj1uZXcgayhKLDE2KSku''@;'; put 'put ''cmVkfHwoSj1KLnRvUmVkKHRoaXMucmVkKSk7dmFyIFI9Si5yZWRTcXIoKSxFPXRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwoUikpLHo9dGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKFIpKSxqPUUucmVkTXVsKHoucmVkSW52bSgpKSxWPWoucmVkU3Fy''@;'; put 'put ''dCgpO2lmKDAhPT1WLnJlZFNxcigpLnJlZFN1YihqKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTt2YXIgRz1WLmZyb21SZWQoKS5pc09kZCgpO3JldHVybihJJiYhR3x8IUkmJkcpJiYoVj1WLnJlZE5lZygpKSx0aGlzLnBvaW50KEosVil9LEIucHJv''@;'; put 'put ''dG90eXBlLnBvaW50RnJvbVk9ZnVuY3Rpb24oSixJKXsoSj1uZXcgayhKLDE2KSkucmVkfHwoSj1KLnRvUmVkKHRoaXMucmVkKSk7dmFyIFI9Si5yZWRTcXIoKSxFPVIucmVkU3ViKHRoaXMuYzIpLHo9Ui5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSksaj1F''@;'; put 'put ''LnJlZE11bCh6LnJlZEludm0oKSk7aWYoMD09PWouY21wKHRoaXMuemVybykpe2lmKEkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLEopfXZhciBWPWoucmVkU3FydCgpO2lmKDAhPT1WLnJlZFNxcigpLnJlZFN1YihqKS5jbXAo''@;'; put 'put ''dGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTtyZXR1cm4gVi5mcm9tUmVkKCkuaXNPZGQoKSE9PUkmJihWPVYucmVkTmVnKCkpLHRoaXMucG9pbnQoVixKKX0sQi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oSil7aWYoSi5pc0luZmluaXR5KCkpcmV0dXJu''@;'; put 'put ''ITA7Si5ub3JtYWxpemUoKTt2YXIgST1KLngucmVkU3FyKCksUj1KLnkucmVkU3FyKCksRT1JLnJlZE11bCh0aGlzLmEpLnJlZEFkZChSKSx6PXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKEkpLnJlZE11bChSKSkpO3JldHVybiAwPT09RS5jbXAoeil9LHYo''@;'; put 'put ''TCxoZS5CYXNlUG9pbnQpLEIucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oSil7cmV0dXJuIEwuZnJvbUpTT04odGhpcyxKKX0sQi5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oSixJLFIsRSl7cmV0dXJuIG5ldyBMKHRoaXMsSixJLFIsRSl9LEwuZnJvbUpTT049ZnVuY3Rpb24o''@;'; put 'put ''SixJKXtyZXR1cm4gbmV3IEwoSixJWzBdLElbMV0sSVsyXSl9LEwucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIg''@;'; put 'put ''eTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sTC5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJigwPT09dGhpcy55LmNtcCh0aGlzLnop''@;'; put 'put ''fHx0aGlzLnpPbmUmJjA9PT10aGlzLnkuY21wKHRoaXMuY3VydmUuYykpfSxMLnByb3RvdHlwZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIEo9dGhpcy54LnJlZFNxcigpLEk9dGhpcy55LnJlZFNxcigpLFI9dGhpcy56LnJlZFNxcigpO1I9Ui5yZWRJQWRkKFIpO3ZhciBFPXRoaXMuY3VydmUu''@;'; put 'put ''X211bEEoSiksej10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihKKS5yZWRJU3ViKEkpLGo9RS5yZWRBZGQoSSksVj1qLnJlZFN1YihSKSxHPUUucmVkU3ViKEkpLFc9ei5yZWRNdWwoViksVT1qLnJlZE11bChHKSxxPXoucmVkTXVsKEcpLHRlPVYucmVkTXVsKGopO3Jl''@;'; put 'put ''dHVybiB0aGlzLmN1cnZlLnBvaW50KFcsVSx0ZSxxKX0sTC5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgRSx6LGosVixHLFcsSj10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCksST10aGlzLngucmVkU3FyKCksUj10aGlzLnkucmVkU3FyKCk7aWYodGhpcy5jdXJ2ZS50''@;'; put 'put ''d2lzdGVkKXt2YXIgVT0oVj10aGlzLmN1cnZlLl9tdWxBKEkpKS5yZWRBZGQoUik7dGhpcy56T25lPyhFPUoucmVkU3ViKEkpLnJlZFN1YihSKS5yZWRNdWwoVS5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKSx6PVUucmVkTXVsKFYucmVkU3ViKFIpKSxqPVUucmVkU3FyKCkucmVkU3ViKFUpLnJl''@;'; put 'put ''ZFN1YihVKSk6KEc9dGhpcy56LnJlZFNxcigpLFc9VS5yZWRTdWIoRykucmVkSVN1YihHKSxFPUoucmVkU3ViKEkpLnJlZElTdWIoUikucmVkTXVsKFcpLHo9VS5yZWRNdWwoVi5yZWRTdWIoUikpLGo9VS5yZWRNdWwoVykpfWVsc2UgVj1JLnJlZEFkZChSKSxHPXRoaXMuY3VydmUuX211bEMo''@;'; put 'put ''dGhpcy56KS5yZWRTcXIoKSxXPVYucmVkU3ViKEcpLnJlZFN1YihHKSxFPXRoaXMuY3VydmUuX211bEMoSi5yZWRJU3ViKFYpKS5yZWRNdWwoVyksej10aGlzLmN1cnZlLl9tdWxDKFYpLnJlZE11bChJLnJlZElTdWIoUikpLGo9Vi5yZWRNdWwoVyk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQo''@;'; put 'put ''RSx6LGopfSxMLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dERibCgpOnRoaXMuX3Byb2pEYmwoKX0sTC5wcm90b3R5cGUuX2V4dEFkZD1mdW5jdGlvbihKKXt2YXIgST10aGlzLnkucmVk''@;'; put 'put ''U3ViKHRoaXMueCkucmVkTXVsKEoueS5yZWRTdWIoSi54KSksUj10aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKEoueS5yZWRBZGQoSi54KSksRT10aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChKLnQpLHo9dGhpcy56LnJlZE11bChKLnoucmVkQWRkKEoueikpLGo9Ui5y''@;'; put 'put ''ZWRTdWIoSSksVj16LnJlZFN1YihFKSxHPXoucmVkQWRkKEUpLFc9Ui5yZWRBZGQoSSksVT1qLnJlZE11bChWKSxxPUcucmVkTXVsKFcpLHRlPWoucmVkTXVsKFcpLG5lPVYucmVkTXVsKEcpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KFUscSxuZSx0ZSl9LEwucHJvdG90eXBlLl9wcm9qQWRk''@;'; put 'put ''PWZ1bmN0aW9uKEope3ZhciBxLHRlLEk9dGhpcy56LnJlZE11bChKLnopLFI9SS5yZWRTcXIoKSxFPXRoaXMueC5yZWRNdWwoSi54KSx6PXRoaXMueS5yZWRNdWwoSi55KSxqPXRoaXMuY3VydmUuZC5yZWRNdWwoRSkucmVkTXVsKHopLFY9Ui5yZWRTdWIoaiksRz1SLnJlZEFkZChqKSxXPXRo''@;'; put 'put ''aXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwoSi54LnJlZEFkZChKLnkpKS5yZWRJU3ViKEUpLnJlZElTdWIoeiksVT1JLnJlZE11bChWKS5yZWRNdWwoVyk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8ocT1JLnJlZE11bChHKS5yZWRNdWwoei5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShF''@;'; put 'put ''KSkpLHRlPVYucmVkTXVsKEcpKToocT1JLnJlZE11bChHKS5yZWRNdWwoei5yZWRTdWIoRSkpLHRlPXRoaXMuY3VydmUuX211bEMoVikucmVkTXVsKEcpKSx0aGlzLmN1cnZlLnBvaW50KFUscSx0ZSl9LEwucHJvdG90eXBlLmFkZD1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5''@;'; put 'put ''KCk/SjpKLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKEopOnRoaXMuX3Byb2pBZGQoSil9LEwucHJvdG90eXBlLm11bD1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5faGFzRG91YmxlcyhKKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLEop''@;'; put 'put ''OnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxKKX0sTC5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKEosSSxSKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLEldLFtKLFJdLDIsITEpfSxMLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKEosSSxSKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLEldLFtKLFJdLDIsITApfSxMLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIEo9dGhpcy56LnJlZEludm0oKTtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwoSiksdGhpcy55PXRo''@;'; put 'put ''aXMueS5yZWRNdWwoSiksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwoSikpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30sTC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0''@;'; put 'put ''aGlzLnosdGhpcy50JiZ0aGlzLnQucmVkTmVnKCkpfSxMLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0sTC5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9t''@;'; put 'put ''UmVkKCl9LEwucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEope3JldHVybiB0aGlzPT09Snx8MD09PXRoaXMuZ2V0WCgpLmNtcChKLmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAoSi5nZXRZKCkpfSxMLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24oSil7dmFyIEk9Si50b1JlZCh0aGlzLmN1''@;'; put 'put ''cnZlLnJlZCkucmVkTXVsKHRoaXMueik7aWYoMD09PXRoaXMueC5jbXAoSSkpcmV0dXJuITA7Zm9yKHZhciBSPUouY2xvbmUoKSxFPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihSLmlhZGQodGhpcy5jdXJ2ZS5uKSxSLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiEx''@;'; put 'put ''O2lmKEkucmVkSUFkZChFKSwwPT09dGhpcy54LmNtcChJKSlyZXR1cm4hMH19LEwucHJvdG90eXBlLnRvUD1MLnByb3RvdHlwZS5ub3JtYWxpemUsTC5wcm90b3R5cGUubWl4ZWRBZGQ9TC5wcm90b3R5cGUuYWRkfSw5MTMyOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9emU7c2Uu''@;'; put 'put ''YmFzZT1UKDcxMzI0KSxzZS5zaG9ydD1UKDg5OTk2KSxzZS5tb250PVQoMjkyNTMpLHNlLmVkd2FyZHM9VCgyNzY2NSl9LDI5MjUzOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgzMTM4Nyksaz1UKDY2Njk4KSx2PVQoNzEzMjQpLGhlPVQoNDY3NjcpO2Z1bmN0aW9uIEgoTCl7''@;'; put 'put ''di5jYWxsKHRoaXMsIm1vbnQiLEwpLHRoaXMuYT1uZXcgc2UoTC5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBzZShMLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyBzZSg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpLHRoaXMudHdvPW5ldyBzZSgyKS50b1Jl''@;'; put 'put ''ZCh0aGlzLnJlZCksdGhpcy5hMjQ9dGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpfWZ1bmN0aW9uIEIoTCxLLEope3YuQmFzZVBvaW50LmNhbGwodGhpcyxMLCJwcm9qZWN0aXZlIiksbnVsbD09PUsmJm51bGw9PT1KPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56''@;'; put 'put ''PXRoaXMuY3VydmUuemVybyk6KHRoaXMueD1uZXcgc2UoSywxNiksdGhpcy56PW5ldyBzZShKLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSkpfWsoSCx2''@;'; put 'put ''KSxXZS5leHBvcnRzPUgsSC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oSyl7dmFyIEo9Sy5ub3JtYWxpemUoKS54LEk9Si5yZWRTcXIoKSxSPUkucmVkTXVsKEopLnJlZEFkZChJLnJlZE11bCh0aGlzLmEpKS5yZWRBZGQoSik7cmV0dXJuIDA9PT1SLnJlZFNxcnQoKS5yZWRTcXIoKS5j''@;'; put 'put ''bXAoUil9LGsoQix2LkJhc2VQb2ludCksSC5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oSyxKKXtyZXR1cm4gdGhpcy5wb2ludChoZS50b0FycmF5KEssSiksMSl9LEgucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKEssSil7cmV0dXJuIG5ldyBCKHRoaXMsSyxKKX0sSC5wcm90b3R5''@;'; put 'put ''cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihLKXtyZXR1cm4gQi5mcm9tSlNPTih0aGlzLEspfSxCLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKCl7fSxCLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoImJlIix0aGlzLmN1cnZl''@;'; put 'put ''LnAuYnl0ZUxlbmd0aCgpKX0sQi5mcm9tSlNPTj1mdW5jdGlvbihLLEope3JldHVybiBuZXcgQihLLEpbMF0sSlsxXXx8Sy5vbmUpfSxCLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVDIFBvaW50''@;'; put 'put ''IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LEIucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuei5jbXBuKDApfSxCLnByb3RvdHlwZS5kYmw9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgSj10aGlzLngucmVkQWRkKHRoaXMueikucmVkU3FyKCksUj10aGlzLngucmVkU3ViKHRoaXMueikucmVkU3FyKCksRT1KLnJlZFN1YihSKSx6PUoucmVkTXVsKFIpLGo9RS5yZWRNdWwoUi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKEUpKSk7cmV0dXJuIHRoaXMuY3Vy''@;'; put 'put ''dmUucG9pbnQoeixqKX0sQi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sQi5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbihLLEope3ZhciBJPXRoaXMueC5yZWRBZGQodGhpcy56KSxSPXRoaXMu''@;'; put 'put ''eC5yZWRTdWIodGhpcy56KSxFPUsueC5yZWRBZGQoSy56KSxqPUsueC5yZWRTdWIoSy56KS5yZWRNdWwoSSksVj1FLnJlZE11bChSKSxHPUouei5yZWRNdWwoai5yZWRBZGQoVikucmVkU3FyKCkpLFc9Si54LnJlZE11bChqLnJlZElTdWIoVikucmVkU3FyKCkpO3JldHVybiB0aGlzLmN1cnZl''@;'; put 'put ''LnBvaW50KEcsVyl9LEIucHJvdG90eXBlLm11bD1mdW5jdGlvbihLKXtmb3IodmFyIEo9Sy5jbG9uZSgpLEk9dGhpcyxSPXRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKSx6PVtdOzAhPT1KLmNtcG4oMCk7Si5pdXNocm4oMSkpei5wdXNoKEouYW5kbG4oMSkpO2Zvcih2YXIgaj16Lmxlbmd0''@;'; put 'put ''aC0xO2o+PTA7ai0tKTA9PT16W2pdPyhJPUkuZGlmZkFkZChSLHRoaXMpLFI9Ui5kYmwoKSk6KFI9SS5kaWZmQWRkKFIsdGhpcyksST1JLmRibCgpKTtyZXR1cm4gUn0sQi5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRn''@;'; put 'put ''b21lcnkgY3VydmUiKX0sQi5wcm90b3R5cGUuanVtbEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LEIucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEspe3JldHVybiAwPT09dGhpcy5nZXRYKCkuY21wKEsuZ2V0WCgpKX0s''@;'; put 'put ''Qi5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzfSxCLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54''@;'; put 'put ''LmZyb21SZWQoKX19LDg5OTk2OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg0Njc2Nyksaz1UKDMxMzg3KSx2PVQoNjY2OTgpLGhlPVQoNzEzMjQpLEg9c2UuYXNzZXJ0O2Z1bmN0aW9uIEIoSil7aGUuY2FsbCh0aGlzLCJzaG9ydCIsSiksdGhpcy5hPW5ldyBrKEouYSwxNiku''@;'; put 'put ''dG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgayhKLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnRpbnY9dGhpcy50d28ucmVkSW52bSgpLHRoaXMuemVyb0E9MD09PXRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSx0aGlzLnRocmVlQT0wPT09dGhpcy5hLmZyb21SZWQoKS5zdWIodGhpcy5w''@;'; put 'put ''KS5jbXBuKC0zKSx0aGlzLmVuZG89dGhpcy5fZ2V0RW5kb21vcnBoaXNtKEopLHRoaXMuX2VuZG9XbmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX2VuZG9XbmFmVDI9bmV3IEFycmF5KDQpfWZ1bmN0aW9uIEwoSixJLFIsRSl7aGUuQmFzZVBvaW50LmNhbGwodGhpcyxKLCJhZmZpbmUiKSxudWxs''@;'; put 'put ''PT09SSYmbnVsbD09PVI/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhpcy54PW5ldyBrKEksMTYpLHRoaXMueT1uZXcgayhSLDE2KSxFJiYodGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSx0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlz''@;'; put 'put ''LngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy5pbmY9ITEpfWZ1bmN0aW9uIEsoSixJLFIsRSl7aGUuQmFzZVBvaW50LmNhbGwodGhpcyxKLCJqYWNvYmlhbiIp''@;'; put 'put ''LG51bGw9PT1JJiZudWxsPT09UiYmbnVsbD09PUU/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PW5ldyBrKDApKToodGhpcy54PW5ldyBrKEksMTYpLHRoaXMueT1uZXcgayhSLDE2KSx0aGlzLno9bmV3IGsoRSwxNikpLHRoaXMueC5yZWR8fCh0''@;'; put 'put ''aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZl''@;'; put 'put ''Lm9uZX12KEIsaGUpLFdlLmV4cG9ydHM9QixCLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtPWZ1bmN0aW9uKEkpe2lmKHRoaXMuemVyb0EmJnRoaXMuZyYmdGhpcy5uJiYxPT09dGhpcy5wLm1vZG4oMykpe3ZhciBSLEU7aWYoSS5iZXRhKVI9bmV3IGsoSS5iZXRhLDE2KS50b1JlZCh0aGlz''@;'; put 'put ''LnJlZCk7ZWxzZXt2YXIgej10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtSPShSPXpbMF0uY21wKHpbMV0pPDA/elswXTp6WzFdKS50b1JlZCh0aGlzLnJlZCl9aWYoSS5sYW1iZGEpRT1uZXcgayhJLmxhbWJkYSwxNik7ZWxzZXt2YXIgaj10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTsw''@;'; put 'put ''PT09dGhpcy5nLm11bChqWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoUikpP0U9alswXTpIKDA9PT10aGlzLmcubXVsKEU9alsxXSkueC5jbXAodGhpcy5nLngucmVkTXVsKFIpKSl9cmV0dXJue2JldGE6UixsYW1iZGE6RSxiYXNpczpJLmJhc2lzP0kuYmFzaXMubWFwKGZ1bmN0aW9uKEcp''@;'; put 'put ''e3JldHVybnthOm5ldyBrKEcuYSwxNiksYjpuZXcgayhHLmIsMTYpfX0pOnRoaXMuX2dldEVuZG9CYXNpcyhFKX19fSxCLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzPWZ1bmN0aW9uKEkpe3ZhciBSPUk9PT10aGlzLnA/dGhpcy5yZWQ6ay5tb250KEkpLEU9bmV3IGsoMikudG9SZWQoUikucmVk''@;'; put 'put ''SW52bSgpLHo9RS5yZWROZWcoKSxqPW5ldyBrKDMpLnRvUmVkKFIpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwoRSk7cmV0dXJuW3oucmVkQWRkKGopLmZyb21SZWQoKSx6LnJlZFN1YihqKS5mcm9tUmVkKCldfSxCLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzPWZ1bmN0aW9uKEkpe2Zvcih2''@;'; put 'put ''YXIgVSxxLHRlLG5lLGllLGxlLGRlLGNlLFksUj10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLEU9SSx6PXRoaXMubi5jbG9uZSgpLGo9bmV3IGsoMSksVj1uZXcgaygwKSxHPW5ldyBrKDApLFc9bmV3IGsoMSksdWU9MDswIT09RS5jbXBuKDApOyl7dmFy''@;'; put 'put ''IGI9ei5kaXYoRSk7Y2U9ei5zdWIoYi5tdWwoRSkpLFk9Ry5zdWIoYi5tdWwoaikpO3ZhciB4PVcuc3ViKGIubXVsKFYpKTtpZighdGUmJmNlLmNtcChSKTwwKVU9ZGUubmVnKCkscT1qLHRlPWNlLm5lZygpLG5lPVk7ZWxzZSBpZih0ZSYmMj09Kyt1ZSlicmVhaztkZT1jZSx6PUUsRT1jZSxH''@;'; put 'put ''PWosaj1ZLFc9VixWPXh9aWU9Y2UubmVnKCksbGU9WTt2YXIgTj10ZS5zcXIoKS5hZGQobmUuc3FyKCkpO3JldHVybiBpZS5zcXIoKS5hZGQobGUuc3FyKCkpLmNtcChOKT49MCYmKGllPVUsbGU9cSksdGUubmVnYXRpdmUmJih0ZT10ZS5uZWcoKSxuZT1uZS5uZWcoKSksaWUubmVnYXRpdmUm''@;'; put 'put ''JihpZT1pZS5uZWcoKSxsZT1sZS5uZWcoKSksW3thOnRlLGI6bmV9LHthOmllLGI6bGV9XX0sQi5wcm90b3R5cGUuX2VuZG9TcGxpdD1mdW5jdGlvbihJKXt2YXIgUj10aGlzLmVuZG8uYmFzaXMsRT1SWzBdLHo9UlsxXSxqPXouYi5tdWwoSSkuZGl2Um91bmQodGhpcy5uKSxWPUUuYi5uZWco''@;'; put 'put ''KS5tdWwoSSkuZGl2Um91bmQodGhpcy5uKSxHPWoubXVsKEUuYSksVz1WLm11bCh6LmEpLFU9ai5tdWwoRS5iKSxxPVYubXVsKHouYik7cmV0dXJue2sxOkkuc3ViKEcpLnN1YihXKSxrMjpVLmFkZChxKS5uZWcoKX19LEIucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oSSxSKXsoST1u''@;'; put 'put ''ZXcgayhJLDE2KSkucmVkfHwoST1JLnRvUmVkKHRoaXMucmVkKSk7dmFyIEU9SS5yZWRTcXIoKS5yZWRNdWwoSSkucmVkSUFkZChJLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksej1FLnJlZFNxcnQoKTtpZigwIT09ei5yZWRTcXIoKS5yZWRTdWIoRSkuY21wKHRoaXMuemVybykp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIGo9ei5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oUiYmIWp8fCFSJiZqKSYmKHo9ei5yZWROZWcoKSksdGhpcy5wb2ludChJLHopfSxCLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihJKXtpZihJLmluZilyZXR1cm4hMDt2''@;'; put 'put ''YXIgUj1JLngsRT1JLnksej10aGlzLmEucmVkTXVsKFIpLGo9Ui5yZWRTcXIoKS5yZWRNdWwoUikucmVkSUFkZCh6KS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIDA9PT1FLnJlZFNxcigpLnJlZElTdWIoaikuY21wbigwKX0sQi5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uKEks''@;'; put 'put ''UixFKXtmb3IodmFyIHo9dGhpcy5fZW5kb1duYWZUMSxqPXRoaXMuX2VuZG9XbmFmVDIsVj0wO1Y8SS5sZW5ndGg7VisrKXt2YXIgRz10aGlzLl9lbmRvU3BsaXQoUltWXSksVz1JW1ZdLFU9Vy5fZ2V0QmV0YSgpO0cuazEubmVnYXRpdmUmJihHLmsxLmluZWcoKSxXPVcubmVnKCEwKSksRy5r''@;'; put 'put ''Mi5uZWdhdGl2ZSYmKEcuazIuaW5lZygpLFU9VS5uZWcoITApKSx6WzIqVl09Vyx6WzIqVisxXT1VLGpbMipWXT1HLmsxLGpbMipWKzFdPUcuazJ9Zm9yKHZhciBxPXRoaXMuX3duYWZNdWxBZGQoMSx6LGosMipWLEUpLHRlPTA7dGU8MipWO3RlKyspelt0ZV09bnVsbCxqW3RlXT1udWxsO3Jl''@;'; put 'put ''dHVybiBxfSx2KEwsaGUuQmFzZVBvaW50KSxCLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihJLFIsRSl7cmV0dXJuIG5ldyBMKHRoaXMsSSxSLEUpfSxCLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKEksUil7cmV0dXJuIEwuZnJvbUpTT04odGhpcyxJLFIpfSxMLnByb3RvdHlw''@;'; put 'put ''ZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIEk9dGhpcy5wcmVjb21wdXRlZDtpZihJJiZJLmJldGEpcmV0dXJuIEkuYmV0YTt2YXIgUj10aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLHRoaXMueSk7aWYoSSl7''@;'; put 'put ''dmFyIEU9dGhpcy5jdXJ2ZSx6PWZ1bmN0aW9uKGope3JldHVybiBFLnBvaW50KGoueC5yZWRNdWwoRS5lbmRvLmJldGEpLGoueSl9O0kuYmV0YT1SLFIucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxuYWY6SS5uYWYmJnt3bmQ6SS5uYWYud25kLHBvaW50czpJLm5hZi5wb2ludHMubWFwKHopfSxk''@;'; put 'put ''b3VibGVzOkkuZG91YmxlcyYme3N0ZXA6SS5kb3VibGVzLnN0ZXAscG9pbnRzOkkuZG91Ymxlcy5wb2ludHMubWFwKHopfX19cmV0dXJuIFJ9fSxMLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVjb21wdXRlZD9bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1''@;'; put 'put ''dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVj''@;'; put 'put ''b21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSl9fV06W3RoaXMueCx0aGlzLnldfSxMLmZyb21KU09OPWZ1bmN0aW9uKEksUixFKXsic3RyaW5nIj09dHlwZW9mIFImJihSPUpTT04ucGFyc2UoUikpO3ZhciB6PUkucG9pbnQoUlswXSxS''@;'; put 'put ''WzFdLEUpO2lmKCFSWzJdKXJldHVybiB6O2Z1bmN0aW9uIGooRyl7cmV0dXJuIEkucG9pbnQoR1swXSxHWzFdLEUpfXZhciBWPVJbMl07cmV0dXJuIHoucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxkb3VibGVzOlYuZG91YmxlcyYme3N0ZXA6Vi5kb3VibGVzLnN0ZXAscG9pbnRzOlt6XS5jb25j''@;'; put 'put ''YXQoVi5kb3VibGVzLnBvaW50cy5tYXAoaikpfSxuYWY6Vi5uYWYmJnt3bmQ6Vi5uYWYud25kLHBvaW50czpbel0uY29uY2F0KFYubmFmLnBvaW50cy5tYXAoaikpfX0sen0sTC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50''@;'; put 'put ''IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxMLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSxMLnByb3RvdHlw''@;'; put 'put ''ZS5hZGQ9ZnVuY3Rpb24oSSl7aWYodGhpcy5pbmYpcmV0dXJuIEk7aWYoSS5pbmYpcmV0dXJuIHRoaXM7aWYodGhpcy5lcShJKSlyZXR1cm4gdGhpcy5kYmwoKTtpZih0aGlzLm5lZygpLmVxKEkpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAo''@;'; put 'put ''SS54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBSPXRoaXMueS5yZWRTdWIoSS55KTswIT09Ui5jbXBuKDApJiYoUj1SLnJlZE11bCh0aGlzLngucmVkU3ViKEkueCkucmVkSW52bSgpKSk7dmFyIEU9Ui5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihJ''@;'; put 'put ''LngpLHo9Ui5yZWRNdWwodGhpcy54LnJlZFN1YihFKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEUseil9LEwucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBJPXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09''@;'; put 'put ''SS5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFI9dGhpcy5jdXJ2ZS5hLEU9dGhpcy54LnJlZFNxcigpLHo9SS5yZWRJbnZtKCksaj1FLnJlZEFkZChFKS5yZWRJQWRkKEUpLnJlZElBZGQoUikucmVkTXVsKHopLFY9ai5yZWRTcXIoKS5yZWRJU3ViKHRo''@;'; put 'put ''aXMueC5yZWRBZGQodGhpcy54KSksRz1qLnJlZE11bCh0aGlzLngucmVkU3ViKFYpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoVixHKX0sTC5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnguZnJvbVJlZCgpfSxMLnByb3RvdHlwZS5nZXRZ''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueS5mcm9tUmVkKCl9LEwucHJvdG90eXBlLm11bD1mdW5jdGlvbihJKXtyZXR1cm4gST1uZXcgayhJLDE2KSx0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuX2hhc0RvdWJsZXMoSSk/dGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxJKTp0aGlz''@;'; put 'put ''LmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoW3RoaXNdLFtJXSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLEkpfSxMLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oSSxSLEUpe3ZhciB6PVt0aGlzLFJdLGo9W0ksRV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlz''@;'; put 'put ''LmN1cnZlLl9lbmRvV25hZk11bEFkZCh6LGopOnRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSx6LGosMil9LEwucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oSSxSLEUpe3ZhciB6PVt0aGlzLFJdLGo9W0ksRV07cmV0dXJuIHRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11''@;'; put 'put ''bEFkZCh6LGosITApOnRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSx6LGosMiwhMCl9LEwucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEkpe3JldHVybiB0aGlzPT09SXx8dGhpcy5pbmY9PT1JLmluZiYmKHRoaXMuaW5mfHwwPT09dGhpcy54LmNtcChJLngpJiYwPT09dGhpcy55LmNtcChJLnkpKX0s''@;'; put 'put ''TC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKEkpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciBSPXRoaXMuY3VydmUucG9pbnQodGhpcy54LHRoaXMueS5yZWROZWcoKSk7aWYoSSYmdGhpcy5wcmVjb21wdXRlZCl7dmFyIEU9dGhpcy5wcmVjb21wdXRlZCx6PWZ1bmN0aW9uKGope3JldHVy''@;'; put 'put ''biBqLm5lZygpfTtSLnByZWNvbXB1dGVkPXtuYWY6RS5uYWYmJnt3bmQ6RS5uYWYud25kLHBvaW50czpFLm5hZi5wb2ludHMubWFwKHopfSxkb3VibGVzOkUuZG91YmxlcyYme3N0ZXA6RS5kb3VibGVzLnN0ZXAscG9pbnRzOkUuZG91Ymxlcy5wb2ludHMubWFwKHopfX19cmV0dXJuIFJ9LEwu''@;'; put 'put ''cHJvdG90eXBlLnRvSj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZj90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LHRoaXMueSx0aGlzLmN1cnZlLm9uZSl9LHYoSyxoZS5CYXNlUG9pbnQpLEIucHJvdG90eXBlLmpwb2ludD1mdW5j''@;'; put 'put ''dGlvbihJLFIsRSl7cmV0dXJuIG5ldyBLKHRoaXMsSSxSLEUpfSxLLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBJPXRoaXMuei5yZWRJbnZtKCksUj1JLnJlZFNxcigpLEU9dGhpcy54''@;'; put 'put ''LnJlZE11bChSKSx6PXRoaXMueS5yZWRNdWwoUikucmVkTXVsKEkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KEUseil9LEsucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LEsucHJvdG90eXBl''@;'; put 'put ''LmFkZD1mdW5jdGlvbihJKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gSTtpZihJLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgUj1JLnoucmVkU3FyKCksRT10aGlzLnoucmVkU3FyKCksej10aGlzLngucmVkTXVsKFIpLGo9SS54LnJlZE11bChFKSxWPXRoaXMueS5yZWRNdWwo''@;'; put 'put ''Ui5yZWRNdWwoSS56KSksRz1JLnkucmVkTXVsKEUucmVkTXVsKHRoaXMueikpLFc9ei5yZWRTdWIoaiksVT1WLnJlZFN1YihHKTtpZigwPT09Vy5jbXBuKDApKXJldHVybiAwIT09VS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBxPVcu''@;'; put 'put ''cmVkU3FyKCksdGU9cS5yZWRNdWwoVyksbmU9ei5yZWRNdWwocSksaWU9VS5yZWRTcXIoKS5yZWRJQWRkKHRlKS5yZWRJU3ViKG5lKS5yZWRJU3ViKG5lKSxsZT1VLnJlZE11bChuZS5yZWRJU3ViKGllKSkucmVkSVN1YihWLnJlZE11bCh0ZSkpLGRlPXRoaXMuei5yZWRNdWwoSS56KS5yZWRN''@;'; put 'put ''dWwoVyk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGllLGxlLGRlKX0sSy5wcm90b3R5cGUubWl4ZWRBZGQ9ZnVuY3Rpb24oSSl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIEkudG9KKCk7aWYoSS5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIFI9dGhpcy56LnJlZFNxcigpLEU9''@;'; put 'put ''dGhpcy54LHo9SS54LnJlZE11bChSKSxqPXRoaXMueSxWPUkueS5yZWRNdWwoUikucmVkTXVsKHRoaXMueiksRz1FLnJlZFN1Yih6KSxXPWoucmVkU3ViKFYpO2lmKDA9PT1HLmNtcG4oMCkpcmV0dXJuIDAhPT1XLmNtcG4oMCk/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRo''@;'; put 'put ''aXMuZGJsKCk7dmFyIFU9Ry5yZWRTcXIoKSxxPVUucmVkTXVsKEcpLHRlPUUucmVkTXVsKFUpLG5lPVcucmVkU3FyKCkucmVkSUFkZChxKS5yZWRJU3ViKHRlKS5yZWRJU3ViKHRlKSxpZT1XLnJlZE11bCh0ZS5yZWRJU3ViKG5lKSkucmVkSVN1YihqLnJlZE11bChxKSksbGU9dGhpcy56LnJl''@;'; put 'put ''ZE11bChHKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobmUsaWUsbGUpfSxLLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKEkpe2lmKDA9PT1JKXJldHVybiB0aGlzO2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2lmKCFJKXJldHVybiB0aGlzLmRibCgpO3ZhciBSO2lmKHRoaXMu''@;'; put 'put ''Y3VydmUuemVyb0F8fHRoaXMuY3VydmUudGhyZWVBKXt2YXIgRT10aGlzO2ZvcihSPTA7UjxJO1IrKylFPUUuZGJsKCk7cmV0dXJuIEV9dmFyIHo9dGhpcy5jdXJ2ZS5hLGo9dGhpcy5jdXJ2ZS50aW52LFY9dGhpcy54LEc9dGhpcy55LFc9dGhpcy56LFU9Vy5yZWRTcXIoKS5yZWRTcXIoKSxx''@;'; put 'put ''PUcucmVkQWRkKEcpO2ZvcihSPTA7UjxJO1IrKyl7dmFyIHRlPVYucmVkU3FyKCksbmU9cS5yZWRTcXIoKSxpZT1uZS5yZWRTcXIoKSxsZT10ZS5yZWRBZGQodGUpLnJlZElBZGQodGUpLnJlZElBZGQoei5yZWRNdWwoVSkpLGRlPVYucmVkTXVsKG5lKSx1ZT1sZS5yZWRTcXIoKS5yZWRJU3Vi''@;'; put 'put ''KGRlLnJlZEFkZChkZSkpLGNlPWRlLnJlZElTdWIodWUpLFk9bGUucmVkTXVsKGNlKTtZPVkucmVkSUFkZChZKS5yZWRJU3ViKGllKTt2YXIgYj1xLnJlZE11bChXKTtSKzE8SSYmKFU9VS5yZWRNdWwoaWUpKSxWPXVlLFc9YixxPVl9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KFYscS5yZWRN''@;'; put 'put ''dWwoaiksVyl9LEsucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LEsucHJvdG90eXBlLl96ZXJv''@;'; put 'put ''RGJsPWZ1bmN0aW9uKCl7dmFyIEksUixFO2lmKHRoaXMuek9uZSl7dmFyIHo9dGhpcy54LnJlZFNxcigpLGo9dGhpcy55LnJlZFNxcigpLFY9ai5yZWRTcXIoKSxHPXRoaXMueC5yZWRBZGQoaikucmVkU3FyKCkucmVkSVN1Yih6KS5yZWRJU3ViKFYpO0c9Ry5yZWRJQWRkKEcpO3ZhciBXPXou''@;'; put 'put ''cmVkQWRkKHopLnJlZElBZGQoeiksVT1XLnJlZFNxcigpLnJlZElTdWIoRykucmVkSVN1YihHKSxxPVYucmVkSUFkZChWKTtxPShxPXEucmVkSUFkZChxKSkucmVkSUFkZChxKSxJPVUsUj1XLnJlZE11bChHLnJlZElTdWIoVSkpLnJlZElTdWIocSksRT10aGlzLnkucmVkQWRkKHRoaXMueSl9''@;'; put 'put ''ZWxzZXt2YXIgdGU9dGhpcy54LnJlZFNxcigpLG5lPXRoaXMueS5yZWRTcXIoKSxpZT1uZS5yZWRTcXIoKSxsZT10aGlzLngucmVkQWRkKG5lKS5yZWRTcXIoKS5yZWRJU3ViKHRlKS5yZWRJU3ViKGllKTtsZT1sZS5yZWRJQWRkKGxlKTt2YXIgZGU9dGUucmVkQWRkKHRlKS5yZWRJQWRkKHRl''@;'; put 'put ''KSx1ZT1kZS5yZWRTcXIoKSxjZT1pZS5yZWRJQWRkKGllKTtjZT0oY2U9Y2UucmVkSUFkZChjZSkpLnJlZElBZGQoY2UpLEk9dWUucmVkSVN1YihsZSkucmVkSVN1YihsZSksUj1kZS5yZWRNdWwobGUucmVkSVN1YihJKSkucmVkSVN1YihjZSksRT0oRT10aGlzLnkucmVkTXVsKHRoaXMueikp''@;'; put 'put ''LnJlZElBZGQoRSl9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEksUixFKX0sSy5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uKCl7dmFyIEksUixFO2lmKHRoaXMuek9uZSl7dmFyIHo9dGhpcy54LnJlZFNxcigpLGo9dGhpcy55LnJlZFNxcigpLFY9ai5yZWRTcXIoKSxHPXRoaXMueC5y''@;'; put 'put ''ZWRBZGQoaikucmVkU3FyKCkucmVkSVN1Yih6KS5yZWRJU3ViKFYpO0c9Ry5yZWRJQWRkKEcpO3ZhciBXPXoucmVkQWRkKHopLnJlZElBZGQoeikucmVkSUFkZCh0aGlzLmN1cnZlLmEpLFU9Vy5yZWRTcXIoKS5yZWRJU3ViKEcpLnJlZElTdWIoRyk7ST1VO3ZhciBxPVYucmVkSUFkZChWKTtx''@;'; put 'put ''PShxPXEucmVkSUFkZChxKSkucmVkSUFkZChxKSxSPVcucmVkTXVsKEcucmVkSVN1YihVKSkucmVkSVN1YihxKSxFPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciB0ZT10aGlzLnoucmVkU3FyKCksbmU9dGhpcy55LnJlZFNxcigpLGllPXRoaXMueC5yZWRNdWwobmUpLGxlPXRoaXMu''@;'; put 'put ''eC5yZWRTdWIodGUpLnJlZE11bCh0aGlzLngucmVkQWRkKHRlKSk7bGU9bGUucmVkQWRkKGxlKS5yZWRJQWRkKGxlKTt2YXIgZGU9aWUucmVkSUFkZChpZSksdWU9KGRlPWRlLnJlZElBZGQoZGUpKS5yZWRBZGQoZGUpO0k9bGUucmVkU3FyKCkucmVkSVN1Yih1ZSksRT10aGlzLnkucmVkQWRk''@;'; put 'put ''KHRoaXMueikucmVkU3FyKCkucmVkSVN1YihuZSkucmVkSVN1Yih0ZSk7dmFyIGNlPW5lLnJlZFNxcigpO2NlPShjZT0oY2U9Y2UucmVkSUFkZChjZSkpLnJlZElBZGQoY2UpKS5yZWRJQWRkKGNlKSxSPWxlLnJlZE11bChkZS5yZWRJU3ViKEkpKS5yZWRJU3ViKGNlKX1yZXR1cm4gdGhpcy5j''@;'; put 'put ''dXJ2ZS5qcG9pbnQoSSxSLEUpfSxLLnByb3RvdHlwZS5fZGJsPWZ1bmN0aW9uKCl7dmFyIEk9dGhpcy5jdXJ2ZS5hLFI9dGhpcy54LEU9dGhpcy55LHo9dGhpcy56LGo9ei5yZWRTcXIoKS5yZWRTcXIoKSxWPVIucmVkU3FyKCksRz1FLnJlZFNxcigpLFc9Vi5yZWRBZGQoVikucmVkSUFkZChW''@;'; put 'put ''KS5yZWRJQWRkKEkucmVkTXVsKGopKSxVPVIucmVkQWRkKFIpLHE9KFU9VS5yZWRJQWRkKFUpKS5yZWRNdWwoRyksdGU9Vy5yZWRTcXIoKS5yZWRJU3ViKHEucmVkQWRkKHEpKSxuZT1xLnJlZElTdWIodGUpLGllPUcucmVkU3FyKCk7aWU9KGllPShpZT1pZS5yZWRJQWRkKGllKSkucmVkSUFk''@;'; put 'put ''ZChpZSkpLnJlZElBZGQoaWUpO3ZhciBsZT1XLnJlZE11bChuZSkucmVkSVN1YihpZSksZGU9RS5yZWRBZGQoRSkucmVkTXVsKHopO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0ZSxsZSxkZSl9LEsucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1''@;'; put 'put ''cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIEk9dGhpcy54LnJlZFNxcigpLFI9dGhpcy55LnJlZFNxcigpLEU9dGhpcy56LnJlZFNxcigpLHo9Ui5yZWRTcXIoKSxqPUkucmVkQWRkKEkpLnJlZElBZGQoSSksVj1qLnJlZFNxcigpLEc9dGhpcy54LnJlZEFkZChSKS5yZWRTcXIoKS5yZWRJ''@;'; put 'put ''U3ViKEkpLnJlZElTdWIoeiksVz0oRz0oRz0oRz1HLnJlZElBZGQoRykpLnJlZEFkZChHKS5yZWRJQWRkKEcpKS5yZWRJU3ViKFYpKS5yZWRTcXIoKSxVPXoucmVkSUFkZCh6KTtVPShVPShVPVUucmVkSUFkZChVKSkucmVkSUFkZChVKSkucmVkSUFkZChVKTt2YXIgcT1qLnJlZElBZGQoRyku''@;'; put 'put ''cmVkU3FyKCkucmVkSVN1YihWKS5yZWRJU3ViKFcpLnJlZElTdWIoVSksdGU9Ui5yZWRNdWwocSk7dGU9KHRlPXRlLnJlZElBZGQodGUpKS5yZWRJQWRkKHRlKTt2YXIgbmU9dGhpcy54LnJlZE11bChXKS5yZWRJU3ViKHRlKTtuZT0obmU9bmUucmVkSUFkZChuZSkpLnJlZElBZGQobmUpO3Zh''@;'; put 'put ''ciBpZT10aGlzLnkucmVkTXVsKHEucmVkTXVsKFUucmVkSVN1YihxKSkucmVkSVN1YihHLnJlZE11bChXKSkpO2llPShpZT0oaWU9aWUucmVkSUFkZChpZSkpLnJlZElBZGQoaWUpKS5yZWRJQWRkKGllKTt2YXIgbGU9dGhpcy56LnJlZEFkZChHKS5yZWRTcXIoKS5yZWRJU3ViKEUpLnJlZElT''@;'; put 'put ''dWIoVyk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG5lLGllLGxlKX0sSy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEksUil7cmV0dXJuIEk9bmV3IGsoSSxSKSx0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsSSl9LEsucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEkpe2lmKCJhZmZpbmUiPT09SS50''@;'; put 'put ''eXBlKXJldHVybiB0aGlzLmVxKEkudG9KKCkpO2lmKHRoaXM9PT1JKXJldHVybiEwO3ZhciBSPXRoaXMuei5yZWRTcXIoKSxFPUkuei5yZWRTcXIoKTtpZigwIT09dGhpcy54LnJlZE11bChFKS5yZWRJU3ViKEkueC5yZWRNdWwoUikpLmNtcG4oMCkpcmV0dXJuITE7dmFyIHo9Ui5yZWRNdWwo''@;'; put 'put ''dGhpcy56KSxqPUUucmVkTXVsKEkueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKGopLnJlZElTdWIoSS55LnJlZE11bCh6KSkuY21wbigwKX0sSy5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uKEkpe3ZhciBSPXRoaXMuei5yZWRTcXIoKSxFPUkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJl''@;'; put 'put ''ZE11bChSKTtpZigwPT09dGhpcy54LmNtcChFKSlyZXR1cm4hMDtmb3IodmFyIHo9SS5jbG9uZSgpLGo9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bChSKTs7KXtpZih6LmlhZGQodGhpcy5jdXJ2ZS5uKSx6LmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKEUucmVkSUFkZChqKSwwPT09''@;'; put 'put ''dGhpcy54LmNtcChFKSlyZXR1cm4hMH19LEsucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQgSW5maW5pdHk+IjoiPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5n''@;'; put 'put ''KDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifSxLLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX19LDgwNDk6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBLLHNlPXplLGs9VCg3MTA3Niksdj1UKDkxMzIp''@;'; put 'put ''LEg9VCg0Njc2NykuYXNzZXJ0O2Z1bmN0aW9uIEIoSil7dGhpcy5jdXJ2ZT0ic2hvcnQiPT09Si50eXBlP25ldyB2LnNob3J0KEopOiJlZHdhcmRzIj09PUoudHlwZT9uZXcgdi5lZHdhcmRzKEopOm5ldyB2Lm1vbnQoSiksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLm49dGhpcy5jdXJ2ZS5u''@;'; put 'put ''LHRoaXMuaGFzaD1KLmhhc2gsSCh0aGlzLmcudmFsaWRhdGUoKSwiSW52YWxpZCBjdXJ2ZSIpLEgodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwiSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8iKX1mdW5jdGlvbiBMKEosSSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHNlLEose2NvbmZp''@;'; put 'put ''Z3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBSPW5ldyBCKEkpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2UsSix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6Un0pLFJ9fSl9c2UuUHJlc2V0Q3VydmU9QixMKCJwMTkyIix7dHlw''@;'; put 'put ''ZToic2hvcnQiLHByaW1lOiJwMTkyIixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjY0MjEwNTE5IGU1OWM4MGU3IDBmYTdl''@;'; put 'put ''OWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMSIsaGFzaDprLnNoYTI1NixnUmVkOiExLGc6WyIxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZm''@;'; put 'put ''MTAxMiIsIjA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExIl19KSxMKCJwMjI0Iix7dHlwZToic2hvcnQiLHByaW1lOiJwMjI0IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAw''@;'; put 'put ''MSIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUiLGI6ImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCIsaGFzaDprLnNoYTI1NixnUmVkOiExLGc6WyJiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMSIsImJkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEw''@;'; put 'put ''IDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0Il19KSxMKCJwMjU2Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIDAwMDAwMDAxIDAw''@;'; put 'put ''MDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YiIsbjoiZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEiLGhhc2g6ay5zaGEyNTYsZ1JlZDohMSxnOlsiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYiLCI0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0''@;'; put 'put ''YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSJdfSksTCgicDM4NCIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZm''@;'; put 'put ''ZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYyIsYjoiYjMzMTJmYTcgZTIzZWU3ZTQg''@;'; put 'put ''OTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxIGY0MzcyZGRm''@;'; put 'put ''IDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczIixoYXNoOmsuc2hhMzg0LGdSZWQ6ITEsZzpbImFhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4IDU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcy''@;'; put 'put ''NzYwYWI3IiwiMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWYiXX0pLEwoInA1MjEiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiIwMDAwMDFm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiMDAwMDAxZmYgZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5''@;'; put 'put ''YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViIDk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkIDNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwIixuOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCBmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOSIsaGFzaDprLnNoYTUxMixnUmVkOiExLGc6WyIwMDAwMDBjNiA4NThlMDZi''@;'; put 'put ''NyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyBhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NiIsIjAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0''@;'; put 'put ''IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5IDU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxIDNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwIl19KSxMKCJjdXJ2ZTI1NTE5Iix7dHlwZToibW9udCIscHJpbWU6''@;'; put 'put ''InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiNzZkMDYiLGI6IjEiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQz''@;'; put 'put ''ZWQiLGhhc2g6ay5zaGEyNTYsZ1JlZDohMSxnOlsiOSJdfSksTCgiZWQyNTUxOSIse3R5cGU6ImVkd2FyZHMiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ii0xIixjOiIxIixk''@;'; put 'put ''OiI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOmsuc2hhMjU2LGdSZWQ6ITEs''@;'; put 'put ''ZzpbIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWEiLCI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4Il19KTt0cnl7Sz1UKDI3Mjc0KX1jYXRjaHtLPXZv''@;'; put 'put ''aWQgMH1MKCJzZWNwMjU2azEiLHt0eXBlOiJzaG9ydCIscHJpbWU6ImsyNTYiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIixhOiIwIixiOiI3IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MSIsaDoiMSIsaGFzaDprLnNoYTI1NixiZXRhOiI3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlIixsYW1iZGE6IjUzNjNhZDRjYzA1YzMwZTBhNTI2''@;'; put 'put ''MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzIiLGJhc2lzOlt7YToiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUiLGI6Ii1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMyJ9LHthOiIxMTRjYTUwZjdhOGUyZjNmNjU3YzExMDhkOWQ0NGNm''@;'; put 'put ''ZDgiLGI6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1In1dLGdSZWQ6ITEsZzpbIjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgiLCI0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4''@;'; put 'put ''NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4IixLXX0pfSw2NDQzOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgzMTM4Nyksaz1UKDkyNDQ3KSx2PVQoNDY3NjcpLGhlPVQoODA0OSksSD1UKDYwMDgyKSxCPXYuYXNzZXJ0LEw9VCg5MTM3MyksSz1UKDU3NzQ2KTtmdW5jdGlvbiBKKEkp''@;'; put 'put ''e2lmKCEodGhpcyBpbnN0YW5jZW9mIEopKXJldHVybiBuZXcgSihJKTsic3RyaW5nIj09dHlwZW9mIEkmJihCKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoZSxJKSwiVW5rbm93biBjdXJ2ZSAiK0kpLEk9aGVbSV0pLEkgaW5zdGFuY2VvZiBoZS5QcmVzZXRDdXJ2ZSYm''@;'; put 'put ''KEk9e2N1cnZlOkl9KSx0aGlzLmN1cnZlPUkuY3VydmUuY3VydmUsdGhpcy5uPXRoaXMuY3VydmUubix0aGlzLm5oPXRoaXMubi51c2hybigxKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMuZz1JLmN1cnZlLmcsdGhpcy5nLnByZWNvbXB1dGUoSS5jdXJ2ZS5uLmJpdExlbmd0aCgpKzEpLHRo''@;'; put 'put ''aXMuaGFzaD1JLmhhc2h8fEkuY3VydmUuaGFzaH1XZS5leHBvcnRzPUosSi5wcm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbihSKXtyZXR1cm4gbmV3IEwodGhpcyxSKX0sSi5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24oUixFKXtyZXR1cm4gTC5mcm9tUHJpdmF0ZSh0aGlzLFIs''@;'; put 'put ''RSl9LEoucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oUixFKXtyZXR1cm4gTC5mcm9tUHVibGljKHRoaXMsUixFKX0sSi5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihSKXtSfHwoUj17fSk7Zm9yKHZhciBFPW5ldyBrKHtoYXNoOnRoaXMuaGFzaCxwZXJzOlIucGVycyxw''@;'; put 'put ''ZXJzRW5jOlIucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6Ui5lbnRyb3B5fHxIKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6Ui5lbnRyb3B5JiZSLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSksej10aGlzLm4uYnl0ZUxlbmd0aCgpLGo9dGhp''@;'; put 'put ''cy5uLnN1YihuZXcgc2UoMikpOzspe3ZhciBWPW5ldyBzZShFLmdlbmVyYXRlKHopKTtpZighKFYuY21wKGopPjApKXJldHVybiBWLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoVil9fSxKLnByb3RvdHlwZS5fdHJ1bmNhdGVUb049ZnVuY3Rpb24oUixFKXt2YXIgej04KlIuYnl0ZUxl''@;'; put 'put ''bmd0aCgpLXRoaXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gej4wJiYoUj1SLnVzaHJuKHopKSwhRSYmUi5jbXAodGhpcy5uKT49MD9SLnN1Yih0aGlzLm4pOlJ9LEoucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oUixFLHosail7Im9iamVjdCI9PXR5cGVvZiB6JiYoaj16LHo9bnVsbCksanx8KGo9''@;'; put 'put ''e30pLEU9dGhpcy5rZXlGcm9tUHJpdmF0ZShFLHopLFI9dGhpcy5fdHJ1bmNhdGVUb04obmV3IHNlKFIsMTYpKTtmb3IodmFyIFY9dGhpcy5uLmJ5dGVMZW5ndGgoKSxHPUUuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIixWKSxXPVIudG9BcnJheSgiYmUiLFYpLFU9bmV3IGsoe2hhc2g6dGhp''@;'; put 'put ''cy5oYXNoLGVudHJvcHk6Ryxub25jZTpXLHBlcnM6ai5wZXJzLHBlcnNFbmM6ai5wZXJzRW5jfHwidXRmOCJ9KSxxPXRoaXMubi5zdWIobmV3IHNlKDEpKSx0ZT0wOzt0ZSsrKXt2YXIgbmU9ai5rP2ouayh0ZSk6bmV3IHNlKFUuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO2lmKCEo''@;'; put 'put ''KG5lPXRoaXMuX3RydW5jYXRlVG9OKG5lLCEwKSkuY21wbigxKTw9MHx8bmUuY21wKHEpPj0wKSl7dmFyIGllPXRoaXMuZy5tdWwobmUpO2lmKCFpZS5pc0luZmluaXR5KCkpe3ZhciBsZT1pZS5nZXRYKCksZGU9bGUudW1vZCh0aGlzLm4pO2lmKDAhPT1kZS5jbXBuKDApKXt2YXIgdWU9bmUu''@;'; put 'put ''aW52bSh0aGlzLm4pLm11bChkZS5tdWwoRS5nZXRQcml2YXRlKCkpLmlhZGQoUikpO2lmKDAhPT0odWU9dWUudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgY2U9KGllLmdldFkoKS5pc09kZCgpPzE6MCl8KDAhPT1sZS5jbXAoZGUpPzI6MCk7cmV0dXJuIGouY2Fub25pY2FsJiZ1ZS5jbXAo''@;'; put 'put ''dGhpcy5uaCk+MCYmKHVlPXRoaXMubi5zdWIodWUpLGNlXj0xKSxuZXcgSyh7cjpkZSxzOnVlLHJlY292ZXJ5UGFyYW06Y2V9KX19fX19fSxKLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oUixFLHosail7Uj10aGlzLl90cnVuY2F0ZVRvTihuZXcgc2UoUiwxNikpLHo9dGhpcy5rZXlGcm9t''@;'; put 'put ''UHVibGljKHosaik7dmFyIFY9KEU9bmV3IEsoRSwiaGV4IikpLnIsRz1FLnM7aWYoVi5jbXBuKDEpPDB8fFYuY21wKHRoaXMubik+PTB8fEcuY21wbigxKTwwfHxHLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciB0ZSxXPUcuaW52bSh0aGlzLm4pLFU9Vy5tdWwoUikudW1vZCh0aGlzLm4p''@;'; put 'put ''LHE9Vy5tdWwoVikudW1vZCh0aGlzLm4pO3JldHVybiB0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2s/ISh0ZT10aGlzLmcuam11bEFkZChVLHouZ2V0UHVibGljKCkscSkpLmlzSW5maW5pdHkoKSYmdGUuZXFYVG9QKFYpOiEodGU9dGhpcy5nLm11bEFkZChVLHouZ2V0UHVibGljKCkscSkpLmlz''@;'; put 'put ''SW5maW5pdHkoKSYmMD09PXRlLmdldFgoKS51bW9kKHRoaXMubikuY21wKFYpfSxKLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKEksUixFLHope0IoKDMmRSk9PT1FLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIiksUj1uZXcgSyhSLHopO3ZhciBq''@;'; put 'put ''PXRoaXMubixWPW5ldyBzZShJKSxHPVIucixXPVIucyxVPTEmRSxxPUU+PjE7aWYoRy5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJnEpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUiKTtHPXRoaXMuY3VydmUucG9p''@;'; put 'put ''bnRGcm9tWChxP0cuYWRkKHRoaXMuY3VydmUubik6RyxVKTt2YXIgdGU9Ui5yLmludm0oaiksbmU9ai5zdWIoVikubXVsKHRlKS51bW9kKGopLGllPVcubXVsKHRlKS51bW9kKGopO3JldHVybiB0aGlzLmcubXVsQWRkKG5lLEcsaWUpfSxKLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFt''@;'; put 'put ''PWZ1bmN0aW9uKEksUixFLHope2lmKG51bGwhPT0oUj1uZXcgSyhSLHopKS5yZWNvdmVyeVBhcmFtKXJldHVybiBSLnJlY292ZXJ5UGFyYW07Zm9yKHZhciBqPTA7ajw0O2orKyl7dmFyIFY7dHJ5e1Y9dGhpcy5yZWNvdmVyUHViS2V5KEksUixqKX1jYXRjaHtjb250aW51ZX1pZihWLmVxKEUp''@;'; put 'put ''KXJldHVybiBqfXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yIil9fSw5MTM3MzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMzEzODcpLHY9VCg0Njc2NykuYXNzZXJ0O2Z1bmN0aW9uIGhlKEgsQil7dGhpcy5lYz1ILHRoaXMu''@;'; put 'put ''cHJpdj1udWxsLHRoaXMucHViPW51bGwsQi5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKEIucHJpdixCLnByaXZFbmMpLEIucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMoQi5wdWIsQi5wdWJFbmMpfVdlLmV4cG9ydHM9aGUsaGUuZnJvbVB1YmxpYz1mdW5jdGlvbihCLEwsSyl7cmV0dXJuIEwg''@;'; put 'put ''aW5zdGFuY2VvZiBoZT9MOm5ldyBoZShCLHtwdWI6TCxwdWJFbmM6S30pfSxoZS5mcm9tUHJpdmF0ZT1mdW5jdGlvbihCLEwsSyl7cmV0dXJuIEwgaW5zdGFuY2VvZiBoZT9MOm5ldyBoZShCLHtwcml2OkwscHJpdkVuYzpLfSl9LGhlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBCPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIEIuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpCLnZhbGlkYXRlKCk/Qi5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDoh''@;'; put 'put ''MSxyZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSBpcyBub3QgYSBwb2ludCJ9fSxoZS5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKEIsTCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBCJiYoTD1CLEI9bnVsbCksdGhpcy5wdWJ8''@;'; put 'put ''fCh0aGlzLnB1Yj10aGlzLmVjLmcubXVsKHRoaXMucHJpdikpLEw/dGhpcy5wdWIuZW5jb2RlKEwsQik6dGhpcy5wdWJ9LGhlLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKEIpe3JldHVybiJoZXgiPT09Qj90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxoZS5wcm90''@;'; put 'put ''b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24oQixMKXt0aGlzLnByaXY9bmV3IHNlKEIsTHx8MTYpLHRoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfSxoZS5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihCLEwpe2lmKEIueHx8Qi55KXJldHVybiJt''@;'; put 'put ''b250Ij09PXRoaXMuZWMuY3VydmUudHlwZT92KEIueCwiTmVlZCB4IGNvb3JkaW5hdGUiKTooInNob3J0Ij09PXRoaXMuZWMuY3VydmUudHlwZXx8ImVkd2FyZHMiPT09dGhpcy5lYy5jdXJ2ZS50eXBlKSYmdihCLngmJkIueSwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZSIpLHZvaWQo''@;'; put 'put ''dGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5wb2ludChCLngsQi55KSk7dGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChCLEwpfSxoZS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKEIpe3JldHVybiBCLnZhbGlkYXRlKCl8fHYoQi52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90''@;'; put 'put ''IHZhbGlkYXRlZCIpLEIubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxoZS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihCLEwsSyl7cmV0dXJuIHRoaXMuZWMuc2lnbihCLHRoaXMsTCxLKX0saGUucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihCLEwpe3JldHVybiB0aGlzLmVjLnZlcmlmeShCLEws''@;'; put 'put ''dGhpcyl9LGhlLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIjxLZXkgcHJpdjogIisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpKyIgcHViOiAiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKSsiID4ifX0sNTc3NDY6KFdlLHplLFQpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBzZT1UKDMxMzg3KSxrPVQoNDY3NjcpLHY9ay5hc3NlcnQ7ZnVuY3Rpb24gaGUoSixJKXtpZihKIGluc3RhbmNlb2YgaGUpcmV0dXJuIEo7dGhpcy5faW1wb3J0REVSKEosSSl8fCh2KEouciYmSi5zLCJTaWduYXR1cmUgd2l0aG91dCByIG9yIHMiKSx0aGlzLnI9bmV3''@;'; put 'put ''IHNlKEouciwxNiksdGhpcy5zPW5ldyBzZShKLnMsMTYpLHRoaXMucmVjb3ZlcnlQYXJhbT12b2lkIDA9PT1KLnJlY292ZXJ5UGFyYW0/bnVsbDpKLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIEgoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gQihKLEkpe3ZhciBSPUpbSS5wbGFjZSsrXTtpZigh''@;'; put 'put ''KDEyOCZSKSlyZXR1cm4gUjt2YXIgRT0xNSZSO2lmKDA9PT1FfHxFPjQpcmV0dXJuITE7Zm9yKHZhciB6PTAsaj0wLFY9SS5wbGFjZTtqPEU7aisrLFYrKyl6PDw9OCx6fD1KW1ZdLHo+Pj49MDtyZXR1cm4hKHo8PTEyNykmJihJLnBsYWNlPVYseil9ZnVuY3Rpb24gTChKKXtmb3IodmFyIEk9''@;'; put 'put ''MCxSPUoubGVuZ3RoLTE7IUpbSV0mJiEoMTI4JkpbSSsxXSkmJkk8UjspSSsrO3JldHVybiAwPT09ST9KOkouc2xpY2UoSSl9ZnVuY3Rpb24gSyhKLEkpe2lmKEk8MTI4KUoucHVzaChJKTtlbHNle3ZhciBSPTErKE1hdGgubG9nKEkpL01hdGguTE4yPj4+Myk7Zm9yKEoucHVzaCgxMjh8Uik7''@;'; put 'put ''LS1SOylKLnB1c2goST4+PihSPDwzKSYyNTUpO0oucHVzaChJKX19V2UuZXhwb3J0cz1oZSxoZS5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlvbihJLFIpe0k9ay50b0FycmF5KEksUik7dmFyIEU9bmV3IEg7aWYoNDghPT1JW0UucGxhY2UrK10pcmV0dXJuITE7dmFyIHo9QihJLEUpO2lm''@;'; put 'put ''KCExPT09enx8eitFLnBsYWNlIT09SS5sZW5ndGh8fDIhPT1JW0UucGxhY2UrK10pcmV0dXJuITE7dmFyIGo9QihJLEUpO2lmKCExPT09ailyZXR1cm4hMTt2YXIgVj1JLnNsaWNlKEUucGxhY2UsaitFLnBsYWNlKTtpZihFLnBsYWNlKz1qLDIhPT1JW0UucGxhY2UrK10pcmV0dXJuITE7dmFy''@;'; put 'put ''IEc9QihJLEUpO2lmKCExPT09R3x8SS5sZW5ndGghPT1HK0UucGxhY2UpcmV0dXJuITE7dmFyIFc9SS5zbGljZShFLnBsYWNlLEcrRS5wbGFjZSk7aWYoMD09PVZbMF0pe2lmKCEoMTI4JlZbMV0pKXJldHVybiExO1Y9Vi5zbGljZSgxKX1pZigwPT09V1swXSl7aWYoISgxMjgmV1sxXSkpcmV0''@;'; put 'put ''dXJuITE7Vz1XLnNsaWNlKDEpfXJldHVybiB0aGlzLnI9bmV3IHNlKFYpLHRoaXMucz1uZXcgc2UoVyksdGhpcy5yZWNvdmVyeVBhcmFtPW51bGwsITB9LGhlLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihJKXt2YXIgUj10aGlzLnIudG9BcnJheSgpLEU9dGhpcy5zLnRvQXJyYXkoKTtmb3Io''@;'; put 'put ''MTI4JlJbMF0mJihSPVswXS5jb25jYXQoUikpLDEyOCZFWzBdJiYoRT1bMF0uY29uY2F0KEUpKSxSPUwoUiksRT1MKEUpOyEoRVswXXx8MTI4JkVbMV0pOylFPUUuc2xpY2UoMSk7dmFyIHo9WzJdO0soeixSLmxlbmd0aCksKHo9ei5jb25jYXQoUikpLnB1c2goMiksSyh6LEUubGVuZ3RoKTt2''@;'; put 'put ''YXIgaj16LmNvbmNhdChFKSxWPVs0OF07cmV0dXJuIEsoVixqLmxlbmd0aCksVj1WLmNvbmNhdChqKSxrLmVuY29kZShWLEkpfX0sOTk1Nzc6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDcxMDc2KSxrPVQoODA0OSksdj1UKDQ2NzY3KSxoZT12LmFzc2VydCxIPXYucGFyc2VC''@;'; put 'put ''eXRlcyxCPVQoMTcwMTIpLEw9VCg3ODA2Mik7ZnVuY3Rpb24gSyhKKXtpZihoZSgiZWQyNTUxOSI9PT1KLCJvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyIiksISh0aGlzIGluc3RhbmNlb2YgSykpcmV0dXJuIG5ldyBLKEopO3RoaXMuY3VydmU9Sj1rW0pdLmN1cnZlLHRoaXMuZz1K''@;'; put 'put ''LmcsdGhpcy5nLnByZWNvbXB1dGUoSi5uLmJpdExlbmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz1KLnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwoSi5uLmJpdExlbmd0aCgpLzgpLHRoaXMuaGFzaD1zZS5zaGE1MTJ9V2UuZXhwb3J0cz1LLEsucHJv''@;'; put 'put ''dG90eXBlLnNpZ249ZnVuY3Rpb24oSSxSKXtJPUgoSSk7dmFyIEU9dGhpcy5rZXlGcm9tU2VjcmV0KFIpLHo9dGhpcy5oYXNoSW50KEUubWVzc2FnZVByZWZpeCgpLEkpLGo9dGhpcy5nLm11bCh6KSxWPXRoaXMuZW5jb2RlUG9pbnQoaiksRz10aGlzLmhhc2hJbnQoVixFLnB1YkJ5dGVzKCks''@;'; put 'put ''SSkubXVsKEUucHJpdigpKSxXPXouYWRkKEcpLnVtb2QodGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOmosUzpXLFJlbmNvZGVkOlZ9KX0sSy5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKEksUixFKXtJPUgoSSksUj10aGlzLm1ha2VTaWduYXR1cmUoUik7dmFy''@;'; put 'put ''IHo9dGhpcy5rZXlGcm9tUHVibGljKEUpLGo9dGhpcy5oYXNoSW50KFIuUmVuY29kZWQoKSx6LnB1YkJ5dGVzKCksSSksVj10aGlzLmcubXVsKFIuUygpKTtyZXR1cm4gUi5SKCkuYWRkKHoucHViKCkubXVsKGopKS5lcShWKX0sSy5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgST10aGlzLmhhc2goKSxSPTA7Ujxhcmd1bWVudHMubGVuZ3RoO1IrKylJLnVwZGF0ZShhcmd1bWVudHNbUl0pO3JldHVybiB2LmludEZyb21MRShJLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LEsucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oSSl7cmV0dXJuIEIu''@;'; put 'put ''ZnJvbVB1YmxpYyh0aGlzLEkpfSxLLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKEkpe3JldHVybiBCLmZyb21TZWNyZXQodGhpcyxJKX0sSy5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihJKXtyZXR1cm4gSSBpbnN0YW5jZW9mIEw/STpuZXcgTCh0aGlzLEkpfSxL''@;'; put 'put ''LnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbihJKXt2YXIgUj1JLmdldFkoKS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIFJbdGhpcy5lbmNvZGluZ0xlbmd0aC0xXXw9SS5nZXRYKCkuaXNPZGQoKT8xMjg6MCxSfSxLLnByb3RvdHlwZS5kZWNvZGVQb2lu''@;'; put 'put ''dD1mdW5jdGlvbihJKXt2YXIgUj0oST12LnBhcnNlQnl0ZXMoSSkpLmxlbmd0aC0xLEU9SS5zbGljZSgwLFIpLmNvbmNhdCgtMTI5JklbUl0pLHo9MCE9KDEyOCZJW1JdKSxqPXYuaW50RnJvbUxFKEUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoaix6KX0sSy5wcm90b3R5cGUuZW5j''@;'; put 'put ''b2RlSW50PWZ1bmN0aW9uKEkpe3JldHVybiBJLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sSy5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKEkpe3JldHVybiB2LmludEZyb21MRShJKX0sSy5wcm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbihJKXtyZXR1cm4gSSBpbnN0''@;'; put 'put ''YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LDE3MDEyOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg0Njc2Nyksaz1zZS5hc3NlcnQsdj1zZS5wYXJzZUJ5dGVzLGhlPXNlLmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIEgoQixMKXt0aGlzLmVkZHNhPUIsdGhpcy5fc2VjcmV0PXYo''@;'; put 'put ''TC5zZWNyZXQpLEIuaXNQb2ludChMLnB1Yik/dGhpcy5fcHViPUwucHViOnRoaXMuX3B1YkJ5dGVzPXYoTC5wdWIpfUguZnJvbVB1YmxpYz1mdW5jdGlvbihMLEspe3JldHVybiBLIGluc3RhbmNlb2YgSD9LOm5ldyBIKEwse3B1YjpLfSl9LEguZnJvbVNlY3JldD1mdW5jdGlvbihMLEspe3Jl''@;'; put 'put ''dHVybiBLIGluc3RhbmNlb2YgSD9LOm5ldyBIKEwse3NlY3JldDpLfSl9LEgucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZWNyZXR9LGhlKEgsInB1YkJ5dGVzIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpfSks''@;'; put 'put ''aGUoSCwicHViIixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wdWJCeXRlcz90aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTp0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKX0pLGhlKEgsInByaXZCeXRlcyIsZnVuY3Rpb24oKXt2YXIgTD10aGlzLmVkZHNhLEs9dGhp''@;'; put 'put ''cy5oYXNoKCksSj1MLmVuY29kaW5nTGVuZ3RoLTEsST1LLnNsaWNlKDAsTC5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIElbMF0mPTI0OCxJW0pdJj0xMjcsSVtKXXw9NjQsSX0pLGhlKEgsInByaXYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVz''@;'; put 'put ''KCkpfSksaGUoSCwiaGFzaCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSksaGUoSCwibWVzc2FnZVByZWZpeCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRzYS5lbmNvZGluZ0xl''@;'; put 'put ''bmd0aCl9KSxILnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKEwpe3JldHVybiBrKHRoaXMuX3NlY3JldCwiS2V5UGFpciBjYW4gb25seSB2ZXJpZnkiKSx0aGlzLmVkZHNhLnNpZ24oTCx0aGlzKX0sSC5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKEwsSyl7cmV0dXJuIHRoaXMuZWRkc2EudmVy''@;'; put 'put ''aWZ5KEwsSyx0aGlzKX0sSC5wcm90b3R5cGUuZ2V0U2VjcmV0PWZ1bmN0aW9uKEwpe3JldHVybiBrKHRoaXMuX3NlY3JldCwiS2V5UGFpciBpcyBwdWJsaWMgb25seSIpLHNlLmVuY29kZSh0aGlzLnNlY3JldCgpLEwpfSxILnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oTCl7cmV0dXJu''@;'; put 'put ''IHNlLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksTCl9LFdlLmV4cG9ydHM9SH0sNzgwNjI6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDMxMzg3KSxrPVQoNDY3NjcpLHY9ay5hc3NlcnQsaGU9ay5jYWNoZWRQcm9wZXJ0eSxIPWsucGFyc2VCeXRlcztmdW5jdGlvbiBCKEwsSyl7''@;'; put 'put ''dGhpcy5lZGRzYT1MLCJvYmplY3QiIT10eXBlb2YgSyYmKEs9SChLKSksQXJyYXkuaXNBcnJheShLKSYmKEs9e1I6Sy5zbGljZSgwLEwuZW5jb2RpbmdMZW5ndGgpLFM6Sy5zbGljZShMLmVuY29kaW5nTGVuZ3RoKX0pLHYoSy5SJiZLLlMsIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgUyIpLEwu''@;'; put 'put ''aXNQb2ludChLLlIpJiYodGhpcy5fUj1LLlIpLEsuUyBpbnN0YW5jZW9mIHNlJiYodGhpcy5fUz1LLlMpLHRoaXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkoSy5SKT9LLlI6Sy5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KEsuUyk/Sy5TOksuU2VuY29kZWR9aGUoQiwi''@;'; put 'put ''UyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pLGhlKEIsIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLGhlKEIsIlJlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKX0pLGhlKEIsIlNlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSxCLnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhp''@;'; put 'put ''cy5TZW5jb2RlZCgpKX0sQi5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4gay5lbmNvZGUodGhpcy50b0J5dGVzKCksImhleCIpLnRvVXBwZXJDYXNlKCl9LFdlLmV4cG9ydHM9Qn0sMjcyNzQ6V2U9PntXZS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2MGZj''@;'; put 'put ''ZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4''@;'; put 'put ''YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1Yjcz''@;'; put 'put ''OSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3''@;'; put 'put ''ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBj''@;'; put 'put ''NjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2JlYmY5''@;'; put 'put ''OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNj''@;'; put 'put ''MDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3MDYx''@;'; put 'put ''OTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgx''@;'; put 'put ''Yzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFk''@;'; put 'put ''Il0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3''@;'; put 'put ''NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQx''@;'; put 'put ''ZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1OWJh''@;'; put 'put ''NjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODcz''@;'; put 'put ''YWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0OGJm''@;'; put 'put ''ODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFi''@;'; put 'put ''MGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJk''@;'; put 'put ''IiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFk''@;'; put 'put ''NWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3''@;'; put 'put ''NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3OGIx''@;'; put 'put ''YjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYw''@;'; put 'put ''NDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkzZmI1''@;'; put 'put ''Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0''@;'; put 'put ''MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3''@;'; put 'put ''Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1''@;'; put 'put ''MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2Fj''@;'; put 'put ''NjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYzOTg2''@;'; put 'put ''ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFk''@;'; put 'put ''MWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3YTI2''@;'; put 'put ''Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcx''@;'; put 'put ''Y2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4''@;'; put 'put ''IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVh''@;'; put 'put ''ZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZj''@;'; put 'put ''YWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJmZGY4''@;'; put 'put ''ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRm''@;'; put 'put ''MTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2ZDlh''@;'; put 'put ''YjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2''@;'; put 'put ''ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyIl0s''@;'; put 'put ''WyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAx''@;'; put 'put ''YjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZh''@;'; put 'put ''MjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzczNTI2''@;'; put 'put ''ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3''@;'; put 'put ''YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUwYzBm''@;'; put 'put ''NjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4''@;'; put 'put ''OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMi''@;'; put 'put ''LCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0''@;'; put 'put ''N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4''@;'; put 'put ''NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcxZWI4''@;'; put 'put ''OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBl''@;'; put 'put ''N2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJlMTU5''@;'; put 'put ''MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThh''@;'; put 'put ''OWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MiJd''@;'; put 'put ''LFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJk''@;'; put 'put ''Mzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1''@;'; put 'put ''MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5''@;'; put 'put ''IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2''@;'; put 'put ''YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYy''@;'; put 'put ''ODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5NDEx''@;'; put 'put ''ZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBl''@;'; put 'put ''NThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFlMjg3''@;'; put 'put ''MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQx''@;'; put 'put ''ZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2Ei''@;'; put 'put ''XSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1''@;'; put 'put ''OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNk''@;'; put 'put ''N2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4ZThk''@;'; put 'put ''NGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYx''@;'; put 'put ''YzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5N2Zm''@;'; put 'put ''YTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRl''@;'; put 'put ''YjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2Qi''@;'; put 'put ''LCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2Zl''@;'; put 'put ''NzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMy''@;'; put 'put ''MjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQxMmVh''@;'; put 'put ''MjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThl''@;'; put 'put ''MmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRjOWIz''@;'; put 'put ''YjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUy''@;'; put 'put ''N2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2Il0s''@;'; put 'put ''WyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5''@;'; put 'put ''NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0''@;'; put 'put ''Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZiM2Nk''@;'; put 'put ''MGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2''@;'; put 'put ''NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcwYTZi''@;'; put 'put ''OTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1''@;'; put 'put ''NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhIiwi''@;'; put 'put ''ZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNm''@;'; put 'put ''YjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2Ni''@;'; put 'put ''YWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUzNzMw''@;'; put 'put ''NWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZi''@;'; put 'put ''NjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0MjUz''@;'; put 'put ''N2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdh''@;'; put 'put ''MDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExIl0s''@;'; put 'put ''WyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZl''@;'; put 'put ''ZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZk''@;'; put 'put ''NWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3MjM0''@;'; put 'put ''ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNk''@;'; put 'put ''NTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5MWRk''@;'; put 'put ''OTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4Mzky''@;'; put 'put ''OGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzIiwi''@;'; put 'put ''NGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3''@;'; put 'put ''MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2''@;'; put 'put ''MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYwMDc0''@;'; put 'put ''MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRj''@;'; put 'put ''NzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVkM2Uy''@;'; put 'put ''OTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1''@;'; put 'put ''ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMiXSxb''@;'; put 'put ''ImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJl''@;'; put 'put ''YWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0''@;'; put 'put ''NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVlYmZj''@;'; put 'put ''NzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZm''@;'; put 'put ''ZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2ZGFk''@;'; put 'put ''ZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5Mzhl''@;'; put 'put ''OGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwiM2Q5''@;'; put 'put ''OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZk''@;'; put 'put ''YTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZj''@;'; put 'put ''ZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZiODFj''@;'; put 'put ''N2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0''@;'; put 'put ''ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5Yjg1''@;'; put 'put ''ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0Zjgx''@;'; put 'put ''ZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjExMzk2''@;'; put 'put ''ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhk''@;'; put 'put ''Y2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAz''@;'; put 'put ''MCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQy''@;'; put 'put ''ZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5''@;'; put 'put ''MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4OTI3''@;'; put 'put ''ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFj''@;'; put 'put ''OGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1NjA3''@;'; put 'put ''NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5''@;'; put 'put ''MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjci''@;'; put 'put ''XSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0''@;'; put 'put ''ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3''@;'; put 'put ''NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3OWQ5''@;'; put 'put ''ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJi''@;'; put 'put ''ZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3NTYw''@;'; put 'put ''NWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlh''@;'; put 'put ''MGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0''@;'; put 'put ''MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2''@;'; put 'put ''NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0''@;'; put 'put ''NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1YzdjMDUy''@;'; put 'put ''YTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5''@;'; put 'put ''MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4OWFk''@;'; put 'put ''N2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFm''@;'; put 'put ''ZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAi''@;'; put 'put ''XSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJh''@;'; put 'put ''N2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5''@;'; put 'put ''OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYyODlm''@;'; put 'put ''Nzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQy''@;'; put 'put ''YTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMyZjRk''@;'; put 'put ''YTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZi''@;'; put 'put ''YjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3''@;'; put 'put ''IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3''@;'; put 'put ''OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0''@;'; put 'put ''NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3Y2Ew''@;'; put 'put ''NjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUz''@;'; put 'put ''NzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAzYzEy''@;'; put 'put ''ZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkz''@;'; put 'put ''ZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4''@;'; put 'put ''Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMy''@;'; put 'put ''MDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4''@;'; put 'put ''OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3ZTIy''@;'; put 'put ''Yjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRh''@;'; put 'put ''NzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw0Njc2NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPXplLGs9VCgzMTM4Nyksdj1UKDU3Nzk4KSxoZT1UKDc4MjQ3KTtzZS5hc3NlcnQ9dixzZS50b0FycmF5PWhlLnRvQXJyYXksc2UuemVybzI9aGUuemVybzIsc2UudG9IZXg9aGUu''@;'; put 'put ''dG9IZXgsc2UuZW5jb2RlPWhlLmVuY29kZSxzZS5nZXROQUY9ZnVuY3Rpb24gSChJLFIsRSl7dmFyIHo9bmV3IEFycmF5KE1hdGgubWF4KEkuYml0TGVuZ3RoKCksRSkrMSk7ei5maWxsKDApO2Zvcih2YXIgaj0xPDxSKzEsVj1JLmNsb25lKCksRz0wO0c8ei5sZW5ndGg7RysrKXt2YXIgVyxV''@;'; put 'put ''PVYuYW5kbG4oai0xKTtWLmlzT2RkKCk/Vi5pc3VibihXPVU+KGo+PjEpLTE/KGo+PjEpLVU6VSk6Vz0wLHpbR109VyxWLml1c2hybigxKX1yZXR1cm4gen0sc2UuZ2V0SlNGPWZ1bmN0aW9uIEIoSSxSKXt2YXIgRT1bW10sW11dO0k9SS5jbG9uZSgpLFI9Ui5jbG9uZSgpO2Zvcih2YXIgVix6''@;'; put 'put ''PTAsaj0wO0kuY21wbigteik+MHx8Ui5jbXBuKC1qKT4wOyl7dmFyIFUscSxHPUkuYW5kbG4oMykreiYzLFc9Ui5hbmRsbigzKStqJjM7Mz09PUcmJihHPS0xKSwzPT09VyYmKFc9LTEpLFU9MSZHPzMhPShWPUkuYW5kbG4oNykreiY3KSYmNSE9PVZ8fDIhPT1XP0c6LUc6MCxFWzBdLnB1c2go''@;'; put 'put ''VSkscT0xJlc/MyE9KFY9Ui5hbmRsbig3KStqJjcpJiY1IT09Vnx8MiE9PUc/VzotVzowLEVbMV0ucHVzaChxKSwyKno9PT1VKzEmJih6PTEteiksMipqPT09cSsxJiYoaj0xLWopLEkuaXVzaHJuKDEpLFIuaXVzaHJuKDEpfXJldHVybiBFfSxzZS5jYWNoZWRQcm9wZXJ0eT1mdW5jdGlvbiBM''@;'; put 'put ''KEksUixFKXt2YXIgej0iXyIrUjtJLnByb3RvdHlwZVtSXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzW3pdP3RoaXNbel06dGhpc1t6XT1FLmNhbGwodGhpcyl9fSxzZS5wYXJzZUJ5dGVzPWZ1bmN0aW9uIEsoSSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBJP3NlLnRvQXJyYXko''@;'; put 'put ''SSwiaGV4Iik6SX0sc2UuaW50RnJvbUxFPWZ1bmN0aW9uIEooSSl7cmV0dXJuIG5ldyBrKEksImhleCIsImxlIil9fSwzMTM4NzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2Usayl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoWSxiKXtpZighWSl0aHJvdyBuZXcgRXJyb3IoYnx8IkFz''@;'; put 'put ''c2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBoZShZLGIpe1kuc3VwZXJfPWI7dmFyIHg9ZnVuY3Rpb24oKXt9O3gucHJvdG90eXBlPWIucHJvdG90eXBlLFkucHJvdG90eXBlPW5ldyB4LFkucHJvdG90eXBlLmNvbnN0cnVjdG9yPVl9ZnVuY3Rpb24gSChZLGIseCl7aWYoSC5pc0JOKFkpKXJl''@;'; put 'put ''dHVybiBZO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1ZJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJih4PWIsYj0xMCksdGhpcy5faW5pdChZfHwwLGJ8fDEwLHh8fCJiZSIpKX12YXIgQjsib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IHNlP3NlLmV4cG9ydHM9SDprLkJOPUgsSC5CTj1ILEgud29yZFNpemU9MjY7dHJ5e0I9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOlQoODU1NjgpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gTChZLGIpe3ZhciB4PVkuY2hhckNvZGVB''@;'; put 'put ''dChiKTtyZXR1cm4geD49NjUmJng8PTcwP3gtNTU6eD49OTcmJng8PTEwMj94LTg3OngtNDgmMTV9ZnVuY3Rpb24gSyhZLGIseCl7dmFyIE49TChZLHgpO3JldHVybiB4LTE+PWImJihOfD1MKFkseC0xKTw8NCksTn1mdW5jdGlvbiBKKFksYix4LE4pe2Zvcih2YXIgRj0wLGc9TWF0aC5taW4o''@;'; put 'put ''WS5sZW5ndGgseCksQz1iO0M8ZztDKyspe3ZhciBNPVkuY2hhckNvZGVBdChDKS00ODtGKj1OLEYrPU0+PTQ5P00tNDkrMTA6TT49MTc/TS0xNysxMDpNfXJldHVybiBGfUguaXNCTj1mdW5jdGlvbihiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIEh8fG51bGwhPT1iJiYib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IGImJmIuY29uc3RydWN0b3Iud29yZFNpemU9PT1ILndvcmRTaXplJiZBcnJheS5pc0FycmF5KGIud29yZHMpfSxILm1heD1mdW5jdGlvbihiLHgpe3JldHVybiBiLmNtcCh4KT4wP2I6eH0sSC5taW49ZnVuY3Rpb24oYix4KXtyZXR1cm4gYi5jbXAoeCk8MD9iOnh9LEgucHJvdG90eXBlLl9p''@;'; put 'put ''bml0PWZ1bmN0aW9uKGIseCxOKXtpZigibnVtYmVyIj09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoYix4LE4pO2lmKCJvYmplY3QiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdEFycmF5KGIseCxOKTsiaGV4Ij09PXgmJih4PTE2KSx2KHg9PT0oMHx4KSYmeD49MiYmeDw9''@;'; put 'put ''MzYpO3ZhciBGPTA7Ii0iPT09KGI9Yi50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihGKyssdGhpcy5uZWdhdGl2ZT0xKSxGPGIubGVuZ3RoJiYoMTY9PT14P3RoaXMuX3BhcnNlSGV4KGIsRixOKToodGhpcy5fcGFyc2VCYXNlKGIseCxGKSwibGUiPT09TiYmdGhpcy5faW5p''@;'; put 'put ''dEFycmF5KHRoaXMudG9BcnJheSgpLHgsTikpKX0sSC5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oYix4LE4pe2I8MCYmKHRoaXMubmVnYXRpdmU9MSxiPS1iKSxiPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiXSx0aGlzLmxlbmd0aD0xKTpiPDQ1MDM1OTk2MjczNzA0''@;'; put 'put ''OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KHYoYjw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PU4mJnRoaXMuX2lu''@;'; put 'put ''aXRBcnJheSh0aGlzLnRvQXJyYXkoKSx4LE4pfSxILnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGIseCxOKXtpZih2KCJudW1iZXIiPT10eXBlb2YgYi5sZW5ndGgpLGIubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9''@;'; put 'put ''TWF0aC5jZWlsKGIubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPHRoaXMubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTA7dmFyIGcsQyxNPTA7aWYoImJlIj09PU4pZm9yKEY9Yi5sZW5ndGgtMSxnPTA7Rj49MDtGLT0zKXRoaXMud29y''@;'; put 'put ''ZHNbZ118PShDPWJbRl18YltGLTFdPDw4fGJbRi0yXTw8MTYpPDxNJjY3MTA4ODYzLHRoaXMud29yZHNbZysxXT1DPj4+MjYtTSY2NzEwODg2MywoTSs9MjQpPj0yNiYmKE0tPTI2LGcrKyk7ZWxzZSBpZigibGUiPT09Tilmb3IoRj0wLGc9MDtGPGIubGVuZ3RoO0YrPTMpdGhpcy53b3Jkc1tn''@;'; put 'put ''XXw9KEM9YltGXXxiW0YrMV08PDh8YltGKzJdPDwxNik8PE0mNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1NJjY3MTA4ODYzLChNKz0yNCk+PTI2JiYoTS09MjYsZysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oYix4LE4pe3Ro''@;'; put 'put ''aXMubGVuZ3RoPU1hdGguY2VpbCgoYi5sZW5ndGgteCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09MDt2YXIgTSxnPTAsQz0wO2lmKCJiZSI9PT1OKWZvcihGPWIubGVuZ3RoLTE7Rj49eDtG''@;'; put 'put ''LT0yKU09SyhiLHgsRik8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMmTSxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9TT4+PjI2KTpnKz04O2Vsc2UgZm9yKEY9KGIubGVuZ3RoLXgpJTI9PTA/eCsxOng7RjxiLmxlbmd0aDtGKz0yKU09SyhiLHgsRik8PGcsdGhpcy53b3Jkc1tD''@;'; put 'put ''XXw9NjcxMDg4NjMmTSxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9TT4+PjI2KTpnKz04O3RoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihiLHgsTil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIEY9MCxnPTE7Zzw9NjcxMDg4''@;'; put 'put ''NjM7Zyo9eClGKys7Ri0tLGc9Zy94fDA7Zm9yKHZhciBDPWIubGVuZ3RoLU4sTT1DJUYseT1NYXRoLm1pbihDLEMtTSkrTixwPTAsUz1OO1M8eTtTKz1GKXA9SihiLFMsUytGLHgpLHRoaXMuaW11bG4oZyksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5f''@;'; put 'put ''aWFkZG4ocCk7aWYoMCE9PU0pe3ZhciBRPTE7Zm9yKHA9SihiLFMsYi5sZW5ndGgseCksUz0wO1M8TTtTKyspUSo9eDt0aGlzLmltdWxuKFEpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApfXRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''Y29weT1mdW5jdGlvbihiKXtiLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciB4PTA7eDx0aGlzLmxlbmd0aDt4KyspYi53b3Jkc1t4XT10aGlzLndvcmRzW3hdO2IubGVuZ3RoPXRoaXMubGVuZ3RoLGIubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxiLnJlZD10aGlzLnJlZH0s''@;'; put 'put ''SC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgSChudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGIpLGJ9LEgucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LEgu''@;'; put 'put ''cHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sSC5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LEgucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIEk9WyIiLCIwIiwiMDAiLCIwMDAi''@;'; put 'put ''LCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAi''@;'; put 'put ''LCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sUj1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxFPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEs''@;'; put 'put ''MTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0''@;'; put 'put ''Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIGooWSxiLHgpe3gubmVnYXRpdmU9Yi5uZWdhdGl2ZV5ZLm5lZ2F0aXZl''@;'; put 'put ''O3ZhciBOPVkubGVuZ3RoK2IubGVuZ3RofDA7eC5sZW5ndGg9TixOPU4tMXwwO3ZhciBGPTB8WS53b3Jkc1swXSxnPTB8Yi53b3Jkc1swXSxDPUYqZyx5PUMvNjcxMDg4NjR8MDt4LndvcmRzWzBdPTY3MTA4ODYzJkM7Zm9yKHZhciBwPTE7cDxOO3ArKyl7Zm9yKHZhciBTPXk+Pj4yNixRPTY3''@;'; put 'put ''MTA4ODYzJnkscmU9TWF0aC5taW4ocCxiLmxlbmd0aC0xKSxmZT1NYXRoLm1heCgwLHAtWS5sZW5ndGgrMSk7ZmU8PXJlO2ZlKyspUys9KEM9KEY9MHxZLndvcmRzW3AtZmV8MF0pKihnPTB8Yi53b3Jkc1tmZV0pK1EpLzY3MTA4ODY0fDAsUT02NzEwODg2MyZDO3gud29yZHNbcF09MHxRLHk9''@;'; put 'put ''MHxTfXJldHVybiAwIT09eT94LndvcmRzW3BdPTB8eTp4Lmxlbmd0aC0tLHguc3RyaXAoKX1ILnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihiLHgpe3ZhciBOO2lmKHg9MHx4fHwxLDE2PT09KGI9Ynx8MTApfHwiaGV4Ij09PWIpe049IiI7Zm9yKHZhciBGPTAsZz0wLEM9MDtDPHRoaXMu''@;'; put 'put ''bGVuZ3RoO0MrKyl7dmFyIE09dGhpcy53b3Jkc1tDXSx5PSgxNjc3NzIxNSYoTTw8RnxnKSkudG9TdHJpbmcoMTYpO049MCE9KGc9TT4+PjI0LUYmMTY3NzcyMTUpfHxDIT09dGhpcy5sZW5ndGgtMT9JWzYteS5sZW5ndGhdK3krTjp5K04sKEYrPTIpPj0yNiYmKEYtPTI2LEMtLSl9Zm9yKDAh''@;'; put 'put ''PT1nJiYoTj1nLnRvU3RyaW5nKDE2KStOKTtOLmxlbmd0aCV4IT0wOylOPSIwIitOO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKE49Ii0iK04pLE59aWYoYj09PSgwfGIpJiZiPj0yJiZiPD0zNil7dmFyIHA9UltiXSxTPUVbYl07Tj0iIjt2YXIgUT10aGlzLmNsb25lKCk7Zm9yKFEubmVn''@;'; put 'put ''YXRpdmU9MDshUS5pc1plcm8oKTspe3ZhciByZT1RLm1vZG4oUykudG9TdHJpbmcoYik7Tj0oUT1RLmlkaXZuKFMpKS5pc1plcm8oKT9yZStOOklbcC1yZS5sZW5ndGhdK3JlK059Zm9yKHRoaXMuaXNaZXJvKCkmJihOPSIwIitOKTtOLmxlbmd0aCV4IT0wOylOPSIwIitOO3JldHVybiAwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSYmKE49Ii0iK04pLE59dighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxILnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9iKz02NzEwODg2NCp0aGlzLndvcmRz''@;'; put 'put ''WzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Yis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJnYoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''Py1iOmJ9LEgucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sSC5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdih0eXBlb2YgQjwidSIpLHRoaXMudG9BcnJheUxpa2UoQixiLHgpfSxILnByb3RvdHlwZS50b0FycmF5''@;'; put 'put ''PWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksYix4KX0sSC5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oYix4LE4pe3ZhciBGPXRoaXMuYnl0ZUxlbmd0aCgpLGc9Tnx8TWF0aC5tYXgoMSxGKTt2KEY8PWcsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4g''@;'; put 'put ''ZGVzaXJlZCBsZW5ndGgiKSx2KGc+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciB5LHAsQz0ibGUiPT09eCxNPW5ldyBiKGcpLFM9dGhpcy5jbG9uZSgpO2lmKEMpe2ZvcihwPTA7IVMuaXNaZXJvKCk7cCsrKXk9Uy5hbmRsbigyNTUpLFMuaXVzaHJu''@;'; put 'put ''KDgpLE1bcF09eTtmb3IoO3A8ZztwKyspTVtwXT0wfWVsc2V7Zm9yKHA9MDtwPGctRjtwKyspTVtwXT0wO2ZvcihwPTA7IVMuaXNaZXJvKCk7cCsrKXk9Uy5hbmRsbigyNTUpLFMuaXVzaHJuKDgpLE1bZy1wLTFdPXl9cmV0dXJuIE19LEgucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHoz''@;'; put 'put ''Mj9mdW5jdGlvbihiKXtyZXR1cm4gMzItTWF0aC5jbHozMihiKX06ZnVuY3Rpb24oYil7dmFyIHg9YixOPTA7cmV0dXJuIHg+PTQwOTYmJihOKz0xMyx4Pj4+PTEzKSx4Pj02NCYmKE4rPTcseD4+Pj03KSx4Pj04JiYoTis9NCx4Pj4+PTQpLHg+PTImJihOKz0yLHg+Pj49MiksTit4fSxILnBy''@;'; put 'put ''b3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oYil7aWYoMD09PWIpcmV0dXJuIDI2O3ZhciB4PWIsTj0wO3JldHVybiA4MTkxJnh8fChOKz0xMyx4Pj4+PTEzKSwxMjcmeHx8KE4rPTcseD4+Pj03KSwxNSZ4fHwoTis9NCx4Pj4+PTQpLDMmeHx8KE4rPTIseD4+Pj0yKSwxJnh8fE4rKyxOfSxI''@;'; put 'put ''LnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKSt4fSxILnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJu''@;'; put 'put ''IDA7Zm9yKHZhciBiPTAseD0wO3g8dGhpcy5sZW5ndGg7eCsrKXt2YXIgTj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3hdKTtpZihiKz1OLDI2IT09TilicmVha31yZXR1cm4gYn0sSC5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRM''@;'; put 'put ''ZW5ndGgoKS84KX0sSC5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGIpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sSC5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGVzdG4oYi0x''@;'; put 'put ''KT90aGlzLm5vdG4oYikuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sSC5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEgucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxILnByb3RvdHlw''@;'; put 'put ''ZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxILnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8Yi5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIHg9MDt4PGIu''@;'; put 'put ''bGVuZ3RoO3grKyl0aGlzLndvcmRzW3hdPXRoaXMud29yZHNbeF18Yi53b3Jkc1t4XTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09KHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihiKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoYik6Yi5jbG9uZSgpLmlvcih0aGlzKX0sSC5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihiKTpiLmNs''@;'; put 'put ''b25lKCkuaXVvcih0aGlzKX0sSC5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oYil7dmFyIHg7eD10aGlzLmxlbmd0aD5iLmxlbmd0aD9iOnRoaXM7Zm9yKHZhciBOPTA7Tjx4Lmxlbmd0aDtOKyspdGhpcy53b3Jkc1tOXT10aGlzLndvcmRzW05dJmIud29yZHNbTl07cmV0dXJuIHRoaXMubGVu''@;'; put 'put ''Z3RoPXgubGVuZ3RoLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChiKX0sSC5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0''@;'; put 'put ''aD90aGlzLmNsb25lKCkuaWFuZChiKTpiLmNsb25lKCkuaWFuZCh0aGlzKX0sSC5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGIpOmIuY2xvbmUoKS5pdWFuZCh0aGlzKX0sSC5wcm90b3R5cGUuaXV4b3I9''@;'; put 'put ''ZnVuY3Rpb24oYil7dmFyIHgsTjt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oeD10aGlzLE49Yik6KHg9YixOPXRoaXMpO2Zvcih2YXIgRj0wO0Y8Ti5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09eC53b3Jkc1tGXV5OLndvcmRzW0ZdO2lmKHRoaXMhPT14KWZvcig7Rjx4Lmxlbmd0aDtGKyspdGhp''@;'; put 'put ''cy53b3Jkc1tGXT14LndvcmRzW0ZdO3JldHVybiB0aGlzLmxlbmd0aD14Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09KHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoYil9LEgucHJvdG90eXBlLnhvcj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoYik6Yi5jbG9uZSgpLml4b3IodGhpcyl9LEgucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihiKTpiLmNs''@;'; put 'put ''b25lKCkuaXV4b3IodGhpcyl9LEgucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgeD0wfE1hdGguY2VpbChiLzI2KSxOPWIlMjY7dGhpcy5fZXhwYW5kKHgpLE4+MCYmeC0tO2Zvcih2YXIgRj0wO0Y8eDtGKyspdGhpcy53b3Jkc1tG''@;'; put 'put ''XT02NzEwODg2MyZ+dGhpcy53b3Jkc1tGXTtyZXR1cm4gTj4wJiYodGhpcy53b3Jkc1tGXT1+dGhpcy53b3Jkc1tGXSY2NzEwODg2Mz4+MjYtTiksdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oYil9LEgucHJvdG90''@;'; put 'put ''eXBlLnNldG49ZnVuY3Rpb24oYix4KXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIE49Yi8yNnwwLEY9YiUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKE4rMSksdGhpcy53b3Jkc1tOXT14P3RoaXMud29yZHNbTl18MTw8Rjp0aGlzLndvcmRzW05dJn4oMTw8RiksdGhpcy5zdHJpcCgp''@;'; put 'put ''fSxILnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIpe3ZhciB4LE4sRjtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx4PXRoaXMuaXN1YihiKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVn''@;'; put 'put ''YXRpdmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiBiLm5lZ2F0aXZlPTAseD10aGlzLmlzdWIoYiksYi5uZWdhdGl2ZT0xLHguX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Yi5sZW5ndGg/KE49dGhpcyxGPWIpOihOPWIsRj10aGlzKTtmb3IodmFyIGc9MCxDPTA7QzxGLmxlbmd0aDtDKyspdGhp''@;'; put 'put ''cy53b3Jkc1tDXT02NzEwODg2MyYoeD0oMHxOLndvcmRzW0NdKSsoMHxGLndvcmRzW0NdKStnKSxnPXg+Pj4yNjtmb3IoOzAhPT1nJiZDPE4ubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJih4PSgwfE4ud29yZHNbQ10pK2cpLGc9eD4+PjI2O2lmKHRoaXMubGVuZ3RoPU4ubGVu''@;'; put 'put ''Z3RoLDAhPT1nKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWcsdGhpcy5sZW5ndGgrKztlbHNlIGlmKE4hPT10aGlzKWZvcig7QzxOLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT1OLndvcmRzW0NdO3JldHVybiB0aGlzfSxILnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYil7dmFyIHg7cmV0dXJu''@;'; put 'put ''IDAhPT1iLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oYi5uZWdhdGl2ZT0wLHg9dGhpcy5zdWIoYiksYi5uZWdhdGl2ZV49MSx4KTowPT09Yi5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx4PWIuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx4KTp0''@;'; put 'put ''aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChiKTpiLmNsb25lKCkuaWFkZCh0aGlzKX0sSC5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiKXtpZigwIT09Yi5uZWdhdGl2ZSl7Yi5uZWdhdGl2ZT0wO3ZhciB4PXRoaXMuaWFkZChiKTtyZXR1cm4gYi5uZWdhdGl2ZT0xLHgu''@;'; put 'put ''X25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIEYsZyxOPXRoaXMuY21wKGIpO2lmKDA9PT1OKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5n''@;'; put 'put ''dGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztOPjA/KEY9dGhpcyxnPWIpOihGPWIsZz10aGlzKTtmb3IodmFyIEM9MCxNPTA7TTxnLmxlbmd0aDtNKyspQz0oeD0oMHxGLndvcmRzW01dKS0oMHxnLndvcmRzW01dKStDKT4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ4O2Zvcig7MCE9PUMm''@;'; put 'put ''Jk08Ri5sZW5ndGg7TSsrKUM9KHg9KDB8Ri53b3Jkc1tNXSkrQyk+PjI2LHRoaXMud29yZHNbTV09NjcxMDg4NjMmeDtpZigwPT09QyYmTTxGLmxlbmd0aCYmRiE9PXRoaXMpZm9yKDtNPEYubGVuZ3RoO00rKyl0aGlzLndvcmRzW01dPUYud29yZHNbTV07cmV0dXJuIHRoaXMubGVuZ3RoPU1h''@;'; put 'put ''dGgubWF4KHRoaXMubGVuZ3RoLE0pLEYhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoYil9O3ZhciBWPWZ1bmN0aW9uKGIseCxOKXt2YXIgeSxwLFMsRj1iLndvcmRzLGc9''@;'; put 'put ''eC53b3JkcyxDPU4ud29yZHMsTT0wLFE9MHxGWzBdLHJlPTgxOTEmUSxmZT1RPj4+MTMsbWU9MHxGWzFdLGtlPTgxOTEmbWUsVGU9bWU+Pj4xMyxQZT0wfEZbMl0sRmU9ODE5MSZQZSxOZT1QZT4+PjEzLExlPTB8RlszXSxCZT04MTkxJkxlLEhlPUxlPj4+MTMsUWU9MHxGWzRdLG10PTgxOTEm''@;'; put 'put ''UWUsS2U9UWU+Pj4xMyx3ZT0wfEZbNV0sSWU9ODE5MSZ3ZSxPZT13ZT4+PjEzLGV0PTB8Rls2XSxudD04MTkxJmV0LHFlPWV0Pj4+MTMsaHQ9MHxGWzddLEVlPTgxOTEmaHQsRGU9aHQ+Pj4xMywkZT0wfEZbOF0sYXQ9ODE5MSYkZSxjdD0kZT4+PjEzLE90PTB8Rls5XSxQdD04MTkxJk90LEF0''@;'; put 'put ''PU90Pj4+MTMsSnQ9MHxnWzBdLG1uPTgxOTEmSnQsTnQ9SnQ+Pj4xMyxibj0wfGdbMV0sR249ODE5MSZibixvbj1ibj4+PjEzLCRuPTB8Z1syXSxObj04MTkxJiRuLHB0PSRuPj4+MTMscG49MHxnWzNdLGhuPTgxOTEmcG4sQ3Q9cG4+Pj4xMyxlbj0wfGdbNF0sX3Q9ODE5MSZlbixWdD1lbj4+''@;'; put 'put ''PjEzLF9uPTB8Z1s1XSxvdD04MTkxJl9uLEl0PV9uPj4+MTMsbm49MHxnWzZdLER0PTgxOTEmbm4sdnQ9bm4+Pj4xMyxHdD0wfGdbN10sTG49ODE5MSZHdCx6dD1HdD4+PjEzLE1uPTB8Z1s4XSxUbj04MTkxJk1uLHNuPU1uPj4+MTMsQm49MHxnWzldLEZuPTgxOTEmQm4scXQ9Qm4+Pj4xMztO''@;'; put 'put ''Lm5lZ2F0aXZlPWIubmVnYXRpdmVeeC5uZWdhdGl2ZSxOLmxlbmd0aD0xOTt2YXIgSG49KE0rKHk9TWF0aC5pbXVsKHJlLG1uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChyZSxOdCkpK01hdGguaW11bChmZSxtbil8MCkpPDwxMyl8MDtNPSgoUz1NYXRoLmltdWwoZmUsTnQpKSsocD4+''@;'; put 'put ''PjEzKXwwKSsoSG4+Pj4yNil8MCxIbiY9NjcxMDg4NjMseT1NYXRoLmltdWwoa2UsbW4pLHA9KHA9TWF0aC5pbXVsKGtlLE50KSkrTWF0aC5pbXVsKFRlLG1uKXwwLFM9TWF0aC5pbXVsKFRlLE50KTt2YXIgaWk9KE0rKHk9eStNYXRoLmltdWwocmUsR24pfDApfDApKygoODE5MSYocD0ocD1w''@;'; put 'put ''K01hdGguaW11bChyZSxvbil8MCkrTWF0aC5pbXVsKGZlLEduKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLG9uKXwwKSsocD4+PjEzKXwwKSsoaWk+Pj4yNil8MCxpaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoRmUsbW4pLHA9KHA9TWF0aC5pbXVsKEZlLE50KSkrTWF0aC5pbXVs''@;'; put 'put ''KE5lLG1uKXwwLFM9TWF0aC5pbXVsKE5lLE50KSx5PXkrTWF0aC5pbXVsKGtlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usb24pfDApK01hdGguaW11bChUZSxHbil8MCxTPVMrTWF0aC5pbXVsKFRlLG9uKXwwO3ZhciBjbj0oTSsoeT15K01hdGguaW11bChyZSxObil8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKHJlLHB0KXwwKStNYXRoLmltdWwoZmUsTm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUscHQpfDApKyhwPj4+MTMpfDApKyhjbj4+PjI2KXwwLGNuJj02NzEwODg2Myx5PU1hdGguaW11bChCZSxtbikscD0ocD1NYXRoLmltdWwoQmUsTnQpKStN''@;'; put 'put ''YXRoLmltdWwoSGUsbW4pfDAsUz1NYXRoLmltdWwoSGUsTnQpLHk9eStNYXRoLmltdWwoRmUsR24pfDAscD0ocD1wK01hdGguaW11bChGZSxvbil8MCkrTWF0aC5pbXVsKE5lLEduKXwwLFM9UytNYXRoLmltdWwoTmUsb24pfDAseT15K01hdGguaW11bChrZSxObil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKGtlLHB0KXwwKStNYXRoLmltdWwoVGUsTm4pfDAsUz1TK01hdGguaW11bChUZSxwdCl8MDt2YXIgam49KE0rKHk9eStNYXRoLmltdWwocmUsaG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSxDdCl8MCkrTWF0aC5pbXVsKGZlLGhuKXwwKSk8PDEzKXwwO009KChTPVMr''@;'; put 'put ''TWF0aC5pbXVsKGZlLEN0KXwwKSsocD4+PjEzKXwwKSsoam4+Pj4yNil8MCxqbiY9NjcxMDg4NjMseT1NYXRoLmltdWwobXQsbW4pLHA9KHA9TWF0aC5pbXVsKG10LE50KSkrTWF0aC5pbXVsKEtlLG1uKXwwLFM9TWF0aC5pbXVsKEtlLE50KSx5PXkrTWF0aC5pbXVsKEJlLEduKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoQmUsb24pfDApK01hdGguaW11bChIZSxHbil8MCxTPVMrTWF0aC5pbXVsKEhlLG9uKXwwLHk9eStNYXRoLmltdWwoRmUsTm4pfDAscD0ocD1wK01hdGguaW11bChGZSxwdCl8MCkrTWF0aC5pbXVsKE5lLE5uKXwwLFM9UytNYXRoLmltdWwoTmUscHQpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChrZSxobil8MCxwPShwPXArTWF0aC5pbXVsKGtlLEN0KXwwKStNYXRoLmltdWwoVGUsaG4pfDAsUz1TK01hdGguaW11bChUZSxDdCl8MDt2YXIgWHI9KE0rKHk9eStNYXRoLmltdWwocmUsX3QpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSxWdCl8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGZlLF90KXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLFZ0KXwwKSsocD4+PjEzKXwwKSsoWHI+Pj4yNil8MCxYciY9NjcxMDg4NjMseT1NYXRoLmltdWwoSWUsbW4pLHA9KHA9TWF0aC5pbXVsKEllLE50KSkrTWF0aC5pbXVsKE9lLG1uKXwwLFM9TWF0aC5pbXVsKE9lLE50KSx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKG10LEduKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsb24pfDApK01hdGguaW11bChLZSxHbil8MCxTPVMrTWF0aC5pbXVsKEtlLG9uKXwwLHk9eStNYXRoLmltdWwoQmUsTm4pfDAscD0ocD1wK01hdGguaW11bChCZSxwdCl8MCkrTWF0aC5pbXVsKEhlLE5uKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoSGUscHQpfDAseT15K01hdGguaW11bChGZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEZlLEN0KXwwKStNYXRoLmltdWwoTmUsaG4pfDAsUz1TK01hdGguaW11bChOZSxDdCl8MCx5PXkrTWF0aC5pbXVsKGtlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsVnQpfDApK01hdGgu''@;'; put 'put ''aW11bChUZSxfdCl8MCxTPVMrTWF0aC5pbXVsKFRlLFZ0KXwwO3ZhciB2aT0oTSsoeT15K01hdGguaW11bChyZSxvdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLEl0KXwwKStNYXRoLmltdWwoZmUsb3QpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsSXQpfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyh2aT4+PjI2KXwwLHZpJj02NzEwODg2Myx5PU1hdGguaW11bChudCxtbikscD0ocD1NYXRoLmltdWwobnQsTnQpKStNYXRoLmltdWwocWUsbW4pfDAsUz1NYXRoLmltdWwocWUsTnQpLHk9eStNYXRoLmltdWwoSWUsR24pfDAscD0ocD1wK01hdGguaW11bChJZSxvbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKE9lLEduKXwwLFM9UytNYXRoLmltdWwoT2Usb24pfDAseT15K01hdGguaW11bChtdCxObil8MCxwPShwPXArTWF0aC5pbXVsKG10LHB0KXwwKStNYXRoLmltdWwoS2UsTm4pfDAsUz1TK01hdGguaW11bChLZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEJlLGhuKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoQmUsQ3QpfDApK01hdGguaW11bChIZSxobil8MCxTPVMrTWF0aC5pbXVsKEhlLEN0KXwwLHk9eStNYXRoLmltdWwoRmUsX3QpfDAscD0ocD1wK01hdGguaW11bChGZSxWdCl8MCkrTWF0aC5pbXVsKE5lLF90KXwwLFM9UytNYXRoLmltdWwoTmUsVnQpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChrZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEl0KXwwKStNYXRoLmltdWwoVGUsb3QpfDAsUz1TK01hdGguaW11bChUZSxJdCl8MDt2YXIgRXI9KE0rKHk9eStNYXRoLmltdWwocmUsRHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSx2dCl8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGZlLER0KXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLHZ0KXwwKSsocD4+PjEzKXwwKSsoRXI+Pj4yNil8MCxFciY9NjcxMDg4NjMseT1NYXRoLmltdWwoRWUsbW4pLHA9KHA9TWF0aC5pbXVsKEVlLE50KSkrTWF0aC5pbXVsKERlLG1uKXwwLFM9TWF0aC5pbXVsKERlLE50KSx5''@;'; put 'put ''PXkrTWF0aC5pbXVsKG50LEduKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsb24pfDApK01hdGguaW11bChxZSxHbil8MCxTPVMrTWF0aC5pbXVsKHFlLG9uKXwwLHk9eStNYXRoLmltdWwoSWUsTm4pfDAscD0ocD1wK01hdGguaW11bChJZSxwdCl8MCkrTWF0aC5pbXVsKE9lLE5uKXwwLFM9UytN''@;'; put 'put ''YXRoLmltdWwoT2UscHQpfDAseT15K01hdGguaW11bChtdCxobil8MCxwPShwPXArTWF0aC5pbXVsKG10LEN0KXwwKStNYXRoLmltdWwoS2UsaG4pfDAsUz1TK01hdGguaW11bChLZSxDdCl8MCx5PXkrTWF0aC5pbXVsKEJlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsVnQpfDApK01hdGgu''@;'; put 'put ''aW11bChIZSxfdCl8MCxTPVMrTWF0aC5pbXVsKEhlLFZ0KXwwLHk9eStNYXRoLmltdWwoRmUsb3QpfDAscD0ocD1wK01hdGguaW11bChGZSxJdCl8MCkrTWF0aC5pbXVsKE5lLG90KXwwLFM9UytNYXRoLmltdWwoTmUsSXQpfDAseT15K01hdGguaW11bChrZSxEdCl8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKGtlLHZ0KXwwKStNYXRoLmltdWwoVGUsRHQpfDAsUz1TK01hdGguaW11bChUZSx2dCl8MDt2YXIgWWk9KE0rKHk9eStNYXRoLmltdWwocmUsTG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSx6dCl8MCkrTWF0aC5pbXVsKGZlLExuKXwwKSk8PDEzKXwwO009KChTPVMr''@;'; put 'put ''TWF0aC5pbXVsKGZlLHp0KXwwKSsocD4+PjEzKXwwKSsoWWk+Pj4yNil8MCxZaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoYXQsbW4pLHA9KHA9TWF0aC5pbXVsKGF0LE50KSkrTWF0aC5pbXVsKGN0LG1uKXwwLFM9TWF0aC5pbXVsKGN0LE50KSx5PXkrTWF0aC5pbXVsKEVlLEduKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoRWUsb24pfDApK01hdGguaW11bChEZSxHbil8MCxTPVMrTWF0aC5pbXVsKERlLG9uKXwwLHk9eStNYXRoLmltdWwobnQsTm4pfDAscD0ocD1wK01hdGguaW11bChudCxwdCl8MCkrTWF0aC5pbXVsKHFlLE5uKXwwLFM9UytNYXRoLmltdWwocWUscHQpfDAseT15K01hdGgu''@;'; put 'put ''aW11bChJZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEllLEN0KXwwKStNYXRoLmltdWwoT2UsaG4pfDAsUz1TK01hdGguaW11bChPZSxDdCl8MCx5PXkrTWF0aC5pbXVsKG10LF90KXwwLHA9KHA9cCtNYXRoLmltdWwobXQsVnQpfDApK01hdGguaW11bChLZSxfdCl8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KEtlLFZ0KXwwLHk9eStNYXRoLmltdWwoQmUsb3QpfDAscD0ocD1wK01hdGguaW11bChCZSxJdCl8MCkrTWF0aC5pbXVsKEhlLG90KXwwLFM9UytNYXRoLmltdWwoSGUsSXQpfDAseT15K01hdGguaW11bChGZSxEdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLHZ0KXwwKStNYXRoLmltdWwoTmUs''@;'; put 'put ''RHQpfDAsUz1TK01hdGguaW11bChOZSx2dCl8MCx5PXkrTWF0aC5pbXVsKGtlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsenQpfDApK01hdGguaW11bChUZSxMbil8MCxTPVMrTWF0aC5pbXVsKFRlLHp0KXwwO3ZhciBKcj0oTSsoeT15K01hdGguaW11bChyZSxUbil8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKHJlLHNuKXwwKStNYXRoLmltdWwoZmUsVG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsc24pfDApKyhwPj4+MTMpfDApKyhKcj4+PjI2KXwwLEpyJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxtbikscD0ocD1NYXRoLmltdWwoUHQsTnQpKStN''@;'; put 'put ''YXRoLmltdWwoQXQsbW4pfDAsUz1NYXRoLmltdWwoQXQsTnQpLHk9eStNYXRoLmltdWwoYXQsR24pfDAscD0ocD1wK01hdGguaW11bChhdCxvbil8MCkrTWF0aC5pbXVsKGN0LEduKXwwLFM9UytNYXRoLmltdWwoY3Qsb24pfDAseT15K01hdGguaW11bChFZSxObil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKEVlLHB0KXwwKStNYXRoLmltdWwoRGUsTm4pfDAsUz1TK01hdGguaW11bChEZSxwdCl8MCx5PXkrTWF0aC5pbXVsKG50LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsQ3QpfDApK01hdGguaW11bChxZSxobil8MCxTPVMrTWF0aC5pbXVsKHFlLEN0KXwwLHk9eStNYXRoLmltdWwoSWUs''@;'; put 'put ''X3QpfDAscD0ocD1wK01hdGguaW11bChJZSxWdCl8MCkrTWF0aC5pbXVsKE9lLF90KXwwLFM9UytNYXRoLmltdWwoT2UsVnQpfDAseT15K01hdGguaW11bChtdCxvdCl8MCxwPShwPXArTWF0aC5pbXVsKG10LEl0KXwwKStNYXRoLmltdWwoS2Usb3QpfDAsUz1TK01hdGguaW11bChLZSxJdCl8''@;'; put 'put ''MCx5PXkrTWF0aC5pbXVsKEJlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsdnQpfDApK01hdGguaW11bChIZSxEdCl8MCxTPVMrTWF0aC5pbXVsKEhlLHZ0KXwwLHk9eStNYXRoLmltdWwoRmUsTG4pfDAscD0ocD1wK01hdGguaW11bChGZSx6dCl8MCkrTWF0aC5pbXVsKE5lLExuKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoTmUsenQpfDAseT15K01hdGguaW11bChrZSxUbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHNuKXwwKStNYXRoLmltdWwoVGUsVG4pfDAsUz1TK01hdGguaW11bChUZSxzbil8MDt2YXIgYW89KE0rKHk9eStNYXRoLmltdWwocmUsRm4pfDApfDApKygoODE5MSYocD0ocD1w''@;'; put 'put ''K01hdGguaW11bChyZSxxdCl8MCkrTWF0aC5pbXVsKGZlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLHF0KXwwKSsocD4+PjEzKXwwKSsoYW8+Pj4yNil8MCxhbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsR24pLHA9KHA9TWF0aC5pbXVsKFB0LG9uKSkrTWF0aC5pbXVs''@;'; put 'put ''KEF0LEduKXwwLFM9TWF0aC5pbXVsKEF0LG9uKSx5PXkrTWF0aC5pbXVsKGF0LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoYXQscHQpfDApK01hdGguaW11bChjdCxObil8MCxTPVMrTWF0aC5pbXVsKGN0LHB0KXwwLHk9eStNYXRoLmltdWwoRWUsaG4pfDAscD0ocD1wK01hdGguaW11bChFZSxD''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKERlLGhuKXwwLFM9UytNYXRoLmltdWwoRGUsQ3QpfDAseT15K01hdGguaW11bChudCxfdCl8MCxwPShwPXArTWF0aC5pbXVsKG50LFZ0KXwwKStNYXRoLmltdWwocWUsX3QpfDAsUz1TK01hdGguaW11bChxZSxWdCl8MCx5PXkrTWF0aC5pbXVsKEllLG90KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoSWUsSXQpfDApK01hdGguaW11bChPZSxvdCl8MCxTPVMrTWF0aC5pbXVsKE9lLEl0KXwwLHk9eStNYXRoLmltdWwobXQsRHQpfDAscD0ocD1wK01hdGguaW11bChtdCx2dCl8MCkrTWF0aC5pbXVsKEtlLER0KXwwLFM9UytNYXRoLmltdWwoS2UsdnQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChCZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHp0KXwwKStNYXRoLmltdWwoSGUsTG4pfDAsUz1TK01hdGguaW11bChIZSx6dCl8MCx5PXkrTWF0aC5pbXVsKEZlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsc24pfDApK01hdGguaW11bChOZSxUbil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKE5lLHNuKXwwO3ZhciBCcj0oTSsoeT15K01hdGguaW11bChrZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGtlLHF0KXwwKStNYXRoLmltdWwoVGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoVGUscXQpfDApKyhwPj4+MTMpfDApKyhCcj4+PjI2KXww''@;'; put 'put ''LEJyJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxObikscD0ocD1NYXRoLmltdWwoUHQscHQpKStNYXRoLmltdWwoQXQsTm4pfDAsUz1NYXRoLmltdWwoQXQscHQpLHk9eStNYXRoLmltdWwoYXQsaG4pfDAscD0ocD1wK01hdGguaW11bChhdCxDdCl8MCkrTWF0aC5pbXVsKGN0LGhuKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoY3QsQ3QpfDAseT15K01hdGguaW11bChFZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLFZ0KXwwKStNYXRoLmltdWwoRGUsX3QpfDAsUz1TK01hdGguaW11bChEZSxWdCl8MCx5PXkrTWF0aC5pbXVsKG50LG90KXwwLHA9KHA9cCtNYXRoLmltdWwobnQsSXQpfDApK01h''@;'; put 'put ''dGguaW11bChxZSxvdCl8MCxTPVMrTWF0aC5pbXVsKHFlLEl0KXwwLHk9eStNYXRoLmltdWwoSWUsRHQpfDAscD0ocD1wK01hdGguaW11bChJZSx2dCl8MCkrTWF0aC5pbXVsKE9lLER0KXwwLFM9UytNYXRoLmltdWwoT2UsdnQpfDAseT15K01hdGguaW11bChtdCxMbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKG10LHp0KXwwKStNYXRoLmltdWwoS2UsTG4pfDAsUz1TK01hdGguaW11bChLZSx6dCl8MCx5PXkrTWF0aC5pbXVsKEJlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsc24pfDApK01hdGguaW11bChIZSxUbil8MCxTPVMrTWF0aC5pbXVsKEhlLHNuKXwwO3ZhciBKaT0oTSsoeT15''@;'; put 'put ''K01hdGguaW11bChGZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEZlLHF0KXwwKStNYXRoLmltdWwoTmUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoTmUscXQpfDApKyhwPj4+MTMpfDApKyhKaT4+PjI2KXwwLEppJj02NzEwODg2Myx5PU1hdGguaW11bChQ''@;'; put 'put ''dCxobikscD0ocD1NYXRoLmltdWwoUHQsQ3QpKStNYXRoLmltdWwoQXQsaG4pfDAsUz1NYXRoLmltdWwoQXQsQ3QpLHk9eStNYXRoLmltdWwoYXQsX3QpfDAscD0ocD1wK01hdGguaW11bChhdCxWdCl8MCkrTWF0aC5pbXVsKGN0LF90KXwwLFM9UytNYXRoLmltdWwoY3QsVnQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChFZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLEl0KXwwKStNYXRoLmltdWwoRGUsb3QpfDAsUz1TK01hdGguaW11bChEZSxJdCl8MCx5PXkrTWF0aC5pbXVsKG50LER0KXwwLHA9KHA9cCtNYXRoLmltdWwobnQsdnQpfDApK01hdGguaW11bChxZSxEdCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHFlLHZ0KXwwLHk9eStNYXRoLmltdWwoSWUsTG4pfDAscD0ocD1wK01hdGguaW11bChJZSx6dCl8MCkrTWF0aC5pbXVsKE9lLExuKXwwLFM9UytNYXRoLmltdWwoT2UsenQpfDAseT15K01hdGguaW11bChtdCxUbil8MCxwPShwPXArTWF0aC5pbXVsKG10LHNuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''S2UsVG4pfDAsUz1TK01hdGguaW11bChLZSxzbil8MDt2YXIgdG89KE0rKHk9eStNYXRoLmltdWwoQmUsRm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChCZSxxdCl8MCkrTWF0aC5pbXVsKEhlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKEhlLHF0KXwwKSsocD4+''@;'; put 'put ''PjEzKXwwKSsodG8+Pj4yNil8MCx0byY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsX3QpLHA9KHA9TWF0aC5pbXVsKFB0LFZ0KSkrTWF0aC5pbXVsKEF0LF90KXwwLFM9TWF0aC5pbXVsKEF0LFZ0KSx5PXkrTWF0aC5pbXVsKGF0LG90KXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsSXQpfDApK01h''@;'; put 'put ''dGguaW11bChjdCxvdCl8MCxTPVMrTWF0aC5pbXVsKGN0LEl0KXwwLHk9eStNYXRoLmltdWwoRWUsRHQpfDAscD0ocD1wK01hdGguaW11bChFZSx2dCl8MCkrTWF0aC5pbXVsKERlLER0KXwwLFM9UytNYXRoLmltdWwoRGUsdnQpfDAseT15K01hdGguaW11bChudCxMbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKG50LHp0KXwwKStNYXRoLmltdWwocWUsTG4pfDAsUz1TK01hdGguaW11bChxZSx6dCl8MCx5PXkrTWF0aC5pbXVsKEllLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsc24pfDApK01hdGguaW11bChPZSxUbil8MCxTPVMrTWF0aC5pbXVsKE9lLHNuKXwwO3ZhciBjbz0oTSsoeT15''@;'; put 'put ''K01hdGguaW11bChtdCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG10LHF0KXwwKStNYXRoLmltdWwoS2UsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoS2UscXQpfDApKyhwPj4+MTMpfDApKyhjbz4+PjI2KXwwLGNvJj02NzEwODg2Myx5PU1hdGguaW11bChQ''@;'; put 'put ''dCxvdCkscD0ocD1NYXRoLmltdWwoUHQsSXQpKStNYXRoLmltdWwoQXQsb3QpfDAsUz1NYXRoLmltdWwoQXQsSXQpLHk9eStNYXRoLmltdWwoYXQsRHQpfDAscD0ocD1wK01hdGguaW11bChhdCx2dCl8MCkrTWF0aC5pbXVsKGN0LER0KXwwLFM9UytNYXRoLmltdWwoY3QsdnQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChFZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHp0KXwwKStNYXRoLmltdWwoRGUsTG4pfDAsUz1TK01hdGguaW11bChEZSx6dCl8MCx5PXkrTWF0aC5pbXVsKG50LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsc24pfDApK01hdGguaW11bChxZSxUbil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKHFlLHNuKXwwO3ZhciBsbz0oTSsoeT15K01hdGguaW11bChJZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEllLHF0KXwwKStNYXRoLmltdWwoT2UsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoT2UscXQpfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXww''@;'; put 'put ''LGxvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxEdCkscD0ocD1NYXRoLmltdWwoUHQsdnQpKStNYXRoLmltdWwoQXQsRHQpfDAsUz1NYXRoLmltdWwoQXQsdnQpLHk9eStNYXRoLmltdWwoYXQsTG4pfDAscD0ocD1wK01hdGguaW11bChhdCx6dCl8MCkrTWF0aC5pbXVsKGN0LExuKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoY3QsenQpfDAseT15K01hdGguaW11bChFZSxUbil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHNuKXwwKStNYXRoLmltdWwoRGUsVG4pfDAsUz1TK01hdGguaW11bChEZSxzbil8MDt2YXIgc289KE0rKHk9eStNYXRoLmltdWwobnQsRm4pfDApfDApKygoODE5MSYocD0ocD1w''@;'; put 'put ''K01hdGguaW11bChudCxxdCl8MCkrTWF0aC5pbXVsKHFlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKHFlLHF0KXwwKSsocD4+PjEzKXwwKSsoc28+Pj4yNil8MCxzbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsTG4pLHA9KHA9TWF0aC5pbXVsKFB0LHp0KSkrTWF0aC5pbXVs''@;'; put 'put ''KEF0LExuKXwwLFM9TWF0aC5pbXVsKEF0LHp0KSx5PXkrTWF0aC5pbXVsKGF0LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsc24pfDApK01hdGguaW11bChjdCxUbil8MCxTPVMrTWF0aC5pbXVsKGN0LHNuKXwwO3ZhciBYaT0oTSsoeT15K01hdGguaW11bChFZSxGbil8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKEVlLHF0KXwwKStNYXRoLmltdWwoRGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoRGUscXQpfDApKyhwPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxUbikscD0ocD1NYXRoLmltdWwoUHQsc24pKStN''@;'; put 'put ''YXRoLmltdWwoQXQsVG4pfDAsUz1NYXRoLmltdWwoQXQsc24pO3ZhciBwbz0oTSsoeT15K01hdGguaW11bChhdCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGF0LHF0KXwwKStNYXRoLmltdWwoY3QsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoY3QscXQpfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhwbz4+PjI2KXwwLHBvJj02NzEwODg2Mzt2YXIgX3I9KE0rKHk9TWF0aC5pbXVsKFB0LEZuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChQdCxxdCkpK01hdGguaW11bChBdCxGbil8MCkpPDwxMyl8MDtyZXR1cm4gTT0oKFM9TWF0aC5pbXVsKEF0LHF0KSkrKHA+''@;'; put 'put ''Pj4xMyl8MCkrKF9yPj4+MjYpfDAsX3ImPTY3MTA4ODYzLENbMF09SG4sQ1sxXT1paSxDWzJdPWNuLENbM109am4sQ1s0XT1YcixDWzVdPXZpLENbNl09RXIsQ1s3XT1ZaSxDWzhdPUpyLENbOV09YW8sQ1sxMF09QnIsQ1sxMV09SmksQ1sxMl09dG8sQ1sxM109Y28sQ1sxNF09bG8sQ1sxNV09''@;'; put 'put ''c28sQ1sxNl09WGksQ1sxN109cG8sQ1sxOF09X3IsMCE9PU0mJihDWzE5XT1NLE4ubGVuZ3RoKyspLE59O2Z1bmN0aW9uIFcoWSxiLHgpe3JldHVybihuZXcgVSkubXVscChZLGIseCl9ZnVuY3Rpb24gVShZLGIpe3RoaXMueD1ZLHRoaXMueT1ifU1hdGguaW11bHx8KFY9aiksSC5wcm90b3R5''@;'; put 'put ''cGUubXVsVG89ZnVuY3Rpb24oYix4KXt2YXIgTixGPXRoaXMubGVuZ3RoK2IubGVuZ3RoO3JldHVybiBOPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Yi5sZW5ndGg/Vih0aGlzLGIseCk6Rjw2Mz9qKHRoaXMsYix4KTpGPDEwMjQ/ZnVuY3Rpb24gRyhZLGIseCl7eC5uZWdhdGl2ZT1iLm5lZ2F0''@;'; put 'put ''aXZlXlkubmVnYXRpdmUseC5sZW5ndGg9WS5sZW5ndGgrYi5sZW5ndGg7Zm9yKHZhciBOPTAsRj0wLGc9MDtnPHgubGVuZ3RoLTE7ZysrKXt2YXIgQz1GO0Y9MDtmb3IodmFyIE09NjcxMDg4NjMmTix5PU1hdGgubWluKGcsYi5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGctWS5sZW5ndGgrMSk7''@;'; put 'put ''cDw9eTtwKyspe3ZhciBmZT0oMHxZLndvcmRzW2ctcF0pKigwfGIud29yZHNbcF0pLG1lPTY3MTA4ODYzJmZlO009NjcxMDg4NjMmKG1lPW1lK018MCksRis9KEM9KEM9QysoZmUvNjcxMDg4NjR8MCl8MCkrKG1lPj4+MjYpfDApPj4+MjYsQyY9NjcxMDg4NjN9eC53b3Jkc1tnXT1NLE49QyxD''@;'; put 'put ''PUZ9cmV0dXJuIDAhPT1OP3gud29yZHNbZ109Tjp4Lmxlbmd0aC0tLHguc3RyaXAoKX0odGhpcyxiLHgpOlcodGhpcyxiLHgpLE59LFUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PW5ldyBBcnJheShiKSxOPUgucHJvdG90eXBlLl9jb3VudEJpdHMoYiktMSxGPTA7''@;'; put 'put ''RjxiO0YrKyl4W0ZdPXRoaXMucmV2QmluKEYsTixiKTtyZXR1cm4geH0sVS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGIseCxOKXtpZigwPT09Ynx8Yj09PU4tMSlyZXR1cm4gYjtmb3IodmFyIEY9MCxnPTA7Zzx4O2crKylGfD0oMSZiKTw8eC1nLTEsYj4+PTE7cmV0dXJuIEZ9LFUucHJv''@;'; put 'put ''dG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oYix4LE4sRixnLEMpe2Zvcih2YXIgTT0wO008QztNKyspRltNXT14W2JbTV1dLGdbTV09TltiW01dXX0sVS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGIseCxOLEYsZyxDKXt0aGlzLnBlcm11dGUoQyxiLHgsTixGLGcpO2Zvcih2YXIgTT0x''@;'; put 'put ''O008ZztNPDw9MSlmb3IodmFyIHk9TTw8MSxwPU1hdGguY29zKDIqTWF0aC5QSS95KSxTPU1hdGguc2luKDIqTWF0aC5QSS95KSxRPTA7UTxnO1ErPXkpZm9yKHZhciByZT1wLGZlPVMsbWU9MDttZTxNO21lKyspe3ZhciBrZT1OW1ErbWVdLFRlPUZbUSttZV0sUGU9TltRK21lK01dLEZlPUZb''@;'; put 'put ''USttZStNXSxOZT1yZSpQZS1mZSpGZTtGZT1yZSpGZStmZSpQZSxOW1ErbWVdPWtlKyhQZT1OZSksRltRK21lXT1UZStGZSxOW1ErbWUrTV09a2UtUGUsRltRK21lK01dPVRlLUZlLG1lIT09eSYmKE5lPXAqcmUtUypmZSxmZT1wKmZlK1MqcmUscmU9TmUpfX0sVS5wcm90b3R5cGUuZ3Vlc3NM''@;'; put 'put ''ZW4xM2I9ZnVuY3Rpb24oYix4KXt2YXIgTj0xfE1hdGgubWF4KHgsYiksRj0xJk4sZz0wO2ZvcihOPU4vMnwwO047Tj4+Pj0xKWcrKztyZXR1cm4gMTw8ZysxK0Z9LFUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihiLHgsTil7aWYoIShOPD0xKSlmb3IodmFyIEY9MDtGPE4vMjtGKysp''@;'; put 'put ''e3ZhciBnPWJbRl07YltGXT1iW04tRi0xXSxiW04tRi0xXT1nLGc9eFtGXSx4W0ZdPS14W04tRi0xXSx4W04tRi0xXT0tZ319LFUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihiLHgpe2Zvcih2YXIgTj0wLEY9MDtGPHgvMjtGKyspe3ZhciBnPTgxOTIqTWF0aC5yb3VuZChiWzIq''@;'; put 'put ''RisxXS94KStNYXRoLnJvdW5kKGJbMipGXS94KStOO2JbRl09NjcxMDg4NjMmZyxOPWc8NjcxMDg4NjQ/MDpnLzY3MTA4ODY0fDB9cmV0dXJuIGJ9LFUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oYix4LE4sRil7Zm9yKHZhciBnPTAsQz0wO0M8eDtDKyspTlsyKkNdPTgxOTEmKGcr''@;'; put 'put ''PTB8YltDXSksTlsyKkMrMV09ODE5MSYoZz4+Pj0xMyksZz4+Pj0xMztmb3IoQz0yKng7QzxGOysrQylOW0NdPTA7digwPT09ZyksdigwPT0oLTgxOTImZykpfSxVLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKGIpe2Zvcih2YXIgeD1uZXcgQXJyYXkoYiksTj0wO048YjtOKyspeFtOXT0wO3Jl''@;'; put 'put ''dHVybiB4fSxVLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGIseCxOKXt2YXIgRj0yKnRoaXMuZ3Vlc3NMZW4xM2IoYi5sZW5ndGgseC5sZW5ndGgpLGc9dGhpcy5tYWtlUkJUKEYpLEM9dGhpcy5zdHViKEYpLE09bmV3IEFycmF5KEYpLHk9bmV3IEFycmF5KEYpLHA9bmV3IEFycmF5KEYpLFM9''@;'; put 'put ''bmV3IEFycmF5KEYpLFE9bmV3IEFycmF5KEYpLHJlPW5ldyBBcnJheShGKSxmZT1OLndvcmRzO2ZlLmxlbmd0aD1GLHRoaXMuY29udmVydDEzYihiLndvcmRzLGIubGVuZ3RoLE0sRiksdGhpcy5jb252ZXJ0MTNiKHgud29yZHMseC5sZW5ndGgsUyxGKSx0aGlzLnRyYW5zZm9ybShNLEMseSxw''@;'; put 'put ''LEYsZyksdGhpcy50cmFuc2Zvcm0oUyxDLFEscmUsRixnKTtmb3IodmFyIG1lPTA7bWU8RjttZSsrKXt2YXIga2U9eVttZV0qUVttZV0tcFttZV0qcmVbbWVdO3BbbWVdPXlbbWVdKnJlW21lXStwW21lXSpRW21lXSx5W21lXT1rZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoeSxwLEYpLHRoaXMu''@;'; put 'put ''dHJhbnNmb3JtKHkscCxmZSxDLEYsZyksdGhpcy5jb25qdWdhdGUoZmUsQyxGKSx0aGlzLm5vcm1hbGl6ZTEzYihmZSxGKSxOLm5lZ2F0aXZlPWIubmVnYXRpdmVeeC5uZWdhdGl2ZSxOLmxlbmd0aD1iLmxlbmd0aCt4Lmxlbmd0aCxOLnN0cmlwKCl9LEgucHJvdG90eXBlLm11bD1mdW5jdGlv''@;'; put 'put ''bihiKXt2YXIgeD1uZXcgSChudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrYi5sZW5ndGgpLHRoaXMubXVsVG8oYix4KX0sSC5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihiKXt2YXIgeD1uZXcgSChudWxsKTtyZXR1cm4geC53b3Jkcz1uZXcgQXJyYXkodGhpcy5s''@;'; put 'put ''ZW5ndGgrYi5sZW5ndGgpLFcodGhpcyxiLHgpfSxILnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oYix0aGlzKX0sSC5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGIpLHYoYjw2NzEwODg2NCk7Zm9yKHZh''@;'; put 'put ''ciB4PTAsTj0wO048dGhpcy5sZW5ndGg7TisrKXt2YXIgRj0oMHx0aGlzLndvcmRzW05dKSpiLGc9KDY3MTA4ODYzJkYpKyg2NzEwODg2MyZ4KTt4Pj49MjYseCs9Ri82NzEwODg2NHwwLHgrPWc+Pj4yNix0aGlzLndvcmRzW05dPTY3MTA4ODYzJmd9cmV0dXJuIDAhPT14JiYodGhpcy53b3Jk''@;'; put 'put ''c1tOXT14LHRoaXMubGVuZ3RoKyspLHRoaXN9LEgucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihiKX0sSC5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxILnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxILnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oYil7dmFyIHg9ZnVuY3Rpb24geihZKXtmb3IodmFyIGI9bmV3IEFycmF5KFkuYml0TGVuZ3RoKCkpLHg9MDt4PGIubGVuZ3RoO3grKyl7dmFyIEY9eCUyNjtiW3hdPShZLndvcmRzW3gvMjZ8''@;'; put 'put ''MF0mMTw8Rik+Pj5GfXJldHVybiBifShiKTtpZigwPT09eC5sZW5ndGgpcmV0dXJuIG5ldyBIKDEpO2Zvcih2YXIgTj10aGlzLEY9MDtGPHgubGVuZ3RoJiYwPT09eFtGXTtGKyssTj1OLnNxcigpKTtpZigrK0Y8eC5sZW5ndGgpZm9yKHZhciBnPU4uc3FyKCk7Rjx4Lmxlbmd0aDtGKyssZz1n''@;'; put 'put ''LnNxcigpKTAhPT14W0ZdJiYoTj1OLm11bChnKSk7cmV0dXJuIE59LEgucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIGcseD1iJTI2LE49KGIteCkvMjYsRj02NzEwODg2Mz4+PjI2LXg8PDI2LXg7aWYoMCE9PXgpe3ZhciBDPTA7''@;'; put 'put ''Zm9yKGc9MDtnPHRoaXMubGVuZ3RoO2crKyl7dmFyIE09dGhpcy53b3Jkc1tnXSZGO3RoaXMud29yZHNbZ109KDB8dGhpcy53b3Jkc1tnXSktTTw8eHxDLEM9TT4+PjI2LXh9QyYmKHRoaXMud29yZHNbZ109Qyx0aGlzLmxlbmd0aCsrKX1pZigwIT09Til7Zm9yKGc9dGhpcy5sZW5ndGgtMTtn''@;'; put 'put ''Pj0wO2ctLSl0aGlzLndvcmRzW2crTl09dGhpcy53b3Jkc1tnXTtmb3IoZz0wO2c8TjtnKyspdGhpcy53b3Jkc1tnXT0wO3RoaXMubGVuZ3RoKz1OfXJldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlKSx0''@;'; put 'put ''aGlzLml1c2hsbihiKX0sSC5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKGIseCxOKXt2YXIgRjt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCksRj14Pyh4LXglMjYpLzI2OjA7dmFyIGc9YiUyNixDPU1hdGgubWluKChiLWcpLzI2LHRoaXMubGVuZ3RoKSxNPTY3MTA4ODYzXjY3MTA4ODYz''@;'; put 'put ''Pj4+Zzw8Zyx5PU47aWYoRi09QyxGPU1hdGgubWF4KDAsRikseSl7Zm9yKHZhciBwPTA7cDxDO3ArKyl5LndvcmRzW3BdPXRoaXMud29yZHNbcF07eS5sZW5ndGg9Q31pZigwIT09QylpZih0aGlzLmxlbmd0aD5DKWZvcih0aGlzLmxlbmd0aC09QyxwPTA7cDx0aGlzLmxlbmd0aDtwKyspdGhp''@;'; put 'put ''cy53b3Jkc1twXT10aGlzLndvcmRzW3ArQ107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgUz0wO2ZvcihwPXRoaXMubGVuZ3RoLTE7cD49MCYmKDAhPT1TfHxwPj1GKTtwLS0pe3ZhciBRPTB8dGhpcy53b3Jkc1twXTt0aGlzLndvcmRzW3BdPVM8PDI2LWd8UT4+Pmcs''@;'; put 'put ''Uz1RJk19cmV0dXJuIHkmJjAhPT1TJiYoeS53b3Jkc1t5Lmxlbmd0aCsrXT1TKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihiLHgsTil7cmV0dXJuIHYoMD09PXRoaXMubmVn''@;'; put 'put ''YXRpdmUpLHRoaXMuaXVzaHJuKGIseCxOKX0sSC5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGIpfSxILnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiKX0sSC5wcm90b3R5cGUuc2hybj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGIpfSxILnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiKX0sSC5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciB4''@;'; put 'put ''PWIlMjYsTj0oYi14KS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1OfHwhKHRoaXMud29yZHNbTl0mMTw8eCkpfSxILnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciB4PWIlMjYsTj0oYi14KS8yNjtyZXR1cm4gdigwPT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PU4/dGhpczooMCE9PXgmJk4rKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihOLHRoaXMubGVuZ3RoKSwwIT09eCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3''@;'; put 'put ''MTA4ODYzPj4+eDw8eCksdGhpcy5zdHJpcCgpKX0sSC5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYil9LEgucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4ODY0KSxi''@;'; put 'put ''PDA/dGhpcy5pc3VibigtYik6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxiPyh0aGlzLndvcmRzWzBdPWItKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihiKSx0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oYil9LEgucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihiKXt0aGlzLndvcmRzWzBdKz1iO2Zvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbeF0+PTY3MTA4ODY0O3grKyl0aGlzLndvcmRzW3hdLT02NzEwODg2NCx4PT09''@;'; put 'put ''dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW3grMV09MTp0aGlzLndvcmRzW3grMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgseCsxKSx0aGlzfSxILnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihiKXtpZih2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4''@;'; put 'put ''ODY0KSxiPDApcmV0dXJuIHRoaXMuaWFkZG4oLWIpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1iLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRo''@;'; put 'put ''aXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciB4PTA7eDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t4XTwwO3grKyl0aGlzLndvcmRzW3hdKz02NzEwODg2NCx0aGlzLndvcmRzW3grMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGIpfSxILnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oYil9LEgucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRo''@;'; put 'put ''aXN9LEgucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxILnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oYix4LE4pe3ZhciBnO3RoaXMuX2V4cGFuZChiLmxlbmd0aCtOKTt2YXIgQyxNPTA7Zm9yKGc9MDtnPGIubGVuZ3RoO2crKyl7''@;'; put 'put ''Qz0oMHx0aGlzLndvcmRzW2crTl0pK007dmFyIHk9KDB8Yi53b3Jkc1tnXSkqeDtNPSgoQy09NjcxMDg4NjMmeSk+PjI2KS0oeS82NzEwODg2NHwwKSx0aGlzLndvcmRzW2crTl09NjcxMDg4NjMmQ31mb3IoO2c8dGhpcy5sZW5ndGgtTjtnKyspTT0oQz0oMHx0aGlzLndvcmRzW2crTl0pK00p''@;'; put 'put ''Pj4yNix0aGlzLndvcmRzW2crTl09NjcxMDg4NjMmQztpZigwPT09TSlyZXR1cm4gdGhpcy5zdHJpcCgpO2Zvcih2KC0xPT09TSksTT0wLGc9MDtnPHRoaXMubGVuZ3RoO2crKylNPShDPS0oMHx0aGlzLndvcmRzW2ddKStNKT4+MjYsdGhpcy53b3Jkc1tnXT02NzEwODg2MyZDO3JldHVybiB0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihiLHgpe3ZhciBOLEY9dGhpcy5jbG9uZSgpLGc9YixDPTB8Zy53b3Jkc1tnLmxlbmd0aC0xXTswIT0oTj0yNi10aGlzLl9jb3VudEJpdHMoQykpJiYoZz1nLnVzaGxuKE4pLEYuaXVzaGxu''@;'; put 'put ''KE4pLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdKTt2YXIgcCx5PUYubGVuZ3RoLWcubGVuZ3RoO2lmKCJtb2QiIT09eCl7KHA9bmV3IEgobnVsbCkpLmxlbmd0aD15KzEscC53b3Jkcz1uZXcgQXJyYXkocC5sZW5ndGgpO2Zvcih2YXIgUz0wO1M8cC5sZW5ndGg7UysrKXAud29yZHNbU109MH12''@;'; put 'put ''YXIgUT1GLmNsb25lKCkuX2lzaGxuc3VibXVsKGcsMSx5KTswPT09US5uZWdhdGl2ZSYmKEY9USxwJiYocC53b3Jkc1t5XT0xKSk7Zm9yKHZhciByZT15LTE7cmU+PTA7cmUtLSl7dmFyIGZlPTY3MTA4ODY0KigwfEYud29yZHNbZy5sZW5ndGgrcmVdKSsoMHxGLndvcmRzW2cubGVuZ3RoK3Jl''@;'; put 'put ''LTFdKTtmb3IoZmU9TWF0aC5taW4oZmUvQ3wwLDY3MTA4ODYzKSxGLl9pc2hsbnN1Ym11bChnLGZlLHJlKTswIT09Ri5uZWdhdGl2ZTspZmUtLSxGLm5lZ2F0aXZlPTAsRi5faXNobG5zdWJtdWwoZywxLHJlKSxGLmlzWmVybygpfHwoRi5uZWdhdGl2ZV49MSk7cCYmKHAud29yZHNbcmVdPWZl''@;'; put 'put ''KX1yZXR1cm4gcCYmcC5zdHJpcCgpLEYuc3RyaXAoKSwiZGl2IiE9PXgmJjAhPT1OJiZGLml1c2hybihOKSx7ZGl2OnB8fG51bGwsbW9kOkZ9fSxILnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oYix4LE4pe3JldHVybiB2KCFiLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IEgo''@;'; put 'put ''MCksbW9kOm5ldyBIKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmU/KEM9dGhpcy5uZWcoKS5kaXZtb2QoYix4KSwibW9kIiE9PXgmJihGPUMuZGl2Lm5lZygpKSwiZGl2IiE9PXgmJihnPUMubW9kLm5lZygpLE4mJjAhPT1nLm5lZ2F0aXZlJiZnLmlhZGQoYikpLHtkaXY6''@;'; put 'put ''Rixtb2Q6Z30pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZT8oQz10aGlzLmRpdm1vZChiLm5lZygpLHgpLCJtb2QiIT09eCYmKEY9Qy5kaXYubmVnKCkpLHtkaXY6Rixtb2Q6Qy5tb2R9KTp0aGlzLm5lZ2F0aXZlJmIubmVnYXRpdmU/KEM9dGhpcy5uZWcoKS5kaXZtb2QoYi5u''@;'; put 'put ''ZWcoKSx4KSwiZGl2IiE9PXgmJihnPUMubW9kLm5lZygpLE4mJjAhPT1nLm5lZ2F0aXZlJiZnLmlzdWIoYikpLHtkaXY6Qy5kaXYsbW9kOmd9KTpiLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoYik8MD97ZGl2Om5ldyBIKDApLG1vZDp0aGlzfToxPT09Yi5sZW5ndGg/ImRpdiI9PT14''@;'; put 'put ''P3tkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PXg/e2RpdjpudWxsLG1vZDpuZXcgSCh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bmV3IEgodGhpcy5tb2RuKGIud29yZHNbMF0pKX06dGhpcy5fd29yZERp''@;'; put 'put ''dihiLHgpO3ZhciBGLGcsQ30sSC5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJkaXYiLCExKS5kaXZ9LEgucHJvdG90eXBlLm1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwibW9kIiwhMSkubW9kfSxILnByb3RvdHlwZS51bW9kPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCEwKS5tb2R9LEgucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGIpe3ZhciB4PXRoaXMuZGl2bW9kKGIpO2lmKHgubW9kLmlzWmVybygpKXJldHVybiB4LmRpdjt2YXIgTj0wIT09eC5kaXYubmVnYXRpdmU/eC5tb2QuaXN1''@;'; put 'put ''YihiKTp4Lm1vZCxGPWIudXNocm4oMSksZz1iLmFuZGxuKDEpLEM9Ti5jbXAoRik7cmV0dXJuIEM8MHx8MT09PWcmJjA9PT1DP3guZGl2OjAhPT14LmRpdi5uZWdhdGl2ZT94LmRpdi5pc3VibigxKTp4LmRpdi5pYWRkbigxKX0sSC5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihiKXt2KGI8PTY3''@;'; put 'put ''MTA4ODYzKTtmb3IodmFyIHg9KDE8PDI2KSViLE49MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pTj0oeCpOKygwfHRoaXMud29yZHNbRl0pKSViO3JldHVybiBOfSxILnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihiKXt2KGI8PTY3MTA4ODYzKTtmb3IodmFyIHg9MCxOPXRoaXMubGVuZ3Ro''@;'; put 'put ''LTE7Tj49MDtOLS0pe3ZhciBGPSgwfHRoaXMud29yZHNbTl0pKzY3MTA4ODY0Kng7dGhpcy53b3Jkc1tOXT1GL2J8MCx4PUYlYn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oYil9LEgucHJvdG90eXBl''@;'; put 'put ''LmVnY2Q9ZnVuY3Rpb24oYil7digwPT09Yi5uZWdhdGl2ZSksdighYi5pc1plcm8oKSk7dmFyIHg9dGhpcyxOPWIuY2xvbmUoKTt4PTAhPT14Lm5lZ2F0aXZlP3gudW1vZChiKTp4LmNsb25lKCk7Zm9yKHZhciBGPW5ldyBIKDEpLGc9bmV3IEgoMCksQz1uZXcgSCgwKSxNPW5ldyBIKDEpLHk9''@;'; put 'put ''MDt4LmlzRXZlbigpJiZOLmlzRXZlbigpOyl4Lml1c2hybigxKSxOLml1c2hybigxKSwrK3k7Zm9yKHZhciBwPU4uY2xvbmUoKSxTPXguY2xvbmUoKTsheC5pc1plcm8oKTspe2Zvcih2YXIgUT0wLHJlPTE7ISh4LndvcmRzWzBdJnJlKSYmUTwyNjsrK1EscmU8PD0xKTtpZihRPjApZm9yKHgu''@;'; put 'put ''aXVzaHJuKFEpO1EtLSA+MDspKEYuaXNPZGQoKXx8Zy5pc09kZCgpKSYmKEYuaWFkZChwKSxnLmlzdWIoUykpLEYuaXVzaHJuKDEpLGcuaXVzaHJuKDEpO2Zvcih2YXIgZmU9MCxtZT0xOyEoTi53b3Jkc1swXSZtZSkmJmZlPDI2OysrZmUsbWU8PD0xKTtpZihmZT4wKWZvcihOLml1c2hybihm''@;'; put 'put ''ZSk7ZmUtLSA+MDspKEMuaXNPZGQoKXx8TS5pc09kZCgpKSYmKEMuaWFkZChwKSxNLmlzdWIoUykpLEMuaXVzaHJuKDEpLE0uaXVzaHJuKDEpO3guY21wKE4pPj0wPyh4LmlzdWIoTiksRi5pc3ViKEMpLGcuaXN1YihNKSk6KE4uaXN1Yih4KSxDLmlzdWIoRiksTS5pc3ViKGcpKX1yZXR1cm57''@;'; put 'put ''YTpDLGI6TSxnY2Q6Ti5pdXNobG4oeSl9fSxILnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oYil7digwPT09Yi5uZWdhdGl2ZSksdighYi5pc1plcm8oKSk7dmFyIFEseD10aGlzLE49Yi5jbG9uZSgpO3g9MCE9PXgubmVnYXRpdmU/eC51bW9kKGIpOnguY2xvbmUoKTtmb3IodmFyIEY9bmV3''@;'; put 'put ''IEgoMSksZz1uZXcgSCgwKSxDPU4uY2xvbmUoKTt4LmNtcG4oMSk+MCYmTi5jbXBuKDEpPjA7KXtmb3IodmFyIE09MCx5PTE7ISh4LndvcmRzWzBdJnkpJiZNPDI2OysrTSx5PDw9MSk7aWYoTT4wKWZvcih4Lml1c2hybihNKTtNLS0gPjA7KUYuaXNPZGQoKSYmRi5pYWRkKEMpLEYuaXVzaHJu''@;'; put 'put ''KDEpO2Zvcih2YXIgcD0wLFM9MTshKE4ud29yZHNbMF0mUykmJnA8MjY7KytwLFM8PD0xKTtpZihwPjApZm9yKE4uaXVzaHJuKHApO3AtLSA+MDspZy5pc09kZCgpJiZnLmlhZGQoQyksZy5pdXNocm4oMSk7eC5jbXAoTik+PTA/KHguaXN1YihOKSxGLmlzdWIoZykpOihOLmlzdWIoeCksZy5p''@;'; put 'put ''c3ViKEYpKX1yZXR1cm4oUT0wPT09eC5jbXBuKDEpP0Y6ZykuY21wbigwKTwwJiZRLmlhZGQoYiksUX0sSC5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKGIpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIGIuYWJzKCk7aWYoYi5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgeD10aGlzLmNs''@;'; put 'put ''b25lKCksTj1iLmNsb25lKCk7eC5uZWdhdGl2ZT0wLE4ubmVnYXRpdmU9MDtmb3IodmFyIEY9MDt4LmlzRXZlbigpJiZOLmlzRXZlbigpO0YrKyl4Lml1c2hybigxKSxOLml1c2hybigxKTtmb3IoOzspe2Zvcig7eC5pc0V2ZW4oKTspeC5pdXNocm4oMSk7Zm9yKDtOLmlzRXZlbigpOylOLml1''@;'; put 'put ''c2hybigxKTt2YXIgZz14LmNtcChOKTtpZihnPDApe3ZhciBDPXg7eD1OLE49Q31lbHNlIGlmKDA9PT1nfHwwPT09Ti5jbXBuKDEpKWJyZWFrO3guaXN1YihOKX1yZXR1cm4gTi5pdXNobG4oRil9LEgucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWdjZChiKS5hLnVt''@;'; put 'put ''b2QoYil9LEgucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT0oMSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMT09KDEmdGhpcy53b3Jkc1swXSl9LEgucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlz''@;'; put 'put ''LndvcmRzWzBdJmJ9LEgucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiKTt2YXIgeD1iJTI2LE49KGIteCkvMjYsRj0xPDx4O2lmKHRoaXMubGVuZ3RoPD1OKXJldHVybiB0aGlzLl9leHBhbmQoTisxKSx0aGlzLndvcmRzW05dfD1GLHRoaXM7Zm9yKHZh''@;'; put 'put ''ciBnPUYsQz1OOzAhPT1nJiZDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIE09MHx0aGlzLndvcmRzW0NdO2c9KE0rPWcpPj4+MjYsdGhpcy53b3Jkc1tDXT1NJj02NzEwODg2M31yZXR1cm4gMCE9PWcmJih0aGlzLndvcmRzW0NdPWcsdGhpcy5sZW5ndGgrKyksdGhpc30sSC5wcm90b3R5cGUuaXNa''@;'; put 'put ''ZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LEgucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oYil7dmFyIE4seD1iPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiF4KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ4KXJldHVybiAx''@;'; put 'put ''O2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKU49MTtlbHNle3gmJihiPS1iKSx2KGI8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBGPTB8dGhpcy53b3Jkc1swXTtOPUY9PT1iPzA6RjxiPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LU46Tn0sSC5wcm90''@;'; put 'put ''b3R5cGUuY21wPWZ1bmN0aW9uKGIpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIDE7dmFyIHg9dGhpcy51Y21wKGIpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC14Onh9''@;'; put 'put ''LEgucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oYil7aWYodGhpcy5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Yi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciB4PTAsTj10aGlzLmxlbmd0aC0xO04+PTA7Ti0tKXt2YXIgRj0wfHRoaXMud29yZHNbTl0sZz0wfGIud29y''@;'; put 'put ''ZHNbTl07aWYoRiE9PWcpe0Y8Zz94PS0xOkY+ZyYmKHg9MSk7YnJlYWt9fXJldHVybiB4fSxILnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcG4oYil9LEgucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGIpe3JldHVybiAxPT09dGhpcy5jbXAoYil9LEgucHJvdG90''@;'; put 'put ''eXBlLmd0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKT49MH0sSC5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKT49MH0sSC5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5sdD1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4tMT09PXRoaXMuY21wKGIpfSxILnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcG4oYik8PTB9LEgucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXAoYik8PTB9LEgucHJvdG90eXBlLmVxbj1mdW5jdGlvbihi''@;'; put 'put ''KXtyZXR1cm4gMD09PXRoaXMuY21wbihiKX0sSC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oYil7cmV0dXJuIDA9PT10aGlzLmNtcChiKX0sSC5yZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyB1ZShiKX0sSC5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYoIXRoaXMucmVkLCJB''@;'; put 'put ''bHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdigwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxiLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoYil9LEgucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdih0''@;'; put 'put ''aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxILnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucmVkPWIsdGhpc30sSC5wcm90b3R5cGUuZm9y''@;'; put 'put ''Y2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoYil9LEgucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxiKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''cmVkU3ViPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxiKX0sSC5wcm90b3R5cGUu''@;'; put 'put ''cmVkTXVsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5tdWwodGhpcyxiKX0sSC5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihiKXtyZXR1cm4gdih0''@;'; put 'put ''aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsYiksdGhpcy5yZWQuaW11bCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkx''@;'; put 'put ''KHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LEgucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxILnBy''@;'; put 'put ''b3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sSC5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHYodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LEgucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCYmIWIucmVkLCJyZWRQb3cobm9ybWFs''@;'; put 'put ''TnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGIpfTt2YXIgcT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIHRlKFksYil7dGhpcy5uYW1lPVksdGhpcy5wPW5ldyBIKGIsMTYpLHRoaXMubj10aGlzLnAu''@;'; put 'put ''Yml0TGVuZ3RoKCksdGhpcy5rPW5ldyBIKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBuZSgpe3RlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gaWUoKXt0ZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGxlKCl7dGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBkZSgpe3RlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gdWUo''@;'; put 'put ''WSl7aWYoInN0cmluZyI9PXR5cGVvZiBZKXt2YXIgYj1ILl9wcmltZShZKTt0aGlzLm09Yi5wLHRoaXMucHJpbWU9Yn1lbHNlIHYoWS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1ZLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBjZShZKXt1ZS5jYWxs''@;'; put 'put ''KHRoaXMsWSksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgSCgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9''@;'; put 'put ''dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX10ZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBiPW5ldyBIKG51bGwpO3JldHVybiBiLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksYn0sdGUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oYil7dmFyIE4seD1iO2Rve3RoaXMuc3BsaXQoeCx0aGlzLnRtcCksTj0oeD0oeD10aGlzLmltdWxLKHgpKS5p''@;'; put 'put ''YWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoTj50aGlzLm4pO3ZhciBGPU48dGhpcy5uPy0xOngudWNtcCh0aGlzLnApO3JldHVybiAwPT09Rj8oeC53b3Jkc1swXT0wLHgubGVuZ3RoPTEpOkY+MD94LmlzdWIodGhpcy5wKTp2b2lkIDAhPT14LnN0cmlwP3guc3RyaXAoKTp4Ll9z''@;'; put 'put ''dHJpcCgpLHh9LHRlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLHgpe2IuaXVzaHJuKHRoaXMubiwwLHgpfSx0ZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaW11bCh0aGlzLmspfSxoZShuZSx0ZSksbmUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIseCl7Zm9y''@;'; put 'put ''KHZhciBOPTQxOTQzMDMsRj1NYXRoLm1pbihiLmxlbmd0aCw5KSxnPTA7ZzxGO2crKyl4LndvcmRzW2ddPWIud29yZHNbZ107aWYoeC5sZW5ndGg9RixiLmxlbmd0aDw9OSlyZXR1cm4gYi53b3Jkc1swXT0wLHZvaWQoYi5sZW5ndGg9MSk7dmFyIEM9Yi53b3Jkc1s5XTtmb3IoeC53b3Jkc1t4''@;'; put 'put ''Lmxlbmd0aCsrXT1DJk4sZz0xMDtnPGIubGVuZ3RoO2crKyl7dmFyIE09MHxiLndvcmRzW2ddO2Iud29yZHNbZy0xMF09KE0mTik8PDR8Qz4+PjIyLEM9TX1iLndvcmRzW2ctMTBdPUM+Pj49MjIsYi5sZW5ndGgtPTA9PT1DJiZiLmxlbmd0aD4xMD8xMDo5fSxuZS5wcm90b3R5cGUuaW11bEs9''@;'; put 'put ''ZnVuY3Rpb24oYil7Yi53b3Jkc1tiLmxlbmd0aF09MCxiLndvcmRzW2IubGVuZ3RoKzFdPTAsYi5sZW5ndGgrPTI7Zm9yKHZhciB4PTAsTj0wO048Yi5sZW5ndGg7TisrKXt2YXIgRj0wfGIud29yZHNbTl07Yi53b3Jkc1tOXT02NzEwODg2MyYoeCs9OTc3KkYpLHg9NjQqRisoeC82NzEwODg2''@;'; put 'put ''NHwwKX1yZXR1cm4gMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJihiLmxlbmd0aC0tLDA9PT1iLndvcmRzW2IubGVuZ3RoLTFdJiZiLmxlbmd0aC0tKSxifSxoZShpZSx0ZSksaGUobGUsdGUpLGhlKGRlLHRlKSxkZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PTAsTj0w''@;'; put 'put ''O048Yi5sZW5ndGg7TisrKXt2YXIgRj0xOSooMHxiLndvcmRzW05dKSt4LGc9NjcxMDg4NjMmRjtGPj4+PTI2LGIud29yZHNbTl09Zyx4PUZ9cmV0dXJuIDAhPT14JiYoYi53b3Jkc1tiLmxlbmd0aCsrXT14KSxifSxILl9wcmltZT1mdW5jdGlvbihiKXtpZihxW2JdKXJldHVybiBxW2JdO3Zh''@;'; put 'put ''ciB4O2lmKCJrMjU2Ij09PWIpeD1uZXcgbmU7ZWxzZSBpZigicDIyNCI9PT1iKXg9bmV3IGllO2Vsc2UgaWYoInAxOTIiPT09Yil4PW5ldyBsZTtlbHNle2lmKCJwMjU1MTkiIT09Yil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitiKTt4PW5ldyBkZX1yZXR1cm4gcVtiXT14LHh9''@;'; put 'put ''LHVlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHYoYi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sdWUucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKGIseCl7''@;'; put 'put ''digwPT0oYi5uZWdhdGl2ZXx4Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx2KGIucmVkJiZiLnJlZD09PXgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LHVlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnBy''@;'; put 'put ''aW1lP3RoaXMucHJpbWUuaXJlZHVjZShiKS5fZm9yY2VSZWQodGhpcyk6Yi51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKGIpe3JldHVybiBiLmlzWmVybygpP2IuY2xvbmUoKTp0aGlzLm0uc3ViKGIpLl9mb3JjZVJlZCh0aGlzKX0sdWUu''@;'; put 'put ''cHJvdG90eXBlLmFkZD1mdW5jdGlvbihiLHgpe3RoaXMuX3ZlcmlmeTIoYix4KTt2YXIgTj1iLmFkZCh4KTtyZXR1cm4gTi5jbXAodGhpcy5tKT49MCYmTi5pc3ViKHRoaXMubSksTi5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5''@;'; put 'put ''MihiLHgpO3ZhciBOPWIuaWFkZCh4KTtyZXR1cm4gTi5jbXAodGhpcy5tKT49MCYmTi5pc3ViKHRoaXMubSksTn0sdWUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihiLHgpe3RoaXMuX3ZlcmlmeTIoYix4KTt2YXIgTj1iLnN1Yih4KTtyZXR1cm4gTi5jbXBuKDApPDAmJk4uaWFkZCh0aGlzLm0p''@;'; put 'put ''LE4uX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiLHgpe3RoaXMuX3ZlcmlmeTIoYix4KTt2YXIgTj1iLmlzdWIoeCk7cmV0dXJuIE4uY21wbigwKTwwJiZOLmlhZGQodGhpcy5tKSxOfSx1ZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX3ZlcmlmeTEoYiksdGhpcy5pbW9kKGIudXNobG4oeCkpfSx1ZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIseCksdGhpcy5pbW9kKGIuaW11bCh4KSl9LHVlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVy''@;'; put 'put ''aWZ5MihiLHgpLHRoaXMuaW1vZChiLm11bCh4KSl9LHVlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltdWwoYixiLmNsb25lKCkpfSx1ZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLm11bChiLGIpfSx1ZS5wcm90b3R5cGUuc3FydD1mdW5j''@;'; put 'put ''dGlvbihiKXtpZihiLmlzWmVybygpKXJldHVybiBiLmNsb25lKCk7dmFyIHg9dGhpcy5tLmFuZGxuKDMpO2lmKHYoeCUyPT0xKSwzPT09eCl7dmFyIE49dGhpcy5tLmFkZChuZXcgSCgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhiLE4pfWZvcih2YXIgRj10aGlzLm0uc3VibigxKSxn''@;'; put 'put ''PTA7IUYuaXNaZXJvKCkmJjA9PT1GLmFuZGxuKDEpOylnKyssRi5pdXNocm4oMSk7dighRi5pc1plcm8oKSk7dmFyIEM9bmV3IEgoMSkudG9SZWQodGhpcyksTT1DLnJlZE5lZygpLHk9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHA9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihwPW5ldyBIKDIq''@;'; put 'put ''cCpwKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3cocCx5KS5jbXAoTSk7KXAucmVkSUFkZChNKTtmb3IodmFyIFM9dGhpcy5wb3cocCxGKSxRPXRoaXMucG93KGIsRi5hZGRuKDEpLml1c2hybigxKSkscmU9dGhpcy5wb3coYixGKSxmZT1nOzAhPT1yZS5jbXAoQyk7KXtmb3IodmFyIG1lPXJl''@;'; put 'put ''LGtlPTA7MCE9PW1lLmNtcChDKTtrZSsrKW1lPW1lLnJlZFNxcigpO3Yoa2U8ZmUpO3ZhciBUZT10aGlzLnBvdyhTLG5ldyBIKDEpLml1c2hsbihmZS1rZS0xKSk7UT1RLnJlZE11bChUZSksUz1UZS5yZWRTcXIoKSxyZT1yZS5yZWRNdWwoUyksZmU9a2V9cmV0dXJuIFF9LHVlLnByb3RvdHlw''@;'; put 'put ''ZS5pbnZtPWZ1bmN0aW9uKGIpe3ZhciB4PWIuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT14Lm5lZ2F0aXZlPyh4Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHgpLnJlZE5lZygpKTp0aGlzLmltb2QoeCl9LHVlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oYix4KXtpZih4LmlzWmVybygpKXJldHVy''@;'; put 'put ''biBuZXcgSCgxKS50b1JlZCh0aGlzKTtpZigwPT09eC5jbXBuKDEpKXJldHVybiBiLmNsb25lKCk7dmFyIEY9bmV3IEFycmF5KDE2KTtGWzBdPW5ldyBIKDEpLnRvUmVkKHRoaXMpLEZbMV09Yjtmb3IodmFyIGc9MjtnPEYubGVuZ3RoO2crKylGW2ddPXRoaXMubXVsKEZbZy0xXSxiKTt2YXIg''@;'; put 'put ''Qz1GWzBdLE09MCx5PTAscD14LmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLGc9eC5sZW5ndGgtMTtnPj0wO2ctLSl7Zm9yKHZhciBTPXgud29yZHNbZ10sUT1wLTE7UT49MDtRLS0pe3ZhciByZT1TPj5RJjE7QyE9PUZbMF0mJihDPXRoaXMuc3FyKEMpKSwwIT09cmV8fDAhPT1N''@;'; put 'put ''PyhNPDw9MSxNfD1yZSwoND09Kyt5fHwwPT09ZyYmMD09PVEpJiYoQz10aGlzLm11bChDLEZbTV0pLHk9MCxNPTApKTp5PTB9cD0yNn1yZXR1cm4gQ30sdWUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihiKXt2YXIgeD1iLnVtb2QodGhpcy5tKTtyZXR1cm4geD09PWI/eC5jbG9uZSgp''@;'; put 'put ''Onh9LHVlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihiKXt2YXIgeD1iLmNsb25lKCk7cmV0dXJuIHgucmVkPW51bGwseH0sSC5tb250PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgY2UoYil9LGhlKGNlLHVlKSxjZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biB0aGlzLmltb2QoYi51c2hsbih0aGlzLnNoaWZ0KSl9LGNlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihiKXt2YXIgeD10aGlzLmltb2QoYi5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHgucmVkPW51bGwseH0sY2UucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYix4KXtpZihiLmlz''@;'; put 'put ''WmVybygpfHx4LmlzWmVybygpKXJldHVybiBiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSxiO3ZhciBOPWIuaW11bCh4KSxGPU4ubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGc9Ti5pc3ViKEYpLml1c2hybih0aGlzLnNoaWZ0''@;'; put 'put ''KSxDPWc7cmV0dXJuIGcuY21wKHRoaXMubSk+PTA/Qz1nLmlzdWIodGhpcy5tKTpnLmNtcG4oMCk8MCYmKEM9Zy5pYWRkKHRoaXMubSkpLEMuX2ZvcmNlUmVkKHRoaXMpfSxjZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIseCl7aWYoYi5pc1plcm8oKXx8eC5pc1plcm8oKSlyZXR1cm4gbmV3''@;'; put 'put ''IEgoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBOPWIubXVsKHgpLEY9Ti5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1OLmlzdWIoRikuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9D''@;'; put 'put ''PWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGNlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltb2QoYi5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFdl''@;'; put 'put ''PVQubm1kKFdlKSx0aGlzKX0sODIwMTY6V2U9PnsidXNlIHN0cmljdCI7dmFyIHNlLHplPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsVD16ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHplLmFwcGx5P3plLmFwcGx5OmZ1bmN0aW9uKHRlLG5lLGllKXtyZXR1cm4gRnVuY3Rp''@;'; put 'put ''b24ucHJvdG90eXBlLmFwcGx5LmNhbGwodGUsbmUsaWUpfTtzZT16ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHplLm93bktleXM/emUub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHRlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGUpLmNv''@;'; put 'put ''bmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRlKSl9OmZ1bmN0aW9uKHRlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGUpfTt2YXIgdj1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKHRlKXtyZXR1cm4gdGUhPXRlfTtmdW5jdGlvbiBoZSgpe2hlLmluaXQuY2Fs''@;'; put 'put ''bCh0aGlzKX1XZS5leHBvcnRzPWhlLFdlLmV4cG9ydHMub25jZT1mdW5jdGlvbiBHKHEsdGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuZSxpZSl7ZnVuY3Rpb24gbGUodWUpe3EucmVtb3ZlTGlzdGVuZXIodGUsZGUpLGllKHVlKX1mdW5jdGlvbiBkZSgpeyJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBxLnJlbW92ZUxpc3RlbmVyJiZxLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsbGUpLG5lKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9VShxLHRlLGRlLHtvbmNlOiEwfSksImVycm9yIiE9PXRlJiZmdW5jdGlvbiBXKHEsdGUsbmUpeyJmdW5jdGlvbiI9PXR5cGVvZiBxLm9uJiZVKHEs''@;'; put 'put ''ImVycm9yIix0ZSxuZSl9KHEsbGUse29uY2U6ITB9KX0pfSxoZS5FdmVudEVtaXR0ZXI9aGUsaGUucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLGhlLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxoZS5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIEg9MTA7ZnVuY3Rpb24gQihx''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgcSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgcSl9ZnVuY3Rpb24gTChxKXtyZXR1cm4gdm9pZCAwPT09cS5fbWF4TGlzdGVu''@;'; put 'put ''ZXJzP2hlLmRlZmF1bHRNYXhMaXN0ZW5lcnM6cS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIEsocSx0ZSxuZSxpZSl7dmFyIGxlLGRlLHVlO2lmKEIobmUpLHZvaWQgMD09PShkZT1xLl9ldmVudHMpPyhkZT1xLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxxLl9ldmVudHNDb3VudD0wKToo''@;'; put 'put ''dm9pZCAwIT09ZGUubmV3TGlzdGVuZXImJihxLmVtaXQoIm5ld0xpc3RlbmVyIix0ZSxuZS5saXN0ZW5lcj9uZS5saXN0ZW5lcjpuZSksZGU9cS5fZXZlbnRzKSx1ZT1kZVt0ZV0pLHZvaWQgMD09PXVlKXVlPWRlW3RlXT1uZSwrK3EuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIHVlP3VlPWRlW3RlXT1pZT9bbmUsdWVdOlt1ZSxuZV06aWU/dWUudW5zaGlmdChuZSk6dWUucHVzaChuZSksKGxlPUwocSkpPjAmJnVlLmxlbmd0aD5sZSYmIXVlLndhcm5lZCl7dWUud2FybmVkPSEwO3ZhciBjZT1uZXcgRXJyb3IoIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1v''@;'; put 'put ''cnkgbGVhayBkZXRlY3RlZC4gIit1ZS5sZW5ndGgrIiAiK1N0cmluZyh0ZSkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7Y2UubmFtZT0iTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nIixjZS5lbWl0dGVyPXEs''@;'; put 'put ''Y2UudHlwZT10ZSxjZS5jb3VudD11ZS5sZW5ndGgsZnVuY3Rpb24gayhxKXtjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihxKX0oY2UpfXJldHVybiBxfWZ1bmN0aW9uIEooKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50''@;'; put 'put ''eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIEkocSx0ZSxuZSl7dmFyIGllPXtmaXJlZDohMSx3''@;'; put 'put ''cmFwRm46dm9pZCAwLHRhcmdldDpxLHR5cGU6dGUsbGlzdGVuZXI6bmV9LGxlPUouYmluZChpZSk7cmV0dXJuIGxlLmxpc3RlbmVyPW5lLGllLndyYXBGbj1sZSxsZX1mdW5jdGlvbiBSKHEsdGUsbmUpe3ZhciBpZT1xLl9ldmVudHM7aWYodm9pZCAwPT09aWUpcmV0dXJuW107dmFyIGxlPWll''@;'; put 'put ''W3RlXTtyZXR1cm4gdm9pZCAwPT09bGU/W106ImZ1bmN0aW9uIj09dHlwZW9mIGxlP25lP1tsZS5saXN0ZW5lcnx8bGVdOltsZV06bmU/ZnVuY3Rpb24gVihxKXtmb3IodmFyIHRlPW5ldyBBcnJheShxLmxlbmd0aCksbmU9MDtuZTx0ZS5sZW5ndGg7KytuZSl0ZVtuZV09cVtuZV0ubGlzdGVu''@;'; put 'put ''ZXJ8fHFbbmVdO3JldHVybiB0ZX0obGUpOnoobGUsbGUubGVuZ3RoKX1mdW5jdGlvbiBFKHEpe3ZhciB0ZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09dGUpe3ZhciBuZT10ZVtxXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbmUpcmV0dXJuIDE7aWYodm9pZCAwIT09bmUpcmV0dXJuIG5lLmxl''@;'; put 'put ''bmd0aH1yZXR1cm4gMH1mdW5jdGlvbiB6KHEsdGUpe2Zvcih2YXIgbmU9bmV3IEFycmF5KHRlKSxpZT0wO2llPHRlOysraWUpbmVbaWVdPXFbaWVdO3JldHVybiBuZX1mdW5jdGlvbiBVKHEsdGUsbmUsaWUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBxLm9uKWllLm9uY2U/cS5vbmNlKHRlLG5l''@;'; put 'put ''KTpxLm9uKHRlLG5lKTtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBxLmFkZEV2ZW50TGlzdGVuZXIpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJlbWl0dGVyIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHEpO3EuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcih0ZSxmdW5jdGlvbiBsZShkZSl7aWUub25jZSYmcS5yZW1vdmVFdmVudExpc3RlbmVyKHRlLGxlKSxuZShkZSl9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGhlLCJkZWZhdWx0TWF4TGlzdGVuZXJzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''SH0sc2V0OmZ1bmN0aW9uKHEpe2lmKCJudW1iZXIiIT10eXBlb2YgcXx8cTwwfHx2KHEpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgImRlZmF1bHRNYXhMaXN0ZW5lcnMiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2Vp''@;'; put 'put ''dmVkICcrcSsiLiIpO0g9cX19KSxoZS5pbml0PWZ1bmN0aW9uKCl7KHZvaWQgMD09PXRoaXMuX2V2ZW50c3x8dGhpcy5fZXZlbnRzPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpJiYodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291''@;'; put 'put ''bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxoZS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHRlKXtpZigibnVtYmVyIiE9dHlwZW9mIHRlfHx0ZTwwfHx2KHRlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9m''@;'; put 'put ''ICJuIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3RlKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz10ZSx0aGlzfSxoZS5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyl9''@;'; put 'put ''LGhlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHRlKXtmb3IodmFyIG5lPVtdLGllPTE7aWU8YXJndW1lbnRzLmxlbmd0aDtpZSsrKW5lLnB1c2goYXJndW1lbnRzW2llXSk7dmFyIGxlPSJlcnJvciI9PT10ZSxkZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09ZGUpbGU9bGUmJnZvaWQgMD09''@;'; put 'put ''PWRlLmVycm9yO2Vsc2UgaWYoIWxlKXJldHVybiExO2lmKGxlKXt2YXIgdWU7aWYobmUubGVuZ3RoPjAmJih1ZT1uZVswXSksdWUgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyB1ZTt2YXIgY2U9bmV3IEVycm9yKCJVbmhhbmRsZWQgZXJyb3IuIisodWU/IiAoIit1ZS5tZXNzYWdlKyIpIjoiIikp''@;'; put 'put ''O3Rocm93IGNlLmNvbnRleHQ9dWUsY2V9dmFyIFk9ZGVbdGVdO2lmKHZvaWQgMD09PVkpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFkpVChZLHRoaXMsbmUpO2Vsc2V7dmFyIGI9WS5sZW5ndGgseD16KFksYik7Zm9yKGllPTA7aWU8YjsrK2llKVQoeFtpZV0sdGhpcyxuZSl9cmV0''@;'; put 'put ''dXJuITB9LGhlLnByb3RvdHlwZS5vbj1oZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odGUsbmUpe3JldHVybiBLKHRoaXMsdGUsbmUsITEpfSxoZS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKHRlLG5lKXtyZXR1cm4gSyh0aGlzLHRlLG5lLCEwKX0saGUucHJv''@;'; put 'put ''dG90eXBlLm9uY2U9ZnVuY3Rpb24odGUsbmUpe3JldHVybiBCKG5lKSx0aGlzLm9uKHRlLEkodGhpcyx0ZSxuZSkpLHRoaXN9LGhlLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHRlLG5lKXtyZXR1cm4gQihuZSksdGhpcy5wcmVwZW5kTGlzdGVuZXIodGUsSSh0aGlz''@;'; put 'put ''LHRlLG5lKSksdGhpc30saGUucHJvdG90eXBlLm9mZj1oZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odGUsbmUpe3ZhciBpZSxsZSxkZSx1ZSxjZTtpZihCKG5lKSx2b2lkIDA9PT0obGU9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0oaWU9bGVbdGVd''@;'; put 'put ''KSlyZXR1cm4gdGhpcztpZihpZT09PW5lfHxpZS5saXN0ZW5lcj09PW5lKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBsZVt0ZV0sbGUucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHRlLGll''@;'; put 'put ''Lmxpc3RlbmVyfHxuZSkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIGllKXtmb3IoZGU9LTEsdWU9aWUubGVuZ3RoLTE7dWU+PTA7dWUtLSlpZihpZVt1ZV09PT1uZXx8aWVbdWVdLmxpc3RlbmVyPT09bmUpe2NlPWllW3VlXS5saXN0ZW5lcixkZT11ZTticmVha31pZihkZTwwKXJldHVy''@;'; put 'put ''biB0aGlzOzA9PT1kZT9pZS5zaGlmdCgpOmZ1bmN0aW9uIGoocSx0ZSl7Zm9yKDt0ZSsxPHEubGVuZ3RoO3RlKyspcVt0ZV09cVt0ZSsxXTtxLnBvcCgpfShpZSxkZSksMT09PWllLmxlbmd0aCYmKGxlW3RlXT1pZVswXSksdm9pZCAwIT09bGUucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgi''@;'; put 'put ''cmVtb3ZlTGlzdGVuZXIiLHRlLGNlfHxuZSl9cmV0dXJuIHRoaXN9LGhlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24odGUpe3ZhciBuZSxpZSxsZTtpZih2b2lkIDA9PT0oaWU9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1pZS5yZW1vdmVMaXN0''@;'; put 'put ''ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PWllW3RlXSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVs''@;'; put 'put ''ZXRlIGllW3RlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIHVlLGRlPU9iamVjdC5rZXlzKGllKTtmb3IobGU9MDtsZTxkZS5sZW5ndGg7KytsZSkicmVtb3ZlTGlzdGVuZXIiIT09KHVlPWRlW2xlXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKHVlKTtyZXR1cm4gdGhp''@;'; put 'put ''cy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihuZT1pZVt0ZV0pKXRoaXMucmVtb3ZlTGlzdGVuZXIodGUsbmUpO2Vsc2UgaWYo''@;'; put 'put ''dm9pZCAwIT09bmUpZm9yKGxlPW5lLmxlbmd0aC0xO2xlPj0wO2xlLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih0ZSxuZVtsZV0pO3JldHVybiB0aGlzfSxoZS5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHRlKXtyZXR1cm4gUih0aGlzLHRlLCEwKX0saGUucHJvdG90eXBlLnJhd0xpc3Rl''@;'; put 'put ''bmVycz1mdW5jdGlvbih0ZSl7cmV0dXJuIFIodGhpcyx0ZSwhMSl9LGhlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24ocSx0ZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHEubGlzdGVuZXJDb3VudD9xLmxpc3RlbmVyQ291bnQodGUpOkUuY2FsbChxLHRlKX0saGUucHJvdG90eXBlLmxpc3Rl''@;'; put 'put ''bmVyQ291bnQ9RSxoZS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP3NlKHRoaXMuX2V2ZW50cyk6W119fSwzNjUwNTooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZlcixrPVQoNzU4MjkpO1dlLmV4cG9ydHM9ZnVuY3Rpb24g''@;'; put 'put ''dihoZSxILEIsTCl7aWYoc2UuaXNCdWZmZXIoaGUpfHwoaGU9c2UuZnJvbShoZSwiYmluYXJ5IikpLEgmJihzZS5pc0J1ZmZlcihIKXx8KEg9c2UuZnJvbShILCJiaW5hcnkiKSksOCE9PUgubGVuZ3RoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGgg''@;'; put 'put ''OCBieXRlIGxlbmd0aCIpO2Zvcih2YXIgSz1CLzgsSj1zZS5hbGxvYyhLKSxJPXNlLmFsbG9jKEx8fDApLFI9c2UuYWxsb2MoMCk7Sz4wfHxMPjA7KXt2YXIgRT1uZXcgaztFLnVwZGF0ZShSKSxFLnVwZGF0ZShoZSksSCYmRS51cGRhdGUoSCksUj1FLmRpZ2VzdCgpO3ZhciB6PTA7aWYoSz4w''@;'; put 'put ''KXt2YXIgaj1KLmxlbmd0aC1LO3o9TWF0aC5taW4oSyxSLmxlbmd0aCksUi5jb3B5KEosaiwwLHopLEstPXp9aWYoejxSLmxlbmd0aCYmTD4wKXt2YXIgVj1JLmxlbmd0aC1MLEc9TWF0aC5taW4oTCxSLmxlbmd0aC16KTtSLmNvcHkoSSxWLHoseitHKSxMLT1HfX1yZXR1cm4gUi5maWxsKDAp''@;'; put 'put ''LHtrZXk6SixpdjpJfX19LDQ1OTk2OldlPT57V2UuZXhwb3J0cz1mdW5jdGlvbiB6ZShULHNlLGspe2Z1bmN0aW9uIHYoQixMKXtpZighc2VbQl0pe2lmKCFUW0JdKXtpZihoZSlyZXR1cm4gaGUoQiwhMCk7dmFyIEo9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrQisiJyIpO3Ro''@;'; put 'put ''cm93IEouY29kZT0iTU9EVUxFX05PVF9GT1VORCIsSn12YXIgST1zZVtCXT17ZXhwb3J0czp7fX07VFtCXVswXS5jYWxsKEkuZXhwb3J0cyxmdW5jdGlvbihSKXtyZXR1cm4gdihUW0JdWzFdW1JdfHxSKX0sSSxJLmV4cG9ydHMsemUsVCxzZSxrKX1yZXR1cm4gc2VbQl0uZXhwb3J0c31mb3Io''@;'; put 'put ''dmFyIGhlPXZvaWQgMCxIPTA7SDxrLmxlbmd0aDtIKyspdihrW0hdKTtyZXR1cm4gdn0oezE6W2Z1bmN0aW9uKHplLFQsc2UpeyFmdW5jdGlvbihrKXsidXNlIHN0cmljdCI7dmFyIHYsaGU9L14tPyg/OlxkKyg/OlwuXGQqKT98XC5cZCspKD86ZVsrLV0/XGQrKT8kL2ksSD1NYXRoLmNlaWws''@;'; put 'put ''Qj1NYXRoLmZsb29yLEw9IltCaWdOdW1iZXIgRXJyb3JdICIsSz1MKyJOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiAiLEo9MWUxNCxJPTE0LFI9OTAwNzE5OTI1NDc0MDk5MSxFPVsxLDEwLDEwMCwxZTMsMWU0LDFlNSwxZTYsMWU3LDFlOCwx''@;'; put 'put ''ZTksMWUxMCwxZTExLDFlMTIsMWUxM10sej0xZTcsaj0xZTk7ZnVuY3Rpb24gVihpZSl7dmFyIGxlPTB8aWU7cmV0dXJuIDA8aWV8fGllPT09bGU/bGU6bGUtMX1mdW5jdGlvbiBHKGllKXtmb3IodmFyIGxlLGRlLHVlPTEsY2U9aWUubGVuZ3RoLFk9aWVbMF0rIiI7dWU8Y2U7KXtmb3IobGU9''@;'; put 'put ''aWVbdWUrK10rIiIsZGU9SS1sZS5sZW5ndGg7ZGUtLTtsZT0iMCIrbGUpO1krPWxlfWZvcihjZT1ZLmxlbmd0aDs0OD09PVkuY2hhckNvZGVBdCgtLWNlKTspO3JldHVybiBZLnNsaWNlKDAsY2UrMXx8MSl9ZnVuY3Rpb24gVyhpZSxsZSl7dmFyIGRlLHVlLGNlPWllLmMsWT1sZS5jLGI9aWUu''@;'; put 'put ''cyx4PWxlLnMsTj1pZS5lLEY9bGUuZTtpZighYnx8IXgpcmV0dXJuIG51bGw7aWYodWU9WSYmIVlbMF0sKGRlPWNlJiYhY2VbMF0pfHx1ZSlyZXR1cm4gZGU/dWU/MDoteDpiO2lmKGIhPXgpcmV0dXJuIGI7aWYoZGU9YjwwLHVlPU49PUYsIWNlfHwhWSlyZXR1cm4gdWU/MDohY2VeZGU/MTot''@;'; put 'put ''MTtpZighdWUpcmV0dXJuIEY8Tl5kZT8xOi0xO2Zvcih4PShOPWNlLmxlbmd0aCk8KEY9WS5sZW5ndGgpP046RixiPTA7Yjx4O2IrKylpZihjZVtiXSE9WVtiXSlyZXR1cm4gY2VbYl0+WVtiXV5kZT8xOi0xO3JldHVybiBOPT1GPzA6RjxOXmRlPzE6LTF9ZnVuY3Rpb24gVShpZSxsZSxkZSx1''@;'; put 'put ''ZSl7aWYoaWU8bGV8fGRlPGllfHxpZSE9PShpZTwwP0goaWUpOkIoaWUpKSl0aHJvdyBFcnJvcihMKyh1ZXx8IkFyZ3VtZW50IikrKCJudW1iZXIiPT10eXBlb2YgaWU/aWU8bGV8fGRlPGllPyIgb3V0IG9mIHJhbmdlOiAiOiIgbm90IGFuIGludGVnZXI6ICI6IiBub3QgYSBwcmltaXRpdmUg''@;'; put 'put ''bnVtYmVyOiAiKStTdHJpbmcoaWUpKX1mdW5jdGlvbiBxKGllKXt2YXIgbGU9aWUuYy5sZW5ndGgtMTtyZXR1cm4gVihpZS5lL0kpPT1sZSYmaWUuY1tsZV0lMiE9MH1mdW5jdGlvbiB0ZShpZSxsZSl7cmV0dXJuKDE8aWUubGVuZ3RoP2llLmNoYXJBdCgwKSsiLiIraWUuc2xpY2UoMSk6aWUp''@;'; put 'put ''KyhsZTwwPyJlIjoiZSsiKStsZX1mdW5jdGlvbiBuZShpZSxsZSxkZSl7dmFyIHVlLGNlO2lmKGxlPDApe2ZvcihjZT1kZSsiLiI7KytsZTtjZSs9ZGUpO2llPWNlK2llfWVsc2UgaWYoKytsZT4odWU9aWUubGVuZ3RoKSl7Zm9yKGNlPWRlLGxlLT11ZTstLWxlO2NlKz1kZSk7aWUrPWNlfWVs''@;'; put 'put ''c2UgbGU8dWUmJihpZT1pZS5zbGljZSgwLGxlKSsiLiIraWUuc2xpY2UobGUpKTtyZXR1cm4gaWV9KHY9ZnVuY3Rpb24gaWUobGUpe3ZhciBkZSx1ZSxjZSxZLGIseCxOLEYsZyxDLE09TGUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpMZSx0b1N0cmluZzpudWxsLHZhbHVlT2Y6bnVsbH0seT1u''@;'; put 'put ''ZXcgTGUoMSkscD0yMCxTPTQsUT0tNyxyZT0yMSxmZT0tMWU3LG1lPTFlNyxrZT0hMSxUZT0xLFBlPTAsRmU9e3ByZWZpeDoiIixncm91cFNpemU6MyxzZWNvbmRhcnlHcm91cFNpemU6MCxncm91cFNlcGFyYXRvcjoiLCIsZGVjaW1hbFNlcGFyYXRvcjoiLiIsZnJhY3Rpb25Hcm91cFNpemU6''@;'; put 'put ''MCxmcmFjdGlvbkdyb3VwU2VwYXJhdG9yOiJceGEwIixzdWZmaXg6IiJ9LE5lPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO2Z1bmN0aW9uIExlKHdlLEllKXt2YXIgT2UsZXQsbnQscWUsaHQsRWUsRGUsJGUsYXQ9dGhpcztpZighKGF0IGluc3RhbmNlb2YgTGUpKXJl''@;'; put 'put ''dHVybiBuZXcgTGUod2UsSWUpO2lmKG51bGw9PUllKXtpZih3ZSBpbnN0YW5jZW9mIExlKXJldHVybiBhdC5zPXdlLnMsYXQuZT13ZS5lLHZvaWQoYXQuYz0od2U9d2UuYyk/d2Uuc2xpY2UoKTp3ZSk7aWYoKEVlPSJudW1iZXIiPT10eXBlb2Ygd2UpJiYwKndlPT0wKXtpZihhdC5zPTEvd2U8''@;'; put 'put ''MD8od2U9LXdlLC0xKToxLHdlPT09fn53ZSl7Zm9yKHFlPTAsaHQ9d2U7MTA8PWh0O2h0Lz0xMCxxZSsrKTtyZXR1cm4gYXQuZT1xZSx2b2lkKGF0LmM9W3dlXSl9JGU9U3RyaW5nKHdlKX1lbHNle2lmKCRlPVN0cmluZyh3ZSksIWhlLnRlc3QoJGUpKXJldHVybiBjZShhdCwkZSxFZSk7YXQu''@;'; put 'put ''cz00NT09JGUuY2hhckNvZGVBdCgwKT8oJGU9JGUuc2xpY2UoMSksLTEpOjF9LTE8KHFlPSRlLmluZGV4T2YoIi4iKSkmJigkZT0kZS5yZXBsYWNlKCIuIiwiIikpLDA8KGh0PSRlLnNlYXJjaCgvZS9pKSk/KHFlPDAmJihxZT1odCkscWUrPSskZS5zbGljZShodCsxKSwkZT0kZS5zdWJzdHJp''@;'; put 'put ''bmcoMCxodCkpOnFlPDAmJihxZT0kZS5sZW5ndGgpfWVsc2V7aWYoVShJZSwyLE5lLmxlbmd0aCwiQmFzZSIpLCRlPVN0cmluZyh3ZSksMTA9PUllKXJldHVybiBtdChhdD1uZXcgTGUod2UgaW5zdGFuY2VvZiBMZT93ZTokZSkscCthdC5lKzEsUyk7aWYoRWU9Im51bWJlciI9PXR5cGVvZiB3''@;'; put 'put ''ZSl7aWYoMCp3ZSE9MClyZXR1cm4gY2UoYXQsJGUsRWUsSWUpO2lmKGF0LnM9MS93ZTwwPygkZT0kZS5zbGljZSgxKSwtMSk6MSxMZS5ERUJVRyYmMTU8JGUucmVwbGFjZSgvXjBcLjAqfFwuLywiIikubGVuZ3RoKXRocm93IEVycm9yKEsrd2UpO0VlPSExfWVsc2UgYXQucz00NT09PSRlLmNo''@;'; put 'put ''YXJDb2RlQXQoMCk/KCRlPSRlLnNsaWNlKDEpLC0xKToxO2ZvcihPZT1OZS5zbGljZSgwLEllKSxxZT1odD0wLERlPSRlLmxlbmd0aDtodDxEZTtodCsrKWlmKE9lLmluZGV4T2YoZXQ9JGUuY2hhckF0KGh0KSk8MCl7aWYoIi4iPT1ldCl7aWYocWU8aHQpe3FlPURlO2NvbnRpbnVlfX1lbHNl''@;'; put 'put ''IGlmKCFudCYmKCRlPT0kZS50b1VwcGVyQ2FzZSgpJiYoJGU9JGUudG9Mb3dlckNhc2UoKSl8fCRlPT0kZS50b0xvd2VyQ2FzZSgpJiYoJGU9JGUudG9VcHBlckNhc2UoKSkpKXtudD0hMCxodD0tMSxxZT0wO2NvbnRpbnVlfXJldHVybiBjZShhdCxTdHJpbmcod2UpLEVlLEllKX0tMTwocWU9''@;'; put 'put ''KCRlPXVlKCRlLEllLDEwLGF0LnMpKS5pbmRleE9mKCIuIikpPyRlPSRlLnJlcGxhY2UoIi4iLCIiKTpxZT0kZS5sZW5ndGh9Zm9yKGh0PTA7NDg9PT0kZS5jaGFyQ29kZUF0KGh0KTtodCsrKTtmb3IoRGU9JGUubGVuZ3RoOzQ4PT09JGUuY2hhckNvZGVBdCgtLURlKTspO2lmKCRlPSRlLnNs''@;'; put 'put ''aWNlKGh0LCsrRGUpKXtpZihEZS09aHQsRWUmJkxlLkRFQlVHJiYxNTxEZSYmKFI8d2V8fHdlIT09Qih3ZSkpKXRocm93IEVycm9yKEsrYXQucyp3ZSk7aWYobWU8KHFlPXFlLWh0LTEpKWF0LmM9YXQuZT1udWxsO2Vsc2UgaWYocWU8ZmUpYXQuYz1bYXQuZT0wXTtlbHNle2lmKGF0LmU9cWUs''@;'; put 'put ''YXQuYz1bXSxodD0ocWUrMSklSSxxZTwwJiYoaHQrPUkpLGh0PERlKXtmb3IoaHQmJmF0LmMucHVzaCgrJGUuc2xpY2UoMCxodCkpLERlLT1JO2h0PERlOylhdC5jLnB1c2goKyRlLnNsaWNlKGh0LGh0Kz1JKSk7JGU9JGUuc2xpY2UoaHQpLGh0PUktJGUubGVuZ3RofWVsc2UgaHQtPURlO2Zv''@;'; put 'put ''cig7aHQtLTskZSs9IjAiKTthdC5jLnB1c2goKyRlKX19ZWxzZSBhdC5jPVthdC5lPTBdfWZ1bmN0aW9uIEJlKHdlLEllLE9lLGV0KXt2YXIgbnQscWUsaHQsRWUsRGU7aWYobnVsbD09T2U/T2U9UzpVKE9lLDAsOCksIXdlLmMpcmV0dXJuIHdlLnRvU3RyaW5nKCk7aWYobnQ9d2UuY1swXSxo''@;'; put 'put ''dD13ZS5lLG51bGw9PUllKURlPUcod2UuYyksRGU9MT09ZXR8fDI9PWV0JiYoaHQ8PVF8fHJlPD1odCk/dGUoRGUsaHQpOm5lKERlLGh0LCIwIik7ZWxzZSBpZihxZT0od2U9bXQobmV3IExlKHdlKSxJZSxPZSkpLmUsRWU9KERlPUcod2UuYykpLmxlbmd0aCwxPT1ldHx8Mj09ZXQmJihJZTw9''@;'; put 'put ''cWV8fHFlPD1RKSl7Zm9yKDtFZTxJZTtEZSs9IjAiLEVlKyspO0RlPXRlKERlLHFlKX1lbHNlIGlmKEllLT1odCxEZT1uZShEZSxxZSwiMCIpLEVlPHFlKzEpe2lmKDA8LS1JZSlmb3IoRGUrPSIuIjtJZS0tO0RlKz0iMCIpO31lbHNlIGlmKDA8KEllKz1xZS1FZSkpZm9yKHFlKzE9PUVlJiYo''@;'; put 'put ''RGUrPSIuIik7SWUtLTtEZSs9IjAiKTtyZXR1cm4gd2UuczwwJiZudD8iLSIrRGU6RGV9ZnVuY3Rpb24gSGUod2UsSWUpe2Zvcih2YXIgT2UsZXQ9MSxudD1uZXcgTGUod2VbMF0pO2V0PHdlLmxlbmd0aDtldCsrKXtpZighKE9lPW5ldyBMZSh3ZVtldF0pKS5zKXtudD1PZTticmVha31JZS5j''@;'; put 'put ''YWxsKG50LE9lKSYmKG50PU9lKX1yZXR1cm4gbnR9ZnVuY3Rpb24gUWUod2UsSWUsT2Upe2Zvcih2YXIgZXQ9MSxudD1JZS5sZW5ndGg7IUllWy0tbnRdO0llLnBvcCgpKTtmb3IobnQ9SWVbMF07MTA8PW50O250Lz0xMCxldCsrKTtyZXR1cm4gd2UuYz0oT2U9ZXQrT2UqSS0xKT5tZT93ZS5l''@;'; put 'put ''PW51bGw6T2U8ZmU/W3dlLmU9MF06KHdlLmU9T2UsSWUpLHdlfWZ1bmN0aW9uIG10KHdlLEllLE9lLGV0KXt2YXIgbnQscWUsaHQsRWUsRGUsJGUsYXQsY3Q9d2UuYyxPdD1FO2lmKGN0KXtlOntmb3IobnQ9MSxFZT1jdFswXTsxMDw9RWU7RWUvPTEwLG50KyspO2lmKChxZT1JZS1udCk8MClx''@;'; put 'put ''ZSs9SSxhdD0oRGU9Y3RbJGU9MF0pL090W250LShodD1JZSktMV0lMTB8MDtlbHNlIGlmKCgkZT1IKChxZSsxKS9JKSk+PWN0Lmxlbmd0aCl7aWYoIWV0KWJyZWFrIGU7Zm9yKDtjdC5sZW5ndGg8PSRlO2N0LnB1c2goMCkpO0RlPWF0PTAsaHQ9KHFlJT1JKS1JKyhudD0xKX1lbHNle2ZvcihE''@;'; put 'put ''ZT1FZT1jdFskZV0sbnQ9MTsxMDw9RWU7RWUvPTEwLG50KyspO2F0PShodD0ocWUlPUkpLUkrbnQpPDA/MDpEZS9PdFtudC1odC0xXSUxMHwwfWlmKGV0PWV0fHxJZTwwfHxudWxsIT1jdFskZSsxXXx8KGh0PDA/RGU6RGUlT3RbbnQtaHQtMV0pLGV0PU9lPDQ/KGF0fHxldCkmJigwPT1PZXx8''@;'; put 'put ''T2U9PSh3ZS5zPDA/MzoyKSk6NTxhdHx8NT09YXQmJig0PT1PZXx8ZXR8fDY9PU9lJiYoMDxxZT8wPGh0P0RlL090W250LWh0XTowOmN0WyRlLTFdKSUxMCYxfHxPZT09KHdlLnM8MD84OjcpKSxJZTwxfHwhY3RbMF0pcmV0dXJuIGN0Lmxlbmd0aD0wLGV0PyhjdFswXT1PdFsoSS0oSWUtPXdl''@;'; put 'put ''LmUrMSklSSklSV0sd2UuZT0tSWV8fDApOmN0WzBdPXdlLmU9MCx3ZTtpZigwPT1xZT8oY3QubGVuZ3RoPSRlLEVlPTEsJGUtLSk6KGN0Lmxlbmd0aD0kZSsxLEVlPU90W0ktcWVdLGN0WyRlXT0wPGh0P0IoRGUvT3RbbnQtaHRdJU90W2h0XSkqRWU6MCksZXQpZm9yKDs7KXtpZigwPT0kZSl7''@;'; put 'put ''Zm9yKHFlPTEsaHQ9Y3RbMF07MTA8PWh0O2h0Lz0xMCxxZSsrKTtmb3IoaHQ9Y3RbMF0rPUVlLEVlPTE7MTA8PWh0O2h0Lz0xMCxFZSsrKTtxZSE9RWUmJih3ZS5lKyssY3RbMF09PUomJihjdFswXT0xKSk7YnJlYWt9aWYoY3RbJGVdKz1FZSxjdFskZV0hPUopYnJlYWs7Y3RbJGUtLV09MCxF''@;'; put 'put ''ZT0xfWZvcihxZT1jdC5sZW5ndGg7MD09PWN0Wy0tcWVdO2N0LnBvcCgpKTt9d2UuZT5tZT93ZS5jPXdlLmU9bnVsbDp3ZS5lPGZlJiYod2UuYz1bd2UuZT0wXSl9cmV0dXJuIHdlfWZ1bmN0aW9uIEtlKHdlKXt2YXIgSWUsT2U9d2UuZTtyZXR1cm4gbnVsbD09PU9lP3dlLnRvU3RyaW5nKCk6''@;'; put 'put ''KEllPUcod2UuYyksSWU9T2U8PVF8fHJlPD1PZT90ZShJZSxPZSk6bmUoSWUsT2UsIjAiKSx3ZS5zPDA/Ii0iK0llOkllKX1yZXR1cm4gTGUuY2xvbmU9aWUsTGUuUk9VTkRfVVA9MCxMZS5ST1VORF9ET1dOPTEsTGUuUk9VTkRfQ0VJTD0yLExlLlJPVU5EX0ZMT09SPTMsTGUuUk9VTkRfSEFM''@;'; put 'put ''Rl9VUD00LExlLlJPVU5EX0hBTEZfRE9XTj01LExlLlJPVU5EX0hBTEZfRVZFTj02LExlLlJPVU5EX0hBTEZfQ0VJTD03LExlLlJPVU5EX0hBTEZfRkxPT1I9OCxMZS5FVUNMSUQ9OSxMZS5jb25maWc9TGUuc2V0PWZ1bmN0aW9uKHdlKXt2YXIgSWUsT2U7aWYobnVsbCE9d2Upe2lmKCJvYmpl''@;'; put 'put ''Y3QiIT10eXBlb2Ygd2UpdGhyb3cgRXJyb3IoTCsiT2JqZWN0IGV4cGVjdGVkOiAiK3dlKTtpZih3ZS5oYXNPd25Qcm9wZXJ0eShJZT0iREVDSU1BTF9QTEFDRVMiKSYmKFUoT2U9d2VbSWVdLDAsaixJZSkscD1PZSksd2UuaGFzT3duUHJvcGVydHkoSWU9IlJPVU5ESU5HX01PREUiKSYmKFUo''@;'; put 'put ''T2U9d2VbSWVdLDAsOCxJZSksUz1PZSksd2UuaGFzT3duUHJvcGVydHkoSWU9IkVYUE9ORU5USUFMX0FUIikmJigoT2U9d2VbSWVdKSYmT2UucG9wPyhVKE9lWzBdLC1qLDAsSWUpLFUoT2VbMV0sMCxqLEllKSxRPU9lWzBdLHJlPU9lWzFdKTooVShPZSwtaixqLEllKSxRPS0ocmU9T2U8MD8t''@;'; put 'put ''T2U6T2UpKSksd2UuaGFzT3duUHJvcGVydHkoSWU9IlJBTkdFIikpaWYoKE9lPXdlW0llXSkmJk9lLnBvcClVKE9lWzBdLC1qLC0xLEllKSxVKE9lWzFdLDEsaixJZSksZmU9T2VbMF0sbWU9T2VbMV07ZWxzZXtpZihVKE9lLC1qLGosSWUpLCFPZSl0aHJvdyBFcnJvcihMK0llKyIgY2Fubm90''@;'; put 'put ''IGJlIHplcm86ICIrT2UpO2ZlPS0obWU9T2U8MD8tT2U6T2UpfWlmKHdlLmhhc093blByb3BlcnR5KEllPSJDUllQVE8iKSl7aWYoKE9lPXdlW0llXSkhPT0hIU9lKXRocm93IEVycm9yKEwrSWUrIiBub3QgdHJ1ZSBvciBmYWxzZTogIitPZSk7aWYoT2Upe2lmKHR5cGVvZiBjcnlwdG8+InUi''@;'; put 'put ''fHwhY3J5cHRvfHwhY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmIWNyeXB0by5yYW5kb21CeXRlcyl0aHJvdyBrZT0hT2UsRXJyb3IoTCsiY3J5cHRvIHVuYXZhaWxhYmxlIik7a2U9T2V9ZWxzZSBrZT1PZX1pZih3ZS5oYXNPd25Qcm9wZXJ0eShJZT0iTU9EVUxPX01PREUiKSYmKFUoT2U9d2Vb''@;'; put 'put ''SWVdLDAsOSxJZSksVGU9T2UpLHdlLmhhc093blByb3BlcnR5KEllPSJQT1dfUFJFQ0lTSU9OIikmJihVKE9lPXdlW0llXSwwLGosSWUpLFBlPU9lKSx3ZS5oYXNPd25Qcm9wZXJ0eShJZT0iRk9STUFUIikpe2lmKCJvYmplY3QiIT10eXBlb2YoT2U9d2VbSWVdKSl0aHJvdyBFcnJvcihMK0ll''@;'; put 'put ''KyIgbm90IGFuIG9iamVjdDogIitPZSk7RmU9T2V9aWYod2UuaGFzT3duUHJvcGVydHkoSWU9IkFMUEhBQkVUIikpe2lmKCJzdHJpbmciIT10eXBlb2YoT2U9d2VbSWVdKXx8L14uJHxbKy0uXHNdfCguKS4qXDEvLnRlc3QoT2UpKXRocm93IEVycm9yKEwrSWUrIiBpbnZhbGlkOiAiK09lKTtO''@;'; put 'put ''ZT1PZX19cmV0dXJue0RFQ0lNQUxfUExBQ0VTOnAsUk9VTkRJTkdfTU9ERTpTLEVYUE9ORU5USUFMX0FUOltRLHJlXSxSQU5HRTpbZmUsbWVdLENSWVBUTzprZSxNT0RVTE9fTU9ERTpUZSxQT1dfUFJFQ0lTSU9OOlBlLEZPUk1BVDpGZSxBTFBIQUJFVDpOZX19LExlLmlzQmlnTnVtYmVyPWZ1''@;'; put 'put ''bmN0aW9uKHdlKXtyZXR1cm4gd2UgaW5zdGFuY2VvZiBMZXx8d2UmJiEwPT09d2UuX2lzQmlnTnVtYmVyfHwhMX0sTGUubWF4aW11bT1MZS5tYXg9ZnVuY3Rpb24oKXtyZXR1cm4gSGUoYXJndW1lbnRzLE0ubHQpfSxMZS5taW5pbXVtPUxlLm1pbj1mdW5jdGlvbigpe3JldHVybiBIZShhcmd1''@;'; put 'put ''bWVudHMsTS5ndCl9LExlLnJhbmRvbT0oWT05MDA3MTk5MjU0NzQwOTkyLGI9TWF0aC5yYW5kb20oKSpZJjIwOTcxNTE/ZnVuY3Rpb24oKXtyZXR1cm4gQihNYXRoLnJhbmRvbSgpKlkpfTpmdW5jdGlvbigpe3JldHVybiA4Mzg4NjA4KigxMDczNzQxODI0Kk1hdGgucmFuZG9tKCl8MCkrKDgz''@;'; put 'put ''ODg2MDgqTWF0aC5yYW5kb20oKXwwKX0sZnVuY3Rpb24od2Upe3ZhciBJZSxPZSxldCxudCxxZSxodD0wLEVlPVtdLERlPW5ldyBMZSh5KTtpZihudWxsPT13ZT93ZT1wOlUod2UsMCxqKSxudD1IKHdlL0kpLGtlKWlmKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpe2ZvcihJZT1jcnlwdG8uZ2V0''@;'; put 'put ''UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShudCo9MikpO2h0PG50Oyk5ZTE1PD0ocWU9MTMxMDcyKkllW2h0XSsoSWVbaHQrMV0+Pj4xMSkpPyhPZT1jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSksSWVbaHRdPU9lWzBdLEllW2h0KzFdPU9lWzFdKTooRWUu''@;'; put 'put ''cHVzaChxZSUxZTE0KSxodCs9Mik7aHQ9bnQvMn1lbHNle2lmKCFjcnlwdG8ucmFuZG9tQnl0ZXMpdGhyb3cga2U9ITEsRXJyb3IoTCsiY3J5cHRvIHVuYXZhaWxhYmxlIik7Zm9yKEllPWNyeXB0by5yYW5kb21CeXRlcyhudCo9Nyk7aHQ8bnQ7KTllMTU8PShxZT0yODE0NzQ5NzY3MTA2NTYq''@;'; put 'put ''KDMxJkllW2h0XSkrMTA5OTUxMTYyNzc3NipJZVtodCsxXSs0Mjk0OTY3Mjk2KkllW2h0KzJdKzE2Nzc3MjE2KkllW2h0KzNdKyhJZVtodCs0XTw8MTYpKyhJZVtodCs1XTw8OCkrSWVbaHQrNl0pP2NyeXB0by5yYW5kb21CeXRlcyg3KS5jb3B5KEllLGh0KTooRWUucHVzaChxZSUxZTE0KSxo''@;'; put 'put ''dCs9Nyk7aHQ9bnQvN31pZigha2UpZm9yKDtodDxudDspKHFlPWIoKSk8OWUxNSYmKEVlW2h0KytdPXFlJTFlMTQpO2ZvcihudD1FZVstLWh0XSx3ZSU9SSxudCYmd2UmJihFZVtodF09QihudC8ocWU9RVtJLXdlXSkpKnFlKTswPT09RWVbaHRdO0VlLnBvcCgpLGh0LS0pO2lmKGh0PDApRWU9''@;'; put 'put ''W2V0PTBdO2Vsc2V7Zm9yKGV0PS0xOzA9PT1FZVswXTtFZS5zcGxpY2UoMCwxKSxldC09SSk7Zm9yKGh0PTEscWU9RWVbMF07MTA8PXFlO3FlLz0xMCxodCsrKTtodDxJJiYoZXQtPUktaHQpfXJldHVybiBEZS5lPWV0LERlLmM9RWUsRGV9KSxMZS5zdW09ZnVuY3Rpb24oKXtmb3IodmFyIHdl''@;'; put 'put ''PTEsSWU9YXJndW1lbnRzLE9lPW5ldyBMZShJZVswXSk7d2U8SWUubGVuZ3RoOylPZT1PZS5wbHVzKEllW3dlKytdKTtyZXR1cm4gT2V9LHVlPWZ1bmN0aW9uKCl7dmFyIHdlPSIwMTIzNDU2Nzg5IjtmdW5jdGlvbiBJZShPZSxldCxudCxxZSl7Zm9yKHZhciBodCxFZSxEZT1bMF0sJGU9MCxh''@;'; put 'put ''dD1PZS5sZW5ndGg7JGU8YXQ7KXtmb3IoRWU9RGUubGVuZ3RoO0VlLS07RGVbRWVdKj1ldCk7Zm9yKERlWzBdKz1xZS5pbmRleE9mKE9lLmNoYXJBdCgkZSsrKSksaHQ9MDtodDxEZS5sZW5ndGg7aHQrKylEZVtodF0+bnQtMSYmKG51bGw9PURlW2h0KzFdJiYoRGVbaHQrMV09MCksRGVbaHQr''@;'; put 'put ''MV0rPURlW2h0XS9udHwwLERlW2h0XSU9bnQpfXJldHVybiBEZS5yZXZlcnNlKCl9cmV0dXJuIGZ1bmN0aW9uKE9lLGV0LG50LHFlLGh0KXt2YXIgRWUsRGUsJGUsYXQsY3QsT3QsUHQsQXQsSnQ9T2UuaW5kZXhPZigiLiIpLG1uPXAsTnQ9Uztmb3IoMDw9SnQmJihhdD1QZSxQZT0wLE9lPU9l''@;'; put 'put ''LnJlcGxhY2UoIi4iLCIiKSxPdD0oQXQ9bmV3IExlKGV0KSkucG93KE9lLmxlbmd0aC1KdCksUGU9YXQsQXQuYz1JZShuZShHKE90LmMpLE90LmUsIjAiKSwxMCxudCx3ZSksQXQuZT1BdC5jLmxlbmd0aCksJGU9YXQ9KFB0PUllKE9lLGV0LG50LGh0PyhFZT1OZSx3ZSk6KEVlPXdlLE5lKSkp''@;'; put 'put ''Lmxlbmd0aDswPT1QdFstLWF0XTtQdC5wb3AoKSk7aWYoIVB0WzBdKXJldHVybiBFZS5jaGFyQXQoMCk7aWYoSnQ8MD8tLSRlOihPdC5jPVB0LE90LmU9JGUsT3Qucz1xZSxQdD0oT3Q9ZGUoT3QsQXQsbW4sTnQsbnQpKS5jLGN0PU90LnIsJGU9T3QuZSksSnQ9UHRbRGU9JGUrbW4rMV0sYXQ9''@;'; put 'put ''bnQvMixjdD1jdHx8RGU8MHx8bnVsbCE9UHRbRGUrMV0sY3Q9TnQ8ND8obnVsbCE9SnR8fGN0KSYmKDA9PU50fHxOdD09KE90LnM8MD8zOjIpKTphdDxKdHx8SnQ9PWF0JiYoND09TnR8fGN0fHw2PT1OdCYmMSZQdFtEZS0xXXx8TnQ9PShPdC5zPDA/ODo3KSksRGU8MXx8IVB0WzBdKU9lPWN0''@;'; put 'put ''P25lKEVlLmNoYXJBdCgxKSwtbW4sRWUuY2hhckF0KDApKTpFZS5jaGFyQXQoMCk7ZWxzZXtpZihQdC5sZW5ndGg9RGUsY3QpZm9yKC0tbnQ7KytQdFstLURlXT5udDspUHRbRGVdPTAsRGV8fCgrKyRlLFB0PVsxXS5jb25jYXQoUHQpKTtmb3IoYXQ9UHQubGVuZ3RoOyFQdFstLWF0XTspO2Zv''@;'; put 'put ''cihKdD0wLE9lPSIiO0p0PD1hdDtPZSs9RWUuY2hhckF0KFB0W0p0KytdKSk7T2U9bmUoT2UsJGUsRWUuY2hhckF0KDApKX1yZXR1cm4gT2V9fSgpLGRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gd2UoZXQsbnQscWUpe3ZhciBodCxFZSxEZSwkZSxhdD0wLGN0PWV0Lmxlbmd0aCxPdD1udCV6LFB0''@;'; put 'put ''PW50L3p8MDtmb3IoZXQ9ZXQuc2xpY2UoKTtjdC0tOylhdD0oKEVlPU90KihEZT1ldFtjdF0leikrKGh0PVB0KkRlKygkZT1ldFtjdF0venwwKSpPdCkleip6K2F0KS9xZXwwKSsoaHQvenwwKStQdCokZSxldFtjdF09RWUlcWU7cmV0dXJuIGF0JiYoZXQ9W2F0XS5jb25jYXQoZXQpKSxldH1m''@;'; put 'put ''dW5jdGlvbiBJZShldCxudCxxZSxodCl7dmFyIEVlLERlO2lmKHFlIT1odClEZT1odDxxZT8xOi0xO2Vsc2UgZm9yKEVlPURlPTA7RWU8cWU7RWUrKylpZihldFtFZV0hPW50W0VlXSl7RGU9ZXRbRWVdPm50W0VlXT8xOi0xO2JyZWFrfXJldHVybiBEZX1mdW5jdGlvbiBPZShldCxudCxxZSxo''@;'; put 'put ''dCl7Zm9yKHZhciBFZT0wO3FlLS07KWV0W3FlXS09RWUsZXRbcWVdPShFZT1ldFtxZV08bnRbcWVdPzE6MCkqaHQrZXRbcWVdLW50W3FlXTtmb3IoOyFldFswXSYmMTxldC5sZW5ndGg7ZXQuc3BsaWNlKDAsMSkpO31yZXR1cm4gZnVuY3Rpb24oZXQsbnQscWUsaHQsRWUpe3ZhciBEZSwkZSxh''@;'; put 'put ''dCxjdCxPdCxQdCxBdCxKdCxtbixOdCxibixHbixvbiwkbixObixwdCxwbixobj1ldC5zPT1udC5zPzE6LTEsQ3Q9ZXQuYyxlbj1udC5jO2lmKCEoQ3QmJkN0WzBdJiZlbiYmZW5bMF0pKXJldHVybiBuZXcgTGUoZXQucyYmbnQucyYmKEN0PyFlbnx8Q3RbMF0hPWVuWzBdOmVuKT9DdCYmMD09''@;'; put 'put ''Q3RbMF18fCFlbj8wKmhuOmhuLzA6TmFOKTtmb3IobW49KEp0PW5ldyBMZShobikpLmM9W10saG49cWUrKCRlPWV0LmUtbnQuZSkrMSxFZXx8KEVlPUosJGU9VihldC5lL0kpLVYobnQuZS9JKSxobj1obi9JfDApLGF0PTA7ZW5bYXRdPT0oQ3RbYXRdfHwwKTthdCsrKTtpZihlblthdF0+KEN0''@;'; put 'put ''W2F0XXx8MCkmJiRlLS0saG48MCltbi5wdXNoKDEpLGN0PSEwO2Vsc2V7Zm9yKCRuPUN0Lmxlbmd0aCxwdD1lbi5sZW5ndGgsaG4rPTIsMTwoT3Q9QihFZS8oZW5bYXQ9MF0rMSkpKSYmKGVuPXdlKGVuLE90LEVlKSxDdD13ZShDdCxPdCxFZSkscHQ9ZW4ubGVuZ3RoLCRuPUN0Lmxlbmd0aCks''@;'; put 'put ''b249cHQsYm49KE50PUN0LnNsaWNlKDAscHQpKS5sZW5ndGg7Ym48cHQ7TnRbYm4rK109MCk7cG49ZW4uc2xpY2UoKSxwbj1bMF0uY29uY2F0KHBuKSxObj1lblswXSxlblsxXT49RWUvMiYmTm4rKztkb3tpZihPdD0wLChEZT1JZShlbixOdCxwdCxibikpPDApe2lmKEduPU50WzBdLHB0IT1i''@;'; put 'put ''biYmKEduPUduKkVlKyhOdFsxXXx8MCkpLDE8KE90PUIoR24vTm4pKSlmb3IoRWU8PU90JiYoT3Q9RWUtMSksQXQ9KFB0PXdlKGVuLE90LEVlKSkubGVuZ3RoLGJuPU50Lmxlbmd0aDsxPT1JZShQdCxOdCxBdCxibik7KU90LS0sT2UoUHQscHQ8QXQ/cG46ZW4sQXQsRWUpLEF0PVB0Lmxlbmd0''@;'; put 'put ''aCxEZT0xO2Vsc2UgMD09T3QmJihEZT1PdD0xKSxBdD0oUHQ9ZW4uc2xpY2UoKSkubGVuZ3RoO2lmKEF0PGJuJiYoUHQ9WzBdLmNvbmNhdChQdCkpLE9lKE50LFB0LGJuLEVlKSxibj1OdC5sZW5ndGgsLTE9PURlKWZvcig7SWUoZW4sTnQscHQsYm4pPDE7KU90KyssT2UoTnQscHQ8Ym4/cG46''@;'; put 'put ''ZW4sYm4sRWUpLGJuPU50Lmxlbmd0aH1lbHNlIDA9PT1EZSYmKE90KyssTnQ9WzBdKTttblthdCsrXT1PdCxOdFswXT9OdFtibisrXT1DdFtvbl18fDA6KE50PVtDdFtvbl1dLGJuPTEpfXdoaWxlKChvbisrPCRufHxudWxsIT1OdFswXSkmJmhuLS0pO2N0PW51bGwhPU50WzBdLG1uWzBdfHxt''@;'; put 'put ''bi5zcGxpY2UoMCwxKX1pZihFZT09Sil7Zm9yKGF0PTEsaG49bW5bMF07MTA8PWhuO2huLz0xMCxhdCsrKTttdChKdCxxZSsoSnQuZT1hdCskZSpJLTEpKzEsaHQsY3QpfWVsc2UgSnQuZT0kZSxKdC5yPStjdDtyZXR1cm4gSnR9fSgpLHg9L14oLT8pMChbeGJvXSkoPz1cd1tcdy5dKiQpL2ks''@;'; put 'put ''Tj0vXihbXi5dKylcLiQvLEY9L15cLihbXi5dKykkLyxnPS9eLT8oSW5maW5pdHl8TmFOKSQvLEM9L15ccypcKyg/PVtcdy5dKXxeXHMrfFxzKyQvZyxjZT1mdW5jdGlvbih3ZSxJZSxPZSxldCl7dmFyIG50LHFlPU9lP0llOkllLnJlcGxhY2UoQywiIik7aWYoZy50ZXN0KHFlKSl3ZS5zPWlz''@;'; put 'put ''TmFOKHFlKT9udWxsOnFlPDA/LTE6MSx3ZS5jPXdlLmU9bnVsbDtlbHNle2lmKCFPZSYmKHFlPXFlLnJlcGxhY2UoeCxmdW5jdGlvbihodCxFZSxEZSl7cmV0dXJuIG50PSJ4Ij09KERlPURlLnRvTG93ZXJDYXNlKCkpPzE2OiJiIj09RGU/Mjo4LGV0JiZldCE9bnQ/aHQ6RWV9KSxldCYmKG50''@;'; put 'put ''PWV0LHFlPXFlLnJlcGxhY2UoTiwiJDEiKS5yZXBsYWNlKEYsIjAuJDEiKSksSWUhPXFlKSlyZXR1cm4gbmV3IExlKHFlLG50KTtpZihMZS5ERUJVRyl0aHJvdyBFcnJvcihMKyJOb3QgYSIrKGV0PyIgYmFzZSAiK2V0OiIiKSsiIG51bWJlcjogIitJZSk7d2UuYz13ZS5lPXdlLnM9bnVsbH19''@;'; put 'put ''LE0uYWJzb2x1dGVWYWx1ZT1NLmFicz1mdW5jdGlvbigpe3ZhciB3ZT1uZXcgTGUodGhpcyk7cmV0dXJuIHdlLnM8MCYmKHdlLnM9MSksd2V9LE0uY29tcGFyZWRUbz1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIFcodGhpcyxuZXcgTGUod2UsSWUpKX0sTS5kZWNpbWFsUGxhY2VzPU0uZHA9ZnVu''@;'; put 'put ''Y3Rpb24od2UsSWUpe3ZhciBPZSxldCxudDtpZihudWxsIT13ZSlyZXR1cm4gVSh3ZSwwLGopLG51bGw9PUllP0llPVM6VShJZSwwLDgpLG10KG5ldyBMZSh0aGlzKSx3ZSt0aGlzLmUrMSxJZSk7aWYoIShPZT10aGlzLmMpKXJldHVybiBudWxsO2lmKGV0PSgobnQ9T2UubGVuZ3RoLTEpLVYo''@;'; put 'put ''dGhpcy5lL0kpKSpJLG50PU9lW250XSlmb3IoO250JTEwPT0wO250Lz0xMCxldC0tKTtyZXR1cm4gZXQ8MCYmKGV0PTApLGV0fSxNLmRpdmlkZWRCeT1NLmRpdj1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuIGRlKHRoaXMsbmV3IExlKHdlLEllKSxwLFMpfSxNLmRpdmlkZWRUb0ludGVnZXJCeT1N''@;'; put 'put ''LmlkaXY9ZnVuY3Rpb24od2UsSWUpe3JldHVybiBkZSh0aGlzLG5ldyBMZSh3ZSxJZSksMCwxKX0sTS5leHBvbmVudGlhdGVkQnk9TS5wb3c9ZnVuY3Rpb24od2UsSWUpe3ZhciBPZSxldCxudCxxZSxodCxFZSxEZSwkZSxhdD10aGlzO2lmKCh3ZT1uZXcgTGUod2UpKS5jJiYhd2UuaXNJbnRl''@;'; put 'put ''Z2VyKCkpdGhyb3cgRXJyb3IoTCsiRXhwb25lbnQgbm90IGFuIGludGVnZXI6ICIrS2Uod2UpKTtpZihudWxsIT1JZSYmKEllPW5ldyBMZShJZSkpLGh0PTE0PHdlLmUsIWF0LmN8fCFhdC5jWzBdfHwxPT1hdC5jWzBdJiYhYXQuZSYmMT09YXQuYy5sZW5ndGh8fCF3ZS5jfHwhd2UuY1swXSly''@;'; put 'put ''ZXR1cm4gJGU9bmV3IExlKE1hdGgucG93KCtLZShhdCksaHQ/Mi1xKHdlKTorS2Uod2UpKSksSWU/JGUubW9kKEllKTokZTtpZihFZT13ZS5zPDAsSWUpe2lmKEllLmM/IUllLmNbMF06IUllLnMpcmV0dXJuIG5ldyBMZShOYU4pOyhldD0hRWUmJmF0LmlzSW50ZWdlcigpJiZJZS5pc0ludGVn''@;'; put 'put ''ZXIoKSkmJihhdD1hdC5tb2QoSWUpKX1lbHNle2lmKDk8d2UuZSYmKDA8YXQuZXx8YXQuZTwtMXx8KDA9PWF0LmU/MTxhdC5jWzBdfHxodCYmMjRlNzw9YXQuY1sxXTphdC5jWzBdPDhlMTN8fGh0JiZhdC5jWzBdPD05OTk5OTc1ZTcpKSlyZXR1cm4gcWU9YXQuczwwJiZxKHdlKT8tMDowLC0x''@;'; put 'put ''PGF0LmUmJihxZT0xL3FlKSxuZXcgTGUoRWU/MS9xZTpxZSk7UGUmJihxZT1IKFBlL0krMikpfWZvcihEZT1odD8oT2U9bmV3IExlKC41KSxFZSYmKHdlLnM9MSkscSh3ZSkpOihudD1NYXRoLmFicygrS2Uod2UpKSklMiwkZT1uZXcgTGUoeSk7Oyl7aWYoRGUpe2lmKCEoJGU9JGUudGltZXMo''@;'; put 'put ''YXQpKS5jKWJyZWFrO3FlPyRlLmMubGVuZ3RoPnFlJiYoJGUuYy5sZW5ndGg9cWUpOmV0JiYoJGU9JGUubW9kKEllKSl9aWYobnQpe2lmKDA9PT0obnQ9QihudC8yKSkpYnJlYWs7RGU9bnQlMn1lbHNlIGlmKG10KHdlPXdlLnRpbWVzKE9lKSx3ZS5lKzEsMSksMTQ8d2UuZSlEZT1xKHdlKTtl''@;'; put 'put ''bHNle2lmKDA9PShudD0rS2Uod2UpKSlicmVhaztEZT1udCUyfWF0PWF0LnRpbWVzKGF0KSxxZT9hdC5jJiZhdC5jLmxlbmd0aD5xZSYmKGF0LmMubGVuZ3RoPXFlKTpldCYmKGF0PWF0Lm1vZChJZSkpfXJldHVybiBldD8kZTooRWUmJigkZT15LmRpdigkZSkpLEllPyRlLm1vZChJZSk6cWU/''@;'; put 'put ''bXQoJGUsUGUsUyx2b2lkIDApOiRlKX0sTS5pbnRlZ2VyVmFsdWU9ZnVuY3Rpb24od2Upe3ZhciBJZT1uZXcgTGUodGhpcyk7cmV0dXJuIG51bGw9PXdlP3dlPVM6VSh3ZSwwLDgpLG10KEllLEllLmUrMSx3ZSl9LE0uaXNFcXVhbFRvPU0uZXE9ZnVuY3Rpb24od2UsSWUpe3JldHVybiAwPT09''@;'; put 'put ''Vyh0aGlzLG5ldyBMZSh3ZSxJZSkpfSxNLmlzRmluaXRlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmN9LE0uaXNHcmVhdGVyVGhhbj1NLmd0PWZ1bmN0aW9uKHdlLEllKXtyZXR1cm4gMDxXKHRoaXMsbmV3IExlKHdlLEllKSl9LE0uaXNHcmVhdGVyVGhhbk9yRXF1YWxUbz1NLmd0ZT1mdW5j''@;'; put 'put ''dGlvbih3ZSxJZSl7cmV0dXJuIDE9PT0oSWU9Vyh0aGlzLG5ldyBMZSh3ZSxJZSkpKXx8MD09PUllfSxNLmlzSW50ZWdlcj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jJiZWKHRoaXMuZS9JKT50aGlzLmMubGVuZ3RoLTJ9LE0uaXNMZXNzVGhhbj1NLmx0PWZ1bmN0aW9uKHdlLEllKXtyZXR1''@;'; put 'put ''cm4gVyh0aGlzLG5ldyBMZSh3ZSxJZSkpPDB9LE0uaXNMZXNzVGhhbk9yRXF1YWxUbz1NLmx0ZT1mdW5jdGlvbih3ZSxJZSl7cmV0dXJuLTE9PT0oSWU9Vyh0aGlzLG5ldyBMZSh3ZSxJZSkpKXx8MD09PUllfSxNLmlzTmFOPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc30sTS5pc05lZ2F0aXZl''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuczwwfSxNLmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLnN9LE0uaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmMmJjA9PXRoaXMuY1swXX0sTS5taW51cz1mdW5jdGlvbih3ZSxJZSl7dmFyIE9lLGV0LG50LHFlLGh0PXRo''@;'; put 'put ''aXMsRWU9aHQucztpZihJZT0od2U9bmV3IExlKHdlLEllKSkucywhRWV8fCFJZSlyZXR1cm4gbmV3IExlKE5hTik7aWYoRWUhPUllKXJldHVybiB3ZS5zPS1JZSxodC5wbHVzKHdlKTt2YXIgRGU9aHQuZS9JLCRlPXdlLmUvSSxhdD1odC5jLGN0PXdlLmM7aWYoIURlfHwhJGUpe2lmKCFhdHx8''@;'; put 'put ''IWN0KXJldHVybiBhdD8od2Uucz0tSWUsd2UpOm5ldyBMZShjdD9odDpOYU4pO2lmKCFhdFswXXx8IWN0WzBdKXJldHVybiBjdFswXT8od2Uucz0tSWUsd2UpOm5ldyBMZShhdFswXT9odDozPT1TPy0wOjApfWlmKERlPVYoRGUpLCRlPVYoJGUpLGF0PWF0LnNsaWNlKCksRWU9RGUtJGUpe2Zv''@;'; put 'put ''cigobnQ9KHFlPUVlPDApPyhFZT0tRWUsYXQpOigkZT1EZSxjdCkpLnJldmVyc2UoKSxJZT1FZTtJZS0tO250LnB1c2goMCkpO250LnJldmVyc2UoKX1lbHNlIGZvcihldD0ocWU9KEVlPWF0Lmxlbmd0aCk8KEllPWN0Lmxlbmd0aCkpP0VlOkllLEVlPUllPTA7SWU8ZXQ7SWUrKylpZihhdFtJ''@;'; put 'put ''ZV0hPWN0W0llXSl7cWU9YXRbSWVdPGN0W0llXTticmVha31pZihxZSYmKG50PWF0LGF0PWN0LGN0PW50LHdlLnM9LXdlLnMpLDA8KEllPShldD1jdC5sZW5ndGgpLShPZT1hdC5sZW5ndGgpKSlmb3IoO0llLS07YXRbT2UrK109MCk7Zm9yKEllPUotMTtFZTxldDspe2lmKGF0Wy0tZXRdPGN0''@;'; put 'put ''W2V0XSl7Zm9yKE9lPWV0O09lJiYhYXRbLS1PZV07YXRbT2VdPUllKTstLWF0W09lXSxhdFtldF0rPUp9YXRbZXRdLT1jdFtldF19Zm9yKDswPT1hdFswXTthdC5zcGxpY2UoMCwxKSwtLSRlKTtyZXR1cm4gYXRbMF0/UWUod2UsYXQsJGUpOih3ZS5zPTM9PVM/LTE6MSx3ZS5jPVt3ZS5lPTBd''@;'; put 'put ''LHdlKX0sTS5tb2R1bG89TS5tb2Q9ZnVuY3Rpb24od2UsSWUpe3ZhciBPZSxldCxudD10aGlzO3JldHVybiB3ZT1uZXcgTGUod2UsSWUpLCFudC5jfHwhd2Uuc3x8d2UuYyYmIXdlLmNbMF0/bmV3IExlKE5hTik6IXdlLmN8fG50LmMmJiFudC5jWzBdP25ldyBMZShudCk6KDk9PVRlPyhldD13''@;'; put 'put ''ZS5zLHdlLnM9MSxPZT1kZShudCx3ZSwwLDMpLHdlLnM9ZXQsT2Uucyo9ZXQpOk9lPWRlKG50LHdlLDAsVGUpLCh3ZT1udC5taW51cyhPZS50aW1lcyh3ZSkpKS5jWzBdfHwxIT1UZXx8KHdlLnM9bnQucyksd2UpfSxNLm11bHRpcGxpZWRCeT1NLnRpbWVzPWZ1bmN0aW9uKHdlLEllKXt2YXIg''@;'; put 'put ''T2UsZXQsbnQscWUsaHQsRWUsRGUsJGUsYXQsY3QsT3QsUHQsQXQsSnQsbW4sTnQ9dGhpcyxibj1OdC5jLEduPSh3ZT1uZXcgTGUod2UsSWUpKS5jO2lmKCEoYm4mJkduJiZiblswXSYmR25bMF0pKXJldHVybiFOdC5zfHwhd2Uuc3x8Ym4mJiFiblswXSYmIUdufHxHbiYmIUduWzBdJiYhYm4/''@;'; put 'put ''d2UuYz13ZS5lPXdlLnM9bnVsbDood2Uucyo9TnQucyxibiYmR24/KHdlLmM9WzBdLHdlLmU9MCk6d2UuYz13ZS5lPW51bGwpLHdlO2ZvcihldD1WKE50LmUvSSkrVih3ZS5lL0kpLHdlLnMqPU50LnMsKERlPWJuLmxlbmd0aCk8KGN0PUduLmxlbmd0aCkmJihBdD1ibixibj1HbixHbj1BdCxu''@;'; put 'put ''dD1EZSxEZT1jdCxjdD1udCksbnQ9RGUrY3QsQXQ9W107bnQtLTtBdC5wdXNoKDApKTtmb3IoSnQ9Sixtbj16LG50PWN0OzA8PS0tbnQ7KXtmb3IoT2U9MCxPdD1HbltudF0lbW4sUHQ9R25bbnRdL21ufDAscWU9bnQrKGh0PURlKTtudDxxZTspT2U9KCgkZT1PdCooJGU9Ym5bLS1odF0lbW4p''@;'; put 'put ''KyhFZT1QdCokZSsoYXQ9Ym5baHRdL21ufDApKk90KSVtbiptbitBdFtxZV0rT2UpL0p0fDApKyhFZS9tbnwwKStQdCphdCxBdFtxZS0tXT0kZSVKdDtBdFtxZV09T2V9cmV0dXJuIE9lPysrZXQ6QXQuc3BsaWNlKDAsMSksUWUod2UsQXQsZXQpfSxNLm5lZ2F0ZWQ9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''d2U9bmV3IExlKHRoaXMpO3JldHVybiB3ZS5zPS13ZS5zfHxudWxsLHdlfSxNLnBsdXM9ZnVuY3Rpb24od2UsSWUpe3ZhciBPZSxldD10aGlzLG50PWV0LnM7aWYoSWU9KHdlPW5ldyBMZSh3ZSxJZSkpLnMsIW50fHwhSWUpcmV0dXJuIG5ldyBMZShOYU4pO2lmKG50IT1JZSlyZXR1cm4gd2Uu''@;'; put 'put ''cz0tSWUsZXQubWludXMod2UpO3ZhciBxZT1ldC5lL0ksaHQ9d2UuZS9JLEVlPWV0LmMsRGU9d2UuYztpZighcWV8fCFodCl7aWYoIUVlfHwhRGUpcmV0dXJuIG5ldyBMZShudC8wKTtpZighRWVbMF18fCFEZVswXSlyZXR1cm4gRGVbMF0/d2U6bmV3IExlKEVlWzBdP2V0OjAqbnQpfWlmKHFl''@;'; put 'put ''PVYocWUpLGh0PVYoaHQpLEVlPUVlLnNsaWNlKCksbnQ9cWUtaHQpe2ZvcigoT2U9MDxudD8oaHQ9cWUsRGUpOihudD0tbnQsRWUpKS5yZXZlcnNlKCk7bnQtLTtPZS5wdXNoKDApKTtPZS5yZXZlcnNlKCl9Zm9yKChudD1FZS5sZW5ndGgpLShJZT1EZS5sZW5ndGgpPDAmJihPZT1EZSxEZT1F''@;'; put 'put ''ZSxFZT1PZSxJZT1udCksbnQ9MDtJZTspbnQ9KEVlWy0tSWVdPUVlW0llXStEZVtJZV0rbnQpL0p8MCxFZVtJZV09Sj09PUVlW0llXT8wOkVlW0llXSVKO3JldHVybiBudCYmKEVlPVtudF0uY29uY2F0KEVlKSwrK2h0KSxRZSh3ZSxFZSxodCl9LE0ucHJlY2lzaW9uPU0uc2Q9ZnVuY3Rpb24o''@;'; put 'put ''d2UsSWUpe3ZhciBPZSxldCxudDtpZihudWxsIT13ZSYmd2UhPT0hIXdlKXJldHVybiBVKHdlLDEsaiksbnVsbD09SWU/SWU9UzpVKEllLDAsOCksbXQobmV3IExlKHRoaXMpLHdlLEllKTtpZighKE9lPXRoaXMuYykpcmV0dXJuIG51bGw7aWYoZXQ9KG50PU9lLmxlbmd0aC0xKSpJKzEsbnQ9''@;'; put 'put ''T2VbbnRdKXtmb3IoO250JTEwPT0wO250Lz0xMCxldC0tKTtmb3IobnQ9T2VbMF07MTA8PW50O250Lz0xMCxldCsrKTt9cmV0dXJuIHdlJiZ0aGlzLmUrMT5ldCYmKGV0PXRoaXMuZSsxKSxldH0sTS5zaGlmdGVkQnk9ZnVuY3Rpb24od2Upe3JldHVybiBVKHdlLC1SLFIpLHRoaXMudGltZXMo''@;'; put 'put ''IjFlIit3ZSl9LE0uc3F1YXJlUm9vdD1NLnNxcnQ9ZnVuY3Rpb24oKXt2YXIgd2UsSWUsT2UsZXQsbnQscWU9dGhpcyxodD1xZS5jLEVlPXFlLnMsRGU9cWUuZSwkZT1wKzQsYXQ9bmV3IExlKCIwLjUiKTtpZigxIT09RWV8fCFodHx8IWh0WzBdKXJldHVybiBuZXcgTGUoIUVlfHxFZTwwJiYo''@;'; put 'put ''IWh0fHxodFswXSk/TmFOOmh0P3FlOjEvMCk7aWYoKE9lPTA9PShFZT1NYXRoLnNxcnQoK0tlKHFlKSkpfHxFZT09MS8wPygoKEllPUcoaHQpKS5sZW5ndGgrRGUpJTI9PTAmJihJZSs9IjAiKSxFZT1NYXRoLnNxcnQoK0llKSxEZT1WKChEZSsxKS8yKS0oRGU8MHx8RGUlMiksbmV3IExlKEll''@;'; put 'put ''PUVlPT0xLzA/IjFlIitEZTooSWU9RWUudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLEllLmluZGV4T2YoImUiKSsxKStEZSkpOm5ldyBMZShFZSsiIikpLmNbMF0pZm9yKChFZT0oRGU9T2UuZSkrJGUpPDMmJihFZT0wKTs7KWlmKE9lPWF0LnRpbWVzKChudD1PZSkucGx1cyhkZShxZSxudCwk''@;'; put 'put ''ZSwxKSkpLEcobnQuYykuc2xpY2UoMCxFZSk9PT0oSWU9RyhPZS5jKSkuc2xpY2UoMCxFZSkpe2lmKE9lLmU8RGUmJi0tRWUsIjk5OTkiIT0oSWU9SWUuc2xpY2UoRWUtMyxFZSsxKSkmJihldHx8IjQ5OTkiIT1JZSkpeytJZSYmKCtJZS5zbGljZSgxKXx8IjUiIT1JZS5jaGFyQXQoMCkpfHwo''@;'; put 'put ''bXQoT2UsT2UuZStwKzIsMSksd2U9IU9lLnRpbWVzKE9lKS5lcShxZSkpO2JyZWFrfWlmKCFldCYmKG10KG50LG50LmUrcCsyLDApLG50LnRpbWVzKG50KS5lcShxZSkpKXtPZT1udDticmVha30kZSs9NCxFZSs9NCxldD0xfXJldHVybiBtdChPZSxPZS5lK3ArMSxTLHdlKX0sTS50b0V4cG9u''@;'; put 'put ''ZW50aWFsPWZ1bmN0aW9uKHdlLEllKXtyZXR1cm4gbnVsbCE9d2UmJihVKHdlLDAsaiksd2UrKyksQmUodGhpcyx3ZSxJZSwxKX0sTS50b0ZpeGVkPWZ1bmN0aW9uKHdlLEllKXtyZXR1cm4gbnVsbCE9d2UmJihVKHdlLDAsaiksd2U9d2UrdGhpcy5lKzEpLEJlKHRoaXMsd2UsSWUpfSxNLnRv''@;'; put 'put ''Rm9ybWF0PWZ1bmN0aW9uKHdlLEllLE9lKXt2YXIgZXQ7aWYobnVsbD09T2UpbnVsbCE9d2UmJkllJiYib2JqZWN0Ij09dHlwZW9mIEllPyhPZT1JZSxJZT1udWxsKTp3ZSYmIm9iamVjdCI9PXR5cGVvZiB3ZT8oT2U9d2Usd2U9SWU9bnVsbCk6T2U9RmU7ZWxzZSBpZigib2JqZWN0IiE9dHlw''@;'; put 'put ''ZW9mIE9lKXRocm93IEVycm9yKEwrIkFyZ3VtZW50IG5vdCBhbiBvYmplY3Q6ICIrT2UpO2lmKGV0PXRoaXMudG9GaXhlZCh3ZSxJZSksdGhpcy5jKXt2YXIgbnQscWU9ZXQuc3BsaXQoIi4iKSxodD0rT2UuZ3JvdXBTaXplLEVlPStPZS5zZWNvbmRhcnlHcm91cFNpemUsRGU9T2UuZ3JvdXBT''@;'; put 'put ''ZXBhcmF0b3J8fCIiLCRlPXFlWzBdLGF0PXFlWzFdLGN0PXRoaXMuczwwLE90PWN0PyRlLnNsaWNlKDEpOiRlLFB0PU90Lmxlbmd0aDtpZihFZSYmKG50PWh0LGh0PUVlLFB0LT1FZT1udCksMDxodCYmMDxQdCl7Zm9yKCRlPU90LnN1YnN0cigwLG50PVB0JWh0fHxodCk7bnQ8UHQ7bnQrPWh0''@;'; put 'put ''KSRlKz1EZStPdC5zdWJzdHIobnQsaHQpOzA8RWUmJigkZSs9RGUrT3Quc2xpY2UobnQpKSxjdCYmKCRlPSItIiskZSl9ZXQ9YXQ/JGUrKE9lLmRlY2ltYWxTZXBhcmF0b3J8fCIiKSsoKEVlPStPZS5mcmFjdGlvbkdyb3VwU2l6ZSk/YXQucmVwbGFjZShuZXcgUmVnRXhwKCJcXGR7IitFZSsi''@;'; put 'put ''fVxcQiIsImciKSwiJCYiKyhPZS5mcmFjdGlvbkdyb3VwU2VwYXJhdG9yfHwiIikpOmF0KTokZX1yZXR1cm4oT2UucHJlZml4fHwiIikrZXQrKE9lLnN1ZmZpeHx8IiIpfSxNLnRvRnJhY3Rpb249ZnVuY3Rpb24od2Upe3ZhciBJZSxPZSxldCxudCxxZSxodCxFZSxEZSwkZSxhdCxjdCxPdCxQ''@;'; put 'put ''dD10aGlzLEF0PVB0LmM7aWYobnVsbCE9d2UmJighKEVlPW5ldyBMZSh3ZSkpLmlzSW50ZWdlcigpJiYoRWUuY3x8MSE9PUVlLnMpfHxFZS5sdCh5KSkpdGhyb3cgRXJyb3IoTCsiQXJndW1lbnQgIisoRWUuaXNJbnRlZ2VyKCk/Im91dCBvZiByYW5nZTogIjoibm90IGFuIGludGVnZXI6ICIp''@;'; put 'put ''K0tlKEVlKSk7aWYoIUF0KXJldHVybiBuZXcgTGUoUHQpO2ZvcihJZT1uZXcgTGUoeSksJGU9T2U9bmV3IExlKHkpLGV0PURlPW5ldyBMZSh5KSxPdD1HKEF0KSxxZT1JZS5lPU90Lmxlbmd0aC1QdC5lLTEsSWUuY1swXT1FWyhodD1xZSVJKTwwP0kraHQ6aHRdLHdlPSF3ZXx8MDxFZS5jb21w''@;'; put 'put ''YXJlZFRvKEllKT8wPHFlP0llOiRlOkVlLGh0PW1lLG1lPTEvMCxFZT1uZXcgTGUoT3QpLERlLmNbMF09MDthdD1kZShFZSxJZSwwLDEpLDEhPShudD1PZS5wbHVzKGF0LnRpbWVzKGV0KSkpLmNvbXBhcmVkVG8od2UpOylPZT1ldCxldD1udCwkZT1EZS5wbHVzKGF0LnRpbWVzKG50PSRlKSks''@;'; put 'put ''RGU9bnQsSWU9RWUubWludXMoYXQudGltZXMobnQ9SWUpKSxFZT1udDtyZXR1cm4gbnQ9ZGUod2UubWludXMoT2UpLGV0LDAsMSksRGU9RGUucGx1cyhudC50aW1lcygkZSkpLE9lPU9lLnBsdXMobnQudGltZXMoZXQpKSxEZS5zPSRlLnM9UHQucyxjdD1kZSgkZSxldCxxZSo9MixTKS5taW51''@;'; put 'put ''cyhQdCkuYWJzKCkuY29tcGFyZWRUbyhkZShEZSxPZSxxZSxTKS5taW51cyhQdCkuYWJzKCkpPDE/WyRlLGV0XTpbRGUsT2VdLG1lPWh0LGN0fSxNLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuK0tlKHRoaXMpfSxNLnRvUHJlY2lzaW9uPWZ1bmN0aW9uKHdlLEllKXtyZXR1cm4gbnVsbCE9''@;'; put 'put ''d2UmJlUod2UsMSxqKSxCZSh0aGlzLHdlLEllLDIpfSxNLnRvU3RyaW5nPWZ1bmN0aW9uKHdlKXt2YXIgSWUsT2U9dGhpcyxldD1PZS5zLG50PU9lLmU7cmV0dXJuIG51bGw9PT1udD9ldD8oSWU9IkluZmluaXR5IixldDwwJiYoSWU9Ii0iK0llKSk6SWU9Ik5hTiI6KEllPW51bGw9PXdlP250''@;'; put 'put ''PD1RfHxyZTw9bnQ/dGUoRyhPZS5jKSxudCk6bmUoRyhPZS5jKSxudCwiMCIpOjEwPT09d2U/bmUoRygoT2U9bXQobmV3IExlKE9lKSxwK250KzEsUykpLmMpLE9lLmUsIjAiKTooVSh3ZSwyLE5lLmxlbmd0aCwiQmFzZSIpLHVlKG5lKEcoT2UuYyksbnQsIjAiKSwxMCx3ZSxldCwhMCkpLGV0''@;'; put 'put ''PDAmJk9lLmNbMF0mJihJZT0iLSIrSWUpKSxJZX0sTS52YWx1ZU9mPU0udG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIEtlKHRoaXMpfSxNLl9pc0JpZ051bWJlcj0hMCwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvciYmKE1bU3ltYm9s''@;'; put 'put ''LnRvU3RyaW5nVGFnXT0iQmlnTnVtYmVyIixNW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPU0udmFsdWVPZiksbnVsbCE9bGUmJkxlLnNldChsZSksTGV9KCkpLmRlZmF1bHQ9di5CaWdOdW1iZXI9dix2b2lkIDAhPT1UJiZULmV4cG9ydHM/VC5leHBvcnRzPXY6''@;'; put 'put ''KGt8fChrPXR5cGVvZiBzZWxmPCJ1IiYmc2VsZj9zZWxmOndpbmRvdyksay5CaWdOdW1iZXI9dil9KHRoaXMpfSx7fV0sMjpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO1QuZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVuLVVTIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2lt''@;'; put 'put ''YWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxzcGFjZVNlcGFyYXRlZDohMSxvcmRpbmFsOmZ1bmN0aW9uKGspe3ZhciB2PWslMTA7cmV0dXJuIDE9PX5+KGslMTAwLzEwKT8idGgiOjE9PT12PyJzdCI6Mj09''@;'; put 'put ''PXY/Im5kIjozPT09dj8icmQiOiJ0aCJ9LGN1cnJlbmN5OntzeW1ib2w6IiQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IlVTRCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRz''@;'; put 'put ''Ont0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5Iix0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYToyfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlz''@;'; put 'put ''c2E6Mn0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5Iix0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV0sMzpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoVixHKXtyZXR1cm4gZnVuY3Rpb24oVyl7aWYoQXJyYXkuaXNB''@;'; put 'put ''cnJheShXKSlyZXR1cm4gV30oVil8fGZ1bmN0aW9uKFcsVSl7dmFyIHE9W10sdGU9ITAsbmU9ITEsaWU9dm9pZCAwO3RyeXtmb3IodmFyIGxlLGRlPVdbU3ltYm9sLml0ZXJhdG9yXSgpOyEodGU9KGxlPWRlLm5leHQoKSkuZG9uZSkmJihxLnB1c2gobGUudmFsdWUpLCFVfHxxLmxlbmd0aCE9''@;'; put 'put ''PVUpO3RlPSEwKTt9Y2F0Y2godWUpe25lPSEwLGllPXVlfWZpbmFsbHl7dHJ5e3RlfHxudWxsPT1kZS5yZXR1cm58fGRlLnJldHVybigpfWZpbmFsbHl7aWYobmUpdGhyb3cgaWV9fXJldHVybiBxfShWLEcpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1w''@;'; put 'put ''dCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgdj16ZSgiLi9nbG9iYWxTdGF0ZSIpLGhlPXplKCIuL3ZhbGlkYXRpbmciKSxIPXplKCIuL3BhcnNpbmciKSxCPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIiwiUEIiLCJFQiIsIlpCIiwiWUIiXSxMPXtnZW5l''@;'; put 'put ''cmFsOntzY2FsZToxMDI0LHN1ZmZpeGVzOkIsbWFya2VyOiJiZCJ9LGJpbmFyeTp7c2NhbGU6MTAyNCxzdWZmaXhlczpbIkIiLCJLaUIiLCJNaUIiLCJHaUIiLCJUaUIiLCJQaUIiLCJFaUIiLCJaaUIiLCJZaUIiXSxtYXJrZXI6ImIifSxkZWNpbWFsOntzY2FsZToxZTMsc3VmZml4ZXM6Qixt''@;'; put 'put ''YXJrZXI6ImQifX0sSz17dG90YWxMZW5ndGg6MCxjaGFyYWN0ZXJpc3RpYzowLGZvcmNlQXZlcmFnZTohMSxhdmVyYWdlOiExLG1hbnRpc3NhOi0xLG9wdGlvbmFsTWFudGlzc2E6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITEsc3BhY2VTZXBhcmF0ZWQ6ITEsbmVnYXRpdmU6InNpZ24iLGZvcmNl''@;'; put 'put ''U2lnbjohMX07ZnVuY3Rpb24gSihWKXt2YXIgRz0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sVz0yPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIEcmJihHPUgucGFyc2VGb3Jt''@;'; put 'put ''YXQoRykpLCFoZS52YWxpZGF0ZUZvcm1hdChHKSlyZXR1cm4iRVJST1I6IGludmFsaWQgZm9ybWF0Ijt2YXIgVT1HLnByZWZpeHx8IiIscT1HLnBvc3RmaXh8fCIiLHRlPWZ1bmN0aW9uKG5lLGllLGxlKXtzd2l0Y2goaWUub3V0cHV0KXtjYXNlImN1cnJlbmN5IjpyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''TmUsTGUsQmUpe3ZhciBIZT1CZS5jdXJyZW50Q3VycmVuY3koKSxRZT1PYmplY3QuYXNzaWduKHt9LEssTGUpLG10PXZvaWQgMCxLZT0iIix3ZT0hIVFlLnRvdGFsTGVuZ3RofHwhIVFlLmZvcmNlQXZlcmFnZXx8UWUuYXZlcmFnZSxJZT1MZS5jdXJyZW5jeVBvc2l0aW9ufHxIZS5wb3NpdGlv''@;'; put 'put ''bixPZT1MZS5jdXJyZW5jeVN5bWJvbHx8SGUuc3ltYm9sO1FlLnNwYWNlU2VwYXJhdGVkJiYoS2U9IiAiKSwiaW5maXgiPT09SWUmJihtdD1LZStPZStLZSk7dmFyIGV0PXooe2luc3RhbmNlOk5lLHByb3ZpZGVkRm9ybWF0OkxlLHN0YXRlOkJlLGRlY2ltYWxTZXBhcmF0b3I6bXR9KTtyZXR1''@;'; put 'put ''cm4icHJlZml4Ij09PUllJiYoZXQ9TmUuX3ZhbHVlPDAmJiJzaWduIj09PVFlLm5lZ2F0aXZlPyItIi5jb25jYXQoS2UpLmNvbmNhdChPZSkuY29uY2F0KGV0LnNsaWNlKDEpKTpPZStLZStldCksSWUmJiJwb3N0Zml4IiE9PUllfHwoZXQ9ZXQrKEtlPXdlPyIiOktlKStPZSksZXR9KG5lLGll''@;'; put 'put ''PWooaWUsdi5jdXJyZW50Q3VycmVuY3lEZWZhdWx0Rm9ybWF0KCkpLHYpO2Nhc2UicGVyY2VudCI6cmV0dXJuIGllPWooaWUsdi5jdXJyZW50UGVyY2VudGFnZURlZmF1bHRGb3JtYXQoKSksQmU9dixRZT0oTGU9aWUpLnByZWZpeFN5bWJvbCxtdD16KHtpbnN0YW5jZTpsZSgxMDAqbmUuX3Zh''@;'; put 'put ''bHVlKSxwcm92aWRlZEZvcm1hdDpMZSxzdGF0ZTpCZX0pLEtlPU9iamVjdC5hc3NpZ24oe30sSyxMZSksUWU/IiUiLmNvbmNhdChLZS5zcGFjZVNlcGFyYXRlZD8iICI6IiIpLmNvbmNhdChtdCk6IiIuY29uY2F0KG10KS5jb25jYXQoS2Uuc3BhY2VTZXBhcmF0ZWQ/IiAiOiIiLCIlIik7Y2Fz''@;'; put 'put ''ZSJieXRlIjpyZXR1cm4gaWU9aihpZSx2LmN1cnJlbnRCeXRlRGVmYXVsdEZvcm1hdCgpKSxTPXYsUT1sZSxyZT0ocD1pZSkuYmFzZXx8ImJpbmFyeSIsVGU9KG1lPUkobmUuX3ZhbHVlLChmZT1MW3JlXSkuc3VmZml4ZXMsZmUuc2NhbGUpKS5zdWZmaXgsUGU9eih7aW5zdGFuY2U6UShtZS52''@;'; put 'put ''YWx1ZSkscHJvdmlkZWRGb3JtYXQ6cCxzdGF0ZTpTLGRlZmF1bHRzOlMuY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0KCl9KSxGZT1TLmN1cnJlbnRBYmJyZXZpYXRpb25zKCksIiIuY29uY2F0KFBlKS5jb25jYXQoRmUuc3BhY2VkPyIgIjoiIikuY29uY2F0KFRlKTtjYXNlInRpbWUiOnJldHVy''@;'; put 'put ''biBpZT1qKGllLHYuY3VycmVudFRpbWVEZWZhdWx0Rm9ybWF0KCkpLEY9bmUsZz1NYXRoLmZsb29yKEYuX3ZhbHVlLzYwLzYwKSxDPU1hdGguZmxvb3IoKEYuX3ZhbHVlLTYwKmcqNjApLzYwKSxNPU1hdGgucm91bmQoRi5fdmFsdWUtNjAqZyo2MC02MCpDKSwiIi5jb25jYXQoZywiOiIpLmNv''@;'; put 'put ''bmNhdChDPDEwPyIwIjoiIikuY29uY2F0KEMsIjoiKS5jb25jYXQoTTwxMD8iMCI6IiIpLmNvbmNhdChNKTtjYXNlIm9yZGluYWwiOnJldHVybiBkZT1uZSx1ZT1pZT1qKGllLHYuY3VycmVudE9yZGluYWxEZWZhdWx0Rm9ybWF0KCkpLFk9KGNlPXYpLmN1cnJlbnRPcmRpbmFsKCksYj1PYmpl''@;'; put 'put ''Y3QuYXNzaWduKHt9LEssdWUpLHg9eih7aW5zdGFuY2U6ZGUscHJvdmlkZWRGb3JtYXQ6dWUsc3RhdGU6Y2V9KSxOPVkoZGUuX3ZhbHVlKSwiIi5jb25jYXQoeCkuY29uY2F0KGIuc3BhY2VTZXBhcmF0ZWQ/IiAiOiIiKS5jb25jYXQoTik7ZGVmYXVsdDpyZXR1cm4geih7aW5zdGFuY2U6bmUs''@;'; put 'put ''cHJvdmlkZWRGb3JtYXQ6aWUsbnVtYnJvOmxlfSl9dmFyIExlLEJlLFFlLG10LEtlLGRlLHVlLGNlLFksYix4LE4sRixnLEMsTSxwLFMsUSxyZSxmZSxtZSxUZSxQZSxGZX0oVixHLFcpO3JldHVybih0ZT1VK3RlKStxfWZ1bmN0aW9uIEkoVixHLFcpe3ZhciBVPUdbMF0scT1NYXRoLmFicyhW''@;'; put 'put ''KTtpZihXPD1xKXtmb3IodmFyIHRlPTE7dGU8Ry5sZW5ndGg7Kyt0ZSl7dmFyIG5lPU1hdGgucG93KFcsdGUpLGllPU1hdGgucG93KFcsdGUrMSk7aWYobmU8PXEmJnE8aWUpe1U9R1t0ZV0sVi89bmU7YnJlYWt9fVU9PT1HWzBdJiYoVi89TWF0aC5wb3coVyxHLmxlbmd0aC0xKSxVPUdbRy5s''@;'; put 'put ''ZW5ndGgtMV0pfXJldHVybnt2YWx1ZTpWLHN1ZmZpeDpVfX1mdW5jdGlvbiBSKFYpe2Zvcih2YXIgRz0iIixXPTA7VzxWO1crKylHKz0iMCI7cmV0dXJuIEd9ZnVuY3Rpb24geihWKXt2YXIgRz1WLmluc3RhbmNlLFc9Vi5wcm92aWRlZEZvcm1hdCxVPVYuc3RhdGUscT12b2lkIDA9PT1VP3Y6''@;'; put 'put ''VSx0ZT1WLmRlY2ltYWxTZXBhcmF0b3IsbmU9Vi5kZWZhdWx0cyxpZT12b2lkIDA9PT1uZT9xLmN1cnJlbnREZWZhdWx0cygpOm5lLGxlPUcuX3ZhbHVlO2lmKDA9PT1sZSYmcS5oYXNaZXJvRm9ybWF0KCkpcmV0dXJuIHEuZ2V0WmVyb0Zvcm1hdCgpO2lmKCFpc0Zpbml0ZShsZSkpcmV0dXJu''@;'; put 'put ''IGxlLnRvU3RyaW5nKCk7dmFyIGRlLHVlLGNlLFksYixOLEYsZz1PYmplY3QuYXNzaWduKHt9LEssaWUsVyksQz1nLnRvdGFsTGVuZ3RoLE09Qz8wOmcuY2hhcmFjdGVyaXN0aWMseT1nLm9wdGlvbmFsQ2hhcmFjdGVyaXN0aWMscD1nLmZvcmNlQXZlcmFnZSxTPSEhQ3x8ISFwfHxnLmF2ZXJh''@;'; put 'put ''Z2UsUT1DPy0xOlMmJnZvaWQgMD09PVcubWFudGlzc2E/MDpnLm1hbnRpc3NhLHJlPSFDJiYodm9pZCAwPT09Vy5vcHRpb25hbE1hbnRpc3NhPy0xPT09UTpnLm9wdGlvbmFsTWFudGlzc2EpLGZlPWcudHJpbU1hbnRpc3NhLG1lPWcudGhvdXNhbmRTZXBhcmF0ZWQsa2U9Zy5zcGFjZVNlcGFy''@;'; put 'put ''YXRlZCxUZT1nLm5lZ2F0aXZlLFBlPWcuZm9yY2VTaWduLEZlPWcuZXhwb25lbnRpYWwsTmU9IiI7aWYoUyl7dmFyIExlPWZ1bmN0aW9uKHdlKXt2YXIgSWU9d2UudmFsdWUsT2U9d2UuZm9yY2VBdmVyYWdlLGV0PXdlLmFiYnJldmlhdGlvbnMsbnQ9d2Uuc3BhY2VTZXBhcmF0ZWQscWU9dm9p''@;'; put 'put ''ZCAwIT09bnQmJm50LGh0PXdlLnRvdGFsTGVuZ3RoLEVlPXZvaWQgMD09PWh0PzA6aHQsRGU9IiIsJGU9TWF0aC5hYnMoSWUpLGF0PS0xO2lmKCRlPj1NYXRoLnBvdygxMCwxMikmJiFPZXx8InRyaWxsaW9uIj09PU9lPyhEZT1ldC50cmlsbGlvbixJZS89TWF0aC5wb3coMTAsMTIpKTokZTxN''@;'; put 'put ''YXRoLnBvdygxMCwxMikmJiRlPj1NYXRoLnBvdygxMCw5KSYmIU9lfHwiYmlsbGlvbiI9PT1PZT8oRGU9ZXQuYmlsbGlvbixJZS89TWF0aC5wb3coMTAsOSkpOiRlPE1hdGgucG93KDEwLDkpJiYkZT49TWF0aC5wb3coMTAsNikmJiFPZXx8Im1pbGxpb24iPT09T2U/KERlPWV0Lm1pbGxpb24s''@;'; put 'put ''SWUvPU1hdGgucG93KDEwLDYpKTooJGU8TWF0aC5wb3coMTAsNikmJiRlPj1NYXRoLnBvdygxMCwzKSYmIU9lfHwidGhvdXNhbmQiPT09T2UpJiYoRGU9ZXQudGhvdXNhbmQsSWUvPU1hdGgucG93KDEwLDMpKSxEZSYmKERlPShxZT8iICI6IiIpK0RlKSxFZSl7dmFyIGN0PUllLnRvU3RyaW5n''@;'; put 'put ''KCkuc3BsaXQoIi4iKVswXTthdD1NYXRoLm1heChFZS1jdC5sZW5ndGgsMCl9cmV0dXJue3ZhbHVlOkllLGFiYnJldmlhdGlvbjpEZSxtYW50aXNzYVByZWNpc2lvbjphdH19KHt2YWx1ZTpsZSxmb3JjZUF2ZXJhZ2U6cCxhYmJyZXZpYXRpb25zOnEuY3VycmVudEFiYnJldmlhdGlvbnMoKSxz''@;'; put 'put ''cGFjZVNlcGFyYXRlZDprZSx0b3RhbExlbmd0aDpDfSk7bGU9TGUudmFsdWUsTmUrPUxlLmFiYnJldmlhdGlvbixDJiYoUT1MZS5tYW50aXNzYVByZWNpc2lvbil9aWYoRmUpe3ZhciBCZT0odWU9KGRlPXt2YWx1ZTpsZSxjaGFyYWN0ZXJpc3RpY1ByZWNpc2lvbjpNfSkudmFsdWUsWT12b2lk''@;'; put 'put ''IDA9PT0oY2U9ZGUuY2hhcmFjdGVyaXN0aWNQcmVjaXNpb24pPzA6Y2UsTj0oYj1rKHVlLnRvRXhwb25lbnRpYWwoKS5zcGxpdCgiZSIpLDIpKVsxXSxGPStiWzBdLFkmJjE8WSYmKEYqPU1hdGgucG93KDEwLFktMSksTj0wPD0oTj0rTi0oWS0xKSk/IisiLmNvbmNhdChOKTpOKSx7dmFsdWU6''@;'; put 'put ''RixhYmJyZXZpYXRpb246ImUiLmNvbmNhdChOKX0pO2xlPUJlLnZhbHVlLE5lPUJlLmFiYnJldmlhdGlvbitOZX12YXIgSGUsUWUsbXQsS2U9ZnVuY3Rpb24od2UsSWUsT2UsZXQsbnQpe2lmKC0xPT09ZXQpcmV0dXJuIHdlO3ZhciBxZT1mdW5jdGlvbiBFKFYsRyl7cmV0dXJuLTEhPT1WLnRv''@;'; put 'put ''U3RyaW5nKCkuaW5kZXhPZigiZSIpP2Z1bmN0aW9uKFcsVSl7dmFyIHE9Vy50b1N0cmluZygpLHRlPWsocS5zcGxpdCgiZSIpLDIpLGllPXRlWzFdLGxlPWsodGVbMF0uc3BsaXQoIi4iKSwyKSxkZT1sZVswXSx1ZT1sZVsxXSxjZT12b2lkIDA9PT11ZT8iIjp1ZTtpZigwPCtpZSlxPWRlK2Nl''@;'; put 'put ''K1IoaWUtY2UubGVuZ3RoKTtlbHNle3ZhciBZPSIuIjtZPStkZTwwPyItMCIuY29uY2F0KFkpOiIwIi5jb25jYXQoWSk7dmFyIGI9KFIoLWllLTEpK01hdGguYWJzKGRlKStjZSkuc3Vic3RyKDAsVSk7Yi5sZW5ndGg8VSYmKGIrPVIoVS1iLmxlbmd0aCkpLHE9WStifXJldHVybiAwPCtpZSYm''@;'; put 'put ''MDxVJiYocSs9Ii4iLmNvbmNhdChSKFUpKSkscX0oVixHKTooTWF0aC5yb3VuZCgrIiIuY29uY2F0KFYsImUrIikuY29uY2F0KEcpKS9NYXRoLnBvdygxMCxHKSkudG9GaXhlZChHKX0oSWUsZXQpLGh0PWsocWUudG9TdHJpbmcoKS5zcGxpdCgiLiIpLDIpLEVlPWh0WzBdLERlPWh0WzFdLCRl''@;'; put 'put ''PXZvaWQgMD09PURlPyIiOkRlO2lmKCRlLm1hdGNoKC9eMCskLykmJihPZXx8bnQpKXJldHVybiBFZTt2YXIgYXQ9JGUubWF0Y2goLzArJC8pO3JldHVybiBudCYmYXQ/IiIuY29uY2F0KEVlLCIuIikuY29uY2F0KCRlLnRvU3RyaW5nKCkuc2xpY2UoMCxhdC5pbmRleCkpOnFlLnRvU3RyaW5n''@;'; put 'put ''KCl9KGxlLnRvU3RyaW5nKCksbGUscmUsUSxmZSk7cmV0dXJuIEtlPWZ1bmN0aW9uKHdlLEllLE9lLGV0LG50KXt2YXIgcWU9ZXQuY3VycmVudERlbGltaXRlcnMoKSxodD1xZS50aG91c2FuZHM7bnQ9bnR8fHFlLmRlY2ltYWw7dmFyIEVlPXFlLnRob3VzYW5kc1NpemV8fDMsRGU9d2UudG9T''@;'; put 'put ''dHJpbmcoKSwkZT1EZS5zcGxpdCgiLiIpWzBdLGF0PURlLnNwbGl0KCIuIilbMV07cmV0dXJuIE9lJiYoSWU8MCYmKCRlPSRlLnNsaWNlKDEpKSxmdW5jdGlvbihjdCxPdCl7Zm9yKHZhciBQdD1bXSxBdD0wLEp0PWN0OzA8SnQ7SnQtLSlBdD09PU90JiYoUHQudW5zaGlmdChKdCksQXQ9MCks''@;'; put 'put ''QXQrKztyZXR1cm4gUHR9KCRlLmxlbmd0aCxFZSkuZm9yRWFjaChmdW5jdGlvbihjdCxPdCl7JGU9JGUuc2xpY2UoMCxjdCtPdCkraHQrJGUuc2xpY2UoY3QrT3QpfSksSWU8MCYmKCRlPSItIi5jb25jYXQoJGUpKSksYXQ/JGUrbnQrYXQ6JGV9KEtlPWZ1bmN0aW9uKHdlLEllLE9lLGV0KXt2''@;'; put 'put ''YXIgbnQ9d2UscWU9ayhudC50b1N0cmluZygpLnNwbGl0KCIuIiksMiksaHQ9cWVbMF0sRWU9cWVbMV07aWYoaHQubWF0Y2goL14tPzAkLykmJk9lKXJldHVybiBFZT8iIi5jb25jYXQoaHQucmVwbGFjZSgiMCIsIiIpLCIuIikuY29uY2F0KEVlKTpodC5yZXBsYWNlKCIwIiwiIik7aWYoaHQu''@;'; put 'put ''bGVuZ3RoPGV0KWZvcih2YXIgRGU9ZXQtaHQubGVuZ3RoLCRlPTA7JGU8RGU7JGUrKyludD0iMCIuY29uY2F0KG50KTtyZXR1cm4gbnQudG9TdHJpbmcoKX0oS2UsMCx5LE0pLGxlLG1lLHEsdGUpLChTfHxGZSkmJihLZSs9TmUpLChQZXx8bGU8MCkmJihIZT1LZSxtdD1UZSxLZT0wPT09KFFl''@;'; put 'put ''PWxlKT9IZTowPT0rSGU/SGUucmVwbGFjZSgiLSIsIiIpOjA8UWU/IisiLmNvbmNhdChIZSk6InNpZ24iPT09bXQ/SGU6IigiLmNvbmNhdChIZS5yZXBsYWNlKCItIiwiIiksIikiKSksS2V9ZnVuY3Rpb24gaihWLEcpe2lmKCFWKXJldHVybiBHO3ZhciBXPU9iamVjdC5rZXlzKFYpO3JldHVy''@;'; put 'put ''biAxPT09Vy5sZW5ndGgmJiJvdXRwdXQiPT09V1swXT9HOlZ9VC5leHBvcnRzPWZ1bmN0aW9uKFYpe3JldHVybntmb3JtYXQ6ZnVuY3Rpb24oKXtmb3IodmFyIEc9YXJndW1lbnRzLmxlbmd0aCxXPW5ldyBBcnJheShHKSxVPTA7VTxHO1UrKylXW1VdPWFyZ3VtZW50c1tVXTtyZXR1cm4gSi5h''@;'; put 'put ''cHBseSh2b2lkIDAsVy5jb25jYXQoW1ZdKSl9LGdldEJ5dGVVbml0OmZ1bmN0aW9uKCl7Zm9yKHZhciBHPWFyZ3VtZW50cy5sZW5ndGgsVz1uZXcgQXJyYXkoRyksVT0wO1U8RztVKyspV1tVXT1hcmd1bWVudHNbVV07cmV0dXJuIGZ1bmN0aW9uKHEpe3ZhciB0ZT1MLmdlbmVyYWw7cmV0dXJu''@;'; put 'put ''IEkocS5fdmFsdWUsdGUuc3VmZml4ZXMsdGUuc2NhbGUpLnN1ZmZpeH0uYXBwbHkodm9pZCAwLFcuY29uY2F0KFtWXSkpfSxnZXRCaW5hcnlCeXRlVW5pdDpmdW5jdGlvbigpe2Zvcih2YXIgRz1hcmd1bWVudHMubGVuZ3RoLFc9bmV3IEFycmF5KEcpLFU9MDtVPEc7VSsrKVdbVV09YXJndW1l''@;'; put 'put ''bnRzW1VdO3JldHVybiBmdW5jdGlvbihxKXt2YXIgdGU9TC5iaW5hcnk7cmV0dXJuIEkocS5fdmFsdWUsdGUuc3VmZml4ZXMsdGUuc2NhbGUpLnN1ZmZpeH0uYXBwbHkodm9pZCAwLFcuY29uY2F0KFtWXSkpfSxnZXREZWNpbWFsQnl0ZVVuaXQ6ZnVuY3Rpb24oKXtmb3IodmFyIEc9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aCxXPW5ldyBBcnJheShHKSxVPTA7VTxHO1UrKylXW1VdPWFyZ3VtZW50c1tVXTtyZXR1cm4gZnVuY3Rpb24ocSl7dmFyIHRlPUwuZGVjaW1hbDtyZXR1cm4gSShxLl92YWx1ZSx0ZS5zdWZmaXhlcyx0ZS5zY2FsZSkuc3VmZml4fS5hcHBseSh2b2lkIDAsVy5jb25jYXQoW1Zd''@;'; put 'put ''KSl9LGZvcm1hdE9yRGVmYXVsdDpqfX19LHsiLi9nbG9iYWxTdGF0ZSI6NCwiLi9wYXJzaW5nIjo4LCIuL3ZhbGlkYXRpbmciOjEwfV0sNDpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXplKCIuL2VuLVVTIiksdj16ZSgiLi92YWxpZGF0aW5nIiksaGU9emUoIi4vcGFy''@;'; put 'put ''c2luZyIpLEg9e30sQj12b2lkIDAsTD17fSxLPW51bGwsSj17fTtmdW5jdGlvbiBJKEUpe0I9RX1mdW5jdGlvbiBSKCl7cmV0dXJuIExbQl19SC5sYW5ndWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxMKX0sSC5jdXJyZW50TGFuZ3VhZ2U9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gQn0sSC5jdXJyZW50Q3VycmVuY3k9ZnVuY3Rpb24oKXtyZXR1cm4gUigpLmN1cnJlbmN5fSxILmN1cnJlbnRBYmJyZXZpYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIFIoKS5hYmJyZXZpYXRpb25zfSxILmN1cnJlbnREZWxpbWl0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIFIoKS5kZWxpbWl0''@;'; put 'put ''ZXJzfSxILmN1cnJlbnRPcmRpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIFIoKS5vcmRpbmFsfSxILmN1cnJlbnREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LFIoKS5kZWZhdWx0cyxKKX0sSC5jdXJyZW50T3JkaW5hbERlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxILmN1cnJlbnREZWZhdWx0cygpLFIoKS5vcmRpbmFsRm9ybWF0KX0sSC5jdXJyZW50Qnl0ZURlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxILmN1cnJlbnREZWZhdWx0cygpLFIoKS5ieXRlRm9ybWF0KX0sSC5j''@;'; put 'put ''dXJyZW50UGVyY2VudGFnZURlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxILmN1cnJlbnREZWZhdWx0cygpLFIoKS5wZXJjZW50YWdlRm9ybWF0KX0sSC5jdXJyZW50Q3VycmVuY3lEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5h''@;'; put 'put ''c3NpZ24oe30sSC5jdXJyZW50RGVmYXVsdHMoKSxSKCkuY3VycmVuY3lGb3JtYXQpfSxILmN1cnJlbnRUaW1lRGVmYXVsdEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LEguY3VycmVudERlZmF1bHRzKCksUigpLnRpbWVGb3JtYXQpfSxILnNldERlZmF1bHRzPWZ1''@;'; put 'put ''bmN0aW9uKEUpe0U9aGUucGFyc2VGb3JtYXQoRSksdi52YWxpZGF0ZUZvcm1hdChFKSYmKEo9RSl9LEguZ2V0WmVyb0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBLfSxILnNldFplcm9Gb3JtYXQ9ZnVuY3Rpb24oRSl7cmV0dXJuIEs9InN0cmluZyI9PXR5cGVvZiBFP0U6bnVsbH0sSC5oYXNa''@;'; put 'put ''ZXJvRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1LfSxILmxhbmd1YWdlRGF0YT1mdW5jdGlvbihFKXtpZihFKXtpZihMW0VdKXJldHVybiBMW0VdO3Rocm93IG5ldyBFcnJvcignVW5rbm93biB0YWcgIicuY29uY2F0KEUsJyInKSl9cmV0dXJuIFIoKX0sSC5yZWdpc3Rlckxhbmd1''@;'; put 'put ''YWdlPWZ1bmN0aW9uKEUpe3ZhciB6PTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07aWYoIXYudmFsaWRhdGVMYW5ndWFnZShFKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGFuZ3VhZ2UgZGF0YSIpO0xbRS5sYW5ndWFnZVRhZ109RSx6''@;'; put 'put ''JiZJKEUubGFuZ3VhZ2VUYWcpfSxILnNldExhbmd1YWdlPWZ1bmN0aW9uKEUpe3ZhciB6PTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTprLmxhbmd1YWdlVGFnO2lmKCFMW0VdKXt2YXIgaj1FLnNwbGl0KCItIilbMF0sVj1PYmplY3Qua2V5''@;'; put 'put ''cyhMKS5maW5kKGZ1bmN0aW9uKEcpe3JldHVybiBHLnNwbGl0KCItIilbMF09PT1qfSk7cmV0dXJuIExbVl0/dm9pZCBJKFYpOnZvaWQgSSh6KX1JKEUpfSxILnJlZ2lzdGVyTGFuZ3VhZ2UoayksQj1rLmxhbmd1YWdlVGFnLFQuZXhwb3J0cz1IfSx7Ii4vZW4tVVMiOjIsIi4vcGFyc2luZyI6''@;'; put 'put ''OCwiLi92YWxpZGF0aW5nIjoxMH1dLDU6W2Z1bmN0aW9uKHplLFQsc2UpeyJ1c2Ugc3RyaWN0IjtULmV4cG9ydHM9ZnVuY3Rpb24oayl7cmV0dXJue2xvYWRMYW5ndWFnZXNJbk5vZGU6ZnVuY3Rpb24odil7cmV0dXJuIGhlPWssdm9pZCB2LmZvckVhY2goZnVuY3Rpb24oSCl7dmFyIEI9dm9p''@;'; put 'put ''ZCAwO3RyeXtCPXplKCIuLi9sYW5ndWFnZXMvIi5jb25jYXQoSCkpfWNhdGNoe2NvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBsb2FkICInLmNvbmNhdChILCciLiBObyBtYXRjaGluZyBsYW5ndWFnZSBmaWxlIGZvdW5kLicpKX1CJiZoZS5yZWdpc3Rlckxhbmd1YWdlKEIpfSk7dmFyIGhlfX19''@;'; put 'put ''fSx7fV0sNjpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXplKCJiaWdudW1iZXIuanMiKTtmdW5jdGlvbiB2KGhlLEgsQil7dmFyIEw9bmV3IGsoaGUuX3ZhbHVlKSxLPUg7cmV0dXJuIEIuaXNOdW1icm8oSCkmJihLPUguX3ZhbHVlKSxLPW5ldyBrKEspLGhlLl92YWx1''@;'; put 'put ''ZT1MLm1pbnVzKEspLnRvTnVtYmVyKCksaGV9VC5leHBvcnRzPWZ1bmN0aW9uKGhlKXtyZXR1cm57YWRkOmZ1bmN0aW9uKEgsQil7cmV0dXJuIEs9QixKPWhlLEk9bmV3IGsoKEw9SCkuX3ZhbHVlKSxSPUssSi5pc051bWJybyhLKSYmKFI9Sy5fdmFsdWUpLFI9bmV3IGsoUiksTC5fdmFsdWU9''@;'; put 'put ''SS5wbHVzKFIpLnRvTnVtYmVyKCksTDt2YXIgTCxLLEosSSxSfSxzdWJ0cmFjdDpmdW5jdGlvbihILEIpe3JldHVybiB2KEgsQixoZSl9LG11bHRpcGx5OmZ1bmN0aW9uKEgsQil7cmV0dXJuIEs9QixKPWhlLEk9bmV3IGsoKEw9SCkuX3ZhbHVlKSxSPUssSi5pc051bWJybyhLKSYmKFI9Sy5f''@;'; put 'put ''dmFsdWUpLFI9bmV3IGsoUiksTC5fdmFsdWU9SS50aW1lcyhSKS50b051bWJlcigpLEw7dmFyIEwsSyxKLEksUn0sZGl2aWRlOmZ1bmN0aW9uKEgsQil7cmV0dXJuIEs9QixKPWhlLEk9bmV3IGsoKEw9SCkuX3ZhbHVlKSxSPUssSi5pc051bWJybyhLKSYmKFI9Sy5fdmFsdWUpLFI9bmV3IGso''@;'; put 'put ''UiksTC5fdmFsdWU9SS5kaXZpZGVkQnkoUikudG9OdW1iZXIoKSxMO3ZhciBMLEssSixJLFJ9LHNldDpmdW5jdGlvbihILEIpe3JldHVybiBMPUgsSj1LPUIsaGUuaXNOdW1icm8oSykmJihKPUsuX3ZhbHVlKSxMLl92YWx1ZT1KLEw7dmFyIEwsSyxKfSxkaWZmZXJlbmNlOmZ1bmN0aW9uKEgs''@;'; put 'put ''Qil7cmV0dXJuIEw9Qix2KEo9KEs9aGUpKEguX3ZhbHVlKSxMLEspLE1hdGguYWJzKEouX3ZhbHVlKTt2YXIgTCxLLEp9fX19LHsiYmlnbnVtYmVyLmpzIjoxfV0sNzpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoeixqKXtmb3IodmFyIFY9MDtWPGoubGVuZ3Ro''@;'; put 'put ''O1YrKyl7dmFyIEc9altWXTtHLmVudW1lcmFibGU9Ry5lbnVtZXJhYmxlfHwhMSxHLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gRyYmKEcud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LEcua2V5LEcpfX12YXIgdj16ZSgiLi9nbG9iYWxTdGF0ZSIpLGhlPXplKCIuL3Zh''@;'; put 'put ''bGlkYXRpbmciKSxIPXplKCIuL2xvYWRpbmciKShFKSxCPXplKCIuL3VuZm9ybWF0dGluZyIpLEw9emUoIi4vZm9ybWF0dGluZyIpKEUpLEs9emUoIi4vbWFuaXB1bGF0aW5nIikoRSksSj16ZSgiLi9wYXJzaW5nIiksST1mdW5jdGlvbigpe2Z1bmN0aW9uIHooVyl7KGZ1bmN0aW9uKFUscSl7''@;'; put 'put ''aWYoIShVIGluc3RhbmNlb2YgcSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLHopLHRoaXMuX3ZhbHVlPVd9dmFyIGosVjtyZXR1cm4gaj16LChWPVt7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0''@;'; put 'put ''aGlzLl92YWx1ZSl9fSx7a2V5OiJmb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEwuZm9ybWF0KHRoaXMsMDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9KX19LHtrZXk6ImZvcm1hdEN1cnJlbmN5Iix2YWx1ZTpmdW5jdGlvbihX''@;'; put 'put ''KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFcmJihXPUoucGFyc2VGb3JtYXQoVykpLChXPUwuZm9ybWF0T3JEZWZhdWx0KFcsdi5jdXJyZW50Q3VycmVuY3lEZWZhdWx0Rm9ybWF0KCkpKS5vdXRwdXQ9ImN1cnJlbmN5IixMLmZvcm1hdCh0aGlzLFcpfX0se2tleToiZm9ybWF0VGltZSIsdmFs''@;'; put 'put ''dWU6ZnVuY3Rpb24oKXt2YXIgVz0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIFcub3V0cHV0PSJ0aW1lIixMLmZvcm1hdCh0aGlzLFcpfX0se2tleToiYmluYXJ5Qnl0ZVVuaXRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBMLmdldEJpbmFyeUJ5dGVVbml0KHRoaXMpfX0se2tleToiZGVjaW1hbEJ5dGVVbml0cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTC5nZXREZWNpbWFsQnl0ZVVuaXQodGhpcyl9fSx7a2V5OiJieXRlVW5pdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEwuZ2V0Qnl0ZVVuaXQodGhp''@;'; put 'put ''cyl9fSx7a2V5OiJkaWZmZXJlbmNlIix2YWx1ZTpmdW5jdGlvbihXKXtyZXR1cm4gSy5kaWZmZXJlbmNlKHRoaXMsVyl9fSx7a2V5OiJhZGQiLHZhbHVlOmZ1bmN0aW9uKFcpe3JldHVybiBLLmFkZCh0aGlzLFcpfX0se2tleToic3VidHJhY3QiLHZhbHVlOmZ1bmN0aW9uKFcpe3JldHVybiBL''@;'; put 'put ''LnN1YnRyYWN0KHRoaXMsVyl9fSx7a2V5OiJtdWx0aXBseSIsdmFsdWU6ZnVuY3Rpb24oVyl7cmV0dXJuIEsubXVsdGlwbHkodGhpcyxXKX19LHtrZXk6ImRpdmlkZSIsdmFsdWU6ZnVuY3Rpb24oVyl7cmV0dXJuIEsuZGl2aWRlKHRoaXMsVyl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9u''@;'; put 'put ''KFcpe3JldHVybiBLLnNldCh0aGlzLFIoVykpfX0se2tleToidmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToidmFsdWVPZiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWV9fV0pJiZrKGoucHJvdG90eXBlLFYpLHp9KCk7ZnVuY3Rp''@;'; put 'put ''b24gUih6KXt2YXIgaj16O3JldHVybiBFLmlzTnVtYnJvKHopP2o9ei5fdmFsdWU6InN0cmluZyI9PXR5cGVvZiB6P2o9RS51bmZvcm1hdCh6KTppc05hTih6KSYmKGo9TmFOKSxqfWZ1bmN0aW9uIEUoeil7cmV0dXJuIG5ldyBJKFIoeikpfUUudmVyc2lvbj0iMi4xLjIiLEUuaXNOdW1icm89''@;'; put 'put ''ZnVuY3Rpb24oeil7cmV0dXJuIHogaW5zdGFuY2VvZiBJfSxFLmxhbmd1YWdlPXYuY3VycmVudExhbmd1YWdlLEUucmVnaXN0ZXJMYW5ndWFnZT12LnJlZ2lzdGVyTGFuZ3VhZ2UsRS5zZXRMYW5ndWFnZT12LnNldExhbmd1YWdlLEUubGFuZ3VhZ2VzPXYubGFuZ3VhZ2VzLEUubGFuZ3VhZ2VE''@;'; put 'put ''YXRhPXYubGFuZ3VhZ2VEYXRhLEUuemVyb0Zvcm1hdD12LnNldFplcm9Gb3JtYXQsRS5kZWZhdWx0Rm9ybWF0PXYuY3VycmVudERlZmF1bHRzLEUuc2V0RGVmYXVsdHM9di5zZXREZWZhdWx0cyxFLmRlZmF1bHRDdXJyZW5jeUZvcm1hdD12LmN1cnJlbnRDdXJyZW5jeURlZmF1bHRGb3JtYXQs''@;'; put 'put ''RS52YWxpZGF0ZT1oZS52YWxpZGF0ZSxFLmxvYWRMYW5ndWFnZXNJbk5vZGU9SC5sb2FkTGFuZ3VhZ2VzSW5Ob2RlLEUudW5mb3JtYXQ9Qi51bmZvcm1hdCxULmV4cG9ydHM9RX0seyIuL2Zvcm1hdHRpbmciOjMsIi4vZ2xvYmFsU3RhdGUiOjQsIi4vbG9hZGluZyI6NSwiLi9tYW5pcHVsYXRp''@;'; put 'put ''bmciOjYsIi4vcGFyc2luZyI6OCwiLi91bmZvcm1hdHRpbmciOjksIi4vdmFsaWRhdGluZyI6MTB9XSw4OltmdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7VC5leHBvcnRzPXtwYXJzZUZvcm1hdDpmdW5jdGlvbihrKXt2YXIgdixoZSxILEIsTCxLLEosSSxSLEUseixqLFYsRyxXLFUs''@;'; put 'put ''cSx0ZSxuZSxpZSxsZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuInN0cmluZyIhPXR5cGVvZiBrP2s6KGhlPWxlLEw9bGUsZnVuY3Rpb24oZGUsdWUpe2lmKC0xPT09ZGUuaW5kZXhPZigiJCIpKXtpZigtMT09PWRlLmlu''@;'; put 'put ''ZGV4T2YoIiUiKSlyZXR1cm4tMSE9PWRlLmluZGV4T2YoImJkIik/KHVlLm91dHB1dD0iYnl0ZSIsdWUuYmFzZT0iZ2VuZXJhbCIpOi0xIT09ZGUuaW5kZXhPZigiYiIpPyh1ZS5vdXRwdXQ9ImJ5dGUiLHVlLmJhc2U9ImJpbmFyeSIpOi0xIT09ZGUuaW5kZXhPZigiZCIpPyh1ZS5vdXRwdXQ9''@;'; put 'put ''ImJ5dGUiLHVlLmJhc2U9ImRlY2ltYWwiKTotMT09PWRlLmluZGV4T2YoIjoiKT8tMSE9PWRlLmluZGV4T2YoIm8iKSYmKHVlLm91dHB1dD0ib3JkaW5hbCIpOnVlLm91dHB1dD0idGltZSI7dWUub3V0cHV0PSJwZXJjZW50In1lbHNlIHVlLm91dHB1dD0iY3VycmVuY3kifShrPShLPShCPWs9''@;'; put 'put ''KEg9KHY9aykubWF0Y2goL157KFtefV0qKX0vKSk/KGhlLnByZWZpeD1IWzFdLHYuc2xpY2UoSFswXS5sZW5ndGgpKTp2KS5tYXRjaCgveyhbXn1dKil9JC8pKT8oTC5wb3N0Zml4PUtbMV0sQi5zbGljZSgwLC1LWzBdLmxlbmd0aCkpOkIsbGUpLEo9bGUsKEk9ay5tYXRjaCgvWzEtOV0rWzAt''@;'; put 'put ''OV0qLykpJiYoSi50b3RhbExlbmd0aD0rSVswXSksUj1sZSwoRT1rLnNwbGl0KCIuIilbMF0ubWF0Y2goLzArLykpJiYoUi5jaGFyYWN0ZXJpc3RpYz1FWzBdLmxlbmd0aCksZnVuY3Rpb24oZGUsdWUpe2lmKC0xIT09ZGUuaW5kZXhPZigiLiIpKXt2YXIgY2U9ZGUuc3BsaXQoIi4iKVswXTt1''@;'; put 'put ''ZS5vcHRpb25hbENoYXJhY3RlcmlzdGljPS0xPT09Y2UuaW5kZXhPZigiMCIpfX0oayxsZSksej1sZSwtMSE9PWsuaW5kZXhPZigiYSIpJiYoei5hdmVyYWdlPSEwKSxWPWxlLC0xIT09KGo9aykuaW5kZXhPZigiSyIpP1YuZm9yY2VBdmVyYWdlPSJ0aG91c2FuZCI6LTEhPT1qLmluZGV4T2Yo''@;'; put 'put ''Ik0iKT9WLmZvcmNlQXZlcmFnZT0ibWlsbGlvbiI6LTEhPT1qLmluZGV4T2YoIkIiKT9WLmZvcmNlQXZlcmFnZT0iYmlsbGlvbiI6LTEhPT1qLmluZGV4T2YoIlQiKSYmKFYuZm9yY2VBdmVyYWdlPSJ0cmlsbGlvbiIpLGZ1bmN0aW9uKGRlLHVlKXt2YXIgY2U9ZGUuc3BsaXQoIi4iKVsxXTtp''@;'; put 'put ''ZihjZSl7dmFyIFk9Y2UubWF0Y2goLzArLyk7WSYmKHVlLm1hbnRpc3NhPVlbMF0ubGVuZ3RoKX19KGssbGUpLFc9bGUsKEc9aykubWF0Y2goL1xbXC5dLyk/Vy5vcHRpb25hbE1hbnRpc3NhPSEwOkcubWF0Y2goL1wuLykmJihXLm9wdGlvbmFsTWFudGlzc2E9ITEpLFU9bGUsLTEhPT1rLmlu''@;'; put 'put ''ZGV4T2YoIiwiKSYmKFUudGhvdXNhbmRTZXBhcmF0ZWQ9ITApLHE9bGUsLTEhPT1rLmluZGV4T2YoIiAiKSYmKHEuc3BhY2VTZXBhcmF0ZWQ9ITApLG5lPWxlLCh0ZT1rKS5tYXRjaCgvXlwrP1woW14pXSpcKSQvKSYmKG5lLm5lZ2F0aXZlPSJwYXJlbnRoZXNpcyIpLHRlLm1hdGNoKC9eXCs/''@;'; put 'put ''LS8pJiYobmUubmVnYXRpdmU9InNpZ24iKSxpZT1sZSxrLm1hdGNoKC9eXCsvKSYmKGllLmZvcmNlU2lnbj0hMCksbGUpfX19LHt9XSw5OltmdW5jdGlvbih6ZSxULHNlKXsidXNlIHN0cmljdCI7dmFyIGs9W3trZXk6IlppQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsNyl9LHtrZXk6IlpCIixm''@;'; put 'put ''YWN0b3I6TWF0aC5wb3coMWUzLDcpfSx7a2V5OiJZaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDgpfSx7a2V5OiJZQiIsZmFjdG9yOk1hdGgucG93KDFlMyw4KX0se2tleToiVGlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw0KX0se2tleToiVEIiLGZhY3RvcjpNYXRoLnBvdygxZTMsNCl9LHtr''@;'; put 'put ''ZXk6IlBpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsNSl9LHtrZXk6IlBCIixmYWN0b3I6TWF0aC5wb3coMWUzLDUpfSx7a2V5OiJNaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDIpfSx7a2V5OiJNQiIsZmFjdG9yOk1hdGgucG93KDFlMywyKX0se2tleToiS2lCIixmYWN0b3I6TWF0aC5wb3co''@;'; put 'put ''MTAyNCwxKX0se2tleToiS0IiLGZhY3RvcjpNYXRoLnBvdygxZTMsMSl9LHtrZXk6IkdpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsMyl9LHtrZXk6IkdCIixmYWN0b3I6TWF0aC5wb3coMWUzLDMpfSx7a2V5OiJFaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDYpfSx7a2V5OiJFQiIsZmFjdG9y''@;'; put 'put ''Ok1hdGgucG93KDFlMyw2KX0se2tleToiQiIsZmFjdG9yOjF9XTtmdW5jdGlvbiB2KEgpe3JldHVybiBILnJlcGxhY2UoL1stL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX1ULmV4cG9ydHM9e3VuZm9ybWF0OmZ1bmN0aW9uKEgsQil7dmFyIEwsST16ZSgiLi9nbG9iYWxTdGF0ZSIpLFI9''@;'; put 'put ''SS5jdXJyZW50RGVsaW1pdGVycygpLEU9SS5jdXJyZW50Q3VycmVuY3koKS5zeW1ib2wsej1JLmN1cnJlbnRPcmRpbmFsKCksaj1JLmdldFplcm9Gb3JtYXQoKSxWPUkuY3VycmVudEFiYnJldmlhdGlvbnMoKSxHPXZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIEgpRz1mdW5jdGlvbihXLFUp''@;'; put 'put ''e2lmKCFXLmluZGV4T2YoIjoiKXx8IjoiPT09VS50aG91c2FuZHMpcmV0dXJuITE7dmFyIHE9Vy5zcGxpdCgiOiIpO2lmKDMhPT1xLmxlbmd0aClyZXR1cm4hMTt2YXIgbmU9K3FbMV0saWU9K3FbMl07cmV0dXJuIWlzTmFOKCtxWzBdKSYmIWlzTmFOKG5lKSYmIWlzTmFOKGllKX0oSCxSKT8r''@;'; put 'put ''KEw9SC5zcGxpdCgiOiIpKVsyXSs2MCorTFsxXSszNjAwKitMWzBdOmZ1bmN0aW9uIGhlKEgsQil7dmFyIEw9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiIiLEs9Mzxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1szXTp2b2lkIDAsSj00''@;'; put 'put ''PGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzRdOnZvaWQgMCxJPTU8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNV06dm9pZCAwLFI9Njxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s2XTp2b2lkIDA7aWYoIiIhPT1IKXJldHVybiBIPT09Sj8wOmZ1bmN0aW9uIEUoeixqKXt2YXIg''@;'; put 'put ''Vj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIsRz0zPGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzNdOnZvaWQgMCxXPTQ8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNF06dm9pZCAwLFU9NTxhcmd1bWVudHMubGVuZ3RoP2Fy''@;'; put 'put ''Z3VtZW50c1s1XTp2b2lkIDAscT02PGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzZdOnZvaWQgMDtpZighaXNOYU4oK3opKXJldHVybit6O3ZhciB0ZT0iIixuZT16LnJlcGxhY2UoLyheW14oXSopXCgoLiopXCkoW14pXSokKS8sIiQxJDIkMyIpO2lmKG5lIT09eilyZXR1cm4tMSpFKG5l''@;'; put 'put ''LGosVixHLFcsVSxxKTtmb3IodmFyIGllPTA7aWU8ay5sZW5ndGg7aWUrKyl7dmFyIGxlPWtbaWVdO2lmKCh0ZT16LnJlcGxhY2UobGUua2V5LCIiKSkhPT16KXJldHVybiBFKHRlLGosVixHLFcsVSxxKSpsZS5mYWN0b3J9aWYoKHRlPXoucmVwbGFjZSgiJSIsIiIpKSE9PXopcmV0dXJuIEUo''@;'; put 'put ''dGUsaixWLEcsVyxVLHEpLzEwMDt2YXIgZGU9cGFyc2VGbG9hdCh6KTtpZighaXNOYU4oZGUpKXt2YXIgdWU9RyhkZSk7aWYodWUmJiIuIiE9PXVlJiYodGU9ei5yZXBsYWNlKG5ldyBSZWdFeHAoIiIuY29uY2F0KHYodWUpLCIkIikpLCIiKSkhPT16KXJldHVybiBFKHRlLGosVixHLFcsVSxx''@;'; put 'put ''KTt2YXIgY2U9e307T2JqZWN0LmtleXMoVSkuZm9yRWFjaChmdW5jdGlvbihDKXtjZVtVW0NdXT1DfSk7Zm9yKHZhciBZPU9iamVjdC5rZXlzKGNlKS5zb3J0KCkucmV2ZXJzZSgpLGI9WS5sZW5ndGgseD0wO3g8Yjt4Kyspe3ZhciBOPVlbeF0sRj1jZVtOXTtpZigodGU9ei5yZXBsYWNlKE4s''@;'; put 'put ''IiIpKSE9PXope3ZhciBnPXZvaWQgMDtzd2l0Y2goRil7Y2FzZSJ0aG91c2FuZCI6Zz1NYXRoLnBvdygxMCwzKTticmVhaztjYXNlIm1pbGxpb24iOmc9TWF0aC5wb3coMTAsNik7YnJlYWs7Y2FzZSJiaWxsaW9uIjpnPU1hdGgucG93KDEwLDkpO2JyZWFrO2Nhc2UidHJpbGxpb24iOmc9TWF0''@;'; put 'put ''aC5wb3coMTAsMTIpfXJldHVybiBFKHRlLGosVixHLFcsVSxxKSpnfX19fShmdW5jdGlvbihFLHope3ZhciBWPUUucmVwbGFjZSgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06IiIsIiIpO3JldHVybihWPVYucmVwbGFjZShuZXcgUmVnRXhw''@;'; put 'put ''KCIoWzAtOV0pIi5jb25jYXQodih6LnRob3VzYW5kcyksIihbMC05XSkiKSwiZyIpLCIkMSQyIikpLnJlcGxhY2Uoei5kZWNpbWFsLCIuIil9KEgsQixMKSxCLEwsSyxKLEksUil9KEgsUixFLHosaixWLEIpO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiBIKXJldHVybjtHPUh9aWYodm9pZCAw''@;'; put 'put ''IT09RylyZXR1cm4gR319fSx7Ii4vZ2xvYmFsU3RhdGUiOjR9XSwxMDpbZnVuY3Rpb24oemUsVCxzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoUil7cmV0dXJuKHY9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24o''@;'; put 'put ''RSl7cmV0dXJuIHR5cGVvZiBFfTpmdW5jdGlvbihFKXtyZXR1cm4gRSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmRS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmRSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIEV9KShSKX12YXIgaGU9emUoIi4vdW5mb3JtYXR0aW5nIiks''@;'; put 'put ''SD0vXlthLXpdezIsM30oLVthLXpBLVpdezR9KT8oLShbQS1aXXsyfXxbMC05XXszfSkpPyQvLEI9e291dHB1dDp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbImN1cnJlbmN5IiwicGVyY2VudCIsImJ5dGUiLCJ0aW1lIiwib3JkaW5hbCIsIm51bWJlciJdfSxiYXNlOnt0eXBlOiJzdHJp''@;'; put 'put ''bmciLHZhbGlkVmFsdWVzOlsiZGVjaW1hbCIsImJpbmFyeSIsImdlbmVyYWwiXSxyZXN0cmljdGlvbjpmdW5jdGlvbihSLEUpe3JldHVybiJieXRlIj09PUUub3V0cHV0fSxtZXNzYWdlOiJgYmFzZWAgbXVzdCBiZSBwcm92aWRlZCBvbmx5IHdoZW4gdGhlIG91dHB1dCBpcyBgYnl0ZWAiLG1h''@;'; put 'put ''bmRhdG9yeTpmdW5jdGlvbihSKXtyZXR1cm4iYnl0ZSI9PT1SLm91dHB1dH19LGNoYXJhY3RlcmlzdGljOnt0eXBlOiJudW1iZXIiLHJlc3RyaWN0aW9uOmZ1bmN0aW9uKFIpe3JldHVybiAwPD1SfSxtZXNzYWdlOiJ2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlIn0scHJlZml4OiJzdHJpbmciLHBv''@;'; put 'put ''c3RmaXg6InN0cmluZyIsZm9yY2VBdmVyYWdlOnt0eXBlOiJzdHJpbmciLHZhbGlkVmFsdWVzOlsidHJpbGxpb24iLCJiaWxsaW9uIiwibWlsbGlvbiIsInRob3VzYW5kIl19LGF2ZXJhZ2U6ImJvb2xlYW4iLGN1cnJlbmN5UG9zaXRpb246e3R5cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJw''@;'; put 'put ''cmVmaXgiLCJpbmZpeCIsInBvc3RmaXgiXX0sY3VycmVuY3lTeW1ib2w6InN0cmluZyIsdG90YWxMZW5ndGg6e3R5cGU6Im51bWJlciIscmVzdHJpY3Rpb25zOlt7cmVzdHJpY3Rpb246ZnVuY3Rpb24oUil7cmV0dXJuIDA8PVJ9LG1lc3NhZ2U6InZhbHVlIG11c3QgYmUgcG9zaXRpdmUifSx7''@;'; put 'put ''cmVzdHJpY3Rpb246ZnVuY3Rpb24oUixFKXtyZXR1cm4hRS5leHBvbmVudGlhbH0sbWVzc2FnZToiYHRvdGFsTGVuZ3RoYCBpcyBpbmNvbXBhdGlibGUgd2l0aCBgZXhwb25lbnRpYWxgIn1dfSxtYW50aXNzYTp7dHlwZToibnVtYmVyIixyZXN0cmljdGlvbjpmdW5jdGlvbihSKXtyZXR1cm4g''@;'; put 'put ''MDw9Un0sbWVzc2FnZToidmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSJ9LG9wdGlvbmFsTWFudGlzc2E6ImJvb2xlYW4iLHRyaW1NYW50aXNzYToiYm9vbGVhbiIsb3B0aW9uYWxDaGFyYWN0ZXJpc3RpYzoiYm9vbGVhbiIsdGhvdXNhbmRTZXBhcmF0ZWQ6ImJvb2xlYW4iLHNwYWNlU2VwYXJhdGVk''@;'; put 'put ''OiJib29sZWFuIixhYmJyZXZpYXRpb25zOnt0eXBlOiJvYmplY3QiLGNoaWxkcmVuOnt0aG91c2FuZDoic3RyaW5nIixtaWxsaW9uOiJzdHJpbmciLGJpbGxpb246InN0cmluZyIsdHJpbGxpb246InN0cmluZyJ9fSxuZWdhdGl2ZTp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbInNpZ24i''@;'; put 'put ''LCJwYXJlbnRoZXNpcyJdfSxmb3JjZVNpZ246ImJvb2xlYW4iLGV4cG9uZW50aWFsOnt0eXBlOiJib29sZWFuIn0scHJlZml4U3ltYm9sOnt0eXBlOiJib29sZWFuIixyZXN0cmljdGlvbjpmdW5jdGlvbihSLEUpe3JldHVybiJwZXJjZW50Ij09PUUub3V0cHV0fSxtZXNzYWdlOiJgcHJlZml4''@;'; put 'put ''U3ltYm9sYCBjYW4gYmUgcHJvdmlkZWQgb25seSB3aGVuIHRoZSBvdXRwdXQgaXMgYHBlcmNlbnRgIn19LEw9e2xhbmd1YWdlVGFnOnt0eXBlOiJzdHJpbmciLG1hbmRhdG9yeTohMCxyZXN0cmljdGlvbjpmdW5jdGlvbihSKXtyZXR1cm4gUi5tYXRjaChIKX0sbWVzc2FnZToidGhlIGxhbmd1''@;'; put 'put ''YWdlIHRhZyBtdXN0IGZvbGxvdyB0aGUgQkNQIDQ3IHNwZWNpZmljYXRpb24gKHNlZSBodHRwczovL3Rvb2xzLmllZnQub3JnL2h0bWwvYmNwNDcpIn0sZGVsaW1pdGVyczp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7dGhvdXNhbmRzOiJzdHJpbmciLGRlY2ltYWw6InN0cmluZyIsdGhvdXNh''@;'; put 'put ''bmRzU2l6ZToibnVtYmVyIn0sbWFuZGF0b3J5OiEwfSxhYmJyZXZpYXRpb25zOnt0eXBlOiJvYmplY3QiLGNoaWxkcmVuOnt0aG91c2FuZDp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITB9LG1pbGxpb246e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwfSxiaWxsaW9uOnt0eXBlOiJzdHJp''@;'; put 'put ''bmciLG1hbmRhdG9yeTohMH0sdHJpbGxpb246e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwfX0sbWFuZGF0b3J5OiEwfSxzcGFjZVNlcGFyYXRlZDoiYm9vbGVhbiIsb3JkaW5hbDp7dHlwZToiZnVuY3Rpb24iLG1hbmRhdG9yeTohMH0sY3VycmVuY3k6e3R5cGU6Im9iamVjdCIsY2hpbGRy''@;'; put 'put ''ZW46e3N5bWJvbDoic3RyaW5nIixwb3NpdGlvbjoic3RyaW5nIixjb2RlOiJzdHJpbmcifSxtYW5kYXRvcnk6ITB9LGRlZmF1bHRzOiJmb3JtYXQiLG9yZGluYWxGb3JtYXQ6ImZvcm1hdCIsYnl0ZUZvcm1hdDoiZm9ybWF0IixwZXJjZW50YWdlRm9ybWF0OiJmb3JtYXQiLGN1cnJlbmN5Rm9y''@;'; put 'put ''bWF0OiJmb3JtYXQiLHRpbWVEZWZhdWx0czoiZm9ybWF0Iixmb3JtYXRzOnt0eXBlOiJvYmplY3QiLGNoaWxkcmVuOntmb3VyRGlnaXRzOnt0eXBlOiJmb3JtYXQiLG1hbmRhdG9yeTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9LGZ1bGxXaXRo''@;'; put 'put ''VHdvRGVjaW1hbHNOb0N1cnJlbmN5Ont0eXBlOiJmb3JtYXQiLG1hbmRhdG9yeTohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOnt0eXBlOiJmb3JtYXQiLG1hbmRhdG9yeTohMH19fX07ZnVuY3Rpb24gSyhSKXtyZXR1cm4hIWhlLnVuZm9ybWF0KFIpfWZ1bmN0aW9uIEooUixFLHope3ZhciBqPTM8''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sVj1PYmplY3Qua2V5cyhSKS5tYXAoZnVuY3Rpb24oRyl7aWYoIUVbR10pcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHosIiBJbnZhbGlkIGtleTogIikuY29uY2F0KEcpKSwhMTt2YXIg''@;'; put 'put ''Vz1SW0ddLFU9RVtHXTtpZigic3RyaW5nIj09dHlwZW9mIFUmJihVPXt0eXBlOlV9KSwiZm9ybWF0Ij09PVUudHlwZSl7aWYoIUooVyxCLCJbVmFsaWRhdGUgIi5jb25jYXQoRywiXSIpLCEwKSlyZXR1cm4hMX1lbHNlIGlmKHYoVykhPT1VLnR5cGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIu''@;'; put 'put ''Y29uY2F0KHosIiAiKS5jb25jYXQoRywnIHR5cGUgbWlzbWF0Y2hlZDogIicpLmNvbmNhdChVLnR5cGUsJyIgZXhwZWN0ZWQsICInKS5jb25jYXQodihXKSwnIiBwcm92aWRlZCcpKSwhMTtpZihVLnJlc3RyaWN0aW9ucyYmVS5yZXN0cmljdGlvbnMubGVuZ3RoKWZvcih2YXIgcT1VLnJlc3Ry''@;'; put 'put ''aWN0aW9ucy5sZW5ndGgsdGU9MDt0ZTxxO3RlKyspe3ZhciBuZT1VLnJlc3RyaWN0aW9uc1t0ZV0sbGU9bmUubWVzc2FnZTtpZighKDAsbmUucmVzdHJpY3Rpb24pKFcsUikpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHosIiAiKS5jb25jYXQoRywiIGludmFsaWQgdmFsdWU6ICIp''@;'; put 'put ''LmNvbmNhdChsZSkpLCExfXJldHVybiBVLnJlc3RyaWN0aW9uJiYhVS5yZXN0cmljdGlvbihXLFIpPyhjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCIgIikuY29uY2F0KEcsIiBpbnZhbGlkIHZhbHVlOiAiKS5jb25jYXQoVS5tZXNzYWdlKSksITEpOlUudmFsaWRWYWx1ZXMmJi0xPT09VS52''@;'; put 'put ''YWxpZFZhbHVlcy5pbmRleE9mKFcpPyhjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCIgIikuY29uY2F0KEcsIiBpbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGFtb25nICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShVLnZhbGlkVmFsdWVzKSwnLCAiJykuY29uY2F0KFcsJyIgcHJvdmlkZWQnKSks''@;'; put 'put ''ITEpOiEoVS5jaGlsZHJlbiYmIUooVyxVLmNoaWxkcmVuLCJbVmFsaWRhdGUgIi5jb25jYXQoRywiXSIpKSl9KTtyZXR1cm4ganx8Vi5wdXNoLmFwcGx5KFYsZnVuY3Rpb24gayhSKXtyZXR1cm4gZnVuY3Rpb24oRSl7aWYoQXJyYXkuaXNBcnJheShFKSl7Zm9yKHZhciB6PTAsaj1uZXcgQXJy''@;'; put 'put ''YXkoRS5sZW5ndGgpO3o8RS5sZW5ndGg7eisrKWpbel09RVt6XTtyZXR1cm4gan19KFIpfHxmdW5jdGlvbihFKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KEUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChFKSlyZXR1cm4gQXJy''@;'; put 'put ''YXkuZnJvbShFKX0oUil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX0oT2JqZWN0LmtleXMoRSkubWFwKGZ1bmN0aW9uKEcpe3ZhciBXPUVbR107aWYoInN0cmluZyI9PXR5cGVvZiBX''@;'; put 'put ''JiYoVz17dHlwZTpXfSksVy5tYW5kYXRvcnkpe3ZhciBVPVcubWFuZGF0b3J5O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBVJiYoVT1VKFIpKSxVJiZ2b2lkIDA9PT1SW0ddKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCcgTWlzc2luZyBtYW5kYXRvcnkga2V5ICInKS5jb25jYXQo''@;'; put 'put ''RywnIicpKSwhMX1yZXR1cm4hMH0pKSksVi5yZWR1Y2UoZnVuY3Rpb24oRyxXKXtyZXR1cm4gRyYmV30sITApfWZ1bmN0aW9uIEkoUil7cmV0dXJuIEooUixCLCJbVmFsaWRhdGUgZm9ybWF0XSIpfVQuZXhwb3J0cz17dmFsaWRhdGU6ZnVuY3Rpb24oUixFKXt2YXIgej1LKFIpLGo9SShFKTty''@;'; put 'put ''ZXR1cm4geiYman0sdmFsaWRhdGVGb3JtYXQ6SSx2YWxpZGF0ZUlucHV0OkssdmFsaWRhdGVMYW5ndWFnZTpmdW5jdGlvbihSKXtyZXR1cm4gSihSLEwsIltWYWxpZGF0ZSBsYW5ndWFnZV0iKX19fSx7Ii4vdW5mb3JtYXR0aW5nIjo5fV19LHt9LFs3XSkoNyl9LDYwMzgwOihXZSx6ZSxUKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NDMpLkJ1ZmZlcixrPVQoOTY3NDUpLlRyYW5zZm9ybTtmdW5jdGlvbiBIKEIpe2suY2FsbCh0aGlzKSx0aGlzLl9ibG9jaz1zZS5hbGxvY1Vuc2FmZShCKSx0aGlzLl9ibG9ja1NpemU9Qix0aGlzLl9ibG9ja09mZnNldD0wLHRoaXMuX2xlbmd0aD1b''@;'; put 'put ''MCwwLDAsMF0sdGhpcy5fZmluYWxpemVkPSExfVQoNjY2OTgpKEgsayksSC5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihCLEwsSyl7dmFyIEo9bnVsbDt0cnl7dGhpcy51cGRhdGUoQixMKX1jYXRjaChJKXtKPUl9SyhKKX0sSC5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKEIpe3Zh''@;'; put 'put ''ciBMPW51bGw7dHJ5e3RoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKX1jYXRjaChLKXtMPUt9QihMKX0sSC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEIsTCl7aWYoZnVuY3Rpb24gaGUoQixMKXtpZighc2UuaXNCdWZmZXIoQikmJiJzdHJpbmciIT10eXBlb2YgQil0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKEwrIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyIil9KEIsIkRhdGEiKSx0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTtzZS5pc0J1ZmZlcihCKXx8KEI9c2UuZnJvbShCLEwpKTtmb3IodmFyIEs9dGhpcy5fYmxvY2ssSj0w''@;'; put 'put ''O3RoaXMuX2Jsb2NrT2Zmc2V0K0IubGVuZ3RoLUo+PXRoaXMuX2Jsb2NrU2l6ZTspe2Zvcih2YXIgST10aGlzLl9ibG9ja09mZnNldDtJPHRoaXMuX2Jsb2NrU2l6ZTspS1tJKytdPUJbSisrXTt0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wfWZvcig7SjxCLmxlbmd0aDspS1t0''@;'; put 'put ''aGlzLl9ibG9ja09mZnNldCsrXT1CW0orK107Zm9yKHZhciBSPTAsRT04KkIubGVuZ3RoO0U+MDsrK1IpdGhpcy5fbGVuZ3RoW1JdKz1FLChFPXRoaXMuX2xlbmd0aFtSXS80Mjk0OTY3Mjk2fDApPjAmJih0aGlzLl9sZW5ndGhbUl0tPTQyOTQ5NjcyOTYqRSk7cmV0dXJuIHRoaXN9LEgucHJv''@;'; put 'put ''dG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgaXMgbm90IGltcGxlbWVudGVkIil9LEgucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihCKXtpZih0aGlzLl9maW5hbGl6ZWQpdGhyb3cgbmV3IEVycm9yKCJEaWdlc3QgYWxyZWFkeSBjYWxsZWQiKTt0''@;'; put 'put ''aGlzLl9maW5hbGl6ZWQ9ITA7dmFyIEw9dGhpcy5fZGlnZXN0KCk7dm9pZCAwIT09QiYmKEw9TC50b1N0cmluZyhCKSksdGhpcy5fYmxvY2suZmlsbCgwKSx0aGlzLl9ibG9ja09mZnNldD0wO2Zvcih2YXIgSz0wO0s8NDsrK0spdGhpcy5fbGVuZ3RoW0tdPTA7cmV0dXJuIEx9LEgucHJvdG90''@;'; put 'put ''eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl9kaWdlc3QgaXMgbm90IGltcGxlbWVudGVkIil9LFdlLmV4cG9ydHM9SH0sNzEwNzY6KFdlLHplLFQpPT57dmFyIHNlPXplO3NlLnV0aWxzPVQoMTk4NzUpLHNlLmNvbW1vbj1UKDkyMDg1KSxzZS5zaGE9VCg1NzY1OCks''@;'; put 'put ''c2UucmlwZW1kPVQoNDgzNDQpLHNlLmhtYWM9VCg3NjE5Miksc2Uuc2hhMT1zZS5zaGEuc2hhMSxzZS5zaGEyNTY9c2Uuc2hhLnNoYTI1NixzZS5zaGEyMjQ9c2Uuc2hhLnNoYTIyNCxzZS5zaGEzODQ9c2Uuc2hhLnNoYTM4NCxzZS5zaGE1MTI9c2Uuc2hhLnNoYTUxMixzZS5yaXBlbWQxNjA9''@;'; put 'put ''c2UucmlwZW1kLnJpcGVtZDE2MH0sOTIwODU6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDE5ODc1KSxrPVQoNTc3OTgpO2Z1bmN0aW9uIHYoKXt0aGlzLnBlbmRpbmc9bnVsbCx0aGlzLnBlbmRpbmdUb3RhbD0wLHRoaXMuYmxvY2tTaXplPXRoaXMuY29uc3RydWN0b3IuYmxv''@;'; put 'put ''Y2tTaXplLHRoaXMub3V0U2l6ZT10aGlzLmNvbnN0cnVjdG9yLm91dFNpemUsdGhpcy5obWFjU3RyZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGgsdGhpcy5wYWRMZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGgvOCx0aGlzLmVuZGlhbj0iYmlnIix0aGlzLl9kZWx0''@;'; put 'put ''YTg9dGhpcy5ibG9ja1NpemUvOCx0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfXplLkJsb2NrSGFzaD12LHYucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihILEIpe2lmKEg9c2UudG9BcnJheShILEIpLHRoaXMucGVuZGluZz10aGlzLnBlbmRpbmc/dGhpcy5wZW5kaW5nLmNvbmNh''@;'; put 'put ''dChIKTpILHRoaXMucGVuZGluZ1RvdGFsKz1ILmxlbmd0aCx0aGlzLnBlbmRpbmcubGVuZ3RoPj10aGlzLl9kZWx0YTgpe3ZhciBMPShIPXRoaXMucGVuZGluZykubGVuZ3RoJXRoaXMuX2RlbHRhODt0aGlzLnBlbmRpbmc9SC5zbGljZShILmxlbmd0aC1MLEgubGVuZ3RoKSwwPT09dGhpcy5w''@;'; put 'put ''ZW5kaW5nLmxlbmd0aCYmKHRoaXMucGVuZGluZz1udWxsKSxIPXNlLmpvaW4zMihILDAsSC5sZW5ndGgtTCx0aGlzLmVuZGlhbik7Zm9yKHZhciBLPTA7SzxILmxlbmd0aDtLKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZShILEssSyt0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc30sdi5w''@;'; put 'put ''cm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSksayhudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlzLl9kaWdlc3QoSCl9LHYucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgSD10aGlzLnBlbmRpbmdUb3RhbCxCPXRoaXMuX2RlbHRh''@;'; put 'put ''OCxMPUItKEgrdGhpcy5wYWRMZW5ndGgpJUIsSz1uZXcgQXJyYXkoTCt0aGlzLnBhZExlbmd0aCk7S1swXT0xMjg7Zm9yKHZhciBKPTE7SjxMO0orKylLW0pdPTA7aWYoSDw8PTMsImJpZyI9PT10aGlzLmVuZGlhbil7Zm9yKHZhciBJPTg7STx0aGlzLnBhZExlbmd0aDtJKyspS1tKKytdPTA7''@;'; put 'put ''S1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPUg+Pj4yNCYyNTUsS1tKKytdPUg+Pj4xNiYyNTUsS1tKKytdPUg+Pj44JjI1NSxLW0orK109MjU1Jkh9ZWxzZSBmb3IoS1tKKytdPTI1NSZILEtbSisrXT1IPj4+OCYyNTUsS1tKKytdPUg+Pj4xNiYyNTUsS1tKKytd''@;'; put 'put ''PUg+Pj4yNCYyNTUsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsS1tKKytdPTAsST04O0k8dGhpcy5wYWRMZW5ndGg7SSsrKUtbSisrXT0wO3JldHVybiBLfX0sNzYxOTI6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDE5ODc1KSxrPVQoNTc3OTgpO2Z1bmN0aW9uIHYoaGUs''@;'; put 'put ''SCxCKXtpZighKHRoaXMgaW5zdGFuY2VvZiB2KSlyZXR1cm4gbmV3IHYoaGUsSCxCKTt0aGlzLkhhc2g9aGUsdGhpcy5ibG9ja1NpemU9aGUuYmxvY2tTaXplLzgsdGhpcy5vdXRTaXplPWhlLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5vdXRlcj1udWxsLHRoaXMuX2luaXQoc2Uu''@;'; put 'put ''dG9BcnJheShILEIpKX1XZS5leHBvcnRzPXYsdi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oSCl7SC5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJihIPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoSCkuZGlnZXN0KCkpLGsoSC5sZW5ndGg8PXRoaXMuYmxvY2tTaXplKTtmb3IodmFyIEI9SC5sZW5n''@;'; put 'put ''dGg7Qjx0aGlzLmJsb2NrU2l6ZTtCKyspSC5wdXNoKDApO2ZvcihCPTA7QjxILmxlbmd0aDtCKyspSFtCXV49NTQ7Zm9yKHRoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShIKSxCPTA7QjxILmxlbmd0aDtCKyspSFtCXV49MTA2O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVw''@;'; put 'put ''ZGF0ZShIKX0sdi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEgsQil7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKEgsQiksdGhpc30sdi5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKSx0aGlzLm91dGVy''@;'; put 'put ''LmRpZ2VzdChIKX19LDQ4MzQ0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgxOTg3NSksaz1UKDkyMDg1KSx2PXNlLnJvdGwzMixoZT1zZS5zdW0zMixIPXNlLnN1bTMyXzMsQj1zZS5zdW0zMl80LEw9ay5CbG9ja0hhc2g7ZnVuY3Rpb24gSygpe2lmKCEodGhpcyBpbnN0YW5j''@;'; put 'put ''ZW9mIEspKXJldHVybiBuZXcgSztMLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdGhpcy5lbmRpYW49ImxpdHRsZSJ9ZnVuY3Rpb24gSihHLFcsVSxxKXtyZXR1cm4gRzw9MTU/V15VXnE6Rzw9MzE/VyZV''@;'; put 'put ''fH5XJnE6Rzw9NDc/KFd8flUpXnE6Rzw9NjM/VyZxfFUmfnE6V14oVXx+cSl9ZnVuY3Rpb24gUihHKXtyZXR1cm4gRzw9MTU/MTM1MjgyOTkyNjpHPD0zMT8xNTQ4NjAzNjg0Okc8PTQ3PzE4MzYwNzI2OTE6Rzw9NjM/MjA1Mzk5NDIxNzowfXNlLmluaGVyaXRzKEssTCksemUucmlwZW1kMTYw''@;'; put 'put ''PUssSy5ibG9ja1NpemU9NTEyLEsub3V0U2l6ZT0xNjAsSy5obWFjU3RyZW5ndGg9MTkyLEsucGFkTGVuZ3RoPTY0LEsucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVyxVKXtmb3IodmFyIHE9dGhpcy5oWzBdLHRlPXRoaXMuaFsxXSxuZT10aGlzLmhbMl0saWU9dGhpcy5oWzNdLGxlPXRo''@;'; put 'put ''aXMuaFs0XSxkZT1xLHVlPXRlLGNlPW5lLFk9aWUsYj1sZSx4PTA7eDw4MDt4Kyspe3ZhciBOPWhlKHYoQihxLEooeCx0ZSxuZSxpZSksV1tFW3hdK1VdLChHPXgpPD0xNT8wOkc8PTMxPzE1MTg1MDAyNDk6Rzw9NDc/MTg1OTc3NTM5MzpHPD02Mz8yNDAwOTU5NzA4OjI4NDA4NTM4MzgpLGpb''@;'; put 'put ''eF0pLGxlKTtxPWxlLGxlPWllLGllPXYobmUsMTApLG5lPXRlLHRlPU4sTj1oZSh2KEIoZGUsSig3OS14LHVlLGNlLFkpLFdbelt4XStVXSxSKHgpKSxWW3hdKSxiKSxkZT1iLGI9WSxZPXYoY2UsMTApLGNlPXVlLHVlPU59dmFyIEc7Tj1IKHRoaXMuaFsxXSxuZSxZKSx0aGlzLmhbMV09SCh0''@;'; put 'put ''aGlzLmhbMl0saWUsYiksdGhpcy5oWzJdPUgodGhpcy5oWzNdLGxlLGRlKSx0aGlzLmhbM109SCh0aGlzLmhbNF0scSx1ZSksdGhpcy5oWzRdPUgodGhpcy5oWzBdLHRlLGNlKSx0aGlzLmhbMF09Tn0sSy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihXKXtyZXR1cm4iaGV4Ij09PVc/c2Uu''@;'; put 'put ''dG9IZXgzMih0aGlzLmgsImxpdHRsZSIpOnNlLnNwbGl0MzIodGhpcy5oLCJsaXR0bGUiKX07dmFyIEU9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwx''@;'; put 'put ''MywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10sej1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwy''@;'; put 'put ''LDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxqPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgs''@;'; put 'put ''MTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxWPVs4LDksOSwx''@;'; put 'put ''MSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIs''@;'; put 'put ''NSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXX0sNTc2NTg6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3plLnNoYTE9VCg3NTAxMCksemUuc2hhMjI0PVQoODM1NzgpLHplLnNoYTI1Nj1UKDk3ODU3KSx6ZS5zaGEzODQ9VCg2ODcyMyksemUuc2hhNTEyPVQoNDUzMDQpfSw3NTAxMDooV2Us''@;'; put 'put ''emUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMTk4NzUpLGs9VCg5MjA4NSksdj1UKDcyMjEpLGhlPXNlLnJvdGwzMixIPXNlLnN1bTMyLEI9c2Uuc3VtMzJfNSxMPXYuZnRfMSxLPWsuQmxvY2tIYXNoLEo9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJd''@;'; put 'put ''O2Z1bmN0aW9uIEkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBJKSlyZXR1cm4gbmV3IEk7Sy5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuVz1uZXcgQXJyYXkoODApfXNlLmluaGVyaXRzKEksSyks''@;'; put 'put ''V2UuZXhwb3J0cz1JLEkuYmxvY2tTaXplPTUxMixJLm91dFNpemU9MTYwLEkuaG1hY1N0cmVuZ3RoPTgwLEkucGFkTGVuZ3RoPTY0LEkucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRSx6KXtmb3IodmFyIGo9dGhpcy5XLFY9MDtWPDE2O1YrKylqW1ZdPUVbeitWXTtmb3IoO1Y8ai5sZW5n''@;'; put 'put ''dGg7VisrKWpbVl09aGUoaltWLTNdXmpbVi04XV5qW1YtMTRdXmpbVi0xNl0sMSk7dmFyIEc9dGhpcy5oWzBdLFc9dGhpcy5oWzFdLFU9dGhpcy5oWzJdLHE9dGhpcy5oWzNdLHRlPXRoaXMuaFs0XTtmb3IoVj0wO1Y8ai5sZW5ndGg7VisrKXt2YXIgbmU9fn4oVi8yMCksaWU9QihoZShHLDUp''@;'; put 'put ''LEwobmUsVyxVLHEpLHRlLGpbVl0sSltuZV0pO3RlPXEscT1VLFU9aGUoVywzMCksVz1HLEc9aWV9dGhpcy5oWzBdPUgodGhpcy5oWzBdLEcpLHRoaXMuaFsxXT1IKHRoaXMuaFsxXSxXKSx0aGlzLmhbMl09SCh0aGlzLmhbMl0sVSksdGhpcy5oWzNdPUgodGhpcy5oWzNdLHEpLHRoaXMuaFs0''@;'; put 'put ''XT1IKHRoaXMuaFs0XSx0ZSl9LEkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oRSl7cmV0dXJuImhleCI9PT1FP3NlLnRvSGV4MzIodGhpcy5oLCJiaWciKTpzZS5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw4MzU3ODooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMTk4NzUp''@;'; put 'put ''LGs9VCg5Nzg1Nyk7ZnVuY3Rpb24gdigpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHYpKXJldHVybiBuZXcgdjtrLmNhbGwodGhpcyksdGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1''@;'; put 'put ''NDI4XX1zZS5pbmhlcml0cyh2LGspLFdlLmV4cG9ydHM9dix2LmJsb2NrU2l6ZT01MTIsdi5vdXRTaXplPTIyNCx2LmhtYWNTdHJlbmd0aD0xOTIsdi5wYWRMZW5ndGg9NjQsdi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihIKXtyZXR1cm4iaGV4Ij09PUg/c2UudG9IZXgzMih0aGlzLmgu''@;'; put 'put ''c2xpY2UoMCw3KSwiYmlnIik6c2Uuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIil9fSw5Nzg1NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMTk4NzUpLGs9VCg5MjA4NSksdj1UKDcyMjEpLGhlPVQoNTc3OTgpLEg9c2Uuc3VtMzIsQj1zZS5zdW0zMl80LEw9c2Uu''@;'; put 'put ''c3VtMzJfNSxLPXYuY2gzMixKPXYubWFqMzIsST12LnMwXzI1NixSPXYuczFfMjU2LEU9di5nMF8yNTYsej12LmcxXzI1NixqPWsuQmxvY2tIYXNoLFY9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwy''@;'; put 'put ''ODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4''@;'; put 'put ''MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUx''@;'; put 'put ''LDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4''@;'; put 'put ''MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07ZnVuY3Rpb24gRygpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEcpKXJldHVybiBuZXcg''@;'; put 'put ''RztqLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0sdGhpcy5rPVYsdGhpcy5XPW5ldyBBcnJheSg2NCl9c2UuaW5oZXJpdHMoRyxqKSxXZS5leHBv''@;'; put 'put ''cnRzPUcsRy5ibG9ja1NpemU9NTEyLEcub3V0U2l6ZT0yNTYsRy5obWFjU3RyZW5ndGg9MTkyLEcucGFkTGVuZ3RoPTY0LEcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVSxxKXtmb3IodmFyIHRlPXRoaXMuVyxuZT0wO25lPDE2O25lKyspdGVbbmVdPVVbcStuZV07Zm9yKDtuZTx0ZS5s''@;'; put 'put ''ZW5ndGg7bmUrKyl0ZVtuZV09Qih6KHRlW25lLTJdKSx0ZVtuZS03XSxFKHRlW25lLTE1XSksdGVbbmUtMTZdKTt2YXIgaWU9dGhpcy5oWzBdLGxlPXRoaXMuaFsxXSxkZT10aGlzLmhbMl0sdWU9dGhpcy5oWzNdLGNlPXRoaXMuaFs0XSxZPXRoaXMuaFs1XSxiPXRoaXMuaFs2XSx4PXRoaXMu''@;'; put 'put ''aFs3XTtmb3IoaGUodGhpcy5rLmxlbmd0aD09PXRlLmxlbmd0aCksbmU9MDtuZTx0ZS5sZW5ndGg7bmUrKyl7dmFyIE49TCh4LFIoY2UpLEsoY2UsWSxiKSx0aGlzLmtbbmVdLHRlW25lXSksRj1IKEkoaWUpLEooaWUsbGUsZGUpKTt4PWIsYj1ZLFk9Y2UsY2U9SCh1ZSxOKSx1ZT1kZSxkZT1s''@;'; put 'put ''ZSxsZT1pZSxpZT1IKE4sRil9dGhpcy5oWzBdPUgodGhpcy5oWzBdLGllKSx0aGlzLmhbMV09SCh0aGlzLmhbMV0sbGUpLHRoaXMuaFsyXT1IKHRoaXMuaFsyXSxkZSksdGhpcy5oWzNdPUgodGhpcy5oWzNdLHVlKSx0aGlzLmhbNF09SCh0aGlzLmhbNF0sY2UpLHRoaXMuaFs1XT1IKHRoaXMu''@;'; put 'put ''aFs1XSxZKSx0aGlzLmhbNl09SCh0aGlzLmhbNl0sYiksdGhpcy5oWzddPUgodGhpcy5oWzddLHgpfSxHLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKFUpe3JldHVybiJoZXgiPT09VT9zZS50b0hleDMyKHRoaXMuaCwiYmlnIik6c2Uuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNjg3MjM6''@;'; put 'put ''KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDE5ODc1KSxrPVQoNDUzMDQpO2Z1bmN0aW9uIHYoKXtpZighKHRoaXMgaW5zdGFuY2VvZiB2KSlyZXR1cm4gbmV3IHY7ay5jYWxsKHRoaXMpLHRoaXMuaD1bMzQxODA3MDM2NSwzMjM4MzcxMDMyLDE2NTQyNzAyNTAsOTE0MTUwNjYz''@;'; put 'put ''LDI0Mzg1MjkzNzAsODEyNzAyOTk5LDM1NTQ2MjM2MCw0MTQ0OTEyNjk3LDE3MzE0MDU0MTUsNDI5MDc3NTg1NywyMzk0MTgwMjMxLDE3NTA2MDMwMjUsMzY3NTAwODUyNSwxNjk0MDc2ODM5LDEyMDMwNjI4MTMsMzIwNDA3NTQyOF19c2UuaW5oZXJpdHModixrKSxXZS5leHBvcnRzPXYsdi5i''@;'; put 'put ''bG9ja1NpemU9MTAyNCx2Lm91dFNpemU9Mzg0LHYuaG1hY1N0cmVuZ3RoPTE5Mix2LnBhZExlbmd0aD0xMjgsdi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihIKXtyZXR1cm4iaGV4Ij09PUg/c2UudG9IZXgzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpOnNlLnNwbGl0MzIodGhpcy5o''@;'; put 'put ''LnNsaWNlKDAsMTIpLCJiaWciKX19LDQ1MzA0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgxOTg3NSksaz1UKDkyMDg1KSx2PVQoNTc3OTgpLGhlPXNlLnJvdHI2NF9oaSxIPXNlLnJvdHI2NF9sbyxCPXNlLnNocjY0X2hpLEw9c2Uuc2hyNjRfbG8sSz1zZS5zdW02NCxKPXNl''@;'; put 'put ''LnN1bTY0X2hpLEk9c2Uuc3VtNjRfbG8sUj1zZS5zdW02NF80X2hpLEU9c2Uuc3VtNjRfNF9sbyx6PXNlLnN1bTY0XzVfaGksaj1zZS5zdW02NF81X2xvLFY9ay5CbG9ja0hhc2gsRz1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4''@;'; put 'put ''NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3''@;'; put 'put ''OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwy''@;'; put 'put ''NjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3''@;'; put 'put ''ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEy''@;'; put 'put ''LDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAs''@;'; put 'put ''MjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAw''@;'; put 'put ''ODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIy''@;'; put 'put ''MjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3''@;'; put 'put ''LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2''@;'; put 'put ''MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2''@;'; put 'put ''LDEyNDYxODk1OTFdO2Z1bmN0aW9uIFcoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBXKSlyZXR1cm4gbmV3IFc7Vi5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1''@;'; put 'put ''NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPUcsdGhpcy5XPW5ldyBBcnJheSgxNjApfWZ1bmN0aW9uIFUoTixGLGcsQyxNKXt2YXIgeT1OJmdefk4mTTtyZXR1''@;'; put 'put ''cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1mdW5jdGlvbiBxKE4sRixnLEMsTSx5KXt2YXIgcD1GJkNefkYmeTtyZXR1cm4gcDwwJiYocCs9NDI5NDk2NzI5NikscH1mdW5jdGlvbiB0ZShOLEYsZyxDLE0pe3ZhciB5PU4mZ15OJk1eZyZNO3JldHVybiB5PDAmJih5Kz00Mjk0OTY3Mjk2KSx5''@;'; put 'put ''fWZ1bmN0aW9uIG5lKE4sRixnLEMsTSx5KXt2YXIgcD1GJkNeRiZ5XkMmeTtyZXR1cm4gcDwwJiYocCs9NDI5NDk2NzI5NikscH1mdW5jdGlvbiBpZShOLEYpe3ZhciB5PWhlKE4sRiwyOCleaGUoRixOLDIpXmhlKEYsTiw3KTtyZXR1cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1mdW5jdGlv''@;'; put 'put ''biBsZShOLEYpe3ZhciB5PUgoTixGLDI4KV5IKEYsTiwyKV5IKEYsTiw3KTtyZXR1cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1mdW5jdGlvbiBkZShOLEYpe3ZhciB5PWhlKE4sRiwxNCleaGUoTixGLDE4KV5oZShGLE4sOSk7cmV0dXJuIHk8MCYmKHkrPTQyOTQ5NjcyOTYpLHl9ZnVuY3Rp''@;'; put 'put ''b24gdWUoTixGKXt2YXIgeT1IKE4sRiwxNCleSChOLEYsMTgpXkgoRixOLDkpO3JldHVybiB5PDAmJih5Kz00Mjk0OTY3Mjk2KSx5fWZ1bmN0aW9uIGNlKE4sRil7dmFyIHk9aGUoTixGLDEpXmhlKE4sRiw4KV5CKE4sRiw3KTtyZXR1cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1mdW5jdGlv''@;'; put 'put ''biBZKE4sRil7dmFyIHk9SChOLEYsMSleSChOLEYsOCleTChOLEYsNyk7cmV0dXJuIHk8MCYmKHkrPTQyOTQ5NjcyOTYpLHl9ZnVuY3Rpb24gYihOLEYpe3ZhciB5PWhlKE4sRiwxOSleaGUoRixOLDI5KV5CKE4sRiw2KTtyZXR1cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1mdW5jdGlvbiB4''@;'; put 'put ''KE4sRil7dmFyIHk9SChOLEYsMTkpXkgoRixOLDI5KV5MKE4sRiw2KTtyZXR1cm4geTwwJiYoeSs9NDI5NDk2NzI5NikseX1zZS5pbmhlcml0cyhXLFYpLFdlLmV4cG9ydHM9VyxXLmJsb2NrU2l6ZT0xMDI0LFcub3V0U2l6ZT01MTIsVy5obWFjU3RyZW5ndGg9MTkyLFcucGFkTGVuZ3RoPTEy''@;'; put 'put ''OCxXLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrPWZ1bmN0aW9uKEYsZyl7Zm9yKHZhciBDPXRoaXMuVyxNPTA7TTwzMjtNKyspQ1tNXT1GW2crTV07Zm9yKDtNPEMubGVuZ3RoO00rPTIpe3ZhciB5PWIoQ1tNLTRdLENbTS0zXSkscD14KENbTS00XSxDW00tM10pLFM9Q1tNLTE0XSxRPUNbTS0x''@;'; put 'put ''M10scmU9Y2UoQ1tNLTMwXSxDW00tMjldKSxmZT1ZKENbTS0zMF0sQ1tNLTI5XSksbWU9Q1tNLTMyXSxrZT1DW00tMzFdO0NbTV09Uih5LHAsUyxRLHJlLGZlLG1lLGtlKSxDW00rMV09RSh5LHAsUyxRLHJlLGZlLG1lLGtlKX19LFcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRixnKXt0''@;'; put 'put ''aGlzLl9wcmVwYXJlQmxvY2soRixnKTt2YXIgQz10aGlzLlcsTT10aGlzLmhbMF0seT10aGlzLmhbMV0scD10aGlzLmhbMl0sUz10aGlzLmhbM10sUT10aGlzLmhbNF0scmU9dGhpcy5oWzVdLGZlPXRoaXMuaFs2XSxtZT10aGlzLmhbN10sa2U9dGhpcy5oWzhdLFRlPXRoaXMuaFs5XSxQZT10''@;'; put 'put ''aGlzLmhbMTBdLEZlPXRoaXMuaFsxMV0sTmU9dGhpcy5oWzEyXSxMZT10aGlzLmhbMTNdLEJlPXRoaXMuaFsxNF0sSGU9dGhpcy5oWzE1XTt2KHRoaXMuay5sZW5ndGg9PT1DLmxlbmd0aCk7Zm9yKHZhciBRZT0wO1FlPEMubGVuZ3RoO1FlKz0yKXt2YXIgbXQ9QmUsS2U9SGUsd2U9ZGUoa2Us''@;'; put 'put ''VGUpLEllPXVlKGtlLFRlKSxPZT1VKGtlLDAsUGUsMCxOZSksZXQ9cSgwLFRlLDAsRmUsMCxMZSksbnQ9dGhpcy5rW1FlXSxxZT10aGlzLmtbUWUrMV0saHQ9Q1tRZV0sRWU9Q1tRZSsxXSxEZT16KG10LEtlLHdlLEllLE9lLGV0LG50LHFlLGh0LEVlKSwkZT1qKG10LEtlLHdlLEllLE9lLGV0''@;'; put 'put ''LG50LHFlLGh0LEVlKTttdD1pZShNLHkpLEtlPWxlKE0seSksd2U9dGUoTSwwLHAsMCxRKSxJZT1uZSgwLHksMCxTLDAscmUpO3ZhciBhdD1KKG10LEtlLHdlLEllKSxjdD1JKG10LEtlLHdlLEllKTtCZT1OZSxIZT1MZSxOZT1QZSxMZT1GZSxQZT1rZSxGZT1UZSxrZT1KKGZlLG1lLERlLCRl''@;'; put 'put ''KSxUZT1JKG1lLG1lLERlLCRlKSxmZT1RLG1lPXJlLFE9cCxyZT1TLHA9TSxTPXksTT1KKERlLCRlLGF0LGN0KSx5PUkoRGUsJGUsYXQsY3QpfUsodGhpcy5oLDAsTSx5KSxLKHRoaXMuaCwyLHAsUyksSyh0aGlzLmgsNCxRLHJlKSxLKHRoaXMuaCw2LGZlLG1lKSxLKHRoaXMuaCw4LGtlLFRl''@;'; put 'put ''KSxLKHRoaXMuaCwxMCxQZSxGZSksSyh0aGlzLmgsMTIsTmUsTGUpLEsodGhpcy5oLDE0LEJlLEhlKX0sVy5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihGKXtyZXR1cm4iaGV4Ij09PUY/c2UudG9IZXgzMih0aGlzLmgsImJpZyIpOnNlLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LDcyMjE6''@;'; put 'put ''KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBrPVQoMTk4NzUpLnJvdHIzMjtmdW5jdGlvbiBoZShSLEUseil7cmV0dXJuIFImRV5+UiZ6fWZ1bmN0aW9uIEgoUixFLHope3JldHVybiBSJkVeUiZ6XkUmen1mdW5jdGlvbiBCKFIsRSx6KXtyZXR1cm4gUl5FXnp9emUuZnRfMT1mdW5jdGlv''@;'; put 'put ''biB2KFIsRSx6LGope3JldHVybiAwPT09Uj9oZShFLHosaik6MT09PVJ8fDM9PT1SP0IoRSx6LGopOjI9PT1SP0goRSx6LGopOnZvaWQgMH0semUuY2gzMj1oZSx6ZS5tYWozMj1ILHplLnAzMj1CLHplLnMwXzI1Nj1mdW5jdGlvbiBMKFIpe3JldHVybiBrKFIsMileayhSLDEzKV5rKFIsMjIp''@;'; put 'put ''fSx6ZS5zMV8yNTY9ZnVuY3Rpb24gSyhSKXtyZXR1cm4gayhSLDYpXmsoUiwxMSleayhSLDI1KX0semUuZzBfMjU2PWZ1bmN0aW9uIEooUil7cmV0dXJuIGsoUiw3KV5rKFIsMTgpXlI+Pj4zfSx6ZS5nMV8yNTY9ZnVuY3Rpb24gSShSKXtyZXR1cm4gayhSLDE3KV5rKFIsMTkpXlI+Pj4xMH19''@;'; put 'put ''LDE5ODc1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg1Nzc5OCksaz1UKDY2Njk4KTtmdW5jdGlvbiB2KHgsTil7cmV0dXJuISg1NTI5NiE9KDY0NTEyJnguY2hhckNvZGVBdChOKSl8fE48MHx8TisxPj14Lmxlbmd0aCkmJjU2MzIwPT0oNjQ1MTImeC5jaGFyQ29kZUF0KE4r''@;'; put 'put ''MSkpfWZ1bmN0aW9uIEIoeCl7cmV0dXJuKHg+Pj4yNHx4Pj4+OCY2NTI4MHx4PDw4JjE2NzExNjgwfCgyNTUmeCk8PDI0KT4+PjB9ZnVuY3Rpb24gSyh4KXtyZXR1cm4gMT09PXgubGVuZ3RoPyIwIit4Onh9ZnVuY3Rpb24gSih4KXtyZXR1cm4gNz09PXgubGVuZ3RoPyIwIit4OjY9PT14Lmxl''@;'; put 'put ''bmd0aD8iMDAiK3g6NT09PXgubGVuZ3RoPyIwMDAiK3g6ND09PXgubGVuZ3RoPyIwMDAwIit4OjM9PT14Lmxlbmd0aD8iMDAwMDAiK3g6Mj09PXgubGVuZ3RoPyIwMDAwMDAiK3g6MT09PXgubGVuZ3RoPyIwMDAwMDAwIit4Onh9emUuaW5oZXJpdHM9ayx6ZS50b0FycmF5PWZ1bmN0aW9uIGhl''@;'; put 'put ''KHgsTil7aWYoQXJyYXkuaXNBcnJheSh4KSlyZXR1cm4geC5zbGljZSgpO2lmKCF4KXJldHVybltdO3ZhciBGPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgeClpZihOKXtpZigiaGV4Ij09PU4pZm9yKCh4PXgucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoeD0iMCIr''@;'; put 'put ''eCksQz0wO0M8eC5sZW5ndGg7Qys9MilGLnB1c2gocGFyc2VJbnQoeFtDXSt4W0MrMV0sMTYpKX1lbHNlIGZvcih2YXIgZz0wLEM9MDtDPHgubGVuZ3RoO0MrKyl7dmFyIE09eC5jaGFyQ29kZUF0KEMpO008MTI4P0ZbZysrXT1NOk08MjA0OD8oRltnKytdPU0+PjZ8MTkyLEZbZysrXT02MyZN''@;'; put 'put ''fDEyOCk6dih4LEMpPyhNPTY1NTM2KygoMTAyMyZNKTw8MTApKygxMDIzJnguY2hhckNvZGVBdCgrK0MpKSxGW2crK109TT4+MTh8MjQwLEZbZysrXT1NPj4xMiY2M3wxMjgsRltnKytdPU0+PjYmNjN8MTI4LEZbZysrXT02MyZNfDEyOCk6KEZbZysrXT1NPj4xMnwyMjQsRltnKytdPU0+PjYm''@;'; put 'put ''NjN8MTI4LEZbZysrXT02MyZNfDEyOCl9ZWxzZSBmb3IoQz0wO0M8eC5sZW5ndGg7QysrKUZbQ109MHx4W0NdO3JldHVybiBGfSx6ZS50b0hleD1mdW5jdGlvbiBIKHgpe2Zvcih2YXIgTj0iIixGPTA7Rjx4Lmxlbmd0aDtGKyspTis9Syh4W0ZdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIE59LHpl''@;'; put 'put ''Lmh0b25sPUIsemUudG9IZXgzMj1mdW5jdGlvbiBMKHgsTil7Zm9yKHZhciBGPSIiLGc9MDtnPHgubGVuZ3RoO2crKyl7dmFyIEM9eFtnXTsibGl0dGxlIj09PU4mJihDPUIoQykpLEYrPUooQy50b1N0cmluZygxNikpfXJldHVybiBGfSx6ZS56ZXJvMj1LLHplLnplcm84PUosemUuam9pbjMy''@;'; put 'put ''PWZ1bmN0aW9uIEkoeCxOLEYsZyl7dmFyIEM9Ri1OO3NlKEMlND09MCk7Zm9yKHZhciBNPW5ldyBBcnJheShDLzQpLHk9MCxwPU47eTxNLmxlbmd0aDt5KysscCs9NClNW3ldPSgiYmlnIj09PWc/eFtwXTw8MjR8eFtwKzFdPDwxNnx4W3ArMl08PDh8eFtwKzNdOnhbcCszXTw8MjR8eFtwKzJd''@;'; put 'put ''PDwxNnx4W3ArMV08PDh8eFtwXSk+Pj4wO3JldHVybiBNfSx6ZS5zcGxpdDMyPWZ1bmN0aW9uIFIoeCxOKXtmb3IodmFyIEY9bmV3IEFycmF5KDQqeC5sZW5ndGgpLGc9MCxDPTA7Zzx4Lmxlbmd0aDtnKyssQys9NCl7dmFyIE09eFtnXTsiYmlnIj09PU4/KEZbQ109TT4+PjI0LEZbQysxXT1N''@;'; put 'put ''Pj4+MTYmMjU1LEZbQysyXT1NPj4+OCYyNTUsRltDKzNdPTI1NSZNKTooRltDKzNdPU0+Pj4yNCxGW0MrMl09TT4+PjE2JjI1NSxGW0MrMV09TT4+PjgmMjU1LEZbQ109MjU1Jk0pfXJldHVybiBGfSx6ZS5yb3RyMzI9ZnVuY3Rpb24gRSh4LE4pe3JldHVybiB4Pj4+Tnx4PDwzMi1OfSx6ZS5y''@;'; put 'put ''b3RsMzI9ZnVuY3Rpb24geih4LE4pe3JldHVybiB4PDxOfHg+Pj4zMi1OfSx6ZS5zdW0zMj1mdW5jdGlvbiBqKHgsTil7cmV0dXJuIHgrTj4+PjB9LHplLnN1bTMyXzM9ZnVuY3Rpb24gVih4LE4sRil7cmV0dXJuIHgrTitGPj4+MH0semUuc3VtMzJfND1mdW5jdGlvbiBHKHgsTixGLGcpe3Jl''@;'; put 'put ''dHVybiB4K04rRitnPj4+MH0semUuc3VtMzJfNT1mdW5jdGlvbiBXKHgsTixGLGcsQyl7cmV0dXJuIHgrTitGK2crQz4+PjB9LHplLnN1bTY0PWZ1bmN0aW9uIFUoeCxOLEYsZyl7dmFyIHk9Zyt4W04rMV0+Pj4wO3hbTl09KHk8Zz8xOjApK0YreFtOXT4+PjAseFtOKzFdPXl9LHplLnN1bTY0''@;'; put 'put ''X2hpPWZ1bmN0aW9uIHEoeCxOLEYsZyl7cmV0dXJuKE4rZz4+PjA8Tj8xOjApK3grRj4+PjB9LHplLnN1bTY0X2xvPWZ1bmN0aW9uIHRlKHgsTixGLGcpe3JldHVybiBOK2c+Pj4wfSx6ZS5zdW02NF80X2hpPWZ1bmN0aW9uIG5lKHgsTixGLGcsQyxNLHkscCl7dmFyIFM9MCxRPU47cmV0dXJu''@;'; put 'put ''IFMrPShRPVErZz4+PjApPE4/MTowLFMrPShRPVErTT4+PjApPE0/MTowLHgrRitDK3krKFMrPShRPVErcD4+PjApPHA/MTowKT4+PjB9LHplLnN1bTY0XzRfbG89ZnVuY3Rpb24gaWUoeCxOLEYsZyxDLE0seSxwKXtyZXR1cm4gTitnK00rcD4+PjB9LHplLnN1bTY0XzVfaGk9ZnVuY3Rpb24g''@;'; put 'put ''bGUoeCxOLEYsZyxDLE0seSxwLFMsUSl7dmFyIHJlPTAsZmU9TjtyZXR1cm4gcmUrPShmZT1mZStnPj4+MCk8Tj8xOjAscmUrPShmZT1mZStNPj4+MCk8TT8xOjAscmUrPShmZT1mZStwPj4+MCk8cD8xOjAseCtGK0MreStTKyhyZSs9KGZlPWZlK1E+Pj4wKTxRPzE6MCk+Pj4wfSx6ZS5zdW02''@;'; put 'put ''NF81X2xvPWZ1bmN0aW9uIGRlKHgsTixGLGcsQyxNLHkscCxTLFEpe3JldHVybiBOK2crTStwK1E+Pj4wfSx6ZS5yb3RyNjRfaGk9ZnVuY3Rpb24gdWUoeCxOLEYpe3JldHVybihOPDwzMi1GfHg+Pj5GKT4+PjB9LHplLnJvdHI2NF9sbz1mdW5jdGlvbiBjZSh4LE4sRil7cmV0dXJuKHg8PDMy''@;'; put 'put ''LUZ8Tj4+PkYpPj4+MH0semUuc2hyNjRfaGk9ZnVuY3Rpb24gWSh4LE4sRil7cmV0dXJuIHg+Pj5GfSx6ZS5zaHI2NF9sbz1mdW5jdGlvbiBiKHgsTixGKXtyZXR1cm4oeDw8MzItRnxOPj4+Rik+Pj4wfX0sOTI0NDc6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDcxMDc2KSxr''@;'; put 'put ''PVQoNzgyNDcpLHY9VCg1Nzc5OCk7ZnVuY3Rpb24gaGUoSCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaGUpKXJldHVybiBuZXcgaGUoSCk7dGhpcy5oYXNoPUguaGFzaCx0aGlzLnByZWRSZXNpc3Q9ISFILnByZWRSZXNpc3QsdGhpcy5vdXRMZW49dGhpcy5oYXNoLm91dFNpemUsdGhpcy5taW5F''@;'; put 'put ''bnRyb3B5PUgubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aCx0aGlzLl9yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFyIEI9ay50b0FycmF5KEguZW50cm9weSxILmVudHJvcHlFbmN8fCJoZXgiKSxMPWsudG9B''@;'; put 'put ''cnJheShILm5vbmNlLEgubm9uY2VFbmN8fCJoZXgiKSxLPWsudG9BcnJheShILnBlcnMsSC5wZXJzRW5jfHwiaGV4Iik7dihCLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5f''@;'; put 'put ''aW5pdChCLEwsSyl9V2UuZXhwb3J0cz1oZSxoZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oQixMLEspe3ZhciBKPUIuY29uY2F0KEwpLmNvbmNhdChLKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBJPTA7''@;'; put 'put ''STx0aGlzLlYubGVuZ3RoO0krKyl0aGlzLktbSV09MCx0aGlzLlZbSV09MTt0aGlzLl91cGRhdGUoSiksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LGhlLnByb3RvdHlwZS5faG1hYz1mdW5jdGlvbigpe3JldHVybiBuZXcgc2UuaG1hYyh0aGlz''@;'; put 'put ''Lmhhc2gsdGhpcy5LKX0saGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oQil7dmFyIEw9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO0ImJihMPUwudXBkYXRlKEIpKSx0aGlzLks9TC5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYp''@;'; put 'put ''LmRpZ2VzdCgpLEImJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShCKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0saGUucHJvdG90eXBlLnJlc2VlZD1mdW5jdGlvbihCLEwsSyxKKXsi''@;'; put 'put ''c3RyaW5nIiE9dHlwZW9mIEwmJihKPUssSz1MLEw9bnVsbCksQj1rLnRvQXJyYXkoQixMKSxLPWsudG9BcnJheShLLEopLHYoQi5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMu''@;'; put 'put ''X3VwZGF0ZShCLmNvbmNhdChLfHxbXSkpLHRoaXMuX3Jlc2VlZD0xfSxoZS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oQixMLEssSil7aWYodGhpcy5fcmVzZWVkPnRoaXMucmVzZWVkSW50ZXJ2YWwpdGhyb3cgbmV3IEVycm9yKCJSZXNlZWQgaXMgcmVxdWlyZWQiKTsic3RyaW5nIiE9''@;'; put 'put ''dHlwZW9mIEwmJihKPUssSz1MLEw9bnVsbCksSyYmKEs9ay50b0FycmF5KEssSnx8ImhleCIpLHRoaXMuX3VwZGF0ZShLKSk7Zm9yKHZhciBJPVtdO0kubGVuZ3RoPEI7KXRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksST1JLmNvbmNhdCh0aGlzLlYpO3ZhciBS''@;'; put 'put ''PUkuc2xpY2UoMCxCKTtyZXR1cm4gdGhpcy5fdXBkYXRlKEspLHRoaXMuX3Jlc2VlZCsrLGsuZW5jb2RlKFIsTCl9fSw1NTgzMzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMjQxNzkpLkJ1ZmZlcjt6ZS5fZGJjcz1KO2Zvcih2YXIgaz0tMSx2PS0yLGhlPS0xMCxIPS0xZTMs''@;'; put 'put ''Qj1uZXcgQXJyYXkoMjU2KSxLPTA7SzwyNTY7SysrKUJbS109aztmdW5jdGlvbiBKKHosail7aWYodGhpcy5lbmNvZGluZ05hbWU9ei5lbmNvZGluZ05hbWUsIXopdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpO2lmKCF6LnRhYmxlKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiRW5jb2RpbmcgJyIrdGhpcy5lbmNvZGluZ05hbWUrIicgaGFzIG5vIGRhdGEuIik7dmFyIFY9ei50YWJsZSgpO3RoaXMuZGVjb2RlVGFibGVzPVtdLHRoaXMuZGVjb2RlVGFibGVzWzBdPUIuc2xpY2UoMCksdGhpcy5kZWNvZGVUYWJsZVNlcT1bXTtmb3IodmFyIEc9''@;'; put 'put ''MDtHPFYubGVuZ3RoO0crKyl0aGlzLl9hZGREZWNvZGVDaHVuayhWW0ddKTt0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1qLmRlZmF1bHRDaGFyVW5pY29kZSx0aGlzLmVuY29kZVRhYmxlPVtdLHRoaXMuZW5jb2RlVGFibGVTZXE9W107dmFyIFc9e307aWYoei5lbmNvZGVTa2lwVmFscylmb3Io''@;'; put 'put ''Rz0wO0c8ei5lbmNvZGVTa2lwVmFscy5sZW5ndGg7RysrKXt2YXIgVT16LmVuY29kZVNraXBWYWxzW0ddO2lmKCJudW1iZXIiPT10eXBlb2YgVSlXW1VdPSEwO2Vsc2UgZm9yKHZhciBxPVUuZnJvbTtxPD1VLnRvO3ErKylXW3FdPSEwfWlmKHRoaXMuX2ZpbGxFbmNvZGVUYWJsZSgwLDAsVyks''@;'; put 'put ''ei5lbmNvZGVBZGQpZm9yKHZhciB0ZSBpbiB6LmVuY29kZUFkZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoei5lbmNvZGVBZGQsdGUpJiZ0aGlzLl9zZXRFbmNvZGVDaGFyKHRlLmNoYXJDb2RlQXQoMCksei5lbmNvZGVBZGRbdGVdKTtpZih0aGlzLmRlZkNoYXJTQj10''@;'; put 'put ''aGlzLmVuY29kZVRhYmxlWzBdW2ouZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCldLHRoaXMuZGVmQ2hhclNCPT09ayYmKHRoaXMuZGVmQ2hhclNCPXRoaXMuZW5jb2RlVGFibGVbMF1bIj8iXSksdGhpcy5kZWZDaGFyU0I9PT1rJiYodGhpcy5kZWZDaGFyU0I9Ij8iLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB6LmdiMTgwMzApe3RoaXMuZ2IxODAzMD16LmdiMTgwMzAoKTt2YXIgbmU9dGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoLGllPXRoaXMuZGVjb2RlVGFibGVzW25lXT1CLnNsaWNlKDApLGxlPXRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aCxkZT10''@;'; put 'put ''aGlzLmRlY29kZVRhYmxlc1tsZV09Qi5zbGljZSgwKTtmb3IoRz0xMjk7Rzw9MjU0O0crKyl7dmFyIGNlPXRoaXMuZGVjb2RlVGFibGVzW0gtdGhpcy5kZWNvZGVUYWJsZXNbMF1bR11dO2ZvcihxPTQ4O3E8PTU3O3ErKyljZVtxXT1ILW5lfWZvcihHPTEyOTtHPD0yNTQ7RysrKWllW0ddPUgt''@;'; put 'put ''bGU7Zm9yKEc9NDg7Rzw9NTc7RysrKWRlW0ddPXZ9fWZ1bmN0aW9uIEkoeixqKXt0aGlzLmxlYWRTdXJyb2dhdGU9LTEsdGhpcy5zZXFPYmo9dm9pZCAwLHRoaXMuZW5jb2RlVGFibGU9ai5lbmNvZGVUYWJsZSx0aGlzLmVuY29kZVRhYmxlU2VxPWouZW5jb2RlVGFibGVTZXEsdGhpcy5kZWZh''@;'; put 'put ''dWx0Q2hhclNpbmdsZUJ5dGU9ai5kZWZDaGFyU0IsdGhpcy5nYjE4MDMwPWouZ2IxODAzMH1mdW5jdGlvbiBSKHosail7dGhpcy5ub2RlSWR4PTAsdGhpcy5wcmV2QnVmPXNlLmFsbG9jKDApLHRoaXMuZGVjb2RlVGFibGVzPWouZGVjb2RlVGFibGVzLHRoaXMuZGVjb2RlVGFibGVTZXE9ai5k''@;'; put 'put ''ZWNvZGVUYWJsZVNlcSx0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1qLmRlZmF1bHRDaGFyVW5pY29kZSx0aGlzLmdiMTgwMzA9ai5nYjE4MDMwfWZ1bmN0aW9uIEUoeixqKXtpZih6WzBdPmopcmV0dXJuLTE7Zm9yKHZhciBWPTAsRz16Lmxlbmd0aDtWPEctMTspe3ZhciBXPVYrTWF0aC5mbG9v''@;'; put 'put ''cigoRy1WKzEpLzIpO3pbV108PWo/Vj1XOkc9V31yZXR1cm4gVn1KLnByb3RvdHlwZS5lbmNvZGVyPUksSi5wcm90b3R5cGUuZGVjb2Rlcj1SLEoucHJvdG90eXBlLl9nZXREZWNvZGVUcmllTm9kZT1mdW5jdGlvbih6KXtmb3IodmFyIGo9W107ej4wO3o+Pj04KWoucHVzaCgyNTUmeik7MD09''@;'; put 'put ''ai5sZW5ndGgmJmoucHVzaCgwKTtmb3IodmFyIFY9dGhpcy5kZWNvZGVUYWJsZXNbMF0sRz1qLmxlbmd0aC0xO0c+MDtHLS0pe3ZhciBXPVZbaltHXV07aWYoVz09aylWW2pbR11dPUgtdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoLHRoaXMuZGVjb2RlVGFibGVzLnB1c2goVj1CLnNsaWNlKDAp''@;'; put 'put ''KTtlbHNle2lmKCEoVzw9SCkpdGhyb3cgbmV3IEVycm9yKCJPdmVyd3JpdGUgYnl0ZSBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIsIGFkZHI6ICIrei50b1N0cmluZygxNikpO1Y9dGhpcy5kZWNvZGVUYWJsZXNbSC1XXX19cmV0dXJuIFZ9LEoucHJvdG90eXBlLl9hZGREZWNvZGVDaHVuaz1m''@;'; put 'put ''dW5jdGlvbih6KXt2YXIgaj1wYXJzZUludCh6WzBdLDE2KSxWPXRoaXMuX2dldERlY29kZVRyaWVOb2RlKGopO2omPTI1NTtmb3IodmFyIEc9MTtHPHoubGVuZ3RoO0crKyl7dmFyIFc9eltHXTtpZigic3RyaW5nIj09dHlwZW9mIFcpZm9yKHZhciBVPTA7VTxXLmxlbmd0aDspe3ZhciBxPVcu''@;'; put 'put ''Y2hhckNvZGVBdChVKyspO2lmKDU1Mjk2PD1xJiZxPDU2MzIwKXt2YXIgdGU9Vy5jaGFyQ29kZUF0KFUrKyk7aWYoISg1NjMyMDw9dGUmJnRlPDU3MzQ0KSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBzdXJyb2dhdGUgcGFpciBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIgYXQgY2h1bmsg''@;'; put 'put ''Iit6WzBdKTtWW2orK109NjU1MzYrMTAyNCoocS01NTI5NikrKHRlLTU2MzIwKX1lbHNlIGlmKDQwODA8cSYmcTw9NDA5NSl7Zm9yKHZhciBuZT00MDk1LXErMixpZT1bXSxsZT0wO2xlPG5lO2xlKyspaWUucHVzaChXLmNoYXJDb2RlQXQoVSsrKSk7VltqKytdPWhlLXRoaXMuZGVjb2RlVGFi''@;'; put 'put ''bGVTZXEubGVuZ3RoLHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChpZSl9ZWxzZSBWW2orK109cX1lbHNle2lmKCJudW1iZXIiIT10eXBlb2YgVyl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB0eXBlICciK3R5cGVvZiBXKyInIGdpdmVuIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBj''@;'; put 'put ''aHVuayAiK3pbMF0pO3ZhciBkZT1WW2otMV0rMTtmb3IoVT0wO1U8VztVKyspVltqKytdPWRlKyt9fWlmKGo+MjU1KXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IGNodW5rIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBhZGRyICIrelswXSsiOiB0b28gbG9uZyIrail9LEoucHJvdG90''@;'; put 'put ''eXBlLl9nZXRFbmNvZGVCdWNrZXQ9ZnVuY3Rpb24oeil7dmFyIGo9ej4+ODtyZXR1cm4gdm9pZCAwPT09dGhpcy5lbmNvZGVUYWJsZVtqXSYmKHRoaXMuZW5jb2RlVGFibGVbal09Qi5zbGljZSgwKSksdGhpcy5lbmNvZGVUYWJsZVtqXX0sSi5wcm90b3R5cGUuX3NldEVuY29kZUNoYXI9ZnVu''@;'; put 'put ''Y3Rpb24oeixqKXt2YXIgVj10aGlzLl9nZXRFbmNvZGVCdWNrZXQoeiksRz0yNTUmejtWW0ddPD1oZT90aGlzLmVuY29kZVRhYmxlU2VxW2hlLVZbR11dWy0xXT1qOlZbR109PWsmJihWW0ddPWopfSxKLnByb3RvdHlwZS5fc2V0RW5jb2RlU2VxdWVuY2U9ZnVuY3Rpb24oeixqKXt2YXIgVSxW''@;'; put 'put ''PXpbMF0sRz10aGlzLl9nZXRFbmNvZGVCdWNrZXQoViksVz0yNTUmVjtHW1ddPD1oZT9VPXRoaXMuZW5jb2RlVGFibGVTZXFbaGUtR1tXXV06KFU9e30sR1tXXSE9PWsmJihVWy0xXT1HW1ddKSxHW1ddPWhlLXRoaXMuZW5jb2RlVGFibGVTZXEubGVuZ3RoLHRoaXMuZW5jb2RlVGFibGVTZXEu''@;'; put 'put ''cHVzaChVKSk7Zm9yKHZhciBxPTE7cTx6Lmxlbmd0aC0xO3ErKyl7dmFyIHRlPVVbVl07Im9iamVjdCI9PXR5cGVvZiB0ZT9VPXRlOihVPVVbVl09e30sdm9pZCAwIT09dGUmJihVWy0xXT10ZSkpfVVbVj16W3oubGVuZ3RoLTFdXT1qfSxKLnByb3RvdHlwZS5fZmlsbEVuY29kZVRhYmxlPWZ1''@;'; put 'put ''bmN0aW9uKHosaixWKXtmb3IodmFyIEc9dGhpcy5kZWNvZGVUYWJsZXNbel0sVz0wO1c8MjU2O1crKyl7dmFyIFU9R1tXXSxxPWorVztWW3FdfHwoVT49MD90aGlzLl9zZXRFbmNvZGVDaGFyKFUscSk6VTw9SD90aGlzLl9maWxsRW5jb2RlVGFibGUoSC1VLHE8PDgsVik6VTw9aGUmJnRoaXMu''@;'; put 'put ''X3NldEVuY29kZVNlcXVlbmNlKHRoaXMuZGVjb2RlVGFibGVTZXFbaGUtVV0scSkpfX0sSS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oeil7Zm9yKHZhciBqPXNlLmFsbG9jKHoubGVuZ3RoKih0aGlzLmdiMTgwMzA/NDozKSksVj10aGlzLmxlYWRTdXJyb2dhdGUsRz10aGlzLnNlcU9iaixX''@;'; put 'put ''PS0xLFU9MCxxPTA7Oyl7aWYoLTE9PT1XKXtpZihVPT16Lmxlbmd0aClicmVhazt2YXIgdGU9ei5jaGFyQ29kZUF0KFUrKyl9ZWxzZSB0ZT1XLFc9LTE7aWYoNTUyOTY8PXRlJiZ0ZTw1NzM0NClpZih0ZTw1NjMyMCl7aWYoLTE9PT1WKXtWPXRlO2NvbnRpbnVlfVY9dGUsdGU9a31lbHNlLTEh''@;'; put 'put ''PT1WPyh0ZT02NTUzNisxMDI0KihWLTU1Mjk2KSsodGUtNTYzMjApLFY9LTEpOnRlPWs7ZWxzZS0xIT09ViYmKFc9dGUsdGU9ayxWPS0xKTt2YXIgbmU9aztpZih2b2lkIDAhPT1HJiZ0ZSE9ayl7dmFyIGllPUdbdGVdO2lmKCJvYmplY3QiPT10eXBlb2YgaWUpe0c9aWU7Y29udGludWV9Im51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBpZT9uZT1pZTpudWxsPT1pZSYmdm9pZCAwIT09KGllPUdbLTFdKSYmKG5lPWllLFc9dGUpLEc9dm9pZCAwfWVsc2UgaWYodGU+PTApe3ZhciBsZT10aGlzLmVuY29kZVRhYmxlW3RlPj44XTtpZih2b2lkIDAhPT1sZSYmKG5lPWxlWzI1NSZ0ZV0pLG5lPD1oZSl7Rz10''@;'; put 'put ''aGlzLmVuY29kZVRhYmxlU2VxW2hlLW5lXTtjb250aW51ZX1pZihuZT09ayYmdGhpcy5nYjE4MDMwKXt2YXIgZGU9RSh0aGlzLmdiMTgwMzAudUNoYXJzLHRlKTtpZigtMSE9ZGUpe25lPXRoaXMuZ2IxODAzMC5nYkNoYXJzW2RlXSsodGUtdGhpcy5nYjE4MDMwLnVDaGFyc1tkZV0pLGpbcSsr''@;'; put 'put ''XT0xMjkrTWF0aC5mbG9vcihuZS8xMjYwMCksbmUlPTEyNjAwLGpbcSsrXT00OCtNYXRoLmZsb29yKG5lLzEyNjApLG5lJT0xMjYwLGpbcSsrXT0xMjkrTWF0aC5mbG9vcihuZS8xMCksaltxKytdPTQ4KyhuZSU9MTApO2NvbnRpbnVlfX19bmU9PT1rJiYobmU9dGhpcy5kZWZhdWx0Q2hhclNp''@;'; put 'put ''bmdsZUJ5dGUpLG5lPDI1Nj9qW3ErK109bmU6bmU8NjU1MzY/KGpbcSsrXT1uZT4+OCxqW3ErK109MjU1Jm5lKTooaltxKytdPW5lPj4xNixqW3ErK109bmU+PjgmMjU1LGpbcSsrXT0yNTUmbmUpfXJldHVybiB0aGlzLnNlcU9iaj1HLHRoaXMubGVhZFN1cnJvZ2F0ZT1WLGouc2xpY2UoMCxx''@;'; put 'put ''KX0sSS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYoLTEhPT10aGlzLmxlYWRTdXJyb2dhdGV8fHZvaWQgMCE9PXRoaXMuc2VxT2JqKXt2YXIgej1zZS5hbGxvYygxMCksaj0wO2lmKHRoaXMuc2VxT2JqKXt2YXIgVj10aGlzLnNlcU9ialstMV07dm9pZCAwIT09ViYmKFY8MjU2P3pbaisr''@;'; put 'put ''XT1WOih6W2orK109Vj4+OCx6W2orK109MjU1JlYpKSx0aGlzLnNlcU9iaj12b2lkIDB9cmV0dXJuLTEhPT10aGlzLmxlYWRTdXJyb2dhdGUmJih6W2orK109dGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUsdGhpcy5sZWFkU3Vycm9nYXRlPS0xKSx6LnNsaWNlKDAsail9fSxJLnByb3RvdHlw''@;'; put 'put ''ZS5maW5kSWR4PUUsUi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oeil7dmFyIGo9c2UuYWxsb2MoMip6Lmxlbmd0aCksVj10aGlzLm5vZGVJZHgsRz10aGlzLnByZXZCdWYsVz10aGlzLnByZXZCdWYubGVuZ3RoLFU9LXRoaXMucHJldkJ1Zi5sZW5ndGg7Vz4wJiYoRz1zZS5jb25jYXQoW0cs''@;'; put 'put ''ei5zbGljZSgwLDEwKV0pKTtmb3IodmFyIHRlPTAsbmU9MDt0ZTx6Lmxlbmd0aDt0ZSsrKXt2YXIgcSxpZT10ZT49MD96W3RlXTpHW3RlK1ddO2lmKCEoKHE9dGhpcy5kZWNvZGVUYWJsZXNbVl1baWVdKT49MCkpaWYocT09PWspdGU9VSxxPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlLmNoYXJD''@;'; put 'put ''b2RlQXQoMCk7ZWxzZSBpZihxPT09dil7dmFyIGxlPVU+PTA/ei5zbGljZShVLHRlKzEpOkcuc2xpY2UoVStXLHRlKzErVyksZGU9MTI2MDAqKGxlWzBdLTEyOSkrMTI2MCoobGVbMV0tNDgpKzEwKihsZVsyXS0xMjkpKyhsZVszXS00OCksdWU9RSh0aGlzLmdiMTgwMzAuZ2JDaGFycyxkZSk7''@;'; put 'put ''cT10aGlzLmdiMTgwMzAudUNoYXJzW3VlXStkZS10aGlzLmdiMTgwMzAuZ2JDaGFyc1t1ZV19ZWxzZXtpZihxPD1IKXtWPUgtcTtjb250aW51ZX1pZighKHE8PWhlKSl0aHJvdyBuZXcgRXJyb3IoImljb252LWxpdGUgaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgZGVjb2RpbmcgdGFibGUgdmFs''@;'; put 'put ''dWUgIitxKyIgYXQgIitWKyIvIitpZSk7Zm9yKHZhciBjZT10aGlzLmRlY29kZVRhYmxlU2VxW2hlLXFdLFk9MDtZPGNlLmxlbmd0aC0xO1krKylqW25lKytdPTI1NSYocT1jZVtZXSksaltuZSsrXT1xPj44O3E9Y2VbY2UubGVuZ3RoLTFdfWlmKHE+NjU1MzUpe3EtPTY1NTM2O3ZhciBiPTU1''@;'; put 'put ''Mjk2K01hdGguZmxvb3IocS8xMDI0KTtqW25lKytdPTI1NSZiLGpbbmUrK109Yj4+OCxxPTU2MzIwK3ElMTAyNH1qW25lKytdPTI1NSZxLGpbbmUrK109cT4+OCxWPTAsVT10ZSsxfXJldHVybiB0aGlzLm5vZGVJZHg9Vix0aGlzLnByZXZCdWY9VT49MD96LnNsaWNlKFUpOkcuc2xpY2UoVStX''@;'; put 'put ''KSxqLnNsaWNlKDAsbmUpLnRvU3RyaW5nKCJ1Y3MyIil9LFIucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2Zvcih2YXIgej0iIjt0aGlzLnByZXZCdWYubGVuZ3RoPjA7KXt6Kz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZTt2YXIgaj10aGlzLnByZXZCdWYuc2xpY2UoMSk7dGhpcy5wcmV2QnVm''@;'; put 'put ''PXNlLmFsbG9jKDApLHRoaXMubm9kZUlkeD0wLGoubGVuZ3RoPjAmJih6Kz10aGlzLndyaXRlKGopKX1yZXR1cm4gdGhpcy5ub2RlSWR4PTAsen19LDMyNTU0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBvcnRzPXtzaGlmdGppczp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFQoMjcwMTQpfSxlbmNvZGVBZGQ6eyJceGE1Ijo5MiwiXHUyMDNlIjoxMjZ9LGVuY29kZVNraXBWYWxzOlt7ZnJvbTo2MDczNix0bzo2MzgwOH1dfSxjc3NoaWZ0amlzOiJzaGlmdGppcyIsbXNrYW5qaToic2hpZnRqaXMiLHNqaXM6InNoaWZ0amlzIix3aW5kb3dzMzFqOiJz''@;'; put 'put ''aGlmdGppcyIsbXMzMWo6InNoaWZ0amlzIix4c2ppczoic2hpZnRqaXMiLHdpbmRvd3M5MzI6InNoaWZ0amlzIixtczkzMjoic2hpZnRqaXMiLDkzMjoic2hpZnRqaXMiLGNwOTMyOiJzaGlmdGppcyIsZXVjanA6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBUKDMxNTMy''@;'; put 'put ''KX0sZW5jb2RlQWRkOnsiXHhhNSI6OTIsIlx1MjAzZSI6MTI2fX0sZ2IyMzEyOiJjcDkzNiIsZ2IyMzEyODA6ImNwOTM2IixnYjIzMTIxOTgwOiJjcDkzNiIsY3NnYjIzMTI6ImNwOTM2Iixjc2lzbzU4Z2IyMzEyODA6ImNwOTM2IixldWNjbjoiY3A5MzYiLHdpbmRvd3M5MzY6ImNwOTM2Iixt''@;'; put 'put ''czkzNjoiY3A5MzYiLDkzNjoiY3A5MzYiLGNwOTM2Ont0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gVCgxMzMzNil9fSxnYms6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBUKDEzMzM2KS5jb25jYXQoVCg0NDM0NikpfX0seGdiazoiZ2JrIixpc29p''@;'; put 'put ''cjU4OiJnYmsiLGdiMTgwMzA6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBUKDEzMzM2KS5jb25jYXQoVCg0NDM0NikpfSxnYjE4MDMwOmZ1bmN0aW9uKCl7cmV0dXJuIFQoMzYyNTgpfSxlbmNvZGVTa2lwVmFsczpbMTI4XSxlbmNvZGVBZGQ6eyJcdTIwYWMiOjQxNjk5''@;'; put 'put ''fX0sY2hpbmVzZToiZ2IxODAzMCIsd2luZG93czk0OToiY3A5NDkiLG1zOTQ5OiJjcDk0OSIsOTQ5OiJjcDk0OSIsY3A5NDk6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBUKDc3MzQ4KX19LGNzZXVja3I6ImNwOTQ5Iixjc2tzYzU2MDExOTg3OiJjcDk0OSIsZXVja3I6''@;'; put 'put ''ImNwOTQ5Iixpc29pcjE0OToiY3A5NDkiLGtvcmVhbjoiY3A5NDkiLGtzYzU2MDExOTg3OiJjcDk0OSIsa3NjNTYwMTE5ODk6ImNwOTQ5Iixrc2M1NjAxOiJjcDk0OSIsd2luZG93czk1MDoiY3A5NTAiLG1zOTUwOiJjcDk1MCIsOTUwOiJjcDk1MCIsY3A5NTA6e3R5cGU6Il9kYmNzIix0YWJs''@;'; put 'put ''ZTpmdW5jdGlvbigpe3JldHVybiBUKDc0Mjg0KX19LGJpZzU6ImJpZzVoa3NjcyIsYmlnNWhrc2NzOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gVCg3NDI4NCkuY29uY2F0KFQoNjM0ODApKX0sZW5jb2RlU2tpcFZhbHM6WzQxNjc2XX0sY25iaWc1OiJiaWc1aGtzY3Mi''@;'; put 'put ''LGNzYmlnNToiYmlnNWhrc2NzIix4eGJpZzU6ImJpZzVoa3NjcyJ9fSw0NDY1NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7Zm9yKHZhciBzZT1bVCgyNzY0OCksVCg5Mjg0NCksVCg0MzI4MCksVCg3ODM1NCksVCg3MTc2NCksVCg2NDc3MyksVCgyMDUwMyksVCg1NTgzMyksVCgzMjU1NCld''@;'; put 'put ''LGs9MDtrPHNlLmxlbmd0aDtrKyspe3ZhciB2PXNlW2tdO2Zvcih2YXIgaGUgaW4gdilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodixoZSkmJih6ZVtoZV09dltoZV0pfX0sMjc2NDg6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDI0MTc5KS5CdWZmZXI7''@;'; put 'put ''ZnVuY3Rpb24gayhKLEkpe3RoaXMuZW5jPUouZW5jb2RpbmdOYW1lLHRoaXMuYm9tQXdhcmU9Si5ib21Bd2FyZSwiYmFzZTY0Ij09PXRoaXMuZW5jP3RoaXMuZW5jb2Rlcj1COiJjZXN1OCI9PT10aGlzLmVuYyYmKHRoaXMuZW5jPSJ1dGY4Iix0aGlzLmVuY29kZXI9TCwiXHV7MWY0YTl9IiE9''@;'; put 'put ''PXNlLmZyb20oImVkYTBiZGVkYjJhOSIsImhleCIpLnRvU3RyaW5nKCkmJih0aGlzLmRlY29kZXI9Syx0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1JLmRlZmF1bHRDaGFyVW5pY29kZSkpfVdlLmV4cG9ydHM9e3V0Zjg6e3R5cGU6Il9pbnRlcm5hbCIsYm9tQXdhcmU6ITB9LGNlc3U4Ont0eXBl''@;'; put 'put ''OiJfaW50ZXJuYWwiLGJvbUF3YXJlOiEwfSx1bmljb2RlMTF1dGY4OiJ1dGY4Iix1Y3MyOnt0eXBlOiJfaW50ZXJuYWwiLGJvbUF3YXJlOiEwfSx1dGYxNmxlOiJ1Y3MyIixiaW5hcnk6e3R5cGU6Il9pbnRlcm5hbCJ9LGJhc2U2NDp7dHlwZToiX2ludGVybmFsIn0saGV4Ont0eXBlOiJfaW50''@;'; put 'put ''ZXJuYWwifSxfaW50ZXJuYWw6a30say5wcm90b3R5cGUuZW5jb2Rlcj1ILGsucHJvdG90eXBlLmRlY29kZXI9aGU7dmFyIHY9VCg3MjAyNCkucztmdW5jdGlvbiBoZShKLEkpe3YuY2FsbCh0aGlzLEkuZW5jKX1mdW5jdGlvbiBIKEosSSl7dGhpcy5lbmM9SS5lbmN9ZnVuY3Rpb24gQihKLEkp''@;'; put 'put ''e3RoaXMucHJldlN0cj0iIn1mdW5jdGlvbiBMKEosSSl7fWZ1bmN0aW9uIEsoSixJKXt0aGlzLmFjYz0wLHRoaXMuY29udEJ5dGVzPTAsdGhpcy5hY2NCeXRlcz0wLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPUkuZGVmYXVsdENoYXJVbmljb2RlfXYucHJvdG90eXBlLmVuZHx8KHYucHJvdG90''@;'; put 'put ''eXBlLmVuZD1mdW5jdGlvbigpe30pLGhlLnByb3RvdHlwZT12LnByb3RvdHlwZSxILnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihKKXtyZXR1cm4gc2UuZnJvbShKLHRoaXMuZW5jKX0sSC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSxCLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihKKXt2''@;'; put 'put ''YXIgST0oSj10aGlzLnByZXZTdHIrSikubGVuZ3RoLUoubGVuZ3RoJTQ7cmV0dXJuIHRoaXMucHJldlN0cj1KLnNsaWNlKEkpLEo9Si5zbGljZSgwLEkpLHNlLmZyb20oSiwiYmFzZTY0Iil9LEIucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiBzZS5mcm9tKHRoaXMucHJldlN0ciwi''@;'; put 'put ''YmFzZTY0Iil9LEwucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEope2Zvcih2YXIgST1zZS5hbGxvYygzKkoubGVuZ3RoKSxSPTAsRT0wO0U8Si5sZW5ndGg7RSsrKXt2YXIgej1KLmNoYXJDb2RlQXQoRSk7ejwxMjg/SVtSKytdPXo6ejwyMDQ4PyhJW1IrK109MTkyKyh6Pj4+NiksSVtSKytd''@;'; put 'put ''PTEyOCsoNjMmeikpOihJW1IrK109MjI0Kyh6Pj4+MTIpLElbUisrXT0xMjgrKHo+Pj42JjYzKSxJW1IrK109MTI4Kyg2MyZ6KSl9cmV0dXJuIEkuc2xpY2UoMCxSKX0sTC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSxLLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihKKXtmb3IodmFyIEk9''@;'; put 'put ''dGhpcy5hY2MsUj10aGlzLmNvbnRCeXRlcyxFPXRoaXMuYWNjQnl0ZXMsej0iIixqPTA7ajxKLmxlbmd0aDtqKyspe3ZhciBWPUpbal07MTI4IT0oMTkyJlYpPyhSPjAmJih6Kz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSxSPTApLFY8MTI4P3orPVN0cmluZy5mcm9tQ2hhckNvZGUoVik6Vjwy''@;'; put 'put ''MjQ/KEk9MzEmVixSPTEsRT0xKTpWPDI0MD8oST0xNSZWLFI9MixFPTEpOnorPXRoaXMuZGVmYXVsdENoYXJVbmljb2RlKTpSPjA/KEk9STw8Nnw2MyZWLEUrKywwPT0tLVImJih6Kz0yPT09RSYmSTwxMjgmJkk+MHx8Mz09PUUmJkk8MjA0OD90aGlzLmRlZmF1bHRDaGFyVW5pY29kZTpTdHJp''@;'; put 'put ''bmcuZnJvbUNoYXJDb2RlKEkpKSk6eis9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGV9cmV0dXJuIHRoaXMuYWNjPUksdGhpcy5jb250Qnl0ZXM9Uix0aGlzLmFjY0J5dGVzPUUsen0sSy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIEo9MDtyZXR1cm4gdGhpcy5jb250Qnl0ZXM+MCYmKEor''@;'; put 'put ''PXRoaXMuZGVmYXVsdENoYXJVbmljb2RlKSxKfX0sNzE3NjQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDI0MTc5KS5CdWZmZXI7ZnVuY3Rpb24gayhILEIpe2lmKCFIKXRocm93IG5ldyBFcnJvcigiU0JDUyBjb2RlYyBpcyBjYWxsZWQgd2l0aG91dCB0aGUgZGF0YS4iKTtp''@;'; put 'put ''ZighSC5jaGFyc3x8MTI4IT09SC5jaGFycy5sZW5ndGgmJjI1NiE9PUguY2hhcnMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgJyIrSC50eXBlKyInIGhhcyBpbmNvcnJlY3QgJ2NoYXJzJyAobXVzdCBiZSBvZiBsZW4gMTI4IG9yIDI1NikiKTtpZigxMjg9PT1ILmNoYXJzLmxl''@;'; put 'put ''bmd0aCl7Zm9yKHZhciBMPSIiLEs9MDtLPDEyODtLKyspTCs9U3RyaW5nLmZyb21DaGFyQ29kZShLKTtILmNoYXJzPUwrSC5jaGFyc310aGlzLmRlY29kZUJ1Zj1zZS5mcm9tKEguY2hhcnMsInVjczIiKTt2YXIgSj1zZS5hbGxvYyg2NTUzNixCLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZS5jaGFy''@;'; put 'put ''Q29kZUF0KDApKTtmb3IoSz0wO0s8SC5jaGFycy5sZW5ndGg7SysrKUpbSC5jaGFycy5jaGFyQ29kZUF0KEspXT1LO3RoaXMuZW5jb2RlQnVmPUp9ZnVuY3Rpb24gdihILEIpe3RoaXMuZW5jb2RlQnVmPUIuZW5jb2RlQnVmfWZ1bmN0aW9uIGhlKEgsQil7dGhpcy5kZWNvZGVCdWY9Qi5kZWNv''@;'; put 'put ''ZGVCdWZ9emUuX3NiY3M9ayxrLnByb3RvdHlwZS5lbmNvZGVyPXYsay5wcm90b3R5cGUuZGVjb2Rlcj1oZSx2LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihIKXtmb3IodmFyIEI9c2UuYWxsb2MoSC5sZW5ndGgpLEw9MDtMPEgubGVuZ3RoO0wrKylCW0xdPXRoaXMuZW5jb2RlQnVmW0guY2hh''@;'; put 'put ''ckNvZGVBdChMKV07cmV0dXJuIEJ9LHYucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30saGUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEgpe2Zvcih2YXIgQj10aGlzLmRlY29kZUJ1ZixMPXNlLmFsbG9jKDIqSC5sZW5ndGgpLEs9MCxKPTAsST0wO0k8SC5sZW5ndGg7SSsrKUxbSj0yKkld''@;'; put 'put ''PUJbSz0yKkhbSV1dLExbSisxXT1CW0srMV07cmV0dXJuIEwudG9TdHJpbmcoInVjczIiKX0saGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe319LDIwNTAzOldlPT57InVzZSBzdHJpY3QiO1dlLmV4cG9ydHM9ezQzNzoiY3A0MzciLDczNzoiY3A3MzciLDc3NToiY3A3NzUiLDg1MDoiY3A4''@;'; put 'put ''NTAiLDg1MjoiY3A4NTIiLDg1NToiY3A4NTUiLDg1NjoiY3A4NTYiLDg1NzoiY3A4NTciLDg1ODoiY3A4NTgiLDg2MDoiY3A4NjAiLDg2MToiY3A4NjEiLDg2MjoiY3A4NjIiLDg2MzoiY3A4NjMiLDg2NDoiY3A4NjQiLDg2NToiY3A4NjUiLDg2NjoiY3A4NjYiLDg2OToiY3A4NjkiLDg3NDoi''@;'; put 'put ''d2luZG93czg3NCIsOTIyOiJjcDkyMiIsMTA0NjoiY3AxMDQ2IiwxMTI0OiJjcDExMjQiLDExMjU6ImNwMTEyNSIsMTEyOToiY3AxMTI5IiwxMTMzOiJjcDExMzMiLDExNjE6ImNwMTE2MSIsMTE2MjoiY3AxMTYyIiwxMTYzOiJjcDExNjMiLDEyNTA6IndpbmRvd3MxMjUwIiwxMjUxOiJ3aW5k''@;'; put 'put ''b3dzMTI1MSIsMTI1Mjoid2luZG93czEyNTIiLDEyNTM6IndpbmRvd3MxMjUzIiwxMjU0OiJ3aW5kb3dzMTI1NCIsMTI1NToid2luZG93czEyNTUiLDEyNTY6IndpbmRvd3MxMjU2IiwxMjU3OiJ3aW5kb3dzMTI1NyIsMTI1ODoid2luZG93czEyNTgiLDI4NTkxOiJpc284ODU5MSIsMjg1OTI6''@;'; put 'put ''Imlzbzg4NTkyIiwyODU5MzoiaXNvODg1OTMiLDI4NTk0OiJpc284ODU5NCIsMjg1OTU6Imlzbzg4NTk1IiwyODU5NjoiaXNvODg1OTYiLDI4NTk3OiJpc284ODU5NyIsMjg1OTg6Imlzbzg4NTk4IiwyODU5OToiaXNvODg1OTkiLDI4NjAwOiJpc284ODU5MTAiLDI4NjAxOiJpc284ODU5MTEi''@;'; put 'put ''LDI4NjAzOiJpc284ODU5MTMiLDI4NjA0OiJpc284ODU5MTQiLDI4NjA1OiJpc284ODU5MTUiLDI4NjA2OiJpc284ODU5MTYiLHdpbmRvd3M4NzQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUw''@;'; put 'put ''NVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1''@;'; put 'put ''MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1''@;'; put 'put ''MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LHdpbjg3NDoid2luZG93czg3NCIsY3A4NzQ6IndpbmRvd3M4NzQiLHdpbmRvd3MxMjUwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1ZmZmZFx1MjAxZVx1MjAyNlx1MjAyMFx1''@;'; put 'put ''MjAyMVx1ZmZmZFx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1YVx1MDE2NFx1MDE3ZFx1MDE3OVx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDE2MVx1MjAzYVx1MDE1Ylx1MDE2NVx1MDE3ZVx1MDE3YVx4YTBcdTAyYzdcdTAyZDhc''@;'; put 'put ''dTAxNDFceGE0XHUwMTA0XHhhNlx4YTdceGE4XHhhOVx1MDE1ZVx4YWJceGFjXHhhZFx4YWVcdTAxN2JceGIwXHhiMVx1MDJkYlx1MDE0Mlx4YjRceGI1XHhiNlx4YjdceGI4XHUwMTA1XHUwMTVmXHhiYlx1MDEzZFx1MDJkZFx1MDEzZVx1MDE3Y1x1MDE1NFx4YzFceGMyXHUwMTAyXHhjNFx1''@;'; put 'put ''MDEzOVx1MDEwNlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExYVx4Y2RceGNlXHUwMTBlXHUwMTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2ZVx4ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAxNTVceGUxXHhlMlx1MDEwM1x4ZTRcdTAxM2Fc''@;'; put 'put ''dTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJceGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhmNlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUwMTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkifSx3aW4xMjUwOiJ3aW5kb3dzMTI1MCIsY3AxMjUwOiJ3''@;'; put 'put ''aW5kb3dzMTI1MCIsd2luZG93czEyNTE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDAyXHUwNDAzXHUyMDFhXHUwNDUzXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUyMGFjXHUyMDMwXHUwNDA5XHUyMDM5XHUwNDBhXHUwNDBjXHUwNDBiXHUwNDBmXHUwNDUyXHUyMDE4XHUyMDE5XHUyMDFj''@;'; put 'put ''XHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHUwNDU5XHUyMDNhXHUwNDVhXHUwNDVjXHUwNDViXHUwNDVmXHhhMFx1MDQwZVx1MDQ1ZVx1MDQwOFx4YTRcdTA0OTBceGE2XHhhN1x1MDQwMVx4YTlcdTA0MDRceGFiXHhhY1x4YWRceGFlXHUwNDA3XHhiMFx4YjFcdTA0MDZc''@;'; put 'put ''dTA0NTZcdTA0OTFceGI1XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0NTRceGJiXHUwNDU4XHUwNDA1XHUwNDU1XHUwNDU3XHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFm''@;'; put 'put ''XHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUw''@;'; put 'put ''NDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmIn0sd2luMTI1MToid2luZG93czEyNTEiLGNwMTI1MToid2luZG93czEy''@;'; put 'put ''NTEiLHdpbmRvd3MxMjUyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1MDE3ZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1''@;'; put 'put ''MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZmZFx1MDE3ZVx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4Yjhc''@;'; put 'put ''eGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx4ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4''@;'; put 'put ''ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LHdpbjEyNTI6IndpbmRvd3MxMjUyIixjcDEyNTI6IndpbmRvd3MxMjUyIix3''@;'; put 'put ''aW5kb3dzMTI1Mzp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJc''@;'; put 'put ''dTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwMzg1XHUwMzg2XHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx1ZmZmZFx4YWJceGFjXHhhZFx4YWVcdTIwMTVceGIwXHhiMVx4YjJceGIzXHUwMzg0XHhiNVx4YjZceGI3''@;'; put 'put ''XHUwMzg4XHUwMzg5XHUwMzhhXHhiYlx1MDM4Y1x4YmRcdTAzOGVcdTAzOGZcdTAzOTBcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdWZmZmRcdTAzYTNc''@;'; put 'put ''dTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYWFcdTAzYWJcdTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzYjBcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAz''@;'; put 'put ''YmZcdTAzYzBcdTAzYzFcdTAzYzJcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdTAzY2FcdTAzY2JcdTAzY2NcdTAzY2RcdTAzY2VcdWZmZmQifSx3aW4xMjUzOiJ3aW5kb3dzMTI1MyIsY3AxMjUzOiJ3aW5kb3dzMTI1MyIsd2luZG93czEyNTQ6e3R5cGU6Il9z''@;'; put 'put ''YmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUy''@;'; put 'put ''MTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHVmZmZkXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4''@;'; put 'put ''YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTFlXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMTMwXHUwMTVlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZc''@;'; put 'put ''eGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMWZceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxMzFcdTAxNWZceGZmIn0sd2luMTI1NDoid2luZG93czEyNTQiLGNwMTI1NDoid2luZG93czEyNTQiLHdpbmRvd3MxMjU1Ont0''@;'; put 'put ''eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1ZmZmZFx1MjAzOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1''@;'; put 'put ''MDJkY1x1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBceGExXHhhMlx4YTNcdTIwYWFceGE1XHhhNlx4YTdceGE4XHhhOVx4ZDdceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGY3XHhiYlx4YmNc''@;'; put 'put ''eGJkXHhiZVx4YmZcdTA1YjBcdTA1YjFcdTA1YjJcdTA1YjNcdTA1YjRcdTA1YjVcdTA1YjZcdTA1YjdcdTA1YjhcdTA1YjlcdTA1YmFcdTA1YmJcdTA1YmNcdTA1YmRcdTA1YmVcdTA1YmZcdTA1YzBcdTA1YzFcdTA1YzJcdTA1YzNcdTA1ZjBcdTA1ZjFcdTA1ZjJcdTA1ZjNcdTA1ZjRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRc''@;'; put 'put ''dTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRcdWZmZmRcdTIwMGVcdTIwMGZcdWZmZmQifSx3aW4xMjU1OiJ3aW5kb3dzMTI1NSIsY3AxMjU1OiJ3aW5kb3dzMTI1NSIsd2luZG93czEyNTY6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHUwNjdlXHUyMDFhXHUw''@;'; put 'put ''MTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwNjc5XHUyMDM5XHUwMTUyXHUwNjg2XHUwNjk4XHUwNjg4XHUwNmFmXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwNmE5XHUyMTIyXHUwNjkxXHUyMDNhXHUwMTUzXHUyMDBjXHUyMDBk''@;'; put 'put ''XHUwNmJhXHhhMFx1MDYwY1x4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHUwNmJlXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHUwNjFiXHhiYlx4YmNceGJkXHhiZVx1MDYxZlx1MDZjMVx1MDYyMVx1MDYyMlx1MDYy''@;'; put 'put ''M1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx4ZDdcdTA2MzdcdTA2MzhcdTA2MzlcdTA2M2FcdTA2NDBcdTA2NDFcdTA2NDJcdTA2''@;'; put 'put ''NDNceGUwXHUwNjQ0XHhlMlx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx4ZTdceGU4XHhlOVx4ZWFceGViXHUwNjQ5XHUwNjRhXHhlZVx4ZWZcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVceGY0XHUwNjRmXHUwNjUwXHhmN1x1MDY1MVx4ZjlcdTA2NTJceGZiXHhmY1x1MjAwZVx1MjAwZlx1MDZk''@;'; put 'put ''MiJ9LHdpbjEyNTY6IndpbmRvd3MxMjU2IixjcDEyNTY6IndpbmRvd3MxMjU2Iix3aW5kb3dzMTI1Nzp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRceGE4XHUw''@;'; put 'put ''MmM3XHhiOFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1ZmZmZFx4YWZcdTAyZGJcdWZmZmRceGEwXHVmZmZkXHhhMlx4YTNceGE0XHVmZmZkXHhhNlx4YTdceGQ4XHhhOVx1MDE1Nlx4YWJceGFjXHhhZFx4''@;'; put 'put ''YWVceGM2XHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGY4XHhiOVx1MDE1N1x4YmJceGJjXHhiZFx4YmVceGU2XHUwMTA0XHUwMTJlXHUwMTAwXHUwMTA2XHhjNFx4YzVcdTAxMThcdTAxMTJcdTAxMGNceGM5XHUwMTc5XHUwMTE2XHUwMTIyXHUwMTM2XHUwMTJhXHUwMTNiXHUw''@;'; put 'put ''MTYwXHUwMTQzXHUwMTQ1XHhkM1x1MDE0Y1x4ZDVceGQ2XHhkN1x1MDE3Mlx1MDE0MVx1MDE1YVx1MDE2YVx4ZGNcdTAxN2JcdTAxN2RceGRmXHUwMTA1XHUwMTJmXHUwMTAxXHUwMTA3XHhlNFx4ZTVcdTAxMTlcdTAxMTNcdTAxMGRceGU5XHUwMTdhXHUwMTE3XHUwMTIzXHUwMTM3XHUwMTJi''@;'; put 'put ''XHUwMTNjXHUwMTYxXHUwMTQ0XHUwMTQ2XHhmM1x1MDE0ZFx4ZjVceGY2XHhmN1x1MDE3M1x1MDE0Mlx1MDE1Ylx1MDE2Ylx4ZmNcdTAxN2NcdTAxN2VcdTAyZDkifSx3aW4xMjU3OiJ3aW5kb3dzMTI1NyIsY3AxMjU3OiJ3aW5kb3dzMTI1NyIsd2luZG93czEyNTg6e3R5cGU6Il9zYmNzIixj''@;'; put 'put ''aGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHUwMTUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVm''@;'; put 'put ''ZmZkXHUyMDNhXHUwMTUzXHVmZmZkXHVmZmZkXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMw''@;'; put 'put ''XHhjMVx4YzJcdTAxMDJceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhjZlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxYWZcdTAzMDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4ZTVc''@;'; put 'put ''eGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiJ9LHdpbjEyNTg6IndpbmRvd3MxMjU4IixjcDEyNTg6IndpbmRvd3MxMjU4Iixpc284''@;'; put 'put ''ODU5MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhh''@;'; put 'put ''Mlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNi''@;'; put 'put ''XHhjY1x4Y2RceGNlXHhjZlx4ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRc''@;'; put 'put ''eGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LGNwMjg1OTE6Imlzbzg4NTkxIixpc284ODU5Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4''@;'; put 'put ''OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMDRcdTAyZDhcdTAxNDFceGE0XHUwMTNkXHUwMTVhXHhhN1x4YThcdTAxNjBcdTAxNWVcdTAxNjRcdTAxNzlceGFkXHUwMTdkXHUwMTdiXHhiMFx1MDEwNVx1MDJkYlx1MDE0''@;'; put 'put ''Mlx4YjRcdTAxM2VcdTAxNWJcdTAyYzdceGI4XHUwMTYxXHUwMTVmXHUwMTY1XHUwMTdhXHUwMmRkXHUwMTdlXHUwMTdjXHUwMTU0XHhjMVx4YzJcdTAxMDJceGM0XHUwMTM5XHUwMTA2XHhjN1x1MDEwY1x4YzlcdTAxMThceGNiXHUwMTFhXHhjZFx4Y2VcdTAxMGVcdTAxMTBcdTAxNDNcdTAx''@;'; put 'put ''NDdceGQzXHhkNFx1MDE1MFx4ZDZceGQ3XHUwMTU4XHUwMTZlXHhkYVx1MDE3MFx4ZGNceGRkXHUwMTYyXHhkZlx1MDE1NVx4ZTFceGUyXHUwMTAzXHhlNFx1MDEzYVx1MDEwN1x4ZTdcdTAxMGRceGU5XHUwMTE5XHhlYlx1MDExYlx4ZWRceGVlXHUwMTBmXHUwMTExXHUwMTQ0XHUwMTQ4XHhm''@;'; put 'put ''M1x4ZjRcdTAxNTFceGY2XHhmN1x1MDE1OVx1MDE2Zlx4ZmFcdTAxNzFceGZjXHhmZFx1MDE2M1x1MDJkOSJ9LGNwMjg1OTI6Imlzbzg4NTkyIixpc284ODU5Mzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhj''@;'; put 'put ''XHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTAxMjZcdTAyZDhceGEzXHhhNFx1ZmZmZFx1MDEyNFx4YTdceGE4XHUwMTMwXHUwMTVlXHUwMTFlXHUwMTM0XHhhZFx1ZmZmZFx1MDE3Ylx4YjBc''@;'; put 'put ''dTAxMjdceGIyXHhiM1x4YjRceGI1XHUwMTI1XHhiN1x4YjhcdTAxMzFcdTAxNWZcdTAxMWZcdTAxMzVceGJkXHVmZmZkXHUwMTdjXHhjMFx4YzFceGMyXHVmZmZkXHhjNFx1MDEwYVx1MDEwOFx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1ZmZmZFx4ZDFceGQyXHhkM1x4''@;'; put 'put ''ZDRcdTAxMjBceGQ2XHhkN1x1MDExY1x4ZDlceGRhXHhkYlx4ZGNcdTAxNmNcdTAxNWNceGRmXHhlMFx4ZTFceGUyXHVmZmZkXHhlNFx1MDEwYlx1MDEwOVx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1ZmZmZFx4ZjFceGYyXHhmM1x4ZjRcdTAxMjFceGY2XHhmN1x1MDEx''@;'; put 'put ''ZFx4ZjlceGZhXHhmYlx4ZmNcdTAxNmRcdTAxNWRcdTAyZDkifSxjcDI4NTkzOiJpc284ODU5MyIsaXNvODg1OTQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4''@;'; put 'put ''OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTA0XHUwMTM4XHUwMTU2XHhhNFx1MDEyOFx1MDEzYlx4YTdceGE4XHUwMTYwXHUwMTEyXHUwMTIyXHUwMTY2XHhhZFx1MDE3ZFx4YWZceGIwXHUwMTA1XHUwMmRiXHUwMTU3XHhiNFx1MDEy''@;'; put 'put ''OVx1MDEzY1x1MDJjN1x4YjhcdTAxNjFcdTAxMTNcdTAxMjNcdTAxNjdcdTAxNGFcdTAxN2VcdTAxNGJcdTAxMDBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZcdTAxMmVcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExNlx4Y2RceGNlXHUwMTJhXHUwMTEwXHUwMTQ1XHUwMTRjXHUwMTM2XHhkNFx4''@;'; put 'put ''ZDVceGQ2XHhkN1x4ZDhcdTAxNzJceGRhXHhkYlx4ZGNcdTAxNjhcdTAxNmFceGRmXHUwMTAxXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHUwMTJmXHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMTdceGVkXHhlZVx1MDEyYlx1MDExMVx1MDE0Nlx1MDE0ZFx1MDEzN1x4ZjRceGY1XHhmNlx4Zjdc''@;'; put 'put ''eGY4XHUwMTczXHhmYVx4ZmJceGZjXHUwMTY5XHUwMTZiXHUwMmQ5In0sY3AyODU5NDoiaXNvODg1OTQiLGlzbzg4NTk1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4''@;'; put 'put ''OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDQwMVx1MDQwMlx1MDQwM1x1MDQwNFx1MDQwNVx1MDQwNlx1MDQwN1x1MDQwOFx1MDQwOVx1MDQwYVx1MDQwYlx1MDQwY1x4YWRcdTA0MGVcdTA0MGZcdTA0MTBcdTA0MTFcdTA0MTJc''@;'; put 'put ''dTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0''@;'; put 'put ''MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlc''@;'; put 'put ''dTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTIxMTZcdTA0NTFcdTA0NTJcdTA0NTNcdTA0NTRcdTA0NTVcdTA0NTZcdTA0NTdcdTA0NThcdTA0NTlcdTA0NWFcdTA0NWJcdTA0NWNceGE3XHUwNDVlXHUwNDVmIn0sY3AyODU5NToiaXNvODg1OTUiLGlzbzg4NTk2Ont0eXBl''@;'; put 'put ''OiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx4YTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA2MGNceGFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNjFiXHVmZmZkXHVmZmZkXHVmZmZkXHUwNjFm''@;'; put 'put ''XHVmZmZkXHUwNjIxXHUwNjIyXHUwNjIzXHUwNjI0XHUwNjI1XHUwNjI2XHUwNjI3XHUwNjI4XHUwNjI5XHUwNjJhXHUwNjJiXHUwNjJjXHUwNjJkXHUwNjJlXHUwNjJmXHUwNjMwXHUwNjMxXHUwNjMyXHUwNjMzXHUwNjM0XHUwNjM1XHUwNjM2XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHUwNjQ0XHUwNjQ1XHUwNjQ2XHUwNjQ3XHUwNjQ4XHUwNjQ5XHUwNjRhXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHUwNjRmXHUwNjUwXHUwNjUxXHUwNjUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sY3AyODU5NjoiaXNvODg1OTYiLGlzbzg4NTk3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4''@;'; put 'put ''ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MjAxOFx1MjAxOVx4YTNcdTIwYWNcdTIwYWZceGE2XHhhN1x4YThceGE5XHUwMzdhXHhhYlx4YWNceGFkXHVmZmZkXHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1''@;'; put 'put ''MDM4NFx1MDM4NVx1MDM4Nlx4YjdcdTAzODhcdTAzODlcdTAzOGFceGJiXHUwMzhjXHhiZFx1MDM4ZVx1MDM4Zlx1MDM5MFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNh''@;'; put 'put ''MFx1MDNhMVx1ZmZmZFx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNhYVx1MDNhYlx1MDNhY1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNiMFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1''@;'; put 'put ''MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjMlx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MDNjYVx1MDNjYlx1MDNjY1x1MDNjZFx1MDNjZVx1ZmZmZCJ9LGNwMjg1OTc6Imlzbzg4NTk3Iixpc284ODU5ODp7dHlwZToiX3NiY3MiLGNo''@;'; put 'put ''YXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdWZmZmRceGEyXHhhM1x4YTRceGE1XHhhNlx4''@;'; put 'put ''YTdceGE4XHhhOVx4ZDdceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGY3XHhiYlx4YmNceGJkXHhiZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxN1x1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1''@;'; put 'put ''MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCJ9LGNwMjg1OTg6''@;'; put 'put ''Imlzbzg4NTk4Iixpc284ODU5OTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDll''@;'; put 'put ''XHg5Zlx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4Yzdc''@;'; put 'put ''eGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExZVx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDEzMFx1MDE1ZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVm''@;'; put 'put ''XHUwMTFmXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMTMxXHUwMTVmXHhmZiJ9LGNwMjg1OTk6Imlzbzg4NTk5Iixpc284ODU5MTA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4''@;'; put 'put ''OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTA0XHUwMTEyXHUwMTIyXHUwMTJhXHUwMTI4XHUwMTM2XHhhN1x1MDEzYlx1MDExMFx1MDE2MFx1MDE2Nlx1MDE3ZFx4YWRc''@;'; put 'put ''dTAxNmFcdTAxNGFceGIwXHUwMTA1XHUwMTEzXHUwMTIzXHUwMTJiXHUwMTI5XHUwMTM3XHhiN1x1MDEzY1x1MDExMVx1MDE2MVx1MDE2N1x1MDE3ZVx1MjAxNVx1MDE2Ylx1MDE0Ylx1MDEwMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx1MDEyZVx1MDEwY1x4YzlcdTAxMThceGNiXHUwMTE2''@;'; put 'put ''XHhjZFx4Y2VceGNmXHhkMFx1MDE0NVx1MDE0Y1x4ZDNceGQ0XHhkNVx4ZDZcdTAxNjhceGQ4XHUwMTcyXHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHUwMTAxXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHUwMTJmXHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMTdceGVkXHhlZVx4ZWZceGYwXHUw''@;'; put 'put ''MTQ2XHUwMTRkXHhmM1x4ZjRceGY1XHhmNlx1MDE2OVx4ZjhcdTAxNzNceGZhXHhmYlx4ZmNceGZkXHhmZVx1MDEzOCJ9LGNwMjg2MDA6Imlzbzg4NTkxMCIsaXNvODg1OTExOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhh''@;'; put 'put ''XHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUw''@;'; put 'put ''ZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1''@;'; put 'put ''MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0''@;'; put 'put ''NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9''@;'; put 'put ''LGNwMjg2MDE6Imlzbzg4NTkxMSIsaXNvODg1OTEzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJc''@;'; put 'put ''eDljXHg5ZFx4OWVceDlmXHhhMFx1MjAxZFx4YTJceGEzXHhhNFx1MjAxZVx4YTZceGE3XHhkOFx4YTlcdTAxNTZceGFiXHhhY1x4YWRceGFlXHhjNlx4YjBceGIxXHhiMlx4YjNcdTIwMWNceGI1XHhiNlx4YjdceGY4XHhiOVx1MDE1N1x4YmJceGJjXHhiZFx4YmVceGU2XHUwMTA0XHUwMTJl''@;'; put 'put ''XHUwMTAwXHUwMTA2XHhjNFx4YzVcdTAxMThcdTAxMTJcdTAxMGNceGM5XHUwMTc5XHUwMTE2XHUwMTIyXHUwMTM2XHUwMTJhXHUwMTNiXHUwMTYwXHUwMTQzXHUwMTQ1XHhkM1x1MDE0Y1x4ZDVceGQ2XHhkN1x1MDE3Mlx1MDE0MVx1MDE1YVx1MDE2YVx4ZGNcdTAxN2JcdTAxN2RceGRmXHUw''@;'; put 'put ''MTA1XHUwMTJmXHUwMTAxXHUwMTA3XHhlNFx4ZTVcdTAxMTlcdTAxMTNcdTAxMGRceGU5XHUwMTdhXHUwMTE3XHUwMTIzXHUwMTM3XHUwMTJiXHUwMTNjXHUwMTYxXHUwMTQ0XHUwMTQ2XHhmM1x1MDE0ZFx4ZjVceGY2XHhmN1x1MDE3M1x1MDE0Mlx1MDE1Ylx1MDE2Ylx4ZmNcdTAxN2NcdTAx''@;'; put 'put ''N2VcdTIwMTkifSxjcDI4NjAzOiJpc284ODU5MTMiLGlzbzg4NTkxNDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5''@;'; put 'put ''OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTFlMDJcdTFlMDNceGEzXHUwMTBhXHUwMTBiXHUxZTBhXHhhN1x1MWU4MFx4YTlcdTFlODJcdTFlMGJcdTFlZjJceGFkXHhhZVx1MDE3OFx1MWUxZVx1MWUxZlx1MDEyMFx1MDEyMVx1MWU0MFx1MWU0MVx4YjZcdTFlNTZcdTFlODFcdTFl''@;'; put 'put ''NTdcdTFlODNcdTFlNjBcdTFlZjNcdTFlODRcdTFlODVcdTFlNjFceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTc0XHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHUxZTZhXHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHUw''@;'; put 'put ''MTc2XHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxNzVceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZcdTFlNmJceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRcdTAxNzdceGZmIn0sY3AyODYwNDoiaXNvODg1OTE0Iixp''@;'; put 'put ''c284ODU5MTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhh''@;'; put 'put ''MVx4YTJceGEzXHUyMGFjXHhhNVx1MDE2MFx4YTdcdTAxNjFceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x1MDE3ZFx4YjVceGI2XHhiN1x1MDE3ZVx4YjlceGJhXHhiYlx1MDE1Mlx1MDE1M1x1MDE3OFx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2''@;'; put 'put ''XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZc''@;'; put 'put ''eGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0sY3AyODYwNToiaXNvODg1OTE1Iixpc284ODU5MTY6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhi''@;'; put 'put ''XHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTA0XHUwMTA1XHUwMTQxXHUyMGFjXHUyMDFlXHUwMTYwXHhhN1x1MDE2MVx4YTlcdTAyMThceGFiXHUwMTc5XHhhZFx1MDE3YVx1MDE3''@;'; put 'put ''Ylx4YjBceGIxXHUwMTBjXHUwMTQyXHUwMTdkXHUyMDFkXHhiNlx4YjdcdTAxN2VcdTAxMGRcdTAyMTlceGJiXHUwMTUyXHUwMTUzXHUwMTc4XHUwMTdjXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx1MDEwNlx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMTBcdTAx''@;'; put 'put ''NDNceGQyXHhkM1x4ZDRcdTAxNTBceGQ2XHUwMTVhXHUwMTcwXHhkOVx4ZGFceGRiXHhkY1x1MDExOFx1MDIxYVx4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHUwMTA3XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExMVx1MDE0NFx4ZjJceGYzXHhmNFx1MDE1''@;'; put 'put ''MVx4ZjZcdTAxNWJcdTAxNzFceGY5XHhmYVx4ZmJceGZjXHUwMTE5XHUwMjFiXHhmZiJ9LGNwMjg2MDY6Imlzbzg4NTkxNiIsY3A0Mzc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4''@;'; put 'put ''YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhhMlx4YTNceGE1XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUy''@;'; put 'put ''NTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4''@;'; put 'put ''XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVc''@;'; put 'put ''dTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm00Mzc6ImNwNDM3Iixjc2libTQzNzoiY3A0MzciLGNwNzM3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1''@;'; put 'put ''MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MDNi''@;'; put 'put ''NFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjMlx1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1''@;'; put 'put ''MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2''@;'; put 'put ''NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNjOVx1MDNhY1x1MDNhZFx1MDNhZVx1MDNjYVx1MDNhZlx1MDNjY1x1MDNjZFx1MDNjYlx1MDNjZVx1MDM4Nlx1MDM4OFx1MDM4OVx1MDM4YVx1''@;'; put 'put ''MDM4Y1x1MDM4ZVx1MDM4Zlx4YjFcdTIyNjVcdTIyNjRcdTAzYWFcdTAzYWJceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTczNzoiY3A3MzciLGNzaWJtNzM3OiJjcDczNyIsY3A3NzU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwMTA2XHhm''@;'; put 'put ''Y1x4ZTlcdTAxMDFceGU0XHUwMTIzXHhlNVx1MDEwN1x1MDE0Mlx1MDExM1x1MDE1Nlx1MDE1N1x1MDEyYlx1MDE3OVx4YzRceGM1XHhjOVx4ZTZceGM2XHUwMTRkXHhmNlx1MDEyMlx4YTJcdTAxNWFcdTAxNWJceGQ2XHhkY1x4ZjhceGEzXHhkOFx4ZDdceGE0XHUwMTAwXHUwMTJhXHhmM1x1''@;'; put 'put ''MDE3Ylx1MDE3Y1x1MDE3YVx1MjAxZFx4YTZceGE5XHhhZVx4YWNceGJkXHhiY1x1MDE0MVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUwMTA0XHUwMTBjXHUwMTE4XHUwMTE2XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUwMTJlXHUwMTYwXHUyNTEwXHUyNTE0XHUy''@;'; put 'put ''NTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUwMTcyXHUwMTZhXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUwMTdkXHUwMTA1XHUwMTBkXHUwMTE5XHUwMTE3XHUwMTJmXHUwMTYxXHUwMTczXHUwMTZiXHUwMTdlXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0''@;'; put 'put ''XHUyNThjXHUyNTkwXHUyNTgwXHhkM1x4ZGZcdTAxNGNcdTAxNDNceGY1XHhkNVx4YjVcdTAxNDRcdTAxMzZcdTAxMzdcdTAxM2JcdTAxM2NcdTAxNDZcdTAxMTJcdTAxNDVcdTIwMTlceGFkXHhiMVx1MjAxY1x4YmVceGI2XHhhN1x4ZjdcdTIwMWVceGIwXHUyMjE5XHhiN1x4YjlceGIzXHhi''@;'; put 'put ''Mlx1MjVhMFx4YTAifSxpYm03NzU6ImNwNzc1Iixjc2libTc3NToiY3A3NzUiLGNwODUwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZi''@;'; put 'put ''XHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx4ZDdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZceGFlXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2M1x1MjU1MVx1MjU1''@;'; put 'put ''N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHhmMFx4ZDBceGNhXHhjYlx4YzhcdTAxMzFceGNkXHhjZVx4Y2ZcdTI1MThcdTI1MGNcdTI1''@;'; put 'put ''ODhcdTI1ODRceGE2XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVceGZlXHhkZVx4ZGFceGRiXHhkOVx4ZmRceGRkXHhhZlx4YjRceGFkXHhiMVx1MjAxN1x4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTg1MDoi''@;'; put 'put ''Y3A4NTAiLGNzaWJtODUwOiJjcDg1MCIsY3A4NTI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRcdTAxNmZcdTAxMDdceGU3XHUwMTQyXHhlYlx1MDE1MFx1MDE1MVx4ZWVcdTAxNzlceGM0XHUwMTA2XHhjOVx1MDEzOVx1MDEzYVx4ZjRceGY2XHUwMTNkXHUwMTNl''@;'; put 'put ''XHUwMTVhXHUwMTViXHhkNlx4ZGNcdTAxNjRcdTAxNjVcdTAxNDFceGQ3XHUwMTBkXHhlMVx4ZWRceGYzXHhmYVx1MDEwNFx1MDEwNVx1MDE3ZFx1MDE3ZVx1MDExOFx1MDExOVx4YWNcdTAxN2FcdTAxMGNcdTAxNWZceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFc''@;'; put 'put ''eGMyXHUwMTFhXHUwMTVlXHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUwMTdiXHUwMTdjXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUwMTAyXHUwMTAzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx1MDExMVx1MDExMFx1''@;'; put 'put ''MDEwZVx4Y2JcdTAxMGZcdTAxNDdceGNkXHhjZVx1MDExYlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MDE2Mlx1MDE2ZVx1MjU4MFx4ZDNceGRmXHhkNFx1MDE0M1x1MDE0NFx1MDE0OFx1MDE2MFx1MDE2MVx1MDE1NFx4ZGFcdTAxNTVcdTAxNzBceGZkXHhkZFx1MDE2M1x4YjRceGFkXHUw''@;'; put 'put ''MmRkXHUwMmRiXHUwMmM3XHUwMmQ4XHhhN1x4ZjdceGI4XHhiMFx4YThcdTAyZDlcdTAxNzFcdTAxNThcdTAxNTlcdTI1YTBceGEwIn0saWJtODUyOiJjcDg1MiIsY3NpYm04NTI6ImNwODUyIixjcDg1NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0NTJcdTA0MDJcdTA0NTNcdTA0MDNcdTA0''@;'; put 'put ''NTFcdTA0MDFcdTA0NTRcdTA0MDRcdTA0NTVcdTA0MDVcdTA0NTZcdTA0MDZcdTA0NTdcdTA0MDdcdTA0NThcdTA0MDhcdTA0NTlcdTA0MDlcdTA0NWFcdTA0MGFcdTA0NWJcdTA0MGJcdTA0NWNcdTA0MGNcdTA0NWVcdTA0MGVcdTA0NWZcdTA0MGZcdTA0NGVcdTA0MmVcdTA0NGFcdTA0MmFc''@;'; put 'put ''dTA0MzBcdTA0MTBcdTA0MzFcdTA0MTFcdTA0NDZcdTA0MjZcdTA0MzRcdTA0MTRcdTA0MzVcdTA0MTVcdTA0NDRcdTA0MjRcdTA0MzNcdTA0MTNceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MDQ0NVx1MDQyNVx1MDQzOFx1MDQxOFx1MjU2M1x1MjU1MVx1MjU1N1x1''@;'; put 'put ''MjU1ZFx1MDQzOVx1MDQxOVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDQzYVx1MDQxYVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdTA0M2JcdTA0MWJcdTA0M2NcdTA0MWNcdTA0M2RcdTA0MWRcdTA0M2VcdTA0MWVc''@;'; put 'put ''dTA0M2ZcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTA0MWZcdTA0NGZcdTI1ODBcdTA0MmZcdTA0NDBcdTA0MjBcdTA0NDFcdTA0MjFcdTA0NDJcdTA0MjJcdTA0NDNcdTA0MjNcdTA0MzZcdTA0MTZcdTA0MzJcdTA0MTJcdTA0NGNcdTA0MmNcdTIxMTZceGFkXHUwNDRiXHUwNDJiXHUwNDM3''@;'; put 'put ''XHUwNDE3XHUwNDQ4XHUwNDI4XHUwNDRkXHUwNDJkXHUwNDQ5XHUwNDI5XHUwNDQ3XHUwNDI3XHhhN1x1MjVhMFx4YTAifSxpYm04NTU6ImNwODU1Iixjc2libTg1NToiY3A4NTUiLGNwODU2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVk''@;'; put 'put ''NVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx4YTNcdWZmZmRceGQ3XHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhZVx4YWNceGJkXHhiY1x1ZmZmZFx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHVmZmZkXHVmZmZkXHVmZmZkXHhhOVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUy''@;'; put 'put ''NTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHVmZmZkXHVmZmZkXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjUxOFx1MjUwY1x1MjU4OFx1''@;'; put 'put ''MjU4NFx4YTZcdWZmZmRcdTI1ODBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGI1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhZlx4YjRceGFkXHhiMVx1MjAxN1x4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNc''@;'; put 'put ''eGIyXHUyNWEwXHhhMCJ9LGlibTg1NjoiY3A4NTYiLGNzaWJtODU2OiJjcDg1NiIsY3A4NTc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx1MDEzMVx4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYy''@;'; put 'put ''XHhmYlx4ZjlcdTAxMzBceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MDE1ZVx1MDE1Zlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx1MDExZVx1MDExZlx4YmZceGFlXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJceGMwXHhhOVx1MjU2''@;'; put 'put ''M1x1MjU1MVx1MjU1N1x1MjU1ZFx4YTJceGE1XHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHhlM1x4YzNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHhiYVx4YWFceGNhXHhjYlx4YzhcdWZmZmRceGNkXHhjZVx4Y2ZcdTI1''@;'; put 'put ''MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHhjY1x1MjU4MFx4ZDNceGRmXHhkNFx4ZDJceGY1XHhkNVx4YjVcdWZmZmRceGQ3XHhkYVx4ZGJceGQ5XHhlY1x4ZmZceGFmXHhiNFx4YWRceGIxXHVmZmZkXHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBc''@;'; put 'put ''eGEwIn0saWJtODU3OiJjcDg1NyIsY3NpYm04NTc6ImNwODU3IixjcDg1ODp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZm''@;'; put 'put ''XHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRc''@;'; put 'put ''eGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4ZjBceGQwXHhjYVx4Y2JceGM4XHUyMGFjXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0''@;'; put 'put ''XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHhmZVx4ZGVceGRhXHhkYlx4ZDlceGZkXHhkZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTg6ImNwODU4Iixj''@;'; put 'put ''c2libTg1ODoiY3A4NTgiLGNwODYwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGUzXHhlMFx4YzFceGU3XHhlYVx4Y2FceGU4XHhjZFx4ZDRceGVjXHhjM1x4YzJceGM5XHhjMFx4YzhceGY0XHhmNVx4ZjJceGRhXHhmOVx4Y2NceGQ1XHhkY1x4YTJceGEzXHhkOVx1''@;'; put 'put ''MjBhN1x4ZDNceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZceGQyXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUy''@;'; put 'put ''NTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBj''@;'; put 'put ''XHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0''@;'; put 'put ''OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjA6ImNwODYwIixjc2libTg2MDoiY3A4NjAiLGNwODYxOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhkMFx4ZjBceGRlXHhjNFx4''@;'; put 'put ''YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZmVceGZiXHhkZFx4ZmRceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGMxXHhjZFx4ZDNceGRhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUy''@;'; put 'put ''NFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1''@;'; put 'put ''MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUy''@;'; put 'put ''MjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYxOiJjcDg2MSIsY3NpYm04NjE6ImNwODYxIixjcDg2Mjp7dHlwZToiX3NiY3MiLGNoYXJz''@;'; put 'put ''OiJcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFc''@;'; put 'put ''eGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1''@;'; put 'put ''NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJc''@;'; put 'put ''dTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIz''@;'; put 'put ''MjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MjoiY3A4NjIiLGNzaWJtODYyOiJjcDg2MiIsY3A4NjM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4YzJceGUwXHhiNlx4ZTdceGVhXHhlYlx4ZThc''@;'; put 'put ''eGVmXHhlZVx1MjAxN1x4YzBceGE3XHhjOVx4YzhceGNhXHhmNFx4Y2JceGNmXHhmYlx4ZjlceGE0XHhkNFx4ZGNceGEyXHhhM1x4ZDlceGRiXHUwMTkyXHhhNlx4YjRceGYzXHhmYVx4YThceGI4XHhiM1x4YWZceGNlXHUyMzEwXHhhY1x4YmRceGJjXHhiZVx4YWJceGJiXHUyNTkxXHUyNTky''@;'; put 'put ''XHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUy''@;'; put 'put ''NTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAz''@;'; put 'put ''OThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjM6ImNwODYzIixjc2libTg2MzoiY3A4NjMiLGNwODY0Ont0''@;'; put 'put ''eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJFx1MDY2YSYnKCkqKywtLi8wMTIzNDU2Nzg5''@;'; put 'put ''Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGIwXHhiN1x1MjIxOVx1MjIxYVx1MjU5Mlx1MjUwMFx1MjUwMlx1MjUzY1x1MjUyNFx1MjUyY1x1MjUxY1x1MjUzNFx1MjUxMFx1MjUwY1x1MjUxNFx1MjUx''@;'; put 'put ''OFx1MDNiMlx1MjIxZVx1MDNjNlx4YjFceGJkXHhiY1x1MjI0OFx4YWJceGJiXHVmZWY3XHVmZWY4XHVmZmZkXHVmZmZkXHVmZWZiXHVmZWZjXHVmZmZkXHhhMFx4YWRcdWZlODJceGEzXHhhNFx1ZmU4NFx1ZmZmZFx1ZmZmZFx1ZmU4ZVx1ZmU4Zlx1ZmU5NVx1ZmU5OVx1MDYwY1x1ZmU5ZFx1''@;'; put 'put ''ZmVhMVx1ZmVhNVx1MDY2MFx1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1ZmVkMVx1MDYxYlx1ZmViMVx1ZmViNVx1ZmViOVx1MDYxZlx4YTJcdWZlODBcdWZlODFcdWZlODNcdWZlODVcdWZlY2FcdWZlOGJcdWZlOGRcdWZlOTFcdWZlOTNc''@;'; put 'put ''dWZlOTdcdWZlOWJcdWZlOWZcdWZlYTNcdWZlYTdcdWZlYTlcdWZlYWJcdWZlYWRcdWZlYWZcdWZlYjNcdWZlYjdcdWZlYmJcdWZlYmZcdWZlYzFcdWZlYzVcdWZlY2JcdWZlY2ZceGE2XHhhY1x4ZjdceGQ3XHVmZWM5XHUwNjQwXHVmZWQzXHVmZWQ3XHVmZWRiXHVmZWRmXHVmZWUzXHVmZWU3''@;'; put 'put ''XHVmZWViXHVmZWVkXHVmZWVmXHVmZWYzXHVmZWJkXHVmZWNjXHVmZWNlXHVmZWNkXHVmZWUxXHVmZTdkXHUwNjUxXHVmZWU1XHVmZWU5XHVmZWVjXHVmZWYwXHVmZWYyXHVmZWQwXHVmZWQ1XHVmZWY1XHVmZWY2XHVmZWRkXHVmZWQ5XHVmZWYxXHUyNWEwXHVmZmZkIn0saWJtODY0OiJjcDg2''@;'; put 'put ''NCIsY3NpYm04NjQ6ImNwODY0IixjcDg2NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGY4XHhhM1x4''@;'; put 'put ''ZDhcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YTRcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNc''@;'; put 'put ''dTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1''@;'; put 'put ''MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFc''@;'; put 'put ''eGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2NToiY3A4NjUiLGNzaWJtODY1OiJjcDg2NSIsY3A4NjY6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4''@;'; put 'put ''XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUw''@;'; put 'put ''NDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEw''@;'; put 'put ''XHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUy''@;'; put 'put ''NTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDBl''@;'; put 'put ''XHUwNDVlXHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIxMTZceGE0XHUyNWEwXHhhMCJ9LGlibTg2NjoiY3A4NjYiLGNzaWJtODY2OiJjcDg2NiIsY3A4Njk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzg2XHVmZmZkXHhiN1x4YWNc''@;'; put 'put ''eGE2XHUyMDE4XHUyMDE5XHUwMzg4XHUyMDE1XHUwMzg5XHUwMzhhXHUwM2FhXHUwMzhjXHVmZmZkXHVmZmZkXHUwMzhlXHUwM2FiXHhhOVx1MDM4Zlx4YjJceGIzXHUwM2FjXHhhM1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNjYVx1MDM5MFx1MDNjY1x1MDNjZFx1MDM5MVx1MDM5Mlx1MDM5M1x1''@;'; put 'put ''MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x4YmRcdTAzOThcdTAzOTlceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MDM5ZVx1MDM5Zlx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUx''@;'; put 'put ''Y1x1MjUwMFx1MjUzY1x1MDNhMFx1MDNhMVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MDNiNFx1MDNiNVx1''@;'; put 'put ''MjU4MFx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjMlx1MDNjNFx1MDM4NFx4YWRceGIxXHUwM2M1XHUwM2M2XHUwM2M3XHhhN1x1MDNjOFx1MDM4NVx4YjBceGE4XHUwM2M5XHUwM2NiXHUw''@;'; put 'put ''M2IwXHUwM2NlXHUyNWEwXHhhMCJ9LGlibTg2OToiY3A4NjkiLGNzaWJtODY5OiJjcDg2OSIsY3A5MjI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0''@;'; put 'put ''XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVcdTIwM2VceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhi''@;'; put 'put ''ZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDE2MFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRcdTAxN2RceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1''@;'; put 'put ''XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDE2MVx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRcdTAxN2VceGZmIn0saWJtOTIyOiJjcDkyMiIsY3NpYm05MjI6ImNwOTIyIixjcDEwNDY6e3R5cGU6Il9zYmNzIixj''@;'; put 'put ''aGFyczoiXHVmZTg4XHhkN1x4ZjdcdWY4ZjZcdWY4ZjVcdWY4ZjRcdWY4ZjdcdWZlNzFceDg4XHUyNWEwXHUyNTAyXHUyNTAwXHUyNTEwXHUyNTBjXHUyNTE0XHUyNTE4XHVmZTc5XHVmZTdiXHVmZTdkXHVmZTdmXHVmZTc3XHVmZThhXHVmZWYwXHVmZWYzXHVmZWYyXHVmZWNlXHVmZWNmXHVm''@;'; put 'put ''ZWQwXHVmZWY2XHVmZWY4XHVmZWZhXHVmZWZjXHhhMFx1ZjhmYVx1ZjhmOVx1ZjhmOFx4YTRcdWY4ZmJcdWZlOGJcdWZlOTFcdWZlOTdcdWZlOWJcdWZlOWZcdWZlYTNcdTA2MGNceGFkXHVmZWE3XHVmZWIzXHUwNjYwXHUwNjYxXHUwNjYyXHUwNjYzXHUwNjY0XHUwNjY1XHUwNjY2XHUwNjY3''@;'; put 'put ''XHUwNjY4XHUwNjY5XHVmZWI3XHUwNjFiXHVmZWJiXHVmZWJmXHVmZWNhXHUwNjFmXHVmZWNiXHUwNjIxXHUwNjIyXHUwNjIzXHUwNjI0XHUwNjI1XHUwNjI2XHUwNjI3XHUwNjI4XHUwNjI5XHUwNjJhXHUwNjJiXHUwNjJjXHUwNjJkXHUwNjJlXHUwNjJmXHUwNjMwXHUwNjMxXHUwNjMyXHUw''@;'; put 'put ''NjMzXHUwNjM0XHUwNjM1XHUwNjM2XHUwNjM3XHVmZWM3XHUwNjM5XHUwNjNhXHVmZWNjXHVmZTgyXHVmZTg0XHVmZThlXHVmZWQzXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHUwNjQ0XHUwNjQ1XHUwNjQ2XHUwNjQ3XHUwNjQ4XHUwNjQ5XHUwNjRhXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRl''@;'; put 'put ''XHUwNjRmXHUwNjUwXHUwNjUxXHUwNjUyXHVmZWQ3XHVmZWRiXHVmZWRmXHVmOGZjXHVmZWY1XHVmZWY3XHVmZWY5XHVmZWZiXHVmZWUzXHVmZWU3XHVmZWVjXHVmZWU5XHVmZmZkIn0saWJtMTA0NjoiY3AxMDQ2Iixjc2libTEwNDY6ImNwMTA0NiIsY3AxMTI0Ont0eXBlOiJfc2JjcyIsY2hh''@;'; put 'put ''cnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDQwMVx1MDQwMlx1MDQ5MFx1MDQwNFx1MDQw''@;'; put 'put ''NVx1MDQwNlx1MDQwN1x1MDQwOFx1MDQwOVx1MDQwYVx1MDQwYlx1MDQwY1x4YWRcdTA0MGVcdTA0MGZcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0''@;'; put 'put ''MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2Nc''@;'; put 'put ''dTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTIxMTZcdTA0NTFcdTA0NTJcdTA0OTFcdTA0NTRcdTA0NTVcdTA0NTZcdTA0NTdcdTA0''@;'; put 'put ''NThcdTA0NTlcdTA0NWFcdTA0NWJcdTA0NWNceGE3XHUwNDVlXHUwNDVmIn0saWJtMTEyNDoiY3AxMTI0Iixjc2libTExMjQ6ImNwMTEyNCIsY3AxMTI1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1''@;'; put 'put ''MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQz''@;'; put 'put ''NFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1''@;'; put 'put ''MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4''@;'; put 'put ''OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MDQwMVx1MDQ1MVx1MDQ5MFx1MDQ5MVx1MDQwNFx1MDQ1NFx1MDQwNlx1''@;'; put 'put ''MDQ1Nlx1MDQwN1x1MDQ1N1x4YjdcdTIyMWFcdTIxMTZceGE0XHUyNWEwXHhhMCJ9LGlibTExMjU6ImNwMTEyNSIsY3NpYm0xMTI1OiJjcDExMjUiLGNwMTEyOTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhj''@;'; put 'put ''XHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHUwMTUzXHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNcdTAxNzhc''@;'; put 'put ''eGI1XHhiNlx4YjdcdTAxNTJceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JcdTAzMDBceGNkXHhjZVx4Y2ZcdTAxMTBceGQxXHUwMzA5XHhkM1x4ZDRcdTAxYTBceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4''@;'; put 'put ''ZGJceGRjXHUwMWFmXHUwMzAzXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHUwMzAxXHhlZFx4ZWVceGVmXHUwMTExXHhmMVx1MDMyM1x4ZjNceGY0XHUwMWExXHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDFiMFx1MjBhYlx4ZmYi''@;'; put 'put ''fSxpYm0xMTI5OiJjcDExMjkiLGNzaWJtMTEyOToiY3AxMTI5IixjcDExMzM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5''@;'; put 'put ''OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwZTgxXHUwZTgyXHUwZTg0XHUwZTg3XHUwZTg4XHUwZWFhXHUwZThhXHUwZThkXHUwZTk0XHUwZTk1XHUwZTk2XHUwZTk3XHUwZTk5XHUwZTlhXHUwZTliXHUwZTljXHUwZTlkXHUwZTllXHUwZTlmXHUwZWExXHUwZWEyXHUwZWEz''@;'; put 'put ''XHUwZWE1XHUwZWE3XHUwZWFiXHUwZWFkXHUwZWFlXHVmZmZkXHVmZmZkXHVmZmZkXHUwZWFmXHUwZWIwXHUwZWIyXHUwZWIzXHUwZWI0XHUwZWI1XHUwZWI2XHUwZWI3XHUwZWI4XHUwZWI5XHUwZWJjXHUwZWIxXHUwZWJiXHUwZWJkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZWMwXHUwZWMxXHUw''@;'; put 'put ''ZWMyXHUwZWMzXHUwZWM0XHUwZWM4XHUwZWM5XHUwZWNhXHUwZWNiXHUwZWNjXHUwZWNkXHUwZWM2XHVmZmZkXHUwZWRjXHUwZWRkXHUyMGFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHUwZWQwXHUwZWQxXHUwZWQyXHUwZWQzXHUwZWQ0XHUwZWQ1XHUwZWQ2XHUwZWQ3XHUwZWQ4XHUwZWQ5XHVmZmZkXHVmZmZkXHhhMlx4YWNceGE2XHVmZmZkIn0saWJtMTEzMzoiY3AxMTMzIixjc2libTExMzM6ImNwMTEzMyIsY3AxMTYxOnt0eXBlOiJfc2JjcyIsY2hh''@;'; put 'put ''cnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGU0OFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1''@;'; put 'put ''MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUz''@;'; put 'put ''MVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1MGU0OVx1MGU0YVx1MGU0Ylx1MjBhY1x1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1''@;'; put 'put ''MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx4YTJceGFjXHhhNlx4YTAifSxpYm0xMTYxOiJjcDExNjEiLGNzaWJtMTE2MToiY3AxMTYxIixjcDExNjI6e3R5cGU6Il9zYmNzIixj''@;'; put 'put ''aGFyczoiXHUyMGFjXHg4MVx4ODJceDgzXHg4NFx1MjAyNlx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwZTAxXHUw''@;'; put 'put ''ZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFk''@;'; put 'put ''XHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUw''@;'; put 'put ''ZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0''@;'; put 'put ''XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0saWJtMTE2MjoiY3AxMTYyIixjc2libTExNjI6ImNwMTE2MiIsY3AxMTYzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3''@;'; put 'put ''XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x1MjBhY1x4YTVceGE2XHhhN1x1MDE1M1x4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZc''@;'; put 'put ''eGIwXHhiMVx4YjJceGIzXHUwMTc4XHhiNVx4YjZceGI3XHUwMTUyXHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEw''@;'; put 'put ''XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhm''@;'; put 'put ''Ylx4ZmNcdTAxYjBcdTIwYWJceGZmIn0saWJtMTE2MzoiY3AxMTYzIixjc2libTExNjM6ImNwMTE2MyIsbWFjY3JvYXRpYW46e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGVi''@;'; put 'put ''XHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHUwMTYwXHUyMTIyXHhiNFx4YThcdTIyNjBcdTAxN2RceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx1MjIwNlx4YjVc''@;'; put 'put ''dTIyMDJcdTIyMTFcdTIyMGZcdTAxNjFcdTIyMmJceGFhXHhiYVx1MjEyNlx1MDE3ZVx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTAxMDZceGFiXHUwMTBjXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MDExMFx1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1''@;'; put 'put ''MjAxOVx4ZjdcdTI1Y2FcdWZmZmRceGE5XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx4YzZceGJiXHUyMDEzXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJcdTAxMDdceGMxXHUwMTBkXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1MDExMVx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZc''@;'; put 'put ''dTAyZGNceGFmXHUwM2MwXHhjYlx1MDJkYVx4YjhceGNhXHhlNlx1MDJjNyJ9LG1hY2N5cmlsbGljOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1''@;'; put 'put ''MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhhZVx4YTlcdTIxMjJcdTA0MDJc''@;'; put 'put ''dTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUwNDU2XHhiNVx1MjIwMlx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1OVx1MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1''@;'; put 'put ''MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNcdTA0NWNcdTA0NTVcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBmXHUwNDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUw''@;'; put 'put ''NDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHhhNCJ9LG1hY2dy''@;'; put 'put ''ZWVrOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGI5XHhiMlx4YzlceGIzXHhkNlx4ZGNcdTAzODVceGUwXHhlMlx4ZTRcdTAzODRceGE4XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGEzXHUyMTIyXHhlZVx4ZWZcdTIwMjJceGJkXHUyMDMwXHhmNFx4ZjZceGE2XHhhZFx4ZjlceGZiXHhmY1x1''@;'; put 'put ''MjAyMFx1MDM5M1x1MDM5NFx1MDM5OFx1MDM5Ylx1MDM5ZVx1MDNhMFx4ZGZceGFlXHhhOVx1MDNhM1x1MDNhYVx4YTdcdTIyNjBceGIwXHUwMzg3XHUwMzkxXHhiMVx1MjI2NFx1MjI2NVx4YTVcdTAzOTJcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOTlcdTAzOWFcdTAzOWNcdTAzYTZcdTAzYWJc''@;'; put 'put ''dTAzYThcdTAzYTlcdTAzYWNcdTAzOWRceGFjXHUwMzlmXHUwM2ExXHUyMjQ4XHUwM2E0XHhhYlx4YmJcdTIwMjZceGEwXHUwM2E1XHUwM2E3XHUwMzg2XHUwMzg4XHUwMTUzXHUyMDEzXHUyMDE1XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MDM4OVx1MDM4YVx1MDM4Y1x1MDM4ZVx1''@;'; put 'put ''MDNhZFx1MDNhZVx1MDNhZlx1MDNjY1x1MDM4Zlx1MDNjZFx1MDNiMVx1MDNiMlx1MDNjOFx1MDNiNFx1MDNiNVx1MDNjNlx1MDNiM1x1MDNiN1x1MDNiOVx1MDNiZVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZlx1MDNjMFx1MDNjZVx1MDNjMVx1MDNjM1x1MDNjNFx1MDNiOFx1MDNj''@;'; put 'put ''OVx1MDNjMlx1MDNjN1x1MDNjNVx1MDNiNlx1MDNjYVx1MDNjYlx1MDM5MFx1MDNiMFx1ZmZmZCJ9LG1hY2ljZWxhbmQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhl''@;'; put 'put ''ZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNceGRkXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjEx''@;'; put 'put ''XHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2Fc''@;'; put 'put ''eGZmXHUwMTc4XHUyMDQ0XHhhNFx4ZDBceGYwXHhkZVx4ZmVceGZkXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAy''@;'; put 'put ''ZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sbWFjcm9tYW46e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2''@;'; put 'put ''XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEy''@;'; put 'put ''Nlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHUyMDM5XHUyMDNh''@;'; put 'put ''XHVmYjAxXHVmYjAyXHUyMDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUw''@;'; put 'put ''MmM3In0sbWFjcm9tYW5pYTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhm''@;'; put 'put ''Y1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBcdTAxMDJcdTAxNWVcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx1MDEwM1x1MDE1Zlx4''@;'; put 'put ''YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1MDE2Mlx1MDE2''@;'; put 'put ''M1x1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3Ro''@;'; put 'put ''YWk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhhYlx4YmJcdTIwMjZcdWY4OGNcdWY4OGZcdWY4OTJcdWY4OTVcdWY4OThcdWY4OGJcdWY4OGVcdWY4OTFcdWY4OTRcdWY4OTdcdTIwMWNcdTIwMWRcdWY4OTlcdWZmZmRcdTIwMjJcdWY4ODRcdWY4ODlcdWY4ODVcdWY4ODZcdWY4ODdcdWY4ODhc''@;'; put 'put ''dWY4OGFcdWY4OGRcdWY4OTBcdWY4OTNcdWY4OTZcdTIwMThcdTIwMTlcdWZmZmRceGEwXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEz''@;'; put 'put ''XHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUw''@;'; put 'put ''ZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZWZmXHUyMDBiXHUyMDEzXHUyMDE0XHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRh''@;'; put 'put ''XHUwZTRiXHUwZTRjXHUwZTRkXHUyMTIyXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHhhZVx4YTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxtYWN0dXJraXNoOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1''@;'; put 'put ''XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlc''@;'; put 'put ''dTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4''@;'; put 'put ''YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUwMTFlXHUwMTFmXHUwMTMwXHUwMTMxXHUwMTVlXHUwMTVmXHUyMDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhj''@;'; put 'put ''ZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1ZmZmZFx1MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sbWFjdWtyYWluZTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNc''@;'; put 'put ''dTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0''@;'; put 'put ''MmZcdTIwMjBceGIwXHUwNDkwXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhhZVx4YTlcdTIxMjJcdTA0MDJcdTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHUwNDU2XHhiNVx1MDQ5MVx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1''@;'; put 'put ''OVx1MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNcdTA0NWNcdTA0NTVcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBm''@;'; put 'put ''XHUwNDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUw''@;'; put 'put ''NDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHhhNCJ9LGtvaThyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjUxY1x1MjUyNFx1MjUyY1x1MjUzNFx1MjUzY1x1MjU4MFx1MjU4NFx1''@;'; put 'put ''MjU4OFx1MjU4Y1x1MjU5MFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjMyMFx1MjVhMFx1MjIxOVx1MjIxYVx1MjI0OFx1MjI2NFx1MjI2NVx4YTBcdTIzMjFceGIwXHhiMlx4YjdceGY3XHUyNTUwXHUyNTUxXHUyNTUyXHUwNDUxXHUyNTUzXHUyNTU0XHUyNTU1XHUyNTU2XHUyNTU3XHUyNTU4XHUy''@;'; put 'put ''NTU5XHUyNTVhXHUyNTViXHUyNTVjXHUyNTVkXHUyNTVlXHUyNTVmXHUyNTYwXHUyNTYxXHUwNDAxXHUyNTYyXHUyNTYzXHUyNTY0XHUyNTY1XHUyNTY2XHUyNTY3XHUyNTY4XHUyNTY5XHUyNTZhXHUyNTZiXHUyNTZjXHhhOVx1MDQ0ZVx1MDQzMFx1MDQzMVx1MDQ0Nlx1MDQzNFx1MDQzNVx1''@;'; put 'put ''MDQ0NFx1MDQzM1x1MDQ0NVx1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0Zlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNlx1MDQzMlx1MDQ0Y1x1MDQ0Ylx1MDQzN1x1MDQ0OFx1MDQ0ZFx1MDQ0OVx1MDQ0N1x1MDQ0YVx1MDQyZVx1MDQx''@;'; put 'put ''MFx1MDQxMVx1MDQyNlx1MDQxNFx1MDQxNVx1MDQyNFx1MDQxM1x1MDQyNVx1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQxNlx1MDQxMlx1MDQyY1x1MDQyYlx1MDQxN1x1MDQyOFx1MDQyZFx1''@;'; put 'put ''MDQyOVx1MDQyN1x1MDQyYSJ9LGtvaTh1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjUxY1x1MjUyNFx1MjUyY1x1MjUzNFx1MjUzY1x1MjU4MFx1MjU4NFx1MjU4OFx1MjU4Y1x1MjU5MFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjMy''@;'; put 'put ''MFx1MjVhMFx1MjIxOVx1MjIxYVx1MjI0OFx1MjI2NFx1MjI2NVx4YTBcdTIzMjFceGIwXHhiMlx4YjdceGY3XHUyNTUwXHUyNTUxXHUyNTUyXHUwNDUxXHUwNDU0XHUyNTU0XHUwNDU2XHUwNDU3XHUyNTU3XHUyNTU4XHUyNTU5XHUyNTVhXHUyNTViXHUwNDkxXHUyNTVkXHUyNTVlXHUyNTVm''@;'; put 'put ''XHUyNTYwXHUyNTYxXHUwNDAxXHUwNDA0XHUyNTYzXHUwNDA2XHUwNDA3XHUyNTY2XHUyNTY3XHUyNTY4XHUyNTY5XHUyNTZhXHUwNDkwXHUyNTZjXHhhOVx1MDQ0ZVx1MDQzMFx1MDQzMVx1MDQ0Nlx1MDQzNFx1MDQzNVx1MDQ0NFx1MDQzM1x1MDQ0NVx1MDQzOFx1MDQzOVx1MDQzYVx1MDQz''@;'; put 'put ''Ylx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0Zlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNlx1MDQzMlx1MDQ0Y1x1MDQ0Ylx1MDQzN1x1MDQ0OFx1MDQ0ZFx1MDQ0OVx1MDQ0N1x1MDQ0YVx1MDQyZVx1MDQxMFx1MDQxMVx1MDQyNlx1MDQxNFx1MDQxNVx1MDQyNFx1MDQxM1x1''@;'; put 'put ''MDQyNVx1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQxNlx1MDQxMlx1MDQyY1x1MDQyYlx1MDQxN1x1MDQyOFx1MDQyZFx1MDQyOVx1MDQyN1x1MDQyYSJ9LGtvaThydTp7dHlwZToiX3NiY3Mi''@;'; put 'put ''LGNoYXJzOiJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1MWNcdTI1MjRcdTI1MmNcdTI1MzRcdTI1M2NcdTI1ODBcdTI1ODRcdTI1ODhcdTI1OGNcdTI1OTBcdTI1OTFcdTI1OTJcdTI1OTNcdTIzMjBcdTI1YTBcdTIyMTlcdTIyMWFcdTIyNDhcdTIyNjRcdTIyNjVc''@;'; put 'put ''eGEwXHUyMzIxXHhiMFx4YjJceGI3XHhmN1x1MjU1MFx1MjU1MVx1MjU1Mlx1MDQ1MVx1MDQ1NFx1MjU1NFx1MDQ1Nlx1MDQ1N1x1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MDQ5MVx1MDQ1ZVx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MDQwMVx1MDQwNFx1MjU2M1x1MDQwNlx1''@;'; put 'put ''MDQwN1x1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MDQ5MFx1MDQwZVx4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBc''@;'; put 'put ''dTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0''@;'; put 'put ''MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxrb2k4dDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0OWJcdTA0OTNcdTIwMWFcdTA0OTJcdTIwMWVc''@;'; put 'put ''dTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTA0YjNcdTIwMzlcdTA0YjJcdTA0YjdcdTA0YjZcdWZmZmRcdTA0OWFcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTA0ZWZcdTA0ZWVcdTA0NTFceGE0XHUwNGUzXHhhNlx4YTdcdWZmZmRcdWZmZmRcdWZmZmRceGFiXHhhY1x4YWRceGFlXHVmZmZkXHhiMFx4YjFceGIyXHUwNDAxXHVmZmZkXHUwNGUyXHhiNlx4YjdcdWZmZmRcdTIxMTZcdWZmZmRceGJiXHVmZmZkXHVmZmZkXHVmZmZkXHhhOVx1MDQ0''@;'; put 'put ''ZVx1MDQzMFx1MDQzMVx1MDQ0Nlx1MDQzNFx1MDQzNVx1MDQ0NFx1MDQzM1x1MDQ0NVx1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0Zlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzNlx1MDQzMlx1MDQ0Y1x1MDQ0Ylx1MDQzN1x1MDQ0OFx1''@;'; put 'put ''MDQ0ZFx1MDQ0OVx1MDQ0N1x1MDQ0YVx1MDQyZVx1MDQxMFx1MDQxMVx1MDQyNlx1MDQxNFx1MDQxNVx1MDQyNFx1MDQxM1x1MDQyNVx1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQxNlx1MDQx''@;'; put 'put ''Mlx1MDQyY1x1MDQyYlx1MDQxN1x1MDQyOFx1MDQyZFx1MDQyOVx1MDQyN1x1MDQyYSJ9LGFybXNjaWk4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5''@;'; put 'put ''NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1ZmZmZFx1MDU4N1x1MDU4OSkoXHhiYlx4YWJcdTIwMTQuXHUwNTVkLC1cdTA1OGFcdTIwMjZcdTA1NWNcdTA1NWJcdTA1NWVcdTA1MzFcdTA1NjFcdTA1MzJcdTA1NjJcdTA1MzNcdTA1NjNcdTA1MzRc''@;'; put 'put ''dTA1NjRcdTA1MzVcdTA1NjVcdTA1MzZcdTA1NjZcdTA1MzdcdTA1NjdcdTA1MzhcdTA1NjhcdTA1MzlcdTA1NjlcdTA1M2FcdTA1NmFcdTA1M2JcdTA1NmJcdTA1M2NcdTA1NmNcdTA1M2RcdTA1NmRcdTA1M2VcdTA1NmVcdTA1M2ZcdTA1NmZcdTA1NDBcdTA1NzBcdTA1NDFcdTA1NzFcdTA1''@;'; put 'put ''NDJcdTA1NzJcdTA1NDNcdTA1NzNcdTA1NDRcdTA1NzRcdTA1NDVcdTA1NzVcdTA1NDZcdTA1NzZcdTA1NDdcdTA1NzdcdTA1NDhcdTA1NzhcdTA1NDlcdTA1NzlcdTA1NGFcdTA1N2FcdTA1NGJcdTA1N2JcdTA1NGNcdTA1N2NcdTA1NGRcdTA1N2RcdTA1NGVcdTA1N2VcdTA1NGZcdTA1N2Zc''@;'; put 'put ''dTA1NTBcdTA1ODBcdTA1NTFcdTA1ODFcdTA1NTJcdTA1ODJcdTA1NTNcdTA1ODNcdTA1NTRcdTA1ODRcdTA1NTVcdTA1ODVcdTA1NTZcdTA1ODZcdTA1NWFcdWZmZmQifSxyazEwNDg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDAyXHUwNDAzXHUyMDFhXHUwNDUzXHUyMDFlXHUyMDI2XHUy''@;'; put 'put ''MDIwXHUyMDIxXHUyMGFjXHUyMDMwXHUwNDA5XHUyMDM5XHUwNDBhXHUwNDlhXHUwNGJhXHUwNDBmXHUwNDUyXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHUwNDU5XHUyMDNhXHUwNDVhXHUwNDliXHUwNGJiXHUwNDVmXHhhMFx1MDRiMFx1''@;'; put 'put ''MDRiMVx1MDRkOFx4YTRcdTA0ZThceGE2XHhhN1x1MDQwMVx4YTlcdTA0OTJceGFiXHhhY1x4YWRceGFlXHUwNGFlXHhiMFx4YjFcdTA0MDZcdTA0NTZcdTA0ZTlceGI1XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0OTNceGJiXHUwNGQ5XHUwNGEyXHUwNGEzXHUwNGFmXHUwNDEwXHUwNDExXHUw''@;'; put 'put ''NDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJk''@;'; put 'put ''XHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUw''@;'; put 'put ''NDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmIn0sdGN2bjp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4ZGFcdTFlZTRceDAzXHUxZWVhXHUxZWVjXHUxZWVlXHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx1MWVlOFx1MWVmMFx1MWVmMlx1MWVmNlx1MWVmOFx4ZGRc''@;'; put 'put ''dTFlZjRceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjMFx1MWVhMlx4YzNceGMxXHUxZWEwXHUx''@;'; put 'put ''ZWI2XHUxZWFjXHhjOFx1MWViYVx1MWViY1x4YzlcdTFlYjhcdTFlYzZceGNjXHUxZWM4XHUwMTI4XHhjZFx1MWVjYVx4ZDJcdTFlY2VceGQ1XHhkM1x1MWVjY1x1MWVkOFx1MWVkY1x1MWVkZVx1MWVlMFx1MWVkYVx1MWVlMlx4ZDlcdTFlZTZcdTAxNjhceGEwXHUwMTAyXHhjMlx4Y2FceGQ0''@;'; put 'put ''XHUwMWEwXHUwMWFmXHUwMTEwXHUwMTAzXHhlMlx4ZWFceGY0XHUwMWExXHUwMWIwXHUwMTExXHUxZWIwXHUwMzAwXHUwMzA5XHUwMzAzXHUwMzAxXHUwMzIzXHhlMFx1MWVhM1x4ZTNceGUxXHUxZWExXHUxZWIyXHUxZWIxXHUxZWIzXHUxZWI1XHUxZWFmXHUxZWI0XHUxZWFlXHUxZWE2XHUx''@;'; put 'put ''ZWE4XHUxZWFhXHUxZWE0XHUxZWMwXHUxZWI3XHUxZWE3XHUxZWE5XHUxZWFiXHUxZWE1XHUxZWFkXHhlOFx1MWVjMlx1MWViYlx1MWViZFx4ZTlcdTFlYjlcdTFlYzFcdTFlYzNcdTFlYzVcdTFlYmZcdTFlYzdceGVjXHUxZWM5XHUxZWM0XHUxZWJlXHUxZWQyXHUwMTI5XHhlZFx1MWVjYlx4''@;'; put 'put ''ZjJcdTFlZDRcdTFlY2ZceGY1XHhmM1x1MWVjZFx1MWVkM1x1MWVkNVx1MWVkN1x1MWVkMVx1MWVkOVx1MWVkZFx1MWVkZlx1MWVlMVx1MWVkYlx1MWVlM1x4ZjlcdTFlZDZcdTFlZTdcdTAxNjlceGZhXHUxZWU1XHUxZWViXHUxZWVkXHUxZWVmXHUxZWU5XHUxZWYxXHUxZWYzXHUxZWY3XHUx''@;'; put 'put ''ZWY5XHhmZFx1MWVmNVx1MWVkMCJ9LGdlb3JnaWFuYWNhZGVteTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx4OGRceDhlXHg4Zlx4OTBcdTIwMThcdTIwMTlcdTIw''@;'; put 'put ''MWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNTNceDlkXHg5ZVx1MDE3OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhi''@;'; put 'put ''N1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHUxMGQwXHUxMGQxXHUxMGQyXHUxMGQzXHUxMGQ0XHUxMGQ1XHUxMGQ2XHUxMGQ3XHUxMGQ4XHUxMGQ5XHUxMGRhXHUxMGRiXHUxMGRjXHUxMGRkXHUxMGRlXHUxMGRmXHUxMGUwXHUxMGUxXHUxMGUyXHUxMGUzXHUxMGU0XHUxMGU1''@;'; put 'put ''XHUxMGU2XHUxMGU3XHUxMGU4XHUxMGU5XHUxMGVhXHUxMGViXHUxMGVjXHUxMGVkXHUxMGVlXHUxMGVmXHUxMGYwXHUxMGYxXHUxMGYyXHUxMGYzXHUxMGY0XHUxMGY1XHUxMGY2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhm''@;'; put 'put ''Nlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LGdlb3JnaWFucHM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJceDhkXHg4ZVx4OGZceDkwXHUy''@;'; put 'put ''MDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHg5ZFx4OWVcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4''@;'; put 'put ''YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx1MTBkMFx1MTBkMVx1MTBkMlx1MTBkM1x1MTBkNFx1MTBkNVx1MTBkNlx1MTBmMVx1MTBkN1x1MTBkOFx1MTBkOVx1MTBkYVx1MTBkYlx1MTBkY1x1MTBmMlx1MTBkZFx1MTBkZVx1MTBkZlx1MTBlMFx1MTBl''@;'; put 'put ''MVx1MTBlMlx1MTBmM1x1MTBlM1x1MTBlNFx1MTBlNVx1MTBlNlx1MTBlN1x1MTBlOFx1MTBlOVx1MTBlYVx1MTBlYlx1MTBlY1x1MTBlZFx1MTBlZVx1MTBmNFx1MTBlZlx1MTBmMFx1MTBmNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYz''@;'; put 'put ''XHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIn0scHQxNTQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDk2XHUwNDkyXHUwNGVlXHUwNDkzXHUyMDFlXHUyMDI2XHUwNGI2XHUwNGFlXHUwNGIyXHUwNGFmXHUwNGEwXHUwNGUyXHUwNGEyXHUwNDlhXHUw''@;'; put 'put ''NGJhXHUwNGI4XHUwNDk3XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwNGIzXHUwNGI3XHUwNGExXHUwNGUzXHUwNGEzXHUwNDliXHUwNGJiXHUwNGI5XHhhMFx1MDQwZVx1MDQ1ZVx1MDQwOFx1MDRlOFx1MDQ5OFx1MDRiMFx4YTdcdTA0MDFceGE5XHUwNGQ4''@;'; put 'put ''XHhhYlx4YWNcdTA0ZWZceGFlXHUwNDljXHhiMFx1MDRiMVx1MDQwNlx1MDQ1Nlx1MDQ5OVx1MDRlOVx4YjZceGI3XHUwNDUxXHUyMTE2XHUwNGQ5XHhiYlx1MDQ1OFx1MDRhYVx1MDRhYlx1MDQ5ZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQx''@;'; put 'put ''OFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1''@;'; put 'put ''MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0''@;'; put 'put ''ZiJ9LHZpc2NpaTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4MDFcdTFlYjJceDAzXHgwNFx1MWViNFx1MWVhYVx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNcdTFlZjZceDE1XHgxNlx4MTdceDE4XHUxZWY4XHgxYVx4MWJceDFjXHgxZFx1MWVmNFx4MWYgIVwiIyQl''@;'; put 'put ''JicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MWVhMFx1MWVhZVx1MWViMFx1MWViNlx1MWVhNFx1MWVhNlx1MWVhOFx1MWVhY1x1MWViY1x1MWViOFx1MWViZVx1MWVj''@;'; put 'put ''MFx1MWVjMlx1MWVjNFx1MWVjNlx1MWVkMFx1MWVkMlx1MWVkNFx1MWVkNlx1MWVkOFx1MWVlMlx1MWVkYVx1MWVkY1x1MWVkZVx1MWVjYVx1MWVjZVx1MWVjY1x1MWVjOFx1MWVlNlx1MDE2OFx1MWVlNFx1MWVmMlx4ZDVcdTFlYWZcdTFlYjFcdTFlYjdcdTFlYTVcdTFlYTdcdTFlYTlcdTFl''@;'; put 'put ''YWRcdTFlYmRcdTFlYjlcdTFlYmZcdTFlYzFcdTFlYzNcdTFlYzVcdTFlYzdcdTFlZDFcdTFlZDNcdTFlZDVcdTFlZDdcdTFlZTBcdTAxYTBcdTFlZDlcdTFlZGRcdTFlZGZcdTFlY2JcdTFlZjBcdTFlZThcdTFlZWFcdTFlZWNcdTAxYTFcdTFlZGJcdTAxYWZceGMwXHhjMVx4YzJceGMzXHUx''@;'; put 'put ''ZWEyXHUwMTAyXHUxZWIzXHUxZWI1XHhjOFx4YzlceGNhXHUxZWJhXHhjY1x4Y2RcdTAxMjhcdTFlZjNcdTAxMTBcdTFlZTlceGQyXHhkM1x4ZDRcdTFlYTFcdTFlZjdcdTFlZWJcdTFlZWRceGQ5XHhkYVx1MWVmOVx1MWVmNVx4ZGRcdTFlZTFcdTAxYjBceGUwXHhlMVx4ZTJceGUzXHUxZWEz''@;'; put 'put ''XHUwMTAzXHUxZWVmXHUxZWFiXHhlOFx4ZTlceGVhXHUxZWJiXHhlY1x4ZWRcdTAxMjlcdTFlYzlcdTAxMTFcdTFlZjFceGYyXHhmM1x4ZjRceGY1XHUxZWNmXHUxZWNkXHUxZWU1XHhmOVx4ZmFcdTAxNjlcdTFlZTdceGZkXHUxZWUzXHUxZWVlIn0saXNvNjQ2Y246e3R5cGU6Il9zYmNzIixj''@;'; put 'put ''aGFyczoiXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiNceGE1JSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdI''@;'; put 'put ''SUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9XHUyMDNlXHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZCJ9LGlzbzY0NmpwOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygp''@;'; put 'put ''KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltceGE1XV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9XHUyMDNlXHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LGhwcm9tYW44Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2''@;'; put 'put ''XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YzBceGMyXHhjOFx4Y2FceGNiXHhjZVx4Y2ZceGI0XHUwMmNiXHUwMmM2XHhhOFx1MDJkY1x4ZDlceGRiXHUyMGE0XHhhZlx4ZGRceGZkXHhiMFx4YzdceGU3XHhkMVx4ZjFceGExXHhiZlx4YTRceGEzXHhhNVx4YTdc''@;'; put 'put ''dTAxOTJceGEyXHhlMlx4ZWFceGY0XHhmYlx4ZTFceGU5XHhmM1x4ZmFceGUwXHhlOFx4ZjJceGY5XHhlNFx4ZWJceGY2XHhmY1x4YzVceGVlXHhkOFx4YzZceGU1XHhlZFx4ZjhceGU2XHhjNFx4ZWNceGQ2XHhkY1x4YzlceGVmXHhkZlx4ZDRceGMxXHhjM1x4ZTNceGQwXHhmMFx4Y2RceGNj''@;'; put 'put ''XHhkM1x4ZDJceGQ1XHhmNVx1MDE2MFx1MDE2MVx4ZGFcdTAxNzhceGZmXHhkZVx4ZmVceGI3XHhiNVx4YjZceGJlXHUyMDE0XHhiY1x4YmRceGFhXHhiYVx4YWJcdTI1YTBceGJiXHhiMVx1ZmZmZCJ9LG1hY2ludG9zaDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhk''@;'; put 'put ''MVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4''@;'; put 'put ''YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVc''@;'; put 'put ''dTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZiMDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNj''@;'; put 'put ''XHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxhc2NpaTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSx0aXM2MjA6e3R5cGU6Il9zYmNzIixjaGFyczoiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTAxXHUwZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2''@;'; put 'put ''XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFkXHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUw''@;'; put 'put ''ZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUwZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUw''@;'; put 'put ''ZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn19fSw2NDc3MzpXZT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBvcnRzPXsxMDAyOToibWFjY2VudGV1cm8iLG1hY2NlbnRldXJvOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRcdTAxMDBcdTAxMDFceGM5XHUwMTA0XHhkNlx4''@;'; put 'put ''ZGNceGUxXHUwMTA1XHUwMTBjXHhlNFx1MDEwZFx1MDEwNlx1MDEwN1x4ZTlcdTAxNzlcdTAxN2FcdTAxMGVceGVkXHUwMTBmXHUwMTEyXHUwMTEzXHUwMTE2XHhmM1x1MDExN1x4ZjRceGY2XHhmNVx4ZmFcdTAxMWFcdTAxMWJceGZjXHUyMDIwXHhiMFx1MDExOFx4YTNceGE3XHUyMDIyXHhi''@;'; put 'put ''Nlx4ZGZceGFlXHhhOVx1MjEyMlx1MDExOVx4YThcdTIyNjBcdTAxMjNcdTAxMmVcdTAxMmZcdTAxMmFcdTIyNjRcdTIyNjVcdTAxMmJcdTAxMzZcdTIyMDJcdTIyMTFcdTAxNDJcdTAxM2JcdTAxM2NcdTAxM2RcdTAxM2VcdTAxMzlcdTAxM2FcdTAxNDVcdTAxNDZcdTAxNDNceGFjXHUyMjFh''@;'; put 'put ''XHUwMTQ0XHUwMTQ3XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwMTQ4XHUwMTUwXHhkNVx1MDE1MVx1MDE0Y1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FcdTAxNGRcdTAxNTRcdTAxNTVcdTAxNThcdTIwMzlcdTIwM2FcdTAxNTlcdTAxNTZcdTAxNTdc''@;'; put 'put ''dTAxNjBcdTIwMWFcdTIwMWVcdTAxNjFcdTAxNWFcdTAxNWJceGMxXHUwMTY0XHUwMTY1XHhjZFx1MDE3ZFx1MDE3ZVx1MDE2YVx4ZDNceGQ0XHUwMTZiXHUwMTZlXHhkYVx1MDE2Zlx1MDE3MFx1MDE3MVx1MDE3Mlx1MDE3M1x4ZGRceGZkXHUwMTM3XHUwMTdiXHUwMTQxXHUwMTdjXHUwMTIy''@;'; put 'put ''XHUwMmM3In0sODA4OiJjcDgwOCIsaWJtODA4OiJjcDgwOCIsY3A4MDg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIw''@;'; put 'put ''XHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUw''@;'; put 'put ''NDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVm''@;'; put 'put ''XHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUw''@;'; put 'put ''NDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDBlXHUwNDVlXHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIxMTZcdTIwYWNcdTI1YTBceGEw''@;'; put 'put ''In0sbWlrOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQy''@;'; put 'put ''Nlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1''@;'; put 'put ''MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU2M1x1MjU1MVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1''@;'; put 'put ''MFx1MjU2Y1x1MjUxMFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjExNlx4YTdcdTI1NTdcdTI1NWRcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1''@;'; put 'put ''MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGNwNzIwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHhlOVx4ZTJc''@;'; put 'put ''eDg0XHhlMFx4ODZceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceDhkXHg4ZVx4OGZceDkwXHUwNjUxXHUwNjUyXHhmNFx4YTRcdTA2NDBceGZiXHhmOVx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx4YTNcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2''@;'; put 'put ''MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUz''@;'; put 'put ''NFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1''@;'; put 'put ''MjU4Y1x1MjU5MFx1MjU4MFx1MDYzNlx1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1MDY0MVx4YjVcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTIyNjFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2NGZcdTA2NTBcdTIyNDhceGIwXHUy''@;'; put 'put ''MjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0sYXNjaWk4Yml0OiJhc2NpaSIsdXNhc2NpaToiYXNjaWkiLGFuc2l4MzQ6ImFzY2lpIixhbnNpeDM0MTk2ODoiYXNjaWkiLGFuc2l4MzQxOTg2OiJhc2NpaSIsY3Nhc2NpaToiYXNjaWkiLGNwMzY3OiJhc2NpaSIsaWJtMzY3OiJh''@;'; put 'put ''c2NpaSIsaXNvaXI2OiJhc2NpaSIsaXNvNjQ2dXM6ImFzY2lpIixpc282NDZpcnY6ImFzY2lpIix1czoiYXNjaWkiLGxhdGluMToiaXNvODg1OTEiLGxhdGluMjoiaXNvODg1OTIiLGxhdGluMzoiaXNvODg1OTMiLGxhdGluNDoiaXNvODg1OTQiLGxhdGluNToiaXNvODg1OTkiLGxhdGluNjoi''@;'; put 'put ''aXNvODg1OTEwIixsYXRpbjc6Imlzbzg4NTkxMyIsbGF0aW44OiJpc284ODU5MTQiLGxhdGluOToiaXNvODg1OTE1IixsYXRpbjEwOiJpc284ODU5MTYiLGNzaXNvbGF0aW4xOiJpc284ODU5MSIsY3Npc29sYXRpbjI6Imlzbzg4NTkyIixjc2lzb2xhdGluMzoiaXNvODg1OTMiLGNzaXNvbGF0''@;'; put 'put ''aW40OiJpc284ODU5NCIsY3Npc29sYXRpbmN5cmlsbGljOiJpc284ODU5NSIsY3Npc29sYXRpbmFyYWJpYzoiaXNvODg1OTYiLGNzaXNvbGF0aW5ncmVlazoiaXNvODg1OTciLGNzaXNvbGF0aW5oZWJyZXc6Imlzbzg4NTk4Iixjc2lzb2xhdGluNToiaXNvODg1OTkiLGNzaXNvbGF0aW42OiJp''@;'; put 'put ''c284ODU5MTAiLGwxOiJpc284ODU5MSIsbDI6Imlzbzg4NTkyIixsMzoiaXNvODg1OTMiLGw0OiJpc284ODU5NCIsbDU6Imlzbzg4NTk5IixsNjoiaXNvODg1OTEwIixsNzoiaXNvODg1OTEzIixsODoiaXNvODg1OTE0IixsOToiaXNvODg1OTE1IixsMTA6Imlzbzg4NTkxNiIsaXNvaXIxNDoi''@;'; put 'put ''aXNvNjQ2anAiLGlzb2lyNTc6ImlzbzY0NmNuIixpc29pcjEwMDoiaXNvODg1OTEiLGlzb2lyMTAxOiJpc284ODU5MiIsaXNvaXIxMDk6Imlzbzg4NTkzIixpc29pcjExMDoiaXNvODg1OTQiLGlzb2lyMTQ0OiJpc284ODU5NSIsaXNvaXIxMjc6Imlzbzg4NTk2Iixpc29pcjEyNjoiaXNvODg1''@;'; put 'put ''OTciLGlzb2lyMTM4OiJpc284ODU5OCIsaXNvaXIxNDg6Imlzbzg4NTk5Iixpc29pcjE1NzoiaXNvODg1OTEwIixpc29pcjE2NjoidGlzNjIwIixpc29pcjE3OToiaXNvODg1OTEzIixpc29pcjE5OToiaXNvODg1OTE0Iixpc29pcjIwMzoiaXNvODg1OTE1Iixpc29pcjIyNjoiaXNvODg1OTE2''@;'; put 'put ''IixjcDgxOToiaXNvODg1OTEiLGlibTgxOToiaXNvODg1OTEiLGN5cmlsbGljOiJpc284ODU5NSIsYXJhYmljOiJpc284ODU5NiIsYXJhYmljODoiaXNvODg1OTYiLGVjbWExMTQ6Imlzbzg4NTk2Iixhc21vNzA4OiJpc284ODU5NiIsZ3JlZWs6Imlzbzg4NTk3IixncmVlazg6Imlzbzg4NTk3''@;'; put 'put ''IixlY21hMTE4OiJpc284ODU5NyIsZWxvdDkyODoiaXNvODg1OTciLGhlYnJldzoiaXNvODg1OTgiLGhlYnJldzg6Imlzbzg4NTk4Iix0dXJraXNoOiJpc284ODU5OSIsdHVya2lzaDg6Imlzbzg4NTk5Iix0aGFpOiJpc284ODU5MTEiLHRoYWk4OiJpc284ODU5MTEiLGNlbHRpYzoiaXNvODg1''@;'; put 'put ''OTE0IixjZWx0aWM4OiJpc284ODU5MTQiLGlzb2NlbHRpYzoiaXNvODg1OTE0Iix0aXM2MjAwOiJ0aXM2MjAiLHRpczYyMDI1MjkxOiJ0aXM2MjAiLHRpczYyMDI1MzMwOiJ0aXM2MjAiLDFlNDoibWFjcm9tYW4iLDEwMDA2OiJtYWNncmVlayIsMTAwMDc6Im1hY2N5cmlsbGljIiwxMDA3OToi''@;'; put 'put ''bWFjaWNlbGFuZCIsMTAwODE6Im1hY3R1cmtpc2giLGNzcGM4Y29kZXBhZ2U0Mzc6ImNwNDM3Iixjc3BjNzc1YmFsdGljOiJjcDc3NSIsY3NwYzg1MG11bHRpbGluZ3VhbDoiY3A4NTAiLGNzcGNwODUyOiJjcDg1MiIsY3NwYzg2MmxhdGluaGVicmV3OiJjcDg2MiIsY3BncjoiY3A4NjkiLG1z''@;'; put 'put ''ZWU6ImNwMTI1MCIsbXNjeXJsOiJjcDEyNTEiLG1zYW5zaToiY3AxMjUyIixtc2dyZWVrOiJjcDEyNTMiLG1zdHVyazoiY3AxMjU0Iixtc2hlYnI6ImNwMTI1NSIsbXNhcmFiOiJjcDEyNTYiLHdpbmJhbHRyaW06ImNwMTI1NyIsY3AyMDg2Njoia29pOHIiLDIwODY2OiJrb2k4ciIsaWJtODc4''@;'; put 'put ''OiJrb2k4ciIsY3Nrb2k4cjoia29pOHIiLGNwMjE4NjY6ImtvaTh1IiwyMTg2Njoia29pOHUiLGlibTExNjg6ImtvaTh1IixzdHJrMTA0ODIwMDI6InJrMTA0OCIsdGN2bjU3MTI6InRjdm4iLHRjdm41NzEyMToidGN2biIsZ2IxOTg4ODA6ImlzbzY0NmNuIixjbjoiaXNvNjQ2Y24iLGNzaXNv''@;'; put 'put ''MTRqaXNjNjIyMHJvOiJpc282NDZqcCIsamlzYzYyMjAxOTY5cm86ImlzbzY0NmpwIixqcDoiaXNvNjQ2anAiLGNzaHByb21hbjg6Imhwcm9tYW44IixyODoiaHByb21hbjgiLHJvbWFuODoiaHByb21hbjgiLHhyb21hbjg6Imhwcm9tYW44IixpYm0xMDUxOiJocHJvbWFuOCIsbWFjOiJtYWNp''@;'; put 'put ''bnRvc2giLGNzbWFjaW50b3NoOiJtYWNpbnRvc2gifX0sNDMyODA6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDI0MTc5KS5CdWZmZXI7ZnVuY3Rpb24gaygpe31mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGhlKCl7dGhpcy5vdmVyZmxvd0J5dGU9LTF9ZnVuY3Rpb24gSChKLEkp''@;'; put 'put ''e3RoaXMuaWNvbnY9SX1mdW5jdGlvbiBCKEosSSl7dm9pZCAwPT09KEo9Snx8e30pLmFkZEJPTSYmKEouYWRkQk9NPSEwKSx0aGlzLmVuY29kZXI9SS5pY29udi5nZXRFbmNvZGVyKCJ1dGYtMTZsZSIsSil9ZnVuY3Rpb24gTChKLEkpe3RoaXMuZGVjb2Rlcj1udWxsLHRoaXMuaW5pdGlhbEJ5''@;'; put 'put ''dGVzPVtdLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPTAsdGhpcy5vcHRpb25zPUp8fHt9LHRoaXMuaWNvbnY9SS5pY29udn1mdW5jdGlvbiBLKEosSSl7dmFyIFI9SXx8InV0Zi0xNmxlIjtpZihKLmxlbmd0aD49MilpZigyNTQ9PUpbMF0mJjI1NT09SlsxXSlSPSJ1dGYtMTZiZSI7ZWxzZSBpZigy''@;'; put 'put ''NTU9PUpbMF0mJjI1ND09SlsxXSlSPSJ1dGYtMTZsZSI7ZWxzZXtmb3IodmFyIEU9MCx6PTAsaj1NYXRoLm1pbihKLmxlbmd0aC1KLmxlbmd0aCUyLDY0KSxWPTA7VjxqO1YrPTIpMD09PUpbVl0mJjAhPT1KW1YrMV0mJnorKywwIT09SltWXSYmMD09PUpbVisxXSYmRSsrO3o+RT9SPSJ1dGYt''@;'; put 'put ''MTZiZSI6ejxFJiYoUj0idXRmLTE2bGUiKX1yZXR1cm4gUn16ZS51dGYxNmJlPWssay5wcm90b3R5cGUuZW5jb2Rlcj12LGsucHJvdG90eXBlLmRlY29kZXI9aGUsay5wcm90b3R5cGUuYm9tQXdhcmU9ITAsdi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oSil7Zm9yKHZhciBJPXNlLmZyb20o''@;'; put 'put ''SiwidWNzMiIpLFI9MDtSPEkubGVuZ3RoO1IrPTIpe3ZhciBFPUlbUl07SVtSXT1JW1IrMV0sSVtSKzFdPUV9cmV0dXJuIEl9LHYucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30saGUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEope2lmKDA9PUoubGVuZ3RoKXJldHVybiIiO3ZhciBJPXNl''@;'; put 'put ''LmFsbG9jKEoubGVuZ3RoKzEpLFI9MCxFPTA7Zm9yKC0xIT09dGhpcy5vdmVyZmxvd0J5dGUmJihJWzBdPUpbMF0sSVsxXT10aGlzLm92ZXJmbG93Qnl0ZSxSPTEsRT0yKTtSPEoubGVuZ3RoLTE7Uis9MixFKz0yKUlbRV09SltSKzFdLElbRSsxXT1KW1JdO3JldHVybiB0aGlzLm92ZXJmbG93''@;'; put 'put ''Qnl0ZT1SPT1KLmxlbmd0aC0xP0pbSi5sZW5ndGgtMV06LTEsSS5zbGljZSgwLEUpLnRvU3RyaW5nKCJ1Y3MyIil9LGhlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9LHplLnV0ZjE2PUgsSC5wcm90b3R5cGUuZW5jb2Rlcj1CLEgucHJvdG90eXBlLmRlY29kZXI9TCxCLnByb3RvdHlwZS53''@;'; put 'put ''cml0ZT1mdW5jdGlvbihKKXtyZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKEopfSxCLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpfSxMLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihKKXtpZighdGhpcy5kZWNvZGVyKXtpZih0aGlzLmluaXRpYWxC''@;'; put 'put ''eXRlcy5wdXNoKEopLHRoaXMuaW5pdGlhbEJ5dGVzTGVuKz1KLmxlbmd0aCx0aGlzLmluaXRpYWxCeXRlc0xlbjwxNilyZXR1cm4iIjt2YXIgST1LKEo9c2UuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5p''@;'; put 'put ''Y29udi5nZXREZWNvZGVyKEksdGhpcy5vcHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5pbml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKEopfSxMLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5kZWNvZGVyKXt2YXIgSj1zZS5j''@;'; put 'put ''b25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLEk9SyhKLHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpO3RoaXMuZGVjb2Rlcj10aGlzLmljb252LmdldERlY29kZXIoSSx0aGlzLm9wdGlvbnMpO3ZhciBSPXRoaXMuZGVjb2Rlci53cml0ZShKKSxFPXRoaXMuZGVjb2Rlci5lbmQoKTtyZXR1''@;'; put 'put ''cm4gRT9SK0U6Un1yZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpfX0sOTI4NDQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDI0MTc5KS5CdWZmZXI7ZnVuY3Rpb24gayhKLEkpe3RoaXMuaWNvbnY9SSx0aGlzLmJvbUF3YXJlPSEwLHRoaXMuaXNMRT1KLmlzTEV9ZnVuY3Rpb24g''@;'; put 'put ''dihKLEkpe3RoaXMuaXNMRT1JLmlzTEUsdGhpcy5oaWdoU3Vycm9nYXRlPTB9ZnVuY3Rpb24gaGUoSixJKXt0aGlzLmlzTEU9SS5pc0xFLHRoaXMuYmFkQ2hhcj1JLmljb252LmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApLHRoaXMub3ZlcmZsb3c9bnVsbH1mdW5jdGlvbiBIKEos''@;'; put 'put ''SSl7dGhpcy5pY29udj1JfWZ1bmN0aW9uIEIoSixJKXt2b2lkIDA9PT0oSj1KfHx7fSkuYWRkQk9NJiYoSi5hZGRCT009ITApLHRoaXMuZW5jb2Rlcj1JLmljb252LmdldEVuY29kZXIoSi5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGYtMzJsZSIsSil9ZnVuY3Rpb24gTChKLEkpe3RoaXMuZGVjb2Rl''@;'; put 'put ''cj1udWxsLHRoaXMuaW5pdGlhbEJ5dGVzPVtdLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPTAsdGhpcy5vcHRpb25zPUp8fHt9LHRoaXMuaWNvbnY9SS5pY29udn1mdW5jdGlvbiBLKEosSSl7dmFyIFI9SXx8InV0Zi0zMmxlIjtpZihKLmxlbmd0aD49NClpZig2NTI3OT09PUoucmVhZFVJbnQzMkJF''@;'; put 'put ''KDApKVI9InV0Zi0zMmJlIjtlbHNlIGlmKDY1Mjc5PT09Si5yZWFkVUludDMyTEUoMCkpUj0idXRmLTMybGUiO2Vsc2V7Zm9yKHZhciBFPTAsej0wLGo9MCxWPTAsRz1NYXRoLm1pbihKLmxlbmd0aC1KLmxlbmd0aCU0LDEyOCksVz0wO1c8RztXKz00KXt2YXIgVT1KW1ddLHE9SltXKzFdLHRl''@;'; put 'put ''PUpbVysyXSxuZT1KW1crM107KDAhPT1VfHxxPjE2KSYmKyt6LCgwIT09bmV8fHRlPjE2KSYmKytFLDA9PT1VJiYwPT09cSYmMD09PXRlJiYwIT09bmUmJlYrKywwIT09VSYmMD09PXEmJjA9PT10ZSYmMD09PW5lJiZqKyt9ejxFP1I9InV0Zi0zMmJlIjpFPHomJihSPSJ1dGYtMzJsZSIpLFY+''@;'; put 'put ''aj9SPSJ1dGYtMzJiZSI6VjxqJiYoUj0idXRmLTMybGUiKX1yZXR1cm4gUn16ZS5fdXRmMzI9ayx6ZS51dGYzMmxlPXt0eXBlOiJfdXRmMzIiLGlzTEU6ITB9LHplLnV0ZjMyYmU9e3R5cGU6Il91dGYzMiIsaXNMRTohMX0semUudWNzNGxlPSJ1dGYzMmxlIix6ZS51Y3M0YmU9InV0ZjMyYmUi''@;'; put 'put ''LGsucHJvdG90eXBlLmVuY29kZXI9dixrLnByb3RvdHlwZS5kZWNvZGVyPWhlLHYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEope2Zvcih2YXIgST1zZS5mcm9tKEosInVjczIiKSxSPXNlLmFsbG9jKDIqSS5sZW5ndGgpLEU9dGhpcy5pc0xFP1Iud3JpdGVVSW50MzJMRTpSLndyaXRlVUlu''@;'; put 'put ''dDMyQkUsej0wLGo9MDtqPEkubGVuZ3RoO2orPTIpe3ZhciBWPUkucmVhZFVJbnQxNkxFKGopLEc9NTUyOTY8PVYmJlY8NTYzMjA7aWYodGhpcy5oaWdoU3Vycm9nYXRlKXtpZighRyYmNTYzMjA8PVYmJlY8NTczNDQpe0UuY2FsbChSLDY1NTM2Kyh0aGlzLmhpZ2hTdXJyb2dhdGUtNTUyOTY8''@;'; put 'put ''PDEwfFYtNTYzMjApLHopLHorPTQsdGhpcy5oaWdoU3Vycm9nYXRlPTA7Y29udGludWV9RS5jYWxsKFIsdGhpcy5oaWdoU3Vycm9nYXRlLHopLHorPTR9Rz90aGlzLmhpZ2hTdXJyb2dhdGU9VjooRS5jYWxsKFIsVix6KSx6Kz00LHRoaXMuaGlnaFN1cnJvZ2F0ZT0wKX1yZXR1cm4gejxSLmxl''@;'; put 'put ''bmd0aCYmKFI9Ui5zbGljZSgwLHopKSxSfSx2LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtpZih0aGlzLmhpZ2hTdXJyb2dhdGUpe3ZhciBKPXNlLmFsbG9jKDQpO3JldHVybiB0aGlzLmlzTEU/Si53cml0ZVVJbnQzMkxFKHRoaXMuaGlnaFN1cnJvZ2F0ZSwwKTpKLndyaXRlVUludDMyQkUo''@;'; put 'put ''dGhpcy5oaWdoU3Vycm9nYXRlLDApLHRoaXMuaGlnaFN1cnJvZ2F0ZT0wLEp9fSxoZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oSil7aWYoMD09PUoubGVuZ3RoKXJldHVybiIiO3RoaXMub3ZlcmZsb3cmJihKPXNlLmNvbmNhdChbdGhpcy5vdmVyZmxvdyxKXSkpO3ZhciBJPUoubGVuZ3Ro''@;'; put 'put ''LUoubGVuZ3RoJTQ7Si5sZW5ndGghPT1JPyh0aGlzLm92ZXJmbG93PUouc2xpY2UoSSksSj1KLnNsaWNlKDAsSSkpOnRoaXMub3ZlcmZsb3c9bnVsbDtmb3IodmFyIFI9c2UuYWxsb2MoSSksRT0wLHo9MDt6PEk7eis9NCl7dmFyIGo9dGhpcy5pc0xFP0oucmVhZFVJbnQzMkxFKHopOkoucmVh''@;'; put 'put ''ZFVJbnQzMkJFKHopO2lmKGo8NjU1MzYpUi53cml0ZVVJbnQxNkxFKGosRSksRSs9MjtlbHNlIGlmKGo+MTExNDExMSlSLndyaXRlVUludDE2TEUodGhpcy5iYWRDaGFyLEUpLEUrPTI7ZWxzZXt2YXIgRz01NjMyMCsoMTAyMyYoai09NjU1MzYpKTtSLndyaXRlVUludDE2TEUoNTUyOTZ8aj4+''@;'; put 'put ''MTAsRSksUi53cml0ZVVJbnQxNkxFKEcsRSs9MiksRSs9Mn19cmV0dXJuIFIuc2xpY2UoMCxFKS50b1N0cmluZygidWNzMiIpfSxoZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5vdmVyZmxvdz1udWxsfSx6ZS51dGYzMj1ILHplLnVjczQ9SCxILnByb3RvdHlwZS5lbmNvZGVyPUIs''@;'; put 'put ''SC5wcm90b3R5cGUuZGVjb2Rlcj1MLEIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEope3JldHVybiB0aGlzLmVuY29kZXIud3JpdGUoSil9LEIucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LEwucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEop''@;'; put 'put ''e2lmKCF0aGlzLmRlY29kZXIpe2lmKHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goSiksdGhpcy5pbml0aWFsQnl0ZXNMZW4rPUoubGVuZ3RoLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPDMyKXJldHVybiIiO3ZhciBSPUsoc2UuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSx0aGlzLm9wdGlvbnMuZGVm''@;'; put 'put ''YXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKFIsdGhpcy5vcHRpb25zKSx0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGg9dGhpcy5pbml0aWFsQnl0ZXNMZW49MH1yZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKEopfSxMLnByb3RvdHlwZS5lbmQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtpZighdGhpcy5kZWNvZGVyKXt2YXIgSj1zZS5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLEk9SyhKLHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpO3RoaXMuZGVjb2Rlcj10aGlzLmljb252LmdldERlY29kZXIoSSx0aGlzLm9wdGlvbnMpO3ZhciBSPXRoaXMuZGVjb2Rlci53''@;'; put 'put ''cml0ZShKKSxFPXRoaXMuZGVjb2Rlci5lbmQoKTtyZXR1cm4gRT9SK0U6Un1yZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpfX0sNzgzNTQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDI0MTc5KS5CdWZmZXI7ZnVuY3Rpb24gayhHLFcpe3RoaXMuaWNvbnY9V316ZS51dGY3PWss''@;'; put 'put ''emUudW5pY29kZTExdXRmNz0idXRmNyIsay5wcm90b3R5cGUuZW5jb2Rlcj1oZSxrLnByb3RvdHlwZS5kZWNvZGVyPUgsay5wcm90b3R5cGUuYm9tQXdhcmU9ITA7dmFyIHY9L1teQS1aYS16MC05J1woXCksLVwuXC86XD8gXG5cclx0XSsvZztmdW5jdGlvbiBoZShHLFcpe3RoaXMuaWNvbnY9''@;'; put 'put ''Vy5pY29udn1mdW5jdGlvbiBIKEcsVyl7dGhpcy5pY29udj1XLmljb252LHRoaXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIn1oZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRyl7cmV0dXJuIHNlLmZyb20oRy5yZXBsYWNlKHYsZnVuY3Rpb24oVyl7cmV0dXJuIisiKygiKyI9''@;'; put 'put ''PT1XPyIiOnRoaXMuaWNvbnYuZW5jb2RlKFcsInV0ZjE2LWJlIikudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoLz0rJC8sIiIpKSsiLSJ9LmJpbmQodGhpcykpKX0saGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe307Zm9yKHZhciBCPS9bQS1aYS16MC05XC8rXS8sTD1bXSxLPTA7Szwy''@;'; put 'put ''NTY7SysrKUxbS109Qi50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoSykpO3ZhciBKPSIrIi5jaGFyQ29kZUF0KDApLEk9Ii0iLmNoYXJDb2RlQXQoMCksUj0iJiIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBFKEcsVyl7dGhpcy5pY29udj1XfWZ1bmN0aW9uIHooRyxXKXt0aGlzLmljb252PVcu''@;'; put 'put ''aWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPXNlLmFsbG9jKDYpLHRoaXMuYmFzZTY0QWNjdW1JZHg9MH1mdW5jdGlvbiBqKEcsVyl7dGhpcy5pY29udj1XLmljb252LHRoaXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIn1ILnByb3RvdHlwZS53cml0ZT1m''@;'; put 'put ''dW5jdGlvbihHKXtmb3IodmFyIFc9IiIsVT0wLHE9dGhpcy5pbkJhc2U2NCx0ZT10aGlzLmJhc2U2NEFjY3VtLG5lPTA7bmU8Ry5sZW5ndGg7bmUrKylpZihxKXtpZighTFtHW25lXV0pe2lmKG5lPT1VJiZHW25lXT09SSlXKz0iKyI7ZWxzZXt2YXIgaWU9dGUrRy5zbGljZShVLG5lKS50b1N0''@;'; put 'put ''cmluZygpO1crPXRoaXMuaWNvbnYuZGVjb2RlKHNlLmZyb20oaWUsImJhc2U2NCIpLCJ1dGYxNi1iZSIpfUdbbmVdIT1JJiZuZS0tLFU9bmUrMSxxPSExLHRlPSIifX1lbHNlIEdbbmVdPT1KJiYoVys9dGhpcy5pY29udi5kZWNvZGUoRy5zbGljZShVLG5lKSwiYXNjaWkiKSxVPW5lKzEscT0h''@;'; put 'put ''MCk7aWYocSl7dmFyIGxlPShpZT10ZStHLnNsaWNlKFUpLnRvU3RyaW5nKCkpLmxlbmd0aC1pZS5sZW5ndGglODt0ZT1pZS5zbGljZShsZSksaWU9aWUuc2xpY2UoMCxsZSksVys9dGhpcy5pY29udi5kZWNvZGUoc2UuZnJvbShpZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9ZWxzZSBXKz10aGlz''@;'; put 'put ''Lmljb252LmRlY29kZShHLnNsaWNlKFUpLCJhc2NpaSIpO3JldHVybiB0aGlzLmluQmFzZTY0PXEsdGhpcy5iYXNlNjRBY2N1bT10ZSxXfSxILnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIgRz0iIjtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGg+MCYm''@;'; put 'put ''KEc9dGhpcy5pY29udi5kZWNvZGUoc2UuZnJvbSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLEd9LHplLnV0ZjdpbWFwPUUsRS5wcm90b3R5cGUuZW5jb2Rlcj16LEUucHJvdG90eXBlLmRlY29kZXI9''@;'; put 'put ''aixFLnByb3RvdHlwZS5ib21Bd2FyZT0hMCx6LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihHKXtmb3IodmFyIFc9dGhpcy5pbkJhc2U2NCxVPXRoaXMuYmFzZTY0QWNjdW0scT10aGlzLmJhc2U2NEFjY3VtSWR4LHRlPXNlLmFsbG9jKDUqRy5sZW5ndGgrMTApLG5lPTAsaWU9MDtpZTxHLmxl''@;'; put 'put ''bmd0aDtpZSsrKXt2YXIgbGU9Ry5jaGFyQ29kZUF0KGllKTszMjw9bGUmJmxlPD0xMjY/KFcmJihxPjAmJihuZSs9dGUud3JpdGUoVS5zbGljZSgwLHEpLnRvU3RyaW5nKCJiYXNlNjQiKS5yZXBsYWNlKC9cLy9nLCIsIikucmVwbGFjZSgvPSskLywiIiksbmUpLHE9MCksdGVbbmUrK109SSxX''@;'; put 'put ''PSExKSxXfHwodGVbbmUrK109bGUsbGU9PT1SJiYodGVbbmUrK109SSkpKTooV3x8KHRlW25lKytdPVIsVz0hMCksVyYmKFVbcSsrXT1sZT4+OCxVW3ErK109MjU1JmxlLHE9PVUubGVuZ3RoJiYobmUrPXRlLndyaXRlKFUudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKSxu''@;'; put 'put ''ZSkscT0wKSkpfXJldHVybiB0aGlzLmluQmFzZTY0PVcsdGhpcy5iYXNlNjRBY2N1bUlkeD1xLHRlLnNsaWNlKDAsbmUpfSx6LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIgRz1zZS5hbGxvYygxMCksVz0wO3JldHVybiB0aGlzLmluQmFzZTY0JiYodGhpcy5iYXNlNjRBY2N1bUlkeD4w''@;'; put 'put ''JiYoVys9Ry53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNlKDAsdGhpcy5iYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBsYWNlKC89KyQvLCIiKSxXKSx0aGlzLmJhc2U2NEFjY3VtSWR4PTApLEdbVysrXT1JLHRoaXMuaW5CYXNlNjQ9''@;'; put 'put ''ITEpLEcuc2xpY2UoMCxXKX07dmFyIFY9TC5zbGljZSgpO1ZbIiwiLmNoYXJDb2RlQXQoMCldPSEwLGoucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEcpe2Zvcih2YXIgVz0iIixVPTAscT10aGlzLmluQmFzZTY0LHRlPXRoaXMuYmFzZTY0QWNjdW0sbmU9MDtuZTxHLmxlbmd0aDtuZSsrKWlm''@;'; put 'put ''KHEpe2lmKCFWW0dbbmVdXSl7aWYobmU9PVUmJkdbbmVdPT1JKVcrPSImIjtlbHNle3ZhciBpZT10ZStHLnNsaWNlKFUsbmUpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCIvIik7Vys9dGhpcy5pY29udi5kZWNvZGUoc2UuZnJvbShpZSwiYmFzZTY0IiksInV0ZjE2LWJlIil9R1tuZV0hPUkm''@;'; put 'put ''Jm5lLS0sVT1uZSsxLHE9ITEsdGU9IiJ9fWVsc2UgR1tuZV09PVImJihXKz10aGlzLmljb252LmRlY29kZShHLnNsaWNlKFUsbmUpLCJhc2NpaSIpLFU9bmUrMSxxPSEwKTtpZihxKXt2YXIgbGU9KGllPXRlK0cuc2xpY2UoVSkudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csIi8iKSkubGVuZ3Ro''@;'; put 'put ''LWllLmxlbmd0aCU4O3RlPWllLnNsaWNlKGxlKSxpZT1pZS5zbGljZSgwLGxlKSxXKz10aGlzLmljb252LmRlY29kZShzZS5mcm9tKGllLCJiYXNlNjQiKSwidXRmMTYtYmUiKX1lbHNlIFcrPXRoaXMuaWNvbnYuZGVjb2RlKEcuc2xpY2UoVSksImFzY2lpIik7cmV0dXJuIHRoaXMuaW5CYXNl''@;'; put 'put ''NjQ9cSx0aGlzLmJhc2U2NEFjY3VtPXRlLFd9LGoucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBHPSIiO3JldHVybiB0aGlzLmluQmFzZTY0JiZ0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aD4wJiYoRz10aGlzLmljb252LmRlY29kZShzZS5mcm9tKHRoaXMuYmFzZTY0QWNjdW0sImJhc2U2''@;'; put 'put ''NCIpLCJ1dGYxNi1iZSIpKSx0aGlzLmluQmFzZTY0PSExLHRoaXMuYmFzZTY0QWNjdW09IiIsR319LDYzMDE4OihXZSx6ZSk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gc2UodixoZSl7dGhpcy5lbmNvZGVyPXYsdGhpcy5hZGRCT009ITB9ZnVuY3Rpb24gayh2LGhlKXt0aGlzLmRlY29kZXI9''@;'; put 'put ''dix0aGlzLnBhc3M9ITEsdGhpcy5vcHRpb25zPWhlfHx7fX16ZS5QcmVwZW5kQk9NPXNlLHNlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5hZGRCT00mJih2PSJcdWZlZmYiK3YsdGhpcy5hZGRCT009ITEpLHRoaXMuZW5jb2Rlci53cml0ZSh2KX0sc2UucHJvdG90''@;'; put 'put ''eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LHplLlN0cmlwQk9NPWssay5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odil7dmFyIGhlPXRoaXMuZGVjb2Rlci53cml0ZSh2KTtyZXR1cm4gdGhpcy5wYXNzfHwhaGV8fCgiXHVmZWZmIj09PWhlWzBdJiYoaGU9''@;'; put 'put ''aGUuc2xpY2UoMSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpcEJPTSYmdGhpcy5vcHRpb25zLnN0cmlwQk9NKCkpLHRoaXMucGFzcz0hMCksaGV9LGsucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXIuZW5kKCl9fSw1MzooV2UsemUsVCk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMjQxNzkpLkJ1ZmZlcixrPVQoNjMwMTgpLHY9V2UuZXhwb3J0czt2LmVuY29kaW5ncz1udWxsLHYuZGVmYXVsdENoYXJVbmljb2RlPSJcdWZmZmQiLHYuZGVmYXVsdENoYXJTaW5nbGVCeXRlPSI/Iix2LmVuY29kZT1mdW5jdGlvbihMLEssSil7TD0i''@;'; put 'put ''IisoTHx8IiIpO3ZhciBJPXYuZ2V0RW5jb2RlcihLLEopLFI9SS53cml0ZShMKSxFPUkuZW5kKCk7cmV0dXJuIEUmJkUubGVuZ3RoPjA/c2UuY29uY2F0KFtSLEVdKTpSfSx2LmRlY29kZT1mdW5jdGlvbihMLEssSil7InN0cmluZyI9PXR5cGVvZiBMJiYodi5za2lwRGVjb2RlV2FybmluZ3x8''@;'; put 'put ''KGNvbnNvbGUuZXJyb3IoIkljb252LWxpdGUgd2FybmluZzogZGVjb2RlKCktaW5nIHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FzaHR1Y2hraW4vaWNvbnYtbGl0ZS93aWtpL1VzZS1CdWZmZXJzLXdoZW4tZGVjb2RpbmciKSx2LnNraXBEZWNv''@;'; put 'put ''ZGVXYXJuaW5nPSEwKSxMPXNlLmZyb20oIiIrKEx8fCIiKSwiYmluYXJ5IikpO3ZhciBJPXYuZ2V0RGVjb2RlcihLLEopLFI9SS53cml0ZShMKSxFPUkuZW5kKCk7cmV0dXJuIEU/UitFOlJ9LHYuZW5jb2RpbmdFeGlzdHM9ZnVuY3Rpb24oTCl7dHJ5e3JldHVybiB2LmdldENvZGVjKEwpLCEw''@;'; put 'put ''fWNhdGNoe3JldHVybiExfX0sdi50b0VuY29kaW5nPXYuZW5jb2RlLHYuZnJvbUVuY29kaW5nPXYuZGVjb2RlLHYuX2NvZGVjRGF0YUNhY2hlPXt9LHYuZ2V0Q29kZWM9ZnVuY3Rpb24oTCl7di5lbmNvZGluZ3N8fCh2LmVuY29kaW5ncz1UKDQ0NjU3KSk7Zm9yKHZhciBLPXYuX2Nhbm9uaWNh''@;'; put 'put ''bGl6ZUVuY29kaW5nKEwpLEo9e307Oyl7dmFyIEk9di5fY29kZWNEYXRhQ2FjaGVbS107aWYoSSlyZXR1cm4gSTt2YXIgUj12LmVuY29kaW5nc1tLXTtzd2l0Y2godHlwZW9mIFIpe2Nhc2Uic3RyaW5nIjpLPVI7YnJlYWs7Y2FzZSJvYmplY3QiOmZvcih2YXIgRSBpbiBSKUpbRV09UltFXTtK''@;'; put 'put ''LmVuY29kaW5nTmFtZXx8KEouZW5jb2RpbmdOYW1lPUspLEs9Ui50eXBlO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnJldHVybiBKLmVuY29kaW5nTmFtZXx8KEouZW5jb2RpbmdOYW1lPUspLEk9bmV3IFIoSix2KSx2Ll9jb2RlY0RhdGFDYWNoZVtKLmVuY29kaW5nTmFtZV09SSxJO2RlZmF1bHQ6''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyBub3QgcmVjb2duaXplZDogJyIrTCsiJyAoc2VhcmNoZWQgYXM6ICciK0srIicpIil9fX0sdi5fY2Fub25pY2FsaXplRW5jb2Rpbmc9ZnVuY3Rpb24oQil7cmV0dXJuKCIiK0IpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvOlxkezR9JHxbXjAtOWEt''@;'; put 'put ''el0vZywiIil9LHYuZ2V0RW5jb2Rlcj1mdW5jdGlvbihMLEspe3ZhciBKPXYuZ2V0Q29kZWMoTCksST1uZXcgSi5lbmNvZGVyKEssSik7cmV0dXJuIEouYm9tQXdhcmUmJksmJksuYWRkQk9NJiYoST1uZXcgay5QcmVwZW5kQk9NKEksSykpLEl9LHYuZ2V0RGVjb2Rlcj1mdW5jdGlvbihMLEsp''@;'; put 'put ''e3ZhciBKPXYuZ2V0Q29kZWMoTCksST1uZXcgSi5kZWNvZGVyKEssSik7cmV0dXJuIEouYm9tQXdhcmUmJiEoSyYmITE9PT1LLnN0cmlwQk9NKSYmKEk9bmV3IGsuU3RyaXBCT00oSSxLKSksSX07dmFyIGhlPXR5cGVvZiBwcm9jZXNzPCJ1IiYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52''@;'; put 'put ''ZXJzaW9ucy5ub2RlO2lmKGhlKXt2YXIgSD1oZS5zcGxpdCgiLiIpLm1hcChOdW1iZXIpOyhIWzBdPjB8fEhbMV0+PTEwKSYmVCg2OTMzMSkodiksVCgxOTUyNykodil9fSwyMjYwMTooV2UsemUpPT57emUucmVhZD1mdW5jdGlvbihULHNlLGssdixoZSl7dmFyIEgsQixMPTgqaGUtdi0xLEs9''@;'; put 'put ''KDE8PEwpLTEsSj1LPj4xLEk9LTcsUj1rP2hlLTE6MCxFPWs/LTE6MSx6PVRbc2UrUl07Zm9yKFIrPUUsSD16JigxPDwtSSktMSx6Pj49LUksSSs9TDtJPjA7SD0yNTYqSCtUW3NlK1JdLFIrPUUsSS09OCk7Zm9yKEI9SCYoMTw8LUkpLTEsSD4+PS1JLEkrPXY7ST4wO0I9MjU2KkIrVFtzZStS''@;'; put 'put ''XSxSKz1FLEktPTgpO2lmKDA9PT1IKUg9MS1KO2Vsc2V7aWYoSD09PUspcmV0dXJuIEI/TmFOOjEvMCooej8tMToxKTtCKz1NYXRoLnBvdygyLHYpLEgtPUp9cmV0dXJuKHo/LTE6MSkqQipNYXRoLnBvdygyLEgtdil9LHplLndyaXRlPWZ1bmN0aW9uKFQsc2Usayx2LGhlLEgpe3ZhciBCLEws''@;'; put 'put ''SyxKPTgqSC1oZS0xLEk9KDE8PEopLTEsUj1JPj4xLEU9MjM9PT1oZT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAsej12PzA6SC0xLGo9dj8xOi0xLFY9c2U8MHx8MD09PXNlJiYxL3NlPDA/MTowO2ZvcihzZT1NYXRoLmFicyhzZSksaXNOYU4oc2UpfHxzZT09PTEvMD8oTD1p''@;'; put 'put ''c05hTihzZSk/MTowLEI9SSk6KEI9TWF0aC5mbG9vcihNYXRoLmxvZyhzZSkvTWF0aC5MTjIpLHNlKihLPU1hdGgucG93KDIsLUIpKTwxJiYoQi0tLEsqPTIpLChzZSs9QitSPj0xP0UvSzpFKk1hdGgucG93KDIsMS1SKSkqSz49MiYmKEIrKyxLLz0yKSxCK1I+PUk/KEw9MCxCPUkpOkIrUj49''@;'; put 'put ''MT8oTD0oc2UqSy0xKSpNYXRoLnBvdygyLGhlKSxCKz1SKTooTD1zZSpNYXRoLnBvdygyLFItMSkqTWF0aC5wb3coMixoZSksQj0wKSk7aGU+PTg7VFtrK3pdPTI1NSZMLHorPWosTC89MjU2LGhlLT04KTtmb3IoQj1CPDxoZXxMLEorPWhlO0o+MDtUW2srel09MjU1JkIseis9aixCLz0yNTYs''@;'; put 'put ''Si09OCk7VFtrK3otal18PTEyOCpWfX0sNjY2OTg6V2U9PntXZS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKFQsc2Upe3NlJiYoVC5zdXBlcl89c2UsVC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2''@;'; put 'put ''YWx1ZTpULGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pKX06ZnVuY3Rpb24oVCxzZSl7aWYoc2Upe1Quc3VwZXJfPXNlO3ZhciBrPWZ1bmN0aW9uKCl7fTtrLnByb3RvdHlwZT1zZS5wcm90b3R5cGUsVC5wcm90b3R5cGU9bmV3IGssVC5wcm90b3R5cGUuY29u''@;'; put 'put ''c3RydWN0b3I9VH19fSw3NTgyOTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNjY2OTgpLGs9VCg2MDM4MCksdj1UKDg0MykuQnVmZmVyLGhlPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gSCgpe2suY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIz''@;'; put 'put ''MjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiBCKFIsRSl7cmV0dXJuIFI8PEV8Uj4+PjMyLUV9ZnVuY3Rpb24gTChSLEUseixqLFYsRyxXKXtyZXR1cm4gQihSKyhFJnp8fkUmaikrVitHfDAsVykrRXwwfWZ1bmN0aW9uIEsoUixFLHosaixWLEcs''@;'; put 'put ''Vyl7cmV0dXJuIEIoUisoRSZqfHomfmopK1YrR3wwLFcpK0V8MH1mdW5jdGlvbiBKKFIsRSx6LGosVixHLFcpe3JldHVybiBCKFIrKEVeel5qKStWK0d8MCxXKStFfDB9ZnVuY3Rpb24gSShSLEUseixqLFYsRyxXKXtyZXR1cm4gQihSKyh6XihFfH5qKSkrVitHfDAsVykrRXwwfXNlKEgsayks''@;'; put 'put ''SC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgUj1oZSxFPTA7RTwxNjsrK0UpUltFXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KkUpO3ZhciB6PXRoaXMuX2Esaj10aGlzLl9iLFY9dGhpcy5fYyxHPXRoaXMuX2Q7ej1MKHosaixWLEcsUlswXSwzNjE0MDkwMzYwLDcp''@;'; put 'put ''LEc9TChHLHosaixWLFJbMV0sMzkwNTQwMjcxMCwxMiksVj1MKFYsRyx6LGosUlsyXSw2MDYxMDU4MTksMTcpLGo9TChqLFYsRyx6LFJbM10sMzI1MDQ0MTk2NiwyMiksej1MKHosaixWLEcsUls0XSw0MTE4NTQ4Mzk5LDcpLEc9TChHLHosaixWLFJbNV0sMTIwMDA4MDQyNiwxMiksVj1MKFYs''@;'; put 'put ''Ryx6LGosUls2XSwyODIxNzM1OTU1LDE3KSxqPUwoaixWLEcseixSWzddLDQyNDkyNjEzMTMsMjIpLHo9TCh6LGosVixHLFJbOF0sMTc3MDAzNTQxNiw3KSxHPUwoRyx6LGosVixSWzldLDIzMzY1NTI4NzksMTIpLFY9TChWLEcseixqLFJbMTBdLDQyOTQ5MjUyMzMsMTcpLGo9TChqLFYsRyx6''@;'; put 'put ''LFJbMTFdLDIzMDQ1NjMxMzQsMjIpLHo9TCh6LGosVixHLFJbMTJdLDE4MDQ2MDM2ODIsNyksRz1MKEcseixqLFYsUlsxM10sNDI1NDYyNjE5NSwxMiksVj1MKFYsRyx6LGosUlsxNF0sMjc5Mjk2NTAwNiwxNyksej1LKHosaj1MKGosVixHLHosUlsxNV0sMTIzNjUzNTMyOSwyMiksVixHLFJb''@;'; put 'put ''MV0sNDEyOTE3MDc4Niw1KSxHPUsoRyx6LGosVixSWzZdLDMyMjU0NjU2NjQsOSksVj1LKFYsRyx6LGosUlsxMV0sNjQzNzE3NzEzLDE0KSxqPUsoaixWLEcseixSWzBdLDM5MjEwNjk5OTQsMjApLHo9Syh6LGosVixHLFJbNV0sMzU5MzQwODYwNSw1KSxHPUsoRyx6LGosVixSWzEwXSwzODAx''@;'; put 'put ''NjA4Myw5KSxWPUsoVixHLHosaixSWzE1XSwzNjM0NDg4OTYxLDE0KSxqPUsoaixWLEcseixSWzRdLDM4ODk0Mjk0NDgsMjApLHo9Syh6LGosVixHLFJbOV0sNTY4NDQ2NDM4LDUpLEc9SyhHLHosaixWLFJbMTRdLDMyNzUxNjM2MDYsOSksVj1LKFYsRyx6LGosUlszXSw0MTA3NjAzMzM1LDE0''@;'; put 'put ''KSxqPUsoaixWLEcseixSWzhdLDExNjM1MzE1MDEsMjApLHo9Syh6LGosVixHLFJbMTNdLDI4NTAyODU4MjksNSksRz1LKEcseixqLFYsUlsyXSw0MjQzNTYzNTEyLDkpLFY9SyhWLEcseixqLFJbN10sMTczNTMyODQ3MywxNCksej1KKHosaj1LKGosVixHLHosUlsxMl0sMjM2ODM1OTU2Miwy''@;'; put 'put ''MCksVixHLFJbNV0sNDI5NDU4ODczOCw0KSxHPUooRyx6LGosVixSWzhdLDIyNzIzOTI4MzMsMTEpLFY9SihWLEcseixqLFJbMTFdLDE4MzkwMzA1NjIsMTYpLGo9SihqLFYsRyx6LFJbMTRdLDQyNTk2NTc3NDAsMjMpLHo9Sih6LGosVixHLFJbMV0sMjc2Mzk3NTIzNiw0KSxHPUooRyx6LGos''@;'; put 'put ''VixSWzRdLDEyNzI4OTMzNTMsMTEpLFY9SihWLEcseixqLFJbN10sNDEzOTQ2OTY2NCwxNiksaj1KKGosVixHLHosUlsxMF0sMzIwMDIzNjY1NiwyMyksej1KKHosaixWLEcsUlsxM10sNjgxMjc5MTc0LDQpLEc9SihHLHosaixWLFJbMF0sMzkzNjQzMDA3NCwxMSksVj1KKFYsRyx6LGosUlsz''@;'; put 'put ''XSwzNTcyNDQ1MzE3LDE2KSxqPUooaixWLEcseixSWzZdLDc2MDI5MTg5LDIzKSx6PUooeixqLFYsRyxSWzldLDM2NTQ2MDI4MDksNCksRz1KKEcseixqLFYsUlsxMl0sMzg3MzE1MTQ2MSwxMSksVj1KKFYsRyx6LGosUlsxNV0sNTMwNzQyNTIwLDE2KSx6PUkoeixqPUooaixWLEcseixSWzJd''@;'; put 'put ''LDMyOTk2Mjg2NDUsMjMpLFYsRyxSWzBdLDQwOTYzMzY0NTIsNiksRz1JKEcseixqLFYsUls3XSwxMTI2ODkxNDE1LDEwKSxWPUkoVixHLHosaixSWzE0XSwyODc4NjEyMzkxLDE1KSxqPUkoaixWLEcseixSWzVdLDQyMzc1MzMyNDEsMjEpLHo9SSh6LGosVixHLFJbMTJdLDE3MDA0ODU1NzEs''@;'; put 'put ''NiksRz1JKEcseixqLFYsUlszXSwyMzk5OTgwNjkwLDEwKSxWPUkoVixHLHosaixSWzEwXSw0MjkzOTE1NzczLDE1KSxqPUkoaixWLEcseixSWzFdLDIyNDAwNDQ0OTcsMjEpLHo9SSh6LGosVixHLFJbOF0sMTg3MzMxMzM1OSw2KSxHPUkoRyx6LGosVixSWzE1XSw0MjY0MzU1NTUyLDEwKSxW''@;'; put 'put ''PUkoVixHLHosaixSWzZdLDI3MzQ3Njg5MTYsMTUpLGo9SShqLFYsRyx6LFJbMTNdLDEzMDkxNTE2NDksMjEpLHo9SSh6LGosVixHLFJbNF0sNDE0OTQ0NDIyNiw2KSxHPUkoRyx6LGosVixSWzExXSwzMTc0NzU2OTE3LDEwKSxWPUkoVixHLHosaixSWzJdLDcxODc4NzI1OSwxNSksaj1JKGos''@;'; put 'put ''VixHLHosUls5XSwzOTUxNDgxNzQ1LDIxKSx0aGlzLl9hPXRoaXMuX2ErenwwLHRoaXMuX2I9dGhpcy5fYitqfDAsdGhpcy5fYz10aGlzLl9jK1Z8MCx0aGlzLl9kPXRoaXMuX2QrR3wwfSxILnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZz''@;'; put 'put ''ZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndy''@;'; put 'put ''aXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFI9di5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFIud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksUi53cml0ZUludDMyTEUo''@;'; put 'put ''dGhpcy5fYiw0KSxSLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLFIud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLFJ9LFdlLmV4cG9ydHM9SH0sNDg2MDY6KFdlLHplLFQpPT57dmFyIHNlPVQoNjAzMDMpLGs9VCg2MDA4Mik7ZnVuY3Rpb24gdihoZSl7dGhpcy5yYW5kPWhlfHxuZXcgay5SYW5k''@;'; put 'put ''fVdlLmV4cG9ydHM9dix2LmNyZWF0ZT1mdW5jdGlvbihIKXtyZXR1cm4gbmV3IHYoSCl9LHYucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24oSCl7dmFyIEI9SC5iaXRMZW5ndGgoKSxMPU1hdGguY2VpbChCLzgpO2Rve3ZhciBLPW5ldyBzZSh0aGlzLnJhbmQuZ2VuZXJhdGUoTCkpfXdo''@;'; put 'put ''aWxlKEsuY21wKEgpPj0wKTtyZXR1cm4gS30sdi5wcm90b3R5cGUuX3JhbmRyYW5nZT1mdW5jdGlvbihILEIpe3ZhciBMPUIuc3ViKEgpO3JldHVybiBILmFkZCh0aGlzLl9yYW5kYmVsb3coTCkpfSx2LnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKEgsQixMKXt2YXIgSz1ILmJpdExlbmd0aCgp''@;'; put 'put ''LEo9c2UubW9udChIKSxJPW5ldyBzZSgxKS50b1JlZChKKTtCfHwoQj1NYXRoLm1heCgxLEsvNDh8MCkpO2Zvcih2YXIgUj1ILnN1Ym4oMSksRT0wOyFSLnRlc3RuKEUpO0UrKyk7Zm9yKHZhciB6PUguc2hybihFKSxqPVIudG9SZWQoSik7Qj4wO0ItLSl7dmFyIEc9dGhpcy5fcmFuZHJhbmdl''@;'; put 'put ''KG5ldyBzZSgyKSxSKTtMJiZMKEcpO3ZhciBXPUcudG9SZWQoSikucmVkUG93KHopO2lmKDAhPT1XLmNtcChJKSYmMCE9PVcuY21wKGopKXtmb3IodmFyIFU9MTtVPEU7VSsrKXtpZigwPT09KFc9Vy5yZWRTcXIoKSkuY21wKEkpKXJldHVybiExO2lmKDA9PT1XLmNtcChqKSlicmVha31pZihV''@;'; put 'put ''PT09RSlyZXR1cm4hMX19cmV0dXJuITB9LHYucHJvdG90eXBlLmdldERpdmlzb3I9ZnVuY3Rpb24oSCxCKXt2YXIgTD1ILmJpdExlbmd0aCgpLEs9c2UubW9udChIKSxKPW5ldyBzZSgxKS50b1JlZChLKTtCfHwoQj1NYXRoLm1heCgxLEwvNDh8MCkpO2Zvcih2YXIgST1ILnN1Ym4oMSksUj0w''@;'; put 'put ''OyFJLnRlc3RuKFIpO1IrKyk7Zm9yKHZhciBFPUguc2hybihSKSx6PUkudG9SZWQoSyk7Qj4wO0ItLSl7dmFyIGo9dGhpcy5fcmFuZHJhbmdlKG5ldyBzZSgyKSxJKSxWPUguZ2NkKGopO2lmKDAhPT1WLmNtcG4oMSkpcmV0dXJuIFY7dmFyIEc9ai50b1JlZChLKS5yZWRQb3coRSk7aWYoMCE9''@;'; put 'put ''PUcuY21wKEopJiYwIT09Ry5jbXAoeikpe2Zvcih2YXIgVz0xO1c8UjtXKyspe2lmKDA9PT0oRz1HLnJlZFNxcigpKS5jbXAoSikpcmV0dXJuIEcuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKEgpO2lmKDA9PT1HLmNtcCh6KSlicmVha31pZihXPT09UilyZXR1cm4oRz1HLnJlZFNxcigpKS5mcm9t''@;'; put 'put ''UmVkKCkuc3VibigxKS5nY2QoSCl9fXJldHVybiExfX0sNjAzMDM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlLGspeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB2KFksYil7aWYoIVkpdGhyb3cgbmV3IEVycm9yKGJ8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaGUoWSxiKXtZ''@;'; put 'put ''LnN1cGVyXz1iO3ZhciB4PWZ1bmN0aW9uKCl7fTt4LnByb3RvdHlwZT1iLnByb3RvdHlwZSxZLnByb3RvdHlwZT1uZXcgeCxZLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ZfWZ1bmN0aW9uIEgoWSxiLHgpe2lmKEguaXNCTihZKSlyZXR1cm4gWTt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1u''@;'; put 'put ''dWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09WSYmKCgibGUiPT09Ynx8ImJlIj09PWIpJiYoeD1iLGI9MTApLHRoaXMuX2luaXQoWXx8MCxifHwxMCx4fHwiYmUiKSl9dmFyIEI7Im9iamVjdCI9PXR5cGVvZiBzZT9zZS5leHBvcnRzPUg6ay5CTj1ILEguQk49SCxILndv''@;'; put 'put ''cmRTaXplPTI2O3RyeXtCPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LkJ1ZmZlcjwidSI/d2luZG93LkJ1ZmZlcjpUKDU2NjE5KS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIEwoWSxiKXt2YXIgeD1ZLmNoYXJDb2RlQXQoYik7cmV0dXJuIHg+PTY1JiZ4PD03MD94LTU1Ong+PTk3''@;'; put 'put ''JiZ4PD0xMDI/eC04Nzp4LTQ4JjE1fWZ1bmN0aW9uIEsoWSxiLHgpe3ZhciBOPUwoWSx4KTtyZXR1cm4geC0xPj1iJiYoTnw9TChZLHgtMSk8PDQpLE59ZnVuY3Rpb24gSihZLGIseCxOKXtmb3IodmFyIEY9MCxnPU1hdGgubWluKFkubGVuZ3RoLHgpLEM9YjtDPGc7QysrKXt2YXIgTT1ZLmNo''@;'; put 'put ''YXJDb2RlQXQoQyktNDg7Rio9TixGKz1NPj00OT9NLTQ5KzEwOk0+PTE3P00tMTcrMTA6TX1yZXR1cm4gRn1ILmlzQk49ZnVuY3Rpb24oYil7cmV0dXJuIGIgaW5zdGFuY2VvZiBIfHxudWxsIT09YiYmIm9iamVjdCI9PXR5cGVvZiBiJiZiLmNvbnN0cnVjdG9yLndvcmRTaXplPT09SC53b3Jk''@;'; put 'put ''U2l6ZSYmQXJyYXkuaXNBcnJheShiLndvcmRzKX0sSC5tYXg9ZnVuY3Rpb24oYix4KXtyZXR1cm4gYi5jbXAoeCk+MD9iOnh9LEgubWluPWZ1bmN0aW9uKGIseCl7cmV0dXJuIGIuY21wKHgpPDA/Yjp4fSxILnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihiLHgsTil7aWYoIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiBiKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGIseCxOKTtpZigib2JqZWN0Ij09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXRBcnJheShiLHgsTik7ImhleCI9PT14JiYoeD0xNiksdih4PT09KDB8eCkmJng+PTImJng8PTM2KTt2YXIgRj0wOyItIj09PShiPWIudG9TdHJpbmcoKS5y''@;'; put 'put ''ZXBsYWNlKC9ccysvZywiIikpWzBdJiYoRisrLHRoaXMubmVnYXRpdmU9MSksRjxiLmxlbmd0aCYmKDE2PT09eD90aGlzLl9wYXJzZUhleChiLEYsTik6KHRoaXMuX3BhcnNlQmFzZShiLHgsRiksImxlIj09PU4mJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx4LE4pKSl9LEgucHJv''@;'; put 'put ''dG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGIseCxOKXtiPDAmJih0aGlzLm5lZ2F0aXZlPTEsYj0tYiksYjw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYl0sdGhpcy5sZW5ndGg9MSk6Yjw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4''@;'; put 'put ''NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOih2KGI8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1OJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseCxOKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihiLHgsTil7aWYodigibnVtYmVyIj09dHlwZW9mIGIubGVuZ3RoKSxiLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChiLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5l''@;'; put 'put ''dyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBGPTA7Rjx0aGlzLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT0wO3ZhciBnLEMsTT0wO2lmKCJiZSI9PT1OKWZvcihGPWIubGVuZ3RoLTEsZz0wO0Y+PTA7Ri09Myl0aGlzLndvcmRzW2ddfD0oQz1iW0ZdfGJbRi0xXTw8OHxiW0YtMl08PDE2''@;'; put 'put ''KTw8TSY2NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LU0mNjcxMDg4NjMsKE0rPTI0KT49MjYmJihNLT0yNixnKyspO2Vsc2UgaWYoImxlIj09PU4pZm9yKEY9MCxnPTA7RjxiLmxlbmd0aDtGKz0zKXRoaXMud29yZHNbZ118PShDPWJbRl18YltGKzFdPDw4fGJbRisyXTw8MTYpPDxN''@;'; put 'put ''JjY3MTA4ODYzLHRoaXMud29yZHNbZysxXT1DPj4+MjYtTSY2NzEwODg2MywoTSs9MjQpPj0yNiYmKE0tPTI2LGcrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGIseCxOKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGIubGVuZ3RoLXgpLzYp''@;'; put 'put ''LHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEY9MDtGPHRoaXMubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPTA7dmFyIE0sZz0wLEM9MDtpZigiYmUiPT09Tilmb3IoRj1iLmxlbmd0aC0xO0Y+PXg7Ri09MilNPUsoYix4LEYpPDxnLHRoaXMud29yZHNbQ118PTY3''@;'; put 'put ''MTA4ODYzJk0sZz49MTg/KGctPTE4LHRoaXMud29yZHNbQys9MV18PU0+Pj4yNik6Zys9ODtlbHNlIGZvcihGPShiLmxlbmd0aC14KSUyPT0wP3grMTp4O0Y8Yi5sZW5ndGg7Ris9MilNPUsoYix4LEYpPDxnLHRoaXMud29yZHNbQ118PTY3MTA4ODYzJk0sZz49MTg/KGctPTE4LHRoaXMud29y''@;'; put 'put ''ZHNbQys9MV18PU0+Pj4yNik6Zys9ODt0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oYix4LE4pe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBGPTAsZz0xO2c8PTY3MTA4ODYzO2cqPXgpRisrO0YtLSxnPWcveHwwO2Zvcih2YXIgQz1i''@;'; put 'put ''Lmxlbmd0aC1OLE09QyVGLHk9TWF0aC5taW4oQyxDLU0pK04scD0wLFM9TjtTPHk7Uys9RilwPUooYixTLFMrRix4KSx0aGlzLmltdWxuKGcpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApO2lmKDAhPT1NKXt2YXIgUT0xO2ZvcihwPUoo''@;'; put 'put ''YixTLGIubGVuZ3RoLHgpLFM9MDtTPE07UysrKVEqPXg7dGhpcy5pbXVsbihRKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKX10aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYil7Yi53b3Jkcz1uZXcgQXJyYXko''@;'; put 'put ''dGhpcy5sZW5ndGgpO2Zvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGg7eCsrKWIud29yZHNbeF09dGhpcy53b3Jkc1t4XTtiLmxlbmd0aD10aGlzLmxlbmd0aCxiLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsYi5yZWQ9dGhpcy5yZWR9LEgucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGI9''@;'; put 'put ''bmV3IEgobnVsbCk7cmV0dXJuIHRoaXMuY29weShiKSxifSxILnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8YjspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxILnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhp''@;'; put 'put ''cy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEgucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0wKSx0aGlzfSxILnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBJPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMCJdLFI9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sRT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3''@;'; put 'put ''LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3''@;'; put 'put ''LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBqKFksYix4KXt4Lm5lZ2F0aXZlPWIubmVnYXRpdmVeWS5uZWdhdGl2ZTt2YXIgTj1ZLmxlbmd0aCtiLmxlbmd0aHwwO3gubGVuZ3Ro''@;'; put 'put ''PU4sTj1OLTF8MDt2YXIgRj0wfFkud29yZHNbMF0sZz0wfGIud29yZHNbMF0sQz1GKmcseT1DLzY3MTA4ODY0fDA7eC53b3Jkc1swXT02NzEwODg2MyZDO2Zvcih2YXIgcD0xO3A8TjtwKyspe2Zvcih2YXIgUz15Pj4+MjYsUT02NzEwODg2MyZ5LHJlPU1hdGgubWluKHAsYi5sZW5ndGgtMSks''@;'; put 'put ''ZmU9TWF0aC5tYXgoMCxwLVkubGVuZ3RoKzEpO2ZlPD1yZTtmZSsrKVMrPShDPShGPTB8WS53b3Jkc1twLWZlfDBdKSooZz0wfGIud29yZHNbZmVdKStRKS82NzEwODg2NHwwLFE9NjcxMDg4NjMmQzt4LndvcmRzW3BdPTB8USx5PTB8U31yZXR1cm4gMCE9PXk/eC53b3Jkc1twXT0wfHk6eC5s''@;'; put 'put ''ZW5ndGgtLSx4LnN0cmlwKCl9SC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oYix4KXt2YXIgTjtpZih4PTB8eHx8MSwxNj09PShiPWJ8fDEwKXx8ImhleCI9PT1iKXtOPSIiO2Zvcih2YXIgRj0wLGc9MCxDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBNPXRoaXMud29yZHNbQ10seT0o''@;'; put 'put ''MTY3NzcyMTUmKE08PEZ8ZykpLnRvU3RyaW5nKDE2KTtOPTAhPShnPU0+Pj4yNC1GJjE2Nzc3MjE1KXx8QyE9PXRoaXMubGVuZ3RoLTE/SVs2LXkubGVuZ3RoXSt5K046eStOLChGKz0yKT49MjYmJihGLT0yNixDLS0pfWZvcigwIT09ZyYmKE49Zy50b1N0cmluZygxNikrTik7Ti5sZW5ndGgl''@;'; put 'put ''eCE9MDspTj0iMCIrTjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihOPSItIitOKSxOfWlmKGI9PT0oMHxiKSYmYj49MiYmYjw9MzYpe3ZhciBwPVJbYl0sUz1FW2JdO049IiI7dmFyIFE9dGhpcy5jbG9uZSgpO2ZvcihRLm5lZ2F0aXZlPTA7IVEuaXNaZXJvKCk7KXt2YXIgcmU9US5tb2Ru''@;'; put 'put ''KFMpLnRvU3RyaW5nKGIpO049KFE9US5pZGl2bihTKSkuaXNaZXJvKCk/cmUrTjpJW3AtcmUubGVuZ3RoXStyZStOfWZvcih0aGlzLmlzWmVybygpJiYoTj0iMCIrTik7Ti5sZW5ndGgleCE9MDspTj0iMCIrTjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihOPSItIitOKSxOfXYoITEsIkJh''@;'; put 'put ''c2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sSC5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Yis9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRz''@;'; put 'put ''WzJdP2IrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZ2KCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tYjpifSxILnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LEgucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHYodHlwZW9mIEI8InUiKSx0aGlzLnRvQXJyYXlMaWtlKEIsYix4KX0sSC5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLnRvQXJyYXlM''@;'; put 'put ''aWtlKEFycmF5LGIseCl9LEgucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGIseCxOKXt2YXIgRj10aGlzLmJ5dGVMZW5ndGgoKSxnPU58fE1hdGgubWF4KDEsRik7dihGPD1nLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksdihnPjAsIlJlcXVlc3RlZCBh''@;'; put 'put ''cnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgeSxwLEM9ImxlIj09PXgsTT1uZXcgYihnKSxTPXRoaXMuY2xvbmUoKTtpZihDKXtmb3IocD0wOyFTLmlzWmVybygpO3ArKyl5PVMuYW5kbG4oMjU1KSxTLml1c2hybig4KSxNW3BdPXk7Zm9yKDtwPGc7cCsrKU1bcF09MH1lbHNl''@;'; put 'put ''e2ZvcihwPTA7cDxnLUY7cCsrKU1bcF09MDtmb3IocD0wOyFTLmlzWmVybygpO3ArKyl5PVMuYW5kbG4oMjU1KSxTLml1c2hybig4KSxNW2ctcC0xXT15fXJldHVybiBNfSxILnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oYil7cmV0dXJuIDMyLU1hdGguY2x6MzIo''@;'; put 'put ''Yil9OmZ1bmN0aW9uKGIpe3ZhciB4PWIsTj0wO3JldHVybiB4Pj00MDk2JiYoTis9MTMseD4+Pj0xMykseD49NjQmJihOKz03LHg+Pj49NykseD49OCYmKE4rPTQseD4+Pj00KSx4Pj0yJiYoTis9Mix4Pj4+PTIpLE4reH0sSC5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGIpe2lmKDA9''@;'; put 'put ''PT1iKXJldHVybiAyNjt2YXIgeD1iLE49MDtyZXR1cm4gODE5MSZ4fHwoTis9MTMseD4+Pj0xMyksMTI3Jnh8fChOKz03LHg+Pj49NyksMTUmeHx8KE4rPTQseD4+Pj00KSwzJnh8fChOKz0yLHg+Pj49MiksMSZ4fHxOKyssTn0sSC5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IHg9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkreH0sSC5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgYj0wLHg9MDt4PHRoaXMubGVuZ3RoO3gr''@;'; put 'put ''Kyl7dmFyIE49dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t4XSk7aWYoYis9TiwyNiE9PU4pYnJlYWt9cmV0dXJuIGJ9LEgucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LEgucHJvdG90eXBlLnRvVHdvcz1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihiKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LEgucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRlc3RuKGItMSk/dGhpcy5ub3RuKGIpLmlhZGRuKDEpLmluZWcoKTp0aGlz''@;'; put 'put ''LmNsb25lKCl9LEgucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxILnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sSC5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVy''@;'; put 'put ''bygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sSC5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGIubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB4PTA7eDxiLmxlbmd0aDt4KyspdGhpcy53b3Jkc1t4XT10aGlzLndvcmRz''@;'; put 'put ''W3hdfGIud29yZHNbeF07cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1b3IoYil9LEgucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5i''@;'; put 'put ''Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGIpOmIuY2xvbmUoKS5pb3IodGhpcyl9LEgucHJvdG90eXBlLnVvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoYik6Yi5jbG9uZSgpLml1b3IodGhpcyl9LEgucHJvdG90eXBlLml1YW5k''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3ZhciB4O3g9dGhpcy5sZW5ndGg+Yi5sZW5ndGg/Yjp0aGlzO2Zvcih2YXIgTj0wO048eC5sZW5ndGg7TisrKXRoaXMud29yZHNbTl09dGhpcy53b3Jkc1tOXSZiLndvcmRzW05dO3JldHVybiB0aGlzLmxlbmd0aD14Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LEgucHJvdG90''@;'; put 'put ''eXBlLmlhbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09KHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoYil9LEgucHJvdG90eXBlLmFuZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoYik6Yi5jbG9uZSgpLmlh''@;'; put 'put ''bmQodGhpcyl9LEgucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChiKTpiLmNsb25lKCkuaXVhbmQodGhpcyl9LEgucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGIpe3ZhciB4LE47dGhpcy5sZW5ndGg+Yi5s''@;'; put 'put ''ZW5ndGg/KHg9dGhpcyxOPWIpOih4PWIsTj10aGlzKTtmb3IodmFyIEY9MDtGPE4ubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXgud29yZHNbRl1eTi53b3Jkc1tGXTtpZih0aGlzIT09eClmb3IoO0Y8eC5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09eC53b3Jkc1tGXTtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg9eC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1eG9yKGIpfSxILnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVu''@;'; put 'put ''Z3RoP3RoaXMuY2xvbmUoKS5peG9yKGIpOmIuY2xvbmUoKS5peG9yKHRoaXMpfSxILnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoYik6Yi5jbG9uZSgpLml1eG9yKHRoaXMpfSxILnByb3RvdHlwZS5pbm90''@;'; put 'put ''bj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9MHxNYXRoLmNlaWwoYi8yNiksTj1iJTI2O3RoaXMuX2V4cGFuZCh4KSxOPjAmJngtLTtmb3IodmFyIEY9MDtGPHg7RisrKXRoaXMud29yZHNbRl09NjcxMDg4NjMmfnRoaXMud29yZHNbRl07cmV0dXJuIE4+''@;'; put 'put ''MCYmKHRoaXMud29yZHNbRl09fnRoaXMud29yZHNbRl0mNjcxMDg4NjM+PjI2LU4pLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUubm90bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGIpfSxILnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGIseCl7digibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIGImJmI+PTApO3ZhciBOPWIvMjZ8MCxGPWIlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChOKzEpLHRoaXMud29yZHNbTl09eD90aGlzLndvcmRzW05dfDE8PEY6dGhpcy53b3Jkc1tOXSZ+KDE8PEYpLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihiKXt2YXIg''@;'; put 'put ''eCxOLEY7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAseD10aGlzLmlzdWIoYiksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gYi5uZWdh''@;'; put 'put ''dGl2ZT0wLHg9dGhpcy5pc3ViKGIpLGIubmVnYXRpdmU9MSx4Ll9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhOPXRoaXMsRj1iKTooTj1iLEY9dGhpcyk7Zm9yKHZhciBnPTAsQz0wO0M8Ri5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKHg9KDB8Ti53b3Jkc1tD''@;'; put 'put ''XSkrKDB8Ri53b3Jkc1tDXSkrZyksZz14Pj4+MjY7Zm9yKDswIT09ZyYmQzxOLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT02NzEwODg2MyYoeD0oMHxOLndvcmRzW0NdKStnKSxnPXg+Pj4yNjtpZih0aGlzLmxlbmd0aD1OLmxlbmd0aCwwIT09Zyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1n''@;'; put 'put ''LHRoaXMubGVuZ3RoKys7ZWxzZSBpZihOIT09dGhpcylmb3IoO0M8Ti5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109Ti53b3Jkc1tDXTtyZXR1cm4gdGhpc30sSC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIpe3ZhciB4O3JldHVybiAwIT09Yi5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/''@;'; put 'put ''KGIubmVnYXRpdmU9MCx4PXRoaXMuc3ViKGIpLGIubmVnYXRpdmVePTEseCk6MD09PWIubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAseD1iLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEseCk6dGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlh''@;'; put 'put ''ZGQoYik6Yi5jbG9uZSgpLmlhZGQodGhpcyl9LEgucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oYil7aWYoMCE9PWIubmVnYXRpdmUpe2IubmVnYXRpdmU9MDt2YXIgeD10aGlzLmlhZGQoYik7cmV0dXJuIGIubmVnYXRpdmU9MSx4Ll9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJl''@;'; put 'put ''dHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBGLGcsTj10aGlzLmNtcChiKTtpZigwPT09TilyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7Tj4wPyhGPXRo''@;'; put 'put ''aXMsZz1iKTooRj1iLGc9dGhpcyk7Zm9yKHZhciBDPTAsTT0wO008Zy5sZW5ndGg7TSsrKUM9KHg9KDB8Ri53b3Jkc1tNXSktKDB8Zy53b3Jkc1tNXSkrQyk+PjI2LHRoaXMud29yZHNbTV09NjcxMDg4NjMmeDtmb3IoOzAhPT1DJiZNPEYubGVuZ3RoO00rKylDPSh4PSgwfEYud29yZHNbTV0p''@;'; put 'put ''K0MpPj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJng7aWYoMD09PUMmJk08Ri5sZW5ndGgmJkYhPT10aGlzKWZvcig7TTxGLmxlbmd0aDtNKyspdGhpcy53b3Jkc1tNXT1GLndvcmRzW01dO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxNKSxGIT09dGhpcyYmKHRo''@;'; put 'put ''aXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGIpfTt2YXIgVj1mdW5jdGlvbihiLHgsTil7dmFyIHkscCxTLEY9Yi53b3JkcyxnPXgud29yZHMsQz1OLndvcmRzLE09MCxRPTB8RlswXSxyZT04''@;'; put 'put ''MTkxJlEsZmU9UT4+PjEzLG1lPTB8RlsxXSxrZT04MTkxJm1lLFRlPW1lPj4+MTMsUGU9MHxGWzJdLEZlPTgxOTEmUGUsTmU9UGU+Pj4xMyxMZT0wfEZbM10sQmU9ODE5MSZMZSxIZT1MZT4+PjEzLFFlPTB8Rls0XSxtdD04MTkxJlFlLEtlPVFlPj4+MTMsd2U9MHxGWzVdLEllPTgxOTEmd2Us''@;'; put 'put ''T2U9d2U+Pj4xMyxldD0wfEZbNl0sbnQ9ODE5MSZldCxxZT1ldD4+PjEzLGh0PTB8Rls3XSxFZT04MTkxJmh0LERlPWh0Pj4+MTMsJGU9MHxGWzhdLGF0PTgxOTEmJGUsY3Q9JGU+Pj4xMyxPdD0wfEZbOV0sUHQ9ODE5MSZPdCxBdD1PdD4+PjEzLEp0PTB8Z1swXSxtbj04MTkxJkp0LE50PUp0''@;'; put 'put ''Pj4+MTMsYm49MHxnWzFdLEduPTgxOTEmYm4sb249Ym4+Pj4xMywkbj0wfGdbMl0sTm49ODE5MSYkbixwdD0kbj4+PjEzLHBuPTB8Z1szXSxobj04MTkxJnBuLEN0PXBuPj4+MTMsZW49MHxnWzRdLF90PTgxOTEmZW4sVnQ9ZW4+Pj4xMyxfbj0wfGdbNV0sb3Q9ODE5MSZfbixJdD1fbj4+PjEz''@;'; put 'put ''LG5uPTB8Z1s2XSxEdD04MTkxJm5uLHZ0PW5uPj4+MTMsR3Q9MHxnWzddLExuPTgxOTEmR3QsenQ9R3Q+Pj4xMyxNbj0wfGdbOF0sVG49ODE5MSZNbixzbj1Nbj4+PjEzLEJuPTB8Z1s5XSxGbj04MTkxJkJuLHF0PUJuPj4+MTM7Ti5uZWdhdGl2ZT1iLm5lZ2F0aXZlXngubmVnYXRpdmUsTi5s''@;'; put 'put ''ZW5ndGg9MTk7dmFyIEhuPShNKyh5PU1hdGguaW11bChyZSxtbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwocmUsTnQpKStNYXRoLmltdWwoZmUsbW4pfDApKTw8MTMpfDA7TT0oKFM9TWF0aC5pbXVsKGZlLE50KSkrKHA+Pj4xMyl8MCkrKEhuPj4+MjYpfDAsSG4mPTY3MTA4ODYzLHk9''@;'; put 'put ''TWF0aC5pbXVsKGtlLG1uKSxwPShwPU1hdGguaW11bChrZSxOdCkpK01hdGguaW11bChUZSxtbil8MCxTPU1hdGguaW11bChUZSxOdCk7dmFyIGlpPShNKyh5PXkrTWF0aC5pbXVsKHJlLEduKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsb24pfDApK01hdGguaW11bChmZSxH''@;'; put 'put ''bil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxvbil8MCkrKHA+Pj4xMyl8MCkrKGlpPj4+MjYpfDAsaWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEZlLG1uKSxwPShwPU1hdGguaW11bChGZSxOdCkpK01hdGguaW11bChOZSxtbil8MCxTPU1hdGguaW11bChOZSxOdCkseT15K01h''@;'; put 'put ''dGguaW11bChrZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLG9uKXwwKStNYXRoLmltdWwoVGUsR24pfDAsUz1TK01hdGguaW11bChUZSxvbil8MDt2YXIgY249KE0rKHk9eStNYXRoLmltdWwocmUsTm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSxwdCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGZlLE5uKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLHB0KXwwKSsocD4+PjEzKXwwKSsoY24+Pj4yNil8MCxjbiY9NjcxMDg4NjMseT1NYXRoLmltdWwoQmUsbW4pLHA9KHA9TWF0aC5pbXVsKEJlLE50KSkrTWF0aC5pbXVsKEhlLG1uKXwwLFM9TWF0aC5pbXVsKEhlLE50''@;'; put 'put ''KSx5PXkrTWF0aC5pbXVsKEZlLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsb24pfDApK01hdGguaW11bChOZSxHbil8MCxTPVMrTWF0aC5pbXVsKE5lLG9uKXwwLHk9eStNYXRoLmltdWwoa2UsTm4pfDAscD0ocD1wK01hdGguaW11bChrZSxwdCl8MCkrTWF0aC5pbXVsKFRlLE5uKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoVGUscHQpfDA7dmFyIGpuPShNKyh5PXkrTWF0aC5pbXVsKHJlLGhuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsQ3QpfDApK01hdGguaW11bChmZSxobil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxDdCl8MCkrKHA+Pj4xMyl8MCkrKGpu''@;'; put 'put ''Pj4+MjYpfDAsam4mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKG10LG1uKSxwPShwPU1hdGguaW11bChtdCxOdCkpK01hdGguaW11bChLZSxtbil8MCxTPU1hdGguaW11bChLZSxOdCkseT15K01hdGguaW11bChCZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEJlLG9uKXwwKStNYXRoLmltdWwoSGUs''@;'; put 'put ''R24pfDAsUz1TK01hdGguaW11bChIZSxvbil8MCx5PXkrTWF0aC5pbXVsKEZlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUscHQpfDApK01hdGguaW11bChOZSxObil8MCxTPVMrTWF0aC5pbXVsKE5lLHB0KXwwLHk9eStNYXRoLmltdWwoa2UsaG4pfDAscD0ocD1wK01hdGguaW11bChrZSxD''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKFRlLGhuKXwwLFM9UytNYXRoLmltdWwoVGUsQ3QpfDA7dmFyIFhyPShNKyh5PXkrTWF0aC5pbXVsKHJlLF90KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsVnQpfDApK01hdGguaW11bChmZSxfdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11''@;'; put 'put ''bChmZSxWdCl8MCkrKHA+Pj4xMyl8MCkrKFhyPj4+MjYpfDAsWHImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEllLG1uKSxwPShwPU1hdGguaW11bChJZSxOdCkpK01hdGguaW11bChPZSxtbil8MCxTPU1hdGguaW11bChPZSxOdCkseT15K01hdGguaW11bChtdCxHbil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKG10LG9uKXwwKStNYXRoLmltdWwoS2UsR24pfDAsUz1TK01hdGguaW11bChLZSxvbil8MCx5PXkrTWF0aC5pbXVsKEJlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUscHQpfDApK01hdGguaW11bChIZSxObil8MCxTPVMrTWF0aC5pbXVsKEhlLHB0KXwwLHk9eStNYXRoLmltdWwoRmUs''@;'; put 'put ''aG4pfDAscD0ocD1wK01hdGguaW11bChGZSxDdCl8MCkrTWF0aC5pbXVsKE5lLGhuKXwwLFM9UytNYXRoLmltdWwoTmUsQ3QpfDAseT15K01hdGguaW11bChrZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLFZ0KXwwKStNYXRoLmltdWwoVGUsX3QpfDAsUz1TK01hdGguaW11bChUZSxWdCl8''@;'; put 'put ''MDt2YXIgdmk9KE0rKHk9eStNYXRoLmltdWwocmUsb3QpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSxJdCl8MCkrTWF0aC5pbXVsKGZlLG90KXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLEl0KXwwKSsocD4+PjEzKXwwKSsodmk+Pj4yNil8MCx2aSY9NjcxMDg4''@;'; put 'put ''NjMseT1NYXRoLmltdWwobnQsbW4pLHA9KHA9TWF0aC5pbXVsKG50LE50KSkrTWF0aC5pbXVsKHFlLG1uKXwwLFM9TWF0aC5pbXVsKHFlLE50KSx5PXkrTWF0aC5pbXVsKEllLEduKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsb24pfDApK01hdGguaW11bChPZSxHbil8MCxTPVMrTWF0aC5pbXVs''@;'; put 'put ''KE9lLG9uKXwwLHk9eStNYXRoLmltdWwobXQsTm4pfDAscD0ocD1wK01hdGguaW11bChtdCxwdCl8MCkrTWF0aC5pbXVsKEtlLE5uKXwwLFM9UytNYXRoLmltdWwoS2UscHQpfDAseT15K01hdGguaW11bChCZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEJlLEN0KXwwKStNYXRoLmltdWwoSGUs''@;'; put 'put ''aG4pfDAsUz1TK01hdGguaW11bChIZSxDdCl8MCx5PXkrTWF0aC5pbXVsKEZlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsVnQpfDApK01hdGguaW11bChOZSxfdCl8MCxTPVMrTWF0aC5pbXVsKE5lLFZ0KXwwLHk9eStNYXRoLmltdWwoa2Usb3QpfDAscD0ocD1wK01hdGguaW11bChrZSxJ''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKFRlLG90KXwwLFM9UytNYXRoLmltdWwoVGUsSXQpfDA7dmFyIEVyPShNKyh5PXkrTWF0aC5pbXVsKHJlLER0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsdnQpfDApK01hdGguaW11bChmZSxEdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11''@;'; put 'put ''bChmZSx2dCl8MCkrKHA+Pj4xMyl8MCkrKEVyPj4+MjYpfDAsRXImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEVlLG1uKSxwPShwPU1hdGguaW11bChFZSxOdCkpK01hdGguaW11bChEZSxtbil8MCxTPU1hdGguaW11bChEZSxOdCkseT15K01hdGguaW11bChudCxHbil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKG50LG9uKXwwKStNYXRoLmltdWwocWUsR24pfDAsUz1TK01hdGguaW11bChxZSxvbil8MCx5PXkrTWF0aC5pbXVsKEllLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUscHQpfDApK01hdGguaW11bChPZSxObil8MCxTPVMrTWF0aC5pbXVsKE9lLHB0KXwwLHk9eStNYXRoLmltdWwobXQs''@;'; put 'put ''aG4pfDAscD0ocD1wK01hdGguaW11bChtdCxDdCl8MCkrTWF0aC5pbXVsKEtlLGhuKXwwLFM9UytNYXRoLmltdWwoS2UsQ3QpfDAseT15K01hdGguaW11bChCZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEJlLFZ0KXwwKStNYXRoLmltdWwoSGUsX3QpfDAsUz1TK01hdGguaW11bChIZSxWdCl8''@;'; put 'put ''MCx5PXkrTWF0aC5pbXVsKEZlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsSXQpfDApK01hdGguaW11bChOZSxvdCl8MCxTPVMrTWF0aC5pbXVsKE5lLEl0KXwwLHk9eStNYXRoLmltdWwoa2UsRHQpfDAscD0ocD1wK01hdGguaW11bChrZSx2dCl8MCkrTWF0aC5pbXVsKFRlLER0KXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoVGUsdnQpfDA7dmFyIFlpPShNKyh5PXkrTWF0aC5pbXVsKHJlLExuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsenQpfDApK01hdGguaW11bChmZSxMbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSx6dCl8MCkrKHA+Pj4xMyl8MCkrKFlp''@;'; put 'put ''Pj4+MjYpfDAsWWkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKGF0LG1uKSxwPShwPU1hdGguaW11bChhdCxOdCkpK01hdGguaW11bChjdCxtbil8MCxTPU1hdGguaW11bChjdCxOdCkseT15K01hdGguaW11bChFZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEVlLG9uKXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''R24pfDAsUz1TK01hdGguaW11bChEZSxvbil8MCx5PXkrTWF0aC5pbXVsKG50LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwobnQscHQpfDApK01hdGguaW11bChxZSxObil8MCxTPVMrTWF0aC5pbXVsKHFlLHB0KXwwLHk9eStNYXRoLmltdWwoSWUsaG4pfDAscD0ocD1wK01hdGguaW11bChJZSxD''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKE9lLGhuKXwwLFM9UytNYXRoLmltdWwoT2UsQ3QpfDAseT15K01hdGguaW11bChtdCxfdCl8MCxwPShwPXArTWF0aC5pbXVsKG10LFZ0KXwwKStNYXRoLmltdWwoS2UsX3QpfDAsUz1TK01hdGguaW11bChLZSxWdCl8MCx5PXkrTWF0aC5pbXVsKEJlLG90KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoQmUsSXQpfDApK01hdGguaW11bChIZSxvdCl8MCxTPVMrTWF0aC5pbXVsKEhlLEl0KXwwLHk9eStNYXRoLmltdWwoRmUsRHQpfDAscD0ocD1wK01hdGguaW11bChGZSx2dCl8MCkrTWF0aC5pbXVsKE5lLER0KXwwLFM9UytNYXRoLmltdWwoTmUsdnQpfDAseT15K01h''@;'; put 'put ''dGguaW11bChrZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHp0KXwwKStNYXRoLmltdWwoVGUsTG4pfDAsUz1TK01hdGguaW11bChUZSx6dCl8MDt2YXIgSnI9KE0rKHk9eStNYXRoLmltdWwocmUsVG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChyZSxzbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGZlLFRuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGZlLHNuKXwwKSsocD4+PjEzKXwwKSsoSnI+Pj4yNil8MCxKciY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsbW4pLHA9KHA9TWF0aC5pbXVsKFB0LE50KSkrTWF0aC5pbXVsKEF0LG1uKXwwLFM9TWF0aC5pbXVsKEF0LE50''@;'; put 'put ''KSx5PXkrTWF0aC5pbXVsKGF0LEduKXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsb24pfDApK01hdGguaW11bChjdCxHbil8MCxTPVMrTWF0aC5pbXVsKGN0LG9uKXwwLHk9eStNYXRoLmltdWwoRWUsTm4pfDAscD0ocD1wK01hdGguaW11bChFZSxwdCl8MCkrTWF0aC5pbXVsKERlLE5uKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoRGUscHQpfDAseT15K01hdGguaW11bChudCxobil8MCxwPShwPXArTWF0aC5pbXVsKG50LEN0KXwwKStNYXRoLmltdWwocWUsaG4pfDAsUz1TK01hdGguaW11bChxZSxDdCl8MCx5PXkrTWF0aC5pbXVsKEllLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsVnQpfDApK01h''@;'; put 'put ''dGguaW11bChPZSxfdCl8MCxTPVMrTWF0aC5pbXVsKE9lLFZ0KXwwLHk9eStNYXRoLmltdWwobXQsb3QpfDAscD0ocD1wK01hdGguaW11bChtdCxJdCl8MCkrTWF0aC5pbXVsKEtlLG90KXwwLFM9UytNYXRoLmltdWwoS2UsSXQpfDAseT15K01hdGguaW11bChCZSxEdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEJlLHZ0KXwwKStNYXRoLmltdWwoSGUsRHQpfDAsUz1TK01hdGguaW11bChIZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEZlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsenQpfDApK01hdGguaW11bChOZSxMbil8MCxTPVMrTWF0aC5pbXVsKE5lLHp0KXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''a2UsVG4pfDAscD0ocD1wK01hdGguaW11bChrZSxzbil8MCkrTWF0aC5pbXVsKFRlLFRuKXwwLFM9UytNYXRoLmltdWwoVGUsc24pfDA7dmFyIGFvPShNKyh5PXkrTWF0aC5pbXVsKHJlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUscXQpfDApK01hdGguaW11bChmZSxG''@;'; put 'put ''bil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGFvPj4+MjYpfDAsYW8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LEduKSxwPShwPU1hdGguaW11bChQdCxvbikpK01hdGguaW11bChBdCxHbil8MCxTPU1hdGguaW11bChBdCxvbikseT15K01h''@;'; put 'put ''dGguaW11bChhdCxObil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHB0KXwwKStNYXRoLmltdWwoY3QsTm4pfDAsUz1TK01hdGguaW11bChjdCxwdCl8MCx5PXkrTWF0aC5pbXVsKEVlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsQ3QpfDApK01hdGguaW11bChEZSxobil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKERlLEN0KXwwLHk9eStNYXRoLmltdWwobnQsX3QpfDAscD0ocD1wK01hdGguaW11bChudCxWdCl8MCkrTWF0aC5pbXVsKHFlLF90KXwwLFM9UytNYXRoLmltdWwocWUsVnQpfDAseT15K01hdGguaW11bChJZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLEl0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''T2Usb3QpfDAsUz1TK01hdGguaW11bChPZSxJdCl8MCx5PXkrTWF0aC5pbXVsKG10LER0KXwwLHA9KHA9cCtNYXRoLmltdWwobXQsdnQpfDApK01hdGguaW11bChLZSxEdCl8MCxTPVMrTWF0aC5pbXVsKEtlLHZ0KXwwLHk9eStNYXRoLmltdWwoQmUsTG4pfDAscD0ocD1wK01hdGguaW11bChC''@;'; put 'put ''ZSx6dCl8MCkrTWF0aC5pbXVsKEhlLExuKXwwLFM9UytNYXRoLmltdWwoSGUsenQpfDAseT15K01hdGguaW11bChGZSxUbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHNuKXwwKStNYXRoLmltdWwoTmUsVG4pfDAsUz1TK01hdGguaW11bChOZSxzbil8MDt2YXIgQnI9KE0rKHk9eStNYXRoLmlt''@;'; put 'put ''dWwoa2UsRm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChrZSxxdCl8MCkrTWF0aC5pbXVsKFRlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKFRlLHF0KXwwKSsocD4+PjEzKXwwKSsoQnI+Pj4yNil8MCxCciY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsTm4pLHA9''@;'; put 'put ''KHA9TWF0aC5pbXVsKFB0LHB0KSkrTWF0aC5pbXVsKEF0LE5uKXwwLFM9TWF0aC5pbXVsKEF0LHB0KSx5PXkrTWF0aC5pbXVsKGF0LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsQ3QpfDApK01hdGguaW11bChjdCxobil8MCxTPVMrTWF0aC5pbXVsKGN0LEN0KXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''RWUsX3QpfDAscD0ocD1wK01hdGguaW11bChFZSxWdCl8MCkrTWF0aC5pbXVsKERlLF90KXwwLFM9UytNYXRoLmltdWwoRGUsVnQpfDAseT15K01hdGguaW11bChudCxvdCl8MCxwPShwPXArTWF0aC5pbXVsKG50LEl0KXwwKStNYXRoLmltdWwocWUsb3QpfDAsUz1TK01hdGguaW11bChxZSxJ''@;'; put 'put ''dCl8MCx5PXkrTWF0aC5pbXVsKEllLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsdnQpfDApK01hdGguaW11bChPZSxEdCl8MCxTPVMrTWF0aC5pbXVsKE9lLHZ0KXwwLHk9eStNYXRoLmltdWwobXQsTG4pfDAscD0ocD1wK01hdGguaW11bChtdCx6dCl8MCkrTWF0aC5pbXVsKEtlLExuKXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoS2UsenQpfDAseT15K01hdGguaW11bChCZSxUbil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHNuKXwwKStNYXRoLmltdWwoSGUsVG4pfDAsUz1TK01hdGguaW11bChIZSxzbil8MDt2YXIgSmk9KE0rKHk9eStNYXRoLmltdWwoRmUsRm4pfDApfDApKygoODE5MSYocD0o''@;'; put 'put ''cD1wK01hdGguaW11bChGZSxxdCl8MCkrTWF0aC5pbXVsKE5lLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKE5lLHF0KXwwKSsocD4+PjEzKXwwKSsoSmk+Pj4yNil8MCxKaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsaG4pLHA9KHA9TWF0aC5pbXVsKFB0LEN0KSkrTWF0aC5p''@;'; put 'put ''bXVsKEF0LGhuKXwwLFM9TWF0aC5pbXVsKEF0LEN0KSx5PXkrTWF0aC5pbXVsKGF0LF90KXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsVnQpfDApK01hdGguaW11bChjdCxfdCl8MCxTPVMrTWF0aC5pbXVsKGN0LFZ0KXwwLHk9eStNYXRoLmltdWwoRWUsb3QpfDAscD0ocD1wK01hdGguaW11bChF''@;'; put 'put ''ZSxJdCl8MCkrTWF0aC5pbXVsKERlLG90KXwwLFM9UytNYXRoLmltdWwoRGUsSXQpfDAseT15K01hdGguaW11bChudCxEdCl8MCxwPShwPXArTWF0aC5pbXVsKG50LHZ0KXwwKStNYXRoLmltdWwocWUsRHQpfDAsUz1TK01hdGguaW11bChxZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEllLExuKXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoSWUsenQpfDApK01hdGguaW11bChPZSxMbil8MCxTPVMrTWF0aC5pbXVsKE9lLHp0KXwwLHk9eStNYXRoLmltdWwobXQsVG4pfDAscD0ocD1wK01hdGguaW11bChtdCxzbil8MCkrTWF0aC5pbXVsKEtlLFRuKXwwLFM9UytNYXRoLmltdWwoS2Usc24pfDA7dmFy''@;'; put 'put ''IHRvPShNKyh5PXkrTWF0aC5pbXVsKEJlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoQmUscXQpfDApK01hdGguaW11bChIZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChIZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKHRvPj4+MjYpfDAsdG8mPTY3MTA4ODYzLHk9''@;'; put 'put ''TWF0aC5pbXVsKFB0LF90KSxwPShwPU1hdGguaW11bChQdCxWdCkpK01hdGguaW11bChBdCxfdCl8MCxTPU1hdGguaW11bChBdCxWdCkseT15K01hdGguaW11bChhdCxvdCl8MCxwPShwPXArTWF0aC5pbXVsKGF0LEl0KXwwKStNYXRoLmltdWwoY3Qsb3QpfDAsUz1TK01hdGguaW11bChjdCxJ''@;'; put 'put ''dCl8MCx5PXkrTWF0aC5pbXVsKEVlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsdnQpfDApK01hdGguaW11bChEZSxEdCl8MCxTPVMrTWF0aC5pbXVsKERlLHZ0KXwwLHk9eStNYXRoLmltdWwobnQsTG4pfDAscD0ocD1wK01hdGguaW11bChudCx6dCl8MCkrTWF0aC5pbXVsKHFlLExuKXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwocWUsenQpfDAseT15K01hdGguaW11bChJZSxUbil8MCxwPShwPXArTWF0aC5pbXVsKEllLHNuKXwwKStNYXRoLmltdWwoT2UsVG4pfDAsUz1TK01hdGguaW11bChPZSxzbil8MDt2YXIgY289KE0rKHk9eStNYXRoLmltdWwobXQsRm4pfDApfDApKygoODE5MSYocD0o''@;'; put 'put ''cD1wK01hdGguaW11bChtdCxxdCl8MCkrTWF0aC5pbXVsKEtlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKEtlLHF0KXwwKSsocD4+PjEzKXwwKSsoY28+Pj4yNil8MCxjbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsb3QpLHA9KHA9TWF0aC5pbXVsKFB0LEl0KSkrTWF0aC5p''@;'; put 'put ''bXVsKEF0LG90KXwwLFM9TWF0aC5pbXVsKEF0LEl0KSx5PXkrTWF0aC5pbXVsKGF0LER0KXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsdnQpfDApK01hdGguaW11bChjdCxEdCl8MCxTPVMrTWF0aC5pbXVsKGN0LHZ0KXwwLHk9eStNYXRoLmltdWwoRWUsTG4pfDAscD0ocD1wK01hdGguaW11bChF''@;'; put 'put ''ZSx6dCl8MCkrTWF0aC5pbXVsKERlLExuKXwwLFM9UytNYXRoLmltdWwoRGUsenQpfDAseT15K01hdGguaW11bChudCxUbil8MCxwPShwPXArTWF0aC5pbXVsKG50LHNuKXwwKStNYXRoLmltdWwocWUsVG4pfDAsUz1TK01hdGguaW11bChxZSxzbil8MDt2YXIgbG89KE0rKHk9eStNYXRoLmlt''@;'; put 'put ''dWwoSWUsRm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChJZSxxdCl8MCkrTWF0aC5pbXVsKE9lLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKE9lLHF0KXwwKSsocD4+PjEzKXwwKSsobG8+Pj4yNil8MCxsbyY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsRHQpLHA9''@;'; put 'put ''KHA9TWF0aC5pbXVsKFB0LHZ0KSkrTWF0aC5pbXVsKEF0LER0KXwwLFM9TWF0aC5pbXVsKEF0LHZ0KSx5PXkrTWF0aC5pbXVsKGF0LExuKXwwLHA9KHA9cCtNYXRoLmltdWwoYXQsenQpfDApK01hdGguaW11bChjdCxMbil8MCxTPVMrTWF0aC5pbXVsKGN0LHp0KXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''RWUsVG4pfDAscD0ocD1wK01hdGguaW11bChFZSxzbil8MCkrTWF0aC5pbXVsKERlLFRuKXwwLFM9UytNYXRoLmltdWwoRGUsc24pfDA7dmFyIHNvPShNKyh5PXkrTWF0aC5pbXVsKG50LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobnQscXQpfDApK01hdGguaW11bChxZSxG''@;'; put 'put ''bil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChxZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKHNvPj4+MjYpfDAsc28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LExuKSxwPShwPU1hdGguaW11bChQdCx6dCkpK01hdGguaW11bChBdCxMbil8MCxTPU1hdGguaW11bChBdCx6dCkseT15K01h''@;'; put 'put ''dGguaW11bChhdCxUbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHNuKXwwKStNYXRoLmltdWwoY3QsVG4pfDAsUz1TK01hdGguaW11bChjdCxzbil8MDt2YXIgWGk9KE0rKHk9eStNYXRoLmltdWwoRWUsRm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChFZSxxdCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKERlLEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKERlLHF0KXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMseT1NYXRoLmltdWwoUHQsVG4pLHA9KHA9TWF0aC5pbXVsKFB0LHNuKSkrTWF0aC5pbXVsKEF0LFRuKXwwLFM9TWF0aC5pbXVsKEF0LHNu''@;'; put 'put ''KTt2YXIgcG89KE0rKHk9eStNYXRoLmltdWwoYXQsRm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChhdCxxdCl8MCkrTWF0aC5pbXVsKGN0LEZuKXwwKSk8PDEzKXwwO009KChTPVMrTWF0aC5pbXVsKGN0LHF0KXwwKSsocD4+PjEzKXwwKSsocG8+Pj4yNil8MCxwbyY9NjcxMDg4''@;'; put 'put ''NjM7dmFyIF9yPShNKyh5PU1hdGguaW11bChQdCxGbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoUHQscXQpKStNYXRoLmltdWwoQXQsRm4pfDApKTw8MTMpfDA7cmV0dXJuIE09KChTPU1hdGguaW11bChBdCxxdCkpKyhwPj4+MTMpfDApKyhfcj4+PjI2KXwwLF9yJj02NzEwODg2MyxD''@;'; put 'put ''WzBdPUhuLENbMV09aWksQ1syXT1jbixDWzNdPWpuLENbNF09WHIsQ1s1XT12aSxDWzZdPUVyLENbN109WWksQ1s4XT1KcixDWzldPWFvLENbMTBdPUJyLENbMTFdPUppLENbMTJdPXRvLENbMTNdPWNvLENbMTRdPWxvLENbMTVdPXNvLENbMTZdPVhpLENbMTddPXBvLENbMThdPV9yLDAhPT1N''@;'; put 'put ''JiYoQ1sxOV09TSxOLmxlbmd0aCsrKSxOfTtmdW5jdGlvbiBXKFksYix4KXtyZXR1cm4obmV3IFUpLm11bHAoWSxiLHgpfWZ1bmN0aW9uIFUoWSxiKXt0aGlzLng9WSx0aGlzLnk9Yn1NYXRoLmltdWx8fChWPWopLEgucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGIseCl7dmFyIE4sRj10aGlz''@;'; put 'put ''Lmxlbmd0aCtiLmxlbmd0aDtyZXR1cm4gTj0xMD09PXRoaXMubGVuZ3RoJiYxMD09PWIubGVuZ3RoP1YodGhpcyxiLHgpOkY8NjM/aih0aGlzLGIseCk6RjwxMDI0P2Z1bmN0aW9uIEcoWSxiLHgpe3gubmVnYXRpdmU9Yi5uZWdhdGl2ZV5ZLm5lZ2F0aXZlLHgubGVuZ3RoPVkubGVuZ3RoK2Iu''@;'; put 'put ''bGVuZ3RoO2Zvcih2YXIgTj0wLEY9MCxnPTA7Zzx4Lmxlbmd0aC0xO2crKyl7dmFyIEM9RjtGPTA7Zm9yKHZhciBNPTY3MTA4ODYzJk4seT1NYXRoLm1pbihnLGIubGVuZ3RoLTEpLHA9TWF0aC5tYXgoMCxnLVkubGVuZ3RoKzEpO3A8PXk7cCsrKXt2YXIgZmU9KDB8WS53b3Jkc1tnLXBdKSoo''@;'; put 'put ''MHxiLndvcmRzW3BdKSxtZT02NzEwODg2MyZmZTtNPTY3MTA4ODYzJihtZT1tZStNfDApLEYrPShDPShDPUMrKGZlLzY3MTA4ODY0fDApfDApKyhtZT4+PjI2KXwwKT4+PjI2LEMmPTY3MTA4ODYzfXgud29yZHNbZ109TSxOPUMsQz1GfXJldHVybiAwIT09Tj94LndvcmRzW2ddPU46eC5sZW5n''@;'; put 'put ''dGgtLSx4LnN0cmlwKCl9KHRoaXMsYix4KTpXKHRoaXMsYix4KSxOfSxVLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGIpe2Zvcih2YXIgeD1uZXcgQXJyYXkoYiksTj1ILnByb3RvdHlwZS5fY291bnRCaXRzKGIpLTEsRj0wO0Y8YjtGKyspeFtGXT10aGlzLnJldkJpbihGLE4sYik7cmV0''@;'; put 'put ''dXJuIHh9LFUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihiLHgsTil7aWYoMD09PWJ8fGI9PT1OLTEpcmV0dXJuIGI7Zm9yKHZhciBGPTAsZz0wO2c8eDtnKyspRnw9KDEmYik8PHgtZy0xLGI+Pj0xO3JldHVybiBGfSxVLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGIseCxOLEYsZyxD''@;'; put 'put ''KXtmb3IodmFyIE09MDtNPEM7TSsrKUZbTV09eFtiW01dXSxnW01dPU5bYltNXV19LFUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihiLHgsTixGLGcsQyl7dGhpcy5wZXJtdXRlKEMsYix4LE4sRixnKTtmb3IodmFyIE09MTtNPGc7TTw8PTEpZm9yKHZhciB5PU08PDEscD1NYXRoLmNv''@;'; put 'put ''cygyKk1hdGguUEkveSksUz1NYXRoLnNpbigyKk1hdGguUEkveSksUT0wO1E8ZztRKz15KWZvcih2YXIgcmU9cCxmZT1TLG1lPTA7bWU8TTttZSsrKXt2YXIga2U9TltRK21lXSxUZT1GW1ErbWVdLFBlPU5bUSttZStNXSxGZT1GW1ErbWUrTV0sTmU9cmUqUGUtZmUqRmU7RmU9cmUqRmUrZmUq''@;'; put 'put ''UGUsTltRK21lXT1rZSsoUGU9TmUpLEZbUSttZV09VGUrRmUsTltRK21lK01dPWtlLVBlLEZbUSttZStNXT1UZS1GZSxtZSE9PXkmJihOZT1wKnJlLVMqZmUsZmU9cCpmZStTKnJlLHJlPU5lKX19LFUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGIseCl7dmFyIE49MXxNYXRoLm1h''@;'; put 'put ''eCh4LGIpLEY9MSZOLGc9MDtmb3IoTj1OLzJ8MDtOO04+Pj49MSlnKys7cmV0dXJuIDE8PGcrMStGfSxVLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oYix4LE4pe2lmKCEoTjw9MSkpZm9yKHZhciBGPTA7RjxOLzI7RisrKXt2YXIgZz1iW0ZdO2JbRl09YltOLUYtMV0sYltOLUYtMV09''@;'; put 'put ''ZyxnPXhbRl0seFtGXT0teFtOLUYtMV0seFtOLUYtMV09LWd9fSxVLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oYix4KXtmb3IodmFyIE49MCxGPTA7Rjx4LzI7RisrKXt2YXIgZz04MTkyKk1hdGgucm91bmQoYlsyKkYrMV0veCkrTWF0aC5yb3VuZChiWzIqRl0veCkrTjtiW0Zd''@;'; put 'put ''PTY3MTA4ODYzJmcsTj1nPDY3MTA4ODY0PzA6Zy82NzEwODg2NHwwfXJldHVybiBifSxVLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGIseCxOLEYpe2Zvcih2YXIgZz0wLEM9MDtDPHg7QysrKU5bMipDXT04MTkxJihnKz0wfGJbQ10pLE5bMipDKzFdPTgxOTEmKGc+Pj49MTMpLGc+''@;'; put 'put ''Pj49MTM7Zm9yKEM9Mip4O0M8RjsrK0MpTltDXT0wO3YoMD09PWcpLHYoMD09KC04MTkyJmcpKX0sVS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihiKXtmb3IodmFyIHg9bmV3IEFycmF5KGIpLE49MDtOPGI7TisrKXhbTl09MDtyZXR1cm4geH0sVS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihi''@;'; put 'put ''LHgsTil7dmFyIEY9Mip0aGlzLmd1ZXNzTGVuMTNiKGIubGVuZ3RoLHgubGVuZ3RoKSxnPXRoaXMubWFrZVJCVChGKSxDPXRoaXMuc3R1YihGKSxNPW5ldyBBcnJheShGKSx5PW5ldyBBcnJheShGKSxwPW5ldyBBcnJheShGKSxTPW5ldyBBcnJheShGKSxRPW5ldyBBcnJheShGKSxyZT1uZXcg''@;'; put 'put ''QXJyYXkoRiksZmU9Ti53b3JkcztmZS5sZW5ndGg9Rix0aGlzLmNvbnZlcnQxM2IoYi53b3JkcyxiLmxlbmd0aCxNLEYpLHRoaXMuY29udmVydDEzYih4LndvcmRzLHgubGVuZ3RoLFMsRiksdGhpcy50cmFuc2Zvcm0oTSxDLHkscCxGLGcpLHRoaXMudHJhbnNmb3JtKFMsQyxRLHJlLEYsZyk7''@;'; put 'put ''Zm9yKHZhciBtZT0wO21lPEY7bWUrKyl7dmFyIGtlPXlbbWVdKlFbbWVdLXBbbWVdKnJlW21lXTtwW21lXT15W21lXSpyZVttZV0rcFttZV0qUVttZV0seVttZV09a2V9cmV0dXJuIHRoaXMuY29uanVnYXRlKHkscCxGKSx0aGlzLnRyYW5zZm9ybSh5LHAsZmUsQyxGLGcpLHRoaXMuY29uanVn''@;'; put 'put ''YXRlKGZlLEMsRiksdGhpcy5ub3JtYWxpemUxM2IoZmUsRiksTi5uZWdhdGl2ZT1iLm5lZ2F0aXZlXngubmVnYXRpdmUsTi5sZW5ndGg9Yi5sZW5ndGgreC5sZW5ndGgsTi5zdHJpcCgpfSxILnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYil7dmFyIHg9bmV3IEgobnVsbCk7cmV0dXJuIHgud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSx0aGlzLm11bFRvKGIseCl9LEgucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oYil7dmFyIHg9bmV3IEgobnVsbCk7cmV0dXJuIHgud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSxXKHRoaXMsYix4KX0sSC5wcm90''@;'; put 'put ''b3R5cGUuaW11bD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGIsdGhpcyl9LEgucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpO2Zvcih2YXIgeD0wLE49MDtOPHRoaXMubGVuZ3RoO04rKyl7dmFyIEY9''@;'; put 'put ''KDB8dGhpcy53b3Jkc1tOXSkqYixnPSg2NzEwODg2MyZGKSsoNjcxMDg4NjMmeCk7eD4+PTI2LHgrPUYvNjcxMDg4NjR8MCx4Kz1nPj4+MjYsdGhpcy53b3Jkc1tOXT02NzEwODg2MyZnfXJldHVybiAwIT09eCYmKHRoaXMud29yZHNbTl09eCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3Rv''@;'; put 'put ''dHlwZS5tdWxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oYil9LEgucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sSC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sSC5w''@;'; put 'put ''cm90b3R5cGUucG93PWZ1bmN0aW9uKGIpe3ZhciB4PWZ1bmN0aW9uIHooWSl7Zm9yKHZhciBiPW5ldyBBcnJheShZLmJpdExlbmd0aCgpKSx4PTA7eDxiLmxlbmd0aDt4Kyspe3ZhciBGPXglMjY7Ylt4XT0oWS53b3Jkc1t4LzI2fDBdJjE8PEYpPj4+Rn1yZXR1cm4gYn0oYik7aWYoMD09PXgu''@;'; put 'put ''bGVuZ3RoKXJldHVybiBuZXcgSCgxKTtmb3IodmFyIE49dGhpcyxGPTA7Rjx4Lmxlbmd0aCYmMD09PXhbRl07RisrLE49Ti5zcXIoKSk7aWYoKytGPHgubGVuZ3RoKWZvcih2YXIgZz1OLnNxcigpO0Y8eC5sZW5ndGg7RisrLGc9Zy5zcXIoKSkwIT09eFtGXSYmKE49Ti5tdWwoZykpO3JldHVy''@;'; put 'put ''biBOfSxILnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBnLHg9YiUyNixOPShiLXgpLzI2LEY9NjcxMDg4NjM+Pj4yNi14PDwyNi14O2lmKDAhPT14KXt2YXIgQz0wO2ZvcihnPTA7Zzx0aGlzLmxlbmd0aDtnKyspe3ZhciBNPXRo''@;'; put 'put ''aXMud29yZHNbZ10mRjt0aGlzLndvcmRzW2ddPSgwfHRoaXMud29yZHNbZ10pLU08PHh8QyxDPU0+Pj4yNi14fUMmJih0aGlzLndvcmRzW2ddPUMsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PU4pe2ZvcihnPXRoaXMubGVuZ3RoLTE7Zz49MDtnLS0pdGhpcy53b3Jkc1tnK05dPXRoaXMud29yZHNb''@;'; put 'put ''Z107Zm9yKGc9MDtnPE47ZysrKXRoaXMud29yZHNbZ109MDt0aGlzLmxlbmd0aCs9Tn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oYil9LEgucHJvdG90eXBlLml1c2hybj1m''@;'; put 'put ''dW5jdGlvbihiLHgsTil7dmFyIEY7digibnVtYmVyIj09dHlwZW9mIGImJmI+PTApLEY9eD8oeC14JTI2KS8yNjowO3ZhciBnPWIlMjYsQz1NYXRoLm1pbigoYi1nKS8yNix0aGlzLmxlbmd0aCksTT02NzEwODg2M142NzEwODg2Mz4+Pmc8PGcseT1OO2lmKEYtPUMsRj1NYXRoLm1heCgwLEYp''@;'; put 'put ''LHkpe2Zvcih2YXIgcD0wO3A8QztwKyspeS53b3Jkc1twXT10aGlzLndvcmRzW3BdO3kubGVuZ3RoPUN9aWYoMCE9PUMpaWYodGhpcy5sZW5ndGg+Qylmb3IodGhpcy5sZW5ndGgtPUMscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0NdO2Vsc2UgdGhp''@;'; put 'put ''cy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIFM9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09U3x8cD49Rik7cC0tKXt2YXIgUT0wfHRoaXMud29yZHNbcF07dGhpcy53b3Jkc1twXT1TPDwyNi1nfFE+Pj5nLFM9USZNfXJldHVybiB5JiYwIT09UyYmKHkud29yZHNbeS5s''@;'; put 'put ''ZW5ndGgrK109UyksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oYix4LE4pe3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihiLHgsTil9LEgucHJvdG90''@;'; put 'put ''eXBlLnNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiKX0sSC5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYil9LEgucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hy''@;'; put 'put ''bihiKX0sSC5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYil9LEgucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgeD1iJTI2LE49KGIteCkvMjY7cmV0dXJuISh0aGlzLmxlbmd0''@;'; put 'put ''aDw9Tnx8ISh0aGlzLndvcmRzW05dJjE8PHgpKX0sSC5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGIpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgeD1iJTI2LE49KGIteCkvMjY7cmV0dXJuIHYoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9z''@;'; put 'put ''aXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1OP3RoaXM6KDAhPT14JiZOKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oTix0aGlzLmxlbmd0aCksMCE9PXgmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Png8PHgpLHRoaXMuc3RyaXAoKSl9LEgucHJv''@;'; put 'put ''dG90eXBlLm1hc2tuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGIpfSxILnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gdigibnVtYmVyIj09dHlwZW9mIGIpLHYoYjw2NzEwODg2NCksYjwwP3RoaXMuaXN1Ym4oLWIpOjAhPT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''PzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Yj8odGhpcy53b3Jkc1swXT1iLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGIpfSxI''@;'; put 'put ''LnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oYil7dGhpcy53b3Jkc1swXSs9Yjtmb3IodmFyIHg9MDt4PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3hdPj02NzEwODg2NDt4KyspdGhpcy53b3Jkc1t4XS09NjcxMDg4NjQseD09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1t4KzFdPTE6dGhp''@;'; put 'put ''cy53b3Jkc1t4KzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHgrMSksdGhpc30sSC5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oYil7aWYodigibnVtYmVyIj09dHlwZW9mIGIpLHYoYjw2NzEwODg2NCksYjwwKXJldHVybiB0aGlzLmlhZGRuKC1iKTtpZigw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09YiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MTtlbHNlIGZvcih2YXIgeD0wO3g8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbeF08MDt4KyspdGhpcy53b3Jkc1t4XSs9NjcxMDg4NjQsdGhpcy53b3Jkc1t4KzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y2xvbmUoKS5pYWRkbihiKX0sSC5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGIpfSxILnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxILnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sSC5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGIseCxOKXt2YXIgZzt0aGlzLl9leHBhbmQoYi5sZW5ndGgrTik7dmFyIEMsTT0wO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe0M9KDB8dGhpcy53b3Jkc1tnK05dKStNO3ZhciB5PSgwfGIu''@;'; put 'put ''d29yZHNbZ10pKng7TT0oKEMtPTY3MTA4ODYzJnkpPj4yNiktKHkvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tnK05dPTY3MTA4ODYzJkN9Zm9yKDtnPHRoaXMubGVuZ3RoLU47ZysrKU09KEM9KDB8dGhpcy53b3Jkc1tnK05dKStNKT4+MjYsdGhpcy53b3Jkc1tnK05dPTY3MTA4ODYzJkM7aWYo''@;'; put 'put ''MD09PU0pcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IodigtMT09PU0pLE09MCxnPTA7Zzx0aGlzLmxlbmd0aDtnKyspTT0oQz0tKDB8dGhpcy53b3Jkc1tnXSkrTSk+PjI2LHRoaXMud29yZHNbZ109NjcxMDg4NjMmQztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oYix4KXt2YXIgTixGPXRoaXMuY2xvbmUoKSxnPWIsQz0wfGcud29yZHNbZy5sZW5ndGgtMV07MCE9KE49MjYtdGhpcy5fY291bnRCaXRzKEMpKSYmKGc9Zy51c2hsbihOKSxGLml1c2hsbihOKSxDPTB8Zy53b3Jkc1tnLmxlbmd0aC0xXSk7dmFyIHAs''@;'; put 'put ''eT1GLmxlbmd0aC1nLmxlbmd0aDtpZigibW9kIiE9PXgpeyhwPW5ldyBIKG51bGwpKS5sZW5ndGg9eSsxLHAud29yZHM9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IodmFyIFM9MDtTPHAubGVuZ3RoO1MrKylwLndvcmRzW1NdPTB9dmFyIFE9Ri5jbG9uZSgpLl9pc2hsbnN1Ym11bChnLDEseSk7''@;'; put 'put ''MD09PVEubmVnYXRpdmUmJihGPVEscCYmKHAud29yZHNbeV09MSkpO2Zvcih2YXIgcmU9eS0xO3JlPj0wO3JlLS0pe3ZhciBmZT02NzEwODg2NCooMHxGLndvcmRzW2cubGVuZ3RoK3JlXSkrKDB8Ri53b3Jkc1tnLmxlbmd0aCtyZS0xXSk7Zm9yKGZlPU1hdGgubWluKGZlL0N8MCw2NzEwODg2''@;'; put 'put ''MyksRi5faXNobG5zdWJtdWwoZyxmZSxyZSk7MCE9PUYubmVnYXRpdmU7KWZlLS0sRi5uZWdhdGl2ZT0wLEYuX2lzaGxuc3VibXVsKGcsMSxyZSksRi5pc1plcm8oKXx8KEYubmVnYXRpdmVePTEpO3AmJihwLndvcmRzW3JlXT1mZSl9cmV0dXJuIHAmJnAuc3RyaXAoKSxGLnN0cmlwKCksImRp''@;'; put 'put ''diIhPT14JiYwIT09TiYmRi5pdXNocm4oTikse2RpdjpwfHxudWxsLG1vZDpGfX0sSC5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGIseCxOKXtyZXR1cm4gdighYi5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBIKDApLG1vZDpuZXcgSCgwKX06MCE9PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjA9PT1iLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIseCksIm1vZCIhPT14JiYoRj1DLmRpdi5uZWcoKSksImRpdiIhPT14JiYoZz1DLm1vZC5uZWcoKSxOJiYwIT09Zy5uZWdhdGl2ZSYmZy5pYWRkKGIpKSx7ZGl2OkYsbW9kOmd9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIu''@;'; put 'put ''bmVnYXRpdmU/KEM9dGhpcy5kaXZtb2QoYi5uZWcoKSx4KSwibW9kIiE9PXgmJihGPUMuZGl2Lm5lZygpKSx7ZGl2OkYsbW9kOkMubW9kfSk6dGhpcy5uZWdhdGl2ZSZiLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIubmVnKCkseCksImRpdiIhPT14JiYoZz1DLm1vZC5uZWcoKSxO''@;'; put 'put ''JiYwIT09Zy5uZWdhdGl2ZSYmZy5pc3ViKGIpKSx7ZGl2OkMuZGl2LG1vZDpnfSk6Yi5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGIpPDA/e2RpdjpuZXcgSCgwKSxtb2Q6dGhpc306MT09PWIubGVuZ3RoPyJkaXYiPT09eD97ZGl2OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bnVs''@;'; put 'put ''bH06Im1vZCI9PT14P3tkaXY6bnVsbCxtb2Q6bmV3IEgodGhpcy5tb2RuKGIud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm5ldyBIKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoYix4KTt2YXIgRixnLEN9LEgucHJvdG90eXBlLmRpdj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwiZGl2IiwhMSkuZGl2fSxILnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITEpLm1vZH0sSC5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwibW9k''@;'; put 'put ''IiwhMCkubW9kfSxILnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihiKXt2YXIgeD10aGlzLmRpdm1vZChiKTtpZih4Lm1vZC5pc1plcm8oKSlyZXR1cm4geC5kaXY7dmFyIE49MCE9PXguZGl2Lm5lZ2F0aXZlP3gubW9kLmlzdWIoYik6eC5tb2QsRj1iLnVzaHJuKDEpLGc9Yi5hbmRsbigx''@;'; put 'put ''KSxDPU4uY21wKEYpO3JldHVybiBDPDB8fDE9PT1nJiYwPT09Qz94LmRpdjowIT09eC5kaXYubmVnYXRpdmU/eC5kaXYuaXN1Ym4oMSk6eC5kaXYuaWFkZG4oMSl9LEgucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oYil7dihiPD02NzEwODg2Myk7Zm9yKHZhciB4PSgxPDwyNiklYixOPTAsRj10''@;'; put 'put ''aGlzLmxlbmd0aC0xO0Y+PTA7Ri0tKU49KHgqTisoMHx0aGlzLndvcmRzW0ZdKSklYjtyZXR1cm4gTn0sSC5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oYil7dihiPD02NzEwODg2Myk7Zm9yKHZhciB4PTAsTj10aGlzLmxlbmd0aC0xO04+PTA7Ti0tKXt2YXIgRj0oMHx0aGlzLndvcmRzW05d''@;'; put 'put ''KSs2NzEwODg2NCp4O3RoaXMud29yZHNbTl09Ri9ifDAseD1GJWJ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGIpfSxILnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVnYXRpdmUp''@;'; put 'put ''LHYoIWIuaXNaZXJvKCkpO3ZhciB4PXRoaXMsTj1iLmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QoYik6eC5jbG9uZSgpO2Zvcih2YXIgRj1uZXcgSCgxKSxnPW5ldyBIKDApLEM9bmV3IEgoMCksTT1uZXcgSCgxKSx5PTA7eC5pc0V2ZW4oKSYmTi5pc0V2ZW4oKTspeC5pdXNocm4o''@;'; put 'put ''MSksTi5pdXNocm4oMSksKyt5O2Zvcih2YXIgcD1OLmNsb25lKCksUz14LmNsb25lKCk7IXguaXNaZXJvKCk7KXtmb3IodmFyIFE9MCxyZT0xOyEoeC53b3Jkc1swXSZyZSkmJlE8MjY7KytRLHJlPDw9MSk7aWYoUT4wKWZvcih4Lml1c2hybihRKTtRLS0gPjA7KShGLmlzT2RkKCl8fGcuaXNP''@;'; put 'put ''ZGQoKSkmJihGLmlhZGQocCksZy5pc3ViKFMpKSxGLml1c2hybigxKSxnLml1c2hybigxKTtmb3IodmFyIGZlPTAsbWU9MTshKE4ud29yZHNbMF0mbWUpJiZmZTwyNjsrK2ZlLG1lPDw9MSk7aWYoZmU+MClmb3IoTi5pdXNocm4oZmUpO2ZlLS0gPjA7KShDLmlzT2RkKCl8fE0uaXNPZGQoKSkm''@;'; put 'put ''JihDLmlhZGQocCksTS5pc3ViKFMpKSxDLml1c2hybigxKSxNLml1c2hybigxKTt4LmNtcChOKT49MD8oeC5pc3ViKE4pLEYuaXN1YihDKSxnLmlzdWIoTSkpOihOLmlzdWIoeCksQy5pc3ViKEYpLE0uaXN1YihnKSl9cmV0dXJue2E6QyxiOk0sZ2NkOk4uaXVzaGxuKHkpfX0sSC5wcm90b3R5''@;'; put 'put ''cGUuX2ludm1wPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVnYXRpdmUpLHYoIWIuaXNaZXJvKCkpO3ZhciBRLHg9dGhpcyxOPWIuY2xvbmUoKTt4PTAhPT14Lm5lZ2F0aXZlP3gudW1vZChiKTp4LmNsb25lKCk7Zm9yKHZhciBGPW5ldyBIKDEpLGc9bmV3IEgoMCksQz1OLmNsb25lKCk7eC5jbXBu''@;'; put 'put ''KDEpPjAmJk4uY21wbigxKT4wOyl7Zm9yKHZhciBNPTAseT0xOyEoeC53b3Jkc1swXSZ5KSYmTTwyNjsrK00seTw8PTEpO2lmKE0+MClmb3IoeC5pdXNocm4oTSk7TS0tID4wOylGLmlzT2RkKCkmJkYuaWFkZChDKSxGLml1c2hybigxKTtmb3IodmFyIHA9MCxTPTE7IShOLndvcmRzWzBdJlMp''@;'; put 'put ''JiZwPDI2OysrcCxTPDw9MSk7aWYocD4wKWZvcihOLml1c2hybihwKTtwLS0gPjA7KWcuaXNPZGQoKSYmZy5pYWRkKEMpLGcuaXVzaHJuKDEpO3guY21wKE4pPj0wPyh4LmlzdWIoTiksRi5pc3ViKGcpKTooTi5pc3ViKHgpLGcuaXN1YihGKSl9cmV0dXJuKFE9MD09PXguY21wbigxKT9GOmcp''@;'; put 'put ''LmNtcG4oMCk8MCYmUS5pYWRkKGIpLFF9LEgucHJvdG90eXBlLmdjZD1mdW5jdGlvbihiKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBiLmFicygpO2lmKGIuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIHg9dGhpcy5jbG9uZSgpLE49Yi5jbG9uZSgpO3gubmVnYXRpdmU9MCxOLm5l''@;'; put 'put ''Z2F0aXZlPTA7Zm9yKHZhciBGPTA7eC5pc0V2ZW4oKSYmTi5pc0V2ZW4oKTtGKyspeC5pdXNocm4oMSksTi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO3guaXNFdmVuKCk7KXguaXVzaHJuKDEpO2Zvcig7Ti5pc0V2ZW4oKTspTi5pdXNocm4oMSk7dmFyIGc9eC5jbXAoTik7aWYoZzwwKXt2YXIg''@;'; put 'put ''Qz14O3g9TixOPUN9ZWxzZSBpZigwPT09Z3x8MD09PU4uY21wbigxKSlicmVhazt4LmlzdWIoTil9cmV0dXJuIE4uaXVzaGxuKEYpfSxILnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVnY2QoYikuYS51bW9kKGIpfSxILnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gMD09KDEmdGhpcy53b3Jkc1swXSl9LEgucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PSgxJnRoaXMud29yZHNbMF0pfSxILnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZifSxILnByb3RvdHlwZS5iaW5jbj1mdW5j''@;'; put 'put ''dGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYik7dmFyIHg9YiUyNixOPShiLXgpLzI2LEY9MTw8eDtpZih0aGlzLmxlbmd0aDw9TilyZXR1cm4gdGhpcy5fZXhwYW5kKE4rMSksdGhpcy53b3Jkc1tOXXw9Rix0aGlzO2Zvcih2YXIgZz1GLEM9TjswIT09ZyYmQzx0aGlzLmxlbmd0aDtDKysp''@;'; put 'put ''e3ZhciBNPTB8dGhpcy53b3Jkc1tDXTtnPShNKz1nKT4+PjI2LHRoaXMud29yZHNbQ109TSY9NjcxMDg4NjN9cmV0dXJuIDAhPT1nJiYodGhpcy53b3Jkc1tDXT1nLHRoaXMubGVuZ3RoKyspLHRoaXN9LEgucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5n''@;'; put 'put ''dGgmJjA9PT10aGlzLndvcmRzWzBdfSxILnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKGIpe3ZhciBOLHg9YjwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYheClyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmeClyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlOPTE7''@;'; put 'put ''ZWxzZXt4JiYoYj0tYiksdihiPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgRj0wfHRoaXMud29yZHNbMF07Tj1GPT09Yj8wOkY8Yj8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1OOk59LEgucHJvdG90eXBlLmNtcD1mdW5jdGlvbihiKXtpZigwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSYmMD09PWIubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiAxO3ZhciB4PXRoaXMudWNtcChiKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwteDp4fSxILnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKGIpe2lmKHRo''@;'; put 'put ''aXMubGVuZ3RoPmIubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPGIubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgeD0wLE49dGhpcy5sZW5ndGgtMTtOPj0wO04tLSl7dmFyIEY9MHx0aGlzLndvcmRzW05dLGc9MHxiLndvcmRzW05dO2lmKEYhPT1nKXtGPGc/eD0tMTpGPmcmJih4PTEp''@;'; put 'put ''O2JyZWFrfX1yZXR1cm4geH0sSC5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKGIpe3JldHVybiAxPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5ndD1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wKGIpfSxILnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNt''@;'; put 'put ''cG4oYik+PTB9LEgucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXAoYik+PTB9LEgucHJvdG90eXBlLmx0bj1mdW5jdGlvbihiKXtyZXR1cm4tMT09PXRoaXMuY21wbihiKX0sSC5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcChiKX0s''@;'; put 'put ''SC5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPD0wfSxILnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPD0wfSxILnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oYil7cmV0dXJuIDA9PT10aGlzLmNtcG4oYil9LEgucHJvdG90''@;'; put 'put ''eXBlLmVxPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXAoYil9LEgucmVkPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgdWUoYil9LEgucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGIpe3JldHVybiB2KCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4''@;'; put 'put ''dCIpLHYoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksYi5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGIpfSxILnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51''@;'; put 'put ''bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sSC5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnJlZD1iLHRoaXN9LEgucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGIpe3JldHVybiB2KCF0aGlzLnJl''@;'; put 'put ''ZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGIpfSxILnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhp''@;'; put 'put ''cyxiKX0sSC5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJl''@;'; put 'put ''ZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIo''@;'; put 'put ''dGhpcyxiKX0sSC5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJl''@;'; put 'put ''ZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsYiksdGhpcy5yZWQubXVsKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLmltdWwodGhpcyxiKX0sSC5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0''@;'; put 'put ''aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEgucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxILnByb3Rv''@;'; put 'put ''dHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sSC5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiB2''@;'; put 'put ''KHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEgucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxILnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQmJiFiLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlz''@;'; put 'put ''LnJlZC5wb3codGhpcyxiKX07dmFyIHE9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB0ZShZLGIpe3RoaXMubmFtZT1ZLHRoaXMucD1uZXcgSChiLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgSCgxKS5pdXNobG4o''@;'; put 'put ''dGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gbmUoKXt0ZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIGllKCl7''@;'; put 'put ''dGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBsZSgpe3RlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIil9ZnVuY3Rpb24gZGUoKXt0ZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIHVlKFkpe2lmKCJzdHJpbmciPT10eXBlb2YgWSl7dmFyIGI9SC5f''@;'; put 'put ''cHJpbWUoWSk7dGhpcy5tPWIucCx0aGlzLnByaW1lPWJ9ZWxzZSB2KFkuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09WSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gY2UoWSl7dWUuY2FsbCh0aGlzLFkpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0''@;'; put 'put ''aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IEgoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhp''@;'; put 'put ''cy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9dGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgSChudWxsKTtyZXR1cm4gYi53b3Jk''@;'; put 'put ''cz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGJ9LHRlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBOLHg9Yjtkb3t0aGlzLnNwbGl0KHgsdGhpcy50bXApLE49KHg9KHg9dGhpcy5pbXVsSyh4KSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKE4+''@;'; put 'put ''dGhpcy5uKTt2YXIgRj1OPHRoaXMubj8tMTp4LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PUY/KHgud29yZHNbMF09MCx4Lmxlbmd0aD0xKTpGPjA/eC5pc3ViKHRoaXMucCk6dm9pZCAwIT09eC5zdHJpcD94LnN0cmlwKCk6eC5fc3RyaXAoKSx4fSx0ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rp''@;'; put 'put ''b24oYix4KXtiLml1c2hybih0aGlzLm4sMCx4KX0sdGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe3JldHVybiBiLmltdWwodGhpcy5rKX0saGUobmUsdGUpLG5lLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLHgpe2Zvcih2YXIgTj00MTk0MzAzLEY9TWF0aC5taW4oYi5sZW5ndGgs''@;'; put 'put ''OSksZz0wO2c8RjtnKyspeC53b3Jkc1tnXT1iLndvcmRzW2ddO2lmKHgubGVuZ3RoPUYsYi5sZW5ndGg8PTkpcmV0dXJuIGIud29yZHNbMF09MCx2b2lkKGIubGVuZ3RoPTEpO3ZhciBDPWIud29yZHNbOV07Zm9yKHgud29yZHNbeC5sZW5ndGgrK109QyZOLGc9MTA7ZzxiLmxlbmd0aDtnKysp''@;'; put 'put ''e3ZhciBNPTB8Yi53b3Jkc1tnXTtiLndvcmRzW2ctMTBdPShNJk4pPDw0fEM+Pj4yMixDPU19Yi53b3Jkc1tnLTEwXT1DPj4+PTIyLGIubGVuZ3RoLT0wPT09QyYmYi5sZW5ndGg+MTA/MTA6OX0sbmUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Iud29yZHNbYi5sZW5ndGhdPTAsYi53''@;'; put 'put ''b3Jkc1tiLmxlbmd0aCsxXT0wLGIubGVuZ3RoKz0yO2Zvcih2YXIgeD0wLE49MDtOPGIubGVuZ3RoO04rKyl7dmFyIEY9MHxiLndvcmRzW05dO2Iud29yZHNbTl09NjcxMDg4NjMmKHgrPTk3NypGKSx4PTY0KkYrKHgvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1iLndvcmRzW2IubGVuZ3RoLTFd''@;'; put 'put ''JiYoYi5sZW5ndGgtLSwwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmYi5sZW5ndGgtLSksYn0saGUoaWUsdGUpLGhlKGxlLHRlKSxoZShkZSx0ZSksZGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Zvcih2YXIgeD0wLE49MDtOPGIubGVuZ3RoO04rKyl7dmFyIEY9MTkqKDB8Yi53b3Jk''@;'; put 'put ''c1tOXSkreCxnPTY3MTA4ODYzJkY7Rj4+Pj0yNixiLndvcmRzW05dPWcseD1GfXJldHVybiAwIT09eCYmKGIud29yZHNbYi5sZW5ndGgrK109eCksYn0sSC5fcHJpbWU9ZnVuY3Rpb24oYil7aWYocVtiXSlyZXR1cm4gcVtiXTt2YXIgeDtpZigiazI1NiI9PT1iKXg9bmV3IG5lO2Vsc2UgaWYo''@;'; put 'put ''InAyMjQiPT09Yil4PW5ldyBpZTtlbHNlIGlmKCJwMTkyIj09PWIpeD1uZXcgbGU7ZWxzZXtpZigicDI1NTE5IiE9PWIpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrYik7eD1uZXcgZGV9cmV0dXJuIHFbYl09eCx4fSx1ZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oYil7''@;'; put 'put ''digwPT09Yi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSx2KGIucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LHVlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihiLHgpe3YoMD09KGIubmVnYXRpdmV8eC5uZWdhdGl2ZSksInJlZCB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksdihiLnJlZCYmYi5yZWQ9PT14LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSx1ZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoYikuX2ZvcmNlUmVk''@;'; put 'put ''KHRoaXMpOmIudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pc1plcm8oKT9iLmNsb25lKCk6dGhpcy5tLnN1YihiKS5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYix4KXt0aGlzLl92''@;'; put 'put ''ZXJpZnkyKGIseCk7dmFyIE49Yi5hZGQoeCk7cmV0dXJuIE4uY21wKHRoaXMubSk+PTAmJk4uaXN1Yih0aGlzLm0pLE4uX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihiLHgpe3RoaXMuX3ZlcmlmeTIoYix4KTt2YXIgTj1iLmlhZGQoeCk7cmV0dXJuIE4uY21w''@;'; put 'put ''KHRoaXMubSk+PTAmJk4uaXN1Yih0aGlzLm0pLE59LHVlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5zdWIoeCk7cmV0dXJuIE4uY21wbigwKTwwJiZOLmlhZGQodGhpcy5tKSxOLl9mb3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLmlz''@;'; put 'put ''dWI9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5pc3ViKHgpO3JldHVybiBOLmNtcG4oMCk8MCYmTi5pYWRkKHRoaXMubSksTn0sdWUucHJvdG90eXBlLnNobD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkxKGIpLHRoaXMuaW1vZChiLnVzaGxuKHgp''@;'; put 'put ''KX0sdWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihiLHgpLHRoaXMuaW1vZChiLmltdWwoeCkpfSx1ZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIseCl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYix4KSx0aGlzLmltb2QoYi5tdWwoeCkpfSx1ZS5w''@;'; put 'put ''cm90b3R5cGUuaXNxcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbXVsKGIsYi5jbG9uZSgpKX0sdWUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5tdWwoYixiKX0sdWUucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oYil7aWYoYi5pc1plcm8oKSlyZXR1cm4gYi5jbG9u''@;'; put 'put ''ZSgpO3ZhciB4PXRoaXMubS5hbmRsbigzKTtpZih2KHglMj09MSksMz09PXgpe3ZhciBOPXRoaXMubS5hZGQobmV3IEgoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coYixOKX1mb3IodmFyIEY9dGhpcy5tLnN1Ym4oMSksZz0wOyFGLmlzWmVybygpJiYwPT09Ri5hbmRsbigxKTspZysr''@;'; put 'put ''LEYuaXVzaHJuKDEpO3YoIUYuaXNaZXJvKCkpO3ZhciBDPW5ldyBIKDEpLnRvUmVkKHRoaXMpLE09Qy5yZWROZWcoKSx5PXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxwPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IocD1uZXcgSCgyKnAqcCkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KHAseSku''@;'; put 'put ''Y21wKE0pOylwLnJlZElBZGQoTSk7Zm9yKHZhciBTPXRoaXMucG93KHAsRiksUT10aGlzLnBvdyhiLEYuYWRkbigxKS5pdXNocm4oMSkpLHJlPXRoaXMucG93KGIsRiksZmU9ZzswIT09cmUuY21wKEMpOyl7Zm9yKHZhciBtZT1yZSxrZT0wOzAhPT1tZS5jbXAoQyk7a2UrKyltZT1tZS5yZWRT''@;'; put 'put ''cXIoKTt2KGtlPGZlKTt2YXIgVGU9dGhpcy5wb3coUyxuZXcgSCgxKS5pdXNobG4oZmUta2UtMSkpO1E9US5yZWRNdWwoVGUpLFM9VGUucmVkU3FyKCkscmU9cmUucmVkTXVsKFMpLGZlPWtlfXJldHVybiBRfSx1ZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXt2YXIgeD1iLl9pbnZtcCh0''@;'; put 'put ''aGlzLm0pO3JldHVybiAwIT09eC5uZWdhdGl2ZT8oeC5uZWdhdGl2ZT0wLHRoaXMuaW1vZCh4KS5yZWROZWcoKSk6dGhpcy5pbW9kKHgpfSx1ZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGIseCl7aWYoeC5pc1plcm8oKSlyZXR1cm4gbmV3IEgoMSkudG9SZWQodGhpcyk7aWYoMD09PXguY21w''@;'; put 'put ''bigxKSlyZXR1cm4gYi5jbG9uZSgpO3ZhciBGPW5ldyBBcnJheSgxNik7RlswXT1uZXcgSCgxKS50b1JlZCh0aGlzKSxGWzFdPWI7Zm9yKHZhciBnPTI7ZzxGLmxlbmd0aDtnKyspRltnXT10aGlzLm11bChGW2ctMV0sYik7dmFyIEM9RlswXSxNPTAseT0wLHA9eC5iaXRMZW5ndGgoKSUyNjtm''@;'; put 'put ''b3IoMD09PXAmJihwPTI2KSxnPXgubGVuZ3RoLTE7Zz49MDtnLS0pe2Zvcih2YXIgUz14LndvcmRzW2ddLFE9cC0xO1E+PTA7US0tKXt2YXIgcmU9Uz4+USYxO0MhPT1GWzBdJiYoQz10aGlzLnNxcihDKSksMCE9PXJlfHwwIT09TT8oTTw8PTEsTXw9cmUsKDQ9PSsreXx8MD09PWcmJjA9PT1R''@;'; put 'put ''KSYmKEM9dGhpcy5tdWwoQyxGW01dKSx5PTAsTT0wKSk6eT0wfXA9MjZ9cmV0dXJuIEN9LHVlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7dmFyIHg9Yi51bW9kKHRoaXMubSk7cmV0dXJuIHg9PT1iP3guY2xvbmUoKTp4fSx1ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rp''@;'; put 'put ''b24oYil7dmFyIHg9Yi5jbG9uZSgpO3JldHVybiB4LnJlZD1udWxsLHh9LEgubW9udD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGNlKGIpfSxoZShjZSx1ZSksY2UucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbW9kKGIudXNobG4odGhpcy5zaGlmdCkpfSxj''@;'; put 'put ''ZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oYil7dmFyIHg9dGhpcy5pbW9kKGIubXVsKHRoaXMucmludikpO3JldHVybiB4LnJlZD1udWxsLHh9LGNlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIseCl7aWYoYi5pc1plcm8oKXx8eC5pc1plcm8oKSlyZXR1cm4gYi53b3Jkc1sw''@;'; put 'put ''XT0wLGIubGVuZ3RoPTEsYjt2YXIgTj1iLmltdWwoeCksRj1OLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPU4uaXN1YihGKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5p''@;'; put 'put ''c3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sY2UucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLHgpe2lmKGIuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgTj1iLm11bCh4''@;'; put 'put ''KSxGPU4ubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGc9Ti5pc3ViKEYpLml1c2hybih0aGlzLnNoaWZ0KSxDPWc7cmV0dXJuIGcuY21wKHRoaXMubSk+PTA/Qz1nLmlzdWIodGhpcy5tKTpnLmNtcG4oMCk8MCYmKEM9Zy5p''@;'; put 'put ''YWRkKHRoaXMubSkpLEMuX2ZvcmNlUmVkKHRoaXMpfSxjZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbW9kKGIuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShXZT1ULm5tZChXZSksdGhpcyl9LDU3Nzk4OldlPT57ZnVuY3Rp''@;'; put 'put ''b24gemUoVCxzZSl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKHNlfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfVdlLmV4cG9ydHM9emUsemUuZXF1YWw9ZnVuY3Rpb24oc2Usayx2KXtpZihzZSE9ayl0aHJvdyBuZXcgRXJyb3Iodnx8IkFzc2VydGlvbiBmYWlsZWQ6ICIrc2UrIiAhPSAiK2spfX0sNzgy''@;'; put 'put ''NDc6KFdlLHplKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgVD16ZTtmdW5jdGlvbiBrKGhlKXtyZXR1cm4gMT09PWhlLmxlbmd0aD8iMCIraGU6aGV9ZnVuY3Rpb24gdihoZSl7Zm9yKHZhciBIPSIiLEI9MDtCPGhlLmxlbmd0aDtCKyspSCs9ayhoZVtCXS50b1N0cmluZygxNikpO3JldHVybiBIfVQu''@;'; put 'put ''dG9BcnJheT1mdW5jdGlvbiBzZShoZSxIKXtpZihBcnJheS5pc0FycmF5KGhlKSlyZXR1cm4gaGUuc2xpY2UoKTtpZighaGUpcmV0dXJuW107dmFyIEI9W107aWYoInN0cmluZyIhPXR5cGVvZiBoZSl7Zm9yKHZhciBMPTA7TDxoZS5sZW5ndGg7TCsrKUJbTF09MHxoZVtMXTtyZXR1cm4gQn1p''@;'; put 'put ''ZigiaGV4Ij09PUgpZm9yKChoZT1oZS5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCIiKSkubGVuZ3RoJTIhPTAmJihoZT0iMCIraGUpLEw9MDtMPGhlLmxlbmd0aDtMKz0yKUIucHVzaChwYXJzZUludChoZVtMXStoZVtMKzFdLDE2KSk7ZWxzZSBmb3IoTD0wO0w8aGUubGVuZ3RoO0wrKyl7dmFy''@;'; put 'put ''IEs9aGUuY2hhckNvZGVBdChMKSxKPUs+PjgsST0yNTUmSztKP0IucHVzaChKLEkpOkIucHVzaChJKX1yZXR1cm4gQn0sVC56ZXJvMj1rLFQudG9IZXg9dixULmVuY29kZT1mdW5jdGlvbihILEIpe3JldHVybiJoZXgiPT09Qj92KEgpOkh9fSw4MzI3NDpmdW5jdGlvbihXZSx6ZSxUKXshZnVu''@;'; put 'put ''Y3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImFmIix7bW9udGhzOiJKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvbl9N''@;'; put 'put ''YWFfRGluX1dvZV9Eb25fVnJ5X1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTWFfRGlfV29fRG9fVnJfU2EiLnNwbGl0KCJfIiksbWVyaWRpZW1QYXJzZTovdm18bm0vaSxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybi9ebm0kL2kudGVzdCh2KX0sbWVyaWRpZW06ZnVuY3Rpb24odixo''@;'; put 'put ''ZSxIKXtyZXR1cm4gdjwxMj9IPyJ2bSI6IlZNIjpIPyJubSI6Ik5NIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBI''@;'; put 'put ''SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVmFuZGFnIG9tXSBMVCIsbmV4dERheToiW01ceGY0cmUgb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbR2lzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltMYWFzXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6Im9vciAlcyIscGFzdDoiJXMgZ2VsZWRlIixzOiInbiBwYWFyIHNla29uZGVzIixzczoiJWQgc2Vrb25kZXMiLG06IiduIG1pbnV1dCIsbW06IiVkIG1pbnV0ZSIsaDoiJ24gdXVyIixoaDoiJWQgdXJlIixkOiInbiBkYWciLGRkOiIlZCBkYWUiLE06IiduIG1h''@;'; put 'put ''YW5kIixNTToiJWQgbWFhbmRlIix5OiInbiBqYWFyIix5eToiJWQgamFhciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbih2KXtyZXR1cm4gdisoMT09PXZ8fDg9PT12fHx2Pj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95''@;'; put 'put ''OjR9fSl9KFQoMTY2NzYpKX0sNjE4Njc6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ZnVuY3Rpb24oTCl7cmV0dXJuIDA9PT1MPzA6MT09PUw/MToyPT09TD8yOkwlMTAwPj0zJiZMJTEwMDw9MTA/MzpMJTEwMD49MTE/NDo1fSx2PXtzOlsiXHUw''@;'; put 'put ''NjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDYyN1x1''@;'; put 'put ''MDY0NiIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiXSxtOlsiXHUwNjIz''@;'; put 'put ''XHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDYyN1x1MDY0''@;'; put 'put ''NiIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiXSxoOlsiXHUw''@;'; put 'put ''NjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYzM1x1MDYy''@;'; put 'put ''N1x1MDYzOVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiXSxkOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2''@;'; put 'put ''NGFcdTA2NDhcdTA2NDUiLCJcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLCIlZCBc''@;'; put 'put ''dTA2NGFcdTA2NDhcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDUiXSxNOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzRcdTA2NDdcdTA2MzEiLCJcdTA2MzRcdTA2NDdcdTA2MzEgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYz''@;'; put 'put ''NFx1MDY0N1x1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjciLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzEiXSx5OlsiXHUwNjIzXHUwNjQyXHUw''@;'; put 'put ''NjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzlcdTA2MjdcdTA2NDUiLCJcdTA2MzlcdTA2MjdcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2''@;'; put 'put ''MzlcdTA2NDhcdTA2MjdcdTA2NDUiLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDUiXX0saGU9ZnVuY3Rpb24oTCl7cmV0dXJuIGZ1bmN0aW9uKEssSixJLFIpe3ZhciBFPWsoSyksej12W0xdW2soSyldO3JldHVybiAyPT09RSYmKHo9''@;'; put 'put ''eltKPzA6MV0pLHoucmVwbGFjZSgvJWQvaSxLKX19LEg9WyJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGEiLCJcdTA2NDFcdTA2NGFcdTA2NDFcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzMiLCJcdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2''@;'; put 'put ''NDVcdTA2MjdcdTA2NGEiLCJcdTA2MmNcdTA2NDhcdTA2MjdcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjkiLCJcdTA2MjNcdTA2NDhcdTA2MmEiLCJcdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjNcdTA2NDNcdTA2MmFcdTA2''@;'; put 'put ''NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXTtzZS5kZWZpbmVMb2NhbGUoImFyLWR6Iix7bW9udGhzOkgsbW9udGhzU2hvcnQ6SCx3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0''@;'; put 'put ''XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYy''@;'; put 'put ''N1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVcdTA2MmJcdTA2NDZc''@;'; put 'put ''dTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL1x1MjAwZk0vXHUyMDBmWVlZWSIs''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihMKXtyZXR1cm4iXHUwNjQ1Ij09PUx9LG1lcmlkaWVtOmZ1bmN0aW9uKEwsSyxKKXty''@;'; put 'put ''ZXR1cm4gTDwxMj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZc''@;'; put 'put ''dTA2NGJcdTA2MjcgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYy''@;'; put 'put ''M1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9''@;'; put 'put ''LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2MjhcdTA2MzlcdTA2MmYgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczpoZSgicyIpLHNzOmhlKCJzIiksbTpoZSgibSIpLG1tOmhlKCJtIiksaDpoZSgiaCIpLGhoOmhlKCJoIiksZDpoZSgiZCIpLGRkOmhlKCJkIiksTTpoZSgi''@;'; put 'put ''TSIpLE1NOmhlKCJNIikseTpoZSgieSIpLHl5OmhlKCJ5Iil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTCl7cmV0dXJuIEwucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjAsZG95OjR9fSl9KFQoMTY2NzYpKX0sMTcwNzg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJhci1rdyIse21vbnRoczoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUw''@;'; put 'put ''NjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4''@;'; put 'put ''XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2''@;'; put 'put ''MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2MzRcdTA2MmFf''@;'; put 'put ''XHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRc''@;'; put 'put ''dTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJhXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3''@;'; put 'put ''XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjI3XHUwNjJkXHUwNjJmX1x1MDYyN1x1MDYyYVx1MDY0Nlx1''@;'; put 'put ''MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0g''@;'; put 'put ''WVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2''@;'; put 'put ''MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjI3IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1''@;'; put 'put ''MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5''@;'; put 'put ''XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQxXHUwNjRhICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6Ilx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsbToi''@;'; put 'put ''XHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IixtbToiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIixoOiJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLGQ6Ilx1MDY0YVx1MDY0OFx1MDY0NSIsZGQ6''@;'; put 'put ''IiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsTToiXHUwNjM0XHUwNjQ3XHUwNjMxIixNTToiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIix5OiJcdTA2MzNcdTA2NDZcdTA2MjkiLHl5OiIlZCBcdTA2MzNcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmEifSx3ZWVrOntkb3c6MCxkb3k6''@;'; put 'put ''MTJ9fSl9KFQoMTY2NzYpKX0sNzc3NzY6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6IjEiLDI6IjIiLDM6IjMiLDQ6IjQiLDU6IjUiLDY6IjYiLDc6IjciLDg6IjgiLDk6IjkiLDA6IjAifSx2PWZ1bmN0aW9uKEspe3JldHVybiAwPT09Sz8w''@;'; put 'put ''OjE9PT1LPzE6Mj09PUs/MjpLJTEwMD49MyYmSyUxMDA8PTEwPzM6SyUxMDA+PTExPzQ6NX0saGU9e3M6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSBcdTA2NDhc''@;'; put 'put ''dTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsIiVkIFx1MDYyYlx1MDYyN1x1''@;'; put 'put ''MDY0Nlx1MDY0YVx1MDYyOSIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSJdLG06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSBcdTA2NDhcdTA2''@;'; put 'put ''MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsIiVkIFx1MDYyZlx1MDY0''@;'; put 'put ''Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSJdLGg6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRc''@;'; put 'put ''dTA2MmZcdTA2MjkiLFsiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIiVkIFx1''@;'; put 'put ''MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSJdLGQ6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDY0YVx1MDY0OFx1MDY0NSIsIlx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUw''@;'; put 'put ''NjRhXHUwNjQ4XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NSJdLE06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzNFx1''@;'; put 'put ''MDY0N1x1MDYzMSIsIlx1MDYzNFx1MDY0N1x1MDYzMSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIsIiVkIFx1MDYz''@;'; put 'put ''NFx1MDY0N1x1MDYzMVx1MDYyNyIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMSJdLHk6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzOVx1MDYyN1x1MDY0NSIsIlx1MDYzOVx1MDYyN1x1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM5XHUwNjI3XHUw''@;'; put 'put ''NjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzOVx1MDY0OFx1MDYyN1x1MDY0NSIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NSJdfSxIPWZ1bmN0aW9uKEspe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihKLEksUixFKXt2YXIgej12KEopLGo9aGVbS11bdihKKV07cmV0dXJuIDI9PT16JiYoaj1qW0k/MDoxXSksai5yZXBsYWNlKC8lZC9pLEopfX0sQj1bIlx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1''@;'; put 'put ''MDYzMSIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDYzMyIsIlx1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OCIsIlx1MDYy''@;'; put 'put ''M1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzMyIsIlx1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyZlx1MDY0YVx1MDYzM1x1''@;'; put 'put ''MDY0NVx1MDYyOFx1MDYzMSJdO3NlLmRlZmluZUxvY2FsZSgiYXItbHkiLHttb250aHM6Qixtb250aHNTaG9ydDpCLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1''@;'; put 'put ''MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2Mjdc''@;'; put 'put ''dTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUw''@;'; put 'put ''NjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJp''@;'; put 'put ''ZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKEspe3JldHVybiJcdTA2NDUiPT09S30sbWVyaWRpZW06ZnVuY3Rpb24oSyxKLEkpe3JldHVybiBLPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1''@;'; put 'put ''MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4''@;'; put 'put ''dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixs''@;'; put 'put ''YXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixz''@;'; put 'put ''OkgoInMiKSxzczpIKCJzIiksbTpIKCJtIiksbW06SCgibSIpLGg6SCgiaCIpLGhoOkgoImgiKSxkOkgoImQiKSxkZDpIKCJkIiksTTpIKCJNIiksTU06SCgiTSIpLHk6SCgieSIpLHl5OkgoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oSyl7cmV0dXJuIEsucmVwbGFjZSgvXHUwNjBjL2csIiwi''@;'; put 'put ''KX0scG9zdGZvcm1hdDpmdW5jdGlvbihLKXtyZXR1cm4gSy5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEope3JldHVybiBrW0pdfSkucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShUKDE2Njc2KSl9LDU2Nzg5OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlv''@;'; put 'put ''bihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiYXItbWEiLHttb250aHM6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1''@;'; put 'put ''MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2MzRcdTA2MmFfXHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYy''@;'; put 'put ''YVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUw''@;'; put 'put ''NjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0''@;'; put 'put ''XHUwNjJhX1x1MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjI3''@;'; put 'put ''XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIx''@;'; put 'put ''X1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyN1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2MmJc''@;'; put 'put ''dTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoi''@;'; put 'put ''RCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUw''@;'; put 'put ''NjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDYyNyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2Mjdc''@;'; put 'put ''dTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYy''@;'; put 'put ''N1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2''@;'; put 'put ''MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2''@;'; put 'put ''NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLE06Ilx1MDYzNFx1MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQgXHUwNjMzXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJhIn0sd2Vlazp7ZG93''@;'; put 'put ''OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNjg5NzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJcdTA2''@;'; put 'put ''NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0sdj17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIsIlx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifTtzZS5k''@;'; put 'put ''ZWZpbmVMb2NhbGUoImFyLXNhIix7bW9udGhzOiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3''@;'; put 'put ''XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhfXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2''@;'; put 'put ''NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1''@;'; put 'put ''MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4X1x1MDYy''@;'; put 'put ''M1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzM19cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2''@;'; put 'put ''MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0''@;'; put 'put ''NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0''@;'; put 'put ''NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDpt''@;'; put 'put ''bSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihIKXtyZXR1cm4iXHUwNjQ1''@;'; put 'put ''Ij09PUh9LG1lcmlkaWVtOmZ1bmN0aW9uKEgsQixMKXtyZXR1cm4gSDwxMj8iXHUwNjM1IjoiXHUwNjQ1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1''@;'; put 'put ''MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5''@;'; put 'put ''XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2''@;'; put 'put ''MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Iixt''@;'; put 'put ''OiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1Iixk''@;'; put 'put ''ZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHByZXBhcnNlOmZ1bmN0''@;'; put 'put ''aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEgpe3Jl''@;'; put 'put ''dHVybiBILnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQil7cmV0dXJuIGtbQl19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oVCgxNjY3NikpfSw3MTU4NTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVM''@;'; put 'put ''b2NhbGUoImFyLXRuIix7bW9udGhzOiJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGFfXHUwNjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYy''@;'; put 'put ''Y1x1MDY0OFx1MDYyN1x1MDY0Nl9cdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjlfXHUwNjIzXHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUw''@;'; put 'put ''NjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjJjXHUwNjI3XHUwNjQ2XHUwNjQxXHUwNjRhX1x1MDY0MVx1MDY0YVx1MDY0MVx1MDYzMVx1MDY0YV9cdTA2NDVcdTA2MjdcdTA2MzFc''@;'; put 'put ''dTA2MzNfXHUwNjIzXHUwNjQxXHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MmNcdTA2NDhcdTA2MjdcdTA2NDZfXHUwNjJjXHUwNjQ4XHUwNjRhXHUwNjQ0XHUwNjRhXHUwNjI5X1x1MDYyM1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2MjhcdTA2MmFcdTA2NDVcdTA2''@;'; put 'put ''MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2NGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYy''@;'; put 'put ''ZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2''@;'; put 'put ''MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2''@;'; put 'put ''X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNN''@;'; put 'put ''aW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6''@;'; put 'put ''IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5l''@;'; put 'put ''eHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIs''@;'; put 'put ''bGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2''@;'; put 'put ''NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIz''@;'; put 'put ''XHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2''@;'; put 'put ''Njc2KSl9LDIyMDk3OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXsxOiJcdTA2NjEiLDI6Ilx1MDY2MiIsMzoiXHUwNjYzIiw0OiJcdTA2NjQiLDU6Ilx1MDY2NSIsNjoiXHUwNjY2Iiw3OiJcdTA2NjciLDg6Ilx1MDY2OCIsOToiXHUwNjY5Iiww''@;'; put 'put ''OiJcdTA2NjAifSx2PXsiXHUwNjYxIjoiMSIsIlx1MDY2MiI6IjIiLCJcdTA2NjMiOiIzIiwiXHUwNjY0IjoiNCIsIlx1MDY2NSI6IjUiLCJcdTA2NjYiOiI2IiwiXHUwNjY3IjoiNyIsIlx1MDY2OCI6IjgiLCJcdTA2NjkiOiI5IiwiXHUwNjYwIjoiMCJ9LGhlPWZ1bmN0aW9uKEope3JldHVy''@;'; put 'put ''biAwPT09Sj8wOjE9PT1KPzE6Mj09PUo/MjpKJTEwMD49MyYmSiUxMDA8PTEwPzM6SiUxMDA+PTExPzQ6NX0sSD17czpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5''@;'; put 'put ''IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJi''@;'; put 'put ''XHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5Il0sbTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1''@;'; put 'put ''MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUw''@;'; put 'put ''NjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5Il0saDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYy''@;'; put 'put ''N1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5''@;'; put 'put ''IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2''@;'; put 'put ''NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYg''@;'; put 'put ''XHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwi''@;'; put 'put ''JWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5XHUwNjI3XHUwNjQ1IiwiXHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2Mzlc''@;'; put 'put ''dTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LEI9ZnVuY3Rp''@;'; put 'put ''b24oSil7cmV0dXJuIGZ1bmN0aW9uKEksUixFLHope3ZhciBqPWhlKEkpLFY9SFtKXVtoZShJKV07cmV0dXJuIDI9PT1qJiYoVj1WW1I/MDoxXSksVi5yZXBsYWNlKC8lZC9pLEkpfX0sTD1bIlx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMSIsIlx1MDY0MVx1MDYyOFx1MDYzMVx1MDYy''@;'; put 'put ''N1x1MDY0YVx1MDYzMSIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDYzMyIsIlx1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyN1x1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OCIsIlx1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0''@;'; put 'put ''OCIsIlx1MDYyM1x1MDYzYVx1MDYzM1x1MDYzN1x1MDYzMyIsIlx1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyZlx1MDY0''@;'; put 'put ''YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSJdO3NlLmRlZmluZUxvY2FsZSgiYXIiLHttb250aHM6TCxtb250aHNTaG9ydDpMLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1''@;'; put 'put ''MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9c''@;'; put 'put ''dTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjIzXHUwNjMxXHUwNjI4XHUw''@;'; put 'put ''NjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0i''@;'; put 'put ''fSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKEope3JldHVybiJcdTA2NDUiPT09Sn0sbWVyaWRpZW06ZnVuY3Rpb24oSixJLFIpe3JldHVybiBKPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1''@;'; put 'put ''MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBM''@;'; put 'put ''VCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2Mjld''@;'; put 'put ''IExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMw''@;'; put 'put ''ICVzIixzOkIoInMiKSxzczpCKCJzIiksbTpCKCJtIiksbW06QigibSIpLGg6QigiaCIpLGhoOkIoImgiKSxkOkIoImQiKSxkZDpCKCJkIiksTTpCKCJNIiksTU06QigiTSIpLHk6QigieSIpLHl5OkIoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oSil7cmV0dXJuIEoucmVwbGFjZSgvW1x1MDY2''@;'; put 'put ''MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbihJKXtyZXR1cm4gdltJXX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSil7cmV0dXJuIEoucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihJ''@;'; put 'put ''KXtyZXR1cm4ga1tJXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oVCgxNjY3NikpfSwxNTYxMTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiLWluY2kiLDU6Ii1pbmNpIiw4OiItaW5jaSIsNzA6''@;'; put 'put ''Ii1pbmNpIiw4MDoiLWluY2kiLDI6Ii1uY2kiLDc6Ii1uY2kiLDIwOiItbmNpIiw1MDoiLW5jaSIsMzoiLVx4ZmNuY1x4ZmMiLDQ6Ii1ceGZjbmNceGZjIiwxMDA6Ii1ceGZjbmNceGZjIiw2OiItbmNcdTAxMzEiLDk6Ii11bmN1IiwxMDoiLXVuY3UiLDMwOiItdW5jdSIsNjA6Ii1cdTAxMzFu''@;'; put 'put ''Y1x1MDEzMSIsOTA6Ii1cdTAxMzFuY1x1MDEzMSJ9O3NlLmRlZmluZUxvY2FsZSgiYXoiLHttb250aHM6InlhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVsX2F2cXVzdF9zZW50eWFicl9va3R5YWJyX25veWFicl9kZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inlh''@;'; put 'put ''bl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJCYXphcl9CYXphciBlcnRcdTAyNTlzaV9ceGM3XHUwMjU5clx1MDE1Zlx1MDI1OW5iXHUwMjU5IGF4XHUwMTVmYW1cdTAxMzFfXHhjN1x1MDI1OXJcdTAxNWZcdTAyNTlu''@;'; put 'put ''Ylx1MDI1OV9DXHhmY21cdTAyNTkgYXhcdTAxNWZhbVx1MDEzMV9DXHhmY21cdTAyNTlfXHUwMTVlXHUwMjU5bmJcdTAyNTkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQmF6X0J6RV9ceGM3QXhfXHhjN1x1MDI1OXJfQ0F4X0NceGZjbV9cdTAxNWVcdTAyNTluIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzTWluOiJCel9CRV9ceGM3QV9ceGM3XHUwMjU5X0NBX0NceGZjX1x1MDE1ZVx1MDI1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixM''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6IltzYWJhaCBzYWF0XSBMVCIsbmV4dFdlZWs6IltnXHUwMjU5bFx1MDI1OW4gaFx1MDI1OWZ0XHUwMjU5XSBk''@;'; put 'put ''ZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2RceGZjblx1MDI1OW5dIExUIixsYXN0V2VlazoiW2tlXHhlN1x1MDI1OW4gaFx1MDI1OWZ0XHUwMjU5XSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIFx1MDI1OXZ2''@;'; put 'put ''XHUwMjU5bCIsczoiYmlyIG5lXHhlN1x1MDI1OSBzYW5peVx1MDI1OSIsc3M6IiVkIHNhbml5XHUwMjU5IixtOiJiaXIgZFx1MDI1OXFpcVx1MDI1OSIsbW06IiVkIGRcdTAyNTlxaXFcdTAyNTkiLGg6ImJpciBzYWF0IixoaDoiJWQgc2FhdCIsZDoiYmlyIGdceGZjbiIsZGQ6IiVkIGdceGZj''@;'; put 'put ''biIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciBpbCIseXk6IiVkIGlsIn0sbWVyaWRpZW1QYXJzZTovZ2VjXHUwMjU5fHNcdTAyNTloXHUwMjU5cnxnXHhmY25kXHhmY3p8YXhcdTAxNWZhbS8saXNQTTpmdW5jdGlvbihoZSl7cmV0dXJuL14oZ1x4ZmNuZFx4ZmN6fGF4XHUwMTVmYW0p''@;'; put 'put ''JC8udGVzdChoZSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGhlLEgsQil7cmV0dXJuIGhlPDQ/ImdlY1x1MDI1OSI6aGU8MTI/InNcdTAyNTloXHUwMjU5ciI6aGU8MTc/ImdceGZjbmRceGZjeiI6ImF4XHUwMTVmYW0ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTAxMzFuY1x1''@;'; put 'put ''MDEzMXxpbmNpfG5jaXxceGZjbmNceGZjfG5jXHUwMTMxfHVuY3UpLyxvcmRpbmFsOmZ1bmN0aW9uKGhlKXtpZigwPT09aGUpcmV0dXJuIGhlKyItXHUwMTMxbmNcdTAxMzEiO3ZhciBIPWhlJTEwO3JldHVybiBoZSsoa1tIXXx8a1toZSUxMDAtSF18fGtbaGU+PTEwMD8xMDA6bnVsbF0pfSx3''@;'; put 'put ''ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw2MjQ1OTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB2KEgsQixMKXtyZXR1cm4ibSI9PT1MP0I/Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQzMCI6Ilx1''@;'; put 'put ''MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0MyI6ImgiPT09TD9CPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0NDMiOkgrIiAiK2Z1bmN0aW9uIGsoSCxCKXt2''@;'; put 'put ''YXIgTD1ILnNwbGl0KCJfIik7cmV0dXJuIEIlMTA9PTEmJkIlMTAwIT0xMT9MWzBdOkIlMTA+PTImJkIlMTA8PTQmJihCJTEwMDwxMHx8QiUxMDA+PTIwKT9MWzFdOkxbMl19KHtzczpCPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUw''@;'; put 'put ''NDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUwNDQxXHUwNDM1''@;'; put 'put ''XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpCPyJcdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZCI6Ilx1MDQ0NVx1''@;'; put 'put ''MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkIixoaDpCPyJcdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0MzBf''@;'; put 'put ''XHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkXHUwNDRiX1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZCI6Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZcdTA0M2RcdTA0''@;'; put 'put ''NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0MzdcdTA0NTFcdTA0M2QiLE1NOiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZfXHUwNDNjXHUw''@;'; put 'put ''NDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDRiX1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzMFx1MDQ1ZSIseXk6Ilx1MDQzM1x1MDQzZVx1MDQzNF9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDNlXHUwNDVlIn1bTF0sK0gpfXNlLmRl''@;'; put 'put ''ZmluZUxvY2FsZSgiYmUiLHttb250aHM6e2Zvcm1hdDoiXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzMFx1MDQzM1x1MDQzMF9cdTA0NDFcdTA0MzBcdTA0M2FcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FcdTA0''@;'; put 'put ''MzBfXHUwNDNhXHUwNDQwXHUwNDMwXHUwNDQxXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNhXHUwNDMwX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQ1ZVx1MDQzZFx1MDQ0Zl9cdTA0NDdcdTA0NGRcdTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDU2XHUwNDNmXHUwNDM1XHUw''@;'; put 'put ''NDNkXHUwNDRmX1x1MDQzNlx1MDQzZFx1MDQ1Nlx1MDQ1ZVx1MDQzZFx1MDQ0Zl9cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzBcdTA0NDFcdTA0M2RcdTA0NGZfXHUwNDNhXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDRiXHUwNDQ3XHUwNDNkXHUwNDU2XHUwNDNhXHUwNDMwX1x1MDQzYlx1''@;'; put 'put ''MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzZlx1MDQzMFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0M2RcdTA0MzVcdTA0MzZcdTA0M2RcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1''@;'; put 'put ''MDQ0ZVx1MDQ0Mlx1MDQ0Yl9cdTA0NDFcdTA0MzBcdTA0M2FcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FfXHUwNDNhXHUwNDQwXHUwNDMwXHUwNDQxXHUwNDMwXHUwNDMyXHUwNDU2XHUwNDNhX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0NDdcdTA0NGRc''@;'; put 'put ''dTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDU2XHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNlx1MDQzZFx1MDQ1Nlx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNh''@;'; put 'put ''XHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQwXHUwNDRiXHUwNDQ3XHUwNDNkXHUwNDU2XHUwNDNhX1x1MDQzYlx1MDQ1Nlx1MDQ0MVx1MDQ0Mlx1MDQzMFx1MDQzZlx1MDQzMFx1MDQzNF9cdTA0NDFcdTA0M2RcdTA0MzVcdTA0MzZcdTA0MzBcdTA0M2RcdTA0NGMiLnNwbGl0KCJfIil9LG1vbnRo''@;'; put 'put ''c1Nob3J0OiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRfXHUwNDNiXHUwNDRlXHUwNDQyX1x1MDQ0MVx1MDQzMFx1MDQzYV9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMl9cdTA0M2JcdTA0NTZcdTA0M2Zf''@;'; put 'put ''XHUwNDM2XHUwNDNkXHUwNDU2XHUwNDMyX1x1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNiIuc3BsaXQoIl8iKSx3ZWVrZGF5czp7Zm9ybWF0OiJcdTA0M2RcdTA0NGZcdTA0''@;'; put 'put ''MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0NGVfXHUwNDNmXHUwNDMwXHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDMwXHUwNDNhX1x1MDQzMFx1MDQ1ZVx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzBcdTA0MzRcdTA0''@;'; put 'put ''NDNfXHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0M19cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0NDMiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDNkXHUwNDRmXHUwNDM0XHUw''@;'; put 'put ''NDM3XHUwNDM1XHUwNDNiXHUwNDRmX1x1MDQzZlx1MDQzMFx1MDQzZFx1MDQ0Zlx1MDQzNFx1MDQzN1x1MDQzNVx1MDQzYlx1MDQzMFx1MDQzYV9cdTA0MzBcdTA0NWVcdTA0NDJcdTA0M2VcdTA0NDBcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDMwXHUwNDM0XHUwNDMwX1x1''@;'; put 'put ''MDQ0N1x1MDQzMFx1MDQ0Nlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0NTZcdTA0NDZcdTA0MzBfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9cWyA/W1x1MDQyM1x1MDQ0M1x1MDQ1ZV0gPyg/''@;'; put 'put ''Olx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0M1x1MDQ0ZXxcdTA0M2RcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0M2ZcdTA0M2RcdTA0NDNcdTA0NGUpPyA/XF0gP2RkZGQvfSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQzMFx1MDQ0''@;'; put 'put ''Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQ2X1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMwXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDZfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1''@;'; put 'put ''MDQzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkgXHUwNDMzLiIsTExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgXHUwNDMzLiwg''@;'; put 'put ''SEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQyMVx1MDQ1MVx1MDQzZFx1MDQzZFx1MDQ0ZiBcdTA0NWVdIExUIixuZXh0RGF5OiJbXHUwNDE3XHUwNDMwXHUwNDVlXHUwNDQyXHUwNDQwXHUwNDMwIFx1MDQ1ZV0gTFQiLGxhc3REYXk6IltcdTA0MjNcdTA0NDdcdTA0M2VcdTA0NDBc''@;'; put 'put ''dTA0MzAgXHUwNDVlXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW1x1MDQyM10gZGRkZCBbXHUwNDVlXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW1x1MDQyMyBcdTA0M2NcdTA0''@;'; put 'put ''NTZcdTA0M2RcdTA0NDNcdTA0M2JcdTA0NDNcdTA0NGVdIGRkZGQgW1x1MDQ1ZV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJbXHUwNDIzIFx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0Yl0gZGRkZCBbXHUwNDVlXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0''@;'; put 'put ''aXZlVGltZTp7ZnV0dXJlOiJcdTA0M2ZcdTA0NDBcdTA0MzBcdTA0MzcgJXMiLHBhc3Q6IiVzIFx1MDQ0Mlx1MDQzMFx1MDQzY1x1MDQ0MyIsczoiXHUwNDNkXHUwNDM1XHUwNDNhXHUwNDMwXHUwNDNiXHUwNDRjXHUwNDNhXHUwNDU2IFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1''@;'; put 'put ''MDQzNCIsbTp2LG1tOnYsaDp2LGhoOnYsZDoiXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjIixkZDp2LE06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0NiIsTU06dix5OiJcdTA0MzNcdTA0M2VcdTA0MzQiLHl5OnZ9LG1lcmlkaWVtUGFyc2U6L1x1MDQzZFx1MDQzZVx1MDQ0''@;'; put 'put ''N1x1MDQ0YnxcdTA0NDBcdTA0MzBcdTA0M2RcdTA0NTZcdTA0NDZcdTA0NGJ8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzMFx1MDQ0MFx1MDQzMC8saXNQTTpmdW5jdGlvbihIKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3''@;'; put 'put ''XHUwNDMwXHUwNDQwXHUwNDMwKSQvLnRlc3QoSCl9LG1lcmlkaWVtOmZ1bmN0aW9uKEgsQixMKXtyZXR1cm4gSDw0PyJcdTA0M2RcdTA0M2VcdTA0NDdcdTA0NGIiOkg8MTI/Ilx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0YiI6SDwxNz8iXHUwNDM0XHUwNDNkXHUwNDRmIjoi''@;'; put 'put ''XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMwIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDU2fFx1MDQ0YnxcdTA0MzNcdTA0MzApLyxvcmRpbmFsOmZ1bmN0aW9uKEgsQil7c3dpdGNoKEIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3''@;'; put 'put ''IjpjYXNlIlciOnJldHVybiBIJTEwIT0yJiZIJTEwIT0zfHxIJTEwMD09MTJ8fEglMTAwPT0xMz9IKyItXHUwNDRiIjpIKyItXHUwNDU2IjtjYXNlIkQiOnJldHVybiBIKyItXHUwNDMzXHUwNDMwIjtkZWZhdWx0OnJldHVybiBIfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0s''@;'; put 'put ''OTE4MjU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJiZyIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQz''@;'; put 'put ''OF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM4XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVc''@;'; put 'put ''dTA0M2ZcdTA0NDJcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDNlXHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzVcdTA0M2Nc''@;'; put 'put ''dTA0MzJcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQ0M19cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDRlXHUwNDNkXHUwNDM4X1x1MDQ0ZVx1''@;'; put 'put ''MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNmX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0MzVfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGZf''@;'; put 'put ''XHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0NGZcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDRh''@;'; put 'put ''XHUwNDQwXHUwNDQyXHUwNDRhXHUwNDNhX1x1MDQzZlx1MDQzNVx1MDQ0Mlx1MDQ0YVx1MDQzYV9cdTA0NDFcdTA0NGFcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDNkXHUwNDM1XHUwNDM0X1x1MDQzZlx1MDQzZVx1MDQzZF9cdTA0MzJc''@;'; put 'put ''dTA0NDJcdTA0M2VfXHUwNDQxXHUwNDQwXHUwNDRmX1x1MDQ0N1x1MDQzNVx1MDQ0Ml9cdTA0M2ZcdTA0MzVcdTA0NDJfXHUwNDQxXHUwNDRhXHUwNDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBf''@;'; put 'put ''XHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZ''@;'; put 'put ''WVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxNFx1MDQzZFx1MDQzNVx1MDQ0MSBcdTA0MzJdIExUIixuZXh0RGF5OiJbXHUwNDIzXHUwNDQyXHUwNDQwXHUwNDM1IFx1MDQzMl0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0MzJdIExUIixsYXN0RGF5OiJbXHUwNDEyXHUwNDQ3''@;'; put 'put ''XHUwNDM1XHUwNDQwXHUwNDMwIFx1MDQzMl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbXHUwNDFjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDNiXHUwNDMwXHUwNDQyXHUwNDMwXSBkZGRkIFtcdTA0MzJdIExU''@;'; put 'put ''IjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0MzBcdTA0M2JcdTA0MzhcdTA0NGZdIGRkZGQgW1x1MDQzMl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0ICVz''@;'; put 'put ''IixwYXN0OiJcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzggJXMiLHM6Ilx1MDQzZFx1MDQ0Zlx1MDQzYVx1MDQzZVx1MDQzYlx1MDQzYVx1MDQzZSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNc''@;'; put 'put ''dTA0M2RcdTA0MzRcdTA0MzgiLG06Ilx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzOCIsaDoiXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDMwIixkOiJc''@;'; put 'put ''dTA0MzRcdTA0MzVcdTA0M2QiLGRkOiIlZCBcdTA0MzRcdTA0MzVcdTA0M2RcdTA0MzAiLHc6Ilx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1MDQzMCIsd3c6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1MDQzOCIsTToiXHUwNDNjXHUwNDM1''@;'; put 'put ''XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIix5OiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiLHl5OiIlZCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzgifSxkYXlPZk1vbnRoT3Jk''@;'; put 'put ''aW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0MzVcdTA0MzJ8XHUwNDM1XHUwNDNkfFx1MDQ0Mlx1MDQzOHxcdTA0MzJcdTA0Mzh8XHUwNDQwXHUwNDM4fFx1MDQzY1x1MDQzOCkvLG9yZGluYWw6ZnVuY3Rpb24odil7dmFyIGhlPXYlMTAsSD12JTEwMDtyZXR1cm4gMD09PXY/disiLVx1MDQzNVx1''@;'; put 'put ''MDQzMiI6MD09PUg/disiLVx1MDQzNVx1MDQzZCI6SD4xMCYmSDwyMD92KyItXHUwNDQyXHUwNDM4IjoxPT09aGU/disiLVx1MDQzMlx1MDQzOCI6Mj09PWhlP3YrIi1cdTA0NDBcdTA0MzgiOjc9PT1oZXx8OD09PWhlP3YrIi1cdTA0M2NcdTA0MzgiOnYrIi1cdTA0NDJcdTA0MzgifSx3ZWVr''@;'; put 'put ''Ontkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw3NTkxODpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImJtIix7bW9udGhzOiJaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fsb19Bd2lyaWxpa2Fsb19NXHUwMjVi''@;'; put 'put ''a2Fsb19adXdcdTAyNWJua2Fsb19adWx1eWVrYWxvX1V0aWthbG9fU1x1MDI1YnRhbmJ1cnVrYWxvX1x1MDI1NGt1dFx1MDI1NGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2FsbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiWmFuX0Zld19NYXJfQXdpX01cdTAyNWJfWnV3X1p1''@;'; put 'put ''bF9VdGlfU1x1MDI1YnRfXHUwMjU0a3VfTm93X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiS2FyaV9OdFx1MDI1Ym5cdTAyNWJuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikthcl9OdFx1MDI1Yl9UYXJfQXJhX0FsYV9KdW1f''@;'; put 'put ''U2liIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJLYV9OdF9UYV9Bcl9BbF9KdV9TaSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIixMTEw6Ik1NTU0gW3RpbGVd''@;'; put 'put ''IEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIixMTExMOiJkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltCaSBsXHUwMjViclx1MDI1Yl0gTFQiLG5leHREYXk6IltTaW5pIGxcdTAyNWJy''@;'; put 'put ''XHUwMjViXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2RvbiBsXHUwMjViclx1MDI1Yl0gTFQiLGxhc3REYXk6IltLdW51IGxcdTAyNWJyXHUwMjViXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3RcdTAyNWJtXHUwMjVibmVuIGxcdTAyNWJyXHUwMjViXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToiJXMga1x1MDI1NG5cdTAyNTQiLHBhc3Q6ImEgYlx1MDI1YiAlcyBiXHUwMjU0IixzOiJzYW5nYSBkYW1hIGRhbWEiLHNzOiJzZWtvbmRpICVkIixtOiJtaW5pdGkga2VsZW4iLG1tOiJtaW5pdGkgJWQiLGg6ImxcdTAyNWJyXHUwMjViIGtlbGVuIixoaDoibFx1MDI1YnJc''@;'; put 'put ''dTAyNWIgJWQiLGQ6InRpbGUga2VsZW4iLGRkOiJ0aWxlICVkIixNOiJrYWxvIGtlbGVuIixNTToia2FsbyAlZCIseToic2FuIGtlbGVuIix5eToic2FuICVkIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNDk2ODM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MDllNyIsMjoiXHUwOWU4IiwzOiJcdTA5ZTkiLDQ6Ilx1MDllYSIsNToiXHUwOWViIiw2OiJcdTA5ZWMiLDc6Ilx1MDllZCIsODoiXHUwOWVlIiw5OiJcdTA5ZWYiLDA6Ilx1MDllNiJ9LHY9eyJcdTA5ZTciOiIxIiwiXHUwOWU4IjoiMiIsIlx1MDll''@;'; put 'put ''OSI6IjMiLCJcdTA5ZWEiOiI0IiwiXHUwOWViIjoiNSIsIlx1MDllYyI6IjYiLCJcdTA5ZWQiOiI3IiwiXHUwOWVlIjoiOCIsIlx1MDllZiI6IjkiLCJcdTA5ZTYiOiIwIn07c2UuZGVmaW5lTG9jYWxlKCJibi1iZCIse21vbnRoczoiXHUwOTljXHUwOWJlXHUwOWE4XHUwOWMxXHUwOWRmXHUw''@;'; put 'put ''OWJlXHUwOWIwXHUwOWJmX1x1MDlhYlx1MDljN1x1MDlhY1x1MDljZFx1MDliMFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIyX1x1MDlhZVx1MDljN19cdTA5OWNc''@;'; put 'put ''dTA5YzFcdTA5YThfXHUwOTljXHUwOWMxXHUwOWIyXHUwOWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOTg1XHUwOTk1XHUwOWNkXHUwOTlmXHUwOWNi''@;'; put 'put ''XHUwOWFjXHUwOWIwX1x1MDlhOFx1MDlhZFx1MDljN1x1MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMV9cdTA5YWJcdTA5''@;'; put 'put ''YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZc''@;'; put 'put ''dTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYl9cdTA5YThcdTA5YWRcdTA5YzdfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5YjBcdTA5YWNc''@;'; put 'put ''dTA5YmZcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI4XHUwOWNiXHUwOWFlXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzFcdTA5YTdcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMzXHUwOWI5''@;'; put 'put ''XHUwOWI4XHUwOWNkXHUwOWFhXHUwOWE0XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMFx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUw''@;'; put 'put ''OWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZl9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBf''@;'; put 'put ''XHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMzXHUwOWI5X1x1MDliNlx1MDljMVx1''@;'; put 'put ''MDk5NVx1MDljZFx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMVFM6IkEgaDptbTpzcyBcdTA5YjhcdTA5YWVcdTA5ZGYiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDk4Nlx1MDk5Y10gTFQiLG5leHREYXk6IltcdTA5ODZcdTA5OTdcdTA5YmVcdTA5''@;'; put 'put ''YWVcdTA5YzBcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5OTdcdTA5YTRcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixsYXN0V2VlazoiW1x1MDk5N1x1MDlhNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6IiVzIFx1MDlhYVx1MDliMFx1MDljNyIscGFzdDoiJXMgXHUwOTg2XHUwOTk3XHUwOWM3IixzOiJcdTA5OTVcdTA5ZGZcdTA5YzdcdTA5OTUgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixzczoiJWQgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4''@;'; put 'put ''XHUwOWNkXHUwOWExIixtOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixtbToiJWQgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixoOiJcdTA5OGZcdTA5OTUgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixoaDoiJWQgXHUwOTk4XHUw''@;'; put 'put ''OWE4XHUwOWNkXHUwOTlmXHUwOWJlIixkOiJcdTA5OGZcdTA5OTUgXHUwOWE2XHUwOWJmXHUwOWE4IixkZDoiJWQgXHUwOWE2XHUwOWJmXHUwOWE4IixNOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJlXHUwOWI4IixNTToiJWQgXHUwOWFlXHUwOWJlXHUwOWI4Iix5OiJcdTA5OGZcdTA5OTUg''@;'; put 'put ''XHUwOWFjXHUwOTliXHUwOWIwIix5eToiJWQgXHUwOWFjXHUwOTliXHUwOWIwIn0scHJlcGFyc2U6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvW1x1MDllN1x1MDllOFx1MDllOVx1MDllYVx1MDllYlx1MDllY1x1MDllZFx1MDllZVx1MDllZlx1MDllNl0vZyxmdW5jdGlvbihCKXty''@;'; put 'put ''ZXR1cm4gdltCXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQil7cmV0dXJuIGtbQl19KX0sbWVyaWRpZW1QYXJzZTovXHUwOWIwXHUwOWJlXHUwOWE0fFx1MDlhZFx1MDljYlx1MDliMHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8''@;'; put 'put ''XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmV8XHUwOWIwXHUwOWJlXHUwOWE0LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oSCxCKXtyZXR1cm4gMTI9PT1I''@;'; put 'put ''JiYoSD0wKSwiXHUwOWIwXHUwOWJlXHUwOWE0Ij09PUI/SDw0P0g6SCsxMjoiXHUwOWFkXHUwOWNiXHUwOWIwIj09PUJ8fCJcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjIiPT09Qj9IOiJcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjAiPT09Qj9IPj0zP0g6SCsxMjoiXHUwOWFjXHUwOWJm''@;'; put 'put ''XHUwOTk1XHUwOWJlXHUwOWIyIj09PUJ8fCJcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmUiPT09Qj9IKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDQ/Ilx1MDliMFx1MDliZVx1MDlhNCI6SDw2PyJcdTA5YWRcdTA5Y2JcdTA5''@;'; put 'put ''YjAiOkg8MTI/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6SDwxNT8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpIPDE4PyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOkg8MjA/Ilx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1MDljZFx1MDlhZlx1MDliZSI6Ilx1''@;'; put 'put ''MDliMFx1MDliZVx1MDlhNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShUKDE2Njc2KSl9LDM0MDY1OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXsxOiJcdTA5ZTciLDI6Ilx1MDllOCIsMzoiXHUwOWU5Iiw0OiJcdTA5ZWEiLDU6Ilx1MDllYiIs''@;'; put 'put ''NjoiXHUwOWVjIiw3OiJcdTA5ZWQiLDg6Ilx1MDllZSIsOToiXHUwOWVmIiwwOiJcdTA5ZTYifSx2PXsiXHUwOWU3IjoiMSIsIlx1MDllOCI6IjIiLCJcdTA5ZTkiOiIzIiwiXHUwOWVhIjoiNCIsIlx1MDllYiI6IjUiLCJcdTA5ZWMiOiI2IiwiXHUwOWVkIjoiNyIsIlx1MDllZSI6IjgiLCJc''@;'; put 'put ''dTA5ZWYiOiI5IiwiXHUwOWU2IjoiMCJ9O3NlLmRlZmluZUxvY2FsZSgiYm4iLHttb250aHM6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFcdTA5ZGZcdTA5YmVcdTA5YjBcdTA5YmZf''@;'; put 'put ''XHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUw''@;'; put 'put ''OWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmXHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYlx1MDlhY1x1MDliMF9cdTA5YThcdTA5YWRcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOWExXHUwOWJmXHUwOWI4XHUw''@;'; put 'put ''OWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5OWNcdTA5YmVcdTA5YThcdTA5YzFfXHUwOWFiXHUwOWM3XHUwOWFjXHUwOWNkXHUwOWIwXHUwOWMxX1x1MDlhZVx1MDliZVx1MDliMFx1MDljZFx1MDk5YV9cdTA5OGZcdTA5YWFcdTA5Y2Rc''@;'; put 'put ''dTA5YjBcdTA5YmZcdTA5YjJfXHUwOWFlXHUwOWM3X1x1MDk5Y1x1MDljMVx1MDlhOF9cdTA5OWNcdTA5YzFcdTA5YjJcdTA5YmVcdTA5ODdfXHUwOTg2XHUwOTk3XHUwOWI4XHUwOWNkXHUwOTlmX1x1MDliOFx1MDljN1x1MDlhYVx1MDljZFx1MDk5Zl9cdTA5ODVcdTA5OTVcdTA5Y2RcdTA5''@;'; put 'put ''OWZcdTA5Y2JfXHUwOWE4XHUwOWFkXHUwOWM3X1x1MDlhMVx1MDliZlx1MDliOFx1MDljNyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwOWIwXHUwOWFjXHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliOFx1MDljYlx1MDlhZVx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWVcdTA5OTlcdTA5''@;'; put 'put ''Y2RcdTA5OTdcdTA5YjJcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMxXHUwOWE3XHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5''@;'; put 'put ''YjBcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDliMFx1MDlhY1x1MDliZl9cdTA5YjhcdTA5Y2JcdTA5YWVfXHUwOWFlXHUwOTk5XHUwOWNkXHUwOTk3XHUwOWIyX1x1MDlhY1x1MDlj''@;'; put 'put ''MVx1MDlhN19cdTA5YWNcdTA5YzNcdTA5YjlcdTA5YjhcdTA5Y2RcdTA5YWFcdTA5YTRcdTA5YmZfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwX1x1MDliNlx1MDlhOFx1MDliZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1''@;'; put 'put ''MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOV9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1''@;'; put 'put ''MDliOFx1MDlhZVx1MDlkZiIsTFRTOiJBIGg6bW06c3MgXHUwOWI4XHUwOWFlXHUwOWRmIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gXHUw''@;'; put 'put ''OWI4XHUwOWFlXHUwOWRmIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA5ODZcdTA5OWNdIExUIixuZXh0RGF5OiJbXHUwOTg2XHUwOTk3XHUwOWJlXHUwOWFlXHUwOWMwXHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwOTk3XHUwOWE0XHUw''@;'; put 'put ''OTk1XHUwOWJlXHUwOWIyXSBMVCIsbGFzdFdlZWs6IltcdTA5OTdcdTA5YTRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA5YWFcdTA5YjBcdTA5YzciLHBhc3Q6IiVzIFx1MDk4Nlx1MDk5N1x1MDljNyIsczoiXHUwOTk1XHUwOWRmXHUwOWM3''@;'; put 'put ''XHUwOTk1IFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsc3M6IiVkIFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsbToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsbW06IiVkIFx1MDlhZVx1''@;'; put 'put ''MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsaDoiXHUwOThmXHUwOTk1IFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsaGg6IiVkIFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsZDoiXHUwOThmXHUwOTk1IFx1MDlhNlx1MDliZlx1MDlhOCIsZGQ6IiVkIFx1MDlhNlx1MDli''@;'; put 'put ''Zlx1MDlhOCIsTToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZVx1MDliOCIsTU06IiVkIFx1MDlhZVx1MDliZVx1MDliOCIseToiXHUwOThmXHUwOTk1IFx1MDlhY1x1MDk5Ylx1MDliMCIseXk6IiVkIFx1MDlhY1x1MDk5Ylx1MDliMCJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBI''@;'; put 'put ''LnJlcGxhY2UoL1tcdTA5ZTdcdTA5ZThcdTA5ZTlcdTA5ZWFcdTA5ZWJcdTA5ZWNcdTA5ZWRcdTA5ZWVcdTA5ZWZcdTA5ZTZdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEIpe3JldHVy''@;'; put 'put ''biBrW0JdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDliMFx1MDliZVx1MDlhNHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjBcdTA5YmVcdTA5YTQvLG1lcmlkaWVtSG91cjpm''@;'; put 'put ''dW5jdGlvbihILEIpe3JldHVybiAxMj09PUgmJihIPTApLCJcdTA5YjBcdTA5YmVcdTA5YTQiPT09QiYmSD49NHx8Ilx1MDlhNlx1MDljMVx1MDlhYVx1MDljMVx1MDliMCI9PT1CJiZIPDV8fCJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiPT09Qj9IKzEyOkh9LG1lcmlkaWVtOmZ1''@;'; put 'put ''bmN0aW9uKEgsQixMKXtyZXR1cm4gSDw0PyJcdTA5YjBcdTA5YmVcdTA5YTQiOkg8MTA/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6SDwxNz8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpIPDIwPyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOiJcdTA5YjBcdTA5''@;'; put 'put ''YmVcdTA5YTQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oVCgxNjY3NikpfSwxMTAzNDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwZjIxIiwyOiJcdTBmMjIiLDM6Ilx1MGYyMyIsNDoiXHUwZjI0Iiw1OiJcdTBmMjUiLDY6Ilx1MGYy''@;'; put 'put ''NiIsNzoiXHUwZjI3Iiw4OiJcdTBmMjgiLDk6Ilx1MGYyOSIsMDoiXHUwZjIwIn0sdj17Ilx1MGYyMSI6IjEiLCJcdTBmMjIiOiIyIiwiXHUwZjIzIjoiMyIsIlx1MGYyNCI6IjQiLCJcdTBmMjUiOiI1IiwiXHUwZjI2IjoiNiIsIlx1MGYyNyI6IjciLCJcdTBmMjgiOiI4IiwiXHUwZjI5Ijoi''@;'; put 'put ''OSIsIlx1MGYyMCI6IjAifTtzZS5kZWZpbmVMb2NhbGUoImJvIix7bW9udGhzOiJcdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTFcdTBmNDRcdTBmMGJcdTBmNTRcdTBmN2NfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjQyXHUwZjQ5XHUwZjcyXHUwZjY2XHUw''@;'; put 'put ''ZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY0Mlx1MGY2Nlx1MGY3NFx1MGY1OFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNWVcdTBmNzJcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUw''@;'; put 'put ''ZjBiXHUwZjYzXHUwZjk0XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGZiMlx1MGY3NFx1MGY0Mlx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNTFcdTBmNzRcdTBmNTNcdTBmMGJcdTBmNTRfXHUw''@;'; put 'put ''ZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjYyXHUwZjkyXHUwZmIxXHUwZjUxXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGY0Mlx1MGY3NFx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBm''@;'; put 'put ''NTZcdTBmNDVcdTBmNzRcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjQ1XHUwZjc0XHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY0NVx1MGY3''@;'; put 'put ''NFx1MGYwYlx1MGY0Mlx1MGY0OVx1MGY3Mlx1MGY2Nlx1MGYwYlx1MGY1NCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZjVmXHUwZmIzXHUwZjBiMV9cdTBmNWZcdTBmYjNcdTBmMGIyX1x1MGY1Zlx1MGZiM1x1MGYwYjNfXHUwZjVmXHUwZmIzXHUwZjBiNF9cdTBmNWZcdTBmYjNcdTBm''@;'; put 'put ''MGI1X1x1MGY1Zlx1MGZiM1x1MGYwYjZfXHUwZjVmXHUwZmIzXHUwZjBiN19cdTBmNWZcdTBmYjNcdTBmMGI4X1x1MGY1Zlx1MGZiM1x1MGYwYjlfXHUwZjVmXHUwZmIzXHUwZjBiMTBfXHUwZjVmXHUwZmIzXHUwZjBiMTFfXHUwZjVmXHUwZmIzXHUwZjBiMTIiLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''U2hvcnRSZWdleDovXihcdTBmNWZcdTBmYjNcdTBmMGJcZHsxLDJ9KS8sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjQ5XHUwZjcyXHUwZjBiXHUwZjU4XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1Zlx1MGZiM1x1''@;'; put 'put ''MGYwYlx1MGY1Nlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNThcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTFcdTBmNThcdTBmNjJcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjYzXHUwZmI3XHUwZjQyXHUwZjBiXHUwZjU0XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1''@;'; put 'put ''MGY2MFx1MGYwYlx1MGY1NVx1MGY3NFx1MGY2Mlx1MGYwYlx1MGY1Nlx1MGY3NF9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNTRcdTBmMGJcdTBmNjZcdTBmNDRcdTBmNjZcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjY2XHUwZmE0XHUwZjdhXHUwZjUzXHUwZjBiXHUw''@;'; put 'put ''ZjU0XHUwZjBiIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGY0OVx1MGY3Mlx1MGYwYlx1MGY1OFx1MGYwYl9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJfXHUwZjU4XHUwZjcyXHUwZjQyXHUwZjBiXHUwZjUxXHUwZjU4XHUwZjYyXHUwZjBiX1x1MGY2M1x1MGZiN1x1MGY0''@;'; put 'put ''Mlx1MGYwYlx1MGY1NFx1MGYwYl9cdTBmNTVcdTBmNzRcdTBmNjJcdTBmMGJcdTBmNTZcdTBmNzRfXHUwZjU0XHUwZjBiXHUwZjY2XHUwZjQ0XHUwZjY2XHUwZjBiX1x1MGY2Nlx1MGZhNFx1MGY3YVx1MGY1M1x1MGYwYlx1MGY1NFx1MGYwYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUw''@;'; put 'put ''ZjQ5XHUwZjcyX1x1MGY1Zlx1MGZiM19cdTBmNThcdTBmNzJcdTBmNDJfXHUwZjYzXHUwZmI3XHUwZjQyX1x1MGY1NVx1MGY3NFx1MGY2Ml9cdTBmNjZcdTBmNDRcdTBmNjZfXHUwZjY2XHUwZmE0XHUwZjdhXHUwZjUzIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixM''@;'; put 'put ''VFM6IkEgaDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGY1MVx1MGY3Mlx1MGYwYlx1MGY2Mlx1MGY3Mlx1MGY0NF0g''@;'; put 'put ''TFQiLG5leHREYXk6IltcdTBmNjZcdTBmNDRcdTBmMGJcdTBmNDlcdTBmNzJcdTBmNTNdIExUIixuZXh0V2VlazoiW1x1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NVx1MGZiMlx1MGY0Mlx1MGYwYlx1MGY2Mlx1MGY5N1x1MGY3YVx1MGY2Nlx1MGYwYlx1MGY1OF0sIExUIixs''@;'; put 'put ''YXN0RGF5OiJbXHUwZjQxXHUwZjBiXHUwZjY2XHUwZjQ0XSBMVCIsbGFzdFdlZWs6IltcdTBmNTZcdTBmNTFcdTBmNzRcdTBmNTNcdTBmMGJcdTBmNTVcdTBmYjJcdTBmNDJcdTBmMGJcdTBmNThcdTBmNTBcdTBmNjBcdTBmMGJcdTBmNThdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0''@;'; put 'put ''aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBmNjNcdTBmMGIiLHBhc3Q6IiVzIFx1MGY2Nlx1MGY5NFx1MGY1M1x1MGYwYlx1MGY2MyIsczoiXHUwZjYzXHUwZjU4XHUwZjBiXHUwZjY2XHUwZjQ0IixzczoiJWQgXHUwZjY2XHUwZjkwXHUwZjYyXHUwZjBiXHUwZjQ2XHUwZjBkIixtOiJcdTBmNjZc''@;'; put 'put ''dTBmOTBcdTBmNjJcdTBmMGJcdTBmNThcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLG1tOiIlZCBcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNTgiLGg6Ilx1MGY0Nlx1MGY3NFx1MGYwYlx1MGY1YVx1MGY3Y1x1MGY1MVx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIs''@;'; put 'put ''aGg6IiVkIFx1MGY0Nlx1MGY3NFx1MGYwYlx1MGY1YVx1MGY3Y1x1MGY1MSIsZDoiXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIixkZDoiJWQgXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiIixNOiJcdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJc''@;'; put 'put ''dTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLE1NOiIlZCBcdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTYiLHk6Ilx1MGY2M1x1MGY3Y1x1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIseXk6IiVkIFx1MGY2M1x1MGY3YyJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2Uo''@;'; put 'put ''L1tcdTBmMjFcdTBmMjJcdTBmMjNcdTBmMjRcdTBmMjVcdTBmMjZcdTBmMjdcdTBmMjhcdTBmMjlcdTBmMjBdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEIpe3JldHVybiBrW0JdfSl9''@;'; put 'put ''LG1lcmlkaWVtUGFyc2U6L1x1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3Y3xcdTBmNWVcdTBmN2NcdTBmNDJcdTBmNjZcdTBmMGJcdTBmNDBcdTBmNjZ8XHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0fFx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1''@;'; put 'put ''MGYwYlx1MGY1MVx1MGY0MnxcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihILEIpe3JldHVybiAxMj09PUgmJihIPTApLCJcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MiPT09QiYmSD49NHx8Ilx1MGY0OVx1MGY3''@;'; put 'put ''Mlx1MGY1M1x1MGYwYlx1MGY0Mlx1MGY3NFx1MGY0NCI9PT1CJiZIPDV8fCJcdTBmNTFcdTBmNDJcdTBmN2NcdTBmNDRcdTBmMGJcdTBmNTFcdTBmNDIiPT09Qj9IKzEyOkh9LG1lcmlkaWVtOmZ1bmN0aW9uKEgsQixMKXtyZXR1cm4gSDw0PyJcdTBmNThcdTBmNWFcdTBmNTNcdTBmMGJcdTBm''@;'; put 'put ''NThcdTBmN2MiOkg8MTA/Ilx1MGY1ZVx1MGY3Y1x1MGY0Mlx1MGY2Nlx1MGYwYlx1MGY0MFx1MGY2NiI6SDwxNz8iXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0IjpIPDIwPyJcdTBmNTFcdTBmNDJcdTBmN2NcdTBmNDRcdTBmMGJcdTBmNTFcdTBmNDIiOiJcdTBm''@;'; put 'put ''NThcdTBmNWFcdTBmNTNcdTBmMGJcdTBmNThcdTBmN2MifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oVCgxNjY3NikpfSwyNzY3MTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBrKFYsRyxXKXtyZXR1cm4gVisiICIrZnVuY3Rpb24gSChWLEcp''@;'; put 'put ''e3JldHVybiAyPT09Rz9mdW5jdGlvbiBCKFYpe3ZhciBHPXttOiJ2IixiOiJ2IixkOiJ6In07cmV0dXJuIHZvaWQgMD09PUdbVi5jaGFyQXQoMCldP1Y6R1tWLmNoYXJBdCgwKV0rVi5zdWJzdHJpbmcoMSl9KFYpOlZ9KHttbToibXVudXRlbm4iLE1NOiJtaXoiLGRkOiJkZXZlemgifVtXXSxW''@;'; put 'put ''KX1mdW5jdGlvbiBoZShWKXtyZXR1cm4gVj45P2hlKFYlMTApOlZ9dmFyIEw9Wy9eZ2VuL2ksL15jW1x1MDJiY1wnXWh3ZS9pLC9ebWV1L2ksL15lYnIvaSwvXm1hZS9pLC9eKG1lenxldmUpL2ksL15nb3UvaSwvXmVvcy9pLC9eZ3dlL2ksL15oZXIvaSwvXmR1L2ksL15rZXIvaV0sSz0vXihn''@;'; put 'put ''ZW52ZXJ8Y1tcdTAyYmNcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dXxnZW58Y1tcdTAyYmNcJ11od2V8bWV1fGVicnxtYWV8ZXZlfGdvdXxlb3N8Z3dlfGhlcnxkdXxrZXIpL2ksej1bL15TdS9pLC9eTHUvaSwv''@;'; put 'put ''Xk1lKFtecl18JCkvaSwvXk1lci9pLC9eWWEvaSwvXkd3L2ksL15TYS9pXTtzZS5kZWZpbmVMb2NhbGUoImJyIix7bW9udGhzOiJHZW52ZXJfQ1x1MDJiY2h3ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Ii5zcGxpdCgi''@;'; put 'put ''XyIpLG1vbnRoc1Nob3J0OiJHZW5fQ1x1MDJiY2h3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlciIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VsX0x1bl9NZXVyemhfTWVyY1x1MDJiY2hlcl9ZYW91X0d3ZW5lcl9TYWRvcm4iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9MdV9NZV9NZXJfWWFfR3dfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZTp6LGZ1bGxXZWVrZGF5c1BhcnNlOlsvXnN1bC9pLC9ebHVuL2ksL15tZXVyemgvaSwvXm1lcmNbXHUwMmJj''@;'; put 'put ''XCddaGVyL2ksL155YW91L2ksL15nd2VuZXIvaSwvXnNhZG9ybi9pXSxzaG9ydFdlZWtkYXlzUGFyc2U6Wy9eU3VsL2ksL15MdW4vaSwvXk1ldS9pLC9eTWVyL2ksL15ZYW8vaSwvXkd3ZS9pLC9eU2FkL2ldLG1pbldlZWtkYXlzUGFyc2U6eixtb250aHNSZWdleDpLLG1vbnRoc1Nob3J0UmVn''@;'; put 'put ''ZXg6Syxtb250aHNTdHJpY3RSZWdleDovXihnZW52ZXJ8Y1tcdTAyYmNcJ11od2V2cmVyfG1ldXJ6aHxlYnJlbHxtYWV8bWV6aGV2ZW58Z291ZXJlfGVvc3R8Z3dlbmdvbG98aGVyZXxkdXxrZXJ6dSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGdlbnxjW1x1MDJiY1wnXWh3ZXxtZXV8''@;'; put 'put ''ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSxtb250aHNQYXJzZTpMLGxvbmdNb250aHNQYXJzZTpMLHNob3J0TW9udGhzUGFyc2U6TCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbYSB2aXpdIE1NTU0g''@;'; put 'put ''WVlZWSIsTExMOiJEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFthIHZpel0gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIaXppdiBkYV0gTFQiLG5leHREYXk6IltXYXJjXHUwMmJjaG9hemggZGFdIExUIixuZXh0V2VlazoiZGRkZCBbZGFd''@;'; put 'put ''IExUIixsYXN0RGF5OiJbRGVjXHUwMmJjaCBkYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtwYXNldCBkYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImEtYmVubiAlcyIscGFzdDoiJXMgXHUwMmJjem8iLHM6InVuIG5lYmV1ZCBzZWdvbmRlbm5vXHhmOSIsc3M6IiVk''@;'; put 'put ''IGVpbGVubiIsbToidXIgdnVudXRlbm4iLG1tOmssaDoidW4gZXVyIixoaDoiJWQgZXVyIixkOiJ1biBkZXZlemgiLGRkOmssTToidXIgbWl6IixNTTprLHk6InVyIGJsb2F6Iix5eTpmdW5jdGlvbiB2KFYpe3N3aXRjaChoZShWKSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2Ug''@;'; put 'put ''OTpyZXR1cm4gVisiIGJsb2F6IjtkZWZhdWx0OnJldHVybiBWKyIgdmxvYXoifX19LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oYVx4ZjF8dmV0KS8sb3JkaW5hbDpmdW5jdGlvbihWKXtyZXR1cm4gVisoMT09PVY/ImFceGYxIjoidmV0Iil9LHdlZWs6e2RvdzoxLGRveTo0fSxt''@;'; put 'put ''ZXJpZGllbVBhcnNlOi9hLm0ufGcubS4vLGlzUE06ZnVuY3Rpb24oVil7cmV0dXJuImcubS4iPT09Vn0sbWVyaWRpZW06ZnVuY3Rpb24oVixHLFcpe3JldHVybiBWPDEyPyJhLm0uIjoiZy5tLiJ9fSl9KFQoMTY2NzYpKX0sMzgxNTM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7ZnVuY3Rpb24gayhoZSxILEIpe3ZhciBMPWhlKyIgIjtzd2l0Y2goQil7Y2FzZSJzcyI6cmV0dXJuIEwrKDE9PT1oZT8ic2VrdW5kYSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8ic2VrdW5kZSI6InNla3VuZGkiKTtjYXNlIm0iOnJldHVybiBIPyJqZWRuYSBtaW51dGEi''@;'; put 'put ''OiJqZWRuZSBtaW51dGUiO2Nhc2UibW0iOnJldHVybiBMKygxPT09aGU/Im1pbnV0YSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8ibWludXRlIjoibWludXRhIik7Y2FzZSJoIjpyZXR1cm4gSD8iamVkYW4gc2F0IjoiamVkbm9nIHNhdGEiO2Nhc2UiaGgiOnJldHVybiBMKygxPT09aGU/InNh''@;'; put 'put ''dCI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gTCsoMT09PWhlPyJkYW4iOiJkYW5hIik7Y2FzZSJNTSI6cmV0dXJuIEwrKDE9PT1oZT8ibWplc2VjIjoyPT09aGV8fDM9PT1oZXx8ND09PWhlPyJtamVzZWNhIjoibWplc2VjaSIpO2Nhc2Ui''@;'; put 'put ''eXkiOnJldHVybiBMKygxPT09aGU/ImdvZGluYSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8iZ29kaW5lIjoiZ29kaW5hIil9fXNlLmRlZmluZUxvY2FsZSgiYnMiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9i''@;'; put 'put ''YXJfbm92ZW1iYXJfZGVjZW1iYXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGplbGphX3BvbmVkamVs''@;'; put 'put ''amFrX3V0b3Jha19zcmlqZWRhX1x1MDEwZGV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfXHUwMTBkZV9wZV9zdSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2Fs''@;'; put 'put ''ZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERheToiW3N1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBMVCI7''@;'; put 'put ''Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlciB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNh''@;'; put 'put ''c2UgMzpyZXR1cm4iW3Byb1x1MDE2MWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvXHUwMTYxbGVdIFtzdWJvdGVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJvXHUwMTYxbGldIGRkZGQgW3VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmlqZSAlcyIsczoicGFyIHNla3VuZGkiLHNzOmssbTprLG1tOmssaDprLGhoOmssZDoiZGFuIixkZDprLE06Im1qZXNlYyIsTU06ayx5OiJnb2RpbnUiLHl5Omt9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3Jk''@;'; put 'put ''aW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw1NDI4NzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImNhIix7bW9udGhzOntzdGFuZGFsb25lOiJnZW5lcl9mZWJyZXJfbWFyXHhlN19hYnJpbF9t''@;'; put 'put ''YWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUiLnNwbGl0KCJfIiksZm9ybWF0OiJkZSBnZW5lcl9kZSBmZWJyZXJfZGUgbWFyXHhlN19kJ2FicmlsX2RlIG1haWdfZGUganVueV9kZSBqdWxpb2xfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29j''@;'; put 'put ''dHVicmVfZGUgbm92ZW1icmVfZGUgZGVzZW1icmUiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhccykrTU1NTS99LG1vbnRoc1Nob3J0OiJnZW4uX2ZlYnIuX21hclx4ZTdfYWJyLl9tYWlnX2p1bnlfanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRn''@;'; put 'put ''X2RsX2R0X2RjX2RqX2R2X2RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbZGVdIFlZWVkiLGxsOiJEIE1NTSBZWVlZIixMTEw6IkQgTU1NTSBbZGVdIFlZ''@;'; put 'put ''WVkgW2EgbGVzXSBIOm1tIixsbGw6IkQgTU1NIFlZWVksIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0iLGxsbGw6ImRkZCBEIE1NTSBZWVlZLCBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F2dWkgYSAiKygxIT09dGhp''@;'; put 'put ''cy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbZGVtXHhlMCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/Imxl''@;'; put 'put ''cyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoi''@;'; put 'put ''bGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImQnYXF1XHhlZCAlcyIscGFzdDoiZmEgJXMiLHM6InVucyBzZWdvbnMiLHNzOiIlZCBzZWdvbnMiLG06InVuIG1pbnV0IixtbToiJWQgbWludXRzIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmVzIixkOiJ1''@;'; put 'put ''biBkaWEiLGRkOiIlZCBkaWVzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNvcyIseToidW4gYW55Iix5eToiJWQgYW55cyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0ocnxufHR8XHhlOHxhKS8sb3JkaW5hbDpmdW5jdGlvbih2LGhlKXt2YXIgSD0xPT09dj8iciI6Mj09PXY/Im4i''@;'; put 'put ''OjM9PT12PyJyIjo0PT09dj8idCI6Ilx4ZTgiO3JldHVybigidyI9PT1oZXx8IlciPT09aGUpJiYoSD0iYSIpLHYrSH0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNzI2MTY6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9e2Zvcm1h''@;'; put 'put ''dDoibGVkZW5fXHhmYW5vcl9iXHUwMTU5ZXplbl9kdWJlbl9rdlx1MDExYnRlbl9cdTAxMGRlcnZlbl9cdTAxMGRlcnZlbmVjX3NycGVuX3pceGUxXHUwMTU5XHhlZF9cdTAxNTlceGVkamVuX2xpc3RvcGFkX3Byb3NpbmVjIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6ImxlZG5hX1x4ZmFub3Jh''@;'; put 'put ''X2JcdTAxNTllem5hX2R1Ym5hX2t2XHUwMTFidG5hX1x1MDEwZGVydm5hX1x1MDEwZGVydmVuY2Vfc3JwbmFfelx4ZTFcdTAxNTlceGVkX1x1MDE1OVx4ZWRqbmFfbGlzdG9wYWR1X3Byb3NpbmNlIi5zcGxpdCgiXyIpfSx2PSJsZWRfXHhmYW5vX2JcdTAxNTllX2R1Yl9rdlx1MDExYl9cdTAx''@;'; put 'put ''MGR2bl9cdTAxMGR2Y19zcnBfelx4ZTFcdTAxNTlfXHUwMTU5XHhlZGpfbGlzX3BybyIuc3BsaXQoIl8iKSxoZT1bL15sZWQvaSwvXlx4ZmFuby9pLC9eYlx1MDE1OWUvaSwvXmR1Yi9pLC9ea3ZcdTAxMWIvaSwvXihcdTAxMGR2bnxcdTAxMGRlcnZlbiR8XHUwMTBkZXJ2bmEpL2ksL14oXHUw''@;'; put 'put ''MTBkdmN8XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlKS9pLC9ec3JwL2ksL156XHhlMVx1MDE1OS9pLC9eXHUwMTU5XHhlZGovaSwvXmxpcy9pLC9ecHJvL2ldLEg9L14obGVkZW58XHhmYW5vcnxiXHUwMTU5ZXplbnxkdWJlbnxrdlx1MDExYnRlbnxcdTAxMGRlcnZlbmVjfFx1MDEwZGVy''@;'; put 'put ''dmVuY2V8XHUwMTBkZXJ2ZW58XHUwMTBkZXJ2bmF8c3JwZW58elx4ZTFcdTAxNTlceGVkfFx1MDE1OVx4ZWRqZW58bGlzdG9wYWR8cHJvc2luZWN8bGVkfFx4ZmFub3xiXHUwMTU5ZXxkdWJ8a3ZcdTAxMWJ8XHUwMTBkdm58XHUwMTBkdmN8c3JwfHpceGUxXHUwMTU5fFx1MDE1OVx4ZWRqfGxp''@;'; put 'put ''c3xwcm8pL2k7ZnVuY3Rpb24gQihKKXtyZXR1cm4gSj4xJiZKPDUmJjEhPX5+KEovMTApfWZ1bmN0aW9uIEwoSixJLFIsRSl7dmFyIHo9SisiICI7c3dpdGNoKFIpe2Nhc2UicyI6cmV0dXJuIEl8fEU/InBceGUxciBzZWt1bmQiOiJwXHhlMXIgc2VrdW5kYW1pIjtjYXNlInNzIjpyZXR1cm4g''@;'; put 'put ''SXx8RT96KyhCKEopPyJzZWt1bmR5Ijoic2VrdW5kIik6eisic2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBJPyJtaW51dGEiOkU/Im1pbnV0dSI6Im1pbnV0b3UiO2Nhc2UibW0iOnJldHVybiBJfHxFP3orKEIoSik/Im1pbnV0eSI6Im1pbnV0Iik6eisibWludXRhbWkiO2Nhc2UiaCI6cmV0''@;'; put 'put ''dXJuIEk/ImhvZGluYSI6RT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIEl8fEU/eisoQihKKT8iaG9kaW55IjoiaG9kaW4iKTp6KyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gSXx8RT8iZGVuIjoiZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIEl8fEU/eisoQihKKT8iZG55Ijoi''@;'; put 'put ''ZG5ceGVkIik6eisiZG55IjtjYXNlIk0iOnJldHVybiBJfHxFPyJtXHUwMTFic1x4ZWRjIjoibVx1MDExYnNceGVkY2VtIjtjYXNlIk1NIjpyZXR1cm4gSXx8RT96KyhCKEopPyJtXHUwMTFic1x4ZWRjZSI6Im1cdTAxMWJzXHhlZGNcdTAxNmYiKTp6KyJtXHUwMTFic1x4ZWRjaSI7Y2FzZSJ5''@;'; put 'put ''IjpyZXR1cm4gSXx8RT8icm9rIjoicm9rZW0iO2Nhc2UieXkiOnJldHVybiBJfHxFP3orKEIoSik/InJva3kiOiJsZXQiKTp6KyJsZXR5In19c2UuZGVmaW5lTG9jYWxlKCJjcyIse21vbnRoczprLG1vbnRoc1Nob3J0OnYsbW9udGhzUmVnZXg6SCxtb250aHNTaG9ydFJlZ2V4OkgsbW9udGhz''@;'; put 'put ''U3RyaWN0UmVnZXg6L14obGVkZW58bGVkbmF8XHhmYW5vcmF8XHhmYW5vcnxiXHUwMTU5ZXplbnxiXHUwMTU5ZXpuYXxkdWJlbnxkdWJuYXxrdlx1MDExYnRlbnxrdlx1MDExYnRuYXxcdTAxMGRlcnZlbmVjfFx1MDEwZGVydmVuY2V8XHUwMTBkZXJ2ZW58XHUwMTBkZXJ2bmF8c3JwZW58c3Jw''@;'; put 'put ''bmF8elx4ZTFcdTAxNTlceGVkfFx1MDE1OVx4ZWRqZW58XHUwMTU5XHhlZGpuYXxsaXN0b3BhZHV8bGlzdG9wYWR8cHJvc2luZWN8cHJvc2luY2UpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihsZWR8XHhmYW5vfGJcdTAxNTllfGR1Ynxrdlx1MDExYnxcdTAxMGR2bnxcdTAxMGR2Y3xz''@;'; put 'put ''cnB8elx4ZTFcdTAxNTl8XHUwMTU5XHhlZGp8bGlzfHBybykvaSxtb250aHNQYXJzZTpoZSxsb25nTW9udGhzUGFyc2U6aGUsc2hvcnRNb250aHNQYXJzZTpoZSx3ZWVrZGF5czoibmVkXHUwMTFibGVfcG9uZFx1MDExYmxceGVkX1x4ZmF0ZXJceGZkX3N0XHUwMTU5ZWRhX1x1MDEwZHR2cnRl''@;'; put 'put ''a19wXHhlMXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVfcG9fXHhmYXRfc3RfXHUwMTBkdF9wXHhlMV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fXHhmYXRfc3RfXHUwMTBkdF9wXHhlMV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgSDptbSIsbDoiRC4gTS4gWVlZWSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToi''@;'; put 'put ''W3pceGVkdHJhIHZdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZFx1MDExYmxpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0XHUwMTU5ZWR1IHZdIExU''@;'; put 'put ''IjtjYXNlIDQ6cmV0dXJuIlt2ZSBcdTAxMGR0dnJ0ZWsgdl0gTFQiO2Nhc2UgNTpyZXR1cm4iW3YgcFx4ZTF0ZWsgdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IHZdIExUIn19LGxhc3REYXk6Ilt2XHUwMTBkZXJhIHZdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlz''@;'; put 'put ''LmRheSgpKXtjYXNlIDA6cmV0dXJuIlttaW51bG91IG5lZFx1MDExYmxpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWxceGU5XSBkZGRkIFt2XSBMVCI7Y2FzZSAzOnJldHVybiJbbWludWxvdSBzdFx1MDE1OWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVs''@;'; put 'put ''XHhmZF0gZGRkZCBbdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsb3Ugc29ib3R1IHZdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwXHUwMTU5ZWQgJXMiLHM6TCxzczpMLG06TCxtbTpMLGg6TCxoaDpMLGQ6TCxkZDpMLE06TCxNTTpM''@;'; put 'put ''LHk6TCx5eTpMfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMjcwNDk6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJjdiIs''@;'; put 'put ''e21vbnRoczoiXHUwNDNhXHUwNGQxXHUwNDQwXHUwNDNiXHUwNDMwXHUwNDQ3X1x1MDQzZFx1MDQzMFx1MDQ0MFx1MDRkMVx1MDQ0MV9cdTA0M2ZcdTA0NDNcdTA0NDhfXHUwNDMwXHUwNDNhXHUwNDMwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0YWJcdTA0ZDdcdTA0NDBcdTA0NDJcdTA0M2Nc''@;'; put 'put ''dTA0MzVfXHUwNDQzXHUwNDQyXHUwNGQxX1x1MDRhYlx1MDQ0M1x1MDQ0MFx1MDQzYlx1MDQzMF9cdTA0MzBcdTA0MzJcdTA0ZDFcdTA0M2RfXHUwNDRlXHUwNDNmXHUwNDMwX1x1MDQ0N1x1MDRmM1x1MDQzYV9cdTA0NDBcdTA0MzBcdTA0NDhcdTA0NDJcdTA0MzBcdTA0MzIiLnNwbGl0KCJf''@;'; put 'put ''IiksbW9udGhzU2hvcnQ6Ilx1MDQzYVx1MDRkMVx1MDQ0MF9cdTA0M2RcdTA0MzBcdTA0NDBfXHUwNDNmXHUwNDQzXHUwNDQ4X1x1MDQzMFx1MDQzYVx1MDQzMF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNGFiXHUwNGQ3XHUwNDQwX1x1MDQ0M1x1MDQ0Mlx1MDRkMV9cdTA0YWJcdTA0NDNcdTA0''@;'; put 'put ''NDBfXHUwNDMwXHUwNDMyXHUwNDNkX1x1MDQ0ZVx1MDQzZlx1MDQzMF9cdTA0NDdcdTA0ZjNcdTA0M2FfXHUwNDQwXHUwNDMwXHUwNDQ4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MzJcdTA0NGJcdTA0NDBcdTA0NDFcdTA0MzBcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FcdTA0NDNcdTA0''@;'; put 'put ''M2RfXHUwNDQyXHUwNDQzXHUwNDNkXHUwNDQyXHUwNDM4XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0Ylx1MDQ0Mlx1MDQzYlx1MDQzMFx1MDQ0MFx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGVcdTA0M2RcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDNhXHUwNGQ3XHUwNGFiXHUwNDNkXHUw''@;'; put 'put ''NDM1XHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQ0ZFx1MDQ0MFx1MDQzZFx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NDhcdTA0ZDFcdTA0M2NcdTA0MzBcdTA0NDJcdTA0M2FcdTA0NDNcdTA0M2QiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDMy''@;'; put 'put ''XHUwNDRiXHUwNDQwX1x1MDQ0Mlx1MDQ0M1x1MDQzZF9cdTA0NGJcdTA0NDJcdTA0M2JfXHUwNDRlXHUwNDNkX1x1MDQzYVx1MDRkN1x1MDRhYl9cdTA0NGRcdTA0NDBcdTA0M2RfXHUwNDQ4XHUwNGQxXHUwNDNjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MzJcdTA0NDBfXHUwNDQy''@;'; put 'put ''XHUwNDNkX1x1MDQ0Ylx1MDQ0Ml9cdTA0NGVcdTA0M2RfXHUwNDNhXHUwNGFiX1x1MDQ0ZFx1MDQ0MF9cdTA0NDhcdTA0M2MiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IllZWVkgW1x1MDRhYlx1MDQ0M1x1''@;'; put 'put ''MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0ZDdcdTA0NDhcdTA0ZDddIixMTEw6IllZWVkgW1x1MDRhYlx1MDQ0M1x1MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1''@;'; put 'put ''XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0ZDdcdTA0NDhcdTA0ZDddLCBISDptbSIsTExMTDoiZGRkZCwgWVlZWSBbXHUwNGFiXHUwNDQzXHUwNDNiXHUwNDQ1XHUwNDM4XSBNTU1NIFtcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDVcdTA0ZDdcdTA0M2RdIERbLVx1MDQzY1x1MDRkN1x1MDQ0''@;'; put 'put ''OFx1MDRkN10sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MWZcdTA0MzBcdTA0NGZcdTA0M2RdIExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixuZXh0RGF5OiJbXHUwNDJiXHUwNDQwXHUwNDMwXHUwNDNkXSBMVCBbXHUwNDQxXHUwNDM1''@;'; put 'put ''XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbGFzdERheToiW1x1MDRkNlx1MDQzZFx1MDQzNVx1MDQ0MF0gTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLG5leHRXZWVrOiJbXHUwNGFhXHUwNDM4XHUwNDQyXHUwNDM1XHUwNDQxXSBkZGRk''@;'; put 'put ''IExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixsYXN0V2VlazoiW1x1MDQxOFx1MDQ0MFx1MDQ0Mlx1MDQzZFx1MDRkN10gZGRkZCBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsc2FtZUVsc2U6IkwifSxyZWxh''@;'; put 'put ''dGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbih2KXtyZXR1cm4gdisoL1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0MiQvaS5leGVjKHYpPyJcdTA0NDBcdTA0MzVcdTA0M2QiOi9cdTA0YWJcdTA0NDNcdTA0M2IkL2kuZXhlYyh2KT8iXHUwNDQyXHUwNDMwXHUwNDNkIjoiXHUwNDQwXHUw''@;'; put 'put ''NDMwXHUwNDNkIil9LHBhc3Q6IiVzIFx1MDQzYVx1MDQzMFx1MDQ0Zlx1MDQzYlx1MDQzYlx1MDQzMCIsczoiXHUwNDNmXHUwNGQ3XHUwNDQwLVx1MDQzOFx1MDQzYSBcdTA0YWJcdTA0MzVcdTA0M2FcdTA0M2FcdTA0NDNcdTA0M2RcdTA0NDIiLHNzOiIlZCBcdTA0YWJcdTA0MzVcdTA0M2Fc''@;'; put 'put ''dTA0M2FcdTA0NDNcdTA0M2RcdTA0NDIiLG06Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLG1tOiIlZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGg6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVc''@;'; put 'put ''dTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDIiLGQ6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0M2FcdTA0NDNcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0NDNcdTA0M2QiLE06Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDUiLE1N''@;'; put 'put ''OiIlZCBcdTA0NDNcdTA0MzlcdTA0ZDFcdTA0NDUiLHk6Ilx1MDQzZlx1MDRkN1x1MDQ0MCBcdTA0YWJcdTA0NDNcdTA0M2IiLHl5OiIlZCBcdTA0YWJcdTA0NDNcdTA0M2IifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LVx1MDQzY1x1MDRkN1x1MDQ0OC8sb3JkaW5hbDoiJWQt''@;'; put 'put ''XHUwNDNjXHUwNGQ3XHUwNDQ4Iix3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw5OTE3MjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImN5Iix7bW9udGhzOiJJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9N''@;'; put 'put ''YWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5ciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSW9uX0Nod2VfTWF3X0Vicl9NYWlfTWVoX0dvcl9Bd3NfTWVkX0h5ZF9UYWNoX1JoYWciLnNwbGl0KCJfIiksd2Vla2RheXM6IkR5ZGQgU3VsX0R5''@;'; put 'put ''ZGQgTGx1bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlkZCBJYXVfRHlkZCBHd2VuZXJfRHlkZCBTYWR3cm4iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTGxfTWFfTWVfSWFfR3df''@;'; put 'put ''U2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0i''@;'; put 'put ''fSxjYWxlbmRhcjp7c2FtZURheToiW0hlZGRpdyBhbV0gTFQiLG5leHREYXk6IltZZm9yeSBhbV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbV0gTFQiLGxhc3REYXk6IltEZG9lIGFtXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rpd2V0aGFmIGFtXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToibWV3biAlcyIscGFzdDoiJXMgeW4gXHhmNGwiLHM6InljaHlkaWcgZWlsaWFkYXUiLHNzOiIlZCBlaWxpYWQiLG06Im11bnVkIixtbToiJWQgbXVudWQiLGg6ImF3ciIsaGg6IiVkIGF3ciIsZDoiZGl3cm5vZCIsZGQ6IiVkIGRpd3Jub2QiLE06Im1pcyIsTU06IiVkIG1p''@;'; put 'put ''cyIseToiYmx3eWRkeW4iLHl5OiIlZCBmbHluZWRkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShmZWR8YWlufGFmfGlsfHlkZHxlZHxlZykvLG9yZGluYWw6ZnVuY3Rpb24odil7dmFyIEg9IiI7cmV0dXJuIHY+MjA/SD00MD09PXZ8fDUwPT09dnx8NjA9PT12fHw4MD09PXZ8''@;'; put 'put ''fDEwMD09PXY/ImZlZCI6ImFpbiI6dj4wJiYoSD1bIiIsImFmIiwiaWwiLCJ5ZGQiLCJ5ZGQiLCJlZCIsImVkIiwiZWQiLCJmZWQiLCJmZWQiLCJmZWQiLCJlZyIsImZlZCIsImVnIiwiZWciLCJmZWQiLCJlZyIsImVnIiwiZmVkIiwiZWciLCJmZWQiXVt2XSksditIfSx3ZWVrOntkb3c6MSxk''@;'; put 'put ''b3k6NH19KX0oVCgxNjY3NikpfSwyMDYwNTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImRhIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jl''@;'; put 'put ''cl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InNceGY4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbFx4''@;'; put 'put ''ZjhyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNceGY4bl9tYW5fdGlyX29uc190b3JfZnJlX2xceGY4ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic1x4ZjhfbWFfdGlfb25fdG9fZnJfbFx4ZjgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJI''@;'; put 'put ''SDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltpIG1vcmdlbiBr''@;'; put 'put ''bC5dIExUIixuZXh0V2VlazoicFx4ZTUgZGRkZCBba2wuXSBMVCIsbGFzdERheToiW2kgZ1x4ZTVyIGtsLl0gTFQiLGxhc3RXZWVrOiJbaV0gZGRkZFtzIGtsLl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoiZlx4ZTUg''@;'; put 'put ''c2VrdW5kZXIiLHNzOiIlZCBzZWt1bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlIixNOiJlbiBtXHhlNW5lZCIsTU06IiVkIG1ceGU1bmVkZXIiLHk6ImV0IFx4ZTVyIix5eToiJWQgXHhl''@;'; put 'put ''NXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sOTMzOTU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhoZSxILEIsTCl7dmFyIEs9''@;'; put 'put ''e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W2hlKyIgVGFnZSIsaGUrIiBUYWdlbiJdLHc6WyJlaW5lIFdvY2hlIiwiZWluZXIgV29jaGUiXSxNOlsiZWluIE1vbmF0''@;'; put 'put ''IiwiZWluZW0gTW9uYXQiXSxNTTpbaGUrIiBNb25hdGUiLGhlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbaGUrIiBKYWhyZSIsaGUrIiBKYWhyZW4iXX07cmV0dXJuIEg/S1tCXVswXTpLW0JdWzFdfXNlLmRlZmluZUxvY2FsZSgiZGUtYXQiLHttb250aHM6''@;'; put 'put ''IkpceGU0bm5lcl9GZWJydWFyX01ceGU0cnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkpceGU0bi5fRmViLl9NXHhlNHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5f''@;'; put 'put ''T2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9G''@;'; put 'put ''ci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExM''@;'; put 'put ''OiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vo''@;'; put 'put ''cl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLHNzOiIlZCBTZWt1bmRlbiIsbTprLG1t''@;'; put 'put ''OiIlZCBNaW51dGVuIixoOmssaGg6IiVkIFN0dW5kZW4iLGQ6ayxkZDprLHc6ayx3dzoiJWQgV29jaGVuIixNOmssTU06ayx5OmsseXk6a30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDk5''@;'; put 'put ''ODM1OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoaGUsSCxCLEwpe3ZhciBLPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRh''@;'; put 'put ''ZyJdLGRkOltoZSsiIFRhZ2UiLGhlKyIgVGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2hlKyIgTW9uYXRlIixoZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W2hlKyIgSmFo''@;'; put 'put ''cmUiLGhlKyIgSmFocmVuIl19O3JldHVybiBIP0tbQl1bMF06S1tCXVsxXX1zZS5kZWZpbmVMb2NhbGUoImRlLWNoIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9NXHhlNHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5z''@;'; put 'put ''cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTVx4ZTRyel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5l''@;'; put 'put ''cnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6''@;'; put 'put ''e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxz''@;'; put 'put ''ZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4g''@;'; put 'put ''JXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLHNzOiIlZCBTZWt1bmRlbiIsbTprLG1tOiIlZCBNaW51dGVuIixoOmssaGg6IiVkIFN0dW5kZW4iLGQ6ayxkZDprLHc6ayx3dzoiJWQgV29jaGVuIixNOmssTU06ayx5OmsseXk6a30sZGF5T2ZNb250aE9yZGluYWxQYXJz''@;'; put 'put ''ZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDk0MDEzOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoaGUsSCxCLEwpe3ZhciBLPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBN''@;'; put 'put ''aW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltoZSsiIFRhZ2UiLGhlKyIgVGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2hlKyIg''@;'; put 'put ''TW9uYXRlIixoZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W2hlKyIgSmFocmUiLGhlKyIgSmFocmVuIl19O3JldHVybiBIP0tbQl1bMF06S1tCXVsxXX1zZS5kZWZpbmVMb2NhbGUoImRlIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9NXHhlNHJ6X0Fwcmls''@;'; put 'put ''X01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTVx4ZTRyel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1Bh''@;'; put 'put ''cnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29f''@;'; put 'put ''TW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBE''@;'; put 'put ''LiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0i''@;'; put 'put ''LGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06ayxtbToiJWQgTWludXRlbiIsaDprLGhoOiIlZCBTdHVuZGVuIixk''@;'; put 'put ''OmssZGQ6ayx3Omssd3c6IiVkIFdvY2hlbiIsTTprLE1NOmsseTprLHl5Omt9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwxNDU3MDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2Up''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgaz1bIlx1MDc5Nlx1MDdhY1x1MDc4Mlx1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4YVx1MDdhY1x1MDc4NFx1MDdiMFx1MDc4M1x1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4OVx1MDdhN1x1MDc4M1x1MDdhOFx1MDc5''@;'; put 'put ''N1x1MDdhYSIsIlx1MDc4N1x1MDdhZFx1MDc5NVx1MDdiMFx1MDc4M1x1MDdhOVx1MDc4ZFx1MDdhYSIsIlx1MDc4OVx1MDdhZCIsIlx1MDc5Nlx1MDdhYlx1MDc4Mlx1MDdiMCIsIlx1MDc5Nlx1MDdhYVx1MDc4ZFx1MDdhNlx1MDc4N1x1MDdhOCIsIlx1MDc4N1x1MDdhZlx1MDc4ZVx1MDdh''@;'; put 'put ''Nlx1MDc5MFx1MDdiMFx1MDc5M1x1MDdhYSIsIlx1MDc5MFx1MDdhY1x1MDc5NVx1MDdiMFx1MDc5M1x1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc4N1x1MDdhZVx1MDc4Nlx1MDdiMFx1MDc5M1x1MDdhZlx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIs''@;'; put 'put ''Ilx1MDc4Mlx1MDdhZVx1MDc4OFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc5MVx1MDdhOFx1MDc5MFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSJdLHY9WyJcdTA3ODdcdTA3YTdcdTA3OGJcdTA3YThcdTA3ODdcdTA3''@;'; put 'put ''YjBcdTA3OGNcdTA3YTYiLCJcdTA3ODBcdTA3YWZcdTA3ODlcdTA3YTYiLCJcdTA3ODdcdTA3YTZcdTA3ODJcdTA3YjBcdTA3OGVcdTA3YTdcdTA3ODNcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3OGJcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3ODNcdTA3YTdcdTA3OTBcdTA3YjBcdTA3OGFc''@;'; put 'put ''dTA3YTZcdTA3OGNcdTA3YTgiLCJcdTA3ODBcdTA3YWFcdTA3ODZcdTA3YWFcdTA3ODNcdTA3YWEiLCJcdTA3ODBcdTA3YWVcdTA3ODJcdTA3YThcdTA3ODBcdTA3YThcdTA3ODNcdTA3YWEiXTtzZS5kZWZpbmVMb2NhbGUoImR2Iix7bW9udGhzOmssbW9udGhzU2hvcnQ6ayx3ZWVrZGF5czp2''@;'; put 'put ''LHdlZWtkYXlzU2hvcnQ6dix3ZWVrZGF5c01pbjoiXHUwNzg3XHUwN2E3XHUwNzhiXHUwN2E4X1x1MDc4MFx1MDdhZlx1MDc4OVx1MDdhNl9cdTA3ODdcdTA3YTZcdTA3ODJcdTA3YjBfXHUwNzg0XHUwN2FhXHUwNzhiXHUwN2E2X1x1MDc4NFx1MDdhYVx1MDc4M1x1MDdhN19cdTA3ODBcdTA3''@;'; put 'put ''YWFcdTA3ODZcdTA3YWFfXHUwNzgwXHUwN2FlXHUwNzgyXHUwN2E4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1N''@;'; put 'put ''IFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA3ODlcdTA3ODZ8XHUwNzg5XHUwNzhhLyxpc1BNOmZ1bmN0aW9uKEgpe3JldHVybiJcdTA3ODlcdTA3OGEiPT09SH0sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDEyPyJcdTA3ODlcdTA3ODYiOiJcdTA3ODlcdTA3OGEi''@;'; put 'put ''fSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDc4OVx1MDdhOFx1MDc4N1x1MDdhNlx1MDc4Ylx1MDdhYV0gTFQiLG5leHREYXk6IltcdTA3ODlcdTA3YTdcdTA3OGJcdTA3YTZcdTA3ODlcdTA3YTddIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1x1MDc4N1x1MDdhOFx1MDc4N1x1''@;'; put 'put ''MDdiMFx1MDc5NFx1MDdhY10gTFQiLGxhc3RXZWVrOiJbXHUwNzhhXHUwN2E3XHUwNzg3XHUwN2E4XHUwNzhjXHUwN2FhXHUwNzg4XHUwN2E4XSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA3OGNcdTA3YWNcdTA3ODNcdTA3YWRcdTA3OGVcdTA3YTZc''@;'; put 'put ''dTA3ODdcdTA3YTggJXMiLHBhc3Q6Ilx1MDc4Nlx1MDdhYVx1MDc4M1x1MDdhOFx1MDc4Mlx1MDdiMCAlcyIsczoiXHUwNzkwXHUwN2E4XHUwNzg2XHUwN2FhXHUwNzgyXHUwN2IwXHUwNzhjXHUwN2FhXHUwNzg2XHUwN2FlXHUwNzg1XHUwN2FjXHUwNzg3XHUwN2IwIixzczoiZCUgXHUwNzkw''@;'; put 'put ''XHUwN2E4XHUwNzg2XHUwN2FhXHUwNzgyXHUwN2IwXHUwNzhjXHUwN2FhIixtOiJcdTA3ODlcdTA3YThcdTA3ODJcdTA3YThcdTA3OTNcdTA3YWNcdTA3ODdcdTA3YjAiLG1tOiJcdTA3ODlcdTA3YThcdTA3ODJcdTA3YThcdTA3OTNcdTA3YWEgJWQiLGg6Ilx1MDc4ZVx1MDdhNlx1MDc5MVx1''@;'; put 'put ''MDdhOFx1MDc4N1x1MDdhOFx1MDc4M1x1MDdhY1x1MDc4N1x1MDdiMCIsaGg6Ilx1MDc4ZVx1MDdhNlx1MDc5MVx1MDdhOFx1MDc4N1x1MDdhOFx1MDc4M1x1MDdhYSAlZCIsZDoiXHUwNzhiXHUwN2FhXHUwNzg4XHUwN2E2XHUwNzgwXHUwN2FjXHUwNzg3XHUwN2IwIixkZDoiXHUwNzhiXHUw''@;'; put 'put ''N2FhXHUwNzg4XHUwN2E2XHUwNzkwXHUwN2IwICVkIixNOiJcdTA3ODlcdTA3YTZcdTA3ODBcdTA3YWNcdTA3ODdcdTA3YjAiLE1NOiJcdTA3ODlcdTA3YTZcdTA3OTBcdTA3YjAgJWQiLHk6Ilx1MDc4N1x1MDdhNlx1MDc4MFx1MDdhNlx1MDc4M1x1MDdhY1x1MDc4N1x1MDdiMCIseXk6Ilx1''@;'; put 'put ''MDc4N1x1MDdhNlx1MDc4MFx1MDdhNlx1MDc4M1x1MDdhYSAlZCJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjcsZG95''@;'; put 'put ''OjEyfX0pfShUKDE2Njc2KSl9LDMxODU5OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZWwiLHttb250aHNOb21pbmF0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNhY1x1MDNjMVx1MDNiOVx1MDNi''@;'; put 'put ''Zlx1MDNjMl9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYWNcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzljXHUwM2FjXHUwM2MxXHUwM2M0XHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNhZlx1MDNiYlx1MDNiOVx1MDNiZlx1MDNj''@;'; put 'put ''Ml9cdTAzOWNcdTAzYWNcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk5XHUwM2JmXHUwM2NkXHUwM2JkXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5OVx1MDNiZlx1MDNjZFx1MDNiYlx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTFcdTAzY2RcdTAzYjNcdTAzYmZcdTAzYzVcdTAzYzNcdTAzYzRcdTAz''@;'; put 'put ''YmZcdTAzYzJfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2FkXHUwM2JjXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjZVx1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWRcdTAzYmZcdTAzYWRcdTAzYmNcdTAzYjJcdTAz''@;'; put 'put ''YzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2FkXHUwM2JjXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyIi5zcGxpdCgiXyIpLG1vbnRoc0dlbml0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNiMVx1MDNjMVx1MDNhZlx1MDNi''@;'; put 'put ''Zlx1MDNjNV9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYjFcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzljXHUwM2IxXHUwM2MxXHUwM2M0XHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNiOVx1MDNiYlx1MDNhZlx1MDNiZlx1MDNj''@;'; put 'put ''NV9cdTAzOWNcdTAzYjFcdTAzOTBcdTAzYmZcdTAzYzVfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JkXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5OVx1MDNiZlx1MDNjNVx1MDNiYlx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOTFcdTAzYzVcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYzNcdTAzYzRcdTAz''@;'; put 'put ''YmZcdTAzYzVfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2I1XHUwM2JjXHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjOVx1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWRcdTAzYmZcdTAzYjVcdTAzYmNcdTAzYjJcdTAz''@;'; put 'put ''YzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2I1XHUwM2JjXHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1Ii5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihoZSxIKXtyZXR1cm4gaGU/InN0cmluZyI9PXR5cGVvZiBIJiYvRC8udGVzdChILnN1YnN0cmlu''@;'; put 'put ''ZygwLEguaW5kZXhPZigiTU1NTSIpKSk/dGhpcy5fbW9udGhzR2VuaXRpdmVFbFtoZS5tb250aCgpXTp0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbaGUubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsfSxtb250aHNTaG9ydDoiXHUwMzk5XHUwM2IxXHUwM2JkX1x1MDNhNlx1MDNi''@;'; put 'put ''NVx1MDNiMl9cdTAzOWNcdTAzYjFcdTAzYzFfXHUwMzkxXHUwM2MwXHUwM2MxX1x1MDM5Y1x1MDNiMVx1MDNjYV9cdTAzOTlcdTAzYmZcdTAzYzVcdTAzYmRfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JiX1x1MDM5MVx1MDNjNVx1MDNiM19cdTAzYTNcdTAzYjVcdTAzYzBfXHUwMzlmXHUwM2Jh''@;'; put 'put ''XHUwM2M0X1x1MDM5ZFx1MDNiZlx1MDNiNV9cdTAzOTRcdTAzYjVcdTAzYmEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDM5YVx1MDNjNVx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiYVx1MDNhZV9cdTAzOTRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYWRcdTAzYzFcdTAzYjFfXHUwM2E0XHUwM2Mx''@;'; put 'put ''XHUwM2FmXHUwM2M0XHUwM2I3X1x1MDNhNFx1MDNiNVx1MDNjNFx1MDNhY1x1MDNjMVx1MDNjNFx1MDNiN19cdTAzYTBcdTAzYWRcdTAzYmNcdTAzYzBcdTAzYzRcdTAzYjdfXHUwM2EwXHUwM2IxXHUwM2MxXHUwM2IxXHUwM2MzXHUwM2JhXHUwM2I1XHUwM2M1XHUwM2FlX1x1MDNhM1x1MDNh''@;'; put 'put ''Y1x1MDNiMlx1MDNiMlx1MDNiMVx1MDNjNFx1MDNiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTAzOWFcdTAzYzVcdTAzYzFfXHUwMzk0XHUwM2I1XHUwM2M1X1x1MDNhNFx1MDNjMVx1MDNiOV9cdTAzYTRcdTAzYjVcdTAzYzRfXHUwM2EwXHUwM2I1XHUwM2JjX1x1MDNhMFx1MDNi''@;'; put 'put ''MVx1MDNjMV9cdTAzYTNcdTAzYjFcdTAzYjIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDM5YVx1MDNjNV9cdTAzOTRcdTAzYjVfXHUwM2E0XHUwM2MxX1x1MDNhNFx1MDNiNV9cdTAzYTBcdTAzYjVfXHUwM2EwXHUwM2IxX1x1MDNhM1x1MDNiMSIuc3BsaXQoIl8iKSxtZXJpZGllbTpm''@;'; put 'put ''dW5jdGlvbihoZSxILEIpe3JldHVybiBoZT4xMT9CPyJcdTAzYmNcdTAzYmMiOiJcdTAzOWNcdTAzOWMiOkI/Ilx1MDNjMFx1MDNiYyI6Ilx1MDNhMFx1MDM5YyJ9LGlzUE06ZnVuY3Rpb24oaGUpe3JldHVybiJcdTAzYmMiPT09KGhlKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBh''@;'; put 'put ''cnNlOi9bXHUwM2EwXHUwMzljXVwuP1x1MDM5Yz9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0g''@;'; put 'put ''QSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IltcdTAzYTNcdTAzYWVcdTAzYmNcdTAzYjVcdTAzYzFcdTAzYjEge31dIExUIixuZXh0RGF5OiJbXHUwMzkxXHUwM2NkXHUwM2MxXHUwM2I5XHUwM2JmIHt9XSBMVCIsbmV4dFdlZWs6ImRkZGQgW3t9XSBMVCIsbGFzdERheToiW1x1MDNhN1x1MDNi''@;'; put 'put ''OFx1MDNiNVx1MDNjMiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDY9PT10aGlzLmRheSgpPyJbXHUwM2M0XHUwM2JmIFx1MDNjMFx1MDNjMVx1MDNiZlx1MDNiN1x1MDNiM1x1MDNiZlx1MDNjZFx1MDNiY1x1MDNiNVx1MDNiZFx1MDNiZl0gZGRkZCBbe31dIExUIjoiW1x1''@;'; put 'put ''MDNjNFx1MDNiN1x1MDNiZCBcdTAzYzBcdTAzYzFcdTAzYmZcdTAzYjdcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYmNcdTAzYjVcdTAzYmRcdTAzYjddIGRkZGQgW3t9XSBMVCJ9LHNhbWVFbHNlOiJMIn0sY2FsZW5kYXI6ZnVuY3Rpb24oaGUsSCl7dmFyIEI9dGhpcy5fY2FsZW5kYXJFbFtoZV0s''@;'; put 'put ''TD1IJiZILmhvdXJzKCk7cmV0dXJuIGZ1bmN0aW9uIGsoaGUpe3JldHVybiB0eXBlb2YgRnVuY3Rpb248InUiJiZoZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwiW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGhlKX0oQikmJihCPUIuYXBwbHkoSCkp''@;'; put 'put ''LEIucmVwbGFjZSgie30iLEwlMTI9PTE/Ilx1MDNjM1x1MDNjNFx1MDNiNyI6Ilx1MDNjM1x1MDNjNFx1MDNiOVx1MDNjMiIpfSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwM2MzXHUwM2I1ICVzIixwYXN0OiIlcyBcdTAzYzBcdTAzYzFcdTAzYjlcdTAzYmQiLHM6Ilx1MDNiYlx1MDNhZlx1''@;'; put 'put ''MDNiM1x1MDNiMSBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjEiLHNzOiIlZCBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjEi''@;'; put 'put ''LG06Ilx1MDNhZFx1MDNiZFx1MDNiMSBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzY2MiLG1tOiIlZCBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYWMiLGg6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzY2VcdTAzYzFcdTAzYjEiLGhoOiIlZCBcdTAzY2VcdTAzYzFcdTAzYjVcdTAz''@;'; put 'put ''YzIiLGQ6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjEiLGRkOiIlZCBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjVcdTAzYzIiLE06Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYmNcdTAzYWVcdTAzYmRcdTAzYjFcdTAzYzIiLE1NOiIlZCBcdTAzYmNc''@;'; put 'put ''dTAzYWVcdTAzYmRcdTAzYjVcdTAzYzIiLHk6Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYmZcdTAzYzIiLHl5OiIlZCBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYjlcdTAzYjEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsx''@;'; put 'put ''LDJ9XHUwM2I3LyxvcmRpbmFsOiIlZFx1MDNiNyIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNTU3ODU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9N''@;'; put 'put ''YXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1''@;'; put 'put ''bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJf''@;'; put 'put ''IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0''@;'; put 'put ''XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoi''@;'; put 'put ''JXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQg''@;'; put 'put ''eWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbih2KXt2YXIgaGU9diUxMDtyZXR1cm4gdisoMT09fn4odiUxMDAvMTApPyJ0aCI6MT09PWhlPyJzdCI6Mj09PWhlPyJuZCI6Mz09PWhlPyJyZCI6InRoIil9LHdlZWs6''@;'; put 'put ''e2RvdzowLGRveTo0fX0pfShUKDE2Njc2KSl9LDgzNzkyOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2Vw''@;'; put 'put ''dGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJz''@;'; put 'put ''ZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6''@;'; put 'put ''Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQi''@;'; put 'put ''LG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVk''@;'; put 'put ''IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTov''@;'; put 'put ''XGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24odil7dmFyIGhlPXYlMTA7cmV0dXJuIHYrKDE9PX5+KHYlMTAwLzEwKT8idGgiOjE9PT1oZT8ic3QiOjI9PT1oZT8ibmQiOjM9PT1oZT8icmQiOiJ0aCIpfX0pfShUKDE2Njc2KSl9LDU3NjUxOmZ1bmN0aW9uKFdlLHplLFQp''@;'; put 'put ''eyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''U2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5f''@;'; put 'put ''TW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RX''@;'; put 'put ''ZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQg''@;'; put 'put ''aG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbih2KXt2YXIgaGU9diUxMDtyZXR1''@;'; put 'put ''cm4gdisoMT09fn4odiUxMDAvMTApPyJ0aCI6MT09PWhlPyJzdCI6Mj09PWhlPyJuZCI6Mz09PWhlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDgxOTI5OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxv''@;'; put 'put ''Y2FsZSgiZW4taWUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdf''@;'; put 'put ''U2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vl''@;'; put 'put ''a2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBI''@;'; put 'put ''SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0s''@;'; put 'put ''cmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRo''@;'; put 'put ''IixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHYpe3ZhciBoZT12JTEwO3JldHVybiB2KygxPT1+fih2JTEwMC8xMCk/InRoIjoxPT09aGU/InN0Ijoy''@;'; put 'put ''PT09aGU/Im5kIjozPT09aGU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMTk4MTg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJlbi1pbCIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9N''@;'; put 'put ''YXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1''@;'; put 'put ''bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJf''@;'; put 'put ''IiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExU''@;'; put 'put ''IixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBh''@;'; put 'put ''Z28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFy''@;'; put 'put ''cyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHYpe3ZhciBoZT12JTEwO3JldHVybiB2KygxPT1+fih2JTEwMC8xMCk/InRoIjoxPT09aGU/InN0IjoyPT09aGU/Im5kIjozPT09aGU/InJkIjoidGgiKX19KX0oVCgxNjY3''@;'; put 'put ''NikpfSw2NjEyOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZW4taW4iLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJf''@;'; put 'put ''RGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZ''@;'; put 'put ''WSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxh''@;'; put 'put ''c3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToi''@;'; put 'put ''JWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGlu''@;'; put 'put ''YWw6ZnVuY3Rpb24odil7dmFyIGhlPXYlMTA7cmV0dXJuIHYrKDE9PX5+KHYlMTAwLzEwKT8idGgiOjE9PT1oZT8ic3QiOjI9PT1oZT8ibmQiOjM9PT1oZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oVCgxNjY3NikpfSwyNDkwMDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rp''@;'; put 'put ''b24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImVuLW56Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJK''@;'; put 'put ''YW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVf''@;'; put 'put ''V2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZ''@;'; put 'put ''WSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6''@;'; put 'put ''IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3Vy''@;'; put 'put ''cyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHYpe3ZhciBoZT12JTEwO3JldHVybiB2''@;'; put 'put ''KygxPT1+fih2JTEwMC8xMCk/InRoIjoxPT09aGU/InN0IjoyPT09aGU/Im5kIjozPT09aGU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNzI3MjE6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxl''@;'; put 'put ''KCJlbi1zZyIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBf''@;'; put 'put ''T2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDpt''@;'; put 'put ''bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixN''@;'; put 'put ''TToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKHYpe3ZhciBoZT12JTEwO3JldHVybiB2KygxPT1+fih2JTEwMC8xMCk/InRoIjoxPT09aGU/InN0IjoyPT09''@;'; put 'put ''aGU/Im5kIjozPT09aGU/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sOTUxNTk6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJlbyIse21vbnRoczoiamFudWFyb19mZWJydWFyb19tYXJ0b19h''@;'; put 'put ''cHJpbG9fbWFqb19qdW5pb19qdWxpb19hXHUwMTZkZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFydF9hcHJfbWFqX2p1bl9qdWxfYVx1MDE2ZGdfc2VwdF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5czoiZGltYW5cdTAxMDlvX2x1bmRvX21hcmRvX21lcmtyZWRvX1x1MDEzNWFcdTAxNmRkb192ZW5kcmVkb19zYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltX2x1bl9tYXJkX21lcmtfXHUwMTM1YVx1MDE2ZF92ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWlu''@;'; put 'put ''OiJkaV9sdV9tYV9tZV9cdTAxMzVhX3ZlX3NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJbbGFdIERbLWFuIGRlXSBNTU1NLCBZWVlZIixMTEw6IltsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0i''@;'; put 'put ''LExMTEw6ImRkZGRbbl0sIFtsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCwgW2xhXSBEWy1hbiBkZV0gTU1NLCBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovW2FwXVwudFwubS9pLGlzUE06ZnVuY3Rpb24odil7cmV0dXJuInAiPT09di5jaGFyQXQoMCkudG9M''@;'; put 'put ''b3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdj4xMT9IPyJwLnQubS4iOiJQLlQuTS4iOkg/ImEudC5tLiI6IkEuVC5NLiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9kaWFcdTAxNmQgamVdIExUIixuZXh0RGF5OiJbTW9yZ2FcdTAxNmQgamVdIExUIixuZXh0''@;'; put 'put ''V2VlazoiZGRkZFtuIGplXSBMVCIsbGFzdERheToiW0hpZXJhXHUwMTZkIGplXSBMVCIsbGFzdFdlZWs6IltwYXNpbnRhbl0gZGRkZFtuIGplXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG9zdCAlcyIscGFzdDoiYW50YVx1MDE2ZCAlcyIsczoia2Vsa2FqIHNl''@;'; put 'put ''a3VuZG9qIixzczoiJWQgc2VrdW5kb2oiLG06InVudSBtaW51dG8iLG1tOiIlZCBtaW51dG9qIixoOiJ1bnUgaG9ybyIsaGg6IiVkIGhvcm9qIixkOiJ1bnUgdGFnbyIsZGQ6IiVkIHRhZ29qIixNOiJ1bnUgbW9uYXRvIixNTToiJWQgbW9uYXRvaiIseToidW51IGphcm8iLHl5OiIlZCBqYXJv''@;'; put 'put ''aiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1hLyxvcmRpbmFsOiIlZGEiLHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDExNzgwOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21h''@;'; put 'put ''eS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSx2PSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxoZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ks''@;'; put 'put ''L15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLEg9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xh''@;'; put 'put ''YnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtzZS5kZWZpbmVMb2NhbGUoImVzLWRvIix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJy''@;'; put 'put ''ZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKEwsSyl7cmV0dXJuIEw/Ly1NTU0tLy50ZXN0KEspP3ZbTC5tb250aCgpXTprW0wubW9udGgoKV06a30sbW9udGhzUmVnZXg6SCxtb250aHNTaG9ydFJlZ2V4OkgsbW9udGhzU3RyaWN0UmVnZXg6''@;'; put 'put ''L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1''@;'; put 'put ''bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pLG1vbnRoc1BhcnNlOmhlLGxvbmdNb250aHNQYXJzZTpoZSxzaG9ydE1vbnRoc1BhcnNlOmhlLHdlZWtkYXlzOiJkb21pbmdvX2x1bmVzX21hcnRlc19taVx4ZTlyY29sZXNfanVldmVzX3ZpZXJuZXNfc1x4ZTFiYWRv''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pXHhlOS5fanVlLl92aWUuX3NceGUxYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1h''@;'; put 'put ''dDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1l''@;'; put 'put ''RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFz''@;'; put 'put ''YWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9z''@;'; put 'put ''IixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBh''@;'; put 'put ''cnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwyMzQ2ODpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28u''@;'; put 'put ''X3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksdj0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksaGU9Wy9eZW5lL2ksL15mZWIvaSwvXm1hci9pLC9eYWJyL2ksL15tYXkvaSwvXmp1bi9pLC9eanVsL2ksL15hZ28vaSwv''@;'; put 'put ''XnNlcC9pLC9eb2N0L2ksL15ub3YvaSwvXmRpYy9pXSxIPS9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5c''@;'; put 'put ''Lj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2k7c2UuZGVmaW5lTG9jYWxlKCJlcy1teCIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2ll''@;'; put 'put ''bWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihMLEspe3JldHVybiBMPy8tTU1NLS8udGVzdChLKT92W0wubW9udGgoKV06a1tMLm1vbnRoKCldOmt9LG1vbnRoc1JlZ2V4OkgsbW9udGhzU2hvcnRSZWdleDpILG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVuZXJvfGZlYnJlcm98''@;'; put 'put ''bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwu''@;'; put 'put ''P3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250aHNQYXJzZTpoZSxsb25nTW9udGhzUGFyc2U6aGUsc2hvcnRNb250aHNQYXJzZTpoZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9taVx4ZTkuX2p1ZS5fdmllLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6''@;'; put 'put ''Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hv''@;'; put 'put ''eSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRo''@;'; put 'put ''aXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJz''@;'; put 'put ''KCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9y''@;'; put 'put ''YXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFs''@;'; put 'put ''OiIlZFx4YmEiLHdlZWs6e2RvdzowLGRveTo0fSxpbnZhbGlkRGF0ZToiRmVjaGEgaW52XHhlMWxpZGEifSl9KFQoMTY2NzYpKX0sNDQ5Mzg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1''@;'; put 'put ''bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLHY9ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLGhlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9e''@;'; put 'put ''YWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sSD0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlc''@;'; put 'put ''Lj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pO3NlLmRlZmluZUxvY2FsZSgiZXMtdXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJy''@;'; put 'put ''ZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oTCxLKXtyZXR1cm4gTD8vLU1NTS0vLnRlc3QoSyk/dltMLm1vbnRoKCldOmtbTC5tb250aCgpXTprfSxtb250aHNSZWdleDpILG1vbnRoc1Nob3J0UmVnZXg6SCxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xm''@;'; put 'put ''ZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wu''@;'; put 'put ''P3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6aGUsbG9uZ01vbnRoc1BhcnNlOmhlLHNob3J0TW9udGhzUGFyc2U6aGUsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiaDpt''@;'; put 'put ''bSBBIixMVFM6Img6bW06c3MgQSIsTDoiTU0vREQvWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRk''@;'; put 'put ''IFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIr''@;'; put 'put ''KDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBo''@;'; put 'put ''b3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEs''@;'; put 'put ''Mn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzowLGRveTo2fX0pfShUKDE2Njc2KSl9LDIxOTU0OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3Qu''@;'; put 'put ''X25vdi5fZGljLiIuc3BsaXQoIl8iKSx2PSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxoZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFnby9pLC9ec2VwL2ksL15v''@;'; put 'put ''Y3QvaSwvXm5vdi9pLC9eZGljL2ldLEg9L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98''@;'; put 'put ''YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtzZS5kZWZpbmVMb2NhbGUoImVzIix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgi''@;'; put 'put ''XyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKEwsSyl7cmV0dXJuIEw/Ly1NTU0tLy50ZXN0KEspP3ZbTC5tb250aCgpXTprW0wubW9udGgoKV06a30sbW9udGhzUmVnZXg6SCxtb250aHNTaG9ydFJlZ2V4OkgsbW9udGhzU3RyaWN0UmVnZXg6L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxt''@;'; put 'put ''YXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3Zc''@;'; put 'put ''Lj98ZGljXC4/KS9pLG1vbnRoc1BhcnNlOmhlLGxvbmdNb250aHNQYXJzZTpoZSxzaG9ydE1vbnRoc1BhcnNlOmhlLHdlZWtkYXlzOiJkb21pbmdvX2x1bmVzX21hcnRlc19taVx4ZTlyY29sZXNfanVldmVzX3ZpZXJuZXNfc1x4ZTFiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRv''@;'; put 'put ''bS5fbHVuLl9tYXIuX21pXHhlOS5fanVlLl92aWUuX3NceGUxYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoi''@;'; put 'put ''REQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09''@;'; put 'put ''dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJz''@;'; put 'put ''IjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJd''@;'; put 'put ''IExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4''@;'; put 'put ''ZWRhIixkZDoiJWQgZFx4ZWRhcyIsdzoidW5hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhXHhmMW8iLHl5OiIlZCBhXHhmMW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vl''@;'; put 'put ''azp7ZG93OjEsZG95OjR9LGludmFsaWREYXRlOiJGZWNoYSBpbnZceGUxbGlkYSJ9KX0oVCgxNjY3NikpfSwxMTQ1MzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBrKGhlLEgsQixMKXt2YXIgSz17czpbIm1ceGY1bmUgc2VrdW5kaSIsIm1c''@;'; put 'put ''eGY1bmkgc2VrdW5kIiwicGFhciBzZWt1bmRpdCJdLHNzOltoZSsic2VrdW5kaSIsaGUrInNla3VuZGl0Il0sbTpbIlx4ZmNoZSBtaW51dGkiLCJceGZja3MgbWludXQiXSxtbTpbaGUrIiBtaW51dGkiLGhlKyIgbWludXRpdCJdLGg6WyJceGZjaGUgdHVubmkiLCJ0dW5kIGFlZ2EiLCJceGZj''@;'; put 'put ''a3MgdHVuZCJdLGhoOltoZSsiIHR1bm5pIixoZSsiIHR1bmRpIl0sZDpbIlx4ZmNoZSBwXHhlNGV2YSIsIlx4ZmNrcyBwXHhlNGV2Il0sTTpbImt1dSBhamEiLCJrdXUgYWVnYSIsIlx4ZmNrcyBrdXUiXSxNTTpbaGUrIiBrdXUiLGhlKyIga3V1ZCJdLHk6WyJceGZjaGUgYWFzdGEiLCJhYXN0''@;'; put 'put ''YSIsIlx4ZmNrcyBhYXN0YSJdLHl5OltoZSsiIGFhc3RhIixoZSsiIGFhc3RhdCJdfTtyZXR1cm4gSD9LW0JdWzJdP0tbQl1bMl06S1tCXVsxXTpMP0tbQl1bMF06S1tCXVsxXX1zZS5kZWZpbmVMb2NhbGUoImV0Iix7bW9udGhzOiJqYWFudWFyX3ZlZWJydWFyX21ceGU0cnRzX2FwcmlsbF9t''@;'; put 'put ''YWlfanV1bmlfanV1bGlfYXVndXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphYW5fdmVlYnJfbVx4ZTRydHNfYXByX21haV9qdXVuaV9qdXVsaV9hdWdfc2VwdF9va3Rfbm92X2RldHMiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXM6InBceGZjaGFwXHhlNGV2X2VzbWFzcFx4ZTRldl90ZWlzaXBceGU0ZXZfa29sbWFwXHhlNGV2X25lbGphcFx4ZTRldl9yZWVkZV9sYXVwXHhlNGV2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBfRV9UX0tfTl9SX0wiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlBfRV9UX0tfTl9S''@;'; put 'put ''X0wiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltU''@;'; put 'put ''XHhlNG5hLF0gTFQiLG5leHREYXk6IltIb21tZSxdIExUIixuZXh0V2VlazoiW0pceGU0cmdtaW5lXSBkZGRkIExUIixsYXN0RGF5OiJbRWlsZSxdIExUIixsYXN0V2VlazoiW0VlbG1pbmVdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHBceGU0cmFz''@;'; put 'put ''dCIscGFzdDoiJXMgdGFnYXNpIixzOmssc3M6ayxtOmssbW06ayxoOmssaGg6ayxkOmssZGQ6IiVkIHBceGU0ZXZhIixNOmssTU06ayx5OmsseXk6a30sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2''@;'; put 'put ''KSl9LDQ0Njk3OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZXUiLHttb250aHM6InVydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6''@;'; put 'put ''YXJvYV9hYmVuZHVhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJpZ2FuZGVhX2FzdGVsZWhlbmFfYXN0ZWFy''@;'; put 'put ''dGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5iYXRhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImlnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiaWdfYWxfYXJfYXpfb2dfb2xfbHIiLnNwbGl0KCJfIiksd2Vla2RheXNQ''@;'; put 'put ''YXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSIsTExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbSIsTExMTDoiZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5d''@;'; put 'put ''IERbYV0gSEg6bW0iLGw6IllZWVktTS1EIixsbDoiWVlZWVtrb10gTU1NIERbYV0iLGxsbDoiWVlZWVtrb10gTU1NIERbYV0gSEg6bW0iLGxsbGw6ImRkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2dhdXJdIExUW2V0YW5dIixuZXh0RGF5OiJbYmlo''@;'; put 'put ''YXJdIExUW2V0YW5dIixuZXh0V2VlazoiZGRkZCBMVFtldGFuXSIsbGFzdERheToiW2F0em9dIExUW2V0YW5dIixsYXN0V2VlazoiW2F1cnJla29dIGRkZGQgTFRbZXRhbl0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGJhcnJ1IixwYXN0OiJkdWVsYSAlcyIsczoi''@;'; put 'put ''c2VndW5kbyBiYXR6dWsiLHNzOiIlZCBzZWd1bmRvIixtOiJtaW51dHUgYmF0IixtbToiJWQgbWludXR1IixoOiJvcmR1IGJhdCIsaGg6IiVkIG9yZHUiLGQ6ImVndW4gYmF0IixkZDoiJWQgZWd1biIsTToiaGlsYWJldGUgYmF0IixNTToiJWQgaGlsYWJldGUiLHk6InVydGUgYmF0Iix5eToi''@;'; put 'put ''JWQgdXJ0ZSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw1MjkwMDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwNmYxIiwyOiJc''@;'; put 'put ''dTA2ZjIiLDM6Ilx1MDZmMyIsNDoiXHUwNmY0Iiw1OiJcdTA2ZjUiLDY6Ilx1MDZmNiIsNzoiXHUwNmY3Iiw4OiJcdTA2ZjgiLDk6Ilx1MDZmOSIsMDoiXHUwNmYwIn0sdj17Ilx1MDZmMSI6IjEiLCJcdTA2ZjIiOiIyIiwiXHUwNmYzIjoiMyIsIlx1MDZmNCI6IjQiLCJcdTA2ZjUiOiI1Iiwi''@;'; put 'put ''XHUwNmY2IjoiNiIsIlx1MDZmNyI6IjciLCJcdTA2ZjgiOiI4IiwiXHUwNmY5IjoiOSIsIlx1MDZmMCI6IjAifTtzZS5kZWZpbmVMb2NhbGUoImZhIix7bW9udGhzOiJcdTA2OThcdTA2MjdcdTA2NDZcdTA2NDhcdTA2Y2NcdTA2NDdfXHUwNjQxXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ3X1x1''@;'; put 'put ''MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjJcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDRfXHUwNjQ1XHUwNjQ3X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDY0Nl9cdTA2OThcdTA2NDhcdTA2MjZcdTA2Y2NcdTA2NDdfXHUwNjI3XHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDY3ZVx1MDYyYVx1MDYy''@;'; put 'put ''N1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjdcdTA2YTlcdTA2MmFcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYzM1x1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjk4XHUwNjI3XHUw''@;'; put 'put ''NjQ2XHUwNjQ4XHUwNmNjXHUwNjQ3X1x1MDY0MVx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0N19cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIyXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ0X1x1MDY0NVx1MDY0N19cdTA2OThcdTA2NDhcdTA2MjZcdTA2NDZfXHUwNjk4XHUwNjQ4XHUwNjI2''@;'; put 'put ''XHUwNmNjXHUwNjQ3X1x1MDYyN1x1MDY0OFx1MDYyYV9cdTA2MzNcdTA2N2VcdTA2MmFcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjI3XHUwNmE5XHUwNjJhXHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MzNcdTA2MjdcdTA2''@;'; put 'put ''NDVcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDZjY1x1MDZhOVx1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmZcdTA2NDhcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjMzXHUwNjQ3XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY4''@;'; put 'put ''Nlx1MDY0N1x1MDYyN1x1MDYzMVx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2N2VcdTA2NDZcdTA2MmNcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjQ3X1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0OiJcdTA2Y2NcdTA2YTlcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJmXHUwNjQ4XHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYzM1x1MDY0N1x1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2ODZcdTA2NDdcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDZc''@;'; put 'put ''dTA2MjhcdTA2NDdfXHUwNjdlXHUwNjQ2XHUwNjJjXHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYyY1x1MDY0NVx1MDYzOVx1MDY0N19cdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDZjY19cdTA2MmZfXHUwNjMzX1x1MDY4Nl9c''@;'; put 'put ''dTA2N2VfXHUwNjJjX1x1MDYzNCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDY0Mlx1MDYyOFx1MDY0NCBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxfFx1MDYyOFx1MDYzOVx1MDYyZiBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxLyxpc1BNOmZ1bmN0aW9uKEgpe3JldHVybi9cdTA2''@;'; put 'put ''MjhcdTA2MzlcdTA2MmYgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMS8udGVzdChIKX0sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDEyPyJcdTA2NDJcdTA2MjhcdTA2NDQgXHUwNjI3XHUwNjMyIFx1MDYzOFx1MDY0N1x1MDYzMSI6Ilx1MDYyOFx1MDYzOVx1MDYy''@;'; put 'put ''ZiBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDVcdTA2MzFcdTA2NDhcdTA2MzIgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsbmV4dERheToiW1x1MDY0MVx1MDYzMVx1MDYyZlx1MDYyNyBcdTA2MzNcdTA2Mjdc''@;'; put 'put ''dTA2MzlcdTA2MmFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsbGFzdERheToiW1x1MDYyZlx1MDZjY1x1MDYzMVx1MDY0OFx1MDYzMiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjdlXHUwNmNjXHUw''@;'; put 'put ''NjM0XSBbXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjJmXHUwNjMxICVzIixwYXN0OiIlcyBcdTA2N2VcdTA2Y2NcdTA2MzQiLHM6Ilx1MDY4Nlx1MDY0Nlx1MDYyZiBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2Y2Nc''@;'; put 'put ''dTA2NDciLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2Y2NcdTA2NDciLG06Ilx1MDZjY1x1MDZhOSBcdTA2MmZcdTA2NDJcdTA2Y2NcdTA2NDJcdTA2NDciLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2Y2NcdTA2NDJcdTA2NDciLGg6Ilx1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2''@;'; put 'put ''MzlcdTA2MmEiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmEiLGQ6Ilx1MDZjY1x1MDZhOSBcdTA2MzFcdTA2NDhcdTA2MzIiLGRkOiIlZCBcdTA2MzFcdTA2NDhcdTA2MzIiLE06Ilx1MDZjY1x1MDZhOSBcdTA2NDVcdTA2MjdcdTA2NDciLE1NOiIlZCBcdTA2NDVcdTA2MjdcdTA2''@;'; put 'put ''NDciLHk6Ilx1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2NDQiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2NDQifSxwcmVwYXJzZTpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9bXHUwNmYwLVx1MDZmOV0vZyxmdW5jdGlvbihCKXtyZXR1cm4gdltCXX0pLnJlcGxhY2UoL1x1MDYw''@;'; put 'put ''Yy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihCKXtyZXR1cm4ga1tCXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTA2NDUvLG9yZGluYWw6IiVkXHUwNjQ1Iix3''@;'; put 'put ''ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFQoMTY2NzYpKX0sNDk3NzU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9Im5vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsalx4ZTQgdmlpc2kga3V1c2kgc2VpdHNlbVx4ZTRuIGthaGRla3NhbiB5aGRla3Nc''@;'; put 'put ''eGU0biIuc3BsaXQoIiAiKSx2PVsibm9sbGEiLCJ5aGRlbiIsImthaGRlbiIsImtvbG1lbiIsIm5lbGpceGU0biIsInZpaWRlbiIsImt1dWRlbiIsa1s3XSxrWzhdLGtbOV1dO2Z1bmN0aW9uIGhlKEwsSyxKLEkpe3ZhciBSPSIiO3N3aXRjaChKKXtjYXNlInMiOnJldHVybiBJPyJtdXV0YW1h''@;'; put 'put ''biBzZWt1bm5pbiI6Im11dXRhbWEgc2VrdW50aSI7Y2FzZSJzcyI6Uj1JPyJzZWt1bm5pbiI6InNla3VudGlhIjticmVhaztjYXNlIm0iOnJldHVybiBJPyJtaW51dXRpbiI6Im1pbnV1dHRpIjtjYXNlIm1tIjpSPUk/Im1pbnV1dGluIjoibWludXV0dGlhIjticmVhaztjYXNlImgiOnJldHVy''@;'; put 'put ''biBJPyJ0dW5uaW4iOiJ0dW50aSI7Y2FzZSJoaCI6Uj1JPyJ0dW5uaW4iOiJ0dW50aWEiO2JyZWFrO2Nhc2UiZCI6cmV0dXJuIEk/InBceGU0aXZceGU0biI6InBceGU0aXZceGU0IjtjYXNlImRkIjpSPUk/InBceGU0aXZceGU0biI6InBceGU0aXZceGU0XHhlNCI7YnJlYWs7Y2FzZSJNIjpy''@;'; put 'put ''ZXR1cm4gST8ia3V1a2F1ZGVuIjoia3V1a2F1c2kiO2Nhc2UiTU0iOlI9ST8ia3V1a2F1ZGVuIjoia3V1a2F1dHRhIjticmVhaztjYXNlInkiOnJldHVybiBJPyJ2dW9kZW4iOiJ2dW9zaSI7Y2FzZSJ5eSI6Uj1JPyJ2dW9kZW4iOiJ2dW90dGEifXJldHVybiBmdW5jdGlvbiBIKEwsSyl7cmV0''@;'; put 'put ''dXJuIEw8MTA/Sz92W0xdOmtbTF06TH0oTCxJKSsiICIrUn1zZS5kZWZpbmVMb2NhbGUoImZpIix7bW9udGhzOiJ0YW1taWt1dV9oZWxtaWt1dV9tYWFsaXNrdXVfaHVodGlrdXVfdG91a29rdXVfa2VzXHhlNGt1dV9oZWluXHhlNGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1''@;'; put 'put ''dV9qb3VsdWt1dSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoidGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc1x4ZTRfaGVpblx4ZTRfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNr''@;'; put 'put ''aXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5t''@;'; put 'put ''bSIsTFRTOiJISC5tbS5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVkiLExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0iLExMTEw6ImRkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tIixsOiJELk0uWVlZWSIsbGw6IkRvIE1NTSBZWVlZIixs''@;'; put 'put ''bGw6IkRvIE1NTSBZWVlZLCBba2xvXSBISC5tbSIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3RceGU0blx4ZTRceGU0bl0gW2tsb10gTFQiLG5leHREYXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9d''@;'; put 'put ''IExUIixsYXN0RGF5OiJbZWlsZW5dIFtrbG9dIExUIixsYXN0V2VlazoiW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcFx4ZTRceGU0c3RceGU0IixwYXN0OiIlcyBzaXR0ZW4iLHM6aGUsc3M6aGUsbTpoZSxtbTpoZSxo''@;'; put 'put ''OmhlLGhoOmhlLGQ6aGUsZGQ6aGUsTTpoZSxNTTpoZSx5OmhlLHl5OmhlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNjQyODI6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJmaWwiLHttb250aHM6IkVuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiRW5lX1BlYl9N''@;'; put 'put ''YXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ikxpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJMaW5fTHVuX01hcl9NaXlfSHV3X0Jp''@;'; put 'put ''eV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkxpX0x1X01hX01pX0h1X0JpX1NhYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJNTS9EL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIEhIOm1tIixM''@;'; put 'put ''TExMOiJkZGRkLCBNTU1NIERELCBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IkxUIFtuZ2F5b25nIGFyYXddIixuZXh0RGF5OiJbQnVrYXMgbmddIExUIixuZXh0V2VlazoiTFQgW3NhIHN1c3Vub2QgbmFdIGRkZGQiLGxhc3REYXk6IkxUIFtrYWhhcG9uXSIsbGFzdFdlZWs6IkxU''@;'; put 'put ''IFtub29uZyBuYWthcmFhbmddIGRkZGQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InNhIGxvb2IgbmcgJXMiLHBhc3Q6IiVzIGFuZyBuYWthbGlwYXMiLHM6ImlsYW5nIHNlZ3VuZG8iLHNzOiIlZCBzZWd1bmRvIixtOiJpc2FuZyBtaW51dG8iLG1tOiIlZCBtaW51dG8i''@;'; put 'put ''LGg6ImlzYW5nIG9yYXMiLGhoOiIlZCBvcmFzIixkOiJpc2FuZyBhcmF3IixkZDoiJWQgYXJhdyIsTToiaXNhbmcgYnV3YW4iLE1NOiIlZCBidXdhbiIseToiaXNhbmcgdGFvbiIseXk6IiVkIHRhb24ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9u''@;'; put 'put ''KHYpe3JldHVybiB2fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw4NDIzNjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImZvIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2Fwclx4ZWRsX21haV9qdW5p''@;'; put 'put ''X2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tXHhlMW5hZGFn''@;'; put 'put ''dXJfdFx4ZmRzZGFndXJfbWlrdWRhZ3VyX2hceGYzc2RhZ3VyX2ZyXHhlZGdnamFkYWd1cl9sZXlnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbVx4ZTFuX3RceGZkc19taWtfaFx4ZjNzX2ZyXHhlZF9sZXkiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21ceGUx''@;'; put 'put ''X3RceGZkX21pX2hceGYzX2ZyX2xlIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBELiBNTU1NLCBZWVlZIEhIOm1tIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltceGNkIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbXHhjZCBtb3JnaW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltceGNkIGdqXHhlMXIga2wuXSBMVCIsbGFzdFdlZWs6IltzXHhlZFx4ZjBzdHVdIGRkZGQgW2tsXSBMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToidW0gJXMiLHBhc3Q6IiVzIHNceGVkXHhmMGFuaSIsczoiZlx4ZTEgc2VrdW5kIixzczoiJWQgc2VrdW5kaXIiLG06ImVpbiBtaW51dHR1ciIsbW06IiVkIG1pbnV0dGlyIixoOiJlaW4gdFx4ZWRtaSIsaGg6IiVkIHRceGVkbWFy''@;'; put 'put ''IixkOiJlaW4gZGFndXIiLGRkOiIlZCBkYWdhciIsTToiZWluIG1ceGUxbmFceGYwdXIiLE1NOiIlZCBtXHhlMW5hXHhmMGlyIix5OiJlaXR0IFx4ZTFyIix5eToiJWQgXHhlMXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEs''@;'; put 'put ''ZG95OjR9fSl9KFQoMTY2NzYpKX0sOTI4MzA6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJmci1jYSIse21vbnRoczoiamFudmllcl9mXHhlOXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb1x4ZmJ0X3NlcHRl''@;'; put 'put ''bWJyZV9vY3RvYnJlX25vdmVtYnJlX2RceGU5Y2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mXHhlOXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW9ceGZidF9zZXB0Ll9vY3QuX25vdi5fZFx4ZTljLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdl''@;'; put 'put ''ZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVf''@;'; put 'put ''c2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9''@;'; put 'put ''LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgXHhlMF0gTFQiLHNhbWVF''@;'; put 'put ''bHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91''@;'; put 'put ''ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfGUpLyxvcmRpbmFsOmZ1bmN0aW9uKHYsaGUpe3N3aXRjaChoZSl7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2Fz''@;'; put 'put ''ZSJEIjpjYXNlIkRERCI6Y2FzZSJkIjpyZXR1cm4gdisoMT09PXY/ImVyIjoiZSIpO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gdisoMT09PXY/InJlIjoiZSIpfX19KX0oVCgxNjY3NikpfSwyMTQxMjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoImZyLWNoIix7bW9udGhzOiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNf''@;'; put 'put ''YXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9qZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0''@;'; put 'put ''V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIs''@;'; put 'put ''c3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRp''@;'; put 'put ''bmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24odixoZSl7c3dpdGNoKGhlKXtkZWZhdWx0OmNhc2UiTSI6Y2FzZSJRIjpjYXNlIkQiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiB2KygxPT09dj8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiB2KygxPT09''@;'; put 'put ''dj8icmUiOiJlIil9fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw4OTM2MTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaGU9LyhqYW52XC4/fGZceGU5dnJcLj98bWFyc3xhdnJcLj98bWFpfGp1aW58anVpbFwuP3xhb1x4ZmJ0fHNl''@;'; put 'put ''cHRcLj98b2N0XC4/fG5vdlwuP3xkXHhlOWNcLj98amFudmllcnxmXHhlOXZyaWVyfG1hcnN8YXZyaWx8bWFpfGp1aW58anVpbGxldHxhb1x4ZmJ0fHNlcHRlbWJyZXxvY3RvYnJlfG5vdmVtYnJlfGRceGU5Y2VtYnJlKS9pLEg9Wy9eamFudi9pLC9eZlx4ZTl2ci9pLC9ebWFycy9pLC9eYXZy''@;'; put 'put ''L2ksL15tYWkvaSwvXmp1aW4vaSwvXmp1aWwvaSwvXmFvXHhmYnQvaSwvXnNlcHQvaSwvXm9jdC9pLC9ebm92L2ksL15kXHhlOWMvaV07c2UuZGVmaW5lTG9jYWxlKCJmciIse21vbnRoczoiamFudmllcl9mXHhlOXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb1x4ZmJ0X3Nl''@;'; put 'put ''cHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2RceGU5Y2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mXHhlOXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW9ceGZidF9zZXB0Ll9vY3QuX25vdi5fZFx4ZTljLiIuc3BsaXQoIl8iKSxtb250aHNSZWdleDpoZSxtb250''@;'; put 'put ''aHNTaG9ydFJlZ2V4OmhlLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnZpZXJ8Zlx4ZTl2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW9ceGZidHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkXHhlOWNlbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi8oamFudlwu''@;'; put 'put ''P3xmXHhlOXZyXC4/fG1hcnN8YXZyXC4/fG1haXxqdWlufGp1aWxcLj98YW9ceGZidHxzZXB0XC4/fG9jdFwuP3xub3ZcLj98ZFx4ZTljXC4/KS9pLG1vbnRoc1BhcnNlOkgsbG9uZ01vbnRoc1BhcnNlOkgsc2hvcnRNb250aHNQYXJzZTpILHdlZWtkYXlzOiJkaW1hbmNoZV9sdW5kaV9tYXJk''@;'; put 'put ''aV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGlfbHVfbWFfbWVfamVfdmVfc2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJz''@;'; put 'put ''ZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3Vy''@;'; put 'put ''ZFx1MjAxOWh1aSBceGUwXSBMVCIsbmV4dERheToiW0RlbWFpbiBceGUwXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbSGllciBceGUwXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLHNzOiIlZCBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIix3OiJ1bmUgc2Vt''@;'; put 'put ''YWluZSIsd3c6IiVkIHNlbWFpbmVzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oTCxLKXtzd2l0Y2goSyl7Y2FzZSJEIjpyZXR1cm4gTCsoMT09PUw/''@;'; put 'put ''ImVyIjoiIik7ZGVmYXVsdDpjYXNlIk0iOmNhc2UiUSI6Y2FzZSJEREQiOmNhc2UiZCI6cmV0dXJuIEwrKDE9PT1MPyJlciI6ImUiKTtjYXNlInciOmNhc2UiVyI6cmV0dXJuIEwrKDE9PT1MPyJyZSI6ImUiKX19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDY2OTg0OmZ1bmN0''@;'; put 'put ''aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21haV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZXMuIi5zcGxpdCgiXyIpLHY9Imphbl9mZWJfbXJ0X2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3Zf''@;'; put 'put ''ZGVzIi5zcGxpdCgiXyIpO3NlLmRlZmluZUxvY2FsZSgiZnkiLHttb250aHM6Imphbm5ld2FyaXNfZmVicmV3YXJpc19tYWFydF9hcHJpbF9tYWFpZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29rdG9iZXJfbm92aW1iZXJfZGVzaW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6''@;'; put 'put ''ZnVuY3Rpb24oSCxCKXtyZXR1cm4gSD8vLU1NTS0vLnRlc3QoQik/dltILm1vbnRoKCldOmtbSC5tb250aCgpXTprfSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzbmVpbl9tb2FuZGVpX3RpaXNkZWlfd29hbnNkZWlfdG9uZ2Vyc2RlaV9mcmVlZF9zbmVvbiIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c1Nob3J0OiJzaS5fbW8uX3RpLl93by5fdG8uX2ZyLl9zby4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNpX01vX1RpX1dvX1RvX0ZyX1NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixM''@;'; put 'put ''OiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hqb2VkIG9tXSBMVCIsbmV4dERheToiW21vYXJuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBM''@;'; put 'put ''VCIsbGFzdERheToiW2p1c3RlciBvbV0gTFQiLGxhc3RXZWVrOiJbXHhmNGZyXHhmYm5lXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9lciAlcyIscGFzdDoiJXMgbHluIixzOiJpbiBwZWFyIHNla29uZGVuIixzczoiJWQgc2Vrb25kZW4iLG06''@;'; put 'put ''ImllbiBtaW5ceGZhdCIsbW06IiVkIG1pbnV0ZW4iLGg6ImllbiBvZXJlIixoaDoiJWQgb2VyZW4iLGQ6ImllbiBkZWkiLGRkOiIlZCBkYWdlbiIsTToiaWVuIG1vYW5uZSIsTU06IiVkIG1vYW5uZW4iLHk6ImllbiBqaWVyIix5eToiJWQgamllcnJlbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFy''@;'; put 'put ''c2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihIKXtyZXR1cm4gSCsoMT09PUh8fDg9PT1IfHxIPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sOTM5NjE6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7c2UuZGVmaW5lTG9jYWxlKCJnYSIse21vbnRoczpbIkVhblx4ZTFpciIsIkZlYWJocmEiLCJNXHhlMXJ0YSIsIkFpYnJlXHhlMW4iLCJCZWFsdGFpbmUiLCJNZWl0aGVhbWgiLCJJXHhmYWlsIiwiTFx4ZmFuYXNhIiwiTWVceGUxbiBGXHhmM21oYWlyIiwiRGVpcmVhZGggRlx4ZjNtaGFp''@;'; put 'put ''ciIsIlNhbWhhaW4iLCJOb2xsYWlnIl0sbW9udGhzU2hvcnQ6WyJFYW4iLCJGZWFiaCIsIk1ceGUxcnQiLCJBaWIiLCJCZWFsIiwiTWVpdGgiLCJJXHhmYWlsIiwiTFx4ZmFuIiwiTS5GLiIsIkQuRi4iLCJTYW1oIiwiTm9sbCJdLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6WyJEXHhl''@;'; put 'put ''OSBEb21obmFpZ2giLCJEXHhlOSBMdWFpbiIsIkRceGU5IE1ceGUxaXJ0IiwiRFx4ZTkgQ1x4ZTlhZGFvaW4iLCJEXHhlOWFyZGFvaW4iLCJEXHhlOSBoQW9pbmUiLCJEXHhlOSBTYXRoYWlybiJdLHdlZWtkYXlzU2hvcnQ6WyJEb21oIiwiTHVhbiIsIk1ceGUxaXJ0IiwiQ1x4ZTlhZCIsIkRc''@;'; put 'put ''eGU5YXIiLCJBb2luZSIsIlNhdGgiXSx3ZWVrZGF5c01pbjpbIkRvIiwiTHUiLCJNXHhlMSIsIkNceGU5IiwiRFx4ZTkiLCJBIiwiU2EiXSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1N''@;'; put 'put ''IFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJbm5pdSBhZ10gTFQiLG5leHREYXk6IltBbVx4ZTFyYWNoIGFnXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FnXSBMVCIsbGFzdERheToiW0lublx4ZTkgYWddIExUIixsYXN0V2Vl''@;'; put 'put ''azoiZGRkZCBbc2VvIGNhaXRlXSBbYWddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpICVzIixwYXN0OiIlcyBceGYzIHNoaW4iLHM6ImNceGZhcGxhIHNvaWNpbmQiLHNzOiIlZCBzb2ljaW5kIixtOiJuXHhmM2ltXHhlOWFkIixtbToiJWQgblx4ZjNpbVx4ZTlh''@;'; put 'put ''ZCIsaDoidWFpciBhbiBjaGxvaWciLGhoOiIlZCB1YWlyIGFuIGNobG9pZyIsZDoibFx4ZTEiLGRkOiIlZCBsXHhlMSIsTToibVx4ZWQiLE1NOiIlZCBtXHhlZG9ubmEiLHk6ImJsaWFpbiIseXk6IiVkIGJsaWFpbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZHxuYXxtaCkv''@;'; put 'put ''LG9yZGluYWw6ZnVuY3Rpb24oSyl7cmV0dXJuIEsrKDE9PT1LPyJkIjpLJTEwPT0yPyJuYSI6Im1oIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDc4ODQ5OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiZ2Qi''@;'; put 'put ''LHttb250aHM6WyJBbSBGYW9pbGxlYWNoIiwiQW4gR2VhcnJhbiIsIkFtIE1ceGUwcnQiLCJBbiBHaWJsZWFuIiwiQW4gQ1x4ZThpdGVhbiIsIkFuIHQtXHhkMmdtaGlvcyIsIkFuIHQtSXVjaGFyIiwiQW4gTFx4ZjluYXN0YWwiLCJBbiB0LVN1bHRhaW4iLCJBbiBEXHhlMG1oYWlyIiwiQW4g''@;'; put 'put ''dC1TYW1oYWluIiwiQW4gRFx4ZjliaGxhY2hkIl0sbW9udGhzU2hvcnQ6WyJGYW9pIiwiR2VhciIsIk1ceGUwcnQiLCJHaWJsIiwiQ1x4ZThpdCIsIlx4ZDJnbWgiLCJJdWNoIiwiTFx4ZjluIiwiU3VsdCIsIkRceGUwbWgiLCJTYW1oIiwiRFx4ZjliaCJdLG1vbnRoc1BhcnNlRXhhY3Q6ITAs''@;'; put 'put ''d2Vla2RheXM6WyJEaWRceGYybWhuYWljaCIsIkRpbHVhaW4iLCJEaW1ceGUwaXJ0IiwiRGljaWFkYWluIiwiRGlhcmRhb2luIiwiRGloYW9pbmUiLCJEaXNhdGhhaXJuZSJdLHdlZWtkYXlzU2hvcnQ6WyJEaWQiLCJEaWwiLCJEaW0iLCJEaWMiLCJEaWEiLCJEaWgiLCJEaXMiXSx3ZWVrZGF5''@;'; put 'put ''c01pbjpbIkRceGYyIiwiTHUiLCJNXHhlMCIsIkNpIiwiQXIiLCJIYSIsIlNhIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0g''@;'; put 'put ''WVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQW4tZGl1Z2ggYWlnXSBMVCIsbmV4dERheToiW0EtbVx4ZTBpcmVhY2ggYWlnXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FpZ10gTFQiLGxhc3REYXk6IltBbi1kXHhlOCBhaWddIExUIixsYXN0V2VlazoiZGRkZCBbc2VvIGNoYWlkaF0g''@;'; put 'put ''W2FpZ10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImFubiBhbiAlcyIscGFzdDoiYmhvIGNoaW9ubiAlcyIsczoiYmVhZ2FuIGRpb2dhbiIsc3M6IiVkIGRpb2dhbiIsbToibWlvbmFpZCIsbW06IiVkIG1pb25haWRlYW4iLGg6InVhaXIiLGhoOiIlZCB1YWlyZWFu''@;'; put 'put ''IixkOiJsYXRoYSIsZGQ6IiVkIGxhdGhhIixNOiJtXHhlY29zIixNTToiJWQgbVx4ZWNvc2FuIix5OiJibGlhZGhuYSIseXk6IiVkIGJsaWFkaG5hIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShkfG5hfG1oKS8sb3JkaW5hbDpmdW5jdGlvbihLKXtyZXR1cm4gSysoMT09PUs/''@;'; put 'put ''ImQiOkslMTA9PTI/Im5hIjoibWgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMzQyNzM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJnbCIse21vbnRoczoieGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJp''@;'; put 'put ''bF9tYWlvX3h1XHhmMW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inhhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dVx4ZjEuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1v''@;'; put 'put ''bnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuc19tYXJ0ZXNfbVx4ZTlyY29yZXNfeG92ZXNfdmVucmVzX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tXHhlOXIuX3hvdi5fdmVuLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzTWluOiJkb19sdV9tYV9tXHhlOV94b192ZV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVd''@;'; put 'put ''IE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveGUgIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJceGUxIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIlttYVx4ZjFceGUxICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiXHhlMSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbIisoMSE9PXRoaXMuaG91cnMoKT8iXHhlMXMiOiJhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IltvbnRlICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTEiOiJhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbb10gZGRkZCBbcGFzYWRvICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVy''@;'; put 'put ''ZTpmdW5jdGlvbih2KXtyZXR1cm4gMD09PXYuaW5kZXhPZigidW4iKT8ibiIrdjoiZW4gIit2fSxwYXN0OiJoYWkgJXMiLHM6InVucyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmhhIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoi''@;'; put 'put ''dW4gZFx4ZWRhIixkZDoiJWQgZFx4ZWRhcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw0''@;'; put 'put ''MDYyMzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBrKGhlLEgsQixMKXt2YXIgSz17czpbIlx1MDkyNVx1MDk0Ylx1MDkyMVx1MDkyZlx1MDkzZSBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5MjFcdTA5M2VcdTA5MDJcdTA5MjhcdTA5''@;'; put 'put ''NDAiLCJcdTA5MjVcdTA5NGJcdTA5MjFcdTA5NDcgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxIl0sc3M6W2hlKyIgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxXHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixoZSsiIFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMSJd''@;'; put 'put ''LG06WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTJlXHUwOTNmXHUwOTIzXHUwOTFmXHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDkzZlx1MDkyOFx1MDk0Mlx1MDkxZiJdLG1tOltoZSsiIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0''@;'; put 'put ''MCIsaGUrIiBcdTA5MmVcdTA5M2ZcdTA5MjNcdTA5MWZcdTA5M2VcdTA5MDIiXSxoOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkzNVx1MDkzMFx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MzVcdTA5MzAiXSxoaDpbaGUrIiBcdTA5MzVcdTA5MzBcdTA5M2VcdTA5MDJcdTA5Mjhc''@;'; put 'put ''dTA5NDAiLGhlKyIgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTAyIl0sZDpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTQwXHUwOTM4Il0sZGQ6W2hlKyIgXHUwOTI2XHUwOTNmXHUwOTM4XHUwOTNlXHUw''@;'; put 'put ''OTAyXHUwOTI4XHUwOTQwIixoZSsiIFx1MDkyNlx1MDk0MFx1MDkzOCJdLE06WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTJlXHUwOTRkXHUwOTM5XHUwOTJmXHUwOTI4XHUwOTRkXHUwOTJmXHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDky''@;'; put 'put ''OFx1MDk0YiJdLE1NOltoZSsiIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkyOFx1MDk0MCIsaGUrIiBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NDciXSx5OlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkzNVx1MDkzMFx1MDk0''@;'; put 'put ''ZFx1MDkzOFx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzgiXSx5eTpbaGUrIiBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MjhcdTA5NDAiLGhlKyIgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTAyIl19''@;'; put 'put ''O3JldHVybiBMP0tbQl1bMF06S1tCXVsxXX1zZS5kZWZpbmVMb2NhbGUoImdvbS1kZXZhIix7bW9udGhzOntzdGFuZGFsb25lOiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDdcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxXHUwOTM1''@;'; put 'put ''XHUwOTNlXHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDBcdTA5MzJfXHUwOTJlXHUwOTQ3X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5MmZfXHUwOTExXHUwOTE3XHUwOTM4XHUw''@;'; put 'put ''OTRkXHUwOTFmX1x1MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkyMVx1''@;'; put 'put ''MDkzZlx1MDkzOFx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKSxmb3JtYXQ6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MFx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFc''@;'; put 'put ''dTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0MFx1MDkzMlx1MDkzZVx1MDkxYVx1MDk0ZFx1''@;'; put 'put ''MDkyZlx1MDkzZV9cdTA5MmVcdTA5NDdcdTA5MmZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTFjXHUwOTQyXHUwOTI4XHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkyZlx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9c''@;'; put 'put ''dTA5MTFcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MWZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1''@;'; put 'put ''MDk0Ylx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyXHUw''@;'; put 'put ''OTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9NTU1NKFxzKStEW29EXT8vfSxtb250aHNTaG9ydDoiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3Ll9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDEuX1x1MDkyZVx1''@;'; put 'put ''MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDAuX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyLl9cdTA5MTFcdTA5MTcuX1x1MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMi5fXHUwOTEx''@;'; put 'put ''XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiLl9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDIuX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0N1x1MDkwMi4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwOTA2XHUwOTJmXHUwOTI0XHUw''@;'; put 'put ''OTNlXHUwOTMwX1x1MDkzOFx1MDk0Ylx1MDkyZVx1MDkzZVx1MDkzMF9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzNcdTA5M2VcdTA5MzBfXHUwOTJjXHUwOTQxXHUwOTI3XHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyY1x1MDkzZlx1MDkzMFx1MDk0N1x1MDkzOFx1MDk0ZFx1MDkyNFx1MDkzZVx1''@;'; put 'put ''MDkzMF9cdTA5MzhcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQ3XHUwOTI4XHUwOTM1XHUwOTNlXHUwOTMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDkwNlx1MDkyZlx1MDkyNC5fXHUwOTM4XHUwOTRiXHUwOTJlLl9cdTA5MmVcdTA5MDJc''@;'; put 'put ''dTA5MTdcdTA5MzMuX1x1MDkyY1x1MDk0MVx1MDkyNy5fXHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQ3XHUwOTM4XHUwOTRkXHUwOTI0Ll9cdTA5MzhcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzAuX1x1MDkzNlx1MDk0N1x1MDkyOC4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDkwNl9cdTA5''@;'; put 'put ''MzhcdTA5NGJfXHUwOTJlXHUwOTAyX1x1MDkyY1x1MDk0MV9cdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDdfXHUwOTM4XHUwOTQxX1x1MDkzNlx1MDk0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gW1x1MDkzNVx1MDkzZVx1MDkx''@;'; put 'put ''Y1x1MDkyNFx1MDkzZVx1MDkwMl0iLExUUzoiQSBoOm1tOnNzIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2Vc''@;'; put 'put ''dTA5MDJdIixMTExMOiJkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW1x1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZVx1MDkwMl0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIn0sY2FsZW5kYXI6e3Nh''@;'; put 'put ''bWVEYXk6IltcdTA5MDZcdTA5MmZcdTA5MWNdIExUIixuZXh0RGF5OiJbXHUwOTJiXHUwOTNlXHUwOTMyXHUwOTRkXHUwOTJmXHUwOTNlXHUwOTAyXSBMVCIsbmV4dFdlZWs6IltcdTA5MmJcdTA5NDFcdTA5MjFcdTA5MzJcdTA5NGJdIGRkZGRbLF0gTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5''@;'; put 'put ''M2VcdTA5MzJdIExUIixsYXN0V2VlazoiW1x1MDkyYlx1MDkzZVx1MDkxZlx1MDkzMlx1MDk0Yl0gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMiLHBhc3Q6IiVzIFx1MDkwNlx1MDkyNlx1MDk0MFx1MDkwMiIsczprLHNzOmssbTprLG1tOmssaDpr''@;'; put 'put ''LGhoOmssZDprLGRkOmssTTprLE1NOmsseTprLHl5Omt9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHUwOTM1XHUwOTQ3XHUwOTMwKS8sb3JkaW5hbDpmdW5jdGlvbihoZSxIKXtyZXR1cm4iRCI9PT1IP2hlKyJcdTA5MzVcdTA5NDdcdTA5MzAiOmhlfSx3ZWVrOntkb3c6MCxk''@;'; put 'put ''b3k6M30sbWVyaWRpZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTQwfFx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMnxcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2VcdTA5MzBcdTA5M2VcdTA5MDJ8XHUwOTM4XHUwOTNlXHUwOTAyXHUwOTFjXHUwOTQ3LyxtZXJpZGll''@;'; put 'put ''bUhvdXI6ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIDEyPT09aGUmJihoZT0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTQwIj09PUg/aGU8ND9oZTpoZSsxMjoiXHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwXHUwOTAyIj09PUg/aGU6Ilx1MDkyNlx1MDkyOFx1MDkyYVx1MDkzZVx1MDkz''@;'; put 'put ''MFx1MDkzZVx1MDkwMiI9PT1IP2hlPjEyP2hlOmhlKzEyOiJcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDciPT09SD9oZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGhlLEgsQil7cmV0dXJuIGhlPDQ/Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MCI6aGU8MTI/Ilx1MDkzOFx1''@;'; put 'put ''MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMiI6aGU8MTY/Ilx1MDkyNlx1MDkyOFx1MDkyYVx1MDkzZVx1MDkzMFx1MDkzZVx1MDkwMiI6aGU8MjA/Ilx1MDkzOFx1MDkzZVx1MDkwMlx1MDkxY1x1MDk0NyI6Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MCJ9fSl9KFQoMTY2NzYpKX0sNjI2''@;'; put 'put ''OTY6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhoZSxILEIsTCl7dmFyIEs9e3M6WyJ0aG9kZGVhIHNla29uZGFtbmkiLCJ0aG9kZGUgc2Vrb25kIl0sc3M6W2hlKyIgc2Vrb25kYW1uaSIsaGUrIiBzZWtvbmQiXSxtOlsiZWthIG1pbnRh''@;'; put 'put ''biIsImVrIG1pbnV0Il0sbW06W2hlKyIgbWludGFtbmkiLGhlKyIgbWludGFtIl0saDpbImVrYSB2b3JhbiIsImVrIHZvciJdLGhoOltoZSsiIHZvcmFtbmkiLGhlKyIgdm9yYW0iXSxkOlsiZWthIGRpc2FuIiwiZWsgZGlzIl0sZGQ6W2hlKyIgZGlzYW1uaSIsaGUrIiBkaXMiXSxNOlsiZWth''@;'; put 'put ''IG1ob2luZWFuIiwiZWsgbWhvaW5vIl0sTU06W2hlKyIgbWhvaW5lYW1uaSIsaGUrIiBtaG9pbmUiXSx5OlsiZWthIHZvcnNhbiIsImVrIHZvcm9zIl0seXk6W2hlKyIgdm9yc2FtbmkiLGhlKyIgdm9yc2FtIl19O3JldHVybiBMP0tbQl1bMF06S1tCXVsxXX1zZS5kZWZpbmVMb2NhbGUoImdv''@;'; put 'put ''bS1sYXRuIix7bW9udGhzOntzdGFuZGFsb25lOiJKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyIi5zcGxpdCgiXyIpLGZvcm1hdDoiSmFuZXJhY2hlYV9GZWJyZXJhY2hlYV9NYXJzYWNoZWFfQWJyaWxhY2hl''@;'; put 'put ''YV9NYWlhY2hlYV9KdW5hY2hlYV9KdWxhaWFjaGVhX0Fnb3N0YWNoZWFfU2V0ZW1icmFjaGVhX090dWJyYWNoZWFfTm92ZW1icmFjaGVhX0RlemVtYnJhY2hlYSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovTU1NTShccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6Ikphbi5fRmViLl9NYXJzX0Fici5f''@;'; put 'put ''TWFpX0p1bl9KdWwuX0Fnby5fU2V0Ll9PdHUuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWRodmFyX0JpcmVzdGFyX1N1a3Jhcl9Tb24ndmFyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFpdC5f''@;'; put 'put ''U29tLl9Nb24uX0J1ZC5fQnJlLl9TdWsuX1Nvbi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFpX1NtX01vX0J1X0JyX1N1X1NuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBbdmF6dGFdIixMVFM6IkEgaDptbTpzcyBbdmF6''@;'; put 'put ''dGFdIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgQSBoOm1tIFt2YXp0YV0iLExMTEw6ImRkZGQsIE1NTU0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdIixsbGxsOiJkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdIn0sY2FsZW5kYXI6e3Nh''@;'; put 'put ''bWVEYXk6IltBaXpdIExUIixuZXh0RGF5OiJbRmFsZWFtXSBMVCIsbmV4dFdlZWs6IltGdWRkbG9dIGRkZGRbLF0gTFQiLGxhc3REYXk6IltLYWxdIExUIixsYXN0V2VlazoiW0ZhdHRsb10gZGRkZFssXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMiLHBhc3Q6''@;'; put 'put ''IiVzIGFkaW0iLHM6ayxzczprLG06ayxtbTprLGg6ayxoaDprLGQ6ayxkZDprLE06ayxNTTprLHk6ayx5eTprfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyKS8sb3JkaW5hbDpmdW5jdGlvbihoZSxIKXtyZXR1cm4iRCI9PT1IP2hlKyJlciI6aGV9LHdlZWs6e2RvdzowLGRv''@;'; put 'put ''eTozfSxtZXJpZGllbVBhcnNlOi9yYXRpfHNva2FsbGltfGRvbnBhcmFtfHNhbmplLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIDEyPT09aGUmJihoZT0wKSwicmF0aSI9PT1IP2hlPDQ/aGU6aGUrMTI6InNva2FsbGltIj09PUg/aGU6ImRvbnBhcmFtIj09PUg/aGU+MTI/''@;'; put 'put ''aGU6aGUrMTI6InNhbmplIj09PUg/aGUrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihoZSxILEIpe3JldHVybiBoZTw0PyJyYXRpIjpoZTwxMj8ic29rYWxsaW0iOmhlPDE2PyJkb25wYXJhbSI6aGU8MjA/InNhbmplIjoicmF0aSJ9fSl9KFQoMTY2NzYpKX0sNjY5Mjg6ZnVuY3Rpb24o''@;'; put 'put ''V2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MGFlNyIsMjoiXHUwYWU4IiwzOiJcdTBhZTkiLDQ6Ilx1MGFlYSIsNToiXHUwYWViIiw2OiJcdTBhZWMiLDc6Ilx1MGFlZCIsODoiXHUwYWVlIiw5OiJcdTBhZWYiLDA6Ilx1MGFlNiJ9LHY9eyJcdTBhZTci''@;'; put 'put ''OiIxIiwiXHUwYWU4IjoiMiIsIlx1MGFlOSI6IjMiLCJcdTBhZWEiOiI0IiwiXHUwYWViIjoiNSIsIlx1MGFlYyI6IjYiLCJcdTBhZWQiOiI3IiwiXHUwYWVlIjoiOCIsIlx1MGFlZiI6IjkiLCJcdTBhZTYiOiIwIn07c2UuZGVmaW5lTG9jYWxlKCJndSIse21vbnRoczoiXHUwYTljXHUwYWJl''@;'; put 'put ''XHUwYWE4XHUwYWNkXHUwYWFmXHUwYWMxXHUwYTg2XHUwYWIwXHUwYWMwX1x1MGFhYlx1MGFjN1x1MGFhY1x1MGFjZFx1MGFiMFx1MGFjMVx1MGE4Nlx1MGFiMFx1MGFjMF9cdTBhYWVcdTBhYmVcdTBhYjBcdTBhY2RcdTBhOWFfXHUwYThmXHUwYWFhXHUwYWNkXHUwYWIwXHUwYWJmXHUwYWIy''@;'; put 'put ''X1x1MGFhZVx1MGFjN19cdTBhOWNcdTBhYzJcdTBhYThfXHUwYTljXHUwYWMxXHUwYWIyXHUwYWJlXHUwYTg4X1x1MGE5MVx1MGE5N1x1MGFiOFx1MGFjZFx1MGE5Zl9cdTBhYjhcdTBhYWFcdTBhY2RcdTBhOWZcdTBhYzdcdTBhYWVcdTBhY2RcdTBhYWNcdTBhYjBfXHUwYTkxXHUwYTk1XHUw''@;'; put 'put ''YWNkXHUwYTlmXHUwYWNkXHUwYWFjXHUwYWIwX1x1MGFhOFx1MGFiNVx1MGFjN1x1MGFhZVx1MGFjZFx1MGFhY1x1MGFiMF9cdTBhYTFcdTBhYmZcdTBhYjhcdTBhYzdcdTBhYWVcdTBhY2RcdTBhYWNcdTBhYjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGE5Y1x1MGFiZVx1MGFhOFx1''@;'; put 'put ''MGFjZFx1MGFhZlx1MGFjMS5fXHUwYWFiXHUwYWM3XHUwYWFjXHUwYWNkXHUwYWIwXHUwYWMxLl9cdTBhYWVcdTBhYmVcdTBhYjBcdTBhY2RcdTBhOWFfXHUwYThmXHUwYWFhXHUwYWNkXHUwYWIwXHUwYWJmLl9cdTBhYWVcdTBhYzdfXHUwYTljXHUwYWMyXHUwYWE4X1x1MGE5Y1x1MGFjMVx1''@;'; put 'put ''MGFiMlx1MGFiZS5fXHUwYTkxXHUwYTk3Ll9cdTBhYjhcdTBhYWFcdTBhY2RcdTBhOWZcdTBhYzcuX1x1MGE5MVx1MGE5NVx1MGFjZFx1MGE5Zlx1MGFjZC5fXHUwYWE4XHUwYWI1XHUwYWM3Ll9cdTBhYTFcdTBhYmZcdTBhYjhcdTBhYzcuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6''@;'; put 'put ''ITAsd2Vla2RheXM6Ilx1MGFiMFx1MGFiNVx1MGFiZlx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYjhcdTBhY2JcdTBhYWVcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWFlXHUwYTgyXHUwYTk3XHUwYWIzXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFhY1x1MGFjMVx1MGFhN1x1MGFjZFx1MGFiNVx1MGFi''@;'; put 'put ''ZVx1MGFiMF9cdTBhOTdcdTBhYzFcdTBhYjBcdTBhYzFcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWI2XHUwYWMxXHUwYTk1XHUwYWNkXHUwYWIwXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFiNlx1MGFhOFx1MGFiZlx1MGFiNVx1MGFiZVx1MGFiMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJc''@;'; put 'put ''dTBhYjBcdTBhYjVcdTBhYmZfXHUwYWI4XHUwYWNiXHUwYWFlX1x1MGFhZVx1MGE4Mlx1MGE5N1x1MGFiM19cdTBhYWNcdTBhYzFcdTBhYTdcdTBhY2RfXHUwYTk3XHUwYWMxXHUwYWIwXHUwYWMxX1x1MGFiNlx1MGFjMVx1MGE5NVx1MGFjZFx1MGFiMF9cdTBhYjZcdTBhYThcdTBhYmYiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGFiMF9cdTBhYjhcdTBhY2JfXHUwYWFlXHUwYTgyX1x1MGFhY1x1MGFjMV9cdTBhOTdcdTBhYzFfXHUwYWI2XHUwYWMxX1x1MGFiNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2Rc''@;'; put 'put ''dTBhYWZcdTBhYzciLExUUzoiQSBoOm1tOnNzIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwYWI1XHUwYWJlXHUwYTk3XHUwYWNkXHUwYWFmXHUwYWM3IixMTExM''@;'; put 'put ''OiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwYTg2XHUwYTljXSBMVCIsbmV4dERheToiW1x1MGE5NVx1MGFiZVx1MGFiMlx1MGFjN10gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIs''@;'; put 'put ''bGFzdERheToiW1x1MGE5N1x1MGE4N1x1MGE5NVx1MGFiZVx1MGFiMlx1MGFjN10gTFQiLGxhc3RXZWVrOiJbXHUwYWFhXHUwYWJlXHUwYTliXHUwYWIyXHUwYWJlXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYWFlXHUwYWJlIixwYXN0OiIl''@;'; put 'put ''cyBcdTBhYWFcdTBhYjlcdTBhYzdcdTBhYjJcdTBhYmUiLHM6Ilx1MGE4NVx1MGFhZVx1MGFjMVx1MGE5NSBcdTBhYWFcdTBhYjNcdTBhY2IiLHNzOiIlZCBcdTBhYjhcdTBhYzdcdTBhOTVcdTBhODJcdTBhYTEiLG06Ilx1MGE4Zlx1MGE5NSBcdTBhYWVcdTBhYmZcdTBhYThcdTBhYmZcdTBh''@;'; put 'put ''OWYiLG1tOiIlZCBcdTBhYWVcdTBhYmZcdTBhYThcdTBhYmZcdTBhOWYiLGg6Ilx1MGE4Zlx1MGE5NSBcdTBhOTVcdTBhYjJcdTBhYmVcdTBhOTUiLGhoOiIlZCBcdTBhOTVcdTBhYjJcdTBhYmVcdTBhOTUiLGQ6Ilx1MGE4Zlx1MGE5NSBcdTBhYTZcdTBhYmZcdTBhYjVcdTBhYjgiLGRkOiIl''@;'; put 'put ''ZCBcdTBhYTZcdTBhYmZcdTBhYjVcdTBhYjgiLE06Ilx1MGE4Zlx1MGE5NSBcdTBhYWVcdTBhYjlcdTBhYmZcdTBhYThcdTBhY2IiLE1NOiIlZCBcdTBhYWVcdTBhYjlcdTBhYmZcdTBhYThcdTBhY2IiLHk6Ilx1MGE4Zlx1MGE5NSBcdTBhYjVcdTBhYjBcdTBhY2RcdTBhYjciLHl5OiIlZCBc''@;'; put 'put ''dTBhYjVcdTBhYjBcdTBhY2RcdTBhYjcifSxwcmVwYXJzZTpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9bXHUwYWU3XHUwYWU4XHUwYWU5XHUwYWVhXHUwYWViXHUwYWVjXHUwYWVkXHUwYWVlXHUwYWVmXHUwYWU2XS9nLGZ1bmN0aW9uKEIpe3JldHVybiB2W0JdfSl9LHBvc3Rmb3Jt''@;'; put 'put ''YXQ6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihCKXtyZXR1cm4ga1tCXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBhYjBcdTBhYmVcdTBhYTR8XHUwYWFjXHUwYWFhXHUwYWNiXHUwYWIwfFx1MGFiOFx1MGFiNVx1MGFiZVx1MGFiMHxcdTBhYjhcdTBhYmVcdTBh''@;'; put 'put ''ODJcdTBhOWMvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihILEIpe3JldHVybiAxMj09PUgmJihIPTApLCJcdTBhYjBcdTBhYmVcdTBhYTQiPT09Qj9IPDQ/SDpIKzEyOiJcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjAiPT09Qj9IOiJcdTBhYWNcdTBhYWFcdTBhY2JcdTBhYjAiPT09Qj9IPj0xMD9I''@;'; put 'put ''OkgrMTI6Ilx1MGFiOFx1MGFiZVx1MGE4Mlx1MGE5YyI9PT1CP0grMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihILEIsTCl7cmV0dXJuIEg8ND8iXHUwYWIwXHUwYWJlXHUwYWE0IjpIPDEwPyJcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjAiOkg8MTc/Ilx1MGFhY1x1MGFhYVx1MGFjYlx1''@;'; put 'put ''MGFiMCI6SDwyMD8iXHUwYWI4XHUwYWJlXHUwYTgyXHUwYTljIjoiXHUwYWIwXHUwYWJlXHUwYWE0In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sMjQ4MDQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJoZSIs''@;'; put 'put ''e21vbnRoczoiXHUwNWQ5XHUwNWUwXHUwNWQ1XHUwNWQwXHUwNWU4X1x1MDVlNFx1MDVkMVx1MDVlOFx1MDVkNVx1MDVkMFx1MDVlOF9cdTA1ZGVcdTA1ZThcdTA1ZTVfXHUwNWQwXHUwNWU0XHUwNWU4XHUwNWQ5XHUwNWRjX1x1MDVkZVx1MDVkMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1ZTBc''@;'; put 'put ''dTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWRjXHUwNWQ5X1x1MDVkMFx1MDVkNVx1MDVkMlx1MDVkNVx1MDVlMVx1MDVkOF9cdTA1ZTFcdTA1ZTRcdTA1ZDhcdTA1ZGVcdTA1ZDFcdTA1ZThfXHUwNWQwXHUwNWQ1XHUwNWU3XHUwNWQ4XHUwNWQ1XHUwNWQxXHUwNWU4X1x1MDVlMFx1MDVkNVx1MDVk''@;'; put 'put ''MVx1MDVkZVx1MDVkMVx1MDVlOF9cdTA1ZDNcdTA1ZTZcdTA1ZGVcdTA1ZDFcdTA1ZTgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDVkOVx1MDVlMFx1MDVkNVx1MDVmM19cdTA1ZTRcdTA1ZDFcdTA1ZThcdTA1ZjNfXHUwNWRlXHUwNWU4XHUwNWU1X1x1MDVkMFx1MDVlNFx1MDVlOFx1''@;'; put 'put ''MDVmM19cdTA1ZGVcdTA1ZDBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUwNWUwXHUwNWQ5X1x1MDVkOVx1MDVkNVx1MDVkY1x1MDVkOV9cdTA1ZDBcdTA1ZDVcdTA1ZDJcdTA1ZjNfXHUwNWUxXHUwNWU0XHUwNWQ4XHUwNWYzX1x1MDVkMFx1MDVkNVx1MDVlN1x1MDVmM19cdTA1ZTBcdTA1ZDVcdTA1''@;'; put 'put ''ZDFcdTA1ZjNfXHUwNWQzXHUwNWU2XHUwNWRlXHUwNWYzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA1ZThcdTA1ZDBcdTA1ZTlcdTA1ZDVcdTA1ZGZfXHUwNWU5XHUwNWUwXHUwNWQ5X1x1MDVlOVx1MDVkY1x1MDVkOVx1MDVlOVx1MDVkOV9cdTA1ZThcdTA1ZDFcdTA1ZDlcdTA1ZTJcdTA1''@;'; put 'put ''ZDlfXHUwNWQ3XHUwNWRlXHUwNWQ5XHUwNWU5XHUwNWQ5X1x1MDVlOVx1MDVkOVx1MDVlOVx1MDVkOV9cdTA1ZTlcdTA1ZDFcdTA1ZWEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNWQwXHUwNWYzX1x1MDVkMVx1MDVmM19cdTA1ZDJcdTA1ZjNfXHUwNWQzXHUwNWYzX1x1MDVkNFx1''@;'; put 'put ''MDVmM19cdTA1ZDVcdTA1ZjNfXHUwNWU5XHUwNWYzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA1ZDBfXHUwNWQxX1x1MDVkMl9cdTA1ZDNfXHUwNWQ0X1x1MDVkNV9cdTA1ZTkiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQv''@;'; put 'put ''TU0vWVlZWSIsTEw6IkQgW1x1MDVkMV1NTU1NIFlZWVkiLExMTDoiRCBbXHUwNWQxXU1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbXHUwNWQxXU1NTU0gWVlZWSBISDptbSIsbDoiRC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgSEg6bW0iLGxsbGw6ImRk''@;'; put 'put ''ZCwgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNWQ0XHUwNWQ5XHUwNWQ1XHUwNWRkIFx1MDVkMVx1MDViZV1MVCIsbmV4dERheToiW1x1MDVkZVx1MDVkN1x1MDVlOCBcdTA1ZDFcdTA1YmVdTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA1ZDFcdTA1ZTlcdTA1ZTJc''@;'; put 'put ''dTA1ZDRdIExUIixsYXN0RGF5OiJbXHUwNWQwXHUwNWVhXHUwNWRlXHUwNWQ1XHUwNWRjIFx1MDVkMVx1MDViZV1MVCIsbGFzdFdlZWs6IltcdTA1ZDFcdTA1ZDlcdTA1ZDVcdTA1ZGRdIGRkZGQgW1x1MDVkNFx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkNVx1MDVkZiBcdTA1ZDFcdTA1ZTlcdTA1''@;'; put 'put ''ZTJcdTA1ZDRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA1ZDFcdTA1ZTJcdTA1ZDVcdTA1ZDMgJXMiLHBhc3Q6Ilx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkOSAlcyIsczoiXHUwNWRlXHUwNWUxXHUwNWU0XHUwNWU4IFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVk''@;'; put 'put ''NVx1MDVlYSIsc3M6IiVkIFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVkNVx1MDVlYSIsbToiXHUwNWQzXHUwNWU3XHUwNWQ0IixtbToiJWQgXHUwNWQzXHUwNWU3XHUwNWQ1XHUwNWVhIixoOiJcdTA1ZTlcdTA1ZTJcdTA1ZDQiLGhoOmZ1bmN0aW9uKHYpe3JldHVybiAyPT09dj8iXHUwNWU5XHUw''@;'; put 'put ''NWUyXHUwNWVhXHUwNWQ5XHUwNWQ5XHUwNWRkIjp2KyIgXHUwNWU5XHUwNWUyXHUwNWQ1XHUwNWVhIn0sZDoiXHUwNWQ5XHUwNWQ1XHUwNWRkIixkZDpmdW5jdGlvbih2KXtyZXR1cm4gMj09PXY/Ilx1MDVkOVx1MDVkNVx1MDVkZVx1MDVkOVx1MDVkOVx1MDVkZCI6disiIFx1MDVkOVx1MDVk''@;'; put 'put ''ZVx1MDVkOVx1MDVkZCJ9LE06Ilx1MDVkN1x1MDVkNVx1MDVkM1x1MDVlOSIsTU06ZnVuY3Rpb24odil7cmV0dXJuIDI9PT12PyJcdTA1ZDdcdTA1ZDVcdTA1ZDNcdTA1ZTlcdTA1ZDlcdTA1ZDlcdTA1ZGQiOnYrIiBcdTA1ZDdcdTA1ZDVcdTA1ZDNcdTA1ZTlcdTA1ZDlcdTA1ZGQifSx5OiJc''@;'; put 'put ''dTA1ZTlcdTA1ZTBcdTA1ZDQiLHl5OmZ1bmN0aW9uKHYpe3JldHVybiAyPT09dj8iXHUwNWU5XHUwNWUwXHUwNWVhXHUwNWQ5XHUwNWQ5XHUwNWRkIjp2JTEwPT0wJiYxMCE9PXY/disiIFx1MDVlOVx1MDVlMFx1MDVkNCI6disiIFx1MDVlOVx1MDVlMFx1MDVkOVx1MDVkZCJ9fSxtZXJpZGll''@;'; put 'put ''bVBhcnNlOi9cdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2fFx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkNCJcdTA1ZTZ8XHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZHxcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDkgXHUwNWQ0''@;'; put 'put ''XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTh8XHUwNWQxXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4fFx1MDVkMVx1MDVlMlx1MDVlOFx1MDVkMS9pLGlzUE06ZnVuY3Rpb24o''@;'; put 'put ''dil7cmV0dXJuL14oXHUwNWQwXHUwNWQ3XHUwNWQ0Ilx1MDVlNnxcdTA1ZDBcdTA1ZDdcdTA1ZThcdTA1ZDkgXHUwNWQ0XHUwNWU2XHUwNWQ0XHUwNWU4XHUwNWQ5XHUwNWQ5XHUwNWRkfFx1MDVkMVx1MDVlMlx1MDVlOFx1MDVkMSkkLy50ZXN0KHYpfSxtZXJpZGllbTpmdW5jdGlvbih2LGhl''@;'; put 'put ''LEgpe3JldHVybiB2PDU/Ilx1MDVkY1x1MDVlNFx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTgiOnY8MTA/Ilx1MDVkMVx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOCI6djwxMj9IPydcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDQiXHUwNWU2JzoiXHUwNWRjXHUwNWU0''@;'; put 'put ''XHUwNWUwXHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZCI6djwxOD9IPydcdTA1ZDBcdTA1ZDdcdTA1ZDQiXHUwNWU2JzoiXHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZCI6Ilx1''@;'; put 'put ''MDVkMVx1MDVlMlx1MDVlOFx1MDVkMSJ9fSl9KFQoMTY2NzYpKX0sMjMwMTU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MDk2NyIsMjoiXHUwOTY4IiwzOiJcdTA5NjkiLDQ6Ilx1MDk2YSIsNToiXHUwOTZiIiw2OiJcdTA5NmMiLDc6''@;'; put 'put ''Ilx1MDk2ZCIsODoiXHUwOTZlIiw5OiJcdTA5NmYiLDA6Ilx1MDk2NiJ9LHY9eyJcdTA5NjciOiIxIiwiXHUwOTY4IjoiMiIsIlx1MDk2OSI6IjMiLCJcdTA5NmEiOiI0IiwiXHUwOTZiIjoiNSIsIlx1MDk2YyI6IjYiLCJcdTA5NmQiOiI3IiwiXHUwOTZlIjoiOCIsIlx1MDk2ZiI6IjkiLCJc''@;'; put 'put ''dTA5NjYiOiIwIn0saGU9Wy9eXHUwOTFjXHUwOTI4L2ksL15cdTA5MmJcdTA5M2NcdTA5MzB8XHUwOTJiXHUwOTMwL2ksL15cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWEvaSwvXlx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OC9pLC9eXHUwOTJlXHUwOTA4L2ksL15cdTA5MWNc''@;'; put 'put ''dTA5NDJcdTA5MjgvaSwvXlx1MDkxY1x1MDk0MVx1MDkzMi9pLC9eXHUwOTA1XHUwOTE3L2ksL15cdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJ8XHUwOTM4XHUwOTNmXHUwOTI0L2ksL15cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDIvaSwvXlx1MDkyOFx1MDkzNXxcdTA5MjhcdTA5MzVc''@;'; put 'put ''dTA5MDIvaSwvXlx1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMnxcdTA5MjZcdTA5M2ZcdTA5MzgvaV07c2UuZGVmaW5lTG9jYWxlKCJoaSIse21vbnRoczp7Zm9ybWF0OiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1''@;'; put 'put ''MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkz''@;'; put 'put ''OFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMCIuc3Bs''@;'; put 'put ''aXQoIl8iKSxzdGFuZGFsb25lOiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJfXHUwOTJlXHUwOTA4X1x1''@;'; put 'put ''MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDhfXHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRkXHUwOTI0X1x1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzBfXHUwOTI4''@;'; put 'put ''XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkyOC5fXHUwOTJiXHUwOTNjXHUwOTMwLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJh''@;'; put 'put ''XHUwOTRkXHUwOTMwXHUwOTQ4Ll9cdTA5MmVcdTA5MDhfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMi5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5M2ZcdTA5MjQuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mi5fXHUwOTI4XHUwOTM1Ll9cdTA5MjZcdTA5M2Zc''@;'; put 'put ''dTA5MzguIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUwOTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzMlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5Mjdc''@;'; put 'put ''dTA5MzVcdTA5M2VcdTA5MzBfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNTaG9ydDoiXHUwOTMwXHUwOTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1MDkyZV9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzJfXHUwOTJjXHUwOTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNm''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MzBfXHUwOTM4XHUwOTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUwOTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixM''@;'; put 'put ''VFM6IkEgaDptbTpzcyBcdTA5MmNcdTA5MWNcdTA5NDciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDcifSxt''@;'; put 'put ''b250aHNQYXJzZTpoZSxsb25nTW9udGhzUGFyc2U6aGUsc2hvcnRNb250aHNQYXJzZTpbL15cdTA5MWNcdTA5MjgvaSwvXlx1MDkyYlx1MDkzY1x1MDkzMC9pLC9eXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhL2ksL15cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDgvaSwvXlx1''@;'; put 'put ''MDkyZVx1MDkwOC9pLC9eXHUwOTFjXHUwOTQyXHUwOTI4L2ksL15cdTA5MWNcdTA5NDFcdTA5MzIvaSwvXlx1MDkwNVx1MDkxNy9pLC9eXHUwOTM4XHUwOTNmXHUwOTI0L2ksL15cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDIvaSwvXlx1MDkyOFx1MDkzNS9pLC9eXHUwOTI2XHUwOTNm''@;'; put 'put ''XHUwOTM4L2ldLG1vbnRoc1JlZ2V4Oi9eKFx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MWNcdTA5MjhcLj98XHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5M2NcdTA5MzBcLj98XHUw''@;'; put 'put ''OTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5MzJ8XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XC4/fFx1MDkyZVx1MDkwOD98XHUwOTFjXHUwOTQyXHUwOTI4P3xcdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDh8''@;'; put 'put ''XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNHxcdTA5MDVcdTA5MTdcLj98XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5''@;'; put 'put ''MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVwu''@;'; put 'put ''P3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFwuPykvaSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MDkxY1x1MDkyOFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MWNc''@;'; put 'put ''dTA5MjhcLj98XHUwOTJiXHUwOTNjXHUwOTMwXHUwOTM1XHUwOTMwXHUwOTQwfFx1MDkyYlx1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5M2NcdTA5MzBcLj98XHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcdTA5''@;'; put 'put ''MzJ8XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XC4/fFx1MDkyZVx1MDkwOD98XHUwOTFjXHUwOTQyXHUwOTI4P3xcdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5MDh8XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNHxcdTA5MDVcdTA5''@;'; put 'put ''MTdcLj98XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkwNVx1MDkxNVx1''@;'; put 'put ''MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVwuP3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4''@;'; put 'put ''XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFwuPykvaSxtb250aHNTdHJpY3RSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDA/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDA/''@;'; put 'put ''fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XHUwOTMyP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4P3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5''@;'; put 'put ''MjQ/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0P1wuP3xcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcdTA5MmNcdTA5MzB8XHUwOTA1XHUwOTE1XHUw''@;'; put 'put ''OTRkXHUwOTFmXHUwOTQyXC4/fFx1MDkyOFx1MDkzNVx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcdTA5MDJcdTA5MmNcdTA5MzA/fFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJcdTA5MmNcdTA5''@;'; put 'put ''MzA/KS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oXHUwOTFjXHUwOTI4XC4/fFx1MDkyYlx1MDkzY1x1MDkzMFwuP3xcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1''@;'; put 'put ''MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXC4/fFx1MDkwNVx1MDkxN1wuP3xcdTA5MzhcdTA5M2ZcdTA5MjRcLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXC4/fFx1MDkyOFx1MDkzNVwuP3xcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA5''@;'; put 'put ''MDZcdTA5MWNdIExUIixuZXh0RGF5OiJbXHUwOTE1XHUwOTMyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwOTE1XHUwOTMyXSBMVCIsbGFzdFdlZWs6IltcdTA5MmFcdTA5M2ZcdTA5MWJcdTA5MzJcdTA5NDddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiIlcyBcdTA5MmVcdTA5NDdcdTA5MDIiLHBhc3Q6IiVzIFx1MDkyYVx1MDkzOVx1MDkzMlx1MDk0NyIsczoiXHUwOTE1XHUwOTQxXHUwOTFiIFx1MDkzOVx1MDk0MCBcdTA5MTVcdTA5NGRcdTA5MzdcdTA5MjMiLHNzOiIlZCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJc''@;'; put 'put ''dTA5MjEiLG06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5MWYiLG1tOiIlZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5MWYiLGg6Ilx1MDkwZlx1MDkxNSBcdTA5MThcdTA5MDJcdTA5MWZcdTA5M2UiLGhoOiIlZCBcdTA5MThcdTA5MDJcdTA5MWZcdTA5NDciLGQ6Ilx1MDkw''@;'; put 'put ''Zlx1MDkxNSBcdTA5MjZcdTA5M2ZcdTA5MjgiLGRkOiIlZCBcdTA5MjZcdTA5M2ZcdTA5MjgiLE06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5MzlcdTA5NDBcdTA5MjhcdTA5NDciLE1NOiIlZCBcdTA5MmVcdTA5MzlcdTA5NDBcdTA5MjhcdTA5NDciLHk6Ilx1MDkwZlx1MDkxNSBcdTA5MzVc''@;'; put 'put ''dTA5MzBcdTA5NGRcdTA5MzciLHl5OiIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzcifSxwcmVwYXJzZTpmdW5jdGlvbihMKXtyZXR1cm4gTC5yZXBsYWNlKC9bXHUwOTY3XHUwOTY4XHUwOTY5XHUwOTZhXHUwOTZiXHUwOTZjXHUwOTZkXHUwOTZlXHUwOTZmXHUwOTY2XS9nLGZ1bmN0aW9u''@;'; put 'put ''KEspe3JldHVybiB2W0tdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTCl7cmV0dXJuIEwucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihLKXtyZXR1cm4ga1tLXX0pfSxtZXJpZGllbVBhcnNlOi9cdTA5MzBcdTA5M2VcdTA5MjR8XHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5fFx1MDkyNlx1MDk0Ylx1''@;'; put 'put ''MDkyYVx1MDkzOVx1MDkzMHxcdTA5MzZcdTA5M2VcdTA5MmUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihMLEspe3JldHVybiAxMj09PUwmJihMPTApLCJcdTA5MzBcdTA5M2VcdTA5MjQiPT09Sz9MPDQ/TDpMKzEyOiJcdTA5MzhcdTA5NDFcdTA5MmNcdTA5MzkiPT09Sz9MOiJcdTA5MjZcdTA5''@;'; put 'put ''NGJcdTA5MmFcdTA5MzlcdTA5MzAiPT09Sz9MPj0xMD9MOkwrMTI6Ilx1MDkzNlx1MDkzZVx1MDkyZSI9PT1LP0wrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihMLEssSil7cmV0dXJuIEw8ND8iXHUwOTMwXHUwOTNlXHUwOTI0IjpMPDEwPyJcdTA5MzhcdTA5NDFcdTA5MmNcdTA5Mzki''@;'; put 'put ''Okw8MTc/Ilx1MDkyNlx1MDk0Ylx1MDkyYVx1MDkzOVx1MDkzMCI6TDwyMD8iXHUwOTM2XHUwOTNlXHUwOTJlIjoiXHUwOTMwXHUwOTNlXHUwOTI0In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sMTcxMzQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0''@;'; put 'put ''cmljdCI7ZnVuY3Rpb24gayhoZSxILEIpe3ZhciBMPWhlKyIgIjtzd2l0Y2goQil7Y2FzZSJzcyI6cmV0dXJuIEwrKDE9PT1oZT8ic2VrdW5kYSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8ic2VrdW5kZSI6InNla3VuZGkiKTtjYXNlIm0iOnJldHVybiBIPyJqZWRuYSBtaW51dGEiOiJqZWRu''@;'; put 'put ''ZSBtaW51dGUiO2Nhc2UibW0iOnJldHVybiBMKygxPT09aGU/Im1pbnV0YSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8ibWludXRlIjoibWludXRhIik7Y2FzZSJoIjpyZXR1cm4gSD8iamVkYW4gc2F0IjoiamVkbm9nIHNhdGEiO2Nhc2UiaGgiOnJldHVybiBMKygxPT09aGU/InNhdCI6Mj09''@;'; put 'put ''PWhlfHwzPT09aGV8fDQ9PT1oZT8ic2F0YSI6InNhdGkiKTtjYXNlImRkIjpyZXR1cm4gTCsoMT09PWhlPyJkYW4iOiJkYW5hIik7Y2FzZSJNTSI6cmV0dXJuIEwrKDE9PT1oZT8ibWplc2VjIjoyPT09aGV8fDM9PT1oZXx8ND09PWhlPyJtamVzZWNhIjoibWplc2VjaSIpO2Nhc2UieXkiOnJl''@;'; put 'put ''dHVybiBMKygxPT09aGU/ImdvZGluYSI6Mj09PWhlfHwzPT09aGV8fDQ9PT1oZT8iZ29kaW5lIjoiZ29kaW5hIil9fXNlLmRlZmluZUxvY2FsZSgiaHIiLHttb250aHM6e2Zvcm1hdDoic2lqZVx1MDEwZG5qYV92ZWxqYVx1MDEwZGVfb1x1MDE3ZXVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5q''@;'; put 'put ''YV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYSIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzaWplXHUwMTBkYW5qX3ZlbGphXHUwMTBkYV9vXHUwMTdldWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3Rv''@;'; put 'put ''cGFkX3N0dWRlbmlfcHJvc2luYWMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJzaWouX3ZlbGouX29cdTAxN2V1Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9saXMuX3N0dS5fcHJvLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRqZWxqYV9w''@;'; put 'put ''b25lZGplbGpha191dG9yYWtfc3JpamVkYV9cdTAxMGRldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX1x1MDEwZGV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3NyX1x1MDEwZGVf''@;'; put 'put ''cGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTSBZWVlZIixMTEw6IkRvIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEbyBNTU1NIFlZWVkgSDpt''@;'; put 'put ''bSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGplbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmlqZWR1XSBb''@;'; put 'put ''dV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nh''@;'; put 'put ''c2UgMDpyZXR1cm4iW3Byb1x1MDE2MWx1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbcHJvXHUwMTYxbHVdIFtzcmlqZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpy''@;'; put 'put ''ZXR1cm4iW3Byb1x1MDE2MWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixzczprLG06ayxtbTprLGg6ayxoaDprLGQ6ImRhbiIsZGQ6ayxNOiJtamVzZWMiLE1NOmsseToi''@;'; put 'put ''Z29kaW51Iix5eTprfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sNTA2NzA6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9InZhc1x4ZTFybmFw''@;'; put 'put ''IGhceGU5dGZcdTAxNTFuIGtlZGRlbiBzemVyZFx4ZTFuIGNzXHhmY3RceGY2cnRceGY2a1x4ZjZuIHBceGU5bnRla2VuIHN6b21iYXRvbiIuc3BsaXQoIiAiKTtmdW5jdGlvbiB2KEIsTCxLLEope3ZhciBJPUI7c3dpdGNoKEspe2Nhc2UicyI6cmV0dXJuIEp8fEw/Im5ceGU5aFx4ZTFueSBt''@;'; put 'put ''XHhlMXNvZHBlcmMiOiJuXHhlOWhceGUxbnkgbVx4ZTFzb2RwZXJjZSI7Y2FzZSJzcyI6cmV0dXJuIEkrKEp8fEwpPyIgbVx4ZTFzb2RwZXJjIjoiIG1ceGUxc29kcGVyY2UiO2Nhc2UibSI6cmV0dXJuImVneSIrKEp8fEw/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJtbSI6cmV0dXJuIEkrKEp8''@;'; put 'put ''fEw/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJoIjpyZXR1cm4iZWd5IisoSnx8TD8iIFx4ZjNyYSI6IiBceGYzclx4ZTFqYSIpO2Nhc2UiaGgiOnJldHVybiBJKyhKfHxMPyIgXHhmM3JhIjoiIFx4ZjNyXHhlMWphIik7Y2FzZSJkIjpyZXR1cm4iZWd5IisoSnx8TD8iIG5hcCI6IiBuYXBqYSIp''@;'; put 'put ''O2Nhc2UiZGQiOnJldHVybiBJKyhKfHxMPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJNIjpyZXR1cm4iZWd5IisoSnx8TD8iIGhceGYzbmFwIjoiIGhceGYzbmFwamEiKTtjYXNlIk1NIjpyZXR1cm4gSSsoSnx8TD8iIGhceGYzbmFwIjoiIGhceGYzbmFwamEiKTtjYXNlInkiOnJldHVybiJlZ3ki''@;'; put 'put ''KyhKfHxMPyIgXHhlOXYiOiIgXHhlOXZlIik7Y2FzZSJ5eSI6cmV0dXJuIEkrKEp8fEw/IiBceGU5diI6IiBceGU5dmUiKX1yZXR1cm4iIn1mdW5jdGlvbiBoZShCKXtyZXR1cm4oQj8iIjoiW21ceGZhbHRdICIpKyJbIitrW3RoaXMuZGF5KCldKyJdIExUWy1rb3JdIn1zZS5kZWZpbmVMb2Nh''@;'; put 'put ''bGUoImh1Iix7bW9udGhzOiJqYW51XHhlMXJfZmVicnVceGUxcl9tXHhlMXJjaXVzX1x4ZTFwcmlsaXNfbVx4ZTFqdXNfalx4ZmFuaXVzX2pceGZhbGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3RceGYzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJq''@;'; put 'put ''YW4uX2ZlYi5fbVx4ZTFyYy5fXHhlMXByLl9tXHhlMWouX2pceGZhbi5falx4ZmFsLl9hdWcuX3N6ZXB0Ll9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJ2YXNceGUxcm5hcF9oXHhlOXRmXHUwMTUxX2tlZGRfc3plcmRhX2NzXHhmY3Rc''@;'; put 'put ''eGY2cnRceGY2a19wXHhlOW50ZWtfc3pvbWJhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ2YXNfaFx4ZTl0X2tlZGRfc3plX2NzXHhmY3RfcFx4ZTluX3N6byIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoidl9oX2tfc3plX2NzX3Bfc3pvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJZWVlZLk1NLkRELiIsTEw6IllZWVkuIE1NTU0gRC4iLExMTDoiWVlZWS4gTU1NTSBELiBIOm1tIixMTExMOiJZWVlZLiBNTU1NIEQuLCBkZGRkIEg6bW0ifSxtZXJpZGllbVBhcnNlOi9kZXxkdS9pLGlzUE06ZnVuY3Rpb24oQil7cmV0dXJu''@;'; put 'put ''InUiPT09Qi5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oQixMLEspe3JldHVybiBCPDEyPyEwPT09Sz8iZGUiOiJERSI6ITA9PT1LPyJkdSI6IkRVIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlttYV0gTFRbLWtvcl0iLG5leHREYXk6Iltob2xuYXBdIExUWy1rb3Jd''@;'; put 'put ''IixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiBoZS5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gaGUuY2FsbCh0aGlzLCExKX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgbVx4ZmFs''@;'; put 'put ''dmEiLHBhc3Q6IiVzIixzOnYsc3M6dixtOnYsbW06dixoOnYsaGg6dixkOnYsZGQ6dixNOnYsTU06dix5OnYseXk6dn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDQ1MjM6ZnVuY3Rpb24o''@;'; put 'put ''V2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJoeS1hbSIse21vbnRoczp7Zm9ybWF0OiJcdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1N2VcdTA1NjFcdTA1ODBcdTA1NmJfXHUwNTgzXHUwNTY1XHUwNTdmXHUwNTgwXHUwNTdlXHUwNTYxXHUw''@;'; put 'put ''NTgwXHUwNTZiX1x1MDU3NFx1MDU2MVx1MDU4MFx1MDU3Zlx1MDU2Yl9cdTA1NjFcdTA1N2FcdTA1ODBcdTA1NmJcdTA1NmNcdTA1NmJfXHUwNTc0XHUwNTYxXHUwNTc1XHUwNTZiXHUwNTdkXHUwNTZiX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU3Nlx1MDU2Ylx1MDU3ZFx1MDU2Yl9cdTA1NzBc''@;'; put 'put ''dTA1NzhcdTA1ODJcdTA1NmNcdTA1NmJcdTA1N2RcdTA1NmJfXHUwNTg1XHUwNTYzXHUwNTc4XHUwNTdkXHUwNTdmXHUwNTc4XHUwNTdkXHUwNTZiX1x1MDU3ZFx1MDU2NVx1MDU3YVx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2Yl9cdTA1NzBcdTA1NzhcdTA1NmZc''@;'; put 'put ''dTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmJfXHUwNTc2XHUwNTc4XHUwNTc1XHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiX1x1MDU2NFx1MDU2NVx1MDU2Zlx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2YiIuc3BsaXQo''@;'; put 'put ''Il8iKSxzdGFuZGFsb25lOiJcdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1N2VcdTA1NjFcdTA1ODBfXHUwNTgzXHUwNTY1XHUwNTdmXHUwNTgwXHUwNTdlXHUwNTYxXHUwNTgwX1x1MDU3NFx1MDU2MVx1MDU4MFx1MDU3Zl9cdTA1NjFcdTA1N2FcdTA1ODBcdTA1NmJcdTA1NmNfXHUwNTc0''@;'; put 'put ''XHUwNTYxXHUwNTc1XHUwNTZiXHUwNTdkX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU3Nlx1MDU2Ylx1MDU3ZF9cdTA1NzBcdTA1NzhcdTA1ODJcdTA1NmNcdTA1NmJcdTA1N2RfXHUwNTg1XHUwNTYzXHUwNTc4XHUwNTdkXHUwNTdmXHUwNTc4XHUwNTdkX1x1MDU3ZFx1MDU2NVx1MDU3YVx1MDU3''@;'; put 'put ''Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MF9cdTA1NzBcdTA1NzhcdTA1NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBfXHUwNTc2XHUwNTc4XHUwNTc1XHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwX1x1MDU2NFx1MDU2NVx1MDU2Zlx1MDU3Zlx1MDU2''@;'; put 'put ''NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDU3MFx1MDU3Nlx1MDU3ZV9cdTA1ODNcdTA1N2ZcdTA1ODBfXHUwNTc0XHUwNTgwXHUwNTdmX1x1MDU2MVx1MDU3YVx1MDU4MF9cdTA1NzRcdTA1NzVcdTA1N2RfXHUwNTcwXHUwNTc2XHUwNTdk''@;'; put 'put ''X1x1MDU3MFx1MDU2Y1x1MDU3ZF9cdTA1ODVcdTA1NjNcdTA1N2RfXHUwNTdkXHUwNTdhXHUwNTdmX1x1MDU3MFx1MDU2Zlx1MDU3Zl9cdTA1NzZcdTA1NzRcdTA1NjJfXHUwNTY0XHUwNTZmXHUwNTdmIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA1NmZcdTA1NmJcdTA1ODBcdTA1NjFcdTA1''@;'; put 'put ''NmZcdTA1NmJfXHUwNTY1XHUwNTgwXHUwNTZmXHUwNTc4XHUwNTgyXHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU2NVx1MDU4MFx1MDU2NVx1MDU4NFx1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NzlcdTA1NzhcdTA1ODBcdTA1NjVcdTA1ODRcdTA1NzdcdTA1''@;'; put 'put ''NjFcdTA1NjJcdTA1NjlcdTA1NmJfXHUwNTcwXHUwNTZiXHUwNTc2XHUwNTYzXHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU3OFx1MDU4Mlx1MDU4MFx1MDU2Mlx1MDU2MVx1MDU2OV9cdTA1NzdcdTA1NjFcdTA1NjJcdTA1NjFcdTA1NjkiLnNwbGl0KCJfIiksd2Vla2RheXNT''@;'; put 'put ''aG9ydDoiXHUwNTZmXHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1ODRfXHUwNTc5XHUwNTgwXHUwNTg0X1x1MDU3MFx1MDU3Nlx1MDU2M19cdTA1NzhcdTA1ODJcdTA1ODBcdTA1NjJfXHUwNTc3XHUwNTYyXHUwNTY5Ii5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJcdTA1NmZcdTA1ODBcdTA1NmZfXHUwNTY1XHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU4NF9cdTA1NzlcdTA1ODBcdTA1ODRfXHUwNTcwXHUwNTc2XHUwNTYzX1x1MDU3OFx1MDU4Mlx1MDU4MFx1MDU2Ml9cdTA1NzdcdTA1NjJcdTA1NjkiLnNwbGl0KCJfIiksbG9uZ0RhdGVG''@;'; put 'put ''b3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIFx1MDU2OS4iLExMTDoiRCBNTU1NIFlZWVkgXHUwNTY5LiwgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFx1MDU2OS4sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6''@;'; put 'put ''IltcdTA1NjFcdTA1NzVcdTA1N2RcdTA1ODVcdTA1ODBdIExUIixuZXh0RGF5OiJbXHUwNTdlXHUwNTYxXHUwNTcyXHUwNTY4XSBMVCIsbGFzdERheToiW1x1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW1x1MDU4NVx1MDU4MFx1''@;'; put 'put ''MDU2OCBcdTA1NmFcdTA1NjFcdTA1NzRcdTA1NjhdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW1x1MDU2MVx1MDU3Nlx1MDU4MVx1MDU2MVx1MDU2ZV0gZGRkZCBbXHUwNTg1XHUwNTgwXHUwNTY4IFx1MDU2YVx1MDU2MVx1MDU3NFx1MDU2OF0gTFQifSxzYW1lRWxzZToiTCJ9''@;'; put 'put ''LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA1NzBcdTA1NjVcdTA1N2ZcdTA1NzgiLHBhc3Q6IiVzIFx1MDU2MVx1MDU3Y1x1MDU2MVx1MDU3YiIsczoiXHUwNTc0XHUwNTZiIFx1MDU4NFx1MDU2MVx1MDU3Nlx1MDU2YiBcdTA1N2VcdTA1NjFcdTA1NzVcdTA1ODBcdTA1NmZcdTA1NzVc''@;'; put 'put ''dTA1NjFcdTA1NzYiLHNzOiIlZCBcdTA1N2VcdTA1NjFcdTA1NzVcdTA1ODBcdTA1NmZcdTA1NzVcdTA1NjFcdTA1NzYiLG06Ilx1MDU4MFx1MDU3OFx1MDU3YVx1MDU2NSIsbW06IiVkIFx1MDU4MFx1MDU3OFx1MDU3YVx1MDU2NSIsaDoiXHUwNTZhXHUwNTYxXHUwNTc0IixoaDoiJWQgXHUw''@;'; put 'put ''NTZhXHUwNTYxXHUwNTc0IixkOiJcdTA1ODVcdTA1ODAiLGRkOiIlZCBcdTA1ODVcdTA1ODAiLE06Ilx1MDU2MVx1MDU3NFx1MDU2Ylx1MDU3ZCIsTU06IiVkIFx1MDU2MVx1MDU3NFx1MDU2Ylx1MDU3ZCIseToiXHUwNTdmXHUwNTYxXHUwNTgwXHUwNTZiIix5eToiJWQgXHUwNTdmXHUwNTYx''@;'; put 'put ''XHUwNTgwXHUwNTZiIn0sbWVyaWRpZW1QYXJzZTovXHUwNTYzXHUwNTZiXHUwNTc3XHUwNTY1XHUwNTgwXHUwNTdlXHUwNTYxfFx1MDU2MVx1MDU3Y1x1MDU2MVx1MDU3ZVx1MDU3OFx1MDU3Zlx1MDU3ZVx1MDU2MXxcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1NjF8''@;'; put 'put ''XHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTc4XHUwNTc1XHUwNTYxXHUwNTc2Lyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybi9eKFx1MDU4MVx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3ZVx1MDU2MXxcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1NzhcdTA1NzVcdTA1NjFcdTA1''@;'; put 'put ''NzYpJC8udGVzdCh2KX0sbWVyaWRpZW06ZnVuY3Rpb24odil7cmV0dXJuIHY8ND8iXHUwNTYzXHUwNTZiXHUwNTc3XHUwNTY1XHUwNTgwXHUwNTdlXHUwNTYxIjp2PDEyPyJcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2VcdTA1NzhcdTA1N2ZcdTA1N2VcdTA1NjEiOnY8MTc/Ilx1MDU4MVx1MDU2''@;'; put 'put ''NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3ZVx1MDU2MSI6Ilx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3OFx1MDU3NVx1MDU2MVx1MDU3NiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn18XGR7MSwyfS0oXHUwNTZiXHUwNTc2fFx1MDU4MFx1MDU2NCkvLG9yZGluYWw6ZnVu''@;'; put 'put ''Y3Rpb24odixoZSl7c3dpdGNoKGhlKXtjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOmNhc2UiREREbyI6cmV0dXJuIDE9PT12P3YrIi1cdTA1NmJcdTA1NzYiOnYrIi1cdTA1ODBcdTA1NjQiO2RlZmF1bHQ6cmV0dXJuIHZ9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw5OTIz''@;'; put 'put ''MzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImlkIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIu''@;'; put 'put ''c3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0FndF9TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJN''@;'; put 'put ''aW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE''@;'; put 'put ''IE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24odixoZSl7cmV0dXJuIDEyPT09diYmKHY9MCksInBhZ2kiPT09aGU/''@;'; put 'put ''djoic2lhbmciPT09aGU/dj49MTE/djp2KzEyOiJzb3JlIj09PWhlfHwibWFsYW0iPT09aGU/disxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8MTE/InBhZ2kiOnY8MTU/InNpYW5nIjp2PDE5PyJzb3JlIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToi''@;'; put 'put ''W0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Jlc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGFsdSBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxhbHUiLHM6ImJlYmVyYXBhIGRldGlrIixzczoiJWQgZGV0aWsiLG06InNlbWVuaXQiLG1tOiIlZCBtZW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmkiLE06InNlYnVsYW4iLE1NOiIlZCBidWxh''@;'; put 'put ''biIseToic2V0YWh1biIseXk6IiVkIHRhaHVuIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sOTQ2OTM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhIKXtyZXR1cm4gSCUxMDA9PTExfHxIJTEwIT0xfWZ1bmN0aW9uIHYo''@;'; put 'put ''SCxCLEwsSyl7dmFyIEo9SCsiICI7c3dpdGNoKEwpe2Nhc2UicyI6cmV0dXJuIEJ8fEs/Im5va2tyYXIgc2VrXHhmYW5kdXIiOiJub2trcnVtIHNla1x4ZmFuZHVtIjtjYXNlInNzIjpyZXR1cm4gayhIKT9KKyhCfHxLPyJzZWtceGZhbmR1ciI6InNla1x4ZmFuZHVtIik6Sisic2VrXHhmYW5k''@;'; put 'put ''YSI7Y2FzZSJtIjpyZXR1cm4gQj8ibVx4ZWRuXHhmYXRhIjoibVx4ZWRuXHhmYXR1IjtjYXNlIm1tIjpyZXR1cm4gayhIKT9KKyhCfHxLPyJtXHhlZG5ceGZhdHVyIjoibVx4ZWRuXHhmYXR1bSIpOkI/SisibVx4ZWRuXHhmYXRhIjpKKyJtXHhlZG5ceGZhdHUiO2Nhc2UiaGgiOnJldHVybiBr''@;'; put 'put ''KEgpP0orKEJ8fEs/ImtsdWtrdXN0dW5kaXIiOiJrbHVra3VzdHVuZHVtIik6Sisia2x1a2t1c3R1bmQiO2Nhc2UiZCI6cmV0dXJuIEI/ImRhZ3VyIjpLPyJkYWciOiJkZWdpIjtjYXNlImRkIjpyZXR1cm4gayhIKT9CP0orImRhZ2FyIjpKKyhLPyJkYWdhIjoiZFx4ZjZndW0iKTpCP0orImRh''@;'; put 'put ''Z3VyIjpKKyhLPyJkYWciOiJkZWdpIik7Y2FzZSJNIjpyZXR1cm4gQj8ibVx4ZTFudVx4ZjB1ciI6Sz8ibVx4ZTFudVx4ZjAiOiJtXHhlMW51XHhmMGkiO2Nhc2UiTU0iOnJldHVybiBrKEgpP0I/SisibVx4ZTFudVx4ZjBpciI6SisoSz8ibVx4ZTFudVx4ZjBpIjoibVx4ZTFudVx4ZjB1bSIp''@;'; put 'put ''OkI/SisibVx4ZTFudVx4ZjB1ciI6SisoSz8ibVx4ZTFudVx4ZjAiOiJtXHhlMW51XHhmMGkiKTtjYXNlInkiOnJldHVybiBCfHxLPyJceGUxciI6Ilx4ZTFyaSI7Y2FzZSJ5eSI6cmV0dXJuIGsoSCk/SisoQnx8Sz8iXHhlMXIiOiJceGUxcnVtIik6SisoQnx8Sz8iXHhlMXIiOiJceGUxcmki''@;'; put 'put ''KX19c2UuZGVmaW5lTG9jYWxlKCJpcyIse21vbnRoczoiamFuXHhmYWFyX2ZlYnJceGZhYXJfbWFyc19hcHJceGVkbF9tYVx4ZWRfalx4ZmFuXHhlZF9qXHhmYWxceGVkX1x4ZTFnXHhmYXN0X3NlcHRlbWJlcl9va3RceGYzYmVyX25ceGYzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1v''@;'; put 'put ''bnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFceGVkX2pceGZhbl9qXHhmYWxfXHhlMWdceGZhX3NlcF9va3Rfblx4ZjN2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tXHhlMW51ZGFndXJfXHhmZXJpXHhmMGp1ZGFndXJfbWlceGYwdmlrdWRhZ3VyX2ZpbW10dWRh''@;'; put 'put ''Z3VyX2ZceGY2c3R1ZGFndXJfbGF1Z2FyZGFndXIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX21ceGUxbl9ceGZlcmlfbWlceGYwX2ZpbV9mXHhmNnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9NXHhlMV9ceGRlcl9NaV9GaV9GXHhmNl9MYSIuc3BsaXQoIl8iKSxs''@;'; put 'put ''b25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x4ZWQg''@;'; put 'put ''ZGFnIGtsLl0gTFQiLG5leHREYXk6IltceGUxIG1vcmd1biBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW1x4ZWQgZ1x4ZTZyIGtsLl0gTFQiLGxhc3RXZWVrOiJbc1x4ZWRceGYwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHNceGVkXHhmMGFuIixzOnYsc3M6dixtOnYsbW06dixoOiJrbHVra3VzdHVuZCIsaGg6dixkOnYsZGQ6dixNOnYsTU06dix5OnYseXk6dn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4i''@;'; put 'put ''LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDc4MTE4OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiaXQtY2giLHttb250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVn''@;'; put 'put ''bGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkXHhlY19tYXJ0''@;'; put 'put ''ZWRceGVjX21lcmNvbGVkXHhlY19naW92ZWRceGVjX3ZlbmVyZFx4ZWNfc2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWVfZ2lfdmVfc2EiLnNwbGl0KCJfIiksbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPZ2dpIGFsbGVdIExUIixuZXh0''@;'; put 'put ''RGF5OiJbRG9tYW5pIGFsbGVdIExUIixuZXh0V2VlazoiZGRkZCBbYWxsZV0gTFQiLGxhc3REYXk6IltJZXJpIGFsbGVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKT8iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiOiJbbG8gc2NvcnNvXSBkZGRkIFth''@;'; put 'put ''bGxlXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24odil7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3Qodik/InRyYSI6ImluIikrIiAiK3Z9LHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsc3M6IiVkIHNlY29uZGkiLG06InVuIG1pbnV0byIs''@;'; put 'put ''bW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIl''@;'; put 'put ''ZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDYzOTM2OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgiaXQiLHttb250aHM6Imdlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9f''@;'; put 'put ''bHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWVuaWNhX2x1bmVkXHhlY19t''@;'; put 'put ''YXJ0ZWRceGVjX21lcmNvbGVkXHhlY19naW92ZWRceGVjX3ZlbmVyZFx4ZWNfc2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWVfZ2lfdmVfc2EiLnNwbGl0KCJfIiks''@;'; put 'put ''bG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4i''@;'; put 'put ''W09nZ2kgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW0RvbWFuaSBhIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIn0sbmV4''@;'; put 'put ''dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW0llcmkgYSIrKHRoaXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3Vycygp''@;'; put 'put ''PyIgIjoibGwnIikrIl1MVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpPyJbTGEgc2NvcnNhXSBkZGRkIFthIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIjoiW0xvIHNjb3Jzb10gZGRkZCBbYSIrKHRo''@;'; put 'put ''aXMuaG91cnMoKT4xPyJsbGUgIjowPT09dGhpcy5ob3VycygpPyIgIjoibGwnIikrIl1MVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InRyYSAlcyIscGFzdDoiJXMgZmEiLHM6ImFsY3VuaSBzZWNvbmRpIixzczoiJWQgc2Vjb25kaSIsbToidW4gbWludXRvIixtbToi''@;'; put 'put ''JWQgbWludXRpIixoOiJ1bidvcmEiLGhoOiIlZCBvcmUiLGQ6InVuIGdpb3JubyIsZGQ6IiVkIGdpb3JuaSIsdzoidW5hIHNldHRpbWFuYSIsd3c6IiVkIHNldHRpbWFuZSIsTToidW4gbWVzZSIsTU06IiVkIG1lc2kiLHk6InVuIGFubm8iLHl5OiIlZCBhbm5pIn0sZGF5T2ZNb250aE9yZGlu''@;'; put 'put ''YWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sODY4NzE6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJqYSIse2VyYXM6W3tzaW5jZToiMjAxOS0w''@;'; put 'put ''NS0wMSIsb2Zmc2V0OjEsbmFtZToiXHU0ZWU0XHU1NDhjIixuYXJyb3c6Ilx1MzJmZiIsYWJicjoiUiJ9LHtzaW5jZToiMTk4OS0wMS0wOCIsdW50aWw6IjIwMTktMDQtMzAiLG9mZnNldDoxLG5hbWU6Ilx1NWU3M1x1NjIxMCIsbmFycm93OiJcdTMzN2IiLGFiYnI6IkgifSx7c2luY2U6IjE5''@;'; put 'put ''MjYtMTItMjUiLHVudGlsOiIxOTg5LTAxLTA3IixvZmZzZXQ6MSxuYW1lOiJcdTY2MmRcdTU0OGMiLG5hcnJvdzoiXHUzMzdjIixhYmJyOiJTIn0se3NpbmNlOiIxOTEyLTA3LTMwIix1bnRpbDoiMTkyNi0xMi0yNCIsb2Zmc2V0OjEsbmFtZToiXHU1OTI3XHU2YjYzIixuYXJyb3c6Ilx1MzM3''@;'; put 'put ''ZCIsYWJicjoiVCJ9LHtzaW5jZToiMTg3My0wMS0wMSIsdW50aWw6IjE5MTItMDctMjkiLG9mZnNldDo2LG5hbWU6Ilx1NjYwZVx1NmNiYiIsbmFycm93OiJcdTMzN2UiLGFiYnI6Ik0ifSx7c2luY2U6IjAwMDEtMDEtMDEiLHVudGlsOiIxODczLTEyLTMxIixvZmZzZXQ6MSxuYW1lOiJcdTg5''@;'; put 'put ''N2ZcdTY2YTYiLG5hcnJvdzoiQUQiLGFiYnI6IkFEIn0se3NpbmNlOiIwMDAwLTEyLTMxIix1bnRpbDotMS8wLG9mZnNldDoxLG5hbWU6Ilx1N2QwMFx1NTE0M1x1NTI0ZCIsbmFycm93OiJCQyIsYWJicjoiQkMifV0sZXJhWWVhck9yZGluYWxSZWdleDovKFx1NTE0M3xcZCspXHU1ZTc0Lyxl''@;'; put 'put ''cmFZZWFyT3JkaW5hbFBhcnNlOmZ1bmN0aW9uKHYsaGUpe3JldHVybiJcdTUxNDMiPT09aGVbMV0/MTpwYXJzZUludChoZVsxXXx8diwxMCl9LG1vbnRoczoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBc''@;'; put 'put ''dTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzOiJcdTY1ZTVcdTY2ZGNcdTY1ZTVfXHU2NzA4XHU2NmRjXHU2NWU1X1x1NzA2Ylx1NjZkY1x1NjVlNV9cdTZjMzRcdTY2ZGNcdTY1ZTVfXHU2NzI4XHU2NmRjXHU2NWU1X1x1OTFkMVx1NjZkY1x1NjVlNV9cdTU3MWZcdTY2ZGNcdTY1ZTUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi''@;'; put 'put ''XHU2NWU1X1x1NjcwOF9cdTcwNmJfXHU2YzM0X1x1NjcyOF9cdTkxZDFfXHU1NzFmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU2NzA4X1x1NzA2Yl9cdTZjMzRfXHU2NzI4X1x1OTFkMV9cdTU3MWYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT''@;'; put 'put ''OiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBkZGRkIEhIOm1tIixsOiJZWVlZL01NL0REIixsbDoiWVlZWVx1NWU3''@;'; put 'put ''NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1KGRkZCkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTUzNDhcdTUyNGR8XHU1MzQ4XHU1ZjhjL2ksaXNQTTpmdW5jdGlvbih2KXtyZXR1cm4i''@;'; put 'put ''XHU1MzQ4XHU1ZjhjIj09PXZ9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8MTI/Ilx1NTM0OFx1NTI0ZCI6Ilx1NTM0OFx1NWY4YyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU2NWU1XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NjVlNV0gTFQiLG5leHRXZWVrOmZ1''@;'; put 'put ''bmN0aW9uKHYpe3JldHVybiB2LndlZWsoKSE9PXRoaXMud2VlaygpPyJbXHU2NzY1XHU5MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sbGFzdERheToiW1x1NjYyOFx1NjVlNV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLndlZWsoKSE9PXYud2VlaygpPyJbXHU1MTQ4XHU5''@;'; put 'put ''MDMxXWRkZGQgTFQiOiJkZGRkIExUIn0sc2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHU2NWU1LyxvcmRpbmFsOmZ1bmN0aW9uKHYsaGUpe3N3aXRjaChoZSl7Y2FzZSJ5IjpyZXR1cm4gMT09PXY/Ilx1NTE0M1x1NWU3NCI6disiXHU1ZTc0IjtjYXNlImQi''@;'; put 'put ''OmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiB2KyJcdTY1ZTUiO2RlZmF1bHQ6cmV0dXJuIHZ9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTVmOGMiLHBhc3Q6IiVzXHU1MjRkIixzOiJcdTY1NzBcdTc5ZDIiLHNzOiIlZFx1NzlkMiIsbToiMVx1NTIwNiIsbW06IiVkXHU1MjA2IixoOiIx''@;'; put 'put ''XHU2NjQyXHU5NTkzIixoaDoiJWRcdTY2NDJcdTk1OTMiLGQ6IjFcdTY1ZTUiLGRkOiIlZFx1NjVlNSIsTToiMVx1MzBmNlx1NjcwOCIsTU06IiVkXHUzMGY2XHU2NzA4Iix5OiIxXHU1ZTc0Iix5eToiJWRcdTVlNzQifX0pfShUKDE2Njc2KSl9LDY4NzEwOmZ1bmN0aW9uKFdlLHplLFQpeyFm''@;'; put 'put ''dW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgianYiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0''@;'; put 'put ''OiJKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTWluZ2d1X1NlbmVuX1NlbG9zb19SZWJ1X0tlbWlzX0plbXV3YWhfU2VwdHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmViX0tlbV9K''@;'; put 'put ''ZW1fU2VwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TcCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBI''@;'; put 'put ''SC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24odixoZSl7cmV0dXJuIDEyPT09diYmKHY9MCksImVuamluZyI9PT1oZT92OiJzaXlhbmciPT09''@;'; put 'put ''aGU/dj49MTE/djp2KzEyOiJzb250ZW4iPT09aGV8fCJuZGFsdSI9PT1oZT92KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdjwxMT8iZW5qaW5nIjp2PDE1PyJzaXlhbmciOnY8MTk/InNvbnRlbiI6Im5kYWx1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltEaW50''@;'; put 'put ''ZW4gcHVuaWtvIHB1a3VsXSBMVCIsbmV4dERheToiW01iZW5qYW5nIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0thbGEgd2luZ2kgcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxh''@;'; put 'put ''dGl2ZVRpbWU6e2Z1dHVyZToid29udGVuIGluZyAlcyIscGFzdDoiJXMgaW5na2FuZyBrZXBlbmdrZXIiLHM6InNhd2V0YXdpcyBkZXRpayIsc3M6IiVkIGRldGlrIixtOiJzZXR1bmdnYWwgbWVuaXQiLG1tOiIlZCBtZW5pdCIsaDoic2V0dW5nZ2FsIGphbSIsaGg6IiVkIGphbSIsZDoic2Vk''@;'; put 'put ''aW50ZW4iLGRkOiIlZCBkaW50ZW4iLE06InNld3VsYW4iLE1NOiIlZCB3dWxhbiIseToic2V0YXVuIix5eToiJWQgdGF1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDE3MTI1OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgia2EiLHttb250aHM6Ilx1MTBkOFx1MTBkMFx1MTBkY1x1MTBkNVx1MTBkMFx1MTBlMFx1MTBkOF9cdTEwZDdcdTEwZDRcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDVcdTEwZDBcdTEwZGFcdTEwZDhfXHUxMGRiXHUxMGQwXHUxMGUwXHUxMGUyXHUxMGQ4X1x1MTBkMFx1MTBkZVx1''@;'; put 'put ''MTBlMFx1MTBkOFx1MTBkYVx1MTBkOF9cdTEwZGJcdTEwZDBcdTEwZDhcdTEwZTFcdTEwZDhfXHUxMGQ4XHUxMGQ1XHUxMGRjXHUxMGQ4XHUxMGUxXHUxMGQ4X1x1MTBkOFx1MTBkNVx1MTBkYVx1MTBkOFx1MTBlMVx1MTBkOF9cdTEwZDBcdTEwZDJcdTEwZDVcdTEwZDhcdTEwZTFcdTEwZTJc''@;'; put 'put ''dTEwZGRfXHUxMGUxXHUxMGQ0XHUxMGU1XHUxMGUyXHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4X1x1MTBkZFx1MTBlNVx1MTBlMlx1MTBkZFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1MTBkOF9cdTEwZGNcdTEwZGRcdTEwZDRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBc''@;'; put 'put ''dTEwZDhfXHUxMGQzXHUxMGQ0XHUxMGQ5XHUxMGQ0XHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTEwZDhcdTEwZDBcdTEwZGNfXHUxMGQ3XHUxMGQ0XHUxMGQxX1x1MTBkYlx1MTBkMFx1MTBlMF9cdTEwZDBcdTEwZGVcdTEwZTBfXHUx''@;'; put 'put ''MGRiXHUxMGQwXHUxMGQ4X1x1MTBkOFx1MTBkNVx1MTBkY19cdTEwZDhcdTEwZDVcdTEwZGFfXHUxMGQwXHUxMGQyXHUxMGQ1X1x1MTBlMVx1MTBkNFx1MTBlNV9cdTEwZGRcdTEwZTVcdTEwZTJfXHUxMGRjXHUxMGRkXHUxMGQ0X1x1MTBkM1x1MTBkNFx1MTBkOSIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5czp7c3RhbmRhbG9uZToiXHUxMGQ5XHUxMGQ1XHUxMGQ4XHUxMGUwXHUxMGQwX1x1MTBkZFx1MTBlMFx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZTFcdTEwZDBcdTEwZGJcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGRkXHUxMGQ3''@;'; put 'put ''XHUxMGVlXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBlZVx1MTBlM1x1MTBkN1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZGVcdTEwZDBcdTEwZTBcdTEwZDBcdTEwZTFcdTEwZDlcdTEwZDRcdTEwZDVcdTEwZDhfXHUxMGU4XHUxMGQw''@;'; put 'put ''XHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4Ii5zcGxpdCgiXyIpLGZvcm1hdDoiXHUxMGQ5XHUxMGQ1XHUxMGQ4XHUxMGUwXHUxMGQwXHUxMGUxX1x1MTBkZFx1MTBlMFx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBlMV9cdTEwZTFcdTEwZDBcdTEwZGJcdTEwZThcdTEwZDBcdTEw''@;'; put 'put ''ZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGRkXHUxMGQ3XHUxMGVlXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBlZVx1MTBlM1x1MTBkN1x1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBlMV9cdTEwZGVcdTEwZDBcdTEwZTBcdTEwZDBcdTEwZTFcdTEw''@;'; put 'put ''ZDlcdTEwZDRcdTEwZDVcdTEwZTFfXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi8oXHUxMGVjXHUxMGQ4XHUxMGRjXHUxMGQwfFx1MTBlOFx1MTBkNFx1MTBkYlx1MTBkM1x1MTBkNFx1MTBkMikvfSx3ZWVrZGF5c1Nob3J0OiJcdTEw''@;'; put 'put ''ZDlcdTEwZDVcdTEwZDhfXHUxMGRkXHUxMGUwXHUxMGU4X1x1MTBlMVx1MTBkMFx1MTBkYl9cdTEwZGRcdTEwZDdcdTEwZWVfXHUxMGVlXHUxMGUzXHUxMGQ3X1x1MTBkZVx1MTBkMFx1MTBlMF9cdTEwZThcdTEwZDBcdTEwZDEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MTBkOVx1MTBk''@;'; put 'put ''NV9cdTEwZGRcdTEwZTBfXHUxMGUxXHUxMGQwX1x1MTBkZFx1MTBkN19cdTEwZWVcdTEwZTNfXHUxMGRlXHUxMGQwX1x1MTBlOFx1MTBkMCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVki''@;'; put 'put ''LExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTEwZDNcdTEwZTZcdTEwZDRcdTEwZTFdIExUWy1cdTEwZDZcdTEwZDRdIixuZXh0RGF5OiJbXHUxMGVlXHUxMGQ1XHUxMGQwXHUxMGRhXSBMVFstXHUx''@;'; put 'put ''MGQ2XHUxMGQ0XSIsbGFzdERheToiW1x1MTBkMlx1MTBlM1x1MTBlOFx1MTBkOFx1MTBkY10gTFRbLVx1MTBkNlx1MTBkNF0iLG5leHRXZWVrOiJbXHUxMGU4XHUxMGQ0XHUxMGRiXHUxMGQzXHUxMGQ0XHUxMGQyXSBkZGRkIExUWy1cdTEwZDZcdTEwZDRdIixsYXN0V2VlazoiW1x1MTBlY1x1''@;'; put 'put ''MTBkOFx1MTBkY1x1MTBkMF0gZGRkZCBMVC1cdTEwZDZcdTEwZDQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvKFx1MTBlY1x1MTBkMFx1MTBkYnxcdTEwZWNcdTEwZTNcdTEwZDd8XHUxMGUxXHUxMGQwXHUxMGQwXHUx''@;'; put 'put ''MGQ3fFx1MTBlY1x1MTBkNFx1MTBkYXxcdTEwZDNcdTEwZTZ8XHUxMGQ3XHUxMGQ1KShcdTEwZDh8XHUxMGQ0KS8sZnVuY3Rpb24oaGUsSCxCKXtyZXR1cm4iXHUxMGQ4Ij09PUI/SCsiXHUxMGU4XHUxMGQ4IjpIK0IrIlx1MTBlOFx1MTBkOCJ9KX0scGFzdDpmdW5jdGlvbih2KXtyZXR1cm4v''@;'; put 'put ''KFx1MTBlY1x1MTBkMFx1MTBkYlx1MTBkOHxcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDh8XHUxMGUxXHUxMGQwXHUxMGQwXHUxMGQ3XHUxMGQ4fFx1MTBkM1x1MTBlNlx1MTBkNHxcdTEwZDdcdTEwZDVcdTEwZDQpLy50ZXN0KHYpP3YucmVwbGFjZSgvKFx1MTBkOHxcdTEwZDQpJC8sIlx1MTBk''@;'; put 'put ''OFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTovXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4Ly50ZXN0KHYpP3YucmVwbGFjZSgvXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4JC8sIlx1MTBlY1x1MTBkYVx1MTBkOFx1MTBlMSBcdTEwZWNcdTEwZDhcdTEwZGMiKTp2fSxzOiJcdTEwZTBcdTEw''@;'; put 'put ''ZDBcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZGNcdTEwZDhcdTEwZGJcdTEwZDQgXHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4IixzczoiJWQgXHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4IixtOiJcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDgiLG1tOiIlZCBcdTEwZWNcdTEwZTNcdTEwZDdcdTEwZDgi''@;'; put 'put ''LGg6Ilx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOCIsaGg6IiVkIFx1MTBlMVx1MTBkMFx1MTBkMFx1MTBkN1x1MTBkOCIsZDoiXHUxMGQzXHUxMGU2XHUxMGQ0IixkZDoiJWQgXHUxMGQzXHUxMGU2XHUxMGQ0IixNOiJcdTEwZDdcdTEwZDVcdTEwZDQiLE1NOiIlZCBcdTEwZDdcdTEw''@;'; put 'put ''ZDVcdTEwZDQiLHk6Ilx1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCIseXk6IiVkIFx1MTBlY1x1MTBkNFx1MTBkYVx1MTBkOCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6LzB8MS1cdTEwZGFcdTEwZDh8XHUxMGRiXHUxMGQ0LVxkezEsMn18XGR7MSwyfS1cdTEwZDQvLG9yZGluYWw6ZnVuY3Rp''@;'; put 'put ''b24odil7cmV0dXJuIDA9PT12P3Y6MT09PXY/disiLVx1MTBkYVx1MTBkOCI6djwyMHx8djw9MTAwJiZ2JTIwPT0wfHx2JTEwMD09MD8iXHUxMGRiXHUxMGQ0LSIrdjp2KyItXHUxMGQ0In0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sODI0NjE6ZnVuY3Rpb24oV2UsemUsVCl7''@;'; put 'put ''IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezA6Ii1cdTA0NDhcdTA0NTYiLDE6Ii1cdTA0NDhcdTA0NTYiLDI6Ii1cdTA0NDhcdTA0NTYiLDM6Ii1cdTA0NDhcdTA0NTYiLDQ6Ii1cdTA0NDhcdTA0NTYiLDU6Ii1cdTA0NDhcdTA0NTYiLDY6Ii1cdTA0NDhcdTA0NGIiLDc6Ii1c''@;'; put 'put ''dTA0NDhcdTA0NTYiLDg6Ii1cdTA0NDhcdTA0NTYiLDk6Ii1cdTA0NDhcdTA0NGIiLDEwOiItXHUwNDQ4XHUwNDRiIiwyMDoiLVx1MDQ0OFx1MDQ0YiIsMzA6Ii1cdTA0NDhcdTA0NGIiLDQwOiItXHUwNDQ4XHUwNDRiIiw1MDoiLVx1MDQ0OFx1MDQ1NiIsNjA6Ii1cdTA0NDhcdTA0NGIiLDcw''@;'; put 'put ''OiItXHUwNDQ4XHUwNDU2Iiw4MDoiLVx1MDQ0OFx1MDQ1NiIsOTA6Ii1cdTA0NDhcdTA0NGIiLDEwMDoiLVx1MDQ0OFx1MDQ1NiJ9O3NlLmRlZmluZUxvY2FsZSgia2siLHttb250aHM6Ilx1MDQ5Ylx1MDQzMFx1MDRhM1x1MDQ0Mlx1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0OWJcdTA0M2ZcdTA0''@;'; put 'put ''MzBcdTA0M2RfXHUwNDNkXHUwNDMwXHUwNDQzXHUwNDQwXHUwNDRiXHUwNDM3X1x1MDQ0MVx1MDRkOVx1MDQ0M1x1MDQ1Nlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0M2NcdTA0NGJcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDQzXHUwNDQxXHUwNDRiXHUwNDNjX1x1MDQ0OFx1MDQ1Nlx1MDQzYlx1''@;'; put 'put ''MDQzNFx1MDQzNV9cdTA0NDJcdTA0MzBcdTA0M2NcdTA0NGJcdTA0MzdfXHUwNDliXHUwNDRiXHUwNDQwXHUwNDNhXHUwNGFmXHUwNDM5XHUwNDM1XHUwNDNhX1x1MDQ5Ylx1MDQzMFx1MDQzN1x1MDQzMFx1MDQzZF9cdTA0OWJcdTA0MzBcdTA0NDBcdTA0MzBcdTA0NDhcdTA0MzBfXHUwNDM2''@;'; put 'put ''XHUwNDM1XHUwNDNiXHUwNDQyXHUwNDNlXHUwNDliXHUwNDQxXHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0OWJcdTA0MzBcdTA0YTNfXHUwNDMwXHUwNDliXHUwNDNmX1x1MDQzZFx1MDQzMFx1MDQ0M19cdTA0NDFcdTA0ZDlcdTA0NDNfXHUwNDNjXHUwNDMwXHUw''@;'; put 'put ''NDNjX1x1MDQzY1x1MDQzMFx1MDQ0M19cdTA0NDhcdTA0NTZcdTA0M2JfXHUwNDQyXHUwNDMwXHUwNDNjX1x1MDQ5Ylx1MDQ0Ylx1MDQ0MF9cdTA0OWJcdTA0MzBcdTA0MzdfXHUwNDliXHUwNDMwXHUwNDQwX1x1MDQzNlx1MDQzNVx1MDQzYiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDM2''@;'; put 'put ''XHUwNDM1XHUwNDNhXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzNFx1MDRhZlx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0NDFcdTA0MzVcdTA0MzlcdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDQxXHUwNGQ5XHUwNDQwXHUwNDQx''@;'; put 'put ''XHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzMVx1MDQzNVx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0MzZcdTA0YjFcdTA0M2NcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzNlx1''@;'; put 'put ''MDQzNVx1MDQzYV9cdTA0MzRcdTA0YWZcdTA0MzlfXHUwNDQxXHUwNDM1XHUwNDM5X1x1MDQ0MVx1MDRkOVx1MDQ0MF9cdTA0MzFcdTA0MzVcdTA0MzlfXHUwNDM2XHUwNGIxXHUwNDNjX1x1MDQ0MVx1MDQzNVx1MDQzZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDM2XHUwNDNhX1x1''@;'; put 'put ''MDQzNFx1MDQzOV9cdTA0NDFcdTA0MzlfXHUwNDQxXHUwNDQwX1x1MDQzMVx1MDQzOV9cdTA0MzZcdTA0M2NfXHUwNDQxXHUwNDNkIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxMVx1MDRhZlx1MDQzM1x1MDQ1Nlx1MDQzZCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixuZXh0RGF5OiJbXHUwNDE1XHUwNDQwXHUw''@;'; put 'put ''NDQyXHUwNDM1XHUwNGEzIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixsYXN0RGF5OiJbXHUwNDFhXHUwNDM1XHUwNDQ4XHUwNDM1IFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1''@;'; put 'put ''MDQ0Ml0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDQyXHUwNDNhXHUwNDM1XHUwNDNkIFx1MDQzMFx1MDQzZlx1MDQ0Mlx1MDQzMFx1MDQzZFx1MDQ0Ylx1MDRhM10gZGRkZCBbXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6''@;'; put 'put ''e2Z1dHVyZToiJXMgXHUwNDU2XHUwNDQ4XHUwNDU2XHUwNDNkXHUwNDM0XHUwNDM1IixwYXN0OiIlcyBcdTA0MzFcdTA0YjFcdTA0NDBcdTA0NGJcdTA0M2QiLHM6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MFx1MDQzZFx1MDQzNVx1MDQ0OFx1MDQzNSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0''@;'; put 'put ''M2RcdTA0MzQiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG06Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLG1tOiIlZCBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiLGg6Ilx1MDQzMVx1MDQ1Nlx1''@;'; put 'put ''MDQ0MCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDIiLGQ6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0M2FcdTA0YWZcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0YWZcdTA0M2QiLE06Ilx1MDQzMVx1MDQ1Nlx1MDQ0''@;'; put 'put ''MCBcdTA0MzBcdTA0MzkiLE1NOiIlZCBcdTA0MzBcdTA0MzkiLHk6Ilx1MDQzMVx1MDQ1Nlx1MDQ0MCBcdTA0MzZcdTA0NGJcdTA0M2IiLHl5OiIlZCBcdTA0MzZcdTA0NGJcdTA0M2IifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NDhcdTA0NTZ8XHUwNDQ4XHUwNDRi''@;'; put 'put ''KS8sb3JkaW5hbDpmdW5jdGlvbihoZSl7cmV0dXJuIGhlKyhrW2hlXXx8a1toZSUxMF18fGtbaGU+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw3NzM5OTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17''@;'; put 'put ''MToiXHUxN2UxIiwyOiJcdTE3ZTIiLDM6Ilx1MTdlMyIsNDoiXHUxN2U0Iiw1OiJcdTE3ZTUiLDY6Ilx1MTdlNiIsNzoiXHUxN2U3Iiw4OiJcdTE3ZTgiLDk6Ilx1MTdlOSIsMDoiXHUxN2UwIn0sdj17Ilx1MTdlMSI6IjEiLCJcdTE3ZTIiOiIyIiwiXHUxN2UzIjoiMyIsIlx1MTdlNCI6IjQi''@;'; put 'put ''LCJcdTE3ZTUiOiI1IiwiXHUxN2U2IjoiNiIsIlx1MTdlNyI6IjciLCJcdTE3ZTgiOiI4IiwiXHUxN2U5IjoiOSIsIlx1MTdlMCI6IjAifTtzZS5kZWZpbmVMb2NhbGUoImttIix7bW9udGhzOiJcdTE3OThcdTE3ODBcdTE3OWFcdTE3YjZfXHUxNzgwXHUxN2JiXHUxNzk4XHUxN2QyXHUxNzk3''@;'; put 'put ''XHUxN2M4X1x1MTc5OFx1MTdiOFx1MTc5M1x1MTdiNl9cdTE3OThcdTE3YzFcdTE3OWZcdTE3YjZfXHUxN2E3XHUxNzlmXHUxNzk3XHUxN2I2X1x1MTc5OFx1MTdiN1x1MTc5MFx1MTdiYlx1MTc5M1x1MTdiNl9cdTE3ODBcdTE3ODBcdTE3ZDJcdTE3ODBcdTE3OGFcdTE3YjZfXHUxNzlmXHUx''@;'; put 'put ''N2I4XHUxN2EwXHUxN2I2X1x1MTc4MFx1MTc4OVx1MTdkMlx1MTc4OVx1MTdiNl9cdTE3OGZcdTE3YmJcdTE3OWJcdTE3YjZfXHUxNzljXHUxN2I3XHUxNzg1XHUxN2QyXHUxNzg2XHUxN2I3XHUxNzgwXHUxN2I2X1x1MTc5Mlx1MTdkMlx1MTc5M1x1MTdiYyIuc3BsaXQoIl8iKSxtb250aHNT''@;'; put 'put ''aG9ydDoiXHUxNzk4XHUxNzgwXHUxNzlhXHUxN2I2X1x1MTc4MFx1MTdiYlx1MTc5OFx1MTdkMlx1MTc5N1x1MTdjOF9cdTE3OThcdTE3YjhcdTE3OTNcdTE3YjZfXHUxNzk4XHUxN2MxXHUxNzlmXHUxN2I2X1x1MTdhN1x1MTc5Zlx1MTc5N1x1MTdiNl9cdTE3OThcdTE3YjdcdTE3OTBcdTE3''@;'; put 'put ''YmJcdTE3OTNcdTE3YjZfXHUxNzgwXHUxNzgwXHUxN2QyXHUxNzgwXHUxNzhhXHUxN2I2X1x1MTc5Zlx1MTdiOFx1MTdhMFx1MTdiNl9cdTE3ODBcdTE3ODlcdTE3ZDJcdTE3ODlcdTE3YjZfXHUxNzhmXHUxN2JiXHUxNzliXHUxN2I2X1x1MTc5Y1x1MTdiN1x1MTc4NVx1MTdkMlx1MTc4Nlx1''@;'; put 'put ''MTdiN1x1MTc4MFx1MTdiNl9cdTE3OTJcdTE3ZDJcdTE3OTNcdTE3YmMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MTdhMlx1MTdiNlx1MTc5MVx1MTdiN1x1MTc4Zlx1MTdkMlx1MTc5OV9cdTE3ODVcdTE3ZDBcdTE3OTNcdTE3ZDJcdTE3OTFfXHUxN2EyXHUxNzg0XHUxN2QyXHUxNzgyXHUx''@;'; put 'put ''N2I2XHUxNzlhX1x1MTc5Nlx1MTdiYlx1MTc5Ml9cdTE3OTZcdTE3ZDJcdTE3OWFcdTE3YTBcdTE3OWZcdTE3ZDJcdTE3OTRcdTE3OGZcdTE3YjdcdTE3Y2RfXHUxNzlmXHUxN2JiXHUxNzgwXHUxN2QyXHUxNzlhX1x1MTc5Zlx1MTdjNVx1MTc5YVx1MTdjZCIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c1Nob3J0OiJcdTE3YTJcdTE3YjZfXHUxNzg1X1x1MTdhMl9cdTE3OTZfXHUxNzk2XHUxN2QyXHUxNzlhX1x1MTc5Zlx1MTdiYl9cdTE3OWYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MTdhMlx1MTdiNl9cdTE3ODVfXHUxN2EyX1x1MTc5Nl9cdTE3OTZcdTE3ZDJcdTE3OWFfXHUxNzlm''@;'; put 'put ''XHUxN2JiX1x1MTc5ZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0g''@;'; put 'put ''WVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MTc5Nlx1MTdkMlx1MTc5YVx1MTdiOVx1MTc4MHxcdTE3OWJcdTE3ZDJcdTE3ODRcdTE3YjZcdTE3ODUvLGlzUE06ZnVuY3Rpb24oSCl7cmV0dXJuIlx1MTc5Ylx1MTdkMlx1MTc4NFx1MTdiNlx1MTc4NSI9PT1IfSxtZXJpZGllbTpmdW5j''@;'; put 'put ''dGlvbihILEIsTCl7cmV0dXJuIEg8MTI/Ilx1MTc5Nlx1MTdkMlx1MTc5YVx1MTdiOVx1MTc4MCI6Ilx1MTc5Ylx1MTdkMlx1MTc4NFx1MTdiNlx1MTc4NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUxNzkwXHUxN2QyXHUxNzg0XHUxN2MzXHUxNzkzXHUxN2MxXHUxN2M3IFx1MTc5OFx1MTdj''@;'; put 'put ''OVx1MTdjNFx1MTc4NF0gTFQiLG5leHREYXk6IltcdTE3OWZcdTE3ZDJcdTE3YTJcdTE3YzJcdTE3ODAgXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0gTFQiLGxhc3REYXk6IltcdTE3OThcdTE3ZDJcdTE3OWZc''@;'; put 'put ''dTE3YjdcdTE3OWJcdTE3OThcdTE3YjdcdTE3ODkgXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MTc5Zlx1MTc5NFx1MTdkMlx1MTc4Zlx1MTdiNlx1MTdhMFx1MTdjZFx1MTc5OFx1MTdiYlx1MTc5M10gW1x1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NF0g''@;'; put 'put ''TFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUxNzkxXHUxN2MwXHUxNzhmIixwYXN0OiIlc1x1MTc5OFx1MTdiYlx1MTc5MyIsczoiXHUxNzk0XHUxN2M5XHUxN2JiXHUxNzkzXHUxN2QyXHUxNzk4XHUxN2I2XHUxNzkzXHUxNzljXHUxN2I3XHUxNzkzXHUxN2I2''@;'; put 'put ''XHUxNzkxXHUxN2I4IixzczoiJWQgXHUxNzljXHUxN2I3XHUxNzkzXHUxN2I2XHUxNzkxXHUxN2I4IixtOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3OTNcdTE3YjZcdTE3OTFcdTE3YjgiLG1tOiIlZCBcdTE3OTNcdTE3YjZcdTE3OTFcdTE3YjgiLGg6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc5''@;'; put 'put ''OFx1MTdjOVx1MTdjNFx1MTc4NCIsaGg6IiVkIFx1MTc5OFx1MTdjOVx1MTdjNFx1MTc4NCIsZDoiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzkwXHUxN2QyXHUxNzg0XHUxN2MzIixkZDoiJWQgXHUxNzkwXHUxN2QyXHUxNzg0XHUxN2MzIixNOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3ODFcdTE3''@;'; put 'put ''YzIiLE1NOiIlZCBcdTE3ODFcdTE3YzIiLHk6Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc4Nlx1MTdkMlx1MTc5M1x1MTdiNlx1MTdjNiIseXk6IiVkIFx1MTc4Nlx1MTdkMlx1MTc5M1x1MTdiNlx1MTdjNiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1x1MTc5MVx1MTdiOFxkezEsMn0vLG9y''@;'; put 'put ''ZGluYWw6Ilx1MTc5MVx1MTdiOCVkIixwcmVwYXJzZTpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9bXHUxN2UxXHUxN2UyXHUxN2UzXHUxN2U0XHUxN2U1XHUxN2U2XHUxN2U3XHUxN2U4XHUxN2U5XHUxN2UwXS9nLGZ1bmN0aW9uKEIpe3JldHVybiB2W0JdfSl9LHBvc3Rmb3JtYXQ6''@;'; put 'put ''ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihCKXtyZXR1cm4ga1tCXX0pfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwzODcyMDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwY2U3Iiwy''@;'; put 'put ''OiJcdTBjZTgiLDM6Ilx1MGNlOSIsNDoiXHUwY2VhIiw1OiJcdTBjZWIiLDY6Ilx1MGNlYyIsNzoiXHUwY2VkIiw4OiJcdTBjZWUiLDk6Ilx1MGNlZiIsMDoiXHUwY2U2In0sdj17Ilx1MGNlNyI6IjEiLCJcdTBjZTgiOiIyIiwiXHUwY2U5IjoiMyIsIlx1MGNlYSI6IjQiLCJcdTBjZWIiOiI1''@;'; put 'put ''IiwiXHUwY2VjIjoiNiIsIlx1MGNlZCI6IjciLCJcdTBjZWUiOiI4IiwiXHUwY2VmIjoiOSIsIlx1MGNlNiI6IjAifTtzZS5kZWZpbmVMb2NhbGUoImtuIix7bW9udGhzOiJcdTBjOWNcdTBjYThcdTBjYjVcdTBjYjBcdTBjYmZfXHUwY2FiXHUwY2M2XHUwY2FjXHUwY2NkXHUwY2IwXHUwY2I1''@;'; put 'put ''XHUwY2IwXHUwY2JmX1x1MGNhZVx1MGNiZVx1MGNiMFx1MGNjZFx1MGM5YVx1MGNjZF9cdTBjOGZcdTBjYWFcdTBjY2RcdTBjYjBcdTBjYmZcdTBjYjJcdTBjY2RfXHUwY2FlXHUwY2M2XHUwY2Q1X1x1MGM5Y1x1MGNjMlx1MGNhOFx1MGNjZF9cdTBjOWNcdTBjYzFcdTBjYjJcdTBjYzZcdTBj''@;'; put 'put ''ZDZfXHUwYzg2XHUwYzk3XHUwY2I4XHUwY2NkXHUwYzlmXHUwY2NkX1x1MGNiOFx1MGNjNlx1MGNhYVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZF9cdTBjODVcdTBjOTVcdTBjY2RcdTBjOWZcdTBjYzZcdTBjYzJcdTBjZDVcdTBjYWNcdTBjYjBcdTBjY2RfXHUw''@;'; put 'put ''Y2E4XHUwY2I1XHUwY2M2XHUwYzgyXHUwY2FjXHUwY2IwXHUwY2NkX1x1MGNhMVx1MGNiZlx1MGNiOFx1MGNjNlx1MGM4Mlx1MGNhY1x1MGNiMFx1MGNjZCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwYzljXHUwY2E4X1x1MGNhYlx1MGNjNlx1MGNhY1x1MGNjZFx1MGNiMF9cdTBjYWVc''@;'; put 'put ''dTBjYmVcdTBjYjBcdTBjY2RcdTBjOWFcdTBjY2RfXHUwYzhmXHUwY2FhXHUwY2NkXHUwY2IwXHUwY2JmXHUwY2IyXHUwY2NkX1x1MGNhZVx1MGNjNlx1MGNkNV9cdTBjOWNcdTBjYzJcdTBjYThcdTBjY2RfXHUwYzljXHUwY2MxXHUwY2IyXHUwY2M2XHUwY2Q2X1x1MGM4Nlx1MGM5N1x1MGNi''@;'; put 'put ''OFx1MGNjZFx1MGM5Zlx1MGNjZF9cdTBjYjhcdTBjYzZcdTBjYWFcdTBjY2RcdTBjOWZcdTBjYzZcdTBjODJfXHUwYzg1XHUwYzk1XHUwY2NkXHUwYzlmXHUwY2M2XHUwY2MyXHUwY2Q1X1x1MGNhOFx1MGNiNVx1MGNjNlx1MGM4Ml9cdTBjYTFcdTBjYmZcdTBjYjhcdTBjYzZcdTBjODIiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwY2FkXHUwY2JlXHUwY2E4XHUwY2MxXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNiOFx1MGNjNlx1MGNjMlx1MGNkNVx1MGNhZVx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYWVcdTBjODJcdTBjOTdcdTBjYjNcdTBjYjVcdTBj''@;'; put 'put ''YmVcdTBjYjBfXHUwY2FjXHUwY2MxXHUwY2E3XHUwY2I1XHUwY2JlXHUwY2IwX1x1MGM5N1x1MGNjMVx1MGNiMFx1MGNjMVx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYjZcdTBjYzFcdTBjOTVcdTBjY2RcdTBjYjBcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2I2XHUwY2E4XHUwY2JmXHUwY2I1XHUw''@;'; put 'put ''Y2JlXHUwY2IwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGNhZFx1MGNiZVx1MGNhOFx1MGNjMV9cdTBjYjhcdTBjYzZcdTBjYzJcdTBjZDVcdTBjYWVfXHUwY2FlXHUwYzgyXHUwYzk3XHUwY2IzX1x1MGNhY1x1MGNjMVx1MGNhN19cdTBjOTdcdTBjYzFcdTBjYjBcdTBjYzFfXHUw''@;'; put 'put ''Y2I2XHUwY2MxXHUwYzk1XHUwY2NkXHUwY2IwX1x1MGNiNlx1MGNhOFx1MGNiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwY2FkXHUwY2JlX1x1MGNiOFx1MGNjNlx1MGNjMlx1MGNkNV9cdTBjYWVcdTBjODJfXHUwY2FjXHUwY2MxX1x1MGM5N1x1MGNjMV9cdTBjYjZcdTBjYzFfXHUw''@;'; put 'put ''Y2I2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIixMVFM6IkEgaDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0ifSxjYWxlbmRhcjp7c2Ft''@;'; put 'put ''ZURheToiW1x1MGM4N1x1MGM4Mlx1MGNhNlx1MGNjMV0gTFQiLG5leHREYXk6IltcdTBjYThcdTBjYmVcdTBjYjNcdTBjYzZdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTBjYThcdTBjYmZcdTBjYThcdTBjY2RcdTBjYThcdTBjYzZdIExUIixsYXN0V2VlazoiW1x1MGM5''@;'; put 'put ''NVx1MGNjNlx1MGNjMlx1MGNhOFx1MGNjNlx1MGNhZl0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGNhOFx1MGM4Mlx1MGNhNFx1MGNiMCIscGFzdDoiJXMgXHUwY2I5XHUwY2JmXHUwYzgyXHUwY2E2XHUwY2M2IixzOiJcdTBjOTVcdTBjYzZc''@;'; put 'put ''dTBjYjJcdTBjYjVcdTBjYzEgXHUwYzk1XHUwY2NkXHUwY2I3XHUwY2EzXHUwYzk3XHUwY2IzXHUwY2MxIixzczoiJWQgXHUwY2I4XHUwY2M2XHUwYzk1XHUwY2M2XHUwYzgyXHUwY2ExXHUwY2MxXHUwYzk3XHUwY2IzXHUwY2MxIixtOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2E4''@;'; put 'put ''XHUwY2JmXHUwY2FlXHUwY2JmXHUwY2I3IixtbToiJWQgXHUwY2E4XHUwY2JmXHUwY2FlXHUwY2JmXHUwY2I3IixoOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwYzk3XHUwYzgyXHUwYzlmXHUwY2M2IixoaDoiJWQgXHUwYzk3XHUwYzgyXHUwYzlmXHUwY2M2IixkOiJcdTBjOTJcdTBj''@;'; put 'put ''ODJcdTBjYTZcdTBjYzEgXHUwY2E2XHUwY2JmXHUwY2E4IixkZDoiJWQgXHUwY2E2XHUwY2JmXHUwY2E4IixNOiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2E0XHUwY2JmXHUwYzgyXHUwYzk3XHUwY2IzXHUwY2MxIixNTToiJWQgXHUwY2E0XHUwY2JmXHUwYzgyXHUwYzk3XHUwY2Iz''@;'; put 'put ''XHUwY2MxIix5OiJcdTBjOTJcdTBjODJcdTBjYTZcdTBjYzEgXHUwY2I1XHUwY2IwXHUwY2NkXHUwY2I3Iix5eToiJWQgXHUwY2I1XHUwY2IwXHUwY2NkXHUwY2I3In0scHJlcGFyc2U6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvW1x1MGNlN1x1MGNlOFx1MGNlOVx1MGNlYVx1MGNl''@;'; put 'put ''Ylx1MGNlY1x1MGNlZFx1MGNlZVx1MGNlZlx1MGNlNl0vZyxmdW5jdGlvbihCKXtyZXR1cm4gdltCXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oQil7cmV0dXJuIGtbQl19KX0sbWVyaWRpZW1QYXJzZTovXHUwY2IwXHUwY2JlXHUw''@;'; put 'put ''Y2E0XHUwY2NkXHUwY2IwXHUwY2JmfFx1MGNhY1x1MGNjNlx1MGNiM1x1MGNiZlx1MGM5N1x1MGNjZFx1MGM5N1x1MGNjNnxcdTBjYWVcdTBjYTdcdTBjY2RcdTBjYWZcdTBjYmVcdTBjYjlcdTBjY2RcdTBjYTh8XHUwY2I4XHUwYzgyXHUwYzljXHUwY2M2LyxtZXJpZGllbUhvdXI6ZnVuY3Rp''@;'; put 'put ''b24oSCxCKXtyZXR1cm4gMTI9PT1IJiYoSD0wKSwiXHUwY2IwXHUwY2JlXHUwY2E0XHUwY2NkXHUwY2IwXHUwY2JmIj09PUI/SDw0P0g6SCsxMjoiXHUwY2FjXHUwY2M2XHUwY2IzXHUwY2JmXHUwYzk3XHUwY2NkXHUwYzk3XHUwY2M2Ij09PUI/SDoiXHUwY2FlXHUwY2E3XHUwY2NkXHUwY2Fm''@;'; put 'put ''XHUwY2JlXHUwY2I5XHUwY2NkXHUwY2E4Ij09PUI/SD49MTA/SDpIKzEyOiJcdTBjYjhcdTBjODJcdTBjOWNcdTBjYzYiPT09Qj9IKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDQ/Ilx1MGNiMFx1MGNiZVx1MGNhNFx1MGNjZFx1MGNiMFx1MGNiZiI6SDwx''@;'; put 'put ''MD8iXHUwY2FjXHUwY2M2XHUwY2IzXHUwY2JmXHUwYzk3XHUwY2NkXHUwYzk3XHUwY2M2IjpIPDE3PyJcdTBjYWVcdTBjYTdcdTBjY2RcdTBjYWZcdTBjYmVcdTBjYjlcdTBjY2RcdTBjYTgiOkg8MjA/Ilx1MGNiOFx1MGM4Mlx1MGM5Y1x1MGNjNiI6Ilx1MGNiMFx1MGNiZVx1MGNhNFx1MGNj''@;'; put 'put ''ZFx1MGNiMFx1MGNiZiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHUwY2E4XHUwY2M2XHUwY2Q1KS8sb3JkaW5hbDpmdW5jdGlvbihIKXtyZXR1cm4gSCsiXHUwY2E4XHUwY2M2XHUwY2Q1In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sODUzMDY6ZnVuY3Rp''@;'; put 'put ''b24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJrbyIse21vbnRoczoiMVx1YzZkNF8yXHVjNmQ0XzNcdWM2ZDRfNFx1YzZkNF81XHVjNmQ0XzZcdWM2ZDRfN1x1YzZkNF84XHVjNmQ0XzlcdWM2ZDRfMTBcdWM2ZDRfMTFcdWM2ZDRfMTJcdWM2''@;'; put 'put ''ZDQiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdWM2ZDRfMlx1YzZkNF8zXHVjNmQ0XzRcdWM2ZDRfNVx1YzZkNF82XHVjNmQ0XzdcdWM2ZDRfOFx1YzZkNF85XHVjNmQ0XzEwXHVjNmQ0XzExXHVjNmQ0XzEyXHVjNmQ0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdWM3N2NcdWM2OTRcdWM3''@;'; put 'put ''N2NfXHVjNmQ0XHVjNjk0XHVjNzdjX1x1ZDY1NFx1YzY5NFx1Yzc3Y19cdWMyMThcdWM2OTRcdWM3N2NfXHViYWE5XHVjNjk0XHVjNzdjX1x1YWUwOFx1YzY5NFx1Yzc3Y19cdWQxYTBcdWM2OTRcdWM3N2MiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHVjNzdjX1x1YzZkNF9cdWQ2NTRf''@;'; put 'put ''XHVjMjE4X1x1YmFhOV9cdWFlMDhfXHVkMWEwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdWM3N2NfXHVjNmQ0X1x1ZDY1NF9cdWMyMThfXHViYWE5X1x1YWUwOF9cdWQxYTAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJZWVlZ''@;'; put 'put ''Lk1NLkRELiIsTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIixMTEw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIEEgaDptbSIsTExMTDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgZGRkZCBBIGg6bW0iLGw6IllZWVkuTU0uREQuIixsbDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MiLGxs''@;'; put 'put ''bDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgQSBoOm1tIixsbGxsOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBkZGRkIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJcdWM2MjRcdWIyOTggTFQiLG5leHREYXk6Ilx1YjBiNFx1Yzc3YyBMVCIsbmV4dFdlZWs6ImRkZGQgTFQiLGxhc3RE''@;'; put 'put ''YXk6Ilx1YzViNFx1YzgxYyBMVCIsbGFzdFdlZWs6Ilx1YzljMFx1YjA5Y1x1YzhmYyBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdWQ2YzQiLHBhc3Q6IiVzIFx1YzgwNCIsczoiXHViYTg3IFx1Y2QwOCIsc3M6IiVkXHVjZDA4IixtOiIxXHViZDg0''@;'; put 'put ''IixtbToiJWRcdWJkODQiLGg6Ilx1ZDU1YyBcdWMyZGNcdWFjMDQiLGhoOiIlZFx1YzJkY1x1YWMwNCIsZDoiXHVkNTU4XHViOGU4IixkZDoiJWRcdWM3N2MiLE06Ilx1ZDU1YyBcdWIyZWMiLE1NOiIlZFx1YjJlYyIseToiXHVjNzdjIFx1YjE0NCIseXk6IiVkXHViMTQ0In0sZGF5T2ZNb250''@;'; put 'put ''aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdWM3N2N8XHVjNmQ0fFx1YzhmYykvLG9yZGluYWw6ZnVuY3Rpb24odixoZSl7c3dpdGNoKGhlKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiB2KyJcdWM3N2MiO2Nhc2UiTSI6cmV0dXJuIHYrIlx1YzZkNCI7Y2FzZSJ3IjpjYXNlIlci''@;'; put 'put ''OnJldHVybiB2KyJcdWM4ZmMiO2RlZmF1bHQ6cmV0dXJuIHZ9fSxtZXJpZGllbVBhcnNlOi9cdWM2MjRcdWM4MDR8XHVjNjI0XHVkNmM0Lyxpc1BNOmZ1bmN0aW9uKHYpe3JldHVybiJcdWM2MjRcdWQ2YzQiPT09dn0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdjwxMj8iXHVj''@;'; put 'put ''NjI0XHVjODA0IjoiXHVjNjI0XHVkNmM0In19KX0oVCgxNjY3NikpfSw4Mjk5NTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIs''@;'; put 'put ''NzoiXHUwNjY3Iiw4OiJcdTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0sdj17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIsIlx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIs''@;'; put 'put ''Ilx1MDY2MCI6IjAifSxoZT1bIlx1MDZhOVx1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2MmZcdTA2NDhcdTA2NDhcdTA2ZDVcdTA2NDUiLCJcdTA2MzRcdTA2NDhcdTA2MjhcdTA2MjdcdTA2MmEiLCJcdTA2MjZcdTA2MjdcdTA2MzJcdTA2MjdcdTA2MzEiLCJcdTA2NDZcdTA2''@;'; put 'put ''Y2NcdTA2MzNcdTA2MjdcdTA2NDYiLCJcdTA2MjZcdTA2MjdcdTA2Y2NcdTA2MjdcdTA2MzEiLCJcdTA2MmRcdTA2NDhcdTA2MzJcdTA2ZDVcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MmFcdTA2ZDVcdTA2NDVcdTA2NDVcdTA2NDhcdTA2MzIiLCJcdTA2MjZcdTA2MjdcdTA2Mjgi''@;'; put 'put ''LCJcdTA2MjZcdTA2ZDVcdTA2Y2NcdTA2NDRcdTA2NDhcdTA2NDhcdTA2NDQiLCJcdTA2MmFcdTA2MzRcdTA2MzFcdTA2Y2NcdTA2NDZcdTA2Y2MgXHUwNmNjXHUwNmQ1XHUwNjQzXHUwNmQ1XHUwNjQ1IiwiXHUwNjJhXHUwNjM0XHUwNjMxXHUwNmNjXHUwNjQ2XHUwNmNjIFx1MDYyZlx1MDY0''@;'; put 'put ''OFx1MDY0OFx1MDZkNVx1MDY0NSIsIlx1MDY0M1x1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2Y2NcdTA2ZDVcdTA2YTlcdTA2ZDVcdTA2NDUiXTtzZS5kZWZpbmVMb2NhbGUoImt1Iix7bW9udGhzOmhlLG1vbnRoc1Nob3J0OmhlLHdlZWtkYXlzOiJcdTA2Y2NcdTA2NDdcdTIw''@;'; put 'put ''MGNcdTA2NDNcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDYzM1x1MDZjZVx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAw''@;'; put 'put ''Y19cdTA2ODZcdTA2NDhcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjdlXHUwNmNlXHUwNjQ2XHUwNjJjXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDY0N1x1MDY0N1x1MjAwY1x1MDZjY1x1MDY0''@;'; put 'put ''Nlx1MDZjY19cdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDYyZlx1MDY0OFx1MDY0OFx1MDYzNFx1MDY0N1x1MjAwY1x1''@;'; put 'put ''MDY0NV9cdTA2MzNcdTA2Y2VcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjg2XHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDY3ZVx1MDZjZVx1MDY0Nlx1MDYyY1x1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2NDdcdTA2NDdcdTIwMGNcdTA2Y2Nc''@;'; put 'put ''dTA2NDZcdTA2Y2NfXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2Y2NfXHUwNjJmX1x1MDYzM19cdTA2ODZfXHUwNjdlX1x1MDY0N19cdTA2MzQiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxv''@;'; put 'put ''bmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2''@;'; put 'put ''MjdcdTA2MzFcdTA2NDdcdTIwMGN8XHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjLyxpc1BNOmZ1bmN0aW9uKEIpe3JldHVybi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdcdTIwMGMvLnRlc3QoQil9LG1lcmlkaWVtOmZ1bmN0aW9uKEIsTCxL''@;'; put 'put ''KXtyZXR1cm4gQjwxMj8iXHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjIjoiXHUwNjI2XHUwNmNlXHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjQ3XHUyMDBjIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjZcdTA2NDdcdTIwMGNcdTA2NDVcdTA2MzFcdTA2YzYgXHUw''@;'; put 'put ''NjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsbmV4dERheToiW1x1MDYyOFx1MDY0N1x1MjAwY1x1MDZjY1x1MDYyN1x1MDY0Nlx1MDZjYyBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUw''@;'; put 'put ''NjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsbGFzdERheToiW1x1MDYyZlx1MDY0OFx1MDZjZVx1MDY0Nlx1MDZjZSBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2MzFdIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjQzXHUwNjI3XHUw''@;'; put 'put ''NjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQ0XHUwNjQ3XHUyMDBjICVzIixwYXN0OiIlcyIsczoiXHUwNjg2XHUwNjQ3XHUyMDBjXHUwNjQ2XHUwNjJmIFx1MDY4Nlx1MDYzMVx1MDY0M1x1MDY0N1x1MjAw''@;'; put 'put ''Y1x1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyIsc3M6Ilx1MDY4Nlx1MDYzMVx1MDY0M1x1MDY0N1x1MjAwYyAlZCIsbToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDYyZVx1MDY0OFx1MDY0NFx1MDY0N1x1MjAwY1x1MDY0MyIsbW06IiVkIFx1MDYyZVx1MDY0OFx1MDY0NFx1MDY0N1x1''@;'; put 'put ''MjAwY1x1MDY0MyIsaDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMSIsaGg6IiVkIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMSIsZDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1''@;'; put 'put ''MDY5NVx1MDZjNlx1MDY5OCIsZGQ6IiVkIFx1MDY5NVx1MDZjNlx1MDY5OCIsTToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDY0NVx1MDYyN1x1MDY0Nlx1MDZhZiIsTU06IiVkIFx1MDY0NVx1MDYyN1x1MDY0Nlx1MDZhZiIseToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDYz''@;'; put 'put ''M1x1MDYyN1x1MDZiNSIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDZiNSJ9LHByZXBhcnNlOmZ1bmN0aW9uKEIpe3JldHVybiBCLnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oTCl7cmV0dXJu''@;'; put 'put ''IHZbTF19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEIpe3JldHVybiBCLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTCl7cmV0dXJuIGtbTF19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFQoMTY2NzYpKX0sODc3''@;'; put 'put ''OTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MDoiLVx1MDQ0N1x1MDRhZiIsMToiLVx1MDQ0N1x1MDQzOCIsMjoiLVx1MDQ0N1x1MDQzOCIsMzoiLVx1MDQ0N1x1MDRhZiIsNDoiLVx1MDQ0N1x1MDRhZiIsNToiLVx1MDQ0N1x1MDQzOCIsNjoi''@;'; put 'put ''LVx1MDQ0N1x1MDQ0YiIsNzoiLVx1MDQ0N1x1MDQzOCIsODoiLVx1MDQ0N1x1MDQzOCIsOToiLVx1MDQ0N1x1MDQ0MyIsMTA6Ii1cdTA0NDdcdTA0NDMiLDIwOiItXHUwNDQ3XHUwNDRiIiwzMDoiLVx1MDQ0N1x1MDQ0MyIsNDA6Ii1cdTA0NDdcdTA0NGIiLDUwOiItXHUwNDQ3XHUwNGFmIiw2''@;'; put 'put ''MDoiLVx1MDQ0N1x1MDQ0YiIsNzA6Ii1cdTA0NDdcdTA0MzgiLDgwOiItXHUwNDQ3XHUwNDM4Iiw5MDoiLVx1MDQ0N1x1MDQ0MyIsMTAwOiItXHUwNDQ3XHUwNGFmIn07c2UuZGVmaW5lTG9jYWxlKCJreSIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRjX1x1''@;'; put 'put ''MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNi''@;'; put 'put ''XHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0''@;'; put 'put ''MFx1MDQ0Y19cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2Nc''@;'; put 'put ''dTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzOiJcdTA0MTZcdTA0MzVcdTA0M2FcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDE0XHUwNGFmXHUwNDM5XHUwNDQ4XHUwNGU5XHUwNDNjXHUwNDMxXHUwNGFmX1x1MDQyOFx1MDQzNVx1MDQzOVx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOF9cdTA0''@;'; put 'put ''MjhcdTA0MzBcdTA0NDBcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDExXHUwNDM1XHUwNDM5XHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQzMF9cdTA0MThcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzgiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoiXHUwNDE2XHUwNDM1XHUwNDNhX1x1MDQxNFx1MDRhZlx1MDQzOV9cdTA0MjhcdTA0MzVcdTA0MzlfXHUwNDI4XHUwNDMwXHUwNDQwX1x1MDQxMVx1MDQzNVx1MDQzOV9cdTA0MTZcdTA0NDNcdTA0M2NfXHUwNDE4XHUwNDQ4XHUwNDM1Ii5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzTWluOiJcdTA0MTZcdTA0M2FfXHUwNDE0XHUwNDM5X1x1MDQyOFx1MDQzOV9cdTA0MjhcdTA0NDBfXHUwNDExXHUwNDM5X1x1MDQxNlx1MDQzY19cdTA0MThcdTA0NDgiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0u''@;'; put 'put ''WVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNGFmXHUwNDMzXHUwNGFmXHUwNDNkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLG5leHRE''@;'; put 'put ''YXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzVcdTA0YTMgXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLGxhc3REYXk6IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0NGRcdTA0NGQgXHUwNDQxXHUwNDMw''@;'; put 'put ''XHUwNDMwXHUwNDQyXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0NDJcdTA0M2FcdTA0ZTlcdTA0M2QgXHUwNDMwXHUwNDNmXHUwNDQyXHUwNDMwXHUwNDNkXHUwNDRiXHUwNDNkXSBkZGRkIFtcdTA0M2FcdTA0YWZcdTA0M2RcdTA0YWZdIFtcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA0MzhcdTA0NDdcdTA0MzhcdTA0M2RcdTA0MzRcdTA0MzUiLHBhc3Q6IiVzIFx1MDQzY1x1MDQ0M1x1MDQ0MFx1MDQ0M1x1MDQzZCIsczoiXHUwNDMxXHUwNDM4XHUwNDQwXHUwNDNkXHUwNDM1XHUwNDQ3XHUwNDM1''@;'; put 'put ''IFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzY1x1MDRhZlx1MDQzZFx1MDRlOVx1MDQ0MiIsbW06IiVkIFx1MDQzY1x1MDRhZlx1MDQzZFx1''@;'; put 'put ''MDRlOVx1MDQ0MiIsaDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0MiIsZDoiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzYVx1MDRhZlx1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1MDRhZlx1MDQzZCIsTToi''@;'; put 'put ''XHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzMFx1MDQzOSIsTU06IiVkIFx1MDQzMFx1MDQzOSIseToiXHUwNDMxXHUwNDM4XHUwNDQwIFx1MDQzNlx1MDQ0Ylx1MDQzYiIseXk6IiVkIFx1MDQzNlx1MDQ0Ylx1MDQzYiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQ0N1x1''@;'; put 'put ''MDQzOHxcdTA0NDdcdTA0NGJ8XHUwNDQ3XHUwNGFmfFx1MDQ0N1x1MDQ0MykvLG9yZGluYWw6ZnVuY3Rpb24oaGUpe3JldHVybiBoZSsoa1toZV18fGtbaGUlMTBdfHxrW2hlPj0xMDA/MTAwOm51bGxdKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sNjIwNTc6ZnVuY3Rpb24o''@;'; put 'put ''V2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhMLEssSixJKXt2YXIgUj17bTpbImVuZyBNaW51dHQiLCJlbmdlciBNaW51dHQiXSxoOlsiZW5nIFN0b25uIiwiZW5nZXIgU3Rvbm4iXSxkOlsiZWVuIERhZyIsImVuZ2VtIERhZyJdLE06WyJlZSBNb3VudCIs''@;'; put 'put ''ImVuZ2VtIE1vdW50Il0seTpbImVlIEpvZXIiLCJlbmdlbSBKb2VyIl19O3JldHVybiBLP1JbSl1bMF06UltKXVsxXX1mdW5jdGlvbiBIKEwpe2lmKEw9cGFyc2VJbnQoTCwxMCksaXNOYU4oTCkpcmV0dXJuITE7aWYoTDwwKXJldHVybiEwO2lmKEw8MTApcmV0dXJuIDQ8PUwmJkw8PTc7aWYo''@;'; put 'put ''TDwxMDApe3ZhciBLPUwlMTA7cmV0dXJuIEgoMD09PUs/TC8xMDpLKX1pZihMPDFlNCl7Zm9yKDtMPj0xMDspTC89MTA7cmV0dXJuIEgoTCl9cmV0dXJuIEgoTC89MWUzKX1zZS5kZWZpbmVMb2NhbGUoImxiIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9NXHhlNGVyel9BYnJceGVibGxfTWVl''@;'; put 'put ''X0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4''@;'; put 'put ''YWN0OiEwLHdlZWtkYXlzOiJTb25uZGVnX01ceGU5aW5kZWdfRFx4ZWJuc2NoZGVnX01ceGVidHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9NXHhlOS5fRFx4ZWIuX01ceGViLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c01pbjoiU29fTVx4ZTlfRFx4ZWJfTVx4ZWJfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSBbQXVlcl0iLExUUzoiSDptbTpzcyBbQXVlcl0iLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVki''@;'; put 'put ''LExMTDoiRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhdXQgdW1dIExUIixzYW1lRWxzZToiTCIsbmV4dERheToiW011ZXIgdW1dIExUIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIixs''@;'; put 'put ''YXN0RGF5OiJbR1x4ZWJzY2h0ZXIgdW1dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDI6Y2FzZSA0OnJldHVybiJbTGVzY2h0ZW5dIGRkZGQgW3VtXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW0xlc2NodGVdIGRkZGQgW3VtXSBMVCJ9fX0scmVsYXRpdmVU''@;'; put 'put ''aW1lOntmdXR1cmU6ZnVuY3Rpb24gdihMKXtyZXR1cm4gSChMLnN1YnN0cigwLEwuaW5kZXhPZigiICIpKSk/ImEgIitMOiJhbiAiK0x9LHBhc3Q6ZnVuY3Rpb24gaGUoTCl7cmV0dXJuIEgoTC5zdWJzdHIoMCxMLmluZGV4T2YoIiAiKSkpPyJ2aXJ1ICIrTDoidmlydW4gIitMfSxzOiJlIHB1''@;'; put 'put ''ZXIgU2Vrb25uZW4iLHNzOiIlZCBTZWtvbm5lbiIsbTprLG1tOiIlZCBNaW51dHRlbiIsaDprLGhoOiIlZCBTdG9ubmVuIixkOmssZGQ6IiVkIERlZWciLE06ayxNTToiJWQgTVx4ZTlpbnQiLHk6ayx5eToiJWQgSm9lciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3Jk''@;'; put 'put ''aW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwxNzE5MjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoImxvIix7bW9udGhzOiJcdTBlYTFcdTBlYjFcdTBlODdcdTBlODFcdTBlYWRcdTBlOTlfXHUw''@;'; put 'put ''ZTgxXHUwZWI4XHUwZWExXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNVx1MGU5OVx1MGViMl9cdTBlYzBcdTBlYTFcdTBlYWFcdTBlYjJfXHUwZTllXHUwZWI2XHUwZTk0XHUwZWFhXHUwZWIwXHUwZTllXHUwZWIyX1x1MGVhMVx1MGViNFx1MGU5Nlx1MGViOFx1MGU5OVx1MGViMl9cdTBlODFc''@;'; put 'put ''dTBlY2RcdTBlYTVcdTBlYjBcdTBlODFcdTBlYmJcdTBlOTRfXHUwZWFhXHUwZWI0XHUwZTg3XHUwZWFiXHUwZWIyX1x1MGU4MVx1MGViMVx1MGU5OVx1MGU4ZFx1MGViMl9cdTBlOTVcdTBlYjhcdTBlYTVcdTBlYjJfXHUwZTllXHUwZWIwXHUwZTg4XHUwZWI0XHUwZTgxX1x1MGU5N1x1MGVi''@;'; put 'put ''MVx1MGU5OVx1MGVhN1x1MGViMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZWExXHUwZWIxXHUwZTg3XHUwZTgxXHUwZWFkXHUwZTk5X1x1MGU4MVx1MGViOFx1MGVhMVx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjVcdTBlOTlcdTBlYjJfXHUwZWMwXHUwZWExXHUwZWFhXHUwZWIyX1x1''@;'; put 'put ''MGU5ZVx1MGViNlx1MGU5NFx1MGVhYVx1MGViMFx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjRcdTBlOTZcdTBlYjhcdTBlOTlcdTBlYjJfXHUwZTgxXHUwZWNkXHUwZWE1XHUwZWIwXHUwZTgxXHUwZWJiXHUwZTk0X1x1MGVhYVx1MGViNFx1MGU4N1x1MGVhYlx1MGViMl9cdTBlODFcdTBlYjFc''@;'; put 'put ''dTBlOTlcdTBlOGRcdTBlYjJfXHUwZTk1XHUwZWI4XHUwZWE1XHUwZWIyX1x1MGU5ZVx1MGViMFx1MGU4OFx1MGViNFx1MGU4MV9cdTBlOTdcdTBlYjFcdTBlOTlcdTBlYTdcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MGVhZFx1MGViMlx1MGU5N1x1MGViNFx1MGU5NF9cdTBlODhc''@;'; put 'put ''dTBlYjFcdTBlOTlfXHUwZWFkXHUwZWIxXHUwZTg3XHUwZTg0XHUwZWIyXHUwZTk5X1x1MGU5ZVx1MGViOFx1MGU5NF9cdTBlOWVcdTBlYjBcdTBlYWJcdTBlYjFcdTBlOTRfXHUwZWFhXHUwZWI4XHUwZTgxX1x1MGVjMFx1MGVhYVx1MGViYlx1MGViMiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0OiJcdTBlOTdcdTBlYjRcdTBlOTRfXHUwZTg4XHUwZWIxXHUwZTk5X1x1MGVhZFx1MGViMVx1MGU4N1x1MGU4NFx1MGViMlx1MGU5OV9cdTBlOWVcdTBlYjhcdTBlOTRfXHUwZTllXHUwZWIwXHUwZWFiXHUwZWIxXHUwZTk0X1x1MGVhYVx1MGViOFx1MGU4MV9cdTBlYzBcdTBlYWFcdTBl''@;'; put 'put ''YmJcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGU5N19cdTBlODhfXHUwZWFkXHUwZTg0X1x1MGU5ZV9cdTBlOWVcdTBlYWJfXHUwZWFhXHUwZTgxX1x1MGVhYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT''@;'; put 'put ''OiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJcdTBlYTdcdTBlYjFcdTBlOTlkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMwXHUwZThhXHUw''@;'; put 'put ''ZWJiXHUwZWM5XHUwZWIyfFx1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMVx1MGVhNVx1MGU4Ny8saXNQTTpmdW5jdGlvbih2KXtyZXR1cm4iXHUwZTk1XHUwZWFkXHUwZTk5XHUwZWMxXHUwZWE1XHUwZTg3Ij09PXZ9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8MTI/Ilx1MGU5''@;'; put 'put ''NVx1MGVhZFx1MGU5OVx1MGVjMFx1MGU4YVx1MGViYlx1MGVjOVx1MGViMiI6Ilx1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMVx1MGVhNVx1MGU4NyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZWExXHUwZWI3XHUwZWM5XHUwZTk5XHUwZWI1XHUwZWM5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIy''@;'; put 'put ''XSBMVCIsbmV4dERheToiW1x1MGVhMVx1MGViN1x1MGVjOVx1MGVhZFx1MGViN1x1MGVjOFx1MGU5OVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLG5leHRXZWVrOiJbXHUwZWE3XHUwZWIxXHUwZTk5XWRkZGRbXHUwZWRjXHUwZWM5XHUwZWIyXHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIy''@;'; put 'put ''XSBMVCIsbGFzdERheToiW1x1MGVhMVx1MGViN1x1MGVjOVx1MGVhN1x1MGViMlx1MGU5OVx1MGU5OVx1MGViNVx1MGVjOVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLGxhc3RXZWVrOiJbXHUwZWE3XHUwZWIxXHUwZTk5XWRkZGRbXHUwZWMxXHUwZWE1XHUwZWM5XHUwZWE3XHUwZTk5''@;'; put 'put ''XHUwZWI1XHUwZWM5XHUwZWMwXHUwZWE3XHUwZWE1XHUwZWIyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwZWFkXHUwZWI1XHUwZTgxICVzIixwYXN0OiIlc1x1MGU5Y1x1MGVjOFx1MGViMlx1MGU5OVx1MGVhMVx1MGViMiIsczoiXHUwZTlhXHUwZWNkXHUw''@;'; put 'put ''ZWM4XHUwZWMwXHUwZTk3XHUwZWJiXHUwZWM4XHUwZWIyXHUwZWMzXHUwZTk0XHUwZWE3XHUwZWI0XHUwZTk5XHUwZWIyXHUwZTk3XHUwZWI1IixzczoiJWQgXHUwZWE3XHUwZWI0XHUwZTk5XHUwZWIyXHUwZTk3XHUwZWI1IixtOiIxIFx1MGU5OVx1MGViMlx1MGU5N1x1MGViNSIsbW06IiVk''@;'; put 'put ''IFx1MGU5OVx1MGViMlx1MGU5N1x1MGViNSIsaDoiMSBcdTBlOGFcdTBlYmJcdTBlYzhcdTBlYTdcdTBlYzJcdTBlYTFcdTBlODciLGhoOiIlZCBcdTBlOGFcdTBlYmJcdTBlYzhcdTBlYTdcdTBlYzJcdTBlYTFcdTBlODciLGQ6IjEgXHUwZWExXHUwZWI3XHUwZWM5IixkZDoiJWQgXHUwZWEx''@;'; put 'put ''XHUwZWI3XHUwZWM5IixNOiIxIFx1MGVjMFx1MGU5NFx1MGViN1x1MGVhZFx1MGU5OSIsTU06IiVkIFx1MGVjMFx1MGU5NFx1MGViN1x1MGVhZFx1MGU5OSIseToiMSBcdTBlOWJcdTBlYjUiLHl5OiIlZCBcdTBlOWJcdTBlYjUifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi8oXHUwZTk3XHUw''@;'; put 'put ''ZWI1XHUwZWM4KVxkezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24odil7cmV0dXJuIlx1MGU5N1x1MGViNVx1MGVjOCIrdn19KX0oVCgxNjY3NikpfSwxNTQzMDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17c3M6InNla3VuZFx1MDExN19zZWt1bmRc''@;'; put 'put ''dTAxN2VpXHUwMTczX3Nla3VuZGVzIixtOiJtaW51dFx1MDExN19taW51dFx1MDExN3NfbWludXRcdTAxMTkiLG1tOiJtaW51dFx1MDExN3NfbWludVx1MDEwZGlcdTAxNzNfbWludXRlcyIsaDoidmFsYW5kYV92YWxhbmRvc192YWxhbmRcdTAxMDUiLGhoOiJ2YWxhbmRvc192YWxhbmRcdTAx''@;'; put 'put ''NzNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuXHUwMTA1IixkZDoiZGllbm9zX2RpZW5cdTAxNzNfZGllbmFzIixNOiJtXHUwMTE3bnVvX21cdTAxMTduZXNpb19tXHUwMTE3bmVzXHUwMTJmIixNTToibVx1MDExN25lc2lhaV9tXHUwMTE3bmVzaVx1MDE3M19tXHUwMTE3bmVzaXVz''@;'; put 'put ''Iix5OiJtZXRhaV9tZXRcdTAxNzNfbWV0dXMiLHl5OiJtZXRhaV9tZXRcdTAxNzNfbWV0dXMifTtmdW5jdGlvbiBoZShKLEksUixFKXtyZXR1cm4gST9CKFIpWzBdOkU/QihSKVsxXTpCKFIpWzJdfWZ1bmN0aW9uIEgoSil7cmV0dXJuIEolMTA9PTB8fEo+MTAmJko8MjB9ZnVuY3Rpb24gQihK''@;'; put 'put ''KXtyZXR1cm4ga1tKXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIEwoSixJLFIsRSl7dmFyIHo9SisiICI7cmV0dXJuIDE9PT1KP3oraGUoMCxJLFJbMF0sRSk6ST96KyhIKEopP0IoUilbMV06QihSKVswXSk6RT96K0IoUilbMV06eisoSChKKT9CKFIpWzFdOkIoUilbMl0pfXNlLmRlZmluZUxvY2Fs''@;'; put 'put ''ZSgibHQiLHttb250aHM6e2Zvcm1hdDoic2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmRcdTAxN2Vpb19nZWd1XHUwMTdlXHUwMTE3c19iaXJcdTAxN2VlbGlvX2xpZXBvc19ydWdwalx1MDE2Ylx1MDEwZGlvX3J1Z3NcdTAxMTdqb19zcGFsaW9fbGFwa3JpXHUwMTBkaW9fZ3J1b2RcdTAxN2Vp''@;'; put 'put ''byIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1XHUwMTdlXHUwMTE3X2Jpclx1MDE3ZWVsaXNfbGllcGFfcnVncGpcdTAxNmJ0aXNfcnVnc1x1MDExN2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNGb3Jt''@;'; put 'put ''YXQ6L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/fE1NTU0/KFxbW15cW1xdXSpcXXxccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6InNhdV92YXNfa292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6InNla21hZGll''@;'; put 'put ''blx1MDEyZl9waXJtYWRpZW5cdTAxMmZfYW50cmFkaWVuXHUwMTJmX3RyZVx1MDEwZGlhZGllblx1MDEyZl9rZXR2aXJ0YWRpZW5cdTAxMmZfcGVua3RhZGllblx1MDEyZl9cdTAxNjFlXHUwMTYxdGFkaWVuXHUwMTJmIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNla21hZGllbmlzX3Bpcm1h''@;'; put 'put ''ZGllbmlzX2FudHJhZGllbmlzX3RyZVx1MDEwZGlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc19cdTAxNjFlXHUwMTYxdGFkaWVuaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L2RkZGQgSEg6bW0vfSx3ZWVrZGF5c1Nob3J0OiJTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl9cdTAx''@;'; put 'put ''NjBlXHUwMTYxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fXHUwMTYwIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBbbS5dIE1NTU0g''@;'; put 'put ''RCBbZC5dIixMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dIixMTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZGQsIEhIOm1tIFt2YWwuXSIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtk''@;'; put 'put ''Ll0sIEhIOm1tIFt2YWwuXSIsbGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1tIFt2YWwuXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwMTYwaWFuZGllbl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbVmFrYXJdIExU''@;'; put 'put ''IixsYXN0V2VlazoiW1ByYVx1MDExN2p1c1x1MDEyZl0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicG8gJXMiLHBhc3Q6InByaWVcdTAxNjEgJXMiLHM6ZnVuY3Rpb24gdihKLEksUixFKXtyZXR1cm4gST8ia2VsaW9zIHNla3VuZFx1MDExN3MiOkU/Imtl''@;'; put 'put ''bGlcdTAxNzMgc2VrdW5kXHUwMTdlaVx1MDE3MyI6ImtlbGlhcyBzZWt1bmRlcyJ9LHNzOkwsbTpoZSxtbTpMLGg6aGUsaGg6TCxkOmhlLGRkOkwsTTpoZSxNTTpMLHk6aGUseXk6TH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS1vamkvLG9yZGluYWw6ZnVuY3Rpb24oSil7cmV0''@;'; put 'put ''dXJuIEorIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw1MzM2MzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17c3M6InNla3VuZGVzX3Nla3VuZFx1MDExM21fc2VrdW5kZV9zZWt1bmRlcyIuc3BsaXQoIl8iKSxtOiJt''@;'; put 'put ''aW5cdTAxNmJ0ZXNfbWluXHUwMTZidFx1MDExM21fbWluXHUwMTZidGVfbWluXHUwMTZidGVzIi5zcGxpdCgiXyIpLG1tOiJtaW5cdTAxNmJ0ZXNfbWluXHUwMTZidFx1MDExM21fbWluXHUwMTZidGVfbWluXHUwMTZidGVzIi5zcGxpdCgiXyIpLGg6InN0dW5kYXNfc3R1bmRcdTAxMDFtX3N0''@;'; put 'put ''dW5kYV9zdHVuZGFzIi5zcGxpdCgiXyIpLGhoOiJzdHVuZGFzX3N0dW5kXHUwMTAxbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxkOiJkaWVuYXNfZGllblx1MDEwMW1fZGllbmFfZGllbmFzIi5zcGxpdCgiXyIpLGRkOiJkaWVuYXNfZGllblx1MDEwMW1fZGllbmFfZGllbmFzIi5zcGxp''@;'; put 'put ''dCgiXyIpLE06Im1cdTAxMTNuZVx1MDE2MWFfbVx1MDExM25lXHUwMTYxaWVtX21cdTAxMTNuZXNpc19tXHUwMTEzbmVcdTAxNjFpIi5zcGxpdCgiXyIpLE1NOiJtXHUwMTEzbmVcdTAxNjFhX21cdTAxMTNuZVx1MDE2MWllbV9tXHUwMTEzbmVzaXNfbVx1MDExM25lXHUwMTYxaSIuc3BsaXQo''@;'; put 'put ''Il8iKSx5OiJnYWRhX2dhZGllbV9nYWRzX2dhZGkiLnNwbGl0KCJfIikseXk6ImdhZGFfZ2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQoIl8iKX07ZnVuY3Rpb24gdihLLEosSSl7cmV0dXJuIEk/SiUxMD09MSYmSiUxMDAhPTExP0tbMl06S1szXTpKJTEwPT0xJiZKJTEwMCE9MTE/S1swXTpLWzFd''@;'; put 'put ''fWZ1bmN0aW9uIGhlKEssSixJKXtyZXR1cm4gSysiICIrdihrW0ldLEssSil9ZnVuY3Rpb24gSChLLEosSSl7cmV0dXJuIHYoa1tJXSxLLEopfXNlLmRlZmluZUxvY2FsZSgibHYiLHttb250aHM6ImphbnZcdTAxMDFyaXNfZmVicnVcdTAxMDFyaXNfbWFydHNfYXByXHUwMTJibGlzX21haWpz''@;'; put 'put ''X2pcdTAxNmJuaWpzX2pcdTAxNmJsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2pcdTAxNmJuX2pcdTAxNmJsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXM6InN2XHUwMTEzdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmVcdTAxNjFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN2''@;'; put 'put ''X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWS4iLExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSIsTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0i''@;'; put 'put ''LExMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBkZGRkLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwMTYwb2RpZW4gcHVsa3N0ZW5dIExUIixuZXh0RGF5OiJbUlx1MDEyYnQgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFr''@;'; put 'put ''YXIgcHVsa3N0ZW5dIExUIixsYXN0V2VlazoiW1BhZ1x1MDEwMWp1XHUwMTYxXHUwMTAxXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBcdTAxMTNjICVzIixwYXN0OiJwaXJtcyAlcyIsczpmdW5jdGlvbiBCKEssSil7cmV0dXJuIEo/''@;'; put 'put ''ImRhXHUwMTdlYXMgc2VrdW5kZXMiOiJkYVx1MDE3ZVx1MDEwMW0gc2VrdW5kXHUwMTEzbSJ9LHNzOmhlLG06SCxtbTpoZSxoOkgsaGg6aGUsZDpILGRkOmhlLE06SCxNTTpoZSx5OkgseXk6aGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVr''@;'; put 'put ''Ontkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw3MjkzOTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17d29yZHM6e3NzOlsic2VrdW5kIiwic2VrdW5kYSIsInNla3VuZGkiXSxtOlsiamVkYW4gbWludXQiLCJqZWRub2cgbWludXRhIl0sbW06''@;'; put 'put ''WyJtaW51dCIsIm1pbnV0YSIsIm1pbnV0YSJdLGg6WyJqZWRhbiBzYXQiLCJqZWRub2cgc2F0YSJdLGhoOlsic2F0Iiwic2F0YSIsInNhdGkiXSxkZDpbImRhbiIsImRhbmEiLCJkYW5hIl0sTU06WyJtamVzZWMiLCJtamVzZWNhIiwibWplc2VjaSJdLHl5OlsiZ29kaW5hIiwiZ29kaW5lIiwi''@;'; put 'put ''Z29kaW5hIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIDE9PT1oZT9IWzBdOmhlPj0yJiZoZTw9ND9IWzFdOkhbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihoZSxILEIpe3ZhciBMPWsud29yZHNbQl07cmV0dXJuIDE9PT1CLmxlbmd0aD9IP0xbMF06TFsx''@;'; put 'put ''XTpoZSsiICIray5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGhlLEwpfX07c2UuZGVmaW5lTG9jYWxlKCJtZSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXIiLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX1x1MDEwZGV0dnJ0YWtfcGV0''@;'; put 'put ''YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfXHUwMTBkZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERh''@;'; put 'put ''eToiW3NqdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGplbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmlqZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7''@;'; put 'put ''Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZSB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm5bIltwcm9cdTAxNjFsZV0gW25lZGplbGplXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbcG9uZWRq''@;'; put 'put ''ZWxqa2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsZV0gW3NyaWplZGVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtcdTAxMGRldHZydGthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm9cdTAxNjFs''@;'; put 'put ''ZV0gW3N1Ym90ZV0gW3VdIExUIl1bdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmlqZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsc3M6ay50cmFuc2xhdGUsbTprLnRyYW5zbGF0ZSxtbTprLnRyYW5zbGF0ZSxoOmsudHJh''@;'; put 'put ''bnNsYXRlLGhoOmsudHJhbnNsYXRlLGQ6ImRhbiIsZGQ6ay50cmFuc2xhdGUsTToibWplc2VjIixNTTprLnRyYW5zbGF0ZSx5OiJnb2RpbnUiLHl5OmsudHJhbnNsYXRlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9''@;'; put 'put ''fSl9KFQoMTY2NzYpKX0sMzgyMTI6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJtaSIse21vbnRoczoiS29oaS10XHUwMTAxdGVfSHVpLXRhbmd1cnVfUG91dFx1MDE2Yi10ZS1yYW5naV9QYWVuZ2Etd2hcdTAxMDF3aFx1MDEw''@;'; put 'put ''MV9IYXJhdHVhX1BpcGlyaV9IXHUwMTRkbmdvaW5nb2lfSGVyZS10dXJpLWtcdTAxNGRrXHUwMTAxX01haHVydV9XaGlyaW5nYS1cdTAxMDEtbnVrdV9XaGlyaW5nYS1cdTAxMDEtcmFuZ2lfSGFraWhlYSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiS29oaV9IdWlfUG91X1BhZV9IYXJhX1Bp''@;'; put 'put ''cGlfSFx1MDE0ZG5nb2lfSGVyZV9NYWh1X1doaS1udV9XaGktcmFfSGFraSIuc3BsaXQoIl8iKSxtb250aHNSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwzfS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9''@;'; put 'put ''L2ksbW9udGhzU2hvcnRSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwzfS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsMn0vaSx3ZWVrZGF5czoiUlx1MDEwMXRhcHVfTWFuZV9UXHUwMTZicmVpX1dl''@;'; put 'put ''bmVyZWlfVFx1MDEwMWl0ZV9QYXJhaXJlX0hcdTAxMDF0YXJlaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJUYV9NYV9UXHUwMTZiX1dlX1RcdTAxMDFpX1BhX0hcdTAxMDEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlRhX01hX1RcdTAxNmJfV2VfVFx1MDEwMWlfUGFfSFx1MDEwMSIu''@;'; put 'put ''c3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW2ldIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbaV0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh''@;'; put 'put ''eToiW2kgdGVpZSBtYWhhbmEsIGldIExUIixuZXh0RGF5OiJbYXBvcG8gaV0gTFQiLG5leHRXZWVrOiJkZGRkIFtpXSBMVCIsbGFzdERheToiW2luYW5haGkgaV0gTFQiLGxhc3RXZWVrOiJkZGRkIFt3aGFrYW11dHVuZ2EgaV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6Imkgcm90byBpICVzIixwYXN0OiIlcyBpIG11YSIsczoidGUgaFx1MDExM2tvbmEgcnVhcnVhIixzczoiJWQgaFx1MDExM2tvbmEiLG06ImhlIG1lbmV0aSIsbW06IiVkIG1lbmV0aSIsaDoidGUgaGFvcmEiLGhoOiIlZCBoYW9yYSIsZDoiaGUgcmEiLGRkOiIlZCByYSIsTToiaGUgbWFy''@;'; put 'put ''YW1hIixNTToiJWQgbWFyYW1hIix5OiJoZSB0YXUiLHl5OiIlZCB0YXUifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw2OTcxODpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24o''@;'; put 'put ''c2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoIm1rIix7bW9udGhzOiJcdTA0NThcdTA0MzBcdTA0M2RcdTA0NDNcdTA0MzBcdTA0NDBcdTA0MzhfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9c''@;'; put 'put ''dTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZFx1MDQzOF9cdTA0NThcdTA0NDNcdTA0M2JcdTA0MzhfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQz''@;'; put 'put ''NVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDNkXHUwNDNlXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQz''@;'; put 'put ''OCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDU4XHUwNDMwXHUwNDNkX1x1MDQ0NFx1MDQzNVx1MDQzMl9cdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQ1OF9cdTA0NThcdTA0NDNcdTA0M2RfXHUwNDU4XHUwNDQzXHUwNDNiX1x1MDQz''@;'; put 'put ''MFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2ZfXHUwNDNlXHUwNDNhXHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQzNV9cdTA0MzRcdTA0MzVcdTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQzMF9cdTA0M2ZcdTA0M2VcdTA0''@;'; put 'put ''M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDMyXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzMF9cdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0NDBcdTA0NDJcdTA0M2VcdTA0''@;'; put 'put ''M2FfXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDNlXHUwNDNhX1x1MDQ0MVx1MDQzMFx1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzVcdTA0MzRfXHUwNDNmXHUwNDNlXHUwNDNkX1x1MDQzMlx1MDQ0Mlx1MDQzZV9cdTA0NDFcdTA0''@;'; put 'put ''NDBcdTA0MzVfXHUwNDQ3XHUwNDM1XHUwNDQyX1x1MDQzZlx1MDQzNVx1MDQ0Ml9cdTA0NDFcdTA0MzBcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZGVfXHUwNDNmb19cdTA0MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQzNV9cdTA0M2ZcdTA0MzVfXHUwNDQx''@;'; put 'put ''YSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDE0''@;'; put 'put ''XHUwNDM1XHUwNDNkXHUwNDM1XHUwNDQxIFx1MDQzMlx1MDQzZV0gTFQiLG5leHREYXk6IltcdTA0MjNcdTA0NDJcdTA0NDBcdTA0MzUgXHUwNDMyXHUwNDNlXSBMVCIsbmV4dFdlZWs6IltcdTA0MTJcdTA0M2VdIGRkZGQgW1x1MDQzMlx1MDQzZV0gTFQiLGxhc3REYXk6IltcdTA0MTJcdTA0''@;'; put 'put ''NDdcdTA0MzVcdTA0NDBcdTA0MzAgXHUwNDMyXHUwNDNlXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIltcdTA0MThcdTA0MzdcdTA0M2NcdTA0MzhcdTA0M2RcdTA0MzBcdTA0NDJcdTA0MzBcdTA0NDJcdTA0''@;'; put 'put ''MzBdIGRkZGQgW1x1MDQzMlx1MDQzZV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW1x1MDQxOFx1MDQzN1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQzMFx1MDQ0Mlx1MDQzOFx1MDQzZVx1MDQ0Ml0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCJ9fSxzYW1lRWxzZToiTCJ9''@;'; put 'put ''LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzdcdTA0MzAgJXMiLHBhc3Q6Ilx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzNCAlcyIsczoiXHUwNDNkXHUwNDM1XHUwNDNhXHUwNDNlXHUwNDNiXHUwNDNhXHUwNDQzIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIs''@;'; put 'put ''c3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsbToiXHUwNDM1XHUwNDM0XHUwNDNkXHUwNDMwIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzOCIsaDoi''@;'; put 'put ''XHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNkIFx1MDQ0N1x1MDQzMFx1MDQ0MSIsaGg6IiVkIFx1MDQ0N1x1MDQzMFx1MDQ0MVx1MDQzMCIsZDoiXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNkIFx1MDQzNFx1MDQzNVx1MDQzZCIsZGQ6IiVkIFx1MDQzNFx1MDQzNVx1MDQzZFx1MDQzMCIsTToiXHUw''@;'; put 'put ''NDM1XHUwNDM0XHUwNDM1XHUwNDNkIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0NiIsTU06IiVkIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzOCIseToiXHUwNDM1XHUwNDM0XHUwNDNkXHUwNDMwIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCIs''@;'; put 'put ''eXk6IiVkIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzOCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQzNVx1MDQzMnxcdTA0MzVcdTA0M2R8XHUwNDQyXHUwNDM4fFx1MDQzMlx1MDQzOHxcdTA0NDBcdTA0Mzh8XHUwNDNjXHUwNDM4KS8sb3JkaW5h''@;'; put 'put ''bDpmdW5jdGlvbih2KXt2YXIgaGU9diUxMCxIPXYlMTAwO3JldHVybiAwPT09dj92KyItXHUwNDM1XHUwNDMyIjowPT09SD92KyItXHUwNDM1XHUwNDNkIjpIPjEwJiZIPDIwP3YrIi1cdTA0NDJcdTA0MzgiOjE9PT1oZT92KyItXHUwNDMyXHUwNDM4IjoyPT09aGU/disiLVx1MDQ0MFx1MDQz''@;'; put 'put ''OCI6Nz09PWhlfHw4PT09aGU/disiLVx1MDQzY1x1MDQzOCI6disiLVx1MDQ0Mlx1MDQzOCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDUwNTYxOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgibWwiLHttb250''@;'; put 'put ''aHM6Ilx1MGQxY1x1MGQyOFx1MGQ0MVx1MGQzNVx1MGQzMFx1MGQzZl9cdTBkMmJcdTBkNDZcdTBkMmNcdTBkNGRcdTBkMzBcdTBkNDFcdTBkMzVcdTBkMzBcdTBkM2ZfXHUwZDJlXHUwZDNlXHUwZDdjXHUwZDFhXHUwZDRkXHUwZDFhXHUwZDRkX1x1MGQwZlx1MGQyYVx1MGQ0ZFx1MGQzMFx1''@;'; put 'put ''MGQzZlx1MGQ3ZF9cdTBkMmVcdTBkNDdcdTBkMmZcdTBkNGRfXHUwZDFjXHUwZDQyXHUwZDdhX1x1MGQxY1x1MGQ0Mlx1MGQzMlx1MGQ0OF9cdTBkMTNcdTBkMTdcdTBkMzhcdTBkNGRcdTBkMzFcdTBkNGRcdTBkMzFcdTBkNGRfXHUwZDM4XHUwZDQ2XHUwZDJhXHUwZDRkXHUwZDMxXHUwZDRk''@;'; put 'put ''XHUwZDMxXHUwZDAyXHUwZDJjXHUwZDdjX1x1MGQxMlx1MGQxNVx1MGQ0ZFx1MGQxZlx1MGQ0Ylx1MGQyY1x1MGQ3Y19cdTBkMjhcdTBkMzVcdTBkMDJcdTBkMmNcdTBkN2NfXHUwZDIxXHUwZDNmXHUwZDM4XHUwZDAyXHUwZDJjXHUwZDdjIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBk''@;'; put 'put ''MWNcdTBkMjhcdTBkNDEuX1x1MGQyYlx1MGQ0Nlx1MGQyY1x1MGQ0ZFx1MGQzMFx1MGQ0MS5fXHUwZDJlXHUwZDNlXHUwZDdjLl9cdTBkMGZcdTBkMmFcdTBkNGRcdTBkMzBcdTBkM2YuX1x1MGQyZVx1MGQ0N1x1MGQyZlx1MGQ0ZF9cdTBkMWNcdTBkNDJcdTBkN2FfXHUwZDFjXHUwZDQyXHUw''@;'; put 'put ''ZDMyXHUwZDQ4Ll9cdTBkMTNcdTBkMTcuX1x1MGQzOFx1MGQ0Nlx1MGQyYVx1MGQ0ZFx1MGQzMVx1MGQ0ZFx1MGQzMS5fXHUwZDEyXHUwZDE1XHUwZDRkXHUwZDFmXHUwZDRiLl9cdTBkMjhcdTBkMzVcdTBkMDIuX1x1MGQyMVx1MGQzZlx1MGQzOFx1MGQwMi4iLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''UGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwZDFlXHUwZDNlXHUwZDJmXHUwZDMxXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQyNFx1MGQzZlx1MGQxOVx1MGQ0ZFx1MGQxNVx1MGQzM1x1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMWFcdTBkNGFcdTBkMzVcdTBkNGRcdTBkMzVc''@;'; put 'put ''dTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDJjXHUwZDQxXHUwZDI3XHUwZDI4XHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhX1x1MGQzNVx1MGQ0ZFx1MGQyZlx1MGQzZVx1MGQzNFx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMzVcdTBkNDZcdTBkMzNcdTBkNGRcdTBkMzNcdTBkM2Zc''@;'; put 'put ''dTBkMmZcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDM2XHUwZDI4XHUwZDNmXHUwZDJmXHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGQxZVx1MGQzZVx1MGQyZlx1MGQ3Y19cdTBkMjRcdTBkM2ZcdTBkMTlcdTBkNGRcdTBkMTVcdTBk''@;'; put 'put ''N2VfXHUwZDFhXHUwZDRhXHUwZDM1XHUwZDRkXHUwZDM1X1x1MGQyY1x1MGQ0MVx1MGQyN1x1MGQ3Yl9cdTBkMzVcdTBkNGRcdTBkMmZcdTBkM2VcdTBkMzRcdTBkMDJfXHUwZDM1XHUwZDQ2XHUwZDMzXHUwZDRkXHUwZDMzXHUwZDNmX1x1MGQzNlx1MGQyOFx1MGQzZiIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c01pbjoiXHUwZDFlXHUwZDNlX1x1MGQyNFx1MGQzZl9cdTBkMWFcdTBkNGFfXHUwZDJjXHUwZDQxX1x1MGQzNVx1MGQ0ZFx1MGQyZlx1MGQzZV9cdTBkMzVcdTBkNDZfXHUwZDM2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIC1cdTBkMjhcdTBkNDEiLExU''@;'; put 'put ''UzoiQSBoOm1tOnNzIC1cdTBkMjhcdTBkNDEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIC1cdTBkMjhcdTBkNDEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gLVx1MGQyOFx1MGQ0MSJ9LGNhbGVuZGFyOntzYW1lRGF5''@;'; put 'put ''OiJbXHUwZDA3XHUwZDI4XHUwZDRkXHUwZDI4XHUwZDRkXSBMVCIsbmV4dERheToiW1x1MGQyOFx1MGQzZVx1MGQzM1x1MGQ0Nl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MGQwN1x1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQzMlx1MGQ0Nl0gTFQiLGxhc3RXZWVrOiJbXHUw''@;'; put 'put ''ZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIixwYXN0OiIlcyBcdTBkMmVcdTBkNDFcdTBkN2JcdTBkMmFcdTBk''@;'; put 'put ''NGQiLHM6Ilx1MGQwNVx1MGQ3ZFx1MGQyYSBcdTBkMjhcdTBkM2ZcdTBkMmVcdTBkM2ZcdTBkMzdcdTBkMTlcdTBkNGRcdTBkMTlcdTBkN2UiLHNzOiIlZCBcdTBkMzhcdTBkNDZcdTBkMTVcdTBkNGRcdTBkMTVcdTBkN2JcdTBkMjFcdTBkNGQiLG06Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBk''@;'; put 'put ''MmVcdTBkM2ZcdTBkMjhcdTBkM2ZcdTBkMzFcdTBkNGRcdTBkMzFcdTBkNGQiLG1tOiIlZCBcdTBkMmVcdTBkM2ZcdTBkMjhcdTBkM2ZcdTBkMzFcdTBkNGRcdTBkMzFcdTBkNGQiLGg6Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMmVcdTBkMjNcdTBkM2ZcdTBkMTVcdTBkNGRcdTBkMTVcdTBk''@;'; put 'put ''NDJcdTBkN2MiLGhoOiIlZCBcdTBkMmVcdTBkMjNcdTBkM2ZcdTBkMTVcdTBkNGRcdTBkMTVcdTBkNDJcdTBkN2MiLGQ6Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMjZcdTBkM2ZcdTBkMzVcdTBkMzhcdTBkMDIiLGRkOiIlZCBcdTBkMjZcdTBkM2ZcdTBkMzVcdTBkMzhcdTBkMDIiLE06Ilx1''@;'; put 'put ''MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMmVcdTBkM2VcdTBkMzhcdTBkMDIiLE1NOiIlZCBcdTBkMmVcdTBkM2VcdTBkMzhcdTBkMDIiLHk6Ilx1MGQxMlx1MGQzMFx1MGQ0MSBcdTBkMzVcdTBkN2NcdTBkMzdcdTBkMDIiLHl5OiIlZCBcdTBkMzVcdTBkN2NcdTBkMzdcdTBkMDIifSxtZXJpZGll''@;'; put 'put ''bVBhcnNlOi9cdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2Z8XHUwZDMwXHUwZDNlXHUwZDM1XHUwZDNmXHUwZDMyXHUwZDQ2fFx1MGQwOVx1MGQxYVx1MGQ0ZFx1MGQxYSBcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVcdTBkNGR8XHUwZDM1XHUwZDQ4XHUw''@;'; put 'put ''ZDE1XHUwZDQxXHUwZDI4XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyfFx1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZi9pLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMw''@;'; put 'put ''XHUwZDNmIj09PWhlJiZ2Pj00fHwiXHUwZDA5XHUwZDFhXHUwZDRkXHUwZDFhIFx1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZCI9PT1oZXx8Ilx1MGQzNVx1MGQ0OFx1MGQxNVx1MGQ0MVx1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQ0N1x1MGQzMFx1MGQwMiI9PT1oZT92''@;'; put 'put ''KzEyOnZ9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8ND8iXHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMwXHUwZDNmIjp2PDEyPyJcdTBkMzBcdTBkM2VcdTBkMzVcdTBkM2ZcdTBkMzJcdTBkNDYiOnY8MTc/Ilx1MGQwOVx1MGQxYVx1MGQ0ZFx1MGQxYSBcdTBkMTVc''@;'; put 'put ''dTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVcdTBkNGQiOnY8MjA/Ilx1MGQzNVx1MGQ0OFx1MGQxNVx1MGQ0MVx1MGQyOFx1MGQ0ZFx1MGQyOFx1MGQ0N1x1MGQzMFx1MGQwMiI6Ilx1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZiJ9fSl9KFQoMTY2NzYpKX0sNjg5Mjk6''@;'; put 'put ''ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhoZSxILEIsTCl7c3dpdGNoKEIpe2Nhc2UicyI6cmV0dXJuIEg/Ilx1MDQ0NVx1MDQ0ZFx1MDQzNFx1MDQ0NVx1MDQ0ZFx1MDQzZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0''@;'; put 'put ''MzQiOiJcdTA0NDVcdTA0NGRcdTA0MzRcdTA0NDVcdTA0NGRcdTA0M2QgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiXHUwNDNkIjtjYXNlInNzIjpyZXR1cm4gaGUrKEg/IiBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiOiIgXHUwNDQxXHUw''@;'; put 'put ''NDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiXHUwNDNkIik7Y2FzZSJtIjpjYXNlIm1tIjpyZXR1cm4gaGUrKEg/IiBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiOiIgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDRiXHUwNDNkIik7Y2FzZSJoIjpjYXNl''@;'; put 'put ''ImhoIjpyZXR1cm4gaGUrKEg/IiBcdTA0NDZcdTA0MzBcdTA0MzMiOiIgXHUwNDQ2XHUwNDMwXHUwNDMzXHUwNDM4XHUwNDM5XHUwNDNkIik7Y2FzZSJkIjpjYXNlImRkIjpyZXR1cm4gaGUrKEg/IiBcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDAiOiIgXHUwNGU5XHUwNDM0XHUwNDQwXHUwNDM4''@;'; put 'put ''XHUwNDM5XHUwNDNkIik7Y2FzZSJNIjpjYXNlIk1NIjpyZXR1cm4gaGUrKEg/IiBcdTA0NDFcdTA0MzBcdTA0NDAiOiIgXHUwNDQxXHUwNDMwXHUwNDQwXHUwNDRiXHUwNDNkIik7Y2FzZSJ5IjpjYXNlInl5IjpyZXR1cm4gaGUrKEg/IiBcdTA0MzZcdTA0MzhcdTA0M2IiOiIgXHUwNDM2XHUw''@;'; put 'put ''NDM4XHUwNDNiXHUwNDM4XHUwNDM5XHUwNDNkIik7ZGVmYXVsdDpyZXR1cm4gaGV9fXNlLmRlZmluZUxvY2FsZSgibW4iLHttb250aHM6Ilx1MDQxZFx1MDQ0ZFx1MDQzM1x1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDI1XHUwNDNl''@;'; put 'put ''XHUwNDUxXHUwNDQwXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTNcdTA0NDNcdTA0NDBcdTA0MzBcdTA0MzJcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxNFx1MDRl''@;'; put 'put ''OVx1MDQ0MFx1MDRlOVx1MDQzMlx1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDIyXHUwNDMwXHUwNDMyXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTdcdTA0NDNcdTA0''@;'; put 'put ''NDBcdTA0MzNcdTA0MzBcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxNFx1MDQzZVx1MDQzYlx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDFkXHUwNDMwXHUwNDM5XHUw''@;'; put 'put ''NDNjXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTVcdTA0NDFcdTA0MzRcdTA0YWZcdTA0MzNcdTA0NGRcdTA0NGRcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxMFx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNFx1MDQ0M1x1''@;'; put 'put ''MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDEwXHUwNDQwXHUwNDMyXHUwNDMwXHUwNDNkIFx1MDQzZFx1MDQ0ZFx1MDQzM1x1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDEwXHUwNDQwXHUwNDMy''@;'; put 'put ''XHUwNDMwXHUwNDNkIFx1MDQ0NVx1MDQzZVx1MDQ1MVx1MDQ0MFx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjEgXHUwNDQxXHUwNDMwXHUwNDQwXzIgXHUwNDQxXHUwNDMwXHUwNDQwXzMgXHUw''@;'; put 'put ''NDQxXHUwNDMwXHUwNDQwXzQgXHUwNDQxXHUwNDMwXHUwNDQwXzUgXHUwNDQxXHUwNDMwXHUwNDQwXzYgXHUwNDQxXHUwNDMwXHUwNDQwXzcgXHUwNDQxXHUwNDMwXHUwNDQwXzggXHUwNDQxXHUwNDMwXHUwNDQwXzkgXHUwNDQxXHUwNDMwXHUwNDQwXzEwIFx1MDQ0MVx1MDQzMFx1MDQ0MF8x''@;'; put 'put ''MSBcdTA0NDFcdTA0MzBcdTA0NDBfMTIgXHUwNDQxXHUwNDMwXHUwNDQwIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDQxZFx1MDQ0Zlx1MDQzY19cdTA0MTRcdTA0MzBcdTA0MzJcdTA0MzBcdTA0MzBfXHUwNDFjXHUwNDRmXHUwNDMzXHUwNDNjXHUwNDMw''@;'; put 'put ''XHUwNDQwX1x1MDQxYlx1MDQ0NVx1MDQzMFx1MDQzM1x1MDQzMlx1MDQzMF9cdTA0MWZcdTA0YWZcdTA0NDBcdTA0NGRcdTA0MzJfXHUwNDExXHUwNDMwXHUwNDMwXHUwNDQxXHUwNDMwXHUwNDNkX1x1MDQxMVx1MDQ0Zlx1MDQzY1x1MDQzMVx1MDQzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0OiJcdTA0MWRcdTA0NGZcdTA0M2NfXHUwNDE0XHUwNDMwXHUwNDMyX1x1MDQxY1x1MDQ0Zlx1MDQzM19cdTA0MWJcdTA0NDVcdTA0MzBfXHUwNDFmXHUwNGFmXHUwNDQwX1x1MDQxMVx1MDQzMFx1MDQzMF9cdTA0MTFcdTA0NGZcdTA0M2MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1''@;'; put 'put ''MDQxZFx1MDQ0Zl9cdTA0MTRcdTA0MzBfXHUwNDFjXHUwNDRmX1x1MDQxYlx1MDQ0NV9cdTA0MWZcdTA0YWZfXHUwNDExXHUwNDMwX1x1MDQxMVx1MDQ0ZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIs''@;'; put 'put ''TDoiWVlZWS1NTS1ERCIsTEw6IllZWVkgXHUwNDNlXHUwNDNkXHUwNDRiIE1NTU1cdTA0NGJcdTA0M2QgRCIsTExMOiJZWVlZIFx1MDQzZVx1MDQzZFx1MDQ0YiBNTU1NXHUwNDRiXHUwNDNkIEQgSEg6bW0iLExMTEw6ImRkZGQsIFlZWVkgXHUwNDNlXHUwNDNkXHUwNDRiIE1NTU1cdTA0NGJc''@;'; put 'put ''dTA0M2QgRCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDRhZVx1MDRlOHxcdTA0YWVcdTA0MjUvaSxpc1BNOmZ1bmN0aW9uKGhlKXtyZXR1cm4iXHUwNGFlXHUwNDI1Ij09PWhlfSxtZXJpZGllbTpmdW5jdGlvbihoZSxILEIpe3JldHVybiBoZTwxMj8iXHUwNGFlXHUwNGU4IjoiXHUwNGFl''@;'; put 'put ''XHUwNDI1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0ZThcdTA0M2RcdTA0ZTlcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDBdIExUIixuZXh0RGF5OiJbXHUwNDFjXHUwNDMwXHUwNDQwXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQ4XSBMVCIsbmV4dFdlZWs6IltcdTA0MThcdTA0NDBcdTA0NGRc''@;'; put 'put ''dTA0NDVdIGRkZGQgTFQiLGxhc3REYXk6IltcdTA0ZThcdTA0NDdcdTA0MzhcdTA0MzNcdTA0MzRcdTA0ZTlcdTA0NDBdIExUIixsYXN0V2VlazoiW1x1MDRlOFx1MDQzZFx1MDQzM1x1MDRlOVx1MDQ0MFx1MDQ0MVx1MDRlOVx1MDQzZF0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2''@;'; put 'put ''ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNDM0XHUwNDMwXHUwNDQwXHUwNDMwXHUwNDMwIixwYXN0OiIlcyBcdTA0ZTlcdTA0M2NcdTA0M2RcdTA0ZTkiLHM6ayxzczprLG06ayxtbTprLGg6ayxoaDprLGQ6ayxkZDprLE06ayxNTTprLHk6ayx5eTprfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9c''@;'; put 'put ''ZHsxLDJ9IFx1MDRlOVx1MDQzNFx1MDRlOVx1MDQ0MC8sb3JkaW5hbDpmdW5jdGlvbihoZSxIKXtzd2l0Y2goSCl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gaGUrIiBcdTA0ZTlcdTA0MzRcdTA0ZTlcdTA0NDAiO2RlZmF1bHQ6cmV0dXJuIGhlfX19KX0oVCgxNjY3NikpfSw4''@;'; put 'put ''NDg4MDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz17MToiXHUwOTY3IiwyOiJcdTA5NjgiLDM6Ilx1MDk2OSIsNDoiXHUwOTZhIiw1OiJcdTA5NmIiLDY6Ilx1MDk2YyIsNzoiXHUwOTZkIiw4OiJcdTA5NmUiLDk6Ilx1MDk2ZiIsMDoiXHUwOTY2''@;'; put 'put ''In0sdj17Ilx1MDk2NyI6IjEiLCJcdTA5NjgiOiIyIiwiXHUwOTY5IjoiMyIsIlx1MDk2YSI6IjQiLCJcdTA5NmIiOiI1IiwiXHUwOTZjIjoiNiIsIlx1MDk2ZCI6IjciLCJcdTA5NmUiOiI4IiwiXHUwOTZmIjoiOSIsIlx1MDk2NiI6IjAifTtmdW5jdGlvbiBoZShCLEwsSyxKKXt2YXIgST0i''@;'; put 'put ''IjtpZihMKXN3aXRjaChLKXtjYXNlInMiOkk9Ilx1MDkxNVx1MDkzZVx1MDkzOVx1MDk0MCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjYiO2JyZWFrO2Nhc2Uic3MiOkk9IiVkIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNiI7YnJlYWs7Y2FzZSJtIjpJPSJcdTA5MGZcdTA5''@;'; put 'put ''MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTNmXHUwOTFmIjticmVhaztjYXNlIm1tIjpJPSIlZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWZcdTA5NDciO2JyZWFrO2Nhc2UiaCI6ST0iXHUwOTBmXHUwOTE1IFx1MDkyNFx1MDkzZVx1MDkzOCI7YnJlYWs7Y2FzZSJoaCI6ST0iJWQg''@;'; put 'put ''XHUwOTI0XHUwOTNlXHUwOTM4IjticmVhaztjYXNlImQiOkk9Ilx1MDkwZlx1MDkxNSBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzgiO2JyZWFrO2Nhc2UiZGQiOkk9IiVkIFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOCI7YnJlYWs7Y2FzZSJNIjpJPSJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5''@;'; put 'put ''XHUwOTNmXHUwOTI4XHUwOTNlIjticmVhaztjYXNlIk1NIjpJPSIlZCBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5NDciO2JyZWFrO2Nhc2UieSI6ST0iXHUwOTBmXHUwOTE1IFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzNyI7YnJlYWs7Y2FzZSJ5eSI6ST0iJWQgXHUwOTM1XHUwOTMwXHUw''@;'; put 'put ''OTRkXHUwOTM3XHUwOTQ3In1lbHNlIHN3aXRjaChLKXtjYXNlInMiOkk9Ilx1MDkxNVx1MDkzZVx1MDkzOVx1MDk0MCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5MDJcdTA5MjZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2Uic3MiOkk9IiVkIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNlx1''@;'; put 'put ''MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJtIjpJPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTNmXHUwOTFmXHUwOTNlIjticmVhaztjYXNlIm1tIjpJPSIlZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UiaCI6''@;'; put 'put ''ST0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyNFx1MDkzZVx1MDkzOFx1MDkzZSI7YnJlYWs7Y2FzZSJoaCI6ST0iJWQgXHUwOTI0XHUwOTNlXHUwOTM4XHUwOTNlXHUwOTAyIjticmVhaztjYXNlImQiOkk9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5MzhcdTA5''@;'; put 'put ''M2UiO2JyZWFrO2Nhc2UiZGQiOkk9IiVkIFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOFx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJNIjpJPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTRkXHUwOTJmXHUwOTNlIjticmVhaztjYXNlIk1NIjpJPSIlZCBc''@;'; put 'put ''dTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UieSI6ST0iXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzN1x1MDkzZSI7YnJlYWs7Y2FzZSJ5eSI6ST0iJWQgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3XHUw''@;'; put 'put ''OTNlXHUwOTAyIn1yZXR1cm4gSS5yZXBsYWNlKC8lZC9pLEIpfXNlLmRlZmluZUxvY2FsZSgibXIiLHttb250aHM6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0N1x1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDFcdTA5MzVcdTA5M2Vc''@;'; put 'put ''dTA5MzBcdTA5NDBfXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZlx1MDkzMl9cdTA5MmVcdTA5NDdfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDk0OF9cdTA5MTFcdTA5MTdcdTA5MzhcdTA5NGRcdTA5''@;'; put 'put ''MWZfXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwX1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Ylx1MDkyY1x1MDkzMF9cdTA5MjhcdTA5NGJcdTA5MzVcdTA5NGRcdTA5MzlcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTIxXHUwOTNmXHUw''@;'; put 'put ''OTM4XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDcuX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MS5fXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhLl9cdTA5MGZcdTA5MmFcdTA5''@;'; put 'put ''NGRcdTA5MzBcdTA5M2YuX1x1MDkyZVx1MDk0Ny5fXHUwOTFjXHUwOTQyXHUwOTI4Ll9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5NDguX1x1MDkxMVx1MDkxNy5fXHUwOTM4XHUwOTJhXHUwOTRkXHUwOTFmXHUwOTQ3XHUwOTAyLl9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGIuX1x1MDky''@;'; put 'put ''OFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMi5fXHUwOTIxXHUwOTNmXHUwOTM4XHUwOTQ3XHUwOTAyLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTA5MzBcdTA5MzVcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM4XHUwOTRiXHUw''@;'; put 'put ''OTJlXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5NDFcdTA5MjdcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDk0MVx1MDkxNVx1''@;'; put 'put ''MDk0ZFx1MDkzMFx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOTMwXHUwOTM1XHUwOTNmX1x1MDkzOFx1MDk0Ylx1MDkyZV9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzNfXHUwOTJjXHUw''@;'; put 'put ''OTQxXHUwOTI3X1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Ml9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MzBfXHUwOTM4XHUwOTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTE3XHUw''@;'; put 'put ''OTQxX1x1MDkzNlx1MDk0MV9cdTA5MzYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlIixMVFM6IkEgaDptbTpzcyBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UiLEw6IkREL01NL1lZWVkiLExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkzZSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10g''@;'; put 'put ''TFQiLG5leHREYXk6IltcdTA5MDlcdTA5MjZcdTA5NGRcdTA5MmZcdTA5M2VdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5MTVcdTA5M2VcdTA5MzJdIExUIixsYXN0V2VlazoiW1x1MDkyZVx1MDkzZVx1MDkxN1x1MDk0MFx1MDkzMl0gZGRkZCwgTFQiLHNhbWVFbHNl''@;'; put 'put ''OiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwOTJlXHUwOTI3XHUwOTRkXHUwOTJmXHUwOTQ3IixwYXN0OiIlc1x1MDkyYVx1MDk0Mlx1MDkzMFx1MDk0ZFx1MDkzNVx1MDk0MCIsczpoZSxzczpoZSxtOmhlLG1tOmhlLGg6aGUsaGg6aGUsZDpoZSxkZDpoZSxNOmhlLE1NOmhlLHk6''@;'; put 'put ''aGUseXk6aGV9LHByZXBhcnNlOmZ1bmN0aW9uKEIpe3JldHVybiBCLnJlcGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVcdTA5NmZcdTA5NjZdL2csZnVuY3Rpb24oTCl7cmV0dXJuIHZbTF19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihCKXty''@;'; put 'put ''ZXR1cm4gQi5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEwpe3JldHVybiBrW0xdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkyYVx1MDkzOVx1MDkzZVx1MDkxZlx1MDk0N3xcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDB8XHUwOTI2XHUwOTQxXHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwfFx1''@;'; put 'put ''MDkzOFx1MDkzZVx1MDkyZlx1MDkwMlx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MHxcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDAvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihCLEwpe3JldHVybiAxMj09PUImJihCPTApLCJcdTA5MmFcdTA5MzlcdTA5M2VcdTA5MWZcdTA5NDci''@;'; put 'put ''PT09THx8Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MCI9PT1MP0I6Ilx1MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI9PT1MfHwiXHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIj09PUx8fCJcdTA5MzBcdTA5M2VcdTA5MjRc''@;'; put 'put ''dTA5NGRcdTA5MzBcdTA5NDAiPT09TD9CPj0xMj9COkIrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihCLEwsSyl7cmV0dXJuIEI+PTAmJkI8Nj8iXHUwOTJhXHUwOTM5XHUwOTNlXHUwOTFmXHUwOTQ3IjpCPDEyPyJcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDAiOkI8MTc/Ilx1''@;'; put 'put ''MDkyNlx1MDk0MVx1MDkyYVx1MDkzZVx1MDkzMFx1MDk0MCI6QjwyMD8iXHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIjoiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQwIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0s''@;'; put 'put ''NDIwNzQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJtcy1teSIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVy''@;'; put 'put ''Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6''@;'; put 'put ''IkFoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhfSXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6''@;'; put 'put ''IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwicGFn''@;'; put 'put ''aSI9PT1oZT92OiJ0ZW5nYWhhcmkiPT09aGU/dj49MTE/djp2KzEyOiJwZXRhbmciPT09aGV8fCJtYWxhbSI9PT1oZT92KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdjwxMT8icGFnaSI6djwxNT8idGVuZ2FoYXJpIjp2PDE5PyJwZXRhbmciOiJtYWxhbSJ9''@;'; put 'put ''LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQiLHNhbWVFbHNl''@;'; put 'put ''OiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFzIixzOiJiZWJlcmFwYSBzYWF0IixzczoiJWQgc2FhdCIsbToic2VtaW5pdCIsbW06IiVkIG1pbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToi''@;'; put 'put ''c2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw2MzE5MzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoIm1zIix7bW9udGhzOiJK''@;'; put 'put ''YW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8i''@;'; put 'put ''KSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3Bh''@;'; put 'put ''Z2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHYsaGUpe3JldHVybiAxMj09PXYmJih2PTApLCJwYWdpIj09PWhlP3Y6InRlbmdhaGFyaSI9PT1oZT92Pj0xMT92OnYrMTI6InBldGFuZyI9PT1oZXx8Im1hbGFtIj09PWhlP3YrMTI6dm9pZCAwfSxtZXJp''@;'; put 'put ''ZGllbTpmdW5jdGlvbih2LGhlLEgpe3JldHVybiB2PDExPyJwYWdpIjp2PDE1PyJ0ZW5nYWhhcmkiOnY8MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1''@;'; put 'put ''a3VsXSBMVCIsbGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xlcGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLHNzOiIlZCBz''@;'; put 'put ''YWF0IixtOiJzZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDU0''@;'; put 'put ''MDgyOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgibXQiLHttb250aHM6Ikphbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X1x1MDEyMHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EaVx1''@;'; put 'put ''MDEwYmVtYnJ1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRnJhX01hcl9BcHJfTWVqX1x1MDEyMHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGlcdTAxMGIiLnNwbGl0KCJfIiksd2Vla2RheXM6IklsLVx1MDEyNmFkZF9JdC1UbmVqbl9JdC1UbGlldGFfTC1FcmJnXHUwMTI3YV9JbC1c''@;'; put 'put ''dTAxMjZhbWlzX0lsLVx1MDEyMGltZ1x1MDEyN2FfSXMtU2lidCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTAxMjZhZF9UbmVfVGxpX0VyYl9cdTAxMjZhbV9cdTAxMjBpbV9TaWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDEyNmFfVG5fVGxfRXJfXHUwMTI2YV9cdTAxMjBp''@;'; put 'put ''X1NpIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToi''@;'; put 'put ''W0lsbHVtIGZpbC1dTFQiLG5leHREYXk6IltHXHUwMTI3YWRhIGZpbC1dTFQiLG5leHRXZWVrOiJkZGRkIFtmaWwtXUxUIixsYXN0RGF5OiJbSWwtYmllcmFcdTAxMjcgZmlsLV1MVCIsbGFzdFdlZWs6ImRkZGQgW2xpIGdcdTAxMjdhZGRhXSBbZmlsLV1MVCIsc2FtZUVsc2U6IkwifSxyZWxh''@;'; put 'put ''dGl2ZVRpbWU6e2Z1dHVyZToiZlx1MjAxOSAlcyIscGFzdDoiJXMgaWx1IixzOiJmdGl0IHNla29uZGkiLHNzOiIlZCBzZWtvbmRpIixtOiJtaW51dGEiLG1tOiIlZCBtaW51dGkiLGg6InNpZWdcdTAxMjdhIixoaDoiJWQgc2llZ1x1MDEyN2F0IixkOiJcdTAxMjF1cm5hdGEiLGRkOiIlZCBc''@;'; put 'put ''dTAxMjFyYW5ldCIsTToieGFoYXIiLE1NOiIlZCB4aHVyIix5OiJzZW5hIix5eToiJWQgc25pIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sODIyNjE6ZnVuY3Rpb24oV2UsemUs''@;'; put 'put ''VCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MTA0MSIsMjoiXHUxMDQyIiwzOiJcdTEwNDMiLDQ6Ilx1MTA0NCIsNToiXHUxMDQ1Iiw2OiJcdTEwNDYiLDc6Ilx1MTA0NyIsODoiXHUxMDQ4Iiw5OiJcdTEwNDkiLDA6Ilx1MTA0MCJ9LHY9eyJcdTEwNDEiOiIxIiwi''@;'; put 'put ''XHUxMDQyIjoiMiIsIlx1MTA0MyI6IjMiLCJcdTEwNDQiOiI0IiwiXHUxMDQ1IjoiNSIsIlx1MTA0NiI6IjYiLCJcdTEwNDciOiI3IiwiXHUxMDQ4IjoiOCIsIlx1MTA0OSI6IjkiLCJcdTEwNDAiOiIwIn07c2UuZGVmaW5lTG9jYWxlKCJteSIse21vbnRoczoiXHUxMDA3XHUxMDE0XHUxMDNh''@;'; put 'put ''XHUxMDE0XHUxMDFkXHUxMDJiXHUxMDFiXHUxMDJlX1x1MTAxNlx1MTAzMVx1MTAxNlx1MTAzMVx1MTAyY1x1MTAzYVx1MTAxZFx1MTAyYlx1MTAxYlx1MTAyZV9cdTEwMTlcdTEwMTBcdTEwM2FfXHUxMDI3XHUxMDE1XHUxMDNjXHUxMDJlX1x1MTAxOVx1MTAzMV9cdTEwMDdcdTEwM2RcdTEw''@;'; put 'put ''MTRcdTEwM2FfXHUxMDA3XHUxMDMwXHUxMDFjXHUxMDJkXHUxMDJmXHUxMDA0XHUxMDNhX1x1MTAxZVx1MTAzY1x1MTAwMlx1MTAyZlx1MTAxMFx1MTAzYV9cdTEwMDVcdTEwMDBcdTEwM2FcdTEwMTBcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmNfXHUxMDIxXHUxMDMxXHUxMDJjXHUxMDAwXHUx''@;'; put 'put ''MDNhXHUxMDEwXHUxMDJkXHUxMDJmXHUxMDE4XHUxMDJjX1x1MTAxNFx1MTAyZFx1MTAyZlx1MTAxZFx1MTAwNFx1MTAzYVx1MTAxOFx1MTAyY19cdTEwMTJcdTEwMmVcdTEwMDdcdTEwMDRcdTEwM2FcdTEwMThcdTEwMmMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MTAwN1x1MTAxNFx1''@;'; put 'put ''MTAzYV9cdTEwMTZcdTEwMzFfXHUxMDE5XHUxMDEwXHUxMDNhX1x1MTAxNVx1MTAzY1x1MTAyZV9cdTEwMTlcdTEwMzFfXHUxMDA3XHUxMDNkXHUxMDE0XHUxMDNhX1x1MTAxY1x1MTAyZFx1MTAyZlx1MTAwNFx1MTAzYV9cdTEwMWVcdTEwM2NfXHUxMDA1XHUxMDAwXHUxMDNhX1x1MTAyMVx1''@;'; put 'put ''MTAzMVx1MTAyY1x1MTAwMFx1MTAzYV9cdTEwMTRcdTEwMmRcdTEwMmZfXHUxMDEyXHUxMDJlIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTEwMTBcdTEwMTRcdTEwMDRcdTEwM2FcdTEwMzlcdTEwMDJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDEwXHUxMDE0XHUxMDA0XHUxMDNhXHUxMDM5XHUx''@;'; put 'put ''MDFjXHUxMDJjX1x1MTAyMVx1MTAwNFx1MTAzYVx1MTAzOVx1MTAwMlx1MTAyYl9cdTEwMTdcdTEwMmZcdTEwMTJcdTEwMzlcdTEwMTNcdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjXHUxMDFlXHUxMDE1XHUxMDEwXHUxMDMxXHUxMDM4X1x1MTAxZVx1MTAzMVx1MTAyY1x1''@;'; put 'put ''MTAwMFx1MTAzY1x1MTAyY19cdTEwMDVcdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUxMDE0XHUxMDNkXHUxMDMxX1x1MTAxY1x1MTAyY19cdTEwMDJcdTEwMmJfXHUxMDFmXHUxMDMwXHUxMDM4X1x1MTAwMFx1MTAzY1x1MTAyY19cdTEwMWVcdTEwMzFcdTEwMmNf''@;'; put 'put ''XHUxMDE0XHUxMDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDFjXHUxMDJjX1x1MTAwMlx1MTAyYl9cdTEwMWZcdTEwMzBcdTEwMzhfXHUxMDAwXHUxMDNjXHUxMDJjX1x1MTAxZVx1MTAzMVx1MTAyY19cdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiks''@;'; put 'put ''bG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTEwMWFcdTEwMTRcdTEw''@;'; put 'put ''MzEuXSBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbmV4dERheToiW1x1MTAxOVx1MTAxNFx1MTAwMFx1MTAzYVx1MTAxNlx1MTAzY1x1MTAxNFx1MTAzYV0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLG5leHRXZWVrOiJkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixsYXN0RGF5OiJb''@;'; put 'put ''XHUxMDE5XHUxMDE0XHUxMDMxLlx1MTAwMF0gTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLGxhc3RXZWVrOiJbXHUxMDE1XHUxMDNjXHUxMDJlXHUxMDM4XHUxMDAxXHUxMDMyXHUxMDM3XHUxMDFlXHUxMDMxXHUxMDJjXSBkZGRkIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTEwMWNcdTEwMmNcdTEwMTlcdTEwMGFcdTEwM2FcdTEwMzcgJXMgXHUxMDE5XHUxMDNlXHUxMDJjIixwYXN0OiJcdTEwMWNcdTEwM2RcdTEwMTRcdTEwM2FcdTEwMDFcdTEwMzJcdTEwMzdcdTEwMWVcdTEwMzFcdTEwMmMgJXMgXHUxMDAwIixz''@;'; put 'put ''OiJcdTEwMDVcdTEwMDBcdTEwMzlcdTEwMDBcdTEwMTRcdTEwM2EuXHUxMDIxXHUxMDE0XHUxMDBhXHUxMDNhXHUxMDM4XHUxMDA0XHUxMDFhXHUxMDNhIixzczoiJWQgXHUxMDA1XHUxMDAwXHUxMDM5XHUxMDAwXHUxMDE0XHUxMDM3XHUxMDNhIixtOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEw''@;'; put 'put ''MTlcdTEwMmRcdTEwMTRcdTEwMDVcdTEwM2EiLG1tOiIlZCBcdTEwMTlcdTEwMmRcdTEwMTRcdTEwMDVcdTEwM2EiLGg6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsaGg6IiVkIFx1MTAxNFx1MTAyY1x1MTAxYlx1MTAyZSIsZDoiXHUxMDEwXHUxMDA1XHUx''@;'; put 'put ''MDNhXHUxMDFiXHUxMDAwXHUxMDNhIixkZDoiJWQgXHUxMDFiXHUxMDAwXHUxMDNhIixNOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMWMiLE1NOiIlZCBcdTEwMWMiLHk6Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxNFx1MTAzZVx1MTAwNVx1MTAzYSIseXk6IiVkIFx1MTAxNFx1MTAzZVx1MTAw''@;'; put 'put ''NVx1MTAzYSJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1tcdTEwNDFcdTEwNDJcdTEwNDNcdTEwNDRcdTEwNDVcdTEwNDZcdTEwNDdcdTEwNDhcdTEwNDlcdTEwNDBdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihIKXty''@;'; put 'put ''ZXR1cm4gSC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEIpe3JldHVybiBrW0JdfSl9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDE1MjczOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgibmIiLHttb250aHM6Imph''@;'; put 'put ''bnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4i''@;'; put 'put ''LnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic1x4ZjhuZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sXHhmOHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic1x4ZjguX21hLl90aS5fb24uX3RvLl9mci5fbFx4ZjguIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzTWluOiJzXHhmOF9tYV90aV9vbl90b19mcl9sXHhmOCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBN''@;'; put 'put ''TU1NIFlZWVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGdceGU1''@;'; put 'put ''ciBrbC5dIExUIixsYXN0V2VlazoiW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsc3M6IiVkIHNla3VuZGVyIixtOiJldHQgbWludXR0IixtbToiJWQgbWlu''@;'; put 'put ''dXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZXIiLHc6ImVuIHVrZSIsd3c6IiVkIHVrZXIiLE06ImVuIG1ceGU1bmVkIixNTToiJWQgbVx4ZTVuZWRlciIseToiZXR0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBh''@;'; put 'put ''cnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMTk4NzQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MDk2NyIsMjoiXHUwOTY4IiwzOiJcdTA5NjkiLDQ6Ilx1MDk2YSIs''@;'; put 'put ''NToiXHUwOTZiIiw2OiJcdTA5NmMiLDc6Ilx1MDk2ZCIsODoiXHUwOTZlIiw5OiJcdTA5NmYiLDA6Ilx1MDk2NiJ9LHY9eyJcdTA5NjciOiIxIiwiXHUwOTY4IjoiMiIsIlx1MDk2OSI6IjMiLCJcdTA5NmEiOiI0IiwiXHUwOTZiIjoiNSIsIlx1MDk2YyI6IjYiLCJcdTA5NmQiOiI3IiwiXHUw''@;'; put 'put ''OTZlIjoiOCIsIlx1MDk2ZiI6IjkiLCJcdTA5NjYiOiIwIn07c2UuZGVmaW5lTG9jYWxlKCJuZSIse21vbnRoczoiXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2Vc''@;'; put 'put ''dTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmXHUwOTMyX1x1MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDFcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4X1x1MDkwNVx1MDkxN1x1MDkzN1x1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5NDdcdTA5''@;'; put 'put ''MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBfXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkyZFx1MDk0N1x1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5''@;'; put 'put ''MmVcdTA5NGRcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkyOC5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmLl9cdTA5''@;'; put 'put ''MmVcdTA5MDhfXHUwOTFjXHUwOTQxXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOC5fXHUwOTA1XHUwOTE3Ll9cdTA5MzhcdTA5NDdcdTA5MmFcdTA5NGRcdTA5MWYuX1x1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTJkXHUwOTQ3Ll9c''@;'; put 'put ''dTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDcuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkwNlx1MDkwN1x1MDkyNFx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3''@;'; put 'put ''XHUwOTMyXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2ZcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkzNlx1MDky''@;'; put 'put ''OFx1MDkzZlx1MDkyY1x1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5MDZcdTA5MDdcdTA5MjQuX1x1MDkzOFx1MDk0Ylx1MDkyZS5fXHUwOTJlXHUwOTE5XHUwOTRkXHUwOTE3XHUwOTMyLl9cdTA5MmNcdTA5NDFcdTA5MjcuX1x1MDkyY1x1MDkzZlx1MDkzOVx1''@;'; put 'put ''MDkzZi5fXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwLl9cdTA5MzZcdTA5MjhcdTA5M2YuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MDYuX1x1MDkzOFx1MDk0Yi5fXHUwOTJlXHUwOTAyLl9cdTA5MmNcdTA5NDEuX1x1MDkyY1x1MDkzZi5fXHUwOTM2XHUwOTQxLl9cdTA5''@;'; put 'put ''MzYuIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFcdTA5MTVcdTA5NGIgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExUUzoiQVx1MDkxNVx1MDk0YiBoOm1tOnNzIFx1MDkyY1x1MDkxY1x1MDk0NyIsTDoiREQvTU0vWVlZWSIsTEw6IkQg''@;'; put 'put ''TU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBXHUwOTE1XHUwOTRiIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3IixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQVx1MDkxNVx1MDk0YiBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJl''@;'; put 'put ''cGxhY2UoL1tcdTA5NjdcdTA5NjhcdTA5NjlcdTA5NmFcdTA5NmJcdTA5NmNcdTA5NmRcdTA5NmVcdTA5NmZcdTA5NjZdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KX0scG9zdGZvcm1hdDpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEIpe3JldHVybiBr''@;'; put 'put ''W0JdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZnxcdTA5MmNcdTA5M2ZcdTA5MzlcdTA5M2VcdTA5Mjh8XHUwOTI2XHUwOTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRifFx1MDkzOFx1MDkzZVx1MDkwMVx1MDkxZC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEgs''@;'; put 'put ''Qil7cmV0dXJuIDEyPT09SCYmKEg9MCksIlx1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZiI9PT1CP0g8ND9IOkgrMTI6Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI9PT1CP0g6Ilx1MDkyNlx1MDkzZlx1MDkwOVx1MDkwMVx1MDkzOFx1MDk0YiI9PT1CP0g+PTEwP0g6SCsxMjoiXHUw''@;'; put 'put ''OTM4XHUwOTNlXHUwOTAxXHUwOTFkIj09PUI/SCsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEgsQixMKXtyZXR1cm4gSDwzPyJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YiOkg8MTI/Ilx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOCI6SDwxNj8iXHUwOTI2XHUwOTNmXHUwOTA5''@;'; put 'put ''XHUwOTAxXHUwOTM4XHUwOTRiIjpIPDIwPyJcdTA5MzhcdTA5M2VcdTA5MDFcdTA5MWQiOiJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5M2YifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDkwNlx1MDkxY10gTFQiLG5leHREYXk6IltcdTA5MmRcdTA5NGJcdTA5MzJcdTA5M2ZdIExUIixuZXh0V2Vl''@;'; put 'put ''azoiW1x1MDkwNlx1MDkwOVx1MDkwMVx1MDkyNlx1MDk0Yl0gZGRkZFssXSBMVCIsbGFzdERheToiW1x1MDkzOVx1MDkzZlx1MDkxY1x1MDk0Yl0gTFQiLGxhc3RXZWVrOiJbXHUwOTE3XHUwOTBmXHUwOTE1XHUwOTRiXSBkZGRkWyxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7''@;'; put 'put ''ZnV0dXJlOiIlc1x1MDkyZVx1MDkzZSIscGFzdDoiJXMgXHUwOTA1XHUwOTE3XHUwOTNlXHUwOTIxXHUwOTNmIixzOiJcdTA5MTVcdTA5NDdcdTA5MzlcdTA5NDAgXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTIzIixzczoiJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTQ3XHUwOTIzXHUwOTRkXHUw''@;'; put 'put ''OTIxIixtOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3XHUwOTFmIixtbToiJWQgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTQ3XHUwOTFmIixoOiJcdTA5MGZcdTA5MTUgXHUwOTE4XHUwOTIzXHUwOTRkXHUwOTFmXHUwOTNlIixoaDoiJWQgXHUwOTE4XHUwOTIzXHUwOTRk''@;'; put 'put ''XHUwOTFmXHUwOTNlIixkOiJcdTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUwOTI4IixkZDoiJWQgXHUwOTI2XHUwOTNmXHUwOTI4IixNOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIixNTToiJWQgXHUwOTJlXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTNlIix5''@;'; put 'put ''OiJcdTA5MGZcdTA5MTUgXHUwOTJjXHUwOTMwXHUwOTRkXHUwOTM3Iix5eToiJWQgXHUwOTJjXHUwOTMwXHUwOTRkXHUwOTM3In0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sODE0ODQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9''@;'; put 'put ''Imphbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksdj0iamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksaGU9Wy9eamFuL2ksL15mZWIvaSwvXm1hYXJ0fG1y''@;'; put 'put ''dC4/JC9pLC9eYXByL2ksL15tZWkkL2ksL15qdW5baS5dPyQvaSwvXmp1bFtpLl0/JC9pLC9eYXVnL2ksL15zZXAvaSwvXm9rdC9pLC9ebm92L2ksL15kZWMvaV0sSD0vXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVy''@;'; put 'put ''fG5vdmVtYmVyfGRlY2VtYmVyfGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaTtzZS5kZWZpbmVMb2NhbGUoIm5sLWJlIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5p''@;'; put 'put ''X2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oTCxLKXtyZXR1cm4gTD8vLU1NTS0vLnRlc3QoSyk/dltMLm1vbnRoKCldOmtbTC5tb250aCgpXTprfSxtb250aHNSZWdleDpILG1vbnRoc1No''@;'; put 'put ''b3J0UmVnZXg6SCxtb250aHNTdHJpY3RSZWdleDovXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oamFuXC4/fGZlYlwuP3xtcnRc''@;'; put 'put ''Lj98YXByXC4/fG1laXxqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxtb250aHNQYXJzZTpoZSxsb25nTW9udGhzUGFyc2U6aGUsc2hvcnRNb250aHNQYXJzZTpoZSx3ZWVrZGF5czoiem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJk''@;'; put 'put ''YWdfdnJpamRhZ196YXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InpvX21hX2RpX3dvX2RvX3ZyX3phIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZv''@;'; put 'put ''cm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJb''@;'; put 'put ''bW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIs''@;'; put 'put ''czoiZWVuIHBhYXIgc2Vjb25kZW4iLHNzOiIlZCBzZWNvbmRlbiIsbToiXHhlOVx4ZTluIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6Ilx4ZTlceGU5biB1dXIiLGhoOiIlZCB1dXIiLGQ6Ilx4ZTlceGU5biBkYWciLGRkOiIlZCBkYWdlbiIsTToiXHhlOVx4ZTluIG1hYW5kIixNTToiJWQg''@;'; put 'put ''bWFhbmRlbiIseToiXHhlOVx4ZTluIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKEwpe3JldHVybiBMKygxPT09THx8OD09PUx8fEw+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19''@;'; put 'put ''KX0oVCgxNjY3NikpfSw1MTY2NzpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx2PSJqYW5fZmViX21ydF9hcHJfbWVp''@;'; put 'put ''X2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSxoZT1bL15qYW4vaSwvXmZlYi9pLC9ebWFhcnR8bXJ0Lj8kL2ksL15hcHIvaSwvXm1laSQvaSwvXmp1bltpLl0/JC9pLC9eanVsW2kuXT8kL2ksL15hdWcvaSwvXnNlcC9pLC9eb2t0L2ksL15ub3YvaSwvXmRlYy9pXSxI''@;'; put 'put ''PS9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9p''@;'; put 'put ''O3NlLmRlZmluZUxvY2FsZSgibmwiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihMLEspe3JldHVybiBM''@;'; put 'put ''Py8tTU1NLS8udGVzdChLKT92W0wubW9udGgoKV06a1tMLm1vbnRoKCldOmt9LG1vbnRoc1JlZ2V4OkgsbW9udGhzU2hvcnRSZWdleDpILG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9i''@;'; put 'put ''ZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG1vbnRoc1BhcnNlOmhlLGxvbmdNb250aHNQYXJzZTpoZSxz''@;'; put 'put ''aG9ydE1vbnRoc1BhcnNlOmhlLHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01p''@;'; put 'put ''bjoiem9fbWFfZGlfd29fZG9fdnJfemEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRk''@;'; put 'put ''ZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5leHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbZ2lzdGVyZW4gb21dIExUIixsYXN0V2VlazoiW2FmZ2Vsb3Blbl0gZGRkZCBbb21d''@;'; put 'put ''IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvdmVyICVzIixwYXN0OiIlcyBnZWxlZGVuIixzOiJlZW4gcGFhciBzZWNvbmRlbiIsc3M6IiVkIHNlY29uZGVuIixtOiJceGU5XHhlOW4gbWludXV0IixtbToiJWQgbWludXRlbiIsaDoiXHhlOVx4ZTluIHV1ciIsaGg6''@;'; put 'put ''IiVkIHV1ciIsZDoiXHhlOVx4ZTluIGRhZyIsZGQ6IiVkIGRhZ2VuIix3OiJceGU5XHhlOW4gd2VlayIsd3c6IiVkIHdla2VuIixNOiJceGU5XHhlOW4gbWFhbmQiLE1NOiIlZCBtYWFuZGVuIix5OiJceGU5XHhlOW4gamFhciIseXk6IiVkIGphYXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNl''@;'; put 'put ''Oi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oTCl7cmV0dXJuIEwrKDE9PT1MfHw4PT09THx8TD49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDE3MjYyOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3Qi''@;'; put 'put ''O3NlLmRlZmluZUxvY2FsZSgibm4iLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXJzX2Fwci5fbWFpX2p1''@;'; put 'put ''bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic3VuZGFnX21ceGU1bmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3UuX21ceGU1''@;'; put 'put ''Ll90eS5fb24uX3RvLl9mci5fbGF1LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbVx4ZTVfdHlfb25fdG9fZnJfbGEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExM''@;'; put 'put ''OiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJIGRhZyBrbG9ra2FdIExUIixuZXh0RGF5OiJbSSBtb3Jnb24ga2xva2thXSBMVCIsbmV4dFdlZWs6ImRk''@;'; put 'put ''ZGQgW2tsb2trYV0gTFQiLGxhc3REYXk6IltJIGdceGU1ciBrbG9ra2FdIExUIixsYXN0V2VlazoiW0ZceGY4cmVnXHhlNWFuZGVdIGRkZGQgW2tsb2trYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRhbiIsczoibm9rcmUgc2Vr''@;'; put 'put ''dW5kIixzczoiJWQgc2VrdW5kIixtOiJlaXQgbWludXR0IixtbToiJWQgbWludXR0IixoOiJlaW4gdGltZSIsaGg6IiVkIHRpbWFyIixkOiJlaW4gZGFnIixkZDoiJWQgZGFnYXIiLHc6ImVpIHZla2UiLHd3OiIlZCB2ZWtlciIsTToiZWluIG1ceGU1bmFkIixNTToiJWQgbVx4ZTVuYWRlciIs''@;'; put 'put ''eToiZWl0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMTk2Nzk6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2Uu''@;'; put 'put ''ZGVmaW5lTG9jYWxlKCJvYy1sbmMiLHttb250aHM6e3N0YW5kYWxvbmU6ImdlbmlceGU4cl9mZWJyaVx4ZThyX21hclx4ZTdfYWJyaWxfbWFpX2p1bmhfanVsaGV0X2Fnb3N0X3NldGVtYnJlX29jdFx4ZjJicmVfbm92ZW1icmVfZGVjZW1icmUiLnNwbGl0KCJfIiksZm9ybWF0OiJkZSBnZW5p''@;'; put 'put ''XHhlOHJfZGUgZmVicmlceGU4cl9kZSBtYXJceGU3X2QnYWJyaWxfZGUgbWFpX2RlIGp1bmhfZGUganVsaGV0X2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3RceGYyYnJlX2RlIG5vdmVtYnJlX2RlIGRlY2VtYnJlIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXHMpK01NTU0vfSxtb250''@;'; put 'put ''aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXJceGU3X2Fici5fbWFpX2p1bmhfanVsaC5fYWdvLl9zZXQuX29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWVuZ2VfZGlsdW5zX2RpbWFyc19kaW1ceGU4Y3Jlc19kaWpceGYydXNfZGl2ZW5k''@;'; put 'put ''cmVzX2Rpc3NhYnRlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRnLl9kbC5fZG0uX2RjLl9kai5fZHYuX2RzLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZGdfZGxfZG1fZGNfZGpfZHZfZHMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntM''@;'; put 'put ''VDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtkZV0gWVlZWSIsbGw6IkQgTU1NIFlZWVkiLExMTDoiRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbSIsbGxsOiJEIE1NTSBZWVlZLCBIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2FdIEg6''@;'; put 'put ''bW0iLGxsbGw6ImRkZCBEIE1NTSBZWVlZLCBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt1XHhlOGkgYV0gTFQiLG5leHREYXk6IltkZW1hbiBhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FdIExUIixsYXN0RGF5OiJbaVx4ZThyIGFdIExUIixsYXN0V2VlazoiZGRkZCBbcGFzc2F0IGFdIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkJ2FxdVx4ZWQgJXMiLHBhc3Q6ImZhICVzIixzOiJ1bmFzIHNlZ29uZGFzIixzczoiJWQgc2Vnb25kYXMiLG06InVuYSBtaW51dGEiLG1tOiIlZCBtaW51dGFzIixoOiJ1bmEgb3JhIixoaDoiJWQgb3JhcyIsZDoidW4gam9y''@;'; put 'put ''biIsZGQ6IiVkIGpvcm5zIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fFx4ZTh8YSkvLG9yZGluYWw6ZnVuY3Rpb24odixoZSl7dmFyIEg9MT09PXY/InIiOjI9PT12PyJuIjozPT09''@;'; put 'put ''dj8iciI6ND09PXY/InQiOiJceGU4IjtyZXR1cm4oInciPT09aGV8fCJXIj09PWhlKSYmKEg9ImEiKSx2K0h9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDk2ODMwOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXsxOiJcdTBhNjci''@;'; put 'put ''LDI6Ilx1MGE2OCIsMzoiXHUwYTY5Iiw0OiJcdTBhNmEiLDU6Ilx1MGE2YiIsNjoiXHUwYTZjIiw3OiJcdTBhNmQiLDg6Ilx1MGE2ZSIsOToiXHUwYTZmIiwwOiJcdTBhNjYifSx2PXsiXHUwYTY3IjoiMSIsIlx1MGE2OCI6IjIiLCJcdTBhNjkiOiIzIiwiXHUwYTZhIjoiNCIsIlx1MGE2YiI6''@;'; put 'put ''IjUiLCJcdTBhNmMiOiI2IiwiXHUwYTZkIjoiNyIsIlx1MGE2ZSI6IjgiLCJcdTBhNmYiOiI5IiwiXHUwYTY2IjoiMCJ9O3NlLmRlZmluZUxvY2FsZSgicGEtaW4iLHttb250aHM6Ilx1MGExY1x1MGEyOFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmJcdTBhM2NcdTBhMzBcdTBhMzVcdTBhMzBc''@;'; put 'put ''dTBhNDBfXHUwYTJlXHUwYTNlXHUwYTMwXHUwYTFhX1x1MGEwNVx1MGEyYVx1MGE0ZFx1MGEzMFx1MGE0OFx1MGEzMl9cdTBhMmVcdTBhMDhfXHUwYTFjXHUwYTQyXHUwYTI4X1x1MGExY1x1MGE0MVx1MGEzMlx1MGEzZVx1MGEwOF9cdTBhMDVcdTBhMTdcdTBhMzhcdTBhMjRfXHUwYTM4XHUw''@;'; put 'put ''YTI0XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEwNVx1MGExNVx1MGEyNFx1MGE0Mlx1MGEyY1x1MGEzMF9cdTBhMjhcdTBhMzVcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTI2XHUwYTM4XHUwYTcwXHUwYTJjXHUwYTMwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBhMWNcdTBhMjhcdTBhMzVc''@;'; put 'put ''dTBhMzBcdTBhNDBfXHUwYTJiXHUwYTNjXHUwYTMwXHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyZVx1MGEzZVx1MGEzMFx1MGExYV9cdTBhMDVcdTBhMmFcdTBhNGRcdTBhMzBcdTBhNDhcdTBhMzJfXHUwYTJlXHUwYTA4X1x1MGExY1x1MGE0Mlx1MGEyOF9cdTBhMWNcdTBhNDFcdTBhMzJcdTBh''@;'; put 'put ''M2VcdTBhMDhfXHUwYTA1XHUwYTE3XHUwYTM4XHUwYTI0X1x1MGEzOFx1MGEyNFx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMDVcdTBhMTVcdTBhMjRcdTBhNDJcdTBhMmNcdTBhMzBfXHUwYTI4XHUwYTM1XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEyNlx1MGEzOFx1MGE3MFx1MGEyY1x1MGEzMCIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwYTEwXHUwYTI0XHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEzOFx1MGE0Ylx1MGEyZVx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMmVcdTBhNzBcdTBhMTdcdTBhMzJcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTJjXHUwYTQxXHUwYTI3XHUwYTM1XHUwYTNlXHUw''@;'; put 'put ''YTMwX1x1MGEzNVx1MGE0MFx1MGEzMFx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhNDFcdTBhNzFcdTBhMTVcdTBhMzBcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTI4XHUwYTQwXHUwYTFhXHUwYTMwXHUwYTM1XHUwYTNlXHUwYTMwIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6Ilx1MGExMFx1MGEyNF9cdTBhMzhcdTBhNGJcdTBhMmVfXHUwYTJlXHUwYTcwXHUwYTE3XHUwYTMyX1x1MGEyY1x1MGE0MVx1MGEyN19cdTBhMzVcdTBhNDBcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTQxXHUwYTE1XHUwYTMwX1x1MGEzOFx1MGEzY1x1MGEyOFx1MGE0MCIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwYTEwXHUwYTI0X1x1MGEzOFx1MGE0Ylx1MGEyZV9cdTBhMmVcdTBhNzBcdTBhMTdcdTBhMzJfXHUwYTJjXHUwYTQxXHUwYTI3X1x1MGEzNVx1MGE0MFx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhNDFcdTBhMTVcdTBhMzBfXHUwYTM4XHUwYTNjXHUw''@;'; put 'put ''YTI4XHUwYTQwIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1MGEzNVx1MGExY1x1MGE0NyIsTFRTOiJBIGg6bW06c3MgXHUwYTM1XHUwYTFjXHUwYTQ3IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTBh''@;'; put 'put ''MzVcdTBhMWNcdTBhNDciLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwYTM1XHUwYTFjXHUwYTQ3In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBhMDVcdTBhMWNdIExUIixuZXh0RGF5OiJbXHUwYTE1XHUwYTMyXSBMVCIsbmV4dFdlZWs6IltcdTBhMDVcdTBhMTdcdTBhMzJc''@;'; put 'put ''dTBhM2VdIGRkZGQsIExUIixsYXN0RGF5OiJbXHUwYTE1XHUwYTMyXSBMVCIsbGFzdFdlZWs6IltcdTBhMmFcdTBhM2ZcdTBhMWJcdTBhMzJcdTBhNDddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBhMzVcdTBhM2ZcdTBhNzFcdTBhMWEiLHBh''@;'; put 'put ''c3Q6IiVzIFx1MGEyYVx1MGEzZlx1MGExYlx1MGEzMlx1MGE0NyIsczoiXHUwYTE1XHUwYTQxXHUwYTFkIFx1MGEzOFx1MGExNVx1MGEzZlx1MGE3MFx1MGExZiIsc3M6IiVkIFx1MGEzOFx1MGExNVx1MGEzZlx1MGE3MFx1MGExZiIsbToiXHUwYTA3XHUwYTE1IFx1MGEyZVx1MGEzZlx1MGE3''@;'; put 'put ''MFx1MGExZiIsbW06IiVkIFx1MGEyZVx1MGEzZlx1MGE3MFx1MGExZiIsaDoiXHUwYTA3XHUwYTcxXHUwYTE1IFx1MGExOFx1MGE3MFx1MGExZlx1MGEzZSIsaGg6IiVkIFx1MGExOFx1MGE3MFx1MGExZlx1MGE0NyIsZDoiXHUwYTA3XHUwYTcxXHUwYTE1IFx1MGEyNlx1MGEzZlx1MGEyOCIs''@;'; put 'put ''ZGQ6IiVkIFx1MGEyNlx1MGEzZlx1MGEyOCIsTToiXHUwYTA3XHUwYTcxXHUwYTE1IFx1MGEyZVx1MGEzOVx1MGE0MFx1MGEyOFx1MGEzZSIsTU06IiVkIFx1MGEyZVx1MGEzOVx1MGE0MFx1MGEyOFx1MGE0NyIseToiXHUwYTA3XHUwYTcxXHUwYTE1IFx1MGEzOFx1MGEzZVx1MGEzMiIseXk6''@;'; put 'put ''IiVkIFx1MGEzOFx1MGEzZVx1MGEzMiJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1tcdTBhNjdcdTBhNjhcdTBhNjlcdTBhNmFcdTBhNmJcdTBhNmNcdTBhNmRcdTBhNmVcdTBhNmZcdTBhNjZdL2csZnVuY3Rpb24oQil7cmV0dXJuIHZbQl19KX0scG9zdGZvcm1h''@;'; put 'put ''dDpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEIpe3JldHVybiBrW0JdfSl9LG1lcmlkaWVtUGFyc2U6L1x1MGEzMFx1MGEzZVx1MGEyNHxcdTBhMzhcdTBhMzVcdTBhNDdcdTBhMzB8XHUwYTI2XHUwYTQxXHUwYTJhXHUwYTM5XHUwYTNmXHUwYTMwfFx1MGEz''@;'; put 'put ''OFx1MGEzY1x1MGEzZVx1MGEyZS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKEgsQil7cmV0dXJuIDEyPT09SCYmKEg9MCksIlx1MGEzMFx1MGEzZVx1MGEyNCI9PT1CP0g8ND9IOkgrMTI6Ilx1MGEzOFx1MGEzNVx1MGE0N1x1MGEzMCI9PT1CP0g6Ilx1MGEyNlx1MGE0MVx1MGEyYVx1MGEzOVx1''@;'; put 'put ''MGEzZlx1MGEzMCI9PT1CP0g+PTEwP0g6SCsxMjoiXHUwYTM4XHUwYTNjXHUwYTNlXHUwYTJlIj09PUI/SCsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKEgsQixMKXtyZXR1cm4gSDw0PyJcdTBhMzBcdTBhM2VcdTBhMjQiOkg8MTA/Ilx1MGEzOFx1MGEzNVx1MGE0N1x1MGEzMCI6SDwx''@;'; put 'put ''Nz8iXHUwYTI2XHUwYTQxXHUwYTJhXHUwYTM5XHUwYTNmXHUwYTMwIjpIPDIwPyJcdTBhMzhcdTBhM2NcdTBhM2VcdTBhMmUiOiJcdTBhMzBcdTBhM2VcdTBhMjQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oVCgxNjY3NikpfSw5MzYxNjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2Up''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgaz0ic3R5Y3plXHUwMTQ0X2x1dHlfbWFyemVjX2t3aWVjaWVcdTAxNDRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllXHUwMTQ0X3dyemVzaWVcdTAxNDRfcGFcdTAxN2Fkemllcm5pa19saXN0b3BhZF9ncnVkemllXHUwMTQ0Ii5zcGxpdCgiXyIpLHY9InN0''@;'; put 'put ''eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBuaWFfd3J6ZVx1MDE1Ym5pYV9wYVx1MDE3YWR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYSIuc3BsaXQoIl8iKSxoZT1bL15zdHkvaSwvXmx1dC9pLC9ebWFyL2ksL15rd2kvaSwvXm1hai9pLC9e''@;'; put 'put ''Y3plL2ksL15saXAvaSwvXnNpZS9pLC9ed3J6L2ksL15wYVx1MDE3YS9pLC9ebGlzL2ksL15ncnUvaV07ZnVuY3Rpb24gSChLKXtyZXR1cm4gSyUxMDw1JiZLJTEwPjEmJn5+KEsvMTApJTEwIT0xfWZ1bmN0aW9uIEIoSyxKLEkpe3ZhciBSPUsrIiAiO3N3aXRjaChJKXtjYXNlInNzIjpyZXR1''@;'; put 'put ''cm4gUisoSChLKT8ic2VrdW5keSI6InNla3VuZCIpO2Nhc2UibSI6cmV0dXJuIEo/Im1pbnV0YSI6Im1pbnV0XHUwMTE5IjtjYXNlIm1tIjpyZXR1cm4gUisoSChLKT8ibWludXR5IjoibWludXQiKTtjYXNlImgiOnJldHVybiBKPyJnb2R6aW5hIjoiZ29kemluXHUwMTE5IjtjYXNlImhoIjpy''@;'; put 'put ''ZXR1cm4gUisoSChLKT8iZ29kemlueSI6ImdvZHppbiIpO2Nhc2Uid3ciOnJldHVybiBSKyhIKEspPyJ0eWdvZG5pZSI6InR5Z29kbmkiKTtjYXNlIk1NIjpyZXR1cm4gUisoSChLKT8ibWllc2lcdTAxMDVjZSI6Im1pZXNpXHUwMTE5Y3kiKTtjYXNlInl5IjpyZXR1cm4gUisoSChLKT8ibGF0''@;'; put 'put ''YSI6ImxhdCIpfX1zZS5kZWZpbmVMb2NhbGUoInBsIix7bW9udGhzOmZ1bmN0aW9uKEssSil7cmV0dXJuIEs/L0QgTU1NTS8udGVzdChKKT92W0subW9udGgoKV06a1tLLm1vbnRoKCldOmt9LG1vbnRoc1Nob3J0OiJzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYVx1MDE3''@;'; put 'put ''YV9saXNfZ3J1Ii5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlOmhlLGxvbmdNb250aHNQYXJzZTpoZSxzaG9ydE1vbnRoc1BhcnNlOmhlLHdlZWtkYXlzOiJuaWVkemllbGFfcG9uaWVkemlhXHUwMTQyZWtfd3RvcmVrX1x1MDE1YnJvZGFfY3p3YXJ0ZWtfcGlcdTAxMDV0ZWtfc29ib3RhIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5kel9wb25fd3RfXHUwMTVicl9jendfcHRfc29iIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJOZF9Qbl9XdF9cdTAxNWFyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1N''@;'; put 'put ''LllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0R6aVx1MDE1YiBvXSBMVCIsbmV4dERheToiW0p1dHJvIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRj''@;'; put 'put ''aCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIG5pZWR6aWVsXHUwMTE5IG9dIExUIjtjYXNlIDI6cmV0dXJuIltXZSB3dG9yZWsgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgXHUwMTVicm9kXHUwMTE5IG9dIExUIjtjYXNlIDY6cmV0dXJuIltXIHNvYm90XHUwMTE5IG9dIExUIjtkZWZh''@;'; put 'put ''dWx0OnJldHVybiJbV10gZGRkZCBbb10gTFQifX0sbGFzdERheToiW1djem9yYWogb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgemVzelx1MDE0Mlx1MDEwNSBuaWVkemllbFx1MDExOSBvXSBMVCI7Y2FzZSAzOnJldHVybiJb''@;'; put 'put ''VyB6ZXN6XHUwMTQyXHUwMTA1IFx1MDE1YnJvZFx1MDExOSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6XHUwMTQyXHUwMTA1IHNvYm90XHUwMTE5IG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6XHUwMTQyeV0gZGRkZCBbb10gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6IiVzIHRlbXUiLHM6ImtpbGthIHNla3VuZCIsc3M6QixtOkIsbW06QixoOkIsaGg6QixkOiIxIGR6aWVcdTAxNDQiLGRkOiIlZCBkbmkiLHc6InR5ZHppZVx1MDE0NCIsd3c6QixNOiJtaWVzaVx1MDEwNWMiLE1NOkIseToicm9rIix5eTpCfSxkYXlP''@;'; put 'put ''Zk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMzI3NTE6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJwdC1iciIse21vbnRoczoiamFu''@;'; put 'put ''ZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXJceGU3YS1mZWlyYV9xdWFydGEtZmVpcmFfcXVpbnRhLWZlaXJhX3NleHRhLWZlaXJhX3NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zXHhlMWIiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNNaW46ImRvXzJceGFhXzNceGFhXzRceGFhXzVceGFhXzZceGFhX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1N''@;'; put 'put ''TU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbXHhlMHNdIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW1x4ZTBzXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSBceGUwc10gTFQiLG5leHREYXk6IltBbWFuaFx4ZTMgXHhl''@;'; put 'put ''MHNdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMHNdIExUIixsYXN0RGF5OiJbT250ZW0gXHhlMHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IltceGRhbHRpbW9dIGRkZGQgW1x4ZTBzXSBMVCI6IltceGRhbHRpbWFdIGRk''@;'; put 'put ''ZGQgW1x4ZTBzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJoXHhlMSAlcyIsczoicG91Y29zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9y''@;'; put 'put ''YXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLE06InVtIG1ceGVhcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsaW52YWxpZERhdGU6IkRhdGEgaW52XHhlMWxpZGEi''@;'; put 'put ''fSl9KFQoMTY2NzYpKX0sNTUxMzg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJwdCIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyXHhlN29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0''@;'; put 'put ''dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1mZWlyYV9UZXJceGU3YS1mZWlyYV9RdWFydGEtZmVp''@;'; put 'put ''cmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1NceGUxYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9TXHhlMWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvXzJceGFhXzNceGFhXzRceGFhXzVceGFhXzZceGFhX1NceGUxIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVd''@;'; put 'put ''IE1NTU0gW2RlXSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIFx4ZTBzXSBMVCIsbmV4dERheToiW0FtYW5oXHhlMyBceGUwc10gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwc10gTFQiLGxhc3REYXk6IltPbnRlbSBceGUwc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW1x4ZGFsdGltb10gZGRkZCBbXHhlMHNdIExUIjoiW1x4ZGFsdGltYV0gZGRkZCBbXHhlMHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6ImhceGUxICVzIixzOiJzZWd1''@;'; put 'put ''bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIix3OiJ1bWEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW0gbVx4ZWFzIixNTToiJWQgbWVzZXMiLHk6''@;'; put 'put ''InVtIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwxNzk2ODpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5j''@;'; put 'put ''dGlvbiBrKGhlLEgsQil7dmFyIEs9IiAiO3JldHVybihoZSUxMDA+PTIwfHxoZT49MTAwJiZoZSUxMDA9PTApJiYoSz0iIGRlICIpLGhlK0sre3NzOiJzZWN1bmRlIixtbToibWludXRlIixoaDoib3JlIixkZDoiemlsZSIsd3c6InNcdTAxMDNwdFx1MDEwM21ceGUybmkiLE1NOiJsdW5pIix5''@;'; put 'put ''eToiYW5pIn1bQl19c2UuZGVmaW5lTG9jYWxlKCJybyIse21vbnRoczoiaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi''@;'; put 'put ''aWFuLl9mZWIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImR1bWluaWNcdTAxMDNfbHVuaV9tYXJcdTAyMWJpX21pZXJjdXJpX2pvaV92aW5lcmlfc1x4ZTJtYlx1MDEw''@;'; put 'put ''M3RcdTAxMDMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU1x4ZTJtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEdV9MdV9NYV9NaV9Kb19WaV9TXHhlMiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpz''@;'; put 'put ''cyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2F6aSBsYV0gTFQiLG5leHREYXk6IlttXHhlMmluZSBsYV0gTFQiLG5leHRXZWVrOiJkZGRkIFts''@;'; put 'put ''YV0gTFQiLGxhc3REYXk6IltpZXJpIGxhXSBMVCIsbGFzdFdlZWs6Iltmb3N0YV0gZGRkZCBbbGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwZXN0ZSAlcyIscGFzdDoiJXMgXHhlZW4gdXJtXHUwMTAzIixzOiJjXHhlMnRldmEgc2VjdW5kZSIsc3M6ayxtOiJ1''@;'; put 'put ''biBtaW51dCIsbW06ayxoOiJvIG9yXHUwMTAzIixoaDprLGQ6Im8gemkiLGRkOmssdzoibyBzXHUwMTAzcHRcdTAxMDNtXHhlMm5cdTAxMDMiLHd3OmssTToibyBsdW5cdTAxMDMiLE1NOmsseToidW4gYW4iLHl5Omt9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDgxODI4OmZ1''@;'; put 'put ''bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoQixMLEspe3JldHVybiJtIj09PUs/TD8iXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIjoiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDQzIjpCKyIgIitmdW5j''@;'; put 'put ''dGlvbiBrKEIsTCl7dmFyIEs9Qi5zcGxpdCgiXyIpO3JldHVybiBMJTEwPT0xJiZMJTEwMCE9MTE/S1swXTpMJTEwPj0yJiZMJTEwPD00JiYoTCUxMDA8MTB8fEwlMTAwPj0yMCk/S1sxXTpLWzJdfSh7c3M6TD8iXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDMwX1x1''@;'; put 'put ''MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Yl9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiOiJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NDNfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRi''@;'; put 'put ''X1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbW06TD8iXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQ0Yl9cdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDIiOiJcdTA0M2NcdTA0Mzhc''@;'; put 'put ''dTA0M2RcdTA0NDNcdTA0NDJcdTA0NDNfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDRiX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsaGg6Ilx1MDQ0N1x1MDQzMFx1MDQ0MV9cdTA0NDdcdTA0MzBcdTA0NDFcdTA0MzBfXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDNl''@;'; put 'put ''XHUwNDMyIixkZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ0Zl9cdTA0MzRcdTA0M2RcdTA0MzVcdTA0MzkiLHd3OiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDM4X1x1MDQz''@;'; put 'put ''ZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0YyIsTU06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nl9cdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0MzBfXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDM1XHUwNDMyIix5eToiXHUwNDMzXHUwNDNl''@;'; put 'put ''XHUwNDM0X1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzMF9cdTA0M2JcdTA0MzVcdTA0NDIifVtLXSwrQil9dmFyIGhlPVsvXlx1MDQ0Zlx1MDQzZFx1MDQzMi9pLC9eXHUwNDQ0XHUwNDM1XHUwNDMyL2ksL15cdTA0M2NcdTA0MzBcdTA0NDAvaSwvXlx1MDQzMFx1MDQzZlx1MDQ0MC9pLC9eXHUw''@;'; put 'put ''NDNjXHUwNDMwW1x1MDQzOVx1MDQ0Zl0vaSwvXlx1MDQzOFx1MDQ0ZVx1MDQzZC9pLC9eXHUwNDM4XHUwNDRlXHUwNDNiL2ksL15cdTA0MzBcdTA0MzJcdTA0MzMvaSwvXlx1MDQ0MVx1MDQzNVx1MDQzZC9pLC9eXHUwNDNlXHUwNDNhXHUwNDQyL2ksL15cdTA0M2RcdTA0M2VcdTA0NGYvaSwv''@;'; put 'put ''Xlx1MDQzNFx1MDQzNVx1MDQzYS9pXTtzZS5kZWZpbmVMb2NhbGUoInJ1Iix7bW9udGhzOntmb3JtYXQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Zl9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0NGZfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQy''@;'; put 'put ''XHUwNDMwX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQ0Zl9cdTA0M2NcdTA0MzBcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Zl9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzBfXHUwNDQxXHUw''@;'; put 'put ''NDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRmX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Zl9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDRmIi5z''@;'; put 'put ''cGxpdCgiXyIpLHN0YW5kYWxvbmU6Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Y19cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0NGNfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQ0Y19c''@;'; put 'put ''dTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZVx1MDQz''@;'; put 'put ''YVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDRjIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDp7Zm9ybWF0OiJcdTA0NGZcdTA0M2RcdTA0MzIu''@;'; put 'put ''X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDQwLl9cdTA0MzBcdTA0M2ZcdTA0NDAuX1x1MDQzY1x1MDQzMFx1MDQ0Zl9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRmX1x1MDQzMFx1MDQzMlx1MDQzMy5fXHUwNDQxXHUw''@;'; put 'put ''NDM1XHUwNDNkXHUwNDQyLl9cdTA0M2VcdTA0M2FcdTA0NDIuX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMS5fXHUwNDM0XHUwNDM1XHUwNDNhLiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NGZcdTA0M2RcdTA0MzIuX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MC5fXHUwNDNjXHUwNDMw''@;'; put 'put ''XHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Y19cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGNfXHUwNDMwXHUwNDMyXHUwNDMzLl9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDIuX1x1MDQzZVx1MDQzYVx1MDQ0''@;'; put 'put ''Mi5fXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxLl9cdTA0MzRcdTA0MzVcdTA0M2EuIi5zcGxpdCgiXyIpfSx3ZWVrZGF5czp7c3RhbmRhbG9uZToiXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDNhXHUwNDQwXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDRjXHUwNDM1X1x1MDQzZlx1MDQzZVx1''@;'; put 'put ''MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0Y1x1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MFx1''@;'; put 'put ''MDQzM19cdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0MzBfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLGZvcm1hdDoiXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDNhXHUwNDQwXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDNk''@;'; put 'put ''XHUwNDRjXHUwNDM1X1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0Y1x1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzX1x1MDQ0N1x1MDQz''@;'; put 'put ''NVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzM19cdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0NDNfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9cWyA/W1x1MDQxMlx1MDQzMl0gPyg/Olx1''@;'; put 'put ''MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQ0M1x1MDQ0ZXxcdTA0NDFcdTA0M2JcdTA0MzVcdTA0MzRcdTA0NDNcdTA0NGVcdTA0NDlcdTA0NDNcdTA0NGV8XHUwNDRkXHUwNDQyXHUwNDQzKT8gP10gP2RkZGQvfSx3ZWVrZGF5c1Nob3J0OiJcdTA0MzJcdTA0NDFfXHUwNDNmXHUw''@;'; put 'put ''NDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFcdTA0MzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzMlx1MDQ0MV9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNm''@;'; put 'put ''XHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZTpoZSxsb25nTW9udGhzUGFyc2U6aGUsc2hvcnRNb250aHNQYXJzZTpoZSxtb250aHNSZWdleDovXihcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NGZcdTA0M2RcdTA0MzJc''@;'; put 'put ''Lj98XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwP1wuP3xcdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzA/fFx1MDQzY1x1MDQzMFx1MDQ0MFwuP3xcdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0''@;'; put 'put ''M2JbXHUwNDRjXHUwNDRmXXxcdTA0MzBcdTA0M2ZcdTA0NDBcLj98XHUwNDNjXHUwNDMwW1x1MDQzOVx1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNkXC4/fFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzOFx1MDQ0''@;'; put 'put ''ZVx1MDQzYlwuP3xcdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzA/fFx1MDQzMFx1MDQzMlx1MDQzM1wuP3xcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDI/XC4/fFx1''@;'; put 'put ''MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzZVx1MDQzYVx1MDQ0MlwuP3xcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzE/XC4/fFx1MDQzNFx1MDQzNVx1MDQzYVx1''@;'; put 'put ''MDQzMFx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzNFx1MDQzNVx1MDQzYVwuPykvaSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0Zlx1MDQzZFx1MDQzMlwuP3xcdTA0NDRcdTA0MzVcdTA0MzJcdTA0''@;'; put 'put ''NDBcdTA0MzBcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDA/XC4/fFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzMD98XHUwNDNjXHUwNDMwXHUwNDQwXC4/fFx1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzMFx1''@;'; put 'put ''MDQzZlx1MDQ0MFwuP3xcdTA0M2NcdTA0MzBbXHUwNDM5XHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RcLj98XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNiXC4/fFx1MDQzMFx1MDQzMlx1''@;'; put 'put ''MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzMD98XHUwNDMwXHUwNDMyXHUwNDMzXC4/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLj98XHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUw''@;'; put 'put ''NDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNlXHUwNDNhXHUwNDQyXC4/fFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMT9cLj98XHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1''@;'; put 'put ''MDQ0Zl18XHUwNDM0XHUwNDM1XHUwNDNhXC4/KS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYltcdTA0NGZcdTA0NGNdfFx1MDQzY1x1MDQzMFx1MDQ0''@;'; put 'put ''MFx1MDQ0Mlx1MDQzMD98XHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDNjXHUwNDMwW1x1MDQ0Zlx1MDQzOV18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Zlx1MDQ0Y118XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDMwXHUwNDMy''@;'; put 'put ''XHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDMwP3xcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFc''@;'; put 'put ''dTA0NDBbXHUwNDRmXHUwNDRjXXxcdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBbXHUwNDRmXHUwNDRjXSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKFx1MDQ0Zlx1MDQzZFx1MDQzMlwufFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MD9cLnxcdTA0M2NcdTA0MzBcdTA0''@;'; put 'put ''NDBbXHUwNDQyLl18XHUwNDMwXHUwNDNmXHUwNDQwXC58XHUwNDNjXHUwNDMwW1x1MDQ0Zlx1MDQzOV18XHUwNDM4XHUwNDRlXHUwNDNkW1x1MDQ0Y1x1MDQ0Zi5dfFx1MDQzOFx1MDQ0ZVx1MDQzYltcdTA0NGNcdTA0NGYuXXxcdTA0MzBcdTA0MzJcdTA0MzNcLnxcdTA0NDFcdTA0MzVcdTA0''@;'; put 'put ''M2RcdTA0NDI/XC58XHUwNDNlXHUwNDNhXHUwNDQyXC58XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxP1wufFx1MDQzNFx1MDQzNVx1MDQzYVwuKS9pLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkgXHUwNDMzLiIs''@;'; put 'put ''TExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuLCBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0MzMuLCBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MjFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0MzRcdTA0M2RcdTA0NGYsIFx1MDQzMl0gTFQiLG5leHREYXk6IltcdTA0MTdc''@;'; put 'put ''dTA0MzBcdTA0MzJcdTA0NDJcdTA0NDBcdTA0MzAsIFx1MDQzMl0gTFQiLGxhc3REYXk6IltcdTA0MTJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAsIFx1MDQzMl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKEIpe2lmKEIud2VlaygpPT09dGhpcy53ZWVrKCkpcmV0dXJuIDI9PT10aGlzLmRheSgp''@;'; put 'put ''PyJbXHUwNDEyXHUwNDNlXSBkZGRkLCBbXHUwNDMyXSBMVCI6IltcdTA0MTJdIGRkZGQsIFtcdTA0MzJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDEyIFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQzNVx1MDQzNV0gZGRk''@;'; put 'put ''ZCwgW1x1MDQzMl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJbXHUwNDEyIFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQzOFx1MDQzOV0gZGRkZCwgW1x1MDQzMl0gTFQiO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJbXHUwNDEyIFx1''@;'; put 'put ''MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQ0M1x1MDQ0ZV0gZGRkZCwgW1x1MDQzMl0gTFQifX0sbGFzdFdlZWs6ZnVuY3Rpb24oQil7aWYoQi53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IltcdTA0MTJcdTA0M2VdIGRkZGQs''@;'; put 'put ''IFtcdTA0MzJdIExUIjoiW1x1MDQxMl0gZGRkZCwgW1x1MDQzMl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltcdTA0MTIgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDM1XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNl''@;'; put 'put ''IDQ6cmV0dXJuIltcdTA0MTIgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDRiXHUwNDM5XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIltcdTA0MTIgXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDQzXHUwNDRlXSBkZGRk''@;'; put 'put ''LCBbXHUwNDMyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzcgJXMiLHBhc3Q6IiVzIFx1MDQzZFx1MDQzMFx1MDQzN1x1MDQzMFx1MDQzNCIsczoiXHUwNDNkXHUwNDM1XHUwNDQxXHUwNDNhXHUwNDNlXHUw''@;'; put 'put ''NDNiXHUwNDRjXHUwNDNhXHUwNDNlIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6dixtOnYsbW06dixoOiJcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOnYsZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjIixkZDp2LHc6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1''@;'; put 'put ''MDQzYlx1MDQ0ZiIsd3c6dixNOiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDYiLE1NOnYseToiXHUwNDMzXHUwNDNlXHUwNDM0Iix5eTp2fSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0M2VcdTA0NDdcdTA0Mzh8XHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwfFx1MDQzNFx1MDQzZFx1''@;'; put 'put ''MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAvaSxpc1BNOmZ1bmN0aW9uKEIpe3JldHVybi9eKFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzApJC8udGVzdChCKX0sbWVyaWRpZW06ZnVuY3Rpb24oQixMLEspe3Jl''@;'; put 'put ''dHVybiBCPDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQzOCI6QjwxMj8iXHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwIjpCPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9''@;'; put 'put ''LShcdTA0Mzl8XHUwNDMzXHUwNDNlfFx1MDQ0ZikvLG9yZGluYWw6ZnVuY3Rpb24oQixMKXtzd2l0Y2goTCl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gQisiLVx1MDQzOSI7Y2FzZSJEIjpyZXR1cm4gQisiLVx1MDQzM1x1MDQzZSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBC''@;'; put 'put ''KyItXHUwNDRmIjtkZWZhdWx0OnJldHVybiBCfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNjIxODg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9WyJcdTA2MmNcdTA2NDZcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDFcdTA2''@;'; put 'put ''NGFcdTA2MjhcdTA2MzFcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2ODYiLCJcdTA2MjdcdTA2N2VcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjZcdTA2NGEiLCJcdTA2MmNcdTA2NDhcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NDRcdTA2MjdcdTA2''@;'; put 'put ''MjFcdTA2NTAiLCJcdTA2MjJcdTA2YWZcdTA2MzNcdTA2N2QiLCJcdTA2MzNcdTA2NGFcdTA2N2VcdTA2N2RcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjJcdTA2YWFcdTA2N2RcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2OGFcdTA2''@;'; put 'put ''MzNcdTA2NDVcdTA2MjhcdTA2MzEiXSx2PVsiXHUwNjIyXHUwNjg2XHUwNjMxIiwiXHUwNjMzXHUwNjQ4XHUwNjQ1XHUwNjMxIiwiXHUwNjI3XHUwNmIxXHUwNjI3XHUwNjMxXHUwNjQ4IiwiXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5IiwiXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzIiwiXHUw''@;'; put 'put ''NjJjXHUwNjQ1XHUwNjM5IiwiXHUwNjg3XHUwNjQ2XHUwNjg3XHUwNjMxIl07c2UuZGVmaW5lTG9jYWxlKCJzZCIse21vbnRoczprLG1vbnRoc1Nob3J0Omssd2Vla2RheXM6dix3ZWVrZGF5c1Nob3J0OnYsd2Vla2RheXNNaW46dixsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhI''@;'; put 'put ''Om1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0''@;'; put 'put ''aW9uKEgpe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2NDUiPT09SH0sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY4NF0gTFQiLG5leHREYXk6''@;'; put 'put ''IltcdTA2MzNcdTA2ODBcdTA2MjdcdTA2YmJcdTA2NGFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjI3XHUwNmIzXHUwNjRhXHUwNjQ2IFx1MDY0N1x1MDY0MVx1MDYyYVx1MDY0YSBcdTA2MmFcdTA2NGFdIExUIixsYXN0RGF5OiJbXHUwNmFhXHUwNjI3XHUwNjQ0XHUwNjQ3XHUwNjQ3XSBM''@;'; put 'put ''VCIsbGFzdFdlZWs6IltcdTA2YWZcdTA2MzJcdTA2MzFcdTA2NGFcdTA2NDQgXHUwNjQ3XHUwNjQxXHUwNjJhXHUwNjRhXSBkZGRkIFtcdTA2MmFcdTA2NGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2N2VcdTA2NDhcdTA2MjEiLHBhc3Q6IiVzIFx1''@;'; put 'put ''MDYyN1x1MDZiMyIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsc3M6IiVkIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsbToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsbW06IiVkIFx1MDY0NVx1MDY0Nlx1MDY3''@;'; put 'put ''ZCIsaDoiXHUwNjQ3XHUwNmFhIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsaGg6IiVkIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsZDoiXHUwNjQ3XHUwNmFhIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsZGQ6IiVkIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIs''@;'; put 'put ''TToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDY0OCIsTU06IiVkIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDYyNyIseToiXHUwNjQ3XHUwNmFhIFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0''@;'; put 'put ''aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sNjU2MjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2Up''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInNlIix7bW9udGhzOiJvXHUwMTExXHUwMTExYWphZ2VtXHhlMW5udV9ndW92dmFtXHhlMW5udV9uanVrXHUwMTBkYW1ceGUxbm51X2N1b1x1MDE0Ym9tXHhlMW5udV9taWVzc2VtXHhlMW5udV9nZWFzc2VtXHhlMW5udV9zdW9pZG5lbVx4''@;'; put 'put ''ZTFubnVfYm9yZ2VtXHhlMW5udV9cdTAxMGRha1x1MDEwZGFtXHhlMW5udV9nb2xnZ290bVx4ZTFubnVfc2tceGUxYm1hbVx4ZTFubnVfanVvdmxhbVx4ZTFubnUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Im9cdTAxMTFcdTAxMTFqX2d1b3Zfbmp1a19jdW9fbWllc19nZWFzX3N1b2lfYm9y''@;'; put 'put ''Z19cdTAxMGRha1x1MDEwZF9nb2xnX3NrXHhlMWJfanVvdiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic290bmFiZWFpdmlfdnVvc3NceGUxcmdhX21hXHUwMTRiXHUwMTRiZWJceGUxcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbFx4ZTF2dmFyZGF0Ii5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6InNvdG5fdnVvc19tYVx1MDE0Yl9nYXNrX2R1b3JfYmVhcl9sXHhlMXYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNfdl9tX2dfZF9iX0wiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6''@;'; put 'put ''Ik1NTU0gRC4gW2IuXSBZWVlZIixMTEw6Ik1NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tIixMTExMOiJkZGRkLCBNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbb3RuZSB0aV0gTFQiLG5leHREYXk6IltpaHR0aW4gdGldIExUIixuZXh0V2Vl''@;'; put 'put ''azoiZGRkZCBbdGldIExUIixsYXN0RGF5OiJbaWt0ZSB0aV0gTFQiLGxhc3RXZWVrOiJbb3ZkZGl0XSBkZGRkIFt0aV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGdlYVx1MDE3ZWVzIixwYXN0OiJtYVx1MDE0Yml0ICVzIixzOiJtb2FkZGUgc2VrdW5kZGF0''@;'; put 'put ''IixzczoiJWQgc2VrdW5kZGF0IixtOiJva3RhIG1pbnVodGEiLG1tOiIlZCBtaW51aHRhdCIsaDoib2t0YSBkaWltbXUiLGhoOiIlZCBkaWltbXV0IixkOiJva3RhIGJlYWl2aSIsZGQ6IiVkIGJlYWl2dml0IixNOiJva3RhIG1ceGUxbm51IixNTToiJWQgbVx4ZTFudXQiLHk6Im9rdGEgamFo''@;'; put 'put ''a2kiLHl5OiIlZCBqYWdpdCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw4NzE3MjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2Nh''@;'; put 'put ''bGUoInNpIix7bW9udGhzOiJcdTBkYTJcdTBkYjFcdTBkYzBcdTBkY2ZcdTBkYmJcdTBkZDJfXHUwZGI0XHUwZGQ5XHUwZGI2XHUwZGJiXHUwZGMwXHUwZGNmXHUwZGJiXHUwZGQyX1x1MGRiOFx1MGRjZlx1MGRiYlx1MGRjYVx1MGRhZFx1MGRkNF9cdTBkODVcdTBkYjRcdTBkY2FcdTIwMGRc''@;'; put 'put ''dTBkYmJcdTBkZGFcdTBkYmRcdTBkY2FfXHUwZGI4XHUwZGQwXHUwZGJhXHUwZGQyX1x1MGRhMlx1MGRkNlx1MGRiMVx1MGRkMl9cdTBkYTJcdTBkZDZcdTBkYmRcdTBkZDJfXHUwZDg1XHUwZDljXHUwZGRkXHUwZGMzXHUwZGNhXHUwZGFkXHUwZGQ0X1x1MGRjM1x1MGRkMFx1MGRiNFx1MGRj''@;'; put 'put ''YVx1MGRhZFx1MGRkMFx1MGRiOFx1MGRjYVx1MGRiNlx1MGRiYlx1MGRjYV9cdTBkOTRcdTBkOWFcdTBkY2FcdTBkYWRcdTBkZGRcdTBkYjZcdTBkYmJcdTBkY2FfXHUwZGIxXHUwZGRjXHUwZGMwXHUwZGQwXHUwZGI4XHUwZGNhXHUwZGI2XHUwZGJiXHUwZGNhX1x1MGRhZlx1MGRkOVx1MGRj''@;'; put 'put ''M1x1MGRkMFx1MGRiOFx1MGRjYVx1MGRiNlx1MGRiYlx1MGRjYSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZGEyXHUwZGIxX1x1MGRiNFx1MGRkOVx1MGRiNl9cdTBkYjhcdTBkY2ZcdTBkYmJcdTBkY2FfXHUwZDg1XHUwZGI0XHUwZGNhX1x1MGRiOFx1MGRkMFx1MGRiYVx1MGRkMl9c''@;'; put 'put ''dTBkYTJcdTBkZDZcdTBkYjFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGJkXHUwZGQyX1x1MGQ4NVx1MGQ5Y1x1MGRkZF9cdTBkYzNcdTBkZDBcdTBkYjRcdTBkY2FfXHUwZDk0XHUwZDlhXHUwZGNhX1x1MGRiMVx1MGRkY1x1MGRjMFx1MGRkMF9cdTBkYWZcdTBkZDlcdTBkYzNcdTBkZDAiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6Ilx1MGQ4OVx1MGRiYlx1MGRkMlx1MGRhZlx1MGRjZl9cdTBkYzNcdTBkYjNcdTBkZDRcdTBkYWZcdTBkY2ZfXHUwZDg1XHUwZDlmXHUwZGM0XHUwZGJiXHUwZGQ0XHUwZGMwXHUwZGNmXHUwZGFmXHUwZGNmX1x1MGRiNlx1MGRhZlx1MGRjZlx1MGRhZlx1MGRj''@;'; put 'put ''Zl9cdTBkYjZcdTBkY2FcdTIwMGRcdTBkYmJcdTBkYzRcdTBkYzNcdTBkY2FcdTBkYjRcdTBkYWRcdTBkZDJcdTBkYjFcdTBkY2FcdTBkYWZcdTBkY2ZfXHUwZGMzXHUwZGQyXHUwZDlhXHUwZGQ0XHUwZGJiXHUwZGNmXHUwZGFmXHUwZGNmX1x1MGRjM1x1MGRkOVx1MGRiMVx1MGRjM1x1MGRk''@;'; put 'put ''NFx1MGRiYlx1MGRjZlx1MGRhZlx1MGRjZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBkODlcdTBkYmJcdTBkZDJfXHUwZGMzXHUwZGIzXHUwZGQ0X1x1MGQ4NVx1MGQ5Zl9cdTBkYjZcdTBkYWZcdTBkY2ZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGM0X1x1MGRjM1x1MGRk''@;'; put 'put ''Mlx1MGQ5YVx1MGRkNF9cdTBkYzNcdTBkZDlcdTBkYjEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGQ4OV9cdTBkYzNfXHUwZDg1X1x1MGRiNl9cdTBkYjZcdTBkY2FcdTIwMGRcdTBkYmJfXHUwZGMzXHUwZGQyX1x1MGRjM1x1MGRkOSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhh''@;'; put 'put ''Y3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJhIGg6bW0iLExUUzoiYSBoOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWSBNTU1NIEQiLExMTDoiWVlZWSBNTU1NIEQsIGEgaDptbSIsTExMTDoiWVlZWSBNTU1NIEQgW1x1MGRjMFx1MGRkMFx1MGRiMVx1MGRkMl0gZGRkZCwgYSBoOm1t''@;'; put 'put ''OnNzIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBkODVcdTBkYWZdIExUW1x1MGRhN10iLG5leHREYXk6IltcdTBkYzRcdTBkZDlcdTBkYTddIExUW1x1MGRhN10iLG5leHRXZWVrOiJkZGRkIExUW1x1MGRhN10iLGxhc3REYXk6IltcdTBkOGFcdTBkYmFcdTBkZGFdIExUW1x1MGRhN10iLGxh''@;'; put 'put ''c3RXZWVrOiJbXHUwZGI0XHUwZGMzXHUwZGQ0XHUwZDljXHUwZGQyXHUwZGJhXSBkZGRkIExUW1x1MGRhN10iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwZDlhXHUwZGQyXHUwZGIxXHUwZGNhIixwYXN0OiIlc1x1MGQ5YVx1MGRhNyBcdTBkYjRcdTBkZDlcdTBk''@;'; put 'put ''YmIiLHM6Ilx1MGRhZFx1MGRhZFx1MGRjYVx1MGRiNFx1MGRiYiBcdTBkOWFcdTBkZDJcdTBkYzRcdTBkZDJcdTBkYjRcdTBkYmEiLHNzOiJcdTBkYWRcdTBkYWRcdTBkY2FcdTBkYjRcdTBkYmIgJWQiLG06Ilx1MGRiOFx1MGRkMlx1MGRiMVx1MGRkMlx1MGRhZFx1MGRjYVx1MGRhZFx1MGRk''@;'; put 'put ''NFx1MGRjMCIsbW06Ilx1MGRiOFx1MGRkMlx1MGRiMVx1MGRkMlx1MGRhZFx1MGRjYVx1MGRhZFx1MGRkNCAlZCIsaDoiXHUwZGI0XHUwZGQwXHUwZGJhIixoaDoiXHUwZGI0XHUwZGQwXHUwZGJhICVkIixkOiJcdTBkYWZcdTBkZDJcdTBkYjFcdTBkYmEiLGRkOiJcdTBkYWZcdTBkZDJcdTBk''@;'; put 'put ''YjEgJWQiLE06Ilx1MGRiOFx1MGRjZlx1MGRjM1x1MGRiYSIsTU06Ilx1MGRiOFx1MGRjZlx1MGRjMyAlZCIseToiXHUwZGMwXHUwZGMzXHUwZGJiIix5eToiXHUwZGMwXHUwZGMzXHUwZGJiICVkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSBcdTBkYzBcdTBkZDBcdTBkYjFc''@;'; put 'put ''dTBkZDIvLG9yZGluYWw6ZnVuY3Rpb24odil7cmV0dXJuIHYrIiBcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDIifSxtZXJpZGllbVBhcnNlOi9cdTBkYjRcdTBkZDlcdTBkYmIgXHUwZGMwXHUwZGJiXHUwZGQ0fFx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDR8XHUwZGI0XHUw''@;'; put 'put ''ZGQ5Llx1MGRjMHxcdTBkYjQuXHUwZGMwLi8saXNQTTpmdW5jdGlvbih2KXtyZXR1cm4iXHUwZGI0Llx1MGRjMC4iPT09dnx8Ilx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDQiPT09dn0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdj4xMT9IPyJcdTBkYjQu''@;'; put 'put ''XHUwZGMwLiI6Ilx1MGRiNFx1MGRjM1x1MGRjYSBcdTBkYzBcdTBkYmJcdTBkZDQiOkg/Ilx1MGRiNFx1MGRkOS5cdTBkYzAuIjoiXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRiYlx1MGRkNCJ9fSl9KFQoMTY2NzYpKX0sOTk5NjY6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNl''@;'; put 'put ''KXsidXNlIHN0cmljdCI7dmFyIGs9ImphbnVceGUxcl9mZWJydVx4ZTFyX21hcmVjX2Fwclx4ZWRsX21ceGUxal9qXHhmYW5falx4ZmFsX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0XHhmM2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSx2PSJqYW5fZmViX21hcl9hcHJfbVx4ZTFqX2pc''@;'; put 'put ''eGZhbl9qXHhmYWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKTtmdW5jdGlvbiBoZShMKXtyZXR1cm4gTD4xJiZMPDV9ZnVuY3Rpb24gSChMLEssSixJKXt2YXIgUj1MKyIgIjtzd2l0Y2goSil7Y2FzZSJzIjpyZXR1cm4gS3x8ST8icFx4ZTFyIHNla1x4ZmFuZCI6InBceGUxciBz''@;'; put 'put ''ZWt1bmRhbWkiO2Nhc2Uic3MiOnJldHVybiBLfHxJP1IrKGhlKEwpPyJzZWt1bmR5Ijoic2VrXHhmYW5kIik6Uisic2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBLPyJtaW5ceGZhdGEiOkk/Im1pblx4ZmF0dSI6Im1pblx4ZmF0b3UiO2Nhc2UibW0iOnJldHVybiBLfHxJP1IrKGhlKEwpPyJt''@;'; put 'put ''aW5ceGZhdHkiOiJtaW5ceGZhdCIpOlIrIm1pblx4ZmF0YW1pIjtjYXNlImgiOnJldHVybiBLPyJob2RpbmEiOkk/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBLfHxJP1IrKGhlKEwpPyJob2RpbnkiOiJob2RceGVkbiIpOlIrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBL''@;'; put 'put ''fHxJPyJkZVx1MDE0OCI6ImRcdTAxNDhvbSI7Y2FzZSJkZCI6cmV0dXJuIEt8fEk/UisoaGUoTCk/ImRuaSI6ImRuXHhlZCIpOlIrImRcdTAxNDhhbWkiO2Nhc2UiTSI6cmV0dXJuIEt8fEk/Im1lc2lhYyI6Im1lc2lhY29tIjtjYXNlIk1NIjpyZXR1cm4gS3x8ST9SKyhoZShMKT8ibWVzaWFj''@;'; put 'put ''ZSI6Im1lc2lhY292Iik6UisibWVzaWFjbWkiO2Nhc2UieSI6cmV0dXJuIEt8fEk/InJvayI6InJva29tIjtjYXNlInl5IjpyZXR1cm4gS3x8ST9SKyhoZShMKT8icm9reSI6InJva292Iik6Uisicm9rbWkifX1zZS5kZWZpbmVMb2NhbGUoInNrIix7bW9udGhzOmssbW9udGhzU2hvcnQ6dix3''@;'; put 'put ''ZWVrZGF5czoibmVkZVx1MDEzZWFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV9cdTAxNjF0dnJ0b2tfcGlhdG9rX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb191dF9zdF9cdTAxNjF0X3BpX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zdF9cdTAx''@;'; put 'put ''NjF0X3BpX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltkbmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZGVcdTAxM2V1IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1''@;'; put 'put ''cm4iW3Ygc3RyZWR1IG9dIExUIjtjYXNlIDQ6cmV0dXJuIlt2byBcdTAxNjF0dnJ0b2sgb10gTFQiO2Nhc2UgNTpyZXR1cm4iW3YgcGlhdG9rIG9dIExUIjtjYXNlIDY6cmV0dXJuIlt2IHNvYm90dSBvXSBMVCJ9fSxsYXN0RGF5OiJbdlx1MDEwZGVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rp''@;'; put 'put ''b24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxceGZhIG5lZGVcdTAxM2V1IG9dIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bFx4ZmRdIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bFx4ZmEgc3RyZWR1IG9dIExU''@;'; put 'put ''IjtjYXNlIDY6cmV0dXJuIlttaW51bFx4ZmEgc29ib3R1IG9dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmVkICVzIixzOkgsc3M6SCxtOkgsbW06SCxoOkgsaGg6SCxkOkgsZGQ6SCxNOkgsTU06SCx5OkgseXk6SH0sZGF5T2ZNb250''@;'; put 'put ''aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDQyODc6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayhoZSxILEIsTCl7dmFyIEs9aGUrIiAiO3N3aXRjaChC''@;'; put 'put ''KXtjYXNlInMiOnJldHVybiBIfHxMPyJuZWthaiBzZWt1bmQiOiJuZWthaiBzZWt1bmRhbWkiO2Nhc2Uic3MiOnJldHVybiBLKygxPT09aGU/SD8ic2VrdW5kbyI6InNla3VuZGkiOjI9PT1oZT9IfHxMPyJzZWt1bmRpIjoic2VrdW5kYWgiOmhlPDU/SHx8TD8ic2VrdW5kZSI6InNla3VuZGFo''@;'; put 'put ''Ijoic2VrdW5kIik7Y2FzZSJtIjpyZXR1cm4gSD8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiBLKygxPT09aGU/SD8ibWludXRhIjoibWludXRvIjoyPT09aGU/SHx8TD8ibWludXRpIjoibWludXRhbWEiOmhlPDU/SHx8TD8ibWludXRlIjoibWludXRhbWkiOkh8''@;'; put 'put ''fEw/Im1pbnV0IjoibWludXRhbWkiKTtjYXNlImgiOnJldHVybiBIPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIEsrKDE9PT1oZT9IPyJ1cmEiOiJ1cm8iOjI9PT1oZT9IfHxMPyJ1cmkiOiJ1cmFtYSI6aGU8NT9IfHxMPyJ1cmUiOiJ1cmFtaSI6SHx8TD8idXIiOiJ1cmFt''@;'; put 'put ''aSIpO2Nhc2UiZCI6cmV0dXJuIEh8fEw/ImVuIGRhbiI6ImVuaW0gZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIEsrKDE9PT1oZT9IfHxMPyJkYW4iOiJkbmVtIjoyPT09aGU/SHx8TD8iZG5pIjoiZG5ldm9tYSI6SHx8TD8iZG5pIjoiZG5ldmkiKTtjYXNlIk0iOnJldHVybiBIfHxMPyJlbiBtZXNl''@;'; put 'put ''YyI6ImVuaW0gbWVzZWNlbSI7Y2FzZSJNTSI6cmV0dXJuIEsrKDE9PT1oZT9IfHxMPyJtZXNlYyI6Im1lc2VjZW0iOjI9PT1oZT9IfHxMPyJtZXNlY2EiOiJtZXNlY2VtYSI6aGU8NT9IfHxMPyJtZXNlY2UiOiJtZXNlY2kiOkh8fEw/Im1lc2VjZXYiOiJtZXNlY2kiKTtjYXNlInkiOnJldHVy''@;'; put 'put ''biBIfHxMPyJlbm8gbGV0byI6ImVuaW0gbGV0b20iO2Nhc2UieXkiOnJldHVybiBLKygxPT09aGU/SHx8TD8ibGV0byI6ImxldG9tIjoyPT09aGU/SHx8TD8ibGV0aSI6ImxldG9tYSI6aGU8NT9IfHxMPyJsZXRhIjoibGV0aSI6SHx8TD8ibGV0IjoibGV0aSIpfX1zZS5kZWZpbmVMb2NhbGUo''@;'; put 'put ''InNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5f''@;'; put 'put ''c2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfXHUwMTBkZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUu''@;'; put 'put ''X1x1MDEwZGV0Ll9wZXQuX3NvYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3RvX3NyX1x1MDEwZGVfcGVfc28iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC4gTU0uIFlZWVkiLExM''@;'; put 'put ''OiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5''@;'; put 'put ''KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9''@;'; put 'put ''fSxsYXN0RGF5OiJbdlx1MDEwZGVyYWogb2JdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbcHJlalx1MDE2MW5qb10gW3NyZWRvXSBbb2JdIExU''@;'; put 'put ''IjtjYXNlIDY6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbc29ib3RvXSBbb2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcmVqXHUwMTYxbmppXSBkZGRkIFtvYl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwMTBkZXogJXMi''@;'; put 'put ''LHBhc3Q6InByZWQgJXMiLHM6ayxzczprLG06ayxtbTprLGg6ayxoaDprLGQ6ayxkZDprLE06ayxNTTprLHk6ayx5eTprfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sMTUyOTE6ZnVuY3Rp''@;'; put 'put ''b24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJzcSIse21vbnRoczoiSmFuYXJfU2hrdXJ0X01hcnNfUHJpbGxfTWFqX1FlcnNob3JfS29ycmlrX0d1c2h0X1NodGF0b3JfVGV0b3JfTlx4ZWJudG9yX0RoamV0b3IiLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzU2hvcnQ6Ikphbl9TaGtfTWFyX1ByaV9NYWpfUWVyX0tvcl9HdXNfU2h0X1RldF9OXHhlYm5fRGhqIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJFIERpZWxfRSBIXHhlYm5ceGViX0UgTWFydFx4ZWJfRSBNXHhlYnJrdXJceGViX0UgRW5qdGVfRSBQcmVtdGVfRSBTaHR1blx4ZWIiLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXNTaG9ydDoiRGllX0hceGVibl9NYXJfTVx4ZWJyX0Vual9QcmVfU2h0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEX0hfTWFfTVx4ZWJfRV9QX1NoIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxtZXJpZGllbVBhcnNlOi9QRHxNRC8saXNQTTpmdW5j''@;'; put 'put ''dGlvbih2KXtyZXR1cm4iTSI9PT12LmNoYXJBdCgwKX0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gdjwxMj8iUEQiOiJNRCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1NvdCBuXHhlYl0gTFQiLG5leHREYXk6IltOZXNceGViciBuXHhlYl0gTFQiLG5leHRXZWVrOiJkZGRkIFtuXHhlYl0gTFQiLGxhc3REYXk6IltEamUgblx4ZWJdIExUIixs''@;'; put 'put ''YXN0V2VlazoiZGRkZCBbZSBrYWx1YXIgblx4ZWJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuXHhlYiAlcyIscGFzdDoiJXMgbVx4ZWIgcGFyXHhlYiIsczoiZGlzYSBzZWtvbmRhIixzczoiJWQgc2Vrb25kYSIsbToibmpceGViIG1pbnV0XHhlYiIsbW06IiVk''@;'; put 'put ''IG1pbnV0YSIsaDoibmpceGViIG9yXHhlYiIsaGg6IiVkIG9yXHhlYiIsZDoibmpceGViIGRpdFx4ZWIiLGRkOiIlZCBkaXRceGViIixNOiJualx4ZWIgbXVhaiIsTU06IiVkIG11YWoiLHk6Im5qXHhlYiB2aXQiLHl5OiIlZCB2aXRlIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwy''@;'; put 'put ''fVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDM3NjAzOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXt3b3Jkczp7c3M6WyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzAi''@;'; put 'put ''LCJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzUiLCJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiXSxtOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsIlx1MDQ1''@;'; put 'put ''OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzAiXSxtbTpbIlx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsIlx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsIlx1MDQzY1x1MDQzOFx1MDQz''@;'; put 'put ''ZFx1MDQ0M1x1MDQ0Mlx1MDQzMCJdLGg6WyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0MzBcdTA0M2QgXHUwNDQxXHUwNDMwXHUwNDQyIiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQ0MVx1MDQzMFx1MDQ0Mlx1MDQzMCJdLGhoOlsiXHUwNDQxXHUwNDMwXHUwNDQy''@;'; put 'put ''IiwiXHUwNDQxXHUwNDMwXHUwNDQyXHUwNDMwIiwiXHUwNDQxXHUwNDMwXHUwNDQyXHUwNDM4Il0sZDpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBcdTA0MzRcdTA0MzBcdTA0M2QiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0MzMgXHUwNDM0XHUwNDMwXHUw''@;'; put 'put ''NDNkXHUwNDMwIl0sZGQ6WyJcdTA0MzRcdTA0MzBcdTA0M2QiLCJcdTA0MzRcdTA0MzBcdTA0M2RcdTA0MzAiLCJcdTA0MzRcdTA0MzBcdTA0M2RcdTA0MzAiXSxNOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0NiIsIlx1MDQ1''@;'; put 'put ''OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0M2NcdTA0MzVcdTA0NDFcdTA0MzVcdTA0NDZcdTA0MzAiXSxNTTpbIlx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0NiIsIlx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzMCIsIlx1MDQzY1x1MDQzNVx1MDQ0''@;'; put 'put ''MVx1MDQzNVx1MDQ0Nlx1MDQzOCJdLHk6WyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0NDMgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDM1IFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzNSJd''@;'; put 'put ''LHl5OlsiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIiwiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM1IiwiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oaGUsSCl7cmV0''@;'; put 'put ''dXJuIGhlJTEwPj0xJiZoZSUxMDw9NCYmKGhlJTEwMDwxMHx8aGUlMTAwPj0yMCk/aGUlMTA9PTE/SFswXTpIWzFdOkhbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihoZSxILEIsTCl7dmFyIEosSz1rLndvcmRzW0JdO3JldHVybiAxPT09Qi5sZW5ndGg/InkiPT09QiYmSD8iXHUwNDU4XHUwNDM1''@;'; put 'put ''XHUwNDM0XHUwNDNkXHUwNDMwIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCI6THx8SD9LWzBdOktbMV06KEo9ay5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGhlLEspLCJ5eSI9PT1CJiZIJiYiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIj09PUo/aGUr''@;'; put 'put ''IiBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOmhlKyIgIitKKX19O3NlLmRlZmluZUxvY2FsZSgic3ItY3lybCIse21vbnRoczoiXHUwNDU4XHUwNDMwXHUwNDNkXHUwNDQzXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMVx1MDQ0MFx1MDQ0M1x1MDQzMFx1MDQ0''@;'; put 'put ''MF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM4XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQ1OF9cdTA0NThcdTA0NDNcdTA0M2RfXHUwNDU4XHUwNDQzXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVc''@;'; put 'put ''dTA0M2ZcdTA0NDJcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzBcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDNlXHUwNDMxXHUwNDMwXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQzMlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0NDZcdTA0MzVcdTA0M2Nc''@;'; put 'put ''dTA0MzFcdTA0MzBcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ1OFx1MDQzMFx1MDQzZC5fXHUwNDQ0XHUwNDM1XHUwNDMxLl9cdTA0M2NcdTA0MzBcdTA0NDAuX1x1MDQzMFx1MDQzZlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0''@;'; put 'put ''NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzLl9cdTA0NDFcdTA0MzVcdTA0M2YuX1x1MDQzZVx1MDQzYVx1MDQ0Mi5fXHUwNDNkXHUwNDNlXHUwNDMyLl9cdTA0MzRcdTA0MzVcdTA0NDYuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDQzZFx1''@;'; put 'put ''MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzMF9cdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0MzBcdTA0M2FfXHUwNDQzXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDMwXHUwNDNhX1x1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzMF9cdTA0NDdcdTA0MzVc''@;'; put 'put ''dTA0NDJcdTA0MzJcdTA0NDBcdTA0NDJcdTA0MzBcdTA0M2FfXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDMwXHUwNDNhX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0M2RcdTA0MzVcdTA0MzQuX1x1MDQzZlx1MDQzZVx1''@;'; put 'put ''MDQzZC5fXHUwNDQzXHUwNDQyXHUwNDNlLl9cdTA0NDFcdTA0NDBcdTA0MzUuX1x1MDQ0N1x1MDQzNVx1MDQ0Mi5fXHUwNDNmXHUwNDM1XHUwNDQyLl9cdTA0NDFcdTA0NDNcdTA0MzEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0M2RcdTA0MzVfXHUwNDNmXHUwNDNlX1x1MDQ0M1x1''@;'; put 'put ''MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDM1X1x1MDQzZlx1MDQzNV9cdTA0NDFcdTA0NDMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELiBNLiBZWVlZLiIsTEw6IkQuIE1NTU0gWVlZWS4i''@;'; put 'put ''LExMTDoiRC4gTU1NTSBZWVlZLiBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkuIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMFx1MDQ0MSBcdTA0NDNdIExUIixuZXh0RGF5OiJbXHUwNDQxXHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwIFx1''@;'; put 'put ''MDQ0M10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1x1MDQ0M10gW1x1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQ0M10gW1x1MDQ0M10gTFQiO2Nhc2UgMzpyZXR1cm4iW1x1MDQ0M10gW1x1MDQ0MVx1MDQ0MFx1MDQz''@;'; put 'put ''NVx1MDQzNFx1MDQ0M10gW1x1MDQ0M10gTFQiO2Nhc2UgNjpyZXR1cm4iW1x1MDQ0M10gW1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0M10gW1x1MDQ0M10gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW1x1MDQ0M10gZGRkZCBbXHUwNDQzXSBMVCJ9''@;'; put 'put ''fSxsYXN0RGF5OiJbXHUwNDU4XHUwNDQzXHUwNDQ3XHUwNDM1IFx1MDQ0M10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuWyJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDM1XSBbXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDM1XSBbXHUwNDQzXSBM''@;'; put 'put ''VCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0M2VcdTA0MzNdIFtcdTA0M2ZcdTA0M2VcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0M2FcdTA0MzBdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10g''@;'; put 'put ''W1x1MDQ0M1x1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDM1XSBbXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDM1XSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhc''@;'; put 'put ''dTA0M2JcdTA0M2VcdTA0MzNdIFtcdTA0NDdcdTA0MzVcdTA0NDJcdTA0MzJcdTA0NDBcdTA0NDJcdTA0M2FcdTA0MzBdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQzZlx1MDQzNVx1MDQ0Mlx1MDQzYVx1MDQzMF0gW1x1''@;'; put 'put ''MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDM1XSBbXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDM1XSBbXHUwNDQzXSBMVCJdW3RoaXMuZGF5KCldfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzdcdTA0MzAg''@;'; put 'put ''JXMiLHBhc3Q6Ilx1MDQzZlx1MDQ0MFx1MDQzNSAlcyIsczoiXHUwNDNkXHUwNDM1XHUwNDNhXHUwNDNlXHUwNDNiXHUwNDM4XHUwNDNhXHUwNDNlIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCIsc3M6ay50cmFuc2xhdGUsbTprLnRyYW5zbGF0ZSxtbTprLnRy''@;'; put 'put ''YW5zbGF0ZSxoOmsudHJhbnNsYXRlLGhoOmsudHJhbnNsYXRlLGQ6ay50cmFuc2xhdGUsZGQ6ay50cmFuc2xhdGUsTTprLnRyYW5zbGF0ZSxNTTprLnRyYW5zbGF0ZSx5OmsudHJhbnNsYXRlLHl5OmsudHJhbnNsYXRlfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGlu''@;'; put 'put ''YWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sODA0NTA6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9e3dvcmRzOntzczpbInNla3VuZGEiLCJzZWt1bmRlIiwic2VrdW5kaSJdLG06WyJqZWRhbiBtaW51dCIsImplZG5v''@;'; put 'put ''ZyBtaW51dGEiXSxtbTpbIm1pbnV0IiwibWludXRhIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGQ6WyJqZWRhbiBkYW4iLCJqZWRub2cgZGFuYSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNOlsiamVkYW4gbWVz''@;'; put 'put ''ZWMiLCJqZWRub2cgbWVzZWNhIl0sTU06WyJtZXNlYyIsIm1lc2VjYSIsIm1lc2VjaSJdLHk6WyJqZWRudSBnb2RpbnUiLCJqZWRuZSBnb2RpbmUiXSx5eTpbImdvZGludSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKGhlLEgpe3JldHVybiBo''@;'; put 'put ''ZSUxMD49MSYmaGUlMTA8PTQmJihoZSUxMDA8MTB8fGhlJTEwMD49MjApP2hlJTEwPT0xP0hbMF06SFsxXTpIWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oaGUsSCxCLEwpe3ZhciBKLEs9ay53b3Jkc1tCXTtyZXR1cm4gMT09PUIubGVuZ3RoPyJ5Ij09PUImJkg/ImplZG5hIGdvZGluYSI6THx8''@;'; put 'put ''SD9LWzBdOktbMV06KEo9ay5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGhlLEspLCJ5eSI9PT1CJiZIJiYiZ29kaW51Ij09PUo/aGUrIiBnb2RpbmEiOmhlKyIgIitKKX19O3NlLmRlZmluZUxvY2FsZSgic3IiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxf''@;'; put 'put ''YXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlz''@;'; put 'put ''OiJuZWRlbGphX3BvbmVkZWxqYWtfdXRvcmFrX3NyZWRhX1x1MDEwZGV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyZS5fXHUwMTBkZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3Jf''@;'; put 'put ''XHUwMTBkZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuIE0uIFlZWVkuIixMTDoiRC4gTU1NTSBZWVlZLiIsTExMOiJELiBNTU1NIFlZWVkuIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1N''@;'; put 'put ''TU0gWVlZWS4gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0g''@;'; put 'put ''W3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1XHUwMTBkZSB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm5bIltwcm9c''@;'; put 'put ''dTAxNjFsZV0gW25lZGVsamVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbGVdIFtzcmVkZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW1x1MDEwZGV0dnJ0a2FdIFt1XSBM''@;'; put 'put ''VCIsIltwcm9cdTAxNjFsb2ddIFtwZXRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsc3M6ay50''@;'; put 'put ''cmFuc2xhdGUsbTprLnRyYW5zbGF0ZSxtbTprLnRyYW5zbGF0ZSxoOmsudHJhbnNsYXRlLGhoOmsudHJhbnNsYXRlLGQ6ay50cmFuc2xhdGUsZGQ6ay50cmFuc2xhdGUsTTprLnRyYW5zbGF0ZSxNTTprLnRyYW5zbGF0ZSx5OmsudHJhbnNsYXRlLHl5OmsudHJhbnNsYXRlfSxkYXlPZk1vbnRo''@;'; put 'put ''T3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFQoMTY2NzYpKX0sMzAzODM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJzcyIse21vbnRoczoiQmhpbWJpZHZ3YW5l''@;'; put 'put ''X0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiQmhpX0luYV9JbnVfTWFiX0lua19JbmhfS2hvX0lnY19JbnlfSW1w''@;'; put 'put ''X0x3ZV9JZ28iLnNwbGl0KCJfIiksd2Vla2RheXM6Ikxpc29udGZvX1Vtc29tYnVsdWtvX0xlc2liaWxpX0xlc2l0c2F0ZnVfTGVzaW5lX0xlc2lobGFudV9VbWdjaWJlbG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGlzX1VtYl9Mc2JfTGVzX0xzaV9Mc2hfVW1nIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzTWluOiJMaV9Vc19MYl9MdF9Mc19MaF9VZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDpt''@;'; put 'put ''bSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW05hbXVobGEgbmdhXSBMVCIsbmV4dERheToiW0t1c2FzYSBuZ2FdIExUIixuZXh0V2VlazoiZGRkZCBbbmdhXSBMVCIsbGFzdERheToiW0l0b2xvIG5nYV0gTFQiLGxhc3RXZWVrOiJkZGRk''@;'; put 'put ''IFtsZWxpcGhlbGlsZV0gW25nYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im5nYSAlcyIscGFzdDoid2VudGVrYSBuZ2EgJXMiLHM6ImVtaXp1endhbmEgbG9tY2FuZSIsc3M6IiVkIG16dXp3YW5hIixtOiJ1bXp1enUiLG1tOiIlZCBlbWl6dXp1IixoOiJsaWhv''@;'; put 'put ''cmEiLGhoOiIlZCBlbWFob3JhIixkOiJsaWxhbmdhIixkZDoiJWQgZW1hbGFuZ2EiLE06ImlueWFuZ2EiLE1NOiIlZCB0aW55YW5nYSIseToidW1ueWFrYSIseXk6IiVkIGltaW55YWthIn0sbWVyaWRpZW1QYXJzZTovZWt1c2VuaXxlbWluaXxlbnRzYW1iYW1hfGVidXN1a3UvLG1lcmlkaWVt''@;'; put 'put ''OmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8MTE/ImVrdXNlbmkiOnY8MTU/ImVtaW5pIjp2PDE5PyJlbnRzYW1iYW1hIjoiZWJ1c3VrdSJ9LG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiZWt1c2VuaSI9PT1oZT92OiJlbWluaSI9PT1oZT92Pj0x''@;'; put 'put ''MT92OnYrMTI6ImVudHNhbWJhbWEiPT09aGV8fCJlYnVzdWt1Ij09PWhlPzA9PT12PzA6disxMjp2b2lkIDB9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6IiVkIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwzNzIyMTpmdW5jdGlvbihXZSx6ZSxU''@;'; put 'put ''KXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInN2Iix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic1x4ZjZuZGFnX21ceGU1bmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xceGY2cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzXHhm''@;'; put 'put ''Nm5fbVx4ZTVuX3Rpc19vbnNfdG9yX2ZyZV9sXHhmNnIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNceGY2X21ceGU1X3RpX29uX3RvX2ZyX2xceGY2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1N''@;'; put 'put ''TU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSWRhZ10gTFQiLG5leHREYXk6''@;'; put 'put ''IltJbW9yZ29uXSBMVCIsbGFzdERheToiW0lnXHhlNXJdIExUIixuZXh0V2VlazoiW1BceGU1XSBkZGRkIExUIixsYXN0V2VlazoiW0ldIGRkZGRbc10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmXHhmNnIgJXMgc2VkYW4iLHM6Im5ceGU1''@;'; put 'put ''Z3JhIHNla3VuZGVyIixzczoiJWQgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtXHhlNW5hZCIsTU06IiVkIG1ceGU1bmFkZXIiLHk6ImV0dCBceGU1ciIseXk6''@;'; put 'put ''IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcOmV8XDphKS8sb3JkaW5hbDpmdW5jdGlvbih2KXt2YXIgaGU9diUxMDtyZXR1cm4gdisoMT09fn4odiUxMDAvMTApPyI6ZSI6MT09PWhlfHwyPT09aGU/IjphIjoiOmUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9''@;'; put 'put ''KFQoMTY2NzYpKX0sNTE3NDM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJzdyIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNoaV9BcHJpbGlfTWVpX0p1bmlfSnVsYWlfQWdvc3RpX1NlcHRlbWJhX09rdG9iYV9Ob3Zl''@;'; put 'put ''bWJhX0Rlc2VtYmEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9BZ29fU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJKdW1hcGlsaV9KdW1hdGF0dV9KdW1hbm5lX0p1bWF0YW5vX0FsaGFtaXNpX0lqdW1hYV9KdW1hbW9z''@;'; put 'put ''aSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJKcGxfSnRhdF9Kbm5lX0p0YW5fQWxoX0lqbV9KbW9zIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJKMl9KM19KNF9KNV9BbF9Jal9KMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoaDpt''@;'; put 'put ''bSBBIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltsZW8gc2FhXSBMVCIsbmV4dERheToiW2tlc2hvIHNhYV0gTFQi''@;'; put 'put ''LG5leHRXZWVrOiJbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQiLGxhc3REYXk6IltqYW5hXSBMVCIsbGFzdFdlZWs6Ilt3aWtpIGlsaXlvcGl0YV0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGJhYWRheWUiLHBhc3Q6InRva2VhICVz''@;'; put 'put ''IixzOiJoaXZpIHB1bmRlIixzczoic2VrdW5kZSAlZCIsbToiZGFraWthIG1vamEiLG1tOiJkYWtpa2EgJWQiLGg6InNhYSBsaW1vamEiLGhoOiJtYXNhYSAlZCIsZDoic2lrdSBtb2phIixkZDoic2lrdSAlZCIsTToibXdlemkgbW1vamEiLE1NOiJtaWV6aSAlZCIseToibXdha2EgbW1vamEi''@;'; put 'put ''LHl5OiJtaWFrYSAlZCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShUKDE2Njc2KSl9LDYzNTE6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6Ilx1MGJlNyIsMjoiXHUwYmU4IiwzOiJcdTBiZTkiLDQ6Ilx1MGJlYSIsNToiXHUwYmViIiw2OiJc''@;'; put 'put ''dTBiZWMiLDc6Ilx1MGJlZCIsODoiXHUwYmVlIiw5OiJcdTBiZWYiLDA6Ilx1MGJlNiJ9LHY9eyJcdTBiZTciOiIxIiwiXHUwYmU4IjoiMiIsIlx1MGJlOSI6IjMiLCJcdTBiZWEiOiI0IiwiXHUwYmViIjoiNSIsIlx1MGJlYyI6IjYiLCJcdTBiZWQiOiI3IiwiXHUwYmVlIjoiOCIsIlx1MGJl''@;'; put 'put ''ZiI6IjkiLCJcdTBiZTYiOiIwIn07c2UuZGVmaW5lTG9jYWxlKCJ0YSIse21vbnRoczoiXHUwYjljXHUwYmE5XHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhYVx1MGJiZlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWVcdTBiYmVcdTBiYjBcdTBiY2RcdTBiOWFcdTBi''@;'; put 'put ''Y2RfXHUwYjhmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmIyXHUwYmNkX1x1MGJhZVx1MGJjN19cdTBiOWNcdTBiYzJcdTBiYTlcdTBiY2RfXHUwYjljXHUwYmMyXHUwYmIyXHUwYmM4X1x1MGI4Nlx1MGI5NVx1MGJiOFx1MGJjZFx1MGI5Zlx1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYWFcdTBiY2Rc''@;'; put 'put ''dTBiOWZcdTBiYzZcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjg1XHUwYjk1XHUwYmNkXHUwYjlmXHUwYmM3XHUwYmJlXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGJhOFx1MGJiNVx1MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiOWZcdTBiYmZcdTBiOWFcdTBiYWVc''@;'; put 'put ''dTBiY2RcdTBiYWFcdTBiYjBcdTBiY2QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGI5Y1x1MGJhOVx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWFcdTBiYmZcdTBiYWFcdTBiY2RcdTBiYjBcdTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFlXHUwYmJlXHUwYmIwXHUwYmNkXHUwYjlhXHUwYmNk''@;'; put 'put ''X1x1MGI4Zlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiMlx1MGJjZF9cdTBiYWVcdTBiYzdfXHUwYjljXHUwYmMyXHUwYmE5XHUwYmNkX1x1MGI5Y1x1MGJjMlx1MGJiMlx1MGJjOF9cdTBiODZcdTBiOTVcdTBiYjhcdTBiY2RcdTBiOWZcdTBiY2RfXHUwYjlhXHUwYmM2XHUwYmFhXHUwYmNkXHUw''@;'; put 'put ''YjlmXHUwYmM2XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI4NVx1MGI5NVx1MGJjZFx1MGI5Zlx1MGJjN1x1MGJiZVx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiYThcdTBiYjVcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjlmXHUwYmJmXHUwYjlhXHUwYmFlXHUw''@;'; put 'put ''YmNkXHUwYmFhXHUwYmIwXHUwYmNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBiOWVcdTBiYmVcdTBiYWZcdTBiYmZcdTBiYjFcdTBiY2RcdTBiYjFcdTBiYzFcdTBiOTVcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmE0XHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1''@;'; put 'put ''XHUwYjlmXHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGI5YVx1MGJjNlx1MGJiNVx1MGJjZFx1MGJiNVx1MGJiZVx1MGJhZlx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiYWFcdTBiYzFcdTBiYTRcdTBiYTlcdTBiY2RcdTBiOTVcdTBiYmZc''@;'; put 'put ''dTBiYjRcdTBiYWVcdTBiYzhfXHUwYmI1XHUwYmJmXHUwYmFmXHUwYmJlXHUwYmI0XHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJiNVx1MGJjNlx1MGJiM1x1MGJjZFx1MGJiM1x1MGJiZlx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1''@;'; put 'put ''MGJjOF9cdTBiOWFcdTBiYTlcdTBiYmZcdTBiOTVcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzgiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYjllXHUwYmJlXHUwYmFmXHUwYmJmXHUwYmIxXHUwYmMxX1x1MGJhNFx1MGJiZlx1MGI5OVx1MGJjZFx1MGI5NVx1MGJi''@;'; put 'put ''M1x1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYjVcdTBiY2RcdTBiYjVcdTBiYmVcdTBiYWZcdTBiY2RfXHUwYmFhXHUwYmMxXHUwYmE0XHUwYmE5XHUwYmNkX1x1MGJiNVx1MGJiZlx1MGJhZlx1MGJiZVx1MGJiNFx1MGJhOVx1MGJjZF9cdTBiYjVcdTBiYzZcdTBiYjNcdTBiY2RcdTBiYjNcdTBi''@;'; put 'put ''YmZfXHUwYjlhXHUwYmE5XHUwYmJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBiOWVcdTBiYmVfXHUwYmE0XHUwYmJmX1x1MGI5YVx1MGJjNl9cdTBiYWFcdTBiYzFfXHUwYmI1XHUwYmJmX1x1MGJiNVx1MGJjNl9cdTBiOWEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI''@;'; put 'put ''SDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBiODdcdTBiYTlcdTBiY2RcdTBiYjFcdTBiYzFdIExU''@;'; put 'put ''IixuZXh0RGF5OiJbXHUwYmE4XHUwYmJlXHUwYmIzXHUwYmM4XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwYmE4XHUwYmM3XHUwYmIxXHUwYmNkXHUwYmIxXHUwYmMxXSBMVCIsbGFzdFdlZWs6IltcdTBiOTVcdTBiOWZcdTBiYThcdTBiY2RcdTBiYTQgXHUwYmI1XHUw''@;'; put 'put ''YmJlXHUwYmIwXHUwYmFlXHUwYmNkXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYjg3XHUwYmIyXHUwYmNkIixwYXN0OiIlcyBcdTBiYWVcdTBiYzFcdTBiYTlcdTBiY2QiLHM6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiOWFcdTBiYmZcdTBi''@;'; put 'put ''YjIgXHUwYmI1XHUwYmJmXHUwYmE4XHUwYmJlXHUwYjlmXHUwYmJmXHUwYjk1XHUwYmIzXHUwYmNkIixzczoiJWQgXHUwYmI1XHUwYmJmXHUwYmE4XHUwYmJlXHUwYjlmXHUwYmJmXHUwYjk1XHUwYmIzXHUwYmNkIixtOiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmE4XHUwYmJmXHUwYmFlXHUw''@;'; put 'put ''YmJmXHUwYjlmXHUwYmFlXHUwYmNkIixtbToiJWQgXHUwYmE4XHUwYmJmXHUwYmFlXHUwYmJmXHUwYjlmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmIzXHUwYmNkIixoOiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmFlXHUwYmEzXHUwYmJmIFx1MGJhOFx1MGJjN1x1MGJiMFx1MGJhZVx1MGJjZCIs''@;'; put 'put ''aGg6IiVkIFx1MGJhZVx1MGJhM1x1MGJiZiBcdTBiYThcdTBiYzdcdTBiYjBcdTBiYWVcdTBiY2QiLGQ6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYThcdTBiYmVcdTBiYjNcdTBiY2QiLGRkOiIlZCBcdTBiYThcdTBiYmVcdTBiOWZcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLE06Ilx1MGI5''@;'; put 'put ''Mlx1MGJiMFx1MGJjMSBcdTBiYWVcdTBiYmVcdTBiYTRcdTBiYWVcdTBiY2QiLE1NOiIlZCBcdTBiYWVcdTBiYmVcdTBiYTRcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLHk6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYjVcdTBiYjBcdTBiYzFcdTBiOWZcdTBiYWVcdTBiY2QiLHl5''@;'; put 'put ''OiIlZCBcdTBiODZcdTBiYTNcdTBiY2RcdTBiOWZcdTBiYzFcdTBiOTVcdTBiYjNcdTBiY2QifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHUwYmI1XHUwYmE0XHUwYmMxLyxvcmRpbmFsOmZ1bmN0aW9uKEgpe3JldHVybiBIKyJcdTBiYjVcdTBiYTRcdTBiYzEifSxwcmVwYXJz''@;'; put 'put ''ZTpmdW5jdGlvbihIKXtyZXR1cm4gSC5yZXBsYWNlKC9bXHUwYmU3XHUwYmU4XHUwYmU5XHUwYmVhXHUwYmViXHUwYmVjXHUwYmVkXHUwYmVlXHUwYmVmXHUwYmU2XS9nLGZ1bmN0aW9uKEIpe3JldHVybiB2W0JdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSCl7cmV0dXJuIEgucmVwbGFjZSgv''@;'; put 'put ''XGQvZyxmdW5jdGlvbihCKXtyZXR1cm4ga1tCXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2R8XHUwYmI1XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4fFx1MGI5NVx1MGJiZVx1MGJiMlx1MGJjOHxcdTBiYThcdTBiYTNcdTBiY2RcdTBiYWFcdTBiOTVc''@;'; put 'put ''dTBiYjJcdTBiY2R8XHUwYjhlXHUwYmIxXHUwYmNkXHUwYmFhXHUwYmJlXHUwYjlmXHUwYmMxfFx1MGJhZVx1MGJiZVx1MGJiMlx1MGJjOC8sbWVyaWRpZW06ZnVuY3Rpb24oSCxCLEwpe3JldHVybiBIPDI/IiBcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QiOkg8Nj8iIFx1MGJiNVx1''@;'; put 'put ''MGJjOFx1MGI5NVx1MGJiMVx1MGJjOCI6SDwxMD8iIFx1MGI5NVx1MGJiZVx1MGJiMlx1MGJjOCI6SDwxND8iIFx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZCI6SDwxOD8iIFx1MGI4ZVx1MGJiMVx1MGJjZFx1MGJhYVx1MGJiZVx1MGI5Zlx1MGJjMSI6SDwyMj8i''@;'; put 'put ''IFx1MGJhZVx1MGJiZVx1MGJiMlx1MGJjOCI6IiBcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QifSxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oSCxCKXtyZXR1cm4gMTI9PT1IJiYoSD0wKSwiXHUwYmFmXHUwYmJlXHUwYmFlXHUwYmFlXHUwYmNkIj09PUI/SDwyP0g6SCsxMjoiXHUwYmI1''@;'; put 'put ''XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4Ij09PUJ8fCJcdTBiOTVcdTBiYmVcdTBiYjJcdTBiYzgiPT09Qnx8Ilx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZCI9PT1CJiZIPj0xMD9IOkgrMTJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShUKDE2Njc2KSl9LDk4MTE4''@;'; put 'put ''OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgidGUiLHttb250aHM6Ilx1MGMxY1x1MGMyOFx1MGMzNVx1MGMzMFx1MGMzZl9cdTBjMmJcdTBjM2ZcdTBjMmNcdTBjNGRcdTBjMzBcdTBjMzVcdTBjMzBcdTBjM2ZfXHUwYzJlXHUw''@;'; put 'put ''YzNlXHUwYzMwXHUwYzRkXHUwYzFhXHUwYzNmX1x1MGMwZlx1MGMyYVx1MGM0ZFx1MGMzMFx1MGMzZlx1MGMzMlx1MGM0ZF9cdTBjMmVcdTBjNDdfXHUwYzFjXHUwYzQyXHUwYzI4XHUwYzRkX1x1MGMxY1x1MGM0MVx1MGMzMlx1MGM0OF9cdTBjMDZcdTBjMTdcdTBjMzhcdTBjNGRcdTBjMWZc''@;'; put 'put ''dTBjNDFfXHUwYzM4XHUwYzQ2XHUwYzJhXHUwYzRkXHUwYzFmXHUwYzQ2XHUwYzAyXHUwYzJjXHUwYzMwXHUwYzRkX1x1MGMwNVx1MGMxNVx1MGM0ZFx1MGMxZlx1MGM0Ylx1MGMyY1x1MGMzMFx1MGM0ZF9cdTBjMjhcdTBjMzVcdTBjMDJcdTBjMmNcdTBjMzBcdTBjNGRfXHUwYzIxXHUwYzNm''@;'; put 'put ''XHUwYzM4XHUwYzQ2XHUwYzAyXHUwYzJjXHUwYzMwXHUwYzRkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBjMWNcdTBjMjguX1x1MGMyYlx1MGMzZlx1MGMyY1x1MGM0ZFx1MGMzMC5fXHUwYzJlXHUwYzNlXHUwYzMwXHUwYzRkXHUwYzFhXHUwYzNmX1x1MGMwZlx1MGMyYVx1MGM0ZFx1''@;'; put 'put ''MGMzMFx1MGMzZi5fXHUwYzJlXHUwYzQ3X1x1MGMxY1x1MGM0Mlx1MGMyOFx1MGM0ZF9cdTBjMWNcdTBjNDFcdTBjMzJcdTBjNDhfXHUwYzA2XHUwYzE3Ll9cdTBjMzhcdTBjNDZcdTBjMmFcdTBjNGQuX1x1MGMwNVx1MGMxNVx1MGM0ZFx1MGMxZlx1MGM0Yi5fXHUwYzI4XHUwYzM1Ll9cdTBj''@;'; put 'put ''MjFcdTBjM2ZcdTBjMzhcdTBjNDYuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGMwNlx1MGMyNlx1MGMzZlx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMzhcdTBjNGJcdTBjMmVcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzJlXHUwYzAyXHUw''@;'; put 'put ''YzE3XHUwYzMzXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMyY1x1MGM0MVx1MGMyN1x1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMTdcdTBjNDFcdTBjMzBcdTBjNDFcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzM2XHUwYzQxXHUwYzE1XHUwYzRkXHUwYzMwXHUwYzM1XHUw''@;'; put 'put ''YzNlXHUwYzMwXHUwYzAyX1x1MGMzNlx1MGMyOFx1MGMzZlx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBjMDZcdTBjMjZcdTBjM2ZfXHUwYzM4XHUwYzRiXHUwYzJlX1x1MGMyZVx1MGMwMlx1MGMxN1x1MGMzM19cdTBjMmNcdTBjNDFcdTBj''@;'; put 'put ''MjdfXHUwYzE3XHUwYzQxXHUwYzMwXHUwYzQxX1x1MGMzNlx1MGM0MVx1MGMxNVx1MGM0ZFx1MGMzMF9cdTBjMzZcdTBjMjhcdTBjM2YiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGMwNl9cdTBjMzhcdTBjNGJfXHUwYzJlXHUwYzAyX1x1MGMyY1x1MGM0MV9cdTBjMTdcdTBjNDFfXHUw''@;'; put 'put ''YzM2XHUwYzQxX1x1MGMzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltcdTBjMjhcdTBjNDdcdTBjMjFcdTBjNDFdIExUIixuZXh0RGF5OiJbXHUwYzMwXHUwYzQ3XHUwYzJhXHUwYzQxXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwYzI4XHUwYzNmXHUwYzI4XHUwYzRkXHUwYzI4XSBMVCIsbGFzdFdlZWs6''@;'; put 'put ''IltcdTBjMTdcdTBjMjRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBjMzJcdTBjNGIiLHBhc3Q6IiVzIFx1MGMxNVx1MGM0ZFx1MGMzMFx1MGMzZlx1MGMyNFx1MGMwMiIsczoiXHUwYzE1XHUwYzRhXHUwYzI4XHUwYzRkXHUwYzI4XHUwYzNm''@;'; put 'put ''IFx1MGMxNVx1MGM0ZFx1MGMzN1x1MGMyM1x1MGMzZVx1MGMzMlx1MGM0MSIsc3M6IiVkIFx1MGMzOFx1MGM0Nlx1MGMxNVx1MGMyOFx1MGM0ZFx1MGMzMlx1MGM0MSIsbToiXHUwYzEyXHUwYzE1IFx1MGMyOFx1MGMzZlx1MGMyZVx1MGMzZlx1MGMzN1x1MGMwMiIsbW06IiVkIFx1MGMyOFx1''@;'; put 'put ''MGMzZlx1MGMyZVx1MGMzZlx1MGMzN1x1MGMzZVx1MGMzMlx1MGM0MSIsaDoiXHUwYzEyXHUwYzE1IFx1MGMxN1x1MGMwMlx1MGMxZiIsaGg6IiVkIFx1MGMxN1x1MGMwMlx1MGMxZlx1MGMzMlx1MGM0MSIsZDoiXHUwYzEyXHUwYzE1IFx1MGMzMFx1MGM0Ylx1MGMxY1x1MGM0MSIsZGQ6IiVk''@;'; put 'put ''IFx1MGMzMFx1MGM0Ylx1MGMxY1x1MGM0MVx1MGMzMlx1MGM0MSIsTToiXHUwYzEyXHUwYzE1IFx1MGMyOFx1MGM0Nlx1MGMzMiIsTU06IiVkIFx1MGMyOFx1MGM0Nlx1MGMzMlx1MGMzMlx1MGM0MSIseToiXHUwYzEyXHUwYzE1IFx1MGMzOFx1MGMwMlx1MGMzNVx1MGMyNFx1MGM0ZFx1MGMz''@;'; put 'put ''OFx1MGMzMFx1MGMwMiIseXk6IiVkIFx1MGMzOFx1MGMwMlx1MGMzNVx1MGMyNFx1MGM0ZFx1MGMzOFx1MGMzMFx1MGMzZVx1MGMzMlx1MGM0MSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTBjMzUvLG9yZGluYWw6IiVkXHUwYzM1IixtZXJpZGllbVBhcnNlOi9cdTBjMzBc''@;'; put 'put ''dTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2Z8XHUwYzA5XHUwYzI2XHUwYzJmXHUwYzAyfFx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1MGMwMnxcdTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIvLG1lcmlk''@;'; put 'put ''aWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmIj09PWhlP3Y8ND92OnYrMTI6Ilx1MGMwOVx1MGMyNlx1MGMyZlx1MGMwMiI9PT1oZT92OiJcdTBjMmVcdTBjMjdcdTBjNGRcdTBjMmZcdTBjM2Vc''@;'; put 'put ''dTBjMzlcdTBjNGRcdTBjMjhcdTBjMDIiPT09aGU/dj49MTA/djp2KzEyOiJcdTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIiPT09aGU/disxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8ND8iXHUwYzMwXHUwYzNlXHUw''@;'; put 'put ''YzI0XHUwYzRkXHUwYzMwXHUwYzNmIjp2PDEwPyJcdTBjMDlcdTBjMjZcdTBjMmZcdTBjMDIiOnY8MTc/Ilx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1MGMwMiI6djwyMD8iXHUwYzM4XHUwYzNlXHUwYzJmXHUwYzAyXHUwYzI0XHUwYzRkXHUwYzMw''@;'; put 'put ''XHUwYzAyIjoiXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFQoMTY2NzYpKX0sMjYyNzg6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJ0ZXQiLHttb250aHM6Ikph''@;'; put 'put ''bmVpcnVfRmV2ZXJlaXJ1X01hcnN1X0FicmlsX01haXVfSnVceGYxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXoiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyc19LdWFfS2ludF9TZXN0X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fU2VnX1RlX0t1X0tp''@;'; put 'put ''X1Nlc19TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltPaGluIGloYV0gTFQiLG5leHREYXk6IltBYmFuIGloYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtpaGFdIExUIixsYXN0RGF5OiJbSG9yaXNlaWsgaWhhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3NlbWFuYSBrb3R1a10gW2loYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ImloYSAlcyIscGFzdDoiJXMgbGl1YmEiLHM6InNlZ3VuZHUgYmFsdW4iLHNzOiJzZWd1bmR1ICVkIixtOiJtaW51dHUgaWRhIixtbToibWludXR1ICVkIixoOiJvcmFzIGlkYSIsaGg6Im9yYXMgJWQiLGQ6Imxvcm9uIGlkYSIsZGQ6Imxvcm9uICVkIixNOiJmdWxhbiBpZGEiLE1N''@;'; put 'put ''OiJmdWxhbiAlZCIseToidGluYW4gaWRhIix5eToidGluYW4gJWQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbih2KXt2YXIgaGU9diUxMDtyZXR1cm4gdisoMT09fn4odiUxMDAvMTApPyJ0aCI6MT09PWhlPyJzdCI6Mj09''@;'; put 'put ''PWhlPyJuZCI6Mz09PWhlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDM2OTg3OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXswOiItXHUwNDQzXHUwNDNjIiwxOiItXHUwNDQzXHUwNDNjIiwyOiItXHUwNDRl''@;'; put 'put ''XHUwNDNjIiwzOiItXHUwNDRlXHUwNDNjIiw0OiItXHUwNDQzXHUwNDNjIiw1OiItXHUwNDQzXHUwNDNjIiw2OiItXHUwNDQzXHUwNDNjIiw3OiItXHUwNDQzXHUwNDNjIiw4OiItXHUwNDQzXHUwNDNjIiw5OiItXHUwNDQzXHUwNDNjIiwxMDoiLVx1MDQ0M1x1MDQzYyIsMTI6Ii1cdTA0NDNc''@;'; put 'put ''dTA0M2MiLDEzOiItXHUwNDQzXHUwNDNjIiwyMDoiLVx1MDQ0M1x1MDQzYyIsMzA6Ii1cdTA0NGVcdTA0M2MiLDQwOiItXHUwNDQzXHUwNDNjIiw1MDoiLVx1MDQ0M1x1MDQzYyIsNjA6Ii1cdTA0NDNcdTA0M2MiLDcwOiItXHUwNDQzXHUwNDNjIiw4MDoiLVx1MDQ0M1x1MDQzYyIsOTA6Ii1c''@;'; put 'put ''dTA0NDNcdTA0M2MiLDEwMDoiLVx1MDQ0M1x1MDQzYyJ9O3NlLmRlZmluZUxvY2FsZSgidGciLHttb250aHM6e2Zvcm1hdDoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQzOF9cdTA0M2NcdTA0MzBc''@;'; put 'put ''dTA0NDBcdTA0NDJcdTA0MzhfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQzOVx1MDQzOF9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0''@;'; put 'put ''Mlx1MDQzOF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0''@;'; put 'put ''MzFcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiX1x1''@;'; put 'put ''MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMx''@;'; put 'put ''XHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA0NGZcdTA0M2RcdTA0MzJfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBc''@;'; put 'put ''dTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9cdTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZF9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDRmX1x1MDQzNFx1MDQzNVx1MDQzYSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDRmXHUwNDNhXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzNFx1MDQ0M1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0NDFcdTA0MzVcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNDQ3XHUwNDNlXHUw''@;'; put 'put ''NDQwXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQzZlx1MDQzMFx1MDQzZFx1MDRiN1x1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0YjdcdTA0NDNcdTA0M2NcdTA0NGFcdTA0MzBfXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1Ii5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6Ilx1MDQ0Zlx1MDQ0OFx1MDQzMV9cdTA0MzRcdTA0NDhcdTA0MzFfXHUwNDQxXHUwNDQ4XHUwNDMxX1x1MDQ0N1x1MDQ0OFx1MDQzMV9cdTA0M2ZcdTA0NDhcdTA0MzFfXHUwNGI3XHUwNDQzXHUwNDNjX1x1MDQ0OFx1MDQzZFx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c01pbjoiXHUwNDRmXHUwNDQ4X1x1MDQzNFx1MDQ0OF9cdTA0NDFcdTA0NDhfXHUwNDQ3XHUwNDQ4X1x1MDQzZlx1MDQ0OF9cdTA0YjdcdTA0M2NfXHUwNDQ4XHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVki''@;'; put 'put ''LExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxOFx1MDQzY1x1MDQ0MFx1MDRlZlx1MDQzNyBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixuZXh0''@;'; put 'put ''RGF5OiJbXHUwNDI0XHUwNDMwXHUwNDQwXHUwNDM0XHUwNDNlIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLGxhc3REYXk6IltcdTA0MTRcdTA0MzhcdTA0NDBcdTA0ZWZcdTA0MzcgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsbmV4dFdlZWs6ImRkZGRb''@;'; put 'put ''XHUwNDM4XSBbXHUwNGIzXHUwNDMwXHUwNDQ0XHUwNDQyXHUwNDMwXHUwNDM4IFx1MDQzZVx1MDQ0Zlx1MDQzZFx1MDQzNFx1MDQzMCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixsYXN0V2VlazoiZGRkZFtcdTA0MzhdIFtcdTA0YjNcdTA0MzBcdTA0NDRcdTA0NDJcdTA0''@;'; put 'put ''MzBcdTA0MzggXHUwNDMzXHUwNDQzXHUwNDM3XHUwNDMwXHUwNDQ4XHUwNDQyXHUwNDMwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzMVx1MDQzMFx1MDQ0YVx1MDQzNFx1MDQzOCAlcyIscGFzdDoi''@;'; put 'put ''JXMgXHUwNDNmXHUwNDM1XHUwNDQ4IixzOiJcdTA0NGZcdTA0M2FcdTA0NDdcdTA0MzBcdTA0M2RcdTA0MzQgXHUwNDQxXHUwNDNlXHUwNDNkXHUwNDM4XHUwNDRmIixtOiJcdTA0NGZcdTA0M2EgXHUwNDM0XHUwNDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMwIixtbToiJWQgXHUwNDM0XHUw''@;'; put 'put ''NDMwXHUwNDliXHUwNDM4XHUwNDliXHUwNDMwIixoOiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixkOiJcdTA0NGZcdTA0M2EgXHUwNDQwXHUwNGVmXHUwNDM3IixkZDoiJWQgXHUwNDQwXHUwNGVmXHUwNDM3''@;'; put 'put ''IixNOiJcdTA0NGZcdTA0M2EgXHUwNDNjXHUwNDNlXHUwNGIzIixNTToiJWQgXHUwNDNjXHUwNDNlXHUwNGIzIix5OiJcdTA0NGZcdTA0M2EgXHUwNDQxXHUwNDNlXHUwNDNiIix5eToiJWQgXHUwNDQxXHUwNDNlXHUwNDNiIn0sbWVyaWRpZW1QYXJzZTovXHUwNDQ4XHUwNDMwXHUwNDMxfFx1''@;'; put 'put ''MDQ0MVx1MDQ0M1x1MDQzMVx1MDRiM3xcdTA0NDBcdTA0ZWZcdTA0Mzd8XHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIDEyPT09aGUmJihoZT0wKSwiXHUwNDQ4XHUwNDMwXHUwNDMxIj09PUg/aGU8ND9oZTpoZSsxMjoi''@;'; put 'put ''XHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzIj09PUg/aGU6Ilx1MDQ0MFx1MDRlZlx1MDQzNyI9PT1IP2hlPj0xMT9oZTpoZSsxMjoiXHUwNDMxXHUwNDM1XHUwNDMzXHUwNDNlXHUwNGIzIj09PUg/aGUrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihoZSxILEIpe3JldHVybiBoZTw0PyJc''@;'; put 'put ''dTA0NDhcdTA0MzBcdTA0MzEiOmhlPDExPyJcdTA0NDFcdTA0NDNcdTA0MzFcdTA0YjMiOmhlPDE2PyJcdTA0NDBcdTA0ZWZcdTA0MzciOmhlPDE5PyJcdTA0MzFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0YjMiOiJcdTA0NDhcdTA0MzBcdTA0MzEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9c''@;'; put 'put ''ZHsxLDJ9LShcdTA0NDNcdTA0M2N8XHUwNDRlXHUwNDNjKS8sb3JkaW5hbDpmdW5jdGlvbihoZSl7cmV0dXJuIGhlKyhrW2hlXXx8a1toZSUxMF18fGtbaGU+PTEwMD8xMDA6bnVsbF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSwzOTMyNTpmdW5jdGlvbihXZSx6ZSxUKXsh''@;'; put 'put ''ZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInRoIix7bW9udGhzOiJcdTBlMjFcdTBlMDFcdTBlMjNcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTAxXHUwZTM4XHUwZTIxXHUwZTIwXHUwZTMyXHUwZTFlXHUwZTMxXHUwZTE5XHUwZTE4XHUwZTRjX1x1MGUyMVx1MGUz''@;'; put 'put ''NVx1MGUxOVx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlNDBcdTBlMjFcdTBlMjlcdTBlMzJcdTBlMjJcdTBlMTlfXHUwZTFlXHUwZTI0XHUwZTI5XHUwZTIwXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUyMVx1MGUzNFx1MGUxNlx1MGUzOFx1MGUxOVx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMDFcdTBl''@;'; put 'put ''MjNcdTBlMDFcdTBlMGVcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTJhXHUwZTM0XHUwZTA3XHUwZTJiXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUwMVx1MGUzMVx1MGUxOVx1MGUyMlx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMTVcdTBlMzhcdTBlMjVcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTFlXHUw''@;'; put 'put ''ZTI0XHUwZTI4XHUwZTA4XHUwZTM0XHUwZTAxXHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUxOFx1MGUzMVx1MGUxOVx1MGUyN1x1MGUzMlx1MGUwNFx1MGUyMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwZTIxLlx1MGUwNC5fXHUwZTAxLlx1MGUxZS5fXHUwZTIxXHUwZTM1Llx1MGUwNC5f''@;'; put 'put ''XHUwZTQwXHUwZTIxLlx1MGUyMi5fXHUwZTFlLlx1MGUwNC5fXHUwZTIxXHUwZTM0Llx1MGUyMi5fXHUwZTAxLlx1MGUwNC5fXHUwZTJhLlx1MGUwNC5fXHUwZTAxLlx1MGUyMi5fXHUwZTE1Llx1MGUwNC5fXHUwZTFlLlx1MGUyMi5fXHUwZTE4Llx1MGUwNC4iLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''UGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwZTJkXHUwZTMyXHUwZTE3XHUwZTM0XHUwZTE1XHUwZTIyXHUwZTRjX1x1MGUwOFx1MGUzMVx1MGUxOVx1MGUxN1x1MGUyM1x1MGU0Y19cdTBlMmRcdTBlMzFcdTBlMDdcdTBlMDRcdTBlMzJcdTBlMjNfXHUwZTFlXHUwZTM4XHUwZTE4X1x1MGUx''@;'; put 'put ''ZVx1MGUyNFx1MGUyYlx1MGUzMVx1MGUyYVx1MGUxYVx1MGUxNFx1MGUzNV9cdTBlMjhcdTBlMzhcdTBlMDFcdTBlMjNcdTBlNGNfXHUwZTQwXHUwZTJhXHUwZTMyXHUwZTIzXHUwZTRjIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MGUyZFx1MGUzMlx1MGUxN1x1MGUzNFx1MGUxNVx1''@;'; put 'put ''MGUyMlx1MGU0Y19cdTBlMDhcdTBlMzFcdTBlMTlcdTBlMTdcdTBlMjNcdTBlNGNfXHUwZTJkXHUwZTMxXHUwZTA3XHUwZTA0XHUwZTMyXHUwZTIzX1x1MGUxZVx1MGUzOFx1MGUxOF9cdTBlMWVcdTBlMjRcdTBlMmJcdTBlMzFcdTBlMmFfXHUwZTI4XHUwZTM4XHUwZTAxXHUwZTIzXHUwZTRj''@;'; put 'put ''X1x1MGU0MFx1MGUyYVx1MGUzMlx1MGUyM1x1MGU0YyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwZTJkXHUwZTMyLl9cdTBlMDguX1x1MGUyZC5fXHUwZTFlLl9cdTBlMWVcdTBlMjQuX1x1MGUyOC5fXHUwZTJhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzIgSDptbSIsTExMTDoiXHUwZTI3XHUwZTMxXHUwZTE5ZGRkZFx1MGUxN1x1MGUzNVx1MGU0OCBEIE1N''@;'; put 'put ''TU0gWVlZWSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzIgSDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MGUwMVx1MGU0OFx1MGUyZFx1MGUxOVx1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwN3xcdTBlMmJcdTBlMjVcdTBlMzFcdTBlMDdcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhc''@;'; put 'put ''dTBlMjJcdTBlMDcvLGlzUE06ZnVuY3Rpb24odil7cmV0dXJuIlx1MGUyYlx1MGUyNVx1MGUzMVx1MGUwN1x1MGU0MFx1MGUxN1x1MGUzNVx1MGU0OFx1MGUyMlx1MGUwNyI9PT12fSxtZXJpZGllbTpmdW5jdGlvbih2LGhlLEgpe3JldHVybiB2PDEyPyJcdTBlMDFcdTBlNDhcdTBlMmRcdTBl''@;'; put 'put ''MTlcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBlMDciOiJcdTBlMmJcdTBlMjVcdTBlMzFcdTBlMDdcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBlMDcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGUyN1x1MGUzMVx1MGUxOVx1MGUxOVx1MGUzNVx1MGU0OSBcdTBl''@;'; put 'put ''NDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixuZXh0RGF5OiJbXHUwZTFlXHUwZTIzXHUwZTM4XHUwZTQ4XHUwZTA3XHUwZTE5XHUwZTM1XHUwZTQ5IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLG5leHRXZWVrOiJkZGRkW1x1MGUyYlx1MGUxOVx1MGU0OVx1MGUzMiBcdTBlNDBcdTBl''@;'; put 'put ''MjdcdTBlMjVcdTBlMzJdIExUIixsYXN0RGF5OiJbXHUwZTQwXHUwZTIxXHUwZTM3XHUwZTQ4XHUwZTJkXHUwZTI3XHUwZTMyXHUwZTE5XHUwZTE5XHUwZTM1XHUwZTQ5IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLGxhc3RXZWVrOiJbXHUwZTI3XHUwZTMxXHUwZTE5XWRkZGRbXHUw''@;'; put 'put ''ZTE3XHUwZTM1XHUwZTQ4XHUwZTQxXHUwZTI1XHUwZTQ5XHUwZTI3IFx1MGU0MFx1MGUyN1x1MGUyNVx1MGUzMl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MGUyZFx1MGUzNVx1MGUwMSAlcyIscGFzdDoiJXNcdTBlMTdcdTBlMzVcdTBlNDhcdTBlNDFcdTBl''@;'; put 'put ''MjVcdTBlNDlcdTBlMjciLHM6Ilx1MGU0NFx1MGUyMVx1MGU0OFx1MGUwMVx1MGUzNVx1MGU0OFx1MGUyN1x1MGUzNFx1MGUxOVx1MGUzMlx1MGUxN1x1MGUzNSIsc3M6IiVkIFx1MGUyN1x1MGUzNFx1MGUxOVx1MGUzMlx1MGUxN1x1MGUzNSIsbToiMSBcdTBlMTlcdTBlMzJcdTBlMTdcdTBl''@;'; put 'put ''MzUiLG1tOiIlZCBcdTBlMTlcdTBlMzJcdTBlMTdcdTBlMzUiLGg6IjEgXHUwZTBhXHUwZTMxXHUwZTQ4XHUwZTI3XHUwZTQyXHUwZTIxXHUwZTA3IixoaDoiJWQgXHUwZTBhXHUwZTMxXHUwZTQ4XHUwZTI3XHUwZTQyXHUwZTIxXHUwZTA3IixkOiIxIFx1MGUyN1x1MGUzMVx1MGUxOSIsZGQ6''@;'; put 'put ''IiVkIFx1MGUyN1x1MGUzMVx1MGUxOSIsdzoiMSBcdTBlMmFcdTBlMzFcdTBlMWJcdTBlMTRcdTBlMzJcdTBlMmJcdTBlNGMiLHd3OiIlZCBcdTBlMmFcdTBlMzFcdTBlMWJcdTBlMTRcdTBlMzJcdTBlMmJcdTBlNGMiLE06IjEgXHUwZTQwXHUwZTE0XHUwZTM3XHUwZTJkXHUwZTE5IixNTToi''@;'; put 'put ''JWQgXHUwZTQwXHUwZTE0XHUwZTM3XHUwZTJkXHUwZTE5Iix5OiIxIFx1MGUxYlx1MGUzNSIseXk6IiVkIFx1MGUxYlx1MGUzNSJ9fSl9KFQoMTY2NzYpKX0sNDM0ODU6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9ezE6IidpbmppIiw1OiInaW5q''@;'; put 'put ''aSIsODoiJ2luamkiLDcwOiInaW5qaSIsODA6IidpbmppIiwyOiInbmppIiw3OiInbmppIiwyMDoiJ25qaSIsNTA6IiduamkiLDM6IidceGZjbmppIiw0OiInXHhmY25qaSIsMTAwOiInXHhmY25qaSIsNjoiJ25qeSIsOToiJ3VuankiLDEwOiIndW5qeSIsMzA6Iid1bmp5Iiw2MDoiJ3luanki''@;'; put 'put ''LDkwOiIneW5qeSJ9O3NlLmRlZmluZUxvY2FsZSgidGsiLHttb250aHM6Ilx4ZGRhbndhcl9GZXdyYWxfTWFydF9BcHJlbF9NYVx4ZmRfSVx4ZmR1bl9JXHhmZHVsX0F3Z3VzdF9TZW50XHhmZGFicl9Pa3RceGZkYWJyX05vXHhmZGFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6''@;'; put 'put ''Ilx4ZGRhbl9GZXdfTWFyX0Fwcl9NYVx4ZmRfSVx4ZmRuX0lceGZkbF9Bd2dfU2VuX09rdF9Ob1x4ZmRfRGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJceGRkZWtcdTAxNWZlbmJlX0R1XHUwMTVmZW5iZV9TaVx1MDE1ZmVuYmVfXHhjN2FyXHUwMTVmZW5iZV9QZW5cdTAxNWZlbmJlX0FubmFf''@;'; put 'put ''XHUwMTVlZW5iZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJceGRkZWtfRHVcdTAxNWZfU2lcdTAxNWZfXHhjN2FyX1Blbl9Bbm5fXHUwMTVlZW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx4ZGRrX0RcdTAxNWZfU1x1MDE1Zl9ceGM3cl9Qbl9Bbl9cdTAxNWVuIi5zcGxpdCgiXyIp''@;'; put 'put ''LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2J1Z1x4ZmNuIHNhZ2F0''@;'; put 'put ''XSBMVCIsbmV4dERheToiW2VydGlyIHNhZ2F0XSBMVCIsbmV4dFdlZWs6IltpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCIsbGFzdERheToiW2RceGZjXHhmZG5dIExUIixsYXN0V2VlazoiW2dlXHhlN2VuXSBkZGRkIFtzYWdhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6IiVzIHNvXHUwMTQ4IixwYXN0OiIlcyBceGY2XHUwMTQ4IixzOiJiaXJuXHhlNFx4ZTdlIHNla3VudCIsbToiYmlyIG1pbnV0IixtbToiJWQgbWludXQiLGg6ImJpciBzYWdhdCIsaGg6IiVkIHNhZ2F0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNuIixNOiJiaXIgYVx4ZmQiLE1N''@;'; put 'put ''OiIlZCBhXHhmZCIseToiYmlyIFx4ZmR5bCIseXk6IiVkIFx4ZmR5bCJ9LG9yZGluYWw6ZnVuY3Rpb24oaGUsSCl7c3dpdGNoKEgpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRvIjpjYXNlIkREIjpyZXR1cm4gaGU7ZGVmYXVsdDppZigwPT09aGUpcmV0dXJuIGhlKyIndW5qeSI7dmFyIEI9aGUl''@;'; put 'put ''MTA7cmV0dXJuIGhlKyhrW0JdfHxrW2hlJTEwMC1CXXx8a1toZT49MTAwPzEwMDpudWxsXSl9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw2ODE0ODpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInRsLXBoIix7''@;'; put 'put ''bW9udGhzOiJFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkVuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2Jf''@;'; put 'put ''RGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJMaV9M''@;'; put 'put ''dV9NYV9NaV9IdV9CaV9TYWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiTU0vRC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0gRCwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbSJ9LGNh''@;'; put 'put ''bGVuZGFyOntzYW1lRGF5OiJMVCBbbmdheW9uZyBhcmF3XSIsbmV4dERheToiW0J1a2FzIG5nXSBMVCIsbmV4dFdlZWs6IkxUIFtzYSBzdXN1bm9kIG5hXSBkZGRkIixsYXN0RGF5OiJMVCBba2FoYXBvbl0iLGxhc3RXZWVrOiJMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJzYSBsb29iIG5nICVzIixwYXN0OiIlcyBhbmcgbmFrYWxpcGFzIixzOiJpbGFuZyBzZWd1bmRvIixzczoiJWQgc2VndW5kbyIsbToiaXNhbmcgbWludXRvIixtbToiJWQgbWludXRvIixoOiJpc2FuZyBvcmFzIixoaDoiJWQgb3JhcyIsZDoiaXNh''@;'; put 'put ''bmcgYXJhdyIsZGQ6IiVkIGFyYXciLE06ImlzYW5nIGJ1d2FuIixNTToiJWQgYnV3YW4iLHk6ImlzYW5nIHRhb24iLHl5OiIlZCB0YW9uIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbih2KXtyZXR1cm4gdn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9''@;'; put 'put ''KFQoMTY2NzYpKX0sNTk2MTY6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7dmFyIGs9InBhZ2hfd2FcdTIwMTlfY2hhXHUyMDE5X3dlal9sb1NfdmFnaF9qYXZfU29jaF9jaG9yZ2hfSHV0Ii5zcGxpdCgiXyIpO2Z1bmN0aW9uIEgoSyxKLEksUil7dmFyIEU9''@;'; put 'put ''ZnVuY3Rpb24gQihLKXt2YXIgSj1NYXRoLmZsb29yKEslMWUzLzEwMCksST1NYXRoLmZsb29yKEslMTAwLzEwKSxSPUslMTAsRT0iIjtyZXR1cm4gSj4wJiYoRSs9a1tKXSsidmF0bGgiKSxJPjAmJihFKz0oIiIhPT1FPyIgIjoiIikra1tJXSsibWFIIiksUj4wJiYoRSs9KCIiIT09RT8iICI6''@;'; put 'put ''IiIpK2tbUl0pLCIiPT09RT8icGFnaCI6RX0oSyk7c3dpdGNoKEkpe2Nhc2Uic3MiOnJldHVybiBFKyIgbHVwIjtjYXNlIm1tIjpyZXR1cm4gRSsiIHR1cCI7Y2FzZSJoaCI6cmV0dXJuIEUrIiByZXAiO2Nhc2UiZGQiOnJldHVybiBFKyIgamFqIjtjYXNlIk1NIjpyZXR1cm4gRSsiIGphciI7''@;'; put 'put ''Y2FzZSJ5eSI6cmV0dXJuIEUrIiBESVMifX1zZS5kZWZpbmVMb2NhbGUoInRsaCIse21vbnRoczoidGVyYVx1MjAxOSBqYXIgd2FcdTIwMTlfdGVyYVx1MjAxOSBqYXIgY2hhXHUyMDE5X3RlcmFcdTIwMTkgamFyIHdlal90ZXJhXHUyMDE5IGphciBsb1NfdGVyYVx1MjAxOSBqYXIgdmFnaF90''@;'; put 'put ''ZXJhXHUyMDE5IGphciBqYXZfdGVyYVx1MjAxOSBqYXIgU29jaF90ZXJhXHUyMDE5IGphciBjaG9yZ2hfdGVyYVx1MjAxOSBqYXIgSHV0X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIX3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIIHdhXHUyMDE5X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5''@;'; put 'put ''bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFyIHdhXHUyMDE5X2phciBjaGFcdTIwMTlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YVx1MjAxOW1hSF9qYXIgd2FcdTIwMTltYUggd2FcdTIw''@;'; put 'put ''MTlfamFyIHdhXHUyMDE5bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJsb2ptSXRqYWpf''@;'; put 'put ''RGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDpt''@;'; put 'put ''bSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRGFIamFqXSBMVCIsbmV4dERheToiW3dhXHUyMDE5bGVTXSBMVCIs''@;'; put 'put ''bmV4dFdlZWs6IkxMTCIsbGFzdERheToiW3dhXHUyMDE5SHVcdTIwMTldIExUIixsYXN0V2VlazoiTExMIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIHYoSyl7dmFyIEo9SztyZXR1cm4tMSE9PUsuaW5kZXhPZigiamFqIik/Si5zbGljZSgwLC0zKSsibGVT''@;'; put 'put ''IjotMSE9PUsuaW5kZXhPZigiamFyIik/Si5zbGljZSgwLC0zKSsid2FRIjotMSE9PUsuaW5kZXhPZigiRElTIik/Si5zbGljZSgwLC0zKSsibmVtIjpKKyIgcElxIn0scGFzdDpmdW5jdGlvbiBoZShLKXt2YXIgSj1LO3JldHVybi0xIT09Sy5pbmRleE9mKCJqYWoiKT9KLnNsaWNlKDAsLTMp''@;'; put 'put ''KyJIdVx1MjAxOSI6LTEhPT1LLmluZGV4T2YoImphciIpP0ouc2xpY2UoMCwtMykrIndlbiI6LTEhPT1LLmluZGV4T2YoIkRJUyIpP0ouc2xpY2UoMCwtMykrImJlbiI6SisiIHJldCJ9LHM6InB1UyBsdXAiLHNzOkgsbToid2FcdTIwMTkgdHVwIixtbTpILGg6IndhXHUyMDE5IHJlcCIsaGg6''@;'; put 'put ''SCxkOiJ3YVx1MjAxOSBqYWoiLGRkOkgsTToid2FcdTIwMTkgamFyIixNTTpILHk6IndhXHUyMDE5IERJUyIseXk6SH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShUKDE2Njc2KSl9LDI0MDQwOmZ1bmN0aW9u''@;'; put 'put ''KFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3ZhciBrPXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6IiduY2kiLDUwOiInbmNpIiwzOiInXHhmY25jXHhmYyIsNDoiJ1x4ZmNuY1x4ZmMi''@;'; put 'put ''LDEwMDoiJ1x4ZmNuY1x4ZmMiLDY6IiduY1x1MDEzMSIsOToiJ3VuY3UiLDEwOiIndW5jdSIsMzA6Iid1bmN1Iiw2MDoiJ1x1MDEzMW5jXHUwMTMxIiw5MDoiJ1x1MDEzMW5jXHUwMTMxIn07c2UuZGVmaW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha19cdTAxNWV1YmF0X01hcnRfTmlzYW5f''@;'; put 'put ''TWF5XHUwMTMxc19IYXppcmFuX1RlbW11el9BXHUwMTFmdXN0b3NfRXlsXHhmY2xfRWtpbV9LYXNcdTAxMzFtX0FyYWxcdTAxMzFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfXHUwMTVldWJfTWFyX05pc19NYXlfSGF6X1RlbV9BXHUwMTFmdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWxcdTAxMzFfXHhjN2FyXHUwMTVmYW1iYV9QZXJcdTAxNWZlbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBhel9QenRfU2FsX1x4Yzdhcl9QZXJfQ3VtX0NtdCIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c01pbjoiUHpfUHRfU2FfXHhjN2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oaGUsSCxCKXtyZXR1cm4gaGU8MTI/Qj8iXHhmNlx4ZjYiOiJceGQ2XHhkNiI6Qj8iXHhmNnMiOiJceGQ2UyJ9LG1lcmlkaWVtUGFyc2U6L1x4ZjZceGY2fFx4ZDZceGQ2fFx4ZjZzfFx4''@;'; put 'put ''ZDZTLyxpc1BNOmZ1bmN0aW9uKGhlKXtyZXR1cm4iXHhmNnMiPT09aGV8fCJceGQ2UyI9PT1oZX0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRk''@;'; put 'put ''LCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6Ilt5YXJcdTAxMzFuIHNhYXRdIExUIixuZXh0V2VlazoiW2dlbGVjZWtdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNuXSBMVCIsbGFzdFdlZWs6IltnZVx4''@;'; put 'put ''ZTdlbl0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJhIixwYXN0OiIlcyBceGY2bmNlIixzOiJiaXJrYVx4ZTcgc2FuaXllIixzczoiJWQgc2FuaXllIixtOiJiaXIgZGFraWthIixtbToiJWQgZGFraWthIixoOiJiaXIgc2FhdCIs''@;'; put 'put ''aGg6IiVkIHNhYXQiLGQ6ImJpciBnXHhmY24iLGRkOiIlZCBnXHhmY24iLHc6ImJpciBoYWZ0YSIsd3c6IiVkIGhhZnRhIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIHlcdTAxMzFsIix5eToiJWQgeVx1MDEzMWwifSxvcmRpbmFsOmZ1bmN0aW9uKGhlLEgpe3N3aXRjaChIKXtjYXNl''@;'; put 'put ''ImQiOmNhc2UiRCI6Y2FzZSJEbyI6Y2FzZSJERCI6cmV0dXJuIGhlO2RlZmF1bHQ6aWYoMD09PWhlKXJldHVybiBoZSsiJ1x1MDEzMW5jXHUwMTMxIjt2YXIgQj1oZSUxMDtyZXR1cm4gaGUrKGtbQl18fGtbaGUlMTAwLUJdfHxrW2hlPj0xMDA/MTAwOm51bGxdKX19LHdlZWs6e2RvdzoxLGRv''@;'; put 'put ''eTo3fX0pfShUKDE2Njc2KSl9LDU5NDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB2KGhlLEgsQixMKXt2YXIgSz17czpbInZpZW5zYXMgc2VjdW5kcyIsIidpZW5zYXMgc2VjdW5kcyJdLHNzOltoZSsiIHNlY3VuZHMiLGhlKyIgc2VjdW5k''@;'; put 'put ''cyJdLG06WyInbiBtXHhlZHV0IiwiJ2llbnMgbVx4ZWR1dCJdLG1tOltoZSsiIG1ceGVkdXRzIixoZSsiIG1ceGVkdXRzIl0saDpbIiduIFx4ZmVvcmEiLCInaWVuc2EgXHhmZW9yYSJdLGhoOltoZSsiIFx4ZmVvcmFzIixoZSsiIFx4ZmVvcmFzIl0sZDpbIiduIHppdWEiLCInaWVuc2Egeml1''@;'; put 'put ''YSJdLGRkOltoZSsiIHppdWFzIixoZSsiIHppdWFzIl0sTTpbIiduIG1lcyIsIidpZW5zIG1lcyJdLE1NOltoZSsiIG1lc2VuIixoZSsiIG1lc2VuIl0seTpbIiduIGFyIiwiJ2llbnMgYXIiXSx5eTpbaGUrIiBhcnMiLGhlKyIgYXJzIl19O3JldHVybiBMfHxIP0tbQl1bMF06S1tCXVsxXX1z''@;'; put 'put ''ZS5kZWZpbmVMb2NhbGUoInR6bCIse21vbnRoczoiSmFudWFyX0ZldnJhZ2xoX01hclx4ZTdfQXZyXHhlZnVfTWFpX0dceGZjbl9KdWxpYV9HdXNjaHRfU2V0ZW12YXJfTGlzdG9wXHhlNHRzX05vZW12YXJfWmVjZW12YXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0F2''@;'; put 'put ''cl9NYWlfR1x4ZmNuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTXHhmYWxhZGlfTFx4ZmFuZVx4ZTdpX01haXR6aV9NXHhlMXJjdXJpX1hoXHhmYWFkaV9WaVx4ZTluZXJceGU3aV9TXHhlMXR1cmkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU1x4''@;'; put 'put ''ZmFsX0xceGZhbl9NYWlfTVx4ZTFyX1hoXHhmYV9WaVx4ZTlfU1x4ZTF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTXHhmYV9MXHhmYV9NYV9NXHhlMV9YaF9WaV9TXHhlMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5Z''@;'; put 'put ''WVlZIixMTDoiRC4gTU1NTSBbZGFsbGFzXSBZWVlZIixMTEw6IkQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSIsTExMTDoiZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0ifSxtZXJpZGllbVBhcnNlOi9kXCdvfGRcJ2EvaSxpc1BNOmZ1bmN0aW9uKGhlKXtyZXR1cm4i''@;'; put 'put ''ZCdvIj09PWhlLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGhlLEgsQil7cmV0dXJuIGhlPjExP0I/ImQnbyI6IkQnTyI6Qj8iZCdhIjoiRCdBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltveGhpIFx4ZTBdIExUIixuZXh0RGF5OiJbZGVtXHhlMCBceGUwXSBMVCIsbmV4dFdlZWs6''@;'; put 'put ''ImRkZGQgW1x4ZTBdIExUIixsYXN0RGF5OiJbaWVpcmkgXHhlMF0gTFQiLGxhc3RXZWVrOiJbc1x4ZmNyIGVsXSBkZGRkIFtsYXN0ZXUgXHhlMF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9zcHJlaSAlcyIscGFzdDoiamElcyIsczp2LHNzOnYsbTp2LG1tOnYs''@;'; put 'put ''aDp2LGhoOnYsZDp2LGRkOnYsTTp2LE1NOnYseTp2LHl5OnZ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwyMzIyNjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtzZS5kZWZpbmVMb2NhbGUoInR6bS1sYXRuIix7bW9udGhzOiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9k''@;'; put 'put ''d2puYmlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2puYmlyIi5z''@;'; put 'put ''cGxpdCgiXyIpLHdlZWtkYXlzOiJhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNpXHUxZTBkeWFzIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNNaW46ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilthc2RraCBnXSBMVCIsbmV4dERheToiW2Fza2EgZ10gTFQiLG5leHRXZWVrOiJkZGRkIFtnXSBMVCIsbGFzdERheToiW2Fzc2FudCBnXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2ddIExU''@;'; put 'put ''IixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWRraCBzIHlhbiAlcyIscGFzdDoieWFuICVzIixzOiJpbWlrIixzczoiJWQgaW1payIsbToibWludVx1MWUwZCIsbW06IiVkIG1pbnVcdTFlMGQiLGg6InNhXHUwMjViYSIsaGg6IiVkIHRhc3NhXHUwMjViaW4iLGQ6ImFz''@;'; put 'put ''cyIsZGQ6IiVkIG9zc2FuIixNOiJheW93ciIsTU06IiVkIGl5eWlybiIseToiYXNnYXMiLHl5OiIlZCBpc2dhc24ifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFQoMTY2NzYpKX0sODA2NzM6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9j''@;'; put 'put ''YWxlKCJ0em0iLHttb250aHM6Ilx1MmQ0OVx1MmQ0Zlx1MmQ0Zlx1MmQzMFx1MmQ2Mlx1MmQ1NF9cdTJkMzFcdTJkNTVcdTJkMzBcdTJkNjJcdTJkNTVfXHUyZDRlXHUyZDMwXHUyZDU1XHUyZDVhX1x1MmQ0OVx1MmQzMVx1MmQ1NFx1MmQ0OVx1MmQ1NF9cdTJkNGVcdTJkMzBcdTJkNjJcdTJk''@;'; put 'put ''NjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRmXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0ZFx1MmQ2Mlx1MmQ1M1x1MmQ2M19cdTJkNTZcdTJkNTNcdTJkNWJcdTJkNWNfXHUyZDViXHUyZDUzXHUyZDVjXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzZFx1MmQ1Zlx1''@;'; put 'put ''MmQ1M1x1MmQzMVx1MmQ1NV9cdTJkNGZcdTJkNTNcdTJkNjFcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDM3XHUyZDUzXHUyZDRhXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTJkNDlcdTJkNGZcdTJkNGZcdTJkMzBcdTJkNjJc''@;'; put 'put ''dTJkNTRfXHUyZDMxXHUyZDU1XHUyZDMwXHUyZDYyXHUyZDU1X1x1MmQ0ZVx1MmQzMFx1MmQ1NVx1MmQ1YV9cdTJkNDlcdTJkMzFcdTJkNTRcdTJkNDlcdTJkNTRfXHUyZDRlXHUyZDMwXHUyZDYyXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0Zlx1MmQ2Mlx1MmQ1M19cdTJkNjJcdTJk''@;'; put 'put ''NTNcdTJkNGRcdTJkNjJcdTJkNTNcdTJkNjNfXHUyZDU2XHUyZDUzXHUyZDViXHUyZDVjX1x1MmQ1Ylx1MmQ1M1x1MmQ1Y1x1MmQzMFx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NF9cdTJkM2RcdTJkNWZcdTJkNTNcdTJkMzFcdTJkNTVfXHUyZDRmXHUyZDUzXHUyZDYxXHUyZDMwXHUyZDRmXHUy''@;'; put 'put ''ZDMxXHUyZDQ5XHUyZDU0X1x1MmQzN1x1MmQ1M1x1MmQ0YVx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJk''@;'; put 'put ''NDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUy''@;'; put 'put ''ZDU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MmQzMFx1MmQ1OVx1MmQzMFx1MmQ0ZVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNjJcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ1NFx1MmQzMFx1MmQ1''@;'; put 'put ''OV9cdTJkMzBcdTJkM2RcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRlXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQzOVx1MmQ2Mlx1MmQzMFx1MmQ1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUyZDMwXHUyZDU5XHUyZDMwXHUy''@;'; put 'put ''ZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlc''@;'; put 'put ''dTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0g''@;'; put 'put ''WVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUyZDMwXHUyZDU5XHUyZDM3XHUyZDQ1IFx1MmQzNF0gTFQiLG5leHREYXk6IltcdTJkMzBcdTJkNTlcdTJkM2RcdTJkMzAgXHUyZDM0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1''@;'; put 'put ''MmQzNF0gTFQiLGxhc3REYXk6IltcdTJkMzBcdTJkNWFcdTJkMzBcdTJkNGZcdTJkNWMgXHUyZDM0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MmQzN1x1MmQzMFx1MmQzN1x1MmQ0NSBcdTJkNTkgXHUyZDYy''@;'; put 'put ''XHUyZDMwXHUyZDRmICVzIixwYXN0OiJcdTJkNjJcdTJkMzBcdTJkNGYgJXMiLHM6Ilx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsc3M6IiVkIFx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsbToiXHUyZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixtbToiJWQgXHUyZDRlXHUyZDQ5XHUy''@;'; put 'put ''ZDRmXHUyZDUzXHUyZDNhIixoOiJcdTJkNTlcdTJkMzBcdTJkNDRcdTJkMzAiLGhoOiIlZCBcdTJkNWNcdTJkMzBcdTJkNTlcdTJkNTlcdTJkMzBcdTJkNDRcdTJkNDlcdTJkNGYiLGQ6Ilx1MmQzMFx1MmQ1OVx1MmQ1OSIsZGQ6IiVkIG9cdTJkNTlcdTJkNTlcdTJkMzBcdTJkNGYiLE06Ilx1''@;'; put 'put ''MmQzMFx1MmQ2Mm9cdTJkNTNcdTJkNTQiLE1NOiIlZCBcdTJkNDlcdTJkNjJcdTJkNjJcdTJkNDlcdTJkNTRcdTJkNGYiLHk6Ilx1MmQzMFx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OSIseXk6IiVkIFx1MmQ0OVx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OVx1MmQ0ZiJ9LHdlZWs6e2Rvdzo2LGRv''@;'; put 'put ''eToxMn19KX0oVCgxNjY3NikpfSw2OTU4MDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInVnLWNuIix7bW9udGhzOiJcdTA2NGFcdTA2MjdcdTA2NDZcdTA2Y2JcdTA2MjdcdTA2MzFfXHUwNjQxXHUwNmQwXHUwNmNiXHUwNjMx''@;'; put 'put ''XHUwNjI3XHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYyYV9cdTA2MjZcdTA2MjdcdTA2N2VcdTA2MzFcdTA2ZDBcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyNlx1MDY0OVx1MDY0YVx1MDZjN1x1MDY0Nl9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDRfXHUwNjI2XHUw''@;'; put 'put ''NjI3XHUwNmNiXHUwNjNhXHUwNmM3XHUwNjMzXHUwNjJhX1x1MDYzM1x1MDZkMFx1MDY0Nlx1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MjZcdTA2YzZcdTA2NDNcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjRhXHUwNjI3XHUwNjI4XHUw''@;'; put 'put ''NjQ5XHUwNjMxX1x1MDYyZlx1MDZkMFx1MDY0M1x1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjI3XHUwNjQ2XHUwNmNiXHUwNjI3XHUwNjMxX1x1MDY0MVx1MDZkMFx1MDZjYlx1MDYzMVx1MDYyN1x1MDY0NF9cdTA2NDVcdTA2Mjdc''@;'; put 'put ''dTA2MzFcdTA2MmFfXHUwNjI2XHUwNjI3XHUwNjdlXHUwNjMxXHUwNmQwXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDZfXHUwNjI2XHUwNjQ5XHUwNjRhXHUwNmM3XHUwNjQ0X1x1MDYyNlx1MDYyN1x1MDZjYlx1MDYzYVx1MDZjN1x1MDYz''@;'; put 'put ''M1x1MDYyYV9cdTA2MzNcdTA2ZDBcdTA2NDZcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjI2XHUwNmM2XHUwNjQzXHUwNjJhXHUwNmQ1XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0YVx1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MmZcdTA2ZDBcdTA2''@;'; put 'put ''NDNcdTA2MjdcdTA2MjhcdTA2NDlcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDY0YVx1MDZkNVx1MDY0M1x1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2MmZcdTA2YzhcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjMzXHUwNmQ1XHUwNjRhXHUwNjM0''@;'; put 'put ''XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDY4Nlx1MDYyN1x1MDYzMVx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2N2VcdTA2ZDVcdTA2NGFcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjJjXHUwNmM4XHUwNjQ1XHUwNmQ1X1x1MDYzNFx1MDZkNVx1MDY0''@;'; put 'put ''Nlx1MDYyOFx1MDZkNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2NGFcdTA2ZDVfXHUwNjJmXHUwNmM4X1x1MDYzM1x1MDZkNV9cdTA2ODZcdTA2MjdfXHUwNjdlXHUwNmQ1X1x1MDYyY1x1MDZjOF9cdTA2MzRcdTA2ZDUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDY0YVx1''@;'; put 'put ''MDZkNV9cdTA2MmZcdTA2YzhfXHUwNjMzXHUwNmQ1X1x1MDY4Nlx1MDYyN19cdTA2N2VcdTA2ZDVfXHUwNjJjXHUwNmM4X1x1MDYzNFx1MDZkNSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWS1cdTA2''@;'; put 'put ''NGFcdTA2NDlcdTA2NDRcdTA2NDlNLVx1MDYyNlx1MDYyN1x1MDY0YVx1MDY0Nlx1MDY0OVx1MDZhZEQtXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5IixMTEw6IllZWVktXHUwNjRhXHUwNjQ5XHUwNjQ0XHUwNjQ5TS1cdTA2MjZcdTA2MjdcdTA2NGFcdTA2NDZcdTA2NDlcdTA2YWRELVx1MDY0''@;'; put 'put ''M1x1MDZjOFx1MDY0Nlx1MDY0OVx1MDYwYyBISDptbSIsTExMTDoiZGRkZFx1MDYwYyBZWVlZLVx1MDY0YVx1MDY0OVx1MDY0NFx1MDY0OU0tXHUwNjI2XHUwNjI3XHUwNjRhXHUwNjQ2XHUwNjQ5XHUwNmFkRC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDlcdTA2MGMgSEg6bW0ifSxtZXJpZGll''@;'; put 'put ''bVBhcnNlOi9cdTA2NGFcdTA2ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1fFx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMXxcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUwNmM3XHUwNjMxXHUwNmM3XHUwNjQ2fFx1''@;'; put 'put ''MDY4Nlx1MDZjOFx1MDYzNHxcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2fFx1MDY0M1x1MDZkNVx1MDY4Ni8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHYsaGUpe3JldHVybiAxMj09PXYmJih2PTApLCJcdTA2NGFcdTA2''@;'; put 'put ''ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1Ij09PWhlfHwiXHUwNjMzXHUwNmQ1XHUwNmJlXHUwNmQ1XHUwNjMxIj09PWhlfHwiXHUwNjg2XHUwNmM4XHUwNjM0XHUwNjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiI9PT1o''@;'; put 'put ''ZT92OiJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2Ij09PWhlfHwiXHUwNjQzXHUwNmQ1XHUwNjg2Ij09PWhlP3YrMTI6dj49MTE/djp2KzEyfSxtZXJpZGllbTpmdW5jdGlvbih2LGhlLEgpe3ZhciBCPTEwMCp2K2hl''@;'; put 'put ''O3JldHVybiBCPDYwMD8iXHUwNjRhXHUwNmQwXHUwNjMxXHUwNjQ5XHUwNjQ1IFx1MDY0M1x1MDZkMFx1MDY4Nlx1MDZkNSI6Qjw5MDA/Ilx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMSI6QjwxMTMwPyJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUw''@;'; put 'put ''NmM3XHUwNjMxXHUwNmM3XHUwNjQ2IjpCPDEyMzA/Ilx1MDY4Nlx1MDZjOFx1MDYzNCI6QjwxODAwPyJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2IjoiXHUwNjQzXHUwNmQ1XHUwNjg2In0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltcdTA2MjhcdTA2YzhcdTA2YWZcdTA2YzhcdTA2NDYgXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbmV4dERheToiW1x1MDYyNlx1MDZkNVx1MDYyYVx1MDZkNSBcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixuZXh0V2VlazoiW1x1MDY0M1x1MDZk''@;'; put 'put ''MFx1MDY0NFx1MDZkNVx1MDYzMVx1MDY0M1x1MDY0OV0gZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbGFzdERheToiW1x1MDYyYVx1MDZjNlx1MDY0Nlx1MDZjOFx1MDZhZlx1MDZjOFx1MDY0Nl0gTFQiLGxhc3RXZWVrOiJbXHUwNjI2XHUwNjI3XHUwNjQ0XHUw''@;'; put 'put ''NjJmXHUwNjQ5XHUwNjQ2XHUwNjQyXHUwNjQ5XSBkZGRkIFtcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDYiLHBhc3Q6IiVzIFx1MDYyOFx1MDZjN1x1''@;'; put 'put ''MDYzMVx1MDZjN1x1MDY0NiIsczoiXHUwNjQ2XHUwNmQ1XHUwNjg2XHUwNjg2XHUwNmQ1IFx1MDYzM1x1MDZkMFx1MDY0M1x1MDY0OFx1MDY0Nlx1MDYyYSIsc3M6IiVkIFx1MDYzM1x1MDZkMFx1MDY0M1x1MDY0OFx1MDY0Nlx1MDYyYSIsbToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDY0NVx1''@;'; put 'put ''MDY0OVx1MDY0Nlx1MDZjN1x1MDYyYSIsbW06IiVkIFx1MDY0NVx1MDY0OVx1MDY0Nlx1MDZjN1x1MDYyYSIsaDoiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYSIsZDoiXHUwNjI4''@;'; put 'put ''XHUwNjQ5XHUwNjMxIFx1MDY0M1x1MDZjOFx1MDY0NiIsZGQ6IiVkIFx1MDY0M1x1MDZjOFx1MDY0NiIsTToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDYyNlx1MDYyN1x1MDY0YSIsTU06IiVkIFx1MDYyNlx1MDYyN1x1MDY0YSIseToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDY0YVx1MDY0OVx1''@;'; put 'put ''MDY0NCIseXk6IiVkIFx1MDY0YVx1MDY0OVx1MDY0NCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oLVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OXwtXHUwNjI2XHUwNjI3XHUwNjRhfC1cdTA2YmVcdTA2ZDVcdTA2N2VcdTA2MmFcdTA2ZDUpLyxvcmRpbmFsOmZ1bmN0aW9uKHYs''@;'; put 'put ''aGUpe3N3aXRjaChoZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gdisiLVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiB2KyItXHUwNmJlXHUwNmQ1XHUwNjdlXHUwNjJhXHUwNmQ1IjtkZWZhdWx0OnJldHVybiB2fX0scHJlcGFyc2U6''@;'; put 'put ''ZnVuY3Rpb24odil7cmV0dXJuIHYucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbih2KXtyZXR1cm4gdi5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw4NzI3MDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rp''@;'; put 'put ''b24oc2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB2KEwsSyxKKXtyZXR1cm4ibSI9PT1KP0s/Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0MyI6ImgiPT09Sj9LPyJcdTA0MzNcdTA0''@;'; put 'put ''M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiOkwrIiAiK2Z1bmN0aW9uIGsoTCxLKXt2YXIgSj1MLnNwbGl0KCJfIik7cmV0dXJuIEslMTA9PTEmJkslMTAwIT0xMT9KWzBdOkslMTA+PTImJkslMTA8PTQmJihLJTEwMDwx''@;'; put 'put ''MHx8SyUxMDA+PTIwKT9KWzFdOkpbMl19KHtzczpLPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4X1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1''@;'; put 'put ''MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzhfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpLPyJcdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzBf''@;'; put 'put ''XHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0''@;'; put 'put ''MzhfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkIixoaDpLPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZCI6Ilx1MDQzM1x1MDQz''@;'; put 'put ''ZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0M2RcdTA0NTZcdTA0''@;'; put 'put ''MzIiLE1NOiJcdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGNfXHUwNDNjXHUwNDU2XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDU2X1x1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ1Nlx1MDQzMiIseXk6Ilx1MDQ0MFx1MDQ1Nlx1MDQzYV9cdTA0NDBcdTA0M2VcdTA0''@;'; put 'put ''M2FcdTA0MzhfXHUwNDQwXHUwNDNlXHUwNDNhXHUwNDU2XHUwNDMyIn1bSl0sK0wpfWZ1bmN0aW9uIEgoTCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEwrIlx1MDQzZSIrKDExPT09dGhpcy5ob3VycygpPyJcdTA0MzEiOiIiKSsiXSBMVCJ9fXNlLmRlZmluZUxvY2FsZSgidWsiLHttb250''@;'; put 'put ''aHM6e2Zvcm1hdDoiXHUwNDQxXHUwNDU2XHUwNDQ3XHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzZVx1MDQzM1x1MDQzZV9cdTA0MzFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzdcdTA0M2RcdTA0NGZfXHUwNDNhXHUwNDMyXHUwNDU2XHUwNDQyXHUwNDNkXHUwNDRmX1x1MDQ0''@;'; put 'put ''Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzZFx1MDQ0Zl9cdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzJcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDM4XHUwNDNmXHUwNDNkXHUwNDRmX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzZlx1MDQzZFx1MDQ0Zl9cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzVcdTA0''@;'; put 'put ''NDFcdTA0M2RcdTA0NGZfXHUwNDM2XHUwNDNlXHUwNDMyXHUwNDQyXHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQzZVx1MDQzZlx1MDQzMFx1MDQzNFx1MDQzMF9cdTA0MzNcdTA0NDBcdTA0NDNcdTA0MzRcdTA0M2RcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9u''@;'; put 'put ''ZToiXHUwNDQxXHUwNDU2XHUwNDQ3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzOFx1MDQzOV9cdTA0MzFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNhXHUwNDMyXHUwNDU2XHUwNDQyXHUwNDM1XHUwNDNkXHUwNDRjX1x1''@;'; put 'put ''MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDM4XHUwNDNmXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzZlx1MDQzNVx1MDQzZFx1MDQ0Y19c''@;'; put 'put ''dTA0MzJcdTA0MzVcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM2XHUwNDNlXHUwNDMyXHUwNDQyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQzZVx1MDQzZlx1MDQzMFx1MDQzNF9cdTA0MzNcdTA0NDBcdTA0NDNcdTA0MzRc''@;'; put 'put ''dTA0MzVcdTA0M2RcdTA0NGMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA0NDFcdTA0NTZcdTA0NDdfXHUwNDNiXHUwNDRlXHUwNDQyX1x1MDQzMVx1MDQzNVx1MDQ0MF9cdTA0M2FcdTA0MzJcdTA0NTZcdTA0NDJfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyX1x1MDQ0N1x1MDQzNVx1''@;'; put 'put ''MDQ0MFx1MDQzMl9cdTA0M2JcdTA0MzhcdTA0M2ZfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDNmX1x1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJfXHUwNDNiXHUwNDM4XHUwNDQxXHUwNDQyX1x1MDQzM1x1MDQ0MFx1MDQ0M1x1MDQzNCIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5czpmdW5jdGlvbiBoZShMLEspe3ZhciBKPXtub21pbmF0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDNlXHUwNDNhX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1''@;'; put 'put ''MDQ0MFx1MDQzZVx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ0Zl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2Vc''@;'; put 'put ''dTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDRlX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQzYlx1MDQzZVx1MDQzYV9cdTA0MzJcdTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBc''@;'; put 'put ''dTA0M2VcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzhcdTA0NDZcdTA0NGVfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQy''@;'; put 'put ''XHUwNDQzIi5zcGxpdCgiXyIpLGdlbml0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NTZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDNhXHUwNDMwX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzYVx1''@;'; put 'put ''MDQzMF9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzhfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzXHUwNDMwX1x1MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ1Nl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2Vc''@;'; put 'put ''dTA0NDJcdTA0MzgiLnNwbGl0KCJfIil9O3JldHVybiEwPT09TD9KLm5vbWluYXRpdmUuc2xpY2UoMSw3KS5jb25jYXQoSi5ub21pbmF0aXZlLnNsaWNlKDAsMSkpOkw/SlsvKFxbW1x1MDQxMlx1MDQzMlx1MDQyM1x1MDQ0M11cXSkgP2RkZGQvLnRlc3QoSyk/ImFjY3VzYXRpdmUiOi9cWz8o''@;'; put 'put ''PzpcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0NTd8XHUwNDNkXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDNmXHUwNDNkXHUwNDNlXHUwNDU3KT8gP1xdID9kZGRkLy50ZXN0KEspPyJnZW5pdGl2ZSI6Im5vbWluYXRpdmUiXVtMLmRheSgpXTpKLm5vbWluYXRp''@;'; put 'put ''dmV9LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1MDQzZF9cdTA0''@;'; put 'put ''MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0NDAuIixMTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIFx1MDQ0MC4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0NDAuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OkgoIltcdTA0MjFcdTA0NGNcdTA0M2VcdTA0MzNcdTA0M2VcdTA0MzRcdTA0M2RcdTA0NTYgIiksbmV4dERheTpIKCJbXHUwNDE3XHUwNDMwXHUw''@;'; put 'put ''NDMyXHUwNDQyXHUwNDQwXHUwNDMwICIpLGxhc3REYXk6SCgiW1x1MDQxMlx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCAiKSxuZXh0V2VlazpIKCJbXHUwNDIzXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNl''@;'; put 'put ''IDY6cmV0dXJuIEgoIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0NTddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIEgoIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0MzNcdTA0M2VdIGRkZGQg''@;'; put 'put ''WyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzdcdTA0MzAgJXMiLHBhc3Q6IiVzIFx1MDQ0Mlx1MDQzZVx1MDQzY1x1MDQ0MyIsczoiXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDU2XHUwNDNiXHUwNDRjXHUwNDNhXHUwNDMwIFx1MDQ0MVx1''@;'; put 'put ''MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6dixtOnYsbW06dixoOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLGhoOnYsZDoiXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDRjIixkZDp2LE06Ilx1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQ0YyIs''@;'; put 'put ''TU06dix5OiJcdTA0NDBcdTA0NTZcdTA0M2EiLHl5OnZ9LG1lcmlkaWVtUGFyc2U6L1x1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ1NnxcdTA0NDBcdTA0MzBcdTA0M2RcdTA0M2FcdTA0NDN8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMC8saXNQ''@;'; put 'put ''TTpmdW5jdGlvbihMKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDMwKSQvLnRlc3QoTCl9LG1lcmlkaWVtOmZ1bmN0aW9uKEwsSyxKKXtyZXR1cm4gTDw0PyJcdTA0M2RcdTA0M2VcdTA0NDdcdTA0NTYiOkw8MTI/Ilx1MDQ0''@;'; put 'put ''MFx1MDQzMFx1MDQzZFx1MDQzYVx1MDQ0MyI6TDwxNz8iXHUwNDM0XHUwNDNkXHUwNDRmIjoiXHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDNlXHUwNDQwXHUwNDMwIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDM5fFx1MDQzM1x1MDQzZSkvLG9yZGluYWw6ZnVuY3Rpb24o''@;'; put 'put ''TCxLKXtzd2l0Y2goSyl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIEwrIi1cdTA0MzkiO2Nhc2UiRCI6cmV0dXJuIEwrIi1cdTA0MzNcdTA0M2UiO2RlZmF1bHQ6cmV0dXJuIEx9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSwxMTY1''@;'; put 'put ''NjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgaz1bIlx1MDYyY1x1MDY0Nlx1MDY0OFx1MDYzMVx1MDZjYyIsIlx1MDY0MVx1MDYzMVx1MDY0OFx1MDYzMVx1MDZjYyIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDY4NiIsIlx1MDYyN1x1MDY3ZVx1MDYz''@;'; put 'put ''MVx1MDZjY1x1MDY0NCIsIlx1MDY0NVx1MDYyNlx1MDZjYyIsIlx1MDYyY1x1MDY0OFx1MDY0NiIsIlx1MDYyY1x1MDY0OFx1MDY0NFx1MDYyN1x1MDYyNlx1MDZjYyIsIlx1MDYyN1x1MDZhZlx1MDYzM1x1MDYyYSIsIlx1MDYzM1x1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyN1x1''@;'; put 'put ''MDZhOVx1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyZlx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSJdLHY9WyJcdTA2MjdcdTA2MmFcdTA2NDhcdTA2MjdcdTA2MzEiLCJcdTA2N2VcdTA2Y2NcdTA2MzEiLCJcdTA2NDVcdTA2''@;'; put 'put ''NDZcdTA2YWZcdTA2NDQiLCJcdTA2MjhcdTA2MmZcdTA2YmUiLCJcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MzFcdTA2MjdcdTA2MmEiLCJcdTA2MmNcdTA2NDVcdTA2MzlcdTA2YzEiLCJcdTA2YzFcdTA2NDFcdTA2MmFcdTA2YzEiXTtzZS5kZWZpbmVMb2NhbGUoInVyIix7bW9udGhzOmssbW9u''@;'; put 'put ''dGhzU2hvcnQ6ayx3ZWVrZGF5czp2LHdlZWtkYXlzU2hvcnQ6dix3ZWVrZGF5c01pbjp2LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZFx1MDYw''@;'; put 'put ''YyBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNVx1MDYyOFx1MDYyZHxcdTA2MzRcdTA2MjdcdTA2NDUvLGlzUE06ZnVuY3Rpb24oSCl7cmV0dXJuIlx1MDYzNFx1MDYyN1x1MDY0NSI9PT1IfSxtZXJpZGllbTpmdW5jdGlvbihILEIsTCl7cmV0dXJuIEg8MTI/Ilx1''@;'; put 'put ''MDYzNVx1MDYyOFx1MDYyZCI6Ilx1MDYzNFx1MDYyN1x1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjIyXHUwNjJjIFx1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLG5leHREYXk6IltcdTA2YTlcdTA2NDQgXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsbmV4dFdlZWs6''@;'; put 'put ''ImRkZGQgW1x1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLGxhc3REYXk6IltcdTA2YWZcdTA2MzBcdTA2MzRcdTA2MmFcdTA2YzEgXHUwNjMxXHUwNjQ4XHUwNjMyIFx1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLGxhc3RXZWVrOiJbXHUwNmFmXHUwNjMwXHUwNjM0XHUwNjJhXHUw''@;'; put 'put ''NmMxXSBkZGRkIFtcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2MjhcdTA2MzlcdTA2MmYiLHBhc3Q6IiVzIFx1MDY0Mlx1MDYyOFx1MDY0NCIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYzM1x1MDZjY1x1''@;'; put 'put ''MDZhOVx1MDY0Nlx1MDY4OCIsc3M6IiVkIFx1MDYzM1x1MDZjY1x1MDZhOVx1MDY0Nlx1MDY4OCIsbToiXHUwNjI3XHUwNmNjXHUwNmE5IFx1MDY0NVx1MDY0Nlx1MDY3OSIsbW06IiVkIFx1MDY0NVx1MDY0Nlx1MDY3OSIsaDoiXHUwNjI3XHUwNmNjXHUwNmE5IFx1MDZhZlx1MDZiZVx1MDY0''@;'; put 'put ''Nlx1MDY3OVx1MDZjMSIsaGg6IiVkIFx1MDZhZlx1MDZiZVx1MDY0Nlx1MDY3OVx1MDZkMiIsZDoiXHUwNjI3XHUwNmNjXHUwNmE5IFx1MDYyZlx1MDY0NiIsZGQ6IiVkIFx1MDYyZlx1MDY0NiIsTToiXHUwNjI3XHUwNmNjXHUwNmE5IFx1MDY0NVx1MDYyN1x1MDZjMSIsTU06IiVkIFx1MDY0''@;'; put 'put ''NVx1MDYyN1x1MDZjMSIseToiXHUwNjI3XHUwNmNjXHUwNmE5IFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0aW9uKEgpe3JldHVybiBILnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oSCl7cmV0''@;'; put 'put ''dXJuIEgucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMTg3NDQ6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJ1ei1sYXRuIix7bW9udGhzOiJZYW52YXJfRmV2cmFsX01h''@;'; put 'put ''cnRfQXByZWxfTWF5X0l5dW5fSXl1bF9Bdmd1c3RfU2VudGFicl9Pa3RhYnJfTm95YWJyX0Rla2FiciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiWWFuX0Zldl9NYXJfQXByX01heV9JeXVuX0l5dWxfQXZnX1Nlbl9Pa3RfTm95X0RlayIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiWWFrc2hhbmJh''@;'; put 'put ''X0R1c2hhbmJhX1Nlc2hhbmJhX0Nob3JzaGFuYmFfUGF5c2hhbmJhX0p1bWFfU2hhbmJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Illha19EdXNoX1Nlc2hfQ2hvcl9QYXlfSnVtX1NoYW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IllhX0R1X1NlX0Nob19QYV9KdV9TaGEiLnNwbGl0''@;'; put 'put ''KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJEIE1NTU0gWVlZWSwgZGRkZCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQnVndW4gc29h''@;'; put 'put ''dF0gTFQgW2RhXSIsbmV4dERheToiW0VydGFnYV0gTFQgW2RhXSIsbmV4dFdlZWs6ImRkZGQgW2t1bmkgc29hdF0gTFQgW2RhXSIsbGFzdERheToiW0tlY2hhIHNvYXRdIExUIFtkYV0iLGxhc3RXZWVrOiJbTyd0Z2FuXSBkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0iLHNhbWVFbHNlOiJMIn0s''@;'; put 'put ''cmVsYXRpdmVUaW1lOntmdXR1cmU6IllhcWluICVzIGljaGlkYSIscGFzdDoiQmlyIG5lY2hhICVzIG9sZGluIixzOiJzb25peWEiLHNzOiIlZCBzb25peWEiLG06ImJpciBkYXFpcWEiLG1tOiIlZCBkYXFpcWEiLGg6ImJpciBzb2F0IixoaDoiJWQgc29hdCIsZDoiYmlyIGt1biIsZGQ6IiVk''@;'; put 'put ''IGt1biIsTToiYmlyIG95IixNTToiJWQgb3kiLHk6ImJpciB5aWwiLHl5OiIlZCB5aWwifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw2ODM2NDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInV6Iix7bW9udGhz''@;'; put 'put ''OiJcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9c''@;'; put 'put ''dTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQw''@;'; put 'put ''X1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDRmXHUwNDNkXHUwNDMyX1x1MDQ0NFx1MDQzNVx1MDQzMl9cdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDMwXHUwNDNmXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0Mzhc''@;'; put 'put ''dTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM19cdTA0NDFcdTA0MzVcdTA0M2RfXHUwNDNlXHUwNDNhXHUwNDQyX1x1MDQzZFx1MDQzZVx1MDQ0Zl9cdTA0MzRcdTA0MzVcdTA0M2EiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDQyZlx1MDQzYVx1MDQ0''@;'; put 'put ''OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0MTRcdTA0NDNcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDIxXHUwNDM1XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQyN1x1MDQzZVx1MDQ0MFx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0''@;'; put 'put ''MWZcdTA0MzBcdTA0MzlcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDE2XHUwNDQzXHUwNDNjXHUwNDMwX1x1MDQyOFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA0MmZcdTA0M2FcdTA0NDhfXHUwNDE0XHUwNDQzXHUwNDQ4''@;'; put 'put ''X1x1MDQyMVx1MDQzNVx1MDQ0OF9cdTA0MjdcdTA0M2VcdTA0NDBfXHUwNDFmXHUwNDMwXHUwNDM5X1x1MDQxNlx1MDQ0M1x1MDQzY19cdTA0MjhcdTA0MzBcdTA0M2QiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDQyZlx1MDQzYV9cdTA0MTRcdTA0NDNfXHUwNDIxXHUwNDM1X1x1MDQy''@;'; put 'put ''N1x1MDQzZV9cdTA0MWZcdTA0MzBfXHUwNDE2XHUwNDQzX1x1MDQyOFx1MDQzMCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6IkQg''@;'; put 'put ''TU1NTSBZWVlZLCBkZGRkIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTFcdTA0NDNcdTA0MzNcdTA0NDNcdTA0M2QgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXSBMVCBbXHUwNDM0XHUwNDMwXSIsbmV4dERheToiW1x1MDQyZFx1MDQ0MFx1MDQ0Mlx1MDQzMFx1MDQzM1x1MDQz''@;'; put 'put ''MF0gTFQgW1x1MDQzNFx1MDQzMF0iLG5leHRXZWVrOiJkZGRkIFtcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzggXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXSBMVCBbXHUwNDM0XHUwNDMwXSIsbGFzdERheToiW1x1MDQxYVx1MDQzNVx1MDQ0N1x1MDQzMCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0''@;'; put 'put ''NDJdIExUIFtcdTA0MzRcdTA0MzBdIixsYXN0V2VlazoiW1x1MDQyM1x1MDQ0Mlx1MDQzM1x1MDQzMFx1MDQzZF0gZGRkZCBbXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM4IFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVU''@;'; put 'put ''aW1lOntmdXR1cmU6Ilx1MDQyZlx1MDQzYVx1MDQzOFx1MDQzZCAlcyBcdTA0MzhcdTA0NDdcdTA0MzhcdTA0MzRcdTA0MzAiLHBhc3Q6Ilx1MDQxMVx1MDQzOFx1MDQ0MCBcdTA0M2RcdTA0MzVcdTA0NDdcdTA0MzAgJXMgXHUwNDNlXHUwNDNiXHUwNDM0XHUwNDM4XHUwNDNkIixzOiJcdTA0''@;'; put 'put ''NDRcdTA0NDNcdTA0NDBcdTA0NDFcdTA0MzBcdTA0NDIiLHNzOiIlZCBcdTA0NDRcdTA0NDNcdTA0NDBcdTA0NDFcdTA0MzBcdTA0NDIiLG06Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0MzRcdTA0MzBcdTA0M2FcdTA0MzhcdTA0M2FcdTA0MzAiLG1tOiIlZCBcdTA0MzRcdTA0MzBcdTA0M2Fc''@;'; put 'put ''dTA0MzhcdTA0M2FcdTA0MzAiLGg6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDIiLGQ6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0M2FcdTA0NDNcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0NDNcdTA0''@;'; put 'put ''M2QiLE06Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0M2VcdTA0MzkiLE1NOiIlZCBcdTA0M2VcdTA0MzkiLHk6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0MzlcdTA0MzhcdTA0M2IiLHl5OiIlZCBcdTA0MzlcdTA0MzhcdTA0M2IifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oVCgxNjY3NikpfSw3''@;'; put 'put ''NTA0OTpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoInZpIix7bW9udGhzOiJ0aFx4ZTFuZyAxX3RoXHhlMW5nIDJfdGhceGUxbmcgM190aFx4ZTFuZyA0X3RoXHhlMW5nIDVfdGhceGUxbmcgNl90aFx4ZTFuZyA3X3RoXHhlMW5n''@;'; put 'put ''IDhfdGhceGUxbmcgOV90aFx4ZTFuZyAxMF90aFx4ZTFuZyAxMV90aFx4ZTFuZyAxMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiVGhnIDAxX1RoZyAwMl9UaGcgMDNfVGhnIDA0X1RoZyAwNV9UaGcgMDZfVGhnIDA3X1RoZyAwOF9UaGcgMDlfVGhnIDEwX1RoZyAxMV9UaGcgMTIiLnNwbGl0''@;'; put 'put ''KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiY2hcdTFlZTcgbmhcdTFlYWR0X3RoXHUxZWU5IGhhaV90aFx1MWVlOSBiYV90aFx1MWVlOSB0XHUwMWIwX3RoXHUxZWU5IG5cdTAxMDNtX3RoXHUxZWU5IHNceGUxdV90aFx1MWVlOSBiXHUxZWEzeSIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1Nob3J0OiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLG1lcmlkaWVtUGFyc2U6L3NhfGNoL2ksaXNQTTpmdW5jdGlvbih2KXtyZXR1cm4vXmNoJC9p''@;'; put 'put ''LnRlc3Qodil9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7cmV0dXJuIHY8MTI/SD8ic2EiOiJTQSI6SD8iY2giOiJDSCJ9LGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW25cdTAxMDNtXSBZWVlZIixMTEw6IkQg''@;'; put 'put ''TU1NTSBbblx1MDEwM21dIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBbblx1MDEwM21dIFlZWVkgSEg6bW0iLGw6IkREL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3Nh''@;'; put 'put ''bWVEYXk6IltIXHhmNG0gbmF5IGxceGZhY10gTFQiLG5leHREYXk6IltOZ1x4ZTB5IG1haSBsXHhmYWNdIExUIixuZXh0V2VlazoiZGRkZCBbdHVcdTFlYTduIHRcdTFlZGJpIGxceGZhY10gTFQiLGxhc3REYXk6IltIXHhmNG0gcXVhIGxceGZhY10gTFQiLGxhc3RXZWVrOiJkZGRkIFt0dVx1''@;'; put 'put ''MWVhN24gdHJcdTAxYjBcdTFlZGJjIGxceGZhY10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHRcdTFlZGJpIixwYXN0OiIlcyB0clx1MDFiMFx1MWVkYmMiLHM6InZceGUwaSBnaVx4ZTJ5IixzczoiJWQgZ2lceGUyeSIsbToibVx1MWVkOXQgcGhceGZhdCIs''@;'; put 'put ''bW06IiVkIHBoXHhmYXQiLGg6Im1cdTFlZDl0IGdpXHUxZWRkIixoaDoiJWQgZ2lcdTFlZGQiLGQ6Im1cdTFlZDl0IG5nXHhlMHkiLGRkOiIlZCBuZ1x4ZTB5Iix3OiJtXHUxZWQ5dCB0dVx1MWVhN24iLHd3OiIlZCB0dVx1MWVhN24iLE06Im1cdTFlZDl0IHRoXHhlMW5nIixNTToiJWQgdGhc''@;'; put 'put ''eGUxbmciLHk6Im1cdTFlZDl0IG5cdTAxMDNtIix5eToiJWQgblx1MDEwM20ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKHYpe3JldHVybiB2fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSwxNTEwNjpmdW5jdGlvbihXZSx6ZSxU''@;'; put 'put ''KXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZpbmVMb2NhbGUoIngtcHNldWRvIix7bW9udGhzOiJKflx4ZTFceGYxXHhmYVx4ZTF+clx4ZmRfRn5ceGU5YnJceGZhflx4ZTFyXHhmZF9+TVx4ZTFyY35oX1x4YzFwfnJceGVkbF9+TVx4ZTFceGZkX35KXHhmYVx4ZjFceGU5fl9K''@;'; put 'put ''XHhmYWx+XHhmZF9ceGMxXHhmYX5nXHhmYXN0fl9TXHhlOXB+dFx4ZTltYn5ceGU5cl9ceGQzfmN0XHhmM2J+XHhlOXJfXHhkMX5ceGYzdlx4ZTltfmJceGU5cl9+RFx4ZTljXHhlOX5tYlx4ZTlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKflx4ZTFceGYxX35GXHhlOWJffk1ceGUxcl9+''@;'; put 'put ''XHhjMXByX35NXHhlMVx4ZmRffkpceGZhXHhmMV9+Slx4ZmFsX35ceGMxXHhmYWdfflNceGU5cF9+XHhkM2N0X35ceGQxXHhmM3ZffkRceGU5YyIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTflx4ZmFceGYxZFx4ZTF+XHhmZF9NXHhmM35ceGYxZFx4ZTFceGZk''@;'; put 'put ''fl9UXHhmYVx4ZTl+c2RceGUxXHhmZH5fV1x4ZTlkflx4ZjFceGU5c2R+XHhlMVx4ZmRfVH5oXHhmYXJzfmRceGUxXHhmZF9+RnJceGVkZH5ceGUxXHhmZF9Tflx4ZTF0XHhmYXJ+ZFx4ZTFceGZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN+XHhmYVx4ZjFffk1ceGYzXHhmMV9+VFx4''@;'; put 'put ''ZmFceGU5X35XXHhlOWRfflRoXHhmYV9+RnJceGVkX35TXHhlMXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN+XHhmYV9NXHhmM35fVFx4ZmFffldceGU5X1R+aF9Gcn5fU1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0i''@;'; put 'put ''LEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1R+XHhmM2RceGUxflx4ZmQgXHhlMXRdIExUIixuZXh0RGF5OiJbVH5ceGYzbVx4ZjN+cnJceGYz''@;'; put 'put ''fncgXHhlMXRdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMXRdIExUIixsYXN0RGF5OiJbXHhkZH5ceGU5c3R+XHhlOXJkXHhlMX5ceGZkIFx4ZTF0XSBMVCIsbGFzdFdlZWs6IltMflx4ZTFzdF0gZGRkZCBbXHhlMXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJc''@;'; put 'put ''eGVkflx4ZjEgJXMiLHBhc3Q6IiVzIFx4ZTF+Z1x4ZjMiLHM6Ilx4ZTEgfmZceGU5dyB+c1x4ZTljXHhmM35ceGYxZHMiLHNzOiIlZCBzflx4ZTljXHhmM1x4ZjF+ZHMiLG06Ilx4ZTEgfm1ceGVkXHhmMX5ceGZhdFx4ZTkiLG1tOiIlZCBtflx4ZWRceGYxXHhmYX50XHhlOXMiLGg6Ilx4ZTF+''@;'; put 'put ''XHhmMSBoXHhmM35ceGZhciIsaGg6IiVkIGh+XHhmM1x4ZmFycyIsZDoiXHhlMSB+ZFx4ZTFceGZkIixkZDoiJWQgZH5ceGUxXHhmZHMiLE06Ilx4ZTEgfm1ceGYzXHhmMX50aCIsTU06IiVkIG1+XHhmM1x4ZjF0fmhzIix5OiJceGUxIH5ceGZkXHhlOVx4ZTFyIix5eToiJWQgXHhmZH5ceGU5''@;'; put 'put ''XHhlMXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24odil7dmFyIGhlPXYlMTA7cmV0dXJuIHYrKDE9PX5+KHYlMTAwLzEwKT8idGgiOjE9PT1oZT8ic3QiOjI9PT1oZT8ibmQiOjM9PT1oZT8icmQiOiJ0aCIpfSx3ZWVr''@;'; put 'put ''Ontkb3c6MSxkb3k6NH19KX0oVCgxNjY3NikpfSw2MTk5OmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmRlZmluZUxvY2FsZSgieW8iLHttb250aHM6IlNcdTFlYjlcdTAzMDFyXHUxZWI5XHUwMzAxX0VcdTAzMDByZVx1MDMwMGxlXHUwMzAwX1x1MWVi''@;'; put 'put ''OHJcdTFlYjlcdTAzMDBuYVx1MDMwMF9JXHUwMzAwZ2JlXHUwMzAxX0VcdTAzMDBiaWJpX09cdTAzMDBrdVx1MDMwMGR1X0FnXHUxZWI5bW9fT1x1MDMwMGd1XHUwMzAxbl9Pd2V3ZV9cdTFlY2NcdTAzMDB3YVx1MDMwMHJhXHUwMzAwX0JlXHUwMzAxbHVcdTAzMDFfXHUxZWNjXHUwMzAwcFx1''@;'; put 'put ''MWViOVx1MDMwMFx1MDMwMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiU1x1MWViOVx1MDMwMXJfRVx1MDMwMHJsX1x1MWViOHJuX0lcdTAzMDBnYl9FXHUwMzAwYmlfT1x1MDMwMGt1XHUwMzAwX0FnXHUxZWI5X09cdTAzMDBndVx1MDMwMV9Pd2VfXHUxZWNjXHUwMzAwd2FcdTAzMDBfQmVc''@;'; put 'put ''dTAzMDFsX1x1MWVjY1x1MDMwMHBcdTFlYjlcdTAzMDBcdTAzMDAiLnNwbGl0KCJfIiksd2Vla2RheXM6IkFcdTAzMDBpXHUwMzAwa3VcdTAzMDFfQWplXHUwMzAxX0lcdTAzMDBzXHUxZWI5XHUwMzAxZ3VuX1x1MWVjY2pcdTFlY2RcdTAzMDFydVx1MDMwMV9cdTFlY2NqXHUxZWNkXHUwMzAx''@;'; put 'put ''Ylx1MWVjZF9cdTFlYjh0aVx1MDMwMF9BXHUwMzAwYmFcdTAzMDFtXHUxZWI5XHUwMzAxdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQVx1MDMwMGlcdTAzMDBrX0FqZVx1MDMwMV9JXHUwMzAwc1x1MWViOVx1MDMwMV9cdTFlY2Nqcl9cdTFlY2NqYl9cdTFlYjh0aVx1MDMwMF9BXHUw''@;'; put 'put ''MzAwYmFcdTAzMDEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkFcdTAzMDBpXHUwMzAwX0FqX0lcdTAzMDBzX1x1MWVjY3JfXHUxZWNjYl9cdTFlYjh0X0FcdTAzMDBiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZ''@;'; put 'put ''WSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPXHUwMzAwbmlcdTAzMDAgbmldIExUIixuZXh0RGF5OiJbXHUxZWNjXHUwMzAwbGEgbmldIExUIixuZXh0V2Vlazoi''@;'; put 'put ''ZGRkZCBbXHUxZWNjc1x1MWViOVx1MDMwMCB0b1x1MDMwMW4nYlx1MWVjZF0gW25pXSBMVCIsbGFzdERheToiW0FcdTAzMDBuYSBuaV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTFlY2NzXHUxZWI5XHUwMzAwIHRvXHUwMzAxbFx1MWVjZFx1MDMwMV0gW25pXSBMVCIsc2FtZUVsc2U6IkwifSxy''@;'; put 'put ''ZWxhdGl2ZVRpbWU6e2Z1dHVyZToibmlcdTAzMDEgJXMiLHBhc3Q6IiVzIGtcdTFlY2RqYVx1MDMwMSIsczoiaVx1MDMwMHNcdTFlYjlqdVx1MDMwMSBhYXlhXHUwMzAxIGRpZSIsc3M6ImFheWFcdTAzMDEgJWQiLG06ImlcdTAzMDBzXHUxZWI5anVcdTAzMDEga2FuIixtbToiaVx1MDMwMHNc''@;'; put 'put ''dTFlYjlqdVx1MDMwMSAlZCIsaDoid2FcdTAzMDFrYXRpIGthbiIsaGg6IndhXHUwMzAxa2F0aSAlZCIsZDoiXHUxZWNkalx1MWVjZFx1MDMwMSBrYW4iLGRkOiJcdTFlY2RqXHUxZWNkXHUwMzAxICVkIixNOiJvc3VcdTAzMDAga2FuIixNTToib3N1XHUwMzAwICVkIix5OiJcdTFlY2RkdVx1''@;'; put 'put ''MDMwMW4ga2FuIix5eToiXHUxZWNkZHVcdTAzMDFuICVkIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXHUxZWNkalx1MWVjZFx1MDMwMVxzXGR7MSwyfS8sb3JkaW5hbDoiXHUxZWNkalx1MWVjZFx1MDMwMSAlZCIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMjcyODA6ZnVu''@;'; put 'put ''Y3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJ6aC1jbiIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4''@;'; put 'put ''X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1Njcw''@;'; put 'put ''OF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1Njcx''@;'; put 'put ''Zlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU1NDY4XHU2NWU1X1x1NTQ2OFx1NGUwMF9cdTU0NjhcdTRlOGNfXHU1NDY4XHU0ZTA5X1x1NTQ2OFx1NTZkYl9cdTU0NjhcdTRlOTRfXHU1NDY4XHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1''@;'; put 'put ''ZTc0TVx1NjcwOERcdTY1ZTVBaFx1NzBiOW1tXHU1MjA2IixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkQWhcdTcwYjltbVx1NTIwNiIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1t''@;'; put 'put ''IixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhl''@;'; put 'put ''KXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHU1MWNjXHU2NjY4Ij09PWhlfHwiXHU2NWU5XHU0ZTBhIj09PWhlfHwiXHU0ZTBhXHU1MzQ4Ij09PWhlP3Y6Ilx1NGUwYlx1NTM0OCI9PT1oZXx8Ilx1NjY1YVx1NGUwYSI9PT1oZT92KzEyOnY+PTExP3Y6disxMn0sbWVyaWRpZW06ZnVuY3Rpb24o''@;'; put 'put ''dixoZSxIKXt2YXIgQj0xMDAqditoZTtyZXR1cm4gQjw2MDA/Ilx1NTFjY1x1NjY2OCI6Qjw5MDA/Ilx1NjVlOVx1NGUwYSI6QjwxMTMwPyJcdTRlMGFcdTUzNDgiOkI8MTIzMD8iXHU0ZTJkXHU1MzQ4IjpCPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntz''@;'; put 'put ''YW1lRGF5OiJbXHU0ZWNhXHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazpmdW5jdGlvbih2KXtyZXR1cm4gdi53ZWVrKCkhPT10aGlzLndlZWsoKT8iW1x1NGUwYl1kZGRMVCI6IltcdTY3MmNdZGRkTFQifSxsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XUxUIixs''@;'; put 'put ''YXN0V2VlazpmdW5jdGlvbih2KXtyZXR1cm4gdGhpcy53ZWVrKCkhPT12LndlZWsoKT8iW1x1NGUwYV1kZGRMVCI6IltcdTY3MmNdZGRkTFQifSxzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTU0NjgpLyxvcmRpbmFsOmZ1bmN0''@;'; put 'put ''aW9uKHYsaGUpe3N3aXRjaChoZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gdisiXHU2NWU1IjtjYXNlIk0iOnJldHVybiB2KyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gdisiXHU1NDY4IjtkZWZhdWx0OnJldHVybiB2fX0scmVsYXRpdmVUaW1lOntmdXR1cmU6''@;'; put 'put ''IiVzXHU1NDBlIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1MWUwXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQ5ZiIsbW06IiVkIFx1NTIwNlx1OTQ5ZiIsaDoiMSBcdTVjMGZcdTY1ZjYiLGhoOiIlZCBcdTVjMGZcdTY1ZjYiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5''@;'; put 'put ''Iix3OiIxIFx1NTQ2OCIsd3c6IiVkIFx1NTQ2OCIsTToiMSBcdTRlMmFcdTY3MDgiLE1NOiIlZCBcdTRlMmFcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFQoMTY2NzYpKX0sMzY4NjA6ZnVuY3Rpb24oV2UsemUsVCl7IWZ1bmN0aW9u''@;'; put 'put ''KHNlKXsidXNlIHN0cmljdCI7c2UuZGVmaW5lTG9jYWxlKCJ6aC1oayIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3''@;'; put 'put ''MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2''@;'; put 'put ''NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUx''@;'; put 'put ''NmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4''@;'; put 'put ''Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0i''@;'; put 'put ''LExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9''@;'; put 'put ''LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24odixoZSl7cmV0dXJuIDEyPT09diYmKHY9MCksIlx1NTFjY1x1NjY2OCI9PT1oZXx8''@;'; put 'put ''Ilx1NjVlOVx1NGUwYSI9PT1oZXx8Ilx1NGUwYVx1NTM0OCI9PT1oZT92OiJcdTRlMmRcdTUzNDgiPT09aGU/dj49MTE/djp2KzEyOiJcdTRlMGJcdTUzNDgiPT09aGV8fCJcdTY2NWFcdTRlMGEiPT09aGU/disxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHYsaGUsSCl7dmFyIEI9MTAw''@;'; put 'put ''KnYraGU7cmV0dXJuIEI8NjAwPyJcdTUxY2NcdTY2NjgiOkI8OTAwPyJcdTY1ZTlcdTRlMGEiOkI8MTIwMD8iXHU0ZTBhXHU1MzQ4IjoxMjAwPT09Qj8iXHU0ZTJkXHU1MzQ4IjpCPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNh''@;'; put 'put ''XHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldTFQiLGxhc3RXZWVrOiJbXHU0ZTBhXWRkZGRMVCIsc2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1''@;'; put 'put ''NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbih2LGhlKXtzd2l0Y2goaGUpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIHYrIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gdisiXHU2NzA4IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIHYrIlx1OTAzMSI7ZGVmYXVs''@;'; put 'put ''dDpyZXR1cm4gdn19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIlZCBcdTUyMDZcdTk0MTgiLGg6IjEgXHU1YzBmXHU2NjQyIixoaDoiJWQgXHU1YzBm''@;'; put 'put ''XHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oVCgxNjY3NikpfSw3ODM2NDpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtzZS5kZWZpbmVMb2NhbGUoInpoLW1vIix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3''@;'; put 'put ''MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgi''@;'; put 'put ''LnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c1Nob3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2''@;'; put 'put ''ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1''@;'; put 'put ''NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSIsbDoiRC9NL1lZWVkiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJz''@;'; put 'put ''ZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHU1MWNjXHU2NjY4Ij09PWhlfHwiXHU2NWU5XHU0ZTBh''@;'; put 'put ''Ij09PWhlfHwiXHU0ZTBhXHU1MzQ4Ij09PWhlP3Y6Ilx1NGUyZFx1NTM0OCI9PT1oZT92Pj0xMT92OnYrMTI6Ilx1NGUwYlx1NTM0OCI9PT1oZXx8Ilx1NjY1YVx1NGUwYSI9PT1oZT92KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXt2YXIgQj0xMDAqditoZTtyZXR1cm4g''@;'; put 'put ''Qjw2MDA/Ilx1NTFjY1x1NjY2OCI6Qjw5MDA/Ilx1NjVlOVx1NGUwYSI6QjwxMTMwPyJcdTRlMGFcdTUzNDgiOkI8MTIzMD8iXHU0ZTJkXHU1MzQ4IjpCPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4''@;'; put 'put ''dERheToiW1x1NjYwZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1Njcw''@;'; put 'put ''OHxcdTkwMzEpLyxvcmRpbmFsOmZ1bmN0aW9uKHYsaGUpe3N3aXRjaChoZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gdisiXHU2NWU1IjtjYXNlIk0iOnJldHVybiB2KyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gdisiXHU5MDMxIjtkZWZhdWx0OnJldHVybiB2''@;'; put 'put ''fX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1MTY3IixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1ZTdlXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQxOCIsbW06IiVkIFx1NTIwNlx1OTQxOCIsaDoiMSBcdTVjMGZcdTY2NDIiLGhoOiIlZCBcdTVjMGZcdTY2NDIiLGQ6''@;'; put 'put ''IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5IixNOiIxIFx1NTAwYlx1NjcwOCIsTU06IiVkIFx1NTAwYlx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIlZCBcdTVlNzQifX0pfShUKDE2Njc2KSl9LDQ4MjpmdW5jdGlvbihXZSx6ZSxUKXshZnVuY3Rpb24oc2UpeyJ1c2Ugc3RyaWN0IjtzZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoInpoLXR3Iix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9cdTRlMDNcdTY3MDhfXHU1MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0''@;'; put 'put ''ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJfXHU2NjFmXHU2NzFmXHU0ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1''@;'; put 'put ''NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhE''@;'; put 'put ''XHU2NWU1ZGRkZCBISDptbSIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2''@;'; put 'put ''NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbih2LGhlKXtyZXR1cm4gMTI9PT12JiYodj0wKSwiXHU1MWNjXHU2NjY4Ij09PWhlfHwiXHU2NWU5XHU0ZTBhIj09PWhlfHwiXHU0''@;'; put 'put ''ZTBhXHU1MzQ4Ij09PWhlP3Y6Ilx1NGUyZFx1NTM0OCI9PT1oZT92Pj0xMT92OnYrMTI6Ilx1NGUwYlx1NTM0OCI9PT1oZXx8Ilx1NjY1YVx1NGUwYSI9PT1oZT92KzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24odixoZSxIKXt2YXIgQj0xMDAqditoZTtyZXR1cm4gQjw2MDA/Ilx1NTFj''@;'; put 'put ''Y1x1NjY2OCI6Qjw5MDA/Ilx1NjVlOVx1NGUwYSI6QjwxMTMwPyJcdTRlMGFcdTUzNDgiOkI8MTIzMD8iXHU0ZTJkXHU1MzQ4IjpCPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4dERheToiW1x1NjYw''@;'; put 'put ''ZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTkwMzEpLyxv''@;'; put 'put ''cmRpbmFsOmZ1bmN0aW9uKHYsaGUpe3N3aXRjaChoZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gdisiXHU2NWU1IjtjYXNlIk0iOnJldHVybiB2KyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gdisiXHU5MDMxIjtkZWZhdWx0OnJldHVybiB2fX0scmVsYXRpdmVU''@;'; put 'put ''aW1lOntmdXR1cmU6IiVzXHU1ZjhjIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1ZTdlXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQxOCIsbW06IiVkIFx1NTIwNlx1OTQxOCIsaDoiMSBcdTVjMGZcdTY2NDIiLGhoOiIlZCBcdTVjMGZcdTY2NDIiLGQ6IjEgXHU1OTI5Iixk''@;'; put 'put ''ZDoiJWQgXHU1OTI5IixNOiIxIFx1NTAwYlx1NjcwOCIsTU06IiVkIFx1NTAwYlx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIlZCBcdTVlNzQifX0pfShUKDE2Njc2KSl9LDE2Njc2OmZ1bmN0aW9uKFdlLHplLFQpeyhXZT1ULm5tZChXZSkpLmV4cG9ydHM9ZnVuY3Rpb24oKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIHNlLEc7ZnVuY3Rpb24gaygpe3JldHVybiBzZS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaGUoQWUpe3JldHVybiBBZSBpbnN0YW5jZW9mIEFycmF5fHwiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEFlKX1mdW5jdGlvbiBI''@;'; put 'put ''KEFlKXtyZXR1cm4gbnVsbCE9QWUmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEFlKX1mdW5jdGlvbiBCKEFlLEplKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEFlLEplKX1mdW5jdGlvbiBMKEFlKXtpZihP''@;'; put 'put ''YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gMD09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEFlKS5sZW5ndGg7dmFyIEplO2ZvcihKZSBpbiBBZSlpZihCKEFlLEplKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBLKEFlKXtyZXR1cm4gdm9pZCAwPT09QWV9ZnVuY3Rp''@;'; put 'put ''b24gSihBZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBBZXx8IltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQWUpfWZ1bmN0aW9uIEkoQWUpe3JldHVybiBBZSBpbnN0YW5jZW9mIERhdGV8fCJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUudG9TdHJpbmcuY2FsbChBZSl9ZnVuY3Rpb24gUihBZSxKZSl7dmFyIFJ0LGJ0PVtdLEt0PUFlLmxlbmd0aDtmb3IoUnQ9MDtSdDxLdDsrK1J0KWJ0LnB1c2goSmUoQWVbUnRdLFJ0KSk7cmV0dXJuIGJ0fWZ1bmN0aW9uIEUoQWUsSmUpe2Zvcih2YXIgYnQgaW4gSmUpQihKZSxidCkmJihB''@;'; put 'put ''ZVtidF09SmVbYnRdKTtyZXR1cm4gQihKZSwidG9TdHJpbmciKSYmKEFlLnRvU3RyaW5nPUplLnRvU3RyaW5nKSxCKEplLCJ2YWx1ZU9mIikmJihBZS52YWx1ZU9mPUplLnZhbHVlT2YpLEFlfWZ1bmN0aW9uIHooQWUsSmUsYnQsUnQpe3JldHVybiBZZihBZSxKZSxidCxSdCwhMCkudXRjKCl9''@;'; put 'put ''ZnVuY3Rpb24gVihBZSl7cmV0dXJuIG51bGw9PUFlLl9wZiYmKEFlLl9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZEVyYTpudWxsLGludmFsaWRNb250aDpudWxsLGludmFs''@;'; put 'put ''aWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sZXJhOm51bGwsbWVyaWRpZW06bnVsbCxyZmMyODIyOiExLHdlZWtkYXlNaXNtYXRjaDohMX0pLEFlLl9wZn1mdW5jdGlvbiBXKEFlKXtpZihudWxsPT1BZS5faXNWYWxpZCl7dmFyIEplPVYo''@;'; put 'put ''QWUpLGJ0PUcuY2FsbChKZS5wYXJzZWREYXRlUGFydHMsZnVuY3Rpb24oS3Qpe3JldHVybiBudWxsIT1LdH0pLFJ0PSFpc05hTihBZS5fZC5nZXRUaW1lKCkpJiZKZS5vdmVyZmxvdzwwJiYhSmUuZW1wdHkmJiFKZS5pbnZhbGlkRXJhJiYhSmUuaW52YWxpZE1vbnRoJiYhSmUuaW52YWxpZFdl''@;'; put 'put ''ZWtkYXkmJiFKZS53ZWVrZGF5TWlzbWF0Y2gmJiFKZS5udWxsSW5wdXQmJiFKZS5pbnZhbGlkRm9ybWF0JiYhSmUudXNlckludmFsaWRhdGVkJiYoIUplLm1lcmlkaWVtfHxKZS5tZXJpZGllbSYmYnQpO2lmKEFlLl9zdHJpY3QmJihSdD1SdCYmMD09PUplLmNoYXJzTGVmdE92ZXImJjA9PT1K''@;'; put 'put ''ZS51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT1KZS5iaWdIb3VyKSxudWxsIT1PYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihBZSkpcmV0dXJuIFJ0O0FlLl9pc1ZhbGlkPVJ0fXJldHVybiBBZS5faXNWYWxpZH1mdW5jdGlvbiBVKEFlKXt2YXIgSmU9eihOYU4pO3JldHVy''@;'; put 'put ''biBudWxsIT1BZT9FKFYoSmUpLEFlKTpWKEplKS51c2VySW52YWxpZGF0ZWQ9ITAsSmV9Rz1BcnJheS5wcm90b3R5cGUuc29tZT9BcnJheS5wcm90b3R5cGUuc29tZTpmdW5jdGlvbihBZSl7dmFyIFJ0LEplPU9iamVjdCh0aGlzKSxidD1KZS5sZW5ndGg+Pj4wO2ZvcihSdD0wO1J0PGJ0O1J0''@;'; put 'put ''KyspaWYoUnQgaW4gSmUmJkFlLmNhbGwodGhpcyxKZVtSdF0sUnQsSmUpKXJldHVybiEwO3JldHVybiExfTt2YXIgcT1rLm1vbWVudFByb3BlcnRpZXM9W10sdGU9ITE7ZnVuY3Rpb24gbmUoQWUsSmUpe3ZhciBidCxSdCxLdCxVbj1xLmxlbmd0aDtpZihLKEplLl9pc0FNb21lbnRPYmplY3Qp''@;'; put 'put ''fHwoQWUuX2lzQU1vbWVudE9iamVjdD1KZS5faXNBTW9tZW50T2JqZWN0KSxLKEplLl9pKXx8KEFlLl9pPUplLl9pKSxLKEplLl9mKXx8KEFlLl9mPUplLl9mKSxLKEplLl9sKXx8KEFlLl9sPUplLl9sKSxLKEplLl9zdHJpY3QpfHwoQWUuX3N0cmljdD1KZS5fc3RyaWN0KSxLKEplLl90em0p''@;'; put 'put ''fHwoQWUuX3R6bT1KZS5fdHptKSxLKEplLl9pc1VUQyl8fChBZS5faXNVVEM9SmUuX2lzVVRDKSxLKEplLl9vZmZzZXQpfHwoQWUuX29mZnNldD1KZS5fb2Zmc2V0KSxLKEplLl9wZil8fChBZS5fcGY9VihKZSkpLEsoSmUuX2xvY2FsZSl8fChBZS5fbG9jYWxlPUplLl9sb2NhbGUpLFVuPjAp''@;'; put 'put ''Zm9yKGJ0PTA7YnQ8VW47YnQrKylLKEt0PUplW1J0PXFbYnRdXSl8fChBZVtSdF09S3QpO3JldHVybiBBZX1mdW5jdGlvbiBpZShBZSl7bmUodGhpcyxBZSksdGhpcy5fZD1uZXcgRGF0ZShudWxsIT1BZS5fZD9BZS5fZC5nZXRUaW1lKCk6TmFOKSx0aGlzLmlzVmFsaWQoKXx8KHRoaXMuX2Q9''@;'; put 'put ''bmV3IERhdGUoTmFOKSksITE9PT10ZSYmKHRlPSEwLGsudXBkYXRlT2Zmc2V0KHRoaXMpLHRlPSExKX1mdW5jdGlvbiBsZShBZSl7cmV0dXJuIEFlIGluc3RhbmNlb2YgaWV8fG51bGwhPUFlJiZudWxsIT1BZS5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIGRlKEFlKXshMT09PWsuc3VwcHJl''@;'; put 'put ''c3NEZXByZWNhdGlvbldhcm5pbmdzJiZ0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJEZXByZWNhdGlvbiB3YXJuaW5nOiAiK0FlKX1mdW5jdGlvbiB1ZShBZSxKZSl7dmFyIGJ0PSEwO3JldHVybiBFKGZ1bmN0aW9uKCl7aWYobnVsbCE9ay5kZXByZWNh''@;'; put 'put ''dGlvbkhhbmRsZXImJmsuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsQWUpLGJ0KXt2YXIgS3QsVW4sUHIsUnQ9W10sU289YXJndW1lbnRzLmxlbmd0aDtmb3IoVW49MDtVbjxTbztVbisrKXtpZihLdD0iIiwib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1tVbl0pe2ZvcihQciBpbiBLdCs9Ilxu''@;'; put 'put ''WyIrVW4rIl0gIixhcmd1bWVudHNbMF0pQihhcmd1bWVudHNbMF0sUHIpJiYoS3QrPVByKyI6ICIrYXJndW1lbnRzWzBdW1ByXSsiLCAiKTtLdD1LdC5zbGljZSgwLC0yKX1lbHNlIEt0PWFyZ3VtZW50c1tVbl07UnQucHVzaChLdCl9ZGUoQWUrIlxuQXJndW1lbnRzOiAiK0FycmF5LnByb3Rv''@;'; put 'put ''dHlwZS5zbGljZS5jYWxsKFJ0KS5qb2luKCIiKSsiXG4iKyhuZXcgRXJyb3IpLnN0YWNrKSxidD0hMX1yZXR1cm4gSmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxKZSl9dmFyIGcsY2U9e307ZnVuY3Rpb24gWShBZSxKZSl7bnVsbCE9ay5kZXByZWNhdGlvbkhhbmRsZXImJmsuZGVwcmVjYXRp''@;'; put 'put ''b25IYW5kbGVyKEFlLEplKSxjZVtBZV18fChkZShKZSksY2VbQWVdPSEwKX1mdW5jdGlvbiBiKEFlKXtyZXR1cm4gdHlwZW9mIEZ1bmN0aW9uPCJ1IiYmQWUgaW5zdGFuY2VvZiBGdW5jdGlvbnx8IltvYmplY3QgRnVuY3Rpb25dIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChB''@;'; put 'put ''ZSl9ZnVuY3Rpb24gTihBZSxKZSl7dmFyIFJ0LGJ0PUUoe30sQWUpO2ZvcihSdCBpbiBKZSlCKEplLFJ0KSYmKEgoQWVbUnRdKSYmSChKZVtSdF0pPyhidFtSdF09e30sRShidFtSdF0sQWVbUnRdKSxFKGJ0W1J0XSxKZVtSdF0pKTpudWxsIT1KZVtSdF0/YnRbUnRdPUplW1J0XTpkZWxldGUg''@;'; put 'put ''YnRbUnRdKTtmb3IoUnQgaW4gQWUpQihBZSxSdCkmJiFCKEplLFJ0KSYmSChBZVtSdF0pJiYoYnRbUnRdPUUoe30sYnRbUnRdKSk7cmV0dXJuIGJ0fWZ1bmN0aW9uIEYoQWUpe251bGwhPUFlJiZ0aGlzLnNldChBZSl9ay5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9ITEsay5kZXByZWNh''@;'; put 'put ''dGlvbkhhbmRsZXI9bnVsbCxnPU9iamVjdC5rZXlzP09iamVjdC5rZXlzOmZ1bmN0aW9uKEFlKXt2YXIgSmUsYnQ9W107Zm9yKEplIGluIEFlKUIoQWUsSmUpJiZidC5wdXNoKEplKTtyZXR1cm4gYnR9O2Z1bmN0aW9uIHkoQWUsSmUsYnQpe3ZhciBSdD0iIitNYXRoLmFicyhBZSk7cmV0dXJu''@;'; put 'put ''KEFlPj0wP2J0PyIrIjoiIjoiLSIpK01hdGgucG93KDEwLE1hdGgubWF4KDAsSmUtUnQubGVuZ3RoKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrUnR9dmFyIHA9LyhcW1teXFtdKlxdKXwoXFwpPyhbSGhdbW0oc3MpP3xNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3''@;'; put 'put ''XT98V1tvfFddP3xRbz98TnsxLDV9fFlZWVlZWXxZWVlZWXxZWVlZfFlZfHl7Miw0fXx5bz98Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8WHx6ej98Wlo/fC4pL2csUz0vKFxbW15cW10qXF0pfChcXCk/KExUU3xMVHxMTD9MP0w/fGx7''@;'; put 'put ''MSw0fSkvZyxRPXt9LHJlPXt9O2Z1bmN0aW9uIGZlKEFlLEplLGJ0LFJ0KXt2YXIgS3Q9UnQ7InN0cmluZyI9PXR5cGVvZiBSdCYmKEt0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbUnRdKCl9KSxBZSYmKHJlW0FlXT1LdCksSmUmJihyZVtKZVswXV09ZnVuY3Rpb24oKXtyZXR1cm4geShLdC5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyksSmVbMV0sSmVbMl0pfSksYnQmJihyZVtidF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChLdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksQWUpfSl9ZnVuY3Rpb24gbWUoQWUpe3JldHVybiBBZS5tYXRjaCgvXFtbXHNcU10v''@;'; put 'put ''KT9BZS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpOkFlLnJlcGxhY2UoL1xcL2csIiIpfWZ1bmN0aW9uIFRlKEFlLEplKXtyZXR1cm4gQWUuaXNWYWxpZCgpPyhKZT1QZShKZSxBZS5sb2NhbGVEYXRhKCkpLFFbSmVdPVFbSmVdfHxmdW5jdGlvbiBrZShBZSl7dmFyIGJ0LFJ0LEplPUFlLm1hdGNo''@;'; put 'put ''KHApO2ZvcihidD0wLFJ0PUplLmxlbmd0aDtidDxSdDtidCsrKUplW2J0XT1yZVtKZVtidF1dP3JlW0plW2J0XV06bWUoSmVbYnRdKTtyZXR1cm4gZnVuY3Rpb24oS3Qpe3ZhciBQcixVbj0iIjtmb3IoUHI9MDtQcjxSdDtQcisrKVVuKz1iKEplW1ByXSk/SmVbUHJdLmNhbGwoS3QsQWUpOkpl''@;'; put 'put ''W1ByXTtyZXR1cm4gVW59fShKZSksUVtKZV0oQWUpKTpBZS5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBQZShBZSxKZSl7dmFyIGJ0PTU7ZnVuY3Rpb24gUnQoS3Qpe3JldHVybiBKZS5sb25nRGF0ZUZvcm1hdChLdCl8fEt0fWZvcihTLmxhc3RJbmRleD0wO2J0Pj0wJiZT''@;'; put 'put ''LnRlc3QoQWUpOylBZT1BZS5yZXBsYWNlKFMsUnQpLFMubGFzdEluZGV4PTAsYnQtPTE7cmV0dXJuIEFlfXZhciBPZT17fTtmdW5jdGlvbiBldChBZSxKZSl7dmFyIGJ0PUFlLnRvTG93ZXJDYXNlKCk7T2VbYnRdPU9lW2J0KyJzIl09T2VbSmVdPUFlfWZ1bmN0aW9uIG50KEFlKXtyZXR1cm4i''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIEFlP09lW0FlXXx8T2VbQWUudG9Mb3dlckNhc2UoKV06dm9pZCAwfWZ1bmN0aW9uIHFlKEFlKXt2YXIgYnQsUnQsSmU9e307Zm9yKFJ0IGluIEFlKUIoQWUsUnQpJiYoYnQ9bnQoUnQpKSYmKEplW2J0XT1BZVtSdF0pO3JldHVybiBKZX12YXIgaHQ9e307ZnVuY3Rp''@;'; put 'put ''b24gRWUoQWUsSmUpe2h0W0FlXT1KZX1mdW5jdGlvbiAkZShBZSl7cmV0dXJuIEFlJTQ9PTAmJkFlJTEwMCE9MHx8QWUlNDAwPT0wfWZ1bmN0aW9uIGF0KEFlKXtyZXR1cm4gQWU8MD9NYXRoLmNlaWwoQWUpfHwwOk1hdGguZmxvb3IoQWUpfWZ1bmN0aW9uIGN0KEFlKXt2YXIgSmU9K0FlLGJ0''@;'; put 'put ''PTA7cmV0dXJuIDAhPT1KZSYmaXNGaW5pdGUoSmUpJiYoYnQ9YXQoSmUpKSxidH1mdW5jdGlvbiBPdChBZSxKZSl7cmV0dXJuIGZ1bmN0aW9uKGJ0KXtyZXR1cm4gbnVsbCE9YnQ/KEF0KHRoaXMsQWUsYnQpLGsudXBkYXRlT2Zmc2V0KHRoaXMsSmUpLHRoaXMpOlB0KHRoaXMsQWUpfX1mdW5j''@;'; put 'put ''dGlvbiBQdChBZSxKZSl7cmV0dXJuIEFlLmlzVmFsaWQoKT9BZS5fZFsiZ2V0IisoQWUuX2lzVVRDPyJVVEMiOiIiKStKZV0oKTpOYU59ZnVuY3Rpb24gQXQoQWUsSmUsYnQpe0FlLmlzVmFsaWQoKSYmIWlzTmFOKGJ0KSYmKCJGdWxsWWVhciI9PT1KZSYmJGUoQWUueWVhcigpKSYmMT09PUFl''@;'; put 'put ''Lm1vbnRoKCkmJjI5PT09QWUuZGF0ZSgpPyhidD1jdChidCksQWUuX2RbInNldCIrKEFlLl9pc1VUQz8iVVRDIjoiIikrSmVdKGJ0LEFlLm1vbnRoKCksYW8oYnQsQWUubW9udGgoKSkpKTpBZS5fZFsic2V0IisoQWUuX2lzVVRDPyJVVEMiOiIiKStKZV0oYnQpKX12YXIgRHQsTnQ9L1xkLyxi''@;'; put 'put ''bj0vXGRcZC8sR249L1xkezN9Lyxvbj0vXGR7NH0vLCRuPS9bKy1dP1xkezZ9LyxObj0vXGRcZD8vLHB0PS9cZFxkXGRcZD8vLHBuPS9cZFxkXGRcZFxkXGQ/Lyxobj0vXGR7MSwzfS8sQ3Q9L1xkezEsNH0vLGVuPS9bKy1dP1xkezEsNn0vLF90PS9cZCsvLFZ0PS9bKy1dP1xkKy8sX249L1p8''@;'; put 'put ''WystXVxkXGQ6P1xkXGQvZ2ksb3Q9L1p8WystXVxkXGQoPzo6P1xkXGQpPy9naSxubj0vWzAtOV17MCwyNTZ9WydhLXpcdTAwQTAtXHUwNUZGXHUwNzAwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRjA3XHVGRjEwLVx1RkZFRl17MSwyNTZ9fFtcdTA2MDAtXHUwNkZGXC9dezEsMjU2''@;'; put 'put ''fShccyo/W1x1MDYwMC1cdTA2RkZdezEsMjU2fSl7MSwyfS9pO2Z1bmN0aW9uIHZ0KEFlLEplLGJ0KXtEdFtBZV09YihKZSk/SmU6ZnVuY3Rpb24oUnQsS3Qpe3JldHVybiBSdCYmYnQ/YnQ6SmV9fWZ1bmN0aW9uIEd0KEFlLEplKXtyZXR1cm4gQihEdCxBZSk/RHRbQWVdKEplLl9zdHJpY3Qs''@;'; put 'put ''SmUuX2xvY2FsZSk6bmV3IFJlZ0V4cChmdW5jdGlvbiBMbihBZSl7cmV0dXJuIHp0KEFlLnJlcGxhY2UoIlxcIiwiIikucmVwbGFjZSgvXFwoXFspfFxcKFxdKXxcWyhbXlxdXFtdKilcXXxcXCguKS9nLGZ1bmN0aW9uKEplLGJ0LFJ0LEt0LFVuKXtyZXR1cm4gYnR8fFJ0fHxLdHx8VW59KSl9''@;'; put 'put ''KEFlKSl9ZnVuY3Rpb24genQoQWUpe3JldHVybiBBZS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfUR0PXt9O3ZhciBNbj17fTtmdW5jdGlvbiBUbihBZSxKZSl7dmFyIGJ0LEt0LFJ0PUplO2Zvcigic3RyaW5nIj09dHlwZW9mIEFlJiYoQWU9W0FlXSksSihKZSkm''@;'; put 'put ''JihSdD1mdW5jdGlvbihVbixQcil7UHJbSmVdPWN0KFVuKX0pLEt0PUFlLmxlbmd0aCxidD0wO2J0PEt0O2J0KyspTW5bQWVbYnRdXT1SdH1mdW5jdGlvbiBzbihBZSxKZSl7VG4oQWUsZnVuY3Rpb24oYnQsUnQsS3QsVW4pe0t0Ll93PUt0Ll93fHx7fSxKZShidCxLdC5fdyxLdCxVbil9KX1m''@;'; put 'put ''dW5jdGlvbiBCbihBZSxKZSxidCl7bnVsbCE9SmUmJkIoTW4sQWUpJiZNbltBZV0oSmUsYnQuX2EsYnQsQWUpfXZhciBKcixGbj0wLHF0PTEsSG49MixpaT0zLGNuPTQsam49NSxYcj02LHZpPTcsRXI9ODtmdW5jdGlvbiBhbyhBZSxKZSl7aWYoaXNOYU4oQWUpfHxpc05hTihKZSkpcmV0dXJu''@;'; put 'put ''IE5hTjt2YXIgYnQ9ZnVuY3Rpb24gWWkoQWUsSmUpe3JldHVybihBZSVKZStKZSklSmV9KEplLDEyKTtyZXR1cm4gQWUrPShKZS1idCkvMTIsMT09PWJ0PyRlKEFlKT8yOToyODozMS1idCU3JTJ9SnI9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/QXJyYXkucHJvdG90eXBlLmluZGV4T2Y6ZnVu''@;'; put 'put ''Y3Rpb24oQWUpe3ZhciBKZTtmb3IoSmU9MDtKZTx0aGlzLmxlbmd0aDsrK0plKWlmKHRoaXNbSmVdPT09QWUpcmV0dXJuIEplO3JldHVybi0xfSxmZSgiTSIsWyJNTSIsMl0sIk1vIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vbnRoKCkrMX0pLGZlKCJNTU0iLDAsMCxmdW5jdGlvbihBZSl7''@;'; put 'put ''cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsQWUpfSksZmUoIk1NTU0iLDAsMCxmdW5jdGlvbihBZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLEFlKX0pLGV0KCJtb250aCIsIk0iKSxFZSgibW9udGgiLDgpLHZ0KCJNIixObiksdnQoIk1N''@;'; put 'put ''IixObixibiksdnQoIk1NTSIsZnVuY3Rpb24oQWUsSmUpe3JldHVybiBKZS5tb250aHNTaG9ydFJlZ2V4KEFlKX0pLHZ0KCJNTU1NIixmdW5jdGlvbihBZSxKZSl7cmV0dXJuIEplLm1vbnRoc1JlZ2V4KEFlKX0pLFRuKFsiTSIsIk1NIl0sZnVuY3Rpb24oQWUsSmUpe0plW3F0XT1jdChBZSkt''@;'; put 'put ''MX0pLFRuKFsiTU1NIiwiTU1NTSJdLGZ1bmN0aW9uKEFlLEplLGJ0LFJ0KXt2YXIgS3Q9YnQuX2xvY2FsZS5tb250aHNQYXJzZShBZSxSdCxidC5fc3RyaWN0KTtudWxsIT1LdD9KZVtxdF09S3Q6VihidCkuaW52YWxpZE1vbnRoPUFlfSk7dmFyIEJyPSJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNo''@;'; put 'put ''X0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLEppPSJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx0bz0vRFtvRF0/KFxbW15cW1xdXSpcXXxc''@;'; put 'put ''cykrTU1NTT8vLGNvPW5uLGxvPW5uO2Z1bmN0aW9uIHBvKEFlLEplLGJ0KXt2YXIgUnQsS3QsVW4sUHI9QWUudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fbW9udGhzUGFyc2UpZm9yKHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9y''@;'; put 'put ''dE1vbnRoc1BhcnNlPVtdLFJ0PTA7UnQ8MTI7KytSdClVbj16KFsyZTMsUnRdKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW1J0XT10aGlzLm1vbnRoc1Nob3J0KFVuLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX2xvbmdNb250aHNQYXJzZVtSdF09dGhpcy5tb250aHMoVW4sIiIpLnRv''@;'; put 'put ''TG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuIGJ0PyJNTU0iPT09SmU/LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLFByKSk/S3Q6bnVsbDotMSE9PShLdD1Kci5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxQcikpP0t0Om51bGw6Ik1NTSI9PT1KZT8tMSE9PShLdD1K''@;'; put 'put ''ci5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsUHIpKXx8LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsUHIpKT9LdDpudWxsOi0xIT09KEt0PUpyLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLFByKSl8fC0xIT09KEt0PUpyLmNhbGwodGhpcy5fc2hvcnRNb250''@;'; put 'put ''aHNQYXJzZSxQcikpP0t0Om51bGx9ZnVuY3Rpb24gRmkoQWUsSmUpe3ZhciBidDtpZighQWUuaXNWYWxpZCgpKXJldHVybiBBZTtpZigic3RyaW5nIj09dHlwZW9mIEplKWlmKC9eXGQrJC8udGVzdChKZSkpSmU9Y3QoSmUpO2Vsc2UgaWYoIUooSmU9QWUubG9jYWxlRGF0YSgpLm1vbnRoc1Bh''@;'; put 'put ''cnNlKEplKSkpcmV0dXJuIEFlO3JldHVybiBidD1NYXRoLm1pbihBZS5kYXRlKCksYW8oQWUueWVhcigpLEplKSksQWUuX2RbInNldCIrKEFlLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oSmUsYnQpLEFlfWZ1bmN0aW9uIEhvKEFlKXtyZXR1cm4gbnVsbCE9QWU/KEZpKHRoaXMsQWUpLGsu''@;'; put 'put ''dXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMpOlB0KHRoaXMsIk1vbnRoIil9ZnVuY3Rpb24gZ3MoKXtmdW5jdGlvbiBBZShQcixTbyl7cmV0dXJuIFNvLmxlbmd0aC1Qci5sZW5ndGh9dmFyIEt0LFVuLEplPVtdLGJ0PVtdLFJ0PVtdO2ZvcihLdD0wO0t0PDEyO0t0KyspVW49eihbMmUzLEt0''@;'; put 'put ''XSksSmUucHVzaCh0aGlzLm1vbnRoc1Nob3J0KFVuLCIiKSksYnQucHVzaCh0aGlzLm1vbnRocyhVbiwiIikpLFJ0LnB1c2godGhpcy5tb250aHMoVW4sIiIpKSxSdC5wdXNoKHRoaXMubW9udGhzU2hvcnQoVW4sIiIpKTtmb3IoSmUuc29ydChBZSksYnQuc29ydChBZSksUnQuc29ydChBZSks''@;'; put 'put ''S3Q9MDtLdDwxMjtLdCsrKUplW0t0XT16dChKZVtLdF0pLGJ0W0t0XT16dChidFtLdF0pO2ZvcihLdD0wO0t0PDI0O0t0KyspUnRbS3RdPXp0KFJ0W0t0XSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK1J0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9tb250aHNTaG9ydFJl''@;'; put 'put ''Z2V4PXRoaXMuX21vbnRoc1JlZ2V4LHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitidC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrSmUuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIEJ1KEFl''@;'; put 'put ''KXtyZXR1cm4gJGUoQWUpPzM2NjozNjV9ZmUoIlkiLDAsMCxmdW5jdGlvbigpe3ZhciBBZT10aGlzLnllYXIoKTtyZXR1cm4gQWU8PTk5OTk/eShBZSw0KToiKyIrQWV9KSxmZSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksZmUoMCxbIllZWVkiLDRd''@;'; put 'put ''LDAsInllYXIiKSxmZSgwLFsiWVlZWVkiLDVdLDAsInllYXIiKSxmZSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksZXQoInllYXIiLCJ5IiksRWUoInllYXIiLDEpLHZ0KCJZIixWdCksdnQoIllZIixObixibiksdnQoIllZWVkiLEN0LG9uKSx2dCgiWVlZWVkiLGVuLCRuKSx2dCgiWVlZ''@;'; put 'put ''WVlZIixlbiwkbiksVG4oWyJZWVlZWSIsIllZWVlZWSJdLEZuKSxUbigiWVlZWSIsZnVuY3Rpb24oQWUsSmUpe0plW0ZuXT0yPT09QWUubGVuZ3RoP2sucGFyc2VUd29EaWdpdFllYXIoQWUpOmN0KEFlKX0pLFRuKCJZWSIsZnVuY3Rpb24oQWUsSmUpe0plW0ZuXT1rLnBhcnNlVHdvRGlnaXRZ''@;'; put 'put ''ZWFyKEFlKX0pLFRuKCJZIixmdW5jdGlvbihBZSxKZSl7SmVbRm5dPXBhcnNlSW50KEFlLDEwKX0pLGsucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oQWUpe3JldHVybiBjdChBZSkrKGN0KEFlKT42OD8xOTAwOjJlMyl9O3ZhciBYMD1PdCgiRnVsbFllYXIiLCEwKTtmdW5jdGlvbiBLZChB''@;'; put 'put ''ZSxKZSxidCxSdCxLdCxVbixQcil7dmFyIFNvO3JldHVybiBBZTwxMDAmJkFlPj0wPyhTbz1uZXcgRGF0ZShBZSs0MDAsSmUsYnQsUnQsS3QsVW4sUHIpLGlzRmluaXRlKFNvLmdldEZ1bGxZZWFyKCkpJiZTby5zZXRGdWxsWWVhcihBZSkpOlNvPW5ldyBEYXRlKEFlLEplLGJ0LFJ0LEt0LFVu''@;'; put 'put ''LFByKSxTb31mdW5jdGlvbiBkMChBZSl7dmFyIEplLGJ0O3JldHVybiBBZTwxMDAmJkFlPj0wPygoYnQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSlbMF09QWUrNDAwLEplPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsYnQpKSxpc0Zpbml0ZShKZS5nZXRVVENG''@;'; put 'put ''dWxsWWVhcigpKSYmSmUuc2V0VVRDRnVsbFllYXIoQWUpKTpKZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpLEplfWZ1bmN0aW9uIExjKEFlLEplLGJ0KXt2YXIgUnQ9NytKZS1idDtyZXR1cm4tKDcrZDAoQWUsMCxSdCkuZ2V0VVRDRGF5KCktSmUpJTcrUnQtMX1m''@;'; put 'put ''dW5jdGlvbiB2YShBZSxKZSxidCxSdCxLdCl7dmFyIHJhLFlhLFNvPTErNyooSmUtMSkrKDcrYnQtUnQpJTcrTGMoQWUsUnQsS3QpO3JldHVybiBTbzw9MD9ZYT1CdShyYT1BZS0xKStTbzpTbz5CdShBZSk/KHJhPUFlKzEsWWE9U28tQnUoQWUpKToocmE9QWUsWWE9U28pLHt5ZWFyOnJhLGRh''@;'; put 'put ''eU9mWWVhcjpZYX19ZnVuY3Rpb24gRmwoQWUsSmUsYnQpe3ZhciBVbixQcixSdD1MYyhBZS55ZWFyKCksSmUsYnQpLEt0PU1hdGguZmxvb3IoKEFlLmRheU9mWWVhcigpLVJ0LTEpLzcpKzE7cmV0dXJuIEt0PDE/VW49S3QrTXIoUHI9QWUueWVhcigpLTEsSmUsYnQpOkt0Pk1yKEFlLnllYXIo''@;'; put 'put ''KSxKZSxidCk/KFVuPUt0LU1yKEFlLnllYXIoKSxKZSxidCksUHI9QWUueWVhcigpKzEpOihQcj1BZS55ZWFyKCksVW49S3QpLHt3ZWVrOlVuLHllYXI6UHJ9fWZ1bmN0aW9uIE1yKEFlLEplLGJ0KXt2YXIgUnQ9TGMoQWUsSmUsYnQpLEt0PUxjKEFlKzEsSmUsYnQpO3JldHVybihCdShBZSkt''@;'; put 'put ''UnQrS3QpLzd9ZmUoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxmZSgiVyIsWyJXVyIsMl0sIldvIiwiaXNvV2VlayIpLGV0KCJ3ZWVrIiwidyIpLGV0KCJpc29XZWVrIiwiVyIpLEVlKCJ3ZWVrIiw1KSxFZSgiaXNvV2VlayIsNSksdnQoInciLE5uKSx2dCgid3ciLE5uLGJuKSx2dCgiVyIs''@;'; put 'put ''Tm4pLHZ0KCJXVyIsTm4sYm4pLHNuKFsidyIsInd3IiwiVyIsIldXIl0sZnVuY3Rpb24oQWUsSmUsYnQsUnQpe0plW1J0LnN1YnN0cigwLDEpXT1jdChBZSl9KTtmdW5jdGlvbiBrbChBZSxKZSl7cmV0dXJuIEFlLnNsaWNlKEplLDcpLmNvbmNhdChBZS5zbGljZSgwLEplKSl9ZmUoImQiLDAs''@;'; put 'put ''ImRvIiwiZGF5IiksZmUoImRkIiwwLDAsZnVuY3Rpb24oQWUpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLEFlKX0pLGZlKCJkZGQiLDAsMCxmdW5jdGlvbihBZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyxBZSl9KSxmZSgi''@;'; put 'put ''ZGRkZCIsMCwwLGZ1bmN0aW9uKEFlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyxBZSl9KSxmZSgiZSIsMCwwLCJ3ZWVrZGF5IiksZmUoIkUiLDAsMCwiaXNvV2Vla2RheSIpLGV0KCJkYXkiLCJkIiksZXQoIndlZWtkYXkiLCJlIiksZXQoImlzb1dlZWtkYXkiLCJF''@;'; put 'put ''IiksRWUoImRheSIsMTEpLEVlKCJ3ZWVrZGF5IiwxMSksRWUoImlzb1dlZWtkYXkiLDExKSx2dCgiZCIsTm4pLHZ0KCJlIixObiksdnQoIkUiLE5uKSx2dCgiZGQiLGZ1bmN0aW9uKEFlLEplKXtyZXR1cm4gSmUud2Vla2RheXNNaW5SZWdleChBZSl9KSx2dCgiZGRkIixmdW5jdGlvbihBZSxK''@;'; put 'put ''ZSl7cmV0dXJuIEplLndlZWtkYXlzU2hvcnRSZWdleChBZSl9KSx2dCgiZGRkZCIsZnVuY3Rpb24oQWUsSmUpe3JldHVybiBKZS53ZWVrZGF5c1JlZ2V4KEFlKX0pLHNuKFsiZGQiLCJkZGQiLCJkZGRkIl0sZnVuY3Rpb24oQWUsSmUsYnQsUnQpe3ZhciBLdD1idC5fbG9jYWxlLndlZWtkYXlz''@;'; put 'put ''UGFyc2UoQWUsUnQsYnQuX3N0cmljdCk7bnVsbCE9S3Q/SmUuZD1LdDpWKGJ0KS5pbnZhbGlkV2Vla2RheT1BZX0pLHNuKFsiZCIsImUiLCJFIl0sZnVuY3Rpb24oQWUsSmUsYnQsUnQpe0plW1J0XT1jdChBZSl9KTt2YXIgbzI9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1''@;'; put 'put ''cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLFBjPSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksRGE9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLHAwPW5uLEtsPW5uLGt1PW5uO2Z1bmN0aW9uIG0wKEFlLEplLGJ0KXt2YXIgUnQsS3Qs''@;'; put 'put ''VW4sUHI9QWUudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSxSdD0wO1J0PDc7KytSdClVbj16KFsyZTMsMV0pLmRh''@;'; put 'put ''eShSdCksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtSdF09dGhpcy53ZWVrZGF5c01pbihVbiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbUnRdPXRoaXMud2Vla2RheXNTaG9ydChVbiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5''@;'; put 'put ''c1BhcnNlW1J0XT10aGlzLndlZWtkYXlzKFVuLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBidD8iZGRkZCI9PT1KZT8tMSE9PShLdD1Kci5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsUHIpKT9LdDpudWxsOiJkZGQiPT09SmU/LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl9zaG9ydFdl''@;'; put 'put ''ZWtkYXlzUGFyc2UsUHIpKT9LdDpudWxsOi0xIT09KEt0PUpyLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxQcikpP0t0Om51bGw6ImRkZGQiPT09SmU/LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFByKSl8fC0xIT09KEt0PUpyLmNhbGwodGhpcy5fc2hvcnRXZWVr''@;'; put 'put ''ZGF5c1BhcnNlLFByKSl8fC0xIT09KEt0PUpyLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxQcikpP0t0Om51bGw6ImRkZCI9PT1KZT8tMSE9PShLdD1Kci5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxQcikpfHwtMSE9PShLdD1Kci5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2Us''@;'; put 'put ''UHIpKXx8LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLFByKSk/S3Q6bnVsbDotMSE9PShLdD1Kci5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsUHIpKXx8LTEhPT0oS3Q9SnIuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFByKSl8fC0xIT09KEt0PUpyLmNhbGwo''@;'; put 'put ''dGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFByKSk/S3Q6bnVsbH1mdW5jdGlvbiBnMCgpe2Z1bmN0aW9uIEFlKGh1LE0wKXtyZXR1cm4gTTAubGVuZ3RoLWh1Lmxlbmd0aH12YXIgVW4sUHIsU28scmEsWWEsSmU9W10sYnQ9W10sUnQ9W10sS3Q9W107Zm9yKFVuPTA7VW48NztVbisrKVByPXoo''@;'; put 'put ''WzJlMywxXSkuZGF5KFVuKSxTbz16dCh0aGlzLndlZWtkYXlzTWluKFByLCIiKSkscmE9enQodGhpcy53ZWVrZGF5c1Nob3J0KFByLCIiKSksWWE9enQodGhpcy53ZWVrZGF5cyhQciwiIikpLEplLnB1c2goU28pLGJ0LnB1c2gocmEpLFJ0LnB1c2goWWEpLEt0LnB1c2goU28pLEt0LnB1c2go''@;'; put 'put ''cmEpLEt0LnB1c2goWWEpO0plLnNvcnQoQWUpLGJ0LnNvcnQoQWUpLFJ0LnNvcnQoQWUpLEt0LnNvcnQoQWUpLHRoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0t0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9dGhpcy5fd2Vla2RheXNSZWdl''@;'; put 'put ''eCx0aGlzLl93ZWVrZGF5c01pblJlZ2V4PXRoaXMuX3dlZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrUnQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrYnQuam9pbigi''@;'; put 'put ''fCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK0plLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBRZCgpe3JldHVybiB0aGlzLmhvdXJzKCklMTJ8fDEyfWZ1bmN0aW9uIG5vKEFlLEplKXtmZShBZSwwLDAsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLEplKX0pfWZ1bmN0aW9uIFduKEFlLEplKXtyZXR1cm4gSmUuX21lcmlkaWVtUGFyc2V9ZmUoIkgiLFsiSEgiLDJdLDAsImhvdXIiKSxmZSgiaCIsWyJoaCIsMl0sMCxRZCksZmUoImsiLFsi''@;'; put 'put ''a2siLDJdLDAsZnVuY3Rpb24gbDIoKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH0pLGZlKCJobW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK1FkLmFwcGx5KHRoaXMpK3kodGhpcy5taW51dGVzKCksMil9KSxmZSgiaG1tc3MiLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK1FkLmFwcGx5KHRo''@;'; put 'put ''aXMpK3kodGhpcy5taW51dGVzKCksMikreSh0aGlzLnNlY29uZHMoKSwyKX0pLGZlKCJIbW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKSt5KHRoaXMubWludXRlcygpLDIpfSksZmUoIkhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkreSh0''@;'; put 'put ''aGlzLm1pbnV0ZXMoKSwyKSt5KHRoaXMuc2Vjb25kcygpLDIpfSksbm8oImEiLCEwKSxubygiQSIsITEpLGV0KCJob3VyIiwiaCIpLEVlKCJob3VyIiwxMyksdnQoImEiLFduKSx2dCgiQSIsV24pLHZ0KCJIIixObiksdnQoImgiLE5uKSx2dCgiayIsTm4pLHZ0KCJISCIsTm4sYm4pLHZ0KCJo''@;'; put 'put ''aCIsTm4sYm4pLHZ0KCJrayIsTm4sYm4pLHZ0KCJobW0iLHB0KSx2dCgiaG1tc3MiLHBuKSx2dCgiSG1tIixwdCksdnQoIkhtbXNzIixwbiksVG4oWyJIIiwiSEgiXSxpaSksVG4oWyJrIiwia2siXSxmdW5jdGlvbihBZSxKZSxidCl7dmFyIFJ0PWN0KEFlKTtKZVtpaV09MjQ9PT1SdD8wOlJ0''@;'; put 'put ''fSksVG4oWyJhIiwiQSJdLGZ1bmN0aW9uKEFlLEplLGJ0KXtidC5faXNQbT1idC5fbG9jYWxlLmlzUE0oQWUpLGJ0Ll9tZXJpZGllbT1BZX0pLFRuKFsiaCIsImhoIl0sZnVuY3Rpb24oQWUsSmUsYnQpe0plW2lpXT1jdChBZSksVihidCkuYmlnSG91cj0hMH0pLFRuKCJobW0iLGZ1bmN0aW9u''@;'; put 'put ''KEFlLEplLGJ0KXt2YXIgUnQ9QWUubGVuZ3RoLTI7SmVbaWldPWN0KEFlLnN1YnN0cigwLFJ0KSksSmVbY25dPWN0KEFlLnN1YnN0cihSdCkpLFYoYnQpLmJpZ0hvdXI9ITB9KSxUbigiaG1tc3MiLGZ1bmN0aW9uKEFlLEplLGJ0KXt2YXIgUnQ9QWUubGVuZ3RoLTQsS3Q9QWUubGVuZ3RoLTI7''@;'; put 'put ''SmVbaWldPWN0KEFlLnN1YnN0cigwLFJ0KSksSmVbY25dPWN0KEFlLnN1YnN0cihSdCwyKSksSmVbam5dPWN0KEFlLnN1YnN0cihLdCkpLFYoYnQpLmJpZ0hvdXI9ITB9KSxUbigiSG1tIixmdW5jdGlvbihBZSxKZSxidCl7dmFyIFJ0PUFlLmxlbmd0aC0yO0plW2lpXT1jdChBZS5zdWJzdHIo''@;'; put 'put ''MCxSdCkpLEplW2NuXT1jdChBZS5zdWJzdHIoUnQpKX0pLFRuKCJIbW1zcyIsZnVuY3Rpb24oQWUsSmUsYnQpe3ZhciBSdD1BZS5sZW5ndGgtNCxLdD1BZS5sZW5ndGgtMjtKZVtpaV09Y3QoQWUuc3Vic3RyKDAsUnQpKSxKZVtjbl09Y3QoQWUuc3Vic3RyKFJ0LDIpKSxKZVtqbl09Y3QoQWUu''@;'; put 'put ''c3Vic3RyKEt0KSl9KTt2YXIgdWE9T3QoIkhvdXJzIiwhMCk7dmFyIERsLE5sPXtjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RX''@;'; put 'put ''ZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LGxvbmdEYXRlRm9ybWF0OntMVFM6Img6bW06c3MgQSIsTFQ6Img6bW0gQSIsTDoiTU0vREQvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZ''@;'; put 'put ''WVkgaDptbSBBIn0saW52YWxpZERhdGU6IkludmFsaWQgZGF0ZSIsb3JkaW5hbDoiJWQiLGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToi''@;'; put 'put ''YSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsdzoiYSB3ZWVrIix3dzoiJWQgd2Vla3MiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sbW9udGhzOkJyLG1v''@;'; put 'put ''bnRoc1Nob3J0OkppLHdlZWs6e2RvdzowLGRveTo2fSx3ZWVrZGF5czpvMix3ZWVrZGF5c01pbjpEYSx3ZWVrZGF5c1Nob3J0OlBjLG1lcmlkaWVtUGFyc2U6L1thcF1cLj9tP1wuPy9pfSxRbz17fSxKMD17fTtmdW5jdGlvbiBzMihBZSxKZSl7dmFyIGJ0LFJ0PU1hdGgubWluKEFlLmxlbmd0''@;'; put 'put ''aCxKZS5sZW5ndGgpO2ZvcihidD0wO2J0PFJ0O2J0Kz0xKWlmKEFlW2J0XSE9PUplW2J0XSlyZXR1cm4gYnQ7cmV0dXJuIFJ0fWZ1bmN0aW9uIHUyKEFlKXtyZXR1cm4gQWUmJkFlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKX1mdW5jdGlvbiBwcihBZSl7dmFyIEplPW51bGw7aWYo''@;'; put 'put ''dm9pZCAwPT09UW9bQWVdJiZXZSYmV2UuZXhwb3J0cyYmZnVuY3Rpb24geHUoQWUpe3JldHVybiBudWxsIT1BZS5tYXRjaCgiXlteL1xcXFxdKiQiKX0oQWUpKXRyeXtKZT1EbC5fYWJicixUKDQ2NzAwKSgiLi8iK0FlKSx6byhKZSl9Y2F0Y2h7UW9bQWVdPW51bGx9cmV0dXJuIFFvW0FlXX1m''@;'; put 'put ''dW5jdGlvbiB6byhBZSxKZSl7dmFyIGJ0O3JldHVybiBBZSYmKChidD1LKEplKT9wYyhBZSk6QXUoQWUsSmUpKT9EbD1idDp0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2NhbGUgIitBZSsiIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9h''@;'; put 'put ''ZCBpdD8iKSksRGwuX2FiYnJ9ZnVuY3Rpb24gQXUoQWUsSmUpe2lmKG51bGwhPT1KZSl7dmFyIGJ0LFJ0PU5sO2lmKEplLmFiYnI9QWUsbnVsbCE9UW9bQWVdKVkoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBj''@;'; put 'put ''aGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2Nh''@;'; put 'put ''bGUvIGZvciBtb3JlIGluZm8uIiksUnQ9UW9bQWVdLl9jb25maWc7ZWxzZSBpZihudWxsIT1KZS5wYXJlbnRMb2NhbGUpaWYobnVsbCE9UW9bSmUucGFyZW50TG9jYWxlXSlSdD1Rb1tKZS5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0oYnQ9cHIoSmUucGFyZW50TG9jYWxl''@;'; put 'put ''KSkpcmV0dXJuIEowW0plLnBhcmVudExvY2FsZV18fChKMFtKZS5wYXJlbnRMb2NhbGVdPVtdKSxKMFtKZS5wYXJlbnRMb2NhbGVdLnB1c2goe25hbWU6QWUsY29uZmlnOkplfSksbnVsbDtSdD1idC5fY29uZmlnfXJldHVybiBRb1tBZV09bmV3IEYoTihSdCxKZSkpLEowW0FlXSYmSjBbQWVd''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oS3Qpe0F1KEt0Lm5hbWUsS3QuY29uZmlnKX0pLHpvKEFlKSxRb1tBZV19cmV0dXJuIGRlbGV0ZSBRb1tBZV0sbnVsbH1mdW5jdGlvbiBwYyhBZSl7dmFyIEplO2lmKEFlJiZBZS5fbG9jYWxlJiZBZS5fbG9jYWxlLl9hYmJyJiYoQWU9QWUuX2xvY2FsZS5fYWJi''@;'; put 'put ''ciksIUFlKXJldHVybiBEbDtpZighaGUoQWUpKXtpZihKZT1wcihBZSkpcmV0dXJuIEplO0FlPVtBZV19cmV0dXJuIGZ1bmN0aW9uIHNzKEFlKXtmb3IodmFyIGJ0LFJ0LEt0LFVuLEplPTA7SmU8QWUubGVuZ3RoOyl7Zm9yKGJ0PShVbj11MihBZVtKZV0pLnNwbGl0KCItIikpLmxlbmd0aCxS''@;'; put 'put ''dD0oUnQ9dTIoQWVbSmUrMV0pKT9SdC5zcGxpdCgiLSIpOm51bGw7YnQ+MDspe2lmKEt0PXByKFVuLnNsaWNlKDAsYnQpLmpvaW4oIi0iKSkpcmV0dXJuIEt0O2lmKFJ0JiZSdC5sZW5ndGg+PWJ0JiZzMihVbixSdCk+PWJ0LTEpYnJlYWs7YnQtLX1KZSsrfXJldHVybiBEbH0oQWUpfWZ1bmN0''@;'; put 'put ''aW9uIGVoKEFlKXt2YXIgSmUsYnQ9QWUuX2E7cmV0dXJuIGJ0JiYtMj09PVYoQWUpLm92ZXJmbG93JiYoSmU9YnRbcXRdPDB8fGJ0W3F0XT4xMT9xdDpidFtIbl08MXx8YnRbSG5dPmFvKGJ0W0ZuXSxidFtxdF0pP0huOmJ0W2lpXTwwfHxidFtpaV0+MjR8fDI0PT09YnRbaWldJiYoMCE9PWJ0''@;'; put 'put ''W2NuXXx8MCE9PWJ0W2puXXx8MCE9PWJ0W1hyXSk/aWk6YnRbY25dPDB8fGJ0W2NuXT41OT9jbjpidFtqbl08MHx8YnRbam5dPjU5P2puOmJ0W1hyXTwwfHxidFtYcl0+OTk5P1hyOi0xLFYoQWUpLl9vdmVyZmxvd0RheU9mWWVhciYmKEplPEZufHxKZT5IbikmJihKZT1IbiksVihBZSkuX292''@;'; put 'put ''ZXJmbG93V2Vla3MmJi0xPT09SmUmJihKZT12aSksVihBZSkuX292ZXJmbG93V2Vla2RheSYmLTE9PT1KZSYmKEplPUVyKSxWKEFlKS5vdmVyZmxvdz1KZSksQWV9dmFyIHhpPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxk''@;'; put 'put ''KSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsrLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxVZj0vXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0pKD86XGRcZFxkXGR8V1xkXGRcZHxXXGRcZHxcZFxkXGR8XGRcZHwpKSg/OihUfCApKFxkXGQoPzpc''@;'; put 'put ''ZFxkKD86XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsrLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxEYj0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/LyxRMD1bWyJZWVlZWVktTU0tREQiLC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJH''@;'; put 'put ''R0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0v''@;'; put 'put ''XSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1XXGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dLFsiWVlZWU1NIiwvXGR7Nn0vLCExXSxbIllZWVkiLC9cZHs0fS8sITFdXSxWYT1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxk''@;'; put 'put ''Ky9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9d''@;'; put 'put ''LFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxMNj0vXlwvP0RhdGVcKCgtP1xkKykvaSx0cD0vXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9ccyk/KFxkezEsMn0pXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58''@;'; put 'put ''SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoXGR7Miw0fSlccyhcZFxkKTooXGRcZCkoPzo6KFxkXGQpKT9ccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxkezR9KSkkLyxjMj17VVQ6MCxHTVQ6MCxFRFQ6LTI0MCxFU1Q6LTMwMCxDRFQ6LTMwMCxDU1Q6LTM2MCxNRFQ6''@;'; put 'put ''LTM2MCxNU1Q6LTQyMCxQRFQ6LTQyMCxQU1Q6LTQ4MH07ZnVuY3Rpb24gQmEoQWUpe3ZhciBKZSxidCxVbixQcixTbyxyYSxSdD1BZS5faSxLdD14aS5leGVjKFJ0KXx8VWYuZXhlYyhSdCksWWE9UTAubGVuZ3RoLGh1PVZhLmxlbmd0aDtpZihLdCl7Zm9yKFYoQWUpLmlzbz0hMCxKZT0wLGJ0''@;'; put 'put ''PVlhO0plPGJ0O0plKyspaWYoUTBbSmVdWzFdLmV4ZWMoS3RbMV0pKXtQcj1RMFtKZV1bMF0sVW49ITEhPT1RMFtKZV1bMl07YnJlYWt9aWYobnVsbD09UHIpcmV0dXJuIHZvaWQoQWUuX2lzVmFsaWQ9ITEpO2lmKEt0WzNdKXtmb3IoSmU9MCxidD1odTtKZTxidDtKZSsrKWlmKFZhW0plXVsx''@;'; put 'put ''XS5leGVjKEt0WzNdKSl7U289KEt0WzJdfHwiICIpK1ZhW0plXVswXTticmVha31pZihudWxsPT1TbylyZXR1cm4gdm9pZChBZS5faXNWYWxpZD0hMSl9aWYoIVVuJiZudWxsIT1TbylyZXR1cm4gdm9pZChBZS5faXNWYWxpZD0hMSk7aWYoS3RbNF0pe2lmKCFEYi5leGVjKEt0WzRdKSlyZXR1''@;'; put 'put ''cm4gdm9pZChBZS5faXNWYWxpZD0hMSk7cmE9IloifUFlLl9mPVByKyhTb3x8IiIpKyhyYXx8IiIpLHYwKEFlKX1lbHNlIEFlLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIGFhKEFlKXt2YXIgSmU9cGFyc2VJbnQoQWUsMTApO3JldHVybiBKZTw9NDk/MmUzK0plOkplPD05OTk/MTkwMCtKZTpKZX1m''@;'; put 'put ''dW5jdGlvbiBLYShBZSl7dmFyIGJ0LEplPXRwLmV4ZWMoZnVuY3Rpb24gdW0oQWUpe3JldHVybiBBZS5yZXBsYWNlKC9cKFteKCldKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxzXHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIil9KEFlLl9p''@;'; put 'put ''KSk7aWYoSmUpe2lmKGJ0PWZ1bmN0aW9uIEliKEFlLEplLGJ0LFJ0LEt0LFVuKXt2YXIgUHI9W2FhKEFlKSxKaS5pbmRleE9mKEplKSxwYXJzZUludChidCwxMCkscGFyc2VJbnQoUnQsMTApLHBhcnNlSW50KEt0LDEwKV07cmV0dXJuIFVuJiZQci5wdXNoKHBhcnNlSW50KFVuLDEwKSksUHJ9''@;'; put 'put ''KEplWzRdLEplWzNdLEplWzJdLEplWzVdLEplWzZdLEplWzddKSwhZnVuY3Rpb24gY2EoQWUsSmUsYnQpe3JldHVybiFBZXx8UGMuaW5kZXhPZihBZSk9PT1uZXcgRGF0ZShKZVswXSxKZVsxXSxKZVsyXSkuZ2V0RGF5KCl8fChWKGJ0KS53ZWVrZGF5TWlzbWF0Y2g9ITAsYnQuX2lzVmFsaWQ9''@;'; put 'put ''ITEsITEpfShKZVsxXSxidCxBZSkpcmV0dXJuO0FlLl9hPWJ0LEFlLl90em09ZnVuY3Rpb24gcGkoQWUsSmUsYnQpe2lmKEFlKXJldHVybiBjMltBZV07aWYoSmUpcmV0dXJuIDA7dmFyIFJ0PXBhcnNlSW50KGJ0LDEwKSxLdD1SdCUxMDA7cmV0dXJuKFJ0LUt0KS8xMDAqNjArS3R9KEplWzhd''@;'; put 'put ''LEplWzldLEplWzEwXSksQWUuX2Q9ZDAuYXBwbHkobnVsbCxBZS5fYSksQWUuX2Quc2V0VVRDTWludXRlcyhBZS5fZC5nZXRVVENNaW51dGVzKCktQWUuX3R6bSksVihBZSkucmZjMjgyMj0hMH1lbHNlIEFlLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIFBpKEFlLEplLGJ0KXtyZXR1cm4gQWU/P0pl''@;'; put 'put ''Pz9idH1mdW5jdGlvbiBtYyhBZSl7dmFyIEplLGJ0LEt0LFVuLFByLFJ0PVtdO2lmKCFBZS5fZCl7Zm9yKEt0PWZ1bmN0aW9uIFA2KEFlKXt2YXIgSmU9bmV3IERhdGUoay5ub3coKSk7cmV0dXJuIEFlLl91c2VVVEM/W0plLmdldFVUQ0Z1bGxZZWFyKCksSmUuZ2V0VVRDTW9udGgoKSxKZS5n''@;'; put 'put ''ZXRVVENEYXRlKCldOltKZS5nZXRGdWxsWWVhcigpLEplLmdldE1vbnRoKCksSmUuZ2V0RGF0ZSgpXX0oQWUpLEFlLl93JiZudWxsPT1BZS5fYVtIbl0mJm51bGw9PUFlLl9hW3F0XSYmZnVuY3Rpb24gWmYoQWUpe3ZhciBKZSxidCxSdCxLdCxVbixQcixTbyxyYSxZYTtudWxsIT0oSmU9QWUu''@;'; put 'put ''X3cpLkdHfHxudWxsIT1KZS5XfHxudWxsIT1KZS5FPyhVbj0xLFByPTQsYnQ9UGkoSmUuR0csQWUuX2FbRm5dLEZsKGNsKCksMSw0KS55ZWFyKSxSdD1QaShKZS5XLDEpLCgoS3Q9UGkoSmUuRSwxKSk8MXx8S3Q+NykmJihyYT0hMCkpOihVbj1BZS5fbG9jYWxlLl93ZWVrLmRvdyxQcj1BZS5f''@;'; put 'put ''bG9jYWxlLl93ZWVrLmRveSxZYT1GbChjbCgpLFVuLFByKSxidD1QaShKZS5nZyxBZS5fYVtGbl0sWWEueWVhciksUnQ9UGkoSmUudyxZYS53ZWVrKSxudWxsIT1KZS5kPygoS3Q9SmUuZCk8MHx8S3Q+NikmJihyYT0hMCk6bnVsbCE9SmUuZT8oS3Q9SmUuZStVbiwoSmUuZTwwfHxKZS5lPjYp''@;'; put 'put ''JiYocmE9ITApKTpLdD1VbiksUnQ8MXx8UnQ+TXIoYnQsVW4sUHIpP1YoQWUpLl9vdmVyZmxvd1dlZWtzPSEwOm51bGwhPXJhP1YoQWUpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KFNvPXZhKGJ0LFJ0LEt0LFVuLFByKSxBZS5fYVtGbl09U28ueWVhcixBZS5fZGF5T2ZZZWFyPVNvLmRheU9mWWVh''@;'; put 'put ''cil9KEFlKSxudWxsIT1BZS5fZGF5T2ZZZWFyJiYoUHI9UGkoQWUuX2FbRm5dLEt0W0ZuXSksKEFlLl9kYXlPZlllYXI+QnUoUHIpfHwwPT09QWUuX2RheU9mWWVhcikmJihWKEFlKS5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLGJ0PWQwKFByLDAsQWUuX2RheU9mWWVhciksQWUuX2FbcXRdPWJ0''@;'; put 'put ''LmdldFVUQ01vbnRoKCksQWUuX2FbSG5dPWJ0LmdldFVUQ0RhdGUoKSksSmU9MDtKZTwzJiZudWxsPT1BZS5fYVtKZV07KytKZSlBZS5fYVtKZV09UnRbSmVdPUt0W0plXTtmb3IoO0plPDc7SmUrKylBZS5fYVtKZV09UnRbSmVdPW51bGw9PUFlLl9hW0plXT8yPT09SmU/MTowOkFlLl9hW0pl''@;'; put 'put ''XTsyND09PUFlLl9hW2lpXSYmMD09PUFlLl9hW2NuXSYmMD09PUFlLl9hW2puXSYmMD09PUFlLl9hW1hyXSYmKEFlLl9uZXh0RGF5PSEwLEFlLl9hW2lpXT0wKSxBZS5fZD0oQWUuX3VzZVVUQz9kMDpLZCkuYXBwbHkobnVsbCxSdCksVW49QWUuX3VzZVVUQz9BZS5fZC5nZXRVVENEYXkoKTpB''@;'; put 'put ''ZS5fZC5nZXREYXkoKSxudWxsIT1BZS5fdHptJiZBZS5fZC5zZXRVVENNaW51dGVzKEFlLl9kLmdldFVUQ01pbnV0ZXMoKS1BZS5fdHptKSxBZS5fbmV4dERheSYmKEFlLl9hW2lpXT0yNCksQWUuX3cmJnR5cGVvZiBBZS5fdy5kPCJ1IiYmQWUuX3cuZCE9PVVuJiYoVihBZSkud2Vla2RheU1p''@;'; put 'put ''c21hdGNoPSEwKX19ZnVuY3Rpb24gdjAoQWUpe2lmKEFlLl9mIT09ay5JU09fODYwMSlpZihBZS5fZiE9PWsuUkZDXzI4MjIpe0FlLl9hPVtdLFYoQWUpLmVtcHR5PSEwO3ZhciBidCxSdCxLdCxVbixQcixZYSxodSxKZT0iIitBZS5faSxTbz1KZS5sZW5ndGgscmE9MDtmb3IoaHU9KEt0PVBl''@;'; put 'put ''KEFlLl9mLEFlLl9sb2NhbGUpLm1hdGNoKHApfHxbXSkubGVuZ3RoLGJ0PTA7YnQ8aHU7YnQrKykoUnQ9KEplLm1hdGNoKEd0KFVuPUt0W2J0XSxBZSkpfHxbXSlbMF0pJiYoKFByPUplLnN1YnN0cigwLEplLmluZGV4T2YoUnQpKSkubGVuZ3RoPjAmJlYoQWUpLnVudXNlZElucHV0LnB1c2go''@;'; put 'put ''UHIpLEplPUplLnNsaWNlKEplLmluZGV4T2YoUnQpK1J0Lmxlbmd0aCkscmErPVJ0Lmxlbmd0aCkscmVbVW5dPyhSdD9WKEFlKS5lbXB0eT0hMTpWKEFlKS51bnVzZWRUb2tlbnMucHVzaChVbiksQm4oVW4sUnQsQWUpKTpBZS5fc3RyaWN0JiYhUnQmJlYoQWUpLnVudXNlZFRva2Vucy5wdXNo''@;'; put 'put ''KFVuKTtWKEFlKS5jaGFyc0xlZnRPdmVyPVNvLXJhLEplLmxlbmd0aD4wJiZWKEFlKS51bnVzZWRJbnB1dC5wdXNoKEplKSxBZS5fYVtpaV08PTEyJiYhMD09PVYoQWUpLmJpZ0hvdXImJkFlLl9hW2lpXT4wJiYoVihBZSkuYmlnSG91cj12b2lkIDApLFYoQWUpLnBhcnNlZERhdGVQYXJ0cz1B''@;'; put 'put ''ZS5fYS5zbGljZSgwKSxWKEFlKS5tZXJpZGllbT1BZS5fbWVyaWRpZW0sQWUuX2FbaWldPWZ1bmN0aW9uICQxKEFlLEplLGJ0KXt2YXIgUnQ7cmV0dXJuIG51bGw9PWJ0P0plOm51bGwhPUFlLm1lcmlkaWVtSG91cj9BZS5tZXJpZGllbUhvdXIoSmUsYnQpOihudWxsIT1BZS5pc1BNJiYoKFJ0''@;'; put 'put ''PUFlLmlzUE0oYnQpKSYmSmU8MTImJihKZSs9MTIpLCFSdCYmMTI9PT1KZSYmKEplPTApKSxKZSl9KEFlLl9sb2NhbGUsQWUuX2FbaWldLEFlLl9tZXJpZGllbSksbnVsbCE9PShZYT1WKEFlKS5lcmEpJiYoQWUuX2FbRm5dPUFlLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKFlhLEFlLl9hW0Zu''@;'; put 'put ''XSkpLG1jKEFlKSxlaChBZSl9ZWxzZSBLYShBZSk7ZWxzZSBCYShBZSl9ZnVuY3Rpb24gRjYoQWUpe3ZhciBKZT1BZS5faSxidD1BZS5fZjtyZXR1cm4gQWUuX2xvY2FsZT1BZS5fbG9jYWxlfHxwYyhBZS5fbCksbnVsbD09PUplfHx2b2lkIDA9PT1idCYmIiI9PT1KZT9VKHtudWxsSW5wdXQ6''@;'; put 'put ''ITB9KTooInN0cmluZyI9PXR5cGVvZiBKZSYmKEFlLl9pPUplPUFlLl9sb2NhbGUucHJlcGFyc2UoSmUpKSxsZShKZSk/bmV3IGllKGVoKEplKSk6KEkoSmUpP0FlLl9kPUplOmhlKGJ0KT9mdW5jdGlvbiBGYyhBZSl7dmFyIEplLGJ0LFJ0LEt0LFVuLFByLFNvPSExLHJhPUFlLl9mLmxlbmd0''@;'; put 'put ''aDtpZigwPT09cmEpcmV0dXJuIFYoQWUpLmludmFsaWRGb3JtYXQ9ITAsdm9pZChBZS5fZD1uZXcgRGF0ZShOYU4pKTtmb3IoS3Q9MDtLdDxyYTtLdCsrKVVuPTAsUHI9ITEsSmU9bmUoe30sQWUpLG51bGwhPUFlLl91c2VVVEMmJihKZS5fdXNlVVRDPUFlLl91c2VVVEMpLEplLl9mPUFlLl9m''@;'; put 'put ''W0t0XSx2MChKZSksVyhKZSkmJihQcj0hMCksVW4rPVYoSmUpLmNoYXJzTGVmdE92ZXIsVW4rPTEwKlYoSmUpLnVudXNlZFRva2Vucy5sZW5ndGgsVihKZSkuc2NvcmU9VW4sU28/VW48UnQmJihSdD1VbixidD1KZSk6KG51bGw9PVJ0fHxVbjxSdHx8UHIpJiYoUnQ9VW4sYnQ9SmUsUHImJihT''@;'; put 'put ''bz0hMCkpO0UoQWUsYnR8fEplKX0oQWUpOmJ0P3YwKEFlKTpmdW5jdGlvbiBINihBZSl7dmFyIEplPUFlLl9pO0soSmUpP0FlLl9kPW5ldyBEYXRlKGsubm93KCkpOkkoSmUpP0FlLl9kPW5ldyBEYXRlKEplLnZhbHVlT2YoKSk6InN0cmluZyI9PXR5cGVvZiBKZT9mdW5jdGlvbiBWbyhBZSl7''@;'; put 'put ''dmFyIEplPUw2LmV4ZWMoQWUuX2kpO251bGw9PT1KZT8oQmEoQWUpLCExPT09QWUuX2lzVmFsaWQmJihkZWxldGUgQWUuX2lzVmFsaWQsS2EoQWUpLCExPT09QWUuX2lzVmFsaWQmJihkZWxldGUgQWUuX2lzVmFsaWQsQWUuX3N0cmljdD9BZS5faXNWYWxpZD0hMTprLmNyZWF0ZUZyb21JbnB1''@;'; put 'put ''dEZhbGxiYWNrKEFlKSkpKTpBZS5fZD1uZXcgRGF0ZSgrSmVbMV0pfShBZSk6aGUoSmUpPyhBZS5fYT1SKEplLnNsaWNlKDApLGZ1bmN0aW9uKGJ0KXtyZXR1cm4gcGFyc2VJbnQoYnQsMTApfSksbWMoQWUpKTpIKEplKT9mdW5jdGlvbiBUdShBZSl7aWYoIUFlLl9kKXt2YXIgSmU9cWUoQWUu''@;'; put 'put ''X2kpO0FlLl9hPVIoW0plLnllYXIsSmUubW9udGgsdm9pZCAwPT09SmUuZGF5P0plLmRhdGU6SmUuZGF5LEplLmhvdXIsSmUubWludXRlLEplLnNlY29uZCxKZS5taWxsaXNlY29uZF0sZnVuY3Rpb24oUnQpe3JldHVybiBSdCYmcGFyc2VJbnQoUnQsMTApfSksbWMoQWUpfX0oQWUpOkooSmUp''@;'; put 'put ''P0FlLl9kPW5ldyBEYXRlKEplKTprLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKEFlKX0oQWUpLFcoQWUpfHwoQWUuX2Q9bnVsbCksQWUpKX1mdW5jdGlvbiBZZihBZSxKZSxidCxSdCxLdCl7dmFyIFVuPXt9O3JldHVybighMD09PUplfHwhMT09PUplKSYmKFJ0PUplLEplPXZvaWQgMCksKCEw''@;'; put 'put ''PT09YnR8fCExPT09YnQpJiYoUnQ9YnQsYnQ9dm9pZCAwKSwoSChBZSkmJkwoQWUpfHxoZShBZSkmJjA9PT1BZS5sZW5ndGgpJiYoQWU9dm9pZCAwKSxVbi5faXNBTW9tZW50T2JqZWN0PSEwLFVuLl91c2VVVEM9VW4uX2lzVVRDPUt0LFVuLl9sPWJ0LFVuLl9pPUFlLFVuLl9mPUplLFVuLl9z''@;'; put 'put ''dHJpY3Q9UnQsZnVuY3Rpb24gY3UoQWUpe3ZhciBKZT1uZXcgaWUoZWgoRjYoQWUpKSk7cmV0dXJuIEplLl9uZXh0RGF5JiYoSmUuYWRkKDEsImQiKSxKZS5fbmV4dERheT12b2lkIDApLEplfShVbil9ZnVuY3Rpb24gY2woQWUsSmUsYnQsUnQpe3JldHVybiBZZihBZSxKZSxidCxSdCwhMSl9''@;'; put 'put ''ay5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz11ZSgidmFsdWUgcHJvdmlkZWQgaXMgbm90IGluIGEgcmVjb2duaXplZCBSRkMyODIyIG9yIElTTyBmb3JtYXQuIG1vbWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksIHdoaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3Mg''@;'; put 'put ''YWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9ybWF0cyBhcmUgZGlzY291cmFnZWQuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uIixmdW5jdGlvbihBZSl7''@;'; put 'put ''QWUuX2Q9bmV3IERhdGUoQWUuX2krKEFlLl91c2VVVEM/IiBVVEMiOiIiKSl9KSxrLklTT184NjAxPWZ1bmN0aW9uKCl7fSxrLlJGQ18yODIyPWZ1bmN0aW9uKCl7fTt2YXIgSzE9dWUoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8v''@;'; put 'put ''bW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigpe3ZhciBBZT1jbC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZBZS5pc1ZhbGlkKCk/QWU8dGhpcz90aGlzOkFlOlUoKX0pLFJiPXVlKCJtb21lbnQoKS5tYXggaXMg''@;'; put 'put ''ZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgQWU9Y2wuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmQWUuaXNWYWxpZCgpP0Fl''@;'; put 'put ''PnRoaXM/dGhpczpBZTpVKCl9KTtmdW5jdGlvbiBzcihBZSxKZSl7dmFyIGJ0LFJ0O2lmKDE9PT1KZS5sZW5ndGgmJmhlKEplWzBdKSYmKEplPUplWzBdKSwhSmUubGVuZ3RoKXJldHVybiBjbCgpO2ZvcihidD1KZVswXSxSdD0xO1J0PEplLmxlbmd0aDsrK1J0KSghSmVbUnRdLmlzVmFsaWQo''@;'; put 'put ''KXx8SmVbUnRdW0FlXShidCkpJiYoYnQ9SmVbUnRdKTtyZXR1cm4gYnR9dmFyIHJjPVsieWVhciIsInF1YXJ0ZXIiLCJtb250aCIsIndlZWsiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiXTtmdW5jdGlvbiBXZihBZSl7dmFyIEplPXFlKEFlKSxidD1KZS55''@;'; put 'put ''ZWFyfHwwLFJ0PUplLnF1YXJ0ZXJ8fDAsS3Q9SmUubW9udGh8fDAsVW49SmUud2Vla3x8SmUuaXNvV2Vla3x8MCxQcj1KZS5kYXl8fDAsU289SmUuaG91cnx8MCxyYT1KZS5taW51dGV8fDAsWWE9SmUuc2Vjb25kfHwwLGh1PUplLm1pbGxpc2Vjb25kfHwwO3RoaXMuX2lzVmFsaWQ9ZnVuY3Rp''@;'; put 'put ''b24gZjIoQWUpe3ZhciBKZSxSdCxidD0hMSxLdD1yYy5sZW5ndGg7Zm9yKEplIGluIEFlKWlmKEIoQWUsSmUpJiYoLTE9PT1Kci5jYWxsKHJjLEplKXx8bnVsbCE9QWVbSmVdJiZpc05hTihBZVtKZV0pKSlyZXR1cm4hMTtmb3IoUnQ9MDtSdDxLdDsrK1J0KWlmKEFlW3JjW1J0XV0pe2lmKGJ0''@;'; put 'put ''KXJldHVybiExO3BhcnNlRmxvYXQoQWVbcmNbUnRdXSkhPT1jdChBZVtyY1tSdF1dKSYmKGJ0PSEwKX1yZXR1cm4hMH0oSmUpLHRoaXMuX21pbGxpc2Vjb25kcz0raHUrMWUzKllhKzZlNCpyYSsxZTMqU28qNjAqNjAsdGhpcy5fZGF5cz0rUHIrNypVbix0aGlzLl9tb250aHM9K0t0KzMqUnQr''@;'; put 'put ''MTIqYnQsdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9cGMoKSx0aGlzLl9idWJibGUoKX1mdW5jdGlvbiB2YyhBZSl7cmV0dXJuIEFlIGluc3RhbmNlb2YgV2Z9ZnVuY3Rpb24gcTEoQWUpe3JldHVybiBBZTwwPy0xKk1hdGgucm91bmQoLTEqQWUpOk1hdGgucm91bmQoQWUpfWZ1bmN0aW9u''@;'; put 'put ''IGljKEFlLEplKXtmZShBZSwwLDAsZnVuY3Rpb24oKXt2YXIgYnQ9dGhpcy51dGNPZmZzZXQoKSxSdD0iKyI7cmV0dXJuIGJ0PDAmJihidD0tYnQsUnQ9Ii0iKSxSdCt5KH5+KGJ0LzYwKSwyKStKZSt5KH5+YnQlNjAsMil9KX1pYygiWiIsIjoiKSxpYygiWloiLCIiKSx2dCgiWiIsb3QpLHZ0''@;'; put 'put ''KCJaWiIsb3QpLFRuKFsiWiIsIlpaIl0sZnVuY3Rpb24oQWUsSmUsYnQpe2J0Ll91c2VVVEM9ITAsYnQuX3R6bT1HZihvdCxBZSl9KTt2YXIgeGE9LyhbXCtcLV18XGRcZCkvZ2k7ZnVuY3Rpb24gR2YoQWUsSmUpe3ZhciBLdCxVbixidD0oSmV8fCIiKS5tYXRjaChBZSk7cmV0dXJuIG51bGw9''@;'; put 'put ''PT1idD9udWxsOjA9PT0oVW49NjAqKEt0PSgoYnRbYnQubGVuZ3RoLTFdfHxbXSkrIiIpLm1hdGNoKHhhKXx8WyItIiwwLDBdKVsxXStjdChLdFsyXSkpPzA6IisiPT09S3RbMF0/VW46LVVufWZ1bmN0aW9uIGQyKEFlLEplKXt2YXIgYnQsUnQ7cmV0dXJuIEplLl9pc1VUQz8oYnQ9SmUuY2xv''@;'; put 'put ''bmUoKSxSdD0obGUoQWUpfHxJKEFlKT9BZS52YWx1ZU9mKCk6Y2woQWUpLnZhbHVlT2YoKSktYnQudmFsdWVPZigpLGJ0Ll9kLnNldFRpbWUoYnQuX2QudmFsdWVPZigpK1J0KSxrLnVwZGF0ZU9mZnNldChidCwhMSksYnQpOmNsKEFlKS5sb2NhbCgpfWZ1bmN0aW9uIG9jKEFlKXtyZXR1cm4t''@;'; put 'put ''TWF0aC5yb3VuZChBZS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKX1mdW5jdGlvbiBkbSgpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDJiYwPT09dGhpcy5fb2Zmc2V0fWsudXBkYXRlT2Zmc2V0PWZ1bmN0aW9uKCl7fTt2YXIgTGI9L14oLXxcKyk/KD86KFxkKilbLiBdKT8o''@;'; put 'put ''XGQrKTooXGQrKSg/OjooXGQrKShcLlxkKik/KT8kLyxucD0vXigtfFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1sw''@;'; put 'put ''LTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87ZnVuY3Rpb24gRWwoQWUsSmUpe3ZhciBLdCxVbixQcixidD1BZSxSdD1udWxsO3JldHVybiB2YyhBZSk/YnQ9e21zOkFlLl9taWxsaXNlY29uZHMsZDpBZS5fZGF5cyxNOkFlLl9tb250aHN9OkooQWUpfHwhaXNOYU4oK0FlKT8o''@;'; put 'put ''YnQ9e30sSmU/YnRbSmVdPStBZTpidC5taWxsaXNlY29uZHM9K0FlKTooUnQ9TGIuZXhlYyhBZSkpPyhLdD0iLSI9PT1SdFsxXT8tMToxLGJ0PXt5OjAsZDpjdChSdFtIbl0pKkt0LGg6Y3QoUnRbaWldKSpLdCxtOmN0KFJ0W2NuXSkqS3QsczpjdChSdFtqbl0pKkt0LG1zOmN0KHExKDFlMypS''@;'; put 'put ''dFtYcl0pKSpLdH0pOihSdD1ucC5leGVjKEFlKSk/YnQ9e3k6XzAoUnRbMl0sS3Q9Ii0iPT09UnRbMV0/LTE6MSksTTpfMChSdFszXSxLdCksdzpfMChSdFs0XSxLdCksZDpfMChSdFs1XSxLdCksaDpfMChSdFs2XSxLdCksbTpfMChSdFs3XSxLdCksczpfMChSdFs4XSxLdCl9Om51bGw9PWJ0''@;'; put 'put ''P2J0PXt9OiJvYmplY3QiPT10eXBlb2YgYnQmJigiZnJvbSJpbiBidHx8InRvImluIGJ0KSYmKFByPWZ1bmN0aW9uIHJwKEFlLEplKXt2YXIgYnQ7cmV0dXJuIEFlLmlzVmFsaWQoKSYmSmUuaXNWYWxpZCgpPyhKZT1kMihKZSxBZSksQWUuaXNCZWZvcmUoSmUpP2J0PVV1KEFlLEplKTooKGJ0''@;'; put 'put ''PVV1KEplLEFlKSkubWlsbGlzZWNvbmRzPS1idC5taWxsaXNlY29uZHMsYnQubW9udGhzPS1idC5tb250aHMpLGJ0KTp7bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9fShjbChidC5mcm9tKSxjbChidC50bykpLChidD17fSkubXM9UHIubWlsbGlzZWNvbmRzLGJ0Lk09UHIubW9udGhzKSxVbj1u''@;'; put 'put ''ZXcgV2YoYnQpLHZjKEFlKSYmQihBZSwiX2xvY2FsZSIpJiYoVW4uX2xvY2FsZT1BZS5fbG9jYWxlKSx2YyhBZSkmJkIoQWUsIl9pc1ZhbGlkIikmJihVbi5faXNWYWxpZD1BZS5faXNWYWxpZCksVW59ZnVuY3Rpb24gXzAoQWUsSmUpe3ZhciBidD1BZSYmcGFyc2VGbG9hdChBZS5yZXBsYWNl''@;'; put 'put ''KCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4oYnQpPzA6YnQpKkplfWZ1bmN0aW9uIFV1KEFlLEplKXt2YXIgYnQ9e307cmV0dXJuIGJ0Lm1vbnRocz1KZS5tb250aCgpLUFlLm1vbnRoKCkrMTIqKEplLnllYXIoKS1BZS55ZWFyKCkpLEFlLmNsb25lKCkuYWRkKGJ0Lm1vbnRocywiTSIpLmlzQWZ0''@;'; put 'put ''ZXIoSmUpJiYtLWJ0Lm1vbnRocyxidC5taWxsaXNlY29uZHM9K0plLStBZS5jbG9uZSgpLmFkZChidC5tb250aHMsIk0iKSxidH1mdW5jdGlvbiBobShBZSxKZSl7cmV0dXJuIGZ1bmN0aW9uKGJ0LFJ0KXt2YXIgVW47cmV0dXJuIG51bGwhPT1SdCYmIWlzTmFOKCtSdCkmJihZKEplLCJtb21l''@;'; put 'put ''bnQoKS4iK0plKyIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuIitKZSsiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIp''@;'; put 'put ''LFVuPWJ0LGJ0PVJ0LFJ0PVVuKSxtMih0aGlzLEVsKGJ0LFJ0KSxBZSksdGhpc319ZnVuY3Rpb24gbTIoQWUsSmUsYnQsUnQpe3ZhciBLdD1KZS5fbWlsbGlzZWNvbmRzLFVuPXExKEplLl9kYXlzKSxQcj1xMShKZS5fbW9udGhzKTtBZS5pc1ZhbGlkKCkmJihSdD1SdD8/ITAsUHImJkZpKEFl''@;'; put 'put ''LFB0KEFlLCJNb250aCIpK1ByKmJ0KSxVbiYmQXQoQWUsIkRhdGUiLFB0KEFlLCJEYXRlIikrVW4qYnQpLEt0JiZBZS5fZC5zZXRUaW1lKEFlLl9kLnZhbHVlT2YoKStLdCpidCksUnQmJmsudXBkYXRlT2Zmc2V0KEFlLFVufHxQcikpfUVsLmZuPVdmLnByb3RvdHlwZSxFbC5pbnZhbGlkPWZ1''@;'; put 'put ''bmN0aW9uIEhjKCl7cmV0dXJuIEVsKE5hTil9O3ZhciBQYj1obSgxLCJhZGQiKSxGYj1obSgtMSwic3VidHJhY3QiKTtmdW5jdGlvbiBwbShBZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBBZXx8QWUgaW5zdGFuY2VvZiBTdHJpbmd9ZnVuY3Rpb24gdnMoQWUpe3JldHVybiBsZShBZSl8fEko''@;'; put 'put ''QWUpfHxwbShBZSl8fEooQWUpfHxmdW5jdGlvbiBIYihBZSl7dmFyIEplPWhlKEFlKSxidD0hMTtyZXR1cm4gSmUmJihidD0wPT09QWUuZmlsdGVyKGZ1bmN0aW9uKFJ0KXtyZXR1cm4hSihSdCkmJnBtKEFlKX0pLmxlbmd0aCksSmUmJmJ0fShBZSl8fGZ1bmN0aW9uIFY2KEFlKXt2YXIgS3Qs''@;'; put 'put ''SmU9SChBZSkmJiFMKEFlKSxidD0hMSxSdD1bInllYXJzIiwieWVhciIsInkiLCJtb250aHMiLCJtb250aCIsIk0iLCJkYXlzIiwiZGF5IiwiZCIsImRhdGVzIiwiZGF0ZSIsIkQiLCJob3VycyIsImhvdXIiLCJoIiwibWludXRlcyIsIm1pbnV0ZSIsIm0iLCJzZWNvbmRzIiwic2Vjb25kIiwi''@;'; put 'put ''cyIsIm1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kIiwibXMiXSxQcj1SdC5sZW5ndGg7Zm9yKEt0PTA7S3Q8UHI7S3QrPTEpYnQ9YnR8fEIoQWUsUnRbS3RdKTtyZXR1cm4gSmUmJmJ0fShBZSl8fG51bGw9PUFlfWZ1bmN0aW9uIHFsKEFlLEplKXtpZihBZS5kYXRlKCk8SmUuZGF0ZSgpKXJl''@;'; put 'put ''dHVybi1xbChKZSxBZSk7dmFyIGJ0PTEyKihKZS55ZWFyKCktQWUueWVhcigpKSsoSmUubW9udGgoKS1BZS5tb250aCgpKSxSdD1BZS5jbG9uZSgpLmFkZChidCwibW9udGhzIik7cmV0dXJuLShidCsoSmUtUnQ8MD8oSmUtUnQpLyhSdC1BZS5jbG9uZSgpLmFkZChidC0xLCJtb250aHMiKSk6''@;'; put 'put ''KEplLVJ0KS8oQWUuY2xvbmUoKS5hZGQoYnQrMSwibW9udGhzIiktUnQpKSl8fDB9ZnVuY3Rpb24gTmkoQWUpe3ZhciBKZTtyZXR1cm4gdm9pZCAwPT09QWU/dGhpcy5fbG9jYWxlLl9hYmJyOihudWxsIT0oSmU9cGMoQWUpKSYmKHRoaXMuX2xvY2FsZT1KZSksdGhpcyl9ay5kZWZhdWx0Rm9y''@;'; put 'put ''bWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsay5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgamk9dWUoIm1vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3Vh''@;'; put 'put ''Z2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuIixmdW5jdGlvbihBZSl7cmV0dXJuIHZvaWQgMD09PUFlP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKEFlKX0pO2Z1bmN0aW9uIFBvKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12''@;'; put 'put ''YXIgWGw9NmU0LEoxPTYwKlhsLEdvPTM1MDYzMjgqSjE7ZnVuY3Rpb24gTmMoQWUsSmUpe3JldHVybihBZSVKZStKZSklSmV9ZnVuY3Rpb24gQmwoQWUsSmUsYnQpe3JldHVybiBBZTwxMDAmJkFlPj0wP25ldyBEYXRlKEFlKzQwMCxKZSxidCktR286bmV3IERhdGUoQWUsSmUsYnQpLnZhbHVl''@;'; put 'put ''T2YoKX1mdW5jdGlvbiBxZihBZSxKZSxidCl7cmV0dXJuIEFlPDEwMCYmQWU+PTA/RGF0ZS5VVEMoQWUrNDAwLEplLGJ0KS1HbzpEYXRlLlVUQyhBZSxKZSxidCl9ZnVuY3Rpb24gWGYoQWUsSmUpe3JldHVybiBKZS5lcmFzQWJiclJlZ2V4KEFlKX1mdW5jdGlvbiBkdSgpe3ZhciBLdCxVbixB''@;'; put 'put ''ZT1bXSxKZT1bXSxidD1bXSxSdD1bXSxQcj10aGlzLmVyYXMoKTtmb3IoS3Q9MCxVbj1Qci5sZW5ndGg7S3Q8VW47KytLdClKZS5wdXNoKHp0KFByW0t0XS5uYW1lKSksQWUucHVzaCh6dChQcltLdF0uYWJicikpLGJ0LnB1c2goenQoUHJbS3RdLm5hcnJvdykpLFJ0LnB1c2goenQoUHJbS3Rd''@;'; put 'put ''Lm5hbWUpKSxSdC5wdXNoKHp0KFByW0t0XS5hYmJyKSksUnQucHVzaCh6dChQcltLdF0ubmFycm93KSk7dGhpcy5fZXJhc1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitSdC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fZXJhc05hbWVSZWdleD1uZXcgUmVnRXhwKCJeKCIrSmUuam9pbigifCIpKyIp''@;'; put 'put ''IiwiaSIpLHRoaXMuX2VyYXNBYmJyUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0FlLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzTmFycm93UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2J0LmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBKZihBZSxKZSl7ZmUoMCxbQWUsQWUubGVuZ3RoXSww''@;'; put 'put ''LEplKX1mdW5jdGlvbiB6YihBZSxKZSxidCxSdCxLdCl7dmFyIFVuO3JldHVybiBudWxsPT1BZT9GbCh0aGlzLFJ0LEt0KS55ZWFyOihKZT4oVW49TXIoQWUsUnQsS3QpKSYmKEplPVVuKSxVYi5jYWxsKHRoaXMsQWUsSmUsYnQsUnQsS3QpKX1mdW5jdGlvbiBVYihBZSxKZSxidCxSdCxLdCl7''@;'; put 'put ''dmFyIFVuPXZhKEFlLEplLGJ0LFJ0LEt0KSxQcj1kMChVbi55ZWFyLDAsVW4uZGF5T2ZZZWFyKTtyZXR1cm4gdGhpcy55ZWFyKFByLmdldFVUQ0Z1bGxZZWFyKCkpLHRoaXMubW9udGgoUHIuZ2V0VVRDTW9udGgoKSksdGhpcy5kYXRlKFByLmdldFVUQ0RhdGUoKSksdGhpc31mZSgiTiIsMCww''@;'; put 'put ''LCJlcmFBYmJyIiksZmUoIk5OIiwwLDAsImVyYUFiYnIiKSxmZSgiTk5OIiwwLDAsImVyYUFiYnIiKSxmZSgiTk5OTiIsMCwwLCJlcmFOYW1lIiksZmUoIk5OTk5OIiwwLDAsImVyYU5hcnJvdyIpLGZlKCJ5IixbInkiLDFdLCJ5byIsImVyYVllYXIiKSxmZSgieSIsWyJ5eSIsMl0sMCwiZXJh''@;'; put 'put ''WWVhciIpLGZlKCJ5IixbInl5eSIsM10sMCwiZXJhWWVhciIpLGZlKCJ5IixbInl5eXkiLDRdLDAsImVyYVllYXIiKSx2dCgiTiIsWGYpLHZ0KCJOTiIsWGYpLHZ0KCJOTk4iLFhmKSx2dCgiTk5OTiIsZnVuY3Rpb24gZnUoQWUsSmUpe3JldHVybiBKZS5lcmFzTmFtZVJlZ2V4KEFlKX0pLHZ0''@;'; put 'put ''KCJOTk5OTiIsZnVuY3Rpb24gbHgoQWUsSmUpe3JldHVybiBKZS5lcmFzTmFycm93UmVnZXgoQWUpfSksVG4oWyJOIiwiTk4iLCJOTk4iLCJOTk5OIiwiTk5OTk4iXSxmdW5jdGlvbihBZSxKZSxidCxSdCl7dmFyIEt0PWJ0Ll9sb2NhbGUuZXJhc1BhcnNlKEFlLFJ0LGJ0Ll9zdHJpY3QpO0t0''@;'; put 'put ''P1YoYnQpLmVyYT1LdDpWKGJ0KS5pbnZhbGlkRXJhPUFlfSksdnQoInkiLF90KSx2dCgieXkiLF90KSx2dCgieXl5IixfdCksdnQoInl5eXkiLF90KSx2dCgieW8iLGZ1bmN0aW9uIE91KEFlLEplKXtyZXR1cm4gSmUuX2VyYVllYXJPcmRpbmFsUmVnZXh8fF90fSksVG4oWyJ5IiwieXkiLCJ5''@;'; put 'put ''eXkiLCJ5eXl5Il0sRm4pLFRuKFsieW8iXSxmdW5jdGlvbihBZSxKZSxidCxSdCl7dmFyIEt0O2J0Ll9sb2NhbGUuX2VyYVllYXJPcmRpbmFsUmVnZXgmJihLdD1BZS5tYXRjaChidC5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSksSmVbRm5dPWJ0Ll9sb2NhbGUuZXJhWWVhck9yZGlu''@;'; put 'put ''YWxQYXJzZT9idC5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2UoQWUsS3QpOnBhcnNlSW50KEFlLDEwKX0pLGZlKDAsWyJnZyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLndlZWtZZWFyKCklMTAwfSksZmUoMCxbIkdHIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vl''@;'; put 'put ''a1llYXIoKSUxMDB9KSxKZigiZ2dnZyIsIndlZWtZZWFyIiksSmYoImdnZ2dnIiwid2Vla1llYXIiKSxKZigiR0dHRyIsImlzb1dlZWtZZWFyIiksSmYoIkdHR0dHIiwiaXNvV2Vla1llYXIiKSxldCgid2Vla1llYXIiLCJnZyIpLGV0KCJpc29XZWVrWWVhciIsIkdHIiksRWUoIndlZWtZZWFy''@;'; put 'put ''IiwxKSxFZSgiaXNvV2Vla1llYXIiLDEpLHZ0KCJHIixWdCksdnQoImciLFZ0KSx2dCgiR0ciLE5uLGJuKSx2dCgiZ2ciLE5uLGJuKSx2dCgiR0dHRyIsQ3Qsb24pLHZ0KCJnZ2dnIixDdCxvbiksdnQoIkdHR0dHIixlbiwkbiksdnQoImdnZ2dnIixlbiwkbiksc24oWyJnZ2dnIiwiZ2dnZ2ci''@;'; put 'put ''LCJHR0dHIiwiR0dHR0ciXSxmdW5jdGlvbihBZSxKZSxidCxSdCl7SmVbUnQuc3Vic3RyKDAsMildPWN0KEFlKX0pLHNuKFsiZ2ciLCJHRyJdLGZ1bmN0aW9uKEFlLEplLGJ0LFJ0KXtKZVtSdF09ay5wYXJzZVR3b0RpZ2l0WWVhcihBZSl9KSxmZSgiUSIsMCwiUW8iLCJxdWFydGVyIiksZXQo''@;'; put 'put ''InF1YXJ0ZXIiLCJRIiksRWUoInF1YXJ0ZXIiLDcpLHZ0KCJRIixOdCksVG4oIlEiLGZ1bmN0aW9uKEFlLEplKXtKZVtxdF09MyooY3QoQWUpLTEpfSksZmUoIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSxldCgiZGF0ZSIsIkQiKSxFZSgiZGF0ZSIsOSksdnQoIkQiLE5uKSx2dCgiREQiLE5u''@;'; put 'put ''LGJuKSx2dCgiRG8iLGZ1bmN0aW9uKEFlLEplKXtyZXR1cm4gQWU/SmUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fEplLl9vcmRpbmFsUGFyc2U6SmUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50fSksVG4oWyJEIiwiREQiXSxIbiksVG4oIkRvIixmdW5jdGlvbihBZSxKZSl7SmVb''@;'; put 'put ''SG5dPWN0KEFlLm1hdGNoKE5uKVswXSl9KTt2YXIgWjY9T3QoIkRhdGUiLCEwKTtmZSgiREREIixbIkREREQiLDNdLCJERERvIiwiZGF5T2ZZZWFyIiksZXQoImRheU9mWWVhciIsIkRERCIpLEVlKCJkYXlPZlllYXIiLDQpLHZ0KCJEREQiLGhuKSx2dCgiRERERCIsR24pLFRuKFsiREREIiwi''@;'; put 'put ''RERERCJdLGZ1bmN0aW9uKEFlLEplLGJ0KXtidC5fZGF5T2ZZZWFyPWN0KEFlKX0pLGZlKCJtIixbIm1tIiwyXSwwLCJtaW51dGUiKSxldCgibWludXRlIiwibSIpLEVlKCJtaW51dGUiLDE0KSx2dCgibSIsTm4pLHZ0KCJtbSIsTm4sYm4pLFRuKFsibSIsIm1tIl0sY24pO3ZhciBTbT1PdCgi''@;'; put 'put ''TWludXRlcyIsITEpO2ZlKCJzIixbInNzIiwyXSwwLCJzZWNvbmQiKSxldCgic2Vjb25kIiwicyIpLEVlKCJzZWNvbmQiLDE1KSx2dCgicyIsTm4pLHZ0KCJzcyIsTm4sYm4pLFRuKFsicyIsInNzIl0sam4pO3ZhciByZixZNixaYj1PdCgiU2Vjb25kcyIsITEpO2ZvcihmZSgiUyIsMCwwLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJufn4odGhpcy5taWxsaXNlY29uZCgpLzEwMCl9KSxmZSgwLFsiU1MiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSksZmUoMCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSxmZSgwLFsiU1NTUyIsNF0sMCxmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiAxMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSxmZSgwLFsiU1NTU1MiLDVdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAwKnRoaXMubWlsbGlzZWNvbmQoKX0pLGZlKDAsWyJTU1NTU1MiLDZdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWUzKnRoaXMubWlsbGlzZWNvbmQoKX0pLGZlKDAsWyJT''@;'; put 'put ''U1NTU1NTIiw3XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDFlNCp0aGlzLm1pbGxpc2Vjb25kKCl9KSxmZSgwLFsiU1NTU1NTU1MiLDhdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU1KnRoaXMubWlsbGlzZWNvbmQoKX0pLGZlKDAsWyJTU1NTU1NTU1MiLDldLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU2''@;'; put 'put ''KnRoaXMubWlsbGlzZWNvbmQoKX0pLGV0KCJtaWxsaXNlY29uZCIsIm1zIiksRWUoIm1pbGxpc2Vjb25kIiwxNiksdnQoIlMiLGhuLE50KSx2dCgiU1MiLGhuLGJuKSx2dCgiU1NTIixobixHbikscmY9IlNTU1MiO3JmLmxlbmd0aDw9OTtyZis9IlMiKXZ0KHJmLF90KTtmdW5jdGlvbiB1eChB''@;'; put 'put ''ZSxKZSl7SmVbWHJdPWN0KDFlMyooIjAuIitBZSkpfWZvcihyZj0iUyI7cmYubGVuZ3RoPD05O3JmKz0iUyIpVG4ocmYsdXgpO1k2PU90KCJNaWxsaXNlY29uZHMiLCExKSxmZSgieiIsMCwwLCJ6b25lQWJiciIpLGZlKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciB3aT1pZS5wcm90b3R5cGU7''@;'; put 'put ''ZnVuY3Rpb24gTW0oQWUpe3JldHVybiBBZX13aS5hZGQ9UGIsd2kuY2FsZW5kYXI9ZnVuY3Rpb24gZ20oQWUsSmUpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYoYXJndW1lbnRzWzBdP3ZzKGFyZ3VtZW50c1swXSk/KEFlPWFyZ3VtZW50c1swXSxKZT12b2lkIDApOmZ1bmN0aW9uIG1tKEFlKXt2''@;'; put 'put ''YXIgS3QsSmU9SChBZSkmJiFMKEFlKSxidD0hMSxSdD1bInNhbWVEYXkiLCJuZXh0RGF5IiwibGFzdERheSIsIm5leHRXZWVrIiwibGFzdFdlZWsiLCJzYW1lRWxzZSJdO2ZvcihLdD0wO0t0PFJ0Lmxlbmd0aDtLdCs9MSlidD1idHx8QihBZSxSdFtLdF0pO3JldHVybiBKZSYmYnR9KGFyZ3Vt''@;'; put 'put ''ZW50c1swXSkmJihKZT1hcmd1bWVudHNbMF0sQWU9dm9pZCAwKTooQWU9dm9pZCAwLEplPXZvaWQgMCkpO3ZhciBidD1BZXx8Y2woKSxSdD1kMihidCx0aGlzKS5zdGFydE9mKCJkYXkiKSxLdD1rLmNhbGVuZGFyRm9ybWF0KHRoaXMsUnQpfHwic2FtZUVsc2UiLFVuPUplJiYoYihKZVtLdF0p''@;'; put 'put ''P0plW0t0XS5jYWxsKHRoaXMsYnQpOkplW0t0XSk7cmV0dXJuIHRoaXMuZm9ybWF0KFVufHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihLdCx0aGlzLGNsKGJ0KSkpfSx3aS5jbG9uZT1mdW5jdGlvbiB2bSgpe3JldHVybiBuZXcgaWUodGhpcyl9LHdpLmRpZmY9ZnVuY3Rpb24gbmEoQWUs''@;'; put 'put ''SmUsYnQpe3ZhciBSdCxLdCxVbjtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtpZighKFJ0PWQyKEFlLHRoaXMpKS5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtzd2l0Y2goS3Q9NmU0KihSdC51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSxKZT1udChKZSkpe2Nhc2UieWVhciI6VW49''@;'; put 'put ''cWwodGhpcyxSdCkvMTI7YnJlYWs7Y2FzZSJtb250aCI6VW49cWwodGhpcyxSdCk7YnJlYWs7Y2FzZSJxdWFydGVyIjpVbj1xbCh0aGlzLFJ0KS8zO2JyZWFrO2Nhc2Uic2Vjb25kIjpVbj0odGhpcy1SdCkvMWUzO2JyZWFrO2Nhc2UibWludXRlIjpVbj0odGhpcy1SdCkvNmU0O2JyZWFrO2Nh''@;'; put 'put ''c2UiaG91ciI6VW49KHRoaXMtUnQpLzM2ZTU7YnJlYWs7Y2FzZSJkYXkiOlVuPSh0aGlzLVJ0LUt0KS84NjRlNTticmVhaztjYXNlIndlZWsiOlVuPSh0aGlzLVJ0LUt0KS82MDQ4ZTU7YnJlYWs7ZGVmYXVsdDpVbj10aGlzLVJ0fXJldHVybiBidD9VbjphdChVbil9LHdpLmVuZE9mPWZ1bmN0''@;'; put 'put ''aW9uIFpvKEFlKXt2YXIgSmUsYnQ7aWYodm9pZCAwPT09KEFlPW50KEFlKSl8fCJtaWxsaXNlY29uZCI9PT1BZXx8IXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzO3N3aXRjaChidD10aGlzLl9pc1VUQz9xZjpCbCxBZSl7Y2FzZSJ5ZWFyIjpKZT1idCh0aGlzLnllYXIoKSsxLDAsMSktMTti''@;'; put 'put ''cmVhaztjYXNlInF1YXJ0ZXIiOkplPWJ0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1vbnRoKCklMyszLDEpLTE7YnJlYWs7Y2FzZSJtb250aCI6SmU9YnQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKzEsMSktMTticmVhaztjYXNlIndlZWsiOkplPWJ0KHRoaXMueWVhcigpLHRo''@;'; put 'put ''aXMubW9udGgoKSx0aGlzLmRhdGUoKS10aGlzLndlZWtkYXkoKSs3KS0xO2JyZWFrO2Nhc2UiaXNvV2VlayI6SmU9YnQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSs3KS0xO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOkplPWJ0''@;'; put 'put ''KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSsxKS0xO2JyZWFrO2Nhc2UiaG91ciI6SmU9dGhpcy5fZC52YWx1ZU9mKCksSmUrPUoxLU5jKEplKyh0aGlzLl9pc1VUQz8wOnRoaXMudXRjT2Zmc2V0KCkqWGwpLEoxKS0xO2JyZWFrO2Nhc2UibWludXRlIjpKZT10aGlzLl9k''@;'; put 'put ''LnZhbHVlT2YoKSxKZSs9WGwtTmMoSmUsWGwpLTE7YnJlYWs7Y2FzZSJzZWNvbmQiOkplPXRoaXMuX2QudmFsdWVPZigpLEplKz0xZTMtTmMoSmUsMWUzKS0xfXJldHVybiB0aGlzLl9kLnNldFRpbWUoSmUpLGsudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LHdpLmZvcm1hdD1mdW5jdGlv''@;'; put 'put ''biBibShBZSl7QWV8fChBZT10aGlzLmlzVXRjKCk/ay5kZWZhdWx0Rm9ybWF0VXRjOmsuZGVmYXVsdEZvcm1hdCk7dmFyIEplPVRlKHRoaXMsQWUpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KEplKX0sd2kuZnJvbT1mdW5jdGlvbiBqNihBZSxKZSl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aXNWYWxpZCgpJiYobGUoQWUpJiZBZS5pc1ZhbGlkKCl8fGNsKEFlKS5pc1ZhbGlkKCkpP0VsKHt0bzp0aGlzLGZyb206QWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIUplKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSx3aS5mcm9tTm93PWZ1bmN0aW9uIG9w''@;'; put 'put ''KEFlKXtyZXR1cm4gdGhpcy5mcm9tKGNsKCksQWUpfSx3aS50bz1mdW5jdGlvbiBOYihBZSxKZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYobGUoQWUpJiZBZS5pc1ZhbGlkKCl8fGNsKEFlKS5pc1ZhbGlkKCkpP0VsKHtmcm9tOnRoaXMsdG86QWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSku''@;'; put 'put ''aHVtYW5pemUoIUplKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSx3aS50b05vdz1mdW5jdGlvbiBWYihBZSl7cmV0dXJuIHRoaXMudG8oY2woKSxBZSl9LHdpLmdldD1mdW5jdGlvbiBKdChBZSl7cmV0dXJuIGIodGhpc1tBZT1udChBZSldKT90aGlzW0FlXSgpOnRoaXN9LHdp''@;'; put 'put ''LmludmFsaWRBdD1mdW5jdGlvbiBlZigpe3JldHVybiBWKHRoaXMpLm92ZXJmbG93fSx3aS5pc0FmdGVyPWZ1bmN0aW9uIEI2KEFlLEplKXt2YXIgYnQ9bGUoQWUpP0FlOmNsKEFlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWJ0LmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KEpl''@;'; put 'put ''PW50KEplKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk+YnQudmFsdWVPZigpOmJ0LnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZihKZSkudmFsdWVPZigpKX0sd2kuaXNCZWZvcmU9ZnVuY3Rpb24gRGkoQWUsSmUpe3ZhciBidD1sZShBZSk/QWU6Y2woQWUpO3JldHVybiEo''@;'; put 'put ''IXRoaXMuaXNWYWxpZCgpfHwhYnQuaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0oSmU9bnQoSmUpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKTxidC52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKEplKS52YWx1ZU9mKCk8YnQudmFsdWVPZigpKX0sd2kuaXNCZXR3ZWVu''@;'; put 'put ''PWZ1bmN0aW9uIHltKEFlLEplLGJ0LFJ0KXt2YXIgS3Q9bGUoQWUpP0FlOmNsKEFlKSxVbj1sZShKZSk/SmU6Y2woSmUpO3JldHVybiEhKHRoaXMuaXNWYWxpZCgpJiZLdC5pc1ZhbGlkKCkmJlVuLmlzVmFsaWQoKSkmJigiKCI9PT0oUnQ9UnR8fCIoKSIpWzBdP3RoaXMuaXNBZnRlcihLdCxi''@;'; put 'put ''dCk6IXRoaXMuaXNCZWZvcmUoS3QsYnQpKSYmKCIpIj09PVJ0WzFdP3RoaXMuaXNCZWZvcmUoVW4sYnQpOiF0aGlzLmlzQWZ0ZXIoVW4sYnQpKX0sd2kuaXNTYW1lPWZ1bmN0aW9uIGlwKEFlLEplKXt2YXIgUnQsYnQ9bGUoQWUpP0FlOmNsKEFlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8''@;'; put 'put ''IWJ0LmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KEplPW50KEplKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk9PT1idC52YWx1ZU9mKCk6KFJ0PWJ0LnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3RhcnRPZihKZSkudmFsdWVPZigpPD1SdCYmUnQ8PXRoaXMuY2xvbmUoKS5l''@;'; put 'put ''bmRPZihKZSkudmFsdWVPZigpKSl9LHdpLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24gU3IoQWUsSmUpe3JldHVybiB0aGlzLmlzU2FtZShBZSxKZSl8fHRoaXMuaXNBZnRlcihBZSxKZSl9LHdpLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uIFZsKEFlLEplKXtyZXR1cm4gdGhpcy5pc1NhbWUoQWUs''@;'; put 'put ''SmUpfHx0aGlzLmlzQmVmb3JlKEFlLEplKX0sd2kuaXNWYWxpZD1mdW5jdGlvbiB5Yygpe3JldHVybiBXKHRoaXMpfSx3aS5sYW5nPWppLHdpLmxvY2FsZT1OaSx3aS5sb2NhbGVEYXRhPVBvLHdpLm1heD1SYix3aS5taW49SzEsd2kucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uIHYyKCl7cmV0dXJu''@;'; put 'put ''IEUoe30sVih0aGlzKSl9LHdpLnNldD1mdW5jdGlvbiBtbihBZSxKZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBBZSl7dmFyIFJ0LGJ0PWZ1bmN0aW9uIERlKEFlKXt2YXIgYnQsSmU9W107Zm9yKGJ0IGluIEFlKUIoQWUsYnQpJiZKZS5wdXNoKHt1bml0OmJ0LHByaW9yaXR5Omh0W2J0XX0pO3Jl''@;'; put 'put ''dHVybiBKZS5zb3J0KGZ1bmN0aW9uKFJ0LEt0KXtyZXR1cm4gUnQucHJpb3JpdHktS3QucHJpb3JpdHl9KSxKZX0oQWU9cWUoQWUpKSxLdD1idC5sZW5ndGg7Zm9yKFJ0PTA7UnQ8S3Q7UnQrKyl0aGlzW2J0W1J0XS51bml0XShBZVtidFtSdF0udW5pdF0pfWVsc2UgaWYoYih0aGlzW0FlPW50''@;'; put 'put ''KEFlKV0pKXJldHVybiB0aGlzW0FlXShKZSk7cmV0dXJuIHRoaXN9LHdpLnN0YXJ0T2Y9ZnVuY3Rpb24gUTEoQWUpe3ZhciBKZSxidDtpZih2b2lkIDA9PT0oQWU9bnQoQWUpKXx8Im1pbGxpc2Vjb25kIj09PUFlfHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKGJ0PXRoaXMu''@;'; put 'put ''X2lzVVRDP3FmOkJsLEFlKXtjYXNlInllYXIiOkplPWJ0KHRoaXMueWVhcigpLDAsMSk7YnJlYWs7Y2FzZSJxdWFydGVyIjpKZT1idCh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6SmU9YnQodGhpcy55ZWFyKCksdGhpcy5tb250''@;'; put 'put ''aCgpLDEpO2JyZWFrO2Nhc2Uid2VlayI6SmU9YnQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKTticmVhaztjYXNlImlzb1dlZWsiOkplPWJ0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCkt''@;'; put 'put ''MSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOkplPWJ0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSk7YnJlYWs7Y2FzZSJob3VyIjpKZT10aGlzLl9kLnZhbHVlT2YoKSxKZS09TmMoSmUrKHRoaXMuX2lzVVRDPzA6dGhpcy51dGNPZmZzZXQoKSpYbCksSjEpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UibWludXRlIjpKZT10aGlzLl9kLnZhbHVlT2YoKSxKZS09TmMoSmUsWGwpO2JyZWFrO2Nhc2Uic2Vjb25kIjpKZT10aGlzLl9kLnZhbHVlT2YoKSxKZS09TmMoSmUsMWUzKX1yZXR1cm4gdGhpcy5fZC5zZXRUaW1lKEplKSxrLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSx3''@;'; put 'put ''aS5zdWJ0cmFjdD1GYix3aS50b0FycmF5PWZ1bmN0aW9uIEpsKCl7dmFyIEFlPXRoaXM7cmV0dXJuW0FlLnllYXIoKSxBZS5tb250aCgpLEFlLmRhdGUoKSxBZS5ob3VyKCksQWUubWludXRlKCksQWUuc2Vjb25kKCksQWUubWlsbGlzZWNvbmQoKV19LHdpLnRvT2JqZWN0PWZ1bmN0aW9uIG5o''@;'; put 'put ''KCl7dmFyIEFlPXRoaXM7cmV0dXJue3llYXJzOkFlLnllYXIoKSxtb250aHM6QWUubW9udGgoKSxkYXRlOkFlLmRhdGUoKSxob3VyczpBZS5ob3VycygpLG1pbnV0ZXM6QWUubWludXRlcygpLHNlY29uZHM6QWUuc2Vjb25kcygpLG1pbGxpc2Vjb25kczpBZS5taWxsaXNlY29uZHMoKX19LHdp''@;'; put 'put ''LnRvRGF0ZT1mdW5jdGlvbiBVcygpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LHdpLnRvSVNPU3RyaW5nPWZ1bmN0aW9uIEtmKEFlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGw7dmFyIEplPSEwIT09QWUsYnQ9SmU/dGhpcy5jbG9uZSgpLnV0YygpOnRoaXM7cmV0''@;'; put 'put ''dXJuIGJ0LnllYXIoKTwwfHxidC55ZWFyKCk+OTk5OT9UZShidCxKZT8iWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpOmIoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP0plP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmco''@;'; put 'put ''KTpuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSs2MCp0aGlzLnV0Y09mZnNldCgpKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKCJaIixUZShidCwiWiIpKTpUZShidCxKZT8iWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIil9LHdpLmlu''@;'; put 'put ''c3BlY3Q9ZnVuY3Rpb24gWnUoKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIm1vbWVudC5pbnZhbGlkKC8qICIrdGhpcy5faSsiICovKSI7dmFyIGJ0LFJ0LEFlPSJtb21lbnQiLEplPSIiO3JldHVybiB0aGlzLmlzTG9jYWwoKXx8KEFlPTA9PT10aGlzLnV0Y09mZnNldCgpPyJtb21lbnQu''@;'; put 'put ''dXRjIjoibW9tZW50LnBhcnNlWm9uZSIsSmU9IloiKSxidD0iWyIrQWUrJygiXScsUnQ9MDw9dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIix0aGlzLmZvcm1hdChidCtSdCsiLU1NLUREW1RdSEg6bW06c3MuU1NTIitKZSsnWyIpXScpfSx0eXBlb2YgU3lt''@;'; put 'put ''Ym9sPCJ1IiYmbnVsbCE9U3ltYm9sLmZvciYmKHdpW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uKCl7cmV0dXJuIk1vbWVudDwiK3RoaXMuZm9ybWF0KCkrIj4ifSksd2kudG9KU09OPWZ1bmN0aW9uIHJoKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgp''@;'; put 'put ''P3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSx3aS50b1N0cmluZz1mdW5jdGlvbiB6cygpe3JldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX0sd2kudW5peD1mdW5jdGlvbiBfbSgpe3JldHVybiBNYXRoLmZs''@;'; put 'put ''b29yKHRoaXMudmFsdWVPZigpLzFlMyl9LHdpLnZhbHVlT2Y9ZnVuY3Rpb24gZzIoKXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfSx3aS5jcmVhdGlvbkRhdGE9ZnVuY3Rpb24gdGYoKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixs''@;'; put 'put ''b2NhbGU6dGhpcy5fbG9jYWxlLGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0aGlzLl9zdHJpY3R9fSx3aS5lcmFOYW1lPWZ1bmN0aW9uIHlhKCl7dmFyIEFlLEplLGJ0LFJ0PXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoQWU9MCxKZT1SdC5sZW5ndGg7QWU8SmU7KytBZSlpZihidD10''@;'; put 'put ''aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLFJ0W0FlXS5zaW5jZTw9YnQmJmJ0PD1SdFtBZV0udW50aWx8fFJ0W0FlXS51bnRpbDw9YnQmJmJ0PD1SdFtBZV0uc2luY2UpcmV0dXJuIFJ0W0FlXS5uYW1lO3JldHVybiIifSx3aS5lcmFOYXJyb3c9ZnVuY3Rpb24gYXgoKXt2''@;'; put 'put ''YXIgQWUsSmUsYnQsUnQ9dGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpO2ZvcihBZT0wLEplPVJ0Lmxlbmd0aDtBZTxKZTsrK0FlKWlmKGJ0PXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksUnRbQWVdLnNpbmNlPD1idCYmYnQ8PVJ0W0FlXS51bnRpbHx8UnRbQWVdLnVudGls''@;'; put 'put ''PD1idCYmYnQ8PVJ0W0FlXS5zaW5jZSlyZXR1cm4gUnRbQWVdLm5hcnJvdztyZXR1cm4iIn0sd2kuZXJhQWJicj1mdW5jdGlvbiB3bSgpe3ZhciBBZSxKZSxidCxSdD10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKEFlPTAsSmU9UnQubGVuZ3RoO0FlPEplOysrQWUpaWYoYnQ9dGhpcy5j''@;'; put 'put ''bG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxSdFtBZV0uc2luY2U8PWJ0JiZidDw9UnRbQWVdLnVudGlsfHxSdFtBZV0udW50aWw8PWJ0JiZidDw9UnRbQWVdLnNpbmNlKXJldHVybiBSdFtBZV0uYWJicjtyZXR1cm4iIn0sd2kuZXJhWWVhcj1mdW5jdGlvbiB6Nigpe3ZhciBBZSxK''@;'; put 'put ''ZSxidCxSdCxLdD10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKEFlPTAsSmU9S3QubGVuZ3RoO0FlPEplOysrQWUpaWYoYnQ9S3RbQWVdLnNpbmNlPD1LdFtBZV0udW50aWw/MTotMSxSdD10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEt0W0FlXS5zaW5jZTw9UnQm''@;'; put 'put ''JlJ0PD1LdFtBZV0udW50aWx8fEt0W0FlXS51bnRpbDw9UnQmJlJ0PD1LdFtBZV0uc2luY2UpcmV0dXJuKHRoaXMueWVhcigpLWsoS3RbQWVdLnNpbmNlKS55ZWFyKCkpKmJ0K0t0W0FlXS5vZmZzZXQ7cmV0dXJuIHRoaXMueWVhcigpfSx3aS55ZWFyPVgwLHdpLmlzTGVhcFllYXI9ZnVuY3Rp''@;'; put 'put ''b24gSjMoKXtyZXR1cm4gJGUodGhpcy55ZWFyKCkpfSx3aS53ZWVrWWVhcj1mdW5jdGlvbiBuZihBZSl7cmV0dXJuIHpiLmNhbGwodGhpcyxBZSx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95''@;'; put 'put ''KX0sd2kuaXNvV2Vla1llYXI9ZnVuY3Rpb24geTIoQWUpe3JldHVybiB6Yi5jYWxsKHRoaXMsQWUsdGhpcy5pc29XZWVrKCksdGhpcy5pc29XZWVrZGF5KCksMSw0KX0sd2kucXVhcnRlcj13aS5xdWFydGVycz1mdW5jdGlvbiBVNihBZSl7cmV0dXJuIG51bGw9PUFlP01hdGguY2VpbCgodGhp''@;'; put 'put ''cy5tb250aCgpKzEpLzMpOnRoaXMubW9udGgoMyooQWUtMSkrdGhpcy5tb250aCgpJTMpfSx3aS5tb250aD1Ibyx3aS5kYXlzSW5Nb250aD1mdW5jdGlvbiBnYSgpe3JldHVybiBhbyh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCkpfSx3aS53ZWVrPXdpLndlZWtzPWZ1bmN0aW9uIHNhKEFlKXt2''@;'; put 'put ''YXIgSmU9dGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtyZXR1cm4gbnVsbD09QWU/SmU6dGhpcy5hZGQoNyooQWUtSmUpLCJkIil9LHdpLmlzb1dlZWs9d2kuaXNvV2Vla3M9ZnVuY3Rpb24gR2koQWUpe3ZhciBKZT1GbCh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVsbD09QWU/SmU6dGhp''@;'; put 'put ''cy5hZGQoNyooQWUtSmUpLCJkIil9LHdpLndlZWtzSW5ZZWFyPWZ1bmN0aW9uIEJiKCl7dmFyIEFlPXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO3JldHVybiBNcih0aGlzLnllYXIoKSxBZS5kb3csQWUuZG95KX0sd2kud2Vla3NJbldlZWtZZWFyPWZ1bmN0aW9uIGpiKCl7dmFyIEFlPXRoaXMu''@;'; put 'put ''bG9jYWxlRGF0YSgpLl93ZWVrO3JldHVybiBNcih0aGlzLndlZWtZZWFyKCksQWUuZG93LEFlLmRveSl9LHdpLmlzb1dlZWtzSW5ZZWFyPWZ1bmN0aW9uIGFjKCl7cmV0dXJuIE1yKHRoaXMueWVhcigpLDEsNCl9LHdpLmlzb1dlZWtzSW5JU09XZWVrWWVhcj1mdW5jdGlvbiBDbSgpe3JldHVy''@;'; put 'put ''biBNcih0aGlzLmlzb1dlZWtZZWFyKCksMSw0KX0sd2kuZGF0ZT1aNix3aS5kYXk9d2kuZGF5cz1mdW5jdGlvbiBKZChBZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT1BZT90aGlzOk5hTjt2YXIgSmU9dGhpcy5faXNVVEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdl''@;'; put 'put ''dERheSgpO3JldHVybiBudWxsIT1BZT8oQWU9ZnVuY3Rpb24gJGwoQWUsSmUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgQWU/QWU6aXNOYU4oQWUpPyJudW1iZXIiPT10eXBlb2YoQWU9SmUud2Vla2RheXNQYXJzZShBZSkpP0FlOm51bGw6cGFyc2VJbnQoQWUsMTApfShBZSx0aGlzLmxvY2Fs''@;'; put 'put ''ZURhdGEoKSksdGhpcy5hZGQoQWUtSmUsImQiKSk6SmV9LHdpLndlZWtkYXk9ZnVuY3Rpb24gZXAoQWUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9QWU/dGhpczpOYU47dmFyIEplPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSU3O3JldHVybiBu''@;'; put 'put ''dWxsPT1BZT9KZTp0aGlzLmFkZChBZS1KZSwiZCIpfSx3aS5pc29XZWVrZGF5PWZ1bmN0aW9uIElyKEFlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPUFlP3RoaXM6TmFOO2lmKG51bGwhPUFlKXt2YXIgSmU9ZnVuY3Rpb24gaDAoQWUsSmUpe3JldHVybiJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgQWU/SmUud2Vla2RheXNQYXJzZShBZSklN3x8Nzppc05hTihBZSk/bnVsbDpBZX0oQWUsdGhpcy5sb2NhbGVEYXRhKCkpO3JldHVybiB0aGlzLmRheSh0aGlzLmRheSgpJTc/SmU6SmUtNyl9cmV0dXJuIHRoaXMuZGF5KCl8fDd9LHdpLmRheU9mWWVhcj1mdW5jdGlvbiBzeChBZSl7dmFy''@;'; put 'put ''IEplPU1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09QWU/SmU6dGhpcy5hZGQoQWUtSmUsImQiKX0sd2kuaG91cj13aS5ob3Vycz11YSx3aS5taW51dGU9d2kubWludXRlcz1T''@;'; put 'put ''bSx3aS5zZWNvbmQ9d2kuc2Vjb25kcz1aYix3aS5taWxsaXNlY29uZD13aS5taWxsaXNlY29uZHM9WTYsd2kudXRjT2Zmc2V0PWZ1bmN0aW9uIFgxKEFlLEplLGJ0KXt2YXIgS3QsUnQ9dGhpcy5fb2Zmc2V0fHwwO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9QWU/dGhpczpOYU47''@;'; put 'put ''aWYobnVsbCE9QWUpe2lmKCJzdHJpbmciPT10eXBlb2YgQWUpe2lmKG51bGw9PT0oQWU9R2Yob3QsQWUpKSlyZXR1cm4gdGhpc31lbHNlIE1hdGguYWJzKEFlKTwxNiYmIWJ0JiYoQWUqPTYwKTtyZXR1cm4hdGhpcy5faXNVVEMmJkplJiYoS3Q9b2ModGhpcykpLHRoaXMuX29mZnNldD1BZSx0''@;'; put 'put ''aGlzLl9pc1VUQz0hMCxudWxsIT1LdCYmdGhpcy5hZGQoS3QsIm0iKSxSdCE9PUFlJiYoIUplfHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP20yKHRoaXMsRWwoQWUtUnQsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxrLnVwZGF0''@;'; put 'put ''ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfXJldHVybiB0aGlzLl9pc1VUQz9SdDpvYyh0aGlzKX0sd2kudXRjPWZ1bmN0aW9uIGgyKEFlKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoMCxBZSl9LHdpLmxvY2FsPWZ1bmN0aW9uIHlsKEFlKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5faXNVVEMmJih0aGlzLnV0Y09mZnNldCgwLEFlKSx0aGlzLl9pc1VUQz0hMSxBZSYmdGhpcy5zdWJ0cmFjdChvYyh0aGlzKSwibSIpKSx0aGlzfSx3aS5wYXJzZVpvbmU9ZnVuY3Rpb24genUoKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCEx''@;'; put 'put ''LCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIEFlPUdmKF9uLHRoaXMuX2kpO251bGwhPUFlP3RoaXMudXRjT2Zmc2V0KEFlKTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30sd2kuaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24gJGYoQWUpe3Jl''@;'; put 'put ''dHVybiEhdGhpcy5pc1ZhbGlkKCkmJihBZT1BZT9jbChBZSkudXRjT2Zmc2V0KCk6MCwodGhpcy51dGNPZmZzZXQoKS1BZSklNjA9PTApfSx3aS5pc0RTVD1mdW5jdGlvbiB0aCgpe3JldHVybiB0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKXx8dGhp''@;'; put 'put ''cy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KCl9LHdpLmlzTG9jYWw9ZnVuY3Rpb24gcDIoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYhdGhpcy5faXNVVEN9LHdpLmlzVXRjT2Zmc2V0PWZ1bmN0aW9uIGZtKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYm''@;'; put 'put ''dGhpcy5faXNVVEN9LHdpLmlzVXRjPWRtLHdpLmlzVVRDPWRtLHdpLnpvbmVBYmJyPWZ1bmN0aW9uIFliKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifSx3aS56b25lTmFtZT1mdW5jdGlvbiBXYigpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUi''@;'; put 'put ''OiIifSx3aS5kYXRlcz11ZSgiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLFo2KSx3aS5tb250aHM9dWUoIm1vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCIsSG8pLHdpLnllYXJzPXVlKCJ5ZWFycyBhY2Nlc3Nv''@;'; put 'put ''ciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkIixYMCksd2kuem9uZT11ZSgibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLGZ1bmN0aW9u''@;'; put 'put ''IGIwKEFlLEplKXtyZXR1cm4gbnVsbCE9QWU/KCJzdHJpbmciIT10eXBlb2YgQWUmJihBZT0tQWUpLHRoaXMudXRjT2Zmc2V0KEFlLEplKSx0aGlzKTotdGhpcy51dGNPZmZzZXQoKX0pLHdpLmlzRFNUU2hpZnRlZD11ZSgiaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8v''@;'; put 'put ''bW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIsZnVuY3Rpb24gY20oKXtpZighSyh0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIEplLEFlPXt9O3JldHVybiBuZShBZSx0aGlzKSwo''@;'; put 'put ''QWU9RjYoQWUpKS5fYT8oSmU9QWUuX2lzVVRDP3ooQWUuX2EpOmNsKEFlLl9hKSx0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJmZ1bmN0aW9uIGp1KEFlLEplLGJ0KXt2YXIgUHIsUnQ9TWF0aC5taW4oQWUubGVuZ3RoLEplLmxlbmd0aCksS3Q9TWF0aC5hYnMoQWUubGVuZ3Ro''@;'; put 'put ''LUplLmxlbmd0aCksVW49MDtmb3IoUHI9MDtQcjxSdDtQcisrKShidCYmQWVbUHJdIT09SmVbUHJdfHwhYnQmJmN0KEFlW1ByXSkhPT1jdChKZVtQcl0pKSYmVW4rKztyZXR1cm4gVW4rS3R9KEFlLl9hLEplLnRvQXJyYXkoKSk+MCk6dGhpcy5faXNEU1RTaGlmdGVkPSExLHRoaXMuX2lzRFNU''@;'; put 'put ''U2hpZnRlZH0pO3ZhciB4bz1GLnByb3RvdHlwZTtmdW5jdGlvbiBacyhBZSxKZSxidCxSdCl7dmFyIEt0PXBjKCksVW49eigpLnNldChSdCxKZSk7cmV0dXJuIEt0W2J0XShVbixBZSl9ZnVuY3Rpb24geXMoQWUsSmUsYnQpe2lmKEooQWUpJiYoSmU9QWUsQWU9dm9pZCAwKSxBZT1BZXx8IiIs''@;'; put 'put ''bnVsbCE9SmUpcmV0dXJuIFpzKEFlLEplLGJ0LCJtb250aCIpO3ZhciBSdCxLdD1bXTtmb3IoUnQ9MDtSdDwxMjtSdCsrKUt0W1J0XT1acyhBZSxSdCxidCwibW9udGgiKTtyZXR1cm4gS3R9ZnVuY3Rpb24gYmMoQWUsSmUsYnQsUnQpeyJib29sZWFuIj09dHlwZW9mIEFlPyhKKEplKSYmKGJ0''@;'; put 'put ''PUplLEplPXZvaWQgMCksSmU9SmV8fCIiKTooYnQ9SmU9QWUsQWU9ITEsSihKZSkmJihidD1KZSxKZT12b2lkIDApLEplPUplfHwiIik7dmFyIFByLEt0PXBjKCksVW49QWU/S3QuX3dlZWsuZG93OjAsU289W107aWYobnVsbCE9YnQpcmV0dXJuIFpzKEplLChidCtVbiklNyxSdCwiZGF5Iik7''@;'; put 'put ''Zm9yKFByPTA7UHI8NztQcisrKVNvW1ByXT1acyhKZSwoUHIrVW4pJTcsUnQsImRheSIpO3JldHVybiBTb314by5jYWxlbmRhcj1mdW5jdGlvbiBNKEFlLEplLGJ0KXt2YXIgUnQ9dGhpcy5fY2FsZW5kYXJbQWVdfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZTtyZXR1cm4gYihSdCk/UnQuY2Fs''@;'; put 'put ''bChKZSxidCk6UnR9LHhvLmxvbmdEYXRlRm9ybWF0PWZ1bmN0aW9uIE5lKEFlKXt2YXIgSmU9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbQWVdLGJ0PXRoaXMuX2xvbmdEYXRlRm9ybWF0W0FlLnRvVXBwZXJDYXNlKCldO3JldHVybiBKZXx8IWJ0P0plOih0aGlzLl9sb25nRGF0ZUZvcm1hdFtBZV09''@;'; put 'put ''YnQubWF0Y2gocCkubWFwKGZ1bmN0aW9uKFJ0KXtyZXR1cm4iTU1NTSI9PT1SdHx8Ik1NIj09PVJ0fHwiREQiPT09UnR8fCJkZGRkIj09PVJ0P1J0LnNsaWNlKDEpOlJ0fSkuam9pbigiIiksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbQWVdKX0seG8uaW52YWxpZERhdGU9ZnVuY3Rpb24gQmUoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5faW52YWxpZERhdGV9LHhvLm9yZGluYWw9ZnVuY3Rpb24gbXQoQWUpe3JldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoIiVkIixBZSl9LHhvLnByZXBhcnNlPU1tLHhvLnBvc3Rmb3JtYXQ9TW0seG8ucmVsYXRpdmVUaW1lPWZ1bmN0aW9uIHdlKEFlLEplLGJ0LFJ0KXt2''@;'; put 'put ''YXIgS3Q9dGhpcy5fcmVsYXRpdmVUaW1lW2J0XTtyZXR1cm4gYihLdCk/S3QoQWUsSmUsYnQsUnQpOkt0LnJlcGxhY2UoLyVkL2ksQWUpfSx4by5wYXN0RnV0dXJlPWZ1bmN0aW9uIEllKEFlLEplKXt2YXIgYnQ9dGhpcy5fcmVsYXRpdmVUaW1lW0FlPjA/ImZ1dHVyZSI6InBhc3QiXTtyZXR1''@;'; put 'put ''cm4gYihidCk/YnQoSmUpOmJ0LnJlcGxhY2UoLyVzL2ksSmUpfSx4by5zZXQ9ZnVuY3Rpb24geChBZSl7dmFyIEplLGJ0O2ZvcihidCBpbiBBZSlCKEFlLGJ0KSYmKGIoSmU9QWVbYnRdKT90aGlzW2J0XT1KZTp0aGlzWyJfIitidF09SmUpO3RoaXMuX2NvbmZpZz1BZSx0aGlzLl9kYXlPZk1v''@;'; put 'put ''bnRoT3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSx4by5lcmFzPWZ1bmN0aW9uIHcwKEFlLEplKXt2YXIgYnQsUnQsS3QsVW49''@;'; put 'put ''dGhpcy5fZXJhc3x8cGMoImVuIikuX2VyYXM7Zm9yKGJ0PTAsUnQ9VW4ubGVuZ3RoO2J0PFJ0OysrYnQpc3dpdGNoKCJzdHJpbmciPT10eXBlb2YgVW5bYnRdLnNpbmNlJiYoS3Q9ayhVbltidF0uc2luY2UpLnN0YXJ0T2YoImRheSIpLFVuW2J0XS5zaW5jZT1LdC52YWx1ZU9mKCkpLHR5cGVv''@;'; put 'put ''ZiBVbltidF0udW50aWwpe2Nhc2UidW5kZWZpbmVkIjpVbltidF0udW50aWw9MS8wO2JyZWFrO2Nhc2Uic3RyaW5nIjpLdD1rKFVuW2J0XS51bnRpbCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLFVuW2J0XS51bnRpbD1LdC52YWx1ZU9mKCl9cmV0dXJuIFVufSx4by5lcmFzUGFyc2U9ZnVu''@;'; put 'put ''Y3Rpb24gYXAoQWUsSmUsYnQpe3ZhciBSdCxLdCxQcixTbyxyYSxVbj10aGlzLmVyYXMoKTtmb3IoQWU9QWUudG9VcHBlckNhc2UoKSxSdD0wLEt0PVVuLmxlbmd0aDtSdDxLdDsrK1J0KWlmKFByPVVuW1J0XS5uYW1lLnRvVXBwZXJDYXNlKCksU289VW5bUnRdLmFiYnIudG9VcHBlckNhc2Uo''@;'; put 'put ''KSxyYT1VbltSdF0ubmFycm93LnRvVXBwZXJDYXNlKCksYnQpc3dpdGNoKEplKXtjYXNlIk4iOmNhc2UiTk4iOmNhc2UiTk5OIjppZihTbz09PUFlKXJldHVybiBVbltSdF07YnJlYWs7Y2FzZSJOTk5OIjppZihQcj09PUFlKXJldHVybiBVbltSdF07YnJlYWs7Y2FzZSJOTk5OTiI6aWYocmE9''@;'; put 'put ''PT1BZSlyZXR1cm4gVW5bUnRdfWVsc2UgaWYoW1ByLFNvLHJhXS5pbmRleE9mKEFlKT49MClyZXR1cm4gVW5bUnRdfSx4by5lcmFzQ29udmVydFllYXI9ZnVuY3Rpb24gbHAoQWUsSmUpe3ZhciBidD1BZS5zaW5jZTw9QWUudW50aWw/MTotMTtyZXR1cm4gdm9pZCAwPT09SmU/ayhBZS5zaW5j''@;'; put 'put ''ZSkueWVhcigpOmsoQWUuc2luY2UpLnllYXIoKSsoSmUtQWUub2Zmc2V0KSpidH0seG8uZXJhc0FiYnJSZWdleD1mdW5jdGlvbiBpaChBZSl7cmV0dXJuIEIodGhpcywiX2VyYXNBYmJyUmVnZXgiKXx8ZHUuY2FsbCh0aGlzKSxBZT90aGlzLl9lcmFzQWJiclJlZ2V4OnRoaXMuX2VyYXNSZWdl''@;'; put 'put ''eH0seG8uZXJhc05hbWVSZWdleD1mdW5jdGlvbiBDMChBZSl7cmV0dXJuIEIodGhpcywiX2VyYXNOYW1lUmVnZXgiKXx8ZHUuY2FsbCh0aGlzKSxBZT90aGlzLl9lcmFzTmFtZVJlZ2V4OnRoaXMuX2VyYXNSZWdleH0seG8uZXJhc05hcnJvd1JlZ2V4PWZ1bmN0aW9uIG9oKEFlKXtyZXR1cm4g''@;'; put 'put ''Qih0aGlzLCJfZXJhc05hcnJvd1JlZ2V4Iil8fGR1LmNhbGwodGhpcyksQWU/dGhpcy5fZXJhc05hcnJvd1JlZ2V4OnRoaXMuX2VyYXNSZWdleH0seG8ubW9udGhzPWZ1bmN0aW9uIHNvKEFlLEplKXtyZXR1cm4gQWU/aGUodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHNbQWUubW9udGgoKV06''@;'; put 'put ''dGhpcy5fbW9udGhzWyh0aGlzLl9tb250aHMuaXNGb3JtYXR8fHRvKS50ZXN0KEplKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW0FlLm1vbnRoKCldOmhlKHRoaXMuX21vbnRocyk/dGhpcy5fbW9udGhzOnRoaXMuX21vbnRocy5zdGFuZGFsb25lfSx4by5tb250aHNTaG9ydD1mdW5jdGlvbiBY''@;'; put 'put ''aShBZSxKZSl7cmV0dXJuIEFlP2hlKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFtBZS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFt0by50ZXN0KEplKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW0FlLm1vbnRoKCldOmhlKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9t''@;'; put 'put ''b250aHNTaG9ydDp0aGlzLl9tb250aHNTaG9ydC5zdGFuZGFsb25lfSx4by5tb250aHNQYXJzZT1mdW5jdGlvbiBfcihBZSxKZSxidCl7dmFyIFJ0LEt0LFVuO2lmKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpcmV0dXJuIHBvLmNhbGwodGhpcyxBZSxKZSxidCk7Zm9yKHRoaXMuX21vbnRoc1Bh''@;'; put 'put ''cnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10pLFJ0PTA7UnQ8MTI7UnQrKyl7aWYoS3Q9eihbMmUzLFJ0XSksYnQmJiF0aGlzLl9sb25nTW9udGhzUGFyc2VbUnRdJiYodGhpcy5fbG9uZ01vbnRoc1Bh''@;'; put 'put ''cnNlW1J0XT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhLdCwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbUnRdPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzU2hvcnQoS3QsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksIWJ0JiYh''@;'; put 'put ''dGhpcy5fbW9udGhzUGFyc2VbUnRdJiYoVW49Il4iK3RoaXMubW9udGhzKEt0LCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoS3QsIiIpLHRoaXMuX21vbnRoc1BhcnNlW1J0XT1uZXcgUmVnRXhwKFVuLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxidCYmIk1NTU0iPT09SmUmJnRoaXMuX2xvbmdN''@;'; put 'put ''b250aHNQYXJzZVtSdF0udGVzdChBZSkpcmV0dXJuIFJ0O2lmKGJ0JiYiTU1NIj09PUplJiZ0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW1J0XS50ZXN0KEFlKSlyZXR1cm4gUnQ7aWYoIWJ0JiZ0aGlzLl9tb250aHNQYXJzZVtSdF0udGVzdChBZSkpcmV0dXJuIFJ0fX0seG8ubW9udGhzUmVnZXg9''@;'; put 'put ''ZnVuY3Rpb24gVnUoQWUpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhCKHRoaXMsIl9tb250aHNSZWdleCIpfHxncy5jYWxsKHRoaXMpLEFlP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KTooQih0aGlzLCJfbW9udGhzUmVnZXgiKXx8KHRoaXMuX21v''@;'; put 'put ''bnRoc1JlZ2V4PWxvKSx0aGlzLl9tb250aHNTdHJpY3RSZWdleCYmQWU/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpfSx4by5tb250aHNTaG9ydFJlZ2V4PWZ1bmN0aW9uIGxhKEFlKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oQih0aGlzLCJfbW9u''@;'; put 'put ''dGhzUmVnZXgiKXx8Z3MuY2FsbCh0aGlzKSxBZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpOihCKHRoaXMsIl9tb250aHNTaG9ydFJlZ2V4Iil8fCh0aGlzLl9tb250aHNTaG9ydFJlZ2V4PWNvKSx0aGlzLl9tb250aHNTaG9ydFN0cmljdFJl''@;'; put 'put ''Z2V4JiZBZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpfSx4by53ZWVrPWZ1bmN0aW9uIHFkKEFlKXtyZXR1cm4gRmwoQWUsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vlay5kb3kpLndlZWt9LHhvLmZpcnN0RGF5T2ZZZWFyPWZ1bmN0aW9uIG5s''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX3dlZWsuZG95fSx4by5maXJzdERheU9mV2Vlaz1mdW5jdGlvbiByMigpe3JldHVybiB0aGlzLl93ZWVrLmRvd30seG8ud2Vla2RheXM9ZnVuY3Rpb24gYTIoQWUsSmUpe3ZhciBidD1oZSh0aGlzLl93ZWVrZGF5cyk/dGhpcy5fd2Vla2RheXM6dGhpcy5fd2Vla2Rh''@;'; put 'put ''eXNbQWUmJiEwIT09QWUmJnRoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoSmUpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl07cmV0dXJuITA9PT1BZT9rbChidCx0aGlzLl93ZWVrLmRvdyk6QWU/YnRbQWUuZGF5KCldOmJ0fSx4by53ZWVrZGF5c01pbj1mdW5jdGlvbiBDbyhBZSl7cmV0dXJu''@;'; put 'put ''ITA9PT1BZT9rbCh0aGlzLl93ZWVrZGF5c01pbix0aGlzLl93ZWVrLmRvdyk6QWU/dGhpcy5fd2Vla2RheXNNaW5bQWUuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufSx4by53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIFBhKEFlKXtyZXR1cm4hMD09PUFlP2tsKHRoaXMuX3dlZWtkYXlzU2hvcnQs''@;'; put 'put ''dGhpcy5fd2Vlay5kb3cpOkFlP3RoaXMuX3dlZWtkYXlzU2hvcnRbQWUuZGF5KCldOnRoaXMuX3dlZWtkYXlzU2hvcnR9LHhvLndlZWtkYXlzUGFyc2U9ZnVuY3Rpb24gWGQoQWUsSmUsYnQpe3ZhciBSdCxLdCxVbjtpZih0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpcmV0dXJuIG0wLmNhbGwo''@;'; put 'put ''dGhpcyxBZSxKZSxidCk7Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxSdD0wO1J0PDc7UnQrKyl7aWYo''@;'; put 'put ''S3Q9eihbMmUzLDFdKS5kYXkoUnQpLGJ0JiYhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbUnRdJiYodGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbUnRdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXMoS3QsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fc2hvcnRXZWVr''@;'; put 'put ''ZGF5c1BhcnNlW1J0XT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzU2hvcnQoS3QsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtSdF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c01pbihLdCwiIikucmVwbGFjZSgiLiIsIlxc''@;'; put 'put ''Lj8iKSsiJCIsImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtSdF18fChVbj0iXiIrdGhpcy53ZWVrZGF5cyhLdCwiIikrInxeIit0aGlzLndlZWtkYXlzU2hvcnQoS3QsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c01pbihLdCwiIiksdGhpcy5fd2Vla2RheXNQYXJzZVtSdF09bmV3IFJlZ0V4cChV''@;'; put 'put ''bi5yZXBsYWNlKCIuIiwiIiksImkiKSksYnQmJiJkZGRkIj09PUplJiZ0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtSdF0udGVzdChBZSkpcmV0dXJuIFJ0O2lmKGJ0JiYiZGRkIj09PUplJiZ0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbUnRdLnRlc3QoQWUpKXJldHVybiBSdDtpZihidCYmImRk''@;'; put 'put ''Ij09PUplJiZ0aGlzLl9taW5XZWVrZGF5c1BhcnNlW1J0XS50ZXN0KEFlKSlyZXR1cm4gUnQ7aWYoIWJ0JiZ0aGlzLl93ZWVrZGF5c1BhcnNlW1J0XS50ZXN0KEFlKSlyZXR1cm4gUnR9fSx4by53ZWVrZGF5c1JlZ2V4PWZ1bmN0aW9uIEV1KEFlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJz''@;'; put 'put ''ZUV4YWN0PyhCKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fGcwLmNhbGwodGhpcyksQWU/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KTooQih0aGlzLCJfd2Vla2RheXNSZWdleCIpfHwodGhpcy5fd2Vla2RheXNSZWdleD1wMCksdGhpcy5fd2Vla2RheXNT''@;'; put 'put ''dHJpY3RSZWdleCYmQWU/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KX0seG8ud2Vla2RheXNTaG9ydFJlZ2V4PWZ1bmN0aW9uIElvKEFlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhCKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fGcwLmNh''@;'; put 'put ''bGwodGhpcyksQWU/dGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCk6KEIodGhpcywiX3dlZWtkYXlzU2hvcnRSZWdleCIpfHwodGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PUtsKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgmJkFl''@;'; put 'put ''P3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXgpfSx4by53ZWVrZGF5c01pblJlZ2V4PWZ1bmN0aW9uIEVhKEFlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhCKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fGcwLmNhbGwodGhp''@;'; put 'put ''cyksQWU/dGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c01pblJlZ2V4KTooQih0aGlzLCJfd2Vla2RheXNNaW5SZWdleCIpfHwodGhpcy5fd2Vla2RheXNNaW5SZWdleD1rdSksdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCYmQWU/dGhpcy5fd2Vla2RheXNN''@;'; put 'put ''aW5TdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c01pblJlZ2V4KX0seG8uaXNQTT1mdW5jdGlvbiBiaShBZSl7cmV0dXJuInAiPT09KEFlKyIiKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKX0seG8ubWVyaWRpZW09ZnVuY3Rpb24gSGwoQWUsSmUsYnQpe3JldHVybiBBZT4xMT9idD8icG0iOiJQ''@;'; put 'put ''TSI6YnQ/ImFtIjoiQU0ifSx6bygiZW4iLHtlcmFzOlt7c2luY2U6IjAwMDEtMDEtMDEiLHVudGlsOjEvMCxvZmZzZXQ6MSxuYW1lOiJBbm5vIERvbWluaSIsbmFycm93OiJBRCIsYWJicjoiQUQifSx7c2luY2U6IjAwMDAtMTItMzEiLHVudGlsOi0xLzAsb2Zmc2V0OjEsbmFtZToiQmVmb3Jl''@;'; put 'put ''IENocmlzdCIsbmFycm93OiJCQyIsYWJicjoiQkMifV0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24oQWUpe3ZhciBKZT1BZSUxMDtyZXR1cm4gQWUrKDE9PT1jdChBZSUxMDAvMTApPyJ0aCI6MT09PUplPyJzdCI6Mj09PUpl''@;'; put 'put ''PyJuZCI6Mz09PUplPyJyZCI6InRoIil9fSksay5sYW5nPXVlKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsem8pLGsubGFuZ0RhdGE9dWUoIm1vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEg''@;'; put 'put ''aW5zdGVhZC4iLHBjKTt2YXIgZTE9TWF0aC5hYnM7ZnVuY3Rpb24gYWgoQWUsSmUsYnQsUnQpe3ZhciBLdD1FbChKZSxidCk7cmV0dXJuIEFlLl9taWxsaXNlY29uZHMrPVJ0Kkt0Ll9taWxsaXNlY29uZHMsQWUuX2RheXMrPVJ0Kkt0Ll9kYXlzLEFlLl9tb250aHMrPVJ0Kkt0Ll9tb250aHMs''@;'; put 'put ''QWUuX2J1YmJsZSgpfWZ1bmN0aW9uIFZjKEFlKXtyZXR1cm4gQWU8MD9NYXRoLmZsb29yKEFlKTpNYXRoLmNlaWwoQWUpfWZ1bmN0aW9uIGJzKEFlKXtyZXR1cm4gNDgwMCpBZS8xNDYwOTd9ZnVuY3Rpb24gdXAoQWUpe3JldHVybiAxNDYwOTcqQWUvNDgwMH1mdW5jdGlvbiBCYyhBZSl7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoQWUpfX12YXIgZnA9QmMoIm1zIiksSzY9QmMoInMiKSwkYj1CYygibSIpLGpjPUJjKCJoIiksdDE9QmMoImQiKSxLYj1CYygidyIpLGRwPUJjKCJNIikscWI9QmMoIlEiKSxYYj1CYygieSIpO2Z1bmN0aW9uIG4xKEFlKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fZGF0YVtBZV06TmFOfX12YXIgcTY9bjEoIm1pbGxpc2Vjb25kcyIpLEpiPW4xKCJzZWNvbmRzIiksYmw9bjEoIm1pbnV0ZXMiKSxFbT1uMSgiaG91cnMiKSxRYj1uMSgiZGF5cyIpLGVfPW4xKCJtb250aHMiKSxZcz1uMSgieWVh''@;'; put 'put ''cnMiKTt2YXIgcjE9TWF0aC5yb3VuZCx6Yz17c3M6NDQsczo0NSxtOjQ1LGg6MjIsZDoyNix3Om51bGwsTToxMX07ZnVuY3Rpb24geG0oQWUsSmUsYnQsUnQsS3Qpe3JldHVybiBLdC5yZWxhdGl2ZVRpbWUoSmV8fDEsISFidCxBZSxSdCl9dmFyIEFtPU1hdGguYWJzO2Z1bmN0aW9uIG8xKEFl''@;'; put 'put ''KXtyZXR1cm4oQWU+MCktKEFlPDApfHwrQWV9ZnVuY3Rpb24gV3MoKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIFJ0LEt0LFVuLFByLHJhLFlhLGh1LE0wLEFlPUFtKHRoaXMuX21pbGxpc2Vjb25kcykvMWUzLEplPUFtKHRo''@;'; put 'put ''aXMuX2RheXMpLGJ0PUFtKHRoaXMuX21vbnRocyksU289dGhpcy5hc1NlY29uZHMoKTtyZXR1cm4gU28/KFJ0PWF0KEFlLzYwKSxLdD1hdChSdC82MCksQWUlPTYwLFJ0JT02MCxVbj1hdChidC8xMiksYnQlPTEyLFByPUFlP0FlLnRvRml4ZWQoMykucmVwbGFjZSgvXC4/MCskLywiIik6IiIs''@;'; put 'put ''cmE9U288MD8iLSI6IiIsWWE9bzEodGhpcy5fbW9udGhzKSE9PW8xKFNvKT8iLSI6IiIsaHU9bzEodGhpcy5fZGF5cykhPT1vMShTbyk/Ii0iOiIiLE0wPW8xKHRoaXMuX21pbGxpc2Vjb25kcykhPT1vMShTbyk/Ii0iOiIiLHJhKyJQIisoVW4/WWErVW4rIlkiOiIiKSsoYnQ/WWErYnQrIk0i''@;'; put 'put ''OiIiKSsoSmU/aHUrSmUrIkQiOiIiKSsoS3R8fFJ0fHxBZT8iVCI6IiIpKyhLdD9NMCtLdCsiSCI6IiIpKyhSdD9NMCtSdCsiTSI6IiIpKyhBZT9NMCtQcisiUyI6IiIpKToiUDBEIn12YXIgU2E9V2YucHJvdG90eXBlO3JldHVybiBTYS5pc1ZhbGlkPWZ1bmN0aW9uIE42KCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2lzVmFsaWR9LFNhLmFicz1mdW5jdGlvbiB0ZCgpe3ZhciBBZT10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9ZTEodGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPWUxKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1lMSh0aGlzLl9tb250aHMpLEFlLm1pbGxp''@;'; put 'put ''c2Vjb25kcz1lMShBZS5taWxsaXNlY29uZHMpLEFlLnNlY29uZHM9ZTEoQWUuc2Vjb25kcyksQWUubWludXRlcz1lMShBZS5taW51dGVzKSxBZS5ob3Vycz1lMShBZS5ob3VycyksQWUubW9udGhzPWUxKEFlLm1vbnRocyksQWUueWVhcnM9ZTEoQWUueWVhcnMpLHRoaXN9LFNhLmFkZD1mdW5j''@;'; put 'put ''dGlvbiBsaChBZSxKZSl7cmV0dXJuIGFoKHRoaXMsQWUsSmUsMSl9LFNhLnN1YnRyYWN0PWZ1bmN0aW9uICQ2KEFlLEplKXtyZXR1cm4gYWgodGhpcyxBZSxKZSwtMSl9LFNhLmFzPWZ1bmN0aW9uIGttKEFlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjt2YXIgSmUsYnQsUnQ9dGhp''@;'; put 'put ''cy5fbWlsbGlzZWNvbmRzO2lmKCJtb250aCI9PT0oQWU9bnQoQWUpKXx8InF1YXJ0ZXIiPT09QWV8fCJ5ZWFyIj09PUFlKXN3aXRjaChKZT10aGlzLl9kYXlzK1J0Lzg2NGU1LGJ0PXRoaXMuX21vbnRocyticyhKZSksQWUpe2Nhc2UibW9udGgiOnJldHVybiBidDtjYXNlInF1YXJ0ZXIiOnJl''@;'; put 'put ''dHVybiBidC8zO2Nhc2UieWVhciI6cmV0dXJuIGJ0LzEyfWVsc2Ugc3dpdGNoKEplPXRoaXMuX2RheXMrTWF0aC5yb3VuZCh1cCh0aGlzLl9tb250aHMpKSxBZSl7Y2FzZSJ3ZWVrIjpyZXR1cm4gSmUvNytSdC82MDQ4ZTU7Y2FzZSJkYXkiOnJldHVybiBKZStSdC84NjRlNTtjYXNlImhvdXIi''@;'; put 'put ''OnJldHVybiAyNCpKZStSdC8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCpKZStSdC82ZTQ7Y2FzZSJzZWNvbmQiOnJldHVybiA4NjQwMCpKZStSdC8xZTM7Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUqSmUpK1J0O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbmtub3duIHVuaXQgIitBZSl9fSxTYS5hc01pbGxpc2Vjb25kcz1mcCxTYS5hc1NlY29uZHM9SzYsU2EuYXNNaW51dGVzPSRiLFNhLmFzSG91cnM9amMsU2EuYXNEYXlzPXQxLFNhLmFzV2Vla3M9S2IsU2EuYXNNb250aHM9ZHAsU2EuYXNRdWFydGVycz1xYixTYS5hc1llYXJzPVhiLFNh''@;'; put 'put ''LnZhbHVlT2Y9ZnVuY3Rpb24gY3AoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KmN0KHRoaXMuX21vbnRocy8xMik6TmFOfSxTYS5fYnViYmxlPWZ1bmN0aW9uIHNwKCl7dmFy''@;'; put 'put ''IEt0LFVuLFByLFNvLHJhLEFlPXRoaXMuX21pbGxpc2Vjb25kcyxKZT10aGlzLl9kYXlzLGJ0PXRoaXMuX21vbnRocyxSdD10aGlzLl9kYXRhO3JldHVybiBBZT49MCYmSmU+PTAmJmJ0Pj0wfHxBZTw9MCYmSmU8PTAmJmJ0PD0wfHwoQWUrPTg2NGU1KlZjKHVwKGJ0KStKZSksSmU9MCxidD0w''@;'; put 'put ''KSxSdC5taWxsaXNlY29uZHM9QWUlMWUzLEt0PWF0KEFlLzFlMyksUnQuc2Vjb25kcz1LdCU2MCxVbj1hdChLdC82MCksUnQubWludXRlcz1VbiU2MCxQcj1hdChVbi82MCksUnQuaG91cnM9UHIlMjQsSmUrPWF0KFByLzI0KSxidCs9cmE9YXQoYnMoSmUpKSxKZS09VmModXAocmEpKSxTbz1h''@;'; put 'put ''dChidC8xMiksYnQlPTEyLFJ0LmRheXM9SmUsUnQubW9udGhzPWJ0LFJ0LnllYXJzPVNvLHRoaXN9LFNhLmNsb25lPWZ1bmN0aW9uIGZ4KCl7cmV0dXJuIEVsKHRoaXMpfSxTYS5nZXQ9ZnVuY3Rpb24gYjIoQWUpe3JldHVybiBBZT1udChBZSksdGhpcy5pc1ZhbGlkKCk/dGhpc1tBZSsicyJd''@;'; put 'put ''KCk6TmFOfSxTYS5taWxsaXNlY29uZHM9cTYsU2Euc2Vjb25kcz1KYixTYS5taW51dGVzPWJsLFNhLmhvdXJzPUVtLFNhLmRheXM9UWIsU2Eud2Vla3M9ZnVuY3Rpb24gWDYoKXtyZXR1cm4gYXQodGhpcy5kYXlzKCkvNyl9LFNhLm1vbnRocz1lXyxTYS55ZWFycz1ZcyxTYS5odW1hbml6ZT1m''@;'; put 'put ''dW5jdGlvbiBfbChBZSxKZSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBLdCxVbixidD0hMSxSdD16YztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIEFlJiYoSmU9QWUsQWU9ITEpLCJib29sZWFuIj09dHlwZW9mIEFlJiYoYnQ9''@;'; put 'put ''QWUpLCJvYmplY3QiPT10eXBlb2YgSmUmJihSdD1PYmplY3QuYXNzaWduKHt9LHpjLEplKSxudWxsIT1KZS5zJiZudWxsPT1KZS5zcyYmKFJ0LnNzPUplLnMtMSkpLFVuPWZ1bmN0aW9uIFMwKEFlLEplLGJ0LFJ0KXt2YXIgS3Q9RWwoQWUpLmFicygpLFVuPXIxKEt0LmFzKCJzIikpLFByPXIx''@;'; put 'put ''KEt0LmFzKCJtIikpLFNvPXIxKEt0LmFzKCJoIikpLHJhPXIxKEt0LmFzKCJkIikpLFlhPXIxKEt0LmFzKCJNIikpLGh1PXIxKEt0LmFzKCJ3IikpLE0wPXIxKEt0LmFzKCJ5IikpLGExPVVuPD1idC5zcyYmWyJzIixVbl18fFVuPGJ0LnMmJlsic3MiLFVuXXx8UHI8PTEmJlsibSJdfHxQcjxi''@;'; put 'put ''dC5tJiZbIm1tIixQcl18fFNvPD0xJiZbImgiXXx8U288YnQuaCYmWyJoaCIsU29dfHxyYTw9MSYmWyJkIl18fHJhPGJ0LmQmJlsiZGQiLHJhXTtyZXR1cm4gbnVsbCE9YnQudyYmKGExPWExfHxodTw9MSYmWyJ3Il18fGh1PGJ0LncmJlsid3ciLGh1XSksKGExPWExfHxZYTw9MSYmWyJNIl18''@;'; put 'put ''fFlhPGJ0Lk0mJlsiTU0iLFlhXXx8TTA8PTEmJlsieSJdfHxbInl5IixNMF0pWzJdPUplLGExWzNdPStBZT4wLGExWzRdPVJ0LHhtLmFwcGx5KG51bGwsYTEpfSh0aGlzLCFidCxSdCxLdD10aGlzLmxvY2FsZURhdGEoKSksYnQmJihVbj1LdC5wYXN0RnV0dXJlKCt0aGlzLFVuKSksS3QucG9z''@;'; put 'put ''dGZvcm1hdChVbil9LFNhLnRvSVNPU3RyaW5nPVdzLFNhLnRvU3RyaW5nPVdzLFNhLnRvSlNPTj1XcyxTYS5sb2NhbGU9TmksU2EubG9jYWxlRGF0YT1QbyxTYS50b0lzb1N0cmluZz11ZSgidG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5z''@;'; put 'put ''dGVhZCAobm90aWNlIHRoZSBjYXBpdGFscykiLFdzKSxTYS5sYW5nPWppLGZlKCJYIiwwLDAsInVuaXgiKSxmZSgieCIsMCwwLCJ2YWx1ZU9mIiksdnQoIngiLFZ0KSx2dCgiWCIsL1srLV0/XGQrKFwuXGR7MSwzfSk/LyksVG4oIlgiLGZ1bmN0aW9uKEFlLEplLGJ0KXtidC5fZD1uZXcgRGF0''@;'; put 'put ''ZSgxZTMqcGFyc2VGbG9hdChBZSkpfSksVG4oIngiLGZ1bmN0aW9uKEFlLEplLGJ0KXtidC5fZD1uZXcgRGF0ZShjdChBZSkpfSksay52ZXJzaW9uPSIyLjI5LjQiLGZ1bmN0aW9uIHYoQWUpe3NlPUFlfShjbCksay5mbj13aSxrLm1pbj1mdW5jdGlvbiBnYygpe3JldHVybiBzcigiaXNCZWZv''@;'; put 'put ''cmUiLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0say5tYXg9ZnVuY3Rpb24gSGkoKXtyZXR1cm4gc3IoImlzQWZ0ZXIiLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0say5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGV9LGsudXRjPXos''@;'; put 'put ''ay51bml4PWZ1bmN0aW9uIFFmKEFlKXtyZXR1cm4gY2woMWUzKkFlKX0say5tb250aHM9ZnVuY3Rpb24gYWYoQWUsSmUpe3JldHVybiB5cyhBZSxKZSwibW9udGhzIil9LGsuaXNEYXRlPUksay5sb2NhbGU9em8say5pbnZhbGlkPVUsay5kdXJhdGlvbj1FbCxrLmlzTW9tZW50PWxlLGsud2Vl''@;'; put 'put ''a2RheXM9ZnVuY3Rpb24gR2IoQWUsSmUsYnQpe3JldHVybiBiYyhBZSxKZSxidCwid2Vla2RheXMiKX0say5wYXJzZVpvbmU9ZnVuY3Rpb24gY3goKXtyZXR1cm4gY2wuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfSxrLmxvY2FsZURhdGE9cGMsay5pc0R1cmF0aW9uPXZjLGsu''@;'; put 'put ''bW9udGhzU2hvcnQ9ZnVuY3Rpb24gVzYoQWUsSmUpe3JldHVybiB5cyhBZSxKZSwibW9udGhzU2hvcnQiKX0say53ZWVrZGF5c01pbj1mdW5jdGlvbiBHNihBZSxKZSxidCl7cmV0dXJuIGJjKEFlLEplLGJ0LCJ3ZWVrZGF5c01pbiIpfSxrLmRlZmluZUxvY2FsZT1BdSxrLnVwZGF0ZUxvY2Fs''@;'; put 'put ''ZT1mdW5jdGlvbiBoaShBZSxKZSl7aWYobnVsbCE9SmUpe3ZhciBidCxSdCxLdD1ObDtudWxsIT1Rb1tBZV0mJm51bGwhPVFvW0FlXS5wYXJlbnRMb2NhbGU/UW9bQWVdLnNldChOKFFvW0FlXS5fY29uZmlnLEplKSk6KG51bGwhPShSdD1wcihBZSkpJiYoS3Q9UnQuX2NvbmZpZyksSmU9TihL''@;'; put 'put ''dCxKZSksbnVsbD09UnQmJihKZS5hYmJyPUFlKSwoYnQ9bmV3IEYoSmUpKS5wYXJlbnRMb2NhbGU9UW9bQWVdLFFvW0FlXT1idCksem8oQWUpfWVsc2UgbnVsbCE9UW9bQWVdJiYobnVsbCE9UW9bQWVdLnBhcmVudExvY2FsZT8oUW9bQWVdPVFvW0FlXS5wYXJlbnRMb2NhbGUsQWU9PT16bygp''@;'; put 'put ''JiZ6byhBZSkpOm51bGwhPVFvW0FlXSYmZGVsZXRlIFFvW0FlXSk7cmV0dXJuIFFvW0FlXX0say5sb2NhbGVzPWZ1bmN0aW9uIGhyKCl7cmV0dXJuIGcoUW8pfSxrLndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24gZWQoQWUsSmUsYnQpe3JldHVybiBiYyhBZSxKZSxidCwid2Vla2RheXNTaG9ydCIp''@;'; put 'put ''fSxrLm5vcm1hbGl6ZVVuaXRzPW50LGsucmVsYXRpdmVUaW1lUm91bmRpbmc9ZnVuY3Rpb24gSjYoQWUpe3JldHVybiB2b2lkIDA9PT1BZT9yMToiZnVuY3Rpb24iPT10eXBlb2YgQWUmJihyMT1BZSwhMCl9LGsucmVsYXRpdmVUaW1lVGhyZXNob2xkPWZ1bmN0aW9uIFE2KEFlLEplKXtyZXR1''@;'; put 'put ''cm4gdm9pZCAwIT09emNbQWVdJiYodm9pZCAwPT09SmU/emNbQWVdOih6Y1tBZV09SmUsInMiPT09QWUmJih6Yy5zcz1KZS0xKSwhMCkpfSxrLmNhbGVuZGFyRm9ybWF0PWZ1bmN0aW9uIGtyKEFlLEplKXt2YXIgYnQ9QWUuZGlmZihKZSwiZGF5cyIsITApO3JldHVybiBidDwtNj8ic2FtZUVs''@;'; put 'put ''c2UiOmJ0PC0xPyJsYXN0V2VlayI6YnQ8MD8ibGFzdERheSI6YnQ8MT8ic2FtZURheSI6YnQ8Mj8ibmV4dERheSI6YnQ8Nz8ibmV4dFdlZWsiOiJzYW1lRWxzZSJ9LGsucHJvdG90eXBlPXdpLGsuSFRNTDVfRk1UPXtEQVRFVElNRV9MT0NBTDoiWVlZWS1NTS1ERFRISDptbSIsREFURVRJTUVf''@;'; put 'put ''TE9DQUxfU0VDT05EUzoiWVlZWS1NTS1ERFRISDptbTpzcyIsREFURVRJTUVfTE9DQUxfTVM6IllZWVktTU0tRERUSEg6bW06c3MuU1NTIixEQVRFOiJZWVlZLU1NLUREIixUSU1FOiJISDptbSIsVElNRV9TRUNPTkRTOiJISDptbTpzcyIsVElNRV9NUzoiSEg6bW06c3MuU1NTIixXRUVLOiJH''@;'; put 'put ''R0dHLVtXXVdXIixNT05USDoiWVlZWS1NTSJ9LGt9KCl9LDgxMzIyOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgyNzQxNCk7emUuY2VydGlmaWNhdGU9VCg5NzI5MCk7dmFyIGs9c2UuZGVmaW5lKCJSU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRo''@;'; put 'put ''aXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSx0aGlzLmtleSgicHJpdmF0ZUV4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaW1lMSIpLmludCgpLHRoaXMua2V5KCJwcmltZTIiKS5pbnQo''@;'; put 'put ''KSx0aGlzLmtleSgiZXhwb25lbnQxIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MiIpLmludCgpLHRoaXMua2V5KCJjb2VmZmljaWVudCIpLmludCgpKX0pO3plLlJTQVByaXZhdGVLZXk9azt2YXIgdj1zZS5kZWZpbmUoIlJTQVB1YmxpY0tleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9i''@;'; put 'put ''aih0aGlzLmtleSgibW9kdWx1cyIpLmludCgpLHRoaXMua2V5KCJwdWJsaWNFeHBvbmVudCIpLmludCgpKX0pO3plLlJTQVB1YmxpY0tleT12O3ZhciBoZT1zZS5kZWZpbmUoIlN1YmplY3RQdWJsaWNLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0''@;'; put 'put ''aG0iKS51c2UoSCksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXkiKS5iaXRzdHIoKSl9KTt6ZS5QdWJsaWNLZXk9aGU7dmFyIEg9c2UuZGVmaW5lKCJBbGdvcml0aG1JZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRo''@;'; put 'put ''aXMua2V5KCJub25lIikubnVsbF8oKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSx0aGlzLmtleSgicGFyYW1zIikuc2VxKCkub2JqKHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgiZyIpLmludCgpKS5vcHRp''@;'; put 'put ''b25hbCgpKX0pLEI9c2UuZGVmaW5lKCJQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2UoSCksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7emUu''@;'; put 'put ''UHJpdmF0ZUtleT1CO3ZhciBMPXNlLmRlZmluZSgiRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJkZWNyeXB0Iikuc2VxKCkub2Jq''@;'; put 'put ''KHRoaXMua2V5KCJrZGUiKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2JqaWQoKSx0aGlzLmtleSgia2RlcGFyYW1zIikuc2VxKCkub2JqKHRoaXMua2V5KCJzYWx0Iikub2N0c3RyKCksdGhpcy5rZXkoIml0ZXJzIikuaW50KCkpKSx0aGlzLmtleSgiY2lwaGVyIikuc2VxKCkub2JqKHRo''@;'; put 'put ''aXMua2V5KCJhbGdvIikub2JqaWQoKSx0aGlzLmtleSgiaXYiKS5vY3RzdHIoKSkpKSx0aGlzLmtleSgic3ViamVjdFByaXZhdGVLZXkiKS5vY3RzdHIoKSl9KTt6ZS5FbmNyeXB0ZWRQcml2YXRlS2V5PUw7dmFyIEs9c2UuZGVmaW5lKCJEU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''c2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCksdGhpcy5rZXkoInB1Yl9rZXkiKS5pbnQoKSx0aGlzLmtleSgicHJpdl9rZXkiKS5pbnQoKSl9KTt6ZS5EU0FQcml2YXRl''@;'; put 'put ''S2V5PUssemUuRFNBcGFyYW09c2UuZGVmaW5lKCJEU0FwYXJhbSIsZnVuY3Rpb24oKXt0aGlzLmludCgpfSk7dmFyIEo9c2UuZGVmaW5lKCJFQ1ByaXZhdGVLZXkiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0aGlzLmtleSgicHJpdmF0ZUtl''@;'; put 'put ''eSIpLm9jdHN0cigpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoSSksdGhpcy5rZXkoInB1YmxpY0tleSIpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKCkpfSk7emUuRUNQcml2YXRlS2V5PUo7dmFyIEk9c2UuZGVmaW5lKCJFQ1BhcmFt''@;'; put 'put ''ZXRlcnMiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe25hbWVkQ3VydmU6dGhpcy5vYmppZCgpfSl9KTt6ZS5zaWduYXR1cmU9c2UuZGVmaW5lKCJzaWduYXR1cmUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInIiKS5pbnQoKSx0aGlzLmtleSgicyIpLmludCgpKX0pfSw5''@;'; put 'put ''NzI5MDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMjc0MTQpLGs9c2UuZGVmaW5lKCJUaW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHt1dGNUaW1lOnRoaXMudXRjdGltZSgpLGdlbmVyYWxUaW1lOnRoaXMuZ2VudGltZSgpfSl9KSx2PXNlLmRlZmluZSgiQXR0cmlidXRl''@;'; put 'put ''VHlwZVZhbHVlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0eXBlIikub2JqaWQoKSx0aGlzLmtleSgidmFsdWUiKS5hbnkoKSl9KSxoZT1zZS5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29y''@;'; put 'put ''aXRobSIpLm9iamlkKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSl9KSxIPXNlLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29y''@;'; put 'put ''aXRobSIpLnVzZShoZSksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXkiKS5iaXRzdHIoKSl9KSxCPXNlLmRlZmluZSgiUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSIsZnVuY3Rpb24oKXt0aGlzLnNldG9mKHYpfSksTD1zZS5kZWZpbmUoIlJETlNlcXVlbmNlIixmdW5jdGlvbigpe3RoaXMu''@;'; put 'put ''c2Vxb2YoQil9KSxLPXNlLmRlZmluZSgiTmFtZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7cmRuU2VxdWVuY2U6dGhpcy51c2UoTCl9KX0pLEo9c2UuZGVmaW5lKCJWYWxpZGl0eSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibm90QmVmb3JlIikudXNlKGspLHRoaXMu''@;'; put 'put ''a2V5KCJub3RBZnRlciIpLnVzZShrKSl9KSxJPXNlLmRlZmluZSgiRXh0ZW5zaW9uIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJleHRuSUQiKS5vYmppZCgpLHRoaXMua2V5KCJjcml0aWNhbCIpLmJvb2woKS5kZWYoITEpLHRoaXMua2V5KCJleHRuVmFsdWUiKS5vY3Rz''@;'; put 'put ''dHIoKSl9KSxSPXNlLmRlZmluZSgiVEJTQ2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJzZXJpYWxOdW1iZXIiKS5pbnQoKSx0aGlzLmtleSgic2lnbmF0dXJlIiku''@;'; put 'put ''dXNlKGhlKSx0aGlzLmtleSgiaXNzdWVyIikudXNlKEspLHRoaXMua2V5KCJ2YWxpZGl0eSIpLnVzZShKKSx0aGlzLmtleSgic3ViamVjdCIpLnVzZShLKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UoSCksdGhpcy5rZXkoImlzc3VlclVuaXF1ZUlEIikuaW1wbGljaXQo''@;'; put 'put ''MSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKEkpLm9wdGlvbmFsKCkpfSksRT1zZS5kZWZpbmUoIlg1MDlDZXJ0aWZp''@;'; put 'put ''Y2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidGJzQ2VydGlmaWNhdGUiKS51c2UoUiksdGhpcy5rZXkoInNpZ25hdHVyZUFsZ29yaXRobSIpLnVzZShoZSksdGhpcy5rZXkoInNpZ25hdHVyZVZhbHVlIikuYml0c3RyKCkpfSk7V2UuZXhwb3J0cz1FfSwxNzUyMDoo''@;'; put 'put ''V2UsemUsVCk9Pnt2YXIgc2U9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXG5ccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcblxyXSsoWzAtOUEtelxuXHIrLz1dKylbXG5ccl0rL20saz0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkp''@;'; put 'put ''fENFUlRJRklDQVRFKS0tLS0tL20sdj0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxyKy89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxoZT1UKDM2NTA1KSxIPVQoODI0ODkpLEI9VCg4NDMpLkJ1ZmZlcjtXZS5leHBvcnRzPWZ1bmN0aW9uKEws''@;'; put 'put ''Syl7dmFyIFIsSj1MLnRvU3RyaW5nKCksST1KLm1hdGNoKHNlKTtpZihJKXt2YXIgej0iYWVzIitJWzFdLGo9Qi5mcm9tKElbMl0sImhleCIpLFY9Qi5mcm9tKElbM10ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKSxHPWhlKEssai5zbGljZSgwLDgpLHBhcnNlSW50KElbMV0sMTAp''@;'; put 'put ''KS5rZXksVz1bXSxVPUguY3JlYXRlRGVjaXBoZXJpdih6LEcsaik7Vy5wdXNoKFUudXBkYXRlKFYpKSxXLnB1c2goVS5maW5hbCgpKSxSPUIuY29uY2F0KFcpfWVsc2V7dmFyIEU9Si5tYXRjaCh2KTtSPUIuZnJvbShFWzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJu''@;'; put 'put ''e3RhZzpKLm1hdGNoKGspWzFdLGRhdGE6Un19fSw4Nzk4MzooV2UsemUsVCk9Pnt2YXIgc2U9VCg4MTMyMiksaz1UKDIyNTYyKSx2PVQoMTc1MjApLGhlPVQoODI0ODkpLEg9VCg1NzEwMCksQj1UKDg0MykuQnVmZmVyO2Z1bmN0aW9uIEwoSil7dmFyIEk7Im9iamVjdCI9PXR5cGVvZiBKJiYh''@;'; put 'put ''Qi5pc0J1ZmZlcihKKSYmKEk9Si5wYXNzcGhyYXNlLEo9Si5rZXkpLCJzdHJpbmciPT10eXBlb2YgSiYmKEo9Qi5mcm9tKEopKTt2YXIgaixWLFI9dihKLEkpLEU9Ui50YWcsej1SLmRhdGE7c3dpdGNoKEUpe2Nhc2UiQ0VSVElGSUNBVEUiOlY9c2UuY2VydGlmaWNhdGUuZGVjb2RlKHosImRl''@;'; put 'put ''ciIpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvO2Nhc2UiUFVCTElDIEtFWSI6c3dpdGNoKFZ8fChWPXNlLlB1YmxpY0tleS5kZWNvZGUoeiwiZGVyIikpLGo9Vi5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4xLjEuMSI6cmV0''@;'; put 'put ''dXJuIHNlLlJTQVB1YmxpY0tleS5kZWNvZGUoVi5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybiBWLnN1YmplY3RQcml2YXRlS2V5PVYuc3ViamVjdFB1YmxpY0tleSx7dHlwZToiZWMiLGRhdGE6Vn07Y2FzZSIxLjIuODQwLjEwMDQw''@;'; put 'put ''LjQuMSI6cmV0dXJuIFYuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PXNlLkRTQXBhcmFtLmRlY29kZShWLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIikse3R5cGU6ImRzYSIsZGF0YTpWLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGtleSBp''@;'; put 'put ''ZCAiK2opfWNhc2UiRU5DUllQVEVEIFBSSVZBVEUgS0VZIjp6PWZ1bmN0aW9uIEsoSixJKXt2YXIgUj1KLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdCxFPXBhcnNlSW50KEouYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLDEwKSx6''@;'; put 'put ''PWtbSi5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCIuIildLGo9Si5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXYsVj1KLnN1YmplY3RQcml2YXRlS2V5LEc9cGFyc2VJbnQoei5zcGxpdCgiLSIpWzFdLDEwKS84LFc9SC5wYmtkZjJTeW5jKEksUixFLEcsInNoYTEiKSxV''@;'; put 'put ''PWhlLmNyZWF0ZURlY2lwaGVyaXYoeixXLGopLHE9W107cmV0dXJuIHEucHVzaChVLnVwZGF0ZShWKSkscS5wdXNoKFUuZmluYWwoKSksQi5jb25jYXQocSl9KHo9c2UuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoeiwiZGVyIiksSSk7Y2FzZSJQUklWQVRFIEtFWSI6c3dpdGNoKGo9KFY9''@;'; put 'put ''c2UuUHJpdmF0ZUtleS5kZWNvZGUoeiwiZGVyIikpLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtjYXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gc2UuUlNBUHJpdmF0ZUtleS5kZWNvZGUoVi5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1''@;'; put 'put ''LjIuMSI6cmV0dXJue2N1cnZlOlYuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6c2UuRUNQcml2YXRlS2V5LmRlY29kZShWLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKS5wcml2YXRlS2V5fTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gVi5hbGdvcml0aG0ucGFyYW1zLnByaXZf''@;'; put 'put ''a2V5PXNlLkRTQXBhcmFtLmRlY29kZShWLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKSx7dHlwZToiZHNhIixwYXJhbXM6Vi5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitqKX1jYXNlIlJTQSBQVUJMSUMgS0VZIjpyZXR1cm4gc2Uu''@;'; put 'put ''UlNBUHVibGljS2V5LmRlY29kZSh6LCJkZXIiKTtjYXNlIlJTQSBQUklWQVRFIEtFWSI6cmV0dXJuIHNlLlJTQVByaXZhdGVLZXkuZGVjb2RlKHosImRlciIpO2Nhc2UiRFNBIFBSSVZBVEUgS0VZIjpyZXR1cm57dHlwZToiZHNhIixwYXJhbXM6c2UuRFNBUHJpdmF0ZUtleS5kZWNvZGUoeiwi''@;'; put 'put ''ZGVyIil9O2Nhc2UiRUMgUFJJVkFURSBLRVkiOnJldHVybntjdXJ2ZTooej1zZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKHosImRlciIpKS5wYXJhbWV0ZXJzLnZhbHVlLHByaXZhdGVLZXk6ei5wcml2YXRlS2V5fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgdHlwZSAiK0Up''@;'; put 'put ''fX1XZS5leHBvcnRzPUwsTC5zaWduYXR1cmU9c2Uuc2lnbmF0dXJlfSw1NzEwMDooV2UsemUsVCk9Pnt6ZS5wYmtkZjI9VCgyODc4MSksemUucGJrZGYyU3luYz1UKDY4MDQ3KX0sMjg3ODE6KFdlLHplLFQpPT57dmFyIEIsUixzZT1UKDg0MykuQnVmZmVyLGs9VCg0ODgxKSx2PVQoNzU5ODAp''@;'; put 'put ''LGhlPVQoNjgwNDcpLEg9VCg2NzMwNiksTD1nbG9iYWwuY3J5cHRvJiZnbG9iYWwuY3J5cHRvLnN1YnRsZSxLPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hBLTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNIQS0zODQiLCJzaGEt''@;'; put 'put ''Mzg0IjoiU0hBLTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxKPVtdO2Z1bmN0aW9uIEUoKXtyZXR1cm4gUnx8KFI9Z2xvYmFsLnByb2Nlc3MmJmdsb2JhbC5wcm9jZXNzLm5leHRUaWNrP2dsb2JhbC5wcm9jZXNzLm5leHRUaWNrOmdsb2JhbC5xdWV1ZU1pY3Jv''@;'; put 'put ''dGFzaz9nbG9iYWwucXVldWVNaWNyb3Rhc2s6Z2xvYmFsLnNldEltbWVkaWF0ZT9nbG9iYWwuc2V0SW1tZWRpYXRlOmdsb2JhbC5zZXRUaW1lb3V0KX1mdW5jdGlvbiB6KFYsRyxXLFUscSl7cmV0dXJuIEwuaW1wb3J0S2V5KCJyYXciLFYse25hbWU6IlBCS0RGMiJ9LCExLFsiZGVyaXZlQml0''@;'; put 'put ''cyJdKS50aGVuKGZ1bmN0aW9uKHRlKXtyZXR1cm4gTC5kZXJpdmVCaXRzKHtuYW1lOiJQQktERjIiLHNhbHQ6RyxpdGVyYXRpb25zOlcsaGFzaDp7bmFtZTpxfX0sdGUsVTw8Myl9KS50aGVuKGZ1bmN0aW9uKHRlKXtyZXR1cm4gc2UuZnJvbSh0ZSl9KX1XZS5leHBvcnRzPWZ1bmN0aW9uKFYs''@;'; put 'put ''RyxXLFUscSx0ZSl7ImZ1bmN0aW9uIj09dHlwZW9mIHEmJih0ZT1xLHE9dm9pZCAwKTt2YXIgbmU9S1socT1xfHwic2hhMSIpLnRvTG93ZXJDYXNlKCldO2lmKG5lJiYiZnVuY3Rpb24iPT10eXBlb2YgZ2xvYmFsLlByb21pc2Upe2lmKGsoVyxVKSxWPUgoVix2LCJQYXNzd29yZCIpLEc9SChH''@;'; put 'put ''LHYsIlNhbHQiKSwiZnVuY3Rpb24iIT10eXBlb2YgdGUpdGhyb3cgbmV3IEVycm9yKCJObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjIiKTshZnVuY3Rpb24gaihWLEcpe1YudGhlbihmdW5jdGlvbihXKXtFKCkoZnVuY3Rpb24oKXtHKG51bGwsVyl9KX0sZnVuY3Rpb24oVyl7RSgpKGZ1''@;'; put 'put ''bmN0aW9uKCl7RyhXKX0pfSl9KGZ1bmN0aW9uIEkoVil7aWYoZ2xvYmFsLnByb2Nlc3MmJiFnbG9iYWwucHJvY2Vzcy5icm93c2VyfHwhTHx8IUwuaW1wb3J0S2V5fHwhTC5kZXJpdmVCaXRzKXJldHVybiBQcm9taXNlLnJlc29sdmUoITEpO2lmKHZvaWQgMCE9PUpbVl0pcmV0dXJuIEpbVl07''@;'; put 'put ''dmFyIEc9eihCPUJ8fHNlLmFsbG9jKDgpLEIsMTAsMTI4LFYpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KTtyZXR1cm4gSltWXT1HLEd9KG5lKS50aGVuKGZ1bmN0aW9uKGllKXtyZXR1cm4gaWU/eihWLEcsVyxVLG5lKTpoZShWLEcsVyxV''@;'; put 'put ''LHEpfSksdGUpfWVsc2UgRSgpKGZ1bmN0aW9uKCl7dmFyIGllO3RyeXtpZT1oZShWLEcsVyxVLHEpfWNhdGNoKGxlKXtyZXR1cm4gdGUobGUpfXRlKG51bGwsaWUpfSl9fSw3NTk4MDpXZT0+e3ZhciB6ZTt6ZT1nbG9iYWwucHJvY2VzcyYmZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcj8idXRmLTgi''@;'; put 'put ''Omdsb2JhbC5wcm9jZXNzJiZnbG9iYWwucHJvY2Vzcy52ZXJzaW9uP3BhcnNlSW50KHByb2Nlc3MudmVyc2lvbi5zcGxpdCgiLiIpWzBdLnNsaWNlKDEpLDEwKT49Nj8idXRmLTgiOiJiaW5hcnkiOiJ1dGYtOCIsV2UuZXhwb3J0cz16ZX0sNDg4MTpXZT0+e3ZhciB6ZT1NYXRoLnBvdygyLDMw''@;'; put 'put ''KS0xO1dlLmV4cG9ydHM9ZnVuY3Rpb24oVCxzZSl7aWYoIm51bWJlciIhPXR5cGVvZiBUKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyIik7aWYoVDwwKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBpdGVyYXRpb25zIik7aWYoIm51bWJlciIhPXR5cGVvZiBz''@;'; put 'put ''ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXkgbGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKHNlPDB8fHNlPnplfHxzZSE9c2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmFkIGtleSBsZW5ndGgiKX19LDY4MDQ3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg3NTg4KSxrPVQoMzk3MDYpLHY9VCg5Nzk2''@;'; put 'put ''NSksaGU9VCg4NDMpLkJ1ZmZlcixIPVQoNDg4MSksQj1UKDc1OTgwKSxMPVQoNjczMDYpLEs9aGUuYWxsb2MoMTI4KSxKPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07ZnVuY3Rpb24gSSh6LGos''@;'; put 'put ''Vil7dmFyIEc9ZnVuY3Rpb24gUih6KXtyZXR1cm4icm1kMTYwIj09PXp8fCJyaXBlbWQxNjAiPT09ej9mdW5jdGlvbiBWKEcpe3JldHVybihuZXcgaykudXBkYXRlKEcpLmRpZ2VzdCgpfToibWQ1Ij09PXo/c2U6ZnVuY3Rpb24gaihHKXtyZXR1cm4gdih6KS51cGRhdGUoRykuZGlnZXN0KCl9''@;'; put 'put ''fSh6KSxXPSJzaGE1MTIiPT09enx8InNoYTM4NCI9PT16PzEyODo2NDtqLmxlbmd0aD5XP2o9RyhqKTpqLmxlbmd0aDxXJiYoaj1oZS5jb25jYXQoW2osS10sVykpO2Zvcih2YXIgVT1oZS5hbGxvY1Vuc2FmZShXK0pbel0pLHE9aGUuYWxsb2NVbnNhZmUoVytKW3pdKSx0ZT0wO3RlPFc7dGUr''@;'; put 'put ''KylVW3RlXT01NF5qW3RlXSxxW3RlXT05Ml5qW3RlXTt2YXIgbmU9aGUuYWxsb2NVbnNhZmUoVytWKzQpO1UuY29weShuZSwwLDAsVyksdGhpcy5pcGFkMT1uZSx0aGlzLmlwYWQyPVUsdGhpcy5vcGFkPXEsdGhpcy5hbGc9eix0aGlzLmJsb2Nrc2l6ZT1XLHRoaXMuaGFzaD1HLHRoaXMuc2l6''@;'; put 'put ''ZT1KW3pdfUkucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih6LGope3JldHVybiB6LmNvcHkoaix0aGlzLmJsb2Nrc2l6ZSksdGhpcy5oYXNoKGopLmNvcHkodGhpcy5vcGFkLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2godGhpcy5vcGFkKX0sV2UuZXhwb3J0cz1mdW5jdGlvbiBFKHosaixWLEcs''@;'; put 'put ''Vyl7SChWLEcpO3ZhciBVPW5ldyBJKFc9V3x8InNoYTEiLHo9TCh6LEIsIlBhc3N3b3JkIiksKGo9TChqLEIsIlNhbHQiKSkubGVuZ3RoKSxxPWhlLmFsbG9jVW5zYWZlKEcpLHRlPWhlLmFsbG9jVW5zYWZlKGoubGVuZ3RoKzQpO2ouY29weSh0ZSwwLDAsai5sZW5ndGgpO2Zvcih2YXIgbmU9''@;'; put 'put ''MCxpZT1KW1ddLGxlPU1hdGguY2VpbChHL2llKSxkZT0xO2RlPD1sZTtkZSsrKXt0ZS53cml0ZVVJbnQzMkJFKGRlLGoubGVuZ3RoKTtmb3IodmFyIHVlPVUucnVuKHRlLFUuaXBhZDEpLGNlPXVlLFk9MTtZPFY7WSsrKXtjZT1VLnJ1bihjZSxVLmlwYWQyKTtmb3IodmFyIGI9MDtiPGllO2Ir''@;'; put 'put ''Kyl1ZVtiXV49Y2VbYl19dWUuY29weShxLG5lKSxuZSs9aWV9cmV0dXJuIHF9fSw2NzMwNjooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZlcjtXZS5leHBvcnRzPWZ1bmN0aW9uKGssdixoZSl7aWYoc2UuaXNCdWZmZXIoaykpcmV0dXJuIGs7aWYoInN0cmluZyI9PXR5cGVvZiBrKXJl''@;'; put 'put ''dHVybiBzZS5mcm9tKGssdik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGspKXJldHVybiBzZS5mcm9tKGsuYnVmZmVyKTt0aHJvdyBuZXcgVHlwZUVycm9yKGhlKyIgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgdHlwZWQgYXJyYXkgb3IgYSBEYXRhVmlldyIpfX0sMTc0ODA6ZnVuY3Rp''@;'; put 'put ''b24oV2UsemUsVCl7IWZ1bmN0aW9uKHNlLGspeyJ1c2Ugc3RyaWN0Ijt2YXIgdjt0cnl7dj1UKDE2Njc2KX1jYXRjaHt9V2UuZXhwb3J0cz1mdW5jdGlvbihzZSl7dmFyIGs9ImZ1bmN0aW9uIj09dHlwZW9mIHNlLHY9ISF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcixoZT13aW5kb3cuZG9jdW1l''@;'; put 'put ''bnQsSD13aW5kb3cuc2V0VGltZW91dCxCPWZ1bmN0aW9uKEMsTSx5LHApe3Y/Qy5hZGRFdmVudExpc3RlbmVyKE0seSwhIXApOkMuYXR0YWNoRXZlbnQoIm9uIitNLHkpfSxMPWZ1bmN0aW9uKEMsTSx5LHApe3Y/Qy5yZW1vdmVFdmVudExpc3RlbmVyKE0seSwhIXApOkMuZGV0YWNoRXZlbnQo''@;'; put 'put ''Im9uIitNLHkpfSxKPWZ1bmN0aW9uKEMsTSl7cmV0dXJuLTEhPT0oIiAiK0MuY2xhc3NOYW1lKyIgIikuaW5kZXhPZigiICIrTSsiICIpfSxJPWZ1bmN0aW9uKEMsTSl7SihDLE0pfHwoQy5jbGFzc05hbWU9IiI9PT1DLmNsYXNzTmFtZT9NOkMuY2xhc3NOYW1lKyIgIitNKX0sUj1mdW5jdGlv''@;'; put 'put ''bihDLE0pe0MuY2xhc3NOYW1lPWZ1bmN0aW9uKEMpe3JldHVybiBDLnRyaW0/Qy50cmltKCk6Qy5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KCgiICIrQy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKCIgIitNKyIgIiwiICIpKX0sRT1mdW5jdGlvbihDKXtyZXR1cm4vQXJyYXkvLnRlc3QoT2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEMpKX0sej1mdW5jdGlvbihDKXtyZXR1cm4vRGF0ZS8udGVzdChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQykpJiYhaXNOYU4oQy5nZXRUaW1lKCkpfSxqPWZ1bmN0aW9uKEMpe3ZhciBNPUMuZ2V0RGF5KCk7cmV0dXJuIDA9PT1N''@;'; put 'put ''fHw2PT09TX0sVj1mdW5jdGlvbihDKXtyZXR1cm4gQyU0PT0wJiZDJTEwMCE9MHx8QyU0MDA9PTB9LEc9ZnVuY3Rpb24oQyxNKXtyZXR1cm5bMzEsVihDKT8yOToyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV1bTV19LFc9ZnVuY3Rpb24oQyl7eihDKSYmQy5zZXRIb3VycygwLDAs''@;'; put 'put ''MCwwKX0sVT1mdW5jdGlvbihDLE0pe3JldHVybiBDLmdldFRpbWUoKT09PU0uZ2V0VGltZSgpfSxxPWZ1bmN0aW9uKEMsTSx5KXt2YXIgcCxTO2ZvcihwIGluIE0pKFM9dm9pZCAwIT09Q1twXSkmJiJvYmplY3QiPT10eXBlb2YgTVtwXSYmbnVsbCE9PU1bcF0mJnZvaWQgMD09PU1bcF0ubm9k''@;'; put 'put ''ZU5hbWU/eihNW3BdKT95JiYoQ1twXT1uZXcgRGF0ZShNW3BdLmdldFRpbWUoKSkpOkUoTVtwXSk/eSYmKENbcF09TVtwXS5zbGljZSgwKSk6Q1twXT1xKHt9LE1bcF0seSk6KHl8fCFTKSYmKENbcF09TVtwXSk7cmV0dXJuIEN9LHRlPWZ1bmN0aW9uKEMsTSx5KXt2YXIgcDtoZS5jcmVhdGVF''@;'; put 'put ''dmVudD8oKHA9aGUuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKSkuaW5pdEV2ZW50KE0sITAsITEpLHA9cShwLHkpLEMuZGlzcGF0Y2hFdmVudChwKSk6aGUuY3JlYXRlRXZlbnRPYmplY3QmJihwPWhlLmNyZWF0ZUV2ZW50T2JqZWN0KCkscD1xKHAseSksQy5maXJlRXZlbnQoIm9uIitNLHAp''@;'; put 'put ''KX0sbmU9ZnVuY3Rpb24oQyl7cmV0dXJuIEMubW9udGg8MCYmKEMueWVhci09TWF0aC5jZWlsKE1hdGguYWJzKEMubW9udGgpLzEyKSxDLm1vbnRoKz0xMiksQy5tb250aD4xMSYmKEMueWVhcis9TWF0aC5mbG9vcihNYXRoLmFicyhDLm1vbnRoKS8xMiksQy5tb250aC09MTIpLEN9LGllPXtm''@;'; put 'put ''aWVsZDpudWxsLGJvdW5kOnZvaWQgMCxhcmlhTGFiZWw6IlVzZSB0aGUgYXJyb3cga2V5cyB0byBwaWNrIGEgZGF0ZSIscG9zaXRpb246ImJvdHRvbSBsZWZ0IixyZXBvc2l0aW9uOiEwLGZvcm1hdDoiWVlZWS1NTS1ERCIsdG9TdHJpbmc6bnVsbCxwYXJzZTpudWxsLGRlZmF1bHREYXRlOm51''@;'; put 'put ''bGwsc2V0RGVmYXVsdERhdGU6ITEsZmlyc3REYXk6MCxmaXJzdFdlZWtPZlllYXJNaW5EYXlzOjQsZm9ybWF0U3RyaWN0OiExLG1pbkRhdGU6bnVsbCxtYXhEYXRlOm51bGwseWVhclJhbmdlOjEwLHNob3dXZWVrTnVtYmVyOiExLHBpY2tXaG9sZVdlZWs6ITEsbWluWWVhcjowLG1heFllYXI6''@;'; put 'put ''OTk5OSxtaW5Nb250aDp2b2lkIDAsbWF4TW9udGg6dm9pZCAwLHN0YXJ0UmFuZ2U6bnVsbCxlbmRSYW5nZTpudWxsLGlzUlRMOiExLHllYXJTdWZmaXg6IiIsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6ITEsZW5hYmxlU2VsZWN0aW9uRGF5''@;'; put 'put ''c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOiExLG51bWJlck9mTW9udGhzOjEsbWFpbkNhbGVuZGFyOiJsZWZ0Iixjb250YWluZXI6dm9pZCAwLGJsdXJGaWVsZE9uU2VsZWN0OiEwLGkxOG46e3ByZXZpb3VzTW9udGg6IlByZXZpb3VzIE1vbnRoIixuZXh0TW9udGg6Ik5leHQgTW9udGgiLG1v''@;'; put 'put ''bnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sd2Vla2RheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5''@;'; put 'put ''IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHdlZWtkYXlzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXX0sdGhlbWU6bnVsbCxldmVudHM6W10sb25TZWxlY3Q6bnVsbCxvbk9wZW46bnVsbCxvbkNsb3NlOm51bGwsb25EcmF3Om51bGws''@;'; put 'put ''a2V5Ym9hcmRJbnB1dDohMH0sbGU9ZnVuY3Rpb24oQyxNLHkpe2ZvcihNKz1DLmZpcnN0RGF5O00+PTc7KU0tPTc7cmV0dXJuIHk/Qy5pMThuLndlZWtkYXlzU2hvcnRbTV06Qy5pMThuLndlZWtkYXlzW01dfSxkZT1mdW5jdGlvbihDKXt2YXIgTT1bXSx5PSJmYWxzZSI7aWYoQy5pc0VtcHR5''@;'; put 'put ''KXtpZighQy5zaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzKXJldHVybic8dGQgY2xhc3M9ImlzLWVtcHR5Ij48L3RkPic7TS5wdXNoKCJpcy1vdXRzaWRlLWN1cnJlbnQtbW9udGgiKSxDLmVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoc3x8TS5wdXNoKCJp''@;'; put 'put ''cy1zZWxlY3Rpb24tZGlzYWJsZWQiKX1yZXR1cm4gQy5pc0Rpc2FibGVkJiZNLnB1c2goImlzLWRpc2FibGVkIiksQy5pc1RvZGF5JiZNLnB1c2goImlzLXRvZGF5IiksQy5pc1NlbGVjdGVkJiYoTS5wdXNoKCJpcy1zZWxlY3RlZCIpLHk9InRydWUiKSxDLmhhc0V2ZW50JiZNLnB1c2goImhh''@;'; put 'put ''cy1ldmVudCIpLEMuaXNJblJhbmdlJiZNLnB1c2goImlzLWlucmFuZ2UiKSxDLmlzU3RhcnRSYW5nZSYmTS5wdXNoKCJpcy1zdGFydHJhbmdlIiksQy5pc0VuZFJhbmdlJiZNLnB1c2goImlzLWVuZHJhbmdlIiksJzx0ZCBkYXRhLWRheT0iJytDLmRheSsnIiBjbGFzcz0iJytNLmpvaW4oIiAi''@;'; put 'put ''KSsnIiBhcmlhLXNlbGVjdGVkPSInK3krJyI+PGJ1dHRvbiBjbGFzcz0icGlrYS1idXR0b24gcGlrYS1kYXkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1waWthLXllYXI9IicrQy55ZWFyKyciIGRhdGEtcGlrYS1tb250aD0iJytDLm1vbnRoKyciIGRhdGEtcGlrYS1kYXk9IicrQy5kYXkrJyI+JytD''@;'; put 'put ''LmRheSsiPC9idXR0b24+PC90ZD4ifSxjZT1mdW5jdGlvbihDLE0seSxwKXt2YXIgUz1uZXcgRGF0ZSh5LE0sQyk7cmV0dXJuJzx0ZCBjbGFzcz0icGlrYS13ZWVrIj4nKyhrP3NlKFMpLmlzb1dlZWsoKTpmdW5jdGlvbihDLE0pe0Muc2V0SG91cnMoMCwwLDAsMCk7dmFyIHk9Qy5nZXREYXRl''@;'; put 'put ''KCkscD1DLmdldERheSgpLFM9TSxRPVMtMSxmZT1mdW5jdGlvbihGZSl7cmV0dXJuKEZlKzctMSklN307Qy5zZXREYXRlKHkrUS1mZShwKSk7dmFyIG1lPW5ldyBEYXRlKEMuZ2V0RnVsbFllYXIoKSwwLFMpLFRlPShDLmdldFRpbWUoKS1tZS5nZXRUaW1lKCkpLzg2NGU1O3JldHVybiAxK01h''@;'; put 'put ''dGgucm91bmQoKFRlLVErZmUobWUuZ2V0RGF5KCkpKS83KX0oUyxwKSkrIjwvdGQ+In0sWT1mdW5jdGlvbihDLE0seSxwKXtyZXR1cm4nPHRyIGNsYXNzPSJwaWthLXJvdycrKHk/IiBwaWNrLXdob2xlLXdlZWsiOiIiKSsocD8iIGlzLXNlbGVjdGVkIjoiIikrJyI+JysoTT9DLnJldmVyc2Uo''@;'; put 'put ''KTpDKS5qb2luKCIiKSsiPC90cj4ifSxOPWZ1bmN0aW9uKEMsTSx5LHAsUyxRKXt2YXIgcmUsZmUsbWUsTmUsTGUsa2U9Qy5fbyxUZT15PT09a2UubWluWWVhcixQZT15PT09a2UubWF4WWVhcixGZT0nPGRpdiBpZD0iJytRKyciIGNsYXNzPSJwaWthLXRpdGxlIiByb2xlPSJoZWFkaW5nIiBh''@;'; put 'put ''cmlhLWxpdmU9ImFzc2VydGl2ZSI+JyxCZT0hMCxIZT0hMDtmb3IobWU9W10scmU9MDtyZTwxMjtyZSsrKW1lLnB1c2goJzxvcHRpb24gdmFsdWU9IicrKHk9PT1TP3JlLU06MTIrcmUtTSkrJyInKyhyZT09PXA/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrKFRlJiZyZTxrZS5taW5Nb250''@;'; put 'put ''aHx8UGUmJnJlPmtlLm1heE1vbnRoPycgZGlzYWJsZWQ9ImRpc2FibGVkIic6IiIpKyI+IitrZS5pMThuLm1vbnRoc1tyZV0rIjwvb3B0aW9uPiIpO2ZvcihOZT0nPGRpdiBjbGFzcz0icGlrYS1sYWJlbCI+JytrZS5pMThuLm1vbnRoc1twXSsnPHNlbGVjdCBjbGFzcz0icGlrYS1zZWxlY3Qg''@;'; put 'put ''cGlrYS1zZWxlY3QtbW9udGgiIHRhYmluZGV4PSItMSI+JyttZS5qb2luKCIiKSsiPC9zZWxlY3Q+PC9kaXY+IixFKGtlLnllYXJSYW5nZSk/KHJlPWtlLnllYXJSYW5nZVswXSxmZT1rZS55ZWFyUmFuZ2VbMV0rMSk6KHJlPXkta2UueWVhclJhbmdlLGZlPTEreStrZS55ZWFyUmFuZ2UpLG1l''@;'; put 'put ''PVtdO3JlPGZlJiZyZTw9a2UubWF4WWVhcjtyZSsrKXJlPj1rZS5taW5ZZWFyJiZtZS5wdXNoKCc8b3B0aW9uIHZhbHVlPSInK3JlKyciJysocmU9PT15Pycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKyI+IityZSsiPC9vcHRpb24+Iik7cmV0dXJuIExlPSc8ZGl2IGNsYXNzPSJwaWthLWxh''@;'; put 'put ''YmVsIj4nK3kra2UueWVhclN1ZmZpeCsnPHNlbGVjdCBjbGFzcz0icGlrYS1zZWxlY3QgcGlrYS1zZWxlY3QteWVhciIgdGFiaW5kZXg9Ii0xIj4nK21lLmpvaW4oIiIpKyI8L3NlbGVjdD48L2Rpdj4iLEZlKz1rZS5zaG93TW9udGhBZnRlclllYXI/TGUrTmU6TmUrTGUsVGUmJigwPT09cHx8''@;'; put 'put ''a2UubWluTW9udGg+PXApJiYoQmU9ITEpLFBlJiYoMTE9PT1wfHxrZS5tYXhNb250aDw9cCkmJihIZT0hMSksMD09PU0mJihGZSs9JzxidXR0b24gY2xhc3M9InBpa2EtcHJldicrKEJlPyIiOiIgaXMtZGlzYWJsZWQiKSsnIiB0eXBlPSJidXR0b24iPicra2UuaTE4bi5wcmV2aW91c01vbnRo''@;'; put 'put ''KyI8L2J1dHRvbj4iKSxNPT09Qy5fby5udW1iZXJPZk1vbnRocy0xJiYoRmUrPSc8YnV0dG9uIGNsYXNzPSJwaWthLW5leHQnKyhIZT8iIjoiIGlzLWRpc2FibGVkIikrJyIgdHlwZT0iYnV0dG9uIj4nK2tlLmkxOG4ubmV4dE1vbnRoKyI8L2J1dHRvbj4iKSxGZSsiPC9kaXY+In0sRj1mdW5j''@;'; put 'put ''dGlvbihDLE0seSl7cmV0dXJuJzx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwaWthLXRhYmxlIiByb2xlPSJncmlkIiBhcmlhLWxhYmVsbGVkYnk9IicreSsnIj4nK2Z1bmN0aW9uKEMpe3ZhciBNLHk9W107Zm9yKEMuc2hvd1dlZWtOdW1iZXImJnkucHVz''@;'; put 'put ''aCgiPHRoPjwvdGg+IiksTT0wO008NztNKyspeS5wdXNoKCc8dGggc2NvcGU9ImNvbCI+PGFiYnIgdGl0bGU9IicrbGUoQyxNKSsnIj4nK2xlKEMsTSwhMCkrIjwvYWJicj48L3RoPiIpO3JldHVybiI8dGhlYWQ+PHRyPiIrKEMuaXNSVEw/eS5yZXZlcnNlKCk6eSkuam9pbigiIikrIjwvdHI+''@;'; put 'put ''PC90aGVhZD4ifShDKStmdW5jdGlvbihDKXtyZXR1cm4iPHRib2R5PiIrQy5qb2luKCIiKSsiPC90Ym9keT4ifShNKSsiPC90YWJsZT4ifSxnPWZ1bmN0aW9uKEMpe3ZhciBNPXRoaXMseT1NLmNvbmZpZyhDKTtNLl9vbk1vdXNlRG93bj1mdW5jdGlvbihTKXtpZihNLl92KXt2YXIgUT0oUz1T''@;'; put 'put ''fHx3aW5kb3cuZXZlbnQpLnRhcmdldHx8Uy5zcmNFbGVtZW50O2lmKFEpaWYoSihRLCJpcy1kaXNhYmxlZCIpfHwoIUooUSwicGlrYS1idXR0b24iKXx8SihRLCJpcy1lbXB0eSIpfHxKKFEucGFyZW50Tm9kZSwiaXMtZGlzYWJsZWQiKT9KKFEsInBpa2EtcHJldiIpP00ucHJldk1vbnRoKCk6''@;'; put 'put ''SihRLCJwaWthLW5leHQiKSYmTS5uZXh0TW9udGgoKTooTS5zZXREYXRlKG5ldyBEYXRlKFEuZ2V0QXR0cmlidXRlKCJkYXRhLXBpa2EteWVhciIpLFEuZ2V0QXR0cmlidXRlKCJkYXRhLXBpa2EtbW9udGgiKSxRLmdldEF0dHJpYnV0ZSgiZGF0YS1waWthLWRheSIpKSkseS5ib3VuZCYmSChm''@;'; put 'put ''dW5jdGlvbigpe00uaGlkZSgpLHkuYmx1ckZpZWxkT25TZWxlY3QmJnkuZmllbGQmJnkuZmllbGQuYmx1cigpfSwxMDApKSksSihRLCJwaWthLXNlbGVjdCIpKU0uX2M9ITA7ZWxzZXtpZighUy5wcmV2ZW50RGVmYXVsdClyZXR1cm4gUy5yZXR1cm5WYWx1ZT0hMSwhMTtTLnByZXZlbnREZWZh''@;'; put 'put ''dWx0KCl9fX0sTS5fb25DaGFuZ2U9ZnVuY3Rpb24oUyl7dmFyIFE9KFM9U3x8d2luZG93LmV2ZW50KS50YXJnZXR8fFMuc3JjRWxlbWVudDtRJiYoSihRLCJwaWthLXNlbGVjdC1tb250aCIpP00uZ290b01vbnRoKFEudmFsdWUpOkooUSwicGlrYS1zZWxlY3QteWVhciIpJiZNLmdvdG9ZZWFy''@;'; put 'put ''KFEudmFsdWUpKX0sTS5fb25LZXlDaGFuZ2U9ZnVuY3Rpb24oUyl7aWYoUz1TfHx3aW5kb3cuZXZlbnQsTS5pc1Zpc2libGUoKSlzd2l0Y2goUy5rZXlDb2RlKXtjYXNlIDEzOmNhc2UgMjc6eS5maWVsZCYmeS5maWVsZC5ibHVyKCk7YnJlYWs7Y2FzZSAzNzpNLmFkanVzdERhdGUoInN1YnRy''@;'; put 'put ''YWN0IiwxKTticmVhaztjYXNlIDM4Ok0uYWRqdXN0RGF0ZSgic3VidHJhY3QiLDcpO2JyZWFrO2Nhc2UgMzk6TS5hZGp1c3REYXRlKCJhZGQiLDEpO2JyZWFrO2Nhc2UgNDA6TS5hZGp1c3REYXRlKCJhZGQiLDcpO2JyZWFrO2Nhc2UgODpjYXNlIDQ2Ok0uc2V0RGF0ZShudWxsKX19LE0uX3Bh''@;'; put 'put ''cnNlRmllbGRWYWx1ZT1mdW5jdGlvbigpe2lmKHkucGFyc2UpcmV0dXJuIHkucGFyc2UoeS5maWVsZC52YWx1ZSx5LmZvcm1hdCk7aWYoayl7dmFyIFM9c2UoeS5maWVsZC52YWx1ZSx5LmZvcm1hdCx5LmZvcm1hdFN0cmljdCk7cmV0dXJuIFMmJlMuaXNWYWxpZCgpP1MudG9EYXRlKCk6bnVs''@;'; put 'put ''bH1yZXR1cm4gbmV3IERhdGUoRGF0ZS5wYXJzZSh5LmZpZWxkLnZhbHVlKSl9LE0uX29uSW5wdXRDaGFuZ2U9ZnVuY3Rpb24oUyl7dmFyIFE7Uy5maXJlZEJ5IT09TSYmKFE9TS5fcGFyc2VGaWVsZFZhbHVlKCkseihRKSYmTS5zZXREYXRlKFEpLE0uX3Z8fE0uc2hvdygpKX0sTS5fb25JbnB1''@;'; put 'put ''dEZvY3VzPWZ1bmN0aW9uKCl7TS5zaG93KCl9LE0uX29uSW5wdXRDbGljaz1mdW5jdGlvbigpe00uc2hvdygpfSxNLl9vbklucHV0Qmx1cj1mdW5jdGlvbigpe3ZhciBTPWhlLmFjdGl2ZUVsZW1lbnQ7ZG97aWYoSihTLCJwaWthLXNpbmdsZSIpKXJldHVybn13aGlsZShTPVMucGFyZW50Tm9k''@;'; put 'put ''ZSk7TS5fY3x8KE0uX2I9SChmdW5jdGlvbigpe00uaGlkZSgpfSw1MCkpLE0uX2M9ITF9LE0uX29uQ2xpY2s9ZnVuY3Rpb24oUyl7dmFyIFE9KFM9U3x8d2luZG93LmV2ZW50KS50YXJnZXR8fFMuc3JjRWxlbWVudCxyZT1RO2lmKFEpeyF2JiZKKFEsInBpa2Etc2VsZWN0IikmJihRLm9uY2hh''@;'; put 'put ''bmdlfHwoUS5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwicmV0dXJuOyIpLEIoUSwiY2hhbmdlIixNLl9vbkNoYW5nZSkpKTtkb3tpZihKKHJlLCJwaWthLXNpbmdsZSIpfHxyZT09PXkudHJpZ2dlcilyZXR1cm59d2hpbGUocmU9cmUucGFyZW50Tm9kZSk7TS5fdiYmUSE9PXkudHJpZ2dlciYm''@;'; put 'put ''cmUhPT15LnRyaWdnZXImJk0uaGlkZSgpfX0sTS5lbD1oZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxNLmVsLmNsYXNzTmFtZT0icGlrYS1zaW5nbGUiKyh5LmlzUlRMPyIgaXMtcnRsIjoiIikrKHkudGhlbWU/IiAiK3kudGhlbWU6IiIpLEIoTS5lbCwibW91c2Vkb3duIixNLl9vbk1vdXNlRG93''@;'; put 'put ''biwhMCksQihNLmVsLCJ0b3VjaGVuZCIsTS5fb25Nb3VzZURvd24sITApLEIoTS5lbCwiY2hhbmdlIixNLl9vbkNoYW5nZSkseS5rZXlib2FyZElucHV0JiZCKGhlLCJrZXlkb3duIixNLl9vbktleUNoYW5nZSkseS5maWVsZCYmKHkuY29udGFpbmVyP3kuY29udGFpbmVyLmFwcGVuZENoaWxk''@;'; put 'put ''KE0uZWwpOnkuYm91bmQ/aGUuYm9keS5hcHBlbmRDaGlsZChNLmVsKTp5LmZpZWxkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKE0uZWwseS5maWVsZC5uZXh0U2libGluZyksQih5LmZpZWxkLCJjaGFuZ2UiLE0uX29uSW5wdXRDaGFuZ2UpLHkuZGVmYXVsdERhdGV8fCh5LmRlZmF1bHREYXRl''@;'; put 'put ''PU0uX3BhcnNlRmllbGRWYWx1ZSgpLHkuc2V0RGVmYXVsdERhdGU9ITApKTt2YXIgcD15LmRlZmF1bHREYXRlO3oocCk/eS5zZXREZWZhdWx0RGF0ZT9NLnNldERhdGUocCwhMCk6TS5nb3RvRGF0ZShwKTpNLmdvdG9EYXRlKG5ldyBEYXRlKSx5LmJvdW5kPyh0aGlzLmhpZGUoKSxNLmVsLmNs''@;'; put 'put ''YXNzTmFtZSs9IiBpcy1ib3VuZCIsQih5LnRyaWdnZXIsImNsaWNrIixNLl9vbklucHV0Q2xpY2spLEIoeS50cmlnZ2VyLCJmb2N1cyIsTS5fb25JbnB1dEZvY3VzKSxCKHkudHJpZ2dlciwiYmx1ciIsTS5fb25JbnB1dEJsdXIpKTp0aGlzLnNob3coKX07cmV0dXJuIGcucHJvdG90eXBlPXtj''@;'; put 'put ''b25maWc6ZnVuY3Rpb24oQyl7dGhpcy5fb3x8KHRoaXMuX289cSh7fSxpZSwhMCkpO3ZhciBNPXEodGhpcy5fbyxDLCEwKTtNLmlzUlRMPSEhTS5pc1JUTCxNLmZpZWxkPU0uZmllbGQmJk0uZmllbGQubm9kZU5hbWU/TS5maWVsZDpudWxsLE0udGhlbWU9InN0cmluZyI9PXR5cGVvZiBNLnRo''@;'; put 'put ''ZW1lJiZNLnRoZW1lP00udGhlbWU6bnVsbCxNLmJvdW5kPSEhKHZvaWQgMCE9PU0uYm91bmQ/TS5maWVsZCYmTS5ib3VuZDpNLmZpZWxkKSxNLnRyaWdnZXI9TS50cmlnZ2VyJiZNLnRyaWdnZXIubm9kZU5hbWU/TS50cmlnZ2VyOk0uZmllbGQsTS5kaXNhYmxlV2Vla2VuZHM9ISFNLmRpc2Fi''@;'; put 'put ''bGVXZWVrZW5kcyxNLmRpc2FibGVEYXlGbj0iZnVuY3Rpb24iPT10eXBlb2YgTS5kaXNhYmxlRGF5Rm4/TS5kaXNhYmxlRGF5Rm46bnVsbDt2YXIgeT1wYXJzZUludChNLm51bWJlck9mTW9udGhzLDEwKXx8MTtpZihNLm51bWJlck9mTW9udGhzPXk+ND80OnkseihNLm1pbkRhdGUpfHwoTS5t''@;'; put 'put ''aW5EYXRlPSExKSx6KE0ubWF4RGF0ZSl8fChNLm1heERhdGU9ITEpLE0ubWluRGF0ZSYmTS5tYXhEYXRlJiZNLm1heERhdGU8TS5taW5EYXRlJiYoTS5tYXhEYXRlPU0ubWluRGF0ZT0hMSksTS5taW5EYXRlJiZ0aGlzLnNldE1pbkRhdGUoTS5taW5EYXRlKSxNLm1heERhdGUmJnRoaXMuc2V0''@;'; put 'put ''TWF4RGF0ZShNLm1heERhdGUpLEUoTS55ZWFyUmFuZ2UpKXt2YXIgcD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktMTA7TS55ZWFyUmFuZ2VbMF09cGFyc2VJbnQoTS55ZWFyUmFuZ2VbMF0sMTApfHxwLE0ueWVhclJhbmdlWzFdPXBhcnNlSW50KE0ueWVhclJhbmdlWzFdLDEwKXx8cH1lbHNl''@;'; put 'put ''IE0ueWVhclJhbmdlPU1hdGguYWJzKHBhcnNlSW50KE0ueWVhclJhbmdlLDEwKSl8fGllLnllYXJSYW5nZSxNLnllYXJSYW5nZT4xMDAmJihNLnllYXJSYW5nZT0xMDApO3JldHVybiBNfSx0b1N0cmluZzpmdW5jdGlvbihDKXtyZXR1cm4gQz1DfHx0aGlzLl9vLmZvcm1hdCx6KHRoaXMuX2Qp''@;'; put 'put ''P3RoaXMuX28udG9TdHJpbmc/dGhpcy5fby50b1N0cmluZyh0aGlzLl9kLEMpOms/c2UodGhpcy5fZCkuZm9ybWF0KEMpOnRoaXMuX2QudG9EYXRlU3RyaW5nKCk6IiJ9LGdldE1vbWVudDpmdW5jdGlvbigpe3JldHVybiBrP3NlKHRoaXMuX2QpOm51bGx9LHNldE1vbWVudDpmdW5jdGlvbihD''@;'; put 'put ''LE0pe2smJnNlLmlzTW9tZW50KEMpJiZ0aGlzLnNldERhdGUoQy50b0RhdGUoKSxNKX0sZ2V0RGF0ZTpmdW5jdGlvbigpe3JldHVybiB6KHRoaXMuX2QpP25ldyBEYXRlKHRoaXMuX2QuZ2V0VGltZSgpKTpudWxsfSxzZXREYXRlOmZ1bmN0aW9uKEMsTSl7aWYoIUMpcmV0dXJuIHRoaXMuX2Q9''@;'; put 'put ''bnVsbCx0aGlzLl9vLmZpZWxkJiYodGhpcy5fby5maWVsZC52YWx1ZT0iIix0ZSh0aGlzLl9vLmZpZWxkLCJjaGFuZ2UiLHtmaXJlZEJ5OnRoaXN9KSksdGhpcy5kcmF3KCk7aWYoInN0cmluZyI9PXR5cGVvZiBDJiYoQz1uZXcgRGF0ZShEYXRlLnBhcnNlKEMpKSkseihDKSl7dmFyIHk9dGhp''@;'; put 'put ''cy5fby5taW5EYXRlLHA9dGhpcy5fby5tYXhEYXRlO3ooeSkmJkM8eT9DPXk6eihwKSYmQz5wJiYoQz1wKSx0aGlzLl9kPW5ldyBEYXRlKEMuZ2V0VGltZSgpKSxXKHRoaXMuX2QpLHRoaXMuZ290b0RhdGUodGhpcy5fZCksdGhpcy5fby5maWVsZCYmKHRoaXMuX28uZmllbGQudmFsdWU9dGhp''@;'; put 'put ''cy50b1N0cmluZygpLHRlKHRoaXMuX28uZmllbGQsImNoYW5nZSIse2ZpcmVkQnk6dGhpc30pKSwhTSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25TZWxlY3QmJnRoaXMuX28ub25TZWxlY3QuY2FsbCh0aGlzLHRoaXMuZ2V0RGF0ZSgpKX19LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5z''@;'; put 'put ''ZXREYXRlKG51bGwpfSxnb3RvRGF0ZTpmdW5jdGlvbihDKXt2YXIgTT0hMDtpZih6KEMpKXtpZih0aGlzLmNhbGVuZGFycyl7dmFyIHk9bmV3IERhdGUodGhpcy5jYWxlbmRhcnNbMF0ueWVhcix0aGlzLmNhbGVuZGFyc1swXS5tb250aCwxKSxwPW5ldyBEYXRlKHRoaXMuY2FsZW5kYXJzW3Ro''@;'; put 'put ''aXMuY2FsZW5kYXJzLmxlbmd0aC0xXS55ZWFyLHRoaXMuY2FsZW5kYXJzW3RoaXMuY2FsZW5kYXJzLmxlbmd0aC0xXS5tb250aCwxKSxTPUMuZ2V0VGltZSgpO3Auc2V0TW9udGgocC5nZXRNb250aCgpKzEpLHAuc2V0RGF0ZShwLmdldERhdGUoKS0xKSxNPVM8eS5nZXRUaW1lKCl8fHAuZ2V0''@;'; put 'put ''VGltZSgpPFN9TSYmKHRoaXMuY2FsZW5kYXJzPVt7bW9udGg6Qy5nZXRNb250aCgpLHllYXI6Qy5nZXRGdWxsWWVhcigpfV0sInJpZ2h0Ij09PXRoaXMuX28ubWFpbkNhbGVuZGFyJiYodGhpcy5jYWxlbmRhcnNbMF0ubW9udGgrPTEtdGhpcy5fby5udW1iZXJPZk1vbnRocykpLHRoaXMuYWRq''@;'; put 'put ''dXN0Q2FsZW5kYXJzKCl9fSxhZGp1c3REYXRlOmZ1bmN0aW9uKEMsTSl7dmFyIFMseT10aGlzLmdldERhdGUoKXx8bmV3IERhdGUscD0yNCpwYXJzZUludChNKSo2MCo2MCoxZTM7ImFkZCI9PT1DP1M9bmV3IERhdGUoeS52YWx1ZU9mKCkrcCk6InN1YnRyYWN0Ij09PUMmJihTPW5ldyBEYXRl''@;'; put 'put ''KHkudmFsdWVPZigpLXApKSx0aGlzLnNldERhdGUoUyl9LGFkanVzdENhbGVuZGFyczpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdPW5lKHRoaXMuY2FsZW5kYXJzWzBdKTtmb3IodmFyIEM9MTtDPHRoaXMuX28ubnVtYmVyT2ZNb250aHM7QysrKXRoaXMuY2FsZW5kYXJzW0NdPW5lKHtt''@;'; put 'put ''b250aDp0aGlzLmNhbGVuZGFyc1swXS5tb250aCtDLHllYXI6dGhpcy5jYWxlbmRhcnNbMF0ueWVhcn0pO3RoaXMuZHJhdygpfSxnb3RvVG9kYXk6ZnVuY3Rpb24oKXt0aGlzLmdvdG9EYXRlKG5ldyBEYXRlKX0sZ290b01vbnRoOmZ1bmN0aW9uKEMpe2lzTmFOKEMpfHwodGhpcy5jYWxlbmRh''@;'; put 'put ''cnNbMF0ubW9udGg9cGFyc2VJbnQoQywxMCksdGhpcy5hZGp1c3RDYWxlbmRhcnMoKSl9LG5leHRNb250aDpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdLm1vbnRoKyssdGhpcy5hZGp1c3RDYWxlbmRhcnMoKX0scHJldk1vbnRoOmZ1bmN0aW9uKCl7dGhpcy5jYWxlbmRhcnNbMF0ubW9u''@;'; put 'put ''dGgtLSx0aGlzLmFkanVzdENhbGVuZGFycygpfSxnb3RvWWVhcjpmdW5jdGlvbihDKXtpc05hTihDKXx8KHRoaXMuY2FsZW5kYXJzWzBdLnllYXI9cGFyc2VJbnQoQywxMCksdGhpcy5hZGp1c3RDYWxlbmRhcnMoKSl9LHNldE1pbkRhdGU6ZnVuY3Rpb24oQyl7QyBpbnN0YW5jZW9mIERhdGU/''@;'; put 'put ''KFcoQyksdGhpcy5fby5taW5EYXRlPUMsdGhpcy5fby5taW5ZZWFyPUMuZ2V0RnVsbFllYXIoKSx0aGlzLl9vLm1pbk1vbnRoPUMuZ2V0TW9udGgoKSk6KHRoaXMuX28ubWluRGF0ZT1pZS5taW5EYXRlLHRoaXMuX28ubWluWWVhcj1pZS5taW5ZZWFyLHRoaXMuX28ubWluTW9udGg9aWUubWlu''@;'; put 'put ''TW9udGgsdGhpcy5fby5zdGFydFJhbmdlPWllLnN0YXJ0UmFuZ2UpLHRoaXMuZHJhdygpfSxzZXRNYXhEYXRlOmZ1bmN0aW9uKEMpe0MgaW5zdGFuY2VvZiBEYXRlPyhXKEMpLHRoaXMuX28ubWF4RGF0ZT1DLHRoaXMuX28ubWF4WWVhcj1DLmdldEZ1bGxZZWFyKCksdGhpcy5fby5tYXhNb250''@;'; put 'put ''aD1DLmdldE1vbnRoKCkpOih0aGlzLl9vLm1heERhdGU9aWUubWF4RGF0ZSx0aGlzLl9vLm1heFllYXI9aWUubWF4WWVhcix0aGlzLl9vLm1heE1vbnRoPWllLm1heE1vbnRoLHRoaXMuX28uZW5kUmFuZ2U9aWUuZW5kUmFuZ2UpLHRoaXMuZHJhdygpfSxzZXRTdGFydFJhbmdlOmZ1bmN0aW9u''@;'; put 'put ''KEMpe3RoaXMuX28uc3RhcnRSYW5nZT1DfSxzZXRFbmRSYW5nZTpmdW5jdGlvbihDKXt0aGlzLl9vLmVuZFJhbmdlPUN9LGRyYXc6ZnVuY3Rpb24oQyl7aWYodGhpcy5fdnx8Qyl7dmFyIGZlLE09dGhpcy5fbyx5PU0ubWluWWVhcixwPU0ubWF4WWVhcixTPU0ubWluTW9udGgsUT1NLm1heE1v''@;'; put 'put ''bnRoLHJlPSIiO3RoaXMuX3k8PXkmJih0aGlzLl95PXksIWlzTmFOKFMpJiZ0aGlzLl9tPFMmJih0aGlzLl9tPVMpKSx0aGlzLl95Pj1wJiYodGhpcy5feT1wLCFpc05hTihRKSYmdGhpcy5fbT5RJiYodGhpcy5fbT1RKSk7Zm9yKHZhciBtZT0wO21lPE0ubnVtYmVyT2ZNb250aHM7bWUrKylm''@;'; put 'put ''ZT0icGlrYS10aXRsZS0iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16XSsvZywiIikuc3Vic3RyKDAsMikscmUrPSc8ZGl2IGNsYXNzPSJwaWthLWxlbmRhciI+JytOKHRoaXMsbWUsdGhpcy5jYWxlbmRhcnNbbWVdLnllYXIsdGhpcy5jYWxlbmRhcnNbbWVdLm1v''@;'; put 'put ''bnRoLHRoaXMuY2FsZW5kYXJzWzBdLnllYXIsZmUpK3RoaXMucmVuZGVyKHRoaXMuY2FsZW5kYXJzW21lXS55ZWFyLHRoaXMuY2FsZW5kYXJzW21lXS5tb250aCxmZSkrIjwvZGl2PiI7dGhpcy5lbC5pbm5lckhUTUw9cmUsTS5ib3VuZCYmImhpZGRlbiIhPT1NLmZpZWxkLnR5cGUmJkgoZnVu''@;'; put 'put ''Y3Rpb24oKXtNLnRyaWdnZXIuZm9jdXMoKX0sMSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25EcmF3JiZ0aGlzLl9vLm9uRHJhdyh0aGlzKSxNLmJvdW5kJiZNLmZpZWxkLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsTS5hcmlhTGFiZWwpfX0sYWRqdXN0UG9zaXRpb246ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgQyxNLHkscCxTLFEscmUsZmUsbWUsa2UsVGUsUGU7aWYoIXRoaXMuX28uY29udGFpbmVyKXtpZih0aGlzLmVsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsTT1DPXRoaXMuX28udHJpZ2dlcix5PXRoaXMuZWwub2Zmc2V0V2lkdGgscD10aGlzLmVsLm9mZnNldEhlaWdodCxT''@;'; put 'put ''PXdpbmRvdy5pbm5lcldpZHRofHxoZS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsUT13aW5kb3cuaW5uZXJIZWlnaHR8fGhlLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQscmU9d2luZG93LnBhZ2VZT2Zmc2V0fHxoZS5ib2R5LnNjcm9sbFRvcHx8aGUuZG9jdW1lbnRFbGVtZW50''@;'; put 'put ''LnNjcm9sbFRvcCxUZT0hMCxQZT0hMCwiZnVuY3Rpb24iPT10eXBlb2YgQy5nZXRCb3VuZGluZ0NsaWVudFJlY3QpZmU9KGtlPUMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLmxlZnQrd2luZG93LnBhZ2VYT2Zmc2V0LG1lPWtlLmJvdHRvbSt3aW5kb3cucGFnZVlPZmZzZXQ7ZWxzZSBmb3Io''@;'; put 'put ''ZmU9TS5vZmZzZXRMZWZ0LG1lPU0ub2Zmc2V0VG9wK00ub2Zmc2V0SGVpZ2h0O009TS5vZmZzZXRQYXJlbnQ7KWZlKz1NLm9mZnNldExlZnQsbWUrPU0ub2Zmc2V0VG9wOyh0aGlzLl9vLnJlcG9zaXRpb24mJmZlK3k+U3x8dGhpcy5fby5wb3NpdGlvbi5pbmRleE9mKCJyaWdodCIpPi0xJiZm''@;'; put 'put ''ZS15K0Mub2Zmc2V0V2lkdGg+MCkmJihmZT1mZS15K0Mub2Zmc2V0V2lkdGgsVGU9ITEpLCh0aGlzLl9vLnJlcG9zaXRpb24mJm1lK3A+UStyZXx8dGhpcy5fby5wb3NpdGlvbi5pbmRleE9mKCJ0b3AiKT4tMSYmbWUtcC1DLm9mZnNldEhlaWdodD4wKSYmKG1lPW1lLXAtQy5vZmZzZXRIZWln''@;'; put 'put ''aHQsUGU9ITEpLHRoaXMuZWwuc3R5bGUubGVmdD1mZSsicHgiLHRoaXMuZWwuc3R5bGUudG9wPW1lKyJweCIsSSh0aGlzLmVsLFRlPyJsZWZ0LWFsaWduZWQiOiJyaWdodC1hbGlnbmVkIiksSSh0aGlzLmVsLFBlPyJib3R0b20tYWxpZ25lZCI6InRvcC1hbGlnbmVkIiksUih0aGlzLmVsLFRl''@;'; put 'put ''PyJyaWdodC1hbGlnbmVkIjoibGVmdC1hbGlnbmVkIiksUih0aGlzLmVsLFBlPyJ0b3AtYWxpZ25lZCI6ImJvdHRvbS1hbGlnbmVkIil9fSxyZW5kZXI6ZnVuY3Rpb24oQyxNLHkpe3ZhciBwPXRoaXMuX28sUz1uZXcgRGF0ZSxRPUcoQyxNKSxyZT1uZXcgRGF0ZShDLE0sMSkuZ2V0RGF5KCks''@;'; put 'put ''ZmU9W10sbWU9W107VyhTKSxwLmZpcnN0RGF5PjAmJihyZS09cC5maXJzdERheSk8MCYmKHJlKz03KTtmb3IodmFyIGtlPTA9PT1NPzExOk0tMSxUZT0xMT09PU0/MDpNKzEsUGU9MD09PU0/Qy0xOkMsRmU9MTE9PT1NP0MrMTpDLE5lPUcoUGUsa2UpLExlPVErcmUsQmU9TGU7QmU+NzspQmUt''@;'; put 'put ''PTc7TGUrPTctQmU7Zm9yKHZhciBIZT0hMSxRZT0wLG10PTA7UWU8TGU7UWUrKyl7dmFyIEtlPW5ldyBEYXRlKEMsTSxRZS1yZSsxKSx3ZT0hIXoodGhpcy5fZCkmJlUoS2UsdGhpcy5fZCksSWU9VShLZSxTKSxPZT0tMSE9PXAuZXZlbnRzLmluZGV4T2YoS2UudG9EYXRlU3RyaW5nKCkpLGV0''@;'; put 'put ''PVFlPHJlfHxRZT49UStyZSxudD1RZS1yZSsxLHFlPU0saHQ9QyxFZT1wLnN0YXJ0UmFuZ2UmJlUocC5zdGFydFJhbmdlLEtlKSxEZT1wLmVuZFJhbmdlJiZVKHAuZW5kUmFuZ2UsS2UpLCRlPXAuc3RhcnRSYW5nZSYmcC5lbmRSYW5nZSYmcC5zdGFydFJhbmdlPEtlJiZLZTxwLmVuZFJhbmdl''@;'; put 'put ''LGF0PXAubWluRGF0ZSYmS2U8cC5taW5EYXRlfHxwLm1heERhdGUmJktlPnAubWF4RGF0ZXx8cC5kaXNhYmxlV2Vla2VuZHMmJmooS2UpfHxwLmRpc2FibGVEYXlGbiYmcC5kaXNhYmxlRGF5Rm4oS2UpO2V0JiYoUWU8cmU/KG50PU5lK250LHFlPWtlLGh0PVBlKToobnQtPVEscWU9VGUsaHQ9''@;'; put 'put ''RmUpKSxwLnBpY2tXaG9sZVdlZWsmJndlJiYoSGU9ITApLG1lLnB1c2goZGUoe2RheTpudCxtb250aDpxZSx5ZWFyOmh0LGhhc0V2ZW50Ok9lLGlzU2VsZWN0ZWQ6d2UsaXNUb2RheTpJZSxpc0Rpc2FibGVkOmF0LGlzRW1wdHk6ZXQsaXNTdGFydFJhbmdlOkVlLGlzRW5kUmFuZ2U6RGUsaXNJ''@;'; put 'put ''blJhbmdlOiRlLHNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6cC5zaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzLGVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoczpwLmVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoc30p''@;'; put 'put ''KSw3PT0rK210JiYocC5zaG93V2Vla051bWJlciYmbWUudW5zaGlmdChjZShRZS1yZSxNLEMscC5maXJzdFdlZWtPZlllYXJNaW5EYXlzKSksZmUucHVzaChZKG1lLHAuaXNSVEwscC5waWNrV2hvbGVXZWVrLEhlKSksbWU9W10sbXQ9MCxIZT0hMSl9cmV0dXJuIEYocCxmZSx5KX0saXNWaXNp''@;'; put 'put ''YmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Z9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmlzVmlzaWJsZSgpfHwodGhpcy5fdj0hMCx0aGlzLmRyYXcoKSxSKHRoaXMuZWwsImlzLWhpZGRlbiIpLHRoaXMuX28uYm91bmQmJihCKGhlLCJjbGljayIsdGhpcy5fb25DbGljayksdGhpcy5hZGp1''@;'; put 'put ''c3RQb3NpdGlvbigpKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fby5vbk9wZW4mJnRoaXMuX28ub25PcGVuLmNhbGwodGhpcykpfSxoaWRlOmZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5fdjshMSE9PUMmJih0aGlzLl9vLmJvdW5kJiZMKGhlLCJjbGljayIsdGhpcy5fb25DbGljayksdGhpcy5f''@;'; put 'put ''by5jb250YWluZXJ8fCh0aGlzLmVsLnN0eWxlLnBvc2l0aW9uPSJzdGF0aWMiLHRoaXMuZWwuc3R5bGUubGVmdD0iYXV0byIsdGhpcy5lbC5zdHlsZS50b3A9ImF1dG8iKSxJKHRoaXMuZWwsImlzLWhpZGRlbiIpLHRoaXMuX3Y9ITEsdm9pZCAwIT09QyYmImZ1bmN0aW9uIj09dHlwZW9mIHRo''@;'; put 'put ''aXMuX28ub25DbG9zZSYmdGhpcy5fby5vbkNsb3NlLmNhbGwodGhpcykpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5fbzt0aGlzLmhpZGUoKSxMKHRoaXMuZWwsIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd24sITApLEwodGhpcy5lbCwidG91Y2hlbmQiLHRoaXMuX29uTW91''@;'; put 'put ''c2VEb3duLCEwKSxMKHRoaXMuZWwsImNoYW5nZSIsdGhpcy5fb25DaGFuZ2UpLEMua2V5Ym9hcmRJbnB1dCYmTChoZSwia2V5ZG93biIsdGhpcy5fb25LZXlDaGFuZ2UpLEMuZmllbGQmJihMKEMuZmllbGQsImNoYW5nZSIsdGhpcy5fb25JbnB1dENoYW5nZSksQy5ib3VuZCYmKEwoQy50cmln''@;'; put 'put ''Z2VyLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrKSxMKEMudHJpZ2dlciwiZm9jdXMiLHRoaXMuX29uSW5wdXRGb2N1cyksTChDLnRyaWdnZXIsImJsdXIiLHRoaXMuX29uSW5wdXRCbHVyKSkpLHRoaXMuZWwucGFyZW50Tm9kZSYmdGhpcy5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRo''@;'; put 'put ''aXMuZWwpfX0sZ30odil9KCl9LDI3MDUwOihXZSx6ZSxUKT0+e3plLnB1YmxpY0VuY3J5cHQ9VCg0NTczNyksemUucHJpdmF0ZURlY3J5cHQ9VCg4NTI1MiksemUucHJpdmF0ZUVuY3J5cHQ9ZnVuY3Rpb24oayx2KXtyZXR1cm4gemUucHVibGljRW5jcnlwdChrLHYsITApfSx6ZS5wdWJsaWNE''@;'; put 'put ''ZWNyeXB0PWZ1bmN0aW9uKGssdil7cmV0dXJuIHplLnByaXZhdGVEZWNyeXB0KGssdiwhMCl9fSwxNjUxNzooV2UsemUsVCk9Pnt2YXIgc2U9VCg5NjM2Miksaz1UKDg0MykuQnVmZmVyO2Z1bmN0aW9uIHYoaGUpe3ZhciBIPWsuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIEgud3JpdGVVSW50MzJC''@;'; put 'put ''RShoZSwwKSxIfVdlLmV4cG9ydHM9ZnVuY3Rpb24oaGUsSCl7Zm9yKHZhciBLLEI9ay5hbGxvYygwKSxMPTA7Qi5sZW5ndGg8SDspSz12KEwrKyksQj1rLmNvbmNhdChbQixzZSgic2hhMSIpLnVwZGF0ZShoZSkudXBkYXRlKEspLmRpZ2VzdCgpXSk7cmV0dXJuIEIuc2xpY2UoMCxIKX19LDQ4''@;'; put 'put ''MjExOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSxrKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdihZLGIpe2lmKCFZKXRocm93IG5ldyBFcnJvcihifHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIGhlKFksYil7WS5zdXBlcl89Yjt2YXIgeD1mdW5jdGlvbigpe307eC5wcm90''@;'; put 'put ''b3R5cGU9Yi5wcm90b3R5cGUsWS5wcm90b3R5cGU9bmV3IHgsWS5wcm90b3R5cGUuY29uc3RydWN0b3I9WX1mdW5jdGlvbiBIKFksYix4KXtpZihILmlzQk4oWSkpcmV0dXJuIFk7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVs''@;'; put 'put ''bCE9PVkmJigoImxlIj09PWJ8fCJiZSI9PT1iKSYmKHg9YixiPTEwKSx0aGlzLl9pbml0KFl8fDAsYnx8MTAseHx8ImJlIikpfXZhciBCOyJvYmplY3QiPT10eXBlb2Ygc2U/c2UuZXhwb3J0cz1IOmsuQk49SCxILkJOPUgsSC53b3JkU2l6ZT0yNjt0cnl7Qj10eXBlb2Ygd2luZG93PCJ1IiYm''@;'; put 'put ''dHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6VCg3NzEwOCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBMKFksYil7dmFyIHg9WS5jaGFyQ29kZUF0KGIpO3JldHVybiB4Pj02NSYmeDw9NzA/eC01NTp4Pj05NyYmeDw9MTAyP3gtODc6eC00OCYxNX1mdW5jdGlvbiBLKFks''@;'; put 'put ''Yix4KXt2YXIgTj1MKFkseCk7cmV0dXJuIHgtMT49YiYmKE58PUwoWSx4LTEpPDw0KSxOfWZ1bmN0aW9uIEooWSxiLHgsTil7Zm9yKHZhciBGPTAsZz1NYXRoLm1pbihZLmxlbmd0aCx4KSxDPWI7QzxnO0MrKyl7dmFyIE09WS5jaGFyQ29kZUF0KEMpLTQ4O0YqPU4sRis9TT49NDk/TS00OSsx''@;'; put 'put ''MDpNPj0xNz9NLTE3KzEwOk19cmV0dXJuIEZ9SC5pc0JOPWZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgSHx8bnVsbCE9PWImJiJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUgud29yZFNpemUmJkFycmF5LmlzQXJyYXkoYi53b3Jkcyl9LEgubWF4''@;'; put 'put ''PWZ1bmN0aW9uKGIseCl7cmV0dXJuIGIuY21wKHgpPjA/Yjp4fSxILm1pbj1mdW5jdGlvbihiLHgpe3JldHVybiBiLmNtcCh4KTwwP2I6eH0sSC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oYix4LE4pe2lmKCJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihiLHgs''@;'; put 'put ''Tik7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXJldHVybiB0aGlzLl9pbml0QXJyYXkoYix4LE4pOyJoZXgiPT09eCYmKHg9MTYpLHYoeD09PSgwfHgpJiZ4Pj0yJiZ4PD0zNik7dmFyIEY9MDsiLSI9PT0oYj1iLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKEYrKyx0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTEpLEY8Yi5sZW5ndGgmJigxNj09PXg/dGhpcy5fcGFyc2VIZXgoYixGLE4pOih0aGlzLl9wYXJzZUJhc2UoYix4LEYpLCJsZSI9PT1OJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCkseCxOKSkpfSxILnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihiLHgsTil7''@;'; put 'put ''YjwwJiYodGhpcy5uZWdhdGl2ZT0xLGI9LWIpLGI8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmJdLHRoaXMubGVuZ3RoPTEpOmI8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToodihiPDkw''@;'; put 'put ''MDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09TiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHgsTil9LEgucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oYix4LE4pe2lm''@;'; put 'put ''KHYoIm51bWJlciI9PXR5cGVvZiBiLmxlbmd0aCksYi5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoYi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgRj0wO0Y8''@;'; put 'put ''dGhpcy5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09MDt2YXIgZyxDLE09MDtpZigiYmUiPT09Tilmb3IoRj1iLmxlbmd0aC0xLGc9MDtGPj0wO0YtPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltGXXxiW0YtMV08PDh8YltGLTJdPDwxNik8PE0mNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4y''@;'; put 'put ''Ni1NJjY3MTA4ODYzLChNKz0yNCk+PTI2JiYoTS09MjYsZysrKTtlbHNlIGlmKCJsZSI9PT1OKWZvcihGPTAsZz0wO0Y8Yi5sZW5ndGg7Ris9Myl0aGlzLndvcmRzW2ddfD0oQz1iW0ZdfGJbRisxXTw8OHxiW0YrMl08PDE2KTw8TSY2NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LU0m''@;'; put 'put ''NjcxMDg4NjMsKE0rPTI0KT49MjYmJihNLT0yNixnKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihiLHgsTil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChiLmxlbmd0aC14KS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7''@;'; put 'put ''Zm9yKHZhciBGPTA7Rjx0aGlzLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT0wO3ZhciBNLGc9MCxDPTA7aWYoImJlIj09PU4pZm9yKEY9Yi5sZW5ndGgtMTtGPj14O0YtPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0Mr''@;'; put 'put ''PTFdfD1NPj4+MjYpOmcrPTg7ZWxzZSBmb3IoRj0oYi5sZW5ndGgteCklMj09MD94KzE6eDtGPGIubGVuZ3RoO0YrPTIpTT1LKGIseCxGKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZNLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1NPj4+MjYpOmcrPTg7dGhpcy5zdHJpcCgp''@;'; put 'put ''fSxILnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGIseCxOKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgRj0wLGc9MTtnPD02NzEwODg2MztnKj14KUYrKztGLS0sZz1nL3h8MDtmb3IodmFyIEM9Yi5sZW5ndGgtTixNPUMlRix5PU1hdGgubWluKEMsQy1NKStO''@;'; put 'put ''LHA9MCxTPU47Uzx5O1MrPUYpcD1KKGIsUyxTK0YseCksdGhpcy5pbXVsbihnKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09TSl7dmFyIFE9MTtmb3IocD1KKGIsUyxiLmxlbmd0aCx4KSxTPTA7UzxNO1MrKylRKj14O3Ro''@;'; put 'put ''aXMuaW11bG4oUSksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGIpe2Iud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHg9MDt4PHRoaXMubGVu''@;'; put 'put ''Z3RoO3grKyliLndvcmRzW3hdPXRoaXMud29yZHNbeF07Yi5sZW5ndGg9dGhpcy5sZW5ndGgsYi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGIucmVkPXRoaXMucmVkfSxILnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyBIKG51bGwpO3JldHVybiB0aGlzLmNvcHkoYiksYn0s''@;'; put 'put ''SC5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGI7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sSC5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVu''@;'; put 'put ''Z3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxILnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sSC5wcm90b3R5cGUuaW5zcGVj''@;'; put 'put ''dD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgST1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAi''@;'; put 'put ''LCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxSPVswLDAsMjUsMTYs''@;'; put 'put ''MTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLEU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4''@;'; put 'put ''MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwz''@;'; put 'put ''MzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gaihZLGIseCl7eC5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlkubmVnYXRpdmU7dmFyIE49WS5sZW5ndGgrYi5sZW5ndGh8MDt4Lmxlbmd0aD1OLE49Ti0xfDA7dmFyIEY9MHxZLndvcmRzWzBdLGc9MHxi''@;'; put 'put ''LndvcmRzWzBdLEM9RipnLHk9Qy82NzEwODg2NHwwO3gud29yZHNbMF09NjcxMDg4NjMmQztmb3IodmFyIHA9MTtwPE47cCsrKXtmb3IodmFyIFM9eT4+PjI2LFE9NjcxMDg4NjMmeSxyZT1NYXRoLm1pbihwLGIubGVuZ3RoLTEpLGZlPU1hdGgubWF4KDAscC1ZLmxlbmd0aCsxKTtmZTw9cmU7''@;'; put 'put ''ZmUrKylTKz0oQz0oRj0wfFkud29yZHNbcC1mZXwwXSkqKGc9MHxiLndvcmRzW2ZlXSkrUSkvNjcxMDg4NjR8MCxRPTY3MTA4ODYzJkM7eC53b3Jkc1twXT0wfFEseT0wfFN9cmV0dXJuIDAhPT15P3gud29yZHNbcF09MHx5OngubGVuZ3RoLS0seC5zdHJpcCgpfUgucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nPWZ1bmN0aW9uKGIseCl7dmFyIE47aWYoeD0wfHh8fDEsMTY9PT0oYj1ifHwxMCl8fCJoZXgiPT09Yil7Tj0iIjtmb3IodmFyIEY9MCxnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT10aGlzLndvcmRzW0NdLHk9KDE2Nzc3MjE1JihNPDxGfGcpKS50b1N0cmluZygxNik7Tj0w''@;'; put 'put ''IT0oZz1NPj4+MjQtRiYxNjc3NzIxNSl8fEMhPT10aGlzLmxlbmd0aC0xP0lbNi15Lmxlbmd0aF0reStOOnkrTiwoRis9Mik+PTI2JiYoRi09MjYsQy0tKX1mb3IoMCE9PWcmJihOPWcudG9TdHJpbmcoMTYpK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlJiYoTj0iLSIrTiksTn1pZihiPT09KDB8YikmJmI+PTImJmI8PTM2KXt2YXIgcD1SW2JdLFM9RVtiXTtOPSIiO3ZhciBRPXRoaXMuY2xvbmUoKTtmb3IoUS5uZWdhdGl2ZT0wOyFRLmlzWmVybygpOyl7dmFyIHJlPVEubW9kbihTKS50b1N0cmluZyhiKTtOPShRPVEuaWRpdm4oUykpLmlz''@;'; put 'put ''WmVybygpP3JlK046SVtwLXJlLmxlbmd0aF0rcmUrTn1mb3IodGhpcy5pc1plcm8oKSYmKE49IjAiK04pO04ubGVuZ3RoJXghPTA7KU49IjAiK047cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoTj0iLSIrTiksTn12KCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LEgu''@;'; put 'put ''cHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2IrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9iKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRo''@;'; put 'put ''aXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmdighMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWI6Yn0sSC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxILnByb3Rv''@;'; put 'put ''dHlwZS50b0J1ZmZlcj1mdW5jdGlvbihiLHgpe3JldHVybiB2KHR5cGVvZiBCPCJ1IiksdGhpcy50b0FycmF5TGlrZShCLGIseCl9LEgucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxiLHgpfSxILnByb3RvdHlwZS50b0FycmF5''@;'; put 'put ''TGlrZT1mdW5jdGlvbihiLHgsTil7dmFyIEY9dGhpcy5ieXRlTGVuZ3RoKCksZz1OfHxNYXRoLm1heCgxLEYpO3YoRjw9ZywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLHYoZz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFy''@;'; put 'put ''IHkscCxDPSJsZSI9PT14LE09bmV3IGIoZyksUz10aGlzLmNsb25lKCk7aWYoQyl7Zm9yKHA9MDshUy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtwXT15O2Zvcig7cDxnO3ArKylNW3BdPTB9ZWxzZXtmb3IocD0wO3A8Zy1GO3ArKylNW3BdPTA7Zm9yKHA9MDsh''@;'; put 'put ''Uy5pc1plcm8oKTtwKyspeT1TLmFuZGxuKDI1NSksUy5pdXNocm4oOCksTVtnLXAtMV09eX1yZXR1cm4gTX0sSC5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGIpe3JldHVybiAzMi1NYXRoLmNsejMyKGIpfTpmdW5jdGlvbihiKXt2YXIgeD1iLE49MDtyZXR1cm4g''@;'; put 'put ''eD49NDA5NiYmKE4rPTEzLHg+Pj49MTMpLHg+PTY0JiYoTis9Nyx4Pj4+PTcpLHg+PTgmJihOKz00LHg+Pj49NCkseD49MiYmKE4rPTIseD4+Pj0yKSxOK3h9LEgucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihiKXtpZigwPT09YilyZXR1cm4gMjY7dmFyIHg9YixOPTA7cmV0dXJuIDgx''@;'; put 'put ''OTEmeHx8KE4rPTEzLHg+Pj49MTMpLDEyNyZ4fHwoTis9Nyx4Pj4+PTcpLDE1Jnh8fChOKz00LHg+Pj49NCksMyZ4fHwoTis9Mix4Pj4+PTIpLDEmeHx8TisrLE59LEgucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMu''@;'; put 'put ''bGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3h9LEgucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGI9MCx4PTA7eDx0aGlzLmxlbmd0aDt4Kyspe3ZhciBOPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNb''@;'; put 'put ''eF0pO2lmKGIrPU4sMjYhPT1OKWJyZWFrfXJldHVybiBifSxILnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxILnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3Ro''@;'; put 'put ''aXMuYWJzKCkuaW5vdG4oYikuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxILnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy50ZXN0bihiLTEpP3RoaXMubm90bihiKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxILnByb3RvdHlwZS5pc05lZz1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sSC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEgucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEgucHJv''@;'; put 'put ''dG90eXBlLml1b3I9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgeD0wO3g8Yi5sZW5ndGg7eCsrKXRoaXMud29yZHNbeF09dGhpcy53b3Jkc1t4XXxiLndvcmRzW3hdO3JldHVybiB0aGlzLnN0cmlwKCl9''@;'; put 'put ''LEgucHJvdG90eXBlLmlvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxILnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihiKTpiLmNsb25l''@;'; put 'put ''KCkuaW9yKHRoaXMpfSxILnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxILnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihiKXt2YXIgeDt4PXRoaXMubGVuZ3RoPmIu''@;'; put 'put ''bGVuZ3RoP2I6dGhpcztmb3IodmFyIE49MDtOPHgubGVuZ3RoO04rKyl0aGlzLndvcmRzW05dPXRoaXMud29yZHNbTl0mYi53b3Jkc1tOXTtyZXR1cm4gdGhpcy5sZW5ndGg9eC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB2KDA9PSh0''@;'; put 'put ''aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5kKGIpfSxILnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxILnByb3RvdHlwZS51YW5kPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxILnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgeCxOO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyh4PXRoaXMsTj1iKTooeD1iLE49dGhpcyk7Zm9y''@;'; put 'put ''KHZhciBGPTA7RjxOLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tGXT14LndvcmRzW0ZdXk4ud29yZHNbRl07aWYodGhpcyE9PXgpZm9yKDtGPHgubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXgud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPXgubGVuZ3RoLHRoaXMuc3RyaXAoKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdigwPT0odGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihiKX0sSC5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihiKTpiLmNsb25lKCku''@;'; put 'put ''aXhvcih0aGlzKX0sSC5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGIpOmIuY2xvbmUoKS5pdXhvcih0aGlzKX0sSC5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGIm''@;'; put 'put ''JmI+PTApO3ZhciB4PTB8TWF0aC5jZWlsKGIvMjYpLE49YiUyNjt0aGlzLl9leHBhbmQoeCksTj4wJiZ4LS07Zm9yKHZhciBGPTA7Rjx4O0YrKyl0aGlzLndvcmRzW0ZdPTY3MTA4ODYzJn50aGlzLndvcmRzW0ZdO3JldHVybiBOPjAmJih0aGlzLndvcmRzW0ZdPX50aGlzLndvcmRzW0ZdJjY3''@;'; put 'put ''MTA4ODYzPj4yNi1OKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihiKX0sSC5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihiLHgpe3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgTj1iLzI2fDAsRj1iJTI2''@;'; put 'put ''O3JldHVybiB0aGlzLl9leHBhbmQoTisxKSx0aGlzLndvcmRzW05dPXg/dGhpcy53b3Jkc1tOXXwxPDxGOnRoaXMud29yZHNbTl0mfigxPDxGKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYil7dmFyIHgsTixGO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5u''@;'; put 'put ''ZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHg9dGhpcy5pc3ViKGIpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIGIubmVnYXRpdmU9MCx4PXRoaXMuaXN1YihiKSxiLm5lZ2F0aXZlPTEs''@;'; put 'put ''eC5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oTj10aGlzLEY9Yik6KE49YixGPXRoaXMpO2Zvcih2YXIgZz0wLEM9MDtDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJih4PSgwfE4ud29yZHNbQ10pKygwfEYud29yZHNbQ10pK2cpLGc9eD4+PjI2O2Zvcig7''@;'; put 'put ''MCE9PWcmJkM8Ti5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKHg9KDB8Ti53b3Jkc1tDXSkrZyksZz14Pj4+MjY7aWYodGhpcy5sZW5ndGg9Ti5sZW5ndGgsMCE9PWcpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Zyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoTiE9PXRoaXMpZm9y''@;'; put 'put ''KDtDPE4ubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPU4ud29yZHNbQ107cmV0dXJuIHRoaXN9LEgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiKXt2YXIgeDtyZXR1cm4gMCE9PWIubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAseD10aGlzLnN1YihiKSxiLm5lZ2F0''@;'; put 'put ''aXZlXj0xLHgpOjA9PT1iLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHg9Yi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHgpOnRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGIpOmIuY2xvbmUoKS5pYWRkKHRoaXMpfSxILnByb3Rv''@;'; put 'put ''dHlwZS5pc3ViPWZ1bmN0aW9uKGIpe2lmKDAhPT1iLm5lZ2F0aXZlKXtiLm5lZ2F0aXZlPTA7dmFyIHg9dGhpcy5pYWRkKGIpO3JldHVybiBiLm5lZ2F0aXZlPTEseC5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChiKSx0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgRixnLE49dGhpcy5jbXAoYik7aWYoMD09PU4pcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO04+MD8oRj10aGlzLGc9Yik6KEY9YixnPXRoaXMpO2Zvcih2YXIgQz0wLE09''@;'; put 'put ''MDtNPGcubGVuZ3RoO00rKylDPSh4PSgwfEYud29yZHNbTV0pLSgwfGcud29yZHNbTV0pK0MpPj4yNix0aGlzLndvcmRzW01dPTY3MTA4ODYzJng7Zm9yKDswIT09QyYmTTxGLmxlbmd0aDtNKyspQz0oeD0oMHxGLndvcmRzW01dKStDKT4+MjYsdGhpcy53b3Jkc1tNXT02NzEwODg2MyZ4O2lm''@;'; put 'put ''KDA9PT1DJiZNPEYubGVuZ3RoJiZGIT09dGhpcylmb3IoO008Ri5sZW5ndGg7TSsrKXRoaXMud29yZHNbTV09Ri53b3Jkc1tNXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsTSksRiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuc3ViPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihiKX07dmFyIFY9ZnVuY3Rpb24oYix4LE4pe3ZhciB5LHAsUyxGPWIud29yZHMsZz14LndvcmRzLEM9Ti53b3JkcyxNPTAsUT0wfEZbMF0scmU9ODE5MSZRLGZlPVE+Pj4xMyxtZT0wfEZbMV0sa2U9ODE5MSZt''@;'; put 'put ''ZSxUZT1tZT4+PjEzLFBlPTB8RlsyXSxGZT04MTkxJlBlLE5lPVBlPj4+MTMsTGU9MHxGWzNdLEJlPTgxOTEmTGUsSGU9TGU+Pj4xMyxRZT0wfEZbNF0sbXQ9ODE5MSZRZSxLZT1RZT4+PjEzLHdlPTB8Rls1XSxJZT04MTkxJndlLE9lPXdlPj4+MTMsZXQ9MHxGWzZdLG50PTgxOTEmZXQscWU9''@;'; put 'put ''ZXQ+Pj4xMyxodD0wfEZbN10sRWU9ODE5MSZodCxEZT1odD4+PjEzLCRlPTB8Rls4XSxhdD04MTkxJiRlLGN0PSRlPj4+MTMsT3Q9MHxGWzldLFB0PTgxOTEmT3QsQXQ9T3Q+Pj4xMyxKdD0wfGdbMF0sbW49ODE5MSZKdCxOdD1KdD4+PjEzLGJuPTB8Z1sxXSxHbj04MTkxJmJuLG9uPWJuPj4+''@;'; put 'put ''MTMsJG49MHxnWzJdLE5uPTgxOTEmJG4scHQ9JG4+Pj4xMyxwbj0wfGdbM10saG49ODE5MSZwbixDdD1wbj4+PjEzLGVuPTB8Z1s0XSxfdD04MTkxJmVuLFZ0PWVuPj4+MTMsX249MHxnWzVdLG90PTgxOTEmX24sSXQ9X24+Pj4xMyxubj0wfGdbNl0sRHQ9ODE5MSZubix2dD1ubj4+PjEzLEd0''@;'; put 'put ''PTB8Z1s3XSxMbj04MTkxJkd0LHp0PUd0Pj4+MTMsTW49MHxnWzhdLFRuPTgxOTEmTW4sc249TW4+Pj4xMyxCbj0wfGdbOV0sRm49ODE5MSZCbixxdD1Cbj4+PjEzO04ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPTE5O3ZhciBIbj0oTSsoeT1NYXRoLmltdWwocmUs''@;'; put 'put ''bW4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKHJlLE50KSkrTWF0aC5pbXVsKGZlLG1uKXwwKSk8PDEzKXwwO009KChTPU1hdGguaW11bChmZSxOdCkpKyhwPj4+MTMpfDApKyhIbj4+PjI2KXwwLEhuJj02NzEwODg2Myx5PU1hdGguaW11bChrZSxtbikscD0ocD1NYXRoLmltdWwoa2Us''@;'; put 'put ''TnQpKStNYXRoLmltdWwoVGUsbW4pfDAsUz1NYXRoLmltdWwoVGUsTnQpO3ZhciBpaT0oTSsoeT15K01hdGguaW11bChyZSxHbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLG9uKXwwKStNYXRoLmltdWwoZmUsR24pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUs''@;'; put 'put ''b24pfDApKyhwPj4+MTMpfDApKyhpaT4+PjI2KXwwLGlpJj02NzEwODg2Myx5PU1hdGguaW11bChGZSxtbikscD0ocD1NYXRoLmltdWwoRmUsTnQpKStNYXRoLmltdWwoTmUsbW4pfDAsUz1NYXRoLmltdWwoTmUsTnQpLHk9eStNYXRoLmltdWwoa2UsR24pfDAscD0ocD1wK01hdGguaW11bChr''@;'; put 'put ''ZSxvbil8MCkrTWF0aC5pbXVsKFRlLEduKXwwLFM9UytNYXRoLmltdWwoVGUsb24pfDA7dmFyIGNuPShNKyh5PXkrTWF0aC5pbXVsKHJlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUscHQpfDApK01hdGguaW11bChmZSxObil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGgu''@;'; put 'put ''aW11bChmZSxwdCl8MCkrKHA+Pj4xMyl8MCkrKGNuPj4+MjYpfDAsY24mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKEJlLG1uKSxwPShwPU1hdGguaW11bChCZSxOdCkpK01hdGguaW11bChIZSxtbil8MCxTPU1hdGguaW11bChIZSxOdCkseT15K01hdGguaW11bChGZSxHbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEZlLG9uKXwwKStNYXRoLmltdWwoTmUsR24pfDAsUz1TK01hdGguaW11bChOZSxvbil8MCx5PXkrTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UscHQpfDApK01hdGguaW11bChUZSxObil8MCxTPVMrTWF0aC5pbXVsKFRlLHB0KXwwO3ZhciBqbj0oTSsoeT15''@;'; put 'put ''K01hdGguaW11bChyZSxobil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLEN0KXwwKStNYXRoLmltdWwoZmUsaG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsQ3QpfDApKyhwPj4+MTMpfDApKyhqbj4+PjI2KXwwLGpuJj02NzEwODg2Myx5PU1hdGguaW11bCht''@;'; put 'put ''dCxtbikscD0ocD1NYXRoLmltdWwobXQsTnQpKStNYXRoLmltdWwoS2UsbW4pfDAsUz1NYXRoLmltdWwoS2UsTnQpLHk9eStNYXRoLmltdWwoQmUsR24pfDAscD0ocD1wK01hdGguaW11bChCZSxvbil8MCkrTWF0aC5pbXVsKEhlLEduKXwwLFM9UytNYXRoLmltdWwoSGUsb24pfDAseT15K01h''@;'; put 'put ''dGguaW11bChGZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHB0KXwwKStNYXRoLmltdWwoTmUsTm4pfDAsUz1TK01hdGguaW11bChOZSxwdCl8MCx5PXkrTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsQ3QpfDApK01hdGguaW11bChUZSxobil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKFRlLEN0KXwwO3ZhciBYcj0oTSsoeT15K01hdGguaW11bChyZSxfdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLFZ0KXwwKStNYXRoLmltdWwoZmUsX3QpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsVnQpfDApKyhwPj4+MTMpfDApKyhYcj4+PjI2KXww''@;'; put 'put ''LFhyJj02NzEwODg2Myx5PU1hdGguaW11bChJZSxtbikscD0ocD1NYXRoLmltdWwoSWUsTnQpKStNYXRoLmltdWwoT2UsbW4pfDAsUz1NYXRoLmltdWwoT2UsTnQpLHk9eStNYXRoLmltdWwobXQsR24pfDAscD0ocD1wK01hdGguaW11bChtdCxvbil8MCkrTWF0aC5pbXVsKEtlLEduKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwoS2Usb24pfDAseT15K01hdGguaW11bChCZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEJlLHB0KXwwKStNYXRoLmltdWwoSGUsTm4pfDAsUz1TK01hdGguaW11bChIZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEZlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsQ3QpfDApK01h''@;'; put 'put ''dGguaW11bChOZSxobil8MCxTPVMrTWF0aC5pbXVsKE5lLEN0KXwwLHk9eStNYXRoLmltdWwoa2UsX3QpfDAscD0ocD1wK01hdGguaW11bChrZSxWdCl8MCkrTWF0aC5pbXVsKFRlLF90KXwwLFM9UytNYXRoLmltdWwoVGUsVnQpfDA7dmFyIHZpPShNKyh5PXkrTWF0aC5pbXVsKHJlLG90KXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsSXQpfDApK01hdGguaW11bChmZSxvdCl8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChmZSxJdCl8MCkrKHA+Pj4xMyl8MCkrKHZpPj4+MjYpfDAsdmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKG50LG1uKSxwPShwPU1hdGguaW11''@;'; put 'put ''bChudCxOdCkpK01hdGguaW11bChxZSxtbil8MCxTPU1hdGguaW11bChxZSxOdCkseT15K01hdGguaW11bChJZSxHbil8MCxwPShwPXArTWF0aC5pbXVsKEllLG9uKXwwKStNYXRoLmltdWwoT2UsR24pfDAsUz1TK01hdGguaW11bChPZSxvbil8MCx5PXkrTWF0aC5pbXVsKG10LE5uKXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwobXQscHQpfDApK01hdGguaW11bChLZSxObil8MCxTPVMrTWF0aC5pbXVsKEtlLHB0KXwwLHk9eStNYXRoLmltdWwoQmUsaG4pfDAscD0ocD1wK01hdGguaW11bChCZSxDdCl8MCkrTWF0aC5pbXVsKEhlLGhuKXwwLFM9UytNYXRoLmltdWwoSGUsQ3QpfDAseT15K01h''@;'; put 'put ''dGguaW11bChGZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLFZ0KXwwKStNYXRoLmltdWwoTmUsX3QpfDAsUz1TK01hdGguaW11bChOZSxWdCl8MCx5PXkrTWF0aC5pbXVsKGtlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsSXQpfDApK01hdGguaW11bChUZSxvdCl8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKFRlLEl0KXwwO3ZhciBFcj0oTSsoeT15K01hdGguaW11bChyZSxEdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHZ0KXwwKStNYXRoLmltdWwoZmUsRHQpfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsdnQpfDApKyhwPj4+MTMpfDApKyhFcj4+PjI2KXww''@;'; put 'put ''LEVyJj02NzEwODg2Myx5PU1hdGguaW11bChFZSxtbikscD0ocD1NYXRoLmltdWwoRWUsTnQpKStNYXRoLmltdWwoRGUsbW4pfDAsUz1NYXRoLmltdWwoRGUsTnQpLHk9eStNYXRoLmltdWwobnQsR24pfDAscD0ocD1wK01hdGguaW11bChudCxvbil8MCkrTWF0aC5pbXVsKHFlLEduKXwwLFM9''@;'; put 'put ''UytNYXRoLmltdWwocWUsb24pfDAseT15K01hdGguaW11bChJZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEllLHB0KXwwKStNYXRoLmltdWwoT2UsTm4pfDAsUz1TK01hdGguaW11bChPZSxwdCl8MCx5PXkrTWF0aC5pbXVsKG10LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsQ3QpfDApK01h''@;'; put 'put ''dGguaW11bChLZSxobil8MCxTPVMrTWF0aC5pbXVsKEtlLEN0KXwwLHk9eStNYXRoLmltdWwoQmUsX3QpfDAscD0ocD1wK01hdGguaW11bChCZSxWdCl8MCkrTWF0aC5pbXVsKEhlLF90KXwwLFM9UytNYXRoLmltdWwoSGUsVnQpfDAseT15K01hdGguaW11bChGZSxvdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEZlLEl0KXwwKStNYXRoLmltdWwoTmUsb3QpfDAsUz1TK01hdGguaW11bChOZSxJdCl8MCx5PXkrTWF0aC5pbXVsKGtlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsdnQpfDApK01hdGguaW11bChUZSxEdCl8MCxTPVMrTWF0aC5pbXVsKFRlLHZ0KXwwO3ZhciBZaT0oTSsoeT15''@;'; put 'put ''K01hdGguaW11bChyZSxMbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHp0KXwwKStNYXRoLmltdWwoZmUsTG4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUsenQpfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2Myx5PU1hdGguaW11bChh''@;'; put 'put ''dCxtbikscD0ocD1NYXRoLmltdWwoYXQsTnQpKStNYXRoLmltdWwoY3QsbW4pfDAsUz1NYXRoLmltdWwoY3QsTnQpLHk9eStNYXRoLmltdWwoRWUsR24pfDAscD0ocD1wK01hdGguaW11bChFZSxvbil8MCkrTWF0aC5pbXVsKERlLEduKXwwLFM9UytNYXRoLmltdWwoRGUsb24pfDAseT15K01h''@;'; put 'put ''dGguaW11bChudCxObil8MCxwPShwPXArTWF0aC5pbXVsKG50LHB0KXwwKStNYXRoLmltdWwocWUsTm4pfDAsUz1TK01hdGguaW11bChxZSxwdCl8MCx5PXkrTWF0aC5pbXVsKEllLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsQ3QpfDApK01hdGguaW11bChPZSxobil8MCxTPVMrTWF0aC5p''@;'; put 'put ''bXVsKE9lLEN0KXwwLHk9eStNYXRoLmltdWwobXQsX3QpfDAscD0ocD1wK01hdGguaW11bChtdCxWdCl8MCkrTWF0aC5pbXVsKEtlLF90KXwwLFM9UytNYXRoLmltdWwoS2UsVnQpfDAseT15K01hdGguaW11bChCZSxvdCl8MCxwPShwPXArTWF0aC5pbXVsKEJlLEl0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''SGUsb3QpfDAsUz1TK01hdGguaW11bChIZSxJdCl8MCx5PXkrTWF0aC5pbXVsKEZlLER0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsdnQpfDApK01hdGguaW11bChOZSxEdCl8MCxTPVMrTWF0aC5pbXVsKE5lLHZ0KXwwLHk9eStNYXRoLmltdWwoa2UsTG4pfDAscD0ocD1wK01hdGguaW11bChr''@;'; put 'put ''ZSx6dCl8MCkrTWF0aC5pbXVsKFRlLExuKXwwLFM9UytNYXRoLmltdWwoVGUsenQpfDA7dmFyIEpyPShNKyh5PXkrTWF0aC5pbXVsKHJlLFRuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwocmUsc24pfDApK01hdGguaW11bChmZSxUbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGgu''@;'; put 'put ''aW11bChmZSxzbil8MCkrKHA+Pj4xMyl8MCkrKEpyPj4+MjYpfDAsSnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG1uKSxwPShwPU1hdGguaW11bChQdCxOdCkpK01hdGguaW11bChBdCxtbil8MCxTPU1hdGguaW11bChBdCxOdCkseT15K01hdGguaW11bChhdCxHbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKGF0LG9uKXwwKStNYXRoLmltdWwoY3QsR24pfDAsUz1TK01hdGguaW11bChjdCxvbil8MCx5PXkrTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscHQpfDApK01hdGguaW11bChEZSxObil8MCxTPVMrTWF0aC5pbXVsKERlLHB0KXwwLHk9eStNYXRoLmltdWwo''@;'; put 'put ''bnQsaG4pfDAscD0ocD1wK01hdGguaW11bChudCxDdCl8MCkrTWF0aC5pbXVsKHFlLGhuKXwwLFM9UytNYXRoLmltdWwocWUsQ3QpfDAseT15K01hdGguaW11bChJZSxfdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLFZ0KXwwKStNYXRoLmltdWwoT2UsX3QpfDAsUz1TK01hdGguaW11bChPZSxW''@;'; put 'put ''dCl8MCx5PXkrTWF0aC5pbXVsKG10LG90KXwwLHA9KHA9cCtNYXRoLmltdWwobXQsSXQpfDApK01hdGguaW11bChLZSxvdCl8MCxTPVMrTWF0aC5pbXVsKEtlLEl0KXwwLHk9eStNYXRoLmltdWwoQmUsRHQpfDAscD0ocD1wK01hdGguaW11bChCZSx2dCl8MCkrTWF0aC5pbXVsKEhlLER0KXww''@;'; put 'put ''LFM9UytNYXRoLmltdWwoSGUsdnQpfDAseT15K01hdGguaW11bChGZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEZlLHp0KXwwKStNYXRoLmltdWwoTmUsTG4pfDAsUz1TK01hdGguaW11bChOZSx6dCl8MCx5PXkrTWF0aC5pbXVsKGtlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usc24pfDAp''@;'; put 'put ''K01hdGguaW11bChUZSxUbil8MCxTPVMrTWF0aC5pbXVsKFRlLHNuKXwwO3ZhciBhbz0oTSsoeT15K01hdGguaW11bChyZSxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHJlLHF0KXwwKStNYXRoLmltdWwoZmUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoZmUs''@;'; put 'put ''cXQpfDApKyhwPj4+MTMpfDApKyhhbz4+PjI2KXwwLGFvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxHbikscD0ocD1NYXRoLmltdWwoUHQsb24pKStNYXRoLmltdWwoQXQsR24pfDAsUz1NYXRoLmltdWwoQXQsb24pLHk9eStNYXRoLmltdWwoYXQsTm4pfDAscD0ocD1wK01hdGguaW11bChh''@;'; put 'put ''dCxwdCl8MCkrTWF0aC5pbXVsKGN0LE5uKXwwLFM9UytNYXRoLmltdWwoY3QscHQpfDAseT15K01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLEN0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsUz1TK01hdGguaW11bChEZSxDdCl8MCx5PXkrTWF0aC5pbXVsKG50LF90KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwobnQsVnQpfDApK01hdGguaW11bChxZSxfdCl8MCxTPVMrTWF0aC5pbXVsKHFlLFZ0KXwwLHk9eStNYXRoLmltdWwoSWUsb3QpfDAscD0ocD1wK01hdGguaW11bChJZSxJdCl8MCkrTWF0aC5pbXVsKE9lLG90KXwwLFM9UytNYXRoLmltdWwoT2UsSXQpfDAseT15''@;'; put 'put ''K01hdGguaW11bChtdCxEdCl8MCxwPShwPXArTWF0aC5pbXVsKG10LHZ0KXwwKStNYXRoLmltdWwoS2UsRHQpfDAsUz1TK01hdGguaW11bChLZSx2dCl8MCx5PXkrTWF0aC5pbXVsKEJlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoQmUsenQpfDApK01hdGguaW11bChIZSxMbil8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKEhlLHp0KXwwLHk9eStNYXRoLmltdWwoRmUsVG4pfDAscD0ocD1wK01hdGguaW11bChGZSxzbil8MCkrTWF0aC5pbXVsKE5lLFRuKXwwLFM9UytNYXRoLmltdWwoTmUsc24pfDA7dmFyIEJyPShNKyh5PXkrTWF0aC5pbXVsKGtlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoa2UscXQpfDApK01hdGguaW11bChUZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChUZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEJyPj4+MjYpfDAsQnImPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LE5uKSxwPShwPU1hdGguaW11bChQdCxwdCkpK01hdGguaW11bChBdCxO''@;'; put 'put ''bil8MCxTPU1hdGguaW11bChBdCxwdCkseT15K01hdGguaW11bChhdCxobil8MCxwPShwPXArTWF0aC5pbXVsKGF0LEN0KXwwKStNYXRoLmltdWwoY3QsaG4pfDAsUz1TK01hdGguaW11bChjdCxDdCl8MCx5PXkrTWF0aC5pbXVsKEVlLF90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsVnQpfDAp''@;'; put 'put ''K01hdGguaW11bChEZSxfdCl8MCxTPVMrTWF0aC5pbXVsKERlLFZ0KXwwLHk9eStNYXRoLmltdWwobnQsb3QpfDAscD0ocD1wK01hdGguaW11bChudCxJdCl8MCkrTWF0aC5pbXVsKHFlLG90KXwwLFM9UytNYXRoLmltdWwocWUsSXQpfDAseT15K01hdGguaW11bChJZSxEdCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKEllLHZ0KXwwKStNYXRoLmltdWwoT2UsRHQpfDAsUz1TK01hdGguaW11bChPZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG10LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsenQpfDApK01hdGguaW11bChLZSxMbil8MCxTPVMrTWF0aC5pbXVsKEtlLHp0KXwwLHk9eStNYXRoLmlt''@;'; put 'put ''dWwoQmUsVG4pfDAscD0ocD1wK01hdGguaW11bChCZSxzbil8MCkrTWF0aC5pbXVsKEhlLFRuKXwwLFM9UytNYXRoLmltdWwoSGUsc24pfDA7dmFyIEppPShNKyh5PXkrTWF0aC5pbXVsKEZlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUscXQpfDApK01hdGguaW11bChO''@;'; put 'put ''ZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChOZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKEppPj4+MjYpfDAsSmkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LGhuKSxwPShwPU1hdGguaW11bChQdCxDdCkpK01hdGguaW11bChBdCxobil8MCxTPU1hdGguaW11bChBdCxDdCkseT15''@;'; put 'put ''K01hdGguaW11bChhdCxfdCl8MCxwPShwPXArTWF0aC5pbXVsKGF0LFZ0KXwwKStNYXRoLmltdWwoY3QsX3QpfDAsUz1TK01hdGguaW11bChjdCxWdCl8MCx5PXkrTWF0aC5pbXVsKEVlLG90KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSXQpfDApK01hdGguaW11bChEZSxvdCl8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKERlLEl0KXwwLHk9eStNYXRoLmltdWwobnQsRHQpfDAscD0ocD1wK01hdGguaW11bChudCx2dCl8MCkrTWF0aC5pbXVsKHFlLER0KXwwLFM9UytNYXRoLmltdWwocWUsdnQpfDAseT15K01hdGguaW11bChJZSxMbil8MCxwPShwPXArTWF0aC5pbXVsKEllLHp0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoT2UsTG4pfDAsUz1TK01hdGguaW11bChPZSx6dCl8MCx5PXkrTWF0aC5pbXVsKG10LFRuKXwwLHA9KHA9cCtNYXRoLmltdWwobXQsc24pfDApK01hdGguaW11bChLZSxUbil8MCxTPVMrTWF0aC5pbXVsKEtlLHNuKXwwO3ZhciB0bz0oTSsoeT15K01hdGguaW11bChCZSxGbil8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEJlLHF0KXwwKStNYXRoLmltdWwoSGUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwoSGUscXQpfDApKyhwPj4+MTMpfDApKyh0bz4+PjI2KXwwLHRvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxfdCkscD0ocD1NYXRoLmltdWwoUHQs''@;'; put 'put ''VnQpKStNYXRoLmltdWwoQXQsX3QpfDAsUz1NYXRoLmltdWwoQXQsVnQpLHk9eStNYXRoLmltdWwoYXQsb3QpfDAscD0ocD1wK01hdGguaW11bChhdCxJdCl8MCkrTWF0aC5pbXVsKGN0LG90KXwwLFM9UytNYXRoLmltdWwoY3QsSXQpfDAseT15K01hdGguaW11bChFZSxEdCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKEVlLHZ0KXwwKStNYXRoLmltdWwoRGUsRHQpfDAsUz1TK01hdGguaW11bChEZSx2dCl8MCx5PXkrTWF0aC5pbXVsKG50LExuKXwwLHA9KHA9cCtNYXRoLmltdWwobnQsenQpfDApK01hdGguaW11bChxZSxMbil8MCxTPVMrTWF0aC5pbXVsKHFlLHp0KXwwLHk9eStNYXRoLmlt''@;'; put 'put ''dWwoSWUsVG4pfDAscD0ocD1wK01hdGguaW11bChJZSxzbil8MCkrTWF0aC5pbXVsKE9lLFRuKXwwLFM9UytNYXRoLmltdWwoT2Usc24pfDA7dmFyIGNvPShNKyh5PXkrTWF0aC5pbXVsKG10LEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwobXQscXQpfDApK01hdGguaW11bChL''@;'; put 'put ''ZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChLZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGNvPj4+MjYpfDAsY28mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LG90KSxwPShwPU1hdGguaW11bChQdCxJdCkpK01hdGguaW11bChBdCxvdCl8MCxTPU1hdGguaW11bChBdCxJdCkseT15''@;'; put 'put ''K01hdGguaW11bChhdCxEdCl8MCxwPShwPXArTWF0aC5pbXVsKGF0LHZ0KXwwKStNYXRoLmltdWwoY3QsRHQpfDAsUz1TK01hdGguaW11bChjdCx2dCl8MCx5PXkrTWF0aC5pbXVsKEVlLExuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsenQpfDApK01hdGguaW11bChEZSxMbil8MCxTPVMrTWF0''@;'; put 'put ''aC5pbXVsKERlLHp0KXwwLHk9eStNYXRoLmltdWwobnQsVG4pfDAscD0ocD1wK01hdGguaW11bChudCxzbil8MCkrTWF0aC5pbXVsKHFlLFRuKXwwLFM9UytNYXRoLmltdWwocWUsc24pfDA7dmFyIGxvPShNKyh5PXkrTWF0aC5pbXVsKEllLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoSWUscXQpfDApK01hdGguaW11bChPZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChPZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LER0KSxwPShwPU1hdGguaW11bChQdCx2dCkpK01hdGguaW11bChBdCxE''@;'; put 'put ''dCl8MCxTPU1hdGguaW11bChBdCx2dCkseT15K01hdGguaW11bChhdCxMbil8MCxwPShwPXArTWF0aC5pbXVsKGF0LHp0KXwwKStNYXRoLmltdWwoY3QsTG4pfDAsUz1TK01hdGguaW11bChjdCx6dCl8MCx5PXkrTWF0aC5pbXVsKEVlLFRuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsc24pfDAp''@;'; put 'put ''K01hdGguaW11bChEZSxUbil8MCxTPVMrTWF0aC5pbXVsKERlLHNuKXwwO3ZhciBzbz0oTSsoeT15K01hdGguaW11bChudCxGbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG50LHF0KXwwKStNYXRoLmltdWwocWUsRm4pfDApKTw8MTMpfDA7TT0oKFM9UytNYXRoLmltdWwocWUs''@;'; put 'put ''cXQpfDApKyhwPj4+MTMpfDApKyhzbz4+PjI2KXwwLHNvJj02NzEwODg2Myx5PU1hdGguaW11bChQdCxMbikscD0ocD1NYXRoLmltdWwoUHQsenQpKStNYXRoLmltdWwoQXQsTG4pfDAsUz1NYXRoLmltdWwoQXQsenQpLHk9eStNYXRoLmltdWwoYXQsVG4pfDAscD0ocD1wK01hdGguaW11bChh''@;'; put 'put ''dCxzbil8MCkrTWF0aC5pbXVsKGN0LFRuKXwwLFM9UytNYXRoLmltdWwoY3Qsc24pfDA7dmFyIFhpPShNKyh5PXkrTWF0aC5pbXVsKEVlLEZuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRWUscXQpfDApK01hdGguaW11bChEZSxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGgu''@;'; put 'put ''aW11bChEZSxxdCl8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLHk9TWF0aC5pbXVsKFB0LFRuKSxwPShwPU1hdGguaW11bChQdCxzbikpK01hdGguaW11bChBdCxUbil8MCxTPU1hdGguaW11bChBdCxzbik7dmFyIHBvPShNKyh5PXkrTWF0aC5pbXVsKGF0LEZuKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoYXQscXQpfDApK01hdGguaW11bChjdCxGbil8MCkpPDwxMyl8MDtNPSgoUz1TK01hdGguaW11bChjdCxxdCl8MCkrKHA+Pj4xMyl8MCkrKHBvPj4+MjYpfDAscG8mPTY3MTA4ODYzO3ZhciBfcj0oTSsoeT1NYXRoLmltdWwoUHQsRm4pKXww''@;'; put 'put ''KSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKFB0LHF0KSkrTWF0aC5pbXVsKEF0LEZuKXwwKSk8PDEzKXwwO3JldHVybiBNPSgoUz1NYXRoLmltdWwoQXQscXQpKSsocD4+PjEzKXwwKSsoX3I+Pj4yNil8MCxfciY9NjcxMDg4NjMsQ1swXT1IbixDWzFdPWlpLENbMl09Y24sQ1szXT1qbixDWzRd''@;'; put 'put ''PVhyLENbNV09dmksQ1s2XT1FcixDWzddPVlpLENbOF09SnIsQ1s5XT1hbyxDWzEwXT1CcixDWzExXT1KaSxDWzEyXT10byxDWzEzXT1jbyxDWzE0XT1sbyxDWzE1XT1zbyxDWzE2XT1YaSxDWzE3XT1wbyxDWzE4XT1fciwwIT09TSYmKENbMTldPU0sTi5sZW5ndGgrKyksTn07ZnVuY3Rpb24g''@;'; put 'put ''VyhZLGIseCl7cmV0dXJuKG5ldyBVKS5tdWxwKFksYix4KX1mdW5jdGlvbiBVKFksYil7dGhpcy54PVksdGhpcy55PWJ9TWF0aC5pbXVsfHwoVj1qKSxILnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihiLHgpe3ZhciBOLEY9dGhpcy5sZW5ndGgrYi5sZW5ndGg7cmV0dXJuIE49MTA9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmMTA9PT1iLmxlbmd0aD9WKHRoaXMsYix4KTpGPDYzP2oodGhpcyxiLHgpOkY8MTAyND9mdW5jdGlvbiBHKFksYix4KXt4Lm5lZ2F0aXZlPWIubmVnYXRpdmVeWS5uZWdhdGl2ZSx4Lmxlbmd0aD1ZLmxlbmd0aCtiLmxlbmd0aDtmb3IodmFyIE49MCxGPTAsZz0wO2c8eC5sZW5n''@;'; put 'put ''dGgtMTtnKyspe3ZhciBDPUY7Rj0wO2Zvcih2YXIgTT02NzEwODg2MyZOLHk9TWF0aC5taW4oZyxiLmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsZy1ZLmxlbmd0aCsxKTtwPD15O3ArKyl7dmFyIGZlPSgwfFkud29yZHNbZy1wXSkqKDB8Yi53b3Jkc1twXSksbWU9NjcxMDg4NjMmZmU7TT02NzEw''@;'; put 'put ''ODg2MyYobWU9bWUrTXwwKSxGKz0oQz0oQz1DKyhmZS82NzEwODg2NHwwKXwwKSsobWU+Pj4yNil8MCk+Pj4yNixDJj02NzEwODg2M314LndvcmRzW2ddPU0sTj1DLEM9Rn1yZXR1cm4gMCE9PU4/eC53b3Jkc1tnXT1OOngubGVuZ3RoLS0seC5zdHJpcCgpfSh0aGlzLGIseCk6Vyh0aGlzLGIs''@;'; put 'put ''eCksTn0sVS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihiKXtmb3IodmFyIHg9bmV3IEFycmF5KGIpLE49SC5wcm90b3R5cGUuX2NvdW50Qml0cyhiKS0xLEY9MDtGPGI7RisrKXhbRl09dGhpcy5yZXZCaW4oRixOLGIpO3JldHVybiB4fSxVLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24o''@;'; put 'put ''Yix4LE4pe2lmKDA9PT1ifHxiPT09Ti0xKXJldHVybiBiO2Zvcih2YXIgRj0wLGc9MDtnPHg7ZysrKUZ8PSgxJmIpPDx4LWctMSxiPj49MTtyZXR1cm4gRn0sVS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihiLHgsTixGLGcsQyl7Zm9yKHZhciBNPTA7TTxDO00rKylGW01dPXhbYltNXV0s''@;'; put 'put ''Z1tNXT1OW2JbTV1dfSxVLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYix4LE4sRixnLEMpe3RoaXMucGVybXV0ZShDLGIseCxOLEYsZyk7Zm9yKHZhciBNPTE7TTxnO008PD0xKWZvcih2YXIgeT1NPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL3kpLFM9TWF0aC5zaW4oMipNYXRoLlBJ''@;'; put 'put ''L3kpLFE9MDtRPGc7USs9eSlmb3IodmFyIHJlPXAsZmU9UyxtZT0wO21lPE07bWUrKyl7dmFyIGtlPU5bUSttZV0sVGU9RltRK21lXSxQZT1OW1ErbWUrTV0sRmU9RltRK21lK01dLE5lPXJlKlBlLWZlKkZlO0ZlPXJlKkZlK2ZlKlBlLE5bUSttZV09a2UrKFBlPU5lKSxGW1ErbWVdPVRlK0Zl''@;'; put 'put ''LE5bUSttZStNXT1rZS1QZSxGW1ErbWUrTV09VGUtRmUsbWUhPT15JiYoTmU9cCpyZS1TKmZlLGZlPXAqZmUrUypyZSxyZT1OZSl9fSxVLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihiLHgpe3ZhciBOPTF8TWF0aC5tYXgoeCxiKSxGPTEmTixnPTA7Zm9yKE49Ti8yfDA7TjtOPj4+''@;'; put 'put ''PTEpZysrO3JldHVybiAxPDxnKzErRn0sVS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGIseCxOKXtpZighKE48PTEpKWZvcih2YXIgRj0wO0Y8Ti8yO0YrKyl7dmFyIGc9YltGXTtiW0ZdPWJbTi1GLTFdLGJbTi1GLTFdPWcsZz14W0ZdLHhbRl09LXhbTi1GLTFdLHhbTi1GLTFdPS1n''@;'; put 'put ''fX0sVS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGIseCl7Zm9yKHZhciBOPTAsRj0wO0Y8eC8yO0YrKyl7dmFyIGc9ODE5MipNYXRoLnJvdW5kKGJbMipGKzFdL3gpK01hdGgucm91bmQoYlsyKkZdL3gpK047YltGXT02NzEwODg2MyZnLE49Zzw2NzEwODg2ND8wOmcvNjcxMDg4''@;'; put 'put ''NjR8MH1yZXR1cm4gYn0sVS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihiLHgsTixGKXtmb3IodmFyIGc9MCxDPTA7Qzx4O0MrKylOWzIqQ109ODE5MSYoZys9MHxiW0NdKSxOWzIqQysxXT04MTkxJihnPj4+PTEzKSxnPj4+PTEzO2ZvcihDPTIqeDtDPEY7KytDKU5bQ109MDt2KDA9''@;'; put 'put ''PT1nKSx2KDA9PSgtODE5MiZnKSl9LFUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciB4PW5ldyBBcnJheShiKSxOPTA7TjxiO04rKyl4W05dPTA7cmV0dXJuIHh9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYix4LE4pe3ZhciBGPTIqdGhpcy5ndWVzc0xlbjEzYihiLmxl''@;'; put 'put ''bmd0aCx4Lmxlbmd0aCksZz10aGlzLm1ha2VSQlQoRiksQz10aGlzLnN0dWIoRiksTT1uZXcgQXJyYXkoRikseT1uZXcgQXJyYXkoRikscD1uZXcgQXJyYXkoRiksUz1uZXcgQXJyYXkoRiksUT1uZXcgQXJyYXkoRikscmU9bmV3IEFycmF5KEYpLGZlPU4ud29yZHM7ZmUubGVuZ3RoPUYsdGhp''@;'; put 'put ''cy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsTSxGKSx0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxTLEYpLHRoaXMudHJhbnNmb3JtKE0sQyx5LHAsRixnKSx0aGlzLnRyYW5zZm9ybShTLEMsUSxyZSxGLGcpO2Zvcih2YXIgbWU9MDttZTxGO21lKyspe3ZhciBrZT15W21l''@;'; put 'put ''XSpRW21lXS1wW21lXSpyZVttZV07cFttZV09eVttZV0qcmVbbWVdK3BbbWVdKlFbbWVdLHlbbWVdPWtlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh5LHAsRiksdGhpcy50cmFuc2Zvcm0oeSxwLGZlLEMsRixnKSx0aGlzLmNvbmp1Z2F0ZShmZSxDLEYpLHRoaXMubm9ybWFsaXplMTNiKGZlLEYp''@;'; put 'put ''LE4ubmVnYXRpdmU9Yi5uZWdhdGl2ZV54Lm5lZ2F0aXZlLE4ubGVuZ3RoPWIubGVuZ3RoK3gubGVuZ3RoLE4uc3RyaXAoKX0sSC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCks''@;'; put 'put ''dGhpcy5tdWxUbyhiLHgpfSxILnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGIpe3ZhciB4PW5ldyBIKG51bGwpO3JldHVybiB4LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksVyh0aGlzLGIseCl9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxILnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiksdihiPDY3MTA4ODY0KTtmb3IodmFyIHg9MCxOPTA7Tjx0aGlzLmxlbmd0aDtOKyspe3ZhciBGPSgwfHRoaXMud29yZHNbTl0pKmIsZz0oNjcxMDg4NjMmRikr''@;'; put 'put ''KDY3MTA4ODYzJngpO3g+Pj0yNix4Kz1GLzY3MTA4ODY0fDAseCs9Zz4+PjI2LHRoaXMud29yZHNbTl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PXgmJih0aGlzLndvcmRzW05dPXgsdGhpcy5sZW5ndGgrKyksdGhpc30sSC5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bG9uZSgpLmltdWxuKGIpfSxILnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEgucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEgucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiKXt2YXIgeD1mdW5j''@;'; put 'put ''dGlvbiB6KFkpe2Zvcih2YXIgYj1uZXcgQXJyYXkoWS5iaXRMZW5ndGgoKSkseD0wO3g8Yi5sZW5ndGg7eCsrKXt2YXIgRj14JTI2O2JbeF09KFkud29yZHNbeC8yNnwwXSYxPDxGKT4+PkZ9cmV0dXJuIGJ9KGIpO2lmKDA9PT14Lmxlbmd0aClyZXR1cm4gbmV3IEgoMSk7Zm9yKHZhciBOPXRo''@;'; put 'put ''aXMsRj0wO0Y8eC5sZW5ndGgmJjA9PT14W0ZdO0YrKyxOPU4uc3FyKCkpO2lmKCsrRjx4Lmxlbmd0aClmb3IodmFyIGc9Ti5zcXIoKTtGPHgubGVuZ3RoO0YrKyxnPWcuc3FyKCkpMCE9PXhbRl0mJihOPU4ubXVsKGcpKTtyZXR1cm4gTn0sSC5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3YoIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgZyx4PWIlMjYsTj0oYi14KS8yNixGPTY3MTA4ODYzPj4+MjYteDw8MjYteDtpZigwIT09eCl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgTT10aGlzLndvcmRzW2ddJkY7dGhpcy53b3Jkc1tnXT0oMHx0aGlz''@;'; put 'put ''LndvcmRzW2ddKS1NPDx4fEMsQz1NPj4+MjYteH1DJiYodGhpcy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1OKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytOXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7ZzxOO2crKyl0aGlzLndvcmRzW2ddPTA7''@;'; put 'put ''dGhpcy5sZW5ndGgrPU59cmV0dXJuIHRoaXMuc3RyaXAoKX0sSC5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYix4LE4pe3ZhciBGO3YoIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiBiJiZiPj0wKSxGPXg/KHgteCUyNikvMjY6MDt2YXIgZz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLE09NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLHk9TjtpZihGLT1DLEY9TWF0aC5tYXgoMCxGKSx5KXtmb3IodmFyIHA9MDtwPEM7cCsrKXkud29yZHNbcF09''@;'; put 'put ''dGhpcy53b3Jkc1twXTt5Lmxlbmd0aD1DfWlmKDAhPT1DKWlmKHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBTPTA7''@;'; put 'put ''Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PVN8fHA+PUYpO3AtLSl7dmFyIFE9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09Uzw8MjYtZ3xRPj4+ZyxTPVEmTX1yZXR1cm4geSYmMCE9PVMmJih5LndvcmRzW3kubGVuZ3RoKytdPVMpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMu''@;'; put 'put ''d29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIseCxOKXtyZXR1cm4gdigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYix4LE4pfSxILnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaXNobG4oYil9LEgucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxILnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LEgucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxILnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PU58fCEodGhpcy53b3Jkc1tOXSYxPDx4KSl9LEgucHJv''@;'; put 'put ''dG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXt2KCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIHg9YiUyNixOPShiLXgpLzI2O3JldHVybiB2KDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9Tj90aGlz''@;'; put 'put ''OigwIT09eCYmTisrLHRoaXMubGVuZ3RoPU1hdGgubWluKE4sdGhpcy5sZW5ndGgpLDAhPT14JiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj54PDx4KSx0aGlzLnN0cmlwKCkpfSxILnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmltYXNrbihiKX0sSC5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0p''@;'; put 'put ''PGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sSC5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGIpe3RoaXMu''@;'; put 'put ''d29yZHNbMF0rPWI7Zm9yKHZhciB4PTA7eDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t4XT49NjcxMDg4NjQ7eCsrKXRoaXMud29yZHNbeF0tPTY3MTA4ODY0LHg9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbeCsxXT0xOnRoaXMud29yZHNbeCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1N''@;'; put 'put ''YXRoLm1heCh0aGlzLmxlbmd0aCx4KzEpLHRoaXN9LEgucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKHYoIm51bWJlciI9PXR5cGVvZiBiKSx2KGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHg9MDt4PHRoaXMubGVu''@;'; put 'put ''Z3RoJiZ0aGlzLndvcmRzW3hdPDA7eCsrKXRoaXMud29yZHNbeF0rPTY3MTA4ODY0LHRoaXMud29yZHNbeCsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxILnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oYil9LEgucHJvdG90eXBlLnN1Ym49''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihiKX0sSC5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sSC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEgucHJvdG90eXBl''@;'; put 'put ''Ll9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLHgsTil7dmFyIGc7dGhpcy5fZXhwYW5kKGIubGVuZ3RoK04pO3ZhciBDLE09MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytOXSkrTTt2YXIgeT0oMHxiLndvcmRzW2ddKSp4O009KChDLT02NzEwODg2MyZ5KT4+MjYp''@;'; put 'put ''LSh5LzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1OO2crKylNPShDPSgwfHRoaXMud29yZHNbZytOXSkrTSk+PjI2LHRoaXMud29yZHNbZytOXT02NzEwODg2MyZDO2lmKDA9PT1NKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKHYoLTE9''@;'; put 'put ''PT1NKSxNPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKU09KEM9LSgwfHRoaXMud29yZHNbZ10pK00pPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGIseCl7dmFyIE4s''@;'; put 'put ''Rj10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdOzAhPShOPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oTiksRi5pdXNobG4oTiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLHk9Ri5sZW5ndGgtZy5sZW5ndGg7aWYoIm1vZCIhPT14KXso''@;'; put 'put ''cD1uZXcgSChudWxsKSkubGVuZ3RoPXkrMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciBTPTA7UzxwLmxlbmd0aDtTKyspcC53b3Jkc1tTXT0wfXZhciBRPUYuY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLHkpOzA9PT1RLm5lZ2F0aXZlJiYoRj1RLHAmJihwLndvcmRzW3ld''@;'; put 'put ''PTEpKTtmb3IodmFyIHJlPXktMTtyZT49MDtyZS0tKXt2YXIgZmU9NjcxMDg4NjQqKDB8Ri53b3Jkc1tnLmxlbmd0aCtyZV0pKygwfEYud29yZHNbZy5sZW5ndGgrcmUtMV0pO2ZvcihmZT1NYXRoLm1pbihmZS9DfDAsNjcxMDg4NjMpLEYuX2lzaGxuc3VibXVsKGcsZmUscmUpOzAhPT1GLm5l''@;'; put 'put ''Z2F0aXZlOylmZS0tLEYubmVnYXRpdmU9MCxGLl9pc2hsbnN1Ym11bChnLDEscmUpLEYuaXNaZXJvKCl8fChGLm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1tyZV09ZmUpfXJldHVybiBwJiZwLnN0cmlwKCksRi5zdHJpcCgpLCJkaXYiIT09eCYmMCE9PU4mJkYuaXVzaHJuKE4pLHtkaXY6cHx8''@;'; put 'put ''bnVsbCxtb2Q6Rn19LEgucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihiLHgsTil7cmV0dXJuIHYoIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgSCgwKSxtb2Q6bmV3IEgoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1v''@;'; put 'put ''ZChiLHgpLCJtb2QiIT09eCYmKEY9Qy5kaXYubmVnKCkpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpGLG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhDPXRoaXMuZGl2bW9kKGIubmVnKCkseCks''@;'; put 'put ''Im1vZCIhPT14JiYoRj1DLmRpdi5uZWcoKSkse2RpdjpGLG1vZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLHgpLCJkaXYiIT09eCYmKGc9Qy5tb2QubmVnKCksTiYmMCE9PWcubmVnYXRpdmUmJmcuaXN1YihiKSkse2RpdjpD''@;'; put 'put ''LmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChiKTwwP3tkaXY6bmV3IEgoMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PXg/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09eD97ZGl2Om51bGwsbW9kOm5ldyBIKHRo''@;'; put 'put ''aXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpuZXcgSCh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIseCk7dmFyIEYsZyxDfSxILnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsImRp''@;'; put 'put ''diIsITEpLmRpdn0sSC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LEgucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0sSC5wcm90b3R5cGUuZGl2Um91bmQ9ZnVu''@;'; put 'put ''Y3Rpb24oYil7dmFyIHg9dGhpcy5kaXZtb2QoYik7aWYoeC5tb2QuaXNaZXJvKCkpcmV0dXJuIHguZGl2O3ZhciBOPTAhPT14LmRpdi5uZWdhdGl2ZT94Lm1vZC5pc3ViKGIpOngubW9kLEY9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1OLmNtcChGKTtyZXR1cm4gQzwwfHwxPT09ZyYmMD09''@;'; put 'put ''PUM/eC5kaXY6MCE9PXguZGl2Lm5lZ2F0aXZlP3guZGl2LmlzdWJuKDEpOnguZGl2LmlhZGRuKDEpfSxILnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0oMTw8MjYpJWIsTj0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSlOPSh4Kk4rKDB8dGhp''@;'; put 'put ''cy53b3Jkc1tGXSkpJWI7cmV0dXJuIE59LEgucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGIpe3YoYjw9NjcxMDg4NjMpO2Zvcih2YXIgeD0wLE49dGhpcy5sZW5ndGgtMTtOPj0wO04tLSl7dmFyIEY9KDB8dGhpcy53b3Jkc1tOXSkrNjcxMDg4NjQqeDt0aGlzLndvcmRzW05dPUYvYnwwLHg9''@;'; put 'put ''RiVifXJldHVybiB0aGlzLnN0cmlwKCl9LEgucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sSC5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgeD10aGlzLE49Yi5jbG9u''@;'; put 'put ''ZSgpO3g9MCE9PXgubmVnYXRpdmU/eC51bW9kKGIpOnguY2xvbmUoKTtmb3IodmFyIEY9bmV3IEgoMSksZz1uZXcgSCgwKSxDPW5ldyBIKDApLE09bmV3IEgoMSkseT0wO3guaXNFdmVuKCkmJk4uaXNFdmVuKCk7KXguaXVzaHJuKDEpLE4uaXVzaHJuKDEpLCsreTtmb3IodmFyIHA9Ti5jbG9u''@;'; put 'put ''ZSgpLFM9eC5jbG9uZSgpOyF4LmlzWmVybygpOyl7Zm9yKHZhciBRPTAscmU9MTshKHgud29yZHNbMF0mcmUpJiZRPDI2OysrUSxyZTw8PTEpO2lmKFE+MClmb3IoeC5pdXNocm4oUSk7US0tID4wOykoRi5pc09kZCgpfHxnLmlzT2RkKCkpJiYoRi5pYWRkKHApLGcuaXN1YihTKSksRi5pdXNo''@;'; put 'put ''cm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBmZT0wLG1lPTE7IShOLndvcmRzWzBdJm1lKSYmZmU8MjY7KytmZSxtZTw8PTEpO2lmKGZlPjApZm9yKE4uaXVzaHJuKGZlKTtmZS0tID4wOykoQy5pc09kZCgpfHxNLmlzT2RkKCkpJiYoQy5pYWRkKHApLE0uaXN1YihTKSksQy5pdXNocm4oMSks''@;'; put 'put ''TS5pdXNocm4oMSk7eC5jbXAoTik+PTA/KHguaXN1YihOKSxGLmlzdWIoQyksZy5pc3ViKE0pKTooTi5pc3ViKHgpLEMuaXN1YihGKSxNLmlzdWIoZykpfXJldHVybnthOkMsYjpNLGdjZDpOLml1c2hsbih5KX19LEgucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihiKXt2KDA9PT1iLm5lZ2F0''@;'; put 'put ''aXZlKSx2KCFiLmlzWmVybygpKTt2YXIgUSx4PXRoaXMsTj1iLmNsb25lKCk7eD0wIT09eC5uZWdhdGl2ZT94LnVtb2QoYik6eC5jbG9uZSgpO2Zvcih2YXIgRj1uZXcgSCgxKSxnPW5ldyBIKDApLEM9Ti5jbG9uZSgpO3guY21wbigxKT4wJiZOLmNtcG4oMSk+MDspe2Zvcih2YXIgTT0wLHk9''@;'; put 'put ''MTshKHgud29yZHNbMF0meSkmJk08MjY7KytNLHk8PD0xKTtpZihNPjApZm9yKHguaXVzaHJuKE0pO00tLSA+MDspRi5pc09kZCgpJiZGLmlhZGQoQyksRi5pdXNocm4oMSk7Zm9yKHZhciBwPTAsUz0xOyEoTi53b3Jkc1swXSZTKSYmcDwyNjsrK3AsUzw8PTEpO2lmKHA+MClmb3IoTi5pdXNo''@;'; put 'put ''cm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChDKSxnLml1c2hybigxKTt4LmNtcChOKT49MD8oeC5pc3ViKE4pLEYuaXN1YihnKSk6KE4uaXN1Yih4KSxnLmlzdWIoRikpfXJldHVybihRPTA9PT14LmNtcG4oMSk/RjpnKS5jbXBuKDApPDAmJlEuaWFkZChiKSxRfSxILnByb3RvdHlw''@;'; put 'put ''ZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB4PXRoaXMuY2xvbmUoKSxOPWIuY2xvbmUoKTt4Lm5lZ2F0aXZlPTAsTi5uZWdhdGl2ZT0wO2Zvcih2YXIgRj0wO3guaXNFdmVuKCkmJk4u''@;'; put 'put ''aXNFdmVuKCk7RisrKXguaXVzaHJuKDEpLE4uaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDt4LmlzRXZlbigpOyl4Lml1c2hybigxKTtmb3IoO04uaXNFdmVuKCk7KU4uaXVzaHJuKDEpO3ZhciBnPXguY21wKE4pO2lmKGc8MCl7dmFyIEM9eDt4PU4sTj1DfWVsc2UgaWYoMD09PWd8fDA9PT1OLmNt''@;'; put 'put ''cG4oMSkpYnJlYWs7eC5pc3ViKE4pfXJldHVybiBOLml1c2hsbihGKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sSC5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMud29yZHNbMF0pfSxILnBy''@;'; put 'put ''b3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0aGlzLndvcmRzWzBdKX0sSC5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sSC5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7digibnVtYmVyIj09dHlwZW9mIGIpO3ZhciB4''@;'; put 'put ''PWIlMjYsTj0oYi14KS8yNixGPTE8PHg7aWYodGhpcy5sZW5ndGg8PU4pcmV0dXJuIHRoaXMuX2V4cGFuZChOKzEpLHRoaXMud29yZHNbTl18PUYsdGhpcztmb3IodmFyIGc9RixDPU47MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgTT0wfHRoaXMud29yZHNbQ107Zz0oTSs9Zyk+Pj4y''@;'; put 'put ''Nix0aGlzLndvcmRzW0NdPU0mPTY3MTA4ODYzfXJldHVybiAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxILnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sSC5wcm90b3R5cGUu''@;'; put 'put ''Y21wbj1mdW5jdGlvbihiKXt2YXIgTix4PWI8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXgpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJngpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpTj0xO2Vsc2V7eCYmKGI9LWIpLHYoYjw9NjcxMDg4NjMsIk51bWJl''@;'; put 'put ''ciBpcyB0b28gYmlnIik7dmFyIEY9MHx0aGlzLndvcmRzWzBdO049Rj09PWI/MDpGPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtTjpOfSxILnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lm''@;'; put 'put ''KDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgeD10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXg6eH0sSC5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4gMTtpZih0aGlz''@;'; put 'put ''Lmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHg9MCxOPXRoaXMubGVuZ3RoLTE7Tj49MDtOLS0pe3ZhciBGPTB8dGhpcy53b3Jkc1tOXSxnPTB8Yi53b3Jkc1tOXTtpZihGIT09Zyl7RjxnP3g9LTE6Rj5nJiYoeD0xKTticmVha319cmV0dXJuIHh9LEgucHJvdG90eXBlLmd0bj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0sSC5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sSC5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxILnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24o''@;'; put 'put ''Yil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxILnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LEgucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LEgucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IHRoaXMuY21wbihiKTw9MH0sSC5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sSC5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxILnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMu''@;'; put 'put ''Y21wKGIpfSxILnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IHVlKGIpfSxILnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx2KDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5y''@;'; put 'put ''ZWQuY29udmVydEZyb20odGhpcyl9LEgucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxILnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdighdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNv''@;'; put 'put ''bnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sSC5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24o''@;'; put 'put ''Yil7cmV0dXJuIHYodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sSC5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFNobD1mdW5jdGlv''@;'; put 'put ''bihiKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIHYodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLm11bCh0aGlzLGIpfSxILnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxi''@;'; put 'put ''KSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LEgucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxILnByb3RvdHlw''@;'; put 'put ''ZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sSC5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiB2KHRo''@;'; put 'put ''aXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEgucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxILnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRo''@;'; put 'put ''aXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sSC5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiB2KHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3ZhciBxPXtrMjU2Om51bGws''@;'; put 'put ''cDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gdGUoWSxiKXt0aGlzLm5hbWU9WSx0aGlzLnA9bmV3IEgoYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEgoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMu''@;'; put 'put ''X3RtcCgpfWZ1bmN0aW9uIG5lKCl7dGUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBpZSgpe3RlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gbGUoKXt0ZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIGRlKCl7dGUuY2FsbCh0''@;'; put 'put ''aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiB1ZShZKXtpZigic3RyaW5nIj09dHlwZW9mIFkpe3ZhciBiPUguX3ByaW1lKFkpO3RoaXMubT1iLnAsdGhpcy5wcmltZT1ifWVs''@;'; put 'put ''c2UgdihZLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVksdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGNlKFkpe3VlLmNhbGwodGhpcyxZKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9''@;'; put 'put ''MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBIKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhp''@;'; put 'put ''cy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfXRlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IEgobnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxi''@;'; put 'put ''fSx0ZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihiKXt2YXIgTix4PWI7ZG97dGhpcy5zcGxpdCh4LHRoaXMudG1wKSxOPSh4PSh4PXRoaXMuaW11bEsoeCkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShOPnRoaXMubik7dmFyIEY9Tjx0aGlzLm4/LTE6eC51Y21wKHRo''@;'; put 'put ''aXMucCk7cmV0dXJuIDA9PT1GPyh4LndvcmRzWzBdPTAseC5sZW5ndGg9MSk6Rj4wP3guaXN1Yih0aGlzLnApOnZvaWQgMCE9PXguc3RyaXA/eC5zdHJpcCgpOnguX3N0cmlwKCkseH0sdGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIseCl7Yi5pdXNocm4odGhpcy5uLDAseCl9LHRlLnBy''@;'; put 'put ''b3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pbXVsKHRoaXMuayl9LGhlKG5lLHRlKSxuZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYix4KXtmb3IodmFyIE49NDE5NDMwMyxGPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEY7ZysrKXgud29yZHNbZ109Yi53b3Jkc1tn''@;'; put 'put ''XTtpZih4Lmxlbmd0aD1GLGIubGVuZ3RoPD05KXJldHVybiBiLndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2Zvcih4LndvcmRzW3gubGVuZ3RoKytdPUMmTixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgTT0wfGIud29yZHNbZ107Yi53b3Jkc1tnLTEwXT0o''@;'; put 'put ''TSZOKTw8NHxDPj4+MjIsQz1NfWIud29yZHNbZy0xMF09Qz4+Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LG5lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5ndGgrMV09MCxiLmxlbmd0aCs9Mjtmb3Io''@;'; put 'put ''dmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTB8Yi53b3Jkc1tOXTtiLndvcmRzW05dPTY3MTA4ODYzJih4Kz05NzcqRikseD02NCpGKyh4LzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3RoLS0sMD09PWIud29yZHNbYi5sZW5ndGgt''@;'; put 'put ''MV0mJmIubGVuZ3RoLS0pLGJ9LGhlKGllLHRlKSxoZShsZSx0ZSksaGUoZGUsdGUpLGRlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIHg9MCxOPTA7TjxiLmxlbmd0aDtOKyspe3ZhciBGPTE5KigwfGIud29yZHNbTl0pK3gsZz02NzEwODg2MyZGO0Y+Pj49MjYsYi53b3Jk''@;'; put 'put ''c1tOXT1nLHg9Rn1yZXR1cm4gMCE9PXgmJihiLndvcmRzW2IubGVuZ3RoKytdPXgpLGJ9LEguX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIHg7aWYoImsyNTYiPT09Yil4PW5ldyBuZTtlbHNlIGlmKCJwMjI0Ij09PWIpeD1uZXcgaWU7ZWxzZSBpZigicDE5MiI9''@;'; put 'put ''PT1iKXg9bmV3IGxlO2Vsc2V7aWYoInAyNTUxOSIhPT1iKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO3g9bmV3IGRlfXJldHVybiBxW2JdPXgseH0sdWUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe3YoMD09PWIubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdp''@;'; put 'put ''dGggcG9zaXRpdmVzIiksdihiLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSx1ZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYix4KXt2KDA9PShiLm5lZ2F0aXZlfHgubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLHYoYi5yZWQm''@;'; put 'put ''JmIucmVkPT09eC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sdWUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhp''@;'; put 'put ''cyl9LHVlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSx1ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuYWRkKHgpO3JldHVybiBO''@;'; put 'put ''LmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOLl9mb3JjZVJlZCh0aGlzKX0sdWUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYix4KXt0aGlzLl92ZXJpZnkyKGIseCk7dmFyIE49Yi5pYWRkKHgpO3JldHVybiBOLmNtcCh0aGlzLm0pPj0wJiZOLmlzdWIodGhpcy5tKSxOfSx1ZS5w''@;'; put 'put ''cm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgpO3ZhciBOPWIuc3ViKHgpO3JldHVybiBOLmNtcG4oMCk8MCYmTi5pYWRkKHRoaXMubSksTi5fZm9yY2VSZWQodGhpcyl9LHVlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIseCl7dGhpcy5fdmVyaWZ5MihiLHgp''@;'; put 'put ''O3ZhciBOPWIuaXN1Yih4KTtyZXR1cm4gTi5jbXBuKDApPDAmJk4uaWFkZCh0aGlzLm0pLE59LHVlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYix4KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbih4KSl9LHVlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIseCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYix4KSx0aGlzLmltb2QoYi5pbXVsKHgpKX0sdWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLHgpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIseCksdGhpcy5pbW9kKGIubXVsKHgpKX0sdWUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW11bChiLGIuY2xvbmUoKSl9LHVlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LHVlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgeD10aGlzLm0uYW5kbG4oMyk7aWYodih4JTI9''@;'; put 'put ''PTEpLDM9PT14KXt2YXIgTj10aGlzLm0uYWRkKG5ldyBIKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsTil9Zm9yKHZhciBGPXRoaXMubS5zdWJuKDEpLGc9MDshRi5pc1plcm8oKSYmMD09PUYuYW5kbG4oMSk7KWcrKyxGLml1c2hybigxKTt2KCFGLmlzWmVybygpKTt2YXIgQz1u''@;'; put 'put ''ZXcgSCgxKS50b1JlZCh0aGlzKSxNPUMucmVkTmVnKCkseT10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IEgoMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLHkpLmNtcChNKTspcC5yZWRJQWRkKE0pO2Zvcih2YXIgUz10aGlz''@;'; put 'put ''LnBvdyhwLEYpLFE9dGhpcy5wb3coYixGLmFkZG4oMSkuaXVzaHJuKDEpKSxyZT10aGlzLnBvdyhiLEYpLGZlPWc7MCE9PXJlLmNtcChDKTspe2Zvcih2YXIgbWU9cmUsa2U9MDswIT09bWUuY21wKEMpO2tlKyspbWU9bWUucmVkU3FyKCk7dihrZTxmZSk7dmFyIFRlPXRoaXMucG93KFMsbmV3''@;'; put 'put ''IEgoMSkuaXVzaGxuKGZlLWtlLTEpKTtRPVEucmVkTXVsKFRlKSxTPVRlLnJlZFNxcigpLHJlPXJlLnJlZE11bChTKSxmZT1rZX1yZXR1cm4gUX0sdWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIHg9Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PXgubmVnYXRpdmU/KHgubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzLmltb2QoeCkucmVkTmVnKCkpOnRoaXMuaW1vZCh4KX0sdWUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLHgpe2lmKHguaXNaZXJvKCkpcmV0dXJuIG5ldyBIKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT14LmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgRj1uZXcgQXJy''@;'; put 'put ''YXkoMTYpO0ZbMF09bmV3IEgoMSkudG9SZWQodGhpcyksRlsxXT1iO2Zvcih2YXIgZz0yO2c8Ri5sZW5ndGg7ZysrKUZbZ109dGhpcy5tdWwoRltnLTFdLGIpO3ZhciBDPUZbMF0sTT0wLHk9MCxwPXguYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz14Lmxlbmd0aC0xO2c+PTA7''@;'; put 'put ''Zy0tKXtmb3IodmFyIFM9eC53b3Jkc1tnXSxRPXAtMTtRPj0wO1EtLSl7dmFyIHJlPVM+PlEmMTtDIT09RlswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT1yZXx8MCE9PU0/KE08PD0xLE18PXJlLCg0PT0rK3l8fDA9PT1nJiYwPT09USkmJihDPXRoaXMubXVsKEMsRltNXSkseT0wLE09MCkpOnk9''@;'; put 'put ''MH1wPTI2fXJldHVybiBDfSx1ZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3ZhciB4PWIudW1vZCh0aGlzLm0pO3JldHVybiB4PT09Yj94LmNsb25lKCk6eH0sdWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciB4PWIuY2xvbmUoKTtyZXR1cm4geC5yZWQ9''@;'; put 'put ''bnVsbCx4fSxILm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBjZShiKX0saGUoY2UsdWUpLGNlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sY2UucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3ZhciB4PXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4geC5yZWQ9bnVsbCx4fSxjZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLHgpe2lmKGIuaXNaZXJvKCl8fHguaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIE49Yi5pbXVsKHgpLEY9''@;'; put 'put ''Ti5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1OLmlzdWIoRikuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQo''@;'; put 'put ''dGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGNlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYix4KXtpZihiLmlzWmVybygpfHx4LmlzWmVybygpKXJldHVybiBuZXcgSCgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIE49Yi5tdWwoeCksRj1OLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1p''@;'; put 'put ''bnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPU4uaXN1YihGKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sY2Uu''@;'; put 'put ''cHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oV2U9VC5ubWQoV2UpLHRoaXMpfSw4NTI1MjooV2UsemUsVCk9Pnt2YXIgc2U9VCg4Nzk4Myksaz1UKDE2NTE3KSx2PVQoMjE4''@;'; put 'put ''MTcpLGhlPVQoNDgyMTEpLEg9VCg3MTk0NiksQj1UKDk2MzYyKSxMPVQoNzA3MzUpLEs9VCg4NDMpLkJ1ZmZlcjtXZS5leHBvcnRzPWZ1bmN0aW9uKHosaixWKXt2YXIgRztHPXoucGFkZGluZz96LnBhZGRpbmc6Vj8xOjQ7dmFyIHEsVz1zZSh6KSxVPVcubW9kdWx1cy5ieXRlTGVuZ3RoKCk7''@;'; put 'put ''aWYoai5sZW5ndGg+VXx8bmV3IGhlKGopLmNtcChXLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3E9Vj9MKG5ldyBoZShqKSxXKTpIKGosVyk7dmFyIHRlPUsuYWxsb2MoVS1xLmxlbmd0aCk7aWYocT1LLmNvbmNhdChbdGUscV0sVSksND09PUcpcmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uIEooRSx6KXt2YXIgaj1FLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLFY9Qigic2hhMSIpLnVwZGF0ZShLLmFsbG9jKDApKS5kaWdlc3QoKSxHPVYubGVuZ3RoO2lmKDAhPT16WzBdKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3ZhciBXPXouc2xpY2UoMSxH''@;'; put 'put ''KzEpLFU9ei5zbGljZShHKzEpLHE9dihXLGsoVSxHKSksdGU9dihVLGsocSxqLUctMSkpO2lmKGZ1bmN0aW9uIFIoRSx6KXtFPUsuZnJvbShFKSx6PUsuZnJvbSh6KTt2YXIgaj0wLFY9RS5sZW5ndGg7RS5sZW5ndGghPT16Lmxlbmd0aCYmKGorKyxWPU1hdGgubWluKEUubGVuZ3RoLHoubGVu''@;'; put 'put ''Z3RoKSk7Zm9yKHZhciBHPS0xOysrRzxWOylqKz1FW0ddXnpbR107cmV0dXJuIGp9KFYsdGUuc2xpY2UoMCxHKSkpdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7Zm9yKHZhciBuZT1HOzA9PT10ZVtuZV07KW5lKys7aWYoMSE9PXRlW25lKytdKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''ZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiB0ZS5zbGljZShuZSl9KFcscSk7aWYoMT09PUcpcmV0dXJuIGZ1bmN0aW9uIEkoRSx6LGope2Zvcih2YXIgVj16LnNsaWNlKDAsMiksRz0yLFc9MDswIT09eltHKytdOylpZihHPj16Lmxlbmd0aCl7VysrO2JyZWFrfXZhciBVPXouc2xpY2UoMixH''@;'; put 'put ''LTEpO2lmKCgiMDAwMiIhPT1WLnRvU3RyaW5nKCJoZXgiKSYmIWp8fCIwMDAxIiE9PVYudG9TdHJpbmcoImhleCIpJiZqKSYmVysrLFUubGVuZ3RoPDgmJlcrKyxXKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3JldHVybiB6LnNsaWNlKEcpfSgwLHEsVik7aWYoMz09PUcp''@;'; put 'put ''cmV0dXJuIHE7dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKX19LDQ1NzM3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg3OTgzKSxrPVQoNDQwMTkpLHY9VCg5NjM2MiksaGU9VCgxNjUxNyksSD1UKDIxODE3KSxCPVQoNDgyMTEpLEw9VCg3MDczNSksSz1UKDcxOTQ2KSxKPVQoODQz''@;'; put 'put ''KS5CdWZmZXI7V2UuZXhwb3J0cz1mdW5jdGlvbihqLFYsRyl7dmFyIFc7Vz1qLnBhZGRpbmc/ai5wYWRkaW5nOkc/MTo0O3ZhciBxLFU9c2Uoaik7aWYoND09PVcpcT1mdW5jdGlvbiBJKHosail7dmFyIFY9ei5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxHPWoubGVuZ3RoLFc9digic2hhMSIpLnVw''@;'; put 'put ''ZGF0ZShKLmFsbG9jKDApKS5kaWdlc3QoKSxVPVcubGVuZ3RoLHE9MipVO2lmKEc+Vi1xLTIpdGhyb3cgbmV3IEVycm9yKCJtZXNzYWdlIHRvbyBsb25nIik7dmFyIHRlPUouYWxsb2MoVi1HLXEtMiksbmU9Vi1VLTEsaWU9ayhVKSxsZT1IKEouY29uY2F0KFtXLHRlLEouYWxsb2MoMSwxKSxq''@;'; put 'put ''XSxuZSksaGUoaWUsbmUpKSxkZT1IKGllLGhlKGxlLFUpKTtyZXR1cm4gbmV3IEIoSi5jb25jYXQoW0ouYWxsb2MoMSksZGUsbGVdLFYpKX0oVSxWKTtlbHNlIGlmKDE9PT1XKXE9ZnVuY3Rpb24gUih6LGosVil7dmFyIFUsRz1qLmxlbmd0aCxXPXoubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYo''@;'; put 'put ''Rz5XLTExKXRocm93IG5ldyBFcnJvcigibWVzc2FnZSB0b28gbG9uZyIpO3JldHVybiBVPVY/Si5hbGxvYyhXLUctMywyNTUpOmZ1bmN0aW9uIEUoeil7Zm9yKHZhciBVLGo9Si5hbGxvY1Vuc2FmZSh6KSxWPTAsRz1rKDIqeiksVz0wO1Y8ejspVz09PUcubGVuZ3RoJiYoRz1rKDIqeiksVz0w''@;'; put 'put ''KSwoVT1HW1crK10pJiYoaltWKytdPVUpO3JldHVybiBqfShXLUctMyksbmV3IEIoSi5jb25jYXQoW0ouZnJvbShbMCxWPzE6Ml0pLFUsSi5hbGxvYygxKSxqXSxXKSl9KFUsVixHKTtlbHNle2lmKDMhPT1XKXRocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIik7aWYoKHE9bmV3IEIo''@;'; put 'put ''VikpLmNtcChVLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcigiZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1cyIpfXJldHVybiBHP0socSxVKTpMKHEsVSl9fSw3MDczNTooV2UsemUsVCk9Pnt2YXIgc2U9VCg0ODIxMSksaz1UKDg0MykuQnVmZmVyO1dlLmV4cG9ydHM9ZnVuY3Rpb24gdiho''@;'; put 'put ''ZSxIKXtyZXR1cm4gay5mcm9tKGhlLnRvUmVkKHNlLm1vbnQoSC5tb2R1bHVzKSkucmVkUG93KG5ldyBzZShILnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpLnRvQXJyYXkoKSl9fSwyMTgxNzpXZT0+e1dlLmV4cG9ydHM9ZnVuY3Rpb24oVCxzZSl7Zm9yKHZhciBrPVQubGVuZ3RoLHY9LTE7''@;'; put 'put ''Kyt2PGs7KVRbdl1ePXNlW3ZdO3JldHVybiBUfX0sNDQwMTk6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBoZT1UKDg0MykuQnVmZmVyLEg9Z2xvYmFsLmNyeXB0b3x8Z2xvYmFsLm1zQ3J5cHRvO1dlLmV4cG9ydHM9SCYmSC5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24gQihMLEspe2lm''@;'; put 'put ''KEw+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBKPWhlLmFsbG9jVW5zYWZlKEwpO2lmKEw+MClpZihMPjY1NTM2KWZvcih2YXIgST0wO0k8TDtJKz02NTUzNilILmdldFJhbmRvbVZhbHVlcyhKLnNsaWNlKEks''@;'; put 'put ''SSs2NTUzNikpO2Vsc2UgSC5nZXRSYW5kb21WYWx1ZXMoSik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEs/cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe0sobnVsbCxKKX0pOkp9OmZ1bmN0aW9uIHYoKXt0aHJvdyBuZXcgRXJyb3IoIlNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRp''@;'; put 'put ''b24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9fSw2MTIzNzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gc2UoKXt0aHJvdyBuZXcgRXJyb3IoInNlY3VyZSByYW5kb20gbnVt''@;'; put 'put ''YmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcbnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX12YXIgaz1UKDg0Myksdj1UKDQ0MDE5KSxoZT1rLkJ1ZmZlcixIPWsua01heExlbmd0aCxCPWdsb2JhbC5jcnlwdG98fGdsb2Jh''@;'; put 'put ''bC5tc0NyeXB0byxMPU1hdGgucG93KDIsMzIpLTE7ZnVuY3Rpb24gSyh6LGope2lmKCJudW1iZXIiIT10eXBlb2Ygenx8eiE9eil0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIG51bWJlciIpO2lmKHo+THx8ejwwKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0''@;'; put 'put ''IGJlIGEgdWludDMyIik7aWYoej5IfHx6PmopdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBKKHosaixWKXtpZigibnVtYmVyIiE9dHlwZW9mIHp8fHohPXopdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYo''@;'; put 'put ''ej5MfHx6PDApdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgdWludDMyIik7aWYoeitqPlZ8fHo+SCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnVmZmVyIHRvbyBzbWFsbCIpfWZ1bmN0aW9uIFIoeixqLFYsRyl7aWYocHJvY2Vzcy5icm93c2VyKXt2YXIgVT1uZXcgVWludDhB''@;'; put 'put ''cnJheSh6LmJ1ZmZlcixqLFYpO3JldHVybiBCLmdldFJhbmRvbVZhbHVlcyhVKSxHP3ZvaWQgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe0cobnVsbCx6KX0pOnp9aWYoIUcpcmV0dXJuIHYoVikuY29weSh6LGopLHo7dihWLGZ1bmN0aW9uKHRlLG5lKXtpZih0ZSlyZXR1cm4gRyh0ZSk7''@;'; put 'put ''bmUuY29weSh6LGopLEcobnVsbCx6KX0pfUImJkIuZ2V0UmFuZG9tVmFsdWVzfHwhcHJvY2Vzcy5icm93c2VyPyh6ZS5yYW5kb21GaWxsPWZ1bmN0aW9uIEkoeixqLFYsRyl7aWYoIShoZS5pc0J1ZmZlcih6KXx8eiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgailHPWosaj0wLFY9ei5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgVilHPVYsVj16Lmxlbmd0aC1qO2Vsc2UgaWYoImZ1bmN0aW9uIiE9''@;'; put 'put ''dHlwZW9mIEcpdGhyb3cgbmV3IFR5cGVFcnJvcignImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gSyhqLHoubGVuZ3RoKSxKKFYsaix6Lmxlbmd0aCksUih6LGosVixHKX0semUucmFuZG9tRmlsbFN5bmM9ZnVuY3Rpb24gRSh6LGosVil7aWYodHlwZW9mIGo+InUi''@;'; put 'put ''JiYoaj0wKSwhKGhlLmlzQnVmZmVyKHopfHx6IGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpO3JldHVybiBLKGosei5sZW5ndGgpLHZvaWQgMD09PVYmJihWPXou''@;'; put 'put ''bGVuZ3RoLWopLEooVixqLHoubGVuZ3RoKSxSKHosaixWKX0pOih6ZS5yYW5kb21GaWxsPXNlLHplLnJhbmRvbUZpbGxTeW5jPXNlKX0sOTcyMTg6V2U9PnsidXNlIHN0cmljdCI7dmFyIFQ9e307ZnVuY3Rpb24gc2UoQixMLEspe0t8fChLPUVycm9yKTt2YXIgST1mdW5jdGlvbihSKXtmdW5j''@;'; put 'put ''dGlvbiBFKHosaixWKXtyZXR1cm4gUi5jYWxsKHRoaXMsZnVuY3Rpb24gSihSLEUseil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBMP0w6TChSLEUseil9KHosaixWKSl8fHRoaXN9cmV0dXJuIGZ1bmN0aW9uIHplKEIsTCl7Qi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShMLnByb3RvdHlwZSks''@;'; put 'put ''Qi5wcm90b3R5cGUuY29uc3RydWN0b3I9QixCLl9fcHJvdG9fXz1MfShFLFIpLEV9KEspO0kucHJvdG90eXBlLm5hbWU9Sy5uYW1lLEkucHJvdG90eXBlLmNvZGU9QixUW0JdPUl9ZnVuY3Rpb24gayhCLEwpe2lmKEFycmF5LmlzQXJyYXkoQikpe3ZhciBLPUIubGVuZ3RoO3JldHVybiBCPUIu''@;'; put 'put ''bWFwKGZ1bmN0aW9uKEope3JldHVybiBTdHJpbmcoSil9KSxLPjI/Im9uZSBvZiAiLmNvbmNhdChMLCIgIikuY29uY2F0KEIuc2xpY2UoMCxLLTEpLmpvaW4oIiwgIiksIiwgb3IgIikrQltLLTFdOjI9PT1LPyJvbmUgb2YgIi5jb25jYXQoTCwiICIpLmNvbmNhdChCWzBdLCIgb3IgIikuY29u''@;'; put 'put ''Y2F0KEJbMV0pOiJvZiAiLmNvbmNhdChMLCIgIikuY29uY2F0KEJbMF0pfXJldHVybiJvZiAiLmNvbmNhdChMLCIgIikuY29uY2F0KFN0cmluZyhCKSl9c2UoIkVSUl9JTlZBTElEX09QVF9WQUxVRSIsZnVuY3Rpb24oQixMKXtyZXR1cm4nVGhlIHZhbHVlICInK0wrJyIgaXMgaW52YWxpZCBm''@;'; put 'put ''b3Igb3B0aW9uICInK0IrJyInfSxUeXBlRXJyb3IpLHNlKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oQixMLEspe3ZhciBKLEk7aWYoInN0cmluZyI9PXR5cGVvZiBMJiZmdW5jdGlvbiB2KEIsTCxLKXtyZXR1cm4gQi5zdWJzdHIoIUt8fEs8MD8wOitLLEwubGVuZ3RoKT09PUx9''@;'; put 'put ''KEwsIm5vdCAiKT8oSj0ibXVzdCBub3QgYmUiLEw9TC5yZXBsYWNlKC9ebm90IC8sIiIpKTpKPSJtdXN0IGJlIixmdW5jdGlvbiBoZShCLEwsSyl7cmV0dXJuKHZvaWQgMD09PUt8fEs+Qi5sZW5ndGgpJiYoSz1CLmxlbmd0aCksQi5zdWJzdHJpbmcoSy1MLmxlbmd0aCxLKT09PUx9KEIsIiBh''@;'; put 'put ''cmd1bWVudCIpKUk9IlRoZSAiLmNvbmNhdChCLCIgIikuY29uY2F0KEosIiAiKS5jb25jYXQoayhMLCJ0eXBlIikpO2Vsc2V7dmFyIFI9ZnVuY3Rpb24gSChCLEwsSyl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBLJiYoSz0wKSwhKEsrTC5sZW5ndGg+Qi5sZW5ndGgpJiYtMSE9PUIuaW5kZXhP''@;'; put 'put ''ZihMLEspfShCLCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO0k9J1RoZSAiJy5jb25jYXQoQiwnIiAnKS5jb25jYXQoUiwiICIpLmNvbmNhdChKLCIgIikuY29uY2F0KGsoTCwidHlwZSIpKX1yZXR1cm4gSSsiLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5cGVvZiBLKX0sVHlwZUVycm9y''@;'; put 'put ''KSxzZSgiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIiksc2UoIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIixmdW5jdGlvbihCKXtyZXR1cm4iVGhlICIrQisiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQifSksc2UoIkVSUl9TVFJFQU1f''@;'; put 'put ''UFJFTUFUVVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3NlIiksc2UoIkVSUl9TVFJFQU1fREVTVFJPWUVEIixmdW5jdGlvbihCKXtyZXR1cm4iQ2Fubm90IGNhbGwgIitCKyIgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCJ9KSxzZSgiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiQ2FsbGJh''@;'; put 'put ''Y2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzIiksc2UoIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIiksc2UoIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EIiwid3JpdGUgYWZ0ZXIgZW5kIiksc2UoIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJN''@;'; put 'put ''YXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbSIsVHlwZUVycm9yKSxzZSgiRVJSX1VOS05PV05fRU5DT0RJTkciLGZ1bmN0aW9uKEIpe3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK0J9LFR5cGVFcnJvciksc2UoIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQi''@;'; put 'put ''LCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpLFdlLmV4cG9ydHMucT1UfSw3MDI0NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPU9iamVjdC5rZXlzfHxmdW5jdGlvbihJKXt2YXIgUj1bXTtmb3IodmFyIEUgaW4gSSlSLnB1c2goRSk7cmV0dXJuIFJ9O1dlLmV4''@;'; put 'put ''cG9ydHM9TDt2YXIgaz1UKDgwMzA5KSx2PVQoNTY1NjMpO1QoNjY2OTgpKEwsayk7Zm9yKHZhciBoZT1zZSh2LnByb3RvdHlwZSksSD0wO0g8aGUubGVuZ3RoO0grKyl7dmFyIEI9aGVbSF07TC5wcm90b3R5cGVbQl18fChMLnByb3RvdHlwZVtCXT12LnByb3RvdHlwZVtCXSl9ZnVuY3Rpb24g''@;'; put 'put ''TChJKXtpZighKHRoaXMgaW5zdGFuY2VvZiBMKSlyZXR1cm4gbmV3IEwoSSk7ay5jYWxsKHRoaXMsSSksdi5jYWxsKHRoaXMsSSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLEkmJighMT09PUkucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PUkud3JpdGFibGUmJih0aGlzLndyaXRh''@;'; put 'put ''YmxlPSExKSwhMT09PUkuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoImVuZCIsSykpKX1mdW5jdGlvbiBLKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8cHJvY2Vzcy5uZXh0VGljayhKLHRoaXMpfWZ1bmN0aW9uIEooSSl7SS5lbmQoKX1PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsIndy''@;'; put 'put ''aXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTC5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVy''@;'; put 'put ''YWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEwucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJs''@;'; put 'put ''ZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihSKXt2b2lkIDA9PT10aGlzLl9yZWFkYWJsZVN0YXRlfHx2b2lkIDA9PT10aGlzLl93cml0''@;'; put 'put ''YWJsZVN0YXRlfHwodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9Uix0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1SKX19KX0sOTUwOTY6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO1dlLmV4cG9ydHM9azt2YXIgc2U9VCgxNjMwNyk7ZnVuY3Rpb24gayh2KXtpZighKHRoaXMg''@;'; put 'put ''aW5zdGFuY2VvZiBrKSlyZXR1cm4gbmV3IGsodik7c2UuY2FsbCh0aGlzLHYpfVQoNjY2OTgpKGssc2UpLGsucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odixoZSxIKXtIKG51bGwsdil9fSw4MDMwOTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlO1dlLmV4cG9ydHM9WSxZ''@;'; put 'put ''LlJlYWRhYmxlU3RhdGU9Y2UsVCg4MjAxNik7dmFyIEksdj1mdW5jdGlvbihRZSxtdCl7cmV0dXJuIFFlLmxpc3RlbmVycyhtdCkubGVuZ3RofSxoZT1UKDc4MjQwKSxIPVQoMzkwMDcpLkJ1ZmZlcixCPSh0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93''@;'; put 'put ''OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9KS5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sSj1UKDk0NjE2KTtJPUomJkouZGVidWdsb2c/Si5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciB0ZSxuZSxpZSxSPVQoMjk2MCksRT1UKDY1NjAxKSxqPVQoNzg3ODIpLmdldEhpZ2hX''@;'; put 'put ''YXRlck1hcmssVj1UKDk3MjE4KS5xLEc9Vi5FUlJfSU5WQUxJRF9BUkdfVFlQRSxXPVYuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixVPVYuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQscT1WLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7VCg2NjY5OCkoWSxoZSk7dmFy''@;'; put 'put ''IGxlPUUuZXJyb3JPckRlc3Ryb3ksZGU9WyJlcnJvciIsImNsb3NlIiwiZGVzdHJveSIsInBhdXNlIiwicmVzdW1lIl07ZnVuY3Rpb24gY2UoSGUsUWUsbXQpe3NlPXNlfHxUKDcwMjQ3KSwiYm9vbGVhbiIhPXR5cGVvZiBtdCYmKG10PVFlIGluc3RhbmNlb2Ygc2UpLHRoaXMub2JqZWN0TW9k''@;'; put 'put ''ZT0hIShIZT1IZXx8e30pLm9iamVjdE1vZGUsbXQmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIUhlLnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWoodGhpcyxIZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIixtdCksdGhpcy5idWZmZXI9bmV3IFIs''@;'; put 'put ''dGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFk''@;'; put 'put ''YWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09SGUuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFIZS5hdXRvRGVzdHJveSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRl''@;'; put 'put ''ZmF1bHRFbmNvZGluZz1IZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxIZS5lbmNvZGluZyYmKHRlfHwodGU9VCg3MjAyNCkucyksdGhpcy5kZWNvZGVyPW5l''@;'; put 'put ''dyB0ZShIZS5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1IZS5lbmNvZGluZyl9ZnVuY3Rpb24gWShIZSl7aWYoc2U9c2V8fFQoNzAyNDcpLCEodGhpcyBpbnN0YW5jZW9mIFkpKXJldHVybiBuZXcgWShIZSk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgY2UoSGUsdGhpcyx0aGlzIGluc3RhbmNl''@;'; put 'put ''b2Ygc2UpLHRoaXMucmVhZGFibGU9ITAsSGUmJigiZnVuY3Rpb24iPT10eXBlb2YgSGUucmVhZCYmKHRoaXMuX3JlYWQ9SGUucmVhZCksImZ1bmN0aW9uIj09dHlwZW9mIEhlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PUhlLmRlc3Ryb3kpKSxoZS5jYWxsKHRoaXMpfWZ1bmN0aW9uIGIoSGUs''@;'; put 'put ''UWUsbXQsS2Usd2Upe0koInJlYWRhYmxlQWRkQ2h1bmsiLFFlKTt2YXIgT2UsSWU9SGUuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PVFlKUllLnJlYWRpbmc9ITEsZnVuY3Rpb24gTShIZSxRZSl7aWYoSSgib25Fb2ZDaHVuayIpLCFRZS5lbmRlZCl7aWYoUWUuZGVjb2Rlcil7dmFyIG10PVFl''@;'; put 'put ''LmRlY29kZXIuZW5kKCk7bXQmJm10Lmxlbmd0aCYmKFFlLmJ1ZmZlci5wdXNoKG10KSxRZS5sZW5ndGgrPVFlLm9iamVjdE1vZGU/MTptdC5sZW5ndGgpfVFlLmVuZGVkPSEwLFFlLnN5bmM/eShIZSk6KFFlLm5lZWRSZWFkYWJsZT0hMSxRZS5lbWl0dGVkUmVhZGFibGV8fChRZS5lbWl0dGVk''@;'; put 'put ''UmVhZGFibGU9ITAscChIZSkpKX19KEhlLEllKTtlbHNlIGlmKHdlfHwoT2U9ZnVuY3Rpb24gTihIZSxRZSl7dmFyIG10O3JldHVybiFmdW5jdGlvbiBLKEhlKXtyZXR1cm4gSC5pc0J1ZmZlcihIZSl8fEhlIGluc3RhbmNlb2YgQn0oUWUpJiYic3RyaW5nIiE9dHlwZW9mIFFlJiZ2b2lkIDAh''@;'; put 'put ''PT1RZSYmIUhlLm9iamVjdE1vZGUmJihtdD1uZXcgRygiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIiwiVWludDhBcnJheSJdLFFlKSksbXR9KEllLFFlKSksT2UpbGUoSGUsT2UpO2Vsc2UgaWYoSWUub2JqZWN0TW9kZXx8UWUmJlFlLmxlbmd0aD4wKWlmKCJzdHJpbmciIT10eXBlb2YgUWUm''@;'; put 'put ''JiFJZS5vYmplY3RNb2RlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoUWUpIT09SC5wcm90b3R5cGUmJihRZT1mdW5jdGlvbiBMKEhlKXtyZXR1cm4gSC5mcm9tKEhlKX0oUWUpKSxLZSlJZS5lbmRFbWl0dGVkP2xlKEhlLG5ldyBxKTp4KEhlLEllLFFlLCEwKTtlbHNlIGlmKEllLmVuZGVkKWxl''@;'; put 'put ''KEhlLG5ldyBXKTtlbHNle2lmKEllLmRlc3Ryb3llZClyZXR1cm4hMTtJZS5yZWFkaW5nPSExLEllLmRlY29kZXImJiFtdD8oUWU9SWUuZGVjb2Rlci53cml0ZShRZSksSWUub2JqZWN0TW9kZXx8MCE9PVFlLmxlbmd0aD94KEhlLEllLFFlLCExKTpTKEhlLEllKSk6eChIZSxJZSxRZSwhMSl9''@;'; put 'put ''ZWxzZSBLZXx8KEllLnJlYWRpbmc9ITEsUyhIZSxJZSkpO3JldHVybiFJZS5lbmRlZCYmKEllLmxlbmd0aDxJZS5oaWdoV2F0ZXJNYXJrfHwwPT09SWUubGVuZ3RoKX1mdW5jdGlvbiB4KEhlLFFlLG10LEtlKXtRZS5mbG93aW5nJiYwPT09UWUubGVuZ3RoJiYhUWUuc3luYz8oUWUuYXdhaXRE''@;'; put 'put ''cmFpbj0wLEhlLmVtaXQoImRhdGEiLG10KSk6KFFlLmxlbmd0aCs9UWUub2JqZWN0TW9kZT8xOm10Lmxlbmd0aCxLZT9RZS5idWZmZXIudW5zaGlmdChtdCk6UWUuYnVmZmVyLnB1c2gobXQpLFFlLm5lZWRSZWFkYWJsZSYmeShIZSkpLFMoSGUsUWUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShZ''@;'; put 'put ''LnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihRZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMu''@;'; put 'put ''X3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVFlKX19KSxZLnByb3RvdHlwZS5kZXN0cm95PUUuZGVzdHJveSxZLnByb3RvdHlwZS5fdW5kZXN0cm95PUUudW5kZXN0cm95LFkucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKEhlLFFlKXtRZShIZSl9LFkucHJvdG90eXBlLnB1c2g9ZnVuY3Rp''@;'; put 'put ''b24oSGUsUWUpe3ZhciBLZSxtdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBtdC5vYmplY3RNb2RlP0tlPSEwOiJzdHJpbmciPT10eXBlb2YgSGUmJigoUWU9UWV8fG10LmRlZmF1bHRFbmNvZGluZykhPT1tdC5lbmNvZGluZyYmKEhlPUguZnJvbShIZSxRZSksUWU9IiIpLEtlPSEwKSxi''@;'; put 'put ''KHRoaXMsSGUsUWUsITEsS2UpfSxZLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKEhlKXtyZXR1cm4gYih0aGlzLEhlLG51bGwsITAsITEpfSxZLnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxZLnByb3RvdHlw''@;'; put 'put ''ZS5zZXRFbmNvZGluZz1mdW5jdGlvbihIZSl7dGV8fCh0ZT1UKDcyMDI0KS5zKTt2YXIgUWU9bmV3IHRlKEhlKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9UWUsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9y''@;'; put 'put ''KHZhciBtdD10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkLEtlPSIiO251bGwhPT1tdDspS2UrPVFlLndyaXRlKG10LmRhdGEpLG10PW10Lm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1LZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZm''@;'; put 'put ''ZXIucHVzaChLZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9S2UubGVuZ3RoLHRoaXN9O3ZhciBGPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gQyhIZSxRZSl7cmV0dXJuIEhlPD0wfHwwPT09UWUubGVuZ3RoJiZRZS5lbmRlZD8wOlFlLm9iamVjdE1vZGU/MTpIZSE9SGU/UWUuZmxvd2luZyYm''@;'; put 'put ''UWUubGVuZ3RoP1FlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOlFlLmxlbmd0aDooSGU+UWUuaGlnaFdhdGVyTWFyayYmKFFlLmhpZ2hXYXRlck1hcms9ZnVuY3Rpb24gZyhIZSl7cmV0dXJuIEhlPj1GP0hlPUY6KEhlLS0sSGV8PUhlPj4+MSxIZXw9SGU+Pj4yLEhlfD1IZT4+PjQsSGV8PUhl''@;'; put 'put ''Pj4+OCxIZXw9SGU+Pj4xNixIZSsrKSxIZX0oSGUpKSxIZTw9UWUubGVuZ3RoP0hlOlFlLmVuZGVkP1FlLmxlbmd0aDooUWUubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiB5KEhlKXt2YXIgUWU9SGUuX3JlYWRhYmxlU3RhdGU7SSgiZW1pdFJlYWRhYmxlIixRZS5uZWVkUmVhZGFibGUs''@;'; put 'put ''UWUuZW1pdHRlZFJlYWRhYmxlKSxRZS5uZWVkUmVhZGFibGU9ITEsUWUuZW1pdHRlZFJlYWRhYmxlfHwoSSgiZW1pdFJlYWRhYmxlIixRZS5mbG93aW5nKSxRZS5lbWl0dGVkUmVhZGFibGU9ITAscHJvY2Vzcy5uZXh0VGljayhwLEhlKSl9ZnVuY3Rpb24gcChIZSl7dmFyIFFlPUhlLl9yZWFk''@;'; put 'put ''YWJsZVN0YXRlO0koImVtaXRSZWFkYWJsZV8iLFFlLmRlc3Ryb3llZCxRZS5sZW5ndGgsUWUuZW5kZWQpLCFRZS5kZXN0cm95ZWQmJihRZS5sZW5ndGh8fFFlLmVuZGVkKSYmKEhlLmVtaXQoInJlYWRhYmxlIiksUWUuZW1pdHRlZFJlYWRhYmxlPSExKSxRZS5uZWVkUmVhZGFibGU9IVFlLmZs''@;'; put 'put ''b3dpbmcmJiFRZS5lbmRlZCYmUWUubGVuZ3RoPD1RZS5oaWdoV2F0ZXJNYXJrLFBlKEhlKX1mdW5jdGlvbiBTKEhlLFFlKXtRZS5yZWFkaW5nTW9yZXx8KFFlLnJlYWRpbmdNb3JlPSEwLHByb2Nlc3MubmV4dFRpY2soUSxIZSxRZSkpfWZ1bmN0aW9uIFEoSGUsUWUpe2Zvcig7IVFlLnJlYWRp''@;'; put 'put ''bmcmJiFRZS5lbmRlZCYmKFFlLmxlbmd0aDxRZS5oaWdoV2F0ZXJNYXJrfHxRZS5mbG93aW5nJiYwPT09UWUubGVuZ3RoKTspe3ZhciBtdD1RZS5sZW5ndGg7aWYoSSgibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxIZS5yZWFkKDApLG10PT09UWUubGVuZ3RoKWJyZWFrfVFlLnJlYWRpbmdNb3Jl''@;'; put 'put ''PSExfWZ1bmN0aW9uIGZlKEhlKXt2YXIgUWU9SGUuX3JlYWRhYmxlU3RhdGU7UWUucmVhZGFibGVMaXN0ZW5pbmc9SGUubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLFFlLnJlc3VtZVNjaGVkdWxlZCYmIVFlLnBhdXNlZD9RZS5mbG93aW5nPSEwOkhlLmxpc3RlbmVyQ291bnQoImRhdGEi''@;'; put 'put ''KT4wJiZIZS5yZXN1bWUoKX1mdW5jdGlvbiBtZShIZSl7SSgicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksSGUucmVhZCgwKX1mdW5jdGlvbiBUZShIZSxRZSl7SSgicmVzdW1lIixRZS5yZWFkaW5nKSxRZS5yZWFkaW5nfHxIZS5yZWFkKDApLFFlLnJlc3VtZVNjaGVkdWxlZD0hMSxIZS5l''@;'; put 'put ''bWl0KCJyZXN1bWUiKSxQZShIZSksUWUuZmxvd2luZyYmIVFlLnJlYWRpbmcmJkhlLnJlYWQoMCl9ZnVuY3Rpb24gUGUoSGUpe3ZhciBRZT1IZS5fcmVhZGFibGVTdGF0ZTtmb3IoSSgiZmxvdyIsUWUuZmxvd2luZyk7UWUuZmxvd2luZyYmbnVsbCE9PUhlLnJlYWQoKTspO31mdW5jdGlvbiBG''@;'; put 'put ''ZShIZSxRZSl7cmV0dXJuIDA9PT1RZS5sZW5ndGg/bnVsbDooUWUub2JqZWN0TW9kZT9tdD1RZS5idWZmZXIuc2hpZnQoKTohSGV8fEhlPj1RZS5sZW5ndGg/KG10PVFlLmRlY29kZXI/UWUuYnVmZmVyLmpvaW4oIiIpOjE9PT1RZS5idWZmZXIubGVuZ3RoP1FlLmJ1ZmZlci5maXJzdCgpOlFl''@;'; put 'put ''LmJ1ZmZlci5jb25jYXQoUWUubGVuZ3RoKSxRZS5idWZmZXIuY2xlYXIoKSk6bXQ9UWUuYnVmZmVyLmNvbnN1bWUoSGUsUWUuZGVjb2RlciksbXQpO3ZhciBtdH1mdW5jdGlvbiBOZShIZSl7dmFyIFFlPUhlLl9yZWFkYWJsZVN0YXRlO0koImVuZFJlYWRhYmxlIixRZS5lbmRFbWl0dGVkKSxR''@;'; put 'put ''ZS5lbmRFbWl0dGVkfHwoUWUuZW5kZWQ9ITAscHJvY2Vzcy5uZXh0VGljayhMZSxRZSxIZSkpfWZ1bmN0aW9uIExlKEhlLFFlKXtpZihJKCJlbmRSZWFkYWJsZU5UIixIZS5lbmRFbWl0dGVkLEhlLmxlbmd0aCksIUhlLmVuZEVtaXR0ZWQmJjA9PT1IZS5sZW5ndGgmJihIZS5lbmRFbWl0dGVk''@;'; put 'put ''PSEwLFFlLnJlYWRhYmxlPSExLFFlLmVtaXQoImVuZCIpLEhlLmF1dG9EZXN0cm95KSl7dmFyIG10PVFlLl93cml0YWJsZVN0YXRlOyghbXR8fG10LmF1dG9EZXN0cm95JiZtdC5maW5pc2hlZCkmJlFlLmRlc3Ryb3koKX19ZnVuY3Rpb24gQmUoSGUsUWUpe2Zvcih2YXIgbXQ9MCxLZT1IZS5s''@;'; put 'put ''ZW5ndGg7bXQ8S2U7bXQrKylpZihIZVttdF09PT1RZSlyZXR1cm4gbXQ7cmV0dXJuLTF9WS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihIZSl7SSgicmVhZCIsSGUpLEhlPXBhcnNlSW50KEhlLDEwKTt2YXIgUWU9dGhpcy5fcmVhZGFibGVTdGF0ZSxtdD1IZTtpZigwIT09SGUmJihRZS5lbWl0''@;'; put 'put ''dGVkUmVhZGFibGU9ITEpLDA9PT1IZSYmUWUubmVlZFJlYWRhYmxlJiYoKDAhPT1RZS5oaWdoV2F0ZXJNYXJrP1FlLmxlbmd0aD49UWUuaGlnaFdhdGVyTWFyazpRZS5sZW5ndGg+MCl8fFFlLmVuZGVkKSlyZXR1cm4gSSgicmVhZDogZW1pdFJlYWRhYmxlIixRZS5sZW5ndGgsUWUuZW5kZWQp''@;'; put 'put ''LDA9PT1RZS5sZW5ndGgmJlFlLmVuZGVkP05lKHRoaXMpOnkodGhpcyksbnVsbDtpZigwPT09KEhlPUMoSGUsUWUpKSYmUWUuZW5kZWQpcmV0dXJuIDA9PT1RZS5sZW5ndGgmJk5lKHRoaXMpLG51bGw7dmFyIHdlLEtlPVFlLm5lZWRSZWFkYWJsZTtyZXR1cm4gSSgibmVlZCByZWFkYWJsZSIs''@;'; put 'put ''S2UpLCgwPT09UWUubGVuZ3RofHxRZS5sZW5ndGgtSGU8UWUuaGlnaFdhdGVyTWFyaykmJkkoImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrIixLZT0hMCksUWUuZW5kZWR8fFFlLnJlYWRpbmc/SSgicmVhZGluZyBvciBlbmRlZCIsS2U9ITEpOktlJiYoSSgiZG8gcmVhZCIpLFFlLnJlYWRp''@;'; put 'put ''bmc9ITAsUWUuc3luYz0hMCwwPT09UWUubGVuZ3RoJiYoUWUubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKFFlLmhpZ2hXYXRlck1hcmspLFFlLnN5bmM9ITEsUWUucmVhZGluZ3x8KEhlPUMobXQsUWUpKSksbnVsbD09PSh3ZT1IZT4wP0ZlKEhlLFFlKTpudWxsKT8oUWUubmVlZFJlYWRh''@;'; put 'put ''YmxlPVFlLmxlbmd0aDw9UWUuaGlnaFdhdGVyTWFyayxIZT0wKTooUWUubGVuZ3RoLT1IZSxRZS5hd2FpdERyYWluPTApLDA9PT1RZS5sZW5ndGgmJihRZS5lbmRlZHx8KFFlLm5lZWRSZWFkYWJsZT0hMCksbXQhPT1IZSYmUWUuZW5kZWQmJk5lKHRoaXMpKSxudWxsIT09d2UmJnRoaXMuZW1p''@;'; put 'put ''dCgiZGF0YSIsd2UpLHdlfSxZLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihIZSl7bGUodGhpcyxuZXcgVSgiX3JlYWQoKSIpKX0sWS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihIZSxRZSl7dmFyIG10PXRoaXMsS2U9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2goS2UucGlwZXNDb3VudCl7''@;'; put 'put ''Y2FzZSAwOktlLnBpcGVzPUhlO2JyZWFrO2Nhc2UgMTpLZS5waXBlcz1bS2UucGlwZXMsSGVdO2JyZWFrO2RlZmF1bHQ6S2UucGlwZXMucHVzaChIZSl9S2UucGlwZXNDb3VudCs9MSxJKCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLEtlLnBpcGVzQ291bnQsUWUpO3ZhciBJZT1RZSYmITE9PT1R''@;'; put 'put ''ZS5lbmR8fEhlPT09cHJvY2Vzcy5zdGRvdXR8fEhlPT09cHJvY2Vzcy5zdGRlcnI/Y3Q6ZXQ7ZnVuY3Rpb24gZXQoKXtJKCJvbmVuZCIpLEhlLmVuZCgpfUtlLmVuZEVtaXR0ZWQ/cHJvY2Vzcy5uZXh0VGljayhJZSk6bXQub25jZSgiZW5kIixJZSksSGUub24oInVucGlwZSIsZnVuY3Rpb24g''@;'; put 'put ''T2UoT3QsUHQpe0koIm9udW5waXBlIiksT3Q9PT1tdCYmUHQmJiExPT09UHQuaGFzVW5waXBlZCYmKFB0Lmhhc1VucGlwZWQ9ITAsZnVuY3Rpb24gaHQoKXtJKCJjbGVhbnVwIiksSGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIiwkZSksSGUucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsYXQpLEhl''@;'; put 'put ''LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsbnQpLEhlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsRGUpLEhlLnJlbW92ZUxpc3RlbmVyKCJ1bnBpcGUiLE9lKSxtdC5yZW1vdmVMaXN0ZW5lcigiZW5kIixldCksbXQucmVtb3ZlTGlzdGVuZXIoImVuZCIsY3QpLG10LnJlbW92ZUxpc3RlbmVyKCJk''@;'; put 'put ''YXRhIixFZSkscWU9ITAsS2UuYXdhaXREcmFpbiYmKCFIZS5fd3JpdGFibGVTdGF0ZXx8SGUuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSYmbnQoKX0oKSl9KTt2YXIgbnQ9ZnVuY3Rpb24gcmUoSGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBtdD1IZS5fcmVhZGFibGVTdGF0ZTtJKCJwaXBl''@;'; put 'put ''T25EcmFpbiIsbXQuYXdhaXREcmFpbiksbXQuYXdhaXREcmFpbiYmbXQuYXdhaXREcmFpbi0tLDA9PT1tdC5hd2FpdERyYWluJiZ2KEhlLCJkYXRhIikmJihtdC5mbG93aW5nPSEwLFBlKEhlKSl9fShtdCk7SGUub24oImRyYWluIixudCk7dmFyIHFlPSExO2Z1bmN0aW9uIEVlKE90KXtJKCJv''@;'; put 'put ''bmRhdGEiKTt2YXIgUHQ9SGUud3JpdGUoT3QpO0koImRlc3Qud3JpdGUiLFB0KSwhMT09PVB0JiYoKDE9PT1LZS5waXBlc0NvdW50JiZLZS5waXBlcz09PUhlfHxLZS5waXBlc0NvdW50PjEmJi0xIT09QmUoS2UucGlwZXMsSGUpKSYmIXFlJiYoSSgiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBh''@;'; put 'put ''dXNlIixLZS5hd2FpdERyYWluKSxLZS5hd2FpdERyYWluKyspLG10LnBhdXNlKCkpfWZ1bmN0aW9uIERlKE90KXtJKCJvbmVycm9yIixPdCksY3QoKSxIZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLERlKSwwPT09dihIZSwiZXJyb3IiKSYmbGUoSGUsT3QpfWZ1bmN0aW9uICRlKCl7SGUucmVt''@;'; put 'put ''b3ZlTGlzdGVuZXIoImZpbmlzaCIsYXQpLGN0KCl9ZnVuY3Rpb24gYXQoKXtJKCJvbmZpbmlzaCIpLEhlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsJGUpLGN0KCl9ZnVuY3Rpb24gY3QoKXtJKCJ1bnBpcGUiKSxtdC51bnBpcGUoSGUpfXJldHVybiBtdC5vbigiZGF0YSIsRWUpLGZ1bmN0aW9u''@;'; put 'put ''IHVlKEhlLFFlLG10KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgSGUucHJlcGVuZExpc3RlbmVyKXJldHVybiBIZS5wcmVwZW5kTGlzdGVuZXIoUWUsbXQpO0hlLl9ldmVudHMmJkhlLl9ldmVudHNbUWVdP0FycmF5LmlzQXJyYXkoSGUuX2V2ZW50c1tRZV0pP0hlLl9ldmVudHNbUWVdLnVuc2hp''@;'; put 'put ''ZnQobXQpOkhlLl9ldmVudHNbUWVdPVttdCxIZS5fZXZlbnRzW1FlXV06SGUub24oUWUsbXQpfShIZSwiZXJyb3IiLERlKSxIZS5vbmNlKCJjbG9zZSIsJGUpLEhlLm9uY2UoImZpbmlzaCIsYXQpLEhlLmVtaXQoInBpcGUiLG10KSxLZS5mbG93aW5nfHwoSSgicGlwZSByZXN1bWUiKSxtdC5y''@;'; put 'put ''ZXN1bWUoKSksSGV9LFkucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihIZSl7dmFyIFFlPXRoaXMuX3JlYWRhYmxlU3RhdGUsbXQ9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1RZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1RZS5waXBlc0NvdW50KXJldHVybiBIZSYmSGUhPT1RZS5w''@;'; put 'put ''aXBlc3x8KEhlfHwoSGU9UWUucGlwZXMpLFFlLnBpcGVzPW51bGwsUWUucGlwZXNDb3VudD0wLFFlLmZsb3dpbmc9ITEsSGUmJkhlLmVtaXQoInVucGlwZSIsdGhpcyxtdCkpLHRoaXM7aWYoIUhlKXt2YXIgS2U9UWUucGlwZXMsd2U9UWUucGlwZXNDb3VudDtRZS5waXBlcz1udWxsLFFlLnBp''@;'; put 'put ''cGVzQ291bnQ9MCxRZS5mbG93aW5nPSExO2Zvcih2YXIgSWU9MDtJZTx3ZTtJZSsrKUtlW0llXS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc312YXIgT2U9QmUoUWUucGlwZXMsSGUpO3JldHVybi0xPT09T2V8fChRZS5waXBlcy5zcGxpY2UoT2UsMSks''@;'; put 'put ''UWUucGlwZXNDb3VudC09MSwxPT09UWUucGlwZXNDb3VudCYmKFFlLnBpcGVzPVFlLnBpcGVzWzBdKSxIZS5lbWl0KCJ1bnBpcGUiLHRoaXMsbXQpKSx0aGlzfSxZLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1ZLnByb3RvdHlwZS5vbj1mdW5jdGlvbihIZSxRZSl7dmFyIG10PWhlLnByb3RvdHlw''@;'; put 'put ''ZS5vbi5jYWxsKHRoaXMsSGUsUWUpLEtlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuImRhdGEiPT09SGU/KEtlLnJlYWRhYmxlTGlzdGVuaW5nPXRoaXMubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLCExIT09S2UuZmxvd2luZyYmdGhpcy5yZXN1bWUoKSk6InJlYWRhYmxlIj09PUhl''@;'; put 'put ''JiYhS2UuZW5kRW1pdHRlZCYmIUtlLnJlYWRhYmxlTGlzdGVuaW5nJiYoS2UucmVhZGFibGVMaXN0ZW5pbmc9S2UubmVlZFJlYWRhYmxlPSEwLEtlLmZsb3dpbmc9ITEsS2UuZW1pdHRlZFJlYWRhYmxlPSExLEkoIm9uIHJlYWRhYmxlIixLZS5sZW5ndGgsS2UucmVhZGluZyksS2UubGVuZ3Ro''@;'; put 'put ''P3kodGhpcyk6S2UucmVhZGluZ3x8cHJvY2Vzcy5uZXh0VGljayhtZSx0aGlzKSksbXR9LFkucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKEhlLFFlKXt2YXIgbXQ9aGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxIZSxRZSk7cmV0dXJuInJlYWRhYmxlIj09''@;'; put 'put ''PUhlJiZwcm9jZXNzLm5leHRUaWNrKGZlLHRoaXMpLG10fSxZLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oSGUpe3ZhciBRZT1oZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4oInJlYWRhYmxlIj09PUhlfHx2''@;'; put 'put ''b2lkIDA9PT1IZSkmJnByb2Nlc3MubmV4dFRpY2soZmUsdGhpcyksUWV9LFkucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciBIZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBIZS5mbG93aW5nfHwoSSgicmVzdW1lIiksSGUuZmxvd2luZz0hSGUucmVhZGFibGVMaXN0ZW5pbmcs''@;'; put 'put ''ZnVuY3Rpb24ga2UoSGUsUWUpe1FlLnJlc3VtZVNjaGVkdWxlZHx8KFFlLnJlc3VtZVNjaGVkdWxlZD0hMCxwcm9jZXNzLm5leHRUaWNrKFRlLEhlLFFlKSl9KHRoaXMsSGUpKSxIZS5wYXVzZWQ9ITEsdGhpc30sWS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiY2FsbCBw''@;'; put 'put ''YXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoSSgicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLnBh''@;'; put 'put ''dXNlZD0hMCx0aGlzfSxZLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKEhlKXt2YXIgUWU9dGhpcyxtdD10aGlzLl9yZWFkYWJsZVN0YXRlLEtlPSExO2Zvcih2YXIgd2UgaW4gSGUub24oImVuZCIsZnVuY3Rpb24oKXtpZihJKCJ3cmFwcGVkIGVuZCIpLG10LmRlY29kZXImJiFtdC5lbmRlZCl7''@;'; put 'put ''dmFyIE9lPW10LmRlY29kZXIuZW5kKCk7T2UmJk9lLmxlbmd0aCYmUWUucHVzaChPZSl9UWUucHVzaChudWxsKX0pLEhlLm9uKCJkYXRhIixmdW5jdGlvbihPZSl7SSgid3JhcHBlZCBkYXRhIiksbXQuZGVjb2RlciYmKE9lPW10LmRlY29kZXIud3JpdGUoT2UpKSxtdC5vYmplY3RNb2RlJiZu''@;'; put 'put ''dWxsPT1PZXx8IShtdC5vYmplY3RNb2RlfHxPZSYmT2UubGVuZ3RoKXx8UWUucHVzaChPZSl8fChLZT0hMCxIZS5wYXVzZSgpKX0pLEhlKXZvaWQgMD09PXRoaXNbd2VdJiYiZnVuY3Rpb24iPT10eXBlb2YgSGVbd2VdJiYodGhpc1t3ZV09ZnVuY3Rpb24oZXQpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBIZVtldF0uYXBwbHkoSGUsYXJndW1lbnRzKX19KHdlKSk7Zm9yKHZhciBJZT0wO0llPGRlLmxlbmd0aDtJZSsrKUhlLm9uKGRlW0llXSx0aGlzLmVtaXQuYmluZCh0aGlzLGRlW0llXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKE9lKXtJKCJ3cmFwcGVkIF9yZWFkIixP''@;'; put 'put ''ZSksS2UmJihLZT0hMSxIZS5yZXN1bWUoKSl9LHRoaXN9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihZLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09bmUmJihuZT1UKDEwNDU3KSksbmUodGhpcyl9KSxPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoWS5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWS5wcm90b3R5cGUsInJlYWRhYmxlQnVm''@;'; put 'put ''ZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90eXBlLCJyZWFkYWJsZUZsb3dpbmciLHtlbnVtZXJhYmxlOiExLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbihRZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1RZSl9fSksWS5fZnJvbUxpc3Q9RmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KFkucHJvdG90''@;'; put 'put ''eXBlLCJyZWFkYWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihZLmZyb209ZnVuY3Rpb24oSGUsUWUpe3JldHVybiB2b2lkIDA9PT1pZSYmKGllPVQo''@;'; put 'put ''MzMzMzUpKSxpZShZLEhlLFFlKX0pfSwxNjMwNzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1LO3ZhciBzZT1UKDk3MjE4KS5xLGs9c2UuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsdj1zZS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssaGU9c2UuRVJSX1RSQU5TRk9STV9B''@;'; put 'put ''TFJFQURZX1RSQU5TRk9STUlORyxIPXNlLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCxCPVQoNzAyNDcpO2Z1bmN0aW9uIEwoUixFKXt2YXIgej10aGlzLl90cmFuc2Zvcm1TdGF0ZTt6LnRyYW5zZm9ybWluZz0hMTt2YXIgaj16LndyaXRlY2I7aWYobnVsbD09PWopcmV0dXJuIHRoaXMu''@;'; put 'put ''ZW1pdCgiZXJyb3IiLG5ldyB2KTt6LndyaXRlY2h1bms9bnVsbCx6LndyaXRlY2I9bnVsbCxudWxsIT1FJiZ0aGlzLnB1c2goRSksaihSKTt2YXIgVj10aGlzLl9yZWFkYWJsZVN0YXRlO1YucmVhZGluZz0hMSwoVi5uZWVkUmVhZGFibGV8fFYubGVuZ3RoPFYuaGlnaFdhdGVyTWFyaykmJnRo''@;'; put 'put ''aXMuX3JlYWQoVi5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBLKFIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEspKXJldHVybiBuZXcgSyhSKTtCLmNhbGwodGhpcyxSKSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06TC5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJh''@;'; put 'put ''bnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsUiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBSLnRyYW5zZm9ybSYmKHRo''@;'; put 'put ''aXMuX3RyYW5zZm9ybT1SLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIFIuZmx1c2gmJih0aGlzLl9mbHVzaD1SLmZsdXNoKSksdGhpcy5vbigicHJlZmluaXNoIixKKX1mdW5jdGlvbiBKKCl7dmFyIFI9dGhpczsiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuX3Jl''@;'; put 'put ''YWRhYmxlU3RhdGUuZGVzdHJveWVkP0kodGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKGZ1bmN0aW9uKEUseil7SShSLEUseil9KX1mdW5jdGlvbiBJKFIsRSx6KXtpZihFKXJldHVybiBSLmVtaXQoImVycm9yIixFKTtpZihudWxsIT16JiZSLnB1c2goeiksUi5fd3JpdGFibGVTdGF0ZS5s''@;'; put 'put ''ZW5ndGgpdGhyb3cgbmV3IEg7aWYoUi5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBoZTtyZXR1cm4gUi5wdXNoKG51bGwpfVQoNjY2OTgpKEssQiksSy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihSLEUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJh''@;'; put 'put ''bnNmb3JtPSExLEIucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLFIsRSl9LEsucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oUixFLHope3oobmV3IGsoIl90cmFuc2Zvcm0oKSIpKX0sSy5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKFIsRSx6KXt2YXIgaj10aGlzLl90cmFuc2Zvcm1T''@;'; put 'put ''dGF0ZTtpZihqLndyaXRlY2I9eixqLndyaXRlY2h1bms9UixqLndyaXRlZW5jb2Rpbmc9RSwhai50cmFuc2Zvcm1pbmcpe3ZhciBWPXRoaXMuX3JlYWRhYmxlU3RhdGU7KGoubmVlZFRyYW5zZm9ybXx8Vi5uZWVkUmVhZGFibGV8fFYubGVuZ3RoPFYuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3Jl''@;'; put 'put ''YWQoVi5oaWdoV2F0ZXJNYXJrKX19LEsucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKFIpe3ZhciBFPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGw9PT1FLndyaXRlY2h1bmt8fEUudHJhbnNmb3JtaW5nP0UubmVlZFRyYW5zZm9ybT0hMDooRS50cmFuc2Zvcm1pbmc9ITAsdGhpcy5fdHJhbnNm''@;'; put 'put ''b3JtKEUud3JpdGVjaHVuayxFLndyaXRlZW5jb2RpbmcsRS5hZnRlclRyYW5zZm9ybSkpfSxLLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihSLEUpe0IucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcyxSLGZ1bmN0aW9uKHope0Uoeil9KX19LDU2NTYzOihXZSx6ZSxUKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtmdW5jdGlvbiBrKFBlKXt2YXIgRmU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24gVGUoUGUsRmUsTmUpe3ZhciBMZT1QZS5lbnRyeTtmb3IoUGUuZW50cnk9bnVsbDtMZTspe3ZhciBCZT1MZS5jYWxs''@;'; put 'put ''YmFjaztGZS5wZW5kaW5nY2ItLSxCZShOZSksTGU9TGUubmV4dH1GZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD1QZX0oRmUsUGUpfX12YXIgdjtXZS5leHBvcnRzPWNlLGNlLldyaXRhYmxlU3RhdGU9ZGU7dmFyIHVlLGhlPXtkZXByZWNhdGU6VCg5MDQ5Nil9LEg9VCg3ODI0MCksQj1UKDM5''@;'; put 'put ''MDA3KS5CdWZmZXIsTD0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LEk9VCg2NTYwMSksRT1UKDc4NzgyKS5nZXRIaWdoV2F0ZXJNYXJrLHo9VCg5NzIxOCku''@;'; put 'put ''cSxqPXouRVJSX0lOVkFMSURfQVJHX1RZUEUsVj16LkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEc9ei5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssVz16LkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsVT16LkVSUl9TVFJFQU1fREVTVFJPWUVELHE9ei5FUlJfU1RSRUFNX05VTExfVkFMVUVTLHRl''@;'; put 'put ''PXouRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsbmU9ei5FUlJfVU5LTk9XTl9FTkNPRElORyxpZT1JLmVycm9yT3JEZXN0cm95O2Z1bmN0aW9uIGxlKCl7fWZ1bmN0aW9uIGRlKFBlLEZlLE5lKXt2PXZ8fFQoNzAyNDcpLCJib29sZWFuIiE9dHlwZW9mIE5lJiYoTmU9RmUgaW5zdGFuY2Vv''@;'; put 'put ''ZiB2KSx0aGlzLm9iamVjdE1vZGU9ISEoUGU9UGV8fHt9KS5vYmplY3RNb2RlLE5lJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFQZS53cml0YWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1FKHRoaXMsUGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsTmUp''@;'; put 'put ''LHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2RlU3RyaW5ncz0hKCExPT09UGUuZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rp''@;'; put 'put ''bmc9UGUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbihCZSl7IWZ1bmN0aW9uIE0oUGUsRmUpe3ZhciBOZT1Q''@;'; put 'put ''ZS5fd3JpdGFibGVTdGF0ZSxMZT1OZS5zeW5jLEJlPU5lLndyaXRlY2I7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEJlKXRocm93IG5ldyBHO2lmKGZ1bmN0aW9uIEMoUGUpe1BlLndyaXRpbmc9ITEsUGUud3JpdGVjYj1udWxsLFBlLmxlbmd0aC09UGUud3JpdGVsZW4sUGUud3JpdGVsZW49MH0o''@;'; put 'put ''TmUpLEZlKSFmdW5jdGlvbiBnKFBlLEZlLE5lLExlLEJlKXstLUZlLnBlbmRpbmdjYixOZT8ocHJvY2Vzcy5uZXh0VGljayhCZSxMZSkscHJvY2Vzcy5uZXh0VGljayhtZSxQZSxGZSksUGUuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGllKFBlLExlKSk6KEJlKExlKSxQZS5fd3Jp''@;'; put 'put ''dGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsaWUoUGUsTGUpLG1lKFBlLEZlKSl9KFBlLE5lLExlLEZlLEJlKTtlbHNle3ZhciBIZT1RKE5lKXx8UGUuZGVzdHJveWVkOyFIZSYmIU5lLmNvcmtlZCYmIU5lLmJ1ZmZlclByb2Nlc3NpbmcmJk5lLmJ1ZmZlcmVkUmVxdWVzdCYmUyhQZSxOZSks''@;'; put 'put ''TGU/cHJvY2Vzcy5uZXh0VGljayh5LFBlLE5lLEhlLEJlKTp5KFBlLE5lLEhlLEJlKX19KEZlLEJlKX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9''@;'; put 'put ''MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09UGUuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFQZS5hdXRvRGVzdHJveSx0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3''@;'; put 'put ''IGsodGhpcyl9ZnVuY3Rpb24gY2UoUGUpe3ZhciBGZT10aGlzIGluc3RhbmNlb2Yodj12fHxUKDcwMjQ3KSk7aWYoIUZlJiYhdWUuY2FsbChjZSx0aGlzKSlyZXR1cm4gbmV3IGNlKFBlKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBkZShQZSx0aGlzLEZlKSx0aGlzLndyaXRhYmxlPSEwLFBl''@;'; put 'put ''JiYoImZ1bmN0aW9uIj09dHlwZW9mIFBlLndyaXRlJiYodGhpcy5fd3JpdGU9UGUud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBQZS53cml0ZXYmJih0aGlzLl93cml0ZXY9UGUud3JpdGV2KSwiZnVuY3Rpb24iPT10eXBlb2YgUGUuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9UGUuZGVzdHJv''@;'; put 'put ''eSksImZ1bmN0aW9uIj09dHlwZW9mIFBlLmZpbmFsJiYodGhpcy5fZmluYWw9UGUuZmluYWwpKSxILmNhbGwodGhpcyl9ZnVuY3Rpb24gRihQZSxGZSxOZSxMZSxCZSxIZSxRZSl7RmUud3JpdGVsZW49TGUsRmUud3JpdGVjYj1RZSxGZS53cml0aW5nPSEwLEZlLnN5bmM9ITAsRmUuZGVzdHJv''@;'; put 'put ''eWVkP0ZlLm9ud3JpdGUobmV3IFUoIndyaXRlIikpOk5lP1BlLl93cml0ZXYoQmUsRmUub253cml0ZSk6UGUuX3dyaXRlKEJlLEhlLEZlLm9ud3JpdGUpLEZlLnN5bmM9ITF9ZnVuY3Rpb24geShQZSxGZSxOZSxMZSl7TmV8fGZ1bmN0aW9uIHAoUGUsRmUpezA9PT1GZS5sZW5ndGgmJkZlLm5l''@;'; put 'put ''ZWREcmFpbiYmKEZlLm5lZWREcmFpbj0hMSxQZS5lbWl0KCJkcmFpbiIpKX0oUGUsRmUpLEZlLnBlbmRpbmdjYi0tLExlKCksbWUoUGUsRmUpfWZ1bmN0aW9uIFMoUGUsRmUpe0ZlLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIE5lPUZlLmJ1ZmZlcmVkUmVxdWVzdDtpZihQZS5fd3JpdGV2JiZO''@;'; put 'put ''ZSYmTmUubmV4dCl7dmFyIEJlPW5ldyBBcnJheShGZS5idWZmZXJlZFJlcXVlc3RDb3VudCksSGU9RmUuY29ya2VkUmVxdWVzdHNGcmVlO0hlLmVudHJ5PU5lO2Zvcih2YXIgUWU9MCxtdD0hMDtOZTspQmVbUWVdPU5lLE5lLmlzQnVmfHwobXQ9ITEpLE5lPU5lLm5leHQsUWUrPTE7QmUuYWxs''@;'; put 'put ''QnVmZmVycz1tdCxGKFBlLEZlLCEwLEZlLmxlbmd0aCxCZSwiIixIZS5maW5pc2gpLEZlLnBlbmRpbmdjYisrLEZlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxIZS5uZXh0PyhGZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9SGUubmV4dCxIZS5uZXh0PW51bGwpOkZlLmNvcmtlZFJlcXVlc3RzRnJl''@;'; put 'put ''ZT1uZXcgayhGZSksRmUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7TmU7KXt2YXIgS2U9TmUuY2h1bms7aWYoRihQZSxGZSwhMSxGZS5vYmplY3RNb2RlPzE6S2UubGVuZ3RoLEtlLE5lLmVuY29kaW5nLE5lLmNhbGxiYWNrKSxOZT1OZS5uZXh0LEZlLmJ1ZmZlcmVkUmVxdWVz''@;'; put 'put ''dENvdW50LS0sRmUud3JpdGluZylicmVha31udWxsPT09TmUmJihGZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfUZlLmJ1ZmZlcmVkUmVxdWVzdD1OZSxGZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIFEoUGUpe3JldHVybiBQZS5lbmRpbmcmJjA9PT1QZS5sZW5ndGgmJm51bGw9''@;'; put 'put ''PT1QZS5idWZmZXJlZFJlcXVlc3QmJiFQZS5maW5pc2hlZCYmIVBlLndyaXRpbmd9ZnVuY3Rpb24gcmUoUGUsRmUpe1BlLl9maW5hbChmdW5jdGlvbihOZSl7RmUucGVuZGluZ2NiLS0sTmUmJmllKFBlLE5lKSxGZS5wcmVmaW5pc2hlZD0hMCxQZS5lbWl0KCJwcmVmaW5pc2giKSxtZShQZSxG''@;'; put 'put ''ZSl9KX1mdW5jdGlvbiBtZShQZSxGZSl7dmFyIE5lPVEoRmUpO2lmKE5lJiYoZnVuY3Rpb24gZmUoUGUsRmUpeyFGZS5wcmVmaW5pc2hlZCYmIUZlLmZpbmFsQ2FsbGVkJiYoImZ1bmN0aW9uIiE9dHlwZW9mIFBlLl9maW5hbHx8RmUuZGVzdHJveWVkPyhGZS5wcmVmaW5pc2hlZD0hMCxQZS5l''@;'; put 'put ''bWl0KCJwcmVmaW5pc2giKSk6KEZlLnBlbmRpbmdjYisrLEZlLmZpbmFsQ2FsbGVkPSEwLHByb2Nlc3MubmV4dFRpY2socmUsUGUsRmUpKSl9KFBlLEZlKSwwPT09RmUucGVuZGluZ2NiJiYoRmUuZmluaXNoZWQ9ITAsUGUuZW1pdCgiZmluaXNoIiksRmUuYXV0b0Rlc3Ryb3kpKSl7dmFyIExl''@;'; put 'put ''PVBlLl9yZWFkYWJsZVN0YXRlOyghTGV8fExlLmF1dG9EZXN0cm95JiZMZS5lbmRFbWl0dGVkKSYmUGUuZGVzdHJveSgpfXJldHVybiBOZX1UKDY2Njk4KShjZSxIKSxkZS5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBGZT10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxOZT1b''@;'; put 'put ''XTtGZTspTmUucHVzaChGZSksRmU9RmUubmV4dDtyZXR1cm4gTmV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShkZS5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpoZS5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0''@;'; put 'put ''YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5w''@;'; put 'put ''cm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8odWU9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGNlLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24oRmUpe3JldHVybiEhdWUuY2FsbCh0aGlzLEZlKXx8dGhp''@;'; put 'put ''cz09PWNlJiZGZSYmRmUuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBkZX19KSk6dWU9ZnVuY3Rpb24oRmUpe3JldHVybiBGZSBpbnN0YW5jZW9mIHRoaXN9LGNlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7aWUodGhpcyxuZXcgVyl9LGNlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihQ''@;'; put 'put ''ZSxGZSxOZSl7dmFyIExlPXRoaXMuX3dyaXRhYmxlU3RhdGUsQmU9ITEsSGU9IUxlLm9iamVjdE1vZGUmJmZ1bmN0aW9uIEooUGUpe3JldHVybiBCLmlzQnVmZmVyKFBlKXx8UGUgaW5zdGFuY2VvZiBMfShQZSk7cmV0dXJuIEhlJiYhQi5pc0J1ZmZlcihQZSkmJihQZT1mdW5jdGlvbiBLKFBl''@;'; put 'put ''KXtyZXR1cm4gQi5mcm9tKFBlKX0oUGUpKSwiZnVuY3Rpb24iPT10eXBlb2YgRmUmJihOZT1GZSxGZT1udWxsKSxIZT9GZT0iYnVmZmVyIjpGZXx8KEZlPUxlLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIE5lJiYoTmU9bGUpLExlLmVuZGluZz9mdW5jdGlvbiBZKFBlLEZl''@;'; put 'put ''KXt2YXIgTmU9bmV3IHRlO2llKFBlLE5lKSxwcm9jZXNzLm5leHRUaWNrKEZlLE5lKX0odGhpcyxOZSk6KEhlfHxmdW5jdGlvbiBiKFBlLEZlLE5lLExlKXt2YXIgQmU7cmV0dXJuIG51bGw9PT1OZT9CZT1uZXcgcToic3RyaW5nIiE9dHlwZW9mIE5lJiYhRmUub2JqZWN0TW9kZSYmKEJlPW5l''@;'; put 'put ''dyBqKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiXSxOZSkpLCFCZXx8KGllKFBlLEJlKSxwcm9jZXNzLm5leHRUaWNrKExlLEJlKSwhMSl9KHRoaXMsTGUsUGUsTmUpKSYmKExlLnBlbmRpbmdjYisrLEJlPWZ1bmN0aW9uIE4oUGUsRmUsTmUsTGUsQmUsSGUpe2lmKCFOZSl7dmFyIFFlPWZ1''@;'; put 'put ''bmN0aW9uIHgoUGUsRmUsTmUpe3JldHVybiFQZS5vYmplY3RNb2RlJiYhMSE9PVBlLmRlY29kZVN0cmluZ3MmJiJzdHJpbmciPT10eXBlb2YgRmUmJihGZT1CLmZyb20oRmUsTmUpKSxGZX0oRmUsTGUsQmUpO0xlIT09UWUmJihOZT0hMCxCZT0iYnVmZmVyIixMZT1RZSl9dmFyIG10PUZlLm9i''@;'; put 'put ''amVjdE1vZGU/MTpMZS5sZW5ndGg7RmUubGVuZ3RoKz1tdDt2YXIgS2U9RmUubGVuZ3RoPEZlLmhpZ2hXYXRlck1hcms7aWYoS2V8fChGZS5uZWVkRHJhaW49ITApLEZlLndyaXRpbmd8fEZlLmNvcmtlZCl7dmFyIHdlPUZlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7RmUubGFzdEJ1ZmZlcmVkUmVx''@;'; put 'put ''dWVzdD17Y2h1bms6TGUsZW5jb2Rpbmc6QmUsaXNCdWY6TmUsY2FsbGJhY2s6SGUsbmV4dDpudWxsfSx3ZT93ZS5uZXh0PUZlLmxhc3RCdWZmZXJlZFJlcXVlc3Q6RmUuYnVmZmVyZWRSZXF1ZXN0PUZlLmxhc3RCdWZmZXJlZFJlcXVlc3QsRmUuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxz''@;'; put 'put ''ZSBGKFBlLEZlLCExLG10LExlLEJlLEhlKTtyZXR1cm4gS2V9KHRoaXMsTGUsSGUsUGUsRmUsTmUpKSxCZX0sY2UucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfSxjZS5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIFBlPXRoaXMu''@;'; put 'put ''X3dyaXRhYmxlU3RhdGU7UGUuY29ya2VkJiYoUGUuY29ya2VkLS0sIVBlLndyaXRpbmcmJiFQZS5jb3JrZWQmJiFQZS5idWZmZXJQcm9jZXNzaW5nJiZQZS5idWZmZXJlZFJlcXVlc3QmJlModGhpcyxQZSkpfSxjZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKEZlKXtp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIEZlJiYoRmU9RmUudG9Mb3dlckNhc2UoKSksIShbImhleCIsInV0ZjgiLCJ1dGYtOCIsImFzY2lpIiwiYmluYXJ5IiwiYmFzZTY0IiwidWNzMiIsInVjcy0yIiwidXRmMTZsZSIsInV0Zi0xNmxlIiwicmF3Il0uaW5kZXhPZigoRmUrIiIpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkpPi0xKSl0aHJvdyBuZXcgbmUoRmUpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1GZSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoY2UucHJvdG90eXBlLCJ3cml0YWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGNlLnByb3RvdHlwZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFi''@;'; put 'put ''bGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLGNlLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oUGUsRmUsTmUpe05lKG5ldyBWKCJfd3JpdGUoKSIpKX0sY2UucHJvdG90eXBlLl93cml0ZXY9bnVsbCxjZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKFBlLEZlLE5lKXt2YXIgTGU9dGhpcy5fd3Jp''@;'; put 'put ''dGFibGVTdGF0ZTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgUGU/KE5lPVBlLFBlPW51bGwsRmU9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIEZlJiYoTmU9RmUsRmU9bnVsbCksbnVsbCE9UGUmJnRoaXMud3JpdGUoUGUsRmUpLExlLmNvcmtlZCYmKExlLmNvcmtlZD0xLHRoaXMudW5jb3Jr''@;'; put 'put ''KCkpLExlLmVuZGluZ3x8ZnVuY3Rpb24ga2UoUGUsRmUsTmUpe0ZlLmVuZGluZz0hMCxtZShQZSxGZSksTmUmJihGZS5maW5pc2hlZD9wcm9jZXNzLm5leHRUaWNrKE5lKTpQZS5vbmNlKCJmaW5pc2giLE5lKSksRmUuZW5kZWQ9ITAsUGUud3JpdGFibGU9ITF9KHRoaXMsTGUsTmUpLHRoaXN9''@;'; put 'put ''LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjZS5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGNlLnByb3RvdHlwZSwiZGVzdHJveWVk''@;'; put 'put ''Iix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihGZSl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJv''@;'; put 'put ''eWVkPUZlKX19KSxjZS5wcm90b3R5cGUuZGVzdHJveT1JLmRlc3Ryb3ksY2UucHJvdG90eXBlLl91bmRlc3Ryb3k9SS51bmRlc3Ryb3ksY2UucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFBlLEZlKXtGZShQZSl9fSwxMDQ1NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlO2Z1''@;'; put 'put ''bmN0aW9uIGsodGUsbmUsaWUpe3JldHVybiBuZT1mdW5jdGlvbiB2KHRlKXt2YXIgbmU9ZnVuY3Rpb24gaGUodGUsbmUpe2lmKCJvYmplY3QiIT10eXBlb2YgdGV8fG51bGw9PT10ZSlyZXR1cm4gdGU7dmFyIGllPXRlW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09aWUpe3ZhciBs''@;'; put 'put ''ZT1pZS5jYWxsKHRlLG5lfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgbGUpcmV0dXJuIGxlO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09bmU/U3RyaW5nOk51bWJlciko''@;'; put 'put ''dGUpfSh0ZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBuZT9uZTpTdHJpbmcobmUpfShuZSksbmUgaW4gdGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KHRlLG5lLHt2YWx1ZTppZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRlW25lXT1pZSx0''@;'; put 'put ''ZX12YXIgSD1UKDU0NjE4KSxCPVN5bWJvbCgibGFzdFJlc29sdmUiKSxMPVN5bWJvbCgibGFzdFJlamVjdCIpLEs9U3ltYm9sKCJlcnJvciIpLEo9U3ltYm9sKCJlbmRlZCIpLEk9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLFI9U3ltYm9sKCJoYW5kbGVQcm9taXNlIiksRT1TeW1ib2woInN0cmVh''@;'; put 'put ''bSIpO2Z1bmN0aW9uIHoodGUsbmUpe3JldHVybnt2YWx1ZTp0ZSxkb25lOm5lfX1mdW5jdGlvbiBqKHRlKXt2YXIgbmU9dGVbQl07aWYobnVsbCE9PW5lKXt2YXIgaWU9dGVbRV0ucmVhZCgpO251bGwhPT1pZSYmKHRlW0ldPW51bGwsdGVbQl09bnVsbCx0ZVtMXT1udWxsLG5lKHooaWUsITEp''@;'; put 'put ''KSl9fWZ1bmN0aW9uIFYodGUpe3Byb2Nlc3MubmV4dFRpY2soaix0ZSl9dmFyIFc9T2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uKCl7fSksVT1PYmplY3Quc2V0UHJvdG90eXBlT2YoKGsoc2U9e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1tFXX0sbmV4dDpmdW5jdGlvbigpe3ZhciBu''@;'; put 'put ''ZT10aGlzLGllPXRoaXNbS107aWYobnVsbCE9PWllKXJldHVybiBQcm9taXNlLnJlamVjdChpZSk7aWYodGhpc1tKXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHoodm9pZCAwLCEwKSk7aWYodGhpc1tFXS5kZXN0cm95ZWQpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGNlLFkpe3Byb2Nl''@;'; put 'put ''c3MubmV4dFRpY2soZnVuY3Rpb24oKXtuZVtLXT9ZKG5lW0tdKTpjZSh6KHZvaWQgMCwhMCkpfSl9KTt2YXIgZGUsbGU9dGhpc1tJXTtpZihsZSlkZT1uZXcgUHJvbWlzZShmdW5jdGlvbiBHKHRlLG5lKXtyZXR1cm4gZnVuY3Rpb24oaWUsbGUpe3RlLnRoZW4oZnVuY3Rpb24oKXtuZVtKXT9p''@;'; put 'put ''ZSh6KHZvaWQgMCwhMCkpOm5lW1JdKGllLGxlKX0sbGUpfX0obGUsdGhpcykpO2Vsc2V7dmFyIHVlPXRoaXNbRV0ucmVhZCgpO2lmKG51bGwhPT11ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHoodWUsITEpKTtkZT1uZXcgUHJvbWlzZSh0aGlzW1JdKX1yZXR1cm4gdGhpc1tJXT1kZSxkZX19''@;'; put 'put ''LFN5bWJvbC5hc3luY0l0ZXJhdG9yLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxrKHNlLCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIG5lPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGllLGxlKXtuZVtFXS5kZXN0cm95KG51bGwsZnVuY3Rpb24oZGUpe2RlP2xlKGRlKTppZSh6''@;'; put 'put ''KHZvaWQgMCwhMCkpfSl9KX0pLHNlKSxXKTtXZS5leHBvcnRzPWZ1bmN0aW9uKG5lKXt2YXIgaWUsbGU9T2JqZWN0LmNyZWF0ZShVLChrKGllPXt9LEUse3ZhbHVlOm5lLHdyaXRhYmxlOiEwfSksayhpZSxCLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksayhpZSxMLHt2YWx1ZTpudWxsLHdy''@;'; put 'put ''aXRhYmxlOiEwfSksayhpZSxLLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksayhpZSxKLHt2YWx1ZTpuZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksayhpZSxSLHt2YWx1ZTpmdW5jdGlvbih1ZSxjZSl7dmFyIFk9bGVbRV0ucmVhZCgpO1k/KGxlW0ldPW51bGws''@;'; put 'put ''bGVbQl09bnVsbCxsZVtMXT1udWxsLHVlKHooWSwhMSkpKToobGVbQl09dWUsbGVbTF09Y2UpfSx3cml0YWJsZTohMH0pLGllKSk7cmV0dXJuIGxlW0ldPW51bGwsSChuZSxmdW5jdGlvbihkZSl7aWYoZGUmJiJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIhPT1kZS5jb2RlKXt2YXIgdWU9''@;'; put 'put ''bGVbTF07cmV0dXJuIG51bGwhPT11ZSYmKGxlW0ldPW51bGwsbGVbQl09bnVsbCxsZVtMXT1udWxsLHVlKGRlKSksdm9pZChsZVtLXT1kZSl9dmFyIGNlPWxlW0JdO251bGwhPT1jZSYmKGxlW0ldPW51bGwsbGVbQl09bnVsbCxsZVtMXT1udWxsLGNlKHoodm9pZCAwLCEwKSkpLGxlW0pdPSEw''@;'; put 'put ''fSksbmUub24oInJlYWRhYmxlIixWLmJpbmQobnVsbCxsZSkpLGxlfX0sMjk2MDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gc2UoVixHKXt2YXIgVz1PYmplY3Qua2V5cyhWKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgVT1PYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlTeW1ib2xzKFYpO0cmJihVPVUuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFYscSkuZW51bWVyYWJsZX0pKSxXLnB1c2guYXBwbHkoVyxVKX1yZXR1cm4gV31mdW5jdGlvbiBrKFYpe2Zvcih2YXIgRz0xO0c8YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aDtHKyspe3ZhciBXPW51bGwhPWFyZ3VtZW50c1tHXT9hcmd1bWVudHNbR106e307RyUyP3NlKE9iamVjdChXKSwhMCkuZm9yRWFjaChmdW5jdGlvbihVKXt2KFYsVSxXW1VdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVz''@;'; put 'put ''KFYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoVykpOnNlKE9iamVjdChXKSkuZm9yRWFjaChmdW5jdGlvbihVKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoVixVLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVyxVKSl9KX1yZXR1cm4gVn1mdW5jdGlvbiB2KFYsRyxX''@;'; put 'put ''KXtyZXR1cm4oRz1MKEcpKWluIFY/T2JqZWN0LmRlZmluZVByb3BlcnR5KFYsRyx7dmFsdWU6VyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOlZbR109VyxWfWZ1bmN0aW9uIEgoVixHKXtmb3IodmFyIFc9MDtXPEcubGVuZ3RoO1crKyl7dmFyIFU9R1tXXTtV''@;'; put 'put ''LmVudW1lcmFibGU9VS5lbnVtZXJhYmxlfHwhMSxVLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gVSYmKFUud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWLEwoVS5rZXkpLFUpfX1mdW5jdGlvbiBMKFYpe3ZhciBHPWZ1bmN0aW9uIEsoVixHKXtpZigib2JqZWN0IiE9dHlw''@;'; put 'put ''ZW9mIFZ8fG51bGw9PT1WKXJldHVybiBWO3ZhciBXPVZbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1XKXt2YXIgVT1XLmNhbGwoVixHfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgVSlyZXR1cm4gVTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11''@;'; put 'put ''c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PUc/U3RyaW5nOk51bWJlcikoVil9KFYsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgRz9HOlN0cmluZyhHKX12YXIgST1UKDM5MDA3KS5CdWZmZXIsRT1UKDUyMzYxKS5pbnNwZWN0LHo9RSYm''@;'; put 'put ''RS5jdXN0b218fCJpbnNwZWN0IjtmdW5jdGlvbiBqKFYsRyxXKXtJLnByb3RvdHlwZS5jb3B5LmNhbGwoVixHLFcpfVdlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBWKCl7KGZ1bmN0aW9uIGhlKFYsRyl7aWYoIShWIGluc3RhbmNlb2YgRykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu''@;'; put 'put ''bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLFYpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9cmV0dXJuIGZ1bmN0aW9uIEIoVixHLFcpe0cmJkgoVi5wcm90b3R5cGUsRyksVyYmSChWLFcpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShW''@;'; put 'put ''LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pfShWLFt7a2V5OiJwdXNoIix2YWx1ZTpmdW5jdGlvbihXKXt2YXIgVT17ZGF0YTpXLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1VOnRoaXMuaGVhZD1VLHRoaXMudGFpbD1VLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJ1''@;'; put 'put ''bnNoaWZ0Iix2YWx1ZTpmdW5jdGlvbihXKXt2YXIgVT17ZGF0YTpXLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9VSksdGhpcy5oZWFkPVUsKyt0aGlzLmxlbmd0aH19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7''@;'; put 'put ''dmFyIFc9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIHRoaXMuaGVhZD0xPT09dGhpcy5sZW5ndGg/dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCxXfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxl''@;'; put 'put ''bmd0aD0wfX0se2tleToiam9pbiIsdmFsdWU6ZnVuY3Rpb24oVyl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIgVT10aGlzLmhlYWQscT0iIitVLmRhdGE7VT1VLm5leHQ7KXErPVcrVS5kYXRhO3JldHVybiBxfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihXKXtp''@;'; put 'put ''ZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIEkuYWxsb2MoMCk7Zm9yKHZhciBVPUkuYWxsb2NVbnNhZmUoVz4+PjApLHE9dGhpcy5oZWFkLHRlPTA7cTspaihxLmRhdGEsVSx0ZSksdGUrPXEuZGF0YS5sZW5ndGgscT1xLm5leHQ7cmV0dXJuIFV9fSx7a2V5OiJjb25zdW1lIix2YWx1ZTpmdW5j''@;'; put 'put ''dGlvbihXLFUpe3ZhciBxO3JldHVybiBXPHRoaXMuaGVhZC5kYXRhLmxlbmd0aD8ocT10aGlzLmhlYWQuZGF0YS5zbGljZSgwLFcpLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKFcpKTpxPVc9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOlU/dGhpcy5f''@;'; put 'put ''Z2V0U3RyaW5nKFcpOnRoaXMuX2dldEJ1ZmZlcihXKSxxfX0se2tleToiZmlyc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVhZC5kYXRhfX0se2tleToiX2dldFN0cmluZyIsdmFsdWU6ZnVuY3Rpb24oVyl7dmFyIFU9dGhpcy5oZWFkLHE9MSx0ZT1VLmRhdGE7Zm9yKFctPXRl''@;'; put 'put ''Lmxlbmd0aDtVPVUubmV4dDspe3ZhciBuZT1VLmRhdGEsaWU9Vz5uZS5sZW5ndGg/bmUubGVuZ3RoOlc7aWYodGUrPWllPT09bmUubGVuZ3RoP25lOm5lLnNsaWNlKDAsVyksMD09KFctPWllKSl7aWU9PT1uZS5sZW5ndGg/KCsrcSx0aGlzLmhlYWQ9VS5uZXh0P1UubmV4dDp0aGlzLnRhaWw9''@;'; put 'put ''bnVsbCk6KHRoaXMuaGVhZD1VLFUuZGF0YT1uZS5zbGljZShpZSkpO2JyZWFrfSsrcX1yZXR1cm4gdGhpcy5sZW5ndGgtPXEsdGV9fSx7a2V5OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihXKXt2YXIgVT1JLmFsbG9jVW5zYWZlKFcpLHE9dGhpcy5oZWFkLHRlPTE7Zm9yKHEuZGF0YS5j''@;'; put 'put ''b3B5KFUpLFctPXEuZGF0YS5sZW5ndGg7cT1xLm5leHQ7KXt2YXIgbmU9cS5kYXRhLGllPVc+bmUubGVuZ3RoP25lLmxlbmd0aDpXO2lmKG5lLmNvcHkoVSxVLmxlbmd0aC1XLDAsaWUpLDA9PShXLT1pZSkpe2llPT09bmUubGVuZ3RoPygrK3RlLHRoaXMuaGVhZD1xLm5leHQ/cS5uZXh0OnRo''@;'; put 'put ''aXMudGFpbD1udWxsKToodGhpcy5oZWFkPXEscS5kYXRhPW5lLnNsaWNlKGllKSk7YnJlYWt9Kyt0ZX1yZXR1cm4gdGhpcy5sZW5ndGgtPXRlLFV9fSx7a2V5OnosdmFsdWU6ZnVuY3Rpb24oVyxVKXtyZXR1cm4gRSh0aGlzLGsoayh7fSxVKSx7fSx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OiEx''@;'; put 'put ''fSkpfX1dKSxWfSgpfSw2NTYwMTpXZT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBUKEgsQil7dihILEIpLHNlKEgpfWZ1bmN0aW9uIHNlKEgpe0guX3dyaXRhYmxlU3RhdGUmJiFILl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8SC5fcmVhZGFibGVTdGF0ZSYmIUguX3JlYWRhYmxlU3RhdGUu''@;'; put 'put ''ZW1pdENsb3NlfHxILmVtaXQoImNsb3NlIil9ZnVuY3Rpb24gdihILEIpe0guZW1pdCgiZXJyb3IiLEIpfVdlLmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24gemUoSCxCKXt2YXIgTD10aGlzO3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3ll''@;'; put 'put ''ZHx8dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ/KEI/QihIKTpIJiYodGhpcy5fd3JpdGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZHx8KHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHByb2Nlc3Mu''@;'; put 'put ''bmV4dFRpY2sodix0aGlzLEgpKTpwcm9jZXNzLm5leHRUaWNrKHYsdGhpcyxIKSksdGhpcyk6KHRoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEw''@;'; put 'put ''KSx0aGlzLl9kZXN0cm95KEh8fG51bGwsZnVuY3Rpb24oSSl7IUImJkk/TC5fd3JpdGFibGVTdGF0ZT9MLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9wcm9jZXNzLm5leHRUaWNrKHNlLEwpOihMLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxwcm9jZXNzLm5leHRUaWNrKFQs''@;'; put 'put ''TCxJKSk6cHJvY2Vzcy5uZXh0VGljayhULEwsSSk6Qj8ocHJvY2Vzcy5uZXh0VGljayhzZSxMKSxCKEkpKTpwcm9jZXNzLm5leHRUaWNrKHNlLEwpfSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbiBrKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJv''@;'; put 'put ''eWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dy''@;'; put 'put ''aXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFi''@;'; put 'put ''bGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfSxlcnJvck9yRGVzdHJveTpmdW5jdGlvbiBoZShILEIpe3ZhciBMPUguX3JlYWRhYmxlU3RhdGUsSz1ILl93cml0YWJsZVN0YXRlO0wmJkwuYXV0b0Rlc3Ryb3l8fEsmJksuYXV0b0Rlc3Ryb3k/SC5kZXN0cm95KEIpOkguZW1pdCgiZXJyb3IiLEIp''@;'; put 'put ''fX19LDU0NjE4OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg5NzIxOCkucS5FUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtmdW5jdGlvbiB2KCl7fVdlLmV4cG9ydHM9ZnVuY3Rpb24gSChCLEwsSyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEwpcmV0dXJuIEgoQixudWxsLEwp''@;'; put 'put ''O0x8fChMPXt9KSxLPWZ1bmN0aW9uIGsoQil7dmFyIEw9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIUwpe0w9ITA7Zm9yKHZhciBLPWFyZ3VtZW50cy5sZW5ndGgsSj1uZXcgQXJyYXkoSyksST0wO0k8SztJKyspSltJXT1hcmd1bWVudHNbSV07Qi5hcHBseSh0aGlzLEopfX19KEt8fHYpO3Zh''@;'; put 'put ''ciBKPUwucmVhZGFibGV8fCExIT09TC5yZWFkYWJsZSYmQi5yZWFkYWJsZSxJPUwud3JpdGFibGV8fCExIT09TC53cml0YWJsZSYmQi53cml0YWJsZSxSPWZ1bmN0aW9uKCl7Qi53cml0YWJsZXx8eigpfSxFPUIuX3dyaXRhYmxlU3RhdGUmJkIuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsej1m''@;'; put 'put ''dW5jdGlvbigpe0k9ITEsRT0hMCxKfHxLLmNhbGwoQil9LGo9Qi5fcmVhZGFibGVTdGF0ZSYmQi5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLFY9ZnVuY3Rpb24oKXtKPSExLGo9ITAsSXx8Sy5jYWxsKEIpfSxHPWZ1bmN0aW9uKHRlKXtLLmNhbGwoQix0ZSl9LFc9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''dGU7cmV0dXJuIEomJiFqPygoIUIuX3JlYWRhYmxlU3RhdGV8fCFCLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSYmKHRlPW5ldyBzZSksSy5jYWxsKEIsdGUpKTpJJiYhRT8oKCFCLl93cml0YWJsZVN0YXRlfHwhQi5fd3JpdGFibGVTdGF0ZS5lbmRlZCkmJih0ZT1uZXcgc2UpLEsuY2FsbChCLHRl''@;'; put 'put ''KSk6dm9pZCAwfSxVPWZ1bmN0aW9uKCl7Qi5yZXEub24oImZpbmlzaCIseil9O3JldHVybiBmdW5jdGlvbiBoZShCKXtyZXR1cm4gQi5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBCLmFib3J0fShCKT8oQi5vbigiY29tcGxldGUiLHopLEIub24oImFib3J0IixXKSxCLnJlcT9VKCk6''@;'; put 'put ''Qi5vbigicmVxdWVzdCIsVSkpOkkmJiFCLl93cml0YWJsZVN0YXRlJiYoQi5vbigiZW5kIixSKSxCLm9uKCJjbG9zZSIsUikpLEIub24oImVuZCIsViksQi5vbigiZmluaXNoIix6KSwhMSE9PUwuZXJyb3ImJkIub24oImVycm9yIixHKSxCLm9uKCJjbG9zZSIsVyksZnVuY3Rpb24oKXtCLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyKCJjb21wbGV0ZSIseiksQi5yZW1vdmVMaXN0ZW5lcigiYWJvcnQiLFcpLEIucmVtb3ZlTGlzdGVuZXIoInJlcXVlc3QiLFUpLEIucmVxJiZCLnJlcS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIix6KSxCLnJlbW92ZUxpc3RlbmVyKCJlbmQiLFIpLEIucmVtb3ZlTGlzdGVu''@;'; put 'put ''ZXIoImNsb3NlIixSKSxCLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLHopLEIucmVtb3ZlTGlzdGVuZXIoImVuZCIsViksQi5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEcpLEIucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixXKX19fSwzMzMzNTpXZT0+e1dlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlJlYWRhYmxlLmZyb20gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnJvd3NlciIpfX0sODQ1MTQ6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZSx2PVQoOTcyMTgpLnEsaGU9di5FUlJfTUlTU0lOR19BUkdTLEg9di5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5j''@;'; put 'put ''dGlvbiBCKHope2lmKHopdGhyb3cgen1mdW5jdGlvbiBKKHope3ooKX1mdW5jdGlvbiBJKHosail7cmV0dXJuIHoucGlwZShqKX1XZS5leHBvcnRzPWZ1bmN0aW9uIEUoKXtmb3IodmFyIHo9YXJndW1lbnRzLmxlbmd0aCxqPW5ldyBBcnJheSh6KSxWPTA7Vjx6O1YrKylqW1ZdPWFyZ3VtZW50''@;'; put 'put ''c1tWXTt2YXIgRz1mdW5jdGlvbiBSKHope3JldHVybiB6Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHpbei5sZW5ndGgtMV0/ei5wb3AoKTpCfShqKTtpZihBcnJheS5pc0FycmF5KGpbMF0pJiYoaj1qWzBdKSxqLmxlbmd0aDwyKXRocm93IG5ldyBoZSgic3RyZWFtcyIpO3ZhciBXLFU9''@;'; put 'put ''ai5tYXAoZnVuY3Rpb24ocSx0ZSl7dmFyIG5lPXRlPGoubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uIEsoeixqLFYsRyl7Rz1mdW5jdGlvbiBrKHope3ZhciBqPSExO3JldHVybiBmdW5jdGlvbigpe2p8fChqPSEwLHouYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0oRyk7dmFyIFc9ITE7ei5v''@;'; put 'put ''bigiY2xvc2UiLGZ1bmN0aW9uKCl7Vz0hMH0pLHZvaWQgMD09PXNlJiYoc2U9VCg1NDYxOCkpLHNlKHose3JlYWRhYmxlOmosd3JpdGFibGU6Vn0sZnVuY3Rpb24ocSl7aWYocSlyZXR1cm4gRyhxKTtXPSEwLEcoKX0pO3ZhciBVPSExO3JldHVybiBmdW5jdGlvbihxKXtpZighVyYmIVUpe2lm''@;'; put 'put ''KFU9ITAsZnVuY3Rpb24gTCh6KXtyZXR1cm4gei5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB6LmFib3J0fSh6KSlyZXR1cm4gei5hYm9ydCgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB6LmRlc3Ryb3kpcmV0dXJuIHouZGVzdHJveSgpO0cocXx8bmV3IEgoInBpcGUiKSl9fX0ocSxu''@;'; put 'put ''ZSx0ZT4wLGZ1bmN0aW9uKGxlKXtXfHwoVz1sZSksbGUmJlUuZm9yRWFjaChKKSwhbmUmJihVLmZvckVhY2goSiksRyhXKSl9KX0pO3JldHVybiBqLnJlZHVjZShJKX19LDc4NzgyOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg5NzIxOCkucS5FUlJfSU5WQUxJRF9PUFRfVkFM''@;'; put 'put ''VUU7V2UuZXhwb3J0cz17Z2V0SGlnaFdhdGVyTWFyazpmdW5jdGlvbiB2KGhlLEgsQixMKXt2YXIgSz1mdW5jdGlvbiBrKGhlLEgsQil7cmV0dXJuIG51bGwhPWhlLmhpZ2hXYXRlck1hcms/aGUuaGlnaFdhdGVyTWFyazpIP2hlW0JdOm51bGx9KEgsTCxCKTtpZihudWxsIT1LKXtpZighaXNG''@;'; put 'put ''aW5pdGUoSyl8fE1hdGguZmxvb3IoSykhPT1LfHxLPDApdGhyb3cgbmV3IHNlKEw/QjoiaGlnaFdhdGVyTWFyayIsSyk7cmV0dXJuIE1hdGguZmxvb3IoSyl9cmV0dXJuIGhlLm9iamVjdE1vZGU/MTY6MTYzODR9fX0sNzgyNDA6KFdlLHplLFQpPT57V2UuZXhwb3J0cz1UKDgyMDE2KS5FdmVu''@;'; put 'put ''dEVtaXR0ZXJ9LDk2NzQ1OihXZSx6ZSxUKT0+eyh6ZT1XZS5leHBvcnRzPVQoODAzMDkpKS5TdHJlYW09emUsemUuUmVhZGFibGU9emUsemUuV3JpdGFibGU9VCg1NjU2MyksemUuRHVwbGV4PVQoNzAyNDcpLHplLlRyYW5zZm9ybT1UKDE2MzA3KSx6ZS5QYXNzVGhyb3VnaD1UKDk1MDk2KSx6''@;'; put 'put ''ZS5maW5pc2hlZD1UKDU0NjE4KSx6ZS5waXBlbGluZT1UKDg0NTE0KX0sMzk3MDY6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDM5MDA3KS5CdWZmZXIsaz1UKDY2Njk4KSx2PVQoNjAzODApLGhlPW5ldyBBcnJheSgxNiksSD1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwx''@;'; put 'put ''MiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxC''@;'; put 'put ''PVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQs''@;'; put 'put ''MSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLEw9WzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0''@;'; put 'put ''LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdLEs9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2''@;'; put 'put ''LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdLEo9WzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0sST1bMTM1Mjgy''@;'; put 'put ''OTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXTtmdW5jdGlvbiBSKCl7di5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMH1m''@;'; put 'put ''dW5jdGlvbiBFKFUscSl7cmV0dXJuIFU8PHF8VT4+PjMyLXF9ZnVuY3Rpb24geihVLHEsdGUsbmUsaWUsbGUsZGUsdWUpe3JldHVybiBFKFUrKHFedGVebmUpK2xlK2RlfDAsdWUpK2llfDB9ZnVuY3Rpb24gaihVLHEsdGUsbmUsaWUsbGUsZGUsdWUpe3JldHVybiBFKFUrKHEmdGV8fnEmbmUp''@;'; put 'put ''K2xlK2RlfDAsdWUpK2llfDB9ZnVuY3Rpb24gVihVLHEsdGUsbmUsaWUsbGUsZGUsdWUpe3JldHVybiBFKFUrKChxfH50ZSlebmUpK2xlK2RlfDAsdWUpK2llfDB9ZnVuY3Rpb24gRyhVLHEsdGUsbmUsaWUsbGUsZGUsdWUpe3JldHVybiBFKFUrKHEmbmV8dGUmfm5lKStsZStkZXwwLHVlKStp''@;'; put 'put ''ZXwwfWZ1bmN0aW9uIFcoVSxxLHRlLG5lLGllLGxlLGRlLHVlKXtyZXR1cm4gRShVKyhxXih0ZXx+bmUpKStsZStkZXwwLHVlKStpZXwwfWsoUix2KSxSLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBVPWhlLHE9MDtxPDE2OysrcSlVW3FdPXRoaXMuX2Jsb2NrLnJlYWRJ''@;'; put 'put ''bnQzMkxFKDQqcSk7Zm9yKHZhciB0ZT0wfHRoaXMuX2EsbmU9MHx0aGlzLl9iLGllPTB8dGhpcy5fYyxsZT0wfHRoaXMuX2QsZGU9MHx0aGlzLl9lLHVlPTB8dGhpcy5fYSxjZT0wfHRoaXMuX2IsWT0wfHRoaXMuX2MsYj0wfHRoaXMuX2QseD0wfHRoaXMuX2UsTj0wO048ODA7Tis9MSl7dmFy''@;'; put 'put ''IEYsZztOPDE2PyhGPXoodGUsbmUsaWUsbGUsZGUsVVtIW05dXSxKWzBdLExbTl0pLGc9Vyh1ZSxjZSxZLGIseCxVW0JbTl1dLElbMF0sS1tOXSkpOk48MzI/KEY9aih0ZSxuZSxpZSxsZSxkZSxVW0hbTl1dLEpbMV0sTFtOXSksZz1HKHVlLGNlLFksYix4LFVbQltOXV0sSVsxXSxLW05dKSk6''@;'; put 'put ''Tjw0OD8oRj1WKHRlLG5lLGllLGxlLGRlLFVbSFtOXV0sSlsyXSxMW05dKSxnPVYodWUsY2UsWSxiLHgsVVtCW05dXSxJWzJdLEtbTl0pKTpOPDY0PyhGPUcodGUsbmUsaWUsbGUsZGUsVVtIW05dXSxKWzNdLExbTl0pLGc9aih1ZSxjZSxZLGIseCxVW0JbTl1dLElbM10sS1tOXSkpOihGPVco''@;'; put 'put ''dGUsbmUsaWUsbGUsZGUsVVtIW05dXSxKWzRdLExbTl0pLGc9eih1ZSxjZSxZLGIseCxVW0JbTl1dLElbNF0sS1tOXSkpLHRlPWRlLGRlPWxlLGxlPUUoaWUsMTApLGllPW5lLG5lPUYsdWU9eCx4PWIsYj1FKFksMTApLFk9Y2UsY2U9Z312YXIgQz10aGlzLl9iK2llK2J8MDt0aGlzLl9iPXRo''@;'; put 'put ''aXMuX2MrbGUreHwwLHRoaXMuX2M9dGhpcy5fZCtkZSt1ZXwwLHRoaXMuX2Q9dGhpcy5fZSt0ZStjZXwwLHRoaXMuX2U9dGhpcy5fYStuZStZfDAsdGhpcy5fYT1DfSxSLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRo''@;'; put 'put ''aXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUo''@;'; put 'put ''dGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFU9c2UuYWxsb2M/c2UuYWxsb2MoMjApOm5ldyBzZSgyMCk7cmV0dXJuIFUud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksVS53cml0ZUludDMy''@;'; put 'put ''TEUodGhpcy5fYiw0KSxVLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLFUud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLFUud3JpdGVJbnQzMkxFKHRoaXMuX2UsMTYpLFV9LFdlLmV4cG9ydHM9Un0sODQzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM5MDA3KSxrPXNlLkJ1ZmZlcjtmdW5jdGlvbiB2''@;'; put 'put ''KEgsQil7Zm9yKHZhciBMIGluIEgpQltMXT1IW0xdfWZ1bmN0aW9uIGhlKEgsQixMKXtyZXR1cm4gayhILEIsTCl9ay5mcm9tJiZrLmFsbG9jJiZrLmFsbG9jVW5zYWZlJiZrLmFsbG9jVW5zYWZlU2xvdz9XZS5leHBvcnRzPXNlOih2KHNlLHplKSx6ZS5CdWZmZXI9aGUpLGhlLnByb3RvdHlw''@;'; put 'put ''ZT1PYmplY3QuY3JlYXRlKGsucHJvdG90eXBlKSx2KGssaGUpLGhlLmZyb209ZnVuY3Rpb24oSCxCLEwpe2lmKCJudW1iZXIiPT10eXBlb2YgSCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBrKEgsQixMKX0saGUuYWxsb2M9ZnVu''@;'; put 'put ''Y3Rpb24oSCxCLEwpe2lmKCJudW1iZXIiIT10eXBlb2YgSCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7dmFyIEs9ayhIKTtyZXR1cm4gdm9pZCAwIT09Qj8ic3RyaW5nIj09dHlwZW9mIEw/Sy5maWxsKEIsTCk6Sy5maWxsKEIpOksuZmlsbCgwKSxL''@;'; put 'put ''fSxoZS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihIKXtpZigibnVtYmVyIiE9dHlwZW9mIEgpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBrKEgpfSxoZS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oSCl7aWYoIm51bWJlciIhPXR5cGVvZiBI''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gc2UuU2xvd0J1ZmZlcihIKX19LDI0MTc5OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaGUsc2U9VCgzOTAwNyksaz1zZS5CdWZmZXIsdj17fTtmb3IoaGUgaW4gc2Upc2UuaGFzT3du''@;'; put 'put ''UHJvcGVydHkoaGUpJiYoIlNsb3dCdWZmZXIiPT09aGV8fCJCdWZmZXIiPT09aGV8fCh2W2hlXT1zZVtoZV0pKTt2YXIgSD12LkJ1ZmZlcj17fTtmb3IoaGUgaW4gaylrLmhhc093blByb3BlcnR5KGhlKSYmKCJhbGxvY1Vuc2FmZSI9PT1oZXx8ImFsbG9jVW5zYWZlU2xvdyI9PT1oZXx8KEhb''@;'; put 'put ''aGVdPWtbaGVdKSk7aWYodi5CdWZmZXIucHJvdG90eXBlPWsucHJvdG90eXBlLCghSC5mcm9tfHxILmZyb209PT1VaW50OEFycmF5LmZyb20pJiYoSC5mcm9tPWZ1bmN0aW9uKEIsTCxLKXtpZigibnVtYmVyIj09dHlwZW9mIEIpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJn''@;'; put 'put ''dW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgQik7aWYoQiYmdHlwZW9mIEIubGVuZ3RoPiJ1Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJy''@;'; put 'put ''YXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBCKTtyZXR1cm4gayhCLEwsSyl9KSxILmFsbG9jfHwoSC5hbGxvYz1mdW5jdGlvbihCLEwsSyl7aWYoIm51bWJlciIhPXR5cGVvZiBCKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAi''@;'; put 'put ''c2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBCKTtpZihCPDB8fEI+PTIqKDE8PDMwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0IrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO3ZhciBKPWso''@;'; put 'put ''Qik7cmV0dXJuIEwmJjAhPT1MLmxlbmd0aD8ic3RyaW5nIj09dHlwZW9mIEs/Si5maWxsKEwsSyk6Si5maWxsKEwpOkouZmlsbCgwKSxKfSksIXYua1N0cmluZ01heExlbmd0aCl0cnl7di5rU3RyaW5nTWF4TGVuZ3RoPXByb2Nlc3MuYmluZGluZygiYnVmZmVyIikua1N0cmluZ01heExlbmd0''@;'; put 'put ''aH1jYXRjaHt9di5jb25zdGFudHN8fCh2LmNvbnN0YW50cz17TUFYX0xFTkdUSDp2LmtNYXhMZW5ndGh9LHYua1N0cmluZ01heExlbmd0aCYmKHYuY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIPXYua1N0cmluZ01heExlbmd0aCkpLFdlLmV4cG9ydHM9dn0sODg3MDA6KFdlLHplKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgc2U7IWZ1bmN0aW9uKCl7dmFyIGs9emV8fHt9O3ZvaWQgMCE9PShzZT1mdW5jdGlvbigpe3JldHVybiBrfS5hcHBseSh6ZSxbXSkpJiYoV2UuZXhwb3J0cz1zZSksay5kZWZhdWx0PWs7dmFyIHY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIixIPSJodHRw''@;'; put 'put ''Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsTD0vdXJsXChbIiddPyguKz8pWyInXT9cKS8sSz17d29mZjI6ImZvbnQvd29mZjIiLHdvZmY6ImZvbnQvd29mZiIsb3RmOiJhcHBsaWNhdGlvbi94LWZvbnQtb3BlbnR5cGUiLHR0ZjoiYXBwbGljYXRpb24veC1mb250LXR0ZiIsZW90OiJhcHBsaWNh''@;'; put 'put ''dGlvbi92bmQubXMtZm9udG9iamVjdCIsc2ZudDoiYXBwbGljYXRpb24vZm9udC1zZm50Iixzdmc6ImltYWdlL3N2Zyt4bWwifSxKPWZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fHggaW5zdGFuY2VvZiBTVkdFbGVtZW50fSxJPWZ1bmN0aW9uKHgpe2lmKCFK''@;'; put 'put ''KHgpKXRocm93IG5ldyBFcnJvcigiYW4gSFRNTEVsZW1lbnQgb3IgU1ZHRWxlbWVudCBpcyByZXF1aXJlZDsgZ290ICIreCl9LFI9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKE4sRil7Sih4KT9OKHgpOkYobmV3IEVycm9yKCJhbiBIVE1MRWxlbWVudCBvciBTVkdF''@;'; put 'put ''bGVtZW50IGlzIHJlcXVpcmVkOyBnb3QgIit4KSl9KX0sej1mdW5jdGlvbih4KXt2YXIgTj1PYmplY3Qua2V5cyhLKS5maWx0ZXIoZnVuY3Rpb24oRil7cmV0dXJuIHguaW5kZXhPZigiLiIrRik+MH0pLm1hcChmdW5jdGlvbihGKXtyZXR1cm4gS1tGXX0pO3JldHVybiBOP05bMF06KGNvbnNv''@;'; put 'put ''bGUuZXJyb3IoIlVua25vd24gZm9udCBmb3JtYXQgZm9yICIreCsiLiBGb250cyBtYXkgbm90IGJlIHdvcmtpbmcgY29ycmVjdGx5LiIpLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKX0sVj1mdW5jdGlvbih4LE4sRil7dmFyIGc9eC52aWV3Qm94JiZ4LnZpZXdCb3guYmFzZVZhbCYmeC52''@;'; put 'put ''aWV3Qm94LmJhc2VWYWxbRl18fG51bGwhPT1OLmdldEF0dHJpYnV0ZShGKSYmIU4uZ2V0QXR0cmlidXRlKEYpLm1hdGNoKC8lJC8pJiZwYXJzZUludChOLmdldEF0dHJpYnV0ZShGKSl8fHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbRl18fHBhcnNlSW50KE4uc3R5bGVbRl0pfHxwYXJzZUlu''@;'; put 'put ''dCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh4KS5nZXRQcm9wZXJ0eVZhbHVlKEYpKTtyZXR1cm4gdHlwZW9mIGc+InUifHxudWxsPT09Z3x8aXNOYU4ocGFyc2VGbG9hdChnKSk/MDpnfSxVPWZ1bmN0aW9uKHgpe2Zvcih2YXIgTj13aW5kb3cuYXRvYih4LnNwbGl0KCIsIilbMV0pLEY9eC5z''@;'; put 'put ''cGxpdCgiLCIpWzBdLnNwbGl0KCI6IilbMV0uc3BsaXQoIjsiKVswXSxnPW5ldyBBcnJheUJ1ZmZlcihOLmxlbmd0aCksQz1uZXcgVWludDhBcnJheShnKSxNPTA7TTxOLmxlbmd0aDtNKyspQ1tNXT1OLmNoYXJDb2RlQXQoTSk7cmV0dXJuIG5ldyBCbG9iKFtnXSx7dHlwZTpGfSl9LGllPXt9''@;'; put 'put ''LGRlPW51bGwsY2U9ZnVuY3Rpb24oeCxOKXt2YXIgRj1OfHx7fSxnPUYuc2VsZWN0b3JSZW1hcCxDPUYubW9kaWZ5U3R5bGUseT1GLmZvbnRzLHA9Ri5leGNsdWRlVW51c2VkQ3NzLFM9Ri5tb2RpZnlDc3N8fGZ1bmN0aW9uKG1lLGtlKXtyZXR1cm4oZz9nKG1lKTptZSkrInsiKyhDP0Moa2Up''@;'; put 'put ''OmtlKSsifVxuIn0sUT1bXSxyZT10eXBlb2YgeT4idSIsZmU9eXx8W107cmV0dXJuKGRlfHwoZGU9QXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykubWFwKGZ1bmN0aW9uKHgpe3RyeXtyZXR1cm57cnVsZXM6eC5jc3NSdWxlcyxocmVmOnguaHJlZn19Y2F0Y2goTil7cmV0dXJuIGNv''@;'; put 'put ''bnNvbGUud2FybigiU3R5bGVzaGVldCBjb3VsZCBub3QgYmUgbG9hZGVkOiAiK3guaHJlZixOKSx7fX19KSkpLmZvckVhY2goZnVuY3Rpb24obWUpe3ZhciBrZT1tZS5ydWxlcyxUZT1tZS5ocmVmO2tlJiZBcnJheS5mcm9tKGtlKS5mb3JFYWNoKGZ1bmN0aW9uKFBlKXtpZih0eXBlb2YgUGUu''@;'; put 'put ''c3R5bGU8InUiKWlmKGZ1bmN0aW9uKHgsTil7aWYoTil0cnl7cmV0dXJuIHgucXVlcnlTZWxlY3RvcihOKXx8eC5wYXJlbnROb2RlJiZ4LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcihOKX1jYXRjaChGKXtjb25zb2xlLndhcm4oJ0ludmFsaWQgQ1NTIHNlbGVjdG9yICInK04rJyInLEYpfX0o''@;'; put 'put ''eCxQZS5zZWxlY3RvclRleHQpKVEucHVzaChTKFBlLnNlbGVjdG9yVGV4dCxQZS5zdHlsZS5jc3NUZXh0KSk7ZWxzZSBpZihyZSYmUGUuY3NzVGV4dC5tYXRjaCgvXkBmb250LWZhY2UvKSl7dmFyIEZlPWZ1bmN0aW9uKHgsTil7dmFyIEY9eC5jc3NUZXh0Lm1hdGNoKEwpLGc9RiYmRlsxXXx8''@;'; put 'put ''IiI7aWYoZyYmIWcubWF0Y2goL15kYXRhOi8pJiYiYWJvdXQ6YmxhbmsiIT09Zyl7dmFyIEM9Zy5zdGFydHNXaXRoKCIuLi8iKT9OKyIvLi4vIitnOmcuc3RhcnRzV2l0aCgiLi8iKT9OKyIvLiIrZzpnO3JldHVybnt0ZXh0OnguY3NzVGV4dCxmb3JtYXQ6eihDKSx1cmw6Q319fShQZSxUZSk7''@;'; put 'put ''RmUmJmZlLnB1c2goRmUpfWVsc2UgcHx8US5wdXNoKFBlLmNzc1RleHQpfSl9KSxmdW5jdGlvbih4KXtyZXR1cm4gUHJvbWlzZS5hbGwoeC5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEYsZyl7aWYoaWVbTi51cmxdKXJldHVybiBGKGllW04udXJsXSk7dmFy''@;'; put 'put ''IEM9bmV3IFhNTEh0dHBSZXF1ZXN0O0MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXt2YXIgTT1mdW5jdGlvbih4KXtmb3IodmFyIE49IiIsRj1uZXcgVWludDhBcnJheSh4KSxnPTA7ZzxGLmJ5dGVMZW5ndGg7ZysrKU4rPVN0cmluZy5mcm9tQ2hhckNvZGUoRltnXSk7cmV0''@;'; put 'put ''dXJuIHdpbmRvdy5idG9hKE4pfShDLnJlc3BvbnNlKSx5PU4udGV4dC5yZXBsYWNlKEwsJ3VybCgiZGF0YTonK04uZm9ybWF0KyI7YmFzZTY0LCIrTSsnIiknKSsiXG4iO2llW04udXJsXT15LEYoeSl9KSxDLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbihNKXtjb25zb2xlLndh''@;'; put 'put ''cm4oIkZhaWxlZCB0byBsb2FkIGZvbnQgZnJvbTogIitOLnVybCxNKSxpZVtOLnVybF09bnVsbCxGKG51bGwpfSksQy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZnVuY3Rpb24oTSl7Y29uc29sZS53YXJuKCJBYm9ydGVkIGxvYWRpbmcgZm9udCBmcm9tOiAiK04udXJsLE0pLEYobnVsbCl9''@;'; put 'put ''KSxDLm9wZW4oIkdFVCIsTi51cmwpLEMucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsQy5zZW5kKCl9KX0pKS50aGVuKGZ1bmN0aW9uKE4pe3JldHVybiBOLmZpbHRlcihmdW5jdGlvbihGKXtyZXR1cm4gRn0pLmpvaW4oIiIpfSl9KGZlKS50aGVuKGZ1bmN0aW9uKG1lKXtyZXR1cm4gUS5q''@;'; put 'put ''b2luKCJcbiIpK21lfSl9LFk9ZnVuY3Rpb24oKXtpZighbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2ImJiEoImRvd25sb2FkImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSkpcmV0dXJue3BvcHVwOndpbmRvdy5vcGVuKCl9fTtrLnByZXBhcmVTdmc9ZnVuY3Rpb24oYix4LE4pe0ko''@;'; put 'put ''Yik7dmFyIEY9eHx8e30sZz1GLmxlZnQsQz12b2lkIDA9PT1nPzA6ZyxNPUYudG9wLHk9dm9pZCAwPT09TT8wOk0scD1GLndpZHRoLFM9Ri5oZWlnaHQsUT1GLnNjYWxlLHJlPXZvaWQgMD09PVE/MTpRLGZlPUYucmVzcG9uc2l2ZSxtZT12b2lkIDAhPT1mZSYmZmUsa2U9Ri5leGNsdWRlQ3Nz''@;'; put 'put ''LFRlPXZvaWQgMCE9PWtlJiZrZTtyZXR1cm4gZnVuY3Rpb24oeCl7cmV0dXJuIFByb21pc2UuYWxsKEFycmF5LmZyb20oeC5xdWVyeVNlbGVjdG9yQWxsKCJpbWFnZSIpKS5tYXAoZnVuY3Rpb24oTil7dmFyIEY9Ti5nZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu''@;'; put 'put ''ayIsImhyZWYiKXx8Ti5nZXRBdHRyaWJ1dGUoImhyZWYiKTtyZXR1cm4gRj8oZnVuY3Rpb24oeCl7cmV0dXJuIHgmJjA9PT14Lmxhc3RJbmRleE9mKCJodHRwIiwwKSYmLTE9PT14Lmxhc3RJbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0KX0oRikmJihGKz0oLTE9PT1GLmluZGV4T2YoIj8i''@;'; put 'put ''KT8iPyI6IiYiKSsidD0iKyhuZXcgRGF0ZSkudmFsdWVPZigpKSxuZXcgUHJvbWlzZShmdW5jdGlvbihnLEMpe3ZhciBNPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHk9bmV3IEltYWdlO3kuY3Jvc3NPcmlnaW49ImFub255bW91cyIseS5zcmM9Rix5Lm9uZXJyb3I9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gQyhuZXcgRXJyb3IoIkNvdWxkIG5vdCBsb2FkICIrRikpfSx5Lm9ubG9hZD1mdW5jdGlvbigpe00ud2lkdGg9eS53aWR0aCxNLmhlaWdodD15LmhlaWdodCxNLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHksMCwwKSxOLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3''@;'; put 'put ''LnczLm9yZy8xOTk5L3hsaW5rIiwiaHJlZiIsTS50b0RhdGFVUkwoImltYWdlL3BuZyIpKSxnKCEwKX19KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpfSkpfShiKS50aGVuKGZ1bmN0aW9uKCl7dmFyIFBlPWIuY2xvbmVOb2RlKCEwKTtQZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9KHh8fHt9KS5i''@;'; put 'put ''YWNrZ3JvdW5kQ29sb3J8fGIuc3R5bGUuYmFja2dyb3VuZENvbG9yO3ZhciBGZT1mdW5jdGlvbih4LE4sRixnKXtpZigic3ZnIj09PXgudGFnTmFtZSlyZXR1cm57d2lkdGg6Rnx8Vih4LE4sIndpZHRoIiksaGVpZ2h0Omd8fFYoeCxOLCJoZWlnaHQiKX07aWYoeC5nZXRCQm94KXt2YXIgQz14''@;'; put 'put ''LmdldEJCb3goKTtyZXR1cm57d2lkdGg6Qy54K0Mud2lkdGgsaGVpZ2h0OkMueStDLmhlaWdodH19fShiLFBlLHAsUyksTmU9RmUud2lkdGgsTGU9RmUuaGVpZ2h0O2lmKCJzdmciIT09Yi50YWdOYW1lKXtpZighYi5nZXRCQm94KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkF0dGVtcHRl''@;'; put 'put ''ZCB0byByZW5kZXIgbm9uLVNWRyBlbGVtZW50IixiKTtudWxsIT1QZS5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpJiZQZS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsUGUuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKS5yZXBsYWNlKC90cmFuc2xhdGVcKC4qP1wpLywiIikpO3ZhciBCZT1k''@;'; put 'put ''b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIik7QmUuYXBwZW5kQ2hpbGQoUGUpLFBlPUJlfWlmKFBlLnNldEF0dHJpYnV0ZSgidmVyc2lvbiIsIjEuMSIpLFBlLnNldEF0dHJpYnV0ZSgidmlld0JveCIsW0MseSxOZSxMZV0uam9pbigi''@;'; put 'put ''ICIpKSxQZS5nZXRBdHRyaWJ1dGUoInhtbG5zIil8fFBlLnNldEF0dHJpYnV0ZU5TKHYsInhtbG5zIixIKSxQZS5nZXRBdHRyaWJ1dGUoInhtbG5zOnhsaW5rIil8fFBlLnNldEF0dHJpYnV0ZU5TKHYsInhtbG5zOnhsaW5rIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpLG1lPyhQ''@;'; put 'put ''ZS5yZW1vdmVBdHRyaWJ1dGUoIndpZHRoIiksUGUucmVtb3ZlQXR0cmlidXRlKCJoZWlnaHQiKSxQZS5zZXRBdHRyaWJ1dGUoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWluWU1pbiBtZWV0IikpOihQZS5zZXRBdHRyaWJ1dGUoIndpZHRoIixOZSpyZSksUGUuc2V0QXR0cmlidXRlKCJoZWln''@;'; put 'put ''aHQiLExlKnJlKSksQXJyYXkuZnJvbShQZS5xdWVyeVNlbGVjdG9yQWxsKCJmb3JlaWduT2JqZWN0ID4gKiIpKS5mb3JFYWNoKGZ1bmN0aW9uKG10KXttdC5zZXRBdHRyaWJ1dGVOUyh2LCJ4bWxucyIsInN2ZyI9PT1tdC50YWdOYW1lP0g6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi''@;'; put 'put ''KX0pLCFUZSlyZXR1cm4gY2UoYix4KS50aGVuKGZ1bmN0aW9uKG10KXt2YXIgS2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtLZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpLEtlLmlubmVySFRNTD0iPCFbQ0RBVEFbXG4iK210KyJcbl1dPiI7dmFyIHdlPWRvY3Vt''@;'; put 'put ''ZW50LmNyZWF0ZUVsZW1lbnQoImRlZnMiKTt3ZS5hcHBlbmRDaGlsZChLZSksUGUuaW5zZXJ0QmVmb3JlKHdlLFBlLmZpcnN0Q2hpbGQpO3ZhciBJZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtJZS5hcHBlbmRDaGlsZChQZSk7dmFyIE9lPUllLmlubmVySFRNTC5yZXBsYWNlKC9O''@;'; put 'put ''U1xkKzpocmVmL2dpLCd4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZicpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBOKXJldHVybntzcmM6T2Usd2lkdGg6TmUsaGVpZ2h0OkxlfTtOKE9lLE5lLExlKX0pO3ZhciBIZT1kb2N1bWVudC5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJkaXYiKTtIZS5hcHBlbmRDaGlsZChQZSk7dmFyIFFlPUhlLmlubmVySFRNTDtpZigiZnVuY3Rpb24iIT10eXBlb2YgTilyZXR1cm57c3JjOlFlLHdpZHRoOk5lLGhlaWdodDpMZX07TihRZSxOZSxMZSl9KX0say5zdmdBc0RhdGFVcmk9ZnVuY3Rpb24oYix4LE4pe3JldHVybiBJ''@;'; put 'put ''KGIpLGsucHJlcGFyZVN2ZyhiLHgpLnRoZW4oZnVuY3Rpb24oRil7dmFyIEM9Ri53aWR0aCxNPUYuaGVpZ2h0LHk9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsIit3aW5kb3cuYnRvYShmdW5jdGlvbih4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh4''@;'; put 'put ''KS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLGZ1bmN0aW9uKE4sRil7dmFyIGc9U3RyaW5nLmZyb21DaGFyQ29kZSgiMHgiK0YpO3JldHVybiIlIj09PWc/IiUyNSI6Z30pKX0oJzw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ibm8iPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8v''@;'; put 'put ''VzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiIFs8IUVOVElUWSBuYnNwICImIzE2MDsiPl0+JytGLnNyYykpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBOJiZOKHksQyxNKSx5fSl9LGsuc3ZnQXNQbmdVcmk9''@;'; put 'put ''ZnVuY3Rpb24oYix4LE4pe0koYik7dmFyIEY9eHx8e30sZz1GLmVuY29kZXJUeXBlLEM9dm9pZCAwPT09Zz8iaW1hZ2UvcG5nIjpnLE09Ri5lbmNvZGVyT3B0aW9ucyx5PXZvaWQgMD09PU0/Ljg6TSxwPUYuY2FudmcsUz1mdW5jdGlvbihyZSl7dmFyIGZlPXJlLnNyYyxtZT1yZS53aWR0aCxr''@;'; put 'put ''ZT1yZS5oZWlnaHQsVGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksUGU9VGUuZ2V0Q29udGV4dCgiMmQiKSxGZT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MTtUZS53aWR0aD1tZSpGZSxUZS5oZWlnaHQ9a2UqRmUsVGUuc3R5bGUud2lkdGg9VGUud2lkdGgrInB4IixUZS5z''@;'; put 'put ''dHlsZS5oZWlnaHQ9VGUuaGVpZ2h0KyJweCIsUGUuc2V0VHJhbnNmb3JtKEZlLDAsMCxGZSwwLDApLHA/cChUZSxmZSk6UGUuZHJhd0ltYWdlKGZlLDAsMCk7dmFyIE5lPXZvaWQgMDt0cnl7TmU9VGUudG9EYXRhVVJMKEMseSl9Y2F0Y2goTGUpe2lmKHR5cGVvZiBTZWN1cml0eUVycm9yPCJ1''@;'; put 'put ''IiYmTGUgaW5zdGFuY2VvZiBTZWN1cml0eUVycm9yfHwiU2VjdXJpdHlFcnJvciI9PT1MZS5uYW1lKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlJlbmRlcmVkIFNWRyBpbWFnZXMgY2Fubm90IGJlIGRvd25sb2FkZWQgaW4gdGhpcyBicm93c2VyLiIpO3Rocm93IExlfXJldHVybiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBOJiZOKE5lLFRlLndpZHRoLFRlLmhlaWdodCksUHJvbWlzZS5yZXNvbHZlKE5lKX07cmV0dXJuIHA/ay5wcmVwYXJlU3ZnKGIseCkudGhlbihTKTprLnN2Z0FzRGF0YVVyaShiLHgpLnRoZW4oZnVuY3Rpb24oUSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl''@;'; put 'put ''LGZlKXt2YXIgbWU9bmV3IEltYWdlO21lLm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiByZShTKHtzcmM6bWUsd2lkdGg6bWUud2lkdGgsaGVpZ2h0Om1lLmhlaWdodH0pKX0sbWUub25lcnJvcj1mdW5jdGlvbigpe2ZlKCJUaGVyZSB3YXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgZGF0YSBVUkkg''@;'; put 'put ''YXMgYW4gaW1hZ2Ugb24gdGhlIGZvbGxvd2luZyBTVkdcbiIrd2luZG93LmF0b2IoUS5zbGljZSgyNikpKyJPcGVuIHRoZSBmb2xsb3dpbmcgbGluayB0byBzZWUgYnJvd3NlcidzIGRpYWdub3Npc1xuIitRKX0sbWUuc3JjPVF9KX0pfSxrLmRvd25sb2FkPWZ1bmN0aW9uKGIseCxOKXtpZihu''@;'; put 'put ''YXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihVKHgpLGIpO2Vsc2V7dmFyIEY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2lmKCJkb3dubG9hZCJpbiBGKXtGLmRvd25sb2FkPWIsRi5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5i''@;'; put 'put ''b2R5LmFwcGVuZENoaWxkKEYpO3RyeXt2YXIgZz1VKHgpLEM9VVJMLmNyZWF0ZU9iamVjdFVSTChnKTtGLmhyZWY9QyxGLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIFVSTC5yZXZva2VPYmplY3RVUkwoQyl9KX19Y2F0''@;'; put 'put ''Y2goTSl7Y29uc29sZS5lcnJvcihNKSxjb25zb2xlLndhcm4oIkVycm9yIHdoaWxlIGdldHRpbmcgb2JqZWN0IFVSTC4gRmFsbGluZyBiYWNrIHRvIHN0cmluZyBVUkwuIiksRi5ocmVmPXh9Ri5jbGljaygpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoRil9ZWxzZSBOJiZOLnBvcHVwJiYo''@;'; put 'put ''Ti5wb3B1cC5kb2N1bWVudC50aXRsZT1iLE4ucG9wdXAubG9jYXRpb24ucmVwbGFjZSh4KSl9fSxrLnNhdmVTdmc9ZnVuY3Rpb24oYix4LE4pe3ZhciBGPVkoKTtyZXR1cm4gUihiKS50aGVuKGZ1bmN0aW9uKGcpe3JldHVybiBrLnN2Z0FzRGF0YVVyaShnLE58fHt9KX0pLnRoZW4oZnVuY3Rp''@;'; put 'put ''b24oZyl7cmV0dXJuIGsuZG93bmxvYWQoeCxnLEYpfSl9LGsuc2F2ZVN2Z0FzUG5nPWZ1bmN0aW9uKGIseCxOKXt2YXIgRj1ZKCk7cmV0dXJuIFIoYikudGhlbihmdW5jdGlvbihnKXtyZXR1cm4gay5zdmdBc1BuZ1VyaShnLE58fHt9KX0pLnRoZW4oZnVuY3Rpb24oZyl7cmV0dXJuIGsuZG93''@;'; put 'put ''bmxvYWQoeCxnLEYpfSl9fSgpfSw4MzU4MTooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NDMpLkJ1ZmZlcjtmdW5jdGlvbiBrKHYsaGUpe3RoaXMuX2Jsb2NrPXNlLmFsbG9jKHYpLHRoaXMuX2ZpbmFsU2l6ZT1oZSx0aGlzLl9ibG9ja1NpemU9dix0aGlzLl9sZW49MH1rLnByb3RvdHlwZS51cGRh''@;'; put 'put ''dGU9ZnVuY3Rpb24odixoZSl7InN0cmluZyI9PXR5cGVvZiB2JiYodj1zZS5mcm9tKHYsaGU9aGV8fCJ1dGY4IikpO2Zvcih2YXIgSD10aGlzLl9ibG9jayxCPXRoaXMuX2Jsb2NrU2l6ZSxMPXYubGVuZ3RoLEs9dGhpcy5fbGVuLEo9MDtKPEw7KXtmb3IodmFyIEk9SyVCLFI9TWF0aC5taW4o''@;'; put 'put ''TC1KLEItSSksRT0wO0U8UjtFKyspSFtJK0VdPXZbSitFXTtKKz1SLChLKz1SKSVCPT0wJiZ0aGlzLl91cGRhdGUoSCl9cmV0dXJuIHRoaXMuX2xlbis9TCx0aGlzfSxrLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24odil7dmFyIGhlPXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5f''@;'; put 'put ''YmxvY2tbaGVdPTEyOCx0aGlzLl9ibG9jay5maWxsKDAsaGUrMSksaGU+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIEg9OCp0aGlzLl9sZW47aWYoSDw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQz''@;'; put 'put ''MkJFKEgsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIEI9KDQyOTQ5NjcyOTUmSCk+Pj4wO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoKEgtQikvNDI5NDk2NzI5Nix0aGlzLl9ibG9ja1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShCLHRoaXMuX2Jsb2NrU2l6ZS00KX10''@;'; put 'put ''aGlzLl91cGRhdGUodGhpcy5fYmxvY2spO3ZhciBLPXRoaXMuX2hhc2goKTtyZXR1cm4gdj9LLnRvU3RyaW5nKHYpOkt9LGsucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIl91cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcyIpfSxXZS5l''@;'; put 'put ''eHBvcnRzPWt9LDk3OTY1OihXZSx6ZSxUKT0+e3ZhciBzZT1XZS5leHBvcnRzPWZ1bmN0aW9uKHYpe3Y9di50b0xvd2VyQ2FzZSgpO3ZhciBoZT1zZVt2XTtpZighaGUpdGhyb3cgbmV3IEVycm9yKHYrIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cykiKTtyZXR1''@;'; put 'put ''cm4gbmV3IGhlfTtzZS5zaGE9VCg3NzkxNSksc2Uuc2hhMT1UKDEyMjkpLHNlLnNoYTIyND1UKDcyOTU5KSxzZS5zaGEyNTY9VCg1MDQ1MCksc2Uuc2hhMzg0PVQoNjE3MjMpLHNlLnNoYTUxMj1UKDQ3OTE0KX0sNzc5MTU6KFdlLHplLFQpPT57dmFyIHNlPVQoNjY2OTgpLGs9VCg4MzU4MSks''@;'; put 'put ''dj1UKDg0MykuQnVmZmVyLGhlPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0sSD1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIEIoKXt0aGlzLmluaXQoKSx0aGlzLl93PUgsay5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIEwoSSl7cmV0dXJuIEk8PDV8ST4+''@;'; put 'put ''PjI3fWZ1bmN0aW9uIEsoSSl7cmV0dXJuIEk8PDMwfEk+Pj4yfWZ1bmN0aW9uIEooSSxSLEUseil7cmV0dXJuIDA9PT1JP1ImRXx+UiZ6OjI9PT1JP1ImRXxSJnp8RSZ6OlJeRV56fXNlKEIsayksQi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMs''@;'; put 'put ''dGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sQi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihJKXtmb3IodmFyIFI9dGhpcy5fdyxFPTB8dGhpcy5fYSx6PTB8dGhpcy5fYixqPTB8dGhpcy5f''@;'; put 'put ''YyxWPTB8dGhpcy5fZCxHPTB8dGhpcy5fZSxXPTA7VzwxNjsrK1cpUltXXT1JLnJlYWRJbnQzMkJFKDQqVyk7Zm9yKDtXPDgwOysrVylSW1ddPVJbVy0zXV5SW1ctOF1eUltXLTE0XV5SW1ctMTZdO2Zvcih2YXIgVT0wO1U8ODA7KytVKXt2YXIgcT1+fihVLzIwKSx0ZT1MKEUpK0oocSx6LGos''@;'; put 'put ''VikrRytSW1VdK2hlW3FdfDA7Rz1WLFY9aixqPUsoeiksej1FLEU9dGV9dGhpcy5fYT1FK3RoaXMuX2F8MCx0aGlzLl9iPXordGhpcy5fYnwwLHRoaXMuX2M9ait0aGlzLl9jfDAsdGhpcy5fZD1WK3RoaXMuX2R8MCx0aGlzLl9lPUcrdGhpcy5fZXwwfSxCLnByb3RvdHlwZS5faGFzaD1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBJPXYuYWxsb2NVbnNhZmUoMjApO3JldHVybiBJLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksSS53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLEkud3JpdGVJbnQzMkJFKDB8dGhpcy5fYyw4KSxJLndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLEkud3JpdGVJbnQzMkJF''@;'; put 'put ''KDB8dGhpcy5fZSwxNiksSX0sV2UuZXhwb3J0cz1CfSwxMjI5OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2Njk4KSxrPVQoODM1ODEpLHY9VCg4NDMpLkJ1ZmZlcixoZT1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4LC04OTk0OTc1MTRdLEg9bmV3IEFycmF5KDgwKTtmdW5jdGlv''@;'; put 'put ''biBCKCl7dGhpcy5pbml0KCksdGhpcy5fdz1ILGsuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBMKFIpe3JldHVybiBSPDwxfFI+Pj4zMX1mdW5jdGlvbiBLKFIpe3JldHVybiBSPDw1fFI+Pj4yN31mdW5jdGlvbiBKKFIpe3JldHVybiBSPDwzMHxSPj4+Mn1mdW5jdGlvbiBJKFIsRSx6LGop''@;'; put 'put ''e3JldHVybiAwPT09Uj9FJnp8fkUmajoyPT09Uj9FJnp8RSZqfHomajpFXnpean1zZShCLGspLEIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4Nzgs''@;'; put 'put ''dGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oUil7Zm9yKHZhciBFPXRoaXMuX3csej0wfHRoaXMuX2Esaj0wfHRoaXMuX2IsVj0wfHRoaXMuX2MsRz0wfHRoaXMuX2QsVz0wfHRoaXMuX2UsVT0wO1U8MTY7KytVKUVbVV09Ui5yZWFkSW50MzJC''@;'; put 'put ''RSg0KlUpO2Zvcig7VTw4MDsrK1UpRVtVXT1MKEVbVS0zXV5FW1UtOF1eRVtVLTE0XV5FW1UtMTZdKTtmb3IodmFyIHE9MDtxPDgwOysrcSl7dmFyIHRlPX5+KHEvMjApLG5lPUsoeikrSSh0ZSxqLFYsRykrVytFW3FdK2hlW3RlXXwwO1c9RyxHPVYsVj1KKGopLGo9eix6PW5lfXRoaXMuX2E9''@;'; put 'put ''eit0aGlzLl9hfDAsdGhpcy5fYj1qK3RoaXMuX2J8MCx0aGlzLl9jPVYrdGhpcy5fY3wwLHRoaXMuX2Q9Ryt0aGlzLl9kfDAsdGhpcy5fZT1XK3RoaXMuX2V8MH0sQi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgUj12LmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gUi53cml0ZUludDMy''@;'; put 'put ''QkUoMHx0aGlzLl9hLDApLFIud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxSLndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksUi53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEyKSxSLndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLFJ9LFdlLmV4cG9ydHM9Qn0sNzI5NTk6KFdlLHplLFQpPT57''@;'; put 'put ''dmFyIHNlPVQoNjY2OTgpLGs9VCg1MDQ1MCksdj1UKDgzNTgxKSxoZT1UKDg0MykuQnVmZmVyLEg9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBCKCl7dGhpcy5pbml0KCksdGhpcy5fdz1ILHYuY2FsbCh0aGlzLDY0LDU2KX1zZShCLGspLEIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRoaXMuX2I9OTE0MTUwNjYzLHRoaXMuX2M9ODEyNzAyOTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3NjgzOSx0aGlzLl9oPTMyMDQwNzU0MjgsdGhpc30sQi5wcm90''@;'; put 'put ''b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgTD1oZS5hbGxvY1Vuc2FmZSgyOCk7cmV0dXJuIEwud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksTC53cml0ZUludDMyQkUodGhpcy5fYiw0KSxMLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLEwud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLEwud3Jp''@;'; put 'put ''dGVJbnQzMkJFKHRoaXMuX2UsMTYpLEwud3JpdGVJbnQzMkJFKHRoaXMuX2YsMjApLEwud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLEx9LFdlLmV4cG9ydHM9Qn0sNTA0NTA6KFdlLHplLFQpPT57dmFyIHNlPVQoNjY2OTgpLGs9VCg4MzU4MSksdj1UKDg0MykuQnVmZmVyLGhlPVsxMTE2MzUy''@;'; put 'put ''NDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgw''@;'; put 'put ''LDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4''@;'; put 'put ''MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3''@;'; put 'put ''MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4Nywz''@;'; put 'put ''MjA0MDMxNDc5LDMzMjkzMjUyOThdLEg9bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBCKCl7dGhpcy5pbml0KCksdGhpcy5fdz1ILGsuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBMKHosaixWKXtyZXR1cm4gVl56JihqXlYpfWZ1bmN0aW9uIEsoeixqLFYpe3JldHVybiB6Jmp8ViYoenxqKX1m''@;'; put 'put ''dW5jdGlvbiBKKHope3JldHVybih6Pj4+Mnx6PDwzMCleKHo+Pj4xM3x6PDwxOSleKHo+Pj4yMnx6PDwxMCl9ZnVuY3Rpb24gSSh6KXtyZXR1cm4oej4+PjZ8ejw8MjYpXih6Pj4+MTF8ejw8MjEpXih6Pj4+MjV8ejw8Nyl9ZnVuY3Rpb24gUih6KXtyZXR1cm4oej4+Pjd8ejw8MjUpXih6Pj4+''@;'; put 'put ''MTh8ejw8MTQpXno+Pj4zfWZ1bmN0aW9uIEUoeil7cmV0dXJuKHo+Pj4xN3x6PDwxNSleKHo+Pj4xOXx6PDwxMyleej4+PjEwfXNlKEIsayksQi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAx''@;'; put 'put ''MzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkzMTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sQi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih6KXtmb3IodmFyIGo9dGhpcy5fdyxWPTB8dGhp''@;'; put 'put ''cy5fYSxHPTB8dGhpcy5fYixXPTB8dGhpcy5fYyxVPTB8dGhpcy5fZCxxPTB8dGhpcy5fZSx0ZT0wfHRoaXMuX2YsbmU9MHx0aGlzLl9nLGllPTB8dGhpcy5faCxsZT0wO2xlPDE2OysrbGUpaltsZV09ei5yZWFkSW50MzJCRSg0KmxlKTtmb3IoO2xlPDY0OysrbGUpaltsZV09RShqW2xlLTJd''@;'; put 'put ''KStqW2xlLTddK1IoaltsZS0xNV0pK2pbbGUtMTZdfDA7Zm9yKHZhciBkZT0wO2RlPDY0OysrZGUpe3ZhciB1ZT1pZStJKHEpK0wocSx0ZSxuZSkraGVbZGVdK2pbZGVdfDAsY2U9SihWKStLKFYsRyxXKXwwO2llPW5lLG5lPXRlLHRlPXEscT1VK3VlfDAsVT1XLFc9RyxHPVYsVj11ZStjZXww''@;'; put 'put ''fXRoaXMuX2E9Vit0aGlzLl9hfDAsdGhpcy5fYj1HK3RoaXMuX2J8MCx0aGlzLl9jPVcrdGhpcy5fY3wwLHRoaXMuX2Q9VSt0aGlzLl9kfDAsdGhpcy5fZT1xK3RoaXMuX2V8MCx0aGlzLl9mPXRlK3RoaXMuX2Z8MCx0aGlzLl9nPW5lK3RoaXMuX2d8MCx0aGlzLl9oPWllK3RoaXMuX2h8MH0s''@;'; put 'put ''Qi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgej12LmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gei53cml0ZUludDMyQkUodGhpcy5fYSwwKSx6LndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHoud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksei53cml0ZUludDMyQkUodGhpcy5fZCwxMiks''@;'; put 'put ''ei53cml0ZUludDMyQkUodGhpcy5fZSwxNiksei53cml0ZUludDMyQkUodGhpcy5fZiwyMCksei53cml0ZUludDMyQkUodGhpcy5fZywyNCksei53cml0ZUludDMyQkUodGhpcy5faCwyOCksen0sV2UuZXhwb3J0cz1CfSw2MTcyMzooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjY5OCksaz1UKDQ3''@;'; put 'put ''OTE0KSx2PVQoODM1ODEpLGhlPVQoODQzKS5CdWZmZXIsSD1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiBCKCl7dGhpcy5pbml0KCksdGhpcy5fdz1ILHYuY2FsbCh0aGlzLDEyOCwxMTIpfXNlKEIsayksQi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9haD0zNDE4MDcw''@;'; put 'put ''MzY1LHRoaXMuX2JoPTE2NTQyNzAyNTAsdGhpcy5fY2g9MjQzODUyOTM3MCx0aGlzLl9kaD0zNTU0NjIzNjAsdGhpcy5fZWg9MTczMTQwNTQxNSx0aGlzLl9maD0yMzk0MTgwMjMxLHRoaXMuX2doPTM2NzUwMDg1MjUsdGhpcy5faGg9MTIwMzA2MjgxMyx0aGlzLl9hbD0zMjM4MzcxMDMyLHRo''@;'; put 'put ''aXMuX2JsPTkxNDE1MDY2Myx0aGlzLl9jbD04MTI3MDI5OTksdGhpcy5fZGw9NDE0NDkxMjY5Nyx0aGlzLl9lbD00MjkwNzc1ODU3LHRoaXMuX2ZsPTE3NTA2MDMwMjUsdGhpcy5fZ2w9MTY5NDA3NjgzOSx0aGlzLl9obD0zMjA0MDc1NDI4LHRoaXN9LEIucHJvdG90eXBlLl9oYXNoPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEw9aGUuYWxsb2NVbnNhZmUoNDgpO2Z1bmN0aW9uIEsoSixJLFIpe0wud3JpdGVJbnQzMkJFKEosUiksTC53cml0ZUludDMyQkUoSSxSKzQpfXJldHVybiBLKHRoaXMuX2FoLHRoaXMuX2FsLDApLEsodGhpcy5fYmgsdGhpcy5fYmwsOCksSyh0aGlzLl9jaCx0aGlzLl9jbCwx''@;'; put 'put ''NiksSyh0aGlzLl9kaCx0aGlzLl9kbCwyNCksSyh0aGlzLl9laCx0aGlzLl9lbCwzMiksSyh0aGlzLl9maCx0aGlzLl9mbCw0MCksTH0sV2UuZXhwb3J0cz1CfSw0NzkxNDooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjY5OCksaz1UKDgzNTgxKSx2PVQoODQzKS5CdWZmZXIsaGU9WzExMTYzNTI0''@;'; put 'put ''MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYw''@;'; put 'put ''LDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3''@;'; put 'put ''OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0''@;'; put 'put ''OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4''@;'; put 'put ''MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEy''@;'; put 'put ''MDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0''@;'; put 'put ''NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMs''@;'; put 'put ''MTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3''@;'; put 'put ''MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQy''@;'; put 'put ''OTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwx''@;'; put 'put ''NTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSxIPW5ldyBBcnJheSgxNjApO2Z1bmN0aW9uIEIoKXt0aGlzLmluaXQoKSx0aGlzLl93PUgsay5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gTChHLFcsVSl7cmV0dXJuIFVe''@;'; put 'put ''RyYoV15VKX1mdW5jdGlvbiBLKEcsVyxVKXtyZXR1cm4gRyZXfFUmKEd8Vyl9ZnVuY3Rpb24gSihHLFcpe3JldHVybihHPj4+Mjh8Vzw8NCleKFc+Pj4yfEc8PDMwKV4oVz4+Pjd8Rzw8MjUpfWZ1bmN0aW9uIEkoRyxXKXtyZXR1cm4oRz4+PjE0fFc8PDE4KV4oRz4+PjE4fFc8PDE0KV4oVz4+''@;'; put 'put ''Pjl8Rzw8MjMpfWZ1bmN0aW9uIFIoRyxXKXtyZXR1cm4oRz4+PjF8Vzw8MzEpXihHPj4+OHxXPDwyNCleRz4+Pjd9ZnVuY3Rpb24gRShHLFcpe3JldHVybihHPj4+MXxXPDwzMSleKEc+Pj44fFc8PDI0KV4oRz4+Pjd8Vzw8MjUpfWZ1bmN0aW9uIHooRyxXKXtyZXR1cm4oRz4+PjE5fFc8PDEz''@;'; put 'put ''KV4oVz4+PjI5fEc8PDMpXkc+Pj42fWZ1bmN0aW9uIGooRyxXKXtyZXR1cm4oRz4+PjE5fFc8PDEzKV4oVz4+PjI5fEc8PDMpXihHPj4+NnxXPDwyNil9ZnVuY3Rpb24gVihHLFcpe3JldHVybiBHPj4+MDxXPj4+MD8xOjB9c2UoQixrKSxCLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0yNjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRo''@;'; put 'put ''aXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTExOTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sQi5w''@;'; put 'put ''cm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihHKXtmb3IodmFyIFc9dGhpcy5fdyxVPTB8dGhpcy5fYWgscT0wfHRoaXMuX2JoLHRlPTB8dGhpcy5fY2gsbmU9MHx0aGlzLl9kaCxpZT0wfHRoaXMuX2VoLGxlPTB8dGhpcy5fZmgsZGU9MHx0aGlzLl9naCx1ZT0wfHRoaXMuX2hoLGNlPTB8dGhp''@;'; put 'put ''cy5fYWwsWT0wfHRoaXMuX2JsLGI9MHx0aGlzLl9jbCx4PTB8dGhpcy5fZGwsTj0wfHRoaXMuX2VsLEY9MHx0aGlzLl9mbCxnPTB8dGhpcy5fZ2wsQz0wfHRoaXMuX2hsLE09MDtNPDMyO00rPTIpV1tNXT1HLnJlYWRJbnQzMkJFKDQqTSksV1tNKzFdPUcucmVhZEludDMyQkUoNCpNKzQpO2Zv''@;'; put 'put ''cig7TTwxNjA7TSs9Mil7dmFyIHk9V1tNLTMwXSxwPVdbTS0zMCsxXSxTPVIoeSxwKSxRPUUocCx5KSxyZT16KHk9V1tNLTRdLHA9V1tNLTQrMV0pLGZlPWoocCx5KSxUZT1XW00tMzJdLFBlPVdbTS0zMisxXSxGZT1RK1dbTS0xNCsxXXwwLE5lPVMrV1tNLTE0XStWKEZlLFEpfDA7TmU9KE5l''@;'; put 'put ''PU5lK3JlK1YoRmU9RmUrZmV8MCxmZSl8MCkrVGUrVihGZT1GZStQZXwwLFBlKXwwLFdbTV09TmUsV1tNKzFdPUZlfWZvcih2YXIgTGU9MDtMZTwxNjA7TGUrPTIpe05lPVdbTGVdLEZlPVdbTGUrMV07dmFyIEJlPUsoVSxxLHRlKSxIZT1LKGNlLFksYiksUWU9SihVLGNlKSxtdD1KKGNlLFUp''@;'; put 'put ''LEtlPUkoaWUsTiksd2U9SShOLGllKSxJZT1oZVtMZV0sT2U9aGVbTGUrMV0sZXQ9TChpZSxsZSxkZSksbnQ9TChOLEYsZykscWU9Qyt3ZXwwLGh0PXVlK0tlK1YocWUsQyl8MDtodD0oaHQ9KGh0PWh0K2V0K1YocWU9cWUrbnR8MCxudCl8MCkrSWUrVihxZT1xZStPZXwwLE9lKXwwKStOZStW''@;'; put 'put ''KHFlPXFlK0ZlfDAsRmUpfDA7dmFyIEVlPW10K0hlfDAsRGU9UWUrQmUrVihFZSxtdCl8MDt1ZT1kZSxDPWcsZGU9bGUsZz1GLGxlPWllLEY9TixpZT1uZStodCtWKE49eCtxZXwwLHgpfDAsbmU9dGUseD1iLHRlPXEsYj1ZLHE9VSxZPWNlLFU9aHQrRGUrVihjZT1xZStFZXwwLHFlKXwwfXRo''@;'; put 'put ''aXMuX2FsPXRoaXMuX2FsK2NlfDAsdGhpcy5fYmw9dGhpcy5fYmwrWXwwLHRoaXMuX2NsPXRoaXMuX2NsK2J8MCx0aGlzLl9kbD10aGlzLl9kbCt4fDAsdGhpcy5fZWw9dGhpcy5fZWwrTnwwLHRoaXMuX2ZsPXRoaXMuX2ZsK0Z8MCx0aGlzLl9nbD10aGlzLl9nbCtnfDAsdGhpcy5faGw9dGhp''@;'; put 'put ''cy5faGwrQ3wwLHRoaXMuX2FoPXRoaXMuX2FoK1UrVih0aGlzLl9hbCxjZSl8MCx0aGlzLl9iaD10aGlzLl9iaCtxK1YodGhpcy5fYmwsWSl8MCx0aGlzLl9jaD10aGlzLl9jaCt0ZStWKHRoaXMuX2NsLGIpfDAsdGhpcy5fZGg9dGhpcy5fZGgrbmUrVih0aGlzLl9kbCx4KXwwLHRoaXMuX2Vo''@;'; put 'put ''PXRoaXMuX2VoK2llK1YodGhpcy5fZWwsTil8MCx0aGlzLl9maD10aGlzLl9maCtsZStWKHRoaXMuX2ZsLEYpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grZGUrVih0aGlzLl9nbCxnKXwwLHRoaXMuX2hoPXRoaXMuX2hoK3VlK1YodGhpcy5faGwsQyl8MH0sQi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgRz12LmFsbG9jVW5zYWZlKDY0KTtmdW5jdGlvbiBXKFUscSx0ZSl7Ry53cml0ZUludDMyQkUoVSx0ZSksRy53cml0ZUludDMyQkUocSx0ZSs0KX1yZXR1cm4gVyh0aGlzLl9haCx0aGlzLl9hbCwwKSxXKHRoaXMuX2JoLHRoaXMuX2JsLDgpLFcodGhpcy5fY2gsdGhpcy5fY2ws''@;'; put 'put ''MTYpLFcodGhpcy5fZGgsdGhpcy5fZGwsMjQpLFcodGhpcy5fZWgsdGhpcy5fZWwsMzIpLFcodGhpcy5fZmgsdGhpcy5fZmwsNDApLFcodGhpcy5fZ2gsdGhpcy5fZ2wsNDgpLFcodGhpcy5faGgsdGhpcy5faGwsNTYpLEd9LFdlLmV4cG9ydHM9Qn0sNTE3OTM6KFdlLHplLFQpPT57V2UuZXhw''@;'; put 'put ''b3J0cz12O3ZhciBzZT1UKDgyMDE2KS5FdmVudEVtaXR0ZXI7ZnVuY3Rpb24gdigpe3NlLmNhbGwodGhpcyl9VCg2NjY5OCkodixzZSksdi5SZWFkYWJsZT1UKDgwMzA5KSx2LldyaXRhYmxlPVQoNTY1NjMpLHYuRHVwbGV4PVQoNzAyNDcpLHYuVHJhbnNmb3JtPVQoMTYzMDcpLHYuUGFzc1Ro''@;'; put 'put ''cm91Z2g9VCg5NTA5Niksdi5maW5pc2hlZD1UKDU0NjE4KSx2LnBpcGVsaW5lPVQoODQ1MTQpLHYuU3RyZWFtPXYsdi5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihoZSxIKXt2YXIgQj10aGlzO2Z1bmN0aW9uIEwoail7aGUud3JpdGFibGUmJiExPT09aGUud3JpdGUoaikmJkIucGF1c2UmJkIu''@;'; put 'put ''cGF1c2UoKX1mdW5jdGlvbiBLKCl7Qi5yZWFkYWJsZSYmQi5yZXN1bWUmJkIucmVzdW1lKCl9Qi5vbigiZGF0YSIsTCksaGUub24oImRyYWluIixLKSwhaGUuX2lzU3RkaW8mJighSHx8ITEhPT1ILmVuZCkmJihCLm9uKCJlbmQiLEkpLEIub24oImNsb3NlIixSKSk7dmFyIEo9ITE7ZnVuY3Rp''@;'; put 'put ''b24gSSgpe0p8fChKPSEwLGhlLmVuZCgpKX1mdW5jdGlvbiBSKCl7Snx8KEo9ITAsImZ1bmN0aW9uIj09dHlwZW9mIGhlLmRlc3Ryb3kmJmhlLmRlc3Ryb3koKSl9ZnVuY3Rpb24gRShqKXtpZih6KCksMD09PXNlLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyBqfWZ1bmN0aW9u''@;'; put 'put ''IHooKXtCLnJlbW92ZUxpc3RlbmVyKCJkYXRhIixMKSxoZS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLEspLEIucmVtb3ZlTGlzdGVuZXIoImVuZCIsSSksQi5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFIpLEIucmVtb3ZlTGlzdGVuZXIoImVycm9yIixFKSxoZS5yZW1vdmVMaXN0ZW5lcigiZXJy''@;'; put 'put ''b3IiLEUpLEIucmVtb3ZlTGlzdGVuZXIoImVuZCIseiksQi5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHopLGhlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIseil9cmV0dXJuIEIub24oImVycm9yIixFKSxoZS5vbigiZXJyb3IiLEUpLEIub24oImVuZCIseiksQi5vbigiY2xvc2UiLHopLGhlLm9u''@;'; put 'put ''KCJjbG9zZSIseiksaGUuZW1pdCgicGlwZSIsQiksaGV9fSw3MjAyNDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODQzKS5CdWZmZXIsaz1zZS5pc0VuY29kaW5nfHxmdW5jdGlvbihVKXtzd2l0Y2goKFU9IiIrVSkmJlUudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2Ui''@;'; put 'put ''dXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiBIKFUpe3ZhciBx''@;'; put 'put ''O3N3aXRjaCh0aGlzLmVuY29kaW5nPWZ1bmN0aW9uIGhlKFUpe3ZhciBxPWZ1bmN0aW9uIHYoVSl7aWYoIVUpcmV0dXJuInV0ZjgiO2Zvcih2YXIgcTs7KXN3aXRjaChVKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRm''@;'; put 'put ''MTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGluMSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gVTtkZWZhdWx0OmlmKHEpcmV0dXJuO1U9KCIiK1UpLnRvTG93ZXJDYXNlKCks''@;'; put 'put ''cT0hMH19KFUpO2lmKCJzdHJpbmciIT10eXBlb2YgcSYmKHNlLmlzRW5jb2Rpbmc9PT1rfHwhayhVKSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK1UpO3JldHVybiBxfHxVfShVKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRoaXMudGV4dD1FLHRoaXMuZW5k''@;'; put 'put ''PXoscT00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD1KLHE9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50ZXh0PWosdGhpcy5lbmQ9VixxPTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT1HLHZvaWQodGhpcy5lbmQ9Vyl9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFz''@;'; put 'put ''dFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj1zZS5hbGxvY1Vuc2FmZShxKX1mdW5jdGlvbiBCKFUpe3JldHVybiBVPD0xMjc/MDpVPj41PT02PzI6VT4+ND09MTQ/MzpVPj4zPT0zMD80OlU+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gSihVKXt2YXIgcT10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVk''@;'; put 'put ''LHRlPWZ1bmN0aW9uIEsoVSxxLHRlKXtpZigxMjghPSgxOTImcVswXSkpcmV0dXJuIFUubGFzdE5lZWQ9MCwiXHVmZmZkIjtpZihVLmxhc3ROZWVkPjEmJnEubGVuZ3RoPjEpe2lmKDEyOCE9KDE5MiZxWzFdKSlyZXR1cm4gVS5sYXN0TmVlZD0xLCJcdWZmZmQiO2lmKFUubGFzdE5lZWQ+MiYm''@;'; put 'put ''cS5sZW5ndGg+MiYmMTI4IT0oMTkyJnFbMl0pKXJldHVybiBVLmxhc3ROZWVkPTIsIlx1ZmZmZCJ9fSh0aGlzLFUpO3JldHVybiB2b2lkIDAhPT10ZT90ZTp0aGlzLmxhc3ROZWVkPD1VLmxlbmd0aD8oVS5jb3B5KHRoaXMubGFzdENoYXIscSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENo''@;'; put 'put ''YXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KFUuY29weSh0aGlzLmxhc3RDaGFyLHEsMCxVLmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT1VLmxlbmd0aCkpfWZ1bmN0aW9uIEUoVSxxKXtpZigoVS5sZW5ndGgtcSklMj09MCl7dmFyIHRlPVUudG9TdHJp''@;'; put 'put ''bmcoInV0ZjE2bGUiLHEpO2lmKHRlKXt2YXIgbmU9dGUuY2hhckNvZGVBdCh0ZS5sZW5ndGgtMSk7aWYobmU+PTU1Mjk2JiZuZTw9NTYzMTkpcmV0dXJuIHRoaXMubGFzdE5lZWQ9Mix0aGlzLmxhc3RUb3RhbD00LHRoaXMubGFzdENoYXJbMF09VVtVLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFy''@;'; put 'put ''WzFdPVVbVS5sZW5ndGgtMV0sdGUuc2xpY2UoMCwtMSl9cmV0dXJuIHRlfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPVVbVS5sZW5ndGgtMV0sVS50b1N0cmluZygidXRmMTZsZSIscSxVLmxlbmd0aC0xKX1mdW5jdGlvbiB6KFUpe3Zh''@;'; put 'put ''ciBxPVUmJlUubGVuZ3RoP3RoaXMud3JpdGUoVSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/cSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJ1dGYxNmxlIiwwLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQpOnF9ZnVuY3Rpb24gaihVLHEpe3ZhciB0ZT0oVS5sZW5ndGgtcSklMztyZXR1''@;'; put 'put ''cm4gMD09PXRlP1UudG9TdHJpbmcoImJhc2U2NCIscSk6KHRoaXMubGFzdE5lZWQ9My10ZSx0aGlzLmxhc3RUb3RhbD0zLDE9PT10ZT90aGlzLmxhc3RDaGFyWzBdPVVbVS5sZW5ndGgtMV06KHRoaXMubGFzdENoYXJbMF09VVtVLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPVVbVS5sZW5n''@;'; put 'put ''dGgtMV0pLFUudG9TdHJpbmcoImJhc2U2NCIscSxVLmxlbmd0aC10ZSkpfWZ1bmN0aW9uIFYoVSl7dmFyIHE9VSYmVS5sZW5ndGg/dGhpcy53cml0ZShVKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9xK3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQp''@;'; put 'put ''OnF9ZnVuY3Rpb24gRyhVKXtyZXR1cm4gVS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBXKFUpe3JldHVybiBVJiZVLmxlbmd0aD90aGlzLndyaXRlKFUpOiIifXplLnM9SCxILnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihVKXtpZigwPT09VS5sZW5ndGgpcmV0dXJuIiI7dmFy''@;'; put 'put ''IHEsdGU7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KHE9dGhpcy5maWxsTGFzdChVKSkpcmV0dXJuIiI7dGU9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSB0ZT0wO3JldHVybiB0ZTxVLmxlbmd0aD9xP3ErdGhpcy50ZXh0KFUsdGUpOnRoaXMudGV4dChVLHRlKTpx''@;'; put 'put ''fHwiIn0sSC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uIFIoVSl7dmFyIHE9VSYmVS5sZW5ndGg/dGhpcy53cml0ZShVKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD9xKyJcdWZmZmQiOnF9LEgucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24gSShVLHEpe3ZhciB0ZT1mdW5jdGlvbiBMKFUscSx0ZSl7''@;'; put 'put ''dmFyIG5lPXEubGVuZ3RoLTE7aWYobmU8dGUpcmV0dXJuIDA7dmFyIGllPUIocVtuZV0pO3JldHVybiBpZT49MD8oaWU+MCYmKFUubGFzdE5lZWQ9aWUtMSksaWUpOi0tbmU8dGV8fC0yPT09aWU/MDooaWU9QihxW25lXSkpPj0wPyhpZT4wJiYoVS5sYXN0TmVlZD1pZS0yKSxpZSk6LS1uZTx0''@;'; put 'put ''ZXx8LTI9PT1pZT8wOihpZT1CKHFbbmVdKSk+PTA/KGllPjAmJigyPT09aWU/aWU9MDpVLmxhc3ROZWVkPWllLTMpLGllKTowfSh0aGlzLFUscSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIFUudG9TdHJpbmcoInV0ZjgiLHEpO3RoaXMubGFzdFRvdGFsPXRlO3ZhciBuZT1VLmxlbmd0aC0o''@;'; put 'put ''dGUtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIFUuY29weSh0aGlzLmxhc3RDaGFyLDAsbmUpLFUudG9TdHJpbmcoInV0ZjgiLHEsbmUpfSxILnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihVKXtpZih0aGlzLmxhc3ROZWVkPD1VLmxlbmd0aClyZXR1cm4gVS5jb3B5KHRoaXMubGFzdENoYXIs''@;'; put 'put ''dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtVLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsVS5sZW5ndGgpLHRo''@;'; put 'put ''aXMubGFzdE5lZWQtPVUubGVuZ3RofX0sNjYzMDQ6KFdlLHplLFQpPT57dmFyIHNlPVQoNDAyOTApO1dlLmV4cG9ydHM9e1RleHRFbmNvZGVyOnNlLlRleHRFbmNvZGVyLFRleHREZWNvZGVyOnNlLlRleHREZWNvZGVyfX0sMTY0MTM6ZnVuY3Rpb24oV2UpeyFmdW5jdGlvbih6ZSl7InVzZSBz''@;'; put 'put ''dHJpY3QiO1dlLmV4cG9ydHMmJihXZS5leHBvcnRzPXplKSx6ZVsiZW5jb2RpbmctaW5kZXhlcyJdPXtiaWc1OltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUw''@;'; put 'put ''NiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQzLDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3''@;'; put 'put ''MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwzODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3''@;'; put 'put ''OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcsMTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3''@;'; put 'put ''MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgw''@;'; put 'put ''OTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMzLDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEyNzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEs''@;'; put 'put ''MTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEsNDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcs''@;'; put 'put ''MjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwyMDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIw''@;'; put 'put ''ODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYw''@;'; put 'put ''LDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''MzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUxMCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUz''@;'; put 'put ''MiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5''@;'; put 'put ''OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2NjcsMjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQsMjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTks''@;'; put 'put ''MjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAsMTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0''@;'; put 'put ''NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3MywxNjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYwMiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2''@;'; put 'put ''OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQsMTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51''@;'; put 'put ''bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwxOTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIx''@;'; put 'put ''NzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDksMTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYx''@;'; put 'put ''MTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEzNDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1''@;'; put 'put ''NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwxNDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0''@;'; put 'put ''LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMxLDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMz''@;'; put 'put ''LDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEzNTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQyOCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5''@;'; put 'put ''LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkxOSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEz''@;'; put 'put ''ODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwz''@;'; put 'put ''MTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUsMzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3ZTQs''@;'; put 'put ''NDAwNjAsNDA0NzksNDA2NDQsMjc1MDMsNjM3NTEsMjAwMjMsMTMxMjA3LDM4NDI5LDI1MTQzLDM4MDUwLG51bGwsMjA1MzksMjgxNTgsMTcxMTIzLDQwODcwLDE1ODE3LDM0OTU5LDE0Nzc5MCwyODc5MSwyMzc5NywxOTIzMiwxNTIwMTMsMTM2NTcsMTU0OTI4LDI0ODY2LDE2NjQ1MCwzNjc3''@;'; put 'put ''NSwzNzM2NiwyOTA3MywyNjM5MywyOTYyNiwxNDQwMDEsMTcyMjk1LDE1NDk5LDEzNzYwMCwxOTIxNiwzMDk0OCwyOTY5OCwyMDkxMCwxNjU2NDcsMTYzOTMsMjcyMzUsMTcyNzMwLDE2OTMxLDM0MzE5LDEzMzc0MywzMTI3NCwxNzAzMTEsMTY2NjM0LDM4NzQxLDI4NzQ5LDIxMjg0LDEzOTM5''@;'; put 'put ''MCwzNzg3NiwzMDQyNSwxNjYzNzEsNDA4NzEsMzA2ODUsMjAxMzEsMjA0NjQsMjA2NjgsMjAwMTUsMjAyNDcsNDA4NzIsMjE1NTYsMzIxMzksMjI2NzQsMjI3MzYsMTM4Njc4LDI0MjEwLDI0MjE3LDI0NTE0LDE0MTA3NCwyNTk5NSwxNDQzNzcsMjY5MDUsMjcyMDMsMTQ2NTMxLDI3OTAzLG51''@;'; put 'put ''bGwsMjkxODQsMTQ4NzQxLDI5NTgwLDE2MDkxLDE1MDAzNSwyMzMxNywyOTg4MSwzNTcxNSwxNTQ3ODgsMTUzMjM3LDMxMzc5LDMxNzI0LDMxOTM5LDMyMzY0LDMzNTI4LDM0MTk5LDQwODczLDM0OTYwLDQwODc0LDM2NTM3LDQwODc1LDM2ODE1LDM0MTQzLDM5MzkyLDM3NDA5LDQwODc2LDE2''@;'; put 'put ''NzM1MywxMzYyNTUsMTY0OTcsMTcwNTgsMjMwNjYsbnVsbCxudWxsLG51bGwsMzkwMTYsMjY0NzUsMTcwMTQsMjIzMzMsbnVsbCwzNDI2MiwxNDk4ODMsMzM0NzEsMTYwMDEzLDE5NTg1LDE1OTA5MiwyMzkzMSwxNTg0ODUsMTU5Njc4LDQwODc3LDQwODc4LDIzNDQ2LDQwODc5LDI2MzQzLDMy''@;'; put 'put ''MzQ3LDI4MjQ3LDMxMTc4LDE1NzUyLDE3NjAzLDE0Mzk1OCwxNDEyMDYsMTczMDYsMTc3MTgsbnVsbCwyMzc2NSwxNDYyMDIsMzU1NzcsMjM2NzIsMTU2MzQsMTQ0NzIxLDIzOTI4LDQwODgyLDI5MDE1LDE3NzUyLDE0NzY5MiwxMzg3ODcsMTk1NzUsMTQ3MTIsMTMzODYsMTMxNDkyLDE1ODc4''@;'; put 'put ''NSwzNTUzMiwyMDQwNCwxMzE2NDEsMjI5NzUsMzMxMzIsMzg5OTgsMTcwMjM0LDI0Mzc5LDEzNDA0NyxudWxsLDEzOTcxMywxNjYyNTMsMTY2NDIsMTgxMDcsMTY4MDU3LDE2MTM1LDQwODgzLDE3MjQ2OSwxNjYzMiwxNDI5NCwxODE2NywxNTg3OTAsMTY3NjQsMTY1NTU0LDE2MDc2NywxNzc3''@;'; put 'put ''MywxNDU0OCwxNTI3MzAsMTc3NjEsMTc2OTEsMTk4NDksMTk1NzksMTk4MzAsMTc4OTgsMTYzMjgsMTUwMjg3LDEzOTIxLDE3NjMwLDE3NTk3LDE2ODc3LDIzODcwLDIzODgwLDIzODk0LDE1ODY4LDE0MzUxLDIzOTcyLDIzOTkzLDE0MzY4LDE0MzkyLDI0MTMwLDI0MjUzLDI0MzU3LDI0NDUx''@;'; put 'put ''LDE0NjAwLDE0NjEyLDE0NjU1LDE0NjY5LDI0NzkxLDI0ODkzLDIzNzgxLDE0NzI5LDI1MDE1LDI1MDE3LDI1MDM5LDE0Nzc2LDI1MTMyLDI1MjMyLDI1MzE3LDI1MzY4LDE0ODQwLDIyMTkzLDE0ODUxLDI1NTcwLDI1NTk1LDI1NjA3LDI1NjkwLDE0OTIzLDI1NzkyLDIzODI5LDIyMDQ5LDQw''@;'; put 'put ''ODYzLDE0OTk5LDI1OTkwLDE1MDM3LDI2MTExLDI2MTk1LDE1MDkwLDI2MjU4LDE1MTM4LDI2MzkwLDE1MTcwLDI2NTMyLDI2NjI0LDE1MTkyLDI2Njk4LDI2NzU2LDE1MjE4LDE1MjE3LDE1MjI3LDI2ODg5LDI2OTQ3LDI5Mjc2LDI2OTgwLDI3MDM5LDI3MDEzLDE1MjkyLDI3MDk0LDE1MzI1''@;'; put 'put ''LDI3MjM3LDI3MjUyLDI3MjQ5LDI3MjY2LDE1MzQwLDI3Mjg5LDE1MzQ2LDI3MzA3LDI3MzE3LDI3MzQ4LDI3MzgyLDI3NTIxLDI3NTg1LDI3NjI2LDI3NzY1LDI3ODE4LDE1NTYzLDI3OTA2LDI3OTEwLDI3OTQyLDI4MDMzLDE1NTk5LDI4MDY4LDI4MDgxLDI4MTgxLDI4MTg0LDI4MjAxLDI4''@;'; put 'put ''Mjk0LDE2NjMzNiwyODM0NywyODM4NiwyODM3OCw0MDgzMSwyODM5MiwyODM5MywyODQ1MiwyODQ2OCwxNTY4NiwxNDcyNjUsMjg1NDUsMjg2MDYsMTU3MjIsMTU3MzMsMjkxMTEsMjM3MDUsMTU3NTQsMjg3MTYsMTU3NjEsMjg3NTIsMjg3NTYsMjg3ODMsMjg3OTksMjg4MDksMTMxODc3LDE3''@;'; put 'put ''MzQ1LDEzODA5LDEzNDg3MiwxNDcxNTksMjI0NjIsMTU5NDQzLDI4OTkwLDE1MzU2OCwxMzkwMiwyNzA0MiwxNjY4ODksMjM0MTIsMzEzMDUsMTUzODI1LDE2OTE3NywzMTMzMywzMTM1NywxNTQwMjgsMzE0MTksMzE0MDgsMzE0MjYsMzE0MjcsMjkxMzcsMTU2ODEzLDE2ODQyLDMxNDUwLDMx''@;'; put 'put ''NDUzLDMxNDY2LDE2ODc5LDIxNjgyLDE1NDYyNSwzMTQ5OSwzMTU3MywzMTUyOSwxNTIzMzQsMTU0ODc4LDMxNjUwLDMxNTk5LDMzNjkyLDE1NDU0OCwxNTg4NDcsMzE2OTYsMzM4MjUsMzE2MzQsMzE2NzIsMTU0OTEyLDE1Nzg5LDE1NDcyNSwzMzkzOCwzMTczOCwzMTc1MCwzMTc5NywxNTQ4''@;'; put 'put ''MTcsMzE4MTIsMzE4NzUsMTQ5NjM0LDMxOTEwLDI2MjM3LDE0ODg1NiwzMTk0NSwzMTk0MywzMTk3NCwzMTg2MCwzMTk4NywzMTk4OSwzMTk1MCwzMjM1OSwxNzY5MywxNTkzMDAsMzIwOTMsMTU5NDQ2LDI5ODM3LDMyMTM3LDMyMTcxLDI4OTgxLDMyMTc5LDMyMjEwLDE0NzU0MywxNTU2ODks''@;'; put 'put ''MzIyMjgsMTU2MzUsMzIyNDUsMTM3MjA5LDMyMjI5LDE2NDcxNywzMjI4NSwxNTU5MzcsMTU1OTk0LDMyMzY2LDMyNDAyLDE3MTk1LDM3OTk2LDMyMjk1LDMyNTc2LDMyNTc3LDMyNTgzLDMxMDMwLDE1NjM2OCwzOTM5MywzMjY2MywxNTY0OTcsMzI2NzUsMTM2ODAxLDEzMTE3NiwxNzc1Niwx''@;'; put 'put ''NDUyNTQsMTc2NjcsMTY0NjY2LDMyNzYyLDE1NjgwOSwzMjc3MywzMjc3NiwzMjc5NywzMjgwOCwzMjgxNSwxNzIxNjcsMTU4OTE1LDMyODI3LDMyODI4LDMyODY1LDE0MTA3NiwxODgyNSwxNTcyMjIsMTQ2OTE1LDE1NzQxNiwyNjQwNSwzMjkzNSwxNjY0NzIsMzMwMzEsMzMwNTAsMjI3MDQs''@;'; put 'put ''MTQxMDQ2LDI3Nzc1LDE1NjgyNCwxNTE0ODAsMjU4MzEsMTM2MzMwLDMzMzA0LDEzNzMxMCwyNzIxOSwxNTAxMTcsMTUwMTY1LDE3NTMwLDMzMzIxLDEzMzkwMSwxNTgyOTAsMTQ2ODE0LDIwNDczLDEzNjQ0NSwzNDAxOCwzMzYzNCwxNTg0NzQsMTQ5OTI3LDE0NDY4OCwxMzcwNzUsMTQ2OTM2''@;'; put 'put ''LDMzNDUwLDI2OTA3LDE5NDk2NCwxNjg1OSwzNDEyMywzMzQ4OCwzMzU2MiwxMzQ2NzgsMTM3MTQwLDE0MDE3LDE0Mzc0MSwxNDQ3MzAsMzM0MDMsMzM1MDYsMzM1NjAsMTQ3MDgzLDE1OTEzOSwxNTg0NjksMTU4NjE1LDE0NDg0NiwxNTgwNywzMzU2NSwyMTk5NiwzMzY2OSwxNzY3NSwxNTkx''@;'; put 'put ''NDEsMzM3MDgsMzM3MjksMzM3NDcsMTM0MzgsMTU5NDQ0LDI3MjIzLDM0MTM4LDEzNDYyLDE1OTI5OCwxNDMwODcsMzM4ODAsMTU0NTk2LDMzOTA1LDE1ODI3LDE3NjM2LDI3MzAzLDMzODY2LDE0NjYxMywzMTA2NCwzMzk2MCwxNTg2MTQsMTU5MzUxLDE1OTI5OSwzNDAxNCwzMzgwNywzMzY4''@;'; put 'put ''MSwxNzU2OCwzMzkzOSwzNDAyMCwxNTQ3NjksMTY5NjAsMTU0ODE2LDE3NzMxLDM0MTAwLDIzMjgyLDE1OTM4NSwxNzcwMywzNDE2MywxNzY4NiwyNjU1OSwzNDMyNiwxNjU0MTMsMTY1NDM1LDM0MjQxLDE1OTg4MCwzNDMwNiwxMzY1NzgsMTU5OTQ5LDE5NDk5NCwxNzc3MCwzNDM0NCwxMzg5''@;'; put 'put ''NiwxMzczNzgsMjE0OTUsMTYwNjY2LDM0NDMwLDM0NjczLDE3MjI4MCwzNDc5OCwxNDIzNzUsMzQ3MzcsMzQ3NzgsMzQ4MzEsMjIxMTMsMzQ0MTIsMjY3MTAsMTc5MzUsMzQ4ODUsMzQ4ODYsMTYxMjQ4LDE0Njg3MywxNjEyNTIsMzQ5MTAsMzQ5NzIsMTgwMTEsMzQ5OTYsMzQ5OTcsMjU1Mzcs''@;'; put 'put ''MzUwMTMsMzA1ODMsMTYxNTUxLDM1MjA3LDM1MjEwLDM1MjM4LDM1MjQxLDM1MjM5LDM1MjYwLDE2NjQzNywzNTMwMywxNjIwODQsMTYyNDkzLDM1NDg0LDMwNjExLDM3Mzc0LDM1NDcyLDE2MjM5MywzMTQ2NSwxNjI2MTgsMTQ3MzQzLDE4MTk1LDE2MjYxNiwyOTA1MiwzNTU5NiwzNTYxNSwx''@;'; put 'put ''NTI2MjQsMTUyOTMzLDM1NjQ3LDM1NjYwLDM1NjYxLDM1NDk3LDE1MDEzOCwzNTcyOCwzNTczOSwzNTUwMywxMzY5MjcsMTc5NDEsMzQ4OTUsMzU5OTUsMTYzMTU2LDE2MzIxNSwxOTUwMjgsMTQxMTcsMTYzMTU1LDM2MDU0LDE2MzIyNCwxNjMyNjEsMzYxMTQsMzYwOTksMTM3NDg4LDM2MDU5''@;'; put 'put ''LDI4NzY0LDM2MTEzLDE1MDcyOSwxNjA4MCwzNjIxNSwzNjI2NSwxNjM4NDIsMTM1MTg4LDE0OTg5OCwxNTIyOCwxNjQyODQsMTYwMDEyLDMxNDYzLDM2NTI1LDM2NTM0LDM2NTQ3LDM3NTg4LDM2NjMzLDM2NjUzLDE2NDcwOSwxNjQ4ODIsMzY3NzMsMzc2MzUsMTcyNzAzLDEzMzcxMiwzNjc4''@;'; put 'put ''NywxODczMCwxNjYzNjYsMTY1MTgxLDE0Njg3NSwyNDMxMiwxNDM5NzAsMzY4NTcsMTcyMDUyLDE2NTU2NCwxNjUxMjEsMTQwMDY5LDE0NzIwLDE1OTQ0NywzNjkxOSwxNjUxODAsMTYyNDk0LDM2OTYxLDE2NTIyOCwxNjUzODcsMzcwMzIsMTY1NjUxLDM3MDYwLDE2NTYwNiwzNzAzOCwzNzEx''@;'; put 'put ''NywzNzIyMywxNTA4OCwzNzI4OSwzNzMxNiwzMTkxNiwxNjYxOTUsMTM4ODg5LDM3MzkwLDI3ODA3LDM3NDQxLDM3NDc0LDE1MzAxNywzNzU2MSwxNjY1OTgsMTQ2NTg3LDE2NjY2OCwxNTMwNTEsMTM0NDQ5LDM3Njc2LDM3NzM5LDE2NjYyNSwxNjY4OTEsMjg4MTUsMjMyMzUsMTY2NjI2LDE2''@;'; put 'put ''NjYyOSwxODc4OSwzNzQ0NCwxNjY4OTIsMTY2OTY5LDE2NjkxMSwzNzc0NywzNzk3OSwzNjU0MCwzODI3NywzODMxMCwzNzkyNiwzODMwNCwyODY2MiwxNzA4MSwxNDA5MjIsMTY1NTkyLDEzNTgwNCwxNDY5OTAsMTg5MTEsMjc2NzYsMzg1MjMsMzg1NTAsMTY3NDgsMzg1NjMsMTU5NDQ1LDI1''@;'; put 'put ''MDUwLDM4NTgyLDMwOTY1LDE2NjYyNCwzODU4OSwyMTQ1MiwxODg0OSwxNTg5MDQsMTMxNzAwLDE1NjY4OCwxNjgxMTEsMTY4MTY1LDE1MDIyNSwxMzc0OTMsMTQ0MTM4LDM4NzA1LDM0MzcwLDM4NzEwLDE4OTU5LDE3NzI1LDE3Nzk3LDE1MDI0OSwyODc4OSwyMzM2MSwzODY4MywzODc0OCwx''@;'; put 'put ''Njg0MDUsMzg3NDMsMjMzNzAsMTY4NDI3LDM4NzUxLDM3OTI1LDIwNjg4LDE0MzU0MywxNDM1NDgsMzg3OTMsMzg4MTUsMzg4MzMsMzg4NDYsMzg4NDgsMzg4NjYsMzg4ODAsMTUyNjg0LDM4ODk0LDI5NzI0LDE2OTAxMSwzODkxMSwzODkwMSwxNjg5ODksMTYyMTcwLDE5MTUzLDM4OTY0LDM4''@;'; put 'put ''OTYzLDM4OTg3LDM5MDE0LDE1MTE4LDE2MDExNywxNTY5NywxMzI2NTYsMTQ3ODA0LDE1MzM1MCwzOTExNCwzOTA5NSwzOTExMiwzOTExMSwxOTE5OSwxNTkwMTUsMTM2OTE1LDIxOTM2LDM5MTM3LDM5MTQyLDM5MTQ4LDM3NzUyLDM5MjI1LDE1MDA1NywxOTMxNCwxNzAwNzEsMTcwMjQ1LDM5''@;'; put 'put ''NDEzLDM5NDM2LDM5NDgzLDM5NDQwLDM5NTEyLDE1MzM4MSwxNDAyMCwxNjgxMTMsMTcwOTY1LDM5NjQ4LDM5NjUwLDE3MDc1NywzOTY2OCwxOTQ3MCwzOTcwMCwzOTcyNSwxNjUzNzYsMjA1MzIsMzk3MzIsMTU4MTIwLDE0NTMxLDE0MzQ4NSwzOTc2MCwzOTc0NCwxNzEzMjYsMjMxMDksMTM3''@;'; put 'put ''MzE1LDM5ODIyLDE0ODA0MywzOTkzOCwzOTkzNSwzOTk0OCwxNzE2MjQsNDA0MDQsMTcxOTU5LDE3MjQzNCwxNzI0NTksMTcyMjU3LDE3MjMyMywxNzI1MTEsNDAzMTgsNDAzMjMsMTcyMzQwLDQwNDYyLDI2NzYwLDQwMzg4LDEzOTYxMSwxNzI0MzUsMTcyNTc2LDEzNzUzMSwxNzI1OTUsNDAy''@;'; put 'put ''NDksMTcyMjE3LDE3MjcyNCw0MDU5Miw0MDU5Nyw0MDYwNiw0MDYxMCwxOTc2NCw0MDYxOCw0MDYyMywxNDgzMjQsNDA2NDEsMTUyMDAsMTQ4MjEsMTU2NDUsMjAyNzQsMTQyNzAsMTY2OTU1LDQwNzA2LDQwNzEyLDE5MzUwLDM3OTI0LDE1OTEzOCw0MDcyNyw0MDcyNiw0MDc2MSwyMjE3NSwy''@;'; put 'put ''MjE1NCw0MDc3MywzOTM1MiwxNjgwNzUsMzg4OTgsMzM5MTksNDA4MDIsNDA4MDksMzE0NTIsNDA4NDYsMjkyMDYsMTkzOTAsMTQ5ODc3LDE0OTk0NywyOTA0NywxNTAwMDgsMTQ4Mjk2LDE1MDA5NywyOTU5OCwxNjY4NzQsMTM3NDY2LDMxMTM1LDE2NjI3MCwxNjc0NzgsMzc3MzcsMzc4NzUs''@;'; put 'put ''MTY2NDY4LDM3NjEyLDM3NzYxLDM3ODM1LDE2NjI1MiwxNDg2NjUsMjkyMDcsMTYxMDcsMzA1NzgsMzEyOTksMjg4ODAsMTQ4NTk1LDE0ODQ3MiwyOTA1NCwxMzcxOTksMjg4MzUsMTM3NDA2LDE0NDc5MywxNjA3MSwxMzczNDksMTUyNjIzLDEzNzIwOCwxNDExNCwxMzY5NTUsMTM3MjczLDE0''@;'; put 'put ''MDQ5LDEzNzA3NiwxMzc0MjUsMTU1NDY3LDE0MTE1LDEzNjg5NiwyMjM2MywxNTAwNTMsMTM2MTkwLDEzNTg0OCwxMzYxMzQsMTM2Mzc0LDM0MDUxLDE0NTA2MiwzNDA1MSwzMzg3NywxNDk5MDgsMTYwMTAxLDE0Njk5MywxNTI5MjQsMTQ3MTk1LDE1OTgyNiwxNzY1MiwxNDUxMzQsMTcwMzk3''@;'; put 'put ''LDE1OTUyNiwyNjYxNywxNDEzMSwxNTM4MSwxNTg0NywyMjYzNiwxMzc1MDYsMjY2NDAsMTY0NzEsMTQ1MjE1LDE0NzY4MSwxNDc1OTUsMTQ3NzI3LDE1ODc1MywyMTcwNywyMjE3NCwxNTczNjEsMjIxNjIsMTM1MTM1LDEzNDA1NiwxMzQ2NjksMzc4MzAsMTY2Njc1LDM3Nzg4LDIwMjE2LDIw''@;'; put 'put ''Nzc5LDE0MzYxLDE0ODUzNCwyMDE1NiwxMzIxOTcsMTMxOTY3LDIwMjk5LDIwMzYyLDE1MzE2OSwyMzE0NCwxMzE0OTksMTMyMDQzLDE0NzQ1LDEzMTg1MCwxMzIxMTYsMTMzNjUsMjAyNjUsMTMxNzc2LDE2NzYwMywxMzE3MDEsMzU1NDYsMTMxNTk2LDIwMTIwLDIwNjg1LDIwNzQ5LDIwMzg2''@;'; put 'put ''LDIwMjI3LDE1MDAzMCwxNDcwODIsMjAyOTAsMjA1MjYsMjA1ODgsMjA2MDksMjA0MjgsMjA0NTMsMjA1NjgsMjA3MzIsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjgyNzgsMTQ0Nzg5LDE0NzAwMSwxNDcxMzUsMjgwMTgsMTM3MzQ4LDE0NzA4MSwyMDkwNCwyMDkzMSwxMzI1NzYsMTc2Mjks''@;'; put 'put ''MTMyMjU5LDEzMjI0MiwxMzIyNDEsMzYyMTgsMTY2NTU2LDEzMjg3OCwyMTA4MSwyMTE1NiwxMzMyMzUsMjEyMTcsMzc3NDIsMTgwNDIsMjkwNjgsMTQ4MzY0LDEzNDE3NiwxNDk5MzIsMTM1Mzk2LDI3MDg5LDEzNDY4NSwyOTgxNywxNjA5NCwyOTg0OSwyOTcxNiwyOTc4MiwyOTU5MiwxOTM0''@;'; put 'put ''MiwxNTAyMDQsMTQ3NTk3LDIxNDU2LDEzNzAwLDI5MTk5LDE0NzY1NywyMTk0MCwxMzE5MDksMjE3MDksMTM0MDg2LDIyMzAxLDM3NDY5LDM4NjQ0LDM3NzM0LDIyNDkzLDIyNDEzLDIyMzk5LDEzODg2LDIyNzMxLDIzMTkzLDE2NjQ3MCwxMzY5NTQsMTM3MDcxLDEzNjk3NiwyMzA4NCwyMjk2''@;'; put 'put ''OCwzNzUxOSwyMzE2NiwyMzI0NywyMzA1OCwxNTM5MjYsMTM3NzE1LDEzNzMxMywxNDgxMTcsMTQwNjksMjc5MDksMjk3NjMsMjMwNzMsMTU1MjY3LDIzMTY5LDE2Njg3MSwxMzIxMTUsMzc4NTYsMjk4MzYsMTM1OTM5LDI4OTMzLDE4ODAyLDM3ODk2LDE2NjM5NSwzNzgyMSwxNDI0MCwyMzU4''@;'; put 'put ''MiwyMzcxMCwyNDE1OCwyNDEzNiwxMzc2MjIsMTM3NTk2LDE0NjE1OCwyNDI2OSwyMzM3NSwxMzc0NzUsMTM3NDc2LDE0MDgxLDEzNzM3NiwxNDA0NSwxMzY5NTgsMTQwMzUsMzMwNjYsMTY2NDcxLDEzODY4MiwxNDQ0OTgsMTY2MzEyLDI0MzMyLDI0MzM0LDEzNzUxMSwxMzcxMzEsMjMxNDcs''@;'; put 'put ''MTM3MDE5LDIzMzY0LDM0MzI0LDE2MTI3NywzNDkxMiwyNDcwMiwxNDE0MDgsMTQwODQzLDI0NTM5LDE2MDU2LDE0MDcxOSwxNDA3MzQsMTY4MDcyLDE1OTYwMywyNTAyNCwxMzExMzQsMTMxMTQyLDE0MDgyNywyNDk4NSwyNDk4NCwyNDY5MywxNDI0OTEsMTQyNTk5LDE0OTIwNCwxNjgyNjks''@;'; put 'put ''MjU3MTMsMTQ5MDkzLDE0MjE4NiwxNDg4OSwxNDIxMTQsMTQ0NDY0LDE3MDIxOCwxNDI5NjgsMjUzOTksMTczMTQ3LDI1NzgyLDI1MzkzLDI1NTUzLDE0OTk4NywxNDI2OTUsMjUyNTIsMTQyNDk3LDI1NjU5LDI1OTYzLDI2OTk0LDE1MzQ4LDE0MzUwMiwxNDQwNDUsMTQ5ODk3LDE0NDA0Mywy''@;'; put 'put ''MTc3MywxNDQwOTYsMTM3NDMzLDE2OTAyMywyNjMxOCwxNDQwMDksMTQzNzk1LDE1MDcyLDE2Nzg0LDE1Mjk2NCwxNjY2OTAsMTUyOTc1LDEzNjk1NiwxNTI5MjMsMTUyNjEzLDMwOTU4LDE0MzYxOSwxMzcyNTgsMTQzOTI0LDEzNDEyLDE0Mzg4NywxNDM3NDYsMTQ4MTY5LDI2MjU0LDE1OTAx''@;'; put 'put ''MiwyNjIxOSwxOTM0NywyNjE2MCwxNjE5MDQsMTM4NzMxLDI2MjExLDE0NDA4MiwxNDQwOTcsMjYxNDIsMTUzNzE0LDE0NTQ1LDE0NTQ2NiwxNDUzNDAsMTUyNTcsMTQ1MzE0LDE0NDM4MiwyOTkwNCwxNTI1NCwyNjUxMSwxNDkwMzQsMjY4MDYsMjY2NTQsMTUzMDAsMjczMjYsMTQ0MzUsMTQ1''@;'; put 'put ''MzY1LDE0ODYxNSwyNzE4NywyNzIxOCwyNzMzNywyNzM5NywxMzc0OTAsMjU4NzMsMjY3NzYsMjcyMTIsMTUzMTksMjcyNTgsMjc0NzksMTQ3MzkyLDE0NjU4NiwzNzc5MiwzNzYxOCwxNjY4OTAsMTY2NjAzLDM3NTEzLDE2Mzg3MCwxNjYzNjQsMzc5OTEsMjgwNjksMjg0MjcsMTQ5OTk2LDI4''@;'; put 'put ''MDA3LDE0NzMyNywxNTc1OSwyODE2NCwxNDc1MTYsMjMxMDEsMjgxNzAsMjI1OTksMjc5NDAsMzA3ODYsMjg5ODcsMTQ4MjUwLDE0ODA4NiwyODkxMywyOTI2NCwyOTMxOSwyOTMzMiwxNDkzOTEsMTQ5Mjg1LDIwODU3LDE1MDE4MCwxMzI1ODcsMjk4MTgsMTQ3MTkyLDE0NDk5MSwxNTAwOTAs''@;'; put 'put ''MTQ5NzgzLDE1NTYxNywxNjEzNCwxNjA0OSwxNTAyMzksMTY2OTQ3LDE0NzI1MywyNDc0MywxNjExNSwyOTkwMCwyOTc1NiwzNzc2NywyOTc1MSwxNzU2NywxNTkyMTAsMTc3NDUsMzAwODMsMTYyMjcsMTUwNzQ1LDE1MDc5MCwxNjIxNiwzMDAzNywzMDMyMywxNzM1MTAsMTUxMjksMjk4MDAs''@;'; put 'put ''MTY2NjA0LDE0OTkzMSwxNDk5MDIsMTUwOTksMTU4MjEsMTUwMDk0LDE2MTI3LDE0OTk1NywxNDk3NDcsMzczNzAsMjIzMjIsMzc2OTgsMTY2NjI3LDEzNzMxNiwyMDcwMywxNTIwOTcsMTUyMDM5LDMwNTg0LDE0MzkyMiwzMDQ3OCwzMDQ3OSwzMDU4NywxNDkxNDMsMTQ1MjgxLDE0OTQyLDE0''@;'; put 'put ''OTc0NCwyOTc1MiwyOTg1MSwxNjA2MywxNTAyMDIsMTUwMjE1LDE2NTg0LDE1MDE2NiwxNTYwNzgsMzc2MzksMTUyOTYxLDMwNzUwLDMwODYxLDMwODU2LDMwOTMwLDI5NjQ4LDMxMDY1LDE2MTYwMSwxNTMzMTUsMTY2NTQsMzExMzEsMzM5NDIsMzExNDEsMjcxODEsMTQ3MTk0LDMxMjkwLDMx''@;'; put 'put ''MjIwLDE2NzUwLDEzNjkzNCwxNjY5MCwzNzQyOSwzMTIxNywxMzQ0NzYsMTQ5OTAwLDEzMTczNywxNDY4NzQsMTM3MDcwLDEzNzE5LDIxODY3LDEzNjgwLDEzOTk0LDEzMTU0MCwxMzQxNTcsMzE0NTgsMjMxMjksMTQxMDQ1LDE1NDI4NywxNTQyNjgsMjMwNTMsMTMxNjc1LDMwOTYwLDIzMDgy''@;'; put 'put ''LDE1NDU2NiwzMTQ4NiwxNjg4OSwzMTgzNywzMTg1MywxNjkxMywxNTQ1NDcsMTU1MzI0LDE1NTMwMiwzMTk0OSwxNTAwMDksMTM3MTM2LDMxODg2LDMxODY4LDMxOTE4LDI3MzE0LDMyMjIwLDMyMjYzLDMyMjExLDMyNTkwLDE1NjI1NywxNTU5OTYsMTYyNjMyLDMyMTUxLDE1NTI2NiwxNzAw''@;'; put 'put ''MiwxNTg1ODEsMTMzMzk4LDI2NTgyLDEzMTE1MCwxNDQ4NDcsMjI0NjgsMTU2NjkwLDE1NjY2NCwxNDk4NTgsMzI3MzMsMzE1MjcsMTMzMTY0LDE1NDM0NSwxNTQ5NDcsMzE1MDAsMTU1MTUwLDM5Mzk4LDM0MzczLDM5NTIzLDI3MTY0LDE0NDQ0NywxNDgxOCwxNTAwMDcsMTU3MTAxLDM5NDU1''@;'; put 'put ''LDE1NzA4OCwzMzkyMCwxNjAwMzksMTU4OTI5LDE3NjQyLDMzMDc5LDE3NDEwLDMyOTY2LDMzMDMzLDMzMDkwLDE1NzYyMCwzOTEwNywxNTgyNzQsMzMzNzgsMzMzODEsMTU4Mjg5LDMzODc1LDE1OTE0MywzNDMyMCwxNjAyODMsMjMxNzQsMTY3NjcsMTM3MjgwLDIzMzM5LDEzNzM3NywyMzI2''@;'; put 'put ''OCwxMzc0MzIsMzQ0NjQsMTk1MDA0LDE0NjgzMSwzNDg2MSwxNjA4MDIsMjMwNDIsMzQ5MjYsMjAyOTMsMzQ5NTEsMzUwMDcsMzUwNDYsMzUxNzMsMzUxNDksMTUzMjE5LDM1MTU2LDE2MTY2OSwxNjE2NjgsMTY2OTAxLDE2Njg3MywxNjY4MTIsMTY2MzkzLDE2MDQ1LDMzOTU1LDE4MTY1LDE4''@;'; put 'put ''MTI3LDE0MzIyLDM1Mzg5LDM1MzU2LDE2OTAzMiwyNDM5NywzNzQxOSwxNDgxMDAsMjYwNjgsMjg5NjksMjg4NjgsMTM3Mjg1LDQwMzAxLDM1OTk5LDM2MDczLDE2MzI5MiwyMjkzOCwzMDY1OSwyMzAyNCwxNzI2MiwxNDAzNiwzNjM5NCwzNjUxOSwxNTA1MzcsMzY2NTYsMzY2ODIsMTcxNDAs''@;'; put 'put ''Mjc3MzYsMjg2MDMsMTQwMDY1LDE4NTg3LDI4NTM3LDI4Mjk5LDEzNzE3OCwzOTkxMywxNDAwNSwxNDk4MDcsMzcwNTEsMzcwMTUsMjE4NzMsMTg2OTQsMzczMDcsMzc4OTIsMTY2NDc1LDE2NDgyLDE2NjY1MiwzNzkyNywxNjY5NDEsMTY2OTcxLDM0MDIxLDM1MzcxLDM4Mjk3LDM4MzExLDM4''@;'; put 'put ''Mjk1LDM4Mjk0LDE2NzIyMCwyOTc2NSwxNjA2NiwxNDk3NTksMTUwMDgyLDE0ODQ1OCwxNjEwMywxNDM5MDksMzg1NDMsMTY3NjU1LDE2NzUyNiwxNjc1MjUsMTYwNzYsMTQ5OTk3LDE1MDEzNiwxNDc0MzgsMjk3MTQsMjk4MDMsMTYxMjQsMzg3MjEsMTY4MTEyLDI2Njk1LDE4OTczLDE2ODA4''@;'; put 'put ''MywxNTM1NjcsMzg3NDksMzc3MzYsMTY2MjgxLDE2Njk1MCwxNjY3MDMsMTU2NjA2LDM3NTYyLDIzMzEzLDM1Njg5LDE4NzQ4LDI5Njg5LDE0Nzk5NSwzODgxMSwzODc2OSwzOTIyNCwxMzQ5NTAsMjQwMDEsMTY2ODUzLDE1MDE5NCwzODk0MywxNjkxNzgsMzc2MjIsMTY5NDMxLDM3MzQ5LDE3''@;'; put 'put ''NjAwLDE2NjczNiwxNTAxMTksMTY2NzU2LDM5MTMyLDE2NjQ2OSwxNjEyOCwzNzQxOCwxODcyNSwzMzgxMiwzOTIyNywzOTI0NSwxNjI1NjYsMTU4NjksMzkzMjMsMTkzMTEsMzkzMzgsMzk1MTYsMTY2NzU3LDE1MzgwMCwyNzI3OSwzOTQ1NywyMzI5NCwzOTQ3MSwxNzAyMjUsMTkzNDQsMTcw''@;'; put 'put ''MzEyLDM5MzU2LDE5Mzg5LDE5MzUxLDM3NzU3LDIyNjQyLDEzNTkzOCwyMjU2MiwxNDk5NDQsMTM2NDI0LDMwNzg4LDE0MTA4NywxNDY4NzIsMjY4MjEsMTU3NDEsMzc5NzYsMTQ2MzEsMjQ5MTIsMTQxMTg1LDE0MTY3NSwyNDgzOSw0MDAxNSw0MDAxOSw0MDA1OSwzOTk4OSwzOTk1MiwzOTgw''@;'; put 'put ''NywzOTg4NywxNzE1NjUsMzk4MzksMTcyNTMzLDE3MjI4Niw0MDIyNSwxOTYzMCwxNDc3MTYsNDA0NzIsMTk2MzIsNDAyMDQsMTcyNDY4LDE3MjI2OSwxNzIyNzUsMTcwMjg3LDQwMzU3LDMzOTgxLDE1OTI1MCwxNTk3MTEsMTU4NTk0LDM0MzAwLDE3NzE1LDE1OTE0MCwxNTkzNjQsMTU5MjE2''@;'; put 'put ''LDMzODI0LDM0Mjg2LDE1OTIzMiwxNDUzNjcsMTU1NzQ4LDMxMjAyLDE0NDc5NiwxNDQ5NjAsMTg3MzMsMTQ5OTgyLDE1NzE0LDM3ODUxLDM3NTY2LDM3NzA0LDEzMTc3NSwzMDkwNSwzNzQ5NSwzNzk2NSwyMDQ1MiwxMzM3NiwzNjk2NCwxNTI5MjUsMzA3ODEsMzA4MDQsMzA5MDIsMzA3OTUs''@;'; put 'put ''MTM3MDQ3LDE0MzgxNywxNDk4MjUsMTM5NzgsMjAzMzgsMjg2MzQsMjg2MzMsMjg3MDIsMjg3MDIsMjE1MjQsMTQ3ODkzLDIyNDU5LDIyNzcxLDIyNDEwLDQwMjE0LDIyNDg3LDI4OTgwLDEzNDg3LDE0Nzg4NCwyOTE2MywxNTg3ODQsMTUxNDQ3LDIzMzM2LDEzNzE0MSwxNjY0NzMsMjQ4NDQs''@;'; put 'put ''MjMyNDYsMjMwNTEsMTcwODQsMTQ4NjE2LDE0MTI0LDE5MzIzLDE2NjM5NiwzNzgxOSwzNzgxNiwxMzc0MzAsMTM0OTQxLDMzOTA2LDE1ODkxMiwxMzYyMTEsMTQ4MjE4LDE0MjM3NCwxNDg0MTcsMjI5MzIsMTQ2ODcxLDE1NzUwNSwzMjE2OCwxNTU5OTUsMTU1ODEyLDE0OTk0NSwxNDk4OTks''@;'; put 'put ''MTY2Mzk0LDM3NjA1LDI5NjY2LDE2MTA1LDI5ODc2LDE2Njc1NSwxMzczNzUsMTYwOTcsMTUwMTk1LDI3MzUyLDI5NjgzLDI5NjkxLDE2MDg2LDE1MDA3OCwxNTAxNjQsMTM3MTc3LDE1MDExOCwxMzIwMDcsMTM2MjI4LDE0OTk4OSwyOTc2OCwxNDk3ODIsMjg4MzcsMTQ5ODc4LDM3NTA4LDI5''@;'; put 'put ''NjcwLDM3NzI3LDEzMjM1MCwzNzY4MSwxNjY2MDYsMTY2NDIyLDM3NzY2LDE2Njg4NywxNTMwNDUsMTg3NDEsMTY2NTMwLDI5MDM1LDE0OTgyNywxMzQzOTksMjIxODAsMTMyNjM0LDEzNDEyMywxMzQzMjgsMjE3NjIsMzExNzIsMTM3MjEwLDMyMjU0LDEzNjg5OCwxNTAwOTYsMTM3Mjk4LDE3''@;'; put 'put ''NzEwLDM3ODg5LDE0MDkwLDE2NjU5MiwxNDk5MzMsMjI5NjAsMTM3NDA3LDEzNzM0NywxNjA5MDAsMjMyMDEsMTQwNTAsMTQ2Nzc5LDE0ZTMsMzc0NzEsMjMxNjEsMTY2NTI5LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkwOTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5''@;'; put 'put ''MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3MjcsMTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2Njcz''@;'; put 'put ''LDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwxNDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4''@;'; put 'put ''OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywyMzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAy''@;'; put 'put ''MCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcsMTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQw''@;'; put 'put ''LDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQsMjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcy''@;'; put 'put ''NzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQsMjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcyLDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3''@;'; put 'put ''NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2NiwzMDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwzMDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgs''@;'; put 'put ''MjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMx''@;'; put 'put ''MDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3''@;'; put 'put ''LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywzMjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywzMjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwx''@;'; put 'put ''NzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIxNywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4''@;'; put 'put ''MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwzNDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwzNDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0Mywz''@;'; put 'put ''ODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYwODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIw''@;'; put 'put ''MDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUsMTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMsMzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAs''@;'; put 'put ''Mzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgzMDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIx''@;'; put 'put ''MDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUsMTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUsMzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5Njgs''@;'; put 'put ''MTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQwNjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMxNDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyZTMsMjY5MDYs''@;'; put 'put ''MzgwODMsMjI5NTYsMTMyMzExLDIyNTkyLDM4MDgxLDE0MjY1LDEzMjU2NSwxMzI2MjksMTMyNzI2LDEzNjg5MCwyMjM1OSwyOTA0MywxMzM4MjYsMTMzODM3LDEzNDA3OSwyMTYxMCwxOTQ2MTksMTM0MDkxLDIxNjYyLDEzNDEzOSwxMzQyMDMsMTM0MjI3LDEzNDI0NSwxMzQyNjgsMjQ4MDcs''@;'; put 'put ''MTM0Mjg1LDIyMTM4LDEzNDMyNSwxMzQzNjUsMTM0MzgxLDEzNDUxMSwxMzQ1NzgsMTM0NjAwLDI2OTY1LDM5OTgzLDM0NzI1LDEzNDY2MCwxMzQ2NzAsMTM0ODcxLDEzNTA1NiwxMzQ5NTcsMTM0NzcxLDIzNTg0LDEzNTEwMCwyNDA3NSwxMzUyNjAsMTM1MjQ3LDEzNTI4NiwyNjM5OCwxMzUy''@;'; put 'put ''OTEsMTM1MzA0LDEzNTMxOCwxMzg5NSwxMzUzNTksMTM1Mzc5LDEzNTQ3MSwxMzU0ODMsMjEzNDgsMzM5NjUsMTM1OTA3LDEzNjA1MywxMzU5OTAsMzU3MTMsMTM2NTY3LDEzNjcyOSwxMzcxNTUsMTM3MTU5LDIwMDg4LDI4ODU5LDEzNzI2MSwxMzc1NzgsMTM3NzczLDEzNzc5NywxMzgyODIs''@;'; put 'put ''MTM4MzUyLDEzODQxMiwxMzg5NTIsMjUyODMsMTM4OTY1LDEzOTAyOSwyOTA4MCwyNjcwOSwxMzkzMzMsMjcxMTMsMTQwMjQsMTM5OTAwLDE0MDI0NywxNDAyODIsMTQxMDk4LDE0MTQyNSwxNDE2NDcsMzM1MzMsMTQxNjcxLDE0MTcxNSwxNDIwMzcsMzUyMzcsMTQyMDU2LDM2NzY4LDE0MjA5''@;'; put 'put ''NCwzODg0MCwxNDIxNDMsMzg5ODMsMzk2MTMsMTQyNDEyLG51bGwsMTQyNDcyLDE0MjUxOSwxNTQ2MDAsMTQyNjAwLDE0MjYxMCwxNDI3NzUsMTQyNzQxLDE0MjkxNCwxNDMyMjAsMTQzMzA4LDE0MzQxMSwxNDM0NjIsMTQ0MTU5LDE0NDM1MCwyNDQ5NywyNjE4NCwyNjMwMywxNjI0MjUsMTQ0''@;'; put 'put ''NzQzLDE0NDg4MywyOTE4NSwxNDk5NDYsMzA2NzksMTQ0OTIyLDE0NTE3NCwzMjM5MSwxMzE5MTAsMjI3MDksMjYzODIsMjY5MDQsMTQ2MDg3LDE2MTM2NywxNTU2MTgsMTQ2OTYxLDE0NzEyOSwxNjEyNzgsMTM5NDE4LDE4NjQwLDE5MTI4LDE0NzczNywxNjY1NTQsMTQ4MjA2LDE0ODIzNywx''@;'; put 'put ''NDc1MTUsMTQ4Mjc2LDE0ODM3NCwxNTAwODUsMTMyNTU0LDIwOTQ2LDEzMjYyNSwyMjk0MywxMzg5MjAsMTUyOTQsMTQ2Njg3LDE0ODQ4NCwxNDg2OTQsMjI0MDgsMTQ5MTA4LDE0NzQ3LDE0OTI5NSwxNjUzNTIsMTcwNDQxLDE0MTc4LDEzOTcxNSwzNTY3OCwxNjY3MzQsMzkzODIsMTQ5NTIy''@;'; put 'put ''LDE0OTc1NSwxNTAwMzcsMjkxOTMsMTUwMjA4LDEzNDI2NCwyMjg4NSwxNTEyMDUsMTUxNDMwLDEzMjk4NSwzNjU3MCwxNTE1OTYsMjExMzUsMjIzMzUsMjkwNDEsMTUyMjE3LDE1MjYwMSwxNDcyNzQsMTUwMTgzLDIxOTQ4LDE1MjY0NiwxNTI2ODYsMTU4NTQ2LDM3MzMyLDEzNDI3LDE1Mjg5''@;'; put 'put ''NSwxNjEzMzAsMTUyOTI2LDE4MjAwLDE1MjkzMCwxNTI5MzQsMTUzNTQzLDE0OTgyMywxNTM2OTMsMjA1ODIsMTM1NjMsMTQ0MzMyLDI0Nzk4LDE1Mzg1OSwxODMwMCwxNjYyMTYsMTU0Mjg2LDE1NDUwNSwxNTQ2MzAsMTM4NjQwLDIyNDMzLDI5MDA5LDI4NTk4LDE1NTkwNiwxNjI4MzQsMzY5''@;'; put 'put ''NTAsMTU2MDgyLDE1MTQ1MCwzNTY4MiwxNTY2NzQsMTU2NzQ2LDIzODk5LDE1ODcxMSwzNjY2MiwxNTY4MDQsMTM3NTAwLDM1NTYyLDE1MDAwNiwxNTY4MDgsMTQ3NDM5LDE1Njk0NiwxOTM5MiwxNTcxMTksMTU3MzY1LDE0MTA4MywzNzk4OSwxNTM1NjksMjQ5ODEsMjMwNzksMTk0NzY1LDIw''@;'; put 'put ''NDExLDIyMjAxLDE0ODc2OSwxNTc0MzYsMjAwNzQsMTQ5ODEyLDM4NDg2LDI4MDQ3LDE1ODkwOSwxMzg0OCwzNTE5MSwxNTc1OTMsMTU3ODA2LDE1NjY4OSwxNTc3OTAsMjkxNTEsMTU3ODk1LDMxNTU0LDE2ODEyOCwxMzM2NDksMTU3OTkwLDM3MTI0LDE1ODAwOSwzMTMwMSw0MDQzMiwxNTgy''@;'; put 'put ''MDIsMzk0NjIsMTU4MjUzLDEzOTE5LDE1Njc3NywxMzExMDUsMzExMDcsMTU4MjYwLDE1ODU1NSwyMzg1MiwxNDQ2NjUsMzM3NDMsMTU4NjIxLDE4MTI4LDE1ODg4NCwzMDAxMSwzNDkxNywxNTkxNTAsMjI3MTAsMTQxMDgsMTQwNjg1LDE1OTgxOSwxNjAyMDUsMTU0NDQsMTYwMzg0LDE2MDM4''@;'; put 'put ''OSwzNzUwNSwxMzk2NDIsMTYwMzk1LDM3NjgwLDE2MDQ4NiwxNDk5NjgsMjc3MDUsMzgwNDcsMTYwODQ4LDEzNDkwNCwzNDg1NSwzNTA2MSwxNDE2MDYsMTY0OTc5LDEzNzEzNywyODM0NCwxNTAwNTgsMTM3MjQ4LDE0NzU2LDE0MDA5LDIzNTY4LDMxMjAzLDE3NzI3LDI2Mjk0LDE3MTE4MSwx''@;'; put 'put ''NzAxNDgsMzUxMzksMTYxNzQwLDE2MTg4MCwyMjIzMCwxNjYwNywxMzY3MTQsMTQ3NTMsMTQ1MTk5LDE2NDA3MiwxMzYxMzMsMjkxMDEsMzM2MzgsMTYyMjY5LDE2ODM2MCwyMzE0MywxOTYzOSwxNTk5MTksMTY2MzE1LDE2MjMwMSwxNjIzMTQsMTYyNTcxLDE2MzE3NCwxNDc4MzQsMzE1NTUs''@;'; put 'put ''MzExMDIsMTYzODQ5LDI4NTk3LDE3Mjc2NywyNzEzOSwxNjQ2MzIsMjE0MTAsMTU5MjM5LDM3ODIzLDI2Njc4LDM4NzQ5LDE2NDIwNywxNjM4NzUsMTU4MTMzLDEzNjE3MywxNDM5MTksMTYzOTEyLDIzOTQxLDE2Njk2MCwxNjM5NzEsMjIyOTMsMzg5NDcsMTY2MjE3LDIzOTc5LDE0OTg5Niwy''@;'; put 'put ''NjA0NiwyNzA5MywyMTQ1OCwxNTAxODEsMTQ3MzI5LDE1Mzc3LDI2NDIyLDE2Mzk4NCwxNjQwODQsMTY0MTQyLDEzOTE2OSwxNjQxNzUsMTY0MjMzLDE2NDI3MSwxNjQzNzgsMTY0NjE0LDE2NDY1NSwxNjQ3NDYsMTM3NzAsMTY0OTY4LDE2NTU0NiwxODY4MiwyNTU3NCwxNjYyMzAsMzA3Mjgs''@;'; put 'put ''Mzc0NjEsMTY2MzI4LDE3Mzk0LDE2NjM3NSwxNzM3NSwxNjYzNzYsMTY2NzI2LDE2Njg2OCwyMzAzMiwxNjY5MjEsMzY2MTksMTY3ODc3LDE2ODE3MiwzMTU2OSwxNjgyMDgsMTY4MjUyLDE1ODYzLDE2ODI4NiwxNTAyMTgsMzY4MTYsMjkzMjcsMjIxNTUsMTY5MTkxLDE2OTQ0OSwxNjkzOTIs''@;'; put 'put ''MTY5NDAwLDE2OTc3OCwxNzAxOTMsMTcwMzEzLDE3MDM0NiwxNzA0MzUsMTcwNTM2LDE3MDc2NiwxNzEzNTQsMTcxNDE5LDMyNDE1LDE3MTc2OCwxNzE4MTEsMTk2MjAsMzgyMTUsMTcyNjkxLDI5MDkwLDE3Mjc5OSwxOTg1NywzNjg4MiwxNzM1MTUsMTk4NjgsMTM0MzAwLDM2Nzk4LDIxOTUz''@;'; put 'put ''LDM2Nzk0LDE0MDQ2NCwzNjc5MywxNTAxNjMsMTc2NzMsMzIzODMsMjg1MDIsMjczMTMsMjAyMDIsMTM1NDAsMTY2NzAwLDE2MTk0OSwxNDEzOCwzNjQ4MCwxMzcyMDUsMTYzODc2LDE2Njc2NCwxNjY4MDksMTYyMzY2LDE1NzM1OSwxNTg1MSwxNjEzNjUsMTQ2NjE1LDE1MzE0MSwxNTM5NDIs''@;'; put 'put ''MjAxMjIsMTU1MjY1LDE1NjI0OCwyMjIwNywxMzQ3NjUsMzYzNjYsMjM0MDUsMTQ3MDgwLDE1MDY4NiwyNTU2NiwyNTI5NiwxMzcyMDYsMTM3MzM5LDI1OTA0LDIyMDYxLDE1NDY5OCwyMTUzMCwxNTIzMzcsMTU4MTQsMTcxNDE2LDE5NTgxLDIyMDUwLDIyMDQ2LDMyNTg1LDE1NTM1MiwyMjkw''@;'; put 'put ''MSwxNDY3NTIsMzQ2NzIsMTk5OTYsMTM1MTQ2LDEzNDQ3MywxNDUwODIsMzMwNDcsNDAyODYsMzYxMjAsMzAyNjcsNDAwMDUsMzAyODYsMzA2NDksMzc3MDEsMjE1NTQsMzMwOTYsMzM1MjcsMjIwNTMsMzMwNzQsMzM4MTYsMzI5NTcsMjE5OTQsMzEwNzQsMjIwODMsMjE1MjYsMTM0ODEzLDEz''@;'; put 'put ''Nzc0LDIyMDIxLDIyMDAxLDI2MzUzLDE2NDU3OCwxMzg2OSwzMDAwNCwyMmUzLDIxOTQ2LDIxNjU1LDIxODc0LDEzNDIwOSwxMzQyOTQsMjQyNzIsMTUxODgwLDEzNDc3NCwxNDI0MzQsMTM0ODE4LDQwNjE5LDMyMDkwLDIxOTgyLDEzNTI4NSwyNTI0NSwzODc2NSwyMTY1MiwzNjA0NSwyOTE3''@;'; put 'put ''NCwzNzIzOCwyNTU5NiwyNTUyOSwyNTU5OCwyMTg2NSwxNDIxNDcsNDAwNTAsMTQzMDI3LDIwODkwLDEzNTM1LDEzNDU2NywyMDkwMywyMTU4MSwyMTc5MCwyMTc3OSwzMDMxMCwzNjM5NywxNTc4MzQsMzAxMjksMzI5NTAsMzQ4MjAsMzQ2OTQsMzUwMTUsMzMyMDYsMzM4MjAsMTM1MzYxLDE3''@;'; put 'put ''NjQ0LDI5NDQ0LDE0OTI1NCwyMzQ0MCwzMzU0NywxNTc4NDMsMjIxMzksMTQxMDQ0LDE2MzExOSwxNDc4NzUsMTYzMTg3LDE1OTQ0MCwxNjA0MzgsMzcyMzIsMTM1NjQxLDM3Mzg0LDE0NjY4NCwxNzM3MzcsMTM0ODI4LDEzNDkwNSwyOTI4NiwxMzg0MDIsMTgyNTQsMTUxNDkwLDE2MzgzMywx''@;'; put 'put ''MzUxNDcsMTY2MzQsNDAwMjksMjU4ODcsMTQyNzUyLDE4Njc1LDE0OTQ3MiwxNzEzODgsMTM1MTQ4LDEzNDY2NiwyNDY3NCwxNjExODcsMTM1MTQ5LG51bGwsMTU1NzIwLDEzNTU1OSwyOTA5MSwzMjM5OCw0MDI3MiwxOTk5NCwxOTk3MiwxMzY4NywyMzMwOSwyNzgyNiwyMTM1MSwxMzk5Niwx''@;'; put 'put ''NDgxMiwyMTM3MywxMzk4OSwxNDkwMTYsMjI2ODIsMTUwMzgyLDMzMzI1LDIxNTc5LDIyNDQyLDE1NDI2MSwxMzM0OTcsbnVsbCwxNDkzMCwxNDAzODksMjk1NTYsMTcxNjkyLDE5NzIxLDM5OTE3LDE0NjY4NiwxNzE4MjQsMTk1NDcsMTUxNDY1LDE2OTM3NCwxNzE5OTgsMzM4ODQsMTQ2ODcw''@;'; put 'put ''LDE2MDQzNCwxNTc2MTksMTQ1MTg0LDI1MzkwLDMyMDM3LDE0NzE5MSwxNDY5ODgsMTQ4OTAsMzY4NzIsMjExOTYsMTU5ODgsMTM5NDYsMTc4OTcsMTMyMjM4LDMwMjcyLDIzMjgwLDEzNDgzOCwzMDg0MiwxNjM2MzAsMjI2OTUsMTY1NzUsMjIxNDAsMzk4MTksMjM5MjQsMzAyOTIsMTczMTA4''@;'; put 'put ''LDQwNTgxLDE5NjgxLDMwMjAxLDE0MzMxLDI0ODU3LDE0MzU3OCwxNDg0NjYsbnVsbCwyMjEwOSwxMzU4NDksMjI0MzksMTQ5ODU5LDE3MTUyNiwyMTA0NCwxNTk5MTgsMTM3NDEsMjc3MjIsNDAzMTYsMzE4MzAsMzk3MzcsMjI0OTQsMTM3MDY4LDIzNjM1LDI1ODExLDE2OTE2OCwxNTY0Njks''@;'; put 'put ''MTYwMTAwLDM0NDc3LDEzNDQ0MCwxNTkwMTAsMTUwMjQyLDEzNDUxMyxudWxsLDIwOTkwLDEzOTAyMywyMzk1MCwzODY1OSwxMzg3MDUsNDA1NzcsMzY5NDAsMzE1MTksMzk2ODIsMjM3NjEsMzE2NTEsMjUxOTIsMjUzOTcsMzk2NzksMzE2OTUsMzk3MjIsMzE4NzAsMzk3MjYsMzE4MTAsMzE4''@;'; put 'put ''NzgsMzk5NTcsMzE3NDAsMzk2ODksNDA3MjcsMzk5NjMsMTQ5ODIyLDQwNzk0LDIxODc1LDIzNDkxLDIwNDc3LDQwNjAwLDIwNDY2LDIxMDg4LDE1ODc4LDIxMjAxLDIyMzc1LDIwNTY2LDIyOTY3LDI0MDgyLDM4ODU2LDQwMzYzLDM2NzAwLDIxNjA5LDM4ODM2LDM5MjMyLDM4ODQyLDIxMjky''@;'; put 'put ''LDI0ODgwLDI2OTI0LDIxNDY2LDM5OTQ2LDQwMTk0LDE5NTE1LDM4NDY1LDI3MDA4LDIwNjQ2LDMwMDIyLDEzNzA2OSwzOTM4NiwyMTEwNyxudWxsLDM3MjA5LDM4NTI5LDM3MjEyLG51bGwsMzcyMDEsMTY3NTc1LDI1NDcxLDE1OTAxMSwyNzMzOCwyMjAzMywzNzI2MiwzMDA3NCwyNTIyMSwx''@;'; put 'put ''MzIwOTIsMjk1MTksMzE4NTYsMTU0NjU3LDE0NjY4NSxudWxsLDE0OTc4NSwzMDQyMiwzOTgzNywyMDAxMCwxMzQzNTYsMzM3MjYsMzQ4ODIsbnVsbCwyMzYyNiwyNzA3MiwyMDcxNywyMjM5NCwyMTAyMywyNDA1MywyMDE3NCwyNzY5NywxMzE1NzAsMjAyODEsMjE2NjAsMjE3MjIsMjExNDYs''@;'; put 'put ''MzYyMjYsMTM4MjIsMjQzMzIsMTM4MTEsbnVsbCwyNzQ3NCwzNzI0NCw0MDg2OSwzOTgzMSwzODk1OCwzOTA5MiwzOTYxMCw0MDYxNiw0MDU4MCwyOTA1MCwzMTUwOCxudWxsLDI3NjQyLDM0ODQwLDMyNjMyLG51bGwsMjIwNDgsMTczNjQyLDM2NDcxLDQwNzg3LG51bGwsMzYzMDgsMzY0MzEs''@;'; put 'put ''NDA0NzYsMzYzNTMsMjUyMTgsMTY0NzMzLDM2MzkyLDM2NDY5LDMxNDQzLDE1MDEzNSwzMTI5NCwzMDkzNiwyNzg4MiwzNTQzMSwzMDIxNSwxNjY0OTAsNDA3NDIsMjc4NTQsMzQ3NzQsMzAxNDcsMTcyNzIyLDMwODAzLDE5NDYyNCwzNjEwOCwyOTQxMCwyOTU1MywzNTYyOSwyOTQ0MiwyOTkz''@;'; put 'put ''NywzNjA3NSwxNTAyMDMsMzQzNTEsMjQ1MDYsMzQ5NzYsMTc1OTEsbnVsbCwxMzcyNzUsMTU5MjM3LG51bGwsMzU0NTQsMTQwNTcxLG51bGwsMjQ4MjksMzAzMTEsMzk2MzksNDAyNjAsMzc3NDIsMzk4MjMsMzQ4MDUsbnVsbCwzNDgzMSwzNjA4NywyOTQ4NCwzODY4OSwzOTg1NiwxMzc4Miwy''@;'; put 'put ''OTM2MiwxOTQ2MywzMTgyNSwzOTI0MiwxNTU5OTMsMjQ5MjEsMTk0NjAsNDA1OTgsMjQ5NTcsbnVsbCwyMjM2NywyNDk0MywyNTI1NCwyNTE0NSwyNTI5NCwxNDk0MCwyNTA1OCwyMTQxOCwxNDQzNzMsMjU0NDQsMjY2MjYsMTM3NzgsMjM4OTUsMTY2ODUwLDM2ODI2LDE2NzQ4MSxudWxsLDIw''@;'; put 'put ''Njk3LDEzODU2NiwzMDk4MiwyMTI5OCwzODQ1NiwxMzQ5NzEsMTY0ODUsbnVsbCwzMDcxOCxudWxsLDMxOTM4LDE1NTQxOCwzMTk2MiwzMTI3NywzMjg3MCwzMjg2NywzMjA3NywyOTk1NywyOTkzOCwzNTIyMCwzMzMwNiwyNjM4MCwzMjg2NiwxNjA5MDIsMzI4NTksMjk5MzYsMzMwMjcsMzA1''@;'; put 'put ''MDAsMzUyMDksMTU3NjQ0LDMwMDM1LDE1OTQ0MSwzNDcyOSwzNDc2NiwzMzIyNCwzNDcwMCwzNTQwMSwzNjAxMywzNTY1MSwzMDUwNywyOTk0NCwzNDAxMCwxMzg3NywyNzA1OCwzNjI2MixudWxsLDM1MjQxLDI5ODAwLDI4MDg5LDM0NzUzLDE0NzQ3MywyOTkyNywxNTgzNSwyOTA0NiwyNDc0''@;'; put 'put ''MCwyNDk4OCwxNTU2OSwyOTAyNiwyNDY5NSxudWxsLDMyNjI1LDE2NjcwMSwyOTI2NCwyNDgwOSwxOTMyNiwyMTAyNCwxNTM4NCwxNDY2MzEsMTU1MzUxLDE2MTM2NiwxNTI4ODEsMTM3NTQwLDEzNTkzNCwxNzAyNDMsMTU5MTk2LDE1OTkxNywyMzc0NSwxNTYwNzcsMTY2NDE1LDE0NTAxNSwx''@;'; put 'put ''MzEzMTAsMTU3NzY2LDE1MTMxMCwxNzc2MiwyMzMyNywxNTY0OTIsNDA3ODQsNDA2MTQsMTU2MjY3LDEyMjg4LDY1MjkyLDEyMjg5LDEyMjkwLDY1Mjk0LDgyMzEsNjUzMDcsNjUzMDYsNjUzMTEsNjUyODEsNjUwNzIsODIzMCw4MjI5LDY1MTA0LDY1MTA1LDY1MTA2LDE4Myw2NTEwOCw2NTEw''@;'; put 'put ''OSw2NTExMCw2NTExMSw2NTM3Miw4MjExLDY1MDczLDgyMTIsNjUwNzUsOTU4OCw2NTA3Niw2NTEwMyw2NTI4OCw2NTI4OSw2NTA3Nyw2NTA3OCw2NTM3MSw2NTM3Myw2NTA3OSw2NTA4MCwxMjMwOCwxMjMwOSw2NTA4MSw2NTA4MiwxMjMwNCwxMjMwNSw2NTA4Myw2NTA4NCwxMjI5OCwxMjI5''@;'; put 'put ''OSw2NTA4NSw2NTA4NiwxMjI5NiwxMjI5Nyw2NTA4Nyw2NTA4OCwxMjMwMCwxMjMwMSw2NTA4OSw2NTA5MCwxMjMwMiwxMjMwMyw2NTA5MSw2NTA5Miw2NTExMyw2NTExNCw2NTExNSw2NTExNiw2NTExNyw2NTExOCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzE3LDEyMzE4LDgyNDUsODI0Miw2''@;'; put 'put ''NTI4Myw2NTI4Niw2NTI5MCw4MjUxLDE2NywxMjI5MSw5Njc1LDk2NzksOTY1MSw5NjUwLDk2NzgsOTczNCw5NzMzLDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY2MSw5NjYwLDEyOTYzLDg0NTMsMTc1LDY1NTA3LDY1MzQzLDcxNyw2NTA5Nyw2NTA5OCw2NTEwMSw2NTEwMiw2NTA5OSw2NTEwMCw2''@;'; put 'put ''NTExOSw2NTEyMCw2NTEyMSw2NTI5MSw2NTI5MywyMTUsMjQ3LDE3Nyw4NzMwLDY1MzA4LDY1MzEwLDY1MzA5LDg4MDYsODgwNyw4ODAwLDg3MzQsODc4Niw4ODAxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1Mzc0LDg3NDUsODc0Niw4ODY5LDg3MzYsODczNSw4ODk1LDEzMjY2''@;'; put 'put ''LDEzMjY1LDg3NDcsODc1MCw4NzU3LDg3NTYsOTc5Miw5Nzk0LDg4NTMsODg1Nyw4NTkzLDg1OTUsODU5Miw4NTk0LDg1OTgsODU5OSw4NjAxLDg2MDAsODc0MSw4NzM5LDY1Mjk1LDY1MzQwLDg3MjUsNjUxMjgsNjUyODQsNjU1MDksMTIzMDYsNjU1MDQsNjU1MDUsNjUyODUsNjUzMTIsODQ1''@;'; put 'put ''MSw4NDU3LDY1MTI5LDY1MTMwLDY1MTMxLDEzMjY5LDEzMjEyLDEzMjEzLDEzMjE0LDEzMjYyLDEzMjE3LDEzMTk4LDEzMTk5LDEzMjUyLDE3NiwyMDgyNSwyMDgyNywyMDgzMCwyMDgyOSwyMDgzMywyMDgzNSwyMTk5MSwyOTkyOSwzMTk1MCw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYw''@;'; put 'put ''Niw5NjA3LDk2MDgsOTYxNSw5NjE0LDk2MTMsOTYxMiw5NjExLDk2MTAsOTYwOSw5NTMyLDk1MjQsOTUxNiw5NTA4LDk1MDAsOTYyMCw5NDcyLDk0NzQsOTYyMSw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1ODEsOTU4Miw5NTg0LDk1ODMsOTU1Miw5NTY2LDk1NzgsOTU2OSw5Njk4LDk2OTksOTcw''@;'; put 'put ''MSw5NzAwLDk1ODUsOTU4Niw5NTg3LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIz''@;'; put 'put ''MjYsMTIzMjcsMTIzMjgsMTIzMjksMjEzMTMsMjEzMTYsMjEzMTcsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMs''@;'; put 'put ''NjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUz''@;'; put 'put ''NjcsNjUzNjgsNjUzNjksNjUzNzAsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYs''@;'; put 'put ''OTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1''@;'; put 'put ''NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNzI5LDcxMyw3MTQsNzExLDcxNSw5MjE2LDkyMTcsOTIxOCw5MjE5LDkyMjAsOTIyMSw5MjIyLDkyMjMs''@;'; put 'put ''OTIyNCw5MjI1LDkyMjYsOTIyNyw5MjI4LDkyMjksOTIzMCw5MjMxLDkyMzIsOTIzMyw5MjM0LDkyMzUsOTIzNiw5MjM3LDkyMzgsOTIzOSw5MjQwLDkyNDEsOTI0Miw5MjQzLDkyNDQsOTI0NSw5MjQ2LDkyNDcsOTI0OSw4MzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk2OCwyMDA1NywxOTk2OSwxOTk3MSwyMDAzNSwyMDA2MSwyMDEwMiwyMDEwOCwyMDE1NCwy''@;'; put 'put ''MDc5OSwyMDgzNywyMDg0MywyMDk2MCwyMDk5MiwyMDk5MywyMTE0NywyMTI2OSwyMTMxMywyMTM0MCwyMTQ0OCwxOTk3NywxOTk3OSwxOTk3NiwxOTk3OCwyMDAxMSwyMDAyNCwyMDk2MSwyMDAzNywyMDA0MCwyMDA2MywyMDA2MiwyMDExMCwyMDEyOSwyMDgwMCwyMDk5NSwyMTI0MiwyMTMx''@;'; put 'put ''NSwyMTQ0OSwyMTQ3NSwyMjMwMywyMjc2MywyMjgwNSwyMjgyMywyMjg5OSwyMzM3NiwyMzM3NywyMzM3OSwyMzU0NCwyMzU2NywyMzU4NiwyMzYwOCwyMzY2NSwyNDAyOSwyNDAzNywyNDA0OSwyNDA1MCwyNDA1MSwyNDA2MiwyNDE3OCwyNDMxOCwyNDMzMSwyNDMzOSwyNTE2NSwxOTk4NSwx''@;'; put 'put ''OTk4NCwxOTk4MSwyMDAxMywyMDAxNiwyMDAyNSwyMDA0MywyMzYwOSwyMDEwNCwyMDExMywyMDExNywyMDExNCwyMDExNiwyMDEzMCwyMDE2MSwyMDE2MCwyMDE2MywyMDE2NiwyMDE2NywyMDE3MywyMDE3MCwyMDE3MSwyMDE2NCwyMDgwMywyMDgwMSwyMDgzOSwyMDg0NSwyMDg0NiwyMDg0''@;'; put 'put ''NCwyMDg4NywyMDk4MiwyMDk5OCwyMDk5OSwyMWUzLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIxNDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIyODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIz''@;'; put 'put ''NjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkwLDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAw''@;'; put 'put ''LDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIwMDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIwMTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIw''@;'; put 'put ''MTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkxLDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0''@;'; put 'put ''LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIyMjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIyOTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0''@;'; put 'put ''MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkxLDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEy''@;'; put 'put ''LDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDNlNCwzMDAwMSwzMDAwMiwzMDAwMywzMDA5MSwzMDMzMywzMDM4MiwzMDM5OSwzMDQ0NiwzMDY4MywzMDY5MCwzMDcwNywzMTAzNCwzMTE2NiwzMTM0OCwzMTQzNSwxOTk5OCwxOTk5''@;'; put 'put ''OSwyMDA1MCwyMDA1MSwyMDA3MywyMDEyMSwyMDEzMiwyMDEzNCwyMDEzMywyMDIyMywyMDIzMywyMDI0OSwyMDIzNCwyMDI0NSwyMDIzNywyMDI0MCwyMDI0MSwyMDIzOSwyMDIxMCwyMDIxNCwyMDIxOSwyMDIwOCwyMDIxMSwyMDIyMSwyMDIyNSwyMDIzNSwyMDgwOSwyMDgwNywyMDgwNiwy''@;'; put 'put ''MDgwOCwyMDg0MCwyMDg0OSwyMDg3NywyMDkxMiwyMTAxNSwyMTAwOSwyMTAxMCwyMTAwNiwyMTAxNCwyMTE1NSwyMTI1NiwyMTI4MSwyMTI4MCwyMTM2MCwyMTM2MSwyMTUxMywyMTUxOSwyMTUxNiwyMTUxNCwyMTUyMCwyMTUwNSwyMTUxNSwyMTUwOCwyMTUyMSwyMTUxNywyMTUxMiwyMTUw''@;'; put 'put ''NywyMTUxOCwyMTUxMCwyMTUyMiwyMjI0MCwyMjIzOCwyMjIzNywyMjMyMywyMjMyMCwyMjMxMiwyMjMxNywyMjMxNiwyMjMxOSwyMjMxMywyMjgwOSwyMjgxMCwyMjgzOSwyMjg0MCwyMjkxNiwyMjkwNCwyMjkxNSwyMjkwOSwyMjkwNSwyMjkxNCwyMjkxMywyMzM4MywyMzM4NCwyMzQzMSwy''@;'; put 'put ''MzQzMiwyMzQyOSwyMzQzMywyMzU0NiwyMzU3NCwyMzY3MywyNDAzMCwyNDA3MCwyNDE4MiwyNDE4MCwyNDMzNSwyNDM0NywyNDUzNywyNDUzNCwyNTEwMiwyNTEwMCwyNTEwMSwyNTEwNCwyNTE4NywyNTE3OSwyNTE3NiwyNTkxMCwyNjA4OSwyNjA4OCwyNjA5MiwyNjA5MywyNjM1NCwyNjM1''@;'; put 'put ''NSwyNjM3NywyNjQyOSwyNjQyMCwyNjQxNywyNjQyMSwyNzQyNSwyNzQ5MiwyNzUxNSwyNzY3MCwyNzc0MSwyNzczNSwyNzczNywyNzc0MywyNzc0NCwyNzcyOCwyNzczMywyNzc0NSwyNzczOSwyNzcyNSwyNzcyNiwyODc4NCwyOTI3OSwyOTI3NywzMDMzNCwzMTQ4MSwzMTg1OSwzMTk5Miwz''@;'; put 'put ''MjU2NiwzMjY1MCwzMjcwMSwzMjc2OSwzMjc3MSwzMjc4MCwzMjc4NiwzMjgxOSwzMjg5NSwzMjkwNSwzMjkwNywzMjkwOCwzMzI1MSwzMzI1OCwzMzI2NywzMzI3NiwzMzI5MiwzMzMwNywzMzMxMSwzMzM5MCwzMzM5NCwzMzQwNiwzNDQxMSwzNDg4MCwzNDg5MiwzNDkxNSwzNTE5OSwzODQz''@;'; put 'put ''MywyMDAxOCwyMDEzNiwyMDMwMSwyMDMwMywyMDI5NSwyMDMxMSwyMDMxOCwyMDI3NiwyMDMxNSwyMDMwOSwyMDI3MiwyMDMwNCwyMDMwNSwyMDI4NSwyMDI4MiwyMDI4MCwyMDI5MSwyMDMwOCwyMDI4NCwyMDI5NCwyMDMyMywyMDMxNiwyMDMyMCwyMDI3MSwyMDMwMiwyMDI3OCwyMDMxMywy''@;'; put 'put ''MDMxNywyMDI5NiwyMDMxNCwyMDgxMiwyMDgxMSwyMDgxMywyMDg1MywyMDkxOCwyMDkxOSwyMTAyOSwyMTAyOCwyMTAzMywyMTAzNCwyMTAzMiwyMTE2MywyMTE2MSwyMTE2MiwyMTE2NCwyMTI4MywyMTM2MywyMTM2NSwyMTUzMywyMTU0OSwyMTUzNCwyMTU2NiwyMTU0MiwyMTU4MiwyMTU0''@;'; put 'put ''MywyMTU3NCwyMTU3MSwyMTU1NSwyMTU3NiwyMTU3MCwyMTUzMSwyMTU0NSwyMTU3OCwyMTU2MSwyMTU2MywyMTU2MCwyMTU1MCwyMTU1NywyMTU1OCwyMTUzNiwyMTU2NCwyMTU2OCwyMTU1MywyMTU0NywyMTUzNSwyMTU0OCwyMjI1MCwyMjI1NiwyMjI0NCwyMjI1MSwyMjM0NiwyMjM1Mywy''@;'; put 'put ''MjMzNiwyMjM0OSwyMjM0MywyMjM1MCwyMjMzNCwyMjM1MiwyMjM1MSwyMjMzMSwyMjc2NywyMjg0NiwyMjk0MSwyMjkzMCwyMjk1MiwyMjk0MiwyMjk0NywyMjkzNywyMjkzNCwyMjkyNSwyMjk0OCwyMjkzMSwyMjkyMiwyMjk0OSwyMzM4OSwyMzM4OCwyMzM4NiwyMzM4NywyMzQzNiwyMzQz''@;'; put 'put ''NSwyMzQzOSwyMzU5NiwyMzYxNiwyMzYxNywyMzYxNSwyMzYxNCwyMzY5NiwyMzY5NywyMzcwMCwyMzY5MiwyNDA0MywyNDA3NiwyNDIwNywyNDE5OSwyNDIwMiwyNDMxMSwyNDMyNCwyNDM1MSwyNDQyMCwyNDQxOCwyNDQzOSwyNDQ0MSwyNDUzNiwyNDUyNCwyNDUzNSwyNDUyNSwyNDU2MSwy''@;'; put 'put ''NDU1NSwyNDU2OCwyNDU1NCwyNTEwNiwyNTEwNSwyNTIyMCwyNTIzOSwyNTIzOCwyNTIxNiwyNTIwNiwyNTIyNSwyNTE5NywyNTIyNiwyNTIxMiwyNTIxNCwyNTIwOSwyNTIwMywyNTIzNCwyNTE5OSwyNTI0MCwyNTE5OCwyNTIzNywyNTIzNSwyNTIzMywyNTIyMiwyNTkxMywyNTkxNSwyNTkx''@;'; put 'put ''MiwyNjA5NywyNjM1NiwyNjQ2MywyNjQ0NiwyNjQ0NywyNjQ0OCwyNjQ0OSwyNjQ2MCwyNjQ1NCwyNjQ2MiwyNjQ0MSwyNjQzOCwyNjQ2NCwyNjQ1MSwyNjQ1NSwyNzQ5MywyNzU5OSwyNzcxNCwyNzc0MiwyNzgwMSwyNzc3NywyNzc4NCwyNzc4NSwyNzc4MSwyNzgwMywyNzc1NCwyNzc3MCwy''@;'; put 'put ''Nzc5MiwyNzc2MCwyNzc4OCwyNzc1MiwyNzc5OCwyNzc5NCwyNzc3MywyNzc3OSwyNzc2MiwyNzc3NCwyNzc2NCwyNzc4MiwyNzc2NiwyNzc4OSwyNzc5NiwyNzgwMCwyNzc3OCwyODc5MCwyODc5NiwyODc5NywyODc5MiwyOTI4MiwyOTI4MSwyOTI4MCwyOTM4MCwyOTM3OCwyOTU5MCwyOTk5''@;'; put 'put ''NiwyOTk5NSwzMDAwNywzMDAwOCwzMDMzOCwzMDQ0NywzMDY5MSwzMTE2OSwzMTE2OCwzMTE2NywzMTM1MCwzMTk5NSwzMjU5NywzMjkxOCwzMjkxNSwzMjkyNSwzMjkyMCwzMjkyMywzMjkyMiwzMjk0NiwzMzM5MSwzMzQyNiwzMzQxOSwzMzQyMSwzNTIxMSwzNTI4MiwzNTMyOCwzNTg5NSwz''@;'; put 'put ''NTkxMCwzNTkyNSwzNTk5NywzNjE5NiwzNjIwOCwzNjI3NSwzNjUyMywzNjU1NCwzNjc2MywzNjc4NCwzNjgwMiwzNjgwNiwzNjgwNSwzNjgwNCwyNDAzMywzNzAwOSwzNzAyNiwzNzAzNCwzNzAzMCwzNzAyNywzNzE5MywzNzMxOCwzNzMyNCwzODQ1MCwzODQ0NiwzODQ0OSwzODQ0MiwzODQ0''@;'; put 'put ''NCwyMDAwNiwyMDA1NCwyMDA4MywyMDEwNywyMDEyMywyMDEyNiwyMDEzOSwyMDE0MCwyMDMzNSwyMDM4MSwyMDM2NSwyMDMzOSwyMDM1MSwyMDMzMiwyMDM3OSwyMDM2MywyMDM1OCwyMDM1NSwyMDMzNiwyMDM0MSwyMDM2MCwyMDMyOSwyMDM0NywyMDM3NCwyMDM1MCwyMDM2NywyMDM2OSwy''@;'; put 'put ''MDM0NiwyMDgyMCwyMDgxOCwyMDgyMSwyMDg0MSwyMDg1NSwyMDg1NCwyMDg1NiwyMDkyNSwyMDk4OSwyMTA1MSwyMTA0OCwyMTA0NywyMTA1MCwyMTA0MCwyMTAzOCwyMTA0NiwyMTA1NywyMTE4MiwyMTE3OSwyMTMzMCwyMTMzMiwyMTMzMSwyMTMyOSwyMTM1MCwyMTM2NywyMTM2OCwyMTM2''@;'; put 'put ''OSwyMTQ2MiwyMTQ2MCwyMTQ2MywyMTYxOSwyMTYyMSwyMTY1NCwyMTYyNCwyMTY1MywyMTYzMiwyMTYyNywyMTYyMywyMTYzNiwyMTY1MCwyMTYzOCwyMTYyOCwyMTY0OCwyMTYxNywyMTYyMiwyMTY0NCwyMTY1OCwyMTYwMiwyMTYwOCwyMTY0MywyMTYyOSwyMTY0NiwyMjI2NiwyMjQwMywy''@;'; put 'put ''MjM5MSwyMjM3OCwyMjM3NywyMjM2OSwyMjM3NCwyMjM3MiwyMjM5NiwyMjgxMiwyMjg1NywyMjg1NSwyMjg1NiwyMjg1MiwyMjg2OCwyMjk3NCwyMjk3MSwyMjk5NiwyMjk2OSwyMjk1OCwyMjk5MywyMjk4MiwyMjk5MiwyMjk4OSwyMjk4NywyMjk5NSwyMjk4NiwyMjk1OSwyMjk2MywyMjk5''@;'; put 'put ''NCwyMjk4MSwyMzM5MSwyMzM5NiwyMzM5NSwyMzQ0NywyMzQ1MCwyMzQ0OCwyMzQ1MiwyMzQ0OSwyMzQ1MSwyMzU3OCwyMzYyNCwyMzYyMSwyMzYyMiwyMzczNSwyMzcxMywyMzczNiwyMzcyMSwyMzcyMywyMzcyOSwyMzczMSwyNDA4OCwyNDA5MCwyNDA4NiwyNDA4NSwyNDA5MSwyNDA4MSwy''@;'; put 'put ''NDE4NCwyNDIxOCwyNDIxNSwyNDIyMCwyNDIxMywyNDIxNCwyNDMxMCwyNDM1OCwyNDM1OSwyNDM2MSwyNDQ0OCwyNDQ0OSwyNDQ0NywyNDQ0NCwyNDU0MSwyNDU0NCwyNDU3MywyNDU2NSwyNDU3NSwyNDU5MSwyNDU5NiwyNDYyMywyNDYyOSwyNDU5OCwyNDYxOCwyNDU5NywyNDYwOSwyNDYx''@;'; put 'put ''NSwyNDYxNywyNDYxOSwyNDYwMywyNTExMCwyNTEwOSwyNTE1MSwyNTE1MCwyNTE1MiwyNTIxNSwyNTI4OSwyNTI5MiwyNTI4NCwyNTI3OSwyNTI4MiwyNTI3MywyNTI5OCwyNTMwNywyNTI1OSwyNTI5OSwyNTMwMCwyNTI5MSwyNTI4OCwyNTI1NiwyNTI3NywyNTI3NiwyNTI5NiwyNTMwNSwy''@;'; put 'put ''NTI4NywyNTI5MywyNTI2OSwyNTMwNiwyNTI2NSwyNTMwNCwyNTMwMiwyNTMwMywyNTI4NiwyNTI2MCwyNTI5NCwyNTkxOCwyNjAyMywyNjA0NCwyNjEwNiwyNjEzMiwyNjEzMSwyNjEyNCwyNjExOCwyNjExNCwyNjEyNiwyNjExMiwyNjEyNywyNjEzMywyNjEyMiwyNjExOSwyNjM4MSwyNjM3''@;'; put 'put ''OSwyNjQ3NywyNjUwNywyNjUxNywyNjQ4MSwyNjUyNCwyNjQ4MywyNjQ4NywyNjUwMywyNjUyNSwyNjUxOSwyNjQ3OSwyNjQ4MCwyNjQ5NSwyNjUwNSwyNjQ5NCwyNjUxMiwyNjQ4NSwyNjUyMiwyNjUxNSwyNjQ5MiwyNjQ3NCwyNjQ4MiwyNzQyNywyNzQ5NCwyNzQ5NSwyNzUxOSwyNzY2Nywy''@;'; put 'put ''NzY3NSwyNzg3NSwyNzg4MCwyNzg5MSwyNzgyNSwyNzg1MiwyNzg3NywyNzgyNywyNzgzNywyNzgzOCwyNzgzNiwyNzg3NCwyNzgxOSwyNzg2MSwyNzg1OSwyNzgzMiwyNzg0NCwyNzgzMywyNzg0MSwyNzgyMiwyNzg2MywyNzg0NSwyNzg4OSwyNzgzOSwyNzgzNSwyNzg3MywyNzg2NywyNzg1''@;'; put 'put ''MCwyNzgyMCwyNzg4NywyNzg2OCwyNzg2MiwyNzg3MiwyODgyMSwyODgxNCwyODgxOCwyODgxMCwyODgyNSwyOTIyOCwyOTIyOSwyOTI0MCwyOTI1NiwyOTI4NywyOTI4OSwyOTM3NiwyOTM5MCwyOTQwMSwyOTM5OSwyOTM5MiwyOTYwOSwyOTYwOCwyOTU5OSwyOTYxMSwyOTYwNSwzMDAxMywz''@;'; put 'put ''MDEwOSwzMDEwNSwzMDEwNiwzMDM0MCwzMDQwMiwzMDQ1MCwzMDQ1MiwzMDY5MywzMDcxNywzMTAzOCwzMTA0MCwzMTA0MSwzMTE3NywzMTE3NiwzMTM1NCwzMTM1MywzMTQ4MiwzMTk5OCwzMjU5NiwzMjY1MiwzMjY1MSwzMjc3MywzMjk1NCwzMjkzMywzMjkzMCwzMjk0NSwzMjkyOSwzMjkz''@;'; put 'put ''OSwzMjkzNywzMjk0OCwzMjkzOCwzMjk0MywzMzI1MywzMzI3OCwzMzI5MywzMzQ1OSwzMzQzNywzMzQzMywzMzQ1MywzMzQ2OSwzMzQzOSwzMzQ2NSwzMzQ1NywzMzQ1MiwzMzQ0NSwzMzQ1NSwzMzQ2NCwzMzQ0MywzMzQ1NiwzMzQ3MCwzMzQ2MywzNDM4MiwzNDQxNywyMTAyMSwzNDkyMCwz''@;'; put 'put ''NjU1NSwzNjgxNCwzNjgyMCwzNjgxNywzNzA0NSwzNzA0OCwzNzA0MSwzNzA0NiwzNzMxOSwzNzMyOSwzODI2MywzODI3MiwzODQyOCwzODQ2NCwzODQ2MywzODQ1OSwzODQ2OCwzODQ2NiwzODU4NSwzODYzMiwzODczOCwzODc1MCwyMDEyNywyMDE0MSwyMDE0MiwyMDQ0OSwyMDQwNSwyMDM5''@;'; put 'put ''OSwyMDQxNSwyMDQ0OCwyMDQzMywyMDQzMSwyMDQ0NSwyMDQxOSwyMDQwNiwyMDQ0MCwyMDQ0NywyMDQyNiwyMDQzOSwyMDM5OCwyMDQzMiwyMDQyMCwyMDQxOCwyMDQ0MiwyMDQzMCwyMDQ0NiwyMDQwNywyMDgyMywyMDg4MiwyMDg4MSwyMDg5NiwyMTA3MCwyMTA1OSwyMTA2NiwyMTA2OSwy''@;'; put 'put ''MTA2OCwyMTA2NywyMTA2MywyMTE5MSwyMTE5MywyMTE4NywyMTE4NSwyMTI2MSwyMTMzNSwyMTM3MSwyMTQwMiwyMTQ2NywyMTY3NiwyMTY5NiwyMTY3MiwyMTcxMCwyMTcwNSwyMTY4OCwyMTY3MCwyMTY4MywyMTcwMywyMTY5OCwyMTY5MywyMTY3NCwyMTY5NywyMTcwMCwyMTcwNCwyMTY3''@;'; put 'put ''OSwyMTY3NSwyMTY4MSwyMTY5MSwyMTY3MywyMTY3MSwyMTY5NSwyMjI3MSwyMjQwMiwyMjQxMSwyMjQzMiwyMjQzNSwyMjQzNCwyMjQ3OCwyMjQ0NiwyMjQxOSwyMjg2OSwyMjg2NSwyMjg2MywyMjg2MiwyMjg2NCwyMzAwNCwyM2UzLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIz''@;'; put 'put ''MDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1''@;'; put 'put ''LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1''@;'; put 'put ''MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYx''@;'; put 'put ''LDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3''@;'; put 'put ''NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMxLDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUw''@;'; put 'put ''LDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5''@;'; put 'put ''OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAzLDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDczLDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIy''@;'; put 'put ''LDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMxODY5LDMyMDAyLDMyMDA1LDMyZTMsMzIwMDksMzIwMDcsMzIwMDQsMzIwMDYsMzI1NjgsMzI2NTQsMzI3MDMsMzI3''@;'; put 'put ''NzIsMzI3ODQsMzI3ODEsMzI3ODUsMzI4MjIsMzI5ODIsMzI5OTcsMzI5ODYsMzI5NjMsMzI5NjQsMzI5NzIsMzI5OTMsMzI5ODcsMzI5NzQsMzI5OTAsMzI5OTYsMzI5ODksMzMyNjgsMzMzMTQsMzM1MTEsMzM1MzksMzM1NDEsMzM1MDcsMzM0OTksMzM1MTAsMzM1NDAsMzM1MDksMzM1Mzgs''@;'; put 'put ''MzM1NDUsMzM0OTAsMzM0OTUsMzM1MjEsMzM1MzcsMzM1MDAsMzM0OTIsMzM0ODksMzM1MDIsMzM0OTEsMzM1MDMsMzM1MTksMzM1NDIsMzQzODQsMzQ0MjUsMzQ0MjcsMzQ0MjYsMzQ4OTMsMzQ5MjMsMzUyMDEsMzUyODQsMzUzMzYsMzUzMzAsMzUzMzEsMzU5OTgsMzZlMywzNjIxMiwzNjIx''@;'; put 'put ''MSwzNjI3NiwzNjU1NywzNjU1NiwzNjg0OCwzNjgzOCwzNjgzNCwzNjg0MiwzNjgzNywzNjg0NSwzNjg0MywzNjgzNiwzNjg0MCwzNzA2NiwzNzA3MCwzNzA1NywzNzA1OSwzNzE5NSwzNzE5NCwzNzMyNSwzODI3NCwzODQ4MCwzODQ3NSwzODQ3NiwzODQ3NywzODc1NCwzODc2MSwzODg1OSwz''@;'; put 'put ''ODg5MywzODg5OSwzODkxMywzOTA4MCwzOTEzMSwzOTEzNSwzOTMxOCwzOTMyMSwyMDA1NiwyMDE0NywyMDQ5MiwyMDQ5MywyMDUxNSwyMDQ2MywyMDUxOCwyMDUxNywyMDQ3MiwyMDUyMSwyMDUwMiwyMDQ4NiwyMDU0MCwyMDUxMSwyMDUwNiwyMDQ5OCwyMDQ5NywyMDQ3NCwyMDQ4MCwyMDUw''@;'; put 'put ''MCwyMDUyMCwyMDQ2NSwyMDUxMywyMDQ5MSwyMDUwNSwyMDUwNCwyMDQ2NywyMDQ2MiwyMDUyNSwyMDUyMiwyMDQ3OCwyMDUyMywyMDQ4OSwyMDg2MCwyMDkwMCwyMDkwMSwyMDg5OCwyMDk0MSwyMDk0MCwyMDkzNCwyMDkzOSwyMTA3OCwyMTA4NCwyMTA3NiwyMTA4MywyMTA4NSwyMTI5MCwy''@;'; put 'put ''MTM3NSwyMTQwNywyMTQwNSwyMTQ3MSwyMTczNiwyMTc3NiwyMTc2MSwyMTgxNSwyMTc1NiwyMTczMywyMTc0NiwyMTc2NiwyMTc1NCwyMTc4MCwyMTczNywyMTc0MSwyMTcyOSwyMTc2OSwyMTc0MiwyMTczOCwyMTczNCwyMTc5OSwyMTc2NywyMTc1NywyMTc3NSwyMjI3NSwyMjI3NiwyMjQ2''@;'; put 'put ''NiwyMjQ4NCwyMjQ3NSwyMjQ2NywyMjUzNywyMjc5OSwyMjg3MSwyMjg3MiwyMjg3NCwyMzA1NywyMzA2NCwyMzA2OCwyMzA3MSwyMzA2NywyMzA1OSwyMzAyMCwyMzA3MiwyMzA3NSwyMzA4MSwyMzA3NywyMzA1MiwyMzA0OSwyMzQwMywyMzY0MCwyMzQ3MiwyMzQ3NSwyMzQ3OCwyMzQ3Niwy''@;'; put 'put ''MzQ3MCwyMzQ3NywyMzQ4MSwyMzQ4MCwyMzU1NiwyMzYzMywyMzYzNywyMzYzMiwyMzc4OSwyMzgwNSwyMzgwMywyMzc4NiwyMzc4NCwyMzc5MiwyMzc5OCwyMzgwOSwyMzc5NiwyNDA0NiwyNDEwOSwyNDEwNywyNDIzNSwyNDIzNywyNDIzMSwyNDM2OSwyNDQ2NiwyNDQ2NSwyNDQ2NCwyNDY2''@;'; put 'put ''NSwyNDY3NSwyNDY3NywyNDY1NiwyNDY2MSwyNDY4NSwyNDY4MSwyNDY4NywyNDcwOCwyNDczNSwyNDczMCwyNDcxNywyNDcyNCwyNDcxNiwyNDcwOSwyNDcyNiwyNTE1OSwyNTMzMSwyNTM1MiwyNTM0MywyNTQyMiwyNTQwNiwyNTM5MSwyNTQyOSwyNTQxMCwyNTQxNCwyNTQyMywyNTQxNywy''@;'; put 'put ''NTQwMiwyNTQyNCwyNTQwNSwyNTM4NiwyNTM4NywyNTM4NCwyNTQyMSwyNTQyMCwyNTkyOCwyNTkyOSwyNjAwOSwyNjA0OSwyNjA1MywyNjE3OCwyNjE4NSwyNjE5MSwyNjE3OSwyNjE5NCwyNjE4OCwyNjE4MSwyNjE3NywyNjM2MCwyNjM4OCwyNjM4OSwyNjM5MSwyNjY1NywyNjY4MCwyNjY5''@;'; put 'put ''NiwyNjY5NCwyNjcwNywyNjY4MSwyNjY5MCwyNjcwOCwyNjY2NSwyNjgwMywyNjY0NywyNjcwMCwyNjcwNSwyNjY4NSwyNjYxMiwyNjcwNCwyNjY4OCwyNjY4NCwyNjY5MSwyNjY2NiwyNjY5MywyNjY0MywyNjY0OCwyNjY4OSwyNzUzMCwyNzUyOSwyNzU3NSwyNzY4MywyNzY4NywyNzY4OCwy''@;'; put 'put ''NzY4NiwyNzY4NCwyNzg4OCwyODAxMCwyODA1MywyODA0MCwyODAzOSwyODAwNiwyODAyNCwyODAyMywyNzk5MywyODA1MSwyODAxMiwyODA0MSwyODAxNCwyNzk5NCwyODAyMCwyODAwOSwyODA0NCwyODA0MiwyODAyNSwyODAzNywyODAwNSwyODA1MiwyODg3NCwyODg4OCwyODkwMCwyODg4''@;'; put 'put ''OSwyODg3MiwyODg3OSwyOTI0MSwyOTMwNSwyOTQzNiwyOTQzMywyOTQzNywyOTQzMiwyOTQzMSwyOTU3NCwyOTY3NywyOTcwNSwyOTY3OCwyOTY2NCwyOTY3NCwyOTY2MiwzMDAzNiwzMDA0NSwzMDA0NCwzMDA0MiwzMDA0MSwzMDE0MiwzMDE0OSwzMDE1MSwzMDEzMCwzMDEzMSwzMDE0MSwz''@;'; put 'put ''MDE0MCwzMDEzNywzMDE0NiwzMDEzNiwzMDM0NywzMDM4NCwzMDQxMCwzMDQxMywzMDQxNCwzMDUwNSwzMDQ5NSwzMDQ5NiwzMDUwNCwzMDY5NywzMDc2OCwzMDc1OSwzMDc3NiwzMDc0OSwzMDc3MiwzMDc3NSwzMDc1NywzMDc2NSwzMDc1MiwzMDc1MSwzMDc3MCwzMTA2MSwzMTA1NiwzMTA3''@;'; put 'put ''MiwzMTA3MSwzMTA2MiwzMTA3MCwzMTA2OSwzMTA2MywzMTA2NiwzMTIwNCwzMTIwMywzMTIwNywzMTE5OSwzMTIwNiwzMTIwOSwzMTE5MiwzMTM2NCwzMTM2OCwzMTQ0OSwzMTQ5NCwzMTUwNSwzMTg4MSwzMjAzMywzMjAyMywzMjAxMSwzMjAxMCwzMjAzMiwzMjAzNCwzMjAyMCwzMjAxNiwz''@;'; put 'put ''MjAyMSwzMjAyNiwzMjAyOCwzMjAxMywzMjAyNSwzMjAyNywzMjU3MCwzMjYwNywzMjY2MCwzMjcwOSwzMjcwNSwzMjc3NCwzMjc5MiwzMjc4OSwzMjc5MywzMjc5MSwzMjgyOSwzMjgzMSwzMzAwOSwzMzAyNiwzMzAwOCwzMzAyOSwzMzAwNSwzMzAxMiwzMzAzMCwzMzAxNiwzMzAxMSwzMzAz''@;'; put 'put ''MiwzMzAyMSwzMzAzNCwzMzAyMCwzMzAwNywzMzI2MSwzMzI2MCwzMzI4MCwzMzI5NiwzMzMyMiwzMzMyMywzMzMyMCwzMzMyNCwzMzQ2NywzMzU3OSwzMzYxOCwzMzYyMCwzMzYxMCwzMzU5MiwzMzYxNiwzMzYwOSwzMzU4OSwzMzU4OCwzMzYxNSwzMzU4NiwzMzU5MywzMzU5MCwzMzU1OSwz''@;'; put 'put ''MzYwMCwzMzU4NSwzMzU3NiwzMzYwMywzNDM4OCwzNDQ0MiwzNDQ3NCwzNDQ1MSwzNDQ2OCwzNDQ3MywzNDQ0NCwzNDQ2NywzNDQ2MCwzNDkyOCwzNDkzNSwzNDk0NSwzNDk0NiwzNDk0MSwzNDkzNywzNTM1MiwzNTM0NCwzNTM0MiwzNTM0MCwzNTM0OSwzNTMzOCwzNTM1MSwzNTM0NywzNTM1''@;'; put 'put ''MCwzNTM0MywzNTM0NSwzNTkxMiwzNTk2MiwzNTk2MSwzNjAwMSwzNjAwMiwzNjIxNSwzNjUyNCwzNjU2MiwzNjU2NCwzNjU1OSwzNjc4NSwzNjg2NSwzNjg3MCwzNjg1NSwzNjg2NCwzNjg1OCwzNjg1MiwzNjg2NywzNjg2MSwzNjg2OSwzNjg1NiwzNzAxMywzNzA4OSwzNzA4NSwzNzA5MCwz''@;'; put 'put ''NzIwMiwzNzE5NywzNzE5NiwzNzMzNiwzNzM0MSwzNzMzNSwzNzM0MCwzNzMzNywzODI3NSwzODQ5OCwzODQ5OSwzODQ5NywzODQ5MSwzODQ5MywzODUwMCwzODQ4OCwzODQ5NCwzODU4NywzOTEzOCwzOTM0MCwzOTU5MiwzOTY0MCwzOTcxNywzOTczMCwzOTc0MCwyMDA5NCwyMDYwMiwyMDYw''@;'; put 'put ''NSwyMDU3MiwyMDU1MSwyMDU0NywyMDU1NiwyMDU3MCwyMDU1MywyMDU4MSwyMDU5OCwyMDU1OCwyMDU2NSwyMDU5NywyMDU5NiwyMDU5OSwyMDU1OSwyMDQ5NSwyMDU5MSwyMDU4OSwyMDgyOCwyMDg4NSwyMDk3NiwyMTA5OCwyMTEwMywyMTIwMiwyMTIwOSwyMTIwOCwyMTIwNSwyMTI2NCwy''@;'; put 'put ''MTI2MywyMTI3MywyMTMxMSwyMTMxMiwyMTMxMCwyMTQ0MywyNjM2NCwyMTgzMCwyMTg2NiwyMTg2MiwyMTgyOCwyMTg1NCwyMTg1NywyMTgyNywyMTgzNCwyMTgwOSwyMTg0NiwyMTgzOSwyMTg0NSwyMTgwNywyMTg2MCwyMTgxNiwyMTgwNiwyMTg1MiwyMTgwNCwyMTg1OSwyMTgxMSwyMTgy''@;'; put 'put ''NSwyMTg0NywyMjI4MCwyMjI4MywyMjI4MSwyMjQ5NSwyMjUzMywyMjUzOCwyMjUzNCwyMjQ5NiwyMjUwMCwyMjUyMiwyMjUzMCwyMjU4MSwyMjUxOSwyMjUyMSwyMjgxNiwyMjg4MiwyMzA5NCwyMzEwNSwyMzExMywyMzE0MiwyMzE0NiwyMzEwNCwyMzEwMCwyMzEzOCwyMzEzMCwyMzExMCwy''@;'; put 'put ''MzExNCwyMzQwOCwyMzQ5NSwyMzQ5MywyMzQ5MiwyMzQ5MCwyMzQ4NywyMzQ5NCwyMzU2MSwyMzU2MCwyMzU1OSwyMzY0OCwyMzY0NCwyMzY0NSwyMzgxNSwyMzgxNCwyMzgyMiwyMzgzNSwyMzgzMCwyMzg0MiwyMzgyNSwyMzg0OSwyMzgyOCwyMzgzMywyMzg0NCwyMzg0NywyMzgzMSwyNDAz''@;'; put 'put ''NCwyNDEyMCwyNDExOCwyNDExNSwyNDExOSwyNDI0NywyNDI0OCwyNDI0NiwyNDI0NSwyNDI1NCwyNDM3MywyNDM3NSwyNDQwNywyNDQyOCwyNDQyNSwyNDQyNywyNDQ3MSwyNDQ3MywyNDQ3OCwyNDQ3MiwyNDQ4MSwyNDQ4MCwyNDQ3NiwyNDcwMywyNDczOSwyNDcxMywyNDczNiwyNDc0NCwy''@;'; put 'put ''NDc3OSwyNDc1NiwyNDgwNiwyNDc2NSwyNDc3MywyNDc2MywyNDc1NywyNDc5NiwyNDc2NCwyNDc5MiwyNDc4OSwyNDc3NCwyNDc5OSwyNDc2MCwyNDc5NCwyNDc3NSwyNTExNCwyNTExNSwyNTE2MCwyNTUwNCwyNTUxMSwyNTQ1OCwyNTQ5NCwyNTUwNiwyNTUwOSwyNTQ2MywyNTQ0NywyNTQ5''@;'; put 'put ''NiwyNTUxNCwyNTQ1NywyNTUxMywyNTQ4MSwyNTQ3NSwyNTQ5OSwyNTQ1MSwyNTUxMiwyNTQ3NiwyNTQ4MCwyNTQ5NywyNTUwNSwyNTUxNiwyNTQ5MCwyNTQ4NywyNTQ3MiwyNTQ2NywyNTQ0OSwyNTQ0OCwyNTQ2NiwyNTk0OSwyNTk0MiwyNTkzNywyNTk0NSwyNTk0MywyMTg1NSwyNTkzNSwy''@;'; put 'put ''NTk0NCwyNTk0MSwyNTk0MCwyNjAxMiwyNjAxMSwyNjAyOCwyNjA2MywyNjA1OSwyNjA2MCwyNjA2MiwyNjIwNSwyNjIwMiwyNjIxMiwyNjIxNiwyNjIxNCwyNjIwNiwyNjM2MSwyMTIwNywyNjM5NSwyNjc1MywyNjc5OSwyNjc4NiwyNjc3MSwyNjgwNSwyNjc1MSwyNjc0MiwyNjgwMSwyNjc5''@;'; put 'put ''MSwyNjc3NSwyNjgwMCwyNjc1NSwyNjgyMCwyNjc5NywyNjc1OCwyNjc1NywyNjc3MiwyNjc4MSwyNjc5MiwyNjc4MywyNjc4NSwyNjc1NCwyNzQ0MiwyNzU3OCwyNzYyNywyNzYyOCwyNzY5MSwyODA0NiwyODA5MiwyODE0NywyODEyMSwyODA4MiwyODEyOSwyODEwOCwyODEzMiwyODE1NSwy''@;'; put 'put ''ODE1NCwyODE2NSwyODEwMywyODEwNywyODA3OSwyODExMywyODA3OCwyODEyNiwyODE1MywyODA4OCwyODE1MSwyODE0OSwyODEwMSwyODExNCwyODE4NiwyODA4NSwyODEyMiwyODEzOSwyODEyMCwyODEzOCwyODE0NSwyODE0MiwyODEzNiwyODEwMiwyODEwMCwyODA3NCwyODE0MCwyODA5''@;'; put 'put ''NSwyODEzNCwyODkyMSwyODkzNywyODkzOCwyODkyNSwyODkxMSwyOTI0NSwyOTMwOSwyOTMxMywyOTQ2OCwyOTQ2NywyOTQ2MiwyOTQ1OSwyOTQ2NSwyOTU3NSwyOTcwMSwyOTcwNiwyOTY5OSwyOTcwMiwyOTY5NCwyOTcwOSwyOTkyMCwyOTk0MiwyOTk0MywyOTk4MCwyOTk4NiwzMDA1Mywz''@;'; put 'put ''MDA1NCwzMDA1MCwzMDA2NCwzMDA5NSwzMDE2NCwzMDE2NSwzMDEzMywzMDE1NCwzMDE1NywzMDM1MCwzMDQyMCwzMDQxOCwzMDQyNywzMDUxOSwzMDUyNiwzMDUyNCwzMDUxOCwzMDUyMCwzMDUyMiwzMDgyNywzMDc4NywzMDc5OCwzMTA3NywzMTA4MCwzMTA4NSwzMTIyNywzMTM3OCwzMTM4''@;'; put 'put ''MSwzMTUyMCwzMTUyOCwzMTUxNSwzMTUzMiwzMTUyNiwzMTUxMywzMTUxOCwzMTUzNCwzMTg5MCwzMTg5NSwzMTg5MywzMjA3MCwzMjA2NywzMjExMywzMjA0NiwzMjA1NywzMjA2MCwzMjA2NCwzMjA0OCwzMjA1MSwzMjA2OCwzMjA0NywzMjA2NiwzMjA1MCwzMjA0OSwzMjU3MywzMjY3MCwz''@;'; put 'put ''MjY2NiwzMjcxNiwzMjcxOCwzMjcyMiwzMjc5NiwzMjg0MiwzMjgzOCwzMzA3MSwzMzA0NiwzMzA1OSwzMzA2NywzMzA2NSwzMzA3MiwzMzA2MCwzMzI4MiwzMzMzMywzMzMzNSwzMzMzNCwzMzMzNywzMzY3OCwzMzY5NCwzMzY4OCwzMzY1NiwzMzY5OCwzMzY4NiwzMzcyNSwzMzcwNywzMzY4''@;'; put 'put ''MiwzMzY3NCwzMzY4MywzMzY3MywzMzY5NiwzMzY1NSwzMzY1OSwzMzY2MCwzMzY3MCwzMzcwMywzNDM4OSwyNDQyNiwzNDUwMywzNDQ5NiwzNDQ4NiwzNDUwMCwzNDQ4NSwzNDUwMiwzNDUwNywzNDQ4MSwzNDQ3OSwzNDUwNSwzNDg5OSwzNDk3NCwzNDk1MiwzNDk4NywzNDk2MiwzNDk2Niwz''@;'; put 'put ''NDk1NywzNDk1NSwzNTIxOSwzNTIxNSwzNTM3MCwzNTM1NywzNTM2MywzNTM2NSwzNTM3NywzNTM3MywzNTM1OSwzNTM1NSwzNTM2MiwzNTkxMywzNTkzMCwzNjAwOSwzNjAxMiwzNjAxMSwzNjAwOCwzNjAxMCwzNjAwNywzNjE5OSwzNjE5OCwzNjI4NiwzNjI4MiwzNjU3MSwzNjU3NSwzNjg4''@;'; put 'put ''OSwzNjg3NywzNjg5MCwzNjg4NywzNjg5OSwzNjg5NSwzNjg5MywzNjg4MCwzNjg4NSwzNjg5NCwzNjg5NiwzNjg3OSwzNjg5OCwzNjg4NiwzNjg5MSwzNjg4NCwzNzA5NiwzNzEwMSwzNzExNywzNzIwNywzNzMyNiwzNzM2NSwzNzM1MCwzNzM0NywzNzM1MSwzNzM1NywzNzM1MywzODI4MSwz''@;'; put 'put ''ODUwNiwzODUxNywzODUxNSwzODUyMCwzODUxMiwzODUxNiwzODUxOCwzODUxOSwzODUwOCwzODU5MiwzODYzNCwzODYzMywzMTQ1NiwzMTQ1NSwzODkxNCwzODkxNSwzOTc3MCw0MDE2NSw0MDU2NSw0MDU3NSw0MDYxMyw0MDYzNSwyMDY0MiwyMDYyMSwyMDYxMywyMDYzMywyMDYyNSwyMDYw''@;'; put 'put ''OCwyMDYzMCwyMDYzMiwyMDYzNCwyNjM2OCwyMDk3NywyMTEwNiwyMTEwOCwyMTEwOSwyMTA5NywyMTIxNCwyMTIxMywyMTIxMSwyMTMzOCwyMTQxMywyMTg4MywyMTg4OCwyMTkyNywyMTg4NCwyMTg5OCwyMTkxNywyMTkxMiwyMTg5MCwyMTkxNiwyMTkzMCwyMTkwOCwyMTg5NSwyMTg5OSwy''@;'; put 'put ''MTg5MSwyMTkzOSwyMTkzNCwyMTkxOSwyMTgyMiwyMTkzOCwyMTkxNCwyMTk0NywyMTkzMiwyMTkzNywyMTg4NiwyMTg5NywyMTkzMSwyMTkxMywyMjI4NSwyMjU3NSwyMjU3MCwyMjU4MCwyMjU2NCwyMjU3NiwyMjU3NywyMjU2MSwyMjU1NywyMjU2MCwyMjc3NywyMjc3OCwyMjg4MCwyMzE1''@;'; put 'put ''OSwyMzE5NCwyMzE2NywyMzE4NiwyMzE5NSwyMzIwNywyMzQxMSwyMzQwOSwyMzUwNiwyMzUwMCwyMzUwNywyMzUwNCwyMzU2MiwyMzU2MywyMzYwMSwyMzg4NCwyMzg4OCwyMzg2MCwyMzg3OSwyNDA2MSwyNDEzMywyNDEyNSwyNDEyOCwyNDEzMSwyNDE5MCwyNDI2NiwyNDI1NywyNDI1OCwy''@;'; put 'put ''NDI2MCwyNDM4MCwyNDQyOSwyNDQ4OSwyNDQ5MCwyNDQ4OCwyNDc4NSwyNDgwMSwyNDc1NCwyNDc1OCwyNDgwMCwyNDg2MCwyNDg2NywyNDgyNiwyNDg1MywyNDgxNiwyNDgyNywyNDgyMCwyNDkzNiwyNDgxNywyNDg0NiwyNDgyMiwyNDg0MSwyNDgzMiwyNDg1MCwyNTExOSwyNTE2MSwyNTUw''@;'; put 'put ''NywyNTQ4NCwyNTU1MSwyNTUzNiwyNTU3NywyNTU0NSwyNTU0MiwyNTU0OSwyNTU1NCwyNTU3MSwyNTU1MiwyNTU2OSwyNTU1OCwyNTU4MSwyNTU4MiwyNTQ2MiwyNTU4OCwyNTU3OCwyNTU2MywyNTY4MiwyNTU2MiwyNTU5MywyNTk1MCwyNTk1OCwyNTk1NCwyNTk1NSwyNjAwMSwyNmUzLDI2''@;'; put 'put ''MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUx''@;'; put 'put ''LDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4''@;'; put 'put ''MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUz''@;'; put 'put ''LDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5''@;'; put 'put ''OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQzLDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgz''@;'; put 'put ''LDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMyMDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMyMTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIx''@;'; put 'put ''ODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1''@;'; put 'put ''LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMzNzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1''@;'; put 'put ''MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMy''@;'; put 'put ''LDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3''@;'; put 'put ''MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0''@;'; put 'put ''LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIw''@;'; put 'put ''NjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcxLDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3''@;'; put 'put ''LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIyNjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIyNjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIz''@;'; put 'put ''MjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAw''@;'; put 'put ''LDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2''@;'; put 'put ''MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcx''@;'; put 'put ''LDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4''@;'; put 'put ''MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQyLDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAyLDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYx''@;'; put 'put ''LDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMwNDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMwNTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMw''@;'; put 'put ''NTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUyLDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgw''@;'; put 'put ''LDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMyNjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMyOTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMz''@;'; put 'put ''MTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAwLDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkxLDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5''@;'; put 'put ''LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1''@;'; put 'put ''NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMyLDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3''@;'; put 'put ''LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2''@;'; put 'put ''OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2''@;'; put 'put ''LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5''@;'; put 'put ''NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIyLDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5''@;'; put 'put ''LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIyNjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIyNjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIy''@;'; put 'put ''ODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQzLDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1''@;'; put 'put ''LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1''@;'; put 'put ''NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYzLDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1''@;'; put 'put ''LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4''@;'; put 'put ''NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMz''@;'; put 'put ''LDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMxNDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMxNjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMx''@;'; put 'put ''NjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2''@;'; put 'put ''LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMzMzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMzOTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMz''@;'; put 'put ''OTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAxLDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4''@;'; put 'put ''LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2''@;'; put 'put ''NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIx''@;'; put 'put ''LDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5''@;'; put 'put ''NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQxLDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMzLDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDcz''@;'; put 'put ''LDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIyNzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIzMjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIz''@;'; put 'put ''NTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0MzkyLDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0''@;'; put 'put ''LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1''@;'; put 'put ''NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUz''@;'; put 'put ''LDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5''@;'; put 'put ''MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAz''@;'; put 'put ''LDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMxNjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMxNjg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMy''@;'; put 'put ''MjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMxLDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgwLDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5''@;'; put 'put ''LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1''@;'; put 'put ''MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcw''@;'; put 'put ''LDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2''@;'; put 'put ''NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTczLDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2''@;'; put 'put ''LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5''@;'; put 'put ''NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1''@;'; put 'put ''LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIyNzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIzNTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0''@;'; put 'put ''OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcyLDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2''@;'; put 'put ''LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4''@;'; put 'put ''NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0''@;'; put 'put ''LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMxMzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMxNzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMx''@;'; put 'put ''OTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAzLDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUz''@;'; put 'put ''LDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1''@;'; put 'put ''NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4''@;'; put 'put ''LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4''@;'; put 'put ''NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIw''@;'; put 'put ''LDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIyMTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIyMTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIz''@;'; put 'put ''MzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2''@;'; put 'put ''LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4''@;'; put 'put ''NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUyLDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0''@;'; put 'put ''LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMxNDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMxNzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMx''@;'; put 'put ''OTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgz''@;'; put 'put ''LDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0''@;'; put 'put ''NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjExLDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAwLDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDky''@;'; put 'put ''LDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3''@;'; put 'put ''NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgyLDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUx''@;'; put 'put ''LDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIyNzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1''@;'; put 'put ''ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4NjgzLDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3''@;'; put 'put ''LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMxNDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMxNzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMy''@;'; put 'put ''MzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2''@;'; put 'put ''LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2OTk1LDM3ZTMsMzcyOTEsMzcyOTIsMzczMjgsMzc3ODAsMzc3NzAsMzc3ODIsMzc3OTQsMzc4MTEsMzc4MDYsMzc4''@;'; put 'put ''MDQsMzc4MDgsMzc3ODQsMzc3ODYsMzc3ODMsMzgzNTYsMzgzNTgsMzgzNTIsMzgzNTcsMzg2MjYsMzg2MjAsMzg2MTcsMzg2MTksMzg2MjIsMzg2OTIsMzg4MTksMzg4MjIsMzg4MjksMzg5MDUsMzg5ODksMzg5OTEsMzg5ODgsMzg5OTAsMzg5OTUsMzkwOTgsMzkyMzAsMzkyMzEsMzkyMjks''@;'; put 'put ''MzkyMTQsMzkzMzMsMzk0MzgsMzk2MTcsMzk2ODMsMzk2ODYsMzk3NTksMzk3NTgsMzk3NTcsMzk4ODIsMzk4ODEsMzk5MzMsMzk4ODAsMzk4NzIsNDAyNzMsNDAyODUsNDAyODgsNDA2NzIsNDA3MjUsNDA3NDgsMjA3ODcsMjIxODEsMjI3NTAsMjI3NTEsMjI3NTQsMjM1NDEsNDA4NDgsMjQz''@;'; put 'put ''MDAsMjUwNzQsMjUwNzksMjUwNzgsMjUwNzcsMjU4NTYsMjU4NzEsMjYzMzYsMjYzMzMsMjczNjUsMjczNTcsMjczNTQsMjczNDcsMjg2OTksMjg3MDMsMjg3MTIsMjg2OTgsMjg3MDEsMjg2OTMsMjg2OTYsMjkxOTAsMjkxOTcsMjkyNzIsMjkzNDYsMjk1NjAsMjk1NjIsMjk4ODUsMjk4OTgs''@;'; put 'put ''Mjk5MjMsMzAwODcsMzAwODYsMzAzMDMsMzAzMDUsMzA2NjMsMzEwMDEsMzExNTMsMzEzMzksMzEzMzcsMzE4MDYsMzE4MDcsMzE4MDAsMzE4MDUsMzE3OTksMzE4MDgsMzIzNjMsMzIzNjUsMzIzNzcsMzIzNjEsMzIzNjIsMzI2NDUsMzIzNzEsMzI2OTQsMzI2OTcsMzI2OTYsMzMyNDAsMzQy''@;'; put 'put ''ODEsMzQyNjksMzQyODIsMzQyNjEsMzQyNzYsMzQyNzcsMzQyOTUsMzQ4MTEsMzQ4MjEsMzQ4MjksMzQ4MDksMzQ4MTQsMzUxNjgsMzUxNjcsMzUxNTgsMzUxNjYsMzU2NDksMzU2NzYsMzU2NzIsMzU2NTcsMzU2NzQsMzU2NjIsMzU2NjMsMzU2NTQsMzU2NzMsMzYxMDQsMzYxMDYsMzY0NzYs''@;'; put 'put ''MzY0NjYsMzY0ODcsMzY0NzAsMzY0NjAsMzY0NzQsMzY0NjgsMzY2OTIsMzY2ODYsMzY3ODEsMzcwMDIsMzcwMDMsMzcyOTcsMzcyOTQsMzc4NTcsMzc4NDEsMzc4NTUsMzc4MjcsMzc4MzIsMzc4NTIsMzc4NTMsMzc4NDYsMzc4NTgsMzc4MzcsMzc4NDgsMzc4NjAsMzc4NDcsMzc4NjQsMzgz''@;'; put 'put ''NjQsMzg1ODAsMzg2MjcsMzg2OTgsMzg2OTUsMzg3NTMsMzg4NzYsMzg5MDcsMzkwMDYsMzllMywzOTAwMywzOTEwMCwzOTIzNywzOTI0MSwzOTQ0NiwzOTQ0OSwzOTY5MywzOTkxMiwzOTkxMSwzOTg5NCwzOTg5OSw0MDMyOSw0MDI4OSw0MDMwNiw0MDI5OCw0MDMwMCw0MDU5NCw0MDU5OSw0''@;'; put 'put ''MDU5NSw0MDYyOCwyMTI0MCwyMjE4NCwyMjE5OSwyMjE5OCwyMjE5NiwyMjIwNCwyMjc1NiwyMzM2MCwyMzM2MywyMzQyMSwyMzU0MiwyNDAwOSwyNTA4MCwyNTA4MiwyNTg4MCwyNTg3NiwyNTg4MSwyNjM0MiwyNjQwNywyNzM3MiwyODczNCwyODcyMCwyODcyMiwyOTIwMCwyOTU2MywyOTkw''@;'; put 'put ''MywzMDMwNiwzMDMwOSwzMTAxNCwzMTAxOCwzMTAyMCwzMTAxOSwzMTQzMSwzMTQ3OCwzMTgyMCwzMTgxMSwzMTgyMSwzMTk4MywzMTk4NCwzNjc4MiwzMjM4MSwzMjM4MCwzMjM4NiwzMjU4OCwzMjc2OCwzMzI0MiwzMzM4MiwzNDI5OSwzNDI5NywzNDMyMSwzNDI5OCwzNDMxMCwzNDMxNSwz''@;'; put 'put ''NDMxMSwzNDMxNCwzNDgzNiwzNDgzNywzNTE3MiwzNTI1OCwzNTMyMCwzNTY5NiwzNTY5MiwzNTY4NiwzNTY5NSwzNTY3OSwzNTY5MSwzNjExMSwzNjEwOSwzNjQ4OSwzNjQ4MSwzNjQ4NSwzNjQ4MiwzNzMwMCwzNzMyMywzNzkxMiwzNzg5MSwzNzg4NSwzODM2OSwzODcwNCwzOTEwOCwzOTI1''@;'; put 'put ''MCwzOTI0OSwzOTMzNiwzOTQ2NywzOTQ3MiwzOTQ3OSwzOTQ3NywzOTk1NSwzOTk0OSw0MDU2OSw0MDYyOSw0MDY4MCw0MDc1MSw0MDc5OSw0MDgwMyw0MDgwMSwyMDc5MSwyMDc5MiwyMjIwOSwyMjIwOCwyMjIxMCwyMjgwNCwyMzY2MCwyNDAxMywyNTA4NCwyNTA4NiwyNTg4NSwyNTg4NCwy''@;'; put 'put ''NjAwNSwyNjM0NSwyNzM4NywyNzM5NiwyNzM4NiwyNzU3MCwyODc0OCwyOTIxMSwyOTM1MSwyOTkxMCwyOTkwOCwzMDMxMywzMDY3NSwzMTgyNCwzMjM5OSwzMjM5NiwzMjcwMCwzNDMyNywzNDM0OSwzNDMzMCwzNDg1MSwzNDg1MCwzNDg0OSwzNDg0NywzNTE3OCwzNTE4MCwzNTI2MSwzNTcw''@;'; put 'put ''MCwzNTcwMywzNTcwOSwzNjExNSwzNjQ5MCwzNjQ5MywzNjQ5MSwzNjcwMywzNjc4MywzNzMwNiwzNzkzNCwzNzkzOSwzNzk0MSwzNzk0NiwzNzk0NCwzNzkzOCwzNzkzMSwzODM3MCwzODcxMiwzODcxMywzODcwNiwzODkxMSwzOTAxNSwzOTAxMywzOTI1NSwzOTQ5MywzOTQ5MSwzOTQ4OCwz''@;'; put 'put ''OTQ4NiwzOTYzMSwzOTc2NCwzOTc2MSwzOTk4MSwzOTk3Myw0MDM2Nyw0MDM3Miw0MDM4Niw0MDM3Niw0MDYwNSw0MDY4Nyw0MDcyOSw0MDc5Niw0MDgwNiw0MDgwNywyMDc5NiwyMDc5NSwyMjIxNiwyMjIxOCwyMjIxNywyMzQyMywyNDAyMCwyNDAxOCwyNDM5OCwyNTA4NywyNTg5MiwyNzQw''@;'; put 'put ''MiwyNzQ4OSwyODc1MywyODc2MCwyOTU2OCwyOTkyNCwzMDA5MCwzMDMxOCwzMDMxNiwzMTE1NSwzMTg0MCwzMTgzOSwzMjg5NCwzMjg5MywzMzI0NywzNTE4NiwzNTE4MywzNTMyNCwzNTcxMiwzNjExOCwzNjExOSwzNjQ5NywzNjQ5OSwzNjcwNSwzNzE5MiwzNzk1NiwzNzk2OSwzNzk3MCwz''@;'; put 'put ''ODcxNywzODcxOCwzODg1MSwzODg0OSwzOTAxOSwzOTI1MywzOTUwOSwzOTUwMSwzOTYzNCwzOTcwNiw0MDAwOSwzOTk4NSwzOTk5OCwzOTk5NSw0MDQwMyw0MDQwNyw0MDc1Niw0MDgxMiw0MDgxMCw0MDg1MiwyMjIyMCwyNDAyMiwyNTA4OCwyNTg5MSwyNTg5OSwyNTg5OCwyNjM0OCwyNzQw''@;'; put 'put ''OCwyOTkxNCwzMTQzNCwzMTg0NCwzMTg0MywzMTg0NSwzMjQwMywzMjQwNiwzMjQwNCwzMzI1MCwzNDM2MCwzNDM2NywzNDg2NSwzNTcyMiwzNzAwOCwzNzAwNywzNzk4NywzNzk4NCwzNzk4OCwzODc2MCwzOTAyMywzOTI2MCwzOTUxNCwzOTUxNSwzOTUxMSwzOTYzNSwzOTYzNiwzOTYzMyw0''@;'; put 'put ''MDAyMCw0MDAyMyw0MDAyMiw0MDQyMSw0MDYwNyw0MDY5MiwyMjIyNSwyMjc2MSwyNTkwMCwyODc2NiwzMDMyMSwzMDMyMiwzMDY3OSwzMjU5MiwzMjY0OCwzNDg3MCwzNDg3MywzNDkxNCwzNTczMSwzNTczMCwzNTczNCwzMzM5OSwzNjEyMywzNzMxMiwzNzk5NCwzODcyMiwzODcyOCwzODcy''@;'; put 'put ''NCwzODg1NCwzOTAyNCwzOTUxOSwzOTcxNCwzOTc2OCw0MDAzMSw0MDQ0MSw0MDQ0Miw0MDU3Miw0MDU3Myw0MDcxMSw0MDgyMyw0MDgxOCwyNDMwNywyNzQxNCwyODc3MSwzMTg1MiwzMTg1NCwzNDg3NSwzNTI2NCwzNjUxMywzNzMxMywzODAwMiwzOGUzLDM5MDI1LDM5MjYyLDM5NjM4LDM5''@;'; put 'put ''NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4''@;'; put 'put ''LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIw''@;'; put 'put ''MTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0''@;'; put 'put ''NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAs''@;'; put 'put ''MTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIz''@;'; put 'put ''OTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUs''@;'; put 'put ''MTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0''@;'; put 'put ''NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMs''@;'; put 'put ''MTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1''@;'; put 'put ''MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1''@;'; put 'put ''LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3''@;'; put 'put ''LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwxNzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAsMTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcsMTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYs''@;'; put 'put ''MTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGwsNjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMzMSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIx''@;'; put 'put ''Mzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcx''@;'; put 'put ''LDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIyODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIzNjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0''@;'; put 'put ''NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQz''@;'; put 'put ''LDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIyMzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIyOTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIz''@;'; put 'put ''NTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgyLDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMw''@;'; put 'put ''LDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMz''@;'; put 'put ''NDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIyLDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1''@;'; put 'put ''LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIxNTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIxNTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIx''@;'; put 'put ''NTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUxLDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkz''@;'; put 'put ''LDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0''@;'; put 'put ''NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIzLDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTEx''@;'; put 'put ''LDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3''@;'; put 'put ''ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5MzgyLDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkxLDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAw''@;'; put 'put ''LDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMzNDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4''@;'; put 'put ''NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAwLDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUzLDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcw''@;'; put 'put ''LDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIxMzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIxNjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIx''@;'; put 'put ''NjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgxLDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAwLDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2''@;'; put 'put ''LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIyOTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIzMzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIz''@;'; put 'put ''NzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1''@;'; put 'put ''LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1''@;'; put 'put ''Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4''@;'; put 'put ''LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3''@;'; put 'put ''NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUy''@;'; put 'put ''LDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5''@;'; put 'put ''Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUzLDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzEx''@;'; put 'put ''LDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMzNDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMzNDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMz''@;'; put 'put ''NDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODExLDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIzLDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3''@;'; put 'put ''LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIwNDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIwNDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIx''@;'; put 'put ''MzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjkyLDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUz''@;'; put 'put ''LDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIyODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIzMDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIz''@;'; put 'put ''MDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUzLDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5''@;'; put 'put ''LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0''@;'; put 'put ''NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIzLDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0''@;'; put 'put ''LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2''@;'; put 'put ''NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUzLDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2''@;'; put 'put ''LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3''@;'; put 'put ''OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5''@;'; put 'put ''LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5''@;'; put 'put ''NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIyLDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1''@;'; put 'put ''LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMxMTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMxMzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMx''@;'; put 'put ''ODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIzLDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4''@;'; put 'put ''LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMzNDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMzNTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMz''@;'; put 'put ''NTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIxLDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1''@;'; put 'put ''LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIwNDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIwNDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIw''@;'; put 'put ''NDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQyLDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4''@;'; put 'put ''LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIxNzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIxNzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIy''@;'; put 'put ''NDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUwLDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4''@;'; put 'put ''LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0''@;'; put 'put ''NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEzLDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMy''@;'; put 'put ''LDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2''@;'; put 'put ''Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2NjgyLDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQx''@;'; put 'put ''LDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3''@;'; put 'put ''OTk4LDI4MDA3LDI4ZTMsMjgwNTUsMjgwMTYsMjgwMjgsMjc5OTksMjgwMzQsMjgwNTYsMjc5NTEsMjgwMDgsMjgwNDMsMjgwMzAsMjgwMzIsMjgwMzYsMjc5MjYsMjgwMzUsMjgwMjcsMjgwMjksMjgwMjEsMjgwNDgsMjg4OTIsMjg4ODMsMjg4ODEsMjg4OTMsMjg4NzUsMzI1NjksMjg4OTgs''@;'; put 'put ''Mjg4ODcsMjg4ODIsMjg4OTQsMjg4OTYsMjg4ODQsMjg4NzcsMjg4NjksMjg4NzAsMjg4NzEsMjg4OTAsMjg4NzgsMjg4OTcsMjkyNTAsMjkzMDQsMjkzMDMsMjkzMDIsMjk0NDAsMjk0MzQsMjk0MjgsMjk0MzgsMjk0MzAsMjk0MjcsMjk0MzUsMjk0NDEsMjk2NTEsMjk2NTcsMjk2NjksMjk2''@;'; put 'put ''NTQsMjk2MjgsMjk2NzEsMjk2NjcsMjk2NzMsMjk2NjAsMjk2NTAsMjk2NTksMjk2NTIsMjk2NjEsMjk2NTgsMjk2NTUsMjk2NTYsMjk2NzIsMjk5MTgsMjk5MTksMjk5NDAsMjk5NDEsMjk5ODUsMzAwNDMsMzAwNDcsMzAxMjgsMzAxNDUsMzAxMzksMzAxNDgsMzAxNDQsMzAxNDMsMzAxMzQs''@;'; put 'put ''MzAxMzgsMzAzNDYsMzA0MDksMzA0OTMsMzA0OTEsMzA0ODAsMzA0ODMsMzA0ODIsMzA0OTksMzA0ODEsMzA0ODUsMzA0ODksMzA0OTAsMzA0OTgsMzA1MDMsMzA3NTUsMzA3NjQsMzA3NTQsMzA3NzMsMzA3NjcsMzA3NjAsMzA3NjYsMzA3NjMsMzA3NTMsMzA3NjEsMzA3NzEsMzA3NjIsMzA3''@;'; put 'put ''NjksMzEwNjAsMzEwNjcsMzEwNTUsMzEwNjgsMzEwNTksMzEwNTgsMzEwNTcsMzEyMTEsMzEyMTIsMzEyMDAsMzEyMTQsMzEyMTMsMzEyMTAsMzExOTYsMzExOTgsMzExOTcsMzEzNjYsMzEzNjksMzEzNjUsMzEzNzEsMzEzNzIsMzEzNzAsMzEzNjcsMzE0NDgsMzE1MDQsMzE0OTIsMzE1MDcs''@;'; put 'put ''MzE0OTMsMzE1MDMsMzE0OTYsMzE0OTgsMzE1MDIsMzE0OTcsMzE1MDYsMzE4NzYsMzE4ODksMzE4ODIsMzE4ODQsMzE4ODAsMzE4ODUsMzE4NzcsMzIwMzAsMzIwMjksMzIwMTcsMzIwMTQsMzIwMjQsMzIwMjIsMzIwMTksMzIwMzEsMzIwMTgsMzIwMTUsMzIwMTIsMzI2MDQsMzI2MDksMzI2''@;'; put 'put ''MDYsMzI2MDgsMzI2MDUsMzI2MDMsMzI2NjIsMzI2NTgsMzI3MDcsMzI3MDYsMzI3MDQsMzI3OTAsMzI4MzAsMzI4MjUsMzMwMTgsMzMwMTAsMzMwMTcsMzMwMTMsMzMwMjUsMzMwMTksMzMwMjQsMzMyODEsMzMzMjcsMzMzMTcsMzM1ODcsMzM1ODEsMzM2MDQsMzM1NjEsMzM2MTcsMzM1NzMs''@;'; put 'put ''MzM2MjIsMzM1OTksMzM2MDEsMzM1NzQsMzM1NjQsMzM1NzAsMzM2MDIsMzM2MTQsMzM1NjMsMzM1NzgsMzM1NDQsMzM1OTYsMzM2MTMsMzM1NTgsMzM1NzIsMzM1NjgsMzM1OTEsMzM1ODMsMzM1NzcsMzM2MDcsMzM2MDUsMzM2MTIsMzM2MTksMzM1NjYsMzM1ODAsMzM2MTEsMzM1NzUsMzM2''@;'; put 'put ''MDgsMzQzODcsMzQzODYsMzQ0NjYsMzQ0NzIsMzQ0NTQsMzQ0NDUsMzQ0NDksMzQ0NjIsMzQ0MzksMzQ0NTUsMzQ0MzgsMzQ0NDMsMzQ0NTgsMzQ0MzcsMzQ0NjksMzQ0NTcsMzQ0NjUsMzQ0NzEsMzQ0NTMsMzQ0NTYsMzQ0NDYsMzQ0NjEsMzQ0NDgsMzQ0NTIsMzQ4ODMsMzQ4ODQsMzQ5MjUs''@;'; put 'put ''MzQ5MzMsMzQ5MzQsMzQ5MzAsMzQ5NDQsMzQ5MjksMzQ5NDMsMzQ5MjcsMzQ5NDcsMzQ5NDIsMzQ5MzIsMzQ5NDAsMzUzNDYsMzU5MTEsMzU5MjcsMzU5NjMsMzYwMDQsMzYwMDMsMzYyMTQsMzYyMTYsMzYyNzcsMzYyNzksMzYyNzgsMzY1NjEsMzY1NjMsMzY4NjIsMzY4NTMsMzY4NjYsMzY4''@;'; put 'put ''NjMsMzY4NTksMzY4NjgsMzY4NjAsMzY4NTQsMzcwNzgsMzcwODgsMzcwODEsMzcwODIsMzcwOTEsMzcwODcsMzcwOTMsMzcwODAsMzcwODMsMzcwNzksMzcwODQsMzcwOTIsMzcyMDAsMzcxOTgsMzcxOTksMzczMzMsMzczNDYsMzczMzgsMzg0OTIsMzg0OTUsMzg1ODgsMzkxMzksMzk2NDcs''@;'; put 'put ''Mzk3MjcsMjAwOTUsMjA1OTIsMjA1ODYsMjA1NzcsMjA1NzQsMjA1NzYsMjA1NjMsMjA1NTUsMjA1NzMsMjA1OTQsMjA1NTIsMjA1NTcsMjA1NDUsMjA1NzEsMjA1NTQsMjA1NzgsMjA1MDEsMjA1NDksMjA1NzUsMjA1ODUsMjA1ODcsMjA1NzksMjA1ODAsMjA1NTAsMjA1NDQsMjA1OTAsMjA1''@;'; put 'put ''OTUsMjA1NjcsMjA1NjEsMjA5NDQsMjEwOTksMjExMDEsMjExMDAsMjExMDIsMjEyMDYsMjEyMDMsMjEyOTMsMjE0MDQsMjE4NzcsMjE4NzgsMjE4MjAsMjE4MzcsMjE4NDAsMjE4MTIsMjE4MDIsMjE4NDEsMjE4NTgsMjE4MTQsMjE4MTMsMjE4MDgsMjE4NDIsMjE4MjksMjE3NzIsMjE4MTAs''@;'; put 'put ''MjE4NjEsMjE4MzgsMjE4MTcsMjE4MzIsMjE4MDUsMjE4MTksMjE4MjQsMjE4MzUsMjIyODIsMjIyNzksMjI1MjMsMjI1NDgsMjI0OTgsMjI1MTgsMjI0OTIsMjI1MTYsMjI1MjgsMjI1MDksMjI1MjUsMjI1MzYsMjI1MjAsMjI1MzksMjI1MTUsMjI0NzksMjI1MzUsMjI1MTAsMjI0OTksMjI1''@;'; put 'put ''MTQsMjI1MDEsMjI1MDgsMjI0OTcsMjI1NDIsMjI1MjQsMjI1NDQsMjI1MDMsMjI1MjksMjI1NDAsMjI1MTMsMjI1MDUsMjI1MTIsMjI1NDEsMjI1MzIsMjI4NzYsMjMxMzYsMjMxMjgsMjMxMjUsMjMxNDMsMjMxMzQsMjMwOTYsMjMwOTMsMjMxNDksMjMxMjAsMjMxMzUsMjMxNDEsMjMxNDgs''@;'; put 'put ''MjMxMjMsMjMxNDAsMjMxMjcsMjMxMDcsMjMxMzMsMjMxMjIsMjMxMDgsMjMxMzEsMjMxMTIsMjMxODIsMjMxMDIsMjMxMTcsMjMwOTcsMjMxMTYsMjMxNTIsMjMxNDUsMjMxMTEsMjMxMjEsMjMxMjYsMjMxMDYsMjMxMzIsMjM0MTAsMjM0MDYsMjM0ODksMjM0ODgsMjM2NDEsMjM4MzgsMjM4''@;'; put 'put ''MTksMjM4MzcsMjM4MzQsMjM4NDAsMjM4MjAsMjM4NDgsMjM4MjEsMjM4NDYsMjM4NDUsMjM4MjMsMjM4NTYsMjM4MjYsMjM4NDMsMjM4MzksMjM4NTQsMjQxMjYsMjQxMTYsMjQyNDEsMjQyNDQsMjQyNDksMjQyNDIsMjQyNDMsMjQzNzQsMjQzNzYsMjQ0NzUsMjQ0NzAsMjQ0NzksMjQ3MTQs''@;'; put 'put ''MjQ3MjAsMjQ3MTAsMjQ3NjYsMjQ3NTIsMjQ3NjIsMjQ3ODcsMjQ3ODgsMjQ3ODMsMjQ4MDQsMjQ3OTMsMjQ3OTcsMjQ3NzYsMjQ3NTMsMjQ3OTUsMjQ3NTksMjQ3NzgsMjQ3NjcsMjQ3NzEsMjQ3ODEsMjQ3NjgsMjUzOTQsMjU0NDUsMjU0ODIsMjU0NzQsMjU0NjksMjU1MzMsMjU1MDIsMjU1''@;'; put 'put ''MTcsMjU1MDEsMjU0OTUsMjU1MTUsMjU0ODYsMjU0NTUsMjU0NzksMjU0ODgsMjU0NTQsMjU1MTksMjU0NjEsMjU1MDAsMjU0NTMsMjU1MTgsMjU0NjgsMjU1MDgsMjU0MDMsMjU1MDMsMjU0NjQsMjU0NzcsMjU0NzMsMjU0ODksMjU0ODUsMjU0NTYsMjU5MzksMjYwNjEsMjYyMTMsMjYyMDks''@;'; put 'put ''MjYyMDMsMjYyMDEsMjYyMDQsMjYyMTAsMjYzOTIsMjY3NDUsMjY3NTksMjY3NjgsMjY3ODAsMjY3MzMsMjY3MzQsMjY3OTgsMjY3OTUsMjY5NjYsMjY3MzUsMjY3ODcsMjY3OTYsMjY3OTMsMjY3NDEsMjY3NDAsMjY4MDIsMjY3NjcsMjY3NDMsMjY3NzAsMjY3NDgsMjY3MzEsMjY3MzgsMjY3''@;'; put 'put ''OTQsMjY3NTIsMjY3MzcsMjY3NTAsMjY3NzksMjY3NzQsMjY3NjMsMjY3ODQsMjY3NjEsMjY3ODgsMjY3NDQsMjY3NDcsMjY3NjksMjY3NjQsMjY3NjIsMjY3NDksMjc0NDYsMjc0NDMsMjc0NDcsMjc0NDgsMjc1MzcsMjc1MzUsMjc1MzMsMjc1MzQsMjc1MzIsMjc2OTAsMjgwOTYsMjgwNzUs''@;'; put 'put ''MjgwODQsMjgwODMsMjgyNzYsMjgwNzYsMjgxMzcsMjgxMzAsMjgwODcsMjgxNTAsMjgxMTYsMjgxNjAsMjgxMDQsMjgxMjgsMjgxMjcsMjgxMTgsMjgwOTQsMjgxMzMsMjgxMjQsMjgxMjUsMjgxMjMsMjgxNDgsMjgxMDYsMjgwOTMsMjgxNDEsMjgxNDQsMjgwOTAsMjgxMTcsMjgwOTgsMjgx''@;'; put 'put ''MTEsMjgxMDUsMjgxMTIsMjgxNDYsMjgxMTUsMjgxNTcsMjgxMTksMjgxMDksMjgxMzEsMjgwOTEsMjg5MjIsMjg5NDEsMjg5MTksMjg5NTEsMjg5MTYsMjg5NDAsMjg5MTIsMjg5MzIsMjg5MTUsMjg5NDQsMjg5MjQsMjg5MjcsMjg5MzQsMjg5NDcsMjg5MjgsMjg5MjAsMjg5MTgsMjg5Mzks''@;'; put 'put ''Mjg5MzAsMjg5NDIsMjkzMTAsMjkzMDcsMjkzMDgsMjkzMTEsMjk0NjksMjk0NjMsMjk0NDcsMjk0NTcsMjk0NjQsMjk0NTAsMjk0NDgsMjk0MzksMjk0NTUsMjk0NzAsMjk1NzYsMjk2ODYsMjk2ODgsMjk2ODUsMjk3MDAsMjk2OTcsMjk2OTMsMjk3MDMsMjk2OTYsMjk2OTAsMjk2OTIsMjk2''@;'; put 'put ''OTUsMjk3MDgsMjk3MDcsMjk2ODQsMjk3MDQsMzAwNTIsMzAwNTEsMzAxNTgsMzAxNjIsMzAxNTksMzAxNTUsMzAxNTYsMzAxNjEsMzAxNjAsMzAzNTEsMzAzNDUsMzA0MTksMzA1MjEsMzA1MTEsMzA1MDksMzA1MTMsMzA1MTQsMzA1MTYsMzA1MTUsMzA1MjUsMzA1MDEsMzA1MjMsMzA1MTcs''@;'; put 'put ''MzA3OTIsMzA4MDIsMzA3OTMsMzA3OTcsMzA3OTQsMzA3OTYsMzA3NTgsMzA3ODksMzA4MDAsMzEwNzYsMzEwNzksMzEwODEsMzEwODIsMzEwNzUsMzEwODMsMzEwNzMsMzExNjMsMzEyMjYsMzEyMjQsMzEyMjIsMzEyMjMsMzEzNzUsMzEzODAsMzEzNzYsMzE1NDEsMzE1NTksMzE1NDAsMzE1''@;'; put 'put ''MjUsMzE1MzYsMzE1MjIsMzE1MjQsMzE1MzksMzE1MTIsMzE1MzAsMzE1MTcsMzE1MzcsMzE1MzEsMzE1MzMsMzE1MzUsMzE1MzgsMzE1NDQsMzE1MTQsMzE1MjMsMzE4OTIsMzE4OTYsMzE4OTQsMzE5MDcsMzIwNTMsMzIwNjEsMzIwNTYsMzIwNTQsMzIwNTgsMzIwNjksMzIwNDQsMzIwNDEs''@;'; put 'put ''MzIwNjUsMzIwNzEsMzIwNjIsMzIwNjMsMzIwNzQsMzIwNTksMzIwNDAsMzI2MTEsMzI2NjEsMzI2NjgsMzI2NjksMzI2NjcsMzI3MTQsMzI3MTUsMzI3MTcsMzI3MjAsMzI3MjEsMzI3MTEsMzI3MTksMzI3MTMsMzI3OTksMzI3OTgsMzI3OTUsMzI4MzksMzI4MzUsMzI4NDAsMzMwNDgsMzMw''@;'; put 'put ''NjEsMzMwNDksMzMwNTEsMzMwNjksMzMwNTUsMzMwNjgsMzMwNTQsMzMwNTcsMzMwNDUsMzMwNjMsMzMwNTMsMzMwNTgsMzMyOTcsMzMzMzYsMzMzMzEsMzMzMzgsMzMzMzIsMzMzMzAsMzMzOTYsMzM2ODAsMzM2OTksMzM3MDQsMzM2NzcsMzM2NTgsMzM2NTEsMzM3MDAsMzM2NTIsMzM2Nzks''@;'; put 'put ''MzM2NjUsMzM2ODUsMzM2ODksMzM2NTMsMzM2ODQsMzM3MDUsMzM2NjEsMzM2NjcsMzM2NzYsMzM2OTMsMzM2OTEsMzM3MDYsMzM2NzUsMzM2NjIsMzM3MDEsMzM3MTEsMzM2NzIsMzM2ODcsMzM3MTIsMzM2NjMsMzM3MDIsMzM2NzEsMzM3MTAsMzM2NTQsMzM2OTAsMzQzOTMsMzQzOTAsMzQ0''@;'; put 'put ''OTUsMzQ0ODcsMzQ0OTgsMzQ0OTcsMzQ1MDEsMzQ0OTAsMzQ0ODAsMzQ1MDQsMzQ0ODksMzQ0ODMsMzQ0ODgsMzQ1MDgsMzQ0ODQsMzQ0OTEsMzQ0OTIsMzQ0OTksMzQ0OTMsMzQ0OTQsMzQ4OTgsMzQ5NTMsMzQ5NjUsMzQ5ODQsMzQ5NzgsMzQ5ODYsMzQ5NzAsMzQ5NjEsMzQ5NzcsMzQ5NzUs''@;'; put 'put ''MzQ5NjgsMzQ5ODMsMzQ5NjksMzQ5NzEsMzQ5NjcsMzQ5ODAsMzQ5ODgsMzQ5NTYsMzQ5NjMsMzQ5NTgsMzUyMDIsMzUyODYsMzUyODksMzUyODUsMzUzNzYsMzUzNjcsMzUzNzIsMzUzNTgsMzU4OTcsMzU4OTksMzU5MzIsMzU5MzMsMzU5NjUsMzYwMDUsMzYyMjEsMzYyMTksMzYyMTcsMzYy''@;'; put 'put ''ODQsMzYyOTAsMzYyODEsMzYyODcsMzYyODksMzY1NjgsMzY1NzQsMzY1NzMsMzY1NzIsMzY1NjcsMzY1NzYsMzY1NzcsMzY5MDAsMzY4NzUsMzY4ODEsMzY4OTIsMzY4NzYsMzY4OTcsMzcxMDMsMzcwOTgsMzcxMDQsMzcxMDgsMzcxMDYsMzcxMDcsMzcwNzYsMzcwOTksMzcxMDAsMzcwOTcs''@;'; put 'put ''MzcyMDYsMzcyMDgsMzcyMTAsMzcyMDMsMzcyMDUsMzczNTYsMzczNjQsMzczNjEsMzczNjMsMzczNjgsMzczNDgsMzczNjksMzczNTQsMzczNTUsMzczNjcsMzczNTIsMzczNTgsMzgyNjYsMzgyNzgsMzgyODAsMzg1MjQsMzg1MDksMzg1MDcsMzg1MTMsMzg1MTEsMzg1OTEsMzg3NjIsMzg5''@;'; put 'put ''MTYsMzkxNDEsMzkzMTksMjA2MzUsMjA2MjksMjA2MjgsMjA2MzgsMjA2MTksMjA2NDMsMjA2MTEsMjA2MjAsMjA2MjIsMjA2MzcsMjA1ODQsMjA2MzYsMjA2MjYsMjA2MTAsMjA2MTUsMjA4MzEsMjA5NDgsMjEyNjYsMjEyNjUsMjE0MTIsMjE0MTUsMjE5MDUsMjE5MjgsMjE5MjUsMjE5MzMs''@;'; put 'put ''MjE4NzksMjIwODUsMjE5MjIsMjE5MDcsMjE4OTYsMjE5MDMsMjE5NDEsMjE4ODksMjE5MjMsMjE5MDYsMjE5MjQsMjE4ODUsMjE5MDAsMjE5MjYsMjE4ODcsMjE5MDksMjE5MjEsMjE5MDIsMjIyODQsMjI1NjksMjI1ODMsMjI1NTMsMjI1NTgsMjI1NjcsMjI1NjMsMjI1NjgsMjI1MTcsMjI2''@;'; put 'put ''MDAsMjI1NjUsMjI1NTYsMjI1NTUsMjI1NzksMjI1OTEsMjI1ODIsMjI1NzQsMjI1ODUsMjI1ODQsMjI1NzMsMjI1NzIsMjI1ODcsMjI4ODEsMjMyMTUsMjMxODgsMjMxOTksMjMxNjIsMjMyMDIsMjMxOTgsMjMxNjAsMjMyMDYsMjMxNjQsMjMyMDUsMjMyMTIsMjMxODksMjMyMTQsMjMwOTUs''@;'; put 'put ''MjMxNzIsMjMxNzgsMjMxOTEsMjMxNzEsMjMxNzksMjMyMDksMjMxNjMsMjMxNjUsMjMxODAsMjMxOTYsMjMxODMsMjMxODcsMjMxOTcsMjM1MzAsMjM1MDEsMjM0OTksMjM1MDgsMjM1MDUsMjM0OTgsMjM1MDIsMjM1NjQsMjM2MDAsMjM4NjMsMjM4NzUsMjM5MTUsMjM4NzMsMjM4ODMsMjM4''@;'; put 'put ''NzEsMjM4NjEsMjM4ODksMjM4ODYsMjM4OTMsMjM4NTksMjM4NjYsMjM4OTAsMjM4NjksMjM4NTcsMjM4OTcsMjM4NzQsMjM4NjUsMjM4ODEsMjM4NjQsMjM4NjgsMjM4NTgsMjM4NjIsMjM4NzIsMjM4NzcsMjQxMzIsMjQxMjksMjQ0MDgsMjQ0ODYsMjQ0ODUsMjQ0OTEsMjQ3NzcsMjQ3NjEs''@;'; put 'put ''MjQ3ODAsMjQ4MDIsMjQ3ODIsMjQ3NzIsMjQ4NTIsMjQ4MTgsMjQ4NDIsMjQ4NTQsMjQ4MzcsMjQ4MjEsMjQ4NTEsMjQ4MjQsMjQ4MjgsMjQ4MzAsMjQ3NjksMjQ4MzUsMjQ4NTYsMjQ4NjEsMjQ4NDgsMjQ4MzEsMjQ4MzYsMjQ4NDMsMjUxNjIsMjU0OTIsMjU1MjEsMjU1MjAsMjU1NTAsMjU1''@;'; put 'put ''NzMsMjU1NzYsMjU1ODMsMjU1MzksMjU3NTcsMjU1ODcsMjU1NDYsMjU1NjgsMjU1OTAsMjU1NTcsMjU1ODYsMjU1ODksMjU2OTcsMjU1NjcsMjU1MzQsMjU1NjUsMjU1NjQsMjU1NDAsMjU1NjAsMjU1NTUsMjU1MzgsMjU1NDMsMjU1NDgsMjU1NDcsMjU1NDQsMjU1ODQsMjU1NTksMjU1NjEs''@;'; put 'put ''MjU5MDYsMjU5NTksMjU5NjIsMjU5NTYsMjU5NDgsMjU5NjAsMjU5NTcsMjU5OTYsMjYwMTMsMjYwMTQsMjYwMzAsMjYwNjQsMjYwNjYsMjYyMzYsMjYyMjAsMjYyMzUsMjYyNDAsMjYyMjUsMjYyMzMsMjYyMTgsMjYyMjYsMjYzNjksMjY4OTIsMjY4MzUsMjY4ODQsMjY4NDQsMjY5MjIsMjY4''@;'; put 'put ''NjAsMjY4NTgsMjY4NjUsMjY4OTUsMjY4MzgsMjY4NzEsMjY4NTksMjY4NTIsMjY4NzAsMjY4OTksMjY4OTYsMjY4NjcsMjY4NDksMjY4ODcsMjY4MjgsMjY4ODgsMjY5OTIsMjY4MDQsMjY4OTcsMjY4NjMsMjY4MjIsMjY5MDAsMjY4NzIsMjY4MzIsMjY4NzcsMjY4NzYsMjY4NTYsMjY4OTEs''@;'; put 'put ''MjY4OTAsMjY5MDMsMjY4MzAsMjY4MjQsMjY4NDUsMjY4NDYsMjY4NTQsMjY4NjgsMjY4MzMsMjY4ODYsMjY4MzYsMjY4NTcsMjY5MDEsMjY5MTcsMjY4MjMsMjc0NDksMjc0NTEsMjc0NTUsMjc0NTIsMjc1NDAsMjc1NDMsMjc1NDUsMjc1NDEsMjc1ODEsMjc2MzIsMjc2MzQsMjc2MzUsMjc2''@;'; put 'put ''OTYsMjgxNTYsMjgyMzAsMjgyMzEsMjgxOTEsMjgyMzMsMjgyOTYsMjgyMjAsMjgyMjEsMjgyMjksMjgyNTgsMjgyMDMsMjgyMjMsMjgyMjUsMjgyNTMsMjgyNzUsMjgxODgsMjgyMTEsMjgyMzUsMjgyMjQsMjgyNDEsMjgyMTksMjgxNjMsMjgyMDYsMjgyNTQsMjgyNjQsMjgyNTIsMjgyNTcs''@;'; put 'put ''MjgyMDksMjgyMDAsMjgyNTYsMjgyNzMsMjgyNjcsMjgyMTcsMjgxOTQsMjgyMDgsMjgyNDMsMjgyNjEsMjgxOTksMjgyODAsMjgyNjAsMjgyNzksMjgyNDUsMjgyODEsMjgyNDIsMjgyNjIsMjgyMTMsMjgyMTQsMjgyNTAsMjg5NjAsMjg5NTgsMjg5NzUsMjg5MjMsMjg5NzQsMjg5NzcsMjg5''@;'; put 'put ''NjMsMjg5NjUsMjg5NjIsMjg5NzgsMjg5NTksMjg5NjgsMjg5ODYsMjg5NTUsMjkyNTksMjkyNzQsMjkzMjAsMjkzMjEsMjkzMTgsMjkzMTcsMjkzMjMsMjk0NTgsMjk0NTEsMjk0ODgsMjk0NzQsMjk0ODksMjk0OTEsMjk0NzksMjk0OTAsMjk0ODUsMjk0NzgsMjk0NzUsMjk0OTMsMjk0NTIs''@;'; put 'put ''Mjk3NDIsMjk3NDAsMjk3NDQsMjk3MzksMjk3MTgsMjk3MjIsMjk3MjksMjk3NDEsMjk3NDUsMjk3MzIsMjk3MzEsMjk3MjUsMjk3MzcsMjk3MjgsMjk3NDYsMjk5NDcsMjk5OTksMzAwNjMsMzAwNjAsMzAxODMsMzAxNzAsMzAxNzcsMzAxODIsMzAxNzMsMzAxNzUsMzAxODAsMzAxNjcsMzAz''@;'; put 'put ''NTcsMzAzNTQsMzA0MjYsMzA1MzQsMzA1MzUsMzA1MzIsMzA1NDEsMzA1MzMsMzA1MzgsMzA1NDIsMzA1MzksMzA1NDAsMzA2ODYsMzA3MDAsMzA4MTYsMzA4MjAsMzA4MjEsMzA4MTIsMzA4MjksMzA4MzMsMzA4MjYsMzA4MzAsMzA4MzIsMzA4MjUsMzA4MjQsMzA4MTQsMzA4MTgsMzEwOTIs''@;'; put 'put ''MzEwOTEsMzEwOTAsMzEwODgsMzEyMzQsMzEyNDIsMzEyMzUsMzEyNDQsMzEyMzYsMzEzODUsMzE0NjIsMzE0NjAsMzE1NjIsMzE1NDcsMzE1NTYsMzE1NjAsMzE1NjQsMzE1NjYsMzE1NTIsMzE1NzYsMzE1NTcsMzE5MDYsMzE5MDIsMzE5MTIsMzE5MDUsMzIwODgsMzIxMTEsMzIwOTksMzIw''@;'; put 'put ''ODMsMzIwODYsMzIxMDMsMzIxMDYsMzIwNzksMzIxMDksMzIwOTIsMzIxMDcsMzIwODIsMzIwODQsMzIxMDUsMzIwODEsMzIwOTUsMzIwNzgsMzI1NzQsMzI1NzUsMzI2MTMsMzI2MTQsMzI2NzQsMzI2NzIsMzI2NzMsMzI3MjcsMzI4NDksMzI4NDcsMzI4NDgsMzMwMjIsMzI5ODAsMzMwOTEs''@;'; put 'put ''MzMwOTgsMzMxMDYsMzMxMDMsMzMwOTUsMzMwODUsMzMxMDEsMzMwODIsMzMyNTQsMzMyNjIsMzMyNzEsMzMyNzIsMzMyNzMsMzMyODQsMzMzNDAsMzMzNDEsMzMzNDMsMzMzOTcsMzM1OTUsMzM3NDMsMzM3ODUsMzM4MjcsMzM3MjgsMzM3NjgsMzM4MTAsMzM3NjcsMzM3NjQsMzM3ODgsMzM3''@;'; put 'put ''ODIsMzM4MDgsMzM3MzQsMzM3MzYsMzM3NzEsMzM3NjMsMzM3MjcsMzM3OTMsMzM3NTcsMzM3NjUsMzM3NTIsMzM3OTEsMzM3NjEsMzM3MzksMzM3NDIsMzM3NTAsMzM3ODEsMzM3MzcsMzM4MDEsMzM4MDcsMzM3NTgsMzM4MDksMzM3OTgsMzM3MzAsMzM3NzksMzM3NDksMzM3ODYsMzM3MzUs''@;'; put 'put ''MzM3NDUsMzM3NzAsMzM4MTEsMzM3MzEsMzM3NzIsMzM3NzQsMzM3MzIsMzM3ODcsMzM3NTEsMzM3NjIsMzM4MTksMzM3NTUsMzM3OTAsMzQ1MjAsMzQ1MzAsMzQ1MzQsMzQ1MTUsMzQ1MzEsMzQ1MjIsMzQ1MzgsMzQ1MjUsMzQ1MzksMzQ1MjQsMzQ1NDAsMzQ1MzcsMzQ1MTksMzQ1MzYsMzQ1''@;'; put 'put ''MTMsMzQ4ODgsMzQ5MDIsMzQ5MDEsMzUwMDIsMzUwMzEsMzUwMDEsMzVlMywzNTAwOCwzNTAwNiwzNDk5OCwzNTAwNCwzNDk5OSwzNTAwNSwzNDk5NCwzNTA3MywzNTAxNywzNTIyMSwzNTIyNCwzNTIyMywzNTI5MywzNTI5MCwzNTI5MSwzNTQwNiwzNTQwNSwzNTM4NSwzNTQxNywzNTM5Miwz''@;'; put 'put ''NTQxNSwzNTQxNiwzNTM5NiwzNTM5NywzNTQxMCwzNTQwMCwzNTQwOSwzNTQwMiwzNTQwNCwzNTQwNywzNTkzNSwzNTk2OSwzNTk2OCwzNjAyNiwzNjAzMCwzNjAxNiwzNjAyNSwzNjAyMSwzNjIyOCwzNjIyNCwzNjIzMywzNjMxMiwzNjMwNywzNjMwMSwzNjI5NSwzNjMxMCwzNjMxNiwzNjMw''@;'; put 'put ''MywzNjMwOSwzNjMxMywzNjI5NiwzNjMxMSwzNjI5MywzNjU5MSwzNjU5OSwzNjYwMiwzNjYwMSwzNjU4MiwzNjU5MCwzNjU4MSwzNjU5NywzNjU4MywzNjU4NCwzNjU5OCwzNjU4NywzNjU5MywzNjU4OCwzNjU5NiwzNjU4NSwzNjkwOSwzNjkxNiwzNjkxMSwzNzEyNiwzNzE2NCwzNzEyNCwz''@;'; put 'put ''NzExOSwzNzExNiwzNzEyOCwzNzExMywzNzExNSwzNzEyMSwzNzEyMCwzNzEyNywzNzEyNSwzNzEyMywzNzIxNywzNzIyMCwzNzIxNSwzNzIxOCwzNzIxNiwzNzM3NywzNzM4NiwzNzQxMywzNzM3OSwzNzQwMiwzNzQxNCwzNzM5MSwzNzM4OCwzNzM3NiwzNzM5NCwzNzM3NSwzNzM3MywzNzM4''@;'; put 'put ''MiwzNzM4MCwzNzQxNSwzNzM3OCwzNzQwNCwzNzQxMiwzNzQwMSwzNzM5OSwzNzM4MSwzNzM5OCwzODI2NywzODI4NSwzODI4NCwzODI4OCwzODUzNSwzODUyNiwzODUzNiwzODUzNywzODUzMSwzODUyOCwzODU5NCwzODYwMCwzODU5NSwzODY0MSwzODY0MCwzODc2NCwzODc2OCwzODc2Niwz''@;'; put 'put ''ODkxOSwzOTA4MSwzOTE0Nyw0MDE2Niw0MDY5NywyMDA5OSwyMDEwMCwyMDE1MCwyMDY2OSwyMDY3MSwyMDY3OCwyMDY1NCwyMDY3NiwyMDY4MiwyMDY2MCwyMDY4MCwyMDY3NCwyMDY1NiwyMDY3MywyMDY2NiwyMDY1NywyMDY4MywyMDY4MSwyMDY2MiwyMDY2NCwyMDk1MSwyMTExNCwyMTEx''@;'; put 'put ''MiwyMTExNSwyMTExNiwyMTk1NSwyMTk3OSwyMTk2NCwyMTk2OCwyMTk2MywyMTk2MiwyMTk4MSwyMTk1MiwyMTk3MiwyMTk1NiwyMTk5MywyMTk1MSwyMTk3MCwyMTkwMSwyMTk2NywyMTk3MywyMTk4NiwyMTk3NCwyMTk2MCwyMjAwMiwyMTk2NSwyMTk3NywyMTk1NCwyMjI5MiwyMjYxMSwy''@;'; put 'put ''MjYzMiwyMjYyOCwyMjYwNywyMjYwNSwyMjYwMSwyMjYzOSwyMjYxMywyMjYwNiwyMjYyMSwyMjYxNywyMjYyOSwyMjYxOSwyMjU4OSwyMjYyNywyMjY0MSwyMjc4MCwyMzIzOSwyMzIzNiwyMzI0MywyMzIyNiwyMzIyNCwyMzIxNywyMzIyMSwyMzIxNiwyMzIzMSwyMzI0MCwyMzIyNywyMzIz''@;'; put 'put ''OCwyMzIyMywyMzIzMiwyMzI0MiwyMzIyMCwyMzIyMiwyMzI0NSwyMzIyNSwyMzE4NCwyMzUxMCwyMzUxMiwyMzUxMywyMzU4MywyMzYwMywyMzkyMSwyMzkwNywyMzg4MiwyMzkwOSwyMzkyMiwyMzkxNiwyMzkwMiwyMzkxMiwyMzkxMSwyMzkwNiwyNDA0OCwyNDE0MywyNDE0MiwyNDEzOCwy''@;'; put 'put ''NDE0MSwyNDEzOSwyNDI2MSwyNDI2OCwyNDI2MiwyNDI2NywyNDI2MywyNDM4NCwyNDQ5NSwyNDQ5MywyNDgyMywyNDkwNSwyNDkwNiwyNDg3NSwyNDkwMSwyNDg4NiwyNDg4MiwyNDg3OCwyNDkwMiwyNDg3OSwyNDkxMSwyNDg3MywyNDg5NiwyNTEyMCwzNzIyNCwyNTEyMywyNTEyNSwyNTEy''@;'; put 'put ''NCwyNTU0MSwyNTU4NSwyNTU3OSwyNTYxNiwyNTYxOCwyNTYwOSwyNTYzMiwyNTYzNiwyNTY1MSwyNTY2NywyNTYzMSwyNTYyMSwyNTYyNCwyNTY1NywyNTY1NSwyNTYzNCwyNTYzNSwyNTYxMiwyNTYzOCwyNTY0OCwyNTY0MCwyNTY2NSwyNTY1MywyNTY0NywyNTYxMCwyNTYyNiwyNTY2NCwy''@;'; put 'put ''NTYzNywyNTYzOSwyNTYxMSwyNTU3NSwyNTYyNywyNTY0NiwyNTYzMywyNTYxNCwyNTk2NywyNjAwMiwyNjA2NywyNjI0NiwyNjI1MiwyNjI2MSwyNjI1NiwyNjI1MSwyNjI1MCwyNjI2NSwyNjI2MCwyNjIzMiwyNjQwMCwyNjk4MiwyNjk3NSwyNjkzNiwyNjk1OCwyNjk3OCwyNjk5MywyNjk0''@;'; put 'put ''MywyNjk0OSwyNjk4NiwyNjkzNywyNjk0NiwyNjk2NywyNjk2OSwyNzAwMiwyNjk1MiwyNjk1MywyNjkzMywyNjk4OCwyNjkzMSwyNjk0MSwyNjk4MSwyNjg2NCwyN2UzLDI2OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2''@;'; put 'put ''OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUy''@;'; put 'put ''LDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4''@;'; put 'put ''MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQyLDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDEx''@;'; put 'put ''LDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5''@;'; put 'put ''NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5''@;'; put 'put ''LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMwODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMwODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMx''@;'; put 'put ''MTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkwLDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAw''@;'; put 'put ''LDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMyMTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMyMTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMy''@;'; put 'put ''NjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIxLDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5''@;'; put 'put ''LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMzODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMzODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMz''@;'; put 'put ''OTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQzLDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2''@;'; put 'put ''LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1''@;'; put 'put ''MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYwLDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUwLDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQy''@;'; put 'put ''LDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2''@;'; put 'put ''MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMzLDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMxLDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0''@;'; put 'put ''LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3''@;'; put 'put ''NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5''@;'; put 'put ''LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIwNzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIwNzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIx''@;'; put 'put ''MjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgwLDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUw''@;'; put 'put ''LDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIzMjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIzMjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIz''@;'; put 'put ''MjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUyLDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0Mjcw''@;'; put 'put ''LDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0''@;'; put 'put ''OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4''@;'; put 'put ''LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3''@;'; put 'put ''MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUx''@;'; put 'put ''LDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4''@;'; put 'put ''NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYzLDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcx''@;'; put 'put ''LDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMw''@;'; put 'put ''MjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkwLDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkxLDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0''@;'; put 'put ''LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMxMjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMxNjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMx''@;'; put 'put ''NjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0''@;'; put 'put ''LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMyODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMzMTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMz''@;'; put 'put ''OTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0ZTMsMzM5NDksMzM5NTksMzM5NzksMzM5NTQsMzM5NDAsMzM5OTEsMzM5OTYsMzM5NDcsMzM5NjEsMzM5NjcsMzM5NjAs''@;'; put 'put ''MzQwMDYsMzM5NDQsMzM5NzQsMzM5OTksMzM5NTIsMzQwMDcsMzQwMDQsMzQwMDIsMzQwMTEsMzM5NjgsMzM5MzcsMzQ0MDEsMzQ2MTEsMzQ1OTUsMzQ2MDAsMzQ2NjcsMzQ2MjQsMzQ2MDYsMzQ1OTAsMzQ1OTMsMzQ1ODUsMzQ1ODcsMzQ2MjcsMzQ2MDQsMzQ2MjUsMzQ2MjIsMzQ2MzAsMzQ1''@;'; put 'put ''OTIsMzQ2MTAsMzQ2MDIsMzQ2MDUsMzQ2MjAsMzQ1NzgsMzQ2MTgsMzQ2MDksMzQ2MTMsMzQ2MjYsMzQ1OTgsMzQ1OTksMzQ2MTYsMzQ1OTYsMzQ1ODYsMzQ2MDgsMzQ1NzcsMzUwNjMsMzUwNDcsMzUwNTcsMzUwNTgsMzUwNjYsMzUwNzAsMzUwNTQsMzUwNjgsMzUwNjIsMzUwNjcsMzUwNTYs''@;'; put 'put ''MzUwNTIsMzUwNTEsMzUyMjksMzUyMzMsMzUyMzEsMzUyMzAsMzUzMDUsMzUzMDcsMzUzMDQsMzU0OTksMzU0ODEsMzU0NjcsMzU0NzQsMzU0NzEsMzU0NzgsMzU5MDEsMzU5NDQsMzU5NDUsMzYwNTMsMzYwNDcsMzYwNTUsMzYyNDYsMzYzNjEsMzYzNTQsMzYzNTEsMzYzNjUsMzYzNDksMzYz''@;'; put 'put ''NjIsMzYzNTUsMzYzNTksMzYzNTgsMzYzNTcsMzYzNTAsMzYzNTIsMzYzNTYsMzY2MjQsMzY2MjUsMzY2MjIsMzY2MjEsMzcxNTUsMzcxNDgsMzcxNTIsMzcxNTQsMzcxNTEsMzcxNDksMzcxNDYsMzcxNTYsMzcxNTMsMzcxNDcsMzcyNDIsMzcyMzQsMzcyNDEsMzcyMzUsMzc1NDEsMzc1NDAs''@;'; put 'put ''Mzc0OTQsMzc1MzEsMzc0OTgsMzc1MzYsMzc1MjQsMzc1NDYsMzc1MTcsMzc1NDIsMzc1MzAsMzc1NDcsMzc0OTcsMzc1MjcsMzc1MDMsMzc1MzksMzc2MTQsMzc1MTgsMzc1MDYsMzc1MjUsMzc1MzgsMzc1MDEsMzc1MTIsMzc1MzcsMzc1MTQsMzc1MTAsMzc1MTYsMzc1MjksMzc1NDMsMzc1''@;'; put 'put ''MDIsMzc1MTEsMzc1NDUsMzc1MzMsMzc1MTUsMzc0MjEsMzg1NTgsMzg1NjEsMzg2NTUsMzg3NDQsMzg3ODEsMzg3NzgsMzg3ODIsMzg3ODcsMzg3ODQsMzg3ODYsMzg3NzksMzg3ODgsMzg3ODUsMzg3ODMsMzg4NjIsMzg4NjEsMzg5MzQsMzkwODUsMzkwODYsMzkxNzAsMzkxNjgsMzkxNzUs''@;'; put 'put ''MzkzMjUsMzkzMjQsMzkzNjMsMzkzNTMsMzkzNTUsMzkzNTQsMzkzNjIsMzkzNTcsMzkzNjcsMzk2MDEsMzk2NTEsMzk2NTUsMzk3NDIsMzk3NDMsMzk3NzYsMzk3NzcsMzk3NzUsNDAxNzcsNDAxNzgsNDAxODEsNDA2MTUsMjA3MzUsMjA3MzksMjA3ODQsMjA3MjgsMjA3NDIsMjA3NDMsMjA3''@;'; put 'put ''MjYsMjA3MzQsMjA3NDcsMjA3NDgsMjA3MzMsMjA3NDYsMjExMzEsMjExMzIsMjEyMzMsMjEyMzEsMjIwODgsMjIwODIsMjIwOTIsMjIwNjksMjIwODEsMjIwOTAsMjIwODksMjIwODYsMjIxMDQsMjIxMDYsMjIwODAsMjIwNjcsMjIwNzcsMjIwNjAsMjIwNzgsMjIwNzIsMjIwNTgsMjIwNzQs''@;'; put 'put ''MjIyOTgsMjI2OTksMjI2ODUsMjI3MDUsMjI2ODgsMjI2OTEsMjI3MDMsMjI3MDAsMjI2OTMsMjI2ODksMjI3ODMsMjMyOTUsMjMyODQsMjMyOTMsMjMyODcsMjMyODYsMjMyOTksMjMyODgsMjMyOTgsMjMyODksMjMyOTcsMjMzMDMsMjMzMDEsMjMzMTEsMjM2NTUsMjM5NjEsMjM5NTksMjM5''@;'; put 'put ''NjcsMjM5NTQsMjM5NzAsMjM5NTUsMjM5NTcsMjM5NjgsMjM5NjQsMjM5NjksMjM5NjIsMjM5NjYsMjQxNjksMjQxNTcsMjQxNjAsMjQxNTYsMzIyNDMsMjQyODMsMjQyODYsMjQyODksMjQzOTMsMjQ0OTgsMjQ5NzEsMjQ5NjMsMjQ5NTMsMjUwMDksMjUwMDgsMjQ5OTQsMjQ5NjksMjQ5ODcs''@;'; put 'put ''MjQ5NzksMjUwMDcsMjUwMDUsMjQ5OTEsMjQ5NzgsMjUwMDIsMjQ5OTMsMjQ5NzMsMjQ5MzQsMjUwMTEsMjUxMzMsMjU3MTAsMjU3MTIsMjU3NTAsMjU3NjAsMjU3MzMsMjU3NTEsMjU3NTYsMjU3NDMsMjU3MzksMjU3MzgsMjU3NDAsMjU3NjMsMjU3NTksMjU3MDQsMjU3NzcsMjU3NTIsMjU5''@;'; put 'put ''NzQsMjU5NzgsMjU5NzcsMjU5NzksMjYwMzQsMjYwMzUsMjYyOTMsMjYyODgsMjYyODEsMjYyOTAsMjYyOTUsMjYyODIsMjYyODcsMjcxMzYsMjcxNDIsMjcxNTksMjcxMDksMjcxMjgsMjcxNTcsMjcxMjEsMjcxMDgsMjcxNjgsMjcxMzUsMjcxMTYsMjcxMDYsMjcxNjMsMjcxNjUsMjcxMzQs''@;'; put 'put ''MjcxNzUsMjcxMjIsMjcxMTgsMjcxNTYsMjcxMjcsMjcxMTEsMjcyMDAsMjcxNDQsMjcxMTAsMjcxMzEsMjcxNDksMjcxMzIsMjcxMTUsMjcxNDUsMjcxNDAsMjcxNjAsMjcxNzMsMjcxNTEsMjcxMjYsMjcxNzQsMjcxNDMsMjcxMjQsMjcxNTgsMjc0NzMsMjc1NTcsMjc1NTUsMjc1NTQsMjc1''@;'; put 'put ''NTgsMjc2NDksMjc2NDgsMjc2NDcsMjc2NTAsMjg0ODEsMjg0NTQsMjg1NDIsMjg1NTEsMjg2MTQsMjg1NjIsMjg1NTcsMjg1NTMsMjg1NTYsMjg1MTQsMjg0OTUsMjg1NDksMjg1MDYsMjg1NjYsMjg1MzQsMjg1MjQsMjg1NDYsMjg1MDEsMjg1MzAsMjg0OTgsMjg0OTYsMjg1MDMsMjg1NjQs''@;'; put 'put ''Mjg1NjMsMjg1MDksMjg0MTYsMjg1MTMsMjg1MjMsMjg1NDEsMjg1MTksMjg1NjAsMjg0OTksMjg1NTUsMjg1MjEsMjg1NDMsMjg1NjUsMjg1MTUsMjg1MzUsMjg1MjIsMjg1MzksMjkxMDYsMjkxMDMsMjkwODMsMjkxMDQsMjkwODgsMjkwODIsMjkwOTcsMjkxMDksMjkwODUsMjkwOTMsMjkw''@;'; put 'put ''ODYsMjkwOTIsMjkwODksMjkwOTgsMjkwODQsMjkwOTUsMjkxMDcsMjkzMzYsMjkzMzgsMjk1MjgsMjk1MjIsMjk1MzQsMjk1MzUsMjk1MzYsMjk1MzMsMjk1MzEsMjk1MzcsMjk1MzAsMjk1MjksMjk1MzgsMjk4MzEsMjk4MzMsMjk4MzQsMjk4MzAsMjk4MjUsMjk4MjEsMjk4MjksMjk4MzIs''@;'; put 'put ''Mjk4MjAsMjk4MTcsMjk5NjAsMjk5NTksMzAwNzgsMzAyNDUsMzAyMzgsMzAyMzMsMzAyMzcsMzAyMzYsMzAyNDMsMzAyMzQsMzAyNDgsMzAyMzUsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjMsMzA2MDUsMzA2MDcsMzA2MDEsMzA2MDAsMzA5MjUsMzA5MDcsMzA5MjcsMzA5MjQsMzA5MjksMzA5''@;'; put 'put ''MjYsMzA5MzIsMzA5MjAsMzA5MTUsMzA5MTYsMzA5MjEsMzExMzAsMzExMzcsMzExMzYsMzExMzIsMzExMzgsMzExMzEsMjc1MTAsMzEyODksMzE0MTAsMzE0MTIsMzE0MTEsMzE2NzEsMzE2OTEsMzE2NzgsMzE2NjAsMzE2OTQsMzE2NjMsMzE2NzMsMzE2OTAsMzE2NjksMzE5NDEsMzE5NDQs''@;'; put 'put ''MzE5NDgsMzE5NDcsMzIyNDcsMzIyMTksMzIyMzQsMzIyMzEsMzIyMTUsMzIyMjUsMzIyNTksMzIyNTAsMzIyMzAsMzIyNDYsMzIyNDEsMzIyNDAsMzIyMzgsMzIyMjMsMzI2MzAsMzI2ODQsMzI2ODgsMzI2ODUsMzI3NDksMzI3NDcsMzI3NDYsMzI3NDgsMzI3NDIsMzI3NDQsMzI4NjgsMzI4''@;'; put 'put ''NzEsMzMxODcsMzMxODMsMzMxODIsMzMxNzMsMzMxODYsMzMxNzcsMzMxNzUsMzMzMDIsMzMzNTksMzMzNjMsMzMzNjIsMzMzNjAsMzMzNTgsMzMzNjEsMzQwODQsMzQxMDcsMzQwNjMsMzQwNDgsMzQwODksMzQwNjIsMzQwNTcsMzQwNjEsMzQwNzksMzQwNTgsMzQwODcsMzQwNzYsMzQwNDMs''@;'; put 'put ''MzQwOTEsMzQwNDIsMzQwNTYsMzQwNjAsMzQwMzYsMzQwOTAsMzQwMzQsMzQwNjksMzQwMzksMzQwMjcsMzQwMzUsMzQwNDQsMzQwNjYsMzQwMjYsMzQwMjUsMzQwNzAsMzQwNDYsMzQwODgsMzQwNzcsMzQwOTQsMzQwNTAsMzQwNDUsMzQwNzgsMzQwMzgsMzQwOTcsMzQwODYsMzQwMjMsMzQw''@;'; put 'put ''MjQsMzQwMzIsMzQwMzEsMzQwNDEsMzQwNzIsMzQwODAsMzQwOTYsMzQwNTksMzQwNzMsMzQwOTUsMzQ0MDIsMzQ2NDYsMzQ2NTksMzQ2NjAsMzQ2NzksMzQ3ODUsMzQ2NzUsMzQ2NDgsMzQ2NDQsMzQ2NTEsMzQ2NDIsMzQ2NTcsMzQ2NTAsMzQ2NDEsMzQ2NTQsMzQ2NjksMzQ2NjYsMzQ2NDAs''@;'; put 'put ''MzQ2MzgsMzQ2NTUsMzQ2NTMsMzQ2NzEsMzQ2NjgsMzQ2ODIsMzQ2NzAsMzQ2NTIsMzQ2NjEsMzQ2MzksMzQ2ODMsMzQ2NzcsMzQ2NTgsMzQ2NjMsMzQ2NjUsMzQ5MDYsMzUwNzcsMzUwODQsMzUwOTIsMzUwODMsMzUwOTUsMzUwOTYsMzUwOTcsMzUwNzgsMzUwOTQsMzUwODksMzUwODYsMzUw''@;'; put 'put ''ODEsMzUyMzQsMzUyMzYsMzUyMzUsMzUzMDksMzUzMTIsMzUzMDgsMzU1MzUsMzU1MjYsMzU1MTIsMzU1MzksMzU1MzcsMzU1NDAsMzU1NDEsMzU1MTUsMzU1NDMsMzU1MTgsMzU1MjAsMzU1MjUsMzU1NDQsMzU1MjMsMzU1MTQsMzU1MTcsMzU1NDUsMzU5MDIsMzU5MTcsMzU5ODMsMzYwNjks''@;'; put 'put ''MzYwNjMsMzYwNTcsMzYwNzIsMzYwNTgsMzYwNjEsMzYwNzEsMzYyNTYsMzYyNTIsMzYyNTcsMzYyNTEsMzYzODQsMzYzODcsMzYzODksMzYzODgsMzYzOTgsMzYzNzMsMzYzNzksMzYzNzQsMzYzNjksMzYzNzcsMzYzOTAsMzYzOTEsMzYzNzIsMzYzNzAsMzYzNzYsMzYzNzEsMzYzODAsMzYz''@;'; put 'put ''NzUsMzYzNzgsMzY2NTIsMzY2NDQsMzY2MzIsMzY2MzQsMzY2NDAsMzY2NDMsMzY2MzAsMzY2MzEsMzY5NzksMzY5NzYsMzY5NzUsMzY5NjcsMzY5NzEsMzcxNjcsMzcxNjMsMzcxNjEsMzcxNjIsMzcxNzAsMzcxNTgsMzcxNjYsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNDksMzcyNTAsMzcyNTIs''@;'; put 'put ''MzcyNDgsMzc1ODQsMzc1NzEsMzc1NzIsMzc1NjgsMzc1OTMsMzc1NTgsMzc1ODMsMzc2MTcsMzc1OTksMzc1OTIsMzc2MDksMzc1OTEsMzc1OTcsMzc1ODAsMzc2MTUsMzc1NzAsMzc2MDgsMzc1NzgsMzc1NzYsMzc1ODIsMzc2MDYsMzc1ODEsMzc1ODksMzc1NzcsMzc2MDAsMzc1OTgsMzc2''@;'; put 'put ''MDcsMzc1ODUsMzc1ODcsMzc1NTcsMzc2MDEsMzc1NzQsMzc1NTYsMzgyNjgsMzgzMTYsMzgzMTUsMzgzMTgsMzgzMjAsMzg1NjQsMzg1NjIsMzg2MTEsMzg2NjEsMzg2NjQsMzg2NTgsMzg3NDYsMzg3OTQsMzg3OTgsMzg3OTIsMzg4NjQsMzg4NjMsMzg5NDIsMzg5NDEsMzg5NTAsMzg5NTMs''@;'; put 'put ''Mzg5NTIsMzg5NDQsMzg5MzksMzg5NTEsMzkwOTAsMzkxNzYsMzkxNjIsMzkxODUsMzkxODgsMzkxOTAsMzkxOTEsMzkxODksMzkzODgsMzkzNzMsMzkzNzUsMzkzNzksMzkzODAsMzkzNzQsMzkzNjksMzkzODIsMzkzODQsMzkzNzEsMzkzODMsMzkzNzIsMzk2MDMsMzk2NjAsMzk2NTksMzk2''@;'; put 'put ''NjcsMzk2NjYsMzk2NjUsMzk3NTAsMzk3NDcsMzk3ODMsMzk3OTYsMzk3OTMsMzk3ODIsMzk3OTgsMzk3OTcsMzk3OTIsMzk3ODQsMzk3ODAsMzk3ODgsNDAxODgsNDAxODYsNDAxODksNDAxOTEsNDAxODMsNDAxOTksNDAxOTIsNDAxODUsNDAxODcsNDAyMDAsNDAxOTcsNDAxOTYsNDA1Nzks''@;'; put 'put ''NDA2NTksNDA3MTksNDA3MjAsMjA3NjQsMjA3NTUsMjA3NTksMjA3NjIsMjA3NTMsMjA5NTgsMjEzMDAsMjE0NzMsMjIxMjgsMjIxMTIsMjIxMjYsMjIxMzEsMjIxMTgsMjIxMTUsMjIxMjUsMjIxMzAsMjIxMTAsMjIxMzUsMjIzMDAsMjIyOTksMjI3MjgsMjI3MTcsMjI3MjksMjI3MTksMjI3''@;'; put 'put ''MTQsMjI3MjIsMjI3MTYsMjI3MjYsMjMzMTksMjMzMjEsMjMzMjMsMjMzMjksMjMzMTYsMjMzMTUsMjMzMTIsMjMzMTgsMjMzMzYsMjMzMjIsMjMzMjgsMjMzMjYsMjM1MzUsMjM5ODAsMjM5ODUsMjM5NzcsMjM5NzUsMjM5ODksMjM5ODQsMjM5ODIsMjM5NzgsMjM5NzYsMjM5ODYsMjM5ODEs''@;'; put 'put ''MjM5ODMsMjM5ODgsMjQxNjcsMjQxNjgsMjQxNjYsMjQxNzUsMjQyOTcsMjQyOTUsMjQyOTQsMjQyOTYsMjQyOTMsMjQzOTUsMjQ1MDgsMjQ5ODksMjVlMywyNDk4MiwyNTAyOSwyNTAxMiwyNTAzMCwyNTAyNSwyNTAzNiwyNTAxOCwyNTAyMywyNTAxNiwyNDk3MiwyNTgxNSwyNTgxNCwyNTgw''@;'; put 'put ''OCwyNTgwNywyNTgwMSwyNTc4OSwyNTczNywyNTc5NSwyNTgxOSwyNTg0MywyNTgxNywyNTkwNywyNTk4MywyNTk4MCwyNjAxOCwyNjMxMiwyNjMwMiwyNjMwNCwyNjMxNCwyNjMxNSwyNjMxOSwyNjMwMSwyNjI5OSwyNjI5OCwyNjMxNiwyNjQwMywyNzE4OCwyNzIzOCwyNzIwOSwyNzIzOSwy''@;'; put 'put ''NzE4NiwyNzI0MCwyNzE5OCwyNzIyOSwyNzI0NSwyNzI1NCwyNzIyNywyNzIxNywyNzE3NiwyNzIyNiwyNzE5NSwyNzE5OSwyNzIwMSwyNzI0MiwyNzIzNiwyNzIxNiwyNzIxNSwyNzIyMCwyNzI0NywyNzI0MSwyNzIzMiwyNzE5NiwyNzIzMCwyNzIyMiwyNzIyMSwyNzIxMywyNzIxNCwyNzIw''@;'; put 'put ''NiwyNzQ3NywyNzQ3NiwyNzQ3OCwyNzU1OSwyNzU2MiwyNzU2MywyNzU5MiwyNzU5MSwyNzY1MiwyNzY1MSwyNzY1NCwyODU4OSwyODYxOSwyODU3OSwyODYxNSwyODYwNCwyODYyMiwyODYxNiwyODUxMCwyODYxMiwyODYwNSwyODU3NCwyODYxOCwyODU4NCwyODY3NiwyODU4MSwyODU5MCwy''@;'; put 'put ''ODYwMiwyODU4OCwyODU4NiwyODYyMywyODYwNywyODYwMCwyODU3OCwyODYxNywyODU4NywyODYyMSwyODU5MSwyODU5NCwyODU5MiwyOTEyNSwyOTEyMiwyOTExOSwyOTExMiwyOTE0MiwyOTEyMCwyOTEyMSwyOTEzMSwyOTE0MCwyOTEzMCwyOTEyNywyOTEzNSwyOTExNywyOTE0NCwyOTEx''@;'; put 'put ''NiwyOTEyNiwyOTE0NiwyOTE0NywyOTM0MSwyOTM0MiwyOTU0NSwyOTU0MiwyOTU0MywyOTU0OCwyOTU0MSwyOTU0NywyOTU0NiwyOTgyMywyOTg1MCwyOTg1NiwyOTg0NCwyOTg0MiwyOTg0NSwyOTg1NywyOTk2MywzMDA4MCwzMDI1NSwzMDI1MywzMDI1NywzMDI2OSwzMDI1OSwzMDI2OCwz''@;'; put 'put ''MDI2MSwzMDI1OCwzMDI1NiwzMDM5NSwzMDQzOCwzMDYxOCwzMDYyMSwzMDYyNSwzMDYyMCwzMDYxOSwzMDYyNiwzMDYyNywzMDYxMywzMDYxNywzMDYxNSwzMDk0MSwzMDk1MywzMDk0OSwzMDk1NCwzMDk0MiwzMDk0NywzMDkzOSwzMDk0NSwzMDk0NiwzMDk1NywzMDk0MywzMDk0NCwzMTE0''@;'; put 'put ''MCwzMTMwMCwzMTMwNCwzMTMwMywzMTQxNCwzMTQxNiwzMTQxMywzMTQwOSwzMTQxNSwzMTcxMCwzMTcxNSwzMTcxOSwzMTcwOSwzMTcwMSwzMTcxNywzMTcwNiwzMTcyMCwzMTczNywzMTcwMCwzMTcyMiwzMTcxNCwzMTcwOCwzMTcyMywzMTcwNCwzMTcxMSwzMTk1NCwzMTk1NiwzMTk1OSwz''@;'; put 'put ''MTk1MiwzMTk1MywzMjI3NCwzMjI4OSwzMjI3OSwzMjI2OCwzMjI4NywzMjI4OCwzMjI3NSwzMjI3MCwzMjI4NCwzMjI3NywzMjI4MiwzMjI5MCwzMjI2NywzMjI3MSwzMjI3OCwzMjI2OSwzMjI3NiwzMjI5MywzMjI5MiwzMjU3OSwzMjYzNSwzMjYzNiwzMjYzNCwzMjY4OSwzMjc1MSwzMjgx''@;'; put 'put ''MCwzMjgwOSwzMjg3NiwzMzIwMSwzMzE5MCwzMzE5OCwzMzIwOSwzMzIwNSwzMzE5NSwzMzIwMCwzMzE5NiwzMzIwNCwzMzIwMiwzMzIwNywzMzE5MSwzMzI2NiwzMzM2NSwzMzM2NiwzMzM2NywzNDEzNCwzNDExNywzNDE1NSwzNDEyNSwzNDEzMSwzNDE0NSwzNDEzNiwzNDExMiwzNDExOCwz''@;'; put 'put ''NDE0OCwzNDExMywzNDE0NiwzNDExNiwzNDEyOSwzNDExOSwzNDE0NywzNDExMCwzNDEzOSwzNDE2MSwzNDEyNiwzNDE1OCwzNDE2NSwzNDEzMywzNDE1MSwzNDE0NCwzNDE4OCwzNDE1MCwzNDE0MSwzNDEzMiwzNDE0OSwzNDE1NiwzNDQwMywzNDQwNSwzNDQwNCwzNDcxNSwzNDcwMywzNDcx''@;'; put 'put ''MSwzNDcwNywzNDcwNiwzNDY5NiwzNDY4OSwzNDcxMCwzNDcxMiwzNDY4MSwzNDY5NSwzNDcyMywzNDY5MywzNDcwNCwzNDcwNSwzNDcxNywzNDY5MiwzNDcwOCwzNDcxNiwzNDcxNCwzNDY5NywzNTEwMiwzNTExMCwzNTEyMCwzNTExNywzNTExOCwzNTExMSwzNTEyMSwzNTEwNiwzNTExMywz''@;'; put 'put ''NTEwNywzNTExOSwzNTExNiwzNTEwMywzNTMxMywzNTU1MiwzNTU1NCwzNTU3MCwzNTU3MiwzNTU3MywzNTU0OSwzNTYwNCwzNTU1NiwzNTU1MSwzNTU2OCwzNTUyOCwzNTU1MCwzNTU1MywzNTU2MCwzNTU4MywzNTU2NywzNTU3OSwzNTk4NSwzNTk4NiwzNTk4NCwzNjA4NSwzNjA3OCwzNjA4''@;'; put 'put ''MSwzNjA4MCwzNjA4MywzNjIwNCwzNjIwNiwzNjI2MSwzNjI2MywzNjQwMywzNjQxNCwzNjQwOCwzNjQxNiwzNjQyMSwzNjQwNiwzNjQxMiwzNjQxMywzNjQxNywzNjQwMCwzNjQxNSwzNjU0MSwzNjY2MiwzNjY1NCwzNjY2MSwzNjY1OCwzNjY2NSwzNjY2MywzNjY2MCwzNjk4MiwzNjk4NSwz''@;'; put 'put ''Njk4NywzNjk5OCwzNzExNCwzNzE3MSwzNzE3MywzNzE3NCwzNzI2NywzNzI2NCwzNzI2NSwzNzI2MSwzNzI2MywzNzY3MSwzNzY2MiwzNzY0MCwzNzY2MywzNzYzOCwzNzY0NywzNzc1NCwzNzY4OCwzNzY5MiwzNzY1OSwzNzY2NywzNzY1MCwzNzYzMywzNzcwMiwzNzY3NywzNzY0NiwzNzY0''@;'; put 'put ''NSwzNzU3OSwzNzY2MSwzNzYyNiwzNzY2OSwzNzY1MSwzNzYyNSwzNzYyMywzNzY4NCwzNzYzNCwzNzY2OCwzNzYzMSwzNzY3MywzNzY4OSwzNzY4NSwzNzY3NCwzNzY1MiwzNzY0NCwzNzY0MywzNzYzMCwzNzY0MSwzNzYzMiwzNzYyNywzNzY1NCwzODMzMiwzODM0OSwzODMzNCwzODMyOSwz''@;'; put 'put ''ODMzMCwzODMyNiwzODMzNSwzODMyNSwzODMzMywzODU2OSwzODYxMiwzODY2NywzODY3NCwzODY3MiwzODgwOSwzODgwNywzODgwNCwzODg5NiwzODkwNCwzODk2NSwzODk1OSwzODk2MiwzOTIwNCwzOTE5OSwzOTIwNywzOTIwOSwzOTMyNiwzOTQwNiwzOTQwNCwzOTM5NywzOTM5NiwzOTQw''@;'; put 'put ''OCwzOTM5NSwzOTQwMiwzOTQwMSwzOTM5OSwzOTYwOSwzOTYxNSwzOTYwNCwzOTYxMSwzOTY3MCwzOTY3NCwzOTY3MywzOTY3MSwzOTczMSwzOTgwOCwzOTgxMywzOTgxNSwzOTgwNCwzOTgwNiwzOTgwMywzOTgxMCwzOTgyNywzOTgyNiwzOTgyNCwzOTgwMiwzOTgyOSwzOTgwNSwzOTgxNiw0''@;'; put 'put ''MDIyOSw0MDIxNSw0MDIyNCw0MDIyMiw0MDIxMiw0MDIzMyw0MDIyMSw0MDIxNiw0MDIyNiw0MDIwOCw0MDIxNyw0MDIyMyw0MDU4NCw0MDU4Miw0MDU4Myw0MDYyMiw0MDYyMSw0MDY2MSw0MDY2Miw0MDY5OCw0MDcyMiw0MDc2NSwyMDc3NCwyMDc3MywyMDc3MCwyMDc3MiwyMDc2OCwyMDc3''@;'; put 'put ''NywyMTIzNiwyMjE2MywyMjE1NiwyMjE1NywyMjE1MCwyMjE0OCwyMjE0NywyMjE0MiwyMjE0NiwyMjE0MywyMjE0NSwyMjc0MiwyMjc0MCwyMjczNSwyMjczOCwyMzM0MSwyMzMzMywyMzM0NiwyMzMzMSwyMzM0MCwyMzMzNSwyMzMzNCwyMzM0MywyMzM0MiwyMzQxOSwyMzUzNywyMzUzOCwy''@;'; put 'put ''Mzk5MSwyNDE3MiwyNDE3MCwyNDUxMCwyNDUwNywyNTAyNywyNTAxMywyNTAyMCwyNTA2MywyNTA1NiwyNTA2MSwyNTA2MCwyNTA2NCwyNTA1NCwyNTgzOSwyNTgzMywyNTgyNywyNTgzNSwyNTgyOCwyNTgzMiwyNTk4NSwyNTk4NCwyNjAzOCwyNjA3NCwyNjMyMiwyNzI3NywyNzI4NiwyNzI2''@;'; put 'put ''NSwyNzMwMSwyNzI3MywyNzI5NSwyNzI5MSwyNzI5NywyNzI5NCwyNzI3MSwyNzI4MywyNzI3OCwyNzI4NSwyNzI2NywyNzMwNCwyNzMwMCwyNzI4MSwyNzI2MywyNzMwMiwyNzI5MCwyNzI2OSwyNzI3NiwyNzI4MiwyNzQ4MywyNzU2NSwyNzY1NywyODYyMCwyODU4NSwyODY2MCwyODYyOCwy''@;'; put 'put ''ODY0MywyODYzNiwyODY1MywyODY0NywyODY0NiwyODYzOCwyODY1OCwyODYzNywyODY0MiwyODY0OCwyOTE1MywyOTE2OSwyOTE2MCwyOTE3MCwyOTE1NiwyOTE2OCwyOTE1NCwyOTU1NSwyOTU1MCwyOTU1MSwyOTg0NywyOTg3NCwyOTg2NywyOTg0MCwyOTg2NiwyOTg2OSwyOTg3MywyOTg2''@;'; put 'put ''MSwyOTg3MSwyOTk2OCwyOTk2OSwyOTk3MCwyOTk2NywzMDA4NCwzMDI3NSwzMDI4MCwzMDI4MSwzMDI3OSwzMDM3MiwzMDQ0MSwzMDY0NSwzMDYzNSwzMDY0MiwzMDY0NywzMDY0NiwzMDY0NCwzMDY0MSwzMDYzMiwzMDcwNCwzMDk2MywzMDk3MywzMDk3OCwzMDk3MSwzMDk3MiwzMDk2Miwz''@;'; put 'put ''MDk4MSwzMDk2OSwzMDk3NCwzMDk4MCwzMTE0NywzMTE0NCwzMTMyNCwzMTMyMywzMTMxOCwzMTMyMCwzMTMxNiwzMTMyMiwzMTQyMiwzMTQyNCwzMTQyNSwzMTc0OSwzMTc1OSwzMTczMCwzMTc0NCwzMTc0MywzMTczOSwzMTc1OCwzMTczMiwzMTc1NSwzMTczMSwzMTc0NiwzMTc1MywzMTc0''@;'; put 'put ''NywzMTc0NSwzMTczNiwzMTc0MSwzMTc1MCwzMTcyOCwzMTcyOSwzMTc2MCwzMTc1NCwzMTk3NiwzMjMwMSwzMjMxNiwzMjMyMiwzMjMwNywzODk4NCwzMjMxMiwzMjI5OCwzMjMyOSwzMjMyMCwzMjMyNywzMjI5NywzMjMzMiwzMjMwNCwzMjMxNSwzMjMxMCwzMjMyNCwzMjMxNCwzMjU4MSwz''@;'; put 'put ''MjYzOSwzMjYzOCwzMjYzNywzMjc1NiwzMjc1NCwzMjgxMiwzMzIxMSwzMzIyMCwzMzIyOCwzMzIyNiwzMzIyMSwzMzIyMywzMzIxMiwzMzI1NywzMzM3MSwzMzM3MCwzMzM3MiwzNDE3OSwzNDE3NiwzNDE5MSwzNDIxNSwzNDE5NywzNDIwOCwzNDE4NywzNDIxMSwzNDE3MSwzNDIxMiwzNDIw''@;'; put 'put ''MiwzNDIwNiwzNDE2NywzNDE3MiwzNDE4NSwzNDIwOSwzNDE3MCwzNDE2OCwzNDEzNSwzNDE5MCwzNDE5OCwzNDE4MiwzNDE4OSwzNDIwMSwzNDIwNSwzNDE3NywzNDIxMCwzNDE3OCwzNDE4NCwzNDE4MSwzNDE2OSwzNDE2NiwzNDIwMCwzNDE5MiwzNDIwNywzNDQwOCwzNDc1MCwzNDczMCwz''@;'; put 'put ''NDczMywzNDc1NywzNDczNiwzNDczMiwzNDc0NSwzNDc0MSwzNDc0OCwzNDczNCwzNDc2MSwzNDc1NSwzNDc1NCwzNDc2NCwzNDc0MywzNDczNSwzNDc1NiwzNDc2MiwzNDc0MCwzNDc0MiwzNDc1MSwzNDc0NCwzNDc0OSwzNDc4MiwzNDczOCwzNTEyNSwzNTEyMywzNTEzMiwzNTEzNCwzNTEz''@;'; put 'put ''NywzNTE1NCwzNTEyNywzNTEzOCwzNTI0NSwzNTI0NywzNTI0NiwzNTMxNCwzNTMxNSwzNTYxNCwzNTYwOCwzNTYwNiwzNTYwMSwzNTU4OSwzNTU5NSwzNTYxOCwzNTU5OSwzNTYwMiwzNTYwNSwzNTU5MSwzNTU5NywzNTU5MiwzNTU5MCwzNTYxMiwzNTYwMywzNTYxMCwzNTkxOSwzNTk1Miwz''@;'; put 'put ''NTk1NCwzNTk1MywzNTk1MSwzNTk4OSwzNTk4OCwzNjA4OSwzNjIwNywzNjQzMCwzNjQyOSwzNjQzNSwzNjQzMiwzNjQyOCwzNjQyMywzNjY3NSwzNjY3MiwzNjk5NywzNjk5MCwzNzE3NiwzNzI3NCwzNzI4MiwzNzI3NSwzNzI3MywzNzI3OSwzNzI4MSwzNzI3NywzNzI4MCwzNzc5MywzNzc2''@;'; put 'put ''MywzNzgwNywzNzczMiwzNzcxOCwzNzcwMywzNzc1NiwzNzcyMCwzNzcyNCwzNzc1MCwzNzcwNSwzNzcxMiwzNzcxMywzNzcyOCwzNzc0MSwzNzc3NSwzNzcwOCwzNzczOCwzNzc1MywzNzcxOSwzNzcxNywzNzcxNCwzNzcxMSwzNzc0NSwzNzc1MSwzNzc1NSwzNzcyOSwzNzcyNiwzNzczMSwz''@;'; put 'put ''NzczNSwzNzc2MCwzNzcxMCwzNzcyMSwzODM0MywzODMzNiwzODM0NSwzODMzOSwzODM0MSwzODMyNywzODU3NCwzODU3NiwzODU3MiwzODY4OCwzODY4NywzODY4MCwzODY4NSwzODY4MSwzODgxMCwzODgxNywzODgxMiwzODgxNCwzODgxMywzODg2OSwzODg2OCwzODg5NywzODk3NywzODk4''@;'; put 'put ''MCwzODk4NiwzODk4NSwzODk4MSwzODk3OSwzOTIwNSwzOTIxMSwzOTIxMiwzOTIxMCwzOTIxOSwzOTIxOCwzOTIxNSwzOTIxMywzOTIxNywzOTIxNiwzOTMyMCwzOTMzMSwzOTMyOSwzOTQyNiwzOTQxOCwzOTQxMiwzOTQxNSwzOTQxNywzOTQxNiwzOTQxNCwzOTQxOSwzOTQyMSwzOTQyMiwz''@;'; put 'put ''OTQyMCwzOTQyNywzOTYxNCwzOTY3OCwzOTY3NywzOTY4MSwzOTY3NiwzOTc1MiwzOTgzNCwzOTg0OCwzOTgzOCwzOTgzNSwzOTg0NiwzOTg0MSwzOTg0NSwzOTg0NCwzOTgxNCwzOTg0MiwzOTg0MCwzOTg1NSw0MDI0Myw0MDI1Nyw0MDI5NSw0MDI0Niw0MDIzOCw0MDIzOSw0MDI0MSw0MDI0''@;'; put 'put ''OCw0MDI0MCw0MDI2MSw0MDI1OCw0MDI1OSw0MDI1NCw0MDI0Nyw0MDI1Niw0MDI1MywzMjc1Nyw0MDIzNyw0MDU4Niw0MDU4NSw0MDU4OSw0MDYyNCw0MDY0OCw0MDY2Niw0MDY5OSw0MDcwMyw0MDc0MCw0MDczOSw0MDczOCw0MDc4OCw0MDg2NCwyMDc4NSwyMDc4MSwyMDc4MiwyMjE2OCwy''@;'; put 'put ''MjE3MiwyMjE2NywyMjE3MCwyMjE3MywyMjE2OSwyMjg5NiwyMzM1NiwyMzY1NywyMzY1OCwyNGUzLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDczLDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5''@;'; put 'put ''LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4''@;'; put 'put ''NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcyLDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkx''@;'; put 'put ''LDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMxMTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMxNzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMx''@;'; put 'put ''Nzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMyLDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQz''@;'; put 'put ''LDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0''@;'; put 'put ''ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUzLDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMy''@;'; put 'put ''LDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2''@;'; put 'put ''NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1''@;'; put 'put ''LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0''@;'; put 'put ''MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODczLDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkzLDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5''@;'; put 'put ''LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5''@;'; put 'put ''ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcxLDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2''@;'; put 'put ''LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIyNzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIzMzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1''@;'; put 'put ''ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0''@;'; put 'put ''LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMw''@;'; put 'put ''NjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAzLDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcy''@;'; put 'put ''LDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0''@;'; put 'put ''Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIyLDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0''@;'; put 'put ''LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2''@;'; put 'put ''MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgx''@;'; put 'put ''LDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4''@;'; put 'put ''ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUwLDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUxLDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUy''@;'; put 'put ''LDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQw''@;'; put 'put ''MzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5''@;'; put 'put ''LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3''@;'; put 'put ''Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIzLDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0''@;'; put 'put ''LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMxMTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMxODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMy''@;'; put 'put ''Mzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMxLDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5''@;'; put 'put ''LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3''@;'; put 'put ''MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEwLDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3''@;'; put 'put ''LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5''@;'; put 'put ''NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDRlNCwzOTk0MywzOTk1MCwzOTk0MiwzOTk1OSwzOTk1NiwzOTk0NSw0''@;'; put 'put ''MDM1MSw0MDM0NSw0MDM1Niw0MDM0OSw0MDMzOCw0MDM0NCw0MDMzNiw0MDM0Nyw0MDM1Miw0MDM0MCw0MDM0OCw0MDM2Miw0MDM0Myw0MDM1Myw0MDM0Niw0MDM1NCw0MDM2MCw0MDM1MCw0MDM1NSw0MDM4Myw0MDM2MSw0MDM0Miw0MDM1OCw0MDM1OSw0MDYwMSw0MDYwMyw0MDYwMiw0MDY3''@;'; put 'put ''Nyw0MDY3Niw0MDY3OSw0MDY3OCw0MDc1Miw0MDc1MCw0MDc5NSw0MDgwMCw0MDc5OCw0MDc5Nyw0MDc5Myw0MDg0OSwyMDc5NCwyMDc5MywyMTE0NCwyMTE0MywyMjIxMSwyMjIwNSwyMjIwNiwyMzM2OCwyMzM2NywyNDAxMSwyNDAxNSwyNDMwNSwyNTA4NSwyNTg4MywyNzM5NCwyNzM4OCwy''@;'; put 'put ''NzM5NSwyNzM4NCwyNzM5MiwyODczOSwyODc0MCwyODc0NiwyODc0NCwyODc0NSwyODc0MSwyODc0MiwyOTIxMywyOTIxMCwyOTIwOSwyOTU2NiwyOTk3NSwzMDMxNCwzMDY3MiwzMTAyMSwzMTAyNSwzMTAyMywzMTgyOCwzMTgyNywzMTk4NiwzMjM5NCwzMjM5MSwzMjM5MiwzMjM5NSwzMjM5''@;'; put 'put ''MCwzMjM5NywzMjU4OSwzMjY5OSwzMjgxNiwzMzI0NSwzNDMyOCwzNDM0NiwzNDM0MiwzNDMzNSwzNDMzOSwzNDMzMiwzNDMyOSwzNDM0MywzNDM1MCwzNDMzNywzNDMzNiwzNDM0NSwzNDMzNCwzNDM0MSwzNDg1NywzNDg0NSwzNDg0MywzNDg0OCwzNDg1MiwzNDg0NCwzNDg1OSwzNDg5MCwz''@;'; put 'put ''NTE4MSwzNTE3NywzNTE4MiwzNTE3OSwzNTMyMiwzNTcwNSwzNTcwNCwzNTY1MywzNTcwNiwzNTcwNywzNjExMiwzNjExNiwzNjI3MSwzNjQ5NCwzNjQ5MiwzNjcwMiwzNjY5OSwzNjcwMSwzNzE5MCwzNzE4OCwzNzE4OSwzNzMwNSwzNzk1MSwzNzk0NywzNzk0MiwzNzkyOSwzNzk0OSwzNzk0''@;'; put 'put ''OCwzNzkzNiwzNzk0NSwzNzkzMCwzNzk0MywzNzkzMiwzNzk1MiwzNzkzNywzODM3MywzODM3MiwzODM3MSwzODcwOSwzODcxNCwzODg0NywzODg4MSwzOTAxMiwzOTExMywzOTExMCwzOTEwNCwzOTI1NiwzOTI1NCwzOTQ4MSwzOTQ4NSwzOTQ5NCwzOTQ5MiwzOTQ5MCwzOTQ4OSwzOTQ4Miwz''@;'; put 'put ''OTQ4NywzOTYyOSwzOTcwMSwzOTcwMywzOTcwNCwzOTcwMiwzOTczOCwzOTc2MiwzOTk3OSwzOTk2NSwzOTk2NCwzOTk4MCwzOTk3MSwzOTk3NiwzOTk3NywzOTk3MiwzOTk2OSw0MDM3NSw0MDM3NCw0MDM4MCw0MDM4NSw0MDM5MSw0MDM5NCw0MDM5OSw0MDM4Miw0MDM4OSw0MDM4Nyw0MDM3''@;'; put 'put ''OSw0MDM3Myw0MDM5OCw0MDM3Nyw0MDM3OCw0MDM2NCw0MDM5Miw0MDM2OSw0MDM2NSw0MDM5Niw0MDM3MSw0MDM5Nyw0MDM3MCw0MDU3MCw0MDYwNCw0MDY4Myw0MDY4Niw0MDY4NSw0MDczMSw0MDcyOCw0MDczMCw0MDc1Myw0MDc4Miw0MDgwNSw0MDgwNCw0MDg1MCwyMDE1MywyMjIxNCwy''@;'; put 'put ''MjIxMywyMjIxOSwyMjg5NywyMzM3MSwyMzM3MiwyNDAyMSwyNDAxNywyNDMwNiwyNTg4OSwyNTg4OCwyNTg5NCwyNTg5MCwyNzQwMywyNzQwMCwyNzQwMSwyNzY2MSwyODc1NywyODc1OCwyODc1OSwyODc1NCwyOTIxNCwyOTIxNSwyOTM1MywyOTU2NywyOTkxMiwyOTkwOSwyOTkxMywyOTkx''@;'; put 'put ''MSwzMDMxNywzMDM4MSwzMTAyOSwzMTE1NiwzMTM0NCwzMTM0NSwzMTgzMSwzMTgzNiwzMTgzMywzMTgzNSwzMTgzNCwzMTk4OCwzMTk4NSwzMjQwMSwzMjU5MSwzMjY0NywzMzI0NiwzMzM4NywzNDM1NiwzNDM1NywzNDM1NSwzNDM0OCwzNDM1NCwzNDM1OCwzNDg2MCwzNDg1NiwzNDg1NCwz''@;'; put 'put ''NDg1OCwzNDg1MywzNTE4NSwzNTI2MywzNTI2MiwzNTMyMywzNTcxMCwzNTcxNiwzNTcxNCwzNTcxOCwzNTcxNywzNTcxMSwzNjExNywzNjUwMSwzNjUwMCwzNjUwNiwzNjQ5OCwzNjQ5NiwzNjUwMiwzNjUwMywzNjcwNCwzNjcwNiwzNzE5MSwzNzk2NCwzNzk2OCwzNzk2MiwzNzk2MywzNzk2''@;'; put 'put ''NywzNzk1OSwzNzk1NywzNzk2MCwzNzk2MSwzNzk1OCwzODcxOSwzODg4MywzOTAxOCwzOTAxNywzOTExNSwzOTI1MiwzOTI1OSwzOTUwMiwzOTUwNywzOTUwOCwzOTUwMCwzOTUwMywzOTQ5NiwzOTQ5OCwzOTQ5NywzOTUwNiwzOTUwNCwzOTYzMiwzOTcwNSwzOTcyMywzOTczOSwzOTc2Niwz''@;'; put 'put ''OTc2NSw0MDAwNiw0MDAwOCwzOTk5OSw0MDAwNCwzOTk5MywzOTk4Nyw0MDAwMSwzOTk5NiwzOTk5MSwzOTk4OCwzOTk4NiwzOTk5NywzOTk5MCw0MDQxMSw0MDQwMiw0MDQxNCw0MDQxMCw0MDM5NSw0MDQwMCw0MDQxMiw0MDQwMSw0MDQxNSw0MDQyNSw0MDQwOSw0MDQwOCw0MDQwNiw0MDQz''@;'; put 'put ''Nyw0MDQwNSw0MDQxMyw0MDYzMCw0MDY4OCw0MDc1Nyw0MDc1NSw0MDc1NCw0MDc3MCw0MDgxMSw0MDg1Myw0MDg2NiwyMDc5NywyMTE0NSwyMjc2MCwyMjc1OSwyMjg5OCwyMzM3MywyNDAyNCwzNDg2MywyNDM5OSwyNTA4OSwyNTA5MSwyNTA5MiwyNTg5NywyNTg5MywyNjAwNiwyNjM0Nywy''@;'; put 'put ''NzQwOSwyNzQxMCwyNzQwNywyNzU5NCwyODc2MywyODc2MiwyOTIxOCwyOTU3MCwyOTU2OSwyOTU3MSwzMDMyMCwzMDY3NiwzMTg0NywzMTg0NiwzMjQwNSwzMzM4OCwzNDM2MiwzNDM2OCwzNDM2MSwzNDM2NCwzNDM1MywzNDM2MywzNDM2NiwzNDg2NCwzNDg2NiwzNDg2MiwzNDg2NywzNTE5''@;'; put 'put ''MCwzNTE4OCwzNTE4NywzNTMyNiwzNTcyNCwzNTcyNiwzNTcyMywzNTcyMCwzNTkwOSwzNjEyMSwzNjUwNCwzNjcwOCwzNjcwNywzNzMwOCwzNzk4NiwzNzk3MywzNzk4MSwzNzk3NSwzNzk4MiwzODg1MiwzODg1MywzODkxMiwzOTUxMCwzOTUxMywzOTcxMCwzOTcxMSwzOTcxMiw0MDAxOCw0''@;'; put 'put ''MDAyNCw0MDAxNiw0MDAxMCw0MDAxMyw0MDAxMSw0MDAyMSw0MDAyNSw0MDAxMiw0MDAxNCw0MDQ0Myw0MDQzOSw0MDQzMSw0MDQxOSw0MDQyNyw0MDQ0MCw0MDQyMCw0MDQzOCw0MDQxNyw0MDQzMCw0MDQyMiw0MDQzNCw0MDQzMiw0MDQxOCw0MDQyOCw0MDQzNiw0MDQzNSw0MDQyNCw0MDQy''@;'; put 'put ''OSw0MDY0Miw0MDY1Niw0MDY5MCw0MDY5MSw0MDcxMCw0MDczMiw0MDc2MCw0MDc1OSw0MDc1OCw0MDc3MSw0MDc4Myw0MDgxNyw0MDgxNiw0MDgxNCw0MDgxNSwyMjIyNywyMjIyMSwyMzM3NCwyMzY2MSwyNTkwMSwyNjM0OSwyNjM1MCwyNzQxMSwyODc2NywyODc2OSwyODc2NSwyODc2OCwy''@;'; put 'put ''OTIxOSwyOTkxNSwyOTkyNSwzMDY3NywzMTAzMiwzMTE1OSwzMTE1OCwzMTg1MCwzMjQwNywzMjY0OSwzMzM4OSwzNDM3MSwzNDg3MiwzNDg3MSwzNDg2OSwzNDg5MSwzNTczMiwzNTczMywzNjUxMCwzNjUxMSwzNjUxMiwzNjUwOSwzNzMxMCwzNzMwOSwzNzMxNCwzNzk5NSwzNzk5MiwzNzk5''@;'; put 'put ''MywzODYyOSwzODcyNiwzODcyMywzODcyNywzODg1NSwzODg4NSwzOTUxOCwzOTYzNywzOTc2OSw0MDAzNSw0MDAzOSw0MDAzOCw0MDAzNCw0MDAzMCw0MDAzMiw0MDQ1MCw0MDQ0Niw0MDQ1NSw0MDQ1MSw0MDQ1NCw0MDQ1Myw0MDQ0OCw0MDQ0OSw0MDQ1Nyw0MDQ0Nyw0MDQ0NSw0MDQ1Miw0''@;'; put 'put ''MDYwOCw0MDczNCw0MDc3NCw0MDgyMCw0MDgyMSw0MDgyMiwyMjIyOCwyNTkwMiwyNjA0MCwyNzQxNiwyNzQxNywyNzQxNSwyNzQxOCwyODc3MCwyOTIyMiwyOTM1NCwzMDY4MCwzMDY4MSwzMTAzMywzMTg0OSwzMTg1MSwzMTk5MCwzMjQxMCwzMjQwOCwzMjQxMSwzMjQwOSwzMzI0OCwzMzI0''@;'; put 'put ''OSwzNDM3NCwzNDM3NSwzNDM3NiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NSwzNTMyNywzNTczNiwzNTczNywzNjUxNywzNjUxNiwzNjUxNSwzNzk5OCwzNzk5NywzNzk5OSwzODAwMSwzODAwMywzODcyOSwzOTAyNiwzOTI2Myw0MDA0MCw0MDA0Niw0MDA0NSw0MDQ1OSw0MDQ2MSw0MDQ2NCw0''@;'; put 'put ''MDQ2Myw0MDQ2Niw0MDQ2NSw0MDYwOSw0MDY5Myw0MDcxMyw0MDc3NSw0MDgyNCw0MDgyNyw0MDgyNiw0MDgyNSwyMjMwMiwyODc3NCwzMTg1NSwzNDg3NiwzNjI3NCwzNjUxOCwzNzMxNSwzODAwNCwzODAwOCwzODAwNiwzODAwNSwzOTUyMCw0MDA1Miw0MDA1MSw0MDA0OSw0MDA1Myw0MDQ2''@;'; put 'put ''OCw0MDQ2Nyw0MDY5NCw0MDcxNCw0MDg2OCwyODc3NiwyODc3MywzMTk5MSwzNDQxMCwzNDg3OCwzNDg3NywzNDg3OSwzNTc0MiwzNTk5NiwzNjUyMSwzNjU1MywzODczMSwzOTAyNywzOTAyOCwzOTExNiwzOTI2NSwzOTMzOSwzOTUyNCwzOTUyNiwzOTUyNywzOTcxNiw0MDQ2OSw0MDQ3MSw0''@;'; put 'put ''MDc3NiwyNTA5NSwyNzQyMiwyOTIyMywzNDM4MCwzNjUyMCwzODAxOCwzODAxNiwzODAxNywzOTUyOSwzOTUyOCwzOTcyNiw0MDQ3MywyOTIyNSwzNDM3OSwzNTc0MywzODAxOSw0MDA1Nyw0MDYzMSwzMDMyNSwzOTUzMSw0MDA1OCw0MDQ3NywyODc3NywyODc3OCw0MDYxMiw0MDgzMCw0MDc3''@;'; put 'put ''Nyw0MDg1NiwzMDg0OSwzNzU2MSwzNTAyMywyMjcxNSwyNDY1OCwzMTkxMSwyMzI5MCw5NTU2LDk1NzQsOTU1OSw5NTY4LDk1ODAsOTU3MSw5NTYyLDk1NzcsOTU2NSw5NTU0LDk1NzIsOTU1Nyw5NTY2LDk1NzgsOTU2OSw5NTYwLDk1NzUsOTU2Myw5NTU1LDk1NzMsOTU1OCw5NTY3LDk1Nzks''@;'; put 'put ''OTU3MCw5NTYxLDk1NzYsOTU2NCw5NTUzLDk1NTIsOTU4MSw5NTgyLDk1ODQsOTU4Myw2NTUxNywxMzI0MjMsMzc1OTUsMTMyNTc1LDE0NzM5NywzNDEyNCwxNzA3NywyOTY3OSwyMDkxNywxMzg5NywxNDk4MjYsMTY2MzcyLDM3NzAwLDEzNzY5MSwzMzUxOCwxNDY2MzIsMzA3ODAsMjY0MzYs''@;'; put 'put ''MjUzMTEsMTQ5ODExLDE2NjMxNCwxMzE3NDQsMTU4NjQzLDEzNTk0MSwyMDM5NSwxNDA1MjUsMjA0ODgsMTU5MDE3LDE2MjQzNiwxNDQ4OTYsMTUwMTkzLDE0MDU2MywyMDUyMSwxMzE5NjYsMjQ0ODQsMTMxOTY4LDEzMTkxMSwyODM3OSwxMzIxMjcsMjA2MDUsMjA3MzcsMTM0MzQsMjA3NTAs''@;'; put 'put ''MzkwMjAsMTQxNDcsMzM4MTQsMTQ5OTI0LDEzMjIzMSwyMDgzMiwxNDQzMDgsMjA4NDIsMTM0MTQzLDEzOTUxNiwxMzE4MTMsMTQwNTkyLDEzMjQ5NCwxNDM5MjMsMTM3NjAzLDIzNDI2LDM0Njg1LDEzMjUzMSwxNDY1ODUsMjA5MTQsMjA5MjAsNDAyNDQsMjA5MzcsMjA5NDMsMjA5NDUsMTU1''@;'; put 'put ''ODAsMjA5NDcsMTUwMTgyLDIwOTE1LDIwOTYyLDIxMzE0LDIwOTczLDMzNzQxLDI2OTQyLDE0NTE5NywyNDQ0MywyMTAwMywyMTAzMCwyMTA1MiwyMTE3MywyMTA3OSwyMTE0MCwyMTE3NywyMTE4OSwzMTc2NSwzNDExNCwyMTIxNiwzNDMxNywxNTg0ODMsMjEyNTMsMTY2NjIyLDIxODMzLDI4''@;'; put 'put ''Mzc3LDE0NzMyOCwxMzM0NjAsMTQ3NDM2LDIxMjk5LDIxMzE2LDEzNDExNCwyNzg1MSwxMzY5OTgsMjY2NTEsMjk2NTMsMjQ2NTAsMTYwNDIsMTQ1NDAsMTM2OTM2LDI5MTQ5LDE3NTcwLDIxMzU3LDIxMzY0LDE2NTU0NywyMTM3NCwyMTM3NSwxMzY1OTgsMTM2NzIzLDMwNjk0LDIxMzk1LDE2''@;'; put 'put ''NjU1NSwyMTQwOCwyMTQxOSwyMTQyMiwyOTYwNywxNTM0NTgsMTYyMTcsMjk1OTYsMjE0NDEsMjE0NDUsMjc3MjEsMjAwNDEsMjI1MjYsMjE0NjUsMTUwMTksMTM0MDMxLDIxNDcyLDE0NzQzNSwxNDI3NTUsMjE0OTQsMTM0MjYzLDIxNTIzLDI4NzkzLDIxODAzLDI2MTk5LDI3OTk1LDIxNjEz''@;'; put 'put ''LDE1ODU0NywxMzQ1MTYsMjE4NTMsMjE2NDcsMjE2NjgsMTgzNDIsMTM2OTczLDEzNDg3NywxNTc5NiwxMzQ0NzcsMTY2MzMyLDE0MDk1MiwyMTgzMSwxOTY5MywyMTU1MSwyOTcxOSwyMTg5NCwyMTkyOSwyMjAyMSwxMzc0MzEsMTQ3NTE0LDE3NzQ2LDE0ODUzMywyNjI5MSwxMzUzNDgsMjIw''@;'; put 'put ''NzEsMjYzMTcsMTQ0MDEwLDI2Mjc2LDI2Mjg1LDIyMDkzLDIyMDk1LDMwOTYxLDIyMjU3LDM4NzkxLDIxNTAyLDIyMjcyLDIyMjU1LDIyMjUzLDE2Njc1OCwxMzg1OSwxMzU3NTksMjIzNDIsMTQ3ODc3LDI3NzU4LDI4ODExLDIyMzM4LDE0MDAxLDE1ODg0NiwyMjUwMiwxMzYyMTQsMjI1MzEs''@;'; put 'put ''MTM2Mjc2LDE0ODMyMywyMjU2NiwxNTA1MTcsMjI2MjAsMjI2OTgsMTM2NjUsMjI3NTIsMjI3NDgsMTM1NzQwLDIyNzc5LDIzNTUxLDIyMzM5LDE3MjM2OCwxNDgwODgsMzc4NDMsMTM3MjksMjI4MTUsMjY3OTAsMTQwMTksMjgyNDksMTM2NzY2LDIzMDc2LDIxODQzLDEzNjg1MCwzNDA1Mywy''@;'; put 'put ''Mjk4NSwxMzQ0NzgsMTU4ODQ5LDE1OTAxOCwxMzcxODAsMjMwMDEsMTM3MjExLDEzNzEzOCwxNTkxNDIsMjgwMTcsMTM3MjU2LDEzNjkxNywyMzAzMywxNTkzMDEsMjMyMTEsMjMxMzksMTQwNTQsMTQ5OTI5LDIzMTU5LDE0MDg4LDIzMTkwLDI5Nzk3LDIzMjUxLDE1OTY0OSwxNDA2MjgsMTU3''@;'; put 'put ''NDksMTM3NDg5LDE0MTMwLDEzNjg4OCwyNDE5NSwyMTIwMCwyMzQxNCwyNTk5MiwyMzQyMCwxNjIzMTgsMTYzODgsMTg1MjUsMTMxNTg4LDIzNTA5LDI0OTI4LDEzNzc4MCwxNTQwNjAsMTMyNTE3LDIzNTM5LDIzNDUzLDE5NzI4LDIzNTU3LDEzODA1MiwyMzU3MSwyOTY0NiwyMzU3MiwxMzg0''@;'; put 'put ''MDUsMTU4NTA0LDIzNjI1LDE4NjUzLDIzNjg1LDIzNzg1LDIzNzkxLDIzOTQ3LDEzODc0NSwxMzg4MDcsMjM4MjQsMjM4MzIsMjM4NzgsMTM4OTE2LDIzNzM4LDI0MDIzLDMzNTMyLDE0MzgxLDE0OTc2MSwxMzkzMzcsMTM5NjM1LDMzNDE1LDE0MzkwLDE1Mjk4LDI0MTEwLDI3Mjc0LDI0MTgx''@;'; put 'put ''LDI0MTg2LDE0ODY2OCwxMzQzNTUsMjE0MTQsMjAxNTEsMjQyNzIsMjE0MTYsMTM3MDczLDI0MDczLDI0MzA4LDE2NDk5NCwyNDMxMywyNDMxNSwxNDQ5NiwyNDMxNiwyNjY4NiwzNzkxNSwyNDMzMywxMzE1MjEsMTk0NzA4LDE1MDcwLDE4NjA2LDEzNTk5NCwyNDM3OCwxNTc4MzIsMTQwMjQw''@;'; put 'put ''LDI0NDA4LDE0MDQwMSwyNDQxOSwzODg0NSwxNTkzNDIsMjQ0MzQsMzc2OTYsMTY2NDU0LDI0NDg3LDIzOTkwLDE1NzExLDE1MjE0NCwxMzkxMTQsMTU5OTkyLDE0MDkwNCwzNzMzNCwxMzE3NDIsMTY2NDQxLDI0NjI1LDI2MjQ1LDEzNzMzNSwxNDY5MSwxNTgxNSwxMzg4MSwyMjQxNiwxNDEy''@;'; put 'put ''MzYsMzEwODksMTU5MzYsMjQ3MzQsMjQ3NDAsMjQ3NTUsMTQ5ODkwLDE0OTkwMywxNjIzODcsMjk4NjAsMjA3MDUsMjMyMDAsMjQ5MzIsMzM4MjgsMjQ4OTgsMTk0NzI2LDE1OTQ0MiwyNDk2MSwyMDk4MCwxMzI2OTQsMjQ5NjcsMjM0NjYsMTQ3MzgzLDE0MTQwNywyNTA0MywxNjY4MTMsMTcw''@;'; put 'put ''MzMzLDI1MDQwLDE0NjQyLDE0MTY5NiwxNDE1MDUsMjQ2MTEsMjQ5MjQsMjU4ODYsMjU0ODMsMTMxMzUyLDI1Mjg1LDEzNzA3MiwyNTMwMSwxNDI4NjEsMjU0NTIsMTQ5OTgzLDE0ODcxLDI1NjU2LDI1NTkyLDEzNjA3OCwxMzcyMTIsMjU3NDQsMjg1NTQsMTQyOTAyLDM4OTMyLDE0NzU5Niwx''@;'; put 'put ''NTMzNzMsMjU4MjUsMjU4MjksMzgwMTEsMTQ5NTAsMjU2NTgsMTQ5MzUsMjU5MzMsMjg0MzgsMTUwMDU2LDE1MDA1MSwyNTk4OSwyNTk2NSwyNTk1MSwxNDM0ODYsMjYwMzcsMTQ5ODI0LDE5MjU1LDI2MDY1LDE2NjAwLDEzNzI1NywyNjA4MCwyNjA4MywyNDU0MywxNDQzODQsMjYxMzYsMTQz''@;'; put 'put ''ODYzLDE0Mzg2NCwyNjE4MCwxNDM3ODAsMTQzNzgxLDI2MTg3LDEzNDc3MywyNjIxNSwxNTIwMzgsMjYyMjcsMjYyMjgsMTM4ODEzLDE0MzkyMSwxNjUzNjQsMTQzODE2LDE1MjMzOSwzMDY2MSwxNDE1NTksMzkzMzIsMjYzNzAsMTQ4MzgwLDE1MDA0OSwxNTE0NywyNzEzMCwxNDUzNDYsMjY0''@;'; put 'put ''NjIsMjY0NzEsMjY0NjYsMTQ3OTE3LDE2ODE3MywyNjU4MywxNzY0MSwyNjY1OCwyODI0MCwzNzQzNiwyNjYyNSwxNDQzNTgsMTU5MTM2LDI2NzE3LDE0NDQ5NSwyNzEwNSwyNzE0NywxNjY2MjMsMjY5OTUsMjY4MTksMTQ0ODQ1LDI2ODgxLDI2ODgwLDE1NjY2LDE0ODQ5LDE0NDk1NiwxNTIz''@;'; put 'put ''MiwyNjU0MCwyNjk3NywxNjY0NzQsMTcxNDgsMjY5MzQsMjcwMzIsMTUyNjUsMTMyMDQxLDMzNjM1LDIwNjI0LDI3MTI5LDE0NDk4NSwxMzk1NjIsMjcyMDUsMTQ1MTU1LDI3MjkzLDE1MzQ3LDI2NTQ1LDI3MzM2LDE2ODM0OCwxNTM3MywyNzQyMSwxMzM0MTEsMjQ3OTgsMjc0NDUsMjc1MDgs''@;'; put 'put ''MTQxMjYxLDI4MzQxLDE0NjEzOSwxMzIwMjEsMTM3NTYwLDE0MTQ0LDIxNTM3LDE0NjI2NiwyNzYxNywxNDcxOTYsMjc2MTIsMjc3MDMsMTQwNDI3LDE0OTc0NSwxNTg1NDUsMjc3MzgsMzMzMTgsMjc3NjksMTQ2ODc2LDE3NjA1LDE0Njg3NywxNDc4NzYsMTQ5NzcyLDE0OTc2MCwxNDY2MzMs''@;'; put 'put ''MTQwNTMsMTU1OTUsMTM0NDUwLDM5ODExLDE0Mzg2NSwxNDA0MzMsMzI2NTUsMjY2NzksMTU5MDEzLDE1OTEzNywxNTkyMTEsMjgwNTQsMjc5OTYsMjgyODQsMjg0MjAsMTQ5ODg3LDE0NzU4OSwxNTkzNDYsMzQwOTksMTU5NjA0LDIwOTM1LDI3ODA0LDI4MTg5LDMzODM4LDE2NjY4OSwyODIw''@;'; put 'put ''NywxNDY5OTEsMjk3NzksMTQ3MzMwLDMxMTgwLDI4MjM5LDIzMTg1LDE0MzQzNSwyODY2NCwxNDA5MywyODU3MywxNDY5OTIsMjg0MTAsMTM2MzQzLDE0NzUxNywxNzc0OSwzNzg3MiwyODQ4NCwyODUwOCwxNTY5NCwyODUzMiwxNjgzMDQsMTU2NzUsMjg1NzUsMTQ3NzgwLDI4NjI3LDE0NzYw''@;'; put 'put ''MSwxNDc3OTcsMTQ3NTEzLDE0NzQ0MCwxNDczODAsMTQ3Nzc1LDIwOTU5LDE0Nzc5OCwxNDc3OTksMTQ3Nzc2LDE1NjEyNSwyODc0NywyODc5OCwyODgzOSwyODgwMSwyODg3NiwyODg4NSwyODg4NiwyODg5NSwxNjY0NCwxNTg0OCwyOTEwOCwyOTA3OCwxNDgwODcsMjg5NzEsMjg5OTcsMjMx''@;'; put 'put ''NzYsMjkwMDIsMjkwMzgsMjM3MDgsMTQ4MzI1LDI5MDA3LDM3NzMwLDE0ODE2MSwyODk3MiwxNDg1NzAsMTUwMDU1LDE1MDA1MCwyOTExNCwxNjY4ODgsMjg4NjEsMjkxOTgsMzc5NTQsMjkyMDUsMjI4MDEsMzc5NTUsMjkyMjAsMzc2OTcsMTUzMDkzLDI5MjMwLDI5MjQ4LDE0OTg3NiwyNjgx''@;'; put 'put ''MywyOTI2OSwyOTI3MSwxNTk1NywxNDM0MjgsMjY2MzcsMjg0NzcsMjkzMTQsMjk0ODIsMjk0ODMsMTQ5NTM5LDE2NTkzMSwxODY2OSwxNjU4OTIsMjk0ODAsMjk0ODYsMjk2NDcsMjk2MTAsMTM0MjAyLDE1ODI1NCwyOTY0MSwyOTc2OSwxNDc5MzgsMTM2OTM1LDE1MDA1MiwyNjE0NywxNDAy''@;'; put 'put ''MSwxNDk5NDMsMTQ5OTAxLDE1MDAxMSwyOTY4NywyOTcxNywyNjg4MywxNTAwNTQsMjk3NTMsMTMyNTQ3LDE2MDg3LDI5Nzg4LDE0MTQ4NSwyOTc5MiwxNjc2MDIsMjk3NjcsMjk2NjgsMjk4MTQsMzM3MjEsMjk4MDQsMTQxMjgsMjk4MTIsMzc4NzMsMjcxODAsMjk4MjYsMTg3NzEsMTUwMTU2''@;'; put 'put ''LDE0NzgwNywxNTAxMzcsMTY2Nzk5LDIzMzY2LDE2NjkxNSwxMzczNzQsMjk4OTYsMTM3NjA4LDI5OTY2LDI5OTI5LDI5OTgyLDE2NzY0MSwxMzc4MDMsMjM1MTEsMTY3NTk2LDM3NzY1LDMwMDI5LDMwMDI2LDMwMDU1LDMwMDYyLDE1MTQyNiwxNjEzMiwxNTA4MDMsMzAwOTQsMjk3ODksMzAx''@;'; put 'put ''MTAsMzAxMzIsMzAyMTAsMzAyNTIsMzAyODksMzAyODcsMzAzMTksMzAzMjYsMTU2NjYxLDMwMzUyLDMzMjYzLDE0MzI4LDE1Nzk2OSwxNTc5NjYsMzAzNjksMzAzNzMsMzAzOTEsMzA0MTIsMTU5NjQ3LDMzODkwLDE1MTcwOSwxNTE5MzMsMTM4NzgwLDMwNDk0LDMwNTAyLDMwNTI4LDI1Nzc1''@;'; put 'put ''LDE1MjA5NiwzMDU1MiwxNDQwNDQsMzA2MzksMTY2MjQ0LDE2NjI0OCwxMzY4OTcsMzA3MDgsMzA3MjksMTM2MDU0LDE1MDAzNCwyNjgyNiwzMDg5NSwzMDkxOSwzMDkzMSwzODU2NSwzMTAyMiwxNTMwNTYsMzA5MzUsMzEwMjgsMzA4OTcsMTYxMjkyLDM2NzkyLDM0OTQ4LDE2NjY5OSwxNTU3''@;'; put 'put ''NzksMTQwODI4LDMxMTEwLDM1MDcyLDI2ODgyLDMxMTA0LDE1MzY4NywzMTEzMywxNjI2MTcsMzEwMzYsMzExNDUsMjgyMDIsMTYwMDM4LDE2MDQwLDMxMTc0LDE2ODIwNSwzMTE4OF0sImV1Yy1rciI6WzQ0MDM0LDQ0MDM1LDQ0MDM3LDQ0MDM4LDQ0MDQzLDQ0MDQ0LDQ0MDQ1LDQ0MDQ2LDQ0''@;'; put 'put ''MDQ3LDQ0MDU2LDQ0MDYyLDQ0MDYzLDQ0MDY1LDQ0MDY2LDQ0MDY3LDQ0MDY5LDQ0MDcwLDQ0MDcxLDQ0MDcyLDQ0MDczLDQ0MDc0LDQ0MDc1LDQ0MDc4LDQ0MDgyLDQ0MDgzLDQ0MDg0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MDg1LDQ0MDg2LDQ0MDg3LDQ0MDkwLDQ0MDkx''@;'; put 'put ''LDQ0MDkzLDQ0MDk0LDQ0MDk1LDQ0MDk3LDQ0MDk4LDQ0MDk5LDQ0MTAwLDQ0MTAxLDQ0MTAyLDQ0MTAzLDQ0MTA0LDQ0MTA1LDQ0MTA2LDQ0MTA4LDQ0MTEwLDQ0MTExLDQ0MTEyLDQ0MTEzLDQ0MTE0LDQ0MTE1LDQ0MTE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MTE4LDQ0''@;'; put 'put ''MTE5LDQ0MTIxLDQ0MTIyLDQ0MTIzLDQ0MTI1LDQ0MTI2LDQ0MTI3LDQ0MTI4LDQ0MTI5LDQ0MTMwLDQ0MTMxLDQ0MTMyLDQ0MTMzLDQ0MTM0LDQ0MTM1LDQ0MTM2LDQ0MTM3LDQ0MTM4LDQ0MTM5LDQ0MTQwLDQ0MTQxLDQ0MTQyLDQ0MTQzLDQ0MTQ2LDQ0MTQ3LDQ0MTQ5LDQ0MTUwLDQ0MTUz''@;'; put 'put ''LDQ0MTU1LDQ0MTU2LDQ0MTU3LDQ0MTU4LDQ0MTU5LDQ0MTYyLDQ0MTY3LDQ0MTY4LDQ0MTczLDQ0MTc0LDQ0MTc1LDQ0MTc3LDQ0MTc4LDQ0MTc5LDQ0MTgxLDQ0MTgyLDQ0MTgzLDQ0MTg0LDQ0MTg1LDQ0MTg2LDQ0MTg3LDQ0MTkwLDQ0MTk0LDQ0MTk1LDQ0MTk2LDQ0MTk3LDQ0MTk4LDQ0''@;'; put 'put ''MTk5LDQ0MjAzLDQ0MjA1LDQ0MjA2LDQ0MjA5LDQ0MjEwLDQ0MjExLDQ0MjEyLDQ0MjEzLDQ0MjE0LDQ0MjE1LDQ0MjE4LDQ0MjIyLDQ0MjIzLDQ0MjI0LDQ0MjI2LDQ0MjI3LDQ0MjI5LDQ0MjMwLDQ0MjMxLDQ0MjMzLDQ0MjM0LDQ0MjM1LDQ0MjM3LDQ0MjM4LDQ0MjM5LDQ0MjQwLDQ0MjQx''@;'; put 'put ''LDQ0MjQyLDQ0MjQzLDQ0MjQ0LDQ0MjQ2LDQ0MjQ4LDQ0MjQ5LDQ0MjUwLDQ0MjUxLDQ0MjUyLDQ0MjUzLDQ0MjU0LDQ0MjU1LDQ0MjU4LDQ0MjU5LDQ0MjYxLDQ0MjYyLDQ0MjY1LDQ0MjY3LDQ0MjY5LDQ0MjcwLDQ0Mjc0LDQ0Mjc2LDQ0Mjc5LDQ0MjgwLDQ0MjgxLDQ0MjgyLDQ0MjgzLDQ0''@;'; put 'put ''Mjg2LDQ0Mjg3LDQ0Mjg5LDQ0MjkwLDQ0MjkxLDQ0MjkzLDQ0Mjk1LDQ0Mjk2LDQ0Mjk3LDQ0Mjk4LDQ0Mjk5LDQ0MzAyLDQ0MzA0LDQ0MzA2LDQ0MzA3LDQ0MzA4LDQ0MzA5LDQ0MzEwLDQ0MzExLDQ0MzEzLDQ0MzE0LDQ0MzE1LDQ0MzE3LDQ0MzE4LDQ0MzE5LDQ0MzIxLDQ0MzIyLDQ0MzIz''@;'; put 'put ''LDQ0MzI0LDQ0MzI1LDQ0MzI2LDQ0MzI3LDQ0MzI4LDQ0MzMwLDQ0MzMxLDQ0MzM0LDQ0MzM1LDQ0MzM2LDQ0MzM3LDQ0MzM4LDQ0MzM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MzQyLDQ0MzQzLDQ0MzQ1LDQ0MzQ2LDQ0MzQ3LDQ0MzQ5LDQ0MzUwLDQ0MzUxLDQ0MzUyLDQ0''@;'; put 'put ''MzUzLDQ0MzU0LDQ0MzU1LDQ0MzU4LDQ0MzYwLDQ0MzYyLDQ0MzYzLDQ0MzY0LDQ0MzY1LDQ0MzY2LDQ0MzY3LDQ0MzY5LDQ0MzcwLDQ0MzcxLDQ0MzczLDQ0Mzc0LDQ0Mzc1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0Mzc3LDQ0Mzc4LDQ0Mzc5LDQ0MzgwLDQ0MzgxLDQ0Mzgy''@;'; put 'put ''LDQ0MzgzLDQ0Mzg0LDQ0Mzg2LDQ0Mzg4LDQ0Mzg5LDQ0MzkwLDQ0MzkxLDQ0MzkyLDQ0MzkzLDQ0Mzk0LDQ0Mzk1LDQ0Mzk4LDQ0Mzk5LDQ0NDAxLDQ0NDAyLDQ0NDA3LDQ0NDA4LDQ0NDA5LDQ0NDEwLDQ0NDE0LDQ0NDE2LDQ0NDE5LDQ0NDIwLDQ0NDIxLDQ0NDIyLDQ0NDIzLDQ0NDI2LDQ0''@;'; put 'put ''NDI3LDQ0NDI5LDQ0NDMwLDQ0NDMxLDQ0NDMzLDQ0NDM0LDQ0NDM1LDQ0NDM2LDQ0NDM3LDQ0NDM4LDQ0NDM5LDQ0NDQwLDQ0NDQxLDQ0NDQyLDQ0NDQzLDQ0NDQ2LDQ0NDQ3LDQ0NDQ4LDQ0NDQ5LDQ0NDUwLDQ0NDUxLDQ0NDUzLDQ0NDU0LDQ0NDU1LDQ0NDU2LDQ0NDU3LDQ0NDU4LDQ0NDU5''@;'; put 'put ''LDQ0NDYwLDQ0NDYxLDQ0NDYyLDQ0NDYzLDQ0NDY0LDQ0NDY1LDQ0NDY2LDQ0NDY3LDQ0NDY4LDQ0NDY5LDQ0NDcwLDQ0NDcyLDQ0NDczLDQ0NDc0LDQ0NDc1LDQ0NDc2LDQ0NDc3LDQ0NDc4LDQ0NDc5LDQ0NDgyLDQ0NDgzLDQ0NDg1LDQ0NDg2LDQ0NDg3LDQ0NDg5LDQ0NDkwLDQ0NDkxLDQ0''@;'; put 'put ''NDkyLDQ0NDkzLDQ0NDk0LDQ0NDk1LDQ0NDk4LDQ0NTAwLDQ0NTAxLDQ0NTAyLDQ0NTAzLDQ0NTA0LDQ0NTA1LDQ0NTA2LDQ0NTA3LDQ0NTA5LDQ0NTEwLDQ0NTExLDQ0NTEzLDQ0NTE0LDQ0NTE1LDQ0NTE3LDQ0NTE4LDQ0NTE5LDQ0NTIwLDQ0NTIxLDQ0NTIyLDQ0NTIzLDQ0NTI0LDQ0NTI1''@;'; put 'put ''LDQ0NTI2LDQ0NTI3LDQ0NTI4LDQ0NTI5LDQ0NTMwLDQ0NTMxLDQ0NTMyLDQ0NTMzLDQ0NTM0LDQ0NTM1LDQ0NTM4LDQ0NTM5LDQ0NTQxLDQ0NTQyLDQ0NTQ2LDQ0NTQ3LDQ0NTQ4LDQ0NTQ5LDQ0NTUwLDQ0NTUxLDQ0NTU0LDQ0NTU2LDQ0NTU4LDQ0NTU5LDQ0NTYwLDQ0NTYxLDQ0NTYyLDQ0''@;'; put 'put ''NTYzLDQ0NTY1LDQ0NTY2LDQ0NTY3LDQ0NTY4LDQ0NTY5LDQ0NTcwLDQ0NTcxLDQ0NTcyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NTczLDQ0NTc0LDQ0NTc1LDQ0NTc2LDQ0NTc3LDQ0NTc4LDQ0NTc5LDQ0NTgwLDQ0NTgxLDQ0NTgyLDQ0NTgzLDQ0NTg0LDQ0NTg1LDQ0NTg2''@;'; put 'put ''LDQ0NTg3LDQ0NTg4LDQ0NTg5LDQ0NTkwLDQ0NTkxLDQ0NTk0LDQ0NTk1LDQ0NTk3LDQ0NTk4LDQ0NjAxLDQ0NjAzLDQ0NjA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NjA1LDQ0NjA2LDQ0NjA3LDQ0NjEwLDQ0NjEyLDQ0NjE1LDQ0NjE2LDQ0NjE3LDQ0NjE5LDQ0NjIzLDQ0''@;'; put 'put ''NjI1LDQ0NjI2LDQ0NjI3LDQ0NjI5LDQ0NjMxLDQ0NjMyLDQ0NjMzLDQ0NjM0LDQ0NjM1LDQ0NjM4LDQ0NjQyLDQ0NjQzLDQ0NjQ0LDQ0NjQ2LDQ0NjQ3LDQ0NjUwLDQ0NjUxLDQ0NjUzLDQ0NjU0LDQ0NjU1LDQ0NjU3LDQ0NjU4LDQ0NjU5LDQ0NjYwLDQ0NjYxLDQ0NjYyLDQ0NjYzLDQ0NjY2''@;'; put 'put ''LDQ0NjcwLDQ0NjcxLDQ0NjcyLDQ0NjczLDQ0Njc0LDQ0Njc1LDQ0Njc4LDQ0Njc5LDQ0NjgwLDQ0NjgxLDQ0NjgyLDQ0NjgzLDQ0Njg1LDQ0Njg2LDQ0Njg3LDQ0Njg4LDQ0Njg5LDQ0NjkwLDQ0NjkxLDQ0NjkyLDQ0NjkzLDQ0Njk0LDQ0Njk1LDQ0Njk2LDQ0Njk3LDQ0Njk4LDQ0Njk5LDQ0''@;'; put 'put ''NzAwLDQ0NzAxLDQ0NzAyLDQ0NzAzLDQ0NzA0LDQ0NzA1LDQ0NzA2LDQ0NzA3LDQ0NzA4LDQ0NzA5LDQ0NzEwLDQ0NzExLDQ0NzEyLDQ0NzEzLDQ0NzE0LDQ0NzE1LDQ0NzE2LDQ0NzE3LDQ0NzE4LDQ0NzE5LDQ0NzIwLDQ0NzIxLDQ0NzIyLDQ0NzIzLDQ0NzI0LDQ0NzI1LDQ0NzI2LDQ0NzI3''@;'; put 'put ''LDQ0NzI4LDQ0NzI5LDQ0NzMwLDQ0NzMxLDQ0NzM1LDQ0NzM3LDQ0NzM4LDQ0NzM5LDQ0NzQxLDQ0NzQyLDQ0NzQzLDQ0NzQ0LDQ0NzQ1LDQ0NzQ2LDQ0NzQ3LDQ0NzUwLDQ0NzU0LDQ0NzU1LDQ0NzU2LDQ0NzU3LDQ0NzU4LDQ0NzU5LDQ0NzYyLDQ0NzYzLDQ0NzY1LDQ0NzY2LDQ0NzY3LDQ0''@;'; put 'put ''NzY4LDQ0NzY5LDQ0NzcwLDQ0NzcxLDQ0NzcyLDQ0NzczLDQ0Nzc0LDQ0Nzc1LDQ0Nzc3LDQ0Nzc4LDQ0NzgwLDQ0NzgyLDQ0NzgzLDQ0Nzg0LDQ0Nzg1LDQ0Nzg2LDQ0Nzg3LDQ0Nzg5LDQ0NzkwLDQ0NzkxLDQ0NzkzLDQ0Nzk0LDQ0Nzk1LDQ0Nzk3LDQ0Nzk4LDQ0Nzk5LDQ0ODAwLDQ0ODAx''@;'; put 'put ''LDQ0ODAyLDQ0ODAzLDQ0ODA0LDQ0ODA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODA2LDQ0ODA5LDQ0ODEwLDQ0ODExLDQ0ODEyLDQ0ODE0LDQ0ODE1LDQ0ODE3LDQ0ODE4LDQ0ODE5LDQ0ODIwLDQ0ODIxLDQ0ODIyLDQ0ODIzLDQ0ODI0LDQ0ODI1LDQ0ODI2LDQ0ODI3LDQ0''@;'; put 'put ''ODI4LDQ0ODI5LDQ0ODMwLDQ0ODMxLDQ0ODMyLDQ0ODMzLDQ0ODM0LDQ0ODM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODM2LDQ0ODM3LDQ0ODM4LDQ0ODM5LDQ0ODQwLDQ0ODQxLDQ0ODQyLDQ0ODQzLDQ0ODQ2LDQ0ODQ3LDQ0ODQ5LDQ0ODUxLDQ0ODUzLDQ0ODU0LDQ0ODU1''@;'; put 'put ''LDQ0ODU2LDQ0ODU3LDQ0ODU4LDQ0ODU5LDQ0ODYyLDQ0ODY0LDQ0ODY4LDQ0ODY5LDQ0ODcwLDQ0ODcxLDQ0ODc0LDQ0ODc1LDQ0ODc2LDQ0ODc3LDQ0ODc4LDQ0ODc5LDQ0ODgxLDQ0ODgyLDQ0ODgzLDQ0ODg0LDQ0ODg1LDQ0ODg2LDQ0ODg3LDQ0ODg4LDQ0ODg5LDQ0ODkwLDQ0ODkxLDQ0''@;'; put 'put ''ODk0LDQ0ODk1LDQ0ODk2LDQ0ODk3LDQ0ODk4LDQ0ODk5LDQ0OTAyLDQ0OTAzLDQ0OTA0LDQ0OTA1LDQ0OTA2LDQ0OTA3LDQ0OTA4LDQ0OTA5LDQ0OTEwLDQ0OTExLDQ0OTEyLDQ0OTEzLDQ0OTE0LDQ0OTE1LDQ0OTE2LDQ0OTE3LDQ0OTE4LDQ0OTE5LDQ0OTIwLDQ0OTIyLDQ0OTIzLDQ0OTI0''@;'; put 'put ''LDQ0OTI1LDQ0OTI2LDQ0OTI3LDQ0OTI5LDQ0OTMwLDQ0OTMxLDQ0OTMzLDQ0OTM0LDQ0OTM1LDQ0OTM3LDQ0OTM4LDQ0OTM5LDQ0OTQwLDQ0OTQxLDQ0OTQyLDQ0OTQzLDQ0OTQ2LDQ0OTQ3LDQ0OTQ4LDQ0OTUwLDQ0OTUxLDQ0OTUyLDQ0OTUzLDQ0OTU0LDQ0OTU1LDQ0OTU3LDQ0OTU4LDQ0''@;'; put 'put ''OTU5LDQ0OTYwLDQ0OTYxLDQ0OTYyLDQ0OTYzLDQ0OTY0LDQ0OTY1LDQ0OTY2LDQ0OTY3LDQ0OTY4LDQ0OTY5LDQ0OTcwLDQ0OTcxLDQ0OTcyLDQ0OTczLDQ0OTc0LDQ0OTc1LDQ0OTc2LDQ0OTc3LDQ0OTc4LDQ0OTc5LDQ0OTgwLDQ0OTgxLDQ0OTgyLDQ0OTgzLDQ0OTg2LDQ0OTg3LDQ0OTg5''@;'; put 'put ''LDQ0OTkwLDQ0OTkxLDQ0OTkzLDQ0OTk0LDQ0OTk1LDQ0OTk2LDQ0OTk3LDQ0OTk4LDQ1MDAyLDQ1MDA0LDQ1MDA3LDQ1MDA4LDQ1MDA5LDQ1MDEwLDQ1MDExLDQ1MDEzLDQ1MDE0LDQ1MDE1LDQ1MDE2LDQ1MDE3LDQ1MDE4LDQ1MDE5LDQ1MDIxLDQ1MDIyLDQ1MDIzLDQ1MDI0LDQ1MDI1LG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDI2LDQ1MDI3LDQ1MDI4LDQ1MDI5LDQ1MDMwLDQ1MDMxLDQ1MDM0LDQ1MDM1LDQ1MDM2LDQ1MDM3LDQ1MDM4LDQ1MDM5LDQ1MDQyLDQ1MDQzLDQ1MDQ1LDQ1MDQ2LDQ1MDQ3LDQ1MDQ5LDQ1MDUwLDQ1MDUxLDQ1MDUyLDQ1MDUzLDQ1MDU0''@;'; put 'put ''LDQ1MDU1LDQ1MDU4LDQ1MDU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDYxLDQ1MDYyLDQ1MDYzLDQ1MDY0LDQ1MDY1LDQ1MDY2LDQ1MDY3LDQ1MDY5LDQ1MDcwLDQ1MDcxLDQ1MDczLDQ1MDc0LDQ1MDc1LDQ1MDc3LDQ1MDc4LDQ1MDc5LDQ1MDgwLDQ1MDgxLDQ1MDgyLDQ1''@;'; put 'put ''MDgzLDQ1MDg2LDQ1MDg3LDQ1MDg4LDQ1MDg5LDQ1MDkwLDQ1MDkxLDQ1MDkyLDQ1MDkzLDQ1MDk0LDQ1MDk1LDQ1MDk3LDQ1MDk4LDQ1MDk5LDQ1MTAwLDQ1MTAxLDQ1MTAyLDQ1MTAzLDQ1MTA0LDQ1MTA1LDQ1MTA2LDQ1MTA3LDQ1MTA4LDQ1MTA5LDQ1MTEwLDQ1MTExLDQ1MTEyLDQ1MTEz''@;'; put 'put ''LDQ1MTE0LDQ1MTE1LDQ1MTE2LDQ1MTE3LDQ1MTE4LDQ1MTE5LDQ1MTIwLDQ1MTIxLDQ1MTIyLDQ1MTIzLDQ1MTI2LDQ1MTI3LDQ1MTI5LDQ1MTMxLDQ1MTMzLDQ1MTM1LDQ1MTM2LDQ1MTM3LDQ1MTM4LDQ1MTQyLDQ1MTQ0LDQ1MTQ2LDQ1MTQ3LDQ1MTQ4LDQ1MTUwLDQ1MTUxLDQ1MTUyLDQ1''@;'; put 'put ''MTUzLDQ1MTU0LDQ1MTU1LDQ1MTU2LDQ1MTU3LDQ1MTU4LDQ1MTU5LDQ1MTYwLDQ1MTYxLDQ1MTYyLDQ1MTYzLDQ1MTY0LDQ1MTY1LDQ1MTY2LDQ1MTY3LDQ1MTY4LDQ1MTY5LDQ1MTcwLDQ1MTcxLDQ1MTcyLDQ1MTczLDQ1MTc0LDQ1MTc1LDQ1MTc2LDQ1MTc3LDQ1MTc4LDQ1MTc5LDQ1MTgy''@;'; put 'put ''LDQ1MTgzLDQ1MTg1LDQ1MTg2LDQ1MTg3LDQ1MTg5LDQ1MTkwLDQ1MTkxLDQ1MTkyLDQ1MTkzLDQ1MTk0LDQ1MTk1LDQ1MTk4LDQ1MjAwLDQ1MjAyLDQ1MjAzLDQ1MjA0LDQ1MjA1LDQ1MjA2LDQ1MjA3LDQ1MjExLDQ1MjEzLDQ1MjE0LDQ1MjE5LDQ1MjIwLDQ1MjIxLDQ1MjIyLDQ1MjIzLDQ1''@;'; put 'put ''MjI2LDQ1MjMyLDQ1MjM0LDQ1MjM4LDQ1MjM5LDQ1MjQxLDQ1MjQyLDQ1MjQzLDQ1MjQ1LDQ1MjQ2LDQ1MjQ3LDQ1MjQ4LDQ1MjQ5LDQ1MjUwLDQ1MjUxLDQ1MjU0LDQ1MjU4LDQ1MjU5LDQ1MjYwLDQ1MjYxLDQ1MjYyLDQ1MjYzLDQ1MjY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDQ1MjY3LDQ1MjY5LDQ1MjcwLDQ1MjcxLDQ1MjczLDQ1Mjc0LDQ1Mjc1LDQ1Mjc2LDQ1Mjc3LDQ1Mjc4LDQ1Mjc5LDQ1MjgxLDQ1MjgyLDQ1MjgzLDQ1Mjg0LDQ1Mjg2LDQ1Mjg3LDQ1Mjg4LDQ1Mjg5LDQ1MjkwLDQ1MjkxLDQ1MjkyLDQ1MjkzLDQ1Mjk0LDQ1Mjk1LDQ1Mjk2LG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLDQ1Mjk3LDQ1Mjk4LDQ1Mjk5LDQ1MzAwLDQ1MzAxLDQ1MzAyLDQ1MzAzLDQ1MzA0LDQ1MzA1LDQ1MzA2LDQ1MzA3LDQ1MzA4LDQ1MzA5LDQ1MzEwLDQ1MzExLDQ1MzEyLDQ1MzEzLDQ1MzE0LDQ1MzE1LDQ1MzE2LDQ1MzE3LDQ1MzE4LDQ1MzE5LDQ1MzIy''@;'; put 'put ''LDQ1MzI1LDQ1MzI2LDQ1MzI3LDQ1MzI5LDQ1MzMyLDQ1MzMzLDQ1MzM0LDQ1MzM1LDQ1MzM4LDQ1MzQyLDQ1MzQzLDQ1MzQ0LDQ1MzQ1LDQ1MzQ2LDQ1MzUwLDQ1MzUxLDQ1MzUzLDQ1MzU0LDQ1MzU1LDQ1MzU3LDQ1MzU4LDQ1MzU5LDQ1MzYwLDQ1MzYxLDQ1MzYyLDQ1MzYzLDQ1MzY2LDQ1''@;'; put 'put ''MzcwLDQ1MzcxLDQ1MzcyLDQ1MzczLDQ1Mzc0LDQ1Mzc1LDQ1Mzc4LDQ1Mzc5LDQ1MzgxLDQ1MzgyLDQ1MzgzLDQ1Mzg1LDQ1Mzg2LDQ1Mzg3LDQ1Mzg4LDQ1Mzg5LDQ1MzkwLDQ1MzkxLDQ1Mzk0LDQ1Mzk1LDQ1Mzk4LDQ1Mzk5LDQ1NDAxLDQ1NDAyLDQ1NDAzLDQ1NDA1LDQ1NDA2LDQ1NDA3''@;'; put 'put ''LDQ1NDA5LDQ1NDEwLDQ1NDExLDQ1NDEyLDQ1NDEzLDQ1NDE0LDQ1NDE1LDQ1NDE2LDQ1NDE3LDQ1NDE4LDQ1NDE5LDQ1NDIwLDQ1NDIxLDQ1NDIyLDQ1NDIzLDQ1NDI0LDQ1NDI1LDQ1NDI2LDQ1NDI3LDQ1NDI4LDQ1NDI5LDQ1NDMwLDQ1NDMxLDQ1NDM0LDQ1NDM1LDQ1NDM3LDQ1NDM4LDQ1''@;'; put 'put ''NDM5LDQ1NDQxLDQ1NDQzLDQ1NDQ0LDQ1NDQ1LDQ1NDQ2LDQ1NDQ3LDQ1NDUwLDQ1NDUyLDQ1NDU0LDQ1NDU1LDQ1NDU2LDQ1NDU3LDQ1NDYxLDQ1NDYyLDQ1NDYzLDQ1NDY1LDQ1NDY2LDQ1NDY3LDQ1NDY5LDQ1NDcwLDQ1NDcxLDQ1NDcyLDQ1NDczLDQ1NDc0LDQ1NDc1LDQ1NDc2LDQ1NDc3''@;'; put 'put ''LDQ1NDc4LDQ1NDc5LDQ1NDgxLDQ1NDgyLDQ1NDgzLDQ1NDg0LDQ1NDg1LDQ1NDg2LDQ1NDg3LDQ1NDg4LDQ1NDg5LDQ1NDkwLDQ1NDkxLDQ1NDkyLDQ1NDkzLDQ1NDk0LDQ1NDk1LDQ1NDk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NDk3LDQ1NDk4LDQ1NDk5LDQ1NTAwLDQ1''@;'; put 'put ''NTAxLDQ1NTAyLDQ1NTAzLDQ1NTA0LDQ1NTA1LDQ1NTA2LDQ1NTA3LDQ1NTA4LDQ1NTA5LDQ1NTEwLDQ1NTExLDQ1NTEyLDQ1NTEzLDQ1NTE0LDQ1NTE1LDQ1NTE3LDQ1NTE4LDQ1NTE5LDQ1NTIxLDQ1NTIyLDQ1NTIzLDQ1NTI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NTI2''@;'; put 'put ''LDQ1NTI3LDQ1NTI4LDQ1NTI5LDQ1NTMwLDQ1NTMxLDQ1NTM0LDQ1NTM2LDQ1NTM3LDQ1NTM4LDQ1NTM5LDQ1NTQwLDQ1NTQxLDQ1NTQyLDQ1NTQzLDQ1NTQ2LDQ1NTQ3LDQ1NTQ5LDQ1NTUwLDQ1NTUxLDQ1NTUzLDQ1NTU0LDQ1NTU1LDQ1NTU2LDQ1NTU3LDQ1NTU4LDQ1NTU5LDQ1NTYwLDQ1''@;'; put 'put ''NTYyLDQ1NTY0LDQ1NTY2LDQ1NTY3LDQ1NTY4LDQ1NTY5LDQ1NTcwLDQ1NTcxLDQ1NTc0LDQ1NTc1LDQ1NTc3LDQ1NTc4LDQ1NTgxLDQ1NTgyLDQ1NTgzLDQ1NTg0LDQ1NTg1LDQ1NTg2LDQ1NTg3LDQ1NTkwLDQ1NTkyLDQ1NTk0LDQ1NTk1LDQ1NTk2LDQ1NTk3LDQ1NTk4LDQ1NTk5LDQ1NjAx''@;'; put 'put ''LDQ1NjAyLDQ1NjAzLDQ1NjA0LDQ1NjA1LDQ1NjA2LDQ1NjA3LDQ1NjA4LDQ1NjA5LDQ1NjEwLDQ1NjExLDQ1NjEyLDQ1NjEzLDQ1NjE0LDQ1NjE1LDQ1NjE2LDQ1NjE3LDQ1NjE4LDQ1NjE5LDQ1NjIxLDQ1NjIyLDQ1NjIzLDQ1NjI0LDQ1NjI1LDQ1NjI2LDQ1NjI3LDQ1NjI5LDQ1NjMwLDQ1''@;'; put 'put ''NjMxLDQ1NjMyLDQ1NjMzLDQ1NjM0LDQ1NjM1LDQ1NjM2LDQ1NjM3LDQ1NjM4LDQ1NjM5LDQ1NjQwLDQ1NjQxLDQ1NjQyLDQ1NjQzLDQ1NjQ0LDQ1NjQ1LDQ1NjQ2LDQ1NjQ3LDQ1NjQ4LDQ1NjQ5LDQ1NjUwLDQ1NjUxLDQ1NjUyLDQ1NjUzLDQ1NjU0LDQ1NjU1LDQ1NjU3LDQ1NjU4LDQ1NjU5''@;'; put 'put ''LDQ1NjYxLDQ1NjYyLDQ1NjYzLDQ1NjY1LDQ1NjY2LDQ1NjY3LDQ1NjY4LDQ1NjY5LDQ1NjcwLDQ1NjcxLDQ1Njc0LDQ1Njc1LDQ1Njc2LDQ1Njc3LDQ1Njc4LDQ1Njc5LDQ1NjgwLDQ1NjgxLDQ1NjgyLDQ1NjgzLDQ1Njg2LDQ1Njg3LDQ1Njg4LDQ1Njg5LDQ1NjkwLDQ1NjkxLDQ1NjkzLDQ1''@;'; put 'put ''Njk0LDQ1Njk1LDQ1Njk2LDQ1Njk3LDQ1Njk4LDQ1Njk5LDQ1NzAyLDQ1NzAzLDQ1NzA0LDQ1NzA2LDQ1NzA3LDQ1NzA4LDQ1NzA5LDQ1NzEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzExLDQ1NzE0LDQ1NzE1LDQ1NzE3LDQ1NzE4LDQ1NzE5LDQ1NzIzLDQ1NzI0LDQ1NzI1''@;'; put 'put ''LDQ1NzI2LDQ1NzI3LDQ1NzMwLDQ1NzMyLDQ1NzM1LDQ1NzM2LDQ1NzM3LDQ1NzM5LDQ1NzQxLDQ1NzQyLDQ1NzQzLDQ1NzQ1LDQ1NzQ2LDQ1NzQ3LDQ1NzQ5LDQ1NzUwLDQ1NzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzUyLDQ1NzUzLDQ1NzU0LDQ1NzU1LDQ1NzU2LDQ1''@;'; put 'put ''NzU3LDQ1NzU4LDQ1NzU5LDQ1NzYwLDQ1NzYxLDQ1NzYyLDQ1NzYzLDQ1NzY0LDQ1NzY1LDQ1NzY2LDQ1NzY3LDQ1NzcwLDQ1NzcxLDQ1NzczLDQ1Nzc0LDQ1Nzc1LDQ1Nzc3LDQ1Nzc5LDQ1NzgwLDQ1NzgxLDQ1NzgyLDQ1NzgzLDQ1Nzg2LDQ1Nzg4LDQ1NzkwLDQ1NzkxLDQ1NzkyLDQ1Nzkz''@;'; put 'put ''LDQ1Nzk1LDQ1Nzk5LDQ1ODAxLDQ1ODAyLDQ1ODA4LDQ1ODA5LDQ1ODEwLDQ1ODE0LDQ1ODIwLDQ1ODIxLDQ1ODIyLDQ1ODI2LDQ1ODI3LDQ1ODI5LDQ1ODMwLDQ1ODMxLDQ1ODMzLDQ1ODM0LDQ1ODM1LDQ1ODM2LDQ1ODM3LDQ1ODM4LDQ1ODM5LDQ1ODQyLDQ1ODQ2LDQ1ODQ3LDQ1ODQ4LDQ1''@;'; put 'put ''ODQ5LDQ1ODUwLDQ1ODUxLDQ1ODUzLDQ1ODU0LDQ1ODU1LDQ1ODU2LDQ1ODU3LDQ1ODU4LDQ1ODU5LDQ1ODYwLDQ1ODYxLDQ1ODYyLDQ1ODYzLDQ1ODY0LDQ1ODY1LDQ1ODY2LDQ1ODY3LDQ1ODY4LDQ1ODY5LDQ1ODcwLDQ1ODcxLDQ1ODcyLDQ1ODczLDQ1ODc0LDQ1ODc1LDQ1ODc2LDQ1ODc3''@;'; put 'put ''LDQ1ODc4LDQ1ODc5LDQ1ODgwLDQ1ODgxLDQ1ODgyLDQ1ODgzLDQ1ODg0LDQ1ODg1LDQ1ODg2LDQ1ODg3LDQ1ODg4LDQ1ODg5LDQ1ODkwLDQ1ODkxLDQ1ODkyLDQ1ODkzLDQ1ODk0LDQ1ODk1LDQ1ODk2LDQ1ODk3LDQ1ODk4LDQ1ODk5LDQ1OTAwLDQ1OTAxLDQ1OTAyLDQ1OTAzLDQ1OTA0LDQ1''@;'; put 'put ''OTA1LDQ1OTA2LDQ1OTA3LDQ1OTExLDQ1OTEzLDQ1OTE0LDQ1OTE3LDQ1OTIwLDQ1OTIxLDQ1OTIyLDQ1OTIzLDQ1OTI2LDQ1OTI4LDQ1OTMwLDQ1OTMyLDQ1OTMzLDQ1OTM1LDQ1OTM4LDQ1OTM5LDQ1OTQxLDQ1OTQyLDQ1OTQzLDQ1OTQ1LDQ1OTQ2LDQ1OTQ3LDQ1OTQ4LDQ1OTQ5LDQ1OTUw''@;'; put 'put ''LDQ1OTUxLDQ1OTU0LDQ1OTU4LDQ1OTU5LDQ1OTYwLDQ1OTYxLDQ1OTYyLDQ1OTYzLDQ1OTY1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTY2LDQ1OTY3LDQ1OTY5LDQ1OTcwLDQ1OTcxLDQ1OTczLDQ1OTc0LDQ1OTc1LDQ1OTc2LDQ1OTc3LDQ1OTc4LDQ1OTc5LDQ1OTgwLDQ1''@;'; put 'put ''OTgxLDQ1OTgyLDQ1OTgzLDQ1OTg2LDQ1OTg3LDQ1OTg4LDQ1OTg5LDQ1OTkwLDQ1OTkxLDQ1OTkzLDQ1OTk0LDQ1OTk1LDQ1OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTk4LDQ1OTk5LDQ2ZTMsNDYwMDEsNDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcs''@;'; put 'put ''NDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYwMjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYwMzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYw''@;'; put 'put ''NDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcsNDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIsNDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzks''@;'; put 'put ''NDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYwOTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYxMDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYx''@;'; put 'put ''MTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAsNDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYsNDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIs''@;'; put 'put ''NDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYxNTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYxNjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYx''@;'; put 'put ''NzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAsNDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUsNDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEs''@;'; put 'put ''NDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYyMTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYyMjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYy''@;'; put 'put ''MjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMsNDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAsNDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcs''@;'; put 'put ''NDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYyNzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYyODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYy''@;'; put 'put ''OTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUsNDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQsNDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEs''@;'; put 'put ''NDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYzNDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYzNTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYz''@;'; put 'put ''NjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODksNDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUsNDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0''@;'; put 'put ''MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAsNDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUsNDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEs''@;'; put 'put ''NDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0''@;'; put 'put ''ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEsNDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEsNDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEs''@;'; put 'put ''NDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1''@;'; put 'put ''NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMsNDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgsNDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQs''@;'; put 'put ''NDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2MzksNDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUsNDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2''@;'; put 'put ''NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEsNDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgsNDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQs''@;'; put 'put ''NDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3''@;'; put 'put ''MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAsNDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcsNDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUs''@;'; put 'put ''NDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3''@;'; put 'put ''OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEsNDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcs''@;'; put 'put ''NDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4''@;'; put 'put ''NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIsNDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4NjcsNDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMs''@;'; put 'put ''NDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5''@;'; put 'put ''MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5MjgsNDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUsNDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEs''@;'; put 'put ''NDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5''@;'; put 'put ''NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcsNDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMsNDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQs''@;'; put 'put ''NDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcwNDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcw''@;'; put 'put ''NTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgsNDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQs''@;'; put 'put ''NDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcwOTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcxMDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcx''@;'; put 'put ''MTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYsNDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMsNDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEs''@;'; put 'put ''NDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcxNzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcxODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcx''@;'; put 'put ''ODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgsNDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYsNDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMs''@;'; put 'put ''NDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcyNDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcyNDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcy''@;'; put 'put ''NTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUsNDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAsNDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcs''@;'; put 'put ''NDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDczMDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDcz''@;'; put 'put ''MDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgsNDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQsNDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMs''@;'; put 'put ''NDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDczNjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDczNzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDcz''@;'; put 'put ''NzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUsNDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAsNDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYs''@;'; put 'put ''NDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0''@;'; put 'put ''NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEsNDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAsNDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0Nzgs''@;'; put 'put ''NDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1''@;'; put 'put ''MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEsNDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYsNDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQs''@;'; put 'put ''NDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1''@;'; put 'put ''NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMsNDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQsNDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIs''@;'; put 'put ''NDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2''@;'; put 'put ''NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2NjgsNDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUsNDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQs''@;'; put 'put ''NDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3''@;'; put 'put ''MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIsNDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAsNDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgs''@;'; put 'put ''NDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3''@;'; put 'put ''ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcsNDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMsNDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAs''@;'; put 'put ''NDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4''@;'; put 'put ''NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYsNDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMsNDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAs''@;'; put 'put ''NDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5''@;'; put 'put ''MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIsNDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAsNDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcsNDc5OTgsNDc5OTksNDhlMyw0ODAwMSw0ODAwMiw0ODAwMyw0ODAwNCw0ODAwNSw0ODAwNiw0ODAwNyw0ODAwOSw0''@;'; put 'put ''ODAxMCw0ODAxMSw0ODAxMyw0ODAxNCw0ODAxNSw0ODAxNyw0ODAxOCw0ODAxOSw0ODAyMCw0ODAyMSw0ODAyMiw0ODAyMyw0ODAyNCw0ODAyNSw0ODAyNiw0ODAyNyw0ODAyOCw0ODAyOSw0ODAzMCw0ODAzMSw0ODAzMiw0ODAzMyw0ODAzNCw0ODAzNSw0ODAzNyw0ODAzOCw0ODAzOSw0ODA0''@;'; put 'put ''MSw0ODA0Miw0ODA0Myw0ODA0NSw0ODA0Niw0ODA0Nyw0ODA0OCw0ODA0OSw0ODA1MCw0ODA1MSw0ODA1Myw0ODA1NCw0ODA1Niw0ODA1Nyw0ODA1OCw0ODA1OSw0ODA2MCw0ODA2MSw0ODA2Miw0ODA2Myw0ODA2NSw0ODA2Niw0ODA2Nyw0ODA2OSw0ODA3MCw0ODA3MSw0ODA3Myw0ODA3NCw0''@;'; put 'put ''ODA3NSw0ODA3Niw0ODA3Nyw0ODA3OCw0ODA3OSw0ODA4MSw0ODA4Miw0ODA4NCw0ODA4NSw0ODA4Niw0ODA4Nyw0ODA4OCw0ODA4OSw0ODA5MCw0ODA5MSw0ODA5Miw0ODA5Myw0ODA5NCw0ODA5NSw0ODA5Niw0ODA5Nyw0ODA5OCw0ODA5OSw0ODEwMCw0ODEwMSw0ODEwMiw0ODEwMyw0ODEw''@;'; put 'put ''NCw0ODEwNSw0ODEwNiw0ODEwNyw0ODEwOCw0ODEwOSw0ODExMCw0ODExMSw0ODExMiw0ODExMyw0ODExNCw0ODExNSw0ODExNiw0ODExNyw0ODExOCw0ODExOSw0ODEyMiw0ODEyMyw0ODEyNSw0ODEyNiw0ODEyOSw0ODEzMSw0ODEzMiw0ODEzMyw0ODEzNCw0ODEzNSw0ODEzOCw0ODE0Miw0''@;'; put 'put ''ODE0NCw0ODE0Niw0ODE0Nyw0ODE1Myw0ODE1NCw0ODE2MCw0ODE2MSw0ODE2Miw0ODE2Myw0ODE2Niw0ODE2OCw0ODE3MCw0ODE3MSw0ODE3Miw0ODE3NCw0ODE3NSw0ODE3OCw0ODE3OSw0ODE4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODE4Miw0ODE4Myw0ODE4NSw0ODE4''@;'; put 'put ''Niw0ODE4Nyw0ODE4OCw0ODE4OSw0ODE5MCw0ODE5MSw0ODE5NCw0ODE5OCw0ODE5OSw0ODIwMCw0ODIwMiw0ODIwMyw0ODIwNiw0ODIwNyw0ODIwOSw0ODIxMCw0ODIxMSw0ODIxMiw0ODIxMyw0ODIxNCw0ODIxNSw0ODIxNiw0ODIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0''@;'; put 'put ''ODIxOCw0ODIxOSw0ODIyMCw0ODIyMiw0ODIyMyw0ODIyNCw0ODIyNSw0ODIyNiw0ODIyNyw0ODIyOCw0ODIyOSw0ODIzMCw0ODIzMSw0ODIzMiw0ODIzMyw0ODIzNCw0ODIzNSw0ODIzNiw0ODIzNyw0ODIzOCw0ODIzOSw0ODI0MCw0ODI0MSw0ODI0Miw0ODI0Myw0ODI0NCw0ODI0NSw0ODI0''@;'; put 'put ''Niw0ODI0Nyw0ODI0OCw0ODI0OSw0ODI1MCw0ODI1MSw0ODI1Miw0ODI1Myw0ODI1NCw0ODI1NSw0ODI1Niw0ODI1Nyw0ODI1OCw0ODI1OSw0ODI2Miw0ODI2Myw0ODI2NSw0ODI2Niw0ODI2OSw0ODI3MSw0ODI3Miw0ODI3Myw0ODI3NCw0ODI3NSw0ODI3OCw0ODI4MCw0ODI4Myw0ODI4NCw0''@;'; put 'put ''ODI4NSw0ODI4Niw0ODI4Nyw0ODI5MCw0ODI5MSw0ODI5Myw0ODI5NCw0ODI5Nyw0ODI5OCw0ODI5OSw0ODMwMCw0ODMwMSw0ODMwMiw0ODMwMyw0ODMwNiw0ODMxMCw0ODMxMSw0ODMxMiw0ODMxMyw0ODMxNCw0ODMxNSw0ODMxOCw0ODMxOSw0ODMyMSw0ODMyMiw0ODMyMyw0ODMyNSw0ODMy''@;'; put 'put ''Niw0ODMyNyw0ODMyOCw0ODMyOSw0ODMzMCw0ODMzMSw0ODMzMiw0ODMzNCw0ODMzOCw0ODMzOSw0ODM0MCw0ODM0Miw0ODM0Myw0ODM0NSw0ODM0Niw0ODM0Nyw0ODM0OSw0ODM1MCw0ODM1MSw0ODM1Miw0ODM1Myw0ODM1NCw0ODM1NSw0ODM1Niw0ODM1Nyw0ODM1OCw0ODM1OSw0ODM2MCw0''@;'; put 'put ''ODM2MSw0ODM2Miw0ODM2Myw0ODM2NCw0ODM2NSw0ODM2Niw0ODM2Nyw0ODM2OCw0ODM2OSw0ODM3MCw0ODM3MSw0ODM3NSw0ODM3Nyw0ODM3OCw0ODM3OSw0ODM4MSw0ODM4Miw0ODM4Myw0ODM4NCw0ODM4NSw0ODM4Niw0ODM4Nyw0ODM5MCw0ODM5Miw0ODM5NCw0ODM5NSw0ODM5Niw0ODM5''@;'; put 'put ''Nyw0ODM5OCw0ODM5OSw0ODQwMSw0ODQwMiw0ODQwMyw0ODQwNSw0ODQwNiw0ODQwNyw0ODQwOCw0ODQwOSw0ODQxMCw0ODQxMSw0ODQxMiw0ODQxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQxNCw0ODQxNSw0ODQxNiw0ODQxNyw0ODQxOCw0ODQxOSw0ODQyMSw0ODQyMiw0''@;'; put 'put ''ODQyMyw0ODQyNCw0ODQyNSw0ODQyNiw0ODQyNyw0ODQyOSw0ODQzMCw0ODQzMSw0ODQzMiw0ODQzMyw0ODQzNCw0ODQzNSw0ODQzNiw0ODQzNyw0ODQzOCw0ODQzOSw0ODQ0MCw0ODQ0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQ0Miw0ODQ0Myw0ODQ0NCw0ODQ0NSw0ODQ0''@;'; put 'put ''Niw0ODQ0Nyw0ODQ0OSw0ODQ1MCw0ODQ1MSw0ODQ1Miw0ODQ1Myw0ODQ1NCw0ODQ1NSw0ODQ1OCw0ODQ1OSw0ODQ2MSw0ODQ2Miw0ODQ2Myw0ODQ2NSw0ODQ2Niw0ODQ2Nyw0ODQ2OCw0ODQ2OSw0ODQ3MCw0ODQ3MSw0ODQ3NCw0ODQ3NSw0ODQ3Niw0ODQ3Nyw0ODQ3OCw0ODQ3OSw0ODQ4MCw0''@;'; put 'put ''ODQ4MSw0ODQ4Miw0ODQ4Myw0ODQ4NSw0ODQ4Niw0ODQ4Nyw0ODQ4OSw0ODQ5MCw0ODQ5MSw0ODQ5Miw0ODQ5Myw0ODQ5NCw0ODQ5NSw0ODQ5Niw0ODQ5Nyw0ODQ5OCw0ODQ5OSw0ODUwMCw0ODUwMSw0ODUwMiw0ODUwMyw0ODUwNCw0ODUwNSw0ODUwNiw0ODUwNyw0ODUwOCw0ODUwOSw0ODUx''@;'; put 'put ''MCw0ODUxMSw0ODUxNCw0ODUxNSw0ODUxNyw0ODUxOCw0ODUyMyw0ODUyNCw0ODUyNSw0ODUyNiw0ODUyNyw0ODUzMCw0ODUzMiw0ODUzNCw0ODUzNSw0ODUzNiw0ODUzOSw0ODU0MSw0ODU0Miw0ODU0Myw0ODU0NCw0ODU0NSw0ODU0Niw0ODU0Nyw0ODU0OSw0ODU1MCw0ODU1MSw0ODU1Miw0''@;'; put 'put ''ODU1Myw0ODU1NCw0ODU1NSw0ODU1Niw0ODU1Nyw0ODU1OCw0ODU1OSw0ODU2MSw0ODU2Miw0ODU2Myw0ODU2NCw0ODU2NSw0ODU2Niw0ODU2Nyw0ODU2OSw0ODU3MCw0ODU3MSw0ODU3Miw0ODU3Myw0ODU3NCw0ODU3NSw0ODU3Niw0ODU3Nyw0ODU3OCw0ODU3OSw0ODU4MCw0ODU4MSw0ODU4''@;'; put 'put ''Miw0ODU4Myw0ODU4NCw0ODU4NSw0ODU4Niw0ODU4Nyw0ODU4OCw0ODU4OSw0ODU5MCw0ODU5MSw0ODU5Miw0ODU5Myw0ODU5NCw0ODU5NSw0ODU5OCw0ODU5OSw0ODYwMSw0ODYwMiw0ODYwMyw0ODYwNSw0ODYwNiw0ODYwNyw0ODYwOCw0ODYwOSw0ODYxMCw0ODYxMSw0ODYxMiw0ODYxMyw0''@;'; put 'put ''ODYxNCw0ODYxNSw0ODYxNiw0ODYxOCw0ODYxOSw0ODYyMCw0ODYyMSw0ODYyMiw0ODYyMyw0ODYyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODYyNiw0ODYyNyw0ODYyOSw0ODYzMCw0ODYzMSw0ODYzMyw0ODYzNCw0ODYzNSw0ODYzNiw0ODYzNyw0ODYzOCw0ODYzOSw0ODY0''@;'; put 'put ''MSw0ODY0Miw0ODY0NCw0ODY0Niw0ODY0Nyw0ODY0OCw0ODY0OSw0ODY1MCw0ODY1MSw0ODY1NCw0ODY1NSw0ODY1Nyw0ODY1OCw0ODY1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODY2MSw0ODY2Miw0ODY2Myw0ODY2NCw0ODY2NSw0ODY2Niw0ODY2Nyw0ODY3MCw0ODY3Miw0''@;'; put 'put ''ODY3Myw0ODY3NCw0ODY3NSw0ODY3Niw0ODY3Nyw0ODY3OCw0ODY3OSw0ODY4MCw0ODY4MSw0ODY4Miw0ODY4Myw0ODY4NCw0ODY4NSw0ODY4Niw0ODY4Nyw0ODY4OCw0ODY4OSw0ODY5MCw0ODY5MSw0ODY5Miw0ODY5Myw0ODY5NCw0ODY5NSw0ODY5Niw0ODY5Nyw0ODY5OCw0ODY5OSw0ODcw''@;'; put 'put ''MCw0ODcwMSw0ODcwMiw0ODcwMyw0ODcwNCw0ODcwNSw0ODcwNiw0ODcwNyw0ODcxMCw0ODcxMSw0ODcxMyw0ODcxNCw0ODcxNSw0ODcxNyw0ODcxOSw0ODcyMCw0ODcyMSw0ODcyMiw0ODcyMyw0ODcyNiw0ODcyOCw0ODczMiw0ODczMyw0ODczNCw0ODczNSw0ODczOCw0ODczOSw0ODc0MSw0''@;'; put 'put ''ODc0Miw0ODc0Myw0ODc0NSw0ODc0Nyw0ODc0OCw0ODc0OSw0ODc1MCw0ODc1MSw0ODc1NCw0ODc1OCw0ODc1OSw0ODc2MCw0ODc2MSw0ODc2Miw0ODc2Niw0ODc2Nyw0ODc2OSw0ODc3MCw0ODc3MSw0ODc3Myw0ODc3NCw0ODc3NSw0ODc3Niw0ODc3Nyw0ODc3OCw0ODc3OSw0ODc4Miw0ODc4''@;'; put 'put ''Niw0ODc4Nyw0ODc4OCw0ODc4OSw0ODc5MCw0ODc5MSw0ODc5NCw0ODc5NSw0ODc5Niw0ODc5Nyw0ODc5OCw0ODc5OSw0ODgwMCw0ODgwMSw0ODgwMiw0ODgwMyw0ODgwNCw0ODgwNSw0ODgwNiw0ODgwNyw0ODgwOSw0ODgxMCw0ODgxMSw0ODgxMiw0ODgxMyw0ODgxNCw0ODgxNSw0ODgxNiw0''@;'; put 'put ''ODgxNyw0ODgxOCw0ODgxOSw0ODgyMCw0ODgyMSw0ODgyMiw0ODgyMyw0ODgyNCw0ODgyNSw0ODgyNiw0ODgyNyw0ODgyOCw0ODgyOSw0ODgzMCw0ODgzMSw0ODgzMiw0ODgzMyw0ODgzNCw0ODgzNSw0ODgzNiw0ODgzNyw0ODgzOCw0ODgzOSw0ODg0MCw0ODg0MSw0ODg0Miw0ODg0Myw0ODg0''@;'; put 'put ''NCw0ODg0NSw0ODg0Niw0ODg0Nyw0ODg1MCw0ODg1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg1Myw0ODg1NCw0ODg1Nyw0ODg1OCw0ODg1OSw0ODg2MCw0ODg2MSw0ODg2Miw0ODg2Myw0ODg2NSw0ODg2Niw0ODg3MCw0ODg3MSw0ODg3Miw0ODg3Myw0ODg3NCw0ODg3NSw0''@;'; put 'put ''ODg3Nyw0ODg3OCw0ODg3OSw0ODg4MCw0ODg4MSw0ODg4Miw0ODg4Myw0ODg4NCw0ODg4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg4Niw0ODg4Nyw0ODg4OCw0ODg4OSw0ODg5MCw0ODg5MSw0ODg5Miw0ODg5Myw0ODg5NCw0ODg5NSw0ODg5Niw0ODg5OCw0ODg5OSw0ODkw''@;'; put 'put ''MCw0ODkwMSw0ODkwMiw0ODkwMyw0ODkwNiw0ODkwNyw0ODkwOCw0ODkwOSw0ODkxMCw0ODkxMSw0ODkxMiw0ODkxMyw0ODkxNCw0ODkxNSw0ODkxNiw0ODkxNyw0ODkxOCw0ODkxOSw0ODkyMiw0ODkyNiw0ODkyNyw0ODkyOCw0ODkyOSw0ODkzMCw0ODkzMSw0ODkzMiw0ODkzMyw0ODkzNCw0''@;'; put 'put ''ODkzNSw0ODkzNiw0ODkzNyw0ODkzOCw0ODkzOSw0ODk0MCw0ODk0MSw0ODk0Miw0ODk0Myw0ODk0NCw0ODk0NSw0ODk0Niw0ODk0Nyw0ODk0OCw0ODk0OSw0ODk1MCw0ODk1MSw0ODk1Miw0ODk1Myw0ODk1NCw0ODk1NSw0ODk1Niw0ODk1Nyw0ODk1OCw0ODk1OSw0ODk2Miw0ODk2Myw0ODk2''@;'; put 'put ''NSw0ODk2Niw0ODk2Nyw0ODk2OSw0ODk3MCw0ODk3MSw0ODk3Miw0ODk3Myw0ODk3NCw0ODk3NSw0ODk3OCw0ODk3OSw0ODk4MCw0ODk4Miw0ODk4Myw0ODk4NCw0ODk4NSw0ODk4Niw0ODk4Nyw0ODk4OCw0ODk4OSw0ODk5MCw0ODk5MSw0ODk5Miw0ODk5Myw0ODk5NCw0ODk5NSw0ODk5Niw0''@;'; put 'put ''ODk5Nyw0ODk5OCw0ODk5OSw0OWUzLDQ5MDAxLDQ5MDAyLDQ5MDAzLDQ5MDA0LDQ5MDA1LDQ5MDA2LDQ5MDA3LDQ5MDA4LDQ5MDA5LDQ5MDEwLDQ5MDExLDQ5MDEyLDQ5MDEzLDQ5MDE0LDQ5MDE1LDQ5MDE2LDQ5MDE3LDQ5MDE4LDQ5MDE5LDQ5MDIwLDQ5MDIxLDQ5MDIyLDQ5MDIzLDQ5MDI0''@;'; put 'put ''LDQ5MDI1LDQ5MDI2LDQ5MDI3LDQ5MDI4LDQ5MDI5LDQ5MDMwLDQ5MDMxLDQ5MDMyLDQ5MDMzLDQ5MDM0LDQ5MDM1LDQ5MDM2LDQ5MDM3LDQ5MDM4LDQ5MDM5LDQ5MDQwLDQ5MDQxLDQ5MDQyLDQ5MDQzLDQ5MDQ1LDQ5MDQ2LDQ5MDQ3LDQ5MDQ4LDQ5MDQ5LDQ5MDUwLDQ5MDUxLDQ5MDUyLDQ5''@;'; put 'put ''MDUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDU0LDQ5MDU1LDQ5MDU2LDQ5MDU3LDQ5MDU4LDQ5MDU5LDQ5MDYwLDQ5MDYxLDQ5MDYyLDQ5MDYzLDQ5MDY0LDQ5MDY1LDQ5MDY2LDQ5MDY3LDQ5MDY4LDQ5MDY5LDQ5MDcwLDQ5MDcxLDQ5MDczLDQ5MDc0LDQ5MDc1LDQ5MDc2''@;'; put 'put ''LDQ5MDc3LDQ5MDc4LDQ5MDc5LDQ5MDgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDgxLDQ5MDgyLDQ5MDgzLDQ5MDg0LDQ5MDg1LDQ5MDg2LDQ5MDg3LDQ5MDg4LDQ5MDg5LDQ5MDkwLDQ5MDkxLDQ5MDkyLDQ5MDk0LDQ5MDk1LDQ5MDk2LDQ5MDk3LDQ5MDk4LDQ5MDk5LDQ5''@;'; put 'put ''MTAyLDQ5MTAzLDQ5MTA1LDQ5MTA2LDQ5MTA3LDQ5MTA5LDQ5MTEwLDQ5MTExLDQ5MTEyLDQ5MTEzLDQ5MTE0LDQ5MTE1LDQ5MTE3LDQ5MTE4LDQ5MTIwLDQ5MTIyLDQ5MTIzLDQ5MTI0LDQ5MTI1LDQ5MTI2LDQ5MTI3LDQ5MTI4LDQ5MTI5LDQ5MTMwLDQ5MTMxLDQ5MTMyLDQ5MTMzLDQ5MTM0''@;'; put 'put ''LDQ5MTM1LDQ5MTM2LDQ5MTM3LDQ5MTM4LDQ5MTM5LDQ5MTQwLDQ5MTQxLDQ5MTQyLDQ5MTQzLDQ5MTQ0LDQ5MTQ1LDQ5MTQ2LDQ5MTQ3LDQ5MTQ4LDQ5MTQ5LDQ5MTUwLDQ5MTUxLDQ5MTUyLDQ5MTUzLDQ5MTU0LDQ5MTU1LDQ5MTU2LDQ5MTU3LDQ5MTU4LDQ5MTU5LDQ5MTYwLDQ5MTYxLDQ5''@;'; put 'put ''MTYyLDQ5MTYzLDQ5MTY0LDQ5MTY1LDQ5MTY2LDQ5MTY3LDQ5MTY4LDQ5MTY5LDQ5MTcwLDQ5MTcxLDQ5MTcyLDQ5MTczLDQ5MTc0LDQ5MTc1LDQ5MTc2LDQ5MTc3LDQ5MTc4LDQ5MTc5LDQ5MTgwLDQ5MTgxLDQ5MTgyLDQ5MTgzLDQ5MTg0LDQ5MTg1LDQ5MTg2LDQ5MTg3LDQ5MTg4LDQ5MTg5''@;'; put 'put ''LDQ5MTkwLDQ5MTkxLDQ5MTkyLDQ5MTkzLDQ5MTk0LDQ5MTk1LDQ5MTk2LDQ5MTk3LDQ5MTk4LDQ5MTk5LDQ5MjAwLDQ5MjAxLDQ5MjAyLDQ5MjAzLDQ5MjA0LDQ5MjA1LDQ5MjA2LDQ5MjA3LDQ5MjA4LDQ5MjA5LDQ5MjEwLDQ5MjExLDQ5MjEzLDQ5MjE0LDQ5MjE1LDQ5MjE2LDQ5MjE3LDQ5''@;'; put 'put ''MjE4LDQ5MjE5LDQ5MjIwLDQ5MjIxLDQ5MjIyLDQ5MjIzLDQ5MjI0LDQ5MjI1LDQ5MjI2LDQ5MjI3LDQ5MjI4LDQ5MjI5LDQ5MjMwLDQ5MjMxLDQ5MjMyLDQ5MjM0LDQ5MjM1LDQ5MjM2LDQ5MjM3LDQ5MjM4LDQ5MjM5LDQ5MjQxLDQ5MjQyLDQ5MjQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDQ5MjQ1LDQ5MjQ2LDQ5MjQ3LDQ5MjQ5LDQ5MjUwLDQ5MjUxLDQ5MjUyLDQ5MjUzLDQ5MjU0LDQ5MjU1LDQ5MjU4LDQ5MjU5LDQ5MjYwLDQ5MjYxLDQ5MjYyLDQ5MjYzLDQ5MjY0LDQ5MjY1LDQ5MjY2LDQ5MjY3LDQ5MjY4LDQ5MjY5LDQ5MjcwLDQ5MjcxLDQ5MjcyLDQ5MjczLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5Mjc0LDQ5Mjc1LDQ5Mjc2LDQ5Mjc3LDQ5Mjc4LDQ5Mjc5LDQ5MjgwLDQ5MjgxLDQ5MjgyLDQ5MjgzLDQ5Mjg0LDQ5Mjg1LDQ5Mjg2LDQ5Mjg3LDQ5Mjg4LDQ5Mjg5LDQ5MjkwLDQ5MjkxLDQ5MjkyLDQ5MjkzLDQ5Mjk0LDQ5Mjk1LDQ5Mjk4''@;'; put 'put ''LDQ5Mjk5LDQ5MzAxLDQ5MzAyLDQ5MzAzLDQ5MzA1LDQ5MzA2LDQ5MzA3LDQ5MzA4LDQ5MzA5LDQ5MzEwLDQ5MzExLDQ5MzE0LDQ5MzE2LDQ5MzE4LDQ5MzE5LDQ5MzIwLDQ5MzIxLDQ5MzIyLDQ5MzIzLDQ5MzI2LDQ5MzI5LDQ5MzMwLDQ5MzM1LDQ5MzM2LDQ5MzM3LDQ5MzM4LDQ5MzM5LDQ5''@;'; put 'put ''MzQyLDQ5MzQ2LDQ5MzQ3LDQ5MzQ4LDQ5MzUwLDQ5MzUxLDQ5MzU0LDQ5MzU1LDQ5MzU3LDQ5MzU4LDQ5MzU5LDQ5MzYxLDQ5MzYyLDQ5MzYzLDQ5MzY0LDQ5MzY1LDQ5MzY2LDQ5MzY3LDQ5MzcwLDQ5Mzc0LDQ5Mzc1LDQ5Mzc2LDQ5Mzc3LDQ5Mzc4LDQ5Mzc5LDQ5MzgyLDQ5MzgzLDQ5Mzg1''@;'; put 'put ''LDQ5Mzg2LDQ5Mzg3LDQ5Mzg5LDQ5MzkwLDQ5MzkxLDQ5MzkyLDQ5MzkzLDQ5Mzk0LDQ5Mzk1LDQ5Mzk4LDQ5NDAwLDQ5NDAyLDQ5NDAzLDQ5NDA0LDQ5NDA1LDQ5NDA2LDQ5NDA3LDQ5NDA5LDQ5NDEwLDQ5NDExLDQ5NDEzLDQ5NDE0LDQ5NDE1LDQ5NDE3LDQ5NDE4LDQ5NDE5LDQ5NDIwLDQ5''@;'; put 'put ''NDIxLDQ5NDIyLDQ5NDIzLDQ5NDI1LDQ5NDI2LDQ5NDI3LDQ5NDI4LDQ5NDMwLDQ5NDMxLDQ5NDMyLDQ5NDMzLDQ5NDM0LDQ5NDM1LDQ5NDQxLDQ5NDQyLDQ5NDQ1LDQ5NDQ4LDQ5NDQ5LDQ5NDUwLDQ5NDUxLDQ5NDU0LDQ5NDU4LDQ5NDU5LDQ5NDYwLDQ5NDYxLDQ5NDYzLDQ5NDY2LDQ5NDY3''@;'; put 'put ''LDQ5NDY5LDQ5NDcwLDQ5NDcxLDQ5NDczLDQ5NDc0LDQ5NDc1LDQ5NDc2LDQ5NDc3LDQ5NDc4LDQ5NDc5LDQ5NDgyLDQ5NDg2LDQ5NDg3LDQ5NDg4LDQ5NDg5LDQ5NDkwLDQ5NDkxLDQ5NDk0LDQ5NDk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NDk3LDQ5NDk4LDQ5NDk5LDQ5''@;'; put 'put ''NTAxLDQ5NTAyLDQ5NTAzLDQ5NTA0LDQ5NTA1LDQ5NTA2LDQ5NTA3LDQ5NTEwLDQ5NTE0LDQ5NTE1LDQ5NTE2LDQ5NTE3LDQ5NTE4LDQ5NTE5LDQ5NTIxLDQ5NTIyLDQ5NTIzLDQ5NTI1LDQ5NTI2LDQ5NTI3LDQ5NTI5LDQ5NTMwLDQ5NTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDQ5NTMyLDQ5NTMzLDQ5NTM0LDQ5NTM1LDQ5NTM2LDQ5NTM3LDQ5NTM4LDQ5NTM5LDQ5NTQwLDQ5NTQyLDQ5NTQzLDQ5NTQ0LDQ5NTQ1LDQ5NTQ2LDQ5NTQ3LDQ5NTUxLDQ5NTUzLDQ5NTU0LDQ5NTU1LDQ5NTU3LDQ5NTU5LDQ5NTYwLDQ5NTYxLDQ5NTYyLDQ5NTYzLDQ5NTY2LDQ5NTY4LDQ5''@;'; put 'put ''NTcwLDQ5NTcxLDQ5NTcyLDQ5NTc0LDQ5NTc1LDQ5NTc4LDQ5NTc5LDQ5NTgxLDQ5NTgyLDQ5NTgzLDQ5NTg1LDQ5NTg2LDQ5NTg3LDQ5NTg4LDQ5NTg5LDQ5NTkwLDQ5NTkxLDQ5NTkyLDQ5NTkzLDQ5NTk0LDQ5NTk1LDQ5NTk2LDQ5NTk4LDQ5NTk5LDQ5NjAwLDQ5NjAxLDQ5NjAyLDQ5NjAz''@;'; put 'put ''LDQ5NjA1LDQ5NjA2LDQ5NjA3LDQ5NjA5LDQ5NjEwLDQ5NjExLDQ5NjEzLDQ5NjE0LDQ5NjE1LDQ5NjE2LDQ5NjE3LDQ5NjE4LDQ5NjE5LDQ5NjIxLDQ5NjIyLDQ5NjI1LDQ5NjI2LDQ5NjI3LDQ5NjI4LDQ5NjI5LDQ5NjMwLDQ5NjMxLDQ5NjMzLDQ5NjM0LDQ5NjM1LDQ5NjM3LDQ5NjM4LDQ5''@;'; put 'put ''NjM5LDQ5NjQxLDQ5NjQyLDQ5NjQzLDQ5NjQ0LDQ5NjQ1LDQ5NjQ2LDQ5NjQ3LDQ5NjUwLDQ5NjUyLDQ5NjUzLDQ5NjU0LDQ5NjU1LDQ5NjU2LDQ5NjU3LDQ5NjU4LDQ5NjU5LDQ5NjYyLDQ5NjYzLDQ5NjY1LDQ5NjY2LDQ5NjY3LDQ5NjY5LDQ5NjcwLDQ5NjcxLDQ5NjcyLDQ5NjczLDQ5Njc0''@;'; put 'put ''LDQ5Njc1LDQ5Njc4LDQ5NjgwLDQ5NjgyLDQ5NjgzLDQ5Njg0LDQ5Njg1LDQ5Njg2LDQ5Njg3LDQ5NjkwLDQ5NjkxLDQ5NjkzLDQ5Njk0LDQ5Njk3LDQ5Njk4LDQ5Njk5LDQ5NzAwLDQ5NzAxLDQ5NzAyLDQ5NzAzLDQ5NzA2LDQ5NzA4LDQ5NzEwLDQ5NzEyLDQ5NzE1LDQ5NzE3LDQ5NzE4LDQ5''@;'; put 'put ''NzE5LDQ5NzIwLDQ5NzIxLDQ5NzIyLDQ5NzIzLDQ5NzI0LDQ5NzI1LDQ5NzI2LDQ5NzI3LDQ5NzI4LDQ5NzI5LDQ5NzMwLDQ5NzMxLDQ5NzMyLDQ5NzMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzM0LDQ5NzM1LDQ5NzM3LDQ5NzM4LDQ5NzM5LDQ5NzQwLDQ5NzQxLDQ5NzQy''@;'; put 'put ''LDQ5NzQzLDQ5NzQ2LDQ5NzQ3LDQ5NzQ5LDQ5NzUwLDQ5NzUxLDQ5NzUzLDQ5NzU0LDQ5NzU1LDQ5NzU2LDQ5NzU3LDQ5NzU4LDQ5NzU5LDQ5NzYxLDQ5NzYyLDQ5NzYzLDQ5NzY0LDQ5NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzY3LDQ5NzY4LDQ5NzY5LDQ5NzcwLDQ5''@;'; put 'put ''NzcxLDQ5Nzc0LDQ5Nzc1LDQ5Nzc3LDQ5Nzc4LDQ5Nzc5LDQ5NzgxLDQ5NzgyLDQ5NzgzLDQ5Nzg0LDQ5Nzg1LDQ5Nzg2LDQ5Nzg3LDQ5NzkwLDQ5NzkyLDQ5Nzk0LDQ5Nzk1LDQ5Nzk2LDQ5Nzk3LDQ5Nzk4LDQ5Nzk5LDQ5ODAyLDQ5ODAzLDQ5ODA0LDQ5ODA1LDQ5ODA2LDQ5ODA3LDQ5ODA5''@;'; put 'put ''LDQ5ODEwLDQ5ODExLDQ5ODEyLDQ5ODEzLDQ5ODE0LDQ5ODE1LDQ5ODE3LDQ5ODE4LDQ5ODIwLDQ5ODIyLDQ5ODIzLDQ5ODI0LDQ5ODI1LDQ5ODI2LDQ5ODI3LDQ5ODMwLDQ5ODMxLDQ5ODMzLDQ5ODM0LDQ5ODM1LDQ5ODM4LDQ5ODM5LDQ5ODQwLDQ5ODQxLDQ5ODQyLDQ5ODQzLDQ5ODQ2LDQ5''@;'; put 'put ''ODQ4LDQ5ODUwLDQ5ODUxLDQ5ODUyLDQ5ODUzLDQ5ODU0LDQ5ODU1LDQ5ODU2LDQ5ODU3LDQ5ODU4LDQ5ODU5LDQ5ODYwLDQ5ODYxLDQ5ODYyLDQ5ODYzLDQ5ODY0LDQ5ODY1LDQ5ODY2LDQ5ODY3LDQ5ODY4LDQ5ODY5LDQ5ODcwLDQ5ODcxLDQ5ODcyLDQ5ODczLDQ5ODc0LDQ5ODc1LDQ5ODc2''@;'; put 'put ''LDQ5ODc3LDQ5ODc4LDQ5ODc5LDQ5ODgwLDQ5ODgxLDQ5ODgyLDQ5ODgzLDQ5ODg2LDQ5ODg3LDQ5ODg5LDQ5ODkwLDQ5ODkzLDQ5ODk0LDQ5ODk1LDQ5ODk2LDQ5ODk3LDQ5ODk4LDQ5OTAyLDQ5OTA0LDQ5OTA2LDQ5OTA3LDQ5OTA4LDQ5OTA5LDQ5OTExLDQ5OTE0LDQ5OTE3LDQ5OTE4LDQ5''@;'; put 'put ''OTE5LDQ5OTIxLDQ5OTIyLDQ5OTIzLDQ5OTI0LDQ5OTI1LDQ5OTI2LDQ5OTI3LDQ5OTMwLDQ5OTMxLDQ5OTM0LDQ5OTM1LDQ5OTM2LDQ5OTM3LDQ5OTM4LDQ5OTQyLDQ5OTQzLDQ5OTQ1LDQ5OTQ2LDQ5OTQ3LDQ5OTQ5LDQ5OTUwLDQ5OTUxLDQ5OTUyLDQ5OTUzLDQ5OTU0LDQ5OTU1LDQ5OTU4''@;'; put 'put ''LDQ5OTU5LDQ5OTYyLDQ5OTYzLDQ5OTY0LDQ5OTY1LDQ5OTY2LDQ5OTY3LDQ5OTY4LDQ5OTY5LDQ5OTcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTcxLDQ5OTcyLDQ5OTczLDQ5OTc0LDQ5OTc1LDQ5OTc2LDQ5OTc3LDQ5OTc4LDQ5OTc5LDQ5OTgwLDQ5OTgxLDQ5OTgyLDQ5''@;'; put 'put ''OTgzLDQ5OTg0LDQ5OTg1LDQ5OTg2LDQ5OTg3LDQ5OTg4LDQ5OTkwLDQ5OTkxLDQ5OTkyLDQ5OTkzLDQ5OTk0LDQ5OTk1LDQ5OTk2LDQ5OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTk4LDQ5OTk5LDVlNCw1MDAwMSw1MDAwMiw1MDAwMyw1MDAwNCw1MDAwNSw1MDAwNiw1''@;'; put 'put ''MDAwNyw1MDAwOCw1MDAwOSw1MDAxMCw1MDAxMSw1MDAxMiw1MDAxMyw1MDAxNCw1MDAxNSw1MDAxNiw1MDAxNyw1MDAxOCw1MDAxOSw1MDAyMCw1MDAyMSw1MDAyMiw1MDAyMyw1MDAyNiw1MDAyNyw1MDAyOSw1MDAzMCw1MDAzMSw1MDAzMyw1MDAzNSw1MDAzNiw1MDAzNyw1MDAzOCw1MDAz''@;'; put 'put ''OSw1MDA0Miw1MDA0Myw1MDA0Niw1MDA0Nyw1MDA0OCw1MDA0OSw1MDA1MCw1MDA1MSw1MDA1Myw1MDA1NCw1MDA1NSw1MDA1Nyw1MDA1OCw1MDA1OSw1MDA2MSw1MDA2Miw1MDA2Myw1MDA2NCw1MDA2NSw1MDA2Niw1MDA2Nyw1MDA2OCw1MDA2OSw1MDA3MCw1MDA3MSw1MDA3Miw1MDA3Myw1''@;'; put 'put ''MDA3NCw1MDA3NSw1MDA3Niw1MDA3Nyw1MDA3OCw1MDA3OSw1MDA4MCw1MDA4MSw1MDA4Miw1MDA4Myw1MDA4NCw1MDA4NSw1MDA4Niw1MDA4Nyw1MDA4OCw1MDA4OSw1MDA5MCw1MDA5MSw1MDA5Miw1MDA5Myw1MDA5NCw1MDA5NSw1MDA5Niw1MDA5Nyw1MDA5OCw1MDA5OSw1MDEwMCw1MDEw''@;'; put 'put ''MSw1MDEwMiw1MDEwMyw1MDEwNCw1MDEwNSw1MDEwNiw1MDEwNyw1MDEwOCw1MDEwOSw1MDExMCw1MDExMSw1MDExMyw1MDExNCw1MDExNSw1MDExNiw1MDExNyw1MDExOCw1MDExOSw1MDEyMCw1MDEyMSw1MDEyMiw1MDEyMyw1MDEyNCw1MDEyNSw1MDEyNiw1MDEyNyw1MDEyOCw1MDEyOSw1''@;'; put 'put ''MDEzMCw1MDEzMSw1MDEzMiw1MDEzMyw1MDEzNCw1MDEzNSw1MDEzOCw1MDEzOSw1MDE0MSw1MDE0Miw1MDE0NSw1MDE0Nyw1MDE0OCw1MDE0OSw1MDE1MCw1MDE1MSw1MDE1NCw1MDE1NSw1MDE1Niw1MDE1OCw1MDE1OSw1MDE2MCw1MDE2MSw1MDE2Miw1MDE2Myw1MDE2Niw1MDE2Nyw1MDE2''@;'; put 'put ''OSw1MDE3MCw1MDE3MSw1MDE3Miw1MDE3Myw1MDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDE3NSw1MDE3Niw1MDE3Nyw1MDE3OCw1MDE3OSw1MDE4MCw1MDE4MSw1MDE4Miw1MDE4Myw1MDE4NSw1MDE4Niw1MDE4Nyw1MDE4OCw1MDE4OSw1MDE5MCw1MDE5MSw1MDE5Myw1''@;'; put 'put ''MDE5NCw1MDE5NSw1MDE5Niw1MDE5Nyw1MDE5OCw1MDE5OSw1MDIwMCw1MDIwMSw1MDIwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDIwMyw1MDIwNCw1MDIwNSw1MDIwNiw1MDIwNyw1MDIwOCw1MDIwOSw1MDIxMCw1MDIxMSw1MDIxMyw1MDIxNCw1MDIxNSw1MDIxNiw1MDIx''@;'; put 'put ''Nyw1MDIxOCw1MDIxOSw1MDIyMSw1MDIyMiw1MDIyMyw1MDIyNSw1MDIyNiw1MDIyNyw1MDIyOSw1MDIzMCw1MDIzMSw1MDIzMiw1MDIzMyw1MDIzNCw1MDIzNSw1MDIzOCw1MDIzOSw1MDI0MCw1MDI0MSw1MDI0Miw1MDI0Myw1MDI0NCw1MDI0NSw1MDI0Niw1MDI0Nyw1MDI0OSw1MDI1MCw1''@;'; put 'put ''MDI1MSw1MDI1Miw1MDI1Myw1MDI1NCw1MDI1NSw1MDI1Niw1MDI1Nyw1MDI1OCw1MDI1OSw1MDI2MCw1MDI2MSw1MDI2Miw1MDI2Myw1MDI2NCw1MDI2NSw1MDI2Niw1MDI2Nyw1MDI2OCw1MDI2OSw1MDI3MCw1MDI3MSw1MDI3Miw1MDI3Myw1MDI3NCw1MDI3NSw1MDI3OCw1MDI3OSw1MDI4''@;'; put 'put ''MSw1MDI4Miw1MDI4Myw1MDI4NSw1MDI4Niw1MDI4Nyw1MDI4OCw1MDI4OSw1MDI5MCw1MDI5MSw1MDI5NCw1MDI5NSw1MDI5Niw1MDI5OCw1MDI5OSw1MDMwMCw1MDMwMSw1MDMwMiw1MDMwMyw1MDMwNSw1MDMwNiw1MDMwNyw1MDMwOCw1MDMwOSw1MDMxMCw1MDMxMSw1MDMxMiw1MDMxMyw1''@;'; put 'put ''MDMxNCw1MDMxNSw1MDMxNiw1MDMxNyw1MDMxOCw1MDMxOSw1MDMyMCw1MDMyMSw1MDMyMiw1MDMyMyw1MDMyNSw1MDMyNiw1MDMyNyw1MDMyOCw1MDMyOSw1MDMzMCw1MDMzMSw1MDMzMyw1MDMzNCw1MDMzNSw1MDMzNiw1MDMzNyw1MDMzOCw1MDMzOSw1MDM0MCw1MDM0MSw1MDM0Miw1MDM0''@;'; put 'put ''Myw1MDM0NCw1MDM0NSw1MDM0Niw1MDM0Nyw1MDM0OCw1MDM0OSw1MDM1MCw1MDM1MSw1MDM1Miw1MDM1Myw1MDM1NCw1MDM1NSw1MDM1Niw1MDM1Nyw1MDM1OCw1MDM1OSw1MDM2MSw1MDM2Miw1MDM2Myw1MDM2NSw1MDM2Niw1MDM2Nyw1MDM2OCw1MDM2OSw1MDM3MCw1MDM3MSw1MDM3Miw1''@;'; put 'put ''MDM3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDM3NCw1MDM3NSw1MDM3Niw1MDM3Nyw1MDM3OCw1MDM3OSw1MDM4MCw1MDM4MSw1MDM4Miw1MDM4Myw1MDM4NCw1MDM4NSw1MDM4Niw1MDM4Nyw1MDM4OCw1MDM4OSw1MDM5MCw1MDM5MSw1MDM5Miw1MDM5Myw1MDM5NCw1MDM5''@;'; put 'put ''NSw1MDM5Niw1MDM5Nyw1MDM5OCw1MDM5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDQwMCw1MDQwMSw1MDQwMiw1MDQwMyw1MDQwNCw1MDQwNSw1MDQwNiw1MDQwNyw1MDQwOCw1MDQxMCw1MDQxMSw1MDQxMiw1MDQxMyw1MDQxNCw1MDQxNSw1MDQxOCw1MDQxOSw1MDQyMSw1''@;'; put 'put ''MDQyMiw1MDQyMyw1MDQyNSw1MDQyNyw1MDQyOCw1MDQyOSw1MDQzMCw1MDQzNCw1MDQzNSw1MDQzNiw1MDQzNyw1MDQzOCw1MDQzOSw1MDQ0MCw1MDQ0MSw1MDQ0Miw1MDQ0Myw1MDQ0NSw1MDQ0Niw1MDQ0Nyw1MDQ0OSw1MDQ1MCw1MDQ1MSw1MDQ1Myw1MDQ1NCw1MDQ1NSw1MDQ1Niw1MDQ1''@;'; put 'put ''Nyw1MDQ1OCw1MDQ1OSw1MDQ2MSw1MDQ2Miw1MDQ2Myw1MDQ2NCw1MDQ2NSw1MDQ2Niw1MDQ2Nyw1MDQ2OCw1MDQ2OSw1MDQ3MCw1MDQ3MSw1MDQ3NCw1MDQ3NSw1MDQ3Nyw1MDQ3OCw1MDQ3OSw1MDQ4MSw1MDQ4Miw1MDQ4Myw1MDQ4NCw1MDQ4NSw1MDQ4Niw1MDQ4Nyw1MDQ5MCw1MDQ5Miw1''@;'; put 'put ''MDQ5NCw1MDQ5NSw1MDQ5Niw1MDQ5Nyw1MDQ5OCw1MDQ5OSw1MDUwMiw1MDUwMyw1MDUwNyw1MDUxMSw1MDUxMiw1MDUxMyw1MDUxNCw1MDUxOCw1MDUyMiw1MDUyMyw1MDUyNCw1MDUyNyw1MDUzMCw1MDUzMSw1MDUzMyw1MDUzNCw1MDUzNSw1MDUzNyw1MDUzOCw1MDUzOSw1MDU0MCw1MDU0''@;'; put 'put ''MSw1MDU0Miw1MDU0Myw1MDU0Niw1MDU1MCw1MDU1MSw1MDU1Miw1MDU1Myw1MDU1NCw1MDU1NSw1MDU1OCw1MDU1OSw1MDU2MSw1MDU2Miw1MDU2Myw1MDU2NSw1MDU2Niw1MDU2OCw1MDU2OSw1MDU3MCw1MDU3MSw1MDU3NCw1MDU3Niw1MDU3OCw1MDU3OSw1MDU4MCw1MDU4Miw1MDU4NSw1''@;'; put 'put ''MDU4Niw1MDU4Nyw1MDU4OSw1MDU5MCw1MDU5MSw1MDU5Myw1MDU5NCw1MDU5NSw1MDU5Niw1MDU5Nyw1MDU5OCw1MDU5OSw1MDYwMCw1MDYwMiw1MDYwMyw1MDYwNCw1MDYwNSw1MDYwNiw1MDYwNyw1MDYwOCw1MDYwOSw1MDYxMCw1MDYxMSw1MDYxNCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCw1MDYxNSw1MDYxOCw1MDYyMyw1MDYyNCw1MDYyNSw1MDYyNiw1MDYyNyw1MDYzNSw1MDYzNyw1MDYzOSw1MDY0Miw1MDY0Myw1MDY0NSw1MDY0Niw1MDY0Nyw1MDY0OSw1MDY1MCw1MDY1MSw1MDY1Miw1MDY1Myw1MDY1NCw1MDY1NSw1MDY1OCw1MDY2MCw1MDY2Miw1MDY2Myxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDY2NCw1MDY2NSw1MDY2Niw1MDY2Nyw1MDY3MSw1MDY3Myw1MDY3NCw1MDY3NSw1MDY3Nyw1MDY4MCw1MDY4MSw1MDY4Miw1MDY4Myw1MDY5MCw1MDY5MSw1MDY5Miw1MDY5Nyw1MDY5OCw1MDY5OSw1MDcwMSw1MDcwMiw1MDcwMyw1MDcw''@;'; put 'put ''NSw1MDcwNiw1MDcwNyw1MDcwOCw1MDcwOSw1MDcxMCw1MDcxMSw1MDcxNCw1MDcxNyw1MDcxOCw1MDcxOSw1MDcyMCw1MDcyMSw1MDcyMiw1MDcyMyw1MDcyNiw1MDcyNyw1MDcyOSw1MDczMCw1MDczMSw1MDczNSw1MDczNyw1MDczOCw1MDc0Miw1MDc0NCw1MDc0Niw1MDc0OCw1MDc0OSw1''@;'; put 'put ''MDc1MCw1MDc1MSw1MDc1NCw1MDc1NSw1MDc1Nyw1MDc1OCw1MDc1OSw1MDc2MSw1MDc2Miw1MDc2Myw1MDc2NCw1MDc2NSw1MDc2Niw1MDc2Nyw1MDc3MCw1MDc3NCw1MDc3NSw1MDc3Niw1MDc3Nyw1MDc3OCw1MDc3OSw1MDc4Miw1MDc4Myw1MDc4NSw1MDc4Niw1MDc4Nyw1MDc4OCw1MDc4''@;'; put 'put ''OSw1MDc5MCw1MDc5MSw1MDc5Miw1MDc5Myw1MDc5NCw1MDc5NSw1MDc5Nyw1MDc5OCw1MDgwMCw1MDgwMiw1MDgwMyw1MDgwNCw1MDgwNSw1MDgwNiw1MDgwNyw1MDgxMCw1MDgxMSw1MDgxMyw1MDgxNCw1MDgxNSw1MDgxNyw1MDgxOCw1MDgxOSw1MDgyMCw1MDgyMSw1MDgyMiw1MDgyMyw1''@;'; put 'put ''MDgyNiw1MDgyOCw1MDgzMCw1MDgzMSw1MDgzMiw1MDgzMyw1MDgzNCw1MDgzNSw1MDgzOCw1MDgzOSw1MDg0MSw1MDg0Miw1MDg0Myw1MDg0NSw1MDg0Niw1MDg0Nyw1MDg0OCw1MDg0OSw1MDg1MCw1MDg1MSw1MDg1NCw1MDg1Niw1MDg1OCw1MDg1OSw1MDg2MCw1MDg2MSw1MDg2Miw1MDg2''@;'; put 'put ''Myw1MDg2Niw1MDg2Nyw1MDg2OSw1MDg3MCw1MDg3MSw1MDg3NSw1MDg3Niw1MDg3Nyw1MDg3OCw1MDg3OSw1MDg4Miw1MDg4NCw1MDg4Niw1MDg4Nyw1MDg4OCw1MDg4OSw1MDg5MCw1MDg5MSw1MDg5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDg5NSw1MDg5Nyw1MDg5OCw1''@;'; put 'put ''MDg5OSw1MDkwMSw1MDkwMiw1MDkwMyw1MDkwNCw1MDkwNSw1MDkwNiw1MDkwNyw1MDkxMCw1MDkxMSw1MDkxNCw1MDkxNSw1MDkxNiw1MDkxNyw1MDkxOCw1MDkxOSw1MDkyMiw1MDkyMyw1MDkyNSw1MDkyNiw1MDkyNyw1MDkyOSw1MDkzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCw1MDkzMSw1MDkzMiw1MDkzMyw1MDkzNCw1MDkzNSw1MDkzOCw1MDkzOSw1MDk0MCw1MDk0Miw1MDk0Myw1MDk0NCw1MDk0NSw1MDk0Niw1MDk0Nyw1MDk1MCw1MDk1MSw1MDk1Myw1MDk1NCw1MDk1NSw1MDk1Nyw1MDk1OCw1MDk1OSw1MDk2MCw1MDk2MSw1MDk2Miw1MDk2Myw1MDk2Niw1''@;'; put 'put ''MDk2OCw1MDk3MCw1MDk3MSw1MDk3Miw1MDk3Myw1MDk3NCw1MDk3NSw1MDk3OCw1MDk3OSw1MDk4MSw1MDk4Miw1MDk4Myw1MDk4NSw1MDk4Niw1MDk4Nyw1MDk4OCw1MDk4OSw1MDk5MCw1MDk5MSw1MDk5NCw1MDk5Niw1MDk5OCw1MWUzLDUxMDAxLDUxMDAyLDUxMDAzLDUxMDA2LDUxMDA3''@;'; put 'put ''LDUxMDA5LDUxMDEwLDUxMDExLDUxMDEzLDUxMDE0LDUxMDE1LDUxMDE2LDUxMDE3LDUxMDE5LDUxMDIyLDUxMDI0LDUxMDMzLDUxMDM0LDUxMDM1LDUxMDM3LDUxMDM4LDUxMDM5LDUxMDQxLDUxMDQyLDUxMDQzLDUxMDQ0LDUxMDQ1LDUxMDQ2LDUxMDQ3LDUxMDQ5LDUxMDUwLDUxMDUyLDUx''@;'; put 'put ''MDUzLDUxMDU0LDUxMDU1LDUxMDU2LDUxMDU3LDUxMDU4LDUxMDU5LDUxMDYyLDUxMDYzLDUxMDY1LDUxMDY2LDUxMDY3LDUxMDcxLDUxMDcyLDUxMDczLDUxMDc0LDUxMDc4LDUxMDgzLDUxMDg0LDUxMDg1LDUxMDg3LDUxMDkwLDUxMDkxLDUxMDkzLDUxMDk3LDUxMDk5LDUxMTAwLDUxMTAx''@;'; put 'put ''LDUxMTAyLDUxMTAzLDUxMTA2LDUxMTExLDUxMTEyLDUxMTEzLDUxMTE0LDUxMTE1LDUxMTE4LDUxMTE5LDUxMTIxLDUxMTIyLDUxMTIzLDUxMTI1LDUxMTI2LDUxMTI3LDUxMTI4LDUxMTI5LDUxMTMwLDUxMTMxLDUxMTM0LDUxMTM4LDUxMTM5LDUxMTQwLDUxMTQxLDUxMTQyLDUxMTQzLDUx''@;'; put 'put ''MTQ2LDUxMTQ3LDUxMTQ5LDUxMTUxLDUxMTUzLDUxMTU0LDUxMTU1LDUxMTU2LDUxMTU3LDUxMTU4LDUxMTU5LDUxMTYxLDUxMTYyLDUxMTYzLDUxMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTY2LDUxMTY3LDUxMTY4LDUxMTY5LDUxMTcwLDUxMTcxLDUxMTczLDUxMTc0''@;'; put 'put ''LDUxMTc1LDUxMTc3LDUxMTc4LDUxMTc5LDUxMTgxLDUxMTgyLDUxMTgzLDUxMTg0LDUxMTg1LDUxMTg2LDUxMTg3LDUxMTg4LDUxMTg5LDUxMTkwLDUxMTkxLDUxMTkyLDUxMTkzLDUxMTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTk1LDUxMTk2LDUxMTk3LDUxMTk4LDUx''@;'; put 'put ''MTk5LDUxMjAyLDUxMjAzLDUxMjA1LDUxMjA2LDUxMjA3LDUxMjA5LDUxMjExLDUxMjEyLDUxMjEzLDUxMjE0LDUxMjE1LDUxMjE4LDUxMjIwLDUxMjIzLDUxMjI0LDUxMjI1LDUxMjI2LDUxMjI3LDUxMjMwLDUxMjMxLDUxMjMzLDUxMjM0LDUxMjM1LDUxMjM3LDUxMjM4LDUxMjM5LDUxMjQw''@;'; put 'put ''LDUxMjQxLDUxMjQyLDUxMjQzLDUxMjQ2LDUxMjQ4LDUxMjUwLDUxMjUxLDUxMjUyLDUxMjUzLDUxMjU0LDUxMjU1LDUxMjU3LDUxMjU4LDUxMjU5LDUxMjYxLDUxMjYyLDUxMjYzLDUxMjY1LDUxMjY2LDUxMjY3LDUxMjY4LDUxMjY5LDUxMjcwLDUxMjcxLDUxMjc0LDUxMjc1LDUxMjc4LDUx''@;'; put 'put ''Mjc5LDUxMjgwLDUxMjgxLDUxMjgyLDUxMjgzLDUxMjg1LDUxMjg2LDUxMjg3LDUxMjg4LDUxMjg5LDUxMjkwLDUxMjkxLDUxMjkyLDUxMjkzLDUxMjk0LDUxMjk1LDUxMjk2LDUxMjk3LDUxMjk4LDUxMjk5LDUxMzAwLDUxMzAxLDUxMzAyLDUxMzAzLDUxMzA0LDUxMzA1LDUxMzA2LDUxMzA3''@;'; put 'put ''LDUxMzA4LDUxMzA5LDUxMzEwLDUxMzExLDUxMzE0LDUxMzE1LDUxMzE3LDUxMzE4LDUxMzE5LDUxMzIxLDUxMzIzLDUxMzI0LDUxMzI1LDUxMzI2LDUxMzI3LDUxMzMwLDUxMzMyLDUxMzM2LDUxMzM3LDUxMzM4LDUxMzQyLDUxMzQzLDUxMzQ0LDUxMzQ1LDUxMzQ2LDUxMzQ3LDUxMzQ5LDUx''@;'; put 'put ''MzUwLDUxMzUxLDUxMzUyLDUxMzUzLDUxMzU0LDUxMzU1LDUxMzU2LDUxMzU4LDUxMzYwLDUxMzYyLDUxMzYzLDUxMzY0LDUxMzY1LDUxMzY2LDUxMzY3LDUxMzY5LDUxMzcwLDUxMzcxLDUxMzcyLDUxMzczLDUxMzc0LDUxMzc1LDUxMzc2LDUxMzc3LDUxMzc4LDUxMzc5LDUxMzgwLDUxMzgx''@;'; put 'put ''LDUxMzgyLDUxMzgzLDUxMzg0LDUxMzg1LDUxMzg2LDUxMzg3LDUxMzkwLDUxMzkxLDUxMzkyLDUxMzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMzk0LDUxMzk1LDUxMzk3LDUxMzk4LDUxMzk5LDUxNDAxLDUxNDAyLDUxNDAzLDUxNDA1LDUxNDA2LDUxNDA3LDUxNDA4LDUx''@;'; put 'put ''NDA5LDUxNDEwLDUxNDExLDUxNDE0LDUxNDE2LDUxNDE4LDUxNDE5LDUxNDIwLDUxNDIxLDUxNDIyLDUxNDIzLDUxNDI2LDUxNDI3LDUxNDI5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNDMwLDUxNDMxLDUxNDMyLDUxNDMzLDUxNDM0LDUxNDM1LDUxNDM2LDUxNDM3LDUxNDM4''@;'; put 'put ''LDUxNDM5LDUxNDQwLDUxNDQxLDUxNDQyLDUxNDQzLDUxNDQ0LDUxNDQ2LDUxNDQ3LDUxNDQ4LDUxNDQ5LDUxNDUwLDUxNDUxLDUxNDU0LDUxNDU1LDUxNDU3LDUxNDU4LDUxNDU5LDUxNDYzLDUxNDY0LDUxNDY1LDUxNDY2LDUxNDY3LDUxNDcwLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw4MjI5''@;'; put 'put ''LDgyMzAsMTY4LDEyMjkxLDE3Myw4MjEzLDg3NDEsNjUzNDAsODc2NCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg4MDAsODgwNCw4ODA1LDg3MzQs''@;'; put 'put ''ODc1NiwxNzYsODI0Miw4MjQzLDg0NTEsODQ5MSw2NTUwNCw2NTUwNSw2NTUwOSw5Nzk0LDk3OTIsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4NiwxNjcsODI1MSw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYw''@;'; put 'put ''LDg1OTQsODU5Miw4NTkzLDg1OTUsODU5NiwxMjMwNyw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4MzUsODc0Niw4NzQ1LDg3NDMsODc0NCw2NTUwNiw1MTQ3Miw1MTQ3NCw1MTQ3NSw1MTQ3Niw1MTQ3Nyw1MTQ3OCw1''@;'; put 'put ''MTQ3OSw1MTQ4MSw1MTQ4Miw1MTQ4Myw1MTQ4NCw1MTQ4NSw1MTQ4Niw1MTQ4Nyw1MTQ4OCw1MTQ4OSw1MTQ5MCw1MTQ5MSw1MTQ5Miw1MTQ5Myw1MTQ5NCw1MTQ5NSw1MTQ5Niw1MTQ5Nyw1MTQ5OCw1MTQ5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUwMSw1MTUwMiw1MTUw''@;'; put 'put ''Myw1MTUwNCw1MTUwNSw1MTUwNiw1MTUwNyw1MTUwOSw1MTUxMCw1MTUxMSw1MTUxMiw1MTUxMyw1MTUxNCw1MTUxNSw1MTUxNiw1MTUxNyw1MTUxOCw1MTUxOSw1MTUyMCw1MTUyMSw1MTUyMiw1MTUyMyw1MTUyNCw1MTUyNSw1MTUyNiw1MTUyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCw1MTUyOCw1MTUyOSw1MTUzMCw1MTUzMSw1MTUzMiw1MTUzMyw1MTUzNCw1MTUzNSw1MTUzOCw1MTUzOSw1MTU0MSw1MTU0Miw1MTU0Myw1MTU0NSw1MTU0Niw1MTU0Nyw1MTU0OCw1MTU0OSw1MTU1MCw1MTU1MSw1MTU1NCw1MTU1Niw1MTU1Nyw1MTU1OCw1MTU1OSw1MTU2MCw1MTU2''@;'; put 'put ''MSw1MTU2Miw1MTU2Myw1MTU2NSw1MTU2Niw1MTU2Nyw4NjU4LDg2NjAsODcwNCw4NzA3LDE4MCw2NTM3NCw3MTEsNzI4LDczMyw3MzAsNzI5LDE4NCw3MzEsMTYxLDE5MSw3MjAsODc1MCw4NzIxLDg3MTksMTY0LDg0NTcsODI0MCw5NjY1LDk2NjQsOTY1NSw5NjU0LDk4MjgsOTgyNCw5ODI1''@;'; put 'put ''LDk4MjksOTgzMSw5ODI3LDg4NTcsOTY3Miw5NjM1LDk2ODAsOTY4MSw5NjE4LDk2MzYsOTYzNyw5NjQwLDk2MzksOTYzOCw5NjQxLDk4MzIsOTc0Myw5NzQyLDk3NTYsOTc1OCwxODIsODIyNCw4MjI1LDg1OTcsODU5OSw4NjAxLDg1OTgsODYwMCw5ODM3LDk4MzMsOTgzNCw5ODM2LDEyOTI3''@;'; put 'put ''LDEyODI4LDg0NzAsMTMyNTUsODQ4MiwxMzI1MCwxMzI3Miw4NDgxLDgzNjQsMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1''@;'; put 'put ''MTU2OSw1MTU3MCw1MTU3MSw1MTU3Myw1MTU3NCw1MTU3NSw1MTU3Niw1MTU3Nyw1MTU3OCw1MTU3OSw1MTU4MSw1MTU4Miw1MTU4Myw1MTU4NCw1MTU4NSw1MTU4Niw1MTU4Nyw1MTU4OCw1MTU4OSw1MTU5MCw1MTU5MSw1MTU5NCw1MTU5NSw1MTU5Nyw1MTU5OCw1MTU5OSxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCw1MTYwMSw1MTYwMiw1MTYwMyw1MTYwNCw1MTYwNSw1MTYwNiw1MTYwNyw1MTYxMCw1MTYxMiw1MTYxNCw1MTYxNSw1MTYxNiw1MTYxNyw1MTYxOCw1MTYxOSw1MTYyMCw1MTYyMSw1MTYyMiw1MTYyMyw1MTYyNCw1MTYyNSw1MTYyNiw1MTYyNyw1MTYyOCw1''@;'; put 'put ''MTYyOSw1MTYzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYzMSw1MTYzMiw1MTYzMyw1MTYzNCw1MTYzNSw1MTYzNiw1MTYzNyw1MTYzOCw1MTYzOSw1MTY0MCw1MTY0MSw1MTY0Miw1MTY0Myw1MTY0NCw1MTY0NSw1MTY0Niw1MTY0Nyw1MTY1MCw1MTY1MSw1MTY1Myw1MTY1''@;'; put 'put ''NCw1MTY1Nyw1MTY1OSw1MTY2MCw1MTY2MSw1MTY2Miw1MTY2Myw1MTY2Niw1MTY2OCw1MTY3MSw1MTY3Miw1MTY3NSw2NTI4MSw2NTI4Miw2NTI4Myw2NTI4NCw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2''@;'; put 'put ''NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMy''@;'; put 'put ''NCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTUxMCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2''@;'; put 'put ''NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1MTY3OCw1MTY3OSw1MTY4MSw1MTY4Myw1MTY4''@;'; put 'put ''NSw1MTY4Niw1MTY4OCw1MTY4OSw1MTY5MCw1MTY5MSw1MTY5NCw1MTY5OCw1MTY5OSw1MTcwMCw1MTcwMSw1MTcwMiw1MTcwMyw1MTcwNiw1MTcwNyw1MTcwOSw1MTcxMCw1MTcxMSw1MTcxMyw1MTcxNCw1MTcxNSw1MTcxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTcxNyw1''@;'; put 'put ''MTcxOCw1MTcxOSw1MTcyMiw1MTcyNiw1MTcyNyw1MTcyOCw1MTcyOSw1MTczMCw1MTczMSw1MTczMyw1MTczNCw1MTczNSw1MTczNyw1MTczOCw1MTczOSw1MTc0MCw1MTc0MSw1MTc0Miw1MTc0Myw1MTc0NCw1MTc0NSw1MTc0Niw1MTc0Nyw1MTc0OCw1MTc0OSxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCw1MTc1MCw1MTc1MSw1MTc1Miw1MTc1NCw1MTc1NSw1MTc1Niw1MTc1Nyw1MTc1OCw1MTc1OSw1MTc2MCw1MTc2MSw1MTc2Miw1MTc2Myw1MTc2NCw1MTc2NSw1MTc2Niw1MTc2Nyw1MTc2OCw1MTc2OSw1MTc3MCw1MTc3MSw1MTc3Miw1MTc3Myw1MTc3NCw1MTc3NSw1''@;'; put 'put ''MTc3Niw1MTc3Nyw1MTc3OCw1MTc3OSw1MTc4MCw1MTc4MSw1MTc4MiwxMjU5MywxMjU5NCwxMjU5NSwxMjU5NiwxMjU5NywxMjU5OCwxMjU5OSwxMjYwMCwxMjYwMSwxMjYwMiwxMjYwMywxMjYwNCwxMjYwNSwxMjYwNiwxMjYwNywxMjYwOCwxMjYwOSwxMjYxMCwxMjYxMSwxMjYxMiwxMjYx''@;'; put 'put ''MywxMjYxNCwxMjYxNSwxMjYxNiwxMjYxNywxMjYxOCwxMjYxOSwxMjYyMCwxMjYyMSwxMjYyMiwxMjYyMywxMjYyNCwxMjYyNSwxMjYyNiwxMjYyNywxMjYyOCwxMjYyOSwxMjYzMCwxMjYzMSwxMjYzMiwxMjYzMywxMjYzNCwxMjYzNSwxMjYzNiwxMjYzNywxMjYzOCwxMjYzOSwxMjY0MCwx''@;'; put 'put ''MjY0MSwxMjY0MiwxMjY0MywxMjY0NCwxMjY0NSwxMjY0NiwxMjY0NywxMjY0OCwxMjY0OSwxMjY1MCwxMjY1MSwxMjY1MiwxMjY1MywxMjY1NCwxMjY1NSwxMjY1NiwxMjY1NywxMjY1OCwxMjY1OSwxMjY2MCwxMjY2MSwxMjY2MiwxMjY2MywxMjY2NCwxMjY2NSwxMjY2NiwxMjY2NywxMjY2''@;'; put 'put ''OCwxMjY2OSwxMjY3MCwxMjY3MSwxMjY3MiwxMjY3MywxMjY3NCwxMjY3NSwxMjY3NiwxMjY3NywxMjY3OCwxMjY3OSwxMjY4MCwxMjY4MSwxMjY4MiwxMjY4MywxMjY4NCwxMjY4NSwxMjY4Niw1MTc4Myw1MTc4NCw1MTc4NSw1MTc4Niw1MTc4Nyw1MTc5MCw1MTc5MSw1MTc5Myw1MTc5NCw1''@;'; put 'put ''MTc5NSw1MTc5Nyw1MTc5OCw1MTc5OSw1MTgwMCw1MTgwMSw1MTgwMiw1MTgwMyw1MTgwNiw1MTgxMCw1MTgxMSw1MTgxMiw1MTgxMyw1MTgxNCw1MTgxNSw1MTgxNyw1MTgxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTgxOSw1MTgyMCw1MTgyMSw1MTgyMiw1MTgyMyw1MTgy''@;'; put 'put ''NCw1MTgyNSw1MTgyNiw1MTgyNyw1MTgyOCw1MTgyOSw1MTgzMCw1MTgzMSw1MTgzMiw1MTgzMyw1MTgzNCw1MTgzNSw1MTgzNiw1MTgzOCw1MTgzOSw1MTg0MCw1MTg0MSw1MTg0Miw1MTg0Myw1MTg0NSw1MTg0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg0Nyw1MTg0OCw1''@;'; put 'put ''MTg0OSw1MTg1MCw1MTg1MSw1MTg1Miw1MTg1Myw1MTg1NCw1MTg1NSw1MTg1Niw1MTg1Nyw1MTg1OCw1MTg1OSw1MTg2MCw1MTg2MSw1MTg2Miw1MTg2Myw1MTg2NSw1MTg2Niw1MTg2Nyw1MTg2OCw1MTg2OSw1MTg3MCw1MTg3MSw1MTg3Miw1MTg3Myw1MTg3NCw1MTg3NSw1MTg3Niw1MTg3''@;'; put 'put ''Nyw1MTg3OCw1MTg3OSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDks''@;'; put 'put ''OTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODgwLDUxODgxLDUxODgyLDUxODgzLDUxODg0LDUxODg1LDUxODg2LDUxODg3LDUxODg4LDUxODg5''@;'; put 'put ''LDUxODkwLDUxODkxLDUxODkyLDUxODkzLDUxODk0LDUxODk1LDUxODk2LDUxODk3LDUxODk4LDUxODk5LDUxOTAyLDUxOTAzLDUxOTA1LDUxOTA2LDUxOTA3LDUxOTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTEwLDUxOTExLDUxOTEyLDUxOTEzLDUxOTE0LDUxOTE1LDUx''@;'; put 'put ''OTE4LDUxOTIwLDUxOTIyLDUxOTI0LDUxOTI1LDUxOTI2LDUxOTI3LDUxOTMwLDUxOTMxLDUxOTMyLDUxOTMzLDUxOTM0LDUxOTM1LDUxOTM3LDUxOTM4LDUxOTM5LDUxOTQwLDUxOTQxLDUxOTQyLDUxOTQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTQ0LDUxOTQ1LDUxOTQ2''@;'; put 'put ''LDUxOTQ3LDUxOTQ5LDUxOTUwLDUxOTUxLDUxOTUyLDUxOTUzLDUxOTU0LDUxOTU1LDUxOTU3LDUxOTU4LDUxOTU5LDUxOTYwLDUxOTYxLDUxOTYyLDUxOTYzLDUxOTY0LDUxOTY1LDUxOTY2LDUxOTY3LDUxOTY4LDUxOTY5LDUxOTcwLDUxOTcxLDUxOTcyLDUxOTczLDUxOTc0LDUxOTc1LDUx''@;'; put 'put ''OTc3LDUxOTc4LDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1Mjgs''@;'; put 'put ''OTUzOCw5NDkwLDk0ODksOTQ5OCw5NDk3LDk0OTQsOTQ5Myw5NDg2LDk0ODUsOTUwMiw5NTAzLDk1MDUsOTUwNiw5NTEwLDk1MTEsOTUxMyw5NTE0LDk1MTcsOTUxOCw5NTIxLDk1MjIsOTUyNSw5NTI2LDk1MjksOTUzMCw5NTMzLDk1MzQsOTUzNiw5NTM3LDk1MzksOTU0MCw5NTQxLDk1NDIs''@;'; put 'put ''OTU0Myw5NTQ0LDk1NDUsOTU0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NzksNTE5ODAsNTE5''@;'; put 'put ''ODEsNTE5ODIsNTE5ODMsNTE5ODUsNTE5ODYsNTE5ODcsNTE5ODksNTE5OTAsNTE5OTEsNTE5OTMsNTE5OTQsNTE5OTUsNTE5OTYsNTE5OTcsNTE5OTgsNTE5OTksNTIwMDIsNTIwMDMsNTIwMDQsNTIwMDUsNTIwMDYsNTIwMDcsNTIwMDgsNTIwMDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNTIwMTAsNTIwMTEsNTIwMTIsNTIwMTMsNTIwMTQsNTIwMTUsNTIwMTYsNTIwMTcsNTIwMTgsNTIwMTksNTIwMjAsNTIwMjEsNTIwMjIsNTIwMjMsNTIwMjQsNTIwMjUsNTIwMjYsNTIwMjcsNTIwMjgsNTIwMjksNTIwMzAsNTIwMzEsNTIwMzIsNTIwMzQsNTIwMzUsNTIwMzYsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMzcsNTIwMzgsNTIwMzksNTIwNDIsNTIwNDMsNTIwNDUsNTIwNDYsNTIwNDcsNTIwNDksNTIwNTAsNTIwNTEsNTIwNTIsNTIwNTMsNTIwNTQsNTIwNTUsNTIwNTgsNTIwNTksNTIwNjAsNTIwNjIsNTIwNjMsNTIwNjQsNTIwNjUsNTIwNjYs''@;'; put 'put ''NTIwNjcsNTIwNjksNTIwNzAsNTIwNzEsNTIwNzIsNTIwNzMsNTIwNzQsNTIwNzUsNTIwNzYsMTMyMDUsMTMyMDYsMTMyMDcsODQ2NywxMzIwOCwxMzI1MiwxMzIxOSwxMzIyMCwxMzIyMSwxMzIyMiwxMzIwOSwxMzIxMCwxMzIxMSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNSwxMzIxNiwxMzIx''@;'; put 'put ''NywxMzIxOCwxMzI1OCwxMzE5NywxMzE5OCwxMzE5OSwxMzI2MywxMzE5MiwxMzE5MywxMzI1NiwxMzIyMywxMzIyNCwxMzIzMiwxMzIzMywxMzIzNCwxMzIzNSwxMzIzNiwxMzIzNywxMzIzOCwxMzIzOSwxMzI0MCwxMzI0MSwxMzE4NCwxMzE4NSwxMzE4NiwxMzE4NywxMzE4OCwxMzI0Miwx''@;'; put 'put ''MzI0MywxMzI0NCwxMzI0NSwxMzI0NiwxMzI0NywxMzIwMCwxMzIwMSwxMzIwMiwxMzIwMywxMzIwNCw4NDg2LDEzMjQ4LDEzMjQ5LDEzMTk0LDEzMTk1LDEzMTk2LDEzMjcwLDEzMjUzLDEzMjI5LDEzMjMwLDEzMjMxLDEzMjc1LDEzMjI1LDEzMjI2LDEzMjI3LDEzMjI4LDEzMjc3LDEzMjY0''@;'; put 'put ''LDEzMjY3LDEzMjUxLDEzMjU3LDEzMjc2LDEzMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDc3LDUyMDc4LDUyMDc5LDUyMDgwLDUyMDgxLDUyMDgyLDUyMDgzLDUyMDg0LDUyMDg1LDUyMDg2''@;'; put 'put ''LDUyMDg3LDUyMDkwLDUyMDkxLDUyMDkyLDUyMDkzLDUyMDk0LDUyMDk1LDUyMDk2LDUyMDk3LDUyMDk4LDUyMDk5LDUyMTAwLDUyMTAxLDUyMTAyLDUyMTAzLDUyMTA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTA1LDUyMTA2LDUyMTA3LDUyMTA4LDUyMTA5LDUyMTEwLDUy''@;'; put 'put ''MTExLDUyMTEyLDUyMTEzLDUyMTE0LDUyMTE1LDUyMTE2LDUyMTE3LDUyMTE4LDUyMTE5LDUyMTIwLDUyMTIxLDUyMTIyLDUyMTIzLDUyMTI1LDUyMTI2LDUyMTI3LDUyMTI4LDUyMTI5LDUyMTMwLDUyMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTMyLDUyMTMzLDUyMTM0''@;'; put 'put ''LDUyMTM1LDUyMTM2LDUyMTM3LDUyMTM4LDUyMTM5LDUyMTQwLDUyMTQxLDUyMTQyLDUyMTQzLDUyMTQ0LDUyMTQ1LDUyMTQ2LDUyMTQ3LDUyMTQ4LDUyMTQ5LDUyMTUwLDUyMTUxLDUyMTUzLDUyMTU0LDUyMTU1LDUyMTU2LDUyMTU3LDUyMTU4LDUyMTU5LDUyMTYwLDUyMTYxLDUyMTYyLDUy''@;'; put 'put ''MTYzLDUyMTY0LDE5OCwyMDgsMTcwLDI5NCxudWxsLDMwNixudWxsLDMxOSwzMjEsMjE2LDMzOCwxODYsMjIyLDM1OCwzMzAsbnVsbCwxMjg5NiwxMjg5NywxMjg5OCwxMjg5OSwxMjkwMCwxMjkwMSwxMjkwMiwxMjkwMywxMjkwNCwxMjkwNSwxMjkwNiwxMjkwNywxMjkwOCwxMjkwOSwxMjkx''@;'; put 'put ''MCwxMjkxMSwxMjkxMiwxMjkxMywxMjkxNCwxMjkxNSwxMjkxNiwxMjkxNywxMjkxOCwxMjkxOSwxMjkyMCwxMjkyMSwxMjkyMiwxMjkyMyw5NDI0LDk0MjUsOTQyNiw5NDI3LDk0MjgsOTQyOSw5NDMwLDk0MzEsOTQzMiw5NDMzLDk0MzQsOTQzNSw5NDM2LDk0MzcsOTQzOCw5NDM5LDk0NDAs''@;'; put 'put ''OTQ0MSw5NDQyLDk0NDMsOTQ0NCw5NDQ1LDk0NDYsOTQ0Nyw5NDQ4LDk0NDksOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsMTg5LDg1MzEsODUzMiwxODgsMTkwLDg1MzksODU0MCw4NTQxLDg1NDIsNTIx''@;'; put 'put ''NjUsNTIxNjYsNTIxNjcsNTIxNjgsNTIxNjksNTIxNzAsNTIxNzEsNTIxNzIsNTIxNzMsNTIxNzQsNTIxNzUsNTIxNzYsNTIxNzcsNTIxNzgsNTIxNzksNTIxODEsNTIxODIsNTIxODMsNTIxODQsNTIxODUsNTIxODYsNTIxODcsNTIxODgsNTIxODksNTIxOTAsNTIxOTEsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsNTIxOTIsNTIxOTMsNTIxOTQsNTIxOTUsNTIxOTcsNTIxOTgsNTIyMDAsNTIyMDIsNTIyMDMsNTIyMDQsNTIyMDUsNTIyMDYsNTIyMDcsNTIyMDgsNTIyMDksNTIyMTAsNTIyMTEsNTIyMTIsNTIyMTMsNTIyMTQsNTIyMTUsNTIyMTYsNTIyMTcsNTIyMTgsNTIy''@;'; put 'put ''MTksNTIyMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIyMjEsNTIyMjIsNTIyMjMsNTIyMjQsNTIyMjUsNTIyMjYsNTIyMjcsNTIyMjgsNTIyMjksNTIyMzAsNTIyMzEsNTIyMzIsNTIyMzMsNTIyMzQsNTIyMzUsNTIyMzgsNTIyMzksNTIyNDEsNTIyNDIsNTIyNDMsNTIyNDUs''@;'; put 'put ''NTIyNDYsNTIyNDcsNTIyNDgsNTIyNDksNTIyNTAsNTIyNTEsNTIyNTQsNTIyNTUsNTIyNTYsNTIyNTksNTIyNjAsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMCwzMjIsMjQ4LDMzOSwyMjMsMjU0LDM1OSwzMzEsMzI5LDEyODAwLDEyODAxLDEyODAyLDEyODAzLDEyODA0LDEyODA1''@;'; put 'put ''LDEyODA2LDEyODA3LDEyODA4LDEyODA5LDEyODEwLDEyODExLDEyODEyLDEyODEzLDEyODE0LDEyODE1LDEyODE2LDEyODE3LDEyODE4LDEyODE5LDEyODIwLDEyODIxLDEyODIyLDEyODIzLDEyODI0LDEyODI1LDEyODI2LDEyODI3LDkzNzIsOTM3Myw5Mzc0LDkzNzUsOTM3Niw5Mzc3LDkz''@;'; put 'put ''NzgsOTM3OSw5MzgwLDkzODEsOTM4Miw5MzgzLDkzODQsOTM4NSw5Mzg2LDkzODcsOTM4OCw5Mzg5LDkzOTAsOTM5MSw5MzkyLDkzOTMsOTM5NCw5Mzk1LDkzOTYsOTM5Nyw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkz''@;'; put 'put ''NDUsOTM0NiwxODUsMTc4LDE3OSw4MzA4LDgzMTksODMyMSw4MzIyLDgzMjMsODMyNCw1MjI2MSw1MjI2Miw1MjI2Niw1MjI2Nyw1MjI2OSw1MjI3MSw1MjI3Myw1MjI3NCw1MjI3NSw1MjI3Niw1MjI3Nyw1MjI3OCw1MjI3OSw1MjI4Miw1MjI4Nyw1MjI4OCw1MjI4OSw1MjI5MCw1MjI5MSw1''@;'; put 'put ''MjI5NCw1MjI5NSw1MjI5Nyw1MjI5OCw1MjI5OSw1MjMwMSw1MjMwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMwMyw1MjMwNCw1MjMwNSw1MjMwNiw1MjMwNyw1MjMxMCw1MjMxNCw1MjMxNSw1MjMxNiw1MjMxNyw1MjMxOCw1MjMxOSw1MjMyMSw1MjMyMiw1MjMyMyw1MjMy''@;'; put 'put ''NSw1MjMyNyw1MjMyOSw1MjMzMCw1MjMzMSw1MjMzMiw1MjMzMyw1MjMzNCw1MjMzNSw1MjMzNyw1MjMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMzOSw1MjM0MCw1MjM0Miw1MjM0Myw1MjM0NCw1MjM0NSw1MjM0Niw1MjM0Nyw1MjM0OCw1MjM0OSw1MjM1MCw1MjM1MSw1''@;'; put 'put ''MjM1Miw1MjM1Myw1MjM1NCw1MjM1NSw1MjM1Niw1MjM1Nyw1MjM1OCw1MjM1OSw1MjM2MCw1MjM2MSw1MjM2Miw1MjM2Myw1MjM2NCw1MjM2NSw1MjM2Niw1MjM2Nyw1MjM2OCw1MjM2OSw1MjM3MCw1MjM3MSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2''@;'; put 'put ''MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4Nywx''@;'; put 'put ''MjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQx''@;'; put 'put ''NSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsNTIzNzIsNTIzNzMsNTIzNzQsNTIzNzUsNTIzNzgsNTIzNzksNTIzODEsNTIzODIsNTIzODMsNTIzODUsNTIzODYsNTIzODcsNTIzODgsNTIzODksNTIzOTAsNTIzOTEsNTIzOTQsNTIzOTgsNTIzOTksNTI0MDAsNTI0MDEsNTI0MDIsNTI0MDMsNTI0MDYsNTI0MDcsNTI0''@;'; put 'put ''MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0MTAsNTI0MTEsNTI0MTMsNTI0MTQsNTI0MTUsNTI0MTYsNTI0MTcsNTI0MTgsNTI0MTksNTI0MjIsNTI0MjQsNTI0MjYsNTI0MjcsNTI0MjgsNTI0MjksNTI0MzAsNTI0MzEsNTI0MzMsNTI0MzQsNTI0MzUsNTI0MzcsNTI0Mzgs''@;'; put 'put ''NTI0MzksNTI0NDAsNTI0NDEsNTI0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NDMsNTI0NDQsNTI0NDUsNTI0NDYsNTI0NDcsNTI0NDgsNTI0NDksNTI0NTAsNTI0NTEsNTI0NTMsNTI0NTQsNTI0NTUsNTI0NTYsNTI0NTcsNTI0NTgsNTI0NTksNTI0NjEsNTI0NjIsNTI0''@;'; put 'put ''NjMsNTI0NjUsNTI0NjYsNTI0NjcsNTI0NjgsNTI0NjksNTI0NzAsNTI0NzEsNTI0NzIsNTI0NzMsNTI0NzQsNTI0NzUsNTI0NzYsNTI0NzcsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIs''@;'; put 'put ''MTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0''@;'; put 'put ''OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcs''@;'; put 'put ''MTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDc4LDUyNDc5LDUyNDgwLDUyNDgy''@;'; put 'put ''LDUyNDgzLDUyNDg0LDUyNDg1LDUyNDg2LDUyNDg3LDUyNDkwLDUyNDkxLDUyNDkzLDUyNDk0LDUyNDk1LDUyNDk3LDUyNDk4LDUyNDk5LDUyNTAwLDUyNTAxLDUyNTAyLDUyNTAzLDUyNTA2LDUyNTA4LDUyNTEwLDUyNTExLDUyNTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUy''@;'; put 'put ''NTEzLDUyNTE0LDUyNTE1LDUyNTE3LDUyNTE4LDUyNTE5LDUyNTIxLDUyNTIyLDUyNTIzLDUyNTI1LDUyNTI2LDUyNTI3LDUyNTI4LDUyNTI5LDUyNTMwLDUyNTMxLDUyNTMyLDUyNTMzLDUyNTM0LDUyNTM1LDUyNTM2LDUyNTM4LDUyNTM5LDUyNTQwLDUyNTQxLDUyNTQyLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLDUyNTQzLDUyNTQ0LDUyNTQ1LDUyNTQ2LDUyNTQ3LDUyNTQ4LDUyNTQ5LDUyNTUwLDUyNTUxLDUyNTUyLDUyNTUzLDUyNTU0LDUyNTU1LDUyNTU2LDUyNTU3LDUyNTU4LDUyNTU5LDUyNTYwLDUyNTYxLDUyNTYyLDUyNTYzLDUyNTY0LDUyNTY1LDUyNTY2LDUy''@;'; put 'put ''NTY3LDUyNTY4LDUyNTY5LDUyNTcwLDUyNTcxLDUyNTczLDUyNTc0LDUyNTc1LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYy''@;'; put 'put ''LDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5''@;'; put 'put ''LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsNTI1NzcsNTI1NzgsNTI1NzksNTI1ODEsNTI1ODIsNTI1ODMsNTI1ODQsNTI1ODUsNTI1ODYsNTI1ODcsNTI1OTAsNTI1OTIsNTI1OTQsNTI1OTUsNTI1OTYsNTI1OTcsNTI1OTgsNTI1OTksNTI2MDEsNTI2MDIsNTI2MDMsNTI2MDQsNTI2MDUsNTI2MDYs''@;'; put 'put ''NTI2MDcsNTI2MDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2MDksNTI2MTAsNTI2MTEsNTI2MTIsNTI2MTMsNTI2MTQsNTI2MTUsNTI2MTcsNTI2MTgsNTI2MTksNTI2MjAsNTI2MjEsNTI2MjIsNTI2MjMsNTI2MjQsNTI2MjUsNTI2MjYsNTI2MjcsNTI2MzAsNTI2MzEsNTI2''@;'; put 'put ''MzMsNTI2MzQsNTI2MzUsNTI2MzcsNTI2MzgsNTI2MzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NDAsNTI2NDEsNTI2NDIsNTI2NDMsNTI2NDYsNTI2NDgsNTI2NTAsNTI2NTEsNTI2NTIsNTI2NTMsNTI2NTQsNTI2NTUsNTI2NTcsNTI2NTgsNTI2NTksNTI2NjAsNTI2NjEs''@;'; put 'put ''NTI2NjIsNTI2NjMsNTI2NjQsNTI2NjUsNTI2NjYsNTI2NjcsNTI2NjgsNTI2NjksNTI2NzAsNTI2NzEsNTI2NzIsNTI2NzMsNTI2NzQsNTI2NzUsNTI2NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY3OCw1MjY3OSw1MjY4MCw1MjY4MSw1MjY4Miw1MjY4Myw1MjY4NSw1MjY4Niw1MjY4Nyw1MjY4OSw1MjY5MCw1MjY5MSw1MjY5Miw1MjY5Myw1MjY5NCw1MjY5NSw1MjY5''@;'; put 'put ''Niw1MjY5Nyw1MjY5OCw1MjY5OSw1MjcwMCw1MjcwMSw1MjcwMiw1MjcwMyw1MjcwNCw1MjcwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjcwNiw1MjcwNyw1MjcwOCw1MjcwOSw1MjcxMCw1MjcxMSw1MjcxMyw1MjcxNCw1MjcxNSw1MjcxNyw1MjcxOCw1MjcxOSw1MjcyMSw1''@;'; put 'put ''MjcyMiw1MjcyMyw1MjcyNCw1MjcyNSw1MjcyNiw1MjcyNyw1MjczMCw1MjczMiw1MjczNCw1MjczNSw1MjczNiw1MjczNyw1MjczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjczOSw1Mjc0MSw1Mjc0Miw1Mjc0Myw1Mjc0NSw1Mjc0Niw1Mjc0Nyw1Mjc0OSw1Mjc1MCw1Mjc1''@;'; put 'put ''MSw1Mjc1Miw1Mjc1Myw1Mjc1NCw1Mjc1NSw1Mjc1Nyw1Mjc1OCw1Mjc1OSw1Mjc2MCw1Mjc2Miw1Mjc2Myw1Mjc2NCw1Mjc2NSw1Mjc2Niw1Mjc2Nyw1Mjc3MCw1Mjc3MSw1Mjc3Myw1Mjc3NCw1Mjc3NSw1Mjc3Nyw1Mjc3OCw1Mjc3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzgwLDUyNzgxLDUyNzgyLDUyNzgzLDUyNzg2LDUyNzg4LDUyNzkwLDUyNzkxLDUyNzkyLDUy''@;'; put 'put ''NzkzLDUyNzk0LDUyNzk1LDUyNzk2LDUyNzk3LDUyNzk4LDUyNzk5LDUyODAwLDUyODAxLDUyODAyLDUyODAzLDUyODA0LDUyODA1LDUyODA2LDUyODA3LDUyODA4LDUyODA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODEwLDUyODExLDUyODEyLDUyODEzLDUyODE0LDUyODE1''@;'; put 'put ''LDUyODE2LDUyODE3LDUyODE4LDUyODE5LDUyODIwLDUyODIxLDUyODIyLDUyODIzLDUyODI2LDUyODI3LDUyODI5LDUyODMwLDUyODM0LDUyODM1LDUyODM2LDUyODM3LDUyODM4LDUyODM5LDUyODQyLDUyODQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODQ2LDUyODQ3LDUy''@;'; put 'put ''ODQ4LDUyODQ5LDUyODUwLDUyODUxLDUyODU0LDUyODU1LDUyODU3LDUyODU4LDUyODU5LDUyODYxLDUyODYyLDUyODYzLDUyODY0LDUyODY1LDUyODY2LDUyODY3LDUyODcwLDUyODcyLDUyODc0LDUyODc1LDUyODc2LDUyODc3LDUyODc4LDUyODc5LDUyODgyLDUyODgzLDUyODg1LDUyODg2''@;'; put 'put ''LDUyODg3LDUyODg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4OTAsNTI4OTEs''@;'; put 'put ''NTI4OTIsNTI4OTMsNTI4OTQsNTI4OTUsNTI4OTgsNTI5MDIsNTI5MDMsNTI5MDQsNTI5MDUsNTI5MDYsNTI5MDcsNTI5MTAsNTI5MTEsNTI5MTIsNTI5MTMsNTI5MTQsNTI5MTUsNTI5MTYsNTI5MTcsNTI5MTgsNTI5MTksNTI5MjAsNTI5MjEsNTI5MjIsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNTI5MjMsNTI5MjQsNTI5MjUsNTI5MjYsNTI5MjcsNTI5MjgsNTI5MzAsNTI5MzEsNTI5MzIsNTI5MzMsNTI5MzQsNTI5MzUsNTI5MzYsNTI5MzcsNTI5MzgsNTI5MzksNTI5NDAsNTI5NDEsNTI5NDIsNTI5NDMsNTI5NDQsNTI5NDUsNTI5NDYsNTI5NDcsNTI5NDgsNTI5NDks''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5NTAsNTI5NTEsNTI5NTIsNTI5NTMsNTI5NTQsNTI5NTUsNTI5NTYsNTI5NTcsNTI5NTgsNTI5NTksNTI5NjAsNTI5NjEsNTI5NjIsNTI5NjMsNTI5NjYsNTI5NjcsNTI5NjksNTI5NzAsNTI5NzMsNTI5NzQsNTI5NzUsNTI5NzYsNTI5''@;'; put 'put ''NzcsNTI5NzgsNTI5NzksNTI5ODIsNTI5ODYsNTI5ODcsNTI5ODgsNTI5ODksNTI5OTAsNTI5OTEsNDQwMzIsNDQwMzMsNDQwMzYsNDQwMzksNDQwNDAsNDQwNDEsNDQwNDIsNDQwNDgsNDQwNDksNDQwNTAsNDQwNTEsNDQwNTIsNDQwNTMsNDQwNTQsNDQwNTUsNDQwNTcsNDQwNTgsNDQwNTks''@;'; put 'put ''NDQwNjAsNDQwNjEsNDQwNjQsNDQwNjgsNDQwNzYsNDQwNzcsNDQwNzksNDQwODAsNDQwODEsNDQwODgsNDQwODksNDQwOTIsNDQwOTYsNDQxMDcsNDQxMDksNDQxMTYsNDQxMjAsNDQxMjQsNDQxNDQsNDQxNDUsNDQxNDgsNDQxNTEsNDQxNTIsNDQxNTQsNDQxNjAsNDQxNjEsNDQxNjMsNDQx''@;'; put 'put ''NjQsNDQxNjUsNDQxNjYsNDQxNjksNDQxNzAsNDQxNzEsNDQxNzIsNDQxNzYsNDQxODAsNDQxODgsNDQxODksNDQxOTEsNDQxOTIsNDQxOTMsNDQyMDAsNDQyMDEsNDQyMDIsNDQyMDQsNDQyMDcsNDQyMDgsNDQyMTYsNDQyMTcsNDQyMTksNDQyMjAsNDQyMjEsNDQyMjUsNDQyMjgsNDQyMzIs''@;'; put 'put ''NDQyMzYsNDQyNDUsNDQyNDcsNDQyNTYsNDQyNTcsNDQyNjAsNDQyNjMsNDQyNjQsNDQyNjYsNDQyNjgsNDQyNzEsNDQyNzIsNDQyNzMsNDQyNzUsNDQyNzcsNDQyNzgsNDQyODQsNDQyODUsNDQyODgsNDQyOTIsNDQyOTQsNTI5OTQsNTI5OTUsNTI5OTcsNTI5OTgsNTI5OTksNTMwMDEsNTMw''@;'; put 'put ''MDIsNTMwMDMsNTMwMDQsNTMwMDUsNTMwMDYsNTMwMDcsNTMwMTAsNTMwMTIsNTMwMTQsNTMwMTUsNTMwMTYsNTMwMTcsNTMwMTgsNTMwMTksNTMwMjEsNTMwMjIsNTMwMjMsNTMwMjUsNTMwMjYsNTMwMjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwMjksNTMwMzAsNTMwMzEs''@;'; put 'put ''NTMwMzIsNTMwMzMsNTMwMzQsNTMwMzUsNTMwMzgsNTMwNDIsNTMwNDMsNTMwNDQsNTMwNDUsNTMwNDYsNTMwNDcsNTMwNDksNTMwNTAsNTMwNTEsNTMwNTIsNTMwNTMsNTMwNTQsNTMwNTUsNTMwNTYsNTMwNTcsNTMwNTgsNTMwNTksNTMwNjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsNTMwNjEsNTMwNjIsNTMwNjMsNTMwNjQsNTMwNjUsNTMwNjYsNTMwNjcsNTMwNjgsNTMwNjksNTMwNzAsNTMwNzEsNTMwNzIsNTMwNzMsNTMwNzQsNTMwNzUsNTMwNzgsNTMwNzksNTMwODEsNTMwODIsNTMwODMsNTMwODUsNTMwODYsNTMwODcsNTMwODgsNTMwODksNTMwOTAsNTMwOTEs''@;'; put 'put ''NTMwOTQsNTMwOTYsNTMwOTgsNTMwOTksNTMxMDAsNDQzMDAsNDQzMDEsNDQzMDMsNDQzMDUsNDQzMTIsNDQzMTYsNDQzMjAsNDQzMjksNDQzMzIsNDQzMzMsNDQzNDAsNDQzNDEsNDQzNDQsNDQzNDgsNDQzNTYsNDQzNTcsNDQzNTksNDQzNjEsNDQzNjgsNDQzNzIsNDQzNzYsNDQzODUsNDQz''@;'; put 'put ''ODcsNDQzOTYsNDQzOTcsNDQ0MDAsNDQ0MDMsNDQ0MDQsNDQ0MDUsNDQ0MDYsNDQ0MTEsNDQ0MTIsNDQ0MTMsNDQ0MTUsNDQ0MTcsNDQ0MTgsNDQ0MjQsNDQ0MjUsNDQ0MjgsNDQ0MzIsNDQ0NDQsNDQ0NDUsNDQ0NTIsNDQ0NzEsNDQ0ODAsNDQ0ODEsNDQ0ODQsNDQ0ODgsNDQ0OTYsNDQ0OTcs''@;'; put 'put ''NDQ0OTksNDQ1MDgsNDQ1MTIsNDQ1MTYsNDQ1MzYsNDQ1MzcsNDQ1NDAsNDQ1NDMsNDQ1NDQsNDQ1NDUsNDQ1NTIsNDQ1NTMsNDQ1NTUsNDQ1NTcsNDQ1NjQsNDQ1OTIsNDQ1OTMsNDQ1OTYsNDQ1OTksNDQ2MDAsNDQ2MDIsNDQ2MDgsNDQ2MDksNDQ2MTEsNDQ2MTMsNDQ2MTQsNDQ2MTgsNDQ2''@;'; put 'put ''MjAsNDQ2MjEsNDQ2MjIsNDQ2MjQsNDQ2MjgsNDQ2MzAsNDQ2MzYsNDQ2MzcsNDQ2MzksNDQ2NDAsNDQ2NDEsNDQ2NDUsNDQ2NDgsNDQ2NDksNDQ2NTIsNDQ2NTYsNDQ2NjQsNTMxMDEsNTMxMDIsNTMxMDMsNTMxMDYsNTMxMDcsNTMxMDksNTMxMTAsNTMxMTEsNTMxMTMsNTMxMTQsNTMxMTUs''@;'; put 'put ''NTMxMTYsNTMxMTcsNTMxMTgsNTMxMTksNTMxMjEsNTMxMjIsNTMxMjMsNTMxMjQsNTMxMjYsNTMxMjcsNTMxMjgsNTMxMjksNTMxMzAsNTMxMzEsNTMxMzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxMzQsNTMxMzUsNTMxMzYsNTMxMzcsNTMxMzgsNTMxMzksNTMxNDAsNTMx''@;'; put 'put ''NDEsNTMxNDIsNTMxNDMsNTMxNDQsNTMxNDUsNTMxNDYsNTMxNDcsNTMxNDgsNTMxNDksNTMxNTAsNTMxNTEsNTMxNTIsNTMxNTQsNTMxNTUsNTMxNTYsNTMxNTcsNTMxNTgsNTMxNTksNTMxNjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxNjIsNTMxNjMsNTMxNjQsNTMxNjUs''@;'; put 'put ''NTMxNjYsNTMxNjcsNTMxNjksNTMxNzAsNTMxNzEsNTMxNzIsNTMxNzMsNTMxNzQsNTMxNzUsNTMxNzYsNTMxNzcsNTMxNzgsNTMxNzksNTMxODAsNTMxODEsNTMxODIsNTMxODMsNTMxODQsNTMxODUsNTMxODYsNTMxODcsNTMxODksNTMxOTAsNTMxOTEsNTMxOTIsNTMxOTMsNTMxOTQsNTMx''@;'; put 'put ''OTUsNDQ2NjUsNDQ2NjcsNDQ2NjgsNDQ2NjksNDQ2NzYsNDQ2NzcsNDQ2ODQsNDQ3MzIsNDQ3MzMsNDQ3MzQsNDQ3MzYsNDQ3NDAsNDQ3NDgsNDQ3NDksNDQ3NTEsNDQ3NTIsNDQ3NTMsNDQ3NjAsNDQ3NjEsNDQ3NjQsNDQ3NzYsNDQ3NzksNDQ3ODEsNDQ3ODgsNDQ3OTIsNDQ3OTYsNDQ4MDcs''@;'; put 'put ''NDQ4MDgsNDQ4MTMsNDQ4MTYsNDQ4NDQsNDQ4NDUsNDQ4NDgsNDQ4NTAsNDQ4NTIsNDQ4NjAsNDQ4NjEsNDQ4NjMsNDQ4NjUsNDQ4NjYsNDQ4NjcsNDQ4NzIsNDQ4NzMsNDQ4ODAsNDQ4OTIsNDQ4OTMsNDQ5MDAsNDQ5MDEsNDQ5MjEsNDQ5MjgsNDQ5MzIsNDQ5MzYsNDQ5NDQsNDQ5NDUsNDQ5''@;'; put 'put ''NDksNDQ5NTYsNDQ5ODQsNDQ5ODUsNDQ5ODgsNDQ5OTIsNDQ5OTksNDVlMyw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0''@;'; put 'put ''NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIwMCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIwNSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIx''@;'; put 'put ''MSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1''@;'; put 'put ''MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2''@;'; put 'put ''OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0''@;'; put 'put ''NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIyOCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIzNSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1''@;'; put 'put ''Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0''@;'; put 'put ''NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQzMyw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2''@;'; put 'put ''NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1''@;'; put 'put ''MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMzNSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0''@;'; put 'put ''OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1''@;'; put 'put ''MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3''@;'; put 'put ''Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0''@;'; put 'put ''NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgw''@;'; put 'put ''Niw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0''@;'; put 'put ''NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQxMCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQxOCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQy''@;'; put 'put ''NSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1''@;'; put 'put ''MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5''@;'; put 'put ''Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0''@;'; put 'put ''NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAzOSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjEx''@;'; put 'put ''Miw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0''@;'; put 'put ''NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUx''@;'; put 'put ''MCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2''@;'; put 'put ''NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1''@;'; put 'put ''MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQxMiw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQyOSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUw''@;'; put 'put ''MCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0''@;'; put 'put ''NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0Njky''@;'; put 'put ''NCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1''@;'; put 'put ''MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYzOCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0''@;'; put 'put ''NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1MzcwMCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1Mzcw''@;'; put 'put ''Niw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0N2UzLDQ3MDAxLDQ3MDA0LDQ3MDA4LDQ3MDE2LDQ3MDE3LDQ3MDE5LDQ3MDIwLDQ3MDIxLDQ3MDI4LDQ3MDI5LDQ3MDMyLDQ3MDQ3LDQ3MDQ5LDQ3MDg0LDQ3MDg1LDQ3MDg4LDQ3MDkyLDQ3MTAwLDQ3MTAxLDQ3MTAzLDQ3MTA0LDQ3''@;'; put 'put ''MTA1LDQ3MTExLDQ3MTEyLDQ3MTEzLDQ3MTE2LDQ3MTIwLDQ3MTI4LDQ3MTI5LDQ3MTMxLDQ3MTMzLDQ3MTQwLDQ3MTQxLDQ3MTQ0LDQ3MTQ4LDQ3MTU2LDQ3MTU3LDQ3MTU5LDQ3MTYwLDQ3MTYxLDQ3MTY4LDQ3MTcyLDQ3MTg1LDQ3MTg3LDQ3MTk2LDQ3MTk3LDQ3MjAwLDQ3MjA0LDQ3MjEy''@;'; put 'put ''LDQ3MjEzLDQ3MjE1LDQ3MjE3LDQ3MjI0LDQ3MjI4LDQ3MjQ1LDQ3MjcyLDQ3MjgwLDQ3Mjg0LDQ3Mjg4LDQ3Mjk2LDQ3Mjk3LDQ3Mjk5LDQ3MzAxLDQ3MzA4LDQ3MzEyLDQ3MzE2LDQ3MzI1LDQ3MzI3LDQ3MzI5LDQ3MzM2LDQ3MzM3LDQ3MzQwLDQ3MzQ0LDQ3MzUyLDQ3MzUzLDQ3MzU1LDQ3''@;'; put 'put ''MzU3LDQ3MzY0LDQ3Mzg0LDQ3MzkyLDQ3NDIwLDQ3NDIxLDQ3NDI0LDQ3NDI4LDQ3NDM2LDQ3NDM5LDQ3NDQxLDQ3NDQ4LDQ3NDQ5LDQ3NDUyLDQ3NDU2LDQ3NDY0LDQ3NDY1LDUzNzEyLDUzNzEzLDUzNzE0LDUzNzE1LDUzNzE2LDUzNzE3LDUzNzE4LDUzNzE5LDUzNzIxLDUzNzIyLDUzNzIz''@;'; put 'put ''LDUzNzI0LDUzNzI1LDUzNzI2LDUzNzI3LDUzNzI4LDUzNzI5LDUzNzMwLDUzNzMxLDUzNzMyLDUzNzMzLDUzNzM0LDUzNzM1LDUzNzM2LDUzNzM3LDUzNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzM5LDUzNzQwLDUzNzQxLDUzNzQyLDUzNzQzLDUzNzQ0LDUzNzQ1LDUz''@;'; put 'put ''NzQ2LDUzNzQ3LDUzNzQ5LDUzNzUwLDUzNzUxLDUzNzUzLDUzNzU0LDUzNzU1LDUzNzU2LDUzNzU3LDUzNzU4LDUzNzU5LDUzNzYwLDUzNzYxLDUzNzYyLDUzNzYzLDUzNzY0LDUzNzY1LDUzNzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzY4LDUzNzcwLDUzNzcxLDUzNzcy''@;'; put 'put ''LDUzNzczLDUzNzc0LDUzNzc1LDUzNzc3LDUzNzc4LDUzNzc5LDUzNzgwLDUzNzgxLDUzNzgyLDUzNzgzLDUzNzg0LDUzNzg1LDUzNzg2LDUzNzg3LDUzNzg4LDUzNzg5LDUzNzkwLDUzNzkxLDUzNzkyLDUzNzkzLDUzNzk0LDUzNzk1LDUzNzk2LDUzNzk3LDUzNzk4LDUzNzk5LDUzODAwLDUz''@;'; put 'put ''ODAxLDQ3NDY3LDQ3NDY5LDQ3NDc2LDQ3NDc3LDQ3NDgwLDQ3NDg0LDQ3NDkyLDQ3NDkzLDQ3NDk1LDQ3NDk3LDQ3NDk4LDQ3NTAxLDQ3NTAyLDQ3NTMyLDQ3NTMzLDQ3NTM2LDQ3NTQwLDQ3NTQ4LDQ3NTQ5LDQ3NTUxLDQ3NTUzLDQ3NTYwLDQ3NTYxLDQ3NTY0LDQ3NTY2LDQ3NTY3LDQ3NTY4''@;'; put 'put ''LDQ3NTY5LDQ3NTcwLDQ3NTc2LDQ3NTc3LDQ3NTc5LDQ3NTgxLDQ3NTgyLDQ3NTg1LDQ3NTg3LDQ3NTg4LDQ3NTg5LDQ3NTkyLDQ3NTk2LDQ3NjA0LDQ3NjA1LDQ3NjA3LDQ3NjA4LDQ3NjA5LDQ3NjEwLDQ3NjE2LDQ3NjE3LDQ3NjI0LDQ3NjM3LDQ3NjcyLDQ3NjczLDQ3Njc2LDQ3NjgwLDQ3''@;'; put 'put ''NjgyLDQ3Njg4LDQ3Njg5LDQ3NjkxLDQ3NjkzLDQ3Njk0LDQ3Njk5LDQ3NzAwLDQ3NzAxLDQ3NzA0LDQ3NzA4LDQ3NzE2LDQ3NzE3LDQ3NzE5LDQ3NzIwLDQ3NzIxLDQ3NzI4LDQ3NzI5LDQ3NzMyLDQ3NzM2LDQ3NzQ3LDQ3NzQ4LDQ3NzQ5LDQ3NzUxLDQ3NzU2LDQ3Nzg0LDQ3Nzg1LDQ3Nzg3''@;'; put 'put ''LDQ3Nzg4LDQ3NzkyLDQ3Nzk0LDQ3ODAwLDQ3ODAxLDQ3ODAzLDQ3ODA1LDQ3ODEyLDQ3ODE2LDQ3ODMyLDQ3ODMzLDQ3ODY4LDUzODAyLDUzODAzLDUzODA2LDUzODA3LDUzODA5LDUzODEwLDUzODExLDUzODEzLDUzODE0LDUzODE1LDUzODE2LDUzODE3LDUzODE4LDUzODE5LDUzODIyLDUz''@;'; put 'put ''ODI0LDUzODI2LDUzODI3LDUzODI4LDUzODI5LDUzODMwLDUzODMxLDUzODMzLDUzODM0LDUzODM1LDUzODM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODM3LDUzODM4LDUzODM5LDUzODQwLDUzODQxLDUzODQyLDUzODQzLDUzODQ0LDUzODQ1LDUzODQ2LDUzODQ3LDUzODQ4''@;'; put 'put ''LDUzODQ5LDUzODUwLDUzODUxLDUzODUzLDUzODU0LDUzODU1LDUzODU2LDUzODU3LDUzODU4LDUzODU5LDUzODYxLDUzODYyLDUzODYzLDUzODY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODY1LDUzODY2LDUzODY3LDUzODY4LDUzODY5LDUzODcwLDUzODcxLDUzODcyLDUz''@;'; put 'put ''ODczLDUzODc0LDUzODc1LDUzODc2LDUzODc3LDUzODc4LDUzODc5LDUzODgwLDUzODgxLDUzODgyLDUzODgzLDUzODg0LDUzODg1LDUzODg2LDUzODg3LDUzODkwLDUzODkxLDUzODkzLDUzODk0LDUzODk1LDUzODk3LDUzODk4LDUzODk5LDUzOTAwLDQ3ODcyLDQ3ODc2LDQ3ODg1LDQ3ODg3''@;'; put 'put ''LDQ3ODg5LDQ3ODk2LDQ3OTAwLDQ3OTA0LDQ3OTEzLDQ3OTE1LDQ3OTI0LDQ3OTI1LDQ3OTI2LDQ3OTI4LDQ3OTMxLDQ3OTMyLDQ3OTMzLDQ3OTM0LDQ3OTQwLDQ3OTQxLDQ3OTQzLDQ3OTQ1LDQ3OTQ5LDQ3OTUxLDQ3OTUyLDQ3OTU2LDQ3OTYwLDQ3OTY5LDQ3OTcxLDQ3OTgwLDQ4MDA4LDQ4''@;'; put 'put ''MDEyLDQ4MDE2LDQ4MDM2LDQ4MDQwLDQ4MDQ0LDQ4MDUyLDQ4MDU1LDQ4MDY0LDQ4MDY4LDQ4MDcyLDQ4MDgwLDQ4MDgzLDQ4MTIwLDQ4MTIxLDQ4MTI0LDQ4MTI3LDQ4MTI4LDQ4MTMwLDQ4MTM2LDQ4MTM3LDQ4MTM5LDQ4MTQwLDQ4MTQxLDQ4MTQzLDQ4MTQ1LDQ4MTQ4LDQ4MTQ5LDQ4MTUw''@;'; put 'put ''LDQ4MTUxLDQ4MTUyLDQ4MTU1LDQ4MTU2LDQ4MTU3LDQ4MTU4LDQ4MTU5LDQ4MTY0LDQ4MTY1LDQ4MTY3LDQ4MTY5LDQ4MTczLDQ4MTc2LDQ4MTc3LDQ4MTgwLDQ4MTg0LDQ4MTkyLDQ4MTkzLDQ4MTk1LDQ4MTk2LDQ4MTk3LDQ4MjAxLDQ4MjA0LDQ4MjA1LDQ4MjA4LDQ4MjIxLDQ4MjYwLDQ4''@;'; put 'put ''MjYxLDQ4MjY0LDQ4MjY3LDQ4MjY4LDQ4MjcwLDQ4Mjc2LDQ4Mjc3LDQ4Mjc5LDUzOTAxLDUzOTAyLDUzOTAzLDUzOTA2LDUzOTA3LDUzOTA4LDUzOTEwLDUzOTExLDUzOTEyLDUzOTEzLDUzOTE0LDUzOTE1LDUzOTE3LDUzOTE4LDUzOTE5LDUzOTIxLDUzOTIyLDUzOTIzLDUzOTI1LDUzOTI2''@;'; put 'put ''LDUzOTI3LDUzOTI4LDUzOTI5LDUzOTMwLDUzOTMxLDUzOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTM0LDUzOTM1LDUzOTM2LDUzOTM4LDUzOTM5LDUzOTQwLDUzOTQxLDUzOTQyLDUzOTQzLDUzOTQ2LDUzOTQ3LDUzOTQ5LDUzOTUwLDUzOTUzLDUzOTU1LDUzOTU2LDUz''@;'; put 'put ''OTU3LDUzOTU4LDUzOTU5LDUzOTYyLDUzOTY0LDUzOTY1LDUzOTY2LDUzOTY3LDUzOTY4LDUzOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTcwLDUzOTcxLDUzOTczLDUzOTc0LDUzOTc1LDUzOTc3LDUzOTc4LDUzOTc5LDUzOTgxLDUzOTgyLDUzOTgzLDUzOTg0LDUzOTg1''@;'; put 'put ''LDUzOTg2LDUzOTg3LDUzOTkwLDUzOTkxLDUzOTkyLDUzOTkzLDUzOTk0LDUzOTk1LDUzOTk2LDUzOTk3LDUzOTk4LDUzOTk5LDU0MDAyLDU0MDAzLDU0MDA1LDU0MDA2LDU0MDA3LDU0MDA5LDU0MDEwLDQ4MjgxLDQ4MjgyLDQ4Mjg4LDQ4Mjg5LDQ4MjkyLDQ4Mjk1LDQ4Mjk2LDQ4MzA0LDQ4''@;'; put 'put ''MzA1LDQ4MzA3LDQ4MzA4LDQ4MzA5LDQ4MzE2LDQ4MzE3LDQ4MzIwLDQ4MzI0LDQ4MzMzLDQ4MzM1LDQ4MzM2LDQ4MzM3LDQ4MzQxLDQ4MzQ0LDQ4MzQ4LDQ4MzcyLDQ4MzczLDQ4Mzc0LDQ4Mzc2LDQ4MzgwLDQ4Mzg4LDQ4Mzg5LDQ4MzkxLDQ4MzkzLDQ4NDAwLDQ4NDA0LDQ4NDIwLDQ4NDI4''@;'; put 'put ''LDQ4NDQ4LDQ4NDU2LDQ4NDU3LDQ4NDYwLDQ4NDY0LDQ4NDcyLDQ4NDczLDQ4NDg0LDQ4NDg4LDQ4NTEyLDQ4NTEzLDQ4NTE2LDQ4NTE5LDQ4NTIwLDQ4NTIxLDQ4NTIyLDQ4NTI4LDQ4NTI5LDQ4NTMxLDQ4NTMzLDQ4NTM3LDQ4NTM4LDQ4NTQwLDQ4NTQ4LDQ4NTYwLDQ4NTY4LDQ4NTk2LDQ4''@;'; put 'put ''NTk3LDQ4NjAwLDQ4NjA0LDQ4NjE3LDQ4NjI0LDQ4NjI4LDQ4NjMyLDQ4NjQwLDQ4NjQzLDQ4NjQ1LDQ4NjUyLDQ4NjUzLDQ4NjU2LDQ4NjYwLDQ4NjY4LDQ4NjY5LDQ4NjcxLDQ4NzA4LDQ4NzA5LDQ4NzEyLDQ4NzE2LDQ4NzE4LDQ4NzI0LDQ4NzI1LDQ4NzI3LDQ4NzI5LDQ4NzMwLDQ4NzMx''@;'; put 'put ''LDQ4NzM2LDQ4NzM3LDQ4NzQwLDU0MDExLDU0MDEyLDU0MDEzLDU0MDE0LDU0MDE1LDU0MDE4LDU0MDIwLDU0MDIyLDU0MDIzLDU0MDI0LDU0MDI1LDU0MDI2LDU0MDI3LDU0MDMxLDU0MDMzLDU0MDM0LDU0MDM1LDU0MDM3LDU0MDM5LDU0MDQwLDU0MDQxLDU0MDQyLDU0MDQzLDU0MDQ2LDU0''@;'; put 'put ''MDUwLDU0MDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDUyLDU0MDU0LDU0MDU1LDU0MDU4LDU0MDU5LDU0MDYxLDU0MDYyLDU0MDYzLDU0MDY1LDU0MDY2LDU0MDY3LDU0MDY4LDU0MDY5LDU0MDcwLDU0MDcxLDU0MDc0LDU0MDc4LDU0MDc5LDU0MDgwLDU0MDgxLDU0MDgy''@;'; put 'put ''LDU0MDgzLDU0MDg2LDU0MDg3LDU0MDg4LDU0MDg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDkwLDU0MDkxLDU0MDkyLDU0MDkzLDU0MDk0LDU0MDk1LDU0MDk2LDU0MDk3LDU0MDk4LDU0MDk5LDU0MTAwLDU0MTAxLDU0MTAyLDU0MTAzLDU0MTA0LDU0MTA1LDU0MTA2LDU0''@;'; put 'put ''MTA3LDU0MTA4LDU0MTA5LDU0MTEwLDU0MTExLDU0MTEyLDU0MTEzLDU0MTE0LDU0MTE1LDU0MTE2LDU0MTE3LDU0MTE4LDU0MTE5LDU0MTIwLDU0MTIxLDQ4NzQ0LDQ4NzQ2LDQ4NzUyLDQ4NzUzLDQ4NzU1LDQ4NzU2LDQ4NzU3LDQ4NzYzLDQ4NzY0LDQ4NzY1LDQ4NzY4LDQ4NzcyLDQ4Nzgw''@;'; put 'put ''LDQ4NzgxLDQ4NzgzLDQ4Nzg0LDQ4Nzg1LDQ4NzkyLDQ4NzkzLDQ4ODA4LDQ4ODQ4LDQ4ODQ5LDQ4ODUyLDQ4ODU1LDQ4ODU2LDQ4ODY0LDQ4ODY3LDQ4ODY4LDQ4ODY5LDQ4ODc2LDQ4ODk3LDQ4OTA0LDQ4OTA1LDQ4OTIwLDQ4OTIxLDQ4OTIzLDQ4OTI0LDQ4OTI1LDQ4OTYwLDQ4OTYxLDQ4''@;'; put 'put ''OTY0LDQ4OTY4LDQ4OTc2LDQ4OTc3LDQ4OTgxLDQ5MDQ0LDQ5MDcyLDQ5MDkzLDQ5MTAwLDQ5MTAxLDQ5MTA0LDQ5MTA4LDQ5MTE2LDQ5MTE5LDQ5MTIxLDQ5MjEyLDQ5MjMzLDQ5MjQwLDQ5MjQ0LDQ5MjQ4LDQ5MjU2LDQ5MjU3LDQ5Mjk2LDQ5Mjk3LDQ5MzAwLDQ5MzA0LDQ5MzEyLDQ5MzEz''@;'; put 'put ''LDQ5MzE1LDQ5MzE3LDQ5MzI0LDQ5MzI1LDQ5MzI3LDQ5MzI4LDQ5MzMxLDQ5MzMyLDQ5MzMzLDQ5MzM0LDQ5MzQwLDQ5MzQxLDQ5MzQzLDQ5MzQ0LDQ5MzQ1LDQ5MzQ5LDQ5MzUyLDQ5MzUzLDQ5MzU2LDQ5MzYwLDQ5MzY4LDQ5MzY5LDQ5MzcxLDQ5MzcyLDQ5MzczLDQ5MzgwLDU0MTIyLDU0''@;'; put 'put ''MTIzLDU0MTI0LDU0MTI1LDU0MTI2LDU0MTI3LDU0MTI4LDU0MTI5LDU0MTMwLDU0MTMxLDU0MTMyLDU0MTMzLDU0MTM0LDU0MTM1LDU0MTM2LDU0MTM3LDU0MTM4LDU0MTM5LDU0MTQyLDU0MTQzLDU0MTQ1LDU0MTQ2LDU0MTQ3LDU0MTQ5LDU0MTUwLDU0MTUxLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDU0MTUyLDU0MTUzLDU0MTU0LDU0MTU1LDU0MTU4LDU0MTYyLDU0MTYzLDU0MTY0LDU0MTY1LDU0MTY2LDU0MTY3LDU0MTcwLDU0MTcxLDU0MTczLDU0MTc0LDU0MTc1LDU0MTc3LDU0MTc4LDU0MTc5LDU0MTgwLDU0MTgxLDU0MTgyLDU0MTgzLDU0MTg2LDU0MTg4LDU0''@;'; put 'put ''MTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTkxLDU0MTkyLDU0MTkzLDU0MTk0LDU0MTk1LDU0MTk3LDU0MTk4LDU0MTk5LDU0MjAxLDU0MjAyLDU0MjAzLDU0MjA1LDU0MjA2LDU0MjA3LDU0MjA4LDU0MjA5LDU0MjEwLDU0MjExLDU0MjE0LDU0MjE1LDU0MjE4LDU0MjE5''@;'; put 'put ''LDU0MjIwLDU0MjIxLDU0MjIyLDU0MjIzLDU0MjI1LDU0MjI2LDU0MjI3LDU0MjI4LDU0MjI5LDU0MjMwLDQ5MzgxLDQ5Mzg0LDQ5Mzg4LDQ5Mzk2LDQ5Mzk3LDQ5Mzk5LDQ5NDAxLDQ5NDA4LDQ5NDEyLDQ5NDE2LDQ5NDI0LDQ5NDI5LDQ5NDM2LDQ5NDM3LDQ5NDM4LDQ5NDM5LDQ5NDQwLDQ5''@;'; put 'put ''NDQzLDQ5NDQ0LDQ5NDQ2LDQ5NDQ3LDQ5NDUyLDQ5NDUzLDQ5NDU1LDQ5NDU2LDQ5NDU3LDQ5NDYyLDQ5NDY0LDQ5NDY1LDQ5NDY4LDQ5NDcyLDQ5NDgwLDQ5NDgxLDQ5NDgzLDQ5NDg0LDQ5NDg1LDQ5NDkyLDQ5NDkzLDQ5NDk2LDQ5NTAwLDQ5NTA4LDQ5NTA5LDQ5NTExLDQ5NTEyLDQ5NTEz''@;'; put 'put ''LDQ5NTIwLDQ5NTI0LDQ5NTI4LDQ5NTQxLDQ5NTQ4LDQ5NTQ5LDQ5NTUwLDQ5NTUyLDQ5NTU2LDQ5NTU4LDQ5NTY0LDQ5NTY1LDQ5NTY3LDQ5NTY5LDQ5NTczLDQ5NTc2LDQ5NTc3LDQ5NTgwLDQ5NTg0LDQ5NTk3LDQ5NjA0LDQ5NjA4LDQ5NjEyLDQ5NjIwLDQ5NjIzLDQ5NjI0LDQ5NjMyLDQ5''@;'; put 'put ''NjM2LDQ5NjQwLDQ5NjQ4LDQ5NjQ5LDQ5NjUxLDQ5NjYwLDQ5NjYxLDQ5NjY0LDQ5NjY4LDQ5Njc2LDQ5Njc3LDQ5Njc5LDQ5NjgxLDQ5Njg4LDQ5Njg5LDQ5NjkyLDQ5Njk1LDQ5Njk2LDQ5NzA0LDQ5NzA1LDQ5NzA3LDQ5NzA5LDU0MjMxLDU0MjMzLDU0MjM0LDU0MjM1LDU0MjM2LDU0MjM3''@;'; put 'put ''LDU0MjM4LDU0MjM5LDU0MjQwLDU0MjQyLDU0MjQ0LDU0MjQ1LDU0MjQ2LDU0MjQ3LDU0MjQ4LDU0MjQ5LDU0MjUwLDU0MjUxLDU0MjU0LDU0MjU1LDU0MjU3LDU0MjU4LDU0MjU5LDU0MjYxLDU0MjYyLDU0MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjY0LDU0MjY1LDU0''@;'; put 'put ''MjY2LDU0MjY3LDU0MjcwLDU0MjcyLDU0Mjc0LDU0Mjc1LDU0Mjc2LDU0Mjc3LDU0Mjc4LDU0Mjc5LDU0MjgxLDU0MjgyLDU0MjgzLDU0Mjg0LDU0Mjg1LDU0Mjg2LDU0Mjg3LDU0Mjg4LDU0Mjg5LDU0MjkwLDU0MjkxLDU0MjkyLDU0MjkzLDU0Mjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDU0Mjk1LDU0Mjk2LDU0Mjk3LDU0Mjk4LDU0Mjk5LDU0MzAwLDU0MzAyLDU0MzAzLDU0MzA0LDU0MzA1LDU0MzA2LDU0MzA3LDU0MzA4LDU0MzA5LDU0MzEwLDU0MzExLDU0MzEyLDU0MzEzLDU0MzE0LDU0MzE1LDU0MzE2LDU0MzE3LDU0MzE4LDU0MzE5LDU0MzIwLDU0MzIxLDU0''@;'; put 'put ''MzIyLDU0MzIzLDU0MzI0LDU0MzI1LDU0MzI2LDU0MzI3LDQ5NzExLDQ5NzEzLDQ5NzE0LDQ5NzE2LDQ5NzM2LDQ5NzQ0LDQ5NzQ1LDQ5NzQ4LDQ5NzUyLDQ5NzYwLDQ5NzY1LDQ5NzcyLDQ5NzczLDQ5Nzc2LDQ5NzgwLDQ5Nzg4LDQ5Nzg5LDQ5NzkxLDQ5NzkzLDQ5ODAwLDQ5ODAxLDQ5ODA4''@;'; put 'put ''LDQ5ODE2LDQ5ODE5LDQ5ODIxLDQ5ODI4LDQ5ODI5LDQ5ODMyLDQ5ODM2LDQ5ODM3LDQ5ODQ0LDQ5ODQ1LDQ5ODQ3LDQ5ODQ5LDQ5ODg0LDQ5ODg1LDQ5ODg4LDQ5ODkxLDQ5ODkyLDQ5ODk5LDQ5OTAwLDQ5OTAxLDQ5OTAzLDQ5OTA1LDQ5OTEwLDQ5OTEyLDQ5OTEzLDQ5OTE1LDQ5OTE2LDQ5''@;'; put 'put ''OTIwLDQ5OTI4LDQ5OTI5LDQ5OTMyLDQ5OTMzLDQ5OTM5LDQ5OTQwLDQ5OTQxLDQ5OTQ0LDQ5OTQ4LDQ5OTU2LDQ5OTU3LDQ5OTYwLDQ5OTYxLDQ5OTg5LDUwMDI0LDUwMDI1LDUwMDI4LDUwMDMyLDUwMDM0LDUwMDQwLDUwMDQxLDUwMDQ0LDUwMDQ1LDUwMDUyLDUwMDU2LDUwMDYwLDUwMTEy''@;'; put 'put ''LDUwMTM2LDUwMTM3LDUwMTQwLDUwMTQzLDUwMTQ0LDUwMTQ2LDUwMTUyLDUwMTUzLDUwMTU3LDUwMTY0LDUwMTY1LDUwMTY4LDUwMTg0LDUwMTkyLDUwMjEyLDUwMjIwLDUwMjI0LDU0MzI4LDU0MzI5LDU0MzMwLDU0MzMxLDU0MzMyLDU0MzMzLDU0MzM0LDU0MzM1LDU0MzM3LDU0MzM4LDU0''@;'; put 'put ''MzM5LDU0MzQxLDU0MzQyLDU0MzQzLDU0MzQ0LDU0MzQ1LDU0MzQ2LDU0MzQ3LDU0MzQ4LDU0MzQ5LDU0MzUwLDU0MzUxLDU0MzUyLDU0MzUzLDU0MzU0LDU0MzU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MzU2LDU0MzU3LDU0MzU4LDU0MzU5LDU0MzYwLDU0MzYxLDU0MzYy''@;'; put 'put ''LDU0MzYzLDU0MzY1LDU0MzY2LDU0MzY3LDU0MzY5LDU0MzcwLDU0MzcxLDU0MzczLDU0Mzc0LDU0Mzc1LDU0Mzc2LDU0Mzc3LDU0Mzc4LDU0Mzc5LDU0MzgwLDU0MzgyLDU0Mzg0LDU0Mzg1LDU0Mzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mzg3LDU0Mzg4LDU0Mzg5LDU0''@;'; put 'put ''MzkwLDU0MzkxLDU0Mzk0LDU0Mzk1LDU0Mzk3LDU0Mzk4LDU0NDAxLDU0NDAzLDU0NDA0LDU0NDA1LDU0NDA2LDU0NDA3LDU0NDEwLDU0NDEyLDU0NDE0LDU0NDE1LDU0NDE2LDU0NDE3LDU0NDE4LDU0NDE5LDU0NDIxLDU0NDIyLDU0NDIzLDU0NDI0LDU0NDI1LDU0NDI2LDU0NDI3LDU0NDI4''@;'; put 'put ''LDU0NDI5LDUwMjI4LDUwMjM2LDUwMjM3LDUwMjQ4LDUwMjc2LDUwMjc3LDUwMjgwLDUwMjg0LDUwMjkyLDUwMjkzLDUwMjk3LDUwMzA0LDUwMzI0LDUwMzMyLDUwMzYwLDUwMzY0LDUwNDA5LDUwNDE2LDUwNDE3LDUwNDIwLDUwNDI0LDUwNDI2LDUwNDMxLDUwNDMyLDUwNDMzLDUwNDQ0LDUw''@;'; put 'put ''NDQ4LDUwNDUyLDUwNDYwLDUwNDcyLDUwNDczLDUwNDc2LDUwNDgwLDUwNDg4LDUwNDg5LDUwNDkxLDUwNDkzLDUwNTAwLDUwNTAxLDUwNTA0LDUwNTA1LDUwNTA2LDUwNTA4LDUwNTA5LDUwNTEwLDUwNTE1LDUwNTE2LDUwNTE3LDUwNTE5LDUwNTIwLDUwNTIxLDUwNTI1LDUwNTI2LDUwNTI4''@;'; put 'put ''LDUwNTI5LDUwNTMyLDUwNTM2LDUwNTQ0LDUwNTQ1LDUwNTQ3LDUwNTQ4LDUwNTQ5LDUwNTU2LDUwNTU3LDUwNTYwLDUwNTY0LDUwNTY3LDUwNTcyLDUwNTczLDUwNTc1LDUwNTc3LDUwNTgxLDUwNTgzLDUwNTg0LDUwNTg4LDUwNTkyLDUwNjAxLDUwNjEyLDUwNjEzLDUwNjE2LDUwNjE3LDUw''@;'; put 'put ''NjE5LDUwNjIwLDUwNjIxLDUwNjIyLDUwNjI4LDUwNjI5LDUwNjMwLDUwNjMxLDUwNjMyLDUwNjMzLDUwNjM0LDUwNjM2LDUwNjM4LDU0NDMwLDU0NDMxLDU0NDMyLDU0NDMzLDU0NDM0LDU0NDM1LDU0NDM2LDU0NDM3LDU0NDM4LDU0NDM5LDU0NDQwLDU0NDQyLDU0NDQzLDU0NDQ0LDU0NDQ1''@;'; put 'put ''LDU0NDQ2LDU0NDQ3LDU0NDQ4LDU0NDQ5LDU0NDUwLDU0NDUxLDU0NDUyLDU0NDUzLDU0NDU0LDU0NDU1LDU0NDU2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDU3LDU0NDU4LDU0NDU5LDU0NDYwLDU0NDYxLDU0NDYyLDU0NDYzLDU0NDY0LDU0NDY1LDU0NDY2LDU0NDY3LDU0''@;'; put 'put ''NDY4LDU0NDY5LDU0NDcwLDU0NDcxLDU0NDcyLDU0NDczLDU0NDc0LDU0NDc1LDU0NDc3LDU0NDc4LDU0NDc5LDU0NDgxLDU0NDgyLDU0NDgzLDU0NDg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDg2LDU0NDg3LDU0NDg4LDU0NDg5LDU0NDkwLDU0NDkxLDU0NDkzLDU0NDk0''@;'; put 'put ''LDU0NDk2LDU0NDk3LDU0NDk4LDU0NDk5LDU0NTAwLDU0NTAxLDU0NTAyLDU0NTAzLDU0NTA1LDU0NTA2LDU0NTA3LDU0NTA5LDU0NTEwLDU0NTExLDU0NTEzLDU0NTE0LDU0NTE1LDU0NTE2LDU0NTE3LDU0NTE4LDU0NTE5LDU0NTIxLDU0NTIyLDU0NTI0LDUwNjQwLDUwNjQxLDUwNjQ0LDUw''@;'; put 'put ''NjQ4LDUwNjU2LDUwNjU3LDUwNjU5LDUwNjYxLDUwNjY4LDUwNjY5LDUwNjcwLDUwNjcyLDUwNjc2LDUwNjc4LDUwNjc5LDUwNjg0LDUwNjg1LDUwNjg2LDUwNjg3LDUwNjg4LDUwNjg5LDUwNjkzLDUwNjk0LDUwNjk1LDUwNjk2LDUwNzAwLDUwNzA0LDUwNzEyLDUwNzEzLDUwNzE1LDUwNzE2''@;'; put 'put ''LDUwNzI0LDUwNzI1LDUwNzI4LDUwNzMyLDUwNzMzLDUwNzM0LDUwNzM2LDUwNzM5LDUwNzQwLDUwNzQxLDUwNzQzLDUwNzQ1LDUwNzQ3LDUwNzUyLDUwNzUzLDUwNzU2LDUwNzYwLDUwNzY4LDUwNzY5LDUwNzcxLDUwNzcyLDUwNzczLDUwNzgwLDUwNzgxLDUwNzg0LDUwNzk2LDUwNzk5LDUw''@;'; put 'put ''ODAxLDUwODA4LDUwODA5LDUwODEyLDUwODE2LDUwODI0LDUwODI1LDUwODI3LDUwODI5LDUwODM2LDUwODM3LDUwODQwLDUwODQ0LDUwODUyLDUwODUzLDUwODU1LDUwODU3LDUwODY0LDUwODY1LDUwODY4LDUwODcyLDUwODczLDUwODc0LDUwODgwLDUwODgxLDUwODgzLDUwODg1LDUwODky''@;'; put 'put ''LDUwODkzLDUwODk2LDUwOTAwLDUwOTA4LDUwOTA5LDUwOTEyLDUwOTEzLDUwOTIwLDU0NTI2LDU0NTI3LDU0NTI4LDU0NTI5LDU0NTMwLDU0NTMxLDU0NTMzLDU0NTM0LDU0NTM1LDU0NTM3LDU0NTM4LDU0NTM5LDU0NTQxLDU0NTQyLDU0NTQzLDU0NTQ0LDU0NTQ1LDU0NTQ2LDU0NTQ3LDU0''@;'; put 'put ''NTUwLDU0NTUyLDU0NTUzLDU0NTU0LDU0NTU1LDU0NTU2LDU0NTU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTU4LDU0NTU5LDU0NTYwLDU0NTYxLDU0NTYyLDU0NTYzLDU0NTY0LDU0NTY1LDU0NTY2LDU0NTY3LDU0NTY4LDU0NTY5LDU0NTcwLDU0NTcxLDU0NTcyLDU0NTcz''@;'; put 'put ''LDU0NTc0LDU0NTc1LDU0NTc2LDU0NTc3LDU0NTc4LDU0NTc5LDU0NTgwLDU0NTgxLDU0NTgyLDU0NTgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTg0LDU0NTg1LDU0NTg2LDU0NTg3LDU0NTkwLDU0NTkxLDU0NTkzLDU0NTk0LDU0NTk1LDU0NTk3LDU0NTk4LDU0NTk5LDU0''@;'; put 'put ''NjAwLDU0NjAxLDU0NjAyLDU0NjAzLDU0NjA2LDU0NjA4LDU0NjEwLDU0NjExLDU0NjEyLDU0NjEzLDU0NjE0LDU0NjE1LDU0NjE4LDU0NjE5LDU0NjIxLDU0NjIyLDU0NjIzLDU0NjI1LDU0NjI2LDU0NjI3LDUwOTIxLDUwOTI0LDUwOTI4LDUwOTM2LDUwOTM3LDUwOTQxLDUwOTQ4LDUwOTQ5''@;'; put 'put ''LDUwOTUyLDUwOTU2LDUwOTY0LDUwOTY1LDUwOTY3LDUwOTY5LDUwOTc2LDUwOTc3LDUwOTgwLDUwOTg0LDUwOTkyLDUwOTkzLDUwOTk1LDUwOTk3LDUwOTk5LDUxMDA0LDUxMDA1LDUxMDA4LDUxMDEyLDUxMDE4LDUxMDIwLDUxMDIxLDUxMDIzLDUxMDI1LDUxMDI2LDUxMDI3LDUxMDI4LDUx''@;'; put 'put ''MDI5LDUxMDMwLDUxMDMxLDUxMDMyLDUxMDM2LDUxMDQwLDUxMDQ4LDUxMDUxLDUxMDYwLDUxMDYxLDUxMDY0LDUxMDY4LDUxMDY5LDUxMDcwLDUxMDc1LDUxMDc2LDUxMDc3LDUxMDc5LDUxMDgwLDUxMDgxLDUxMDgyLDUxMDg2LDUxMDg4LDUxMDg5LDUxMDkyLDUxMDk0LDUxMDk1LDUxMDk2''@;'; put 'put ''LDUxMDk4LDUxMTA0LDUxMTA1LDUxMTA3LDUxMTA4LDUxMTA5LDUxMTEwLDUxMTE2LDUxMTE3LDUxMTIwLDUxMTI0LDUxMTMyLDUxMTMzLDUxMTM1LDUxMTM2LDUxMTM3LDUxMTQ0LDUxMTQ1LDUxMTQ4LDUxMTUwLDUxMTUyLDUxMTYwLDUxMTY1LDUxMTcyLDUxMTc2LDUxMTgwLDUxMjAwLDUx''@;'; put 'put ''MjAxLDUxMjA0LDUxMjA4LDUxMjEwLDU0NjI4LDU0NjMwLDU0NjMxLDU0NjM0LDU0NjM2LDU0NjM4LDU0NjM5LDU0NjQwLDU0NjQxLDU0NjQyLDU0NjQzLDU0NjQ2LDU0NjQ3LDU0NjQ5LDU0NjUwLDU0NjUxLDU0NjUzLDU0NjU0LDU0NjU1LDU0NjU2LDU0NjU3LDU0NjU4LDU0NjU5LDU0NjYy''@;'; put 'put ''LDU0NjY2LDU0NjY3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NjY4LDU0NjY5LDU0NjcwLDU0NjcxLDU0NjczLDU0Njc0LDU0Njc1LDU0Njc2LDU0Njc3LDU0Njc4LDU0Njc5LDU0NjgwLDU0NjgxLDU0NjgyLDU0NjgzLDU0Njg0LDU0Njg1LDU0Njg2LDU0Njg3LDU0Njg4LDU0''@;'; put 'put ''Njg5LDU0NjkwLDU0NjkxLDU0NjkyLDU0Njk0LDU0Njk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Njk2LDU0Njk3LDU0Njk4LDU0Njk5LDU0NzAwLDU0NzAxLDU0NzAyLDU0NzAzLDU0NzA0LDU0NzA1LDU0NzA2LDU0NzA3LDU0NzA4LDU0NzA5LDU0NzEwLDU0NzExLDU0NzEy''@;'; put 'put ''LDU0NzEzLDU0NzE0LDU0NzE1LDU0NzE2LDU0NzE3LDU0NzE4LDU0NzE5LDU0NzIwLDU0NzIxLDU0NzIyLDU0NzIzLDU0NzI0LDU0NzI1LDU0NzI2LDU0NzI3LDUxMjE2LDUxMjE3LDUxMjE5LDUxMjIxLDUxMjIyLDUxMjI4LDUxMjI5LDUxMjMyLDUxMjM2LDUxMjQ0LDUxMjQ1LDUxMjQ3LDUx''@;'; put 'put ''MjQ5LDUxMjU2LDUxMjYwLDUxMjY0LDUxMjcyLDUxMjczLDUxMjc2LDUxMjc3LDUxMjg0LDUxMzEyLDUxMzEzLDUxMzE2LDUxMzIwLDUxMzIyLDUxMzI4LDUxMzI5LDUxMzMxLDUxMzMzLDUxMzM0LDUxMzM1LDUxMzM5LDUxMzQwLDUxMzQxLDUxMzQ4LDUxMzU3LDUxMzU5LDUxMzYxLDUxMzY4''@;'; put 'put ''LDUxMzg4LDUxMzg5LDUxMzk2LDUxNDAwLDUxNDA0LDUxNDEyLDUxNDEzLDUxNDE1LDUxNDE3LDUxNDI0LDUxNDI1LDUxNDI4LDUxNDQ1LDUxNDUyLDUxNDUzLDUxNDU2LDUxNDYwLDUxNDYxLDUxNDYyLDUxNDY4LDUxNDY5LDUxNDcxLDUxNDczLDUxNDgwLDUxNTAwLDUxNTA4LDUxNTM2LDUx''@;'; put 'put ''NTM3LDUxNTQwLDUxNTQ0LDUxNTUyLDUxNTUzLDUxNTU1LDUxNTY0LDUxNTY4LDUxNTcyLDUxNTgwLDUxNTkyLDUxNTkzLDUxNTk2LDUxNjAwLDUxNjA4LDUxNjA5LDUxNjExLDUxNjEzLDUxNjQ4LDUxNjQ5LDUxNjUyLDUxNjU1LDUxNjU2LDUxNjU4LDUxNjY0LDUxNjY1LDUxNjY3LDU0NzMw''@;'; put 'put ''LDU0NzMxLDU0NzMzLDU0NzM0LDU0NzM1LDU0NzM3LDU0NzM5LDU0NzQwLDU0NzQxLDU0NzQyLDU0NzQzLDU0NzQ2LDU0NzQ4LDU0NzUwLDU0NzUxLDU0NzUyLDU0NzUzLDU0NzU0LDU0NzU1LDU0NzU4LDU0NzU5LDU0NzYxLDU0NzYyLDU0NzYzLDU0NzY1LDU0NzY2LG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDU0NzY3LDU0NzY4LDU0NzY5LDU0NzcwLDU0NzcxLDU0Nzc0LDU0Nzc2LDU0Nzc4LDU0Nzc5LDU0NzgwLDU0NzgxLDU0NzgyLDU0NzgzLDU0Nzg2LDU0Nzg3LDU0Nzg5LDU0NzkwLDU0NzkxLDU0NzkzLDU0Nzk0LDU0Nzk1LDU0Nzk2LDU0Nzk3LDU0Nzk4LDU0Nzk5''@;'; put 'put ''LDU0ODAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODA2LDU0ODA3LDU0ODA4LDU0ODA5LDU0ODEwLDU0ODExLDU0ODEzLDU0ODE0LDU0ODE1LDU0ODE3LDU0ODE4LDU0ODE5LDU0ODIxLDU0ODIyLDU0ODIzLDU0ODI0LDU0ODI1LDU0ODI2LDU0ODI3LDU0ODI4LDU0ODMwLDU0''@;'; put 'put ''ODMxLDU0ODMyLDU0ODMzLDU0ODM0LDU0ODM1LDU0ODM2LDU0ODM3LDU0ODM4LDU0ODM5LDU0ODQyLDU0ODQzLDUxNjY5LDUxNjcwLDUxNjczLDUxNjc0LDUxNjc2LDUxNjc3LDUxNjgwLDUxNjgyLDUxNjg0LDUxNjg3LDUxNjkyLDUxNjkzLDUxNjk1LDUxNjk2LDUxNjk3LDUxNzA0LDUxNzA1''@;'; put 'put ''LDUxNzA4LDUxNzEyLDUxNzIwLDUxNzIxLDUxNzIzLDUxNzI0LDUxNzI1LDUxNzMyLDUxNzM2LDUxNzUzLDUxNzg4LDUxNzg5LDUxNzkyLDUxNzk2LDUxODA0LDUxODA1LDUxODA3LDUxODA4LDUxODA5LDUxODE2LDUxODM3LDUxODQ0LDUxODY0LDUxOTAwLDUxOTAxLDUxOTA0LDUxOTA4LDUx''@;'; put 'put ''OTE2LDUxOTE3LDUxOTE5LDUxOTIxLDUxOTIzLDUxOTI4LDUxOTI5LDUxOTM2LDUxOTQ4LDUxOTU2LDUxOTc2LDUxOTg0LDUxOTg4LDUxOTkyLDUyZTMsNTIwMDEsNTIwMzMsNTIwNDAsNTIwNDEsNTIwNDQsNTIwNDgsNTIwNTYsNTIwNTcsNTIwNjEsNTIwNjgsNTIwODgsNTIwODksNTIxMjQs''@;'; put 'put ''NTIxNTIsNTIxODAsNTIxOTYsNTIxOTksNTIyMDEsNTIyMzYsNTIyMzcsNTIyNDAsNTIyNDQsNTIyNTIsNTIyNTMsNTIyNTcsNTIyNTgsNTIyNjMsNTIyNjQsNTIyNjUsNTIyNjgsNTIyNzAsNTIyNzIsNTIyODAsNTIyODEsNTIyODMsNTQ4NDUsNTQ4NDYsNTQ4NDcsNTQ4NDksNTQ4NTAsNTQ4''@;'; put 'put ''NTEsNTQ4NTIsNTQ4NTQsNTQ4NTUsNTQ4NTgsNTQ4NjAsNTQ4NjIsNTQ4NjMsNTQ4NjQsNTQ4NjYsNTQ4NjcsNTQ4NzAsNTQ4NzEsNTQ4NzMsNTQ4NzQsNTQ4NzUsNTQ4NzcsNTQ4NzgsNTQ4NzksNTQ4ODAsNTQ4ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4ODIsNTQ4ODMs''@;'; put 'put ''NTQ4ODQsNTQ4ODUsNTQ4ODYsNTQ4ODgsNTQ4OTAsNTQ4OTEsNTQ4OTIsNTQ4OTMsNTQ4OTQsNTQ4OTUsNTQ4OTgsNTQ4OTksNTQ5MDEsNTQ5MDIsNTQ5MDMsNTQ5MDQsNTQ5MDUsNTQ5MDYsNTQ5MDcsNTQ5MDgsNTQ5MDksNTQ5MTAsNTQ5MTEsNTQ5MTIsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNTQ5MTMsNTQ5MTQsNTQ5MTYsNTQ5MTgsNTQ5MTksNTQ5MjAsNTQ5MjEsNTQ5MjIsNTQ5MjMsNTQ5MjYsNTQ5MjcsNTQ5MjksNTQ5MzAsNTQ5MzEsNTQ5MzMsNTQ5MzQsNTQ5MzUsNTQ5MzYsNTQ5MzcsNTQ5MzgsNTQ5MzksNTQ5NDAsNTQ5NDIsNTQ5NDQsNTQ5NDYsNTQ5NDcs''@;'; put 'put ''NTQ5NDgsNTQ5NDksNTQ5NTAsNTQ5NTEsNTQ5NTMsNTQ5NTQsNTIyODQsNTIyODUsNTIyODYsNTIyOTIsNTIyOTMsNTIyOTYsNTIzMDAsNTIzMDgsNTIzMDksNTIzMTEsNTIzMTIsNTIzMTMsNTIzMjAsNTIzMjQsNTIzMjYsNTIzMjgsNTIzMzYsNTIzNDEsNTIzNzYsNTIzNzcsNTIzODAsNTIz''@;'; put 'put ''ODQsNTIzOTIsNTIzOTMsNTIzOTUsNTIzOTYsNTIzOTcsNTI0MDQsNTI0MDUsNTI0MDgsNTI0MTIsNTI0MjAsNTI0MjEsNTI0MjMsNTI0MjUsNTI0MzIsNTI0MzYsNTI0NTIsNTI0NjAsNTI0NjQsNTI0ODEsNTI0ODgsNTI0ODksNTI0OTIsNTI0OTYsNTI1MDQsNTI1MDUsNTI1MDcsNTI1MDks''@;'; put 'put ''NTI1MTYsNTI1MjAsNTI1MjQsNTI1MzcsNTI1NzIsNTI1NzYsNTI1ODAsNTI1ODgsNTI1ODksNTI1OTEsNTI1OTMsNTI2MDAsNTI2MTYsNTI2MjgsNTI2MjksNTI2MzIsNTI2MzYsNTI2NDQsNTI2NDUsNTI2NDcsNTI2NDksNTI2NTYsNTI2NzYsNTI2ODQsNTI2ODgsNTI3MTIsNTI3MTYsNTI3''@;'; put 'put ''MjAsNTI3MjgsNTI3MjksNTI3MzEsNTI3MzMsNTI3NDAsNTI3NDQsNTI3NDgsNTI3NTYsNTI3NjEsNTI3NjgsNTI3NjksNTI3NzIsNTI3NzYsNTI3ODQsNTI3ODUsNTI3ODcsNTI3ODksNTQ5NTUsNTQ5NTcsNTQ5NTgsNTQ5NTksNTQ5NjEsNTQ5NjIsNTQ5NjMsNTQ5NjQsNTQ5NjUsNTQ5NjYs''@;'; put 'put ''NTQ5NjcsNTQ5NjgsNTQ5NzAsNTQ5NzIsNTQ5NzMsNTQ5NzQsNTQ5NzUsNTQ5NzYsNTQ5NzcsNTQ5NzgsNTQ5NzksNTQ5ODIsNTQ5ODMsNTQ5ODUsNTQ5ODYsNTQ5ODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5ODksNTQ5OTAsNTQ5OTEsNTQ5OTIsNTQ5OTQsNTQ5OTUsNTQ5''@;'; put 'put ''OTcsNTQ5OTgsNTVlMyw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1''@;'; put 'put ''NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1''@;'; put 'put ''OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1''@;'; put 'put ''MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5Niw1M2UzLDUzMDA4LDUzMDA5LDUzMDExLDUzMDEzLDUzMDIwLDUzMDI0LDUzMDI4LDUzMDM2LDUzMDM3LDUzMDM5''@;'; put 'put ''LDUzMDQwLDUzMDQxLDUzMDQ4LDUzMDc2LDUzMDc3LDUzMDgwLDUzMDg0LDUzMDkyLDUzMDkzLDUzMDk1LDUzMDk3LDUzMTA0LDUzMTA1LDUzMTA4LDUzMTEyLDUzMTIwLDUzMTI1LDUzMTMyLDUzMTUzLDUzMTYwLDUzMTY4LDUzMTg4LDUzMjE2LDUzMjE3LDUzMjIwLDUzMjI0LDUzMjMyLDUz''@;'; put 'put ''MjMzLDUzMjM1LDUzMjM3LDUzMjQ0LDUzMjQ4LDUzMjUyLDUzMjY1LDUzMjcyLDUzMjkzLDUzMzAwLDUzMzAxLDUzMzA0LDUzMzA4LDU1MDYxLDU1MDYyLDU1MDYzLDU1MDY2LDU1MDY3LDU1MDY5LDU1MDcwLDU1MDcxLDU1MDczLDU1MDc0LDU1MDc1LDU1MDc2LDU1MDc3LDU1MDc4LDU1MDc5''@;'; put 'put ''LDU1MDgyLDU1MDg0LDU1MDg2LDU1MDg3LDU1MDg4LDU1MDg5LDU1MDkwLDU1MDkxLDU1MDk0LDU1MDk1LDU1MDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDk4LDU1MDk5LDU1MTAxLDU1MTAyLDU1MTAzLDU1MTA0LDU1MTA1LDU1MTA2LDU1MTA3LDU1MTA5LDU1MTEwLDU1''@;'; put 'put ''MTEyLDU1MTE0LDU1MTE1LDU1MTE2LDU1MTE3LDU1MTE4LDU1MTE5LDU1MTIyLDU1MTIzLDU1MTI1LDU1MTMwLDU1MTMxLDU1MTMyLDU1MTMzLDU1MTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MTM1LDU1MTM4LDU1MTQwLDU1MTQyLDU1MTQzLDU1MTQ0LDU1MTQ2LDU1MTQ3''@;'; put 'put ''LDU1MTQ5LDU1MTUwLDU1MTUxLDU1MTUzLDU1MTU0LDU1MTU1LDU1MTU3LDU1MTU4LDU1MTU5LDU1MTYwLDU1MTYxLDU1MTYyLDU1MTYzLDU1MTY2LDU1MTY3LDU1MTY4LDU1MTcwLDU1MTcxLDU1MTcyLDU1MTczLDU1MTc0LDU1MTc1LDU1MTc4LDU1MTc5LDUzMzE2LDUzMzE3LDUzMzE5LDUz''@;'; put 'put ''MzIxLDUzMzI4LDUzMzMyLDUzMzM2LDUzMzQ0LDUzMzU2LDUzMzU3LDUzMzYwLDUzMzY0LDUzMzcyLDUzMzczLDUzMzc3LDUzNDEyLDUzNDEzLDUzNDE2LDUzNDIwLDUzNDI4LDUzNDI5LDUzNDMxLDUzNDMzLDUzNDQwLDUzNDQxLDUzNDQ0LDUzNDQ4LDUzNDQ5LDUzNDU2LDUzNDU3LDUzNDU5''@;'; put 'put ''LDUzNDYwLDUzNDYxLDUzNDY4LDUzNDY5LDUzNDcyLDUzNDc2LDUzNDg0LDUzNDg1LDUzNDg3LDUzNDg4LDUzNDg5LDUzNDk2LDUzNTE3LDUzNTUyLDUzNTUzLDUzNTU2LDUzNTYwLDUzNTYyLDUzNTY4LDUzNTY5LDUzNTcxLDUzNTcyLDUzNTczLDUzNTgwLDUzNTgxLDUzNTg0LDUzNTg4LDUz''@;'; put 'put ''NTk2LDUzNTk3LDUzNTk5LDUzNjAxLDUzNjA4LDUzNjEyLDUzNjI4LDUzNjM2LDUzNjQwLDUzNjY0LDUzNjY1LDUzNjY4LDUzNjcyLDUzNjgwLDUzNjgxLDUzNjgzLDUzNjg1LDUzNjkwLDUzNjkyLDUzNjk2LDUzNzIwLDUzNzQ4LDUzNzUyLDUzNzY3LDUzNzY5LDUzNzc2LDUzODA0LDUzODA1''@;'; put 'put ''LDUzODA4LDUzODEyLDUzODIwLDUzODIxLDUzODIzLDUzODI1LDUzODMyLDUzODUyLDU1MTgxLDU1MTgyLDU1MTgzLDU1MTg1LDU1MTg2LDU1MTg3LDU1MTg4LDU1MTg5LDU1MTkwLDU1MTkxLDU1MTk0LDU1MTk2LDU1MTk4LDU1MTk5LDU1MjAwLDU1MjAxLDU1MjAyLDU1MjAzLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODYwLDUzODg4LDUzODg5LDUzODkyLDUzODk2LDUzOTA0LDUzOTA1LDUzOTA5LDUzOTE2LDUzOTIwLDUzOTI0LDUzOTMyLDUzOTM3LDUzOTQ0LDUzOTQ1LDUzOTQ4LDUzOTUxLDUzOTUyLDUzOTU0''@;'; put 'put ''LDUzOTYwLDUzOTYxLDUzOTYzLDUzOTcyLDUzOTc2LDUzOTgwLDUzOTg4LDUzOTg5LDU0ZTMsNTQwMDEsNTQwMDQsNTQwMDgsNTQwMTYsNTQwMTcsNTQwMTksNTQwMjEsNTQwMjgsNTQwMjksNTQwMzAsNTQwMzIsNTQwMzYsNTQwMzgsNTQwNDQsNTQwNDUsNTQwNDcsNTQwNDgsNTQwNDksNTQw''@;'; put 'put ''NTMsNTQwNTYsNTQwNTcsNTQwNjAsNTQwNjQsNTQwNzIsNTQwNzMsNTQwNzUsNTQwNzYsNTQwNzcsNTQwODQsNTQwODUsNTQxNDAsNTQxNDEsNTQxNDQsNTQxNDgsNTQxNTYsNTQxNTcsNTQxNTksNTQxNjAsNTQxNjEsNTQxNjgsNTQxNjksNTQxNzIsNTQxNzYsNTQxODQsNTQxODUsNTQxODcs''@;'; put 'put ''NTQxODksNTQxOTYsNTQyMDAsNTQyMDQsNTQyMTIsNTQyMTMsNTQyMTYsNTQyMTcsNTQyMjQsNTQyMzIsNTQyNDEsNTQyNDMsNTQyNTIsNTQyNTMsNTQyNTYsNTQyNjAsNTQyNjgsNTQyNjksNTQyNzEsNTQyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyODAsNTQzMDEsNTQzMzYsNTQzNDAsNTQzNjQsNTQzNjgsNTQzNzIsNTQzODEsNTQzODMsNTQzOTIs''@;'; put 'put ''NTQzOTMsNTQzOTYsNTQzOTksNTQ0MDAsNTQ0MDIsNTQ0MDgsNTQ0MDksNTQ0MTEsNTQ0MTMsNTQ0MjAsNTQ0NDEsNTQ0NzYsNTQ0ODAsNTQ0ODQsNTQ0OTIsNTQ0OTUsNTQ1MDQsNTQ1MDgsNTQ1MTIsNTQ1MjAsNTQ1MjMsNTQ1MjUsNTQ1MzIsNTQ1MzYsNTQ1NDAsNTQ1NDgsNTQ1NDksNTQ1''@;'; put 'put ''NTEsNTQ1ODgsNTQ1ODksNTQ1OTIsNTQ1OTYsNTQ2MDQsNTQ2MDUsNTQ2MDcsNTQ2MDksNTQ2MTYsNTQ2MTcsNTQ2MjAsNTQ2MjQsNTQ2MjksNTQ2MzIsNTQ2MzMsNTQ2MzUsNTQ2MzcsNTQ2NDQsNTQ2NDUsNTQ2NDgsNTQ2NTIsNTQ2NjAsNTQ2NjEsNTQ2NjMsNTQ2NjQsNTQ2NjUsNTQ2NzIs''@;'; put 'put ''NTQ2OTMsNTQ3MjgsNTQ3MjksNTQ3MzIsNTQ3MzYsNTQ3MzgsNTQ3NDQsNTQ3NDUsNTQ3NDcsNTQ3NDksNTQ3NTYsNTQ3NTcsNTQ3NjAsNTQ3NjQsNTQ3NzIsNTQ3NzMsNTQ3NzUsNTQ3NzcsNTQ3ODQsNTQ3ODUsNTQ3ODgsNTQ3OTIsNTQ4MDAsNTQ4MDEsNTQ4MDMsNTQ4MDQsNTQ4MDUsNTQ4''@;'; put 'put ''MTIsNTQ4MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MjAs''@;'; put 'put ''NTQ4MjksNTQ4NDAsNTQ4NDEsNTQ4NDQsNTQ4NDgsNTQ4NTMsNTQ4NTYsNTQ4NTcsNTQ4NTksNTQ4NjEsNTQ4NjUsNTQ4NjgsNTQ4NjksNTQ4NzIsNTQ4NzYsNTQ4ODcsNTQ4ODksNTQ4OTYsNTQ4OTcsNTQ5MDAsNTQ5MTUsNTQ5MTcsNTQ5MjQsNTQ5MjUsNTQ5MjgsNTQ5MzIsNTQ5NDEsNTQ5''@;'; put 'put ''NDMsNTQ5NDUsNTQ5NTIsNTQ5NTYsNTQ5NjAsNTQ5NjksNTQ5NzEsNTQ5ODAsNTQ5ODEsNTQ5ODQsNTQ5ODgsNTQ5OTMsNTQ5OTYsNTQ5OTksNTUwMDEsNTUwMDgsNTUwMTIsNTUwMTYsNTUwMjQsNTUwMjksNTUwMzYsNTUwMzcsNTUwNDAsNTUwNDQsNTUwNTcsNTUwNjQsNTUwNjUsNTUwNjgs''@;'; put 'put ''NTUwNzIsNTUwODAsNTUwODEsNTUwODMsNTUwODUsNTUwOTIsNTUwOTMsNTUwOTYsNTUxMDAsNTUxMDgsNTUxMTEsNTUxMTMsNTUxMjAsNTUxMjEsNTUxMjQsNTUxMjYsNTUxMjcsNTUxMjgsNTUxMjksNTUxMzYsNTUxMzcsNTUxMzksNTUxNDEsNTUxNDUsNTUxNDgsNTUxNTIsNTUxNTYsNTUx''@;'; put 'put ''NjQsNTUxNjUsNTUxNjksNTUxNzYsNTUxNzcsNTUxODAsNTUxODQsNTUxOTIsNTUxOTMsNTUxOTUsNTUxOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCwyMDI4NSwyMDMzOSwyMDU1MSwyMDcyOSwyMTE1MiwyMTQ4NywyMTYyMSwyMTczMywyMjAyNSwyMzIzMywyMzQ3OCwyNjI0NywyNjU1MCwyNjU1MSwyNjYwNywyNzQ2OCwyOTYzNCwzMDE0NiwzMTI5MiwzMzQ5OSwzMzU0MCwzNDkwMywzNDk1MiwzNTM4MiwzNjA0MCwzNjMwMywz''@;'; put 'put ''NjYwMywzNjgzOCwzOTM4MSwyMTA1MSwyMTM2NCwyMTUwOCwyNDY4MiwyNDkzMiwyNzU4MCwyOTY0NywzMzA1MCwzNTI1OCwzNTI4MiwzODMwNywyMDM1NSwyMTAwMiwyMjcxOCwyMjkwNCwyMzAxNCwyNDE3OCwyNDE4NSwyNTAzMSwyNTUzNiwyNjQzOCwyNjYwNCwyNjc1MSwyODU2NywzMDI4''@;'; put 'put ''NiwzMDQ3NSwzMDk2NSwzMTI0MCwzMTQ4NywzMTc3NywzMjkyNSwzMzM5MCwzMzM5MywzNTU2MywzODI5MSwyMDA3NSwyMTkxNywyNjM1OSwyODIxMiwzMDg4MywzMTQ2OSwzMzg4MywzNTA4OCwzNDYzOCwzODgyNCwyMTIwOCwyMjM1MCwyMjU3MCwyMzg4NCwyNDg2MywyNTAyMiwyNTEyMSwy''@;'; put 'put ''NTk1NCwyNjU3NywyNzIwNCwyODE4NywyOTk3NiwzMDEzMSwzMDQzNSwzMDY0MCwzMjA1OCwzNzAzOSwzNzk2OSwzNzk3MCw0MDg1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTI4MywyMzcyNCwzMDAwMiwzMjk4NywzNzQ0MCwzODI5NiwyMTA4MywyMjUzNiwyMzAwNCwyMzcxMywyMzgzMSwyNDI0NywyNDM3OCwyNDM5NCwyNDk1MSwyNzc0MywzMDA3NCwz''@;'; put 'put ''MDA4NiwzMTk2OCwzMjExNSwzMjE3NywzMjY1MiwzMzEwOCwzMzMxMywzNDE5MywzNTEzNywzNTYxMSwzNzYyOCwzODQ3Nyw0MDAwNywyMDE3MSwyMDIxNSwyMDQ5MSwyMDk3NywyMjYwNywyNDg4NywyNDg5NCwyNDkzNiwyNTkxMywyNzExNCwyODQzMywzMDExNywzMDM0MiwzMDQyMiwzMTYy''@;'; put 'put ''MywzMzQ0NSwzMzk5NSw2Mzc0NCwzNzc5OSwzODI4MywyMTg4OCwyMzQ1OCwyMjM1Myw2Mzc0NSwzMTkyMywzMjY5NywzNzMwMSwyMDUyMCwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTQ1NCwyNTgxOCwyNTgzMSwyODE5MiwyODg0NCwzMTA2NywzNjMxNywzNjM4Miw2Mzc0NiwzNjk4OSwz''@;'; put 'put ''NzQ0NSwzNzYyNCwyMDA5NCwyMDIxNCwyMDU4MSwyNDA2MiwyNDMxNCwyNDgzOCwyNjk2NywzMzEzNywzNDM4OCwzNjQyMywzNzc0OSwzOTQ2NywyMDA2MiwyMDYyNSwyNjQ4MCwyNjY4OCwyMDc0NSwyMTEzMywyMTEzOCwyNzI5OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDY1MiwzNzM5Miw0MDY2MCwyMTE2MywyNDYyMywzNjg1MCwyMDU1MiwyNTAwMSwy''@;'; put 'put ''NTU4MSwyNTgwMiwyNjY4NCwyNzI2OCwyODYwOCwzMzE2MCwzNTIzMywzODU0OCwyMjUzMywyOTMwOSwyOTM1NiwyOTk1NiwzMjEyMSwzMjM2NSwzMjkzNywzNTIxMSwzNTcwMCwzNjk2Myw0MDI3MywyNTIyNSwyNzc3MCwyODUwMCwzMjA4MCwzMjU3MCwzNTM2MywyMDg2MCwyNDkwNiwzMTY0''@;'; put 'put ''NSwzNTYwOSwzNzQ2MywzNzc3MiwyMDE0MCwyMDQzNSwyMDUxMCwyMDY3MCwyMDc0MiwyMTE4NSwyMTE5NywyMTM3NSwyMjM4NCwyMjY1OSwyNDIxOCwyNDQ2NSwyNDk1MCwyNTAwNCwyNTgwNiwyNTk2NCwyNjIyMywyNjI5OSwyNjM1NiwyNjc3NSwyODAzOSwyODgwNSwyODkxMywyOTg1NSwy''@;'; put 'put ''OTg2MSwyOTg5OCwzMDE2OSwzMDgyOCwzMDk1NiwzMTQ1NSwzMTQ3OCwzMjA2OSwzMjE0NywzMjc4OSwzMjgzMSwzMzA1MSwzMzY4NiwzNTY4NiwzNjYyOSwzNjg4NSwzNzg1NywzODkxNSwzODk2OCwzOTUxNCwzOTkxMiwyMDQxOCwyMTg0MywyMjU4NiwyMjg2NSwyMzM5NSwyMzYyMiwyNDc2''@;'; put 'put ''MCwyNTEwNiwyNjY5MCwyNjgwMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCwyNjg1NiwyODMzMCwzMDAyOCwzMDMyOCwzMDkyNiwzMTI5MywzMTk5NSwzMjM2MywzMjM4MCwzNTMzNiwzNTQ4OSwzNTkwMywzODU0Miw0MDM4OCwyMTQ3NiwyMTQ4MSwyMTU3OCwyMTYxNywyMjI2NiwyMjk5MywyMzM5NiwyMzYxMSwyNDIzNSwyNTMzNSwyNTkxMSwyNTkyNSwyNTk3''@;'; put 'put ''MCwyNjI3MiwyNjU0MywyNzA3MywyNzgzNywzMDIwNCwzMDM1MiwzMDU5MCwzMTI5NSwzMjY2MCwzMjc3MSwzMjkyOSwzMzE2NywzMzUxMCwzMzUzMywzMzc3NiwzNDI0MSwzNDg2NSwzNDk5NiwzNTQ5Myw2Mzc0NywzNjc2NCwzNzY3OCwzODU5OSwzOTAxNSwzOTY0MCw0MDcyMywyMTc0MSwy''@;'; put 'put ''NjAxMSwyNjM1NCwyNjc2NywzMTI5NiwzNTg5NSw0MDI4OCwyMjI1NiwyMjM3MiwyMzgyNSwyNjExOCwyNjgwMSwyNjgyOSwyODQxNCwyOTczNiwzNDk3NCwzOTkwOCwyNzc1Miw2Mzc0OCwzOTU5MiwyMDM3OSwyMDg0NCwyMDg0OSwyMTE1MSwyMzM4MCwyNDAzNywyNDY1NiwyNDY4NSwyNTMy''@;'; put 'put ''OSwyNTUxMSwyNTkxNSwyOTY1NywzMTM1NCwzNDQ2NywzNjAwMiwzODc5OSwyMDAxOCwyMzUyMSwyNTA5NiwyNjUyNCwyOTkxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTE4NSwzMzc0NywzNTQ2MywzNTUwNiwzNjMyOCwzNjk0MiwzNzcwNywzODk4MiwyNDI3NSwyNzExMiwzNDMwMywzNzEwMSw2Mzc0OSwyMDg5NiwyMzQ0OCwyMzUzMiwyNDkzMSwyNjg3''@;'; put 'put ''NCwyNzQ1NCwyODc0OCwyOTc0MywyOTkxMiwzMTY0OSwzMjU5MiwzMzczMywzNTI2NCwzNjAxMSwzODM2NCwzOTIwOCwyMTAzOCwyNDY2OSwyNTMyNCwzNjg2NiwyMDM2MiwyMDgwOSwyMTI4MSwyMjc0NSwyNDI5MSwyNjMzNiwyNzk2MCwyODgyNiwyOTM3OCwyOTY1NCwzMTU2OCwzMzAwOSwz''@;'; put 'put ''Nzk3OSwyMTM1MCwyNTQ5OSwzMjYxOSwyMDA1NCwyMDYwOCwyMjYwMiwyMjc1MCwyNDYxOCwyNDg3MSwyNTI5NiwyNzA4OCwzOTc0NSwyMzQzOSwzMjAyNCwzMjk0NSwzNjcwMywyMDEzMiwyMDY4OSwyMTY3NiwyMTkzMiwyMzMwOCwyMzk2OCwyNDAzOSwyNTg5OCwyNTkzNCwyNjY1NywyNzIx''@;'; put 'put ''MSwyOTQwOSwzMDM1MCwzMDcwMywzMjA5NCwzMjc2MSwzMzE4NCwzNDEyNiwzNDUyNywzNjYxMSwzNjY4NiwzNzA2NiwzOTE3MSwzOTUwOSwzOTg1MSwxOTk5MiwyMDAzNywyMDA2MSwyMDE2NywyMDQ2NSwyMDg1NSwyMTI0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTMxMiwyMTQ3NSwyMTQ3NywyMTY0NiwyMjAzNiwyMjM4OSwyMjQzNCwyMzQ5NSwyMzk0''@;'; put 'put ''MywyNDI3MiwyNTA4NCwyNTMwNCwyNTkzNywyNjU1MiwyNjYwMSwyNzA4MywyNzQ3MiwyNzU5MCwyNzYyOCwyNzcxNCwyODMxNywyODc5MiwyOTM5OSwyOTU5MCwyOTY5OSwzMDY1NSwzMDY5NywzMTM1MCwzMjEyNywzMjc3NywzMzI3NiwzMzI4NSwzMzI5MCwzMzUwMywzNDkxNCwzNTYzNSwz''@;'; put 'put ''NjA5MiwzNjU0NCwzNjg4MSwzNzA0MSwzNzQ3NiwzNzU1OCwzOTM3OCwzOTQ5Myw0MDE2OSw0MDQwNyw0MDg2MCwyMjI4MywyMzYxNiwzMzczOCwzODgxNiwzODgyNyw0MDYyOCwyMTUzMSwzMTM4NCwzMjY3NiwzNTAzMywzNjU1NywzNzA4OSwyMjUyOCwyMzYyNCwyNTQ5NiwzMTM5MSwyMzQ3''@;'; put 'put ''MCwyNDMzOSwzMTM1MywzMTQwNiwzMzQyMiwzNjUyNCwyMDUxOCwyMTA0OCwyMTI0MCwyMTM2NywyMjI4MCwyNTMzMSwyNTQ1OCwyNzQwMiwyODA5OSwzMDUxOSwyMTQxMywyOTUyNywzNDE1MiwzNjQ3MCwzODM1NywyNjQyNiwyNzMzMSwyODUyOCwzNTQzNywzNjU1NiwzOTI0Myw2Mzc1MCwy''@;'; put 'put ''NjIzMSwyNzUxMiwzNjAyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCwzOTc0MCw2Mzc1MSwyMTQ4MywyMjMxNywyMjg2MiwyNTU0MiwyNzEzMSwyOTY3NCwzMDc4OSwzMTQxOCwzMTQyOSwzMTk5OCwzMzkwOSwzNTIxNSwzNjIxMSwzNjkxNywzODMxMiwyMTI0MywyMjM0MywzMDAyMywzMTU4NCwzMzc0MCwzNzQwNiw2Mzc1MiwyNzIyNCwyMDgxMSwyMTA2Nywy''@;'; put 'put ''MTEyNywyNTExOSwyNjg0MCwyNjk5NywzODU1MywyMDY3NywyMTE1NiwyMTIyMCwyNTAyNywyNjAyMCwyNjY4MSwyNzEzNSwyOTgyMiwzMTU2MywzMzQ2NSwzMzc3MSwzNTI1MCwzNTY0MSwzNjgxNywzOTI0MSw2Mzc1MywyMDE3MCwyMjkzNSwyNTgxMCwyNjEyOSwyNzI3OCwyOTc0OCwzMTEw''@;'; put 'put ''NSwzMTE2NSwzMzQ0OSwzNDk0MiwzNDk0MywzNTE2Nyw2Mzc1NCwzNzY3MCwyMDIzNSwyMTQ1MCwyNDYxMywyNTIwMSwyNzc2MiwzMjAyNiwzMjEwMiwyMDEyMCwyMDgzNCwzMDY4NCwzMjk0MywyMDIyNSwyMDIzOCwyMDg1NCwyMDg2NCwyMTk4MCwyMjEyMCwyMjMzMSwyMjUyMiwyMjUyNCwy''@;'; put 'put ''MjgwNCwyMjg1NSwyMjkzMSwyMzQ5MiwyMzY5NiwyMzgyMiwyNDA0OSwyNDE5MCwyNDUyNCwyNTIxNiwyNjA3MSwyNjA4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjM5OCwyNjM5OSwyNjQ2MiwyNjgyNywyNjgyMCwyNzIzMSwyNzQ1MCwyNzY4MywyNzc3MywyNzc3OCwyODEwMywyOTU5MiwyOTczNCwyOTczOCwyOTgyNiwyOTg1OSwzMDA3MiwzMDA3OSwz''@;'; put 'put ''MDg0OSwzMDk1OSwzMTA0MSwzMTA0NywzMTA0OCwzMTA5OCwzMTYzNywzMmUzLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEz''@;'; put 'put ''LDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYzNzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYzNzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYz''@;'; put 'put ''NzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYz''@;'; put 'put ''Nzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAwLDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1''@;'; put 'put ''LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYzODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMzMjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYz''@;'; put 'put ''ODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIxLDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2''@;'; put 'put ''LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIw''@;'; put 'put ''MDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4''@;'; put 'put ''LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMxNTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIyNjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMx''@;'; put 'put ''OTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1''@;'; put 'put ''LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQxLDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3''@;'; put 'put ''LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIw''@;'; put 'put ''OTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMxLDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYz''@;'; put 'put ''LDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUz''@;'; put 'put ''LDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0''@;'; put 'put ''MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3''@;'; put 'put ''LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQwNTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1''@;'; put 'put ''ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAx''@;'; put 'put ''LDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIyMjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMx''@;'; put 'put ''NTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQwLDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1''@;'; put 'put ''LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4''@;'; put 'put ''NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3''@;'; put 'put ''MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMzLDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAwLDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2''@;'; put 'put ''LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMwMTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1''@;'; put 'put ''MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQw''@;'; put 'put ''NjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3ZTMsMTk5NzUsMjEzMjUsMjMwODEsMjQwMTgsMjQzOTgsMjQ5MzAsMjU0MDUsMjYyMTcsMjYzNjQsMjg0MTUsMjg0NTksMjg3NzEsMzA2MjIsMzM4MzYsMzQwNjcsMzQ4NzUsMzY2MjcsMzkyMzcsMzk5OTUsMjE3ODgsMjUyNzMs''@;'; put 'put ''MjY0MTEsMjc4MTksMzM1NDUsMzUxNzgsMzg3NzgsMjAxMjksMjI5MTYsMjQ1MzYsMjQ1MzcsMjYzOTUsMzIxNzgsMzI1OTYsMzM0MjYsMzM1NzksMzM3MjUsMzY2MzgsMzcwMTcsMjI0NzUsMjI5NjksMjMxODYsMjM1MDQsMjYxNTEsMjY1MjIsMjY3NTcsMjc1OTksMjkwMjgsMzI2MjksMzYw''@;'; put 'put ''MjMsMzYwNjcsMzY5OTMsMzk3NDksMzMwMzIsMzU5NzgsMzg0NzYsMzk0ODgsNDA2MTMsMjMzOTEsMjc2NjcsMjk0NjcsMzA0NTAsMzA0MzEsMzM4MDQsMjA5MDYsMzUyMTksMjA4MTMsMjA4ODUsMjExOTMsMjY4MjUsMjc3OTYsMzA0NjgsMzA0OTYsMzIxOTEsMzIyMzYsMzg3NTQsNDA2Mjks''@;'; put 'put ''MjgzNTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQwNjUsMjA5''@;'; put 'put ''MDEsMjE1MTcsMjE2MjksMjYxMjYsMjYyNjksMjY5MTksMjgzMTksMzAzOTksMzA2MDksMzM1NTksMzM5ODYsMzQ3MTksMzcyMjUsMzc1MjgsNDAxODAsMzQ5NDYsMjAzOTgsMjA4ODIsMjEyMTUsMjI5ODIsMjQxMjUsMjQ5MTcsMjU3MjAsMjU3MjEsMjYyODYsMjY1NzYsMjcxNjksMjc1OTcs''@;'; put 'put ''Mjc2MTEsMjkyNzksMjkyODEsMjk3NjEsMzA1MjAsMzA2ODMsMzI3OTEsMzM0NjgsMzM1NDEsMzU1ODQsMzU2MjQsMzU5ODAsMjY0MDgsMjc3OTIsMjkyODcsMzA0NDYsMzA1NjYsMzEzMDIsNDAzNjEsMjc1MTksMjc3OTQsMjI4MTgsMjY0MDYsMzM5NDUsMjEzNTksMjI2NzUsMjI5MzcsMjQy''@;'; put 'put ''ODcsMjU1NTEsMjYxNjQsMjY0ODMsMjgyMTgsMjk0ODMsMzE0NDcsMzM0OTUsMzc2NzIsMjEyMDksMjQwNDMsMjUwMDYsMjUwMzUsMjUwOTgsMjUyODcsMjU3NzEsMjYwODAsMjY5NjksMjc0OTQsMjc1OTUsMjg5NjEsMjk2ODcsMzAwNDUsMzIzMjYsMzMzMTAsMzM1MzgsMzQxNTQsMzU0OTEs''@;'; put 'put ''MzYwMzEsMzg2OTUsNDAyODksMjI2OTYsNDA2NjQsMjA0OTcsMjEwMDYsMjE1NjMsMjE4MzksMjU5OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjc3NjYsMzIwMTAsMzIwMTEsMzI4NjIsMzQ0NDIsMzgyNzIsMzg2MzksMjEyNDcsMjc3OTcsMjkyODksMjE2MTksMjMxOTQsMjM2MTQsMjM4ODMsMjQzOTYsMjQ0OTQsMjY0MTAsMjY4MDYsMjY5NzksMjgyMjAs''@;'; put 'put ''MjgyMjgsMzA0NzMsMzE4NTksMzI2NTQsMzQxODMsMzU1OTgsMzY4NTUsMzg3NTMsNDA2OTIsMjM3MzUsMjQ3NTgsMjQ4NDUsMjUwMDMsMjU5MzUsMjYxMDcsMjYxMDgsMjc2NjUsMjc4ODcsMjk1OTksMjk2NDEsMzIyMjUsMzgyOTIsMjM0OTQsMzQ1ODgsMzU2MDAsMjEwODUsMjEzMzgsMjUy''@;'; put 'put ''OTMsMjU2MTUsMjU3NzgsMjY0MjAsMjcxOTIsMjc4NTAsMjk2MzIsMjk4NTQsMzE2MzYsMzE4OTMsMzIyODMsMzMxNjIsMzMzMzQsMzQxODAsMzY4NDMsMzg2NDksMzkzNjEsMjAyNzYsMjEzMjIsMjE0NTMsMjE0NjcsMjUyOTIsMjU2NDQsMjU4NTYsMjYwMDEsMjcwNzUsMjc4ODYsMjg1MDQs''@;'; put 'put ''Mjk2NzcsMzAwMzYsMzAyNDIsMzA0MzYsMzA0NjAsMzA5MjgsMzA5NzEsMzEwMjAsMzIwNzAsMzMzMjQsMzQ3ODQsMzY4MjAsMzg5MzAsMzkxNTEsMjExODcsMjUzMDAsMjU3NjUsMjgxOTYsMjg0OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzAzMzIsMzYyOTksMzcyOTcsMzc0NzQsMzk2NjIsMzk3NDcsMjA1MTUsMjA2MjEsMjIzNDYsMjI5NTIsMjM1OTIs''@;'; put 'put ''MjQxMzUsMjQ0MzksMjUxNTEsMjU5MTgsMjYwNDEsMjYwNDksMjYxMjEsMjY1MDcsMjcwMzYsMjgzNTQsMzA5MTcsMzIwMzMsMzI5MzgsMzMxNTIsMzMzMjMsMzM0NTksMzM5NTMsMzQ0NDQsMzUzNzAsMzU2MDcsMzcwMzAsMzg0NTAsNDA4NDgsMjA0OTMsMjA0NjcsNjM4NDMsMjI1MjEsMjQ0''@;'; put 'put ''NzIsMjUzMDgsMjU0OTAsMjY0NzksMjgyMjcsMjg5NTMsMzA0MDMsMzI5NzIsMzI5ODYsMzUwNjAsMzUwNjEsMzUwOTcsMzYwNjQsMzY2NDksMzcxOTcsMzg1MDYsMjAyNzEsMjAzMzYsMjQwOTEsMjY1NzUsMjY2NTgsMzAzMzMsMzAzMzQsMzk3NDgsMjQxNjEsMjcxNDYsMjkwMzMsMjkxNDAs''@;'; put 'put ''MzAwNTgsNjM4NDQsMzIzMjEsMzQxMTUsMzQyODEsMzkxMzIsMjAyNDAsMzE1NjcsMzI2MjQsMzgzMDksMjA5NjEsMjQwNzAsMjY4MDUsMjc3MTAsMjc3MjYsMjc4NjcsMjkzNTksMzE2ODQsMzM1MzksMjc4NjEsMjk3NTQsMjA3MzEsMjExMjgsMjI3MjEsMjU4MTYsMjcyODcsMjk4NjMsMzAy''@;'; put 'put ''OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA4ODcsMzQzMjcs''@;'; put 'put ''MzgzNzAsMzg3MTMsNjM4NDUsMjEzNDIsMjQzMjEsMzU3MjIsMzY3NzYsMzY3ODMsMzcwMDIsMjEwMjksMzA2MjksNDAwMDksNDA3MTIsMTk5OTMsMjA0ODIsMjA4NTMsMjM2NDMsMjQxODMsMjYxNDIsMjYxNzAsMjY1NjQsMjY4MjEsMjg4NTEsMjk5NTMsMzAxNDksMzExNzcsMzE0NTMsMzY2''@;'; put 'put ''NDcsMzkyMDAsMzk0MzIsMjA0NDUsMjI1NjEsMjI1NzcsMjM1NDIsMjYyMjIsMjc0OTMsMjc5MjEsMjgyODIsMjg1NDEsMjk2NjgsMjk5OTUsMzM3NjksMzUwMzYsMzUwOTEsMzU2NzYsMzY2MjgsMjAyMzksMjA2OTMsMjEyNjQsMjEzNDAsMjM0NDMsMjQ0ODksMjYzODEsMzExMTksMzMxNDUs''@;'; put 'put ''MzM1ODMsMzQwNjgsMzUwNzksMzUyMDYsMzY2NjUsMzY2NjcsMzkzMzMsMzk5NTQsMjY0MTIsMjAwODYsMjA0NzIsMjI4NTcsMjM1NTMsMjM3OTEsMjM3OTIsMjU0NDcsMjY4MzQsMjg5MjUsMjkwOTAsMjk3MzksMzIyOTksMzQwMjgsMzQ1NjIsMzY4OTgsMzc1ODYsNDAxNzksMTk5ODEsMjAx''@;'; put 'put ''ODQsMjA0NjMsMjA2MTMsMjEwNzgsMjExMDMsMjE1NDIsMjE2NDgsMjI0OTYsMjI4MjcsMjMxNDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMzODYsMjM0MTMsMjM1MDAsMjQyMjAsNjM4NDYsMjUyMDYsMjU5NzUsMjYwMjMsMjgwMTQsMjgzMjUsMjkyMzgsMzE1MjYsMzE4MDcsMzI1NjYsMzMxMDQsMzMxMDUsMzMxNzgsMzMzNDQsMzM0MzMsMzM3MDUsMzUz''@;'; put 'put ''MzEsMzZlMywzNjA3MCwzNjA5MSwzNjIxMiwzNjI4MiwzNzA5NiwzNzM0MCwzODQyOCwzODQ2OCwzOTM4NSw0MDE2NywyMTI3MSwyMDk5OCwyMTU0NSwyMjEzMiwyMjcwNywyMjg2OCwyMjg5NCwyNDU3NSwyNDk5NiwyNTE5OCwyNjEyOCwyNzc3NCwyODk1NCwzMDQwNiwzMTg4MSwzMTk2Niwz''@;'; put 'put ''MjAyNywzMzQ1MiwzNjAzMywzODY0MCw2Mzg0NywyMDMxNSwyNDM0MywyNDQ0NywyNTI4MiwyMzg0OSwyNjM3OSwyNjg0MiwzMDg0NCwzMjMyMyw0MDMwMCwxOTk4OSwyMDYzMywyMTI2OSwyMTI5MCwyMTMyOSwyMjkxNSwyMzEzOCwyNDE5OSwyNDc1NCwyNDk3MCwyNTE2MSwyNTIwOSwyNmUz''@;'; put 'put ''LDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMyNzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEzLDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYz''@;'; put 'put ''LDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMyODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIwMTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIx''@;'; put 'put ''NDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEyLDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIy''@;'; put 'put ''LDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1''@;'; put 'put ''LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIw''@;'; put 'put ''NjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3''@;'; put 'put ''LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIyNzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2''@;'; put 'put ''MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIyODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMz''@;'; put 'put ''OTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMxLDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQxLDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2''@;'; put 'put ''LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4''@;'; put 'put ''NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMyODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIxMjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYz''@;'; put 'put ''ODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMy''@;'; put 'put ''LDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMyMzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIz''@;'; put 'put ''NDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYzLDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1''@;'; put 'put ''NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUzLDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0Mjgy''@;'; put 'put ''LDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIzNDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5''@;'; put 'put ''ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAwLDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYy''@;'; put 'put ''LDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcw''@;'; put 'put ''LDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMyNzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0''@;'; put 'put ''MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUx''@;'; put 'put ''LDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYwLDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIw''@;'; put 'put ''LDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIyNTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4''@;'; put 'put ''OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMyLDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYzLDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5Mzkw''@;'; put 'put ''LDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMzNDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0''@;'; put 'put ''LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMzOTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIwMzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1''@;'; put 'put ''NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3''@;'; put 'put ''LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIyMTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIw''@;'; put 'put ''ODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYzODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYz''@;'; put 'put ''ODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3NzgzLDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkw''@;'; put 'put ''LDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYzODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4''@;'; put 'put ''MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMzODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIz''@;'; put 'put ''OTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUyLDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0''@;'; put 'put ''LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxZTMsMjE0NzMsMjYzNTUsMjc3NTcsMjg2MTgsMjk0NTAsMzA1OTEsMzEzMzAsMzM0NTQsMzQyNjksMzQzMDYsNjM5MjYsMzUwMjgsMzU0MjcsMzU3MDksMzU5NDcsNjM5MjcsMzc1''@;'; put 'put ''NTUsNjM5MjgsMzg2NzUsMzg5MjgsMjAxMTYsMjAyMzcsMjA0MjUsMjA2NTgsMjEzMjAsMjE1NjYsMjE1NTUsMjE5NzgsMjI2MjYsMjI3MTQsMjI4ODcsMjMwNjcsMjM1MjQsMjQ3MzUsNjM5MjksMjUwMzQsMjU5NDIsMjYxMTEsMjYyMTIsMjY3OTEsMjc3MzgsMjg1OTUsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg4NzksMjkxMDAsMjk1MjIsMzE2MTMsMzQ1''@;'; put 'put ''NjgsMzU0OTIsMzk5ODYsNDA3MTEsMjM2MjcsMjc3NzksMjk1MDgsMjk1NzcsMzc0MzQsMjgzMzEsMjk3OTcsMzAyMzksMzEzMzcsMzIyNzcsMzQzMTQsMjA4MDAsMjI3MjUsMjU3OTMsMjk5MzQsMjk5NzMsMzAzMjAsMzI3MDUsMzcwMTMsMzg2MDUsMzkyNTIsMjgxOTgsMjk5MjYsMzE0MDEs''@;'; put 'put ''MzE0MDIsMzMyNTMsMzQ1MjEsMzQ2ODAsMzUzNTUsMjMxMTMsMjM0MzYsMjM0NTEsMjY3ODUsMjY4ODAsMjgwMDMsMjk2MDksMjk3MTUsMjk3NDAsMzA4NzEsMzIyMzMsMzI3NDcsMzMwNDgsMzMxMDksMzM2OTQsMzU5MTYsMzg0NDYsMzg5MjksMjYzNTIsMjQ0NDgsMjYxMDYsMjY1MDUsMjc3''@;'; put 'put ''NTQsMjk1NzksMjA1MjUsMjMwNDMsMjc0OTgsMzA3MDIsMjI4MDYsMjM5MTYsMjQwMTMsMjk0NzcsMzAwMzEsNjM5MzAsNjM5MzEsMjA3MDksMjA5ODUsMjI1NzUsMjI4MjksMjI5MzQsMjMwMDIsMjM1MjUsNjM5MzIsNjM5MzMsMjM5NzAsMjUzMDMsMjU2MjIsMjU3NDcsMjU4NTQsNjM5MzQs''@;'; put 'put ''MjYzMzIsNjM5MzUsMjcyMDgsNjM5MzYsMjkxODMsMjk3OTYsNjM5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzEzNjgsMzE0MDcsMzIzMjcsMzIzNTAsMzI3NjgsMzMxMzYsNjM5MzgsMzQ3OTksMzUyMDEsMzU2MTYsMzY5NTMsNjM5MzksMzY5OTIsMzkyNTAsMjQ5NTgsMjc0NDIsMjgwMjAsMzIyODcsMzUxMDksMzY3ODUsMjA0MzMsMjA2NTMsMjA4ODcs''@;'; put 'put ''MjExOTEsMjI0NzEsMjI2NjUsMjM0ODEsMjQyNDgsMjQ4OTgsMjcwMjksMjgwNDQsMjgyNjMsMjgzNDIsMjkwNzYsMjk3OTQsMjk5OTIsMjk5OTYsMzI4ODMsMzM1OTIsMzM5OTMsMzYzNjIsMzc3ODAsMzc4NTQsNjM5NDAsMjAxMTAsMjAzMDUsMjA1OTgsMjA3NzgsMjE0NDgsMjE0NTEsMjE0''@;'; put 'put ''OTEsMjM0MzEsMjM1MDcsMjM1ODgsMjQ4NTgsMjQ5NjIsMjYxMDAsMjkyNzUsMjk1OTEsMjk3NjAsMzA0MDIsMzEwNTYsMzExMjEsMzExNjEsMzIwMDYsMzI3MDEsMzM0MTksMzQyNjEsMzQzOTgsMzY4MDIsMzY5MzUsMzcxMDksMzczNTQsMzg1MzMsMzg2MzIsMzg2MzMsMjEyMDYsMjQ0MjMs''@;'; put 'put ''MjYwOTMsMjYxNjEsMjY2NzEsMjkwMjAsMzEyODYsMzcwNTcsMzg5MjIsMjAxMTMsNjM5NDEsMjcyMTgsMjc1NTAsMjg1NjAsMjkwNjUsMzI3OTIsMzM0NjQsMzQxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5MzksMzg1NDksMzg2NDIsMzg5MDcsMzQwNzQsMzk3MjksMjAxMTIsMjkwNjYsMzg1OTYsMjA4MDMsMjE0MDcsMjE3MjksMjIyOTEsMjIyOTAs''@;'; put 'put ''MjI0MzUsMjMxOTUsMjMyMzYsMjM0OTEsMjQ2MTYsMjQ4OTUsMjU1ODgsMjc3ODEsMjc5NjEsMjgyNzQsMjgzMDQsMjkyMzIsMjk1MDMsMjk3ODMsMzM0ODksMzQ5NDUsMzY2NzcsMzY5NjAsNjM5NDIsMzg0OTgsMzllMyw0MDIxOSwyNjM3NiwzNjIzNCwzNzQ3MCwyMDMwMSwyMDU1MywyMDcw''@;'; put 'put ''MiwyMTM2MSwyMjI4NSwyMjk5NiwyMzA0MSwyMzU2MSwyNDk0NCwyNjI1NiwyODIwNSwyOTIzNCwyOTc3MSwzMjIzOSwzMjk2MywzMzgwNiwzMzg5NCwzNDExMSwzNDY1NSwzNDkwNywzNTA5NiwzNTU4NiwzNjk0OSwzODg1OSwzOTc1OSwyMDA4MywyMDM2OSwyMDc1NCwyMDg0Miw2Mzk0Mywy''@;'; put 'put ''MTgwNywyMTkyOSwyMzQxOCwyMzQ2MSwyNDE4OCwyNDE4OSwyNDI1NCwyNDczNiwyNDc5OSwyNDg0MCwyNDg0MSwyNTU0MCwyNTkxMiwyNjM3Nyw2Mzk0NCwyNjU4MCwyNjU4Niw2Mzk0NSwyNjk3NywyNjk3OCwyNzgzMywyNzk0Myw2Mzk0NiwyODIxNiw2Mzk0NyxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyODY0MSwyOTQ5NCwyOTQ5NSw2Mzk0OCwyOTc4OCwz''@;'; put 'put ''MDAwMSw2Mzk0OSwzMDI5MCw2Mzk1MCw2Mzk1MSwzMjE3MywzMzI3OCwzMzg0OCwzNTAyOSwzNTQ4MCwzNTU0NywzNTU2NSwzNjQwMCwzNjQxOCwzNjkzOCwzNjkyNiwzNjk4NiwzNzE5MywzNzMyMSwzNzc0Miw2Mzk1Miw2Mzk1MywyMjUzNyw2Mzk1NCwyNzYwMywzMjkwNSwzMjk0Niw2Mzk1''@;'; put 'put ''NSw2Mzk1NiwyMDgwMSwyMjg5MSwyMzYwOSw2Mzk1Nyw2Mzk1OCwyODUxNiwyOTYwNywzMjk5NiwzNjEwMyw2Mzk1OSwzNzM5OSwzODI4Nyw2Mzk2MCw2Mzk2MSw2Mzk2Miw2Mzk2MywzMjg5NSwyNTEwMiwyODcwMCwzMjEwNCwzNDcwMSw2Mzk2NCwyMjQzMiwyNDY4MSwyNDkwMywyNzU3NSwz''@;'; put 'put ''NTUxOCwzNzUwNCwzODU3NywyMDA1NywyMTUzNSwyODEzOSwzNDA5MywzODUxMiwzODg5OSwzOTE1MCwyNTU1OCwyNzg3NSwzNzAwOSwyMDk1NywyNTAzMywzMzIxMCw0MDQ0MSwyMDM4MSwyMDUwNiwyMDczNiwyMzQ1MiwyNDg0NywyNTA4NywyNTgzNiwyNjg4NSwyNzU4OSwzMDA5NywzMDY5''@;'; put 'put ''MSwzMjY4MSwzMzM4MCwzNDE5MSwzNDgxMSwzNDkxNSwzNTUxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNTY5NiwzNzI5MSwyMDEwOCwyMDE5NywyMDIzNCw2Mzk2NSw2Mzk2NiwyMjgzOSwyMzAxNiw2Mzk2NywyNDA1MCwyNDM0NywyNDQxMSwyNDYwOSw2Mzk2OCw2Mzk2OSw2Mzk3MCw2Mzk3MSwyOTI0NiwyOTY2OSw2Mzk3MiwzMDA2NCwzMDE1Nyw2Mzk3''@;'; put 'put ''MywzMTIyNyw2Mzk3NCwzMjc4MCwzMjgxOSwzMjkwMCwzMzUwNSwzMzYxNyw2Mzk3NSw2Mzk3NiwzNjAyOSwzNjAxOSwzNjk5OSw2Mzk3Nyw2Mzk3OCwzOTE1NiwzOTE4MCw2Mzk3OSw2Mzk4MCwyODcyNywzMDQxMCwzMjcxNCwzMjcxNiwzMjc2NCwzNTYxMCwyMDE1NCwyMDE2MSwyMDk5NSwy''@;'; put 'put ''MTM2MCw2Mzk4MSwyMTY5MywyMjI0MCwyMzAzNSwyMzQ5MywyNDM0MSwyNDUyNSwyODI3MCw2Mzk4Miw2Mzk4MywzMjEwNiwzMzU4OSw2Mzk4NCwzNDQ1MSwzNTQ2OSw2Mzk4NSwzODc2NSwzODc3NSw2Mzk4Niw2Mzk4NywxOTk2OCwyMDMxNCwyMDM1MCwyMjc3NywyNjA4NSwyODMyMiwzNjky''@;'; put 'put ''MCwzNzgwOCwzOTM1MywyMDIxOSwyMjc2NCwyMjkyMiwyMzAwMSwyNDY0MSw2Mzk4OCw2Mzk4OSwzMTI1Miw2Mzk5MCwzMzYxNSwzNjAzNSwyMDgzNywyMTMxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzk5MSw2Mzk5Miw2Mzk5MywyMDE3MywyMTA5NywyMzM4MSwzMzQ3MSwyMDE4MCwyMTA1MCwyMTY3MiwyMjk4NSwyMzAzOSwyMzM3NiwyMzM4MywyMzM4''@;'; put 'put ''OCwyNDY3NSwyNDkwNCwyODM2MywyODgyNSwyOTAzOCwyOTU3NCwyOTk0MywzMDEzMywzMDkxMywzMjA0MywzMjc3MywzMzI1OCwzMzU3NiwzNDA3MSwzNDI0OSwzNTU2NiwzNjAzOSwzODYwNCwyMDMxNiwyMTI0MiwyMjIwNCwyNjAyNywyNjE1MiwyODc5NiwyODg1NiwyOTIzNywzMjE4OSwz''@;'; put 'put ''MzQyMSwzNzE5NiwzODU5Miw0MDMwNiwyMzQwOSwyNjg1NSwyNzU0NCwyODUzOCwzMDQzMCwyMzY5NywyNjI4MywyODUwNywzMTY2OCwzMTc4NiwzNDg3MCwzODYyMCwxOTk3NiwyMDE4MywyMTI4MCwyMjU4MCwyMjcxNSwyMjc2NywyMjg5MiwyMzU1OSwyNDExNSwyNDE5NiwyNDM3MywyNTQ4''@;'; put 'put ''NCwyNjI5MCwyNjQ1NCwyNzE2NywyNzI5OSwyNzQwNCwyODQ3OSwyOTI1NCw2Mzk5NCwyOTUyMCwyOTgzNSwzMTQ1NiwzMTkxMSwzMzE0NCwzMzI0NywzMzI1NSwzMzY3NCwzMzkwMCwzNDA4MywzNDE5NiwzNDI1NSwzNTAzNywzNjExNSwzNzI5MiwzODI2MyxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODU1NiwyMDg3NywyMTcwNSwyMjMxMiwyMzQ3MiwyNTE2''@;'; put 'put ''NSwyNjQ0OCwyNjY4NSwyNjc3MSwyODIyMSwyODM3MSwyODc5NywzMjI4OSwzNTAwOSwzNjAwMSwzNjYxNyw0MDc3OSw0MDc4MiwyOTIyOSwzMTYzMSwzNTUzMywzNzY1OCwyMDI5NSwyMDMwMiwyMDc4NiwyMTYzMiwyMjk5MiwyNDIxMywyNTI2OSwyNjQ4NSwyNjk5MCwyNzE1OSwyNzgyMiwy''@;'; put 'put ''ODE4NiwyOTQwMSwyOTQ4MiwzMDE0MSwzMTY3MiwzMjA1MywzMzUxMSwzMzc4NSwzMzg3OSwzNDI5NSwzNTQxOSwzNjAxNSwzNjQ4NywzNjg4OSwzNzA0OCwzODYwNiw0MDc5OSwyMTIxOSwyMTUxNCwyMzI2NSwyMzQ5MCwyNTY4OCwyNTk3MywyODQwNCwyOTM4MCw2Mzk5NSwzMDM0MCwzMTMw''@;'; put 'put ''OSwzMTUxNSwzMTgyMSwzMjMxOCwzMjczNSwzMzY1OSwzNTYyNywzNjA0MiwzNjE5NiwzNjMyMSwzNjQ0NywzNjg0MiwzNjg1NywzNjk2OSwzNzg0MSwyMDI5MSwyMDM0NiwyMDY1OSwyMDg0MCwyMDg1NiwyMTA2OSwyMTA5OCwyMjYyNSwyMjY1MiwyMjg4MCwyMzU2MCwyMzYzNywyNDI4Mywy''@;'; put 'put ''NDczMSwyNTEzNiwyNjY0MywyNzU4MywyNzY1NiwyODU5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCwyOTAwNiwyOTcyOCwzZTQsMzAwMDgsMzAwMzMsMzAzMjIsMzE1NjQsMzE2MjcsMzE2NjEsMzE2ODYsMzIzOTksMzU0MzgsMzY2NzAsMzY2ODEsMzc0MzksMzc1MjMsMzc2NjYsMzc5MzEsMzg2NTEsMzkwMDIsMzkwMTksMzkxOTgsMjA5OTksMjUxMzAsMjUy''@;'; put 'put ''NDAsMjc5OTMsMzAzMDgsMzE0MzQsMzE2ODAsMzIxMTgsMjEzNDQsMjM3NDIsMjQyMTUsMjg0NzIsMjg4NTcsMzE4OTYsMzg2NzMsMzk4MjIsNDA2NzAsMjU1MDksMjU3MjIsMzQ2NzgsMTk5NjksMjAxMTcsMjAxNDEsMjA1NzIsMjA1OTcsMjE1NzYsMjI5NzksMjM0NTAsMjQxMjgsMjQyMzcs''@;'; put 'put ''MjQzMTEsMjQ0NDksMjQ3NzMsMjU0MDIsMjU5MTksMjU5NzIsMjYwNjAsMjYyMzAsMjYyMzIsMjY2MjIsMjY5ODQsMjcyNzMsMjc0OTEsMjc3MTIsMjgwOTYsMjgxMzYsMjgxOTEsMjgyNTQsMjg3MDIsMjg4MzMsMjk1ODIsMjk2OTMsMzAwMTAsMzA1NTUsMzA4NTUsMzExMTgsMzEyNDMsMzEz''@;'; put 'put ''NTcsMzE5MzQsMzIxNDIsMzMzNTEsMzUzMzAsMzU1NjIsMzU5OTgsMzcxNjUsMzcxOTQsMzczMzYsMzc0NzgsMzc1ODAsMzc2NjQsMzg2NjIsMzg3NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg3NDgsMzg5MTQsNDA3MTgsMjEwNDYsMjExMzcsMjE4ODQsMjI1NjQsMjQwOTMsMjQzNTEsMjQ3MTYsMjU1NTIsMjY3OTksMjg2MzksMzEwODUsMzE1MzIsMzMy''@;'; put 'put ''MjksMzQyMzQsMzUwNjksMzU1NzYsMzY0MjAsMzcyNjEsMzg1MDAsMzg1NTUsMzg3MTcsMzg5ODgsNDA3NzgsMjA0MzAsMjA4MDYsMjA5MzksMjExNjEsMjIwNjYsMjQzNDAsMjQ0MjcsMjU1MTQsMjU4MDUsMjYwODksMjYxNzcsMjYzNjIsMjYzNjEsMjYzOTcsMjY3ODEsMjY4MzksMjcxMzMs''@;'; put 'put ''Mjg0MzcsMjg1MjYsMjkwMzEsMjkxNTcsMjkyMjYsMjk4NjYsMzA1MjIsMzEwNjIsMzEwNjYsMzExOTksMzEyNjQsMzEzODEsMzE4OTUsMzE5NjcsMzIwNjgsMzIzNjgsMzI5MDMsMzQyOTksMzQ0NjgsMzU0MTIsMzU1MTksMzYyNDksMzY0ODEsMzY4OTYsMzY5NzMsMzczNDcsMzg0NTksMzg2''@;'; put 'put ''MTMsNDAxNjUsMjYwNjMsMzE3NTEsMzYyNzUsMzc4MjcsMjMzODQsMjM1NjIsMjEzMzAsMjUzMDUsMjk0NjksMjA1MTksMjM0NDcsMjQ0NzgsMjQ3NTIsMjQ5MzksMjY4MzcsMjgxMjEsMjk3NDIsMzEyNzgsMzIwNjYsMzIxNTYsMzIzMDUsMzMxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYzOTQsMzY0MDUsMzc3NTgsMzc5MTIsMjAzMDQsMjIzNTIsMjQw''@;'; put 'put ''MzgsMjQyMzEsMjUzODcsMzI2MTgsMjAwMjcsMjAzMDMsMjAzNjcsMjA1NzAsMjMwMDUsMzI5NjQsMjE2MTAsMjE2MDgsMjIwMTQsMjI4NjMsMjM0NDksMjQwMzAsMjQyODIsMjYyMDUsMjY0MTcsMjY2MDksMjY2NjYsMjc4ODAsMjc5NTQsMjgyMzQsMjg1NTcsMjg4NTUsMjk2NjQsMzAwODcs''@;'; put 'put ''MzE4MjAsMzIwMDIsMzIwNDQsMzIxNjIsMzMzMTEsMzQ1MjMsMzUzODcsMzU0NjEsMzYyMDgsMzY0OTAsMzY2NTksMzY5MTMsMzcxOTgsMzcyMDIsMzc5NTYsMzkzNzYsMzE0ODEsMzE5MDksMjA0MjYsMjA3MzcsMjA5MzQsMjI0NzIsMjM1MzUsMjM4MDMsMjYyMDEsMjcxOTcsMjc5OTQsMjgz''@;'; put 'put ''MTAsMjg2NTIsMjg5NDAsMzAwNjMsMzE0NTksMzQ4NTAsMzY4OTcsMzY5ODEsMzg2MDMsMzk0MjMsMzM1MzcsMjAwMTMsMjAyMTAsMzQ4ODYsMzczMjUsMjEzNzMsMjczNTUsMjY5ODcsMjc3MTMsMzM5MTQsMjI2ODYsMjQ5NzQsMjYzNjYsMjUzMjcsMjg4OTMsMjk5NjksMzAxNTEsMzIzMzgs''@;'; put 'put ''MzM5NzYsMzU2NTcsMzYxMDQsMjAwNDMsMjE0ODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsMjE2NzUsMjIzMjAsMjIzMzYsMjQ1MzUsMjUzNDUsMjUzNTEsMjU3MTEsMjU5MDMsMjYwODgsMjYyMzQsMjY1MjUsMjY1NDcsMjc0OTAsMjc3NDQsMjc4MDIsMjg0NjAsMzA2OTMsMzA3NTcsMzEwNDksMzEwNjMsMzIwMjUsMzI5MzAsMzMwMjYsMzMyNjcsMzM0Mzcs''@;'; put 'put ''MzM0NjMsMzQ1ODQsMzU0NjgsNjM5OTYsMzYxMDAsMzYyODYsMzY5NzgsMzA0NTIsMzEyNTcsMzEyODcsMzIzNDAsMzI4ODcsMjE3NjcsMjE5NzIsMjI2NDUsMjUzOTEsMjU2MzQsMjYxODUsMjYxODcsMjY3MzMsMjcwMzUsMjc1MjQsMjc5NDEsMjgzMzcsMjk2NDUsMjk4MDAsMjk4NTcsMzAw''@;'; put 'put ''NDMsMzAxMzcsMzA0MzMsMzA0OTQsMzA2MDMsMzEyMDYsMzIyNjUsMzIyODUsMzMyNzUsMzQwOTUsMzQ5NjcsMzUzODYsMzYwNDksMzY1ODcsMzY3ODQsMzY5MTQsMzc4MDUsMzg0OTksMzg1MTUsMzg2NjMsMjAzNTYsMjE0ODksMjMwMTgsMjMyNDEsMjQwODksMjY3MDIsMjk4OTQsMzAxNDIs''@;'; put 'put ''MzEyMDksMzEzNzgsMzMxODcsMzQ1NDEsMzYwNzQsMzYzMDAsMzY4NDUsMjYwMTUsMjYzODksNjM5OTcsMjI1MTksMjg1MDMsMzIyMjEsMzY2NTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc4NzgsMzg1OTgsMjQ1MDEsMjUwNzQsMjg1NDgsMTk5ODgsMjAzNzYsMjA1MTEsMjE0NDksMjE5ODMsMjM5MTksMjQwNDYsMjc0MjUsMjc0OTIsMzA5MjMsMzE2NDIs''@;'; put 'put ''NjM5OTgsMzY0MjUsMzY1NTQsMzY5NzQsMjU0MTcsMjU2NjIsMzA1MjgsMzEzNjQsMzc2NzksMzgwMTUsNDA4MTAsMjU3NzYsMjg1OTEsMjkxNTgsMjk4NjQsMjk5MTQsMzE0MjgsMzE3NjIsMzIzODYsMzE5MjIsMzI0MDgsMzU3MzgsMzYxMDYsMzgwMTMsMzkxODQsMzkyNDQsMjEwNDksMjM1''@;'; put 'put ''MTksMjU4MzAsMjY0MTMsMzIwNDYsMjA3MTcsMjE0NDMsMjI2NDksMjQ5MjAsMjQ5MjEsMjUwODIsMjYwMjgsMzE0NDksMzU3MzAsMzU3MzQsMjA0ODksMjA1MTMsMjExMDksMjE4MDksMjMxMDAsMjQyODgsMjQ0MzIsMjQ4ODQsMjU5NTAsMjYxMjQsMjYxNjYsMjYyNzQsMjcwODUsMjgzNTYs''@;'; put 'put ''Mjg0NjYsMjk0NjIsMzAyNDEsMzEzNzksMzMwODEsMzMzNjksMzM3NTAsMzM5ODAsMjA2NjEsMjI1MTIsMjM0ODgsMjM1MjgsMjQ0MjUsMjU1MDUsMzA3NTgsMzIxODEsMzM3NTYsMzQwODEsMzczMTksMzczNjUsMjA4NzQsMjY2MTMsMzE1NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYwMTIsMjA5MzIsMjI5NzEsMjQ3NjUsMzQzODksMjA1MDgsNjM5OTks''@;'; put 'put ''MjEwNzYsMjM2MTAsMjQ5NTcsMjUxMTQsMjUyOTksMjU4NDIsMjYwMjEsMjgzNjQsMzAyNDAsMzMwMzQsMzY0NDgsMzg0OTUsMzg1ODcsMjAxOTEsMjEzMTUsMjE5MTIsMjI4MjUsMjQwMjksMjU3OTcsMjc4NDksMjgxNTQsMjk1ODgsMzEzNTksMzMzMDcsMzQyMTQsMzYwNjgsMzYzNjgsMzY5''@;'; put 'put ''ODMsMzczNTEsMzgzNjksMzg0MzMsMzg4NTQsMjA5ODQsMjE3NDYsMjE4OTQsMjQ1MDUsMjU3NjQsMjg1NTIsMzIxODAsMzY2MzksMzY2ODUsMzc5NDEsMjA2ODEsMjM1NzQsMjc4MzgsMjgxNTUsMjk5NzksMzA2NTEsMzE4MDUsMzE4NDQsMzU0NDksMzU1MjIsMjI1NTgsMjI5NzQsMjQwODYs''@;'; put 'put ''MjU0NjMsMjkyNjYsMzAwOTAsMzA1NzEsMzU1NDgsMzYwMjgsMzY2MjYsMjQzMDcsMjYyMjgsMjgxNTIsMzI4OTMsMzM3MjksMzU1MzEsMzg3MzcsMzk4OTQsNjRlMywyMTA1OSwyNjM2NywyODA1MywyODM5OSwzMjIyNCwzNTU1OCwzNjkxMCwzNjk1OCwzOTYzNiwyMTAyMSwyMTExOSwyMTcz''@;'; put 'put ''NiwyNDk4MCwyNTIyMCwyNTMwNywyNjc4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCwyNjg5OCwyNjk3MCwyNzE4OSwyODgxOCwyODk2NiwzMDgxMywzMDk3NywzMDk5MCwzMTE4NiwzMTI0NSwzMjkxOCwzMzQwMCwzMzQ5MywzMzYwOSwzNDEyMSwzNTk3MCwzNjIyOSwzNzIxOCwzNzI1OSwzNzI5NCwyMDQxOSwyMjIyNSwyOTE2NSwzMDY3OSwzNDU2MCwzNTMy''@;'; put 'put ''MCwyMzU0NCwyNDUzNCwyNjQ0OSwzNzAzMiwyMTQ3NCwyMjYxOCwyMzU0MSwyNDc0MCwyNDk2MSwyNTY5NiwzMjMxNywzMjg4MCwzNDA4NSwzNzUwNywyNTc3NCwyMDY1MiwyMzgyOCwyNjM2OCwyMjY4NCwyNTI3NywyNTUxMiwyNjg5NCwyN2UzLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMz''@;'; put 'put ''NDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQz''@;'; put 'put ''LDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAxLDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYxLDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0''@;'; put 'put ''LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMwMzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMyNjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQw''@;'; put 'put ''Nzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgyLDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcx''@;'; put 'put ''LDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYw''@;'; put 'put ''LDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMz''@;'; put 'put ''NDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcxLDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcx''@;'; put 'put ''LDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5''@;'; put 'put ''OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIwNDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMy''@;'; put 'put ''NzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUzLDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3''@;'; put 'put ''LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIx''@;'; put 'put ''MTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3''@;'; put 'put ''ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5NzgxLDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcy''@;'; put 'put ''LDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIwOTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQw''@;'; put 'put ''NTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIz''@;'; put 'put ''NDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIxLDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1''@;'; put 'put ''LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIwNDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMw''@;'; put 'put ''NTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMyLDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMzLDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2''@;'; put 'put ''LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2MjkxLDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0''@;'; put 'put ''LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMy''@;'; put 'put ''OTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTczLDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5''@;'; put 'put ''LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYy''@;'; put 'put ''LDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3''@;'; put 'put ''MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0''@;'; put 'put ''LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0''@;'; put 'put ''LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0''@;'; put 'put ''NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgyLDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMzLDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3''@;'; put 'put ''LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMx''@;'; put 'put ''MjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGdiMTgwMzA6WzE5OTcwLDE5OTcyLDE5''@;'; put 'put ''OTczLDE5OTc0LDE5OTgzLDE5OTg2LDE5OTkxLDE5OTk5LDJlNCwyMDAwMSwyMDAwMywyMDAwNiwyMDAwOSwyMDAxNCwyMDAxNSwyMDAxNywyMDAxOSwyMDAyMSwyMDAyMywyMDAyOCwyMDAzMiwyMDAzMywyMDAzNCwyMDAzNiwyMDAzOCwyMDA0MiwyMDA0OSwyMDA1MywyMDA1NSwyMDA1OCwy''@;'; put 'put ''MDA1OSwyMDA2NiwyMDA2NywyMDA2OCwyMDA2OSwyMDA3MSwyMDA3MiwyMDA3NCwyMDA3NSwyMDA3NiwyMDA3NywyMDA3OCwyMDA3OSwyMDA4MiwyMDA4NCwyMDA4NSwyMDA4NiwyMDA4NywyMDA4OCwyMDA4OSwyMDA5MCwyMDA5MSwyMDA5MiwyMDA5MywyMDA5NSwyMDA5NiwyMDA5NywyMDA5''@;'; put 'put ''OCwyMDA5OSwyMDEwMCwyMDEwMSwyMDEwMywyMDEwNiwyMDExMiwyMDExOCwyMDExOSwyMDEyMSwyMDEyNCwyMDEyNSwyMDEyNiwyMDEzMSwyMDEzOCwyMDE0MywyMDE0NCwyMDE0NSwyMDE0OCwyMDE1MCwyMDE1MSwyMDE1MiwyMDE1MywyMDE1NiwyMDE1NywyMDE1OCwyMDE2OCwyMDE3Miwy''@;'; put 'put ''MDE3NSwyMDE3NiwyMDE3OCwyMDE4NiwyMDE4NywyMDE4OCwyMDE5MiwyMDE5NCwyMDE5OCwyMDE5OSwyMDIwMSwyMDIwNSwyMDIwNiwyMDIwNywyMDIwOSwyMDIxMiwyMDIxNiwyMDIxNywyMDIxOCwyMDIyMCwyMDIyMiwyMDIyNCwyMDIyNiwyMDIyNywyMDIyOCwyMDIyOSwyMDIzMCwyMDIz''@;'; put 'put ''MSwyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0MywyMDI0NCwyMDI0NSwyMDI0NiwyMDI1MiwyMDI1MywyMDI1NywyMDI1OSwyMDI2NCwyMDI2NSwyMDI2OCwyMDI2OSwyMDI3MCwyMDI3MywyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4NywyMDI4OCwyMDI4OSwy''@;'; put 'put ''MDI5MCwyMDI5MiwyMDI5MywyMDI5NSwyMDI5NiwyMDI5NywyMDI5OCwyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMyMSwyMDMyMiwyMDMyNiwyMDMyOCwyMDMzMCwyMDMzMSwyMDMzMywyMDMzNCwyMDMzNywyMDMzOCwyMDM0MSwyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0''@;'; put 'put ''OSwyMDM1MiwyMDM1MywyMDM1NCwyMDM1NywyMDM1OCwyMDM1OSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MywyMDM3NCwyMDM3NiwyMDM3NywyMDM3OCwyMDM4MCwyMDM4MiwyMDM4MywyMDM4NSwyMDM4NiwyMDM4OCwyMDM5NSwyMDM5NywyMDQwMCwyMDQwMSwy''@;'; put 'put ''MDQwMiwyMDQwMywyMDQwNCwyMDQwNiwyMDQwNywyMDQwOCwyMDQwOSwyMDQxMCwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQxOCwyMDQyMiwyMDQyMywyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzNCwyMDQzNSwyMDQzNiwyMDQzNywyMDQzOCwyMDQ0''@;'; put 'put ''MSwyMDQ0MywyMDQ0OCwyMDQ1MCwyMDQ1MiwyMDQ1MywyMDQ1NSwyMDQ1OSwyMDQ2MCwyMDQ2NCwyMDQ2NiwyMDQ2OCwyMDQ2OSwyMDQ3MCwyMDQ3MSwyMDQ3MywyMDQ3NSwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4MiwyMDQ4MywyMDQ4NCwyMDQ4NSwyMDQ4NiwyMDQ4Nywy''@;'; put 'put ''MDQ4OCwyMDQ4OSwyMDQ5MCwyMDQ5MSwyMDQ5NCwyMDQ5NiwyMDQ5NywyMDQ5OSwyMDUwMSwyMDUwMiwyMDUwMywyMDUwNywyMDUwOSwyMDUxMCwyMDUxMiwyMDUxNCwyMDUxNSwyMDUxNiwyMDUxOSwyMDUyMywyMDUyNywyMDUyOCwyMDUyOSwyMDUzMCwyMDUzMSwyMDUzMiwyMDUzMywyMDUz''@;'; put 'put ''NCwyMDUzNSwyMDUzNiwyMDUzNywyMDUzOSwyMDU0MSwyMDU0MywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OCwyMDU0OSwyMDU1MCwyMDU1MywyMDU1NCwyMDU1NSwyMDU1NywyMDU2MCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NCwyMDU2NiwyMDU2NywyMDU2OCwyMDU2OSwyMDU3MSwyMDU3Mywy''@;'; put 'put ''MDU3NCwyMDU3NSwyMDU3NiwyMDU3NywyMDU3OCwyMDU3OSwyMDU4MCwyMDU4MiwyMDU4MywyMDU4NCwyMDU4NSwyMDU4NiwyMDU4NywyMDU4OSwyMDU5MCwyMDU5MSwyMDU5MiwyMDU5MywyMDU5NCwyMDU5NSwyMDU5NiwyMDU5NywyMDYwMCwyMDYwMSwyMDYwMiwyMDYwNCwyMDYwNSwyMDYw''@;'; put 'put ''OSwyMDYxMCwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxNSwyMDYxNywyMDYxOCwyMDYxOSwyMDYyMCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNSwyMDYyNiwyMDYyNywyMDYyOCwyMDYyOSwyMDYzMCwyMDYzMSwyMDYzMiwyMDYzMywyMDYzNCwyMDYzNSwyMDYzNiwyMDYzNywyMDYzOCwyMDYzOSwy''@;'; put 'put ''MDY0MCwyMDY0MSwyMDY0MiwyMDY0NCwyMDY0NiwyMDY1MCwyMDY1MSwyMDY1MywyMDY1NCwyMDY1NSwyMDY1NiwyMDY1NywyMDY1OSwyMDY2MCwyMDY2MSwyMDY2MiwyMDY2MywyMDY2NCwyMDY2NSwyMDY2OCwyMDY2OSwyMDY3MCwyMDY3MSwyMDY3MiwyMDY3MywyMDY3NCwyMDY3NSwyMDY3''@;'; put 'put ''NiwyMDY3NywyMDY3OCwyMDY3OSwyMDY4MCwyMDY4MSwyMDY4MiwyMDY4MywyMDY4NCwyMDY4NSwyMDY4NiwyMDY4OCwyMDY4OSwyMDY5MCwyMDY5MSwyMDY5MiwyMDY5MywyMDY5NSwyMDY5NiwyMDY5NywyMDY5OSwyMDcwMCwyMDcwMSwyMDcwMiwyMDcwMywyMDcwNCwyMDcwNSwyMDcwNiwy''@;'; put 'put ''MDcwNywyMDcwOCwyMDcwOSwyMDcxMiwyMDcxMywyMDcxNCwyMDcxNSwyMDcxOSwyMDcyMCwyMDcyMSwyMDcyMiwyMDcyNCwyMDcyNiwyMDcyNywyMDcyOCwyMDcyOSwyMDczMCwyMDczMiwyMDczMywyMDczNCwyMDczNSwyMDczNiwyMDczNywyMDczOCwyMDczOSwyMDc0MCwyMDc0MSwyMDc0''@;'; put 'put ''NCwyMDc0NSwyMDc0NiwyMDc0OCwyMDc0OSwyMDc1MCwyMDc1MSwyMDc1MiwyMDc1MywyMDc1NSwyMDc1NiwyMDc1NywyMDc1OCwyMDc1OSwyMDc2MCwyMDc2MSwyMDc2MiwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc2NywyMDc2OCwyMDc3MCwyMDc3MSwyMDc3MiwyMDc3MywyMDc3NCwy''@;'; put 'put ''MDc3NSwyMDc3NiwyMDc3NywyMDc3OCwyMDc3OSwyMDc4MCwyMDc4MSwyMDc4MiwyMDc4MywyMDc4NCwyMDc4NSwyMDc4NiwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MCwyMDc5MSwyMDc5MiwyMDc5MywyMDc5NCwyMDc5NSwyMDc5NiwyMDc5NywyMDc5OCwyMDgwMiwyMDgwNywyMDgxMCwyMDgx''@;'; put 'put ''MiwyMDgxNCwyMDgxNSwyMDgxNiwyMDgxOCwyMDgxOSwyMDgyMywyMDgyNCwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyMDgzMSwyMDgzMiwyMDgzMywyMDgzNSwyMDgzNiwyMDgzOCwyMDgzOSwyMDg0MSwyMDg0MiwyMDg0NywyMDg1MCwyMDg1OCwyMDg2MiwyMDg2MywyMDg2NywyMDg2OCwy''@;'; put 'put ''MDg3MCwyMDg3MSwyMDg3NCwyMDg3NSwyMDg3OCwyMDg3OSwyMDg4MCwyMDg4MSwyMDg4MywyMDg4NCwyMDg4OCwyMDg5MCwyMDg5MywyMDg5NCwyMDg5NSwyMDg5NywyMDg5OSwyMDkwMiwyMDkwMywyMDkwNCwyMDkwNSwyMDkwNiwyMDkwOSwyMDkxMCwyMDkxNiwyMDkyMCwyMDkyMSwyMDky''@;'; put 'put ''MiwyMDkyNiwyMDkyNywyMDkyOSwyMDkzMCwyMDkzMSwyMDkzMywyMDkzNiwyMDkzOCwyMDk0MSwyMDk0MiwyMDk0NCwyMDk0NiwyMDk0NywyMDk0OCwyMDk0OSwyMDk1MCwyMDk1MSwyMDk1MiwyMDk1MywyMDk1NCwyMDk1NiwyMDk1OCwyMDk1OSwyMDk2MiwyMDk2MywyMDk2NSwyMDk2Niwy''@;'; put 'put ''MDk2NywyMDk2OCwyMDk2OSwyMDk3MCwyMDk3MiwyMDk3NCwyMDk3NywyMDk3OCwyMDk4MCwyMDk4MywyMDk5MCwyMDk5NiwyMDk5NywyMTAwMSwyMTAwMywyMTAwNCwyMTAwNywyMTAwOCwyMTAxMSwyMTAxMiwyMTAxMywyMTAyMCwyMTAyMiwyMTAyMywyMTAyNSwyMTAyNiwyMTAyNywyMTAy''@;'; put 'put ''OSwyMTAzMCwyMTAzMSwyMTAzNCwyMTAzNiwyMTAzOSwyMTA0MSwyMTA0MiwyMTA0NCwyMTA0NSwyMTA1MiwyMTA1NCwyMTA2MCwyMTA2MSwyMTA2MiwyMTA2MywyMTA2NCwyMTA2NSwyMTA2NywyMTA3MCwyMTA3MSwyMTA3NCwyMTA3NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MSwyMTA4Miwy''@;'; put 'put ''MTA4MywyMTA4NSwyMTA4NywyMTA4OCwyMTA5MCwyMTA5MSwyMTA5MiwyMTA5NCwyMTA5NiwyMTA5OSwyMTEwMCwyMTEwMSwyMTEwMiwyMTEwNCwyMTEwNSwyMTEwNywyMTEwOCwyMTEwOSwyMTExMCwyMTExMSwyMTExMiwyMTExMywyMTExNCwyMTExNSwyMTExNiwyMTExOCwyMTEyMCwyMTEy''@;'; put 'put ''MywyMTEyNCwyMTEyNSwyMTEyNiwyMTEyNywyMTEyOSwyMTEzMCwyMTEzMSwyMTEzMiwyMTEzMywyMTEzNCwyMTEzNSwyMTEzNywyMTEzOCwyMTE0MCwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NSwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NiwyMTE2Nywy''@;'; put 'put ''MTE2OCwyMTE3MiwyMTE3MywyMTE3NCwyMTE3NSwyMTE3NiwyMTE3NywyMTE3OCwyMTE3OSwyMTE4MCwyMTE4MSwyMTE4NCwyMTE4NSwyMTE4NiwyMTE4OCwyMTE4OSwyMTE5MCwyMTE5MiwyMTE5NCwyMTE5NiwyMTE5NywyMTE5OCwyMTE5OSwyMTIwMSwyMTIwMywyMTIwNCwyMTIwNSwyMTIw''@;'; put 'put ''NywyMTIwOSwyMTIxMCwyMTIxMSwyMTIxMiwyMTIxMywyMTIxNCwyMTIxNiwyMTIxNywyMTIxOCwyMTIxOSwyMTIyMSwyMTIyMiwyMTIyMywyMTIyNCwyMTIyNSwyMTIyNiwyMTIyNywyMTIyOCwyMTIyOSwyMTIzMCwyMTIzMSwyMTIzMywyMTIzNCwyMTIzNSwyMTIzNiwyMTIzNywyMTIzOCwy''@;'; put 'put ''MTIzOSwyMTI0MCwyMTI0MywyMTI0NCwyMTI0NSwyMTI0OSwyMTI1MCwyMTI1MSwyMTI1MiwyMTI1NSwyMTI1NywyMTI1OCwyMTI1OSwyMTI2MCwyMTI2MiwyMTI2NSwyMTI2NiwyMTI2NywyMTI2OCwyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4MiwyMTI4NCwyMTI4NSwyMTI4''@;'; put 'put ''NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NSwyMTI5NiwyMTI5NywyMTI5OCwyMTI5OSwyMTMwMCwyMTMwMSwyMTMwMiwyMTMwMywyMTMwNCwyMTMwOCwyMTMwOSwyMTMxMiwyMTMxNCwyMTMxNiwyMTMxOCwyMTMyMywyMTMyNCwyMTMyNSwyMTMyOCwyMTMzMiwyMTMzNiwy''@;'; put 'put ''MTMzNywyMTMzOSwyMTM0MSwyMTM0OSwyMTM1MiwyMTM1NCwyMTM1NiwyMTM1NywyMTM2MiwyMTM2NiwyMTM2OSwyMTM3MSwyMTM3MiwyMTM3MywyMTM3NCwyMTM3NiwyMTM3NywyMTM3OSwyMTM4MywyMTM4NCwyMTM4NiwyMTM5MCwyMTM5MSwyMTM5MiwyMTM5MywyMTM5NCwyMTM5NSwyMTM5''@;'; put 'put ''NiwyMTM5OCwyMTM5OSwyMTQwMSwyMTQwMywyMTQwNCwyMTQwNiwyMTQwOCwyMTQwOSwyMTQxMiwyMTQxNSwyMTQxOCwyMTQxOSwyMTQyMCwyMTQyMSwyMTQyMywyMTQyNCwyMTQyNSwyMTQyNiwyMTQyNywyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzMywyMTQzNCwyMTQzNiwyMTQzNywy''@;'; put 'put ''MTQzOCwyMTQ0MCwyMTQ0MywyMTQ0NCwyMTQ0NSwyMTQ0NiwyMTQ0NywyMTQ1NCwyMTQ1NSwyMTQ1NiwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OCwyMTQ2OSwyMTQ3MCwyMTQ3MywyMTQ3NCwyMTQ3OSwyMTQ5MiwyMTQ5OCwyMTUwMiwyMTUwMywyMTUwNCwyMTUwNiwyMTUwOSwyMTUx''@;'; put 'put ''MSwyMTUxNSwyMTUyNCwyMTUyOCwyMTUyOSwyMTUzMCwyMTUzMiwyMTUzOCwyMTU0MCwyMTU0MSwyMTU0NiwyMTU1MiwyMTU1NSwyMTU1OCwyMTU1OSwyMTU2MiwyMTU2NSwyMTU2NywyMTU2OSwyMTU3MCwyMTU3MiwyMTU3MywyMTU3NSwyMTU3NywyMTU4MCwyMTU4MSwyMTU4MiwyMTU4Mywy''@;'; put 'put ''MTU4NSwyMTU5NCwyMTU5NywyMTU5OCwyMTU5OSwyMTYwMCwyMTYwMSwyMTYwMywyMTYwNSwyMTYwNywyMTYwOSwyMTYxMCwyMTYxMSwyMTYxMiwyMTYxMywyMTYxNCwyMTYxNSwyMTYxNiwyMTYyMCwyMTYyNSwyMTYyNiwyMTYzMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTYzOSwyMTY0''@;'; put 'put ''MCwyMTY0MSwyMTY0MiwyMTY0NSwyMTY0OSwyMTY1MSwyMTY1NSwyMTY1NiwyMTY2MCwyMTY2MiwyMTY2MywyMTY2NCwyMTY2NSwyMTY2NiwyMTY2OSwyMTY3OCwyMTY4MCwyMTY4MiwyMTY4NSwyMTY4NiwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MiwyMTY5NCwyMTY5OSwyMTcwMSwyMTcwNiwy''@;'; put 'put ''MTcwNywyMTcxOCwyMTcyMCwyMTcyMywyMTcyOCwyMTcyOSwyMTczMCwyMTczMSwyMTczMiwyMTczOSwyMTc0MCwyMTc0MywyMTc0NCwyMTc0NSwyMTc0OCwyMTc0OSwyMTc1MCwyMTc1MSwyMTc1MiwyMTc1MywyMTc1NSwyMTc1OCwyMTc2MCwyMTc2MiwyMTc2MywyMTc2NCwyMTc2NSwyMTc2''@;'; put 'put ''OCwyMTc3MCwyMTc3MSwyMTc3MiwyMTc3MywyMTc3NCwyMTc3OCwyMTc3OSwyMTc4MSwyMTc4MiwyMTc4MywyMTc4NCwyMTc4NSwyMTc4NiwyMTc4OCwyMTc4OSwyMTc5MCwyMTc5MSwyMTc5MywyMTc5NywyMTc5OCwyMTgwMCwyMTgwMSwyMTgwMywyMTgwNSwyMTgxMCwyMTgxMiwyMTgxMywy''@;'; put 'put ''MTgxNCwyMTgxNiwyMTgxNywyMTgxOCwyMTgxOSwyMTgyMSwyMTgyNCwyMTgyNiwyMTgyOSwyMTgzMSwyMTgzMiwyMTgzNSwyMTgzNiwyMTgzNywyMTgzOCwyMTgzOSwyMTg0MSwyMTg0MiwyMTg0MywyMTg0NCwyMTg0NywyMTg0OCwyMTg0OSwyMTg1MCwyMTg1MSwyMTg1MywyMTg1NCwyMTg1''@;'; put 'put ''NSwyMTg1NiwyMTg1OCwyMTg1OSwyMTg2NCwyMTg2NSwyMTg2NywyMTg3MSwyMTg3MiwyMTg3MywyMTg3NCwyMTg3NSwyMTg3NiwyMTg4MSwyMTg4MiwyMTg4NSwyMTg4NywyMTg5MywyMTg5NCwyMTkwMCwyMTkwMSwyMTkwMiwyMTkwNCwyMTkwNiwyMTkwNywyMTkwOSwyMTkxMCwyMTkxMSwy''@;'; put 'put ''MTkxNCwyMTkxNSwyMTkxOCwyMTkyMCwyMTkyMSwyMTkyMiwyMTkyMywyMTkyNCwyMTkyNSwyMTkyNiwyMTkyOCwyMTkyOSwyMTkzMCwyMTkzMSwyMTkzMiwyMTkzMywyMTkzNCwyMTkzNSwyMTkzNiwyMTkzOCwyMTk0MCwyMTk0MiwyMTk0NCwyMTk0NiwyMTk0OCwyMTk1MSwyMTk1MiwyMTk1''@;'; put 'put ''MywyMTk1NCwyMTk1NSwyMTk1OCwyMTk1OSwyMTk2MCwyMTk2MiwyMTk2MywyMTk2NiwyMTk2NywyMTk2OCwyMTk3MywyMTk3NSwyMTk3NiwyMTk3NywyMTk3OCwyMTk3OSwyMTk4MiwyMTk4NCwyMTk4NiwyMTk5MSwyMTk5MywyMTk5NywyMTk5OCwyMmUzLDIyMDAxLDIyMDA0LDIyMDA2LDIy''@;'; put 'put ''MDA4LDIyMDA5LDIyMDEwLDIyMDExLDIyMDEyLDIyMDE1LDIyMDE4LDIyMDE5LDIyMDIwLDIyMDIxLDIyMDIyLDIyMDIzLDIyMDI2LDIyMDI3LDIyMDI5LDIyMDMyLDIyMDMzLDIyMDM0LDIyMDM1LDIyMDM2LDIyMDM3LDIyMDM4LDIyMDM5LDIyMDQxLDIyMDQyLDIyMDQ0LDIyMDQ1LDIyMDQ4''@;'; put 'put ''LDIyMDQ5LDIyMDUwLDIyMDUzLDIyMDU0LDIyMDU2LDIyMDU3LDIyMDU4LDIyMDU5LDIyMDYyLDIyMDYzLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDcyLDIyMDc0LDIyMDc2LDIyMDc3LDIyMDc4LDIyMDgwLDIyMDgxLDIyMDgyLDIyMDgzLDIyMDg0LDIyMDg1LDIyMDg2LDIyMDg3LDIy''@;'; put 'put ''MDg4LDIyMDg5LDIyMDkwLDIyMDkxLDIyMDk1LDIyMDk2LDIyMDk3LDIyMDk4LDIyMDk5LDIyMTAxLDIyMTAyLDIyMTA2LDIyMTA3LDIyMTA5LDIyMTEwLDIyMTExLDIyMTEyLDIyMTEzLDIyMTE1LDIyMTE3LDIyMTE4LDIyMTE5LDIyMTI1LDIyMTI2LDIyMTI3LDIyMTI4LDIyMTMwLDIyMTMx''@;'; put 'put ''LDIyMTMyLDIyMTMzLDIyMTM1LDIyMTM2LDIyMTM3LDIyMTM4LDIyMTQxLDIyMTQyLDIyMTQzLDIyMTQ0LDIyMTQ1LDIyMTQ2LDIyMTQ3LDIyMTQ4LDIyMTUxLDIyMTUyLDIyMTUzLDIyMTU0LDIyMTU1LDIyMTU2LDIyMTU3LDIyMTYwLDIyMTYxLDIyMTYyLDIyMTY0LDIyMTY1LDIyMTY2LDIy''@;'; put 'put ''MTY3LDIyMTY4LDIyMTY5LDIyMTcwLDIyMTcxLDIyMTcyLDIyMTczLDIyMTc0LDIyMTc1LDIyMTc2LDIyMTc3LDIyMTc4LDIyMTgwLDIyMTgxLDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg2LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkwLDIyMTkyLDIyMTkzLDIyMTk0LDIyMTk1LDIyMTk2''@;'; put 'put ''LDIyMTk3LDIyMTk4LDIyMjAwLDIyMjAxLDIyMjAyLDIyMjAzLDIyMjA1LDIyMjA2LDIyMjA3LDIyMjA4LDIyMjA5LDIyMjEwLDIyMjExLDIyMjEyLDIyMjEzLDIyMjE0LDIyMjE1LDIyMjE2LDIyMjE3LDIyMjE5LDIyMjIwLDIyMjIxLDIyMjIyLDIyMjIzLDIyMjI0LDIyMjI1LDIyMjI2LDIy''@;'; put 'put ''MjI3LDIyMjI5LDIyMjMwLDIyMjMyLDIyMjMzLDIyMjM2LDIyMjQzLDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjQ5LDIyMjUwLDIyMjUyLDIyMjU0LDIyMjU1LDIyMjU4LDIyMjU5LDIyMjYyLDIyMjYzLDIyMjY0LDIyMjY3LDIyMjY4LDIyMjcyLDIyMjczLDIyMjc0LDIyMjc3LDIyMjc5''@;'; put 'put ''LDIyMjgzLDIyMjg0LDIyMjg1LDIyMjg2LDIyMjg3LDIyMjg4LDIyMjg5LDIyMjkwLDIyMjkxLDIyMjkyLDIyMjkzLDIyMjk0LDIyMjk1LDIyMjk2LDIyMjk3LDIyMjk4LDIyMjk5LDIyMzAxLDIyMzAyLDIyMzA0LDIyMzA1LDIyMzA2LDIyMzA4LDIyMzA5LDIyMzEwLDIyMzExLDIyMzE1LDIy''@;'; put 'put ''MzIxLDIyMzIyLDIyMzI0LDIyMzI1LDIyMzI2LDIyMzI3LDIyMzI4LDIyMzMyLDIyMzMzLDIyMzM1LDIyMzM3LDIyMzM5LDIyMzQwLDIyMzQxLDIyMzQyLDIyMzQ0LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyMzU1LDIyMzU2LDIyMzU3LDIyMzU4LDIyMzYwLDIyMzYxLDIyMzcwLDIyMzcxLDIyMzcz''@;'; put 'put ''LDIyMzc1LDIyMzgwLDIyMzgyLDIyMzg0LDIyMzg1LDIyMzg2LDIyMzg4LDIyMzg5LDIyMzkyLDIyMzkzLDIyMzk0LDIyMzk3LDIyMzk4LDIyMzk5LDIyNDAwLDIyNDAxLDIyNDA3LDIyNDA4LDIyNDA5LDIyNDEwLDIyNDEzLDIyNDE0LDIyNDE1LDIyNDE2LDIyNDE3LDIyNDIwLDIyNDIxLDIy''@;'; put 'put ''NDIyLDIyNDIzLDIyNDI0LDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDM3LDIyNDQwLDIyNDQyLDIyNDQ0LDIyNDQ3LDIyNDQ4LDIyNDQ5LDIyNDUxLDIyNDUzLDIyNDU0LDIyNDU1LDIyNDU3LDIyNDU4LDIyNDU5LDIyNDYwLDIyNDYxLDIyNDYyLDIyNDYzLDIyNDY0''@;'; put 'put ''LDIyNDY1LDIyNDY4LDIyNDY5LDIyNDcwLDIyNDcxLDIyNDcyLDIyNDczLDIyNDc0LDIyNDc2LDIyNDc3LDIyNDgwLDIyNDgxLDIyNDgzLDIyNDg2LDIyNDg3LDIyNDkxLDIyNDkyLDIyNDk0LDIyNDk3LDIyNDk4LDIyNDk5LDIyNTAxLDIyNTAyLDIyNTAzLDIyNTA0LDIyNTA1LDIyNTA2LDIy''@;'; put 'put ''NTA3LDIyNTA4LDIyNTEwLDIyNTEyLDIyNTEzLDIyNTE0LDIyNTE1LDIyNTE3LDIyNTE4LDIyNTE5LDIyNTIzLDIyNTI0LDIyNTI2LDIyNTI3LDIyNTI5LDIyNTMxLDIyNTMyLDIyNTMzLDIyNTM2LDIyNTM3LDIyNTM4LDIyNTQwLDIyNTQyLDIyNTQzLDIyNTQ0LDIyNTQ2LDIyNTQ3LDIyNTQ4''@;'; put 'put ''LDIyNTUwLDIyNTUxLDIyNTUyLDIyNTU0LDIyNTU1LDIyNTU2LDIyNTU3LDIyNTU5LDIyNTYyLDIyNTYzLDIyNTY1LDIyNTY2LDIyNTY3LDIyNTY4LDIyNTY5LDIyNTcxLDIyNTcyLDIyNTczLDIyNTc0LDIyNTc1LDIyNTc3LDIyNTc4LDIyNTc5LDIyNTgwLDIyNTgyLDIyNTgzLDIyNTg0LDIy''@;'; put 'put ''NTg1LDIyNTg2LDIyNTg3LDIyNTg4LDIyNTg5LDIyNTkwLDIyNTkxLDIyNTkyLDIyNTkzLDIyNTk0LDIyNTk1LDIyNTk3LDIyNTk4LDIyNTk5LDIyNjAwLDIyNjAxLDIyNjAyLDIyNjAzLDIyNjA2LDIyNjA3LDIyNjA4LDIyNjEwLDIyNjExLDIyNjEzLDIyNjE0LDIyNjE1LDIyNjE3LDIyNjE4''@;'; put 'put ''LDIyNjE5LDIyNjIwLDIyNjIxLDIyNjIzLDIyNjI0LDIyNjI1LDIyNjI2LDIyNjI3LDIyNjI4LDIyNjMwLDIyNjMxLDIyNjMyLDIyNjMzLDIyNjM0LDIyNjM3LDIyNjM4LDIyNjM5LDIyNjQwLDIyNjQxLDIyNjQyLDIyNjQzLDIyNjQ0LDIyNjQ1LDIyNjQ2LDIyNjQ3LDIyNjQ4LDIyNjQ5LDIy''@;'; put 'put ''NjUwLDIyNjUxLDIyNjUyLDIyNjUzLDIyNjU1LDIyNjU4LDIyNjYwLDIyNjYyLDIyNjYzLDIyNjY0LDIyNjY2LDIyNjY3LDIyNjY4LDIyNjY5LDIyNjcwLDIyNjcxLDIyNjcyLDIyNjczLDIyNjc2LDIyNjc3LDIyNjc4LDIyNjc5LDIyNjgwLDIyNjgzLDIyNjg0LDIyNjg1LDIyNjg4LDIyNjg5''@;'; put 'put ''LDIyNjkwLDIyNjkxLDIyNjkyLDIyNjkzLDIyNjk0LDIyNjk1LDIyNjk4LDIyNjk5LDIyNzAwLDIyNzAxLDIyNzAyLDIyNzAzLDIyNzA0LDIyNzA1LDIyNzA2LDIyNzA3LDIyNzA4LDIyNzA5LDIyNzEwLDIyNzExLDIyNzEyLDIyNzEzLDIyNzE0LDIyNzE1LDIyNzE3LDIyNzE4LDIyNzE5LDIy''@;'; put 'put ''NzIwLDIyNzIyLDIyNzIzLDIyNzI0LDIyNzI2LDIyNzI3LDIyNzI4LDIyNzI5LDIyNzMwLDIyNzMxLDIyNzMyLDIyNzMzLDIyNzM0LDIyNzM1LDIyNzM2LDIyNzM4LDIyNzM5LDIyNzQwLDIyNzQyLDIyNzQzLDIyNzQ0LDIyNzQ1LDIyNzQ2LDIyNzQ3LDIyNzQ4LDIyNzQ5LDIyNzUwLDIyNzUx''@;'; put 'put ''LDIyNzUyLDIyNzUzLDIyNzU0LDIyNzU1LDIyNzU3LDIyNzU4LDIyNzU5LDIyNzYwLDIyNzYxLDIyNzYyLDIyNzY1LDIyNzY3LDIyNzY5LDIyNzcwLDIyNzcyLDIyNzczLDIyNzc1LDIyNzc2LDIyNzc4LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzgyLDIyNzgzLDIyNzg0LDIyNzg1LDIyNzg3LDIy''@;'; put 'put ''Nzg5LDIyNzkwLDIyNzkyLDIyNzkzLDIyNzk0LDIyNzk1LDIyNzk2LDIyNzk4LDIyODAwLDIyODAxLDIyODAyLDIyODAzLDIyODA3LDIyODA4LDIyODExLDIyODEzLDIyODE0LDIyODE2LDIyODE3LDIyODE4LDIyODE5LDIyODIyLDIyODI0LDIyODI4LDIyODMyLDIyODM0LDIyODM1LDIyODM3''@;'; put 'put ''LDIyODM4LDIyODQzLDIyODQ1LDIyODQ2LDIyODQ3LDIyODQ4LDIyODUxLDIyODUzLDIyODU0LDIyODU4LDIyODYwLDIyODYxLDIyODY0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc2LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODg0LDIyODg2LDIyODg3LDIyODg4LDIy''@;'; put 'put ''ODg5LDIyODkwLDIyODkxLDIyODkyLDIyODkzLDIyODk0LDIyODk1LDIyODk2LDIyODk3LDIyODk4LDIyOTAxLDIyOTAzLDIyOTA2LDIyOTA3LDIyOTA4LDIyOTEwLDIyOTExLDIyOTEyLDIyOTE3LDIyOTIxLDIyOTIzLDIyOTI0LDIyOTI2LDIyOTI3LDIyOTI4LDIyOTI5LDIyOTMyLDIyOTMz''@;'; put 'put ''LDIyOTM2LDIyOTM4LDIyOTM5LDIyOTQwLDIyOTQxLDIyOTQzLDIyOTQ0LDIyOTQ1LDIyOTQ2LDIyOTUwLDIyOTUxLDIyOTU2LDIyOTU3LDIyOTYwLDIyOTYxLDIyOTYzLDIyOTY0LDIyOTY1LDIyOTY2LDIyOTY3LDIyOTY4LDIyOTcwLDIyOTcyLDIyOTczLDIyOTc1LDIyOTc2LDIyOTc3LDIy''@;'; put 'put ''OTc4LDIyOTc5LDIyOTgwLDIyOTgxLDIyOTgzLDIyOTg0LDIyOTg1LDIyOTg4LDIyOTg5LDIyOTkwLDIyOTkxLDIyOTk3LDIyOTk4LDIzMDAxLDIzMDAzLDIzMDA2LDIzMDA3LDIzMDA4LDIzMDA5LDIzMDEwLDIzMDEyLDIzMDE0LDIzMDE1LDIzMDE3LDIzMDE4LDIzMDE5LDIzMDIxLDIzMDIy''@;'; put 'put ''LDIzMDIzLDIzMDI0LDIzMDI1LDIzMDI2LDIzMDI3LDIzMDI4LDIzMDI5LDIzMDMwLDIzMDMxLDIzMDMyLDIzMDM0LDIzMDM2LDIzMDM3LDIzMDM4LDIzMDQwLDIzMDQyLDIzMDUwLDIzMDUxLDIzMDUzLDIzMDU0LDIzMDU1LDIzMDU2LDIzMDU4LDIzMDYwLDIzMDYxLDIzMDYyLDIzMDYzLDIz''@;'; put 'put ''MDY1LDIzMDY2LDIzMDY3LDIzMDY5LDIzMDcwLDIzMDczLDIzMDc0LDIzMDc2LDIzMDc4LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDgzLDIzMDg0LDIzMDg1LDIzMDg2LDIzMDg3LDIzMDg4LDIzMDkxLDIzMDkzLDIzMDk1LDIzMDk2LDIzMDk3LDIzMDk4LDIzMDk5LDIzMTAxLDIzMTAyLDIzMTAz''@;'; put 'put ''LDIzMTA1LDIzMTA2LDIzMTA3LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE1LDIzMTE2LDIzMTE3LDIzMTE4LDIzMTE5LDIzMTIwLDIzMTIxLDIzMTIyLDIzMTIzLDIzMTI0LDIzMTI2LDIzMTI3LDIzMTI4LDIzMTI5LDIzMTMxLDIzMTMyLDIzMTMzLDIzMTM0LDIzMTM1LDIzMTM2LDIz''@;'; put 'put ''MTM3LDIzMTM5LDIzMTQwLDIzMTQxLDIzMTQyLDIzMTQ0LDIzMTQ1LDIzMTQ3LDIzMTQ4LDIzMTQ5LDIzMTUwLDIzMTUxLDIzMTUyLDIzMTUzLDIzMTU0LDIzMTU1LDIzMTYwLDIzMTYxLDIzMTYzLDIzMTY0LDIzMTY1LDIzMTY2LDIzMTY4LDIzMTY5LDIzMTcwLDIzMTcxLDIzMTcyLDIzMTcz''@;'; put 'put ''LDIzMTc0LDIzMTc1LDIzMTc2LDIzMTc3LDIzMTc4LDIzMTc5LDIzMTgwLDIzMTgxLDIzMTgyLDIzMTgzLDIzMTg0LDIzMTg1LDIzMTg3LDIzMTg4LDIzMTg5LDIzMTkwLDIzMTkxLDIzMTkyLDIzMTkzLDIzMTk2LDIzMTk3LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAxLDIzMjAyLDIzMjAzLDIz''@;'; put 'put ''MjA0LDIzMjA1LDIzMjA2LDIzMjA3LDIzMjA4LDIzMjA5LDIzMjExLDIzMjEyLDIzMjEzLDIzMjE0LDIzMjE1LDIzMjE2LDIzMjE3LDIzMjIwLDIzMjIyLDIzMjIzLDIzMjI1LDIzMjI2LDIzMjI3LDIzMjI4LDIzMjI5LDIzMjMxLDIzMjMyLDIzMjM1LDIzMjM2LDIzMjM3LDIzMjM4LDIzMjM5''@;'; put 'put ''LDIzMjQwLDIzMjQyLDIzMjQzLDIzMjQ1LDIzMjQ2LDIzMjQ3LDIzMjQ4LDIzMjQ5LDIzMjUxLDIzMjUzLDIzMjU1LDIzMjU3LDIzMjU4LDIzMjU5LDIzMjYxLDIzMjYyLDIzMjYzLDIzMjY2LDIzMjY4LDIzMjY5LDIzMjcxLDIzMjcyLDIzMjc0LDIzMjc2LDIzMjc3LDIzMjc4LDIzMjc5LDIz''@;'; put 'put ''MjgwLDIzMjgyLDIzMjgzLDIzMjg0LDIzMjg1LDIzMjg2LDIzMjg3LDIzMjg4LDIzMjg5LDIzMjkwLDIzMjkxLDIzMjkyLDIzMjkzLDIzMjk0LDIzMjk1LDIzMjk2LDIzMjk3LDIzMjk4LDIzMjk5LDIzMzAwLDIzMzAxLDIzMzAyLDIzMzAzLDIzMzA0LDIzMzA2LDIzMzA3LDIzMzA4LDIzMzA5''@;'; put 'put ''LDIzMzEwLDIzMzExLDIzMzEyLDIzMzEzLDIzMzE0LDIzMzE1LDIzMzE2LDIzMzE3LDIzMzIwLDIzMzIxLDIzMzIyLDIzMzIzLDIzMzI0LDIzMzI1LDIzMzI2LDIzMzI3LDIzMzI4LDIzMzI5LDIzMzMwLDIzMzMxLDIzMzMyLDIzMzMzLDIzMzM0LDIzMzM1LDIzMzM2LDIzMzM3LDIzMzM4LDIz''@;'; put 'put ''MzM5LDIzMzQwLDIzMzQxLDIzMzQyLDIzMzQzLDIzMzQ0LDIzMzQ1LDIzMzQ3LDIzMzQ5LDIzMzUwLDIzMzUyLDIzMzUzLDIzMzU0LDIzMzU1LDIzMzU2LDIzMzU3LDIzMzU4LDIzMzU5LDIzMzYxLDIzMzYyLDIzMzYzLDIzMzY0LDIzMzY1LDIzMzY2LDIzMzY3LDIzMzY4LDIzMzY5LDIzMzcw''@;'; put 'put ''LDIzMzcxLDIzMzcyLDIzMzczLDIzMzc0LDIzMzc1LDIzMzc4LDIzMzgyLDIzMzkwLDIzMzkyLDIzMzkzLDIzMzk5LDIzNDAwLDIzNDAzLDIzNDA1LDIzNDA2LDIzNDA3LDIzNDEwLDIzNDEyLDIzNDE0LDIzNDE1LDIzNDE2LDIzNDE3LDIzNDE5LDIzNDIwLDIzNDIyLDIzNDIzLDIzNDI2LDIz''@;'; put 'put ''NDMwLDIzNDM0LDIzNDM3LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQyLDIzNDQ0LDIzNDQ2LDIzNDU1LDIzNDYzLDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcwLDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDgzLDIzNDg0LDIzNDg4LDIzNDg5LDIzNDkxLDIzNDk2LDIzNDk3''@;'; put 'put ''LDIzNDk4LDIzNDk5LDIzNTAxLDIzNTAyLDIzNTAzLDIzNTA1LDIzNTA4LDIzNTA5LDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTE1LDIzNTE2LDIzNTIwLDIzNTIyLDIzNTIzLDIzNTI2LDIzNTI3LDIzNTI5LDIzNTMwLDIzNTMxLDIzNTMyLDIzNTMzLDIzNTM1LDIzNTM3LDIz''@;'; put 'put ''NTM4LDIzNTM5LDIzNTQwLDIzNTQxLDIzNTQyLDIzNTQzLDIzNTQ5LDIzNTUwLDIzNTUyLDIzNTU0LDIzNTU1LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTYzLDIzNTY0LDIzNTY1LDIzNTY2LDIzNTY4LDIzNTcwLDIzNTcxLDIzNTc1LDIzNTc3LDIzNTc5LDIzNTgyLDIzNTgzLDIzNTg0LDIzNTg1''@;'; put 'put ''LDIzNTg3LDIzNTkwLDIzNTkyLDIzNTkzLDIzNTk0LDIzNTk1LDIzNTk3LDIzNTk4LDIzNTk5LDIzNjAwLDIzNjAyLDIzNjAzLDIzNjA1LDIzNjA2LDIzNjA3LDIzNjE5LDIzNjIwLDIzNjIyLDIzNjIzLDIzNjI4LDIzNjI5LDIzNjM0LDIzNjM1LDIzNjM2LDIzNjM4LDIzNjM5LDIzNjQwLDIz''@;'; put 'put ''NjQyLDIzNjQzLDIzNjQ0LDIzNjQ1LDIzNjQ3LDIzNjUwLDIzNjUyLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjU4LDIzNjU5LDIzNjYwLDIzNjYxLDIzNjY0LDIzNjY2LDIzNjY3LDIzNjY4LDIzNjY5LDIzNjcwLDIzNjcxLDIzNjcyLDIzNjc1LDIzNjc2LDIzNjc3LDIzNjc4LDIzNjgwLDIzNjgz''@;'; put 'put ''LDIzNjg0LDIzNjg1LDIzNjg2LDIzNjg3LDIzNjg5LDIzNjkwLDIzNjkxLDIzNjk0LDIzNjk1LDIzNjk4LDIzNjk5LDIzNzAxLDIzNzA5LDIzNzEwLDIzNzExLDIzNzEyLDIzNzEzLDIzNzE2LDIzNzE3LDIzNzE4LDIzNzE5LDIzNzIwLDIzNzIyLDIzNzI2LDIzNzI3LDIzNzI4LDIzNzMwLDIz''@;'; put 'put ''NzMyLDIzNzM0LDIzNzM3LDIzNzM4LDIzNzM5LDIzNzQwLDIzNzQyLDIzNzQ0LDIzNzQ2LDIzNzQ3LDIzNzQ5LDIzNzUwLDIzNzUxLDIzNzUyLDIzNzUzLDIzNzU0LDIzNzU2LDIzNzU3LDIzNzU4LDIzNzU5LDIzNzYwLDIzNzYxLDIzNzYzLDIzNzY0LDIzNzY1LDIzNzY2LDIzNzY3LDIzNzY4''@;'; put 'put ''LDIzNzcwLDIzNzcxLDIzNzcyLDIzNzczLDIzNzc0LDIzNzc1LDIzNzc2LDIzNzc4LDIzNzc5LDIzNzgzLDIzNzg1LDIzNzg3LDIzNzg4LDIzNzkwLDIzNzkxLDIzNzkzLDIzNzk0LDIzNzk1LDIzNzk2LDIzNzk3LDIzNzk4LDIzNzk5LDIzODAwLDIzODAxLDIzODAyLDIzODA0LDIzODA1LDIz''@;'; put 'put ''ODA2LDIzODA3LDIzODA4LDIzODA5LDIzODEyLDIzODEzLDIzODE2LDIzODE3LDIzODE4LDIzODE5LDIzODIwLDIzODIxLDIzODIzLDIzODI0LDIzODI1LDIzODI2LDIzODI3LDIzODI5LDIzODMxLDIzODMyLDIzODMzLDIzODM0LDIzODM2LDIzODM3LDIzODM5LDIzODQwLDIzODQxLDIzODQy''@;'; put 'put ''LDIzODQzLDIzODQ1LDIzODQ4LDIzODUwLDIzODUxLDIzODUyLDIzODU1LDIzODU2LDIzODU3LDIzODU4LDIzODU5LDIzODYxLDIzODYyLDIzODYzLDIzODY0LDIzODY1LDIzODY2LDIzODY3LDIzODY4LDIzODcxLDIzODcyLDIzODczLDIzODc0LDIzODc1LDIzODc2LDIzODc3LDIzODc4LDIz''@;'; put 'put ''ODgwLDIzODgxLDIzODg1LDIzODg2LDIzODg3LDIzODg4LDIzODg5LDIzODkwLDIzODkxLDIzODkyLDIzODkzLDIzODk0LDIzODk1LDIzODk3LDIzODk4LDIzOTAwLDIzOTAyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA3LDIzOTA4LDIzOTA5LDIzOTEwLDIzOTExLDIzOTEyLDIzOTE0''@;'; put 'put ''LDIzOTE3LDIzOTE4LDIzOTIwLDIzOTIxLDIzOTIyLDIzOTIzLDIzOTI1LDIzOTI2LDIzOTI3LDIzOTI4LDIzOTI5LDIzOTMwLDIzOTMxLDIzOTMyLDIzOTMzLDIzOTM0LDIzOTM1LDIzOTM2LDIzOTM3LDIzOTM5LDIzOTQwLDIzOTQxLDIzOTQyLDIzOTQzLDIzOTQ0LDIzOTQ1LDIzOTQ2LDIz''@;'; put 'put ''OTQ3LDIzOTQ4LDIzOTQ5LDIzOTUwLDIzOTUxLDIzOTUyLDIzOTUzLDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTU4LDIzOTU5LDIzOTYwLDIzOTYyLDIzOTYzLDIzOTY0LDIzOTY2LDIzOTY3LDIzOTY4LDIzOTY5LDIzOTcwLDIzOTcxLDIzOTcyLDIzOTczLDIzOTc0LDIzOTc1LDIzOTc2''@;'; put 'put ''LDIzOTc3LDIzOTc4LDIzOTc5LDIzOTgwLDIzOTgxLDIzOTgyLDIzOTgzLDIzOTg0LDIzOTg1LDIzOTg2LDIzOTg3LDIzOTg4LDIzOTg5LDIzOTkwLDIzOTkyLDIzOTkzLDIzOTk0LDIzOTk1LDIzOTk2LDIzOTk3LDIzOTk4LDIzOTk5LDI0ZTMsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQw''@;'; put 'put ''MDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMsMjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEsMjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUs''@;'; put 'put ''MjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQwNzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQwOTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQx''@;'; put 'put ''MDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcsMjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUsMjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIs''@;'; put 'put ''MjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQxNjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQx''@;'; put 'put ''NzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYsMjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcsMjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYs''@;'; put 'put ''MjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQyNjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQyNjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQy''@;'; put 'put ''NzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUsMjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIsMjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDks''@;'; put 'put ''MjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQzNDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQz''@;'; put 'put ''NjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcsMjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIsMjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgs''@;'; put 'put ''MjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0''@;'; put 'put ''NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQsMjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTks''@;'; put 'put ''MjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1''@;'; put 'put ''NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUsMjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAs''@;'; put 'put ''MjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2''@;'; put 'put ''NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODksMjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIsMjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEs''@;'; put 'put ''MjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3''@;'; put 'put ''NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMsMjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAsMjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIs''@;'; put 'put ''MjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4''@;'; put 'put ''NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4NzgsMjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMsMjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODks''@;'; put 'put ''MjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5''@;'; put 'put ''MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUsMjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIsMjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgs''@;'; put 'put ''MjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5''@;'; put 'put ''OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAsMjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYsMjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMs''@;'; put 'put ''MjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUwNDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUw''@;'; put 'put ''NTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUsMjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEsMjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgs''@;'; put 'put ''MjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUxMjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUxMzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUx''@;'; put 'put ''NDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgsMjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQsMjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEs''@;'; put 'put ''MjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUyMjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyMzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUy''@;'; put 'put ''NTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAsMjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcsMjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYs''@;'; put 'put ''MjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUzNTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUzNjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUz''@;'; put 'put ''NzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQsMjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIsMjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0Mjcs''@;'; put 'put ''MjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0''@;'; put 'put ''NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTksMjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUsMjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIs''@;'; put 'put ''MjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1''@;'; put 'put ''NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMsMjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMsMjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAs''@;'; put 'put ''MjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2''@;'; put 'put ''NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAsMjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcsMjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUs''@;'; put 'put ''MjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3''@;'; put 'put ''MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQsMjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAsMjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3Njcs''@;'; put 'put ''MjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4''@;'; put 'put ''MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQsMjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4MzksMjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUs''@;'; put 'put ''MjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4''@;'; put 'put ''NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQsMjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAsMjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEs''@;'; put 'put ''MjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5''@;'; put 'put ''NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEsMjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYsMjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMs''@;'; put 'put ''MjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYwMjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYwMzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYw''@;'; put 'put ''NDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjksMjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYsMjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQs''@;'; put 'put ''MjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYxMTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYxMjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYx''@;'; put 'put ''MzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMsMjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEsMjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEs''@;'; put 'put ''MjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYyMTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYyMTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYy''@;'; put 'put ''MjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEsMjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgsMjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYs''@;'; put 'put ''MjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYyODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYyOTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYz''@;'; put 'put ''MDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcsMjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIsMjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgs''@;'; put 'put ''MjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYzNTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYzNjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYz''@;'; put 'put ''NzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAsMjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUsMjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTks''@;'; put 'put ''MjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0''@;'; put 'put ''NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEsMjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDksMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYs''@;'; put 'put ''MjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1''@;'; put 'put ''NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAsMjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAsMjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgs''@;'; put 'put ''MjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2''@;'; put 'put ''NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEsMjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIsMjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgs''@;'; put 'put ''MjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3''@;'; put 'put ''NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMsMjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEs''@;'; put 'put ''MjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4''@;'; put 'put ''MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYsMjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUs''@;'; put 'put ''MjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5''@;'; put 'put ''MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMsMjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5MzksMjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgs''@;'; put 'put ''MjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5''@;'; put 'put ''ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcsMjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTksMjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYs''@;'; put 'put ''MjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcwNTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcwNTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcw''@;'; put 'put ''NjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcsMjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQsMjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEs''@;'; put 'put ''MjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcxMjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcxMjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcx''@;'; put 'put ''MzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIsMjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcsMjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUs''@;'; put 'put ''MjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcxODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcxOTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcy''@;'; put 'put ''MDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEsMjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjksMjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYs''@;'; put 'put ''MjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcyNTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcyNjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcy''@;'; put 'put ''NzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAsMjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUsMjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIs''@;'; put 'put ''MjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjczMjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjczMjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjcz''@;'; put 'put ''MzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDksMjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQsMjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAs''@;'; put 'put ''MjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjczNzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjczODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjcz''@;'; put 'put ''ODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQsMjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUs''@;'; put 'put ''Mjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0''@;'; put 'put ''NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUsMjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAsMjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcs''@;'; put 'put ''Mjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1''@;'; put 'put ''MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcsMjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1Njks''@;'; put 'put ''Mjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2''@;'; put 'put ''MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2MzgsMjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQsMjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEs''@;'; put 'put ''Mjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3''@;'; put 'put ''MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3MzgsMjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEsMjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEs''@;'; put 'put ''Mjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4''@;'; put 'put ''MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEsMjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgsMjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEs''@;'; put 'put ''Mjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5''@;'; put 'put ''MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgsMjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5NjgsMjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODks''@;'; put 'put ''Mjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgwMTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgwMjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgw''@;'; put 'put ''MzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgsMjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcsMjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcs''@;'; put 'put ''MjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgxMTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgxMjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgx''@;'; put 'put ''MzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTksMjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQsMjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUs''@;'; put 'put ''MjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgyMDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgyMTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgy''@;'; put 'put ''MjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUsMjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAs''@;'; put 'put ''MjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgyNzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgyODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgy''@;'; put 'put ''OTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUsMjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMsMjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIs''@;'; put 'put ''MjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgzNjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgzNjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgz''@;'; put 'put ''ODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcsMjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMsMjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAs''@;'; put 'put ''Mjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0''@;'; put 'put ''NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEsMjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgsMjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYs''@;'; put 'put ''Mjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1''@;'; put 'put ''MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUsMjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1Njks''@;'; put 'put ''Mjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2''@;'; put 'put ''MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIsMjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2MjksMjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUs''@;'; put 'put ''Mjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2''@;'; put 'put ''NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQsMjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAsMjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYs''@;'; put 'put ''Mjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3''@;'; put 'put ''MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIsMjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgs''@;'; put 'put ''Mjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3''@;'; put 'put ''OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMsMjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEsMjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4Mzcs''@;'; put 'put ''Mjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4''@;'; put 'put ''ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMsMjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgsMjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5Mjcs''@;'; put 'put ''Mjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5''@;'; put 'put ''NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUsMjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAsMjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYs''@;'; put 'put ''Mjg5OTgsMjg5OTksMjllMywyOTAwMSwyOTAwMywyOTAwNSwyOTAwNywyOTAwOCwyOTAwOSwyOTAxMCwyOTAxMSwyOTAxMiwyOTAxMywyOTAxNCwyOTAxNSwyOTAxNiwyOTAxNywyOTAxOCwyOTAxOSwyOTAyMSwyOTAyMywyOTAyNCwyOTAyNSwyOTAyNiwyOTAyNywyOTAyOSwyOTAzMywyOTAz''@;'; put 'put ''NCwyOTAzNSwyOTAzNiwyOTAzNywyOTAzOSwyOTA0MCwyOTA0MSwyOTA0NCwyOTA0NSwyOTA0NiwyOTA0NywyOTA0OSwyOTA1MSwyOTA1MiwyOTA1NCwyOTA1NSwyOTA1NiwyOTA1NywyOTA1OCwyOTA1OSwyOTA2MSwyOTA2MiwyOTA2MywyOTA2NCwyOTA2NSwyOTA2NywyOTA2OCwyOTA2OSwy''@;'; put 'put ''OTA3MCwyOTA3MiwyOTA3MywyOTA3NCwyOTA3NSwyOTA3NywyOTA3OCwyOTA3OSwyOTA4MiwyOTA4MywyOTA4NCwyOTA4NSwyOTA4NiwyOTA4OSwyOTA5MCwyOTA5MSwyOTA5MiwyOTA5MywyOTA5NCwyOTA5NSwyOTA5NywyOTA5OCwyOTA5OSwyOTEwMSwyOTEwMiwyOTEwMywyOTEwNCwyOTEw''@;'; put 'put ''NSwyOTEwNiwyOTEwOCwyOTExMCwyOTExMSwyOTExMiwyOTExNCwyOTExNSwyOTExNiwyOTExNywyOTExOCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyMiwyOTEyNCwyOTEyNSwyOTEyNiwyOTEyNywyOTEyOCwyOTEyOSwyOTEzMCwyOTEzMSwyOTEzMiwyOTEzMywyOTEzNSwyOTEzNiwyOTEzNywy''@;'; put 'put ''OTEzOCwyOTEzOSwyOTE0MiwyOTE0MywyOTE0NCwyOTE0NSwyOTE0NiwyOTE0NywyOTE0OCwyOTE0OSwyOTE1MCwyOTE1MSwyOTE1MywyOTE1NCwyOTE1NSwyOTE1NiwyOTE1OCwyOTE2MCwyOTE2MSwyOTE2MiwyOTE2MywyOTE2NCwyOTE2NSwyOTE2NywyOTE2OCwyOTE2OSwyOTE3MCwyOTE3''@;'; put 'put ''MSwyOTE3MiwyOTE3MywyOTE3NCwyOTE3NSwyOTE3NiwyOTE3OCwyOTE3OSwyOTE4MCwyOTE4MSwyOTE4MiwyOTE4MywyOTE4NCwyOTE4NSwyOTE4NiwyOTE4NywyOTE4OCwyOTE4OSwyOTE5MSwyOTE5MiwyOTE5MywyOTE5NCwyOTE5NSwyOTE5NiwyOTE5NywyOTE5OCwyOTE5OSwyOTIwMCwy''@;'; put 'put ''OTIwMSwyOTIwMiwyOTIwMywyOTIwNCwyOTIwNSwyOTIwNiwyOTIwNywyOTIwOCwyOTIwOSwyOTIxMCwyOTIxMSwyOTIxMiwyOTIxNCwyOTIxNSwyOTIxNiwyOTIxNywyOTIxOCwyOTIxOSwyOTIyMCwyOTIyMSwyOTIyMiwyOTIyMywyOTIyNSwyOTIyNywyOTIyOSwyOTIzMCwyOTIzMSwyOTIz''@;'; put 'put ''NCwyOTIzNSwyOTIzNiwyOTI0MiwyOTI0NCwyOTI0NiwyOTI0OCwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MiwyOTI1MywyOTI1NCwyOTI1NywyOTI1OCwyOTI1OSwyOTI2MiwyOTI2MywyOTI2NCwyOTI2NSwyOTI2NywyOTI2OCwyOTI2OSwyOTI3MSwyOTI3MiwyOTI3NCwyOTI3NiwyOTI3OCwy''@;'; put 'put ''OTI4MCwyOTI4MywyOTI4NCwyOTI4NSwyOTI4OCwyOTI5MCwyOTI5MSwyOTI5MiwyOTI5MywyOTI5NiwyOTI5NywyOTI5OSwyOTMwMCwyOTMwMiwyOTMwMywyOTMwNCwyOTMwNywyOTMwOCwyOTMwOSwyOTMxNCwyOTMxNSwyOTMxNywyOTMxOCwyOTMxOSwyOTMyMCwyOTMyMSwyOTMyNCwyOTMy''@;'; put 'put ''NiwyOTMyOCwyOTMyOSwyOTMzMSwyOTMzMiwyOTMzMywyOTMzNCwyOTMzNSwyOTMzNiwyOTMzNywyOTMzOCwyOTMzOSwyOTM0MCwyOTM0MSwyOTM0MiwyOTM0NCwyOTM0NSwyOTM0NiwyOTM0NywyOTM0OCwyOTM0OSwyOTM1MCwyOTM1MSwyOTM1MiwyOTM1MywyOTM1NCwyOTM1NSwyOTM1OCwy''@;'; put 'put ''OTM2MSwyOTM2MiwyOTM2MywyOTM2NSwyOTM3MCwyOTM3MSwyOTM3MiwyOTM3MywyOTM3NCwyOTM3NSwyOTM3NiwyOTM4MSwyOTM4MiwyOTM4MywyOTM4NSwyOTM4NiwyOTM4NywyOTM4OCwyOTM5MSwyOTM5MywyOTM5NSwyOTM5NiwyOTM5NywyOTM5OCwyOTQwMCwyOTQwMiwyOTQwMyw1ODU2''@;'; put 'put ''Niw1ODU2Nyw1ODU2OCw1ODU2OSw1ODU3MCw1ODU3MSw1ODU3Miw1ODU3Myw1ODU3NCw1ODU3NSw1ODU3Niw1ODU3Nyw1ODU3OCw1ODU3OSw1ODU4MCw1ODU4MSw1ODU4Miw1ODU4Myw1ODU4NCw1ODU4NSw1ODU4Niw1ODU4Nyw1ODU4OCw1ODU4OSw1ODU5MCw1ODU5MSw1ODU5Miw1ODU5Myw1''@;'; put 'put ''ODU5NCw1ODU5NSw1ODU5Niw1ODU5Nyw1ODU5OCw1ODU5OSw1ODYwMCw1ODYwMSw1ODYwMiw1ODYwMyw1ODYwNCw1ODYwNSw1ODYwNiw1ODYwNyw1ODYwOCw1ODYwOSw1ODYxMCw1ODYxMSw1ODYxMiw1ODYxMyw1ODYxNCw1ODYxNSw1ODYxNiw1ODYxNyw1ODYxOCw1ODYxOSw1ODYyMCw1ODYy''@;'; put 'put ''MSw1ODYyMiw1ODYyMyw1ODYyNCw1ODYyNSw1ODYyNiw1ODYyNyw1ODYyOCw1ODYyOSw1ODYzMCw1ODYzMSw1ODYzMiw1ODYzMyw1ODYzNCw1ODYzNSw1ODYzNiw1ODYzNyw1ODYzOCw1ODYzOSw1ODY0MCw1ODY0MSw1ODY0Miw1ODY0Myw1ODY0NCw1ODY0NSw1ODY0Niw1ODY0Nyw1ODY0OCw1''@;'; put 'put ''ODY0OSw1ODY1MCw1ODY1MSw1ODY1Miw1ODY1Myw1ODY1NCw1ODY1NSw1ODY1Niw1ODY1Nyw1ODY1OCw1ODY1OSw1ODY2MCw1ODY2MSwxMjI4OCwxMjI4OSwxMjI5MCwxODMsNzEzLDcxMSwxNjgsMTIyOTEsMTIyOTMsODIxMiw2NTM3NCw4MjE0LDgyMzAsODIxNiw4MjE3LDgyMjAsODIyMSwx''@;'; put 'put ''MjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMxMCwxMjMxMSwxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4NzU4LDg3NDMsODc0NCw4NzIxLDg3MTksODc0Niw4NzQ1LDg3MTIsODc1OSw4NzMwLDg4NjksODc0MSw4NzM2LDg5Nzgs''@;'; put 'put ''ODg1Nyw4NzQ3LDg3NTAsODgwMSw4NzgwLDg3NzYsODc2NSw4NzMzLDg4MDAsODgxNCw4ODE1LDg4MDQsODgwNSw4NzM0LDg3NTcsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1Mjg0LDE2NCw2NTUwNCw2NTUwNSw4MjQwLDE2Nyw4NDcwLDk3MzQsOTczMyw5Njc1LDk2Nzks''@;'; put 'put ''OTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw4MjUxLDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsNTg2NjIsNTg2NjMsNTg2NjQsNTg2NjUsNTg2NjYsNTg2NjcsNTg2NjgsNTg2NjksNTg2NzAsNTg2NzEsNTg2NzIsNTg2NzMsNTg2NzQsNTg2NzUsNTg2NzYsNTg2NzcsNTg2''@;'; put 'put ''NzgsNTg2NzksNTg2ODAsNTg2ODEsNTg2ODIsNTg2ODMsNTg2ODQsNTg2ODUsNTg2ODYsNTg2ODcsNTg2ODgsNTg2ODksNTg2OTAsNTg2OTEsNTg2OTIsNTg2OTMsNTg2OTQsNTg2OTUsNTg2OTYsNTg2OTcsNTg2OTgsNTg2OTksNTg3MDAsNTg3MDEsNTg3MDIsNTg3MDMsNTg3MDQsNTg3MDUs''@;'; put 'put ''NTg3MDYsNTg3MDcsNTg3MDgsNTg3MDksNTg3MTAsNTg3MTEsNTg3MTIsNTg3MTMsNTg3MTQsNTg3MTUsNTg3MTYsNTg3MTcsNTg3MTgsNTg3MTksNTg3MjAsNTg3MjEsNTg3MjIsNTg3MjMsNTg3MjQsNTg3MjUsNTg3MjYsNTg3MjcsNTg3MjgsNTg3MjksNTg3MzAsNTg3MzEsNTg3MzIsNTg3''@;'; put 'put ''MzMsNTg3MzQsNTg3MzUsNTg3MzYsNTg3MzcsNTg3MzgsNTg3MzksNTg3NDAsNTg3NDEsNTg3NDIsNTg3NDMsNTg3NDQsNTg3NDUsNTg3NDYsNTg3NDcsNTg3NDgsNTg3NDksNTg3NTAsNTg3NTEsNTg3NTIsNTg3NTMsNTg3NTQsNTg3NTUsNTg3NTYsNTg3NTcsODU2MCw4NTYxLDg1NjIsODU2''@;'; put 'put ''Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw1OTIzOCw1OTIzOSw1OTI0MCw1OTI0MSw1OTI0Miw1OTI0Myw5MzUyLDkzNTMsOTM1NCw5MzU1LDkzNTYsOTM1Nyw5MzU4LDkzNTksOTM2MCw5MzYxLDkzNjIsOTM2Myw5MzY0LDkzNjUsOTM2Niw5MzY3LDkzNjgsOTM2OSw5MzcwLDkz''@;'; put 'put ''NzEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsOTM0Nyw5MzQ4LDkzNDksOTM1MCw5MzUxLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsODM2NCw1OTI0NSwx''@;'; put 'put ''MjgzMiwxMjgzMywxMjgzNCwxMjgzNSwxMjgzNiwxMjgzNywxMjgzOCwxMjgzOSwxMjg0MCwxMjg0MSw1OTI0Niw1OTI0Nyw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDg1NTQsODU1NSw1OTI0OCw1OTI0OSw1ODc1OCw1ODc1OSw1ODc2MCw1ODc2''@;'; put 'put ''MSw1ODc2Miw1ODc2Myw1ODc2NCw1ODc2NSw1ODc2Niw1ODc2Nyw1ODc2OCw1ODc2OSw1ODc3MCw1ODc3MSw1ODc3Miw1ODc3Myw1ODc3NCw1ODc3NSw1ODc3Niw1ODc3Nyw1ODc3OCw1ODc3OSw1ODc4MCw1ODc4MSw1ODc4Miw1ODc4Myw1ODc4NCw1ODc4NSw1ODc4Niw1ODc4Nyw1ODc4OCw1''@;'; put 'put ''ODc4OSw1ODc5MCw1ODc5MSw1ODc5Miw1ODc5Myw1ODc5NCw1ODc5NSw1ODc5Niw1ODc5Nyw1ODc5OCw1ODc5OSw1ODgwMCw1ODgwMSw1ODgwMiw1ODgwMyw1ODgwNCw1ODgwNSw1ODgwNiw1ODgwNyw1ODgwOCw1ODgwOSw1ODgxMCw1ODgxMSw1ODgxMiw1ODgxMyw1ODgxNCw1ODgxNSw1ODgx''@;'; put 'put ''Niw1ODgxNyw1ODgxOCw1ODgxOSw1ODgyMCw1ODgyMSw1ODgyMiw1ODgyMyw1ODgyNCw1ODgyNSw1ODgyNiw1ODgyNyw1ODgyOCw1ODgyOSw1ODgzMCw1ODgzMSw1ODgzMiw1ODgzMyw1ODgzNCw1ODgzNSw1ODgzNiw1ODgzNyw1ODgzOCw1ODgzOSw1ODg0MCw1ODg0MSw1ODg0Miw1ODg0Myw1''@;'; put 'put ''ODg0NCw1ODg0NSw1ODg0Niw1ODg0Nyw1ODg0OCw1ODg0OSw1ODg1MCw1ODg1MSw1ODg1MiwxMjI4OCw2NTI4MSw2NTI4Miw2NTI4Myw2NTUwOSw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5''@;'; put 'put ''OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2''@;'; put 'put ''NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTM0MCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1''@;'; put 'put ''Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1ODg1NCw1ODg1NSw1ODg1Niw1ODg1Nyw1ODg1OCw1ODg1OSw1''@;'; put 'put ''ODg2MCw1ODg2MSw1ODg2Miw1ODg2Myw1ODg2NCw1ODg2NSw1ODg2Niw1ODg2Nyw1ODg2OCw1ODg2OSw1ODg3MCw1ODg3MSw1ODg3Miw1ODg3Myw1ODg3NCw1ODg3NSw1ODg3Niw1ODg3Nyw1ODg3OCw1ODg3OSw1ODg4MCw1ODg4MSw1ODg4Miw1ODg4Myw1ODg4NCw1ODg4NSw1ODg4Niw1ODg4''@;'; put 'put ''Nyw1ODg4OCw1ODg4OSw1ODg5MCw1ODg5MSw1ODg5Miw1ODg5Myw1ODg5NCw1ODg5NSw1ODg5Niw1ODg5Nyw1ODg5OCw1ODg5OSw1ODkwMCw1ODkwMSw1ODkwMiw1ODkwMyw1ODkwNCw1ODkwNSw1ODkwNiw1ODkwNyw1ODkwOCw1ODkwOSw1ODkxMCw1ODkxMSw1ODkxMiw1ODkxMyw1ODkxNCw1''@;'; put 'put ''ODkxNSw1ODkxNiw1ODkxNyw1ODkxOCw1ODkxOSw1ODkyMCw1ODkyMSw1ODkyMiw1ODkyMyw1ODkyNCw1ODkyNSw1ODkyNiw1ODkyNyw1ODkyOCw1ODkyOSw1ODkzMCw1ODkzMSw1ODkzMiw1ODkzMyw1ODkzNCw1ODkzNSw1ODkzNiw1ODkzNyw1ODkzOCw1ODkzOSw1ODk0MCw1ODk0MSw1ODk0''@;'; put 'put ''Miw1ODk0Myw1ODk0NCw1ODk0NSw1ODk0Niw1ODk0Nyw1ODk0OCw1ODk0OSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3Miwx''@;'; put 'put ''MjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQw''@;'; put 'put ''MCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywx''@;'; put 'put ''MjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSw1OTI1MCw1OTI1MSw1OTI1Miw1OTI1Myw1OTI1NCw1OTI1NSw1OTI1Niw1OTI1Nyw1OTI1OCw1OTI1OSw1OTI2MCw1ODk1MCw1ODk1MSw1ODk1Miw1ODk1Myw1ODk1NCw1ODk1NSw1ODk1Niw1ODk1Nyw1ODk1''@;'; put 'put ''OCw1ODk1OSw1ODk2MCw1ODk2MSw1ODk2Miw1ODk2Myw1ODk2NCw1ODk2NSw1ODk2Niw1ODk2Nyw1ODk2OCw1ODk2OSw1ODk3MCw1ODk3MSw1ODk3Miw1ODk3Myw1ODk3NCw1ODk3NSw1ODk3Niw1ODk3Nyw1ODk3OCw1ODk3OSw1ODk4MCw1ODk4MSw1ODk4Miw1ODk4Myw1ODk4NCw1ODk4NSw1''@;'; put 'put ''ODk4Niw1ODk4Nyw1ODk4OCw1ODk4OSw1ODk5MCw1ODk5MSw1ODk5Miw1ODk5Myw1ODk5NCw1ODk5NSw1ODk5Niw1ODk5Nyw1ODk5OCw1ODk5OSw1OWUzLDU5MDAxLDU5MDAyLDU5MDAzLDU5MDA0LDU5MDA1LDU5MDA2LDU5MDA3LDU5MDA4LDU5MDA5LDU5MDEwLDU5MDExLDU5MDEyLDU5MDEz''@;'; put 'put ''LDU5MDE0LDU5MDE1LDU5MDE2LDU5MDE3LDU5MDE4LDU5MDE5LDU5MDIwLDU5MDIxLDU5MDIyLDU5MDIzLDU5MDI0LDU5MDI1LDU5MDI2LDU5MDI3LDU5MDI4LDU5MDI5LDU5MDMwLDU5MDMxLDU5MDMyLDU5MDMzLDU5MDM0LDU5MDM1LDU5MDM2LDU5MDM3LDU5MDM4LDU5MDM5LDU5MDQwLDU5''@;'; put 'put ''MDQxLDU5MDQyLDU5MDQzLDU5MDQ0LDU5MDQ1LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcx''@;'; put 'put ''LDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEy''@;'; put 'put ''NDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2''@;'; put 'put ''LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LDU5MjYxLDU5MjYyLDU5MjYzLDU5MjY0LDU5MjY1LDU5MjY2LDU5MjY3LDU5MjY4LDU5MDQ2LDU5MDQ3LDU5MDQ4LDU5MDQ5LDU5MDUwLDU5MDUxLDU5MDUyLDU5MDUzLDU5MDU0LDU5MDU1LDU5MDU2LDU5''@;'; put 'put ''MDU3LDU5MDU4LDU5MDU5LDU5MDYwLDU5MDYxLDU5MDYyLDU5MDYzLDU5MDY0LDU5MDY1LDU5MDY2LDU5MDY3LDU5MDY4LDU5MDY5LDU5MDcwLDU5MDcxLDU5MDcyLDU5MDczLDU5MDc0LDU5MDc1LDU5MDc2LDU5MDc3LDU5MDc4LDU5MDc5LDU5MDgwLDU5MDgxLDU5MDgyLDU5MDgzLDU5MDg0''@;'; put 'put ''LDU5MDg1LDU5MDg2LDU5MDg3LDU5MDg4LDU5MDg5LDU5MDkwLDU5MDkxLDU5MDkyLDU5MDkzLDU5MDk0LDU5MDk1LDU5MDk2LDU5MDk3LDU5MDk4LDU5MDk5LDU5MTAwLDU5MTAxLDU5MTAyLDU5MTAzLDU5MTA0LDU5MTA1LDU5MTA2LDU5MTA3LDU5MTA4LDU5MTA5LDU5MTEwLDU5MTExLDU5''@;'; put 'put ''MTEyLDU5MTEzLDU5MTE0LDU5MTE1LDU5MTE2LDU5MTE3LDU5MTE4LDU5MTE5LDU5MTIwLDU5MTIxLDU5MTIyLDU5MTIzLDU5MTI0LDU5MTI1LDU5MTI2LDU5MTI3LDU5MTI4LDU5MTI5LDU5MTMwLDU5MTMxLDU5MTMyLDU5MTMzLDU5MTM0LDU5MTM1LDU5MTM2LDU5MTM3LDU5MTM4LDU5MTM5''@;'; put 'put ''LDU5MTQwLDU5MTQxLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDU5MjY5LDU5MjcwLDU5MjcxLDU5MjcyLDU5MjczLDU5Mjc0LDU5Mjc1LDU5Mjc2LDk0NSw5NDYs''@;'; put 'put ''OTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDU5Mjc3LDU5Mjc4LDU5Mjc5LDU5MjgwLDU5MjgxLDU5MjgyLDU5MjgzLDY1MDc3LDY1MDc4LDY1MDgxLDY1MDgyLDY1MDg3LDY1MDg4''@;'; put 'put ''LDY1MDg1LDY1MDg2LDY1MDg5LDY1MDkwLDY1MDkxLDY1MDkyLDU5Mjg0LDU5Mjg1LDY1MDgzLDY1MDg0LDY1MDc5LDY1MDgwLDY1MDczLDU5Mjg2LDY1MDc1LDY1MDc2LDU5Mjg3LDU5Mjg4LDU5Mjg5LDU5MjkwLDU5MjkxLDU5MjkyLDU5MjkzLDU5Mjk0LDU5Mjk1LDU5MTQyLDU5MTQzLDU5''@;'; put 'put ''MTQ0LDU5MTQ1LDU5MTQ2LDU5MTQ3LDU5MTQ4LDU5MTQ5LDU5MTUwLDU5MTUxLDU5MTUyLDU5MTUzLDU5MTU0LDU5MTU1LDU5MTU2LDU5MTU3LDU5MTU4LDU5MTU5LDU5MTYwLDU5MTYxLDU5MTYyLDU5MTYzLDU5MTY0LDU5MTY1LDU5MTY2LDU5MTY3LDU5MTY4LDU5MTY5LDU5MTcwLDU5MTcx''@;'; put 'put ''LDU5MTcyLDU5MTczLDU5MTc0LDU5MTc1LDU5MTc2LDU5MTc3LDU5MTc4LDU5MTc5LDU5MTgwLDU5MTgxLDU5MTgyLDU5MTgzLDU5MTg0LDU5MTg1LDU5MTg2LDU5MTg3LDU5MTg4LDU5MTg5LDU5MTkwLDU5MTkxLDU5MTkyLDU5MTkzLDU5MTk0LDU5MTk1LDU5MTk2LDU5MTk3LDU5MTk4LDU5''@;'; put 'put ''MTk5LDU5MjAwLDU5MjAxLDU5MjAyLDU5MjAzLDU5MjA0LDU5MjA1LDU5MjA2LDU5MjA3LDU5MjA4LDU5MjA5LDU5MjEwLDU5MjExLDU5MjEyLDU5MjEzLDU5MjE0LDU5MjE1LDU5MjE2LDU5MjE3LDU5MjE4LDU5MjE5LDU5MjIwLDU5MjIxLDU5MjIyLDU5MjIzLDU5MjI0LDU5MjI1LDU5MjI2''@;'; put 'put ''LDU5MjI3LDU5MjI4LDU5MjI5LDU5MjMwLDU5MjMxLDU5MjMyLDU5MjMzLDU5MjM0LDU5MjM1LDU5MjM2LDU5MjM3LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1''@;'; put 'put ''OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDU5Mjk2LDU5Mjk3LDU5Mjk4LDU5Mjk5LDU5MzAwLDU5MzAxLDU5MzAyLDU5MzAzLDU5MzA0LDU5MzA1LDU5MzA2LDU5MzA3LDU5MzA4LDU5MzA5LDU5MzEwLDEwNzIsMTA3''@;'; put 'put ''MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDU5MzExLDU5''@;'; put 'put ''MzEyLDU5MzEzLDU5MzE0LDU5MzE1LDU5MzE2LDU5MzE3LDU5MzE4LDU5MzE5LDU5MzIwLDU5MzIxLDU5MzIyLDU5MzIzLDcxNCw3MTUsNzI5LDgyMTEsODIxMyw4MjI5LDgyNDUsODQ1Myw4NDU3LDg1OTgsODU5OSw4NjAwLDg2MDEsODcyNSw4NzM1LDg3MzksODc4Niw4ODA2LDg4MDcsODg5''@;'; put 'put ''NSw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTU4MSw5NTgyLDk1ODMsOTU4''@;'; put 'put ''NCw5NTg1LDk1ODYsOTU4Nyw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYwOSw5NjEwLDk2MTEsOTYxMiw5NjEzLDk2MTQsOTYxNSw5NjE5LDk2MjAsOTYyMSw5NjYwLDk2NjEsOTY5OCw5Njk5LDk3MDAsOTcwMSw5NzM3LDg4NTMsMTIzMDYsMTIzMTcsMTIzMTgs''@;'; put 'put ''NTkzMjQsNTkzMjUsNTkzMjYsNTkzMjcsNTkzMjgsNTkzMjksNTkzMzAsNTkzMzEsNTkzMzIsNTkzMzMsNTkzMzQsMjU3LDIyNSw0NjIsMjI0LDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUy''@;'; put 'put ''LDIzNCw1OTMsNzc0MywzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1''@;'; put 'put ''NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMsNTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDks''@;'; put 'put ''NTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMy''@;'; put 'put ''MTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEyNTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEyMjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1''@;'; put 'put ''MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMw''@;'; put 'put ''LDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5''@;'; put 'put ''MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAsOTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYsOTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5''@;'; put 'put ''NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMsOTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1MjksOTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5''@;'; put 'put ''NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0''@;'; put 'put ''MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDksMjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcs''@;'; put 'put ''Mjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1''@;'; put 'put ''MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1MjgsMjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAs''@;'; put 'put ''Mjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTczNTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTczNTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTcz''@;'; put 'put ''NjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcsNTczNzgsNTczNzksNTczODAsNTczODEsNTczODIsNTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgs''@;'; put 'put ''NTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0''@;'; put 'put ''MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIsNTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0MzcsMjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTks''@;'; put 'put ''Mjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1''@;'; put 'put ''OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEsMjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2Mzcs''@;'; put 'put ''Mjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2''@;'; put 'put ''NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYsNTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEsNTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcs''@;'; put 'put ''NTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0''@;'; put 'put ''ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEsNTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYsNTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIs''@;'; put 'put ''NTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2''@;'; put 'put ''OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTksMjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYsMjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUs''@;'; put 'put ''Mjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3''@;'; put 'put ''NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMsMjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEs''@;'; put 'put ''Mjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1''@;'; put 'put ''NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAsNTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUsNTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEs''@;'; put 'put ''NTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2''@;'; put 'put ''MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUsMjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYsMjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQs''@;'; put 'put ''Mjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4''@;'; put 'put ''NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcsMjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIsMjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgs''@;'; put 'put ''Mjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5''@;'; put 'put ''MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2MzksNTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQsNTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAs''@;'; put 'put ''NTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2''@;'; put 'put ''NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQsNTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTksNTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUs''@;'; put 'put ''NTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5''@;'; put 'put ''NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEsMjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcsMjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQs''@;'; put 'put ''MzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAwMzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAwNDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAw''@;'; put 'put ''NTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcs''@;'; put 'put ''NTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3''@;'; put 'put ''NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMsNTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3NjgsNTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQs''@;'; put 'put ''NTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4''@;'; put 'put ''MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMsMzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQsMzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTks''@;'; put 'put ''MzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAxNzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAx''@;'; put 'put ''ODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAsMzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcsMzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYs''@;'; put 'put ''MzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAyNjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAyNjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4''@;'; put 'put ''MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIsNTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4MzcsNTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMs''@;'; put 'put ''NTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4''@;'; put 'put ''NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcsNTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIsNTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgs''@;'; put 'put ''NTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAyODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAyOTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAy''@;'; put 'put ''OTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAsMzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUsMzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUs''@;'; put 'put ''MzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAzNjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAz''@;'; put 'put ''NzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUsMzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEsMzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAs''@;'; put 'put ''MjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2''@;'; put 'put ''NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYsMzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAsMzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMs''@;'; put 'put ''MjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMxNTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2''@;'; put 'put ''MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0MjgsMzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQsMzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEs''@;'; put 'put ''MzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0''@;'; put 'put ''ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAsMzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYsMzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAs''@;'; put 'put ''MzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUy''@;'; put 'put ''NTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEsMjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTksMjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMs''@;'; put 'put ''MzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAyMDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3''@;'; put 'put ''OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEsMjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYsMjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQs''@;'; put 'put ''MTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1''@;'; put 'put ''OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYsMzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEsMzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIs''@;'; put 'put ''MzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2''@;'; put 'put ''NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODksMzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAsMjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcs''@;'; put 'put ''MjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYx''@;'; put 'put ''MzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzksMjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMsMjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYs''@;'; put 'put ''Mjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYx''@;'; put 'put ''MjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMsMzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3MjgsMzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3Mzks''@;'; put 'put ''MzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3''@;'; put 'put ''OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgsMzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMsMzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQs''@;'; put 'put ''MzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEzNzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUy''@;'; put 'put ''MjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQsMjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIsMzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUs''@;'; put 'put ''MjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAzNjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4''@;'; put 'put ''MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEsMjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcsMzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIs''@;'; put 'put ''MzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5''@;'; put 'put ''MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUsMzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEsMzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAs''@;'; put 'put ''MzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5''@;'; put 'put ''NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYsMzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTksMjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYs''@;'; put 'put ''MzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0''@;'; put 'put ''OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMsMzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAsMzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQs''@;'; put 'put ''MjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUxNDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5''@;'; put 'put ''OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzFlMywzMTAwMSwzMTAwMiwzMTAwMywzMTAwNCwzMTAwNSwzMTAwNywzMTAwOCwzMTAwOSwzMTAxMCwzMTAxMSwzMTAxMywzMTAxNCwzMTAxNSwzMTAxNiwzMTAxNywzMTAxOCwzMTAxOSwzMTAyMCwzMTAyMSwzMTAyMiwz''@;'; put 'put ''MTAyMywzMTAyNCwzMTAyNSwzMTAyNiwzMTAyNywzMTAyOSwzMTAzMCwzMTAzMSwzMTAzMiwzMTAzMywzMTAzNywzMTAzOSwzMTA0MiwzMTA0MywzMTA0NCwzMTA0NSwzMTA0NywzMTA1MCwzMTA1MSwzMTA1MiwzMTA1MywzMTA1NCwzMTA1NSwzMTA1NiwzMTA1NywzMTA1OCwzMTA2MCwzMTA2''@;'; put 'put ''MSwzMTA2NCwzMTA2NSwzMTA3MywzMTA3NSwzMTA3NiwzMTA3OCwzMTA4MSwzMTA4MiwzMTA4MywzMTA4NCwzMTA4NiwzMTA4OCwzMTA4OSwzMTA5MCwzMTA5MSwzMTA5MiwzMTA5MywzMTA5NCwzMTA5NywzMTA5OSwzMTEwMCwzMTEwMSwzMTEwMiwzMTEwMywzMTEwNiwzMTEwNywzMTExMCwz''@;'; put 'put ''MTExMSwzMTExMiwzMTExMywzMTExNSwzMTExNiwzMTExNywzMTExOCwzMTEyMCwzMTEyMSwzMTEyMiwyNDYwOCwzMjgyOSwyNTI4NSwyMDAyNSwyMTMzMywzNzExMiwyNTUyOCwzMjk2NiwyNjA4NiwyNzY5NCwyMDI5NCwyNDgxNCwyODEyOSwzNTgwNiwyNDM3NywzNDUwNywyNDQwMywyNTM3''@;'; put 'put ''NywyMDgyNiwzMzYzMywyNjcyMywyMDk5MiwyNTQ0MywzNjQyNCwyMDQ5OCwyMzcwNywzMTA5NSwyMzU0OCwyMTA0MCwzMTI5MSwyNDc2NCwzNjk0NywzMDQyMywyNDUwMywyNDQ3MSwzMDM0MCwzNjQ2MCwyODc4MywzMDMzMSwzMTU2MSwzMDYzNCwyMDk3OSwzNzAxMSwyMjU2NCwyMDMwMiwy''@;'; put 'put ''ODQwNCwzNjg0MiwyNTkzMiwzMTUxNSwyOTM4MCwyODA2OCwzMjczNSwyMzI2NSwyNTI2OSwyNDIxMywyMjMyMCwzMzkyMiwzMTUzMiwyNDA5MywyNDM1MSwzNjg4MiwzMjUzMiwzOTA3MiwyNTQ3NCwyODM1OSwzMDg3MiwyODg1NywyMDg1NiwzODc0NywyMjQ0MywzMDAwNSwyMDI5MSwzMDAw''@;'; put 'put ''OCwyNDIxNSwyNDgwNiwyMjg4MCwyODA5NiwyNzU4MywzMDg1NywyMTUwMCwzODYxMywyMDkzOSwyMDk5MywyNTQ4MSwyMTUxNCwzODAzNSwzNTg0MywzNjMwMCwyOTI0MSwzMDg3OSwzNDY3OCwzNjg0NSwzNTg1MywyMTQ3MiwzMTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyNywzMTEyOCwz''@;'; put 'put ''MTEyOSwzMTEzMSwzMTEzMiwzMTEzMywzMTEzNCwzMTEzNSwzMTEzNiwzMTEzNywzMTEzOCwzMTEzOSwzMTE0MCwzMTE0MSwzMTE0MiwzMTE0NCwzMTE0NSwzMTE0NiwzMTE0NywzMTE0OCwzMTE0OSwzMTE1MCwzMTE1MSwzMTE1MiwzMTE1MywzMTE1NCwzMTE1NiwzMTE1NywzMTE1OCwzMTE1''@;'; put 'put ''OSwzMTE2MCwzMTE2NCwzMTE2NywzMTE3MCwzMTE3MiwzMTE3MywzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MCwzMTE4MiwzMTE4MywzMTE4NCwzMTE4NywzMTE4OCwzMTE5MCwzMTE5MSwzMTE5MywzMTE5NCwzMTE5NSwzMTE5NiwzMTE5NywzMTE5OCwzMTIwMCwzMTIwMSwzMTIwMiwzMTIwNSwz''@;'; put 'put ''MTIwOCwzMTIxMCwzMTIxMiwzMTIxNCwzMTIxNywzMTIxOCwzMTIxOSwzMTIyMCwzMTIyMSwzMTIyMiwzMTIyMywzMTIyNSwzMTIyNiwzMTIyOCwzMTIzMCwzMTIzMSwzMTIzMywzMTIzNiwzMTIzNywzMTIzOSwzMTI0MCwzMTI0MSwzMTI0MiwzMTI0NCwzMTI0NywzMTI0OCwzMTI0OSwzMTI1''@;'; put 'put ''MCwzMTI1MSwzMTI1MywzMTI1NCwzMTI1NiwzMTI1NywzMTI1OSwzMTI2MCwxOTk2OSwzMDQ0NywyMTQ4NiwzODAyNSwzOTAzMCw0MDcxOCwzODE4OSwyMzQ1MCwzNTc0NiwyMDAwMiwxOTk5NiwyMDkwOCwzMzg5MSwyNTAyNiwyMTE2MCwyNjYzNSwyMDM3NSwyNDY4MywyMDkyMywyNzkzNCwy''@;'; put 'put ''MDgyOCwyNTIzOCwyNjAwNywzODQ5NywzNTkxMCwzNjg4NywzMDE2OCwzNzExNywzMDU2MywyNzYwMiwyOTMyMiwyOTQyMCwzNTgzNSwyMjU4MSwzMDU4NSwzNjE3MiwyNjQ2MCwzODIwOCwzMjkyMiwyNDIzMCwyODE5MywyMjkzMCwzMTQ3MSwzMDcwMSwzODIwMywyNzU3MywyNjAyOSwzMjUy''@;'; put 'put ''NiwyMjUzNCwyMDgxNywzODQzMSwyMzU0NSwyMjY5NywyMTU0NCwzNjQ2NiwyNTk1OCwzOTAzOSwyMjI0NCwzODA0NSwzMDQ2MiwzNjkyOSwyNTQ3OSwyMTcwMiwyMjgxMCwyMjg0MiwyMjQyNywzNjUzMCwyNjQyMSwzNjM0NiwzMzMzMywyMTA1NywyNDgxNiwyMjU0OSwzNDU1OCwyMzc4NCw0''@;'; put 'put ''MDUxNywyMDQyMCwzOTA2OSwzNTc2OSwyMzA3NywyNDY5NCwyMTM4MCwyNTIxMiwzNjk0MywzNzEyMiwzOTI5NSwyNDY4MSwzMjc4MCwyMDc5OSwzMjgxOSwyMzU3MiwzOTI4NSwyNzk1MywyMDEwOCwzMTI2MSwzMTI2MywzMTI2NSwzMTI2NiwzMTI2OCwzMTI2OSwzMTI3MCwzMTI3MSwzMTI3''@;'; put 'put ''MiwzMTI3MywzMTI3NCwzMTI3NSwzMTI3NiwzMTI3NywzMTI3OCwzMTI3OSwzMTI4MCwzMTI4MSwzMTI4MiwzMTI4NCwzMTI4NSwzMTI4NiwzMTI4OCwzMTI5MCwzMTI5NCwzMTI5NiwzMTI5NywzMTI5OCwzMTI5OSwzMTMwMCwzMTMwMSwzMTMwMywzMTMwNCwzMTMwNSwzMTMwNiwzMTMwNywz''@;'; put 'put ''MTMwOCwzMTMwOSwzMTMxMCwzMTMxMSwzMTMxMiwzMTMxNCwzMTMxNSwzMTMxNiwzMTMxNywzMTMxOCwzMTMyMCwzMTMyMSwzMTMyMiwzMTMyMywzMTMyNCwzMTMyNSwzMTMyNiwzMTMyNywzMTMyOCwzMTMyOSwzMTMzMCwzMTMzMSwzMTMzMiwzMTMzMywzMTMzNCwzMTMzNSwzMTMzNiwzMTMz''@;'; put 'put ''NywzMTMzOCwzMTMzOSwzMTM0MCwzMTM0MSwzMTM0MiwzMTM0MywzMTM0NSwzMTM0NiwzMTM0NywzMTM0OSwzMTM1NSwzMTM1NiwzMTM1NywzMTM1OCwzMTM2MiwzMTM2NSwzMTM2NywzMTM2OSwzMTM3MCwzMTM3MSwzMTM3MiwzMTM3NCwzMTM3NSwzMTM3NiwzMTM3OSwzMTM4MCwzMTM4NSwz''@;'; put 'put ''MTM4NiwzMTM4NywzMTM5MCwzMTM5MywzMTM5NCwzNjE0NCwyMTQ1NywzMjYwMiwzMTU2NywyMDI0MCwyMDA0NywzODQwMCwyNzg2MSwyOTY0OCwzNDI4MSwyNDA3MCwzMDA1OCwzMjc2MywyNzE0NiwzMDcxOCwzODAzNCwzMjMyMSwyMDk2MSwyODkwMiwyMTQ1MywzNjgyMCwzMzUzOSwzNjEz''@;'; put 'put ''NywyOTM1OSwzOTI3NywyNzg2NywyMjM0NiwzMzQ1OSwyNjA0MSwzMjkzOCwyNTE1MSwzODQ1MCwyMjk1MiwyMDIyMywzNTc3NSwzMjQ0MiwyNTkxOCwzMzc3OCwzODc1MCwyMTg1NywzOTEzNCwzMjkzMywyMTI5MCwzNTgzNywyMTUzNiwzMjk1NCwyNDIyMywyNzgzMiwzNjE1MywzMzQ1Miwz''@;'; put 'put ''NzIxMCwyMTU0NSwyNzY3NSwyMDk5OCwzMjQzOSwyMjM2NywyODk1NCwyNzc3NCwzMTg4MSwyMjg1OSwyMDIyMSwyNDU3NSwyNDg2OCwzMTkxNCwyMDAxNiwyMzU1MywyNjUzOSwzNDU2MiwyMzc5MiwzODE1NSwzOTExOCwzMDEyNywyODkyNSwzNjg5OCwyMDkxMSwzMjU0MSwzNTc3MywyMjg1''@;'; put 'put ''NywyMDk2NCwyMDMxNSwyMTU0MiwyMjgyNywyNTk3NSwzMjkzMiwyMzQxMywyNTIwNiwyNTI4MiwzNjc1MiwyNDEzMywyNzY3OSwzMTUyNiwyMDIzOSwyMDQ0MCwyNjM4MSwzMTM5NSwzMTM5NiwzMTM5OSwzMTQwMSwzMTQwMiwzMTQwMywzMTQwNiwzMTQwNywzMTQwOCwzMTQwOSwzMTQxMCwz''@;'; put 'put ''MTQxMiwzMTQxMywzMTQxNCwzMTQxNSwzMTQxNiwzMTQxNywzMTQxOCwzMTQxOSwzMTQyMCwzMTQyMSwzMTQyMiwzMTQyNCwzMTQyNSwzMTQyNiwzMTQyNywzMTQyOCwzMTQyOSwzMTQzMCwzMTQzMSwzMTQzMiwzMTQzMywzMTQzNCwzMTQzNiwzMTQzNywzMTQzOCwzMTQzOSwzMTQ0MCwzMTQ0''@;'; put 'put ''MSwzMTQ0MiwzMTQ0MywzMTQ0NCwzMTQ0NSwzMTQ0NywzMTQ0OCwzMTQ1MCwzMTQ1MSwzMTQ1MiwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MCwzMTQ2MywzMTQ2NCwzMTQ2NSwzMTQ2NiwzMTQ2NywzMTQ2OCwzMTQ3MCwzMTQ3MiwzMTQ3MywzMTQ3NCwzMTQ3NSwzMTQ3NiwzMTQ3NywzMTQ3OCwz''@;'; put 'put ''MTQ3OSwzMTQ4MCwzMTQ4MywzMTQ4NCwzMTQ4NiwzMTQ4OCwzMTQ4OSwzMTQ5MCwzMTQ5MywzMTQ5NSwzMTQ5NywzMTUwMCwzMTUwMSwzMTUwMiwzMTUwNCwzMTUwNiwzMTUwNywzMTUxMCwzMTUxMSwzMTUxMiwzMTUxNCwzMTUxNiwzMTUxNywzMTUxOSwzMTUyMSwzMTUyMiwzMTUyMywzMTUy''@;'; put 'put ''NywzMTUyOSwzMTUzMywyODAxNCwyODA3NCwzMTExOSwzNDk5MywyNDM0MywyOTk5NSwyNTI0MiwzNjc0MSwyMDQ2MywzNzM0MCwyNjAyMywzMzA3MSwzMzEwNSwyNDIyMCwzMzEwNCwzNjIxMiwyMTEwMywzNTIwNiwzNjE3MSwyMjc5NywyMDYxMywyMDE4NCwzODQyOCwyOTIzOCwzMzE0NSwz''@;'; put 'put ''NjEyNywyMzUwMCwzNTc0NywzODQ2OCwyMjkxOSwzMjUzOCwyMTY0OCwyMjEzNCwyMjAzMCwzNTgxMywyNTkxMywyNzAxMCwzODA0MSwzMDQyMiwyODI5NywyNDE3OCwyOTk3NiwyNjQzOCwyNjU3NywzMTQ4NywzMjkyNSwzNjIxNCwyNDg2MywzMTE3NCwyNTk1NCwzNjE5NSwyMDg3MiwyMTAx''@;'; put 'put ''OCwzODA1MCwzMjU2OCwzMjkyMywzMjQzNCwyMzcwMywyODIwNywyNjQ2NCwzMTcwNSwzMDM0NywzOTY0MCwzMzE2NywzMjY2MCwzMTk1NywyNTYzMCwzODIyNCwzMTI5NSwyMTU3OCwyMTczMywyNzQ2OCwyNTYwMSwyNTA5Niw0MDUwOSwzMzAxMSwzMDEwNSwyMTEwNiwzODc2MSwzMzg4Mywy''@;'; put 'put ''NjY4NCwzNDUzMiwzODQwMSwzODU0OCwzODEyNCwyMDAxMCwyMTUwOCwzMjQ3MywyNjY4MSwzNjMxOSwzMjc4OSwyNjM1NiwyNDIxOCwzMjY5NywzMTUzNSwzMTUzNiwzMTUzOCwzMTU0MCwzMTU0MSwzMTU0MiwzMTU0MywzMTU0NSwzMTU0NywzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1''@;'; put 'put ''NCwzMTU1NSwzMTU1NiwzMTU1OCwzMTU2MCwzMTU2MiwzMTU2NSwzMTU2NiwzMTU3MSwzMTU3MywzMTU3NSwzMTU3NywzMTU4MCwzMTU4MiwzMTU4MywzMTU4NSwzMTU4NywzMTU4OCwzMTU4OSwzMTU5MCwzMTU5MSwzMTU5MiwzMTU5MywzMTU5NCwzMTU5NSwzMTU5NiwzMTU5NywzMTU5OSwz''@;'; put 'put ''MTYwMCwzMTYwMywzMTYwNCwzMTYwNiwzMTYwOCwzMTYxMCwzMTYxMiwzMTYxMywzMTYxNSwzMTYxNywzMTYxOCwzMTYxOSwzMTYyMCwzMTYyMiwzMTYyMywzMTYyNCwzMTYyNSwzMTYyNiwzMTYyNywzMTYyOCwzMTYzMCwzMTYzMSwzMTYzMywzMTYzNCwzMTYzNSwzMTYzOCwzMTY0MCwzMTY0''@;'; put 'put ''MSwzMTY0MiwzMTY0MywzMTY0NiwzMTY0NywzMTY0OCwzMTY1MSwzMTY1MiwzMTY1MywzMTY2MiwzMTY2MywzMTY2NCwzMTY2NiwzMTY2NywzMTY2OSwzMTY3MCwzMTY3MSwzMTY3MywzMTY3NCwzMTY3NSwzMTY3NiwzMTY3NywzMTY3OCwzMTY3OSwzMTY4MCwzMTY4MiwzMTY4MywzMTY4NCwy''@;'; put 'put ''MjQ2NiwzMjgzMSwyNjc3NSwyNDAzNywyNTkxNSwyMTE1MSwyNDY4NSw0MDg1OCwyMDM3OSwzNjUyNCwyMDg0NCwyMzQ2NywyNDMzOSwyNDA0MSwyNzc0MiwyNTMyOSwzNjEyOSwyMDg0OSwzODA1NywyMTI0NiwyNzgwNywzMzUwMywyOTM5OSwyMjQzNCwyNjUwMCwzNjE0MSwyMjgxNSwzNjc2''@;'; put 'put ''NCwzMzczNSwyMTY1MywzMTYyOSwyMDI3MiwyNzgzNywyMzM5NiwyMjk5Myw0MDcyMywyMTQ3NiwzNDUwNiwzOTU5MiwzNTg5NSwzMjkyOSwyNTkyNSwzOTAzOCwyMjI2NiwzODU5OSwyMTAzOCwyOTkxNiwyMTA3MiwyMzUyMSwyNTM0NiwzNTA3NCwyMDA1NCwyNTI5NiwyNDYxOCwyNjg3NCwy''@;'; put 'put ''MDg1MSwyMzQ0OCwyMDg5NiwzNTI2NiwzMTY0OSwzOTMwMiwzMjU5MiwyNDgxNSwyODc0OCwzNjE0MywyMDgwOSwyNDE5MSwzNjg5MSwyOTgwOCwzNTI2OCwyMjMxNywzMDc4OSwyNDQwMiw0MDg2MywzODM5NCwzNjcxMiwzOTc0MCwzNTgwOSwzMDMyOCwyNjY5MCwyNjU4OCwzNjMzMCwzNjE0''@;'; put 'put ''OSwyMTA1MywzNjc0NiwyODM3OCwyNjgyOSwzODE0OSwzNzEwMSwyMjI2OSwyNjUyNCwzNTA2NSwzNjgwNywyMTcwNCwzMTY4NSwzMTY4OCwzMTY4OSwzMTY5MCwzMTY5MSwzMTY5MywzMTY5NCwzMTY5NSwzMTY5NiwzMTY5OCwzMTcwMCwzMTcwMSwzMTcwMiwzMTcwMywzMTcwNCwzMTcwNywz''@;'; put 'put ''MTcwOCwzMTcxMCwzMTcxMSwzMTcxMiwzMTcxNCwzMTcxNSwzMTcxNiwzMTcxOSwzMTcyMCwzMTcyMSwzMTcyMywzMTcyNCwzMTcyNSwzMTcyNywzMTcyOCwzMTczMCwzMTczMSwzMTczMiwzMTczMywzMTczNCwzMTczNiwzMTczNywzMTczOCwzMTczOSwzMTc0MSwzMTc0MywzMTc0NCwzMTc0''@;'; put 'put ''NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc0OSwzMTc1MCwzMTc1MiwzMTc1MywzMTc1NCwzMTc1NywzMTc1OCwzMTc2MCwzMTc2MSwzMTc2MiwzMTc2MywzMTc2NCwzMTc2NSwzMTc2NywzMTc2OCwzMTc2OSwzMTc3MCwzMTc3MSwzMTc3MiwzMTc3MywzMTc3NCwzMTc3NiwzMTc3NywzMTc3OCwz''@;'; put 'put ''MTc3OSwzMTc4MCwzMTc4MSwzMTc4NCwzMTc4NSwzMTc4NywzMTc4OCwzMTc4OSwzMTc5MCwzMTc5MSwzMTc5MiwzMTc5MywzMTc5NCwzMTc5NSwzMTc5NiwzMTc5NywzMTc5OCwzMTc5OSwzMTgwMSwzMTgwMiwzMTgwMywzMTgwNCwzMTgwNSwzMTgwNiwzMTgxMCwzOTYwOCwyMzQwMSwyODAy''@;'; put 'put ''MywyNzY4NiwyMDEzMywyMzQ3NSwzOTU1OSwzNzIxOSwyNWUzLDM3MDM5LDM4ODg5LDIxNTQ3LDI4MDg1LDIzNTA2LDIwOTg5LDIxODk4LDMyNTk3LDMyNzUyLDI1Nzg4LDI1NDIxLDI2MDk3LDI1MDIyLDI0NzE3LDI4OTM4LDI3NzM1LDI3NzIxLDIyODMxLDI2NDc3LDMzMzIyLDIyNzQxLDIy''@;'; put 'put ''MTU4LDM1OTQ2LDI3NjI3LDM3MDg1LDIyOTA5LDMyNzkxLDIxNDk1LDI4MDA5LDIxNjIxLDIxOTE3LDMzNjU1LDMzNzQzLDI2NjgwLDMxMTY2LDIxNjQ0LDIwMzA5LDIxNTEyLDMwNDE4LDM1OTc3LDM4NDAyLDI3ODI3LDI4MDg4LDM2MjAzLDM1MDg4LDQwNTQ4LDM2MTU0LDIyMDc5LDQwNjU3''@;'; put 'put ''LDMwMTY1LDI0NDU2LDI5NDA4LDI0NjgwLDIxNzU2LDIwMTM2LDI3MTc4LDM0OTEzLDI0NjU4LDM2NzIwLDIxNzAwLDI4ODg4LDM0NDI1LDQwNTExLDI3OTQ2LDIzNDM5LDI0MzQ0LDMyNDE4LDIxODk3LDIwMzk5LDI5NDkyLDIxNTY0LDIxNDAyLDIwNTA1LDIxNTE4LDIxNjI4LDIwMDQ2LDI0''@;'; put 'put ''NTczLDI5Nzg2LDIyNzc0LDMzODk5LDMyOTkzLDM0Njc2LDI5MzkyLDMxOTQ2LDI4MjQ2LDMxODExLDMxODEyLDMxODEzLDMxODE0LDMxODE1LDMxODE2LDMxODE3LDMxODE4LDMxODE5LDMxODIwLDMxODIyLDMxODIzLDMxODI0LDMxODI1LDMxODI2LDMxODI3LDMxODI4LDMxODI5LDMxODMw''@;'; put 'put ''LDMxODMxLDMxODMyLDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODM5LDMxODQwLDMxODQxLDMxODQyLDMxODQzLDMxODQ0LDMxODQ1LDMxODQ2LDMxODQ3LDMxODQ4LDMxODQ5LDMxODUwLDMxODUxLDMxODUyLDMxODUzLDMxODU0LDMxODU1LDMxODU2LDMxODU3LDMx''@;'; put 'put ''ODU4LDMxODYxLDMxODYyLDMxODYzLDMxODY0LDMxODY1LDMxODY2LDMxODcwLDMxODcxLDMxODcyLDMxODczLDMxODc0LDMxODc1LDMxODc2LDMxODc3LDMxODc4LDMxODc5LDMxODgwLDMxODgyLDMxODgzLDMxODg0LDMxODg1LDMxODg2LDMxODg3LDMxODg4LDMxODkxLDMxODkyLDMxODk0''@;'; put 'put ''LDMxODk3LDMxODk4LDMxODk5LDMxOTA0LDMxOTA1LDMxOTA3LDMxOTEwLDMxOTExLDMxOTEyLDMxOTEzLDMxOTE1LDMxOTE2LDMxOTE3LDMxOTE5LDMxOTIwLDMxOTI0LDMxOTI1LDMxOTI2LDMxOTI3LDMxOTI4LDMxOTMwLDMxOTMxLDI0MzU5LDM0MzgyLDIxODA0LDI1MjUyLDIwMTE0LDI3''@;'; put 'put ''ODE4LDI1MTQzLDMzNDU3LDIxNzE5LDIxMzI2LDI5NTAyLDI4MzY5LDMwMDExLDIxMDEwLDIxMjcwLDM1ODA1LDI3MDg4LDI0NDU4LDI0NTc2LDI4MTQyLDIyMzUxLDI3NDI2LDI5NjE1LDI2NzA3LDM2ODI0LDMyNTMxLDI1NDQyLDI0NzM5LDIxNzk2LDMwMTg2LDM1OTM4LDI4OTQ5LDI4MDY3''@;'; put 'put ''LDIzNDYyLDI0MTg3LDMzNjE4LDI0OTA4LDQwNjQ0LDMwOTcwLDM0NjQ3LDMxNzgzLDMwMzQzLDIwOTc2LDI0ODIyLDI5MDA0LDI2MTc5LDI0MTQwLDI0NjUzLDM1ODU0LDI4Nzg0LDI1MzgxLDM2NzQ1LDI0NTA5LDI0Njc0LDM0NTE2LDIyMjM4LDI3NTg1LDI0NzI0LDI0OTM1LDIxMzIxLDI0''@;'; put 'put ''ODAwLDI2MjE0LDM2MTU5LDMxMjI5LDIwMjUwLDI4OTA1LDI3NzE5LDM1NzYzLDM1ODI2LDMyNDcyLDMzNjM2LDI2MTI3LDIzMTMwLDM5NzQ2LDI3OTg1LDI4MTUxLDM1OTA1LDI3OTYzLDIwMjQ5LDI4Nzc5LDMzNzE5LDI1MTEwLDI0Nzg1LDM4NjY5LDM2MTM1LDMxMDk2LDIwOTg3LDIyMzM0''@;'; put 'put ''LDIyNTIyLDI2NDI2LDMwMDcyLDMxMjkzLDMxMjE1LDMxNjM3LDMxOTM1LDMxOTM2LDMxOTM4LDMxOTM5LDMxOTQwLDMxOTQyLDMxOTQ1LDMxOTQ3LDMxOTUwLDMxOTUxLDMxOTUyLDMxOTUzLDMxOTU0LDMxOTU1LDMxOTU2LDMxOTYwLDMxOTYyLDMxOTYzLDMxOTY1LDMxOTY2LDMxOTY5LDMx''@;'; put 'put ''OTcwLDMxOTcxLDMxOTcyLDMxOTczLDMxOTc0LDMxOTc1LDMxOTc3LDMxOTc4LDMxOTc5LDMxOTgwLDMxOTgxLDMxOTgyLDMxOTg0LDMxOTg1LDMxOTg2LDMxOTg3LDMxOTg4LDMxOTg5LDMxOTkwLDMxOTkxLDMxOTkzLDMxOTk0LDMxOTk2LDMxOTk3LDMxOTk4LDMxOTk5LDMyZTMsMzIwMDEs''@;'; put 'put ''MzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIwMjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIw''@;'; put 'put ''MzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEsMzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjksMzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODks''@;'; put 'put ''MzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMwMzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMzOTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0''@;'; put 'put ''OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYsMzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEsMzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYs''@;'; put 'put ''MzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUzMTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUy''@;'; put 'put ''NjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcsMzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIsMzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgs''@;'; put 'put ''MzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIwOTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIxMDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIx''@;'; put 'put ''MDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQsMzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUs''@;'; put 'put ''MzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIxNTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgxNzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1''@;'; put 'put ''NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIsMzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQsMjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDks''@;'; put 'put ''MzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUy''@;'; put 'put ''OTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEsMzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAsMzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgs''@;'; put 'put ''MjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIxNjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIxNzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIx''@;'; put 'put ''ODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIsMzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgs''@;'; put 'put ''MzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIyMjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIyMzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIy''@;'; put 'put ''MzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAsMzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAsNDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMs''@;'; put 'put ''MjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAwMzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYw''@;'; put 'put ''ODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAsMjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAsMjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0Nzcs''@;'; put 'put ''MjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUyNzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIy''@;'; put 'put ''NTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgsMzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMsMzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzks''@;'; put 'put ''MzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIyOTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIzMDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIz''@;'; put 'put ''MDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUsMzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEsMzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcs''@;'; put 'put ''MzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQzMjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1''@;'; put 'put ''NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEsMzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMsMzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEs''@;'; put 'put ''MjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcyMzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYz''@;'; put 'put ''MjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEsMzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIsMzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMs''@;'; put 'put ''MzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIzNzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIzNzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIz''@;'; put 'put ''ODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgsMzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMsMzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDks''@;'; put 'put ''MzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1''@;'; put 'put ''ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYsMjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMsMjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIs''@;'; put 'put ''MzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQyNjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjky''@;'; put 'put ''ODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQsMzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQsMjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3Mjks''@;'; put 'put ''Mjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEzODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2''@;'; put 'put ''MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQsMzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAsMzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcs''@;'; put 'put ''MzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2''@;'; put 'put ''ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIsMzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAsMzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3Mjks''@;'; put 'put ''MzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2''@;'; put 'put ''NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgsMzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgsMjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUs''@;'; put 'put ''MzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAyNzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkw''@;'; put 'put ''NDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcsMzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQsMzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQs''@;'; put 'put ''MzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4''@;'; put 'put ''MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4MzksMzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgsMzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcs''@;'; put 'put ''MzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4''@;'; put 'put ''ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYsMzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgsMzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUs''@;'; put 'put ''MzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1''@;'; put 'put ''MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQsMzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAsNDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQs''@;'; put 'put ''MjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5''@;'; put 'put ''MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMsMzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5NjksMzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5Nzgs''@;'; put 'put ''MzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMwMjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMwMzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMw''@;'; put 'put ''NDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcsMzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYsMzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQs''@;'; put 'put ''MzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAwNDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkw''@;'; put 'put ''MjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgsMzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEsMzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4Njgs''@;'; put 'put ''MjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzExODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2''@;'; put 'put ''NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAsMzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcsMzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEs''@;'; put 'put ''MzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMxMzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMxNDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMx''@;'; put 'put ''NTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMsMzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODksMzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgs''@;'; put 'put ''MzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMyMjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMyMzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3''@;'; put 'put ''MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEsMjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcsMjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUs''@;'; put 'put ''MjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIyMTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2''@;'; put 'put ''MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEsMjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0NjcsMjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMs''@;'; put 'put ''MzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMyNDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMyNDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMy''@;'; put 'put ''NTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcsMzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODksMzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTks''@;'; put 'put ''MzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMzNDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMzNDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMz''@;'; put 'put ''NTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYsMzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEsMzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUs''@;'; put 'put ''MjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYy''@;'; put 'put ''NzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYsMjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDksMzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYs''@;'; put 'put ''MzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4''@;'; put 'put ''OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTksMzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAs''@;'; put 'put ''MzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0''@;'; put 'put ''OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1MjgsMzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUsMzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQs''@;'; put 'put ''MzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAx''@;'; put 'put ''NzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzksMjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1MjksMzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEs''@;'; put 'put ''MjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUx''@;'; put 'put ''MTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgsMzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIsMjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2Njgs''@;'; put 'put ''MzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2''@;'; put 'put ''NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIsMzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2NzksMzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcs''@;'; put 'put ''MzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3''@;'; put 'put ''NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3NjgsMzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUsMjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEs''@;'; put 'put ''MzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQxMDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3''@;'; put 'put ''MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMsMzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgsMjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3Nzcs''@;'; put 'put ''Mzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcxOTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1''@;'; put 'put ''MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIsMzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEsMzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMs''@;'; put 'put ''MzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4''@;'; put 'put ''NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAsMzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYsMzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcs''@;'; put 'put ''MzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4''@;'; put 'put ''NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIsMjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYsMjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0Njks''@;'; put 'put ''MjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgzNDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5''@;'; put 'put ''MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQsMjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIsMzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5Nzcs''@;'; put 'put ''MjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5''@;'; put 'put ''NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMsMzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIsMzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEs''@;'; put 'put ''MzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQwMTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQwMjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQw''@;'; put 'put ''MzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUsMjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1NzgsMjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIs''@;'; put 'put ''MjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEwMjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1''@;'; put 'put ''NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1NjksMjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAsMzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYs''@;'; put 'put ''MjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQw''@;'; put 'put ''NTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIsMzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgsMzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYs''@;'; put 'put ''MzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQxMTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQxMTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQx''@;'; put 'put ''MjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMsMzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTks''@;'; put 'put ''MzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIzMDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgyODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUz''@;'; put 'put ''NDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAsMjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMsMjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEs''@;'; put 'put ''MjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgx''@;'; put 'put ''MTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEsMjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYsMjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQs''@;'; put 'put ''MzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQyMDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQyMDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQy''@;'; put 'put ''MTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUsMzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIs''@;'; put 'put ''MzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQyNzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQyODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQy''@;'; put 'put ''ODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjksMjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUsMzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYs''@;'; put 'put ''MzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQwNTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0''@;'; put 'put ''MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcsMzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2MzksMzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIs''@;'; put 'put ''MjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQyOTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQz''@;'; put 'put ''MDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMsMzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjksMzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUs''@;'; put 'put ''MzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQzNTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQzNTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQz''@;'; put 'put ''NjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODksMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUsMzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMs''@;'; put 'put ''MzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcyMTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAx''@;'; put 'put ''OTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzksMjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgsMzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYs''@;'; put 'put ''MzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYzNjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4''@;'; put 'put ''MjUsMjgxNTUsMjI2MzUsM2U0LDI5OTgwLDI0Njg0LDMzMzAwLDMzMDk0LDI1MzYxLDI2NDY1LDM2ODM0LDMwNTIyLDM2MzM5LDM2MTQ4LDM4MDgxLDI0MDg2LDIxMzgxLDIxNTQ4LDI4ODY3LDM0NDEzLDM0NDE1LDM0NDE2LDM0NDE4LDM0NDE5LDM0NDIwLDM0NDIxLDM0NDIyLDM0NDIzLDM0''@;'; put 'put ''NDI0LDM0NDM1LDM0NDM2LDM0NDM3LDM0NDM4LDM0NDM5LDM0NDQwLDM0NDQxLDM0NDQ2LDM0NDQ3LDM0NDQ4LDM0NDQ5LDM0NDUwLDM0NDUyLDM0NDU0LDM0NDU1LDM0NDU2LDM0NDU3LDM0NDU4LDM0NDU5LDM0NDYyLDM0NDYzLDM0NDY0LDM0NDY1LDM0NDY2LDM0NDY5LDM0NDcwLDM0NDc1''@;'; put 'put ''LDM0NDc3LDM0NDc4LDM0NDgyLDM0NDgzLDM0NDg3LDM0NDg4LDM0NDg5LDM0NDkxLDM0NDkyLDM0NDkzLDM0NDk0LDM0NDk1LDM0NDk3LDM0NDk4LDM0NDk5LDM0NTAxLDM0NTA0LDM0NTA4LDM0NTA5LDM0NTE0LDM0NTE1LDM0NTE3LDM0NTE4LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI1LDM0''@;'; put 'put ''NTI4LDM0NTI5LDM0NTMwLDM0NTMxLDM0NTMzLDM0NTM0LDM0NTM1LDM0NTM2LDM0NTM4LDM0NTM5LDM0NTQwLDM0NTQzLDM0NTQ5LDM0NTUwLDM0NTUxLDM0NTU0LDM0NTU1LDM0NTU2LDM0NTU3LDM0NTU5LDM0NTYxLDM0NTY0LDM0NTY1LDM0NTY2LDM0NTcxLDM0NTcyLDM0NTc0LDM0NTc1''@;'; put 'put ''LDM0NTc2LDM0NTc3LDM0NTgwLDM0NTgyLDI3NzEyLDI0MzExLDIwNTcyLDIwMTQxLDI0MjM3LDI1NDAyLDMzMzUxLDM2ODkwLDI2NzA0LDM3MjMwLDMwNjQzLDIxNTE2LDM4MTA4LDI0NDIwLDMxNDYxLDI2NzQyLDI1NDEzLDMxNTcwLDMyNDc5LDMwMTcxLDIwNTk5LDI1MjM3LDIyODM2LDM2''@;'; put 'put ''ODc5LDIwOTg0LDMxMTcxLDMxMzYxLDIyMjcwLDI0NDY2LDM2ODg0LDI4MDM0LDIzNjQ4LDIyMzAzLDIxNTIwLDIwODIwLDI4MjM3LDIyMjQyLDI1NTEyLDM5MDU5LDMzMTUxLDM0NTgxLDM1MTE0LDM2ODY0LDIxNTM0LDIzNjYzLDMzMjE2LDI1MzAyLDI1MTc2LDMzMDczLDQwNTAxLDM4NDY0''@;'; put 'put ''LDM5NTM0LDM5NTQ4LDI2OTI1LDIyOTQ5LDI1Mjk5LDIxODIyLDI1MzY2LDIxNzAzLDM0NTIxLDI3OTY0LDIzMDQzLDI5OTI2LDM0OTcyLDI3NDk4LDIyODA2LDM1OTE2LDI0MzY3LDI4Mjg2LDI5NjA5LDM5MDM3LDIwMDI0LDI4OTE5LDIzNDM2LDMwODcxLDI1NDA1LDI2MjAyLDMwMzU4LDI0''@;'; put 'put ''Nzc5LDIzNDUxLDIzMTEzLDE5OTc1LDMzMTA5LDI3NzU0LDI5NTc5LDIwMTI5LDI2NTA1LDMyNTkzLDI0NDQ4LDI2MTA2LDI2Mzk1LDI0NTM2LDIyOTE2LDIzMDQxLDM0NTg1LDM0NTg3LDM0NTg5LDM0NTkxLDM0NTkyLDM0NTk2LDM0NTk4LDM0NTk5LDM0NjAwLDM0NjAyLDM0NjAzLDM0NjA0''@;'; put 'put ''LDM0NjA1LDM0NjA3LDM0NjA4LDM0NjEwLDM0NjExLDM0NjEzLDM0NjE0LDM0NjE2LDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjI0LDM0NjI1LDM0NjI2LDM0NjI3LDM0NjI4LDM0NjI5LDM0NjMwLDM0NjM0LDM0NjM1LDM0NjM3LDM0NjM5LDM0NjQwLDM0NjQxLDM0NjQyLDM0NjQ0LDM0''@;'; put 'put ''NjQ1LDM0NjQ2LDM0NjQ4LDM0NjUwLDM0NjUxLDM0NjUyLDM0NjUzLDM0NjU0LDM0NjU1LDM0NjU3LDM0NjU4LDM0NjYyLDM0NjYzLDM0NjY0LDM0NjY1LDM0NjY2LDM0NjY3LDM0NjY4LDM0NjY5LDM0NjcxLDM0NjczLDM0Njc0LDM0Njc1LDM0Njc3LDM0Njc5LDM0NjgwLDM0NjgxLDM0Njgy''@;'; put 'put ''LDM0Njg3LDM0Njg4LDM0Njg5LDM0NjkyLDM0Njk0LDM0Njk1LDM0Njk3LDM0Njk4LDM0NzAwLDM0NzAyLDM0NzAzLDM0NzA0LDM0NzA1LDM0NzA2LDM0NzA4LDM0NzA5LDM0NzEwLDM0NzEyLDM0NzEzLDM0NzE0LDM0NzE1LDM0NzE2LDM0NzE3LDM0NzE4LDM0NzIwLDM0NzIxLDM0NzIyLDM0''@;'; put 'put ''NzIzLDM0NzI0LDI0MDEzLDI0NDk0LDIxMzYxLDM4ODg2LDM2ODI5LDI2NjkzLDIyMjYwLDIxODA3LDI0Nzk5LDIwMDI2LDI4NDkzLDMyNTAwLDMzNDc5LDMzODA2LDIyOTk2LDIwMjU1LDIwMjY2LDIzNjE0LDMyNDI4LDI2NDEwLDM0MDc0LDIxNjE5LDMwMDMxLDMyOTYzLDIxODkwLDM5NzU5''@;'; put 'put ''LDIwMzAxLDI4MjA1LDM1ODU5LDIzNTYxLDI0OTQ0LDIxMzU1LDMwMjM5LDI4MjAxLDM0NDQyLDI1OTkxLDM4Mzk1LDMyNDQxLDIxNTYzLDMxMjgzLDMyMDEwLDM4MzgyLDIxOTg1LDMyNzA1LDI5OTM0LDI1MzczLDM0NTgzLDI4MDY1LDMxMzg5LDI1MTA1LDI2MDE3LDIxMzUxLDI1NTY5LDI3''@;'; put 'put ''Nzc5LDI0MDQzLDIxNTk2LDM4MDU2LDIwMDQ0LDI3NzQ1LDM1ODIwLDIzNjI3LDI2MDgwLDMzNDM2LDI2NzkxLDIxNTY2LDIxNTU2LDI3NTk1LDI3NDk0LDIwMTE2LDI1NDEwLDIxMzIwLDMzMzEwLDIwMjM3LDIwMzk4LDIyMzY2LDI1MDk4LDM4NjU0LDI2MjEyLDI5Mjg5LDIxMjQ3LDIxMTUz''@;'; put 'put ''LDI0NzM1LDM1ODIzLDI2MTMyLDI5MDgxLDI2NTEyLDM1MTk5LDMwODAyLDMwNzE3LDI2MjI0LDIyMDc1LDIxNTYwLDM4MTc3LDI5MzA2LDM0NzI1LDM0NzI2LDM0NzI3LDM0NzI5LDM0NzMwLDM0NzM0LDM0NzM2LDM0NzM3LDM0NzM4LDM0NzQwLDM0NzQyLDM0NzQzLDM0NzQ0LDM0NzQ1LDM0''@;'; put 'put ''NzQ3LDM0NzQ4LDM0NzUwLDM0NzUxLDM0NzUzLDM0NzU0LDM0NzU1LDM0NzU2LDM0NzU3LDM0NzU5LDM0NzYwLDM0NzYxLDM0NzY0LDM0NzY1LDM0NzY2LDM0NzY3LDM0NzY4LDM0NzcyLDM0NzczLDM0Nzc0LDM0Nzc1LDM0Nzc2LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgxLDM0NzgyLDM0Nzgz''@;'; put 'put ''LDM0Nzg1LDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0NzkwLDM0NzkxLDM0NzkyLDM0NzkzLDM0Nzk1LDM0Nzk2LDM0Nzk3LDM0Nzk5LDM0ODAwLDM0ODAxLDM0ODAyLDM0ODAzLDM0ODA0LDM0ODA1LDM0ODA2LDM0ODA3LDM0ODA4LDM0ODEwLDM0ODExLDM0ODEyLDM0ODEzLDM0ODE1LDM0ODE2LDM0''@;'; put 'put ''ODE3LDM0ODE4LDM0ODIwLDM0ODIxLDM0ODIyLDM0ODIzLDM0ODI0LDM0ODI1LDM0ODI3LDM0ODI4LDM0ODI5LDM0ODMwLDM0ODMxLDM0ODMyLDM0ODMzLDM0ODM0LDM0ODM2LDM0ODM5LDM0ODQwLDM0ODQxLDM0ODQyLDM0ODQ0LDM0ODQ1LDM0ODQ2LDM0ODQ3LDM0ODQ4LDM0ODUxLDMxMjMy''@;'; put 'put ''LDI0Njg3LDI0MDc2LDI0NzEzLDMzMTgxLDIyODA1LDI0Nzk2LDI5MDYwLDI4OTExLDI4MzMwLDI3NzI4LDI5MzEyLDI3MjY4LDM0OTg5LDI0MTA5LDIwMDY0LDIzMjE5LDIxOTE2LDM4MTE1LDI3OTI3LDMxOTk1LDM4NTUzLDI1MTAzLDMyNDU0LDMwNjA2LDM0NDMwLDIxMjgzLDM4Njg2LDM2''@;'; put 'put ''NzU4LDI2MjQ3LDIzNzc3LDIwMzg0LDI5NDIxLDE5OTc5LDIxNDE0LDIyNzk5LDIxNTIzLDI1NDcyLDM4MTg0LDIwODA4LDIwMTg1LDQwMDkyLDMyNDIwLDIxNjg4LDM2MTMyLDM0OTAwLDMzMzM1LDM4Mzg2LDI4MDQ2LDI0MzU4LDIzMjQ0LDI2MTc0LDM4NTA1LDI5NjE2LDI5NDg2LDIxNDM5''@;'; put 'put ''LDMzMTQ2LDM5MzAxLDMyNjczLDIzNDY2LDM4NTE5LDM4NDgwLDMyNDQ3LDMwNDU2LDIxNDEwLDM4MjYyLDM5MzIxLDMxNjY1LDM1MTQwLDI4MjQ4LDIwMDY1LDMyNzI0LDMxMDc3LDM1ODE0LDI0ODE5LDIxNzA5LDIwMTM5LDM5MDMzLDI0MDU1LDI3MjMzLDIwNjg3LDIxNTIxLDM1OTM3LDMz''@;'; put 'put ''ODMxLDMwODEzLDM4NjYwLDIxMDY2LDIxNzQyLDIyMTc5LDM4MTQ0LDI4MDQwLDIzNDc3LDI4MTAyLDI2MTk1LDM0ODUyLDM0ODUzLDM0ODU0LDM0ODU1LDM0ODU2LDM0ODU3LDM0ODU4LDM0ODU5LDM0ODYwLDM0ODYxLDM0ODYyLDM0ODYzLDM0ODY0LDM0ODY1LDM0ODY3LDM0ODY4LDM0ODY5''@;'; put 'put ''LDM0ODcwLDM0ODcxLDM0ODcyLDM0ODc0LDM0ODc1LDM0ODc3LDM0ODc4LDM0ODc5LDM0ODgxLDM0ODgyLDM0ODgzLDM0ODg2LDM0ODg3LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk1LDM0ODk2LDM0ODk3LDM0ODk4LDM0ODk5LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0''@;'; put 'put ''OTA3LDM0OTA4LDM0OTA5LDM0OTEwLDM0OTExLDM0OTEyLDM0OTE4LDM0OTE5LDM0OTIyLDM0OTI1LDM0OTI3LDM0OTI5LDM0OTMxLDM0OTMyLDM0OTMzLDM0OTM0LDM0OTM2LDM0OTM3LDM0OTM4LDM0OTM5LDM0OTQwLDM0OTQ0LDM0OTQ3LDM0OTUwLDM0OTUxLDM0OTUzLDM0OTU0LDM0OTU2''@;'; put 'put ''LDM0OTU4LDM0OTU5LDM0OTYwLDM0OTYxLDM0OTYzLDM0OTY0LDM0OTY1LDM0OTY3LDM0OTY4LDM0OTY5LDM0OTcwLDM0OTcxLDM0OTczLDM0OTc0LDM0OTc1LDM0OTc2LDM0OTc3LDM0OTc5LDM0OTgxLDM0OTgyLDM0OTgzLDM0OTg0LDM0OTg1LDM0OTg2LDIzNTY3LDIzMzg5LDI2NjU3LDMy''@;'; put 'put ''OTE4LDIxODgwLDMxNTA1LDI1OTI4LDI2OTY0LDIwMTIzLDI3NDYzLDM0NjM4LDM4Nzk1LDIxMzI3LDI1Mzc1LDI1NjU4LDM3MDM0LDI2MDEyLDMyOTYxLDM1ODU2LDIwODg5LDI2ODAwLDIxMzY4LDM0ODA5LDI1MDMyLDI3ODQ0LDI3ODk5LDM1ODc0LDIzNjMzLDM0MjE4LDMzNDU1LDM4MTU2''@;'; put 'put ''LDI3NDI3LDM2NzYzLDI2MDMyLDI0NTcxLDI0NTE1LDIwNDQ5LDM0ODg1LDI2MTQzLDMzMTI1LDI5NDgxLDI0ODI2LDIwODUyLDIxMDA5LDIyNDExLDI0NDE4LDM3MDI2LDM0ODkyLDM3MjY2LDI0MTg0LDI2NDQ3LDI0NjE1LDIyOTk1LDIwODA0LDIwOTgyLDMzMDE2LDIxMjU2LDI3NzY5LDM4''@;'; put 'put ''NTk2LDI5MDY2LDIwMjQxLDIwNDYyLDMyNjcwLDI2NDI5LDIxOTU3LDM4MTUyLDMxMTY4LDM0OTY2LDMyNDgzLDIyNjg3LDI1MTAwLDM4NjU2LDM0Mzk0LDIyMDQwLDM5MDM1LDI0NDY0LDM1NzY4LDMzOTg4LDM3MjA3LDIxNDY1LDI2MDkzLDI0MjA3LDMwMDQ0LDI0Njc2LDMyMTEwLDIzMTY3''@;'; put 'put ''LDMyNDkwLDMyNDkzLDM2NzEzLDIxOTI3LDIzNDU5LDI0NzQ4LDI2MDU5LDI5NTcyLDM0OTg4LDM0OTkwLDM0OTkxLDM0OTkyLDM0OTk0LDM0OTk1LDM0OTk2LDM0OTk3LDM0OTk4LDM1ZTMsMzUwMDEsMzUwMDIsMzUwMDMsMzUwMDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUw''@;'; put 'put ''MTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgsMzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDksMzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUs''@;'; put 'put ''MzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUwODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUwODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUw''@;'; put 'put ''OTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTksMzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcsMzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMs''@;'; put 'put ''MjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4''@;'; put 'put ''MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEsMjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQsMjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYs''@;'; put 'put ''MzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2''@;'; put 'put ''NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzksMzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUsMzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEs''@;'; put 'put ''MzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUxNzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUx''@;'; put 'put ''ODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAsMzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgsMzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQs''@;'; put 'put ''MzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUyMzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2''@;'; put 'put ''NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIsMjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgsMzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4Mzks''@;'; put 'put ''MzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAxNTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAx''@;'; put 'put ''MzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODksMzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIsMjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgs''@;'; put 'put ''MjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUyNDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUy''@;'; put 'put ''NTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMsMzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAsMzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDks''@;'; put 'put ''MzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUzMjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUzMzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUz''@;'; put 'put ''NDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcsMjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAsMjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2Mzks''@;'; put 'put ''MzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1''@;'; put 'put ''NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgsMzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQsMzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYs''@;'; put 'put ''NDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0''@;'; put 'put ''NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMsMzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgsMzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQs''@;'; put 'put ''MzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0''@;'; put 'put ''MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAsMzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUsMzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEs''@;'; put 'put ''MzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUwMjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgxNzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1''@;'; put 'put ''ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEsMzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIsMzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQs''@;'; put 'put ''MjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIzMTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYxNjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQy''@;'; put 'put ''OTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAsMjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYsMjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgs''@;'; put 'put ''MzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0''@;'; put 'put ''ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUsMzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAsMzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYs''@;'; put 'put ''MzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1''@;'; put 'put ''NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgsMjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgsMjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEs''@;'; put 'put ''Mjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcxNjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAx''@;'; put 'put ''ODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYsMzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEsMzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYs''@;'; put 'put ''MzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1''@;'; put 'put ''NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYsMzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEsMzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcs''@;'; put 'put ''MzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2''@;'; put 'put ''MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMsMzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2MzgsMzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQs''@;'; put 'put ''MzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1''@;'; put 'put ''NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIsMjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDksMzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUs''@;'; put 'put ''MzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2''@;'; put 'put ''NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEsMzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQsMzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAs''@;'; put 'put ''MzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2''@;'; put 'put ''ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYsMzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEsMzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcs''@;'; put 'put ''MzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3''@;'; put 'put ''NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYsMjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYsMzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQs''@;'; put 'put ''MzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMwMzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4''@;'; put 'put ''NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDksMzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIsMzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgs''@;'; put 'put ''MzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5''@;'; put 'put ''MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5MjcsMzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMsMzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEs''@;'; put 'put ''MzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5''@;'; put 'put ''NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgsMzU5OTksMzZlMywzNjAwMSwzNjAwMiwzNjAwMywzNjAwNCwzNjAwNSwzNjAwNiwzNjAwNywzNjAwOCwzNjAwOSwz''@;'; put 'put ''NjAxMCwzNjAxMSwzNjAxMiwzNjAxMywyMDEwOSwxOTk4MCwyMDgwMCwxOTk4NCwyNDMxOSwyMTMxNywxOTk4OSwyMDEyMCwxOTk5OCwzOTczMCwyMzQwNCwyMjEyMSwyMDAwOCwzMTE2MiwyMDAzMSwyMTI2OSwyMDAzOSwyMjgyOSwyOTI0MywyMTM1OCwyNzY2NCwyMjIzOSwzMjk5NiwzOTMx''@;'; put 'put ''OSwyNzYwMywzMDU5MCw0MDcyNywyMDAyMiwyMDEyNyw0MDcyMCwyMDA2MCwyMDA3MywyMDExNSwzMzQxNiwyMzM4NywyMTg2OCwyMjAzMSwyMDE2NCwyMTM4OSwyMTQwNSwyMTQxMSwyMTQxMywyMTQyMiwzODc1NywzNjE4OSwyMTI3NCwyMTQ5MywyMTI4NiwyMTI5NCwyMTMxMCwzNjE4OCwy''@;'; put 'put ''MTM1MCwyMTM0NywyMDk5NCwyMWUzLDIxMDA2LDIxMDM3LDIxMDQzLDIxMDU1LDIxMDU2LDIxMDY4LDIxMDg2LDIxMDg5LDIxMDg0LDMzOTY3LDIxMTE3LDIxMTIyLDIxMTIxLDIxMTM2LDIxMTM5LDIwODY2LDMyNTk2LDIwMTU1LDIwMTYzLDIwMTY5LDIwMTYyLDIwMjAwLDIwMTkzLDIwMjAz''@;'; put 'put ''LDIwMTkwLDIwMjUxLDIwMjExLDIwMjU4LDIwMzI0LDIwMjEzLDIwMjYxLDIwMjYzLDIwMjMzLDIwMjY3LDIwMzE4LDIwMzI3LDI1OTEyLDIwMzE0LDIwMzE3LDM2MDE0LDM2MDE1LDM2MDE2LDM2MDE3LDM2MDE4LDM2MDE5LDM2MDIwLDM2MDIxLDM2MDIyLDM2MDIzLDM2MDI0LDM2MDI1LDM2''@;'; put 'put ''MDI2LDM2MDI3LDM2MDI4LDM2MDI5LDM2MDMwLDM2MDMxLDM2MDMyLDM2MDMzLDM2MDM0LDM2MDM1LDM2MDM2LDM2MDM3LDM2MDM4LDM2MDM5LDM2MDQwLDM2MDQxLDM2MDQyLDM2MDQzLDM2MDQ0LDM2MDQ1LDM2MDQ2LDM2MDQ3LDM2MDQ4LDM2MDQ5LDM2MDUwLDM2MDUxLDM2MDUyLDM2MDUz''@;'; put 'put ''LDM2MDU0LDM2MDU1LDM2MDU2LDM2MDU3LDM2MDU4LDM2MDU5LDM2MDYwLDM2MDYxLDM2MDYyLDM2MDYzLDM2MDY0LDM2MDY1LDM2MDY2LDM2MDY3LDM2MDY4LDM2MDY5LDM2MDcwLDM2MDcxLDM2MDcyLDM2MDczLDM2MDc0LDM2MDc1LDM2MDc2LDM2MDc3LDM2MDc4LDM2MDc5LDM2MDgwLDM2''@;'; put 'put ''MDgxLDM2MDgyLDM2MDgzLDM2MDg0LDM2MDg1LDM2MDg2LDM2MDg3LDM2MDg4LDM2MDg5LDM2MDkwLDM2MDkxLDM2MDkyLDM2MDkzLDM2MDk0LDM2MDk1LDM2MDk2LDM2MDk3LDM2MDk4LDM2MDk5LDM2MTAwLDM2MTAxLDM2MTAyLDM2MTAzLDM2MTA0LDM2MTA1LDM2MTA2LDM2MTA3LDM2MTA4''@;'; put 'put ''LDM2MTA5LDIwMzE5LDIwMzExLDIwMjc0LDIwMjg1LDIwMzQyLDIwMzQwLDIwMzY5LDIwMzYxLDIwMzU1LDIwMzY3LDIwMzUwLDIwMzQ3LDIwMzk0LDIwMzQ4LDIwMzk2LDIwMzcyLDIwNDU0LDIwNDU2LDIwNDU4LDIwNDIxLDIwNDQyLDIwNDUxLDIwNDQ0LDIwNDMzLDIwNDQ3LDIwNDcyLDIw''@;'; put 'put ''NTIxLDIwNTU2LDIwNDY3LDIwNTI0LDIwNDk1LDIwNTI2LDIwNTI1LDIwNDc4LDIwNTA4LDIwNDkyLDIwNTE3LDIwNTIwLDIwNjA2LDIwNTQ3LDIwNTY1LDIwNTUyLDIwNTU4LDIwNTg4LDIwNjAzLDIwNjQ1LDIwNjQ3LDIwNjQ5LDIwNjY2LDIwNjk0LDIwNzQyLDIwNzE3LDIwNzE2LDIwNzEw''@;'; put 'put ''LDIwNzE4LDIwNzQzLDIwNzQ3LDIwMTg5LDI3NzA5LDIwMzEyLDIwMzI1LDIwNDMwLDQwODY0LDI3NzE4LDMxODYwLDIwODQ2LDI0MDYxLDQwNjQ5LDM5MzIwLDIwODY1LDIyODA0LDIxMjQxLDIxMjYxLDM1MzM1LDIxMjY0LDIwOTcxLDIyODA5LDIwODIxLDIwMTI4LDIwODIyLDIwMTQ3LDM0''@;'; put 'put ''OTI2LDM0OTgwLDIwMTQ5LDMzMDQ0LDM1MDI2LDMxMTA0LDIzMzQ4LDM0ODE5LDMyNjk2LDIwOTA3LDIwOTEzLDIwOTI1LDIwOTI0LDM2MTEwLDM2MTExLDM2MTEyLDM2MTEzLDM2MTE0LDM2MTE1LDM2MTE2LDM2MTE3LDM2MTE4LDM2MTE5LDM2MTIwLDM2MTIxLDM2MTIyLDM2MTIzLDM2MTI0''@;'; put 'put ''LDM2MTI4LDM2MTc3LDM2MTc4LDM2MTgzLDM2MTkxLDM2MTk3LDM2MjAwLDM2MjAxLDM2MjAyLDM2MjA0LDM2MjA2LDM2MjA3LDM2MjA5LDM2MjEwLDM2MjE2LDM2MjE3LDM2MjE4LDM2MjE5LDM2MjIwLDM2MjIxLDM2MjIyLDM2MjIzLDM2MjI0LDM2MjI2LDM2MjI3LDM2MjMwLDM2MjMxLDM2''@;'; put 'put ''MjMyLDM2MjMzLDM2MjM2LDM2MjM3LDM2MjM4LDM2MjM5LDM2MjQwLDM2MjQyLDM2MjQzLDM2MjQ1LDM2MjQ2LDM2MjQ3LDM2MjQ4LDM2MjQ5LDM2MjUwLDM2MjUxLDM2MjUyLDM2MjUzLDM2MjU0LDM2MjU2LDM2MjU3LDM2MjU4LDM2MjYwLDM2MjYxLDM2MjYyLDM2MjYzLDM2MjY0LDM2MjY1''@;'; put 'put ''LDM2MjY2LDM2MjY3LDM2MjY4LDM2MjY5LDM2MjcwLDM2MjcxLDM2MjcyLDM2Mjc0LDM2Mjc4LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg1LDM2Mjg4LDM2Mjg5LDM2MjkwLDM2MjkzLDM2Mjk1LDM2Mjk2LDM2Mjk3LDM2Mjk4LDM2MzAxLDM2MzA0LDM2MzA2LDM2MzA3LDM2MzA4LDIwOTM1LDIw''@;'; put 'put ''ODg2LDIwODk4LDIwOTAxLDM1NzQ0LDM1NzUwLDM1NzUxLDM1NzU0LDM1NzY0LDM1NzY1LDM1NzY3LDM1Nzc4LDM1Nzc5LDM1Nzg3LDM1NzkxLDM1NzkwLDM1Nzk0LDM1Nzk1LDM1Nzk2LDM1Nzk4LDM1ODAwLDM1ODAxLDM1ODA0LDM1ODA3LDM1ODA4LDM1ODEyLDM1ODE2LDM1ODE3LDM1ODIy''@;'; put 'put ''LDM1ODI0LDM1ODI3LDM1ODMwLDM1ODMzLDM1ODM2LDM1ODM5LDM1ODQwLDM1ODQyLDM1ODQ0LDM1ODQ3LDM1ODUyLDM1ODU1LDM1ODU3LDM1ODU4LDM1ODYwLDM1ODYxLDM1ODYyLDM1ODY1LDM1ODY3LDM1ODY0LDM1ODY5LDM1ODcxLDM1ODcyLDM1ODczLDM1ODc3LDM1ODc5LDM1ODgyLDM1''@;'; put 'put ''ODgzLDM1ODg2LDM1ODg3LDM1ODkwLDM1ODkxLDM1ODkzLDM1ODk0LDIxMzUzLDIxMzcwLDM4NDI5LDM4NDM0LDM4NDMzLDM4NDQ5LDM4NDQyLDM4NDYxLDM4NDYwLDM4NDY2LDM4NDczLDM4NDg0LDM4NDk1LDM4NTAzLDM4NTA4LDM4NTE0LDM4NTE2LDM4NTM2LDM4NTQxLDM4NTUxLDM4NTc2''@;'; put 'put ''LDM3MDE1LDM3MDE5LDM3MDIxLDM3MDE3LDM3MDM2LDM3MDI1LDM3MDQ0LDM3MDQzLDM3MDQ2LDM3MDUwLDM2MzA5LDM2MzEyLDM2MzEzLDM2MzE2LDM2MzIwLDM2MzIxLDM2MzIyLDM2MzI1LDM2MzI2LDM2MzI3LDM2MzI5LDM2MzMzLDM2MzM0LDM2MzM2LDM2MzM3LDM2MzM4LDM2MzQwLDM2''@;'; put 'put ''MzQyLDM2MzQ4LDM2MzUwLDM2MzUxLDM2MzUyLDM2MzUzLDM2MzU0LDM2MzU1LDM2MzU2LDM2MzU4LDM2MzU5LDM2MzYwLDM2MzYzLDM2MzY1LDM2MzY2LDM2MzY4LDM2MzY5LDM2MzcwLDM2MzcxLDM2MzczLDM2Mzc0LDM2Mzc1LDM2Mzc2LDM2Mzc3LDM2Mzc4LDM2Mzc5LDM2MzgwLDM2Mzg0''@;'; put 'put ''LDM2Mzg1LDM2Mzg4LDM2Mzg5LDM2MzkwLDM2MzkxLDM2MzkyLDM2Mzk1LDM2Mzk3LDM2NDAwLDM2NDAyLDM2NDAzLDM2NDA0LDM2NDA2LDM2NDA3LDM2NDA4LDM2NDExLDM2NDEyLDM2NDE0LDM2NDE1LDM2NDE5LDM2NDIxLDM2NDIyLDM2NDI4LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDMyLDM2''@;'; put 'put ''NDM1LDM2NDM2LDM2NDM3LDM2NDM4LDM2NDM5LDM2NDQwLDM2NDQyLDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ3LDM2NDQ4LDM2NDQ5LDM2NDUwLDM2NDUxLDM2NDUyLDM2NDUzLDM2NDU1LDM2NDU2LDM2NDU4LDM2NDU5LDM2NDYyLDM2NDY1LDM3MDQ4LDM3MDQwLDM3MDcxLDM3MDYx''@;'; put 'put ''LDM3MDU0LDM3MDcyLDM3MDYwLDM3MDYzLDM3MDc1LDM3MDk0LDM3MDkwLDM3MDg0LDM3MDc5LDM3MDgzLDM3MDk5LDM3MTAzLDM3MTE4LDM3MTI0LDM3MTU0LDM3MTUwLDM3MTU1LDM3MTY5LDM3MTY3LDM3MTc3LDM3MTg3LDM3MTkwLDIxMDA1LDIyODUwLDIxMTU0LDIxMTY0LDIxMTY1LDIx''@;'; put 'put ''MTgyLDIxNzU5LDIxMjAwLDIxMjA2LDIxMjMyLDIxNDcxLDI5MTY2LDMwNjY5LDI0MzA4LDIwOTgxLDIwOTg4LDM5NzI3LDIxNDMwLDI0MzIxLDMwMDQyLDI0MDQ3LDIyMzQ4LDIyNDQxLDIyNDMzLDIyNjU0LDIyNzE2LDIyNzI1LDIyNzM3LDIyMzEzLDIyMzE2LDIyMzE0LDIyMzIzLDIyMzI5''@;'; put 'put ''LDIyMzE4LDIyMzE5LDIyMzY0LDIyMzMxLDIyMzM4LDIyMzc3LDIyNDA1LDIyMzc5LDIyNDA2LDIyMzk2LDIyMzk1LDIyMzc2LDIyMzgxLDIyMzkwLDIyMzg3LDIyNDQ1LDIyNDM2LDIyNDEyLDIyNDUwLDIyNDc5LDIyNDM5LDIyNDUyLDIyNDE5LDIyNDMyLDIyNDg1LDIyNDg4LDIyNDkwLDIy''@;'; put 'put ''NDg5LDIyNDgyLDIyNDU2LDIyNTE2LDIyNTExLDIyNTIwLDIyNTAwLDIyNDkzLDM2NDY3LDM2NDY5LDM2NDcxLDM2NDcyLDM2NDczLDM2NDc0LDM2NDc1LDM2NDc3LDM2NDc4LDM2NDgwLDM2NDgyLDM2NDgzLDM2NDg0LDM2NDg2LDM2NDg4LDM2NDg5LDM2NDkwLDM2NDkxLDM2NDkyLDM2NDkz''@;'; put 'put ''LDM2NDk0LDM2NDk3LDM2NDk4LDM2NDk5LDM2NTAxLDM2NTAyLDM2NTAzLDM2NTA0LDM2NTA1LDM2NTA2LDM2NTA3LDM2NTA5LDM2NTExLDM2NTEyLDM2NTEzLDM2NTE0LDM2NTE1LDM2NTE2LDM2NTE3LDM2NTE4LDM2NTE5LDM2NTIwLDM2NTIxLDM2NTIyLDM2NTI1LDM2NTI2LDM2NTI4LDM2''@;'; put 'put ''NTI5LDM2NTMxLDM2NTMyLDM2NTMzLDM2NTM0LDM2NTM1LDM2NTM2LDM2NTM3LDM2NTM5LDM2NTQwLDM2NTQxLDM2NTQyLDM2NTQzLDM2NTQ0LDM2NTQ1LDM2NTQ2LDM2NTQ3LDM2NTQ4LDM2NTQ5LDM2NTUwLDM2NTUxLDM2NTUyLDM2NTUzLDM2NTU0LDM2NTU1LDM2NTU2LDM2NTU3LDM2NTU5''@;'; put 'put ''LDM2NTYwLDM2NTYxLDM2NTYyLDM2NTYzLDM2NTY0LDM2NTY1LDM2NTY2LDM2NTY3LDM2NTY4LDM2NTY5LDM2NTcwLDM2NTcxLDM2NTcyLDM2NTczLDM2NTc0LDM2NTc1LDM2NTc2LDM2NTc3LDM2NTc4LDM2NTc5LDM2NTgwLDIyNTM5LDIyNTQxLDIyNTI1LDIyNTA5LDIyNTI4LDIyNTU4LDIy''@;'; put 'put ''NTUzLDIyNTk2LDIyNTYwLDIyNjI5LDIyNjM2LDIyNjU3LDIyNjY1LDIyNjgyLDIyNjU2LDM5MzM2LDQwNzI5LDI1MDg3LDMzNDAxLDMzNDA1LDMzNDA3LDMzNDIzLDMzNDE4LDMzNDQ4LDMzNDEyLDMzNDIyLDMzNDI1LDMzNDMxLDMzNDMzLDMzNDUxLDMzNDY0LDMzNDcwLDMzNDU2LDMzNDgw''@;'; put 'put ''LDMzNDgyLDMzNTA3LDMzNDMyLDMzNDYzLDMzNDU0LDMzNDgzLDMzNDg0LDMzNDczLDMzNDQ5LDMzNDYwLDMzNDQxLDMzNDUwLDMzNDM5LDMzNDc2LDMzNDg2LDMzNDQ0LDMzNTA1LDMzNTQ1LDMzNTI3LDMzNTA4LDMzNTUxLDMzNTQzLDMzNTAwLDMzNTI0LDMzNDkwLDMzNDk2LDMzNTQ4LDMz''@;'; put 'put ''NTMxLDMzNDkxLDMzNTUzLDMzNTYyLDMzNTQyLDMzNTU2LDMzNTU3LDMzNTA0LDMzNDkzLDMzNTY0LDMzNjE3LDMzNjI3LDMzNjI4LDMzNTQ0LDMzNjgyLDMzNTk2LDMzNTg4LDMzNTg1LDMzNjkxLDMzNjMwLDMzNTgzLDMzNjE1LDMzNjA3LDMzNjAzLDMzNjMxLDMzNjAwLDMzNTU5LDMzNjMy''@;'; put 'put ''LDMzNTgxLDMzNTk0LDMzNTg3LDMzNjM4LDMzNjM3LDM2NTgxLDM2NTgyLDM2NTgzLDM2NTg0LDM2NTg1LDM2NTg2LDM2NTg3LDM2NTg4LDM2NTg5LDM2NTkwLDM2NTkxLDM2NTkyLDM2NTkzLDM2NTk0LDM2NTk1LDM2NTk2LDM2NTk3LDM2NTk4LDM2NTk5LDM2NjAwLDM2NjAxLDM2NjAyLDM2''@;'; put 'put ''NjAzLDM2NjA0LDM2NjA1LDM2NjA2LDM2NjA3LDM2NjA4LDM2NjA5LDM2NjEwLDM2NjExLDM2NjEyLDM2NjEzLDM2NjE0LDM2NjE1LDM2NjE2LDM2NjE3LDM2NjE4LDM2NjE5LDM2NjIwLDM2NjIxLDM2NjIyLDM2NjIzLDM2NjI0LDM2NjI1LDM2NjI2LDM2NjI3LDM2NjI4LDM2NjI5LDM2NjMw''@;'; put 'put ''LDM2NjMxLDM2NjMyLDM2NjMzLDM2NjM0LDM2NjM1LDM2NjM2LDM2NjM3LDM2NjM4LDM2NjM5LDM2NjQwLDM2NjQxLDM2NjQyLDM2NjQzLDM2NjQ0LDM2NjQ1LDM2NjQ2LDM2NjQ3LDM2NjQ4LDM2NjQ5LDM2NjUwLDM2NjUxLDM2NjUyLDM2NjUzLDM2NjU0LDM2NjU1LDM2NjU2LDM2NjU3LDM2''@;'; put 'put ''NjU4LDM2NjU5LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY0LDM2NjY1LDM2NjY2LDM2NjY3LDM2NjY4LDM2NjY5LDM2NjcwLDM2NjcxLDM2NjcyLDM2NjczLDM2Njc0LDM2Njc1LDM2Njc2LDMzNjQwLDMzNTYzLDMzNjQxLDMzNjQ0LDMzNjQyLDMzNjQ1LDMzNjQ2LDMzNzEyLDMzNjU2''@;'; put 'put ''LDMzNzE1LDMzNzE2LDMzNjk2LDMzNzA2LDMzNjgzLDMzNjkyLDMzNjY5LDMzNjYwLDMzNzE4LDMzNzA1LDMzNjYxLDMzNzIwLDMzNjU5LDMzNjg4LDMzNjk0LDMzNzA0LDMzNzIyLDMzNzI0LDMzNzI5LDMzNzkzLDMzNzY1LDMzNzUyLDIyNTM1LDMzODE2LDMzODAzLDMzNzU3LDMzNzg5LDMz''@;'; put 'put ''NzUwLDMzODIwLDMzODQ4LDMzODA5LDMzNzk4LDMzNzQ4LDMzNzU5LDMzODA3LDMzNzk1LDMzNzg0LDMzNzg1LDMzNzcwLDMzNzMzLDMzNzI4LDMzODMwLDMzNzc2LDMzNzYxLDMzODg0LDMzODczLDMzODgyLDMzODgxLDMzOTA3LDMzOTI3LDMzOTI4LDMzOTE0LDMzOTI5LDMzOTEyLDMzODUy''@;'; put 'put ''LDMzODYyLDMzODk3LDMzOTEwLDMzOTMyLDMzOTM0LDMzODQxLDMzOTAxLDMzOTg1LDMzOTk3LDM0ZTMsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQwMTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQwMjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQx''@;'; put 'put ''MDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUsMzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEs''@;'; put 'put ''MzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3''@;'; put 'put ''ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUsMzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIsMzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDks''@;'; put 'put ''MzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQxMzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQx''@;'; put 'put ''MTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgsMzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYsMzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMs''@;'; put 'put ''MjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUzNzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0''@;'; put 'put ''NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2NjksMjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIsMjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAs''@;'; put 'put ''MzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5''@;'; put 'put ''MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYsMzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIsMzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIs''@;'; put 'put ''MzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcwMDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcwMTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcw''@;'; put 'put ''MjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQsMjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUsMjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEs''@;'; put 'put ''MjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2''@;'; put 'put ''MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgsMjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgsMjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2Njgs''@;'; put 'put ''MjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcw''@;'; put 'put ''NjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEsMzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAsMzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDks''@;'; put 'put ''MzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcxMzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcxMzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcx''@;'; put 'put ''NDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIsMzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgsMzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUs''@;'; put 'put ''MzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4''@;'; put 'put ''ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIsMjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODksMjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUs''@;'; put 'put ''MjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIwOTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIxMDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIx''@;'; put 'put ''NDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzksMjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMsMjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMs''@;'; put 'put ''MzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcyNDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcyNTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcy''@;'; put 'put ''NjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYsMzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMs''@;'; put 'put ''MzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzczMjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzczMzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzcz''@;'; put 'put ''NDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQsMjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQsMjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQs''@;'; put 'put ''MjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5''@;'; put 'put ''MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUsMjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYsMjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcs''@;'; put 'put ''MjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzczNTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzcz''@;'; put 'put ''NTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMsMzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQs''@;'; put 'put ''MzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0''@;'; put 'put ''MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0MjgsMzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0Mzks''@;'; put 'put ''Mzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMz''@;'; put 'put ''MDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAsMzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMsMzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMs''@;'; put 'put ''MjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1''@;'; put 'put ''NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgsMjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDksMzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUs''@;'; put 'put ''Mzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0''@;'; put 'put ''ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUsMzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEs''@;'; put 'put ''Mzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1''@;'; put 'put ''NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMsMjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYsMjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIs''@;'; put 'put ''MjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgzODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0''@;'; put 'put ''MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEsMjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMsMjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAs''@;'; put 'put ''Mjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1''@;'; put 'put ''NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUs''@;'; put 'put ''Mzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2''@;'; put 'put ''MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2MjksMzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQsMzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAs''@;'; put 'put ''Mzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgwNjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjhl''@;'; put 'put ''MywyODAyOCwyODAwMywyODE4NiwyODEwMywyODEwMSwyODEyNiwyODE3NCwyODA5NSwyODEyOCwyODE3NywyODEzNCwyODEyNSwyODEyMSwyODE4MiwyODA3NSwyODE3MiwyODA3OCwyODIwMywyODI3MCwyODIzOCwyODI2NywyODMzOCwyODI1NSwyODI5NCwyODI0MywyODI0NCwyODIxMCwy''@;'; put 'put ''ODE5NywyODIyOCwyODM4MywyODMzNywyODMxMiwyODM4NCwyODQ2MSwyODM4NiwyODMyNSwyODMyNywyODM0OSwyODM0NywyODM0MywyODM3NSwyODM0MCwyODM2NywyODMwMywyODM1NCwyODMxOSwyODUxNCwyODQ4NiwyODQ4NywyODQ1MiwyODQzNywyODQwOSwyODQ2MywyODQ3MCwyODQ5''@;'; put 'put ''MSwyODUzMiwyODQ1OCwyODQyNSwyODQ1NywyODU1MywyODU1NywyODU1NiwyODUzNiwyODUzMCwyODU0MCwyODUzOCwyODYyNSwzNzY0MiwzNzY0MywzNzY0NCwzNzY0NSwzNzY0NiwzNzY0NywzNzY0OCwzNzY0OSwzNzY1MCwzNzY1MSwzNzY1MiwzNzY1MywzNzY1NCwzNzY1NSwzNzY1Niwz''@;'; put 'put ''NzY1NywzNzY1OCwzNzY1OSwzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NCwzNzY2NSwzNzY2NiwzNzY2NywzNzY2OCwzNzY2OSwzNzY3MCwzNzY3MSwzNzY3MiwzNzY3MywzNzY3NCwzNzY3NSwzNzY3NiwzNzY3NywzNzY3OCwzNzY3OSwzNzY4MCwzNzY4MSwzNzY4MiwzNzY4MywzNzY4''@;'; put 'put ''NCwzNzY4NSwzNzY4NiwzNzY4NywzNzY4OCwzNzY4OSwzNzY5MCwzNzY5MSwzNzY5MiwzNzY5MywzNzY5NSwzNzY5NiwzNzY5NywzNzY5OCwzNzY5OSwzNzcwMCwzNzcwMSwzNzcwMiwzNzcwMywzNzcwNCwzNzcwNSwzNzcwNiwzNzcwNywzNzcwOCwzNzcwOSwzNzcxMCwzNzcxMSwzNzcxMiwz''@;'; put 'put ''NzcxMywzNzcxNCwzNzcxNSwzNzcxNiwzNzcxNywzNzcxOCwzNzcxOSwzNzcyMCwzNzcyMSwzNzcyMiwzNzcyMywzNzcyNCwzNzcyNSwzNzcyNiwzNzcyNywzNzcyOCwzNzcyOSwzNzczMCwzNzczMSwzNzczMiwzNzczMywzNzczNCwzNzczNSwzNzczNiwzNzczNywzNzczOSwyODYxNywyODU4''@;'; put 'put ''MywyODYwMSwyODU5OCwyODYxMCwyODY0MSwyODY1NCwyODYzOCwyODY0MCwyODY1NSwyODY5OCwyODcwNywyODY5OSwyODcyOSwyODcyNSwyODc1MSwyODc2NiwyMzQyNCwyMzQyOCwyMzQ0NSwyMzQ0MywyMzQ2MSwyMzQ4MCwyOTk5OSwzOTU4MiwyNTY1MiwyMzUyNCwyMzUzNCwzNTEyMCwy''@;'; put 'put ''MzUzNiwzNjQyMywzNTU5MSwzNjc5MCwzNjgxOSwzNjgyMSwzNjgzNywzNjg0NiwzNjgzNiwzNjg0MSwzNjgzOCwzNjg1MSwzNjg0MCwzNjg2OSwzNjg2OCwzNjg3NSwzNjkwMiwzNjg4MSwzNjg3NywzNjg4NiwzNjg5NywzNjkxNywzNjkxOCwzNjkwOSwzNjkxMSwzNjkzMiwzNjk0NSwzNjk0''@;'; put 'put ''NiwzNjk0NCwzNjk2OCwzNjk1MiwzNjk2MiwzNjk1NSwyNjI5NywzNjk4MCwzNjk4OSwzNjk5NCwzN2UzLDM2OTk1LDM3MDAzLDI0NDAwLDI0NDA3LDI0NDA2LDI0NDA4LDIzNjExLDIxNjc1LDIzNjMyLDIzNjQxLDIzNDA5LDIzNjUxLDIzNjU0LDMyNzAwLDI0MzYyLDI0MzYxLDI0MzY1LDMz''@;'; put 'put ''Mzk2LDI0MzgwLDM5NzM5LDIzNjYyLDIyOTEzLDIyOTE1LDIyOTI1LDIyOTUzLDIyOTU0LDIyOTQ3LDM3NzQwLDM3NzQxLDM3NzQyLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ2LDM3NzQ3LDM3NzQ4LDM3NzQ5LDM3NzUwLDM3NzUxLDM3NzUyLDM3NzUzLDM3NzU0LDM3NzU1LDM3NzU2LDM3NzU3''@;'; put 'put ''LDM3NzU4LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzYzLDM3NzY0LDM3NzY1LDM3NzY2LDM3NzY3LDM3NzY4LDM3NzY5LDM3NzcwLDM3NzcxLDM3NzcyLDM3NzczLDM3Nzc0LDM3Nzc2LDM3Nzc3LDM3Nzc4LDM3Nzc5LDM3NzgwLDM3NzgxLDM3NzgyLDM3NzgzLDM3Nzg0LDM3Nzg1LDM3''@;'; put 'put ''Nzg2LDM3Nzg3LDM3Nzg4LDM3Nzg5LDM3NzkwLDM3NzkxLDM3NzkyLDM3NzkzLDM3Nzk0LDM3Nzk1LDM3Nzk2LDM3Nzk3LDM3Nzk4LDM3Nzk5LDM3ODAwLDM3ODAxLDM3ODAyLDM3ODAzLDM3ODA0LDM3ODA1LDM3ODA2LDM3ODA3LDM3ODA4LDM3ODA5LDM3ODEwLDM3ODExLDM3ODEyLDM3ODEz''@;'; put 'put ''LDM3ODE0LDM3ODE1LDM3ODE2LDM3ODE3LDM3ODE4LDM3ODE5LDM3ODIwLDM3ODIxLDM3ODIyLDM3ODIzLDM3ODI0LDM3ODI1LDM3ODI2LDM3ODI3LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMyLDM3ODMzLDM3ODM1LDM3ODM2LDM3ODM3LDIyOTM1LDIyOTg2LDIyOTU1LDIyOTQyLDIy''@;'; put 'put ''OTQ4LDIyOTk0LDIyOTYyLDIyOTU5LDIyOTk5LDIyOTc0LDIzMDQ1LDIzMDQ2LDIzMDA1LDIzMDQ4LDIzMDExLDIzZTMsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIsMjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMsMjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQs''@;'; put 'put ''MjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMyNjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMzNTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0''@;'; put 'put ''MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAsMzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAsMzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODks''@;'; put 'put ''Mzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4''@;'; put 'put ''NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUsMzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAsMzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYs''@;'; put 'put ''Mzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5''@;'; put 'put ''MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAsMzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0MjksMzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcs''@;'; put 'put ''MzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1''@;'; put 'put ''MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYsMzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIsMzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQs''@;'; put 'put ''MzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkwMzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3''@;'; put 'put ''MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYsMzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIsMzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgs''@;'; put 'put ''Mzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5''@;'; put 'put ''ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzhlMywzODAwMSwzODAwMiwzODAwMywzODAwNCwzODAwNSwzODAwNiwzODAwNywzODAwOCwzODAwOSwzODAxMCwzODAxMSwzODAxMiwzODAxMywzODAxNCwz''@;'; put 'put ''ODAxNSwzODAxNiwzODAxNywzODAxOCwzODAxOSwzODAyMCwzODAzMywzODAzOCwzODA0MCwzODA4NywzODA5NSwzODA5OSwzODEwMCwzODEwNiwzODExOCwzODEzOSwzODE3MiwzODE3NiwyOTcyMywyOTcyMiwyOTc2MSwyOTc4OCwyOTc4MywyOTc4MSwyOTc4NSwyOTgxNSwyOTgwNSwyOTgy''@;'; put 'put ''MiwyOTg1MiwyOTgzOCwyOTgyNCwyOTgyNSwyOTgzMSwyOTgzNSwyOTg1NCwyOTg2NCwyOTg2NSwyOTg0MCwyOTg2MywyOTkwNiwyOTg4MiwzODg5MCwzODg5MSwzODg5MiwyNjQ0NCwyNjQ1MSwyNjQ2MiwyNjQ0MCwyNjQ3MywyNjUzMywyNjUwMywyNjQ3NCwyNjQ4MywyNjUyMCwyNjUzNSwy''@;'; put 'put ''NjQ4NSwyNjUzNiwyNjUyNiwyNjU0MSwyNjUwNywyNjQ4NywyNjQ5MiwyNjYwOCwyNjYzMywyNjU4NCwyNjYzNCwyNjYwMSwyNjU0NCwyNjYzNiwyNjU4NSwyNjU0OSwyNjU4NiwyNjU0NywyNjU4OSwyNjYyNCwyNjU2MywyNjU1MiwyNjU5NCwyNjYzOCwyNjU2MSwyNjYyMSwyNjY3NCwyNjY3''@;'; put 'put ''NSwyNjcyMCwyNjcyMSwyNjcwMiwyNjcyMiwyNjY5MiwyNjcyNCwyNjc1NSwyNjY1MywyNjcwOSwyNjcyNiwyNjY4OSwyNjcyNywyNjY4OCwyNjY4NiwyNjY5OCwyNjY5NywyNjY2NSwyNjgwNSwyNjc2NywyNjc0MCwyNjc0MywyNjc3MSwyNjczMSwyNjgxOCwyNjk5MCwyNjg3NiwyNjkxMSwy''@;'; put 'put ''NjkxMiwyNjg3MywzODE4MywzODE5NSwzODIwNSwzODIxMSwzODIxNiwzODIxOSwzODIyOSwzODIzNCwzODI0MCwzODI1NCwzODI2MCwzODI2MSwzODI2MywzODI2NCwzODI2NSwzODI2NiwzODI2NywzODI2OCwzODI2OSwzODI3MCwzODI3MiwzODI3MywzODI3NCwzODI3NSwzODI3NiwzODI3''@;'; put 'put ''NywzODI3OCwzODI3OSwzODI4MCwzODI4MSwzODI4MiwzODI4MywzODI4NCwzODI4NSwzODI4NiwzODI4NywzODI4OCwzODI4OSwzODI5MCwzODI5MSwzODI5MiwzODI5MywzODI5NCwzODI5NSwzODI5NiwzODI5NywzODI5OCwzODI5OSwzODMwMCwzODMwMSwzODMwMiwzODMwMywzODMwNCwz''@;'; put 'put ''ODMwNSwzODMwNiwzODMwNywzODMwOCwzODMwOSwzODMxMCwzODMxMSwzODMxMiwzODMxMywzODMxNCwzODMxNSwzODMxNiwzODMxNywzODMxOCwzODMxOSwzODMyMCwzODMyMSwzODMyMiwzODMyMywzODMyNCwzODMyNSwzODMyNiwzODMyNywzODMyOCwzODMyOSwzODMzMCwzODMzMSwzODMz''@;'; put 'put ''MiwzODMzMywzODMzNCwzODMzNSwzODMzNiwzODMzNywzODMzOCwzODMzOSwzODM0MCwzODM0MSwzODM0MiwzODM0MywzODM0NCwzODM0NSwzODM0NiwzODM0NywyNjkxNiwyNjg2NCwyNjg5MSwyNjg4MSwyNjk2NywyNjg1MSwyNjg5NiwyNjk5MywyNjkzNywyNjk3NiwyNjk0NiwyNjk3Mywy''@;'; put 'put ''NzAxMiwyNjk4NywyNzAwOCwyNzAzMiwyN2UzLDI2OTMyLDI3MDg0LDI3MDE1LDI3MDE2LDI3MDg2LDI3MDE3LDI2OTgyLDI2OTc5LDI3MDAxLDI3MDM1LDI3MDQ3LDI3MDY3LDI3MDUxLDI3MDUzLDI3MDkyLDI3MDU3LDI3MDczLDI3MDgyLDI3MTAzLDI3MDI5LDI3MTA0LDI3MDIxLDI3MTM1''@;'; put 'put ''LDI3MTgzLDI3MTE3LDI3MTU5LDI3MTYwLDI3MjM3LDI3MTIyLDI3MjA0LDI3MTk4LDI3Mjk2LDI3MjE2LDI3MjI3LDI3MTg5LDI3Mjc4LDI3MjU3LDI3MTk3LDI3MTc2LDI3MjI0LDI3MjYwLDI3MjgxLDI3MjgwLDI3MzA1LDI3Mjg3LDI3MzA3LDI5NDk1LDI5NTIyLDI3NTIxLDI3NTIyLDI3''@;'; put 'put ''NTI3LDI3NTI0LDI3NTM4LDI3NTM5LDI3NTMzLDI3NTQ2LDI3NTQ3LDI3NTUzLDI3NTYyLDM2NzE1LDM2NzE3LDM2NzIxLDM2NzIyLDM2NzIzLDM2NzI1LDM2NzI2LDM2NzI4LDM2NzI3LDM2NzI5LDM2NzMwLDM2NzMyLDM2NzM0LDM2NzM3LDM2NzM4LDM2NzQwLDM2NzQzLDM2NzQ3LDM4MzQ4''@;'; put 'put ''LDM4MzQ5LDM4MzUwLDM4MzUxLDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzU2LDM4MzU3LDM4MzU4LDM4MzU5LDM4MzYwLDM4MzYxLDM4MzYyLDM4MzYzLDM4MzY0LDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzY5LDM4MzcwLDM4MzcxLDM4MzcyLDM4MzczLDM4Mzc0LDM4Mzc1LDM4''@;'; put 'put ''MzgwLDM4Mzk5LDM4NDA3LDM4NDE5LDM4NDI0LDM4NDI3LDM4NDMwLDM4NDMyLDM4NDM1LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDM5LDM4NDQwLDM4NDQxLDM4NDQzLDM4NDQ0LDM4NDQ1LDM4NDQ3LDM4NDQ4LDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYyLDM4NDY1LDM4NDY3LDM4NDc0''@;'; put 'put ''LDM4NDc4LDM4NDc5LDM4NDgxLDM4NDgyLDM4NDgzLDM4NDg2LDM4NDg3LDM4NDg4LDM4NDg5LDM4NDkwLDM4NDkyLDM4NDkzLDM4NDk0LDM4NDk2LDM4NDk5LDM4NTAxLDM4NTAyLDM4NTA3LDM4NTA5LDM4NTEwLDM4NTExLDM4NTEyLDM4NTEzLDM4NTE1LDM4NTIwLDM4NTIxLDM4NTIyLDM4''@;'; put 'put ''NTIzLDM4NTI0LDM4NTI1LDM4NTI2LDM4NTI3LDM4NTI4LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM1LDM4NTM3LDM4NTM4LDM2NzQ5LDM2NzUwLDM2NzUxLDM2NzYwLDM2NzYyLDM2NTU4LDI1MDk5LDI1MTExLDI1MTE1LDI1MTE5LDI1MTIyLDI1MTIxLDI1MTI1LDI1MTI0LDI1MTMy''@;'; put 'put ''LDMzMjU1LDI5OTM1LDI5OTQwLDI5OTUxLDI5OTY3LDI5OTY5LDI5OTcxLDI1OTA4LDI2MDk0LDI2MDk1LDI2MDk2LDI2MTIyLDI2MTM3LDI2NDgyLDI2MTE1LDI2MTMzLDI2MTEyLDI4ODA1LDI2MzU5LDI2MTQxLDI2MTY0LDI2MTYxLDI2MTY2LDI2MTY1LDMyNzc0LDI2MjA3LDI2MTk2LDI2''@;'; put 'put ''MTc3LDI2MTkxLDI2MTk4LDI2MjA5LDI2MTk5LDI2MjMxLDI2MjQ0LDI2MjUyLDI2Mjc5LDI2MjY5LDI2MzAyLDI2MzMxLDI2MzMyLDI2MzQyLDI2MzQ1LDM2MTQ2LDM2MTQ3LDM2MTUwLDM2MTU1LDM2MTU3LDM2MTYwLDM2MTY1LDM2MTY2LDM2MTY4LDM2MTY5LDM2MTY3LDM2MTczLDM2MTgx''@;'; put 'put ''LDM2MTg1LDM1MjcxLDM1Mjc0LDM1Mjc1LDM1Mjc2LDM1Mjc4LDM1Mjc5LDM1MjgwLDM1MjgxLDI5Mjk0LDI5MzQzLDI5Mjc3LDI5Mjg2LDI5Mjk1LDI5MzEwLDI5MzExLDI5MzE2LDI5MzIzLDI5MzI1LDI5MzI3LDI5MzMwLDI1MzUyLDI1Mzk0LDI1NTIwLDM4NTQwLDM4NTQyLDM4NTQ1LDM4''@;'; put 'put ''NTQ2LDM4NTQ3LDM4NTQ5LDM4NTUwLDM4NTU0LDM4NTU1LDM4NTU3LDM4NTU4LDM4NTU5LDM4NTYwLDM4NTYxLDM4NTYyLDM4NTYzLDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY4LDM4NTY5LDM4NTcwLDM4NTcxLDM4NTcyLDM4NTczLDM4NTc0LDM4NTc1LDM4NTc3LDM4NTc4LDM4NTgwLDM4NTgx''@;'; put 'put ''LDM4NTgzLDM4NTg0LDM4NTg2LDM4NTg3LDM4NTkxLDM4NTk0LDM4NTk1LDM4NjAwLDM4NjAyLDM4NjAzLDM4NjA4LDM4NjA5LDM4NjExLDM4NjEyLDM4NjE0LDM4NjE1LDM4NjE2LDM4NjE3LDM4NjE4LDM4NjE5LDM4NjIwLDM4NjIxLDM4NjIyLDM4NjIzLDM4NjI1LDM4NjI2LDM4NjI3LDM4''@;'; put 'put ''NjI4LDM4NjI5LDM4NjMwLDM4NjMxLDM4NjM1LDM4NjM2LDM4NjM3LDM4NjM4LDM4NjQwLDM4NjQxLDM4NjQyLDM4NjQ0LDM4NjQ1LDM4NjQ4LDM4NjUwLDM4NjUxLDM4NjUyLDM4NjUzLDM4NjU1LDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY2LDM4NjY3LDM4NjY4LDM4NjcyLDM4NjczLDM4Njc0''@;'; put 'put ''LDM4Njc2LDM4Njc3LDM4Njc5LDM4NjgwLDM4NjgxLDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg3LDM4Njg4LDI1NjYzLDI1ODE2LDMyNzcyLDI3NjI2LDI3NjM1LDI3NjQ1LDI3NjM3LDI3NjQxLDI3NjUzLDI3NjU1LDI3NjU0LDI3NjYxLDI3NjY5LDI3NjcyLDI3NjczLDI3Njc0LDI3NjgxLDI3''@;'; put 'put ''Njg5LDI3Njg0LDI3NjkwLDI3Njk4LDI1OTA5LDI1OTQxLDI1OTYzLDI5MjYxLDI5MjY2LDI5MjcwLDI5MjMyLDM0NDAyLDIxMDE0LDMyOTI3LDMyOTI0LDMyOTE1LDMyOTU2LDI2Mzc4LDMyOTU3LDMyOTQ1LDMyOTM5LDMyOTQxLDMyOTQ4LDMyOTUxLDMyOTk5LDMzZTMsMzMwMDEsMzMwMDIs''@;'; put 'put ''MzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYzODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMwNjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMx''@;'; put 'put ''NDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcsMzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQs''@;'; put 'put ''Mzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3''@;'; put 'put ''MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEsMzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAsMzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3Njcs''@;'; put 'put ''Mzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4''@;'; put 'put ''MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEsMzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAsMjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjZlMyw0MDc4NSwy''@;'; put 'put ''NjAwMywyNjA0NCwyNjA1NCwyNjA1MiwyNjA1MSwyNjA2MCwyNjA2MiwyNjA2NiwyNjA3MCwyODgwMCwyODgyOCwyODgyMiwyODgyOSwyODg1OSwyODg2NCwyODg1NSwyODg0MywyODg0OSwyODkwNCwyODg3NCwyODk0NCwyODk0NywyODk1MCwyODk3NSwyODk3NywyOTA0MywyOTAyMCwyOTAz''@;'; put 'put ''MiwyODk5NywyOTA0MiwyOTAwMiwyOTA0OCwyOTA1MCwyOTA4MCwyOTEwNywyOTEwOSwyOTA5NiwyOTA4OCwyOTE1MiwyOTE0MCwyOTE1OSwyOTE3NywyOTIxMywyOTIyNCwyODc4MCwyODk1MiwyOTAzMCwyOTExMywyNTE1MCwyNTE0OSwyNTE1NSwyNTE2MCwyNTE2MSwzMTAzNSwzMTA0MCwz''@;'; put 'put ''MTA0NiwzMTA0OSwzMTA2NywzMTA2OCwzMTA1OSwzMTA2NiwzMTA3NCwzMTA2MywzMTA3MiwzMTA4NywzMTA3OSwzMTA5OCwzMTEwOSwzMTExNCwzMTEzMCwzMTE0MywzMTE1NSwyNDUyOSwyNDUyOCwzODgxNCwzODgxNSwzODgxNywzODgxOCwzODgyMCwzODgyMSwzODgyMiwzODgyMywzODgy''@;'; put 'put ''NCwzODgyNSwzODgyNiwzODgyOCwzODgzMCwzODgzMiwzODgzMywzODgzNSwzODgzNywzODgzOCwzODgzOSwzODg0MCwzODg0MSwzODg0MiwzODg0MywzODg0NCwzODg0NSwzODg0NiwzODg0NywzODg0OCwzODg0OSwzODg1MCwzODg1MSwzODg1MiwzODg1MywzODg1NCwzODg1NSwzODg1Niwz''@;'; put 'put ''ODg1NywzODg1OCwzODg1OSwzODg2MCwzODg2MSwzODg2MiwzODg2MywzODg2NCwzODg2NSwzODg2NiwzODg2NywzODg2OCwzODg2OSwzODg3MCwzODg3MSwzODg3MiwzODg3MywzODg3NCwzODg3NSwzODg3NiwzODg3NywzODg3OCwzODg3OSwzODg4MCwzODg4MSwzODg4MiwzODg4MywzODg4''@;'; put 'put ''NCwzODg4NSwzODg4OCwzODg5NCwzODg5NSwzODg5NiwzODg5NywzODg5OCwzODkwMCwzODkwMywzODkwNCwzODkwNSwzODkwNiwzODkwNywzODkwOCwzODkwOSwzODkxMCwzODkxMSwzODkxMiwzODkxMywzODkxNCwzODkxNSwzODkxNiwzODkxNywzODkxOCwzODkxOSwzODkyMCwzODkyMSwz''@;'; put 'put ''ODkyMiwzODkyMywzODkyNCwzODkyNSwzODkyNiwyNDYzNiwyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDY2NSwyNDY3NSwyNDc0NywyNDgzOCwyNDg0NSwyNDkyNSwyNTAwMSwyNDk4OSwyNTAzNSwyNTA0MSwyNTA5NCwzMjg5NiwzMjg5NSwyNzc5NSwyNzg5NCwyODE1NiwzMDcxMCwzMDcx''@;'; put 'put ''MiwzMDcyMCwzMDcyOSwzMDc0MywzMDc0NCwzMDczNywyNjAyNywzMDc2NSwzMDc0OCwzMDc0OSwzMDc3NywzMDc3OCwzMDc3OSwzMDc1MSwzMDc4MCwzMDc1NywzMDc2NCwzMDc1NSwzMDc2MSwzMDc5OCwzMDgyOSwzMDgwNiwzMDgwNywzMDc1OCwzMDgwMCwzMDc5MSwzMDc5NiwzMDgyNiwz''@;'; put 'put ''MDg3NSwzMDg2NywzMDg3NCwzMDg1NSwzMDg3NiwzMDg4MSwzMDg4MywzMDg5OCwzMDkwNSwzMDg4NSwzMDkzMiwzMDkzNywzMDkyMSwzMDk1NiwzMDk2MiwzMDk4MSwzMDk2NCwzMDk5NSwzMTAxMiwzMTAwNiwzMTAyOCw0MDg1OSw0MDY5Nyw0MDY5OSw0MDcwMCwzMDQ0OSwzMDQ2OCwzMDQ3''@;'; put 'put ''NywzMDQ1NywzMDQ3MSwzMDQ3MiwzMDQ5MCwzMDQ5OCwzMDQ4OSwzMDUwOSwzMDUwMiwzMDUxNywzMDUyMCwzMDU0NCwzMDU0NSwzMDUzNSwzMDUzMSwzMDU1NCwzMDU2OCwzODkyNywzODkyOCwzODkyOSwzODkzMCwzODkzMSwzODkzMiwzODkzMywzODkzNCwzODkzNSwzODkzNiwzODkzNywz''@;'; put 'put ''ODkzOCwzODkzOSwzODk0MCwzODk0MSwzODk0MiwzODk0MywzODk0NCwzODk0NSwzODk0NiwzODk0NywzODk0OCwzODk0OSwzODk1MCwzODk1MSwzODk1MiwzODk1MywzODk1NCwzODk1NSwzODk1NiwzODk1NywzODk1OCwzODk1OSwzODk2MCwzODk2MSwzODk2MiwzODk2MywzODk2NCwzODk2''@;'; put 'put ''NSwzODk2NiwzODk2NywzODk2OCwzODk2OSwzODk3MCwzODk3MSwzODk3MiwzODk3MywzODk3NCwzODk3NSwzODk3NiwzODk3NywzODk3OCwzODk3OSwzODk4MCwzODk4MSwzODk4MiwzODk4MywzODk4NCwzODk4NSwzODk4NiwzODk4NywzODk4OCwzODk4OSwzODk5MCwzODk5MSwzODk5Miwz''@;'; put 'put ''ODk5MywzODk5NCwzODk5NSwzODk5NiwzODk5NywzODk5OCwzODk5OSwzOWUzLDM5MDAxLDM5MDAyLDM5MDAzLDM5MDA0LDM5MDA1LDM5MDA2LDM5MDA3LDM5MDA4LDM5MDA5LDM5MDEwLDM5MDExLDM5MDEyLDM5MDEzLDM5MDE0LDM5MDE1LDM5MDE2LDM5MDE3LDM5MDE4LDM5MDE5LDM5MDIw''@;'; put 'put ''LDM5MDIxLDM5MDIyLDMwNTYyLDMwNTY1LDMwNTkxLDMwNjA1LDMwNTg5LDMwNTkyLDMwNjA0LDMwNjA5LDMwNjIzLDMwNjI0LDMwNjQwLDMwNjQ1LDMwNjUzLDMwMDEwLDMwMDE2LDMwMDMwLDMwMDI3LDMwMDI0LDMwMDQzLDMwMDY2LDMwMDczLDMwMDgzLDMyNjAwLDMyNjA5LDMyNjA3LDM1''@;'; put 'put ''NDAwLDMyNjE2LDMyNjI4LDMyNjI1LDMyNjMzLDMyNjQxLDMyNjM4LDMwNDEzLDMwNDM3LDM0ODY2LDM4MDIxLDM4MDIyLDM4MDIzLDM4MDI3LDM4MDI2LDM4MDI4LDM4MDI5LDM4MDMxLDM4MDMyLDM4MDM2LDM4MDM5LDM4MDM3LDM4MDQyLDM4MDQzLDM4MDQ0LDM4MDUxLDM4MDUyLDM4MDU5''@;'; put 'put ''LDM4MDU4LDM4MDYxLDM4MDYwLDM4MDYzLDM4MDY0LDM4MDY2LDM4MDY4LDM4MDcwLDM4MDcxLDM4MDcyLDM4MDczLDM4MDc0LDM4MDc2LDM4MDc3LDM4MDc5LDM4MDg0LDM4MDg4LDM4MDg5LDM4MDkwLDM4MDkxLDM4MDkyLDM4MDkzLDM4MDk0LDM4MDk2LDM4MDk3LDM4MDk4LDM4MTAxLDM4''@;'; put 'put ''MTAyLDM4MTAzLDM4MTA1LDM4MTA0LDM4MTA3LDM4MTEwLDM4MTExLDM4MTEyLDM4MTE0LDM4MTE2LDM4MTE3LDM4MTE5LDM4MTIwLDM4MTIyLDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI2LDM5MDI3LDM5MDI4LDM5MDUxLDM5MDU0LDM5MDU4LDM5MDYxLDM5MDY1LDM5MDc1LDM5MDgwLDM5MDgx''@;'; put 'put ''LDM5MDgyLDM5MDgzLDM5MDg0LDM5MDg1LDM5MDg2LDM5MDg3LDM5MDg4LDM5MDg5LDM5MDkwLDM5MDkxLDM5MDkyLDM5MDkzLDM5MDk0LDM5MDk1LDM5MDk2LDM5MDk3LDM5MDk4LDM5MDk5LDM5MTAwLDM5MTAxLDM5MTAyLDM5MTAzLDM5MTA0LDM5MTA1LDM5MTA2LDM5MTA3LDM5MTA4LDM5''@;'; put 'put ''MTA5LDM5MTEwLDM5MTExLDM5MTEyLDM5MTEzLDM5MTE0LDM5MTE1LDM5MTE2LDM5MTE3LDM5MTE5LDM5MTIwLDM5MTI0LDM5MTI2LDM5MTI3LDM5MTMxLDM5MTMyLDM5MTMzLDM5MTM2LDM5MTM3LDM5MTM4LDM5MTM5LDM5MTQwLDM5MTQxLDM5MTQyLDM5MTQ1LDM5MTQ2LDM5MTQ3LDM5MTQ4''@;'; put 'put ''LDM5MTQ5LDM5MTUwLDM5MTUxLDM5MTUyLDM5MTUzLDM5MTU0LDM5MTU1LDM5MTU2LDM5MTU3LDM5MTU4LDM5MTU5LDM5MTYwLDM5MTYxLDM5MTYyLDM5MTYzLDM5MTY0LDM5MTY1LDM5MTY2LDM5MTY3LDM5MTY4LDM5MTY5LDM5MTcwLDM5MTcxLDM5MTcyLDM5MTczLDM5MTc0LDM5MTc1LDM4''@;'; put 'put ''MTIxLDM4MTIzLDM4MTI2LDM4MTI3LDM4MTMxLDM4MTMyLDM4MTMzLDM4MTM1LDM4MTM3LDM4MTQwLDM4MTQxLDM4MTQzLDM4MTQ3LDM4MTQ2LDM4MTUwLDM4MTUxLDM4MTUzLDM4MTU0LDM4MTU3LDM4MTU4LDM4MTU5LDM4MTYyLDM4MTYzLDM4MTY0LDM4MTY1LDM4MTY2LDM4MTY4LDM4MTcx''@;'; put 'put ''LDM4MTczLDM4MTc0LDM4MTc1LDM4MTc4LDM4MTg2LDM4MTg3LDM4MTg1LDM4MTg4LDM4MTkzLDM4MTk0LDM4MTk2LDM4MTk4LDM4MTk5LDM4MjAwLDM4MjA0LDM4MjA2LDM4MjA3LDM4MjEwLDM4MTk3LDM4MjEyLDM4MjEzLDM4MjE0LDM4MjE3LDM4MjIwLDM4MjIyLDM4MjIzLDM4MjI2LDM4''@;'; put 'put ''MjI3LDM4MjI4LDM4MjMwLDM4MjMxLDM4MjMyLDM4MjMzLDM4MjM1LDM4MjM4LDM4MjM5LDM4MjM3LDM4MjQxLDM4MjQyLDM4MjQ0LDM4MjQ1LDM4MjQ2LDM4MjQ3LDM4MjQ4LDM4MjQ5LDM4MjUwLDM4MjUxLDM4MjUyLDM4MjU1LDM4MjU3LDM4MjU4LDM4MjU5LDM4MjAyLDMwNjk1LDMwNzAw''@;'; put 'put ''LDM4NjAxLDMxMTg5LDMxMjEzLDMxMjAzLDMxMjExLDMxMjM4LDIzODc5LDMxMjM1LDMxMjM0LDMxMjYyLDMxMjUyLDM5MTc2LDM5MTc3LDM5MTc4LDM5MTc5LDM5MTgwLDM5MTgyLDM5MTgzLDM5MTg1LDM5MTg2LDM5MTg3LDM5MTg4LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTkyLDM5MTkzLDM5''@;'; put 'put ''MTk0LDM5MTk1LDM5MTk2LDM5MTk3LDM5MTk4LDM5MTk5LDM5MjAwLDM5MjAxLDM5MjAyLDM5MjAzLDM5MjA0LDM5MjA1LDM5MjA2LDM5MjA3LDM5MjA4LDM5MjA5LDM5MjEwLDM5MjExLDM5MjEyLDM5MjEzLDM5MjE1LDM5MjE2LDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjIy''@;'; put 'put ''LDM5MjIzLDM5MjI0LDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjI5LDM5MjMwLDM5MjMxLDM5MjMyLDM5MjMzLDM5MjM0LDM5MjM1LDM5MjM2LDM5MjM3LDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQxLDM5MjQyLDM5MjQzLDM5MjQ0LDM5MjQ1LDM5MjQ2LDM5MjQ3LDM5MjQ4LDM5MjQ5LDM5''@;'; put 'put ''MjUwLDM5MjUxLDM5MjU0LDM5MjU1LDM5MjU2LDM5MjU3LDM5MjU4LDM5MjU5LDM5MjYwLDM5MjYxLDM5MjYyLDM5MjYzLDM5MjY0LDM5MjY1LDM5MjY2LDM5MjY4LDM5MjcwLDM5MjgzLDM5Mjg4LDM5Mjg5LDM5MjkxLDM5Mjk0LDM5Mjk4LDM5Mjk5LDM5MzA1LDMxMjg5LDMxMjg3LDMxMzEz''@;'; put 'put ''LDQwNjU1LDM5MzMzLDMxMzQ0LDMwMzQ0LDMwMzUwLDMwMzU1LDMwMzYxLDMwMzcyLDI5OTE4LDI5OTIwLDI5OTk2LDQwNDgwLDQwNDgyLDQwNDg4LDQwNDg5LDQwNDkwLDQwNDkxLDQwNDkyLDQwNDk4LDQwNDk3LDQwNTAyLDQwNTA0LDQwNTAzLDQwNTA1LDQwNTA2LDQwNTEwLDQwNTEzLDQw''@;'; put 'put ''NTE0LDQwNTE2LDQwNTE4LDQwNTE5LDQwNTIwLDQwNTIxLDQwNTIzLDQwNTI0LDQwNTI2LDQwNTI5LDQwNTMzLDQwNTM1LDQwNTM4LDQwNTM5LDQwNTQwLDQwNTQyLDQwNTQ3LDQwNTUwLDQwNTUxLDQwNTUyLDQwNTUzLDQwNTU0LDQwNTU1LDQwNTU2LDQwNTYxLDQwNTU3LDQwNTYzLDMwMDk4''@;'; put 'put ''LDMwMTAwLDMwMTAyLDMwMTEyLDMwMTA5LDMwMTI0LDMwMTE1LDMwMTMxLDMwMTMyLDMwMTM2LDMwMTQ4LDMwMTI5LDMwMTI4LDMwMTQ3LDMwMTQ2LDMwMTY2LDMwMTU3LDMwMTc5LDMwMTg0LDMwMTgyLDMwMTgwLDMwMTg3LDMwMTgzLDMwMjExLDMwMTkzLDMwMjA0LDMwMjA3LDMwMjI0LDMw''@;'; put 'put ''MjA4LDMwMjEzLDMwMjIwLDMwMjMxLDMwMjE4LDMwMjQ1LDMwMjMyLDMwMjI5LDMwMjMzLDM5MzA4LDM5MzEwLDM5MzIyLDM5MzIzLDM5MzI0LDM5MzI1LDM5MzI2LDM5MzI3LDM5MzI4LDM5MzI5LDM5MzMwLDM5MzMxLDM5MzMyLDM5MzM0LDM5MzM1LDM5MzM3LDM5MzM4LDM5MzM5LDM5MzQw''@;'; put 'put ''LDM5MzQxLDM5MzQyLDM5MzQzLDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ3LDM5MzQ4LDM5MzQ5LDM5MzUwLDM5MzUxLDM5MzUyLDM5MzUzLDM5MzU0LDM5MzU1LDM5MzU2LDM5MzU3LDM5MzU4LDM5MzU5LDM5MzYwLDM5MzYxLDM5MzYyLDM5MzYzLDM5MzY0LDM5MzY1LDM5MzY2LDM5MzY3LDM5''@;'; put 'put ''MzY4LDM5MzY5LDM5MzcwLDM5MzcxLDM5MzcyLDM5MzczLDM5Mzc0LDM5Mzc1LDM5Mzc2LDM5Mzc3LDM5Mzc4LDM5Mzc5LDM5MzgwLDM5MzgxLDM5MzgyLDM5MzgzLDM5Mzg0LDM5Mzg1LDM5Mzg2LDM5Mzg3LDM5Mzg4LDM5Mzg5LDM5MzkwLDM5MzkxLDM5MzkyLDM5MzkzLDM5Mzk0LDM5Mzk1''@;'; put 'put ''LDM5Mzk2LDM5Mzk3LDM5Mzk4LDM5Mzk5LDM5NDAwLDM5NDAxLDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA1LDM5NDA2LDM5NDA3LDM5NDA4LDM5NDA5LDM5NDEwLDM5NDExLDM5NDEyLDM5NDEzLDM5NDE0LDM5NDE1LDM5NDE2LDM5NDE3LDMwMjM1LDMwMjY4LDMwMjQyLDMwMjQwLDMwMjcyLDMw''@;'; put 'put ''MjUzLDMwMjU2LDMwMjcxLDMwMjYxLDMwMjc1LDMwMjcwLDMwMjU5LDMwMjg1LDMwMzAyLDMwMjkyLDMwMzAwLDMwMjk0LDMwMzE1LDMwMzE5LDMyNzE0LDMxNDYyLDMxMzUyLDMxMzUzLDMxMzYwLDMxMzY2LDMxMzY4LDMxMzgxLDMxMzk4LDMxMzkyLDMxNDA0LDMxNDAwLDMxNDA1LDMxNDEx''@;'; put 'put ''LDM0OTE2LDM0OTIxLDM0OTMwLDM0OTQxLDM0OTQzLDM0OTQ2LDM0OTc4LDM1MDE0LDM0OTk5LDM1MDA0LDM1MDE3LDM1MDQyLDM1MDIyLDM1MDQzLDM1MDQ1LDM1MDU3LDM1MDk4LDM1MDY4LDM1MDQ4LDM1MDcwLDM1MDU2LDM1MTA1LDM1MDk3LDM1MDkxLDM1MDk5LDM1MDgyLDM1MTI0LDM1''@;'; put 'put ''MTE1LDM1MTI2LDM1MTM3LDM1MTc0LDM1MTk1LDMwMDkxLDMyOTk3LDMwMzg2LDMwMzg4LDMwNjg0LDMyNzg2LDMyNzg4LDMyNzkwLDMyNzk2LDMyODAwLDMyODAyLDMyODA1LDMyODA2LDMyODA3LDMyODA5LDMyODA4LDMyODE3LDMyNzc5LDMyODIxLDMyODM1LDMyODM4LDMyODQ1LDMyODUw''@;'; put 'put ''LDMyODczLDMyODgxLDM1MjAzLDM5MDMyLDM5MDQwLDM5MDQzLDM5NDE4LDM5NDE5LDM5NDIwLDM5NDIxLDM5NDIyLDM5NDIzLDM5NDI0LDM5NDI1LDM5NDI2LDM5NDI3LDM5NDI4LDM5NDI5LDM5NDMwLDM5NDMxLDM5NDMyLDM5NDMzLDM5NDM0LDM5NDM1LDM5NDM2LDM5NDM3LDM5NDM4LDM5''@;'; put 'put ''NDM5LDM5NDQwLDM5NDQxLDM5NDQyLDM5NDQzLDM5NDQ0LDM5NDQ1LDM5NDQ2LDM5NDQ3LDM5NDQ4LDM5NDQ5LDM5NDUwLDM5NDUxLDM5NDUyLDM5NDUzLDM5NDU0LDM5NDU1LDM5NDU2LDM5NDU3LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYxLDM5NDYyLDM5NDYzLDM5NDY0LDM5NDY1LDM5NDY2''@;'; put 'put ''LDM5NDY3LDM5NDY4LDM5NDY5LDM5NDcwLDM5NDcxLDM5NDcyLDM5NDczLDM5NDc0LDM5NDc1LDM5NDc2LDM5NDc3LDM5NDc4LDM5NDc5LDM5NDgwLDM5NDgxLDM5NDgyLDM5NDgzLDM5NDg0LDM5NDg1LDM5NDg2LDM5NDg3LDM5NDg4LDM5NDg5LDM5NDkwLDM5NDkxLDM5NDkyLDM5NDkzLDM5''@;'; put 'put ''NDk0LDM5NDk1LDM5NDk2LDM5NDk3LDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAxLDM5NTAyLDM5NTAzLDM5NTA0LDM5NTA1LDM5NTA2LDM5NTA3LDM5NTA4LDM5NTA5LDM5NTEwLDM5NTExLDM5NTEyLDM5NTEzLDM5MDQ5LDM5MDUyLDM5MDUzLDM5MDU1LDM5MDYwLDM5MDY2LDM5MDY3LDM5MDcw''@;'; put 'put ''LDM5MDcxLDM5MDczLDM5MDc0LDM5MDc3LDM5MDc4LDM0MzgxLDM0Mzg4LDM0NDEyLDM0NDE0LDM0NDMxLDM0NDI2LDM0NDI4LDM0NDI3LDM0NDcyLDM0NDQ1LDM0NDQzLDM0NDc2LDM0NDYxLDM0NDcxLDM0NDY3LDM0NDc0LDM0NDUxLDM0NDczLDM0NDg2LDM0NTAwLDM0NDg1LDM0NTEwLDM0''@;'; put 'put ''NDgwLDM0NDkwLDM0NDgxLDM0NDc5LDM0NTA1LDM0NTExLDM0NDg0LDM0NTM3LDM0NTQ1LDM0NTQ2LDM0NTQxLDM0NTQ3LDM0NTEyLDM0NTc5LDM0NTI2LDM0NTQ4LDM0NTI3LDM0NTIwLDM0NTEzLDM0NTYzLDM0NTY3LDM0NTUyLDM0NTY4LDM0NTcwLDM0NTczLDM0NTY5LDM0NTk1LDM0NjE5''@;'; put 'put ''LDM0NTkwLDM0NTk3LDM0NjA2LDM0NTg2LDM0NjIyLDM0NjMyLDM0NjEyLDM0NjA5LDM0NjAxLDM0NjE1LDM0NjIzLDM0NjkwLDM0NTk0LDM0Njg1LDM0Njg2LDM0NjgzLDM0NjU2LDM0NjcyLDM0NjM2LDM0NjcwLDM0Njk5LDM0NjQzLDM0NjU5LDM0Njg0LDM0NjYwLDM0NjQ5LDM0NjYxLDM0''@;'; put 'put ''NzA3LDM0NzM1LDM0NzI4LDM0NzcwLDM5NTE0LDM5NTE1LDM5NTE2LDM5NTE3LDM5NTE4LDM5NTE5LDM5NTIwLDM5NTIxLDM5NTIyLDM5NTIzLDM5NTI0LDM5NTI1LDM5NTI2LDM5NTI3LDM5NTI4LDM5NTI5LDM5NTMwLDM5NTMxLDM5NTM4LDM5NTU1LDM5NTYxLDM5NTY1LDM5NTY2LDM5NTcy''@;'; put 'put ''LDM5NTczLDM5NTc3LDM5NTkwLDM5NTkzLDM5NTk0LDM5NTk1LDM5NTk2LDM5NTk3LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjAzLDM5NjA0LDM5NjA1LDM5NjA5LDM5NjExLDM5NjEzLDM5NjE0LDM5NjE1LDM5NjE5LDM5NjIwLDM5NjIyLDM5NjIzLDM5NjI0LDM5NjI1LDM5NjI2LDM5NjI5LDM5''@;'; put 'put ''NjMwLDM5NjMxLDM5NjMyLDM5NjM0LDM5NjM2LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQxLDM5NjQyLDM5NjQzLDM5NjQ0LDM5NjQ1LDM5NjQ2LDM5NjQ4LDM5NjUwLDM5NjUxLDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU2LDM5NjU3LDM5NjU4LDM5NjYwLDM5NjYyLDM5NjY0LDM5NjY1LDM5NjY2''@;'; put 'put ''LDM5NjY3LDM5NjY4LDM5NjY5LDM5NjcwLDM5NjcxLDM5NjcyLDM5Njc0LDM5Njc2LDM5Njc3LDM5Njc4LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5Njg0LDM5Njg1LDM5Njg2LDM0NzU4LDM0Njk2LDM0NjkzLDM0NzMzLDM0NzExLDM0NjkxLDM0NzMxLDM0Nzg5LDM0NzMyLDM0NzQxLDM0''@;'; put 'put ''NzM5LDM0NzYzLDM0NzcxLDM0NzQ5LDM0NzY5LDM0NzUyLDM0NzYyLDM0Nzc5LDM0Nzk0LDM0Nzg0LDM0Nzk4LDM0ODM4LDM0ODM1LDM0ODE0LDM0ODI2LDM0ODQzLDM0ODQ5LDM0ODczLDM0ODc2LDMyNTY2LDMyNTc4LDMyNTgwLDMyNTgxLDMzMjk2LDMxNDgyLDMxNDg1LDMxNDk2LDMxNDkx''@;'; put 'put ''LDMxNDkyLDMxNTA5LDMxNDk4LDMxNTMxLDMxNTAzLDMxNTU5LDMxNTQ0LDMxNTMwLDMxNTEzLDMxNTM0LDMxNTM3LDMxNTIwLDMxNTI1LDMxNTI0LDMxNTM5LDMxNTUwLDMxNTE4LDMxNTc2LDMxNTc4LDMxNTU3LDMxNjA1LDMxNTY0LDMxNTgxLDMxNTg0LDMxNTk4LDMxNjExLDMxNTg2LDMx''@;'; put 'put ''NjAyLDMxNjAxLDMxNjMyLDMxNjU0LDMxNjU1LDMxNjcyLDMxNjYwLDMxNjQ1LDMxNjU2LDMxNjIxLDMxNjU4LDMxNjQ0LDMxNjUwLDMxNjU5LDMxNjY4LDMxNjk3LDMxNjgxLDMxNjkyLDMxNzA5LDMxNzA2LDMxNzE3LDMxNzE4LDMxNzIyLDMxNzU2LDMxNzQyLDMxNzQwLDMxNzU5LDMxNzY2''@;'; put 'put ''LDMxNzU1LDM5Njg3LDM5Njg5LDM5NjkwLDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk3LDM5Njk4LDM5NzAwLDM5NzAxLDM5NzAyLDM5NzAzLDM5NzA0LDM5NzA1LDM5NzA2LDM5NzA3LDM5NzA4LDM5NzA5LDM5NzEwLDM5NzEyLDM5NzEzLDM5NzE0LDM5NzE2LDM5NzE3LDM5''@;'; put 'put ''NzE4LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzIzLDM5NzI0LDM5NzI1LDM5NzI2LDM5NzI4LDM5NzI5LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM0LDM5NzM1LDM5NzM2LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzQyLDM5NzQzLDM5NzQ0LDM5NzUwLDM5NzU0LDM5NzU1LDM5NzU2LDM5NzU4''@;'; put 'put ''LDM5NzYwLDM5NzYyLDM5NzYzLDM5NzY1LDM5NzY2LDM5NzY3LDM5NzY4LDM5NzY5LDM5NzcwLDM5NzcxLDM5NzcyLDM5NzczLDM5Nzc0LDM5Nzc1LDM5Nzc2LDM5Nzc3LDM5Nzc4LDM5Nzc5LDM5NzgwLDM5NzgxLDM5NzgyLDM5NzgzLDM5Nzg0LDM5Nzg1LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5''@;'; put 'put ''Nzg5LDM5NzkwLDM5NzkxLDM5NzkyLDM5NzkzLDM5Nzk0LDM5Nzk1LDM5Nzk2LDM5Nzk3LDM5Nzk4LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODAyLDM5ODAzLDMxNzc1LDMxNzg2LDMxNzgyLDMxODAwLDMxODA5LDMxODA4LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg0LDMzMjYwLDM0ODg0LDMzMzEz''@;'; put 'put ''LDMzMzE0LDMzMzE1LDMzMzI1LDMzMzI3LDMzMzIwLDMzMzIzLDMzMzM2LDMzMzM5LDMzMzMxLDMzMzMyLDMzMzQyLDMzMzQ4LDMzMzUzLDMzMzU1LDMzMzU5LDMzMzcwLDMzMzc1LDMzMzg0LDM0OTQyLDM0OTQ5LDM0OTUyLDM1MDMyLDM1MDM5LDM1MTY2LDMyNjY5LDMyNjcxLDMyNjc5LDMy''@;'; put 'put ''Njg3LDMyNjg4LDMyNjkwLDMxODY4LDI1OTI5LDMxODg5LDMxOTAxLDMxOTAwLDMxOTAyLDMxOTA2LDMxOTIyLDMxOTMyLDMxOTMzLDMxOTM3LDMxOTQzLDMxOTQ4LDMxOTQ5LDMxOTQ0LDMxOTQxLDMxOTU5LDMxOTc2LDMzMzkwLDI2MjgwLDMyNzAzLDMyNzE4LDMyNzI1LDMyNzQxLDMyNzM3''@;'; put 'put ''LDMyNzQyLDMyNzQ1LDMyNzUwLDMyNzU1LDMxOTkyLDMyMTE5LDMyMTY2LDMyMTc0LDMyMzI3LDMyNDExLDQwNjMyLDQwNjI4LDM2MjExLDM2MjI4LDM2MjQ0LDM2MjQxLDM2MjczLDM2MTk5LDM2MjA1LDM1OTExLDM1OTEzLDM3MTk0LDM3MjAwLDM3MTk4LDM3MTk5LDM3MjIwLDM5ODA0LDM5''@;'; put 'put ''ODA1LDM5ODA2LDM5ODA3LDM5ODA4LDM5ODA5LDM5ODEwLDM5ODExLDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE2LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIwLDM5ODIxLDM5ODIyLDM5ODIzLDM5ODI0LDM5ODI1LDM5ODI2LDM5ODI3LDM5ODI4LDM5ODI5LDM5ODMwLDM5ODMxLDM5ODMy''@;'; put 'put ''LDM5ODMzLDM5ODM0LDM5ODM1LDM5ODM2LDM5ODM3LDM5ODM4LDM5ODM5LDM5ODQwLDM5ODQxLDM5ODQyLDM5ODQzLDM5ODQ0LDM5ODQ1LDM5ODQ2LDM5ODQ3LDM5ODQ4LDM5ODQ5LDM5ODUwLDM5ODUxLDM5ODUyLDM5ODUzLDM5ODU0LDM5ODU1LDM5ODU2LDM5ODU3LDM5ODU4LDM5ODU5LDM5''@;'; put 'put ''ODYwLDM5ODYxLDM5ODYyLDM5ODYzLDM5ODY0LDM5ODY1LDM5ODY2LDM5ODY3LDM5ODY4LDM5ODY5LDM5ODcwLDM5ODcxLDM5ODcyLDM5ODczLDM5ODc0LDM5ODc1LDM5ODc2LDM5ODc3LDM5ODc4LDM5ODc5LDM5ODgwLDM5ODgxLDM5ODgyLDM5ODgzLDM5ODg0LDM5ODg1LDM5ODg2LDM5ODg3''@;'; put 'put ''LDM5ODg4LDM5ODg5LDM5ODkwLDM5ODkxLDM5ODkyLDM5ODkzLDM5ODk0LDM5ODk1LDM5ODk2LDM5ODk3LDM5ODk4LDM5ODk5LDM3MjE4LDM3MjE3LDM3MjMyLDM3MjI1LDM3MjMxLDM3MjQ1LDM3MjQ2LDM3MjM0LDM3MjM2LDM3MjQxLDM3MjYwLDM3MjUzLDM3MjY0LDM3MjYxLDM3MjY1LDM3''@;'; put 'put ''MjgyLDM3MjgzLDM3MjkwLDM3MjkzLDM3Mjk0LDM3Mjk1LDM3MzAxLDM3MzAwLDM3MzA2LDM1OTI1LDQwNTc0LDM2MjgwLDM2MzMxLDM2MzU3LDM2NDQxLDM2NDU3LDM2Mjc3LDM2Mjg3LDM2Mjg0LDM2MjgyLDM2MjkyLDM2MzEwLDM2MzExLDM2MzE0LDM2MzE4LDM2MzAyLDM2MzAzLDM2MzE1''@;'; put 'put ''LDM2Mjk0LDM2MzMyLDM2MzQzLDM2MzQ0LDM2MzIzLDM2MzQ1LDM2MzQ3LDM2MzI0LDM2MzYxLDM2MzQ5LDM2MzcyLDM2MzgxLDM2MzgzLDM2Mzk2LDM2Mzk4LDM2Mzg3LDM2Mzk5LDM2NDEwLDM2NDE2LDM2NDA5LDM2NDA1LDM2NDEzLDM2NDAxLDM2NDI1LDM2NDE3LDM2NDE4LDM2NDMzLDM2''@;'; put 'put ''NDM0LDM2NDI2LDM2NDY0LDM2NDcwLDM2NDc2LDM2NDYzLDM2NDY4LDM2NDg1LDM2NDk1LDM2NTAwLDM2NDk2LDM2NTA4LDM2NTEwLDM1OTYwLDM1OTcwLDM1OTc4LDM1OTczLDM1OTkyLDM1OTg4LDI2MDExLDM1Mjg2LDM1Mjk0LDM1MjkwLDM1MjkyLDM5OTAwLDM5OTAxLDM5OTAyLDM5OTAz''@;'; put 'put ''LDM5OTA0LDM5OTA1LDM5OTA2LDM5OTA3LDM5OTA4LDM5OTA5LDM5OTEwLDM5OTExLDM5OTEyLDM5OTEzLDM5OTE0LDM5OTE1LDM5OTE2LDM5OTE3LDM5OTE4LDM5OTE5LDM5OTIwLDM5OTIxLDM5OTIyLDM5OTIzLDM5OTI0LDM5OTI1LDM5OTI2LDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5''@;'; put 'put ''OTMxLDM5OTMyLDM5OTMzLDM5OTM0LDM5OTM1LDM5OTM2LDM5OTM3LDM5OTM4LDM5OTM5LDM5OTQwLDM5OTQxLDM5OTQyLDM5OTQzLDM5OTQ0LDM5OTQ1LDM5OTQ2LDM5OTQ3LDM5OTQ4LDM5OTQ5LDM5OTUwLDM5OTUxLDM5OTUyLDM5OTUzLDM5OTU0LDM5OTU1LDM5OTU2LDM5OTU3LDM5OTU4''@;'; put 'put ''LDM5OTU5LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTYzLDM5OTY0LDM5OTY1LDM5OTY2LDM5OTY3LDM5OTY4LDM5OTY5LDM5OTcwLDM5OTcxLDM5OTcyLDM5OTczLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTc5LDM5OTgwLDM5OTgxLDM5OTgyLDM5OTgzLDM5OTg0LDM5OTg1LDM5''@;'; put 'put ''OTg2LDM5OTg3LDM5OTg4LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTkyLDM5OTkzLDM5OTk0LDM5OTk1LDM1MzAxLDM1MzA3LDM1MzExLDM1MzkwLDM1NjIyLDM4NzM5LDM4NjMzLDM4NjQzLDM4NjM5LDM4NjYyLDM4NjU3LDM4NjY0LDM4NjcxLDM4NjcwLDM4Njk4LDM4NzAxLDM4NzA0LDM4NzE4''@;'; put 'put ''LDQwODMyLDQwODM1LDQwODM3LDQwODM4LDQwODM5LDQwODQwLDQwODQxLDQwODQyLDQwODQ0LDQwNzAyLDQwNzE1LDQwNzE3LDM4NTg1LDM4NTg4LDM4NTg5LDM4NjA2LDM4NjEwLDMwNjU1LDM4NjI0LDM3NTE4LDM3NTUwLDM3NTc2LDM3Njk0LDM3NzM4LDM3ODM0LDM3Nzc1LDM3OTUwLDM3''@;'; put 'put ''OTk1LDQwMDYzLDQwMDY2LDQwMDY5LDQwMDcwLDQwMDcxLDQwMDcyLDMxMjY3LDQwMDc1LDQwMDc4LDQwMDgwLDQwMDgxLDQwMDgyLDQwMDg0LDQwMDg1LDQwMDkwLDQwMDkxLDQwMDk0LDQwMDk1LDQwMDk2LDQwMDk3LDQwMDk4LDQwMDk5LDQwMTAxLDQwMTAyLDQwMTAzLDQwMTA0LDQwMTA1''@;'; put 'put ''LDQwMTA3LDQwMTA5LDQwMTEwLDQwMTEyLDQwMTEzLDQwMTE0LDQwMTE1LDQwMTE2LDQwMTE3LDQwMTE4LDQwMTE5LDQwMTIyLDQwMTIzLDQwMTI0LDQwMTI1LDQwMTMyLDQwMTMzLDQwMTM0LDQwMTM1LDQwMTM4LDQwMTM5LDM5OTk2LDM5OTk3LDM5OTk4LDM5OTk5LDRlNCw0MDAwMSw0MDAw''@;'; put 'put ''Miw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwNiw0MDAwNyw0MDAwOCw0MDAwOSw0MDAxMCw0MDAxMSw0MDAxMiw0MDAxMyw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxNyw0MDAxOCw0MDAxOSw0MDAyMCw0MDAyMSw0MDAyMiw0MDAyMyw0MDAyNCw0MDAyNSw0MDAyNiw0MDAyNyw0MDAyOCw0MDAyOSw0''@;'; put 'put ''MDAzMCw0MDAzMSw0MDAzMiw0MDAzMyw0MDAzNCw0MDAzNSw0MDAzNiw0MDAzNyw0MDAzOCw0MDAzOSw0MDA0MCw0MDA0MSw0MDA0Miw0MDA0Myw0MDA0NCw0MDA0NSw0MDA0Niw0MDA0Nyw0MDA0OCw0MDA0OSw0MDA1MCw0MDA1MSw0MDA1Miw0MDA1Myw0MDA1NCw0MDA1NSw0MDA1Niw0MDA1''@;'; put 'put ''Nyw0MDA1OCw0MDA1OSw0MDA2MSw0MDA2Miw0MDA2NCw0MDA2Nyw0MDA2OCw0MDA3Myw0MDA3NCw0MDA3Niw0MDA3OSw0MDA4Myw0MDA4Niw0MDA4Nyw0MDA4OCw0MDA4OSw0MDA5Myw0MDEwNiw0MDEwOCw0MDExMSw0MDEyMSw0MDEyNiw0MDEyNyw0MDEyOCw0MDEyOSw0MDEzMCw0MDEzNiw0''@;'; put 'put ''MDEzNyw0MDE0NSw0MDE0Niw0MDE1NCw0MDE1NSw0MDE2MCw0MDE2MSw0MDE0MCw0MDE0MSw0MDE0Miw0MDE0Myw0MDE0NCw0MDE0Nyw0MDE0OCw0MDE0OSw0MDE1MSw0MDE1Miw0MDE1Myw0MDE1Niw0MDE1Nyw0MDE1OSw0MDE2MiwzODc4MCwzODc4OSwzODgwMSwzODgwMiwzODgwNCwzODgz''@;'; put 'put ''MSwzODgyNywzODgxOSwzODgzNCwzODgzNiwzOTYwMSwzOTYwMCwzOTYwNyw0MDUzNiwzOTYwNiwzOTYxMCwzOTYxMiwzOTYxNywzOTYxNiwzOTYyMSwzOTYxOCwzOTYyNywzOTYyOCwzOTYzMywzOTc0OSwzOTc0NywzOTc1MSwzOTc1MywzOTc1MiwzOTc1NywzOTc2MSwzOTE0NCwzOTE4MSwz''@;'; put 'put ''OTIxNCwzOTI1MywzOTI1MiwzOTY0NywzOTY0OSwzOTY1NCwzOTY2MywzOTY1OSwzOTY3NSwzOTY2MSwzOTY3MywzOTY4OCwzOTY5NSwzOTY5OSwzOTcxMSwzOTcxNSw0MDYzNyw0MDYzOCwzMjMxNSw0MDU3OCw0MDU4Myw0MDU4NCw0MDU4Nyw0MDU5NCwzNzg0Niw0MDYwNSw0MDYwNyw0MDY2''@;'; put 'put ''Nyw0MDY2OCw0MDY2OSw0MDY3Miw0MDY3MSw0MDY3NCw0MDY4MSw0MDY3OSw0MDY3Nyw0MDY4Miw0MDY4Nyw0MDczOCw0MDc0OCw0MDc1MSw0MDc2MSw0MDc1OSw0MDc2NSw0MDc2Niw0MDc3Miw0MDE2Myw0MDE2NCw0MDE2NSw0MDE2Niw0MDE2Nyw0MDE2OCw0MDE2OSw0MDE3MCw0MDE3MSw0''@;'; put 'put ''MDE3Miw0MDE3Myw0MDE3NCw0MDE3NSw0MDE3Niw0MDE3Nyw0MDE3OCw0MDE3OSw0MDE4MCw0MDE4MSw0MDE4Miw0MDE4Myw0MDE4NCw0MDE4NSw0MDE4Niw0MDE4Nyw0MDE4OCw0MDE4OSw0MDE5MCw0MDE5MSw0MDE5Miw0MDE5Myw0MDE5NCw0MDE5NSw0MDE5Niw0MDE5Nyw0MDE5OCw0MDE5''@;'; put 'put ''OSw0MDIwMCw0MDIwMSw0MDIwMiw0MDIwMyw0MDIwNCw0MDIwNSw0MDIwNiw0MDIwNyw0MDIwOCw0MDIwOSw0MDIxMCw0MDIxMSw0MDIxMiw0MDIxMyw0MDIxNCw0MDIxNSw0MDIxNiw0MDIxNyw0MDIxOCw0MDIxOSw0MDIyMCw0MDIyMSw0MDIyMiw0MDIyMyw0MDIyNCw0MDIyNSw0MDIyNiw0''@;'; put 'put ''MDIyNyw0MDIyOCw0MDIyOSw0MDIzMCw0MDIzMSw0MDIzMiw0MDIzMyw0MDIzNCw0MDIzNSw0MDIzNiw0MDIzNyw0MDIzOCw0MDIzOSw0MDI0MCw0MDI0MSw0MDI0Miw0MDI0Myw0MDI0NCw0MDI0NSw0MDI0Niw0MDI0Nyw0MDI0OCw0MDI0OSw0MDI1MCw0MDI1MSw0MDI1Miw0MDI1Myw0MDI1''@;'; put 'put ''NCw0MDI1NSw0MDI1Niw0MDI1Nyw0MDI1OCw1NzkwOCw1NzkwOSw1NzkxMCw1NzkxMSw1NzkxMiw1NzkxMyw1NzkxNCw1NzkxNSw1NzkxNiw1NzkxNyw1NzkxOCw1NzkxOSw1NzkyMCw1NzkyMSw1NzkyMiw1NzkyMyw1NzkyNCw1NzkyNSw1NzkyNiw1NzkyNyw1NzkyOCw1NzkyOSw1NzkzMCw1''@;'; put 'put ''NzkzMSw1NzkzMiw1NzkzMyw1NzkzNCw1NzkzNSw1NzkzNiw1NzkzNyw1NzkzOCw1NzkzOSw1Nzk0MCw1Nzk0MSw1Nzk0Miw1Nzk0Myw1Nzk0NCw1Nzk0NSw1Nzk0Niw1Nzk0Nyw1Nzk0OCw1Nzk0OSw1Nzk1MCw1Nzk1MSw1Nzk1Miw1Nzk1Myw1Nzk1NCw1Nzk1NSw1Nzk1Niw1Nzk1Nyw1Nzk1''@;'; put 'put ''OCw1Nzk1OSw1Nzk2MCw1Nzk2MSw1Nzk2Miw1Nzk2Myw1Nzk2NCw1Nzk2NSw1Nzk2Niw1Nzk2Nyw1Nzk2OCw1Nzk2OSw1Nzk3MCw1Nzk3MSw1Nzk3Miw1Nzk3Myw1Nzk3NCw1Nzk3NSw1Nzk3Niw1Nzk3Nyw1Nzk3OCw1Nzk3OSw1Nzk4MCw1Nzk4MSw1Nzk4Miw1Nzk4Myw1Nzk4NCw1Nzk4NSw1''@;'; put 'put ''Nzk4Niw1Nzk4Nyw1Nzk4OCw1Nzk4OSw1Nzk5MCw1Nzk5MSw1Nzk5Miw1Nzk5Myw1Nzk5NCw1Nzk5NSw1Nzk5Niw1Nzk5Nyw1Nzk5OCw1Nzk5OSw1OGUzLDU4MDAxLDQwMjU5LDQwMjYwLDQwMjYxLDQwMjYyLDQwMjYzLDQwMjY0LDQwMjY1LDQwMjY2LDQwMjY3LDQwMjY4LDQwMjY5LDQwMjcw''@;'; put 'put ''LDQwMjcxLDQwMjcyLDQwMjczLDQwMjc0LDQwMjc1LDQwMjc2LDQwMjc3LDQwMjc4LDQwMjc5LDQwMjgwLDQwMjgxLDQwMjgyLDQwMjgzLDQwMjg0LDQwMjg1LDQwMjg2LDQwMjg3LDQwMjg4LDQwMjg5LDQwMjkwLDQwMjkxLDQwMjkyLDQwMjkzLDQwMjk0LDQwMjk1LDQwMjk2LDQwMjk3LDQw''@;'; put 'put ''Mjk4LDQwMjk5LDQwMzAwLDQwMzAxLDQwMzAyLDQwMzAzLDQwMzA0LDQwMzA1LDQwMzA2LDQwMzA3LDQwMzA4LDQwMzA5LDQwMzEwLDQwMzExLDQwMzEyLDQwMzEzLDQwMzE0LDQwMzE1LDQwMzE2LDQwMzE3LDQwMzE4LDQwMzE5LDQwMzIwLDQwMzIxLDQwMzIyLDQwMzIzLDQwMzI0LDQwMzI1''@;'; put 'put ''LDQwMzI2LDQwMzI3LDQwMzI4LDQwMzI5LDQwMzMwLDQwMzMxLDQwMzMyLDQwMzMzLDQwMzM0LDQwMzM1LDQwMzM2LDQwMzM3LDQwMzM4LDQwMzM5LDQwMzQwLDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzQ1LDQwMzQ2LDQwMzQ3LDQwMzQ4LDQwMzQ5LDQwMzUwLDQwMzUxLDQwMzUyLDQw''@;'; put 'put ''MzUzLDQwMzU0LDU4MDAyLDU4MDAzLDU4MDA0LDU4MDA1LDU4MDA2LDU4MDA3LDU4MDA4LDU4MDA5LDU4MDEwLDU4MDExLDU4MDEyLDU4MDEzLDU4MDE0LDU4MDE1LDU4MDE2LDU4MDE3LDU4MDE4LDU4MDE5LDU4MDIwLDU4MDIxLDU4MDIyLDU4MDIzLDU4MDI0LDU4MDI1LDU4MDI2LDU4MDI3''@;'; put 'put ''LDU4MDI4LDU4MDI5LDU4MDMwLDU4MDMxLDU4MDMyLDU4MDMzLDU4MDM0LDU4MDM1LDU4MDM2LDU4MDM3LDU4MDM4LDU4MDM5LDU4MDQwLDU4MDQxLDU4MDQyLDU4MDQzLDU4MDQ0LDU4MDQ1LDU4MDQ2LDU4MDQ3LDU4MDQ4LDU4MDQ5LDU4MDUwLDU4MDUxLDU4MDUyLDU4MDUzLDU4MDU0LDU4''@;'; put 'put ''MDU1LDU4MDU2LDU4MDU3LDU4MDU4LDU4MDU5LDU4MDYwLDU4MDYxLDU4MDYyLDU4MDYzLDU4MDY0LDU4MDY1LDU4MDY2LDU4MDY3LDU4MDY4LDU4MDY5LDU4MDcwLDU4MDcxLDU4MDcyLDU4MDczLDU4MDc0LDU4MDc1LDU4MDc2LDU4MDc3LDU4MDc4LDU4MDc5LDU4MDgwLDU4MDgxLDU4MDgy''@;'; put 'put ''LDU4MDgzLDU4MDg0LDU4MDg1LDU4MDg2LDU4MDg3LDU4MDg4LDU4MDg5LDU4MDkwLDU4MDkxLDU4MDkyLDU4MDkzLDU4MDk0LDU4MDk1LDQwMzU1LDQwMzU2LDQwMzU3LDQwMzU4LDQwMzU5LDQwMzYwLDQwMzYxLDQwMzYyLDQwMzYzLDQwMzY0LDQwMzY1LDQwMzY2LDQwMzY3LDQwMzY4LDQw''@;'; put 'put ''MzY5LDQwMzcwLDQwMzcxLDQwMzcyLDQwMzczLDQwMzc0LDQwMzc1LDQwMzc2LDQwMzc3LDQwMzc4LDQwMzc5LDQwMzgwLDQwMzgxLDQwMzgyLDQwMzgzLDQwMzg0LDQwMzg1LDQwMzg2LDQwMzg3LDQwMzg4LDQwMzg5LDQwMzkwLDQwMzkxLDQwMzkyLDQwMzkzLDQwMzk0LDQwMzk1LDQwMzk2''@;'; put 'put ''LDQwMzk3LDQwMzk4LDQwMzk5LDQwNDAwLDQwNDAxLDQwNDAyLDQwNDAzLDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDA4LDQwNDA5LDQwNDEwLDQwNDExLDQwNDEyLDQwNDEzLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDE3LDQwNDE4LDQwNDE5LDQwNDIwLDQwNDIxLDQwNDIyLDQwNDIzLDQw''@;'; put 'put ''NDI0LDQwNDI1LDQwNDI2LDQwNDI3LDQwNDI4LDQwNDI5LDQwNDMwLDQwNDMxLDQwNDMyLDQwNDMzLDQwNDM0LDQwNDM1LDQwNDM2LDQwNDM3LDQwNDM4LDQwNDM5LDQwNDQwLDQwNDQxLDQwNDQyLDQwNDQzLDQwNDQ0LDQwNDQ1LDQwNDQ2LDQwNDQ3LDQwNDQ4LDQwNDQ5LDQwNDUwLDU4MDk2''@;'; put 'put ''LDU4MDk3LDU4MDk4LDU4MDk5LDU4MTAwLDU4MTAxLDU4MTAyLDU4MTAzLDU4MTA0LDU4MTA1LDU4MTA2LDU4MTA3LDU4MTA4LDU4MTA5LDU4MTEwLDU4MTExLDU4MTEyLDU4MTEzLDU4MTE0LDU4MTE1LDU4MTE2LDU4MTE3LDU4MTE4LDU4MTE5LDU4MTIwLDU4MTIxLDU4MTIyLDU4MTIzLDU4''@;'; put 'put ''MTI0LDU4MTI1LDU4MTI2LDU4MTI3LDU4MTI4LDU4MTI5LDU4MTMwLDU4MTMxLDU4MTMyLDU4MTMzLDU4MTM0LDU4MTM1LDU4MTM2LDU4MTM3LDU4MTM4LDU4MTM5LDU4MTQwLDU4MTQxLDU4MTQyLDU4MTQzLDU4MTQ0LDU4MTQ1LDU4MTQ2LDU4MTQ3LDU4MTQ4LDU4MTQ5LDU4MTUwLDU4MTUx''@;'; put 'put ''LDU4MTUyLDU4MTUzLDU4MTU0LDU4MTU1LDU4MTU2LDU4MTU3LDU4MTU4LDU4MTU5LDU4MTYwLDU4MTYxLDU4MTYyLDU4MTYzLDU4MTY0LDU4MTY1LDU4MTY2LDU4MTY3LDU4MTY4LDU4MTY5LDU4MTcwLDU4MTcxLDU4MTcyLDU4MTczLDU4MTc0LDU4MTc1LDU4MTc2LDU4MTc3LDU4MTc4LDU4''@;'; put 'put ''MTc5LDU4MTgwLDU4MTgxLDU4MTgyLDU4MTgzLDU4MTg0LDU4MTg1LDU4MTg2LDU4MTg3LDU4MTg4LDU4MTg5LDQwNDUxLDQwNDUyLDQwNDUzLDQwNDU0LDQwNDU1LDQwNDU2LDQwNDU3LDQwNDU4LDQwNDU5LDQwNDYwLDQwNDYxLDQwNDYyLDQwNDYzLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY3''@;'; put 'put ''LDQwNDY4LDQwNDY5LDQwNDcwLDQwNDcxLDQwNDcyLDQwNDczLDQwNDc0LDQwNDc1LDQwNDc2LDQwNDc3LDQwNDc4LDQwNDg0LDQwNDg3LDQwNDk0LDQwNDk2LDQwNTAwLDQwNTA3LDQwNTA4LDQwNTEyLDQwNTI1LDQwNTI4LDQwNTMwLDQwNTMxLDQwNTMyLDQwNTM0LDQwNTM3LDQwNTQxLDQw''@;'; put 'put ''NTQzLDQwNTQ0LDQwNTQ1LDQwNTQ2LDQwNTQ5LDQwNTU4LDQwNTU5LDQwNTYyLDQwNTY0LDQwNTY1LDQwNTY2LDQwNTY3LDQwNTY4LDQwNTY5LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTczLDQwNTc2LDQwNTc3LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgyLDQwNTg1LDQwNTg2LDQwNTg4LDQwNTg5''@;'; put 'put ''LDQwNTkwLDQwNTkxLDQwNTkyLDQwNTkzLDQwNTk2LDQwNTk3LDQwNTk4LDQwNTk5LDQwNjAwLDQwNjAxLDQwNjAyLDQwNjAzLDQwNjA0LDQwNjA2LDQwNjA4LDQwNjA5LDQwNjEwLDQwNjExLDQwNjEyLDQwNjEzLDQwNjE1LDQwNjE2LDQwNjE3LDQwNjE4LDU4MTkwLDU4MTkxLDU4MTkyLDU4''@;'; put 'put ''MTkzLDU4MTk0LDU4MTk1LDU4MTk2LDU4MTk3LDU4MTk4LDU4MTk5LDU4MjAwLDU4MjAxLDU4MjAyLDU4MjAzLDU4MjA0LDU4MjA1LDU4MjA2LDU4MjA3LDU4MjA4LDU4MjA5LDU4MjEwLDU4MjExLDU4MjEyLDU4MjEzLDU4MjE0LDU4MjE1LDU4MjE2LDU4MjE3LDU4MjE4LDU4MjE5LDU4MjIw''@;'; put 'put ''LDU4MjIxLDU4MjIyLDU4MjIzLDU4MjI0LDU4MjI1LDU4MjI2LDU4MjI3LDU4MjI4LDU4MjI5LDU4MjMwLDU4MjMxLDU4MjMyLDU4MjMzLDU4MjM0LDU4MjM1LDU4MjM2LDU4MjM3LDU4MjM4LDU4MjM5LDU4MjQwLDU4MjQxLDU4MjQyLDU4MjQzLDU4MjQ0LDU4MjQ1LDU4MjQ2LDU4MjQ3LDU4''@;'; put 'put ''MjQ4LDU4MjQ5LDU4MjUwLDU4MjUxLDU4MjUyLDU4MjUzLDU4MjU0LDU4MjU1LDU4MjU2LDU4MjU3LDU4MjU4LDU4MjU5LDU4MjYwLDU4MjYxLDU4MjYyLDU4MjYzLDU4MjY0LDU4MjY1LDU4MjY2LDU4MjY3LDU4MjY4LDU4MjY5LDU4MjcwLDU4MjcxLDU4MjcyLDU4MjczLDU4Mjc0LDU4Mjc1''@;'; put 'put ''LDU4Mjc2LDU4Mjc3LDU4Mjc4LDU4Mjc5LDU4MjgwLDU4MjgxLDU4MjgyLDU4MjgzLDQwNjE5LDQwNjIwLDQwNjIxLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI1LDQwNjI2LDQwNjI3LDQwNjI5LDQwNjMwLDQwNjMxLDQwNjMzLDQwNjM0LDQwNjM2LDQwNjM5LDQwNjQwLDQwNjQxLDQwNjQyLDQw''@;'; put 'put ''NjQzLDQwNjQ1LDQwNjQ2LDQwNjQ3LDQwNjQ4LDQwNjUwLDQwNjUxLDQwNjUyLDQwNjU2LDQwNjU4LDQwNjU5LDQwNjYxLDQwNjYyLDQwNjYzLDQwNjY1LDQwNjY2LDQwNjcwLDQwNjczLDQwNjc1LDQwNjc2LDQwNjc4LDQwNjgwLDQwNjgzLDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5''@;'; put 'put ''LDQwNjkwLDQwNjkxLDQwNjkyLDQwNjkzLDQwNjk0LDQwNjk1LDQwNjk2LDQwNjk4LDQwNzAxLDQwNzAzLDQwNzA0LDQwNzA1LDQwNzA2LDQwNzA3LDQwNzA4LDQwNzA5LDQwNzEwLDQwNzExLDQwNzEyLDQwNzEzLDQwNzE0LDQwNzE2LDQwNzE5LDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI1LDQw''@;'; put 'put ''NzI2LDQwNzI4LDQwNzMwLDQwNzMxLDQwNzMyLDQwNzMzLDQwNzM0LDQwNzM1LDQwNzM3LDQwNzM5LDQwNzQwLDQwNzQxLDQwNzQyLDQwNzQzLDQwNzQ0LDQwNzQ1LDQwNzQ2LDQwNzQ3LDQwNzQ5LDQwNzUwLDQwNzUyLDQwNzUzLDU4Mjg0LDU4Mjg1LDU4Mjg2LDU4Mjg3LDU4Mjg4LDU4Mjg5''@;'; put 'put ''LDU4MjkwLDU4MjkxLDU4MjkyLDU4MjkzLDU4Mjk0LDU4Mjk1LDU4Mjk2LDU4Mjk3LDU4Mjk4LDU4Mjk5LDU4MzAwLDU4MzAxLDU4MzAyLDU4MzAzLDU4MzA0LDU4MzA1LDU4MzA2LDU4MzA3LDU4MzA4LDU4MzA5LDU4MzEwLDU4MzExLDU4MzEyLDU4MzEzLDU4MzE0LDU4MzE1LDU4MzE2LDU4''@;'; put 'put ''MzE3LDU4MzE4LDU4MzE5LDU4MzIwLDU4MzIxLDU4MzIyLDU4MzIzLDU4MzI0LDU4MzI1LDU4MzI2LDU4MzI3LDU4MzI4LDU4MzI5LDU4MzMwLDU4MzMxLDU4MzMyLDU4MzMzLDU4MzM0LDU4MzM1LDU4MzM2LDU4MzM3LDU4MzM4LDU4MzM5LDU4MzQwLDU4MzQxLDU4MzQyLDU4MzQzLDU4MzQ0''@;'; put 'put ''LDU4MzQ1LDU4MzQ2LDU4MzQ3LDU4MzQ4LDU4MzQ5LDU4MzUwLDU4MzUxLDU4MzUyLDU4MzUzLDU4MzU0LDU4MzU1LDU4MzU2LDU4MzU3LDU4MzU4LDU4MzU5LDU4MzYwLDU4MzYxLDU4MzYyLDU4MzYzLDU4MzY0LDU4MzY1LDU4MzY2LDU4MzY3LDU4MzY4LDU4MzY5LDU4MzcwLDU4MzcxLDU4''@;'; put 'put ''MzcyLDU4MzczLDU4Mzc0LDU4Mzc1LDU4Mzc2LDU4Mzc3LDQwNzU0LDQwNzU1LDQwNzU2LDQwNzU3LDQwNzU4LDQwNzYwLDQwNzYyLDQwNzY0LDQwNzY3LDQwNzY4LDQwNzY5LDQwNzcwLDQwNzcxLDQwNzczLDQwNzc0LDQwNzc1LDQwNzc2LDQwNzc3LDQwNzc4LDQwNzc5LDQwNzgwLDQwNzgx''@;'; put 'put ''LDQwNzgyLDQwNzgzLDQwNzg2LDQwNzg3LDQwNzg4LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzkzLDQwNzk0LDQwNzk1LDQwNzk2LDQwNzk3LDQwNzk4LDQwNzk5LDQwODAwLDQwODAxLDQwODAyLDQwODAzLDQwODA0LDQwODA1LDQwODA2LDQwODA3LDQwODA4LDQwODA5LDQwODEwLDQw''@;'; put 'put ''ODExLDQwODEyLDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE4LDQwODE5LDQwODIwLDQwODIxLDQwODIyLDQwODIzLDQwODI0LDQwODI1LDQwODI2LDQwODI3LDQwODI4LDQwODI5LDQwODMwLDQwODMzLDQwODM0LDQwODQ1LDQwODQ2LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUw''@;'; put 'put ''LDQwODUxLDQwODUyLDQwODUzLDQwODU0LDQwODU1LDQwODU2LDQwODYwLDQwODYxLDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY4LDQwODY5LDYzNzg4LDYzODY1LDYzODkzLDYzOTc1LDYzOTg1LDU4Mzc4LDU4Mzc5LDU4MzgwLDU4MzgxLDU4MzgyLDU4MzgzLDU4Mzg0LDU4Mzg1LDU4''@;'; put 'put ''Mzg2LDU4Mzg3LDU4Mzg4LDU4Mzg5LDU4MzkwLDU4MzkxLDU4MzkyLDU4MzkzLDU4Mzk0LDU4Mzk1LDU4Mzk2LDU4Mzk3LDU4Mzk4LDU4Mzk5LDU4NDAwLDU4NDAxLDU4NDAyLDU4NDAzLDU4NDA0LDU4NDA1LDU4NDA2LDU4NDA3LDU4NDA4LDU4NDA5LDU4NDEwLDU4NDExLDU4NDEyLDU4NDEz''@;'; put 'put ''LDU4NDE0LDU4NDE1LDU4NDE2LDU4NDE3LDU4NDE4LDU4NDE5LDU4NDIwLDU4NDIxLDU4NDIyLDU4NDIzLDU4NDI0LDU4NDI1LDU4NDI2LDU4NDI3LDU4NDI4LDU4NDI5LDU4NDMwLDU4NDMxLDU4NDMyLDU4NDMzLDU4NDM0LDU4NDM1LDU4NDM2LDU4NDM3LDU4NDM4LDU4NDM5LDU4NDQwLDU4''@;'; put 'put ''NDQxLDU4NDQyLDU4NDQzLDU4NDQ0LDU4NDQ1LDU4NDQ2LDU4NDQ3LDU4NDQ4LDU4NDQ5LDU4NDUwLDU4NDUxLDU4NDUyLDU4NDUzLDU4NDU0LDU4NDU1LDU4NDU2LDU4NDU3LDU4NDU4LDU4NDU5LDU4NDYwLDU4NDYxLDU4NDYyLDU4NDYzLDU4NDY0LDU4NDY1LDU4NDY2LDU4NDY3LDU4NDY4''@;'; put 'put ''LDU4NDY5LDU4NDcwLDU4NDcxLDY0MDEyLDY0MDEzLDY0MDE0LDY0MDE1LDY0MDE3LDY0MDE5LDY0MDIwLDY0MDI0LDY0MDMxLDY0MDMyLDY0MDMzLDY0MDM1LDY0MDM2LDY0MDM5LDY0MDQwLDY0MDQxLDExOTA1LDU5NDE0LDU5NDE1LDU5NDE2LDExOTA4LDEzNDI3LDEzMzgzLDExOTEyLDEx''@;'; put 'put ''OTE1LDU5NDIyLDEzNzI2LDEzODUwLDEzODM4LDExOTE2LDExOTI3LDE0NzAyLDE0NjE2LDU5NDMwLDE0Nzk5LDE0ODE1LDE0OTYzLDE0ODAwLDU5NDM1LDU5NDM2LDE1MTgyLDE1NDcwLDE1NTg0LDExOTQzLDU5NDQxLDU5NDQyLDExOTQ2LDE2NDcwLDE2NzM1LDExOTUwLDE3MjA3LDExOTU1''@;'; put 'put ''LDExOTU4LDExOTU5LDU5NDUxLDE3MzI5LDE3MzI0LDExOTYzLDE3MzczLDE3NjIyLDE4MDE3LDE3OTk2LDU5NDU5LDE4MjExLDE4MjE3LDE4MzAwLDE4MzE3LDExOTc4LDE4NzU5LDE4ODEwLDE4ODEzLDE4ODE4LDE4ODE5LDE4ODIxLDE4ODIyLDE4ODQ3LDE4ODQzLDE4ODcxLDE4ODcwLDU5''@;'; put 'put ''NDc2LDU5NDc3LDE5NjE5LDE5NjE1LDE5NjE2LDE5NjE3LDE5NTc1LDE5NjE4LDE5NzMxLDE5NzMyLDE5NzMzLDE5NzM0LDE5NzM1LDE5NzM2LDE5NzM3LDE5ODg2LDU5NDkyLDU4NDcyLDU4NDczLDU4NDc0LDU4NDc1LDU4NDc2LDU4NDc3LDU4NDc4LDU4NDc5LDU4NDgwLDU4NDgxLDU4NDgy''@;'; put 'put ''LDU4NDgzLDU4NDg0LDU4NDg1LDU4NDg2LDU4NDg3LDU4NDg4LDU4NDg5LDU4NDkwLDU4NDkxLDU4NDkyLDU4NDkzLDU4NDk0LDU4NDk1LDU4NDk2LDU4NDk3LDU4NDk4LDU4NDk5LDU4NTAwLDU4NTAxLDU4NTAyLDU4NTAzLDU4NTA0LDU4NTA1LDU4NTA2LDU4NTA3LDU4NTA4LDU4NTA5LDU4''@;'; put 'put ''NTEwLDU4NTExLDU4NTEyLDU4NTEzLDU4NTE0LDU4NTE1LDU4NTE2LDU4NTE3LDU4NTE4LDU4NTE5LDU4NTIwLDU4NTIxLDU4NTIyLDU4NTIzLDU4NTI0LDU4NTI1LDU4NTI2LDU4NTI3LDU4NTI4LDU4NTI5LDU4NTMwLDU4NTMxLDU4NTMyLDU4NTMzLDU4NTM0LDU4NTM1LDU4NTM2LDU4NTM3''@;'; put 'put ''LDU4NTM4LDU4NTM5LDU4NTQwLDU4NTQxLDU4NTQyLDU4NTQzLDU4NTQ0LDU4NTQ1LDU4NTQ2LDU4NTQ3LDU4NTQ4LDU4NTQ5LDU4NTUwLDU4NTUxLDU4NTUyLDU4NTUzLDU4NTU0LDU4NTU1LDU4NTU2LDU4NTU3LDU4NTU4LDU4NTU5LDU4NTYwLDU4NTYxLDU4NTYyLDU4NTYzLDU4NTY0LDU4''@;'; put 'put ''NTY1XSwiZ2IxODAzMC1yYW5nZXMiOltbMCwxMjhdLFszNiwxNjVdLFszOCwxNjldLFs0NSwxNzhdLFs1MCwxODRdLFs4MSwyMTZdLFs4OSwyMjZdLFs5NSwyMzVdLFs5NiwyMzhdLFsxMDAsMjQ0XSxbMTAzLDI0OF0sWzEwNCwyNTFdLFsxMDUsMjUzXSxbMTA5LDI1OF0sWzEyNiwyNzZdLFsx''@;'; put 'put ''MzMsMjg0XSxbMTQ4LDMwMF0sWzE3MiwzMjVdLFsxNzUsMzI5XSxbMTc5LDMzNF0sWzIwOCwzNjRdLFszMDYsNDYzXSxbMzA3LDQ2NV0sWzMwOCw0NjddLFszMDksNDY5XSxbMzEwLDQ3MV0sWzMxMSw0NzNdLFszMTIsNDc1XSxbMzEzLDQ3N10sWzM0MSw1MDZdLFs0MjgsNTk0XSxbNDQzLDYx''@;'; put 'put ''MF0sWzU0NCw3MTJdLFs1NDUsNzE2XSxbNTU4LDczMF0sWzc0MSw5MzBdLFs3NDIsOTM4XSxbNzQ5LDk2Ml0sWzc1MCw5NzBdLFs4MDUsMTAyNl0sWzgxOSwxMTA0XSxbODIwLDExMDZdLFs3OTIyLDgyMDldLFs3OTI0LDgyMTVdLFs3OTI1LDgyMThdLFs3OTI3LDgyMjJdLFs3OTM0LDgyMzFd''@;'; put 'put ''LFs3OTQzLDgyNDFdLFs3OTQ0LDgyNDRdLFs3OTQ1LDgyNDZdLFs3OTUwLDgyNTJdLFs4MDYyLDgzNjVdLFs4MTQ4LDg0NTJdLFs4MTQ5LDg0NTRdLFs4MTUyLDg0NThdLFs4MTY0LDg0NzFdLFs4MTc0LDg0ODJdLFs4MjM2LDg1NTZdLFs4MjQwLDg1NzBdLFs4MjYyLDg1OTZdLFs4MjY0LDg2''@;'; put 'put ''MDJdLFs4Mzc0LDg3MTNdLFs4MzgwLDg3MjBdLFs4MzgxLDg3MjJdLFs4Mzg0LDg3MjZdLFs4Mzg4LDg3MzFdLFs4MzkwLDg3MzddLFs4MzkyLDg3NDBdLFs4MzkzLDg3NDJdLFs4Mzk0LDg3NDhdLFs4Mzk2LDg3NTFdLFs4NDAxLDg3NjBdLFs4NDA2LDg3NjZdLFs4NDE2LDg3NzddLFs4NDE5''@;'; put 'put ''LDg3ODFdLFs4NDI0LDg3ODddLFs4NDM3LDg4MDJdLFs4NDM5LDg4MDhdLFs4NDQ1LDg4MTZdLFs4NDgyLDg4NTRdLFs4NDg1LDg4NThdLFs4NDk2LDg4NzBdLFs4NTIxLDg4OTZdLFs4NjAzLDg5NzldLFs4OTM2LDkzMjJdLFs4OTQ2LDkzNzJdLFs5MDQ2LDk1NDhdLFs5MDUwLDk1ODhdLFs5''@;'; put 'put ''MDYzLDk2MTZdLFs5MDY2LDk2MjJdLFs5MDc2LDk2MzRdLFs5MDkyLDk2NTJdLFs5MTAwLDk2NjJdLFs5MTA4LDk2NzJdLFs5MTExLDk2NzZdLFs5MTEzLDk2ODBdLFs5MTMxLDk3MDJdLFs5MTYyLDk3MzVdLFs5MTY0LDk3MzhdLFs5MjE4LDk3OTNdLFs5MjE5LDk3OTVdLFsxMTMyOSwxMTkw''@;'; put 'put ''Nl0sWzExMzMxLDExOTA5XSxbMTEzMzQsMTE5MTNdLFsxMTMzNiwxMTkxN10sWzExMzQ2LDExOTI4XSxbMTEzNjEsMTE5NDRdLFsxMTM2MywxMTk0N10sWzExMzY2LDExOTUxXSxbMTEzNzAsMTE5NTZdLFsxMTM3MiwxMTk2MF0sWzExMzc1LDExOTY0XSxbMTEzODksMTE5NzldLFsxMTY4Miwx''@;'; put 'put ''MjI4NF0sWzExNjg2LDEyMjkyXSxbMTE2ODcsMTIzMTJdLFsxMTY5MiwxMjMxOV0sWzExNjk0LDEyMzMwXSxbMTE3MTQsMTIzNTFdLFsxMTcxNiwxMjQzNl0sWzExNzIzLDEyNDQ3XSxbMTE3MjUsMTI1MzVdLFsxMTczMCwxMjU0M10sWzExNzM2LDEyNTg2XSxbMTE5ODIsMTI4NDJdLFsxMTk4''@;'; put 'put ''OSwxMjg1MF0sWzEyMTAyLDEyOTY0XSxbMTIzMzYsMTMyMDBdLFsxMjM0OCwxMzIxNV0sWzEyMzUwLDEzMjE4XSxbMTIzODQsMTMyNTNdLFsxMjM5MywxMzI2M10sWzEyMzk1LDEzMjY3XSxbMTIzOTcsMTMyNzBdLFsxMjUxMCwxMzM4NF0sWzEyNTUzLDEzNDI4XSxbMTI4NTEsMTM3MjddLFsx''@;'; put 'put ''Mjk2MiwxMzgzOV0sWzEyOTczLDEzODUxXSxbMTM3MzgsMTQ2MTddLFsxMzgyMywxNDcwM10sWzEzOTE5LDE0ODAxXSxbMTM5MzMsMTQ4MTZdLFsxNDA4MCwxNDk2NF0sWzE0Mjk4LDE1MTgzXSxbMTQ1ODUsMTU0NzFdLFsxNDY5OCwxNTU4NV0sWzE1NTgzLDE2NDcxXSxbMTU4NDcsMTY3MzZd''@;'; put 'put ''LFsxNjMxOCwxNzIwOF0sWzE2NDM0LDE3MzI1XSxbMTY0MzgsMTczMzBdLFsxNjQ4MSwxNzM3NF0sWzE2NzI5LDE3NjIzXSxbMTcxMDIsMTc5OTddLFsxNzEyMiwxODAxOF0sWzE3MzE1LDE4MjEyXSxbMTczMjAsMTgyMThdLFsxNzQwMiwxODMwMV0sWzE3NDE4LDE4MzE4XSxbMTc4NTksMTg3''@;'; put 'put ''NjBdLFsxNzkwOSwxODgxMV0sWzE3OTExLDE4ODE0XSxbMTc5MTUsMTg4MjBdLFsxNzkxNiwxODgyM10sWzE3OTM2LDE4ODQ0XSxbMTc5MzksMTg4NDhdLFsxNzk2MSwxODg3Ml0sWzE4NjY0LDE5NTc2XSxbMTg3MDMsMTk2MjBdLFsxODgxNCwxOTczOF0sWzE4OTYyLDE5ODg3XSxbMTkwNDMs''@;'; put 'put ''NDA4NzBdLFszMzQ2OSw1OTI0NF0sWzMzNDcwLDU5MzM2XSxbMzM0NzEsNTkzNjddLFszMzQ4NCw1OTQxM10sWzMzNDg1LDU5NDE3XSxbMzM0OTAsNTk0MjNdLFszMzQ5Nyw1OTQzMV0sWzMzNTAxLDU5NDM3XSxbMzM1MDUsNTk0NDNdLFszMzUxMyw1OTQ1Ml0sWzMzNTIwLDU5NDYwXSxbMzM1''@;'; put 'put ''MzYsNTk0NzhdLFszMzU1MCw1OTQ5M10sWzM3ODQ1LDYzNzg5XSxbMzc5MjEsNjM4NjZdLFszNzk0OCw2Mzg5NF0sWzM4MDI5LDYzOTc2XSxbMzgwMzgsNjM5ODZdLFszODA2NCw2NDAxNl0sWzM4MDY1LDY0MDE4XSxbMzgwNjYsNjQwMjFdLFszODA2OSw2NDAyNV0sWzM4MDc1LDY0MDM0XSxb''@;'; put 'put ''MzgwNzYsNjQwMzddLFszODA3OCw2NDA0Ml0sWzM5MTA4LDY1MDc0XSxbMzkxMDksNjUwOTNdLFszOTExMyw2NTEwN10sWzM5MTE0LDY1MTEyXSxbMzkxMTUsNjUxMjddLFszOTExNiw2NTEzMl0sWzM5MjY1LDY1Mzc1XSxbMzkzOTQsNjU1MTBdLFsxODllMyw2NTUzNl1dLGppczAyMDg6WzEy''@;'; put 'put ''Mjg4LDEyMjg5LDEyMjkwLDY1MjkyLDY1Mjk0LDEyNTM5LDY1MzA2LDY1MzA3LDY1MzExLDY1MjgxLDEyNDQzLDEyNDQ0LDE4MCw2NTM0NCwxNjgsNjUzNDIsNjU1MDcsNjUzNDMsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsODIx''@;'; put 'put ''Myw4MjA4LDY1Mjk1LDY1MzQwLDY1Mzc0LDg3NDEsNjUzNzIsODIzMCw4MjI5LDgyMTYsODIxNyw4MjIwLDgyMjEsNjUyODgsNjUyODksMTIzMDgsMTIzMDksNjUzMzksNjUzNDEsNjUzNzEsNjUzNzMsMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIz''@;'; put 'put ''MDQsMTIzMDUsNjUyOTEsNjUyOTMsMTc3LDIxNSwyNDcsNjUzMDksODgwMCw2NTMwOCw2NTMxMCw4ODA2LDg4MDcsODczNCw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjU1MDksNjUyODQsNjU1MDQsNjU1MDUsNjUyODUsNjUyODMsNjUyODYsNjUyOTAsNjUzMTIsMTY3LDk3''@;'; put 'put ''MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODI1MSwxMjMwNiw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzEyLDg3MTUs''@;'; put 'put ''ODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3NDMsODc0NCw2NTUwNiw4NjU4LDg2NjAsODcwNCw4NzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzM2''@;'; put 'put ''LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg0OTEsODI0MCw5ODM5LDk4MzcsOTgzNCw4MjI0LDgyMjUsMTgyLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''OTcxMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1''@;'; put 'put ''MzY3LDY1MzY4LDY1MzY5LDY1MzcwLG51bGwsbnVsbCxudWxsLG51bGwsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIz''@;'; put 'put ''NzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAs''@;'; put 'put ''MTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0''@;'; put 'put ''MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5''@;'; put 'put ''LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEy''@;'; put 'put ''NDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0''@;'; put 'put ''LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMs''@;'; put 'put ''OTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5''@;'; put 'put ''NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEw''@;'; put 'put ''NTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEw''@;'; put 'put ''NzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1''@;'; put 'put ''MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkz''@;'; put 'put ''MjQsOTMyNSw5MzI2LDkzMjcsOTMyOCw5MzI5LDkzMzAsOTMzMSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsMTMxMjksMTMwNzYsMTMwOTAsMTMxMzMsMTMwODAsMTMwOTUsMTMwNTksMTMxMTAsMTMxMzcsMTMxNDMsMTMwNjksMTMwOTQs''@;'; put 'put ''MTMwOTEsMTMwOTksMTMxMzAsMTMxMTUsMTMyMTIsMTMyMTMsMTMyMTQsMTMxOTgsMTMxOTksMTMyNTIsMTMyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEzMTc5LDEyMzE3LDEyMzE5LDg0NzAsMTMyNjEsODQ4MSwxMjk2NCwxMjk2NSwxMjk2NiwxMjk2Nywx''@;'; put 'put ''Mjk2OCwxMjg0OSwxMjg1MCwxMjg1NywxMzE4MiwxMzE4MSwxMzE4MCw4Nzg2LDg4MDEsODc0Nyw4NzUwLDg3MjEsODczMCw4ODY5LDg3MzYsODczNSw4ODk1LDg3NTcsODc0NSw4NzQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAxMjQsMjE3ODIsMjMwNDMsMzg0NjMsMjE2OTYsMjQ4NTksMjUzODQsMjMwMzAsMzY4OTgsMzM5MDksMzM1NjQsMzEzMTIsMjQ3NDYsMjU1NjksMjgxOTcsMjYwOTMsMzM4''@;'; put 'put ''OTQsMzM0NDYsMzk5MjUsMjY3NzEsMjIzMTEsMjYwMTcsMjUyMDEsMjM0NTEsMjI5OTIsMzQ0MjcsMzkxNTYsMzIwOTgsMzIxOTAsMzk4MjIsMjUxMTAsMzE5MDMsMzQ5OTksMjM0MzMsMjQyNDUsMjUzNTMsMjYyNjMsMjY2OTYsMzgzNDMsMzg3OTcsMjY0NDcsMjAxOTcsMjAyMzQsMjAzMDEs''@;'; put 'put ''MjAzODEsMjA1NTMsMjIyNTgsMjI4MzksMjI5OTYsMjMwNDEsMjM1NjEsMjQ3OTksMjQ4NDcsMjQ5NDQsMjYxMzEsMjY4ODUsMjg4NTgsMzAwMzEsMzAwNjQsMzEyMjcsMzIxNzMsMzIyMzksMzI5NjMsMzM4MDYsMzQ5MTUsMzU1ODYsMzY5NDksMzY5ODYsMjEzMDcsMjAxMTcsMjAxMzMsMjI0''@;'; put 'put ''OTUsMzI5NDYsMzcwNTcsMzA5NTksMTk5NjgsMjI3NjksMjgzMjIsMzY5MjAsMzEyODIsMzM1NzYsMzM0MTksMzk5ODMsMjA4MDEsMjEzNjAsMjE2OTMsMjE3MjksMjIyNDAsMjMwMzUsMjQzNDEsMzkxNTQsMjgxMzksMzI5OTYsMzQwOTMsMzg0OTgsMzg1MTIsMzg1NjAsMzg5MDcsMjE1MTUs''@;'; put 'put ''MjE0OTEsMjM0MzEsMjg4NzksMzI3MDEsMzY4MDIsMzg2MzIsMjEzNTksNDAyODQsMzE0MTgsMTk5ODUsMzA4NjcsMzMyNzYsMjgxOTgsMjIwNDAsMjE3NjQsMjc0MjEsMzQwNzQsMzk5OTUsMjMwMTMsMjE0MTcsMjgwMDYsMjk5MTYsMzgyODcsMjIwODIsMjAxMTMsMzY5MzksMzg2NDIsMzM2''@;'; put 'put ''MTUsMzkxODAsMjE0NzMsMjE5NDIsMjMzNDQsMjQ0MzMsMjYxNDQsMjYzNTUsMjY2MjgsMjc3MDQsMjc4OTEsMjc5NDUsMjk3ODcsMzA0MDgsMzEzMTAsMzg5NjQsMzM1MjEsMzQ5MDcsMzU0MjQsMzc2MTMsMjgwODIsMzAxMjMsMzA0MTAsMzkzNjUsMjQ3NDIsMzU1ODUsMzYyMzQsMzgzMjIs''@;'; put 'put ''MjcwMjIsMjE0MjEsMjA4NzAsMjIyOTAsMjI1NzYsMjI4NTIsMjM0NzYsMjQzMTAsMjQ2MTYsMjU1MTMsMjU1ODgsMjc4MzksMjg0MzYsMjg4MTQsMjg5NDgsMjkwMTcsMjkxNDEsMjk1MDMsMzIyNTcsMzMzOTgsMzM0ODksMzQxOTksMzY5NjAsMzc0NjcsNDAyMTksMjI2MzMsMjYwNDQsMjc3''@;'; put 'put ''MzgsMjk5ODksMjA5ODUsMjI4MzAsMjI4ODUsMjQ0NDgsMjQ1NDAsMjUyNzYsMjYxMDYsMjcxNzgsMjc0MzEsMjc1NzIsMjk1NzksMzI3MDUsMzUxNTgsNDAyMzYsNDAyMDYsNDA2NDQsMjM3MTMsMjc3OTgsMzM2NTksMjA3NDAsMjM2MjcsMjUwMTQsMzMyMjIsMjY3NDIsMjkyODEsMjAwNTcs''@;'; put 'put ''MjA0NzQsMjEzNjgsMjQ2ODEsMjgyMDEsMzEzMTEsMzg4OTksMTk5NzksMjEyNzAsMjAyMDYsMjAzMDksMjAyODUsMjAzODUsMjAzMzksMjExNTIsMjE0ODcsMjIwMjUsMjI3OTksMjMyMzMsMjM0NzgsMjM1MjEsMzExODUsMjYyNDcsMjY1MjQsMjY1NTAsMjc0NjgsMjc4MjcsMjg3NzksMjk2''@;'; put 'put ''MzQsMzExMTcsMzExNjYsMzEyOTIsMzE2MjMsMzM0NTcsMzM0OTksMzM1NDAsMzM2NTUsMzM3NzUsMzM3NDcsMzQ2NjIsMzU1MDYsMjIwNTcsMzYwMDgsMzY4MzgsMzY5NDIsMzg2ODYsMzQ0NDIsMjA0MjAsMjM3ODQsMjUxMDUsMjkyNzMsMzAwMTEsMzMyNTMsMzM0NjksMzQ1NTgsMzYwMzIs''@;'; put 'put ''Mzg1OTcsMzkxODcsMzkzODEsMjAxNzEsMjAyNTAsMzUyOTksMjIyMzgsMjI2MDIsMjI3MzAsMjQzMTUsMjQ1NTUsMjQ2MTgsMjQ3MjQsMjQ2NzQsMjUwNDAsMjUxMDYsMjUyOTYsMjU5MTMsMzk3NDUsMjYyMTQsMjY4MDAsMjgwMjMsMjg3ODQsMzAwMjgsMzAzNDIsMzIxMTcsMzM0NDUsMzQ4''@;'; put 'put ''MDksMzgyODMsMzg1NDIsMzU5OTcsMjA5NzcsMjExODIsMjI4MDYsMjE2ODMsMjM0NzUsMjM4MzAsMjQ5MzYsMjcwMTAsMjgwNzksMzA4NjEsMzM5OTUsMzQ5MDMsMzU0NDIsMzc3OTksMzk2MDgsMjgwMTIsMzkzMzYsMzQ1MjEsMjI0MzUsMjY2MjMsMzQ1MTAsMzczOTAsMjExMjMsMjIxNTEs''@;'; put 'put ''MjE1MDgsMjQyNzUsMjUzMTMsMjU3ODUsMjY2ODQsMjY2ODAsMjc1NzksMjk1NTQsMzA5MDYsMzEzMzksMzUyMjYsMzUyODIsMzYyMDMsMzY2MTEsMzcxMDEsMzgzMDcsMzg1NDgsMzg3NjEsMjMzOTgsMjM3MzEsMjcwMDUsMzg5ODksMzg5OTAsMjU0OTksMzE1MjAsMjcxNzksMjcyNjMsMjY4''@;'; put 'put ''MDYsMzk5NDksMjg1MTEsMjExMDYsMjE5MTcsMjQ2ODgsMjUzMjQsMjc5NjMsMjgxNjcsMjgzNjksMzM4ODMsMzUwODgsMzY2NzYsMTk5ODgsMzk5OTMsMjE0OTQsMjY5MDcsMjcxOTQsMzg3ODgsMjY2NjYsMjA4MjgsMzE0MjcsMzM5NzAsMzczNDAsMzc3NzIsMjIxMDcsNDAyMzIsMjY2NTgs''@;'; put 'put ''MzM1NDEsMzM4NDEsMzE5MDksMjFlMywzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAxNCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1''@;'; put 'put ''NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3NywzMjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4MiwzMzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwz''@;'; put 'put ''ODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEwNywzODU5MywzODkyOSwzODk5NiwzOWUzLDIwMjI1LDIwMjM4LDIxMzYxLDIxOTE2LDIyMTIwLDIyNTIyLDIyODU1''@;'; put 'put ''LDIzMzA1LDIzNDkyLDIzNjk2LDI0MDc2LDI0MTkwLDI0NTI0LDI1NTgyLDI2NDI2LDI2MDcxLDI2MDgyLDI2Mzk5LDI2ODI3LDI2ODIwLDI3MjMxLDI0MTEyLDI3NTg5LDI3NjcxLDI3NzczLDMwMDc5LDMxMDQ4LDIzMzk1LDMxMjMyLDMyZTMsMjQ1MDksMzUyMTUsMzUzNTIsMzYwMjAsMzYy''@;'; put 'put ''MTUsMzY1NTYsMzY2MzcsMzkxMzgsMzk0MzgsMzk3NDAsMjAwOTYsMjA2MDUsMjA3MzYsMjI5MzEsMjM0NTIsMjUxMzUsMjUyMTYsMjU4MzYsMjc0NTAsMjkzNDQsMzAwOTcsMzEwNDcsMzI2ODEsMzQ4MTEsMzU1MTYsMzU2OTYsMjU1MTYsMzM3MzgsMzg4MTYsMjE1MTMsMjE1MDcsMjE5MzEs''@;'; put 'put ''MjY3MDgsMjcyMjQsMzU0NDAsMzA3NTksMjY0ODUsNDA2NTMsMjEzNjQsMjM0NTgsMzMwNTAsMzQzODQsMzY4NzAsMTk5OTIsMjAwMzcsMjAxNjcsMjAyNDEsMjE0NTAsMjE1NjAsMjM0NzAsMjQzMzksMjQ2MTMsMjU5MzcsMjY0MjksMjc3MTQsMjc3NjIsMjc4NzUsMjg3OTIsMjk2OTksMzEz''@;'; put 'put ''NTAsMzE0MDYsMzE0OTYsMzIwMjYsMzE5OTgsMzIxMDIsMjYwODcsMjkyNzUsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjUzMTIsMjUzNjksMjgxOTIsMzQzOTQsMzUzNzcsMzYzMTcsMzc2MjQsMjg0MTcsMzExNDIsMzk3NzAsMjAxMzYsMjAxMzksMjAxNDAsMjAzNzksMjAzODQsMjA2ODks''@;'; put 'put ''MjA4MDcsMzE0NzgsMjA4NDksMjA5ODIsMjEzMzIsMjEyODEsMjEzNzUsMjE0ODMsMjE5MzIsMjI2NTksMjM3NzcsMjQzNzUsMjQzOTQsMjQ2MjMsMjQ2NTYsMjQ2ODUsMjUzNzUsMjU5NDUsMjcyMTEsMjc4NDEsMjkzNzgsMjk0MjEsMzA3MDMsMzMwMTYsMzMwMjksMzMyODgsMzQxMjYsMzcx''@;'; put 'put ''MTEsMzc4NTcsMzg5MTEsMzkyNTUsMzk1MTQsMjAyMDgsMjA5NTcsMjM1OTcsMjYyNDEsMjY5ODksMjM2MTYsMjYzNTQsMjY5OTcsMjk1NzcsMjY3MDQsMzE4NzMsMjA2NzcsMjEyMjAsMjIzNDMsMjQwNjIsMzc2NzAsMjYwMjAsMjc0MjcsMjc0NTMsMjk3NDgsMzExMDUsMzExNjUsMzE1NjMs''@;'; put 'put ''MzIyMDIsMzM0NjUsMzM3NDAsMzQ5NDMsMzUxNjcsMzU2NDEsMzY4MTcsMzczMjksMjE1MzUsMzc1MDQsMjAwNjEsMjA1MzQsMjE0NzcsMjEzMDYsMjkzOTksMjk1OTAsMzA2OTcsMzM1MTAsMzY1MjcsMzkzNjYsMzkzNjgsMzkzNzgsMjA4NTUsMjQ4NTgsMzQzOTgsMjE5MzYsMzEzNTQsMjA1''@;'; put 'put ''OTgsMjM1MDcsMzY5MzUsMzg1MzMsMjAwMTgsMjczNTUsMzczNTEsMjM2MzMsMjM2MjQsMjU0OTYsMzEzOTEsMjc3OTUsMzg3NzIsMzY3MDUsMzE0MDIsMjkwNjYsMzg1MzYsMzE4NzQsMjY2NDcsMzIzNjgsMjY3MDUsMzc3NDAsMjEyMzQsMjE1MzEsMzQyMTksMzUzNDcsMzI2NzYsMzY1NTcs''@;'; put 'put ''MzcwODksMjEzNTAsMzQ5NTIsMzEwNDEsMjA0MTgsMjA2NzAsMjEwMDksMjA4MDQsMjE4NDMsMjIzMTcsMjk2NzQsMjI0MTEsMjI4NjUsMjQ0MTgsMjQ0NTIsMjQ2OTMsMjQ5NTAsMjQ5MzUsMjUwMDEsMjU1MjIsMjU2NTgsMjU5NjQsMjYyMjMsMjY2OTAsMjgxNzksMzAwNTQsMzEyOTMsMzE5''@;'; put 'put ''OTUsMzIwNzYsMzIxNTMsMzIzMzEsMzI2MTksMzM1NTAsMzM2MTAsMzQ1MDksMzUzMzYsMzU0MjcsMzU2ODYsMzY2MDUsMzg5MzgsNDAzMzUsMzM0NjQsMzY4MTQsMzk5MTIsMjExMjcsMjUxMTksMjU3MzEsMjg2MDgsMzg1NTMsMjY2ODksMjA2MjUsMjc0MjQsMjc3NzAsMjg1MDAsMzEzNDgs''@;'; put 'put ''MzIwODAsMzQ4ODAsMzUzNjMsMjYzNzYsMjAyMTQsMjA1MzcsMjA1MTgsMjA1ODEsMjA4NjAsMjEwNDgsMjEwOTEsMjE5MjcsMjIyODcsMjI1MzMsMjMyNDQsMjQzMTQsMjUwMTAsMjUwODAsMjUzMzEsMjU0NTgsMjY5MDgsMjcxNzcsMjkzMDksMjkzNTYsMjk0ODYsMzA3NDAsMzA4MzEsMzIx''@;'; put 'put ''MjEsMzA0NzYsMzI5MzcsMzUyMTEsMzU2MDksMzYwNjYsMzY1NjIsMzY5NjMsMzc3NDksMzg1MjIsMzg5OTcsMzk0NDMsNDA1NjgsMjA4MDMsMjE0MDcsMjE0MjcsMjQxODcsMjQzNTgsMjgxODcsMjgzMDQsMjk1NzIsMjk2OTQsMzIwNjcsMzMzMzUsMzUzMjgsMzU1NzgsMzg0ODAsMjAwNDYs''@;'; put 'put ''MjA0OTEsMjE0NzYsMjE2MjgsMjIyNjYsMjI5OTMsMjMzOTYsMjQwNDksMjQyMzUsMjQzNTksMjUxNDQsMjU5MjUsMjY1NDMsMjgyNDYsMjkzOTIsMzE5NDYsMzQ5OTYsMzI5MjksMzI5OTMsMzM3NzYsMzQzODIsMzU0NjMsMzYzMjgsMzc0MzEsMzg1OTksMzkwMTUsNDA3MjMsMjAxMTYsMjAx''@;'; put 'put ''MTQsMjAyMzcsMjEzMjAsMjE1NzcsMjE1NjYsMjMwODcsMjQ0NjAsMjQ0ODEsMjQ3MzUsMjY3OTEsMjcyNzgsMjk3ODYsMzA4NDksMzU0ODYsMzU0OTIsMzU3MDMsMzcyNjQsMjAwNjIsMzk4ODEsMjAxMzIsMjAzNDgsMjAzOTksMjA1MDUsMjA1MDIsMjA4MDksMjA4NDQsMjExNTEsMjExNzcs''@;'; put 'put ''MjEyNDYsMjE0MDIsMjE0NzUsMjE1MjEsMjE1MTgsMjE4OTcsMjIzNTMsMjI0MzQsMjI5MDksMjMzODAsMjMzODksMjM0MzksMjQwMzcsMjQwMzksMjQwNTUsMjQxODQsMjQxOTUsMjQyMTgsMjQyNDcsMjQzNDQsMjQ2NTgsMjQ5MDgsMjUyMzksMjUzMDQsMjU1MTEsMjU5MTUsMjYxMTQsMjYx''@;'; put 'put ''NzksMjYzNTYsMjY0NzcsMjY2NTcsMjY3NzUsMjcwODMsMjc3NDMsMjc5NDYsMjgwMDksMjgyMDcsMjgzMTcsMzAwMDIsMzAzNDMsMzA4MjgsMzEyOTUsMzE5NjgsMzIwMDUsMzIwMjQsMzIwOTQsMzIxNzcsMzI3ODksMzI3NzEsMzI5NDMsMzI5NDUsMzMxMDgsMzMxNjcsMzMzMjIsMzM2MTgs''@;'; put 'put ''MzQ4OTIsMzQ5MTMsMzU2MTEsMzYwMDIsMzYwOTIsMzcwNjYsMzcyMzcsMzc0ODksMzA3ODMsMzc2MjgsMzgzMDgsMzg0NzcsMzg5MTcsMzkzMjEsMzk2NDAsNDAyNTEsMjEwODMsMjExNjMsMjE0OTUsMjE1MTIsMjI3NDEsMjUzMzUsMjg2NDAsMzU5NDYsMzY3MDMsNDA2MzMsMjA4MTEsMjEw''@;'; put 'put ''NTEsMjE1NzgsMjIyNjksMzEyOTYsMzcyMzksNDAyODgsNDA2NTgsMjk1MDgsMjg0MjUsMzMxMzYsMjk5NjksMjQ1NzMsMjQ3OTQsMzk1OTIsMjk0MDMsMzY3OTYsMjc0OTIsMzg5MTUsMjAxNzAsMjIyNTYsMjIzNzIsMjI3MTgsMjMxMzAsMjQ2ODAsMjUwMzEsMjYxMjcsMjYxMTgsMjY2ODEs''@;'; put 'put ''MjY4MDEsMjgxNTEsMzAxNjUsMzIwNTgsMzMzOTAsMzk3NDYsMjAxMjMsMjAzMDQsMjE0NDksMjE3NjYsMjM5MTksMjQwMzgsMjQwNDYsMjY2MTksMjc4MDEsMjk4MTEsMzA3MjIsMzU0MDgsMzc3ODIsMzUwMzksMjIzNTIsMjQyMzEsMjUzODcsMjA2NjEsMjA2NTIsMjA4NzcsMjYzNjgsMjE3''@;'; put 'put ''MDUsMjI2MjIsMjI5NzEsMjM0NzIsMjQ0MjUsMjUxNjUsMjU1MDUsMjY2ODUsMjc1MDcsMjgxNjgsMjg3OTcsMzczMTksMjkzMTIsMzA3NDEsMzA3NTgsMzEwODUsMjU5OTgsMzIwNDgsMzM3NTYsMzUwMDksMzY2MTcsMzg1NTUsMjEwOTIsMjIzMTIsMjY0NDgsMzI2MTgsMzYwMDEsMjA5MTYs''@;'; put 'put ''MjIzMzgsMzg0NDIsMjI1ODYsMjcwMTgsMzI5NDgsMjE2ODIsMjM4MjIsMjI1MjQsMzA4NjksNDA0NDIsMjAzMTYsMjEwNjYsMjE2NDMsMjU2NjIsMjYxNTIsMjYzODgsMjY2MTMsMzEzNjQsMzE1NzQsMzIwMzQsMzc2NzksMjY3MTYsMzk4NTMsMzE1NDUsMjEyNzMsMjA4NzQsMjEwNDcsMjM1''@;'; put 'put ''MTksMjUzMzQsMjU3NzQsMjU4MzAsMjY0MTMsMjc1NzgsMzQyMTcsMzg2MDksMzAzNTIsMzk4OTQsMjU0MjAsMzc2MzgsMzk4NTEsMzAzOTksMjYxOTQsMTk5NzcsMjA2MzIsMjE0NDIsMjM2NjUsMjQ4MDgsMjU3NDYsMjU5NTUsMjY3MTksMjkxNTgsMjk2NDIsMjk5ODcsMzE2MzksMzIzODYs''@;'; put 'put ''MzQ0NTMsMzU3MTUsMzYwNTksMzcyNDAsMzkxODQsMjYwMjgsMjYyODMsMjc1MzEsMjAxODEsMjAxODAsMjAyODIsMjAzNTEsMjEwNTAsMjE0OTYsMjE0OTAsMjE5ODcsMjIyMzUsMjI3NjMsMjI5ODcsMjI5ODUsMjMwMzksMjMzNzYsMjM2MjksMjQwNjYsMjQxMDcsMjQ1MzUsMjQ2MDUsMjUz''@;'; put 'put ''NTEsMjU5MDMsMjMzODgsMjYwMzEsMjYwNDUsMjYwODgsMjY1MjUsMjc0OTAsMjc1MTUsMjc2NjMsMjk1MDksMzEwNDksMzExNjksMzE5OTIsMzIwMjUsMzIwNDMsMzI5MzAsMzMwMjYsMzMyNjcsMzUyMjIsMzU0MjIsMzU0MzMsMzU0MzAsMzU0NjgsMzU1NjYsMzYwMzksMzYwNjAsMzg2MDQs''@;'; put 'put ''MzkxNjQsMjc1MDMsMjAxMDcsMjAyODQsMjAzNjUsMjA4MTYsMjMzODMsMjM1NDYsMjQ5MDQsMjUzNDUsMjYxNzgsMjc0MjUsMjgzNjMsMjc4MzUsMjkyNDYsMjk4ODUsMzAxNjQsMzA5MTMsMzEwMzQsMzI3ODAsMzI4MTksMzMyNTgsMzM5NDAsMzY3NjYsMjc3MjgsNDA1NzUsMjQzMzUsMzU2''@;'; put 'put ''NzIsNDAyMzUsMzE0ODIsMzY2MDAsMjM0MzcsMzg2MzUsMTk5NzEsMjE0ODksMjI1MTksMjI4MzMsMjMyNDEsMjM0NjAsMjQ3MTMsMjgyODcsMjg0MjIsMzAxNDIsMzYwNzQsMjM0NTUsMzQwNDgsMzE3MTIsMjA1OTQsMjY2MTIsMzM0MzcsMjM2NDksMzQxMjIsMzIyODYsMzMyOTQsMjA4ODks''@;'; put 'put ''MjM1NTYsMjU0NDgsMzYxOTgsMjYwMTIsMjkwMzgsMzEwMzgsMzIwMjMsMzI3NzMsMzU2MTMsMzY1NTQsMzY5NzQsMzQ1MDMsMzcwMzQsMjA1MTEsMjEyNDIsMjM2MTAsMjY0NTEsMjg3OTYsMjkyMzcsMzcxOTYsMzczMjAsMzc2NzUsMzM1MDksMjM0OTAsMjQzNjksMjQ4MjUsMjAwMjcsMjE0''@;'; put 'put ''NjIsMjM0MzIsMjUxNjMsMjY0MTcsMjc1MzAsMjk0MTcsMjk2NjQsMzEyNzgsMzMxMzEsMzYyNTksMzcyMDIsMzkzMTgsMjA3NTQsMjE0NjMsMjE2MTAsMjM1NTEsMjU0ODAsMjcxOTMsMzIxNzIsMzg2NTYsMjIyMzQsMjE0NTQsMjE2MDgsMjM0NDcsMjM2MDEsMjQwMzAsMjA0NjIsMjQ4MzMs''@;'; put 'put ''MjUzNDIsMjc5NTQsMzExNjgsMzExNzksMzIwNjYsMzIzMzMsMzI3MjIsMzMyNjEsMzMzMTEsMzM5MzYsMzQ4ODYsMzUxODYsMzU3MjgsMzY0NjgsMzY2NTUsMzY5MTMsMzcxOTUsMzcyMjgsMzg1OTgsMzcyNzYsMjAxNjAsMjAzMDMsMjA4MDUsMjEzMTMsMjQ0NjcsMjUxMDIsMjY1ODAsMjc3''@;'; put 'put ''MTMsMjgxNzEsMjk1MzksMzIyOTQsMzczMjUsMzc1MDcsMjE0NjAsMjI4MDksMjM0ODcsMjgxMTMsMzEwNjksMzIzMDIsMzE4OTksMjI2NTQsMjkwODcsMjA5ODYsMzQ4OTksMzY4NDgsMjA0MjYsMjM4MDMsMjYxNDksMzA2MzYsMzE0NTksMzMzMDgsMzk0MjMsMjA5MzQsMjQ0OTAsMjYwOTIs''@;'; put 'put ''MjY5OTEsMjc1MjksMjgxNDcsMjgzMTAsMjg1MTYsMzA0NjIsMzIwMjAsMjQwMzMsMzY5ODEsMzcyNTUsMzg5MTgsMjA5NjYsMjEwMjEsMjUxNTIsMjYyNTcsMjYzMjksMjgxODYsMjQyNDYsMzIyMTAsMzI2MjYsMjYzNjAsMzQyMjMsMzQyOTUsMzU1NzYsMjExNjEsMjE0NjUsMjI4OTksMjQy''@;'; put 'put ''MDcsMjQ0NjQsMjQ2NjEsMzc2MDQsMzg1MDAsMjA2NjMsMjA3NjcsMjEyMTMsMjEyODAsMjEzMTksMjE0ODQsMjE3MzYsMjE4MzAsMjE4MDksMjIwMzksMjI4ODgsMjI5NzQsMjMxMDAsMjM0NzcsMjM1NTgsMjM1NjcsMjM1NjksMjM1NzgsMjQxOTYsMjQyMDIsMjQyODgsMjQ0MzIsMjUyMTUs''@;'; put 'put ''MjUyMjAsMjUzMDcsMjU0ODQsMjU0NjMsMjYxMTksMjYxMjQsMjYxNTcsMjYyMzAsMjY0OTQsMjY3ODYsMjcxNjcsMjcxODksMjc4MzYsMjgwNDAsMjgxNjksMjgyNDgsMjg5ODgsMjg5NjYsMjkwMzEsMzAxNTEsMzA0NjUsMzA4MTMsMzA5NzcsMzEwNzcsMzEyMTYsMzE0NTYsMzE1MDUsMzE5''@;'; put 'put ''MTEsMzIwNTcsMzI5MTgsMzM3NTAsMzM5MzEsMzQxMjEsMzQ5MDksMzUwNTksMzUzNTksMzUzODgsMzU0MTIsMzU0NDMsMzU5MzcsMzYwNjIsMzcyODQsMzc0NzgsMzc3NTgsMzc5MTIsMzg1NTYsMzg4MDgsMTk5NzgsMTk5NzYsMTk5OTgsMjAwNTUsMjA4ODcsMjExMDQsMjI0NzgsMjI1ODAs''@;'; put 'put ''MjI3MzIsMjMzMzAsMjQxMjAsMjQ3NzMsMjU4NTQsMjY0NjUsMjY0NTQsMjc5NzIsMjkzNjYsMzAwNjcsMzEzMzEsMzM5NzYsMzU2OTgsMzczMDQsMzc2NjQsMjIwNjUsMjI1MTYsMzkxNjYsMjUzMjUsMjY4OTMsMjc1NDIsMjkxNjUsMzIzNDAsMzI4ODcsMzMzOTQsMzUzMDIsMzkxMzUsMzQ2''@;'; put 'put ''NDUsMzY3ODUsMjM2MTEsMjAyODAsMjA0NDksMjA0MDUsMjE3NjcsMjMwNzIsMjM1MTcsMjM1MjksMjQ1MTUsMjQ5MTAsMjUzOTEsMjYwMzIsMjYxODcsMjY4NjIsMjcwMzUsMjgwMjQsMjgxNDUsMzAwMDMsMzAxMzcsMzA0OTUsMzEwNzAsMzEyMDYsMzIwNTEsMzMyNTEsMzM0NTUsMzQyMTgs''@;'; put 'put ''MzUyNDIsMzUzODYsMzY1MjMsMzY3NjMsMzY5MTQsMzczNDEsMzg2NjMsMjAxNTQsMjAxNjEsMjA5OTUsMjI2NDUsMjI3NjQsMjM1NjMsMjk5NzgsMjM2MTMsMzMxMDIsMzUzMzgsMzY4MDUsMzg0OTksMzg3NjUsMzE1MjUsMzU1MzUsMzg5MjAsMzcyMTgsMjIyNTksMjE0MTYsMzY4ODcsMjE1''@;'; put 'put ''NjEsMjI0MDIsMjQxMDEsMjU1MTIsMjc3MDAsMjg4MTAsMzA1NjEsMzE4ODMsMzI3MzYsMzQ5MjgsMzY5MzAsMzcyMDQsMzc2NDgsMzc2NTYsMzg1NDMsMjk3OTAsMzk2MjAsMjM4MTUsMjM5MTMsMjU5NjgsMjY1MzAsMzYyNjQsMzg2MTksMjU0NTQsMjY0NDEsMjY5MDUsMzM3MzMsMzg5MzUs''@;'; put 'put ''Mzg1OTIsMzUwNzAsMjg1NDgsMjU3MjIsMjM1NDQsMTk5OTAsMjg3MTYsMzAwNDUsMjYxNTksMjA5MzIsMjEwNDYsMjEyMTgsMjI5OTUsMjQ0NDksMjQ2MTUsMjUxMDQsMjU5MTksMjU5NzIsMjYxNDMsMjYyMjgsMjY4NjYsMjY2NDYsMjc0OTEsMjgxNjUsMjkyOTgsMjk5ODMsMzA0MjcsMzE5''@;'; put 'put ''MzQsMzI4NTQsMjI3NjgsMzUwNjksMzUxOTksMzU0ODgsMzU0NzUsMzU1MzEsMzY4OTMsMzcyNjYsMzg3MzgsMzg3NDUsMjU5OTMsMzEyNDYsMzMwMzAsMzg1ODcsMjQxMDksMjQ3OTYsMjUxMTQsMjYwMjEsMjYxMzIsMjY1MTIsMzA3MDcsMzEzMDksMzE4MjEsMzIzMTgsMzMwMzQsMzYwMTIs''@;'; put 'put ''MzYxOTYsMzYzMjEsMzY0NDcsMzA4ODksMjA5OTksMjUzMDUsMjU1MDksMjU2NjYsMjUyNDAsMzUzNzMsMzEzNjMsMzE2ODAsMzU1MDAsMzg2MzQsMzIxMTgsMzMyOTIsMzQ2MzMsMjAxODUsMjA4MDgsMjEzMTUsMjEzNDQsMjM0NTksMjM1NTQsMjM1NzQsMjQwMjksMjUxMjYsMjUxNTksMjU3''@;'; put 'put ''NzYsMjY2NDMsMjY2NzYsMjc4NDksMjc5NzMsMjc5MjcsMjY1NzksMjg1MDgsMjkwMDYsMjkwNTMsMjYwNTksMzEzNTksMzE2NjEsMzIyMTgsMzIzMzAsMzI2ODAsMzMxNDYsMzMzMDcsMzMzMzcsMzQyMTQsMzU0MzgsMzYwNDYsMzYzNDEsMzY5ODQsMzY5ODMsMzc1NDksMzc1MjEsMzgyNzUs''@;'; put 'put ''Mzk4NTQsMjEwNjksMjE4OTIsMjg0NzIsMjg5ODIsMjA4NDAsMzExMDksMzIzNDEsMzMyMDMsMzE5NTAsMjIwOTIsMjI2MDksMjM3MjAsMjU1MTQsMjYzNjYsMjYzNjUsMjY5NzAsMjk0MDEsMzAwOTUsMzAwOTQsMzA5OTAsMzEwNjIsMzExOTksMzE4OTUsMzIwMzIsMzIwNjgsMzQzMTEsMzUz''@;'; put 'put ''ODAsMzg0NTksMzY5NjEsNDA3MzYsMjA3MTEsMjExMDksMjE0NTIsMjE0NzQsMjA0ODksMjE5MzAsMjI3NjYsMjI4NjMsMjkyNDUsMjM0MzUsMjM2NTIsMjEyNzcsMjQ4MDMsMjQ4MTksMjU0MzYsMjU0NzUsMjU0MDcsMjU1MzEsMjU4MDUsMjYwODksMjYzNjEsMjQwMzUsMjcwODUsMjcxMzMs''@;'; put 'put ''Mjg0MzcsMjkxNTcsMjAxMDUsMzAxODUsMzA0NTYsMzEzNzksMzE5NjcsMzIyMDcsMzIxNTYsMzI4NjUsMzM2MDksMzM2MjQsMzM5MDAsMzM5ODAsMzQyOTksMzUwMTMsMzYyMDgsMzY4NjUsMzY5NzMsMzc3ODMsMzg2ODQsMzk0NDIsMjA2ODcsMjI2NzksMjQ5NzQsMzMyMzUsMzQxMDEsMzYx''@;'; put 'put ''MDQsMzY4OTYsMjA0MTksMjA1OTYsMjEwNjMsMjEzNjMsMjQ2ODcsMjU0MTcsMjY0NjMsMjgyMDQsMzYyNzUsMzY4OTUsMjA0MzksMjM2NDYsMzYwNDIsMjYwNjMsMzIxNTQsMjEzMzAsMzQ5NjYsMjA4NTQsMjU1MzksMjMzODQsMjM0MDMsMjM1NjIsMjU2MTMsMjY0NDksMzY5NTYsMjAxODIs''@;'; put 'put ''MjI4MTAsMjI4MjYsMjc3NjAsMzU0MDksMjE4MjIsMjI1NDksMjI5NDksMjQ4MTYsMjUxNzEsMjY1NjEsMzMzMzMsMjY5NjUsMzg0NjQsMzkzNjQsMzk0NjQsMjAzMDcsMjI1MzQsMjM1NTAsMzI3ODQsMjM3MjksMjQxMTEsMjQ0NTMsMjQ2MDgsMjQ5MDcsMjUxNDAsMjYzNjcsMjc4ODgsMjgz''@;'; put 'put ''ODIsMzI5NzQsMzMxNTEsMzM0OTIsMzQ5NTUsMzYwMjQsMzY4NjQsMzY5MTAsMzg1MzgsNDA2NjcsMzk4OTksMjAxOTUsMjE0ODgsMjI4MjMsMzE1MzIsMzcyNjEsMzg5ODgsNDA0NDEsMjgzODEsMjg3MTEsMjEzMzEsMjE4MjgsMjM0MjksMjUxNzYsMjUyNDYsMjUyOTksMjc4MTAsMjg2NTUs''@;'; put 'put ''Mjk3MzAsMzUzNTEsMzc5NDQsMjg2MDksMzU1ODIsMzM1OTIsMjA5NjcsMzQ1NTIsMjE0ODIsMjE0ODEsMjAyOTQsMzY5NDgsMzY3ODQsMjI4OTAsMzMwNzMsMjQwNjEsMzE0NjYsMzY3OTksMjY4NDIsMzU4OTUsMjk0MzIsNDAwMDgsMjcxOTcsMzU1MDQsMjAwMjUsMjEzMzYsMjIwMjIsMjIz''@;'; put 'put ''NzQsMjUyODUsMjU1MDYsMjYwODYsMjc0NzAsMjgxMjksMjgyNTEsMjg4NDUsMzA3MDEsMzE0NzEsMzE2NTgsMzIxODcsMzI4MjksMzI5NjYsMzQ1MDcsMzU0NzcsMzc3MjMsMjIyNDMsMjI3MjcsMjQzODIsMjYwMjksMjYyNjIsMjcyNjQsMjc1NzMsMzAwMDcsMzU1MjcsMjA1MTYsMzA2OTMs''@;'; put 'put ''MjIzMjAsMjQzNDcsMjQ2NzcsMjYyMzQsMjc3NDQsMzAxOTYsMzEyNTgsMzI2MjIsMzMyNjgsMzQ1ODQsMzY5MzMsMzkzNDcsMzE2ODksMzAwNDQsMzE0ODEsMzE1NjksMzM5ODgsMzY4ODAsMzEyMDksMzEzNzgsMzM1OTAsMjMyNjUsMzA1MjgsMjAwMTMsMjAyMTAsMjM0NDksMjQ1NDQsMjUy''@;'; put 'put ''NzcsMjYxNzIsMjY2MDksMjc4ODAsMzQ0MTEsMzQ5MzUsMzUzODcsMzcxOTgsMzc2MTksMzkzNzYsMjcxNTksMjg3MTAsMjk0ODIsMzM1MTEsMzM4NzksMzYwMTUsMTk5NjksMjA4MDYsMjA5MzksMjE4OTksMjM1NDEsMjQwODYsMjQxMTUsMjQxOTMsMjQzNDAsMjQzNzMsMjQ0MjcsMjQ1MDAs''@;'; put 'put ''MjUwNzQsMjUzNjEsMjYyNzQsMjYzOTcsMjg1MjYsMjkyNjYsMzAwMTAsMzA1MjIsMzI4ODQsMzMwODEsMzMxNDQsMzQ2NzgsMzU1MTksMzU1NDgsMzYyMjksMzYzMzksMzc1MzAsMzgyNjMsMzg5MTQsNDAxNjUsMjExODksMjU0MzEsMzA0NTIsMjYzODksMjc3ODQsMjk2NDUsMzYwMzUsMzc4''@;'; put 'put ''MDYsMzg1MTUsMjc5NDEsMjI2ODQsMjY4OTQsMjcwODQsMzY4NjEsMzc3ODYsMzAxNzEsMzY4OTAsMjI2MTgsMjY2MjYsMjU1MjQsMjcxMzEsMjAyOTEsMjg0NjAsMjY1ODQsMzY3OTUsMzQwODYsMzIxODAsMzc3MTYsMjY5NDMsMjg1MjgsMjIzNzgsMjI3NzUsMjMzNDAsMzIwNDQsMjkyMjYs''@;'; put 'put ''MjE1MTQsMzczNDcsNDAzNzIsMjAxNDEsMjAzMDIsMjA1NzIsMjA1OTcsMjEwNTksMzU5OTgsMjE1NzYsMjI1NjQsMjM0NTAsMjQwOTMsMjQyMTMsMjQyMzcsMjQzMTEsMjQzNTEsMjQ3MTYsMjUyNjksMjU0MDIsMjU1NTIsMjY3OTksMjc3MTIsMzA4NTUsMzExMTgsMzEyNDMsMzIyMjQsMzMz''@;'; put 'put ''NTEsMzUzMzAsMzU1NTgsMzY0MjAsMzY4ODMsMzcwNDgsMzcxNjUsMzczMzYsNDA3MTgsMjc4NzcsMjU2ODgsMjU4MjYsMjU5NzMsMjg0MDQsMzAzNDAsMzE1MTUsMzY5NjksMzc4NDEsMjgzNDYsMjE3NDYsMjQ1MDUsMjU3NjQsMzY2ODUsMzY4NDUsMzc0NDQsMjA4NTYsMjI2MzUsMjI4MjUs''@;'; put 'put ''MjM2MzcsMjQyMTUsMjgxNTUsMzIzOTksMjk5ODAsMzYwMjgsMzY1NzgsMzkwMDMsMjg4NTcsMjAyNTMsMjc1ODMsMjg1OTMsM2U0LDM4NjUxLDIwODE0LDIxNTIwLDIyNTgxLDIyNjE1LDIyOTU2LDIzNjQ4LDI0NDY2LDI2MDA3LDI2NDYwLDI4MTkzLDMwMzMxLDMzNzU5LDM2MDc3LDM2ODg0''@;'; put 'put ''LDM3MTE3LDM3NzA5LDMwNzU3LDMwNzc4LDIxMTYyLDI0MjMwLDIyMzAzLDIyOTAwLDI0NTk0LDIwNDk4LDIwODI2LDIwOTA4LDIwOTQxLDIwOTkyLDIxNzc2LDIyNjEyLDIyNjE2LDIyODcxLDIzNDQ1LDIzNzk4LDIzOTQ3LDI0NzY0LDI1MjM3LDI1NjQ1LDI2NDgxLDI2NjkxLDI2ODEyLDI2''@;'; put 'put ''ODQ3LDMwNDIzLDI4MTIwLDI4MjcxLDI4MDU5LDI4NzgzLDI5MTI4LDI0NDAzLDMwMTY4LDMxMDk1LDMxNTYxLDMxNTcyLDMxNTcwLDMxOTU4LDMyMTEzLDIxMDQwLDMzODkxLDM0MTUzLDM0Mjc2LDM1MzQyLDM1NTg4LDM1OTEwLDM2MzY3LDM2ODY3LDM2ODc5LDM3OTEzLDM4NTE4LDM4OTU3''@;'; put 'put ''LDM5NDcyLDM4MzYwLDIwNjg1LDIxMjA1LDIxNTE2LDIyNTMwLDIzNTY2LDI0OTk5LDI1NzU4LDI3OTM0LDMwNjQzLDMxNDYxLDMzMDEyLDMzNzk2LDM2OTQ3LDM3NTA5LDIzNzc2LDQwMTk5LDIxMzExLDI0NDcxLDI0NDk5LDI4MDYwLDI5MzA1LDMwNTYzLDMxMTY3LDMxNzE2LDI3NjAyLDI5''@;'; put 'put ''NDIwLDM1NTAxLDI2NjI3LDI3MjMzLDIwOTg0LDMxMzYxLDI2OTMyLDIzNjI2LDQwMTgyLDMzNTE1LDIzNDkzLDM3MTkzLDI4NzAyLDIyMTM2LDIzNjYzLDI0Nzc1LDI1OTU4LDI3Nzg4LDM1OTMwLDM2OTI5LDM4OTMxLDIxNTg1LDI2MzExLDM3Mzg5LDIyODU2LDM3MDI3LDIwODY5LDIwMDQ1''@;'; put 'put ''LDIwOTcwLDM0MjAxLDM1NTk4LDI4NzYwLDI1NDY2LDM3NzA3LDI2OTc4LDM5MzQ4LDMyMjYwLDMwMDcxLDIxMzM1LDI2OTc2LDM2NTc1LDM4NjI3LDI3NzQxLDIwMTA4LDIzNjEyLDI0MzM2LDM2ODQxLDIxMjUwLDM2MDQ5LDMyOTA1LDM0NDI1LDI0MzE5LDI2MDg1LDIwMDgzLDIwODM3LDIy''@;'; put 'put ''OTE0LDIzNjE1LDM4ODk0LDIwMjE5LDIyOTIyLDI0NTI1LDM1NDY5LDI4NjQxLDMxMTUyLDMxMDc0LDIzNTI3LDMzOTA1LDI5NDgzLDI5MTA1LDI0MTgwLDI0NTY1LDI1NDY3LDI1NzU0LDI5MTIzLDMxODk2LDIwMDM1LDI0MzE2LDIwMDQzLDIyNDkyLDIyMTc4LDI0NzQ1LDI4NjExLDMyMDEz''@;'; put 'put ''LDMzMDIxLDMzMDc1LDMzMjE1LDM2Nzg2LDM1MjIzLDM0NDY4LDI0MDUyLDI1MjI2LDI1NzczLDM1MjA3LDI2NDg3LDI3ODc0LDI3OTY2LDI5NzUwLDMwNzcyLDIzMTEwLDMyNjI5LDMzNDUzLDM5MzQwLDIwNDY3LDI0MjU5LDI1MzA5LDI1NDkwLDI1OTQzLDI2NDc5LDMwNDAzLDI5MjYwLDMy''@;'; put 'put ''OTcyLDMyOTU0LDM2NjQ5LDM3MTk3LDIwNDkzLDIyNTIxLDIzMTg2LDI2NzU3LDI2OTk1LDI5MDI4LDI5NDM3LDM2MDIzLDIyNzcwLDM2MDY0LDM4NTA2LDM2ODg5LDM0Njg3LDMxMjA0LDMwNjk1LDMzODMzLDIwMjcxLDIxMDkzLDIxMzM4LDI1MjkzLDI2NTc1LDI3ODUwLDMwMzMzLDMxNjM2''@;'; put 'put ''LDMxODkzLDMzMzM0LDM0MTgwLDM2ODQzLDI2MzMzLDI4NDQ4LDI5MTkwLDMyMjgzLDMzNzA3LDM5MzYxLDQwNjE0LDIwOTg5LDMxNjY1LDMwODM0LDMxNjcyLDMyOTAzLDMxNTYwLDI3MzY4LDI0MTYxLDMyOTA4LDMwMDMzLDMwMDQ4LDIwODQzLDM3NDc0LDI4MzAwLDMwMzMwLDM3MjcxLDM5''@;'; put 'put ''NjU4LDIwMjQwLDMyNjI0LDI1MjQ0LDMxNTY3LDM4MzA5LDQwMTY5LDIyMTM4LDIyNjE3LDM0NTMyLDM4NTg4LDIwMjc2LDIxMDI4LDIxMzIyLDIxNDUzLDIxNDY3LDI0MDcwLDI1NjQ0LDI2MDAxLDI2NDk1LDI3NzEwLDI3NzI2LDI5MjU2LDI5MzU5LDI5Njc3LDMwMDM2LDMyMzIxLDMzMzI0''@;'; put 'put ''LDM0MjgxLDM2MDA5LDMxNjg0LDM3MzE4LDI5MDMzLDM4OTMwLDM5MTUxLDI1NDA1LDI2MjE3LDMwMDU4LDMwNDM2LDMwOTI4LDM0MTE1LDM0NTQyLDIxMjkwLDIxMzI5LDIxNTQyLDIyOTE1LDI0MTk5LDI0NDQ0LDI0NzU0LDI1MTYxLDI1MjA5LDI1MjU5LDI2ZTMsMjc2MDQsMjc4NTIsMzAx''@;'; put 'put ''MzAsMzAzODIsMzA4NjUsMzExOTIsMzIyMDMsMzI2MzEsMzI5MzMsMzQ5ODcsMzU1MTMsMzYwMjcsMzY5OTEsMzg3NTAsMzkxMzEsMjcxNDcsMzE4MDAsMjA2MzMsMjM2MTQsMjQ0OTQsMjY1MDMsMjc2MDgsMjk3NDksMzA0NzMsMzI2NTQsNDA3NjMsMjY1NzAsMzEyNTUsMjEzMDUsMzAwOTEs''@;'; put 'put ''Mzk2NjEsMjQ0MjIsMzMxODEsMzM3NzcsMzI5MjAsMjQzODAsMjQ1MTcsMzAwNTAsMzE1NTgsMzY5MjQsMjY3MjcsMjMwMTksMjMxOTUsMzIwMTYsMzAzMzQsMzU2MjgsMjA0NjksMjQ0MjYsMjcxNjEsMjc3MDMsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU0MTMsMzU5NjEsMjQyODcsMjU1''@;'; put 'put ''NTEsMzAxNDksMzExODYsMzM0OTUsMzc2NzIsMzc2MTgsMzM5NDgsMzQ1NDEsMzk5ODEsMjE2OTcsMjQ0MjgsMjU5OTYsMjc5OTYsMjg2OTMsMzYwMDcsMzYwNTEsMzg5NzEsMjU5MzUsMjk5NDIsMTk5ODEsMjAxODQsMjI0OTYsMjI4MjcsMjMxNDIsMjM1MDAsMjA5MDQsMjQwNjcsMjQyMjAs''@;'; put 'put ''MjQ1OTgsMjUyMDYsMjU5NzUsMjYwMjMsMjYyMjIsMjgwMTQsMjkyMzgsMzE1MjYsMzMxMDQsMzMxNzgsMzM0MzMsMzU2NzYsMzZlMywzNjA3MCwzNjIxMiwzODQyOCwzODQ2OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkx''@;'; put 'put ''NCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwzOTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywyNDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2Niwz''@;'; put 'put ''MjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5''@;'; put 'put ''MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwyNzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwyMTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5Nywz''@;'; put 'put ''MTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2''@;'; put 'put ''MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwyNDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3NiwyNjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwz''@;'; put 'put ''NTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1''@;'; put 'put ''MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywyMDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwyNzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwy''@;'; put 'put ''NDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkzNywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgxOCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5''@;'; put 'put ''MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwzMjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwzMzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwz''@;'; put 'put ''MjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAxMSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgxMiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4''@;'; put 'put ''MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywyMDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwyNDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4Niwy''@;'; put 'put ''ODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5''@;'; put 'put ''MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwzODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0MiwyNzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwz''@;'; put 'put ''NDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0''@;'; put 'put ''MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwzODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0MiwyNjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwy''@;'; put 'put ''MDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEwNywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAy''@;'; put 'put ''Myw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwzNzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3Miwz''@;'; put 'put ''NTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAzNCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQz''@;'; put 'put ''MSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwyNzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwz''@;'; put 'put ''NDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIwMDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIwMDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIw''@;'; put 'put ''MTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgzLDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMzLDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1''@;'; put 'put ''LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIwNDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIwNDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIw''@;'; put 'put ''NDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcwLDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5''@;'; put 'put ''LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIwNzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIwNzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMx''@;'; put 'put ''NDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEzLDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3''@;'; put 'put ''LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIxMDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIxMDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIx''@;'; put 'put ''MTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2''@;'; put 'put ''LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIxMzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIyODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIx''@;'; put 'put ''NDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUwLDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIx''@;'; put 'put ''LDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIxNjc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIxNjk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIx''@;'; put 'put ''NzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEy''@;'; put 'put ''LDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIyMDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIyMDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIy''@;'; put 'put ''MDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEwLDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1''@;'; put 'put ''LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIyMzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIyNDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIy''@;'; put 'put ''NDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYxLDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEwLDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5''@;'; put 'put ''LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIyNzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIy''@;'; put 'put ''ODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAx''@;'; put 'put ''LDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIzMjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIzMjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIz''@;'; put 'put ''MzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAxLDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTkyLDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkx''@;'; put 'put ''LDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIzNjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIz''@;'; put 'put ''NjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5''@;'; put 'put ''LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIzOTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIzOTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIz''@;'; put 'put ''OTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQyLDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1''@;'; put 'put ''LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0''@;'; put 'put ''MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2''@;'; put 'put ''LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0''@;'; put 'put ''NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0NjgzLDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIy''@;'; put 'put ''LDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0''@;'; put 'put ''ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3''@;'; put 'put ''LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMyNjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1''@;'; put 'put ''MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgyLDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEyLDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4''@;'; put 'put ''LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1''@;'; put 'put ''NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2''@;'; put 'put ''LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMz''@;'; put 'put ''Mjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODkyLDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTExLDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQx''@;'; put 'put ''LDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2''@;'; put 'put ''MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEwLDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEz''@;'; put 'put ''LDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2''@;'; put 'put ''NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0''@;'; put 'put ''LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2''@;'; put 'put ''Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUxLDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIy''@;'; put 'put ''LDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3ZTMsMjY5ODcsMjY5NjQsMjcwMDYsMjY5OTAsMjY5MzcsMjY5OTYsMjY5NDEsMjY5NjksMjY5MjgsMjY5NzcsMjY5NzQsMjY5NzMsMjcwMDksMjY5ODYsMjcwNTgsMjcwNTQsMjcwODgsMjcwNzEsMjcwNzMsMjcw''@;'; put 'put ''OTEsMjcwNzAsMjcwODYsMjM1MjgsMjcwODIsMjcxMDEsMjcwNjcsMjcwNzUsMjcwNDcsMjcxODIsMjcwMjUsMjcwNDAsMjcwMzYsMjcwMjksMjcwNjAsMjcxMDIsMjcxMTIsMjcxMzgsMjcxNjMsMjcxMzUsMjc0MDIsMjcxMjksMjcxMjIsMjcxMTEsMjcxNDEsMjcwNTcsMjcxNjYsMjcxMTcs''@;'; put 'put ''MjcxNTYsMjcxMTUsMjcxNDYsMjcxNTQsMjczMjksMjcxNzEsMjcxNTUsMjcyMDQsMjcxNDgsMjcyNTAsMjcxOTAsMjcyNTYsMjcyMDcsMjcyMzQsMjcyMjUsMjcyMzgsMjcyMDgsMjcxOTIsMjcxNzAsMjcyODAsMjcyNzcsMjcyOTYsMjcyNjgsMjcyOTgsMjcyOTksMjcyODcsMzQzMjcsMjcz''@;'; put 'put ''MjMsMjczMzEsMjczMzAsMjczMjAsMjczMTUsMjczMDgsMjczNTgsMjczNDUsMjczNTksMjczMDYsMjczNTQsMjczNzAsMjczODcsMjczOTcsMzQzMjYsMjczODYsMjc0MTAsMjc0MTQsMzk3MjksMjc0MjMsMjc0NDgsMjc0NDcsMzA0MjgsMjc0NDksMzkxNTAsMjc0NjMsMjc0NTksMjc0NjUs''@;'; put 'put ''Mjc0NzIsMjc0ODEsMjc0NzYsMjc0ODMsMjc0ODcsMjc0ODksMjc1MTIsMjc1MTMsMjc1MTksMjc1MjAsMjc1MjQsMjc1MjMsMjc1MzMsMjc1NDQsMjc1NDEsMjc1NTAsMjc1NTYsMjc1NjIsMjc1NjMsMjc1NjcsMjc1NzAsMjc1NjksMjc1NzEsMjc1NzUsMjc1ODAsMjc1OTAsMjc1OTUsMjc2''@;'; put 'put ''MDMsMjc2MTUsMjc2MjgsMjc2MjcsMjc2MzUsMjc2MzEsNDA2MzgsMjc2NTYsMjc2NjcsMjc2NjgsMjc2NzUsMjc2ODQsMjc2ODMsMjc3NDIsMjc3MzMsMjc3NDYsMjc3NTQsMjc3NzgsMjc3ODksMjc4MDIsMjc3NzcsMjc4MDMsMjc3NzQsMjc3NTIsMjc3NjMsMjc3OTQsMjc3OTIsMjc4NDQs''@;'; put 'put ''Mjc4ODksMjc4NTksMjc4MzcsMjc4NjMsMjc4NDUsMjc4NjksMjc4MjIsMjc4MjUsMjc4MzgsMjc4MzQsMjc4NjcsMjc4ODcsMjc4NjUsMjc4ODIsMjc5MzUsMzQ4OTMsMjc5NTgsMjc5NDcsMjc5NjUsMjc5NjAsMjc5MjksMjc5NTcsMjc5NTUsMjc5MjIsMjc5MTYsMjgwMDMsMjgwNTEsMjgw''@;'; put 'put ''MDQsMjc5OTQsMjgwMjUsMjc5OTMsMjgwNDYsMjgwNTMsMjg2NDQsMjgwMzcsMjgxNTMsMjgxODEsMjgxNzAsMjgwODUsMjgxMDMsMjgxMzQsMjgwODgsMjgxMDIsMjgxNDAsMjgxMjYsMjgxMDgsMjgxMzYsMjgxMTQsMjgxMDEsMjgxNTQsMjgxMjEsMjgxMzIsMjgxMTcsMjgxMzgsMjgxNDIs''@;'; put 'put ''MjgyMDUsMjgyNzAsMjgyMDYsMjgxODUsMjgyNzQsMjgyNTUsMjgyMjIsMjgxOTUsMjgyNjcsMjgyMDMsMjgyNzgsMjgyMzcsMjgxOTEsMjgyMjcsMjgyMTgsMjgyMzgsMjgxOTYsMjg0MTUsMjgxODksMjgyMTYsMjgyOTAsMjgzMzAsMjgzMTIsMjgzNjEsMjgzNDMsMjgzNzEsMjgzNDksMjgz''@;'; put 'put ''MzUsMjgzNTYsMjgzMzgsMjgzNzIsMjgzNzMsMjgzMDMsMjgzMjUsMjgzNTQsMjgzMTksMjg0ODEsMjg0MzMsMjg3NDgsMjgzOTYsMjg0MDgsMjg0MTQsMjg0NzksMjg0MDIsMjg0NjUsMjgzOTksMjg0NjYsMjgzNjQsMjg0NzgsMjg0MzUsMjg0MDcsMjg1NTAsMjg1MzgsMjg1MzYsMjg1NDUs''@;'; put 'put ''Mjg1NDQsMjg1MjcsMjg1MDcsMjg2NTksMjg1MjUsMjg1NDYsMjg1NDAsMjg1MDQsMjg1NTgsMjg1NjEsMjg2MTAsMjg1MTgsMjg1OTUsMjg1NzksMjg1NzcsMjg1ODAsMjg2MDEsMjg2MTQsMjg1ODYsMjg2MzksMjg2MjksMjg2NTIsMjg2MjgsMjg2MzIsMjg2NTcsMjg2NTQsMjg2MzUsMjg2''@;'; put 'put ''ODEsMjg2ODMsMjg2NjYsMjg2ODksMjg2NzMsMjg2ODcsMjg2NzAsMjg2OTksMjg2OTgsMjg1MzIsMjg3MDEsMjg2OTYsMjg3MDMsMjg3MjAsMjg3MzQsMjg3MjIsMjg3NTMsMjg3NzEsMjg4MjUsMjg4MTgsMjg4NDcsMjg5MTMsMjg4NDQsMjg4NTYsMjg4NTEsMjg4NDYsMjg4OTUsMjg4NzUs''@;'; put 'put ''Mjg4OTMsMjg4ODksMjg5MzcsMjg5MjUsMjg5NTYsMjg5NTMsMjkwMjksMjkwMTMsMjkwNjQsMjkwMzAsMjkwMjYsMjkwMDQsMjkwMTQsMjkwMzYsMjkwNzEsMjkxNzksMjkwNjAsMjkwNzcsMjkwOTYsMjkxMDAsMjkxNDMsMjkxMTMsMjkxMTgsMjkxMzgsMjkxMjksMjkxNDAsMjkxMzQsMjkx''@;'; put 'put ''NTIsMjkxNjQsMjkxNTksMjkxNzMsMjkxODAsMjkxNzcsMjkxODMsMjkxOTcsMjkyMDAsMjkyMTEsMjkyMjQsMjkyMjksMjkyMjgsMjkyMzIsMjkyMzQsMjkyNDMsMjkyNDQsMjkyNDcsMjkyNDgsMjkyNTQsMjkyNTksMjkyNzIsMjkzMDAsMjkzMTAsMjkzMTQsMjkzMTMsMjkzMTksMjkzMzAs''@;'; put 'put ''MjkzMzQsMjkzNDYsMjkzNTEsMjkzNjksMjkzNjIsMjkzNzksMjkzODIsMjkzODAsMjkzOTAsMjkzOTQsMjk0MTAsMjk0MDgsMjk0MDksMjk0MzMsMjk0MzEsMjA0OTUsMjk0NjMsMjk0NTAsMjk0NjgsMjk0NjIsMjk0NjksMjk0OTIsMjk0ODcsMjk0ODEsMjk0NzcsMjk1MDIsMjk1MTgsMjk1''@;'; put 'put ''MTksNDA2NjQsMjk1MjcsMjk1NDYsMjk1NDQsMjk1NTIsMjk1NjAsMjk1NTcsMjk1NjMsMjk1NjIsMjk2NDAsMjk2MTksMjk2NDYsMjk2MjcsMjk2MzIsMjk2NjksMjk2NzgsMjk2NjIsMjk4NTgsMjk3MDEsMjk4MDcsMjk3MzMsMjk2ODgsMjk3NDYsMjk3NTQsMjk3ODEsMjk3NTksMjk3OTEs''@;'; put 'put ''Mjk3ODUsMjk3NjEsMjk3ODgsMjk4MDEsMjk4MDgsMjk3OTUsMjk4MDIsMjk4MTQsMjk4MjIsMjk4MzUsMjk4NTQsMjk4NjMsMjk4OTgsMjk5MDMsMjk5MDgsMjk2ODEsMjk5MjAsMjk5MjMsMjk5MjcsMjk5MjksMjk5MzQsMjk5MzgsMjk5MzYsMjk5MzcsMjk5NDQsMjk5NDMsMjk5NTYsMjk5''@;'; put 'put ''NTUsMjk5NTcsMjk5NjQsMjk5NjYsMjk5NjUsMjk5NzMsMjk5NzEsMjk5ODIsMjk5OTAsMjk5OTYsMzAwMTIsMzAwMjAsMzAwMjksMzAwMjYsMzAwMjUsMzAwNDMsMzAwMjIsMzAwNDIsMzAwNTcsMzAwNTIsMzAwNTUsMzAwNTksMzAwNjEsMzAwNzIsMzAwNzAsMzAwODYsMzAwODcsMzAwNjgs''@;'; put 'put ''MzAwOTAsMzAwODksMzAwODIsMzAxMDAsMzAxMDYsMzAxMDksMzAxMTcsMzAxMTUsMzAxNDYsMzAxMzEsMzAxNDcsMzAxMzMsMzAxNDEsMzAxMzYsMzAxNDAsMzAxMjksMzAxNTcsMzAxNTQsMzAxNjIsMzAxNjksMzAxNzksMzAxNzQsMzAyMDYsMzAyMDcsMzAyMDQsMzAyMDksMzAxOTIsMzAy''@;'; put 'put ''MDIsMzAxOTQsMzAxOTUsMzAyMTksMzAyMjEsMzAyMTcsMzAyMzksMzAyNDcsMzAyNDAsMzAyNDEsMzAyNDIsMzAyNDQsMzAyNjAsMzAyNTYsMzAyNjcsMzAyNzksMzAyODAsMzAyNzgsMzAzMDAsMzAyOTYsMzAzMDUsMzAzMDYsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTEsMzAzMTYsMzAzMjAs''@;'; put 'put ''MzAzMjIsMzAzMjYsMzAzMjgsMzAzMzIsMzAzMzYsMzAzMzksMzAzNDQsMzAzNDcsMzAzNTAsMzAzNTgsMzAzNTUsMzAzNjEsMzAzNjIsMzAzODQsMzAzODgsMzAzOTIsMzAzOTMsMzAzOTQsMzA0MDIsMzA0MTMsMzA0MjIsMzA0MTgsMzA0MzAsMzA0MzMsMzA0MzcsMzA0MzksMzA0NDIsMzQz''@;'; put 'put ''NTEsMzA0NTksMzA0NzIsMzA0NzEsMzA0NjgsMzA1MDUsMzA1MDAsMzA0OTQsMzA1MDEsMzA1MDIsMzA0OTEsMzA1MTksMzA1MjAsMzA1MzUsMzA1NTQsMzA1NjgsMzA1NzEsMzA1NTUsMzA1NjUsMzA1OTEsMzA1OTAsMzA1ODUsMzA2MDYsMzA2MDMsMzA2MDksMzA2MjQsMzA2MjIsMzA2NDAs''@;'; put 'put ''MzA2NDYsMzA2NDksMzA2NTUsMzA2NTIsMzA2NTMsMzA2NTEsMzA2NjMsMzA2NjksMzA2NzksMzA2ODIsMzA2ODQsMzA2OTEsMzA3MDIsMzA3MTYsMzA3MzIsMzA3MzgsMzEwMTQsMzA3NTIsMzEwMTgsMzA3ODksMzA4NjIsMzA4MzYsMzA4NTQsMzA4NDQsMzA4NzQsMzA4NjAsMzA4ODMsMzA5''@;'; put 'put ''MDEsMzA4OTAsMzA4OTUsMzA5MjksMzA5MTgsMzA5MjMsMzA5MzIsMzA5MTAsMzA5MDgsMzA5MTcsMzA5MjIsMzA5NTYsMzA5NTEsMzA5MzgsMzA5NzMsMzA5NjQsMzA5ODMsMzA5OTQsMzA5OTMsMzEwMDEsMzEwMjAsMzEwMTksMzEwNDAsMzEwNzIsMzEwNjMsMzEwNzEsMzEwNjYsMzEwNjEs''@;'; put 'put ''MzEwNTksMzEwOTgsMzExMDMsMzExMTQsMzExMzMsMzExNDMsNDA3NzksMzExNDYsMzExNTAsMzExNTUsMzExNjEsMzExNjIsMzExNzcsMzExODksMzEyMDcsMzEyMTIsMzEyMDEsMzEyMDMsMzEyNDAsMzEyNDUsMzEyNTYsMzEyNTcsMzEyNjQsMzEyNjMsMzExMDQsMzEyODEsMzEyOTEsMzEy''@;'; put 'put ''OTQsMzEyODcsMzEyOTksMzEzMTksMzEzMDUsMzEzMjksMzEzMzAsMzEzMzcsNDA4NjEsMzEzNDQsMzEzNTMsMzEzNTcsMzEzNjgsMzEzODMsMzEzODEsMzEzODQsMzEzODIsMzE0MDEsMzE0MzIsMzE0MDgsMzE0MTQsMzE0MjksMzE0MjgsMzE0MjMsMzY5OTUsMzE0MzEsMzE0MzQsMzE0Mzcs''@;'; put 'put ''MzE0MzksMzE0NDUsMzE0NDMsMzE0NDksMzE0NTAsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjIsMzE0NjksMzE0NzIsMzE0OTAsMzE1MDMsMzE0OTgsMzE0OTQsMzE1MzksMzE1MTIsMzE1MTMsMzE1MTgsMzE1NDEsMzE1MjgsMzE1NDIsMzE1NjgsMzE2MTAsMzE0OTIsMzE1NjUsMzE0OTksMzE1''@;'; put 'put ''NjQsMzE1NTcsMzE2MDUsMzE1ODksMzE2MDQsMzE1OTEsMzE2MDAsMzE2MDEsMzE1OTYsMzE1OTgsMzE2NDUsMzE2NDAsMzE2NDcsMzE2MjksMzE2NDQsMzE2NDIsMzE2MjcsMzE2MzQsMzE2MzEsMzE1ODEsMzE2NDEsMzE2OTEsMzE2ODEsMzE2OTIsMzE2OTUsMzE2NjgsMzE2ODYsMzE3MDks''@;'; put 'put ''MzE3MjEsMzE3NjEsMzE3NjQsMzE3MTgsMzE3MTcsMzE4NDAsMzE3NDQsMzE3NTEsMzE3NjMsMzE3MzEsMzE3MzUsMzE3NjcsMzE3NTcsMzE3MzQsMzE3NzksMzE3ODMsMzE3ODYsMzE3NzUsMzE3OTksMzE3ODcsMzE4MDUsMzE4MjAsMzE4MTEsMzE4MjgsMzE4MjMsMzE4MDgsMzE4MjQsMzE4''@;'; put 'put ''MzIsMzE4MzksMzE4NDQsMzE4MzAsMzE4NDUsMzE4NTIsMzE4NjEsMzE4NzUsMzE4ODgsMzE5MDgsMzE5MTcsMzE5MDYsMzE5MTUsMzE5MDUsMzE5MTIsMzE5MjMsMzE5MjIsMzE5MjEsMzE5MTgsMzE5MjksMzE5MzMsMzE5MzYsMzE5NDEsMzE5MzgsMzE5NjAsMzE5NTQsMzE5NjQsMzE5NzAs''@;'; put 'put ''Mzk3MzksMzE5ODMsMzE5ODYsMzE5ODgsMzE5OTAsMzE5OTQsMzIwMDYsMzIwMDIsMzIwMjgsMzIwMjEsMzIwMTAsMzIwNjksMzIwNzUsMzIwNDYsMzIwNTAsMzIwNjMsMzIwNTMsMzIwNzAsMzIxMTUsMzIwODYsMzIwNzgsMzIxMTQsMzIxMDQsMzIxMTAsMzIwNzksMzIwOTksMzIxNDcsMzIx''@;'; put 'put ''MzcsMzIwOTEsMzIxNDMsMzIxMjUsMzIxNTUsMzIxODYsMzIxNzQsMzIxNjMsMzIxODEsMzIxOTksMzIxODksMzIxNzEsMzIzMTcsMzIxNjIsMzIxNzUsMzIyMjAsMzIxODQsMzIxNTksMzIxNzYsMzIyMTYsMzIyMjEsMzIyMjgsMzIyMjIsMzIyNTEsMzIyNDIsMzIyMjUsMzIyNjEsMzIyNjYs''@;'; put 'put ''MzIyOTEsMzIyODksMzIyNzQsMzIzMDUsMzIyODcsMzIyNjUsMzIyNjcsMzIyOTAsMzIzMjYsMzIzNTgsMzIzMTUsMzIzMDksMzIzMTMsMzIzMjMsMzIzMTEsMzIzMDYsMzIzMTQsMzIzNTksMzIzNDksMzIzNDIsMzIzNTAsMzIzNDUsMzIzNDYsMzIzNzcsMzIzNjIsMzIzNjEsMzIzODAsMzIz''@;'; put 'put ''NzksMzIzODcsMzIyMTMsMzIzODEsMzY3ODIsMzIzODMsMzIzOTIsMzIzOTMsMzIzOTYsMzI0MDIsMzI0MDAsMzI0MDMsMzI0MDQsMzI0MDYsMzIzOTgsMzI0MTEsMzI0MTIsMzI1NjgsMzI1NzAsMzI1ODEsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTIsMzI1OTMsMzI1OTcsMzI1OTYsMzI2MDAs''@;'; put 'put ''MzI2MDcsMzI2MDgsMzI2MTYsMzI2MTcsMzI2MTUsMzI2MzIsMzI2NDIsMzI2NDYsMzI2NDMsMzI2NDgsMzI2NDcsMzI2NTIsMzI2NjAsMzI2NzAsMzI2NjksMzI2NjYsMzI2NzUsMzI2ODcsMzI2OTAsMzI2OTcsMzI2ODYsMzI2OTQsMzI2OTYsMzU2OTcsMzI3MDksMzI3MTAsMzI3MTQsMzI3''@;'; put 'put ''MjUsMzI3MjQsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTUsMzI3NjEsMzkxMzIsMzI3NzQsMzI3NzIsMzI3NzksMzI3ODYsMzI3OTIsMzI3OTMsMzI3OTYsMzI4MDEsMzI4MDgsMzI4MzEsMzI4MjcsMzI4NDIsMzI4MzgsMzI4NTAsMzI4NTYsMzI4NTgsMzI4NjMsMzI4NjYsMzI4NzIsMzI4ODMs''@;'; put 'put ''MzI4ODIsMzI4ODAsMzI4ODYsMzI4ODksMzI4OTMsMzI4OTUsMzI5MDAsMzI5MDIsMzI5MDEsMzI5MjMsMzI5MTUsMzI5MjIsMzI5NDEsMjA4ODAsMzI5NDAsMzI5ODcsMzI5OTcsMzI5ODUsMzI5ODksMzI5NjQsMzI5ODYsMzI5ODIsMzMwMzMsMzMwMDcsMzMwMDksMzMwNTEsMzMwNjUsMzMw''@;'; put 'put ''NTksMzMwNzEsMzMwOTksMzg1MzksMzMwOTQsMzMwODYsMzMxMDcsMzMxMDUsMzMwMjAsMzMxMzcsMzMxMzQsMzMxMjUsMzMxMjYsMzMxNDAsMzMxNTUsMzMxNjAsMzMxNjIsMzMxNTIsMzMxNTQsMzMxODQsMzMxNzMsMzMxODgsMzMxODcsMzMxMTksMzMxNzEsMzMxOTMsMzMyMDAsMzMyMDUs''@;'; put 'put ''MzMyMTQsMzMyMDgsMzMyMTMsMzMyMTYsMzMyMTgsMzMyMTAsMzMyMjUsMzMyMjksMzMyMzMsMzMyNDEsMzMyNDAsMzMyMjQsMzMyNDIsMzMyNDcsMzMyNDgsMzMyNTUsMzMyNzQsMzMyNzUsMzMyNzgsMzMyODEsMzMyODIsMzMyODUsMzMyODcsMzMyOTAsMzMyOTMsMzMyOTYsMzMzMDIsMzMz''@;'; put 'put ''MjEsMzMzMjMsMzMzMzYsMzMzMzEsMzMzNDQsMzMzNjksMzMzNjgsMzMzNzMsMzMzNzAsMzMzNzUsMzMzODAsMzMzNzgsMzMzODQsMzMzODYsMzMzODcsMzMzMjYsMzMzOTMsMzMzOTksMzM0MDAsMzM0MDYsMzM0MjEsMzM0MjYsMzM0NTEsMzM0MzksMzM0NjcsMzM0NTIsMzM1MDUsMzM1MDcs''@;'; put 'put ''MzM1MDMsMzM0OTAsMzM1MjQsMzM1MjMsMzM1MzAsMzM2ODMsMzM1MzksMzM1MzEsMzM1MjksMzM1MDIsMzM1NDIsMzM1MDAsMzM1NDUsMzM0OTcsMzM1ODksMzM1ODgsMzM1NTgsMzM1ODYsMzM1ODUsMzM2MDAsMzM1OTMsMzM2MTYsMzM2MDUsMzM1ODMsMzM1NzksMzM1NTksMzM1NjAsMzM2''@;'; put 'put ''NjksMzM2OTAsMzM3MDYsMzM2OTUsMzM2OTgsMzM2ODYsMzM1NzEsMzM2NzgsMzM2NzEsMzM2NzQsMzM2NjAsMzM3MTcsMzM2NTEsMzM2NTMsMzM2OTYsMzM2NzMsMzM3MDQsMzM3ODAsMzM4MTEsMzM3NzEsMzM3NDIsMzM3ODksMzM3OTUsMzM3NTIsMzM4MDMsMzM3MjksMzM3ODMsMzM3OTks''@;'; put 'put ''MzM3NjAsMzM3NzgsMzM4MDUsMzM4MjYsMzM4MjQsMzM3MjUsMzM4NDgsMzQwNTQsMzM3ODcsMzM5MDEsMzM4MzQsMzM4NTIsMzQxMzgsMzM5MjQsMzM5MTEsMzM4OTksMzM5NjUsMzM5MDIsMzM5MjIsMzM4OTcsMzM4NjIsMzM4MzYsMzM5MDMsMzM5MTMsMzM4NDUsMzM5OTQsMzM4OTAsMzM5''@;'; put 'put ''NzcsMzM5ODMsMzM5NTEsMzQwMDksMzM5OTcsMzM5NzksMzQwMTAsMzRlMywzMzk4NSwzMzk5MCwzNDAwNiwzMzk1MywzNDA4MSwzNDA0NywzNDAzNiwzNDA3MSwzNDA3MiwzNDA5MiwzNDA3OSwzNDA2OSwzNDA2OCwzNDA0NCwzNDExMiwzNDE0NywzNDEzNiwzNDEyMCwzNDExMywzNDMwNiwz''@;'; put 'put ''NDEyMywzNDEzMywzNDE3NiwzNDIxMiwzNDE4NCwzNDE5MywzNDE4NiwzNDIxNiwzNDE1NywzNDE5NiwzNDIwMywzNDI4MiwzNDE4MywzNDIwNCwzNDE2NywzNDE3NCwzNDE5MiwzNDI0OSwzNDIzNCwzNDI1NSwzNDIzMywzNDI1NiwzNDI2MSwzNDI2OSwzNDI3NywzNDI2OCwzNDI5NywzNDMx''@;'; put 'put ''NCwzNDMyMywzNDMxNSwzNDMwMiwzNDI5OCwzNDMxMCwzNDMzOCwzNDMzMCwzNDM1MiwzNDM2NywzNDM4MSwyMDA1MywzNDM4OCwzNDM5OSwzNDQwNywzNDQxNywzNDQ1MSwzNDQ2NywzNDQ3MywzNDQ3NCwzNDQ0MywzNDQ0NCwzNDQ4NiwzNDQ3OSwzNDUwMCwzNDUwMiwzNDQ4MCwzNDUwNSwz''@;'; put 'put ''NDg1MSwzNDQ3NSwzNDUxNiwzNDUyNiwzNDUzNywzNDU0MCwzNDUyNywzNDUyMywzNDU0MywzNDU3OCwzNDU2NiwzNDU2OCwzNDU2MCwzNDU2MywzNDU1NSwzNDU3NywzNDU2OSwzNDU3MywzNDU1MywzNDU3MCwzNDYxMiwzNDYyMywzNDYxNSwzNDYxOSwzNDU5NywzNDYwMSwzNDU4NiwzNDY1''@;'; put 'put ''NiwzNDY1NSwzNDY4MCwzNDYzNiwzNDYzOCwzNDY3NiwzNDY0NywzNDY2NCwzNDY3MCwzNDY0OSwzNDY0MywzNDY1OSwzNDY2NiwzNDgyMSwzNDcyMiwzNDcxOSwzNDY5MCwzNDczNSwzNDc2MywzNDc0OSwzNDc1MiwzNDc2OCwzODYxNCwzNDczMSwzNDc1NiwzNDczOSwzNDc1OSwzNDc1OCwz''@;'; put 'put ''NDc0NywzNDc5OSwzNDgwMiwzNDc4NCwzNDgzMSwzNDgyOSwzNDgxNCwzNDgwNiwzNDgwNywzNDgzMCwzNDc3MCwzNDgzMywzNDgzOCwzNDgzNywzNDg1MCwzNDg0OSwzNDg2NSwzNDg3MCwzNDg3MywzNDg1NSwzNDg3NSwzNDg4NCwzNDg4MiwzNDg5OCwzNDkwNSwzNDkxMCwzNDkxNCwzNDky''@;'; put 'put ''MywzNDk0NSwzNDk0MiwzNDk3NCwzNDkzMywzNDk0MSwzNDk5NywzNDkzMCwzNDk0NiwzNDk2NywzNDk2MiwzNDk5MCwzNDk2OSwzNDk3OCwzNDk1NywzNDk4MCwzNDk5MiwzNTAwNywzNDk5MywzNTAxMSwzNTAxMiwzNTAyOCwzNTAzMiwzNTAzMywzNTAzNywzNTA2NSwzNTA3NCwzNTA2OCwz''@;'; put 'put ''NTA2MCwzNTA0OCwzNTA1OCwzNTA3NiwzNTA4NCwzNTA4MiwzNTA5MSwzNTEzOSwzNTEwMiwzNTEwOSwzNTExNCwzNTExNSwzNTEzNywzNTE0MCwzNTEzMSwzNTEyNiwzNTEyOCwzNTE0OCwzNTEwMSwzNTE2OCwzNTE2NiwzNTE3NCwzNTE3MiwzNTE4MSwzNTE3OCwzNTE4MywzNTE4OCwzNTE5''@;'; put 'put ''MSwzNTE5OCwzNTIwMywzNTIwOCwzNTIxMCwzNTIxOSwzNTIyNCwzNTIzMywzNTI0MSwzNTIzOCwzNTI0NCwzNTI0NywzNTI1MCwzNTI1OCwzNTI2MSwzNTI2MywzNTI2NCwzNTI5MCwzNTI5MiwzNTI5MywzNTMwMywzNTMxNiwzNTMyMCwzNTMzMSwzNTM1MCwzNTM0NCwzNTM0MCwzNTM1NSwz''@;'; put 'put ''NTM1NywzNTM2NSwzNTM4MiwzNTM5MywzNTQxOSwzNTQxMCwzNTM5OCwzNTQwMCwzNTQ1MiwzNTQzNywzNTQzNiwzNTQyNiwzNTQ2MSwzNTQ1OCwzNTQ2MCwzNTQ5NiwzNTQ4OSwzNTQ3MywzNTQ5MywzNTQ5NCwzNTQ4MiwzNTQ5MSwzNTUyNCwzNTUzMywzNTUyMiwzNTU0NiwzNTU2MywzNTU3''@;'; put 'put ''MSwzNTU1OSwzNTU1NiwzNTU2OSwzNTYwNCwzNTU1MiwzNTU1NCwzNTU3NSwzNTU1MCwzNTU0NywzNTU5NiwzNTU5MSwzNTYxMCwzNTU1MywzNTYwNiwzNTYwMCwzNTYwNywzNTYxNiwzNTYzNSwzODgyNywzNTYyMiwzNTYyNywzNTY0NiwzNTYyNCwzNTY0OSwzNTY2MCwzNTY2MywzNTY2Miwz''@;'; put 'put ''NTY1NywzNTY3MCwzNTY3NSwzNTY3NCwzNTY5MSwzNTY3OSwzNTY5MiwzNTY5NSwzNTcwMCwzNTcwOSwzNTcxMiwzNTcyNCwzNTcyNiwzNTczMCwzNTczMSwzNTczNCwzNTczNywzNTczOCwzNTg5OCwzNTkwNSwzNTkwMywzNTkxMiwzNTkxNiwzNTkxOCwzNTkyMCwzNTkyNSwzNTkzOCwzNTk0''@;'; put 'put ''OCwzNTk2MCwzNTk2MiwzNTk3MCwzNTk3NywzNTk3MywzNTk3OCwzNTk4MSwzNTk4MiwzNTk4OCwzNTk2NCwzNTk5MiwyNTExNywzNjAxMywzNjAxMCwzNjAyOSwzNjAxOCwzNjAxOSwzNjAxNCwzNjAyMiwzNjA0MCwzNjAzMywzNjA2OCwzNjA2NywzNjA1OCwzNjA5MywzNjA5MCwzNjA5MSwz''@;'; put 'put ''NjEwMCwzNjEwMSwzNjEwNiwzNjEwMywzNjExMSwzNjEwOSwzNjExMiw0MDc4MiwzNjExNSwzNjA0NSwzNjExNiwzNjExOCwzNjE5OSwzNjIwNSwzNjIwOSwzNjIxMSwzNjIyNSwzNjI0OSwzNjI5MCwzNjI4NiwzNjI4MiwzNjMwMywzNjMxNCwzNjMxMCwzNjMwMCwzNjMxNSwzNjI5OSwzNjMz''@;'; put 'put ''MCwzNjMzMSwzNjMxOSwzNjMyMywzNjM0OCwzNjM2MCwzNjM2MSwzNjM1MSwzNjM4MSwzNjM4MiwzNjM2OCwzNjM4MywzNjQxOCwzNjQwNSwzNjQwMCwzNjQwNCwzNjQyNiwzNjQyMywzNjQyNSwzNjQyOCwzNjQzMiwzNjQyNCwzNjQ0MSwzNjQ1MiwzNjQ0OCwzNjM5NCwzNjQ1MSwzNjQzNywz''@;'; put 'put ''NjQ3MCwzNjQ2NiwzNjQ3NiwzNjQ4MSwzNjQ4NywzNjQ4NSwzNjQ4NCwzNjQ5MSwzNjQ5MCwzNjQ5OSwzNjQ5NywzNjUwMCwzNjUwNSwzNjUyMiwzNjUxMywzNjUyNCwzNjUyOCwzNjU1MCwzNjUyOSwzNjU0MiwzNjU0OSwzNjU1MiwzNjU1NSwzNjU3MSwzNjU3OSwzNjYwNCwzNjYwMywzNjU4''@;'; put 'put ''NywzNjYwNiwzNjYxOCwzNjYxMywzNjYyOSwzNjYyNiwzNjYzMywzNjYyNywzNjYzNiwzNjYzOSwzNjYzNSwzNjYyMCwzNjY0NiwzNjY1OSwzNjY2NywzNjY2NSwzNjY3NywzNjY3NCwzNjY3MCwzNjY4NCwzNjY4MSwzNjY3OCwzNjY4NiwzNjY5NSwzNjcwMCwzNjcwNiwzNjcwNywzNjcwOCwz''@;'; put 'put ''Njc2NCwzNjc2NywzNjc3MSwzNjc4MSwzNjc4MywzNjc5MSwzNjgyNiwzNjgzNywzNjgzNCwzNjg0MiwzNjg0NywzNjk5OSwzNjg1MiwzNjg2OSwzNjg1NywzNjg1OCwzNjg4MSwzNjg4NSwzNjg5NywzNjg3NywzNjg5NCwzNjg4NiwzNjg3NSwzNjkwMywzNjkxOCwzNjkxNywzNjkyMSwzNjg1''@;'; put 'put ''NiwzNjk0MywzNjk0NCwzNjk0NSwzNjk0NiwzNjg3OCwzNjkzNywzNjkyNiwzNjk1MCwzNjk1MiwzNjk1OCwzNjk2OCwzNjk3NSwzNjk4MiwzODU2OCwzNjk3OCwzNjk5NCwzNjk4OSwzNjk5MywzNjk5MiwzNzAwMiwzNzAwMSwzNzAwNywzNzAzMiwzNzAzOSwzNzA0MSwzNzA0NSwzNzA5MCwz''@;'; put 'put ''NzA5MiwyNTE2MCwzNzA4MywzNzEyMiwzNzEzOCwzNzE0NSwzNzE3MCwzNzE2OCwzNzE5NCwzNzIwNiwzNzIwOCwzNzIxOSwzNzIyMSwzNzIyNSwzNzIzNSwzNzIzNCwzNzI1OSwzNzI1NywzNzI1MCwzNzI4MiwzNzI5MSwzNzI5NSwzNzI5MCwzNzMwMSwzNzMwMCwzNzMwNiwzNzMxMiwzNzMx''@;'; put 'put ''MywzNzMyMSwzNzMyMywzNzMyOCwzNzMzNCwzNzM0MywzNzM0NSwzNzMzOSwzNzM3MiwzNzM2NSwzNzM2NiwzNzQwNiwzNzM3NSwzNzM5NiwzNzQyMCwzNzM5NywzNzM5MywzNzQ3MCwzNzQ2MywzNzQ0NSwzNzQ0OSwzNzQ3NiwzNzQ0OCwzNzUyNSwzNzQzOSwzNzQ1MSwzNzQ1NiwzNzUzMiwz''@;'; put 'put ''NzUyNiwzNzUyMywzNzUzMSwzNzQ2NiwzNzU4MywzNzU2MSwzNzU1OSwzNzYwOSwzNzY0NywzNzYyNiwzNzcwMCwzNzY3OCwzNzY1NywzNzY2NiwzNzY1OCwzNzY2NywzNzY5MCwzNzY4NSwzNzY5MSwzNzcyNCwzNzcyOCwzNzc1NiwzNzc0MiwzNzcxOCwzNzgwOCwzNzgwNCwzNzgwNSwzNzc4''@;'; put 'put ''MCwzNzgxNywzNzg0NiwzNzg0NywzNzg2NCwzNzg2MSwzNzg0OCwzNzgyNywzNzg1MywzNzg0MCwzNzgzMiwzNzg2MCwzNzkxNCwzNzkwOCwzNzkwNywzNzg5MSwzNzg5NSwzNzkwNCwzNzk0MiwzNzkzMSwzNzk0MSwzNzkyMSwzNzk0NiwzNzk1MywzNzk3MCwzNzk1NiwzNzk3OSwzNzk4NCwz''@;'; put 'put ''Nzk4NiwzNzk4MiwzNzk5NCwzNzQxNywzOGUzLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4MjkyLDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEyLDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0''@;'; put 'put ''LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4''@;'; put 'put ''NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAxLDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEzLDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4Njcw''@;'; put 'put ''LDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4''@;'; put 'put ''Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkzLDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAxLDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3''@;'; put 'put ''LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5''@;'; put 'put ''MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIwLDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5MzkxLDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2''@;'; put 'put ''LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5''@;'; put 'put ''NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5''@;'; put 'put ''LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5''@;'; put 'put ''ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQwLDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0''@;'; put 'put ''LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQwMTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQwMjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQw''@;'; put 'put ''MjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5''@;'; put 'put ''LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQwNTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQwNjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQw''@;'; put 'put ''NjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAwLDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4''@;'; put 'put ''LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQy''@;'; put 'put ''NSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwy''@;'; put 'put ''MDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3''@;'; put 'put ''MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5Miwy''@;'; put 'put ''Mzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3''@;'; put 'put ''MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwy''@;'; put 'put ''NzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1''@;'; put 'put ''MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywy''@;'; put 'put ''OTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAy''@;'; put 'put ''NywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwz''@;'; put 'put ''NDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1''@;'; put 'put ''OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwz''@;'; put 'put ''NzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODcz''@;'; put 'put ''MywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYx''@;'; put 'put ''LDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEw''@;'; put 'put ''MCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwy''@;'; put 'put ''MDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5''@;'; put 'put ''NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2''@;'; put 'put ''NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgw''@;'; put 'put ''NiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2''@;'; put 'put ''NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIx''@;'; put 'put ''NywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwy''@;'; put 'put ''OTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAy''@;'; put 'put ''NCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3Miwz''@;'; put 'put ''NDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2''@;'; put 'put ''NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwz''@;'; put 'put ''NzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3''@;'; put 'put ''NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0''@;'; put 'put ''MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGppczAyMTI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDcyOCw3MTEsMTg0LDcyOSw3MzMsMTc1LDczMSw3MzAsNjUzNzQsOTAwLDkwMSxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTYxLDE2NiwxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE4NiwxNzAsMTY5LDE3NCw4NDgyLDE2NCw4NDcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MDIsOTA0LDkwNSw5MDYsOTM4LG51bGwsOTA4LG51bGwsOTEwLDkzOSxudWxsLDkxMSxudWxsLG51bGwsbnVsbCxudWxsLDk0MCw5NDEsOTQy''@;'; put 'put ''LDk0Myw5NzAsOTEyLDk3Miw5NjIsOTczLDk3MSw5NDQsOTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzOCwxMDM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTEx''@;'; put 'put ''NCwxMTE1LDExMTYsMTExOCwxMTE5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk4''@;'; put 'put ''LDI3MixudWxsLDI5NCxudWxsLDMwNixudWxsLDMyMSwzMTksbnVsbCwzMzAsMjE2LDMzOCxudWxsLDM1OCwyMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzAsMjczLDI0MCwyOTUsMzA1''@;'; put 'put ''LDMwNywzMTIsMzIyLDMyMCwzMjksMzMxLDI0OCwzMzksMjIzLDM1OSwyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTMsMTkyLDE5NiwxOTQsMjU4LDQ2MSwyNTYsMjYwLDE5NywxOTUsMjYyLDI2NCwyNjgsMTk5''@;'; put 'put ''LDI2NiwyNzAsMjAxLDIwMCwyMDMsMjAyLDI4MiwyNzgsMjc0LDI4MCxudWxsLDI4NCwyODYsMjkwLDI4OCwyOTIsMjA1LDIwNCwyMDcsMjA2LDQ2MywzMDQsMjk4LDMwMiwyOTYsMzA4LDMxMCwzMTMsMzE3LDMxNSwzMjMsMzI3LDMyNSwyMDksMjExLDIxMCwyMTQsMjEyLDQ2NSwzMzYsMzMy''@;'; put 'put ''LDIxMywzNDAsMzQ0LDM0MiwzNDYsMzQ4LDM1MiwzNTAsMzU2LDM1NCwyMTgsMjE3LDIyMCwyMTksMzY0LDQ2NywzNjgsMzYyLDM3MCwzNjYsMzYwLDQ3MSw0NzUsNDczLDQ2OSwzNzIsMjIxLDM3NiwzNzQsMzc3LDM4MSwzNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwy''@;'; put 'put ''MjUsMjI0LDIyOCwyMjYsMjU5LDQ2MiwyNTcsMjYxLDIyOSwyMjcsMjYzLDI2NSwyNjksMjMxLDI2NywyNzEsMjMzLDIzMiwyMzUsMjM0LDI4MywyNzksMjc1LDI4MSw1MDEsMjg1LDI4NyxudWxsLDI4OSwyOTMsMjM3LDIzNiwyMzksMjM4LDQ2NCxudWxsLDI5OSwzMDMsMjk3LDMwOSwzMTEs''@;'; put 'put ''MzE0LDMxOCwzMTYsMzI0LDMyOCwzMjYsMjQxLDI0MywyNDIsMjQ2LDI0NCw0NjYsMzM3LDMzMywyNDUsMzQxLDM0NSwzNDMsMzQ3LDM0OSwzNTMsMzUxLDM1NywzNTUsMjUwLDI0OSwyNTIsMjUxLDM2NSw0NjgsMzY5LDM2MywzNzEsMzY3LDM2MSw0NzIsNDc2LDQ3NCw0NzAsMzczLDI1Mywy''@;'; put 'put ''NTUsMzc1LDM3OCwzODIsMzgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk3MCwxOTk3MiwxOTk3MywxOTk4MCwxOTk4NiwxOTk5OSwyMDAwMywyMDAw''@;'; put 'put ''NCwyMDAwOCwyMDAxMSwyMDAxNCwyMDAxNSwyMDAxNiwyMDAyMSwyMDAzMiwyMDAzMywyMDAzNiwyMDAzOSwyMDA0OSwyMDA1OCwyMDA2MCwyMDA2NywyMDA3MiwyMDA3MywyMDA4NCwyMDA4NSwyMDA4OSwyMDA5NSwyMDEwOSwyMDExOCwyMDExOSwyMDEyNSwyMDE0MywyMDE1MywyMDE2Mywy''@;'; put 'put ''MDE3NiwyMDE4NiwyMDE4NywyMDE5MiwyMDE5MywyMDE5NCwyMDIwMCwyMDIwNywyMDIwOSwyMDIxMSwyMDIxMywyMDIyMSwyMDIyMiwyMDIyMywyMDIyNCwyMDIyNiwyMDIyNywyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0NSwyMDI0NiwyMDI0NywyMDI0OSwyMDI3MCwyMDI3MywyMDMy''@;'; put 'put ''MCwyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4OCwyMDI5MCwyMDI5NiwyMDI5NywyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMxMiwyMDMxOSwyMDMyMywyMDMzMCwyMDMzMiwyMDMzNCwyMDMzNywyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwy''@;'; put 'put ''MDM1MCwyMDM1MywyMDM1NCwyMDM1NiwyMDM1NywyMDM2MSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MiwyMDM3NSwyMDM3NywyMDM3OCwyMDM4MiwyMDM4MywyMDQwMiwyMDQwNywyMDQwOSwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQy''@;'; put 'put ''MSwyMDQyMiwyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzMSwyMDQzNCwyMDQ0NCwyMDQ0OCwyMDQ1MCwyMDQ2NCwyMDQ2NiwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4NCwyMDQ4NywyMDQ5MCwyMDQ5MiwyMDQ5NCwyMDQ5NiwyMDQ5OSwyMDUwMywyMDUwNCwy''@;'; put 'put ''MDUwNywyMDUwOCwyMDUwOSwyMDUxMCwyMDUxNCwyMDUxOSwyMDUyNiwyMDUyOCwyMDUzMCwyMDUzMSwyMDUzMywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OSwyMDU1MCwyMDU1NCwyMDU1NiwyMDU1OCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NywyMDU2OSwyMDU3NSwyMDU3NiwyMDU3OCwyMDU3''@;'; put 'put ''OSwyMDU4MiwyMDU4MywyMDU4NiwyMDU4OSwyMDU5MiwyMDU5MywyMDUzOSwyMDYwOSwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxOCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNiwyMDYyNywyMDYyOCwyMDYzMCwyMDYzNSwyMDYzNiwyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY1MCwy''@;'; put 'put ''MDY1NSwyMDY1NiwyMDY2NSwyMDY2NiwyMDY2OSwyMDY3MiwyMDY3NSwyMDY3NiwyMDY3OSwyMDY4NCwyMDY4NiwyMDY4OCwyMDY5MSwyMDY5MiwyMDY5NiwyMDcwMCwyMDcwMSwyMDcwMywyMDcwNiwyMDcwOCwyMDcxMCwyMDcxMiwyMDcxMywyMDcxOSwyMDcyMSwyMDcyNiwyMDczMCwyMDcz''@;'; put 'put ''NCwyMDczOSwyMDc0MiwyMDc0MywyMDc0NCwyMDc0NywyMDc0OCwyMDc0OSwyMDc1MCwyMDcyMiwyMDc1MiwyMDc1OSwyMDc2MSwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc3MSwyMDc3NSwyMDc3NiwyMDc4MCwyMDc4MSwyMDc4MywyMDc4NSwyMDc4NywyMDc4OCwyMDc4OSwyMDc5Miwy''@;'; put 'put ''MDc5MywyMDgwMiwyMDgxMCwyMDgxNSwyMDgxOSwyMDgyMSwyMDgyMywyMDgyNCwyMDgzMSwyMDgzNiwyMDgzOCwyMDg2MiwyMDg2NywyMDg2OCwyMDg3NSwyMDg3OCwyMDg4OCwyMDg5MywyMDg5NywyMDg5OSwyMDkwOSwyMDkyMCwyMDkyMiwyMDkyNCwyMDkyNiwyMDkyNywyMDkzMCwyMDkz''@;'; put 'put ''NiwyMDk0MywyMDk0NSwyMDk0NiwyMDk0NywyMDk0OSwyMDk1MiwyMDk1OCwyMDk2MiwyMDk2NSwyMDk3NCwyMDk3OCwyMDk3OSwyMDk4MCwyMDk4MywyMDk5MywyMDk5NCwyMDk5NywyMTAxMCwyMTAxMSwyMTAxMywyMTAxNCwyMTAxNiwyMTAyNiwyMTAzMiwyMTA0MSwyMTA0MiwyMTA0NSwy''@;'; put 'put ''MTA1MiwyMTA2MSwyMTA2NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MiwyMTA4NCwyMTA4NywyMTA4OCwyMTA4OSwyMTA5NCwyMTEwMiwyMTExMSwyMTExMiwyMTExMywyMTEyMCwyMTEyMiwyMTEyNSwyMTEzMCwyMTEzMiwyMTEzOSwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NiwyMTE0''@;'; put 'put ''OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NywyMTE2OCwyMTE3NCwyMTE3NSwyMTE3NiwyMTE3OCwyMTE3OSwyMTE4MSwyMTE4NCwyMTE4OCwyMTE5MCwyMTE5MiwyMTE5NiwyMTE5OSwyMTIwMSwyMTIwNCwyMTIwNiwyMTIxMSwyMTIxMiwyMTIxNywyMTIyMSwyMTIyNCwyMTIyNSwy''@;'; put 'put ''MTIyNiwyMTIyOCwyMTIzMiwyMTIzMywyMTIzNiwyMTIzOCwyMTIzOSwyMTI0OCwyMTI1MSwyMTI1OCwyMTI1OSwyMTI2MCwyMTI2NSwyMTI2NywyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NiwyMTI5''@;'; put 'put ''OCwyMTMwMSwyMTMwOCwyMTMwOSwyMTMxMCwyMTMxNCwyMTMyNCwyMTMyMywyMTMzNywyMTMzOSwyMTM0NSwyMTM0NywyMTM0OSwyMTM1NiwyMTM1NywyMTM2MiwyMTM2OSwyMTM3NCwyMTM3OSwyMTM4MywyMTM4NCwyMTM5MCwyMTM5NSwyMTM5NiwyMTQwMSwyMTQwNSwyMTQwOSwyMTQxMiwy''@;'; put 'put ''MTQxOCwyMTQxOSwyMTQyMywyMTQyNiwyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzNCwyMTQzNywyMTQ0MCwyMTQ0NSwyMTQ1NSwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OSwyMTQ3MCwyMTQ3MiwyMTQ3OCwyMTQ3OSwyMTQ5MywyMTUwNiwyMTUyMywyMTUzMCwyMTUzNywyMTU0''@;'; put 'put ''MywyMTU0NCwyMTU0NiwyMTU1MSwyMTU1MywyMTU1NiwyMTU1NywyMTU3MSwyMTU3MiwyMTU3NSwyMTU4MSwyMTU4MywyMTU5OCwyMTYwMiwyMTYwNCwyMTYwNiwyMTYwNywyMTYwOSwyMTYxMSwyMTYxMywyMTYxNCwyMTYyMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTY0MCwyMTY0MSwy''@;'; put 'put ''MTY0NSwyMTY0OSwyMTY1MywyMTY1NCwyMTY2MCwyMTY2MywyMTY2NSwyMTY3MCwyMTY3MSwyMTY3MywyMTY3NCwyMTY3NywyMTY3OCwyMTY4MSwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MSwyMTY5NSwyMTcwMiwyMTcwNiwyMTcwOSwyMTcxMCwyMTcyOCwyMTczOCwyMTc0MCwyMTc0MywyMTc1''@;'; put 'put ''MCwyMTc1NiwyMTc1OCwyMTc1OSwyMTc2MCwyMTc2MSwyMTc2NSwyMTc2OCwyMTc2OSwyMTc3MiwyMTc3MywyMTc3NCwyMTc4MSwyMTgwMiwyMTgwMywyMTgxMCwyMTgxMywyMTgxNCwyMTgxOSwyMTgyMCwyMTgyMSwyMTgyNSwyMTgzMSwyMTgzMywyMTgzNCwyMTgzNywyMTg0MCwyMTg0MSwy''@;'; put 'put ''MTg0OCwyMTg1MCwyMTg1MSwyMTg1NCwyMTg1NiwyMTg1NywyMTg2MCwyMTg2MiwyMTg4NywyMTg4OSwyMTg5MCwyMTg5NCwyMTg5NiwyMTkwMiwyMTkwMywyMTkwNSwyMTkwNiwyMTkwNywyMTkwOCwyMTkxMSwyMTkyMywyMTkyNCwyMTkzMywyMTkzOCwyMTk1MSwyMTk1MywyMTk1NSwyMTk1''@;'; put 'put ''OCwyMTk2MSwyMTk2MywyMTk2NCwyMTk2NiwyMTk2OSwyMTk3MCwyMTk3MSwyMTk3NSwyMTk3NiwyMTk3OSwyMTk4MiwyMTk4NiwyMTk5MywyMjAwNiwyMjAxNSwyMjAyMSwyMjAyNCwyMjAyNiwyMjAyOSwyMjAzMCwyMjAzMSwyMjAzMiwyMjAzMywyMjAzNCwyMjA0MSwyMjA2MCwyMjA2NCwy''@;'; put 'put ''MjA2NywyMjA2OSwyMjA3MSwyMjA3MywyMjA3NSwyMjA3NiwyMjA3NywyMjA3OSwyMjA4MCwyMjA4MSwyMjA4MywyMjA4NCwyMjA4NiwyMjA4OSwyMjA5MSwyMjA5MywyMjA5NSwyMjEwMCwyMjExMCwyMjExMiwyMjExMywyMjExNCwyMjExNSwyMjExOCwyMjEyMSwyMjEyNSwyMjEyNywyMjEy''@;'; put 'put ''OSwyMjEzMCwyMjEzMywyMjE0OCwyMjE0OSwyMjE1MiwyMjE1NSwyMjE1NiwyMjE2NSwyMjE2OSwyMjE3MCwyMjE3MywyMjE3NCwyMjE3NSwyMjE4MiwyMjE4MywyMjE4NCwyMjE4NSwyMjE4NywyMjE4OCwyMjE4OSwyMjE5MywyMjE5NSwyMjE5OSwyMjIwNiwyMjIxMywyMjIxNywyMjIxOCwy''@;'; put 'put ''MjIxOSwyMjIyMywyMjIyNCwyMjIyMCwyMjIyMSwyMjIzMywyMjIzNiwyMjIzNywyMjIzOSwyMjI0MSwyMjI0NCwyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI1NywyMjI1MSwyMjI1MywyMjI2MiwyMjI2MywyMjI3MywyMjI3NCwyMjI3OSwyMjI4MiwyMjI4NCwyMjI4OSwyMjI5MywyMjI5''@;'; put 'put ''OCwyMjI5OSwyMjMwMSwyMjMwNCwyMjMwNiwyMjMwNywyMjMwOCwyMjMwOSwyMjMxMywyMjMxNCwyMjMxNiwyMjMxOCwyMjMxOSwyMjMyMywyMjMyNCwyMjMzMywyMjMzNCwyMjMzNSwyMjM0MSwyMjM0MiwyMjM0OCwyMjM0OSwyMjM1NCwyMjM3MCwyMjM3MywyMjM3NSwyMjM3NiwyMjM3OSwy''@;'; put 'put ''MjM4MSwyMjM4MiwyMjM4MywyMjM4NCwyMjM4NSwyMjM4NywyMjM4OCwyMjM4OSwyMjM5MSwyMjM5MywyMjM5NCwyMjM5NSwyMjM5NiwyMjM5OCwyMjQwMSwyMjQwMywyMjQxMiwyMjQyMCwyMjQyMywyMjQyNSwyMjQyNiwyMjQyOCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzMywyMjQyMSwyMjQz''@;'; put 'put ''OSwyMjQ0MCwyMjQ0MSwyMjQ0NCwyMjQ1NiwyMjQ2MSwyMjQ3MSwyMjQ3MiwyMjQ3NiwyMjQ3OSwyMjQ4NSwyMjQ5MywyMjQ5NCwyMjUwMCwyMjUwMiwyMjUwMywyMjUwNSwyMjUwOSwyMjUxMiwyMjUxNywyMjUxOCwyMjUyMCwyMjUyNSwyMjUyNiwyMjUyNywyMjUzMSwyMjUzMiwyMjUzNiwy''@;'; put 'put ''MjUzNywyMjQ5NywyMjU0MCwyMjU0MSwyMjU1NSwyMjU1OCwyMjU1OSwyMjU2MCwyMjU2NiwyMjU2NywyMjU3MywyMjU3OCwyMjU4NSwyMjU5MSwyMjYwMSwyMjYwNCwyMjYwNSwyMjYwNywyMjYwOCwyMjYxMywyMjYyMywyMjYyNSwyMjYyOCwyMjYzMSwyMjYzMiwyMjY0OCwyMjY1MiwyMjY1''@;'; put 'put ''NSwyMjY1NiwyMjY1NywyMjY2MywyMjY2NCwyMjY2NSwyMjY2NiwyMjY2OCwyMjY2OSwyMjY3MSwyMjY3MiwyMjY3NiwyMjY3OCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwyMjY5NCwyMjY5NywyMjcwNSwyMjcwNiwyMjcyNCwyMjcxNiwyMjcyMiwyMjcyOCwyMjczMywyMjczNCwyMjczNiwy''@;'; put 'put ''MjczOCwyMjc0MCwyMjc0MiwyMjc0NiwyMjc0OSwyMjc1MywyMjc1NCwyMjc2MSwyMjc3MSwyMjc4OSwyMjc5MCwyMjc5NSwyMjc5NiwyMjgwMiwyMjgwMywyMjgwNCwzNDM2OSwyMjgxMywyMjgxNywyMjgxOSwyMjgyMCwyMjgyNCwyMjgzMSwyMjgzMiwyMjgzNSwyMjgzNywyMjgzOCwyMjg0''@;'; put 'put ''NywyMjg1MSwyMjg1NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg5MSwyMjg5MywyMjg5NSwyMjg5OCwyMjkwMSwyMjkwMiwyMjkwNSwyMjkwNywyMjkwOCwyMjkyMywyMjkyNCwyMjkyNiwyMjkzMCwyMjkzMywyMjkzNSwyMjk0Mywy''@;'; put 'put ''Mjk0OCwyMjk1MSwyMjk1NywyMjk1OCwyMjk1OSwyMjk2MCwyMjk2MywyMjk2NywyMjk3MCwyMjk3MiwyMjk3NywyMjk3OSwyMjk4MCwyMjk4NCwyMjk4NiwyMjk4OSwyMjk5NCwyMzAwNSwyMzAwNiwyMzAwNywyMzAxMSwyMzAxMiwyMzAxNSwyMzAyMiwyMzAyMywyMzAyNSwyMzAyNiwyMzAy''@;'; put 'put ''OCwyMzAzMSwyMzA0MCwyMzA0NCwyMzA1MiwyMzA1MywyMzA1NCwyMzA1OCwyMzA1OSwyMzA3MCwyMzA3NSwyMzA3NiwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4NSwyMzA4OCwyMzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNiwyMzEyMCwyMzEyNSwyMzEzNCwyMzEzOSwyMzE0MSwyMzE0Mywy''@;'; put 'put ''MzE0OSwyMzE1OSwyMzE2MiwyMzE2MywyMzE2NiwyMzE3OSwyMzE4NCwyMzE4NywyMzE5MCwyMzE5MywyMzE5NiwyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMiwyMzIwNywyMzIxMiwyMzIxNywyMzIxOCwyMzIxOSwyMzIyMSwyMzIyNCwyMzIyNiwyMzIyNywyMzIzMSwyMzIzNiwyMzIzOCwyMzI0''@;'; put 'put ''MCwyMzI0NywyMzI1OCwyMzI2MCwyMzI2NCwyMzI2OSwyMzI3NCwyMzI3OCwyMzI4NSwyMzI4NiwyMzI5MywyMzI5NiwyMzI5NywyMzMwNCwyMzMxOSwyMzM0OCwyMzMyMSwyMzMyMywyMzMyNSwyMzMyOSwyMzMzMywyMzM0MSwyMzM1MiwyMzM2MSwyMzM3MSwyMzM3MiwyMzM3OCwyMzM4Miwy''@;'; put 'put ''MzM5MCwyMzQwMCwyMzQwNiwyMzQwNywyMzQyMCwyMzQyMSwyMzQyMiwyMzQyMywyMzQyNSwyMzQyOCwyMzQzMCwyMzQzNCwyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MywyMzQ0NCwyMzQ0NiwyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2OSwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4''@;'; put 'put ''NCwyMzQ4OCwyMzQ4OSwyMzUwMSwyMzUwMywyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUyMCwyMzUzNSwyMzUzNywyMzU0MCwyMzU0OSwyMzU2NCwyMzU3NSwyMzU4MiwyMzU4MywyMzU4NywyMzU5MCwyMzU5MywyMzU5NSwyMzU5NiwyMzU5OCwyMzYwMCwyMzYwMiwyMzYwNSwy''@;'; put 'put ''MzYwNiwyMzY0MSwyMzY0MiwyMzY0NCwyMzY1MCwyMzY1MSwyMzY1NSwyMzY1NiwyMzY1NywyMzY2MSwyMzY2NCwyMzY2OCwyMzY2OSwyMzY3NCwyMzY3NSwyMzY3NiwyMzY3NywyMzY4NywyMzY4OCwyMzY5MCwyMzY5NSwyMzY5OCwyMzcwOSwyMzcxMSwyMzcxMiwyMzcxNCwyMzcxNSwyMzcx''@;'; put 'put ''OCwyMzcyMiwyMzczMCwyMzczMiwyMzczMywyMzczOCwyMzc1MywyMzc1NSwyMzc2MiwyMzc3MywyMzc2NywyMzc5MCwyMzc5MywyMzc5NCwyMzc5NiwyMzgwOSwyMzgxNCwyMzgyMSwyMzgyNiwyMzg1MSwyMzg0MywyMzg0NCwyMzg0NiwyMzg0NywyMzg1NywyMzg2MCwyMzg2NSwyMzg2OSwy''@;'; put 'put ''Mzg3MSwyMzg3NCwyMzg3NSwyMzg3OCwyMzg4MCwyMzg5MywyMzg4OSwyMzg5NywyMzg4MiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwOCwyMzkxNCwyMzkxNywyMzkyMCwyMzkyOSwyMzkzMCwyMzkzNCwyMzkzNSwyMzkzNywyMzkzOSwyMzk0NCwyMzk0NiwyMzk1NCwyMzk1NSwyMzk1''@;'; put 'put ''NiwyMzk1NywyMzk2MSwyMzk2MywyMzk2NywyMzk2OCwyMzk3NSwyMzk3OSwyMzk4NCwyMzk4OCwyMzk5MiwyMzk5MywyNDAwMywyNDAwNywyNDAxMSwyNDAxNiwyNDAxNCwyNDAyNCwyNDAyNSwyNDAzMiwyNDAzNiwyNDA0MSwyNDA1NiwyNDA1NywyNDA2NCwyNDA3MSwyNDA3NywyNDA4Miwy''@;'; put 'put ''NDA4NCwyNDA4NSwyNDA4OCwyNDA5NSwyNDA5NiwyNDExMCwyNDEwNCwyNDExNCwyNDExNywyNDEyNiwyNDEzOSwyNDE0NCwyNDEzNywyNDE0NSwyNDE1MCwyNDE1MiwyNDE1NSwyNDE1NiwyNDE1OCwyNDE2OCwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NiwyNDE5MiwyNDIw''@;'; put 'put ''MywyNDIwNiwyNDIyNiwyNDIyOCwyNDIyOSwyNDIzMiwyNDIzNCwyNDIzNiwyNDI0MSwyNDI0MywyNDI1MywyNDI1NCwyNDI1NSwyNDI2MiwyNDI2OCwyNDI2NywyNDI3MCwyNDI3MywyNDI3NCwyNDI3NiwyNDI3NywyNDI4NCwyNDI4NiwyNDI5MywyNDI5OSwyNDMyMiwyNDMyNiwyNDMyNywy''@;'; put 'put ''NDMyOCwyNDMzNCwyNDM0NSwyNDM0OCwyNDM0OSwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MiwyNDM3NCwyNDM3OSwyNDM4MSwyNDM4MywyNDM4NCwyNDM4OCwyNDM4OSwyNDM5MSwyNDM5NywyNDQwMCwyNDQwNCwyNDQwOCwyNDQx''@;'; put 'put ''MSwyNDQxNiwyNDQxOSwyNDQyMCwyNDQyMywyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ1NywyNDQ2MSwyNDQ2MywyNDQ3MCwyNDQ3NiwyNDQ3NywyNDQ4MiwyNDQ4NywyNDQ5MSwyNDQ4NCwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDUwNCwy''@;'; put 'put ''NDUxNiwyNDUxOSwyNDUyMCwyNDUyMSwyNDUyMywyNDUyOCwyNDUyOSwyNDUzMCwyNDUzMSwyNDUzMiwyNDU0MiwyNDU0NSwyNDU0NiwyNDU1MiwyNDU1MywyNDU1NCwyNDU1NiwyNDU1NywyNDU1OCwyNDU1OSwyNDU2MiwyNDU2MywyNDU2NiwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NiwyNDU4''@;'; put 'put ''OSwyNDU5NSwyNDU5NiwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNywyNDYxMiwyNDYyMSwyNDYyNywyNDYyOSwyNDY0MCwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MiwyNDY1NywyNDY2MCwyNDY2MiwyNDY2MywyNDY2OSwyNDY3MywyNDY3OSwyNDY4OSwyNDcwMiwyNDcwMywyNDcwNiwyNDcxMCwy''@;'; put 'put ''NDcxMiwyNDcxNCwyNDcxOCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyOCwyNDczMywyNDczNCwyNDczOCwyNDc0MCwyNDc0MSwyNDc0NCwyNDc1MiwyNDc1MywyNDc1OSwyNDc2MywyNDc2NiwyNDc3MCwyNDc3MiwyNDc3NiwyNDc3NywyNDc3OCwyNDc3OSwyNDc4MiwyNDc4MywyNDc4OCwyNDc4''@;'; put 'put ''OSwyNDc5MywyNDc5NSwyNDc5NywyNDc5OCwyNDgwMiwyNDgwNSwyNDgxOCwyNDgyMSwyNDgyNCwyNDgyOCwyNDgyOSwyNDgzNCwyNDgzOSwyNDg0MiwyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NywyNDg2MCwyNDg2MiwyNDg2NiwyNDg3NCwy''@;'; put 'put ''NDg3NSwyNDg4MCwyNDg4MSwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OSwyNDg5NywyNDkwMSwyNDkwMiwyNDkwNSwyNDkyNiwyNDkyOCwyNDk0MCwyNDk0NiwyNDk1MiwyNDk1NSwyNDk1NiwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MywyNDk2NCwyNDk3MSwyNDk3MywyNDk3OCwyNDk3OSwyNDk4''@;'; put 'put ''MywyNDk4NCwyNDk4OCwyNDk4OSwyNDk5MSwyNDk5MiwyNDk5NywyNWUzLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1''@;'; put 'put ''MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0''@;'; put 'put ''LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1''@;'; put 'put ''MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDExLDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2''@;'; put 'put ''LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1''@;'; put 'put ''NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgwLDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkzLDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0''@;'; put 'put ''LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1''@;'; put 'put ''NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1NzkwLDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0''@;'; put 'put ''LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1''@;'; put 'put ''ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUyLDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEz''@;'; put 'put ''LDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2''@;'; put 'put ''MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4''@;'; put 'put ''LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2''@;'; put 'put ''MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUw''@;'; put 'put ''LDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2''@;'; put 'put ''NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYyLDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4''@;'; put 'put ''LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2''@;'; put 'put ''NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0''@;'; put 'put ''LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2''@;'; put 'put ''ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgxLDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTkyLDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4''@;'; put 'put ''LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3''@;'; put 'put ''MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIx''@;'; put 'put ''LDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3''@;'; put 'put ''MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1''@;'; put 'put ''LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3''@;'; put 'put ''NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgyLDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMw''@;'; put 'put ''LDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3''@;'; put 'put ''NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3NzgyLDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4''@;'; put 'put ''LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3''@;'; put 'put ''OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0''@;'; put 'put ''LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4''@;'; put 'put ''MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAx''@;'; put 'put ''LDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4''@;'; put 'put ''NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYxLDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0''@;'; put 'put ''LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4''@;'; put 'put ''NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5''@;'; put 'put ''LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4''@;'; put 'put ''ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQwLDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1''@;'; put 'put ''LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5''@;'; put 'put ''MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkzLDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIw''@;'; put 'put ''LDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5''@;'; put 'put ''MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5MzgzLDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1''@;'; put 'put ''LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5''@;'; put 'put ''NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTky''@;'; put 'put ''LDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5''@;'; put 'put ''NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAzLDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMyLDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQw''@;'; put 'put ''LDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5''@;'; put 'put ''ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgx''@;'; put 'put ''LDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5''@;'; put 'put ''OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMyLDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2''@;'; put 'put ''LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMwMTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMw''@;'; put 'put ''MTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2''@;'; put 'put ''LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMwMjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMwMzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMw''@;'; put 'put ''MzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1''@;'; put 'put ''LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMwNDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMwNTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMw''@;'; put 'put ''NTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcwLDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2''@;'; put 'put ''LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMwNjc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMw''@;'; put 'put ''NjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUzLDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzky''@;'; put 'put ''LDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMwODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMwODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMw''@;'; put 'put ''ODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcw''@;'; put 'put ''LDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMxMDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMxMDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMx''@;'; put 'put ''MDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMyLDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUz''@;'; put 'put ''LDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMxMjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMxMjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMx''@;'; put 'put ''MjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkwLDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3''@;'; put 'put ''LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMxMzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMxNDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMx''@;'; put 'put ''NDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMxLDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQw''@;'; put 'put ''LDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMxNjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMxNjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMx''@;'; put 'put ''NjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAzLDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIyLDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4''@;'; put 'put ''LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMxNzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMxNzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMx''@;'; put 'put ''ODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEw''@;'; put 'put ''LDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMxOTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMxOTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMy''@;'; put 'put ''MDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgxLDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkz''@;'; put 'put ''LDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMyMTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMy''@;'; put 'put ''MTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3''@;'; put 'put ''LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMyMzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMyMzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMy''@;'; put 'put ''Mzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkxLDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5''@;'; put 'put ''LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMyNjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMyNjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMy''@;'; put 'put ''NzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3''@;'; put 'put ''LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMyODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMy''@;'; put 'put ''OTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3''@;'; put 'put ''LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMzMTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMzMTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMz''@;'; put 'put ''MTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIxLDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5''@;'; put 'put ''LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMzMzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMz''@;'; put 'put ''MzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0''@;'; put 'put ''LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMzNDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMzNDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMz''@;'; put 'put ''NTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgyLDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3''@;'; put 'put ''LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMzNjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMzNjg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMz''@;'; put 'put ''NzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcwLDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkzLDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3''@;'; put 'put ''LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMzODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMzOTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMz''@;'; put 'put ''OTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMx''@;'; put 'put ''LDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0''@;'; put 'put ''MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcxLDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1''@;'; put 'put ''LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0''@;'; put 'put ''MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIyLDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0''@;'; put 'put ''LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0''@;'; put 'put ''NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMz''@;'; put 'put ''LDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0''@;'; put 'put ''NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0NjkyLDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzEx''@;'; put 'put ''LDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0''@;'; put 'put ''Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQzLDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYy''@;'; put 'put ''LDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0''@;'; put 'put ''OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIyLDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYz''@;'; put 'put ''LDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1''@;'; put 'put ''MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIwLDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3''@;'; put 'put ''LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1''@;'; put 'put ''MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDExLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1''@;'; put 'put ''LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1''@;'; put 'put ''NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgzLDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0''@;'; put 'put ''LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1''@;'; put 'put ''NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQw''@;'; put 'put ''LDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2''@;'; put 'put ''MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAxLDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMy''@;'; put 'put ''LDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2''@;'; put 'put ''MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2''@;'; put 'put ''LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2''@;'; put 'put ''NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0''@;'; put 'put ''LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2''@;'; put 'put ''NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAyLDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4''@;'; put 'put ''LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2''@;'; put 'put ''OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3LDM3ZTMsMzcwMDMsMzcwMDQsMzcwMDYsMzcwMDgsMzcwMTMs''@;'; put 'put ''MzcwMTUsMzcwMTYsMzcwMTcsMzcwMTksMzcwMjQsMzcwMjUsMzcwMjYsMzcwMjksMzcwNDAsMzcwNDIsMzcwNDMsMzcwNDQsMzcwNDYsMzcwNTMsMzcwNjgsMzcwNTQsMzcwNTksMzcwNjAsMzcwNjEsMzcwNjMsMzcwNjQsMzcwNzcsMzcwNzksMzcwODAsMzcwODEsMzcwODQsMzcwODUsMzcw''@;'; put 'put ''ODcsMzcwOTMsMzcwNzQsMzcxMTAsMzcwOTksMzcxMDMsMzcxMDQsMzcxMDgsMzcxMTgsMzcxMTksMzcxMjAsMzcxMjQsMzcxMjUsMzcxMjYsMzcxMjgsMzcxMzMsMzcxMzYsMzcxNDAsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDgsMzcxNTAsMzcxNTIsMzcxNTcsMzcxNTQsMzcxNTUs''@;'; put 'put ''MzcxNTksMzcxNjEsMzcxNjYsMzcxNjcsMzcxNjksMzcxNzIsMzcxNzQsMzcxNzUsMzcxNzcsMzcxNzgsMzcxODAsMzcxODEsMzcxODcsMzcxOTEsMzcxOTIsMzcxOTksMzcyMDMsMzcyMDcsMzcyMDksMzcyMTAsMzcyMTEsMzcyMTcsMzcyMjAsMzcyMjMsMzcyMjksMzcyMzYsMzcyNDEsMzcy''@;'; put 'put ''NDIsMzcyNDMsMzcyNDksMzcyNTEsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNjIsMzcyNjUsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzIsMzcyNzgsMzcyODEsMzcyODYsMzcyODgsMzcyOTIsMzcyOTMsMzcyOTQsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDcsMzczMDgsMzczMDks''@;'; put 'put ''MzczMTEsMzczMTQsMzczMTUsMzczMTcsMzczMzEsMzczMzIsMzczMzUsMzczMzcsMzczMzgsMzczNDIsMzczNDgsMzczNDksMzczNTMsMzczNTQsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjcsMzczNjksMzczNzEsMzczNzMsMzczNzYsMzczNzcsMzczODAsMzcz''@;'; put 'put ''ODEsMzczODIsMzczODMsMzczODUsMzczODYsMzczODgsMzczOTIsMzczOTQsMzczOTUsMzczOTgsMzc0MDAsMzc0MDQsMzc0MDUsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTYsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjcsMzc0MjksMzc0MzAsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzYs''@;'; put 'put ''Mzc0MzgsMzc0NDAsMzc0NDIsMzc0NDMsMzc0NDYsMzc0NDcsMzc0NTAsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTcsMzc0NjQsMzc0NjUsMzc0NjgsMzc0NjksMzc0NzIsMzc0NzMsMzc0NzcsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODYsMzc0ODcsMzc0ODgsMzc0OTMsMzc0OTQsMzc0OTUsMzc0''@;'; put 'put ''OTYsMzc0OTcsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDMsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTcsMzc1MTgsMzc1MjIsMzc1MjcsMzc1MjksMzc1MzUsMzc1MzYsMzc1NDAsMzc1NDEsMzc1NDMsMzc1NDQsMzc1NDcsMzc1NTEsMzc1NTQsMzc1NTgsMzc1NjAsMzc1NjIsMzc1NjMsMzc1NjQs''@;'; put 'put ''Mzc1NjUsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzYsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODQsMzc1ODcsMzc1ODksMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTYsMzc1OTcsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDMsMzc2MDUsMzc2''@;'; put 'put ''MDcsMzc2MDgsMzc2MTIsMzc2MTQsMzc2MTYsMzc2MjUsMzc2MjcsMzc2MzEsMzc2MzIsMzc2MzQsMzc2NDAsMzc2NDUsMzc2NDksMzc2NTIsMzc2NTMsMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjUsMzc2NjgsMzc2NjksMzc2NzEsMzc2NzMsMzc2NzQsMzc2ODMsMzc2ODQsMzc2ODYs''@;'; put 'put ''Mzc2ODcsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTcsMzc3MTksMzc3MjAsMzc3MjIsMzc3MjYsMzc3MzIsMzc3MzMsMzc3MzUsMzc3MzcsMzc3MzgsMzc3NDEsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDcsMzc3NDgsMzc3NTAsMzc3NTQsMzc3NTcsMzc3NTksMzc3''@;'; put 'put ''NjAsMzc3NjEsMzc3NjIsMzc3NjgsMzc3NzAsMzc3NzEsMzc3NzMsMzc3NzUsMzc3NzgsMzc3ODEsMzc3ODQsMzc3ODcsMzc3OTAsMzc3OTMsMzc3OTUsMzc3OTYsMzc3OTgsMzc4MDAsMzc4MDMsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTgsMzc4MDEsMzc4MjUsMzc4MjgsMzc4MjksMzc4MzAs''@;'; put 'put ''Mzc4MzEsMzc4MzMsMzc4MzQsMzc4MzUsMzc4MzYsMzc4MzcsMzc4NDMsMzc4NDksMzc4NTIsMzc4NTQsMzc4NTUsMzc4NTgsMzc4NjIsMzc4NjMsMzc4ODEsMzc4NzksMzc4ODAsMzc4ODIsMzc4ODMsMzc4ODUsMzc4ODksMzc4OTAsMzc4OTIsMzc4OTYsMzc4OTcsMzc5MDEsMzc5MDIsMzc5''@;'; put 'put ''MDMsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTksMzc5MzQsMzc5MzUsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDcsMzc5NTEsMzc5NDksMzc5NTUsMzc5NTcsMzc5NjAsMzc5NjIsMzc5NjQsMzc5NzMsMzc5NzcsMzc5ODAsMzc5ODMsMzc5ODUsMzc5ODcsMzc5OTIsMzc5OTUsMzc5OTcs''@;'; put 'put ''Mzc5OTgsMzc5OTksMzgwMDEsMzgwMDIsMzgwMjAsMzgwMTksMzgyNjQsMzgyNjUsMzgyNzAsMzgyNzYsMzgyODAsMzgyODQsMzgyODUsMzgyODYsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDUsMzgzMTAsMzgzMTMsMzgzMTUsMzgzMTYsMzgzMjQsMzgzMjYsMzgzMzAsMzgzMzMsMzgzMzUsMzgz''@;'; put 'put ''NDIsMzgzNDQsMzgzNDUsMzgzNDcsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNjEsMzgzNjIsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNzIsMzgzNzQsMzg0MjksMzg0MzAsMzg0MzQsMzg0MzYsMzg0MzcsMzg0MzgsMzg0NDQsMzg0NDksMzg0NTEsMzg0NTUsMzg0NTYsMzg0NTcs''@;'; put 'put ''Mzg0NTgsMzg0NjAsMzg0NjEsMzg0NjUsMzg0ODIsMzg0ODQsMzg0ODYsMzg0ODcsMzg0ODgsMzg0OTcsMzg1MTAsMzg1MTYsMzg1MjMsMzg1MjQsMzg1MjYsMzg1MjcsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzcsMzg1NDUsMzg1NTAsMzg1NTQsMzg1NTcsMzg1NTksMzg1NjQsMzg1''@;'; put 'put ''NjUsMzg1NjYsMzg1NjksMzg1NzQsMzg1NzUsMzg1NzksMzg1ODYsMzg2MDIsMzg2MTAsMjM5ODYsMzg2MTYsMzg2MTgsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MzMsMzg2MzksMzg2NDEsMzg2NTAsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjUsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODksMzg2OTAs''@;'; put 'put ''Mzg2OTEsMzg2OTYsMzg3MDUsMzg3MDcsMzg3MjEsMzg3MjMsMzg3MzAsMzg3MzQsMzg3MzUsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDcsMzg3NTUsMzg3NTksMzg3NjIsMzg3NjYsMzg3NzEsMzg3NzQsMzg3NzUsMzg3NzYsMzg3NzksMzg3ODEsMzg3ODMsMzg3ODQsMzg3OTMsMzg4''@;'; put 'put ''MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTQsMzg4MTUsMzg4MTgsMzg4MjgsMzg4MzAsMzg4MzMsMzg4MzQsMzg4MzcsMzg4MzgsMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDQsMzg4NDYsMzg4NDcsMzg4NDksMzg4NTIsMzg4NTMsMzg4NTUsMzg4NTcsMzg4NTgsMzg4NjAsMzg4NjEs''@;'; put 'put ''Mzg4NjIsMzg4NjQsMzg4NjUsMzg4NjgsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzcsMzg4NzgsMzg4ODAsMzg4NzUsMzg4ODEsMzg4ODQsMzg4OTUsMzg4OTcsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDYsMzg5MTksMzg5MjIsMzg5MzcsMzg5MjUsMzg5MjYsMzg5MzIsMzg5MzQsMzg5NDAsMzg5''@;'; put 'put ''NDIsMzg5NDQsMzg5NDcsMzg5NTAsMzg5NTUsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjIsMzg5NjMsMzg5NjUsMzg5NDksMzg5NzQsMzg5ODAsMzg5ODMsMzg5ODYsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTgsMzg5OTksMzkwMDEsMzkwMDIsMzkwMTAsMzkwMTEsMzkwMTMsMzkwMTQsMzkwMTgs''@;'; put 'put ''MzkwMjAsMzkwODMsMzkwODUsMzkwODYsMzkwODgsMzkwOTIsMzkwOTUsMzkwOTYsMzkwOTgsMzkwOTksMzkxMDMsMzkxMDYsMzkxMDksMzkxMTIsMzkxMTYsMzkxMzcsMzkxMzksMzkxNDEsMzkxNDIsMzkxNDMsMzkxNDYsMzkxNTUsMzkxNTgsMzkxNzAsMzkxNzUsMzkxNzYsMzkxODUsMzkx''@;'; put 'put ''ODksMzkxOTAsMzkxOTEsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTksMzkyMDIsMzkyMDYsMzkyMDcsMzkyMTEsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMzIsMzkyMzMsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDUsMzkyNDYsMzkyNTIs''@;'; put 'put ''MzkyNTYsMzkyNTcsMzkyNTksMzkyNjAsMzkyNjIsMzkyNjMsMzkyNjQsMzkzMjMsMzkzMjUsMzkzMjcsMzkzMzQsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDksMzkzNTMsMzkzNTQsMzkzNTcsMzkzNTksMzkzNjMsMzkzNjksMzkzNzksMzkzODAsMzkzODUsMzkzODYsMzkzODgsMzkzOTAsMzkz''@;'; put 'put ''OTksMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDgsMzk0MTIsMzk0MTMsMzk0MTcsMzk0MjEsMzk0MjIsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MzUsMzk0MzYsMzk0NDAsMzk0NDEsMzk0NDYsMzk0NTQsMzk0NTYsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjMsMzk0NjksMzk0NzAsMzk0NzUsMzk0Nzcs''@;'; put 'put ''Mzk0NzgsMzk0ODAsMzk0OTUsMzk0ODksMzk0OTIsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDIsMzk1MDUsMzk1MDgsMzk1MTAsMzk1MTcsMzk1OTQsMzk1OTYsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDQsMzk2MDUsMzk2MDYsMzk2MDksMzk2MTEsMzk2MTQsMzk2MTUsMzk2MTcsMzk2MTksMzk2''@;'; put 'put ''MjIsMzk2MjQsMzk2MzAsMzk2MzIsMzk2MzQsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDMsMzk2NDQsMzk2NDgsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTcsMzk2NjAsMzk2NjYsMzk2NjcsMzk2NjksMzk2NzMsMzk2NzQsMzk2NzcsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODMsMzk2ODQs''@;'; put 'put ''Mzk2ODUsMzk2ODgsMzk2ODksMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTgsMzk3MDIsMzk3MDUsMzk3MDcsMzk3MDgsMzk3MTIsMzk3MTgsMzk3MjMsMzk3MjUsMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzUsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NTIsMzk3NTUsMzk3NTYsMzk3''@;'; put 'put ''NjUsMzk3NjYsMzk3NjcsMzk3NzEsMzk3NzQsMzk3NzcsMzk3NzksMzk3ODEsMzk3ODIsMzk3ODQsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTUsMzk3OTcsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDcsMzk4MDgsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTcsMzk4MTgs''@;'; put 'put ''Mzk4MTksMzk4MjEsMzk4MjMsMzk4MjQsMzk4MjgsMzk4MzQsMzk4MzcsMzk4MzgsMzk4NDYsMzk4NDcsMzk4NDksMzk4NTIsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NjMsMzk4NjQsMzk4NjcsMzk4NjgsMzk4NzAsMzk4NzEsMzk4NzMsMzk4NzksMzk4ODAsMzk4ODYsMzk4ODgsMzk4OTUsMzk4''@;'; put 'put ''OTYsMzk5MDEsMzk5MDMsMzk5MDksMzk5MTEsMzk5MTQsMzk5MTUsMzk5MTksMzk5MjMsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzMsMzk5MzUsMzk5MzYsMzk5MzgsMzk5NDcsMzk5NTEsMzk5NTMsMzk5NTgsMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjQsMzk5NjYsMzk5NzAsMzk5NzEs''@;'; put 'put ''Mzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5ODUsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTcsNDAwMDEsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDksNDAwMTAsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTksNDAwMjAsNDAwMjIsNDAwMjQsNDAwMjcsNDAwMjksNDAwMzAsNDAwMzEsNDAw''@;'; put 'put ''MzUsNDAwNDEsNDAwNDIsNDAwMjgsNDAwNDMsNDAwNDAsNDAwNDYsNDAwNDgsNDAwNTAsNDAwNTMsNDAwNTUsNDAwNTksNDAxNjYsNDAxNzgsNDAxODMsNDAxODUsNDAyMDMsNDAxOTQsNDAyMDksNDAyMTUsNDAyMTYsNDAyMjAsNDAyMjEsNDAyMjIsNDAyMzksNDAyNDAsNDAyNDIsNDAyNDMs''@;'; put 'put ''NDAyNDQsNDAyNTAsNDAyNTIsNDAyNjEsNDAyNTMsNDAyNTgsNDAyNTksNDAyNjMsNDAyNjYsNDAyNzUsNDAyNzYsNDAyODcsNDAyOTEsNDAyOTAsNDAyOTMsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDQsNDAzMTAsNDAzMTEsNDAzMTUsNDAzMTYsNDAzMTgsNDAzMjMsNDAzMjQsNDAzMjYsNDAz''@;'; put 'put ''MzAsNDAzMzMsNDAzMzQsNDAzMzgsNDAzMzksNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNTMsNDAzNjIsNDAzNjQsNDAzNjYsNDAzNjksNDAzNzMsNDAzNzcsNDAzODAsNDAzODMsNDAzODcsNDAzOTEsNDAzOTMsNDAzOTQsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MTAsNDA0MTQs''@;'; put 'put ''NDA0MTUsNDA0MTYsNDA0MjEsNDA0MjMsNDA0MjUsNDA0MjcsNDA0MzAsNDA0MzIsNDA0MzUsNDA0MzYsNDA0NDYsNDA0NTgsNDA0NTAsNDA0NTUsNDA0NjIsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjksNDA0NzAsNDA0NzMsNDA0NzYsNDA0NzcsNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzYsNDA1''@;'; put 'put ''NzgsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODMsNDA1OTAsNDA1OTEsNDA1OTgsNDA2MDAsNDA2MDMsNDA2MDYsNDA2MTIsNDA2MTYsNDA2MjAsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjcsNDA2MjgsNDA2MjksNDA2NDYsNDA2NDgsNDA2NTEsNDA2NjEsNDA2NzEsNDA2NzYsNDA2NzksNDA2ODQs''@;'; put 'put ''NDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTMsNDA2OTYsNDA3MDMsNDA3MDYsNDA3MDcsNDA3MTMsNDA3MTksNDA3MjAsNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjYsNDA3MjcsNDA3MjksNDA3MzAsNDA3MzEsNDA3MzUsNDA3MzgsNDA3NDIsNDA3NDYsNDA3NDcsNDA3NTEsNDA3''@;'; put 'put ''NTMsNDA3NTQsNDA3NTYsNDA3NTksNDA3NjEsNDA3NjIsNDA3NjQsNDA3NjUsNDA3NjcsNDA3NjksNDA3NzEsNDA3NzIsNDA3NzMsNDA3NzQsNDA3NzUsNDA3ODcsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTQsNDA3OTcsNDA3OTgsNDA4MDgsNDA4MDksNDA4MTMsNDA4MTQsNDA4MTUs''@;'; put 'put ''NDA4MTYsNDA4MTcsNDA4MTksNDA4MjEsNDA4MjYsNDA4MjksNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTIsNDA4NTQsNDA4NTUsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxpYm04NjY6WzEwNDAsMTA0''@;'; put 'put ''MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3''@;'; put 'put ''NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUw''@;'; put 'put ''MCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5''@;'; put 'put ''MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIsMTYwXSwiaXNvLTg4NTktMiI6WzEyOCwxMjksMTMwLDEzMSwx''@;'; put 'put ''MzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3''@;'; put 'put ''MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0''@;'; put 'put ''LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3Mjld''@;'; put 'put ''LCJpc28tODg1OS0zIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51''@;'; put 'put ''bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1''@;'; put 'put ''LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcsMjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwy''@;'; put 'put ''NDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLCJpc28tODg1OS00IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1''@;'; put 'put ''LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEsMzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYs''@;'; put 'put ''MTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYwLDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywy''@;'; put 'put ''MzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sImlzby04ODU5LTUiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3''@;'; put 'put ''LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0''@;'; put 'put ''NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4''@;'; put 'put ''MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTEx''@;'; put 'put ''MywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSwiaXNvLTg4NTktNiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3''@;'; put 'put ''LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3''@;'; put 'put ''LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAw''@;'; put 'put ''LDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJpc28tODg1''@;'; put 'put ''OS03IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2''@;'; put 'put ''LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDky''@;'; put 'put ''Nyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2''@;'; put 'put ''OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSwiaXNvLTg4NTktOCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3''@;'; put 'put ''LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5Mywx''@;'; put 'put ''NDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLCJpc28tODg1OS0xMCI6WzEyOCwxMjksMTMwLDEzMSwxMzIs''@;'; put 'put ''MTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwyOTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3Mywz''@;'; put 'put ''NjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwz''@;'; put 'put ''NjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzksMjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSwi''@;'; put 'put ''aXNvLTg4NTktMTMiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgy''@;'; put 'put ''MjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwy''@;'; put 'put ''OTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0''@;'; put 'put ''NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sImlzby04ODU5LTE0IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1''@;'; put 'put ''NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgsMjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTky''@;'; put 'put ''LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMz''@;'; put 'put ''LDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLCJpc28tODg1OS0xNSI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQy''@;'; put 'put ''LDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1MiwxNjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgz''@;'; put 'put ''LDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQs''@;'; put 'put ''MjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwiaXNvLTg4NTktMTYiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywx''@;'; put 'put ''MzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIsMzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgs''@;'; put 'put ''Mzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYs''@;'; put 'put ''MzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjczLDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0NywzNjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSwia29p''@;'; put 'put ''OC1yIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUy''@;'; put 'put ''LDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIs''@;'; put 'put ''MTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEs''@;'; put 'put ''MTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSwia29pOC11IjpbOTQ3Miw5NDc0''@;'; put 'put ''LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1''@;'; put 'put ''LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAzMSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYs''@;'; put 'put ''MTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUs''@;'; put 'put ''MTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxtYWNpbnRvc2g6WzE5NiwxOTcsMTk5LDIwMSwyMDksMjE0''@;'; put 'put ''LDIyMCwyMjUsMjI0LDIyNiwyMjgsMjI3LDIyOSwyMzEsMjMzLDIzMiwyMzQsMjM1LDIzNywyMzYsMjM4LDIzOSwyNDEsMjQzLDI0MiwyNDQsMjQ2LDI0NSwyNTAsMjQ5LDI1MSwyNTIsODIyNCwxNzYsMTYyLDE2MywxNjcsODIyNiwxODIsMjIzLDE3NCwxNjksODQ4MiwxODAsMTY4LDg4MDAs''@;'; put 'put ''MTk4LDIxNiw4NzM0LDE3Nyw4ODA0LDg4MDUsMTY1LDE4MSw4NzA2LDg3MjEsODcxOSw5NjAsODc0NywxNzAsMTg2LDkzNywyMzAsMjQ4LDE5MSwxNjEsMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDE5MiwxOTUsMjEzLDMzOCwzMzksODIxMSw4MjEyLDgyMjAsODIy''@;'; put 'put ''MSw4MjE2LDgyMTcsMjQ3LDk2NzQsMjU1LDM3Niw4MjYwLDgzNjQsODI0OSw4MjUwLDY0MjU3LDY0MjU4LDgyMjUsMTgzLDgyMTgsODIyMiw4MjQwLDE5NCwyMDIsMTkzLDIwMywyMDAsMjA1LDIwNiwyMDcsMjA0LDIxMSwyMTIsNjM3NDMsMjEwLDIxOCwyMTksMjE3LDMwNSw3MTAsNzMyLDE3''@;'; put 'put ''NSw3MjgsNzI5LDczMCwxODQsNzMzLDczMSw3MTFdLCJ3aW5kb3dzLTg3NCI6WzgzNjQsMTI5LDEzMCwxMzEsMTMyLDgyMzAsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1MiwxNTMsMTU0LDE1''@;'; put 'put ''NSwxNTYsMTU3LDE1OCwxNTksMTYwLDM1ODUsMzU4NiwzNTg3LDM1ODgsMzU4OSwzNTkwLDM1OTEsMzU5MiwzNTkzLDM1OTQsMzU5NSwzNTk2LDM1OTcsMzU5OCwzNTk5LDM2MDAsMzYwMSwzNjAyLDM2MDMsMzYwNCwzNjA1LDM2MDYsMzYwNywzNjA4LDM2MDksMzYxMCwzNjExLDM2MTIsMzYx''@;'; put 'put ''MywzNjE0LDM2MTUsMzYxNiwzNjE3LDM2MTgsMzYxOSwzNjIwLDM2MjEsMzYyMiwzNjIzLDM2MjQsMzYyNSwzNjI2LDM2MjcsMzYyOCwzNjI5LDM2MzAsMzYzMSwzNjMyLDM2MzMsMzYzNCwzNjM1LDM2MzYsMzYzNywzNjM4LDM2MzksMzY0MCwzNjQxLDM2NDIsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCwzNjQ3LDM2NDgsMzY0OSwzNjUwLDM2NTEsMzY1MiwzNjUzLDM2NTQsMzY1NSwzNjU2LDM2NTcsMzY1OCwzNjU5LDM2NjAsMzY2MSwzNjYyLDM2NjMsMzY2NCwzNjY1LDM2NjYsMzY2NywzNjY4LDM2NjksMzY3MCwzNjcxLDM2NzIsMzY3MywzNjc0LDM2NzUsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bF0sIndpbmRvd3MtMTI1MCI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMzUyLDgyNDksMzQ2LDM1NiwzODEsMzc3LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDM1Myw4MjUwLDM0NywzNTcsMzgyLDM3OCwx''@;'; put 'put ''NjAsNzExLDcyOCwzMjEsMTY0LDI2MCwxNjYsMTY3LDE2OCwxNjksMzUwLDE3MSwxNzIsMTczLDE3NCwzNzksMTc2LDE3Nyw3MzEsMzIyLDE4MCwxODEsMTgyLDE4MywxODQsMjYxLDM1MSwxODcsMzE3LDczMywzMTgsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIw''@;'; put 'put ''MSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4''@;'; put 'put ''LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sIndpbmRvd3MtMTI1MSI6WzEwMjYsMTAyNyw4MjE4LDExMDcsODIyMiw4MjMwLDgyMjQsODIyNSw4MzY0LDgyNDAsMTAzMyw4MjQ5LDEwMzQsMTAzNiwxMDM1LDEwMzksMTEwNiw4MjE2LDgyMTcs''@;'; put 'put ''ODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDExMTMsODI1MCwxMTE0LDExMTYsMTExNSwxMTE5LDE2MCwxMDM4LDExMTgsMTAzMiwxNjQsMTE2OCwxNjYsMTY3LDEwMjUsMTY5LDEwMjgsMTcxLDE3MiwxNzMsMTc0LDEwMzEsMTc2LDE3NywxMDMwLDExMTAsMTE2OSwxODEsMTgy''@;'; put 'put ''LDE4MywxMTA1LDg0NzAsMTEwOCwxODcsMTExMiwxMDI5LDExMDksMTExMSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2Mywx''@;'; put 'put ''MDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5Niwx''@;'; put 'put ''MDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzXSwid2luZG93cy0xMjUyIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDM4MSwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMy''@;'; put 'put ''LDg0ODIsMzUzLDgyNTAsMzM5LDE1NywzODIsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5''@;'; put 'put ''MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0''@;'; put 'put ''LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSwid2luZG93cy0xMjUzIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTQx''@;'; put 'put ''LDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCw5MDEsOTAyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSxudWxsLDE3MSwxNzIsMTczLDE3NCw4MjEzLDE3NiwxNzcsMTc4LDE3OSw5''@;'; put 'put ''MDAsMTgxLDE4MiwxODMsOTA0LDkwNSw5MDYsMTg3LDkwOCwxODksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSxudWxsLDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5''@;'; put 'put ''NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsbnVsbF0sIndpbmRvd3MtMTI1NCI6WzgzNjQsMTI5''@;'; put 'put ''LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcsMTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYs''@;'; put 'put ''MTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywy''@;'; put 'put ''ODYsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMzA0LDM1MCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI4NywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0''@;'; put 'put ''OSwyNTAsMjUxLDI1MiwzMDUsMzUxLDI1NV0sIndpbmRvd3MtMTI1NSI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1''@;'; put 'put ''NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2MiwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLDE5MSwxNDU2LDE0NTcsMTQ1''@;'; put 'put ''OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMsMTQ2NCwxNDY1LDE0NjYsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0NzUsMTUyMCwxNTIxLDE1MjIsMTUyMywxNTI0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTQ4OCwxNDg5LDE0OTAsMTQ5''@;'; put 'put ''MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwxNTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsbnVsbCxudWxsLDgyMDYsODIwNyxudWxsXSwid2luZG93cy0xMjU2IjpbODM2NCwx''@;'; put 'put ''NjYyLDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTY1Nyw4MjQ5LDMzOCwxNjcwLDE2ODgsMTY3MiwxNzExLDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTcwNSw4NDgyLDE2ODEsODI1MCwzMzksODIwNCw4MjA1LDE3MjIsMTYwLDE1NDgsMTYyLDE2''@;'; put 'put ''MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzI2LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE1NjMsMTg3LDE4OCwxODksMTkwLDE1NjcsMTcyOSwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3''@;'; put 'put ''NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDIxNSwxNTkxLDE1OTIsMTU5MywxNTk0LDE2MDAsMTYwMSwxNjAyLDE2MDMsMjI0LDE2MDQsMjI2LDE2MDUsMTYwNiwxNjA3LDE2MDgsMjMxLDIzMiwyMzMsMjM0LDIzNSwx''@;'; put 'put ''NjA5LDE2MTAsMjM4LDIzOSwxNjExLDE2MTIsMTYxMywxNjE0LDI0NCwxNjE1LDE2MTYsMjQ3LDE2MTcsMjQ5LDE2MTgsMjUxLDI1Miw4MjA2LDgyMDcsMTc0Nl0sIndpbmRvd3MtMTI1NyI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDks''@;'; put 'put ''MTQwLDE2OCw3MTEsMTg0LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNzUsNzMxLDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCxudWxsLDE2NiwxNjcsMjE2LDE2OSwzNDIsMTcxLDE3MiwxNzMsMTc0LDE5OCwxNzYsMTc3LDE3''@;'; put 'put ''OCwxNzksMTgwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYy''@;'; put 'put ''LDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsNzI5XSwid2luZG93cy0xMjU4IjpbODM2''@;'; put 'put ''NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1''@;'; put 'put ''LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMjU4LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsNzY4LDIwNSwyMDYs''@;'; put 'put ''MjA3LDI3MiwyMDksNzc3LDIxMSwyMTIsNDE2LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCw0MzEsNzcxLDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSw3NjksMjM3LDIzOCwyMzksMjczLDI0MSw4MDMsMjQzLDI0NCw0MTcsMjQ2LDI0Nywy''@;'; put 'put ''NDgsMjQ5LDI1MCwyNTEsMjUyLDQzMiw4MzYzLDI1NV0sIngtbWFjLWN5cmlsbGljIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYy''@;'; put 'put ''LDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDgyMjQsMTc2LDExNjgsMTYzLDE2Nyw4MjI2LDE4MiwxMDMwLDE3NCwxNjksODQ4MiwxMDI2LDExMDYsODgwMCwxMDI3LDExMDcsODczNCwxNzcsODgwNCw4ODA1LDExMTAsMTgxLDExNjksMTAzMiwxMDI4LDEx''@;'; put 'put ''MDgsMTAzMSwxMTExLDEwMzMsMTExMywxMDM0LDExMTQsMTExMiwxMDI5LDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxMDM1LDExMTUsMTAzNiwxMTE2LDExMDksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDgyMjIsMTAzOCwxMTE4LDEwMzksMTEx''@;'; put 'put ''OSw4NDcwLDEwMjUsMTEwNSwxMTAzLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEw''@;'; put 'put ''MCwxMTAxLDExMDIsODM2NF19fSh0aGlzfHx7fSl9LDQwMjkwOmZ1bmN0aW9uKFdlLHplLFQpeyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGsoT2UsZXQsbnQpe3JldHVybiBldDw9T2UmJk9lPD1udH1XZS5leHBvcnRzJiYhc2VbImVuY29kaW5nLWluZGV4ZXMiXSYmKHNl''@;'; put 'put ''WyJlbmNvZGluZy1pbmRleGVzIl09VCgxNjQxMylbImVuY29kaW5nLWluZGV4ZXMiXSk7dmFyIGhlPU1hdGguZmxvb3I7ZnVuY3Rpb24gSChPZSl7aWYodm9pZCAwPT09T2UpcmV0dXJue307aWYoT2U9PT1PYmplY3QoT2UpKXJldHVybiBPZTt0aHJvdyBUeXBlRXJyb3IoIkNvdWxkIG5vdCBj''@;'; put 'put ''b252ZXJ0IGFyZ3VtZW50IHRvIGRpY3Rpb25hcnkiKX1mdW5jdGlvbiBLKE9lKXtyZXR1cm4gMDw9T2UmJk9lPD0xMjd9dmFyIEo9SyxJPS0xO2Z1bmN0aW9uIFIoT2Upe3RoaXMudG9rZW5zPVtdLnNsaWNlLmNhbGwoT2UpLHRoaXMudG9rZW5zLnJldmVyc2UoKX1SLnByb3RvdHlwZT17ZW5k''@;'; put 'put ''T2ZTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy50b2tlbnMubGVuZ3RofSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aD90aGlzLnRva2Vucy5wb3AoKTpJfSxwcmVwZW5kOmZ1bmN0aW9uKE9lKXtpZihBcnJheS5pc0FycmF5KE9lKSlmb3IodmFyIGV0PU9l''@;'; put 'put ''O2V0Lmxlbmd0aDspdGhpcy50b2tlbnMucHVzaChldC5wb3AoKSk7ZWxzZSB0aGlzLnRva2Vucy5wdXNoKE9lKX0scHVzaDpmdW5jdGlvbihPZSl7aWYoQXJyYXkuaXNBcnJheShPZSkpZm9yKHZhciBldD1PZTtldC5sZW5ndGg7KXRoaXMudG9rZW5zLnVuc2hpZnQoZXQuc2hpZnQoKSk7ZWxz''@;'; put 'put ''ZSB0aGlzLnRva2Vucy51bnNoaWZ0KE9lKX19O3ZhciBFPS0xO2Z1bmN0aW9uIHooT2UsZXQpe2lmKE9lKXRocm93IFR5cGVFcnJvcigiRGVjb2RlciBlcnJvciIpO3JldHVybiBldHx8NjU1MzN9ZnVuY3Rpb24gaihPZSl7dGhyb3cgVHlwZUVycm9yKCJUaGUgY29kZSBwb2ludCAiK09lKyIg''@;'; put 'put ''Y291bGQgbm90IGJlIGVuY29kZWQuIil9ZnVuY3Rpb24gVyhPZSl7cmV0dXJuIE9lPVN0cmluZyhPZSkudHJpbSgpLnRvTG93ZXJDYXNlKCksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsT2UpP3FbT2VdOm51bGx9dmFyIFU9W3tlbmNvZGluZ3M6W3tsYWJlbHM6WyJ1''@;'; put 'put ''bmljb2RlLTEtMS11dGYtOCIsInV0Zi04IiwidXRmOCJdLG5hbWU6IlVURi04In1dLGhlYWRpbmc6IlRoZSBFbmNvZGluZyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyI4NjYiLCJjcDg2NiIsImNzaWJtODY2IiwiaWJtODY2Il0sbmFtZToiSUJNODY2In0se2xhYmVsczpbImNzaXNvbGF0aW4y''@;'; put 'put ''IiwiaXNvLTg4NTktMiIsImlzby1pci0xMDEiLCJpc284ODU5LTIiLCJpc284ODU5MiIsImlzb184ODU5LTIiLCJpc29fODg1OS0yOjE5ODciLCJsMiIsImxhdGluMiJdLG5hbWU6IklTTy04ODU5LTIifSx7bGFiZWxzOlsiY3Npc29sYXRpbjMiLCJpc28tODg1OS0zIiwiaXNvLWlyLTEwOSIs''@;'; put 'put ''Imlzbzg4NTktMyIsImlzbzg4NTkzIiwiaXNvXzg4NTktMyIsImlzb184ODU5LTM6MTk4OCIsImwzIiwibGF0aW4zIl0sbmFtZToiSVNPLTg4NTktMyJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluNCIsImlzby04ODU5LTQiLCJpc28taXItMTEwIiwiaXNvODg1OS00IiwiaXNvODg1OTQiLCJpc29f''@;'; put 'put ''ODg1OS00IiwiaXNvXzg4NTktNDoxOTg4IiwibDQiLCJsYXRpbjQiXSxuYW1lOiJJU08tODg1OS00In0se2xhYmVsczpbImNzaXNvbGF0aW5jeXJpbGxpYyIsImN5cmlsbGljIiwiaXNvLTg4NTktNSIsImlzby1pci0xNDQiLCJpc284ODU5LTUiLCJpc284ODU5NSIsImlzb184ODU5LTUiLCJp''@;'; put 'put ''c29fODg1OS01OjE5ODgiXSxuYW1lOiJJU08tODg1OS01In0se2xhYmVsczpbImFyYWJpYyIsImFzbW8tNzA4IiwiY3Npc284ODU5NmUiLCJjc2lzbzg4NTk2aSIsImNzaXNvbGF0aW5hcmFiaWMiLCJlY21hLTExNCIsImlzby04ODU5LTYiLCJpc28tODg1OS02LWUiLCJpc28tODg1OS02LWki''@;'; put 'put ''LCJpc28taXItMTI3IiwiaXNvODg1OS02IiwiaXNvODg1OTYiLCJpc29fODg1OS02IiwiaXNvXzg4NTktNjoxOTg3Il0sbmFtZToiSVNPLTg4NTktNiJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluZ3JlZWsiLCJlY21hLTExOCIsImVsb3RfOTI4IiwiZ3JlZWsiLCJncmVlazgiLCJpc28tODg1OS03''@;'; put 'put ''IiwiaXNvLWlyLTEyNiIsImlzbzg4NTktNyIsImlzbzg4NTk3IiwiaXNvXzg4NTktNyIsImlzb184ODU5LTc6MTk4NyIsInN1bl9ldV9ncmVlayJdLG5hbWU6IklTTy04ODU5LTcifSx7bGFiZWxzOlsiY3Npc284ODU5OGUiLCJjc2lzb2xhdGluaGVicmV3IiwiaGVicmV3IiwiaXNvLTg4NTkt''@;'; put 'put ''OCIsImlzby04ODU5LTgtZSIsImlzby1pci0xMzgiLCJpc284ODU5LTgiLCJpc284ODU5OCIsImlzb184ODU5LTgiLCJpc29fODg1OS04OjE5ODgiLCJ2aXN1YWwiXSxuYW1lOiJJU08tODg1OS04In0se2xhYmVsczpbImNzaXNvODg1OThpIiwiaXNvLTg4NTktOC1pIiwibG9naWNhbCJdLG5h''@;'; put 'put ''bWU6IklTTy04ODU5LTgtSSJ9LHtsYWJlbHM6WyJjc2lzb2xhdGluNiIsImlzby04ODU5LTEwIiwiaXNvLWlyLTE1NyIsImlzbzg4NTktMTAiLCJpc284ODU5MTAiLCJsNiIsImxhdGluNiJdLG5hbWU6IklTTy04ODU5LTEwIn0se2xhYmVsczpbImlzby04ODU5LTEzIiwiaXNvODg1OS0xMyIs''@;'; put 'put ''Imlzbzg4NTkxMyJdLG5hbWU6IklTTy04ODU5LTEzIn0se2xhYmVsczpbImlzby04ODU5LTE0IiwiaXNvODg1OS0xNCIsImlzbzg4NTkxNCJdLG5hbWU6IklTTy04ODU5LTE0In0se2xhYmVsczpbImNzaXNvbGF0aW45IiwiaXNvLTg4NTktMTUiLCJpc284ODU5LTE1IiwiaXNvODg1OTE1Iiwi''@;'; put 'put ''aXNvXzg4NTktMTUiLCJsOSJdLG5hbWU6IklTTy04ODU5LTE1In0se2xhYmVsczpbImlzby04ODU5LTE2Il0sbmFtZToiSVNPLTg4NTktMTYifSx7bGFiZWxzOlsiY3Nrb2k4ciIsImtvaSIsImtvaTgiLCJrb2k4LXIiLCJrb2k4X3IiXSxuYW1lOiJLT0k4LVIifSx7bGFiZWxzOlsia29pOC1y''@;'; put 'put ''dSIsImtvaTgtdSJdLG5hbWU6IktPSTgtVSJ9LHtsYWJlbHM6WyJjc21hY2ludG9zaCIsIm1hYyIsIm1hY2ludG9zaCIsIngtbWFjLXJvbWFuIl0sbmFtZToibWFjaW50b3NoIn0se2xhYmVsczpbImRvcy04NzQiLCJpc28tODg1OS0xMSIsImlzbzg4NTktMTEiLCJpc284ODU5MTEiLCJ0aXMt''@;'; put 'put ''NjIwIiwid2luZG93cy04NzQiXSxuYW1lOiJ3aW5kb3dzLTg3NCJ9LHtsYWJlbHM6WyJjcDEyNTAiLCJ3aW5kb3dzLTEyNTAiLCJ4LWNwMTI1MCJdLG5hbWU6IndpbmRvd3MtMTI1MCJ9LHtsYWJlbHM6WyJjcDEyNTEiLCJ3aW5kb3dzLTEyNTEiLCJ4LWNwMTI1MSJdLG5hbWU6IndpbmRvd3Mt''@;'; put 'put ''MTI1MSJ9LHtsYWJlbHM6WyJhbnNpX3gzLjQtMTk2OCIsImFzY2lpIiwiY3AxMjUyIiwiY3A4MTkiLCJjc2lzb2xhdGluMSIsImlibTgxOSIsImlzby04ODU5LTEiLCJpc28taXItMTAwIiwiaXNvODg1OS0xIiwiaXNvODg1OTEiLCJpc29fODg1OS0xIiwiaXNvXzg4NTktMToxOTg3IiwibDEi''@;'; put 'put ''LCJsYXRpbjEiLCJ1cy1hc2NpaSIsIndpbmRvd3MtMTI1MiIsIngtY3AxMjUyIl0sbmFtZToid2luZG93cy0xMjUyIn0se2xhYmVsczpbImNwMTI1MyIsIndpbmRvd3MtMTI1MyIsIngtY3AxMjUzIl0sbmFtZToid2luZG93cy0xMjUzIn0se2xhYmVsczpbImNwMTI1NCIsImNzaXNvbGF0aW41''@;'; put 'put ''IiwiaXNvLTg4NTktOSIsImlzby1pci0xNDgiLCJpc284ODU5LTkiLCJpc284ODU5OSIsImlzb184ODU5LTkiLCJpc29fODg1OS05OjE5ODkiLCJsNSIsImxhdGluNSIsIndpbmRvd3MtMTI1NCIsIngtY3AxMjU0Il0sbmFtZToid2luZG93cy0xMjU0In0se2xhYmVsczpbImNwMTI1NSIsIndp''@;'; put 'put ''bmRvd3MtMTI1NSIsIngtY3AxMjU1Il0sbmFtZToid2luZG93cy0xMjU1In0se2xhYmVsczpbImNwMTI1NiIsIndpbmRvd3MtMTI1NiIsIngtY3AxMjU2Il0sbmFtZToid2luZG93cy0xMjU2In0se2xhYmVsczpbImNwMTI1NyIsIndpbmRvd3MtMTI1NyIsIngtY3AxMjU3Il0sbmFtZToid2lu''@;'; put 'put ''ZG93cy0xMjU3In0se2xhYmVsczpbImNwMTI1OCIsIndpbmRvd3MtMTI1OCIsIngtY3AxMjU4Il0sbmFtZToid2luZG93cy0xMjU4In0se2xhYmVsczpbIngtbWFjLWN5cmlsbGljIiwieC1tYWMtdWtyYWluaWFuIl0sbmFtZToieC1tYWMtY3lyaWxsaWMifV0saGVhZGluZzoiTGVnYWN5IHNp''@;'; put 'put ''bmdsZS1ieXRlIGVuY29kaW5ncyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyJjaGluZXNlIiwiY3NnYjIzMTIiLCJjc2lzbzU4Z2IyMzEyODAiLCJnYjIzMTIiLCJnYl8yMzEyIiwiZ2JfMjMxMi04MCIsImdiayIsImlzby1pci01OCIsIngtZ2JrIl0sbmFtZToiR0JLIn0se2xhYmVsczpbImdi''@;'; put 'put ''MTgwMzAiXSxuYW1lOiJnYjE4MDMwIn1dLGhlYWRpbmc6IkxlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHNpbXBsaWZpZWQpIGVuY29kaW5ncyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyJiaWc1IiwiYmlnNS1oa3NjcyIsImNuLWJpZzUiLCJjc2JpZzUiLCJ4LXgtYmlnNSJdLG5hbWU6IkJp''@;'; put 'put ''ZzUifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAodHJhZGl0aW9uYWwpIGVuY29kaW5ncyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyJjc2V1Y3BrZGZtdGphcGFuZXNlIiwiZXVjLWpwIiwieC1ldWMtanAiXSxuYW1lOiJFVUMtSlAifSx7bGFiZWxzOlsiY3Npc28yMDIy''@;'; put 'put ''anAiLCJpc28tMjAyMi1qcCJdLG5hbWU6IklTTy0yMDIyLUpQIn0se2xhYmVsczpbImNzc2hpZnRqaXMiLCJtczkzMiIsIm1zX2thbmppIiwic2hpZnQtamlzIiwic2hpZnRfamlzIiwic2ppcyIsIndpbmRvd3MtMzFqIiwieC1zamlzIl0sbmFtZToiU2hpZnRfSklTIn1dLGhlYWRpbmc6Ikxl''@;'; put 'put ''Z2FjeSBtdWx0aS1ieXRlIEphcGFuZXNlIGVuY29kaW5ncyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyJjc2V1Y2tyIiwiY3Nrc2M1NjAxMTk4NyIsImV1Yy1rciIsImlzby1pci0xNDkiLCJrb3JlYW4iLCJrc19jXzU2MDEtMTk4NyIsImtzX2NfNTYwMS0xOTg5Iiwia3NjNTYwMSIsImtzY181''@;'; put 'put ''NjAxIiwid2luZG93cy05NDkiXSxuYW1lOiJFVUMtS1IifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5ncyJ9LHtlbmNvZGluZ3M6W3tsYWJlbHM6WyJjc2lzbzIwMjJrciIsImh6LWdiLTIzMTIiLCJpc28tMjAyMi1jbiIsImlzby0yMDIyLWNuLWV4dCIsImlz''@;'; put 'put ''by0yMDIyLWtyIl0sbmFtZToicmVwbGFjZW1lbnQifSx7bGFiZWxzOlsidXRmLTE2YmUiXSxuYW1lOiJVVEYtMTZCRSJ9LHtsYWJlbHM6WyJ1dGYtMTYiLCJ1dGYtMTZsZSJdLG5hbWU6IlVURi0xNkxFIn0se2xhYmVsczpbIngtdXNlci1kZWZpbmVkIl0sbmFtZToieC11c2VyLWRlZmluZWQi''@;'; put 'put ''fV0saGVhZGluZzoiTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzIn1dLHE9e307VS5mb3JFYWNoKGZ1bmN0aW9uKE9lKXtPZS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihldCl7ZXQubGFiZWxzLmZvckVhY2goZnVuY3Rpb24obnQpe3FbbnRdPWV0fSl9KX0pO3ZhciBiLHRlPXt9''@;'; put 'put ''LG5lPXt9O2Z1bmN0aW9uIGllKE9lLGV0KXtyZXR1cm4gZXQmJmV0W09lXXx8bnVsbH1mdW5jdGlvbiBsZShPZSxldCl7dmFyIG50PWV0LmluZGV4T2YoT2UpO3JldHVybi0xPT09bnQ/bnVsbDpudH1mdW5jdGlvbiBkZShPZSl7aWYoISgiZW5jb2RpbmctaW5kZXhlcyJpbiBzZSkpdGhyb3cg''@;'; put 'put ''RXJyb3IoIkluZGV4ZXMgbWlzc2luZy4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzIGZpcnN0PyIpO3JldHVybiBzZVsiZW5jb2RpbmctaW5kZXhlcyJdW09lXX12YXIgTixGPSJ1dGYtOCI7ZnVuY3Rpb24gZyhPZSxldCl7aWYoISh0aGlzIGluc3RhbmNl''@;'; put 'put ''b2YgZykpdGhyb3cgVHlwZUVycm9yKCJDYWxsZWQgYXMgYSBmdW5jdGlvbi4gRGlkIHlvdSBmb3JnZXQgJ25ldyc/Iik7T2U9dm9pZCAwIT09T2U/U3RyaW5nKE9lKTpGLGV0PUgoZXQpLHRoaXMuX2VuY29kaW5nPW51bGwsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2lnbm9yZUJPTT0hMSx0''@;'; put 'put ''aGlzLl9CT01zZWVuPSExLHRoaXMuX2Vycm9yX21vZGU9InJlcGxhY2VtZW50Iix0aGlzLl9kb19ub3RfZmx1c2g9ITE7dmFyIG50PVcoT2UpO2lmKG51bGw9PT1udHx8InJlcGxhY2VtZW50Ij09PW50Lm5hbWUpdGhyb3cgUmFuZ2VFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitPZSk7aWYo''@;'; put 'put ''IW5lW250Lm5hbWVdKXRocm93IEVycm9yKCJEZWNvZGVyIG5vdCBwcmVzZW50LiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanMgZmlyc3Q/Iik7dmFyIHFlPXRoaXM7cmV0dXJuIHFlLl9lbmNvZGluZz1udCxldC5mYXRhbCYmKHFlLl9lcnJvcl9tb2RlPSJm''@;'; put 'put ''YXRhbCIpLGV0Lmlnbm9yZUJPTSYmKHFlLl9pZ25vcmVCT009ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8KHRoaXMuZW5jb2Rpbmc9cWUuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKSx0aGlzLmZhdGFsPSJmYXRhbCI9PT1xZS5fZXJyb3JfbW9kZSx0aGlzLmlnbm9yZUJPTT1xZS5f''@;'; put 'put ''aWdub3JlQk9NKSxxZX1mdW5jdGlvbiBDKE9lLGV0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBDKSl0aHJvdyBUeXBlRXJyb3IoIkNhbGxlZCBhcyBhIGZ1bmN0aW9uLiBEaWQgeW91IGZvcmdldCAnbmV3Jz8iKTtpZihldD1IKGV0KSx0aGlzLl9lbmNvZGluZz1udWxsLHRoaXMuX2VuY29kZXI9''@;'; put 'put ''bnVsbCx0aGlzLl9kb19ub3RfZmx1c2g9ITEsdGhpcy5fZmF0YWw9ZXQuZmF0YWw/ImZhdGFsIjoicmVwbGFjZW1lbnQiLGV0Lk5PTlNUQU5EQVJEX2FsbG93TGVnYWN5RW5jb2Rpbmcpe3ZhciBxZT1XKE9lPXZvaWQgMCE9PU9lP1N0cmluZyhPZSk6Rik7aWYobnVsbD09PXFlfHwicmVwbGFj''@;'; put 'put ''ZW1lbnQiPT09cWUubmFtZSl0aHJvdyBSYW5nZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK09lKTtpZighdGVbcWUubmFtZV0pdGhyb3cgRXJyb3IoIkVuY29kZXIgbm90IHByZXNlbnQuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBmaXJzdD8iKTt0''@;'; put 'put ''aGlzLl9lbmNvZGluZz1xZX1lbHNlIHRoaXMuX2VuY29kaW5nPVcoInV0Zi04Iiksdm9pZCAwIT09T2UmJiJjb25zb2xlImluIHNlJiZjb25zb2xlLndhcm4oIlRleHRFbmNvZGVyIGNvbnN0cnVjdG9yIGNhbGxlZCB3aXRoIGVuY29kaW5nIGxhYmVsLCB3aGljaCBpcyBpZ25vcmVkLiIpO3Jl''@;'; put 'put ''dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPXRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKSksdGhpc31mdW5jdGlvbiBNKE9lKXt2YXIgZXQ9T2UuZmF0YWwsbnQ9MCxxZT0wLGh0PTAsRWU9MTI4LERlPTE5MTt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24o''@;'; put 'put ''JGUsYXQpe2lmKGF0PT09SSYmMCE9PWh0KXJldHVybiBodD0wLHooZXQpO2lmKGF0PT09SSlyZXR1cm4gRTtpZigwPT09aHQpe2lmKGsoYXQsMCwxMjcpKXJldHVybiBhdDtpZihrKGF0LDE5NCwyMjMpKWh0PTEsbnQ9MzEmYXQ7ZWxzZSBpZihrKGF0LDIyNCwyMzkpKTIyND09PWF0JiYoRWU9''@;'; put 'put ''MTYwKSwyMzc9PT1hdCYmKERlPTE1OSksaHQ9MixudD0xNSZhdDtlbHNle2lmKCFrKGF0LDI0MCwyNDQpKXJldHVybiB6KGV0KTsyNDA9PT1hdCYmKEVlPTE0NCksMjQ0PT09YXQmJihEZT0xNDMpLGh0PTMsbnQ9NyZhdH1yZXR1cm4gbnVsbH1pZighayhhdCxFZSxEZSkpcmV0dXJuIG50PWh0''@;'; put 'put ''PXFlPTAsRWU9MTI4LERlPTE5MSwkZS5wcmVwZW5kKGF0KSx6KGV0KTtpZihFZT0xMjgsRGU9MTkxLG50PW50PDw2fDYzJmF0LChxZSs9MSkhPT1odClyZXR1cm4gbnVsbDt2YXIgY3Q9bnQ7cmV0dXJuIG50PWh0PXFlPTAsY3R9fWZ1bmN0aW9uIHkoT2Upe3RoaXMuaGFuZGxlcj1mdW5jdGlv''@;'; put 'put ''bihudCxxZSl7aWYocWU9PT1JKXJldHVybiBFO2lmKEoocWUpKXJldHVybiBxZTt2YXIgaHQsRWU7ayhxZSwxMjgsMjA0Nyk/KGh0PTEsRWU9MTkyKTprKHFlLDIwNDgsNjU1MzUpPyhodD0yLEVlPTIyNCk6ayhxZSw2NTUzNiwxMTE0MTExKSYmKGh0PTMsRWU9MjQwKTtmb3IodmFyIERlPVso''@;'; put 'put ''cWU+PjYqaHQpK0VlXTtodD4wOylEZS5wdXNoKDEyOHw2MyZxZT4+NiooaHQtMSkpLGh0LT0xO3JldHVybiBEZX19ZnVuY3Rpb24gcChPZSxldCl7dmFyIG50PWV0LmZhdGFsO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihxZSxodCl7aWYoaHQ9PT1JKXJldHVybiBFO2lmKEsoaHQpKXJldHVybiBo''@;'; put 'put ''dDt2YXIgRWU9T2VbaHQtMTI4XTtyZXR1cm4gbnVsbD09PUVlP3oobnQpOkVlfX1mdW5jdGlvbiBTKE9lLGV0KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24ocWUsaHQpe2lmKGh0PT09SSlyZXR1cm4gRTtpZihKKGh0KSlyZXR1cm4gaHQ7dmFyIEVlPWxlKGh0LE9lKTtyZXR1cm4gbnVsbD09PUVl''@;'; put 'put ''JiZqKGh0KSxFZSsxMjh9fWZ1bmN0aW9uIFEoT2Upe3ZhciBldD1PZS5mYXRhbCxudD0wLHFlPTAsaHQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oRWUsRGUpe2lmKERlPT09SSYmMD09PW50JiYwPT09cWUmJjA9PT1odClyZXR1cm4gRTt2YXIgJGU7aWYoRGU9PT1JJiYoMCE9PW50fHwwIT09''@;'; put 'put ''cWV8fDAhPT1odCkmJihudD0wLHFlPTAsaHQ9MCx6KGV0KSksMCE9PWh0KXskZT1udWxsLGsoRGUsNDgsNTcpJiYoJGU9ZnVuY3Rpb24gdWUoT2Upe2lmKE9lPjM5NDE5JiZPZTwxODllM3x8T2U+MTIzNzU3NSlyZXR1cm4gbnVsbDtpZig3NDU3PT09T2UpcmV0dXJuIDU5MzM1O3ZhciBodCxl''@;'; put 'put ''dD0wLG50PTAscWU9ZGUoImdiMTgwMzAtcmFuZ2VzIik7Zm9yKGh0PTA7aHQ8cWUubGVuZ3RoOysraHQpe3ZhciBFZT1xZVtodF07aWYoIShFZVswXTw9T2UpKWJyZWFrO2V0PUVlWzBdLG50PUVlWzFdfXJldHVybiBudCtPZS1ldH0oMTAqKDEyNiooMTAqKG50LTEyOSkrcWUtNDgpK2h0LTEy''@;'; put 'put ''OSkrRGUtNDgpKTt2YXIgYXQ9W3FlLGh0LERlXTtyZXR1cm4gbnQ9MCxxZT0wLGh0PTAsbnVsbD09PSRlPyhFZS5wcmVwZW5kKGF0KSx6KGV0KSk6JGV9aWYoMCE9PXFlKXJldHVybiBrKERlLDEyOSwyNTQpPyhodD1EZSxudWxsKTooRWUucHJlcGVuZChbcWUsRGVdKSxudD0wLHFlPTAseihl''@;'; put 'put ''dCkpO2lmKDAhPT1udCl7aWYoayhEZSw0OCw1NykpcmV0dXJuIHFlPURlLG51bGw7dmFyIGN0PW50LE90PW51bGw7bnQ9MDt2YXIgUHQ9RGU8MTI3PzY0OjY1O3JldHVybihrKERlLDY0LDEyNil8fGsoRGUsMTI4LDI1NCkpJiYoT3Q9MTkwKihjdC0xMjkpKyhEZS1QdCkpLG51bGw9PT0oJGU9''@;'; put 'put ''bnVsbD09PU90P251bGw6aWUoT3QsZGUoImdiMTgwMzAiKSkpJiZLKERlKSYmRWUucHJlcGVuZChEZSksbnVsbD09PSRlP3ooZXQpOiRlfXJldHVybiBLKERlKT9EZToxMjg9PT1EZT84MzY0OmsoRGUsMTI5LDI1NCk/KG50PURlLG51bGwpOnooZXQpfX1mdW5jdGlvbiByZShPZSxldCl7dGhp''@;'; put 'put ''cy5oYW5kbGVyPWZ1bmN0aW9uKHFlLGh0KXtpZihodD09PUkpcmV0dXJuIEU7aWYoSihodCkpcmV0dXJuIGh0O2lmKDU4ODUzPT09aHQpcmV0dXJuIGooaHQpO2lmKGV0JiY4MzY0PT09aHQpcmV0dXJuIDEyODt2YXIgRWU9bGUoaHQsZGUoImdiMTgwMzAiKSk7aWYobnVsbCE9PUVlKXt2YXIg''@;'; put 'put ''JGU9RWUlMTkwO3JldHVybltoZShFZS8xOTApKzEyOSwkZSsoJGU8NjM/NjQ6NjUpXX1pZihldClyZXR1cm4gaihodCk7RWU9ZnVuY3Rpb24gY2UoT2Upe2lmKDU5MzM1PT09T2UpcmV0dXJuIDc0NTc7dmFyIGh0LGV0PTAsbnQ9MCxxZT1kZSgiZ2IxODAzMC1yYW5nZXMiKTtmb3IoaHQ9MDto''@;'; put 'put ''dDxxZS5sZW5ndGg7KytodCl7dmFyIEVlPXFlW2h0XTtpZighKEVlWzFdPD1PZSkpYnJlYWs7ZXQ9RWVbMV0sbnQ9RWVbMF19cmV0dXJuIG50K09lLWV0fShodCk7dmFyIGN0PWhlKEVlLzEwLzEyNi8xMCksT3Q9aGUoKEVlLT0xMCpjdCoxMjYqMTApLzEwLzEyNiksUHQ9aGUoKEVlLT0xMCpP''@;'; put 'put ''dCoxMjYpLzEwKTtyZXR1cm5bY3QrMTI5LE90KzQ4LFB0KzEyOSxFZS0xMCpQdCs0OF19fWZ1bmN0aW9uIGZlKE9lKXt2YXIgZXQ9T2UuZmF0YWwsbnQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24ocWUsaHQpe2lmKGh0PT09SSYmMCE9PW50KXJldHVybiBudD0wLHooZXQpO2lmKGh0PT09SSYm''@;'; put 'put ''MD09PW50KXJldHVybiBFO2lmKDAhPT1udCl7dmFyIEVlPW50LERlPW51bGw7bnQ9MDt2YXIgJGU9aHQ8MTI3PzY0Ojk4O3N3aXRjaCgoayhodCw2NCwxMjYpfHxrKGh0LDE2MSwyNTQpKSYmKERlPTE1NyooRWUtMTI5KSsoaHQtJGUpKSxEZSl7Y2FzZSAxMTMzOnJldHVyblsyMDIsNzcyXTtj''@;'; put 'put ''YXNlIDExMzU6cmV0dXJuWzIwMiw3ODBdO2Nhc2UgMTE2NDpyZXR1cm5bMjM0LDc3Ml07Y2FzZSAxMTY2OnJldHVyblsyMzQsNzgwXX12YXIgYXQ9bnVsbD09PURlP251bGw6aWUoRGUsZGUoImJpZzUiKSk7cmV0dXJuIG51bGw9PT1hdCYmSyhodCkmJnFlLnByZXBlbmQoaHQpLG51bGw9PT1h''@;'; put 'put ''dD96KGV0KTphdH1yZXR1cm4gSyhodCk/aHQ6ayhodCwxMjksMjU0KT8obnQ9aHQsbnVsbCk6eihldCl9fWZ1bmN0aW9uIG1lKE9lKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24obnQscWUpe2lmKHFlPT09SSlyZXR1cm4gRTtpZihKKHFlKSlyZXR1cm4gcWU7dmFyIGh0PWZ1bmN0aW9uIHgoT2Up''@;'; put 'put ''e3ZhciBldD1OPU58fGRlKCJiaWc1IikubWFwKGZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gcWU8NTAyND9udWxsOm50fSk7cmV0dXJuIDk1NTI9PT1PZXx8OTU2Nj09PU9lfHw5NTY5PT09T2V8fDk1Nzg9PT1PZXx8MjEzMTM9PT1PZXx8MjEzMTc9PT1PZT9ldC5sYXN0SW5kZXhPZihPZSk6bGUo''@;'; put 'put ''T2UsZXQpfShxZSk7aWYobnVsbD09PWh0KXJldHVybiBqKHFlKTt2YXIgRWU9aGUoaHQvMTU3KSsxMjk7aWYoRWU8MTYxKXJldHVybiBqKHFlKTt2YXIgRGU9aHQlMTU3O3JldHVybltFZSxEZSsoRGU8NjM/NjQ6OTgpXX19ZnVuY3Rpb24ga2UoT2Upe3ZhciBldD1PZS5mYXRhbCxudD0hMSxx''@;'; put 'put ''ZT0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihodCxFZSl7aWYoRWU9PT1JJiYwIT09cWUpcmV0dXJuIHFlPTAseihldCk7aWYoRWU9PT1JJiYwPT09cWUpcmV0dXJuIEU7aWYoMTQyPT09cWUmJmsoRWUsMTYxLDIyMykpcmV0dXJuIHFlPTAsNjUyMTYrRWU7aWYoMTQzPT09cWUmJmsoRWUsMTYx''@;'; put 'put ''LDI1NCkpcmV0dXJuIG50PSEwLHFlPUVlLG51bGw7aWYoMCE9PXFlKXt2YXIgRGU9cWU7cWU9MDt2YXIgJGU9bnVsbDtyZXR1cm4gayhEZSwxNjEsMjU0KSYmayhFZSwxNjEsMjU0KSYmKCRlPWllKDk0KihEZS0xNjEpKyhFZS0xNjEpLGRlKG50PyJqaXMwMjEyIjoiamlzMDIwOCIpKSksbnQ9''@;'; put 'put ''ITEsayhFZSwxNjEsMjU0KXx8aHQucHJlcGVuZChFZSksbnVsbD09PSRlP3ooZXQpOiRlfXJldHVybiBLKEVlKT9FZToxNDI9PT1FZXx8MTQzPT09RWV8fGsoRWUsMTYxLDI1NCk/KHFlPUVlLG51bGwpOnooZXQpfX1mdW5jdGlvbiBUZShPZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKG50LHFl''@;'; put 'put ''KXtpZihxZT09PUkpcmV0dXJuIEU7aWYoSihxZSkpcmV0dXJuIHFlO2lmKDE2NT09PXFlKXJldHVybiA5MjtpZig4MjU0PT09cWUpcmV0dXJuIDEyNjtpZihrKHFlLDY1Mzc3LDY1NDM5KSlyZXR1cm5bMTQyLHFlLTY1Mzc3KzE2MV07ODcyMj09PXFlJiYocWU9NjUyOTMpO3ZhciBodD1sZShx''@;'; put 'put ''ZSxkZSgiamlzMDIwOCIpKTtyZXR1cm4gbnVsbD09PWh0P2oocWUpOltoZShodC85NCkrMTYxLGh0JTk0KzE2MV19fWZ1bmN0aW9uIFBlKE9lKXt2YXIgZXQ9T2UuZmF0YWwscWU9MCxFZT0wLERlPSExO3RoaXMuaGFuZGxlcj1mdW5jdGlvbigkZSxhdCl7c3dpdGNoKHFlKXtkZWZhdWx0OmNh''@;'; put 'put ''c2UgMDpyZXR1cm4gMjc9PT1hdD8ocWU9NSxudWxsKTprKGF0LDAsMTI3KSYmMTQhPT1hdCYmMTUhPT1hdCYmMjchPT1hdD8oRGU9ITEsYXQpOmF0PT09ST9FOihEZT0hMSx6KGV0KSk7Y2FzZSAxOnJldHVybiAyNz09PWF0PyhxZT01LG51bGwpOjkyPT09YXQ/KERlPSExLDE2NSk6MTI2PT09''@;'; put 'put ''YXQ/KERlPSExLDgyNTQpOmsoYXQsMCwxMjcpJiYxNCE9PWF0JiYxNSE9PWF0JiYyNyE9PWF0JiY5MiE9PWF0JiYxMjYhPT1hdD8oRGU9ITEsYXQpOmF0PT09ST9FOihEZT0hMSx6KGV0KSk7Y2FzZSAyOnJldHVybiAyNz09PWF0PyhxZT01LG51bGwpOmsoYXQsMzMsOTUpPyhEZT0hMSw2NTM0''@;'; put 'put ''NCthdCk6YXQ9PT1JP0U6KERlPSExLHooZXQpKTtjYXNlIDM6cmV0dXJuIDI3PT09YXQ/KHFlPTUsbnVsbCk6ayhhdCwzMywxMjYpPyhEZT0hMSxFZT1hdCxxZT00LG51bGwpOmF0PT09ST9FOihEZT0hMSx6KGV0KSk7Y2FzZSA0OmlmKDI3PT09YXQpcmV0dXJuIHFlPTUseihldCk7aWYoayhh''@;'; put 'put ''dCwzMywxMjYpKXtxZT0zO3ZhciBPdD1pZSg5NCooRWUtMzMpK2F0LTMzLGRlKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09T3Q/eihldCk6T3R9cmV0dXJuIGF0PT09ST8ocWU9MywkZS5wcmVwZW5kKGF0KSx6KGV0KSk6KHFlPTMseihldCkpO2Nhc2UgNTpyZXR1cm4gMzY9PT1hdHx8NDA9''@;'; put 'put ''PT1hdD8oRWU9YXQscWU9NixudWxsKTooJGUucHJlcGVuZChhdCksRGU9ITEscWU9MCx6KGV0KSk7Y2FzZSA2OnZhciBQdD1FZTtFZT0wO3ZhciBBdD1udWxsO2lmKDQwPT09UHQmJjY2PT09YXQmJihBdD0wKSw0MD09PVB0JiY3ND09PWF0JiYoQXQ9MSksNDA9PT1QdCYmNzM9PT1hdCYmKEF0''@;'; put 'put ''PTIpLDM2PT09UHQmJig2ND09PWF0fHw2Nj09PWF0KSYmKEF0PTMpLG51bGwhPT1BdCl7cWU9cWU9QXQ7dmFyIEp0PURlO3JldHVybiBEZT0hMCxKdD96KGV0KTpudWxsfXJldHVybiAkZS5wcmVwZW5kKFtQdCxhdF0pLERlPSExLHFlPTAseihldCl9fX1mdW5jdGlvbiBGZShPZSl7dmFyIHFl''@;'; put 'put ''PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGh0LEVlKXtpZihFZT09PUkmJjAhPT1xZSlyZXR1cm4gaHQucHJlcGVuZChFZSkscWU9MCxbMjcsNDAsNjZdO2lmKEVlPT09SSYmMD09PXFlKXJldHVybiBFO2lmKCEoMCE9PXFlJiYxIT09cWV8fDE0IT09RWUmJjE1IT09RWUmJjI3IT09RWUpKXJl''@;'; put 'put ''dHVybiBqKDY1NTMzKTtpZigwPT09cWUmJkooRWUpKXJldHVybiBFZTtpZigxPT09cWUmJihKKEVlKSYmOTIhPT1FZSYmMTI2IT09RWV8fDE2NT09RWV8fDgyNTQ9PUVlKSl7aWYoSihFZSkpcmV0dXJuIEVlO2lmKDE2NT09PUVlKXJldHVybiA5MjtpZig4MjU0PT09RWUpcmV0dXJuIDEyNn1p''@;'; put 'put ''ZihKKEVlKSYmMCE9PXFlKXJldHVybiBodC5wcmVwZW5kKEVlKSxxZT0wLFsyNyw0MCw2Nl07aWYoKDE2NT09PUVlfHw4MjU0PT09RWUpJiYxIT09cWUpcmV0dXJuIGh0LnByZXBlbmQoRWUpLHFlPTEsWzI3LDQwLDc0XTs4NzIyPT09RWUmJihFZT02NTI5Myk7dmFyIERlPWxlKEVlLGRlKCJq''@;'; put 'put ''aXMwMjA4IikpO3JldHVybiBudWxsPT09RGU/aihFZSk6MiE9PXFlPyhodC5wcmVwZW5kKEVlKSxxZT0yLFsyNywzNiw2Nl0pOltoZShEZS85NCkrMzMsRGUlOTQrMzNdfX1mdW5jdGlvbiBOZShPZSl7dmFyIGV0PU9lLmZhdGFsLG50PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHFlLGh0KXtp''@;'; put 'put ''ZihodD09PUkmJjAhPT1udClyZXR1cm4gbnQ9MCx6KGV0KTtpZihodD09PUkmJjA9PT1udClyZXR1cm4gRTtpZigwIT09bnQpe3ZhciBFZT1udCxEZT1udWxsO250PTA7dmFyICRlPWh0PDEyNz82NDo2NSxhdD1FZTwxNjA/MTI5OjE5MztpZigoayhodCw2NCwxMjYpfHxrKGh0LDEyOCwyNTIp''@;'; put 'put ''KSYmKERlPTE4OCooRWUtYXQpK2h0LSRlKSxrKERlLDg4MzYsMTA3MTUpKXJldHVybiA0ODUwOCtEZTt2YXIgY3Q9bnVsbD09PURlP251bGw6aWUoRGUsZGUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT1jdCYmSyhodCkmJnFlLnByZXBlbmQoaHQpLG51bGw9PT1jdD96KGV0KTpjdH1yZXR1''@;'; put 'put ''cm4gSyhodCl8fDEyOD09PWh0P2h0OmsoaHQsMTYxLDIyMyk/NjUyMTYraHQ6ayhodCwxMjksMTU5KXx8ayhodCwyMjQsMjUyKT8obnQ9aHQsbnVsbCk6eihldCl9fWZ1bmN0aW9uIExlKE9lKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24obnQscWUpe2lmKHFlPT09SSlyZXR1cm4gRTtpZihKKHFl''@;'; put 'put ''KXx8MTI4PT09cWUpcmV0dXJuIHFlO2lmKDE2NT09PXFlKXJldHVybiA5MjtpZig4MjU0PT09cWUpcmV0dXJuIDEyNjtpZihrKHFlLDY1Mzc3LDY1NDM5KSlyZXR1cm4gcWUtNjUzNzcrMTYxOzg3MjI9PT1xZSYmKHFlPTY1MjkzKTt2YXIgaHQ9ZnVuY3Rpb24gWShPZSl7cmV0dXJuKGI9Ynx8''@;'; put 'put ''ZGUoImppczAyMDgiKS5tYXAoZnVuY3Rpb24obnQscWUpe3JldHVybiBrKHFlLDgyNzIsODgzNSk/bnVsbDpudH0pKS5pbmRleE9mKE9lKX0ocWUpO2lmKG51bGw9PT1odClyZXR1cm4gaihxZSk7dmFyIEVlPWhlKGh0LzE4OCksJGU9aHQlMTg4O3JldHVybltFZSsoRWU8MzE/MTI5OjE5Myks''@;'; put 'put ''JGUrKCRlPDYzPzY0OjY1KV19fWZ1bmN0aW9uIEJlKE9lKXt2YXIgZXQ9T2UuZmF0YWwsbnQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24ocWUsaHQpe2lmKGh0PT09SSYmMCE9PW50KXJldHVybiBudD0wLHooZXQpO2lmKGh0PT09SSYmMD09PW50KXJldHVybiBFO2lmKDAhPT1udCl7dmFyIEVl''@;'; put 'put ''PW50LERlPW51bGw7bnQ9MCxrKGh0LDY1LDI1NCkmJihEZT0xOTAqKEVlLTEyOSkrKGh0LTY1KSk7dmFyICRlPW51bGw9PT1EZT9udWxsOmllKERlLGRlKCJldWMta3IiKSk7cmV0dXJuIG51bGw9PT1EZSYmSyhodCkmJnFlLnByZXBlbmQoaHQpLG51bGw9PT0kZT96KGV0KTokZX1yZXR1cm4g''@;'; put 'put ''SyhodCk/aHQ6ayhodCwxMjksMjU0KT8obnQ9aHQsbnVsbCk6eihldCl9fWZ1bmN0aW9uIEhlKE9lKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24obnQscWUpe2lmKHFlPT09SSlyZXR1cm4gRTtpZihKKHFlKSlyZXR1cm4gcWU7dmFyIGh0PWxlKHFlLGRlKCJldWMta3IiKSk7cmV0dXJuIG51bGw9''@;'; put 'put ''PT1odD9qKHFlKTpbaGUoaHQvMTkwKSsxMjksaHQlMTkwKzY1XX19ZnVuY3Rpb24gUWUoT2UsZXQpe3ZhciBudD1PZT4+OCxxZT0yNTUmT2U7cmV0dXJuIGV0P1tudCxxZV06W3FlLG50XX1mdW5jdGlvbiBtdChPZSxldCl7dmFyIG50PWV0LmZhdGFsLHFlPW51bGwsaHQ9bnVsbDt0aGlzLmhh''@;'; put 'put ''bmRsZXI9ZnVuY3Rpb24oRWUsRGUpe2lmKERlPT09SSYmKG51bGwhPT1xZXx8bnVsbCE9PWh0KSlyZXR1cm4geihudCk7aWYoRGU9PT1JJiZudWxsPT09cWUmJm51bGw9PT1odClyZXR1cm4gRTtpZihudWxsPT09cWUpcmV0dXJuIHFlPURlLG51bGw7dmFyICRlO2lmKCRlPU9lPyhxZTw8OCkr''@;'; put 'put ''RGU6KERlPDw4KStxZSxxZT1udWxsLG51bGwhPT1odCl7dmFyIGF0PWh0O3JldHVybiBodD1udWxsLGsoJGUsNTYzMjAsNTczNDMpPzY1NTM2KzEwMjQqKGF0LTU1Mjk2KSsoJGUtNTYzMjApOihFZS5wcmVwZW5kKFFlKCRlLE9lKSkseihudCkpfXJldHVybiBrKCRlLDU1Mjk2LDU2MzE5KT8o''@;'; put 'put ''aHQ9JGUsbnVsbCk6aygkZSw1NjMyMCw1NzM0Myk/eihudCk6JGV9fWZ1bmN0aW9uIEtlKE9lLGV0KXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24ocWUsaHQpe2lmKGh0PT09SSlyZXR1cm4gRTtpZihrKGh0LDAsNjU1MzUpKXJldHVybiBRZShodCxPZSk7dmFyIEVlPVFlKDU1Mjk2KyhodC02NTUz''@;'; put 'put ''Nj4+MTApLE9lKSxEZT1RZSg1NjMyMCsoaHQtNjU1MzYmMTAyMyksT2UpO3JldHVybiBFZS5jb25jYXQoRGUpfX1mdW5jdGlvbiB3ZShPZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gcWU9PT1JP0U6SyhxZSk/cWU6NjMzNjArcWUtMTI4fX1mdW5jdGlvbiBJZShPZSl7''@;'; put 'put ''dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKG50LHFlKXtyZXR1cm4gcWU9PT1JP0U6SihxZSk/cWU6ayhxZSw2MzM2MCw2MzQ4Nyk/cWUtNjMzNjArMTI4OmoocWUpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkmJihPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsImVuY29kaW5nIix7Z2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsImZhdGFsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuImZhdGFsIj09PXRoaXMuX2Vycm9yX21vZGV9fSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGcucHJvdG90eXBlLCJpZ25vcmVCT00iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWdub3JlQk9NfX0pKSxnLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oZXQsbnQpe3ZhciBxZTtxZT0ib2JqZWN0Ij09dHlwZW9mIGV0JiZldCBpbnN0YW5jZW9mIEFycmF5QnVmZmVy''@;'; put 'put ''P25ldyBVaW50OEFycmF5KGV0KToib2JqZWN0Ij09dHlwZW9mIGV0JiYiYnVmZmVyImluIGV0JiZldC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheShldC5idWZmZXIsZXQuYnl0ZU9mZnNldCxldC5ieXRlTGVuZ3RoKTpuZXcgVWludDhBcnJheSgwKSxudD1I''@;'; put 'put ''KG50KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9kZWNvZGVyPW5lW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZXJyb3JfbW9kZX0pLHRoaXMuX0JPTXNlZW49ITEpLHRoaXMuX2RvX25vdF9mbHVzaD0hIW50LnN0cmVhbTtmb3IodmFyIERlLGh0PW5l''@;'; put 'put ''dyBSKHFlKSxFZT1bXTs7KXt2YXIgJGU9aHQucmVhZCgpO2lmKCRlPT09SXx8KERlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihodCwkZSkpPT09RSlicmVhaztudWxsIT09RGUmJihBcnJheS5pc0FycmF5KERlKT9FZS5wdXNoLmFwcGx5KEVlLERlKTpFZS5wdXNoKERlKSl9aWYoIXRoaXMuX2Rv''@;'; put 'put ''X25vdF9mbHVzaCl7ZG97aWYoKERlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihodCxodC5yZWFkKCkpKT09PUUpYnJlYWs7bnVsbCE9PURlJiYoQXJyYXkuaXNBcnJheShEZSk/RWUucHVzaC5hcHBseShFZSxEZSk6RWUucHVzaChEZSkpfXdoaWxlKCFodC5lbmRPZlN0cmVhbSgpKTt0aGlzLl9k''@;'; put 'put ''ZWNvZGVyPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGF0KGN0KXtyZXR1cm4gZnVuY3Rpb24gdihPZSxldCl7cmV0dXJuLTEhPT1PZS5pbmRleE9mKGV0KX0oWyJVVEYtOCIsIlVURi0xNkxFIiwiVVRGLTE2QkUiXSx0aGlzLl9lbmNvZGluZy5uYW1lKSYmIXRoaXMuX2lnbm9yZUJPTSYmIXRoaXMu''@;'; put 'put ''X0JPTXNlZW4mJihjdC5sZW5ndGg+MCYmNjUyNzk9PT1jdFswXT8odGhpcy5fQk9Nc2Vlbj0hMCxjdC5zaGlmdCgpKTpjdC5sZW5ndGg+MCYmKHRoaXMuX0JPTXNlZW49ITApKSxmdW5jdGlvbiBMKE9lKXtmb3IodmFyIGV0PSIiLG50PTA7bnQ8T2UubGVuZ3RoOysrbnQpe3ZhciBxZT1PZVtu''@;'; put 'put ''dF07cWU8PTY1NTM1P2V0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHFlKToocWUtPTY1NTM2LGV0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhxZT4+MTApLDU2MzIwKygxMDIzJnFlKSkpfXJldHVybiBldH0oY3QpfS5jYWxsKHRoaXMsRWUpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShDLnByb3RvdHlwZSwiZW5jb2RpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpfX0pLEMucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihldCxudCl7ZXQ9dm9pZCAwPT09ZXQ/IiI6U3RyaW5nKGV0''@;'; put 'put ''KSxudD1IKG50KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9lbmNvZGVyPXRlW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZmF0YWx9KSksdGhpcy5fZG9fbm90X2ZsdXNoPSEhbnQuc3RyZWFtO2Zvcih2YXIgRWUscWU9bmV3IFIoZnVuY3Rpb24gQihP''@;'; put 'put ''ZSl7Zm9yKHZhciBldD1TdHJpbmcoT2UpLG50PWV0Lmxlbmd0aCxxZT0wLGh0PVtdO3FlPG50Oyl7dmFyIEVlPWV0LmNoYXJDb2RlQXQocWUpO2lmKEVlPDU1Mjk2fHxFZT41NzM0MylodC5wdXNoKEVlKTtlbHNlIGlmKDU2MzIwPD1FZSYmRWU8PTU3MzQzKWh0LnB1c2goNjU1MzMpO2Vsc2Ug''@;'; put 'put ''aWYoNTUyOTY8PUVlJiZFZTw9NTYzMTkpaWYocWU9PT1udC0xKWh0LnB1c2goNjU1MzMpO2Vsc2V7dmFyIERlPWV0LmNoYXJDb2RlQXQocWUrMSk7NTYzMjA8PURlJiZEZTw9NTczNDM/KGh0LnB1c2goNjU1MzYrKCgxMDIzJkVlKTw8MTApKygxMDIzJkRlKSkscWUrPTEpOmh0LnB1c2goNjU1''@;'; put 'put ''MzMpfXFlKz0xfXJldHVybiBodH0oZXQpKSxodD1bXTs7KXt2YXIgRGU9cWUucmVhZCgpO2lmKERlPT09SXx8KEVlPXRoaXMuX2VuY29kZXIuaGFuZGxlcihxZSxEZSkpPT09RSlicmVhaztBcnJheS5pc0FycmF5KEVlKT9odC5wdXNoLmFwcGx5KGh0LEVlKTpodC5wdXNoKEVlKX1pZighdGhp''@;'; put 'put ''cy5fZG9fbm90X2ZsdXNoKXtmb3IoOyhFZT10aGlzLl9lbmNvZGVyLmhhbmRsZXIocWUscWUucmVhZCgpKSkhPT1FOylBcnJheS5pc0FycmF5KEVlKT9odC5wdXNoLmFwcGx5KGh0LEVlKTpodC5wdXNoKEVlKTt0aGlzLl9lbmNvZGVyPW51bGx9cmV0dXJuIG5ldyBVaW50OEFycmF5KGh0KX0s''@;'; put 'put ''dGVbIlVURi04Il09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgeShPZSl9LG5lWyJVVEYtOCJdPWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3IE0oT2UpfSwiZW5jb2RpbmctaW5kZXhlcyJpbiBzZSYmVS5mb3JFYWNoKGZ1bmN0aW9uKE9lKXsiTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29kaW5ncyI9''@;'; put 'put ''PT1PZS5oZWFkaW5nJiZPZS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihldCl7dmFyIG50PWV0Lm5hbWUscWU9ZGUobnQudG9Mb3dlckNhc2UoKSk7bmVbbnRdPWZ1bmN0aW9uKGh0KXtyZXR1cm4gbmV3IHAocWUsaHQpfSx0ZVtudF09ZnVuY3Rpb24oaHQpe3JldHVybiBuZXcgUyhxZSxo''@;'; put 'put ''dCl9fSl9KSxuZS5HQks9ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgUShPZSl9LHRlLkdCSz1mdW5jdGlvbihPZSl7cmV0dXJuIG5ldyByZShPZSwhMCl9LHRlLmdiMTgwMzA9ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgcmUoT2UpfSxuZS5nYjE4MDMwPWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3''@;'; put 'put ''IFEoT2UpfSx0ZS5CaWc1PWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3IG1lKE9lKX0sbmUuQmlnNT1mdW5jdGlvbihPZSl7cmV0dXJuIG5ldyBmZShPZSl9LHRlWyJFVUMtSlAiXT1mdW5jdGlvbihPZSl7cmV0dXJuIG5ldyBUZShPZSl9LG5lWyJFVUMtSlAiXT1mdW5jdGlvbihPZSl7cmV0dXJu''@;'; put 'put ''IG5ldyBrZShPZSl9LHRlWyJJU08tMjAyMi1KUCJdPWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3IEZlKE9lKX0sbmVbIklTTy0yMDIyLUpQIl09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgUGUoT2UpfSx0ZS5TaGlmdF9KSVM9ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgTGUoT2UpfSxuZS5TaGlm''@;'; put 'put ''dF9KSVM9ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgTmUoT2UpfSx0ZVsiRVVDLUtSIl09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgSGUoT2UpfSxuZVsiRVVDLUtSIl09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgQmUoT2UpfSx0ZVsiVVRGLTE2QkUiXT1mdW5jdGlvbihPZSl7cmV0dXJuIG5l''@;'; put 'put ''dyBLZSghMCxPZSl9LG5lWyJVVEYtMTZCRSJdPWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3IG10KCEwLE9lKX0sdGVbIlVURi0xNkxFIl09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgS2UoITEsT2UpfSxuZVsiVVRGLTE2TEUiXT1mdW5jdGlvbihPZSl7cmV0dXJuIG5ldyBtdCghMSxPZSl9LHRl''@;'; put 'put ''WyJ4LXVzZXItZGVmaW5lZCJdPWZ1bmN0aW9uKE9lKXtyZXR1cm4gbmV3IEllKE9lKX0sbmVbIngtdXNlci1kZWZpbmVkIl09ZnVuY3Rpb24oT2Upe3JldHVybiBuZXcgd2UoT2UpfSxzZS5UZXh0RW5jb2Rlcnx8KHNlLlRleHRFbmNvZGVyPUMpLHNlLlRleHREZWNvZGVyfHwoc2UuVGV4dERl''@;'; put 'put ''Y29kZXI9ZyksV2UuZXhwb3J0cyYmKFdlLmV4cG9ydHM9e1RleHRFbmNvZGVyOnNlLlRleHRFbmNvZGVyLFRleHREZWNvZGVyOnNlLlRleHREZWNvZGVyLEVuY29kaW5nSW5kZXhlczpzZVsiZW5jb2RpbmctaW5kZXhlcyJdfSl9KHRoaXN8fHt9KX0sOTA0OTY6V2U9PntmdW5jdGlvbiBUKHNl''@;'; put 'put ''KXt0cnl7aWYoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpcmV0dXJuITF9Y2F0Y2h7cmV0dXJuITF9dmFyIGs9Z2xvYmFsLmxvY2FsU3RvcmFnZVtzZV07cmV0dXJuIG51bGwhPWsmJiJ0cnVlIj09PVN0cmluZyhrKS50b0xvd2VyQ2FzZSgpfVdlLmV4cG9ydHM9ZnVuY3Rpb24gemUoc2Usayl7aWYo''@;'; put 'put ''VCgibm9EZXByZWNhdGlvbiIpKXJldHVybiBzZTt2YXIgdj0hMTtyZXR1cm4gZnVuY3Rpb24gaGUoKXtpZighdil7aWYoVCgidGhyb3dEZXByZWNhdGlvbiIpKXRocm93IG5ldyBFcnJvcihrKTtUKCJ0cmFjZURlcHJlY2F0aW9uIik/Y29uc29sZS50cmFjZShrKTpjb25zb2xlLndhcm4oayks''@;'; put 'put ''dj0hMH1yZXR1cm4gc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LDc4NTMyOihXZSx6ZSxUKT0+eyFmdW5jdGlvbihzZSl7InVzZSBzdHJpY3QiO3NlLmV4cG9ydHMuaXNfdXJpPXYsc2UuZXhwb3J0cy5pc19odHRwX3VyaT1oZSxzZS5leHBvcnRzLmlzX2h0dHBzX3VyaT1ILHNlLmV4cG9y''@;'; put 'put ''dHMuaXNfd2ViX3VyaT1CLHNlLmV4cG9ydHMuaXNVcmk9dixzZS5leHBvcnRzLmlzSHR0cFVyaT1oZSxzZS5leHBvcnRzLmlzSHR0cHNVcmk9SCxzZS5leHBvcnRzLmlzV2ViVXJpPUI7dmFyIGs9ZnVuY3Rpb24oTCl7cmV0dXJuIEwubWF0Y2goLyg/OihbXjpcLz8jXSspOik/KD86XC9cLyhb''@;'; put 'put ''XlwvPyNdKikpPyhbXj8jXSopKD86XD8oW14jXSopKT8oPzojKC4qKSk/Lyl9O2Z1bmN0aW9uIHYoTCl7aWYoTCYmIS9bXmEtejAtOVw6XC9cP1wjXFtcXVxAXCFcJFwmXCdcKFwpXCpcK1wsXDtcPVwuXC1cX1x+XCVdL2kudGVzdChMKSYmIS8lW14wLTlhLWZdL2kudGVzdChMKSYmIS8lWzAt''@;'; put 'put ''OWEtZl0oOj9bXjAtOWEtZl18JCkvaS50ZXN0KEwpKXt2YXIgSyxJLFIsRSx6LEo9IiIsaj0iIjtpZihJPShLPWsoTCkpWzJdLFI9S1szXSxFPUtbNF0sej1LWzVdLChKPUtbMV0pJiZKLmxlbmd0aCYmUi5sZW5ndGg+PTApe2lmKEkmJkkubGVuZ3RoKXtpZigwIT09Ui5sZW5ndGgmJiEvXlwv''@;'; put 'put ''Ly50ZXN0KFIpKXJldHVybn1lbHNlIGlmKC9eXC9cLy8udGVzdChSKSlyZXR1cm47aWYoL15bYS16XVthLXowLTlcK1wtXC5dKiQvLnRlc3QoSi50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gais9SisiOiIsSSYmSS5sZW5ndGgmJihqKz0iLy8iK0kpLGorPVIsRSYmRS5sZW5ndGgmJihqKz0iPyIr''@;'; put 'put ''RSkseiYmei5sZW5ndGgmJihqKz0iIyIreiksan19fWZ1bmN0aW9uIGhlKEwsSyl7aWYodihMKSl7dmFyIEosRSxqLFYsST0iIixSPSIiLHo9IiIsRz0iIjtpZihSPShKPWsoTCkpWzJdLEU9SlszXSxqPUpbNF0sVj1KWzVdLEk9SlsxXSl7aWYoSyl7aWYoImh0dHBzIiE9SS50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpKXJldHVybn1lbHNlIGlmKCJodHRwIiE9SS50b0xvd2VyQ2FzZSgpKXJldHVybjtpZihSKXJldHVybi86KFxkKykkLy50ZXN0KFIpJiYoej1SLm1hdGNoKC86KFxkKykkLylbMF0sUj1SLnJlcGxhY2UoLzpcZCskLywiIikpLEcrPUkrIjoiLEcrPSIvLyIrUix6JiYoRys9eiksRys9RSxq''@;'; put 'put ''JiZqLmxlbmd0aCYmKEcrPSI/IitqKSxWJiZWLmxlbmd0aCYmKEcrPSIjIitWKSxHfX19ZnVuY3Rpb24gSChMKXtyZXR1cm4gaGUoTCwhMCl9ZnVuY3Rpb24gQihMKXtyZXR1cm4gaGUoTCl8fEgoTCl9fShXZT1ULm5tZChXZSkpfSw4MTQ1MDooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMjAxNCks''@;'; put 'put ''az1UKDk0Njc2KSx2PVR5cGVFcnJvcjtXZS5leHBvcnRzPWZ1bmN0aW9uKGhlKXtpZihzZShoZSkpcmV0dXJuIGhlO3Rocm93IHYoayhoZSkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfX0sNTY1ODE6KFdlLHplLFQpPT57dmFyIHNlPVQoNDk0NTMpLGs9VCg5NDY3Niksdj1UeXBlRXJyb3I7V2Uu''@;'; put 'put ''ZXhwb3J0cz1mdW5jdGlvbihoZSl7aWYoc2UoaGUpKXJldHVybiBoZTt0aHJvdyB2KGsoaGUpKyIgaXMgbm90IGEgY29uc3RydWN0b3IiKX19LDcwMDg6KFdlLHplLFQpPT57dmFyIHNlPVQoMTIwMTQpLGs9U3RyaW5nLHY9VHlwZUVycm9yO1dlLmV4cG9ydHM9ZnVuY3Rpb24oaGUpe2lmKCJv''@;'; put 'put ''YmplY3QiPT10eXBlb2YgaGV8fHNlKGhlKSlyZXR1cm4gaGU7dGhyb3cgdigiQ2FuJ3Qgc2V0ICIrayhoZSkrIiBhcyBhIHByb3RvdHlwZSIpfX0sNzQ5NjU6KFdlLHplLFQpPT57dmFyIHNlPVQoMjU0Niksaz1UKDc0NDEwKSx2PVQoNTExODMpLmYsaGU9c2UoInVuc2NvcGFibGVzIiksSD1B''@;'; put 'put ''cnJheS5wcm90b3R5cGU7bnVsbD09SFtoZV0mJnYoSCxoZSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmsobnVsbCl9KSxXZS5leHBvcnRzPWZ1bmN0aW9uKEIpe0hbaGVdW0JdPSEwfX0sNjE2NzY6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDc1MDU4KS5jaGFyQXQ7V2UuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihrLHYsaGUpe3JldHVybiB2KyhoZT9zZShrLHYpLmxlbmd0aDoxKX19LDk1MjA0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM3NDc0KSxrPVR5cGVFcnJvcjtXZS5leHBvcnRzPWZ1bmN0aW9uKHYsaGUpe2lmKHNlKGhlLHYpKXJldHVybiB2O3Rocm93IGsoIkluY29ycmVj''@;'; put 'put ''dCBpbnZvY2F0aW9uIil9fSw1ODY0NzooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMzg0OSksaz1TdHJpbmcsdj1UeXBlRXJyb3I7V2UuZXhwb3J0cz1mdW5jdGlvbihoZSl7aWYoc2UoaGUpKXJldHVybiBoZTt0aHJvdyB2KGsoaGUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sNjI3ODk6KFdlLHpl''@;'; put 'put ''LFQpPT57dmFyIHNlPVQoMjM1MjMpO1dlLmV4cG9ydHM9c2UoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBrPW5ldyBBcnJheUJ1ZmZlcig4KTtPYmplY3QuaXNFeHRlbnNpYmxlKGspJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaywiYSIse3ZhbHVl''@;'; put 'put ''Ojh9KX19KX0sNTcxNzk6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDY4MDcxKSxrPVQoNzYxNjMpLHY9VCg1NDQ1MCk7V2UuZXhwb3J0cz1mdW5jdGlvbihIKXtmb3IodmFyIEI9c2UodGhpcyksTD12KEIpLEs9YXJndW1lbnRzLmxlbmd0aCxKPWsoSz4xP2FyZ3VtZW50c1sx''@;'; put 'put ''XTp2b2lkIDAsTCksST1LPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxSPXZvaWQgMD09PUk/TDprKEksTCk7Uj5KOylCW0orK109SDtyZXR1cm4gQn19LDM3MzE5OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg5NTY2OSkuZm9yRWFjaCx2PVQoNjMxMjQpKCJmb3JFYWNoIik7V2Uu''@;'; put 'put ''ZXhwb3J0cz12P1tdLmZvckVhY2g6ZnVuY3Rpb24oSCl7cmV0dXJuIHNlKHRoaXMsSCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSw2NjY2NjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU0OSksaz1UKDM1NjIpLHY9VCg2ODA3MSksaGU9VCgx''@;'; put 'put ''ODc2KSxIPVQoOTcxMDYpLEI9VCg0OTQ1MyksTD1UKDU0NDUwKSxLPVQoOTUwMDQpLEo9VCgxMjk4OSksST1UKDY2Mjg4KSxSPUFycmF5O1dlLmV4cG9ydHM9ZnVuY3Rpb24oeil7dmFyIGo9dih6KSxWPUIodGhpcyksRz1hcmd1bWVudHMubGVuZ3RoLFc9Rz4xP2FyZ3VtZW50c1sxXTp2b2lk''@;'; put 'put ''IDAsVT12b2lkIDAhPT1XO1UmJihXPXNlKFcsRz4yP2FyZ3VtZW50c1syXTp2b2lkIDApKTt2YXIgbmUsaWUsbGUsZGUsdWUsY2UscT1JKGopLHRlPTA7aWYoIXF8fHRoaXM9PT1SJiZIKHEpKWZvcihuZT1MKGopLGllPVY/bmV3IHRoaXMobmUpOlIobmUpO25lPnRlO3RlKyspY2U9VT9XKGpb''@;'; put 'put ''dGVdLHRlKTpqW3RlXSxLKGllLHRlLGNlKTtlbHNlIGZvcih1ZT0oZGU9SihqLHEpKS5uZXh0LGllPVY/bmV3IHRoaXM6W107IShsZT1rKHVlLGRlKSkuZG9uZTt0ZSsrKWNlPVU/aGUoZGUsVyxbbGUudmFsdWUsdGVdLCEwKTpsZS52YWx1ZSxLKGllLHRlLGNlKTtyZXR1cm4gaWUubGVuZ3Ro''@;'; put 'put ''PXRlLGllfX0sMzYzMDU6KFdlLHplLFQpPT57dmFyIHNlPVQoNTAzMjcpLGs9VCg3NjE2Myksdj1UKDU0NDUwKSxoZT1mdW5jdGlvbihIKXtyZXR1cm4gZnVuY3Rpb24oQixMLEspe3ZhciBFLEo9c2UoQiksST12KEopLFI9ayhLLEkpO2lmKEgmJkwhPUwpe2Zvcig7ST5SOylpZigoRT1KW1Ir''@;'; put 'put ''K10pIT1FKXJldHVybiEwfWVsc2UgZm9yKDtJPlI7UisrKWlmKChIfHxSIGluIEopJiZKW1JdPT09TClyZXR1cm4gSHx8Unx8MDtyZXR1cm4hSCYmLTF9fTtXZS5leHBvcnRzPXtpbmNsdWRlczpoZSghMCksaW5kZXhPZjpoZSghMSl9fSw5NTY2OTooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTQ5''@;'; put 'put ''KSxrPVQoNjYxMyksdj1UKDU2NjA3KSxoZT1UKDY4MDcxKSxIPVQoNTQ0NTApLEI9VCgzMTg1NyksTD1rKFtdLnB1c2gpLEs9ZnVuY3Rpb24oSil7dmFyIEk9MT09SixSPTI9PUosRT0zPT1KLHo9ND09SixqPTY9PUosVj03PT1KLEc9NT09Snx8ajtyZXR1cm4gZnVuY3Rpb24oVyxVLHEsdGUp''@;'; put 'put ''e2Zvcih2YXIgYix4LG5lPWhlKFcpLGllPXYobmUpLGxlPXNlKFUscSksZGU9SChpZSksdWU9MCxjZT10ZXx8QixZPUk/Y2UoVyxkZSk6Unx8Vj9jZShXLDApOnZvaWQgMDtkZT51ZTt1ZSsrKWlmKChHfHx1ZSBpbiBpZSkmJih4PWxlKGI9aWVbdWVdLHVlLG5lKSxKKSlpZihJKVlbdWVdPXg7''@;'; put 'put ''ZWxzZSBpZih4KXN3aXRjaChKKXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNjpyZXR1cm4gdWU7Y2FzZSAyOkwoWSxiKX1lbHNlIHN3aXRjaChKKXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OkwoWSxiKX1yZXR1cm4gaj8tMTpFfHx6P3o6WX19O1dlLmV4cG9ydHM9e2Zv''@;'; put 'put ''ckVhY2g6SygwKSxtYXA6SygxKSxmaWx0ZXI6SygyKSxzb21lOksoMyksZXZlcnk6Syg0KSxmaW5kOksoNSksZmluZEluZGV4OksoNiksZmlsdGVyUmVqZWN0OksoNyl9fSw5NjIyOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgxMTMwNiksaz1UKDUwMzI3KSx2PVQoNDA3MDIp''@;'; put 'put ''LGhlPVQoNTQ0NTApLEg9VCg2MzEyNCksQj1NYXRoLm1pbixMPVtdLmxhc3RJbmRleE9mLEs9ISFMJiYxL1sxXS5sYXN0SW5kZXhPZigxLC0wKTwwLEo9SCgibGFzdEluZGV4T2YiKTtXZS5leHBvcnRzPUt8fCFKP2Z1bmN0aW9uKEUpe2lmKEspcmV0dXJuIHNlKEwsdGhpcyxhcmd1bWVudHMp''@;'; put 'put ''fHwwO3ZhciB6PWsodGhpcyksaj1oZSh6KSxWPWotMTtmb3IoYXJndW1lbnRzLmxlbmd0aD4xJiYoVj1CKFYsdihhcmd1bWVudHNbMV0pKSksVjwwJiYoVj1qK1YpO1Y+PTA7Vi0tKWlmKFYgaW4geiYmeltWXT09PUUpcmV0dXJuIFZ8fDA7cmV0dXJuLTF9Okx9LDUxMjk4OihXZSx6ZSxUKT0+''@;'; put 'put ''e3ZhciBzZT1UKDIzNTIzKSxrPVQoMjU0Niksdj1UKDI5Mzg1KSxoZT1rKCJzcGVjaWVzIik7V2UuZXhwb3J0cz1mdW5jdGlvbihIKXtyZXR1cm4gdj49NTF8fCFzZShmdW5jdGlvbigpe3ZhciBCPVtdO3JldHVybihCLmNvbnN0cnVjdG9yPXt9KVtoZV09ZnVuY3Rpb24oKXtyZXR1cm57Zm9v''@;'; put 'put ''OjF9fSwxIT09QltIXShCb29sZWFuKS5mb299KX19LDYzMTI0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgyMzUyMyk7V2UuZXhwb3J0cz1mdW5jdGlvbihrLHYpe3ZhciBoZT1bXVtrXTtyZXR1cm4hIWhlJiZzZShmdW5jdGlvbigpe2hlLmNhbGwobnVsbCx2fHxmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiAxfSwxKX0pfX0sNzM3NjA6KFdlLHplLFQpPT57dmFyIHNlPVQoODE0NTApLGs9VCg2ODA3MSksdj1UKDU2NjA3KSxoZT1UKDU0NDUwKSxIPVR5cGVFcnJvcixCPWZ1bmN0aW9uKEwpe3JldHVybiBmdW5jdGlvbihLLEosSSxSKXtzZShKKTt2YXIgRT1rKEspLHo9dihFKSxq''@;'; put 'put ''PWhlKEUpLFY9TD9qLTE6MCxHPUw/LTE6MTtpZihJPDIpZm9yKDs7KXtpZihWIGluIHope1I9eltWXSxWKz1HO2JyZWFrfWlmKFYrPUcsTD9WPDA6ajw9Vil0aHJvdyBIKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDtMP1Y+PTA6aj5WO1YrPUcp''@;'; put 'put ''ViBpbiB6JiYoUj1KKFIseltWXSxWLEUpKTtyZXR1cm4gUn19O1dlLmV4cG9ydHM9e2xlZnQ6QighMSkscmlnaHQ6QighMCl9fSw4Njc1OTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2MjQpLGs9VCgyOTEwNiksdj1UeXBlRXJyb3IsaGU9T2JqZWN0LmdldE93blByb3Bl''@;'; put 'put ''cnR5RGVzY3JpcHRvcixIPXNlJiYhZnVuY3Rpb24oKXtpZih2b2lkIDAhPT10aGlzKXJldHVybiEwO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkubGVuZ3RoPTF9Y2F0Y2goQil7cmV0dXJuIEIgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpO1dl''@;'; put 'put ''LmV4cG9ydHM9SD9mdW5jdGlvbihCLEwpe2lmKGsoQikmJiFoZShCLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyB2KCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIEIubGVuZ3RoPUx9OmZ1bmN0aW9uKEIsTCl7cmV0dXJuIEIubGVuZ3RoPUx9fSwxMDg3MjooV2UsemUs''@;'; put 'put ''VCk9Pnt2YXIgc2U9VCg3NjE2Myksaz1UKDU0NDUwKSx2PVQoOTUwMDQpLGhlPUFycmF5LEg9TWF0aC5tYXg7V2UuZXhwb3J0cz1mdW5jdGlvbihCLEwsSyl7Zm9yKHZhciBKPWsoQiksST1zZShMLEopLFI9c2Uodm9pZCAwPT09Sz9KOkssSiksRT1oZShIKFItSSwwKSksej0wO0k8UjtJKyss''@;'; put 'put ''eisrKXYoRSx6LEJbSV0pO3JldHVybiBFLmxlbmd0aD16LEV9fSw0MDkzMDooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKTtXZS5leHBvcnRzPXNlKFtdLnNsaWNlKX0sMzI1OTQ6KFdlLHplLFQpPT57dmFyIHNlPVQoMTA4NzIpLGs9TWF0aC5mbG9vcix2PWZ1bmN0aW9uKEIsTCl7dmFyIEs9''@;'; put 'put ''Qi5sZW5ndGgsSj1rKEsvMik7cmV0dXJuIEs8OD9oZShCLEwpOkgoQix2KHNlKEIsMCxKKSxMKSx2KHNlKEIsSiksTCksTCl9LGhlPWZ1bmN0aW9uKEIsTCl7Zm9yKHZhciBJLFIsSz1CLmxlbmd0aCxKPTE7SjxLOyl7Zm9yKFI9SixJPUJbSl07UiYmTChCW1ItMV0sSSk+MDspQltSXT1CWy0t''@;'; put 'put ''Ul07UiE9PUorKyYmKEJbUl09SSl9cmV0dXJuIEJ9LEg9ZnVuY3Rpb24oQixMLEssSil7Zm9yKHZhciBJPUwubGVuZ3RoLFI9Sy5sZW5ndGgsRT0wLHo9MDtFPEl8fHo8UjspQltFK3pdPUU8SSYmejxSP0ooTFtFXSxLW3pdKTw9MD9MW0UrK106S1t6KytdOkU8ST9MW0UrK106S1t6KytdO3Jl''@;'; put 'put ''dHVybiBCfTtXZS5leHBvcnRzPXZ9LDU3ODM1OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDI5MTA2KSxrPVQoNDk0NTMpLHY9VCgxMzg0OSksSD1UKDI1NDYpKCJzcGVjaWVzIiksQj1BcnJheTtXZS5leHBvcnRzPWZ1bmN0aW9uKEwpe3ZhciBLO3JldHVybiBzZShMKSYmKGsoSz1MLmNvbnN0cnVj''@;'; put 'put ''dG9yKSYmKEs9PT1CfHxzZShLLnByb3RvdHlwZSkpfHx2KEspJiZudWxsPT09KEs9S1tIXSkpJiYoSz12b2lkIDApLHZvaWQgMD09PUs/QjpLfX0sMzE4NTc6KFdlLHplLFQpPT57dmFyIHNlPVQoNTc4MzUpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oayx2KXtyZXR1cm4gbmV3KHNlKGspKSgwPT09''@;'; put 'put ''dj8wOnYpfX0sMTg3NjooV2UsemUsVCk9Pnt2YXIgc2U9VCg1ODY0Nyksaz1UKDgwMzA3KTtXZS5leHBvcnRzPWZ1bmN0aW9uKHYsaGUsSCxCKXt0cnl7cmV0dXJuIEI/aGUoc2UoSClbMF0sSFsxXSk6aGUoSCl9Y2F0Y2goTCl7ayh2LCJ0aHJvdyIsTCl9fX0sMjc3OTI6KFdlLHplLFQpPT57''@;'; put 'put ''dmFyIGs9VCgyNTQ2KSgiaXRlcmF0b3IiKSx2PSExO3RyeXt2YXIgaGU9MCxIPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFoZSsrfX0scmV0dXJuOmZ1bmN0aW9uKCl7dj0hMH19O0hba109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShILGZ1bmN0aW9uKCl7dGhy''@;'; put 'put ''b3cgMn0pfWNhdGNoe31XZS5leHBvcnRzPWZ1bmN0aW9uKEIsTCl7aWYoIUwmJiF2KXJldHVybiExO3ZhciBLPSExO3RyeXt2YXIgSj17fTtKW2tdPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpLPSEwfX19fSxCKEopfWNhdGNoe31yZXR1cm4gS319LDk0''@;'; put 'put ''NzIzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9c2Uoe30udG9TdHJpbmcpLHY9c2UoIiIuc2xpY2UpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oaGUpe3JldHVybiB2KGsoaGUpLDgsLTEpfX0sNzk1MjA6KFdlLHplLFQpPT57dmFyIHNlPVQoMjc0OTApLGs9VCgxMjAxNCksdj1UKDk0NzIz''@;'; put 'put ''KSxIPVQoMjU0NikoInRvU3RyaW5nVGFnIiksQj1PYmplY3QsTD0iQXJndW1lbnRzIj09dihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO1dlLmV4cG9ydHM9c2U/djpmdW5jdGlvbihKKXt2YXIgSSxSLEU7cmV0dXJuIHZvaWQgMD09PUo/IlVuZGVmaW5lZCI6bnVsbD09PUo/Ik51''@;'; put 'put ''bGwiOiJzdHJpbmciPT10eXBlb2YoUj1mdW5jdGlvbihKLEkpe3RyeXtyZXR1cm4gSltJXX1jYXRjaHt9fShJPUIoSiksSCkpP1I6TD92KEkpOiJPYmplY3QiPT0oRT12KEkpKSYmayhJLmNhbGxlZSk/IkFyZ3VtZW50cyI6RX19LDQ1MTQwOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''c2U9VCg3NDQxMCksaz1UKDU0OTU1KSx2PVQoNzQwNjkpLGhlPVQoODU0OSksSD1UKDk1MjA0KSxCPVQoNjM3NCksTD1UKDI2NTQzKSxLPVQoNjQ1NjApLEo9VCgyMTUyKSxJPVQoNjgzMTUpLFI9VCg4NTYyNCksRT1UKDcxODMyKS5mYXN0S2V5LHo9VCg3MjcpLGo9ei5zZXQsVj16LmdldHRl''@;'; put 'put ''ckZvcjtXZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihHLFcsVSxxKXt2YXIgdGU9RyhmdW5jdGlvbih1ZSxjZSl7SCh1ZSxuZSksaih1ZSx7dHlwZTpXLGluZGV4OnNlKG51bGwpLGZpcnN0OnZvaWQgMCxsYXN0OnZvaWQgMCxzaXplOjB9KSxSfHwodWUuc2l6ZT0wKSxCKGNl''@;'; put 'put ''KXx8TChjZSx1ZVtxXSx7dGhhdDp1ZSxBU19FTlRSSUVTOlV9KX0pLG5lPXRlLnByb3RvdHlwZSxpZT1WKFcpLGxlPWZ1bmN0aW9uKHVlLGNlLFkpe3ZhciBOLEYsYj1pZSh1ZSkseD1kZSh1ZSxjZSk7cmV0dXJuIHg/eC52YWx1ZT1ZOihiLmxhc3Q9eD17aW5kZXg6Rj1FKGNlLCEwKSxrZXk6''@;'; put 'put ''Y2UsdmFsdWU6WSxwcmV2aW91czpOPWIubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxiLmZpcnN0fHwoYi5maXJzdD14KSxOJiYoTi5uZXh0PXgpLFI/Yi5zaXplKys6dWUuc2l6ZSsrLCJGIiE9PUYmJihiLmluZGV4W0ZdPXgpKSx1ZX0sZGU9ZnVuY3Rpb24odWUsY2Upe3ZhciB4LFk9''@;'; put 'put ''aWUodWUpLGI9RShjZSk7aWYoIkYiIT09YilyZXR1cm4gWS5pbmRleFtiXTtmb3IoeD1ZLmZpcnN0O3g7eD14Lm5leHQpaWYoeC5rZXk9PWNlKXJldHVybiB4fTtyZXR1cm4gdihuZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIFk9aWUodGhpcyksYj1ZLmluZGV4LHg9WS5maXJzdDt4Oyl4''@;'; put 'put ''LnJlbW92ZWQ9ITAseC5wcmV2aW91cyYmKHgucHJldmlvdXM9eC5wcmV2aW91cy5uZXh0PXZvaWQgMCksZGVsZXRlIGJbeC5pbmRleF0seD14Lm5leHQ7WS5maXJzdD1ZLmxhc3Q9dm9pZCAwLFI/WS5zaXplPTA6dGhpcy5zaXplPTB9LGRlbGV0ZTpmdW5jdGlvbih1ZSl7dmFyIFk9aWUodGhp''@;'; put 'put ''cyksYj1kZSh0aGlzLHVlKTtpZihiKXt2YXIgeD1iLm5leHQsTj1iLnByZXZpb3VzO2RlbGV0ZSBZLmluZGV4W2IuaW5kZXhdLGIucmVtb3ZlZD0hMCxOJiYoTi5uZXh0PXgpLHgmJih4LnByZXZpb3VzPU4pLFkuZmlyc3Q9PWImJihZLmZpcnN0PXgpLFkubGFzdD09YiYmKFkubGFzdD1OKSxS''@;'; put 'put ''P1kuc2l6ZS0tOnRoaXMuc2l6ZS0tfXJldHVybiEhYn0sZm9yRWFjaDpmdW5jdGlvbihjZSl7Zm9yKHZhciB4LFk9aWUodGhpcyksYj1oZShjZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7eD14P3gubmV4dDpZLmZpcnN0Oylmb3IoYih4LnZhbHVlLHgua2V5LHRo''@;'; put 'put ''aXMpO3gmJngucmVtb3ZlZDspeD14LnByZXZpb3VzfSxoYXM6ZnVuY3Rpb24oY2Upe3JldHVybiEhZGUodGhpcyxjZSl9fSksdihuZSxVP3tnZXQ6ZnVuY3Rpb24oY2Upe3ZhciBZPWRlKHRoaXMsY2UpO3JldHVybiBZJiZZLnZhbHVlfSxzZXQ6ZnVuY3Rpb24oY2UsWSl7cmV0dXJuIGxlKHRo''@;'; put 'put ''aXMsMD09PWNlPzA6Y2UsWSl9fTp7YWRkOmZ1bmN0aW9uKGNlKXtyZXR1cm4gbGUodGhpcyxjZT0wPT09Y2U/MDpjZSxjZSl9fSksUiYmayhuZSwic2l6ZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaWUodGhpcykuc2l6ZX19KSx0ZX0sc2V0U3Ryb25nOmZ1bmN0''@;'; put 'put ''aW9uKEcsVyxVKXt2YXIgcT1XKyIgSXRlcmF0b3IiLHRlPVYoVyksbmU9VihxKTtLKEcsVyxmdW5jdGlvbihpZSxsZSl7aih0aGlzLHt0eXBlOnEsdGFyZ2V0OmllLHN0YXRlOnRlKGllKSxraW5kOmxlLGxhc3Q6dm9pZCAwfSl9LGZ1bmN0aW9uKCl7Zm9yKHZhciBpZT1uZSh0aGlzKSxsZT1p''@;'; put 'put ''ZS5raW5kLGRlPWllLmxhc3Q7ZGUmJmRlLnJlbW92ZWQ7KWRlPWRlLnByZXZpb3VzO3JldHVybiBpZS50YXJnZXQmJihpZS5sYXN0PWRlPWRlP2RlLm5leHQ6aWUuc3RhdGUuZmlyc3QpP0ooImtleXMiPT1sZT9kZS5rZXk6InZhbHVlcyI9PWxlP2RlLnZhbHVlOltkZS5rZXksZGUudmFsdWVd''@;'; put 'put ''LCExKTooaWUudGFyZ2V0PXZvaWQgMCxKKHZvaWQgMCwhMCkpfSxVPyJlbnRyaWVzIjoidmFsdWVzIiwhVSwhMCksSShXKX19fSw0Mjk2OTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNjYxMyksaz1UKDc0MDY5KSx2PVQoNzE4MzIpLmdldFdlYWtEYXRhLGhlPVQoOTUyMDQp''@;'; put 'put ''LEg9VCg1ODY0NyksQj1UKDYzNzQpLEw9VCgxMzg0OSksSz1UKDI2NTQzKSxKPVQoOTU2NjkpLEk9VCg0ODgxMSksUj1UKDcyNyksRT1SLnNldCx6PVIuZ2V0dGVyRm9yLGo9Si5maW5kLFY9Si5maW5kSW5kZXgsRz1zZShbXS5zcGxpY2UpLFc9MCxVPWZ1bmN0aW9uKG5lKXtyZXR1cm4gbmUu''@;'; put 'put ''ZnJvemVufHwobmUuZnJvemVuPW5ldyBxKX0scT1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sdGU9ZnVuY3Rpb24obmUsaWUpe3JldHVybiBqKG5lLmVudHJpZXMsZnVuY3Rpb24obGUpe3JldHVybiBsZVswXT09PWllfSl9O3EucHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24obmUpe3ZhciBp''@;'; put 'put ''ZT10ZSh0aGlzLG5lKTtpZihpZSlyZXR1cm4gaWVbMV19LGhhczpmdW5jdGlvbihuZSl7cmV0dXJuISF0ZSh0aGlzLG5lKX0sc2V0OmZ1bmN0aW9uKG5lLGllKXt2YXIgbGU9dGUodGhpcyxuZSk7bGU/bGVbMV09aWU6dGhpcy5lbnRyaWVzLnB1c2goW25lLGllXSl9LGRlbGV0ZTpmdW5jdGlv''@;'; put 'put ''bihuZSl7dmFyIGllPVYodGhpcy5lbnRyaWVzLGZ1bmN0aW9uKGxlKXtyZXR1cm4gbGVbMF09PT1uZX0pO3JldHVybn5pZSYmRyh0aGlzLmVudHJpZXMsaWUsMSksISF+aWV9fSxXZS5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbihuZSxpZSxsZSxkZSl7dmFyIHVlPW5lKGZ1bmN0''@;'; put 'put ''aW9uKHgsTil7aGUoeCxjZSksRSh4LHt0eXBlOmllLGlkOlcrKyxmcm96ZW46dm9pZCAwfSksQihOKXx8SyhOLHhbZGVdLHt0aGF0OngsQVNfRU5UUklFUzpsZX0pfSksY2U9dWUucHJvdG90eXBlLFk9eihpZSksYj1mdW5jdGlvbih4LE4sRil7dmFyIGc9WSh4KSxDPXYoSChOKSwhMCk7cmV0''@;'; put 'put ''dXJuITA9PT1DP1UoZykuc2V0KE4sRik6Q1tnLmlkXT1GLHh9O3JldHVybiBrKGNlLHtkZWxldGU6ZnVuY3Rpb24oeCl7dmFyIE49WSh0aGlzKTtpZighTCh4KSlyZXR1cm4hMTt2YXIgRj12KHgpO3JldHVybiEwPT09Rj9VKE4pLmRlbGV0ZSh4KTpGJiZJKEYsTi5pZCkmJmRlbGV0ZSBGW04u''@;'; put 'put ''aWRdfSxoYXM6ZnVuY3Rpb24oTil7dmFyIEY9WSh0aGlzKTtpZighTChOKSlyZXR1cm4hMTt2YXIgZz12KE4pO3JldHVybiEwPT09Zz9VKEYpLmhhcyhOKTpnJiZJKGcsRi5pZCl9fSksayhjZSxsZT97Z2V0OmZ1bmN0aW9uKE4pe3ZhciBGPVkodGhpcyk7aWYoTChOKSl7dmFyIGc9dihOKTty''@;'; put 'put ''ZXR1cm4hMD09PWc/VShGKS5nZXQoTik6Zz9nW0YuaWRdOnZvaWQgMH19LHNldDpmdW5jdGlvbihOLEYpe3JldHVybiBiKHRoaXMsTixGKX19OnthZGQ6ZnVuY3Rpb24oTil7cmV0dXJuIGIodGhpcyxOLCEwKX19KSx1ZX19fSw0Njg1NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNl''@;'; put 'put ''PVQoODU2NDgpLGs9VCg3MDcwNSksdj1UKDY2MTMpLGhlPVQoNjc1MDcpLEg9VCgyNTY2NiksQj1UKDcxODMyKSxMPVQoMjY1NDMpLEs9VCg5NTIwNCksSj1UKDEyMDE0KSxJPVQoNjM3NCksUj1UKDEzODQ5KSxFPVQoMjM1MjMpLHo9VCgyNzc5Miksaj1UKDU1OTY4KSxWPVQoNTE4NDkpO1dl''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oRyxXLFUpe3ZhciBxPS0xIT09Ry5pbmRleE9mKCJNYXAiKSx0ZT0tMSE9PUcuaW5kZXhPZigiV2VhayIpLG5lPXE/InNldCI6ImFkZCIsaWU9a1tHXSxsZT1pZSYmaWUucHJvdG90eXBlLGRlPWllLHVlPXt9LGNlPWZ1bmN0aW9uKEMpe3ZhciBNPXYobGVbQ10p''@;'; put 'put ''O0gobGUsQywiYWRkIj09Qz9mdW5jdGlvbihwKXtyZXR1cm4gTSh0aGlzLDA9PT1wPzA6cCksdGhpc306ImRlbGV0ZSI9PUM/ZnVuY3Rpb24oeSl7cmV0dXJuISh0ZSYmIVIoeSkpJiZNKHRoaXMsMD09PXk/MDp5KX06ImdldCI9PUM/ZnVuY3Rpb24ocCl7cmV0dXJuIHRlJiYhUihwKT92b2lk''@;'; put 'put ''IDA6TSh0aGlzLDA9PT1wPzA6cCl9OiJoYXMiPT1DP2Z1bmN0aW9uKHApe3JldHVybiEodGUmJiFSKHApKSYmTSh0aGlzLDA9PT1wPzA6cCl9OmZ1bmN0aW9uKHAsUyl7cmV0dXJuIE0odGhpcywwPT09cD8wOnAsUyksdGhpc30pfTtpZihoZShHLCFKKGllKXx8ISh0ZXx8bGUuZm9yRWFjaCYm''@;'; put 'put ''IUUoZnVuY3Rpb24oKXsobmV3IGllKS5lbnRyaWVzKCkubmV4dCgpfSkpKSlkZT1VLmdldENvbnN0cnVjdG9yKFcsRyxxLG5lKSxCLmVuYWJsZSgpO2Vsc2UgaWYoaGUoRywhMCkpe3ZhciBiPW5ldyBkZSx4PWJbbmVdKHRlP3t9Oi0wLDEpIT1iLE49RShmdW5jdGlvbigpe2IuaGFzKDEpfSks''@;'; put 'put ''Rj16KGZ1bmN0aW9uKEMpe25ldyBpZShDKX0pLGc9IXRlJiZFKGZ1bmN0aW9uKCl7Zm9yKHZhciBDPW5ldyBpZSxNPTU7TS0tOylDW25lXShNLE0pO3JldHVybiFDLmhhcygtMCl9KTtGfHwoKGRlPVcoZnVuY3Rpb24oQyxNKXtLKEMsbGUpO3ZhciB5PVYobmV3IGllLEMsZGUpO3JldHVybiBJ''@;'; put 'put ''KE0pfHxMKE0seVtuZV0se3RoYXQ6eSxBU19FTlRSSUVTOnF9KSx5fSkpLnByb3RvdHlwZT1sZSxsZS5jb25zdHJ1Y3Rvcj1kZSksKE58fGcpJiYoY2UoImRlbGV0ZSIpLGNlKCJoYXMiKSxxJiZjZSgiZ2V0IikpLChnfHx4KSYmY2UobmUpLHRlJiZsZS5jbGVhciYmZGVsZXRlIGxlLmNsZWFy''@;'; put 'put ''fXJldHVybiB1ZVtHXT1kZSxzZSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpkZSE9aWV9LHVlKSxqKGRlLEcpLHRlfHxVLnNldFN0cm9uZyhkZSxHLHEpLGRlfX0sNzc1NDg6KFdlLHplLFQpPT57dmFyIHNlPVQoNDg4MTEpLGs9VCgyMTE5OSksdj1UKDQ3OTg3KSxoZT1UKDUx''@;'; put 'put ''MTgzKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEgsQixMKXtmb3IodmFyIEs9ayhCKSxKPWhlLmYsST12LmYsUj0wO1I8Sy5sZW5ndGg7UisrKXt2YXIgRT1LW1JdOyFzZShILEUpJiYoIUx8fCFzZShMLEUpKSYmSihILEUsSShCLEUpKX19fSw3NjU3MTooV2UsemUsVCk9Pnt2YXIgaz1UKDI1NDYp''@;'; put 'put ''KCJtYXRjaCIpO1dlLmV4cG9ydHM9ZnVuY3Rpb24odil7dmFyIGhlPS8uLzt0cnl7Ii8uLyJbdl0oaGUpfWNhdGNoe3RyeXtyZXR1cm4gaGVba109ITEsIi8uLyJbdl0oaGUpfWNhdGNoe319cmV0dXJuITF9fSw0NjA4NjooV2UsemUsVCk9Pnt2YXIgc2U9VCgyMzUyMyk7V2UuZXhwb3J0cz0h''@;'; put 'put ''c2UoZnVuY3Rpb24oKXtmdW5jdGlvbiBrKCl7fXJldHVybiBrLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgaykhPT1rLnByb3RvdHlwZX0pfSw5NTExMDooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKSxrPVQoMjQ1NzIpLHY9VCg5MjEpLGhl''@;'; put 'put ''PS8iL2csSD1zZSgiIi5yZXBsYWNlKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEIsTCxLLEope3ZhciBJPXYoayhCKSksUj0iPCIrTDtyZXR1cm4iIiE9PUsmJihSKz0iICIrSysnPSInK0godihKKSxoZSwiJnF1b3Q7IikrJyInKSxSKyI+IitJKyI8LyIrTCsiPiJ9fSwyMTUyOldlPT57V2UuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbih6ZSxUKXtyZXR1cm57dmFsdWU6emUsZG9uZTpUfX19LDE2MDE3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjI0KSxrPVQoNTExODMpLHY9VCg3MzkyMCk7V2UuZXhwb3J0cz1zZT9mdW5jdGlvbihoZSxILEIpe3JldHVybiBrLmYoaGUsSCx2KDEsQikpfTpmdW5jdGlv''@;'; put 'put ''bihoZSxILEIpe3JldHVybiBoZVtIXT1CLGhlfX0sNzM5MjA6V2U9PntXZS5leHBvcnRzPWZ1bmN0aW9uKHplLFQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ6ZSksY29uZmlndXJhYmxlOiEoMiZ6ZSksd3JpdGFibGU6ISg0JnplKSx2YWx1ZTpUfX19LDk1MDA0OihXZSx6ZSxUKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgc2U9VCg4NDA5NCksaz1UKDUxMTgzKSx2PVQoNzM5MjApO1dlLmV4cG9ydHM9ZnVuY3Rpb24oaGUsSCxCKXt2YXIgTD1zZShIKTtMIGluIGhlP2suZihoZSxMLHYoMCxCKSk6aGVbTF09Qn19LDIyMTg2OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg1ODY0''@;'; put 'put ''Nyksaz1UKDYzNDE1KSx2PVR5cGVFcnJvcjtXZS5leHBvcnRzPWZ1bmN0aW9uKGhlKXtpZihzZSh0aGlzKSwic3RyaW5nIj09PWhlfHwiZGVmYXVsdCI9PT1oZSloZT0ic3RyaW5nIjtlbHNlIGlmKCJudW1iZXIiIT09aGUpdGhyb3cgdigiSW5jb3JyZWN0IGhpbnQiKTtyZXR1cm4gayh0aGlz''@;'; put 'put ''LGhlKX19LDU0OTU1OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM0NDY4KSxrPVQoNTExODMpO1dlLmV4cG9ydHM9ZnVuY3Rpb24odixoZSxIKXtyZXR1cm4gSC5nZXQmJnNlKEguZ2V0LGhlLHtnZXR0ZXI6ITB9KSxILnNldCYmc2UoSC5zZXQsaGUse3NldHRlcjohMH0pLGsuZih2LGhlLEgpfX0s''@;'; put 'put ''MjU2NjY6KFdlLHplLFQpPT57dmFyIHNlPVQoMTIwMTQpLGs9VCg1MTE4Myksdj1UKDM0NDY4KSxoZT1UKDczNDcwKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEgsQixMLEspe0t8fChLPXt9KTt2YXIgSj1LLmVudW1lcmFibGUsST12b2lkIDAhPT1LLm5hbWU/Sy5uYW1lOkI7aWYoc2UoTCkmJnYo''@;'; put 'put ''TCxJLEspLEsuZ2xvYmFsKUo/SFtCXT1MOmhlKEIsTCk7ZWxzZXt0cnl7Sy51bnNhZmU/SFtCXSYmKEo9ITApOmRlbGV0ZSBIW0JdfWNhdGNoe31KP0hbQl09TDprLmYoSCxCLHt2YWx1ZTpMLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFLLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZToh''@;'; put 'put ''Sy5ub25Xcml0YWJsZX0pfXJldHVybiBIfX0sNzQwNjk6KFdlLHplLFQpPT57dmFyIHNlPVQoMjU2NjYpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oayx2LGhlKXtmb3IodmFyIEggaW4gdilzZShrLEgsdltIXSxoZSk7cmV0dXJuIGt9fSw3MzQ3MDooV2UsemUsVCk9Pnt2YXIgc2U9VCg3MDcwNSks''@;'; put 'put ''az1PYmplY3QuZGVmaW5lUHJvcGVydHk7V2UuZXhwb3J0cz1mdW5jdGlvbih2LGhlKXt0cnl7ayhzZSx2LHt2YWx1ZTpoZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHtzZVt2XT1oZX1yZXR1cm4gaGV9fSw0NjI4OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9''@;'; put 'put ''VCg5NDY3Niksaz1UeXBlRXJyb3I7V2UuZXhwb3J0cz1mdW5jdGlvbih2LGhlKXtpZighZGVsZXRlIHZbaGVdKXRocm93IGsoIkNhbm5vdCBkZWxldGUgcHJvcGVydHkgIitzZShoZSkrIiBvZiAiK3NlKHYpKX19LDg1NjI0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDIzNTIzKTtXZS5leHBvcnRz''@;'; put 'put ''PSFzZShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KX0sMzEyNzA6V2U9Pnt2YXIgemU9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsO1dlLmV4cG9ydHM9e2FsbDp6ZSxJ''@;'; put 'put ''U19IVE1MRERBOnR5cGVvZiB6ZT4idSImJnZvaWQgMCE9PXplfX0sNDYzMTM6KFdlLHplLFQpPT57dmFyIHNlPVQoNzA3MDUpLGs9VCgxMzg0OSksdj1zZS5kb2N1bWVudCxoZT1rKHYpJiZrKHYuY3JlYXRlRWxlbWVudCk7V2UuZXhwb3J0cz1mdW5jdGlvbihIKXtyZXR1cm4gaGU/di5jcmVh''@;'; put 'put ''dGVFbGVtZW50KEgpOnt9fX0sMjMxMjQ6V2U9Pnt2YXIgemU9VHlwZUVycm9yO1dlLmV4cG9ydHM9ZnVuY3Rpb24oc2Upe2lmKHNlPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgemUoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBzZX19LDE5MjMxOldlPT57V2UuZXhw''@;'; put 'put ''b3J0cz17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxl''@;'; put 'put ''Y3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVu''@;'; put 'put ''Z3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxU''@;'; put 'put ''b3VjaExpc3Q6MH19LDI5OTEwOihXZSx6ZSxUKT0+e3ZhciBrPVQoNDYzMTMpKCJzcGFuIikuY2xhc3NMaXN0LHY9ayYmay5jb25zdHJ1Y3RvciYmay5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7V2UuZXhwb3J0cz12PT09T2JqZWN0LnByb3RvdHlwZT92b2lkIDA6dn0sNzU3MDY6KFdlLHplLFQp''@;'; put 'put ''PT57dmFyIGs9VCg3NzgzOSkubWF0Y2goL2ZpcmVmb3hcLyhcZCspL2kpO1dlLmV4cG9ydHM9ISFrJiYra1sxXX0sODM0NjA6V2U9PntXZS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBCdW4mJkJ1biYmInN0cmluZyI9PXR5cGVvZiBCdW4udmVyc2lvbn0sOTg4NjooV2UsemUsVCk9Pnt2''@;'; put 'put ''YXIgc2U9VCg3NzgzOSk7V2UuZXhwb3J0cz0vTVNJRXxUcmlkZW50Ly50ZXN0KHNlKX0sNzg1MjA6KFdlLHplLFQpPT57dmFyIHNlPVQoNzc4MzkpO1dlLmV4cG9ydHM9Lyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3Qoc2UpfSw4NzI0NDooV2UsemUsVCk9Pnt2YXIg''@;'; put 'put ''c2U9VCg5NDcyMyk7V2UuZXhwb3J0cz10eXBlb2YgcHJvY2VzczwidSImJiJwcm9jZXNzIj09c2UocHJvY2Vzcyl9LDc3ODM5OldlPT57V2UuZXhwb3J0cz10eXBlb2YgbmF2aWdhdG9yPCJ1IiYmU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpfHwiIn0sMjkzODU6KFdlLHplLFQpPT57dmFy''@;'; put 'put ''IEwsSyxzZT1UKDcwNzA1KSxrPVQoNzc4MzkpLHY9c2UucHJvY2VzcyxoZT1zZS5EZW5vLEg9diYmdi52ZXJzaW9uc3x8aGUmJmhlLnZlcnNpb24sQj1IJiZILnY4O0ImJihLPShMPUIuc3BsaXQoIi4iKSlbMF0+MCYmTFswXTw0PzE6KyhMWzBdK0xbMV0pKSwhSyYmayYmKCEoTD1rLm1hdGNo''@;'; put 'put ''KC9FZGdlXC8oXGQrKS8pKXx8TFsxXT49NzQpJiYoTD1rLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoSz0rTFsxXSksV2UuZXhwb3J0cz1LfSw5NjM0OihXZSx6ZSxUKT0+e3ZhciBrPVQoNzc4MzkpLm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkKylcLi8pO1dlLmV4cG9ydHM9ISFrJiYra1sx''@;'; put 'put ''XX0sNDc4MzM6V2U9PntXZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDg1NjQ4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDcw''@;'; put 'put ''NzA1KSxrPVQoNDc5ODcpLmYsdj1UKDE2MDE3KSxoZT1UKDI1NjY2KSxIPVQoNzM0NzApLEI9VCg3NzU0OCksTD1UKDY3NTA3KTtXZS5leHBvcnRzPWZ1bmN0aW9uKEssSil7dmFyIGosVixHLFcsVSxJPUsudGFyZ2V0LFI9Sy5nbG9iYWwsRT1LLnN0YXQ7aWYoaj1SP3NlOkU/c2VbSV18fEgo''@;'; put 'put ''SSx7fSk6KHNlW0ldfHx7fSkucHJvdG90eXBlKWZvcihWIGluIEope2lmKFc9SltWXSxHPUsuZG9udENhbGxHZXRTZXQ/KFU9ayhqLFYpKSYmVS52YWx1ZTpqW1ZdLCFMKFI/VjpJKyhFPyIuIjoiIyIpK1YsSy5mb3JjZWQpJiZ2b2lkIDAhPT1HKXtpZih0eXBlb2YgVz09dHlwZW9mIEcpY29u''@;'; put 'put ''dGludWU7QihXLEcpfShLLnNoYW18fEcmJkcuc2hhbSkmJnYoVywic2hhbSIsITApLGhlKGosVixXLEspfX19LDIzNTIzOldlPT57V2UuZXhwb3J0cz1mdW5jdGlvbih6ZSl7dHJ5e3JldHVybiEhemUoKX1jYXRjaHtyZXR1cm4hMH19fSwyMjgxNDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''VCg0Mjc2MCk7dmFyIHNlPVQoMTE1MSksaz1UKDI1NjY2KSx2PVQoMjIyMzQpLGhlPVQoMjM1MjMpLEg9VCgyNTQ2KSxCPVQoMTYwMTcpLEw9SCgic3BlY2llcyIpLEs9UmVnRXhwLnByb3RvdHlwZTtXZS5leHBvcnRzPWZ1bmN0aW9uKEosSSxSLEUpe3ZhciB6PUgoSiksaj0haGUoZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgVT17fTtyZXR1cm4gVVt6XT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltKXShVKX0pLFY9aiYmIWhlKGZ1bmN0aW9uKCl7dmFyIFU9ITEscT0vYS87cmV0dXJuInNwbGl0Ij09PUomJigocT17fSkuY29uc3RydWN0b3I9e30scS5jb25zdHJ1Y3RvcltMXT1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBxfSxxLmZsYWdzPSIiLHFbel09Ly4vW3pdKSxxLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gVT0hMCxudWxsfSxxW3pdKCIiKSwhVX0pO2lmKCFqfHwhVnx8Uil7dmFyIEc9c2UoLy4vW3pdKSxXPUkoeiwiIltKXSxmdW5jdGlvbihVLHEsdGUsbmUsaWUpe3ZhciBsZT1zZShVKSxk''@;'; put 'put ''ZT1xLmV4ZWM7cmV0dXJuIGRlPT09dnx8ZGU9PT1LLmV4ZWM/aiYmIWllP3tkb25lOiEwLHZhbHVlOkcocSx0ZSxuZSl9Ontkb25lOiEwLHZhbHVlOmxlKHRlLHEsbmUpfTp7ZG9uZTohMX19KTtrKFN0cmluZy5wcm90b3R5cGUsSixXWzBdKSxrKEsseixXWzFdKX1FJiZCKEtbel0sInNoYW0i''@;'; put 'put ''LCEwKX19LDEyNTY2OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDIzNTIzKTtXZS5leHBvcnRzPSFzZShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSl9LDExMzA2OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM2NTYxKSxrPUZ1''@;'; put 'put ''bmN0aW9uLnByb3RvdHlwZSx2PWsuYXBwbHksaGU9ay5jYWxsO1dlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoc2U/aGUuYmluZCh2KTpmdW5jdGlvbigpe3JldHVybiBoZS5hcHBseSh2LGFyZ3VtZW50cyl9KX0sODU0OTooV2UsemUsVCk9Pnt2''@;'; put 'put ''YXIgc2U9VCgxMTUxKSxrPVQoODE0NTApLHY9VCgzNjU2MSksaGU9c2Uoc2UuYmluZCk7V2UuZXhwb3J0cz1mdW5jdGlvbihILEIpe3JldHVybiBrKEgpLHZvaWQgMD09PUI/SDp2P2hlKEgsQik6ZnVuY3Rpb24oKXtyZXR1cm4gSC5hcHBseShCLGFyZ3VtZW50cyl9fX0sMzY1NjE6KFdlLHpl''@;'; put 'put ''LFQpPT57dmFyIHNlPVQoMjM1MjMpO1dlLmV4cG9ydHM9IXNlKGZ1bmN0aW9uKCl7dmFyIGs9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2Yga3x8ay5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KX0sNjk4OTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIHNlPVQoNjYxMyksaz1UKDgxNDUwKSx2PVQoMTM4NDkpLGhlPVQoNDg4MTEpLEg9VCg0MDkzMCksQj1UKDM2NTYxKSxMPUZ1bmN0aW9uLEs9c2UoW10uY29uY2F0KSxKPXNlKFtdLmpvaW4pLEk9e307V2UuZXhwb3J0cz1CP0wuYmluZDpmdW5jdGlvbih6KXt2YXIgaj1rKHRoaXMpLFY9''@;'; put 'put ''ai5wcm90b3R5cGUsRz1IKGFyZ3VtZW50cywxKSxXPWZ1bmN0aW9uKCl7dmFyIHE9SyhHLEgoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBXP2Z1bmN0aW9uKEUseixqKXtpZighaGUoSSx6KSl7Zm9yKHZhciBWPVtdLEc9MDtHPHo7RysrKVZbR109ImFbIitHKyJdIjtJW3pd''@;'; put 'put ''PUwoIkMsYSIsInJldHVybiBuZXcgQygiK0ooViwiLCIpKyIpIil9cmV0dXJuIElbel0oRSxqKX0oaixxLmxlbmd0aCxxKTpqLmFwcGx5KHoscSl9O3JldHVybiB2KFYpJiYoVy5wcm90b3R5cGU9ViksV319LDM1NjI6KFdlLHplLFQpPT57dmFyIHNlPVQoMzY1NjEpLGs9RnVuY3Rpb24ucHJv''@;'; put 'put ''dG90eXBlLmNhbGw7V2UuZXhwb3J0cz1zZT9rLmJpbmQoayk6ZnVuY3Rpb24oKXtyZXR1cm4gay5hcHBseShrLGFyZ3VtZW50cyl9fSwxMzg2OTooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTYyNCksaz1UKDQ4ODExKSx2PUZ1bmN0aW9uLnByb3RvdHlwZSxoZT1zZSYmT2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5RGVzY3JpcHRvcixIPWsodiwibmFtZSIpLEI9SCYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSxMPUgmJighc2V8fHNlJiZoZSh2LCJuYW1lIikuY29uZmlndXJhYmxlKTtXZS5leHBvcnRzPXtFWElTVFM6SCxQUk9QRVI6QixDT05GSUdVUkFCTEU6TH19LDQ1OTM4OihX''@;'; put 'put ''ZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9VCg4MTQ1MCk7V2UuZXhwb3J0cz1mdW5jdGlvbih2LGhlLEgpe3RyeXtyZXR1cm4gc2UoayhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHYsaGUpW0hdKSl9Y2F0Y2h7fX19LDExNTE6KFdlLHplLFQpPT57dmFyIHNlPVQoOTQ3MjMp''@;'; put 'put ''LGs9VCg2NjEzKTtXZS5leHBvcnRzPWZ1bmN0aW9uKHYpe2lmKCJGdW5jdGlvbiI9PT1zZSh2KSlyZXR1cm4gayh2KX19LDY2MTM6KFdlLHplLFQpPT57dmFyIHNlPVQoMzY1NjEpLGs9RnVuY3Rpb24ucHJvdG90eXBlLHY9ay5jYWxsLGhlPXNlJiZrLmJpbmQuYmluZCh2LHYpO1dlLmV4cG9y''@;'; put 'put ''dHM9c2U/aGU6ZnVuY3Rpb24oSCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHYuYXBwbHkoSCxhcmd1bWVudHMpfX19LDQ2NjkzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDcwNzA1KSxrPVQoMTIwMTQpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oaGUsSCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8''@;'; put 'put ''Mj9mdW5jdGlvbihoZSl7cmV0dXJuIGsoaGUpP2hlOnZvaWQgMH0oc2VbaGVdKTpzZVtoZV0mJnNlW2hlXVtIXX19LDY2Mjg4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDc5NTIwKSxrPVQoMjA5NDgpLHY9VCg2Mzc0KSxoZT1UKDk1MjU3KSxCPVQoMjU0NikoIml0ZXJhdG9yIik7V2UuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihMKXtpZighdihMKSlyZXR1cm4gayhMLEIpfHxrKEwsIkBAaXRlcmF0b3IiKXx8aGVbc2UoTCldfX0sMTI5ODk6KFdlLHplLFQpPT57dmFyIHNlPVQoMzU2Miksaz1UKDgxNDUwKSx2PVQoNTg2NDcpLGhlPVQoOTQ2NzYpLEg9VCg2NjI4OCksQj1UeXBlRXJyb3I7V2UuZXhw''@;'; put 'put ''b3J0cz1mdW5jdGlvbihMLEspe3ZhciBKPWFyZ3VtZW50cy5sZW5ndGg8Mj9IKEwpOks7aWYoayhKKSlyZXR1cm4gdihzZShKLEwpKTt0aHJvdyBCKGhlKEwpKyIgaXMgbm90IGl0ZXJhYmxlIil9fSwzODU4NjooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKSxrPVQoMjkxMDYpLHY9VCgxMjAx''@;'; put 'put ''NCksaGU9VCg5NDcyMyksSD1UKDkyMSksQj1zZShbXS5wdXNoKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEwpe2lmKHYoTCkpcmV0dXJuIEw7aWYoayhMKSl7Zm9yKHZhciBLPUwubGVuZ3RoLEo9W10sST0wO0k8SztJKyspe3ZhciBSPUxbSV07InN0cmluZyI9PXR5cGVvZiBSP0IoSixSKTooIm51''@;'; put 'put ''bWJlciI9PXR5cGVvZiBSfHwiTnVtYmVyIj09aGUoUil8fCJTdHJpbmciPT1oZShSKSkmJkIoSixIKFIpKX12YXIgRT1KLmxlbmd0aCx6PSEwO3JldHVybiBmdW5jdGlvbihqLFYpe2lmKHopcmV0dXJuIHo9ITEsVjtpZihrKHRoaXMpKXJldHVybiBWO2Zvcih2YXIgRz0wO0c8RTtHKyspaWYo''@;'; put 'put ''SltHXT09PWopcmV0dXJuIFZ9fX19LDIwOTQ4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDgxNDUwKSxrPVQoNjM3NCk7V2UuZXhwb3J0cz1mdW5jdGlvbih2LGhlKXt2YXIgSD12W2hlXTtyZXR1cm4gayhIKT92b2lkIDA6c2UoSCl9fSw2MzM4MjooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKSxr''@;'; put 'put ''PVQoNjgwNzEpLHY9TWF0aC5mbG9vcixoZT1zZSgiIi5jaGFyQXQpLEg9c2UoIiIucmVwbGFjZSksQj1zZSgiIi5zbGljZSksTD0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZyxLPS9cJChbJCYnYF18XGR7MSwyfSkvZztXZS5leHBvcnRzPWZ1bmN0aW9uKEosSSxSLEUseixqKXt2YXIg''@;'; put 'put ''Vj1SK0oubGVuZ3RoLEc9RS5sZW5ndGgsVz1LO3JldHVybiB2b2lkIDAhPT16JiYoej1rKHopLFc9TCksSChqLFcsZnVuY3Rpb24oVSxxKXt2YXIgdGU7c3dpdGNoKGhlKHEsMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIEo7Y2FzZSJgIjpyZXR1cm4gQihJLDAsUik7Y2Fz''@;'; put 'put ''ZSInIjpyZXR1cm4gQihJLFYpO2Nhc2UiPCI6dGU9eltCKHEsMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIG5lPStxO2lmKDA9PT1uZSlyZXR1cm4gVTtpZihuZT5HKXt2YXIgaWU9dihuZS8xMCk7cmV0dXJuIDA9PT1pZT9VOmllPD1HP3ZvaWQgMD09PUVbaWUtMV0/aGUocSwxKTpFW2llLTFd''@;'; put 'put ''K2hlKHEsMSk6VX10ZT1FW25lLTFdfXJldHVybiB2b2lkIDA9PT10ZT8iIjp0ZX0pfX0sNzA3MDU6ZnVuY3Rpb24oV2Upe3ZhciB6ZT1mdW5jdGlvbihUKXtyZXR1cm4gVCYmVC5NYXRoPT1NYXRoJiZUfTtXZS5leHBvcnRzPXplKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFs''@;'; put 'put ''VGhpcyl8fHplKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHx6ZSgib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHx6ZSgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8dGhpc3x8RnVuY3Rpb24oInJldHVybiB0''@;'; put 'put ''aGlzIikoKX0sNDg4MTE6KFdlLHplLFQpPT57dmFyIHNlPVQoNjYxMyksaz1UKDY4MDcxKSx2PXNlKHt9Lmhhc093blByb3BlcnR5KTtXZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKEgsQil7cmV0dXJuIHYoayhIKSxCKX19LDE5OTA5OldlPT57V2UuZXhwb3J0cz17fX0sNTk0''@;'; put 'put ''MDY6KFdlLHplLFQpPT57dmFyIHNlPVQoNDY2OTMpO1dlLmV4cG9ydHM9c2UoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDk0Njc1OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjI0KSxrPVQoMjM1MjMpLHY9VCg0NjMxMyk7V2UuZXhwb3J0cz0hc2UmJiFrKGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2KCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sNTY2MDc6KFdlLHplLFQpPT57dmFyIHNlPVQoNjYxMyksaz1UKDIzNTIzKSx2PVQoOTQ3MjMpLGhlPU9iamVjdCxIPXNlKCIiLnNwbGl0KTtXZS5leHBvcnRz''@;'; put 'put ''PWsoZnVuY3Rpb24oKXtyZXR1cm4haGUoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pP2Z1bmN0aW9uKEIpe3JldHVybiJTdHJpbmciPT12KEIpP0goQiwiIik6aGUoQil9OmhlfSw1MTg0OTooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMjAxNCksaz1UKDEzODQ5KSx2PVQoMTk1ODcpO1dl''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oaGUsSCxCKXt2YXIgTCxLO3JldHVybiB2JiZzZShMPUguY29uc3RydWN0b3IpJiZMIT09QiYmayhLPUwucHJvdG90eXBlKSYmSyE9PUIucHJvdG90eXBlJiZ2KGhlLEspLGhlfX0sNTczNzE6KFdlLHplLFQpPT57dmFyIHNlPVQoNjYxMyksaz1UKDEyMDE0KSx2''@;'; put 'put ''PVQoODEwNjkpLGhlPXNlKEZ1bmN0aW9uLnRvU3RyaW5nKTtrKHYuaW5zcGVjdFNvdXJjZSl8fCh2Lmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oSCl7cmV0dXJuIGhlKEgpfSksV2UuZXhwb3J0cz12Lmluc3BlY3RTb3VyY2V9LDcxODMyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQo''@;'; put 'put ''NjYxMyksdj1UKDE5OTA5KSxoZT1UKDEzODQ5KSxIPVQoNDg4MTEpLEI9VCg1MTE4MykuZixMPVQoNzU0MzEpLEs9VCgzNTgwOCksSj1UKDU1MjE4KSxJPVQoNTI4MTApLFI9VCgxMjU2NiksRT0hMSx6PUkoIm1ldGEiKSxqPTAsVj1mdW5jdGlvbihuZSl7QihuZSx6LHt2YWx1ZTp7b2JqZWN0''@;'; put 'put ''SUQ6Ik8iK2orKyx3ZWFrRGF0YTp7fX19KX0sdGU9V2UuZXhwb3J0cz17ZW5hYmxlOmZ1bmN0aW9uKCl7dGUuZW5hYmxlPWZ1bmN0aW9uKCl7fSxFPSEwO3ZhciBuZT1MLmYsaWU9ayhbXS5zcGxpY2UpLGxlPXt9O2xlW3pdPTEsbmUobGUpLmxlbmd0aCYmKEwuZj1mdW5jdGlvbihkZSl7Zm9y''@;'; put 'put ''KHZhciB1ZT1uZShkZSksY2U9MCxZPXVlLmxlbmd0aDtjZTxZO2NlKyspaWYodWVbY2VdPT09eil7aWUodWUsY2UsMSk7YnJlYWt9cmV0dXJuIHVlfSxzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiEwfSx7Z2V0T3duUHJvcGVydHlOYW1lczpLLmZ9KSl9LGZhc3RLZXk6ZnVu''@;'; put 'put ''Y3Rpb24obmUsaWUpe2lmKCFoZShuZSkpcmV0dXJuInN5bWJvbCI9PXR5cGVvZiBuZT9uZTooInN0cmluZyI9PXR5cGVvZiBuZT8iUyI6IlAiKStuZTtpZighSChuZSx6KSl7aWYoIUoobmUpKXJldHVybiJGIjtpZighaWUpcmV0dXJuIkUiO1YobmUpfXJldHVybiBuZVt6XS5vYmplY3RJRH0s''@;'; put 'put ''Z2V0V2Vha0RhdGE6ZnVuY3Rpb24obmUsaWUpe2lmKCFIKG5lLHopKXtpZighSihuZSkpcmV0dXJuITA7aWYoIWllKXJldHVybiExO1YobmUpfXJldHVybiBuZVt6XS53ZWFrRGF0YX0sb25GcmVlemU6ZnVuY3Rpb24obmUpe3JldHVybiBSJiZFJiZKKG5lKSYmIUgobmUseikmJlYobmUpLG5l''@;'; put 'put ''fX07dlt6XT0hMH0sNzI3OihXZSx6ZSxUKT0+e3ZhciBFLHosaixzZT1UKDE3NTQyKSxrPVQoNzA3MDUpLHY9VCgxMzg0OSksaGU9VCgxNjAxNyksSD1UKDQ4ODExKSxCPVQoODEwNjkpLEw9VCgyNzIzMCksSz1UKDE5OTA5KSxKPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsST1rLlR5''@;'; put 'put ''cGVFcnJvcjtpZihzZXx8Qi5zdGF0ZSl7dmFyIFc9Qi5zdGF0ZXx8KEIuc3RhdGU9bmV3KDAsay5XZWFrTWFwKSk7Vy5nZXQ9Vy5nZXQsVy5oYXM9Vy5oYXMsVy5zZXQ9Vy5zZXQsRT1mdW5jdGlvbihxLHRlKXtpZihXLmhhcyhxKSl0aHJvdyBJKEopO3JldHVybiB0ZS5mYWNhZGU9cSxXLnNl''@;'; put 'put ''dChxLHRlKSx0ZX0sej1mdW5jdGlvbihxKXtyZXR1cm4gVy5nZXQocSl8fHt9fSxqPWZ1bmN0aW9uKHEpe3JldHVybiBXLmhhcyhxKX19ZWxzZXt2YXIgVT1MKCJzdGF0ZSIpO0tbVV09ITAsRT1mdW5jdGlvbihxLHRlKXtpZihIKHEsVSkpdGhyb3cgSShKKTtyZXR1cm4gdGUuZmFjYWRlPXEs''@;'; put 'put ''aGUocSxVLHRlKSx0ZX0sej1mdW5jdGlvbihxKXtyZXR1cm4gSChxLFUpP3FbVV06e319LGo9ZnVuY3Rpb24ocSl7cmV0dXJuIEgocSxVKX19V2UuZXhwb3J0cz17c2V0OkUsZ2V0OnosaGFzOmosZW5mb3JjZTpmdW5jdGlvbihxKXtyZXR1cm4gaihxKT96KHEpOkUocSx7fSl9LGdldHRlckZv''@;'; put 'put ''cjpmdW5jdGlvbihxKXtyZXR1cm4gZnVuY3Rpb24odGUpe3ZhciBuZTtpZighdih0ZSl8fChuZT16KHRlKSkudHlwZSE9PXEpdGhyb3cgSSgiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3ErIiByZXF1aXJlZCIpO3JldHVybiBuZX19fX0sOTcxMDY6KFdlLHplLFQpPT57dmFyIHNlPVQoMjU0''@;'; put 'put ''Niksaz1UKDk1MjU3KSx2PXNlKCJpdGVyYXRvciIpLGhlPUFycmF5LnByb3RvdHlwZTtXZS5leHBvcnRzPWZ1bmN0aW9uKEgpe3JldHVybiB2b2lkIDAhPT1IJiYoay5BcnJheT09PUh8fGhlW3ZdPT09SCl9fSwyOTEwNjooV2UsemUsVCk9Pnt2YXIgc2U9VCg5NDcyMyk7V2UuZXhwb3J0cz1B''@;'; put 'put ''cnJheS5pc0FycmF5fHxmdW5jdGlvbih2KXtyZXR1cm4iQXJyYXkiPT1zZSh2KX19LDEyMDE0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDMxMjcwKSxrPXNlLmFsbDtXZS5leHBvcnRzPXNlLklTX0hUTUxEREE/ZnVuY3Rpb24odil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHZ8fHY9PT1rfTpm''@;'; put 'put ''dW5jdGlvbih2KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygdn19LDQ5NDUzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9VCgyMzUyMyksdj1UKDEyMDE0KSxoZT1UKDc5NTIwKSxIPVQoNDY2OTMpLEI9VCg1NzM3MSksTD1mdW5jdGlvbigpe30sSz1bXSxKPUgoIlJlZmxlY3QiLCJj''@;'; put 'put ''b25zdHJ1Y3QiKSxJPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLFI9c2UoSS5leGVjKSxFPSFJLmV4ZWMoTCksej1mdW5jdGlvbihHKXtpZighdihHKSlyZXR1cm4hMTt0cnl7cmV0dXJuIEooTCxLLEcpLCEwfWNhdGNoe3JldHVybiExfX0saj1mdW5jdGlvbihHKXtpZighdihHKSlyZXR1''@;'; put 'put ''cm4hMTtzd2l0Y2goaGUoRykpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0dXJuIEV8fCEhUihJLEIoRykpfWNhdGNoe3JldHVybiEwfX07ai5zaGFtPSEwLFdlLmV4cG9ydHM9''@;'; put 'put ''IUp8fGsoZnVuY3Rpb24oKXt2YXIgVjtyZXR1cm4geih6LmNhbGwpfHwheihPYmplY3QpfHwheihmdW5jdGlvbigpe1Y9ITB9KXx8Vn0pP2o6en0sMTQxMjU6KFdlLHplLFQpPT57dmFyIHNlPVQoNDg4MTEpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oayl7cmV0dXJuIHZvaWQgMCE9PWsmJihzZShr''@;'; put 'put ''LCJ2YWx1ZSIpfHxzZShrLCJ3cml0YWJsZSIpKX19LDY3NTA3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDIzNTIzKSxrPVQoMTIwMTQpLHY9LyN8XC5wcm90b3R5cGVcLi8saGU9ZnVuY3Rpb24oSixJKXt2YXIgUj1CW0goSildO3JldHVybiBSPT1LfHxSIT1MJiYoayhJKT9zZShJKTohIUkpfSxI''@;'; put 'put ''PWhlLm5vcm1hbGl6ZT1mdW5jdGlvbihKKXtyZXR1cm4gU3RyaW5nKEopLnJlcGxhY2UodiwiLiIpLnRvTG93ZXJDYXNlKCl9LEI9aGUuZGF0YT17fSxMPWhlLk5BVElWRT0iTiIsSz1oZS5QT0xZRklMTD0iUCI7V2UuZXhwb3J0cz1oZX0sMzA0MjooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMzg0''@;'; put 'put ''OSksaz1NYXRoLmZsb29yO1dlLmV4cG9ydHM9TnVtYmVyLmlzSW50ZWdlcnx8ZnVuY3Rpb24oaGUpe3JldHVybiFzZShoZSkmJmlzRmluaXRlKGhlKSYmayhoZSk9PT1oZX19LDYzNzQ6V2U9PntXZS5leHBvcnRzPWZ1bmN0aW9uKHplKXtyZXR1cm4gbnVsbD09emV9fSwxMzg0OTooV2UsemUs''@;'; put 'put ''VCk9Pnt2YXIgc2U9VCgxMjAxNCksaz1UKDMxMjcwKSx2PWsuYWxsO1dlLmV4cG9ydHM9ay5JU19IVE1MRERBP2Z1bmN0aW9uKGhlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGhlP251bGwhPT1oZTpzZShoZSl8fGhlPT09dn06ZnVuY3Rpb24oaGUpe3JldHVybiJvYmplY3QiPT10eXBlb2Yg''@;'; put 'put ''aGU/bnVsbCE9PWhlOnNlKGhlKX19LDEwMDE3OldlPT57V2UuZXhwb3J0cz0hMX0sNDE4MDQ6KFdlLHplLFQpPT57dmFyIHNlPVQoMTM4NDkpLGs9VCg5NDcyMyksaGU9VCgyNTQ2KSgibWF0Y2giKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEgpe3ZhciBCO3JldHVybiBzZShIKSYmKHZvaWQgMCE9''@;'; put 'put ''PShCPUhbaGVdKT8hIUI6IlJlZ0V4cCI9PWsoSCkpfX0sNjk3NTooV2UsemUsVCk9Pnt2YXIgc2U9VCg0NjY5Myksaz1UKDEyMDE0KSx2PVQoMzc0NzQpLGhlPVQoMjM5NjEpLEg9T2JqZWN0O1dlLmV4cG9ydHM9aGU/ZnVuY3Rpb24oQil7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBCfTpmdW5j''@;'; put 'put ''dGlvbihCKXt2YXIgTD1zZSgiU3ltYm9sIik7cmV0dXJuIGsoTCkmJnYoTC5wcm90b3R5cGUsSChCKSl9fSwyNjU0MzooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTQ5KSxrPVQoMzU2Miksdj1UKDU4NjQ3KSxoZT1UKDk0Njc2KSxIPVQoOTcxMDYpLEI9VCg1NDQ1MCksTD1UKDM3NDc0KSxLPVQo''@;'; put 'put ''MTI5ODkpLEo9VCg2NjI4OCksST1UKDgwMzA3KSxSPVR5cGVFcnJvcixFPWZ1bmN0aW9uKGosVil7dGhpcy5zdG9wcGVkPWosdGhpcy5yZXN1bHQ9Vn0sej1FLnByb3RvdHlwZTtXZS5leHBvcnRzPWZ1bmN0aW9uKGosVixHKXt2YXIgbGUsZGUsdWUsY2UsWSxiLHgsVT0hKCFHfHwhRy5BU19F''@;'; put 'put ''TlRSSUVTKSxxPSEoIUd8fCFHLklTX1JFQ09SRCksdGU9ISghR3x8IUcuSVNfSVRFUkFUT1IpLG5lPSEoIUd8fCFHLklOVEVSUlVQVEVEKSxpZT1zZShWLEcmJkcudGhhdCksTj1mdW5jdGlvbihnKXtyZXR1cm4gbGUmJkkobGUsIm5vcm1hbCIsZyksbmV3IEUoITAsZyl9LEY9ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIFU/KHYoZyksbmU/aWUoZ1swXSxnWzFdLE4pOmllKGdbMF0sZ1sxXSkpOm5lP2llKGcsTik6aWUoZyl9O2lmKHEpbGU9ai5pdGVyYXRvcjtlbHNlIGlmKHRlKWxlPWo7ZWxzZXtpZighKGRlPUooaikpKXRocm93IFIoaGUoaikrIiBpcyBub3QgaXRlcmFibGUiKTtpZihIKGRl''@;'; put 'put ''KSl7Zm9yKHVlPTAsY2U9QihqKTtjZT51ZTt1ZSsrKWlmKChZPUYoalt1ZV0pKSYmTCh6LFkpKXJldHVybiBZO3JldHVybiBuZXcgRSghMSl9bGU9SyhqLGRlKX1mb3IoYj1xP2oubmV4dDpsZS5uZXh0OyEoeD1rKGIsbGUpKS5kb25lOyl7dHJ5e1k9Rih4LnZhbHVlKX1jYXRjaChnKXtJKGxl''@;'; put 'put ''LCJ0aHJvdyIsZyl9aWYoIm9iamVjdCI9PXR5cGVvZiBZJiZZJiZMKHosWSkpcmV0dXJuIFl9cmV0dXJuIG5ldyBFKCExKX19LDgwMzA3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM1NjIpLGs9VCg1ODY0Nyksdj1UKDIwOTQ4KTtXZS5leHBvcnRzPWZ1bmN0aW9uKGhlLEgsQil7dmFyIEwsSztr''@;'; put 'put ''KGhlKTt0cnl7aWYoIShMPXYoaGUsInJldHVybiIpKSl7aWYoInRocm93Ij09PUgpdGhyb3cgQjtyZXR1cm4gQn1MPXNlKEwsaGUpfWNhdGNoKEope0s9ITAsTD1KfWlmKCJ0aHJvdyI9PT1IKXRocm93IEI7aWYoSyl0aHJvdyBMO3JldHVybiBrKEwpLEJ9fSw4Nzk3NTooV2UsemUsVCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIHNlPVQoMTg1NDYpLkl0ZXJhdG9yUHJvdG90eXBlLGs9VCg3NDQxMCksdj1UKDczOTIwKSxoZT1UKDU1OTY4KSxIPVQoOTUyNTcpLEI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307V2UuZXhwb3J0cz1mdW5jdGlvbihMLEssSixJKXt2YXIgUj1LKyIgSXRlcmF0b3Ii''@;'; put 'put ''O3JldHVybiBMLnByb3RvdHlwZT1rKHNlLHtuZXh0OnYoKyFJLEopfSksaGUoTCxSLCExLCEwKSxIW1JdPUIsTH19LDY0NTYwOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDM1NjIpLHY9VCgxMDAxNyksaGU9VCgxMzg2OSksSD1UKDEyMDE0KSxCPVQoODc5''@;'; put 'put ''NzUpLEw9VCg4MjczMyksSz1UKDE5NTg3KSxKPVQoNTU5NjgpLEk9VCgxNjAxNyksUj1UKDI1NjY2KSxFPVQoMjU0Niksej1UKDk1MjU3KSxqPVQoMTg1NDYpLFY9aGUuUFJPUEVSLEc9aGUuQ09ORklHVVJBQkxFLFc9ai5JdGVyYXRvclByb3RvdHlwZSxVPWouQlVHR1lfU0FGQVJJX0lURVJB''@;'; put 'put ''VE9SUyxxPUUoIml0ZXJhdG9yIiksbmU9InZhbHVlcyIsaWU9ImVudHJpZXMiLGxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O1dlLmV4cG9ydHM9ZnVuY3Rpb24oZGUsdWUsY2UsWSxiLHgsTil7QihjZSx1ZSxZKTt2YXIgUSxyZSxmZSxGPWZ1bmN0aW9uKG1lKXtpZihtZT09PWImJnApcmV0''@;'; put 'put ''dXJuIHA7aWYoIVUmJm1lIGluIE0pcmV0dXJuIE1bbWVdO3N3aXRjaChtZSl7Y2FzZSJrZXlzIjpjYXNlIG5lOmNhc2UgaWU6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjZSh0aGlzLG1lKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjZSh0aGlzKX19LGc9dWUrIiBJdGVy''@;'; put 'put ''YXRvciIsQz0hMSxNPWRlLnByb3RvdHlwZSx5PU1bcV18fE1bIkBAaXRlcmF0b3IiXXx8YiYmTVtiXSxwPSFVJiZ5fHxGKGIpLFM9IkFycmF5Ij09dWUmJk0uZW50cmllc3x8eTtpZihTJiYoUT1MKFMuY2FsbChuZXcgZGUpKSkhPT1PYmplY3QucHJvdG90eXBlJiZRLm5leHQmJighdiYmTChR''@;'; put 'put ''KSE9PVcmJihLP0soUSxXKTpIKFFbcV0pfHxSKFEscSxsZSkpLEooUSxnLCEwLCEwKSx2JiYoeltnXT1sZSkpLFYmJmI9PW5lJiZ5JiZ5Lm5hbWUhPT1uZSYmKCF2JiZHP0koTSwibmFtZSIsbmUpOihDPSEwLHA9ZnVuY3Rpb24oKXtyZXR1cm4gayh5LHRoaXMpfSkpLGIpaWYocmU9e3ZhbHVl''@;'; put 'put ''czpGKG5lKSxrZXlzOng/cDpGKCJrZXlzIiksZW50cmllczpGKGllKX0sTilmb3IoZmUgaW4gcmUpKFV8fEN8fCEoZmUgaW4gTSkpJiZSKE0sZmUscmVbZmVdKTtlbHNlIHNlKHt0YXJnZXQ6dWUscHJvdG86ITAsZm9yY2VkOlV8fEN9LHJlKTtyZXR1cm4oIXZ8fE4pJiZNW3FdIT09cCYmUihN''@;'; put 'put ''LHEscCx7bmFtZTpifSkselt1ZV09cCxyZX19LDE4NTQ2OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUixFLHosc2U9VCgyMzUyMyksaz1UKDEyMDE0KSx2PVQoMTM4NDkpLGhlPVQoNzQ0MTApLEg9VCg4MjczMyksQj1UKDI1NjY2KSxMPVQoMjU0NiksSz1UKDEwMDE3KSxKPUwoIml0''@;'; put 'put ''ZXJhdG9yIiksST0hMTtbXS5rZXlzJiYoIm5leHQiaW4oej1bXS5rZXlzKCkpPyhFPUgoSCh6KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKFI9RSk6ST0hMCksIXYoUil8fHNlKGZ1bmN0aW9uKCl7dmFyIFY9e307cmV0dXJuIFJbSl0uY2FsbChWKSE9PVZ9KT9SPXt9OksmJihSPWhlKFIpKSxr''@;'; put 'put ''KFJbSl0pfHxCKFIsSixmdW5jdGlvbigpe3JldHVybiB0aGlzfSksV2UuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6UixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOkl9fSw5NTI1NzpXZT0+e1dlLmV4cG9ydHM9e319LDU0NDUwOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY1MzE2KTtXZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uKGspe3JldHVybiBzZShrLmxlbmd0aCl9fSwzNDQ2ODooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKSxrPVQoMjM1MjMpLHY9VCgxMjAxNCksaGU9VCg0ODgxMSksSD1UKDg1NjI0KSxCPVQoMTM4NjkpLkNPTkZJR1VSQUJMRSxMPVQoNTczNzEpLEs9VCg3MjcpLEo9Sy5l''@;'; put 'put ''bmZvcmNlLEk9Sy5nZXQsUj1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksej1zZSgiIi5zbGljZSksaj1zZSgiIi5yZXBsYWNlKSxWPXNlKFtdLmpvaW4pLEc9SCYmIWsoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PUUoZnVuY3Rpb24oKXt9LCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3Ro''@;'; put 'put ''fSksVz1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIiksVT1XZS5leHBvcnRzPWZ1bmN0aW9uKHEsdGUsbmUpeyJTeW1ib2woIj09PXooUih0ZSksMCw3KSYmKHRlPSJbIitqKFIodGUpLC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksbmUmJm5lLmdldHRlciYmKHRlPSJnZXQg''@;'; put 'put ''Iit0ZSksbmUmJm5lLnNldHRlciYmKHRlPSJzZXQgIit0ZSksKCFoZShxLCJuYW1lIil8fEImJnEubmFtZSE9PXRlKSYmKEg/RShxLCJuYW1lIix7dmFsdWU6dGUsY29uZmlndXJhYmxlOiEwfSk6cS5uYW1lPXRlKSxHJiZuZSYmaGUobmUsImFyaXR5IikmJnEubGVuZ3RoIT09bmUuYXJpdHkm''@;'; put 'put ''JkUocSwibGVuZ3RoIix7dmFsdWU6bmUuYXJpdHl9KTt0cnl7bmUmJmhlKG5lLCJjb25zdHJ1Y3RvciIpJiZuZS5jb25zdHJ1Y3Rvcj9IJiZFKHEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6cS5wcm90b3R5cGUmJihxLnByb3RvdHlwZT12b2lkIDApfWNhdGNoe312YXIgaWU9SihxKTty''@;'; put 'put ''ZXR1cm4gaGUoaWUsInNvdXJjZSIpfHwoaWUuc291cmNlPVYoVywic3RyaW5nIj09dHlwZW9mIHRlP3RlOiIiKSkscX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPVUoZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzKSYmSSh0aGlzKS5zb3VyY2V8fEwodGhpcyl9LCJ0b1N0cmluZyIpfSw4''@;'; put 'put ''NDc0NDpXZT0+e3ZhciB6ZT1NYXRoLmNlaWwsVD1NYXRoLmZsb29yO1dlLmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24oayl7dmFyIHY9K2s7cmV0dXJuKHY+MD9UOnplKSh2KX19LDQxOTYxOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDQxODA0KSxrPVR5cGVFcnJvcjtXZS5leHBvcnRzPWZ1''@;'; put 'put ''bmN0aW9uKHYpe2lmKHNlKHYpKXRocm93IGsoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiB2fX0sNDc5NTk6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDg1NjI0KSxrPVQoNjYxMyksdj1UKDM1NjIpLGhlPVQoMjM1MjMp''@;'; put 'put ''LEg9VCgxNDU0NSksQj1UKDU1MzQpLEw9VCg0NjkwMSksSz1UKDY4MDcxKSxKPVQoNTY2MDcpLEk9T2JqZWN0LmFzc2lnbixSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxFPWsoW10uY29uY2F0KTtXZS5leHBvcnRzPSFJfHxoZShmdW5jdGlvbigpe2lmKHNlJiYxIT09SSh7YjoxfSxJKFIoe30s''@;'; put 'put ''ImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1IodGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgej17fSxqPXt9LFY9U3ltYm9sKCksRz0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB6W1ZdPTcsRy5zcGxpdCgi''@;'; put 'put ''IikuZm9yRWFjaChmdW5jdGlvbihXKXtqW1ddPVd9KSw3IT1JKHt9LHopW1ZdfHxIKEkoe30saikpLmpvaW4oIiIpIT1HfSk/ZnVuY3Rpb24oaixWKXtmb3IodmFyIEc9SyhqKSxXPWFyZ3VtZW50cy5sZW5ndGgsVT0xLHE9Qi5mLHRlPUwuZjtXPlU7KWZvcih2YXIgdWUsbmU9Sihhcmd1bWVu''@;'; put 'put ''dHNbVSsrXSksaWU9cT9FKEgobmUpLHEobmUpKTpIKG5lKSxsZT1pZS5sZW5ndGgsZGU9MDtsZT5kZTspdWU9aWVbZGUrK10sKCFzZXx8dih0ZSxuZSx1ZSkpJiYoR1t1ZV09bmVbdWVdKTtyZXR1cm4gR306SX0sNzQ0MTA6KFdlLHplLFQpPT57dmFyIFcsc2U9VCg1ODY0Nyksaz1UKDc3MzI4''@;'; put 'put ''KSx2PVQoNDc4MzMpLGhlPVQoMTk5MDkpLEg9VCg1OTQwNiksQj1UKDQ2MzEzKSxMPVQoMjcyMzApLEk9InByb3RvdHlwZSIsUj0ic2NyaXB0IixFPUwoIklFX1BST1RPIiksej1mdW5jdGlvbigpe30saj1mdW5jdGlvbihxKXtyZXR1cm4iPCIrUisiPiIrcSsiPC8iK1IrIj4ifSxWPWZ1bmN0''@;'; put 'put ''aW9uKHEpe3Eud3JpdGUoaigiIikpLHEuY2xvc2UoKTt2YXIgdGU9cS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBxPW51bGwsdGV9LFU9ZnVuY3Rpb24oKXt0cnl7Vz1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaHt9VT10eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50''@;'; put 'put ''LmRvbWFpbiYmVz9WKFcpOmZ1bmN0aW9uKCl7dmFyIG5lLHE9QigiaWZyYW1lIiksdGU9ImphdmEiK1IrIjoiO3JldHVybiBxLnN0eWxlLmRpc3BsYXk9Im5vbmUiLEguYXBwZW5kQ2hpbGQocSkscS5zcmM9U3RyaW5nKHRlKSwobmU9cS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCks''@;'; put 'put ''bmUud3JpdGUoaigiZG9jdW1lbnQuRj1PYmplY3QiKSksbmUuY2xvc2UoKSxuZS5GfSgpOlYoVyk7Zm9yKHZhciBxPXYubGVuZ3RoO3EtLTspZGVsZXRlIFVbSV1bdltxXV07cmV0dXJuIFUoKX07aGVbRV09ITAsV2UuZXhwb3J0cz1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0ZSxuZSl7dmFy''@;'; put 'put ''IGllO3JldHVybiBudWxsIT09dGU/KHpbSV09c2UodGUpLGllPW5ldyB6LHpbSV09bnVsbCxpZVtFXT10ZSk6aWU9VSgpLHZvaWQgMD09PW5lP2llOmsuZihpZSxuZSl9fSw3NzMyODooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTYyNCksaz1UKDIwMTE4KSx2PVQoNTExODMpLGhlPVQoNTg2NDcp''@;'; put 'put ''LEg9VCg1MDMyNyksQj1UKDE0NTQ1KTt6ZS5mPXNlJiYhaz9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihLLEope2hlKEspO2Zvcih2YXIgaixJPUgoSiksUj1CKEopLEU9Ui5sZW5ndGgsej0wO0U+ejspdi5mKEssaj1SW3orK10sSVtqXSk7cmV0dXJuIEt9fSw1MTE4MzooV2Us''@;'; put 'put ''emUsVCk9Pnt2YXIgc2U9VCg4NTYyNCksaz1UKDk0Njc1KSx2PVQoMjAxMTgpLGhlPVQoNTg2NDcpLEg9VCg4NDA5NCksQj1UeXBlRXJyb3IsTD1PYmplY3QuZGVmaW5lUHJvcGVydHksSz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEo9ImVudW1lcmFibGUiLEk9ImNvbmZpZ3Vy''@;'; put 'put ''YWJsZSIsUj0id3JpdGFibGUiO3plLmY9c2U/dj9mdW5jdGlvbih6LGosVil7aWYoaGUoeiksaj1IKGopLGhlKFYpLCJmdW5jdGlvbiI9PXR5cGVvZiB6JiYicHJvdG90eXBlIj09PWomJiJ2YWx1ZSJpbiBWJiZSIGluIFYmJiFWW1JdKXt2YXIgRz1LKHosaik7RyYmR1tSXSYmKHpbal09Vi52''@;'; put 'put ''YWx1ZSxWPXtjb25maWd1cmFibGU6SSBpbiBWP1ZbSV06R1tJXSxlbnVtZXJhYmxlOkogaW4gVj9WW0pdOkdbSl0sd3JpdGFibGU6ITF9KX1yZXR1cm4gTCh6LGosVil9Okw6ZnVuY3Rpb24oeixqLFYpe2lmKGhlKHopLGo9SChqKSxoZShWKSxrKXRyeXtyZXR1cm4gTCh6LGosVil9Y2F0Y2h7''@;'; put 'put ''fWlmKCJnZXQiaW4gVnx8InNldCJpbiBWKXRocm93IEIoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIFYmJih6W2pdPVYudmFsdWUpLHp9fSw0Nzk4NzooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTYyNCksaz1UKDM1NjIpLHY9VCg0NjkwMSksaGU9VCg3MzkyMCks''@;'; put 'put ''SD1UKDUwMzI3KSxCPVQoODQwOTQpLEw9VCg0ODgxMSksSz1UKDk0Njc1KSxKPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7emUuZj1zZT9KOmZ1bmN0aW9uKFIsRSl7aWYoUj1IKFIpLEU9QihFKSxLKXRyeXtyZXR1cm4gSihSLEUpfWNhdGNoe31pZihMKFIsRSkpcmV0dXJuIGhl''@;'; put 'put ''KCFrKHYuZixSLEUpLFJbRV0pfX0sMzU4MDg6KFdlLHplLFQpPT57dmFyIHNlPVQoOTQ3MjMpLGs9VCg1MDMyNyksdj1UKDc1NDMxKS5mLGhlPVQoMTA4NzIpLEg9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93''@;'; put 'put ''blByb3BlcnR5TmFtZXMod2luZG93KTpbXTtXZS5leHBvcnRzLmY9ZnVuY3Rpb24oSyl7cmV0dXJuIEgmJiJXaW5kb3ciPT1zZShLKT9mdW5jdGlvbihMKXt0cnl7cmV0dXJuIHYoTCl9Y2F0Y2h7cmV0dXJuIGhlKEgpfX0oSyk6dihrKEspKX19LDc1NDMxOihXZSx6ZSxUKT0+e3ZhciBzZT1U''@;'; put 'put ''KDI0OTY3KSx2PVQoNDc4MzMpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7emUuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24oSCl7cmV0dXJuIHNlKEgsdil9fSw1NTM0OihXZSx6ZSk9Pnt6ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDgyNzMz''@;'; put 'put ''OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDQ4ODExKSxrPVQoMTIwMTQpLHY9VCg2ODA3MSksaGU9VCgyNzIzMCksSD1UKDQ2MDg2KSxCPWhlKCJJRV9QUk9UTyIpLEw9T2JqZWN0LEs9TC5wcm90b3R5cGU7V2UuZXhwb3J0cz1IP0wuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oSil7dmFyIEk9dihK''@;'; put 'put ''KTtpZihzZShJLEIpKXJldHVybiBJW0JdO3ZhciBSPUkuY29uc3RydWN0b3I7cmV0dXJuIGsoUikmJkkgaW5zdGFuY2VvZiBSP1IucHJvdG90eXBlOkkgaW5zdGFuY2VvZiBMP0s6bnVsbH19LDU1MjE4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDIzNTIzKSxrPVQoMTM4NDkpLHY9VCg5NDcyMyks''@;'; put 'put ''aGU9VCg2Mjc4OSksSD1PYmplY3QuaXNFeHRlbnNpYmxlLEI9c2UoZnVuY3Rpb24oKXtIKDEpfSk7V2UuZXhwb3J0cz1CfHxoZT9mdW5jdGlvbihLKXtyZXR1cm4hKCFrKEspfHxoZSYmIkFycmF5QnVmZmVyIj09dihLKSkmJighSHx8SChLKSl9Okh9LDM3NDc0OihXZSx6ZSxUKT0+e3ZhciBz''@;'; put 'put ''ZT1UKDY2MTMpO1dlLmV4cG9ydHM9c2Uoe30uaXNQcm90b3R5cGVPZil9LDI0OTY3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9VCg0ODgxMSksdj1UKDUwMzI3KSxoZT1UKDM2MzA1KS5pbmRleE9mLEg9VCgxOTkwOSksQj1zZShbXS5wdXNoKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEws''@;'; put 'put ''Syl7dmFyIEUsSj12KEwpLEk9MCxSPVtdO2ZvcihFIGluIEopIWsoSCxFKSYmayhKLEUpJiZCKFIsRSk7Zm9yKDtLLmxlbmd0aD5JOylrKEosRT1LW0krK10pJiYofmhlKFIsRSl8fEIoUixFKSk7cmV0dXJuIFJ9fSwxNDU0NTooV2UsemUsVCk9Pnt2YXIgc2U9VCgyNDk2Nyksaz1UKDQ3ODMz''@;'; put 'put ''KTtXZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihoZSl7cmV0dXJuIHNlKGhlLGspfX0sNDY5MDE6KFdlLHplKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgVD17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxzZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGs9c2UmJiFULmNhbGwo''@;'; put 'put ''ezE6Mn0sMSk7emUuZj1rP2Z1bmN0aW9uKGhlKXt2YXIgSD1zZSh0aGlzLGhlKTtyZXR1cm4hIUgmJkguZW51bWVyYWJsZX06VH0sMTk1ODc6KFdlLHplLFQpPT57dmFyIHNlPVQoNDU5MzgpLGs9VCg1ODY0Nyksdj1UKDcwMDgpO1dlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwo''@;'; put 'put ''Il9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIEIsaGU9ITEsSD17fTt0cnl7KEI9c2UoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIiwic2V0IikpKEgsW10pLGhlPUggaW5zdGFuY2VvZiBBcnJheX1jYXRjaHt9cmV0dXJuIGZ1bmN0aW9uKEssSil7cmV0dXJuIGsoSyksdihKKSxo''@;'; put 'put ''ZT9CKEssSik6Sy5fX3Byb3RvX189SixLfX0oKTp2b2lkIDApfSw0NDU4MjooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTYyNCksaz1UKDIzNTIzKSx2PVQoNjYxMyksaGU9VCg4MjczMyksSD1UKDE0NTQ1KSxCPVQoNTAzMjcpLEs9dihUKDQ2OTAxKS5mKSxKPXYoW10ucHVzaCksST1zZSYmayhm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBFPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEVbMl09MiwhSyhFLDIpfSksUj1mdW5jdGlvbihFKXtyZXR1cm4gZnVuY3Rpb24oeil7Zm9yKHZhciB0ZSxqPUIoeiksVj1IKGopLEc9SSYmbnVsbD09PWhlKGopLFc9Vi5sZW5ndGgsVT0wLHE9W107Vz5VOyl0ZT1W''@;'; put 'put ''W1UrK10sKCFzZXx8KEc/dGUgaW4gajpLKGosdGUpKSkmJkoocSxFP1t0ZSxqW3RlXV06alt0ZV0pO3JldHVybiBxfX07V2UuZXhwb3J0cz17ZW50cmllczpSKCEwKSx2YWx1ZXM6UighMSl9fSw3NzA1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgyNzQ5MCksaz1UKDc5NTIw''@;'; put 'put ''KTtXZS5leHBvcnRzPXNlP3t9LnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIitrKHRoaXMpKyJdIn19LDYzNDE1OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM1NjIpLGs9VCgxMjAxNCksdj1UKDEzODQ5KSxoZT1UeXBlRXJyb3I7V2UuZXhwb3J0cz1mdW5jdGlvbihILEIpe3Zh''@;'; put 'put ''ciBMLEs7aWYoInN0cmluZyI9PT1CJiZrKEw9SC50b1N0cmluZykmJiF2KEs9c2UoTCxIKSl8fGsoTD1ILnZhbHVlT2YpJiYhdihLPXNlKEwsSCkpfHwic3RyaW5nIiE9PUImJmsoTD1ILnRvU3RyaW5nKSYmIXYoSz1zZShMLEgpKSlyZXR1cm4gSzt0aHJvdyBoZSgiQ2FuJ3QgY29udmVydCBv''@;'; put 'put ''YmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSwyMTE5OTooV2UsemUsVCk9Pnt2YXIgc2U9VCg0NjY5Myksaz1UKDY2MTMpLHY9VCg3NTQzMSksaGU9VCg1NTM0KSxIPVQoNTg2NDcpLEI9ayhbXS5jb25jYXQpO1dlLmV4cG9ydHM9c2UoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9u''@;'; put 'put ''KEspe3ZhciBKPXYuZihIKEspKSxJPWhlLmY7cmV0dXJuIEk/QihKLEkoSykpOkp9fSw5MjczMzooV2UsemUsVCk9Pnt2YXIgc2U9VCg3MDcwNSk7V2UuZXhwb3J0cz1zZX0sOTI0MDA6KFdlLHplLFQpPT57dmFyIHNlPVQoNTExODMpLmY7V2UuZXhwb3J0cz1mdW5jdGlvbihrLHYsaGUpe2hl''@;'; put 'put ''IGluIGt8fHNlKGssaGUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdltoZV19LHNldDpmdW5jdGlvbihIKXt2W2hlXT1IfX0pfX0sNTgxMjY6KFdlLHplLFQpPT57dmFyIHNlPVQoMzU2Miksaz1UKDU4NjQ3KSx2PVQoMTIwMTQpLGhlPVQoOTQ3MjMpLEg9VCgyMjIz''@;'; put 'put ''NCksQj1UeXBlRXJyb3I7V2UuZXhwb3J0cz1mdW5jdGlvbihMLEspe3ZhciBKPUwuZXhlYztpZih2KEopKXt2YXIgST1zZShKLEwsSyk7cmV0dXJuIG51bGwhPT1JJiZrKEkpLEl9aWYoIlJlZ0V4cCI9PT1oZShMKSlyZXR1cm4gc2UoSCxMLEspO3Rocm93IEIoIlJlZ0V4cCNleGVjIGNhbGxl''@;'; put 'put ''ZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKX19LDIyMjM0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsbGUsc2U9VCgzNTYyKSxrPVQoNjYxMyksdj1UKDkyMSksaGU9VCg0ODcyNSksSD1UKDk3MTg5KSxCPVQoNjg4MzUpLEw9VCg3NDQxMCksSz1UKDcyNykuZ2V0LEo9VCg0''@;'; put 'put ''MzE4NiksST1UKDUxOTQ5KSxSPUIoIm5hdGl2ZS1zdHJpbmctcmVwbGFjZSIsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxFPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyx6PUUsaj1rKCIiLmNoYXJBdCksVj1rKCIiLmluZGV4T2YpLEc9aygiIi5yZXBsYWNlKSxXPWsoIiIuc2xpY2UpLFU9KGxl''@;'; put 'put ''PS9iKi9nLHNlKEUsaWU9L2EvLCJhIiksc2UoRSxsZSwiYSIpLDAhPT1pZS5sYXN0SW5kZXh8fDAhPT1sZS5sYXN0SW5kZXgpLHE9SC5CUk9LRU5fQ0FSRVQsdGU9dm9pZCAwIT09LygpPz8vLmV4ZWMoIiIpWzFdOyhVfHx0ZXx8cXx8Snx8SSkmJih6PWZ1bmN0aW9uKGxlKXt2YXIgYix4LE4s''@;'; put 'put ''RixnLEMsTSxkZT10aGlzLHVlPUsoZGUpLGNlPXYobGUpLFk9dWUucmF3O2lmKFkpcmV0dXJuIFkubGFzdEluZGV4PWRlLmxhc3RJbmRleCxiPXNlKHosWSxjZSksZGUubGFzdEluZGV4PVkubGFzdEluZGV4LGI7dmFyIHk9dWUuZ3JvdXBzLHA9cSYmZGUuc3RpY2t5LFM9c2UoaGUsZGUpLFE9''@;'; put 'put ''ZGUuc291cmNlLHJlPTAsZmU9Y2U7aWYocCYmKFM9RyhTLCJ5IiwiIiksLTE9PT1WKFMsImciKSYmKFMrPSJnIiksZmU9VyhjZSxkZS5sYXN0SW5kZXgpLGRlLmxhc3RJbmRleD4wJiYoIWRlLm11bHRpbGluZXx8ZGUubXVsdGlsaW5lJiYiXG4iIT09aihjZSxkZS5sYXN0SW5kZXgtMSkpJiYo''@;'; put 'put ''UT0iKD86ICIrUSsiKSIsZmU9IiAiK2ZlLHJlKyspLHg9bmV3IFJlZ0V4cCgiXig/OiIrUSsiKSIsUykpLHRlJiYoeD1uZXcgUmVnRXhwKCJeIitRKyIkKD8hXFxzKSIsUykpLFUmJihOPWRlLmxhc3RJbmRleCksRj1zZShFLHA/eDpkZSxmZSkscD9GPyhGLmlucHV0PVcoRi5pbnB1dCxyZSks''@;'; put 'put ''RlswXT1XKEZbMF0scmUpLEYuaW5kZXg9ZGUubGFzdEluZGV4LGRlLmxhc3RJbmRleCs9RlswXS5sZW5ndGgpOmRlLmxhc3RJbmRleD0wOlUmJkYmJihkZS5sYXN0SW5kZXg9ZGUuZ2xvYmFsP0YuaW5kZXgrRlswXS5sZW5ndGg6TiksdGUmJkYmJkYubGVuZ3RoPjEmJnNlKFIsRlswXSx4LGZ1''@;'; put 'put ''bmN0aW9uKCl7Zm9yKGc9MTtnPGFyZ3VtZW50cy5sZW5ndGgtMjtnKyspdm9pZCAwPT09YXJndW1lbnRzW2ddJiYoRltnXT12b2lkIDApfSksRiYmeSlmb3IoRi5ncm91cHM9Qz1MKG51bGwpLGc9MDtnPHkubGVuZ3RoO2crKylDWyhNPXlbZ10pWzBdXT1GW01bMV1dO3JldHVybiBGfSksV2Uu''@;'; put 'put ''ZXhwb3J0cz16fSw0ODcyNTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNTg2NDcpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgaz1zZSh0aGlzKSx2PSIiO3JldHVybiBrLmhhc0luZGljZXMmJih2Kz0iZCIpLGsuZ2xvYmFsJiYodis9ImciKSxrLmlnbm9yZUNhc2UmJih2''@;'; put 'put ''Kz0iaSIpLGsubXVsdGlsaW5lJiYodis9Im0iKSxrLmRvdEFsbCYmKHYrPSJzIiksay51bmljb2RlJiYodis9InUiKSxrLnVuaWNvZGVTZXRzJiYodis9InYiKSxrLnN0aWNreSYmKHYrPSJ5Iiksdn19LDgxNjIwOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM1NjIpLGs9VCg0ODgxMSksdj1UKDM3''@;'; put 'put ''NDc0KSxoZT1UKDQ4NzI1KSxIPVJlZ0V4cC5wcm90b3R5cGU7V2UuZXhwb3J0cz1mdW5jdGlvbihCKXt2YXIgTD1CLmZsYWdzO3JldHVybiB2b2lkIDAhPT1MfHwiZmxhZ3MiaW4gSHx8ayhCLCJmbGFncyIpfHwhdihILEIpP0w6c2UoaGUsQil9fSw5NzE4OTooV2UsemUsVCk9Pnt2YXIgc2U9''@;'; put 'put ''VCgyMzUyMyksdj1UKDcwNzA1KS5SZWdFeHAsaGU9c2UoZnVuY3Rpb24oKXt2YXIgTD12KCJhIiwieSIpO3JldHVybiBMLmxhc3RJbmRleD0yLG51bGwhPUwuZXhlYygiYWJjZCIpfSksSD1oZXx8c2UoZnVuY3Rpb24oKXtyZXR1cm4hdigiYSIsInkiKS5zdGlja3l9KSxCPWhlfHxzZShmdW5j''@;'; put 'put ''dGlvbigpe3ZhciBMPXYoIl5yIiwiZ3kiKTtyZXR1cm4gTC5sYXN0SW5kZXg9MixudWxsIT1MLmV4ZWMoInN0ciIpfSk7V2UuZXhwb3J0cz17QlJPS0VOX0NBUkVUOkIsTUlTU0VEX1NUSUNLWTpILFVOU1VQUE9SVEVEX1k6aGV9fSw0MzE4NjooV2UsemUsVCk9Pnt2YXIgc2U9VCgyMzUyMyks''@;'; put 'put ''dj1UKDcwNzA1KS5SZWdFeHA7V2UuZXhwb3J0cz1zZShmdW5jdGlvbigpe3ZhciBoZT12KCIuIiwicyIpO3JldHVybiEoaGUuZG90QWxsJiZoZS5leGVjKCJcbiIpJiYicyI9PT1oZS5mbGFncyl9KX0sNTE5NDk6KFdlLHplLFQpPT57dmFyIHNlPVQoMjM1MjMpLHY9VCg3MDcwNSkuUmVnRXhw''@;'; put 'put ''O1dlLmV4cG9ydHM9c2UoZnVuY3Rpb24oKXt2YXIgaGU9digiKD88YT5iKSIsImciKTtyZXR1cm4iYiIhPT1oZS5leGVjKCJiIikuZ3JvdXBzLmF8fCJiYyIhPT0iYiIucmVwbGFjZShoZSwiJDxhPmMiKX0pfSwyNDU3MjooV2UsemUsVCk9Pnt2YXIgc2U9VCg2Mzc0KSxrPVR5cGVFcnJvcjtX''@;'; put 'put ''ZS5leHBvcnRzPWZ1bmN0aW9uKHYpe2lmKHNlKHYpKXRocm93IGsoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdik7cmV0dXJuIHZ9fSw1NTg4MTpXZT0+e1dlLmV4cG9ydHM9T2JqZWN0LmlzfHxmdW5jdGlvbihULHNlKXtyZXR1cm4gVD09PXNlPzAhPT1UfHwxL1Q9PTEvc2U6VCE9VCYmc2Uh''@;'; put 'put ''PXNlfX0sOTU4OTU6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBJLHNlPVQoNzA3MDUpLGs9VCgxMTMwNiksdj1UKDEyMDE0KSxoZT1UKDgzNDYwKSxIPVQoNzc4MzkpLEI9VCg0MDkzMCksTD1UKDc5NTQ1KSxLPXNlLkZ1bmN0aW9uLEo9L01TSUUgLlwuLy50ZXN0KEgpfHxoZSYmKChJ''@;'; put 'put ''PXNlLkJ1bi52ZXJzaW9uLnNwbGl0KCIuIikpLmxlbmd0aDwzfHwwPT1JWzBdJiYoSVsxXTwzfHwzPT1JWzFdJiYwPT1JWzJdKSk7V2UuZXhwb3J0cz1mdW5jdGlvbihJLFIpe3ZhciBFPVI/MjoxO3JldHVybiBKP2Z1bmN0aW9uKHosail7dmFyIFY9TChhcmd1bWVudHMubGVuZ3RoLDEpPkUs''@;'; put 'put ''Rz12KHopP3o6Syh6KSxXPVY/Qihhcmd1bWVudHMsRSk6W10sVT1WP2Z1bmN0aW9uKCl7ayhHLHRoaXMsVyl9Okc7cmV0dXJuIFI/SShVLGopOkkoVSl9Okl9fSw2ODMxNTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNDY2OTMpLGs9VCg1NDk1NSksdj1UKDI1NDYpLGhlPVQo''@;'; put 'put ''ODU2MjQpLEg9digic3BlY2llcyIpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oQil7dmFyIEw9c2UoQik7aGUmJkwmJiFMW0hdJiZrKEwsSCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sNTU5Njg6KFdlLHplLFQpPT57dmFyIHNlPVQoNTExODMpLmYsaz1U''@;'; put 'put ''KDQ4ODExKSxoZT1UKDI1NDYpKCJ0b1N0cmluZ1RhZyIpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oSCxCLEwpe0gmJiFMJiYoSD1ILnByb3RvdHlwZSksSCYmIWsoSCxoZSkmJnNlKEgsaGUse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpCfSl9fSwyNzIzMDooV2UsemUsVCk9Pnt2YXIgc2U9VCg2ODgz''@;'; put 'put ''NSksaz1UKDUyODEwKSx2PXNlKCJrZXlzIik7V2UuZXhwb3J0cz1mdW5jdGlvbihoZSl7cmV0dXJuIHZbaGVdfHwodltoZV09ayhoZSkpfX0sODEwNjk6KFdlLHplLFQpPT57dmFyIHNlPVQoNzA3MDUpLGs9VCg3MzQ3MCksdj0iX19jb3JlLWpzX3NoYXJlZF9fIixoZT1zZVt2XXx8ayh2LHt9''@;'; put 'put ''KTtXZS5leHBvcnRzPWhlfSw2ODgzNTooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMDAxNyksaz1UKDgxMDY5KTsoV2UuZXhwb3J0cz1mdW5jdGlvbih2LGhlKXtyZXR1cm4ga1t2XXx8KGtbdl09dm9pZCAwIT09aGU/aGU6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4zMS4x''@;'; put 'put ''Iixtb2RlOnNlPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6Ilx4YTkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMxLjEvTElDRU5TRSIsc291cmNlOiJodHRwczov''@;'; put 'put ''L2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sOTEzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDU4NjQ3KSxrPVQoNTY1ODEpLHY9VCg2Mzc0KSxIPVQoMjU0NikoInNwZWNpZXMiKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEIsTCl7dmFyIEosSz1zZShCKS5jb25zdHJ1Y3RvcjtyZXR1cm4g''@;'; put 'put ''dm9pZCAwPT09S3x8dihKPXNlKEspW0hdKT9MOmsoSil9fSw5NzgxODooV2UsemUsVCk9Pnt2YXIgc2U9VCgyMzUyMyk7V2UuZXhwb3J0cz1mdW5jdGlvbihrKXtyZXR1cm4gc2UoZnVuY3Rpb24oKXt2YXIgdj0iIltrXSgnIicpO3JldHVybiB2IT09di50b0xvd2VyQ2FzZSgpfHx2LnNwbGl0''@;'; put 'put ''KCciJykubGVuZ3RoPjN9KX19LDc1MDU4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9VCg0MDcwMiksdj1UKDkyMSksaGU9VCgyNDU3MiksSD1zZSgiIi5jaGFyQXQpLEI9c2UoIiIuY2hhckNvZGVBdCksTD1zZSgiIi5zbGljZSksSz1mdW5jdGlvbihKKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''SSxSKXt2YXIgVixHLEU9dihoZShJKSksej1rKFIpLGo9RS5sZW5ndGg7cmV0dXJuIHo8MHx8ej49aj9KPyIiOnZvaWQgMDooVj1CKEUseikpPDU1Mjk2fHxWPjU2MzE5fHx6KzE9PT1qfHwoRz1CKEUseisxKSk8NTYzMjB8fEc+NTczNDM/Sj9IKEUseik6VjpKP0woRSx6LHorMik6Ry01NjMy''@;'; put 'put ''MCsoVi01NTI5Njw8MTApKzY1NTM2fX07V2UuZXhwb3J0cz17Y29kZUF0OksoITEpLGNoYXJBdDpLKCEwKX19LDcyMjEwOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDc3ODM5KTtXZS5leHBvcnRzPS9WZXJzaW9uXC8xMCg/OlwuXGQrKXsxLDJ9KD86IFtcdy4vXSspPyg/OiBNb2JpbGVcL1x3Kyk/''@;'; put 'put ''IFNhZmFyaVwvLy50ZXN0KHNlKX0sMjEyODU6KFdlLHplLFQpPT57dmFyIHNlPVQoNjYxMyksaz1UKDY1MzE2KSx2PVQoOTIxKSxoZT1UKDQ1OTYwKSxIPVQoMjQ1NzIpLEI9c2UoaGUpLEw9c2UoIiIuc2xpY2UpLEs9TWF0aC5jZWlsLEo9ZnVuY3Rpb24oSSl7cmV0dXJuIGZ1bmN0aW9uKFIs''@;'; put 'put ''RSx6KXt2YXIgVSxxLGo9dihIKFIpKSxWPWsoRSksRz1qLmxlbmd0aCxXPXZvaWQgMD09PXo/IiAiOnYoeik7cmV0dXJuIFY8PUd8fCIiPT1XP2o6KChxPUIoVyxLKChVPVYtRykvVy5sZW5ndGgpKSkubGVuZ3RoPlUmJihxPUwocSwwLFUpKSxJP2orcTpxK2opfX07V2UuZXhwb3J0cz17c3Rh''@;'; put 'put ''cnQ6SighMSksZW5kOkooITApfX0sNDU5NjA6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDQwNzAyKSxrPVQoOTIxKSx2PVQoMjQ1NzIpLGhlPVJhbmdlRXJyb3I7V2UuZXhwb3J0cz1mdW5jdGlvbihCKXt2YXIgTD1rKHYodGhpcykpLEs9IiIsSj1zZShCKTtpZihKPDB8fEo9''@;'; put 'put ''PTEvMCl0aHJvdyBoZSgiV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zIik7Zm9yKDtKPjA7KEo+Pj49MSkmJihMKz1MKSkxJkomJihLKz1MKTtyZXR1cm4gS319LDQ1NzEyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDEzODY5KS5QUk9QRVIsaz1UKDIzNTIzKSx2PVQoNzc4NjMpO1dlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oSCl7cmV0dXJuIGsoZnVuY3Rpb24oKXtyZXR1cm4hIXZbSF0oKXx8Ilx1MjAwYlx4ODVcdTE4MGUiIT09Ilx1MjAwYlx4ODVcdTE4MGUiW0hdKCl8fHNlJiZ2W0hdLm5hbWUhPT1IfSl9fSw5MzE2NjooV2UsemUsVCk9Pnt2YXIgc2U9VCg2NjEzKSxrPVQoMjQ1NzIpLHY9''@;'; put 'put ''VCg5MjEpLGhlPVQoNzc4NjMpLEg9c2UoIiIucmVwbGFjZSksQj1SZWdFeHAoIl5bIitoZSsiXSsiKSxMPVJlZ0V4cCgiKF58W14iK2hlKyJdKVsiK2hlKyJdKyQiKSxLPWZ1bmN0aW9uKEope3JldHVybiBmdW5jdGlvbihJKXt2YXIgUj12KGsoSSkpO3JldHVybiAxJkomJihSPUgoUixCLCIi''@;'; put 'put ''KSksMiZKJiYoUj1IKFIsTCwiJDEiKSksUn19O1dlLmV4cG9ydHM9e3N0YXJ0OksoMSksZW5kOksoMiksdHJpbTpLKDMpfX0sMjkzMzk6KFdlLHplLFQpPT57dmFyIHNlPVQoMjkzODUpLGs9VCgyMzUyMyksaGU9VCg3MDcwNSkuU3RyaW5nO1dlLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlTeW1ib2xzJiYhayhmdW5jdGlvbigpe3ZhciBIPVN5bWJvbCgpO3JldHVybiFoZShIKXx8IShPYmplY3QoSClpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmc2UmJnNlPDQxfSl9LDE0NDk4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM1NjIpLGs9VCg0NjY5Myksdj1UKDI1''@;'; put 'put ''NDYpLGhlPVQoMjU2NjYpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgSD1rKCJTeW1ib2wiKSxCPUgmJkgucHJvdG90eXBlLEw9QiYmQi52YWx1ZU9mLEs9digidG9QcmltaXRpdmUiKTtCJiYhQltLXSYmaGUoQixLLGZ1bmN0aW9uKEope3JldHVybiBzZShMLHRoaXMpfSx7YXJpdHk6MX0p''@;'; put 'put ''fX0sNzE4Mjk6KFdlLHplLFQpPT57dmFyIHNlPVQoMjkzMzkpO1dlLmV4cG9ydHM9c2UmJiEhU3ltYm9sLmZvciYmISFTeW1ib2wua2V5Rm9yfSw1NTI2MTooV2UsemUsVCk9Pnt2YXIgbGUsZGUsdWUsY2Usc2U9VCg3MDcwNSksaz1UKDExMzA2KSx2PVQoODU0OSksaGU9VCgxMjAxNCksSD1U''@;'; put 'put ''KDQ4ODExKSxCPVQoMjM1MjMpLEw9VCg1OTQwNiksSz1UKDQwOTMwKSxKPVQoNDYzMTMpLEk9VCg3OTU0NSksUj1UKDc4NTIwKSxFPVQoODcyNDQpLHo9c2Uuc2V0SW1tZWRpYXRlLGo9c2UuY2xlYXJJbW1lZGlhdGUsVj1zZS5wcm9jZXNzLEc9c2UuRGlzcGF0Y2gsVz1zZS5GdW5jdGlvbixV''@;'; put 'put ''PXNlLk1lc3NhZ2VDaGFubmVsLHE9c2UuU3RyaW5nLHRlPTAsbmU9e30saWU9Im9ucmVhZHlzdGF0ZWNoYW5nZSI7QihmdW5jdGlvbigpe2xlPXNlLmxvY2F0aW9ufSk7dmFyIFk9ZnVuY3Rpb24oRil7aWYoSChuZSxGKSl7dmFyIGc9bmVbRl07ZGVsZXRlIG5lW0ZdLGcoKX19LGI9ZnVuY3Rp''@;'; put 'put ''b24oRil7cmV0dXJuIGZ1bmN0aW9uKCl7WShGKX19LHg9ZnVuY3Rpb24oRil7WShGLmRhdGEpfSxOPWZ1bmN0aW9uKEYpe3NlLnBvc3RNZXNzYWdlKHEoRiksbGUucHJvdG9jb2wrIi8vIitsZS5ob3N0KX07KCF6fHwhaikmJih6PWZ1bmN0aW9uKGcpe0koYXJndW1lbnRzLmxlbmd0aCwxKTt2''@;'; put 'put ''YXIgQz1oZShnKT9nOlcoZyksTT1LKGFyZ3VtZW50cywxKTtyZXR1cm4gbmVbKyt0ZV09ZnVuY3Rpb24oKXtrKEMsdm9pZCAwLE0pfSxkZSh0ZSksdGV9LGo9ZnVuY3Rpb24oZyl7ZGVsZXRlIG5lW2ddfSxFP2RlPWZ1bmN0aW9uKEYpe1YubmV4dFRpY2soYihGKSl9OkcmJkcubm93P2RlPWZ1''@;'; put 'put ''bmN0aW9uKEYpe0cubm93KGIoRikpfTpVJiYhUj8oY2U9KHVlPW5ldyBVKS5wb3J0Mix1ZS5wb3J0MS5vbm1lc3NhZ2U9eCxkZT12KGNlLnBvc3RNZXNzYWdlLGNlKSk6c2UuYWRkRXZlbnRMaXN0ZW5lciYmaGUoc2UucG9zdE1lc3NhZ2UpJiYhc2UuaW1wb3J0U2NyaXB0cyYmbGUmJiJmaWxl''@;'; put 'put ''OiIhPT1sZS5wcm90b2NvbCYmIUIoTik/KGRlPU4sc2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIseCwhMSkpOmRlPWllIGluIEooInNjcmlwdCIpP2Z1bmN0aW9uKEYpe0wuYXBwZW5kQ2hpbGQoSigic2NyaXB0IikpW2llXT1mdW5jdGlvbigpe0wucmVtb3ZlQ2hpbGQodGhpcyksWShG''@;'; put 'put ''KX19OmZ1bmN0aW9uKEYpe3NldFRpbWVvdXQoYihGKSwwKX0pLFdlLmV4cG9ydHM9e3NldDp6LGNsZWFyOmp9fSwxNDI2OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpO1dlLmV4cG9ydHM9c2UoMS4udmFsdWVPZil9LDc2MTYzOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDQwNzAyKSxrPU1hdGgu''@;'; put 'put ''bWF4LHY9TWF0aC5taW47V2UuZXhwb3J0cz1mdW5jdGlvbihoZSxIKXt2YXIgQj1zZShoZSk7cmV0dXJuIEI8MD9rKEIrSCwwKTp2KEIsSCl9fSw1MDMyNzooV2UsemUsVCk9Pnt2YXIgc2U9VCg1NjYwNyksaz1UKDI0NTcyKTtXZS5leHBvcnRzPWZ1bmN0aW9uKHYpe3JldHVybiBzZShrKHYp''@;'; put 'put ''KX19LDQwNzAyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg0NzQ0KTtXZS5leHBvcnRzPWZ1bmN0aW9uKGspe3ZhciB2PStrO3JldHVybiB2IT12fHwwPT09dj8wOnNlKHYpfX0sNjUzMTY6KFdlLHplLFQpPT57dmFyIHNlPVQoNDA3MDIpLGs9TWF0aC5taW47V2UuZXhwb3J0cz1mdW5jdGlvbih2''@;'; put 'put ''KXtyZXR1cm4gdj4wP2soc2UodiksOTAwNzE5OTI1NDc0MDk5MSk6MH19LDY4MDcxOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDI0NTcyKSxrPU9iamVjdDtXZS5leHBvcnRzPWZ1bmN0aW9uKHYpe3JldHVybiBrKHNlKHYpKX19LDc1NTM3OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDM1NjIpLGs9VCgx''@;'; put 'put ''Mzg0OSksdj1UKDY5NzUpLGhlPVQoMjA5NDgpLEg9VCg2MzQxNSksQj1UKDI1NDYpLEw9VHlwZUVycm9yLEs9QigidG9QcmltaXRpdmUiKTtXZS5leHBvcnRzPWZ1bmN0aW9uKEosSSl7aWYoIWsoSil8fHYoSikpcmV0dXJuIEo7dmFyIEUsUj1oZShKLEspO2lmKFIpe2lmKHZvaWQgMD09PUkm''@;'; put 'put ''JihJPSJkZWZhdWx0IiksRT1zZShSLEosSSksIWsoRSl8fHYoRSkpcmV0dXJuIEU7dGhyb3cgTCgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9cmV0dXJuIHZvaWQgMD09PUkmJihJPSJudW1iZXIiKSxIKEosSSl9fSw4NDA5NDooV2UsemUsVCk9Pnt2YXIgc2U9''@;'; put 'put ''VCg3NTUzNyksaz1UKDY5NzUpO1dlLmV4cG9ydHM9ZnVuY3Rpb24odil7dmFyIGhlPXNlKHYsInN0cmluZyIpO3JldHVybiBrKGhlKT9oZTpoZSsiIn19LDI3NDkwOihXZSx6ZSxUKT0+e3ZhciB2PXt9O3ZbVCgyNTQ2KSgidG9TdHJpbmdUYWciKV09InoiLFdlLmV4cG9ydHM9IltvYmplY3Qg''@;'; put 'put ''el0iPT09U3RyaW5nKHYpfSw5MjE6KFdlLHplLFQpPT57dmFyIHNlPVQoNzk1MjApLGs9U3RyaW5nO1dlLmV4cG9ydHM9ZnVuY3Rpb24odil7aWYoIlN5bWJvbCI9PT1zZSh2KSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0''@;'; put 'put ''dXJuIGsodil9fSw5NDY3NjpXZT0+e3ZhciB6ZT1TdHJpbmc7V2UuZXhwb3J0cz1mdW5jdGlvbihUKXt0cnl7cmV0dXJuIHplKFQpfWNhdGNoe3JldHVybiJPYmplY3QifX19LDUyODEwOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDY2MTMpLGs9MCx2PU1hdGgucmFuZG9tKCksaGU9c2UoMS4udG9T''@;'; put 'put ''dHJpbmcpO1dlLmV4cG9ydHM9ZnVuY3Rpb24oSCl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1IPyIiOkgpKyIpXyIraGUoKytrK3YsMzYpfX0sMjM5NjE6KFdlLHplLFQpPT57dmFyIHNlPVQoMjkzMzkpO1dlLmV4cG9ydHM9c2UmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3J9LDIwMTE4OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjI0KSxrPVQoMjM1MjMpO1dlLmV4cG9ydHM9c2UmJmsoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxl''@;'; put 'put ''OiExfSkucHJvdG90eXBlfSl9LDc5NTQ1OldlPT57dmFyIHplPVR5cGVFcnJvcjtXZS5leHBvcnRzPWZ1bmN0aW9uKFQsc2Upe2lmKFQ8c2UpdGhyb3cgemUoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIFR9fSwxNzU0MjooV2UsemUsVCk9Pnt2YXIgc2U9VCg3MDcwNSksaz1UKDEy''@;'; put 'put ''MDE0KSx2PXNlLldlYWtNYXA7V2UuZXhwb3J0cz1rKHYpJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKHYpKX0sMTAwNzI6KFdlLHplLFQpPT57dmFyIHNlPVQoOTI3MzMpLGs9VCg0ODgxMSksdj1UKDI4MTEpLGhlPVQoNTExODMpLmY7V2UuZXhwb3J0cz1mdW5jdGlvbihIKXt2YXIgQj1z''@;'; put 'put ''ZS5TeW1ib2x8fChzZS5TeW1ib2w9e30pO2soQixIKXx8aGUoQixILHt2YWx1ZTp2LmYoSCl9KX19LDI4MTE6KFdlLHplLFQpPT57dmFyIHNlPVQoMjU0Nik7emUuZj1zZX0sMjU0NjooV2UsemUsVCk9Pnt2YXIgc2U9VCg3MDcwNSksaz1UKDY4ODM1KSx2PVQoNDg4MTEpLGhlPVQoNTI4MTAp''@;'; put 'put ''LEg9VCgyOTMzOSksQj1UKDIzOTYxKSxMPXNlLlN5bWJvbCxLPWsoIndrcyIpLEo9Qj9MLmZvcnx8TDpMJiZMLndpdGhvdXRTZXR0ZXJ8fGhlO1dlLmV4cG9ydHM9ZnVuY3Rpb24oSSl7cmV0dXJuIHYoSyxJKXx8KEtbSV09SCYmdihMLEkpP0xbSV06SigiU3ltYm9sLiIrSSkpLEtbSV19fSw3''@;'; put 'put ''Nzg2MzpXZT0+e1dlLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LDMxMTIzOihXZSx6ZSxUKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDIzNTIzKSx2PVQoMjkxMDYpLGhlPVQoMTM4NDkpLEg9VCg2ODA3MSksQj1UKDU0NDUwKSxMPVQoMjMxMjQpLEs9VCg5NTAwNCksSj1UKDMxODU3KSxJPVQoNTEyOTgpLFI9VCgyNTQ2KSxFPVQoMjkzODUpLHo9UigiaXNDb25jYXRT''@;'; put 'put ''cHJlYWRhYmxlIiksaj1FPj01MXx8IWsoZnVuY3Rpb24oKXt2YXIgVz1bXTtyZXR1cm4gV1t6XT0hMSxXLmNvbmNhdCgpWzBdIT09V30pLFY9ZnVuY3Rpb24oVyl7aWYoIWhlKFcpKXJldHVybiExO3ZhciBVPVdbel07cmV0dXJuIHZvaWQgMCE9PVU/ISFVOnYoVyl9O3NlKHt0YXJnZXQ6IkFy''@;'; put 'put ''cmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDohanx8IUkoImNvbmNhdCIpfSx7Y29uY2F0OmZ1bmN0aW9uKFUpe3ZhciBpZSxsZSxkZSx1ZSxjZSxxPUgodGhpcyksdGU9SihxLDApLG5lPTA7Zm9yKGllPS0xLGRlPWFyZ3VtZW50cy5sZW5ndGg7aWU8ZGU7aWUrKylpZihWKGNlPS0xPT09''@;'; put 'put ''aWU/cTphcmd1bWVudHNbaWVdKSlmb3IodWU9QihjZSksTChuZSt1ZSksbGU9MDtsZTx1ZTtsZSsrLG5lKyspbGUgaW4gY2UmJksodGUsbmUsY2VbbGVdKTtlbHNlIEwobmUrMSksSyh0ZSxuZSsrLGNlKTtyZXR1cm4gdGUubGVuZ3RoPW5lLHRlfX0pfSwyNDgwOihXZSx6ZSxUKT0+e3ZhciBz''@;'; put 'put ''ZT1UKDg1NjQ4KSxrPVQoNTcxNzkpLHY9VCg3NDk2NSk7c2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7ZmlsbDprfSksdigiZmlsbCIpfSwzNDc3MDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg5NTY2OSkuZmlsdGVyO3NlKHt0YXJnZXQ6IkFycmF5''@;'; put 'put ''Iixwcm90bzohMCxmb3JjZWQ6IVQoNTEyOTgpKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbihCKXtyZXR1cm4gayh0aGlzLEIsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwzNTgxMDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgp''@;'; put 'put ''LGs9VCg5NTY2OSkuZmluZEluZGV4LHY9VCg3NDk2NSksaGU9ImZpbmRJbmRleCIsSD0hMDtoZSBpbltdJiZBcnJheSgxKVtoZV0oZnVuY3Rpb24oKXtIPSExfSksc2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpIfSx7ZmluZEluZGV4OmZ1bmN0aW9uKEwpe3JldHVybiBrKHRo''@;'; put 'put ''aXMsTCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksdihoZSl9LDU0Njc5OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDk1NjY5KS5maW5kLHY9VCg3NDk2NSksaGU9ImZpbmQiLEg9ITA7aGUgaW5bXSYmQXJyYXkoMSlbaGVd''@;'; put 'put ''KGZ1bmN0aW9uKCl7SD0hMX0pLHNlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6SH0se2ZpbmQ6ZnVuY3Rpb24oTCl7cmV0dXJuIGsodGhpcyxMLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSx2KGhlKX0sNjkxMDooV2UsemUsVCk9Pnt2YXIgc2U9''@;'; put 'put ''VCg4NTY0OCksaz1UKDY2NjY2KTtzZSh7dGFyZ2V0OiJBcnJheSIsc3RhdDohMCxmb3JjZWQ6IVQoMjc3OTIpKGZ1bmN0aW9uKEgpe0FycmF5LmZyb20oSCl9KX0se2Zyb206a30pfSwxMzQwMDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCgzNjMwNSkuaW5j''@;'; put 'put ''bHVkZXMsdj1UKDIzNTIzKSxoZT1UKDc0OTY1KTtzZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnYoZnVuY3Rpb24oKXtyZXR1cm4hQXJyYXkoMSkuaW5jbHVkZXMoKX0pfSx7aW5jbHVkZXM6ZnVuY3Rpb24oTCl7cmV0dXJuIGsodGhpcyxMLGFyZ3VtZW50cy5sZW5ndGg+MT9h''@;'; put 'put ''cmd1bWVudHNbMV06dm9pZCAwKX19KSxoZSgiaW5jbHVkZXMiKX0sNjM5Njc6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDg1NjQ4KSxrPVQoMTE1MSksdj1UKDM2MzA1KS5pbmRleE9mLGhlPVQoNjMxMjQpLEg9ayhbXS5pbmRleE9mKSxCPSEhSCYmMS9IKFsxXSwxLC0wKTww''@;'; put 'put ''O3NlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6Qnx8IWhlKCJpbmRleE9mIil9LHtpbmRleE9mOmZ1bmN0aW9uKEope3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBCP0godGhpcyxKLEkpfHwwOnYodGhpcyxKLEkpfX0pfSw1Nzk0''@;'; put 'put ''MzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNTAzMjcpLGs9VCg3NDk2NSksdj1UKDk1MjU3KSxoZT1UKDcyNyksSD1UKDUxMTgzKS5mLEI9VCg2NDU2MCksTD1UKDIxNTIpLEs9VCgxMDAxNyksSj1UKDg1NjI0KSxJPSJBcnJheSBJdGVyYXRvciIsUj1oZS5zZXQsRT1oZS5n''@;'; put 'put ''ZXR0ZXJGb3IoSSk7V2UuZXhwb3J0cz1CKEFycmF5LCJBcnJheSIsZnVuY3Rpb24oaixWKXtSKHRoaXMse3R5cGU6SSx0YXJnZXQ6c2UoaiksaW5kZXg6MCxraW5kOlZ9KX0sZnVuY3Rpb24oKXt2YXIgaj1FKHRoaXMpLFY9ai50YXJnZXQsRz1qLmtpbmQsVz1qLmluZGV4Kys7cmV0dXJuIVZ8''@;'; put 'put ''fFc+PVYubGVuZ3RoPyhqLnRhcmdldD12b2lkIDAsTCh2b2lkIDAsITApKTpMKCJrZXlzIj09Rz9XOiJ2YWx1ZXMiPT1HP1ZbV106W1csVltXXV0sITEpfSwidmFsdWVzIik7dmFyIHo9di5Bcmd1bWVudHM9di5BcnJheTtpZihrKCJrZXlzIiksaygidmFsdWVzIiksaygiZW50cmllcyIpLCFL''@;'; put 'put ''JiZKJiYidmFsdWVzIiE9PXoubmFtZSl0cnl7SCh6LCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaHt9fSw3Njc0OTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg2NjEzKSx2PVQoNTY2MDcpLGhlPVQoNTAzMjcpLEg9VCg2MzEyNCksQj1rKFtdLmpv''@;'; put 'put ''aW4pO3NlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6diE9T2JqZWN0fHwhSCgiam9pbiIsIiwiKX0se2pvaW46ZnVuY3Rpb24oSSl7cmV0dXJuIEIoaGUodGhpcyksdm9pZCAwPT09ST8iLCI6SSl9fSl9LDU4MDooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCksaz1UKDk2MjIp''@;'; put 'put ''O3NlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6ayE9PVtdLmxhc3RJbmRleE9mfSx7bGFzdEluZGV4T2Y6a30pfSw4MzAyODooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg5NTY2OSkubWFwO3NlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxm''@;'; put 'put ''b3JjZWQ6IVQoNTEyOTgpKCJtYXAiKX0se21hcDpmdW5jdGlvbihCKXtyZXR1cm4gayh0aGlzLEIsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw3MTc3MjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg3Mzc2MCkubGVmdCx2''@;'; put 'put ''PVQoNjMxMjQpLGhlPVQoMjkzODUpO3NlKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVQoODcyNDQpJiZoZT43OSYmaGU8ODN8fCF2KCJyZWR1Y2UiKX0se3JlZHVjZTpmdW5jdGlvbihKKXt2YXIgST1hcmd1bWVudHMubGVuZ3RoO3JldHVybiBrKHRoaXMsSixJLEk+MT9hcmd1''@;'; put 'put ''bWVudHNbMV06dm9pZCAwKX19KX0sODM1OTA6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDg1NjQ4KSxrPVQoNjYxMyksdj1UKDI5MTA2KSxoZT1rKFtdLnJldmVyc2UpLEg9WzEsMl07c2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpTdHJpbmcoSCk9PT1TdHJp''@;'; put 'put ''bmcoSC5yZXZlcnNlKCkpfSx7cmV2ZXJzZTpmdW5jdGlvbigpe3JldHVybiB2KHRoaXMpJiYodGhpcy5sZW5ndGg9dGhpcy5sZW5ndGgpLGhlKHRoaXMpfX0pfSw5NzA4NzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCgyOTEwNiksdj1UKDQ5NDUzKSxoZT1U''@;'; put 'put ''KDEzODQ5KSxIPVQoNzYxNjMpLEI9VCg1NDQ1MCksTD1UKDUwMzI3KSxLPVQoOTUwMDQpLEo9VCgyNTQ2KSxJPVQoNTEyOTgpLFI9VCg0MDkzMCksRT1JKCJzbGljZSIpLHo9Sigic3BlY2llcyIpLGo9QXJyYXksVj1NYXRoLm1heDtzZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2Vk''@;'; put 'put ''OiFFfSx7c2xpY2U6ZnVuY3Rpb24oVyxVKXt2YXIgbGUsZGUsdWUscT1MKHRoaXMpLHRlPUIocSksbmU9SChXLHRlKSxpZT1IKHZvaWQgMD09PVU/dGU6VSx0ZSk7aWYoayhxKSYmKCh2KGxlPXEuY29uc3RydWN0b3IpJiYobGU9PT1qfHxrKGxlLnByb3RvdHlwZSkpfHxoZShsZSkmJm51bGw9''@;'; put 'put ''PT0obGU9bGVbel0pKSYmKGxlPXZvaWQgMCksbGU9PT1qfHx2b2lkIDA9PT1sZSkpcmV0dXJuIFIocSxuZSxpZSk7Zm9yKGRlPW5ldyh2b2lkIDA9PT1sZT9qOmxlKShWKGllLW5lLDApKSx1ZT0wO25lPGllO25lKyssdWUrKyluZSBpbiBxJiZLKGRlLHVlLHFbbmVdKTtyZXR1cm4gZGUubGVu''@;'; put 'put ''Z3RoPXVlLGRlfX0pfSwxMzI3ODooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg2NjEzKSx2PVQoODE0NTApLGhlPVQoNjgwNzEpLEg9VCg1NDQ1MCksQj1UKDQ2MjgpLEw9VCg5MjEpLEs9VCgyMzUyMyksSj1UKDMyNTk0KSxJPVQoNjMxMjQpLFI9VCg3NTcw''@;'; put 'put ''NiksRT1UKDk4ODYpLHo9VCgyOTM4NSksaj1UKDk2MzQpLFY9W10sRz1rKFYuc29ydCksVz1rKFYucHVzaCksVT1LKGZ1bmN0aW9uKCl7Vi5zb3J0KHZvaWQgMCl9KSxxPUsoZnVuY3Rpb24oKXtWLnNvcnQobnVsbCl9KSx0ZT1JKCJzb3J0IiksbmU9IUsoZnVuY3Rpb24oKXtpZih6KXJldHVy''@;'; put 'put ''biB6PDcwO2lmKCEoUiYmUj4zKSl7aWYoRSlyZXR1cm4hMDtpZihqKXJldHVybiBqPDYwMzt2YXIgdWUsY2UsWSxiLGRlPSIiO2Zvcih1ZT02NTt1ZTw3Njt1ZSsrKXtzd2l0Y2goY2U9U3RyaW5nLmZyb21DaGFyQ29kZSh1ZSksdWUpe2Nhc2UgNjY6Y2FzZSA2OTpjYXNlIDcwOmNhc2UgNzI6''@;'; put 'put ''WT0zO2JyZWFrO2Nhc2UgNjg6Y2FzZSA3MTpZPTQ7YnJlYWs7ZGVmYXVsdDpZPTJ9Zm9yKGI9MDtiPDQ3O2IrKylWLnB1c2goe2s6Y2UrYix2Oll9KX1mb3IoVi5zb3J0KGZ1bmN0aW9uKHgsTil7cmV0dXJuIE4udi14LnZ9KSxiPTA7YjxWLmxlbmd0aDtiKyspY2U9VltiXS5rLmNoYXJBdCgw''@;'; put 'put ''KSxkZS5jaGFyQXQoZGUubGVuZ3RoLTEpIT09Y2UmJihkZSs9Y2UpO3JldHVybiJER0JFRkhBQ0lKSyIhPT1kZX19KTtzZSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOlV8fCFxfHwhdGV8fCFuZX0se3NvcnQ6ZnVuY3Rpb24odWUpe3ZvaWQgMCE9PXVlJiZ2KHVlKTt2YXIgY2U9''@;'; put 'put ''aGUodGhpcyk7aWYobmUpcmV0dXJuIHZvaWQgMD09PXVlP0coY2UpOkcoY2UsdWUpO3ZhciB4LE4sWT1bXSxiPUgoY2UpO2ZvcihOPTA7TjxiO04rKylOIGluIGNlJiZXKFksY2VbTl0pO2ZvcihKKFksZnVuY3Rpb24oZGUpe3JldHVybiBmdW5jdGlvbih1ZSxjZSl7cmV0dXJuIHZvaWQgMD09''@;'; put 'put ''PWNlPy0xOnZvaWQgMD09PXVlPzE6dm9pZCAwIT09ZGU/K2RlKHVlLGNlKXx8MDpMKHVlKT5MKGNlKT8xOi0xfX0odWUpKSx4PUgoWSksTj0wO048eDspY2VbTl09WVtOKytdO2Zvcig7TjxiOylCKGNlLE4rKyk7cmV0dXJuIGNlfX0pfSw1MjMxMzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIHNlPVQoODU2NDgpLGs9VCg2ODA3MSksdj1UKDc2MTYzKSxoZT1UKDQwNzAyKSxIPVQoNTQ0NTApLEI9VCg4Njc1OSksTD1UKDIzMTI0KSxLPVQoMzE4NTcpLEo9VCg5NTAwNCksST1UKDQ2MjgpLEU9VCg1MTI5OCkoInNwbGljZSIpLHo9TWF0aC5tYXgsaj1NYXRoLm1pbjtzZSh7dGFy''@;'; put 'put ''Z2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFFfSx7c3BsaWNlOmZ1bmN0aW9uKEcsVyl7dmFyIGllLGxlLGRlLHVlLGNlLFksVT1rKHRoaXMpLHE9SChVKSx0ZT12KEcscSksbmU9YXJndW1lbnRzLmxlbmd0aDtmb3IoMD09PW5lP2llPWxlPTA6MT09PW5lPyhpZT0wLGxlPXEtdGUpOihp''@;'; put 'put ''ZT1uZS0yLGxlPWooeihoZShXKSwwKSxxLXRlKSksTChxK2llLWxlKSxkZT1LKFUsbGUpLHVlPTA7dWU8bGU7dWUrKykoY2U9dGUrdWUpaW4gVSYmSihkZSx1ZSxVW2NlXSk7aWYoZGUubGVuZ3RoPWxlLGllPGxlKXtmb3IodWU9dGU7dWU8cS1sZTt1ZSsrKVk9dWUraWUsKGNlPXVlK2xlKWlu''@;'; put 'put ''IFU/VVtZXT1VW2NlXTpJKFUsWSk7Zm9yKHVlPXE7dWU+cS1sZStpZTt1ZS0tKUkoVSx1ZS0xKX1lbHNlIGlmKGllPmxlKWZvcih1ZT1xLWxlO3VlPnRlO3VlLS0pWT11ZStpZS0xLChjZT11ZStsZS0xKWluIFU/VVtZXT1VW2NlXTpJKFUsWSk7Zm9yKHVlPTA7dWU8aWU7dWUrKylVW3VlK3Rl''@;'; put 'put ''XT1hcmd1bWVudHNbdWUrMl07cmV0dXJuIEIoVSxxLWxlK2llKSxkZX19KX0sMjQ1Njk6KFdlLHplLFQpPT57dmFyIHNlPVQoNDg4MTEpLGs9VCgyNTY2Niksdj1UKDIyMTg2KSxIPVQoMjU0NikoInRvUHJpbWl0aXZlIiksQj1EYXRlLnByb3RvdHlwZTtzZShCLEgpfHxrKEIsSCx2KX0sMTgx''@;'; put 'put ''NTg6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2MjQpLGs9VCgxMzg2OSkuRVhJU1RTLHY9VCg2NjEzKSxoZT1UKDU0OTU1KSxIPUZ1bmN0aW9uLnByb3RvdHlwZSxCPXYoSC50b1N0cmluZyksTD0vZnVuY3Rpb25cYig/OlxzfFwvXCpbXFNcc10qP1wqXC98XC9cL1teXG5ccl0qW1xuXHJdKykq''@;'; put 'put ''KFteXHMoL10qKS8sSz12KEwuZXhlYyk7c2UmJiFrJiZoZShILCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gSyhMLEIodGhpcykpWzFdfWNhdGNoe3JldHVybiIifX19KX0sMTMwMDY6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgpLGs9VCg0NjY5''@;'; put 'put ''Myksdj1UKDExMzA2KSxoZT1UKDM1NjIpLEg9VCg2NjEzKSxCPVQoMjM1MjMpLEw9VCgxMjAxNCksSz1UKDY5NzUpLEo9VCg0MDkzMCksST1UKDM4NTg2KSxSPVQoMjkzMzkpLEU9U3RyaW5nLHo9aygiSlNPTiIsInN0cmluZ2lmeSIpLGo9SCgvLi8uZXhlYyksVj1IKCIiLmNoYXJBdCksRz1I''@;'; put 'put ''KCIiLmNoYXJDb2RlQXQpLFc9SCgiIi5yZXBsYWNlKSxVPUgoMS4udG9TdHJpbmcpLHE9L1tcdUQ4MDAtXHVERkZGXS9nLHRlPS9eW1x1RDgwMC1cdURCRkZdJC8sbmU9L15bXHVEQzAwLVx1REZGRl0kLyxpZT0hUnx8QihmdW5jdGlvbigpe3ZhciBjZT1rKCJTeW1ib2wiKSgpO3JldHVybiJb''@;'; put 'put ''bnVsbF0iIT16KFtjZV0pfHwie30iIT16KHthOmNlfSl8fCJ7fSIhPXooT2JqZWN0KGNlKSl9KSxsZT1CKGZ1bmN0aW9uKCl7cmV0dXJuJyJcXHVkZjA2XFx1ZDgzNCInIT09eigiXHVkZjA2XHVkODM0Iil8fCciXFx1ZGVhZCInIT09eigiXHVkZWFkIil9KSxkZT1mdW5jdGlvbihjZSxZKXt2''@;'; put 'put ''YXIgYj1KKGFyZ3VtZW50cykseD1JKFkpO2lmKEwoeCl8fHZvaWQgMCE9PWNlJiYhSyhjZSkpcmV0dXJuIGJbMV09ZnVuY3Rpb24oTixGKXtpZihMKHgpJiYoRj1oZSh4LHRoaXMsRShOKSxGKSksIUsoRikpcmV0dXJuIEZ9LHYoeixudWxsLGIpfSx1ZT1mdW5jdGlvbihjZSxZLGIpe3ZhciB4''@;'; put 'put ''PVYoYixZLTEpLE49VihiLFkrMSk7cmV0dXJuIGoodGUsY2UpJiYhaihuZSxOKXx8aihuZSxjZSkmJiFqKHRlLHgpPyJcXHUiK1UoRyhjZSwwKSwxNik6Y2V9O3omJnNlKHt0YXJnZXQ6IkpTT04iLHN0YXQ6ITAsYXJpdHk6Myxmb3JjZWQ6aWV8fGxlfSx7c3RyaW5naWZ5OmZ1bmN0aW9uKFks''@;'; put 'put ''Yix4KXt2YXIgTj1KKGFyZ3VtZW50cyksRj12KGllP2RlOnosbnVsbCxOKTtyZXR1cm4gbGUmJiJzdHJpbmciPT10eXBlb2YgRj9XKEYscSx1ZSk6Rn19KX0sODg3NjI6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO1QoNDY4NTcpKCJNYXAiLGZ1bmN0aW9uKHYpe3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB2KHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwKX19LFQoNDUxNDApKX0sOTY2NDooV2UsemUsVCk9PntUKDg4NzYyKX0sNjQ5NTI6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDg1NjQ4KSxrPVQoMTAwMTcpLHY9VCg4NTYyNCksaGU9''@;'; put 'put ''VCg3MDcwNSksSD1UKDkyNzMzKSxCPVQoNjYxMyksTD1UKDY3NTA3KSxLPVQoNDg4MTEpLEo9VCg1MTg0OSksST1UKDM3NDc0KSxSPVQoNjk3NSksRT1UKDc1NTM3KSx6PVQoMjM1MjMpLGo9VCg3NTQzMSkuZixWPVQoNDc5ODcpLmYsRz1UKDUxMTgzKS5mLFc9VCgxNDI2KSxVPVQoOTMxNjYp''@;'; put 'put ''LnRyaW0scT0iTnVtYmVyIix0ZT1oZVtxXSxuZT1IW3FdLGllPXRlLnByb3RvdHlwZSxsZT1oZS5UeXBlRXJyb3IsZGU9QigiIi5zbGljZSksdWU9QigiIi5jaGFyQ29kZUF0KSxiPUwocSwhdGUoIiAwbzEiKXx8IXRlKCIwYjEiKXx8dGUoIisweDEiKSksTj1mdW5jdGlvbihDKXt2YXIgZyxN''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGg8MT8wOnRlKGZ1bmN0aW9uKGcpe3ZhciBDPUUoZywibnVtYmVyIik7cmV0dXJuImJpZ2ludCI9PXR5cGVvZiBDP0M6ZnVuY3Rpb24oZyl7dmFyIE0seSxwLFMsUSxyZSxmZSxtZSxDPUUoZywibnVtYmVyIik7aWYoUihDKSl0aHJvdyBsZSgiQ2Fubm90IGNvbnZl''@;'; put 'put ''cnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBudW1iZXIiKTtpZigic3RyaW5nIj09dHlwZW9mIEMmJkMubGVuZ3RoPjIpaWYoQz1VKEMpLDQzPT09KE09dWUoQywwKSl8fDQ1PT09TSl7aWYoODg9PT0oeT11ZShDLDIpKXx8MTIwPT09eSlyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1NKXtzd2l0Y2go''@;'; put 'put ''dWUoQywxKSl7Y2FzZSA2NjpjYXNlIDk4OnA9MixTPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6cD04LFM9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rQ31mb3IocmU9KFE9ZGUoQywyKSkubGVuZ3RoLGZlPTA7ZmU8cmU7ZmUrKylpZigobWU9dWUoUSxmZSkpPDQ4fHxtZT5TKXJldHVybiBO''@;'; put 'put ''YU47cmV0dXJuIHBhcnNlSW50KFEscCl9cmV0dXJuK0N9KEMpfShDKSk7cmV0dXJuIEkoaWUsZz10aGlzKSYmeihmdW5jdGlvbigpe1coZyl9KT9KKE9iamVjdChNKSx0aGlzLE4pOk19O04ucHJvdG90eXBlPWllLGImJiFrJiYoaWUuY29uc3RydWN0b3I9Tiksc2Uoe2dsb2JhbDohMCxjb25z''@;'; put 'put ''dHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDpifSx7TnVtYmVyOk59KTt2YXIgRj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgcCxNPXY/aihDKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixNQVhfU0FGRV9JTlRFR0VS''@;'; put 'put ''LE1JTl9TQUZFX0lOVEVHRVIsaXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIscGFyc2VGbG9hdCxwYXJzZUludCxmcm9tU3RyaW5nLHJhbmdlIi5zcGxpdCgiLCIpLHk9MDtNLmxlbmd0aD55O3krKylLKEMscD1NW3ldKSYmIUsoZyxwKSYmRyhnLHAsVihDLHApKX07ayYm''@;'; put 'put ''bmUmJkYoSFtxXSxuZSksKGJ8fGspJiZGKEhbcV0sdGUpfSw3MDg2NDooV2UsemUsVCk9PntUKDg1NjQ4KSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtpc0ludGVnZXI6VCgzMDQyKX0pfSw0MjE0MDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg2NjEz''@;'; put 'put ''KSx2PVQoNDA3MDIpLGhlPVQoMTQyNiksSD1UKDQ1OTYwKSxCPVQoMjM1MjMpLEw9UmFuZ2VFcnJvcixLPVN0cmluZyxKPU1hdGguZmxvb3IsST1rKEgpLFI9aygiIi5zbGljZSksRT1rKDEuLnRvRml4ZWQpLHo9ZnVuY3Rpb24ocSx0ZSxuZSl7cmV0dXJuIDA9PT10ZT9uZTp0ZSUyPT0xP3oo''@;'; put 'put ''cSx0ZS0xLG5lKnEpOnoocSpxLHRlLzIsbmUpfSxWPWZ1bmN0aW9uKHEsdGUsbmUpe2Zvcih2YXIgaWU9LTEsbGU9bmU7KytpZTw2OylxW2llXT0obGUrPXRlKnFbaWVdKSUxZTcsbGU9SihsZS8xZTcpfSxHPWZ1bmN0aW9uKHEsdGUpe2Zvcih2YXIgbmU9NixpZT0wOy0tbmU+PTA7KXFbbmVd''@;'; put 'put ''PUooKGllKz1xW25lXSkvdGUpLGllPWllJXRlKjFlN30sVz1mdW5jdGlvbihxKXtmb3IodmFyIHRlPTYsbmU9IiI7LS10ZT49MDspaWYoIiIhPT1uZXx8MD09PXRlfHwwIT09cVt0ZV0pe3ZhciBpZT1LKHFbdGVdKTtuZT0iIj09PW5lP2llOm5lK0koIjAiLDctaWUubGVuZ3RoKStpZX1yZXR1''@;'; put 'put ''cm4gbmV9O3NlKHt0YXJnZXQ6Ik51bWJlciIscHJvdG86ITAsZm9yY2VkOkIoZnVuY3Rpb24oKXtyZXR1cm4iMC4wMDAiIT09RSg4ZS01LDMpfHwiMSIhPT1FKC45LDApfHwiMS4yNSIhPT1FKDEuMjU1LDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT1FKDB4ZGUwYjZiM2E3NjQwMDgwLDAp''@;'; put 'put ''fSl8fCFCKGZ1bmN0aW9uKCl7RSh7fSl9KX0se3RvRml4ZWQ6ZnVuY3Rpb24odGUpe3ZhciBjZSxZLGIseCxuZT1oZSh0aGlzKSxpZT12KHRlKSxsZT1bMCwwLDAsMCwwLDBdLGRlPSIiLHVlPSIwIjtpZihpZTwwfHxpZT4yMCl0aHJvdyBMKCJJbmNvcnJlY3QgZnJhY3Rpb24gZGlnaXRzIik7''@;'; put 'put ''aWYobmUhPW5lKXJldHVybiJOYU4iO2lmKG5lPD0tMWUyMXx8bmU+PTFlMjEpcmV0dXJuIEsobmUpO2lmKG5lPDAmJihkZT0iLSIsbmU9LW5lKSxuZT4xZS0yMSlpZihjZT1mdW5jdGlvbihxKXtmb3IodmFyIHRlPTAsbmU9cTtuZT49NDA5NjspdGUrPTEyLG5lLz00MDk2O2Zvcig7bmU+PTI7''@;'; put 'put ''KXRlKz0xLG5lLz0yO3JldHVybiB0ZX0obmUqeigyLDY5LDEpKS02OSxZPWNlPDA/bmUqeigyLC1jZSwxKTpuZS96KDIsY2UsMSksWSo9NDUwMzU5OTYyNzM3MDQ5NiwoY2U9NTItY2UpPjApe2ZvcihWKGxlLDAsWSksYj1pZTtiPj03OylWKGxlLDFlNywwKSxiLT03O2ZvcihWKGxlLHooMTAs''@;'; put 'put ''YiwxKSwwKSxiPWNlLTE7Yj49MjM7KUcobGUsMTw8MjMpLGItPTIzO0cobGUsMTw8YiksVihsZSwxLDEpLEcobGUsMiksdWU9VyhsZSl9ZWxzZSBWKGxlLDAsWSksVihsZSwxPDwtY2UsMCksdWU9VyhsZSkrSSgiMCIsaWUpO3JldHVybiB1ZT1pZT4wP2RlKygoeD11ZS5sZW5ndGgpPD1pZT8i''@;'; put 'put ''MC4iK0koIjAiLGllLXgpK3VlOlIodWUsMCx4LWllKSsiLiIrUih1ZSx4LWllKSk6ZGUrdWV9fSl9LDMzNDcwOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQoNDc5NTkpO3NlKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxhcml0eToyLGZvcmNlZDpPYmplY3QuYXNzaWduIT09a30s''@;'; put 'put ''e2Fzc2lnbjprfSl9LDgyNzU2OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQoMTI1NjYpLHY9VCgyMzUyMyksaGU9VCgxMzg0OSksSD1UKDcxODMyKS5vbkZyZWV6ZSxCPU9iamVjdC5mcmVlemU7c2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDp2KGZ1bmN0aW9uKCl7''@;'; put 'put ''QigxKX0pLHNoYW06IWt9LHtmcmVlemU6ZnVuY3Rpb24oSil7cmV0dXJuIEImJmhlKEopP0IoSChKKSk6Sn19KX0sNTQ3NDA6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgpLGs9VCgyMzUyMyksdj1UKDUwMzI3KSxoZT1UKDQ3OTg3KS5mLEg9VCg4NTYyNCk7c2Uoe3RhcmdldDoiT2JqZWN0''@;'; put 'put ''IixzdGF0OiEwLGZvcmNlZDohSHx8ayhmdW5jdGlvbigpe2hlKDEpfSksc2hhbTohSH0se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbihLLEope3JldHVybiBoZSh2KEspLEopfX0pfSw1NTYxNTooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCksaz1UKDg1NjI0KSx2PVQoMjEx''@;'; put 'put ''OTkpLGhlPVQoNTAzMjcpLEg9VCg0Nzk4NyksQj1UKDk1MDA0KTtzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsc2hhbToha30se2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24oSyl7Zm9yKHZhciBqLFYsSj1oZShLKSxJPUguZixSPXYoSiksRT17fSx6PTA7Ui5sZW5ndGg+''@;'; put 'put ''ejspdm9pZCAwIT09KFY9SShKLGo9Ult6KytdKSkmJkIoRSxqLFYpO3JldHVybiBFfX0pfSw0Mzk5OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQoMjM1MjMpLHY9VCgzNTgwOCkuZjtzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmsoZnVuY3Rpb24oKXtyZXR1cm4h''@;'; put 'put ''T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoMSl9KX0se2dldE93blByb3BlcnR5TmFtZXM6dn0pfSw2MzE5ODooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCksaz1UKDI5MzM5KSx2PVQoMjM1MjMpLGhlPVQoNTUzNCksSD1UKDY4MDcxKTtzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAs''@;'; put 'put ''Zm9yY2VkOiFrfHx2KGZ1bmN0aW9uKCl7aGUuZigxKX0pfSx7Z2V0T3duUHJvcGVydHlTeW1ib2xzOmZ1bmN0aW9uKEspe3ZhciBKPWhlLmY7cmV0dXJuIEo/SihIKEspKTpbXX19KX0sMjg3NjQ6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgpLGs9VCgyMzUyMyksdj1UKDY4MDcxKSxoZT1U''@;'; put 'put ''KDgyNzMzKSxIPVQoNDYwODYpO3NlKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6ayhmdW5jdGlvbigpe2hlKDEpfSksc2hhbTohSH0se2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKEspe3JldHVybiBoZSh2KEspKX19KX0sOTYyNTE6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgp''@;'; put 'put ''LGs9VCg2ODA3MSksdj1UKDE0NTQ1KTtzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOlQoMjM1MjMpKGZ1bmN0aW9uKCl7digxKX0pfSx7a2V5czpmdW5jdGlvbihMKXtyZXR1cm4gdihrKEwpKX19KX0sMTYxNjE6KFdlLHplLFQpPT57VCg4NTY0OCkoe3RhcmdldDoiT2JqZWN0''@;'; put 'put ''IixzdGF0OiEwfSx7c2V0UHJvdG90eXBlT2Y6VCgxOTU4Nyl9KX0sMjA2NDc6KFdlLHplLFQpPT57dmFyIHNlPVQoMjc0OTApLGs9VCgyNTY2Niksdj1UKDc3MDUpO3NlfHxrKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIix2LHt1bnNhZmU6ITB9KX0sODM4NTc6KFdlLHplLFQpPT57dmFy''@;'; put 'put ''IHNlPVQoODU2NDgpLGs9VCg0NDU4MikudmFsdWVzO3NlKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3ZhbHVlczpmdW5jdGlvbihoZSl7cmV0dXJuIGsoaGUpfX0pfSw5MTY4MzooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCksaz1UKDQ2NjkzKSx2PVQoMTEzMDYpLGhlPVQoNjk4OSks''@;'; put 'put ''SD1UKDU2NTgxKSxCPVQoNTg2NDcpLEw9VCgxMzg0OSksSz1UKDc0NDEwKSxKPVQoMjM1MjMpLEk9aygiUmVmbGVjdCIsImNvbnN0cnVjdCIpLFI9T2JqZWN0LnByb3RvdHlwZSxFPVtdLnB1c2gsej1KKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRygpe31yZXR1cm4hKEkoZnVuY3Rpb24oKXt9LFtd''@;'; put 'put ''LEcpaW5zdGFuY2VvZiBHKX0pLGo9IUooZnVuY3Rpb24oKXtJKGZ1bmN0aW9uKCl7fSl9KSxWPXp8fGo7c2Uoe3RhcmdldDoiUmVmbGVjdCIsc3RhdDohMCxmb3JjZWQ6VixzaGFtOlZ9LHtjb25zdHJ1Y3Q6ZnVuY3Rpb24oVyxVKXtIKFcpLEIoVSk7dmFyIHE9YXJndW1lbnRzLmxlbmd0aDwz''@;'; put 'put ''P1c6SChhcmd1bWVudHNbMl0pO2lmKGomJiF6KXJldHVybiBJKFcsVSxxKTtpZihXPT1xKXtzd2l0Y2goVS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IFc7Y2FzZSAxOnJldHVybiBuZXcgVyhVWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBXKFVbMF0sVVsxXSk7Y2FzZSAzOnJldHVybiBuZXcg''@;'; put 'put ''VyhVWzBdLFVbMV0sVVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgVyhVWzBdLFVbMV0sVVsyXSxVWzNdKX12YXIgdGU9W251bGxdO3JldHVybiB2KEUsdGUsVSksbmV3KHYoaGUsVyx0ZSkpfXZhciBuZT1xLnByb3RvdHlwZSxpZT1LKEwobmUpP25lOlIpLGxlPXYoVyxpZSxVKTtyZXR1cm4gTChs''@;'; put 'put ''ZSk/bGU6aWV9fSl9LDIwMjczOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQoMzU2Miksdj1UKDEzODQ5KSxoZT1UKDU4NjQ3KSxIPVQoMTQxMjUpLEI9VCg0Nzk4NyksTD1UKDgyNzMzKTtzZSh7dGFyZ2V0OiJSZWZsZWN0IixzdGF0OiEwfSx7Z2V0OmZ1bmN0aW9uIEsoSixJKXt2''@;'; put 'put ''YXIgRSx6LFI9YXJndW1lbnRzLmxlbmd0aDwzP0o6YXJndW1lbnRzWzJdO3JldHVybiBoZShKKT09PVI/SltJXTooRT1CLmYoSixJKSk/SChFKT9FLnZhbHVlOnZvaWQgMD09PUUuZ2V0P3ZvaWQgMDprKEUuZ2V0LFIpOnYoej1MKEopKT9LKHosSSxSKTp2b2lkIDB9fSl9LDE2ODI1OihXZSx6''@;'; put 'put ''ZSxUKT0+e3ZhciBzZT1UKDg1NjI0KSxrPVQoNzA3MDUpLHY9VCg2NjEzKSxoZT1UKDY3NTA3KSxIPVQoNTE4NDkpLEI9VCgxNjAxNyksTD1UKDc1NDMxKS5mLEs9VCgzNzQ3NCksSj1UKDQxODA0KSxJPVQoOTIxKSxSPVQoODE2MjApLEU9VCg5NzE4OSksej1UKDkyNDAwKSxqPVQoMjU2NjYp''@;'; put 'put ''LFY9VCgyMzUyMyksRz1UKDQ4ODExKSxXPVQoNzI3KS5lbmZvcmNlLFU9VCg2ODMxNSkscT1UKDI1NDYpLHRlPVQoNDMxODYpLG5lPVQoNTE5NDkpLGllPXEoIm1hdGNoIiksbGU9ay5SZWdFeHAsZGU9bGUucHJvdG90eXBlLHVlPWsuU3ludGF4RXJyb3IsY2U9dihkZS5leGVjKSxZPXYoIiIu''@;'; put 'put ''Y2hhckF0KSxiPXYoIiIucmVwbGFjZSkseD12KCIiLmluZGV4T2YpLE49digiIi5zbGljZSksRj0vXlw/PFteXHNcZCEjJSYqKzw9PkBeXVteXHMhIyUmKis8PT5AXl0qPi8sZz0vYS9nLEM9L2EvZyxNPW5ldyBsZShnKSE9PWcseT1FLk1JU1NFRF9TVElDS1kscD1FLlVOU1VQUE9SVEVEX1k7''@;'; put 'put ''aWYoaGUoIlJlZ0V4cCIsc2UmJighTXx8eXx8dGV8fG5lfHxWKGZ1bmN0aW9uKCl7cmV0dXJuIENbaWVdPSExLGxlKGcpIT1nfHxsZShDKT09Q3x8Ii9hL2kiIT1sZShnLCJpIil9KSkpKXtmb3IodmFyIGZlPWZ1bmN0aW9uKFBlLEZlKXt2YXIgbXQsS2Usd2UsSWUsT2UsZXQsTmU9SyhkZSx0''@;'; put 'put ''aGlzKSxMZT1KKFBlKSxCZT12b2lkIDA9PT1GZSxIZT1bXSxRZT1QZTtpZighTmUmJkxlJiZCZSYmUGUuY29uc3RydWN0b3I9PT1mZSlyZXR1cm4gUGU7aWYoKExlfHxLKGRlLFBlKSkmJihQZT1QZS5zb3VyY2UsQmUmJihGZT1SKFFlKSkpLFBlPXZvaWQgMD09PVBlPyIiOkkoUGUpLEZlPXZv''@;'; put 'put ''aWQgMD09PUZlPyIiOkkoRmUpLFFlPVBlLHRlJiYiZG90QWxsImluIGcmJihLZT0hIUZlJiZ4KEZlLCJzIik+LTEpJiYoRmU9YihGZSwvcy9nLCIiKSksbXQ9RmUseSYmInN0aWNreSJpbiBnJiYod2U9ISFGZSYmeChGZSwieSIpPi0xKSYmcCYmKEZlPWIoRmUsL3kvZywiIikpLG5lJiYoSWU9''@;'; put 'put ''ZnVuY3Rpb24oVGUpe2Zvcih2YXIgd2UsUGU9VGUubGVuZ3RoLEZlPTAsTmU9IiIsTGU9W10sQmU9e30sSGU9ITEsUWU9ITEsbXQ9MCxLZT0iIjtGZTw9UGU7RmUrKyl7aWYoIlxcIj09PSh3ZT1ZKFRlLEZlKSkpd2UrPVkoVGUsKytGZSk7ZWxzZSBpZigiXSI9PT13ZSlIZT0hMTtlbHNlIGlm''@;'; put 'put ''KCFIZSlzd2l0Y2goITApe2Nhc2UiWyI9PT13ZTpIZT0hMDticmVhaztjYXNlIigiPT09d2U6Y2UoRixOKFRlLEZlKzEpKSYmKEZlKz0yLFFlPSEwKSxOZSs9d2UsbXQrKztjb250aW51ZTtjYXNlIj4iPT09d2UmJlFlOmlmKCIiPT09S2V8fEcoQmUsS2UpKXRocm93IG5ldyB1ZSgiSW52YWxp''@;'; put 'put ''ZCBjYXB0dXJlIGdyb3VwIG5hbWUiKTtCZVtLZV09ITAsTGVbTGUubGVuZ3RoXT1bS2UsbXRdLFFlPSExLEtlPSIiO2NvbnRpbnVlfVFlP0tlKz13ZTpOZSs9d2V9cmV0dXJuW05lLExlXX0oUGUpLFBlPUllWzBdLEhlPUllWzFdKSxPZT1IKGxlKFBlLEZlKSxOZT90aGlzOmRlLGZlKSwoS2V8''@;'; put 'put ''fHdlfHxIZS5sZW5ndGgpJiYoZXQ9VyhPZSksS2UmJihldC5kb3RBbGw9ITAsZXQucmF3PWZlKGZ1bmN0aW9uKFRlKXtmb3IodmFyIEJlLFBlPVRlLmxlbmd0aCxGZT0wLE5lPSIiLExlPSExO0ZlPD1QZTtGZSsrKSJcXCIhPT0oQmU9WShUZSxGZSkpP0xlfHwiLiIhPT1CZT8oIlsiPT09QmU/''@;'; put 'put ''TGU9ITA6Il0iPT09QmUmJihMZT0hMSksTmUrPUJlKTpOZSs9IltcXHNcXFNdIjpOZSs9QmUrWShUZSwrK0ZlKTtyZXR1cm4gTmV9KFBlKSxtdCkpLHdlJiYoZXQuc3RpY2t5PSEwKSxIZS5sZW5ndGgmJihldC5ncm91cHM9SGUpKSxQZSE9PVFlKXRyeXtCKE9lLCJzb3VyY2UiLCIiPT09UWU/''@;'; put 'put ''Iig/OikiOlFlKX1jYXRjaHt9cmV0dXJuIE9lfSxtZT1MKGxlKSxrZT0wO21lLmxlbmd0aD5rZTspeihmZSxsZSxtZVtrZSsrXSk7ZGUuY29uc3RydWN0b3I9ZmUsZmUucHJvdG90eXBlPWRlLGooaywiUmVnRXhwIixmZSx7Y29uc3RydWN0b3I6ITB9KX1VKCJSZWdFeHAiKX0sNDI3NjA6KFdl''@;'; put 'put ''LHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDg1NjQ4KSxrPVQoMjIyMzQpO3NlKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09a30se2V4ZWM6a30pfSwzMDU3MTooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoMTM4NjkpLlBST1BFUixr''@;'; put 'put ''PVQoMjU2NjYpLHY9VCg1ODY0NyksaGU9VCg5MjEpLEg9VCgyMzUyMyksQj1UKDgxNjIwKSxMPSJ0b1N0cmluZyIsSj1SZWdFeHAucHJvdG90eXBlW0xdOyhIKGZ1bmN0aW9uKCl7cmV0dXJuIi9hL2IiIT1KLmNhbGwoe3NvdXJjZToiYSIsZmxhZ3M6ImIifSl9KXx8c2UmJkoubmFtZSE9TCkm''@;'; put 'put ''JmsoUmVnRXhwLnByb3RvdHlwZSxMLGZ1bmN0aW9uKCl7dmFyIHo9dih0aGlzKTtyZXR1cm4iLyIraGUoei5zb3VyY2UpKyIvIitoZShCKHopKX0se3Vuc2FmZTohMH0pfSw4MDA2OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0IjtUKDQ2ODU3KSgiU2V0IixmdW5jdGlvbih2KXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxUKDQ1MTQwKSl9LDE4MzIzOihXZSx6ZSxUKT0+e1QoODAwNil9LDE2NjYxOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDc1MDU4KS5jb2RlQXQ7''@;'; put 'put ''c2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se2NvZGVQb2ludEF0OmZ1bmN0aW9uKGhlKXtyZXR1cm4gayh0aGlzLGhlKX19KX0sMzc0OTk6KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBWLHNlPVQoODU2NDgpLGs9VCgxMTUxKSx2PVQoNDc5ODcpLmYsaGU9VCg2NTMxNiksSD1U''@;'; put 'put ''KDkyMSksQj1UKDQxOTYxKSxMPVQoMjQ1NzIpLEs9VCg3NjU3MSksSj1UKDEwMDE3KSxJPWsoIiIuZW5kc1dpdGgpLFI9aygiIi5zbGljZSksRT1NYXRoLm1pbix6PUsoImVuZHNXaXRoIik7c2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6ISghSiYmIXomJihWPXYoU3RyaW5n''@;'; put 'put ''LnByb3RvdHlwZSwiZW5kc1dpdGgiKSxWJiYhVi53cml0YWJsZSl8fHopfSx7ZW5kc1dpdGg6ZnVuY3Rpb24oRyl7dmFyIFc9SChMKHRoaXMpKTtCKEcpO3ZhciBVPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHE9Vy5sZW5ndGgsdGU9dm9pZCAwPT09VT9xOkUoaGUo''@;'; put 'put ''VSkscSksbmU9SChHKTtyZXR1cm4gST9JKFcsbmUsdGUpOlIoVyx0ZS1uZS5sZW5ndGgsdGUpPT09bmV9fSl9LDQ1MTM1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDY2MTMpLHY9VCg0MTk2MSksaGU9VCgyNDU3MiksSD1UKDkyMSksQj1UKDc2NTcxKSxM''@;'; put 'put ''PWsoIiIuaW5kZXhPZik7c2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IUIoImluY2x1ZGVzIil9LHtpbmNsdWRlczpmdW5jdGlvbihKKXtyZXR1cm4hIX5MKEgoaGUodGhpcykpLEgodihKKSksYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw1''@;'; put 'put ''Mzk1MDooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoNzUwNTgpLmNoYXJBdCxrPVQoOTIxKSx2PVQoNzI3KSxoZT1UKDY0NTYwKSxIPVQoMjE1MiksQj0iU3RyaW5nIEl0ZXJhdG9yIixMPXYuc2V0LEs9di5nZXR0ZXJGb3IoQik7aGUoU3RyaW5nLCJTdHJpbmciLGZ1bmN0aW9u''@;'; put 'put ''KEope0wodGhpcyx7dHlwZTpCLHN0cmluZzprKEopLGluZGV4OjB9KX0sZnVuY3Rpb24oKXt2YXIgeixJPUsodGhpcyksUj1JLnN0cmluZyxFPUkuaW5kZXg7cmV0dXJuIEU+PVIubGVuZ3RoP0godm9pZCAwLCEwKTooej1zZShSLEUpLEkuaW5kZXgrPXoubGVuZ3RoLEgoeiwhMSkpfSl9LDQ5''@;'; put 'put ''Mjk1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCg4NTY0OCksaz1UKDk1MTEwKTtzZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpUKDk3ODE4KSgibGluayIpfSx7bGluazpmdW5jdGlvbihIKXtyZXR1cm4gayh0aGlzLCJhIiwiaHJlZiIsSCl9fSl9LDI3NjI6''@;'; put 'put ''KFdlLHplLFQpPT57InVzZSBzdHJpY3QiO3ZhciBzZT1UKDM1NjIpLGs9VCgyMjgxNCksdj1UKDU4NjQ3KSxoZT1UKDYzNzQpLEg9VCg2NTMxNiksQj1UKDkyMSksTD1UKDI0NTcyKSxLPVQoMjA5NDgpLEo9VCg2MTY3NiksST1UKDU4MTI2KTtrKCJtYXRjaCIsZnVuY3Rpb24oUixFLHope3Jl''@;'; put 'put ''dHVybltmdW5jdGlvbihWKXt2YXIgRz1MKHRoaXMpLFc9aGUoVik/dm9pZCAwOksoVixSKTtyZXR1cm4gVz9zZShXLFYsRyk6bmV3IFJlZ0V4cChWKVtSXShCKEcpKX0sZnVuY3Rpb24oail7dmFyIFY9dih0aGlzKSxHPUIoaiksVz16KEUsVixHKTtpZihXLmRvbmUpcmV0dXJuIFcudmFsdWU7''@;'; put 'put ''aWYoIVYuZ2xvYmFsKXJldHVybiBJKFYsRyk7dmFyIFU9Vi51bmljb2RlO1YubGFzdEluZGV4PTA7Zm9yKHZhciBuZSxxPVtdLHRlPTA7bnVsbCE9PShuZT1JKFYsRykpOyl7dmFyIGllPUIobmVbMF0pO3FbdGVdPWllLCIiPT09aWUmJihWLmxhc3RJbmRleD1KKEcsSChWLmxhc3RJbmRleCks''@;'; put 'put ''VSkpLHRlKyt9cmV0dXJuIDA9PT10ZT9udWxsOnF9XX0pfSw3ODI0NjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCgyMTI4NSkuc3RhcnQ7c2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6VCg3MjIxMCl9LHtwYWRTdGFydDpmdW5jdGlvbihI''@;'; put 'put ''KXtyZXR1cm4gayh0aGlzLEgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw5MDIwMjooV2UsemUsVCk9PntUKDg1NjQ4KSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7cmVwZWF0OlQoNDU5NjApfSl9LDEwNDE0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgc2U9VCgxMTMwNiksaz1UKDM1NjIpLHY9VCg2NjEzKSxoZT1UKDIyODE0KSxIPVQoMjM1MjMpLEI9VCg1ODY0NyksTD1UKDEyMDE0KSxLPVQoNjM3NCksSj1UKDQwNzAyKSxJPVQoNjUzMTYpLFI9VCg5MjEpLEU9VCgyNDU3Miksej1UKDYxNjc2KSxqPVQoMjA5NDgpLFY9VCg2MzM4''@;'; put 'put ''MiksRz1UKDU4MTI2KSxVPVQoMjU0NikoInJlcGxhY2UiKSxxPU1hdGgubWF4LHRlPU1hdGgubWluLG5lPXYoW10uY29uY2F0KSxpZT12KFtdLnB1c2gpLGxlPXYoIiIuaW5kZXhPZiksZGU9digiIi5zbGljZSksdWU9ZnVuY3Rpb24oeCl7cmV0dXJuIHZvaWQgMD09PXg/eDpTdHJpbmcoeCl9''@;'; put 'put ''LGNlPSIkMCI9PT0iYSIucmVwbGFjZSgvLi8sIiQwIiksWT0hIS8uL1tVXSYmIiI9PT0vLi9bVV0oImEiLCIkMCIpO2hlKCJyZXBsYWNlIixmdW5jdGlvbih4LE4sRil7dmFyIGc9WT8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24oTSx5KXt2YXIgcD1FKHRoaXMpLFM9SyhNKT92b2lkIDA6aihN''@;'; put 'put ''LFUpO3JldHVybiBTP2soUyxNLHAseSk6ayhOLFIocCksTSx5KX0sZnVuY3Rpb24oQyxNKXt2YXIgeT1CKHRoaXMpLHA9UihDKTtpZigic3RyaW5nIj09dHlwZW9mIE0mJi0xPT09bGUoTSxnKSYmLTE9PT1sZShNLCIkPCIpKXt2YXIgUz1GKE4seSxwLE0pO2lmKFMuZG9uZSlyZXR1cm4gUy52''@;'; put 'put ''YWx1ZX12YXIgUT1MKE0pO1F8fChNPVIoTSkpO3ZhciByZT15Lmdsb2JhbDtpZihyZSl7dmFyIGZlPXkudW5pY29kZTt5Lmxhc3RJbmRleD0wfWZvcih2YXIgbWU9W107Oyl7dmFyIGtlPUcoeSxwKTtpZihudWxsPT09a2V8fChpZShtZSxrZSksIXJlKSlicmVhazsiIj09PVIoa2VbMF0pJiYo''@;'; put 'put ''eS5sYXN0SW5kZXg9eihwLEkoeS5sYXN0SW5kZXgpLGZlKSl9Zm9yKHZhciBQZT0iIixGZT0wLE5lPTA7TmU8bWUubGVuZ3RoO05lKyspe2Zvcih2YXIgTGU9Uigoa2U9bWVbTmVdKVswXSksQmU9cSh0ZShKKGtlLmluZGV4KSxwLmxlbmd0aCksMCksSGU9W10sUWU9MTtRZTxrZS5sZW5ndGg7''@;'; put 'put ''UWUrKylpZShIZSx1ZShrZVtRZV0pKTt2YXIgbXQ9a2UuZ3JvdXBzO2lmKFEpe3ZhciBLZT1uZShbTGVdLEhlLEJlLHApO3ZvaWQgMCE9PW10JiZpZShLZSxtdCk7dmFyIHdlPVIoc2UoTSx2b2lkIDAsS2UpKX1lbHNlIHdlPVYoTGUscCxCZSxIZSxtdCxNKTtCZT49RmUmJihQZSs9ZGUocCxG''@;'; put 'put ''ZSxCZSkrd2UsRmU9QmUrTGUubGVuZ3RoKX1yZXR1cm4gUGUrZGUocCxGZSl9XX0sISFIKGZ1bmN0aW9uKCl7dmFyIHg9Ly4vO3JldHVybiB4LmV4ZWM9ZnVuY3Rpb24oKXt2YXIgTj1bXTtyZXR1cm4gTi5ncm91cHM9e2E6IjcifSxOfSwiNyIhPT0iIi5yZXBsYWNlKHgsIiQ8YT4iKX0pfHwh''@;'; put 'put ''Y2V8fFkpfSw3Nzk0OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgzNTYyKSxrPVQoMjI4MTQpLHY9VCg1ODY0NyksaGU9VCg2Mzc0KSxIPVQoMjQ1NzIpLEI9VCg1NTg4MSksTD1UKDkyMSksSz1UKDIwOTQ4KSxKPVQoNTgxMjYpO2soInNlYXJjaCIsZnVuY3Rpb24oSSxSLEUp''@;'; put 'put ''e3JldHVybltmdW5jdGlvbihqKXt2YXIgVj1IKHRoaXMpLEc9aGUoaik/dm9pZCAwOksoaixJKTtyZXR1cm4gRz9zZShHLGosVik6bmV3IFJlZ0V4cChqKVtJXShMKFYpKX0sZnVuY3Rpb24oeil7dmFyIGo9dih0aGlzKSxWPUwoeiksRz1FKFIsaixWKTtpZihHLmRvbmUpcmV0dXJuIEcudmFs''@;'; put 'put ''dWU7dmFyIFc9ai5sYXN0SW5kZXg7QihXLDApfHwoai5sYXN0SW5kZXg9MCk7dmFyIFU9SihqLFYpO3JldHVybiBCKGoubGFzdEluZGV4LFcpfHwoai5sYXN0SW5kZXg9VyksbnVsbD09PVU/LTE6VS5pbmRleH1dfSl9LDY0NDE4OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9VCgx''@;'; put 'put ''MTMwNiksaz1UKDM1NjIpLHY9VCg2NjEzKSxoZT1UKDIyODE0KSxIPVQoNTg2NDcpLEI9VCg2Mzc0KSxMPVQoNDE4MDQpLEs9VCgyNDU3MiksSj1UKDkxMyksST1UKDYxNjc2KSxSPVQoNjUzMTYpLEU9VCg5MjEpLHo9VCgyMDk0OCksaj1UKDEwODcyKSxWPVQoNTgxMjYpLEc9VCgyMjIzNCks''@;'; put 'put ''Vz1UKDk3MTg5KSxVPVQoMjM1MjMpLHE9Vy5VTlNVUFBPUlRFRF9ZLHRlPTQyOTQ5NjcyOTUsbmU9TWF0aC5taW4saWU9W10ucHVzaCxsZT12KC8uLy5leGVjKSxkZT12KGllKSx1ZT12KCIiLnNsaWNlKTtoZSgic3BsaXQiLGZ1bmN0aW9uKFksYix4KXt2YXIgTjtyZXR1cm4gTj0iYyI9PSJh''@;'; put 'put ''YmJjIi5zcGxpdCgvKGIpKi8pWzFdfHw0IT0idGVzdCIuc3BsaXQoLyg/OikvLC0xKS5sZW5ndGh8fDIhPSJhYiIuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGh8fDQhPSIuIi5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGh8fCIuIi5zcGxpdCgvKCkoKS8pLmxlbmd0aD4xfHwiIi5zcGxpdCgvLj8v''@;'; put 'put ''KS5sZW5ndGg/ZnVuY3Rpb24oRixnKXt2YXIgQz1FKEsodGhpcykpLE09dm9pZCAwPT09Zz90ZTpnPj4+MDtpZigwPT09TSlyZXR1cm5bXTtpZih2b2lkIDA9PT1GKXJldHVybltDXTtpZighTChGKSlyZXR1cm4gayhiLEMsRixNKTtmb3IodmFyIHJlLGZlLG1lLHk9W10sUz0wLFE9bmV3IFJl''@;'; put 'put ''Z0V4cChGLnNvdXJjZSwoRi5pZ25vcmVDYXNlPyJpIjoiIikrKEYubXVsdGlsaW5lPyJtIjoiIikrKEYudW5pY29kZT8idSI6IiIpKyhGLnN0aWNreT8ieSI6IiIpKyJnIik7KHJlPWsoRyxRLEMpKSYmISgoZmU9US5sYXN0SW5kZXgpPlMmJihkZSh5LHVlKEMsUyxyZS5pbmRleCkpLHJlLmxl''@;'; put 'put ''bmd0aD4xJiZyZS5pbmRleDxDLmxlbmd0aCYmc2UoaWUseSxqKHJlLDEpKSxtZT1yZVswXS5sZW5ndGgsUz1mZSx5Lmxlbmd0aD49TSkpOylRLmxhc3RJbmRleD09PXJlLmluZGV4JiZRLmxhc3RJbmRleCsrO3JldHVybiBTPT09Qy5sZW5ndGg/KG1lfHwhbGUoUSwiIikpJiZkZSh5LCIiKTpk''@;'; put 'put ''ZSh5LHVlKEMsUykpLHkubGVuZ3RoPk0/aih5LDAsTSk6eX06IjAiLnNwbGl0KHZvaWQgMCwwKS5sZW5ndGg/ZnVuY3Rpb24oRixnKXtyZXR1cm4gdm9pZCAwPT09RiYmMD09PWc/W106ayhiLHRoaXMsRixnKX06YixbZnVuY3Rpb24oZyxDKXt2YXIgTT1LKHRoaXMpLHk9QihnKT92b2lkIDA6''@;'; put 'put ''eihnLFkpO3JldHVybiB5P2soeSxnLE0sQyk6ayhOLEUoTSksZyxDKX0sZnVuY3Rpb24oRixnKXt2YXIgQz1IKHRoaXMpLE09RShGKSx5PXgoTixDLE0sZyxOIT09Yik7aWYoeS5kb25lKXJldHVybiB5LnZhbHVlO3ZhciBwPUooQyxSZWdFeHApLFM9Qy51bmljb2RlLHJlPW5ldyBwKHE/Il4o''@;'; put 'put ''PzoiK0Muc291cmNlKyIpIjpDLChDLmlnbm9yZUNhc2U/ImkiOiIiKSsoQy5tdWx0aWxpbmU/Im0iOiIiKSsoQy51bmljb2RlPyJ1IjoiIikrKHE/ImciOiJ5IikpLGZlPXZvaWQgMD09PWc/dGU6Zz4+PjA7aWYoMD09PWZlKXJldHVybltdO2lmKDA9PT1NLmxlbmd0aClyZXR1cm4gbnVsbD09''@;'; put 'put ''PVYocmUsTSk/W01dOltdO2Zvcih2YXIgbWU9MCxrZT0wLFRlPVtdO2tlPE0ubGVuZ3RoOyl7cmUubGFzdEluZGV4PXE/MDprZTt2YXIgRmUsUGU9VihyZSxxP3VlKE0sa2UpOk0pO2lmKG51bGw9PT1QZXx8KEZlPW5lKFIocmUubGFzdEluZGV4KyhxP2tlOjApKSxNLmxlbmd0aCkpPT09bWUp''@;'; put 'put ''a2U9SShNLGtlLFMpO2Vsc2V7aWYoZGUoVGUsdWUoTSxtZSxrZSkpLFRlLmxlbmd0aD09PWZlKXJldHVybiBUZTtmb3IodmFyIE5lPTE7TmU8PVBlLmxlbmd0aC0xO05lKyspaWYoZGUoVGUsUGVbTmVdKSxUZS5sZW5ndGg9PT1mZSlyZXR1cm4gVGU7a2U9bWU9RmV9fXJldHVybiBkZShUZSx1''@;'; put 'put ''ZShNLG1lKSksVGV9XX0sISFVKGZ1bmN0aW9uKCl7dmFyIFk9Lyg/OikvLGI9WS5leGVjO1kuZXhlYz1mdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIHg9ImFiIi5zcGxpdChZKTtyZXR1cm4gMiE9PXgubGVuZ3RofHwiYSIhPT14WzBdfHwiYiIhPT14WzFd''@;'; put 'put ''fSkscSl9LDg1NzM1OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgVixzZT1UKDg1NjQ4KSxrPVQoMTE1MSksdj1UKDQ3OTg3KS5mLGhlPVQoNjUzMTYpLEg9VCg5MjEpLEI9VCg0MTk2MSksTD1UKDI0NTcyKSxLPVQoNzY1NzEpLEo9VCgxMDAxNyksST1rKCIiLnN0YXJ0c1dpdGgpLFI9''@;'; put 'put ''aygiIi5zbGljZSksRT1NYXRoLm1pbix6PUsoInN0YXJ0c1dpdGgiKTtzZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohKCFKJiYheiYmKFY9dihTdHJpbmcucHJvdG90eXBlLCJzdGFydHNXaXRoIiksViYmIVYud3JpdGFibGUpfHx6KX0se3N0YXJ0c1dpdGg6ZnVuY3Rpb24o''@;'; put 'put ''Ryl7dmFyIFc9SChMKHRoaXMpKTtCKEcpO3ZhciBVPWhlKEUoYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsVy5sZW5ndGgpKSxxPUgoRyk7cmV0dXJuIEk/SShXLHEsVSk6UihXLFUsVStxLmxlbmd0aCk9PT1xfX0pfSw4MzYyMDooV2UsemUsVCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIHNlPVQoODU2NDgpLGs9VCg5MzE2NikudHJpbTtzZSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpUKDQ1NzEyKSgidHJpbSIpfSx7dHJpbTpmdW5jdGlvbigpe3JldHVybiBrKHRoaXMpfX0pfSw0NDY0NjooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQo''@;'; put 'put ''ODU2NDgpLGs9VCg3MDcwNSksdj1UKDM1NjIpLGhlPVQoNjYxMyksSD1UKDEwMDE3KSxCPVQoODU2MjQpLEw9VCgyOTMzOSksSz1UKDIzNTIzKSxKPVQoNDg4MTEpLEk9VCgzNzQ3NCksUj1UKDU4NjQ3KSxFPVQoNTAzMjcpLHo9VCg4NDA5NCksaj1UKDkyMSksVj1UKDczOTIwKSxHPVQoNzQ0''@;'; put 'put ''MTApLFc9VCgxNDU0NSksVT1UKDc1NDMxKSxxPVQoMzU4MDgpLHRlPVQoNTUzNCksbmU9VCg0Nzk4NyksaWU9VCg1MTE4MyksbGU9VCg3NzMyOCksZGU9VCg0NjkwMSksdWU9VCgyNTY2NiksY2U9VCg1NDk1NSksWT1UKDY4ODM1KSxiPVQoMjcyMzApLHg9VCgxOTkwOSksTj1UKDUyODEwKSxG''@;'; put 'put ''PVQoMjU0NiksZz1UKDI4MTEpLEM9VCgxMDA3MiksTT1UKDE0NDk4KSx5PVQoNTU5NjgpLHA9VCg3MjcpLFM9VCg5NTY2OSkuZm9yRWFjaCxRPWIoImhpZGRlbiIpLHJlPSJTeW1ib2wiLGZlPSJwcm90b3R5cGUiLG1lPXAuc2V0LGtlPXAuZ2V0dGVyRm9yKHJlKSxUZT1PYmplY3RbZmVdLFBl''@;'; put 'put ''PWsuU3ltYm9sLEZlPVBlJiZQZVtmZV0sTmU9ay5UeXBlRXJyb3IsTGU9ay5RT2JqZWN0LEJlPW5lLmYsSGU9aWUuZixRZT1xLmYsbXQ9ZGUuZixLZT1oZShbXS5wdXNoKSx3ZT1ZKCJzeW1ib2xzIiksSWU9WSgib3Atc3ltYm9scyIpLE9lPVkoIndrcyIpLGV0PSFMZXx8IUxlW2ZlXXx8IUxl''@;'; put 'put ''W2ZlXS5maW5kQ2hpbGQsbnQ9QiYmSyhmdW5jdGlvbigpe3JldHVybiA3IT1HKEhlKHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhlKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKFB0LEF0LEp0KXt2YXIgbW49QmUoVGUsQXQpO21uJiZkZWxldGUgVGVbQXRd''@;'; put 'put ''LEhlKFB0LEF0LEp0KSxtbiYmUHQhPT1UZSYmSGUoVGUsQXQsbW4pfTpIZSxxZT1mdW5jdGlvbihQdCxBdCl7dmFyIEp0PXdlW1B0XT1HKEZlKTtyZXR1cm4gbWUoSnQse3R5cGU6cmUsdGFnOlB0LGRlc2NyaXB0aW9uOkF0fSksQnx8KEp0LmRlc2NyaXB0aW9uPUF0KSxKdH0saHQ9ZnVuY3Rp''@;'; put 'put ''b24oQXQsSnQsbW4pe0F0PT09VGUmJmh0KEllLEp0LG1uKSxSKEF0KTt2YXIgTnQ9eihKdCk7cmV0dXJuIFIobW4pLEood2UsTnQpPyhtbi5lbnVtZXJhYmxlPyhKKEF0LFEpJiZBdFtRXVtOdF0mJihBdFtRXVtOdF09ITEpLG1uPUcobW4se2VudW1lcmFibGU6VigwLCExKX0pKTooSihBdCxR''@;'; put 'put ''KXx8SGUoQXQsUSxWKDEse30pKSxBdFtRXVtOdF09ITApLG50KEF0LE50LG1uKSk6SGUoQXQsTnQsbW4pfSxFZT1mdW5jdGlvbihBdCxKdCl7UihBdCk7dmFyIG1uPUUoSnQpLE50PVcobW4pLmNvbmNhdChPdChtbikpO3JldHVybiBTKE50LGZ1bmN0aW9uKGJuKXsoIUJ8fHYoJGUsbW4sYm4p''@;'; put 'put ''KSYmaHQoQXQsYm4sbW5bYm5dKX0pLEF0fSwkZT1mdW5jdGlvbihBdCl7dmFyIEp0PXooQXQpLG1uPXYobXQsdGhpcyxKdCk7cmV0dXJuISh0aGlzPT09VGUmJkood2UsSnQpJiYhSihJZSxKdCkpJiYoIShtbnx8IUoodGhpcyxKdCl8fCFKKHdlLEp0KXx8Sih0aGlzLFEpJiZ0aGlzW1FdW0p0''@;'; put 'put ''XSl8fG1uKX0sYXQ9ZnVuY3Rpb24oQXQsSnQpe3ZhciBtbj1FKEF0KSxOdD16KEp0KTtpZihtbiE9PVRlfHwhSih3ZSxOdCl8fEooSWUsTnQpKXt2YXIgYm49QmUobW4sTnQpO3JldHVybiBibiYmSih3ZSxOdCkmJiEoSihtbixRKSYmbW5bUV1bTnRdKSYmKGJuLmVudW1lcmFibGU9ITApLGJu''@;'; put 'put ''fX0sY3Q9ZnVuY3Rpb24oQXQpe3ZhciBKdD1RZShFKEF0KSksbW49W107cmV0dXJuIFMoSnQsZnVuY3Rpb24oTnQpeyFKKHdlLE50KSYmIUooeCxOdCkmJktlKG1uLE50KX0pLG1ufSxPdD1mdW5jdGlvbihQdCl7dmFyIEF0PVB0PT09VGUsSnQ9UWUoQXQ/SWU6RShQdCkpLG1uPVtdO3JldHVy''@;'; put 'put ''biBTKEp0LGZ1bmN0aW9uKE50KXtKKHdlLE50KSYmKCFBdHx8SihUZSxOdCkpJiZLZShtbix3ZVtOdF0pfSksbW59O0x8fCh1ZShGZT0oUGU9ZnVuY3Rpb24oKXtpZihJKEZlLHRoaXMpKXRocm93IE5lKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgQXQ9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2ooYXJndW1lbnRzWzBdKTp2b2lkIDAsSnQ9TihBdCksbW49ZnVuY3Rpb24oTnQpe3RoaXM9PT1UZSYmdihtbixJZSxOdCksSih0aGlzLFEpJiZKKHRoaXNbUV0sSnQpJiYodGhpc1tRXVtKdF09ITEpLG50KHRoaXMsSnQsVigxLE50KSl9O3Jl''@;'; put 'put ''dHVybiBCJiZldCYmbnQoVGUsSnQse2NvbmZpZ3VyYWJsZTohMCxzZXQ6bW59KSxxZShKdCxBdCl9KVtmZV0sInRvU3RyaW5nIixmdW5jdGlvbigpe3JldHVybiBrZSh0aGlzKS50YWd9KSx1ZShQZSwid2l0aG91dFNldHRlciIsZnVuY3Rpb24oUHQpe3JldHVybiBxZShOKFB0KSxQdCl9KSxk''@;'; put 'put ''ZS5mPSRlLGllLmY9aHQsbGUuZj1FZSxuZS5mPWF0LFUuZj1xLmY9Y3QsdGUuZj1PdCxnLmY9ZnVuY3Rpb24oUHQpe3JldHVybiBxZShGKFB0KSxQdCl9LEImJihjZShGZSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtlKHRoaXMpLmRlc2Ny''@;'; put 'put ''aXB0aW9ufX0pLEh8fHVlKFRlLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsJGUse3Vuc2FmZTohMH0pKSksc2Uoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLGZvcmNlZDohTCxzaGFtOiFMfSx7U3ltYm9sOlBlfSksUyhXKE9lKSxmdW5jdGlvbihQdCl7QyhQdCl9KSxzZSh7dGFy''@;'; put 'put ''Z2V0OnJlLHN0YXQ6ITAsZm9yY2VkOiFMfSx7dXNlU2V0dGVyOmZ1bmN0aW9uKCl7ZXQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe2V0PSExfX0pLHNlKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IUwsc2hhbTohQn0se2NyZWF0ZTpmdW5jdGlvbihBdCxKdCl7cmV0dXJuIHZv''@;'; put 'put ''aWQgMD09PUp0P0coQXQpOkVlKEcoQXQpLEp0KX0sZGVmaW5lUHJvcGVydHk6aHQsZGVmaW5lUHJvcGVydGllczpFZSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6YXR9KSxzZSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFMfSx7Z2V0T3duUHJvcGVydHlOYW1lczpjdH0pLE0o''@;'; put 'put ''KSx5KFBlLHJlKSx4W1FdPSEwfSw4NjQyNzooV2UsemUsVCk9PnsidXNlIHN0cmljdCI7dmFyIHNlPVQoODU2NDgpLGs9VCg4NTYyNCksdj1UKDcwNzA1KSxoZT1UKDY2MTMpLEg9VCg0ODgxMSksQj1UKDEyMDE0KSxMPVQoMzc0NzQpLEs9VCg5MjEpLEo9VCg1NDk1NSksST1UKDc3NTQ4KSxS''@;'; put 'put ''PXYuU3ltYm9sLEU9UiYmUi5wcm90b3R5cGU7aWYoayYmQihSKSYmKCEoImRlc2NyaXB0aW9uImluIEUpfHx2b2lkIDAhPT1SKCkuZGVzY3JpcHRpb24pKXt2YXIgej17fSxqPWZ1bmN0aW9uKCl7dmFyIGllPWFyZ3VtZW50cy5sZW5ndGg8MXx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3ZvaWQg''@;'; put 'put ''MDpLKGFyZ3VtZW50c1swXSksbGU9TChFLHRoaXMpP25ldyBSKGllKTp2b2lkIDA9PT1pZT9SKCk6UihpZSk7cmV0dXJuIiI9PT1pZSYmKHpbbGVdPSEwKSxsZX07SShqLFIpLGoucHJvdG90eXBlPUUsRS5jb25zdHJ1Y3Rvcj1qO3ZhciBWPSJTeW1ib2wodGVzdCkiPT1TdHJpbmcoUigidGVz''@;'; put 'put ''dCIpKSxHPWhlKEUudmFsdWVPZiksVz1oZShFLnRvU3RyaW5nKSxVPS9eU3ltYm9sXCgoLiopXClbXildKyQvLHE9aGUoIiIucmVwbGFjZSksdGU9aGUoIiIuc2xpY2UpO0ooRSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIGllPUcodGhpcyk7aWYo''@;'; put 'put ''SCh6LGllKSlyZXR1cm4iIjt2YXIgbGU9VyhpZSksZGU9Vj90ZShsZSw3LC0xKTpxKGxlLFUsIiQxIik7cmV0dXJuIiI9PT1kZT92b2lkIDA6ZGV9fSksc2Uoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6ITB9LHtTeW1ib2w6an0pfX0sNzg3OTA6KFdlLHplLFQpPT57dmFyIHNl''@;'; put 'put ''PVQoODU2NDgpLGs9VCg0NjY5Myksdj1UKDQ4ODExKSxoZT1UKDkyMSksSD1UKDY4ODM1KSxCPVQoNzE4MjkpLEw9SCgic3RyaW5nLXRvLXN5bWJvbC1yZWdpc3RyeSIpLEs9SCgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpO3NlKHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6''@;'; put 'put ''IUJ9LHtmb3I6ZnVuY3Rpb24oSil7dmFyIEk9aGUoSik7aWYodihMLEkpKXJldHVybiBMW0ldO3ZhciBSPWsoIlN5bWJvbCIpKEkpO3JldHVybiBMW0ldPVIsS1tSXT1JLFJ9fSl9LDMzNTgzOihXZSx6ZSxUKT0+e1QoMTAwNzIpKCJpdGVyYXRvciIpfSwyNjU3OihXZSx6ZSxUKT0+e1QoNDQ2''@;'; put 'put ''NDYpLFQoNzg3OTApLFQoMjg1NDApLFQoMTMwMDYpLFQoNjMxOTgpfSwyODU0MDooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCksaz1UKDQ4ODExKSx2PVQoNjk3NSksaGU9VCg5NDY3NiksSD1UKDY4ODM1KSxCPVQoNzE4MjkpLEw9SCgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpO3Nl''@;'; put 'put ''KHt0YXJnZXQ6IlN5bWJvbCIsc3RhdDohMCxmb3JjZWQ6IUJ9LHtrZXlGb3I6ZnVuY3Rpb24oSil7aWYoIXYoSikpdGhyb3cgVHlwZUVycm9yKGhlKEopKyIgaXMgbm90IGEgc3ltYm9sIik7aWYoayhMLEopKXJldHVybiBMW0pdfX0pfSw0MDA2MTooV2UsemUsVCk9Pnt2YXIgc2U9VCgxMDA3''@;'; put 'put ''Miksaz1UKDE0NDk4KTtzZSgidG9QcmltaXRpdmUiKSxrKCl9LDE5MzA4OihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaWUsc2U9VCgxMjU2Niksaz1UKDcwNzA1KSx2PVQoNjYxMyksaGU9VCg3NDA2OSksSD1UKDcxODMyKSxCPVQoNDY4NTcpLEw9VCg0Mjk2OSksSz1UKDEzODQ5KSxK''@;'; put 'put ''PVQoNzI3KS5lbmZvcmNlLEk9VCgyMzUyMyksUj1UKDE3NTQyKSxFPU9iamVjdCx6PUFycmF5LmlzQXJyYXksaj1FLmlzRXh0ZW5zaWJsZSxWPUUuaXNGcm96ZW4sRz1FLmlzU2VhbGVkLFc9RS5mcmVlemUsVT1FLnNlYWwscT17fSx0ZT17fSxuZT0hay5BY3RpdmVYT2JqZWN0JiYiQWN0aXZl''@;'; put 'put ''WE9iamVjdCJpbiBrLGxlPWZ1bmN0aW9uKEYpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBGKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwKX19LGRlPUIoIldlYWtNYXAiLGxlLEwpLHVlPWRlLnByb3RvdHlwZSxjZT12KHVlLnNldCk7aWYoUilpZihuZSl7aWU9''@;'; put 'put ''TC5nZXRDb25zdHJ1Y3RvcihsZSwiV2Vha01hcCIsITApLEguZW5hYmxlKCk7dmFyIGI9dih1ZS5kZWxldGUpLHg9dih1ZS5oYXMpLE49dih1ZS5nZXQpO2hlKHVlLHtkZWxldGU6ZnVuY3Rpb24oRil7aWYoSyhGKSYmIWooRikpe3ZhciBnPUoodGhpcyk7cmV0dXJuIGcuZnJvemVufHwoZy5m''@;'; put 'put ''cm96ZW49bmV3IGllKSxiKHRoaXMsRil8fGcuZnJvemVuLmRlbGV0ZShGKX1yZXR1cm4gYih0aGlzLEYpfSxoYXM6ZnVuY3Rpb24oZyl7aWYoSyhnKSYmIWooZykpe3ZhciBDPUoodGhpcyk7cmV0dXJuIEMuZnJvemVufHwoQy5mcm96ZW49bmV3IGllKSx4KHRoaXMsZyl8fEMuZnJvemVuLmhh''@;'; put 'put ''cyhnKX1yZXR1cm4geCh0aGlzLGcpfSxnZXQ6ZnVuY3Rpb24oZyl7aWYoSyhnKSYmIWooZykpe3ZhciBDPUoodGhpcyk7cmV0dXJuIEMuZnJvemVufHwoQy5mcm96ZW49bmV3IGllKSx4KHRoaXMsZyk/Tih0aGlzLGcpOkMuZnJvemVuLmdldChnKX1yZXR1cm4gTih0aGlzLGcpfSxzZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oZyxDKXtpZihLKGcpJiYhaihnKSl7dmFyIE09Sih0aGlzKTtNLmZyb3plbnx8KE0uZnJvemVuPW5ldyBpZSkseCh0aGlzLGcpP2NlKHRoaXMsZyxDKTpNLmZyb3plbi5zZXQoZyxDKX1lbHNlIGNlKHRoaXMsZyxDKTtyZXR1cm4gdGhpc319KX1lbHNlIHNlJiZJKGZ1bmN0aW9uKCl7''@;'; put 'put ''dmFyIEY9VyhbXSk7cmV0dXJuIGNlKG5ldyBkZSxGLDEpLCFWKEYpfSkmJmhlKHVlLHtzZXQ6ZnVuY3Rpb24oZyxDKXt2YXIgTTtyZXR1cm4geihnKSYmKFYoZyk/TT1xOkcoZykmJihNPXRlKSksY2UodGhpcyxnLEMpLE09PXEmJlcoZyksTT09dGUmJlUoZyksdGhpc319KX0sNjUxMjU6KFdl''@;'; put 'put ''LHplLFQpPT57VCgxOTMwOCl9LDk4MzczOihXZSx6ZSxUKT0+eyJ1c2Ugc3RyaWN0IjtUKDQ2ODU3KSgiV2Vha1NldCIsZnVuY3Rpb24odil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sVCg0Mjk2OSkpfSwz''@;'; put 'put ''ODE4MzooV2UsemUsVCk9PntUKDk4MzczKX0sMjI0OTY6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgpLGs9VCg3MDcwNSksdj1UKDU1MjYxKS5jbGVhcjtzZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZW51bWVyYWJsZTohMCxmb3JjZWQ6ay5jbGVhckltbWVkaWF0ZSE9PXZ9LHtjbGVhckltbWVk''@;'; put 'put ''aWF0ZTp2fSl9LDU4NTk0OihXZSx6ZSxUKT0+e3ZhciBzZT1UKDcwNzA1KSxrPVQoMTkyMzEpLHY9VCgyOTkxMCksaGU9VCgzNzMxOSksSD1UKDE2MDE3KSxCPWZ1bmN0aW9uKEspe2lmKEsmJksuZm9yRWFjaCE9PWhlKXRyeXtIKEssImZvckVhY2giLGhlKX1jYXRjaHtLLmZvckVhY2g9aGV9''@;'; put 'put ''fTtmb3IodmFyIEwgaW4gaylrW0xdJiZCKHNlW0xdJiZzZVtMXS5wcm90b3R5cGUpO0Iodil9LDU4MjcyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDcwNzA1KSxrPVQoMTkyMzEpLHY9VCgyOTkxMCksaGU9VCg1Nzk0MyksSD1UKDE2MDE3KSxCPVQoMjU0NiksTD1CKCJpdGVyYXRvciIpLEs9Qigi''@;'; put 'put ''dG9TdHJpbmdUYWciKSxKPWhlLnZhbHVlcyxJPWZ1bmN0aW9uKEUseil7aWYoRSl7aWYoRVtMXSE9PUopdHJ5e0goRSxMLEopfWNhdGNoe0VbTF09Sn1pZihFW0tdfHxIKEUsSyx6KSxrW3pdKWZvcih2YXIgaiBpbiBoZSlpZihFW2pdIT09aGVbal0pdHJ5e0goRSxqLGhlW2pdKX1jYXRjaHtF''@;'; put 'put ''W2pdPWhlW2pdfX19O2Zvcih2YXIgUiBpbiBrKUkoc2VbUl0mJnNlW1JdLnByb3RvdHlwZSxSKTtJKHYsIkRPTVRva2VuTGlzdCIpfSw5MTk0NTooV2UsemUsVCk9PntUKDIyNDk2KSxUKDM0NDQzKX0sMzQ0NDM6KFdlLHplLFQpPT57dmFyIHNlPVQoODU2NDgpLGs9VCg3MDcwNSksdj1UKDU1''@;'; put 'put ''MjYxKS5zZXQsaGU9VCg5NTg5NSksSD1rLnNldEltbWVkaWF0ZT9oZSh2LCExKTp2O3NlKHtnbG9iYWw6ITAsYmluZDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDprLnNldEltbWVkaWF0ZSE9PUh9LHtzZXRJbW1lZGlhdGU6SH0pfSw1NjY3MDooV2UsemUsVCk9Pnt2YXIgc2U9VCg4NTY0OCks''@;'; put 'put ''az1UKDcwNzA1KSxoZT1UKDk1ODk1KShrLnNldEludGVydmFsLCEwKTtzZSh7Z2xvYmFsOiEwLGJpbmQ6ITAsZm9yY2VkOmsuc2V0SW50ZXJ2YWwhPT1oZX0se3NldEludGVydmFsOmhlfSl9LDU5MTcyOihXZSx6ZSxUKT0+e3ZhciBzZT1UKDg1NjQ4KSxrPVQoNzA3MDUpLGhlPVQoOTU4OTUp''@;'; put 'put ''KGsuc2V0VGltZW91dCwhMCk7c2Uoe2dsb2JhbDohMCxiaW5kOiEwLGZvcmNlZDprLnNldFRpbWVvdXQhPT1oZX0se3NldFRpbWVvdXQ6aGV9KX0sNTgzMjQ6KFdlLHplLFQpPT57VCg1NjY3MCksVCg1OTE3Mil9LDQ2NzAwOihXZSx6ZSxUKT0+e3ZhciBzZT17Ii4vYWYiOjgzMjc0LCIuL2Fm''@;'; put 'put ''LmpzIjo4MzI3NCwiLi9hciI6MjIwOTcsIi4vYXItZHoiOjYxODY3LCIuL2FyLWR6LmpzIjo2MTg2NywiLi9hci1rdyI6MTcwNzgsIi4vYXIta3cuanMiOjE3MDc4LCIuL2FyLWx5Ijo3Nzc3NiwiLi9hci1seS5qcyI6Nzc3NzYsIi4vYXItbWEiOjU2Nzg5LCIuL2FyLW1hLmpzIjo1Njc4OSwi''@;'; put 'put ''Li9hci1zYSI6Njg5NywiLi9hci1zYS5qcyI6Njg5NywiLi9hci10biI6NzE1ODUsIi4vYXItdG4uanMiOjcxNTg1LCIuL2FyLmpzIjoyMjA5NywiLi9heiI6MTU2MTEsIi4vYXouanMiOjE1NjExLCIuL2JlIjo2MjQ1OSwiLi9iZS5qcyI6NjI0NTksIi4vYmciOjkxODI1LCIuL2JnLmpzIjo5''@;'; put 'put ''MTgyNSwiLi9ibSI6NzU5MTgsIi4vYm0uanMiOjc1OTE4LCIuL2JuIjozNDA2NSwiLi9ibi1iZCI6NDk2ODMsIi4vYm4tYmQuanMiOjQ5NjgzLCIuL2JuLmpzIjozNDA2NSwiLi9ibyI6MTEwMzQsIi4vYm8uanMiOjExMDM0LCIuL2JyIjoyNzY3MSwiLi9ici5qcyI6Mjc2NzEsIi4vYnMiOjM4''@;'; put 'put ''MTUzLCIuL2JzLmpzIjozODE1MywiLi9jYSI6NTQyODcsIi4vY2EuanMiOjU0Mjg3LCIuL2NzIjo3MjYxNiwiLi9jcy5qcyI6NzI2MTYsIi4vY3YiOjI3MDQ5LCIuL2N2LmpzIjoyNzA0OSwiLi9jeSI6OTkxNzIsIi4vY3kuanMiOjk5MTcyLCIuL2RhIjoyMDYwNSwiLi9kYS5qcyI6MjA2MDUs''@;'; put 'put ''Ii4vZGUiOjk0MDEzLCIuL2RlLWF0Ijo5MzM5NSwiLi9kZS1hdC5qcyI6OTMzOTUsIi4vZGUtY2giOjk5ODM1LCIuL2RlLWNoLmpzIjo5OTgzNSwiLi9kZS5qcyI6OTQwMTMsIi4vZHYiOjE0NTcwLCIuL2R2LmpzIjoxNDU3MCwiLi9lbCI6MzE4NTksIi4vZWwuanMiOjMxODU5LCIuL2VuLWF1''@;'; put 'put ''Ijo1NTc4NSwiLi9lbi1hdS5qcyI6NTU3ODUsIi4vZW4tY2EiOjgzNzkyLCIuL2VuLWNhLmpzIjo4Mzc5MiwiLi9lbi1nYiI6NTc2NTEsIi4vZW4tZ2IuanMiOjU3NjUxLCIuL2VuLWllIjo4MTkyOSwiLi9lbi1pZS5qcyI6ODE5MjksIi4vZW4taWwiOjE5ODE4LCIuL2VuLWlsLmpzIjoxOTgx''@;'; put 'put ''OCwiLi9lbi1pbiI6NjYxMiwiLi9lbi1pbi5qcyI6NjYxMiwiLi9lbi1ueiI6MjQ5MDAsIi4vZW4tbnouanMiOjI0OTAwLCIuL2VuLXNnIjo3MjcyMSwiLi9lbi1zZy5qcyI6NzI3MjEsIi4vZW8iOjk1MTU5LCIuL2VvLmpzIjo5NTE1OSwiLi9lcyI6MjE5NTQsIi4vZXMtZG8iOjExNzgwLCIu''@;'; put 'put ''L2VzLWRvLmpzIjoxMTc4MCwiLi9lcy1teCI6MjM0NjgsIi4vZXMtbXguanMiOjIzNDY4LCIuL2VzLXVzIjo0NDkzOCwiLi9lcy11cy5qcyI6NDQ5MzgsIi4vZXMuanMiOjIxOTU0LCIuL2V0IjoxMTQ1MywiLi9ldC5qcyI6MTE0NTMsIi4vZXUiOjQ0Njk3LCIuL2V1LmpzIjo0NDY5NywiLi9m''@;'; put 'put ''YSI6NTI5MDAsIi4vZmEuanMiOjUyOTAwLCIuL2ZpIjo0OTc3NSwiLi9maS5qcyI6NDk3NzUsIi4vZmlsIjo2NDI4MiwiLi9maWwuanMiOjY0MjgyLCIuL2ZvIjo4NDIzNiwiLi9mby5qcyI6ODQyMzYsIi4vZnIiOjg5MzYxLCIuL2ZyLWNhIjo5MjgzMCwiLi9mci1jYS5qcyI6OTI4MzAsIi4v''@;'; put 'put ''ZnItY2giOjIxNDEyLCIuL2ZyLWNoLmpzIjoyMTQxMiwiLi9mci5qcyI6ODkzNjEsIi4vZnkiOjY2OTg0LCIuL2Z5LmpzIjo2Njk4NCwiLi9nYSI6OTM5NjEsIi4vZ2EuanMiOjkzOTYxLCIuL2dkIjo3ODg0OSwiLi9nZC5qcyI6Nzg4NDksIi4vZ2wiOjM0MjczLCIuL2dsLmpzIjozNDI3Mywi''@;'; put 'put ''Li9nb20tZGV2YSI6NDA2MjMsIi4vZ29tLWRldmEuanMiOjQwNjIzLCIuL2dvbS1sYXRuIjo2MjY5NiwiLi9nb20tbGF0bi5qcyI6NjI2OTYsIi4vZ3UiOjY2OTI4LCIuL2d1LmpzIjo2NjkyOCwiLi9oZSI6MjQ4MDQsIi4vaGUuanMiOjI0ODA0LCIuL2hpIjoyMzAxNSwiLi9oaS5qcyI6MjMw''@;'; put 'put ''MTUsIi4vaHIiOjE3MTM0LCIuL2hyLmpzIjoxNzEzNCwiLi9odSI6NTA2NzAsIi4vaHUuanMiOjUwNjcwLCIuL2h5LWFtIjo0NTIzLCIuL2h5LWFtLmpzIjo0NTIzLCIuL2lkIjo5OTIzMywiLi9pZC5qcyI6OTkyMzMsIi4vaXMiOjk0NjkzLCIuL2lzLmpzIjo5NDY5MywiLi9pdCI6NjM5MzYs''@;'; put 'put ''Ii4vaXQtY2giOjc4MTE4LCIuL2l0LWNoLmpzIjo3ODExOCwiLi9pdC5qcyI6NjM5MzYsIi4vamEiOjg2ODcxLCIuL2phLmpzIjo4Njg3MSwiLi9qdiI6Njg3MTAsIi4vanYuanMiOjY4NzEwLCIuL2thIjoxNzEyNSwiLi9rYS5qcyI6MTcxMjUsIi4va2siOjgyNDYxLCIuL2trLmpzIjo4MjQ2''@;'; put 'put ''MSwiLi9rbSI6NzczOTksIi4va20uanMiOjc3Mzk5LCIuL2tuIjozODcyMCwiLi9rbi5qcyI6Mzg3MjAsIi4va28iOjg1MzA2LCIuL2tvLmpzIjo4NTMwNiwiLi9rdSI6ODI5OTUsIi4va3UuanMiOjgyOTk1LCIuL2t5Ijo4Nzc5LCIuL2t5LmpzIjo4Nzc5LCIuL2xiIjo2MjA1NywiLi9sYi5q''@;'; put 'put ''cyI6NjIwNTcsIi4vbG8iOjE3MTkyLCIuL2xvLmpzIjoxNzE5MiwiLi9sdCI6MTU0MzAsIi4vbHQuanMiOjE1NDMwLCIuL2x2Ijo1MzM2MywiLi9sdi5qcyI6NTMzNjMsIi4vbWUiOjcyOTM5LCIuL21lLmpzIjo3MjkzOSwiLi9taSI6MzgyMTIsIi4vbWkuanMiOjM4MjEyLCIuL21rIjo2OTcx''@;'; put 'put ''OCwiLi9tay5qcyI6Njk3MTgsIi4vbWwiOjUwNTYxLCIuL21sLmpzIjo1MDU2MSwiLi9tbiI6Njg5MjksIi4vbW4uanMiOjY4OTI5LCIuL21yIjo4NDg4MCwiLi9tci5qcyI6ODQ4ODAsIi4vbXMiOjYzMTkzLCIuL21zLW15Ijo0MjA3NCwiLi9tcy1teS5qcyI6NDIwNzQsIi4vbXMuanMiOjYz''@;'; put 'put ''MTkzLCIuL210Ijo1NDA4MiwiLi9tdC5qcyI6NTQwODIsIi4vbXkiOjgyMjYxLCIuL215LmpzIjo4MjI2MSwiLi9uYiI6MTUyNzMsIi4vbmIuanMiOjE1MjczLCIuL25lIjoxOTg3NCwiLi9uZS5qcyI6MTk4NzQsIi4vbmwiOjUxNjY3LCIuL25sLWJlIjo4MTQ4NCwiLi9ubC1iZS5qcyI6ODE0''@;'; put 'put ''ODQsIi4vbmwuanMiOjUxNjY3LCIuL25uIjoxNzI2MiwiLi9ubi5qcyI6MTcyNjIsIi4vb2MtbG5jIjoxOTY3OSwiLi9vYy1sbmMuanMiOjE5Njc5LCIuL3BhLWluIjo5NjgzMCwiLi9wYS1pbi5qcyI6OTY4MzAsIi4vcGwiOjkzNjE2LCIuL3BsLmpzIjo5MzYxNiwiLi9wdCI6NTUxMzgsIi4v''@;'; put 'put ''cHQtYnIiOjMyNzUxLCIuL3B0LWJyLmpzIjozMjc1MSwiLi9wdC5qcyI6NTUxMzgsIi4vcm8iOjE3OTY4LCIuL3JvLmpzIjoxNzk2OCwiLi9ydSI6ODE4MjgsIi4vcnUuanMiOjgxODI4LCIuL3NkIjo2MjE4OCwiLi9zZC5qcyI6NjIxODgsIi4vc2UiOjY1NjIsIi4vc2UuanMiOjY1NjIsIi4v''@;'; put 'put ''c2kiOjg3MTcyLCIuL3NpLmpzIjo4NzE3MiwiLi9zayI6OTk5NjYsIi4vc2suanMiOjk5OTY2LCIuL3NsIjo0Mjg3LCIuL3NsLmpzIjo0Mjg3LCIuL3NxIjoxNTI5MSwiLi9zcS5qcyI6MTUyOTEsIi4vc3IiOjgwNDUwLCIuL3NyLWN5cmwiOjM3NjAzLCIuL3NyLWN5cmwuanMiOjM3NjAzLCIu''@;'; put 'put ''L3NyLmpzIjo4MDQ1MCwiLi9zcyI6MzAzODMsIi4vc3MuanMiOjMwMzgzLCIuL3N2IjozNzIyMSwiLi9zdi5qcyI6MzcyMjEsIi4vc3ciOjUxNzQzLCIuL3N3LmpzIjo1MTc0MywiLi90YSI6NjM1MSwiLi90YS5qcyI6NjM1MSwiLi90ZSI6OTgxMTgsIi4vdGUuanMiOjk4MTE4LCIuL3RldCI6''@;'; put 'put ''MjYyNzgsIi4vdGV0LmpzIjoyNjI3OCwiLi90ZyI6MzY5ODcsIi4vdGcuanMiOjM2OTg3LCIuL3RoIjozOTMyNSwiLi90aC5qcyI6MzkzMjUsIi4vdGsiOjQzNDg1LCIuL3RrLmpzIjo0MzQ4NSwiLi90bC1waCI6NjgxNDgsIi4vdGwtcGguanMiOjY4MTQ4LCIuL3RsaCI6NTk2MTYsIi4vdGxo''@;'; put 'put ''LmpzIjo1OTYxNiwiLi90ciI6MjQwNDAsIi4vdHIuanMiOjI0MDQwLCIuL3R6bCI6NTk0LCIuL3R6bC5qcyI6NTk0LCIuL3R6bSI6ODA2NzMsIi4vdHptLWxhdG4iOjIzMjI2LCIuL3R6bS1sYXRuLmpzIjoyMzIyNiwiLi90em0uanMiOjgwNjczLCIuL3VnLWNuIjo2OTU4MCwiLi91Zy1jbi5q''@;'; put 'put ''cyI6Njk1ODAsIi4vdWsiOjg3MjcwLCIuL3VrLmpzIjo4NzI3MCwiLi91ciI6MTE2NTYsIi4vdXIuanMiOjExNjU2LCIuL3V6Ijo2ODM2NCwiLi91ei1sYXRuIjoxODc0NCwiLi91ei1sYXRuLmpzIjoxODc0NCwiLi91ei5qcyI6NjgzNjQsIi4vdmkiOjc1MDQ5LCIuL3ZpLmpzIjo3NTA0OSwi''@;'; put 'put ''Li94LXBzZXVkbyI6MTUxMDYsIi4veC1wc2V1ZG8uanMiOjE1MTA2LCIuL3lvIjo2MTk5LCIuL3lvLmpzIjo2MTk5LCIuL3poLWNuIjoyNzI4MCwiLi96aC1jbi5qcyI6MjcyODAsIi4vemgtaGsiOjM2ODYwLCIuL3poLWhrLmpzIjozNjg2MCwiLi96aC1tbyI6NzgzNjQsIi4vemgtbW8uanMi''@;'; put 'put ''Ojc4MzY0LCIuL3poLXR3Ijo0ODIsIi4vemgtdHcuanMiOjQ4Mn07ZnVuY3Rpb24gayhoZSl7dmFyIEg9dihoZSk7cmV0dXJuIFQoSCl9ZnVuY3Rpb24gdihoZSl7aWYoIVQubyhzZSxoZSkpe3ZhciBIPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2hlKyInIik7dGhyb3cgSC5j''@;'; put 'put ''b2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixIfXJldHVybiBzZVtoZV19ay5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHNlKX0say5yZXNvbHZlPXYsV2UuZXhwb3J0cz1rLGsuaWQ9NDY3MDB9LDc4NzczOigpPT57fSw4MDk1MDooKT0+e30sNDY2MDE6KCk9Pnt9LDg2MjM6KCk9''@;'; put 'put ''Pnt9LDc3NDg6KCk9Pnt9LDg1NTY4OigpPT57fSwxOTUyNzooKT0+e30sNjkzMzE6KCk9Pnt9LDU2NjE5OigpPT57fSw3NzEwODooKT0+e30sNTIzNjE6KCk9Pnt9LDk0NjE2OigpPT57fSwxNzE1NjpXZT0+e2Z1bmN0aW9uIHplKHNlLGssdixoZSxILEIsTCl7dHJ5e3ZhciBLPXNlW0JdKEwp''@;'; put 'put ''LEo9Sy52YWx1ZX1jYXRjaChJKXtyZXR1cm4gdm9pZCB2KEkpfUsuZG9uZT9rKEopOlByb21pc2UucmVzb2x2ZShKKS50aGVuKGhlLEgpfVdlLmV4cG9ydHM9ZnVuY3Rpb24gVChzZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGs9dGhpcyx2PWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2Uo''@;'; put 'put ''ZnVuY3Rpb24oaGUsSCl7dmFyIEI9c2UuYXBwbHkoayx2KTtmdW5jdGlvbiBMKEope3plKEIsaGUsSCxMLEssIm5leHQiLEopfWZ1bmN0aW9uIEsoSil7emUoQixoZSxILEwsSywidGhyb3ciLEopfUwodm9pZCAwKX0pfX0sV2UuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLFdlLmV4cG9ydHMuZGVm''@;'; put 'put ''YXVsdD1XZS5leHBvcnRzfSw0NDk0NjpXZT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siYWVzLTEyOC1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItZWNiIjp7ImNpcGhlciI6''@;'; put 'put ''IkFFUyIsImtleSI6MTkyLCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMjU2LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTEyOC1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5Ijox''@;'; put 'put ''MjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYs''@;'; put 'put ''Im1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTkyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoi''@;'; put 'put ''YmxvY2sifSwiYWVzMjU2Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTEyOC1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5''@;'; put 'put ''Mi1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jZmI4Ijp7''@;'; put 'put ''ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiOCI6eyJjaXBo''@;'; put 'put ''ZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYjEiOnsiY2lwaGVyIjoi''@;'; put 'put ''QUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1vZmIiOnsiY2lwaGVyIjoiQUVTIiwi''@;'; put 'put ''a2V5IjoxMjgsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYs''@;'; put 'put ''Iml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwi''@;'; put 'put ''bW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxMiwibW9kZSI6IkdD''@;'; put 'put ''TSIsInR5cGUiOiJhdXRoIn0sImFlcy0xOTItZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMjU2LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1''@;'; put 'put ''dGgifX0nKX0sNzUyMDc6V2U9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7InNoYTIyNFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxYyJ9LCJSU0Et''@;'; put 'put ''U0hBMjI0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxYyJ9LCJzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiMzAzMTMwMGQwNjA5''@;'; put 'put ''NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSwiUlNBLVNIQTI1NiI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSwic2hhMzg0V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIs''@;'; put 'put ''Imhhc2giOiJzaGEzODQiLCJpZCI6IjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwIn0sIlJTQS1TSEEzODQiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwIn0sInNoYTUx''@;'; put 'put ''MldpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MCJ9LCJSU0EtU0hBNTEyIjp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIzMDUxMzAwZDA2MDk2''@;'; put 'put ''MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MCJ9LCJSU0EtU0hBMSI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMGUwMzAyMWEwNTAwMDQxNCJ9LCJlY2RzYS13aXRoLVNIQTEiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJz''@;'; put 'put ''aGEyNTYiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sInNoYTIyNCI6eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwic2hhMzg0Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJzaGE1MTIiOnsic2lnbiI6''@;'; put 'put ''ImVjZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1TSEEiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBLVNIQTEiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlk''@;'; put 'put ''IjoiIn0sIkRTQS1XSVRILVNIQTIyNCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sIkRTQS1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyNTYiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyNTYiLCJp''@;'; put 'put ''ZCI6IiJ9LCJEU0EtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwiRFNBLVdJVEgtU0hBMzg0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwiRFNBLVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoi''@;'; put 'put ''In0sIkRTQS1XSVRILVNIQTUxMiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtUklQRU1EMTYwIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIi''@;'; put 'put ''fSwicmlwZW1kMTYwV2l0aFJTQSI6eyJzaWduIjoicnNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sIlJTQS1SSVBFTUQxNjAiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEw''@;'; put 'put ''NTAwMDQxNCJ9LCJtZDVXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6Im1kNSIsImlkIjoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn0sIlJTQS1NRDUiOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0''@;'; put 'put ''ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9fScpfSwxMzA4OldlPT57InVzZSBzdHJpY3QiO1dlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyIxLjMuMTMyLjAuMTAiOiJzZWNwMjU2azEiLCIxLjMuMTMyLjAuMzMiOiJwMjI0IiwiMS4yLjg0MC4xMDA0NS4zLjEuMSI6InAxOTIiLCIxLjIuODQwLjEwMDQ1''@;'; put 'put ''LjMuMS43IjoicDI1NiIsIjEuMy4xMzIuMC4zNCI6InAzODQiLCIxLjMuMTMyLjAuMzUiOiJwNTIxIn0nKX0sMjk3OTk6V2U9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7Im1vZHAxIjp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIy''@;'; put 'put ''MTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZm''@;'; put 'put ''ZmYifSwibW9kcDIiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZl''@;'; put 'put ''MTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDUiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2Mzdl''@;'; put 'put ''ZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3''@;'; put 'put ''MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTQiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4''@;'; put 'put ''Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2''@;'; put 'put ''M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhm''@;'; put 'put ''YjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2''@;'; put 'put ''NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1''@;'; put 'put ''YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIx''@;'; put 'put ''N2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNm''@;'; put 'put ''Yjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMw''@;'; put 'put ''YmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNiI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3''@;'; put 'put ''Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0''@;'; put 'put ''OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3''@;'; put 'put ''MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQw''@;'; put 'put ''NjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMx''@;'; put 'put ''NDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5''@;'; put 'put ''NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTciOnsiZ2VuIjoiMDIiLCJw''@;'; put 'put ''cmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdl''@;'; put 'put ''YzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVk''@;'; put 'put ''NTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVh''@;'; put 'put ''OGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2''@;'; put 'put ''YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1''@;'; put 'put ''ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdk''@;'; put 'put ''YzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0''@;'; put 'put ''YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUw''@;'; put 'put ''ZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThm''@;'; put 'put ''NjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTgiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNi''@;'; put 'put ''MTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIz''@;'; put 'put ''ZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3''@;'; put 'put ''ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVh''@;'; put 'put ''NmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEw''@;'; put 'put ''OGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMz''@;'; put 'put ''YmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2''@;'; put 'put ''YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIx''@;'; put 'put ''ZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2''@;'; put 'put ''YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRk''@;'; put 'put ''MDczYjkzMWJhM2JjODMyYjY4ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2Vh''@;'; put 'put ''MzA2YjRiY2JjODg2MmY4Mzg1ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNm''@;'; put 'put ''YWYzNmJjMzFlY2ZhMjY4MzU5MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmIn19Jyl9''@;'; put 'put ''LDE4NTk3OldlPT57InVzZSBzdHJpY3QiO1dlLmV4cG9ydHM9e2k4OiI2LjUuNCJ9fSw2MzQ4MDpXZT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjg3NDAiLCJcdTQzZjBcdTRjMzJcdTQ2MDNcdTQ1YTZcdTQ1NzhcdXsyNzI2N31cdTRkNzdcdTQ1YjNcdXsyN2Ni''@;'; put 'put ''MX1cdTRjZTJcdXsyN2NjNX1cdTNiOTVcdTQ3MzZcdTQ3NDRcdTRjNDdcdTRjNDBcdXsyNDJiZn1cdXsyMzYxN31cdXsyNzM1Mn1cdXsyNmU4Yn1cdXsyNzBkMn1cdTRjNTdcdXsyYTM1MX1cdTQ3NGZcdTQ1ZGFcdTRjODVcdXsyN2M2Y31cdTRkMDdcdTRhYTRcdTQ2YTFcdXsyNmIyM31cdTcy''@;'; put 'put ''MjVcdXsyNWE1NH1cdXsyMWE2M31cdXsyM2UwNn1cdXsyM2Y2MX1cdTY2NGRcdTU2ZmIiXSxbIjg3NjciLCJcdTdkOTVcdTU5MWRcdXsyOGJiOX1cdTNkZjRcdTk3MzRcdXsyN2JlZn1cdTViZGJcdXsyMWQ1ZX1cdTVhYTRcdTM2MjVcdXsyOWViMH1cdTVhZDFcdTViYjdcdTVjZmNcdTY3NmVc''@;'; put 'put ''dTg1OTNcdXsyOTk0NX1cdTc0NjFcdTc0OWRcdTM4NzVcdXsyMWQ1M31cdXsyMzY5ZX1cdXsyNjAyMX1cdTNlZWMiXSxbIjg3YTEiLCJcdXsyNThkZX1cdTNhZjVcdTdhZmNcdTlmOTdcdXsyNDE2MX1cdXsyODkwZH1cdXsyMzFlYX1cdXsyMGE4YX1cdXsyMzI1ZX1cdTQzMGFcdTg0ODRcdTlm''@;'; put 'put ''OTZcdTk0MmZcdTQ5MzBcdTg2MTNcdTU4OTZcdTk3NGFcdTkyMThcdTc5ZDBcdTdhMzJcdTY2NjBcdTZhMjlcdTg4OWRcdTc0NGNcdTdiYzVcdTY3ODJcdTdhMmNcdTUyNGZcdTkwNDZcdTM0ZTZcdTczYzRcdXsyNWRiOX1cdTc0YzZcdTlmYzdcdTU3YjNcdTQ5MmZcdTU0NGNcdTQxMzFcdXsy''@;'; put 'put ''MzY4ZX1cdTU4MThcdTdhNzJcdXsyN2I2NX1cdThiOGZcdTQ2YWVcdXsyNmU4OH1cdTQxODFcdXsyNWQ5OX1cdTdiYWVcdXsyMjRiY31cdTlmYzhcdXsyMjRjMX1cdXsyMjRjOX1cdXsyMjRjY31cdTlmYzlcdTg1MDRcdXsyMzViYn1cdTQwYjRcdTlmY2FcdTQ0ZTFcdXsyYWRmZn1cdTYyYzFc''@;'; put 'put ''dTcwNmVcdTlmY2IiXSxbIjg4NDAiLCJcdTMxYzAiLDQsIlx1ezIwMTBjfVx1MzFjNVx1ezIwMGQxfVx1ezIwMGNkfVx1MzFjNlx1MzFjN1x1ezIwMGNifVx1ezIxZmU4fVx1MzFjOFx1ezIwMGNhfVx1MzFjOVx1MzFjYVx1MzFjYlx1MzFjY1x1ezIwMTBlfVx1MzFjZFx1MzFjZVx1MDEwMFx4''@;'; put 'put ''YzFcdTAxY2RceGMwXHUwMTEyXHhjOVx1MDExYVx4YzhcdTAxNGNceGQzXHUwMWQxXHhkMlx1MGZmZlx4Y2FcdTAzMDRcdTFlYmVcdTBmZmZceGNhXHUwMzBjXHUxZWMwXHhjYVx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMjUxXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhl''@;'; put 'put ''Y1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGEiXSxbIjg4YTEiLCJcdTAxZGNceGZjXHUwZmZmXHhlYVx1MDMwNFx1MWViZlx1MGZmZlx4ZWFcdTAzMGNcdTFlYzFceGVhXHUwMjYxXHUyM2RhXHUyM2RiIl0sWyI4OTQwIiwiXHV7MmEz''@;'; put 'put ''YTl9XHV7MjExNDV9Il0sWyI4OTQzIiwiXHU2NTBhIl0sWyI4OTQ2IiwiXHU0ZTNkXHU2ZWRkXHU5ZDRlXHU5MWRmIl0sWyI4OTRjIiwiXHV7Mjc3MzV9XHU2NDkxXHU0ZjFhXHU0ZjI4XHU0ZmE4XHU1MTU2XHU1MTc0XHU1MTljXHU1MWU0XHU1MmExXHU1MmE4XHU1MzNiXHU1MzRlXHU1M2Qx''@;'; put 'put ''XHU1M2Q4XHU1NmUyXHU1OGYwXHU1OTA0XHU1OTA3XHU1OTMyXHU1OTM0XHU1YjY2XHU1YjllXHU1YjlmXHU1YzlhXHU1ZTg2XHU2MDNiXHU2NTg5XHU2N2ZlXHU2ODA0XHU2ODY1XHU2ZDRlXHU3MGJjXHU3NTM1XHU3ZWE0XHU3ZWFjXHU3ZWJhXHU3ZWM3XHU3ZWNmXHU3ZWRmXHU3ZjA2XHU3''@;'; put 'put ''ZjM3XHU4MjdhXHU4MmNmXHU4MzZmXHU4OWM2XHU4YmJlXHU4YmUyXHU4ZjY2XHU4ZjY3XHU4ZjZlIl0sWyI4OWExIiwiXHU3NDExXHU3Y2ZjXHU3ZGNkXHU2OTQ2XHU3YWM5XHU1MjI3Il0sWyI4OWFiIiwiXHU5MThjXHU3OGI4XHU5MTVlXHU4MGJjIl0sWyI4OWIwIiwiXHU4ZDBiXHU4MGY2''@;'; put 'put ''XHV7MjA5ZTd9Il0sWyI4OWI1IiwiXHU4MDlmXHU5ZWM3XHU0Y2NkXHU5ZGM5XHU5ZTBjXHU0YzNlXHV7MjlkZjZ9XHV7MjcwMGV9XHU5ZTBhXHV7MmExMzN9XHUzNWMxIl0sWyI4OWMxIiwiXHU2ZTlhXHU4MjNlXHU3NTE5Il0sWyI4OWM1IiwiXHU0OTExXHU5YTZjXHU5YThmXHU5Zjk5XHU3''@;'; put 'put ''OTg3XHV7Mjg0NmN9XHV7MjFkY2F9XHV7MjA1ZDB9XHV7MjJhZTZ9XHU0ZTI0XHU0ZTgxXHU0ZTgwXHU0ZTg3XHU0ZWJmXHU0ZWViXHU0ZjM3XHUzNDRjXHU0ZmJkXHUzZTQ4XHU1MDAzXHU1MDg4XHUzNDdkXHUzNDkzXHUzNGE1XHU1MTg2XHU1OTA1XHU1MWRiXHU1MWZjXHU1MjA1XHU0ZTg5''@;'; put 'put ''XHU1Mjc5XHU1MjkwXHU1MzI3XHUzNWM3XHU1M2E5XHUzNTUxXHU1M2IwXHUzNTUzXHU1M2MyXHU1NDIzXHUzNTZkXHUzNTcyXHUzNjgxXHU1NDkzXHU1NGEzXHU1NGI0XHU1NGI5XHU1NGQwXHU1NGVmXHU1NTE4XHU1NTIzXHU1NTI4XHUzNTk4XHU1NTNmXHUzNWE1XHUzNWJmXHU1NWQ3XHUz''@;'; put 'put ''NWM1Il0sWyI4YTQwIiwiXHV7MjdkODR9XHU1NTI1Il0sWyI4YTQzIiwiXHV7MjBjNDJ9XHV7MjBkMTV9XHV7MjUxMmJ9XHU1NTkwXHV7MjJjYzZ9XHUzOWVjXHV7MjAzNDF9XHU4ZTQ2XHV7MjRkYjh9XHV7Mjk0ZTV9XHU0MDUzXHV7MjgwYmV9XHU3NzdhXHV7MjJjMzh9XHUzYTM0XHU0N2Q1''@;'; put 'put ''XHV7MjgxNWR9XHV7MjY5ZjJ9XHV7MjRkZWF9XHU2NGRkXHV7MjBkN2N9XHV7MjBmYjR9XHV7MjBjZDV9XHV7MjEwZjR9XHU2NDhkXHU4ZTdlXHV7MjBlOTZ9XHV7MjBjMGJ9XHV7MjBmNjR9XHV7MjJjYTl9XHV7MjgyNTZ9XHV7MjQ0ZDN9Il0sWyI4YTY0IiwiXHV7MjBkNDZ9XHV7MjlhNGR9''@;'; put 'put ''XHV7MjgwZTl9XHU0N2Y0XHV7MjRlYTd9XHV7MjJjYzJ9XHU5YWIyXHUzYTY3XHV7Mjk1ZjR9XHUzZmVkXHUzNTA2XHV7MjUyYzd9XHV7Mjk3ZDR9XHV7Mjc4Yzh9XHV7MjJkNDR9XHU5ZDZlXHU5ODE1Il0sWyI4YTc2IiwiXHU0M2Q5XHV7MjYwYTV9XHU2NGI0XHU1NGUzXHV7MjJkNGN9XHV7''@;'; put 'put ''MjJiY2F9XHV7MjEwNzd9XHUzOWZiXHV7MjEwNmZ9Il0sWyI4YWExIiwiXHV7MjY2ZGF9XHV7MjY3MTZ9XHV7Mjc5YTB9XHU2NGVhXHV7MjUwNTJ9XHV7MjBjNDN9XHU4ZTY4XHV7MjIxYTF9XHV7MjhiNGN9XHV7MjA3MzF9Il0sWyI4YWFjIiwiXHU0ODBiXHV7MjAxYTl9XHUzZmZhXHU1ODcz''@;'; put 'put ''XHV7MjJkOGR9Il0sWyI4YWIyIiwiXHV7MjQ1Yzh9XHV7MjA0ZmN9XHV7MjYwOTd9XHV7MjBmNGN9XHV7MjBkOTZ9XHU1NTc5XHU0MGJiXHU0M2JhIl0sWyI4YWJiIiwiXHU0YWI0XHV7MjJhNjZ9XHV7MjEwOWR9XHU4MWFhXHU5OGY1XHV7MjBkOWN9XHU2Mzc5XHUzOWZlXHV7MjI3NzV9XHU4''@;'; put 'put ''ZGMwXHU1NmExXHU2NDdjXHUzZTQzIl0sWyI4YWM5IiwiXHV7MmE2MDF9XHV7MjBlMDl9XHV7MjJhY2Z9XHV7MjJjYzl9Il0sWyI4YWNlIiwiXHV7MjEwYzh9XHV7MjM5YzJ9XHUzOTkyXHUzYTA2XHV7MjgyOWJ9XHUzNTc4XHV7MjVlNDl9XHV7MjIwYzd9XHU1NjUyXHV7MjBmMzF9XHV7MjJj''@;'; put 'put ''YjJ9XHV7Mjk3MjB9XHUzNGJjXHU2YzNkXHV7MjRlM2J9Il0sWyI4YWRmIiwiXHV7Mjc1NzR9XHV7MjJlOGJ9XHV7MjIyMDh9XHV7MmE2NWJ9XHV7MjhjY2R9XHV7MjBlN2F9XHV7MjBjMzR9XHV7MjY4MWN9XHU3ZjkzXHV7MjEwY2Z9XHV7MjI4MDN9XHV7MjI5Mzl9XHUzNWZiXHV7MjUxZTN9''@;'; put 'put ''XHV7MjBlOGN9XHV7MjBmOGR9XHV7MjBlYWF9XHUzZjkzXHV7MjBmMzB9XHV7MjBkNDd9XHV7MjExNGZ9XHV7MjBlNGN9Il0sWyI4YWY2IiwiXHV7MjBlYWJ9XHV7MjBiYTl9XHV7MjBkNDh9XHV7MjEwYzB9XHV7MjExM2R9XHUzZmY5XHV7MjI2OTZ9XHU2NDMyXHV7MjBmYWR9Il0sWyI4YjQw''@;'; put 'put ''IiwiXHV7MjMzZjR9XHV7Mjc2Mzl9XHV7MjJiY2V9XHV7MjBkN2V9XHV7MjBkN2Z9XHV7MjJjNTF9XHV7MjJjNTV9XHUzYTE4XHV7MjBlOTh9XHV7MjEwYzd9XHV7MjBmMmV9XHV7MmE2MzJ9XHV7MjZiNTB9XHV7MjhjZDJ9XHV7MjhkOTl9XHV7MjhjY2F9XHU5NWFhXHU1NGNjXHU4MmM0XHU1''@;'; put 'put ''NWI5Il0sWyI4YjU1IiwiXHV7MjllYzN9XHU5YzI2XHU5YWI2XHV7Mjc3NWV9XHV7MjJkZWV9XHU3MTQwXHU4MTZkXHU4MGVjXHU1YzFjXHV7MjY1NzJ9XHU4MTM0XHUzNzk3XHU1MzVmXHV7MjgwYmR9XHU5MWI2XHV7MjBlZmF9XHV7MjBlMGZ9XHV7MjBlNzd9XHV7MjBlZmJ9XHUzNWRkXHV7''@;'; put 'put ''MjRkZWJ9XHUzNjA5XHV7MjBjZDZ9XHU1NmFmXHV7MjI3YjV9XHV7MjEwYzl9XHV7MjBlMTB9XHV7MjBlNzh9XHV7MjEwNzh9XHV7MjExNDh9XHV7MjgyMDd9XHV7MjE0NTV9XHV7MjBlNzl9XHV7MjRlNTB9XHV7MjJkYTR9XHU1YTU0XHV7MjEwMWR9XHV7MjEwMWV9XHV7MjEwZjV9XHV7MjEw''@;'; put 'put ''ZjZ9XHU1NzljXHV7MjBlMTF9Il0sWyI4YmExIiwiXHV7Mjc2OTR9XHV7MjgyY2R9XHV7MjBmYjV9XHV7MjBlN2J9XHV7MjUxN2V9XHUzNzAzXHV7MjBmYjZ9XHV7MjExODB9XHV7MjUyZDh9XHV7MmEyYmR9XHV7MjQ5ZGF9XHV7MjE4M2F9XHV7MjQxNzd9XHV7MjgyN2N9XHU1ODk5XHU1MjY4''@;'; put 'put ''XHUzNjFhXHV7MjU3M2R9XHU3YmIyXHU1YjY4XHU0ODAwXHU0YjJjXHU5ZjI3XHU0OWU3XHU5YzFmXHU5YjhkXHV7MjViNzR9XHV7MjMxM2R9XHU1NWZiXHUzNWYyXHU1Njg5XHU0ZTI4XHU1OTAyXHV7MjFiYzF9XHV7MmY4Nzh9XHU5NzUxXHV7MjAwODZ9XHU0ZTViXHU0ZWJiXHUzNTNlXHU1''@;'; put 'put ''YzIzXHU1ZjUxXHU1ZmM0XHUzOGZhXHU2MjRjXHU2NTM1XHU2YjdhXHU2YzM1XHU2YzNhXHU3MDZjXHU3MjJiXHU0ZTJjXHU3MmFkXHV7MjQ4ZTl9XHU3ZjUyXHU3OTNiXHU3Y2Y5XHU3ZjUzXHV7MjYyNmF9XHUzNGMxIl0sWyI4YmRlIiwiXHV7MjYzNGJ9XHU4MDAyXHU4MDgwXHV7MjY2MTJ9''@;'; put 'put ''XHV7MjY5NTF9XHU1MzVkXHU4ODY0XHU4OWMxXHV7Mjc4YjJ9XHU4YmEwXHU4ZDFkXHU5NDg1XHU5NTc4XHU5NTdmXHU5NWU4XHV7MjhlMGZ9XHU5N2U2XHU5ODc1XHU5OGNlXHU5OGRlXHU5OTYzXHV7Mjk4MTB9XHU5YzdjXHU5ZTFmXHU5ZWM0XHU2YjZmXHVmOTA3XHU0ZTM3XHV7MjAwODd9''@;'; put 'put ''XHU5NjFkXHU2MjM3XHU5NGEyIl0sWyI4YzQwIiwiXHU1MDNiXHU2ZGZlXHV7MjljNzN9XHU5ZmE2XHUzZGM5XHU4ODhmXHV7MjQxNGV9XHU3MDc3XHU1Y2Y1XHU0YjIwXHV7MjUxY2R9XHUzNTU5XHV7MjVkMzB9XHU2MTIyXHV7MjhhMzJ9XHU4ZmE3XHU5MWY2XHU3MTkxXHU2NzE5XHU3M2Jh''@;'; put 'put ''XHV7MjMyODF9XHV7MmExMDd9XHUzYzhiXHV7MjE5ODB9XHU0YjEwXHU3OGU0XHU3NDAyXHU1MWFlXHV7Mjg3MGZ9XHU0MDA5XHU2YTYzXHV7MmEyYmF9XHU0MjIzXHU4NjBmXHV7MjBhNmZ9XHU3YTJhXHV7Mjk5NDd9XHV7MjhhZWF9XHU5NzU1XHU3MDRkXHU1MzI0XHV7MjIwN2V9XHU5M2Y0''@;'; put 'put ''XHU3NmQ5XHV7Mjg5ZTN9XHU5ZmE3XHU3N2RkXHU0ZWEzXHU0ZmYwXHU1MGJjXHU0ZTJmXHU0ZjE3XHU5ZmE4XHU1NDM0XHU3ZDhiXHU1ODkyXHU1OGQwXHV7MjFkYjZ9XHU1ZTkyXHU1ZTk5XHU1ZmMyXHV7MjI3MTJ9XHU2NThiIl0sWyI4Y2ExIiwiXHV7MjMzZjl9XHU2OTE5XHU2YTQzXHV7''@;'; put 'put ''MjNjNjN9XHU2Y2ZmIl0sWyI4Y2E3IiwiXHU3MjAwXHV7MjQ1MDV9XHU3MzhjXHUzZWRiXHV7MjRhMTN9XHU1YjE1XHU3NGI5XHU4YjgzXHV7MjVjYTR9XHV7MjU2OTV9XHU3YTkzXHU3YmVjXHU3Y2MzXHU3ZTZjXHU4MmY4XHU4NTk3XHU5ZmE5XHU4ODkwXHU5ZmFhXHU4ZWI5XHU5ZmFiXHU4''@;'; put 'put ''ZmNmXHU4NTVmXHU5OWUwXHU5MjIxXHU5ZmFjXHV7MjhkYjl9XHV7MjE0M2Z9XHU0MDcxXHU0MmEyXHU1YTFhIl0sWyI4Y2M5IiwiXHU5ODY4XHU2NzZiXHU0Mjc2XHU1NzNkIl0sWyI4Y2NlIiwiXHU4NWQ2XHV7MjQ5N2J9XHU4MmJmXHV7MjcxMGR9XHU0YzgxXHV7MjZkNzR9XHU1ZDdiXHV7''@;'; put 'put ''MjZiMTV9XHV7MjZmYmV9XHU5ZmFkXHU5ZmFlXHU1Yjk2XHU5ZmFmXHU2NmU3XHU3ZTViXHU2ZTU3XHU3OWNhXHUzZDg4XHU0NGMzXHV7MjMyNTZ9XHV7MjI3OTZ9XHU0MzlhXHU0NTM2Il0sWyI4Y2U2IiwiXHU1Y2Q1XHV7MjNiMWF9XHU4YWY5XHU1Yzc4XHUzZDEyXHV7MjM1NTF9XHU1ZDc4''@;'; put 'put ''XHU5ZmIyXHU3MTU3XHU0NTU4XHV7MjQwZWN9XHV7MjFlMjN9XHU0Yzc3XHUzOTc4XHUzNDRhXHV7MjAxYTR9XHV7MjZjNDF9XHU4YWNjXHU0ZmI0XHV7MjAyMzl9XHU1OWJmXHU4MTZjXHU5ODU2XHV7Mjk4ZmF9XHU1ZjNiIl0sWyI4ZDQwIiwiXHV7MjBiOWZ9Il0sWyI4ZDQyIiwiXHV7MjIx''@;'; put 'put ''YzF9XHV7Mjg5NmR9XHU0MTAyXHU0NmJiXHV7MjkwNzl9XHUzZjA3XHU5ZmIzXHV7MmExYjV9XHU0MGY4XHUzN2Q2XHU0NmY3XHV7MjZjNDZ9XHU0MTdjXHV7Mjg2YjJ9XHV7MjczZmZ9XHU0NTZkXHUzOGQ0XHV7MjU0OWF9XHU0NTYxXHU0NTFiXHU0ZDg5XHU0YzdiXHU0ZDc2XHU0NWVhXHUz''@;'; put 'put ''ZmM4XHV7MjRiMGZ9XHUzNjYxXHU0NGRlXHU0NGJkXHU0MWVkXHU1ZDNlXHU1ZDQ4XHU1ZDU2XHUzZGZjXHUzODBmXHU1ZGE0XHU1ZGI5XHUzODIwXHUzODM4XHU1ZTQyXHU1ZWJkXHU1ZjI1XHU1ZjgzXHUzOTA4XHUzOTE0XHUzOTNmXHUzOTRkXHU2MGQ3XHU2MTNkXHU1Y2U1XHUzOTg5XHU2''@;'; put 'put ''MWI3XHU2MWI5XHU2MWNmXHUzOWI4XHU2MjJjXHU2MjkwXHU2MmU1XHU2MzE4XHUzOWY4XHU1NmIxIl0sWyI4ZGExIiwiXHUzYTAzXHU2M2UyXHU2M2ZiXHU2NDA3XHU2NDVhXHUzYTRiXHU2NGMwXHU1ZDE1XHU1NjIxXHU5ZjlmXHUzYTk3XHU2NTg2XHUzYWJkXHU2NWZmXHU2NjUzXHUzYWYy''@;'; put 'put ''XHU2NjkyXHUzYjIyXHU2NzE2XHUzYjQyXHU2N2E0XHU2ODAwXHUzYjU4XHU2ODRhXHU2ODg0XHUzYjcyXHUzYjcxXHUzYjdiXHU2OTA5XHU2OTQzXHU3MjVjXHU2OTY0XHU2OTlmXHU2OTg1XHUzYmJjXHU2OWQ2XHUzYmRkXHU2YTY1XHU2YTc0XHU2YTcxXHU2YTgyXHUzYmVjXHU2YTk5XHUz''@;'; put 'put ''YmYyXHU2YWFiXHU2YWI1XHU2YWQ0XHU2YWY2XHU2YjgxXHU2YmMxXHU2YmVhXHU2Yzc1XHU2Y2FhXHUzY2NiXHU2ZDAyXHU2ZDA2XHU2ZDI2XHU2ZDgxXHUzY2VmXHU2ZGE0XHU2ZGIxXHU2ZTE1XHU2ZTE4XHU2ZTI5XHU2ZTg2XHV7Mjg5YzB9XHU2ZWJiXHU2ZWUyXHU2ZWRhXHU5ZjdmXHU2''@;'; put 'put ''ZWU4XHU2ZWU5XHU2ZjI0XHU2ZjM0XHUzZDQ2XHV7MjNmNDF9XHU2ZjgxXHU2ZmJlXHUzZDZhXHUzZDc1XHU3MWI3XHU1Yzk5XHUzZDhhXHU3MDJjXHUzZDkxXHU3MDUwXHU3MDU0XHU3MDZmXHU3MDdmXHU3MDg5XHV7MjAzMjV9XHU0M2MxXHUzNWYxXHV7MjBlZDh9Il0sWyI4ZTQwIiwiXHV7''@;'; put 'put ''MjNlZDd9XHU1N2JlXHV7MjZlZDN9XHU3MTNlXHV7MjU3ZTB9XHUzNjRlXHU2OWEyXHV7MjhiZTl9XHU1Yjc0XHU3YTQ5XHV7MjU4ZTF9XHV7Mjk0ZDl9XHU3YTY1XHU3YTdkXHV7MjU5YWN9XHU3YWJiXHU3YWIwXHU3YWMyXHU3YWMzXHU3MWQxXHV7MjY0OGR9XHU0MWNhXHU3YWRhXHU3YWRk''@;'; put 'put ''XHU3YWVhXHU0MWVmXHU1NGIyXHV7MjVjMDF9XHU3YjBiXHU3YjU1XHU3YjI5XHV7MjUzMGV9XHV7MjVjZmV9XHU3YmEyXHU3YjZmXHU4MzljXHV7MjViYjR9XHV7MjZjN2Z9XHU3YmQwXHU4NDIxXHU3YjkyXHU3YmI4XHV7MjVkMjB9XHUzZGFkXHV7MjVjNjV9XHU4NDkyXHU3YmZhXHU3YzA2''@;'; put 'put ''XHU3YzM1XHV7MjVjYzF9XHU3YzQ0XHU3YzgzXHV7MjQ4ODJ9XHU3Y2E2XHU2NjdkXHV7MjQ1Nzh9XHU3Y2M5XHU3Y2M3XHU3Y2U2XHU3Yzc0XHU3Y2YzXHU3Y2Y1XHU3Y2NlIl0sWyI4ZWExIiwiXHU3ZTY3XHU0NTFkXHV7MjZlNDR9XHU3ZDVkXHV7MjZlZDZ9XHU3NDhkXHU3ZDg5XHU3ZGFi''@;'; put 'put ''XHU3MTM1XHU3ZGIzXHU3ZGQyXHV7MjQwNTd9XHV7MjYwMjl9XHU3ZGU0XHUzZDEzXHU3ZGY1XHV7MjE3Zjl9XHU3ZGU1XHV7MjgzNmR9XHU3ZTFkXHV7MjYxMjF9XHV7MjYxNWF9XHU3ZTZlXHU3ZTkyXHU0MzJiXHU5NDZjXHU3ZTI3XHU3ZjQwXHU3ZjQxXHU3ZjQ3XHU3OTM2XHV7MjYyZDB9''@;'; put 'put ''XHU5OWUxXHU3Zjk3XHV7MjYzNTF9XHU3ZmEzXHV7MjE2NjF9XHV7MjAwNjh9XHU0NTVjXHV7MjM3NjZ9XHU0NTAzXHV7MjgzM2F9XHU3ZmZhXHV7MjY0ODl9XHU4MDA1XHU4MDA4XHU4MDFkXHU4MDI4XHU4MDJmXHV7MmEwODd9XHV7MjZjYzN9XHU4MDNiXHU4MDNjXHU4MDYxXHV7MjI3MTR9''@;'; put 'put ''XHU0OTg5XHV7MjY2MjZ9XHV7MjNkZTN9XHV7MjY2ZTh9XHU2NzI1XHU4MGE3XHV7MjhhNDh9XHU4MTA3XHU4MTFhXHU1OGIwXHV7MjI2ZjZ9XHU2YzdmXHV7MjY0OTh9XHV7MjRmYjh9XHU2NGU3XHV7MjE0OGF9XHU4MjE4XHV7MjE4NWV9XHU2YTUzXHV7MjRhNjV9XHV7MjRhOTV9XHU0NDdh''@;'; put 'put ''XHU4MjI5XHV7MjBiMGR9XHV7MjZhNTJ9XHV7MjNkN2V9XHU0ZmY5XHV7MjE0ZmR9XHU4NGUyXHU4MzYyXHV7MjZiMGF9XHV7MjQ5YTd9XHV7MjM1MzB9XHV7MjE3NzN9XHV7MjNkZjh9XHU4MmFhXHU2OTFiXHV7MmY5OTR9XHU0MWRiIl0sWyI4ZjQwIiwiXHU4NTRiXHU4MmQwXHU4MzFhXHV7''@;'; put 'put ''MjBlMTZ9XHV7MjE3YjR9XHUzNmMxXHV7MjMxN2R9XHV7MjM1NWF9XHU4MjdiXHU4MmUyXHU4MzE4XHV7MjNlOGJ9XHV7MjZkYTN9XHV7MjZiMDV9XHV7MjZiOTd9XHV7MjM1Y2V9XHUzZGJmXHU4MzFkXHU1NWVjXHU4Mzg1XHU0NTBiXHV7MjZkYTV9XHU4M2FjXHU4M2MxXHU4M2QzXHUzNDdl''@;'; put 'put ''XHV7MjZlZDR9XHU2YTU3XHU4NTVhXHUzNDk2XHV7MjZlNDJ9XHV7MjJlZWZ9XHU4NDU4XHV7MjViZTR9XHU4NDcxXHUzZGQzXHU0NGU0XHU2YWE3XHU4NDRhXHV7MjNjYjV9XHU3OTU4XHU4NGE4XHV7MjZiOTZ9XHV7MjZlNzd9XHV7MjZlNDN9XHU4NGRlXHU4NDBmXHU4MzkxXHU0NGEwXHU4''@;'; put 'put ''NDkzXHU4NGU0XHV7MjVjOTF9XHU0MjQwXHV7MjVjYzB9XHU0NTQzXHU4NTM0XHU1YWYyXHV7MjZlOTl9XHU0NTI3XHU4NTczXHU0NTE2XHU2N2JmXHU4NjE2Il0sWyI4ZmExIiwiXHV7Mjg2MjV9XHV7Mjg2M2J9XHU4NWMxXHV7MjcwODh9XHU4NjAyXHV7MjE1ODJ9XHV7MjcwY2R9XHV7MmY5''@;'; put 'put ''YjJ9XHU0NTZhXHU4NjI4XHUzNjQ4XHV7MjE4YTJ9XHU1M2Y3XHV7MjczOWF9XHU4NjdlXHU4NzcxXHV7MmEwZjh9XHU4N2VlXHV7MjJjMjd9XHU4N2IxXHU4N2RhXHU4ODBmXHU1NjYxXHU4NjZjXHU2ODU2XHU0NjBmXHU4ODQ1XHU4ODQ2XHV7Mjc1ZTB9XHV7MjNkYjl9XHV7Mjc1ZTR9XHU4''@;'; put 'put ''ODVlXHU4ODljXHU0NjViXHU4OGI0XHU4OGI1XHU2M2MxXHU4OGM1XHU3Nzc3XHV7Mjc3MGZ9XHU4OTg3XHU4OThhXHU4OWE2XHU4OWE5XHU4OWE3XHU4OWJjXHV7MjhhMjV9XHU4OWU3XHV7Mjc5MjR9XHV7MjdhYmR9XHU4YTljXHU3NzkzXHU5MWZlXHU4YTkwXHV7MjdhNTl9XHU3YWU5XHV7''@;'; put 'put ''MjdiM2F9XHV7MjNmOGZ9XHU0NzEzXHV7MjdiMzh9XHU3MTdjXHU4YjBjXHU4YjFmXHV7MjU0MzB9XHV7MjU1NjV9XHU4YjNmXHU4YjRjXHU4YjRkXHU4YWE5XHV7MjRhN2F9XHU4YjkwXHU4YjliXHU4YWFmXHV7MjE2ZGZ9XHU0NjE1XHU4ODRmXHU4YzliXHV7MjdkNTR9XHV7MjdkOGZ9XHV7''@;'; put 'put ''MmY5ZDR9XHUzNzI1XHV7MjdkNTN9XHU4Y2Q2XHV7MjdkOTh9XHV7MjdkYmR9XHU4ZDEyXHU4ZDAzXHV7MjE5MTB9XHU4Y2RiXHU3MDVjXHU4ZDExXHV7MjRjYzl9XHUzZWQwXHU4ZDc3Il0sWyI5MDQwIiwiXHU4ZGE5XHV7MjgwMDJ9XHV7MjEwMTR9XHV7MjQ5OGF9XHUzYjdjXHV7MjgxYmN9''@;'; put 'put ''XHV7MjcxMGN9XHU3YWU3XHU4ZWFkXHU4ZWI2XHU4ZWMzXHU5MmQ0XHU4ZjE5XHU4ZjJkXHV7MjgzNjV9XHV7Mjg0MTJ9XHU4ZmE1XHU5MzAzXHV7MmEyOWZ9XHV7MjBhNTB9XHU4ZmIzXHU0OTJhXHV7Mjg5ZGV9XHV7Mjg1M2R9XHV7MjNkYmJ9XHU1ZWY4XHV7MjMyNjJ9XHU4ZmY5XHV7MmEw''@;'; put 'put ''MTR9XHV7Mjg2YmN9XHV7Mjg1MDF9XHV7MjIzMjV9XHUzOTgwXHV7MjZlZDd9XHU5MDM3XHV7Mjg1M2N9XHV7MjdhYmV9XHU5MDYxXHV7Mjg1NmN9XHV7Mjg2MGJ9XHU5MGE4XHV7Mjg3MTN9XHU5MGM0XHV7Mjg2ZTZ9XHU5MGFlXHU5MGZkXHU5MTY3XHUzYWYwXHU5MWE5XHU5MWM0XHU3Y2Fj''@;'; put 'put ''XHV7Mjg5MzN9XHV7MjFlODl9XHU5MjBlXHU2YzlmXHU5MjQxXHU5MjYyXHV7MjU1Yjl9XHU5MmI5XHV7MjhhYzZ9XHV7MjNjOWJ9XHV7MjhiMGN9XHV7MjU1ZGJ9Il0sWyI5MGExIiwiXHV7MjBkMzF9XHU5MzJjXHU5MzZiXHV7MjhhZTF9XHV7MjhiZWJ9XHU3MDhmXHU1YWMzXHV7MjhhZTJ9''@;'; put 'put ''XHV7MjhhZTV9XHU0OTY1XHU5MjQ0XHV7MjhiZWN9XHV7MjhjMzl9XHV7MjhiZmZ9XHU5MzczXHU5NDViXHU4ZWJjXHU5NTg1XHU5NWE2XHU5NDI2XHU5NWEwXHU2ZmY2XHU0MmI5XHV7MjI2N2F9XHV7Mjg2ZDh9XHV7MjEyN2N9XHV7MjNlMmV9XHU0OWRmXHU2YzFjXHU5NjdiXHU5Njk2XHU0''@;'; put 'put ''MTZjXHU5NmEzXHV7MjZlZDV9XHU2MWRhXHU5NmI2XHU3OGY1XHV7MjhhZTB9XHU5NmJkXHU1M2NjXHU0OWExXHV7MjZjYjh9XHV7MjAyNzR9XHV7MjY0MTB9XHV7MjkwYWZ9XHV7MjkwZTV9XHV7MjRhZDF9XHV7MjE5MTV9XHV7MjMzMGF9XHU5NzMxXHU4NjQyXHU5NzM2XHU0YTBmXHU0NTNk''@;'; put 'put ''XHU0NTg1XHV7MjRhZTl9XHU3MDc1XHU1YjQxXHU5NzFiXHU5NzVjXHV7MjkxZDV9XHU5NzU3XHU1YjRhXHV7MjkxZWJ9XHU5NzVmXHU5NDI1XHU1MGQwXHV7MjMwYjd9XHV7MjMwYmN9XHU5Nzg5XHU5NzlmXHU5N2IxXHU5N2JlXHU5N2MwXHU5N2QyXHU5N2UwXHV7MjU0NmN9XHU5N2VlXHU3''@;'; put 'put ''NDFjXHV7Mjk0MzN9XHU5N2ZmXHU5N2Y1XHV7Mjk0MWR9XHV7Mjc5N2F9XHU0YWQxXHU5ODM0XHU5ODMzXHU5ODRiXHU5ODY2XHUzYjBlXHV7MjcxNzV9XHUzZDUxXHV7MjA2MzB9XHV7MjQxNWN9Il0sWyI5MTQwIiwiXHV7MjU3MDZ9XHU5OGNhXHU5OGI3XHU5OGM4XHU5OGM3XHU0YWZmXHV7''@;'; put 'put ''MjZkMjd9XHV7MjE2ZDN9XHU1NWIwXHU5OGUxXHU5OGU2XHU5OGVjXHU5Mzc4XHU5OTM5XHV7MjRhMjl9XHU0YjcyXHV7Mjk4NTd9XHV7Mjk5MDV9XHU5OWY1XHU5YTBjXHU5YTNiXHU5YTEwXHU5YTU4XHV7MjU3MjV9XHUzNmM0XHV7MjkwYjF9XHV7MjliZDV9XHU5YWUwXHU5YWUyXHV7Mjli''@;'; put 'put ''MDV9XHU5YWY0XHU0YzBlXHU5YjE0XHU5YjJkXHV7Mjg2MDB9XHU1MDM0XHU5YjM0XHV7MjY5YTh9XHUzOGMzXHV7MjMwN2R9XHU5YjUwXHU5YjQwXHV7MjlkM2V9XHU1YTQ1XHV7MjE4NjN9XHU5YjhlXHV7MjQyNGJ9XHU5YzAyXHU5YmZmXHU5YzBjXHV7MjllNjh9XHU5ZGQ0XHV7MjlmYjd9''@;'; put 'put ''XHV7MmExOTJ9XHV7MmExYWJ9XHV7MmEwZTF9XHV7MmExMjN9XHV7MmExZGZ9XHU5ZDdlXHU5ZDgzXHV7MmExMzR9XHU5ZTBlXHU2ODg4Il0sWyI5MWExIiwiXHU5ZGM0XHV7MjIxNWJ9XHV7MmExOTN9XHV7MmEyMjB9XHV7MjE5M2J9XHV7MmEyMzN9XHU5ZDM5XHV7MmEwYjl9XHV7MmEyYjR9''@;'; put 'put ''XHU5ZTkwXHU5ZTk1XHU5ZTllXHU5ZWEyXHU0ZDM0XHU5ZWFhXHU5ZWFmXHV7MjQzNjR9XHU5ZWMxXHUzYjYwXHUzOWU1XHUzZDFkXHU0ZjMyXHUzN2JlXHV7MjhjMmJ9XHU5ZjAyXHU5ZjA4XHU0Yjk2XHU5NDI0XHV7MjZkYTJ9XHU5ZjE3XHU5ZjE2XHU5ZjM5XHU1NjlmXHU1NjhhXHU5ZjQ1''@;'; put 'put ''XHU5OWI4XHV7MjkwOGJ9XHU5N2YyXHU4NDdmXHU5ZjYyXHU5ZjY5XHU3YWRjXHU5ZjhlXHU3MjE2XHU0YmJlXHV7MjQ5NzV9XHV7MjQ5YmJ9XHU3MTc3XHV7MjQ5Zjh9XHV7MjQzNDh9XHV7MjRhNTF9XHU3MzllXHV7MjhiZGF9XHV7MjE4ZmF9XHU3OTlmXHV7Mjg5N2V9XHV7MjhlMzZ9XHU5''@;'; put 'put ''MzY5XHU5M2YzXHV7MjhhNDR9XHU5MmVjXHU5MzgxXHU5M2NiXHV7Mjg5NmN9XHV7MjQ0Yjl9XHU3MjE3XHUzZWViXHU3NzcyXHU3YTQzXHU3MGQwXHV7MjQ0NzN9XHV7MjQzZjh9XHU3MTdlXHV7MjE3ZWZ9XHU3MGEzXHV7MjE4YmV9XHV7MjM1OTl9XHUzZWM3XHV7MjE4ODV9XHV7MjU0MmZ9''@;'; put 'put ''XHV7MjE3Zjh9XHUzNzIyXHV7MjE2ZmJ9XHV7MjE4Mzl9XHUzNmUxXHV7MjE3NzR9XHV7MjE4ZDF9XHV7MjVmNGJ9XHUzNzIzXHV7MjE2YzB9XHU1NzViXHV7MjRhMjV9XHV7MjEzZmV9XHV7MjEyYTh9Il0sWyI5MjQwIiwiXHV7MjEzYzZ9XHV7MjE0YjZ9XHU4NTAzXHV7MjM2YTZ9XHU4NTAz''@;'; put 'put ''XHU4NDU1XHV7MjQ5OTR9XHV7MjcxNjV9XHV7MjNlMzF9XHV7MjU1NWN9XHV7MjNlZmJ9XHV7MjcwNTJ9XHU0NGY0XHV7MjM2ZWV9XHV7Mjk5OWR9XHV7MjZmMjZ9XHU2N2Y5XHUzNzMzXHUzYzE1XHUzZGU3XHU1ODZjXHV7MjE5MjJ9XHU2ODEwXHU0MDU3XHV7MjM3M2Z9XHV7MjQwZTF9XHV7''@;'; put 'put ''MjQwOGJ9XHV7MjQxMGZ9XHV7MjZjMjF9XHU1NGNiXHU1NjllXHV7MjY2YjF9XHU1NjkyXHV7MjBmZGZ9XHV7MjBiYTh9XHV7MjBlMGR9XHU5M2M2XHV7MjhiMTN9XHU5MzljXHU0ZWY4XHU1MTJiXHUzODE5XHV7MjQ0MzZ9XHU0ZWJjXHV7MjA0NjV9XHV7MjAzN2Z9XHU0ZjRiXHU0ZjhhXHV7''@;'; put 'put ''MjU2NTF9XHU1YTY4XHV7MjAxYWJ9XHV7MjAzY2J9XHUzOTk5XHV7MjAzMGF9XHV7MjA0MTR9XHUzNDM1XHU0ZjI5XHV7MjAyYzB9XHV7MjhlYjN9XHV7MjAyNzV9XHU4YWRhXHV7MjAyMGN9XHU0ZTk4Il0sWyI5MmExIiwiXHU1MGNkXHU1MTBkXHU0ZmEyXHU0ZjAzXHV7MjRhMGV9XHV7MjNl''@;'; put 'put ''OGF9XHU0ZjQyXHU1MDJlXHU1MDZjXHU1MDgxXHU0ZmNjXHU0ZmU1XHU1MDU4XHU1MGZjXHU1MTU5XHU1MTViXHU1MTVkXHU1MTVlXHU2ZTc2XHV7MjM1OTV9XHV7MjNlMzl9XHV7MjNlYmZ9XHU2ZDcyXHV7MjE4ODR9XHV7MjNlODl9XHU1MWE4XHU1MWMzXHV7MjA1ZTB9XHU0NGRkXHV7MjA0''@;'; put 'put ''YTN9XHV7MjA0OTJ9XHV7MjA0OTF9XHU4ZDdhXHV7MjhhOWN9XHV7MjA3MGV9XHU1MjU5XHU1MmE0XHV7MjA4NzN9XHU1MmUxXHU5MzZlXHU0NjdhXHU3MThjXHV7MjQzOGN9XHV7MjBjMjB9XHV7MjQ5YWN9XHV7MjEwZTR9XHU2OWQxXHV7MjBlMWR9XHU3NDc5XHUzZWRlXHU3NDk5XHU3NDE0''@;'; put 'put ''XHU3NDU2XHU3Mzk4XHU0YjhlXHV7MjRhYmN9XHV7MjQwOGR9XHU1M2QwXHUzNTg0XHU3MjBmXHV7MjQwYzl9XHU1NWI0XHV7MjAzNDV9XHU1NGNkXHV7MjBiYzZ9XHU1NzFkXHU5MjVkXHU5NmY0XHU5MzY2XHU1N2RkXHU1NzhkXHU1NzdmXHUzNjNlXHU1OGNiXHU1YTk5XHV7MjhhNDZ9XHV7''@;'; put 'put ''MjE2ZmF9XHV7MjE3NmZ9XHV7MjE3MTB9XHU1YTJjXHU1OWI4XHU5MjhmXHU1YTdlXHU1YWNmXHU1YTEyXHV7MjU5NDZ9XHV7MjE5ZjN9XHV7MjE4NjF9XHV7MjQyOTV9XHUzNmY1XHU2ZDA1XHU3NDQzXHU1YTIxXHV7MjVlODN9Il0sWyI5MzQwIiwiXHU1YTgxXHV7MjhiZDd9XHV7MjA0MTN9''@;'; put 'put ''XHU5M2UwXHU3NDhjXHV7MjEzMDN9XHU3MTA1XHU0OTcyXHU5NDA4XHV7Mjg5ZmJ9XHU5M2JkXHUzN2EwXHU1YzFlXHU1YzllXHU1ZTVlXHU1ZTQ4XHV7MjE5OTZ9XHV7MjE5N2N9XHV7MjNhZWV9XHU1ZWNkXHU1YjRmXHV7MjE5MDN9XHV7MjE5MDR9XHUzNzAxXHV7MjE4YTB9XHUzNmRkXHV7''@;'; put 'put ''MjE2ZmV9XHUzNmQzXHU4MTJhXHV7MjhhNDd9XHV7MjFkYmF9XHV7MjM0NzJ9XHV7Mjg5YTh9XHU1ZjBjXHU1ZjBlXHV7MjE5Mjd9XHV7MjE3YWJ9XHU1YTZiXHV7MjE3M2J9XHU1YjQ0XHU4NjE0XHV7Mjc1ZmR9XHU4ODYwXHU2MDdlXHV7MjI4NjB9XHV7MjI2MmJ9XHU1ZmRiXHUzZWI4XHV7''@;'; put 'put ''MjI1YWZ9XHV7MjI1YmV9XHV7MjkwODh9XHV7MjZmNzN9XHU2MWMwXHV7MjAwM2V9XHV7MjAwNDZ9XHV7MjI2MWJ9XHU2MTk5XHU2MTk4XHU2MDc1XHV7MjJjOWJ9XHV7MjJkMDd9XHV7MjQ2ZDR9XHV7MjkxNGR9Il0sWyI5M2ExIiwiXHU2NDcxXHV7MjQ2NjV9XHV7MjJiNmF9XHUzYTI5XHV7''@;'; put 'put ''MjJiMjJ9XHV7MjM0NTB9XHV7Mjk4ZWF9XHV7MjJlNzh9XHU2MzM3XHV7MmE0NWJ9XHU2NGI2XHU2MzMxXHU2M2QxXHV7MjQ5ZTN9XHV7MjJkNjd9XHU2MmE0XHV7MjJjYTF9XHU2NDNiXHU2NTZiXHU2OTcyXHUzYmY0XHV7MjMwOGV9XHV7MjMyYWR9XHV7MjQ5ODl9XHV7MjMyYWJ9XHU1NTBk''@;'; put 'put ''XHV7MjMyZTB9XHV7MjE4ZDl9XHV7Mjk0M2Z9XHU2NmNlXHV7MjMyODl9XHV7MjMxYjN9XHUzYWUwXHU0MTkwXHV7MjU1ODR9XHV7MjhiMjJ9XHV7MjU1OGZ9XHV7MjE2ZmN9XHV7MjU1NWJ9XHV7MjU0MjV9XHU3OGVlXHV7MjMxMDN9XHV7MjE4MmF9XHV7MjMyMzR9XHUzNDY0XHV7MjMyMGZ9''@;'; put 'put ''XHV7MjMxODJ9XHV7MjQyYzl9XHU2NjhlXHV7MjZkMjR9XHU2NjZiXHU0YjkzXHU2NjMwXHV7Mjc4NzB9XHV7MjFkZWJ9XHU2NjYzXHV7MjMyZDJ9XHV7MjMyZTF9XHU2NjFlXHV7MjU4NzJ9XHUzOGQxXHV7MjM4M2F9XHV7MjM3YmN9XHUzYjk5XHV7MjM3YTJ9XHV7MjMzZmV9XHU3NGQwXHUz''@;'; put 'put ''Yjk2XHU2NzhmXHV7MjQ2MmF9XHU2OGI2XHU2ODFlXHUzYmM0XHU2YWJlXHUzODYzXHV7MjM3ZDV9XHV7MjQ0ODd9XHU2YTMzXHU2YTUyXHU2YWM5XHU2YjA1XHV7MjE5MTJ9XHU2NTExXHU2ODk4XHU2YTRjXHUzYmQ3XHU2YTdhXHU2YjU3XHV7MjNmYzB9XHV7MjNjOWF9XHU5M2EwXHU5MmYy''@;'; put 'put ''XHV7MjhiZWF9XHV7MjhhY2J9Il0sWyI5NDQwIiwiXHU5Mjg5XHV7MjgwMWV9XHV7Mjg5ZGN9XHU5NDY3XHU2ZGE1XHU2ZjBiXHV7MjQ5ZWN9XHU2ZDY3XHV7MjNmN2Z9XHUzZDhmXHU2ZTA0XHV7MjQwM2N9XHU1YTNkXHU2ZTBhXHU1ODQ3XHU2ZDI0XHU3ODQyXHU3MTNiXHV7MjQzMWF9XHV7''@;'; put 'put ''MjQyNzZ9XHU3MGYxXHU3MjUwXHU3Mjg3XHU3Mjk0XHV7MjQ3OGZ9XHV7MjQ3MjV9XHU1MTc5XHV7MjRhYTR9XHV7MjA1ZWJ9XHU3NDdhXHV7MjNlZjh9XHV7MjM2NWZ9XHV7MjRhNGF9XHV7MjQ5MTd9XHV7MjVmZTF9XHUzZjA2XHUzZWIxXHV7MjRhZGZ9XHV7MjhjMjN9XHV7MjNmMzV9XHU2''@;'; put 'put ''MGE3XHUzZWYzXHU3NGNjXHU3NDNjXHU5Mzg3XHU3NDM3XHU0NDlmXHV7MjZkZWF9XHU0NTUxXHU3NTgzXHUzZjYzXHV7MjRjZDl9XHV7MjRkMDZ9XHUzZjU4XHU3NTU1XHU3NjczXHV7MmE1YzZ9XHUzYjE5XHU3NDY4XHV7MjhhY2N9XHV7MjQ5YWJ9XHV7MjQ5OGV9XHUzYWZiIl0sWyI5NGEx''@;'; put 'put ''IiwiXHUzZGNkXHV7MjRhNGV9XHUzZWZmXHV7MjQ5YzV9XHV7MjQ4ZjN9XHU5MWZhXHU1NzMyXHU5MzQyXHV7MjhhZTN9XHV7MjE4NjR9XHU1MGRmXHV7MjUyMjF9XHV7MjUxZTd9XHU3Nzc4XHV7MjMyMzJ9XHU3NzBlXHU3NzBmXHU3NzdiXHV7MjQ2OTd9XHV7MjM3ODF9XHUzYTVlXHV7MjQ4''@;'; put 'put ''ZjB9XHU3NDM4XHU3NDliXHUzZWJmXHV7MjRhYmF9XHV7MjRhYzd9XHU0MGM4XHV7MjRhOTZ9XHV7MjYxYWV9XHU5MzA3XHV7MjU1ODF9XHU3ODFlXHU3ODhkXHU3ODg4XHU3OGQyXHU3M2QwXHU3OTU5XHV7Mjc3NDF9XHV7MjU2ZTN9XHU0MTBlXHU3OTliXHU4NDk2XHU3OWE1XHU2YTJkXHV7''@;'; put 'put ''MjNlZmF9XHU3YTNhXHU3OWY0XHU0MTZlXHV7MjE2ZTZ9XHU0MTMyXHU5MjM1XHU3OWYxXHV7MjBkNGN9XHV7MjQ5OGN9XHV7MjAyOTl9XHV7MjNkYmF9XHV7MjE3NmV9XHUzNTk3XHU1NTZiXHUzNTcwXHUzNmFhXHV7MjAxZDR9XHV7MjBjMGR9XHU3YWUyXHU1YTU5XHV7MjI2ZjV9XHV7MjVh''@;'; put 'put ''YWZ9XHV7MjVhOWN9XHU1YTBkXHV7MjAyNWJ9XHU3OGYwXHU1YTJhXHV7MjViYzZ9XHU3YWZlXHU0MWY5XHU3YzVkXHU3YzZkXHU0MjExXHV7MjViYjN9XHV7MjVlYmN9XHV7MjVlYTZ9XHU3Y2NkXHV7MjQ5Zjl9XHV7MjE3YjB9XHU3YzhlXHU3YzdjXHU3Y2FlXHU2YWIyXHU3ZGRjXHU3ZTA3''@;'; put 'put ''XHU3ZGQzXHU3ZjRlXHV7MjYyNjF9Il0sWyI5NTQwIiwiXHV7MjYxNWN9XHV7MjdiNDh9XHU3ZDk3XHV7MjVlODJ9XHU0MjZhXHV7MjZiNzV9XHV7MjA5MTZ9XHU2N2Q2XHV7MjAwNGV9XHV7MjM1Y2Z9XHU1N2M0XHV7MjY0MTJ9XHV7MjYzZjh9XHV7MjQ5NjJ9XHU3ZmRkXHU3YjI3XHV7MjA4''@;'; put 'put ''MmN9XHV7MjVhZTl9XHV7MjVkNDN9XHU3YjBjXHV7MjVlMGV9XHU5OWU2XHU4NjQ1XHU5YTYzXHU2YTFjXHV7MjM0M2Z9XHUzOWUyXHV7MjQ5Zjd9XHV7MjY1YWR9XHU5YTFmXHV7MjY1YTB9XHU4NDgwXHV7MjcxMjd9XHV7MjZjZDF9XHU0NGVhXHU4MTM3XHU0NDAyXHU4MGM2XHU4MTA5XHU4''@;'; put 'put ''MTQyXHV7MjY3YjR9XHU5OGMzXHV7MjZhNDJ9XHU4MjYyXHU4MjY1XHV7MjZhNTF9XHU4NDUzXHV7MjZkYTd9XHU4NjEwXHV7MjcyMWJ9XHU1YTg2XHU0MTdmXHV7MjE4NDB9XHU1YjJiXHV7MjE4YTF9XHU1YWU0XHV7MjE4ZDh9XHU4NmEwXHV7MmY5YmN9XHV7MjNkOGZ9XHU4ODJkXHV7Mjc0''@;'; put 'put ''MjJ9XHU1YTAyIl0sWyI5NWExIiwiXHU4ODZlXHU0ZjQ1XHU4ODg3XHU4OGJmXHU4OGU2XHU4OTY1XHU4OTRkXHV7MjU2ODN9XHU4OTU0XHV7Mjc3ODV9XHV7Mjc3ODR9XHV7MjhiZjV9XHV7MjhiZDl9XHV7MjhiOWN9XHV7Mjg5Zjl9XHUzZWFkXHU4NGEzXHU0NmY1XHU0NmNmXHUzN2YyXHU4''@;'; put 'put ''YTNkXHU4YTFjXHV7Mjk0NDh9XHU1ZjRkXHU5MjJiXHV7MjQyODR9XHU2NWQ0XHU3MTI5XHU3MGM0XHV7MjE4NDV9XHU5ZDZkXHU4YzlmXHU4Y2U5XHV7MjdkZGN9XHU1OTlhXHU3N2MzXHU1OWYwXHU0MzZlXHUzNmQ0XHU4ZTJhXHU4ZWE3XHV7MjRjMDl9XHU4ZjMwXHU4ZjRhXHU0MmY0XHU2''@;'; put 'put ''YzU4XHU2ZmJiXHV7MjIzMjF9XHU0ODliXHU2Zjc5XHU2ZThiXHV7MjE3ZGF9XHU5YmU5XHUzNmI1XHV7MjQ5MmZ9XHU5MGJiXHU5MDk3XHU1NTcxXHU0OTA2XHU5MWJiXHU5NDA0XHV7MjhhNGJ9XHU0MDYyXHV7MjhhZmN9XHU5NDI3XHV7MjhjMWR9XHV7MjhjM2J9XHU4NGU1XHU4YTJiXHU5''@;'; put 'put ''NTk5XHU5NWE3XHU5NTk3XHU5NTk2XHV7MjhkMzR9XHU3NDQ1XHUzZWMyXHV7MjQ4ZmZ9XHV7MjRhNDJ9XHV7MjQzZWF9XHUzZWU3XHV7MjMyMjV9XHU5NjhmXHV7MjhlZTd9XHV7MjhlNjZ9XHV7MjhlNjV9XHUzZWNjXHV7MjQ5ZWR9XHV7MjRhNzh9XHV7MjNmZWV9XHU3NDEyXHU3NDZiXHUz''@;'; put 'put ''ZWZjXHU5NzQxXHV7MjkwYjB9Il0sWyI5NjQwIiwiXHU2ODQ3XHU0YTFkXHV7MjkwOTN9XHV7MjU3ZGZ9XHU5NzVkXHU5MzY4XHV7Mjg5ODl9XHV7MjhjMjZ9XHV7MjhiMmZ9XHV7MjYzYmV9XHU5MmJhXHU1YjExXHU4YjY5XHU0OTNjXHU3M2Y5XHV7MjQyMWJ9XHU5NzliXHU5NzcxXHU5OTM4''@;'; put 'put ''XHV7MjBmMjZ9XHU1ZGMxXHV7MjhiYzV9XHV7MjRhYjJ9XHU5ODFmXHV7Mjk0ZGF9XHU5MmY2XHV7Mjk1ZDd9XHU5MWU1XHU0NGMwXHV7MjhiNTB9XHV7MjRhNjd9XHV7MjhiNjR9XHU5OGRjXHV7MjhhNDV9XHUzZjAwXHU5MjJhXHU0OTI1XHU4NDE0XHU5OTNiXHU5OTRkXHV7MjdiMDZ9XHUz''@;'; put 'put ''ZGZkXHU5OTliXHU0YjZmXHU5OWFhXHU5YTVjXHV7MjhiNjV9XHV7MjU4Yzh9XHU2YThmXHU5YTIxXHU1YWZlXHU5YTJmXHV7Mjk4ZjF9XHU0YjkwXHV7Mjk5NDh9XHU5OWJjXHU0YmJkXHU0Yjk3XHU5MzdkXHU1ODcyXHV7MjEzMDJ9XHU1ODIyXHV7MjQ5Yjh9Il0sWyI5NmExIiwiXHV7MjE0''@;'; put 'put ''ZTh9XHU3ODQ0XHV7MjI3MWZ9XHV7MjNkYjh9XHU2OGM1XHUzZDdkXHU5NDU4XHUzOTI3XHU2MTUwXHV7MjI3ODF9XHV7MjI5NmJ9XHU2MTA3XHU5YzRmXHU5YzUzXHU5YzdiXHU5YzM1XHU5YzEwXHU5YjdmXHU5YmNmXHV7MjllMmR9XHU5YjlmXHV7MmExZjV9XHV7MmEwZmV9XHU5ZDIxXHU0''@;'; put 'put ''Y2FlXHV7MjQxMDR9XHU5ZTE4XHU0Y2IwXHU5ZDBjXHV7MmExYjR9XHV7MmEwZWR9XHV7MmEwZjN9XHV7Mjk5MmZ9XHU5ZGE1XHU4NGJkXHV7MjZlMTJ9XHV7MjZmZGZ9XHV7MjZiODJ9XHU4NWZjXHU0NTMzXHV7MjZkYTR9XHV7MjZlODR9XHV7MjZkZjB9XHU4NDIwXHU4NWVlXHV7MjZlMDB9''@;'; put 'put ''XHV7MjM3ZDd9XHV7MjYwNjR9XHU3OWUyXHV7MjM1OWN9XHV7MjM2NDB9XHU0OTJkXHV7MjQ5ZGV9XHUzZDYyXHU5M2RiXHU5MmJlXHU5MzQ4XHV7MjAyYmZ9XHU3OGI5XHU5Mjc3XHU5NDRkXHU0ZmU0XHUzNDQwXHU5MDY0XHV7MjU1NWR9XHU3ODNkXHU3ODU0XHU3OGI2XHU3ODRiXHV7MjE3''@;'; put 'put ''NTd9XHV7MjMxYzl9XHV7MjQ5NDF9XHUzNjlhXHU0ZjcyXHU2ZmRhXHU2ZmQ5XHU3MDFlXHU3MDFlXHU1NDE0XHV7MjQxYjV9XHU1N2JiXHU1OGYzXHU1NzhhXHU5ZDE2XHU1N2Q3XHU3MTM0XHUzNGFmXHV7MjQxYWN9XHU3MWViXHV7MjZjNDB9XHV7MjRmOTd9XHU1YjI4XHV7MjE3YjV9XHV7''@;'; put 'put ''MjhhNDl9Il0sWyI5NzQwIiwiXHU2MTBjXHU1YWNlXHU1YTBiXHU0MmJjXHV7MjQ0ODh9XHUzNzJjXHU0YjdiXHV7Mjg5ZmN9XHU5M2JiXHU5M2I4XHV7MjE4ZDZ9XHV7MjBmMWR9XHU4NDcyXHV7MjZjYzB9XHV7MjE0MTN9XHV7MjQyZmF9XHV7MjJjMjZ9XHV7MjQzYzF9XHU1OTk0XHV7MjNk''@;'; put 'put ''Yjd9XHV7MjY3NDF9XHU3ZGE4XHV7MjYxNWJ9XHV7MjYwYTR9XHV7MjQ5Yjl9XHV7MjQ5OGJ9XHV7Mjg5ZmF9XHU5MmU1XHU3M2UyXHUzZWU5XHU3NGI0XHV7MjhiNjN9XHV7MjE4OWZ9XHUzZWUxXHV7MjRhYjN9XHU2YWQ4XHU3M2YzXHU3M2ZiXHUzZWQ2XHV7MjRhM2V9XHV7MjRhOTR9XHV7''@;'; put 'put ''MjE3ZDl9XHV7MjRhNjZ9XHV7MjAzYTd9XHV7MjE0MjR9XHV7MjQ5ZTV9XHU3NDQ4XHV7MjQ5MTZ9XHU3MGE1XHV7MjQ5NzZ9XHU5Mjg0XHU3M2U2XHU5MzVmXHV7MjA0ZmV9XHU5MzMxXHV7MjhhY2V9XHV7MjhhMTZ9XHU5Mzg2XHV7MjhiZTd9XHV7MjU1ZDV9XHU0OTM1XHV7MjhhODJ9XHU3''@;'; put 'put ''MTZiIl0sWyI5N2ExIiwiXHV7MjQ5NDN9XHV7MjBjZmZ9XHU1NmE0XHV7MjA2MWF9XHV7MjBiZWJ9XHV7MjBjYjh9XHU1NTAyXHU3OWM0XHV7MjE3ZmF9XHU3ZGZlXHV7MjE2YzJ9XHV7MjRhNTB9XHV7MjE4NTJ9XHU0NTJlXHU5NDAxXHUzNzBhXHV7MjhhYzB9XHV7MjQ5YWR9XHU1OWIwXHV7''@;'; put 'put ''MjE4YmZ9XHV7MjE4ODN9XHV7Mjc0ODR9XHU1YWExXHUzNmUyXHV7MjNkNWJ9XHUzNmIwXHU5MjVmXHU1YTc5XHV7MjhhODF9XHV7MjE4NjJ9XHU5Mzc0XHUzY2NkXHV7MjBhYjR9XHU0YTk2XHUzOThhXHU1MGY0XHUzZDY5XHUzZDRjXHV7MjEzOWN9XHU3MTc1XHU0MmZiXHV7MjgyMTh9XHU2''@;'; put 'put ''ZTBmXHV7MjkwZTR9XHU0NGViXHU2ZDU3XHV7MjdlNGZ9XHU3MDY3XHU2Y2FmXHUzY2Q2XHV7MjNmZWR9XHV7MjNlMmR9XHU2ZTAyXHU2ZjBjXHUzZDZmXHV7MjAzZjV9XHU3NTUxXHUzNmJjXHUzNGM4XHU0NjgwXHUzZWRhXHU0ODcxXHU1OWM0XHU5MjZlXHU0OTNlXHU4ZjQxXHV7MjhjMWN9''@;'; put 'put ''XHV7MjZiYzB9XHU1ODEyXHU1N2M4XHUzNmQ2XHV7MjE0NTJ9XHU3MGZlXHV7MjQzNjJ9XHV7MjRhNzF9XHV7MjJmZTN9XHV7MjEyYjB9XHV7MjIzYmR9XHU2OGI5XHU2OTY3XHV7MjEzOTh9XHV7MjM0ZTV9XHV7MjdiZjR9XHV7MjM2ZGZ9XHV7MjhhODN9XHV7MjM3ZDZ9XHV7MjMzZmF9XHV7''@;'; put 'put ''MjRjOWZ9XHU2YTFhXHV7MjM2YWR9XHV7MjZjYjd9XHU4NDNlXHU0NGRmXHU0NGNlIl0sWyI5ODQwIiwiXHV7MjZkMjZ9XHV7MjZkNTF9XHV7MjZjODJ9XHV7MjZmZGV9XHU2ZjE3XHV7MjcxMDl9XHU4MzNkXHV7MjE3M2F9XHU4M2VkXHV7MjZjODB9XHV7MjcwNTN9XHV7MjE3ZGJ9XHU1OTg5''@;'; put 'put ''XHU1YTgyXHV7MjE3YjN9XHU1YTYxXHU1YTcxXHV7MjE5MDV9XHV7MjQxZmN9XHUzNzJkXHU1OWVmXHV7MjE3M2N9XHUzNmM3XHU3MThlXHU5MzkwXHU2NjlhXHV7MjQyYTV9XHU1YTZlXHU1YTJiXHV7MjQyOTN9XHU2YTJiXHV7MjNlZjl9XHV7Mjc3MzZ9XHV7MjQ0NWJ9XHV7MjQyY2F9XHU3''@;'; put 'put ''MTFkXHV7MjQyNTl9XHV7Mjg5ZTF9XHU0ZmIwXHV7MjZkMjh9XHU1Y2MyXHV7MjQ0Y2V9XHV7MjdlNGR9XHV7MjQzYmR9XHU2YTBjXHV7MjQyNTZ9XHV7MjEzMDR9XHU3MGE2XHU3MTMzXHV7MjQzZTl9XHUzZGE1XHU2Y2RmXHV7MmY4MjV9XHV7MjRhNGZ9XHU3ZTY1XHU1OWViXHU1ZDJmXHUz''@;'; put 'put ''ZGYzXHU1ZjVjXHV7MjRhNWR9XHV7MjE3ZGZ9XHU3ZGE0XHU4NDI2Il0sWyI5OGExIiwiXHU1NDg1XHV7MjNhZmF9XHV7MjMzMDB9XHV7MjAyMTR9XHU1NzdlXHV7MjA4ZDV9XHV7MjA2MTl9XHUzZmU1XHV7MjFmOWV9XHV7MmEyYjZ9XHU3MDAzXHV7MjkxNWJ9XHU1ZDcwXHU3MzhmXHU3Y2Qz''@;'; put 'put ''XHV7MjhhNTl9XHV7Mjk0MjB9XHU0ZmM4XHU3ZmU3XHU3MmNkXHU3MzEwXHV7MjdhZjR9XHU3MzM4XHU3MzM5XHV7MjU2ZjZ9XHU3MzQxXHU3MzQ4XHUzZWE5XHV7MjdiMTh9XHU5MDZjXHU3MWY1XHV7MjQ4ZjJ9XHU3M2UxXHU4MWY2XHUzZWNhXHU3NzBjXHUzZWQxXHU2Y2EyXHU1NmZkXHU3''@;'; put 'put ''NDE5XHU3NDFlXHU3NDFmXHUzZWUyXHUzZWYwXHUzZWY0XHUzZWZhXHU3NGQzXHUzZjBlXHUzZjUzXHU3NTQyXHU3NTZkXHU3NTcyXHU3NThkXHUzZjdjXHU3NWM4XHU3NWRjXHUzZmMwXHU3NjRkXHUzZmQ3XHU3Njc0XHUzZmRjXHU3NjdhXHV7MjRmNWN9XHU3MTg4XHU1NjIzXHU4OTgwXHU1''@;'; put 'put ''ODY5XHU0MDFkXHU3NzQzXHU0MDM5XHU2NzYxXHU0MDQ1XHUzNWRiXHU3Nzk4XHU0MDZhXHU0MDZmXHU1YzVlXHU3N2JlXHU3N2NiXHU1OGYyXHU3ODE4XHU3MGI5XHU3ODFjXHU0MGE4XHU3ODM5XHU3ODQ3XHU3ODUxXHU3ODY2XHU4NDQ4XHV7MjU1MzV9XHU3OTMzXHU2ODAzXHU3OTMyXHU0''@;'; put 'put ''MTAzIl0sWyI5OTQwIiwiXHU0MTA5XHU3OTkxXHU3OTk5XHU4ZmJiXHU3YTA2XHU4ZmJjXHU0MTY3XHU3YTkxXHU0MWIyXHU3YWJjXHU4Mjc5XHU0MWM0XHU3YWNmXHU3YWRiXHU0MWNmXHU0ZTIxXHU3YjYyXHU3YjZjXHU3YjdiXHU3YzEyXHU3YzFiXHU0MjYwXHU0MjdhXHU3YzdiXHU3Yzlj''@;'; put 'put ''XHU0MjhjXHU3Y2I4XHU0Mjk0XHU3Y2VkXHU4ZjkzXHU3MGMwXHV7MjBjY2Z9XHU3ZGNmXHU3ZGQ0XHU3ZGQwXHU3ZGZkXHU3ZmFlXHU3ZmI0XHU3MjlmXHU0Mzk3XHU4MDIwXHU4MDI1XHU3YjM5XHU4MDJlXHU4MDMxXHU4MDU0XHUzZGNjXHU1N2I0XHU3MGEwXHU4MGI3XHU4MGU5XHU0M2Vk''@;'; put 'put ''XHU4MTBjXHU3MzJhXHU4MTBlXHU4MTEyXHU3NTYwXHU4MTE0XHU0NDAxXHUzYjM5XHU4MTU2XHU4MTU5XHU4MTVhIl0sWyI5OWExIiwiXHU0NDEzXHU1ODNhXHU4MTdjXHU4MTg0XHU0NDI1XHU4MTkzXHU0NDJkXHU4MWE1XHU1N2VmXHU4MWMxXHU4MWU0XHU4MjU0XHU0NDhmXHU4MmE2XHU4''@;'; put 'put ''Mjc2XHU4MmNhXHU4MmQ4XHU4MmZmXHU0NGIwXHU4MzU3XHU5NjY5XHU2OThhXHU4NDA1XHU3MGY1XHU4NDY0XHU2MGUzXHU4NDg4XHU0NTA0XHU4NGJlXHU4NGUxXHU4NGY4XHU4NTEwXHU4NTM4XHU4NTUyXHU0NTNiXHU4NTZmXHU4NTcwXHU4NWUwXHU0NTc3XHU4NjcyXHU4NjkyXHU4NmIy''@;'; put 'put ''XHU4NmVmXHU5NjQ1XHU4NzhiXHU0NjA2XHU0NjE3XHU4OGFlXHU4OGZmXHU4OTI0XHU4OTQ3XHU4OTkxXHV7Mjc5Njd9XHU4YTI5XHU4YTM4XHU4YTk0XHU4YWI0XHU4YzUxXHU4Y2Q0XHU4Y2YyXHU4ZDFjXHU0Nzk4XHU1ODVmXHU4ZGMzXHU0N2VkXHU0ZWVlXHU4ZTNhXHU1NWQ4XHU1NzU0''@;'; put 'put ''XHU4ZTcxXHU1NWY1XHU4ZWIwXHU0ODM3XHU4ZWNlXHU4ZWUyXHU4ZWU0XHU4ZWVkXHU4ZWYyXHU4ZmI3XHU4ZmMxXHU4ZmNhXHU4ZmNjXHU5MDMzXHU5OWM0XHU0OGFkXHU5OGUwXHU5MjEzXHU0OTFlXHU5MjI4XHU5MjU4XHU5MjZiXHU5MmIxXHU5MmFlXHU5MmJmIl0sWyI5YTQwIiwiXHU5''@;'; put 'put ''MmUzXHU5MmViXHU5MmYzXHU5MmY0XHU5MmZkXHU5MzQzXHU5Mzg0XHU5M2FkXHU0OTQ1XHU0OTUxXHU5ZWJmXHU5NDE3XHU1MzAxXHU5NDFkXHU5NDJkXHU5NDNlXHU0OTZhXHU5NDU0XHU5NDc5XHU5NTJkXHU5NWEyXHU0OWE3XHU5NWY0XHU5NjMzXHU0OWU1XHU2N2EwXHU0YTI0XHU5NzQw''@;'; put 'put ''XHU0YTM1XHU5N2IyXHU5N2MyXHU1NjU0XHU0YWU0XHU2MGU4XHU5OGI5XHU0YjE5XHU5OGYxXHU1ODQ0XHU5OTBlXHU5OTE5XHU1MWI0XHU5OTFjXHU5OTM3XHU5OTQyXHU5OTVkXHU5OTYyXHU0YjcwXHU5OWM1XHU0YjlkXHU5YTNjXHU5YjBmXHU3YTgzXHU5YjY5XHU5YjgxXHU5YmRkXHU5''@;'; put 'put ''YmYxXHU5YmY0XHU0YzZkXHU5YzIwXHUzNzZmXHV7MjFiYzJ9XHU5ZDQ5XHU5YzNhIl0sWyI5YWExIiwiXHU5ZWZlXHU1NjUwXHU5ZDkzXHU5ZGJkXHU5ZGMwXHU5ZGZjXHU5NGY2XHU4ZmI2XHU5ZTdiXHU5ZWFjXHU5ZWIxXHU5ZWJkXHU5ZWM2XHU5NGRjXHU5ZWUyXHU5ZWYxXHU5ZWY4XHU3''@;'; put 'put ''YWM4XHU5ZjQ0XHV7MjAwOTR9XHV7MjAyYjd9XHV7MjAzYTB9XHU2OTFhXHU5NGMzXHU1OWFjXHV7MjA0ZDd9XHU1ODQwXHU5NGMxXHUzN2I5XHV7MjA1ZDV9XHV7MjA2MTV9XHV7MjA2NzZ9XHV7MjE2YmF9XHU1NzU3XHU3MTczXHV7MjBhYzJ9XHV7MjBhY2R9XHV7MjBiYmZ9XHU1NDZhXHV7''@;'; put 'put ''MmY4M2J9XHV7MjBiY2J9XHU1NDllXHV7MjBiZmJ9XHV7MjBjM2J9XHV7MjBjNTN9XHV7MjBjNjV9XHV7MjBjN2N9XHU2MGU3XHV7MjBjOGR9XHU1NjdhXHV7MjBjYjV9XHV7MjBjZGR9XHV7MjBjZWR9XHV7MjBkNmZ9XHV7MjBkYjJ9XHV7MjBkYzh9XHU2OTU1XHU5YzJmXHU4N2E1XHV7MjBl''@;'; put 'put ''MDR9XHV7MjBlMGV9XHV7MjBlZDd9XHV7MjBmOTB9XHV7MjBmMmR9XHV7MjBlNzN9XHU1YzIwXHV7MjBmYmN9XHU1ZTBiXHV7MjEwNWN9XHV7MjEwNGZ9XHV7MjEwNzZ9XHU2NzFlXHV7MjEwN2J9XHV7MjEwODh9XHV7MjEwOTZ9XHUzNjQ3XHV7MjEwYmZ9XHV7MjEwZDN9XHV7MjExMmZ9XHV7''@;'; put 'put ''MjExM2J9XHU1MzY0XHU4NGFkXHV7MjEyZTN9XHV7MjEzNzV9XHV7MjEzMzZ9XHU4YjgxXHV7MjE1Nzd9XHV7MjE2MTl9XHV7MjE3YzN9XHV7MjE3Yzd9XHU0ZTc4XHU3MGJiXHV7MjE4MmR9XHV7MjE5NmF9Il0sWyI5YjQwIiwiXHV7MjFhMmR9XHV7MjFhNDV9XHV7MjFjMmF9XHV7MjFjNzB9''@;'; put 'put ''XHV7MjFjYWN9XHV7MjFlYzh9XHU2MmMzXHV7MjFlZDV9XHV7MjFmMTV9XHU3MTk4XHU2ODU1XHV7MjIwNDV9XHU2OWU5XHUzNmM4XHV7MjIyN2N9XHV7MjIzZDd9XHV7MjIzZmF9XHV7MjI3MmF9XHV7MjI4NzF9XHV7MjI5NGZ9XHU4MmZkXHV7MjI5Njd9XHV7MjI5OTN9XHV7MjJhZDV9XHU4''@;'; put 'put ''OWE1XHV7MjJhZTh9XHU4ZmEwXHV7MjJiMGV9XHU5N2I4XHV7MjJiM2Z9XHU5ODQ3XHU5YWJkXHV7MjJjNGN9Il0sWyI5YjYyIiwiXHV7MjJjODh9XHV7MjJjYjd9XHV7MjViZTh9XHV7MjJkMDh9XHV7MjJkMTJ9XHV7MjJkYjd9XHV7MjJkOTV9XHV7MjJlNDJ9XHV7MjJmNzR9XHV7MjJmY2N9''@;'; put 'put ''XHV7MjMwMzN9XHV7MjMwNjZ9XHV7MjMzMWZ9XHV7MjMzZGV9XHU1ZmIxXHU2NjQ4XHU2NmJmXHV7MjdhNzl9XHV7MjM1Njd9XHV7MjM1ZjN9XHU3MjAxXHV7MjQ5YmF9XHU3N2Q3XHV7MjM2MWF9XHV7MjM3MTZ9XHU3ZTg3XHV7MjAzNDZ9XHU1OGI1XHU2NzBlIl0sWyI5YmExIiwiXHU2OTE4''@;'; put 'put ''XHV7MjNhYTd9XHV7Mjc2NTd9XHV7MjVmZTJ9XHV7MjNlMTF9XHV7MjNlYjl9XHV7Mjc1ZmV9XHV7MjIwOWF9XHU0OGQwXHU0YWI4XHV7MjQxMTl9XHV7MjhhOWF9XHV7MjQyZWV9XHV7MjQzMGR9XHV7MjQwM2J9XHV7MjQzMzR9XHV7MjQzOTZ9XHV7MjRhNDV9XHV7MjA1Y2F9XHU1MWQyXHV7''@;'; put 'put ''MjA2MTF9XHU1OTlmXHV7MjFlYTh9XHUzYmJlXHV7MjNjZmZ9XHV7MjQ0MDR9XHV7MjQ0ZDZ9XHU1Nzg4XHV7MjQ2NzR9XHUzOTliXHV7MjQ3MmZ9XHV7Mjg1ZTh9XHV7Mjk5Yzl9XHUzNzYyXHV7MjIxYzN9XHU4YjVlXHV7MjhiNGV9XHU5OWQ2XHV7MjQ4MTJ9XHV7MjQ4ZmJ9XHV7MjRhMTV9''@;'; put 'put ''XHU3MjA5XHV7MjRhYzB9XHV7MjBjNzh9XHU1OTY1XHV7MjRlYTV9XHV7MjRmODZ9XHV7MjA3Nzl9XHU4ZWRhXHV7MjUwMmN9XHU1MjhmXHU1NzNmXHU3MTcxXHV7MjUyOTl9XHV7MjU0MTl9XHV7MjNmNGF9XHV7MjRhYTd9XHU1NWJjXHV7MjU0NDZ9XHV7MjU0NmV9XHV7MjZiNTJ9XHU5MWQ0''@;'; put 'put ''XHUzNDczXHV7MjU1M2Z9XHV7Mjc2MzJ9XHV7MjU1NWV9XHU0NzE4XHV7MjU1NjJ9XHV7MjU1NjZ9XHV7MjU3Yzd9XHV7MjQ5M2Z9XHV7MjU4NWR9XHU1MDY2XHUzNGZiXHV7MjMzY2N9XHU2MGRlXHV7MjU5MDN9XHU0NzdjXHV7Mjg5NDh9XHV7MjVhYWV9XHV7MjViODl9XHV7MjVjMDZ9XHV7''@;'; put 'put ''MjFkOTB9XHU1N2ExXHU3MTUxXHU2ZmI2XHV7MjYxMDJ9XHV7MjdjMTJ9XHU5MDU2XHV7MjYxYjJ9XHV7MjRmOWF9XHU4YjYyXHV7MjY0MDJ9XHV7MjY0NGF9Il0sWyI5YzQwIiwiXHU1ZDViXHV7MjZiZjd9XHU4ZjM2XHV7MjY0ODR9XHV7MjE5MWN9XHU4YWVhXHV7MjQ5ZjZ9XHV7MjY0ODh9''@;'; put 'put ''XHV7MjNmZWZ9XHV7MjY1MTJ9XHU0YmMwXHV7MjY1YmZ9XHV7MjY2YjV9XHV7MjI3MWJ9XHU5NDY1XHV7MjU3ZTF9XHU2MTk1XHU1YTI3XHV7MmY4Y2R9XHU0ZmJiXHU1NmI5XHV7MjQ1MjF9XHV7MjY2ZmN9XHU0ZTZhXHV7MjQ5MzR9XHU5NjU2XHU2ZDhmXHV7MjZjYmR9XHUzNjE4XHU4OTc3''@;'; put 'put ''XHV7MjY3OTl9XHV7MjY4NmV9XHV7MjY0MTF9XHV7MjY4NWV9XHU3MWRmXHV7MjY4Yzd9XHU3YjQyXHV7MjkwYzB9XHV7MjBhMTF9XHV7MjY5MjZ9XHU5MTA0XHV7MjY5Mzl9XHU3YTQ1XHU5ZGYwXHV7MjY5ZmF9XHU5YTI2XHV7MjZhMmR9XHUzNjVmXHV7MjY0Njl9XHV7MjAwMjF9XHU3OTgz''@;'; put 'put ''XHV7MjZhMzR9XHV7MjZiNWJ9XHU1ZDJjXHV7MjM1MTl9XHU4M2NmXHV7MjZiOWR9XHU0NmQwXHV7MjZjYTR9XHU3NTNiXHU4ODY1XHV7MjZkYWV9XHU1OGI2Il0sWyI5Y2ExIiwiXHUzNzFjXHV7MjI1OGR9XHV7MjcwNGJ9XHV7MjcxY2R9XHUzYzU0XHV7MjcyODB9XHV7MjcyODV9XHU5Mjgx''@;'; put 'put ''XHV7MjIxN2F9XHV7MjcyOGJ9XHU5MzMwXHV7MjcyZTZ9XHV7MjQ5ZDB9XHU2YzM5XHU5NDlmXHV7Mjc0NTB9XHV7MjBlZjh9XHU4ODI3XHU4OGY1XHV7MjI5MjZ9XHV7Mjg0NzN9XHV7MjE3YjF9XHU2ZWI4XHV7MjRhMmF9XHV7MjE4MjB9XHUzOWE0XHUzNmI5XHU1YzEwXHU3OWUzXHU0NTNm''@;'; put 'put ''XHU2NmI2XHV7MjljYWR9XHV7Mjk4YTR9XHU4OTQzXHV7Mjc3Y2N9XHV7Mjc4NTh9XHU1NmQ2XHU0MGRmXHV7MjE2MGF9XHUzOWExXHV7MjM3MmZ9XHV7MjgwZTh9XHV7MjEzYzV9XHU3MWFkXHU4MzY2XHV7Mjc5ZGR9XHV7MjkxYTh9XHU1YTY3XHU0Y2I3XHV7MjcwYWZ9XHV7Mjg5YWJ9XHV7''@;'; put 'put ''Mjc5ZmR9XHV7MjdhMGF9XHV7MjdiMGJ9XHV7MjdkNjZ9XHV7MjQxN2F9XHU3YjQzXHU3OTdlXHV7MjgwMDl9XHU2ZmI1XHV7MmEyZGZ9XHU2YTAzXHV7MjgzMTh9XHU1M2EyXHV7MjZlMDd9XHU5M2JmXHU2ODM2XHU5NzVkXHV7MjgxNmZ9XHV7MjgwMjN9XHV7MjY5YjV9XHV7MjEzZWR9XHV7''@;'; put 'put ''MjMyMmZ9XHV7MjgwNDh9XHU1ZDg1XHV7MjhjMzB9XHV7MjgwODN9XHU1NzE1XHU5ODIzXHV7Mjg5NDl9XHU1ZGFiXHV7MjQ5ODh9XHU2NWJlXHU2OWQ1XHU1M2QyXHV7MjRhYTV9XHV7MjNmODF9XHUzYzExXHU2NzM2XHV7MjgwOTB9XHV7MjgwZjR9XHV7MjgxMmV9XHV7MjFmYTF9XHV7Mjgx''@;'; put 'put ''NGZ9Il0sWyI5ZDQwIiwiXHV7MjgxODl9XHV7MjgxYWZ9XHV7MjgyMWF9XHV7MjgzMDZ9XHV7MjgzMmZ9XHV7MjgzOGF9XHUzNWNhXHV7Mjg0Njh9XHV7Mjg2YWF9XHU0OGZhXHU2M2U2XHV7Mjg5NTZ9XHU3ODA4XHU5MjU1XHV7Mjg5Yjh9XHU0M2YyXHV7Mjg5ZTd9XHU0M2RmXHV7Mjg5ZTh9''@;'; put 'put ''XHV7MjhiNDZ9XHV7MjhiZDR9XHU1OWY4XHV7MjhjMDl9XHU4ZjBiXHV7MjhmYzV9XHV7MjkwZWN9XHU3YjUxXHV7MjkxMTB9XHV7MjkxM2N9XHUzZGY3XHV7MjkxNWV9XHV7MjRhY2F9XHU4ZmQwXHU3MjhmXHU1NjhiXHV7Mjk0ZTd9XHV7Mjk1ZTl9XHV7Mjk1YjB9XHV7Mjk1Yjh9XHV7Mjk3''@;'; put 'put ''MzJ9XHV7Mjk4ZDF9XHV7Mjk5NDl9XHV7Mjk5NmF9XHV7Mjk5YzN9XHV7MjlhMjh9XHV7MjliMGV9XHV7MjlkNWF9XHV7MjlkOWJ9XHU3ZTlmXHV7MjllZjh9XHV7MjlmMjN9XHU0Y2E0XHU5NTQ3XHV7MmEyOTN9XHU3MWEyXHV7MmEyZmZ9XHU0ZDkxXHU5MDEyXHV7MmE1Y2J9XHU0ZDljXHV7''@;'; put 'put ''MjBjOWN9XHU4ZmJlXHU1NWMxIl0sWyI5ZGExIiwiXHU4ZmJhXHV7MjI0YjB9XHU4ZmI5XHV7MjRhOTN9XHU0NTA5XHU3ZTdmXHU2ZjU2XHU2YWIxXHU0ZWVhXHUzNGU0XHV7MjhiMmN9XHV7Mjc4OWR9XHUzNzNhXHU4ZTgwXHV7MjE3ZjV9XHV7MjgwMjR9XHV7MjhiNmN9XHV7MjhiOTl9XHV7''@;'; put 'put ''MjdhM2V9XHV7MjY2YWZ9XHUzZGViXHV7Mjc2NTV9XHV7MjNjYjd9XHV7MjU2MzV9XHV7MjU5NTZ9XHU0ZTlhXHV7MjVlODF9XHV7MjYyNTh9XHU1NmJmXHV7MjBlNmR9XHU4ZTBlXHU1YjZkXHV7MjNlODh9XHV7MjRjOWV9XHU2M2RlXHU2MmQwXHV7MjE3ZjZ9XHV7MjE4N2J9XHU2NTMwXHU1''@;'; put 'put ''NjJkXHV7MjVjNGF9XHU1NDFhXHV7MjUzMTF9XHUzZGM2XHV7MjlkOTh9XHU0YzdkXHU1NjIyXHU1NjFlXHU3ZjQ5XHV7MjVlZDh9XHU1OTc1XHV7MjNkNDB9XHU4NzcwXHU0ZTFjXHV7MjBmZWF9XHV7MjBkNDl9XHV7MjM2YmF9XHU4MTE3XHU5ZDVlXHU4ZDE4XHU3NjNiXHU5YzQ1XHU3NjRl''@;'; put 'put ''XHU3N2I5XHU5MzQ1XHU1NDMyXHU4MTQ4XHU4MmY3XHU1NjI1XHU4MTMyXHU4NDE4XHU4MGJkXHU1NWVhXHU3OTYyXHU1NjQzXHU1NDE2XHV7MjBlOWR9XHUzNWNlXHU1NjA1XHU1NWYxXHU2NmYxXHV7MjgyZTJ9XHUzNjJkXHU3NTM0XHU1NWYwXHU1NWJhXHU1NDk3XHU1NTcyXHV7MjBjNDF9''@;'; put 'put ''XHV7MjBjOTZ9XHU1ZWQwXHV7MjUxNDh9XHV7MjBlNzZ9XHV7MjJjNjJ9Il0sWyI5ZTQwIiwiXHV7MjBlYTJ9XHU5ZWFiXHU3ZDVhXHU1NWRlXHV7MjEwNzV9XHU2MjlkXHU5NzZkXHU1NDk0XHU4Y2NkXHU3MWY2XHU5MTc2XHU2M2ZjXHU2M2I5XHU2M2ZlXHU1NTY5XHV7MjJiNDN9XHU5Yzcy''@;'; put 'put ''XHV7MjJlYjN9XHU1MTlhXHUzNGRmXHV7MjBkYTd9XHU1MWE3XHU1NDRkXHU1NTFlXHU1NTEzXHU3NjY2XHU4ZTJkXHV7MjY4OGF9XHU3NWIxXHU4MGI2XHU4ODA0XHU4Nzg2XHU4OGM3XHU4MWI2XHU4NDFjXHV7MjEwYzF9XHU0NGVjXHU3MzA0XHV7MjQ3MDZ9XHU1YjkwXHU4MzBiXHV7MjY4''@;'; put 'put ''OTN9XHU1NjdiXHV7MjI2ZjR9XHV7MjdkMmZ9XHV7MjQxYTN9XHV7MjdkNzN9XHV7MjZlZDB9XHV7MjcyYjZ9XHU5MTcwXHV7MjExZDl9XHU5MjA4XHV7MjNjZmN9XHV7MmE2YTl9XHV7MjBlYWN9XHV7MjBlZjl9XHU3MjY2XHV7MjFjYTJ9XHU0NzRlXHV7MjRmYzJ9XHV7MjdmZjl9XHV7MjBm''@;'; put 'put ''ZWJ9XHU0MGZhIl0sWyI5ZWExIiwiXHU5YzVkXHU2NTFmXHV7MjJkYTB9XHU0OGYzXHV7MjQ3ZTB9XHV7MjlkN2N9XHV7MjBmZWN9XHV7MjBlMGF9XHU2MDYyXHV7Mjc1YTN9XHV7MjBmZWR9Il0sWyI5ZWFkIiwiXHV7MjYwNDh9XHV7MjExODd9XHU3MWEzXHU3ZThlXHU5ZDUwXHU0ZTFhXHU0''@;'; put 'put ''ZTA0XHUzNTc3XHU1YjBkXHU2Y2IyXHU1MzY3XHUzNmFjXHUzOWRjXHU1MzdkXHUzNmE1XHV7MjQ2MTh9XHU1ODlhXHV7MjRiNmV9XHU4MjJkXHU1NDRiXHU1N2FhXHV7MjVhOTV9XHV7MjA5Nzl9Il0sWyI5ZWM1IiwiXHUzYTUyXHV7MjI0NjV9XHU3Mzc0XHV7MjllYWN9XHU0ZDA5XHU5YmVk''@;'; put 'put ''XHV7MjNjZmV9XHV7MjlmMzB9XHU0YzViXHV7MjRmYTl9XHV7Mjk1OWV9XHV7MjlmZGV9XHU4NDVjXHV7MjNkYjZ9XHV7MjcyYjJ9XHV7MjY3YjN9XHV7MjM3MjB9XHU2MzJlXHU3ZDI1XHV7MjNlZjd9XHV7MjNlMmN9XHUzYTJhXHU5MDA4XHU1MmNjXHUzZTc0XHUzNjdhXHU0NWU5XHV7MjA0''@;'; put 'put ''OGV9XHU3NjQwXHU1YWYwXHV7MjBlYjZ9XHU3ODdhXHV7MjdmMmV9XHU1OGE3XHU0MGJmXHU1NjdjXHU5YjhiXHU1ZDc0XHU3NjU0XHV7MmE0MzR9XHU5ZTg1XHU0Y2UxXHU3NWY5XHUzN2ZiXHU2MTE5XHV7MjMwZGF9XHV7MjQzZjJ9Il0sWyI5ZWY1IiwiXHU1NjVkXHV7MjEyYTl9XHU1N2E3''@;'; put 'put ''XHV7MjQ5NjN9XHV7MjllMDZ9XHU1MjM0XHV7MjcwYWV9XHUzNWFkXHU2YzRhXHU5ZDdjIl0sWyI5ZjQwIiwiXHU3YzU2XHU5YjM5XHU1N2RlXHV7MjE3NmN9XHU1YzUzXHU2NGQzXHV7Mjk0ZDB9XHV7MjYzMzV9XHV7MjcxNjR9XHU4NmFkXHV7MjBkMjh9XHV7MjZkMjJ9XHV7MjRhZTJ9XHV7''@;'; put 'put ''MjBkNzF9Il0sWyI5ZjRmIiwiXHU1MWZlXHV7MjFmMGZ9XHU1ZDhlXHU5NzAzXHV7MjFkZDF9XHU5ZTgxXHU5MDRjXHU3YjFmXHU5YjAyXHU1Y2QxXHU3YmEzXHU2MjY4XHU2MzM1XHU5YWZmXHU3YmNmXHU5YjJhXHU3YzdlXHU5YjJlXHU3YzQyXHU3Yzg2XHU5YzE1XHU3YmZjXHU5YjA5XHU5''@;'; put 'put ''ZjE3XHU5YzFiXHV7MjQ5M2V9XHU5ZjVhXHU1NTczXHU1YmMzXHU0ZmZkXHU5ZTk4XHU0ZmYyXHU1MjYwXHUzZTA2XHU1MmQxXHU1NzY3XHU1MDU2XHU1OWI3XHU1ZTEyXHU5N2M4XHU5ZGFiXHU4ZjVjXHU1NDY5XHU5N2I0XHU5OTQwXHU5N2JhXHU1MzJjXHU2MTMwIl0sWyI5ZmExIiwiXHU2''@;'; put 'put ''OTJjXHU1M2RhXHU5YzBhXHU5ZDAyXHU0YzNiXHU5NjQxXHU2OTgwXHU1MGE2XHU3NTQ2XHV7MjE3NmR9XHU5OWRhXHU1MjczIl0sWyI5ZmFlIiwiXHU5MTU5XHU5NjgxXHU5MTVjIl0sWyI5ZmIyIiwiXHU5MTUxXHV7MjhlOTd9XHU2MzdmXHV7MjZkMjN9XHU2YWNhXHU1NjExXHU5MThlXHU3''@;'; put 'put ''NTdhXHU2Mjg1XHV7MjAzZmN9XHU3MzRmXHU3YzcwXHV7MjVjMjF9XHV7MjNjZmR9Il0sWyI5ZmMxIiwiXHV7MjQ5MTl9XHU3NmQ2XHU5YjlkXHU0ZTJhXHV7MjBjZDR9XHU4M2JlXHU4ODQyIl0sWyI5ZmM5IiwiXHU1YzRhXHU2OWMwXHU1MGVkXHU1NzdhXHU1MjFmXHU1ZGY1XHU0ZWNlXHU2''@;'; put 'put ''YzMxXHV7MjAxZjJ9XHU0ZjM5XHU1NDljXHU1NGRhXHU1MjlhXHU4ZDgyXHUzNWZlXHU1ZjBjXHUzNWYzIl0sWyI5ZmRiIiwiXHU2YjUyXHU5MTdjXHU5ZmE1XHU5Yjk3XHU5ODJlXHU5OGI0XHU5YWJhXHU5ZWE4XHU5ZTg0XHU3MTdhXHU3YjE0Il0sWyI5ZmU3IiwiXHU2YmZhXHU4ODE4XHU3''@;'; put 'put ''Zjc4Il0sWyI5ZmViIiwiXHU1NjIwXHV7MmE2NGF9XHU4ZTc3XHU5ZjUzIl0sWyI5ZmYwIiwiXHU4ZGQ0XHU4ZTRmXHU5ZTFjXHU4ZTAxXHU2MjgyXHV7MjgzN2R9XHU4ZTI4XHU4ZTc1XHU3YWQzXHV7MjRhNzd9XHU3YTNlXHU3OGQ4XHU2Y2VhXHU4YTY3XHU3NjA3Il0sWyJhMDQwIiwiXHV7''@;'; put 'put ''MjhhNWF9XHU5ZjI2XHU2Y2NlXHU4N2Q2XHU3NWMzXHV7MmEyYjJ9XHU3ODUzXHV7MmY4NDB9XHU4ZDBjXHU3MmUyXHU3MzcxXHU4YjJkXHU3MzAyXHU3NGYxXHU4Y2ViXHV7MjRhYmJ9XHU4NjJmXHU1ZmJhXHU4OGEwXHU0NGI3Il0sWyJhMDU1IiwiXHV7MjE4M2J9XHV7MjZlMDV9Il0sWyJh''@;'; put 'put ''MDU4IiwiXHU4YTdlXHV7MjI1MWJ9Il0sWyJhMDViIiwiXHU2MGZkXHU3NjY3XHU5YWQ3XHU5ZDQ0XHU5MzZlXHU5YjhmXHU4N2Y1Il0sWyJhMDYzIiwiXHU4ODBmXHU4Y2Y3XHU3MzJjXHU5NzIxXHU5YmIwXHUzNWQ2XHU3MmIyXHU0YzA3XHU3YzUxXHU5OTRhXHV7MjYxNTl9XHU2MTU5XHU0''@;'; put 'put ''YzA0XHU5ZTk2XHU2MTdkIl0sWyJhMDczIiwiXHU1NzVmXHU2MTZmXHU2MmE2XHU2MjM5XHU2MmNlXHUzYTVjXHU2MWUyXHU1M2FhXHV7MjMzZjV9XHU2MzY0XHU2ODAyXHUzNWQyIl0sWyJhMGExIiwiXHU1ZDU3XHV7MjhiYzJ9XHU4ZmRhXHV7MjhlMzl9Il0sWyJhMGE2IiwiXHU1MGQ5XHV7''@;'; put 'put ''MjFkNDZ9XHU3OTA2XHU1MzMyXHU5NjM4XHV7MjBmM2J9XHU0MDY1Il0sWyJhMGFlIiwiXHU3N2ZlIl0sWyJhMGIwIiwiXHU3Y2MyXHV7MjVmMWF9XHU3Y2RhXHU3YTJkXHU4MDY2XHU4MDYzXHU3ZDRkXHU3NTA1XHU3NGYyXHU4OTk0XHU4MjFhXHU2NzBjXHU4MDYyXHV7Mjc0ODZ9XHU4MDVi''@;'; put 'put ''XHU3NGYwXHU4MTAzXHU3NzI0XHU4OTg5XHV7MjY3Y2N9XHU3NTUzXHV7MjZlZDF9XHU4N2E5XHU4N2NlXHU4MWM4XHU4NzhjXHU4YTQ5XHU4Y2FkXHU4YjQzXHU3NzJiXHU3NGY4XHU4NGRhXHUzNjM1XHU2OWIyXHU4ZGE2Il0sWyJhMGQ0IiwiXHU4OWE5XHU3NDY4XHU2ZGI5XHU4N2MxXHV7''@;'; put 'put ''MjQwMTF9XHU3NGU3XHUzZGRiXHU3MTc2XHU2MGE0XHU2MTljXHUzY2QxXHU3MTYyXHU2MDc3Il0sWyJhMGUyIiwiXHU3ZjcxXHV7MjhiMmR9XHU3MjUwXHU2MGU5XHU0YjdlXHU1MjIwXHUzYzE4XHV7MjNjYzd9XHV7MjVlZDd9XHV7Mjc2NTZ9XHV7MjU1MzF9XHV7MjE5NDR9XHV7MjEyZmV9''@;'; put 'put ''XHV7Mjk5MDN9XHV7MjZkZGN9XHV7MjcwYWR9XHU1Y2MxXHV7MjYxYWR9XHV7MjhhMGZ9XHV7MjM2Nzd9XHV7MjAwZWV9XHV7MjY4NDZ9XHV7MjRmMGV9XHU0NTYyXHU1YjFmXHV7MjYzNGN9XHU5ZjUwXHU5ZWE2XHV7MjYyNmJ9Il0sWyJhM2MwIiwiXHUyNDAwIiwzMSwiXHUyNDIxIl0sWyJj''@;'; put 'put ''NmExIiwiXHUyNDYwIiw5LCJcdTI0NzQiLDksIlx1MjE3MCIsOSwiXHU0ZTM2XHU0ZTNmXHU0ZTg1XHU0ZWEwXHU1MTgyXHU1MTk2XHU1MWFiXHU1MmY5XHU1MzM4XHU1MzY5XHU1M2I2XHU1OTBhXHU1YjgwXHU1ZGRiXHUyZjMzXHU1ZTdmXHU1ZWY0XHU1ZjUwXHU1ZjYxXHU2NTM0XHU2NWUw''@;'; put 'put ''XHU3NTkyXHU3Njc2XHU4ZmI1XHU5NmI2XHhhOFx1MDJjNlx1MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1ZmYzYlx1ZmYzZFx1MjczZFx1MzA0MSIsMjNdLFsiYzc0MCIsIlx1MzA1OSIsNTgsIlx1MzBhMVx1MzBhMlx1MzBhM1x1''@;'; put 'put ''MzBhNCJdLFsiYzdhMSIsIlx1MzBhNSIsODEsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2Iiw0XSxbImM4NDAiLCJcdTA0MWIiLDI2LCJcdTA0NTFcdTA0MzYiLDI1LCJcdTIxZTdcdTIxYjhcdTIxYjlcdTMxY2ZcdXsyMDBjY31cdTRlNWFcdXsyMDA4YX1cdTUyMDJcdTQ0OTEiXSxbImM4YTEi''@;'; put 'put ''LCJcdTlmYjBcdTUxODhcdTlmYjFcdXsyNzYwN30iXSxbImM4Y2QiLCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTMwOWJcdTMwOWNcdTJlODBcdTJlODRcdTJlODZcdTJlODdcdTJlODhcdTJlOGFcdTJlOGNcdTJlOGRcdTJlOTVcdTJlOWNcdTJlOWRcdTJl''@;'; put 'put ''YTVcdTJlYTdcdTJlYWFcdTJlYWNcdTJlYWVcdTJlYjZcdTJlYmNcdTJlYmVcdTJlYzZcdTJlY2FcdTJlY2NcdTJlY2RcdTJlY2ZcdTJlZDZcdTJlZDdcdTJlZGVcdTJlZTMiXSxbImM4ZjUiLCJcdTAyODNcdTAyNTBcdTAyNWJcdTAyNTRcdTAyNzVcdTAxNTNceGY4XHUwMTRiXHUwMjhhXHUw''@;'; put 'put ''MjZhIl0sWyJmOWZlIiwiXHVmZmVkIl0sWyJmYTQwIiwiXHV7MjA1NDd9XHU5MmRiXHV7MjA1ZGZ9XHV7MjNmYzV9XHU4NTRjXHU0MmI1XHU3M2VmXHU1MWI1XHUzNjQ5XHV7MjQ5NDJ9XHV7Mjg5ZTR9XHU5MzQ0XHV7MjE5ZGJ9XHU4MmVlXHV7MjNjYzh9XHU3ODNjXHU2NzQ0XHU2MmRmXHV7''@;'; put 'put ''MjQ5MzN9XHV7Mjg5YWF9XHV7MjAyYTB9XHV7MjZiYjN9XHV7MjEzMDV9XHU0ZmFiXHV7MjI0ZWR9XHU1MDA4XHV7MjZkMjl9XHV7MjdhODR9XHV7MjM2MDB9XHV7MjRhYjF9XHV7MjI1MTN9XHU1MDI5XHV7MjAzN2V9XHU1ZmE0XHV7MjAzODB9XHV7MjAzNDd9XHU2ZWRiXHV7MjA0MWZ9XHU1''@;'; put 'put ''MDdkXHU1MTAxXHUzNDdhXHU1MTBlXHU5ODZjXHUzNzQzXHU4NDE2XHV7MjQ5YTR9XHV7MjA0ODd9XHU1MTYwXHV7MjMzYjR9XHU1MTZhXHV7MjBiZmZ9XHV7MjIwZmN9XHV7MjAyZTV9XHV7MjI1MzB9XHV7MjA1OGV9XHV7MjMyMzN9XHV7MjE5ODN9XHU1YjgyXHU4NzdkXHV7MjA1YjN9XHV7''@;'; put 'put ''MjNjOTl9XHU1MWIyXHU1MWI4Il0sWyJmYWExIiwiXHU5ZDM0XHU1MWM5XHU1MWNmXHU1MWQxXHUzY2RjXHU1MWQzXHV7MjRhYTZ9XHU1MWIzXHU1MWUyXHU1MzQyXHU1MWVkXHU4M2NkXHU2OTNlXHV7MjM3MmR9XHU1ZjdiXHU1MjBiXHU1MjI2XHU1MjNjXHU1MmI1XHU1MjU3XHU1Mjk0XHU1''@;'; put 'put ''MmI5XHU1MmM1XHU3YzE1XHU4NTQyXHU1MmUwXHU4NjBkXHV7MjZiMTN9XHU1MzA1XHV7MjhhZGV9XHU1NTQ5XHU2ZWQ5XHV7MjNmODB9XHV7MjA5NTR9XHV7MjNmZWN9XHU1MzMzXHU1MzQ0XHV7MjBiZTJ9XHU2Y2NiXHV7MjE3MjZ9XHU2ODFiXHU3M2Q1XHU2MDRhXHUzZWFhXHUzOGNjXHV7''@;'; put 'put ''MjE2ZTh9XHU3MWRkXHU0NGEyXHU1MzZkXHU1Mzc0XHV7Mjg2YWJ9XHU1MzdlXHU1MzdmXHV7MjE1OTZ9XHV7MjE2MTN9XHU3N2U2XHU1MzkzXHV7MjhhOWJ9XHU1M2EwXHU1M2FiXHU1M2FlXHU3M2E3XHV7MjU3NzJ9XHUzZjU5XHU3MzljXHU1M2MxXHU1M2M1XHU2YzQ5XHU0ZTQ5XHU1N2Zl''@;'; put 'put ''XHU1M2Q5XHUzYWFiXHV7MjBiOGZ9XHU1M2UwXHV7MjNmZWJ9XHV7MjJkYTN9XHU1M2Y2XHV7MjBjNzd9XHU1NDEzXHU3MDc5XHU1NTJiXHU2NjU3XHU2ZDViXHU1NDZkXHV7MjZiNTN9XHV7MjBkNzR9XHU1NTVkXHU1NDhmXHU1NGE0XHU0N2E2XHV7MjE3MGR9XHV7MjBlZGR9XHUzZGI0XHV7''@;'; put 'put ''MjBkNGR9Il0sWyJmYjQwIiwiXHV7Mjg5YmN9XHV7MjI2OTh9XHU1NTQ3XHU0Y2VkXHU1NDJmXHU3NDE3XHU1NTg2XHU1NWE5XHU1NjA1XHV7MjE4ZDd9XHV7MjQwM2F9XHU0NTUyXHV7MjQ0MzV9XHU2NmIzXHV7MjEwYjR9XHU1NjM3XHU2NmNkXHV7MjMyOGF9XHU2NmE0XHU2NmFkXHU1NjRk''@;'; put 'put ''XHU1NjRmXHU3OGYxXHU1NmYxXHU5Nzg3XHU1M2ZlXHU1NzAwXHU1NmVmXHU1NmVkXHV7MjhiNjZ9XHUzNjIzXHV7MjEyNGZ9XHU1NzQ2XHV7MjQxYTV9XHU2YzZlXHU3MDhiXHU1NzQyXHUzNmIxXHV7MjZjN2V9XHU1N2U2XHV7MjE0MTZ9XHU1ODAzXHV7MjE0NTR9XHV7MjQzNjN9XHU1ODI2''@;'; put 'put ''XHV7MjRiZjV9XHU1ODVjXHU1OGFhXHUzNTYxXHU1OGUwXHU1OGRjXHV7MjEyM2N9XHU1OGZiXHU1YmZmXHU1NzQzXHV7MmExNTB9XHV7MjQyNzh9XHU5M2QzXHUzNWExXHU1OTFmXHU2OGE2XHUzNmMzXHU2ZTU5Il0sWyJmYmExIiwiXHV7MjE2M2V9XHU1YTI0XHU1NTUzXHV7MjE2OTJ9XHU4''@;'; put 'put ''NTA1XHU1OWM5XHV7MjBkNGV9XHV7MjZjODF9XHV7MjZkMmF9XHV7MjE3ZGN9XHU1OWQ5XHV7MjE3ZmJ9XHV7MjE3YjJ9XHV7MjZkYTZ9XHU2ZDcxXHV7MjE4Mjh9XHV7MjE2ZDV9XHU1OWY5XHV7MjZlNDV9XHU1YWFiXHU1YTYzXHUzNmU2XHV7MjQ5YTl9XHU1YTc3XHUzNzA4XHU1YTk2XHU3''@;'; put 'put ''NDY1XHU1YWQzXHV7MjZmYTF9XHV7MjI1NTR9XHUzZDg1XHV7MjE5MTF9XHUzNzMyXHV7MjE2Yjh9XHU1ZTgzXHU1MmQwXHU1Yjc2XHU2NTg4XHU1YjdjXHV7MjdhMGV9XHU0MDA0XHU0ODVkXHV7MjAyMDR9XHU1YmQ1XHU2MTYwXHV7MjFhMzR9XHV7MjU5Y2N9XHV7MjA1YTV9XHU1YmYzXHU1''@;'; put 'put ''YjlkXHU0ZDEwXHU1YzA1XHV7MjFiNDR9XHU1YzEzXHU3M2NlXHU1YzE0XHV7MjFjYTV9XHV7MjZiMjh9XHU1YzQ5XHU0OGRkXHU1Yzg1XHU1Y2U5XHU1Y2VmXHU1ZDhiXHV7MjFkZjl9XHV7MjFlMzd9XHU1ZDEwXHU1ZDE4XHU1ZDQ2XHV7MjFlYTR9XHU1Y2JhXHU1ZGQ3XHU4MmZjXHUzODJk''@;'; put 'put ''XHV7MjQ5MDF9XHV7MjIwNDl9XHV7MjIxNzN9XHU4Mjg3XHUzODM2XHUzYmMyXHU1ZTJlXHU2YThhXHU1ZTc1XHU1ZTdhXHV7MjQ0YmN9XHV7MjBjZDN9XHU1M2E2XHU0ZWI3XHU1ZWQwXHU1M2E4XHV7MjE3NzF9XHU1ZTA5XHU1ZWY0XHV7Mjg0ODJ9Il0sWyJmYzQwIiwiXHU1ZWY5XHU1ZWZi''@;'; put 'put ''XHUzOGEwXHU1ZWZjXHU2ODNlXHU5NDFiXHU1ZjBkXHV7MjAxYzF9XHV7MmY4OTR9XHUzYWRlXHU0OGFlXHV7MjEzM2F9XHU1ZjNhXHV7MjY4ODh9XHV7MjIzZDB9XHU1ZjU4XHV7MjI0NzF9XHU1ZjYzXHU5N2JkXHV7MjZlNmV9XHU1ZjcyXHU5MzQwXHV7MjhhMzZ9XHU1ZmE3XHU1ZGI2XHUz''@;'; put 'put ''ZDVmXHV7MjUyNTB9XHV7MjFmNmF9XHV7MjcwZjh9XHV7MjI2Njh9XHU5MWQ2XHV7MjAyOWV9XHV7MjhhMjl9XHU2MDMxXHU2Njg1XHV7MjE4Nzd9XHUzOTYzXHUzZGM3XHUzNjM5XHU1NzkwXHV7MjI3YjR9XHU3OTcxXHUzZTQwXHU2MDllXHU2MGE0XHU2MGIzXHV7MjQ5ODJ9XHV7MjQ5OGZ9''@;'; put 'put ''XHV7MjdhNTN9XHU3NGE0XHU1MGUxXHU1YWEwXHU2MTY0XHU4NDI0XHU2MTQyXHV7MmY4YTZ9XHV7MjZlZDJ9XHU2MTgxXHU1MWY0XHV7MjA2NTZ9XHU2MTg3XHU1YmFhXHV7MjNmYjd9Il0sWyJmY2ExIiwiXHV7MjI4NWZ9XHU2MWQzXHV7MjhiOWR9XHV7Mjk5NWR9XHU2MWQwXHUzOTMyXHV7''@;'; put 'put ''MjI5ODB9XHV7MjI4YzF9XHU2MDIzXHU2MTVjXHU2NTFlXHU2MzhiXHV7MjAxMTh9XHU2MmM1XHV7MjE3NzB9XHU2MmQ1XHV7MjJlMGR9XHU2MzZjXHV7MjQ5ZGZ9XHUzYTE3XHU2NDM4XHU2M2Y4XHV7MjEzOGV9XHV7MjE3ZmN9XHU2NDkwXHU2ZjhhXHV7MjJlMzZ9XHU5ODE0XHV7MjQwOGN9''@;'; put 'put ''XHV7MjU3MWR9XHU2NGUxXHU2NGU1XHU5NDdiXHUzYTY2XHU2NDNhXHUzYTU3XHU2NTRkXHU2ZjE2XHV7MjRhMjh9XHV7MjRhMjN9XHU2NTg1XHU2NTZkXHU2NTVmXHV7MjMwN2V9XHU2NWI1XHV7MjQ5NDB9XHU0YjM3XHU2NWQxXHU0MGQ4XHV7MjE4Mjl9XHU2NWUwXHU2NWUzXHU1ZmRmXHV7''@;'; put 'put ''MjM0MDB9XHU2NjE4XHV7MjMxZjd9XHV7MjMxZjh9XHU2NjQ0XHV7MjMxYTR9XHV7MjMxYTV9XHU2NjRiXHV7MjBlNzV9XHU2NjY3XHV7MjUxZTZ9XHU2NjczXHU2Njc0XHV7MjFlM2R9XHV7MjMyMzF9XHV7Mjg1ZjR9XHV7MjMxYzh9XHV7MjUzMTN9XHU3N2M1XHV7MjI4Zjd9XHU5OWE0XHU2''@;'; put 'put ''NzAyXHV7MjQzOWN9XHV7MjRhMjF9XHUzYjJiXHU2OWZhXHV7MjM3YzJ9XHU2NzVlXHU2NzY3XHU2NzYyXHV7MjQxY2R9XHV7MjkwZWR9XHU2N2Q3XHU0NGU5XHU2ODIyXHU2ZTUwXHU5MjNjXHU2ODAxXHV7MjMzZTZ9XHV7MjZkYTB9XHU2ODVkIl0sWyJmZDQwIiwiXHV7MjM0NmZ9XHU2OWUx''@;'; put 'put ''XHU2YTBiXHV7MjhhZGZ9XHU2OTczXHU2OGMzXHV7MjM1Y2R9XHU2OTAxXHU2OTAwXHUzZDMyXHUzYTAxXHV7MjM2M2N9XHUzYjgwXHU2N2FjXHU2OTYxXHV7MjhhNGF9XHU0MmZjXHU2OTM2XHU2OTk4XHUzYmExXHV7MjAzYzl9XHU4MzYzXHU1MDkwXHU2OWY5XHV7MjM2NTl9XHV7MjIxMmF9''@;'; put 'put ''XHU2YTQ1XHV7MjM3MDN9XHU2YTlkXHUzYmYzXHU2N2IxXHU2YWM4XHV7MjkxOWN9XHUzYzBkXHU2YjFkXHV7MjA5MjN9XHU2MGRlXHU2YjM1XHU2Yjc0XHV7MjI3Y2R9XHU2ZWI1XHV7MjNhZGJ9XHV7MjAzYjV9XHV7MjE5NTh9XHUzNzQwXHU1NDIxXHV7MjNiNWF9XHU2YmUxXHV7MjNlZmN9''@;'; put 'put ''XHU2YmRjXHU2YzM3XHV7MjI0OGJ9XHV7MjQ4ZjF9XHV7MjZiNTF9XHU2YzVhXHU4MjI2XHU2Yzc5XHV7MjNkYmN9XHU0NGM1XHV7MjNkYmR9XHV7MjQxYTR9XHV7MjQ5MGN9XHV7MjQ5MDB9Il0sWyJmZGExIiwiXHV7MjNjYzl9XHUzNmU1XHUzY2ViXHV7MjBkMzJ9XHU5YjgzXHV7MjMxZjl9''@;'; put 'put ''XHV7MjI0OTF9XHU3ZjhmXHU2ODM3XHV7MjZkMjV9XHV7MjZkYTF9XHV7MjZkZWJ9XHU2ZDk2XHU2ZDVjXHU2ZTdjXHU2ZjA0XHV7MjQ5N2Z9XHV7MjQwODV9XHV7MjZlNzJ9XHU4NTMzXHV7MjZmNzR9XHU1MWM3XHU2YzljXHU2ZTFkXHU4NDJlXHV7MjhiMjF9XHU2ZTJmXHV7MjNlMmZ9XHU3''@;'; put 'put ''NDUzXHV7MjNmODJ9XHU3OWNjXHU2ZTRmXHU1YTkxXHV7MjMwNGJ9XHU2ZmY4XHUzNzBkXHU2ZjlkXHV7MjNlMzB9XHU2ZWZhXHV7MjE0OTd9XHV7MjQwM2R9XHU0NTU1XHU5M2YwXHU2ZjQ0XHU2ZjVjXHUzZDRlXHU2Zjc0XHV7MjkxNzB9XHUzZDNiXHU2ZjlmXHV7MjQxNDR9XHU2ZmQzXHV7''@;'; put 'put ''MjQwOTF9XHV7MjQxNTV9XHV7MjQwMzl9XHV7MjNmZjB9XHV7MjNmYjR9XHV7MjQxM2Z9XHU1MWRmXHV7MjQxNTZ9XHV7MjQxNTd9XHV7MjQxNDB9XHV7MjYxZGR9XHU3MDRiXHU3MDdlXHU3MGE3XHU3MDgxXHU3MGNjXHU3MGQ1XHU3MGQ2XHU3MGRmXHU0MTA0XHUzZGU4XHU3MWI0XHU3MTk2''@;'; put 'put ''XHV7MjQyNzd9XHU3MTJiXHU3MTQ1XHU1YTg4XHU3MTRhXHU3MTZlXHU1YzljXHV7MjQzNjV9XHU3MTRmXHU5MzYyXHV7MjQyYzF9XHU3MTJjXHV7MjQ0NWF9XHV7MjRhMjd9XHV7MjRhMjJ9XHU3MWJhXHV7MjhiZTh9XHU3MGJkXHU3MjBlIl0sWyJmZTQwIiwiXHU5NDQyXHU3MjE1XHU1OTEx''@;'; put 'put ''XHU5NDQzXHU3MjI0XHU5MzQxXHV7MjU2MDV9XHU3MjJlXHU3MjQwXHV7MjQ5NzR9XHU2OGJkXHU3MjU1XHU3MjU3XHUzZTU1XHV7MjMwNDR9XHU2ODBkXHU2ZjNkXHU3MjgyXHU3MzJhXHU3MzJiXHV7MjQ4MjN9XHV7Mjg4MmJ9XHU0OGVkXHV7Mjg4MDR9XHU3MzI4XHU3MzJlXHU3M2NmXHU3''@;'; put 'put ''M2FhXHV7MjBjM2F9XHV7MjZhMmV9XHU3M2M5XHU3NDQ5XHV7MjQxZTJ9XHV7MjE2ZTd9XHV7MjRhMjR9XHU2NjIzXHUzNmM1XHV7MjQ5Yjd9XHV7MjQ5OGR9XHV7MjQ5ZmJ9XHU3M2Y3XHU3NDE1XHU2OTAzXHV7MjRhMjZ9XHU3NDM5XHV7MjA1YzN9XHUzZWQ3XHU3NDVjXHV7MjI4YWR9XHU3''@;'; put 'put ''NDYwXHV7MjhlYjJ9XHU3NDQ3XHU3M2U0XHU3NDc2XHU4M2I5XHU3NDZjXHUzNzMwXHU3NDc0XHU5M2YxXHU2YTJjXHU3NDgyXHU0OTUzXHV7MjRhOGN9Il0sWyJmZWExIiwiXHV7MjQxNWZ9XHV7MjRhNzl9XHV7MjhiOGZ9XHU1YjQ2XHV7MjhjMDN9XHV7MjE4OWV9XHU3NGM4XHV7MjE5ODh9''@;'; put 'put ''XHU3NTBlXHU3NGU5XHU3NTFlXHV7MjhlZDl9XHV7MjFhNGJ9XHU1YmQ3XHV7MjhlYWN9XHU5Mzg1XHU3NTRkXHU3NTRhXHU3NTY3XHU3NTZlXHV7MjRmODJ9XHUzZjA0XHV7MjRkMTN9XHU3NThlXHU3NDVkXHU3NTllXHU3NWI0XHU3NjAyXHU3NjJjXHU3NjUxXHU3NjRmXHU3NjZmXHU3Njc2''@;'; put 'put ''XHV7MjYzZjV9XHU3NjkwXHU4MWVmXHUzN2Y4XHV7MjY5MTF9XHV7MjY5MGV9XHU3NmExXHU3NmE1XHU3NmI3XHU3NmNjXHV7MjZmOWZ9XHU4NDYyXHV7MjUwOWR9XHV7MjUxN2R9XHV7MjFlMWN9XHU3NzFlXHU3NzI2XHU3NzQwXHU2NGFmXHV7MjUyMjB9XHU3NzU4XHV7MjMyYWN9XHU3N2Fm''@;'; put 'put ''XHV7Mjg5NjR9XHV7Mjg5Njh9XHV7MjE2YzF9XHU3N2Y0XHU3ODA5XHV7MjEzNzZ9XHV7MjRhMTJ9XHU2OGNhXHU3OGFmXHU3OGM3XHU3OGQzXHU5NmE1XHU3OTJlXHV7MjU1ZTB9XHU3OGQ3XHU3OTM0XHU3OGIxXHV7Mjc2MGN9XHU4ZmI4XHU4ODg0XHV7MjhiMmJ9XHV7MjYwODN9XHV7MjI2''@;'; put 'put ''MWN9XHU3OTg2XHU4OTAwXHU2OTAyXHU3OTgwXHV7MjU4NTd9XHU3OTlkXHV7MjdiMzl9XHU3OTNjXHU3OWE5XHU2ZTJhXHV7MjcxMjZ9XHUzZWE4XHU3OWM2XHV7MjkxMGR9XHU3OWQ0Il1dJyl9LDEzMzM2OldlPT57InVzZSBzdHJpY3QiO1dlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIs''@;'; put 'put ''IlxcdTAwMDAiLDEyNywiXHUyMGFjIl0sWyI4MTQwIiwiXHU0ZTAyXHU0ZTA0XHU0ZTA1XHU0ZTA2XHU0ZTBmXHU0ZTEyXHU0ZTE3XHU0ZTFmXHU0ZTIwXHU0ZTIxXHU0ZTIzXHU0ZTI2XHU0ZTI5XHU0ZTJlXHU0ZTJmXHU0ZTMxXHU0ZTMzXHU0ZTM1XHU0ZTM3XHU0ZTNjXHU0ZTQwXHU0ZTQx''@;'; put 'put ''XHU0ZTQyXHU0ZTQ0XHU0ZTQ2XHU0ZTRhXHU0ZTUxXHU0ZTU1XHU0ZTU3XHU0ZTVhXHU0ZTViXHU0ZTYyXHU0ZTYzXHU0ZTY0XHU0ZTY1XHU0ZTY3XHU0ZTY4XHU0ZTZhIiw1LCJcdTRlNzJcdTRlNzQiLDksIlx1NGU3ZiIsNiwiXHU0ZTg3XHU0ZThhIl0sWyI4MTgwIiwiXHU0ZTkwXHU0ZTk2''@;'; put 'put ''XHU0ZTk3XHU0ZTk5XHU0ZTljXHU0ZTlkXHU0ZTllXHU0ZWEzXHU0ZWFhXHU0ZWFmXHU0ZWIwXHU0ZWIxXHU0ZWI0XHU0ZWI2XHU0ZWI3XHU0ZWI4XHU0ZWI5XHU0ZWJjXHU0ZWJkXHU0ZWJlXHU0ZWM4XHU0ZWNjXHU0ZWNmXHU0ZWQwXHU0ZWQyXHU0ZWRhXHU0ZWRiXHU0ZWRjXHU0ZWUwXHU0''@;'; put 'put ''ZWUyXHU0ZWU2XHU0ZWU3XHU0ZWU5XHU0ZWVkXHU0ZWVlXHU0ZWVmXHU0ZWYxXHU0ZWY0XHU0ZWY4XHU0ZWY5XHU0ZWZhXHU0ZWZjXHU0ZWZlXHU0ZjAwXHU0ZjAyIiw2LCJcdTRmMGJcdTRmMGNcdTRmMTIiLDQsIlx1NGYxY1x1NGYxZFx1NGYyMVx1NGYyM1x1NGYyOFx1NGYyOVx1NGYyY1x1''@;'; put 'put ''NGYyZFx1NGYyZVx1NGYzMVx1NGYzM1x1NGYzNVx1NGYzN1x1NGYzOVx1NGYzYlx1NGYzZSIsNCwiXHU0ZjQ0XHU0ZjQ1XHU0ZjQ3Iiw1LCJcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNjFcdTRmNjJcdTRmNjZcdTRmNjhcdTRmNmFcdTRmNmJcdTRmNmRcdTRmNmVcdTRmNzFcdTRmNzJcdTRmNzVc''@;'; put 'put ''dTRmNzdcdTRmNzhcdTRmNzlcdTRmN2FcdTRmN2RcdTRmODBcdTRmODFcdTRmODJcdTRmODVcdTRmODZcdTRmODdcdTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTVcdTRmOTZcdTRmOThcdTRmOTlcdTRmOWFcdTRmOWNcdTRmOWVcdTRmOWZcdTRmYTFcdTRmYTIiXSxb''@;'; put 'put ''IjgyNDAiLCJcdTRmYTRcdTRmYWJcdTRmYWRcdTRmYjAiLDQsIlx1NGZiNiIsOCwiXHU0ZmMwXHU0ZmMxXHU0ZmMyXHU0ZmM2XHU0ZmM3XHU0ZmM4XHU0ZmM5XHU0ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmQyIiw0LCJcdTRmZDlcdTRmZGJcdTRmZTBcdTRmZTJcdTRmZTRcdTRmZTVcdTRmZTdcdTRm''@;'; put 'put ''ZWJcdTRmZWNcdTRmZjBcdTRmZjJcdTRmZjRcdTRmZjVcdTRmZjZcdTRmZjdcdTRmZjlcdTRmZmJcdTRmZmNcdTRmZmRcdTRmZmYiLDExXSxbIjgyODAiLCJcdTUwMGJcdTUwMGVcdTUwMTBcdTUwMTFcdTUwMTNcdTUwMTVcdTUwMTZcdTUwMTdcdTUwMWJcdTUwMWRcdTUwMWVcdTUwMjBcdTUw''@;'; put 'put ''MjJcdTUwMjNcdTUwMjRcdTUwMjdcdTUwMmJcdTUwMmYiLDEwLCJcdTUwM2JcdTUwM2RcdTUwM2ZcdTUwNDBcdTUwNDFcdTUwNDJcdTUwNDRcdTUwNDVcdTUwNDZcdTUwNDlcdTUwNGFcdTUwNGJcdTUwNGRcdTUwNTAiLDQsIlx1NTA1Nlx1NTA1N1x1NTA1OFx1NTA1OVx1NTA1Ylx1NTA1ZCIs''@;'; put 'put ''NywiXHU1MDY2Iiw1LCJcdTUwNmQiLDgsIlx1NTA3OFx1NTA3OVx1NTA3YVx1NTA3Y1x1NTA3ZFx1NTA4MVx1NTA4Mlx1NTA4M1x1NTA4NFx1NTA4Nlx1NTA4N1x1NTA4OVx1NTA4YVx1NTA4Ylx1NTA4Y1x1NTA4ZSIsMjAsIlx1NTBhNFx1NTBhNlx1NTBhYVx1NTBhYlx1NTBhZCIsNCwiXHU1''@;'; put 'put ''MGIzIiw2LCJcdTUwYmMiXSxbIjgzNDAiLCJcdTUwYmQiLDE3LCJcdTUwZDAiLDUsIlx1NTBkN1x1NTBkOFx1NTBkOVx1NTBkYiIsMTAsIlx1NTBlOFx1NTBlOVx1NTBlYVx1NTBlYlx1NTBlZlx1NTBmMFx1NTBmMVx1NTBmMlx1NTBmNFx1NTBmNiIsNCwiXHU1MGZjIiw5LCJcdTUxMDgiXSxb''@;'; put 'put ''IjgzODAiLCJcdTUxMDlcdTUxMGFcdTUxMGMiLDUsIlx1NTExMyIsMTMsIlx1NTEyMiIsMjgsIlx1NTE0Mlx1NTE0N1x1NTE0YVx1NTE0Y1x1NTE0ZVx1NTE0Zlx1NTE1MFx1NTE1Mlx1NTE1M1x1NTE1N1x1NTE1OFx1NTE1OVx1NTE1Ylx1NTE1ZCIsNCwiXHU1MTYzXHU1MTY0XHU1MTY2XHU1''@;'; put 'put ''MTY3XHU1MTY5XHU1MTZhXHU1MTZmXHU1MTcyXHU1MTdhXHU1MTdlXHU1MTdmXHU1MTgzXHU1MTg0XHU1MTg2XHU1MTg3XHU1MThhXHU1MThiXHU1MThlXHU1MThmXHU1MTkwXHU1MTkxXHU1MTkzXHU1MTk0XHU1MTk4XHU1MTlhXHU1MTlkXHU1MTllXHU1MTlmXHU1MWExXHU1MWEzXHU1MWE2''@;'; put 'put ''Iiw0LCJcdTUxYWRcdTUxYWVcdTUxYjRcdTUxYjhcdTUxYjlcdTUxYmFcdTUxYmVcdTUxYmZcdTUxYzFcdTUxYzJcdTUxYzNcdTUxYzVcdTUxYzhcdTUxY2FcdTUxY2RcdTUxY2VcdTUxZDBcdTUxZDIiLDVdLFsiODQ0MCIsIlx1NTFkOFx1NTFkOVx1NTFkYVx1NTFkY1x1NTFkZVx1NTFkZlx1''@;'; put 'put ''NTFlMlx1NTFlM1x1NTFlNSIsNSwiXHU1MWVjXHU1MWVlXHU1MWYxXHU1MWYyXHU1MWY0XHU1MWY3XHU1MWZlXHU1MjA0XHU1MjA1XHU1MjA5XHU1MjBiXHU1MjBjXHU1MjBmXHU1MjEwXHU1MjEzXHU1MjE0XHU1MjE1XHU1MjFjXHU1MjFlXHU1MjFmXHU1MjIxXHU1MjIyXHU1MjIzXHU1MjI1''@;'; put 'put ''XHU1MjI2XHU1MjI3XHU1MjJhXHU1MjJjXHU1MjJmXHU1MjMxXHU1MjMyXHU1MjM0XHU1MjM1XHU1MjNjXHU1MjNlXHU1MjQ0Iiw1LCJcdTUyNGJcdTUyNGVcdTUyNGZcdTUyNTJcdTUyNTNcdTUyNTVcdTUyNTdcdTUyNTgiXSxbIjg0ODAiLCJcdTUyNTlcdTUyNWFcdTUyNWJcdTUyNWRcdTUy''@;'; put 'put ''NWZcdTUyNjBcdTUyNjJcdTUyNjNcdTUyNjRcdTUyNjZcdTUyNjhcdTUyNmJcdTUyNmNcdTUyNmRcdTUyNmVcdTUyNzBcdTUyNzFcdTUyNzMiLDksIlx1NTI3ZVx1NTI4MFx1NTI4MyIsNCwiXHU1Mjg5Iiw2LCJcdTUyOTFcdTUyOTJcdTUyOTQiLDYsIlx1NTI5Y1x1NTJhNFx1NTJhNVx1NTJh''@;'; put 'put ''Nlx1NTJhN1x1NTJhZVx1NTJhZlx1NTJiMFx1NTJiNCIsOSwiXHU1MmMwXHU1MmMxXHU1MmMyXHU1MmM0XHU1MmM1XHU1MmM2XHU1MmM4XHU1MmNhXHU1MmNjXHU1MmNkXHU1MmNlXHU1MmNmXHU1MmQxXHU1MmQzXHU1MmQ0XHU1MmQ1XHU1MmQ3XHU1MmQ5Iiw1LCJcdTUyZTBcdTUyZTFcdTUy''@;'; put 'put ''ZTJcdTUyZTNcdTUyZTUiLDEwLCJcdTUyZjEiLDcsIlx1NTJmYlx1NTJmY1x1NTJmZFx1NTMwMVx1NTMwMlx1NTMwM1x1NTMwNFx1NTMwN1x1NTMwOVx1NTMwYVx1NTMwYlx1NTMwY1x1NTMwZSJdLFsiODU0MCIsIlx1NTMxMVx1NTMxMlx1NTMxM1x1NTMxNFx1NTMxOFx1NTMxYlx1NTMxY1x1''@;'; put 'put ''NTMxZVx1NTMxZlx1NTMyMlx1NTMyNFx1NTMyNVx1NTMyN1x1NTMyOFx1NTMyOVx1NTMyYlx1NTMyY1x1NTMyZFx1NTMyZiIsOSwiXHU1MzNjXHU1MzNkXHU1MzQwXHU1MzQyXHU1MzQ0XHU1MzQ2XHU1MzRiXHU1MzRjXHU1MzRkXHU1MzUwXHU1MzU0XHU1MzU4XHU1MzU5XHU1MzViXHU1MzVk''@;'; put 'put ''XHU1MzY1XHU1MzY4XHU1MzZhXHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc2XHU1Mzc5XHU1MzdiXHU1MzdjXHU1MzdkXHU1MzdlXHU1MzgwXHU1MzgxXHU1MzgzXHU1Mzg3XHU1Mzg4XHU1MzhhXHU1MzhlXHU1MzhmIl0sWyI4NTgwIiwiXHU1MzkwIiw0LCJcdTUzOTZcdTUzOTdcdTUzOTlcdTUz''@;'; put 'put ''OWJcdTUzOWNcdTUzOWVcdTUzYTBcdTUzYTFcdTUzYTRcdTUzYTdcdTUzYWFcdTUzYWJcdTUzYWNcdTUzYWRcdTUzYWYiLDYsIlx1NTNiN1x1NTNiOFx1NTNiOVx1NTNiYVx1NTNiY1x1NTNiZFx1NTNiZVx1NTNjMFx1NTNjMyIsNCwiXHU1M2NlXHU1M2NmXHU1M2QwXHU1M2QyXHU1M2QzXHU1''@;'; put 'put ''M2Q1XHU1M2RhXHU1M2RjXHU1M2RkXHU1M2RlXHU1M2UxXHU1M2UyXHU1M2U3XHU1M2Y0XHU1M2ZhXHU1M2ZlXHU1M2ZmXHU1NDAwXHU1NDAyXHU1NDA1XHU1NDA3XHU1NDBiXHU1NDE0XHU1NDE4XHU1NDE5XHU1NDFhXHU1NDFjXHU1NDIyXHU1NDI0XHU1NDI1XHU1NDJhXHU1NDMwXHU1NDMz''@;'; put 'put ''XHU1NDM2XHU1NDM3XHU1NDNhXHU1NDNkXHU1NDNmXHU1NDQxXHU1NDQyXHU1NDQ0XHU1NDQ1XHU1NDQ3XHU1NDQ5XHU1NDRjXHU1NDRkXHU1NDRlXHU1NDRmXHU1NDUxXHU1NDVhXHU1NDVkIiw0LCJcdTU0NjNcdTU0NjVcdTU0NjdcdTU0NjkiLDcsIlx1NTQ3NFx1NTQ3OVx1NTQ3YVx1NTQ3''@;'; put 'put ''ZVx1NTQ3Zlx1NTQ4MVx1NTQ4M1x1NTQ4NVx1NTQ4N1x1NTQ4OFx1NTQ4OVx1NTQ4YVx1NTQ4ZFx1NTQ5MVx1NTQ5M1x1NTQ5N1x1NTQ5OFx1NTQ5Y1x1NTQ5ZVx1NTQ5Zlx1NTRhMFx1NTRhMSJdLFsiODY0MCIsIlx1NTRhMlx1NTRhNVx1NTRhZVx1NTRiMFx1NTRiMlx1NTRiNVx1NTRiNlx1''@;'; put 'put ''NTRiN1x1NTRiOVx1NTRiYVx1NTRiY1x1NTRiZVx1NTRjM1x1NTRjNVx1NTRjYVx1NTRjYlx1NTRkNlx1NTRkOFx1NTRkYlx1NTRlMCIsNCwiXHU1NGViXHU1NGVjXHU1NGVmXHU1NGYwXHU1NGYxXHU1NGY0Iiw1LCJcdTU0ZmJcdTU0ZmVcdTU1MDBcdTU1MDJcdTU1MDNcdTU1MDRcdTU1MDVc''@;'; put 'put ''dTU1MDhcdTU1MGEiLDQsIlx1NTUxMlx1NTUxM1x1NTUxNSIsNSwiXHU1NTFjXHU1NTFkXHU1NTFlXHU1NTFmXHU1NTIxXHU1NTI1XHU1NTI2Il0sWyI4NjgwIiwiXHU1NTI4XHU1NTI5XHU1NTJiXHU1NTJkXHU1NTMyXHU1NTM0XHU1NTM1XHU1NTM2XHU1NTM4XHU1NTM5XHU1NTNhXHU1NTNi''@;'; put 'put ''XHU1NTNkXHU1NTQwXHU1NTQyXHU1NTQ1XHU1NTQ3XHU1NTQ4XHU1NTRiIiw0LCJcdTU1NTFcdTU1NTJcdTU1NTNcdTU1NTRcdTU1NTciLDQsIlx1NTU1ZFx1NTU1ZVx1NTU1Zlx1NTU2MFx1NTU2Mlx1NTU2M1x1NTU2OFx1NTU2OVx1NTU2Ylx1NTU2ZiIsNSwiXHU1NTc5XHU1NTdhXHU1NTdk''@;'; put 'put ''XHU1NTdmXHU1NTg1XHU1NTg2XHU1NThjXHU1NThkXHU1NThlXHU1NTkwXHU1NTkyXHU1NTkzXHU1NTk1XHU1NTk2XHU1NTk3XHU1NTlhXHU1NTliXHU1NTllXHU1NWEwIiw2LCJcdTU1YTgiLDgsIlx1NTViMlx1NTViNFx1NTViNlx1NTViOFx1NTViYVx1NTViY1x1NTViZiIsNCwiXHU1NWM2''@;'; put 'put ''XHU1NWM3XHU1NWM4XHU1NWNhXHU1NWNiXHU1NWNlXHU1NWNmXHU1NWQwXHU1NWQ1XHU1NWQ3Iiw0LCJcdTU1ZGVcdTU1ZTBcdTU1ZTJcdTU1ZTdcdTU1ZTlcdTU1ZWRcdTU1ZWVcdTU1ZjBcdTU1ZjFcdTU1ZjRcdTU1ZjZcdTU1ZjgiLDQsIlx1NTVmZlx1NTYwMlx1NTYwM1x1NTYwNFx1NTYw''@;'; put 'put ''NSJdLFsiODc0MCIsIlx1NTYwNlx1NTYwN1x1NTYwYVx1NTYwYlx1NTYwZFx1NTYxMCIsNywiXHU1NjE5XHU1NjFhXHU1NjFjXHU1NjFkXHU1NjIwXHU1NjIxXHU1NjIyXHU1NjI1XHU1NjI2XHU1NjI4XHU1NjI5XHU1NjJhXHU1NjJiXHU1NjJlXHU1NjJmXHU1NjMwXHU1NjMzXHU1NjM1XHU1''@;'; put 'put ''NjM3XHU1NjM4XHU1NjNhXHU1NjNjXHU1NjNkXHU1NjNlXHU1NjQwIiwxMSwiXHU1NjRmIiw0LCJcdTU2NTVcdTU2NTZcdTU2NWFcdTU2NWJcdTU2NWQiLDRdLFsiODc4MCIsIlx1NTY2M1x1NTY2NVx1NTY2Nlx1NTY2N1x1NTY2ZFx1NTY2ZVx1NTY2Zlx1NTY3MFx1NTY3Mlx1NTY3M1x1NTY3''@;'; put 'put ''NFx1NTY3NVx1NTY3N1x1NTY3OFx1NTY3OVx1NTY3YVx1NTY3ZCIsNywiXHU1Njg3Iiw2LCJcdTU2OTBcdTU2OTFcdTU2OTJcdTU2OTQiLDE0LCJcdTU2YTQiLDEwLCJcdTU2YjAiLDYsIlx1NTZiOFx1NTZiOVx1NTZiYVx1NTZiYlx1NTZiZCIsMTIsIlx1NTZjYiIsOCwiXHU1NmQ1XHU1NmQ2''@;'; put 'put ''XHU1NmQ4XHU1NmQ5XHU1NmRjXHU1NmUzXHU1NmU1Iiw1LCJcdTU2ZWNcdTU2ZWVcdTU2ZWZcdTU2ZjJcdTU2ZjNcdTU2ZjZcdTU2ZjdcdTU2ZjhcdTU2ZmJcdTU2ZmNcdTU3MDBcdTU3MDFcdTU3MDJcdTU3MDVcdTU3MDdcdTU3MGIiLDZdLFsiODg0MCIsIlx1NTcxMiIsOSwiXHU1NzFkXHU1''@;'; put 'put ''NzFlXHU1NzIwXHU1NzIxXHU1NzIyXHU1NzI0XHU1NzI1XHU1NzI2XHU1NzI3XHU1NzJiXHU1NzMxXHU1NzMyXHU1NzM0Iiw0LCJcdTU3M2NcdTU3M2RcdTU3M2ZcdTU3NDFcdTU3NDNcdTU3NDRcdTU3NDVcdTU3NDZcdTU3NDhcdTU3NDlcdTU3NGJcdTU3NTIiLDQsIlx1NTc1OFx1NTc1OVx1''@;'; put 'put ''NTc2Mlx1NTc2M1x1NTc2NVx1NTc2N1x1NTc2Y1x1NTc2ZVx1NTc3MFx1NTc3MVx1NTc3Mlx1NTc3NFx1NTc3NVx1NTc3OFx1NTc3OVx1NTc3YVx1NTc3ZFx1NTc3ZVx1NTc3Zlx1NTc4MCJdLFsiODg4MCIsIlx1NTc4MVx1NTc4N1x1NTc4OFx1NTc4OVx1NTc4YVx1NTc4ZCIsNCwiXHU1Nzk0''@;'; put 'put ''Iiw2LCJcdTU3OWNcdTU3OWRcdTU3OWVcdTU3OWZcdTU3YTVcdTU3YThcdTU3YWFcdTU3YWNcdTU3YWZcdTU3YjBcdTU3YjFcdTU3YjNcdTU3YjVcdTU3YjZcdTU3YjdcdTU3YjkiLDgsIlx1NTdjNCIsNiwiXHU1N2NjXHU1N2NkXHU1N2QwXHU1N2QxXHU1N2QzXHU1N2Q2XHU1N2Q3XHU1N2Ri''@;'; put 'put ''XHU1N2RjXHU1N2RlXHU1N2UxXHU1N2UyXHU1N2UzXHU1N2U1Iiw3LCJcdTU3ZWVcdTU3ZjBcdTU3ZjFcdTU3ZjJcdTU3ZjNcdTU3ZjVcdTU3ZjZcdTU3ZjdcdTU3ZmJcdTU3ZmNcdTU3ZmVcdTU3ZmZcdTU4MDFcdTU4MDNcdTU4MDRcdTU4MDVcdTU4MDhcdTU4MDlcdTU4MGFcdTU4MGNcdTU4''@;'; put 'put ''MGVcdTU4MGZcdTU4MTBcdTU4MTJcdTU4MTNcdTU4MTRcdTU4MTZcdTU4MTdcdTU4MThcdTU4MWFcdTU4MWJcdTU4MWNcdTU4MWRcdTU4MWZcdTU4MjJcdTU4MjNcdTU4MjUiLDQsIlx1NTgyYiIsNCwiXHU1ODMxXHU1ODMyXHU1ODMzXHU1ODM0XHU1ODM2Iiw3XSxbIjg5NDAiLCJcdTU4M2Ui''@;'; put 'put ''LDUsIlx1NTg0NSIsNiwiXHU1ODRlXHU1ODRmXHU1ODUwXHU1ODUyXHU1ODUzXHU1ODU1XHU1ODU2XHU1ODU3XHU1ODU5Iiw0LCJcdTU4NWYiLDUsIlx1NTg2NiIsNCwiXHU1ODZkIiwxNiwiXHU1ODdmXHU1ODgyXHU1ODg0XHU1ODg2XHU1ODg3XHU1ODg4XHU1ODhhXHU1ODhiXHU1ODhjIl0s''@;'; put 'put ''WyI4OTgwIiwiXHU1ODhkIiw0LCJcdTU4OTQiLDQsIlx1NTg5Ylx1NTg5Y1x1NTg5ZFx1NThhMCIsNywiXHU1OGFhIiwxNywiXHU1OGJkXHU1OGJlXHU1OGJmXHU1OGMwXHU1OGMyXHU1OGMzXHU1OGM0XHU1OGM2IiwxMCwiXHU1OGQyXHU1OGQzXHU1OGQ0XHU1OGQ2IiwxMywiXHU1OGU1Iiw1''@;'; put 'put ''LCJcdTU4ZWRcdTU4ZWZcdTU4ZjFcdTU4ZjJcdTU4ZjRcdTU4ZjVcdTU4ZjdcdTU4ZjhcdTU4ZmEiLDcsIlx1NTkwM1x1NTkwNVx1NTkwNlx1NTkwOCIsNCwiXHU1OTBlXHU1OTEwXHU1OTExXHU1OTEyXHU1OTEzXHU1OTE3XHU1OTE4XHU1OTFiXHU1OTFkXHU1OTFlXHU1OTIwXHU1OTIxXHU1''@;'; put 'put ''OTIyXHU1OTIzXHU1OTI2XHU1OTI4XHU1OTJjXHU1OTMwXHU1OTMyXHU1OTMzXHU1OTM1XHU1OTM2XHU1OTNiIl0sWyI4YTQwIiwiXHU1OTNkXHU1OTNlXHU1OTNmXHU1OTQwXHU1OTQzXHU1OTQ1XHU1OTQ2XHU1OTRhXHU1OTRjXHU1OTRkXHU1OTUwXHU1OTUyXHU1OTUzXHU1OTU5XHU1OTVi''@;'; put 'put ''Iiw0LCJcdTU5NjFcdTU5NjNcdTU5NjRcdTU5NjYiLDEyLCJcdTU5NzVcdTU5NzdcdTU5N2FcdTU5N2JcdTU5N2NcdTU5N2VcdTU5N2ZcdTU5ODBcdTU5ODVcdTU5ODlcdTU5OGJcdTU5OGNcdTU5OGVcdTU5OGZcdTU5OTBcdTU5OTFcdTU5OTRcdTU5OTVcdTU5OThcdTU5OWFcdTU5OWJcdTU5''@;'; put 'put ''OWNcdTU5OWRcdTU5OWZcdTU5YTBcdTU5YTFcdTU5YTJcdTU5YTYiXSxbIjhhODAiLCJcdTU5YTdcdTU5YWNcdTU5YWRcdTU5YjBcdTU5YjFcdTU5YjMiLDUsIlx1NTliYVx1NTliY1x1NTliZFx1NTliZiIsNiwiXHU1OWM3XHU1OWM4XHU1OWM5XHU1OWNjXHU1OWNkXHU1OWNlXHU1OWNmXHU1''@;'; put 'put ''OWQ1XHU1OWQ2XHU1OWQ5XHU1OWRiXHU1OWRlIiw0LCJcdTU5ZTRcdTU5ZTZcdTU5ZTdcdTU5ZTlcdTU5ZWFcdTU5ZWJcdTU5ZWQiLDExLCJcdTU5ZmFcdTU5ZmNcdTU5ZmRcdTU5ZmVcdTVhMDBcdTVhMDJcdTVhMGFcdTVhMGJcdTVhMGRcdTVhMGVcdTVhMGZcdTVhMTBcdTVhMTJcdTVhMTRc''@;'; put 'put ''dTVhMTVcdTVhMTZcdTVhMTdcdTVhMTlcdTVhMWFcdTVhMWJcdTVhMWRcdTVhMWVcdTVhMjFcdTVhMjJcdTVhMjRcdTVhMjZcdTVhMjdcdTVhMjhcdTVhMmEiLDYsIlx1NWEzM1x1NWEzNVx1NWEzNyIsNCwiXHU1YTNkXHU1YTNlXHU1YTNmXHU1YTQxIiw0LCJcdTVhNDdcdTVhNDhcdTVhNGIi''@;'; put 'put ''LDksIlx1NWE1Nlx1NWE1N1x1NWE1OFx1NWE1OVx1NWE1YiIsNV0sWyI4YjQwIiwiXHU1YTYxXHU1YTYzXHU1YTY0XHU1YTY1XHU1YTY2XHU1YTY4XHU1YTY5XHU1YTZiIiw4LCJcdTVhNzhcdTVhNzlcdTVhN2JcdTVhN2NcdTVhN2RcdTVhN2VcdTVhODAiLDE3LCJcdTVhOTMiLDYsIlx1NWE5''@;'; put 'put ''YyIsMTMsIlx1NWFhYlx1NWFhYyJdLFsiOGI4MCIsIlx1NWFhZCIsNCwiXHU1YWI0XHU1YWI2XHU1YWI3XHU1YWI5Iiw0LCJcdTVhYmZcdTVhYzBcdTVhYzMiLDUsIlx1NWFjYVx1NWFjYlx1NWFjZCIsNCwiXHU1YWQzXHU1YWQ1XHU1YWQ3XHU1YWQ5XHU1YWRhXHU1YWRiXHU1YWRkXHU1YWRl''@;'; put 'put ''XHU1YWRmXHU1YWUyXHU1YWU0XHU1YWU1XHU1YWU3XHU1YWU4XHU1YWVhXHU1YWVjIiw0LCJcdTVhZjIiLDIyLCJcdTViMGEiLDExLCJcdTViMTgiLDI1LCJcdTViMzNcdTViMzVcdTViMzZcdTViMzgiLDcsIlx1NWI0MSIsNl0sWyI4YzQwIiwiXHU1YjQ4Iiw3LCJcdTViNTJcdTViNTZcdTVi''@;'; put 'put ''NWVcdTViNjBcdTViNjFcdTViNjdcdTViNjhcdTViNmJcdTViNmRcdTViNmVcdTViNmZcdTViNzJcdTViNzRcdTViNzZcdTViNzdcdTViNzhcdTViNzlcdTViN2JcdTViN2NcdTViN2VcdTViN2ZcdTViODJcdTViODZcdTViOGFcdTViOGRcdTViOGVcdTViOTBcdTViOTFcdTViOTJcdTViOTRc''@;'; put 'put ''dTViOTZcdTViOWZcdTViYTdcdTViYThcdTViYTlcdTViYWNcdTViYWRcdTViYWVcdTViYWZcdTViYjFcdTViYjJcdTViYjdcdTViYmFcdTViYmJcdTViYmNcdTViYzBcdTViYzFcdTViYzNcdTViYzhcdTViYzlcdTViY2FcdTViY2JcdTViY2RcdTViY2VcdTViY2YiXSxbIjhjODAiLCJcdTVi''@;'; put 'put ''ZDFcdTViZDQiLDgsIlx1NWJlMFx1NWJlMlx1NWJlM1x1NWJlNlx1NWJlN1x1NWJlOSIsNCwiXHU1YmVmXHU1YmYxIiw2LCJcdTViZmRcdTViZmVcdTVjMDBcdTVjMDJcdTVjMDNcdTVjMDVcdTVjMDdcdTVjMDhcdTVjMGJcdTVjMGNcdTVjMGRcdTVjMGVcdTVjMTBcdTVjMTJcdTVjMTNcdTVj''@;'; put 'put ''MTdcdTVjMTlcdTVjMWJcdTVjMWVcdTVjMWZcdTVjMjBcdTVjMjFcdTVjMjNcdTVjMjZcdTVjMjhcdTVjMjlcdTVjMmFcdTVjMmJcdTVjMmRcdTVjMmVcdTVjMmZcdTVjMzBcdTVjMzJcdTVjMzNcdTVjMzVcdTVjMzZcdTVjMzdcdTVjNDNcdTVjNDRcdTVjNDZcdTVjNDdcdTVjNGNcdTVjNGRc''@;'; put 'put ''dTVjNTJcdTVjNTNcdTVjNTRcdTVjNTZcdTVjNTdcdTVjNThcdTVjNWFcdTVjNWJcdTVjNWNcdTVjNWRcdTVjNWZcdTVjNjJcdTVjNjRcdTVjNjciLDYsIlx1NWM3MFx1NWM3MiIsNiwiXHU1YzdiXHU1YzdjXHU1YzdkXHU1YzdlXHU1YzgwXHU1YzgzIiw0LCJcdTVjODlcdTVjOGFcdTVjOGJc''@;'; put 'put ''dTVjOGVcdTVjOGZcdTVjOTJcdTVjOTNcdTVjOTVcdTVjOWQiLDQsIlx1NWNhNCIsNF0sWyI4ZDQwIiwiXHU1Y2FhXHU1Y2FlXHU1Y2FmXHU1Y2IwXHU1Y2IyXHU1Y2I0XHU1Y2I2XHU1Y2I5XHU1Y2JhXHU1Y2JiXHU1Y2JjXHU1Y2JlXHU1Y2MwXHU1Y2MyXHU1Y2MzXHU1Y2M1Iiw1LCJcdTVj''@;'; put 'put ''Y2MiLDUsIlx1NWNkMyIsNSwiXHU1Y2RhIiw2LCJcdTVjZTJcdTVjZTNcdTVjZTdcdTVjZTlcdTVjZWJcdTVjZWNcdTVjZWVcdTVjZWZcdTVjZjEiLDksIlx1NWNmYyIsNF0sWyI4ZDgwIiwiXHU1ZDAxXHU1ZDA0XHU1ZDA1XHU1ZDA4Iiw1LCJcdTVkMGYiLDQsIlx1NWQxNVx1NWQxN1x1NWQx''@;'; put 'put ''OFx1NWQxOVx1NWQxYVx1NWQxY1x1NWQxZFx1NWQxZiIsNCwiXHU1ZDI1XHU1ZDI4XHU1ZDJhXHU1ZDJiXHU1ZDJjXHU1ZDJmIiw0LCJcdTVkMzUiLDcsIlx1NWQzZiIsNywiXHU1ZDQ4XHU1ZDQ5XHU1ZDRkIiwxMCwiXHU1ZDU5XHU1ZDVhXHU1ZDVjXHU1ZDVlIiwxMCwiXHU1ZDZhXHU1ZDZk''@;'; put 'put ''XHU1ZDZlXHU1ZDcwXHU1ZDcxXHU1ZDcyXHU1ZDczXHU1ZDc1IiwxMiwiXHU1ZDgzIiwyMSwiXHU1ZDlhXHU1ZDliXHU1ZDljXHU1ZDllXHU1ZDlmXHU1ZGEwIl0sWyI4ZTQwIiwiXHU1ZGExIiwyMSwiXHU1ZGI4IiwxMiwiXHU1ZGM2Iiw2LCJcdTVkY2UiLDEyLCJcdTVkZGNcdTVkZGZcdTVk''@;'; put 'put ''ZTBcdTVkZTNcdTVkZTRcdTVkZWFcdTVkZWNcdTVkZWQiXSxbIjhlODAiLCJcdTVkZjBcdTVkZjVcdTVkZjZcdTVkZjgiLDQsIlx1NWRmZlx1NWUwMFx1NWUwNFx1NWUwN1x1NWUwOVx1NWUwYVx1NWUwYlx1NWUwZFx1NWUwZVx1NWUxMlx1NWUxM1x1NWUxN1x1NWUxZSIsNywiXHU1ZTI4Iiw0''@;'; put 'put ''LCJcdTVlMmZcdTVlMzBcdTVlMzIiLDQsIlx1NWUzOVx1NWUzYVx1NWUzZVx1NWUzZlx1NWU0MFx1NWU0MVx1NWU0M1x1NWU0NiIsNSwiXHU1ZTRkIiw2LCJcdTVlNTYiLDQsIlx1NWU1Y1x1NWU1ZFx1NWU1Zlx1NWU2MFx1NWU2MyIsMTQsIlx1NWU3NVx1NWU3N1x1NWU3OVx1NWU3ZVx1NWU4''@;'; put 'put ''MVx1NWU4Mlx1NWU4M1x1NWU4NVx1NWU4OFx1NWU4OVx1NWU4Y1x1NWU4ZFx1NWU4ZVx1NWU5Mlx1NWU5OFx1NWU5Ylx1NWU5ZFx1NWVhMVx1NWVhMlx1NWVhM1x1NWVhNFx1NWVhOCIsNCwiXHU1ZWFlIiw0LCJcdTVlYjRcdTVlYmFcdTVlYmJcdTVlYmNcdTVlYmRcdTVlYmYiLDZdLFsiOGY0''@;'; put 'put ''MCIsIlx1NWVjNlx1NWVjN1x1NWVjOFx1NWVjYiIsNSwiXHU1ZWQ0XHU1ZWQ1XHU1ZWQ3XHU1ZWQ4XHU1ZWQ5XHU1ZWRhXHU1ZWRjIiwxMSwiXHU1ZWU5XHU1ZWViIiw4LCJcdTVlZjVcdTVlZjhcdTVlZjlcdTVlZmJcdTVlZmNcdTVlZmRcdTVmMDVcdTVmMDZcdTVmMDdcdTVmMDlcdTVmMGNc''@;'; put 'put ''dTVmMGRcdTVmMGVcdTVmMTBcdTVmMTJcdTVmMTRcdTVmMTZcdTVmMTlcdTVmMWFcdTVmMWNcdTVmMWRcdTVmMWVcdTVmMjFcdTVmMjJcdTVmMjNcdTVmMjQiXSxbIjhmODAiLCJcdTVmMjhcdTVmMmJcdTVmMmNcdTVmMmVcdTVmMzBcdTVmMzIiLDYsIlx1NWYzYlx1NWYzZFx1NWYzZVx1NWYz''@;'; put 'put ''Zlx1NWY0MSIsMTQsIlx1NWY1MVx1NWY1NFx1NWY1OVx1NWY1YVx1NWY1Ylx1NWY1Y1x1NWY1ZVx1NWY1Zlx1NWY2MFx1NWY2M1x1NWY2NVx1NWY2N1x1NWY2OFx1NWY2Ylx1NWY2ZVx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3Nlx1NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY3Zlx1''@;'; put 'put ''NWY4M1x1NWY4Nlx1NWY4ZFx1NWY4ZVx1NWY4Zlx1NWY5MVx1NWY5M1x1NWY5NFx1NWY5Nlx1NWY5YVx1NWY5Ylx1NWY5ZFx1NWY5ZVx1NWY5Zlx1NWZhMFx1NWZhMiIsNSwiXHU1ZmE5XHU1ZmFiXHU1ZmFjXHU1ZmFmIiw1LCJcdTVmYjZcdTVmYjhcdTVmYjlcdTVmYmFcdTVmYmJcdTVmYmUi''@;'; put 'put ''LDQsIlx1NWZjN1x1NWZjOFx1NWZjYVx1NWZjYlx1NWZjZVx1NWZkM1x1NWZkNFx1NWZkNVx1NWZkYVx1NWZkYlx1NWZkY1x1NWZkZVx1NWZkZlx1NWZlMlx1NWZlM1x1NWZlNVx1NWZlNlx1NWZlOFx1NWZlOVx1NWZlY1x1NWZlZlx1NWZmMFx1NWZmMlx1NWZmM1x1NWZmNFx1NWZmNlx1NWZm''@;'; put 'put ''N1x1NWZmOVx1NWZmYVx1NWZmY1x1NjAwNyJdLFsiOTA0MCIsIlx1NjAwOFx1NjAwOVx1NjAwYlx1NjAwY1x1NjAxMFx1NjAxMVx1NjAxM1x1NjAxN1x1NjAxOFx1NjAxYVx1NjAxZVx1NjAxZlx1NjAyMlx1NjAyM1x1NjAyNFx1NjAyY1x1NjAyZFx1NjAyZVx1NjAzMCIsNCwiXHU2MDM2Iiw0''@;'; put 'put ''LCJcdTYwM2RcdTYwM2VcdTYwNDBcdTYwNDQiLDYsIlx1NjA0Y1x1NjA0ZVx1NjA0Zlx1NjA1MVx1NjA1M1x1NjA1NFx1NjA1Nlx1NjA1N1x1NjA1OFx1NjA1Ylx1NjA1Y1x1NjA1ZVx1NjA1Zlx1NjA2MFx1NjA2MVx1NjA2NVx1NjA2Nlx1NjA2ZVx1NjA3MVx1NjA3Mlx1NjA3NFx1NjA3NVx1''@;'; put 'put ''NjA3N1x1NjA3ZVx1NjA4MCJdLFsiOTA4MCIsIlx1NjA4MVx1NjA4Mlx1NjA4NVx1NjA4Nlx1NjA4N1x1NjA4OFx1NjA4YVx1NjA4Ylx1NjA4ZVx1NjA4Zlx1NjA5MFx1NjA5MVx1NjA5M1x1NjA5NVx1NjA5N1x1NjA5OFx1NjA5OVx1NjA5Y1x1NjA5ZVx1NjBhMVx1NjBhMlx1NjBhNFx1NjBh''@;'; put 'put ''NVx1NjBhN1x1NjBhOVx1NjBhYVx1NjBhZVx1NjBiMFx1NjBiM1x1NjBiNVx1NjBiNlx1NjBiN1x1NjBiOVx1NjBiYVx1NjBiZCIsNywiXHU2MGM3XHU2MGM4XHU2MGM5XHU2MGNjIiw0LCJcdTYwZDJcdTYwZDNcdTYwZDRcdTYwZDZcdTYwZDdcdTYwZDlcdTYwZGJcdTYwZGVcdTYwZTEiLDQs''@;'; put 'put ''Ilx1NjBlYVx1NjBmMVx1NjBmMlx1NjBmNVx1NjBmN1x1NjBmOFx1NjBmYiIsNCwiXHU2MTAyXHU2MTAzXHU2MTA0XHU2MTA1XHU2MTA3XHU2MTBhXHU2MTBiXHU2MTBjXHU2MTEwIiw0LCJcdTYxMTZcdTYxMTdcdTYxMThcdTYxMTlcdTYxMWJcdTYxMWNcdTYxMWRcdTYxMWVcdTYxMjFcdTYx''@;'; put 'put ''MjJcdTYxMjVcdTYxMjhcdTYxMjlcdTYxMmFcdTYxMmMiLDE4LCJcdTYxNDAiLDZdLFsiOTE0MCIsIlx1NjE0N1x1NjE0OVx1NjE0Ylx1NjE0ZFx1NjE0Zlx1NjE1MFx1NjE1Mlx1NjE1M1x1NjE1NFx1NjE1NiIsNiwiXHU2MTVlXHU2MTVmXHU2MTYwXHU2MTYxXHU2MTYzXHU2MTY0XHU2MTY1''@;'; put 'put ''XHU2MTY2XHU2MTY5Iiw2LCJcdTYxNzFcdTYxNzJcdTYxNzNcdTYxNzRcdTYxNzZcdTYxNzgiLDE4LCJcdTYxOGNcdTYxOGRcdTYxOGYiLDQsIlx1NjE5NSJdLFsiOTE4MCIsIlx1NjE5NiIsNiwiXHU2MTllIiw4LCJcdTYxYWFcdTYxYWJcdTYxYWQiLDksIlx1NjFiOCIsNSwiXHU2MWJmXHU2''@;'; put 'put ''MWMwXHU2MWMxXHU2MWMzIiw0LCJcdTYxYzlcdTYxY2MiLDQsIlx1NjFkM1x1NjFkNSIsMTYsIlx1NjFlNyIsMTMsIlx1NjFmNiIsOCwiXHU2MjAwIiw1LCJcdTYyMDdcdTYyMDlcdTYyMTNcdTYyMTRcdTYyMTlcdTYyMWNcdTYyMWRcdTYyMWVcdTYyMjBcdTYyMjNcdTYyMjZcdTYyMjdcdTYy''@;'; put 'put ''MjhcdTYyMjlcdTYyMmJcdTYyMmRcdTYyMmZcdTYyMzBcdTYyMzFcdTYyMzJcdTYyMzVcdTYyMzZcdTYyMzgiLDQsIlx1NjI0Mlx1NjI0NFx1NjI0NVx1NjI0Nlx1NjI0YSJdLFsiOTI0MCIsIlx1NjI0Zlx1NjI1MFx1NjI1NVx1NjI1Nlx1NjI1N1x1NjI1OVx1NjI1YVx1NjI1YyIsNiwiXHU2''@;'; put 'put ''MjY0XHU2MjY1XHU2MjY4XHU2MjcxXHU2MjcyXHU2Mjc0XHU2Mjc1XHU2Mjc3XHU2Mjc4XHU2MjdhXHU2MjdiXHU2MjdkXHU2MjgxXHU2MjgyXHU2MjgzXHU2Mjg1XHU2Mjg2XHU2Mjg3XHU2Mjg4XHU2MjhiIiw1LCJcdTYyOTRcdTYyOTlcdTYyOWNcdTYyOWRcdTYyOWVcdTYyYTNcdTYyYTZc''@;'; put 'put ''dTYyYTdcdTYyYTlcdTYyYWFcdTYyYWRcdTYyYWVcdTYyYWZcdTYyYjBcdTYyYjJcdTYyYjNcdTYyYjRcdTYyYjZcdTYyYjdcdTYyYjhcdTYyYmFcdTYyYmVcdTYyYzBcdTYyYzEiXSxbIjkyODAiLCJcdTYyYzNcdTYyY2JcdTYyY2ZcdTYyZDFcdTYyZDVcdTYyZGRcdTYyZGVcdTYyZTBcdTYy''@;'; put 'put ''ZTFcdTYyZTRcdTYyZWFcdTYyZWJcdTYyZjBcdTYyZjJcdTYyZjVcdTYyZjhcdTYyZjlcdTYyZmFcdTYyZmJcdTYzMDBcdTYzMDNcdTYzMDRcdTYzMDVcdTYzMDZcdTYzMGFcdTYzMGJcdTYzMGNcdTYzMGRcdTYzMGZcdTYzMTBcdTYzMTJcdTYzMTNcdTYzMTRcdTYzMTVcdTYzMTdcdTYzMThc''@;'; put 'put ''dTYzMTlcdTYzMWNcdTYzMjZcdTYzMjdcdTYzMjlcdTYzMmNcdTYzMmRcdTYzMmVcdTYzMzBcdTYzMzFcdTYzMzMiLDUsIlx1NjMzYlx1NjMzY1x1NjMzZVx1NjMzZlx1NjM0MFx1NjM0MVx1NjM0NFx1NjM0N1x1NjM0OFx1NjM0YVx1NjM1MVx1NjM1Mlx1NjM1M1x1NjM1NFx1NjM1NiIsNywi''@;'; put 'put ''XHU2MzYwXHU2MzY0XHU2MzY1XHU2MzY2XHU2MzY4XHU2MzZhXHU2MzZiXHU2MzZjXHU2MzZmXHU2MzcwXHU2MzcyXHU2MzczXHU2Mzc0XHU2Mzc1XHU2Mzc4XHU2Mzc5XHU2MzdjXHU2MzdkXHU2MzdlXHU2MzdmXHU2MzgxXHU2MzgzXHU2Mzg0XHU2Mzg1XHU2Mzg2XHU2MzhiXHU2MzhkXHU2''@;'; put 'put ''MzkxXHU2MzkzXHU2Mzk0XHU2Mzk1XHU2Mzk3XHU2Mzk5Iiw2LCJcdTYzYTFcdTYzYTRcdTYzYTZcdTYzYWJcdTYzYWZcdTYzYjFcdTYzYjJcdTYzYjVcdTYzYjZcdTYzYjlcdTYzYmJcdTYzYmRcdTYzYmZcdTYzYzAiXSxbIjkzNDAiLCJcdTYzYzFcdTYzYzJcdTYzYzNcdTYzYzVcdTYzYzdc''@;'; put 'put ''dTYzYzhcdTYzY2FcdTYzY2JcdTYzY2NcdTYzZDFcdTYzZDNcdTYzZDRcdTYzZDVcdTYzZDciLDYsIlx1NjNkZlx1NjNlMlx1NjNlNCIsNCwiXHU2M2ViXHU2M2VjXHU2M2VlXHU2M2VmXHU2M2YwXHU2M2YxXHU2M2YzXHU2M2Y1XHU2M2Y3XHU2M2Y5XHU2M2ZhXHU2M2ZiXHU2M2ZjXHU2M2Zl''@;'; put 'put ''XHU2NDAzXHU2NDA0XHU2NDA2Iiw0LCJcdTY0MGRcdTY0MGVcdTY0MTFcdTY0MTJcdTY0MTUiLDUsIlx1NjQxZFx1NjQxZlx1NjQyMlx1NjQyM1x1NjQyNCJdLFsiOTM4MCIsIlx1NjQyNVx1NjQyN1x1NjQyOFx1NjQyOVx1NjQyYlx1NjQyZSIsNSwiXHU2NDM1Iiw0LCJcdTY0M2JcdTY0M2Nc''@;'; put 'put ''dTY0M2VcdTY0NDBcdTY0NDJcdTY0NDNcdTY0NDlcdTY0NGIiLDYsIlx1NjQ1M1x1NjQ1NVx1NjQ1Nlx1NjQ1N1x1NjQ1OSIsNCwiXHU2NDVmIiw3LCJcdTY0NjhcdTY0NmFcdTY0NmJcdTY0NmNcdTY0NmUiLDksIlx1NjQ3YiIsNiwiXHU2NDgzXHU2NDg2XHU2NDg4Iiw4LCJcdTY0OTNcdTY0''@;'; put 'put ''OTRcdTY0OTdcdTY0OThcdTY0OWFcdTY0OWJcdTY0OWNcdTY0OWRcdTY0OWYiLDQsIlx1NjRhNVx1NjRhNlx1NjRhN1x1NjRhOFx1NjRhYVx1NjRhYlx1NjRhZlx1NjRiMVx1NjRiMlx1NjRiM1x1NjRiNFx1NjRiNlx1NjRiOVx1NjRiYlx1NjRiZFx1NjRiZVx1NjRiZlx1NjRjMVx1NjRjM1x1''@;'; put 'put ''NjRjNFx1NjRjNiIsNiwiXHU2NGNmXHU2NGQxXHU2NGQzXHU2NGQ0XHU2NGQ1XHU2NGQ2XHU2NGQ5XHU2NGRhIl0sWyI5NDQwIiwiXHU2NGRiXHU2NGRjXHU2NGRkXHU2NGRmXHU2NGUwXHU2NGUxXHU2NGUzXHU2NGU1XHU2NGU3IiwyNCwiXHU2NTAxIiw3LCJcdTY1MGEiLDcsIlx1NjUxMyIs''@;'; put 'put ''NCwiXHU2NTE5Iiw4XSxbIjk0ODAiLCJcdTY1MjJcdTY1MjNcdTY1MjRcdTY1MjYiLDQsIlx1NjUyY1x1NjUyZFx1NjUzMFx1NjUzMVx1NjUzMlx1NjUzM1x1NjUzN1x1NjUzYVx1NjUzY1x1NjUzZFx1NjU0MCIsNCwiXHU2NTQ2XHU2NTQ3XHU2NTRhXHU2NTRiXHU2NTRkXHU2NTRlXHU2NTUw''@;'; put 'put ''XHU2NTUyXHU2NTUzXHU2NTU0XHU2NTU3XHU2NTU4XHU2NTVhXHU2NTVjXHU2NTVmXHU2NTYwXHU2NTYxXHU2NTY0XHU2NTY1XHU2NTY3XHU2NTY4XHU2NTY5XHU2NTZhXHU2NTZkXHU2NTZlXHU2NTZmXHU2NTcxXHU2NTczXHU2NTc1XHU2NTc2XHU2NTc4IiwxNCwiXHU2NTg4XHU2NTg5XHU2''@;'; put 'put ''NThhXHU2NThkXHU2NThlXHU2NThmXHU2NTkyXHU2NTk0XHU2NTk1XHU2NTk2XHU2NTk4XHU2NTlhXHU2NTlkXHU2NTllXHU2NWEwXHU2NWEyXHU2NWEzXHU2NWE2XHU2NWE4XHU2NWFhXHU2NWFjXHU2NWFlXHU2NWIxIiw3LCJcdTY1YmFcdTY1YmJcdTY1YmVcdTY1YmZcdTY1YzBcdTY1YzJc''@;'; put 'put ''dTY1YzdcdTY1YzhcdTY1YzlcdTY1Y2FcdTY1Y2RcdTY1ZDBcdTY1ZDFcdTY1ZDNcdTY1ZDRcdTY1ZDVcdTY1ZDgiLDcsIlx1NjVlMVx1NjVlM1x1NjVlNFx1NjVlYVx1NjVlYiJdLFsiOTU0MCIsIlx1NjVmMlx1NjVmM1x1NjVmNFx1NjVmNVx1NjVmOFx1NjVmOVx1NjVmYiIsNCwiXHU2NjAx''@;'; put 'put ''XHU2NjA0XHU2NjA1XHU2NjA3XHU2NjA4XHU2NjA5XHU2NjBiXHU2NjBkXHU2NjEwXHU2NjExXHU2NjEyXHU2NjE2XHU2NjE3XHU2NjE4XHU2NjFhXHU2NjFiXHU2NjFjXHU2NjFlXHU2NjIxXHU2NjIyXHU2NjIzXHU2NjI0XHU2NjI2XHU2NjI5XHU2NjJhXHU2NjJiXHU2NjJjXHU2NjJlXHU2''@;'; put 'put ''NjMwXHU2NjMyXHU2NjMzXHU2NjM3Iiw0LCJcdTY2M2RcdTY2M2ZcdTY2NDBcdTY2NDJcdTY2NDQiLDYsIlx1NjY0ZFx1NjY0ZVx1NjY1MFx1NjY1MVx1NjY1OCJdLFsiOTU4MCIsIlx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY1ZFx1NjY1ZVx1NjY2MFx1NjY2Mlx1NjY2M1x1NjY2NVx1NjY2N1x1''@;'; put 'put ''NjY2OSIsNCwiXHU2NjcxXHU2NjcyXHU2NjczXHU2Njc1XHU2Njc4XHU2Njc5XHU2NjdiXHU2NjdjXHU2NjdkXHU2NjdmXHU2NjgwXHU2NjgxXHU2NjgzXHU2Njg1XHU2Njg2XHU2Njg4XHU2Njg5XHU2NjhhXHU2NjhiXHU2NjhkXHU2NjhlXHU2NjhmXHU2NjkwXHU2NjkyXHU2NjkzXHU2Njk0''@;'; put 'put ''XHU2Njk1XHU2Njk4Iiw0LCJcdTY2OWUiLDgsIlx1NjZhOSIsNCwiXHU2NmFmIiw0LCJcdTY2YjVcdTY2YjZcdTY2YjdcdTY2YjhcdTY2YmFcdTY2YmJcdTY2YmNcdTY2YmRcdTY2YmYiLDI1LCJcdTY2ZGFcdTY2ZGUiLDcsIlx1NjZlN1x1NjZlOFx1NjZlYSIsNSwiXHU2NmYxXHU2NmY1XHU2''@;'; put 'put ''NmY2XHU2NmY4XHU2NmZhXHU2NmZiXHU2NmZkXHU2NzAxXHU2NzAyXHU2NzAzIl0sWyI5NjQwIiwiXHU2NzA0XHU2NzA1XHU2NzA2XHU2NzA3XHU2NzBjXHU2NzBlXHU2NzBmXHU2NzExXHU2NzEyXHU2NzEzXHU2NzE2XHU2NzE4XHU2NzE5XHU2NzFhXHU2NzFjXHU2NzFlXHU2NzIwIiw1LCJc''@;'; put 'put ''dTY3MjdcdTY3MjlcdTY3MmVcdTY3MzBcdTY3MzJcdTY3MzNcdTY3MzZcdTY3MzdcdTY3MzhcdTY3MzlcdTY3M2JcdTY3M2NcdTY3M2VcdTY3M2ZcdTY3NDFcdTY3NDRcdTY3NDVcdTY3NDdcdTY3NGFcdTY3NGJcdTY3NGRcdTY3NTJcdTY3NTRcdTY3NTVcdTY3NTciLDQsIlx1Njc1ZFx1Njc2''@;'; put 'put ''Mlx1Njc2M1x1Njc2NFx1Njc2Nlx1Njc2N1x1Njc2Ylx1Njc2Y1x1Njc2ZVx1Njc3MVx1Njc3NFx1Njc3NiJdLFsiOTY4MCIsIlx1Njc3OFx1Njc3OVx1Njc3YVx1Njc3Ylx1Njc3ZFx1Njc4MFx1Njc4Mlx1Njc4M1x1Njc4NVx1Njc4Nlx1Njc4OFx1Njc4YVx1Njc4Y1x1Njc4ZFx1Njc4ZVx1''@;'; put 'put ''Njc4Zlx1Njc5MVx1Njc5Mlx1Njc5M1x1Njc5NFx1Njc5Nlx1Njc5OVx1Njc5Ylx1Njc5Zlx1NjdhMFx1NjdhMVx1NjdhNFx1NjdhNlx1NjdhOVx1NjdhY1x1NjdhZVx1NjdiMVx1NjdiMlx1NjdiNFx1NjdiOSIsNywiXHU2N2MyXHU2N2M1Iiw5LCJcdTY3ZDVcdTY3ZDZcdTY3ZDdcdTY3ZGJc''@;'; put 'put ''dTY3ZGZcdTY3ZTFcdTY3ZTNcdTY3ZTRcdTY3ZTZcdTY3ZTdcdTY3ZThcdTY3ZWFcdTY3ZWJcdTY3ZWRcdTY3ZWVcdTY3ZjJcdTY3ZjUiLDcsIlx1NjdmZVx1NjgwMVx1NjgwMlx1NjgwM1x1NjgwNFx1NjgwNlx1NjgwZFx1NjgxMFx1NjgxMlx1NjgxNFx1NjgxNVx1NjgxOCIsNCwiXHU2ODFl''@;'; put 'put ''XHU2ODFmXHU2ODIwXHU2ODIyIiw2LCJcdTY4MmIiLDYsIlx1NjgzNFx1NjgzNVx1NjgzNlx1NjgzYVx1NjgzYlx1NjgzZlx1Njg0N1x1Njg0Ylx1Njg0ZFx1Njg0Zlx1Njg1Mlx1Njg1NiIsNV0sWyI5NzQwIiwiXHU2ODVjXHU2ODVkXHU2ODVlXHU2ODVmXHU2ODZhXHU2ODZjIiw3LCJcdTY4''@;'; put 'put ''NzVcdTY4NzgiLDgsIlx1Njg4Mlx1Njg4NFx1Njg4NyIsNywiXHU2ODkwXHU2ODkxXHU2ODkyXHU2ODk0XHU2ODk1XHU2ODk2XHU2ODk4Iiw5LCJcdTY4YTNcdTY4YTRcdTY4YTVcdTY4YTlcdTY4YWFcdTY4YWJcdTY4YWNcdTY4YWVcdTY4YjFcdTY4YjJcdTY4YjRcdTY4YjZcdTY4YjdcdTY4''@;'; put 'put ''YjgiXSxbIjk3ODAiLCJcdTY4YjkiLDYsIlx1NjhjMVx1NjhjMyIsNSwiXHU2OGNhXHU2OGNjXHU2OGNlXHU2OGNmXHU2OGQwXHU2OGQxXHU2OGQzXHU2OGQ0XHU2OGQ2XHU2OGQ3XHU2OGQ5XHU2OGRiIiw0LCJcdTY4ZTFcdTY4ZTJcdTY4ZTQiLDksIlx1NjhlZlx1NjhmMlx1NjhmM1x1Njhm''@;'; put 'put ''NFx1NjhmNlx1NjhmN1x1NjhmOFx1NjhmYlx1NjhmZFx1NjhmZVx1NjhmZlx1NjkwMFx1NjkwMlx1NjkwM1x1NjkwNFx1NjkwNiIsNCwiXHU2OTBjXHU2OTBmXHU2OTExXHU2OTEzIiwxMSwiXHU2OTIxXHU2OTIyXHU2OTIzXHU2OTI1Iiw3LCJcdTY5MmVcdTY5MmZcdTY5MzFcdTY5MzJcdTY5''@;'; put 'put ''MzNcdTY5MzVcdTY5MzZcdTY5MzdcdTY5MzhcdTY5M2FcdTY5M2JcdTY5M2NcdTY5M2VcdTY5NDBcdTY5NDFcdTY5NDMiLDE2LCJcdTY5NTVcdTY5NTZcdTY5NThcdTY5NTlcdTY5NWJcdTY5NWNcdTY5NWYiXSxbIjk4NDAiLCJcdTY5NjFcdTY5NjJcdTY5NjRcdTY5NjVcdTY5NjdcdTY5Njhc''@;'; put 'put ''dTY5NjlcdTY5NmFcdTY5NmNcdTY5NmRcdTY5NmZcdTY5NzBcdTY5NzIiLDQsIlx1Njk3YVx1Njk3Ylx1Njk3ZFx1Njk3ZVx1Njk3Zlx1Njk4MVx1Njk4M1x1Njk4NVx1Njk4YVx1Njk4Ylx1Njk4Y1x1Njk4ZSIsNSwiXHU2OTk2XHU2OTk3XHU2OTk5XHU2OTlhXHU2OTlkIiw5LCJcdTY5YTlc''@;'; put 'put ''dTY5YWFcdTY5YWNcdTY5YWVcdTY5YWZcdTY5YjBcdTY5YjJcdTY5YjNcdTY5YjVcdTY5YjZcdTY5YjhcdTY5YjlcdTY5YmFcdTY5YmNcdTY5YmQiXSxbIjk4ODAiLCJcdTY5YmVcdTY5YmZcdTY5YzBcdTY5YzIiLDcsIlx1NjljYlx1NjljZFx1NjljZlx1NjlkMVx1NjlkMlx1NjlkM1x1Njlk''@;'; put 'put ''NSIsNSwiXHU2OWRjXHU2OWRkXHU2OWRlXHU2OWUxIiwxMSwiXHU2OWVlXHU2OWVmXHU2OWYwXHU2OWYxXHU2OWYzIiw5LCJcdTY5ZmVcdTZhMDAiLDksIlx1NmEwYiIsMTEsIlx1NmExOSIsNSwiXHU2YTIwXHU2YTIyIiw1LCJcdTZhMjlcdTZhMmJcdTZhMmNcdTZhMmRcdTZhMmVcdTZhMzBc''@;'; put 'put ''dTZhMzJcdTZhMzNcdTZhMzRcdTZhMzYiLDYsIlx1NmEzZiIsNCwiXHU2YTQ1XHU2YTQ2XHU2YTQ4Iiw3LCJcdTZhNTEiLDYsIlx1NmE1YSJdLFsiOTk0MCIsIlx1NmE1YyIsNCwiXHU2YTYyXHU2YTYzXHU2YTY0XHU2YTY2IiwxMCwiXHU2YTcyIiw2LCJcdTZhN2FcdTZhN2JcdTZhN2RcdTZh''@;'; put 'put ''N2VcdTZhN2ZcdTZhODFcdTZhODJcdTZhODNcdTZhODUiLDgsIlx1NmE4Zlx1NmE5MiIsNCwiXHU2YTk4Iiw3LCJcdTZhYTEiLDVdLFsiOTk4MCIsIlx1NmFhN1x1NmFhOFx1NmFhYVx1NmFhZCIsMTE0LCJcdTZiMjVcdTZiMjZcdTZiMjgiLDZdLFsiOWE0MCIsIlx1NmIyZlx1NmIzMFx1NmIz''@;'; put 'put ''MVx1NmIzM1x1NmIzNFx1NmIzNVx1NmIzNlx1NmIzOFx1NmIzYlx1NmIzY1x1NmIzZFx1NmIzZlx1NmI0MFx1NmI0MVx1NmI0Mlx1NmI0NFx1NmI0NVx1NmI0OFx1NmI0YVx1NmI0Ylx1NmI0ZCIsMTEsIlx1NmI1YSIsNywiXHU2YjY4XHU2YjY5XHU2YjZiIiwxMywiXHU2YjdhXHU2YjdkXHU2''@;'; put 'put ''YjdlXHU2YjdmXHU2YjgwXHU2Yjg1XHU2Yjg4Il0sWyI5YTgwIiwiXHU2YjhjXHU2YjhlXHU2YjhmXHU2YjkwXHU2YjkxXHU2Yjk0XHU2Yjk1XHU2Yjk3XHU2Yjk4XHU2Yjk5XHU2YjljIiw0LCJcdTZiYTIiLDcsIlx1NmJhYiIsNywiXHU2YmI2XHU2YmI4Iiw2LCJcdTZiYzBcdTZiYzNcdTZi''@;'; put 'put ''YzRcdTZiYzYiLDQsIlx1NmJjY1x1NmJjZVx1NmJkMFx1NmJkMVx1NmJkOFx1NmJkYVx1NmJkYyIsNCwiXHU2YmUyIiw3LCJcdTZiZWNcdTZiZWRcdTZiZWVcdTZiZjBcdTZiZjFcdTZiZjJcdTZiZjRcdTZiZjZcdTZiZjdcdTZiZjhcdTZiZmFcdTZiZmJcdTZiZmNcdTZiZmUiLDYsIlx1NmMw''@;'; put 'put ''OCIsNCwiXHU2YzBlXHU2YzEyXHU2YzE3XHU2YzFjXHU2YzFkXHU2YzFlXHU2YzIwXHU2YzIzXHU2YzI1XHU2YzJiXHU2YzJjXHU2YzJkXHU2YzMxXHU2YzMzXHU2YzM2XHU2YzM3XHU2YzM5XHU2YzNhXHU2YzNiXHU2YzNjXHU2YzNlXHU2YzNmXHU2YzQzXHU2YzQ0XHU2YzQ1XHU2YzQ4XHU2''@;'; put 'put ''YzRiIiw0LCJcdTZjNTFcdTZjNTJcdTZjNTNcdTZjNTZcdTZjNTgiXSxbIjliNDAiLCJcdTZjNTlcdTZjNWFcdTZjNjJcdTZjNjNcdTZjNjVcdTZjNjZcdTZjNjdcdTZjNmIiLDQsIlx1NmM3MVx1NmM3M1x1NmM3NVx1NmM3N1x1NmM3OFx1NmM3YVx1NmM3Ylx1NmM3Y1x1NmM3Zlx1NmM4MFx1''@;'; put 'put ''NmM4NFx1NmM4N1x1NmM4YVx1NmM4Ylx1NmM4ZFx1NmM4ZVx1NmM5MVx1NmM5Mlx1NmM5NVx1NmM5Nlx1NmM5N1x1NmM5OFx1NmM5YVx1NmM5Y1x1NmM5ZFx1NmM5ZVx1NmNhMFx1NmNhMlx1NmNhOFx1NmNhY1x1NmNhZlx1NmNiMFx1NmNiNFx1NmNiNVx1NmNiNlx1NmNiN1x1NmNiYVx1NmNj''@;'; put 'put ''MFx1NmNjMVx1NmNjMlx1NmNjM1x1NmNjNlx1NmNjN1x1NmNjOFx1NmNjYlx1NmNjZFx1NmNjZVx1NmNjZlx1NmNkMVx1NmNkMlx1NmNkOCJdLFsiOWI4MCIsIlx1NmNkOVx1NmNkYVx1NmNkY1x1NmNkZFx1NmNkZlx1NmNlNFx1NmNlNlx1NmNlN1x1NmNlOVx1NmNlY1x1NmNlZFx1NmNmMlx1''@;'; put 'put ''NmNmNFx1NmNmOVx1NmNmZlx1NmQwMFx1NmQwMlx1NmQwM1x1NmQwNVx1NmQwNlx1NmQwOFx1NmQwOVx1NmQwYVx1NmQwZFx1NmQwZlx1NmQxMFx1NmQxMVx1NmQxM1x1NmQxNFx1NmQxNVx1NmQxNlx1NmQxOFx1NmQxY1x1NmQxZFx1NmQxZiIsNSwiXHU2ZDI2XHU2ZDI4XHU2ZDI5XHU2ZDJj''@;'; put 'put ''XHU2ZDJkXHU2ZDJmXHU2ZDMwXHU2ZDM0XHU2ZDM2XHU2ZDM3XHU2ZDM4XHU2ZDNhXHU2ZDNmXHU2ZDQwXHU2ZDQyXHU2ZDQ0XHU2ZDQ5XHU2ZDRjXHU2ZDUwXHU2ZDU1XHU2ZDU2XHU2ZDU3XHU2ZDU4XHU2ZDViXHU2ZDVkXHU2ZDVmXHU2ZDYxXHU2ZDYyXHU2ZDY0XHU2ZDY1XHU2ZDY3XHU2''@;'; put 'put ''ZDY4XHU2ZDZiXHU2ZDZjXHU2ZDZkXHU2ZDcwXHU2ZDcxXHU2ZDcyXHU2ZDczXHU2ZDc1XHU2ZDc2XHU2ZDc5XHU2ZDdhXHU2ZDdiXHU2ZDdkIiw0LCJcdTZkODNcdTZkODRcdTZkODZcdTZkODdcdTZkOGFcdTZkOGJcdTZkOGRcdTZkOGZcdTZkOTBcdTZkOTJcdTZkOTYiLDQsIlx1NmQ5Y1x1''@;'; put 'put ''NmRhMlx1NmRhNVx1NmRhY1x1NmRhZFx1NmRiMFx1NmRiMVx1NmRiM1x1NmRiNFx1NmRiNlx1NmRiN1x1NmRiOSIsNSwiXHU2ZGMxXHU2ZGMyXHU2ZGMzXHU2ZGM4XHU2ZGM5XHU2ZGNhIl0sWyI5YzQwIiwiXHU2ZGNkXHU2ZGNlXHU2ZGNmXHU2ZGQwXHU2ZGQyXHU2ZGQzXHU2ZGQ0XHU2ZGQ1''@;'; put 'put ''XHU2ZGQ3XHU2ZGRhXHU2ZGRiXHU2ZGRjXHU2ZGRmXHU2ZGUyXHU2ZGUzXHU2ZGU1XHU2ZGU3XHU2ZGU4XHU2ZGU5XHU2ZGVhXHU2ZGVkXHU2ZGVmXHU2ZGYwXHU2ZGYyXHU2ZGY0XHU2ZGY1XHU2ZGY2XHU2ZGY4XHU2ZGZhXHU2ZGZkIiw3LCJcdTZlMDZcdTZlMDdcdTZlMDhcdTZlMDlcdTZl''@;'; put 'put ''MGJcdTZlMGZcdTZlMTJcdTZlMTNcdTZlMTVcdTZlMThcdTZlMTlcdTZlMWJcdTZlMWNcdTZlMWVcdTZlMWZcdTZlMjJcdTZlMjZcdTZlMjdcdTZlMjhcdTZlMmFcdTZlMmNcdTZlMmVcdTZlMzBcdTZlMzFcdTZlMzNcdTZlMzUiXSxbIjljODAiLCJcdTZlMzZcdTZlMzdcdTZlMzlcdTZlM2Ii''@;'; put 'put ''LDcsIlx1NmU0NSIsNywiXHU2ZTRmXHU2ZTUwXHU2ZTUxXHU2ZTUyXHU2ZTU1XHU2ZTU3XHU2ZTU5XHU2ZTVhXHU2ZTVjXHU2ZTVkXHU2ZTVlXHU2ZTYwIiwxMCwiXHU2ZTZjXHU2ZTZkXHU2ZTZmIiwxNCwiXHU2ZTgwXHU2ZTgxXHU2ZTgyXHU2ZTg0XHU2ZTg3XHU2ZTg4XHU2ZThhIiw0LCJc''@;'; put 'put ''dTZlOTEiLDYsIlx1NmU5OVx1NmU5YVx1NmU5Ylx1NmU5ZFx1NmU5ZVx1NmVhMFx1NmVhMVx1NmVhM1x1NmVhNFx1NmVhNlx1NmVhOFx1NmVhOVx1NmVhYlx1NmVhY1x1NmVhZFx1NmVhZVx1NmViMFx1NmViM1x1NmViNVx1NmViOFx1NmViOVx1NmViY1x1NmViZVx1NmViZlx1NmVjMFx1NmVj''@;'; put 'put ''M1x1NmVjNFx1NmVjNVx1NmVjNlx1NmVjOFx1NmVjOVx1NmVjYVx1NmVjY1x1NmVjZFx1NmVjZVx1NmVkMFx1NmVkMlx1NmVkNlx1NmVkOFx1NmVkOVx1NmVkYlx1NmVkY1x1NmVkZFx1NmVlM1x1NmVlN1x1NmVlYSIsNV0sWyI5ZDQwIiwiXHU2ZWYwXHU2ZWYxXHU2ZWYyXHU2ZWYzXHU2ZWY1''@;'; put 'put ''XHU2ZWY2XHU2ZWY3XHU2ZWY4XHU2ZWZhIiw3LCJcdTZmMDNcdTZmMDRcdTZmMDVcdTZmMDdcdTZmMDhcdTZmMGEiLDQsIlx1NmYxMFx1NmYxMVx1NmYxMlx1NmYxNiIsOSwiXHU2ZjIxXHU2ZjIyXHU2ZjIzXHU2ZjI1XHU2ZjI2XHU2ZjI3XHU2ZjI4XHU2ZjJjXHU2ZjJlXHU2ZjMwXHU2ZjMy''@;'; put 'put ''XHU2ZjM0XHU2ZjM1XHU2ZjM3Iiw2LCJcdTZmM2ZcdTZmNDBcdTZmNDFcdTZmNDIiXSxbIjlkODAiLCJcdTZmNDNcdTZmNDRcdTZmNDVcdTZmNDhcdTZmNDlcdTZmNGFcdTZmNGNcdTZmNGUiLDksIlx1NmY1OVx1NmY1YVx1NmY1Ylx1NmY1ZFx1NmY1Zlx1NmY2MFx1NmY2MVx1NmY2M1x1NmY2''@;'; put 'put ''NFx1NmY2NVx1NmY2NyIsNSwiXHU2ZjZmXHU2ZjcwXHU2ZjcxXHU2ZjczXHU2Zjc1XHU2Zjc2XHU2Zjc3XHU2Zjc5XHU2ZjdiXHU2ZjdkIiw2LCJcdTZmODVcdTZmODZcdTZmODdcdTZmOGFcdTZmOGJcdTZmOGYiLDEyLCJcdTZmOWRcdTZmOWVcdTZmOWZcdTZmYTBcdTZmYTIiLDQsIlx1NmZh''@;'; put 'put ''OCIsMTAsIlx1NmZiNFx1NmZiNVx1NmZiN1x1NmZiOFx1NmZiYSIsNSwiXHU2ZmMxXHU2ZmMzIiw1LCJcdTZmY2EiLDYsIlx1NmZkMyIsMTAsIlx1NmZkZlx1NmZlMlx1NmZlM1x1NmZlNFx1NmZlNSJdLFsiOWU0MCIsIlx1NmZlNiIsNywiXHU2ZmYwIiwzMiwiXHU3MDEyIiw3LCJcdTcwMWMi''@;'; put 'put ''LDYsIlx1NzAyNCIsNl0sWyI5ZTgwIiwiXHU3MDJiIiw5LCJcdTcwMzZcdTcwMzdcdTcwMzhcdTcwM2EiLDE3LCJcdTcwNGRcdTcwNGVcdTcwNTAiLDEzLCJcdTcwNWYiLDExLCJcdTcwNmVcdTcwNzFcdTcwNzJcdTcwNzNcdTcwNzRcdTcwNzdcdTcwNzlcdTcwN2FcdTcwN2JcdTcwN2RcdTcw''@;'; put 'put ''ODFcdTcwODJcdTcwODNcdTcwODRcdTcwODZcdTcwODdcdTcwODhcdTcwOGJcdTcwOGNcdTcwOGRcdTcwOGZcdTcwOTBcdTcwOTFcdTcwOTNcdTcwOTdcdTcwOThcdTcwOWFcdTcwOWJcdTcwOWUiLDEyLCJcdTcwYjBcdTcwYjJcdTcwYjRcdTcwYjVcdTcwYjZcdTcwYmFcdTcwYmVcdTcwYmZc''@;'; put 'put ''dTcwYzRcdTcwYzVcdTcwYzZcdTcwYzdcdTcwYzlcdTcwY2IiLDEyLCJcdTcwZGEiXSxbIjlmNDAiLCJcdTcwZGNcdTcwZGRcdTcwZGVcdTcwZTBcdTcwZTFcdTcwZTJcdTcwZTNcdTcwZTVcdTcwZWFcdTcwZWVcdTcwZjAiLDYsIlx1NzBmOFx1NzBmYVx1NzBmYlx1NzBmY1x1NzBmZSIsMTAs''@;'; put 'put ''Ilx1NzEwYiIsNCwiXHU3MTExXHU3MTEyXHU3MTE0XHU3MTE3XHU3MTFiIiwxMCwiXHU3MTI3Iiw3LCJcdTcxMzJcdTcxMzNcdTcxMzQiXSxbIjlmODAiLCJcdTcxMzVcdTcxMzciLDEzLCJcdTcxNDZcdTcxNDdcdTcxNDhcdTcxNDlcdTcxNGJcdTcxNGRcdTcxNGYiLDEyLCJcdTcxNWRcdTcx''@;'; put 'put ''NWYiLDQsIlx1NzE2NVx1NzE2OSIsNCwiXHU3MTZmXHU3MTcwXHU3MTcxXHU3MTc0XHU3MTc1XHU3MTc2XHU3MTc3XHU3MTc5XHU3MTdiXHU3MTdjXHU3MTdlIiw1LCJcdTcxODUiLDQsIlx1NzE4Ylx1NzE4Y1x1NzE4ZFx1NzE4ZVx1NzE5MFx1NzE5MVx1NzE5Mlx1NzE5M1x1NzE5NVx1NzE5''@;'; put 'put ''Nlx1NzE5N1x1NzE5YSIsNCwiXHU3MWExIiw2LCJcdTcxYTlcdTcxYWFcdTcxYWJcdTcxYWQiLDUsIlx1NzFiNFx1NzFiNlx1NzFiN1x1NzFiOFx1NzFiYSIsOCwiXHU3MWM0Iiw5LCJcdTcxY2YiLDRdLFsiYTA0MCIsIlx1NzFkNiIsOSwiXHU3MWUxXHU3MWUyXHU3MWUzXHU3MWU0XHU3MWU2''@;'; put 'put ''XHU3MWU4Iiw1LCJcdTcxZWYiLDksIlx1NzFmYSIsMTEsIlx1NzIwNyIsMTldLFsiYTA4MCIsIlx1NzIxYlx1NzIxY1x1NzIxZSIsOSwiXHU3MjI5XHU3MjJiXHU3MjJkXHU3MjJlXHU3MjJmXHU3MjMyXHU3MjMzXHU3MjM0XHU3MjNhXHU3MjNjXHU3MjNlXHU3MjQwIiw2LCJcdTcyNDlcdTcy''@;'; put 'put ''NGFcdTcyNGJcdTcyNGVcdTcyNGZcdTcyNTBcdTcyNTFcdTcyNTNcdTcyNTRcdTcyNTVcdTcyNTdcdTcyNThcdTcyNWFcdTcyNWNcdTcyNWVcdTcyNjBcdTcyNjNcdTcyNjRcdTcyNjVcdTcyNjhcdTcyNmFcdTcyNmJcdTcyNmNcdTcyNmRcdTcyNzBcdTcyNzFcdTcyNzNcdTcyNzRcdTcyNzZc''@;'; put 'put ''dTcyNzdcdTcyNzhcdTcyN2JcdTcyN2NcdTcyN2RcdTcyODJcdTcyODNcdTcyODUiLDQsIlx1NzI4Y1x1NzI4ZVx1NzI5MFx1NzI5MVx1NzI5MyIsMTEsIlx1NzJhMCIsMTEsIlx1NzJhZVx1NzJiMVx1NzJiMlx1NzJiM1x1NzJiNVx1NzJiYSIsNiwiXHU3MmM1XHU3MmM2XHU3MmM3XHU3MmM5''@;'; put 'put ''XHU3MmNhXHU3MmNiXHU3MmNjXHU3MmNmXHU3MmQxXHU3MmQzXHU3MmQ0XHU3MmQ1XHU3MmQ2XHU3MmQ4XHU3MmRhXHU3MmRiIl0sWyJhMWExIiwiXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MDJjOVx1MDJjN1x4YThcdTMwMDNcdTMwMDVcdTIwMTRcdWZmNWVcdTIwMTZcdTIwMjZcdTIwMThc''@;'; put 'put ''dTIwMTlcdTIwMWNcdTIwMWRcdTMwMTRcdTMwMTVcdTMwMDgiLDcsIlx1MzAxNlx1MzAxN1x1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjIzNlx1MjIyN1x1MjIyOFx1MjIxMVx1MjIwZlx1MjIyYVx1MjIyOVx1MjIwOFx1MjIzN1x1MjIxYVx1MjJhNVx1MjIyNVx1MjIyMFx1MjMxMlx1MjI5''@;'; put 'put ''OVx1MjIyYlx1MjIyZVx1MjI2MVx1MjI0Y1x1MjI0OFx1MjIzZFx1MjIxZFx1MjI2MFx1MjI2ZVx1MjI2Zlx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmMDRceGE0XHVmZmUwXHVmZmUxXHUyMDMwXHhhN1x1MjExNlx1''@;'; put 'put ''MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjAzYlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxMyJdLFsiYTJhMSIsIlx1MjE3MCIsOV0sWyJhMmIxIiwiXHUyNDg4IiwxOSwiXHUyNDc0IiwxOSwiXHUyNDYwIiw5''@;'; put 'put ''XSxbImEyZTUiLCJcdTMyMjAiLDldLFsiYTJmMSIsIlx1MjE2MCIsMTFdLFsiYTNhMSIsIlx1ZmYwMVx1ZmYwMlx1ZmYwM1x1ZmZlNVx1ZmYwNSIsODgsIlx1ZmZlMyJdLFsiYTRhMSIsIlx1MzA0MSIsODJdLFsiYTVhMSIsIlx1MzBhMSIsODVdLFsiYTZhMSIsIlx1MDM5MSIsMTYsIlx1MDNh''@;'; put 'put ''MyIsNl0sWyJhNmMxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE2ZTAiLCJcdWZlMzVcdWZlMzZcdWZlMzlcdWZlM2FcdWZlM2ZcdWZlNDBcdWZlM2RcdWZlM2VcdWZlNDFcdWZlNDJcdWZlNDNcdWZlNDQiXSxbImE2ZWUiLCJcdWZlM2JcdWZlM2NcdWZlMzdcdWZlMzhcdWZlMzEiXSxb''@;'; put 'put ''ImE2ZjQiLCJcdWZlMzNcdWZlMzQiXSxbImE3YTEiLCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsMjVdLFsiYTdkMSIsIlx1MDQzMCIsNSwiXHUwNDUxXHUwNDM2IiwyNV0sWyJhODQwIiwiXHUwMmNhXHUwMmNiXHUwMmQ5XHUyMDEzXHUyMDE1XHUyMDI1XHUyMDM1XHUyMTA1XHUyMTA5XHUy''@;'; put 'put ''MTk2XHUyMTk3XHUyMTk4XHUyMTk5XHUyMjE1XHUyMjFmXHUyMjIzXHUyMjUyXHUyMjY2XHUyMjY3XHUyMmJmXHUyNTUwIiwzNSwiXHUyNTgxIiw2XSxbImE4ODAiLCJcdTI1ODgiLDcsIlx1MjU5M1x1MjU5NFx1MjU5NVx1MjViY1x1MjViZFx1MjVlMlx1MjVlM1x1MjVlNFx1MjVlNVx1MjYw''@;'; put 'put ''OVx1MjI5NVx1MzAxMlx1MzAxZFx1MzAxZSJdLFsiYThhMSIsIlx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThcdTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGFcdTAxZGNceGZj''@;'; put 'put ''XHhlYVx1MDI1MSJdLFsiYThiZCIsIlx1MDE0NFx1MDE0OCJdLFsiYThjMCIsIlx1MDI2MSJdLFsiYThjNSIsIlx1MzEwNSIsMzZdLFsiYTk0MCIsIlx1MzAyMSIsOCwiXHUzMmEzXHUzMzhlXHUzMzhmXHUzMzljXHUzMzlkXHUzMzllXHUzM2ExXHUzM2M0XHUzM2NlXHUzM2QxXHUzM2QyXHUz''@;'; put 'put ''M2Q1XHVmZTMwXHVmZmUyXHVmZmU0Il0sWyJhOTU5IiwiXHUyMTIxXHUzMjMxIl0sWyJhOTVjIiwiXHUyMDEwIl0sWyJhOTYwIiwiXHUzMGZjXHUzMDliXHUzMDljXHUzMGZkXHUzMGZlXHUzMDA2XHUzMDlkXHUzMDllXHVmZTQ5Iiw5LCJcdWZlNTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZlNTki''@;'; put 'put ''LDhdLFsiYTk4MCIsIlx1ZmU2MiIsNCwiXHVmZTY4XHVmZTY5XHVmZTZhXHVmZTZiIl0sWyJhOTk2IiwiXHUzMDA3Il0sWyJhOWE0IiwiXHUyNTAwIiw3NV0sWyJhYTQwIiwiXHU3MmRjXHU3MmRkXHU3MmRmXHU3MmUyIiw1LCJcdTcyZWFcdTcyZWJcdTcyZjVcdTcyZjZcdTcyZjlcdTcyZmRc''@;'; put 'put ''dTcyZmVcdTcyZmZcdTczMDBcdTczMDJcdTczMDQiLDUsIlx1NzMwYlx1NzMwY1x1NzMwZFx1NzMwZlx1NzMxMFx1NzMxMVx1NzMxMlx1NzMxNFx1NzMxOFx1NzMxOVx1NzMxYVx1NzMxZlx1NzMyMFx1NzMyM1x1NzMyNFx1NzMyNlx1NzMyN1x1NzMyOFx1NzMyZFx1NzMyZlx1NzMzMFx1NzMz''@;'; put 'put ''Mlx1NzMzM1x1NzMzNVx1NzMzNlx1NzMzYVx1NzMzYlx1NzMzY1x1NzMzZFx1NzM0MCIsOF0sWyJhYTgwIiwiXHU3MzQ5XHU3MzRhXHU3MzRiXHU3MzRjXHU3MzRlXHU3MzRmXHU3MzUxXHU3MzUzXHU3MzU0XHU3MzU1XHU3MzU2XHU3MzU4Iiw3LCJcdTczNjEiLDEwLCJcdTczNmVcdTczNzBc''@;'; put 'put ''dTczNzEiXSxbImFiNDAiLCJcdTczNzIiLDExLCJcdTczN2YiLDQsIlx1NzM4NVx1NzM4Nlx1NzM4OFx1NzM4YVx1NzM4Y1x1NzM4ZFx1NzM4Zlx1NzM5MFx1NzM5Mlx1NzM5M1x1NzM5NFx1NzM5NVx1NzM5N1x1NzM5OFx1NzM5OVx1NzM5YVx1NzM5Y1x1NzM5ZFx1NzM5ZVx1NzNhMFx1NzNh''@;'; put 'put ''MVx1NzNhMyIsNSwiXHU3M2FhXHU3M2FjXHU3M2FkXHU3M2IxXHU3M2I0XHU3M2I1XHU3M2I2XHU3M2I4XHU3M2I5XHU3M2JjXHU3M2JkXHU3M2JlXHU3M2JmXHU3M2MxXHU3M2MzIiw0XSxbImFiODAiLCJcdTczY2JcdTczY2NcdTczY2VcdTczZDIiLDYsIlx1NzNkYVx1NzNkYlx1NzNkY1x1''@;'; put 'put ''NzNkZFx1NzNkZlx1NzNlMVx1NzNlMlx1NzNlM1x1NzNlNFx1NzNlNlx1NzNlOFx1NzNlYVx1NzNlYlx1NzNlY1x1NzNlZVx1NzNlZlx1NzNmMFx1NzNmMVx1NzNmMyIsNF0sWyJhYzQwIiwiXHU3M2Y4IiwxMCwiXHU3NDA0XHU3NDA3XHU3NDA4XHU3NDBiXHU3NDBjXHU3NDBkXHU3NDBlXHU3''@;'; put 'put ''NDExIiw4LCJcdTc0MWMiLDUsIlx1NzQyM1x1NzQyNFx1NzQyN1x1NzQyOVx1NzQyYlx1NzQyZFx1NzQyZlx1NzQzMVx1NzQzMlx1NzQzNyIsNCwiXHU3NDNkXHU3NDNlXHU3NDNmXHU3NDQwXHU3NDQyIiwxMV0sWyJhYzgwIiwiXHU3NDRlIiw2LCJcdTc0NTZcdTc0NThcdTc0NWRcdTc0NjAi''@;'; put 'put ''LDEyLCJcdTc0NmVcdTc0NmZcdTc0NzEiLDQsIlx1NzQ3OFx1NzQ3OVx1NzQ3YSJdLFsiYWQ0MCIsIlx1NzQ3Ylx1NzQ3Y1x1NzQ3ZFx1NzQ3Zlx1NzQ4Mlx1NzQ4NFx1NzQ4NVx1NzQ4Nlx1NzQ4OFx1NzQ4OVx1NzQ4YVx1NzQ4Y1x1NzQ4ZFx1NzQ4Zlx1NzQ5MSIsMTAsIlx1NzQ5ZFx1NzQ5''@;'; put 'put ''ZiIsNywiXHU3NGFhIiwxNSwiXHU3NGJiIiwxMl0sWyJhZDgwIiwiXHU3NGM4Iiw5LCJcdTc0ZDMiLDgsIlx1NzRkZFx1NzRkZlx1NzRlMVx1NzRlNVx1NzRlNyIsNiwiXHU3NGYwXHU3NGYxXHU3NGYyIl0sWyJhZTQwIiwiXHU3NGYzXHU3NGY1XHU3NGY4Iiw2LCJcdTc1MDBcdTc1MDFcdTc1''@;'; put 'put ''MDJcdTc1MDNcdTc1MDUiLDcsIlx1NzUwZVx1NzUxMFx1NzUxMlx1NzUxNFx1NzUxNVx1NzUxNlx1NzUxN1x1NzUxYlx1NzUxZFx1NzUxZVx1NzUyMCIsNCwiXHU3NTI2XHU3NTI3XHU3NTJhXHU3NTJlXHU3NTM0XHU3NTM2XHU3NTM5XHU3NTNjXHU3NTNkXHU3NTNmXHU3NTQxXHU3NTQyXHU3''@;'; put 'put ''NTQzXHU3NTQ0XHU3NTQ2XHU3NTQ3XHU3NTQ5XHU3NTRhXHU3NTRkXHU3NTUwXHU3NTUxXHU3NTUyXHU3NTUzXHU3NTU1XHU3NTU2XHU3NTU3XHU3NTU4Il0sWyJhZTgwIiwiXHU3NTVkIiw3LCJcdTc1NjdcdTc1NjhcdTc1NjlcdTc1NmIiLDYsIlx1NzU3M1x1NzU3NVx1NzU3Nlx1NzU3N1x1''@;'; put 'put ''NzU3YSIsNCwiXHU3NTgwXHU3NTgxXHU3NTgyXHU3NTg0XHU3NTg1XHU3NTg3Il0sWyJhZjQwIiwiXHU3NTg4XHU3NTg5XHU3NThhXHU3NThjXHU3NThkXHU3NThlXHU3NTkwXHU3NTkzXHU3NTk1XHU3NTk4XHU3NTliXHU3NTljXHU3NTllXHU3NWEyXHU3NWE2Iiw0LCJcdTc1YWRcdTc1YjZc''@;'; put 'put ''dTc1YjdcdTc1YmFcdTc1YmJcdTc1YmZcdTc1YzBcdTc1YzFcdTc1YzZcdTc1Y2JcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDBcdTc1ZDFcdTc1ZDNcdTc1ZDdcdTc1ZDlcdTc1ZGFcdTc1ZGNcdTc1ZGRcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTVcdTc1ZTlcdTc1ZWNcdTc1ZWRcdTc1ZWVcdTc1''@;'; put 'put ''ZWZcdTc1ZjJcdTc1ZjNcdTc1ZjVcdTc1ZjZcdTc1ZjdcdTc1ZjhcdTc1ZmFcdTc1ZmJcdTc1ZmRcdTc1ZmVcdTc2MDJcdTc2MDRcdTc2MDZcdTc2MDciXSxbImFmODAiLCJcdTc2MDhcdTc2MDlcdTc2MGJcdTc2MGRcdTc2MGVcdTc2MGZcdTc2MTFcdTc2MTJcdTc2MTNcdTc2MTRcdTc2MTZc''@;'; put 'put ''dTc2MWFcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjFcdTc2MjNcdTc2MjdcdTc2MjhcdTc2MmNcdTc2MmVcdTc2MmZcdTc2MzFcdTc2MzJcdTc2MzZcdTc2MzdcdTc2MzlcdTc2M2FcdTc2M2JcdTc2M2RcdTc2NDFcdTc2NDJcdTc2NDQiXSxbImIwNDAiLCJcdTc2NDUiLDYsIlx1NzY0ZSIsNSwi''@;'; put 'put ''XHU3NjU1XHU3NjU3Iiw0LCJcdTc2NWRcdTc2NWZcdTc2NjBcdTc2NjFcdTc2NjJcdTc2NjQiLDYsIlx1NzY2Y1x1NzY2ZFx1NzY2ZVx1NzY3MCIsNywiXHU3Njc5XHU3NjdhXHU3NjdjXHU3NjdmXHU3NjgwXHU3NjgxXHU3NjgzXHU3Njg1XHU3Njg5XHU3NjhhXHU3NjhjXHU3NjhkXHU3Njhm''@;'; put 'put ''XHU3NjkwXHU3NjkyXHU3Njk0XHU3Njk1XHU3Njk3XHU3Njk4XHU3NjlhXHU3NjliIl0sWyJiMDgwIiwiXHU3NjljIiw3LCJcdTc2YTUiLDgsIlx1NzZhZlx1NzZiMFx1NzZiM1x1NzZiNSIsOSwiXHU3NmMwXHU3NmMxXHU3NmMzXHU1NTRhXHU5NjNmXHU1N2MzXHU2MzI4XHU1NGNlXHU1NTA5''@;'; put 'put ''XHU1NGMwXHU3NjkxXHU3NjRjXHU4NTNjXHU3N2VlXHU4MjdlXHU3ODhkXHU3MjMxXHU5Njk4XHU5NzhkXHU2YzI4XHU1Yjg5XHU0ZmZhXHU2MzA5XHU2Njk3XHU1Y2I4XHU4MGZhXHU2ODQ4XHU4MGFlXHU2NjAyXHU3NmNlXHU1MWY5XHU2NTU2XHU3MWFjXHU3ZmYxXHU4ODg0XHU1MGIyXHU1''@;'; put 'put ''OTY1XHU2MWNhXHU2ZmIzXHU4MmFkXHU2MzRjXHU2MjUyXHU1M2VkXHU1NDI3XHU3YjA2XHU1MTZiXHU3NWE0XHU1ZGY0XHU2MmQ0XHU4ZGNiXHU5Nzc2XHU2MjhhXHU4MDE5XHU1NzVkXHU5NzM4XHU3ZjYyXHU3MjM4XHU3NjdkXHU2N2NmXHU3NjdlXHU2NDQ2XHU0ZjcwXHU4ZDI1XHU2MmRj''@;'; put 'put ''XHU3YTE3XHU2NTkxXHU3M2VkXHU2NDJjXHU2MjczXHU4MjJjXHU5ODgxXHU2NzdmXHU3MjQ4XHU2MjZlXHU2MmNjXHU0ZjM0XHU3NGUzXHU1MzRhXHU1MjllXHU3ZWNhXHU5MGE2XHU1ZTJlXHU2ODg2XHU2OTljXHU4MTgwXHU3ZWQxXHU2OGQyXHU3OGM1XHU4NjhjXHU5NTUxXHU1MDhkXHU4''@;'; put 'put ''YzI0XHU4MmRlXHU4MGRlXHU1MzA1XHU4OTEyXHU1MjY1Il0sWyJiMTQwIiwiXHU3NmM0XHU3NmM3XHU3NmM5XHU3NmNiXHU3NmNjXHU3NmQzXHU3NmQ1XHU3NmQ5XHU3NmRhXHU3NmRjXHU3NmRkXHU3NmRlXHU3NmUwIiw0LCJcdTc2ZTYiLDcsIlx1NzZmMFx1NzZmM1x1NzZmNVx1NzZmNlx1''@;'; put 'put ''NzZmN1x1NzZmYVx1NzZmYlx1NzZmZFx1NzZmZlx1NzcwMFx1NzcwMlx1NzcwM1x1NzcwNVx1NzcwNlx1NzcwYVx1NzcwY1x1NzcwZSIsMTAsIlx1NzcxYlx1NzcxY1x1NzcxZFx1NzcxZVx1NzcyMVx1NzcyM1x1NzcyNFx1NzcyNVx1NzcyN1x1NzcyYVx1NzcyYiJdLFsiYjE4MCIsIlx1Nzcy''@;'; put 'put ''Y1x1NzcyZVx1NzczMCIsNCwiXHU3NzM5XHU3NzNiXHU3NzNkXHU3NzNlXHU3NzNmXHU3NzQyXHU3NzQ0XHU3NzQ1XHU3NzQ2XHU3NzQ4Iiw3LCJcdTc3NTIiLDcsIlx1Nzc1Y1x1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4''@;'; put 'put ''ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMxN1x1OGY4OFx1ODBjY1x1OGQxZFx1OTRhMVx1NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUyZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1''@;'; put 'put ''OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1ODRkNlx1ODUzZFx1NmJkNVx1NmJkOVx1NmJkNlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYwYVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0''@;'; put 'put ''MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZhYlx1OTA0ZFx1NjgwN1x1NWY2YVx1ODE5OFx1ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFiMFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1''@;'; put 'put ''NzBiMyJdLFsiYjI0MCIsIlx1Nzc1ZFx1Nzc1ZVx1Nzc1Zlx1Nzc2MFx1Nzc2NFx1Nzc2N1x1Nzc2OVx1Nzc2YVx1Nzc2ZCIsMTEsIlx1Nzc3YVx1Nzc3Ylx1Nzc3Y1x1Nzc4MVx1Nzc4Mlx1Nzc4M1x1Nzc4NiIsNSwiXHU3NzhmXHU3NzkwXHU3NzkzIiwxMSwiXHU3N2ExXHU3N2EzXHU3N2E0''@;'; put 'put ''XHU3N2E2XHU3N2E4XHU3N2FiXHU3N2FkXHU3N2FlXHU3N2FmXHU3N2IxXHU3N2IyXHU3N2I0XHU3N2I2Iiw0XSxbImIyODAiLCJcdTc3YmNcdTc3YmVcdTc3YzAiLDEyLCJcdTc3Y2UiLDgsIlx1NzdkOFx1NzdkOVx1NzdkYVx1NzdkZCIsNCwiXHU3N2U0XHU3NWM1XHU1ZTc2XHU3M2JiXHU4''@;'; put 'put ''M2UwXHU2NGFkXHU2MmU4XHU5NGI1XHU2Y2UyXHU1MzVhXHU1MmMzXHU2NDBmXHU5NGMyXHU3Yjk0XHU0ZjJmXHU1ZTFiXHU4MjM2XHU4MTE2XHU4MThhXHU2ZTI0XHU2Y2NhXHU5YTczXHU2MzU1XHU1MzVjXHU1NGZhXHU4ODY1XHU1N2UwXHU0ZTBkXHU1ZTAzXHU2YjY1XHU3YzNmXHU5MGU4''@;'; put 'put ''XHU2MDE2XHU2NGU2XHU3MzFjXHU4OGMxXHU2NzUwXHU2MjRkXHU4ZDIyXHU3NzZjXHU4ZTI5XHU5MWM3XHU1ZjY5XHU4M2RjXHU4NTIxXHU5OTEwXHU1M2MyXHU4Njk1XHU2YjhiXHU2MGVkXHU2MGU4XHU3MDdmXHU4MmNkXHU4MjMxXHU0ZWQzXHU2Y2E3XHU4NWNmXHU2NGNkXHU3Y2Q5XHU2''@;'; put 'put ''OWZkXHU2NmY5XHU4MzQ5XHU1Mzk1XHU3YjU2XHU0ZmE3XHU1MThjXHU2ZDRiXHU1YzQyXHU4ZTZkXHU2M2QyXHU1M2M5XHU4MzJjXHU4MzM2XHU2N2U1XHU3OGI0XHU2NDNkXHU1YmRmXHU1Yzk0XHU1ZGVlXHU4YmU3XHU2MmM2XHU2N2Y0XHU4YzdhXHU2NDAwXHU2M2JhXHU4NzQ5XHU5OThi''@;'; put 'put ''XHU4YzE3XHU3ZjIwXHU5NGYyXHU0ZWE3XHU5NjEwXHU5OGE0XHU2NjBjXHU3MzE2Il0sWyJiMzQwIiwiXHU3N2U2XHU3N2U4XHU3N2VhXHU3N2VmXHU3N2YwXHU3N2YxXHU3N2YyXHU3N2Y0XHU3N2Y1XHU3N2Y3XHU3N2Y5XHU3N2ZhXHU3N2ZiXHU3N2ZjXHU3ODAzIiw1LCJcdTc4MGFcdTc4''@;'; put 'put ''MGJcdTc4MGVcdTc4MGZcdTc4MTBcdTc4MTNcdTc4MTVcdTc4MTlcdTc4MWJcdTc4MWVcdTc4MjBcdTc4MjFcdTc4MjJcdTc4MjRcdTc4MjhcdTc4MmFcdTc4MmJcdTc4MmVcdTc4MmZcdTc4MzFcdTc4MzJcdTc4MzNcdTc4MzVcdTc4MzZcdTc4M2RcdTc4M2ZcdTc4NDFcdTc4NDJcdTc4NDNc''@;'; put 'put ''dTc4NDRcdTc4NDZcdTc4NDhcdTc4NDlcdTc4NGFcdTc4NGJcdTc4NGRcdTc4NGZcdTc4NTFcdTc4NTNcdTc4NTRcdTc4NThcdTc4NTlcdTc4NWEiXSxbImIzODAiLCJcdTc4NWJcdTc4NWNcdTc4NWUiLDExLCJcdTc4NmYiLDcsIlx1Nzg3OFx1Nzg3OVx1Nzg3YVx1Nzg3Ylx1Nzg3ZCIsNiwi''@;'; put 'put ''XHU1NzNhXHU1YzFkXHU1ZTM4XHU5NTdmXHU1MDdmXHU4MGEwXHU1MzgyXHU2NTVlXHU3NTQ1XHU1NTMxXHU1MDIxXHU4ZDg1XHU2Mjg0XHU5NDllXHU2NzFkXHU1NjMyXHU2ZjZlXHU1ZGUyXHU1NDM1XHU3MDkyXHU4ZjY2XHU2MjZmXHU2NGE0XHU2M2EzXHU1ZjdiXHU2Zjg4XHU5MGY0XHU4''@;'; put 'put ''MWUzXHU4ZmIwXHU1YzE4XHU2NjY4XHU1ZmYxXHU2Yzg5XHU5NjQ4XHU4ZDgxXHU4ODZjXHU2NDkxXHU3OWYwXHU1N2NlXHU2YTU5XHU2MjEwXHU1NDQ4XHU0ZTU4XHU3YTBiXHU2MGU5XHU2Zjg0XHU4YmRhXHU2MjdmXHU5MDFlXHU5YThiXHU3OWU0XHU1NDAzXHU3NWY0XHU2MzAxXHU1MzE5''@;'; put 'put ''XHU2YzYwXHU4ZmRmXHU1ZjFiXHU5YTcwXHU4MDNiXHU5ZjdmXHU0Zjg4XHU1YzNhXHU4ZDY0XHU3ZmM1XHU2NWE1XHU3MGJkXHU1MTQ1XHU1MWIyXHU4NjZiXHU1ZDA3XHU1YmEwXHU2MmJkXHU5MTZjXHU3NTc0XHU4ZTBjXHU3YTIwXHU2MTAxXHU3Yjc5XHU0ZWM3XHU3ZWY4XHU3Nzg1XHU0''@;'; put 'put ''ZTExXHU4MWVkXHU1MjFkXHU1MWZhXHU2YTcxXHU1M2E4XHU4ZTg3XHU5NTA0XHU5NmNmXHU2ZWMxXHU5NjY0XHU2OTVhIl0sWyJiNDQwIiwiXHU3ODg0XHU3ODg1XHU3ODg2XHU3ODg4XHU3ODhhXHU3ODhiXHU3ODhmXHU3ODkwXHU3ODkyXHU3ODk0XHU3ODk1XHU3ODk2XHU3ODk5XHU3ODlk''@;'; put 'put ''XHU3ODllXHU3OGEwXHU3OGEyXHU3OGE0XHU3OGE2XHU3OGE4Iiw3LCJcdTc4YjVcdTc4YjZcdTc4YjdcdTc4YjhcdTc4YmFcdTc4YmJcdTc4YmNcdTc4YmRcdTc4YmZcdTc4YzBcdTc4YzJcdTc4YzNcdTc4YzRcdTc4YzZcdTc4YzdcdTc4YzhcdTc4Y2NcdTc4Y2RcdTc4Y2VcdTc4Y2ZcdTc4''@;'; put 'put ''ZDFcdTc4ZDJcdTc4ZDNcdTc4ZDZcdTc4ZDdcdTc4ZDhcdTc4ZGEiLDldLFsiYjQ4MCIsIlx1NzhlNFx1NzhlNVx1NzhlNlx1NzhlN1x1NzhlOVx1NzhlYVx1NzhlYlx1NzhlZCIsNCwiXHU3OGYzXHU3OGY1XHU3OGY2XHU3OGY4XHU3OGY5XHU3OGZiIiw1LCJcdTc5MDJcdTc5MDNcdTc5MDRc''@;'; put 'put ''dTc5MDYiLDYsIlx1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1NGYyMFx1ODIzOVx1NTU5OFx1NGUzMlx1NzVhZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYy''@;'; put 'put ''NVx1NjkzZlx1OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZjY1x1OGY5ZVx1NjE0OFx1NzRmN1x1OGJjZFx1NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZmMVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1''@;'; put 'put ''N2M5N1x1OTE4Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1N2NiOVx1NmRlY1x1N2ZlMFx1Njc1MVx1NWI1OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYy''@;'; put 'put ''OVx1NjI1M1x1NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4NVx1OTAyZSJdLFsiYjU0MCIsIlx1NzkwZCIsNSwiXHU3OTE0Iiw5LCJcdTc5MWYiLDQsIlx1NzkyNSIsMTQsIlx1NzkzNSIsNCwiXHU3OTNkXHU3OTNmXHU3OTQy''@;'; put 'put ''XHU3OTQzXHU3OTQ0XHU3OTQ1XHU3OTQ3XHU3OTRhIiw4LCJcdTc5NTRcdTc5NTVcdTc5NThcdTc5NTlcdTc5NjFcdTc5NjMiXSxbImI1ODAiLCJcdTc5NjRcdTc5NjZcdTc5NjlcdTc5NmFcdTc5NmJcdTc5NmNcdTc5NmVcdTc5NzAiLDYsIlx1Nzk3OVx1Nzk3YiIsNCwiXHU3OTgyXHU3OTgz''@;'; put 'put ''XHU3OTg2XHU3OTg3XHU3OTg4XHU3OTg5XHU3OThiXHU3OThjXHU3OThkXHU3OThlXHU3OTkwXHU3OTkxXHU3OTkyXHU2MDIwXHU4MDNkXHU2MmM1XHU0ZTM5XHU1MzU1XHU5MGY4XHU2M2I4XHU4MGM2XHU2NWU2XHU2YzJlXHU0ZjQ2XHU2MGVlXHU2ZGUxXHU4YmRlXHU1ZjM5XHU4NmNiXHU1''@;'; put 'put ''ZjUzXHU2MzIxXHU1MTVhXHU4MzYxXHU2ODYzXHU1MjAwXHU2MzYzXHU4ZTQ4XHU1MDEyXHU1YzliXHU3OTc3XHU1YmZjXHU1MjMwXHU3YTNiXHU2MGJjXHU5MDUzXHU3NmQ3XHU1ZmI3XHU1Zjk3XHU3Njg0XHU4ZTZjXHU3MDZmXHU3NjdiXHU3YjQ5XHU3N2FhXHU1MWYzXHU5MDkzXHU1ODI0''@;'; put 'put ''XHU0ZjRlXHU2ZWY0XHU4ZmVhXHU2NTRjXHU3YjFiXHU3MmM0XHU2ZGE0XHU3ZmRmXHU1YWUxXHU2MmI1XHU1ZTk1XHU1NzMwXHU4NDgyXHU3YjJjXHU1ZTFkXHU1ZjFmXHU5MDEyXHU3ZjE0XHU5OGEwXHU2MzgyXHU2ZWM3XHU3ODk4XHU3MGI5XHU1MTc4XHU5NzViXHU1N2FiXHU3NTM1XHU0''@;'; put 'put ''ZjQzXHU3NTM4XHU1ZTk3XHU2MGU2XHU1OTYwXHU2ZGMwXHU2YmJmXHU3ODg5XHU1M2ZjXHU5NmQ1XHU1MWNiXHU1MjAxXHU2Mzg5XHU1NDBhXHU5NDkzXHU4YzAzXHU4ZGNjXHU3MjM5XHU3ODlmXHU4Nzc2XHU4ZmVkXHU4YzBkXHU1M2UwIl0sWyJiNjQwIiwiXHU3OTkzIiw2LCJcdTc5OWIi''@;'; put 'put ''LDExLCJcdTc5YTgiLDEwLCJcdTc5YjQiLDQsIlx1NzliY1x1NzliZlx1NzljMlx1NzljNFx1NzljNVx1NzljN1x1NzljOFx1NzljYVx1NzljY1x1NzljZVx1NzljZlx1NzlkMFx1NzlkM1x1NzlkNFx1NzlkNlx1NzlkN1x1NzlkOSIsNSwiXHU3OWUwXHU3OWUxXHU3OWUyXHU3OWU1XHU3OWU4''@;'; put 'put ''XHU3OWVhIl0sWyJiNjgwIiwiXHU3OWVjXHU3OWVlXHU3OWYxIiw2LCJcdTc5ZjlcdTc5ZmFcdTc5ZmNcdTc5ZmVcdTc5ZmZcdTdhMDFcdTdhMDRcdTdhMDVcdTdhMDdcdTdhMDhcdTdhMDlcdTdhMGFcdTdhMGNcdTdhMGYiLDQsIlx1N2ExNVx1N2ExNlx1N2ExOFx1N2ExOVx1N2ExYlx1N2Ex''@;'; put 'put ''Y1x1NGUwMVx1NzZlZlx1NTNlZVx1OTQ4OVx1OTg3Nlx1OWYwZVx1OTUyZFx1NWI5YVx1OGJhMlx1NGUyMlx1NGUxY1x1NTFhY1x1ODQ2M1x1NjFjMlx1NTJhOFx1NjgwYlx1NGY5N1x1NjA2Ylx1NTFiYlx1NmQxZVx1NTE1Y1x1NjI5Nlx1NjU5N1x1OTY2MVx1OGM0Nlx1OTAxN1x1NzVkOFx1''@;'; put 'put ''OTBmZFx1Nzc2M1x1NmJkMlx1NzI4YVx1NzJlY1x1OGJmYlx1NTgzNVx1Nzc3OVx1OGQ0Y1x1Njc1Y1x1OTU0MFx1ODA5YVx1NWVhNlx1NmUyMVx1NTk5Mlx1N2FlZlx1NzdlZFx1OTUzYlx1NmJiNVx1NjVhZFx1N2YwZVx1NTgwNlx1NTE1MVx1OTYxZlx1NWJmOVx1NThhOVx1NTQyOFx1OGU3''@;'; put 'put ''Mlx1NjU2Nlx1OTg3Zlx1NTZlNFx1OTQ5ZFx1NzZmZVx1OTA0MVx1NjM4N1x1NTRjNlx1NTkxYVx1NTkzYVx1NTc5Ylx1OGViMlx1NjczNVx1OGRmYVx1ODIzNVx1NTI0MVx1NjBmMFx1NTgxNVx1ODZmZVx1NWNlOFx1OWU0NVx1NGZjNFx1OTg5ZFx1OGJiOVx1NWEyNVx1NjA3Nlx1NTM4NFx1''@;'; put 'put ''NjI3Y1x1OTA0Zlx1OTEwMlx1OTk3Zlx1NjA2OVx1ODAwY1x1NTEzZlx1ODAzM1x1NWMxNFx1OTk3NVx1NmQzMVx1NGU4YyJdLFsiYjc0MCIsIlx1N2ExZFx1N2ExZlx1N2EyMVx1N2EyMlx1N2EyNCIsMTQsIlx1N2EzNFx1N2EzNVx1N2EzNlx1N2EzOFx1N2EzYVx1N2EzZVx1N2E0MCIsNSwi''@;'; put 'put ''XHU3YTQ3Iiw5LCJcdTdhNTIiLDQsIlx1N2E1OCIsMTZdLFsiYjc4MCIsIlx1N2E2OSIsNiwiXHU3YTcxXHU3YTcyXHU3YTczXHU3YTc1XHU3YTdiXHU3YTdjXHU3YTdkXHU3YTdlXHU3YTgyXHU3YTg1XHU3YTg3XHU3YTg5XHU3YThhXHU3YThiXHU3YThjXHU3YThlXHU3YThmXHU3YTkwXHU3''@;'; put 'put ''YTkzXHU3YTk0XHU3YTk5XHU3YTlhXHU3YTliXHU3YTllXHU3YWExXHU3YWEyXHU4ZDMwXHU1M2QxXHU3ZjVhXHU3YjRmXHU0ZjEwXHU0ZTRmXHU5NjAwXHU2Y2Q1XHU3M2QwXHU4NWU5XHU1ZTA2XHU3NTZhXHU3ZmZiXHU2YTBhXHU3N2ZlXHU5NDkyXHU3ZTQxXHU1MWUxXHU3MGU2XHU1M2Nk''@;'; put 'put ''XHU4ZmQ0XHU4MzAzXHU4ZDI5XHU3MmFmXHU5OTZkXHU2Y2RiXHU1NzRhXHU4MmIzXHU2NWI5XHU4MGFhXHU2MjNmXHU5NjMyXHU1OWE4XHU0ZWZmXHU4YmJmXHU3ZWJhXHU2NTNlXHU4M2YyXHU5NzVlXHU1NTYxXHU5OGRlXHU4MGE1XHU1MzJhXHU4YmZkXHU1NDIwXHU4MGJhXHU1ZTlmXHU2''@;'; put 'put ''Y2I4XHU4ZDM5XHU4MmFjXHU5MTVhXHU1NDI5XHU2YzFiXHU1MjA2XHU3ZWI3XHU1NzVmXHU3MTFhXHU2YzdlXHU3Yzg5XHU1OTRiXHU0ZWZkXHU1ZmZmXHU2MTI0XHU3Y2FhXHU0ZTMwXHU1YzAxXHU2N2FiXHU4NzAyXHU1Y2YwXHU5NTBiXHU5OGNlXHU3NWFmXHU3MGZkXHU5MDIyXHU1MWFm''@;'; put 'put ''XHU3ZjFkXHU4YmJkXHU1OTQ5XHU1MWU0XHU0ZjViXHU1NDI2XHU1OTJiXHU2NTc3XHU4MGE0XHU1Yjc1XHU2Mjc2XHU2MmMyXHU4ZjkwXHU1ZTQ1XHU2YzFmXHU3YjI2XHU0ZjBmXHU0ZmQ4XHU2NzBkIl0sWyJiODQwIiwiXHU3YWEzXHU3YWE0XHU3YWE3XHU3YWE5XHU3YWFhXHU3YWFiXHU3''@;'; put 'put ''YWFlIiw0LCJcdTdhYjQiLDEwLCJcdTdhYzAiLDEwLCJcdTdhY2MiLDksIlx1N2FkN1x1N2FkOFx1N2FkYVx1N2FkYlx1N2FkY1x1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNFx1N2FlNyIsNSwiXHU3YWVlXHU3YWYwXHU3YWYxXHU3YWYyXHU3YWYzIl0sWyJiODgwIiwiXHU3YWY0Iiw0LCJcdTdh''@;'; put 'put ''ZmJcdTdhZmNcdTdhZmVcdTdiMDBcdTdiMDFcdTdiMDJcdTdiMDVcdTdiMDdcdTdiMDlcdTdiMGNcdTdiMGRcdTdiMGVcdTdiMTBcdTdiMTJcdTdiMTNcdTdiMTZcdTdiMTdcdTdiMThcdTdiMWFcdTdiMWNcdTdiMWRcdTdiMWZcdTdiMjFcdTdiMjJcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmRc''@;'; put 'put ''dTZkNmVcdTZkYWFcdTc5OGZcdTg4YjFcdTVmMTdcdTc1MmJcdTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThkNGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThi''@;'; put 'put ''YTNcdTk2NDRcdTU5ODdcdTdmMWFcdTU0OTBcdTU2NzZcdTU2MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRcdThkNzZcdTYxMWZcdTc5YzZcdTY1NjJcdThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhc''@;'; put 'put ''dTgwOWJcdTdlYjJcdTVjOTdcdTZlMmZcdTY3NjBcdTdiZDlcdTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYyMDhcdTllM2RcdTgwZjNcdTc1OTlcdTUyNzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2''@;'; put 'put ''MDFcdTk2OTRcdTk0ZWNcdTRlMmFcdTU0MDRcdTdlZDlcdTY4MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjkiXSxbImI5NDAiLCJcdTdiMmZcdTdiMzBcdTdiMzJcdTdiMzRcdTdiMzVcdTdiMzZcdTdiMzdcdTdiMzlcdTdiM2JcdTdiM2RcdTdiM2YiLDUsIlx1N2I0Nlx1N2I0OFx1''@;'; put 'put ''N2I0YVx1N2I0ZFx1N2I0ZVx1N2I1M1x1N2I1NVx1N2I1N1x1N2I1OVx1N2I1Y1x1N2I1ZVx1N2I1Zlx1N2I2MVx1N2I2MyIsMTAsIlx1N2I2Zlx1N2I3MFx1N2I3M1x1N2I3NFx1N2I3Nlx1N2I3OFx1N2I3YVx1N2I3Y1x1N2I3ZFx1N2I3Zlx1N2I4MVx1N2I4Mlx1N2I4M1x1N2I4NFx1N2I4''@;'; put 'put ''NiIsNiwiXHU3YjhlXHU3YjhmIl0sWyJiOTgwIiwiXHU3YjkxXHU3YjkyXHU3YjkzXHU3Yjk2XHU3Yjk4XHU3Yjk5XHU3YjlhXHU3YjliXHU3YjllXHU3YjlmXHU3YmEwXHU3YmEzXHU3YmE0XHU3YmE1XHU3YmFlXHU3YmFmXHU3YmIwXHU3YmIyXHU3YmIzXHU3YmI1XHU3YmI2XHU3YmI3XHU3''@;'; put 'put ''YmI5Iiw3LCJcdTdiYzJcdTdiYzNcdTdiYzRcdTU3YzJcdTgwM2ZcdTY4OTdcdTVkZTVcdTY1M2JcdTUyOWZcdTYwNmRcdTlmOWFcdTRmOWJcdThlYWNcdTUxNmNcdTViYWJcdTVmMTNcdTVkZTlcdTZjNWVcdTYyZjFcdThkMjFcdTUxNzFcdTk0YTlcdTUyZmVcdTZjOWZcdTgyZGZcdTcyZDdc''@;'; put 'put ''dTU3YTJcdTY3ODRcdThkMmRcdTU5MWZcdThmOWNcdTgzYzdcdTU0OTVcdTdiOGRcdTRmMzBcdTZjYmRcdTViNjRcdTU5ZDFcdTlmMTNcdTUzZTRcdTg2Y2FcdTlhYThcdThjMzdcdTgwYTFcdTY1NDVcdTk4N2VcdTU2ZmFcdTk2YzdcdTUyMmVcdTc0ZGNcdTUyNTBcdTViZTFcdTYzMDJcdTg5''@;'; put 'put ''MDJcdTRlNTZcdTYyZDBcdTYwMmFcdTY4ZmFcdTUxNzNcdTViOThcdTUxYTBcdTg5YzJcdTdiYTFcdTk5ODZcdTdmNTBcdTYwZWZcdTcwNGNcdThkMmZcdTUxNDlcdTVlN2ZcdTkwMWJcdTc0NzBcdTg5YzRcdTU3MmRcdTc4NDVcdTVmNTJcdTlmOWZcdTk1ZmFcdThmNjhcdTliM2NcdThiZTFc''@;'; put 'put ''dTc2NzhcdTY4NDJcdTY3ZGNcdThkZWFcdThkMzVcdTUyM2RcdThmOGFcdTZlZGFcdTY4Y2RcdTk1MDVcdTkwZWRcdTU2ZmRcdTY3OWNcdTg4ZjlcdThmYzdcdTU0YzgiXSxbImJhNDAiLCJcdTdiYzVcdTdiYzhcdTdiYzlcdTdiY2FcdTdiY2JcdTdiY2RcdTdiY2VcdTdiY2ZcdTdiZDBcdTdi''@;'; put 'put ''ZDJcdTdiZDQiLDQsIlx1N2JkYlx1N2JkY1x1N2JkZVx1N2JkZlx1N2JlMFx1N2JlMlx1N2JlM1x1N2JlNFx1N2JlN1x1N2JlOFx1N2JlOVx1N2JlYlx1N2JlY1x1N2JlZFx1N2JlZlx1N2JmMFx1N2JmMiIsNCwiXHU3YmY4XHU3YmY5XHU3YmZhXHU3YmZiXHU3YmZkXHU3YmZmIiw3LCJcdTdj''@;'; put 'put ''MDhcdTdjMDlcdTdjMGFcdTdjMGRcdTdjMGVcdTdjMTAiLDUsIlx1N2MxN1x1N2MxOFx1N2MxOSJdLFsiYmE4MCIsIlx1N2MxYSIsNCwiXHU3YzIwIiw1LCJcdTdjMjhcdTdjMjlcdTdjMmIiLDEyLCJcdTdjMzkiLDUsIlx1N2M0Mlx1OWFiOFx1NWI2OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJi''@;'; put 'put ''M1x1OWE4N1x1OTE2M1x1NjFhOFx1OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1N1x1NmM0OVx1NTkyZlx1Njc2ZFx1ODIyYVx1NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1''@;'; put 'put ''OTBkZFx1NTk3ZFx1ODAxN1x1NTNmN1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNjZlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1OGQ2Ylx1ODkxMFx1OWU2NFx1OGQzYVx1NTYzZlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJl''@;'; put 'put ''MFx1NjA2OFx1NTRmY1x1NGVhOFx1NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQzY1x1NTM5YVx1NTAxOVx1NTQwZVx1NTQ3Y1x1NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1''@;'; put 'put ''ODQ2Ylx1ODBlMVx1ODc3NFx1NzJkMFx1N2NjYVx1NmU1NiJdLFsiYmI0MCIsIlx1N2M0MyIsOSwiXHU3YzRlIiwzNiwiXHU3Yzc1Iiw1LCJcdTdjN2UiLDldLFsiYmI4MCIsIlx1N2M4OFx1N2M4YSIsNiwiXHU3YzkzXHU3Yzk0XHU3Yzk2XHU3Yzk5XHU3YzlhXHU3YzliXHU3Y2EwXHU3Y2Ex''@;'; put 'put ''XHU3Y2EzXHU3Y2E2XHU3Y2E3XHU3Y2E4XHU3Y2E5XHU3Y2FiXHU3Y2FjXHU3Y2FkXHU3Y2FmXHU3Y2IwXHU3Y2I0Iiw0LCJcdTdjYmFcdTdjYmJcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFcdTc1M2JcdTUy''@;'; put 'put ''MTJcdTUzMTZcdThiZGRcdTY5ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTczYWZcdTY4NTNcdThmZDhcdTdmMTNcdTYzNjJcdTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3NTdcdTdjMjdc''@;'; put 'put ''dTc2ODdcdTUxZjBcdTYwZjZcdTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBcdTYzMjVcdThmODlcdTVmYmRcdTYwNjJcdTg2ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdcdThiYjNcdThi''@;'; put 'put ''ZjJcdTdlZDhcdTgzNjRcdTY2MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZkM2JcdTRmMTlcdTcwNmJcdTgzYjdcdTYyMTZcdTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTUiXSxbImJjNDAiLCJc''@;'; put 'put ''dTdjYmZcdTdjYzBcdTdjYzJcdTdjYzNcdTdjYzRcdTdjYzZcdTdjYzlcdTdjY2JcdTdjY2UiLDYsIlx1N2NkOFx1N2NkYVx1N2NkYlx1N2NkZFx1N2NkZVx1N2NlMSIsNiwiXHU3Y2U5Iiw1LCJcdTdjZjAiLDcsIlx1N2NmOVx1N2NmYVx1N2NmYyIsMTMsIlx1N2QwYiIsNV0sWyJiYzgwIiwi''@;'; put 'put ''XHU3ZDExIiwxNCwiXHU3ZDIxXHU3ZDIzXHU3ZDI0XHU3ZDI1XHU3ZDI2XHU3ZDI4XHU3ZDI5XHU3ZDJhXHU3ZDJjXHU3ZDJkXHU3ZDJlXHU3ZDMwIiw2LCJcdTgwOGNcdTk5NjVcdThmZjlcdTZmYzBcdThiYTVcdTllMjFcdTU5ZWNcdTdlZTlcdTdmMDlcdTU0MDlcdTY3ODFcdTY4ZDhcdThm''@;'; put 'put ''OTFcdTdjNGRcdTk2YzZcdTUzY2FcdTYwMjVcdTc1YmVcdTZjNzJcdTUzNzNcdTVhYzlcdTdlYTdcdTYzMjRcdTUxZTBcdTgxMGFcdTVkZjFcdTg0ZGZcdTYyODBcdTUxODBcdTViNjNcdTRmMGVcdTc5NmRcdTUyNDJcdTYwYjhcdTZkNGVcdTViYzRcdTViYzJcdThiYTFcdThiYjBcdTY1ZTJc''@;'; put 'put ''dTVmY2NcdTk2NDVcdTU5OTNcdTdlZTdcdTdlYWFcdTU2MDlcdTY3YjdcdTU5MzlcdTRmNzNcdTViYjZcdTUyYTBcdTgzNWFcdTk4OGFcdThkM2VcdTc1MzJcdTk0YmVcdTUwNDdcdTdhM2NcdTRlZjdcdTY3YjZcdTlhN2VcdTVhYzFcdTZiN2NcdTc2ZDFcdTU3NWFcdTVjMTZcdTdiM2FcdTk1''@;'; put 'put ''ZjRcdTcxNGVcdTUxN2NcdTgwYTlcdTgyNzBcdTU5NzhcdTdmMDRcdTgzMjdcdTY4YzBcdTY3ZWNcdTc4YjFcdTc4NzdcdTYyZTNcdTYzNjFcdTdiODBcdTRmZWRcdTUyNmFcdTUxY2ZcdTgzNTBcdTY5ZGJcdTkyNzRcdThkZjVcdThkMzFcdTg5YzFcdTk1MmVcdTdiYWRcdTRlZjYiXSxbImJk''@;'; put 'put ''NDAiLCJcdTdkMzciLDU0LCJcdTdkNmYiLDddLFsiYmQ4MCIsIlx1N2Q3OCIsMzIsIlx1NTA2NVx1ODIzMFx1NTI1MVx1OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVmYVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1NTMyMFx1''@;'; put 'put ''OTE3MVx1OTY0ZFx1ODU0OVx1NjkxMlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEwN1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3Zlx1OGY4''@;'; put 'put ''M1x1NTNlYlx1N2E5Nlx1NjNlZFx1NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2FlZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1NzVhNVx1''@;'; put 'put ''OGJlYlx1NWM0YVx1NWRmZVx1N2I0Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVjNVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OCJdLFsiYmU0MCIsIlx1N2Q5OSIsMTIsIlx1N2RhNyIsNiwiXHU3ZGFmIiw0Ml0s''@;'; put 'put ''WyJiZTgwIiwiXHU3ZGRhIiwzMiwiXHU1YzNkXHU1MmIyXHU4MzQ2XHU1MTYyXHU4MzBlXHU3NzViXHU2Njc2XHU5Y2I4XHU0ZWFjXHU2MGNhXHU3Y2JlXHU3Y2IzXHU3ZWNmXHU0ZTk1XHU4YjY2XHU2NjZmXHU5ODg4XHU5NzU5XHU1ODgzXHU2NTZjXHU5NTVjXHU1Zjg0XHU3NWM5XHU5NzU2''@;'; put 'put ''XHU3YWRmXHU3YWRlXHU1MWMwXHU3MGFmXHU3YTk4XHU2M2VhXHU3YTc2XHU3ZWEwXHU3Mzk2XHU5N2VkXHU0ZTQ1XHU3MDc4XHU0ZTVkXHU5MTUyXHU1M2E5XHU2NTUxXHU2NWU3XHU4MWZjXHU4MjA1XHU1NDhlXHU1YzMxXHU3NTlhXHU5N2EwXHU2MmQ4XHU3MmQ5XHU3NWJkXHU1YzQ1XHU5''@;'; put 'put ''YTc5XHU4M2NhXHU1YzQwXHU1NDgwXHU3N2U5XHU0ZTNlXHU2Y2FlXHU4MDVhXHU2MmQyXHU2MzZlXHU1ZGU4XHU1MTc3XHU4ZGRkXHU4ZTFlXHU5NTJmXHU0ZmYxXHU1M2U1XHU2MGU3XHU3MGFjXHU1MjY3XHU2MzUwXHU5ZTQzXHU1YTFmXHU1MDI2XHU3NzM3XHU1Mzc3XHU3ZWUyXHU2NDg1''@;'; put 'put ''XHU2NTJiXHU2Mjg5XHU2Mzk4XHU1MDE0XHU3MjM1XHU4OWM5XHU1MWIzXHU4YmMwXHU3ZWRkXHU1NzQ3XHU4M2NjXHU5NGE3XHU1MTliXHU1NDFiXHU1Y2ZiIl0sWyJiZjQwIiwiXHU3ZGZiIiw2Ml0sWyJiZjgwIiwiXHU3ZTNhXHU3ZTNjIiw0LCJcdTdlNDIiLDQsIlx1N2U0OCIsMjEsIlx1''@;'; put 'put ''NGZjYVx1N2FlM1x1NmQ1YVx1OTBlMVx1OWE4Zlx1NTU4MFx1NTQ5Nlx1NTM2MVx1NTRhZlx1NWYwMFx1NjNlOVx1Njk3N1x1NTFlZlx1NjE2OFx1NTIwYVx1NTgyYVx1NTJkOFx1NTc0ZVx1NzgwZFx1NzcwYlx1NWViN1x1NjE3N1x1N2NlMFx1NjI1Ylx1NjI5N1x1NGVhMlx1NzA5NVx1ODAw''@;'; put 'put ''M1x1NjJmN1x1NzBlNFx1OTc2MFx1NTc3N1x1ODJkYlx1NjdlZlx1NjhmNVx1NzhkNVx1OTg5N1x1NzlkMVx1NThmM1x1NTRiM1x1NTNlZlx1NmUzNFx1NTE0Ylx1NTIzYlx1NWJhMlx1OGJmZVx1ODBhZlx1NTU0M1x1NTdhNlx1NjA3M1x1NTc1MVx1NTQyZFx1N2E3YVx1NjA1MFx1NWI1NFx1''@;'; put 'put ''NjNhN1x1NjJhMFx1NTNlM1x1NjI2M1x1NWJjN1x1NjdhZlx1NTRlZFx1N2E5Zlx1ODJlNlx1OTE3N1x1NWU5M1x1ODhlNFx1NTkzOFx1NTdhZVx1NjMwZVx1OGRlOFx1ODBlZlx1NTc1N1x1N2I3N1x1NGZhOVx1NWZlYlx1NWJiZFx1NmIzZVx1NTMyMVx1N2I1MFx1NzJjMlx1Njg0Nlx1Nzdm''@;'; put 'put ''Zlx1NzczNlx1NjVmN1x1NTFiNVx1NGU4Zlx1NzZkNFx1NWNiZlx1N2FhNVx1ODQ3NVx1NTk0ZVx1OWI0MVx1NTA4MCJdLFsiYzA0MCIsIlx1N2U1ZSIsMzUsIlx1N2U4MyIsMjMsIlx1N2U5Y1x1N2U5ZFx1N2U5ZSJdLFsiYzA4MCIsIlx1N2VhZVx1N2ViNFx1N2ViYlx1N2ViY1x1N2VkNlx1''@;'; put 'put ''N2VlNFx1N2VlY1x1N2VmOVx1N2YwYVx1N2YxMFx1N2YxZVx1N2YzN1x1N2YzOVx1N2YzYiIsNiwiXHU3ZjQzXHU3ZjQ2Iiw5LCJcdTdmNTJcdTdmNTNcdTk5ODhcdTYxMjdcdTZlODNcdTU3NjRcdTY2MDZcdTYzNDZcdTU2ZjBcdTYyZWNcdTYyNjlcdTVlZDNcdTk2MTRcdTU3ODNcdTYyYzlc''@;'; put 'put ''dTU1ODdcdTg3MjFcdTgxNGFcdThmYTNcdTU1NjZcdTgzYjFcdTY3NjVcdThkNTZcdTg0ZGRcdTVhNmFcdTY4MGZcdTYyZTZcdTdiZWVcdTk2MTFcdTUxNzBcdTZmOWNcdThjMzBcdTYzZmRcdTg5YzhcdTYxZDJcdTdmMDZcdTcwYzJcdTZlZTVcdTc0MDVcdTY5OTRcdTcyZmNcdTVlY2FcdTkw''@;'; put 'put ''Y2VcdTY3MTdcdTZkNmFcdTYzNWVcdTUyYjNcdTcyNjJcdTgwMDFcdTRmNmNcdTU5ZTVcdTkxNmFcdTcwZDlcdTZkOWRcdTUyZDJcdTRlNTBcdTk2ZjdcdTk1NmRcdTg1N2VcdTc4Y2FcdTdkMmZcdTUxMjFcdTU3OTJcdTY0YzJcdTgwOGJcdTdjN2JcdTZjZWFcdTY4ZjFcdTY5NWVcdTUxYjdc''@;'; put 'put ''dTUzOThcdTY4YThcdTcyODFcdTllY2VcdTdiZjFcdTcyZjhcdTc5YmJcdTZmMTNcdTc0MDZcdTY3NGVcdTkxY2NcdTljYTRcdTc5M2NcdTgzODlcdTgzNTRcdTU0MGZcdTY4MTdcdTRlM2RcdTUzODlcdTUyYjFcdTc4M2VcdTUzODZcdTUyMjlcdTUwODhcdTRmOGJcdTRmZDAiXSxbImMxNDAi''@;'; put 'put ''LCJcdTdmNTZcdTdmNTlcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNWVcdTdmNjBcdTdmNjMiLDQsIlx1N2Y2Ylx1N2Y2Y1x1N2Y2ZFx1N2Y2Zlx1N2Y3MFx1N2Y3M1x1N2Y3NVx1N2Y3Nlx1N2Y3N1x1N2Y3OFx1N2Y3YVx1N2Y3Ylx1N2Y3Y1x1N2Y3ZFx1N2Y3Zlx1N2Y4MFx1N2Y4MiIsNywiXHU3''@;'; put 'put ''ZjhiXHU3ZjhkXHU3ZjhmIiw0LCJcdTdmOTUiLDQsIlx1N2Y5Ylx1N2Y5Y1x1N2ZhMFx1N2ZhMlx1N2ZhM1x1N2ZhNVx1N2ZhNlx1N2ZhOCIsNiwiXHU3ZmIxIl0sWyJjMTgwIiwiXHU3ZmIzIiw0LCJcdTdmYmFcdTdmYmJcdTdmYmVcdTdmYzBcdTdmYzJcdTdmYzNcdTdmYzRcdTdmYzZcdTdm''@;'; put 'put ''YzdcdTdmYzhcdTdmYzlcdTdmY2JcdTdmY2RcdTdmY2YiLDQsIlx1N2ZkNlx1N2ZkN1x1N2ZkOSIsNSwiXHU3ZmUyXHU3ZmUzXHU3NWUyXHU3YWNiXHU3YzkyXHU2Y2E1XHU5NmI2XHU1MjliXHU3NDgzXHU1NGU5XHU0ZmU5XHU4MDU0XHU4M2IyXHU4ZmRlXHU5NTcwXHU1ZWM5XHU2MDFjXHU2''@;'; put 'put ''ZDlmXHU1ZTE4XHU2NTViXHU4MTM4XHU5NGZlXHU2MDRiXHU3MGJjXHU3ZWMzXHU3Y2FlXHU1MWM5XHU2ODgxXHU3Y2IxXHU4MjZmXHU0ZTI0XHU4Zjg2XHU5MWNmXHU2NjdlXHU0ZWFlXHU4YzA1XHU2NGE5XHU4MDRhXHU1MGRhXHU3NTk3XHU3MWNlXHU1YmU1XHU4ZmJkXHU2ZjY2XHU0ZTg2''@;'; put 'put ''XHU2NDgyXHU5NTYzXHU1ZWQ2XHU2NTk5XHU1MjE3XHU4OGMyXHU3MGM4XHU1MmEzXHU3MzBlXHU3NDMzXHU2Nzk3XHU3OGY3XHU5NzE2XHU0ZTM0XHU5MGJiXHU5Y2RlXHU2ZGNiXHU1MWRiXHU4ZDQxXHU1NDFkXHU2MmNlXHU3M2IyXHU4M2YxXHU5NmY2XHU5Zjg0XHU5NGMzXHU0ZjM2XHU3''@;'; put 'put ''ZjlhXHU1MWNjXHU3MDc1XHU5Njc1XHU1Y2FkXHU5ODg2XHU1M2U2XHU0ZWU0XHU2ZTljXHU3NDA5XHU2OWI0XHU3ODZiXHU5OThmXHU3NTU5XHU1MjE4XHU3NjI0XHU2ZDQxXHU2N2YzXHU1MTZkXHU5Zjk5XHU4MDRiXHU1NDk5XHU3YjNjXHU3YWJmIl0sWyJjMjQwIiwiXHU3ZmU0XHU3ZmU3''@;'; put 'put ''XHU3ZmU4XHU3ZmVhXHU3ZmViXHU3ZmVjXHU3ZmVkXHU3ZmVmXHU3ZmYyXHU3ZmY0Iiw2LCJcdTdmZmRcdTdmZmVcdTdmZmZcdTgwMDJcdTgwMDdcdTgwMDhcdTgwMDlcdTgwMGFcdTgwMGVcdTgwMGZcdTgwMTFcdTgwMTNcdTgwMWFcdTgwMWJcdTgwMWRcdTgwMWVcdTgwMWZcdTgwMjFcdTgw''@;'; put 'put ''MjNcdTgwMjRcdTgwMmIiLDUsIlx1ODAzMlx1ODAzNFx1ODAzOVx1ODAzYVx1ODAzY1x1ODAzZVx1ODA0MFx1ODA0MVx1ODA0NFx1ODA0NVx1ODA0N1x1ODA0OFx1ODA0OVx1ODA0ZVx1ODA0Zlx1ODA1MFx1ODA1MVx1ODA1M1x1ODA1NVx1ODA1Nlx1ODA1NyJdLFsiYzI4MCIsIlx1ODA1OVx1''@;'; put 'put ''ODA1YiIsMTMsIlx1ODA2YiIsNSwiXHU4MDcyIiwxMSwiXHU5Njg2XHU1Nzg0XHU2MmUyXHU5NjQ3XHU2OTdjXHU1YTA0XHU2NDAyXHU3YmQzXHU2ZjBmXHU5NjRiXHU4MmE2XHU1MzYyXHU5ODg1XHU1ZTkwXHU3MDg5XHU2M2IzXHU1MzY0XHU4NjRmXHU5YzgxXHU5ZTkzXHU3ODhjXHU5NzMy''@;'; put 'put ''XHU4ZGVmXHU4ZDQyXHU5ZTdmXHU2ZjVlXHU3OTg0XHU1ZjU1XHU5NjQ2XHU2MjJlXHU5YTc0XHU1NDE1XHU5NGRkXHU0ZmEzXHU2NWM1XHU1YzY1XHU1YzYxXHU3ZjE1XHU4NjUxXHU2YzJmXHU1ZjhiXHU3Mzg3XHU2ZWU0XHU3ZWZmXHU1Y2U2XHU2MzFiXHU1YjZhXHU2ZWU2XHU1Mzc1XHU0''@;'; put 'put ''ZTcxXHU2M2EwXHU3NTY1XHU2MmExXHU4ZjZlXHU0ZjI2XHU0ZWQxXHU2Y2E2XHU3ZWI2XHU4YmJhXHU4NDFkXHU4N2JhXHU3ZjU3XHU5MDNiXHU5NTIzXHU3YmE5XHU5YWExXHU4OGY4XHU4NDNkXHU2ZDFiXHU5YTg2XHU3ZWRjXHU1OTg4XHU5ZWJiXHU3MzliXHU3ODAxXHU4NjgyXHU5YTZj''@;'; put 'put ''XHU5YTgyXHU1NjFiXHU1NDE3XHU1N2NiXHU0ZTcwXHU5ZWE2XHU1MzU2XHU4ZmM4XHU4MTA5XHU3NzkyXHU5OTkyXHU4NmVlXHU2ZWUxXHU4NTEzXHU2NmZjXHU2MTYyXHU2ZjJiIl0sWyJjMzQwIiwiXHU4MDdlXHU4MDgxXHU4MDgyXHU4MDg1XHU4MDg4XHU4MDhhXHU4MDhkIiw1LCJcdTgw''@;'; put 'put ''OTRcdTgwOTVcdTgwOTdcdTgwOTlcdTgwOWVcdTgwYTNcdTgwYTZcdTgwYTdcdTgwYThcdTgwYWNcdTgwYjBcdTgwYjNcdTgwYjVcdTgwYjZcdTgwYjhcdTgwYjlcdTgwYmJcdTgwYzVcdTgwYzciLDQsIlx1ODBjZiIsNiwiXHU4MGQ4XHU4MGRmXHU4MGUwXHU4MGUyXHU4MGUzXHU4MGU2XHU4''@;'; put 'put ''MGVlXHU4MGY1XHU4MGY3XHU4MGY5XHU4MGZiXHU4MGZlXHU4MGZmXHU4MTAwXHU4MTAxXHU4MTAzXHU4MTA0XHU4MTA1XHU4MTA3XHU4MTA4XHU4MTBiIl0sWyJjMzgwIiwiXHU4MTBjXHU4MTE1XHU4MTE3XHU4MTE5XHU4MTFiXHU4MTFjXHU4MTFkXHU4MTFmIiwxMiwiXHU4MTJkXHU4MTJl''@;'; put 'put ''XHU4MTMwXHU4MTMzXHU4MTM0XHU4MTM1XHU4MTM3XHU4MTM5Iiw0LCJcdTgxM2ZcdThjMjlcdTgyOTJcdTgzMmJcdTc2ZjJcdTZjMTNcdTVmZDlcdTgzYmRcdTczMmJcdTgzMDVcdTk1MWFcdTZiZGJcdTc3ZGJcdTk0YzZcdTUzNmZcdTgzMDJcdTUxOTJcdTVlM2RcdThjOGNcdThkMzhcdTRl''@;'; put 'put ''NDhcdTczYWJcdTY3OWFcdTY4ODVcdTkxNzZcdTk3MDlcdTcxNjRcdTZjYTFcdTc3MDlcdTVhOTJcdTk1NDFcdTZiY2ZcdTdmOGVcdTY2MjdcdTViZDBcdTU5YjlcdTVhOWFcdTk1ZThcdTk1ZjdcdTRlZWNcdTg0MGNcdTg0OTlcdTZhYWNcdTc2ZGZcdTk1MzBcdTczMWJcdTY4YTZcdTViNWZc''@;'; put 'put ''dTc3MmZcdTkxOWFcdTk3NjFcdTdjZGNcdThmZjdcdThjMWNcdTVmMjVcdTdjNzNcdTc5ZDhcdTg5YzVcdTZjY2NcdTg3MWNcdTViYzZcdTVlNDJcdTY4YzlcdTc3MjBcdTdlZjVcdTUxOTVcdTUxNGRcdTUyYzlcdTVhMjlcdTdmMDVcdTk3NjJcdTgyZDdcdTYzY2ZcdTc3ODRcdTg1ZDBcdTc5''@;'; put 'put ''ZDJcdTZlM2FcdTVlOTlcdTU5OTlcdTg1MTFcdTcwNmRcdTZjMTFcdTYyYmZcdTc2YmZcdTY1NGZcdTYwYWZcdTk1ZmRcdTY2MGVcdTg3OWZcdTllMjNcdTk0ZWRcdTU0MGRcdTU0N2RcdThjMmNcdTY0NzgiXSxbImM0NDAiLCJcdTgxNDAiLDUsIlx1ODE0N1x1ODE0OVx1ODE0ZFx1ODE0ZVx1''@;'; put 'put ''ODE0Zlx1ODE1Mlx1ODE1Nlx1ODE1N1x1ODE1OFx1ODE1YiIsNCwiXHU4MTYxXHU4MTYyXHU4MTYzXHU4MTY0XHU4MTY2XHU4MTY4XHU4MTZhXHU4MTZiXHU4MTZjXHU4MTZmXHU4MTcyXHU4MTczXHU4MTc1XHU4MTc2XHU4MTc3XHU4MTc4XHU4MTgxXHU4MTgzIiw0LCJcdTgxODlcdTgxOGJc''@;'; put 'put ''dTgxOGNcdTgxOGRcdTgxOGVcdTgxOTBcdTgxOTIiLDUsIlx1ODE5OVx1ODE5YVx1ODE5ZSIsNCwiXHU4MWE0XHU4MWE1Il0sWyJjNDgwIiwiXHU4MWE3XHU4MWE5XHU4MWFiIiw3LCJcdTgxYjQiLDUsIlx1ODFiY1x1ODFiZFx1ODFiZVx1ODFiZlx1ODFjNFx1ODFjNVx1ODFjN1x1ODFjOFx1''@;'; put 'put ''ODFjOVx1ODFjYlx1ODFjZCIsNiwiXHU2NDc5XHU4NjExXHU2YTIxXHU4MTljXHU3OGU4XHU2NDY5XHU5YjU0XHU2MmI5XHU2NzJiXHU4M2FiXHU1OGE4XHU5ZWQ4XHU2Y2FiXHU2ZjIwXHU1YmRlXHU5NjRjXHU4YzBiXHU3MjVmXHU2N2QwXHU2MmM3XHU3MjYxXHU0ZWE5XHU1OWM2XHU2YmNk''@;'; put 'put ''XHU1ODkzXHU2NmFlXHU1ZTU1XHU1MmRmXHU2MTU1XHU2NzI4XHU3NmVlXHU3NzY2XHU3MjY3XHU3YTQ2XHU2MmZmXHU1NGVhXHU1NDUwXHU5NGEwXHU5MGEzXHU1YTFjXHU3ZWIzXHU2YzE2XHU0ZTQzXHU1OTc2XHU4MDEwXHU1OTQ4XHU1MzU3XHU3NTM3XHU5NmJlXHU1NmNhXHU2MzIwXHU4''@;'; put 'put ''MTExXHU2MDdjXHU5NWY5XHU2ZGQ2XHU1NDYyXHU5OTgxXHU1MTg1XHU1YWU5XHU4MGZkXHU1OWFlXHU5NzEzXHU1MDJhXHU2Y2U1XHU1YzNjXHU2MmRmXHU0ZjYwXHU1MzNmXHU4MTdiXHU5MDA2XHU2ZWJhXHU4NTJiXHU2MmM4XHU1ZTc0XHU3OGJlXHU2NGI1XHU2MzdiXHU1ZmY1XHU1YTE4''@;'; put 'put ''XHU5MTdmXHU5ZTFmXHU1YzNmXHU2MzRmXHU4MDQyXHU1YjdkXHU1NTZlXHU5NTRhXHU5NTRkXHU2ZDg1XHU2MGE4XHU2N2UwXHU3MmRlXHU1MWRkXHU1YjgxIl0sWyJjNTQwIiwiXHU4MWQ0IiwxNCwiXHU4MWU0XHU4MWU1XHU4MWU2XHU4MWU4XHU4MWU5XHU4MWViXHU4MWVlIiw0LCJcdTgx''@;'; put 'put ''ZjUiLDUsIlx1ODFmZFx1ODFmZlx1ODIwM1x1ODIwNyIsNCwiXHU4MjBlXHU4MjBmXHU4MjExXHU4MjEzXHU4MjE1Iiw1LCJcdTgyMWRcdTgyMjBcdTgyMjRcdTgyMjVcdTgyMjZcdTgyMjdcdTgyMjlcdTgyMmVcdTgyMzJcdTgyM2FcdTgyM2NcdTgyM2RcdTgyM2YiXSxbImM1ODAiLCJcdTgy''@;'; put 'put ''NDBcdTgyNDFcdTgyNDJcdTgyNDNcdTgyNDVcdTgyNDZcdTgyNDhcdTgyNGFcdTgyNGNcdTgyNGRcdTgyNGVcdTgyNTAiLDcsIlx1ODI1OVx1ODI1Ylx1ODI1Y1x1ODI1ZFx1ODI1ZVx1ODI2MCIsNywiXHU4MjY5XHU2MmU3XHU2Y2RlXHU3MjViXHU2MjZkXHU5NGFlXHU3ZWJkXHU4MTEzXHU2''@;'; put 'put ''ZDUzXHU1MTljXHU1ZjA0XHU1OTc0XHU1MmFhXHU2MDEyXHU1OTczXHU2Njk2XHU4NjUwXHU3NTlmXHU2MzJhXHU2MWU2XHU3Y2VmXHU4YmZhXHU1NGU2XHU2YjI3XHU5ZTI1XHU2YmI0XHU4NWQ1XHU1NDU1XHU1MDc2XHU2Y2E0XHU1NTZhXHU4ZGI0XHU3MjJjXHU1ZTE1XHU2MDE1XHU3NDM2''@;'; put 'put ''XHU2MmNkXHU2MzkyXHU3MjRjXHU1Zjk4XHU2ZTQzXHU2ZDNlXHU2NTAwXHU2ZjU4XHU3NmQ4XHU3OGQwXHU3NmZjXHU3NTU0XHU1MjI0XHU1M2RiXHU0ZTUzXHU1ZTllXHU2NWMxXHU4MDJhXHU4MGQ2XHU2MjliXHU1NDg2XHU1MjI4XHU3MGFlXHU4ODhkXHU4ZGQxXHU2Y2UxXHU1NDc4XHU4''@;'; put 'put ''MGRhXHU1N2Y5XHU4OGY0XHU4ZDU0XHU5NjZhXHU5MTRkXHU0ZjY5XHU2YzliXHU1NWI3XHU3NmM2XHU3ODMwXHU2MmE4XHU3MGY5XHU2ZjhlXHU1ZjZkXHU4NGVjXHU2OGRhXHU3ODdjXHU3YmY3XHU4MWE4XHU2NzBiXHU5ZTRmXHU2MzY3XHU3OGIwXHU1NzZmXHU3ODEyXHU5NzM5XHU2Mjc5''@;'; put 'put ''XHU2MmFiXHU1Mjg4XHU3NDM1XHU2YmQ3Il0sWyJjNjQwIiwiXHU4MjZhXHU4MjZiXHU4MjZjXHU4MjZkXHU4MjcxXHU4Mjc1XHU4Mjc2XHU4Mjc3XHU4Mjc4XHU4MjdiXHU4MjdjXHU4MjgwXHU4MjgxXHU4MjgzXHU4Mjg1XHU4Mjg2XHU4Mjg3XHU4Mjg5XHU4MjhjXHU4MjkwXHU4MjkzXHU4''@;'; put 'put ''Mjk0XHU4Mjk1XHU4Mjk2XHU4MjlhXHU4MjliXHU4MjllXHU4MmEwXHU4MmEyXHU4MmEzXHU4MmE3XHU4MmIyXHU4MmI1XHU4MmI2XHU4MmJhXHU4MmJiXHU4MmJjXHU4MmJmXHU4MmMwXHU4MmMyXHU4MmMzXHU4MmM1XHU4MmM2XHU4MmM5XHU4MmQwXHU4MmQ2XHU4MmQ5XHU4MmRhXHU4MmRk''@;'; put 'put ''XHU4MmUyXHU4MmU3XHU4MmU4XHU4MmU5XHU4MmVhXHU4MmVjXHU4MmVkXHU4MmVlXHU4MmYwXHU4MmYyXHU4MmYzXHU4MmY1XHU4MmY2XHU4MmY4Il0sWyJjNjgwIiwiXHU4MmZhXHU4MmZjIiw0LCJcdTgzMGFcdTgzMGJcdTgzMGRcdTgzMTBcdTgzMTJcdTgzMTNcdTgzMTZcdTgzMThcdTgz''@;'; put 'put ''MTlcdTgzMWQiLDksIlx1ODMyOVx1ODMyYVx1ODMyZVx1ODMzMFx1ODMzMlx1ODMzN1x1ODMzYlx1ODMzZFx1NTU2NFx1ODEzZVx1NzViMlx1NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5N1x1OThkOFx1NmYwMlx1NzRlMlx1Nzk2OFx1''@;'; put 'put ''NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1ODJmOVx1ODQwZFx1NWU3M1x1NTFlZFx1NzRmNlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1N2M5NVx1NTI1Nlx1NjI1MVx1OTRmYVx1NGVj''@;'; put 'put ''Nlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2Nlx1OGMzMVx1NjZkZFx1NzAxMVx1NjcxZlx1NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3Nlx1NjhjYlx1NTk0N1x1NmI2N1x1NzU2Nlx1''@;'; put 'put ''NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1NGU1ZVx1NGYwMVx1NTQyZlx1NTk1MVx1NzgwY1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MCJdLFsiYzc0MCIsIlx1ODMzZVx1ODMzZlx1ODM0MVx1ODM0''@;'; put 'put ''Mlx1ODM0NFx1ODM0NVx1ODM0OFx1ODM0YSIsNCwiXHU4MzUzXHU4MzU1Iiw0LCJcdTgzNWRcdTgzNjJcdTgzNzAiLDYsIlx1ODM3OVx1ODM3YVx1ODM3ZSIsNiwiXHU4Mzg3XHU4Mzg4XHU4MzhhXHU4MzhiXHU4MzhjXHU4MzhkXHU4MzhmXHU4MzkwXHU4MzkxXHU4Mzk0XHU4Mzk1XHU4Mzk2''@;'; put 'put ''XHU4Mzk3XHU4Mzk5XHU4MzlhXHU4MzlkXHU4MzlmXHU4M2ExIiw2LCJcdTgzYWNcdTgzYWRcdTgzYWUiXSxbImM3ODAiLCJcdTgzYWZcdTgzYjVcdTgzYmJcdTgzYmVcdTgzYmZcdTgzYzJcdTgzYzNcdTgzYzRcdTgzYzZcdTgzYzhcdTgzYzlcdTgzY2JcdTgzY2RcdTgzY2VcdTgzZDBcdTgz''@;'; put 'put ''ZDFcdTgzZDJcdTgzZDNcdTgzZDVcdTgzZDdcdTgzZDlcdTgzZGFcdTgzZGJcdTgzZGVcdTgzZTJcdTgzZTNcdTgzZTRcdTgzZTZcdTgzZTdcdTgzZThcdTgzZWJcdTgzZWNcdTgzZWRcdTYwNzBcdTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZc''@;'; put 'put ''dThjMjZcdTRlN2VcdTllZDRcdTk0YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRcdTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlcdTY3YWFcdTU0NWJcdTgxNTRcdTdmOGNcdTU4OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3''@;'; put 'put ''YTdcdTRlNTRcdTRmYThcdTVkZTdcdTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUyMDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdhODNcdTk0YTZcdTRmYjVcdTRlYjJcdTc5ZTZcdTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2Jc''@;'; put 'put ''dTZjMjJcdTUwM2VcdTUzN2ZcdTZlMDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdcdTVlODZcdTc0M2NcdTdhNzdcdTc5Y2JcdTRlMThcdTkwYjFcdTc0MDNcdTZjNDJcdTU2ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlh''@;'; put 'put ''NzFcdTZlMjAiXSxbImM4NDAiLCJcdTgzZWVcdTgzZWZcdTgzZjMiLDQsIlx1ODNmYVx1ODNmYlx1ODNmY1x1ODNmZVx1ODNmZlx1ODQwMFx1ODQwMlx1ODQwNVx1ODQwN1x1ODQwOFx1ODQwOVx1ODQwYVx1ODQxMFx1ODQxMiIsNSwiXHU4NDE5XHU4NDFhXHU4NDFiXHU4NDFlIiw1LCJcdTg0''@;'; put 'put ''MjkiLDcsIlx1ODQzMiIsNSwiXHU4NDM5XHU4NDNhXHU4NDNiXHU4NDNlIiw3LCJcdTg0NDdcdTg0NDhcdTg0NDkiXSxbImM4ODAiLCJcdTg0NGEiLDYsIlx1ODQ1MiIsNCwiXHU4NDU4XHU4NDVkXHU4NDVlXHU4NDVmXHU4NDYwXHU4NDYyXHU4NDY0Iiw0LCJcdTg0NmFcdTg0NmVcdTg0NmZc''@;'; put 'put ''dTg0NzBcdTg0NzJcdTg0NzRcdTg0NzdcdTg0NzlcdTg0N2JcdTg0N2NcdTUzZDZcdTVhMzZcdTlmOGJcdThkYTNcdTUzYmJcdTU3MDhcdTk4YTdcdTY3NDNcdTkxOWJcdTZjYzlcdTUxNjhcdTc1Y2FcdTYyZjNcdTcyYWNcdTUyMzhcdTUyOWRcdTdmM2FcdTcwOTRcdTc2MzhcdTUzNzRcdTll''@;'; put 'put ''NGFcdTY5YjdcdTc4NmVcdTk2YzBcdTg4ZDlcdTdmYTRcdTcxMzZcdTcxYzNcdTUxODlcdTY3ZDNcdTc0ZTRcdTU4ZTRcdTY1MThcdTU2YjdcdThiYTlcdTk5NzZcdTYyNzBcdTdlZDVcdTYwZjlcdTcwZWRcdTU4ZWNcdTRlYzFcdTRlYmFcdTVmY2RcdTk3ZTdcdTRlZmJcdThiYTRcdTUyMDNc''@;'; put 'put ''dTU5OGFcdTdlYWJcdTYyNTRcdTRlY2RcdTY1ZTVcdTYyMGVcdTgzMzhcdTg0YzlcdTgzNjNcdTg3OGRcdTcxOTRcdTZlYjZcdTViYjlcdTdlZDJcdTUxOTdcdTYzYzlcdTY3ZDRcdTgwODlcdTgzMzlcdTg4MTVcdTUxMTJcdTViN2FcdTU5ODJcdThmYjFcdTRlNzNcdTZjNWRcdTUxNjVcdTg5''@;'; put 'put ''MjVcdThmNmZcdTk2MmVcdTg1NGFcdTc0NWVcdTk1MTBcdTk1ZjBcdTZkYTZcdTgyZTVcdTVmMzFcdTY0OTJcdTZkMTJcdTg0MjhcdTgxNmVcdTljYzNcdTU4NWVcdThkNWJcdTRlMDlcdTUzYzEiXSxbImM5NDAiLCJcdTg0N2QiLDQsIlx1ODQ4M1x1ODQ4NFx1ODQ4NVx1ODQ4Nlx1ODQ4YVx1''@;'; put 'put ''ODQ4ZFx1ODQ4ZiIsNywiXHU4NDk4XHU4NDlhXHU4NDliXHU4NDlkXHU4NDllXHU4NDlmXHU4NGEwXHU4NGEyIiwxMiwiXHU4NGIwXHU4NGIxXHU4NGIzXHU4NGI1XHU4NGI2XHU4NGI3XHU4NGJiXHU4NGJjXHU4NGJlXHU4NGMwXHU4NGMyXHU4NGMzXHU4NGM1XHU4NGM2XHU4NGM3XHU4NGM4''@;'; put 'put ''XHU4NGNiXHU4NGNjXHU4NGNlXHU4NGNmXHU4NGQyXHU4NGQ0XHU4NGQ1XHU4NGQ3Il0sWyJjOTgwIiwiXHU4NGQ4Iiw0LCJcdTg0ZGVcdTg0ZTFcdTg0ZTJcdTg0ZTRcdTg0ZTciLDQsIlx1ODRlZFx1ODRlZVx1ODRlZlx1ODRmMSIsMTAsIlx1ODRmZFx1ODRmZVx1ODUwMFx1ODUwMVx1ODUw''@;'; put 'put ''Mlx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5YVx1NjI2Ylx1NWFjMlx1NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2ViMVx1NTBiYlx1NTU2NVx1NzE1ZVx1N2I1Ylx1NjY1Mlx1NzNjYVx1ODJlYlx1''@;'; put 'put ''Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1NjRjNVx1OGQ2MVx1ODFiM1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1NWMxYVx1ODhmM1x1NjhhMlx1NjM0ZVx1N2EwZFx1NzBlN1x1ODI4ZFx1NTJm''@;'; put 'put ''YVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0YVx1ODZjN1x1ODIwY1x1ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3Ylx1NGYzOFx1OGVhYlx1NmRmMVx1NWEyMFx1N2VjNVx1Nzk1ZVx1NmM4OFx1''@;'; put 'put ''NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1NzUxZlx1NzUyNVx1NzI3Mlx1NTM0N1x1N2VmMyJdLFsiY2E0MCIsIlx1ODUwMyIsOCwiXHU4NTBkXHU4NTBlXHU4NTBmXHU4NTEwXHU4NTEyXHU4NTE0XHU4NTE1XHU4NTE2XHU4NTE4XHU4NTE5XHU4NTFiXHU4NTFj''@;'; put 'put ''XHU4NTFkXHU4NTFlXHU4NTIwXHU4NTIyIiw4LCJcdTg1MmQiLDksIlx1ODUzZSIsNCwiXHU4NTQ0XHU4NTQ1XHU4NTQ2XHU4NTQ3XHU4NTRiIiwxMF0sWyJjYTgwIiwiXHU4NTU3XHU4NTU4XHU4NTVhXHU4NTViXHU4NTVjXHU4NTVkXHU4NTVmIiw0LCJcdTg1NjVcdTg1NjZcdTg1NjdcdTg1''@;'; put 'put ''NjkiLDgsIlx1ODU3M1x1ODU3NVx1ODU3Nlx1ODU3N1x1ODU3OFx1ODU3Y1x1ODU3ZFx1ODU3Zlx1ODU4MFx1ODU4MVx1NzcwMVx1NzZkYlx1NTI2OVx1ODBkY1x1NTcyM1x1NWUwOFx1NTkzMVx1NzJlZVx1NjViZFx1NmU3Zlx1OGJkN1x1NWMzOFx1ODY3MVx1NTM0MVx1NzdmM1x1NjJmZVx1''@;'; put 'put ''NjVmNlx1NGVjMFx1OThkZlx1ODY4MFx1NWI5ZVx1OGJjNlx1NTNmMlx1NzdlMlx1NGY3Zlx1NWM0ZVx1OWE3Nlx1NTljYlx1NWYwZlx1NzkzYVx1NThlYlx1NGUxNlx1NjdmZlx1NGU4Ylx1NjJlZFx1OGE5M1x1OTAxZFx1NTJiZlx1NjYyZlx1NTVkY1x1NTY2Y1x1OTAwMlx1NGVkNVx1NGY4''@;'; put 'put ''ZFx1OTFjYVx1OTk3MFx1NmMwZlx1NWUwMlx1NjA0M1x1NWJhNFx1ODljNlx1OGJkNVx1NjUzNlx1NjI0Ylx1OTk5Nlx1NWI4OFx1NWJmZlx1NjM4OFx1NTUyZVx1NTNkN1x1NzYyNlx1NTE3ZFx1ODUyY1x1NjdhMlx1NjhiM1x1NmI4YVx1NjI5Mlx1OGY5M1x1NTNkNFx1ODIxMlx1NmRkMVx1''@;'; put 'put ''NzU4Zlx1NGU2Nlx1OGQ0ZVx1NWI3MFx1NzE5Zlx1ODVhZlx1NjY5MVx1NjZkOVx1N2Y3Mlx1ODcwMFx1OWVjZFx1OWYyMFx1NWM1ZVx1NjcyZlx1OGZmMFx1NjgxMVx1Njc1Zlx1NjIwZFx1N2FkNlx1NTg4NVx1NWViNlx1NjU3MFx1NmYzMSJdLFsiY2I0MCIsIlx1ODU4Mlx1ODU4M1x1ODU4''@;'; put 'put ''Nlx1ODU4OCIsNiwiXHU4NTkwIiwxMCwiXHU4NTlkIiw2LCJcdTg1YTVcdTg1YTZcdTg1YTdcdTg1YTlcdTg1YWJcdTg1YWNcdTg1YWRcdTg1YjEiLDUsIlx1ODViOFx1ODViYSIsNiwiXHU4NWMyIiw2LCJcdTg1Y2EiLDQsIlx1ODVkMVx1ODVkMiJdLFsiY2I4MCIsIlx1ODVkNFx1ODVkNiIs''@;'; put 'put ''NSwiXHU4NWRkIiw2LCJcdTg1ZTVcdTg1ZTZcdTg1ZTdcdTg1ZThcdTg1ZWEiLDE0LCJcdTYwNTVcdTUyMzdcdTgwMGRcdTY0NTRcdTg4NzBcdTc1MjlcdTVlMDVcdTY4MTNcdTYyZjRcdTk3MWNcdTUzY2NcdTcyM2RcdThjMDFcdTZjMzRcdTc3NjFcdTdhMGVcdTU0MmVcdTc3YWNcdTk4N2Fc''@;'; put 'put ''dTgyMWNcdThiZjRcdTc4NTVcdTY3MTRcdTcwYzFcdTY1YWZcdTY0OTVcdTU2MzZcdTYwMWRcdTc5YzFcdTUzZjhcdTRlMWRcdTZiN2JcdTgwODZcdTViZmFcdTU1ZTNcdTU2ZGJcdTRmM2FcdTRmM2NcdTk5NzJcdTVkZjNcdTY3N2VcdTgwMzhcdTYwMDJcdTk4ODJcdTkwMDFcdTViOGJcdThi''@;'; put 'put ''YmNcdThiZjVcdTY0MWNcdTgyNThcdTY0ZGVcdTU1ZmRcdTgyY2ZcdTkxNjVcdTRmZDdcdTdkMjBcdTkwMWZcdTdjOWZcdTUwZjNcdTU4NTFcdTZlYWZcdTViYmZcdThiYzlcdTgwODNcdTkxNzhcdTg0OWNcdTdiOTdcdTg2N2RcdTk2OGJcdTk2OGZcdTdlZTVcdTlhZDNcdTc4OGVcdTVjODFc''@;'; put 'put ''dTdhNTdcdTkwNDJcdTk2YTdcdTc5NWZcdTViNTlcdTYzNWZcdTdiMGJcdTg0ZDFcdTY4YWRcdTU1MDZcdTdmMjlcdTc0MTBcdTdkMjJcdTk1MDFcdTYyNDBcdTU4NGNcdTRlZDZcdTViODNcdTU5NzlcdTU4NTQiXSxbImNjNDAiLCJcdTg1ZjlcdTg1ZmFcdTg1ZmNcdTg1ZmRcdTg1ZmVcdTg2''@;'; put 'put ''MDAiLDQsIlx1ODYwNiIsMTAsIlx1ODYxMlx1ODYxM1x1ODYxNFx1ODYxNVx1ODYxNyIsMTUsIlx1ODYyOFx1ODYyYSIsMTMsIlx1ODYzOVx1ODYzYVx1ODYzYlx1ODYzZFx1ODYzZVx1ODYzZlx1ODY0MCJdLFsiY2M4MCIsIlx1ODY0MSIsMTEsIlx1ODY1Mlx1ODY1M1x1ODY1NSIsNCwiXHU4''@;'; put 'put ''NjViXHU4NjVjXHU4NjVkXHU4NjVmXHU4NjYwXHU4NjYxXHU4NjYzIiw3LCJcdTczNmRcdTYzMWVcdThlNGJcdThlMGZcdTgwY2VcdTgyZDRcdTYyYWNcdTUzZjBcdTZjZjBcdTkxNWVcdTU5MmFcdTYwMDFcdTZjNzBcdTU3NGRcdTY0NGFcdThkMmFcdTc2MmJcdTZlZTlcdTU3NWJcdTZhODBc''@;'; put 'put ''dTc1ZjBcdTZmNmRcdThjMmRcdThjMDhcdTU3NjZcdTZiZWZcdTg4OTJcdTc4YjNcdTYzYTJcdTUzZjlcdTcwYWRcdTZjNjRcdTU4NThcdTY0MmFcdTU4MDJcdTY4ZTBcdTgxOWJcdTU1MTBcdTdjZDZcdTUwMThcdThlYmFcdTZkY2NcdThkOWZcdTcwZWJcdTYzOGZcdTZkOWJcdTZlZDRcdTdl''@;'; put 'put ''ZTZcdTg0MDRcdTY4NDNcdTkwMDNcdTZkZDhcdTk2NzZcdThiYThcdTU5NTdcdTcyNzlcdTg1ZTRcdTgxN2VcdTc1YmNcdThhOGFcdTY4YWZcdTUyNTRcdThlMjJcdTk1MTFcdTYzZDBcdTk4OThcdThlNDRcdTU1N2NcdTRmNTNcdTY2ZmZcdTU2OGZcdTYwZDVcdTZkOTVcdTUyNDNcdTVjNDlc''@;'; put 'put ''dTU5MjlcdTZkZmJcdTU4NmJcdTc1MzBcdTc1MWNcdTYwNmNcdTgyMTRcdTgxNDZcdTYzMTFcdTY3NjFcdThmZTJcdTc3M2FcdThkZjNcdThkMzRcdTk0YzFcdTVlMTZcdTUzODVcdTU0MmNcdTcwYzMiXSxbImNkNDAiLCJcdTg2NmRcdTg2NmZcdTg2NzBcdTg2NzIiLDYsIlx1ODY4MyIsNiwi''@;'; put 'put ''XHU4NjhlIiw0LCJcdTg2OTRcdTg2OTYiLDUsIlx1ODY5ZSIsNCwiXHU4NmE1XHU4NmE2XHU4NmFiXHU4NmFkXHU4NmFlXHU4NmIyXHU4NmIzXHU4NmI3XHU4NmI4XHU4NmI5XHU4NmJiIiw0LCJcdTg2YzFcdTg2YzJcdTg2YzNcdTg2YzVcdTg2YzhcdTg2Y2NcdTg2Y2RcdTg2ZDJcdTg2ZDNc''@;'; put 'put ''dTg2ZDVcdTg2ZDZcdTg2ZDdcdTg2ZGFcdTg2ZGMiXSxbImNkODAiLCJcdTg2ZGRcdTg2ZTBcdTg2ZTFcdTg2ZTJcdTg2ZTNcdTg2ZTVcdTg2ZTZcdTg2ZTdcdTg2ZThcdTg2ZWFcdTg2ZWJcdTg2ZWNcdTg2ZWZcdTg2ZjVcdTg2ZjZcdTg2ZjdcdTg2ZmFcdTg2ZmJcdTg2ZmNcdTg2ZmRcdTg2''@;'; put 'put ''ZmZcdTg3MDFcdTg3MDRcdTg3MDVcdTg3MDZcdTg3MGJcdTg3MGNcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTFcdTg3MTRcdTg3MTZcdTZjNDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFcdTY4NTBcdTkxNmVcdTc3YjNcdTU0MGNcdTk0ZGNcdTVmNjRcdTdhZTVc''@;'; put 'put ''dTY4NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVcdTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZlNGRcdTU2ZTJcdTYzYThcdTk4OTNcdTgxN2ZcdTg3MTVcdTg5MmFcdTkw''@;'; put 'put ''MDBcdTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYyZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZcdTg4OWNcdTZiNmFcdTU5MTZcdThjNGNcdTVmMmZcdTZlN2VcdTczYTlc''@;'; put 'put ''dTk4N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVcdTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3MWJcdTVmZDhcdTU5ODRcdTVhMDEiXSxbImNlNDAiLCJcdTg3MTlcdTg3''@;'; put 'put ''MWJcdTg3MWRcdTg3MWZcdTg3MjBcdTg3MjRcdTg3MjZcdTg3MjdcdTg3MjhcdTg3MmFcdTg3MmJcdTg3MmNcdTg3MmRcdTg3MmZcdTg3MzBcdTg3MzJcdTg3MzNcdTg3MzVcdTg3MzZcdTg3MzhcdTg3MzlcdTg3M2FcdTg3M2NcdTg3M2RcdTg3NDAiLDYsIlx1ODc0YVx1ODc0Ylx1ODc0ZFx1''@;'; put 'put ''ODc0Zlx1ODc1MFx1ODc1MVx1ODc1Mlx1ODc1NFx1ODc1NVx1ODc1Nlx1ODc1OFx1ODc1YSIsNSwiXHU4NzYxXHU4NzYyXHU4NzY2Iiw3LCJcdTg3NmZcdTg3NzFcdTg3NzJcdTg3NzNcdTg3NzUiXSxbImNlODAiLCJcdTg3NzdcdTg3NzhcdTg3NzlcdTg3N2FcdTg3N2ZcdTg3ODBcdTg3ODFc''@;'; put 'put ''dTg3ODRcdTg3ODZcdTg3ODdcdTg3ODlcdTg3OGFcdTg3OGNcdTg3OGUiLDQsIlx1ODc5NFx1ODc5NVx1ODc5Nlx1ODc5OCIsNiwiXHU4N2EwIiw0LCJcdTVkY2RcdTVmYWVcdTUzNzFcdTk3ZTZcdThmZGRcdTY4NDVcdTU2ZjRcdTU1MmZcdTYwZGZcdTRlM2FcdTZmNGRcdTdlZjRcdTgyYzdc''@;'; put 'put ''dTg0MGVcdTU5ZDRcdTRmMWZcdTRmMmFcdTVjM2VcdTdlYWNcdTY3MmFcdTg1MWFcdTU0NzNcdTc1NGZcdTgwYzNcdTU1ODJcdTliNGZcdTRmNGRcdTZlMmRcdThjMTNcdTVjMDlcdTYxNzBcdTUzNmJcdTc2MWZcdTZlMjlcdTg2OGFcdTY1ODdcdTk1ZmJcdTdlYjlcdTU0M2JcdTdhMzNcdTdk''@;'; put 'put ''MGFcdTk1ZWVcdTU1ZTFcdTdmYzFcdTc0ZWVcdTYzMWRcdTg3MTdcdTZkYTFcdTdhOWRcdTYyMTFcdTY1YTFcdTUzNjdcdTYzZTFcdTZjODNcdTVkZWJcdTU0NWNcdTk0YThcdTRlNGNcdTZjNjFcdThiZWNcdTVjNGJcdTY1ZTBcdTgyOWNcdTY4YTdcdTU0M2VcdTU0MzRcdTZiY2JcdTZiNjZc''@;'; put 'put ''dTRlOTRcdTYzNDJcdTUzNDhcdTgyMWVcdTRmMGRcdTRmYWVcdTU3NWVcdTYyMGFcdTk2ZmVcdTY2NjRcdTcyNjlcdTUyZmZcdTUyYTFcdTYwOWZcdThiZWZcdTY2MTRcdTcxOTlcdTY3OTBcdTg5N2ZcdTc4NTJcdTc3ZmRcdTY2NzBcdTU2M2JcdTU0MzhcdTk1MjFcdTcyN2EiXSxbImNmNDAi''@;'; put 'put ''LCJcdTg3YTVcdTg3YTZcdTg3YTdcdTg3YTlcdTg3YWFcdTg3YWVcdTg3YjBcdTg3YjFcdTg3YjJcdTg3YjRcdTg3YjZcdTg3YjdcdTg3YjhcdTg3YjlcdTg3YmJcdTg3YmNcdTg3YmVcdTg3YmZcdTg3YzEiLDQsIlx1ODdjN1x1ODdjOFx1ODdjOVx1ODdjYyIsNCwiXHU4N2Q0Iiw2LCJcdTg3''@;'; put 'put ''ZGNcdTg3ZGRcdTg3ZGVcdTg3ZGZcdTg3ZTFcdTg3ZTJcdTg3ZTNcdTg3ZTRcdTg3ZTZcdTg3ZTdcdTg3ZThcdTg3ZTlcdTg3ZWJcdTg3ZWNcdTg3ZWRcdTg3ZWYiLDldLFsiY2Y4MCIsIlx1ODdmYVx1ODdmYlx1ODdmY1x1ODdmZFx1ODdmZlx1ODgwMFx1ODgwMVx1ODgwMlx1ODgwNCIsNSwi''@;'; put 'put ''XHU4ODBiIiw3LCJcdTg4MTRcdTg4MTdcdTg4MThcdTg4MTlcdTg4MWFcdTg4MWMiLDQsIlx1ODgyM1x1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBkY1x1NzE4NFx1NzBlZlx1NmVhYVx1NmM1MFx1NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5''@;'; put 'put ''Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1NjIwZlx1N2VjNlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1NTNhNlx1NTkwZlx1NTQxM1x1NjM4MFx1OTUyOFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1''@;'; put 'put ''ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYyNlx1NWFjY1x1NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1MFx1N2ViZlx1NzZmOFx1NTNhMlx1OTU3Nlx1OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2''@;'; put 'put ''NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1OTg3OVx1NWRmN1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1OTUwMFx1NmQ4OFx1NWJiNVx1NmRjNlx1NjY1MyJdLFsiZDA0MCIsIlx1ODgyNCIsMTMsIlx1ODgzMyIsNSwiXHU4''@;'; put 'put ''ODNhXHU4ODNiXHU4ODNkXHU4ODNlXHU4ODNmXHU4ODQxXHU4ODQyXHU4ODQzXHU4ODQ2Iiw1LCJcdTg4NGUiLDUsIlx1ODg1NVx1ODg1Nlx1ODg1OFx1ODg1YSIsNiwiXHU4ODY2XHU4ODY3XHU4ODZhXHU4ODZkXHU4ODZmXHU4ODcxXHU4ODczXHU4ODc0XHU4ODc1XHU4ODc2XHU4ODc4XHU4''@;'; put 'put ''ODc5XHU4ODdhIl0sWyJkMDgwIiwiXHU4ODdiXHU4ODdjXHU4ODgwXHU4ODgzXHU4ODg2XHU4ODg3XHU4ODg5XHU4ODhhXHU4ODhjXHU4ODhlXHU4ODhmXHU4ODkwXHU4ODkxXHU4ODkzXHU4ODk0XHU4ODk1XHU4ODk3Iiw0LCJcdTg4OWQiLDQsIlx1ODhhM1x1ODhhNSIsNSwiXHU1YzBmXHU1''@;'; put 'put ''YjVkXHU2ODIxXHU4MDk2XHU1NTc4XHU3YjExXHU2NTQ4XHU2OTU0XHU0ZTliXHU2YjQ3XHU4NzRlXHU5NzhiXHU1MzRmXHU2MzFmXHU2NDNhXHU5MGFhXHU2NTljXHU4MGMxXHU4YzEwXHU1MTk5XHU2OGIwXHU1Mzc4XHU4N2Y5XHU2MWM4XHU2Y2M0XHU2Y2ZiXHU4YzIyXHU1YzUxXHU4NWFh''@;'; put 'put ''XHU4MmFmXHU5NTBjXHU2YjIzXHU4ZjliXHU2NWIwXHU1ZmZiXHU1ZmMzXHU0ZmUxXHU4ODQ1XHU2NjFmXHU4MTY1XHU3MzI5XHU2MGZhXHU1MTc0XHU1MjExXHU1NzhiXHU1ZjYyXHU5MGEyXHU4ODRjXHU5MTkyXHU1ZTc4XHU2NzRmXHU2MDI3XHU1OWQzXHU1MTQ0XHU1MWY2XHU4MGY4XHU1''@;'; put 'put ''MzA4XHU2Yzc5XHU5NmM0XHU3MThhXHU0ZjExXHU0ZmVlXHU3ZjllXHU2NzNkXHU1NWM1XHU5NTA4XHU3OWMwXHU4ODk2XHU3ZWUzXHU1ODlmXHU2MjBjXHU5NzAwXHU4NjVhXHU1NjE4XHU5ODdiXHU1ZjkwXHU4YmI4XHU4NGM0XHU5MTU3XHU1M2Q5XHU2NWVkXHU1ZThmXHU3NTVjXHU2MDY0''@;'; put 'put ''XHU3ZDZlXHU1YTdmXHU3ZWVhXHU3ZWVkXHU4ZjY5XHU1NWE3XHU1YmEzXHU2MGFjXHU2NWNiXHU3Mzg0Il0sWyJkMTQwIiwiXHU4OGFjXHU4OGFlXHU4OGFmXHU4OGIwXHU4OGIyIiw0LCJcdTg4YjhcdTg4YjlcdTg4YmFcdTg4YmJcdTg4YmRcdTg4YmVcdTg4YmZcdTg4YzBcdTg4YzNcdTg4''@;'; put 'put ''YzRcdTg4YzdcdTg4YzhcdTg4Y2FcdTg4Y2JcdTg4Y2NcdTg4Y2RcdTg4Y2ZcdTg4ZDBcdTg4ZDFcdTg4ZDNcdTg4ZDZcdTg4ZDdcdTg4ZGEiLDQsIlx1ODhlMFx1ODhlMVx1ODhlNlx1ODhlN1x1ODhlOSIsNiwiXHU4OGYyXHU4OGY1XHU4OGY2XHU4OGY3XHU4OGZhXHU4OGZiXHU4OGZkXHU4''@;'; put 'put ''OGZmXHU4OTAwXHU4OTAxXHU4OTAzIiw1XSxbImQxODAiLCJcdTg5MDlcdTg5MGIiLDQsIlx1ODkxMVx1ODkxNCIsNCwiXHU4OTFjIiw0LCJcdTg5MjJcdTg5MjNcdTg5MjRcdTg5MjZcdTg5MjdcdTg5MjhcdTg5MjlcdTg5MmNcdTg5MmRcdTg5MmVcdTg5MmZcdTg5MzFcdTg5MzJcdTg5MzNc''@;'; put 'put ''dTg5MzVcdTg5MzdcdTkwMDlcdTc2NjNcdTc3MjlcdTdlZGFcdTk3NzRcdTg1OWJcdTViNjZcdTdhNzRcdTk2ZWFcdTg4NDBcdTUyY2JcdTcxOGZcdTVmYWFcdTY1ZWNcdThiZTJcdTViZmJcdTlhNmZcdTVkZTFcdTZiODlcdTZjNWJcdThiYWRcdThiYWZcdTkwMGFcdThmYzVcdTUzOGJcdTYy''@;'; put 'put ''YmNcdTllMjZcdTllMmRcdTU0NDBcdTRlMmJcdTgyYmRcdTcyNTlcdTg2OWNcdTVkMTZcdTg4NTlcdTZkYWZcdTk2YzVcdTU0ZDFcdTRlOWFcdThiYjZcdTcxMDlcdTU0YmRcdTk2MDlcdTcwZGZcdTZkZjlcdTc2ZDBcdTRlMjVcdTc4MTRcdTg3MTJcdTVjYTlcdTVlZjZcdThhMDBcdTk4OWNc''@;'; put 'put ''dTk2MGVcdTcwOGVcdTZjYmZcdTU5NDRcdTYzYTlcdTc3M2NcdTg4NGRcdTZmMTRcdTgyNzNcdTU4MzBcdTcxZDVcdTUzOGNcdTc4MWFcdTk2YzFcdTU1MDFcdTVmNjZcdTcxMzBcdTViYjRcdThjMWFcdTlhOGNcdTZiODNcdTU5MmVcdTllMmZcdTc5ZTdcdTY3NjhcdTYyNmNcdTRmNmZcdTc1''@;'; put 'put ''YTFcdTdmOGFcdTZkMGJcdTk2MzNcdTZjMjdcdTRlZjBcdTc1ZDJcdTUxN2JcdTY4MzdcdTZmM2VcdTkwODBcdTgxNzBcdTU5OTZcdTc0NzYiXSxbImQyNDAiLCJcdTg5MzgiLDgsIlx1ODk0Mlx1ODk0M1x1ODk0NSIsMjQsIlx1ODk2MCIsNSwiXHU4OTY3IiwxOSwiXHU4OTdjIl0sWyJkMjgw''@;'; put 'put ''IiwiXHU4OTdkXHU4OTdlXHU4OTgwXHU4OTgyXHU4OTg0XHU4OTg1XHU4OTg3IiwyNiwiXHU2NDQ3XHU1YzI3XHU5MDY1XHU3YTkxXHU4YzIzXHU1OWRhXHU1NGFjXHU4MjAwXHU4MzZmXHU4OTgxXHU4MDAwXHU2OTMwXHU1NjRlXHU4MDM2XHU3MjM3XHU5MWNlXHU1MWI2XHU0ZTVmXHU5ODc1''@;'; put 'put ''XHU2Mzk2XHU0ZTFhXHU1M2Y2XHU2NmYzXHU4MTRiXHU1OTFjXHU2ZGIyXHU0ZTAwXHU1OGY5XHU1MzNiXHU2M2Q2XHU5NGYxXHU0ZjlkXHU0ZjBhXHU4ODYzXHU5ODkwXHU1OTM3XHU5MDU3XHU3OWZiXHU0ZWVhXHU4MGYwXHU3NTkxXHU2YzgyXHU1YjljXHU1OWU4XHU1ZjVkXHU2OTA1XHU4''@;'; put 'put ''NjgxXHU1MDFhXHU1ZGYyXHU0ZTU5XHU3N2UzXHU0ZWU1XHU4MjdhXHU2MjkxXHU2NjEzXHU5MDkxXHU1Yzc5XHU0ZWJmXHU1Zjc5XHU4MWM2XHU5MDM4XHU4MDg0XHU3NWFiXHU0ZWE2XHU4OGQ0XHU2MTBmXHU2YmM1XHU1ZmM2XHU0ZTQ5XHU3NmNhXHU2ZWEyXHU4YmUzXHU4YmFlXHU4YzBh''@;'; put 'put ''XHU4YmQxXHU1ZjAyXHU3ZmZjXHU3ZmNjXHU3ZWNlXHU4MzM1XHU4MzZiXHU1NmUwXHU2YmI3XHU5N2YzXHU5NjM0XHU1OWZiXHU1NDFmXHU5NGY2XHU2ZGViXHU1YmM1XHU5OTZlXHU1YzM5XHU1ZjE1XHU5NjkwIl0sWyJkMzQwIiwiXHU4OWEyIiwzMCwiXHU4OWMzXHU4OWNkXHU4OWQzXHU4''@;'; put 'put ''OWQ0XHU4OWQ1XHU4OWQ3XHU4OWQ4XHU4OWQ5XHU4OWRiXHU4OWRkXHU4OWRmXHU4OWUwXHU4OWUxXHU4OWUyXHU4OWU0XHU4OWU3XHU4OWU4XHU4OWU5XHU4OWVhXHU4OWVjXHU4OWVkXHU4OWVlXHU4OWYwXHU4OWYxXHU4OWYyXHU4OWY0Iiw2XSxbImQzODAiLCJcdTg5ZmIiLDQsIlx1OGEw''@;'; put 'put ''MSIsNSwiXHU4YTA4IiwyMSwiXHU1MzcwXHU4MmYxXHU2YTMxXHU1YTc0XHU5ZTcwXHU1ZTk0XHU3ZjI4XHU4M2I5XHU4NDI0XHU4NDI1XHU4MzY3XHU4NzQ3XHU4ZmNlXHU4ZDYyXHU3NmM4XHU1ZjcxXHU5ODk2XHU3ODZjXHU2NjIwXHU1NGRmXHU2MmU1XHU0ZjYzXHU4MWMzXHU3NWM4XHU1''@;'; put 'put ''ZWI4XHU5NmNkXHU4ZTBhXHU4NmY5XHU1NDhmXHU2Y2YzXHU2ZDhjXHU2YzM4XHU2MDdmXHU1MmM3XHU3NTI4XHU1ZTdkXHU0ZjE4XHU2MGEwXHU1ZmU3XHU1YzI0XHU3NTMxXHU5MGFlXHU5NGMwXHU3MmI5XHU2Y2I5XHU2ZTM4XHU5MTQ5XHU2NzA5XHU1M2NiXHU1M2YzXHU0ZjUxXHU5MWM5''@;'; put 'put ''XHU4YmYxXHU1M2M4XHU1ZTdjXHU4ZmMyXHU2ZGU0XHU0ZThlXHU3NmMyXHU2OTg2XHU4NjVlXHU2MTFhXHU4MjA2XHU0ZjU5XHU0ZmRlXHU5MDNlXHU5YzdjXHU2MTA5XHU2ZTFkXHU2ZTE0XHU5Njg1XHU0ZTg4XHU1YTMxXHU5NmU4XHU0ZTBlXHU1YzdmXHU3OWI5XHU1Yjg3XHU4YmVkXHU3''@;'; put 'put ''ZmJkXHU3Mzg5XHU1N2RmXHU4MjhiXHU5MGMxXHU1NDAxXHU5MDQ3XHU1NWJiXHU1Y2VhXHU1ZmExXHU2MTA4XHU2YjMyXHU3MmYxXHU4MGIyXHU4YTg5Il0sWyJkNDQwIiwiXHU4YTFlIiwzMSwiXHU4YTNmIiw4LCJcdThhNDkiLDIxXSxbImQ0ODAiLCJcdThhNWYiLDI1LCJcdThhN2EiLDYs''@;'; put 'put ''Ilx1NmQ3NFx1NWJkM1x1ODhkNVx1OTg4NFx1OGM2Ylx1OWE2ZFx1OWUzM1x1NmUwYVx1NTFhNFx1NTE0M1x1NTdhM1x1ODg4MVx1NTM5Zlx1NjNmNFx1OGY5NVx1NTZlZFx1NTQ1OFx1NTcwNlx1NzMzZlx1NmU5MFx1N2YxOFx1OGZkY1x1ODJkMVx1NjEzZlx1NjAyOFx1OTY2Mlx1NjZmMFx1''@;'; put 'put ''N2VhNlx1OGQ4YVx1OGRjM1x1OTRhNVx1NWNiM1x1N2NhNFx1NjcwOFx1NjBhNlx1OTYwNVx1ODAxOFx1NGU5MVx1OTBlN1x1NTMwMFx1OTY2OFx1NTE0MVx1OGZkMFx1ODU3NFx1OTE1ZFx1NjY1NVx1OTdmNVx1NWI1NVx1NTMxZFx1NzgzOFx1Njc0Mlx1NjgzZFx1NTRjOVx1NzA3ZVx1NWJi''@;'; put 'put ''MFx1OGY3ZFx1NTE4ZFx1NTcyOFx1NTRiMVx1NjUxMlx1NjY4Mlx1OGQ1ZVx1OGQ0M1x1ODEwZlx1ODQ2Y1x1OTA2ZFx1N2NkZlx1NTFmZlx1ODVmYlx1NjdhM1x1NjVlOVx1NmZhMVx1ODZhNFx1OGU4MVx1NTY2YVx1OTAyMFx1NzY4Mlx1NzA3Nlx1NzFlNVx1OGQyM1x1NjJlOVx1NTIxOVx1''@;'; put 'put ''NmNmZFx1OGQzY1x1NjAwZVx1NTg5ZVx1NjE4ZVx1NjZmZVx1OGQ2MFx1NjI0ZVx1NTViM1x1NmUyM1x1NjcyZFx1OGY2NyJdLFsiZDU0MCIsIlx1OGE4MSIsNywiXHU4YThiIiw3LCJcdThhOTQiLDQ2XSxbImQ1ODAiLCJcdThhYzMiLDMyLCJcdTk0ZTFcdTk1ZjhcdTc3MjhcdTY4MDVcdTY5''@;'; put 'put ''YThcdTU0OGJcdTRlNGRcdTcwYjhcdThiYzhcdTY0NThcdTY1OGJcdTViODVcdTdhODRcdTUwM2FcdTViZThcdTc3YmJcdTZiZTFcdThhNzlcdTdjOThcdTZjYmVcdTc2Y2ZcdTY1YTlcdThmOTdcdTVkMmRcdTVjNTVcdTg2MzhcdTY4MDhcdTUzNjBcdTYyMThcdTdhZDlcdTZlNWJcdTdlZmRc''@;'; put 'put ''dTZhMWZcdTdhZTBcdTVmNzBcdTZmMzNcdTVmMjBcdTYzOGNcdTZkYThcdTY3NTZcdTRlMDhcdTVlMTBcdThkMjZcdTRlZDdcdTgwYzBcdTc2MzRcdTk2OWNcdTYyZGJcdTY2MmRcdTYyN2VcdTZjYmNcdThkNzVcdTcxNjdcdTdmNjlcdTUxNDZcdTgwODdcdTUzZWNcdTkwNmVcdTYyOThcdTU0''@;'; put 'put ''ZjJcdTg2ZjBcdThmOTlcdTgwMDVcdTk1MTdcdTg1MTdcdThmZDlcdTZkNTlcdTczY2RcdTY1OWZcdTc3MWZcdTc1MDRcdTc4MjdcdTgxZmJcdThkMWVcdTk0ODhcdTRmYTZcdTY3OTVcdTc1YjlcdThiY2FcdTk3MDdcdTYzMmZcdTk1NDdcdTk2MzVcdTg0YjhcdTYzMjNcdTc3NDFcdTVmODFc''@;'; put 'put ''dTcyZjBcdTRlODlcdTYwMTRcdTY1NzRcdTYyZWZcdTZiNjNcdTY1M2YiXSxbImQ2NDAiLCJcdThhZTQiLDM0LCJcdThiMDgiLDI3XSxbImQ2ODAiLCJcdThiMjRcdThiMjVcdThiMjciLDMwLCJcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3MThc''@;'; put 'put ''dTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5MGRcdTZiOTZcdTYyNjdcdTUwM2NcdTRmODRcdTU3NDBcdTYzMDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNcdTVj''@;'; put 'put ''ZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVcdTZjYmJcdTdhOTJcdTRlMmRcdTc2YzVcdTVmZTBcdTk0OWZcdTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdjYTVc''@;'; put 'put ''dThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTczZTBcdTY4MmFcdTg2ZGJcdTY3MzFcdTczMmFcdThiZjhcdThiZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBcdThk''@;'; put 'put ''MmVcdTk0ZjhcdTdiNTEiXSxbImQ3NDAiLCJcdThiNDYiLDMxLCJcdThiNjciLDQsIlx1OGI2ZCIsMjVdLFsiZDc4MCIsIlx1OGI4NyIsMjQsIlx1OGJhY1x1OGJiMVx1OGJiYlx1OGJjN1x1OGJkMFx1OGJlYVx1OGMwOVx1OGMxZVx1NGY0Zlx1NmNlOFx1Nzk1ZFx1OWE3Ylx1NjI5M1x1NzIy''@;'; put 'put ''YVx1NjJmZFx1NGUxM1x1NzgxNlx1OGY2Y1x1NjRiMFx1OGQ1YVx1N2JjNlx1Njg2OVx1NWU4NFx1ODhjNVx1NTk4Nlx1NjQ5ZVx1NThlZVx1NzJiNlx1NjkwZVx1OTUyNVx1OGZmZFx1OGQ1OFx1NTc2MFx1N2YwMFx1OGMwNlx1NTFjNlx1NjM0OVx1NjJkOVx1NTM1M1x1Njg0Y1x1NzQyMlx1''@;'; put 'put ''ODMwMVx1OTE0Y1x1NTU0NFx1Nzc0MFx1NzA3Y1x1NmQ0YVx1NTE3OVx1NTRhOFx1OGQ0NFx1NTlmZlx1NmVjYlx1NmRjNFx1NWI1Y1x1N2QyYlx1NGVkNFx1N2M3ZFx1NmVkM1x1NWI1MFx1ODFlYVx1NmUwZFx1NWI1N1x1OWIwM1x1NjhkNVx1OGUyYVx1NWI5N1x1N2VmY1x1NjAzYlx1N2Vi''@;'; put 'put ''NVx1OTBiOVx1OGQ3MFx1NTk0Zlx1NjNjZFx1NzlkZlx1OGRiM1x1NTM1Mlx1NjVjZlx1Nzk1Nlx1OGJjNVx1OTYzYlx1N2VjNFx1OTRiYlx1N2U4Mlx1NTYzNFx1OTE4OVx1NjcwMFx1N2Y2YVx1NWMwYVx1OTA3NVx1NjYyOFx1NWRlNlx1NGY1MFx1NjdkZVx1NTA1YVx1NGY1Y1x1NTc1MFx1''@;'; put 'put ''NWVhNyJdLFsiZDg0MCIsIlx1OGMzOCIsOCwiXHU4YzQyXHU4YzQzXHU4YzQ0XHU4YzQ1XHU4YzQ4XHU4YzRhXHU4YzRiXHU4YzRkIiw3LCJcdThjNTZcdThjNTdcdThjNThcdThjNTlcdThjNWIiLDUsIlx1OGM2MyIsNiwiXHU4YzZjIiw2LCJcdThjNzRcdThjNzVcdThjNzZcdThjNzdcdThj''@;'; put 'put ''N2IiLDYsIlx1OGM4M1x1OGM4NFx1OGM4Nlx1OGM4NyJdLFsiZDg4MCIsIlx1OGM4OFx1OGM4Ylx1OGM4ZCIsNiwiXHU4Yzk1XHU4Yzk2XHU4Yzk3XHU4Yzk5IiwyMCwiXHU0ZThkXHU0ZTBjXHU1MTQwXHU0ZTEwXHU1ZWZmXHU1MzQ1XHU0ZTE1XHU0ZTk4XHU0ZTFlXHU5YjMyXHU1YjZjXHU1''@;'; put 'put ''NjY5XHU0ZTI4XHU3OWJhXHU0ZTNmXHU1MzE1XHU0ZTQ3XHU1OTJkXHU3MjNiXHU1MzZlXHU2YzEwXHU1NmRmXHU4MGU0XHU5OTk3XHU2YmQzXHU3NzdlXHU5ZjE3XHU0ZTM2XHU0ZTlmXHU5ZjEwXHU0ZTVjXHU0ZTY5XHU0ZTkzXHU4Mjg4XHU1YjViXHU1NTZjXHU1NjBmXHU0ZWM0XHU1Mzhk''@;'; put 'put ''XHU1MzlkXHU1M2EzXHU1M2E1XHU1M2FlXHU5NzY1XHU4ZDVkXHU1MzFhXHU1M2Y1XHU1MzI2XHU1MzJlXHU1MzNlXHU4ZDVjXHU1MzY2XHU1MzYzXHU1MjAyXHU1MjA4XHU1MjBlXHU1MjJkXHU1MjMzXHU1MjNmXHU1MjQwXHU1MjRjXHU1MjVlXHU1MjYxXHU1MjVjXHU4NGFmXHU1MjdkXHU1''@;'; put 'put ''MjgyXHU1MjgxXHU1MjkwXHU1MjkzXHU1MTgyXHU3ZjU0XHU0ZWJiXHU0ZWMzXHU0ZWM5XHU0ZWMyXHU0ZWU4XHU0ZWUxXHU0ZWViXHU0ZWRlXHU0ZjFiXHU0ZWYzXHU0ZjIyXHU0ZjY0XHU0ZWY1XHU0ZjI1XHU0ZjI3XHU0ZjA5XHU0ZjJiXHU0ZjVlXHU0ZjY3XHU2NTM4XHU0ZjVhXHU0ZjVk''@;'; put 'put ''Il0sWyJkOTQwIiwiXHU4Y2FlIiw2Ml0sWyJkOTgwIiwiXHU4Y2VkIiwzMiwiXHU0ZjVmXHU0ZjU3XHU0ZjMyXHU0ZjNkXHU0Zjc2XHU0Zjc0XHU0ZjkxXHU0Zjg5XHU0ZjgzXHU0ZjhmXHU0ZjdlXHU0ZjdiXHU0ZmFhXHU0ZjdjXHU0ZmFjXHU0Zjk0XHU0ZmU2XHU0ZmU4XHU0ZmVhXHU0ZmM1''@;'; put 'put ''XHU0ZmRhXHU0ZmUzXHU0ZmRjXHU0ZmQxXHU0ZmRmXHU0ZmY4XHU1MDI5XHU1MDRjXHU0ZmYzXHU1MDJjXHU1MDBmXHU1MDJlXHU1MDJkXHU0ZmZlXHU1MDFjXHU1MDBjXHU1MDI1XHU1MDI4XHU1MDdlXHU1MDQzXHU1MDU1XHU1MDQ4XHU1MDRlXHU1MDZjXHU1MDdiXHU1MGE1XHU1MGE3XHU1''@;'; put 'put ''MGE5XHU1MGJhXHU1MGQ2XHU1MTA2XHU1MGVkXHU1MGVjXHU1MGU2XHU1MGVlXHU1MTA3XHU1MTBiXHU0ZWRkXHU2YzNkXHU0ZjU4XHU0ZjY1XHU0ZmNlXHU5ZmEwXHU2YzQ2XHU3Yzc0XHU1MTZlXHU1ZGZkXHU5ZWM5XHU5OTk4XHU1MTgxXHU1OTE0XHU1MmY5XHU1MzBkXHU4YTA3XHU1MzEw''@;'; put 'put ''XHU1MWViXHU1OTE5XHU1MTU1XHU0ZWEwXHU1MTU2XHU0ZWIzXHU4ODZlXHU4OGE0XHU0ZWI1XHU4MTE0XHU4OGQyXHU3OTgwXHU1YjM0XHU4ODAzXHU3ZmI4XHU1MWFiXHU1MWIxXHU1MWJkXHU1MWJjIl0sWyJkYTQwIiwiXHU4ZDBlIiwxNCwiXHU4ZDIwXHU4ZDUxXHU4ZDUyXHU4ZDU3XHU4''@;'; put 'put ''ZDVmXHU4ZDY1XHU4ZDY4XHU4ZDY5XHU4ZDZhXHU4ZDZjXHU4ZDZlXHU4ZDZmXHU4ZDcxXHU4ZDcyXHU4ZDc4Iiw4LCJcdThkODJcdThkODNcdThkODZcdThkODdcdThkODhcdThkODlcdThkOGMiLDQsIlx1OGQ5Mlx1OGQ5M1x1OGQ5NSIsOSwiXHU4ZGEwXHU4ZGExIl0sWyJkYTgwIiwiXHU4''@;'; put 'put ''ZGEyXHU4ZGE0IiwxMiwiXHU4ZGIyXHU4ZGI2XHU4ZGI3XHU4ZGI5XHU4ZGJiXHU4ZGJkXHU4ZGMwXHU4ZGMxXHU4ZGMyXHU4ZGM1XHU4ZGM3XHU4ZGM4XHU4ZGM5XHU4ZGNhXHU4ZGNkXHU4ZGQwXHU4ZGQyXHU4ZGQzXHU4ZGQ0XHU1MWM3XHU1MTk2XHU1MWEyXHU1MWE1XHU4YmEwXHU4YmE2''@;'; put 'put ''XHU4YmE3XHU4YmFhXHU4YmI0XHU4YmI1XHU4YmI3XHU4YmMyXHU4YmMzXHU4YmNiXHU4YmNmXHU4YmNlXHU4YmQyXHU4YmQzXHU4YmQ0XHU4YmQ2XHU4YmQ4XHU4YmQ5XHU4YmRjXHU4YmRmXHU4YmUwXHU4YmU0XHU4YmU4XHU4YmU5XHU4YmVlXHU4YmYwXHU4YmYzXHU4YmY2XHU4YmY5XHU4''@;'; put 'put ''YmZjXHU4YmZmXHU4YzAwXHU4YzAyXHU4YzA0XHU4YzA3XHU4YzBjXHU4YzBmXHU4YzExXHU4YzEyXHU4YzE0XHU4YzE1XHU4YzE2XHU4YzE5XHU4YzFiXHU4YzE4XHU4YzFkXHU4YzFmXHU4YzIwXHU4YzIxXHU4YzI1XHU4YzI3XHU4YzJhXHU4YzJiXHU4YzJlXHU4YzJmXHU4YzMyXHU4YzMz''@;'; put 'put ''XHU4YzM1XHU4YzM2XHU1MzY5XHU1MzdhXHU5NjFkXHU5NjIyXHU5NjIxXHU5NjMxXHU5NjJhXHU5NjNkXHU5NjNjXHU5NjQyXHU5NjQ5XHU5NjU0XHU5NjVmXHU5NjY3XHU5NjZjXHU5NjcyXHU5Njc0XHU5Njg4XHU5NjhkXHU5Njk3XHU5NmIwXHU5MDk3XHU5MDliXHU5MDlkXHU5MDk5XHU5''@;'; put 'put ''MGFjXHU5MGExXHU5MGI0XHU5MGIzXHU5MGI2XHU5MGJhIl0sWyJkYjQwIiwiXHU4ZGQ1XHU4ZGQ4XHU4ZGQ5XHU4ZGRjXHU4ZGUwXHU4ZGUxXHU4ZGUyXHU4ZGU1XHU4ZGU2XHU4ZGU3XHU4ZGU5XHU4ZGVkXHU4ZGVlXHU4ZGYwXHU4ZGYxXHU4ZGYyXHU4ZGY0XHU4ZGY2XHU4ZGZjXHU4ZGZl''@;'; put 'put ''Iiw2LCJcdThlMDZcdThlMDdcdThlMDhcdThlMGJcdThlMGRcdThlMGVcdThlMTBcdThlMTFcdThlMTJcdThlMTNcdThlMTUiLDcsIlx1OGUyMFx1OGUyMVx1OGUyNCIsNCwiXHU4ZTJiXHU4ZTJkXHU4ZTMwXHU4ZTMyXHU4ZTMzXHU4ZTM0XHU4ZTM2XHU4ZTM3XHU4ZTM4XHU4ZTNiXHU4ZTNj''@;'; put 'put ''XHU4ZTNlIl0sWyJkYjgwIiwiXHU4ZTNmXHU4ZTQzXHU4ZTQ1XHU4ZTQ2XHU4ZTRjIiw0LCJcdThlNTMiLDUsIlx1OGU1YSIsMTEsIlx1OGU2N1x1OGU2OFx1OGU2YVx1OGU2Ylx1OGU2ZVx1OGU3MVx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1OTBk''@;'; put 'put ''M1x1OTBlNlx1OTBlMlx1OTBkY1x1OTBkN1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1OTE0Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJmMFx1''@;'; put 'put ''NTNkZlx1NzFlZVx1NzdjZFx1NWVmNFx1NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThjNVx1NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1NTc0''@;'; put 'put ''Mlx1NTc2OVx1NTc4NVx1NTc2Ylx1NTc4Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1NTdiNFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdlZlx1''@;'; put 'put ''NTdmOFx1NTdlNFx1NTdkZCJdLFsiZGM0MCIsIlx1OGU3M1x1OGU3NVx1OGU3NyIsNCwiXHU4ZTdkXHU4ZTdlXHU4ZTgwXHU4ZTgyXHU4ZTgzXHU4ZTg0XHU4ZTg2XHU4ZTg4Iiw2LCJcdThlOTFcdThlOTJcdThlOTNcdThlOTUiLDYsIlx1OGU5ZFx1OGU5ZiIsMTEsIlx1OGVhZFx1OGVhZVx1''@;'; put 'put ''OGViMFx1OGViMVx1OGViMyIsNiwiXHU4ZWJiIiw3XSxbImRjODAiLCJcdThlYzMiLDEwLCJcdThlY2YiLDIxLCJcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4MWVcdTU4MTlcdTU4NDRcdTU4MjBcdTU4NjVcdTU4NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlm''@;'; put 'put ''MTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFcdTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBcdTgyYzhcdTgyY2FcdTgyZTNcdTgyOThcdTgyYjdcdTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRc''@;'; put 'put ''dTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgyZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgzMGNcdTgyZmJcdTgyZDNcdTgzMTFcdTgzMWFcdTgzMDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgz''@;'; put 'put ''NTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRcdTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdcdTgzNjBcdTgzMmRcdTgzM2FcdTgzMzNcdTgzNjZcdTgzNjUiXSxbImRkNDAiLCJcdThlZTUiLDYyXSxbImRkODAi''@;'; put 'put ''LCJcdThmMjQiLDMyLCJcdTgzNjhcdTgzMWJcdTgzNjlcdTgzNmNcdTgzNmFcdTgzNmRcdTgzNmVcdTgzYjBcdTgzNzhcdTgzYjNcdTgzYjRcdTgzYTBcdTgzYWFcdTgzOTNcdTgzOWNcdTgzODVcdTgzN2NcdTgzYjZcdTgzYTlcdTgzN2RcdTgzYjhcdTgzN2JcdTgzOThcdTgzOWVcdTgzYThc''@;'; put 'put ''dTgzYmFcdTgzYmNcdTgzYzFcdTg0MDFcdTgzZTVcdTgzZDhcdTU4MDdcdTg0MThcdTg0MGJcdTgzZGRcdTgzZmRcdTgzZDZcdTg0MWNcdTg0MzhcdTg0MTFcdTg0MDZcdTgzZDRcdTgzZGZcdTg0MGZcdTg0MDNcdTgzZjhcdTgzZjlcdTgzZWFcdTgzYzVcdTgzYzBcdTg0MjZcdTgzZjBcdTgz''@;'; put 'put ''ZTFcdTg0NWNcdTg0NTFcdTg0NWFcdTg0NTlcdTg0NzNcdTg0ODdcdTg0ODhcdTg0N2FcdTg0ODlcdTg0NzhcdTg0M2NcdTg0NDZcdTg0NjlcdTg0NzZcdTg0OGNcdTg0OGVcdTg0MzFcdTg0NmRcdTg0YzFcdTg0Y2RcdTg0ZDBcdTg0ZTZcdTg0YmRcdTg0ZDNcdTg0Y2FcdTg0YmZcdTg0YmFc''@;'; put 'put ''dTg0ZTBcdTg0YTFcdTg0YjlcdTg0YjRcdTg0OTdcdTg0ZTVcdTg0ZTNcdTg1MGNcdTc1MGRcdTg1MzhcdTg0ZjBcdTg1MzlcdTg1MWZcdTg1M2EiXSxbImRlNDAiLCJcdThmNDUiLDMyLCJcdThmNmFcdThmODBcdThmOGNcdThmOTJcdThmOWRcdThmYTBcdThmYTFcdThmYTJcdThmYTRcdThm''@;'; put 'put ''YTVcdThmYTZcdThmYTdcdThmYWFcdThmYWNcdThmYWRcdThmYWVcdThmYWZcdThmYjJcdThmYjNcdThmYjRcdThmYjVcdThmYjdcdThmYjhcdThmYmFcdThmYmJcdThmYmNcdThmYmZcdThmYzBcdThmYzNcdThmYzYiXSxbImRlODAiLCJcdThmYzkiLDQsIlx1OGZjZlx1OGZkMlx1OGZkNlx1''@;'; put 'put ''OGZkN1x1OGZkYVx1OGZlMFx1OGZlMVx1OGZlM1x1OGZlN1x1OGZlY1x1OGZlZlx1OGZmMVx1OGZmMlx1OGZmNFx1OGZmNVx1OGZmNlx1OGZmYVx1OGZmYlx1OGZmY1x1OGZmZVx1OGZmZlx1OTAwN1x1OTAwOFx1OTAwY1x1OTAwZVx1OTAxM1x1OTAxNVx1OTAxOFx1ODU1Nlx1ODUzYlx1ODRm''@;'; put 'put ''Zlx1ODRmY1x1ODU1OVx1ODU0OFx1ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3OVx1ODVhZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1ODYyN1x1''@;'; put 'put ''ODYwNVx1ODYyOVx1ODYxNlx1ODYzY1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1NWMzNFx1NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJmNlx1NjMz''@;'; put 'put ''OVx1NjM0Ylx1NjM0M1x1NjNhZFx1NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNmOFx1NjNlMFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1NjQwYlx1''@;'; put 'put ''NjQxYlx1NjQyMFx1NjQwY1x1NjQyNlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5NiJdLFsiZGY0MCIsIlx1OTAxOVx1OTAxY1x1OTAyM1x1OTAyNFx1OTAyNVx1OTAyNyIsNSwiXHU5MDMwIiw0LCJcdTkwMzdcdTkwMzlcdTkwM2FcdTkwM2RcdTkwM2ZcdTkwNDBcdTkwNDNcdTkwNDVc''@;'; put 'put ''dTkwNDZcdTkwNDgiLDQsIlx1OTA0ZVx1OTA1NFx1OTA1NVx1OTA1Nlx1OTA1OVx1OTA1YVx1OTA1YyIsNSwiXHU5MDY0XHU5MDY2XHU5MDY3XHU5MDY5XHU5MDZhXHU5MDZiXHU5MDZjXHU5MDZmIiw0LCJcdTkwNzYiLDYsIlx1OTA3ZVx1OTA4MSJdLFsiZGY4MCIsIlx1OTA4NFx1OTA4NVx1''@;'; put 'put ''OTA4Nlx1OTA4N1x1OTA4OVx1OTA4YVx1OTA4YyIsNCwiXHU5MDkyXHU5MDk0XHU5MDk2XHU5MDk4XHU5MDlhXHU5MDljXHU5MDllXHU5MDlmXHU5MGEwXHU5MGE0XHU5MGE1XHU5MGE3XHU5MGE4XHU5MGE5XHU5MGFiXHU5MGFkXHU5MGIyXHU5MGI3XHU5MGJjXHU5MGJkXHU5MGJmXHU5MGMw''@;'; put 'put ''XHU2NDdhXHU2NGI3XHU2NGI4XHU2NDk5XHU2NGJhXHU2NGMwXHU2NGQwXHU2NGQ3XHU2NGU0XHU2NGUyXHU2NTA5XHU2NTI1XHU2NTJlXHU1ZjBiXHU1ZmQyXHU3NTE5XHU1ZjExXHU1MzVmXHU1M2YxXHU1M2ZkXHU1M2U5XHU1M2U4XHU1M2ZiXHU1NDEyXHU1NDE2XHU1NDA2XHU1NDRiXHU1''@;'; put 'put ''NDUyXHU1NDUzXHU1NDU0XHU1NDU2XHU1NDQzXHU1NDIxXHU1NDU3XHU1NDU5XHU1NDIzXHU1NDMyXHU1NDgyXHU1NDk0XHU1NDc3XHU1NDcxXHU1NDY0XHU1NDlhXHU1NDliXHU1NDg0XHU1NDc2XHU1NDY2XHU1NDlkXHU1NGQwXHU1NGFkXHU1NGMyXHU1NGI0XHU1NGQyXHU1NGE3XHU1NGE2''@;'; put 'put ''XHU1NGQzXHU1NGQ0XHU1NDcyXHU1NGEzXHU1NGQ1XHU1NGJiXHU1NGJmXHU1NGNjXHU1NGQ5XHU1NGRhXHU1NGRjXHU1NGE5XHU1NGFhXHU1NGE0XHU1NGRkXHU1NGNmXHU1NGRlXHU1NTFiXHU1NGU3XHU1NTIwXHU1NGZkXHU1NTE0XHU1NGYzXHU1NTIyXHU1NTIzXHU1NTBmXHU1NTExXHU1''@;'; put 'put ''NTI3XHU1NTJhXHU1NTY3XHU1NThmXHU1NWI1XHU1NTQ5XHU1NTZkXHU1NTQxXHU1NTU1XHU1NTNmXHU1NTUwXHU1NTNjIl0sWyJlMDQwIiwiXHU5MGMyXHU5MGMzXHU5MGM2XHU5MGM4XHU5MGM5XHU5MGNiXHU5MGNjXHU5MGNkXHU5MGQyXHU5MGQ0XHU5MGQ1XHU5MGQ2XHU5MGQ4XHU5MGQ5''@;'; put 'put ''XHU5MGRhXHU5MGRlXHU5MGRmXHU5MGUwXHU5MGUzXHU5MGU0XHU5MGU1XHU5MGU5XHU5MGVhXHU5MGVjXHU5MGVlXHU5MGYwXHU5MGYxXHU5MGYyXHU5MGYzXHU5MGY1XHU5MGY2XHU5MGY3XHU5MGY5XHU5MGZhXHU5MGZiXHU5MGZjXHU5MGZmXHU5MTAwXHU5MTAxXHU5MTAzXHU5MTA1Iiwx''@;'; put 'put ''OSwiXHU5MTFhXHU5MTFiXHU5MTFjIl0sWyJlMDgwIiwiXHU5MTFkXHU5MTFmXHU5MTIwXHU5MTIxXHU5MTI0IiwxMCwiXHU5MTMwXHU5MTMyIiw2LCJcdTkxM2EiLDgsIlx1OTE0NFx1NTUzN1x1NTU1Nlx1NTU3NVx1NTU3Nlx1NTU3N1x1NTUzM1x1NTUzMFx1NTU1Y1x1NTU4Ylx1NTVkMlx1''@;'; put 'put ''NTU4M1x1NTViMVx1NTViOVx1NTU4OFx1NTU4MVx1NTU5Zlx1NTU3ZVx1NTVkNlx1NTU5MVx1NTU3Ylx1NTVkZlx1NTViZFx1NTViZVx1NTU5NFx1NTU5OVx1NTVlYVx1NTVmN1x1NTVjOVx1NTYxZlx1NTVkMVx1NTVlYlx1NTVlY1x1NTVkNFx1NTVlNlx1NTVkZFx1NTVjNFx1NTVlZlx1NTVl''@;'; put 'put ''NVx1NTVmMlx1NTVmM1x1NTVjY1x1NTVjZFx1NTVlOFx1NTVmNVx1NTVlNFx1OGY5NFx1NTYxZVx1NTYwOFx1NTYwY1x1NTYwMVx1NTYyNFx1NTYyM1x1NTVmZVx1NTYwMFx1NTYyN1x1NTYyZFx1NTY1OFx1NTYzOVx1NTY1N1x1NTYyY1x1NTY0ZFx1NTY2Mlx1NTY1OVx1NTY1Y1x1NTY0Y1x1''@;'; put 'put ''NTY1NFx1NTY4Nlx1NTY2NFx1NTY3MVx1NTY2Ylx1NTY3Ylx1NTY3Y1x1NTY4NVx1NTY5M1x1NTZhZlx1NTZkNFx1NTZkN1x1NTZkZFx1NTZlMVx1NTZmNVx1NTZlYlx1NTZmOVx1NTZmZlx1NTcwNFx1NTcwYVx1NTcwOVx1NTcxY1x1NWUwZlx1NWUxOVx1NWUxNFx1NWUxMVx1NWUzMVx1NWUz''@;'; put 'put ''Ylx1NWUzYyJdLFsiZTE0MCIsIlx1OTE0NVx1OTE0N1x1OTE0OFx1OTE1MVx1OTE1M1x1OTE1NFx1OTE1NVx1OTE1Nlx1OTE1OFx1OTE1OVx1OTE1Ylx1OTE1Y1x1OTE1Zlx1OTE2MFx1OTE2Nlx1OTE2N1x1OTE2OFx1OTE2Ylx1OTE2ZFx1OTE3M1x1OTE3YVx1OTE3Ylx1OTE3Y1x1OTE4MCIs''@;'; put 'put ''NCwiXHU5MTg2XHU5MTg4XHU5MThhXHU5MThlXHU5MThmXHU5MTkzIiw2LCJcdTkxOWMiLDUsIlx1OTFhNCIsNSwiXHU5MWFiXHU5MWFjXHU5MWIwXHU5MWIxXHU5MWIyXHU5MWIzXHU5MWI2XHU5MWI3XHU5MWI4XHU5MWI5XHU5MWJiIl0sWyJlMTgwIiwiXHU5MWJjIiwxMCwiXHU5MWM4XHU5''@;'; put 'put ''MWNiXHU5MWQwXHU5MWQyIiw5LCJcdTkxZGQiLDgsIlx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1NWM5OFx1NWM5OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1''@;'; put 'put ''NWNiMVx1NWNhM1x1NWNjMVx1NWNiN1x1NWNjNFx1NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQxYlx1NWQ1OFx1NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0''@;'; put 'put ''Ylx1NWQ0YVx1NWQ2OVx1NWQ3NFx1NWQ4Mlx1NWQ5OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1NWY5Y1x1NWZhOFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1''@;'; put 'put ''NzJiN1x1NzJiOFx1NzJjM1x1NzJjMVx1NzJjZVx1NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYSJdLFsiZTI0MCIsIlx1OTFlNiIsNjJdLFsiZTI4MCIsIlx1OTIyNSIsMzIsIlx1NzJmYlx1NzMxN1x1NzMxM1x1''@;'; put 'put ''NzMyMVx1NzMwYVx1NzMxZVx1NzMxZFx1NzMxNVx1NzMyMlx1NzMzOVx1NzMyNVx1NzMyY1x1NzMzOFx1NzMzMVx1NzM1MFx1NzM0ZFx1NzM1N1x1NzM2MFx1NzM2Y1x1NzM2Zlx1NzM3ZVx1ODIxYlx1NTkyNVx1OThlN1x1NTkyNFx1NTkwMlx1OTk2M1x1OTk2NyIsNSwiXHU5OTc0XHU5OTc3''@;'; put 'put ''XHU5OTdkXHU5OTgwXHU5OTg0XHU5OTg3XHU5OThhXHU5OThkXHU5OTkwXHU5OTkxXHU5OTkzXHU5OTk0XHU5OTk1XHU1ZTgwXHU1ZTkxXHU1ZThiXHU1ZTk2XHU1ZWE1XHU1ZWEwXHU1ZWI5XHU1ZWI1XHU1ZWJlXHU1ZWIzXHU4ZDUzXHU1ZWQyXHU1ZWQxXHU1ZWRiXHU1ZWU4XHU1ZWVhXHU4''@;'; put 'put ''MWJhXHU1ZmM0XHU1ZmM5XHU1ZmQ2XHU1ZmNmXHU2MDAzXHU1ZmVlXHU2MDA0XHU1ZmUxXHU1ZmU0XHU1ZmZlXHU2MDA1XHU2MDA2XHU1ZmVhXHU1ZmVkXHU1ZmY4XHU2MDE5XHU2MDM1XHU2MDI2XHU2MDFiXHU2MDBmXHU2MDBkXHU2MDI5XHU2MDJiXHU2MDBhXHU2MDNmXHU2MDIxXHU2MDc4''@;'; put 'put ''XHU2MDc5XHU2MDdiXHU2MDdhXHU2MDQyIl0sWyJlMzQwIiwiXHU5MjQ2Iiw0NSwiXHU5Mjc1IiwxNl0sWyJlMzgwIiwiXHU5Mjg2Iiw3LCJcdTkyOGYiLDI0LCJcdTYwNmFcdTYwN2RcdTYwOTZcdTYwOWFcdTYwYWRcdTYwOWRcdTYwODNcdTYwOTJcdTYwOGNcdTYwOWJcdTYwZWNcdTYwYmJc''@;'; put 'put ''dTYwYjFcdTYwZGRcdTYwZDhcdTYwYzZcdTYwZGFcdTYwYjRcdTYxMjBcdTYxMjZcdTYxMTVcdTYxMjNcdTYwZjRcdTYxMDBcdTYxMGVcdTYxMmJcdTYxNGFcdTYxNzVcdTYxYWNcdTYxOTRcdTYxYTdcdTYxYjdcdTYxZDRcdTYxZjVcdTVmZGRcdTk2YjNcdTk1ZTlcdTk1ZWJcdTk1ZjFcdTk1''@;'; put 'put ''ZjNcdTk1ZjVcdTk1ZjZcdTk1ZmNcdTk1ZmVcdTk2MDNcdTk2MDRcdTk2MDZcdTk2MDhcdTk2MGFcdTk2MGJcdTk2MGNcdTk2MGRcdTk2MGZcdTk2MTJcdTk2MTVcdTk2MTZcdTk2MTdcdTk2MTlcdTk2MWFcdTRlMmNcdTcyM2ZcdTYyMTVcdTZjMzVcdTZjNTRcdTZjNWNcdTZjNGFcdTZjYTNc''@;'; put 'put ''dTZjODVcdTZjOTBcdTZjOTRcdTZjOGNcdTZjNjhcdTZjNjlcdTZjNzRcdTZjNzZcdTZjODZcdTZjYTlcdTZjZDBcdTZjZDRcdTZjYWRcdTZjZjdcdTZjZjhcdTZjZjFcdTZjZDdcdTZjYjJcdTZjZTBcdTZjZDZcdTZjZmFcdTZjZWJcdTZjZWVcdTZjYjFcdTZjZDNcdTZjZWZcdTZjZmUiXSxb''@;'; put 'put ''ImU0NDAiLCJcdTkyYTgiLDUsIlx1OTJhZiIsMjQsIlx1OTJjOSIsMzFdLFsiZTQ4MCIsIlx1OTJlOSIsMzIsIlx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQwN1x1NmQwNFx1NmQxOVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1NmQ1''@;'; put 'put ''NFx1NmQzM1x1NmQ5MVx1NmQ2Zlx1NmQ5ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1NmUwZVx1NmRiZlx1NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRhZVx1''@;'; put 'put ''NmUyYlx1NmU2ZVx1NmU0ZVx1NmU2Ylx1NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYyZFx1NmVlMlx1NmVhNVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1NmVj''@;'; put 'put ''Mlx1NmU5Zlx1NmY2Mlx1NmY0Nlx1NmY0N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1NmY4Y1x1NmY3OFx1NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMSJdLFsiZTU0MCIsIlx1OTMwYSIsNTEsIlx1OTMzZiIs''@;'; put 'put ''MTBdLFsiZTU4MCIsIlx1OTM0YSIsMzEsIlx1OTM2Ylx1NmZjOVx1NmZhN1x1NmZiOVx1NmZiNlx1NmZjMlx1NmZlMVx1NmZlZVx1NmZkZVx1NmZlMFx1NmZlZlx1NzAxYVx1NzAyM1x1NzAxYlx1NzAzOVx1NzAzNVx1NzA0Zlx1NzA1ZVx1NWI4MFx1NWI4NFx1NWI5NVx1NWI5M1x1NWJhNVx1''@;'; put 'put ''NWJiOFx1NzUyZlx1OWE5ZVx1NjQzNFx1NWJlNFx1NWJlZVx1ODkzMFx1NWJmMFx1OGU0N1x1OGIwN1x1OGZiNlx1OGZkM1x1OGZkNVx1OGZlNVx1OGZlZVx1OGZlNFx1OGZlOVx1OGZlNlx1OGZmM1x1OGZlOFx1OTAwNVx1OTAwNFx1OTAwYlx1OTAyNlx1OTAxMVx1OTAwZFx1OTAxNlx1OTAy''@;'; put 'put ''MVx1OTAzNVx1OTAzNlx1OTAyZFx1OTAyZlx1OTA0NFx1OTA1MVx1OTA1Mlx1OTA1MFx1OTA2OFx1OTA1OFx1OTA2Mlx1OTA1Ylx1NjZiOVx1OTA3NFx1OTA3ZFx1OTA4Mlx1OTA4OFx1OTA4M1x1OTA4Ylx1NWY1MFx1NWY1N1x1NWY1Nlx1NWY1OFx1NWMzYlx1NTRhYlx1NWM1MFx1NWM1OVx1''@;'; put 'put ''NWI3MVx1NWM2M1x1NWM2Nlx1N2ZiY1x1NWYyYVx1NWYyOVx1NWYyZFx1ODI3NFx1NWYzY1x1OWIzYlx1NWM2ZVx1NTk4MVx1NTk4M1x1NTk4ZFx1NTlhOVx1NTlhYVx1NTlhMyJdLFsiZTY0MCIsIlx1OTM2YyIsMzQsIlx1OTM5MCIsMjddLFsiZTY4MCIsIlx1OTNhYyIsMjksIlx1OTNjYlx1''@;'; put 'put ''OTNjY1x1OTNjZFx1NTk5N1x1NTljYVx1NTlhYlx1NTk5ZVx1NTlhNFx1NTlkMlx1NTliMlx1NTlhZlx1NTlkN1x1NTliZVx1NWEwNVx1NWEwNlx1NTlkZFx1NWEwOFx1NTllM1x1NTlkOFx1NTlmOVx1NWEwY1x1NWEwOVx1NWEzMlx1NWEzNFx1NWExMVx1NWEyM1x1NWExM1x1NWE0MFx1NWE2''@;'; put 'put ''N1x1NWE0YVx1NWE1NVx1NWEzY1x1NWE2Mlx1NWE3NVx1ODBlY1x1NWFhYVx1NWE5Ylx1NWE3N1x1NWE3YVx1NWFiZVx1NWFlYlx1NWFiMlx1NWFkMlx1NWFkNFx1NWFiOFx1NWFlMFx1NWFlM1x1NWFmMVx1NWFkNlx1NWFlNlx1NWFkOFx1NWFkY1x1NWIwOVx1NWIxN1x1NWIxNlx1NWIzMlx1''@;'; put 'put ''NWIzN1x1NWI0MFx1NWMxNVx1NWMxY1x1NWI1YVx1NWI2NVx1NWI3M1x1NWI1MVx1NWI1M1x1NWI2Mlx1OWE3NVx1OWE3N1x1OWE3OFx1OWE3YVx1OWE3Zlx1OWE3ZFx1OWE4MFx1OWE4MVx1OWE4NVx1OWE4OFx1OWE4YVx1OWE5MFx1OWE5Mlx1OWE5M1x1OWE5Nlx1OWE5OFx1OWE5Ylx1OWE5''@;'; put 'put ''Y1x1OWE5ZFx1OWE5Zlx1OWFhMFx1OWFhMlx1OWFhM1x1OWFhNVx1OWFhN1x1N2U5Zlx1N2VhMVx1N2VhM1x1N2VhNVx1N2VhOFx1N2VhOSJdLFsiZTc0MCIsIlx1OTNjZSIsNywiXHU5M2Q3Iiw1NF0sWyJlNzgwIiwiXHU5NDBlIiwzMiwiXHU3ZWFkXHU3ZWIwXHU3ZWJlXHU3ZWMwXHU3ZWMx''@;'; put 'put ''XHU3ZWMyXHU3ZWM5XHU3ZWNiXHU3ZWNjXHU3ZWQwXHU3ZWQ0XHU3ZWQ3XHU3ZWRiXHU3ZWUwXHU3ZWUxXHU3ZWU4XHU3ZWViXHU3ZWVlXHU3ZWVmXHU3ZWYxXHU3ZWYyXHU3ZjBkXHU3ZWY2XHU3ZWZhXHU3ZWZiXHU3ZWZlXHU3ZjAxXHU3ZjAyXHU3ZjAzXHU3ZjA3XHU3ZjA4XHU3ZjBiXHU3''@;'; put 'put ''ZjBjXHU3ZjBmXHU3ZjExXHU3ZjEyXHU3ZjE3XHU3ZjE5XHU3ZjFjXHU3ZjFiXHU3ZjFmXHU3ZjIxIiw2LCJcdTdmMmFcdTdmMmJcdTdmMmNcdTdmMmRcdTdmMmYiLDQsIlx1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5MVx1NzNhZVx1NzNhMlx1NzM5Zlx1''@;'; put 'put ''NzNjZlx1NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNlN1x1NzNkZVx1NzNiYVx1NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1NzQyZVx1NzQyYyJdLFsiZTg0MCIs''@;'; put 'put ''Ilx1OTQyZiIsMTQsIlx1OTQzZiIsNDMsIlx1OTQ2Y1x1OTQ2ZFx1OTQ2ZVx1OTQ2ZiJdLFsiZTg4MCIsIlx1OTQ3MCIsMjAsIlx1OTQ5MVx1OTQ5Nlx1OTQ5OFx1OTRjN1x1OTRjZlx1OTRkM1x1OTRkNFx1OTRkYVx1OTRlNlx1OTRmYlx1OTUxY1x1OTUyMFx1NzQxYlx1NzQxYVx1NzQ0MVx1''@;'; put 'put ''NzQ1Y1x1NzQ1N1x1NzQ1NVx1NzQ1OVx1NzQ3N1x1NzQ2ZFx1NzQ3ZVx1NzQ5Y1x1NzQ4ZVx1NzQ4MFx1NzQ4MVx1NzQ4N1x1NzQ4Ylx1NzQ5ZVx1NzRhOFx1NzRhOVx1NzQ5MFx1NzRhN1x1NzRkMlx1NzRiYVx1OTdlYVx1OTdlYlx1OTdlY1x1Njc0Y1x1Njc1M1x1Njc1ZVx1Njc0OFx1Njc2''@;'; put 'put ''OVx1NjdhNVx1Njc4N1x1Njc2YVx1Njc3M1x1Njc5OFx1NjdhN1x1Njc3NVx1NjdhOFx1Njc5ZVx1NjdhZFx1Njc4Ylx1Njc3N1x1Njc3Y1x1NjdmMFx1NjgwOVx1NjdkOFx1NjgwYVx1NjdlOVx1NjdiMFx1NjgwY1x1NjdkOVx1NjdiNVx1NjdkYVx1NjdiM1x1NjdkZFx1NjgwMFx1NjdjM1x1''@;'; put 'put ''NjdiOFx1NjdlMlx1NjgwZVx1NjdjMVx1NjdmZFx1NjgzMlx1NjgzM1x1Njg2MFx1Njg2MVx1Njg0ZVx1Njg2Mlx1Njg0NFx1Njg2NFx1Njg4M1x1NjgxZFx1Njg1NVx1Njg2Nlx1Njg0MVx1Njg2N1x1Njg0MFx1NjgzZVx1Njg0YVx1Njg0OVx1NjgyOVx1NjhiNVx1Njg4Zlx1Njg3NFx1Njg3''@;'; put 'put ''N1x1Njg5M1x1Njg2Ylx1NjhjMlx1Njk2ZVx1NjhmY1x1NjkxZlx1NjkyMFx1NjhmOSJdLFsiZTk0MCIsIlx1OTUyN1x1OTUzM1x1OTUzZFx1OTU0M1x1OTU0OFx1OTU0Ylx1OTU1NVx1OTU1YVx1OTU2MFx1OTU2ZVx1OTU3NFx1OTU3NVx1OTU3NyIsNywiXHU5NTgwIiw0Ml0sWyJlOTgwIiwi''@;'; put 'put ''XHU5NWFiIiwzMiwiXHU2OTI0XHU2OGYwXHU2OTBiXHU2OTAxXHU2OTU3XHU2OGUzXHU2OTEwXHU2OTcxXHU2OTM5XHU2OTYwXHU2OTQyXHU2OTVkXHU2OTg0XHU2OTZiXHU2OTgwXHU2OTk4XHU2OTc4XHU2OTM0XHU2OWNjXHU2OTg3XHU2OTg4XHU2OWNlXHU2OTg5XHU2OTY2XHU2OTYzXHU2''@;'; put 'put ''OTc5XHU2OTliXHU2OWE3XHU2OWJiXHU2OWFiXHU2OWFkXHU2OWQ0XHU2OWIxXHU2OWMxXHU2OWNhXHU2OWRmXHU2OTk1XHU2OWUwXHU2OThkXHU2OWZmXHU2YTJmXHU2OWVkXHU2YTE3XHU2YTE4XHU2YTY1XHU2OWYyXHU2YTQ0XHU2YTNlXHU2YWEwXHU2YTUwXHU2YTViXHU2YTM1XHU2YThl''@;'; put 'put ''XHU2YTc5XHU2YTNkXHU2YTI4XHU2YTU4XHU2YTdjXHU2YTkxXHU2YTkwXHU2YWE5XHU2YTk3XHU2YWFiXHU3MzM3XHU3MzUyXHU2YjgxXHU2YjgyXHU2Yjg3XHU2Yjg0XHU2YjkyXHU2YjkzXHU2YjhkXHU2YjlhXHU2YjliXHU2YmExXHU2YmFhXHU4ZjZiXHU4ZjZkXHU4ZjcxXHU4ZjcyXHU4''@;'; put 'put ''ZjczXHU4Zjc1XHU4Zjc2XHU4Zjc4XHU4Zjc3XHU4Zjc5XHU4ZjdhXHU4ZjdjXHU4ZjdlXHU4ZjgxXHU4ZjgyXHU4Zjg0XHU4Zjg3XHU4ZjhiIl0sWyJlYTQwIiwiXHU5NWNjIiwyNywiXHU5NWVjXHU5NWZmXHU5NjA3XHU5NjEzXHU5NjE4XHU5NjFiXHU5NjFlXHU5NjIwXHU5NjIzIiw2LCJc''@;'; put 'put ''dTk2MmJcdTk2MmNcdTk2MmRcdTk2MmZcdTk2MzBcdTk2MzdcdTk2MzhcdTk2MzlcdTk2M2FcdTk2M2VcdTk2NDFcdTk2NDNcdTk2NGFcdTk2NGVcdTk2NGZcdTk2NTFcdTk2NTJcdTk2NTNcdTk2NTZcdTk2NTciXSxbImVhODAiLCJcdTk2NThcdTk2NTlcdTk2NWFcdTk2NWNcdTk2NWRcdTk2''@;'; put 'put ''NWVcdTk2NjBcdTk2NjNcdTk2NjVcdTk2NjZcdTk2NmJcdTk2NmQiLDQsIlx1OTY3M1x1OTY3OCIsMTIsIlx1OTY4N1x1OTY4OVx1OTY4YVx1OGY4ZFx1OGY4ZVx1OGY4Zlx1OGY5OFx1OGY5YVx1OGVjZVx1NjIwYlx1NjIxN1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1''@;'; put 'put ''NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1NzUxMVx1NzUxM1x1NjUzNFx1NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYxNVx1NjYwMFx1NzA4NVx1NjZmN1x1NjYxZFx1NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1''@;'; put 'put ''NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3N1x1NjY4NFx1NjY4Y1x1NjZhN1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1OGQzM1x1OGQzNlx1OGQzYlx1OGQzZFx1OGQ0MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1''@;'; put 'put ''OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1ODljZVx1ODljZlx1ODlkMFx1ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3Zlx1NzI4NFx1NzI4Ylx1NzI4ZFx1NzI4Zlx1NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMCJdLFsiZWI0MCIsIlx1OTY4''@;'; put 'put ''Y1x1OTY4ZVx1OTY5MVx1OTY5Mlx1OTY5M1x1OTY5NVx1OTY5Nlx1OTY5YVx1OTY5Ylx1OTY5ZCIsOSwiXHU5NmE4Iiw3LCJcdTk2YjFcdTk2YjJcdTk2YjRcdTk2YjVcdTk2YjdcdTk2YjhcdTk2YmFcdTk2YmJcdTk2YmZcdTk2YzJcdTk2YzNcdTk2YzhcdTk2Y2FcdTk2Y2JcdTk2ZDBcdTk2''@;'; put 'put ''ZDFcdTk2ZDNcdTk2ZDRcdTk2ZDYiLDksIlx1OTZlMSIsNiwiXHU5NmViIl0sWyJlYjgwIiwiXHU5NmVjXHU5NmVkXHU5NmVlXHU5NmYwXHU5NmYxXHU5NmYyXHU5NmY0XHU5NmY1XHU5NmY4XHU5NmZhXHU5NmZiXHU5NmZjXHU5NmZkXHU5NmZmXHU5NzAyXHU5NzAzXHU5NzA1XHU5NzBhXHU5''@;'; put 'put ''NzBiXHU5NzBjXHU5NzEwXHU5NzExXHU5NzEyXHU5NzE0XHU5NzE1XHU5NzE3Iiw0LCJcdTk3MWRcdTk3MWZcdTk3MjBcdTY0M2ZcdTY0ZDhcdTgwMDRcdTZiZWFcdTZiZjNcdTZiZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFc''@;'; put 'put ''dTZjMjFcdTZjMjlcdTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2NjJcdTUyMTZcdTgwOWZcdTgwOWNcdTgwOTNcdTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgw''@;'; put 'put ''ZTlcdTgwZWFcdTgwZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRcdTgwZWRcdTgxMGRcdTgxMGVcdTgwZjJcdTgwZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNc''@;'; put 'put ''dTgxNTNcdTgxNzRcdTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVhYjVcdTgxODhcdTgxODJcdTgxOTFcdTZlZDVcdTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmIiXSxbImVjNDAiLCJcdTk3MjEiLDgsIlx1OTcy''@;'; put 'put ''Ylx1OTcyY1x1OTcyZVx1OTcyZlx1OTczMVx1OTczMyIsNCwiXHU5NzNhXHU5NzNiXHU5NzNjXHU5NzNkXHU5NzNmIiwxOCwiXHU5NzU0XHU5NzU1XHU5NzU3XHU5NzU4XHU5NzVhXHU5NzVjXHU5NzVkXHU5NzVmXHU5NzYzXHU5NzY0XHU5NzY2XHU5NzY3XHU5NzY4XHU5NzZhIiw3XSxbImVj''@;'; put 'put ''ODAiLCJcdTk3NzJcdTk3NzVcdTk3NzciLDQsIlx1OTc3ZCIsNywiXHU5Nzg2Iiw0LCJcdTk3OGNcdTk3OGVcdTk3OGZcdTk3OTBcdTk3OTNcdTk3OTVcdTk3OTZcdTk3OTdcdTk3OTkiLDQsIlx1ODFjMVx1ODFhNlx1NmIyNFx1NmIzN1x1NmIzOVx1NmI0M1x1NmI0Nlx1NmI1OVx1OThkMVx1''@;'; put 'put ''OThkMlx1OThkM1x1OThkNVx1OThkOVx1OThkYVx1NmJiM1x1NWY0MFx1NmJjMlx1ODlmM1x1NjU5MFx1OWY1MVx1NjU5M1x1NjViY1x1NjVjNlx1NjVjNFx1NjVjM1x1NjVjY1x1NjVjZVx1NjVkMlx1NjVkNlx1NzA4MFx1NzA5Y1x1NzA5Nlx1NzA5ZFx1NzBiYlx1NzBjMFx1NzBiN1x1NzBh''@;'; put 'put ''Ylx1NzBiMVx1NzBlOFx1NzBjYVx1NzExMFx1NzExM1x1NzExNlx1NzEyZlx1NzEzMVx1NzE3M1x1NzE1Y1x1NzE2OFx1NzE0NVx1NzE3Mlx1NzE0YVx1NzE3OFx1NzE3YVx1NzE5OFx1NzFiM1x1NzFiNVx1NzFhOFx1NzFhMFx1NzFlMFx1NzFkNFx1NzFlN1x1NzFmOVx1NzIxZFx1NzIyOFx1''@;'; put 'put ''NzA2Y1x1NzExOFx1NzE2Nlx1NzFiOVx1NjIzZVx1NjIzZFx1NjI0M1x1NjI0OFx1NjI0OVx1NzkzYlx1Nzk0MFx1Nzk0Nlx1Nzk0OVx1Nzk1Ylx1Nzk1Y1x1Nzk1M1x1Nzk1YVx1Nzk2Mlx1Nzk1N1x1Nzk2MFx1Nzk2Zlx1Nzk2N1x1Nzk3YVx1Nzk4NVx1Nzk4YVx1Nzk5YVx1NzlhN1x1Nzli''@;'; put 'put ''M1x1NWZkMVx1NWZkMCJdLFsiZWQ0MCIsIlx1OTc5ZVx1OTc5Zlx1OTdhMVx1OTdhMlx1OTdhNCIsNiwiXHU5N2FjXHU5N2FlXHU5N2IwXHU5N2IxXHU5N2IzXHU5N2I1Iiw0Nl0sWyJlZDgwIiwiXHU5N2U0XHU5N2U1XHU5N2U4XHU5N2VlIiw0LCJcdTk3ZjRcdTk3ZjciLDIzLCJcdTYwM2Nc''@;'; put 'put ''dTYwNWRcdTYwNWFcdTYwNjdcdTYwNDFcdTYwNTlcdTYwNjNcdTYwYWJcdTYxMDZcdTYxMGRcdTYxNWRcdTYxYTlcdTYxOWRcdTYxY2JcdTYxZDFcdTYyMDZcdTgwODBcdTgwN2ZcdTZjOTNcdTZjZjZcdTZkZmNcdTc3ZjZcdTc3ZjhcdTc4MDBcdTc4MDlcdTc4MTdcdTc4MThcdTc4MTFcdTY1''@;'; put 'put ''YWJcdTc4MmRcdTc4MWNcdTc4MWRcdTc4MzlcdTc4M2FcdTc4M2JcdTc4MWZcdTc4M2NcdTc4MjVcdTc4MmNcdTc4MjNcdTc4MjlcdTc4NGVcdTc4NmRcdTc4NTZcdTc4NTdcdTc4MjZcdTc4NTBcdTc4NDdcdTc4NGNcdTc4NmFcdTc4OWJcdTc4OTNcdTc4OWFcdTc4ODdcdTc4OWNcdTc4YTFc''@;'; put 'put ''dTc4YTNcdTc4YjJcdTc4YjlcdTc4YTVcdTc4ZDRcdTc4ZDlcdTc4YzlcdTc4ZWNcdTc4ZjJcdTc5MDVcdTc4ZjRcdTc5MTNcdTc5MjRcdTc5MWVcdTc5MzRcdTlmOWJcdTllZjlcdTllZmJcdTllZmNcdTc2ZjFcdTc3MDRcdTc3MGRcdTc2ZjlcdTc3MDdcdTc3MDhcdTc3MWFcdTc3MjJcdTc3''@;'; put 'put ''MTlcdTc3MmRcdTc3MjZcdTc3MzVcdTc3MzhcdTc3NTBcdTc3NTFcdTc3NDdcdTc3NDNcdTc3NWFcdTc3NjgiXSxbImVlNDAiLCJcdTk4MGYiLDYyXSxbImVlODAiLCJcdTk4NGUiLDMyLCJcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3''@;'; put 'put ''YTBcdTc3YjBcdTc3YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNcdTdmNThcdTdmNjFcdTdmNWZcdThhNDhcdTdmNjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZc''@;'; put 'put ''dTk0ODdcdTk0OGJcdTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0OWNcdTk0YTNcdTk0YTRcdTk0YWJcdTk0YWFcdTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjYiLDQsIlx1OTRiY1x1OTRiZFx1OTRi''@;'; put 'put ''Zlx1OTRjNFx1OTRjOCIsNiwiXHU5NGQwXHU5NGQxXHU5NGQyXHU5NGQ1XHU5NGQ2XHU5NGQ3XHU5NGQ5XHU5NGQ4XHU5NGRiXHU5NGRlXHU5NGRmXHU5NGUwXHU5NGUyXHU5NGU0XHU5NGU1XHU5NGU3XHU5NGU4XHU5NGVhIl0sWyJlZjQwIiwiXHU5ODZmIiw1LCJcdTk4OGJcdTk4OGVcdTk4''@;'; put 'put ''OTJcdTk4OTVcdTk4OTlcdTk4YTNcdTk4YTgiLDM3LCJcdTk4Y2ZcdTk4ZDBcdTk4ZDRcdTk4ZDZcdTk4ZDdcdTk4ZGJcdTk4ZGNcdTk4ZGRcdTk4ZTAiLDRdLFsiZWY4MCIsIlx1OThlNVx1OThlNlx1OThlOSIsMzAsIlx1OTRlOVx1OTRlYlx1OTRlZVx1OTRlZlx1OTRmM1x1OTRmNFx1OTRm''@;'; put 'put ''NVx1OTRmN1x1OTRmOVx1OTRmY1x1OTRmZFx1OTRmZlx1OTUwM1x1OTUwMlx1OTUwNlx1OTUwN1x1OTUwOVx1OTUwYVx1OTUwZFx1OTUwZVx1OTUwZlx1OTUxMiIsNCwiXHU5NTE4XHU5NTFiXHU5NTFkXHU5NTFlXHU5NTFmXHU5NTIyXHU5NTJhXHU5NTJiXHU5NTI5XHU5NTJjXHU5NTMxXHU5''@;'; put 'put ''NTMyXHU5NTM0XHU5NTM2XHU5NTM3XHU5NTM4XHU5NTNjXHU5NTNlXHU5NTNmXHU5NTQyXHU5NTM1XHU5NTQ0XHU5NTQ1XHU5NTQ2XHU5NTQ5XHU5NTRjXHU5NTRlXHU5NTRmXHU5NTUyXHU5NTUzXHU5NTU0XHU5NTU2XHU5NTU3XHU5NTU4XHU5NTU5XHU5NTViXHU5NTVlXHU5NTVmXHU5NTVk''@;'; put 'put ''XHU5NTYxXHU5NTYyXHU5NTY0Iiw4LCJcdTk1NmZcdTk1NzFcdTk1NzJcdTk1NzNcdTk1M2FcdTc3ZTdcdTc3ZWNcdTk2YzlcdTc5ZDVcdTc5ZWRcdTc5ZTNcdTc5ZWJcdTdhMDZcdTVkNDdcdTdhMDNcdTdhMDJcdTdhMWVcdTdhMTQiXSxbImYwNDAiLCJcdTk5MDgiLDQsIlx1OTkwZVx1OTkw''@;'; put 'put ''Zlx1OTkxMSIsMjgsIlx1OTkyZiIsMjZdLFsiZjA4MCIsIlx1OTk0YSIsOSwiXHU5OTU2IiwxMiwiXHU5OTY0XHU5OTY2XHU5OTczXHU5OTc4XHU5OTc5XHU5OTdiXHU5OTdlXHU5OTgyXHU5OTgzXHU5OTg5XHU3YTM5XHU3YTM3XHU3YTUxXHU5ZWNmXHU5OWE1XHU3YTcwXHU3Njg4XHU3Njhl''@;'; put 'put ''XHU3NjkzXHU3Njk5XHU3NmE0XHU3NGRlXHU3NGUwXHU3NTJjXHU5ZTIwXHU5ZTIyXHU5ZTI4Iiw0LCJcdTllMzJcdTllMzFcdTllMzZcdTllMzhcdTllMzdcdTllMzlcdTllM2FcdTllM2VcdTllNDFcdTllNDJcdTllNDRcdTllNDZcdTllNDdcdTllNDhcdTllNDlcdTllNGJcdTllNGNcdTll''@;'; put 'put ''NGVcdTllNTFcdTllNTVcdTllNTdcdTllNWFcdTllNWJcdTllNWNcdTllNWVcdTllNjNcdTllNjYiLDYsIlx1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1''@;'; put 'put ''NzVjMlx1NzVkNlx1NzVjZFx1NzVlM1x1NzVlOFx1NzVlNlx1NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYwYVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYxOSJdLFsiZjE0MCIsIlx1OTk4Y1x1OTk4ZVx1OTk5''@;'; put 'put ''YSIsMTAsIlx1OTlhNlx1OTlhN1x1OTlhOSIsNDddLFsiZjE4MCIsIlx1OTlkOSIsMzIsIlx1NzYxYlx1NzYzY1x1NzYyMlx1NzYyMFx1NzY0MFx1NzYyZFx1NzYzMFx1NzYzZlx1NzYzNVx1NzY0M1x1NzYzZVx1NzYzM1x1NzY0ZFx1NzY1ZVx1NzY1NFx1NzY1Y1x1NzY1Nlx1NzY2Ylx1NzY2''@;'; put 'put ''Zlx1N2ZjYVx1N2FlNlx1N2E3OFx1N2E3OVx1N2E4MFx1N2E4Nlx1N2E4OFx1N2E5NVx1N2FhNlx1N2FhMFx1N2FhY1x1N2FhOFx1N2FhZFx1N2FiM1x1ODg2NFx1ODg2OVx1ODg3Mlx1ODg3ZFx1ODg3Zlx1ODg4Mlx1ODhhMlx1ODhjNlx1ODhiN1x1ODhiY1x1ODhjOVx1ODhlMlx1ODhjZVx1''@;'; put 'put ''ODhlM1x1ODhlNVx1ODhmMVx1ODkxYVx1ODhmY1x1ODhlOFx1ODhmZVx1ODhmMFx1ODkyMVx1ODkxOVx1ODkxM1x1ODkxYlx1ODkwYVx1ODkzNFx1ODkyYlx1ODkzNlx1ODk0MVx1ODk2Nlx1ODk3Ylx1NzU4Ylx1ODBlNVx1NzZiMlx1NzZiNFx1NzdkY1x1ODAxMlx1ODAxNFx1ODAxNlx1ODAx''@;'; put 'put ''Y1x1ODAyMFx1ODAyMlx1ODAyNVx1ODAyNlx1ODAyN1x1ODAyOVx1ODAyOFx1ODAzMVx1ODAwYlx1ODAzNVx1ODA0M1x1ODA0Nlx1ODA0ZFx1ODA1Mlx1ODA2OVx1ODA3MVx1ODk4M1x1OTg3OFx1OTg4MFx1OTg4MyJdLFsiZjI0MCIsIlx1OTlmYSIsNjJdLFsiZjI4MCIsIlx1OWEzOSIsMzIs''@;'; put 'put ''Ilx1OTg4OVx1OTg4Y1x1OTg4ZFx1OTg4Zlx1OTg5NFx1OTg5YVx1OTg5Ylx1OTg5ZVx1OTg5Zlx1OThhMVx1OThhMlx1OThhNVx1OThhNlx1ODY0ZFx1ODY1NFx1ODY2Y1x1ODY2ZVx1ODY3Zlx1ODY3YVx1ODY3Y1x1ODY3Ylx1ODZhOFx1ODY4ZFx1ODY4Ylx1ODZhY1x1ODY5ZFx1ODZhN1x1''@;'; put 'put ''ODZhM1x1ODZhYVx1ODY5M1x1ODZhOVx1ODZiNlx1ODZjNFx1ODZiNVx1ODZjZVx1ODZiMFx1ODZiYVx1ODZiMVx1ODZhZlx1ODZjOVx1ODZjZlx1ODZiNFx1ODZlOVx1ODZmMVx1ODZmMlx1ODZlZFx1ODZmM1x1ODZkMFx1ODcxM1x1ODZkZVx1ODZmNFx1ODZkZlx1ODZkOFx1ODZkMVx1ODcw''@;'; put 'put ''M1x1ODcwN1x1ODZmOFx1ODcwOFx1ODcwYVx1ODcwZFx1ODcwOVx1ODcyM1x1ODczYlx1ODcxZVx1ODcyNVx1ODcyZVx1ODcxYVx1ODczZVx1ODc0OFx1ODczNFx1ODczMVx1ODcyOVx1ODczN1x1ODczZlx1ODc4Mlx1ODcyMlx1ODc3ZFx1ODc3ZVx1ODc3Ylx1ODc2MFx1ODc3MFx1ODc0Y1x1''@;'; put 'put ''ODc2ZVx1ODc4Ylx1ODc1M1x1ODc2M1x1ODc3Y1x1ODc2NFx1ODc1OVx1ODc2NVx1ODc5M1x1ODdhZlx1ODdhOFx1ODdkMiJdLFsiZjM0MCIsIlx1OWE1YSIsMTcsIlx1OWE3Mlx1OWE4M1x1OWE4OVx1OWE4ZFx1OWE4ZVx1OWE5NFx1OWE5NVx1OWE5OVx1OWFhNlx1OWFhOSIsNiwiXHU5YWIy''@;'; put 'put ''XHU5YWIzXHU5YWI0XHU5YWI1XHU5YWI5XHU5YWJiXHU5YWJkXHU5YWJlXHU5YWJmXHU5YWMzXHU5YWM0XHU5YWM2Iiw0LCJcdTlhY2RcdTlhY2VcdTlhY2ZcdTlhZDBcdTlhZDJcdTlhZDRcdTlhZDVcdTlhZDZcdTlhZDdcdTlhZDlcdTlhZGFcdTlhZGJcdTlhZGMiXSxbImYzODAiLCJcdTlh''@;'; put 'put ''ZGRcdTlhZGVcdTlhZTBcdTlhZTJcdTlhZTNcdTlhZTRcdTlhZTVcdTlhZTdcdTlhZThcdTlhZTlcdTlhZWFcdTlhZWNcdTlhZWVcdTlhZjAiLDgsIlx1OWFmYVx1OWFmYyIsNiwiXHU5YjA0XHU5YjA1XHU5YjA2XHU4N2M2XHU4Nzg4XHU4Nzg1XHU4N2FkXHU4Nzk3XHU4NzgzXHU4N2FiXHU4''@;'; put 'put ''N2U1XHU4N2FjXHU4N2I1XHU4N2IzXHU4N2NiXHU4N2QzXHU4N2JkXHU4N2QxXHU4N2MwXHU4N2NhXHU4N2RiXHU4N2VhXHU4N2UwXHU4N2VlXHU4ODE2XHU4ODEzXHU4N2ZlXHU4ODBhXHU4ODFiXHU4ODIxXHU4ODM5XHU4ODNjXHU3ZjM2XHU3ZjQyXHU3ZjQ0XHU3ZjQ1XHU4MjEwXHU3YWZh''@;'; put 'put ''XHU3YWZkXHU3YjA4XHU3YjAzXHU3YjA0XHU3YjE1XHU3YjBhXHU3YjJiXHU3YjBmXHU3YjQ3XHU3YjM4XHU3YjJhXHU3YjE5XHU3YjJlXHU3YjMxXHU3YjIwXHU3YjI1XHU3YjI0XHU3YjMzXHU3YjNlXHU3YjFlXHU3YjU4XHU3YjVhXHU3YjQ1XHU3Yjc1XHU3YjRjXHU3YjVkXHU3YjYwXHU3''@;'; put 'put ''YjZlXHU3YjdiXHU3YjYyXHU3YjcyXHU3YjcxXHU3YjkwXHU3YmE2XHU3YmE3XHU3YmI4XHU3YmFjXHU3YjlkXHU3YmE4XHU3Yjg1XHU3YmFhXHU3YjljXHU3YmEyXHU3YmFiXHU3YmI0XHU3YmQxXHU3YmMxXHU3YmNjXHU3YmRkXHU3YmRhXHU3YmU1XHU3YmU2XHU3YmVhXHU3YzBjXHU3YmZl''@;'; put 'put ''XHU3YmZjXHU3YzBmXHU3YzE2XHU3YzBiIl0sWyJmNDQwIiwiXHU5YjA3XHU5YjA5Iiw1LCJcdTliMTBcdTliMTFcdTliMTJcdTliMTQiLDEwLCJcdTliMjBcdTliMjFcdTliMjJcdTliMjQiLDEwLCJcdTliMzBcdTliMzFcdTliMzMiLDcsIlx1OWIzZFx1OWIzZVx1OWIzZlx1OWI0MFx1OWI0''@;'; put 'put ''Nlx1OWI0YVx1OWI0Ylx1OWI0Y1x1OWI0ZVx1OWI1MFx1OWI1Mlx1OWI1M1x1OWI1NSIsNV0sWyJmNDgwIiwiXHU5YjViIiwzMiwiXHU3YzFmXHU3YzJhXHU3YzI2XHU3YzM4XHU3YzQxXHU3YzQwXHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA0XHU4MWVjXHU4ODQ0XHU4MjIxXHU4MjIyXHU4MjIz''@;'; put 'put ''XHU4MjJkXHU4MjJmXHU4MjI4XHU4MjJiXHU4MjM4XHU4MjNiXHU4MjMzXHU4MjM0XHU4MjNlXHU4MjQ0XHU4MjQ5XHU4MjRiXHU4MjRmXHU4MjVhXHU4MjVmXHU4MjY4XHU4ODdlXHU4ODg1XHU4ODg4XHU4OGQ4XHU4OGRmXHU4OTVlXHU3ZjlkXHU3ZjlmXHU3ZmE3XHU3ZmFmXHU3ZmIwXHU3''@;'; put 'put ''ZmIyXHU3YzdjXHU2NTQ5XHU3YzkxXHU3YzlkXHU3YzljXHU3YzllXHU3Y2EyXHU3Y2IyXHU3Y2JjXHU3Y2JkXHU3Y2MxXHU3Y2M3XHU3Y2NjXHU3Y2NkXHU3Y2M4XHU3Y2M1XHU3Y2Q3XHU3Y2U4XHU4MjZlXHU2NmE4XHU3ZmJmXHU3ZmNlXHU3ZmQ1XHU3ZmU1XHU3ZmUxXHU3ZmU2XHU3ZmU5''@;'; put 'put ''XHU3ZmVlXHU3ZmYzXHU3Y2Y4XHU3ZDc3XHU3ZGE2XHU3ZGFlXHU3ZTQ3XHU3ZTliXHU5ZWI4XHU5ZWI0XHU4ZDczXHU4ZDg0XHU4ZDk0XHU4ZDkxXHU4ZGIxXHU4ZDY3XHU4ZDZkXHU4YzQ3XHU4YzQ5XHU5MTRhXHU5MTUwXHU5MTRlXHU5MTRmXHU5MTY0Il0sWyJmNTQwIiwiXHU5YjdjIiw2''@;'; put 'put ''Ml0sWyJmNTgwIiwiXHU5YmJiIiwzMiwiXHU5MTYyXHU5MTYxXHU5MTcwXHU5MTY5XHU5MTZmXHU5MTdkXHU5MTdlXHU5MTcyXHU5MTc0XHU5MTc5XHU5MThjXHU5MTg1XHU5MTkwXHU5MThkXHU5MTkxXHU5MWEyXHU5MWEzXHU5MWFhXHU5MWFkXHU5MWFlXHU5MWFmXHU5MWI1XHU5MWI0XHU5''@;'; put 'put ''MWJhXHU4YzU1XHU5ZTdlXHU4ZGI4XHU4ZGViXHU4ZTA1XHU4ZTU5XHU4ZTY5XHU4ZGI1XHU4ZGJmXHU4ZGJjXHU4ZGJhXHU4ZGM0XHU4ZGQ2XHU4ZGQ3XHU4ZGRhXHU4ZGRlXHU4ZGNlXHU4ZGNmXHU4ZGRiXHU4ZGM2XHU4ZGVjXHU4ZGY3XHU4ZGY4XHU4ZGUzXHU4ZGY5XHU4ZGZiXHU4ZGU0''@;'; put 'put ''XHU4ZTA5XHU4ZGZkXHU4ZTE0XHU4ZTFkXHU4ZTFmXHU4ZTJjXHU4ZTJlXHU4ZTIzXHU4ZTJmXHU4ZTNhXHU4ZTQwXHU4ZTM5XHU4ZTM1XHU4ZTNkXHU4ZTMxXHU4ZTQ5XHU4ZTQxXHU4ZTQyXHU4ZTUxXHU4ZTUyXHU4ZTRhXHU4ZTcwXHU4ZTc2XHU4ZTdjXHU4ZTZmXHU4ZTc0XHU4ZTg1XHU4''@;'; put 'put ''ZThmXHU4ZTk0XHU4ZTkwXHU4ZTljXHU4ZTllXHU4Yzc4XHU4YzgyXHU4YzhhXHU4Yzg1XHU4Yzk4XHU4Yzk0XHU2NTliXHU4OWQ2XHU4OWRlXHU4OWRhXHU4OWRjIl0sWyJmNjQwIiwiXHU5YmRjIiw2Ml0sWyJmNjgwIiwiXHU5YzFiIiwzMiwiXHU4OWU1XHU4OWViXHU4OWVmXHU4YTNlXHU4''@;'; put 'put ''YjI2XHU5NzUzXHU5NmU5XHU5NmYzXHU5NmVmXHU5NzA2XHU5NzAxXHU5NzA4XHU5NzBmXHU5NzBlXHU5NzJhXHU5NzJkXHU5NzMwXHU5NzNlXHU5ZjgwXHU5ZjgzXHU5Zjg1Iiw1LCJcdTlmOGNcdTllZmVcdTlmMGJcdTlmMGRcdTk2YjlcdTk2YmNcdTk2YmRcdTk2Y2VcdTk2ZDJcdTc3YmZc''@;'; put 'put ''dTk2ZTBcdTkyOGVcdTkyYWVcdTkyYzhcdTkzM2VcdTkzNmFcdTkzY2FcdTkzOGZcdTk0M2VcdTk0NmJcdTljN2ZcdTljODJcdTljODVcdTljODZcdTljODdcdTljODhcdTdhMjNcdTljOGJcdTljOGVcdTljOTBcdTljOTFcdTljOTJcdTljOTRcdTljOTVcdTljOWFcdTljOWJcdTljOWUiLDUs''@;'; put 'put ''Ilx1OWNhNSIsNCwiXHU5Y2FiXHU5Y2FkXHU5Y2FlXHU5Y2IwIiw3LCJcdTljYmFcdTljYmJcdTljYmNcdTljYmRcdTljYzRcdTljYzVcdTljYzZcdTljYzdcdTljY2FcdTljY2IiXSxbImY3NDAiLCJcdTljM2MiLDYyXSxbImY3ODAiLCJcdTljN2JcdTljN2RcdTljN2VcdTljODBcdTljODNc''@;'; put 'put ''dTljODRcdTljODlcdTljOGFcdTljOGNcdTljOGZcdTljOTNcdTljOTZcdTljOTdcdTljOThcdTljOTlcdTljOWRcdTljYWFcdTljYWNcdTljYWZcdTljYjlcdTljYmUiLDQsIlx1OWNjOFx1OWNjOVx1OWNkMVx1OWNkMlx1OWNkYVx1OWNkYlx1OWNlMFx1OWNlMVx1OWNjYyIsNCwiXHU5Y2Qz''@;'; put 'put ''XHU5Y2Q0XHU5Y2Q1XHU5Y2Q3XHU5Y2Q4XHU5Y2Q5XHU5Y2RjXHU5Y2RkXHU5Y2RmXHU5Y2UyXHU5NzdjXHU5Nzg1XHU5NzkxXHU5NzkyXHU5Nzk0XHU5N2FmXHU5N2FiXHU5N2EzXHU5N2IyXHU5N2I0XHU5YWIxXHU5YWIwXHU5YWI3XHU5ZTU4XHU5YWI2XHU5YWJhXHU5YWJjXHU5YWMxXHU5''@;'; put 'put ''YWMwXHU5YWM1XHU5YWMyXHU5YWNiXHU5YWNjXHU5YWQxXHU5YjQ1XHU5YjQzXHU5YjQ3XHU5YjQ5XHU5YjQ4XHU5YjRkXHU5YjUxXHU5OGU4XHU5OTBkXHU5OTJlXHU5OTU1XHU5OTU0XHU5YWRmXHU5YWUxXHU5YWU2XHU5YWVmXHU5YWViXHU5YWZiXHU5YWVkXHU5YWY5XHU5YjA4XHU5YjBm''@;'; put 'put ''XHU5YjEzXHU5YjFmXHU5YjIzXHU5ZWJkXHU5ZWJlXHU3ZTNiXHU5ZTgyXHU5ZTg3XHU5ZTg4XHU5ZThiXHU5ZTkyXHU5M2Q2XHU5ZTlkXHU5ZTlmXHU5ZWRiXHU5ZWRjXHU5ZWRkXHU5ZWUwXHU5ZWRmXHU5ZWUyXHU5ZWU5XHU5ZWU3XHU5ZWU1XHU5ZWVhXHU5ZWVmXHU5ZjIyXHU5ZjJjXHU5''@;'; put 'put ''ZjJmXHU5ZjM5XHU5ZjM3XHU5ZjNkXHU5ZjNlXHU5ZjQ0Il0sWyJmODQwIiwiXHU5Y2UzIiw2Ml0sWyJmODgwIiwiXHU5ZDIyIiwzMl0sWyJmOTQwIiwiXHU5ZDQzIiw2Ml0sWyJmOTgwIiwiXHU5ZDgyIiwzMl0sWyJmYTQwIiwiXHU5ZGEzIiw2Ml0sWyJmYTgwIiwiXHU5ZGUyIiwzMl0sWyJm''@;'; put 'put ''YjQwIiwiXHU5ZTAzIiwyNywiXHU5ZTI0XHU5ZTI3XHU5ZTJlXHU5ZTMwXHU5ZTM0XHU5ZTNiXHU5ZTNjXHU5ZTQwXHU5ZTRkXHU5ZTUwXHU5ZTUyXHU5ZTUzXHU5ZTU0XHU5ZTU2XHU5ZTU5XHU5ZTVkXHU5ZTVmXHU5ZTYwXHU5ZTYxXHU5ZTYyXHU5ZTY1XHU5ZTZlXHU5ZTZmXHU5ZTcyXHU5''@;'; put 'put ''ZTc0Iiw5LCJcdTllODAiXSxbImZiODAiLCJcdTllODFcdTllODNcdTllODRcdTllODVcdTllODZcdTllODlcdTllOGFcdTllOGMiLDUsIlx1OWU5NCIsOCwiXHU5ZTllXHU5ZWEwIiw1LCJcdTllYTdcdTllYThcdTllYTlcdTllYWEiXSxbImZjNDAiLCJcdTllYWIiLDgsIlx1OWViNVx1OWVi''@;'; put 'put ''Nlx1OWViN1x1OWViOVx1OWViYVx1OWViY1x1OWViZiIsNCwiXHU5ZWM1XHU5ZWM2XHU5ZWM3XHU5ZWM4XHU5ZWNhXHU5ZWNiXHU5ZWNjXHU5ZWQwXHU5ZWQyXHU5ZWQzXHU5ZWQ1XHU5ZWQ2XHU5ZWQ3XHU5ZWQ5XHU5ZWRhXHU5ZWRlXHU5ZWUxXHU5ZWUzXHU5ZWU0XHU5ZWU2XHU5ZWU4XHU5''@;'; put 'put ''ZWViXHU5ZWVjXHU5ZWVkXHU5ZWVlXHU5ZWYwIiw4LCJcdTllZmFcdTllZmRcdTllZmYiLDZdLFsiZmM4MCIsIlx1OWYwNiIsNCwiXHU5ZjBjXHU5ZjBmXHU5ZjExXHU5ZjEyXHU5ZjE0XHU5ZjE1XHU5ZjE2XHU5ZjE4XHU5ZjFhIiw1LCJcdTlmMjFcdTlmMjMiLDgsIlx1OWYyZFx1OWYyZVx1''@;'; put 'put ''OWYzMFx1OWYzMSJdLFsiZmQ0MCIsIlx1OWYzMiIsNCwiXHU5ZjM4XHU5ZjNhXHU5ZjNjXHU5ZjNmIiw0LCJcdTlmNDUiLDEwLCJcdTlmNTIiLDM4XSxbImZkODAiLCJcdTlmNzkiLDUsIlx1OWY4MVx1OWY4Mlx1OWY4ZCIsMTEsIlx1OWY5Y1x1OWY5ZFx1OWY5ZVx1OWZhMSIsNCwiXHVmOTJj''@;'; put 'put ''XHVmOTc5XHVmOTk1XHVmOWU3XHVmOWYxIl0sWyJmZTQwIiwiXHVmYTBjXHVmYTBkXHVmYTBlXHVmYTBmXHVmYTExXHVmYTEzXHVmYTE0XHVmYTE4XHVmYTFmXHVmYTIwXHVmYTIxXHVmYTIzXHVmYTI0XHVmYTI3XHVmYTI4XHVmYTI5Il1dJyl9LDc3MzQ4OldlPT57InVzZSBzdHJpY3QiO1dl''@;'; put 'put ''LmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyN10sWyI4MTQxIiwiXHVhYzAyXHVhYzAzXHVhYzA1XHVhYzA2XHVhYzBiIiw0LCJcdWFjMThcdWFjMWVcdWFjMWZcdWFjMjFcdWFjMjJcdWFjMjNcdWFjMjUiLDYsIlx1YWMyZVx1YWMzMlx1YWMzM1x1YWMzNCJdLFsiODE2''@;'; put 'put ''MSIsIlx1YWMzNVx1YWMzNlx1YWMzN1x1YWMzYVx1YWMzYlx1YWMzZFx1YWMzZVx1YWMzZlx1YWM0MSIsOSwiXHVhYzRjXHVhYzRlIiw1LCJcdWFjNTUiXSxbIjgxODEiLCJcdWFjNTZcdWFjNTdcdWFjNTlcdWFjNWFcdWFjNWJcdWFjNWQiLDE4LCJcdWFjNzJcdWFjNzNcdWFjNzVcdWFjNzZc''@;'; put 'put ''dWFjNzlcdWFjN2IiLDQsIlx1YWM4Mlx1YWM4N1x1YWM4OFx1YWM4ZFx1YWM4ZVx1YWM4Zlx1YWM5MVx1YWM5Mlx1YWM5M1x1YWM5NSIsNiwiXHVhYzllXHVhY2EyIiw1LCJcdWFjYWJcdWFjYWRcdWFjYWVcdWFjYjEiLDYsIlx1YWNiYVx1YWNiZVx1YWNiZlx1YWNjMFx1YWNjMlx1YWNjM1x1''@;'; put 'put ''YWNjNVx1YWNjNlx1YWNjN1x1YWNjOVx1YWNjYVx1YWNjYlx1YWNjZCIsNywiXHVhY2Q2XHVhY2Q4Iiw3LCJcdWFjZTJcdWFjZTNcdWFjZTVcdWFjZTZcdWFjZTlcdWFjZWJcdWFjZWRcdWFjZWVcdWFjZjJcdWFjZjRcdWFjZjciLDQsIlx1YWNmZVx1YWNmZlx1YWQwMVx1YWQwMlx1YWQwM1x1''@;'; put 'put ''YWQwNVx1YWQwNyIsNCwiXHVhZDBlXHVhZDEwXHVhZDEyXHVhZDEzIl0sWyI4MjQxIiwiXHVhZDE0XHVhZDE1XHVhZDE2XHVhZDE3XHVhZDE5XHVhZDFhXHVhZDFiXHVhZDFkXHVhZDFlXHVhZDFmXHVhZDIxIiw3LCJcdWFkMmFcdWFkMmJcdWFkMmUiLDVdLFsiODI2MSIsIlx1YWQzNlx1YWQz''@;'; put 'put ''N1x1YWQzOVx1YWQzYVx1YWQzYlx1YWQzZCIsNiwiXHVhZDQ2XHVhZDQ4XHVhZDRhIiw1LCJcdWFkNTFcdWFkNTJcdWFkNTNcdWFkNTVcdWFkNTZcdWFkNTciXSxbIjgyODEiLCJcdWFkNTkiLDcsIlx1YWQ2Mlx1YWQ2NCIsNywiXHVhZDZlXHVhZDZmXHVhZDcxXHVhZDcyXHVhZDc3XHVhZDc4''@;'; put 'put ''XHVhZDc5XHVhZDdhXHVhZDdlXHVhZDgwXHVhZDgzIiw0LCJcdWFkOGFcdWFkOGJcdWFkOGRcdWFkOGVcdWFkOGZcdWFkOTEiLDEwLCJcdWFkOWUiLDUsIlx1YWRhNSIsMTcsIlx1YWRiOCIsNywiXHVhZGMyXHVhZGMzXHVhZGM1XHVhZGM2XHVhZGM3XHVhZGM5Iiw2LCJcdWFkZDJcdWFkZDQi''@;'; put 'put ''LDcsIlx1YWRkZFx1YWRkZVx1YWRkZlx1YWRlMVx1YWRlMlx1YWRlM1x1YWRlNSIsMThdLFsiODM0MSIsIlx1YWRmYVx1YWRmYlx1YWRmZFx1YWRmZVx1YWUwMiIsNSwiXHVhZTBhXHVhZTBjXHVhZTBlIiw1LCJcdWFlMTUiLDddLFsiODM2MSIsIlx1YWUxZCIsMTgsIlx1YWUzMlx1YWUzM1x1''@;'; put 'put ''YWUzNVx1YWUzNlx1YWUzOVx1YWUzYlx1YWUzYyJdLFsiODM4MSIsIlx1YWUzZFx1YWUzZVx1YWUzZlx1YWU0Mlx1YWU0NFx1YWU0N1x1YWU0OFx1YWU0OVx1YWU0Ylx1YWU0Zlx1YWU1MVx1YWU1Mlx1YWU1M1x1YWU1NVx1YWU1NyIsNCwiXHVhZTVlXHVhZTYyXHVhZTYzXHVhZTY0XHVhZTY2''@;'; put 'put ''XHVhZTY3XHVhZTZhXHVhZTZiXHVhZTZkXHVhZTZlXHVhZTZmXHVhZTcxIiw2LCJcdWFlN2FcdWFlN2UiLDUsIlx1YWU4NiIsNSwiXHVhZThkIiw0NiwiXHVhZWJmXHVhZWMxXHVhZWMyXHVhZWMzXHVhZWM1Iiw2LCJcdWFlY2VcdWFlZDIiLDUsIlx1YWVkYVx1YWVkYlx1YWVkZCIsOF0sWyI4''@;'; put 'put ''NDQxIiwiXHVhZWU2XHVhZWU3XHVhZWU5XHVhZWVhXHVhZWVjXHVhZWVlIiw1LCJcdWFlZjVcdWFlZjZcdWFlZjdcdWFlZjlcdWFlZmFcdWFlZmJcdWFlZmQiLDhdLFsiODQ2MSIsIlx1YWYwNlx1YWYwOVx1YWYwYVx1YWYwYlx1YWYwY1x1YWYwZVx1YWYwZlx1YWYxMSIsMThdLFsiODQ4MSIs''@;'; put 'put ''Ilx1YWYyNCIsNywiXHVhZjJlXHVhZjJmXHVhZjMxXHVhZjMzXHVhZjM1Iiw2LCJcdWFmM2VcdWFmNDBcdWFmNDRcdWFmNDVcdWFmNDZcdWFmNDdcdWFmNGEiLDUsIlx1YWY1MSIsMTAsIlx1YWY1ZSIsNSwiXHVhZjY2IiwxOCwiXHVhZjdhIiw1LCJcdWFmODFcdWFmODJcdWFmODNcdWFmODVc''@;'; put 'put ''dWFmODZcdWFmODdcdWFmODkiLDYsIlx1YWY5Mlx1YWY5M1x1YWY5NFx1YWY5NiIsNSwiXHVhZjlkIiwyNiwiXHVhZmJhXHVhZmJiXHVhZmJkXHVhZmJlIl0sWyI4NTQxIiwiXHVhZmJmXHVhZmMxIiw1LCJcdWFmY2FcdWFmY2NcdWFmY2YiLDQsIlx1YWZkNSIsNiwiXHVhZmRkIiw0XSxbIjg1''@;'; put 'put ''NjEiLCJcdWFmZTIiLDUsIlx1YWZlYSIsNSwiXHVhZmYyXHVhZmYzXHVhZmY1XHVhZmY2XHVhZmY3XHVhZmY5Iiw2LCJcdWIwMDJcdWIwMDMiXSxbIjg1ODEiLCJcdWIwMDUiLDYsIlx1YjAwZFx1YjAwZVx1YjAwZlx1YjAxMVx1YjAxMlx1YjAxM1x1YjAxNSIsNiwiXHViMDFlIiw5LCJcdWIw''@;'; put 'put ''MjkiLDI2LCJcdWIwNDZcdWIwNDdcdWIwNDlcdWIwNGJcdWIwNGRcdWIwNGZcdWIwNTBcdWIwNTFcdWIwNTJcdWIwNTZcdWIwNThcdWIwNWFcdWIwNWJcdWIwNWNcdWIwNWUiLDI5LCJcdWIwN2VcdWIwN2ZcdWIwODFcdWIwODJcdWIwODNcdWIwODUiLDYsIlx1YjA4ZVx1YjA5MFx1YjA5MiIs''@;'; put 'put ''NSwiXHViMDliXHViMDlkXHViMDllXHViMGEzXHViMGE0Il0sWyI4NjQxIiwiXHViMGE1XHViMGE2XHViMGE3XHViMGFhXHViMGIwXHViMGIyXHViMGI2XHViMGI3XHViMGI5XHViMGJhXHViMGJiXHViMGJkIiw2LCJcdWIwYzZcdWIwY2EiLDUsIlx1YjBkMiJdLFsiODY2MSIsIlx1YjBkM1x1''@;'; put 'put ''YjBkNVx1YjBkNlx1YjBkN1x1YjBkOSIsNiwiXHViMGUxXHViMGUyXHViMGUzXHViMGU0XHViMGU2IiwxMF0sWyI4NjgxIiwiXHViMGYxIiwyMiwiXHViMTBhXHViMTBkXHViMTBlXHViMTBmXHViMTExXHViMTE0XHViMTE1XHViMTE2XHViMTE3XHViMTFhXHViMTFlIiw0LCJcdWIxMjZcdWIx''@;'; put 'put ''MjdcdWIxMjlcdWIxMmFcdWIxMmJcdWIxMmQiLDYsIlx1YjEzNlx1YjEzYSIsNSwiXHViMTQyXHViMTQzXHViMTQ1XHViMTQ2XHViMTQ3XHViMTQ5Iiw2LCJcdWIxNTJcdWIxNTNcdWIxNTZcdWIxNTdcdWIxNTlcdWIxNWFcdWIxNWJcdWIxNWRcdWIxNWVcdWIxNWZcdWIxNjEiLDIyLCJcdWIx''@;'; put 'put ''N2FcdWIxN2JcdWIxN2RcdWIxN2VcdWIxN2ZcdWIxODFcdWIxODMiLDQsIlx1YjE4YVx1YjE4Y1x1YjE4ZVx1YjE4Zlx1YjE5MFx1YjE5MVx1YjE5NVx1YjE5Nlx1YjE5N1x1YjE5OVx1YjE5YVx1YjE5Ylx1YjE5ZCJdLFsiODc0MSIsIlx1YjE5ZSIsOSwiXHViMWE5IiwxNV0sWyI4NzYxIiwi''@;'; put 'put ''XHViMWI5IiwxOCwiXHViMWNkXHViMWNlXHViMWNmXHViMWQxXHViMWQyXHViMWQzXHViMWQ1Il0sWyI4NzgxIiwiXHViMWQ2Iiw1LCJcdWIxZGVcdWIxZTAiLDcsIlx1YjFlYVx1YjFlYlx1YjFlZFx1YjFlZVx1YjFlZlx1YjFmMSIsNywiXHViMWZhXHViMWZjXHViMWZlIiw1LCJcdWIyMDZc''@;'; put 'put ''dWIyMDdcdWIyMDlcdWIyMGFcdWIyMGQiLDYsIlx1YjIxNlx1YjIxOFx1YjIxYSIsNSwiXHViMjIxIiwxOCwiXHViMjM1Iiw2LCJcdWIyM2QiLDI2LCJcdWIyNTlcdWIyNWFcdWIyNWJcdWIyNWRcdWIyNWVcdWIyNWZcdWIyNjEiLDYsIlx1YjI2YSIsNF0sWyI4ODQxIiwiXHViMjZmIiw0LCJc''@;'; put 'put ''dWIyNzYiLDUsIlx1YjI3ZCIsNiwiXHViMjg2XHViMjg3XHViMjg4XHViMjhhIiw0XSxbIjg4NjEiLCJcdWIyOGZcdWIyOTJcdWIyOTNcdWIyOTVcdWIyOTZcdWIyOTdcdWIyOWIiLDQsIlx1YjJhMlx1YjJhNFx1YjJhN1x1YjJhOFx1YjJhOVx1YjJhYlx1YjJhZFx1YjJhZVx1YjJhZlx1YjJi''@;'; put 'put ''MVx1YjJiMlx1YjJiM1x1YjJiNVx1YjJiNlx1YjJiNyJdLFsiODg4MSIsIlx1YjJiOCIsMTUsIlx1YjJjYVx1YjJjYlx1YjJjZFx1YjJjZVx1YjJjZlx1YjJkMVx1YjJkMyIsNCwiXHViMmRhXHViMmRjXHViMmRlXHViMmRmXHViMmUwXHViMmUxXHViMmUzXHViMmU3XHViMmU5XHViMmVhXHVi''@;'; put 'put ''MmYwXHViMmYxXHViMmYyXHViMmY2XHViMmZjXHViMmZkXHViMmZlXHViMzAyXHViMzAzXHViMzA1XHViMzA2XHViMzA3XHViMzA5Iiw2LCJcdWIzMTJcdWIzMTYiLDUsIlx1YjMxZCIsNTQsIlx1YjM1N1x1YjM1OVx1YjM1YVx1YjM1ZFx1YjM2MFx1YjM2MVx1YjM2Mlx1YjM2MyJdLFsiODk0''@;'; put 'put ''MSIsIlx1YjM2Nlx1YjM2OFx1YjM2YVx1YjM2Y1x1YjM2ZFx1YjM2Zlx1YjM3Mlx1YjM3M1x1YjM3NVx1YjM3Nlx1YjM3N1x1YjM3OSIsNiwiXHViMzgyXHViMzg2Iiw1LCJcdWIzOGQiXSxbIjg5NjEiLCJcdWIzOGVcdWIzOGZcdWIzOTFcdWIzOTJcdWIzOTNcdWIzOTUiLDEwLCJcdWIzYTIi''@;'; put 'put ''LDUsIlx1YjNhOVx1YjNhYVx1YjNhYlx1YjNhZCJdLFsiODk4MSIsIlx1YjNhZSIsMjEsIlx1YjNjNlx1YjNjN1x1YjNjOVx1YjNjYVx1YjNjZFx1YjNjZlx1YjNkMVx1YjNkMlx1YjNkM1x1YjNkNlx1YjNkOFx1YjNkYVx1YjNkY1x1YjNkZVx1YjNkZlx1YjNlMVx1YjNlMlx1YjNlM1x1YjNl''@;'; put 'put ''NVx1YjNlNlx1YjNlN1x1YjNlOSIsMTgsIlx1YjNmZCIsMTgsIlx1YjQxMSIsNiwiXHViNDE5XHViNDFhXHViNDFiXHViNDFkXHViNDFlXHViNDFmXHViNDIxIiw2LCJcdWI0MmFcdWI0MmMiLDcsIlx1YjQzNSIsMTVdLFsiOGE0MSIsIlx1YjQ0NSIsMTAsIlx1YjQ1Mlx1YjQ1M1x1YjQ1NVx1''@;'; put 'put ''YjQ1Nlx1YjQ1N1x1YjQ1OSIsNiwiXHViNDYyXHViNDY0XHViNDY2Il0sWyI4YTYxIiwiXHViNDY3Iiw0LCJcdWI0NmQiLDE4LCJcdWI0ODFcdWI0ODIiXSxbIjhhODEiLCJcdWI0ODMiLDQsIlx1YjQ4OSIsMTksIlx1YjQ5ZSIsNSwiXHViNGE1XHViNGE2XHViNGE3XHViNGE5XHViNGFhXHVi''@;'; put 'put ''NGFiXHViNGFkIiw3LCJcdWI0YjZcdWI0YjhcdWI0YmEiLDUsIlx1YjRjMVx1YjRjMlx1YjRjM1x1YjRjNVx1YjRjNlx1YjRjN1x1YjRjOSIsNiwiXHViNGQxXHViNGQyXHViNGQzXHViNGQ0XHViNGQ2Iiw1LCJcdWI0ZGVcdWI0ZGZcdWI0ZTFcdWI0ZTJcdWI0ZTVcdWI0ZTciLDQsIlx1YjRl''@;'; put 'put ''ZVx1YjRmMFx1YjRmMiIsNSwiXHViNGY5IiwyNiwiXHViNTE2XHViNTE3XHViNTE5XHViNTFhXHViNTFkIl0sWyI4YjQxIiwiXHViNTFlIiw1LCJcdWI1MjZcdWI1MmIiLDQsIlx1YjUzMlx1YjUzM1x1YjUzNVx1YjUzNlx1YjUzN1x1YjUzOSIsNiwiXHViNTQyXHViNTQ2Il0sWyI4YjYxIiwi''@;'; put 'put ''XHViNTQ3XHViNTQ4XHViNTQ5XHViNTRhXHViNTRlXHViNTRmXHViNTUxXHViNTUyXHViNTUzXHViNTU1Iiw2LCJcdWI1NWVcdWI1NjIiLDhdLFsiOGI4MSIsIlx1YjU2YiIsNTIsIlx1YjVhMlx1YjVhM1x1YjVhNVx1YjVhNlx1YjVhN1x1YjVhOVx1YjVhY1x1YjVhZFx1YjVhZVx1YjVhZlx1''@;'; put 'put ''YjViMlx1YjViNiIsNCwiXHViNWJlXHViNWJmXHViNWMxXHViNWMyXHViNWMzXHViNWM1Iiw2LCJcdWI1Y2VcdWI1ZDIiLDUsIlx1YjVkOSIsMTgsIlx1YjVlZCIsMThdLFsiOGM0MSIsIlx1YjYwMCIsMTUsIlx1YjYxMlx1YjYxM1x1YjYxNVx1YjYxNlx1YjYxN1x1YjYxOSIsNF0sWyI4YzYx''@;'; put 'put ''IiwiXHViNjFlIiw2LCJcdWI2MjYiLDUsIlx1YjYyZCIsNiwiXHViNjM1Iiw1XSxbIjhjODEiLCJcdWI2M2IiLDEyLCJcdWI2NDkiLDI2LCJcdWI2NjVcdWI2NjZcdWI2NjdcdWI2NjkiLDUwLCJcdWI2OWVcdWI2OWZcdWI2YTFcdWI2YTJcdWI2YTNcdWI2YTUiLDUsIlx1YjZhZFx1YjZhZVx1''@;'; put 'put ''YjZhZlx1YjZiMFx1YjZiMiIsMTZdLFsiOGQ0MSIsIlx1YjZjMyIsMTYsIlx1YjZkNSIsOF0sWyI4ZDYxIiwiXHViNmRlIiwxNywiXHViNmYxXHViNmYyXHViNmYzXHViNmY1XHViNmY2XHViNmY3XHViNmY5XHViNmZhIl0sWyI4ZDgxIiwiXHViNmZiIiw0LCJcdWI3MDJcdWI3MDNcdWI3MDRc''@;'; put 'put ''dWI3MDYiLDMzLCJcdWI3MmFcdWI3MmJcdWI3MmRcdWI3MmVcdWI3MzEiLDYsIlx1YjczYVx1YjczYyIsNywiXHViNzQ1XHViNzQ2XHViNzQ3XHViNzQ5XHViNzRhXHViNzRiXHViNzRkIiw2LCJcdWI3NTYiLDksIlx1Yjc2MVx1Yjc2Mlx1Yjc2M1x1Yjc2NVx1Yjc2Nlx1Yjc2N1x1Yjc2OSIs''@;'; put 'put ''NiwiXHViNzcyXHViNzc0XHViNzc2Iiw1LCJcdWI3N2VcdWI3N2ZcdWI3ODFcdWI3ODJcdWI3ODNcdWI3ODUiLDYsIlx1Yjc4ZVx1Yjc5M1x1Yjc5NFx1Yjc5NVx1Yjc5YVx1Yjc5Ylx1Yjc5ZFx1Yjc5ZSJdLFsiOGU0MSIsIlx1Yjc5Zlx1YjdhMSIsNiwiXHViN2FhXHViN2FlIiw1LCJcdWI3''@;'; put 'put ''YjZcdWI3YjdcdWI3YjkiLDhdLFsiOGU2MSIsIlx1YjdjMiIsNCwiXHViN2M4XHViN2NhIiwxOV0sWyI4ZTgxIiwiXHViN2RlIiwxMywiXHViN2VlXHViN2VmXHViN2YxXHViN2YyXHViN2YzXHViN2Y1Iiw2LCJcdWI3ZmVcdWI4MDIiLDQsIlx1YjgwYVx1YjgwYlx1YjgwZFx1YjgwZVx1Yjgw''@;'; put 'put ''Zlx1YjgxMSIsNiwiXHViODFhXHViODFjXHViODFlIiw1LCJcdWI4MjZcdWI4MjdcdWI4MjlcdWI4MmFcdWI4MmJcdWI4MmQiLDYsIlx1YjgzNlx1YjgzYSIsNSwiXHViODQxXHViODQyXHViODQzXHViODQ1IiwxMSwiXHViODUyXHViODU0Iiw3LCJcdWI4NWVcdWI4NWZcdWI4NjFcdWI4NjJc''@;'; put 'put ''dWI4NjNcdWI4NjUiLDYsIlx1Yjg2ZVx1Yjg3MFx1Yjg3MiIsNSwiXHViODc5XHViODdhXHViODdiXHViODdkIiw3XSxbIjhmNDEiLCJcdWI4ODUiLDcsIlx1Yjg4ZSIsMTddLFsiOGY2MSIsIlx1YjhhMCIsNywiXHViOGE5Iiw2LCJcdWI4YjFcdWI4YjJcdWI4YjNcdWI4YjVcdWI4YjZcdWI4''@;'; put 'put ''YjdcdWI4YjkiLDRdLFsiOGY4MSIsIlx1YjhiZVx1YjhiZlx1YjhjMlx1YjhjNFx1YjhjNiIsNSwiXHViOGNkXHViOGNlXHViOGNmXHViOGQxXHViOGQyXHViOGQzXHViOGQ1Iiw3LCJcdWI4ZGVcdWI4ZTBcdWI4ZTIiLDUsIlx1YjhlYVx1YjhlYlx1YjhlZFx1YjhlZVx1YjhlZlx1YjhmMSIs''@;'; put 'put ''NiwiXHViOGZhXHViOGZjXHViOGZlIiw1LCJcdWI5MDUiLDE4LCJcdWI5MTkiLDYsIlx1YjkyMSIsMjYsIlx1YjkzZVx1YjkzZlx1Yjk0MVx1Yjk0Mlx1Yjk0M1x1Yjk0NSIsNiwiXHViOTRkXHViOTRlXHViOTUwXHViOTUyIiw1XSxbIjkwNDEiLCJcdWI5NWFcdWI5NWJcdWI5NWRcdWI5NWVc''@;'; put 'put ''dWI5NWZcdWI5NjEiLDYsIlx1Yjk2YVx1Yjk2Y1x1Yjk2ZSIsNSwiXHViOTc2XHViOTc3XHViOTc5XHViOTdhXHViOTdiXHViOTdkIl0sWyI5MDYxIiwiXHViOTdlIiw1LCJcdWI5ODZcdWI5ODhcdWI5OGJcdWI5OGNcdWI5OGYiLDE1XSxbIjkwODEiLCJcdWI5OWYiLDEyLCJcdWI5YWVcdWI5''@;'; put 'put ''YWZcdWI5YjFcdWI5YjJcdWI5YjNcdWI5YjUiLDYsIlx1YjliZVx1YjljMFx1YjljMiIsNSwiXHViOWNhXHViOWNiXHViOWNkXHViOWQzIiw0LCJcdWI5ZGFcdWI5ZGNcdWI5ZGZcdWI5ZTBcdWI5ZTJcdWI5ZTZcdWI5ZTdcdWI5ZTlcdWI5ZWFcdWI5ZWJcdWI5ZWQiLDYsIlx1YjlmNlx1Yjlm''@;'; put 'put ''YiIsNCwiXHViYTAyIiw1LCJcdWJhMDkiLDExLCJcdWJhMTYiLDMzLCJcdWJhM2FcdWJhM2JcdWJhM2RcdWJhM2VcdWJhM2ZcdWJhNDFcdWJhNDNcdWJhNDRcdWJhNDVcdWJhNDYiXSxbIjkxNDEiLCJcdWJhNDdcdWJhNGFcdWJhNGNcdWJhNGZcdWJhNTBcdWJhNTFcdWJhNTJcdWJhNTZcdWJh''@;'; put 'put ''NTdcdWJhNTlcdWJhNWFcdWJhNWJcdWJhNWQiLDYsIlx1YmE2Nlx1YmE2YSIsNV0sWyI5MTYxIiwiXHViYTcyXHViYTczXHViYTc1XHViYTc2XHViYTc3XHViYTc5Iiw5LCJcdWJhODZcdWJhODhcdWJhODlcdWJhOGFcdWJhOGJcdWJhOGQiLDVdLFsiOTE4MSIsIlx1YmE5MyIsMjAsIlx1YmFh''@;'; put 'put ''YVx1YmFhZFx1YmFhZVx1YmFhZlx1YmFiMVx1YmFiMyIsNCwiXHViYWJhXHViYWJjXHViYWJlIiw1LCJcdWJhYzVcdWJhYzZcdWJhYzdcdWJhYzkiLDE0LCJcdWJhZGEiLDMzLCJcdWJhZmRcdWJhZmVcdWJhZmZcdWJiMDFcdWJiMDJcdWJiMDNcdWJiMDUiLDcsIlx1YmIwZVx1YmIxMFx1YmIx''@;'; put 'put ''MiIsNSwiXHViYjE5XHViYjFhXHViYjFiXHViYjFkXHViYjFlXHViYjFmXHViYjIxIiw2XSxbIjkyNDEiLCJcdWJiMjhcdWJiMmFcdWJiMmMiLDcsIlx1YmIzN1x1YmIzOVx1YmIzYVx1YmIzZiIsNCwiXHViYjQ2XHViYjQ4XHViYjRhXHViYjRiXHViYjRjXHViYjRlXHViYjUxXHViYjUyIl0s''@;'; put 'put ''WyI5MjYxIiwiXHViYjUzXHViYjU1XHViYjU2XHViYjU3XHViYjU5Iiw3LCJcdWJiNjJcdWJiNjQiLDcsIlx1YmI2ZCIsNF0sWyI5MjgxIiwiXHViYjcyIiwyMSwiXHViYjg5XHViYjhhXHViYjhiXHViYjhkXHViYjhlXHViYjhmXHViYjkxIiwxOCwiXHViYmE1XHViYmE2XHViYmE3XHViYmE5''@;'; put 'put ''XHViYmFhXHViYmFiXHViYmFkIiw2LCJcdWJiYjVcdWJiYjZcdWJiYjgiLDcsIlx1YmJjMVx1YmJjMlx1YmJjM1x1YmJjNVx1YmJjNlx1YmJjN1x1YmJjOSIsNiwiXHViYmQxXHViYmQyXHViYmQ0IiwzNSwiXHViYmZhXHViYmZiXHViYmZkXHViYmZlXHViYzAxIl0sWyI5MzQxIiwiXHViYzAz''@;'; put 'put ''Iiw0LCJcdWJjMGFcdWJjMGVcdWJjMTBcdWJjMTJcdWJjMTNcdWJjMTlcdWJjMWFcdWJjMjBcdWJjMjFcdWJjMjJcdWJjMjNcdWJjMjZcdWJjMjhcdWJjMmFcdWJjMmJcdWJjMmNcdWJjMmVcdWJjMmZcdWJjMzJcdWJjMzNcdWJjMzUiXSxbIjkzNjEiLCJcdWJjMzZcdWJjMzdcdWJjMzkiLDYs''@;'; put 'put ''Ilx1YmM0Mlx1YmM0Nlx1YmM0N1x1YmM0OFx1YmM0YVx1YmM0Ylx1YmM0ZVx1YmM0Zlx1YmM1MSIsOF0sWyI5MzgxIiwiXHViYzVhXHViYzViXHViYzVjXHViYzVlIiwzNywiXHViYzg2XHViYzg3XHViYzg5XHViYzhhXHViYzhkXHViYzhmIiw0LCJcdWJjOTZcdWJjOThcdWJjOWIiLDQsIlx1''@;'; put 'put ''YmNhMlx1YmNhM1x1YmNhNVx1YmNhNlx1YmNhOSIsNiwiXHViY2IyXHViY2I2Iiw1LCJcdWJjYmVcdWJjYmZcdWJjYzFcdWJjYzJcdWJjYzNcdWJjYzUiLDcsIlx1YmNjZVx1YmNkMlx1YmNkM1x1YmNkNFx1YmNkNlx1YmNkN1x1YmNkOVx1YmNkYVx1YmNkYlx1YmNkZCIsMjIsIlx1YmNmN1x1''@;'; put 'put ''YmNmOVx1YmNmYVx1YmNmYlx1YmNmZCJdLFsiOTQ0MSIsIlx1YmNmZSIsNSwiXHViZDA2XHViZDA4XHViZDBhIiw1LCJcdWJkMTFcdWJkMTJcdWJkMTNcdWJkMTUiLDhdLFsiOTQ2MSIsIlx1YmQxZSIsNSwiXHViZDI1Iiw2LCJcdWJkMmQiLDEyXSxbIjk0ODEiLCJcdWJkM2EiLDUsIlx1YmQ0''@;'; put 'put ''MSIsNiwiXHViZDRhXHViZDRiXHViZDRkXHViZDRlXHViZDRmXHViZDUxIiw2LCJcdWJkNWEiLDksIlx1YmQ2NVx1YmQ2Nlx1YmQ2N1x1YmQ2OSIsMjIsIlx1YmQ4Mlx1YmQ4M1x1YmQ4NVx1YmQ4Nlx1YmQ4YiIsNCwiXHViZDkyXHViZDk0XHViZDk2XHViZDk3XHViZDk4XHViZDliXHViZDlk''@;'; put 'put ''Iiw2LCJcdWJkYTUiLDEwLCJcdWJkYjEiLDYsIlx1YmRiOSIsMjRdLFsiOTU0MSIsIlx1YmRkMlx1YmRkM1x1YmRkNlx1YmRkN1x1YmRkOVx1YmRkYVx1YmRkYlx1YmRkZCIsMTEsIlx1YmRlYSIsNSwiXHViZGYxIl0sWyI5NTYxIiwiXHViZGYyXHViZGYzXHViZGY1XHViZGY2XHViZGY3XHVi''@;'; put 'put ''ZGY5Iiw2LCJcdWJlMDFcdWJlMDJcdWJlMDRcdWJlMDYiLDUsIlx1YmUwZVx1YmUwZlx1YmUxMVx1YmUxMlx1YmUxMyJdLFsiOTU4MSIsIlx1YmUxNSIsNiwiXHViZTFlXHViZTIwIiwzNSwiXHViZTQ2XHViZTQ3XHViZTQ5XHViZTRhXHViZTRiXHViZTRkXHViZTRmIiw0LCJcdWJlNTZcdWJl''@;'; put 'put ''NThcdWJlNWNcdWJlNWRcdWJlNWVcdWJlNWZcdWJlNjJcdWJlNjNcdWJlNjVcdWJlNjZcdWJlNjdcdWJlNjlcdWJlNmIiLDQsIlx1YmU3Mlx1YmU3NiIsNCwiXHViZTdlXHViZTdmXHViZTgxXHViZTgyXHViZTgzXHViZTg1Iiw2LCJcdWJlOGVcdWJlOTIiLDUsIlx1YmU5YSIsMTMsIlx1YmVh''@;'; put 'put ''OSIsMTRdLFsiOTY0MSIsIlx1YmViOCIsMjMsIlx1YmVkMlx1YmVkMyJdLFsiOTY2MSIsIlx1YmVkNVx1YmVkNlx1YmVkOSIsNiwiXHViZWUxXHViZWUyXHViZWU2Iiw1LCJcdWJlZWQiLDhdLFsiOTY4MSIsIlx1YmVmNiIsMTAsIlx1YmYwMiIsNSwiXHViZjBhIiwxMywiXHViZjFhXHViZjFl''@;'; put 'put ''IiwzMywiXHViZjQyXHViZjQzXHViZjQ1XHViZjQ2XHViZjQ3XHViZjQ5Iiw2LCJcdWJmNTJcdWJmNTNcdWJmNTRcdWJmNTYiLDQ0XSxbIjk3NDEiLCJcdWJmODMiLDE2LCJcdWJmOTUiLDhdLFsiOTc2MSIsIlx1YmY5ZSIsMTcsIlx1YmZiMSIsN10sWyI5NzgxIiwiXHViZmI5IiwxMSwiXHVi''@;'; put 'put ''ZmM2Iiw1LCJcdWJmY2VcdWJmY2ZcdWJmZDFcdWJmZDJcdWJmZDNcdWJmZDUiLDYsIlx1YmZkZFx1YmZkZVx1YmZlMFx1YmZlMiIsODksIlx1YzAzZFx1YzAzZVx1YzAzZiJdLFsiOTg0MSIsIlx1YzA0MCIsMTYsIlx1YzA1MiIsNSwiXHVjMDU5XHVjMDVhXHVjMDViIl0sWyI5ODYxIiwiXHVj''@;'; put 'put ''MDVkXHVjMDVlXHVjMDVmXHVjMDYxIiw2LCJcdWMwNmEiLDE1XSxbIjk4ODEiLCJcdWMwN2EiLDIxLCJcdWMwOTJcdWMwOTNcdWMwOTVcdWMwOTZcdWMwOTdcdWMwOTkiLDYsIlx1YzBhMlx1YzBhNFx1YzBhNiIsNSwiXHVjMGFlXHVjMGIxXHVjMGIyXHVjMGI3Iiw0LCJcdWMwYmVcdWMwYzJc''@;'; put 'put ''dWMwYzNcdWMwYzRcdWMwYzZcdWMwYzdcdWMwY2FcdWMwY2JcdWMwY2RcdWMwY2VcdWMwY2ZcdWMwZDEiLDYsIlx1YzBkYVx1YzBkZSIsNSwiXHVjMGU2XHVjMGU3XHVjMGU5XHVjMGVhXHVjMGViXHVjMGVkIiw2LCJcdWMwZjZcdWMwZjhcdWMwZmEiLDUsIlx1YzEwMVx1YzEwMlx1YzEwM1x1''@;'; put 'put ''YzEwNVx1YzEwNlx1YzEwN1x1YzEwOSIsNiwiXHVjMTExXHVjMTEyXHVjMTEzXHVjMTE0XHVjMTE2Iiw1LCJcdWMxMjFcdWMxMjJcdWMxMjVcdWMxMjhcdWMxMjlcdWMxMmFcdWMxMmJcdWMxMmUiXSxbIjk5NDEiLCJcdWMxMzJcdWMxMzNcdWMxMzRcdWMxMzVcdWMxMzdcdWMxM2FcdWMxM2Jc''@;'; put 'put ''dWMxM2RcdWMxM2VcdWMxM2ZcdWMxNDEiLDYsIlx1YzE0YVx1YzE0ZSIsNSwiXHVjMTU2XHVjMTU3Il0sWyI5OTYxIiwiXHVjMTU5XHVjMTVhXHVjMTViXHVjMTVkIiw2LCJcdWMxNjZcdWMxNmEiLDUsIlx1YzE3MVx1YzE3Mlx1YzE3M1x1YzE3NVx1YzE3Nlx1YzE3N1x1YzE3OVx1YzE3YVx1''@;'; put 'put ''YzE3YiJdLFsiOTk4MSIsIlx1YzE3YyIsOCwiXHVjMTg2Iiw1LCJcdWMxOGZcdWMxOTFcdWMxOTJcdWMxOTNcdWMxOTVcdWMxOTciLDQsIlx1YzE5ZVx1YzFhMFx1YzFhMlx1YzFhM1x1YzFhNFx1YzFhNlx1YzFhN1x1YzFhYVx1YzFhYlx1YzFhZFx1YzFhZVx1YzFhZlx1YzFiMSIsMTEsIlx1''@;'; put 'put ''YzFiZSIsNSwiXHVjMWM1XHVjMWM2XHVjMWM3XHVjMWM5XHVjMWNhXHVjMWNiXHVjMWNkIiw2LCJcdWMxZDVcdWMxZDZcdWMxZDkiLDYsIlx1YzFlMVx1YzFlMlx1YzFlM1x1YzFlNVx1YzFlNlx1YzFlN1x1YzFlOSIsNiwiXHVjMWYyXHVjMWY0Iiw3LCJcdWMxZmVcdWMxZmZcdWMyMDFcdWMy''@;'; put 'put ''MDJcdWMyMDNcdWMyMDUiLDYsIlx1YzIwZVx1YzIxMFx1YzIxMiIsNSwiXHVjMjFhXHVjMjFiXHVjMjFkXHVjMjFlXHVjMjIxXHVjMjIyXHVjMjIzIl0sWyI5YTQxIiwiXHVjMjI0XHVjMjI1XHVjMjI2XHVjMjI3XHVjMjJhXHVjMjJjXHVjMjJlXHVjMjMwXHVjMjMzXHVjMjM1IiwxNl0sWyI5''@;'; put 'put ''YTYxIiwiXHVjMjQ2XHVjMjQ3XHVjMjQ5Iiw2LCJcdWMyNTJcdWMyNTNcdWMyNTVcdWMyNTZcdWMyNTdcdWMyNTkiLDYsIlx1YzI2MVx1YzI2Mlx1YzI2M1x1YzI2NFx1YzI2NiJdLFsiOWE4MSIsIlx1YzI2NyIsNCwiXHVjMjZlXHVjMjZmXHVjMjcxXHVjMjcyXHVjMjczXHVjMjc1Iiw2LCJc''@;'; put 'put ''dWMyN2VcdWMyODBcdWMyODIiLDUsIlx1YzI4YSIsNSwiXHVjMjkxIiw2LCJcdWMyOTlcdWMyOWFcdWMyOWNcdWMyOWUiLDUsIlx1YzJhNlx1YzJhN1x1YzJhOVx1YzJhYVx1YzJhYlx1YzJhZSIsNSwiXHVjMmI2XHVjMmI4XHVjMmJhIiwzMywiXHVjMmRlXHVjMmRmXHVjMmUxXHVjMmUyXHVj''@;'; put 'put ''MmU1Iiw1LCJcdWMyZWVcdWMyZjBcdWMyZjJcdWMyZjNcdWMyZjRcdWMyZjVcdWMyZjdcdWMyZmFcdWMyZmRcdWMyZmVcdWMyZmZcdWMzMDEiLDYsIlx1YzMwYVx1YzMwYlx1YzMwZVx1YzMwZiJdLFsiOWI0MSIsIlx1YzMxMFx1YzMxMVx1YzMxMlx1YzMxNlx1YzMxN1x1YzMxOVx1YzMxYVx1''@;'; put 'put ''YzMxYlx1YzMxZCIsNiwiXHVjMzI2XHVjMzI3XHVjMzJhIiw4XSxbIjliNjEiLCJcdWMzMzMiLDE3LCJcdWMzNDYiLDddLFsiOWI4MSIsIlx1YzM0ZSIsMjUsIlx1YzM2YVx1YzM2Ylx1YzM2ZFx1YzM2ZVx1YzM2Zlx1YzM3MVx1YzM3MyIsNCwiXHVjMzdhXHVjMzdiXHVjMzdlIiw1LCJcdWMz''@;'; put 'put ''ODVcdWMzODZcdWMzODdcdWMzODlcdWMzOGFcdWMzOGJcdWMzOGQiLDUwLCJcdWMzYzEiLDIyLCJcdWMzZGEiXSxbIjljNDEiLCJcdWMzZGJcdWMzZGRcdWMzZGVcdWMzZTFcdWMzZTMiLDQsIlx1YzNlYVx1YzNlYlx1YzNlY1x1YzNlZSIsNSwiXHVjM2Y2XHVjM2Y3XHVjM2Y5Iiw1XSxbIjlj''@;'; put 'put ''NjEiLCJcdWMzZmYiLDgsIlx1YzQwOSIsNiwiXHVjNDExIiw5XSxbIjljODEiLCJcdWM0MWIiLDgsIlx1YzQyNSIsNiwiXHVjNDJkXHVjNDJlXHVjNDJmXHVjNDMxXHVjNDMyXHVjNDMzXHVjNDM1Iiw2LCJcdWM0M2UiLDksIlx1YzQ0OSIsMjYsIlx1YzQ2Nlx1YzQ2N1x1YzQ2OVx1YzQ2YVx1''@;'; put 'put ''YzQ2Ylx1YzQ2ZCIsNiwiXHVjNDc2XHVjNDc3XHVjNDc4XHVjNDdhIiw1LCJcdWM0ODEiLDE4LCJcdWM0OTUiLDYsIlx1YzQ5ZCIsMTJdLFsiOWQ0MSIsIlx1YzRhYSIsMTMsIlx1YzRiOVx1YzRiYVx1YzRiYlx1YzRiZCIsOF0sWyI5ZDYxIiwiXHVjNGM2IiwyNV0sWyI5ZDgxIiwiXHVjNGUw''@;'; put 'put ''Iiw4LCJcdWM0ZWEiLDUsIlx1YzRmMlx1YzRmM1x1YzRmNVx1YzRmNlx1YzRmN1x1YzRmOVx1YzRmYlx1YzRmY1x1YzRmZFx1YzRmZVx1YzUwMiIsOSwiXHVjNTBkXHVjNTBlXHVjNTBmXHVjNTExXHVjNTEyXHVjNTEzXHVjNTE1Iiw2LCJcdWM1MWQiLDEwLCJcdWM1MmFcdWM1MmJcdWM1MmRc''@;'; put 'put ''dWM1MmVcdWM1MmZcdWM1MzEiLDYsIlx1YzUzYVx1YzUzY1x1YzUzZSIsNSwiXHVjNTQ2XHVjNTQ3XHVjNTRiXHVjNTRmXHVjNTUwXHVjNTUxXHVjNTUyXHVjNTU2XHVjNTVhXHVjNTViXHVjNTVjXHVjNTVmXHVjNTYyXHVjNTYzXHVjNTY1XHVjNTY2XHVjNTY3XHVjNTY5Iiw2LCJcdWM1NzJc''@;'; put 'put ''dWM1NzYiLDUsIlx1YzU3ZVx1YzU3Zlx1YzU4MVx1YzU4Mlx1YzU4M1x1YzU4NVx1YzU4Nlx1YzU4OFx1YzU4OVx1YzU4YVx1YzU4Ylx1YzU4ZVx1YzU5MFx1YzU5Mlx1YzU5M1x1YzU5NCJdLFsiOWU0MSIsIlx1YzU5Nlx1YzU5OVx1YzU5YVx1YzU5Ylx1YzU5ZFx1YzU5ZVx1YzU5Zlx1YzVh''@;'; put 'put ''MSIsNywiXHVjNWFhIiw5LCJcdWM1YjYiXSxbIjllNjEiLCJcdWM1YjdcdWM1YmFcdWM1YmYiLDQsIlx1YzVjYlx1YzVjZFx1YzVjZlx1YzVkMlx1YzVkM1x1YzVkNVx1YzVkNlx1YzVkN1x1YzVkOSIsNiwiXHVjNWUyXHVjNWU0XHVjNWU2XHVjNWU3Il0sWyI5ZTgxIiwiXHVjNWU4XHVjNWU5''@;'; put 'put ''XHVjNWVhXHVjNWViXHVjNWVmXHVjNWYxXHVjNWYyXHVjNWYzXHVjNWY1XHVjNWY4XHVjNWY5XHVjNWZhXHVjNWZiXHVjNjAyXHVjNjAzXHVjNjA0XHVjNjA5XHVjNjBhXHVjNjBiXHVjNjBkXHVjNjBlXHVjNjBmXHVjNjExIiw2LCJcdWM2MWFcdWM2MWQiLDYsIlx1YzYyNlx1YzYyN1x1YzYy''@;'; put 'put ''OVx1YzYyYVx1YzYyYlx1YzYyZlx1YzYzMVx1YzYzMlx1YzYzNlx1YzYzOFx1YzYzYVx1YzYzY1x1YzYzZFx1YzYzZVx1YzYzZlx1YzY0Mlx1YzY0M1x1YzY0NVx1YzY0Nlx1YzY0N1x1YzY0OSIsNiwiXHVjNjUyXHVjNjU2Iiw1LCJcdWM2NWVcdWM2NWZcdWM2NjEiLDEwLCJcdWM2NmRcdWM2''@;'; put 'put ''NmVcdWM2NzBcdWM2NzIiLDUsIlx1YzY3YVx1YzY3Ylx1YzY3ZFx1YzY3ZVx1YzY3Zlx1YzY4MSIsNiwiXHVjNjhhXHVjNjhjXHVjNjhlIiw1LCJcdWM2OTZcdWM2OTdcdWM2OTlcdWM2OWFcdWM2OWJcdWM2OWQiLDYsIlx1YzZhNiJdLFsiOWY0MSIsIlx1YzZhOFx1YzZhYSIsNSwiXHVjNmIy''@;'; put 'put ''XHVjNmIzXHVjNmI1XHVjNmI2XHVjNmI3XHVjNmJiIiw0LCJcdWM2YzJcdWM2YzRcdWM2YzYiLDUsIlx1YzZjZSJdLFsiOWY2MSIsIlx1YzZjZlx1YzZkMVx1YzZkMlx1YzZkM1x1YzZkNSIsNiwiXHVjNmRlXHVjNmRmXHVjNmUyIiw1LCJcdWM2ZWFcdWM2ZWJcdWM2ZWRcdWM2ZWVcdWM2ZWZc''@;'; put 'put ''dWM2ZjFcdWM2ZjIiXSxbIjlmODEiLCJcdWM2ZjMiLDQsIlx1YzZmYVx1YzZmYlx1YzZmY1x1YzZmZSIsNSwiXHVjNzA2XHVjNzA3XHVjNzA5XHVjNzBhXHVjNzBiXHVjNzBkIiw2LCJcdWM3MTZcdWM3MThcdWM3MWEiLDUsIlx1YzcyMlx1YzcyM1x1YzcyNVx1YzcyNlx1YzcyN1x1YzcyOSIs''@;'; put 'put ''NiwiXHVjNzMyXHVjNzM0XHVjNzM2XHVjNzM4XHVjNzM5XHVjNzNhXHVjNzNiXHVjNzNlXHVjNzNmXHVjNzQxXHVjNzQyXHVjNzQzXHVjNzQ1Iiw0LCJcdWM3NGJcdWM3NGVcdWM3NTBcdWM3NTlcdWM3NWFcdWM3NWJcdWM3NWRcdWM3NWVcdWM3NWZcdWM3NjEiLDYsIlx1Yzc2OVx1Yzc2YVx1''@;'; put 'put ''Yzc2YyIsNywiXHVjNzc2XHVjNzc3XHVjNzc5XHVjNzdhXHVjNzdiXHVjNzdmXHVjNzgwXHVjNzgxXHVjNzgyXHVjNzg2XHVjNzhiXHVjNzhjXHVjNzhkXHVjNzhmXHVjNzkyXHVjNzkzXHVjNzk1XHVjNzk5XHVjNzliIiw0LCJcdWM3YTJcdWM3YTciLDQsIlx1YzdhZVx1YzdhZlx1YzdiMVx1''@;'; put 'put ''YzdiMlx1YzdiM1x1YzdiNVx1YzdiNlx1YzdiNyJdLFsiYTA0MSIsIlx1YzdiOFx1YzdiOVx1YzdiYVx1YzdiYlx1YzdiZVx1YzdjMiIsNSwiXHVjN2NhXHVjN2NiXHVjN2NkXHVjN2NmXHVjN2QxIiw2LCJcdWM3ZDlcdWM3ZGFcdWM3ZGJcdWM3ZGMiXSxbImEwNjEiLCJcdWM3ZGUiLDUsIlx1''@;'; put 'put ''YzdlNVx1YzdlNlx1YzdlN1x1YzdlOVx1YzdlYVx1YzdlYlx1YzdlZCIsMTNdLFsiYTA4MSIsIlx1YzdmYiIsNCwiXHVjODAyXHVjODAzXHVjODA1XHVjODA2XHVjODA3XHVjODA5XHVjODBiIiw0LCJcdWM4MTJcdWM4MTRcdWM4MTciLDQsIlx1YzgxZVx1YzgxZlx1YzgyMVx1YzgyMlx1Yzgy''@;'; put 'put ''M1x1YzgyNSIsNiwiXHVjODJlXHVjODMwXHVjODMyIiw1LCJcdWM4MzlcdWM4M2FcdWM4M2JcdWM4M2RcdWM4M2VcdWM4M2ZcdWM4NDEiLDYsIlx1Yzg0YVx1Yzg0Ylx1Yzg0ZSIsNSwiXHVjODU1IiwyNiwiXHVjODcyXHVjODczXHVjODc1XHVjODc2XHVjODc3XHVjODc5XHVjODdiIiw0LCJc''@;'; put 'put ''dWM4ODJcdWM4ODRcdWM4ODhcdWM4ODlcdWM4OGFcdWM4OGUiLDUsIlx1Yzg5NSIsNywiXHVjODllXHVjOGEwXHVjOGEyXHVjOGEzXHVjOGE0Il0sWyJhMTQxIiwiXHVjOGE1XHVjOGE2XHVjOGE3XHVjOGE5IiwxOCwiXHVjOGJlXHVjOGJmXHVjOGMwXHVjOGMxIl0sWyJhMTYxIiwiXHVjOGMy''@;'; put 'put ''XHVjOGMzXHVjOGM1XHVjOGM2XHVjOGM3XHVjOGM5XHVjOGNhXHVjOGNiXHVjOGNkIiw2LCJcdWM4ZDZcdWM4ZDhcdWM4ZGEiLDUsIlx1YzhlMlx1YzhlM1x1YzhlNSJdLFsiYTE4MSIsIlx1YzhlNiIsMTQsIlx1YzhmNiIsNSwiXHVjOGZlXHVjOGZmXHVjOTAxXHVjOTAyXHVjOTAzXHVjOTA3''@;'; put 'put ''Iiw0LCJcdWM5MGVcdTMwMDBcdTMwMDFcdTMwMDJceGI3XHUyMDI1XHUyMDI2XHhhOFx1MzAwM1x4YWRcdTIwMTVcdTIyMjVcdWZmM2NcdTIyM2NcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMTRcdTMwMTVcdTMwMDgiLDksIlx4YjFceGQ3XHhmN1x1MjI2MFx1MjI2NFx1MjI2NVx1MjIx''@;'; put 'put ''ZVx1MjIzNFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdTIxMmJcdWZmZTBcdWZmZTFcdWZmZTVcdTI2NDJcdTI2NDBcdTIyMjBcdTIyYTVcdTIzMTJcdTIyMDJcdTIyMDdcdTIyNjFcdTIyNTJceGE3XHUyMDNiXHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWEx''@;'; put 'put ''XHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJkXHUyNWJjXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUyMTk0XHUzMDEzXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5XHUy''@;'; put 'put ''MjI3XHUyMjI4XHVmZmUyIl0sWyJhMjQxIiwiXHVjOTEwXHVjOTEyIiw1LCJcdWM5MTkiLDE4XSxbImEyNjEiLCJcdWM5MmQiLDYsIlx1YzkzNSIsMThdLFsiYTI4MSIsIlx1Yzk0OCIsNywiXHVjOTUyXHVjOTUzXHVjOTU1XHVjOTU2XHVjOTU3XHVjOTU5Iiw2LCJcdWM5NjJcdWM5NjQiLDcs''@;'; put 'put ''Ilx1Yzk2ZFx1Yzk2ZVx1Yzk2Zlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwM1x4YjRcdWZmNWVcdTAyYzdcdTAyZDhcdTAyZGRcdTAyZGFcdTAyZDlceGI4XHUwMmRiXHhhMVx4YmZcdTAyZDBcdTIyMmVcdTIyMTFcdTIyMGZceGE0XHUyMTA5XHUyMDMwXHUyNWMxXHUyNWMwXHUyNWI3XHUyNWI2''@;'; put 'put ''XHUyNjY0XHUyNjYwXHUyNjYxXHUyNjY1XHUyNjY3XHUyNjYzXHUyMjk5XHUyNWM4XHUyNWEzXHUyNWQwXHUyNWQxXHUyNTkyXHUyNWE0XHUyNWE1XHUyNWE4XHUyNWE3XHUyNWE2XHUyNWE5XHUyNjY4XHUyNjBmXHUyNjBlXHUyNjFjXHUyNjFlXHhiNlx1MjAyMFx1MjAyMVx1MjE5NVx1MjE5''@;'; put 'put ''N1x1MjE5OVx1MjE5Nlx1MjE5OFx1MjY2ZFx1MjY2OVx1MjY2YVx1MjY2Y1x1MzI3Zlx1MzIxY1x1MjExNlx1MzNjN1x1MjEyMlx1MzNjMlx1MzNkOFx1MjEyMVx1MjBhY1x4YWUiXSxbImEzNDEiLCJcdWM5NzFcdWM5NzJcdWM5NzNcdWM5NzUiLDYsIlx1Yzk3ZCIsMTAsIlx1Yzk4YVx1Yzk4''@;'; put 'put ''Ylx1Yzk4ZFx1Yzk4ZVx1Yzk4ZiJdLFsiYTM2MSIsIlx1Yzk5MSIsNiwiXHVjOTlhXHVjOTljXHVjOTllIiwxNl0sWyJhMzgxIiwiXHVjOWFmIiwxNiwiXHVjOWMyXHVjOWMzXHVjOWM1XHVjOWM2XHVjOWM5XHVjOWNiIiw0LCJcdWM5ZDJcdWM5ZDRcdWM5ZDdcdWM5ZDhcdWM5ZGJcdWZmMDEi''@;'; put 'put ''LDU4LCJcdWZmZTZcdWZmM2QiLDMyLCJcdWZmZTMiXSxbImE0NDEiLCJcdWM5ZGVcdWM5ZGZcdWM5ZTFcdWM5ZTNcdWM5ZTVcdWM5ZTZcdWM5ZThcdWM5ZTlcdWM5ZWFcdWM5ZWJcdWM5ZWVcdWM5ZjIiLDUsIlx1YzlmYVx1YzlmYlx1YzlmZFx1YzlmZVx1YzlmZlx1Y2EwMVx1Y2EwMlx1Y2Ew''@;'; put 'put ''M1x1Y2EwNCJdLFsiYTQ2MSIsIlx1Y2EwNVx1Y2EwNlx1Y2EwN1x1Y2EwYVx1Y2EwZSIsNSwiXHVjYTE1XHVjYTE2XHVjYTE3XHVjYTE5IiwxMl0sWyJhNDgxIiwiXHVjYTI2XHVjYTI3XHVjYTI4XHVjYTJhIiwyOCwiXHUzMTMxIiw5M10sWyJhNTQxIiwiXHVjYTQ3Iiw0LCJcdWNhNGVcdWNh''@;'; put 'put ''NGZcdWNhNTFcdWNhNTJcdWNhNTNcdWNhNTUiLDYsIlx1Y2E1ZVx1Y2E2MiIsNSwiXHVjYTY5XHVjYTZhIl0sWyJhNTYxIiwiXHVjYTZiIiwxNywiXHVjYTdlIiw1LCJcdWNhODVcdWNhODYiXSxbImE1ODEiLCJcdWNhODciLDE2LCJcdWNhOTkiLDE0LCJcdTIxNzAiLDldLFsiYTViMCIsIlx1''@;'; put 'put ''MjE2MCIsOV0sWyJhNWMxIiwiXHUwMzkxIiwxNiwiXHUwM2EzIiw2XSxbImE1ZTEiLCJcdTAzYjEiLDE2LCJcdTAzYzMiLDZdLFsiYTY0MSIsIlx1Y2FhOCIsMTksIlx1Y2FiZVx1Y2FiZlx1Y2FjMVx1Y2FjMlx1Y2FjM1x1Y2FjNSJdLFsiYTY2MSIsIlx1Y2FjNiIsNSwiXHVjYWNlXHVjYWQw''@;'; put 'put ''XHVjYWQyXHVjYWQ0XHVjYWQ1XHVjYWQ2XHVjYWQ3XHVjYWRhIiw1LCJcdWNhZTEiLDZdLFsiYTY4MSIsIlx1Y2FlOFx1Y2FlOVx1Y2FlYVx1Y2FlYlx1Y2FlZCIsNiwiXHVjYWY1IiwxOCwiXHVjYjA5XHVjYjBhXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE4XHUyNTE0XHUyNTFjXHUy''@;'; put 'put ''NTJjXHUyNTI0XHUyNTM0XHUyNTNjXHUyNTAxXHUyNTAzXHUyNTBmXHUyNTEzXHUyNTFiXHUyNTE3XHUyNTIzXHUyNTMzXHUyNTJiXHUyNTNiXHUyNTRiXHUyNTIwXHUyNTJmXHUyNTI4XHUyNTM3XHUyNTNmXHUyNTFkXHUyNTMwXHUyNTI1XHUyNTM4XHUyNTQyXHUyNTEyXHUyNTExXHUyNTFh''@;'; put 'put ''XHUyNTE5XHUyNTE2XHUyNTE1XHUyNTBlXHUyNTBkXHUyNTFlXHUyNTFmXHUyNTIxXHUyNTIyXHUyNTI2XHUyNTI3XHUyNTI5XHUyNTJhXHUyNTJkXHUyNTJlXHUyNTMxXHUyNTMyXHUyNTM1XHUyNTM2XHUyNTM5XHUyNTNhXHUyNTNkXHUyNTNlXHUyNTQwXHUyNTQxXHUyNTQzIiw3XSxbImE3''@;'; put 'put ''NDEiLCJcdWNiMGIiLDQsIlx1Y2IxMVx1Y2IxMlx1Y2IxM1x1Y2IxNVx1Y2IxNlx1Y2IxN1x1Y2IxOSIsNiwiXHVjYjIyIiw3XSxbImE3NjEiLCJcdWNiMmEiLDIyLCJcdWNiNDJcdWNiNDNcdWNiNDQiXSxbImE3ODEiLCJcdWNiNDVcdWNiNDZcdWNiNDdcdWNiNGFcdWNiNGJcdWNiNGRcdWNi''@;'; put 'put ''NGVcdWNiNGZcdWNiNTEiLDYsIlx1Y2I1YVx1Y2I1Ylx1Y2I1Y1x1Y2I1ZSIsNSwiXHVjYjY1Iiw3LCJcdTMzOTVcdTMzOTZcdTMzOTdcdTIxMTNcdTMzOThcdTMzYzRcdTMzYTNcdTMzYTRcdTMzYTVcdTMzYTZcdTMzOTkiLDksIlx1MzNjYVx1MzM4ZFx1MzM4ZVx1MzM4Zlx1MzNjZlx1MzM4''@;'; put 'put ''OFx1MzM4OVx1MzNjOFx1MzNhN1x1MzNhOFx1MzNiMCIsOSwiXHUzMzgwIiw0LCJcdTMzYmEiLDUsIlx1MzM5MCIsNCwiXHUyMTI2XHUzM2MwXHUzM2MxXHUzMzhhXHUzMzhiXHUzMzhjXHUzM2Q2XHUzM2M1XHUzM2FkXHUzM2FlXHUzM2FmXHUzM2RiXHUzM2E5XHUzM2FhXHUzM2FiXHUzM2Fj''@;'; put 'put ''XHUzM2RkXHUzM2QwXHUzM2QzXHUzM2MzXHUzM2M5XHUzM2RjXHUzM2M2Il0sWyJhODQxIiwiXHVjYjZkIiwxMCwiXHVjYjdhIiwxNF0sWyJhODYxIiwiXHVjYjg5IiwxOCwiXHVjYjlkIiw2XSxbImE4ODEiLCJcdWNiYTQiLDE5LCJcdWNiYjkiLDExLCJceGM2XHhkMFx4YWFcdTAxMjYiXSxb''@;'; put 'put ''ImE4YTYiLCJcdTAxMzIiXSxbImE4YTgiLCJcdTAxM2ZcdTAxNDFceGQ4XHUwMTUyXHhiYVx4ZGVcdTAxNjZcdTAxNGEiXSxbImE4YjEiLCJcdTMyNjAiLDI3LCJcdTI0ZDAiLDI1LCJcdTI0NjAiLDE0LCJceGJkXHUyMTUzXHUyMTU0XHhiY1x4YmVcdTIxNWJcdTIxNWNcdTIxNWRcdTIxNWUi''@;'; put 'put ''XSxbImE5NDEiLCJcdWNiYzUiLDE0LCJcdWNiZDUiLDEwXSxbImE5NjEiLCJcdWNiZTBcdWNiZTFcdWNiZTJcdWNiZTNcdWNiZTVcdWNiZTZcdWNiZThcdWNiZWEiLDE4XSxbImE5ODEiLCJcdWNiZmQiLDE0LCJcdWNjMGVcdWNjMGZcdWNjMTFcdWNjMTJcdWNjMTNcdWNjMTUiLDYsIlx1Y2Mx''@;'; put 'put ''ZVx1Y2MxZlx1Y2MyMFx1Y2MyM1x1Y2MyNFx4ZTZcdTAxMTFceGYwXHUwMTI3XHUwMTMxXHUwMTMzXHUwMTM4XHUwMTQwXHUwMTQyXHhmOFx1MDE1M1x4ZGZceGZlXHUwMTY3XHUwMTRiXHUwMTQ5XHUzMjAwIiwyNywiXHUyNDljIiwyNSwiXHUyNDc0IiwxNCwiXHhiOVx4YjJceGIzXHUyMDc0''@;'; put 'put ''XHUyMDdmXHUyMDgxXHUyMDgyXHUyMDgzXHUyMDg0Il0sWyJhYTQxIiwiXHVjYzI1XHVjYzI2XHVjYzJhXHVjYzJiXHVjYzJkXHVjYzJmXHVjYzMxIiw2LCJcdWNjM2FcdWNjM2YiLDQsIlx1Y2M0Nlx1Y2M0N1x1Y2M0OVx1Y2M0YVx1Y2M0Ylx1Y2M0ZFx1Y2M0ZSJdLFsiYWE2MSIsIlx1Y2M0''@;'; put 'put ''ZiIsNCwiXHVjYzU2XHVjYzVhIiw1LCJcdWNjNjFcdWNjNjJcdWNjNjNcdWNjNjVcdWNjNjdcdWNjNjkiLDYsIlx1Y2M3MVx1Y2M3MiJdLFsiYWE4MSIsIlx1Y2M3M1x1Y2M3NFx1Y2M3NiIsMjksIlx1MzA0MSIsODJdLFsiYWI0MSIsIlx1Y2M5NFx1Y2M5NVx1Y2M5Nlx1Y2M5N1x1Y2M5YVx1''@;'; put 'put ''Y2M5Ylx1Y2M5ZFx1Y2M5ZVx1Y2M5Zlx1Y2NhMSIsNiwiXHVjY2FhXHVjY2FlIiw1LCJcdWNjYjZcdWNjYjdcdWNjYjkiXSxbImFiNjEiLCJcdWNjYmFcdWNjYmJcdWNjYmQiLDYsIlx1Y2NjNlx1Y2NjOFx1Y2NjYSIsNSwiXHVjY2QxXHVjY2QyXHVjY2QzXHVjY2Q1Iiw1XSxbImFiODEiLCJc''@;'; put 'put ''dWNjZGIiLDgsIlx1Y2NlNSIsNiwiXHVjY2VkXHVjY2VlXHVjY2VmXHVjY2YxIiwxMiwiXHUzMGExIiw4NV0sWyJhYzQxIiwiXHVjY2ZlXHVjY2ZmXHVjZDAwXHVjZDAyIiw1LCJcdWNkMGFcdWNkMGJcdWNkMGRcdWNkMGVcdWNkMGZcdWNkMTEiLDYsIlx1Y2QxYVx1Y2QxY1x1Y2QxZVx1Y2Qx''@;'; put 'put ''Zlx1Y2QyMCJdLFsiYWM2MSIsIlx1Y2QyMVx1Y2QyMlx1Y2QyM1x1Y2QyNVx1Y2QyNlx1Y2QyN1x1Y2QyOVx1Y2QyYVx1Y2QyYlx1Y2QyZCIsMTEsIlx1Y2QzYSIsNF0sWyJhYzgxIiwiXHVjZDNmIiwyOCwiXHVjZDVkXHVjZDVlXHVjZDVmXHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDI1XSxb''@;'; put 'put ''ImFjZDEiLCJcdTA0MzAiLDUsIlx1MDQ1MVx1MDQzNiIsMjVdLFsiYWQ0MSIsIlx1Y2Q2MVx1Y2Q2Mlx1Y2Q2M1x1Y2Q2NSIsNiwiXHVjZDZlXHVjZDcwXHVjZDcyIiw1LCJcdWNkNzkiLDddLFsiYWQ2MSIsIlx1Y2Q4MSIsNiwiXHVjZDg5IiwxMCwiXHVjZDk2XHVjZDk3XHVjZDk5XHVjZDlh''@;'; put 'put ''XHVjZDliXHVjZDlkXHVjZDllXHVjZDlmIl0sWyJhZDgxIiwiXHVjZGEwXHVjZGExXHVjZGEyXHVjZGEzXHVjZGE2XHVjZGE4XHVjZGFhIiw1LCJcdWNkYjEiLDE4LCJcdWNkYzUiXSxbImFlNDEiLCJcdWNkYzYiLDUsIlx1Y2RjZFx1Y2RjZVx1Y2RjZlx1Y2RkMSIsMTZdLFsiYWU2MSIsIlx1''@;'; put 'put ''Y2RlMiIsNSwiXHVjZGU5XHVjZGVhXHVjZGViXHVjZGVkXHVjZGVlXHVjZGVmXHVjZGYxIiw2LCJcdWNkZmFcdWNkZmNcdWNkZmUiLDRdLFsiYWU4MSIsIlx1Y2UwM1x1Y2UwNVx1Y2UwNlx1Y2UwN1x1Y2UwOVx1Y2UwYVx1Y2UwYlx1Y2UwZCIsNiwiXHVjZTE1XHVjZTE2XHVjZTE3XHVjZTE4''@;'; put 'put ''XHVjZTFhIiw1LCJcdWNlMjJcdWNlMjNcdWNlMjVcdWNlMjZcdWNlMjdcdWNlMjlcdWNlMmFcdWNlMmIiXSxbImFmNDEiLCJcdWNlMmNcdWNlMmRcdWNlMmVcdWNlMmZcdWNlMzJcdWNlMzRcdWNlMzYiLDE5XSxbImFmNjEiLCJcdWNlNGEiLDEzLCJcdWNlNWFcdWNlNWJcdWNlNWRcdWNlNWVc''@;'; put 'put ''dWNlNjIiLDUsIlx1Y2U2YVx1Y2U2YyJdLFsiYWY4MSIsIlx1Y2U2ZSIsNSwiXHVjZTc2XHVjZTc3XHVjZTc5XHVjZTdhXHVjZTdiXHVjZTdkIiw2LCJcdWNlODZcdWNlODhcdWNlOGEiLDUsIlx1Y2U5Mlx1Y2U5M1x1Y2U5NVx1Y2U5Nlx1Y2U5N1x1Y2U5OSJdLFsiYjA0MSIsIlx1Y2U5YSIs''@;'; put 'put ''NSwiXHVjZWEyXHVjZWE2Iiw1LCJcdWNlYWUiLDEyXSxbImIwNjEiLCJcdWNlYmIiLDUsIlx1Y2VjMiIsMTldLFsiYjA4MSIsIlx1Y2VkNiIsMTMsIlx1Y2VlNlx1Y2VlN1x1Y2VlOVx1Y2VlYVx1Y2VlZCIsNiwiXHVjZWY2XHVjZWZhIiw1LCJcdWFjMDBcdWFjMDFcdWFjMDRcdWFjMDdcdWFj''@;'; put 'put ''MDhcdWFjMDlcdWFjMGFcdWFjMTAiLDcsIlx1YWMxOSIsNCwiXHVhYzIwXHVhYzI0XHVhYzJjXHVhYzJkXHVhYzJmXHVhYzMwXHVhYzMxXHVhYzM4XHVhYzM5XHVhYzNjXHVhYzQwXHVhYzRiXHVhYzRkXHVhYzU0XHVhYzU4XHVhYzVjXHVhYzcwXHVhYzcxXHVhYzc0XHVhYzc3XHVhYzc4XHVh''@;'; put 'put ''YzdhXHVhYzgwXHVhYzgxXHVhYzgzXHVhYzg0XHVhYzg1XHVhYzg2XHVhYzg5XHVhYzhhXHVhYzhiXHVhYzhjXHVhYzkwXHVhYzk0XHVhYzljXHVhYzlkXHVhYzlmXHVhY2EwXHVhY2ExXHVhY2E4XHVhY2E5XHVhY2FhXHVhY2FjXHVhY2FmXHVhY2IwXHVhY2I4XHVhY2I5XHVhY2JiXHVhY2Jj''@;'; put 'put ''XHVhY2JkXHVhY2MxXHVhY2M0XHVhY2M4XHVhY2NjXHVhY2Q1XHVhY2Q3XHVhY2UwXHVhY2UxXHVhY2U0XHVhY2U3XHVhY2U4XHVhY2VhXHVhY2VjXHVhY2VmXHVhY2YwXHVhY2YxXHVhY2YzXHVhY2Y1XHVhY2Y2XHVhY2ZjXHVhY2ZkXHVhZDAwXHVhZDA0XHVhZDA2Il0sWyJiMTQxIiwiXHVj''@;'; put 'put ''ZjAyXHVjZjAzXHVjZjA1XHVjZjA2XHVjZjA3XHVjZjA5Iiw2LCJcdWNmMTJcdWNmMTRcdWNmMTYiLDUsIlx1Y2YxZFx1Y2YxZVx1Y2YxZlx1Y2YyMVx1Y2YyMlx1Y2YyMyJdLFsiYjE2MSIsIlx1Y2YyNSIsNiwiXHVjZjJlXHVjZjMyIiw1LCJcdWNmMzkiLDExXSxbImIxODEiLCJcdWNmNDUi''@;'; put 'put ''LDE0LCJcdWNmNTZcdWNmNTdcdWNmNTlcdWNmNWFcdWNmNWJcdWNmNWQiLDYsIlx1Y2Y2Nlx1Y2Y2OFx1Y2Y2YVx1Y2Y2Ylx1Y2Y2Y1x1YWQwY1x1YWQwZFx1YWQwZlx1YWQxMVx1YWQxOFx1YWQxY1x1YWQyMFx1YWQyOVx1YWQyY1x1YWQyZFx1YWQzNFx1YWQzNVx1YWQzOFx1YWQzY1x1YWQ0''@;'; put 'put ''NFx1YWQ0NVx1YWQ0N1x1YWQ0OVx1YWQ1MFx1YWQ1NFx1YWQ1OFx1YWQ2MVx1YWQ2M1x1YWQ2Y1x1YWQ2ZFx1YWQ3MFx1YWQ3M1x1YWQ3NFx1YWQ3NVx1YWQ3Nlx1YWQ3Ylx1YWQ3Y1x1YWQ3ZFx1YWQ3Zlx1YWQ4MVx1YWQ4Mlx1YWQ4OFx1YWQ4OVx1YWQ4Y1x1YWQ5MFx1YWQ5Y1x1YWQ5ZFx1''@;'; put 'put ''YWRhNFx1YWRiN1x1YWRjMFx1YWRjMVx1YWRjNFx1YWRjOFx1YWRkMFx1YWRkMVx1YWRkM1x1YWRkY1x1YWRlMFx1YWRlNFx1YWRmOFx1YWRmOVx1YWRmY1x1YWRmZlx1YWUwMFx1YWUwMVx1YWUwOFx1YWUwOVx1YWUwYlx1YWUwZFx1YWUxNFx1YWUzMFx1YWUzMVx1YWUzNFx1YWUzN1x1YWUz''@;'; put 'put ''OFx1YWUzYVx1YWU0MFx1YWU0MVx1YWU0M1x1YWU0NVx1YWU0Nlx1YWU0YVx1YWU0Y1x1YWU0ZFx1YWU0ZVx1YWU1MFx1YWU1NFx1YWU1Nlx1YWU1Y1x1YWU1ZFx1YWU1Zlx1YWU2MFx1YWU2MVx1YWU2NVx1YWU2OFx1YWU2OVx1YWU2Y1x1YWU3MFx1YWU3OCJdLFsiYjI0MSIsIlx1Y2Y2ZFx1''@;'; put 'put ''Y2Y2ZVx1Y2Y2Zlx1Y2Y3Mlx1Y2Y3M1x1Y2Y3NVx1Y2Y3Nlx1Y2Y3N1x1Y2Y3OSIsNiwiXHVjZjgxXHVjZjgyXHVjZjgzXHVjZjg0XHVjZjg2Iiw1LCJcdWNmOGQiXSxbImIyNjEiLCJcdWNmOGUiLDE4LCJcdWNmYTIiLDUsIlx1Y2ZhOSJdLFsiYjI4MSIsIlx1Y2ZhYSIsNSwiXHVjZmIxIiwx''@;'; put 'put ''OCwiXHVjZmM1Iiw2LCJcdWFlNzlcdWFlN2JcdWFlN2NcdWFlN2RcdWFlODRcdWFlODVcdWFlOGNcdWFlYmNcdWFlYmRcdWFlYmVcdWFlYzBcdWFlYzRcdWFlY2NcdWFlY2RcdWFlY2ZcdWFlZDBcdWFlZDFcdWFlZDhcdWFlZDlcdWFlZGNcdWFlZThcdWFlZWJcdWFlZWRcdWFlZjRcdWFlZjhc''@;'; put 'put ''dWFlZmNcdWFmMDdcdWFmMDhcdWFmMGRcdWFmMTBcdWFmMmNcdWFmMmRcdWFmMzBcdWFmMzJcdWFmMzRcdWFmM2NcdWFmM2RcdWFmM2ZcdWFmNDFcdWFmNDJcdWFmNDNcdWFmNDhcdWFmNDlcdWFmNTBcdWFmNWNcdWFmNWRcdWFmNjRcdWFmNjVcdWFmNzlcdWFmODBcdWFmODRcdWFmODhcdWFm''@;'; put 'put ''OTBcdWFmOTFcdWFmOTVcdWFmOWNcdWFmYjhcdWFmYjlcdWFmYmNcdWFmYzBcdWFmYzdcdWFmYzhcdWFmYzlcdWFmY2JcdWFmY2RcdWFmY2VcdWFmZDRcdWFmZGNcdWFmZThcdWFmZTlcdWFmZjBcdWFmZjFcdWFmZjRcdWFmZjhcdWIwMDBcdWIwMDFcdWIwMDRcdWIwMGNcdWIwMTBcdWIwMTRc''@;'; put 'put ''dWIwMWNcdWIwMWRcdWIwMjhcdWIwNDRcdWIwNDVcdWIwNDhcdWIwNGFcdWIwNGNcdWIwNGVcdWIwNTNcdWIwNTRcdWIwNTVcdWIwNTdcdWIwNTkiXSxbImIzNDEiLCJcdWNmY2MiLDE5LCJcdWNmZTJcdWNmZTNcdWNmZTVcdWNmZTZcdWNmZTdcdWNmZTkiXSxbImIzNjEiLCJcdWNmZWEiLDUs''@;'; put 'put ''Ilx1Y2ZmMlx1Y2ZmNFx1Y2ZmNiIsNSwiXHVjZmZkXHVjZmZlXHVjZmZmXHVkMDAxXHVkMDAyXHVkMDAzXHVkMDA1Iiw1XSxbImIzODEiLCJcdWQwMGIiLDUsIlx1ZDAxMiIsNSwiXHVkMDE5IiwxOSwiXHViMDVkXHViMDdjXHViMDdkXHViMDgwXHViMDg0XHViMDhjXHViMDhkXHViMDhmXHVi''@;'; put 'put ''MDkxXHViMDk4XHViMDk5XHViMDlhXHViMDljXHViMDlmXHViMGEwXHViMGExXHViMGEyXHViMGE4XHViMGE5XHViMGFiIiw0LCJcdWIwYjFcdWIwYjNcdWIwYjRcdWIwYjVcdWIwYjhcdWIwYmNcdWIwYzRcdWIwYzVcdWIwYzdcdWIwYzhcdWIwYzlcdWIwZDBcdWIwZDFcdWIwZDRcdWIwZDhc''@;'; put 'put ''dWIwZTBcdWIwZTVcdWIxMDhcdWIxMDlcdWIxMGJcdWIxMGNcdWIxMTBcdWIxMTJcdWIxMTNcdWIxMThcdWIxMTlcdWIxMWJcdWIxMWNcdWIxMWRcdWIxMjNcdWIxMjRcdWIxMjVcdWIxMjhcdWIxMmNcdWIxMzRcdWIxMzVcdWIxMzdcdWIxMzhcdWIxMzlcdWIxNDBcdWIxNDFcdWIxNDRcdWIx''@;'; put 'put ''NDhcdWIxNTBcdWIxNTFcdWIxNTRcdWIxNTVcdWIxNThcdWIxNWNcdWIxNjBcdWIxNzhcdWIxNzlcdWIxN2NcdWIxODBcdWIxODJcdWIxODhcdWIxODlcdWIxOGJcdWIxOGRcdWIxOTJcdWIxOTNcdWIxOTRcdWIxOThcdWIxOWNcdWIxYThcdWIxY2NcdWIxZDBcdWIxZDRcdWIxZGNcdWIxZGQi''@;'; put 'put ''XSxbImI0NDEiLCJcdWQwMmUiLDUsIlx1ZDAzNlx1ZDAzN1x1ZDAzOVx1ZDAzYVx1ZDAzYlx1ZDAzZCIsNiwiXHVkMDQ2XHVkMDQ4XHVkMDRhIiw1XSxbImI0NjEiLCJcdWQwNTFcdWQwNTJcdWQwNTNcdWQwNTVcdWQwNTZcdWQwNTdcdWQwNTkiLDYsIlx1ZDA2MSIsMTAsIlx1ZDA2ZVx1ZDA2''@;'; put 'put ''ZiJdLFsiYjQ4MSIsIlx1ZDA3MVx1ZDA3Mlx1ZDA3M1x1ZDA3NSIsNiwiXHVkMDdlXHVkMDdmXHVkMDgwXHVkMDgyIiwxOCwiXHViMWRmXHViMWU4XHViMWU5XHViMWVjXHViMWYwXHViMWY5XHViMWZiXHViMWZkXHViMjA0XHViMjA1XHViMjA4XHViMjBiXHViMjBjXHViMjE0XHViMjE1XHVi''@;'; put 'put ''MjE3XHViMjE5XHViMjIwXHViMjM0XHViMjNjXHViMjU4XHViMjVjXHViMjYwXHViMjY4XHViMjY5XHViMjc0XHViMjc1XHViMjdjXHViMjg0XHViMjg1XHViMjg5XHViMjkwXHViMjkxXHViMjk0XHViMjk4XHViMjk5XHViMjlhXHViMmEwXHViMmExXHViMmEzXHViMmE1XHViMmE2XHViMmFh''@;'; put 'put ''XHViMmFjXHViMmIwXHViMmI0XHViMmM4XHViMmM5XHViMmNjXHViMmQwXHViMmQyXHViMmQ4XHViMmQ5XHViMmRiXHViMmRkXHViMmUyXHViMmU0XHViMmU1XHViMmU2XHViMmU4XHViMmViIiw0LCJcdWIyZjNcdWIyZjRcdWIyZjVcdWIyZjciLDQsIlx1YjJmZlx1YjMwMFx1YjMwMVx1YjMw''@;'; put 'put ''NFx1YjMwOFx1YjMxMFx1YjMxMVx1YjMxM1x1YjMxNFx1YjMxNVx1YjMxY1x1YjM1NFx1YjM1NVx1YjM1Nlx1YjM1OFx1YjM1Ylx1YjM1Y1x1YjM1ZVx1YjM1Zlx1YjM2NFx1YjM2NSJdLFsiYjU0MSIsIlx1ZDA5NSIsMTQsIlx1ZDBhNlx1ZDBhN1x1ZDBhOVx1ZDBhYVx1ZDBhYlx1ZDBhZCIs''@;'; put 'put ''NV0sWyJiNTYxIiwiXHVkMGIzXHVkMGI2XHVkMGI4XHVkMGJhIiw1LCJcdWQwYzJcdWQwYzNcdWQwYzVcdWQwYzZcdWQwYzdcdWQwY2EiLDUsIlx1ZDBkMlx1ZDBkNiIsNF0sWyJiNTgxIiwiXHVkMGRiXHVkMGRlXHVkMGRmXHVkMGUxXHVkMGUyXHVkMGUzXHVkMGU1Iiw2LCJcdWQwZWVcdWQw''@;'; put 'put ''ZjIiLDUsIlx1ZDBmOSIsMTEsIlx1YjM2N1x1YjM2OVx1YjM2Ylx1YjM2ZVx1YjM3MFx1YjM3MVx1YjM3NFx1YjM3OFx1YjM4MFx1YjM4MVx1YjM4M1x1YjM4NFx1YjM4NVx1YjM4Y1x1YjM5MFx1YjM5NFx1YjNhMFx1YjNhMVx1YjNhOFx1YjNhY1x1YjNjNFx1YjNjNVx1YjNjOFx1YjNjYlx1''@;'; put 'put ''YjNjY1x1YjNjZVx1YjNkMFx1YjNkNFx1YjNkNVx1YjNkN1x1YjNkOVx1YjNkYlx1YjNkZFx1YjNlMFx1YjNlNFx1YjNlOFx1YjNmY1x1YjQxMFx1YjQxOFx1YjQxY1x1YjQyMFx1YjQyOFx1YjQyOVx1YjQyYlx1YjQzNFx1YjQ1MFx1YjQ1MVx1YjQ1NFx1YjQ1OFx1YjQ2MFx1YjQ2MVx1YjQ2''@;'; put 'put ''M1x1YjQ2NVx1YjQ2Y1x1YjQ4MFx1YjQ4OFx1YjQ5ZFx1YjRhNFx1YjRhOFx1YjRhY1x1YjRiNVx1YjRiN1x1YjRiOVx1YjRjMFx1YjRjNFx1YjRjOFx1YjRkMFx1YjRkNVx1YjRkY1x1YjRkZFx1YjRlMFx1YjRlM1x1YjRlNFx1YjRlNlx1YjRlY1x1YjRlZFx1YjRlZlx1YjRmMVx1YjRmOFx1''@;'; put 'put ''YjUxNFx1YjUxNVx1YjUxOFx1YjUxYlx1YjUxY1x1YjUyNFx1YjUyNVx1YjUyN1x1YjUyOFx1YjUyOVx1YjUyYVx1YjUzMFx1YjUzMVx1YjUzNFx1YjUzOCJdLFsiYjY0MSIsIlx1ZDEwNSIsNywiXHVkMTBlIiwxN10sWyJiNjYxIiwiXHVkMTIwIiwxNSwiXHVkMTMyXHVkMTMzXHVkMTM1XHVk''@;'; put 'put ''MTM2XHVkMTM3XHVkMTM5XHVkMTNiXHVkMTNjXHVkMTNkXHVkMTNlIl0sWyJiNjgxIiwiXHVkMTNmXHVkMTQyXHVkMTQ2Iiw1LCJcdWQxNGVcdWQxNGZcdWQxNTFcdWQxNTJcdWQxNTNcdWQxNTUiLDYsIlx1ZDE1ZVx1ZDE2MFx1ZDE2MiIsNSwiXHVkMTY5XHVkMTZhXHVkMTZiXHVkMTZkXHVi''@;'; put 'put ''NTQwXHViNTQxXHViNTQzXHViNTQ0XHViNTQ1XHViNTRiXHViNTRjXHViNTRkXHViNTUwXHViNTU0XHViNTVjXHViNTVkXHViNTVmXHViNTYwXHViNTYxXHViNWEwXHViNWExXHViNWE0XHViNWE4XHViNWFhXHViNWFiXHViNWIwXHViNWIxXHViNWIzXHViNWI0XHViNWI1XHViNWJiXHViNWJj''@;'; put 'put ''XHViNWJkXHViNWMwXHViNWM0XHViNWNjXHViNWNkXHViNWNmXHViNWQwXHViNWQxXHViNWQ4XHViNWVjXHViNjEwXHViNjExXHViNjE0XHViNjE4XHViNjI1XHViNjJjXHViNjM0XHViNjQ4XHViNjY0XHViNjY4XHViNjljXHViNjlkXHViNmEwXHViNmE0XHViNmFiXHViNmFjXHViNmIxXHVi''@;'; put 'put ''NmQ0XHViNmYwXHViNmY0XHViNmY4XHViNzAwXHViNzAxXHViNzA1XHViNzI4XHViNzI5XHViNzJjXHViNzJmXHViNzMwXHViNzM4XHViNzM5XHViNzNiXHViNzQ0XHViNzQ4XHViNzRjXHViNzU0XHViNzU1XHViNzYwXHViNzY0XHViNzY4XHViNzcwXHViNzcxXHViNzczXHViNzc1XHViNzdj''@;'; put 'put ''XHViNzdkXHViNzgwXHViNzg0XHViNzhjXHViNzhkXHViNzhmXHViNzkwXHViNzkxXHViNzkyXHViNzk2XHViNzk3Il0sWyJiNzQxIiwiXHVkMTZlIiwxMywiXHVkMTdkIiw2LCJcdWQxODVcdWQxODZcdWQxODdcdWQxODlcdWQxOGEiXSxbImI3NjEiLCJcdWQxOGIiLDIwLCJcdWQxYTJcdWQx''@;'; put 'put ''YTNcdWQxYTVcdWQxYTZcdWQxYTciXSxbImI3ODEiLCJcdWQxYTkiLDYsIlx1ZDFiMlx1ZDFiNFx1ZDFiNlx1ZDFiN1x1ZDFiOFx1ZDFiOVx1ZDFiYlx1ZDFiZFx1ZDFiZVx1ZDFiZlx1ZDFjMSIsMTQsIlx1Yjc5OFx1Yjc5OVx1Yjc5Y1x1YjdhMFx1YjdhOFx1YjdhOVx1YjdhYlx1YjdhY1x1''@;'; put 'put ''YjdhZFx1YjdiNFx1YjdiNVx1YjdiOFx1YjdjN1x1YjdjOVx1YjdlY1x1YjdlZFx1YjdmMFx1YjdmNFx1YjdmY1x1YjdmZFx1YjdmZlx1YjgwMFx1YjgwMVx1YjgwN1x1YjgwOFx1YjgwOVx1YjgwY1x1YjgxMFx1YjgxOFx1YjgxOVx1YjgxYlx1YjgxZFx1YjgyNFx1YjgyNVx1YjgyOFx1Yjgy''@;'; put 'put ''Y1x1YjgzNFx1YjgzNVx1YjgzN1x1YjgzOFx1YjgzOVx1Yjg0MFx1Yjg0NFx1Yjg1MVx1Yjg1M1x1Yjg1Y1x1Yjg1ZFx1Yjg2MFx1Yjg2NFx1Yjg2Y1x1Yjg2ZFx1Yjg2Zlx1Yjg3MVx1Yjg3OFx1Yjg3Y1x1Yjg4ZFx1YjhhOFx1YjhiMFx1YjhiNFx1YjhiOFx1YjhjMFx1YjhjMVx1YjhjM1x1''@;'; put 'put ''YjhjNVx1YjhjY1x1YjhkMFx1YjhkNFx1YjhkZFx1YjhkZlx1YjhlMVx1YjhlOFx1YjhlOVx1YjhlY1x1YjhmMFx1YjhmOFx1YjhmOVx1YjhmYlx1YjhmZFx1YjkwNFx1YjkxOFx1YjkyMFx1YjkzY1x1YjkzZFx1Yjk0MFx1Yjk0NFx1Yjk0Y1x1Yjk0Zlx1Yjk1MVx1Yjk1OFx1Yjk1OVx1Yjk1''@;'; put 'put ''Y1x1Yjk2MFx1Yjk2OFx1Yjk2OSJdLFsiYjg0MSIsIlx1ZDFkMCIsNywiXHVkMWQ5IiwxN10sWyJiODYxIiwiXHVkMWViIiw4LCJcdWQxZjVcdWQxZjZcdWQxZjdcdWQxZjkiLDEzXSxbImI4ODEiLCJcdWQyMDhcdWQyMGEiLDUsIlx1ZDIxMSIsMjQsIlx1Yjk2Ylx1Yjk2ZFx1Yjk3NFx1Yjk3''@;'; put 'put ''NVx1Yjk3OFx1Yjk3Y1x1Yjk4NFx1Yjk4NVx1Yjk4N1x1Yjk4OVx1Yjk4YVx1Yjk4ZFx1Yjk4ZVx1YjlhY1x1YjlhZFx1YjliMFx1YjliNFx1YjliY1x1YjliZFx1YjliZlx1YjljMVx1YjljOFx1YjljOVx1YjljY1x1YjljZSIsNCwiXHViOWQ4XHViOWQ5XHViOWRiXHViOWRkXHViOWRlXHVi''@;'; put 'put ''OWUxXHViOWUzXHViOWU0XHViOWU1XHViOWU4XHViOWVjXHViOWY0XHViOWY1XHViOWY3XHViOWY4XHViOWY5XHViOWZhXHViYTAwXHViYTAxXHViYTA4XHViYTE1XHViYTM4XHViYTM5XHViYTNjXHViYTQwXHViYTQyXHViYTQ4XHViYTQ5XHViYTRiXHViYTRkXHViYTRlXHViYTUzXHViYTU0''@;'; put 'put ''XHViYTU1XHViYTU4XHViYTVjXHViYTY0XHViYTY1XHViYTY3XHViYTY4XHViYTY5XHViYTcwXHViYTcxXHViYTc0XHViYTc4XHViYTgzXHViYTg0XHViYTg1XHViYTg3XHViYThjXHViYWE4XHViYWE5XHViYWFiXHViYWFjXHViYWIwXHViYWIyXHViYWI4XHViYWI5XHViYWJiXHViYWJkXHVi''@;'; put 'put ''YWM0XHViYWM4XHViYWQ4XHViYWQ5XHViYWZjIl0sWyJiOTQxIiwiXHVkMjJhXHVkMjJiXHVkMjJlXHVkMjJmXHVkMjMxXHVkMjMyXHVkMjMzXHVkMjM1Iiw2LCJcdWQyM2VcdWQyNDBcdWQyNDIiLDUsIlx1ZDI0OVx1ZDI0YVx1ZDI0Ylx1ZDI0YyJdLFsiYjk2MSIsIlx1ZDI0ZCIsMTQsIlx1''@;'; put 'put ''ZDI1ZCIsNiwiXHVkMjY1XHVkMjY2XHVkMjY3XHVkMjY4Il0sWyJiOTgxIiwiXHVkMjY5IiwyMiwiXHVkMjgyXHVkMjgzXHVkMjg1XHVkMjg2XHVkMjg3XHVkMjg5XHVkMjhhXHVkMjhiXHVkMjhjXHViYjAwXHViYjA0XHViYjBkXHViYjBmXHViYjExXHViYjE4XHViYjFjXHViYjIwXHViYjI5''@;'; put 'put ''XHViYjJiXHViYjM0XHViYjM1XHViYjM2XHViYjM4XHViYjNiXHViYjNjXHViYjNkXHViYjNlXHViYjQ0XHViYjQ1XHViYjQ3XHViYjQ5XHViYjRkXHViYjRmXHViYjUwXHViYjU0XHViYjU4XHViYjYxXHViYjYzXHViYjZjXHViYjg4XHViYjhjXHViYjkwXHViYmE0XHViYmE4XHViYmFjXHVi''@;'; put 'put ''YmI0XHViYmI3XHViYmMwXHViYmM0XHViYmM4XHViYmQwXHViYmQzXHViYmY4XHViYmY5XHViYmZjXHViYmZmXHViYzAwXHViYzAyXHViYzA4XHViYzA5XHViYzBiXHViYzBjXHViYzBkXHViYzBmXHViYzExXHViYzE0Iiw0LCJcdWJjMWIiLDQsIlx1YmMyNFx1YmMyNVx1YmMyN1x1YmMyOVx1''@;'; put 'put ''YmMyZFx1YmMzMFx1YmMzMVx1YmMzNFx1YmMzOFx1YmM0MFx1YmM0MVx1YmM0M1x1YmM0NFx1YmM0NVx1YmM0OVx1YmM0Y1x1YmM0ZFx1YmM1MFx1YmM1ZFx1YmM4NFx1YmM4NVx1YmM4OFx1YmM4Ylx1YmM4Y1x1YmM4ZVx1YmM5NFx1YmM5NVx1YmM5NyJdLFsiYmE0MSIsIlx1ZDI4ZFx1ZDI4''@;'; put 'put ''ZVx1ZDI4Zlx1ZDI5Mlx1ZDI5M1x1ZDI5NFx1ZDI5NiIsNSwiXHVkMjlkXHVkMjllXHVkMjlmXHVkMmExXHVkMmEyXHVkMmEzXHVkMmE1Iiw2LCJcdWQyYWQiXSxbImJhNjEiLCJcdWQyYWVcdWQyYWZcdWQyYjBcdWQyYjIiLDUsIlx1ZDJiYVx1ZDJiYlx1ZDJiZFx1ZDJiZVx1ZDJjMVx1ZDJj''@;'; put 'put ''MyIsNCwiXHVkMmNhXHVkMmNjIiw1XSxbImJhODEiLCJcdWQyZDJcdWQyZDNcdWQyZDVcdWQyZDZcdWQyZDdcdWQyZDlcdWQyZGFcdWQyZGJcdWQyZGQiLDYsIlx1ZDJlNiIsOSwiXHVkMmYyXHVkMmYzXHVkMmY1XHVkMmY2XHVkMmY3XHVkMmY5XHVkMmZhXHViYzk5XHViYzlhXHViY2EwXHVi''@;'; put 'put ''Y2ExXHViY2E0XHViY2E3XHViY2E4XHViY2IwXHViY2IxXHViY2IzXHViY2I0XHViY2I1XHViY2JjXHViY2JkXHViY2MwXHViY2M0XHViY2NkXHViY2NmXHViY2QwXHViY2QxXHViY2Q1XHViY2Q4XHViY2RjXHViY2Y0XHViY2Y1XHViY2Y2XHViY2Y4XHViY2ZjXHViZDA0XHViZDA1XHViZDA3''@;'; put 'put ''XHViZDA5XHViZDEwXHViZDE0XHViZDI0XHViZDJjXHViZDQwXHViZDQ4XHViZDQ5XHViZDRjXHViZDUwXHViZDU4XHViZDU5XHViZDY0XHViZDY4XHViZDgwXHViZDgxXHViZDg0XHViZDg3XHViZDg4XHViZDg5XHViZDhhXHViZDkwXHViZDkxXHViZDkzXHViZDk1XHViZDk5XHViZDlhXHVi''@;'; put 'put ''ZDljXHViZGE0XHViZGIwXHViZGI4XHViZGQ0XHViZGQ1XHViZGQ4XHViZGRjXHViZGU5XHViZGYwXHViZGY0XHViZGY4XHViZTAwXHViZTAzXHViZTA1XHViZTBjXHViZTBkXHViZTEwXHViZTE0XHViZTFjXHViZTFkXHViZTFmXHViZTQ0XHViZTQ1XHViZTQ4XHViZTRjXHViZTRlXHViZTU0''@;'; put 'put ''XHViZTU1XHViZTU3XHViZTU5XHViZTVhXHViZTViXHViZTYwXHViZTYxXHViZTY0Il0sWyJiYjQxIiwiXHVkMmZiIiw0LCJcdWQzMDJcdWQzMDRcdWQzMDYiLDUsIlx1ZDMwZlx1ZDMxMVx1ZDMxMlx1ZDMxM1x1ZDMxNVx1ZDMxNyIsNCwiXHVkMzFlXHVkMzIyXHVkMzIzIl0sWyJiYjYxIiwi''@;'; put 'put ''XHVkMzI0XHVkMzI2XHVkMzI3XHVkMzJhXHVkMzJiXHVkMzJkXHVkMzJlXHVkMzJmXHVkMzMxIiw2LCJcdWQzM2FcdWQzM2UiLDUsIlx1ZDM0Nlx1ZDM0N1x1ZDM0OFx1ZDM0OSJdLFsiYmI4MSIsIlx1ZDM0YSIsMzEsIlx1YmU2OFx1YmU2YVx1YmU3MFx1YmU3MVx1YmU3M1x1YmU3NFx1YmU3''@;'; put 'put ''NVx1YmU3Ylx1YmU3Y1x1YmU3ZFx1YmU4MFx1YmU4NFx1YmU4Y1x1YmU4ZFx1YmU4Zlx1YmU5MFx1YmU5MVx1YmU5OFx1YmU5OVx1YmVhOFx1YmVkMFx1YmVkMVx1YmVkNFx1YmVkN1x1YmVkOFx1YmVlMFx1YmVlM1x1YmVlNFx1YmVlNVx1YmVlY1x1YmYwMVx1YmYwOFx1YmYwOVx1YmYxOFx1''@;'; put 'put ''YmYxOVx1YmYxYlx1YmYxY1x1YmYxZFx1YmY0MFx1YmY0MVx1YmY0NFx1YmY0OFx1YmY1MFx1YmY1MVx1YmY1NVx1YmY5NFx1YmZiMFx1YmZjNVx1YmZjY1x1YmZjZFx1YmZkMFx1YmZkNFx1YmZkY1x1YmZkZlx1YmZlMVx1YzAzY1x1YzA1MVx1YzA1OFx1YzA1Y1x1YzA2MFx1YzA2OFx1YzA2''@;'; put 'put ''OVx1YzA5MFx1YzA5MVx1YzA5NFx1YzA5OFx1YzBhMFx1YzBhMVx1YzBhM1x1YzBhNVx1YzBhY1x1YzBhZFx1YzBhZlx1YzBiMFx1YzBiM1x1YzBiNFx1YzBiNVx1YzBiNlx1YzBiY1x1YzBiZFx1YzBiZlx1YzBjMFx1YzBjMVx1YzBjNVx1YzBjOFx1YzBjOVx1YzBjY1x1YzBkMFx1YzBkOFx1''@;'; put 'put ''YzBkOVx1YzBkYlx1YzBkY1x1YzBkZFx1YzBlNCJdLFsiYmM0MSIsIlx1ZDM2YSIsMTcsIlx1ZDM3ZVx1ZDM3Zlx1ZDM4MVx1ZDM4Mlx1ZDM4M1x1ZDM4NVx1ZDM4Nlx1ZDM4NyJdLFsiYmM2MSIsIlx1ZDM4OFx1ZDM4OVx1ZDM4YVx1ZDM4Ylx1ZDM4ZVx1ZDM5MiIsNSwiXHVkMzlhXHVkMzli''@;'; put 'put ''XHVkMzlkXHVkMzllXHVkMzlmXHVkM2ExIiw2LCJcdWQzYWFcdWQzYWNcdWQzYWUiXSxbImJjODEiLCJcdWQzYWYiLDQsIlx1ZDNiNVx1ZDNiNlx1ZDNiN1x1ZDNiOVx1ZDNiYVx1ZDNiYlx1ZDNiZCIsNiwiXHVkM2M2XHVkM2M3XHVkM2NhIiw1LCJcdWQzZDEiLDUsIlx1YzBlNVx1YzBlOFx1''@;'; put 'put ''YzBlY1x1YzBmNFx1YzBmNVx1YzBmN1x1YzBmOVx1YzEwMFx1YzEwNFx1YzEwOFx1YzExMFx1YzExNVx1YzExYyIsNCwiXHVjMTIzXHVjMTI0XHVjMTI2XHVjMTI3XHVjMTJjXHVjMTJkXHVjMTJmXHVjMTMwXHVjMTMxXHVjMTM2XHVjMTM4XHVjMTM5XHVjMTNjXHVjMTQwXHVjMTQ4XHVjMTQ5''@;'; put 'put ''XHVjMTRiXHVjMTRjXHVjMTRkXHVjMTU0XHVjMTU1XHVjMTU4XHVjMTVjXHVjMTY0XHVjMTY1XHVjMTY3XHVjMTY4XHVjMTY5XHVjMTcwXHVjMTc0XHVjMTc4XHVjMTg1XHVjMThjXHVjMThkXHVjMThlXHVjMTkwXHVjMTk0XHVjMTk2XHVjMTljXHVjMTlkXHVjMTlmXHVjMWExXHVjMWE1XHVj''@;'; put 'put ''MWE4XHVjMWE5XHVjMWFjXHVjMWIwXHVjMWJkXHVjMWM0XHVjMWM4XHVjMWNjXHVjMWQ0XHVjMWQ3XHVjMWQ4XHVjMWUwXHVjMWU0XHVjMWU4XHVjMWYwXHVjMWYxXHVjMWYzXHVjMWZjXHVjMWZkXHVjMjAwXHVjMjA0XHVjMjBjXHVjMjBkXHVjMjBmXHVjMjExXHVjMjE4XHVjMjE5XHVjMjFj''@;'; put 'put ''XHVjMjFmXHVjMjIwXHVjMjI4XHVjMjI5XHVjMjJiXHVjMjJkIl0sWyJiZDQxIiwiXHVkM2Q3XHVkM2Q5Iiw3LCJcdWQzZTJcdWQzZTQiLDcsIlx1ZDNlZVx1ZDNlZlx1ZDNmMVx1ZDNmMlx1ZDNmM1x1ZDNmNVx1ZDNmNlx1ZDNmNyJdLFsiYmQ2MSIsIlx1ZDNmOFx1ZDNmOVx1ZDNmYVx1ZDNm''@;'; put 'put ''Ylx1ZDNmZVx1ZDQwMFx1ZDQwMiIsNSwiXHVkNDA5IiwxM10sWyJiZDgxIiwiXHVkNDE3Iiw1LCJcdWQ0MWUiLDI1LCJcdWMyMmZcdWMyMzFcdWMyMzJcdWMyMzRcdWMyNDhcdWMyNTBcdWMyNTFcdWMyNTRcdWMyNThcdWMyNjBcdWMyNjVcdWMyNmNcdWMyNmRcdWMyNzBcdWMyNzRcdWMyN2Nc''@;'; put 'put ''dWMyN2RcdWMyN2ZcdWMyODFcdWMyODhcdWMyODlcdWMyOTBcdWMyOThcdWMyOWJcdWMyOWRcdWMyYTRcdWMyYTVcdWMyYThcdWMyYWNcdWMyYWRcdWMyYjRcdWMyYjVcdWMyYjdcdWMyYjlcdWMyZGNcdWMyZGRcdWMyZTBcdWMyZTNcdWMyZTRcdWMyZWJcdWMyZWNcdWMyZWRcdWMyZWZcdWMy''@;'; put 'put ''ZjFcdWMyZjZcdWMyZjhcdWMyZjlcdWMyZmJcdWMyZmNcdWMzMDBcdWMzMDhcdWMzMDlcdWMzMGNcdWMzMGRcdWMzMTNcdWMzMTRcdWMzMTVcdWMzMThcdWMzMWNcdWMzMjRcdWMzMjVcdWMzMjhcdWMzMjlcdWMzNDVcdWMzNjhcdWMzNjlcdWMzNmNcdWMzNzBcdWMzNzJcdWMzNzhcdWMzNzlc''@;'; put 'put ''dWMzN2NcdWMzN2RcdWMzODRcdWMzODhcdWMzOGNcdWMzYzBcdWMzZDhcdWMzZDlcdWMzZGNcdWMzZGZcdWMzZTBcdWMzZTJcdWMzZThcdWMzZTlcdWMzZWRcdWMzZjRcdWMzZjVcdWMzZjhcdWM0MDhcdWM0MTBcdWM0MjRcdWM0MmNcdWM0MzAiXSxbImJlNDEiLCJcdWQ0MzgiLDcsIlx1ZDQ0''@;'; put 'put ''MVx1ZDQ0Mlx1ZDQ0M1x1ZDQ0NSIsMTRdLFsiYmU2MSIsIlx1ZDQ1NCIsNywiXHVkNDVkXHVkNDVlXHVkNDVmXHVkNDYxXHVkNDYyXHVkNDYzXHVkNDY1Iiw3LCJcdWQ0NmVcdWQ0NzBcdWQ0NzFcdWQ0NzIiXSxbImJlODEiLCJcdWQ0NzMiLDQsIlx1ZDQ3YVx1ZDQ3Ylx1ZDQ3ZFx1ZDQ3ZVx1''@;'; put 'put ''ZDQ4MVx1ZDQ4MyIsNCwiXHVkNDhhXHVkNDhjXHVkNDhlIiw1LCJcdWQ0OTUiLDgsIlx1YzQzNFx1YzQzY1x1YzQzZFx1YzQ0OFx1YzQ2NFx1YzQ2NVx1YzQ2OFx1YzQ2Y1x1YzQ3NFx1YzQ3NVx1YzQ3OVx1YzQ4MFx1YzQ5NFx1YzQ5Y1x1YzRiOFx1YzRiY1x1YzRlOVx1YzRmMFx1YzRmMVx1''@;'; put 'put ''YzRmNFx1YzRmOFx1YzRmYVx1YzRmZlx1YzUwMFx1YzUwMVx1YzUwY1x1YzUxMFx1YzUxNFx1YzUxY1x1YzUyOFx1YzUyOVx1YzUyY1x1YzUzMFx1YzUzOFx1YzUzOVx1YzUzYlx1YzUzZFx1YzU0NFx1YzU0NVx1YzU0OFx1YzU0OVx1YzU0YVx1YzU0Y1x1YzU0ZFx1YzU0ZVx1YzU1M1x1YzU1''@;'; put 'put ''NFx1YzU1NVx1YzU1N1x1YzU1OFx1YzU1OVx1YzU1ZFx1YzU1ZVx1YzU2MFx1YzU2MVx1YzU2NFx1YzU2OFx1YzU3MFx1YzU3MVx1YzU3M1x1YzU3NFx1YzU3NVx1YzU3Y1x1YzU3ZFx1YzU4MFx1YzU4NFx1YzU4N1x1YzU4Y1x1YzU4ZFx1YzU4Zlx1YzU5MVx1YzU5NVx1YzU5N1x1YzU5OFx1''@;'; put 'put ''YzU5Y1x1YzVhMFx1YzVhOVx1YzViNFx1YzViNVx1YzViOFx1YzViOVx1YzViYlx1YzViY1x1YzViZFx1YzViZVx1YzVjNCIsNiwiXHVjNWNjXHVjNWNlIl0sWyJiZjQxIiwiXHVkNDllIiwxMCwiXHVkNGFhIiwxNF0sWyJiZjYxIiwiXHVkNGI5IiwxOCwiXHVkNGNkXHVkNGNlXHVkNGNmXHVk''@;'; put 'put ''NGQxXHVkNGQyXHVkNGQzXHVkNGQ1Il0sWyJiZjgxIiwiXHVkNGQ2Iiw1LCJcdWQ0ZGRcdWQ0ZGVcdWQ0ZTAiLDcsIlx1ZDRlOVx1ZDRlYVx1ZDRlYlx1ZDRlZFx1ZDRlZVx1ZDRlZlx1ZDRmMSIsNiwiXHVkNGY5XHVkNGZhXHVkNGZjXHVjNWQwXHVjNWQxXHVjNWQ0XHVjNWQ4XHVjNWUwXHVj''@;'; put 'put ''NWUxXHVjNWUzXHVjNWU1XHVjNWVjXHVjNWVkXHVjNWVlXHVjNWYwXHVjNWY0XHVjNWY2XHVjNWY3XHVjNWZjIiw1LCJcdWM2MDVcdWM2MDZcdWM2MDdcdWM2MDhcdWM2MGNcdWM2MTBcdWM2MThcdWM2MTlcdWM2MWJcdWM2MWNcdWM2MjRcdWM2MjVcdWM2MjhcdWM2MmNcdWM2MmRcdWM2MmVc''@;'; put 'put ''dWM2MzBcdWM2MzNcdWM2MzRcdWM2MzVcdWM2MzdcdWM2MzlcdWM2M2JcdWM2NDBcdWM2NDFcdWM2NDRcdWM2NDhcdWM2NTBcdWM2NTFcdWM2NTNcdWM2NTRcdWM2NTVcdWM2NWNcdWM2NWRcdWM2NjBcdWM2NmNcdWM2NmZcdWM2NzFcdWM2NzhcdWM2NzlcdWM2N2NcdWM2ODBcdWM2ODhcdWM2''@;'; put 'put ''ODlcdWM2OGJcdWM2OGRcdWM2OTRcdWM2OTVcdWM2OThcdWM2OWNcdWM2YTRcdWM2YTVcdWM2YTdcdWM2YTlcdWM2YjBcdWM2YjFcdWM2YjRcdWM2YjhcdWM2YjlcdWM2YmFcdWM2YzBcdWM2YzFcdWM2YzNcdWM2YzVcdWM2Y2NcdWM2Y2RcdWM2ZDBcdWM2ZDRcdWM2ZGNcdWM2ZGRcdWM2ZTBc''@;'; put 'put ''dWM2ZTFcdWM2ZTgiXSxbImMwNDEiLCJcdWQ0ZmUiLDUsIlx1ZDUwNVx1ZDUwNlx1ZDUwN1x1ZDUwOVx1ZDUwYVx1ZDUwYlx1ZDUwZCIsNiwiXHVkNTE2XHVkNTE4Iiw1XSxbImMwNjEiLCJcdWQ1MWUiLDI1XSxbImMwODEiLCJcdWQ1MzhcdWQ1MzlcdWQ1M2FcdWQ1M2JcdWQ1M2VcdWQ1M2Zc''@;'; put 'put ''dWQ1NDFcdWQ1NDJcdWQ1NDNcdWQ1NDUiLDYsIlx1ZDU0ZVx1ZDU1MFx1ZDU1MiIsNSwiXHVkNTVhXHVkNTViXHVkNTVkXHVkNTVlXHVkNTVmXHVkNTYxXHVkNTYyXHVkNTYzXHVjNmU5XHVjNmVjXHVjNmYwXHVjNmY4XHVjNmY5XHVjNmZkXHVjNzA0XHVjNzA1XHVjNzA4XHVjNzBjXHVjNzE0''@;'; put 'put ''XHVjNzE1XHVjNzE3XHVjNzE5XHVjNzIwXHVjNzIxXHVjNzI0XHVjNzI4XHVjNzMwXHVjNzMxXHVjNzMzXHVjNzM1XHVjNzM3XHVjNzNjXHVjNzNkXHVjNzQwXHVjNzQ0XHVjNzRhXHVjNzRjXHVjNzRkXHVjNzRmXHVjNzUxIiw3LCJcdWM3NWNcdWM3NjBcdWM3NjhcdWM3NmJcdWM3NzRcdWM3''@;'; put 'put ''NzVcdWM3NzhcdWM3N2NcdWM3N2RcdWM3N2VcdWM3ODNcdWM3ODRcdWM3ODVcdWM3ODdcdWM3ODhcdWM3ODlcdWM3OGFcdWM3OGVcdWM3OTBcdWM3OTFcdWM3OTRcdWM3OTZcdWM3OTdcdWM3OThcdWM3OWFcdWM3YTBcdWM3YTFcdWM3YTNcdWM3YTRcdWM3YTVcdWM3YTZcdWM3YWNcdWM3YWRc''@;'; put 'put ''dWM3YjBcdWM3YjRcdWM3YmNcdWM3YmRcdWM3YmZcdWM3YzBcdWM3YzFcdWM3YzhcdWM3YzlcdWM3Y2NcdWM3Y2VcdWM3ZDBcdWM3ZDhcdWM3ZGRcdWM3ZTRcdWM3ZThcdWM3ZWNcdWM4MDBcdWM4MDFcdWM4MDRcdWM4MDhcdWM4MGEiXSxbImMxNDEiLCJcdWQ1NjRcdWQ1NjZcdWQ1NjdcdWQ1''@;'; put 'put ''NmFcdWQ1NmNcdWQ1NmUiLDUsIlx1ZDU3Nlx1ZDU3N1x1ZDU3OVx1ZDU3YVx1ZDU3Ylx1ZDU3ZCIsNiwiXHVkNTg2XHVkNThhXHVkNThiIl0sWyJjMTYxIiwiXHVkNThjXHVkNThkXHVkNThlXHVkNThmXHVkNTkxIiwxOSwiXHVkNWE2XHVkNWE3Il0sWyJjMTgxIiwiXHVkNWE4IiwzMSwiXHVj''@;'; put 'put ''ODEwXHVjODExXHVjODEzXHVjODE1XHVjODE2XHVjODFjXHVjODFkXHVjODIwXHVjODI0XHVjODJjXHVjODJkXHVjODJmXHVjODMxXHVjODM4XHVjODNjXHVjODQwXHVjODQ4XHVjODQ5XHVjODRjXHVjODRkXHVjODU0XHVjODcwXHVjODcxXHVjODc0XHVjODc4XHVjODdhXHVjODgwXHVjODgx''@;'; put 'put ''XHVjODgzXHVjODg1XHVjODg2XHVjODg3XHVjODhiXHVjODhjXHVjODhkXHVjODk0XHVjODlkXHVjODlmXHVjOGExXHVjOGE4XHVjOGJjXHVjOGJkXHVjOGM0XHVjOGM4XHVjOGNjXHVjOGQ0XHVjOGQ1XHVjOGQ3XHVjOGQ5XHVjOGUwXHVjOGUxXHVjOGU0XHVjOGY1XHVjOGZjXHVjOGZkXHVj''@;'; put 'put ''OTAwXHVjOTA0XHVjOTA1XHVjOTA2XHVjOTBjXHVjOTBkXHVjOTBmXHVjOTExXHVjOTE4XHVjOTJjXHVjOTM0XHVjOTUwXHVjOTUxXHVjOTU0XHVjOTU4XHVjOTYwXHVjOTYxXHVjOTYzXHVjOTZjXHVjOTcwXHVjOTc0XHVjOTdjXHVjOTg4XHVjOTg5XHVjOThjXHVjOTkwXHVjOTk4XHVjOTk5''@;'; put 'put ''XHVjOTliXHVjOTlkXHVjOWMwXHVjOWMxXHVjOWM0XHVjOWM3XHVjOWM4XHVjOWNhXHVjOWQwXHVjOWQxXHVjOWQzIl0sWyJjMjQxIiwiXHVkNWNhXHVkNWNiXHVkNWNkXHVkNWNlXHVkNWNmXHVkNWQxXHVkNWQzIiw0LCJcdWQ1ZGFcdWQ1ZGNcdWQ1ZGUiLDUsIlx1ZDVlNlx1ZDVlN1x1ZDVl''@;'; put 'put ''OVx1ZDVlYVx1ZDVlYlx1ZDVlZFx1ZDVlZSJdLFsiYzI2MSIsIlx1ZDVlZiIsNCwiXHVkNWY2XHVkNWY4XHVkNWZhIiw1LCJcdWQ2MDJcdWQ2MDNcdWQ2MDVcdWQ2MDZcdWQ2MDdcdWQ2MDkiLDYsIlx1ZDYxMiJdLFsiYzI4MSIsIlx1ZDYxNiIsNSwiXHVkNjFkXHVkNjFlXHVkNjFmXHVkNjIx''@;'; put 'put ''XHVkNjIyXHVkNjIzXHVkNjI1Iiw3LCJcdWQ2MmUiLDksIlx1ZDYzYVx1ZDYzYlx1YzlkNVx1YzlkNlx1YzlkOVx1YzlkYVx1YzlkY1x1YzlkZFx1YzllMFx1YzllMlx1YzllNFx1YzllN1x1YzllY1x1YzllZFx1YzllZlx1YzlmMFx1YzlmMVx1YzlmOFx1YzlmOVx1YzlmY1x1Y2EwMFx1Y2Ew''@;'; put 'put ''OFx1Y2EwOVx1Y2EwYlx1Y2EwY1x1Y2EwZFx1Y2ExNFx1Y2ExOFx1Y2EyOVx1Y2E0Y1x1Y2E0ZFx1Y2E1MFx1Y2E1NFx1Y2E1Y1x1Y2E1ZFx1Y2E1Zlx1Y2E2MFx1Y2E2MVx1Y2E2OFx1Y2E3ZFx1Y2E4NFx1Y2E5OFx1Y2FiY1x1Y2FiZFx1Y2FjMFx1Y2FjNFx1Y2FjY1x1Y2FjZFx1Y2FjZlx1''@;'; put 'put ''Y2FkMVx1Y2FkM1x1Y2FkOFx1Y2FkOVx1Y2FlMFx1Y2FlY1x1Y2FmNFx1Y2IwOFx1Y2IxMFx1Y2IxNFx1Y2IxOFx1Y2IyMFx1Y2IyMVx1Y2I0MVx1Y2I0OFx1Y2I0OVx1Y2I0Y1x1Y2I1MFx1Y2I1OFx1Y2I1OVx1Y2I1ZFx1Y2I2NFx1Y2I3OFx1Y2I3OVx1Y2I5Y1x1Y2JiOFx1Y2JkNFx1Y2Jl''@;'; put 'put ''NFx1Y2JlN1x1Y2JlOVx1Y2MwY1x1Y2MwZFx1Y2MxMFx1Y2MxNFx1Y2MxY1x1Y2MxZFx1Y2MyMVx1Y2MyMlx1Y2MyN1x1Y2MyOFx1Y2MyOVx1Y2MyY1x1Y2MyZVx1Y2MzMFx1Y2MzOFx1Y2MzOVx1Y2MzYiJdLFsiYzM0MSIsIlx1ZDYzZFx1ZDYzZVx1ZDYzZlx1ZDY0MVx1ZDY0Mlx1ZDY0M1x1''@;'; put 'put ''ZDY0NFx1ZDY0Nlx1ZDY0N1x1ZDY0YVx1ZDY0Y1x1ZDY0ZVx1ZDY0Zlx1ZDY1MFx1ZDY1Mlx1ZDY1M1x1ZDY1Nlx1ZDY1N1x1ZDY1OVx1ZDY1YVx1ZDY1Ylx1ZDY1ZCIsNF0sWyJjMzYxIiwiXHVkNjYyIiw0LCJcdWQ2NjhcdWQ2NmEiLDUsIlx1ZDY3Mlx1ZDY3M1x1ZDY3NSIsMTFdLFsiYzM4''@;'; put 'put ''MSIsIlx1ZDY4MVx1ZDY4Mlx1ZDY4NFx1ZDY4NiIsNSwiXHVkNjhlXHVkNjhmXHVkNjkxXHVkNjkyXHVkNjkzXHVkNjk1Iiw3LCJcdWQ2OWVcdWQ2YTBcdWQ2YTIiLDUsIlx1ZDZhOVx1ZDZhYVx1Y2MzY1x1Y2MzZFx1Y2MzZVx1Y2M0NFx1Y2M0NVx1Y2M0OFx1Y2M0Y1x1Y2M1NFx1Y2M1NVx1''@;'; put 'put ''Y2M1N1x1Y2M1OFx1Y2M1OVx1Y2M2MFx1Y2M2NFx1Y2M2Nlx1Y2M2OFx1Y2M3MFx1Y2M3NVx1Y2M5OFx1Y2M5OVx1Y2M5Y1x1Y2NhMFx1Y2NhOFx1Y2NhOVx1Y2NhYlx1Y2NhY1x1Y2NhZFx1Y2NiNFx1Y2NiNVx1Y2NiOFx1Y2NiY1x1Y2NjNFx1Y2NjNVx1Y2NjN1x1Y2NjOVx1Y2NkMFx1Y2Nk''@;'; put 'put ''NFx1Y2NlNFx1Y2NlY1x1Y2NmMFx1Y2QwMVx1Y2QwOFx1Y2QwOVx1Y2QwY1x1Y2QxMFx1Y2QxOFx1Y2QxOVx1Y2QxYlx1Y2QxZFx1Y2QyNFx1Y2QyOFx1Y2QyY1x1Y2QzOVx1Y2Q1Y1x1Y2Q2MFx1Y2Q2NFx1Y2Q2Y1x1Y2Q2ZFx1Y2Q2Zlx1Y2Q3MVx1Y2Q3OFx1Y2Q4OFx1Y2Q5NFx1Y2Q5NVx1''@;'; put 'put ''Y2Q5OFx1Y2Q5Y1x1Y2RhNFx1Y2RhNVx1Y2RhN1x1Y2RhOVx1Y2RiMFx1Y2RjNFx1Y2RjY1x1Y2RkMFx1Y2RlOFx1Y2RlY1x1Y2RmMFx1Y2RmOFx1Y2RmOVx1Y2RmYlx1Y2RmZFx1Y2UwNFx1Y2UwOFx1Y2UwY1x1Y2UxNFx1Y2UxOVx1Y2UyMFx1Y2UyMVx1Y2UyNFx1Y2UyOFx1Y2UzMFx1Y2Uz''@;'; put 'put ''MVx1Y2UzM1x1Y2UzNSJdLFsiYzQ0MSIsIlx1ZDZhYlx1ZDZhZFx1ZDZhZVx1ZDZhZlx1ZDZiMSIsNywiXHVkNmJhXHVkNmJjIiw3LCJcdWQ2YzZcdWQ2YzdcdWQ2YzlcdWQ2Y2FcdWQ2Y2IiXSxbImM0NjEiLCJcdWQ2Y2RcdWQ2Y2VcdWQ2Y2ZcdWQ2ZDBcdWQ2ZDJcdWQ2ZDNcdWQ2ZDVcdWQ2''@;'; put 'put ''ZDZcdWQ2ZDhcdWQ2ZGEiLDUsIlx1ZDZlMVx1ZDZlMlx1ZDZlM1x1ZDZlNVx1ZDZlNlx1ZDZlN1x1ZDZlOSIsNF0sWyJjNDgxIiwiXHVkNmVlXHVkNmVmXHVkNmYxXHVkNmYyXHVkNmYzXHVkNmY0XHVkNmY2Iiw1LCJcdWQ2ZmVcdWQ2ZmZcdWQ3MDFcdWQ3MDJcdWQ3MDNcdWQ3MDUiLDExLCJc''@;'; put 'put ''dWQ3MTJcdWQ3MTNcdWQ3MTRcdWNlNThcdWNlNTlcdWNlNWNcdWNlNWZcdWNlNjBcdWNlNjFcdWNlNjhcdWNlNjlcdWNlNmJcdWNlNmRcdWNlNzRcdWNlNzVcdWNlNzhcdWNlN2NcdWNlODRcdWNlODVcdWNlODdcdWNlODlcdWNlOTBcdWNlOTFcdWNlOTRcdWNlOThcdWNlYTBcdWNlYTFcdWNl''@;'; put 'put ''YTNcdWNlYTRcdWNlYTVcdWNlYWNcdWNlYWRcdWNlYzFcdWNlZTRcdWNlZTVcdWNlZThcdWNlZWJcdWNlZWNcdWNlZjRcdWNlZjVcdWNlZjdcdWNlZjhcdWNlZjlcdWNmMDBcdWNmMDFcdWNmMDRcdWNmMDhcdWNmMTBcdWNmMTFcdWNmMTNcdWNmMTVcdWNmMWNcdWNmMjBcdWNmMjRcdWNmMmNc''@;'; put 'put ''dWNmMmRcdWNmMmZcdWNmMzBcdWNmMzFcdWNmMzhcdWNmNTRcdWNmNTVcdWNmNThcdWNmNWNcdWNmNjRcdWNmNjVcdWNmNjdcdWNmNjlcdWNmNzBcdWNmNzFcdWNmNzRcdWNmNzhcdWNmODBcdWNmODVcdWNmOGNcdWNmYTFcdWNmYThcdWNmYjBcdWNmYzRcdWNmZTBcdWNmZTFcdWNmZTRcdWNm''@;'; put 'put ''ZThcdWNmZjBcdWNmZjFcdWNmZjNcdWNmZjVcdWNmZmNcdWQwMDBcdWQwMDRcdWQwMTFcdWQwMThcdWQwMmRcdWQwMzRcdWQwMzVcdWQwMzhcdWQwM2MiXSxbImM1NDEiLCJcdWQ3MTVcdWQ3MTZcdWQ3MTdcdWQ3MWFcdWQ3MWJcdWQ3MWRcdWQ3MWVcdWQ3MWZcdWQ3MjEiLDYsIlx1ZDcyYVx1''@;'; put 'put ''ZDcyY1x1ZDcyZSIsNSwiXHVkNzM2XHVkNzM3XHVkNzM5Il0sWyJjNTYxIiwiXHVkNzNhXHVkNzNiXHVkNzNkIiw2LCJcdWQ3NDVcdWQ3NDZcdWQ3NDhcdWQ3NGEiLDUsIlx1ZDc1Mlx1ZDc1M1x1ZDc1NVx1ZDc1YSIsNF0sWyJjNTgxIiwiXHVkNzVmXHVkNzYyXHVkNzY0XHVkNzY2XHVkNzY3''@;'; put 'put ''XHVkNzY4XHVkNzZhXHVkNzZiXHVkNzZkXHVkNzZlXHVkNzZmXHVkNzcxXHVkNzcyXHVkNzczXHVkNzc1Iiw2LCJcdWQ3N2VcdWQ3N2ZcdWQ3ODBcdWQ3ODIiLDUsIlx1ZDc4YVx1ZDc4Ylx1ZDA0NFx1ZDA0NVx1ZDA0N1x1ZDA0OVx1ZDA1MFx1ZDA1NFx1ZDA1OFx1ZDA2MFx1ZDA2Y1x1ZDA2''@;'; put 'put ''ZFx1ZDA3MFx1ZDA3NFx1ZDA3Y1x1ZDA3ZFx1ZDA4MVx1ZDBhNFx1ZDBhNVx1ZDBhOFx1ZDBhY1x1ZDBiNFx1ZDBiNVx1ZDBiN1x1ZDBiOVx1ZDBjMFx1ZDBjMVx1ZDBjNFx1ZDBjOFx1ZDBjOVx1ZDBkMFx1ZDBkMVx1ZDBkM1x1ZDBkNFx1ZDBkNVx1ZDBkY1x1ZDBkZFx1ZDBlMFx1ZDBlNFx1''@;'; put 'put ''ZDBlY1x1ZDBlZFx1ZDBlZlx1ZDBmMFx1ZDBmMVx1ZDBmOFx1ZDEwZFx1ZDEzMFx1ZDEzMVx1ZDEzNFx1ZDEzOFx1ZDEzYVx1ZDE0MFx1ZDE0MVx1ZDE0M1x1ZDE0NFx1ZDE0NVx1ZDE0Y1x1ZDE0ZFx1ZDE1MFx1ZDE1NFx1ZDE1Y1x1ZDE1ZFx1ZDE1Zlx1ZDE2MVx1ZDE2OFx1ZDE2Y1x1ZDE3''@;'; put 'put ''Y1x1ZDE4NFx1ZDE4OFx1ZDFhMFx1ZDFhMVx1ZDFhNFx1ZDFhOFx1ZDFiMFx1ZDFiMVx1ZDFiM1x1ZDFiNVx1ZDFiYVx1ZDFiY1x1ZDFjMFx1ZDFkOFx1ZDFmNFx1ZDFmOFx1ZDIwN1x1ZDIwOVx1ZDIxMFx1ZDIyY1x1ZDIyZFx1ZDIzMFx1ZDIzNFx1ZDIzY1x1ZDIzZFx1ZDIzZlx1ZDI0MVx1''@;'; put 'put ''ZDI0OFx1ZDI1YyJdLFsiYzY0MSIsIlx1ZDc4ZFx1ZDc4ZVx1ZDc4Zlx1ZDc5MSIsNiwiXHVkNzlhXHVkNzljXHVkNzllIiw1XSxbImM2YTEiLCJcdWQyNjRcdWQyODBcdWQyODFcdWQyODRcdWQyODhcdWQyOTBcdWQyOTFcdWQyOTVcdWQyOWNcdWQyYTBcdWQyYTRcdWQyYWNcdWQyYjFcdWQy''@;'; put 'put ''YjhcdWQyYjlcdWQyYmNcdWQyYmZcdWQyYzBcdWQyYzJcdWQyYzhcdWQyYzlcdWQyY2JcdWQyZDRcdWQyZDhcdWQyZGNcdWQyZTRcdWQyZTVcdWQyZjBcdWQyZjFcdWQyZjRcdWQyZjhcdWQzMDBcdWQzMDFcdWQzMDNcdWQzMDVcdWQzMGNcdWQzMGRcdWQzMGVcdWQzMTBcdWQzMTRcdWQzMTZc''@;'; put 'put ''dWQzMWNcdWQzMWRcdWQzMWZcdWQzMjBcdWQzMjFcdWQzMjVcdWQzMjhcdWQzMjlcdWQzMmNcdWQzMzBcdWQzMzhcdWQzMzlcdWQzM2JcdWQzM2NcdWQzM2RcdWQzNDRcdWQzNDVcdWQzN2NcdWQzN2RcdWQzODBcdWQzODRcdWQzOGNcdWQzOGRcdWQzOGZcdWQzOTBcdWQzOTFcdWQzOThcdWQz''@;'; put 'put ''OTlcdWQzOWNcdWQzYTBcdWQzYThcdWQzYTlcdWQzYWJcdWQzYWRcdWQzYjRcdWQzYjhcdWQzYmNcdWQzYzRcdWQzYzVcdWQzYzhcdWQzYzlcdWQzZDBcdWQzZDhcdWQzZTFcdWQzZTNcdWQzZWNcdWQzZWRcdWQzZjBcdWQzZjRcdWQzZmNcdWQzZmRcdWQzZmZcdWQ0MDEiXSxbImM3YTEiLCJc''@;'; put 'put ''dWQ0MDhcdWQ0MWRcdWQ0NDBcdWQ0NDRcdWQ0NWNcdWQ0NjBcdWQ0NjRcdWQ0NmRcdWQ0NmZcdWQ0NzhcdWQ0NzlcdWQ0N2NcdWQ0N2ZcdWQ0ODBcdWQ0ODJcdWQ0ODhcdWQ0ODlcdWQ0OGJcdWQ0OGRcdWQ0OTRcdWQ0YTlcdWQ0Y2NcdWQ0ZDBcdWQ0ZDRcdWQ0ZGNcdWQ0ZGZcdWQ0ZThcdWQ0''@;'; put 'put ''ZWNcdWQ0ZjBcdWQ0ZjhcdWQ0ZmJcdWQ0ZmRcdWQ1MDRcdWQ1MDhcdWQ1MGNcdWQ1MTRcdWQ1MTVcdWQ1MTdcdWQ1M2NcdWQ1M2RcdWQ1NDBcdWQ1NDRcdWQ1NGNcdWQ1NGRcdWQ1NGZcdWQ1NTFcdWQ1NThcdWQ1NTlcdWQ1NWNcdWQ1NjBcdWQ1NjVcdWQ1NjhcdWQ1NjlcdWQ1NmJcdWQ1NmRc''@;'; put 'put ''dWQ1NzRcdWQ1NzVcdWQ1NzhcdWQ1N2NcdWQ1ODRcdWQ1ODVcdWQ1ODdcdWQ1ODhcdWQ1ODlcdWQ1OTBcdWQ1YTVcdWQ1YzhcdWQ1YzlcdWQ1Y2NcdWQ1ZDBcdWQ1ZDJcdWQ1ZDhcdWQ1ZDlcdWQ1ZGJcdWQ1ZGRcdWQ1ZTRcdWQ1ZTVcdWQ1ZThcdWQ1ZWNcdWQ1ZjRcdWQ1ZjVcdWQ1ZjdcdWQ1''@;'; put 'put ''ZjlcdWQ2MDBcdWQ2MDFcdWQ2MDRcdWQ2MDhcdWQ2MTBcdWQ2MTFcdWQ2MTNcdWQ2MTRcdWQ2MTVcdWQ2MWNcdWQ2MjAiXSxbImM4YTEiLCJcdWQ2MjRcdWQ2MmRcdWQ2MzhcdWQ2MzlcdWQ2M2NcdWQ2NDBcdWQ2NDVcdWQ2NDhcdWQ2NDlcdWQ2NGJcdWQ2NGRcdWQ2NTFcdWQ2NTRcdWQ2NTVc''@;'; put 'put ''dWQ2NThcdWQ2NWNcdWQ2NjdcdWQ2NjlcdWQ2NzBcdWQ2NzFcdWQ2NzRcdWQ2ODNcdWQ2ODVcdWQ2OGNcdWQ2OGRcdWQ2OTBcdWQ2OTRcdWQ2OWRcdWQ2OWZcdWQ2YTFcdWQ2YThcdWQ2YWNcdWQ2YjBcdWQ2YjlcdWQ2YmJcdWQ2YzRcdWQ2YzVcdWQ2YzhcdWQ2Y2NcdWQ2ZDFcdWQ2ZDRcdWQ2''@;'; put 'put ''ZDdcdWQ2ZDlcdWQ2ZTBcdWQ2ZTRcdWQ2ZThcdWQ2ZjBcdWQ2ZjVcdWQ2ZmNcdWQ2ZmRcdWQ3MDBcdWQ3MDRcdWQ3MTFcdWQ3MThcdWQ3MTlcdWQ3MWNcdWQ3MjBcdWQ3MjhcdWQ3MjlcdWQ3MmJcdWQ3MmRcdWQ3MzRcdWQ3MzVcdWQ3MzhcdWQ3M2NcdWQ3NDRcdWQ3NDdcdWQ3NDlcdWQ3NTBc''@;'; put 'put ''dWQ3NTFcdWQ3NTRcdWQ3NTZcdWQ3NTdcdWQ3NThcdWQ3NTlcdWQ3NjBcdWQ3NjFcdWQ3NjNcdWQ3NjVcdWQ3NjlcdWQ3NmNcdWQ3NzBcdWQ3NzRcdWQ3N2NcdWQ3N2RcdWQ3ODFcdWQ3ODhcdWQ3ODlcdWQ3OGNcdWQ3OTBcdWQ3OThcdWQ3OTlcdWQ3OWJcdWQ3OWQiXSxbImNhYTEiLCJcdTRm''@;'; put 'put ''M2RcdTRmNzNcdTUwNDdcdTUwZjlcdTUyYTBcdTUzZWZcdTU0NzVcdTU0ZTVcdTU2MDlcdTVhYzFcdTViYjZcdTY2ODdcdTY3YjZcdTY3YjdcdTY3ZWZcdTZiNGNcdTczYzJcdTc1YzJcdTdhM2NcdTgyZGJcdTgzMDRcdTg4NTdcdTg4ODhcdThhMzZcdThjYzhcdThkY2ZcdThlZmJcdThmZTZc''@;'; put 'put ''dTk5ZDVcdTUyM2JcdTUzNzRcdTU0MDRcdTYwNmFcdTYxNjRcdTZiYmNcdTczY2ZcdTgxMWFcdTg5YmFcdTg5ZDJcdTk1YTNcdTRmODNcdTUyMGFcdTU4YmVcdTU5NzhcdTU5ZTZcdTVlNzJcdTVlNzlcdTYxYzdcdTYzYzBcdTY3NDZcdTY3ZWNcdTY4N2ZcdTZmOTdcdTc2NGVcdTc3MGJcdTc4''@;'; put 'put ''ZjVcdTdhMDhcdTdhZmZcdTdjMjFcdTgwOWRcdTgyNmVcdTgyNzFcdThhZWJcdTk1OTNcdTRlNmJcdTU1OWRcdTY2ZjdcdTZlMzRcdTc4YTNcdTdhZWRcdTg0NWJcdTg5MTBcdTg3NGVcdTk3YThcdTUyZDhcdTU3NGVcdTU4MmFcdTVkNGNcdTYxMWZcdTYxYmVcdTYyMjFcdTY1NjJcdTY3ZDFc''@;'; put 'put ''dTZhNDRcdTZlMWJcdTc1MThcdTc1YjNcdTc2ZTNcdTc3YjBcdTdkM2FcdTkwYWZcdTk0NTFcdTk0NTJcdTlmOTUiXSxbImNiYTEiLCJcdTUzMjNcdTVjYWNcdTc1MzJcdTgwZGJcdTkyNDBcdTk1OThcdTUyNWJcdTU4MDhcdTU5ZGNcdTVjYTFcdTVkMTdcdTVlYjdcdTVmM2FcdTVmNGFcdTYx''@;'; put 'put ''NzdcdTZjNWZcdTc1N2FcdTc1ODZcdTdjZTBcdTdkNzNcdTdkYjFcdTdmOGNcdTgxNTRcdTgyMjFcdTg1OTFcdTg5NDFcdThiMWJcdTkyZmNcdTk2NGRcdTljNDdcdTRlY2JcdTRlZjdcdTUwMGJcdTUxZjFcdTU4NGZcdTYxMzdcdTYxM2VcdTYxNjhcdTY1MzlcdTY5ZWFcdTZmMTFcdTc1YTVc''@;'; put 'put ''dTc2ODZcdTc2ZDZcdTdiODdcdTgyYTVcdTg0Y2JcdWY5MDBcdTkzYTdcdTk1OGJcdTU1ODBcdTViYTJcdTU3NTFcdWY5MDFcdTdjYjNcdTdmYjlcdTkxYjVcdTUwMjhcdTUzYmJcdTVjNDVcdTVkZThcdTYyZDJcdTYzNmVcdTY0ZGFcdTY0ZTdcdTZlMjBcdTcwYWNcdTc5NWJcdThkZGRcdThl''@;'; put 'put ''MWVcdWY5MDJcdTkwN2RcdTkyNDVcdTkyZjhcdTRlN2VcdTRlZjZcdTUwNjVcdTVkZmVcdTVlZmFcdTYxMDZcdTY5NTdcdTgxNzFcdTg2NTRcdThlNDdcdTkzNzVcdTlhMmJcdTRlNWVcdTUwOTFcdTY3NzBcdTY4NDBcdTUxMDlcdTUyOGRcdTUyOTJcdTZhYTIiXSxbImNjYTEiLCJcdTc3YmNc''@;'; put 'put ''dTkyMTBcdTllZDRcdTUyYWJcdTYwMmZcdThmZjJcdTUwNDhcdTYxYTlcdTYzZWRcdTY0Y2FcdTY4M2NcdTZhODRcdTZmYzBcdTgxODhcdTg5YTFcdTk2OTRcdTU4MDVcdTcyN2RcdTcyYWNcdTc1MDRcdTdkNzlcdTdlNmRcdTgwYTlcdTg5OGJcdThiNzRcdTkwNjNcdTlkNTFcdTYyODlcdTZj''@;'; put 'put ''N2FcdTZmNTRcdTdkNTBcdTdmM2FcdThhMjNcdTUxN2NcdTYxNGFcdTdiOWRcdThiMTlcdTkyNTdcdTkzOGNcdTRlYWNcdTRmZDNcdTUwMWVcdTUwYmVcdTUxMDZcdTUyYzFcdTUyY2RcdTUzN2ZcdTU3NzBcdTU4ODNcdTVlOWFcdTVmOTFcdTYxNzZcdTYxYWNcdTY0Y2VcdTY1NmNcdTY2NmZc''@;'; put 'put ''dTY2YmJcdTY2ZjRcdTY4OTdcdTZkODdcdTcwODVcdTcwZjFcdTc0OWZcdTc0YTVcdTc0Y2FcdTc1ZDlcdTc4NmNcdTc4ZWNcdTdhZGZcdTdhZjZcdTdkNDVcdTdkOTNcdTgwMTVcdTgwM2ZcdTgxMWJcdTgzOTZcdThiNjZcdThmMTVcdTkwMTVcdTkzZTFcdTk4MDNcdTk4MzhcdTlhNWFcdTli''@;'; put 'put ''ZThcdTRmYzJcdTU1NTNcdTU4M2FcdTU5NTFcdTViNjNcdTVjNDZcdTYwYjhcdTYyMTJcdTY4NDJcdTY4YjAiXSxbImNkYTEiLCJcdTY4ZThcdTZlYWFcdTc1NGNcdTc2NzhcdTc4Y2VcdTdhM2RcdTdjZmJcdTdlNmJcdTdlN2NcdThhMDhcdThhYTFcdThjM2ZcdTk2OGVcdTlkYzRcdTUzZTRc''@;'; put 'put ''dTUzZTlcdTU0NGFcdTU0NzFcdTU2ZmFcdTU5ZDFcdTViNjRcdTVjM2JcdTVlYWJcdTYyZjdcdTY1MzdcdTY1NDVcdTY1NzJcdTY2YTBcdTY3YWZcdTY5YzFcdTZjYmRcdTc1ZmNcdTc2OTBcdTc3N2VcdTdhM2ZcdTdmOTRcdTgwMDNcdTgwYTFcdTgxOGZcdTgyZTZcdTgyZmRcdTgzZjBcdTg1''@;'; put 'put ''YzFcdTg4MzFcdTg4YjRcdThhYTVcdWY5MDNcdThmOWNcdTkzMmVcdTk2YzdcdTk4NjdcdTlhZDhcdTlmMTNcdTU0ZWRcdTY1OWJcdTY2ZjJcdTY4OGZcdTdhNDBcdThjMzdcdTlkNjBcdTU2ZjBcdTU3NjRcdTVkMTFcdTY2MDZcdTY4YjFcdTY4Y2RcdTZlZmVcdTc0MjhcdTg4OWVcdTliZTRc''@;'; put 'put ''dTZjNjhcdWY5MDRcdTlhYThcdTRmOWJcdTUxNmNcdTUxNzFcdTUyOWZcdTViNTRcdTVkZTVcdTYwNTBcdTYwNmRcdTYyZjFcdTYzYTdcdTY1M2JcdTczZDlcdTdhN2FcdTg2YTNcdThjYTJcdTk3OGZcdTRlMzJcdTViZTFcdTYyMDhcdTY3OWNcdTc0ZGMiXSxbImNlYTEiLCJcdTc5ZDFcdTgz''@;'; put 'put ''ZDNcdThhODdcdThhYjJcdThkZThcdTkwNGVcdTkzNGJcdTk4NDZcdTVlZDNcdTY5ZThcdTg1ZmZcdTkwZWRcdWY5MDVcdTUxYTBcdTViOThcdTViZWNcdTYxNjNcdTY4ZmFcdTZiM2VcdTcwNGNcdTc0MmZcdTc0ZDhcdTdiYTFcdTdmNTBcdTgzYzVcdTg5YzBcdThjYWJcdTk1ZGNcdTk5Mjhc''@;'; put 'put ''dTUyMmVcdTYwNWRcdTYyZWNcdTkwMDJcdTRmOGFcdTUxNDlcdTUzMjFcdTU4ZDlcdTVlZTNcdTY2ZTBcdTZkMzhcdTcwOWFcdTcyYzJcdTczZDZcdTdiNTBcdTgwZjFcdTk0NWJcdTUzNjZcdTYzOWJcdTdmNmJcdTRlNTZcdTUwODBcdTU4NGFcdTU4ZGVcdTYwMmFcdTYxMjdcdTYyZDBcdTY5''@;'; put 'put ''ZDBcdTliNDFcdTViOGZcdTdkMThcdTgwYjFcdThmNWZcdTRlYTRcdTUwZDFcdTU0YWNcdTU1YWNcdTViMGNcdTVkYTBcdTVkZTdcdTY1MmFcdTY1NGVcdTY4MjFcdTZhNGJcdTcyZTFcdTc2OGVcdTc3ZWZcdTdkNWVcdTdmZjlcdTgxYTBcdTg1NGVcdTg2ZGZcdThmMDNcdThmNGVcdTkwY2Fc''@;'; put 'put ''dTk5MDNcdTlhNTVcdTliYWJcdTRlMThcdTRlNDVcdTRlNWRcdTRlYzdcdTRmZjFcdTUxNzdcdTUyZmUiXSxbImNmYTEiLCJcdTUzNDBcdTUzZTNcdTUzZTVcdTU0OGVcdTU2MTRcdTU3NzVcdTU3YTJcdTViYzdcdTVkODdcdTVlZDBcdTYxZmNcdTYyZDhcdTY1NTFcdTY3YjhcdTY3ZTlcdTY5''@;'; put 'put ''Y2JcdTZiNTBcdTZiYzZcdTZiZWNcdTZjNDJcdTZlOWRcdTcwNzhcdTcyZDdcdTczOTZcdTc0MDNcdTc3YmZcdTc3ZTlcdTdhNzZcdTdkN2ZcdTgwMDlcdTgxZmNcdTgyMDVcdTgyMGFcdTgyZGZcdTg4NjJcdThiMzNcdThjZmNcdThlYzBcdTkwMTFcdTkwYjFcdTkyNjRcdTkyYjZcdTk5ZDJc''@;'; put 'put ''dTlhNDVcdTljZTlcdTlkZDdcdTlmOWNcdTU3MGJcdTVjNDBcdTgzY2FcdTk3YTBcdTk3YWJcdTllYjRcdTU0MWJcdTdhOThcdTdmYTRcdTg4ZDlcdThlY2RcdTkwZTFcdTU4MDBcdTVjNDhcdTYzOThcdTdhOWZcdTViYWVcdTVmMTNcdTdhNzlcdTdhYWVcdTgyOGVcdThlYWNcdTUwMjZcdTUy''@;'; put 'put ''MzhcdTUyZjhcdTUzNzdcdTU3MDhcdTYyZjNcdTYzNzJcdTZiMGFcdTZkYzNcdTc3MzdcdTUzYTVcdTczNTdcdTg1NjhcdThlNzZcdTk1ZDVcdTY3M2FcdTZhYzNcdTZmNzBcdThhNmRcdThlY2NcdTk5NGJcdWY5MDZcdTY2NzdcdTZiNzhcdThjYjQiXSxbImQwYTEiLCJcdTliM2NcdWY5MDdc''@;'; put 'put ''dTUzZWJcdTU3MmRcdTU5NGVcdTYzYzZcdTY5ZmJcdTczZWFcdTc4NDVcdTdhYmFcdTdhYzVcdTdjZmVcdTg0NzVcdTg5OGZcdThkNzNcdTkwMzVcdTk1YThcdTUyZmJcdTU3NDdcdTc1NDdcdTdiNjBcdTgzY2NcdTkyMWVcdWY5MDhcdTZhNThcdTUxNGJcdTUyNGJcdTUyODdcdTYyMWZcdTY4''@;'; put 'put ''ZDhcdTY5NzVcdTk2OTlcdTUwYzVcdTUyYTRcdTUyZTRcdTYxYzNcdTY1YTRcdTY4MzlcdTY5ZmZcdTc0N2VcdTdiNGJcdTgyYjlcdTgzZWJcdTg5YjJcdThiMzlcdThmZDFcdTk5NDlcdWY5MDlcdTRlY2FcdTU5OTdcdTY0ZDJcdTY2MTFcdTZhOGVcdTc0MzRcdTc5ODFcdTc5YmRcdTgyYTlc''@;'; put 'put ''dTg4N2VcdTg4N2ZcdTg5NWZcdWY5MGFcdTkzMjZcdTRmMGJcdTUzY2FcdTYwMjVcdTYyNzFcdTZjNzJcdTdkMWFcdTdkNjZcdTRlOThcdTUxNjJcdTc3ZGNcdTgwYWZcdTRmMDFcdTRmMGVcdTUxNzZcdTUxODBcdTU1ZGNcdTU2NjhcdTU3M2JcdTU3ZmFcdTU3ZmNcdTU5MTRcdTU5NDdcdTU5''@;'; put 'put ''OTNcdTViYzRcdTVjOTBcdTVkMGVcdTVkZjFcdTVlN2VcdTVmY2NcdTYyODBcdTY1ZDdcdTY1ZTMiXSxbImQxYTEiLCJcdTY3MWVcdTY3MWZcdTY3NWVcdTY4Y2JcdTY4YzRcdTZhNWZcdTZiM2FcdTZjMjNcdTZjN2RcdTZjODJcdTZkYzdcdTczOThcdTc0MjZcdTc0MmFcdTc0ODJcdTc0YTNc''@;'; put 'put ''dTc1NzhcdTc1N2ZcdTc4ODFcdTc4ZWZcdTc5NDFcdTc5NDdcdTc5NDhcdTc5N2FcdTdiOTVcdTdkMDBcdTdkYmFcdTdmODhcdTgwMDZcdTgwMmRcdTgwOGNcdThhMThcdThiNGZcdThjNDhcdThkNzdcdTkzMjFcdTkzMjRcdTk4ZTJcdTk5NTFcdTlhMGVcdTlhMGZcdTlhNjVcdTllOTJcdTdk''@;'; put 'put ''Y2FcdTRmNzZcdTU0MDlcdTYyZWVcdTY4NTRcdTkxZDFcdTU1YWJcdTUxM2FcdWY5MGJcdWY5MGNcdTVhMWNcdTYxZTZcdWY5MGRcdTYyY2ZcdTYyZmZcdWY5MGUiLDUsIlx1OTBhM1x1ZjkxNCIsNCwiXHU4YWZlXHVmOTE5XHVmOTFhXHVmOTFiXHVmOTFjXHU2Njk2XHVmOTFkXHU3MTU2XHVm''@;'; put 'put ''OTFlXHVmOTFmXHU5NmUzXHVmOTIwXHU2MzRmXHU2MzdhXHU1MzU3XHVmOTIxXHU2NzhmXHU2OTYwXHU2ZTczXHVmOTIyXHU3NTM3XHVmOTIzXHVmOTI0XHVmOTI1Il0sWyJkMmExIiwiXHU3ZDBkXHVmOTI2XHVmOTI3XHU4ODcyXHU1NmNhXHU1YTE4XHVmOTI4Iiw0LCJcdTRlNDNcdWY5MmRc''@;'; put 'put ''dTUxNjdcdTU5NDhcdTY3ZjBcdTgwMTBcdWY5MmVcdTU5NzNcdTVlNzRcdTY0OWFcdTc5Y2FcdTVmZjVcdTYwNmNcdTYyYzhcdTYzN2JcdTViZTdcdTViZDdcdTUyYWFcdWY5MmZcdTU5NzRcdTVmMjlcdTYwMTJcdWY5MzBcdWY5MzFcdWY5MzJcdTc0NTlcdWY5MzMiLDUsIlx1OTlkMVx1Zjkz''@;'; put 'put ''OSIsMTAsIlx1NmZjM1x1Zjk0NFx1Zjk0NVx1ODFiZlx1OGZiMlx1NjBmMVx1Zjk0Nlx1Zjk0N1x1ODE2Nlx1Zjk0OFx1Zjk0OVx1NWMzZlx1Zjk0YSIsNywiXHU1YWU5XHU4YTI1XHU2NzdiXHU3ZDEwXHVmOTUyIiw1LCJcdTgwZmRcdWY5NThcdWY5NTlcdTVjM2NcdTZjZTVcdTUzM2ZcdTZl''@;'; put 'put ''YmFcdTU5MWFcdTgzMzYiXSxbImQzYTEiLCJcdTRlMzlcdTRlYjZcdTRmNDZcdTU1YWVcdTU3MThcdTU4YzdcdTVmNTZcdTY1YjdcdTY1ZTZcdTZhODBcdTZiYjVcdTZlNGRcdTc3ZWRcdTdhZWZcdTdjMWVcdTdkZGVcdTg2Y2JcdTg4OTJcdTkxMzJcdTkzNWJcdTY0YmJcdTZmYmVcdTczN2Fc''@;'; put 'put ''dTc1YjhcdTkwNTRcdTU1NTZcdTU3NGRcdTYxYmFcdTY0ZDRcdTY2YzdcdTZkZTFcdTZlNWJcdTZmNmRcdTZmYjlcdTc1ZjBcdTgwNDNcdTgxYmRcdTg1NDFcdTg5ODNcdThhYzdcdThiNWFcdTkzMWZcdTZjOTNcdTc1NTNcdTdiNTRcdThlMGZcdTkwNWRcdTU1MTBcdTU4MDJcdTU4NThcdTVl''@;'; put 'put ''NjJcdTYyMDdcdTY0OWVcdTY4ZTBcdTc1NzZcdTdjZDZcdTg3YjNcdTllZThcdTRlZTNcdTU3ODhcdTU3NmVcdTU5MjdcdTVjMGRcdTVjYjFcdTVlMzZcdTVmODVcdTYyMzRcdTY0ZTFcdTczYjNcdTgxZmFcdTg4OGJcdThjYjhcdTk2OGFcdTllZGJcdTViODVcdTVmYjdcdTYwYjNcdTUwMTJc''@;'; put 'put ''dTUyMDBcdTUyMzBcdTU3MTZcdTU4MzVcdTU4NTdcdTVjMGVcdTVjNjBcdTVjZjZcdTVkOGJcdTVlYTZcdTVmOTJcdTYwYmNcdTYzMTFcdTYzODlcdTY0MTdcdTY4NDMiXSxbImQ0YTEiLCJcdTY4ZjlcdTZhYzJcdTZkZDhcdTZlMjFcdTZlZDRcdTZmZTRcdTcxZmVcdTc2ZGNcdTc3NzlcdTc5''@;'; put 'put ''YjFcdTdhM2JcdTg0MDRcdTg5YTlcdThjZWRcdThkZjNcdThlNDhcdTkwMDNcdTkwMTRcdTkwNTNcdTkwZmRcdTkzNGRcdTk2NzZcdTk3ZGNcdTZiZDJcdTcwMDZcdTcyNThcdTcyYTJcdTczNjhcdTc3NjNcdTc5YmZcdTdiZTRcdTdlOWJcdThiODBcdTU4YTlcdTYwYzdcdTY1NjZcdTY1ZmRc''@;'; put 'put ''dTY2YmVcdTZjOGNcdTcxMWVcdTcxYzlcdThjNWFcdTk4MTNcdTRlNmRcdTdhODFcdTRlZGRcdTUxYWNcdTUxY2RcdTUyZDVcdTU0MGNcdTYxYTdcdTY3NzFcdTY4NTBcdTY4ZGZcdTZkMWVcdTZmN2NcdTc1YmNcdTc3YjNcdTdhZTVcdTgwZjRcdTg0NjNcdTkyODVcdTUxNWNcdTY1OTdcdTY3''@;'; put 'put ''NWNcdTY3OTNcdTc1ZDhcdTdhYzdcdTgzNzNcdWY5NWFcdThjNDZcdTkwMTdcdTk4MmRcdTVjNmZcdTgxYzBcdTgyOWFcdTkwNDFcdTkwNmZcdTkyMGRcdTVmOTdcdTVkOWRcdTZhNTlcdTcxYzhcdTc2N2JcdTdiNDlcdTg1ZTRcdThiMDRcdTkxMjdcdTlhMzBcdTU1ODdcdTYxZjZcdWY5NWJc''@;'; put 'put ''dTc2NjlcdTdmODUiXSxbImQ1YTEiLCJcdTg2M2ZcdTg3YmFcdTg4ZjhcdTkwOGZcdWY5NWNcdTZkMWJcdTcwZDlcdTczZGVcdTdkNjFcdTg0M2RcdWY5NWRcdTkxNmFcdTk5ZjFcdWY5NWVcdTRlODJcdTUzNzVcdTZiMDRcdTZiMTJcdTcwM2VcdTcyMWJcdTg2MmRcdTllMWVcdTUyNGNcdThm''@;'; put 'put ''YTNcdTVkNTBcdTY0ZTVcdTY1MmNcdTZiMTZcdTZmZWJcdTdjNDNcdTdlOWNcdTg1Y2RcdTg5NjRcdTg5YmRcdTYyYzlcdTgxZDhcdTg4MWZcdTVlY2FcdTY3MTdcdTZkNmFcdTcyZmNcdTc0MDVcdTc0NmZcdTg3ODJcdTkwZGVcdTRmODZcdTVkMGRcdTVmYTBcdTg0MGFcdTUxYjdcdTYzYTBc''@;'; put 'put ''dTc1NjVcdTRlYWVcdTUwMDZcdTUxNjlcdTUxYzlcdTY4ODFcdTZhMTFcdTdjYWVcdTdjYjFcdTdjZTdcdTgyNmZcdThhZDJcdThmMWJcdTkxY2ZcdTRmYjZcdTUxMzdcdTUyZjVcdTU0NDJcdTVlZWNcdTYxNmVcdTYyM2VcdTY1YzVcdTZhZGFcdTZmZmVcdTc5MmFcdTg1ZGNcdTg4MjNcdTk1''@;'; put 'put ''YWRcdTlhNjJcdTlhNmFcdTllOTdcdTllY2VcdTUyOWJcdTY2YzZcdTZiNzdcdTcwMWRcdTc5MmJcdThmNjJcdTk3NDJcdTYxOTBcdTYyMDBcdTY1MjNcdTZmMjMiXSxbImQ2YTEiLCJcdTcxNDlcdTc0ODlcdTdkZjRcdTgwNmZcdTg0ZWVcdThmMjZcdTkwMjNcdTkzNGFcdTUxYmRcdTUyMTdc''@;'; put 'put ''dTUyYTNcdTZkMGNcdTcwYzhcdTg4YzJcdTVlYzlcdTY1ODJcdTZiYWVcdTZmYzJcdTdjM2VcdTczNzVcdTRlZTRcdTRmMzZcdTU2ZjlcdWY5NWZcdTVjYmFcdTVkYmFcdTYwMWNcdTczYjJcdTdiMmRcdTdmOWFcdTdmY2VcdTgwNDZcdTkwMWVcdTkyMzRcdTk2ZjZcdTk3NDhcdTk4MThcdTlm''@;'; put 'put ''NjFcdTRmOGJcdTZmYTdcdTc5YWVcdTkxYjRcdTk2YjdcdTUyZGVcdWY5NjBcdTY0ODhcdTY0YzRcdTZhZDNcdTZmNWVcdTcwMThcdTcyMTBcdTc2ZTdcdTgwMDFcdTg2MDZcdTg2NWNcdThkZWZcdThmMDVcdTk3MzJcdTliNmZcdTlkZmFcdTllNzVcdTc4OGNcdTc5N2ZcdTdkYTBcdTgzYzlc''@;'; put 'put ''dTkzMDRcdTllN2ZcdTllOTNcdThhZDZcdTU4ZGZcdTVmMDRcdTY3MjdcdTcwMjdcdTc0Y2ZcdTdjNjBcdTgwN2VcdTUxMjFcdTcwMjhcdTcyNjJcdTc4Y2FcdThjYzJcdThjZGFcdThjZjRcdTk2ZjdcdTRlODZcdTUwZGFcdTViZWVcdTVlZDZcdTY1OTlcdTcxY2VcdTc2NDJcdTc3YWRcdTgw''@;'; put 'put ''NGFcdTg0ZmMiXSxbImQ3YTEiLCJcdTkwN2NcdTliMjdcdTlmOGRcdTU4ZDhcdTVhNDFcdTVjNjJcdTZhMTNcdTZkZGFcdTZmMGZcdTc2M2JcdTdkMmZcdTdlMzdcdTg1MWVcdTg5MzhcdTkzZTRcdTk2NGJcdTUyODlcdTY1ZDJcdTY3ZjNcdTY5YjRcdTZkNDFcdTZlOWNcdTcwMGZcdTc0MDlc''@;'; put 'put ''dTc0NjBcdTc1NTlcdTc2MjRcdTc4NmJcdThiMmNcdTk4NWVcdTUxNmRcdTYyMmVcdTk2NzhcdTRmOTZcdTUwMmJcdTVkMTlcdTZkZWFcdTdkYjhcdThmMmFcdTVmOGJcdTYxNDRcdTY4MTdcdWY5NjFcdTk2ODZcdTUyZDJcdTgwOGJcdTUxZGNcdTUxY2NcdTY5NWVcdTdhMWNcdTdkYmVcdTgz''@;'; put 'put ''ZjFcdTk2NzVcdTRmZGFcdTUyMjlcdTUzOThcdTU0MGZcdTU1MGVcdTVjNjVcdTYwYTdcdTY3NGVcdTY4YThcdTZkNmNcdTcyODFcdTcyZjhcdTc0MDZcdTc0ODNcdWY5NjJcdTc1ZTJcdTdjNmNcdTdmNzlcdTdmYjhcdTgzODlcdTg4Y2ZcdTg4ZTFcdTkxY2NcdTkxZDBcdTk2ZTJcdTliYzlc''@;'; put 'put ''dTU0MWRcdTZmN2VcdTcxZDBcdTc0OThcdTg1ZmFcdThlYWFcdTk2YTNcdTljNTdcdTllOWZcdTY3OTdcdTZkY2JcdTc0MzNcdTgxZThcdTk3MTZcdTc4MmMiXSxbImQ4YTEiLCJcdTdhY2JcdTdiMjBcdTdjOTJcdTY0NjlcdTc0NmFcdTc1ZjJcdTc4YmNcdTc4ZThcdTk5YWNcdTliNTRcdTll''@;'; put 'put ''YmJcdTViZGVcdTVlNTVcdTZmMjBcdTgxOWNcdTgzYWJcdTkwODhcdTRlMDdcdTUzNGRcdTVhMjlcdTVkZDJcdTVmNGVcdTYxNjJcdTYzM2RcdTY2NjlcdTY2ZmNcdTZlZmZcdTZmMmJcdTcwNjNcdTc3OWVcdTg0MmNcdTg1MTNcdTg4M2JcdThmMTNcdTk5NDVcdTljM2JcdTU1MWNcdTYyYjlc''@;'; put 'put ''dTY3MmJcdTZjYWJcdTgzMDlcdTg5NmFcdTk3N2FcdTRlYTFcdTU5ODRcdTVmZDhcdTVmZDlcdTY3MWJcdTdkYjJcdTdmNTRcdTgyOTJcdTgzMmJcdTgzYmRcdThmMWVcdTkwOTlcdTU3Y2JcdTU5YjlcdTVhOTJcdTViZDBcdTY2MjdcdTY3OWFcdTY4ODVcdTZiY2ZcdTcxNjRcdTdmNzVcdThj''@;'; put 'put ''YjdcdThjZTNcdTkwODFcdTliNDVcdTgxMDhcdThjOGFcdTk2NGNcdTlhNDBcdTllYTVcdTViNWZcdTZjMTNcdTczMWJcdTc2ZjJcdTc2ZGZcdTg0MGNcdTUxYWFcdTg5OTNcdTUxNGRcdTUxOTVcdTUyYzlcdTY4YzlcdTZjOTRcdTc3MDRcdTc3MjBcdTdkYmZcdTdkZWNcdTk3NjJcdTllYjVc''@;'; put 'put ''dTZlYzUiXSxbImQ5YTEiLCJcdTg1MTFcdTUxYTVcdTU0MGRcdTU0N2RcdTY2MGVcdTY2OWRcdTY5MjdcdTZlOWZcdTc2YmZcdTc3OTFcdTgzMTdcdTg0YzJcdTg3OWZcdTkxNjlcdTkyOThcdTljZjRcdTg4ODJcdTRmYWVcdTUxOTJcdTUyZGZcdTU5YzZcdTVlM2RcdTYxNTVcdTY0NzhcdTY0''@;'; put 'put ''NzlcdTY2YWVcdTY3ZDBcdTZhMjFcdTZiY2RcdTZiZGJcdTcyNWZcdTcyNjFcdTc0NDFcdTc3MzhcdTc3ZGJcdTgwMTdcdTgyYmNcdTgzMDVcdThiMDBcdThiMjhcdThjOGNcdTY3MjhcdTZjOTBcdTcyNjdcdTc2ZWVcdTc3NjZcdTdhNDZcdTlkYTlcdTZiN2ZcdTZjOTJcdTU5MjJcdTY3MjZc''@;'; put 'put ''dTg0OTlcdTUzNmZcdTU4OTNcdTU5OTlcdTVlZGZcdTYzY2ZcdTY2MzRcdTY3NzNcdTZlM2FcdTczMmJcdTdhZDdcdTgyZDdcdTkzMjhcdTUyZDlcdTVkZWJcdTYxYWVcdTYxY2JcdTYyMGFcdTYyYzdcdTY0YWJcdTY1ZTBcdTY5NTlcdTZiNjZcdTZiY2JcdTcxMjFcdTczZjdcdTc1NWRcdTdl''@;'; put 'put ''NDZcdTgyMWVcdTgzMDJcdTg1NmFcdThhYTNcdThjYmZcdTk3MjdcdTlkNjFcdTU4YThcdTllZDhcdTUwMTFcdTUyMGVcdTU0M2JcdTU1NGZcdTY1ODciXSxbImRhYTEiLCJcdTZjNzZcdTdkMGFcdTdkMGJcdTgwNWVcdTg2OGFcdTk1ODBcdTk2ZWZcdTUyZmZcdTZjOTVcdTcyNjlcdTU0NzNc''@;'; put 'put ''dTVhOWFcdTVjM2VcdTVkNGJcdTVmNGNcdTVmYWVcdTY3MmFcdTY4YjZcdTY5NjNcdTZlM2NcdTZlNDRcdTc3MDlcdTdjNzNcdTdmOGVcdTg1ODdcdThiMGVcdThmZjdcdTk3NjFcdTllZjRcdTVjYjdcdTYwYjZcdTYxMGRcdTYxYWJcdTY1NGZcdTY1ZmJcdTY1ZmNcdTZjMTFcdTZjZWZcdTcz''@;'; put 'put ''OWZcdTczYzlcdTdkZTFcdTk1OTRcdTViYzZcdTg3MWNcdThiMTBcdTUyNWRcdTUzNWFcdTYyY2RcdTY0MGZcdTY0YjJcdTY3MzRcdTZhMzhcdTZjY2FcdTczYzBcdTc0OWVcdTdiOTRcdTdjOTVcdTdlMWJcdTgxOGFcdTgyMzZcdTg1ODRcdThmZWJcdTk2ZjlcdTk5YzFcdTRmMzRcdTUzNGFc''@;'; put 'put ''dTUzY2RcdTUzZGJcdTYyY2NcdTY0MmNcdTY1MDBcdTY1OTFcdTY5YzNcdTZjZWVcdTZmNThcdTczZWRcdTc1NTRcdTc2MjJcdTc2ZTRcdTc2ZmNcdTc4ZDBcdTc4ZmJcdTc5MmNcdTdkNDZcdTgyMmNcdTg3ZTBcdThmZDRcdTk4MTJcdTk4ZWZcdTUyYzNcdTYyZDRcdTY0YTVcdTZlMjRcdTZm''@;'; put 'put ''NTEiXSxbImRiYTEiLCJcdTc2N2NcdThkY2JcdTkxYjFcdTkyNjJcdTlhZWVcdTliNDNcdTUwMjNcdTUwOGRcdTU3NGFcdTU5YThcdTVjMjhcdTVlNDdcdTVmNzdcdTYyM2ZcdTY1M2VcdTY1YjlcdTY1YzFcdTY2MDlcdTY3OGJcdTY5OWNcdTZlYzJcdTc4YzVcdTdkMjFcdTgwYWFcdTgxODBc''@;'; put 'put ''dTgyMmJcdTgyYjNcdTg0YTFcdTg2OGNcdThhMmFcdThiMTdcdTkwYTZcdTk2MzJcdTlmOTBcdTUwMGRcdTRmZjNcdWY5NjNcdTU3ZjlcdTVmOThcdTYyZGNcdTYzOTJcdTY3NmZcdTZlNDNcdTcxMTlcdTc2YzNcdTgwY2NcdTgwZGFcdTg4ZjRcdTg4ZjVcdTg5MTlcdThjZTBcdThmMjlcdTkx''@;'; put 'put ''NGRcdTk2NmFcdTRmMmZcdTRmNzBcdTVlMWJcdTY3Y2ZcdTY4MjJcdTc2N2RcdTc2N2VcdTliNDRcdTVlNjFcdTZhMGFcdTcxNjlcdTcxZDRcdTc1NmFcdWY5NjRcdTdlNDFcdTg1NDNcdTg1ZTlcdTk4ZGNcdTRmMTBcdTdiNGZcdTdmNzBcdTk1YTVcdTUxZTFcdTVlMDZcdTY4YjVcdTZjM2Vc''@;'; put 'put ''dTZjNGVcdTZjZGJcdTcyYWZcdTdiYzRcdTgzMDNcdTZjZDVcdTc0M2FcdTUwZmJcdTUyODhcdTU4YzFcdTY0ZDhcdTZhOTdcdTc0YTdcdTc2NTYiXSxbImRjYTEiLCJcdTc4YTdcdTg2MTdcdTk1ZTJcdTk3MzlcdWY5NjVcdTUzNWVcdTVmMDFcdThiOGFcdThmYThcdThmYWZcdTkwOGFcdTUy''@;'; put 'put ''MjVcdTc3YTVcdTljNDlcdTlmMDhcdTRlMTlcdTUwMDJcdTUxNzVcdTVjNWJcdTVlNzdcdTY2MWVcdTY2M2FcdTY3YzRcdTY4YzVcdTcwYjNcdTc1MDFcdTc1YzVcdTc5YzlcdTdhZGRcdThmMjdcdTk5MjBcdTlhMDhcdTRmZGRcdTU4MjFcdTU4MzFcdTViZjZcdTY2NmVcdTZiNjVcdTZkMTFc''@;'; put 'put ''dTZlN2FcdTZmN2RcdTczZTRcdTc1MmJcdTgzZTlcdTg4ZGNcdTg5MTNcdThiNWNcdThmMTRcdTRmMGZcdTUwZDVcdTUzMTBcdTUzNWNcdTViOTNcdTVmYTlcdTY3MGRcdTc5OGZcdTgxNzlcdTgzMmZcdTg1MTRcdTg5MDdcdTg5ODZcdThmMzlcdThmM2JcdTk5YTVcdTljMTJcdTY3MmNcdTRl''@;'; put 'put ''NzZcdTRmZjhcdTU5NDlcdTVjMDFcdTVjZWZcdTVjZjBcdTYzNjdcdTY4ZDJcdTcwZmRcdTcxYTJcdTc0MmJcdTdlMmJcdTg0ZWNcdTg3MDJcdTkwMjJcdTkyZDJcdTljZjNcdTRlMGRcdTRlZDhcdTRmZWZcdTUwODVcdTUyNTZcdTUyNmZcdTU0MjZcdTU0OTBcdTU3ZTBcdTU5MmJcdTVhNjYi''@;'; put 'put ''XSxbImRkYTEiLCJcdTViNWFcdTViNzVcdTViY2NcdTVlOWNcdWY5NjZcdTYyNzZcdTY1NzdcdTY1YTdcdTZkNmVcdTZlYTVcdTcyMzZcdTdiMjZcdTdjM2ZcdTdmMzZcdTgxNTBcdTgxNTFcdTgxOWFcdTgyNDBcdTgyOTlcdTgzYTlcdThhMDNcdThjYTBcdThjZTZcdThjZmJcdThkNzRcdThk''@;'; put 'put ''YmFcdTkwZThcdTkxZGNcdTk2MWNcdTk2NDRcdTk5ZDlcdTljZTdcdTUzMTdcdTUyMDZcdTU0MjlcdTU2NzRcdTU4YjNcdTU5NTRcdTU5NmVcdTVmZmZcdTYxYTRcdTYyNmVcdTY2MTBcdTZjN2VcdTcxMWFcdTc2YzZcdTdjODlcdTdjZGVcdTdkMWJcdTgyYWNcdThjYzFcdTk2ZjBcdWY5Njdc''@;'; put 'put ''dTRmNWJcdTVmMTdcdTVmN2ZcdTYyYzJcdTVkMjlcdTY3MGJcdTY4ZGFcdTc4N2NcdTdlNDNcdTlkNmNcdTRlMTVcdTUwOTlcdTUzMTVcdTUzMmFcdTUzNTFcdTU5ODNcdTVhNjJcdTVlODdcdTYwYjJcdTYxOGFcdTYyNDlcdTYyNzlcdTY1OTBcdTY3ODdcdTY5YTdcdTZiZDRcdTZiZDZcdTZi''@;'; put 'put ''ZDdcdTZiZDhcdTZjYjhcdWY5NjhcdTc0MzVcdTc1ZmFcdTc4MTJcdTc4OTFcdTc5ZDVcdTc5ZDhcdTdjODNcdTdkY2JcdTdmZTFcdTgwYTUiXSxbImRlYTEiLCJcdTgxM2VcdTgxYzJcdTgzZjJcdTg3MWFcdTg4ZThcdThhYjlcdThiNmNcdThjYmJcdTkxMTlcdTk3NWVcdTk4ZGJcdTlmM2Jc''@;'; put 'put ''dTU2YWNcdTViMmFcdTVmNmNcdTY1OGNcdTZhYjNcdTZiYWZcdTZkNWNcdTZmZjFcdTcwMTVcdTcyNWRcdTczYWRcdThjYTdcdThjZDNcdTk4M2JcdTYxOTFcdTZjMzdcdTgwNThcdTlhMDFcdTRlNGRcdTRlOGJcdTRlOWJcdTRlZDVcdTRmM2FcdTRmM2NcdTRmN2ZcdTRmZGZcdTUwZmZcdTUz''@;'; put 'put ''ZjJcdTUzZjhcdTU1MDZcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5NjJcdTVhMTFcdTViZWJcdTViZmFcdTVjMDRcdTVkZjNcdTVlMmJcdTVmOTlcdTYwMWRcdTYzNjhcdTY1OWNcdTY1YWZcdTY3ZjZcdTY3ZmJcdTY4YWRcdTZiN2JcdTZjOTlcdTZjZDdcdTZlMjNcdTcwMDlcdTczNDVcdTc4MDJc''@;'; put 'put ''dTc5M2VcdTc5NDBcdTc5NjBcdTc5YzFcdTdiZTlcdTdkMTdcdTdkNzJcdTgwODZcdTgyMGRcdTgzOGVcdTg0ZDFcdTg2YzdcdTg4ZGZcdThhNTBcdThhNWVcdThiMWRcdThjZGNcdThkNjZcdThmYWRcdTkwYWFcdTk4ZmNcdTk5ZGZcdTllOWRcdTUyNGFcdWY5NjlcdTY3MTRcdWY5NmEiXSxb''@;'; put 'put ''ImRmYTEiLCJcdTUwOThcdTUyMmFcdTVjNzFcdTY1NjNcdTZjNTVcdTczY2FcdTc1MjNcdTc1OWRcdTdiOTdcdTg0OWNcdTkxNzhcdTk3MzBcdTRlNzdcdTY0OTJcdTZiYmFcdTcxNWVcdTg1YTlcdTRlMDlcdWY5NmJcdTY3NDlcdTY4ZWVcdTZlMTdcdTgyOWZcdTg1MThcdTg4NmJcdTYzZjdc''@;'; put 'put ''dTZmODFcdTkyMTJcdTk4YWZcdTRlMGFcdTUwYjdcdTUwY2ZcdTUxMWZcdTU1NDZcdTU1YWFcdTU2MTdcdTViNDBcdTVjMTlcdTVjZTBcdTVlMzhcdTVlOGFcdTVlYTBcdTVlYzJcdTYwZjNcdTY4NTFcdTZhNjFcdTZlNThcdTcyM2RcdTcyNDBcdTcyYzBcdTc2ZjhcdTc5NjVcdTdiYjFcdTdm''@;'; put 'put ''ZDRcdTg4ZjNcdTg5ZjRcdThhNzNcdThjNjFcdThjZGVcdTk3MWNcdTU4NWVcdTc0YmRcdThjZmRcdTU1YzdcdWY5NmNcdTdhNjFcdTdkMjJcdTgyNzJcdTcyNzJcdTc1MWZcdTc1MjVcdWY5NmRcdTdiMTlcdTU4ODVcdTU4ZmJcdTVkYmNcdTVlOGZcdTVlYjZcdTVmOTBcdTYwNTVcdTYyOTJc''@;'; put 'put ''dTYzN2ZcdTY1NGRcdTY2OTFcdTY2ZDlcdTY2ZjhcdTY4MTZcdTY4ZjJcdTcyODBcdTc0NWVcdTdiNmVcdTdkNmVcdTdkZDZcdTdmNzIiXSxbImUwYTEiLCJcdTgwZTVcdTgyMTJcdTg1YWZcdTg5N2ZcdThhOTNcdTkwMWRcdTkyZTRcdTllY2RcdTlmMjBcdTU5MTVcdTU5NmRcdTVlMmRcdTYw''@;'; put 'put ''ZGNcdTY2MTRcdTY2NzNcdTY3OTBcdTZjNTBcdTZkYzVcdTZmNWZcdTc3ZjNcdTc4YTlcdTg0YzZcdTkxY2JcdTkzMmJcdTRlZDlcdTUwY2FcdTUxNDhcdTU1ODRcdTViMGJcdTViYTNcdTYyNDdcdTY1N2VcdTY1Y2JcdTZlMzJcdTcxN2RcdTc0MDFcdTc0NDRcdTc0ODdcdTc0YmZcdTc2NmNc''@;'; put 'put ''dTc5YWFcdTdkZGFcdTdlNTVcdTdmYThcdTgxN2FcdTgxYjNcdTgyMzlcdTg2MWFcdTg3ZWNcdThhNzVcdThkZTNcdTkwNzhcdTkyOTFcdTk0MjVcdTk5NGRcdTliYWVcdTUzNjhcdTVjNTFcdTY5NTRcdTZjYzRcdTZkMjlcdTZlMmJcdTgyMGNcdTg1OWJcdTg5M2JcdThhMmRcdThhYWFcdTk2''@;'; put 'put ''ZWFcdTlmNjdcdTUyNjFcdTY2YjlcdTZiYjJcdTdlOTZcdTg3ZmVcdThkMGRcdTk1ODNcdTk2NWRcdTY1MWRcdTZkODlcdTcxZWVcdWY5NmVcdTU3Y2VcdTU5ZDNcdTViYWNcdTYwMjdcdTYwZmFcdTYyMTBcdTY2MWZcdTY2NWZcdTczMjlcdTczZjlcdTc2ZGJcdTc3MDFcdTdiNmMiXSxbImUx''@;'; put 'put ''YTEiLCJcdTgwNTZcdTgwNzJcdTgxNjVcdThhYTBcdTkxOTJcdTRlMTZcdTUyZTJcdTZiNzJcdTZkMTdcdTdhMDVcdTdiMzlcdTdkMzBcdWY5NmZcdThjYjBcdTUzZWNcdTU2MmZcdTU4NTFcdTViYjVcdTVjMGZcdTVjMTFcdTVkZTJcdTYyNDBcdTYzODNcdTY0MTRcdTY2MmRcdTY4YjNcdTZj''@;'; put 'put ''YmNcdTZkODhcdTZlYWZcdTcwMWZcdTcwYTRcdTcxZDJcdTc1MjZcdTc1OGZcdTc1OGVcdTc2MTlcdTdiMTFcdTdiZTBcdTdjMmJcdTdkMjBcdTdkMzlcdTg1MmNcdTg1NmRcdTg2MDdcdThhMzRcdTkwMGRcdTkwNjFcdTkwYjVcdTkyYjdcdTk3ZjZcdTlhMzdcdTRmZDdcdTVjNmNcdTY3NWZc''@;'; put 'put ''dTZkOTFcdTdjOWZcdTdlOGNcdThiMTZcdThkMTZcdTkwMWZcdTViNmJcdTVkZmRcdTY0MGRcdTg0YzBcdTkwNWNcdTk4ZTFcdTczODdcdTViOGJcdTYwOWFcdTY3N2VcdTZkZGVcdThhMWZcdThhYTZcdTkwMDFcdTk4MGNcdTUyMzdcdWY5NzBcdTcwNTFcdTc4OGVcdTkzOTZcdTg4NzBcdTkx''@;'; put 'put ''ZDdcdTRmZWVcdTUzZDdcdTU1ZmRcdTU2ZGFcdTU3ODJcdTU4ZmRcdTVhYzJcdTViODhcdTVjYWJcdTVjYzBcdTVlMjVcdTYxMDEiXSxbImUyYTEiLCJcdTYyMGRcdTYyNGJcdTYzODhcdTY0MWNcdTY1MzZcdTY1NzhcdTZhMzlcdTZiOGFcdTZjMzRcdTZkMTlcdTZmMzFcdTcxZTdcdTcyZTlc''@;'; put 'put ''dTczNzhcdTc0MDdcdTc0YjJcdTc2MjZcdTc3NjFcdTc5YzBcdTdhNTdcdTdhZWFcdTdjYjlcdTdkOGZcdTdkYWNcdTdlNjFcdTdmOWVcdTgxMjlcdTgzMzFcdTg0OTBcdTg0ZGFcdTg1ZWFcdTg4OTZcdThhYjBcdThiOTBcdThmMzhcdTkwNDJcdTkwODNcdTkxNmNcdTkyOTZcdTkyYjlcdTk2''@;'; put 'put ''OGJcdTk2YTdcdTk2YThcdTk2ZDZcdTk3MDBcdTk4MDhcdTk5OTZcdTlhZDNcdTliMWFcdTUzZDRcdTU4N2VcdTU5MTlcdTViNzBcdTViYmZcdTZkZDFcdTZmNWFcdTcxOWZcdTc0MjFcdTc0YjlcdTgwODVcdTgzZmRcdTVkZTFcdTVmODdcdTVmYWFcdTYwNDJcdTY1ZWNcdTY4MTJcdTY5NmZc''@;'; put 'put ''dTZhNTNcdTZiODlcdTZkMzVcdTZkZjNcdTczZTNcdTc2ZmVcdTc3YWNcdTdiNGRcdTdkMTRcdTgxMjNcdTgyMWNcdTgzNDBcdTg0ZjRcdTg1NjNcdThhNjJcdThhYzRcdTkxODdcdTkzMWVcdTk4MDZcdTk5YjRcdTYyMGNcdTg4NTNcdThmZjBcdTkyNjVcdTVkMDdcdTVkMjciXSxbImUzYTEi''@;'; put 'put ''LCJcdTVkNjlcdTc0NWZcdTgxOWRcdTg3NjhcdTZmZDVcdTYyZmVcdTdmZDJcdTg5MzZcdTg5NzJcdTRlMWVcdTRlNThcdTUwZTdcdTUyZGRcdTUzNDdcdTYyN2ZcdTY2MDdcdTdlNjlcdTg4MDVcdTk2NWVcdTRmOGRcdTUzMTlcdTU2MzZcdTU5Y2JcdTVhYTRcdTVjMzhcdTVjNGVcdTVjNGRc''@;'; put 'put ''dTVlMDJcdTVmMTFcdTYwNDNcdTY1YmRcdTY2MmZcdTY2NDJcdTY3YmVcdTY3ZjRcdTczMWNcdTc3ZTJcdTc5M2FcdTdmYzVcdTg0OTRcdTg0Y2RcdTg5OTZcdThhNjZcdThhNjlcdThhZTFcdThjNTVcdThjN2FcdTU3ZjRcdTViZDRcdTVmMGZcdTYwNmZcdTYyZWRcdTY5MGRcdTZiOTZcdTZl''@;'; put 'put ''NWNcdTcxODRcdTdiZDJcdTg3NTVcdThiNThcdThlZmVcdTk4ZGZcdTk4ZmVcdTRmMzhcdTRmODFcdTRmZTFcdTU0N2JcdTVhMjBcdTViYjhcdTYxM2NcdTY1YjBcdTY2NjhcdTcxZmNcdTc1MzNcdTc5NWVcdTdkMzNcdTgxNGVcdTgxZTNcdTgzOThcdTg1YWFcdTg1Y2VcdTg3MDNcdThhMGFc''@;'; put 'put ''dThlYWJcdThmOWJcdWY5NzFcdThmYzVcdTU5MzFcdTViYTRcdTViZTZcdTYwODlcdTViZTlcdTVjMGJcdTVmYzNcdTZjODEiXSxbImU0YTEiLCJcdWY5NzJcdTZkZjFcdTcwMGJcdTc1MWFcdTgyYWZcdThhZjZcdTRlYzBcdTUzNDFcdWY5NzNcdTk2ZDlcdTZjMGZcdTRlOWVcdTRmYzRcdTUx''@;'; put 'put ''NTJcdTU1NWVcdTVhMjVcdTVjZThcdTYyMTFcdTcyNTlcdTgyYmRcdTgzYWFcdTg2ZmVcdTg4NTlcdThhMWRcdTk2M2ZcdTk2YzVcdTk5MTNcdTlkMDlcdTlkNWRcdTU4MGFcdTVjYjNcdTVkYmRcdTVlNDRcdTYwZTFcdTYxMTVcdTYzZTFcdTZhMDJcdTZlMjVcdTkxMDJcdTkzNTRcdTk4NGVc''@;'; put 'put ''dTljMTBcdTlmNzdcdTViODlcdTVjYjhcdTYzMDlcdTY2NGZcdTY4NDhcdTc3M2NcdTk2YzFcdTk3OGRcdTk4NTRcdTliOWZcdTY1YTFcdThiMDFcdThlY2JcdTk1YmNcdTU1MzVcdTVjYTlcdTVkZDZcdTVlYjVcdTY2OTdcdTc2NGNcdTgzZjRcdTk1YzdcdTU4ZDNcdTYyYmNcdTcyY2VcdTlk''@;'; put 'put ''MjhcdTRlZjBcdTU5MmVcdTYwMGZcdTY2M2JcdTZiODNcdTc5ZTdcdTlkMjZcdTUzOTNcdTU0YzBcdTU3YzNcdTVkMTZcdTYxMWJcdTY2ZDZcdTZkYWZcdTc4OGRcdTgyN2VcdTk2OThcdTk3NDRcdTUzODRcdTYyN2NcdTYzOTZcdTZkYjJcdTdlMGFcdTgxNGJcdTk4NGQiXSxbImU1YTEiLCJc''@;'; put 'put ''dTZhZmJcdTdmNGNcdTlkYWZcdTllMWFcdTRlNWZcdTUwM2JcdTUxYjZcdTU5MWNcdTYwZjlcdTYzZjZcdTY5MzBcdTcyM2FcdTgwMzZcdWY5NzRcdTkxY2VcdTVmMzFcdWY5NzVcdWY5NzZcdTdkMDRcdTgyZTVcdTg0NmZcdTg0YmJcdTg1ZTVcdThlOGRcdWY5NzdcdTRmNmZcdWY5NzhcdWY5''@;'; put 'put ''NzlcdTU4ZTRcdTViNDNcdTYwNTlcdTYzZGFcdTY1MThcdTY1NmRcdTY2OThcdWY5N2FcdTY5NGFcdTZhMjNcdTZkMGJcdTcwMDFcdTcxNmNcdTc1ZDJcdTc2MGRcdTc5YjNcdTdhNzBcdWY5N2JcdTdmOGFcdWY5N2NcdTg5NDRcdWY5N2RcdThiOTNcdTkxYzBcdTk2N2RcdWY5N2VcdTk5MGFc''@;'; put 'put ''dTU3MDRcdTVmYTFcdTY1YmNcdTZmMDFcdTc2MDBcdTc5YTZcdThhOWVcdTk5YWRcdTliNWFcdTlmNmNcdTUxMDRcdTYxYjZcdTYyOTFcdTZhOGRcdTgxYzZcdTUwNDNcdTU4MzBcdTVmNjZcdTcxMDlcdThhMDBcdThhZmFcdTViN2NcdTg2MTZcdTRmZmFcdTUxM2NcdTU2YjRcdTU5NDRcdTYz''@;'; put 'put ''YTlcdTZkZjlcdTVkYWFcdTY5NmRcdTUxODZcdTRlODhcdTRmNTlcdWY5N2ZcdWY5ODBcdWY5ODFcdTU5ODJcdWY5ODIiXSxbImU2YTEiLCJcdWY5ODNcdTZiNWZcdTZjNWRcdWY5ODRcdTc0YjVcdTc5MTZcdWY5ODVcdTgyMDdcdTgyNDVcdTgzMzlcdThmM2ZcdThmNWRcdWY5ODZcdTk5MThc''@;'; put 'put ''dWY5ODdcdWY5ODhcdWY5ODlcdTRlYTZcdWY5OGFcdTU3ZGZcdTVmNzlcdTY2MTNcdWY5OGJcdWY5OGNcdTc1YWJcdTdlNzlcdThiNmZcdWY5OGRcdTkwMDZcdTlhNWJcdTU2YTVcdTU4MjdcdTU5ZjhcdTVhMWZcdTViYjRcdWY5OGVcdTVlZjZcdWY5OGZcdWY5OTBcdTYzNTBcdTYzM2JcdWY5''@;'; put 'put ''OTFcdTY5M2RcdTZjODdcdTZjYmZcdTZkOGVcdTZkOTNcdTZkZjVcdTZmMTRcdWY5OTJcdTcwZGZcdTcxMzZcdTcxNTlcdWY5OTNcdTcxYzNcdTcxZDVcdWY5OTRcdTc4NGZcdTc4NmZcdWY5OTVcdTdiNzVcdTdkZTNcdWY5OTZcdTdlMmZcdWY5OTdcdTg4NGRcdThlZGZcdWY5OThcdWY5OTlc''@;'; put 'put ''dWY5OWFcdTkyNWJcdWY5OWJcdTljZjZcdWY5OWNcdWY5OWRcdWY5OWVcdTYwODVcdTZkODVcdWY5OWZcdTcxYjFcdWY5YTBcdWY5YTFcdTk1YjFcdTUzYWRcdWY5YTJcdWY5YTNcdWY5YTRcdTY3ZDNcdWY5YTVcdTcwOGVcdTcxMzBcdTc0MzBcdTgyNzZcdTgyZDIiXSxbImU3YTEiLCJcdWY5''@;'; put 'put ''YTZcdTk1YmJcdTlhZTVcdTllN2RcdTY2YzRcdWY5YTdcdTcxYzFcdTg0NDlcdWY5YThcdWY5YTlcdTU4NGJcdWY5YWFcdWY5YWJcdTVkYjhcdTVmNzFcdWY5YWNcdTY2MjBcdTY2OGVcdTY5NzlcdTY5YWVcdTZjMzhcdTZjZjNcdTZlMzZcdTZmNDFcdTZmZGFcdTcwMWJcdTcwMmZcdTcxNTBc''@;'; put 'put ''dTcxZGZcdTczNzBcdWY5YWRcdTc0NWJcdWY5YWVcdTc0ZDRcdTc2YzhcdTdhNGVcdTdlOTNcdWY5YWZcdWY5YjBcdTgyZjFcdThhNjBcdThmY2VcdWY5YjFcdTkzNDhcdWY5YjJcdTk3MTlcdWY5YjNcdWY5YjRcdTRlNDJcdTUwMmFcdWY5YjVcdTUyMDhcdTUzZTFcdTY2ZjNcdTZjNmRcdTZm''@;'; put 'put ''Y2FcdTczMGFcdTc3N2ZcdTdhNjJcdTgyYWVcdTg1ZGRcdTg2MDJcdWY5YjZcdTg4ZDRcdThhNjNcdThiN2RcdThjNmJcdWY5YjdcdTkyYjNcdWY5YjhcdTk3MTNcdTk4MTBcdTRlOTRcdTRmMGRcdTRmYzlcdTUwYjJcdTUzNDhcdTU0M2VcdTU0MzNcdTU1ZGFcdTU4NjJcdTU4YmFcdTU5Njdc''@;'; put 'put ''dTVhMWJcdTViZTRcdTYwOWZcdWY5YjlcdTYxY2FcdTY1NTZcdTY1ZmZcdTY2NjRcdTY4YTdcdTZjNWFcdTZmYjMiXSxbImU4YTEiLCJcdTcwY2ZcdTcxYWNcdTczNTJcdTdiN2RcdTg3MDhcdThhYTRcdTljMzJcdTlmMDdcdTVjNGJcdTZjODNcdTczNDRcdTczODlcdTkyM2FcdTZlYWJcdTc0''@;'; put 'put ''NjVcdTc2MWZcdTdhNjlcdTdlMTVcdTg2MGFcdTUxNDBcdTU4YzVcdTY0YzFcdTc0ZWVcdTc1MTVcdTc2NzBcdTdmYzFcdTkwOTVcdTk2Y2RcdTk5NTRcdTZlMjZcdTc0ZTZcdTdhYTlcdTdhYWFcdTgxZTVcdTg2ZDlcdTg3NzhcdThhMWJcdTVhNDlcdTViOGNcdTViOWJcdTY4YTFcdTY5MDBc''@;'; put 'put ''dTZkNjNcdTczYTlcdTc0MTNcdTc0MmNcdTc4OTdcdTdkZTlcdTdmZWJcdTgxMThcdTgxNTVcdTgzOWVcdThjNGNcdTk2MmVcdTk4MTFcdTY2ZjBcdTVmODBcdTY1ZmFcdTY3ODlcdTZjNmFcdTczOGJcdTUwMmRcdTVhMDNcdTZiNmFcdTc3ZWVcdTU5MTZcdTVkNmNcdTVkY2RcdTczMjVcdTc1''@;'; put 'put ''NGZcdWY5YmFcdWY5YmJcdTUwZTVcdTUxZjlcdTU4MmZcdTU5MmRcdTU5OTZcdTU5ZGFcdTViZTVcdWY5YmNcdWY5YmRcdTVkYTJcdTYyZDdcdTY0MTZcdTY0OTNcdTY0ZmVcdWY5YmVcdTY2ZGNcdWY5YmZcdTZhNDhcdWY5YzBcdTcxZmZcdTc0NjRcdWY5YzEiXSxbImU5YTEiLCJcdTdhODhc''@;'; put 'put ''dTdhYWZcdTdlNDdcdTdlNWVcdTgwMDBcdTgxNzBcdWY5YzJcdTg3ZWZcdTg5ODFcdThiMjBcdTkwNTlcdWY5YzNcdTkwODBcdTk5NTJcdTYxN2VcdTZiMzJcdTZkNzRcdTdlMWZcdTg5MjVcdThmYjFcdTRmZDFcdTUwYWRcdTUxOTdcdTUyYzdcdTU3YzdcdTU4ODlcdTViYjlcdTVlYjhcdTYx''@;'; put 'put ''NDJcdTY5OTVcdTZkOGNcdTZlNjdcdTZlYjZcdTcxOTRcdTc0NjJcdTc1MjhcdTc1MmNcdTgwNzNcdTgzMzhcdTg0YzlcdThlMGFcdTkzOTRcdTkzZGVcdWY5YzRcdTRlOGVcdTRmNTFcdTUwNzZcdTUxMmFcdTUzYzhcdTUzY2JcdTUzZjNcdTViODdcdTViZDNcdTVjMjRcdTYxMWFcdTYxODJc''@;'; put 'put ''dTY1ZjRcdTcyNWJcdTczOTdcdTc0NDBcdTc2YzJcdTc5NTBcdTc5OTFcdTc5YjlcdTdkMDZcdTdmYmRcdTgyOGJcdTg1ZDVcdTg2NWVcdThmYzJcdTkwNDdcdTkwZjVcdTkxZWFcdTk2ODVcdTk2ZThcdTk2ZTlcdTUyZDZcdTVmNjdcdTY1ZWRcdTY2MzFcdTY4MmZcdTcxNWNcdTdhMzZcdTkw''@;'; put 'put ''YzFcdTk4MGFcdTRlOTFcdWY5YzVcdTZhNTJcdTZiOWVcdTZmOTBcdTcxODlcdTgwMThcdTgyYjhcdTg1NTMiXSxbImVhYTEiLCJcdTkwNGJcdTk2OTVcdTk2ZjJcdTk3ZmJcdTg1MWFcdTliMzFcdTRlOTBcdTcxOGFcdTk2YzRcdTUxNDNcdTUzOWZcdTU0ZTFcdTU3MTNcdTU3MTJcdTU3YTNc''@;'; put 'put ''dTVhOWJcdTVhYzRcdTViYzNcdTYwMjhcdTYxM2ZcdTYzZjRcdTZjODVcdTZkMzlcdTZlNzJcdTZlOTBcdTcyMzBcdTczM2ZcdTc0NTdcdTgyZDFcdTg4ODFcdThmNDVcdTkwNjBcdWY5YzZcdTk2NjJcdTk4NThcdTlkMWJcdTY3MDhcdThkOGFcdTkyNWVcdTRmNGRcdTUwNDlcdTUwZGVcdTUz''@;'; put 'put ''NzFcdTU3MGRcdTU5ZDRcdTVhMDFcdTVjMDlcdTYxNzBcdTY2OTBcdTZlMmRcdTcyMzJcdTc0NGJcdTdkZWZcdTgwYzNcdTg0MGVcdTg0NjZcdTg1M2ZcdTg3NWZcdTg4NWJcdTg5MThcdThiMDJcdTkwNTVcdTk3Y2JcdTliNGZcdTRlNzNcdTRmOTFcdTUxMTJcdTUxNmFcdWY5YzdcdTU1MmZc''@;'; put 'put ''dTU1YTlcdTViN2FcdTViYTVcdTVlN2NcdTVlN2RcdTVlYmVcdTYwYTBcdTYwZGZcdTYxMDhcdTYxMDlcdTYzYzRcdTY1MzhcdTY3MDlcdWY5YzhcdTY3ZDRcdTY3ZGFcdWY5YzlcdTY5NjFcdTY5NjJcdTZjYjlcdTZkMjdcdWY5Y2FcdTZlMzhcdWY5Y2IiXSxbImViYTEiLCJcdTZmZTFcdTcz''@;'; put 'put ''MzZcdTczMzdcdWY5Y2NcdTc0NWNcdTc1MzFcdWY5Y2RcdTc2NTJcdWY5Y2VcdWY5Y2ZcdTdkYWRcdTgxZmVcdTg0MzhcdTg4ZDVcdThhOThcdThhZGJcdThhZWRcdThlMzBcdThlNDJcdTkwNGFcdTkwM2VcdTkwN2FcdTkxNDlcdTkxYzlcdTkzNmVcdWY5ZDBcdWY5ZDFcdTU4MDlcdWY5ZDJc''@;'; put 'put ''dTZiZDNcdTgwODlcdTgwYjJcdWY5ZDNcdWY5ZDRcdTUxNDFcdTU5NmJcdTVjMzlcdWY5ZDVcdWY5ZDZcdTZmNjRcdTczYTdcdTgwZTRcdThkMDdcdWY5ZDdcdTkyMTdcdTk1OGZcdWY5ZDhcdWY5ZDlcdWY5ZGFcdWY5ZGJcdTgwN2ZcdTYyMGVcdTcwMWNcdTdkNjhcdTg3OGRcdWY5ZGNcdTU3''@;'; put 'put ''YTBcdTYwNjlcdTYxNDdcdTZiYjdcdThhYmVcdTkyODBcdTk2YjFcdTRlNTlcdTU0MWZcdTZkZWJcdTg1MmRcdTk2NzBcdTk3ZjNcdTk4ZWVcdTYzZDZcdTZjZTNcdTkwOTFcdTUxZGRcdTYxYzlcdTgxYmFcdTlkZjlcdTRmOWRcdTUwMWFcdTUxMDBcdTViOWNcdTYxMGZcdTYxZmZcdTY0ZWNc''@;'; put 'put ''dTY5MDVcdTZiYzVcdTc1OTFcdTc3ZTNcdTdmYTlcdTgyNjRcdTg1OGZcdTg3ZmJcdTg4NjNcdThhYmMiXSxbImVjYTEiLCJcdThiNzBcdTkxYWJcdTRlOGNcdTRlZTVcdTRmMGFcdWY5ZGRcdWY5ZGVcdTU5MzdcdTU5ZThcdWY5ZGZcdTVkZjJcdTVmMWJcdTVmNWJcdTYwMjFcdWY5ZTBcdWY5''@;'; put 'put ''ZTFcdWY5ZTJcdWY5ZTNcdTcyM2VcdTczZTVcdWY5ZTRcdTc1NzBcdTc1Y2RcdWY5ZTVcdTc5ZmJcdWY5ZTZcdTgwMGNcdTgwMzNcdTgwODRcdTgyZTFcdTgzNTFcdWY5ZTdcdWY5ZThcdThjYmRcdThjYjNcdTkwODdcdWY5ZTlcdWY5ZWFcdTk4ZjRcdTk5MGNcdWY5ZWJcdWY5ZWNcdTcwMzdc''@;'; put 'put ''dTc2Y2FcdTdmY2FcdTdmY2NcdTdmZmNcdThiMWFcdTRlYmFcdTRlYzFcdTUyMDNcdTUzNzBcdWY5ZWRcdTU0YmRcdTU2ZTBcdTU5ZmJcdTViYzVcdTVmMTVcdTVmY2RcdTZlNmVcdWY5ZWVcdWY5ZWZcdTdkNmFcdTgzMzVcdWY5ZjBcdTg2OTNcdThhOGRcdWY5ZjFcdTk3NmRcdTk3NzdcdWY5''@;'; put 'put ''ZjJcdWY5ZjNcdTRlMDBcdTRmNWFcdTRmN2VcdTU4ZjlcdTY1ZTVcdTZlYTJcdTkwMzhcdTkzYjBcdTk5YjlcdTRlZmJcdTU4ZWNcdTU5OGFcdTU5ZDlcdTYwNDFcdWY5ZjRcdWY5ZjVcdTdhMTRcdWY5ZjZcdTgzNGZcdThjYzNcdTUxNjVcdTUzNDQiXSxbImVkYTEiLCJcdWY5ZjdcdWY5Zjhc''@;'; put 'put ''dWY5ZjlcdTRlY2RcdTUyNjlcdTViNTVcdTgyYmZcdTRlZDRcdTUyM2FcdTU0YThcdTU5YzlcdTU5ZmZcdTViNTBcdTViNTdcdTViNWNcdTYwNjNcdTYxNDhcdTZlY2JcdTcwOTlcdTcxNmVcdTczODZcdTc0ZjdcdTc1YjVcdTc4YzFcdTdkMmJcdTgwMDVcdTgxZWFcdTgzMjhcdTg1MTdcdTg1''@;'; put 'put ''YzlcdThhZWVcdThjYzdcdTk2Y2NcdTRmNWNcdTUyZmFcdTU2YmNcdTY1YWJcdTY2MjhcdTcwN2NcdTcwYjhcdTcyMzVcdTdkYmRcdTgyOGRcdTkxNGNcdTk2YzBcdTlkNzJcdTViNzFcdTY4ZTdcdTZiOThcdTZmN2FcdTc2ZGVcdTVjOTFcdTY2YWJcdTZmNWJcdTdiYjRcdTdjMmFcdTg4MzZc''@;'; put 'put ''dTk2ZGNcdTRlMDhcdTRlZDdcdTUzMjBcdTU4MzRcdTU4YmJcdTU4ZWZcdTU5NmNcdTVjMDdcdTVlMzNcdTVlODRcdTVmMzVcdTYzOGNcdTY2YjJcdTY3NTZcdTZhMWZcdTZhYTNcdTZiMGNcdTZmM2ZcdTcyNDZcdWY5ZmFcdTczNTBcdTc0OGJcdTdhZTBcdTdjYTdcdTgxNzhcdTgxZGZcdTgx''@;'; put 'put ''ZTdcdTgzOGFcdTg0NmNcdTg1MjNcdTg1OTRcdTg1Y2ZcdTg4ZGRcdThkMTNcdTkxYWNcdTk1NzciXSxbImVlYTEiLCJcdTk2OWNcdTUxOGRcdTU0YzlcdTU3MjhcdTViYjBcdTYyNGRcdTY3NTBcdTY4M2RcdTY4OTNcdTZlM2RcdTZlZDNcdTcwN2RcdTdlMjFcdTg4YzFcdThjYTFcdThmMDlc''@;'; put 'put ''dTlmNGJcdTlmNGVcdTcyMmRcdTdiOGZcdThhY2RcdTkzMWFcdTRmNDdcdTRmNGVcdTUxMzJcdTU0ODBcdTU5ZDBcdTVlOTVcdTYyYjVcdTY3NzVcdTY5NmVcdTZhMTdcdTZjYWVcdTZlMWFcdTcyZDlcdTczMmFcdTc1YmRcdTdiYjhcdTdkMzVcdTgyZTdcdTgzZjlcdTg0NTdcdTg1ZjdcdThh''@;'; put 'put ''NWJcdThjYWZcdThlODdcdTkwMTlcdTkwYjhcdTk2Y2VcdTlmNWZcdTUyZTNcdTU0MGFcdTVhZTFcdTViYzJcdTY0NThcdTY1NzVcdTZlZjRcdTcyYzRcdWY5ZmJcdTc2ODRcdTdhNGRcdTdiMWJcdTdjNGRcdTdlM2VcdTdmZGZcdTgzN2JcdThiMmJcdThjY2FcdThkNjRcdThkZTFcdThlNWZc''@;'; put 'put ''dThmZWFcdThmZjlcdTkwNjlcdTkzZDFcdTRmNDNcdTRmN2FcdTUwYjNcdTUxNjhcdTUxNzhcdTUyNGRcdTUyNmFcdTU4NjFcdTU4N2NcdTU5NjBcdTVjMDhcdTVjNTVcdTVlZGJcdTYwOWJcdTYyMzBcdTY4MTNcdTZiYmZcdTZjMDhcdTZmYjEiXSxbImVmYTEiLCJcdTcxNGVcdTc0MjBcdTc1''@;'; put 'put ''MzBcdTc1MzhcdTc1NTFcdTc2NzJcdTdiNGNcdTdiOGJcdTdiYWRcdTdiYzZcdTdlOGZcdThhNmVcdThmM2VcdThmNDlcdTkyM2ZcdTkyOTNcdTkzMjJcdTk0MmJcdTk2ZmJcdTk4NWFcdTk4NmJcdTk5MWVcdTUyMDdcdTYyMmFcdTYyOThcdTZkNTlcdTc2NjRcdTdhY2FcdTdiYzBcdTdkNzZc''@;'; put 'put ''dTUzNjBcdTVjYmVcdTVlOTdcdTZmMzhcdTcwYjlcdTdjOThcdTk3MTFcdTliOGVcdTllZGVcdTYzYTVcdTY0N2FcdTg3NzZcdTRlMDFcdTRlOTVcdTRlYWRcdTUwNWNcdTUwNzVcdTU0NDhcdTU5YzNcdTViOWFcdTVlNDBcdTVlYWRcdTVlZjdcdTVmODFcdTYwYzVcdTYzM2FcdTY1M2ZcdTY1''@;'; put 'put ''NzRcdTY1Y2NcdTY2NzZcdTY2NzhcdTY3ZmVcdTY5NjhcdTZhODlcdTZiNjNcdTZjNDBcdTZkYzBcdTZkZThcdTZlMWZcdTZlNWVcdTcwMWVcdTcwYTFcdTczOGVcdTczZmRcdTc1M2FcdTc3NWJcdTc4ODdcdTc5OGVcdTdhMGJcdTdhN2RcdTdjYmVcdTdkOGVcdTgyNDdcdThhMDJcdThhZWFc''@;'; put 'put ''dThjOWVcdTkxMmRcdTkxNGFcdTkxZDhcdTkyNjZcdTkyY2NcdTkzMjBcdTk3MDZcdTk3NTYiXSxbImYwYTEiLCJcdTk3NWNcdTk4MDJcdTlmMGVcdTUyMzZcdTUyOTFcdTU1N2NcdTU4MjRcdTVlMWRcdTVmMWZcdTYwOGNcdTYzZDBcdTY4YWZcdTZmZGZcdTc5NmRcdTdiMmNcdTgxY2RcdTg1''@;'; put 'put ''YmFcdTg4ZmRcdThhZjhcdThlNDRcdTkxOGRcdTk2NjRcdTk2OWJcdTk3M2RcdTk4NGNcdTlmNGFcdTRmY2VcdTUxNDZcdTUxY2JcdTUyYTlcdTU2MzJcdTVmMTRcdTVmNmJcdTYzYWFcdTY0Y2RcdTY1ZTlcdTY2NDFcdTY2ZmFcdTY2ZjlcdTY3MWRcdTY4OWRcdTY4ZDdcdTY5ZmRcdTZmMTVc''@;'; put 'put ''dTZmNmVcdTcxNjdcdTcxZTVcdTcyMmFcdTc0YWFcdTc3M2FcdTc5NTZcdTc5NWFcdTc5ZGZcdTdhMjBcdTdhOTVcdTdjOTdcdTdjZGZcdTdkNDRcdTdlNzBcdTgwODdcdTg1ZmJcdTg2YTRcdThhNTRcdThhYmZcdThkOTlcdThlODFcdTkwMjBcdTkwNmRcdTkxZTNcdTk2M2JcdTk2ZDVcdTlj''@;'; put 'put ''ZTVcdTY1Y2ZcdTdjMDdcdThkYjNcdTkzYzNcdTViNThcdTVjMGFcdTUzNTJcdTYyZDlcdTczMWRcdTUwMjdcdTViOTdcdTVmOWVcdTYwYjBcdTYxNmJcdTY4ZDVcdTZkZDlcdTc0MmVcdTdhMmVcdTdkNDJcdTdkOWNcdTdlMzFcdTgxNmIiXSxbImYxYTEiLCJcdThlMmFcdThlMzVcdTkzN2Vc''@;'; put 'put ''dTk0MThcdTRmNTBcdTU3NTBcdTVkZTZcdTVlYTdcdTYzMmJcdTdmNmFcdTRlM2JcdTRmNGZcdTRmOGZcdTUwNWFcdTU5ZGRcdTgwYzRcdTU0NmFcdTU0NjhcdTU1ZmVcdTU5NGZcdTViOTlcdTVkZGVcdTVlZGFcdTY2NWRcdTY3MzFcdTY3ZjFcdTY4MmFcdTZjZThcdTZkMzJcdTZlNGFcdTZm''@;'; put 'put ''OGRcdTcwYjdcdTczZTBcdTc1ODdcdTdjNGNcdTdkMDJcdTdkMmNcdTdkYTJcdTgyMWZcdTg2ZGJcdThhM2JcdThhODVcdThkNzBcdThlOGFcdThmMzNcdTkwMzFcdTkxNGVcdTkxNTJcdTk0NDRcdTk5ZDBcdTdhZjlcdTdjYTVcdTRmY2FcdTUxMDFcdTUxYzZcdTU3YzhcdTViZWZcdTVjZmJc''@;'; put 'put ''dTY2NTlcdTZhM2RcdTZkNWFcdTZlOTZcdTZmZWNcdTcxMGNcdTc1NmZcdTdhZTNcdTg4MjJcdTkwMjFcdTkwNzVcdTk2Y2JcdTk5ZmZcdTgzMDFcdTRlMmRcdTRlZjJcdTg4NDZcdTkxY2RcdTUzN2RcdTZhZGJcdTY5NmJcdTZjNDFcdTg0N2FcdTU4OWVcdTYxOGVcdTY2ZmVcdTYyZWZcdTcw''@;'; put 'put ''ZGRcdTc1MTFcdTc1YzdcdTdlNTJcdTg0YjhcdThiNDlcdThkMDhcdTRlNGJcdTUzZWEiXSxbImYyYTEiLCJcdTU0YWJcdTU3MzBcdTU3NDBcdTVmZDdcdTYzMDFcdTYzMDdcdTY0NmZcdTY1MmZcdTY1ZThcdTY2N2FcdTY3OWRcdTY3YjNcdTZiNjJcdTZjNjBcdTZjOWFcdTZmMmNcdTc3ZTVc''@;'; put 'put ''dTc4MjVcdTc5NDlcdTc5NTdcdTdkMTlcdTgwYTJcdTgxMDJcdTgxZjNcdTgyOWRcdTgyYjdcdTg3MThcdThhOGNcdWY5ZmNcdThkMDRcdThkYmVcdTkwNzJcdTc2ZjRcdTdhMTlcdTdhMzdcdTdlNTRcdTgwNzdcdTU1MDdcdTU1ZDRcdTU4NzVcdTYzMmZcdTY0MjJcdTY2NDlcdTY2NGJcdTY4''@;'; put 'put ''NmRcdTY5OWJcdTZiODRcdTZkMjVcdTZlYjFcdTczY2RcdTc0NjhcdTc0YTFcdTc1NWJcdTc1YjlcdTc2ZTFcdTc3MWVcdTc3OGJcdTc5ZTZcdTdlMDlcdTdlMWRcdTgxZmJcdTg1MmZcdTg4OTdcdThhM2FcdThjZDFcdThlZWJcdThmYjBcdTkwMzJcdTkzYWRcdTk2NjNcdTk2NzNcdTk3MDdc''@;'; put 'put ''dTRmODRcdTUzZjFcdTU5ZWFcdTVhYzlcdTVlMTlcdTY4NGVcdTc0YzZcdTc1YmVcdTc5ZTlcdTdhOTJcdTgxYTNcdTg2ZWRcdThjZWFcdThkY2NcdThmZWRcdTY1OWZcdTY3MTVcdWY5ZmRcdTU3ZjdcdTZmNTdcdTdkZGRcdThmMmYiXSxbImYzYTEiLCJcdTkzZjZcdTk2YzZcdTVmYjVcdTYx''@;'; put 'put ''ZjJcdTZmODRcdTRlMTRcdTRmOThcdTUwMWZcdTUzYzlcdTU1ZGZcdTVkNmZcdTVkZWVcdTZiMjFcdTZiNjRcdTc4Y2JcdTdiOWFcdWY5ZmVcdThlNDlcdThlY2FcdTkwNmVcdTYzNDlcdTY0M2VcdTc3NDBcdTdhODRcdTkzMmZcdTk0N2ZcdTlmNmFcdTY0YjBcdTZmYWZcdTcxZTZcdTc0YThc''@;'; put 'put ''dTc0ZGFcdTdhYzRcdTdjMTJcdTdlODJcdTdjYjJcdTdlOThcdThiOWFcdThkMGFcdTk0N2RcdTk5MTBcdTk5NGNcdTUyMzlcdTViZGZcdTY0ZTZcdTY3MmRcdTdkMmVcdTUwZWRcdTUzYzNcdTU4NzlcdTYxNThcdTYxNTlcdTYxZmFcdTY1YWNcdTdhZDlcdThiOTJcdThiOTZcdTUwMDlcdTUw''@;'; put 'put ''MjFcdTUyNzVcdTU1MzFcdTVhM2NcdTVlZTBcdTVmNzBcdTYxMzRcdTY1NWVcdTY2MGNcdTY2MzZcdTY2YTJcdTY5Y2RcdTZlYzRcdTZmMzJcdTczMTZcdTc2MjFcdTdhOTNcdTgxMzlcdTgyNTlcdTgzZDZcdTg0YmNcdTUwYjVcdTU3ZjBcdTViYzBcdTViZThcdTVmNjlcdTYzYTFcdTc4MjZc''@;'; put 'put ''dTdkYjVcdTgzZGNcdTg1MjFcdTkxYzdcdTkxZjVcdTUxOGFcdTY3ZjVcdTdiNTYiXSxbImY0YTEiLCJcdThjYWNcdTUxYzRcdTU5YmJcdTYwYmRcdTg2NTVcdTUwMWNcdWY5ZmZcdTUyNTRcdTVjM2FcdTYxN2RcdTYyMWFcdTYyZDNcdTY0ZjJcdTY1YTVcdTZlY2NcdTc2MjBcdTgxMGFcdThl''@;'; put 'put ''NjBcdTk2NWZcdTk2YmJcdTRlZGZcdTUzNDNcdTU1OThcdTU5MjlcdTVkZGRcdTY0YzVcdTZjYzlcdTZkZmFcdTczOTRcdTdhN2ZcdTgyMWJcdTg1YTZcdThjZTRcdThlMTBcdTkwNzdcdTkxZTdcdTk1ZTFcdTk2MjFcdTk3YzZcdTUxZjhcdTU0ZjJcdTU1ODZcdTVmYjlcdTY0YTRcdTZmODhc''@;'; put 'put ''dTdkYjRcdThmMWZcdThmNGRcdTk0MzVcdTUwYzlcdTVjMTZcdTZjYmVcdTZkZmJcdTc1MWJcdTc3YmJcdTdjM2RcdTdjNjRcdThhNzlcdThhYzJcdTU4MWVcdTU5YmVcdTVlMTZcdTYzNzdcdTcyNTJcdTc1OGFcdTc3NmJcdThhZGNcdThjYmNcdThmMTJcdTVlZjNcdTY2NzRcdTZkZjhcdTgw''@;'; put 'put ''N2RcdTgzYzFcdThhY2JcdTk3NTFcdTliZDZcdWZhMDBcdTUyNDNcdTY2ZmZcdTZkOTVcdTZlZWZcdTdkZTBcdThhZTZcdTkwMmVcdTkwNWVcdTlhZDRcdTUyMWRcdTUyN2ZcdTU0ZThcdTYxOTRcdTYyODRcdTYyZGJcdTY4YTIiXSxbImY1YTEiLCJcdTY5MTJcdTY5NWFcdTZhMzVcdTcwOTJc''@;'; put 'put ''dTcxMjZcdTc4NWRcdTc5MDFcdTc5MGVcdTc5ZDJcdTdhMGRcdTgwOTZcdTgyNzhcdTgyZDVcdTgzNDlcdTg1NDlcdThjODJcdThkODVcdTkxNjJcdTkxOGJcdTkxYWVcdTRmYzNcdTU2ZDFcdTcxZWRcdTc3ZDdcdTg3MDBcdTg5ZjhcdTViZjhcdTVmZDZcdTY3NTFcdTkwYThcdTUzZTJcdTU4''@;'; put 'put ''NWFcdTViZjVcdTYwYTRcdTYxODFcdTY0NjBcdTdlM2RcdTgwNzBcdTg1MjVcdTkyODNcdTY0YWVcdTUwYWNcdTVkMTRcdTY3MDBcdTU4OWNcdTYyYmRcdTYzYThcdTY5MGVcdTY5NzhcdTZhMWVcdTZlNmJcdTc2YmFcdTc5Y2JcdTgyYmJcdTg0MjlcdThhY2ZcdThkYThcdThmZmRcdTkxMTJc''@;'; put 'put ''dTkxNGJcdTkxOWNcdTkzMTBcdTkzMThcdTkzOWFcdTk2ZGJcdTlhMzZcdTljMGRcdTRlMTFcdTc1NWNcdTc5NWRcdTdhZmFcdTdiNTFcdTdiYzlcdTdlMmVcdTg0YzRcdThlNTlcdThlNzRcdThlZjhcdTkwMTBcdTY2MjVcdTY5M2ZcdTc0NDNcdTUxZmFcdTY3MmVcdTllZGNcdTUxNDVcdTVm''@;'; put 'put ''ZTBcdTZjOTZcdTg3ZjJcdTg4NWRcdTg4NzdcdTYwYjRcdTgxYjVcdTg0MDMiXSxbImY2YTEiLCJcdThkMDVcdTUzZDZcdTU0MzlcdTU2MzRcdTVhMzZcdTVjMzFcdTcwOGFcdTdmZTBcdTgwNWFcdTgxMDZcdTgxZWRcdThkYTNcdTkxODlcdTlhNWZcdTlkZjJcdTUwNzRcdTRlYzRcdTUzYTBc''@;'; put 'put ''dTYwZmJcdTZlMmNcdTVjNjRcdTRmODhcdTUwMjRcdTU1ZTRcdTVjZDlcdTVlNWZcdTYwNjVcdTY4OTRcdTZjYmJcdTZkYzRcdTcxYmVcdTc1ZDRcdTc1ZjRcdTc2NjFcdTdhMWFcdTdhNDlcdTdkYzdcdTdkZmJcdTdmNmVcdTgxZjRcdTg2YTlcdThmMWNcdTk2YzlcdTk5YjNcdTlmNTJcdTUy''@;'; put 'put ''NDdcdTUyYzVcdTk4ZWRcdTg5YWFcdTRlMDNcdTY3ZDJcdTZmMDZcdTRmYjVcdTViZTJcdTY3OTVcdTZjODhcdTZkNzhcdTc0MWJcdTc4MjdcdTkxZGRcdTkzN2NcdTg3YzRcdTc5ZTRcdTdhMzFcdTVmZWJcdTRlZDZcdTU0YTRcdTU1M2VcdTU4YWVcdTU5YTVcdTYwZjBcdTYyNTNcdTYyZDZc''@;'; put 'put ''dTY3MzZcdTY5NTVcdTgyMzVcdTk2NDBcdTk5YjFcdTk5ZGRcdTUwMmNcdTUzNTNcdTU1NDRcdTU3N2NcdWZhMDFcdTYyNThcdWZhMDJcdTY0ZTJcdTY2NmJcdTY3ZGRcdTZmYzFcdTZmZWZcdTc0MjJcdTc0MzhcdThhMTciXSxbImY3YTEiLCJcdTk0MzhcdTU0NTFcdTU2MDZcdTU3NjZcdTVm''@;'; put 'put ''NDhcdTYxOWFcdTZiNGVcdTcwNThcdTcwYWRcdTdkYmJcdThhOTVcdTU5NmFcdTgxMmJcdTYzYTJcdTc3MDhcdTgwM2RcdThjYWFcdTU4NTRcdTY0MmRcdTY5YmJcdTViOTVcdTVlMTFcdTZlNmZcdWZhMDNcdTg1NjlcdTUxNGNcdTUzZjBcdTU5MmFcdTYwMjBcdTYxNGJcdTZiODZcdTZjNzBc''@;'; put 'put ''dTZjZjBcdTdiMWVcdTgwY2VcdTgyZDRcdThkYzZcdTkwYjBcdTk4YjFcdWZhMDRcdTY0YzdcdTZmYTRcdTY0OTFcdTY1MDRcdTUxNGVcdTU0MTBcdTU3MWZcdThhMGVcdTYxNWZcdTY4NzZcdWZhMDVcdTc1ZGJcdTdiNTJcdTdkNzFcdTkwMWFcdTU4MDZcdTY5Y2NcdTgxN2ZcdTg5MmFcdTkw''@;'; put 'put ''MDBcdTk4MzlcdTUwNzhcdTU5NTdcdTU5YWNcdTYyOTVcdTkwMGZcdTliMmFcdTYxNWRcdTcyNzlcdTk1ZDZcdTU3NjFcdTVhNDZcdTVkZjRcdTYyOGFcdTY0YWRcdTY0ZmFcdTY3NzdcdTZjZTJcdTZkM2VcdTcyMmNcdTc0MzZcdTc4MzRcdTdmNzdcdTgyYWRcdThkZGJcdTk4MTdcdTUyMjRc''@;'; put 'put ''dTU3NDJcdTY3N2ZcdTcyNDhcdTc0ZTNcdThjYTlcdThmYTZcdTkyMTEiXSxbImY4YTEiLCJcdTk2MmFcdTUxNmJcdTUzZWRcdTYzNGNcdTRmNjlcdTU1MDRcdTYwOTZcdTY1NTdcdTZjOWJcdTZkN2ZcdTcyNGNcdTcyZmRcdTdhMTdcdTg5ODdcdThjOWRcdTVmNmRcdTZmOGVcdTcwZjlcdTgx''@;'; put 'put ''YThcdTYxMGVcdTRmYmZcdTUwNGZcdTYyNDFcdTcyNDdcdTdiYzdcdTdkZThcdTdmZTlcdTkwNGRcdTk3YWRcdTlhMTlcdThjYjZcdTU3NmFcdTVlNzNcdTY3YjBcdTg0MGRcdThhNTVcdTU0MjBcdTViMTZcdTVlNjNcdTVlZTJcdTVmMGFcdTY1ODNcdTgwYmFcdTg1M2RcdTk1ODlcdTk2NWJc''@;'; put 'put ''dTRmNDhcdTUzMDVcdTUzMGRcdTUzMGZcdTU0ODZcdTU0ZmFcdTU3MDNcdTVlMDNcdTYwMTZcdTYyOWJcdTYyYjFcdTYzNTVcdWZhMDZcdTZjZTFcdTZkNjZcdTc1YjFcdTc4MzJcdTgwZGVcdTgxMmZcdTgyZGVcdTg0NjFcdTg0YjJcdTg4OGRcdTg5MTJcdTkwMGJcdTkyZWFcdTk4ZmRcdTli''@;'; put 'put ''OTFcdTVlNDVcdTY2YjRcdTY2ZGRcdTcwMTFcdTcyMDZcdWZhMDdcdTRmZjVcdTUyN2RcdTVmNmFcdTYxNTNcdTY3NTNcdTZhMTlcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4NjhcdThjNzlcdTk4YzdcdTk4YzRcdTlhNDMiXSxbImY5YTEiLCJcdTU0YzFcdTdhMWZcdTY5NTNcdThhZjdcdThjNGFc''@;'; put 'put ''dTk4YThcdTk5YWVcdTVmN2NcdTYyYWJcdTc1YjJcdTc2YWVcdTg4YWJcdTkwN2ZcdTk2NDJcdTUzMzlcdTVmM2NcdTVmYzVcdTZjY2NcdTczY2NcdTc1NjJcdTc1OGJcdTdiNDZcdTgyZmVcdTk5OWRcdTRlNGZcdTkwM2NcdTRlMGJcdTRmNTVcdTUzYTZcdTU5MGZcdTVlYzhcdTY2MzBcdTZj''@;'; put 'put ''YjNcdTc0NTVcdTgzNzdcdTg3NjZcdThjYzBcdTkwNTBcdTk3MWVcdTljMTVcdTU4ZDFcdTViNzhcdTg2NTBcdThiMTRcdTlkYjRcdTViZDJcdTYwNjhcdTYwOGRcdTY1ZjFcdTZjNTdcdTZmMjJcdTZmYTNcdTcwMWFcdTdmNTVcdTdmZjBcdTk1OTFcdTk1OTJcdTk2NTBcdTk3ZDNcdTUyNzJc''@;'; put 'put ''dThmNDRcdTUxZmRcdTU0MmJcdTU0YjhcdTU1NjNcdTU1OGFcdTZhYmJcdTZkYjVcdTdkZDhcdTgyNjZcdTkyOWNcdTk2NzdcdTllNzlcdTU0MDhcdTU0YzhcdTc2ZDJcdTg2ZTRcdTk1YTRcdTk1ZDRcdTk2NWNcdTRlYTJcdTRmMDlcdTU5ZWVcdTVhZTZcdTVkZjdcdTYwNTJcdTYyOTdcdTY3''@;'; put 'put ''NmRcdTY4NDFcdTZjODZcdTZlMmZcdTdmMzhcdTgwOWJcdTgyMmEiXSxbImZhYTEiLCJcdWZhMDhcdWZhMDlcdTk4MDVcdTRlYTVcdTUwNTVcdTU0YjNcdTU3OTNcdTU5NWFcdTViNjlcdTViYjNcdTYxYzhcdTY5NzdcdTZkNzdcdTcwMjNcdTg3ZjlcdTg5ZTNcdThhNzJcdThhZTdcdTkwODJc''@;'; put 'put ''dTk5ZWRcdTlhYjhcdTUyYmVcdTY4MzhcdTUwMTZcdTVlNzhcdTY3NGZcdTgzNDdcdTg4NGNcdTRlYWJcdTU0MTFcdTU2YWVcdTczZTZcdTkxMTVcdTk3ZmZcdTk5MDlcdTk5NTdcdTk5OTlcdTU2NTNcdTU4OWZcdTg2NWJcdThhMzFcdTYxYjJcdTZhZjZcdTczN2JcdThlZDJcdTZiNDdcdTk2''@;'; put 'put ''YWFcdTlhNTdcdTU5NTVcdTcyMDBcdThkNmJcdTk3NjlcdTRmZDRcdTVjZjRcdTVmMjZcdTYxZjhcdTY2NWJcdTZjZWJcdTcwYWJcdTczODRcdTczYjlcdTczZmVcdTc3MjlcdTc3NGRcdTdkNDNcdTdkNjJcdTdlMjNcdTgyMzdcdTg4NTJcdWZhMGFcdThjZTJcdTkyNDlcdTk4NmZcdTViNTFc''@;'; put 'put ''dTdhNzRcdTg4NDBcdTk4MDFcdTVhY2NcdTRmZTBcdTUzNTRcdTU5M2VcdTVjZmRcdTYzM2VcdTZkNzlcdTcyZjlcdTgxMDVcdTgxMDdcdTgzYTJcdTkyY2ZcdTk4MzBcdTRlYThcdTUxNDRcdTUyMTFcdTU3OGIiXSxbImZiYTEiLCJcdTVmNjJcdTZjYzJcdTZlY2VcdTcwMDVcdTcwNTBcdTcw''@;'; put 'put ''YWZcdTcxOTJcdTczZTlcdTc0NjlcdTgzNGFcdTg3YTJcdTg4NjFcdTkwMDhcdTkwYTJcdTkzYTNcdTk5YThcdTUxNmVcdTVmNTdcdTYwZTBcdTYxNjdcdTY2YjNcdTg1NTlcdThlNGFcdTkxYWZcdTk3OGJcdTRlNGVcdTRlOTJcdTU0N2NcdTU4ZDVcdTU4ZmFcdTU5N2RcdTVjYjVcdTVmMjdc''@;'; put 'put ''dTYyMzZcdTYyNDhcdTY2MGFcdTY2NjdcdTZiZWJcdTZkNjlcdTZkY2ZcdTZlNTZcdTZlZjhcdTZmOTRcdTZmZTBcdTZmZTlcdTcwNWRcdTcyZDBcdTc0MjVcdTc0NWFcdTc0ZTBcdTc2OTNcdTc5NWNcdTdjY2FcdTdlMWVcdTgwZTFcdTgyYTZcdTg0NmJcdTg0YmZcdTg2NGVcdTg2NWZcdTg3''@;'; put 'put ''NzRcdThiNzdcdThjNmFcdTkzYWNcdTk4MDBcdTk4NjVcdTYwZDFcdTYyMTZcdTkxNzdcdTVhNWFcdTY2MGZcdTZkZjdcdTZlM2VcdTc0M2ZcdTliNDJcdTVmZmRcdTYwZGFcdTdiMGZcdTU0YzRcdTVmMThcdTZjNWVcdTZjZDNcdTZkMmFcdTcwZDhcdTdkMDVcdTg2NzlcdThhMGNcdTlkM2Jc''@;'; put 'put ''dTUzMTZcdTU0OGNcdTViMDVcdTZhM2FcdTcwNmJcdTc1NzUiXSxbImZjYTEiLCJcdTc5OGRcdTc5YmVcdTgyYjFcdTgzZWZcdThhNzFcdThiNDFcdThjYThcdTk3NzRcdWZhMGJcdTY0ZjRcdTY1MmJcdTc4YmFcdTc4YmJcdTdhNmJcdTRlMzhcdTU1OWFcdTU5NTBcdTViYTZcdTVlN2JcdTYw''@;'; put 'put ''YTNcdTYzZGJcdTZiNjFcdTY2NjVcdTY4NTNcdTZlMTlcdTcxNjVcdTc0YjBcdTdkMDhcdTkwODRcdTlhNjlcdTljMjVcdTZkM2JcdTZlZDFcdTczM2VcdThjNDFcdTk1Y2FcdTUxZjBcdTVlNGNcdTVmYThcdTYwNGRcdTYwZjZcdTYxMzBcdTYxNGNcdTY2NDNcdTY2NDRcdTY5YTVcdTZjYzFc''@;'; put 'put ''dTZlNWZcdTZlYzlcdTZmNjJcdTcxNGNcdTc0OWNcdTc2ODdcdTdiYzFcdTdjMjdcdTgzNTJcdTg3NTdcdTkwNTFcdTk2OGRcdTllYzNcdTUzMmZcdTU2ZGVcdTVlZmJcdTVmOGFcdTYwNjJcdTYwOTRcdTYxZjdcdTY2NjZcdTY3MDNcdTZhOWNcdTZkZWVcdTZmYWVcdTcwNzBcdTczNmFcdTdl''@;'; put 'put ''NmFcdTgxYmVcdTgzMzRcdTg2ZDRcdThhYThcdThjYzRcdTUyODNcdTczNzJcdTViOTZcdTZhNmJcdTk0MDRcdTU0ZWVcdTU2ODZcdTViNWRcdTY1NDhcdTY1ODVcdTY2YzlcdTY4OWZcdTZkOGRcdTZkYzYiXSxbImZkYTEiLCJcdTcyM2JcdTgwYjRcdTkxNzVcdTlhNGRcdTRmYWZcdTUwMTlc''@;'; put 'put ''dTUzOWFcdTU0MGVcdTU0M2NcdTU1ODlcdTU1YzVcdTVlM2ZcdTVmOGNcdTY3M2RcdTcxNjZcdTczZGRcdTkwMDVcdTUyZGJcdTUyZjNcdTU4NjRcdTU4Y2VcdTcxMDRcdTcxOGZcdTcxZmJcdTg1YjBcdThhMTNcdTY2ODhcdTg1YThcdTU1YTdcdTY2ODRcdTcxNGFcdTg0MzFcdTUzNDlcdTU1''@;'; put 'put ''OTlcdTZiYzFcdTVmNTlcdTVmYmRcdTYzZWVcdTY2ODlcdTcxNDdcdThhZjFcdThmMWRcdTllYmVcdTRmMTFcdTY0M2FcdTcwY2JcdTc1NjZcdTg2NjdcdTYwNjRcdThiNGVcdTlkZjhcdTUxNDdcdTUxZjZcdTUzMDhcdTZkMzZcdTgwZjhcdTllZDFcdTY2MTVcdTZiMjNcdTcwOThcdTc1ZDVc''@;'; put 'put ''dTU0MDNcdTVjNzlcdTdkMDdcdThhMTZcdTZiMjBcdTZiM2RcdTZiNDZcdTU0MzhcdTYwNzBcdTZkM2RcdTdmZDVcdTgyMDhcdTUwZDZcdTUxZGVcdTU1OWNcdTU2NmJcdTU2Y2RcdTU5ZWNcdTViMDlcdTVlMGNcdTYxOTlcdTYxOThcdTYyMzFcdTY2NWVcdTY2ZTZcdTcxOTlcdTcxYjlcdTcx''@;'; put 'put ''YmFcdTcyYTdcdTc5YTdcdTdhMDBcdTdmYjJcdThhNzAiXV0nKX0sNzQyODQ6V2U9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI3XSxbImExNDAiLCJcdTMwMDBcdWZmMGNcdTMwMDFcdTMwMDJcdWZmMGVcdTIwMjdcdWZmMWJcdWZmMWFc''@;'; put 'put ''dWZmMWZcdWZmMDFcdWZlMzBcdTIwMjZcdTIwMjVcdWZlNTBcdWZlNTFcdWZlNTJceGI3XHVmZTU0XHVmZTU1XHVmZTU2XHVmZTU3XHVmZjVjXHUyMDEzXHVmZTMxXHUyMDE0XHVmZTMzXHUyNTc0XHVmZTM0XHVmZTRmXHVmZjA4XHVmZjA5XHVmZTM1XHVmZTM2XHVmZjViXHVmZjVkXHVmZTM3''@;'; put 'put ''XHVmZTM4XHUzMDE0XHUzMDE1XHVmZTM5XHVmZTNhXHUzMDEwXHUzMDExXHVmZTNiXHVmZTNjXHUzMDBhXHUzMDBiXHVmZTNkXHVmZTNlXHUzMDA4XHUzMDA5XHVmZTNmXHVmZTQwXHUzMDBjXHUzMDBkXHVmZTQxXHVmZTQyXHUzMDBlXHUzMDBmXHVmZTQzXHVmZTQ0XHVmZTU5XHVmZTVhIl0s''@;'; put 'put ''WyJhMWExIiwiXHVmZTViXHVmZTVjXHVmZTVkXHVmZTVlXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDFkXHUzMDFlXHUyMDM1XHUyMDMyXHVmZjAzXHVmZjA2XHVmZjBhXHUyMDNiXHhhN1x1MzAwM1x1MjVjYlx1MjVjZlx1MjViM1x1MjViMlx1MjVjZVx1MjYwNlx1MjYwNVx1MjVjN1x1''@;'; put 'put ''MjVjNlx1MjVhMVx1MjVhMFx1MjViZFx1MjViY1x1MzJhM1x1MjEwNVx4YWZcdWZmZTNcdWZmM2ZcdTAyY2RcdWZlNDlcdWZlNGFcdWZlNGRcdWZlNGVcdWZlNGJcdWZlNGNcdWZlNWZcdWZlNjBcdWZlNjFcdWZmMGJcdWZmMGRceGQ3XHhmN1x4YjFcdTIyMWFcdWZmMWNcdWZmMWVcdWZmMWRc''@;'; put 'put ''dTIyNjZcdTIyNjdcdTIyNjBcdTIyMWVcdTIyNTJcdTIyNjFcdWZlNjIiLDQsIlx1ZmY1ZVx1MjIyOVx1MjIyYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MzNkMlx1MzNkMVx1MjIyYlx1MjIyZVx1MjIzNVx1MjIzNFx1MjY0MFx1MjY0Mlx1MjI5NVx1MjI5OVx1MjE5MVx1MjE5M1x1MjE5''@;'; put 'put ''MFx1MjE5Mlx1MjE5Nlx1MjE5N1x1MjE5OVx1MjE5OFx1MjIyNVx1MjIyM1x1ZmYwZiJdLFsiYTI0MCIsIlx1ZmYzY1x1MjIxNVx1ZmU2OFx1ZmYwNFx1ZmZlNVx1MzAxMlx1ZmZlMFx1ZmZlMVx1ZmYwNVx1ZmYyMFx1MjEwM1x1MjEwOVx1ZmU2OVx1ZmU2YVx1ZmU2Ylx1MzNkNVx1MzM5Y1x1''@;'; put 'put ''MzM5ZFx1MzM5ZVx1MzNjZVx1MzNhMVx1MzM4ZVx1MzM4Zlx1MzNjNFx4YjBcdTUxNTlcdTUxNWJcdTUxNWVcdTUxNWRcdTUxNjFcdTUxNjNcdTU1ZTdcdTc0ZTlcdTdjY2VcdTI1ODEiLDcsIlx1MjU4Zlx1MjU4ZVx1MjU4ZFx1MjU4Y1x1MjU4Ylx1MjU4YVx1MjU4OVx1MjUzY1x1MjUzNFx1''@;'; put 'put ''MjUyY1x1MjUyNFx1MjUxY1x1MjU5NFx1MjUwMFx1MjUwMlx1MjU5NVx1MjUwY1x1MjUxMFx1MjUxNFx1MjUxOFx1MjU2ZCJdLFsiYTJhMSIsIlx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU1MFx1MjU1ZVx1MjU2YVx1MjU2MVx1MjVlMlx1MjVlM1x1MjVlNVx1MjVlNFx1MjU3MVx1MjU3Mlx1MjU3''@;'; put 'put ''M1x1ZmYxMCIsOSwiXHUyMTYwIiw5LCJcdTMwMjEiLDgsIlx1NTM0MVx1NTM0NFx1NTM0NVx1ZmYyMSIsMjUsIlx1ZmY0MSIsMjFdLFsiYTM0MCIsIlx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1MDM5MSIsMTYsIlx1MDNhMyIsNiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2LCJcdTMxMDUiLDEw''@;'; put 'put ''XSxbImEzYTEiLCJcdTMxMTAiLDI1LCJcdTAyZDlcdTAyYzlcdTAyY2FcdTAyYzdcdTAyY2IiXSxbImEzZTEiLCJcdTIwYWMiXSxbImE0NDAiLCJcdTRlMDBcdTRlNTlcdTRlMDFcdTRlMDNcdTRlNDNcdTRlNWRcdTRlODZcdTRlOGNcdTRlYmFcdTUxM2ZcdTUxNjVcdTUxNmJcdTUxZTBcdTUy''@;'; put 'put ''MDBcdTUyMDFcdTUyOWJcdTUzMTVcdTUzNDFcdTUzNWNcdTUzYzhcdTRlMDlcdTRlMGJcdTRlMDhcdTRlMGFcdTRlMmJcdTRlMzhcdTUxZTFcdTRlNDVcdTRlNDhcdTRlNWZcdTRlNWVcdTRlOGVcdTRlYTFcdTUxNDBcdTUyMDNcdTUyZmFcdTUzNDNcdTUzYzlcdTUzZTNcdTU3MWZcdTU4ZWJc''@;'; put 'put ''dTU5MTVcdTU5MjdcdTU5NzNcdTViNTBcdTViNTFcdTViNTNcdTViZjhcdTVjMGZcdTVjMjJcdTVjMzhcdTVjNzFcdTVkZGRcdTVkZTVcdTVkZjFcdTVkZjJcdTVkZjNcdTVkZmVcdTVlNzJcdTVlZmVcdTVmMGJcdTVmMTNcdTYyNGQiXSxbImE0YTEiLCJcdTRlMTFcdTRlMTBcdTRlMGRcdTRl''@;'; put 'put ''MmRcdTRlMzBcdTRlMzlcdTRlNGJcdTVjMzlcdTRlODhcdTRlOTFcdTRlOTVcdTRlOTJcdTRlOTRcdTRlYTJcdTRlYzFcdTRlYzBcdTRlYzNcdTRlYzZcdTRlYzdcdTRlY2RcdTRlY2FcdTRlY2JcdTRlYzRcdTUxNDNcdTUxNDFcdTUxNjdcdTUxNmRcdTUxNmVcdTUxNmNcdTUxOTdcdTUxZjZc''@;'; put 'put ''dTUyMDZcdTUyMDdcdTUyMDhcdTUyZmJcdTUyZmVcdTUyZmZcdTUzMTZcdTUzMzlcdTUzNDhcdTUzNDdcdTUzNDVcdTUzNWVcdTUzODRcdTUzY2JcdTUzY2FcdTUzY2RcdTU4ZWNcdTU5MjlcdTU5MmJcdTU5MmFcdTU5MmRcdTViNTRcdTVjMTFcdTVjMjRcdTVjM2FcdTVjNmZcdTVkZjRcdTVl''@;'; put 'put ''N2JcdTVlZmZcdTVmMTRcdTVmMTVcdTVmYzNcdTYyMDhcdTYyMzZcdTYyNGJcdTYyNGVcdTY1MmZcdTY1ODdcdTY1OTdcdTY1YTRcdTY1YjlcdTY1ZTVcdTY2ZjBcdTY3MDhcdTY3MjhcdTZiMjBcdTZiNjJcdTZiNzlcdTZiY2JcdTZiZDRcdTZiZGJcdTZjMGZcdTZjMzRcdTcwNmJcdTcyMmFc''@;'; put 'put ''dTcyMzZcdTcyM2JcdTcyNDdcdTcyNTlcdTcyNWJcdTcyYWNcdTczOGJcdTRlMTkiXSxbImE1NDAiLCJcdTRlMTZcdTRlMTVcdTRlMTRcdTRlMThcdTRlM2JcdTRlNGRcdTRlNGZcdTRlNGVcdTRlZTVcdTRlZDhcdTRlZDRcdTRlZDVcdTRlZDZcdTRlZDdcdTRlZTNcdTRlZTRcdTRlZDlcdTRl''@;'; put 'put ''ZGVcdTUxNDVcdTUxNDRcdTUxODlcdTUxOGFcdTUxYWNcdTUxZjlcdTUxZmFcdTUxZjhcdTUyMGFcdTUyYTBcdTUyOWZcdTUzMDVcdTUzMDZcdTUzMTdcdTUzMWRcdTRlZGZcdTUzNGFcdTUzNDlcdTUzNjFcdTUzNjBcdTUzNmZcdTUzNmVcdTUzYmJcdTUzZWZcdTUzZTRcdTUzZjNcdTUzZWNc''@;'; put 'put ''dTUzZWVcdTUzZTlcdTUzZThcdTUzZmNcdTUzZjhcdTUzZjVcdTUzZWJcdTUzZTZcdTUzZWFcdTUzZjJcdTUzZjFcdTUzZjBcdTUzZTVcdTUzZWRcdTUzZmJcdTU2ZGJcdTU2ZGFcdTU5MTYiXSxbImE1YTEiLCJcdTU5MmVcdTU5MzFcdTU5NzRcdTU5NzZcdTViNTVcdTViODNcdTVjM2NcdTVk''@;'; put 'put ''ZThcdTVkZTdcdTVkZTZcdTVlMDJcdTVlMDNcdTVlNzNcdTVlN2NcdTVmMDFcdTVmMThcdTVmMTdcdTVmYzVcdTYyMGFcdTYyNTNcdTYyNTRcdTYyNTJcdTYyNTFcdTY1YTVcdTY1ZTZcdTY3MmVcdTY3MmNcdTY3MmFcdTY3MmJcdTY3MmRcdTZiNjNcdTZiY2RcdTZjMTFcdTZjMTBcdTZjMzhc''@;'; put 'put ''dTZjNDFcdTZjNDBcdTZjM2VcdTcyYWZcdTczODRcdTczODlcdTc0ZGNcdTc0ZTZcdTc1MThcdTc1MWZcdTc1MjhcdTc1MjlcdTc1MzBcdTc1MzFcdTc1MzJcdTc1MzNcdTc1OGJcdTc2N2RcdTc2YWVcdTc2YmZcdTc2ZWVcdTc3ZGJcdTc3ZTJcdTc3ZjNcdTc5M2FcdTc5YmVcdTdhNzRcdTdh''@;'; put 'put ''Y2JcdTRlMWVcdTRlMWZcdTRlNTJcdTRlNTNcdTRlNjlcdTRlOTlcdTRlYTRcdTRlYTZcdTRlYTVcdTRlZmZcdTRmMDlcdTRmMTlcdTRmMGFcdTRmMTVcdTRmMGRcdTRmMTBcdTRmMTFcdTRmMGZcdTRlZjJcdTRlZjZcdTRlZmJcdTRlZjBcdTRlZjNcdTRlZmRcdTRmMDFcdTRmMGJcdTUxNDlc''@;'; put 'put ''dTUxNDdcdTUxNDZcdTUxNDhcdTUxNjgiXSxbImE2NDAiLCJcdTUxNzFcdTUxOGRcdTUxYjBcdTUyMTdcdTUyMTFcdTUyMTJcdTUyMGVcdTUyMTZcdTUyYTNcdTUzMDhcdTUzMjFcdTUzMjBcdTUzNzBcdTUzNzFcdTU0MDlcdTU0MGZcdTU0MGNcdTU0MGFcdTU0MTBcdTU0MDFcdTU0MGJcdTU0''@;'; put 'put ''MDRcdTU0MTFcdTU0MGRcdTU0MDhcdTU0MDNcdTU0MGVcdTU0MDZcdTU0MTJcdTU2ZTBcdTU2ZGVcdTU2ZGRcdTU3MzNcdTU3MzBcdTU3MjhcdTU3MmRcdTU3MmNcdTU3MmZcdTU3MjlcdTU5MTlcdTU5MWFcdTU5MzdcdTU5MzhcdTU5ODRcdTU5NzhcdTU5ODNcdTU5N2RcdTU5NzlcdTU5ODJc''@;'; put 'put ''dTU5ODFcdTViNTdcdTViNThcdTViODdcdTViODhcdTViODVcdTViODlcdTViZmFcdTVjMTZcdTVjNzlcdTVkZGVcdTVlMDZcdTVlNzZcdTVlNzQiXSxbImE2YTEiLCJcdTVmMGZcdTVmMWJcdTVmZDlcdTVmZDZcdTYyMGVcdTYyMGNcdTYyMGRcdTYyMTBcdTYyNjNcdTYyNWJcdTYyNThcdTY1''@;'; put 'put ''MzZcdTY1ZTlcdTY1ZThcdTY1ZWNcdTY1ZWRcdTY2ZjJcdTY2ZjNcdTY3MDlcdTY3M2RcdTY3MzRcdTY3MzFcdTY3MzVcdTZiMjFcdTZiNjRcdTZiN2JcdTZjMTZcdTZjNWRcdTZjNTdcdTZjNTlcdTZjNWZcdTZjNjBcdTZjNTBcdTZjNTVcdTZjNjFcdTZjNWJcdTZjNGRcdTZjNGVcdTcwNzBc''@;'; put 'put ''dTcyNWZcdTcyNWRcdTc2N2VcdTdhZjlcdTdjNzNcdTdjZjhcdTdmMzZcdTdmOGFcdTdmYmRcdTgwMDFcdTgwMDNcdTgwMGNcdTgwMTJcdTgwMzNcdTgwN2ZcdTgwODlcdTgwOGJcdTgwOGNcdTgxZTNcdTgxZWFcdTgxZjNcdTgxZmNcdTgyMGNcdTgyMWJcdTgyMWZcdTgyNmVcdTgyNzJcdTgy''@;'; put 'put ''N2VcdTg2NmJcdTg4NDBcdTg4NGNcdTg4NjNcdTg5N2ZcdTk2MjFcdTRlMzJcdTRlYThcdTRmNGRcdTRmNGZcdTRmNDdcdTRmNTdcdTRmNWVcdTRmMzRcdTRmNWJcdTRmNTVcdTRmMzBcdTRmNTBcdTRmNTFcdTRmM2RcdTRmM2FcdTRmMzhcdTRmNDNcdTRmNTRcdTRmM2NcdTRmNDZcdTRmNjMi''@;'; put 'put ''XSxbImE3NDAiLCJcdTRmNWNcdTRmNjBcdTRmMmZcdTRmNGVcdTRmMzZcdTRmNTlcdTRmNWRcdTRmNDhcdTRmNWFcdTUxNGNcdTUxNGJcdTUxNGRcdTUxNzVcdTUxYjZcdTUxYjdcdTUyMjVcdTUyMjRcdTUyMjlcdTUyMmFcdTUyMjhcdTUyYWJcdTUyYTlcdTUyYWFcdTUyYWNcdTUzMjNcdTUz''@;'; put 'put ''NzNcdTUzNzVcdTU0MWRcdTU0MmRcdTU0MWVcdTU0M2VcdTU0MjZcdTU0NGVcdTU0MjdcdTU0NDZcdTU0NDNcdTU0MzNcdTU0NDhcdTU0NDJcdTU0MWJcdTU0MjlcdTU0NGFcdTU0MzlcdTU0M2JcdTU0MzhcdTU0MmVcdTU0MzVcdTU0MzZcdTU0MjBcdTU0M2NcdTU0NDBcdTU0MzFcdTU0MmJc''@;'; put 'put ''dTU0MWZcdTU0MmNcdTU2ZWFcdTU2ZjBcdTU2ZTRcdTU2ZWJcdTU3NGFcdTU3NTFcdTU3NDBcdTU3NGQiXSxbImE3YTEiLCJcdTU3NDdcdTU3NGVcdTU3M2VcdTU3NTBcdTU3NGZcdTU3M2JcdTU4ZWZcdTU5M2VcdTU5OWRcdTU5OTJcdTU5YThcdTU5OWVcdTU5YTNcdTU5OTlcdTU5OTZcdTU5''@;'; put 'put ''OGRcdTU5YTRcdTU5OTNcdTU5OGFcdTU5YTVcdTViNWRcdTViNWNcdTViNWFcdTViNWJcdTViOGNcdTViOGJcdTViOGZcdTVjMmNcdTVjNDBcdTVjNDFcdTVjM2ZcdTVjM2VcdTVjOTBcdTVjOTFcdTVjOTRcdTVjOGNcdTVkZWJcdTVlMGNcdTVlOGZcdTVlODdcdTVlOGFcdTVlZjdcdTVmMDRc''@;'; put 'put ''dTVmMWZcdTVmNjRcdTVmNjJcdTVmNzdcdTVmNzlcdTVmZDhcdTVmY2NcdTVmZDdcdTVmY2RcdTVmZjFcdTVmZWJcdTVmZjhcdTVmZWFcdTYyMTJcdTYyMTFcdTYyODRcdTYyOTdcdTYyOTZcdTYyODBcdTYyNzZcdTYyODlcdTYyNmRcdTYyOGFcdTYyN2NcdTYyN2VcdTYyNzlcdTYyNzNcdTYy''@;'; put 'put ''OTJcdTYyNmZcdTYyOThcdTYyNmVcdTYyOTVcdTYyOTNcdTYyOTFcdTYyODZcdTY1MzlcdTY1M2JcdTY1MzhcdTY1ZjFcdTY2ZjRcdTY3NWZcdTY3NGVcdTY3NGZcdTY3NTBcdTY3NTFcdTY3NWNcdTY3NTZcdTY3NWVcdTY3NDlcdTY3NDZcdTY3NjAiXSxbImE4NDAiLCJcdTY3NTNcdTY3NTdc''@;'; put 'put ''dTZiNjVcdTZiY2ZcdTZjNDJcdTZjNWVcdTZjOTlcdTZjODFcdTZjODhcdTZjODlcdTZjODVcdTZjOWJcdTZjNmFcdTZjN2FcdTZjOTBcdTZjNzBcdTZjOGNcdTZjNjhcdTZjOTZcdTZjOTJcdTZjN2RcdTZjODNcdTZjNzJcdTZjN2VcdTZjNzRcdTZjODZcdTZjNzZcdTZjOGRcdTZjOTRcdTZj''@;'; put 'put ''OThcdTZjODJcdTcwNzZcdTcwN2NcdTcwN2RcdTcwNzhcdTcyNjJcdTcyNjFcdTcyNjBcdTcyYzRcdTcyYzJcdTczOTZcdTc1MmNcdTc1MmJcdTc1MzdcdTc1MzhcdTc2ODJcdTc2ZWZcdTc3ZTNcdTc5YzFcdTc5YzBcdTc5YmZcdTdhNzZcdTdjZmJcdTdmNTVcdTgwOTZcdTgwOTNcdTgwOWRc''@;'; put 'put ''dTgwOThcdTgwOWJcdTgwOWFcdTgwYjJcdTgyNmZcdTgyOTIiXSxbImE4YTEiLCJcdTgyOGJcdTgyOGRcdTg5OGJcdTg5ZDJcdThhMDBcdThjMzdcdThjNDZcdThjNTVcdThjOWRcdThkNjRcdThkNzBcdThkYjNcdThlYWJcdThlY2FcdThmOWJcdThmYjBcdThmYzJcdThmYzZcdThmYzVcdThm''@;'; put 'put ''YzRcdTVkZTFcdTkwOTFcdTkwYTJcdTkwYWFcdTkwYTZcdTkwYTNcdTkxNDlcdTkxYzZcdTkxY2NcdTk2MzJcdTk2MmVcdTk2MzFcdTk2MmFcdTk2MmNcdTRlMjZcdTRlNTZcdTRlNzNcdTRlOGJcdTRlOWJcdTRlOWVcdTRlYWJcdTRlYWNcdTRmNmZcdTRmOWRcdTRmOGRcdTRmNzNcdTRmN2Zc''@;'; put 'put ''dTRmNmNcdTRmOWJcdTRmOGJcdTRmODZcdTRmODNcdTRmNzBcdTRmNzVcdTRmODhcdTRmNjlcdTRmN2JcdTRmOTZcdTRmN2VcdTRmOGZcdTRmOTFcdTRmN2FcdTUxNTRcdTUxNTJcdTUxNTVcdTUxNjlcdTUxNzdcdTUxNzZcdTUxNzhcdTUxYmRcdTUxZmRcdTUyM2JcdTUyMzhcdTUyMzdcdTUy''@;'; put 'put ''M2FcdTUyMzBcdTUyMmVcdTUyMzZcdTUyNDFcdTUyYmVcdTUyYmJcdTUzNTJcdTUzNTRcdTUzNTNcdTUzNTFcdTUzNjZcdTUzNzdcdTUzNzhcdTUzNzlcdTUzZDZcdTUzZDRcdTUzZDdcdTU0NzNcdTU0NzUiXSxbImE5NDAiLCJcdTU0OTZcdTU0NzhcdTU0OTVcdTU0ODBcdTU0N2JcdTU0Nzdc''@;'; put 'put ''dTU0ODRcdTU0OTJcdTU0ODZcdTU0N2NcdTU0OTBcdTU0NzFcdTU0NzZcdTU0OGNcdTU0OWFcdTU0NjJcdTU0NjhcdTU0OGJcdTU0N2RcdTU0OGVcdTU2ZmFcdTU3ODNcdTU3NzdcdTU3NmFcdTU3NjlcdTU3NjFcdTU3NjZcdTU3NjRcdTU3N2NcdTU5MWNcdTU5NDlcdTU5NDdcdTU5NDhcdTU5''@;'; put 'put ''NDRcdTU5NTRcdTU5YmVcdTU5YmJcdTU5ZDRcdTU5YjlcdTU5YWVcdTU5ZDFcdTU5YzZcdTU5ZDBcdTU5Y2RcdTU5Y2JcdTU5ZDNcdTU5Y2FcdTU5YWZcdTU5YjNcdTU5ZDJcdTU5YzVcdTViNWZcdTViNjRcdTViNjNcdTViOTdcdTViOWFcdTViOThcdTViOWNcdTViOTlcdTViOWJcdTVjMWFc''@;'; put 'put ''dTVjNDhcdTVjNDUiXSxbImE5YTEiLCJcdTVjNDZcdTVjYjdcdTVjYTFcdTVjYjhcdTVjYTlcdTVjYWJcdTVjYjFcdTVjYjNcdTVlMThcdTVlMWFcdTVlMTZcdTVlMTVcdTVlMWJcdTVlMTFcdTVlNzhcdTVlOWFcdTVlOTdcdTVlOWNcdTVlOTVcdTVlOTZcdTVlZjZcdTVmMjZcdTVmMjdcdTVm''@;'; put 'put ''MjlcdTVmODBcdTVmODFcdTVmN2ZcdTVmN2NcdTVmZGRcdTVmZTBcdTVmZmRcdTVmZjVcdTVmZmZcdTYwMGZcdTYwMTRcdTYwMmZcdTYwMzVcdTYwMTZcdTYwMmFcdTYwMTVcdTYwMjFcdTYwMjdcdTYwMjlcdTYwMmJcdTYwMWJcdTYyMTZcdTYyMTVcdTYyM2ZcdTYyM2VcdTYyNDBcdTYyN2Zc''@;'; put 'put ''dTYyYzlcdTYyY2NcdTYyYzRcdTYyYmZcdTYyYzJcdTYyYjlcdTYyZDJcdTYyZGJcdTYyYWJcdTYyZDNcdTYyZDRcdTYyY2JcdTYyYzhcdTYyYThcdTYyYmRcdTYyYmNcdTYyZDBcdTYyZDlcdTYyYzdcdTYyY2RcdTYyYjVcdTYyZGFcdTYyYjFcdTYyZDhcdTYyZDZcdTYyZDdcdTYyYzZcdTYy''@;'; put 'put ''YWNcdTYyY2VcdTY1M2VcdTY1YTdcdTY1YmNcdTY1ZmFcdTY2MTRcdTY2MTNcdTY2MGNcdTY2MDZcdTY2MDJcdTY2MGVcdTY2MDBcdTY2MGZcdTY2MTVcdTY2MGEiXSxbImFhNDAiLCJcdTY2MDdcdTY3MGRcdTY3MGJcdTY3NmRcdTY3OGJcdTY3OTVcdTY3NzFcdTY3OWNcdTY3NzNcdTY3Nzdc''@;'; put 'put ''dTY3ODdcdTY3OWRcdTY3OTdcdTY3NmZcdTY3NzBcdTY3N2ZcdTY3ODlcdTY3N2VcdTY3OTBcdTY3NzVcdTY3OWFcdTY3OTNcdTY3N2NcdTY3NmFcdTY3NzJcdTZiMjNcdTZiNjZcdTZiNjdcdTZiN2ZcdTZjMTNcdTZjMWJcdTZjZTNcdTZjZThcdTZjZjNcdTZjYjFcdTZjY2NcdTZjZTVcdTZj''@;'; put 'put ''YjNcdTZjYmRcdTZjYmVcdTZjYmNcdTZjZTJcdTZjYWJcdTZjZDVcdTZjZDNcdTZjYjhcdTZjYzRcdTZjYjlcdTZjYzFcdTZjYWVcdTZjZDdcdTZjYzVcdTZjZjFcdTZjYmZcdTZjYmJcdTZjZTFcdTZjZGJcdTZjY2FcdTZjYWNcdTZjZWZcdTZjZGNcdTZjZDZcdTZjZTAiXSxbImFhYTEiLCJc''@;'; put 'put ''dTcwOTVcdTcwOGVcdTcwOTJcdTcwOGFcdTcwOTlcdTcyMmNcdTcyMmRcdTcyMzhcdTcyNDhcdTcyNjdcdTcyNjlcdTcyYzBcdTcyY2VcdTcyZDlcdTcyZDdcdTcyZDBcdTczYTlcdTczYThcdTczOWZcdTczYWJcdTczYTVcdTc1M2RcdTc1OWRcdTc1OTlcdTc1OWFcdTc2ODRcdTc2YzJcdTc2''@;'; put 'put ''ZjJcdTc2ZjRcdTc3ZTVcdTc3ZmRcdTc5M2VcdTc5NDBcdTc5NDFcdTc5YzlcdTc5YzhcdTdhN2FcdTdhNzlcdTdhZmFcdTdjZmVcdTdmNTRcdTdmOGNcdTdmOGJcdTgwMDVcdTgwYmFcdTgwYTVcdTgwYTJcdTgwYjFcdTgwYTFcdTgwYWJcdTgwYTlcdTgwYjRcdTgwYWFcdTgwYWZcdTgxZTVc''@;'; put 'put ''dTgxZmVcdTgyMGRcdTgyYjNcdTgyOWRcdTgyOTlcdTgyYWRcdTgyYmRcdTgyOWZcdTgyYjlcdTgyYjFcdTgyYWNcdTgyYTVcdTgyYWZcdTgyYjhcdTgyYTNcdTgyYjBcdTgyYmVcdTgyYjdcdTg2NGVcdTg2NzFcdTUyMWRcdTg4NjhcdThlY2JcdThmY2VcdThmZDRcdThmZDFcdTkwYjVcdTkw''@;'; put 'put ''YjhcdTkwYjFcdTkwYjZcdTkxYzdcdTkxZDFcdTk1NzdcdTk1ODBcdTk2MWNcdTk2NDBcdTk2M2ZcdTk2M2JcdTk2NDQiXSxbImFiNDAiLCJcdTk2NDJcdTk2YjlcdTk2ZThcdTk3NTJcdTk3NWVcdTRlOWZcdTRlYWRcdTRlYWVcdTRmZTFcdTRmYjVcdTRmYWZcdTRmYmZcdTRmZTBcdTRmZDFc''@;'; put 'put ''dTRmY2ZcdTRmZGRcdTRmYzNcdTRmYjZcdTRmZDhcdTRmZGZcdTRmY2FcdTRmZDdcdTRmYWVcdTRmZDBcdTRmYzRcdTRmYzJcdTRmZGFcdTRmY2VcdTRmZGVcdTRmYjdcdTUxNTdcdTUxOTJcdTUxOTFcdTUxYTBcdTUyNGVcdTUyNDNcdTUyNGFcdTUyNGRcdTUyNGNcdTUyNGJcdTUyNDdcdTUy''@;'; put 'put ''YzdcdTUyYzlcdTUyYzNcdTUyYzFcdTUzMGRcdTUzNTdcdTUzN2JcdTUzOWFcdTUzZGJcdTU0YWNcdTU0YzBcdTU0YThcdTU0Y2VcdTU0YzlcdTU0YjhcdTU0YTZcdTU0YjNcdTU0YzdcdTU0YzJcdTU0YmRcdTU0YWFcdTU0YzEiXSxbImFiYTEiLCJcdTU0YzRcdTU0YzhcdTU0YWZcdTU0YWJc''@;'; put 'put ''dTU0YjFcdTU0YmJcdTU0YTlcdTU0YTdcdTU0YmZcdTU2ZmZcdTU3ODJcdTU3OGJcdTU3YTBcdTU3YTNcdTU3YTJcdTU3Y2VcdTU3YWVcdTU3OTNcdTU5NTVcdTU5NTFcdTU5NGZcdTU5NGVcdTU5NTBcdTU5ZGNcdTU5ZDhcdTU5ZmZcdTU5ZTNcdTU5ZThcdTVhMDNcdTU5ZTVcdTU5ZWFcdTU5''@;'; put 'put ''ZGFcdTU5ZTZcdTVhMDFcdTU5ZmJcdTViNjlcdTViYTNcdTViYTZcdTViYTRcdTViYTJcdTViYTVcdTVjMDFcdTVjNGVcdTVjNGZcdTVjNGRcdTVjNGJcdTVjZDlcdTVjZDJcdTVkZjdcdTVlMWRcdTVlMjVcdTVlMWZcdTVlN2RcdTVlYTBcdTVlYTZcdTVlZmFcdTVmMDhcdTVmMmRcdTVmNjVc''@;'; put 'put ''dTVmODhcdTVmODVcdTVmOGFcdTVmOGJcdTVmODdcdTVmOGNcdTVmODlcdTYwMTJcdTYwMWRcdTYwMjBcdTYwMjVcdTYwMGVcdTYwMjhcdTYwNGRcdTYwNzBcdTYwNjhcdTYwNjJcdTYwNDZcdTYwNDNcdTYwNmNcdTYwNmJcdTYwNmFcdTYwNjRcdTYyNDFcdTYyZGNcdTYzMTZcdTYzMDlcdTYy''@;'; put 'put ''ZmNcdTYyZWRcdTYzMDFcdTYyZWVcdTYyZmRcdTYzMDdcdTYyZjFcdTYyZjciXSxbImFjNDAiLCJcdTYyZWZcdTYyZWNcdTYyZmVcdTYyZjRcdTYzMTFcdTYzMDJcdTY1M2ZcdTY1NDVcdTY1YWJcdTY1YmRcdTY1ZTJcdTY2MjVcdTY2MmRcdTY2MjBcdTY2MjdcdTY2MmZcdTY2MWZcdTY2Mjhc''@;'; put 'put ''dTY2MzFcdTY2MjRcdTY2ZjdcdTY3ZmZcdTY3ZDNcdTY3ZjFcdTY3ZDRcdTY3ZDBcdTY3ZWNcdTY3YjZcdTY3YWZcdTY3ZjVcdTY3ZTlcdTY3ZWZcdTY3YzRcdTY3ZDFcdTY3YjRcdTY3ZGFcdTY3ZTVcdTY3YjhcdTY3Y2ZcdTY3ZGVcdTY3ZjNcdTY3YjBcdTY3ZDlcdTY3ZTJcdTY3ZGRcdTY3''@;'; put 'put ''ZDJcdTZiNmFcdTZiODNcdTZiODZcdTZiYjVcdTZiZDJcdTZiZDdcdTZjMWZcdTZjYzlcdTZkMGJcdTZkMzJcdTZkMmFcdTZkNDFcdTZkMjVcdTZkMGNcdTZkMzFcdTZkMWVcdTZkMTciXSxbImFjYTEiLCJcdTZkM2JcdTZkM2RcdTZkM2VcdTZkMzZcdTZkMWJcdTZjZjVcdTZkMzlcdTZkMjdc''@;'; put 'put ''dTZkMzhcdTZkMjlcdTZkMmVcdTZkMzVcdTZkMGVcdTZkMmJcdTcwYWJcdTcwYmFcdTcwYjNcdTcwYWNcdTcwYWZcdTcwYWRcdTcwYjhcdTcwYWVcdTcwYTRcdTcyMzBcdTcyNzJcdTcyNmZcdTcyNzRcdTcyZTlcdTcyZTBcdTcyZTFcdTczYjdcdTczY2FcdTczYmJcdTczYjJcdTczY2RcdTcz''@;'; put 'put ''YzBcdTczYjNcdTc1MWFcdTc1MmRcdTc1NGZcdTc1NGNcdTc1NGVcdTc1NGJcdTc1YWJcdTc1YTRcdTc1YTVcdTc1YTJcdTc1YTNcdTc2NzhcdTc2ODZcdTc2ODdcdTc2ODhcdTc2YzhcdTc2YzZcdTc2YzNcdTc2YzVcdTc3MDFcdTc2ZjlcdTc2ZjhcdTc3MDlcdTc3MGJcdTc2ZmVcdTc2ZmNc''@;'; put 'put ''dTc3MDdcdTc3ZGNcdTc4MDJcdTc4MTRcdTc4MGNcdTc4MGRcdTc5NDZcdTc5NDlcdTc5NDhcdTc5NDdcdTc5YjlcdTc5YmFcdTc5ZDFcdTc5ZDJcdTc5Y2JcdTdhN2ZcdTdhODFcdTdhZmZcdTdhZmRcdTdjN2RcdTdkMDJcdTdkMDVcdTdkMDBcdTdkMDlcdTdkMDdcdTdkMDRcdTdkMDZcdTdm''@;'; put 'put ''MzhcdTdmOGVcdTdmYmZcdTgwMDQiXSxbImFkNDAiLCJcdTgwMTBcdTgwMGRcdTgwMTFcdTgwMzZcdTgwZDZcdTgwZTVcdTgwZGFcdTgwYzNcdTgwYzRcdTgwY2NcdTgwZTFcdTgwZGJcdTgwY2VcdTgwZGVcdTgwZTRcdTgwZGRcdTgxZjRcdTgyMjJcdTgyZTdcdTgzMDNcdTgzMDVcdTgyZTNc''@;'; put 'put ''dTgyZGJcdTgyZTZcdTgzMDRcdTgyZTVcdTgzMDJcdTgzMDlcdTgyZDJcdTgyZDdcdTgyZjFcdTgzMDFcdTgyZGNcdTgyZDRcdTgyZDFcdTgyZGVcdTgyZDNcdTgyZGZcdTgyZWZcdTgzMDZcdTg2NTBcdTg2NzlcdTg2N2JcdTg2N2FcdTg4NGRcdTg4NmJcdTg5ODFcdTg5ZDRcdThhMDhcdThh''@;'; put 'put ''MDJcdThhMDNcdThjOWVcdThjYTBcdThkNzRcdThkNzNcdThkYjRcdThlY2RcdThlY2NcdThmZjBcdThmZTZcdThmZTJcdThmZWFcdThmZTUiXSxbImFkYTEiLCJcdThmZWRcdThmZWJcdThmZTRcdThmZThcdTkwY2FcdTkwY2VcdTkwYzFcdTkwYzNcdTkxNGJcdTkxNGFcdTkxY2RcdTk1ODJc''@;'; put 'put ''dTk2NTBcdTk2NGJcdTk2NGNcdTk2NGRcdTk3NjJcdTk3NjlcdTk3Y2JcdTk3ZWRcdTk3ZjNcdTk4MDFcdTk4YThcdTk4ZGJcdTk4ZGZcdTk5OTZcdTk5OTlcdTRlNThcdTRlYjNcdTUwMGNcdTUwMGRcdTUwMjNcdTRmZWZcdTUwMjZcdTUwMjVcdTRmZjhcdTUwMjlcdTUwMTZcdTUwMDZcdTUw''@;'; put 'put ''M2NcdTUwMWZcdTUwMWFcdTUwMTJcdTUwMTFcdTRmZmFcdTUwMDBcdTUwMTRcdTUwMjhcdTRmZjFcdTUwMjFcdTUwMGJcdTUwMTlcdTUwMThcdTRmZjNcdTRmZWVcdTUwMmRcdTUwMmFcdTRmZmVcdTUwMmJcdTUwMDlcdTUxN2NcdTUxYTRcdTUxYTVcdTUxYTJcdTUxY2RcdTUxY2NcdTUxYzZc''@;'; put 'put ''dTUxY2JcdTUyNTZcdTUyNWNcdTUyNTRcdTUyNWJcdTUyNWRcdTUzMmFcdTUzN2ZcdTUzOWZcdTUzOWRcdTUzZGZcdTU0ZThcdTU1MTBcdTU1MDFcdTU1MzdcdTU0ZmNcdTU0ZTVcdTU0ZjJcdTU1MDZcdTU0ZmFcdTU1MTRcdTU0ZTlcdTU0ZWRcdTU0ZTFcdTU1MDlcdTU0ZWVcdTU0ZWEiXSxb''@;'; put 'put ''ImFlNDAiLCJcdTU0ZTZcdTU1MjdcdTU1MDdcdTU0ZmRcdTU1MGZcdTU3MDNcdTU3MDRcdTU3YzJcdTU3ZDRcdTU3Y2JcdTU3YzNcdTU4MDlcdTU5MGZcdTU5NTdcdTU5NThcdTU5NWFcdTVhMTFcdTVhMThcdTVhMWNcdTVhMWZcdTVhMWJcdTVhMTNcdTU5ZWNcdTVhMjBcdTVhMjNcdTVhMjlc''@;'; put 'put ''dTVhMjVcdTVhMGNcdTVhMDlcdTViNmJcdTVjNThcdTViYjBcdTViYjNcdTViYjZcdTViYjRcdTViYWVcdTViYjVcdTViYjlcdTViYjhcdTVjMDRcdTVjNTFcdTVjNTVcdTVjNTBcdTVjZWRcdTVjZmRcdTVjZmJcdTVjZWFcdTVjZThcdTVjZjBcdTVjZjZcdTVkMDFcdTVjZjRcdTVkZWVcdTVl''@;'; put 'put ''MmRcdTVlMmJcdTVlYWJcdTVlYWRcdTVlYTdcdTVmMzFcdTVmOTJcdTVmOTFcdTVmOTBcdTYwNTkiXSxbImFlYTEiLCJcdTYwNjNcdTYwNjVcdTYwNTBcdTYwNTVcdTYwNmRcdTYwNjlcdTYwNmZcdTYwODRcdTYwOWZcdTYwOWFcdTYwOGRcdTYwOTRcdTYwOGNcdTYwODVcdTYwOTZcdTYyNDdc''@;'; put 'put ''dTYyZjNcdTYzMDhcdTYyZmZcdTYzNGVcdTYzM2VcdTYzMmZcdTYzNTVcdTYzNDJcdTYzNDZcdTYzNGZcdTYzNDlcdTYzM2FcdTYzNTBcdTYzM2RcdTYzMmFcdTYzMmJcdTYzMjhcdTYzNGRcdTYzNGNcdTY1NDhcdTY1NDlcdTY1OTlcdTY1YzFcdTY1YzVcdTY2NDJcdTY2NDlcdTY2NGZcdTY2''@;'; put 'put ''NDNcdTY2NTJcdTY2NGNcdTY2NDVcdTY2NDFcdTY2ZjhcdTY3MTRcdTY3MTVcdTY3MTdcdTY4MjFcdTY4MzhcdTY4NDhcdTY4NDZcdTY4NTNcdTY4MzlcdTY4NDJcdTY4NTRcdTY4MjlcdTY4YjNcdTY4MTdcdTY4NGNcdTY4NTFcdTY4M2RcdTY3ZjRcdTY4NTBcdTY4NDBcdTY4M2NcdTY4NDNc''@;'; put 'put ''dTY4MmFcdTY4NDVcdTY4MTNcdTY4MThcdTY4NDFcdTZiOGFcdTZiODlcdTZiYjdcdTZjMjNcdTZjMjdcdTZjMjhcdTZjMjZcdTZjMjRcdTZjZjBcdTZkNmFcdTZkOTVcdTZkODhcdTZkODdcdTZkNjZcdTZkNzhcdTZkNzdcdTZkNTlcdTZkOTMiXSxbImFmNDAiLCJcdTZkNmNcdTZkODlcdTZk''@;'; put 'put ''NmVcdTZkNWFcdTZkNzRcdTZkNjlcdTZkOGNcdTZkOGFcdTZkNzlcdTZkODVcdTZkNjVcdTZkOTRcdTcwY2FcdTcwZDhcdTcwZTRcdTcwZDlcdTcwYzhcdTcwY2ZcdTcyMzlcdTcyNzlcdTcyZmNcdTcyZjlcdTcyZmRcdTcyZjhcdTcyZjdcdTczODZcdTczZWRcdTc0MDlcdTczZWVcdTczZTBc''@;'; put 'put ''dTczZWFcdTczZGVcdTc1NTRcdTc1NWRcdTc1NWNcdTc1NWFcdTc1NTlcdTc1YmVcdTc1YzVcdTc1YzdcdTc1YjJcdTc1YjNcdTc1YmRcdTc1YmNcdTc1YjlcdTc1YzJcdTc1YjhcdTc2OGJcdTc2YjBcdTc2Y2FcdTc2Y2RcdTc2Y2VcdTc3MjlcdTc3MWZcdTc3MjBcdTc3MjhcdTc3ZTlcdTc4''@;'; put 'put ''MzBcdTc4MjdcdTc4MzhcdTc4MWRcdTc4MzRcdTc4MzciXSxbImFmYTEiLCJcdTc4MjVcdTc4MmRcdTc4MjBcdTc4MWZcdTc4MzJcdTc5NTVcdTc5NTBcdTc5NjBcdTc5NWZcdTc5NTZcdTc5NWVcdTc5NWRcdTc5NTdcdTc5NWFcdTc5ZTRcdTc5ZTNcdTc5ZTdcdTc5ZGZcdTc5ZTZcdTc5ZTlc''@;'; put 'put ''dTc5ZDhcdTdhODRcdTdhODhcdTdhZDlcdTdiMDZcdTdiMTFcdTdjODlcdTdkMjFcdTdkMTdcdTdkMGJcdTdkMGFcdTdkMjBcdTdkMjJcdTdkMTRcdTdkMTBcdTdkMTVcdTdkMWFcdTdkMWNcdTdkMGRcdTdkMTlcdTdkMWJcdTdmM2FcdTdmNWZcdTdmOTRcdTdmYzVcdTdmYzFcdTgwMDZcdTgw''@;'; put 'put ''MThcdTgwMTVcdTgwMTlcdTgwMTdcdTgwM2RcdTgwM2ZcdTgwZjFcdTgxMDJcdTgwZjBcdTgxMDVcdTgwZWRcdTgwZjRcdTgxMDZcdTgwZjhcdTgwZjNcdTgxMDhcdTgwZmRcdTgxMGFcdTgwZmNcdTgwZWZcdTgxZWRcdTgxZWNcdTgyMDBcdTgyMTBcdTgyMmFcdTgyMmJcdTgyMjhcdTgyMmNc''@;'; put 'put ''dTgyYmJcdTgzMmJcdTgzNTJcdTgzNTRcdTgzNGFcdTgzMzhcdTgzNTBcdTgzNDlcdTgzMzVcdTgzMzRcdTgzNGZcdTgzMzJcdTgzMzlcdTgzMzZcdTgzMTdcdTgzNDBcdTgzMzFcdTgzMjhcdTgzNDMiXSxbImIwNDAiLCJcdTg2NTRcdTg2OGFcdTg2YWFcdTg2OTNcdTg2YTRcdTg2YTlcdTg2''@;'; put 'put ''OGNcdTg2YTNcdTg2OWNcdTg4NzBcdTg4NzdcdTg4ODFcdTg4ODJcdTg4N2RcdTg4NzlcdThhMThcdThhMTBcdThhMGVcdThhMGNcdThhMTVcdThhMGFcdThhMTdcdThhMTNcdThhMTZcdThhMGZcdThhMTFcdThjNDhcdThjN2FcdThjNzlcdThjYTFcdThjYTJcdThkNzdcdThlYWNcdThlZDJc''@;'; put 'put ''dThlZDRcdThlY2ZcdThmYjFcdTkwMDFcdTkwMDZcdThmZjdcdTkwMDBcdThmZmFcdThmZjRcdTkwMDNcdThmZmRcdTkwMDVcdThmZjhcdTkwOTVcdTkwZTFcdTkwZGRcdTkwZTJcdTkxNTJcdTkxNGRcdTkxNGNcdTkxZDhcdTkxZGRcdTkxZDdcdTkxZGNcdTkxZDlcdTk1ODNcdTk2NjJcdTk2''@;'; put 'put ''NjNcdTk2NjEiXSxbImIwYTEiLCJcdTk2NWJcdTk2NWRcdTk2NjRcdTk2NThcdTk2NWVcdTk2YmJcdTk4ZTJcdTk5YWNcdTlhYThcdTlhZDhcdTliMjVcdTliMzJcdTliM2NcdTRlN2VcdTUwN2FcdTUwN2RcdTUwNWNcdTUwNDdcdTUwNDNcdTUwNGNcdTUwNWFcdTUwNDlcdTUwNjVcdTUwNzZc''@;'; put 'put ''dTUwNGVcdTUwNTVcdTUwNzVcdTUwNzRcdTUwNzdcdTUwNGZcdTUwMGZcdTUwNmZcdTUwNmRcdTUxNWNcdTUxOTVcdTUxZjBcdTUyNmFcdTUyNmZcdTUyZDJcdTUyZDlcdTUyZDhcdTUyZDVcdTUzMTBcdTUzMGZcdTUzMTlcdTUzM2ZcdTUzNDBcdTUzM2VcdTUzYzNcdTY2ZmNcdTU1NDZcdTU1''@;'; put 'put ''NmFcdTU1NjZcdTU1NDRcdTU1NWVcdTU1NjFcdTU1NDNcdTU1NGFcdTU1MzFcdTU1NTZcdTU1NGZcdTU1NTVcdTU1MmZcdTU1NjRcdTU1MzhcdTU1MmVcdTU1NWNcdTU1MmNcdTU1NjNcdTU1MzNcdTU1NDFcdTU1NTdcdTU3MDhcdTU3MGJcdTU3MDlcdTU3ZGZcdTU4MDVcdTU4MGFcdTU4MDZc''@;'; put 'put ''dTU3ZTBcdTU3ZTRcdTU3ZmFcdTU4MDJcdTU4MzVcdTU3ZjdcdTU3ZjlcdTU5MjBcdTU5NjJcdTVhMzZcdTVhNDFcdTVhNDlcdTVhNjZcdTVhNmFcdTVhNDAiXSxbImIxNDAiLCJcdTVhM2NcdTVhNjJcdTVhNWFcdTVhNDZcdTVhNGFcdTViNzBcdTViYzdcdTViYzVcdTViYzRcdTViYzJcdTVi''@;'; put 'put ''YmZcdTViYzZcdTVjMDlcdTVjMDhcdTVjMDdcdTVjNjBcdTVjNWNcdTVjNWRcdTVkMDdcdTVkMDZcdTVkMGVcdTVkMWJcdTVkMTZcdTVkMjJcdTVkMTFcdTVkMjlcdTVkMTRcdTVkMTlcdTVkMjRcdTVkMjdcdTVkMTdcdTVkZTJcdTVlMzhcdTVlMzZcdTVlMzNcdTVlMzdcdTVlYjdcdTVlYjhc''@;'; put 'put ''dTVlYjZcdTVlYjVcdTVlYmVcdTVmMzVcdTVmMzdcdTVmNTdcdTVmNmNcdTVmNjlcdTVmNmJcdTVmOTdcdTVmOTlcdTVmOWVcdTVmOThcdTVmYTFcdTVmYTBcdTVmOWNcdTYwN2ZcdTYwYTNcdTYwODlcdTYwYTBcdTYwYThcdTYwY2JcdTYwYjRcdTYwZTZcdTYwYmQiXSxbImIxYTEiLCJcdTYw''@;'; put 'put ''YzVcdTYwYmJcdTYwYjVcdTYwZGNcdTYwYmNcdTYwZDhcdTYwZDVcdTYwYzZcdTYwZGZcdTYwYjhcdTYwZGFcdTYwYzdcdTYyMWFcdTYyMWJcdTYyNDhcdTYzYTBcdTYzYTdcdTYzNzJcdTYzOTZcdTYzYTJcdTYzYTVcdTYzNzdcdTYzNjdcdTYzOThcdTYzYWFcdTYzNzFcdTYzYTlcdTYzODlc''@;'; put 'put ''dTYzODNcdTYzOWJcdTYzNmJcdTYzYThcdTYzODRcdTYzODhcdTYzOTlcdTYzYTFcdTYzYWNcdTYzOTJcdTYzOGZcdTYzODBcdTYzN2JcdTYzNjlcdTYzNjhcdTYzN2FcdTY1NWRcdTY1NTZcdTY1NTFcdTY1NTlcdTY1NTdcdTU1NWZcdTY1NGZcdTY1NThcdTY1NTVcdTY1NTRcdTY1OWNcdTY1''@;'; put 'put ''OWJcdTY1YWNcdTY1Y2ZcdTY1Y2JcdTY1Y2NcdTY1Y2VcdTY2NWRcdTY2NWFcdTY2NjRcdTY2NjhcdTY2NjZcdTY2NWVcdTY2ZjlcdTUyZDdcdTY3MWJcdTY4ODFcdTY4YWZcdTY4YTJcdTY4OTNcdTY4YjVcdTY4N2ZcdTY4NzZcdTY4YjFcdTY4YTdcdTY4OTdcdTY4YjBcdTY4ODNcdTY4YzRc''@;'; put 'put ''dTY4YWRcdTY4ODZcdTY4ODVcdTY4OTRcdTY4OWRcdTY4YThcdTY4OWZcdTY4YTFcdTY4ODJcdTZiMzJcdTZiYmEiXSxbImIyNDAiLCJcdTZiZWJcdTZiZWNcdTZjMmJcdTZkOGVcdTZkYmNcdTZkZjNcdTZkZDlcdTZkYjJcdTZkZTFcdTZkY2NcdTZkZTRcdTZkZmJcdTZkZmFcdTZlMDVcdTZk''@;'; put 'put ''YzdcdTZkY2JcdTZkYWZcdTZkZDFcdTZkYWVcdTZkZGVcdTZkZjlcdTZkYjhcdTZkZjdcdTZkZjVcdTZkYzVcdTZkZDJcdTZlMWFcdTZkYjVcdTZkZGFcdTZkZWJcdTZkZDhcdTZkZWFcdTZkZjFcdTZkZWVcdTZkZThcdTZkYzZcdTZkYzRcdTZkYWFcdTZkZWNcdTZkYmZcdTZkZTZcdTcwZjlc''@;'; put 'put ''dTcxMDlcdTcxMGFcdTcwZmRcdTcwZWZcdTcyM2RcdTcyN2RcdTcyODFcdTczMWNcdTczMWJcdTczMTZcdTczMTNcdTczMTlcdTczODdcdTc0MDVcdTc0MGFcdTc0MDNcdTc0MDZcdTczZmVcdTc0MGRcdTc0ZTBcdTc0ZjYiXSxbImIyYTEiLCJcdTc0ZjdcdTc1MWNcdTc1MjJcdTc1NjVcdTc1''@;'; put 'put ''NjZcdTc1NjJcdTc1NzBcdTc1OGZcdTc1ZDRcdTc1ZDVcdTc1YjVcdTc1Y2FcdTc1Y2RcdTc2OGVcdTc2ZDRcdTc2ZDJcdTc2ZGJcdTc3MzdcdTc3M2VcdTc3M2NcdTc3MzZcdTc3MzhcdTc3M2FcdTc4NmJcdTc4NDNcdTc4NGVcdTc5NjVcdTc5NjhcdTc5NmRcdTc5ZmJcdTdhOTJcdTdhOTVc''@;'; put 'put ''dTdiMjBcdTdiMjhcdTdiMWJcdTdiMmNcdTdiMjZcdTdiMTlcdTdiMWVcdTdiMmVcdTdjOTJcdTdjOTdcdTdjOTVcdTdkNDZcdTdkNDNcdTdkNzFcdTdkMmVcdTdkMzlcdTdkM2NcdTdkNDBcdTdkMzBcdTdkMzNcdTdkNDRcdTdkMmZcdTdkNDJcdTdkMzJcdTdkMzFcdTdmM2RcdTdmOWVcdTdm''@;'; put 'put ''OWFcdTdmY2NcdTdmY2VcdTdmZDJcdTgwMWNcdTgwNGFcdTgwNDZcdTgxMmZcdTgxMTZcdTgxMjNcdTgxMmJcdTgxMjlcdTgxMzBcdTgxMjRcdTgyMDJcdTgyMzVcdTgyMzdcdTgyMzZcdTgyMzlcdTgzOGVcdTgzOWVcdTgzOThcdTgzNzhcdTgzYTJcdTgzOTZcdTgzYmRcdTgzYWJcdTgzOTJc''@;'; put 'put ''dTgzOGFcdTgzOTNcdTgzODlcdTgzYTBcdTgzNzdcdTgzN2JcdTgzN2MiXSxbImIzNDAiLCJcdTgzODZcdTgzYTdcdTg2NTVcdTVmNmFcdTg2YzdcdTg2YzBcdTg2YjZcdTg2YzRcdTg2YjVcdTg2YzZcdTg2Y2JcdTg2YjFcdTg2YWZcdTg2YzlcdTg4NTNcdTg4OWVcdTg4ODhcdTg4YWJcdTg4''@;'; put 'put ''OTJcdTg4OTZcdTg4OGRcdTg4OGJcdTg5OTNcdTg5OGZcdThhMmFcdThhMWRcdThhMjNcdThhMjVcdThhMzFcdThhMmRcdThhMWZcdThhMWJcdThhMjJcdThjNDlcdThjNWFcdThjYTlcdThjYWNcdThjYWJcdThjYThcdThjYWFcdThjYTdcdThkNjdcdThkNjZcdThkYmVcdThkYmFcdThlZGJc''@;'; put 'put ''dThlZGZcdTkwMTlcdTkwMGRcdTkwMWFcdTkwMTdcdTkwMjNcdTkwMWZcdTkwMWRcdTkwMTBcdTkwMTVcdTkwMWVcdTkwMjBcdTkwMGZcdTkwMjJcdTkwMTZcdTkwMWJcdTkwMTQiXSxbImIzYTEiLCJcdTkwZThcdTkwZWRcdTkwZmRcdTkxNTdcdTkxY2VcdTkxZjVcdTkxZTZcdTkxZTNcdTkx''@;'; put 'put ''ZTdcdTkxZWRcdTkxZTlcdTk1ODlcdTk2NmFcdTk2NzVcdTk2NzNcdTk2NzhcdTk2NzBcdTk2NzRcdTk2NzZcdTk2NzdcdTk2NmNcdTk2YzBcdTk2ZWFcdTk2ZTlcdTdhZTBcdTdhZGZcdTk4MDJcdTk4MDNcdTliNWFcdTljZTVcdTllNzVcdTllN2ZcdTllYTVcdTllYmJcdTUwYTJcdTUwOGRc''@;'; put 'put ''dTUwODVcdTUwOTlcdTUwOTFcdTUwODBcdTUwOTZcdTUwOThcdTUwOWFcdTY3MDBcdTUxZjFcdTUyNzJcdTUyNzRcdTUyNzVcdTUyNjlcdTUyZGVcdTUyZGRcdTUyZGJcdTUzNWFcdTUzYTVcdTU1N2JcdTU1ODBcdTU1YTdcdTU1N2NcdTU1OGFcdTU1OWRcdTU1OThcdTU1ODJcdTU1OWNcdTU1''@;'; put 'put ''YWFcdTU1OTRcdTU1ODdcdTU1OGJcdTU1ODNcdTU1YjNcdTU1YWVcdTU1OWZcdTU1M2VcdTU1YjJcdTU1OWFcdTU1YmJcdTU1YWNcdTU1YjFcdTU1N2VcdTU1ODlcdTU1YWJcdTU1OTlcdTU3MGRcdTU4MmZcdTU4MmFcdTU4MzRcdTU4MjRcdTU4MzBcdTU4MzFcdTU4MjFcdTU4MWRcdTU4MjBc''@;'; put 'put ''dTU4ZjlcdTU4ZmFcdTU5NjAiXSxbImI0NDAiLCJcdTVhNzdcdTVhOWFcdTVhN2ZcdTVhOTJcdTVhOWJcdTVhYTdcdTViNzNcdTViNzFcdTViZDJcdTViY2NcdTViZDNcdTViZDBcdTVjMGFcdTVjMGJcdTVjMzFcdTVkNGNcdTVkNTBcdTVkMzRcdTVkNDdcdTVkZmRcdTVlNDVcdTVlM2RcdTVl''@;'; put 'put ''NDBcdTVlNDNcdTVlN2VcdTVlY2FcdTVlYzFcdTVlYzJcdTVlYzRcdTVmM2NcdTVmNmRcdTVmYTlcdTVmYWFcdTVmYThcdTYwZDFcdTYwZTFcdTYwYjJcdTYwYjZcdTYwZTBcdTYxMWNcdTYxMjNcdTYwZmFcdTYxMTVcdTYwZjBcdTYwZmJcdTYwZjRcdTYxNjhcdTYwZjFcdTYxMGVcdTYwZjZc''@;'; put 'put ''dTYxMDlcdTYxMDBcdTYxMTJcdTYyMWZcdTYyNDlcdTYzYTNcdTYzOGNcdTYzY2ZcdTYzYzBcdTYzZTlcdTYzYzlcdTYzYzZcdTYzY2QiXSxbImI0YTEiLCJcdTYzZDJcdTYzZTNcdTYzZDBcdTYzZTFcdTYzZDZcdTYzZWRcdTYzZWVcdTYzNzZcdTYzZjRcdTYzZWFcdTYzZGJcdTY0NTJcdTYz''@;'; put 'put ''ZGFcdTYzZjlcdTY1NWVcdTY1NjZcdTY1NjJcdTY1NjNcdTY1OTFcdTY1OTBcdTY1YWZcdTY2NmVcdTY2NzBcdTY2NzRcdTY2NzZcdTY2NmZcdTY2OTFcdTY2N2FcdTY2N2VcdTY2NzdcdTY2ZmVcdTY2ZmZcdTY3MWZcdTY3MWRcdTY4ZmFcdTY4ZDVcdTY4ZTBcdTY4ZDhcdTY4ZDdcdTY5MDVc''@;'; put 'put ''dTY4ZGZcdTY4ZjVcdTY4ZWVcdTY4ZTdcdTY4ZjlcdTY4ZDJcdTY4ZjJcdTY4ZTNcdTY4Y2JcdTY4Y2RcdTY5MGRcdTY5MTJcdTY5MGVcdTY4YzlcdTY4ZGFcdTY5NmVcdTY4ZmJcdTZiM2VcdTZiM2FcdTZiM2RcdTZiOThcdTZiOTZcdTZiYmNcdTZiZWZcdTZjMmVcdTZjMmZcdTZjMmNcdTZl''@;'; put 'put ''MmZcdTZlMzhcdTZlNTRcdTZlMjFcdTZlMzJcdTZlNjdcdTZlNGFcdTZlMjBcdTZlMjVcdTZlMjNcdTZlMWJcdTZlNWJcdTZlNThcdTZlMjRcdTZlNTZcdTZlNmVcdTZlMmRcdTZlMjZcdTZlNmZcdTZlMzRcdTZlNGRcdTZlM2FcdTZlMmNcdTZlNDNcdTZlMWRcdTZlM2VcdTZlY2IiXSxbImI1''@;'; put 'put ''NDAiLCJcdTZlODlcdTZlMTlcdTZlNGVcdTZlNjNcdTZlNDRcdTZlNzJcdTZlNjlcdTZlNWZcdTcxMTlcdTcxMWFcdTcxMjZcdTcxMzBcdTcxMjFcdTcxMzZcdTcxNmVcdTcxMWNcdTcyNGNcdTcyODRcdTcyODBcdTczMzZcdTczMjVcdTczMzRcdTczMjlcdTc0M2FcdTc0MmFcdTc0MzNcdTc0''@;'; put 'put ''MjJcdTc0MjVcdTc0MzVcdTc0MzZcdTc0MzRcdTc0MmZcdTc0MWJcdTc0MjZcdTc0MjhcdTc1MjVcdTc1MjZcdTc1NmJcdTc1NmFcdTc1ZTJcdTc1ZGJcdTc1ZTNcdTc1ZDlcdTc1ZDhcdTc1ZGVcdTc1ZTBcdTc2N2JcdTc2N2NcdTc2OTZcdTc2OTNcdTc2YjRcdTc2ZGNcdTc3NGZcdTc3ZWRc''@;'; put 'put ''dTc4NWRcdTc4NmNcdTc4NmZcdTdhMGRcdTdhMDhcdTdhMGJcdTdhMDVcdTdhMDBcdTdhOTgiXSxbImI1YTEiLCJcdTdhOTdcdTdhOTZcdTdhZTVcdTdhZTNcdTdiNDlcdTdiNTZcdTdiNDZcdTdiNTBcdTdiNTJcdTdiNTRcdTdiNGRcdTdiNGJcdTdiNGZcdTdiNTFcdTdjOWZcdTdjYTVcdTdk''@;'; put 'put ''NWVcdTdkNTBcdTdkNjhcdTdkNTVcdTdkMmJcdTdkNmVcdTdkNzJcdTdkNjFcdTdkNjZcdTdkNjJcdTdkNzBcdTdkNzNcdTU1ODRcdTdmZDRcdTdmZDVcdTgwMGJcdTgwNTJcdTgwODVcdTgxNTVcdTgxNTRcdTgxNGJcdTgxNTFcdTgxNGVcdTgxMzlcdTgxNDZcdTgxM2VcdTgxNGNcdTgxNTNc''@;'; put 'put ''dTgxNzRcdTgyMTJcdTgyMWNcdTgzZTlcdTg0MDNcdTgzZjhcdTg0MGRcdTgzZTBcdTgzYzVcdTg0MGJcdTgzYzFcdTgzZWZcdTgzZjFcdTgzZjRcdTg0NTdcdTg0MGFcdTgzZjBcdTg0MGNcdTgzY2NcdTgzZmRcdTgzZjJcdTgzY2FcdTg0MzhcdTg0MGVcdTg0MDRcdTgzZGNcdTg0MDdcdTgz''@;'; put 'put ''ZDRcdTgzZGZcdTg2NWJcdTg2ZGZcdTg2ZDlcdTg2ZWRcdTg2ZDRcdTg2ZGJcdTg2ZTRcdTg2ZDBcdTg2ZGVcdTg4NTdcdTg4YzFcdTg4YzJcdTg4YjFcdTg5ODNcdTg5OTZcdThhM2JcdThhNjBcdThhNTVcdThhNWVcdThhM2NcdThhNDEiXSxbImI2NDAiLCJcdThhNTRcdThhNWJcdThhNTBc''@;'; put 'put ''dThhNDZcdThhMzRcdThhM2FcdThhMzZcdThhNTZcdThjNjFcdThjODJcdThjYWZcdThjYmNcdThjYjNcdThjYmRcdThjYzFcdThjYmJcdThjYzBcdThjYjRcdThjYjdcdThjYjZcdThjYmZcdThjYjhcdThkOGFcdThkODVcdThkODFcdThkY2VcdThkZGRcdThkY2JcdThkZGFcdThkZDFcdThk''@;'; put 'put ''Y2NcdThkZGJcdThkYzZcdThlZmJcdThlZjhcdThlZmNcdThmOWNcdTkwMmVcdTkwMzVcdTkwMzFcdTkwMzhcdTkwMzJcdTkwMzZcdTkxMDJcdTkwZjVcdTkxMDlcdTkwZmVcdTkxNjNcdTkxNjVcdTkxY2ZcdTkyMTRcdTkyMTVcdTkyMjNcdTkyMDlcdTkyMWVcdTkyMGRcdTkyMTBcdTkyMDdc''@;'; put 'put ''dTkyMTFcdTk1OTRcdTk1OGZcdTk1OGJcdTk1OTEiXSxbImI2YTEiLCJcdTk1OTNcdTk1OTJcdTk1OGVcdTk2OGFcdTk2OGVcdTk2OGJcdTk2N2RcdTk2ODVcdTk2ODZcdTk2OGRcdTk2NzJcdTk2ODRcdTk2YzFcdTk2YzVcdTk2YzRcdTk2YzZcdTk2YzdcdTk2ZWZcdTk2ZjJcdTk3Y2NcdTk4''@;'; put 'put ''MDVcdTk4MDZcdTk4MDhcdTk4ZTdcdTk4ZWFcdTk4ZWZcdTk4ZTlcdTk4ZjJcdTk4ZWRcdTk5YWVcdTk5YWRcdTllYzNcdTllY2RcdTllZDFcdTRlODJcdTUwYWRcdTUwYjVcdTUwYjJcdTUwYjNcdTUwYzVcdTUwYmVcdTUwYWNcdTUwYjdcdTUwYmJcdTUwYWZcdTUwYzdcdTUyN2ZcdTUyNzdc''@;'; put 'put ''dTUyN2RcdTUyZGZcdTUyZTZcdTUyZTRcdTUyZTJcdTUyZTNcdTUzMmZcdTU1ZGZcdTU1ZThcdTU1ZDNcdTU1ZTZcdTU1Y2VcdTU1ZGNcdTU1YzdcdTU1ZDFcdTU1ZTNcdTU1ZTRcdTU1ZWZcdTU1ZGFcdTU1ZTFcdTU1YzVcdTU1YzZcdTU1ZTVcdTU1YzlcdTU3MTJcdTU3MTNcdTU4NWVcdTU4''@;'; put 'put ''NTFcdTU4NThcdTU4NTdcdTU4NWFcdTU4NTRcdTU4NmJcdTU4NGNcdTU4NmRcdTU4NGFcdTU4NjJcdTU4NTJcdTU4NGJcdTU5NjdcdTVhYzFcdTVhYzlcdTVhY2NcdTVhYmVcdTVhYmRcdTVhYmMiXSxbImI3NDAiLCJcdTVhYjNcdTVhYzJcdTVhYjJcdTVkNjlcdTVkNmZcdTVlNGNcdTVlNzlc''@;'; put 'put ''dTVlYzlcdTVlYzhcdTVmMTJcdTVmNTlcdTVmYWNcdTVmYWVcdTYxMWFcdTYxMGZcdTYxNDhcdTYxMWZcdTYwZjNcdTYxMWJcdTYwZjlcdTYxMDFcdTYxMDhcdTYxNGVcdTYxNGNcdTYxNDRcdTYxNGRcdTYxM2VcdTYxMzRcdTYxMjdcdTYxMGRcdTYxMDZcdTYxMzdcdTYyMjFcdTYyMjJcdTY0''@;'; put 'put ''MTNcdTY0M2VcdTY0MWVcdTY0MmFcdTY0MmRcdTY0M2RcdTY0MmNcdTY0MGZcdTY0MWNcdTY0MTRcdTY0MGRcdTY0MzZcdTY0MTZcdTY0MTdcdTY0MDZcdTY1NmNcdTY1OWZcdTY1YjBcdTY2OTdcdTY2ODlcdTY2ODdcdTY2ODhcdTY2OTZcdTY2ODRcdTY2OThcdTY2OGRcdTY3MDNcdTY5OTRc''@;'; put 'put ''dTY5NmQiXSxbImI3YTEiLCJcdTY5NWFcdTY5NzdcdTY5NjBcdTY5NTRcdTY5NzVcdTY5MzBcdTY5ODJcdTY5NGFcdTY5NjhcdTY5NmJcdTY5NWVcdTY5NTNcdTY5NzlcdTY5ODZcdTY5NWRcdTY5NjNcdTY5NWJcdTZiNDdcdTZiNzJcdTZiYzBcdTZiYmZcdTZiZDNcdTZiZmRcdTZlYTJcdTZl''@;'; put 'put ''YWZcdTZlZDNcdTZlYjZcdTZlYzJcdTZlOTBcdTZlOWRcdTZlYzdcdTZlYzVcdTZlYTVcdTZlOThcdTZlYmNcdTZlYmFcdTZlYWJcdTZlZDFcdTZlOTZcdTZlOWNcdTZlYzRcdTZlZDRcdTZlYWFcdTZlYTdcdTZlYjRcdTcxNGVcdTcxNTlcdTcxNjlcdTcxNjRcdTcxNDlcdTcxNjdcdTcxNWNc''@;'; put 'put ''dTcxNmNcdTcxNjZcdTcxNGNcdTcxNjVcdTcxNWVcdTcxNDZcdTcxNjhcdTcxNTZcdTcyM2FcdTcyNTJcdTczMzdcdTczNDVcdTczM2ZcdTczM2VcdTc0NmZcdTc0NWFcdTc0NTVcdTc0NWZcdTc0NWVcdTc0NDFcdTc0M2ZcdTc0NTlcdTc0NWJcdTc0NWNcdTc1NzZcdTc1NzhcdTc2MDBcdTc1''@;'; put 'put ''ZjBcdTc2MDFcdTc1ZjJcdTc1ZjFcdTc1ZmFcdTc1ZmZcdTc1ZjRcdTc1ZjNcdTc2ZGVcdTc2ZGZcdTc3NWJcdTc3NmJcdTc3NjZcdTc3NWVcdTc3NjMiXSxbImI4NDAiLCJcdTc3NzlcdTc3NmFcdTc3NmNcdTc3NWNcdTc3NjVcdTc3NjhcdTc3NjJcdTc3ZWVcdTc4OGVcdTc4YjBcdTc4OTdc''@;'; put 'put ''dTc4OThcdTc4OGNcdTc4ODlcdTc4N2NcdTc4OTFcdTc4OTNcdTc4N2ZcdTc5N2FcdTc5N2ZcdTc5ODFcdTg0MmNcdTc5YmRcdTdhMWNcdTdhMWFcdTdhMjBcdTdhMTRcdTdhMWZcdTdhMWVcdTdhOWZcdTdhYTBcdTdiNzdcdTdiYzBcdTdiNjBcdTdiNmVcdTdiNjdcdTdjYjFcdTdjYjNcdTdj''@;'; put 'put ''YjVcdTdkOTNcdTdkNzlcdTdkOTFcdTdkODFcdTdkOGZcdTdkNWJcdTdmNmVcdTdmNjlcdTdmNmFcdTdmNzJcdTdmYTlcdTdmYThcdTdmYTRcdTgwNTZcdTgwNThcdTgwODZcdTgwODRcdTgxNzFcdTgxNzBcdTgxNzhcdTgxNjVcdTgxNmVcdTgxNzNcdTgxNmIiXSxbImI4YTEiLCJcdTgxNzlc''@;'; put 'put ''dTgxN2FcdTgxNjZcdTgyMDVcdTgyNDdcdTg0ODJcdTg0NzdcdTg0M2RcdTg0MzFcdTg0NzVcdTg0NjZcdTg0NmJcdTg0NDlcdTg0NmNcdTg0NWJcdTg0M2NcdTg0MzVcdTg0NjFcdTg0NjNcdTg0NjlcdTg0NmRcdTg0NDZcdTg2NWVcdTg2NWNcdTg2NWZcdTg2ZjlcdTg3MTNcdTg3MDhcdTg3''@;'; put 'put ''MDdcdTg3MDBcdTg2ZmVcdTg2ZmJcdTg3MDJcdTg3MDNcdTg3MDZcdTg3MGFcdTg4NTlcdTg4ZGZcdTg4ZDRcdTg4ZDlcdTg4ZGNcdTg4ZDhcdTg4ZGRcdTg4ZTFcdTg4Y2FcdTg4ZDVcdTg4ZDJcdTg5OWNcdTg5ZTNcdThhNmJcdThhNzJcdThhNzNcdThhNjZcdThhNjlcdThhNzBcdThhODdc''@;'; put 'put ''dThhN2NcdThhNjNcdThhYTBcdThhNzFcdThhODVcdThhNmRcdThhNjJcdThhNmVcdThhNmNcdThhNzlcdThhN2JcdThhM2VcdThhNjhcdThjNjJcdThjOGFcdThjODlcdThjY2FcdThjYzdcdThjYzhcdThjYzRcdThjYjJcdThjYzNcdThjYzJcdThjYzVcdThkZTFcdThkZGZcdThkZThcdThk''@;'; put 'put ''ZWZcdThkZjNcdThkZmFcdThkZWFcdThkZTRcdThkZTZcdThlYjJcdThmMDNcdThmMDlcdThlZmVcdThmMGEiXSxbImI5NDAiLCJcdThmOWZcdThmYjJcdTkwNGJcdTkwNGFcdTkwNTNcdTkwNDJcdTkwNTRcdTkwM2NcdTkwNTVcdTkwNTBcdTkwNDdcdTkwNGZcdTkwNGVcdTkwNGRcdTkwNTFc''@;'; put 'put ''dTkwM2VcdTkwNDFcdTkxMTJcdTkxMTdcdTkxNmNcdTkxNmFcdTkxNjlcdTkxYzlcdTkyMzdcdTkyNTdcdTkyMzhcdTkyM2RcdTkyNDBcdTkyM2VcdTkyNWJcdTkyNGJcdTkyNjRcdTkyNTFcdTkyMzRcdTkyNDlcdTkyNGRcdTkyNDVcdTkyMzlcdTkyM2ZcdTkyNWFcdTk1OThcdTk2OThcdTk2''@;'; put 'put ''OTRcdTk2OTVcdTk2Y2RcdTk2Y2JcdTk2YzlcdTk2Y2FcdTk2ZjdcdTk2ZmJcdTk2ZjlcdTk2ZjZcdTk3NTZcdTk3NzRcdTk3NzZcdTk4MTBcdTk4MTFcdTk4MTNcdTk4MGFcdTk4MTJcdTk4MGNcdTk4ZmNcdTk4ZjQiXSxbImI5YTEiLCJcdTk4ZmRcdTk4ZmVcdTk5YjNcdTk5YjFcdTk5YjRc''@;'; put 'put ''dTlhZTFcdTljZTlcdTllODJcdTlmMGVcdTlmMTNcdTlmMjBcdTUwZTdcdTUwZWVcdTUwZTVcdTUwZDZcdTUwZWRcdTUwZGFcdTUwZDVcdTUwY2ZcdTUwZDFcdTUwZjFcdTUwY2VcdTUwZTlcdTUxNjJcdTUxZjNcdTUyODNcdTUyODJcdTUzMzFcdTUzYWRcdTU1ZmVcdTU2MDBcdTU2MWJcdTU2''@;'; put 'put ''MTdcdTU1ZmRcdTU2MTRcdTU2MDZcdTU2MDlcdTU2MGRcdTU2MGVcdTU1ZjdcdTU2MTZcdTU2MWZcdTU2MDhcdTU2MTBcdTU1ZjZcdTU3MThcdTU3MTZcdTU4NzVcdTU4N2VcdTU4ODNcdTU4OTNcdTU4OGFcdTU4NzlcdTU4ODVcdTU4N2RcdTU4ZmRcdTU5MjVcdTU5MjJcdTU5MjRcdTU5NmFc''@;'; put 'put ''dTU5NjlcdTVhZTFcdTVhZTZcdTVhZTlcdTVhZDdcdTVhZDZcdTVhZDhcdTVhZTNcdTViNzVcdTViZGVcdTViZTdcdTViZTFcdTViZTVcdTViZTZcdTViZThcdTViZTJcdTViZTRcdTViZGZcdTVjMGRcdTVjNjJcdTVkODRcdTVkODdcdTVlNWJcdTVlNjNcdTVlNTVcdTVlNTdcdTVlNTRcdTVl''@;'; put 'put ''ZDNcdTVlZDZcdTVmMGFcdTVmNDZcdTVmNzBcdTVmYjlcdTYxNDciXSxbImJhNDAiLCJcdTYxM2ZcdTYxNGJcdTYxNzdcdTYxNjJcdTYxNjNcdTYxNWZcdTYxNWFcdTYxNThcdTYxNzVcdTYyMmFcdTY0ODdcdTY0NThcdTY0NTRcdTY0YTRcdTY0NzhcdTY0NWZcdTY0N2FcdTY0NTFcdTY0Njdc''@;'; put 'put ''dTY0MzRcdTY0NmRcdTY0N2JcdTY1NzJcdTY1YTFcdTY1ZDdcdTY1ZDZcdTY2YTJcdTY2YThcdTY2OWRcdTY5OWNcdTY5YThcdTY5OTVcdTY5YzFcdTY5YWVcdTY5ZDNcdTY5Y2JcdTY5OWJcdTY5YjdcdTY5YmJcdTY5YWJcdTY5YjRcdTY5ZDBcdTY5Y2RcdTY5YWRcdTY5Y2NcdTY5YTZcdTY5''@;'; put 'put ''YzNcdTY5YTNcdTZiNDlcdTZiNGNcdTZjMzNcdTZmMzNcdTZmMTRcdTZlZmVcdTZmMTNcdTZlZjRcdTZmMjlcdTZmM2VcdTZmMjBcdTZmMmNcdTZmMGZcdTZmMDJcdTZmMjIiXSxbImJhYTEiLCJcdTZlZmZcdTZlZWZcdTZmMDZcdTZmMzFcdTZmMzhcdTZmMzJcdTZmMjNcdTZmMTVcdTZmMmJc''@;'; put 'put ''dTZmMmZcdTZmODhcdTZmMmFcdTZlZWNcdTZmMDFcdTZlZjJcdTZlY2NcdTZlZjdcdTcxOTRcdTcxOTlcdTcxN2RcdTcxOGFcdTcxODRcdTcxOTJcdTcyM2VcdTcyOTJcdTcyOTZcdTczNDRcdTczNTBcdTc0NjRcdTc0NjNcdTc0NmFcdTc0NzBcdTc0NmRcdTc1MDRcdTc1OTFcdTc2MjdcdTc2''@;'; put 'put ''MGRcdTc2MGJcdTc2MDlcdTc2MTNcdTc2ZTFcdTc2ZTNcdTc3ODRcdTc3N2RcdTc3N2ZcdTc3NjFcdTc4YzFcdTc4OWZcdTc4YTdcdTc4YjNcdTc4YTlcdTc4YTNcdTc5OGVcdTc5OGZcdTc5OGRcdTdhMmVcdTdhMzFcdTdhYWFcdTdhYTlcdTdhZWRcdTdhZWZcdTdiYTFcdTdiOTVcdTdiOGJc''@;'; put 'put ''dTdiNzVcdTdiOTdcdTdiOWRcdTdiOTRcdTdiOGZcdTdiYjhcdTdiODdcdTdiODRcdTdjYjlcdTdjYmRcdTdjYmVcdTdkYmJcdTdkYjBcdTdkOWNcdTdkYmRcdTdkYmVcdTdkYTBcdTdkY2FcdTdkYjRcdTdkYjJcdTdkYjFcdTdkYmFcdTdkYTJcdTdkYmZcdTdkYjVcdTdkYjhcdTdkYWRcdTdk''@;'; put 'put ''ZDJcdTdkYzdcdTdkYWMiXSxbImJiNDAiLCJcdTdmNzBcdTdmZTBcdTdmZTFcdTdmZGZcdTgwNWVcdTgwNWFcdTgwODdcdTgxNTBcdTgxODBcdTgxOGZcdTgxODhcdTgxOGFcdTgxN2ZcdTgxODJcdTgxZTdcdTgxZmFcdTgyMDdcdTgyMTRcdTgyMWVcdTgyNGJcdTg0YzlcdTg0YmZcdTg0YzZc''@;'; put 'put ''dTg0YzRcdTg0OTlcdTg0OWVcdTg0YjJcdTg0OWNcdTg0Y2JcdTg0YjhcdTg0YzBcdTg0ZDNcdTg0OTBcdTg0YmNcdTg0ZDFcdTg0Y2FcdTg3M2ZcdTg3MWNcdTg3M2JcdTg3MjJcdTg3MjVcdTg3MzRcdTg3MThcdTg3NTVcdTg3MzdcdTg3MjlcdTg4ZjNcdTg5MDJcdTg4ZjRcdTg4ZjlcdTg4''@;'; put 'put ''ZjhcdTg4ZmRcdTg4ZThcdTg5MWFcdTg4ZWZcdThhYTZcdThhOGNcdThhOWVcdThhYTNcdThhOGRcdThhYTFcdThhOTNcdThhYTQiXSxbImJiYTEiLCJcdThhYWFcdThhYTVcdThhYThcdThhOThcdThhOTFcdThhOWFcdThhYTdcdThjNmFcdThjOGRcdThjOGNcdThjZDNcdThjZDFcdThjZDJc''@;'; put 'put ''dThkNmJcdThkOTlcdThkOTVcdThkZmNcdThmMTRcdThmMTJcdThmMTVcdThmMTNcdThmYTNcdTkwNjBcdTkwNThcdTkwNWNcdTkwNjNcdTkwNTlcdTkwNWVcdTkwNjJcdTkwNWRcdTkwNWJcdTkxMTlcdTkxMThcdTkxMWVcdTkxNzVcdTkxNzhcdTkxNzdcdTkxNzRcdTkyNzhcdTkyODBcdTky''@;'; put 'put ''ODVcdTkyOThcdTkyOTZcdTkyN2JcdTkyOTNcdTkyOWNcdTkyYThcdTkyN2NcdTkyOTFcdTk1YTFcdTk1YThcdTk1YTlcdTk1YTNcdTk1YTVcdTk1YTRcdTk2OTlcdTk2OWNcdTk2OWJcdTk2Y2NcdTk2ZDJcdTk3MDBcdTk3N2NcdTk3ODVcdTk3ZjZcdTk4MTdcdTk4MThcdTk4YWZcdTk4YjFc''@;'; put 'put ''dTk5MDNcdTk5MDVcdTk5MGNcdTk5MDlcdTk5YzFcdTlhYWZcdTlhYjBcdTlhZTZcdTliNDFcdTliNDJcdTljZjRcdTljZjZcdTljZjNcdTllYmNcdTlmM2JcdTlmNGFcdTUxMDRcdTUxMDBcdTUwZmJcdTUwZjVcdTUwZjlcdTUxMDJcdTUxMDhcdTUxMDlcdTUxMDVcdTUxZGMiXSxbImJjNDAi''@;'; put 'put ''LCJcdTUyODdcdTUyODhcdTUyODlcdTUyOGRcdTUyOGFcdTUyZjBcdTUzYjJcdTU2MmVcdTU2M2JcdTU2MzlcdTU2MzJcdTU2M2ZcdTU2MzRcdTU2MjlcdTU2NTNcdTU2NGVcdTU2NTdcdTU2NzRcdTU2MzZcdTU2MmZcdTU2MzBcdTU4ODBcdTU4OWZcdTU4OWVcdTU4YjNcdTU4OWNcdTU4YWVc''@;'; put 'put ''dTU4YTlcdTU4YTZcdTU5NmRcdTViMDlcdTVhZmJcdTViMGJcdTVhZjVcdTViMGNcdTViMDhcdTViZWVcdTViZWNcdTViZTlcdTViZWJcdTVjNjRcdTVjNjVcdTVkOWRcdTVkOTRcdTVlNjJcdTVlNWZcdTVlNjFcdTVlZTJcdTVlZGFcdTVlZGZcdTVlZGRcdTVlZTNcdTVlZTBcdTVmNDhcdTVm''@;'; put 'put ''NzFcdTVmYjdcdTVmYjVcdTYxNzZcdTYxNjdcdTYxNmVcdTYxNWRcdTYxNTVcdTYxODIiXSxbImJjYTEiLCJcdTYxN2NcdTYxNzBcdTYxNmJcdTYxN2VcdTYxYTdcdTYxOTBcdTYxYWJcdTYxOGVcdTYxYWNcdTYxOWFcdTYxYTRcdTYxOTRcdTYxYWVcdTYyMmVcdTY0NjlcdTY0NmZcdTY0Nzlc''@;'; put 'put ''dTY0OWVcdTY0YjJcdTY0ODhcdTY0OTBcdTY0YjBcdTY0YTVcdTY0OTNcdTY0OTVcdTY0YTlcdTY0OTJcdTY0YWVcdTY0YWRcdTY0YWJcdTY0OWFcdTY0YWNcdTY0OTlcdTY0YTJcdTY0YjNcdTY1NzVcdTY1NzdcdTY1NzhcdTY2YWVcdTY2YWJcdTY2YjRcdTY2YjFcdTZhMjNcdTZhMWZcdTY5''@;'; put 'put ''ZThcdTZhMDFcdTZhMWVcdTZhMTlcdTY5ZmRcdTZhMjFcdTZhMTNcdTZhMGFcdTY5ZjNcdTZhMDJcdTZhMDVcdTY5ZWRcdTZhMTFcdTZiNTBcdTZiNGVcdTZiYTRcdTZiYzVcdTZiYzZcdTZmM2ZcdTZmN2NcdTZmODRcdTZmNTFcdTZmNjZcdTZmNTRcdTZmODZcdTZmNmRcdTZmNWJcdTZmNzhc''@;'; put 'put ''dTZmNmVcdTZmOGVcdTZmN2FcdTZmNzBcdTZmNjRcdTZmOTdcdTZmNThcdTZlZDVcdTZmNmZcdTZmNjBcdTZmNWZcdTcxOWZcdTcxYWNcdTcxYjFcdTcxYThcdTcyNTZcdTcyOWJcdTczNGVcdTczNTdcdTc0NjlcdTc0OGJcdTc0ODMiXSxbImJkNDAiLCJcdTc0N2VcdTc0ODBcdTc1N2ZcdTc2''@;'; put 'put ''MjBcdTc2MjlcdTc2MWZcdTc2MjRcdTc2MjZcdTc2MjFcdTc2MjJcdTc2OWFcdTc2YmFcdTc2ZTRcdTc3OGVcdTc3ODdcdTc3OGNcdTc3OTFcdTc3OGJcdTc4Y2JcdTc4YzVcdTc4YmFcdTc4Y2FcdTc4YmVcdTc4ZDVcdTc4YmNcdTc4ZDBcdTdhM2ZcdTdhM2NcdTdhNDBcdTdhM2RcdTdhMzdc''@;'; put 'put ''dTdhM2JcdTdhYWZcdTdhYWVcdTdiYWRcdTdiYjFcdTdiYzRcdTdiYjRcdTdiYzZcdTdiYzdcdTdiYzFcdTdiYTBcdTdiY2NcdTdjY2FcdTdkZTBcdTdkZjRcdTdkZWZcdTdkZmJcdTdkZDhcdTdkZWNcdTdkZGRcdTdkZThcdTdkZTNcdTdkZGFcdTdkZGVcdTdkZTlcdTdkOWVcdTdkZDlcdTdk''@;'; put 'put ''ZjJcdTdkZjlcdTdmNzVcdTdmNzdcdTdmYWYiXSxbImJkYTEiLCJcdTdmZTlcdTgwMjZcdTgxOWJcdTgxOWNcdTgxOWRcdTgxYTBcdTgxOWFcdTgxOThcdTg1MTdcdTg1M2RcdTg1MWFcdTg0ZWVcdTg1MmNcdTg1MmRcdTg1MTNcdTg1MTFcdTg1MjNcdTg1MjFcdTg1MTRcdTg0ZWNcdTg1MjVc''@;'; put 'put ''dTg0ZmZcdTg1MDZcdTg3ODJcdTg3NzRcdTg3NzZcdTg3NjBcdTg3NjZcdTg3NzhcdTg3NjhcdTg3NTlcdTg3NTdcdTg3NGNcdTg3NTNcdTg4NWJcdTg4NWRcdTg5MTBcdTg5MDdcdTg5MTJcdTg5MTNcdTg5MTVcdTg5MGFcdThhYmNcdThhZDJcdThhYzdcdThhYzRcdThhOTVcdThhY2JcdThh''@;'; put 'put ''ZjhcdThhYjJcdThhYzlcdThhYzJcdThhYmZcdThhYjBcdThhZDZcdThhY2RcdThhYjZcdThhYjlcdThhZGJcdThjNGNcdThjNGVcdThjNmNcdThjZTBcdThjZGVcdThjZTZcdThjZTRcdThjZWNcdThjZWRcdThjZTJcdThjZTNcdThjZGNcdThjZWFcdThjZTFcdThkNmRcdThkOWZcdThkYTNc''@;'; put 'put ''dThlMmJcdThlMTBcdThlMWRcdThlMjJcdThlMGZcdThlMjlcdThlMWZcdThlMjFcdThlMWVcdThlYmFcdThmMWRcdThmMWJcdThmMWZcdThmMjlcdThmMjZcdThmMmFcdThmMWNcdThmMWUiXSxbImJlNDAiLCJcdThmMjVcdTkwNjlcdTkwNmVcdTkwNjhcdTkwNmRcdTkwNzdcdTkxMzBcdTkx''@;'; put 'put ''MmRcdTkxMjdcdTkxMzFcdTkxODdcdTkxODlcdTkxOGJcdTkxODNcdTkyYzVcdTkyYmJcdTkyYjdcdTkyZWFcdTkyYWNcdTkyZTRcdTkyYzFcdTkyYjNcdTkyYmNcdTkyZDJcdTkyYzdcdTkyZjBcdTkyYjJcdTk1YWRcdTk1YjFcdTk3MDRcdTk3MDZcdTk3MDdcdTk3MDlcdTk3NjBcdTk3OGRc''@;'; put 'put ''dTk3OGJcdTk3OGZcdTk4MjFcdTk4MmJcdTk4MWNcdTk4YjNcdTk5MGFcdTk5MTNcdTk5MTJcdTk5MThcdTk5ZGRcdTk5ZDBcdTk5ZGZcdTk5ZGJcdTk5ZDFcdTk5ZDVcdTk5ZDJcdTk5ZDlcdTlhYjdcdTlhZWVcdTlhZWZcdTliMjdcdTliNDVcdTliNDRcdTliNzdcdTliNmZcdTlkMDZcdTlk''@;'; put 'put ''MDkiXSxbImJlYTEiLCJcdTlkMDNcdTllYTlcdTllYmVcdTllY2VcdTU4YThcdTlmNTJcdTUxMTJcdTUxMThcdTUxMTRcdTUxMTBcdTUxMTVcdTUxODBcdTUxYWFcdTUxZGRcdTUyOTFcdTUyOTNcdTUyZjNcdTU2NTlcdTU2NmJcdTU2NzlcdTU2NjlcdTU2NjRcdTU2NzhcdTU2NmFcdTU2Njhc''@;'; put 'put ''dTU2NjVcdTU2NzFcdTU2NmZcdTU2NmNcdTU2NjJcdTU2NzZcdTU4YzFcdTU4YmVcdTU4YzdcdTU4YzVcdTU5NmVcdTViMWRcdTViMzRcdTViNzhcdTViZjBcdTVjMGVcdTVmNGFcdTYxYjJcdTYxOTFcdTYxYTlcdTYxOGFcdTYxY2RcdTYxYjZcdTYxYmVcdTYxY2FcdTYxYzhcdTYyMzBcdTY0''@;'; put 'put ''YzVcdTY0YzFcdTY0Y2JcdTY0YmJcdTY0YmNcdTY0ZGFcdTY0YzRcdTY0YzdcdTY0YzJcdTY0Y2RcdTY0YmZcdTY0ZDJcdTY0ZDRcdTY0YmVcdTY1NzRcdTY2YzZcdTY2YzlcdTY2YjlcdTY2YzRcdTY2YzdcdTY2YjhcdTZhM2RcdTZhMzhcdTZhM2FcdTZhNTlcdTZhNmJcdTZhNThcdTZhMzlc''@;'; put 'put ''dTZhNDRcdTZhNjJcdTZhNjFcdTZhNGJcdTZhNDdcdTZhMzVcdTZhNWZcdTZhNDhcdTZiNTlcdTZiNzdcdTZjMDVcdTZmYzJcdTZmYjFcdTZmYTEiXSxbImJmNDAiLCJcdTZmYzNcdTZmYTRcdTZmYzFcdTZmYTdcdTZmYjNcdTZmYzBcdTZmYjlcdTZmYjZcdTZmYTZcdTZmYTBcdTZmYjRcdTcx''@;'; put 'put ''YmVcdTcxYzlcdTcxZDBcdTcxZDJcdTcxYzhcdTcxZDVcdTcxYjlcdTcxY2VcdTcxZDlcdTcxZGNcdTcxYzNcdTcxYzRcdTczNjhcdTc0OWNcdTc0YTNcdTc0OThcdTc0OWZcdTc0OWVcdTc0ZTJcdTc1MGNcdTc1MGRcdTc2MzRcdTc2MzhcdTc2M2FcdTc2ZTdcdTc2ZTVcdTc3YTBcdTc3OWVc''@;'; put 'put ''dTc3OWZcdTc3YTVcdTc4ZThcdTc4ZGFcdTc4ZWNcdTc4ZTdcdTc5YTZcdTdhNGRcdTdhNGVcdTdhNDZcdTdhNGNcdTdhNGJcdTdhYmFcdTdiZDlcdTdjMTFcdTdiYzlcdTdiZTRcdTdiZGJcdTdiZTFcdTdiZTlcdTdiZTZcdTdjZDVcdTdjZDZcdTdlMGEiXSxbImJmYTEiLCJcdTdlMTFcdTdl''@;'; put 'put ''MDhcdTdlMWJcdTdlMjNcdTdlMWVcdTdlMWRcdTdlMDlcdTdlMTBcdTdmNzlcdTdmYjJcdTdmZjBcdTdmZjFcdTdmZWVcdTgwMjhcdTgxYjNcdTgxYTlcdTgxYThcdTgxZmJcdTgyMDhcdTgyNThcdTgyNTlcdTg1NGFcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjlcdTg1NDNcdTg1NDlcdTg1NmRc''@;'; put 'put ''dTg1NmFcdTg1NWVcdTg3ODNcdTg3OWZcdTg3OWVcdTg3YTJcdTg3OGRcdTg4NjFcdTg5MmFcdTg5MzJcdTg5MjVcdTg5MmJcdTg5MjFcdTg5YWFcdTg5YTZcdThhZTZcdThhZmFcdThhZWJcdThhZjFcdThiMDBcdThhZGNcdThhZTdcdThhZWVcdThhZmVcdThiMDFcdThiMDJcdThhZjdcdThh''@;'; put 'put ''ZWRcdThhZjNcdThhZjZcdThhZmNcdThjNmJcdThjNmRcdThjOTNcdThjZjRcdThlNDRcdThlMzFcdThlMzRcdThlNDJcdThlMzlcdThlMzVcdThmM2JcdThmMmZcdThmMzhcdThmMzNcdThmYThcdThmYTZcdTkwNzVcdTkwNzRcdTkwNzhcdTkwNzJcdTkwN2NcdTkwN2FcdTkxMzRcdTkxOTJc''@;'; put 'put ''dTkzMjBcdTkzMzZcdTkyZjhcdTkzMzNcdTkzMmZcdTkzMjJcdTkyZmNcdTkzMmJcdTkzMDRcdTkzMWEiXSxbImMwNDAiLCJcdTkzMTBcdTkzMjZcdTkzMjFcdTkzMTVcdTkzMmVcdTkzMTlcdTk1YmJcdTk2YTdcdTk2YThcdTk2YWFcdTk2ZDVcdTk3MGVcdTk3MTFcdTk3MTZcdTk3MGRcdTk3''@;'; put 'put ''MTNcdTk3MGZcdTk3NWJcdTk3NWNcdTk3NjZcdTk3OThcdTk4MzBcdTk4MzhcdTk4M2JcdTk4MzdcdTk4MmRcdTk4MzlcdTk4MjRcdTk5MTBcdTk5MjhcdTk5MWVcdTk5MWJcdTk5MjFcdTk5MWFcdTk5ZWRcdTk5ZTJcdTk5ZjFcdTlhYjhcdTlhYmNcdTlhZmJcdTlhZWRcdTliMjhcdTliOTFc''@;'; put 'put ''dTlkMTVcdTlkMjNcdTlkMjZcdTlkMjhcdTlkMTJcdTlkMWJcdTllZDhcdTllZDRcdTlmOGRcdTlmOWNcdTUxMmFcdTUxMWZcdTUxMjFcdTUxMzJcdTUyZjVcdTU2OGVcdTU2ODBcdTU2OTBcdTU2ODVcdTU2ODciXSxbImMwYTEiLCJcdTU2OGZcdTU4ZDVcdTU4ZDNcdTU4ZDFcdTU4Y2VcdTVi''@;'; put 'put ''MzBcdTViMmFcdTViMjRcdTViN2FcdTVjMzdcdTVjNjhcdTVkYmNcdTVkYmFcdTVkYmRcdTVkYjhcdTVlNmJcdTVmNGNcdTVmYmRcdTYxYzlcdTYxYzJcdTYxYzdcdTYxZTZcdTYxY2JcdTYyMzJcdTYyMzRcdTY0Y2VcdTY0Y2FcdTY0ZDhcdTY0ZTBcdTY0ZjBcdTY0ZTZcdTY0ZWNcdTY0ZjFc''@;'; put 'put ''dTY0ZTJcdTY0ZWRcdTY1ODJcdTY1ODNcdTY2ZDlcdTY2ZDZcdTZhODBcdTZhOTRcdTZhODRcdTZhYTJcdTZhOWNcdTZhZGJcdTZhYTNcdTZhN2VcdTZhOTdcdTZhOTBcdTZhYTBcdTZiNWNcdTZiYWVcdTZiZGFcdTZjMDhcdTZmZDhcdTZmZjFcdTZmZGZcdTZmZTBcdTZmZGJcdTZmZTRcdTZm''@;'; put 'put ''ZWJcdTZmZWZcdTZmODBcdTZmZWNcdTZmZTFcdTZmZTlcdTZmZDVcdTZmZWVcdTZmZjBcdTcxZTdcdTcxZGZcdTcxZWVcdTcxZTZcdTcxZTVcdTcxZWRcdTcxZWNcdTcxZjRcdTcxZTBcdTcyMzVcdTcyNDZcdTczNzBcdTczNzJcdTc0YTlcdTc0YjBcdTc0YTZcdTc0YThcdTc2NDZcdTc2NDJc''@;'; put 'put ''dTc2NGNcdTc2ZWFcdTc3YjNcdTc3YWFcdTc3YjBcdTc3YWMiXSxbImMxNDAiLCJcdTc3YTdcdTc3YWRcdTc3ZWZcdTc4ZjdcdTc4ZmFcdTc4ZjRcdTc4ZWZcdTc5MDFcdTc5YTdcdTc5YWFcdTdhNTdcdTdhYmZcdTdjMDdcdTdjMGRcdTdiZmVcdTdiZjdcdTdjMGNcdTdiZTBcdTdjZTBcdTdj''@;'; put 'put ''ZGNcdTdjZGVcdTdjZTJcdTdjZGZcdTdjZDlcdTdjZGRcdTdlMmVcdTdlM2VcdTdlNDZcdTdlMzdcdTdlMzJcdTdlNDNcdTdlMmJcdTdlM2RcdTdlMzFcdTdlNDVcdTdlNDFcdTdlMzRcdTdlMzlcdTdlNDhcdTdlMzVcdTdlM2ZcdTdlMmZcdTdmNDRcdTdmZjNcdTdmZmNcdTgwNzFcdTgwNzJc''@;'; put 'put ''dTgwNzBcdTgwNmZcdTgwNzNcdTgxYzZcdTgxYzNcdTgxYmFcdTgxYzJcdTgxYzBcdTgxYmZcdTgxYmRcdTgxYzlcdTgxYmVcdTgxZThcdTgyMDlcdTgyNzFcdTg1YWEiXSxbImMxYTEiLCJcdTg1ODRcdTg1N2VcdTg1OWNcdTg1OTFcdTg1OTRcdTg1YWZcdTg1OWJcdTg1ODdcdTg1YThcdTg1''@;'; put 'put ''OGFcdTg2NjdcdTg3YzBcdTg3ZDFcdTg3YjNcdTg3ZDJcdTg3YzZcdTg3YWJcdTg3YmJcdTg3YmFcdTg3YzhcdTg3Y2JcdTg5M2JcdTg5MzZcdTg5NDRcdTg5MzhcdTg5M2RcdTg5YWNcdThiMGVcdThiMTdcdThiMTlcdThiMWJcdThiMGFcdThiMjBcdThiMWRcdThiMDRcdThiMTBcdThjNDFc''@;'; put 'put ''dThjM2ZcdThjNzNcdThjZmFcdThjZmRcdThjZmNcdThjZjhcdThjZmJcdThkYThcdThlNDlcdThlNGJcdThlNDhcdThlNGFcdThmNDRcdThmM2VcdThmNDJcdThmNDVcdThmM2ZcdTkwN2ZcdTkwN2RcdTkwODRcdTkwODFcdTkwODJcdTkwODBcdTkxMzlcdTkxYTNcdTkxOWVcdTkxOWNcdTkz''@;'; put 'put ''NGRcdTkzODJcdTkzMjhcdTkzNzVcdTkzNGFcdTkzNjVcdTkzNGJcdTkzMThcdTkzN2VcdTkzNmNcdTkzNWJcdTkzNzBcdTkzNWFcdTkzNTRcdTk1Y2FcdTk1Y2JcdTk1Y2NcdTk1YzhcdTk1YzZcdTk2YjFcdTk2YjhcdTk2ZDZcdTk3MWNcdTk3MWVcdTk3YTBcdTk3ZDNcdTk4NDZcdTk4YjZc''@;'; put 'put ''dTk5MzVcdTlhMDEiXSxbImMyNDAiLCJcdTk5ZmZcdTliYWVcdTliYWJcdTliYWFcdTliYWRcdTlkM2JcdTlkM2ZcdTllOGJcdTllY2ZcdTllZGVcdTllZGNcdTllZGRcdTllZGJcdTlmM2VcdTlmNGJcdTUzZTJcdTU2OTVcdTU2YWVcdTU4ZDlcdTU4ZDhcdTViMzhcdTVmNWRcdTYxZTNcdTYy''@;'; put 'put ''MzNcdTY0ZjRcdTY0ZjJcdTY0ZmVcdTY1MDZcdTY0ZmFcdTY0ZmJcdTY0ZjdcdTY1YjdcdTY2ZGNcdTY3MjZcdTZhYjNcdTZhYWNcdTZhYzNcdTZhYmJcdTZhYjhcdTZhYzJcdTZhYWVcdTZhYWZcdTZiNWZcdTZiNzhcdTZiYWZcdTcwMDlcdTcwMGJcdTZmZmVcdTcwMDZcdTZmZmFcdTcwMTFc''@;'; put 'put ''dTcwMGZcdTcxZmJcdTcxZmNcdTcxZmVcdTcxZjhcdTczNzdcdTczNzVcdTc0YTdcdTc0YmZcdTc1MTVcdTc2NTZcdTc2NTgiXSxbImMyYTEiLCJcdTc2NTJcdTc3YmRcdTc3YmZcdTc3YmJcdTc3YmNcdTc5MGVcdTc5YWVcdTdhNjFcdTdhNjJcdTdhNjBcdTdhYzRcdTdhYzVcdTdjMmJcdTdj''@;'; put 'put ''MjdcdTdjMmFcdTdjMWVcdTdjMjNcdTdjMjFcdTdjZTdcdTdlNTRcdTdlNTVcdTdlNWVcdTdlNWFcdTdlNjFcdTdlNTJcdTdlNTlcdTdmNDhcdTdmZjlcdTdmZmJcdTgwNzdcdTgwNzZcdTgxY2RcdTgxY2ZcdTgyMGFcdTg1Y2ZcdTg1YTlcdTg1Y2RcdTg1ZDBcdTg1YzlcdTg1YjBcdTg1YmFc''@;'; put 'put ''dTg1YjlcdTg1YTZcdTg3ZWZcdTg3ZWNcdTg3ZjJcdTg3ZTBcdTg5ODZcdTg5YjJcdTg5ZjRcdThiMjhcdThiMzlcdThiMmNcdThiMmJcdThjNTBcdThkMDVcdThlNTlcdThlNjNcdThlNjZcdThlNjRcdThlNWZcdThlNTVcdThlYzBcdThmNDlcdThmNGRcdTkwODdcdTkwODNcdTkwODhcdTkx''@;'; put 'put ''YWJcdTkxYWNcdTkxZDBcdTkzOTRcdTkzOGFcdTkzOTZcdTkzYTJcdTkzYjNcdTkzYWVcdTkzYWNcdTkzYjBcdTkzOThcdTkzOWFcdTkzOTdcdTk1ZDRcdTk1ZDZcdTk1ZDBcdTk1ZDVcdTk2ZTJcdTk2ZGNcdTk2ZDlcdTk2ZGJcdTk2ZGVcdTk3MjRcdTk3YTNcdTk3YTYiXSxbImMzNDAiLCJc''@;'; put 'put ''dTk3YWRcdTk3ZjlcdTk4NGRcdTk4NGZcdTk4NGNcdTk4NGVcdTk4NTNcdTk4YmFcdTk5M2VcdTk5M2ZcdTk5M2RcdTk5MmVcdTk5YTVcdTlhMGVcdTlhYzFcdTliMDNcdTliMDZcdTliNGZcdTliNGVcdTliNGRcdTliY2FcdTliYzlcdTliZmRcdTliYzhcdTliYzBcdTlkNTFcdTlkNWRcdTlk''@;'; put 'put ''NjBcdTllZTBcdTlmMTVcdTlmMmNcdTUxMzNcdTU2YTVcdTU4ZGVcdTU4ZGZcdTU4ZTJcdTViZjVcdTlmOTBcdTVlZWNcdTYxZjJcdTYxZjdcdTYxZjZcdTYxZjVcdTY1MDBcdTY1MGZcdTY2ZTBcdTY2ZGRcdTZhZTVcdTZhZGRcdTZhZGFcdTZhZDNcdTcwMWJcdTcwMWZcdTcwMjhcdTcwMWFc''@;'; put 'put ''dTcwMWRcdTcwMTVcdTcwMThcdTcyMDZcdTcyMGRcdTcyNThcdTcyYTJcdTczNzgiXSxbImMzYTEiLCJcdTczN2FcdTc0YmRcdTc0Y2FcdTc0ZTNcdTc1ODdcdTc1ODZcdTc2NWZcdTc2NjFcdTc3YzdcdTc5MTlcdTc5YjFcdTdhNmJcdTdhNjlcdTdjM2VcdTdjM2ZcdTdjMzhcdTdjM2RcdTdj''@;'; put 'put ''MzdcdTdjNDBcdTdlNmJcdTdlNmRcdTdlNzlcdTdlNjlcdTdlNmFcdTdmODVcdTdlNzNcdTdmYjZcdTdmYjlcdTdmYjhcdTgxZDhcdTg1ZTlcdTg1ZGRcdTg1ZWFcdTg1ZDVcdTg1ZTRcdTg1ZTVcdTg1ZjdcdTg3ZmJcdTg4MDVcdTg4MGRcdTg3ZjlcdTg3ZmVcdTg5NjBcdTg5NWZcdTg5NTZc''@;'; put 'put ''dTg5NWVcdThiNDFcdThiNWNcdThiNThcdThiNDlcdThiNWFcdThiNGVcdThiNGZcdThiNDZcdThiNTlcdThkMDhcdThkMGFcdThlN2NcdThlNzJcdThlODdcdThlNzZcdThlNmNcdThlN2FcdThlNzRcdThmNTRcdThmNGVcdThmYWRcdTkwOGFcdTkwOGJcdTkxYjFcdTkxYWVcdTkzZTFcdTkz''@;'; put 'put ''ZDFcdTkzZGZcdTkzYzNcdTkzYzhcdTkzZGNcdTkzZGRcdTkzZDZcdTkzZTJcdTkzY2RcdTkzZDhcdTkzZTRcdTkzZDdcdTkzZThcdTk1ZGNcdTk2YjRcdTk2ZTNcdTk3MmFcdTk3MjdcdTk3NjFcdTk3ZGNcdTk3ZmJcdTk4NWUiXSxbImM0NDAiLCJcdTk4NThcdTk4NWJcdTk4YmNcdTk5NDVc''@;'; put 'put ''dTk5NDlcdTlhMTZcdTlhMTlcdTliMGRcdTliZThcdTliZTdcdTliZDZcdTliZGJcdTlkODlcdTlkNjFcdTlkNzJcdTlkNmFcdTlkNmNcdTllOTJcdTllOTdcdTllOTNcdTllYjRcdTUyZjhcdTU2YThcdTU2YjdcdTU2YjZcdTU2YjRcdTU2YmNcdTU4ZTRcdTViNDBcdTViNDNcdTViN2RcdTVi''@;'; put 'put ''ZjZcdTVkYzlcdTYxZjhcdTYxZmFcdTY1MThcdTY1MTRcdTY1MTlcdTY2ZTZcdTY3MjdcdTZhZWNcdTcwM2VcdTcwMzBcdTcwMzJcdTcyMTBcdTczN2JcdTc0Y2ZcdTc2NjJcdTc2NjVcdTc5MjZcdTc5MmFcdTc5MmNcdTc5MmJcdTdhYzdcdTdhZjZcdTdjNGNcdTdjNDNcdTdjNGRcdTdjZWZc''@;'; put 'put ''dTdjZjBcdThmYWVcdTdlN2RcdTdlN2MiXSxbImM0YTEiLCJcdTdlODJcdTdmNGNcdTgwMDBcdTgxZGFcdTgyNjZcdTg1ZmJcdTg1ZjlcdTg2MTFcdTg1ZmFcdTg2MDZcdTg2MGJcdTg2MDdcdTg2MGFcdTg4MTRcdTg4MTVcdTg5NjRcdTg5YmFcdTg5ZjhcdThiNzBcdThiNmNcdThiNjZcdThi''@;'; put 'put ''NmZcdThiNWZcdThiNmJcdThkMGZcdThkMGRcdThlODlcdThlODFcdThlODVcdThlODJcdTkxYjRcdTkxY2JcdTk0MThcdTk0MDNcdTkzZmRcdTk1ZTFcdTk3MzBcdTk4YzRcdTk5NTJcdTk5NTFcdTk5YThcdTlhMmJcdTlhMzBcdTlhMzdcdTlhMzVcdTljMTNcdTljMGRcdTllNzlcdTllYjVc''@;'; put 'put ''dTllZThcdTlmMmZcdTlmNWZcdTlmNjNcdTlmNjFcdTUxMzdcdTUxMzhcdTU2YzFcdTU2YzBcdTU2YzJcdTU5MTRcdTVjNmNcdTVkY2RcdTYxZmNcdTYxZmVcdTY1MWRcdTY1MWNcdTY1OTVcdTY2ZTlcdTZhZmJcdTZiMDRcdTZhZmFcdTZiYjJcdTcwNGNcdTcyMWJcdTcyYTdcdTc0ZDZcdTc0''@;'; put 'put ''ZDRcdTc2NjlcdTc3ZDNcdTdjNTBcdTdlOGZcdTdlOGNcdTdmYmNcdTg2MTdcdTg2MmRcdTg2MWFcdTg4MjNcdTg4MjJcdTg4MjFcdTg4MWZcdTg5NmFcdTg5NmNcdTg5YmRcdThiNzQiXSxbImM1NDAiLCJcdThiNzdcdThiN2RcdThkMTNcdThlOGFcdThlOGRcdThlOGJcdThmNWZcdThmYWZc''@;'; put 'put ''dTkxYmFcdTk0MmVcdTk0MzNcdTk0MzVcdTk0M2FcdTk0MzhcdTk0MzJcdTk0MmJcdTk1ZTJcdTk3MzhcdTk3MzlcdTk3MzJcdTk3ZmZcdTk4NjdcdTk4NjVcdTk5NTdcdTlhNDVcdTlhNDNcdTlhNDBcdTlhM2VcdTlhY2ZcdTliNTRcdTliNTFcdTljMmRcdTljMjVcdTlkYWZcdTlkYjRcdTlk''@;'; put 'put ''YzJcdTlkYjhcdTllOWRcdTllZWZcdTlmMTlcdTlmNWNcdTlmNjZcdTlmNjdcdTUxM2NcdTUxM2JcdTU2YzhcdTU2Y2FcdTU2YzlcdTViN2ZcdTVkZDRcdTVkZDJcdTVmNGVcdTYxZmZcdTY1MjRcdTZiMGFcdTZiNjFcdTcwNTFcdTcwNThcdTczODBcdTc0ZTRcdTc1OGFcdTc2NmVcdTc2NmMi''@;'; put 'put ''XSxbImM1YTEiLCJcdTc5YjNcdTdjNjBcdTdjNWZcdTgwN2VcdTgwN2RcdTgxZGZcdTg5NzJcdTg5NmZcdTg5ZmNcdThiODBcdThkMTZcdThkMTdcdThlOTFcdThlOTNcdThmNjFcdTkxNDhcdTk0NDRcdTk0NTFcdTk0NTJcdTk3M2RcdTk3M2VcdTk3YzNcdTk3YzFcdTk4NmJcdTk5NTVcdTlh''@;'; put 'put ''NTVcdTlhNGRcdTlhZDJcdTliMWFcdTljNDlcdTljMzFcdTljM2VcdTljM2JcdTlkZDNcdTlkZDdcdTlmMzRcdTlmNmNcdTlmNmFcdTlmOTRcdTU2Y2NcdTVkZDZcdTYyMDBcdTY1MjNcdTY1MmJcdTY1MmFcdTY2ZWNcdTZiMTBcdTc0ZGFcdTdhY2FcdTdjNjRcdTdjNjNcdTdjNjVcdTdlOTNc''@;'; put 'put ''dTdlOTZcdTdlOTRcdTgxZTJcdTg2MzhcdTg2M2ZcdTg4MzFcdThiOGFcdTkwOTBcdTkwOGZcdTk0NjNcdTk0NjBcdTk0NjRcdTk3NjhcdTk4NmZcdTk5NWNcdTlhNWFcdTlhNWJcdTlhNTdcdTlhZDNcdTlhZDRcdTlhZDFcdTljNTRcdTljNTdcdTljNTZcdTlkZTVcdTllOWZcdTllZjRcdTU2''@;'; put 'put ''ZDFcdTU4ZTlcdTY1MmNcdTcwNWVcdTc2NzFcdTc2NzJcdTc3ZDdcdTdmNTBcdTdmODhcdTg4MzZcdTg4MzlcdTg4NjJcdThiOTNcdThiOTIiXSxbImM2NDAiLCJcdThiOTZcdTgyNzdcdThkMWJcdTkxYzBcdTk0NmFcdTk3NDJcdTk3NDhcdTk3NDRcdTk3YzZcdTk4NzBcdTlhNWZcdTliMjJc''@;'; put 'put ''dTliNThcdTljNWZcdTlkZjlcdTlkZmFcdTllN2NcdTllN2RcdTlmMDdcdTlmNzdcdTlmNzJcdTVlZjNcdTZiMTZcdTcwNjNcdTdjNmNcdTdjNmVcdTg4M2JcdTg5YzBcdThlYTFcdTkxYzFcdTk0NzJcdTk0NzBcdTk4NzFcdTk5NWVcdTlhZDZcdTliMjNcdTllY2NcdTcwNjRcdTc3ZGFcdThi''@;'; put 'put ''OWFcdTk0NzdcdTk3YzlcdTlhNjJcdTlhNjVcdTdlOWNcdThiOWNcdThlYWFcdTkxYzVcdTk0N2RcdTk0N2VcdTk0N2NcdTljNzdcdTljNzhcdTllZjdcdThjNTRcdTk0N2ZcdTllMWFcdTcyMjhcdTlhNmFcdTliMzFcdTllMWJcdTllMWVcdTdjNzIiXSxbImM5NDAiLCJcdTRlNDJcdTRlNWNc''@;'; put 'put ''dTUxZjVcdTUzMWFcdTUzODJcdTRlMDdcdTRlMGNcdTRlNDdcdTRlOGRcdTU2ZDdcdWZhMGNcdTVjNmVcdTVmNzNcdTRlMGZcdTUxODdcdTRlMGVcdTRlMmVcdTRlOTNcdTRlYzJcdTRlYzlcdTRlYzhcdTUxOThcdTUyZmNcdTUzNmNcdTUzYjlcdTU3MjBcdTU5MDNcdTU5MmNcdTVjMTBcdTVk''@;'; put 'put ''ZmZcdTY1ZTFcdTZiYjNcdTZiY2NcdTZjMTRcdTcyM2ZcdTRlMzFcdTRlM2NcdTRlZThcdTRlZGNcdTRlZTlcdTRlZTFcdTRlZGRcdTRlZGFcdTUyMGNcdTUzMWNcdTUzNGNcdTU3MjJcdTU3MjNcdTU5MTdcdTU5MmZcdTViODFcdTViODRcdTVjMTJcdTVjM2JcdTVjNzRcdTVjNzNcdTVlMDRc''@;'; put 'put ''dTVlODBcdTVlODJcdTVmYzlcdTYyMDlcdTYyNTBcdTZjMTUiXSxbImM5YTEiLCJcdTZjMzZcdTZjNDNcdTZjM2ZcdTZjM2JcdTcyYWVcdTcyYjBcdTczOGFcdTc5YjhcdTgwOGFcdTk2MWVcdTRmMGVcdTRmMThcdTRmMmNcdTRlZjVcdTRmMTRcdTRlZjFcdTRmMDBcdTRlZjdcdTRmMDhcdTRm''@;'; put 'put ''MWRcdTRmMDJcdTRmMDVcdTRmMjJcdTRmMTNcdTRmMDRcdTRlZjRcdTRmMTJcdTUxYjFcdTUyMTNcdTUyMDlcdTUyMTBcdTUyYTZcdTUzMjJcdTUzMWZcdTUzNGRcdTUzOGFcdTU0MDdcdTU2ZTFcdTU2ZGZcdTU3MmVcdTU3MmFcdTU3MzRcdTU5M2NcdTU5ODBcdTU5N2NcdTU5ODVcdTU5N2Jc''@;'; put 'put ''dTU5N2VcdTU5NzdcdTU5N2ZcdTViNTZcdTVjMTVcdTVjMjVcdTVjN2NcdTVjN2FcdTVjN2JcdTVjN2VcdTVkZGZcdTVlNzVcdTVlODRcdTVmMDJcdTVmMWFcdTVmNzRcdTVmZDVcdTVmZDRcdTVmY2ZcdTYyNWNcdTYyNWVcdTYyNjRcdTYyNjFcdTYyNjZcdTYyNjJcdTYyNTlcdTYyNjBcdTYy''@;'; put 'put ''NWFcdTYyNjVcdTY1ZWZcdTY1ZWVcdTY3M2VcdTY3MzlcdTY3MzhcdTY3M2JcdTY3M2FcdTY3M2ZcdTY3M2NcdTY3MzNcdTZjMThcdTZjNDZcdTZjNTJcdTZjNWNcdTZjNGZcdTZjNGFcdTZjNTRcdTZjNGIiXSxbImNhNDAiLCJcdTZjNGNcdTcwNzFcdTcyNWVcdTcyYjRcdTcyYjVcdTczOGVc''@;'; put 'put ''dTc1MmFcdTc2N2ZcdTdhNzVcdTdmNTFcdTgyNzhcdTgyN2NcdTgyODBcdTgyN2RcdTgyN2ZcdTg2NGRcdTg5N2VcdTkwOTlcdTkwOTdcdTkwOThcdTkwOWJcdTkwOTRcdTk2MjJcdTk2MjRcdTk2MjBcdTk2MjNcdTRmNTZcdTRmM2JcdTRmNjJcdTRmNDlcdTRmNTNcdTRmNjRcdTRmM2VcdTRm''@;'; put 'put ''NjdcdTRmNTJcdTRmNWZcdTRmNDFcdTRmNThcdTRmMmRcdTRmMzNcdTRmM2ZcdTRmNjFcdTUxOGZcdTUxYjlcdTUyMWNcdTUyMWVcdTUyMjFcdTUyYWRcdTUyYWVcdTUzMDlcdTUzNjNcdTUzNzJcdTUzOGVcdTUzOGZcdTU0MzBcdTU0MzdcdTU0MmFcdTU0NTRcdTU0NDVcdTU0MTlcdTU0MWNc''@;'; put 'put ''dTU0MjVcdTU0MTgiXSxbImNhYTEiLCJcdTU0M2RcdTU0NGZcdTU0NDFcdTU0MjhcdTU0MjRcdTU0NDdcdTU2ZWVcdTU2ZTdcdTU2ZTVcdTU3NDFcdTU3NDVcdTU3NGNcdTU3NDlcdTU3NGJcdTU3NTJcdTU5MDZcdTU5NDBcdTU5YTZcdTU5OThcdTU5YTBcdTU5OTdcdTU5OGVcdTU5YTJcdTU5''@;'; put 'put ''OTBcdTU5OGZcdTU5YTdcdTU5YTFcdTViOGVcdTViOTJcdTVjMjhcdTVjMmFcdTVjOGRcdTVjOGZcdTVjODhcdTVjOGJcdTVjODlcdTVjOTJcdTVjOGFcdTVjODZcdTVjOTNcdTVjOTVcdTVkZTBcdTVlMGFcdTVlMGVcdTVlOGJcdTVlODlcdTVlOGNcdTVlODhcdTVlOGRcdTVmMDVcdTVmMWRc''@;'; put 'put ''dTVmNzhcdTVmNzZcdTVmZDJcdTVmZDFcdTVmZDBcdTVmZWRcdTVmZThcdTVmZWVcdTVmZjNcdTVmZTFcdTVmZTRcdTVmZTNcdTVmZmFcdTVmZWZcdTVmZjdcdTVmZmJcdTYwMDBcdTVmZjRcdTYyM2FcdTYyODNcdTYyOGNcdTYyOGVcdTYyOGZcdTYyOTRcdTYyODdcdTYyNzFcdTYyN2JcdTYy''@;'; put 'put ''N2FcdTYyNzBcdTYyODFcdTYyODhcdTYyNzdcdTYyN2RcdTYyNzJcdTYyNzRcdTY1MzdcdTY1ZjBcdTY1ZjRcdTY1ZjNcdTY1ZjJcdTY1ZjVcdTY3NDVcdTY3NDciXSxbImNiNDAiLCJcdTY3NTlcdTY3NTVcdTY3NGNcdTY3NDhcdTY3NWRcdTY3NGRcdTY3NWFcdTY3NGJcdTZiZDBcdTZjMTlc''@;'; put 'put ''dTZjMWFcdTZjNzhcdTZjNjdcdTZjNmJcdTZjODRcdTZjOGJcdTZjOGZcdTZjNzFcdTZjNmZcdTZjNjlcdTZjOWFcdTZjNmRcdTZjODdcdTZjOTVcdTZjOWNcdTZjNjZcdTZjNzNcdTZjNjVcdTZjN2JcdTZjOGVcdTcwNzRcdTcwN2FcdTcyNjNcdTcyYmZcdTcyYmRcdTcyYzNcdTcyYzZcdTcy''@;'; put 'put ''YzFcdTcyYmFcdTcyYzVcdTczOTVcdTczOTdcdTczOTNcdTczOTRcdTczOTJcdTc1M2FcdTc1MzlcdTc1OTRcdTc1OTVcdTc2ODFcdTc5M2RcdTgwMzRcdTgwOTVcdTgwOTlcdTgwOTBcdTgwOTJcdTgwOWNcdTgyOTBcdTgyOGZcdTgyODVcdTgyOGVcdTgyOTFcdTgyOTMiXSxbImNiYTEiLCJc''@;'; put 'put ''dTgyOGFcdTgyODNcdTgyODRcdThjNzhcdThmYzlcdThmYmZcdTkwOWZcdTkwYTFcdTkwYTVcdTkwOWVcdTkwYTdcdTkwYTBcdTk2MzBcdTk2MjhcdTk2MmZcdTk2MmRcdTRlMzNcdTRmOThcdTRmN2NcdTRmODVcdTRmN2RcdTRmODBcdTRmODdcdTRmNzZcdTRmNzRcdTRmODlcdTRmODRcdTRm''@;'; put 'put ''NzdcdTRmNGNcdTRmOTdcdTRmNmFcdTRmOWFcdTRmNzlcdTRmODFcdTRmNzhcdTRmOTBcdTRmOWNcdTRmOTRcdTRmOWVcdTRmOTJcdTRmODJcdTRmOTVcdTRmNmJcdTRmNmVcdTUxOWVcdTUxYmNcdTUxYmVcdTUyMzVcdTUyMzJcdTUyMzNcdTUyNDZcdTUyMzFcdTUyYmNcdTUzMGFcdTUzMGJc''@;'; put 'put ''dTUzM2NcdTUzOTJcdTUzOTRcdTU0ODdcdTU0N2ZcdTU0ODFcdTU0OTFcdTU0ODJcdTU0ODhcdTU0NmJcdTU0N2FcdTU0N2VcdTU0NjVcdTU0NmNcdTU0NzRcdTU0NjZcdTU0OGRcdTU0NmZcdTU0NjFcdTU0NjBcdTU0OThcdTU0NjNcdTU0NjdcdTU0NjRcdTU2ZjdcdTU2ZjlcdTU3NmZcdTU3''@;'; put 'put ''NzJcdTU3NmRcdTU3NmJcdTU3NzFcdTU3NzBcdTU3NzZcdTU3ODBcdTU3NzVcdTU3N2JcdTU3NzNcdTU3NzRcdTU3NjIiXSxbImNjNDAiLCJcdTU3NjhcdTU3N2RcdTU5MGNcdTU5NDVcdTU5YjVcdTU5YmFcdTU5Y2ZcdTU5Y2VcdTU5YjJcdTU5Y2NcdTU5YzFcdTU5YjZcdTU5YmNcdTU5YzNc''@;'; put 'put ''dTU5ZDZcdTU5YjFcdTU5YmRcdTU5YzBcdTU5YzhcdTU5YjRcdTU5YzdcdTViNjJcdTViNjVcdTViOTNcdTViOTVcdTVjNDRcdTVjNDdcdTVjYWVcdTVjYTRcdTVjYTBcdTVjYjVcdTVjYWZcdTVjYThcdTVjYWNcdTVjOWZcdTVjYTNcdTVjYWRcdTVjYTJcdTVjYWFcdTVjYTdcdTVjOWRcdTVj''@;'; put 'put ''YTVcdTVjYjZcdTVjYjBcdTVjYTZcdTVlMTdcdTVlMTRcdTVlMTlcdTVmMjhcdTVmMjJcdTVmMjNcdTVmMjRcdTVmNTRcdTVmODJcdTVmN2VcdTVmN2RcdTVmZGVcdTVmZTVcdTYwMmRcdTYwMjZcdTYwMTlcdTYwMzJcdTYwMGIiXSxbImNjYTEiLCJcdTYwMzRcdTYwMGFcdTYwMTdcdTYwMzNc''@;'; put 'put ''dTYwMWFcdTYwMWVcdTYwMmNcdTYwMjJcdTYwMGRcdTYwMTBcdTYwMmVcdTYwMTNcdTYwMTFcdTYwMGNcdTYwMDlcdTYwMWNcdTYyMTRcdTYyM2RcdTYyYWRcdTYyYjRcdTYyZDFcdTYyYmVcdTYyYWFcdTYyYjZcdTYyY2FcdTYyYWVcdTYyYjNcdTYyYWZcdTYyYmJcdTYyYTlcdTYyYjBcdTYy''@;'; put 'put ''YjhcdTY1M2RcdTY1YThcdTY1YmJcdTY2MDlcdTY1ZmNcdTY2MDRcdTY2MTJcdTY2MDhcdTY1ZmJcdTY2MDNcdTY2MGJcdTY2MGRcdTY2MDVcdTY1ZmRcdTY2MTFcdTY2MTBcdTY2ZjZcdTY3MGFcdTY3ODVcdTY3NmNcdTY3OGVcdTY3OTJcdTY3NzZcdTY3N2JcdTY3OThcdTY3ODZcdTY3ODRc''@;'; put 'put ''dTY3NzRcdTY3OGRcdTY3OGNcdTY3N2FcdTY3OWZcdTY3OTFcdTY3OTlcdTY3ODNcdTY3N2RcdTY3ODFcdTY3NzhcdTY3NzlcdTY3OTRcdTZiMjVcdTZiODBcdTZiN2VcdTZiZGVcdTZjMWRcdTZjOTNcdTZjZWNcdTZjZWJcdTZjZWVcdTZjZDlcdTZjYjZcdTZjZDRcdTZjYWRcdTZjZTdcdTZj''@;'; put 'put ''YjdcdTZjZDBcdTZjYzJcdTZjYmFcdTZjYzNcdTZjYzZcdTZjZWRcdTZjZjIiXSxbImNkNDAiLCJcdTZjZDJcdTZjZGRcdTZjYjRcdTZjOGFcdTZjOWRcdTZjODBcdTZjZGVcdTZjYzBcdTZkMzBcdTZjY2RcdTZjYzdcdTZjYjBcdTZjZjlcdTZjY2ZcdTZjZTlcdTZjZDFcdTcwOTRcdTcwOThc''@;'; put 'put ''dTcwODVcdTcwOTNcdTcwODZcdTcwODRcdTcwOTFcdTcwOTZcdTcwODJcdTcwOWFcdTcwODNcdTcyNmFcdTcyZDZcdTcyY2JcdTcyZDhcdTcyYzlcdTcyZGNcdTcyZDJcdTcyZDRcdTcyZGFcdTcyY2NcdTcyZDFcdTczYTRcdTczYTFcdTczYWRcdTczYTZcdTczYTJcdTczYTBcdTczYWNcdTcz''@;'; put 'put ''OWRcdTc0ZGRcdTc0ZThcdTc1M2ZcdTc1NDBcdTc1M2VcdTc1OGNcdTc1OThcdTc2YWZcdTc2ZjNcdTc2ZjFcdTc2ZjBcdTc2ZjVcdTc3ZjhcdTc3ZmNcdTc3ZjlcdTc3ZmJcdTc3ZmEiXSxbImNkYTEiLCJcdTc3ZjdcdTc5NDJcdTc5M2ZcdTc5YzVcdTdhNzhcdTdhN2JcdTdhZmJcdTdjNzVc''@;'; put 'put ''dTdjZmRcdTgwMzVcdTgwOGZcdTgwYWVcdTgwYTNcdTgwYjhcdTgwYjVcdTgwYWRcdTgyMjBcdTgyYTBcdTgyYzBcdTgyYWJcdTgyOWFcdTgyOThcdTgyOWJcdTgyYjVcdTgyYTdcdTgyYWVcdTgyYmNcdTgyOWVcdTgyYmFcdTgyYjRcdTgyYThcdTgyYTFcdTgyYTlcdTgyYzJcdTgyYTRcdTgy''@;'; put 'put ''YzNcdTgyYjZcdTgyYTJcdTg2NzBcdTg2NmZcdTg2NmRcdTg2NmVcdThjNTZcdThmZDJcdThmY2JcdThmZDNcdThmY2RcdThmZDZcdThmZDVcdThmZDdcdTkwYjJcdTkwYjRcdTkwYWZcdTkwYjNcdTkwYjBcdTk2MzlcdTk2M2RcdTk2M2NcdTk2M2FcdTk2NDNcdTRmY2RcdTRmYzVcdTRmZDNc''@;'; put 'put ''dTRmYjJcdTRmYzlcdTRmY2JcdTRmYzFcdTRmZDRcdTRmZGNcdTRmZDlcdTRmYmJcdTRmYjNcdTRmZGJcdTRmYzdcdTRmZDZcdTRmYmFcdTRmYzBcdTRmYjlcdTRmZWNcdTUyNDRcdTUyNDlcdTUyYzBcdTUyYzJcdTUzM2RcdTUzN2NcdTUzOTdcdTUzOTZcdTUzOTlcdTUzOThcdTU0YmFcdTU0''@;'; put 'put ''YTFcdTU0YWRcdTU0YTVcdTU0Y2YiXSxbImNlNDAiLCJcdTU0YzNcdTgzMGRcdTU0YjdcdTU0YWVcdTU0ZDZcdTU0YjZcdTU0YzVcdTU0YzZcdTU0YTBcdTU0NzBcdTU0YmNcdTU0YTJcdTU0YmVcdTU0NzJcdTU0ZGVcdTU0YjBcdTU3YjVcdTU3OWVcdTU3OWZcdTU3YTRcdTU3OGNcdTU3OTdc''@;'; put 'put ''dTU3OWRcdTU3OWJcdTU3OTRcdTU3OThcdTU3OGZcdTU3OTlcdTU3YTVcdTU3OWFcdTU3OTVcdTU4ZjRcdTU5MGRcdTU5NTNcdTU5ZTFcdTU5ZGVcdTU5ZWVcdTVhMDBcdTU5ZjFcdTU5ZGRcdTU5ZmFcdTU5ZmRcdTU5ZmNcdTU5ZjZcdTU5ZTRcdTU5ZjJcdTU5ZjdcdTU5ZGJcdTU5ZTlcdTU5''@;'; put 'put ''ZjNcdTU5ZjVcdTU5ZTBcdTU5ZmVcdTU5ZjRcdTU5ZWRcdTViYThcdTVjNGNcdTVjZDBcdTVjZDhcdTVjY2NcdTVjZDdcdTVjY2JcdTVjZGIiXSxbImNlYTEiLCJcdTVjZGVcdTVjZGFcdTVjYzlcdTVjYzdcdTVjY2FcdTVjZDZcdTVjZDNcdTVjZDRcdTVjY2ZcdTVjYzhcdTVjYzZcdTVjY2Vc''@;'; put 'put ''dTVjZGZcdTVjZjhcdTVkZjlcdTVlMjFcdTVlMjJcdTVlMjNcdTVlMjBcdTVlMjRcdTVlYjBcdTVlYTRcdTVlYTJcdTVlOWJcdTVlYTNcdTVlYTVcdTVmMDdcdTVmMmVcdTVmNTZcdTVmODZcdTYwMzdcdTYwMzlcdTYwNTRcdTYwNzJcdTYwNWVcdTYwNDVcdTYwNTNcdTYwNDdcdTYwNDlcdTYw''@;'; put 'put ''NWJcdTYwNGNcdTYwNDBcdTYwNDJcdTYwNWZcdTYwMjRcdTYwNDRcdTYwNThcdTYwNjZcdTYwNmVcdTYyNDJcdTYyNDNcdTYyY2ZcdTYzMGRcdTYzMGJcdTYyZjVcdTYzMGVcdTYzMDNcdTYyZWJcdTYyZjlcdTYzMGZcdTYzMGNcdTYyZjhcdTYyZjZcdTYzMDBcdTYzMTNcdTYzMTRcdTYyZmFc''@;'; put 'put ''dTYzMTVcdTYyZmJcdTYyZjBcdTY1NDFcdTY1NDNcdTY1YWFcdTY1YmZcdTY2MzZcdTY2MjFcdTY2MzJcdTY2MzVcdTY2MWNcdTY2MjZcdTY2MjJcdTY2MzNcdTY2MmJcdTY2M2FcdTY2MWRcdTY2MzRcdTY2MzlcdTY2MmVcdTY3MGZcdTY3MTBcdTY3YzFcdTY3ZjJcdTY3YzhcdTY3YmEiXSxb''@;'; put 'put ''ImNmNDAiLCJcdTY3ZGNcdTY3YmJcdTY3ZjhcdTY3ZDhcdTY3YzBcdTY3YjdcdTY3YzVcdTY3ZWJcdTY3ZTRcdTY3ZGZcdTY3YjVcdTY3Y2RcdTY3YjNcdTY3ZjdcdTY3ZjZcdTY3ZWVcdTY3ZTNcdTY3YzJcdTY3YjlcdTY3Y2VcdTY3ZTdcdTY3ZjBcdTY3YjJcdTY3ZmNcdTY3YzZcdTY3ZWRc''@;'; put 'put ''dTY3Y2NcdTY3YWVcdTY3ZTZcdTY3ZGJcdTY3ZmFcdTY3YzlcdTY3Y2FcdTY3YzNcdTY3ZWFcdTY3Y2JcdTZiMjhcdTZiODJcdTZiODRcdTZiYjZcdTZiZDZcdTZiZDhcdTZiZTBcdTZjMjBcdTZjMjFcdTZkMjhcdTZkMzRcdTZkMmRcdTZkMWZcdTZkM2NcdTZkM2ZcdTZkMTJcdTZkMGFcdTZj''@;'; put 'put ''ZGFcdTZkMzNcdTZkMDRcdTZkMTlcdTZkM2FcdTZkMWFcdTZkMTFcdTZkMDBcdTZkMWRcdTZkNDIiXSxbImNmYTEiLCJcdTZkMDFcdTZkMThcdTZkMzdcdTZkMDNcdTZkMGZcdTZkNDBcdTZkMDdcdTZkMjBcdTZkMmNcdTZkMDhcdTZkMjJcdTZkMDlcdTZkMTBcdTcwYjdcdTcwOWZcdTcwYmVc''@;'; put 'put ''dTcwYjFcdTcwYjBcdTcwYTFcdTcwYjRcdTcwYjVcdTcwYTlcdTcyNDFcdTcyNDlcdTcyNGFcdTcyNmNcdTcyNzBcdTcyNzNcdTcyNmVcdTcyY2FcdTcyZTRcdTcyZThcdTcyZWJcdTcyZGZcdTcyZWFcdTcyZTZcdTcyZTNcdTczODVcdTczY2NcdTczYzJcdTczYzhcdTczYzVcdTczYjlcdTcz''@;'; put 'put ''YjZcdTczYjVcdTczYjRcdTczZWJcdTczYmZcdTczYzdcdTczYmVcdTczYzNcdTczYzZcdTczYjhcdTczY2JcdTc0ZWNcdTc0ZWVcdTc1MmVcdTc1NDdcdTc1NDhcdTc1YTdcdTc1YWFcdTc2NzlcdTc2YzRcdTc3MDhcdTc3MDNcdTc3MDRcdTc3MDVcdTc3MGFcdTc2ZjdcdTc2ZmJcdTc2ZmFc''@;'; put 'put ''dTc3ZTdcdTc3ZThcdTc4MDZcdTc4MTFcdTc4MTJcdTc4MDVcdTc4MTBcdTc4MGZcdTc4MGVcdTc4MDlcdTc4MDNcdTc4MTNcdTc5NGFcdTc5NGNcdTc5NGJcdTc5NDVcdTc5NDRcdTc5ZDVcdTc5Y2RcdTc5Y2ZcdTc5ZDZcdTc5Y2VcdTdhODAiXSxbImQwNDAiLCJcdTdhN2VcdTdhZDFcdTdi''@;'; put 'put ''MDBcdTdiMDFcdTdjN2FcdTdjNzhcdTdjNzlcdTdjN2ZcdTdjODBcdTdjODFcdTdkMDNcdTdkMDhcdTdkMDFcdTdmNThcdTdmOTFcdTdmOGRcdTdmYmVcdTgwMDdcdTgwMGVcdTgwMGZcdTgwMTRcdTgwMzdcdTgwZDhcdTgwYzdcdTgwZTBcdTgwZDFcdTgwYzhcdTgwYzJcdTgwZDBcdTgwYzVc''@;'; put 'put ''dTgwZTNcdTgwZDlcdTgwZGNcdTgwY2FcdTgwZDVcdTgwYzlcdTgwY2ZcdTgwZDdcdTgwZTZcdTgwY2RcdTgxZmZcdTgyMjFcdTgyOTRcdTgyZDlcdTgyZmVcdTgyZjlcdTgzMDdcdTgyZThcdTgzMDBcdTgyZDVcdTgzM2FcdTgyZWJcdTgyZDZcdTgyZjRcdTgyZWNcdTgyZTFcdTgyZjJcdTgy''@;'; put 'put ''ZjVcdTgzMGNcdTgyZmJcdTgyZjZcdTgyZjBcdTgyZWEiXSxbImQwYTEiLCJcdTgyZTRcdTgyZTBcdTgyZmFcdTgyZjNcdTgyZWRcdTg2NzdcdTg2NzRcdTg2N2NcdTg2NzNcdTg4NDFcdTg4NGVcdTg4NjdcdTg4NmFcdTg4NjlcdTg5ZDNcdThhMDRcdThhMDdcdThkNzJcdThmZTNcdThmZTFc''@;'; put 'put ''dThmZWVcdThmZTBcdTkwZjFcdTkwYmRcdTkwYmZcdTkwZDVcdTkwYzVcdTkwYmVcdTkwYzdcdTkwY2JcdTkwYzhcdTkxZDRcdTkxZDNcdTk2NTRcdTk2NGZcdTk2NTFcdTk2NTNcdTk2NGFcdTk2NGVcdTUwMWVcdTUwMDVcdTUwMDdcdTUwMTNcdTUwMjJcdTUwMzBcdTUwMWJcdTRmZjVcdTRm''@;'; put 'put ''ZjRcdTUwMzNcdTUwMzdcdTUwMmNcdTRmZjZcdTRmZjdcdTUwMTdcdTUwMWNcdTUwMjBcdTUwMjdcdTUwMzVcdTUwMmZcdTUwMzFcdTUwMGVcdTUxNWFcdTUxOTRcdTUxOTNcdTUxY2FcdTUxYzRcdTUxYzVcdTUxYzhcdTUxY2VcdTUyNjFcdTUyNWFcdTUyNTJcdTUyNWVcdTUyNWZcdTUyNTVc''@;'; put 'put ''dTUyNjJcdTUyY2RcdTUzMGVcdTUzOWVcdTU1MjZcdTU0ZTJcdTU1MTdcdTU1MTJcdTU0ZTdcdTU0ZjNcdTU0ZTRcdTU1MWFcdTU0ZmZcdTU1MDRcdTU1MDhcdTU0ZWJcdTU1MTFcdTU1MDVcdTU0ZjEiXSxbImQxNDAiLCJcdTU1MGFcdTU0ZmJcdTU0ZjdcdTU0ZjhcdTU0ZTBcdTU1MGVcdTU1''@;'; put 'put ''MDNcdTU1MGJcdTU3MDFcdTU3MDJcdTU3Y2NcdTU4MzJcdTU3ZDVcdTU3ZDJcdTU3YmFcdTU3YzZcdTU3YmRcdTU3YmNcdTU3YjhcdTU3YjZcdTU3YmZcdTU3YzdcdTU3ZDBcdTU3YjlcdTU3YzFcdTU5MGVcdTU5NGFcdTVhMTlcdTVhMTZcdTVhMmRcdTVhMmVcdTVhMTVcdTVhMGZcdTVhMTdc''@;'; put 'put ''dTVhMGFcdTVhMWVcdTVhMzNcdTViNmNcdTViYTdcdTViYWRcdTViYWNcdTVjMDNcdTVjNTZcdTVjNTRcdTVjZWNcdTVjZmZcdTVjZWVcdTVjZjFcdTVjZjdcdTVkMDBcdTVjZjlcdTVlMjlcdTVlMjhcdTVlYThcdTVlYWVcdTVlYWFcdTVlYWNcdTVmMzNcdTVmMzBcdTVmNjdcdTYwNWRcdTYw''@;'; put 'put ''NWFcdTYwNjciXSxbImQxYTEiLCJcdTYwNDFcdTYwYTJcdTYwODhcdTYwODBcdTYwOTJcdTYwODFcdTYwOWRcdTYwODNcdTYwOTVcdTYwOWJcdTYwOTdcdTYwODdcdTYwOWNcdTYwOGVcdTYyMTlcdTYyNDZcdTYyZjJcdTYzMTBcdTYzNTZcdTYzMmNcdTYzNDRcdTYzNDVcdTYzMzZcdTYzNDNc''@;'; put 'put ''dTYzZTRcdTYzMzlcdTYzNGJcdTYzNGFcdTYzM2NcdTYzMjlcdTYzNDFcdTYzMzRcdTYzNThcdTYzNTRcdTYzNTlcdTYzMmRcdTYzNDdcdTYzMzNcdTYzNWFcdTYzNTFcdTYzMzhcdTYzNTdcdTYzNDBcdTYzNDhcdTY1NGFcdTY1NDZcdTY1YzZcdTY1YzNcdTY1YzRcdTY1YzJcdTY2NGFcdTY2''@;'; put 'put ''NWZcdTY2NDdcdTY2NTFcdTY3MTJcdTY3MTNcdTY4MWZcdTY4MWFcdTY4NDlcdTY4MzJcdTY4MzNcdTY4M2JcdTY4NGJcdTY4NGZcdTY4MTZcdTY4MzFcdTY4MWNcdTY4MzVcdTY4MmJcdTY4MmRcdTY4MmZcdTY4NGVcdTY4NDRcdTY4MzRcdTY4MWRcdTY4MTJcdTY4MTRcdTY4MjZcdTY4Mjhc''@;'; put 'put ''dTY4MmVcdTY4NGRcdTY4M2FcdTY4MjVcdTY4MjBcdTZiMmNcdTZiMmZcdTZiMmRcdTZiMzFcdTZiMzRcdTZiNmRcdTgwODJcdTZiODhcdTZiZTZcdTZiZTQiXSxbImQyNDAiLCJcdTZiZThcdTZiZTNcdTZiZTJcdTZiZTdcdTZjMjVcdTZkN2FcdTZkNjNcdTZkNjRcdTZkNzZcdTZkMGRcdTZk''@;'; put 'put ''NjFcdTZkOTJcdTZkNThcdTZkNjJcdTZkNmRcdTZkNmZcdTZkOTFcdTZkOGRcdTZkZWZcdTZkN2ZcdTZkODZcdTZkNWVcdTZkNjdcdTZkNjBcdTZkOTdcdTZkNzBcdTZkN2NcdTZkNWZcdTZkODJcdTZkOThcdTZkMmZcdTZkNjhcdTZkOGJcdTZkN2VcdTZkODBcdTZkODRcdTZkMTZcdTZkODNc''@;'; put 'put ''dTZkN2JcdTZkN2RcdTZkNzVcdTZkOTBcdTcwZGNcdTcwZDNcdTcwZDFcdTcwZGRcdTcwY2JcdTdmMzlcdTcwZTJcdTcwZDdcdTcwZDJcdTcwZGVcdTcwZTBcdTcwZDRcdTcwY2RcdTcwYzVcdTcwYzZcdTcwYzdcdTcwZGFcdTcwY2VcdTcwZTFcdTcyNDJcdTcyNzgiXSxbImQyYTEiLCJcdTcy''@;'; put 'put ''NzdcdTcyNzZcdTczMDBcdTcyZmFcdTcyZjRcdTcyZmVcdTcyZjZcdTcyZjNcdTcyZmJcdTczMDFcdTczZDNcdTczZDlcdTczZTVcdTczZDZcdTczYmNcdTczZTdcdTczZTNcdTczZTlcdTczZGNcdTczZDJcdTczZGJcdTczZDRcdTczZGRcdTczZGFcdTczZDdcdTczZDhcdTczZThcdTc0ZGVc''@;'; put 'put ''dTc0ZGZcdTc0ZjRcdTc0ZjVcdTc1MjFcdTc1NWJcdTc1NWZcdTc1YjBcdTc1YzFcdTc1YmJcdTc1YzRcdTc1YzBcdTc1YmZcdTc1YjZcdTc1YmFcdTc2OGFcdTc2YzlcdTc3MWRcdTc3MWJcdTc3MTBcdTc3MTNcdTc3MTJcdTc3MjNcdTc3MTFcdTc3MTVcdTc3MTlcdTc3MWFcdTc3MjJcdTc3''@;'; put 'put ''MjdcdTc4MjNcdTc4MmNcdTc4MjJcdTc4MzVcdTc4MmZcdTc4MjhcdTc4MmVcdTc4MmJcdTc4MjFcdTc4MjlcdTc4MzNcdTc4MmFcdTc4MzFcdTc5NTRcdTc5NWJcdTc5NGZcdTc5NWNcdTc5NTNcdTc5NTJcdTc5NTFcdTc5ZWJcdTc5ZWNcdTc5ZTBcdTc5ZWVcdTc5ZWRcdTc5ZWFcdTc5ZGNc''@;'; put 'put ''dTc5ZGVcdTc5ZGRcdTdhODZcdTdhODlcdTdhODVcdTdhOGJcdTdhOGNcdTdhOGFcdTdhODdcdTdhZDhcdTdiMTAiXSxbImQzNDAiLCJcdTdiMDRcdTdiMTNcdTdiMDVcdTdiMGZcdTdiMDhcdTdiMGFcdTdiMGVcdTdiMDlcdTdiMTJcdTdjODRcdTdjOTFcdTdjOGFcdTdjOGNcdTdjODhcdTdj''@;'; put 'put ''OGRcdTdjODVcdTdkMWVcdTdkMWRcdTdkMTFcdTdkMGVcdTdkMThcdTdkMTZcdTdkMTNcdTdkMWZcdTdkMTJcdTdkMGZcdTdkMGNcdTdmNWNcdTdmNjFcdTdmNWVcdTdmNjBcdTdmNWRcdTdmNWJcdTdmOTZcdTdmOTJcdTdmYzNcdTdmYzJcdTdmYzBcdTgwMTZcdTgwM2VcdTgwMzlcdTgwZmFc''@;'; put 'put ''dTgwZjJcdTgwZjlcdTgwZjVcdTgxMDFcdTgwZmJcdTgxMDBcdTgyMDFcdTgyMmZcdTgyMjVcdTgzMzNcdTgzMmRcdTgzNDRcdTgzMTlcdTgzNTFcdTgzMjVcdTgzNTZcdTgzM2ZcdTgzNDFcdTgzMjZcdTgzMWNcdTgzMjIiXSxbImQzYTEiLCJcdTgzNDJcdTgzNGVcdTgzMWJcdTgzMmFcdTgz''@;'; put 'put ''MDhcdTgzM2NcdTgzNGRcdTgzMTZcdTgzMjRcdTgzMjBcdTgzMzdcdTgzMmZcdTgzMjlcdTgzNDdcdTgzNDVcdTgzNGNcdTgzNTNcdTgzMWVcdTgzMmNcdTgzNGJcdTgzMjdcdTgzNDhcdTg2NTNcdTg2NTJcdTg2YTJcdTg2YThcdTg2OTZcdTg2OGRcdTg2OTFcdTg2OWVcdTg2ODdcdTg2OTdc''@;'; put 'put ''dTg2ODZcdTg2OGJcdTg2OWFcdTg2ODVcdTg2YTVcdTg2OTlcdTg2YTFcdTg2YTdcdTg2OTVcdTg2OThcdTg2OGVcdTg2OWRcdTg2OTBcdTg2OTRcdTg4NDNcdTg4NDRcdTg4NmRcdTg4NzVcdTg4NzZcdTg4NzJcdTg4ODBcdTg4NzFcdTg4N2ZcdTg4NmZcdTg4ODNcdTg4N2VcdTg4NzRcdTg4''@;'; put 'put ''N2NcdThhMTJcdThjNDdcdThjNTdcdThjN2JcdThjYTRcdThjYTNcdThkNzZcdThkNzhcdThkYjVcdThkYjdcdThkYjZcdThlZDFcdThlZDNcdThmZmVcdThmZjVcdTkwMDJcdThmZmZcdThmZmJcdTkwMDRcdThmZmNcdThmZjZcdTkwZDZcdTkwZTBcdTkwZDlcdTkwZGFcdTkwZTNcdTkwZGZc''@;'; put 'put ''dTkwZTVcdTkwZDhcdTkwZGJcdTkwZDdcdTkwZGNcdTkwZTRcdTkxNTAiXSxbImQ0NDAiLCJcdTkxNGVcdTkxNGZcdTkxZDVcdTkxZTJcdTkxZGFcdTk2NWNcdTk2NWZcdTk2YmNcdTk4ZTNcdTlhZGZcdTliMmZcdTRlN2ZcdTUwNzBcdTUwNmFcdTUwNjFcdTUwNWVcdTUwNjBcdTUwNTNcdTUw''@;'; put 'put ''NGJcdTUwNWRcdTUwNzJcdTUwNDhcdTUwNGRcdTUwNDFcdTUwNWJcdTUwNGFcdTUwNjJcdTUwMTVcdTUwNDVcdTUwNWZcdTUwNjlcdTUwNmJcdTUwNjNcdTUwNjRcdTUwNDZcdTUwNDBcdTUwNmVcdTUwNzNcdTUwNTdcdTUwNTFcdTUxZDBcdTUyNmJcdTUyNmRcdTUyNmNcdTUyNmVcdTUyZDZc''@;'; put 'put ''dTUyZDNcdTUzMmRcdTUzOWNcdTU1NzVcdTU1NzZcdTU1M2NcdTU1NGRcdTU1NTBcdTU1MzRcdTU1MmFcdTU1NTFcdTU1NjJcdTU1MzZcdTU1MzVcdTU1MzBcdTU1NTJcdTU1NDUiXSxbImQ0YTEiLCJcdTU1MGNcdTU1MzJcdTU1NjVcdTU1NGVcdTU1MzlcdTU1NDhcdTU1MmRcdTU1M2JcdTU1''@;'; put 'put ''NDBcdTU1NGJcdTU3MGFcdTU3MDdcdTU3ZmJcdTU4MTRcdTU3ZTJcdTU3ZjZcdTU3ZGNcdTU3ZjRcdTU4MDBcdTU3ZWRcdTU3ZmRcdTU4MDhcdTU3ZjhcdTU4MGJcdTU3ZjNcdTU3Y2ZcdTU4MDdcdTU3ZWVcdTU3ZTNcdTU3ZjJcdTU3ZTVcdTU3ZWNcdTU3ZTFcdTU4MGVcdTU3ZmNcdTU4MTBc''@;'; put 'put ''dTU3ZTdcdTU4MDFcdTU4MGNcdTU3ZjFcdTU3ZTlcdTU3ZjBcdTU4MGRcdTU4MDRcdTU5NWNcdTVhNjBcdTVhNThcdTVhNTVcdTVhNjdcdTVhNWVcdTVhMzhcdTVhMzVcdTVhNmRcdTVhNTBcdTVhNWZcdTVhNjVcdTVhNmNcdTVhNTNcdTVhNjRcdTVhNTdcdTVhNDNcdTVhNWRcdTVhNTJcdTVh''@;'; put 'put ''NDRcdTVhNWJcdTVhNDhcdTVhOGVcdTVhM2VcdTVhNGRcdTVhMzlcdTVhNGNcdTVhNzBcdTVhNjlcdTVhNDdcdTVhNTFcdTVhNTZcdTVhNDJcdTVhNWNcdTViNzJcdTViNmVcdTViYzFcdTViYzBcdTVjNTlcdTVkMWVcdTVkMGJcdTVkMWRcdTVkMWFcdTVkMjBcdTVkMGNcdTVkMjhcdTVkMGRc''@;'; put 'put ''dTVkMjZcdTVkMjVcdTVkMGYiXSxbImQ1NDAiLCJcdTVkMzBcdTVkMTJcdTVkMjNcdTVkMWZcdTVkMmVcdTVlM2VcdTVlMzRcdTVlYjFcdTVlYjRcdTVlYjlcdTVlYjJcdTVlYjNcdTVmMzZcdTVmMzhcdTVmOWJcdTVmOTZcdTVmOWZcdTYwOGFcdTYwOTBcdTYwODZcdTYwYmVcdTYwYjBcdTYw''@;'; put 'put ''YmFcdTYwZDNcdTYwZDRcdTYwY2ZcdTYwZTRcdTYwZDlcdTYwZGRcdTYwYzhcdTYwYjFcdTYwZGJcdTYwYjdcdTYwY2FcdTYwYmZcdTYwYzNcdTYwY2RcdTYwYzBcdTYzMzJcdTYzNjVcdTYzOGFcdTYzODJcdTYzN2RcdTYzYmRcdTYzOWVcdTYzYWRcdTYzOWRcdTYzOTdcdTYzYWJcdTYzOGVc''@;'; put 'put ''dTYzNmZcdTYzODdcdTYzOTBcdTYzNmVcdTYzYWZcdTYzNzVcdTYzOWNcdTYzNmRcdTYzYWVcdTYzN2NcdTYzYTRcdTYzM2JcdTYzOWYiXSxbImQ1YTEiLCJcdTYzNzhcdTYzODVcdTYzODFcdTYzOTFcdTYzOGRcdTYzNzBcdTY1NTNcdTY1Y2RcdTY2NjVcdTY2NjFcdTY2NWJcdTY2NTlcdTY2''@;'; put 'put ''NWNcdTY2NjJcdTY3MThcdTY4NzlcdTY4ODdcdTY4OTBcdTY4OWNcdTY4NmRcdTY4NmVcdTY4YWVcdTY4YWJcdTY5NTZcdTY4NmZcdTY4YTNcdTY4YWNcdTY4YTlcdTY4NzVcdTY4NzRcdTY4YjJcdTY4OGZcdTY4NzdcdTY4OTJcdTY4N2NcdTY4NmJcdTY4NzJcdTY4YWFcdTY4ODBcdTY4NzFc''@;'; put 'put ''dTY4N2VcdTY4OWJcdTY4OTZcdTY4OGJcdTY4YTBcdTY4ODlcdTY4YTRcdTY4NzhcdTY4N2JcdTY4OTFcdTY4OGNcdTY4OGFcdTY4N2RcdTZiMzZcdTZiMzNcdTZiMzdcdTZiMzhcdTZiOTFcdTZiOGZcdTZiOGRcdTZiOGVcdTZiOGNcdTZjMmFcdTZkYzBcdTZkYWJcdTZkYjRcdTZkYjNcdTZl''@;'; put 'put ''NzRcdTZkYWNcdTZkZTlcdTZkZTJcdTZkYjdcdTZkZjZcdTZkZDRcdTZlMDBcdTZkYzhcdTZkZTBcdTZkZGZcdTZkZDZcdTZkYmVcdTZkZTVcdTZkZGNcdTZkZGRcdTZkZGJcdTZkZjRcdTZkY2FcdTZkYmRcdTZkZWRcdTZkZjBcdTZkYmFcdTZkZDVcdTZkYzJcdTZkY2ZcdTZkYzkiXSxbImQ2''@;'; put 'put ''NDAiLCJcdTZkZDBcdTZkZjJcdTZkZDNcdTZkZmRcdTZkZDdcdTZkY2RcdTZkZTNcdTZkYmJcdTcwZmFcdTcxMGRcdTcwZjdcdTcxMTdcdTcwZjRcdTcxMGNcdTcwZjBcdTcxMDRcdTcwZjNcdTcxMTBcdTcwZmNcdTcwZmZcdTcxMDZcdTcxMTNcdTcxMDBcdTcwZjhcdTcwZjZcdTcxMGJcdTcx''@;'; put 'put ''MDJcdTcxMGVcdTcyN2VcdTcyN2JcdTcyN2NcdTcyN2ZcdTczMWRcdTczMTdcdTczMDdcdTczMTFcdTczMThcdTczMGFcdTczMDhcdTcyZmZcdTczMGZcdTczMWVcdTczODhcdTczZjZcdTczZjhcdTczZjVcdTc0MDRcdTc0MDFcdTczZmRcdTc0MDdcdTc0MDBcdTczZmFcdTczZmNcdTczZmZc''@;'; put 'put ''dTc0MGNcdTc0MGJcdTczZjRcdTc0MDhcdTc1NjRcdTc1NjNcdTc1Y2VcdTc1ZDJcdTc1Y2YiXSxbImQ2YTEiLCJcdTc1Y2JcdTc1Y2NcdTc1ZDFcdTc1ZDBcdTc2OGZcdTc2ODlcdTc2ZDNcdTc3MzlcdTc3MmZcdTc3MmRcdTc3MzFcdTc3MzJcdTc3MzRcdTc3MzNcdTc3M2RcdTc3MjVcdTc3''@;'; put 'put ''M2JcdTc3MzVcdTc4NDhcdTc4NTJcdTc4NDlcdTc4NGRcdTc4NGFcdTc4NGNcdTc4MjZcdTc4NDVcdTc4NTBcdTc5NjRcdTc5NjdcdTc5NjlcdTc5NmFcdTc5NjNcdTc5NmJcdTc5NjFcdTc5YmJcdTc5ZmFcdTc5ZjhcdTc5ZjZcdTc5ZjdcdTdhOGZcdTdhOTRcdTdhOTBcdTdiMzVcdTdiNDdc''@;'; put 'put ''dTdiMzRcdTdiMjVcdTdiMzBcdTdiMjJcdTdiMjRcdTdiMzNcdTdiMThcdTdiMmFcdTdiMWRcdTdiMzFcdTdiMmJcdTdiMmRcdTdiMmZcdTdiMzJcdTdiMzhcdTdiMWFcdTdiMjNcdTdjOTRcdTdjOThcdTdjOTZcdTdjYTNcdTdkMzVcdTdkM2RcdTdkMzhcdTdkMzZcdTdkM2FcdTdkNDVcdTdk''@;'; put 'put ''MmNcdTdkMjlcdTdkNDFcdTdkNDdcdTdkM2VcdTdkM2ZcdTdkNGFcdTdkM2JcdTdkMjhcdTdmNjNcdTdmOTVcdTdmOWNcdTdmOWRcdTdmOWJcdTdmY2FcdTdmY2JcdTdmY2RcdTdmZDBcdTdmZDFcdTdmYzdcdTdmY2ZcdTdmYzlcdTgwMWYiXSxbImQ3NDAiLCJcdTgwMWVcdTgwMWJcdTgwNDdc''@;'; put 'put ''dTgwNDNcdTgwNDhcdTgxMThcdTgxMjVcdTgxMTlcdTgxMWJcdTgxMmRcdTgxMWZcdTgxMmNcdTgxMWVcdTgxMjFcdTgxMTVcdTgxMjdcdTgxMWRcdTgxMjJcdTgyMTFcdTgyMzhcdTgyMzNcdTgyM2FcdTgyMzRcdTgyMzJcdTgyNzRcdTgzOTBcdTgzYTNcdTgzYThcdTgzOGRcdTgzN2FcdTgz''@;'; put 'put ''NzNcdTgzYTRcdTgzNzRcdTgzOGZcdTgzODFcdTgzOTVcdTgzOTlcdTgzNzVcdTgzOTRcdTgzYTlcdTgzN2RcdTgzODNcdTgzOGNcdTgzOWRcdTgzOWJcdTgzYWFcdTgzOGJcdTgzN2VcdTgzYTVcdTgzYWZcdTgzODhcdTgzOTdcdTgzYjBcdTgzN2ZcdTgzYTZcdTgzODdcdTgzYWVcdTgzNzZc''@;'; put 'put ''dTgzOWFcdTg2NTlcdTg2NTZcdTg2YmZcdTg2YjciXSxbImQ3YTEiLCJcdTg2YzJcdTg2YzFcdTg2YzVcdTg2YmFcdTg2YjBcdTg2YzhcdTg2YjlcdTg2YjNcdTg2YjhcdTg2Y2NcdTg2YjRcdTg2YmJcdTg2YmNcdTg2YzNcdTg2YmRcdTg2YmVcdTg4NTJcdTg4ODlcdTg4OTVcdTg4YThcdTg4''@;'; put 'put ''YTJcdTg4YWFcdTg4OWFcdTg4OTFcdTg4YTFcdTg4OWZcdTg4OThcdTg4YTdcdTg4OTlcdTg4OWJcdTg4OTdcdTg4YTRcdTg4YWNcdTg4OGNcdTg4OTNcdTg4OGVcdTg5ODJcdTg5ZDZcdTg5ZDlcdTg5ZDVcdThhMzBcdThhMjdcdThhMmNcdThhMWVcdThjMzlcdThjM2JcdThjNWNcdThjNWRc''@;'; put 'put ''dThjN2RcdThjYTVcdThkN2RcdThkN2JcdThkNzlcdThkYmNcdThkYzJcdThkYjlcdThkYmZcdThkYzFcdThlZDhcdThlZGVcdThlZGRcdThlZGNcdThlZDdcdThlZTBcdThlZTFcdTkwMjRcdTkwMGJcdTkwMTFcdTkwMWNcdTkwMGNcdTkwMjFcdTkwZWZcdTkwZWFcdTkwZjBcdTkwZjRcdTkw''@;'; put 'put ''ZjJcdTkwZjNcdTkwZDRcdTkwZWJcdTkwZWNcdTkwZTlcdTkxNTZcdTkxNThcdTkxNWFcdTkxNTNcdTkxNTVcdTkxZWNcdTkxZjRcdTkxZjFcdTkxZjNcdTkxZjhcdTkxZTRcdTkxZjlcdTkxZWEiXSxbImQ4NDAiLCJcdTkxZWJcdTkxZjdcdTkxZThcdTkxZWVcdTk1N2FcdTk1ODZcdTk1ODhc''@;'; put 'put ''dTk2N2NcdTk2NmRcdTk2NmJcdTk2NzFcdTk2NmZcdTk2YmZcdTk3NmFcdTk4MDRcdTk4ZTVcdTk5OTdcdTUwOWJcdTUwOTVcdTUwOTRcdTUwOWVcdTUwOGJcdTUwYTNcdTUwODNcdTUwOGNcdTUwOGVcdTUwOWRcdTUwNjhcdTUwOWNcdTUwOTJcdTUwODJcdTUwODdcdTUxNWZcdTUxZDRcdTUz''@;'; put 'put ''MTJcdTUzMTFcdTUzYTRcdTUzYTdcdTU1OTFcdTU1YThcdTU1YTVcdTU1YWRcdTU1NzdcdTU2NDVcdTU1YTJcdTU1OTNcdTU1ODhcdTU1OGZcdTU1YjVcdTU1ODFcdTU1YTNcdTU1OTJcdTU1YTRcdTU1N2RcdTU1OGNcdTU1YTZcdTU1N2ZcdTU1OTVcdTU1YTFcdTU1OGVcdTU3MGNcdTU4Mjlc''@;'; put 'put ''dTU4MzciXSxbImQ4YTEiLCJcdTU4MTlcdTU4MWVcdTU4MjdcdTU4MjNcdTU4MjhcdTU3ZjVcdTU4NDhcdTU4MjVcdTU4MWNcdTU4MWJcdTU4MzNcdTU4M2ZcdTU4MzZcdTU4MmVcdTU4MzlcdTU4MzhcdTU4MmRcdTU4MmNcdTU4M2JcdTU5NjFcdTVhYWZcdTVhOTRcdTVhOWZcdTVhN2FcdTVh''@;'; put 'put ''YTJcdTVhOWVcdTVhNzhcdTVhYTZcdTVhN2NcdTVhYTVcdTVhYWNcdTVhOTVcdTVhYWVcdTVhMzdcdTVhODRcdTVhOGFcdTVhOTdcdTVhODNcdTVhOGJcdTVhYTlcdTVhN2JcdTVhN2RcdTVhOGNcdTVhOWNcdTVhOGZcdTVhOTNcdTVhOWRcdTViZWFcdTViY2RcdTViY2JcdTViZDRcdTViZDFc''@;'; put 'put ''dTViY2FcdTViY2VcdTVjMGNcdTVjMzBcdTVkMzdcdTVkNDNcdTVkNmJcdTVkNDFcdTVkNGJcdTVkM2ZcdTVkMzVcdTVkNTFcdTVkNGVcdTVkNTVcdTVkMzNcdTVkM2FcdTVkNTJcdTVkM2RcdTVkMzFcdTVkNTlcdTVkNDJcdTVkMzlcdTVkNDlcdTVkMzhcdTVkM2NcdTVkMzJcdTVkMzZcdTVk''@;'; put 'put ''NDBcdTVkNDVcdTVlNDRcdTVlNDFcdTVmNThcdTVmYTZcdTVmYTVcdTVmYWJcdTYwYzlcdTYwYjlcdTYwY2NcdTYwZTJcdTYwY2VcdTYwYzRcdTYxMTQiXSxbImQ5NDAiLCJcdTYwZjJcdTYxMGFcdTYxMTZcdTYxMDVcdTYwZjVcdTYxMTNcdTYwZjhcdTYwZmNcdTYwZmVcdTYwYzFcdTYxMDNc''@;'; put 'put ''dTYxMThcdTYxMWRcdTYxMTBcdTYwZmZcdTYxMDRcdTYxMGJcdTYyNGFcdTYzOTRcdTYzYjFcdTYzYjBcdTYzY2VcdTYzZTVcdTYzZThcdTYzZWZcdTYzYzNcdTY0OWRcdTYzZjNcdTYzY2FcdTYzZTBcdTYzZjZcdTYzZDVcdTYzZjJcdTYzZjVcdTY0NjFcdTYzZGZcdTYzYmVcdTYzZGRcdTYz''@;'; put 'put ''ZGNcdTYzYzRcdTYzZDhcdTYzZDNcdTYzYzJcdTYzYzdcdTYzY2NcdTYzY2JcdTYzYzhcdTYzZjBcdTYzZDdcdTYzZDlcdTY1MzJcdTY1NjdcdTY1NmFcdTY1NjRcdTY1NWNcdTY1NjhcdTY1NjVcdTY1OGNcdTY1OWRcdTY1OWVcdTY1YWVcdTY1ZDBcdTY1ZDIiXSxbImQ5YTEiLCJcdTY2N2Nc''@;'; put 'put ''dTY2NmNcdTY2N2JcdTY2ODBcdTY2NzFcdTY2NzlcdTY2NmFcdTY2NzJcdTY3MDFcdTY5MGNcdTY4ZDNcdTY5MDRcdTY4ZGNcdTY5MmFcdTY4ZWNcdTY4ZWFcdTY4ZjFcdTY5MGZcdTY4ZDZcdTY4ZjdcdTY4ZWJcdTY4ZTRcdTY4ZjZcdTY5MTNcdTY5MTBcdTY4ZjNcdTY4ZTFcdTY5MDdcdTY4''@;'; put 'put ''Y2NcdTY5MDhcdTY5NzBcdTY4YjRcdTY5MTFcdTY4ZWZcdTY4YzZcdTY5MTRcdTY4ZjhcdTY4ZDBcdTY4ZmRcdTY4ZmNcdTY4ZThcdTY5MGJcdTY5MGFcdTY5MTdcdTY4Y2VcdTY4YzhcdTY4ZGRcdTY4ZGVcdTY4ZTZcdTY4ZjRcdTY4ZDFcdTY5MDZcdTY4ZDRcdTY4ZTlcdTY5MTVcdTY5MjVc''@;'; put 'put ''dTY4YzdcdTZiMzlcdTZiM2JcdTZiM2ZcdTZiM2NcdTZiOTRcdTZiOTdcdTZiOTlcdTZiOTVcdTZiYmRcdTZiZjBcdTZiZjJcdTZiZjNcdTZjMzBcdTZkZmNcdTZlNDZcdTZlNDdcdTZlMWZcdTZlNDlcdTZlODhcdTZlM2NcdTZlM2RcdTZlNDVcdTZlNjJcdTZlMmJcdTZlM2ZcdTZlNDFcdTZl''@;'; put 'put ''NWRcdTZlNzNcdTZlMWNcdTZlMzNcdTZlNGJcdTZlNDBcdTZlNTFcdTZlM2JcdTZlMDNcdTZlMmVcdTZlNWUiXSxbImRhNDAiLCJcdTZlNjhcdTZlNWNcdTZlNjFcdTZlMzFcdTZlMjhcdTZlNjBcdTZlNzFcdTZlNmJcdTZlMzlcdTZlMjJcdTZlMzBcdTZlNTNcdTZlNjVcdTZlMjdcdTZlNzhc''@;'; put 'put ''dTZlNjRcdTZlNzdcdTZlNTVcdTZlNzlcdTZlNTJcdTZlNjZcdTZlMzVcdTZlMzZcdTZlNWFcdTcxMjBcdTcxMWVcdTcxMmZcdTcwZmJcdTcxMmVcdTcxMzFcdTcxMjNcdTcxMjVcdTcxMjJcdTcxMzJcdTcxMWZcdTcxMjhcdTcxM2FcdTcxMWJcdTcyNGJcdTcyNWFcdTcyODhcdTcyODlcdTcy''@;'; put 'put ''ODZcdTcyODVcdTcyOGJcdTczMTJcdTczMGJcdTczMzBcdTczMjJcdTczMzFcdTczMzNcdTczMjdcdTczMzJcdTczMmRcdTczMjZcdTczMjNcdTczMzVcdTczMGNcdTc0MmVcdTc0MmNcdTc0MzBcdTc0MmJcdTc0MTYiXSxbImRhYTEiLCJcdTc0MWFcdTc0MjFcdTc0MmRcdTc0MzFcdTc0MjRc''@;'; put 'put ''dTc0MjNcdTc0MWRcdTc0MjlcdTc0MjBcdTc0MzJcdTc0ZmJcdTc1MmZcdTc1NmZcdTc1NmNcdTc1ZTdcdTc1ZGFcdTc1ZTFcdTc1ZTZcdTc1ZGRcdTc1ZGZcdTc1ZTRcdTc1ZDdcdTc2OTVcdTc2OTJcdTc2ZGFcdTc3NDZcdTc3NDdcdTc3NDRcdTc3NGRcdTc3NDVcdTc3NGFcdTc3NGVcdTc3''@;'; put 'put ''NGJcdTc3NGNcdTc3ZGVcdTc3ZWNcdTc4NjBcdTc4NjRcdTc4NjVcdTc4NWNcdTc4NmRcdTc4NzFcdTc4NmFcdTc4NmVcdTc4NzBcdTc4NjlcdTc4NjhcdTc4NWVcdTc4NjJcdTc5NzRcdTc5NzNcdTc5NzJcdTc5NzBcdTdhMDJcdTdhMGFcdTdhMDNcdTdhMGNcdTdhMDRcdTdhOTlcdTdhZTZc''@;'; put 'put ''dTdhZTRcdTdiNGFcdTdiM2JcdTdiNDRcdTdiNDhcdTdiNGNcdTdiNGVcdTdiNDBcdTdiNThcdTdiNDVcdTdjYTJcdTdjOWVcdTdjYThcdTdjYTFcdTdkNThcdTdkNmZcdTdkNjNcdTdkNTNcdTdkNTZcdTdkNjdcdTdkNmFcdTdkNGZcdTdkNmRcdTdkNWNcdTdkNmJcdTdkNTJcdTdkNTRcdTdk''@;'; put 'put ''NjlcdTdkNTFcdTdkNWZcdTdkNGVcdTdmM2VcdTdmM2ZcdTdmNjUiXSxbImRiNDAiLCJcdTdmNjZcdTdmYTJcdTdmYTBcdTdmYTFcdTdmZDdcdTgwNTFcdTgwNGZcdTgwNTBcdTgwZmVcdTgwZDRcdTgxNDNcdTgxNGFcdTgxNTJcdTgxNGZcdTgxNDdcdTgxM2RcdTgxNGRcdTgxM2FcdTgxZTZc''@;'; put 'put ''dTgxZWVcdTgxZjdcdTgxZjhcdTgxZjlcdTgyMDRcdTgyM2NcdTgyM2RcdTgyM2ZcdTgyNzVcdTgzM2JcdTgzY2ZcdTgzZjlcdTg0MjNcdTgzYzBcdTgzZThcdTg0MTJcdTgzZTdcdTgzZTRcdTgzZmNcdTgzZjZcdTg0MTBcdTgzYzZcdTgzYzhcdTgzZWJcdTgzZTNcdTgzYmZcdTg0MDFcdTgz''@;'; put 'put ''ZGRcdTgzZTVcdTgzZDhcdTgzZmZcdTgzZTFcdTgzY2JcdTgzY2VcdTgzZDZcdTgzZjVcdTgzYzlcdTg0MDlcdTg0MGZcdTgzZGVcdTg0MTFcdTg0MDZcdTgzYzJcdTgzZjMiXSxbImRiYTEiLCJcdTgzZDVcdTgzZmFcdTgzYzdcdTgzZDFcdTgzZWFcdTg0MTNcdTgzYzNcdTgzZWNcdTgzZWVc''@;'; put 'put ''dTgzYzRcdTgzZmJcdTgzZDdcdTgzZTJcdTg0MWJcdTgzZGJcdTgzZmVcdTg2ZDhcdTg2ZTJcdTg2ZTZcdTg2ZDNcdTg2ZTNcdTg2ZGFcdTg2ZWFcdTg2ZGRcdTg2ZWJcdTg2ZGNcdTg2ZWNcdTg2ZTlcdTg2ZDdcdTg2ZThcdTg2ZDFcdTg4NDhcdTg4NTZcdTg4NTVcdTg4YmFcdTg4ZDdcdTg4''@;'; put 'put ''YjlcdTg4YjhcdTg4YzBcdTg4YmVcdTg4YjZcdTg4YmNcdTg4YjdcdTg4YmRcdTg4YjJcdTg5MDFcdTg4YzlcdTg5OTVcdTg5OThcdTg5OTdcdTg5ZGRcdTg5ZGFcdTg5ZGJcdThhNGVcdThhNGRcdThhMzlcdThhNTlcdThhNDBcdThhNTdcdThhNThcdThhNDRcdThhNDVcdThhNTJcdThhNDhc''@;'; put 'put ''dThhNTFcdThhNGFcdThhNGNcdThhNGZcdThjNWZcdThjODFcdThjODBcdThjYmFcdThjYmVcdThjYjBcdThjYjlcdThjYjVcdThkODRcdThkODBcdThkODlcdThkZDhcdThkZDNcdThkY2RcdThkYzdcdThkZDZcdThkZGNcdThkY2ZcdThkZDVcdThkZDlcdThkYzhcdThkZDdcdThkYzVcdThl''@;'; put 'put ''ZWZcdThlZjdcdThlZmEiXSxbImRjNDAiLCJcdThlZjlcdThlZTZcdThlZWVcdThlZTVcdThlZjVcdThlZTdcdThlZThcdThlZjZcdThlZWJcdThlZjFcdThlZWNcdThlZjRcdThlZTlcdTkwMmRcdTkwMzRcdTkwMmZcdTkxMDZcdTkxMmNcdTkxMDRcdTkwZmZcdTkwZmNcdTkxMDhcdTkwZjlc''@;'; put 'put ''dTkwZmJcdTkxMDFcdTkxMDBcdTkxMDdcdTkxMDVcdTkxMDNcdTkxNjFcdTkxNjRcdTkxNWZcdTkxNjJcdTkxNjBcdTkyMDFcdTkyMGFcdTkyMjVcdTkyMDNcdTkyMWFcdTkyMjZcdTkyMGZcdTkyMGNcdTkyMDBcdTkyMTJcdTkxZmZcdTkxZmRcdTkyMDZcdTkyMDRcdTkyMjdcdTkyMDJcdTky''@;'; put 'put ''MWNcdTkyMjRcdTkyMTlcdTkyMTdcdTkyMDVcdTkyMTZcdTk1N2JcdTk1OGRcdTk1OGNcdTk1OTBcdTk2ODdcdTk2N2VcdTk2ODgiXSxbImRjYTEiLCJcdTk2ODlcdTk2ODNcdTk2ODBcdTk2YzJcdTk2YzhcdTk2YzNcdTk2ZjFcdTk2ZjBcdTk3NmNcdTk3NzBcdTk3NmVcdTk4MDdcdTk4YTlc''@;'; put 'put ''dTk4ZWJcdTljZTZcdTllZjlcdTRlODNcdTRlODRcdTRlYjZcdTUwYmRcdTUwYmZcdTUwYzZcdTUwYWVcdTUwYzRcdTUwY2FcdTUwYjRcdTUwYzhcdTUwYzJcdTUwYjBcdTUwYzFcdTUwYmFcdTUwYjFcdTUwY2JcdTUwYzlcdTUwYjZcdTUwYjhcdTUxZDdcdTUyN2FcdTUyNzhcdTUyN2JcdTUy''@;'; put 'put ''N2NcdTU1YzNcdTU1ZGJcdTU1Y2NcdTU1ZDBcdTU1Y2JcdTU1Y2FcdTU1ZGRcdTU1YzBcdTU1ZDRcdTU1YzRcdTU1ZTlcdTU1YmZcdTU1ZDJcdTU1OGRcdTU1Y2ZcdTU1ZDVcdTU1ZTJcdTU1ZDZcdTU1YzhcdTU1ZjJcdTU1Y2RcdTU1ZDlcdTU1YzJcdTU3MTRcdTU4NTNcdTU4NjhcdTU4NjRc''@;'; put 'put ''dTU4NGZcdTU4NGRcdTU4NDlcdTU4NmZcdTU4NTVcdTU4NGVcdTU4NWRcdTU4NTlcdTU4NjVcdTU4NWJcdTU4M2RcdTU4NjNcdTU4NzFcdTU4ZmNcdTVhYzdcdTVhYzRcdTVhY2JcdTVhYmFcdTVhYjhcdTVhYjFcdTVhYjVcdTVhYjBcdTVhYmZcdTVhYzhcdTVhYmJcdTVhYzYiXSxbImRkNDAi''@;'; put 'put ''LCJcdTVhYjdcdTVhYzBcdTVhY2FcdTVhYjRcdTVhYjZcdTVhY2RcdTVhYjlcdTVhOTBcdTViZDZcdTViZDhcdTViZDlcdTVjMWZcdTVjMzNcdTVkNzFcdTVkNjNcdTVkNGFcdTVkNjVcdTVkNzJcdTVkNmNcdTVkNWVcdTVkNjhcdTVkNjdcdTVkNjJcdTVkZjBcdTVlNGZcdTVlNGVcdTVlNGFc''@;'; put 'put ''dTVlNGRcdTVlNGJcdTVlYzVcdTVlY2NcdTVlYzZcdTVlY2JcdTVlYzdcdTVmNDBcdTVmYWZcdTVmYWRcdTYwZjdcdTYxNDlcdTYxNGFcdTYxMmJcdTYxNDVcdTYxMzZcdTYxMzJcdTYxMmVcdTYxNDZcdTYxMmZcdTYxNGZcdTYxMjlcdTYxNDBcdTYyMjBcdTkxNjhcdTYyMjNcdTYyMjVcdTYy''@;'; put 'put ''MjRcdTYzYzVcdTYzZjFcdTYzZWJcdTY0MTBcdTY0MTJcdTY0MDlcdTY0MjBcdTY0MjQiXSxbImRkYTEiLCJcdTY0MzNcdTY0NDNcdTY0MWZcdTY0MTVcdTY0MThcdTY0MzlcdTY0MzdcdTY0MjJcdTY0MjNcdTY0MGNcdTY0MjZcdTY0MzBcdTY0MjhcdTY0NDFcdTY0MzVcdTY0MmZcdTY0MGFc''@;'; put 'put ''dTY0MWFcdTY0NDBcdTY0MjVcdTY0MjdcdTY0MGJcdTYzZTdcdTY0MWJcdTY0MmVcdTY0MjFcdTY0MGVcdTY1NmZcdTY1OTJcdTY1ZDNcdTY2ODZcdTY2OGNcdTY2OTVcdTY2OTBcdTY2OGJcdTY2OGFcdTY2OTlcdTY2OTRcdTY2NzhcdTY3MjBcdTY5NjZcdTY5NWZcdTY5MzhcdTY5NGVcdTY5''@;'; put 'put ''NjJcdTY5NzFcdTY5M2ZcdTY5NDVcdTY5NmFcdTY5MzlcdTY5NDJcdTY5NTdcdTY5NTlcdTY5N2FcdTY5NDhcdTY5NDlcdTY5MzVcdTY5NmNcdTY5MzNcdTY5M2RcdTY5NjVcdTY4ZjBcdTY5NzhcdTY5MzRcdTY5NjlcdTY5NDBcdTY5NmZcdTY5NDRcdTY5NzZcdTY5NThcdTY5NDFcdTY5NzRc''@;'; put 'put ''dTY5NGNcdTY5M2JcdTY5NGJcdTY5MzdcdTY5NWNcdTY5NGZcdTY5NTFcdTY5MzJcdTY5NTJcdTY5MmZcdTY5N2JcdTY5M2NcdTZiNDZcdTZiNDVcdTZiNDNcdTZiNDJcdTZiNDhcdTZiNDFcdTZiOWJcdWZhMGRcdTZiZmJcdTZiZmMiXSxbImRlNDAiLCJcdTZiZjlcdTZiZjdcdTZiZjhcdTZl''@;'; put 'put ''OWJcdTZlZDZcdTZlYzhcdTZlOGZcdTZlYzBcdTZlOWZcdTZlOTNcdTZlOTRcdTZlYTBcdTZlYjFcdTZlYjlcdTZlYzZcdTZlZDJcdTZlYmRcdTZlYzFcdTZlOWVcdTZlYzlcdTZlYjdcdTZlYjBcdTZlY2RcdTZlYTZcdTZlY2ZcdTZlYjJcdTZlYmVcdTZlYzNcdTZlZGNcdTZlZDhcdTZlOTlc''@;'; put 'put ''dTZlOTJcdTZlOGVcdTZlOGRcdTZlYTRcdTZlYTFcdTZlYmZcdTZlYjNcdTZlZDBcdTZlY2FcdTZlOTdcdTZlYWVcdTZlYTNcdTcxNDdcdTcxNTRcdTcxNTJcdTcxNjNcdTcxNjBcdTcxNDFcdTcxNWRcdTcxNjJcdTcxNzJcdTcxNzhcdTcxNmFcdTcxNjFcdTcxNDJcdTcxNThcdTcxNDNcdTcx''@;'; put 'put ''NGJcdTcxNzBcdTcxNWZcdTcxNTBcdTcxNTMiXSxbImRlYTEiLCJcdTcxNDRcdTcxNGRcdTcxNWFcdTcyNGZcdTcyOGRcdTcyOGNcdTcyOTFcdTcyOTBcdTcyOGVcdTczM2NcdTczNDJcdTczM2JcdTczM2FcdTczNDBcdTczNGFcdTczNDlcdTc0NDRcdTc0NGFcdTc0NGJcdTc0NTJcdTc0NTFc''@;'; put 'put ''dTc0NTdcdTc0NDBcdTc0NGZcdTc0NTBcdTc0NGVcdTc0NDJcdTc0NDZcdTc0NGRcdTc0NTRcdTc0ZTFcdTc0ZmZcdTc0ZmVcdTc0ZmRcdTc1MWRcdTc1NzlcdTc1NzdcdTY5ODNcdTc1ZWZcdTc2MGZcdTc2MDNcdTc1ZjdcdTc1ZmVcdTc1ZmNcdTc1ZjlcdTc1ZjhcdTc2MTBcdTc1ZmJcdTc1''@;'; put 'put ''ZjZcdTc1ZWRcdTc1ZjVcdTc1ZmRcdTc2OTlcdTc2YjVcdTc2ZGRcdTc3NTVcdTc3NWZcdTc3NjBcdTc3NTJcdTc3NTZcdTc3NWFcdTc3NjlcdTc3NjdcdTc3NTRcdTc3NTlcdTc3NmRcdTc3ZTBcdTc4ODdcdTc4OWFcdTc4OTRcdTc4OGZcdTc4ODRcdTc4OTVcdTc4ODVcdTc4ODZcdTc4YTFc''@;'; put 'put ''dTc4ODNcdTc4NzlcdTc4OTlcdTc4ODBcdTc4OTZcdTc4N2JcdTc5N2NcdTc5ODJcdTc5N2RcdTc5NzlcdTdhMTFcdTdhMThcdTdhMTlcdTdhMTJcdTdhMTdcdTdhMTVcdTdhMjJcdTdhMTMiXSxbImRmNDAiLCJcdTdhMWJcdTdhMTBcdTdhYTNcdTdhYTJcdTdhOWVcdTdhZWJcdTdiNjZcdTdi''@;'; put 'put ''NjRcdTdiNmRcdTdiNzRcdTdiNjlcdTdiNzJcdTdiNjVcdTdiNzNcdTdiNzFcdTdiNzBcdTdiNjFcdTdiNzhcdTdiNzZcdTdiNjNcdTdjYjJcdTdjYjRcdTdjYWZcdTdkODhcdTdkODZcdTdkODBcdTdkOGRcdTdkN2ZcdTdkODVcdTdkN2FcdTdkOGVcdTdkN2JcdTdkODNcdTdkN2NcdTdkOGNc''@;'; put 'put ''dTdkOTRcdTdkODRcdTdkN2RcdTdkOTJcdTdmNmRcdTdmNmJcdTdmNjdcdTdmNjhcdTdmNmNcdTdmYTZcdTdmYTVcdTdmYTdcdTdmZGJcdTdmZGNcdTgwMjFcdTgxNjRcdTgxNjBcdTgxNzdcdTgxNWNcdTgxNjlcdTgxNWJcdTgxNjJcdTgxNzJcdTY3MjFcdTgxNWVcdTgxNzZcdTgxNjdcdTgx''@;'; put 'put ''NmYiXSxbImRmYTEiLCJcdTgxNDRcdTgxNjFcdTgyMWRcdTgyNDlcdTgyNDRcdTgyNDBcdTgyNDJcdTgyNDVcdTg0ZjFcdTg0M2ZcdTg0NTZcdTg0NzZcdTg0NzlcdTg0OGZcdTg0OGRcdTg0NjVcdTg0NTFcdTg0NDBcdTg0ODZcdTg0NjdcdTg0MzBcdTg0NGRcdTg0N2RcdTg0NWFcdTg0NTlc''@;'; put 'put ''dTg0NzRcdTg0NzNcdTg0NWRcdTg1MDdcdTg0NWVcdTg0MzdcdTg0M2FcdTg0MzRcdTg0N2FcdTg0NDNcdTg0NzhcdTg0MzJcdTg0NDVcdTg0MjlcdTgzZDlcdTg0NGJcdTg0MmZcdTg0NDJcdTg0MmRcdTg0NWZcdTg0NzBcdTg0MzlcdTg0NGVcdTg0NGNcdTg0NTJcdTg0NmZcdTg0YzVcdTg0''@;'; put 'put ''OGVcdTg0M2JcdTg0NDdcdTg0MzZcdTg0MzNcdTg0NjhcdTg0N2VcdTg0NDRcdTg0MmJcdTg0NjBcdTg0NTRcdTg0NmVcdTg0NTBcdTg3MGJcdTg3MDRcdTg2ZjdcdTg3MGNcdTg2ZmFcdTg2ZDZcdTg2ZjVcdTg3NGRcdTg2ZjhcdTg3MGVcdTg3MDlcdTg3MDFcdTg2ZjZcdTg3MGRcdTg3MDVc''@;'; put 'put ''dTg4ZDZcdTg4Y2JcdTg4Y2RcdTg4Y2VcdTg4ZGVcdTg4ZGJcdTg4ZGFcdTg4Y2NcdTg4ZDBcdTg5ODVcdTg5OWJcdTg5ZGZcdTg5ZTVcdTg5ZTQiXSxbImUwNDAiLCJcdTg5ZTFcdTg5ZTBcdTg5ZTJcdTg5ZGNcdTg5ZTZcdThhNzZcdThhODZcdThhN2ZcdThhNjFcdThhM2ZcdThhNzdcdThh''@;'; put 'put ''ODJcdThhODRcdThhNzVcdThhODNcdThhODFcdThhNzRcdThhN2FcdThjM2NcdThjNGJcdThjNGFcdThjNjVcdThjNjRcdThjNjZcdThjODZcdThjODRcdThjODVcdThjY2NcdThkNjhcdThkNjlcdThkOTFcdThkOGNcdThkOGVcdThkOGZcdThkOGRcdThkOTNcdThkOTRcdThkOTBcdThkOTJc''@;'; put 'put ''dThkZjBcdThkZTBcdThkZWNcdThkZjFcdThkZWVcdThkZDBcdThkZTlcdThkZTNcdThkZTJcdThkZTdcdThkZjJcdThkZWJcdThkZjRcdThmMDZcdThlZmZcdThmMDFcdThmMDBcdThmMDVcdThmMDdcdThmMDhcdThmMDJcdThmMGJcdTkwNTJcdTkwM2YiXSxbImUwYTEiLCJcdTkwNDRcdTkw''@;'; put 'put ''NDlcdTkwM2RcdTkxMTBcdTkxMGRcdTkxMGZcdTkxMTFcdTkxMTZcdTkxMTRcdTkxMGJcdTkxMGVcdTkxNmVcdTkxNmZcdTkyNDhcdTkyNTJcdTkyMzBcdTkyM2FcdTkyNjZcdTkyMzNcdTkyNjVcdTkyNWVcdTkyODNcdTkyMmVcdTkyNGFcdTkyNDZcdTkyNmRcdTkyNmNcdTkyNGZcdTkyNjBc''@;'; put 'put ''dTkyNjdcdTkyNmZcdTkyMzZcdTkyNjFcdTkyNzBcdTkyMzFcdTkyNTRcdTkyNjNcdTkyNTBcdTkyNzJcdTkyNGVcdTkyNTNcdTkyNGNcdTkyNTZcdTkyMzJcdTk1OWZcdTk1OWNcdTk1OWVcdTk1OWJcdTk2OTJcdTk2OTNcdTk2OTFcdTk2OTdcdTk2Y2VcdTk2ZmFcdTk2ZmRcdTk2ZjhcdTk2''@;'; put 'put ''ZjVcdTk3NzNcdTk3NzdcdTk3NzhcdTk3NzJcdTk4MGZcdTk4MGRcdTk4MGVcdTk4YWNcdTk4ZjZcdTk4ZjlcdTk5YWZcdTk5YjJcdTk5YjBcdTk5YjVcdTlhYWRcdTlhYWJcdTliNWJcdTljZWFcdTljZWRcdTljZTdcdTllODBcdTllZmRcdTUwZTZcdTUwZDRcdTUwZDdcdTUwZThcdTUwZjNc''@;'; put 'put ''dTUwZGJcdTUwZWFcdTUwZGRcdTUwZTRcdTUwZDNcdTUwZWNcdTUwZjBcdTUwZWZcdTUwZTNcdTUwZTAiXSxbImUxNDAiLCJcdTUxZDhcdTUyODBcdTUyODFcdTUyZTlcdTUyZWJcdTUzMzBcdTUzYWNcdTU2MjdcdTU2MTVcdTU2MGNcdTU2MTJcdTU1ZmNcdTU2MGZcdTU2MWNcdTU2MDFcdTU2''@;'; put 'put ''MTNcdTU2MDJcdTU1ZmFcdTU2MWRcdTU2MDRcdTU1ZmZcdTU1ZjlcdTU4ODlcdTU4N2NcdTU4OTBcdTU4OThcdTU4ODZcdTU4ODFcdTU4N2ZcdTU4NzRcdTU4OGJcdTU4N2FcdTU4ODdcdTU4OTFcdTU4OGVcdTU4NzZcdTU4ODJcdTU4ODhcdTU4N2JcdTU4OTRcdTU4OGZcdTU4ZmVcdTU5NmJc''@;'; put 'put ''dTVhZGNcdTVhZWVcdTVhZTVcdTVhZDVcdTVhZWFcdTVhZGFcdTVhZWRcdTVhZWJcdTVhZjNcdTVhZTJcdTVhZTBcdTVhZGJcdTVhZWNcdTVhZGVcdTVhZGRcdTVhZDlcdTVhZThcdTVhZGZcdTViNzdcdTViZTAiXSxbImUxYTEiLCJcdTViZTNcdTVjNjNcdTVkODJcdTVkODBcdTVkN2RcdTVk''@;'; put 'put ''ODZcdTVkN2FcdTVkODFcdTVkNzdcdTVkOGFcdTVkODlcdTVkODhcdTVkN2VcdTVkN2NcdTVkOGRcdTVkNzlcdTVkN2ZcdTVlNThcdTVlNTlcdTVlNTNcdTVlZDhcdTVlZDFcdTVlZDdcdTVlY2VcdTVlZGNcdTVlZDVcdTVlZDlcdTVlZDJcdTVlZDRcdTVmNDRcdTVmNDNcdTVmNmZcdTVmYjZc''@;'; put 'put ''dTYxMmNcdTYxMjhcdTYxNDFcdTYxNWVcdTYxNzFcdTYxNzNcdTYxNTJcdTYxNTNcdTYxNzJcdTYxNmNcdTYxODBcdTYxNzRcdTYxNTRcdTYxN2FcdTYxNWJcdTYxNjVcdTYxM2JcdTYxNmFcdTYxNjFcdTYxNTZcdTYyMjlcdTYyMjdcdTYyMmJcdTY0MmJcdTY0NGRcdTY0NWJcdTY0NWRcdTY0''@;'; put 'put ''NzRcdTY0NzZcdTY0NzJcdTY0NzNcdTY0N2RcdTY0NzVcdTY0NjZcdTY0YTZcdTY0NGVcdTY0ODJcdTY0NWVcdTY0NWNcdTY0NGJcdTY0NTNcdTY0NjBcdTY0NTBcdTY0N2ZcdTY0M2ZcdTY0NmNcdTY0NmJcdTY0NTlcdTY0NjVcdTY0NzdcdTY1NzNcdTY1YTBcdTY2YTFcdTY2YTBcdTY2OWZc''@;'; put 'put ''dTY3MDVcdTY3MDRcdTY3MjJcdTY5YjFcdTY5YjZcdTY5YzkiXSxbImUyNDAiLCJcdTY5YTBcdTY5Y2VcdTY5OTZcdTY5YjBcdTY5YWNcdTY5YmNcdTY5OTFcdTY5OTlcdTY5OGVcdTY5YTdcdTY5OGRcdTY5YTlcdTY5YmVcdTY5YWZcdTY5YmZcdTY5YzRcdTY5YmRcdTY5YTRcdTY5ZDRcdTY5''@;'; put 'put ''YjlcdTY5Y2FcdTY5OWFcdTY5Y2ZcdTY5YjNcdTY5OTNcdTY5YWFcdTY5YTFcdTY5OWVcdTY5ZDlcdTY5OTdcdTY5OTBcdTY5YzJcdTY5YjVcdTY5YTVcdTY5YzZcdTZiNGFcdTZiNGRcdTZiNGJcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYzNcdTZiYzRcdTZiZmVcdTZlY2VcdTZlZjVcdTZlZjFc''@;'; put 'put ''dTZmMDNcdTZmMjVcdTZlZjhcdTZmMzdcdTZlZmJcdTZmMmVcdTZmMDlcdTZmNGVcdTZmMTlcdTZmMWFcdTZmMjdcdTZmMThcdTZmM2JcdTZmMTJcdTZlZWRcdTZmMGEiXSxbImUyYTEiLCJcdTZmMzZcdTZmNzNcdTZlZjlcdTZlZWVcdTZmMmRcdTZmNDBcdTZmMzBcdTZmM2NcdTZmMzVcdTZl''@;'; put 'put ''ZWJcdTZmMDdcdTZmMGVcdTZmNDNcdTZmMDVcdTZlZmRcdTZlZjZcdTZmMzlcdTZmMWNcdTZlZmNcdTZmM2FcdTZmMWZcdTZmMGRcdTZmMWVcdTZmMDhcdTZmMjFcdTcxODdcdTcxOTBcdTcxODlcdTcxODBcdTcxODVcdTcxODJcdTcxOGZcdTcxN2JcdTcxODZcdTcxODFcdTcxOTdcdTcyNDRc''@;'; put 'put ''dTcyNTNcdTcyOTdcdTcyOTVcdTcyOTNcdTczNDNcdTczNGRcdTczNTFcdTczNGNcdTc0NjJcdTc0NzNcdTc0NzFcdTc0NzVcdTc0NzJcdTc0NjdcdTc0NmVcdTc1MDBcdTc1MDJcdTc1MDNcdTc1N2RcdTc1OTBcdTc2MTZcdTc2MDhcdTc2MGNcdTc2MTVcdTc2MTFcdTc2MGFcdTc2MTRcdTc2''@;'; put 'put ''YjhcdTc3ODFcdTc3N2NcdTc3ODVcdTc3ODJcdTc3NmVcdTc3ODBcdTc3NmZcdTc3N2VcdTc3ODNcdTc4YjJcdTc4YWFcdTc4YjRcdTc4YWRcdTc4YThcdTc4N2VcdTc4YWJcdTc4OWVcdTc4YTVcdTc4YTBcdTc4YWNcdTc4YTJcdTc4YTRcdTc5OThcdTc5OGFcdTc5OGJcdTc5OTZcdTc5OTVc''@;'; put 'put ''dTc5OTRcdTc5OTMiXSxbImUzNDAiLCJcdTc5OTdcdTc5ODhcdTc5OTJcdTc5OTBcdTdhMmJcdTdhNGFcdTdhMzBcdTdhMmZcdTdhMjhcdTdhMjZcdTdhYThcdTdhYWJcdTdhYWNcdTdhZWVcdTdiODhcdTdiOWNcdTdiOGFcdTdiOTFcdTdiOTBcdTdiOTZcdTdiOGRcdTdiOGNcdTdiOWJcdTdi''@;'; put 'put ''OGVcdTdiODVcdTdiOThcdTUyODRcdTdiOTlcdTdiYTRcdTdiODJcdTdjYmJcdTdjYmZcdTdjYmNcdTdjYmFcdTdkYTdcdTdkYjdcdTdkYzJcdTdkYTNcdTdkYWFcdTdkYzFcdTdkYzBcdTdkYzVcdTdkOWRcdTdkY2VcdTdkYzRcdTdkYzZcdTdkY2JcdTdkY2NcdTdkYWZcdTdkYjlcdTdkOTZc''@;'; put 'put ''dTdkYmNcdTdkOWZcdTdkYTZcdTdkYWVcdTdkYTlcdTdkYTFcdTdkYzlcdTdmNzNcdTdmZTJcdTdmZTNcdTdmZTVcdTdmZGUiXSxbImUzYTEiLCJcdTgwMjRcdTgwNWRcdTgwNWNcdTgxODlcdTgxODZcdTgxODNcdTgxODdcdTgxOGRcdTgxOGNcdTgxOGJcdTgyMTVcdTg0OTdcdTg0YTRcdTg0''@;'; put 'put ''YTFcdTg0OWZcdTg0YmFcdTg0Y2VcdTg0YzJcdTg0YWNcdTg0YWVcdTg0YWJcdTg0YjlcdTg0YjRcdTg0YzFcdTg0Y2RcdTg0YWFcdTg0OWFcdTg0YjFcdTg0ZDBcdTg0OWRcdTg0YTdcdTg0YmJcdTg0YTJcdTg0OTRcdTg0YzdcdTg0Y2NcdTg0OWJcdTg0YTlcdTg0YWZcdTg0YThcdTg0ZDZc''@;'; put 'put ''dTg0OThcdTg0YjZcdTg0Y2ZcdTg0YTBcdTg0ZDdcdTg0ZDRcdTg0ZDJcdTg0ZGJcdTg0YjBcdTg0OTFcdTg2NjFcdTg3MzNcdTg3MjNcdTg3MjhcdTg3NmJcdTg3NDBcdTg3MmVcdTg3MWVcdTg3MjFcdTg3MTlcdTg3MWJcdTg3NDNcdTg3MmNcdTg3NDFcdTg3M2VcdTg3NDZcdTg3MjBcdTg3''@;'; put 'put ''MzJcdTg3MmFcdTg3MmRcdTg3M2NcdTg3MTJcdTg3M2FcdTg3MzFcdTg3MzVcdTg3NDJcdTg3MjZcdTg3MjdcdTg3MzhcdTg3MjRcdTg3MWFcdTg3MzBcdTg3MTFcdTg4ZjdcdTg4ZTdcdTg4ZjFcdTg4ZjJcdTg4ZmFcdTg4ZmVcdTg4ZWVcdTg4ZmNcdTg4ZjZcdTg4ZmIiXSxbImU0NDAiLCJc''@;'; put 'put ''dTg4ZjBcdTg4ZWNcdTg4ZWJcdTg5OWRcdTg5YTFcdTg5OWZcdTg5OWVcdTg5ZTlcdTg5ZWJcdTg5ZThcdThhYWJcdThhOTlcdThhOGJcdThhOTJcdThhOGZcdThhOTZcdThjM2RcdThjNjhcdThjNjlcdThjZDVcdThjY2ZcdThjZDdcdThkOTZcdThlMDlcdThlMDJcdThkZmZcdThlMGRcdThk''@;'; put 'put ''ZmRcdThlMGFcdThlMDNcdThlMDdcdThlMDZcdThlMDVcdThkZmVcdThlMDBcdThlMDRcdThmMTBcdThmMTFcdThmMGVcdThmMGRcdTkxMjNcdTkxMWNcdTkxMjBcdTkxMjJcdTkxMWZcdTkxMWRcdTkxMWFcdTkxMjRcdTkxMjFcdTkxMWJcdTkxN2FcdTkxNzJcdTkxNzlcdTkxNzNcdTkyYTVc''@;'; put 'put ''dTkyYTRcdTkyNzZcdTkyOWJcdTkyN2FcdTkyYTBcdTkyOTRcdTkyYWFcdTkyOGQiXSxbImU0YTEiLCJcdTkyYTZcdTkyOWFcdTkyYWJcdTkyNzlcdTkyOTdcdTkyN2ZcdTkyYTNcdTkyZWVcdTkyOGVcdTkyODJcdTkyOTVcdTkyYTJcdTkyN2RcdTkyODhcdTkyYTFcdTkyOGFcdTkyODZcdTky''@;'; put 'put ''OGNcdTkyOTlcdTkyYTdcdTkyN2VcdTkyODdcdTkyYTlcdTkyOWRcdTkyOGJcdTkyMmRcdTk2OWVcdTk2YTFcdTk2ZmZcdTk3NThcdTk3N2RcdTk3N2FcdTk3N2VcdTk3ODNcdTk3ODBcdTk3ODJcdTk3N2JcdTk3ODRcdTk3ODFcdTk3N2ZcdTk3Y2VcdTk3Y2RcdTk4MTZcdTk4YWRcdTk4YWVc''@;'; put 'put ''dTk5MDJcdTk5MDBcdTk5MDdcdTk5OWRcdTk5OWNcdTk5YzNcdTk5YjlcdTk5YmJcdTk5YmFcdTk5YzJcdTk5YmRcdTk5YzdcdTlhYjFcdTlhZTNcdTlhZTdcdTliM2VcdTliM2ZcdTliNjBcdTliNjFcdTliNWZcdTljZjFcdTljZjJcdTljZjVcdTllYTdcdTUwZmZcdTUxMDNcdTUxMzBcdTUw''@;'; put 'put ''ZjhcdTUxMDZcdTUxMDdcdTUwZjZcdTUwZmVcdTUxMGJcdTUxMGNcdTUwZmRcdTUxMGFcdTUyOGJcdTUyOGNcdTUyZjFcdTUyZWZcdTU2NDhcdTU2NDJcdTU2NGNcdTU2MzVcdTU2NDFcdTU2NGFcdTU2NDlcdTU2NDZcdTU2NTgiXSxbImU1NDAiLCJcdTU2NWFcdTU2NDBcdTU2MzNcdTU2M2Rc''@;'; put 'put ''dTU2MmNcdTU2M2VcdTU2MzhcdTU2MmFcdTU2M2FcdTU3MWFcdTU4YWJcdTU4OWRcdTU4YjFcdTU4YTBcdTU4YTNcdTU4YWZcdTU4YWNcdTU4YTVcdTU4YTFcdTU4ZmZcdTVhZmZcdTVhZjRcdTVhZmRcdTVhZjdcdTVhZjZcdTViMDNcdTVhZjhcdTViMDJcdTVhZjlcdTViMDFcdTViMDdcdTVi''@;'; put 'put ''MDVcdTViMGZcdTVjNjdcdTVkOTlcdTVkOTdcdTVkOWZcdTVkOTJcdTVkYTJcdTVkOTNcdTVkOTVcdTVkYTBcdTVkOWNcdTVkYTFcdTVkOWFcdTVkOWVcdTVlNjlcdTVlNWRcdTVlNjBcdTVlNWNcdTdkZjNcdTVlZGJcdTVlZGVcdTVlZTFcdTVmNDlcdTVmYjJcdTYxOGJcdTYxODNcdTYxNzlc''@;'; put 'put ''dTYxYjFcdTYxYjBcdTYxYTJcdTYxODkiXSxbImU1YTEiLCJcdTYxOWJcdTYxOTNcdTYxYWZcdTYxYWRcdTYxOWZcdTYxOTJcdTYxYWFcdTYxYTFcdTYxOGRcdTYxNjZcdTYxYjNcdTYyMmRcdTY0NmVcdTY0NzBcdTY0OTZcdTY0YTBcdTY0ODVcdTY0OTdcdTY0OWNcdTY0OGZcdTY0OGJcdTY0''@;'; put 'put ''OGFcdTY0OGNcdTY0YTNcdTY0OWZcdTY0NjhcdTY0YjFcdTY0OThcdTY1NzZcdTY1N2FcdTY1NzlcdTY1N2JcdTY1YjJcdTY1YjNcdTY2YjVcdTY2YjBcdTY2YTlcdTY2YjJcdTY2YjdcdTY2YWFcdTY2YWZcdTZhMDBcdTZhMDZcdTZhMTdcdTY5ZTVcdTY5ZjhcdTZhMTVcdTY5ZjFcdTY5ZTRc''@;'; put 'put ''dTZhMjBcdTY5ZmZcdTY5ZWNcdTY5ZTJcdTZhMWJcdTZhMWRcdTY5ZmVcdTZhMjdcdTY5ZjJcdTY5ZWVcdTZhMTRcdTY5ZjdcdTY5ZTdcdTZhNDBcdTZhMDhcdTY5ZTZcdTY5ZmJcdTZhMGRcdTY5ZmNcdTY5ZWJcdTZhMDlcdTZhMDRcdTZhMThcdTZhMjVcdTZhMGZcdTY5ZjZcdTZhMjZcdTZh''@;'; put 'put ''MDdcdTY5ZjRcdTZhMTZcdTZiNTFcdTZiYTVcdTZiYTNcdTZiYTJcdTZiYTZcdTZjMDFcdTZjMDBcdTZiZmZcdTZjMDJcdTZmNDFcdTZmMjZcdTZmN2VcdTZmODdcdTZmYzZcdTZmOTIiXSxbImU2NDAiLCJcdTZmOGRcdTZmODlcdTZmOGNcdTZmNjJcdTZmNGZcdTZmODVcdTZmNWFcdTZmOTZc''@;'; put 'put ''dTZmNzZcdTZmNmNcdTZmODJcdTZmNTVcdTZmNzJcdTZmNTJcdTZmNTBcdTZmNTdcdTZmOTRcdTZmOTNcdTZmNWRcdTZmMDBcdTZmNjFcdTZmNmJcdTZmN2RcdTZmNjdcdTZmOTBcdTZmNTNcdTZmOGJcdTZmNjlcdTZmN2ZcdTZmOTVcdTZmNjNcdTZmNzdcdTZmNmFcdTZmN2JcdTcxYjJcdTcx''@;'; put 'put ''YWZcdTcxOWJcdTcxYjBcdTcxYTBcdTcxOWFcdTcxYTlcdTcxYjVcdTcxOWRcdTcxYTVcdTcxOWVcdTcxYTRcdTcxYTFcdTcxYWFcdTcxOWNcdTcxYTdcdTcxYjNcdTcyOThcdTcyOWFcdTczNThcdTczNTJcdTczNWVcdTczNWZcdTczNjBcdTczNWRcdTczNWJcdTczNjFcdTczNWFcdTczNTki''@;'; put 'put ''XSxbImU2YTEiLCJcdTczNjJcdTc0ODdcdTc0ODlcdTc0OGFcdTc0ODZcdTc0ODFcdTc0N2RcdTc0ODVcdTc0ODhcdTc0N2NcdTc0NzlcdTc1MDhcdTc1MDdcdTc1N2VcdTc2MjVcdTc2MWVcdTc2MTlcdTc2MWRcdTc2MWNcdTc2MjNcdTc2MWFcdTc2MjhcdTc2MWJcdTc2OWNcdTc2OWRcdTc2''@;'; put 'put ''OWVcdTc2OWJcdTc3OGRcdTc3OGZcdTc3ODlcdTc3ODhcdTc4Y2RcdTc4YmJcdTc4Y2ZcdTc4Y2NcdTc4ZDFcdTc4Y2VcdTc4ZDRcdTc4YzhcdTc4YzNcdTc4YzRcdTc4YzlcdTc5OWFcdTc5YTFcdTc5YTBcdTc5OWNcdTc5YTJcdTc5OWJcdTZiNzZcdTdhMzlcdTdhYjJcdTdhYjRcdTdhYjNc''@;'; put 'put ''dTdiYjdcdTdiY2JcdTdiYmVcdTdiYWNcdTdiY2VcdTdiYWZcdTdiYjlcdTdiY2FcdTdiYjVcdTdjYzVcdTdjYzhcdTdjY2NcdTdjY2JcdTdkZjdcdTdkZGJcdTdkZWFcdTdkZTdcdTdkZDdcdTdkZTFcdTdlMDNcdTdkZmFcdTdkZTZcdTdkZjZcdTdkZjFcdTdkZjBcdTdkZWVcdTdkZGZcdTdm''@;'; put 'put ''NzZcdTdmYWNcdTdmYjBcdTdmYWRcdTdmZWRcdTdmZWJcdTdmZWFcdTdmZWNcdTdmZTZcdTdmZThcdTgwNjRcdTgwNjdcdTgxYTNcdTgxOWYiXSxbImU3NDAiLCJcdTgxOWVcdTgxOTVcdTgxYTJcdTgxOTlcdTgxOTdcdTgyMTZcdTgyNGZcdTgyNTNcdTgyNTJcdTgyNTBcdTgyNGVcdTgyNTFc''@;'; put 'put ''dTg1MjRcdTg1M2JcdTg1MGZcdTg1MDBcdTg1MjlcdTg1MGVcdTg1MDlcdTg1MGRcdTg1MWZcdTg1MGFcdTg1MjdcdTg1MWNcdTg0ZmJcdTg1MmJcdTg0ZmFcdTg1MDhcdTg1MGNcdTg0ZjRcdTg1MmFcdTg0ZjJcdTg1MTVcdTg0ZjdcdTg0ZWJcdTg0ZjNcdTg0ZmNcdTg1MTJcdTg0ZWFcdTg0''@;'; put 'put ''ZTlcdTg1MTZcdTg0ZmVcdTg1MjhcdTg1MWRcdTg1MmVcdTg1MDJcdTg0ZmRcdTg1MWVcdTg0ZjZcdTg1MzFcdTg1MjZcdTg0ZTdcdTg0ZThcdTg0ZjBcdTg0ZWZcdTg0ZjlcdTg1MThcdTg1MjBcdTg1MzBcdTg1MGJcdTg1MTlcdTg1MmZcdTg2NjIiXSxbImU3YTEiLCJcdTg3NTZcdTg3NjNc''@;'; put 'put ''dTg3NjRcdTg3NzdcdTg3ZTFcdTg3NzNcdTg3NThcdTg3NTRcdTg3NWJcdTg3NTJcdTg3NjFcdTg3NWFcdTg3NTFcdTg3NWVcdTg3NmRcdTg3NmFcdTg3NTBcdTg3NGVcdTg3NWZcdTg3NWRcdTg3NmZcdTg3NmNcdTg3N2FcdTg3NmVcdTg3NWNcdTg3NjVcdTg3NGZcdTg3N2JcdTg3NzVcdTg3''@;'; put 'put ''NjJcdTg3NjdcdTg3NjlcdTg4NWFcdTg5MDVcdTg5MGNcdTg5MTRcdTg5MGJcdTg5MTdcdTg5MThcdTg5MTlcdTg5MDZcdTg5MTZcdTg5MTFcdTg5MGVcdTg5MDlcdTg5YTJcdTg5YTRcdTg5YTNcdTg5ZWRcdTg5ZjBcdTg5ZWNcdThhY2ZcdThhYzZcdThhYjhcdThhZDNcdThhZDFcdThhZDRc''@;'; put 'put ''dThhZDVcdThhYmJcdThhZDdcdThhYmVcdThhYzBcdThhYzVcdThhZDhcdThhYzNcdThhYmFcdThhYmRcdThhZDlcdThjM2VcdThjNGRcdThjOGZcdThjZTVcdThjZGZcdThjZDlcdThjZThcdThjZGFcdThjZGRcdThjZTdcdThkYTBcdThkOWNcdThkYTFcdThkOWJcdThlMjBcdThlMjNcdThl''@;'; put 'put ''MjVcdThlMjRcdThlMmVcdThlMTVcdThlMWJcdThlMTZcdThlMTFcdThlMTlcdThlMjZcdThlMjciXSxbImU4NDAiLCJcdThlMTRcdThlMTJcdThlMThcdThlMTNcdThlMWNcdThlMTdcdThlMWFcdThmMmNcdThmMjRcdThmMThcdThmMWFcdThmMjBcdThmMjNcdThmMTZcdThmMTdcdTkwNzNc''@;'; put 'put ''dTkwNzBcdTkwNmZcdTkwNjdcdTkwNmJcdTkxMmZcdTkxMmJcdTkxMjlcdTkxMmFcdTkxMzJcdTkxMjZcdTkxMmVcdTkxODVcdTkxODZcdTkxOGFcdTkxODFcdTkxODJcdTkxODRcdTkxODBcdTkyZDBcdTkyYzNcdTkyYzRcdTkyYzBcdTkyZDlcdTkyYjZcdTkyY2ZcdTkyZjFcdTkyZGZcdTky''@;'; put 'put ''ZDhcdTkyZTlcdTkyZDdcdTkyZGRcdTkyY2NcdTkyZWZcdTkyYzJcdTkyZThcdTkyY2FcdTkyYzhcdTkyY2VcdTkyZTZcdTkyY2RcdTkyZDVcdTkyYzlcdTkyZTBcdTkyZGVcdTkyZTdcdTkyZDFcdTkyZDMiXSxbImU4YTEiLCJcdTkyYjVcdTkyZTFcdTkyYzZcdTkyYjRcdTk1N2NcdTk1YWNc''@;'; put 'put ''dTk1YWJcdTk1YWVcdTk1YjBcdTk2YTRcdTk2YTJcdTk2ZDNcdTk3MDVcdTk3MDhcdTk3MDJcdTk3NWFcdTk3OGFcdTk3OGVcdTk3ODhcdTk3ZDBcdTk3Y2ZcdTk4MWVcdTk4MWRcdTk4MjZcdTk4MjlcdTk4MjhcdTk4MjBcdTk4MWJcdTk4MjdcdTk4YjJcdTk5MDhcdTk4ZmFcdTk5MTFcdTk5''@;'; put 'put ''MTRcdTk5MTZcdTk5MTdcdTk5MTVcdTk5ZGNcdTk5Y2RcdTk5Y2ZcdTk5ZDNcdTk5ZDRcdTk5Y2VcdTk5YzlcdTk5ZDZcdTk5ZDhcdTk5Y2JcdTk5ZDdcdTk5Y2NcdTlhYjNcdTlhZWNcdTlhZWJcdTlhZjNcdTlhZjJcdTlhZjFcdTliNDZcdTliNDNcdTliNjdcdTliNzRcdTliNzFcdTliNjZc''@;'; put 'put ''dTliNzZcdTliNzVcdTliNzBcdTliNjhcdTliNjRcdTliNmNcdTljZmNcdTljZmFcdTljZmRcdTljZmZcdTljZjdcdTlkMDdcdTlkMDBcdTljZjlcdTljZmJcdTlkMDhcdTlkMDVcdTlkMDRcdTllODNcdTllZDNcdTlmMGZcdTlmMTBcdTUxMWNcdTUxMTNcdTUxMTdcdTUxMWFcdTUxMTFcdTUx''@;'; put 'put ''ZGVcdTUzMzRcdTUzZTFcdTU2NzBcdTU2NjBcdTU2NmUiXSxbImU5NDAiLCJcdTU2NzNcdTU2NjZcdTU2NjNcdTU2NmRcdTU2NzJcdTU2NWVcdTU2NzdcdTU3MWNcdTU3MWJcdTU4YzhcdTU4YmRcdTU4YzlcdTU4YmZcdTU4YmFcdTU4YzJcdTU4YmNcdTU4YzZcdTViMTdcdTViMTlcdTViMWJc''@;'; put 'put ''dTViMjFcdTViMTRcdTViMTNcdTViMTBcdTViMTZcdTViMjhcdTViMWFcdTViMjBcdTViMWVcdTViZWZcdTVkYWNcdTVkYjFcdTVkYTlcdTVkYTdcdTVkYjVcdTVkYjBcdTVkYWVcdTVkYWFcdTVkYThcdTVkYjJcdTVkYWRcdTVkYWZcdTVkYjRcdTVlNjdcdTVlNjhcdTVlNjZcdTVlNmZcdTVl''@;'; put 'put ''ZTlcdTVlZTdcdTVlZTZcdTVlZThcdTVlZTVcdTVmNGJcdTVmYmNcdTYxOWRcdTYxYThcdTYxOTZcdTYxYzVcdTYxYjRcdTYxYzZcdTYxYzFcdTYxY2NcdTYxYmEiXSxbImU5YTEiLCJcdTYxYmZcdTYxYjhcdTYxOGNcdTY0ZDdcdTY0ZDZcdTY0ZDBcdTY0Y2ZcdTY0YzlcdTY0YmRcdTY0ODlc''@;'; put 'put ''dTY0YzNcdTY0ZGJcdTY0ZjNcdTY0ZDlcdTY1MzNcdTY1N2ZcdTY1N2NcdTY1YTJcdTY2YzhcdTY2YmVcdTY2YzBcdTY2Y2FcdTY2Y2JcdTY2Y2ZcdTY2YmRcdTY2YmJcdTY2YmFcdTY2Y2NcdTY3MjNcdTZhMzRcdTZhNjZcdTZhNDlcdTZhNjdcdTZhMzJcdTZhNjhcdTZhM2VcdTZhNWRcdTZh''@;'; put 'put ''NmRcdTZhNzZcdTZhNWJcdTZhNTFcdTZhMjhcdTZhNWFcdTZhM2JcdTZhM2ZcdTZhNDFcdTZhNmFcdTZhNjRcdTZhNTBcdTZhNGZcdTZhNTRcdTZhNmZcdTZhNjlcdTZhNjBcdTZhM2NcdTZhNWVcdTZhNTZcdTZhNTVcdTZhNGRcdTZhNGVcdTZhNDZcdTZiNTVcdTZiNTRcdTZiNTZcdTZiYTdc''@;'; put 'put ''dTZiYWFcdTZiYWJcdTZiYzhcdTZiYzdcdTZjMDRcdTZjMDNcdTZjMDZcdTZmYWRcdTZmY2JcdTZmYTNcdTZmYzdcdTZmYmNcdTZmY2VcdTZmYzhcdTZmNWVcdTZmYzRcdTZmYmRcdTZmOWVcdTZmY2FcdTZmYThcdTcwMDRcdTZmYTVcdTZmYWVcdTZmYmFcdTZmYWNcdTZmYWFcdTZmY2ZcdTZm''@;'; put 'put ''YmZcdTZmYjgiXSxbImVhNDAiLCJcdTZmYTJcdTZmYzlcdTZmYWJcdTZmY2RcdTZmYWZcdTZmYjJcdTZmYjBcdTcxYzVcdTcxYzJcdTcxYmZcdTcxYjhcdTcxZDZcdTcxYzBcdTcxYzFcdTcxY2JcdTcxZDRcdTcxY2FcdTcxYzdcdTcxY2ZcdTcxYmRcdTcxZDhcdTcxYmNcdTcxYzZcdTcxZGFc''@;'; put 'put ''dTcxZGJcdTcyOWRcdTcyOWVcdTczNjlcdTczNjZcdTczNjdcdTczNmNcdTczNjVcdTczNmJcdTczNmFcdTc0N2ZcdTc0OWFcdTc0YTBcdTc0OTRcdTc0OTJcdTc0OTVcdTc0YTFcdTc1MGJcdTc1ODBcdTc2MmZcdTc2MmRcdTc2MzFcdTc2M2RcdTc2MzNcdTc2M2NcdTc2MzVcdTc2MzJcdTc2''@;'; put 'put ''MzBcdTc2YmJcdTc2ZTZcdTc3OWFcdTc3OWRcdTc3YTFcdTc3OWNcdTc3OWJcdTc3YTJcdTc3YTNcdTc3OTVcdTc3OTkiXSxbImVhYTEiLCJcdTc3OTdcdTc4ZGRcdTc4ZTlcdTc4ZTVcdTc4ZWFcdTc4ZGVcdTc4ZTNcdTc4ZGJcdTc4ZTFcdTc4ZTJcdTc4ZWRcdTc4ZGZcdTc4ZTBcdTc5YTRc''@;'; put 'put ''dTdhNDRcdTdhNDhcdTdhNDdcdTdhYjZcdTdhYjhcdTdhYjVcdTdhYjFcdTdhYjdcdTdiZGVcdTdiZTNcdTdiZTdcdTdiZGRcdTdiZDVcdTdiZTVcdTdiZGFcdTdiZThcdTdiZjlcdTdiZDRcdTdiZWFcdTdiZTJcdTdiZGNcdTdiZWJcdTdiZDhcdTdiZGZcdTdjZDJcdTdjZDRcdTdjZDdcdTdj''@;'; put 'put ''ZDBcdTdjZDFcdTdlMTJcdTdlMjFcdTdlMTdcdTdlMGNcdTdlMWZcdTdlMjBcdTdlMTNcdTdlMGVcdTdlMWNcdTdlMTVcdTdlMWFcdTdlMjJcdTdlMGJcdTdlMGZcdTdlMTZcdTdlMGRcdTdlMTRcdTdlMjVcdTdlMjRcdTdmNDNcdTdmN2JcdTdmN2NcdTdmN2FcdTdmYjFcdTdmZWZcdTgwMmFc''@;'; put 'put ''dTgwMjlcdTgwNmNcdTgxYjFcdTgxYTZcdTgxYWVcdTgxYjlcdTgxYjVcdTgxYWJcdTgxYjBcdTgxYWNcdTgxYjRcdTgxYjJcdTgxYjdcdTgxYTdcdTgxZjJcdTgyNTVcdTgyNTZcdTgyNTdcdTg1NTZcdTg1NDVcdTg1NmJcdTg1NGRcdTg1NTNcdTg1NjFcdTg1NTgiXSxbImViNDAiLCJcdTg1''@;'; put 'put ''NDBcdTg1NDZcdTg1NjRcdTg1NDFcdTg1NjJcdTg1NDRcdTg1NTFcdTg1NDdcdTg1NjNcdTg1M2VcdTg1NWJcdTg1NzFcdTg1NGVcdTg1NmVcdTg1NzVcdTg1NTVcdTg1NjdcdTg1NjBcdTg1OGNcdTg1NjZcdTg1NWRcdTg1NTRcdTg1NjVcdTg1NmNcdTg2NjNcdTg2NjVcdTg2NjRcdTg3OWJc''@;'; put 'put ''dTg3OGZcdTg3OTdcdTg3OTNcdTg3OTJcdTg3ODhcdTg3ODFcdTg3OTZcdTg3OThcdTg3NzlcdTg3ODdcdTg3YTNcdTg3ODVcdTg3OTBcdTg3OTFcdTg3OWRcdTg3ODRcdTg3OTRcdTg3OWNcdTg3OWFcdTg3ODlcdTg5MWVcdTg5MjZcdTg5MzBcdTg5MmRcdTg5MmVcdTg5MjdcdTg5MzFcdTg5''@;'; put 'put ''MjJcdTg5MjlcdTg5MjNcdTg5MmZcdTg5MmNcdTg5MWZcdTg5ZjFcdThhZTAiXSxbImViYTEiLCJcdThhZTJcdThhZjJcdThhZjRcdThhZjVcdThhZGRcdThiMTRcdThhZTRcdThhZGZcdThhZjBcdThhYzhcdThhZGVcdThhZTFcdThhZThcdThhZmZcdThhZWZcdThhZmJcdThjOTFcdThjOTJc''@;'; put 'put ''dThjOTBcdThjZjVcdThjZWVcdThjZjFcdThjZjBcdThjZjNcdThkNmNcdThkNmVcdThkYTVcdThkYTdcdThlMzNcdThlM2VcdThlMzhcdThlNDBcdThlNDVcdThlMzZcdThlM2NcdThlM2RcdThlNDFcdThlMzBcdThlM2ZcdThlYmRcdThmMzZcdThmMmVcdThmMzVcdThmMzJcdThmMzlcdThm''@;'; put 'put ''MzdcdThmMzRcdTkwNzZcdTkwNzlcdTkwN2JcdTkwODZcdTkwZmFcdTkxMzNcdTkxMzVcdTkxMzZcdTkxOTNcdTkxOTBcdTkxOTFcdTkxOGRcdTkxOGZcdTkzMjdcdTkzMWVcdTkzMDhcdTkzMWZcdTkzMDZcdTkzMGZcdTkzN2FcdTkzMzhcdTkzM2NcdTkzMWJcdTkzMjNcdTkzMTJcdTkzMDFc''@;'; put 'put ''dTkzNDZcdTkzMmRcdTkzMGVcdTkzMGRcdTkyY2JcdTkzMWRcdTkyZmFcdTkzMjVcdTkzMTNcdTkyZjlcdTkyZjdcdTkzMzRcdTkzMDJcdTkzMjRcdTkyZmZcdTkzMjlcdTkzMzlcdTkzMzVcdTkzMmFcdTkzMTRcdTkzMGMiXSxbImVjNDAiLCJcdTkzMGJcdTkyZmVcdTkzMDlcdTkzMDBcdTky''@;'; put 'put ''ZmJcdTkzMTZcdTk1YmNcdTk1Y2RcdTk1YmVcdTk1YjlcdTk1YmFcdTk1YjZcdTk1YmZcdTk1YjVcdTk1YmRcdTk2YTlcdTk2ZDRcdTk3MGJcdTk3MTJcdTk3MTBcdTk3OTlcdTk3OTdcdTk3OTRcdTk3ZjBcdTk3ZjhcdTk4MzVcdTk4MmZcdTk4MzJcdTk5MjRcdTk5MWZcdTk5MjdcdTk5Mjlc''@;'; put 'put ''dTk5OWVcdTk5ZWVcdTk5ZWNcdTk5ZTVcdTk5ZTRcdTk5ZjBcdTk5ZTNcdTk5ZWFcdTk5ZTlcdTk5ZTdcdTlhYjlcdTlhYmZcdTlhYjRcdTlhYmJcdTlhZjZcdTlhZmFcdTlhZjlcdTlhZjdcdTliMzNcdTliODBcdTliODVcdTliODdcdTliN2NcdTliN2VcdTliN2JcdTliODJcdTliOTNcdTli''@;'; put 'put ''OTJcdTliOTBcdTliN2FcdTliOTUiXSxbImVjYTEiLCJcdTliN2RcdTliODhcdTlkMjVcdTlkMTdcdTlkMjBcdTlkMWVcdTlkMTRcdTlkMjlcdTlkMWRcdTlkMThcdTlkMjJcdTlkMTBcdTlkMTlcdTlkMWZcdTllODhcdTllODZcdTllODdcdTllYWVcdTllYWRcdTllZDVcdTllZDZcdTllZmFc''@;'; put 'put ''dTlmMTJcdTlmM2RcdTUxMjZcdTUxMjVcdTUxMjJcdTUxMjRcdTUxMjBcdTUxMjlcdTUyZjRcdTU2OTNcdTU2OGNcdTU2OGRcdTU2ODZcdTU2ODRcdTU2ODNcdTU2N2VcdTU2ODJcdTU2N2ZcdTU2ODFcdTU4ZDZcdTU4ZDRcdTU4Y2ZcdTU4ZDJcdTViMmRcdTViMjVcdTViMzJcdTViMjNcdTVi''@;'; put 'put ''MmNcdTViMjdcdTViMjZcdTViMmZcdTViMmVcdTViN2JcdTViZjFcdTViZjJcdTVkYjdcdTVlNmNcdTVlNmFcdTVmYmVcdTVmYmJcdTYxYzNcdTYxYjVcdTYxYmNcdTYxZTdcdTYxZTBcdTYxZTVcdTYxZTRcdTYxZThcdTYxZGVcdTY0ZWZcdTY0ZTlcdTY0ZTNcdTY0ZWJcdTY0ZTRcdTY0ZThc''@;'; put 'put ''dTY1ODFcdTY1ODBcdTY1YjZcdTY1ZGFcdTY2ZDJcdTZhOGRcdTZhOTZcdTZhODFcdTZhYTVcdTZhODlcdTZhOWZcdTZhOWJcdTZhYTFcdTZhOWVcdTZhODdcdTZhOTNcdTZhOGUiXSxbImVkNDAiLCJcdTZhOTVcdTZhODNcdTZhYThcdTZhYTRcdTZhOTFcdTZhN2ZcdTZhYTZcdTZhOWFcdTZh''@;'; put 'put ''ODVcdTZhOGNcdTZhOTJcdTZiNWJcdTZiYWRcdTZjMDlcdTZmY2NcdTZmYTlcdTZmZjRcdTZmZDRcdTZmZTNcdTZmZGNcdTZmZWRcdTZmZTdcdTZmZTZcdTZmZGVcdTZmZjJcdTZmZGRcdTZmZTJcdTZmZThcdTcxZTFcdTcxZjFcdTcxZThcdTcxZjJcdTcxZTRcdTcxZjBcdTcxZTJcdTczNzNc''@;'; put 'put ''dTczNmVcdTczNmZcdTc0OTdcdTc0YjJcdTc0YWJcdTc0OTBcdTc0YWFcdTc0YWRcdTc0YjFcdTc0YTVcdTc0YWZcdTc1MTBcdTc1MTFcdTc1MTJcdTc1MGZcdTc1ODRcdTc2NDNcdTc2NDhcdTc2NDlcdTc2NDdcdTc2YTRcdTc2ZTlcdTc3YjVcdTc3YWJcdTc3YjJcdTc3YjdcdTc3YjYiXSxb''@;'; put 'put ''ImVkYTEiLCJcdTc3YjRcdTc3YjFcdTc3YThcdTc3ZjBcdTc4ZjNcdTc4ZmRcdTc5MDJcdTc4ZmJcdTc4ZmNcdTc4ZjJcdTc5MDVcdTc4ZjlcdTc4ZmVcdTc5MDRcdTc5YWJcdTc5YThcdTdhNWNcdTdhNWJcdTdhNTZcdTdhNThcdTdhNTRcdTdhNWFcdTdhYmVcdTdhYzBcdTdhYzFcdTdjMDVc''@;'; put 'put ''dTdjMGZcdTdiZjJcdTdjMDBcdTdiZmZcdTdiZmJcdTdjMGVcdTdiZjRcdTdjMGJcdTdiZjNcdTdjMDJcdTdjMDlcdTdjMDNcdTdjMDFcdTdiZjhcdTdiZmRcdTdjMDZcdTdiZjBcdTdiZjFcdTdjMTBcdTdjMGFcdTdjZThcdTdlMmRcdTdlM2NcdTdlNDJcdTdlMzNcdTk4NDhcdTdlMzhcdTdl''@;'; put 'put ''MmFcdTdlNDlcdTdlNDBcdTdlNDdcdTdlMjlcdTdlNGNcdTdlMzBcdTdlM2JcdTdlMzZcdTdlNDRcdTdlM2FcdTdmNDVcdTdmN2ZcdTdmN2VcdTdmN2RcdTdmZjRcdTdmZjJcdTgwMmNcdTgxYmJcdTgxYzRcdTgxY2NcdTgxY2FcdTgxYzVcdTgxYzdcdTgxYmNcdTgxZTlcdTgyNWJcdTgyNWFc''@;'; put 'put ''dTgyNWNcdTg1ODNcdTg1ODBcdTg1OGZcdTg1YTdcdTg1OTVcdTg1YTBcdTg1OGJcdTg1YTNcdTg1N2JcdTg1YTRcdTg1OWFcdTg1OWUiXSxbImVlNDAiLCJcdTg1NzdcdTg1N2NcdTg1ODlcdTg1YTFcdTg1N2FcdTg1NzhcdTg1NTdcdTg1OGVcdTg1OTZcdTg1ODZcdTg1OGRcdTg1OTlcdTg1''@;'; put 'put ''OWRcdTg1ODFcdTg1YTJcdTg1ODJcdTg1ODhcdTg1ODVcdTg1NzlcdTg1NzZcdTg1OThcdTg1OTBcdTg1OWZcdTg2NjhcdTg3YmVcdTg3YWFcdTg3YWRcdTg3YzVcdTg3YjBcdTg3YWNcdTg3YjlcdTg3YjVcdTg3YmNcdTg3YWVcdTg3YzlcdTg3YzNcdTg3YzJcdTg3Y2NcdTg3YjdcdTg3YWZc''@;'; put 'put ''dTg3YzRcdTg3Y2FcdTg3YjRcdTg3YjZcdTg3YmZcdTg3YjhcdTg3YmRcdTg3ZGVcdTg3YjJcdTg5MzVcdTg5MzNcdTg5M2NcdTg5M2VcdTg5NDFcdTg5NTJcdTg5MzdcdTg5NDJcdTg5YWRcdTg5YWZcdTg5YWVcdTg5ZjJcdTg5ZjNcdThiMWUiXSxbImVlYTEiLCJcdThiMThcdThiMTZcdThi''@;'; put 'put ''MTFcdThiMDVcdThiMGJcdThiMjJcdThiMGZcdThiMTJcdThiMTVcdThiMDdcdThiMGRcdThiMDhcdThiMDZcdThiMWNcdThiMTNcdThiMWFcdThjNGZcdThjNzBcdThjNzJcdThjNzFcdThjNmZcdThjOTVcdThjOTRcdThjZjlcdThkNmZcdThlNGVcdThlNGRcdThlNTNcdThlNTBcdThlNGNc''@;'; put 'put ''dThlNDdcdThmNDNcdThmNDBcdTkwODVcdTkwN2VcdTkxMzhcdTkxOWFcdTkxYTJcdTkxOWJcdTkxOTlcdTkxOWZcdTkxYTFcdTkxOWRcdTkxYTBcdTkzYTFcdTkzODNcdTkzYWZcdTkzNjRcdTkzNTZcdTkzNDdcdTkzN2NcdTkzNThcdTkzNWNcdTkzNzZcdTkzNDlcdTkzNTBcdTkzNTFcdTkz''@;'; put 'put ''NjBcdTkzNmRcdTkzOGZcdTkzNGNcdTkzNmFcdTkzNzlcdTkzNTdcdTkzNTVcdTkzNTJcdTkzNGZcdTkzNzFcdTkzNzdcdTkzN2JcdTkzNjFcdTkzNWVcdTkzNjNcdTkzNjdcdTkzODBcdTkzNGVcdTkzNTlcdTk1YzdcdTk1YzBcdTk1YzlcdTk1YzNcdTk1YzVcdTk1YjdcdTk2YWVcdTk2YjBc''@;'; put 'put ''dTk2YWNcdTk3MjBcdTk3MWZcdTk3MThcdTk3MWRcdTk3MTlcdTk3OWFcdTk3YTFcdTk3OWMiXSxbImVmNDAiLCJcdTk3OWVcdTk3OWRcdTk3ZDVcdTk3ZDRcdTk3ZjFcdTk4NDFcdTk4NDRcdTk4NGFcdTk4NDlcdTk4NDVcdTk4NDNcdTk5MjVcdTk5MmJcdTk5MmNcdTk5MmFcdTk5MzNcdTk5''@;'; put 'put ''MzJcdTk5MmZcdTk5MmRcdTk5MzFcdTk5MzBcdTk5OThcdTk5YTNcdTk5YTFcdTlhMDJcdTk5ZmFcdTk5ZjRcdTk5ZjdcdTk5ZjlcdTk5ZjhcdTk5ZjZcdTk5ZmJcdTk5ZmRcdTk5ZmVcdTk5ZmNcdTlhMDNcdTlhYmVcdTlhZmVcdTlhZmRcdTliMDFcdTlhZmNcdTliNDhcdTliOWFcdTliYThc''@;'; put 'put ''dTliOWVcdTliOWJcdTliYTZcdTliYTFcdTliYTVcdTliYTRcdTliODZcdTliYTJcdTliYTBcdTliYWZcdTlkMzNcdTlkNDFcdTlkNjdcdTlkMzZcdTlkMmVcdTlkMmZcdTlkMzFcdTlkMzhcdTlkMzAiXSxbImVmYTEiLCJcdTlkNDVcdTlkNDJcdTlkNDNcdTlkM2VcdTlkMzdcdTlkNDBcdTlk''@;'; put 'put ''M2RcdTdmZjVcdTlkMmRcdTllOGFcdTllODlcdTllOGRcdTllYjBcdTllYzhcdTllZGFcdTllZmJcdTllZmZcdTlmMjRcdTlmMjNcdTlmMjJcdTlmNTRcdTlmYTBcdTUxMzFcdTUxMmRcdTUxMmVcdTU2OThcdTU2OWNcdTU2OTdcdTU2OWFcdTU2OWRcdTU2OTlcdTU5NzBcdTViM2NcdTVjNjlc''@;'; put 'put ''dTVjNmFcdTVkYzBcdTVlNmRcdTVlNmVcdTYxZDhcdTYxZGZcdTYxZWRcdTYxZWVcdTYxZjFcdTYxZWFcdTYxZjBcdTYxZWJcdTYxZDZcdTYxZTlcdTY0ZmZcdTY1MDRcdTY0ZmRcdTY0ZjhcdTY1MDFcdTY1MDNcdTY0ZmNcdTY1OTRcdTY1ZGJcdTY2ZGFcdTY2ZGJcdTY2ZDhcdTZhYzVcdTZh''@;'; put 'put ''YjlcdTZhYmRcdTZhZTFcdTZhYzZcdTZhYmFcdTZhYjZcdTZhYjdcdTZhYzdcdTZhYjRcdTZhYWRcdTZiNWVcdTZiYzlcdTZjMGJcdTcwMDdcdTcwMGNcdTcwMGRcdTcwMDFcdTcwMDVcdTcwMTRcdTcwMGVcdTZmZmZcdTcwMDBcdTZmZmJcdTcwMjZcdTZmZmNcdTZmZjdcdTcwMGFcdTcyMDFc''@;'; put 'put ''dTcxZmZcdTcxZjlcdTcyMDNcdTcxZmRcdTczNzYiXSxbImYwNDAiLCJcdTc0YjhcdTc0YzBcdTc0YjVcdTc0YzFcdTc0YmVcdTc0YjZcdTc0YmJcdTc0YzJcdTc1MTRcdTc1MTNcdTc2NWNcdTc2NjRcdTc2NTlcdTc2NTBcdTc2NTNcdTc2NTdcdTc2NWFcdTc2YTZcdTc2YmRcdTc2ZWNcdTc3''@;'; put 'put ''YzJcdTc3YmFcdTc4ZmZcdTc5MGNcdTc5MTNcdTc5MTRcdTc5MDlcdTc5MTBcdTc5MTJcdTc5MTFcdTc5YWRcdTc5YWNcdTdhNWZcdTdjMWNcdTdjMjlcdTdjMTlcdTdjMjBcdTdjMWZcdTdjMmRcdTdjMWRcdTdjMjZcdTdjMjhcdTdjMjJcdTdjMjVcdTdjMzBcdTdlNWNcdTdlNTBcdTdlNTZc''@;'; put 'put ''dTdlNjNcdTdlNThcdTdlNjJcdTdlNWZcdTdlNTFcdTdlNjBcdTdlNTdcdTdlNTNcdTdmYjVcdTdmYjNcdTdmZjdcdTdmZjhcdTgwNzVcdTgxZDFcdTgxZDIiXSxbImYwYTEiLCJcdTgxZDBcdTgyNWZcdTgyNWVcdTg1YjRcdTg1YzZcdTg1YzBcdTg1YzNcdTg1YzJcdTg1YjNcdTg1YjVcdTg1''@;'; put 'put ''YmRcdTg1YzdcdTg1YzRcdTg1YmZcdTg1Y2JcdTg1Y2VcdTg1YzhcdTg1YzVcdTg1YjFcdTg1YjZcdTg1ZDJcdTg2MjRcdTg1YjhcdTg1YjdcdTg1YmVcdTg2NjlcdTg3ZTdcdTg3ZTZcdTg3ZTJcdTg3ZGJcdTg3ZWJcdTg3ZWFcdTg3ZTVcdTg3ZGZcdTg3ZjNcdTg3ZTRcdTg3ZDRcdTg3ZGNc''@;'; put 'put ''dTg3ZDNcdTg3ZWRcdTg3ZDhcdTg3ZTNcdTg3YTRcdTg3ZDdcdTg3ZDlcdTg4MDFcdTg3ZjRcdTg3ZThcdTg3ZGRcdTg5NTNcdTg5NGJcdTg5NGZcdTg5NGNcdTg5NDZcdTg5NTBcdTg5NTFcdTg5NDlcdThiMmFcdThiMjdcdThiMjNcdThiMzNcdThiMzBcdThiMzVcdThiNDdcdThiMmZcdThi''@;'; put 'put ''M2NcdThiM2VcdThiMzFcdThiMjVcdThiMzdcdThiMjZcdThiMzZcdThiMmVcdThiMjRcdThiM2JcdThiM2RcdThiM2FcdThjNDJcdThjNzVcdThjOTlcdThjOThcdThjOTdcdThjZmVcdThkMDRcdThkMDJcdThkMDBcdThlNWNcdThlNjJcdThlNjBcdThlNTdcdThlNTZcdThlNWVcdThlNjVc''@;'; put 'put ''dThlNjciXSxbImYxNDAiLCJcdThlNWJcdThlNWFcdThlNjFcdThlNWRcdThlNjlcdThlNTRcdThmNDZcdThmNDdcdThmNDhcdThmNGJcdTkxMjhcdTkxM2FcdTkxM2JcdTkxM2VcdTkxYThcdTkxYTVcdTkxYTdcdTkxYWZcdTkxYWFcdTkzYjVcdTkzOGNcdTkzOTJcdTkzYjdcdTkzOWJcdTkz''@;'; put 'put ''OWRcdTkzODlcdTkzYTdcdTkzOGVcdTkzYWFcdTkzOWVcdTkzYTZcdTkzOTVcdTkzODhcdTkzOTlcdTkzOWZcdTkzOGRcdTkzYjFcdTkzOTFcdTkzYjJcdTkzYTRcdTkzYThcdTkzYjRcdTkzYTNcdTkzYTVcdTk1ZDJcdTk1ZDNcdTk1ZDFcdTk2YjNcdTk2ZDdcdTk2ZGFcdTVkYzJcdTk2ZGZc''@;'; put 'put ''dTk2ZDhcdTk2ZGRcdTk3MjNcdTk3MjJcdTk3MjVcdTk3YWNcdTk3YWVcdTk3YThcdTk3YWJcdTk3YTRcdTk3YWEiXSxbImYxYTEiLCJcdTk3YTJcdTk3YTVcdTk3ZDdcdTk3ZDlcdTk3ZDZcdTk3ZDhcdTk3ZmFcdTk4NTBcdTk4NTFcdTk4NTJcdTk4YjhcdTk5NDFcdTk5M2NcdTk5M2FcdTlh''@;'; put 'put ''MGZcdTlhMGJcdTlhMDlcdTlhMGRcdTlhMDRcdTlhMTFcdTlhMGFcdTlhMDVcdTlhMDdcdTlhMDZcdTlhYzBcdTlhZGNcdTliMDhcdTliMDRcdTliMDVcdTliMjlcdTliMzVcdTliNGFcdTliNGNcdTliNGJcdTliYzdcdTliYzZcdTliYzNcdTliYmZcdTliYzFcdTliYjVcdTliYjhcdTliZDNc''@;'; put 'put ''dTliYjZcdTliYzRcdTliYjlcdTliYmRcdTlkNWNcdTlkNTNcdTlkNGZcdTlkNGFcdTlkNWJcdTlkNGJcdTlkNTlcdTlkNTZcdTlkNGNcdTlkNTdcdTlkNTJcdTlkNTRcdTlkNWZcdTlkNThcdTlkNWFcdTllOGVcdTllOGNcdTllZGZcdTlmMDFcdTlmMDBcdTlmMTZcdTlmMjVcdTlmMmJcdTlm''@;'; put 'put ''MmFcdTlmMjlcdTlmMjhcdTlmNGNcdTlmNTVcdTUxMzRcdTUxMzVcdTUyOTZcdTUyZjdcdTUzYjRcdTU2YWJcdTU2YWRcdTU2YTZcdTU2YTdcdTU2YWFcdTU2YWNcdTU4ZGFcdTU4ZGRcdTU4ZGJcdTU5MTJcdTViM2RcdTViM2VcdTViM2ZcdTVkYzNcdTVlNzAiXSxbImYyNDAiLCJcdTVmYmZc''@;'; put 'put ''dTYxZmJcdTY1MDdcdTY1MTBcdTY1MGRcdTY1MDlcdTY1MGNcdTY1MGVcdTY1ODRcdTY1ZGVcdTY1ZGRcdTY2ZGVcdTZhZTdcdTZhZTBcdTZhY2NcdTZhZDFcdTZhZDlcdTZhY2JcdTZhZGZcdTZhZGNcdTZhZDBcdTZhZWJcdTZhY2ZcdTZhY2RcdTZhZGVcdTZiNjBcdTZiYjBcdTZjMGNcdTcw''@;'; put 'put ''MTlcdTcwMjdcdTcwMjBcdTcwMTZcdTcwMmJcdTcwMjFcdTcwMjJcdTcwMjNcdTcwMjlcdTcwMTdcdTcwMjRcdTcwMWNcdTcwMmFcdTcyMGNcdTcyMGFcdTcyMDdcdTcyMDJcdTcyMDVcdTcyYTVcdTcyYTZcdTcyYTRcdTcyYTNcdTcyYTFcdTc0Y2JcdTc0YzVcdTc0YjdcdTc0YzNcdTc1MTZc''@;'; put 'put ''dTc2NjBcdTc3YzlcdTc3Y2FcdTc3YzRcdTc3ZjFcdTc5MWRcdTc5MWIiXSxbImYyYTEiLCJcdTc5MjFcdTc5MWNcdTc5MTdcdTc5MWVcdTc5YjBcdTdhNjdcdTdhNjhcdTdjMzNcdTdjM2NcdTdjMzlcdTdjMmNcdTdjM2JcdTdjZWNcdTdjZWFcdTdlNzZcdTdlNzVcdTdlNzhcdTdlNzBcdTdl''@;'; put 'put ''NzdcdTdlNmZcdTdlN2FcdTdlNzJcdTdlNzRcdTdlNjhcdTdmNGJcdTdmNGFcdTdmODNcdTdmODZcdTdmYjdcdTdmZmRcdTdmZmVcdTgwNzhcdTgxZDdcdTgxZDVcdTgyNjRcdTgyNjFcdTgyNjNcdTg1ZWJcdTg1ZjFcdTg1ZWRcdTg1ZDlcdTg1ZTFcdTg1ZThcdTg1ZGFcdTg1ZDdcdTg1ZWNc''@;'; put 'put ''dTg1ZjJcdTg1ZjhcdTg1ZDhcdTg1ZGZcdTg1ZTNcdTg1ZGNcdTg1ZDFcdTg1ZjBcdTg1ZTZcdTg1ZWZcdTg1ZGVcdTg1ZTJcdTg4MDBcdTg3ZmFcdTg4MDNcdTg3ZjZcdTg3ZjdcdTg4MDlcdTg4MGNcdTg4MGJcdTg4MDZcdTg3ZmNcdTg4MDhcdTg3ZmZcdTg4MGFcdTg4MDJcdTg5NjJcdTg5''@;'; put 'put ''NWFcdTg5NWJcdTg5NTdcdTg5NjFcdTg5NWNcdTg5NThcdTg5NWRcdTg5NTlcdTg5ODhcdTg5YjdcdTg5YjZcdTg5ZjZcdThiNTBcdThiNDhcdThiNGFcdThiNDBcdThiNTNcdThiNTZcdThiNTRcdThiNGJcdThiNTUiXSxbImYzNDAiLCJcdThiNTFcdThiNDJcdThiNTJcdThiNTdcdThjNDNc''@;'; put 'put ''dThjNzdcdThjNzZcdThjOWFcdThkMDZcdThkMDdcdThkMDlcdThkYWNcdThkYWFcdThkYWRcdThkYWJcdThlNmRcdThlNzhcdThlNzNcdThlNmFcdThlNmZcdThlN2JcdThlYzJcdThmNTJcdThmNTFcdThmNGZcdThmNTBcdThmNTNcdThmYjRcdTkxNDBcdTkxM2ZcdTkxYjBcdTkxYWRcdTkz''@;'; put 'put ''ZGVcdTkzYzdcdTkzY2ZcdTkzYzJcdTkzZGFcdTkzZDBcdTkzZjlcdTkzZWNcdTkzY2NcdTkzZDlcdTkzYTlcdTkzZTZcdTkzY2FcdTkzZDRcdTkzZWVcdTkzZTNcdTkzZDVcdTkzYzRcdTkzY2VcdTkzYzBcdTkzZDJcdTkzZTdcdTk1N2RcdTk1ZGFcdTk1ZGJcdTk2ZTFcdTk3MjlcdTk3MmJc''@;'; put 'put ''dTk3MmNcdTk3MjhcdTk3MjYiXSxbImYzYTEiLCJcdTk3YjNcdTk3YjdcdTk3YjZcdTk3ZGRcdTk3ZGVcdTk3ZGZcdTk4NWNcdTk4NTlcdTk4NWRcdTk4NTdcdTk4YmZcdTk4YmRcdTk4YmJcdTk4YmVcdTk5NDhcdTk5NDdcdTk5NDNcdTk5YTZcdTk5YTdcdTlhMWFcdTlhMTVcdTlhMjVcdTlh''@;'; put 'put ''MWRcdTlhMjRcdTlhMWJcdTlhMjJcdTlhMjBcdTlhMjdcdTlhMjNcdTlhMWVcdTlhMWNcdTlhMTRcdTlhYzJcdTliMGJcdTliMGFcdTliMGVcdTliMGNcdTliMzdcdTliZWFcdTliZWJcdTliZTBcdTliZGVcdTliZTRcdTliZTZcdTliZTJcdTliZjBcdTliZDRcdTliZDdcdTliZWNcdTliZGNc''@;'; put 'put ''dTliZDlcdTliZTVcdTliZDVcdTliZTFcdTliZGFcdTlkNzdcdTlkODFcdTlkOGFcdTlkODRcdTlkODhcdTlkNzFcdTlkODBcdTlkNzhcdTlkODZcdTlkOGJcdTlkOGNcdTlkN2RcdTlkNmJcdTlkNzRcdTlkNzVcdTlkNzBcdTlkNjlcdTlkODVcdTlkNzNcdTlkN2JcdTlkODJcdTlkNmZcdTlk''@;'; put 'put ''NzlcdTlkN2ZcdTlkODdcdTlkNjhcdTllOTRcdTllOTFcdTllYzBcdTllZmNcdTlmMmRcdTlmNDBcdTlmNDFcdTlmNGRcdTlmNTZcdTlmNTdcdTlmNThcdTUzMzdcdTU2YjIiXSxbImY0NDAiLCJcdTU2YjVcdTU2YjNcdTU4ZTNcdTViNDVcdTVkYzZcdTVkYzdcdTVlZWVcdTVlZWZcdTVmYzBc''@;'; put 'put ''dTVmYzFcdTYxZjlcdTY1MTdcdTY1MTZcdTY1MTVcdTY1MTNcdTY1ZGZcdTY2ZThcdTY2ZTNcdTY2ZTRcdTZhZjNcdTZhZjBcdTZhZWFcdTZhZThcdTZhZjlcdTZhZjFcdTZhZWVcdTZhZWZcdTcwM2NcdTcwMzVcdTcwMmZcdTcwMzdcdTcwMzRcdTcwMzFcdTcwNDJcdTcwMzhcdTcwM2ZcdTcw''@;'; put 'put ''M2FcdTcwMzlcdTcwNDBcdTcwM2JcdTcwMzNcdTcwNDFcdTcyMTNcdTcyMTRcdTcyYThcdTczN2RcdTczN2NcdTc0YmFcdTc2YWJcdTc2YWFcdTc2YmVcdTc2ZWRcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3Y2RcdTc3ZjJcdTc5MjVcdTc5MjNcdTc5MjdcdTc5MjhcdTc5MjRcdTc5MjkiXSxbImY0''@;'; put 'put ''YTEiLCJcdTc5YjJcdTdhNmVcdTdhNmNcdTdhNmRcdTdhZjdcdTdjNDlcdTdjNDhcdTdjNGFcdTdjNDdcdTdjNDVcdTdjZWVcdTdlN2JcdTdlN2VcdTdlODFcdTdlODBcdTdmYmFcdTdmZmZcdTgwNzlcdTgxZGJcdTgxZDlcdTgyMGJcdTgyNjhcdTgyNjlcdTg2MjJcdTg1ZmZcdTg2MDFcdTg1''@;'; put 'put ''ZmVcdTg2MWJcdTg2MDBcdTg1ZjZcdTg2MDRcdTg2MDlcdTg2MDVcdTg2MGNcdTg1ZmRcdTg4MTlcdTg4MTBcdTg4MTFcdTg4MTdcdTg4MTNcdTg4MTZcdTg5NjNcdTg5NjZcdTg5YjlcdTg5ZjdcdThiNjBcdThiNmFcdThiNWRcdThiNjhcdThiNjNcdThiNjVcdThiNjdcdThiNmRcdThkYWVc''@;'; put 'put ''dThlODZcdThlODhcdThlODRcdThmNTlcdThmNTZcdThmNTdcdThmNTVcdThmNThcdThmNWFcdTkwOGRcdTkxNDNcdTkxNDFcdTkxYjdcdTkxYjVcdTkxYjJcdTkxYjNcdTk0MGJcdTk0MTNcdTkzZmJcdTk0MjBcdTk0MGZcdTk0MTRcdTkzZmVcdTk0MTVcdTk0MTBcdTk0MjhcdTk0MTlcdTk0''@;'; put 'put ''MGRcdTkzZjVcdTk0MDBcdTkzZjdcdTk0MDdcdTk0MGVcdTk0MTZcdTk0MTJcdTkzZmFcdTk0MDlcdTkzZjhcdTk0MGFcdTkzZmYiXSxbImY1NDAiLCJcdTkzZmNcdTk0MGNcdTkzZjZcdTk0MTFcdTk0MDZcdTk1ZGVcdTk1ZTBcdTk1ZGZcdTk3MmVcdTk3MmZcdTk3YjlcdTk3YmJcdTk3ZmRc''@;'; put 'put ''dTk3ZmVcdTk4NjBcdTk4NjJcdTk4NjNcdTk4NWZcdTk4YzFcdTk4YzJcdTk5NTBcdTk5NGVcdTk5NTlcdTk5NGNcdTk5NGJcdTk5NTNcdTlhMzJcdTlhMzRcdTlhMzFcdTlhMmNcdTlhMmFcdTlhMzZcdTlhMjlcdTlhMmVcdTlhMzhcdTlhMmRcdTlhYzdcdTlhY2FcdTlhYzZcdTliMTBcdTli''@;'; put 'put ''MTJcdTliMTFcdTljMGJcdTljMDhcdTliZjdcdTljMDVcdTljMTJcdTliZjhcdTljNDBcdTljMDdcdTljMGVcdTljMDZcdTljMTdcdTljMTRcdTljMDlcdTlkOWZcdTlkOTlcdTlkYTRcdTlkOWRcdTlkOTJcdTlkOThcdTlkOTBcdTlkOWIiXSxbImY1YTEiLCJcdTlkYTBcdTlkOTRcdTlkOWNc''@;'; put 'put ''dTlkYWFcdTlkOTdcdTlkYTFcdTlkOWFcdTlkYTJcdTlkYThcdTlkOWVcdTlkYTNcdTlkYmZcdTlkYTlcdTlkOTZcdTlkYTZcdTlkYTdcdTllOTlcdTllOWJcdTllOWFcdTllZTVcdTllZTRcdTllZTdcdTllZTZcdTlmMzBcdTlmMmVcdTlmNWJcdTlmNjBcdTlmNWVcdTlmNWRcdTlmNTlcdTlm''@;'; put 'put ''OTFcdTUxM2FcdTUxMzlcdTUyOThcdTUyOTdcdTU2YzNcdTU2YmRcdTU2YmVcdTViNDhcdTViNDdcdTVkY2JcdTVkY2ZcdTVlZjFcdTYxZmRcdTY1MWJcdTZiMDJcdTZhZmNcdTZiMDNcdTZhZjhcdTZiMDBcdTcwNDNcdTcwNDRcdTcwNGFcdTcwNDhcdTcwNDlcdTcwNDVcdTcwNDZcdTcyMWRc''@;'; put 'put ''dTcyMWFcdTcyMTlcdTczN2VcdTc1MTdcdTc2NmFcdTc3ZDBcdTc5MmRcdTc5MzFcdTc5MmZcdTdjNTRcdTdjNTNcdTdjZjJcdTdlOGFcdTdlODdcdTdlODhcdTdlOGJcdTdlODZcdTdlOGRcdTdmNGRcdTdmYmJcdTgwMzBcdTgxZGRcdTg2MThcdTg2MmFcdTg2MjZcdTg2MWZcdTg2MjNcdTg2''@;'; put 'put ''MWNcdTg2MTlcdTg2MjdcdTg2MmVcdTg2MjFcdTg2MjBcdTg2MjlcdTg2MWVcdTg2MjUiXSxbImY2NDAiLCJcdTg4MjlcdTg4MWRcdTg4MWJcdTg4MjBcdTg4MjRcdTg4MWNcdTg4MmJcdTg4NGFcdTg5NmRcdTg5NjlcdTg5NmVcdTg5NmJcdTg5ZmFcdThiNzlcdThiNzhcdThiNDVcdThiN2Fc''@;'; put 'put ''dThiN2JcdThkMTBcdThkMTRcdThkYWZcdThlOGVcdThlOGNcdThmNWVcdThmNWJcdThmNWRcdTkxNDZcdTkxNDRcdTkxNDVcdTkxYjlcdTk0M2ZcdTk0M2JcdTk0MzZcdTk0MjlcdTk0M2RcdTk0M2NcdTk0MzBcdTk0MzlcdTk0MmFcdTk0MzdcdTk0MmNcdTk0NDBcdTk0MzFcdTk1ZTVcdTk1''@;'; put 'put ''ZTRcdTk1ZTNcdTk3MzVcdTk3M2FcdTk3YmZcdTk3ZTFcdTk4NjRcdTk4YzlcdTk4YzZcdTk4YzBcdTk5NThcdTk5NTZcdTlhMzlcdTlhM2RcdTlhNDZcdTlhNDRcdTlhNDJcdTlhNDFcdTlhM2EiXSxbImY2YTEiLCJcdTlhM2ZcdTlhY2RcdTliMTVcdTliMTdcdTliMThcdTliMTZcdTliM2Fc''@;'; put 'put ''dTliNTJcdTljMmJcdTljMWRcdTljMWNcdTljMmNcdTljMjNcdTljMjhcdTljMjlcdTljMjRcdTljMjFcdTlkYjdcdTlkYjZcdTlkYmNcdTlkYzFcdTlkYzdcdTlkY2FcdTlkY2ZcdTlkYmVcdTlkYzVcdTlkYzNcdTlkYmJcdTlkYjVcdTlkY2VcdTlkYjlcdTlkYmFcdTlkYWNcdTlkYzhcdTlk''@;'; put 'put ''YjFcdTlkYWRcdTlkY2NcdTlkYjNcdTlkY2RcdTlkYjJcdTllN2FcdTllOWNcdTllZWJcdTllZWVcdTllZWRcdTlmMWJcdTlmMThcdTlmMWFcdTlmMzFcdTlmNGVcdTlmNjVcdTlmNjRcdTlmOTJcdTRlYjlcdTU2YzZcdTU2YzVcdTU2Y2JcdTU5NzFcdTViNGJcdTViNGNcdTVkZDVcdTVkZDFc''@;'; put 'put ''dTVlZjJcdTY1MjFcdTY1MjBcdTY1MjZcdTY1MjJcdTZiMGJcdTZiMDhcdTZiMDlcdTZjMGRcdTcwNTVcdTcwNTZcdTcwNTdcdTcwNTJcdTcyMWVcdTcyMWZcdTcyYTlcdTczN2ZcdTc0ZDhcdTc0ZDVcdTc0ZDlcdTc0ZDdcdTc2NmRcdTc2YWRcdTc5MzVcdTc5YjRcdTdhNzBcdTdhNzFcdTdj''@;'; put 'put ''NTdcdTdjNWNcdTdjNTlcdTdjNWJcdTdjNWEiXSxbImY3NDAiLCJcdTdjZjRcdTdjZjFcdTdlOTFcdTdmNGZcdTdmODdcdTgxZGVcdTgyNmJcdTg2MzRcdTg2MzVcdTg2MzNcdTg2MmNcdTg2MzJcdTg2MzZcdTg4MmNcdTg4MjhcdTg4MjZcdTg4MmFcdTg4MjVcdTg5NzFcdTg5YmZcdTg5YmVc''@;'; put 'put ''dTg5ZmJcdThiN2VcdThiODRcdThiODJcdThiODZcdThiODVcdThiN2ZcdThkMTVcdThlOTVcdThlOTRcdThlOWFcdThlOTJcdThlOTBcdThlOTZcdThlOTdcdThmNjBcdThmNjJcdTkxNDdcdTk0NGNcdTk0NTBcdTk0NGFcdTk0NGJcdTk0NGZcdTk0NDdcdTk0NDVcdTk0NDhcdTk0NDlcdTk0''@;'; put 'put ''NDZcdTk3M2ZcdTk3ZTNcdTk4NmFcdTk4NjlcdTk4Y2JcdTk5NTRcdTk5NWJcdTlhNGVcdTlhNTNcdTlhNTRcdTlhNGNcdTlhNGZcdTlhNDhcdTlhNGEiXSxbImY3YTEiLCJcdTlhNDlcdTlhNTJcdTlhNTBcdTlhZDBcdTliMTlcdTliMmJcdTliM2JcdTliNTZcdTliNTVcdTljNDZcdTljNDhc''@;'; put 'put ''dTljM2ZcdTljNDRcdTljMzlcdTljMzNcdTljNDFcdTljM2NcdTljMzdcdTljMzRcdTljMzJcdTljM2RcdTljMzZcdTlkZGJcdTlkZDJcdTlkZGVcdTlkZGFcdTlkY2JcdTlkZDBcdTlkZGNcdTlkZDFcdTlkZGZcdTlkZTlcdTlkZDlcdTlkZDhcdTlkZDZcdTlkZjVcdTlkZDVcdTlkZGRcdTll''@;'; put 'put ''YjZcdTllZjBcdTlmMzVcdTlmMzNcdTlmMzJcdTlmNDJcdTlmNmJcdTlmOTVcdTlmYTJcdTUxM2RcdTUyOTlcdTU4ZThcdTU4ZTdcdTU5NzJcdTViNGRcdTVkZDhcdTg4MmZcdTVmNGZcdTYyMDFcdTYyMDNcdTYyMDRcdTY1MjlcdTY1MjVcdTY1OTZcdTY2ZWJcdTZiMTFcdTZiMTJcdTZiMGZc''@;'; put 'put ''dTZiY2FcdTcwNWJcdTcwNWFcdTcyMjJcdTczODJcdTczODFcdTczODNcdTc2NzBcdTc3ZDRcdTdjNjdcdTdjNjZcdTdlOTVcdTgyNmNcdTg2M2FcdTg2NDBcdTg2MzlcdTg2M2NcdTg2MzFcdTg2M2JcdTg2M2VcdTg4MzBcdTg4MzJcdTg4MmVcdTg4MzNcdTg5NzZcdTg5NzRcdTg5NzNcdTg5''@;'; put 'put ''ZmUiXSxbImY4NDAiLCJcdThiOGNcdThiOGVcdThiOGJcdThiODhcdThjNDVcdThkMTlcdThlOThcdThmNjRcdThmNjNcdTkxYmNcdTk0NjJcdTk0NTVcdTk0NWRcdTk0NTdcdTk0NWVcdTk3YzRcdTk3YzVcdTk4MDBcdTlhNTZcdTlhNTlcdTliMWVcdTliMWZcdTliMjBcdTljNTJcdTljNThc''@;'; put 'put ''dTljNTBcdTljNGFcdTljNGRcdTljNGJcdTljNTVcdTljNTlcdTljNGNcdTljNGVcdTlkZmJcdTlkZjdcdTlkZWZcdTlkZTNcdTlkZWJcdTlkZjhcdTlkZTRcdTlkZjZcdTlkZTFcdTlkZWVcdTlkZTZcdTlkZjJcdTlkZjBcdTlkZTJcdTlkZWNcdTlkZjRcdTlkZjNcdTlkZThcdTlkZWRcdTll''@;'; put 'put ''YzJcdTllZDBcdTllZjJcdTllZjNcdTlmMDZcdTlmMWNcdTlmMzhcdTlmMzdcdTlmMzZcdTlmNDNcdTlmNGYiXSxbImY4YTEiLCJcdTlmNzFcdTlmNzBcdTlmNmVcdTlmNmZcdTU2ZDNcdTU2Y2RcdTViNGVcdTVjNmRcdTY1MmRcdTY2ZWRcdTY2ZWVcdTZiMTNcdTcwNWZcdTcwNjFcdTcwNWRc''@;'; put 'put ''dTcwNjBcdTcyMjNcdTc0ZGJcdTc0ZTVcdTc3ZDVcdTc5MzhcdTc5YjdcdTc5YjZcdTdjNmFcdTdlOTdcdTdmODlcdTgyNmRcdTg2NDNcdTg4MzhcdTg4MzdcdTg4MzVcdTg4NGJcdThiOTRcdThiOTVcdThlOWVcdThlOWZcdThlYTBcdThlOWRcdTkxYmVcdTkxYmRcdTkxYzJcdTk0NmJcdTk0''@;'; put 'put ''NjhcdTk0NjlcdTk2ZTVcdTk3NDZcdTk3NDNcdTk3NDdcdTk3YzdcdTk3ZTVcdTlhNWVcdTlhZDVcdTliNTlcdTljNjNcdTljNjdcdTljNjZcdTljNjJcdTljNWVcdTljNjBcdTllMDJcdTlkZmVcdTllMDdcdTllMDNcdTllMDZcdTllMDVcdTllMDBcdTllMDFcdTllMDlcdTlkZmZcdTlkZmRc''@;'; put 'put ''dTllMDRcdTllYTBcdTlmMWVcdTlmNDZcdTlmNzRcdTlmNzVcdTlmNzZcdTU2ZDRcdTY1MmVcdTY1YjhcdTZiMThcdTZiMTlcdTZiMTdcdTZiMWFcdTcwNjJcdTcyMjZcdTcyYWFcdTc3ZDhcdTc3ZDlcdTc5MzlcdTdjNjlcdTdjNmJcdTdjZjZcdTdlOWEiXSxbImY5NDAiLCJcdTdlOThcdTdl''@;'; put 'put ''OWJcdTdlOTlcdTgxZTBcdTgxZTFcdTg2NDZcdTg2NDdcdTg2NDhcdTg5NzlcdTg5N2FcdTg5N2NcdTg5N2JcdTg5ZmZcdThiOThcdThiOTlcdThlYTVcdThlYTRcdThlYTNcdTk0NmVcdTk0NmRcdTk0NmZcdTk0NzFcdTk0NzNcdTk3NDlcdTk4NzJcdTk5NWZcdTljNjhcdTljNmVcdTljNmRc''@;'; put 'put ''dTllMGJcdTllMGRcdTllMTBcdTllMGZcdTllMTJcdTllMTFcdTllYTFcdTllZjVcdTlmMDlcdTlmNDdcdTlmNzhcdTlmN2JcdTlmN2FcdTlmNzlcdTU3MWVcdTcwNjZcdTdjNmZcdTg4M2NcdThkYjJcdThlYTZcdTkxYzNcdTk0NzRcdTk0NzhcdTk0NzZcdTk0NzVcdTlhNjBcdTljNzRcdTlj''@;'; put 'put ''NzNcdTljNzFcdTljNzVcdTllMTRcdTllMTNcdTllZjZcdTlmMGEiXSxbImY5YTEiLCJcdTlmYTRcdTcwNjhcdTcwNjVcdTdjZjdcdTg2NmFcdTg4M2VcdTg4M2RcdTg4M2ZcdThiOWVcdThjOWNcdThlYTlcdThlYzlcdTk3NGJcdTk4NzNcdTk4NzRcdTk4Y2NcdTk5NjFcdTk5YWJcdTlhNjRc''@;'; put 'put ''dTlhNjZcdTlhNjdcdTliMjRcdTllMTVcdTllMTdcdTlmNDhcdTYyMDdcdTZiMWVcdTcyMjdcdTg2NGNcdThlYThcdTk0ODJcdTk0ODBcdTk0ODFcdTlhNjlcdTlhNjhcdTliMmVcdTllMTlcdTcyMjlcdTg2NGJcdThiOWZcdTk0ODNcdTljNzlcdTllYjdcdTc2NzVcdTlhNmJcdTljN2FcdTll''@;'; put 'put ''MWRcdTcwNjlcdTcwNmFcdTllYTRcdTlmN2VcdTlmNDlcdTlmOThcdTc4ODFcdTkyYjlcdTg4Y2ZcdTU4YmJcdTYwNTJcdTdjYTdcdTVhZmFcdTI1NTRcdTI1NjZcdTI1NTdcdTI1NjBcdTI1NmNcdTI1NjNcdTI1NWFcdTI1NjlcdTI1NWRcdTI1NTJcdTI1NjRcdTI1NTVcdTI1NWVcdTI1NmFc''@;'; put 'put ''dTI1NjFcdTI1NThcdTI1NjdcdTI1NWJcdTI1NTNcdTI1NjVcdTI1NTZcdTI1NWZcdTI1NmJcdTI1NjJcdTI1NTlcdTI1NjhcdTI1NWNcdTI1NTFcdTI1NTBcdTI1NmRcdTI1NmVcdTI1NzBcdTI1NmZcdTI1OTMiXV0nKX0sMzE1MzI6V2U9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1KU09O''@;'; put 'put ''LnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI3XSxbIjhlYTEiLCJcdWZmNjEiLDYyXSxbImExYTEiLCJcdTMwMDBcdTMwMDFcdTMwMDJcdWZmMGNcdWZmMGVcdTMwZmJcdWZmMWFcdWZmMWJcdWZmMWZcdWZmMDFcdTMwOWJcdTMwOWNceGI0XHVmZjQwXHhhOFx1ZmYzZVx1ZmZlM1x1ZmYzZlx1''@;'; put 'put ''MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1MjAxNVx1MjAxMFx1ZmYwZlx1ZmYzY1x1ZmY1ZVx1MjIyNVx1ZmY1Y1x1MjAyNlx1MjAyNVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1ZmYwOFx1ZmYwOVx1MzAxNFx1MzAxNVx1ZmYz''@;'; put 'put ''Ylx1ZmYzZFx1ZmY1Ylx1ZmY1ZFx1MzAwOCIsOSwiXHVmZjBiXHVmZjBkXHhiMVx4ZDdceGY3XHVmZjFkXHUyMjYwXHVmZjFjXHVmZjFlXHUyMjY2XHUyMjY3XHUyMjFlXHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmZlNVx1ZmYwNFx1ZmZlMFx1ZmZlMVx1ZmYw''@;'; put 'put ''NVx1ZmYwM1x1ZmYwNlx1ZmYwYVx1ZmYyMFx4YTdcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzciXSxbImEyYTEiLCJcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIwM2JcdTMwMTJcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTMwMTMiXSxb''@;'; put 'put ''ImEyYmEiLCJcdTIyMDhcdTIyMGJcdTIyODZcdTIyODdcdTIyODJcdTIyODNcdTIyMmFcdTIyMjkiXSxbImEyY2EiLCJcdTIyMjdcdTIyMjhcdWZmZTJcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDMiXSxbImEyZGMiLCJcdTIyMjBcdTIyYTVcdTIzMTJcdTIyMDJcdTIyMDdcdTIyNjFcdTIyNTJc''@;'; put 'put ''dTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmMiXSxbImEyZjIiLCJcdTIxMmJcdTIwMzBcdTI2NmZcdTI2NmRcdTI2NmFcdTIwMjBcdTIwMjFceGI2Il0sWyJhMmZlIiwiXHUyNWVmIl0sWyJhM2IwIiwiXHVmZjEwIiw5XSxbImEzYzEiLCJcdWZmMjEiLDI1''@;'; put 'put ''XSxbImEzZTEiLCJcdWZmNDEiLDI1XSxbImE0YTEiLCJcdTMwNDEiLDgyXSxbImE1YTEiLCJcdTMwYTEiLDg1XSxbImE2YTEiLCJcdTAzOTEiLDE2LCJcdTAzYTMiLDZdLFsiYTZjMSIsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNl0sWyJhN2ExIiwiXHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDI1''@;'; put 'put ''XSxbImE3ZDEiLCJcdTA0MzAiLDUsIlx1MDQ1MVx1MDQzNiIsMjVdLFsiYThhMSIsIlx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1''@;'; put 'put ''MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0MiJdLFsiYWRhMSIsIlx1MjQ2MCIsMTksIlx1MjE2MCIsOV0sWyJhZGMwIiwiXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUz''@;'; put 'put ''MzM2XHUzMzUxXHUzMzU3XHUzMzBkXHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUzMzllXHUzMzhlXHUzMzhmXHUzM2M0XHUzM2ExIl0sWyJhZGRmIiwiXHUzMzdiXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUzMmE0Iiw0LCJcdTMyMzFcdTMyMzJc''@;'; put 'put ''dTMyMzlcdTMzN2VcdTMzN2RcdTMzN2NcdTIyNTJcdTIyNjFcdTIyMmJcdTIyMmVcdTIyMTFcdTIyMWFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTIyMzVcdTIyMjlcdTIyMmEiXSxbImIwYTEiLCJcdTRlOWNcdTU1MTZcdTVhMDNcdTk2M2ZcdTU0YzBcdTYxMWJcdTYzMjhcdTU5ZjZcdTkw''@;'; put 'put ''MjJcdTg0NzVcdTgzMWNcdTdhNTBcdTYwYWFcdTYzZTFcdTZlMjVcdTY1ZWRcdTg0NjZcdTgyYTZcdTliZjVcdTY4OTNcdTU3MjdcdTY1YTFcdTYyNzFcdTViOWJcdTU5ZDBcdTg2N2JcdTk4ZjRcdTdkNjJcdTdkYmVcdTliOGVcdTYyMTZcdTdjOWZcdTg4YjdcdTViODlcdTVlYjVcdTYzMDlc''@;'; put 'put ''dTY2OTdcdTY4NDhcdTk1YzdcdTk3OGRcdTY3NGZcdTRlZTVcdTRmMGFcdTRmNGRcdTRmOWRcdTUwNDlcdTU2ZjJcdTU5MzdcdTU5ZDRcdTVhMDFcdTVjMDlcdTYwZGZcdTYxMGZcdTYxNzBcdTY2MTNcdTY5MDVcdTcwYmFcdTc1NGZcdTc1NzBcdTc5ZmJcdTdkYWRcdTdkZWZcdTgwYzNcdTg0''@;'; put 'put ''MGVcdTg4NjNcdThiMDJcdTkwNTVcdTkwN2FcdTUzM2JcdTRlOTVcdTRlYTVcdTU3ZGZcdTgwYjJcdTkwYzFcdTc4ZWZcdTRlMDBcdTU4ZjFcdTZlYTJcdTkwMzhcdTdhMzJcdTgzMjhcdTgyOGJcdTljMmZcdTUxNDFcdTUzNzBcdTU0YmRcdTU0ZTFcdTU2ZTBcdTU5ZmJcdTVmMTVcdTk4ZjJc''@;'; put 'put ''dTZkZWJcdTgwZTRcdTg1MmQiXSxbImIxYTEiLCJcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJcdTU0MGJcdTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJcdTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTlj''@;'; put 'put ''M2JcdTU5ZTVcdTUzYTlcdTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2ZjJcdTgzNGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVmNzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJc''@;'; put 'put ''dThhNjBcdTkyZWRcdTZkYjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFcdTk1YjJcdTY5OGVcdTUzYWRcdTUxODZcdTU3MTJcdTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcxZDVcdTcz''@;'; put 'put ''M2ZcdTdlMDFcdTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlkMWJcdTU4NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5NjVcdTVmODBcdTVmZGMiXSxbImIyYTEiLCJcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNc''@;'; put 'put ''dTlkMGVcdTllYzRcdTVjYTFcdTZjOTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZcdTY4NzZcdTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlcdTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2''@;'; put 'put ''MDlcdTU5MGZcdTVhYzFcdTViYjZcdTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZiNGNcdTZjYjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdiODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZc''@;'; put 'put ''dTkwNGVcdTk3MWVcdTg2OGFcdTRmYzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVcdTgyYmRcdTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2JcdTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYy''@;'; put 'put ''MTJcdTYyZDBcdTY1MzkiXSxbImIzYTEiLCJcdTliNDFcdTY2NjZcdTY4YjBcdTZkNzdcdTcwNzBcdTc1NGNcdTc2ODZcdTdkNzVcdTgyYTVcdTg3ZjlcdTk1OGJcdTk2OGVcdThjOWRcdTUxZjFcdTUyYmVcdTU5MTZcdTU0YjNcdTViYjNcdTVkMTZcdTYxNjhcdTY5ODJcdTZkYWZcdTc4OGRc''@;'; put 'put ''dTg0Y2JcdTg4NTdcdThhNzJcdTkzYTdcdTlhYjhcdTZkNmNcdTk5YThcdTg2ZDlcdTU3YTNcdTY3ZmZcdTg2Y2VcdTkyMGVcdTUyODNcdTU2ODdcdTU0MDRcdTVlZDNcdTYyZTFcdTY0YjlcdTY4M2NcdTY4MzhcdTZiYmJcdTczNzJcdTc4YmFcdTdhNmJcdTg5OWFcdTg5ZDJcdThkNmJcdThm''@;'; put 'put ''MDNcdTkwZWRcdTk1YTNcdTk2OTRcdTk3NjlcdTViNjZcdTVjYjNcdTY5N2RcdTk4NGRcdTk4NGVcdTYzOWJcdTdiMjBcdTZhMmJcdTZhN2ZcdTY4YjZcdTljMGRcdTZmNWZcdTUyNzJcdTU1OWRcdTYwNzBcdTYyZWNcdTZkM2JcdTZlMDdcdTZlZDFcdTg0NWJcdTg5MTBcdThmNDRcdTRlMTRc''@;'; put 'put ''dTljMzlcdTUzZjZcdTY5MWJcdTZhM2FcdTk3ODRcdTY4MmFcdTUxNWNcdTdhYzNcdTg0YjJcdTkxZGNcdTkzOGNcdTU2NWJcdTlkMjhcdTY4MjJcdTgzMDVcdTg0MzEiXSxbImI0YTEiLCJcdTdjYTVcdTUyMDhcdTgyYzVcdTc0ZTZcdTRlN2VcdTRmODNcdTUxYTBcdTViZDJcdTUyMGFcdTUy''@;'; put 'put ''ZDhcdTUyZTdcdTVkZmJcdTU1OWFcdTU4MmFcdTU5ZTZcdTViOGNcdTViOThcdTViZGJcdTVlNzJcdTVlNzlcdTYwYTNcdTYxMWZcdTYxNjNcdTYxYmVcdTYzZGJcdTY1NjJcdTY3ZDFcdTY4NTNcdTY4ZmFcdTZiM2VcdTZiNTNcdTZjNTdcdTZmMjJcdTZmOTdcdTZmNDVcdTc0YjBcdTc1MThc''@;'; put 'put ''dTc2ZTNcdTc3MGJcdTdhZmZcdTdiYTFcdTdjMjFcdTdkZTlcdTdmMzZcdTdmZjBcdTgwOWRcdTgyNjZcdTgzOWVcdTg5YjNcdThhY2NcdThjYWJcdTkwODRcdTk0NTFcdTk1OTNcdTk1OTFcdTk1YTJcdTk2NjVcdTk3ZDNcdTk5MjhcdTgyMThcdTRlMzhcdTU0MmJcdTVjYjhcdTVkY2NcdTcz''@;'; put 'put ''YTlcdTc2NGNcdTc3M2NcdTVjYTlcdTdmZWJcdThkMGJcdTk2YzFcdTk4MTFcdTk4NTRcdTk4NThcdTRmMDFcdTRmMGVcdTUzNzFcdTU1OWNcdTU2NjhcdTU3ZmFcdTU5NDdcdTViMDlcdTViYzRcdTVjOTBcdTVlMGNcdTVlN2VcdTVmY2NcdTYzZWVcdTY3M2FcdTY1ZDdcdTY1ZTJcdTY3MWZc''@;'; put 'put ''dTY4Y2JcdTY4YzQiXSxbImI1YTEiLCJcdTZhNWZcdTVlMzBcdTZiYzVcdTZjMTdcdTZjN2RcdTc1N2ZcdTc5NDhcdTViNjNcdTdhMDBcdTdkMDBcdTVmYmRcdTg5OGZcdThhMThcdThjYjRcdThkNzdcdThlY2NcdThmMWRcdTk4ZTJcdTlhMGVcdTliM2NcdTRlODBcdTUwN2RcdTUxMDBcdTU5''@;'; put 'put ''OTNcdTViOWNcdTYyMmZcdTYyODBcdTY0ZWNcdTZiM2FcdTcyYTBcdTc1OTFcdTc5NDdcdTdmYTlcdTg3ZmJcdThhYmNcdThiNzBcdTYzYWNcdTgzY2FcdTk3YTBcdTU0MDlcdTU0MDNcdTU1YWJcdTY4NTRcdTZhNThcdThhNzBcdTc4MjdcdTY3NzVcdTllY2RcdTUzNzRcdTViYTJcdTgxMWFc''@;'; put 'put ''dTg2NTBcdTkwMDZcdTRlMThcdTRlNDVcdTRlYzdcdTRmMTFcdTUzY2FcdTU0MzhcdTViYWVcdTVmMTNcdTYwMjVcdTY1NTFcdTY3M2RcdTZjNDJcdTZjNzJcdTZjZTNcdTcwNzhcdTc0MDNcdTdhNzZcdTdhYWVcdTdiMDhcdTdkMWFcdTdjZmVcdTdkNjZcdTY1ZTdcdTcyNWJcdTUzYmJcdTVj''@;'; put 'put ''NDVcdTVkZThcdTYyZDJcdTYyZTBcdTYzMTlcdTZlMjBcdTg2NWFcdThhMzFcdThkZGRcdTkyZjhcdTZmMDFcdTc5YTZcdTliNWFcdTRlYThcdTRlYWJcdTRlYWMiXSxbImI2YTEiLCJcdTRmOWJcdTRmYTBcdTUwZDFcdTUxNDdcdTdhZjZcdTUxNzFcdTUxZjZcdTUzNTRcdTUzMjFcdTUzN2Zc''@;'; put 'put ''dTUzZWJcdTU1YWNcdTU4ODNcdTVjZTFcdTVmMzdcdTVmNGFcdTYwMmZcdTYwNTBcdTYwNmRcdTYzMWZcdTY1NTlcdTZhNGJcdTZjYzFcdTcyYzJcdTcyZWRcdTc3ZWZcdTgwZjhcdTgxMDVcdTgyMDhcdTg1NGVcdTkwZjdcdTkzZTFcdTk3ZmZcdTk5NTdcdTlhNWFcdTRlZjBcdTUxZGRcdTVj''@;'; put 'put ''MmRcdTY2ODFcdTY5NmRcdTVjNDBcdTY2ZjJcdTY5NzVcdTczODlcdTY4NTBcdTdjODFcdTUwYzVcdTUyZTRcdTU3NDdcdTVkZmVcdTkzMjZcdTY1YTRcdTZiMjNcdTZiM2RcdTc0MzRcdTc5ODFcdTc5YmRcdTdiNGJcdTdkY2FcdTgyYjlcdTgzY2NcdTg4N2ZcdTg5NWZcdThiMzlcdThmZDFc''@;'; put 'put ''dTkxZDFcdTU0MWZcdTkyODBcdTRlNWRcdTUwMzZcdTUzZTVcdTUzM2FcdTcyZDdcdTczOTZcdTc3ZTlcdTgyZTZcdThlYWZcdTk5YzZcdTk5YzhcdTk5ZDJcdTUxNzdcdTYxMWFcdTg2NWVcdTU1YjBcdTdhN2FcdTUwNzZcdTViZDNcdTkwNDdcdTk2ODVcdTRlMzJcdTZhZGJcdTkxZTdcdTVj''@;'; put 'put ''NTFcdTVjNDgiXSxbImI3YTEiLCJcdTYzOThcdTdhOWZcdTZjOTNcdTk3NzRcdThmNjFcdTdhYWFcdTcxOGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJcdThhMTNcdTdmYTRcdThlY2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJc''@;'; put 'put ''dTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJcdTU5NTFcdTVmNjJcdTVmODRcdTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZlMTNcdTc1NjZcdTdhM2RcdTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgz''@;'; put 'put ''MGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4MWFcdTlkOGZcdTgyYjhcdThmY2VcdTliZThcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFcdTZiMjBcdTZjN2FcdTZmNTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZc''@;'; put 'put ''dTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNcdTU1YTdcdTU3MGZcdTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzIiXSxbImI4YTEiLCJcdTY5MWNcdTZhMjlcdTcyN2RcdTcyYWNcdTczMmVcdTc4MTRcdTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5''@;'; put 'put ''OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlhMTNcdTllNzhcdTUxNDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdcdThhMDBcdThhZmFcdTk2NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2Nc''@;'; put 'put ''dTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVcdTY3YWZcdTZlNTZcdTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2YzdcdTk4NjdcdTlmMTNcdTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0''@;'; put 'put ''NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0NWFcdTc4ODFcdThhOWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZcdTUxNDlcdTUxNmNcdTUyOWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNc''@;'; put 'put ''dTU0MTEiXSxbImI5YTEiLCJcdTU0MGVcdTU1ODlcdTU3NTFcdTU3YTJcdTU5N2RcdTViNTRcdTViNWRcdTViOGZcdTVkZTVcdTVkZTdcdTVkZjdcdTVlNzhcdTVlODNcdTVlOWFcdTVlYjdcdTVmMThcdTYwNTJcdTYxNGNcdTYyOTdcdTYyZDhcdTYzYTdcdTY1M2JcdTY2MDJcdTY2NDNcdTY2''@;'; put 'put ''ZjRcdTY3NmRcdTY4MjFcdTY4OTdcdTY5Y2JcdTZjNWZcdTZkMmFcdTZkNjlcdTZlMmZcdTZlOWRcdTc1MzJcdTc2ODdcdTc4NmNcdTdhM2ZcdTdjZTBcdTdkMDVcdTdkMThcdTdkNWVcdTdkYjFcdTgwMTVcdTgwMDNcdTgwYWZcdTgwYjFcdTgxNTRcdTgxOGZcdTgyMmFcdTgzNTJcdTg4NGNc''@;'; put 'put ''dTg4NjFcdThiMWJcdThjYTJcdThjZmNcdTkwY2FcdTkxNzVcdTkyNzFcdTc4M2ZcdTkyZmNcdTk1YTRcdTk2NGRcdTk4MDVcdTk5OTlcdTlhZDhcdTlkM2JcdTUyNWJcdTUyYWJcdTUzZjdcdTU0MDhcdTU4ZDVcdTYyZjdcdTZmZTBcdThjNmFcdThmNWZcdTllYjlcdTUxNGJcdTUyM2JcdTU0''@;'; put 'put ''NGFcdTU2ZmRcdTdhNDBcdTkxNzdcdTlkNjBcdTllZDJcdTczNDRcdTZmMDlcdTgxNzBcdTc1MTFcdTVmZmRcdTYwZGFcdTlhYThcdTcyZGJcdThmYmMiXSxbImJhYTEiLCJcdTZiNjRcdTk4MDNcdTRlY2FcdTU2ZjBcdTU3NjRcdTU4YmVcdTVhNWFcdTYwNjhcdTYxYzdcdTY2MGZcdTY2MDZc''@;'; put 'put ''dTY4MzlcdTY4YjFcdTZkZjdcdTc1ZDVcdTdkM2FcdTgyNmVcdTliNDJcdTRlOWJcdTRmNTBcdTUzYzlcdTU1MDZcdTVkNmZcdTVkZTZcdTVkZWVcdTY3ZmJcdTZjOTlcdTc0NzNcdTc4MDJcdThhNTBcdTkzOTZcdTg4ZGZcdTU3NTBcdTVlYTdcdTYzMmJcdTUwYjVcdTUwYWNcdTUxOGRcdTY3''@;'; put 'put ''MDBcdTU0YzlcdTU4NWVcdTU5YmJcdTViYjBcdTVmNjlcdTYyNGRcdTYzYTFcdTY4M2RcdTZiNzNcdTZlMDhcdTcwN2RcdTkxYzdcdTcyODBcdTc4MTVcdTc4MjZcdTc5NmRcdTY1OGVcdTdkMzBcdTgzZGNcdTg4YzFcdThmMDlcdTk2OWJcdTUyNjRcdTU3MjhcdTY3NTBcdTdmNmFcdThjYTFc''@;'; put 'put ''dTUxYjRcdTU3NDJcdTk2MmFcdTU4M2FcdTY5OGFcdTgwYjRcdTU0YjJcdTVkMGVcdTU3ZmNcdTc4OTVcdTlkZmFcdTRmNWNcdTUyNGFcdTU0OGJcdTY0M2VcdTY2MjhcdTY3MTRcdTY3ZjVcdTdhODRcdTdiNTZcdTdkMjJcdTkzMmZcdTY4NWNcdTliYWRcdTdiMzlcdTUzMTlcdTUxOGFcdTUy''@;'; put 'put ''MzciXSxbImJiYTEiLCJcdTViZGZcdTYyZjZcdTY0YWVcdTY0ZTZcdTY3MmRcdTZiYmFcdTg1YTlcdTk2ZDFcdTc2OTBcdTliZDZcdTYzNGNcdTkzMDZcdTliYWJcdTc2YmZcdTY2NTJcdTRlMDlcdTUwOThcdTUzYzJcdTVjNzFcdTYwZThcdTY0OTJcdTY1NjNcdTY4NWZcdTcxZTZcdTczY2Fc''@;'; put 'put ''dTc1MjNcdTdiOTdcdTdlODJcdTg2OTVcdThiODNcdThjZGJcdTkxNzhcdTk5MTBcdTY1YWNcdTY2YWJcdTZiOGJcdTRlZDVcdTRlZDRcdTRmM2FcdTRmN2ZcdTUyM2FcdTUzZjhcdTUzZjJcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5Y2JcdTU5YzlcdTU5ZmZcdTViNTBcdTVjNGRcdTVlMDJcdTVl''@;'; put 'put ''MmJcdTVmZDdcdTYwMWRcdTYzMDdcdTY1MmZcdTViNWNcdTY1YWZcdTY1YmRcdTY1ZThcdTY3OWRcdTZiNjJcdTZiN2JcdTZjMGZcdTczNDVcdTc5NDlcdTc5YzFcdTdjZjhcdTdkMTlcdTdkMmJcdTgwYTJcdTgxMDJcdTgxZjNcdTg5OTZcdThhNWVcdThhNjlcdThhNjZcdThhOGNcdThhZWVc''@;'; put 'put ''dThjYzdcdThjZGNcdTk2Y2NcdTk4ZmNcdTZiNmZcdTRlOGJcdTRmM2NcdTRmOGRcdTUxNTBcdTViNTdcdTViZmFcdTYxNDhcdTYzMDFcdTY2NDIiXSxbImJjYTEiLCJcdTZiMjFcdTZlY2JcdTZjYmJcdTcyM2VcdTc0YmRcdTc1ZDRcdTc4YzFcdTc5M2FcdTgwMGNcdTgwMzNcdTgxZWFcdTg0''@;'; put 'put ''OTRcdThmOWVcdTZjNTBcdTllN2ZcdTVmMGZcdThiNThcdTlkMmJcdTdhZmFcdThlZjhcdTViOGRcdTk2ZWJcdTRlMDNcdTUzZjFcdTU3ZjdcdTU5MzFcdTVhYzlcdTViYTRcdTYwODlcdTZlN2ZcdTZmMDZcdTc1YmVcdThjZWFcdTViOWZcdTg1MDBcdTdiZTBcdTUwNzJcdTY3ZjRcdTgyOWRc''@;'; put 'put ''dTVjNjFcdTg1NGFcdTdlMWVcdTgyMGVcdTUxOTlcdTVjMDRcdTYzNjhcdThkNjZcdTY1OWNcdTcxNmVcdTc5M2VcdTdkMTdcdTgwMDVcdThiMWRcdThlY2FcdTkwNmVcdTg2YzdcdTkwYWFcdTUwMWZcdTUyZmFcdTVjM2FcdTY3NTNcdTcwN2NcdTcyMzVcdTkxNGNcdTkxYzhcdTkzMmJcdTgy''@;'; put 'put ''ZTVcdTViYzJcdTVmMzFcdTYwZjlcdTRlM2JcdTUzZDZcdTViODhcdTYyNGJcdTY3MzFcdTZiOGFcdTcyZTlcdTczZTBcdTdhMmVcdTgxNmJcdThkYTNcdTkxNTJcdTk5OTZcdTUxMTJcdTUzZDdcdTU0NmFcdTViZmZcdTYzODhcdTZhMzlcdTdkYWNcdTk3MDBcdTU2ZGFcdTUzY2VcdTU0Njgi''@;'; put 'put ''XSxbImJkYTEiLCJcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJcdTc5YzBcdTc5Y2JcdTdkNDJcdTdlNGRcdTdmZDJcdTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkxOWNcdTRl''@;'; put 'put ''YzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTczNjNcdTdlMjZcdTkxY2RcdTkyODNcdTUzZDRcdTU5MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJcdTY2MjVc''@;'; put 'put ''dTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlcdTZkZjNcdTZlOTZcdTZmNjRcdTc2ZmVcdTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdkZDJcdTdmNzJcdTY2''@;'; put 'put ''ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVlOGZcdTVmOTBcdTYwNTVcdTkyZTRcdTk2NjRcdTUwYjdcdTUxMWYiXSxbImJlYTEiLCJcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVc''@;'; put 'put ''dTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2ZcdTYyODRcdTYyZGJcdTYzOGNcdTYzNzdcdTY2MDdcdTY2MGNcdTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcx''@;'; put 'put ''NjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdjYTdcdTdkMzlcdTgwOTZcdTgzZDZcdTg0OGJcdTg1NDlcdTg4NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNc''@;'; put 'put ''dTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRcdTU4Y2NcdTViMjJcdTVlMzhcdTYwYzVcdTY0ZmVcdTY3NjFcdTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmUiXSxb''@;'; put 'put ''ImJmYTEiLCJcdTYyZWRcdTY5MGRcdTZiOTZcdTcxZWRcdTdlNTRcdTgwNzdcdTgyNzJcdTg5ZTZcdTk4ZGZcdTg3NTVcdThmYjFcdTVjM2JcdTRmMzhcdTRmZTFcdTRmYjVcdTU1MDdcdTVhMjBcdTViZGRcdTViZTlcdTVmYzNcdTYxNGVcdTYzMmZcdTY1YjBcdTY2NGJcdTY4ZWVcdTY5OWJc''@;'; put 'put ''dTZkNzhcdTZkZjFcdTc1MzNcdTc1YjlcdTc3MWZcdTc5NWVcdTc5ZTZcdTdkMzNcdTgxZTNcdTgyYWZcdTg1YWFcdTg5YWFcdThhM2FcdThlYWJcdThmOWJcdTkwMzJcdTkxZGRcdTk3MDdcdTRlYmFcdTRlYzFcdTUyMDNcdTU4NzVcdTU4ZWNcdTVjMGJcdTc1MWFcdTVjM2RcdTgxNGVcdThh''@;'; put 'put ''MGFcdThmYzVcdTk2NjNcdTk3NmRcdTdiMjVcdThhY2ZcdTk4MDhcdTkxNjJcdTU2ZjNcdTUzYThcdTkwMTdcdTU0MzlcdTU3ODJcdTVlMjVcdTYzYThcdTZjMzRcdTcwOGFcdTc3NjFcdTdjOGJcdTdmZTBcdTg4NzBcdTkwNDJcdTkxNTRcdTkzMTBcdTkzMThcdTk2OGZcdTc0NWVcdTlhYzRc''@;'; put 'put ''dTVkMDdcdTVkNjlcdTY1NzBcdTY3YTJcdThkYThcdTk2ZGJcdTYzNmVcdTY3NDlcdTY5MTlcdTgzYzVcdTk4MTdcdTk2YzBcdTg4ZmUiXSxbImMwYTEiLCJcdTZmODRcdTY0N2FcdTViZjhcdTRlMTZcdTcwMmNcdTc1NWRcdTY2MmZcdTUxYzRcdTUyMzZcdTUyZTJcdTU5ZDNcdTVmODFcdTYw''@;'; put 'put ''MjdcdTYyMTBcdTY1M2ZcdTY1NzRcdTY2MWZcdTY2NzRcdTY4ZjJcdTY4MTZcdTZiNjNcdTZlMDVcdTcyNzJcdTc1MWZcdTc2ZGJcdTdjYmVcdTgwNTZcdTU4ZjBcdTg4ZmRcdTg5N2ZcdThhYTBcdThhOTNcdThhY2JcdTkwMWRcdTkxOTJcdTk3NTJcdTk3NTlcdTY1ODlcdTdhMGVcdTgxMDZc''@;'; put 'put ''dTk2YmJcdTVlMmRcdTYwZGNcdTYyMWFcdTY1YTVcdTY2MTRcdTY3OTBcdTc3ZjNcdTdhNGRcdTdjNGRcdTdlM2VcdTgxMGFcdThjYWNcdThkNjRcdThkZTFcdThlNWZcdTc4YTlcdTUyMDdcdTYyZDlcdTYzYTVcdTY0NDJcdTYyOThcdThhMmRcdTdhODNcdTdiYzBcdThhYWNcdTk2ZWFcdTdk''@;'; put 'put ''NzZcdTgyMGNcdTg3NDlcdTRlZDlcdTUxNDhcdTUzNDNcdTUzNjBcdTViYTNcdTVjMDJcdTVjMTZcdTVkZGRcdTYyMjZcdTYyNDdcdTY0YjBcdTY4MTNcdTY4MzRcdTZjYzlcdTZkNDVcdTZkMTdcdTY3ZDNcdTZmNWNcdTcxNGVcdTcxN2RcdTY1Y2JcdTdhN2ZcdTdiYWRcdTdkZGEiXSxbImMx''@;'; put 'put ''YTEiLCJcdTdlNGFcdTdmYThcdTgxN2FcdTgyMWJcdTgyMzlcdTg1YTZcdThhNmVcdThjY2VcdThkZjVcdTkwNzhcdTkwNzdcdTkyYWRcdTkyOTFcdTk1ODNcdTliYWVcdTUyNGRcdTU1ODRcdTZmMzhcdTcxMzZcdTUxNjhcdTc5ODVcdTdlNTVcdTgxYjNcdTdjY2VcdTU2NGNcdTU4NTFcdTVj''@;'; put 'put ''YThcdTYzYWFcdTY2ZmVcdTY2ZmRcdTY5NWFcdTcyZDlcdTc1OGZcdTc1OGVcdTc5MGVcdTc5NTZcdTc5ZGZcdTdjOTdcdTdkMjBcdTdkNDRcdTg2MDdcdThhMzRcdTk2M2JcdTkwNjFcdTlmMjBcdTUwZTdcdTUyNzVcdTUzY2NcdTUzZTJcdTUwMDlcdTU1YWFcdTU4ZWVcdTU5NGZcdTcyM2Rc''@;'; put 'put ''dTViOGJcdTVjNjRcdTUzMWRcdTYwZTNcdTYwZjNcdTYzNWNcdTYzODNcdTYzM2ZcdTYzYmJcdTY0Y2RcdTY1ZTlcdTY2ZjlcdTVkZTNcdTY5Y2RcdTY5ZmRcdTZmMTVcdTcxZTVcdTRlODlcdTc1ZTlcdTc2ZjhcdTdhOTNcdTdjZGZcdTdkY2ZcdTdkOWNcdTgwNjFcdTgzNDlcdTgzNThcdTg0''@;'; put 'put ''NmNcdTg0YmNcdTg1ZmJcdTg4YzVcdThkNzBcdTkwMDFcdTkwNmRcdTkzOTdcdTk3MWNcdTlhMTJcdTUwY2ZcdTU4OTdcdTYxOGUiXSxbImMyYTEiLCJcdTgxZDNcdTg1MzVcdThkMDhcdTkwMjBcdTRmYzNcdTUwNzRcdTUyNDdcdTUzNzNcdTYwNmZcdTYzNDlcdTY3NWZcdTZlMmNcdThkYjNc''@;'; put 'put ''dTkwMWZcdTRmZDdcdTVjNWVcdThjY2FcdTY1Y2ZcdTdkOWFcdTUzNTJcdTg4OTZcdTUxNzZcdTYzYzNcdTViNThcdTViNmJcdTVjMGFcdTY0MGRcdTY3NTFcdTkwNWNcdTRlZDZcdTU5MWFcdTU5MmFcdTZjNzBcdThhNTFcdTU1M2VcdTU4MTVcdTU5YTVcdTYwZjBcdTYyNTNcdTY3YzFcdTgy''@;'; put 'put ''MzVcdTY5NTVcdTk2NDBcdTk5YzRcdTlhMjhcdTRmNTNcdTU4MDZcdTViZmVcdTgwMTBcdTVjYjFcdTVlMmZcdTVmODVcdTYwMjBcdTYxNGJcdTYyMzRcdTY2ZmZcdTZjZjBcdTZlZGVcdTgwY2VcdTgxN2ZcdTgyZDRcdTg4OGJcdThjYjhcdTkwMDBcdTkwMmVcdTk2OGFcdTllZGJcdTliZGJc''@;'; put 'put ''dTRlZTNcdTUzZjBcdTU5MjdcdTdiMmNcdTkxOGRcdTk4NGNcdTlkZjlcdTZlZGRcdTcwMjdcdTUzNTNcdTU1NDRcdTViODVcdTYyNThcdTYyOWVcdTYyZDNcdTZjYTJcdTZmZWZcdTc0MjJcdThhMTdcdTk0MzhcdTZmYzFcdThhZmVcdTgzMzhcdTUxZTdcdTg2ZjhcdTUzZWEiXSxbImMzYTEi''@;'; put 'put ''LCJcdTUzZTlcdTRmNDZcdTkwNTRcdThmYjBcdTU5NmFcdTgxMzFcdTVkZmRcdTdhZWFcdThmYmZcdTY4ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZcdTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRc''@;'; put 'put ''dTdhZWZcdTdiYWFcdTdkYmJcdTgwM2RcdTgwYzZcdTg2Y2JcdThhOTVcdTkzNWJcdTU2ZTNcdTU4YzdcdTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgx''@;'; put 'put ''ZjRcdTg3MThcdTkwNDVcdTk5YjNcdTdiYzlcdTc1NWNcdTdhZjlcdTdiNTFcdTg0YzRcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlcdTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNc''@;'; put 'put ''dTk5ZDBcdTZhMTdcdTcwMjZcdTczMmFcdTgyZTdcdTg0NTdcdThjYWZcdTRlMDFcdTUxNDZcdTUxY2JcdTU1OGJcdTViZjUiXSxbImM0YTEiLCJcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVmNmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1''@;'; put 'put ''M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhcdTg3NzZcdThhYmZcdThhZGNcdThkODVcdThkZjNcdTkyOWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2RcdThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRc''@;'; put 'put ''dTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4MDJcdTYzYjRcdTY5ZmJcdTRmNDNcdTZmMmNcdTY3ZDhcdThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdkMmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUw''@;'; put 'put ''NzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRcdTViOWFcdTVlMWRcdTVlOTVcdTVlYWRcdTVlZjdcdTVmMWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJcdTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTMiXSxbImM1YTEiLCJc''@;'; put 'put ''dTkwYjhcdTkxMmRcdTkxZDhcdTlmMGVcdTZjZTVcdTY0NThcdTY0ZTJcdTY1NzVcdTZlZjRcdTc2ODRcdTdiMWJcdTkwNjlcdTkzZDFcdTZlYmFcdTU0ZjJcdTVmYjlcdTY0YTRcdThmNGRcdThmZWRcdTkyNDRcdTUxNzhcdTU4NmJcdTU5MjlcdTVjNTVcdTVlOTdcdTZkZmJcdTdlOGZcdTc1''@;'; put 'put ''MWNcdThjYmNcdThlZTJcdTk4NWJcdTcwYjlcdTRmMWRcdTZiYmZcdTZmYjFcdTc1MzBcdTk2ZmJcdTUxNGVcdTU0MTBcdTU4MzVcdTU4NTdcdTU5YWNcdTVjNjBcdTVmOTJcdTY1OTdcdTY3NWNcdTZlMjFcdTc2N2JcdTgzZGZcdThjZWRcdTkwMTRcdTkwZmRcdTkzNGRcdTc4MjVcdTc4M2Fc''@;'; put 'put ''dTUyYWFcdTVlYTZcdTU3MWZcdTU5NzRcdTYwMTJcdTUwMTJcdTUxNWFcdTUxYWNcdTUxY2RcdTUyMDBcdTU1MTBcdTU4NTRcdTU4NThcdTU5NTdcdTViOTVcdTVjZjZcdTVkOGJcdTYwYmNcdTYyOTVcdTY0MmRcdTY3NzFcdTY4NDNcdTY4YmNcdTY4ZGZcdTc2ZDdcdTZkZDhcdTZlNmZcdTZk''@;'; put 'put ''OWJcdTcwNmZcdTcxYzhcdTVmNTNcdTc1ZDhcdTc5NzdcdTdiNDlcdTdiNTRcdTdiNTJcdTdjZDZcdTdkNzFcdTUyMzAiXSxbImM2YTEiLCJcdTg0NjNcdTg1NjlcdTg1ZTRcdThhMGVcdThiMDRcdThjNDZcdThlMGZcdTkwMDNcdTkwMGZcdTk0MTlcdTk2NzZcdTk4MmRcdTlhMzBcdTk1ZDhc''@;'; put 'put ''dTUwY2RcdTUyZDVcdTU0MGNcdTU4MDJcdTVjMGVcdTYxYTdcdTY0OWVcdTZkMWVcdTc3YjNcdTdhZTVcdTgwZjRcdTg0MDRcdTkwNTNcdTkyODVcdTVjZTBcdTlkMDdcdTUzM2ZcdTVmOTdcdTVmYjNcdTZkOWNcdTcyNzlcdTc3NjNcdTc5YmZcdTdiZTRcdTZiZDJcdTcyZWNcdThhYWRcdTY4''@;'; put 'put ''MDNcdTZhNjFcdTUxZjhcdTdhODFcdTY5MzRcdTVjNGFcdTljZjZcdTgyZWJcdTViYzVcdTkxNDlcdTcwMWVcdTU2NzhcdTVjNmZcdTYwYzdcdTY1NjZcdTZjOGNcdThjNWFcdTkwNDFcdTk4MTNcdTU0NTFcdTY2YzdcdTkyMGRcdTU5NDhcdTkwYTNcdTUxODVcdTRlNGRcdTUxZWFcdTg1OTlc''@;'; put 'put ''dThiMGVcdTcwNThcdTYzN2FcdTkzNGJcdTY5NjJcdTk5YjRcdTdlMDRcdTc1NzdcdTUzNTdcdTY5NjBcdThlZGZcdTk2ZTNcdTZjNWRcdTRlOGNcdTVjM2NcdTVmMTBcdThmZTlcdTUzMDJcdThjZDFcdTgwODlcdTg2NzlcdTVlZmZcdTY1ZTVcdTRlNzNcdTUxNjUiXSxbImM3YTEiLCJcdTU5''@;'; put 'put ''ODJcdTVjM2ZcdTk3ZWVcdTRlZmJcdTU5OGFcdTVmY2RcdThhOGRcdTZmZTFcdTc5YjBcdTc5NjJcdTViZTdcdTg0NzFcdTczMmJcdTcxYjFcdTVlNzRcdTVmZjVcdTYzN2JcdTY0OWFcdTcxYzNcdTdjOThcdTRlNDNcdTVlZmNcdTRlNGJcdTU3ZGNcdTU2YTJcdTYwYTlcdTZmYzNcdTdkMGRc''@;'; put 'put ''dTgwZmRcdTgxMzNcdTgxYmZcdThmYjJcdTg5OTdcdTg2YTRcdTVkZjRcdTYyOGFcdTY0YWRcdTg5ODdcdTY3NzdcdTZjZTJcdTZkM2VcdTc0MzZcdTc4MzRcdTVhNDZcdTdmNzVcdTgyYWRcdTk5YWNcdTRmZjNcdTVlYzNcdTYyZGRcdTYzOTJcdTY1NTdcdTY3NmZcdTc2YzNcdTcyNGNcdTgw''@;'; put 'put ''Y2NcdTgwYmFcdThmMjlcdTkxNGRcdTUwMGRcdTU3ZjlcdTVhOTJcdTY4ODVcdTY5NzNcdTcxNjRcdTcyZmRcdThjYjdcdTU4ZjJcdThjZTBcdTk2NmFcdTkwMTlcdTg3N2ZcdTc5ZTRcdTc3ZTdcdTg0MjlcdTRmMmZcdTUyNjVcdTUzNWFcdTYyY2RcdTY3Y2ZcdTZjY2FcdTc2N2RcdTdiOTRc''@;'; put 'put ''dTdjOTVcdTgyMzZcdTg1ODRcdThmZWJcdTY2ZGRcdTZmMjBcdTcyMDZcdTdlMWJcdTgzYWJcdTk5YzFcdTllYTYiXSxbImM4YTEiLCJcdTUxZmRcdTdiYjFcdTc4NzJcdTdiYjhcdTgwODdcdTdiNDhcdTZhZThcdTVlNjFcdTgwOGNcdTc1NTFcdTc1NjBcdTUxNmJcdTkyNjJcdTZlOGNcdTc2''@;'; put 'put ''N2FcdTkxOTdcdTlhZWFcdTRmMTBcdTdmNzBcdTYyOWNcdTdiNGZcdTk1YTVcdTljZTlcdTU2N2FcdTU4NTlcdTg2ZTRcdTk2YmNcdTRmMzRcdTUyMjRcdTUzNGFcdTUzY2RcdTUzZGJcdTVlMDZcdTY0MmNcdTY1OTFcdTY3N2ZcdTZjM2VcdTZjNGVcdTcyNDhcdTcyYWZcdTczZWRcdTc1NTRc''@;'; put 'put ''dTdlNDFcdTgyMmNcdTg1ZTlcdThjYTlcdTdiYzRcdTkxYzZcdTcxNjlcdTk4MTJcdTk4ZWZcdTYzM2RcdTY2NjlcdTc1NmFcdTc2ZTRcdTc4ZDBcdTg1NDNcdTg2ZWVcdTUzMmFcdTUzNTFcdTU0MjZcdTU5ODNcdTVlODdcdTVmN2NcdTYwYjJcdTYyNDlcdTYyNzlcdTYyYWJcdTY1OTBcdTZi''@;'; put 'put ''ZDRcdTZjY2NcdTc1YjJcdTc2YWVcdTc4OTFcdTc5ZDhcdTdkY2JcdTdmNzdcdTgwYTVcdTg4YWJcdThhYjlcdThjYmJcdTkwN2ZcdTk3NWVcdTk4ZGJcdTZhMGJcdTdjMzhcdTUwOTlcdTVjM2VcdTVmYWVcdTY3ODdcdTZiZDhcdTc0MzVcdTc3MDlcdTdmOGUiXSxbImM5YTEiLCJcdTlmM2Jc''@;'; put 'put ''dTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThcdTVmM2NcdTVmYzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlcdTZjMzdcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4''@;'; put 'put ''NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTkyZjJcdTg0OWNcdTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRlMGRcdTRlZDhcdTU3ZTBcdTU5MmJcdTVhNjZc''@;'; put 'put ''dTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzdcdTY1YTdcdTY2NmVcdTZkNmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVcdTY0YWJcdTZiNjZcdTgyMWVcdTg0NjFcdTg1NmFcdTkw''@;'; put 'put ''ZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUyNmZcdTVmYTlcdTVlNDVcdTY3MGQiXSxbImNhYTEiLCJcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUyMDZcdTU0M2JcdTU2NzRcdTU4YjNc''@;'; put 'put ''dTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdcdTgwNWVcdTRlMTlcdTRmNzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFcdTUwZmJcdTU4YzFcdTc2NTZcdTc4''@;'; put 'put ''YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdkZThcdThmYmFcdThmZDRcdTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1MmJcdTg4ZGNcdThmMTRcdTdhNDJc''@;'; put 'put ''dTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNcdTRmZjhcdTUzMDVcdTU0NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGIiXSxbImNiYTEiLCJcdTZjZDVcdTZj''@;'; put 'put ''ZTFcdTcwZjlcdTc4MzJcdTdlMmJcdTgwZGVcdTgyYjNcdTg0MGNcdTg0ZWNcdTg3MDJcdTg5MTJcdThhMmFcdThjNGFcdTkwYTZcdTkyZDJcdTk4ZmRcdTljZjNcdTlkNmNcdTRlNGZcdTRlYTFcdTUwOGRcdTUyNTZcdTU3NGFcdTU5YThcdTVlM2RcdTVmZDhcdTVmZDlcdTYyM2ZcdTY2YjRc''@;'; put 'put ''dTY3MWJcdTY3ZDBcdTY4ZDJcdTUxOTJcdTdkMjFcdTgwYWFcdTgxYThcdThiMDBcdThjOGNcdThjYmZcdTkyN2VcdTk2MzJcdTU0MjBcdTk4MmNcdTUzMTdcdTUwZDVcdTUzNWNcdTU4YThcdTY0YjJcdTY3MzRcdTcyNjdcdTc3NjZcdTdhNDZcdTkxZTZcdTUyYzNcdTZjYTFcdTZiODZcdTU4''@;'; put 'put ''MDBcdTVlNGNcdTU5NTRcdTY3MmNcdTdmZmJcdTUxZTFcdTc2YzZcdTY0NjlcdTc4ZThcdTliNTRcdTllYmJcdTU3Y2JcdTU5YjlcdTY2MjdcdTY3OWFcdTZiY2VcdTU0ZTlcdTY5ZDlcdTVlNTVcdTgxOWNcdTY3OTVcdTliYWFcdTY3ZmVcdTljNTJcdTY4NWRcdTRlYTZcdTRmZTNcdTUzYzhc''@;'; put 'put ''dTYyYjlcdTY3MmJcdTZjYWJcdThmYzRcdTRmYWRcdTdlNmRcdTllYmZcdTRlMDdcdTYxNjJcdTZlODAiXSxbImNjYTEiLCJcdTZmMmJcdTg1MTNcdTU0NzNcdTY3MmFcdTliNDVcdTVkZjNcdTdiOTVcdTVjYWNcdTViYzZcdTg3MWNcdTZlNGFcdTg0ZDFcdTdhMTRcdTgxMDhcdTU5OTlcdTdj''@;'; put 'put ''OGRcdTZjMTFcdTc3MjBcdTUyZDlcdTU5MjJcdTcxMjFcdTcyNWZcdTc3ZGJcdTk3MjdcdTlkNjFcdTY5MGJcdTVhN2ZcdTVhMThcdTUxYTVcdTU0MGRcdTU0N2RcdTY2MGVcdTc2ZGZcdThmZjdcdTkyOThcdTljZjRcdTU5ZWFcdTcyNWRcdTZlYzVcdTUxNGRcdTY4YzlcdTdkYmZcdTdkZWNc''@;'; put 'put ''dTk3NjJcdTllYmFcdTY0NzhcdTZhMjFcdTgzMDJcdTU5ODRcdTViNWZcdTZiZGJcdTczMWJcdTc2ZjJcdTdkYjJcdTgwMTdcdTg0OTlcdTUxMzJcdTY3MjhcdTllZDlcdTc2ZWVcdTY3NjJcdTUyZmZcdTk5MDVcdTVjMjRcdTYyM2JcdTdjN2VcdThjYjBcdTU1NGZcdTYwYjZcdTdkMGJcdTk1''@;'; put 'put ''ODBcdTUzMDFcdTRlNWZcdTUxYjZcdTU5MWNcdTcyM2FcdTgwMzZcdTkxY2VcdTVmMjVcdTc3ZTJcdTUzODRcdTVmNzlcdTdkMDRcdTg1YWNcdThhMzNcdThlOGRcdTk3NTZcdTY3ZjNcdTg1YWVcdTk0NTNcdTYxMDlcdTYxMDhcdTZjYjlcdTc2NTIiXSxbImNkYTEiLCJcdThhZWRcdThmMzhc''@;'; put 'put ''dTU1MmZcdTRmNTFcdTUxMmFcdTUyYzdcdTUzY2JcdTViYTVcdTVlN2RcdTYwYTBcdTYxODJcdTYzZDZcdTY3MDlcdTY3ZGFcdTZlNjdcdTZkOGNcdTczMzZcdTczMzdcdTc1MzFcdTc5NTBcdTg4ZDVcdThhOThcdTkwNGFcdTkwOTFcdTkwZjVcdTk2YzRcdTg3OGRcdTU5MTVcdTRlODhcdTRm''@;'; put 'put ''NTlcdTRlMGVcdThhODlcdThmM2ZcdTk4MTBcdTUwYWRcdTVlN2NcdTU5OTZcdTViYjlcdTVlYjhcdTYzZGFcdTYzZmFcdTY0YzFcdTY2ZGNcdTY5NGFcdTY5ZDhcdTZkMGJcdTZlYjZcdTcxOTRcdTc1MjhcdTdhYWZcdTdmOGFcdTgwMDBcdTg0NDlcdTg0YzlcdTg5ODFcdThiMjFcdThlMGFc''@;'; put 'put ''dTkwNjVcdTk2N2RcdTk5MGFcdTYxN2VcdTYyOTFcdTZiMzJcdTZjODNcdTZkNzRcdTdmY2NcdTdmZmNcdTZkYzBcdTdmODVcdTg3YmFcdTg4ZjhcdTY3NjVcdTgzYjFcdTk4M2NcdTk2ZjdcdTZkMWJcdTdkNjFcdTg0M2RcdTkxNmFcdTRlNzFcdTUzNzVcdTVkNTBcdTZiMDRcdTZmZWJcdTg1''@;'; put 'put ''Y2RcdTg2MmRcdTg5YTdcdTUyMjlcdTU0MGZcdTVjNjVcdTY3NGVcdTY4YThcdTc0MDZcdTc0ODMiXSxbImNlYTEiLCJcdTc1ZTJcdTg4Y2ZcdTg4ZTFcdTkxY2NcdTk2ZTJcdTk2NzhcdTVmOGJcdTczODdcdTdhY2JcdTg0NGVcdTYzYTBcdTc1NjVcdTUyODlcdTZkNDFcdTZlOWNcdTc0MDlc''@;'; put 'put ''dTc1NTlcdTc4NmJcdTdjOTJcdTk2ODZcdTdhZGNcdTlmOGRcdTRmYjZcdTYxNmVcdTY1YzVcdTg2NWNcdTRlODZcdTRlYWVcdTUwZGFcdTRlMjFcdTUxY2NcdTViZWVcdTY1OTlcdTY4ODFcdTZkYmNcdTczMWZcdTc2NDJcdTc3YWRcdTdhMWNcdTdjZTdcdTgyNmZcdThhZDJcdTkwN2NcdTkx''@;'; put 'put ''Y2ZcdTk2NzVcdTk4MThcdTUyOWJcdTdkZDFcdTUwMmJcdTUzOThcdTY3OTdcdTZkY2JcdTcxZDBcdTc0MzNcdTgxZThcdThmMmFcdTk2YTNcdTljNTdcdTllOWZcdTc0NjBcdTU4NDFcdTZkOTlcdTdkMmZcdTk4NWVcdTRlZTRcdTRmMzZcdTRmOGJcdTUxYjdcdTUyYjFcdTVkYmFcdTYwMWNc''@;'; put 'put ''dTczYjJcdTc5M2NcdTgyZDNcdTkyMzRcdTk2YjdcdTk2ZjZcdTk3MGFcdTllOTdcdTlmNjJcdTY2YTZcdTZiNzRcdTUyMTdcdTUyYTNcdTcwYzhcdTg4YzJcdTVlYzlcdTYwNGJcdTYxOTBcdTZmMjNcdTcxNDlcdTdjM2VcdTdkZjRcdTgwNmYiXSxbImNmYTEiLCJcdTg0ZWVcdTkwMjNcdTkz''@;'; put 'put ''MmNcdTU0NDJcdTliNmZcdTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVhNDFcdTVlY2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZkNmFcdTZmMGZcdTcyNjJcdTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJc''@;'; put 'put ''dTkzMzJcdThhZDZcdTUwMmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFcdTY3YTBcdTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJcdTg1YzFcdTg1NjhcdTY5MDBcdTZlN2VcdTc4OTdcdTgxNTUiXSxbImQwYTEiLCJcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRl''@;'; put 'put ''MzFcdTRlMzZcdTRlM2NcdTRlM2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThjNmJcdTRlOGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZcdTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVc''@;'; put 'put ''dTRlZWRcdTRlZGZcdTRlZjdcdTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdcdTRmNDdcdTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRmNjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRm''@;'; put 'put ''ZDFcdTRmZGFcdTRmZDBcdTRmZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUwMjVcdTUwMDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNcdTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZc''@;'; put 'put ''dTUwNmNcdTUwNzhcdTUwODBcdTUwOWFcdTUwODVcdTUwYjRcdTUwYjIiXSxbImQxYTEiLCJcdTUwYzlcdTUwY2FcdTUwYjNcdTUwYzJcdTUwZDZcdTUwZGVcdTUwZTVcdTUwZWRcdTUwZTNcdTUwZWVcdTUwZjlcdTUwZjVcdTUxMDlcdTUxMDFcdTUxMDJcdTUxMTZcdTUxMTVcdTUxMTRcdTUx''@;'; put 'put ''MWFcdTUxMjFcdTUxM2FcdTUxMzdcdTUxM2NcdTUxM2JcdTUxM2ZcdTUxNDBcdTUxNTJcdTUxNGNcdTUxNTRcdTUxNjJcdTdhZjhcdTUxNjlcdTUxNmFcdTUxNmVcdTUxODBcdTUxODJcdTU2ZDhcdTUxOGNcdTUxODlcdTUxOGZcdTUxOTFcdTUxOTNcdTUxOTVcdTUxOTZcdTUxYTRcdTUxYTZc''@;'; put 'put ''dTUxYTJcdTUxYTlcdTUxYWFcdTUxYWJcdTUxYjNcdTUxYjFcdTUxYjJcdTUxYjBcdTUxYjVcdTUxYmRcdTUxYzVcdTUxYzlcdTUxZGJcdTUxZTBcdTg2NTVcdTUxZTlcdTUxZWRcdTUxZjBcdTUxZjVcdTUxZmVcdTUyMDRcdTUyMGJcdTUyMTRcdTUyMGVcdTUyMjdcdTUyMmFcdTUyMmVcdTUy''@;'; put 'put ''MzNcdTUyMzlcdTUyNGZcdTUyNDRcdTUyNGJcdTUyNGNcdTUyNWVcdTUyNTRcdTUyNmFcdTUyNzRcdTUyNjlcdTUyNzNcdTUyN2ZcdTUyN2RcdTUyOGRcdTUyOTRcdTUyOTJcdTUyNzFcdTUyODhcdTUyOTFcdThmYTgiXSxbImQyYTEiLCJcdThmYTdcdTUyYWNcdTUyYWRcdTUyYmNcdTUyYjVc''@;'; put 'put ''dTUyYzFcdTUyY2RcdTUyZDdcdTUyZGVcdTUyZTNcdTUyZTZcdTk4ZWRcdTUyZTBcdTUyZjNcdTUyZjVcdTUyZjhcdTUyZjlcdTUzMDZcdTUzMDhcdTc1MzhcdTUzMGRcdTUzMTBcdTUzMGZcdTUzMTVcdTUzMWFcdTUzMjNcdTUzMmZcdTUzMzFcdTUzMzNcdTUzMzhcdTUzNDBcdTUzNDZcdTUz''@;'; put 'put ''NDVcdTRlMTdcdTUzNDlcdTUzNGRcdTUxZDZcdTUzNWVcdTUzNjlcdTUzNmVcdTU5MThcdTUzN2JcdTUzNzdcdTUzODJcdTUzOTZcdTUzYTBcdTUzYTZcdTUzYTVcdTUzYWVcdTUzYjBcdTUzYjZcdTUzYzNcdTdjMTJcdTk2ZDlcdTUzZGZcdTY2ZmNcdTcxZWVcdTUzZWVcdTUzZThcdTUzZWRc''@;'; put 'put ''dTUzZmFcdTU0MDFcdTU0M2RcdTU0NDBcdTU0MmNcdTU0MmRcdTU0M2NcdTU0MmVcdTU0MzZcdTU0MjlcdTU0MWRcdTU0NGVcdTU0OGZcdTU0NzVcdTU0OGVcdTU0NWZcdTU0NzFcdTU0NzdcdTU0NzBcdTU0OTJcdTU0N2JcdTU0ODBcdTU0NzZcdTU0ODRcdTU0OTBcdTU0ODZcdTU0YzdcdTU0''@;'; put 'put ''YTJcdTU0YjhcdTU0YTVcdTU0YWNcdTU0YzRcdTU0YzhcdTU0YTgiXSxbImQzYTEiLCJcdTU0YWJcdTU0YzJcdTU0YTRcdTU0YmVcdTU0YmNcdTU0ZDhcdTU0ZTVcdTU0ZTZcdTU1MGZcdTU1MTRcdTU0ZmRcdTU0ZWVcdTU0ZWRcdTU0ZmFcdTU0ZTJcdTU1MzlcdTU1NDBcdTU1NjNcdTU1NGNc''@;'; put 'put ''dTU1MmVcdTU1NWNcdTU1NDVcdTU1NTZcdTU1NTdcdTU1MzhcdTU1MzNcdTU1NWRcdTU1OTlcdTU1ODBcdTU0YWZcdTU1OGFcdTU1OWZcdTU1N2JcdTU1N2VcdTU1OThcdTU1OWVcdTU1YWVcdTU1N2NcdTU1ODNcdTU1YTlcdTU1ODdcdTU1YThcdTU1ZGFcdTU1YzVcdTU1ZGZcdTU1YzRcdTU1''@;'; put 'put ''ZGNcdTU1ZTRcdTU1ZDRcdTU2MTRcdTU1ZjdcdTU2MTZcdTU1ZmVcdTU1ZmRcdTU2MWJcdTU1ZjlcdTU2NGVcdTU2NTBcdTcxZGZcdTU2MzRcdTU2MzZcdTU2MzJcdTU2MzhcdTU2NmJcdTU2NjRcdTU2MmZcdTU2NmNcdTU2NmFcdTU2ODZcdTU2ODBcdTU2OGFcdTU2YTBcdTU2OTRcdTU2OGZc''@;'; put 'put ''dTU2YTVcdTU2YWVcdTU2YjZcdTU2YjRcdTU2YzJcdTU2YmNcdTU2YzFcdTU2YzNcdTU2YzBcdTU2YzhcdTU2Y2VcdTU2ZDFcdTU2ZDNcdTU2ZDdcdTU2ZWVcdTU2ZjlcdTU3MDBcdTU2ZmZcdTU3MDRcdTU3MDkiXSxbImQ0YTEiLCJcdTU3MDhcdTU3MGJcdTU3MGRcdTU3MTNcdTU3MThcdTU3''@;'; put 'put ''MTZcdTU1YzdcdTU3MWNcdTU3MjZcdTU3MzdcdTU3MzhcdTU3NGVcdTU3M2JcdTU3NDBcdTU3NGZcdTU3NjlcdTU3YzBcdTU3ODhcdTU3NjFcdTU3N2ZcdTU3ODlcdTU3OTNcdTU3YTBcdTU3YjNcdTU3YTRcdTU3YWFcdTU3YjBcdTU3YzNcdTU3YzZcdTU3ZDRcdTU3ZDJcdTU3ZDNcdTU4MGFc''@;'; put 'put ''dTU3ZDZcdTU3ZTNcdTU4MGJcdTU4MTlcdTU4MWRcdTU4NzJcdTU4MjFcdTU4NjJcdTU4NGJcdTU4NzBcdTZiYzBcdTU4NTJcdTU4M2RcdTU4NzlcdTU4ODVcdTU4YjlcdTU4OWZcdTU4YWJcdTU4YmFcdTU4ZGVcdTU4YmJcdTU4YjhcdTU4YWVcdTU4YzVcdTU4ZDNcdTU4ZDFcdTU4ZDdcdTU4''@;'; put 'put ''ZDlcdTU4ZDhcdTU4ZTVcdTU4ZGNcdTU4ZTRcdTU4ZGZcdTU4ZWZcdTU4ZmFcdTU4ZjlcdTU4ZmJcdTU4ZmNcdTU4ZmRcdTU5MDJcdTU5MGFcdTU5MTBcdTU5MWJcdTY4YTZcdTU5MjVcdTU5MmNcdTU5MmRcdTU5MzJcdTU5MzhcdTU5M2VcdTdhZDJcdTU5NTVcdTU5NTBcdTU5NGVcdTU5NWFc''@;'; put 'put ''dTU5NThcdTU5NjJcdTU5NjBcdTU5NjdcdTU5NmNcdTU5NjkiXSxbImQ1YTEiLCJcdTU5NzhcdTU5ODFcdTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRcdTU5ZDlcdTU5ZGFcdTVhMjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVh''@;'; put 'put ''NDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFcdTVhOWFcdTVhYmNcdTVhYmVcdTVhY2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVhZmJcdTViMGNcdTViMGJcdTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2Vc''@;'; put 'put ''dTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTViNWJcdTViNjVcdTViNjlcdTViNzBcdTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODBcdTViODNcdTViYTZcdTViYjhcdTViYzNcdTViYzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTVi''@;'; put 'put ''ZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNcdTVjMDVcdTVjMDdcdTVjMDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVjNGVcdTVjNTMiXSxbImQ2YTEiLCJcdTVjNTBcdTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJc''@;'; put 'put ''dTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVjYmJcdTVjYjZcdTVjYmNcdTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNcdTVjZWFcdTVkMGJcdTVkMTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVk''@;'; put 'put ''MTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJcdTVkNGVcdTVkNGJcdTVkNmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVkYmRcdTVkOTBcdTVkYjdcdTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJc''@;'; put 'put ''dTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVlMTlcdTVlMTFcdTVlMWJcdTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJcdTVlNjRcdTVlNDdcdTVlNzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVl''@;'; put 'put ''YTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2YiXSxbImQ3YTEiLCJcdTVlZDZcdTVlZTNcdTVlZGRcdTVlZGFcdTVlZGJcdTVlZTJcdTVlZTFcdTVlZThcdTVlZTlcdTVlZWNcdTVlZjFcdTVlZjNcdTVlZjBcdTVlZjRcdTVlZjhcdTVlZmVcdTVmMDNcdTVmMDlcdTVmNWRcdTVmNWNc''@;'; put 'put ''dTVmMGJcdTVmMTFcdTVmMTZcdTVmMjlcdTVmMmRcdTVmMzhcdTVmNDFcdTVmNDhcdTVmNGNcdTVmNGVcdTVmMmZcdTVmNTFcdTVmNTZcdTVmNTdcdTVmNTlcdTVmNjFcdTVmNmRcdTVmNzNcdTVmNzdcdTVmODNcdTVmODJcdTVmN2ZcdTVmOGFcdTVmODhcdTVmOTFcdTVmODdcdTVmOWVcdTVm''@;'; put 'put ''OTlcdTVmOThcdTVmYTBcdTVmYThcdTVmYWRcdTVmYmNcdTVmZDZcdTVmZmJcdTVmZTRcdTVmZjhcdTVmZjFcdTVmZGRcdTYwYjNcdTVmZmZcdTYwMjFcdTYwNjBcdTYwMTlcdTYwMTBcdTYwMjlcdTYwMGVcdTYwMzFcdTYwMWJcdTYwMTVcdTYwMmJcdTYwMjZcdTYwMGZcdTYwM2FcdTYwNWFc''@;'; put 'put ''dTYwNDFcdTYwNmFcdTYwNzdcdTYwNWZcdTYwNGFcdTYwNDZcdTYwNGRcdTYwNjNcdTYwNDNcdTYwNjRcdTYwNDJcdTYwNmNcdTYwNmJcdTYwNTlcdTYwODFcdTYwOGRcdTYwZTdcdTYwODNcdTYwOWEiXSxbImQ4YTEiLCJcdTYwODRcdTYwOWJcdTYwOTZcdTYwOTdcdTYwOTJcdTYwYTdcdTYw''@;'; put 'put ''OGJcdTYwZTFcdTYwYjhcdTYwZTBcdTYwZDNcdTYwYjRcdTVmZjBcdTYwYmRcdTYwYzZcdTYwYjVcdTYwZDhcdTYxNGRcdTYxMTVcdTYxMDZcdTYwZjZcdTYwZjdcdTYxMDBcdTYwZjRcdTYwZmFcdTYxMDNcdTYxMjFcdTYwZmJcdTYwZjFcdTYxMGRcdTYxMGVcdTYxNDdcdTYxM2VcdTYxMjhc''@;'; put 'put ''dTYxMjdcdTYxNGFcdTYxM2ZcdTYxM2NcdTYxMmNcdTYxMzRcdTYxM2RcdTYxNDJcdTYxNDRcdTYxNzNcdTYxNzdcdTYxNThcdTYxNTlcdTYxNWFcdTYxNmJcdTYxNzRcdTYxNmZcdTYxNjVcdTYxNzFcdTYxNWZcdTYxNWRcdTYxNTNcdTYxNzVcdTYxOTlcdTYxOTZcdTYxODdcdTYxYWNcdTYx''@;'; put 'put ''OTRcdTYxOWFcdTYxOGFcdTYxOTFcdTYxYWJcdTYxYWVcdTYxY2NcdTYxY2FcdTYxYzlcdTYxZjdcdTYxYzhcdTYxYzNcdTYxYzZcdTYxYmFcdTYxY2JcdTdmNzlcdTYxY2RcdTYxZTZcdTYxZTNcdTYxZjZcdTYxZmFcdTYxZjRcdTYxZmZcdTYxZmRcdTYxZmNcdTYxZmVcdTYyMDBcdTYyMDhc''@;'; put 'put ''dTYyMDlcdTYyMGRcdTYyMGNcdTYyMTRcdTYyMWIiXSxbImQ5YTEiLCJcdTYyMWVcdTYyMjFcdTYyMmFcdTYyMmVcdTYyMzBcdTYyMzJcdTYyMzNcdTYyNDFcdTYyNGVcdTYyNWVcdTYyNjNcdTYyNWJcdTYyNjBcdTYyNjhcdTYyN2NcdTYyODJcdTYyODlcdTYyN2VcdTYyOTJcdTYyOTNcdTYy''@;'; put 'put ''OTZcdTYyZDRcdTYyODNcdTYyOTRcdTYyZDdcdTYyZDFcdTYyYmJcdTYyY2ZcdTYyZmZcdTYyYzZcdTY0ZDRcdTYyYzhcdTYyZGNcdTYyY2NcdTYyY2FcdTYyYzJcdTYyYzdcdTYyOWJcdTYyYzlcdTYzMGNcdTYyZWVcdTYyZjFcdTYzMjdcdTYzMDJcdTYzMDhcdTYyZWZcdTYyZjVcdTYzNTBc''@;'; put 'put ''dTYzM2VcdTYzNGRcdTY0MWNcdTYzNGZcdTYzOTZcdTYzOGVcdTYzODBcdTYzYWJcdTYzNzZcdTYzYTNcdTYzOGZcdTYzODlcdTYzOWZcdTYzYjVcdTYzNmJcdTYzNjlcdTYzYmVcdTYzZTlcdTYzYzBcdTYzYzZcdTYzZTNcdTYzYzlcdTYzZDJcdTYzZjZcdTYzYzRcdTY0MTZcdTY0MzRcdTY0''@;'; put 'put ''MDZcdTY0MTNcdTY0MjZcdTY0MzZcdTY1MWRcdTY0MTdcdTY0MjhcdTY0MGZcdTY0NjdcdTY0NmZcdTY0NzZcdTY0NGVcdTY1MmFcdTY0OTVcdTY0OTNcdTY0YTVcdTY0YTlcdTY0ODhcdTY0YmMiXSxbImRhYTEiLCJcdTY0ZGFcdTY0ZDJcdTY0YzVcdTY0YzdcdTY0YmJcdTY0ZDhcdTY0YzJc''@;'; put 'put ''dTY0ZjFcdTY0ZTdcdTgyMDlcdTY0ZTBcdTY0ZTFcdTYyYWNcdTY0ZTNcdTY0ZWZcdTY1MmNcdTY0ZjZcdTY0ZjRcdTY0ZjJcdTY0ZmFcdTY1MDBcdTY0ZmRcdTY1MThcdTY1MWNcdTY1MDVcdTY1MjRcdTY1MjNcdTY1MmJcdTY1MzRcdTY1MzVcdTY1MzdcdTY1MzZcdTY1MzhcdTc1NGJcdTY1''@;'; put 'put ''NDhcdTY1NTZcdTY1NTVcdTY1NGRcdTY1NThcdTY1NWVcdTY1NWRcdTY1NzJcdTY1NzhcdTY1ODJcdTY1ODNcdThiOGFcdTY1OWJcdTY1OWZcdTY1YWJcdTY1YjdcdTY1YzNcdTY1YzZcdTY1YzFcdTY1YzRcdTY1Y2NcdTY1ZDJcdTY1ZGJcdTY1ZDlcdTY1ZTBcdTY1ZTFcdTY1ZjFcdTY3NzJc''@;'; put 'put ''dTY2MGFcdTY2MDNcdTY1ZmJcdTY3NzNcdTY2MzVcdTY2MzZcdTY2MzRcdTY2MWNcdTY2NGZcdTY2NDRcdTY2NDlcdTY2NDFcdTY2NWVcdTY2NWRcdTY2NjRcdTY2NjdcdTY2NjhcdTY2NWZcdTY2NjJcdTY2NzBcdTY2ODNcdTY2ODhcdTY2OGVcdTY2ODlcdTY2ODRcdTY2OThcdTY2OWRcdTY2''@;'; put 'put ''YzFcdTY2YjlcdTY2YzlcdTY2YmVcdTY2YmMiXSxbImRiYTEiLCJcdTY2YzRcdTY2YjhcdTY2ZDZcdTY2ZGFcdTY2ZTBcdTY2M2ZcdTY2ZTZcdTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3MzZcdTY3NDFc''@;'; put 'put ''dTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlcdTY3NzBcdTY3YTlcdTY3N2NcdTY3NmFcdTY3OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRcdTY3ZGVcdTY3''@;'; put 'put ''ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4NDZcdTY4MjlcdTY4NDBcdTY4NGRcdTY4MzJcdTY4NGVcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4OWRcdTY4OWJcdTY4ODNc''@;'; put 'put ''dTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZcdTY4OGRcdTY4N2VcdTY5MDFcdTY4Y2FcdTY5MDhcdTY4ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2QiXSxbImRjYTEiLCJcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdcdTY4''@;'; put 'put ''ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5MjFcdTY4YzZcdTY5NzlcdTY5NzdcdTY5NWNcdTY5NzhcdTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5ODFc''@;'; put 'put ''dTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2VcdTViZThcdTY5Y2FcdTY5ZGRcdTY5YmJcdTY5YzNcdTY5YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFcdTY5''@;'; put 'put ''ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZhMGFcdTZhMTJcdTZhYzFcdTZhMjNcdTZhMTNcdTZhNDRcdTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZhOGRc''@;'; put 'put ''dTZhYTBcdTZhODRcdTZhYTJcdTZhYTMiXSxbImRkYTEiLCJcdTZhOTdcdTg2MTdcdTZhYmJcdTZhYzNcdTZhYzJcdTZhYjhcdTZhYjNcdTZhYWNcdTZhZGVcdTZhZDFcdTZhZGZcdTZhYWFcdTZhZGFcdTZhZWFcdTZhZmJcdTZiMDVcdTg2MTZcdTZhZmFcdTZiMTJcdTZiMTZcdTliMzFcdTZi''@;'; put 'put ''MWZcdTZiMzhcdTZiMzdcdTc2ZGNcdTZiMzlcdTk4ZWVcdTZiNDdcdTZiNDNcdTZiNDlcdTZiNTBcdTZiNTlcdTZiNTRcdTZiNWJcdTZiNWZcdTZiNjFcdTZiNzhcdTZiNzlcdTZiN2ZcdTZiODBcdTZiODRcdTZiODNcdTZiOGRcdTZiOThcdTZiOTVcdTZiOWVcdTZiYTRcdTZiYWFcdTZiYWJc''@;'; put 'put ''dTZiYWZcdTZiYjJcdTZiYjFcdTZiYjNcdTZiYjdcdTZiYmNcdTZiYzZcdTZiY2JcdTZiZDNcdTZiZGZcdTZiZWNcdTZiZWJcdTZiZjNcdTZiZWZcdTllYmVcdTZjMDhcdTZjMTNcdTZjMTRcdTZjMWJcdTZjMjRcdTZjMjNcdTZjNWVcdTZjNTVcdTZjNjJcdTZjNmFcdTZjODJcdTZjOGRcdTZj''@;'; put 'put ''OWFcdTZjODFcdTZjOWJcdTZjN2VcdTZjNjhcdTZjNzNcdTZjOTJcdTZjOTBcdTZjYzRcdTZjZjFcdTZjZDNcdTZjYmRcdTZjZDdcdTZjYzVcdTZjZGRcdTZjYWVcdTZjYjFcdTZjYmUiXSxbImRlYTEiLCJcdTZjYmFcdTZjZGJcdTZjZWZcdTZjZDlcdTZjZWFcdTZkMWZcdTg4NGRcdTZkMzZc''@;'; put 'put ''dTZkMmJcdTZkM2RcdTZkMzhcdTZkMTlcdTZkMzVcdTZkMzNcdTZkMTJcdTZkMGNcdTZkNjNcdTZkOTNcdTZkNjRcdTZkNWFcdTZkNzlcdTZkNTlcdTZkOGVcdTZkOTVcdTZmZTRcdTZkODVcdTZkZjlcdTZlMTVcdTZlMGFcdTZkYjVcdTZkYzdcdTZkZTZcdTZkYjhcdTZkYzZcdTZkZWNcdTZk''@;'; put 'put ''ZGVcdTZkY2NcdTZkZThcdTZkZDJcdTZkYzVcdTZkZmFcdTZkZDlcdTZkZTRcdTZkZDVcdTZkZWFcdTZkZWVcdTZlMmRcdTZlNmVcdTZlMmVcdTZlMTlcdTZlNzJcdTZlNWZcdTZlM2VcdTZlMjNcdTZlNmJcdTZlMmJcdTZlNzZcdTZlNGRcdTZlMWZcdTZlNDNcdTZlM2FcdTZlNGVcdTZlMjRc''@;'; put 'put ''dTZlZmZcdTZlMWRcdTZlMzhcdTZlODJcdTZlYWFcdTZlOThcdTZlYzlcdTZlYjdcdTZlZDNcdTZlYmRcdTZlYWZcdTZlYzRcdTZlYjJcdTZlZDRcdTZlZDVcdTZlOGZcdTZlYTVcdTZlYzJcdTZlOWZcdTZmNDFcdTZmMTFcdTcwNGNcdTZlZWNcdTZlZjhcdTZlZmVcdTZmM2ZcdTZlZjJcdTZm''@;'; put 'put ''MzFcdTZlZWZcdTZmMzJcdTZlY2MiXSxbImRmYTEiLCJcdTZmM2VcdTZmMTNcdTZlZjdcdTZmODZcdTZmN2FcdTZmNzhcdTZmODFcdTZmODBcdTZmNmZcdTZmNWJcdTZmZjNcdTZmNmRcdTZmODJcdTZmN2NcdTZmNThcdTZmOGVcdTZmOTFcdTZmYzJcdTZmNjZcdTZmYjNcdTZmYTNcdTZmYTFc''@;'; put 'put ''dTZmYTRcdTZmYjlcdTZmYzZcdTZmYWFcdTZmZGZcdTZmZDVcdTZmZWNcdTZmZDRcdTZmZDhcdTZmZjFcdTZmZWVcdTZmZGJcdTcwMDlcdTcwMGJcdTZmZmFcdTcwMTFcdTcwMDFcdTcwMGZcdTZmZmVcdTcwMWJcdTcwMWFcdTZmNzRcdTcwMWRcdTcwMThcdTcwMWZcdTcwMzBcdTcwM2VcdTcw''@;'; put 'put ''MzJcdTcwNTFcdTcwNjNcdTcwOTlcdTcwOTJcdTcwYWZcdTcwZjFcdTcwYWNcdTcwYjhcdTcwYjNcdTcwYWVcdTcwZGZcdTcwY2JcdTcwZGRcdTcwZDlcdTcxMDlcdTcwZmRcdTcxMWNcdTcxMTlcdTcxNjVcdTcxNTVcdTcxODhcdTcxNjZcdTcxNjJcdTcxNGNcdTcxNTZcdTcxNmNcdTcxOGZc''@;'; put 'put ''dTcxZmJcdTcxODRcdTcxOTVcdTcxYThcdTcxYWNcdTcxZDdcdTcxYjlcdTcxYmVcdTcxZDJcdTcxYzlcdTcxZDRcdTcxY2VcdTcxZTBcdTcxZWNcdTcxZTdcdTcxZjVcdTcxZmMiXSxbImUwYTEiLCJcdTcxZjlcdTcxZmZcdTcyMGRcdTcyMTBcdTcyMWJcdTcyMjhcdTcyMmRcdTcyMmNcdTcy''@;'; put 'put ''MzBcdTcyMzJcdTcyM2JcdTcyM2NcdTcyM2ZcdTcyNDBcdTcyNDZcdTcyNGJcdTcyNThcdTcyNzRcdTcyN2VcdTcyODJcdTcyODFcdTcyODdcdTcyOTJcdTcyOTZcdTcyYTJcdTcyYTdcdTcyYjlcdTcyYjJcdTcyYzNcdTcyYzZcdTcyYzRcdTcyY2VcdTcyZDJcdTcyZTJcdTcyZTBcdTcyZTFc''@;'; put 'put ''dTcyZjlcdTcyZjdcdTUwMGZcdTczMTdcdTczMGFcdTczMWNcdTczMTZcdTczMWRcdTczMzRcdTczMmZcdTczMjlcdTczMjVcdTczM2VcdTczNGVcdTczNGZcdTllZDhcdTczNTdcdTczNmFcdTczNjhcdTczNzBcdTczNzhcdTczNzVcdTczN2JcdTczN2FcdTczYzhcdTczYjNcdTczY2VcdTcz''@;'; put 'put ''YmJcdTczYzBcdTczZTVcdTczZWVcdTczZGVcdTc0YTJcdTc0MDVcdTc0NmZcdTc0MjVcdTczZjhcdTc0MzJcdTc0M2FcdTc0NTVcdTc0M2ZcdTc0NWZcdTc0NTlcdTc0NDFcdTc0NWNcdTc0NjlcdTc0NzBcdTc0NjNcdTc0NmFcdTc0NzZcdTc0N2VcdTc0OGJcdTc0OWVcdTc0YTdcdTc0Y2Fc''@;'; put 'put ''dTc0Y2ZcdTc0ZDRcdTczZjEiXSxbImUxYTEiLCJcdTc0ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlcdTc0ZWVcdTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVcdTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1''@;'; put 'put ''NDRcdTc1NGRcdTc1NGFcdTc1NDlcdTc1NWJcdTc1NDZcdTc1NWFcdTc1NjlcdTc1NjRcdTc1NjdcdTc1NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNc''@;'; put 'put ''dTc1YjVcdTc1YmRcdTc1YjhcdTc1YmNcdTc1YjFcdTc1Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlcdTc1ZTNcdTc1ZGVcdTc1ZmVcdTc1ZmZcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFcdTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2''@;'; put 'put ''MjRcdTc2MzRcdTc2MzBcdTc2M2JcdTc2NDdcdTc2NDhcdTc2NDZcdTc2NWNcdTc2NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzAiXSxbImUyYTEiLCJcdTc2NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVc''@;'; put 'put ''dTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFcdTc2YjBcdTc2YjRcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YzJcdTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZcdTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3''@;'; put 'put ''MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3NDdcdTc3NWFcdTc3NjhcdTc3NmJcdTc3NWJcdTc3NjVcdTc3N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdc''@;'; put 'put ''dTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVcdTc3ZmNcdTc4MGNcdTc4MTJcdTc5MjZcdTc4MjBcdTc5MmFcdTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVcdTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4''@;'; put 'put ''YzVcdTc4Y2FcdTc4ZWMiXSxbImUzYTEiLCJcdTc4ZTdcdTc4ZGFcdTc4ZmRcdTc4ZjRcdTc5MDdcdTc5MTJcdTc5MTFcdTc5MTlcdTc5MmNcdTc5MmJcdTc5NDBcdTc5NjBcdTc5NTdcdTc5NWZcdTc5NWFcdTc5NTVcdTc5NTNcdTc5N2FcdTc5N2ZcdTc5OGFcdTc5OWRcdTc5YTdcdTlmNGJc''@;'; put 'put ''dTc5YWFcdTc5YWVcdTc5YjNcdTc5YjlcdTc5YmFcdTc5YzlcdTc5ZDVcdTc5ZTdcdTc5ZWNcdTc5ZTFcdTc5ZTNcdTdhMDhcdTdhMGRcdTdhMThcdTdhMTlcdTdhMjBcdTdhMWZcdTc5ODBcdTdhMzFcdTdhM2JcdTdhM2VcdTdhMzdcdTdhNDNcdTdhNTdcdTdhNDlcdTdhNjFcdTdhNjJcdTdh''@;'; put 'put ''NjlcdTlmOWRcdTdhNzBcdTdhNzlcdTdhN2RcdTdhODhcdTdhOTdcdTdhOTVcdTdhOThcdTdhOTZcdTdhYTlcdTdhYzhcdTdhYjBcdTdhYjZcdTdhYzVcdTdhYzRcdTdhYmZcdTkwODNcdTdhYzdcdTdhY2FcdTdhY2RcdTdhY2ZcdTdhZDVcdTdhZDNcdTdhZDlcdTdhZGFcdTdhZGRcdTdhZTFc''@;'; put 'put ''dTdhZTJcdTdhZTZcdTdhZWRcdTdhZjBcdTdiMDJcdTdiMGZcdTdiMGFcdTdiMDZcdTdiMzNcdTdiMThcdTdiMTlcdTdiMWVcdTdiMzVcdTdiMjhcdTdiMzZcdTdiNTAiXSxbImU0YTEiLCJcdTdiN2FcdTdiMDRcdTdiNGRcdTdiMGJcdTdiNGNcdTdiNDVcdTdiNzVcdTdiNjVcdTdiNzRcdTdi''@;'; put 'put ''NjdcdTdiNzBcdTdiNzFcdTdiNmNcdTdiNmVcdTdiOWRcdTdiOThcdTdiOWZcdTdiOGRcdTdiOWNcdTdiOWFcdTdiOGJcdTdiOTJcdTdiOGZcdTdiNWRcdTdiOTlcdTdiY2JcdTdiYzFcdTdiY2NcdTdiY2ZcdTdiYjRcdTdiYzZcdTdiZGRcdTdiZTlcdTdjMTFcdTdjMTRcdTdiZTZcdTdiZTVc''@;'; put 'put ''dTdjNjBcdTdjMDBcdTdjMDdcdTdjMTNcdTdiZjNcdTdiZjdcdTdjMTdcdTdjMGRcdTdiZjZcdTdjMjNcdTdjMjdcdTdjMmFcdTdjMWZcdTdjMzdcdTdjMmJcdTdjM2RcdTdjNGNcdTdjNDNcdTdjNTRcdTdjNGZcdTdjNDBcdTdjNTBcdTdjNThcdTdjNWZcdTdjNjRcdTdjNTZcdTdjNjVcdTdj''@;'; put 'put ''NmNcdTdjNzVcdTdjODNcdTdjOTBcdTdjYTRcdTdjYWRcdTdjYTJcdTdjYWJcdTdjYTFcdTdjYThcdTdjYjNcdTdjYjJcdTdjYjFcdTdjYWVcdTdjYjlcdTdjYmRcdTdjYzBcdTdjYzVcdTdjYzJcdTdjZDhcdTdjZDJcdTdjZGNcdTdjZTJcdTliM2JcdTdjZWZcdTdjZjJcdTdjZjRcdTdjZjZc''@;'; put 'put ''dTdjZmFcdTdkMDYiXSxbImU1YTEiLCJcdTdkMDJcdTdkMWNcdTdkMTVcdTdkMGFcdTdkNDVcdTdkNGJcdTdkMmVcdTdkMzJcdTdkM2ZcdTdkMzVcdTdkNDZcdTdkNzNcdTdkNTZcdTdkNGVcdTdkNzJcdTdkNjhcdTdkNmVcdTdkNGZcdTdkNjNcdTdkOTNcdTdkODlcdTdkNWJcdTdkOGZcdTdk''@;'; put 'put ''N2RcdTdkOWJcdTdkYmFcdTdkYWVcdTdkYTNcdTdkYjVcdTdkYzdcdTdkYmRcdTdkYWJcdTdlM2RcdTdkYTJcdTdkYWZcdTdkZGNcdTdkYjhcdTdkOWZcdTdkYjBcdTdkZDhcdTdkZGRcdTdkZTRcdTdkZGVcdTdkZmJcdTdkZjJcdTdkZTFcdTdlMDVcdTdlMGFcdTdlMjNcdTdlMjFcdTdlMTJc''@;'; put 'put ''dTdlMzFcdTdlMWZcdTdlMDlcdTdlMGJcdTdlMjJcdTdlNDZcdTdlNjZcdTdlM2JcdTdlMzVcdTdlMzlcdTdlNDNcdTdlMzdcdTdlMzJcdTdlM2FcdTdlNjdcdTdlNWRcdTdlNTZcdTdlNWVcdTdlNTlcdTdlNWFcdTdlNzlcdTdlNmFcdTdlNjlcdTdlN2NcdTdlN2JcdTdlODNcdTdkZDVcdTdl''@;'; put 'put ''N2RcdThmYWVcdTdlN2ZcdTdlODhcdTdlODlcdTdlOGNcdTdlOTJcdTdlOTBcdTdlOTNcdTdlOTRcdTdlOTZcdTdlOGVcdTdlOWJcdTdlOWNcdTdmMzhcdTdmM2EiXSxbImU2YTEiLCJcdTdmNDVcdTdmNGNcdTdmNGRcdTdmNGVcdTdmNTBcdTdmNTFcdTdmNTVcdTdmNTRcdTdmNThcdTdmNWZc''@;'; put 'put ''dTdmNjBcdTdmNjhcdTdmNjlcdTdmNjdcdTdmNzhcdTdmODJcdTdmODZcdTdmODNcdTdmODhcdTdmODdcdTdmOGNcdTdmOTRcdTdmOWVcdTdmOWRcdTdmOWFcdTdmYTNcdTdmYWZcdTdmYjJcdTdmYjlcdTdmYWVcdTdmYjZcdTdmYjhcdThiNzFcdTdmYzVcdTdmYzZcdTdmY2FcdTdmZDVcdTdm''@;'; put 'put ''ZDRcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZjNcdTdmZjlcdTk4ZGNcdTgwMDZcdTgwMDRcdTgwMGJcdTgwMTJcdTgwMThcdTgwMTlcdTgwMWNcdTgwMjFcdTgwMjhcdTgwM2ZcdTgwM2JcdTgwNGFcdTgwNDZcdTgwNTJcdTgwNThcdTgwNWFcdTgwNWZcdTgwNjJcdTgwNjhcdTgwNzNcdTgwNzJc''@;'; put 'put ''dTgwNzBcdTgwNzZcdTgwNzlcdTgwN2RcdTgwN2ZcdTgwODRcdTgwODZcdTgwODVcdTgwOWJcdTgwOTNcdTgwOWFcdTgwYWRcdTUxOTBcdTgwYWNcdTgwZGJcdTgwZTVcdTgwZDlcdTgwZGRcdTgwYzRcdTgwZGFcdTgwZDZcdTgxMDlcdTgwZWZcdTgwZjFcdTgxMWJcdTgxMjlcdTgxMjNcdTgx''@;'; put 'put ''MmZcdTgxNGIiXSxbImU3YTEiLCJcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgwZmNcdTgxNzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRcdTgxYTNcdTgxNWZcdTgxOTNcdTgxYTlcdTgxYjBc''@;'; put 'put ''dTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2RcdTgxZDFcdTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDVcdTgyMDdcdTgyMGFcdTgyMGRcdTgyMTBcdTgy''@;'; put 'put ''MTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgyNWFcdTgyNWZcdTgyNjRcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRcdTgyOTJcdTgyYWJcdTgyOWZcdTgyYmJcdTgyYWNcdTgyZTFc''@;'; put 'put ''dTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNcdTgzMDNcdTgyZmJcdTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDkiXSxbImU4YTEiLCJcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgzMzlcdTgzNTBcdTgzNDVcdTgzMmZcdTgz''@;'; put 'put ''MmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgzMjNcdTgzOGVcdTgzODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2VcdTgzZmRcdTg0MDNcdTgzZDhcdTg0MGJc''@;'; put 'put ''dTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRcdTg0MzhcdTg1MDZcdTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0NDZcdTg0MmNcdTg0NmZcdTg0NzlcdTg0''@;'; put 'put ''MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0ZGFcdTg0ZDBcdTg0YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRcdTg0ZmNcdTg1NDBcdTg1NjNcdTg1NThc''@;'; put 'put ''dTg1NDgiXSxbImU5YTEiLCJcdTg1NDFcdTg2MDJcdTg1NGJcdTg1NTVcdTg1ODBcdTg1YTRcdTg1ODhcdTg1OTFcdTg1OGFcdTg1YThcdTg1NmRcdTg1OTRcdTg1OWJcdTg1ZWFcdTg1ODdcdTg1OWNcdTg1NzdcdTg1N2VcdTg1OTBcdTg1YzlcdTg1YmFcdTg1Y2ZcdTg1YjlcdTg1ZDBcdTg1''@;'; put 'put ''ZDVcdTg1ZGRcdTg1ZTVcdTg1ZGNcdTg1ZjlcdTg2MGFcdTg2MTNcdTg2MGJcdTg1ZmVcdTg1ZmFcdTg2MDZcdTg2MjJcdTg2MWFcdTg2MzBcdTg2M2ZcdTg2NGRcdTRlNTVcdTg2NTRcdTg2NWZcdTg2NjdcdTg2NzFcdTg2OTNcdTg2YTNcdTg2YTlcdTg2YWFcdTg2OGJcdTg2OGNcdTg2YjZc''@;'; put 'put ''dTg2YWZcdTg2YzRcdTg2YzZcdTg2YjBcdTg2YzlcdTg4MjNcdTg2YWJcdTg2ZDRcdTg2ZGVcdTg2ZTlcdTg2ZWNcdTg2ZGZcdTg2ZGJcdTg2ZWZcdTg3MTJcdTg3MDZcdTg3MDhcdTg3MDBcdTg3MDNcdTg2ZmJcdTg3MTFcdTg3MDlcdTg3MGRcdTg2ZjlcdTg3MGFcdTg3MzRcdTg3M2ZcdTg3''@;'; put 'put ''MzdcdTg3M2JcdTg3MjVcdTg3MjlcdTg3MWFcdTg3NjBcdTg3NWZcdTg3NzhcdTg3NGNcdTg3NGVcdTg3NzRcdTg3NTdcdTg3NjhcdTg3NmVcdTg3NTkiXSxbImVhYTEiLCJcdTg3NTNcdTg3NjNcdTg3NmFcdTg4MDVcdTg3YTJcdTg3OWZcdTg3ODJcdTg3YWZcdTg3Y2JcdTg3YmRcdTg3YzBc''@;'; put 'put ''dTg3ZDBcdTk2ZDZcdTg3YWJcdTg3YzRcdTg3YjNcdTg3YzdcdTg3YzZcdTg3YmJcdTg3ZWZcdTg3ZjJcdTg3ZTBcdTg4MGZcdTg4MGRcdTg3ZmVcdTg3ZjZcdTg3ZjdcdTg4MGVcdTg3ZDJcdTg4MTFcdTg4MTZcdTg4MTVcdTg4MjJcdTg4MjFcdTg4MzFcdTg4MzZcdTg4MzlcdTg4MjdcdTg4''@;'; put 'put ''M2JcdTg4NDRcdTg4NDJcdTg4NTJcdTg4NTlcdTg4NWVcdTg4NjJcdTg4NmJcdTg4ODFcdTg4N2VcdTg4OWVcdTg4NzVcdTg4N2RcdTg4YjVcdTg4NzJcdTg4ODJcdTg4OTdcdTg4OTJcdTg4YWVcdTg4OTlcdTg4YTJcdTg4OGRcdTg4YTRcdTg4YjBcdTg4YmZcdTg4YjFcdTg4YzNcdTg4YzRc''@;'; put 'put ''dTg4ZDRcdTg4ZDhcdTg4ZDlcdTg4ZGRcdTg4ZjlcdTg5MDJcdTg4ZmNcdTg4ZjRcdTg4ZThcdTg4ZjJcdTg5MDRcdTg5MGNcdTg5MGFcdTg5MTNcdTg5NDNcdTg5MWVcdTg5MjVcdTg5MmFcdTg5MmJcdTg5NDFcdTg5NDRcdTg5M2JcdTg5MzZcdTg5MzhcdTg5NGNcdTg5MWRcdTg5NjBcdTg5''@;'; put 'put ''NWUiXSxbImViYTEiLCJcdTg5NjZcdTg5NjRcdTg5NmRcdTg5NmFcdTg5NmZcdTg5NzRcdTg5NzdcdTg5N2VcdTg5ODNcdTg5ODhcdTg5OGFcdTg5OTNcdTg5OThcdTg5YTFcdTg5YTlcdTg5YTZcdTg5YWNcdTg5YWZcdTg5YjJcdTg5YmFcdTg5YmRcdTg5YmZcdTg5YzBcdTg5ZGFcdTg5ZGNc''@;'; put 'put ''dTg5ZGRcdTg5ZTdcdTg5ZjRcdTg5ZjhcdThhMDNcdThhMTZcdThhMTBcdThhMGNcdThhMWJcdThhMWRcdThhMjVcdThhMzZcdThhNDFcdThhNWJcdThhNTJcdThhNDZcdThhNDhcdThhN2NcdThhNmRcdThhNmNcdThhNjJcdThhODVcdThhODJcdThhODRcdThhYThcdThhYTFcdThhOTFcdThh''@;'; put 'put ''YTVcdThhYTZcdThhOWFcdThhYTNcdThhYzRcdThhY2RcdThhYzJcdThhZGFcdThhZWJcdThhZjNcdThhZTdcdThhZTRcdThhZjFcdThiMTRcdThhZTBcdThhZTJcdThhZjdcdThhZGVcdThhZGJcdThiMGNcdThiMDdcdThiMWFcdThhZTFcdThiMTZcdThiMTBcdThiMTdcdThiMjBcdThiMzNc''@;'; put 'put ''dTk3YWJcdThiMjZcdThiMmJcdThiM2VcdThiMjhcdThiNDFcdThiNGNcdThiNGZcdThiNGVcdThiNDlcdThiNTZcdThiNWJcdThiNWFcdThiNmIiXSxbImVjYTEiLCJcdThiNWZcdThiNmNcdThiNmZcdThiNzRcdThiN2RcdThiODBcdThiOGNcdThiOGVcdThiOTJcdThiOTNcdThiOTZcdThi''@;'; put 'put ''OTlcdThiOWFcdThjM2FcdThjNDFcdThjM2ZcdThjNDhcdThjNGNcdThjNGVcdThjNTBcdThjNTVcdThjNjJcdThjNmNcdThjNzhcdThjN2FcdThjODJcdThjODlcdThjODVcdThjOGFcdThjOGRcdThjOGVcdThjOTRcdThjN2NcdThjOThcdTYyMWRcdThjYWRcdThjYWFcdThjYmRcdThjYjJc''@;'; put 'put ''dThjYjNcdThjYWVcdThjYjZcdThjYzhcdThjYzFcdThjZTRcdThjZTNcdThjZGFcdThjZmRcdThjZmFcdThjZmJcdThkMDRcdThkMDVcdThkMGFcdThkMDdcdThkMGZcdThkMGRcdThkMTBcdTlmNGVcdThkMTNcdThjY2RcdThkMTRcdThkMTZcdThkNjdcdThkNmRcdThkNzFcdThkNzNcdThk''@;'; put 'put ''ODFcdThkOTlcdThkYzJcdThkYmVcdThkYmFcdThkY2ZcdThkZGFcdThkZDZcdThkY2NcdThkZGJcdThkY2JcdThkZWFcdThkZWJcdThkZGZcdThkZTNcdThkZmNcdThlMDhcdThlMDlcdThkZmZcdThlMWRcdThlMWVcdThlMTBcdThlMWZcdThlNDJcdThlMzVcdThlMzBcdThlMzRcdThlNGEi''@;'; put 'put ''XSxbImVkYTEiLCJcdThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRcdThlNjBcdThlMmFcdThlNjNcdThlNTVcdThlNzZcdThlNzJcdThlN2NcdThlODFcdThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThl''@;'; put 'put ''YTFcdThlYWNcdThlYjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThlZGJcdThlZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVcdThmMGFcdThmMDVcdThmMTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2Jc''@;'; put 'put ''dThmMzlcdThmNDVcdThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdcdThmNWNcdThmNjJcdThmNjNcdThmNjRcdThmOWNcdThmOWZcdThmYTNcdThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThm''@;'; put 'put ''ZjlcdThmZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkwMTZcdTkwMGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjgiXSxbImVlYTEiLCJcdTkwNGZcdTkwNTBcdTkwNTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZc''@;'; put 'put ''dTkwNzZcdTk2YThcdTkwNzJcdTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlcdTkwOGZcdTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkwZTRcdTYyNDhcdTkwZGJcdTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkx''@;'; put 'put ''NjVcdTkxNjlcdTkxNzNcdTkxNzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkxYWZcdTkxYWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFcdTkxYzlcdTkxY2JcdTkxZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZc''@;'; put 'put ''dTkyMTRcdTkyMmNcdTkyMTVcdTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRcdTkyNDhcdTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTkyOTZcdTkyOTNcdTkyOWJcdTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmUiXSxb''@;'; put 'put ''ImVmYTEiLCJcdTkzMTlcdTkzMjJcdTkzMWFcdTkzMjNcdTkzM2FcdTkzMzVcdTkzM2JcdTkzNWNcdTkzNjBcdTkzN2NcdTkzNmVcdTkzNTZcdTkzYjBcdTkzYWNcdTkzYWRcdTkzOTRcdTkzYjlcdTkzZDZcdTkzZDdcdTkzZThcdTkzZTVcdTkzZDhcdTkzYzNcdTkzZGRcdTkzZDBcdTkzYzhc''@;'; put 'put ''dTkzZTRcdTk0MWFcdTk0MTRcdTk0MTNcdTk0MDNcdTk0MDdcdTk0MTBcdTk0MzZcdTk0MmJcdTk0MzVcdTk0MjFcdTk0M2FcdTk0NDFcdTk0NTJcdTk0NDRcdTk0NWJcdTk0NjBcdTk0NjJcdTk0NWVcdTk0NmFcdTkyMjlcdTk0NzBcdTk0NzVcdTk0NzdcdTk0N2RcdTk0NWFcdTk0N2NcdTk0''@;'; put 'put ''N2VcdTk0ODFcdTk0N2ZcdTk1ODJcdTk1ODdcdTk1OGFcdTk1OTRcdTk1OTZcdTk1OThcdTk1OTlcdTk1YTBcdTk1YThcdTk1YTdcdTk1YWRcdTk1YmNcdTk1YmJcdTk1YjlcdTk1YmVcdTk1Y2FcdTZmZjZcdTk1YzNcdTk1Y2RcdTk1Y2NcdTk1ZDVcdTk1ZDRcdTk1ZDZcdTk1ZGNcdTk1ZTFc''@;'; put 'put ''dTk1ZTVcdTk1ZTJcdTk2MjFcdTk2MjhcdTk2MmVcdTk2MmZcdTk2NDJcdTk2NGNcdTk2NGZcdTk2NGJcdTk2NzdcdTk2NWNcdTk2NWUiXSxbImYwYTEiLCJcdTk2NWRcdTk2NWZcdTk2NjZcdTk2NzJcdTk2NmNcdTk2OGRcdTk2OThcdTk2OTVcdTk2OTdcdTk2YWFcdTk2YTdcdTk2YjFcdTk2''@;'; put 'put ''YjJcdTk2YjBcdTk2YjRcdTk2YjZcdTk2YjhcdTk2YjlcdTk2Y2VcdTk2Y2JcdTk2YzlcdTk2Y2RcdTg5NGRcdTk2ZGNcdTk3MGRcdTk2ZDVcdTk2ZjlcdTk3MDRcdTk3MDZcdTk3MDhcdTk3MTNcdTk3MGVcdTk3MTFcdTk3MGZcdTk3MTZcdTk3MTlcdTk3MjRcdTk3MmFcdTk3MzBcdTk3Mzlc''@;'; put 'put ''dTk3M2RcdTk3M2VcdTk3NDRcdTk3NDZcdTk3NDhcdTk3NDJcdTk3NDlcdTk3NWNcdTk3NjBcdTk3NjRcdTk3NjZcdTk3NjhcdTUyZDJcdTk3NmJcdTk3NzFcdTk3NzlcdTk3ODVcdTk3N2NcdTk3ODFcdTk3N2FcdTk3ODZcdTk3OGJcdTk3OGZcdTk3OTBcdTk3OWNcdTk3YThcdTk3YTZcdTk3''@;'; put 'put ''YTNcdTk3YjNcdTk3YjRcdTk3YzNcdTk3YzZcdTk3YzhcdTk3Y2JcdTk3ZGNcdTk3ZWRcdTlmNGZcdTk3ZjJcdTdhZGZcdTk3ZjZcdTk3ZjVcdTk4MGZcdTk4MGNcdTk4MzhcdTk4MjRcdTk4MjFcdTk4MzdcdTk4M2RcdTk4NDZcdTk4NGZcdTk4NGJcdTk4NmJcdTk4NmZcdTk4NzAiXSxbImYx''@;'; put 'put ''YTEiLCJcdTk4NzFcdTk4NzRcdTk4NzNcdTk4YWFcdTk4YWZcdTk4YjFcdTk4YjZcdTk4YzRcdTk4YzNcdTk4YzZcdTk4ZTlcdTk4ZWJcdTk5MDNcdTk5MDlcdTk5MTJcdTk5MTRcdTk5MThcdTk5MjFcdTk5MWRcdTk5MWVcdTk5MjRcdTk5MjBcdTk5MmNcdTk5MmVcdTk5M2RcdTk5M2VcdTk5''@;'; put 'put ''NDJcdTk5NDlcdTk5NDVcdTk5NTBcdTk5NGJcdTk5NTFcdTk5NTJcdTk5NGNcdTk5NTVcdTk5OTdcdTk5OThcdTk5YTVcdTk5YWRcdTk5YWVcdTk5YmNcdTk5ZGZcdTk5ZGJcdTk5ZGRcdTk5ZDhcdTk5ZDFcdTk5ZWRcdTk5ZWVcdTk5ZjFcdTk5ZjJcdTk5ZmJcdTk5ZjhcdTlhMDFcdTlhMGZc''@;'; put 'put ''dTlhMDVcdTk5ZTJcdTlhMTlcdTlhMmJcdTlhMzdcdTlhNDVcdTlhNDJcdTlhNDBcdTlhNDNcdTlhM2VcdTlhNTVcdTlhNGRcdTlhNWJcdTlhNTdcdTlhNWZcdTlhNjJcdTlhNjVcdTlhNjRcdTlhNjlcdTlhNmJcdTlhNmFcdTlhYWRcdTlhYjBcdTlhYmNcdTlhYzBcdTlhY2ZcdTlhZDFcdTlh''@;'; put 'put ''ZDNcdTlhZDRcdTlhZGVcdTlhZGZcdTlhZTJcdTlhZTNcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZWVcdTlhZjRcdTlhZjFcdTlhZjciXSxbImYyYTEiLCJcdTlhZmJcdTliMDZcdTliMThcdTliMWFcdTliMWZcdTliMjJcdTliMjNcdTliMjVcdTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmVc''@;'; put 'put ''dTliMmZcdTliMzJcdTliNDRcdTliNDNcdTliNGZcdTliNGRcdTliNGVcdTliNTFcdTliNThcdTliNzRcdTliOTNcdTliODNcdTliOTFcdTliOTZcdTliOTdcdTliOWZcdTliYTBcdTliYThcdTliYjRcdTliYzBcdTliY2FcdTliYjlcdTliYzZcdTliY2ZcdTliZDFcdTliZDJcdTliZTNcdTli''@;'; put 'put ''ZTJcdTliZTRcdTliZDRcdTliZTFcdTljM2FcdTliZjJcdTliZjFcdTliZjBcdTljMTVcdTljMTRcdTljMDlcdTljMTNcdTljMGNcdTljMDZcdTljMDhcdTljMTJcdTljMGFcdTljMDRcdTljMmVcdTljMWJcdTljMjVcdTljMjRcdTljMjFcdTljMzBcdTljNDdcdTljMzJcdTljNDZcdTljM2Vc''@;'; put 'put ''dTljNWFcdTljNjBcdTljNjdcdTljNzZcdTljNzhcdTljZTdcdTljZWNcdTljZjBcdTlkMDlcdTlkMDhcdTljZWJcdTlkMDNcdTlkMDZcdTlkMmFcdTlkMjZcdTlkYWZcdTlkMjNcdTlkMWZcdTlkNDRcdTlkMTVcdTlkMTJcdTlkNDFcdTlkM2ZcdTlkM2VcdTlkNDZcdTlkNDgiXSxbImYzYTEi''@;'; put 'put ''LCJcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlcdTlkNzJcdTlkODlcdTlkODdcdTlkYWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFcdTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhc''@;'; put 'put ''dTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTllMWVcdTllNzVcdTllNzlcdTllN2RcdTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTllYWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTll''@;'; put 'put ''ZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVcdTllZThcdTllZWZcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFcdTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZc''@;'; put 'put ''dTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlmNmFcdTlmNzdcdTlmNzJcdTlmNzZcdTlmOTVcdTlmOWNcdTlmYTAiXSxbImY0YTEiLCJcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTkiXSxbImY5YTEiLCJcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRm''@;'; put 'put ''YzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRc''@;'; put 'put ''dTUwZDhcdTUxNGFcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3''@;'; put 'put ''YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhc''@;'; put 'put ''dTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjciXSxbImZhYTEiLCJcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2''@;'; put 'put ''MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5Njhc''@;'; put 'put ''dWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdTZkOTZcdTZkYWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZl''@;'; put 'put ''MjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjEiXSxbImZiYTEiLCJcdTcyYmVcdTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlc''@;'; put 'put ''dTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVcdTc0NjJcdTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUyYWZcdTc4MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZh''@;'; put 'put ''MThcdWZhMTlcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdhZWJcdTdiOWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFcdWZhMWVcdTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhcdTg0YjRc''@;'; put 'put ''dTg1NTNcdTg1NTlcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFcdTg4MDdcdTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThjZjBcdThjZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZhMjVcdTkw''@;'; put 'put ''NjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGEiXSxbImZjYTEiLCJcdTkxZDdcdTkxZGVcdTkxZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlcdTkyNTFcdTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhc''@;'; put 'put ''dTkyZTdcdTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVcdTkzMjFcdTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkzZjhcdTk0MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZh''@;'; put 'put ''MjlcdTk2OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3NTVcdTk4NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDlcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJc''@;'; put 'put ''dWZhMmRcdTllMTlcdTllZDEiXSxbImZjZjEiLCJcdTIxNzAiLDksIlx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMiJdLFsiOGZhMmFmIiwiXHUwMmQ4XHUwMmM3XHhiOFx1MDJkOVx1MDJkZFx4YWZcdTAyZGJcdTAyZGFcdWZmNWVcdTAzODRcdTAzODUiXSxbIjhmYTJjMiIsIlx4YTFceGE2XHhi''@;'; put 'put ''ZiJdLFsiOGZhMmViIiwiXHhiYVx4YWFceGE5XHhhZVx1MjEyMlx4YTRcdTIxMTYiXSxbIjhmYTZlMSIsIlx1MDM4Nlx1MDM4OFx1MDM4OVx1MDM4YVx1MDNhYSJdLFsiOGZhNmU3IiwiXHUwMzhjIl0sWyI4ZmE2ZTkiLCJcdTAzOGVcdTAzYWIiXSxbIjhmYTZlYyIsIlx1MDM4ZiJdLFsiOGZh''@;'; put 'put ''NmYxIiwiXHUwM2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2NhXHUwMzkwXHUwM2NjXHUwM2MyXHUwM2NkXHUwM2NiXHUwM2IwXHUwM2NlIl0sWyI4ZmE3YzIiLCJcdTA0MDIiLDEwLCJcdTA0MGVcdTA0MGYiXSxbIjhmYTdmMiIsIlx1MDQ1MiIsMTAsIlx1MDQ1ZVx1MDQ1ZiJdLFsiOGZhOWEx''@;'; put 'put ''IiwiXHhjNlx1MDExMCJdLFsiOGZhOWE0IiwiXHUwMTI2Il0sWyI4ZmE5YTYiLCJcdTAxMzIiXSxbIjhmYTlhOCIsIlx1MDE0MVx1MDEzZiJdLFsiOGZhOWFiIiwiXHUwMTRhXHhkOFx1MDE1MiJdLFsiOGZhOWFmIiwiXHUwMTY2XHhkZSJdLFsiOGZhOWMxIiwiXHhlNlx1MDExMVx4ZjBcdTAx''@;'; put 'put ''MjdcdTAxMzFcdTAxMzNcdTAxMzhcdTAxNDJcdTAxNDBcdTAxNDlcdTAxNGJceGY4XHUwMTUzXHhkZlx1MDE2N1x4ZmUiXSxbIjhmYWFhMSIsIlx4YzFceGMwXHhjNFx4YzJcdTAxMDJcdTAxY2RcdTAxMDBcdTAxMDRceGM1XHhjM1x1MDEwNlx1MDEwOFx1MDEwY1x4YzdcdTAxMGFcdTAxMGVc''@;'; put 'put ''eGM5XHhjOFx4Y2JceGNhXHUwMTFhXHUwMTE2XHUwMTEyXHUwMTE4Il0sWyI4ZmFhYmEiLCJcdTAxMWNcdTAxMWVcdTAxMjJcdTAxMjBcdTAxMjRceGNkXHhjY1x4Y2ZceGNlXHUwMWNmXHUwMTMwXHUwMTJhXHUwMTJlXHUwMTI4XHUwMTM0XHUwMTM2XHUwMTM5XHUwMTNkXHUwMTNiXHUwMTQz''@;'; put 'put ''XHUwMTQ3XHUwMTQ1XHhkMVx4ZDNceGQyXHhkNlx4ZDRcdTAxZDFcdTAxNTBcdTAxNGNceGQ1XHUwMTU0XHUwMTU4XHUwMTU2XHUwMTVhXHUwMTVjXHUwMTYwXHUwMTVlXHUwMTY0XHUwMTYyXHhkYVx4ZDlceGRjXHhkYlx1MDE2Y1x1MDFkM1x1MDE3MFx1MDE2YVx1MDE3Mlx1MDE2ZVx1MDE2''@;'; put 'put ''OFx1MDFkN1x1MDFkYlx1MDFkOVx1MDFkNVx1MDE3NFx4ZGRcdTAxNzhcdTAxNzZcdTAxNzlcdTAxN2RcdTAxN2IiXSxbIjhmYWJhMSIsIlx4ZTFceGUwXHhlNFx4ZTJcdTAxMDNcdTAxY2VcdTAxMDFcdTAxMDVceGU1XHhlM1x1MDEwN1x1MDEwOVx1MDEwZFx4ZTdcdTAxMGJcdTAxMGZceGU5''@;'; put 'put ''XHhlOFx4ZWJceGVhXHUwMTFiXHUwMTE3XHUwMTEzXHUwMTE5XHUwMWY1XHUwMTFkXHUwMTFmIl0sWyI4ZmFiYmQiLCJcdTAxMjFcdTAxMjVceGVkXHhlY1x4ZWZceGVlXHUwMWQwIl0sWyI4ZmFiYzUiLCJcdTAxMmJcdTAxMmZcdTAxMjlcdTAxMzVcdTAxMzdcdTAxM2FcdTAxM2VcdTAxM2Nc''@;'; put 'put ''dTAxNDRcdTAxNDhcdTAxNDZceGYxXHhmM1x4ZjJceGY2XHhmNFx1MDFkMlx1MDE1MVx1MDE0ZFx4ZjVcdTAxNTVcdTAxNTlcdTAxNTdcdTAxNWJcdTAxNWRcdTAxNjFcdTAxNWZcdTAxNjVcdTAxNjNceGZhXHhmOVx4ZmNceGZiXHUwMTZkXHUwMWQ0XHUwMTcxXHUwMTZiXHUwMTczXHUwMTZm''@;'; put 'put ''XHUwMTY5XHUwMWQ4XHUwMWRjXHUwMWRhXHUwMWQ2XHUwMTc1XHhmZFx4ZmZcdTAxNzdcdTAxN2FcdTAxN2VcdTAxN2MiXSxbIjhmYjBhMSIsIlx1NGUwMlx1NGUwNFx1NGUwNVx1NGUwY1x1NGUxMlx1NGUxZlx1NGUyM1x1NGUyNFx1NGUyOFx1NGUyYlx1NGUyZVx1NGUyZlx1NGUzMFx1NGUz''@;'; put 'put ''NVx1NGU0MFx1NGU0MVx1NGU0NFx1NGU0N1x1NGU1MVx1NGU1YVx1NGU1Y1x1NGU2M1x1NGU2OFx1NGU2OVx1NGU3NFx1NGU3NVx1NGU3OVx1NGU3Zlx1NGU4ZFx1NGU5Nlx1NGU5N1x1NGU5ZFx1NGVhZlx1NGViOVx1NGVjM1x1NGVkMFx1NGVkYVx1NGVkYlx1NGVlMFx1NGVlMVx1NGVlMlx1''@;'; put 'put ''NGVlOFx1NGVlZlx1NGVmMVx1NGVmM1x1NGVmNVx1NGVmZFx1NGVmZVx1NGVmZlx1NGYwMFx1NGYwMlx1NGYwM1x1NGYwOFx1NGYwYlx1NGYwY1x1NGYxMlx1NGYxNVx1NGYxNlx1NGYxN1x1NGYxOVx1NGYyZVx1NGYzMVx1NGY2MFx1NGYzM1x1NGYzNVx1NGYzN1x1NGYzOVx1NGYzYlx1NGYz''@;'; put 'put ''ZVx1NGY0MFx1NGY0Mlx1NGY0OFx1NGY0OVx1NGY0Ylx1NGY0Y1x1NGY1Mlx1NGY1NFx1NGY1Nlx1NGY1OFx1NGY1Zlx1NGY2M1x1NGY2YVx1NGY2Y1x1NGY2ZVx1NGY3MVx1NGY3N1x1NGY3OFx1NGY3OVx1NGY3YVx1NGY3ZFx1NGY3ZVx1NGY4MVx1NGY4Mlx1NGY4NCJdLFsiOGZiMWExIiwi''@;'; put 'put ''XHU0Zjg1XHU0Zjg5XHU0ZjhhXHU0ZjhjXHU0ZjhlXHU0ZjkwXHU0ZjkyXHU0ZjkzXHU0Zjk0XHU0Zjk3XHU0Zjk5XHU0ZjlhXHU0ZjllXHU0ZjlmXHU0ZmIyXHU0ZmI3XHU0ZmI5XHU0ZmJiXHU0ZmJjXHU0ZmJkXHU0ZmJlXHU0ZmMwXHU0ZmMxXHU0ZmM1XHU0ZmM2XHU0ZmM4XHU0ZmM5XHU0''@;'; put 'put ''ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmNmXHU0ZmQyXHU0ZmRjXHU0ZmUwXHU0ZmUyXHU0ZmYwXHU0ZmYyXHU0ZmZjXHU0ZmZkXHU0ZmZmXHU1MDAwXHU1MDAxXHU1MDA0XHU1MDA3XHU1MDBhXHU1MDBjXHU1MDBlXHU1MDEwXHU1MDEzXHU1MDE3XHU1MDE4XHU1MDFiXHU1MDFjXHU1MDFkXHU1MDFl''@;'; put 'put ''XHU1MDIyXHU1MDI3XHU1MDJlXHU1MDMwXHU1MDMyXHU1MDMzXHU1MDM1XHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ1XHU1MDQ2XHU1MDRhXHU1MDRjXHU1MDRlXHU1MDUxXHU1MDUyXHU1MDUzXHU1MDU3XHU1MDU5XHU1MDVmXHU1MDYwXHU1MDYyXHU1MDYzXHU1MDY2XHU1MDY3XHU1MDZhXHU1''@;'; put 'put ''MDZkXHU1MDcwXHU1MDcxXHU1MDNiXHU1MDgxXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDhhXHU1MDhlXHU1MDhmXHU1MDkwIl0sWyI4ZmIyYTEiLCJcdTUwOTJcdTUwOTNcdTUwOTRcdTUwOTZcdTUwOWJcdTUwOWNcdTUwOWUiLDQsIlx1NTBhYVx1NTBhZlx1NTBiMFx1NTBiOVx1NTBiYVx1NTBi''@;'; put 'put ''ZFx1NTBjMFx1NTBjM1x1NTBjNFx1NTBjN1x1NTBjY1x1NTBjZVx1NTBkMFx1NTBkM1x1NTBkNFx1NTBkOFx1NTBkY1x1NTBkZFx1NTBkZlx1NTBlMlx1NTBlNFx1NTBlNlx1NTBlOFx1NTBlOVx1NTBlZlx1NTBmMVx1NTBmNlx1NTBmYVx1NTBmZVx1NTEwM1x1NTEwNlx1NTEwN1x1NTEwOFx1''@;'; put 'put ''NTEwYlx1NTEwY1x1NTEwZFx1NTEwZVx1NTBmMlx1NTExMFx1NTExN1x1NTExOVx1NTExYlx1NTExY1x1NTExZFx1NTExZVx1NTEyM1x1NTEyN1x1NTEyOFx1NTEyY1x1NTEyZFx1NTEyZlx1NTEzMVx1NTEzM1x1NTEzNFx1NTEzNVx1NTEzOFx1NTEzOVx1NTE0Mlx1NTE0YVx1NTE0Zlx1NTE1''@;'; put 'put ''M1x1NTE1NVx1NTE1N1x1NTE1OFx1NTE1Zlx1NTE2NFx1NTE2Nlx1NTE3ZVx1NTE4M1x1NTE4NFx1NTE4Ylx1NTE4ZVx1NTE5OFx1NTE5ZFx1NTFhMVx1NTFhM1x1NTFhZFx1NTFiOFx1NTFiYVx1NTFiY1x1NTFiZVx1NTFiZlx1NTFjMiJdLFsiOGZiM2ExIiwiXHU1MWM4XHU1MWNmXHU1MWQx''@;'; put 'put ''XHU1MWQyXHU1MWQzXHU1MWQ1XHU1MWQ4XHU1MWRlXHU1MWUyXHU1MWU1XHU1MWVlXHU1MWYyXHU1MWYzXHU1MWY0XHU1MWY3XHU1MjAxXHU1MjAyXHU1MjA1XHU1MjEyXHU1MjEzXHU1MjE1XHU1MjE2XHU1MjE4XHU1MjIyXHU1MjI4XHU1MjMxXHU1MjMyXHU1MjM1XHU1MjNjXHU1MjQ1XHU1''@;'; put 'put ''MjQ5XHU1MjU1XHU1MjU3XHU1MjU4XHU1MjVhXHU1MjVjXHU1MjVmXHU1MjYwXHU1MjYxXHU1MjY2XHU1MjZlXHU1Mjc3XHU1Mjc4XHU1Mjc5XHU1MjgwXHU1MjgyXHU1Mjg1XHU1MjhhXHU1MjhjXHU1MjkzXHU1Mjk1XHU1Mjk2XHU1Mjk3XHU1Mjk4XHU1MjlhXHU1MjljXHU1MmE0XHU1MmE1''@;'; put 'put ''XHU1MmE2XHU1MmE3XHU1MmFmXHU1MmIwXHU1MmI2XHU1MmI3XHU1MmI4XHU1MmJhXHU1MmJiXHU1MmJkXHU1MmMwXHU1MmM0XHU1MmM2XHU1MmM4XHU1MmNjXHU1MmNmXHU1MmQxXHU1MmQ0XHU1MmQ2XHU1MmRiXHU1MmRjXHU1MmUxXHU1MmU1XHU1MmU4XHU1MmU5XHU1MmVhXHU1MmVjXHU1''@;'; put 'put ''MmYwXHU1MmYxXHU1MmY0XHU1MmY2XHU1MmY3XHU1MzAwXHU1MzAzXHU1MzBhXHU1MzBiIl0sWyI4ZmI0YTEiLCJcdTUzMGNcdTUzMTFcdTUzMTNcdTUzMThcdTUzMWJcdTUzMWNcdTUzMWVcdTUzMWZcdTUzMjVcdTUzMjdcdTUzMjhcdTUzMjlcdTUzMmJcdTUzMmNcdTUzMmRcdTUzMzBcdTUz''@;'; put 'put ''MzJcdTUzMzVcdTUzM2NcdTUzM2RcdTUzM2VcdTUzNDJcdTUzNGNcdTUzNGJcdTUzNTlcdTUzNWJcdTUzNjFcdTUzNjNcdTUzNjVcdTUzNmNcdTUzNmRcdTUzNzJcdTUzNzlcdTUzN2VcdTUzODNcdTUzODdcdTUzODhcdTUzOGVcdTUzOTNcdTUzOTRcdTUzOTlcdTUzOWRcdTUzYTFcdTUzYTRc''@;'; put 'put ''dTUzYWFcdTUzYWJcdTUzYWZcdTUzYjJcdTUzYjRcdTUzYjVcdTUzYjdcdTUzYjhcdTUzYmFcdTUzYmRcdTUzYzBcdTUzYzVcdTUzY2ZcdTUzZDJcdTUzZDNcdTUzZDVcdTUzZGFcdTUzZGRcdTUzZGVcdTUzZTBcdTUzZTZcdTUzZTdcdTUzZjVcdTU0MDJcdTU0MTNcdTU0MWFcdTU0MjFcdTU0''@;'; put 'put ''MjdcdTU0MjhcdTU0MmFcdTU0MmZcdTU0MzFcdTU0MzRcdTU0MzVcdTU0NDNcdTU0NDRcdTU0NDdcdTU0NGRcdTU0NGZcdTU0NWVcdTU0NjJcdTU0NjRcdTU0NjZcdTU0NjdcdTU0NjlcdTU0NmJcdTU0NmRcdTU0NmVcdTU0NzRcdTU0N2YiXSxbIjhmYjVhMSIsIlx1NTQ4MVx1NTQ4M1x1NTQ4''@;'; put 'put ''NVx1NTQ4OFx1NTQ4OVx1NTQ4ZFx1NTQ5MVx1NTQ5NVx1NTQ5Nlx1NTQ5Y1x1NTQ5Zlx1NTRhMVx1NTRhNlx1NTRhN1x1NTRhOVx1NTRhYVx1NTRhZFx1NTRhZVx1NTRiMVx1NTRiN1x1NTRiOVx1NTRiYVx1NTRiYlx1NTRiZlx1NTRjNlx1NTRjYVx1NTRjZFx1NTRjZVx1NTRlMFx1NTRlYVx1''@;'; put 'put ''NTRlY1x1NTRlZlx1NTRmNlx1NTRmY1x1NTRmZVx1NTRmZlx1NTUwMFx1NTUwMVx1NTUwNVx1NTUwOFx1NTUwOVx1NTUwY1x1NTUwZFx1NTUwZVx1NTUxNVx1NTUyYVx1NTUyYlx1NTUzMlx1NTUzNVx1NTUzNlx1NTUzYlx1NTUzY1x1NTUzZFx1NTU0MVx1NTU0N1x1NTU0OVx1NTU0YVx1NTU0''@;'; put 'put ''ZFx1NTU1MFx1NTU1MVx1NTU1OFx1NTU1YVx1NTU1Ylx1NTU1ZVx1NTU2MFx1NTU2MVx1NTU2NFx1NTU2Nlx1NTU3Zlx1NTU4MVx1NTU4Mlx1NTU4Nlx1NTU4OFx1NTU4ZVx1NTU4Zlx1NTU5MVx1NTU5Mlx1NTU5M1x1NTU5NFx1NTU5N1x1NTVhM1x1NTVhNFx1NTVhZFx1NTViMlx1NTViZlx1''@;'; put 'put ''NTVjMVx1NTVjM1x1NTVjNlx1NTVjOVx1NTVjYlx1NTVjY1x1NTVjZVx1NTVkMVx1NTVkMiJdLFsiOGZiNmExIiwiXHU1NWQzXHU1NWQ3XHU1NWQ4XHU1NWRiXHU1NWRlXHU1NWUyXHU1NWU5XHU1NWY2XHU1NWZmXHU1NjA1XHU1NjA4XHU1NjBhXHU1NjBkIiw1LCJcdTU2MTlcdTU2MmNcdTU2''@;'; put 'put ''MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2MzlcdTU2M2JcdTU2M2NcdTU2M2RcdTU2M2ZcdTU2NDBcdTU2NDFcdTU2NDNcdTU2NDRcdTU2NDZcdTU2NDlcdTU2NGJcdTU2NGRcdTU2NGZcdTU2NTRcdTU2NWVcdTU2NjBcdTU2NjFcdTU2NjJcdTU2NjNcdTU2NjZcdTU2NjlcdTU2NmRcdTU2NmZc''@;'; put 'put ''dTU2NzFcdTU2NzJcdTU2NzVcdTU2ODRcdTU2ODVcdTU2ODhcdTU2OGJcdTU2OGNcdTU2OTVcdTU2OTlcdTU2OWFcdTU2OWRcdTU2OWVcdTU2OWZcdTU2YTZcdTU2YTdcdTU2YThcdTU2YTlcdTU2YWJcdTU2YWNcdTU2YWRcdTU2YjFcdTU2YjNcdTU2YjdcdTU2YmVcdTU2YzVcdTU2YzlcdTU2''@;'; put 'put ''Y2FcdTU2Y2JcdTU2Y2ZcdTU2ZDBcdTU2Y2NcdTU2Y2RcdTU2ZDlcdTU2ZGNcdTU2ZGRcdTU2ZGZcdTU2ZTFcdTU2ZTQiLDQsIlx1NTZmMVx1NTZlYlx1NTZlZCJdLFsiOGZiN2ExIiwiXHU1NmY2XHU1NmY3XHU1NzAxXHU1NzAyXHU1NzA3XHU1NzBhXHU1NzBjXHU1NzExXHU1NzE1XHU1NzFh''@;'; put 'put ''XHU1NzFiXHU1NzFkXHU1NzIwXHU1NzIyXHU1NzIzXHU1NzI0XHU1NzI1XHU1NzI5XHU1NzJhXHU1NzJjXHU1NzJlXHU1NzJmXHU1NzMzXHU1NzM0XHU1NzNkXHU1NzNlXHU1NzNmXHU1NzQ1XHU1NzQ2XHU1NzRjXHU1NzRkXHU1NzUyXHU1NzYyXHU1NzY1XHU1NzY3XHU1NzY4XHU1NzZiXHU1''@;'; put 'put ''NzZkIiw0LCJcdTU3NzNcdTU3NzRcdTU3NzVcdTU3NzdcdTU3NzlcdTU3N2FcdTU3N2JcdTU3N2NcdTU3N2VcdTU3ODFcdTU3ODNcdTU3OGNcdTU3OTRcdTU3OTdcdTU3OTlcdTU3OWFcdTU3OWNcdTU3OWRcdTU3OWVcdTU3OWZcdTU3YTFcdTU3OTVcdTU3YTdcdTU3YThcdTU3YTlcdTU3YWNc''@;'; put 'put ''dTU3YjhcdTU3YmRcdTU3YzdcdTU3YzhcdTU3Y2NcdTU3Y2ZcdTU3ZDVcdTU3ZGRcdTU3ZGVcdTU3ZTRcdTU3ZTZcdTU3ZTdcdTU3ZTlcdTU3ZWRcdTU3ZjBcdTU3ZjVcdTU3ZjZcdTU3ZjhcdTU3ZmRcdTU3ZmVcdTU3ZmZcdTU4MDNcdTU4MDRcdTU4MDhcdTU4MDlcdTU3ZTEiXSxbIjhmYjhh''@;'; put 'put ''MSIsIlx1NTgwY1x1NTgwZFx1NTgxYlx1NTgxZVx1NTgxZlx1NTgyMFx1NTgyNlx1NTgyN1x1NTgyZFx1NTgzMlx1NTgzOVx1NTgzZlx1NTg0OVx1NTg0Y1x1NTg0ZFx1NTg0Zlx1NTg1MFx1NTg1NVx1NTg1Zlx1NTg2MVx1NTg2NFx1NTg2N1x1NTg2OFx1NTg3OFx1NTg3Y1x1NTg3Zlx1NTg4''@;'; put 'put ''MFx1NTg4MVx1NTg4N1x1NTg4OFx1NTg4OVx1NTg4YVx1NTg4Y1x1NTg4ZFx1NTg4Zlx1NTg5MFx1NTg5NFx1NTg5Nlx1NTg5ZFx1NThhMFx1NThhMVx1NThhMlx1NThhNlx1NThhOVx1NThiMVx1NThiMlx1NThjNFx1NThiY1x1NThjMlx1NThjOFx1NThjZFx1NThjZVx1NThkMFx1NThkMlx1''@;'; put 'put ''NThkNFx1NThkNlx1NThkYVx1NThkZFx1NThlMVx1NThlMlx1NThlOVx1NThmM1x1NTkwNVx1NTkwNlx1NTkwYlx1NTkwY1x1NTkxMlx1NTkxM1x1NTkxNFx1ODY0MVx1NTkxZFx1NTkyMVx1NTkyM1x1NTkyNFx1NTkyOFx1NTkyZlx1NTkzMFx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzZlx1NTk0''@;'; put 'put ''M1x1NTk0Nlx1NTk1Mlx1NTk1M1x1NTk1OVx1NTk1Ylx1NTk1ZFx1NTk1ZVx1NTk1Zlx1NTk2MVx1NTk2M1x1NTk2Ylx1NTk2ZCJdLFsiOGZiOWExIiwiXHU1OTZmXHU1OTcyXHU1OTc1XHU1OTc2XHU1OTc5XHU1OTdiXHU1OTdjXHU1OThiXHU1OThjXHU1OThlXHU1OTkyXHU1OTk1XHU1OTk3''@;'; put 'put ''XHU1OTlmXHU1OWE0XHU1OWE3XHU1OWFkXHU1OWFlXHU1OWFmXHU1OWIwXHU1OWIzXHU1OWI3XHU1OWJhXHU1OWJjXHU1OWMxXHU1OWMzXHU1OWM0XHU1OWM4XHU1OWNhXHU1OWNkXHU1OWQyXHU1OWRkXHU1OWRlXHU1OWRmXHU1OWUzXHU1OWU0XHU1OWU3XHU1OWVlXHU1OWVmXHU1OWYxXHU1''@;'; put 'put ''OWYyXHU1OWY0XHU1OWY3XHU1YTAwXHU1YTA0XHU1YTBjXHU1YTBkXHU1YTBlXHU1YTEyXHU1YTEzXHU1YTFlXHU1YTIzXHU1YTI0XHU1YTI3XHU1YTI4XHU1YTJhXHU1YTJkXHU1YTMwXHU1YTQ0XHU1YTQ1XHU1YTQ3XHU1YTQ4XHU1YTRjXHU1YTUwXHU1YTU1XHU1YTVlXHU1YTYzXHU1YTY1''@;'; put 'put ''XHU1YTY3XHU1YTZkXHU1YTc3XHU1YTdhXHU1YTdiXHU1YTdlXHU1YThiXHU1YTkwXHU1YTkzXHU1YTk2XHU1YTk5XHU1YTljXHU1YTllXHU1YTlmXHU1YWEwXHU1YWEyXHU1YWE3XHU1YWFjXHU1YWIxXHU1YWIyXHU1YWIzXHU1YWI1XHU1YWI4XHU1YWJhXHU1YWJiXHU1YWJmIl0sWyI4ZmJh''@;'; put 'put ''YTEiLCJcdTVhYzRcdTVhYzZcdTVhYzhcdTVhY2ZcdTVhZGFcdTVhZGNcdTVhZTBcdTVhZTVcdTVhZWFcdTVhZWVcdTVhZjVcdTVhZjZcdTVhZmRcdTViMDBcdTViMDFcdTViMDhcdTViMTdcdTViMzRcdTViMTlcdTViMWJcdTViMWRcdTViMjFcdTViMjVcdTViMmRcdTViMzhcdTViNDFcdTVi''@;'; put 'put ''NGJcdTViNGNcdTViNTJcdTViNTZcdTViNWVcdTViNjhcdTViNmVcdTViNmZcdTViN2NcdTViN2RcdTViN2VcdTViN2ZcdTViODFcdTViODRcdTViODZcdTViOGFcdTViOGVcdTViOTBcdTViOTFcdTViOTNcdTViOTRcdTViOTZcdTViYThcdTViYTlcdTViYWNcdTViYWRcdTViYWZcdTViYjFc''@;'; put 'put ''dTViYjJcdTViYjdcdTViYmFcdTViYmNcdTViYzBcdTViYzFcdTViY2RcdTViY2ZcdTViZDYiLDQsIlx1NWJlMFx1NWJlZlx1NWJmMVx1NWJmNFx1NWJmZFx1NWMwY1x1NWMxN1x1NWMxZVx1NWMxZlx1NWMyM1x1NWMyNlx1NWMyOVx1NWMyYlx1NWMyY1x1NWMyZVx1NWMzMFx1NWMzMlx1NWMz''@;'; put 'put ''NVx1NWMzNlx1NWM1OVx1NWM1YVx1NWM1Y1x1NWM2Mlx1NWM2M1x1NWM2N1x1NWM2OFx1NWM2OSJdLFsiOGZiYmExIiwiXHU1YzZkXHU1YzcwXHU1Yzc0XHU1Yzc1XHU1YzdhXHU1YzdiXHU1YzdjXHU1YzdkXHU1Yzg3XHU1Yzg4XHU1YzhhXHU1YzhmXHU1YzkyXHU1YzlkXHU1YzlmXHU1Y2Ew''@;'; put 'put ''XHU1Y2EyXHU1Y2EzXHU1Y2E2XHU1Y2FhXHU1Y2IyXHU1Y2I0XHU1Y2I1XHU1Y2JhXHU1Y2M5XHU1Y2NiXHU1Y2QyXHU1Y2RkXHU1Y2Q3XHU1Y2VlXHU1Y2YxXHU1Y2YyXHU1Y2Y0XHU1ZDAxXHU1ZDA2XHU1ZDBkXHU1ZDEyXHU1ZDJiXHU1ZDIzXHU1ZDI0XHU1ZDI2XHU1ZDI3XHU1ZDMxXHU1''@;'; put 'put ''ZDM0XHU1ZDM5XHU1ZDNkXHU1ZDNmXHU1ZDQyXHU1ZDQzXHU1ZDQ2XHU1ZDQ4XHU1ZDU1XHU1ZDUxXHU1ZDU5XHU1ZDRhXHU1ZDVmXHU1ZDYwXHU1ZDYxXHU1ZDYyXHU1ZDY0XHU1ZDZhXHU1ZDZkXHU1ZDcwXHU1ZDc5XHU1ZDdhXHU1ZDdlXHU1ZDdmXHU1ZDgxXHU1ZDgzXHU1ZDg4XHU1ZDhh''@;'; put 'put ''XHU1ZDkyXHU1ZDkzXHU1ZDk0XHU1ZDk1XHU1ZDk5XHU1ZDliXHU1ZDlmXHU1ZGEwXHU1ZGE3XHU1ZGFiXHU1ZGIwXHU1ZGI0XHU1ZGI4XHU1ZGI5XHU1ZGMzXHU1ZGM3XHU1ZGNiXHU1ZGQwXHU1ZGNlXHU1ZGQ4XHU1ZGQ5XHU1ZGUwXHU1ZGU0Il0sWyI4ZmJjYTEiLCJcdTVkZTlcdTVkZjhc''@;'; put 'put ''dTVkZjlcdTVlMDBcdTVlMDdcdTVlMGRcdTVlMTJcdTVlMTRcdTVlMTVcdTVlMThcdTVlMWZcdTVlMjBcdTVlMmVcdTVlMjhcdTVlMzJcdTVlMzVcdTVlM2VcdTVlNGJcdTVlNTBcdTVlNDlcdTVlNTFcdTVlNTZcdTVlNThcdTVlNWJcdTVlNWNcdTVlNWVcdTVlNjhcdTVlNmEiLDQsIlx1NWU3''@;'; put 'put ''MFx1NWU4MFx1NWU4Ylx1NWU4ZVx1NWVhMlx1NWVhNFx1NWVhNVx1NWVhOFx1NWVhYVx1NWVhY1x1NWViMVx1NWViM1x1NWViZFx1NWViZVx1NWViZlx1NWVjNlx1NWVjY1x1NWVjYlx1NWVjZVx1NWVkMVx1NWVkMlx1NWVkNFx1NWVkNVx1NWVkY1x1NWVkZVx1NWVlNVx1NWVlYlx1NWYwMlx1''@;'; put 'put ''NWYwNlx1NWYwN1x1NWYwOFx1NWYwZVx1NWYxOVx1NWYxY1x1NWYxZFx1NWYyMVx1NWYyMlx1NWYyM1x1NWYyNFx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYzNFx1NWYzNlx1NWYzYlx1NWYzZFx1NWYzZlx1NWY0MFx1NWY0NFx1NWY0NVx1NWY0N1x1NWY0ZFx1NWY1MFx1NWY1''@;'; put 'put ''NFx1NWY1OFx1NWY1Ylx1NWY2MFx1NWY2M1x1NWY2NFx1NWY2NyJdLFsiOGZiZGExIiwiXHU1ZjZmXHU1ZjcyXHU1Zjc0XHU1Zjc1XHU1Zjc4XHU1ZjdhXHU1ZjdkXHU1ZjdlXHU1Zjg5XHU1ZjhkXHU1ZjhmXHU1Zjk2XHU1ZjljXHU1ZjlkXHU1ZmEyXHU1ZmE3XHU1ZmFiXHU1ZmE0XHU1ZmFj''@;'; put 'put ''XHU1ZmFmXHU1ZmIwXHU1ZmIxXHU1ZmI4XHU1ZmM0XHU1ZmM3XHU1ZmM4XHU1ZmM5XHU1ZmNiXHU1ZmQwIiw0LCJcdTVmZGVcdTVmZTFcdTVmZTJcdTVmZThcdTVmZTlcdTVmZWFcdTVmZWNcdTVmZWRcdTVmZWVcdTVmZWZcdTVmZjJcdTVmZjNcdTVmZjZcdTVmZmFcdTVmZmNcdTYwMDdcdTYw''@;'; put 'put ''MGFcdTYwMGRcdTYwMTNcdTYwMTRcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWZcdTYwMjRcdTYwMmRcdTYwMzNcdTYwMzVcdTYwNDBcdTYwNDdcdTYwNDhcdTYwNDlcdTYwNGNcdTYwNTFcdTYwNTRcdTYwNTZcdTYwNTdcdTYwNWRcdTYwNjFcdTYwNjdcdTYwNzFcdTYwN2VcdTYwN2ZcdTYwODJc''@;'; put 'put ''dTYwODZcdTYwODhcdTYwOGFcdTYwOGVcdTYwOTFcdTYwOTNcdTYwOTVcdTYwOThcdTYwOWRcdTYwOWVcdTYwYTJcdTYwYTRcdTYwYTVcdTYwYThcdTYwYjBcdTYwYjFcdTYwYjciXSxbIjhmYmVhMSIsIlx1NjBiYlx1NjBiZVx1NjBjMlx1NjBjNFx1NjBjOFx1NjBjOVx1NjBjYVx1NjBjYlx1''@;'; put 'put ''NjBjZVx1NjBjZlx1NjBkNFx1NjBkNVx1NjBkOVx1NjBkYlx1NjBkZFx1NjBkZVx1NjBlMlx1NjBlNVx1NjBmMlx1NjBmNVx1NjBmOFx1NjBmY1x1NjBmZFx1NjEwMlx1NjEwN1x1NjEwYVx1NjEwY1x1NjExMCIsNCwiXHU2MTE2XHU2MTE3XHU2MTE5XHU2MTFjXHU2MTFlXHU2MTIyXHU2MTJh''@;'; put 'put ''XHU2MTJiXHU2MTMwXHU2MTMxXHU2MTM1XHU2MTM2XHU2MTM3XHU2MTM5XHU2MTQxXHU2MTQ1XHU2MTQ2XHU2MTQ5XHU2MTVlXHU2MTYwXHU2MTZjXHU2MTcyXHU2MTc4XHU2MTdiXHU2MTdjXHU2MTdmXHU2MTgwXHU2MTgxXHU2MTgzXHU2MTg0XHU2MThiXHU2MThkXHU2MTkyXHU2MTkzXHU2''@;'; put 'put ''MTk3XHU2MTk4XHU2MTljXHU2MTlkXHU2MTlmXHU2MWEwXHU2MWE1XHU2MWE4XHU2MWFhXHU2MWFkXHU2MWI4XHU2MWI5XHU2MWJjXHU2MWMwXHU2MWMxXHU2MWMyXHU2MWNlXHU2MWNmXHU2MWQ1XHU2MWRjXHU2MWRkXHU2MWRlXHU2MWRmXHU2MWUxXHU2MWUyXHU2MWU3XHU2MWU5XHU2MWU1''@;'; put 'put ''Il0sWyI4ZmJmYTEiLCJcdTYxZWNcdTYxZWRcdTYxZWZcdTYyMDFcdTYyMDNcdTYyMDRcdTYyMDdcdTYyMTNcdTYyMTVcdTYyMWNcdTYyMjBcdTYyMjJcdTYyMjNcdTYyMjdcdTYyMjlcdTYyMmJcdTYyMzlcdTYyM2RcdTYyNDJcdTYyNDNcdTYyNDRcdTYyNDZcdTYyNGNcdTYyNTBcdTYyNTFc''@;'; put 'put ''dTYyNTJcdTYyNTRcdTYyNTZcdTYyNWFcdTYyNWNcdTYyNjRcdTYyNmRcdTYyNmZcdTYyNzNcdTYyN2FcdTYyN2RcdTYyOGRcdTYyOGVcdTYyOGZcdTYyOTBcdTYyYTZcdTYyYThcdTYyYjNcdTYyYjZcdTYyYjdcdTYyYmFcdTYyYmVcdTYyYmZcdTYyYzRcdTYyY2VcdTYyZDVcdTYyZDZcdTYy''@;'; put 'put ''ZGFcdTYyZWFcdTYyZjJcdTYyZjRcdTYyZmNcdTYyZmRcdTYzMDNcdTYzMDRcdTYzMGFcdTYzMGJcdTYzMGRcdTYzMTBcdTYzMTNcdTYzMTZcdTYzMThcdTYzMjlcdTYzMmFcdTYzMmRcdTYzMzVcdTYzMzZcdTYzMzlcdTYzM2NcdTYzNDFcdTYzNDJcdTYzNDNcdTYzNDRcdTYzNDZcdTYzNGFc''@;'; put 'put ''dTYzNGJcdTYzNGVcdTYzNTJcdTYzNTNcdTYzNTRcdTYzNThcdTYzNWJcdTYzNjVcdTYzNjZcdTYzNmNcdTYzNmRcdTYzNzFcdTYzNzRcdTYzNzUiXSxbIjhmYzBhMSIsIlx1NjM3OFx1NjM3Y1x1NjM3ZFx1NjM3Zlx1NjM4Mlx1NjM4NFx1NjM4N1x1NjM4YVx1NjM5MFx1NjM5NFx1NjM5NVx1''@;'; put 'put ''NjM5OVx1NjM5YVx1NjM5ZVx1NjNhNFx1NjNhNlx1NjNhZFx1NjNhZVx1NjNhZlx1NjNiZFx1NjNjMVx1NjNjNVx1NjNjOFx1NjNjZVx1NjNkMVx1NjNkM1x1NjNkNFx1NjNkNVx1NjNkY1x1NjNlMFx1NjNlNVx1NjNlYVx1NjNlY1x1NjNmMlx1NjNmM1x1NjNmNVx1NjNmOFx1NjNmOVx1NjQw''@;'; put 'put ''OVx1NjQwYVx1NjQxMFx1NjQxMlx1NjQxNFx1NjQxOFx1NjQxZVx1NjQyMFx1NjQyMlx1NjQyNFx1NjQyNVx1NjQyOVx1NjQyYVx1NjQyZlx1NjQzMFx1NjQzNVx1NjQzZFx1NjQzZlx1NjQ0Ylx1NjQ0Zlx1NjQ1MVx1NjQ1Mlx1NjQ1M1x1NjQ1NFx1NjQ1YVx1NjQ1Ylx1NjQ1Y1x1NjQ1ZFx1''@;'; put 'put ''NjQ1Zlx1NjQ2MFx1NjQ2MVx1NjQ2M1x1NjQ2ZFx1NjQ3M1x1NjQ3NFx1NjQ3Ylx1NjQ3ZFx1NjQ4NVx1NjQ4N1x1NjQ4Zlx1NjQ5MFx1NjQ5MVx1NjQ5OFx1NjQ5OVx1NjQ5Ylx1NjQ5ZFx1NjQ5Zlx1NjRhMVx1NjRhM1x1NjRhNlx1NjRhOFx1NjRhY1x1NjRiM1x1NjRiZFx1NjRiZVx1NjRi''@;'; put 'put ''ZiJdLFsiOGZjMWExIiwiXHU2NGM0XHU2NGM5XHU2NGNhXHU2NGNiXHU2NGNjXHU2NGNlXHU2NGQwXHU2NGQxXHU2NGQ1XHU2NGQ3XHU2NGU0XHU2NGU1XHU2NGU5XHU2NGVhXHU2NGVkXHU2NGYwXHU2NGY1XHU2NGY3XHU2NGZiXHU2NGZmXHU2NTAxXHU2NTA0XHU2NTA4XHU2NTA5XHU2NTBh''@;'; put 'put ''XHU2NTBmXHU2NTEzXHU2NTE0XHU2NTE2XHU2NTE5XHU2NTFiXHU2NTFlXHU2NTFmXHU2NTIyXHU2NTI2XHU2NTI5XHU2NTJlXHU2NTMxXHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQzXHU2NTQ3XHU2NTQ5XHU2NTUwXHU2NTUyXHU2NTU0XHU2NTVmXHU2NTYwXHU2NTY3XHU2NTZiXHU2NTdhXHU2''@;'; put 'put ''NTdkXHU2NTgxXHU2NTg1XHU2NThhXHU2NTkyXHU2NTk1XHU2NTk4XHU2NTlkXHU2NWEwXHU2NWEzXHU2NWE2XHU2NWFlXHU2NWIyXHU2NWIzXHU2NWI0XHU2NWJmXHU2NWMyXHU2NWM4XHU2NWM5XHU2NWNlXHU2NWQwXHU2NWQ0XHU2NWQ2XHU2NWQ4XHU2NWRmXHU2NWYwXHU2NWYyXHU2NWY0''@;'; put 'put ''XHU2NWY1XHU2NWY5XHU2NWZlXHU2NWZmXHU2NjAwXHU2NjA0XHU2NjA4XHU2NjA5XHU2NjBkXHU2NjExXHU2NjEyXHU2NjE1XHU2NjE2XHU2NjFkIl0sWyI4ZmMyYTEiLCJcdTY2MWVcdTY2MjFcdTY2MjJcdTY2MjNcdTY2MjRcdTY2MjZcdTY2MjlcdTY2MmFcdTY2MmJcdTY2MmNcdTY2MmVc''@;'; put 'put ''dTY2MzBcdTY2MzFcdTY2MzNcdTY2MzlcdTY2MzdcdTY2NDBcdTY2NDVcdTY2NDZcdTY2NGFcdTY2NGNcdTY2NTFcdTY2NGVcdTY2NTdcdTY2NThcdTY2NTlcdTY2NWJcdTY2NWNcdTY2NjBcdTY2NjFcdTY2ZmJcdTY2NmFcdTY2NmJcdTY2NmNcdTY2N2VcdTY2NzNcdTY2NzVcdTY2N2ZcdTY2''@;'; put 'put ''NzdcdTY2NzhcdTY2NzlcdTY2N2JcdTY2ODBcdTY2N2NcdTY2OGJcdTY2OGNcdTY2OGRcdTY2OTBcdTY2OTJcdTY2OTlcdTY2OWFcdTY2OWJcdTY2OWNcdTY2OWZcdTY2YTBcdTY2YTRcdTY2YWRcdTY2YjFcdTY2YjJcdTY2YjVcdTY2YmJcdTY2YmZcdTY2YzBcdTY2YzJcdTY2YzNcdTY2Yzhc''@;'; put 'put ''dTY2Y2NcdTY2Y2VcdTY2Y2ZcdTY2ZDRcdTY2ZGJcdTY2ZGZcdTY2ZThcdTY2ZWJcdTY2ZWNcdTY2ZWVcdTY2ZmFcdTY3MDVcdTY3MDdcdTY3MGVcdTY3MTNcdTY3MTlcdTY3MWNcdTY3MjBcdTY3MjJcdTY3MzNcdTY3M2VcdTY3NDVcdTY3NDdcdTY3NDhcdTY3NGNcdTY3NTRcdTY3NTVcdTY3''@;'; put 'put ''NWQiXSxbIjhmYzNhMSIsIlx1Njc2Nlx1Njc2Y1x1Njc2ZVx1Njc3NFx1Njc3Nlx1Njc3Ylx1Njc4MVx1Njc4NFx1Njc4ZVx1Njc4Zlx1Njc5MVx1Njc5M1x1Njc5Nlx1Njc5OFx1Njc5OVx1Njc5Ylx1NjdiMFx1NjdiMVx1NjdiMlx1NjdiNVx1NjdiYlx1NjdiY1x1NjdiZFx1NjdmOVx1Njdj''@;'; put 'put ''MFx1NjdjMlx1NjdjM1x1NjdjNVx1NjdjOFx1NjdjOVx1NjdkMlx1NjdkN1x1NjdkOVx1NjdkY1x1NjdlMVx1NjdlNlx1NjdmMFx1NjdmMlx1NjdmNlx1NjdmN1x1Njg1Mlx1NjgxNFx1NjgxOVx1NjgxZFx1NjgxZlx1NjgyOFx1NjgyN1x1NjgyY1x1NjgyZFx1NjgyZlx1NjgzMFx1NjgzMVx1''@;'; put 'put ''NjgzM1x1NjgzYlx1NjgzZlx1Njg0NFx1Njg0NVx1Njg0YVx1Njg0Y1x1Njg1NVx1Njg1N1x1Njg1OFx1Njg1Ylx1Njg2Ylx1Njg2ZSIsNCwiXHU2ODc1XHU2ODc5XHU2ODdhXHU2ODdiXHU2ODdjXHU2ODgyXHU2ODg0XHU2ODg2XHU2ODg4XHU2ODk2XHU2ODk4XHU2ODlhXHU2ODljXHU2OGEx''@;'; put 'put ''XHU2OGEzXHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFlXHU2OGIyXHU2OGJiXHU2OGM1XHU2OGM4XHU2OGNjXHU2OGNmIl0sWyI4ZmM0YTEiLCJcdTY4ZDBcdTY4ZDFcdTY4ZDNcdTY4ZDZcdTY4ZDlcdTY4ZGNcdTY4ZGRcdTY4ZTVcdTY4ZThcdTY4ZWFcdTY4ZWJcdTY4ZWNcdTY4ZWRcdTY4ZjBc''@;'; put 'put ''dTY4ZjFcdTY4ZjVcdTY4ZjZcdTY4ZmJcdTY4ZmNcdTY4ZmRcdTY5MDZcdTY5MDlcdTY5MGFcdTY5MTBcdTY5MTFcdTY5MTNcdTY5MTZcdTY5MTdcdTY5MzFcdTY5MzNcdTY5MzVcdTY5MzhcdTY5M2JcdTY5NDJcdTY5NDVcdTY5NDlcdTY5NGVcdTY5NTdcdTY5NWJcdTY5NjNcdTY5NjRcdTY5''@;'; put 'put ''NjVcdTY5NjZcdTY5NjhcdTY5NjlcdTY5NmNcdTY5NzBcdTY5NzFcdTY5NzJcdTY5N2FcdTY5N2JcdTY5N2ZcdTY5ODBcdTY5OGRcdTY5OTJcdTY5OTZcdTY5OThcdTY5YTFcdTY5YTVcdTY5YTZcdTY5YThcdTY5YWJcdTY5YWRcdTY5YWZcdTY5YjdcdTY5YjhcdTY5YmFcdTY5YmNcdTY5YzVc''@;'; put 'put ''dTY5YzhcdTY5ZDFcdTY5ZDZcdTY5ZDdcdTY5ZTJcdTY5ZTVcdTY5ZWVcdTY5ZWZcdTY5ZjFcdTY5ZjNcdTY5ZjVcdTY5ZmVcdTZhMDBcdTZhMDFcdTZhMDNcdTZhMGZcdTZhMTFcdTZhMTVcdTZhMWFcdTZhMWRcdTZhMjBcdTZhMjRcdTZhMjhcdTZhMzBcdTZhMzIiXSxbIjhmYzVhMSIsIlx1''@;'; put 'put ''NmEzNFx1NmEzN1x1NmEzYlx1NmEzZVx1NmEzZlx1NmE0NVx1NmE0Nlx1NmE0OVx1NmE0YVx1NmE0ZVx1NmE1MFx1NmE1MVx1NmE1Mlx1NmE1NVx1NmE1Nlx1NmE1Ylx1NmE2NFx1NmE2N1x1NmE2YVx1NmE3MVx1NmE3M1x1NmE3ZVx1NmE4MVx1NmE4M1x1NmE4Nlx1NmE4N1x1NmE4OVx1NmE4''@;'; put 'put ''Ylx1NmE5MVx1NmE5Ylx1NmE5ZFx1NmE5ZVx1NmE5Zlx1NmFhNVx1NmFhYlx1NmFhZlx1NmFiMFx1NmFiMVx1NmFiNFx1NmFiZFx1NmFiZVx1NmFiZlx1NmFjNlx1NmFjOVx1NmFjOFx1NmFjY1x1NmFkMFx1NmFkNFx1NmFkNVx1NmFkNlx1NmFkY1x1NmFkZFx1NmFlNFx1NmFlN1x1NmFlY1x1''@;'; put 'put ''NmFmMFx1NmFmMVx1NmFmMlx1NmFmY1x1NmFmZFx1NmIwMlx1NmIwM1x1NmIwNlx1NmIwN1x1NmIwOVx1NmIwZlx1NmIxMFx1NmIxMVx1NmIxN1x1NmIxYlx1NmIxZVx1NmIyNFx1NmIyOFx1NmIyYlx1NmIyY1x1NmIyZlx1NmIzNVx1NmIzNlx1NmIzYlx1NmIzZlx1NmI0Nlx1NmI0YVx1NmI0''@;'; put 'put ''ZFx1NmI1Mlx1NmI1Nlx1NmI1OFx1NmI1ZFx1NmI2MFx1NmI2N1x1NmI2Ylx1NmI2ZVx1NmI3MFx1NmI3NVx1NmI3ZCJdLFsiOGZjNmExIiwiXHU2YjdlXHU2YjgyXHU2Yjg1XHU2Yjk3XHU2YjliXHU2YjlmXHU2YmEwXHU2YmEyXHU2YmEzXHU2YmE4XHU2YmE5XHU2YmFjXHU2YmFkXHU2YmFl''@;'; put 'put ''XHU2YmIwXHU2YmI4XHU2YmI5XHU2YmJkXHU2YmJlXHU2YmMzXHU2YmM0XHU2YmM5XHU2YmNjXHU2YmQ2XHU2YmRhXHU2YmUxXHU2YmUzXHU2YmU2XHU2YmU3XHU2YmVlXHU2YmYxXHU2YmY3XHU2YmY5XHU2YmZmXHU2YzAyXHU2YzA0XHU2YzA1XHU2YzA5XHU2YzBkXHU2YzBlXHU2YzEwXHU2''@;'; put 'put ''YzEyXHU2YzE5XHU2YzFmXHU2YzI2XHU2YzI3XHU2YzI4XHU2YzJjXHU2YzJlXHU2YzMzXHU2YzM1XHU2YzM2XHU2YzNhXHU2YzNiXHU2YzNmXHU2YzRhXHU2YzRiXHU2YzRkXHU2YzRmXHU2YzUyXHU2YzU0XHU2YzU5XHU2YzViXHU2YzVjXHU2YzZiXHU2YzZkXHU2YzZmXHU2Yzc0XHU2Yzc2''@;'; put 'put ''XHU2Yzc4XHU2Yzc5XHU2YzdiXHU2Yzg1XHU2Yzg2XHU2Yzg3XHU2Yzg5XHU2Yzk0XHU2Yzk1XHU2Yzk3XHU2Yzk4XHU2YzljXHU2YzlmXHU2Y2IwXHU2Y2IyXHU2Y2I0XHU2Y2MyXHU2Y2M2XHU2Y2NkXHU2Y2NmXHU2Y2QwXHU2Y2QxXHU2Y2QyXHU2Y2Q0XHU2Y2Q2Il0sWyI4ZmM3YTEiLCJc''@;'; put 'put ''dTZjZGFcdTZjZGNcdTZjZTBcdTZjZTdcdTZjZTlcdTZjZWJcdTZjZWNcdTZjZWVcdTZjZjJcdTZjZjRcdTZkMDRcdTZkMDdcdTZkMGFcdTZkMGVcdTZkMGZcdTZkMTFcdTZkMTNcdTZkMWFcdTZkMjZcdTZkMjdcdTZkMjhcdTZjNjdcdTZkMmVcdTZkMmZcdTZkMzFcdTZkMzlcdTZkM2NcdTZk''@;'; put 'put ''M2ZcdTZkNTdcdTZkNWVcdTZkNWZcdTZkNjFcdTZkNjVcdTZkNjdcdTZkNmZcdTZkNzBcdTZkN2NcdTZkODJcdTZkODdcdTZkOTFcdTZkOTJcdTZkOTRcdTZkOTZcdTZkOTdcdTZkOThcdTZkYWFcdTZkYWNcdTZkYjRcdTZkYjdcdTZkYjlcdTZkYmRcdTZkYmZcdTZkYzRcdTZkYzhcdTZkY2Fc''@;'; put 'put ''dTZkY2VcdTZkY2ZcdTZkZDZcdTZkZGJcdTZkZGRcdTZkZGZcdTZkZTBcdTZkZTJcdTZkZTVcdTZkZTlcdTZkZWZcdTZkZjBcdTZkZjRcdTZkZjZcdTZkZmNcdTZlMDBcdTZlMDRcdTZlMWVcdTZlMjJcdTZlMjdcdTZlMzJcdTZlMzZcdTZlMzlcdTZlM2JcdTZlM2NcdTZlNDRcdTZlNDVcdTZl''@;'; put 'put ''NDhcdTZlNDlcdTZlNGJcdTZlNGZcdTZlNTFcdTZlNTJcdTZlNTNcdTZlNTRcdTZlNTdcdTZlNWNcdTZlNWRcdTZlNWUiXSxbIjhmYzhhMSIsIlx1NmU2Mlx1NmU2M1x1NmU2OFx1NmU3M1x1NmU3Ylx1NmU3ZFx1NmU4ZFx1NmU5M1x1NmU5OVx1NmVhMFx1NmVhN1x1NmVhZFx1NmVhZVx1NmVi''@;'; put 'put ''MVx1NmViM1x1NmViYlx1NmViZlx1NmVjMFx1NmVjMVx1NmVjM1x1NmVjN1x1NmVjOFx1NmVjYVx1NmVjZFx1NmVjZVx1NmVjZlx1NmVlYlx1NmVlZFx1NmVlZVx1NmVmOVx1NmVmYlx1NmVmZFx1NmYwNFx1NmYwOFx1NmYwYVx1NmYwY1x1NmYwZFx1NmYxNlx1NmYxOFx1NmYxYVx1NmYxYlx1''@;'; put 'put ''NmYyNlx1NmYyOVx1NmYyYVx1NmYyZlx1NmYzMFx1NmYzM1x1NmYzNlx1NmYzYlx1NmYzY1x1NmYyZFx1NmY0Zlx1NmY1MVx1NmY1Mlx1NmY1M1x1NmY1N1x1NmY1OVx1NmY1YVx1NmY1ZFx1NmY1ZVx1NmY2MVx1NmY2Mlx1NmY2OFx1NmY2Y1x1NmY3ZFx1NmY3ZVx1NmY4M1x1NmY4N1x1NmY4''@;'; put 'put ''OFx1NmY4Ylx1NmY4Y1x1NmY4ZFx1NmY5MFx1NmY5Mlx1NmY5M1x1NmY5NFx1NmY5Nlx1NmY5YVx1NmY5Zlx1NmZhMFx1NmZhNVx1NmZhNlx1NmZhN1x1NmZhOFx1NmZhZVx1NmZhZlx1NmZiMFx1NmZiNVx1NmZiNlx1NmZiY1x1NmZjNVx1NmZjN1x1NmZjOFx1NmZjYSJdLFsiOGZjOWExIiwi''@;'; put 'put ''XHU2ZmRhXHU2ZmRlXHU2ZmU4XHU2ZmU5XHU2ZmYwXHU2ZmY1XHU2ZmY5XHU2ZmZjXHU2ZmZkXHU3MDAwXHU3MDA1XHU3MDA2XHU3MDA3XHU3MDBkXHU3MDE3XHU3MDIwXHU3MDIzXHU3MDJmXHU3MDM0XHU3MDM3XHU3MDM5XHU3MDNjXHU3MDQzXHU3MDQ0XHU3MDQ4XHU3MDQ5XHU3MDRhXHU3''@;'; put 'put ''MDRiXHU3MDU0XHU3MDU1XHU3MDVkXHU3MDVlXHU3MDRlXHU3MDY0XHU3MDY1XHU3MDZjXHU3MDZlXHU3MDc1XHU3MDc2XHU3MDdlXHU3MDgxXHU3MDg1XHU3MDg2XHU3MDk0Iiw0LCJcdTcwOWJcdTcwYTRcdTcwYWJcdTcwYjBcdTcwYjFcdTcwYjRcdTcwYjdcdTcwY2FcdTcwZDFcdTcwZDNc''@;'; put 'put ''dTcwZDRcdTcwZDVcdTcwZDZcdTcwZDhcdTcwZGNcdTcwZTRcdTcwZmFcdTcxMDMiLDQsIlx1NzEwYlx1NzEwY1x1NzEwZlx1NzExZVx1NzEyMFx1NzEyYlx1NzEyZFx1NzEyZlx1NzEzMFx1NzEzMVx1NzEzOFx1NzE0MVx1NzE0NVx1NzE0Nlx1NzE0N1x1NzE0YVx1NzE0Ylx1NzE1MFx1NzE1''@;'; put 'put ''Mlx1NzE1N1x1NzE1YVx1NzE1Y1x1NzE1ZVx1NzE2MCJdLFsiOGZjYWExIiwiXHU3MTY4XHU3MTc5XHU3MTgwXHU3MTg1XHU3MTg3XHU3MThjXHU3MTkyXHU3MTlhXHU3MTliXHU3MWEwXHU3MWEyXHU3MWFmXHU3MWIwXHU3MWIyXHU3MWIzXHU3MWJhXHU3MWJmXHU3MWMwXHU3MWMxXHU3MWM0''@;'; put 'put ''XHU3MWNiXHU3MWNjXHU3MWQzXHU3MWQ2XHU3MWQ5XHU3MWRhXHU3MWRjXHU3MWY4XHU3MWZlXHU3MjAwXHU3MjA3XHU3MjA4XHU3MjA5XHU3MjEzXHU3MjE3XHU3MjFhXHU3MjFkXHU3MjFmXHU3MjI0XHU3MjJiXHU3MjJmXHU3MjM0XHU3MjM4XHU3MjM5XHU3MjQxXHU3MjQyXHU3MjQzXHU3''@;'; put 'put ''MjQ1XHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUzXHU3MjU1XHU3MjU2XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY4XHU3MjZiXHU3MjZlXHU3MjZmXHU3MjcxXHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdmXHU3Mjg0XHU3Mjg5XHU3MjhkXHU3MjhlXHU3MjkzXHU3Mjli''@;'; put 'put ''XHU3MmE4XHU3MmFkXHU3MmFlXHU3MmIxXHU3MmI0XHU3MmJlXHU3MmMxXHU3MmM3XHU3MmM5XHU3MmNjXHU3MmQ1XHU3MmQ2XHU3MmQ4XHU3MmRmXHU3MmU1XHU3MmYzXHU3MmY0XHU3MmZhXHU3MmZiIl0sWyI4ZmNiYTEiLCJcdTcyZmVcdTczMDJcdTczMDRcdTczMDVcdTczMDdcdTczMGJc''@;'; put 'put ''dTczMGRcdTczMTJcdTczMTNcdTczMThcdTczMTlcdTczMWVcdTczMjJcdTczMjRcdTczMjdcdTczMjhcdTczMmNcdTczMzFcdTczMzJcdTczMzVcdTczM2FcdTczM2JcdTczM2RcdTczNDNcdTczNGRcdTczNTBcdTczNTJcdTczNTZcdTczNThcdTczNWRcdTczNWVcdTczNWZcdTczNjBcdTcz''@;'; put 'put ''NjZcdTczNjdcdTczNjlcdTczNmJcdTczNmNcdTczNmVcdTczNmZcdTczNzFcdTczNzdcdTczNzlcdTczN2NcdTczODBcdTczODFcdTczODNcdTczODVcdTczODZcdTczOGVcdTczOTBcdTczOTNcdTczOTVcdTczOTdcdTczOThcdTczOWNcdTczOWVcdTczOWZcdTczYTBcdTczYTJcdTczYTVc''@;'; put 'put ''dTczYTZcdTczYWFcdTczYWJcdTczYWRcdTczYjVcdTczYjdcdTczYjlcdTczYmNcdTczYmRcdTczYmZcdTczYzVcdTczYzZcdTczYzlcdTczY2JcdTczY2NcdTczY2ZcdTczZDJcdTczZDNcdTczZDZcdTczZDlcdTczZGRcdTczZTFcdTczZTNcdTczZTZcdTczZTdcdTczZTlcdTczZjRcdTcz''@;'; put 'put ''ZjVcdTczZjdcdTczZjlcdTczZmFcdTczZmJcdTczZmQiXSxbIjhmY2NhMSIsIlx1NzNmZlx1NzQwMFx1NzQwMVx1NzQwNFx1NzQwN1x1NzQwYVx1NzQxMVx1NzQxYVx1NzQxYlx1NzQyNFx1NzQyNlx1NzQyOCIsOSwiXHU3NDM5XHU3NDQwXHU3NDQzXHU3NDQ0XHU3NDQ2XHU3NDQ3XHU3NDRi''@;'; put 'put ''XHU3NDRkXHU3NDUxXHU3NDUyXHU3NDU3XHU3NDVkXHU3NDYyXHU3NDY2XHU3NDY3XHU3NDY4XHU3NDZiXHU3NDZkXHU3NDZlXHU3NDcxXHU3NDcyXHU3NDgwXHU3NDgxXHU3NDg1XHU3NDg2XHU3NDg3XHU3NDg5XHU3NDhmXHU3NDkwXHU3NDkxXHU3NDkyXHU3NDk4XHU3NDk5XHU3NDlhXHU3''@;'; put 'put ''NDljXHU3NDlmXHU3NGEwXHU3NGExXHU3NGEzXHU3NGE2XHU3NGE4XHU3NGE5XHU3NGFhXHU3NGFiXHU3NGFlXHU3NGFmXHU3NGIxXHU3NGIyXHU3NGI1XHU3NGI5XHU3NGJiXHU3NGJmXHU3NGM4XHU3NGM5XHU3NGNjXHU3NGQwXHU3NGQzXHU3NGQ4XHU3NGRhXHU3NGRiXHU3NGRlXHU3NGRm''@;'; put 'put ''XHU3NGU0XHU3NGU4XHU3NGVhXHU3NGViXHU3NGVmXHU3NGY0XHU3NGZhXHU3NGZiXHU3NGZjXHU3NGZmXHU3NTA2Il0sWyI4ZmNkYTEiLCJcdTc1MTJcdTc1MTZcdTc1MTdcdTc1MjBcdTc1MjFcdTc1MjRcdTc1MjdcdTc1MjlcdTc1MmFcdTc1MmZcdTc1MzZcdTc1MzlcdTc1M2RcdTc1M2Vc''@;'; put 'put ''dTc1M2ZcdTc1NDBcdTc1NDNcdTc1NDdcdTc1NDhcdTc1NGVcdTc1NTBcdTc1NTJcdTc1NTdcdTc1NWVcdTc1NWZcdTc1NjFcdTc1NmZcdTc1NzFcdTc1NzkiLDUsIlx1NzU4MVx1NzU4NVx1NzU5MFx1NzU5Mlx1NzU5M1x1NzU5NVx1NzU5OVx1NzU5Y1x1NzVhMlx1NzVhNFx1NzViNFx1NzVi''@;'; put 'put ''YVx1NzViZlx1NzVjMFx1NzVjMVx1NzVjNFx1NzVjNlx1NzVjY1x1NzVjZVx1NzVjZlx1NzVkN1x1NzVkY1x1NzVkZlx1NzVlMFx1NzVlMVx1NzVlNFx1NzVlN1x1NzVlY1x1NzVlZVx1NzVlZlx1NzVmMVx1NzVmOVx1NzYwMFx1NzYwMlx1NzYwM1x1NzYwNFx1NzYwN1x1NzYwOFx1NzYwYVx1''@;'; put 'put ''NzYwY1x1NzYwZlx1NzYxMlx1NzYxM1x1NzYxNVx1NzYxNlx1NzYxOVx1NzYxYlx1NzYxY1x1NzYxZFx1NzYxZVx1NzYyM1x1NzYyNVx1NzYyNlx1NzYyOVx1NzYyZFx1NzYzMlx1NzYzM1x1NzYzNVx1NzYzOFx1NzYzOSJdLFsiOGZjZWExIiwiXHU3NjNhXHU3NjNjXHU3NjRhXHU3NjQwXHU3''@;'; put 'put ''NjQxXHU3NjQzXHU3NjQ0XHU3NjQ1XHU3NjQ5XHU3NjRiXHU3NjU1XHU3NjU5XHU3NjVmXHU3NjY0XHU3NjY1XHU3NjZkXHU3NjZlXHU3NjZmXHU3NjcxXHU3Njc0XHU3NjgxXHU3Njg1XHU3NjhjXHU3NjhkXHU3Njk1XHU3NjliXHU3NjljXHU3NjlkXHU3NjlmXHU3NmEwXHU3NmEyIiw2LCJc''@;'; put 'put ''dTc2YWFcdTc2YWRcdTc2YmRcdTc2YzFcdTc2YzVcdTc2YzlcdTc2Y2JcdTc2Y2NcdTc2Y2VcdTc2ZDRcdTc2ZDlcdTc2ZTBcdTc2ZTZcdTc2ZThcdTc2ZWNcdTc2ZjBcdTc2ZjFcdTc2ZjZcdTc2ZjlcdTc2ZmNcdTc3MDBcdTc3MDZcdTc3MGFcdTc3MGVcdTc3MTJcdTc3MTRcdTc3MTVcdTc3''@;'; put 'put ''MTdcdTc3MTlcdTc3MWFcdTc3MWNcdTc3MjJcdTc3MjhcdTc3MmRcdTc3MmVcdTc3MmZcdTc3MzRcdTc3MzVcdTc3MzZcdTc3MzlcdTc3M2RcdTc3M2VcdTc3NDJcdTc3NDVcdTc3NDZcdTc3NGFcdTc3NGRcdTc3NGVcdTc3NGZcdTc3NTJcdTc3NTZcdTc3NTdcdTc3NWNcdTc3NWVcdTc3NWZc''@;'; put 'put ''dTc3NjBcdTc3NjIiXSxbIjhmY2ZhMSIsIlx1Nzc2NFx1Nzc2N1x1Nzc2YVx1Nzc2Y1x1Nzc3MFx1Nzc3Mlx1Nzc3M1x1Nzc3NFx1Nzc3YVx1Nzc3ZFx1Nzc4MFx1Nzc4NFx1Nzc4Y1x1Nzc4ZFx1Nzc5NFx1Nzc5NVx1Nzc5Nlx1Nzc5YVx1Nzc5Zlx1NzdhMlx1NzdhN1x1NzdhYVx1NzdhZVx1''@;'; put 'put ''NzdhZlx1NzdiMVx1NzdiNVx1NzdiZVx1NzdjM1x1NzdjOVx1NzdkMVx1NzdkMlx1NzdkNVx1NzdkOVx1NzdkZVx1NzdkZlx1NzdlMFx1NzdlNFx1NzdlNlx1NzdlYVx1NzdlY1x1NzdmMFx1NzdmMVx1NzdmNFx1NzdmOFx1NzdmYlx1NzgwNVx1NzgwNlx1NzgwOVx1NzgwZFx1NzgwZVx1Nzgx''@;'; put 'put ''MVx1NzgxZFx1NzgyMVx1NzgyMlx1NzgyM1x1NzgyZFx1NzgyZVx1NzgzMFx1NzgzNVx1NzgzN1x1Nzg0M1x1Nzg0NFx1Nzg0N1x1Nzg0OFx1Nzg0Y1x1Nzg0ZVx1Nzg1Mlx1Nzg1Y1x1Nzg1ZVx1Nzg2MFx1Nzg2MVx1Nzg2M1x1Nzg2NFx1Nzg2OFx1Nzg2YVx1Nzg2ZVx1Nzg3YVx1Nzg3ZVx1''@;'; put 'put ''Nzg4YVx1Nzg4Zlx1Nzg5NFx1Nzg5OFx1NzhhMVx1Nzg5ZFx1Nzg5ZVx1Nzg5Zlx1NzhhNFx1NzhhOFx1NzhhY1x1NzhhZFx1NzhiMFx1NzhiMVx1NzhiMlx1NzhiMyJdLFsiOGZkMGExIiwiXHU3OGJiXHU3OGJkXHU3OGJmXHU3OGM3XHU3OGM4XHU3OGM5XHU3OGNjXHU3OGNlXHU3OGQyXHU3''@;'; put 'put ''OGQzXHU3OGQ1XHU3OGQ2XHU3OGU0XHU3OGRiXHU3OGRmXHU3OGUwXHU3OGUxXHU3OGU2XHU3OGVhXHU3OGYyXHU3OGYzXHU3OTAwXHU3OGY2XHU3OGY3XHU3OGZhXHU3OGZiXHU3OGZmXHU3OTA2XHU3OTBjXHU3OTEwXHU3OTFhXHU3OTFjXHU3OTFlXHU3OTFmXHU3OTIwXHU3OTI1XHU3OTI3''@;'; put 'put ''XHU3OTI5XHU3OTJkXHU3OTMxXHU3OTM0XHU3OTM1XHU3OTNiXHU3OTNkXHU3OTNmXHU3OTQ0XHU3OTQ1XHU3OTQ2XHU3OTRhXHU3OTRiXHU3OTRmXHU3OTUxXHU3OTU0XHU3OTU4XHU3OTViXHU3OTVjXHU3OTY3XHU3OTY5XHU3OTZiXHU3OTcyXHU3OTc5XHU3OTdiXHU3OTdjXHU3OTdlXHU3''@;'; put 'put ''OThiXHU3OThjXHU3OTkxXHU3OTkzXHU3OTk0XHU3OTk1XHU3OTk2XHU3OTk4XHU3OTliXHU3OTljXHU3OWExXHU3OWE4XHU3OWE5XHU3OWFiXHU3OWFmXHU3OWIxXHU3OWI0XHU3OWI4XHU3OWJiXHU3OWMyXHU3OWM0XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNmXHU3OWQ0XHU3OWQ2XHU3OWRh''@;'; put 'put ''XHU3OWRkXHU3OWRlIl0sWyI4ZmQxYTEiLCJcdTc5ZTBcdTc5ZTJcdTc5ZTVcdTc5ZWFcdTc5ZWJcdTc5ZWRcdTc5ZjFcdTc5ZjhcdTc5ZmNcdTdhMDJcdTdhMDNcdTdhMDdcdTdhMDlcdTdhMGFcdTdhMGNcdTdhMTFcdTdhMTVcdTdhMWJcdTdhMWVcdTdhMjFcdTdhMjdcdTdhMmJcdTdhMmRc''@;'; put 'put ''dTdhMmZcdTdhMzBcdTdhMzRcdTdhMzVcdTdhMzhcdTdhMzlcdTdhM2FcdTdhNDRcdTdhNDVcdTdhNDdcdTdhNDhcdTdhNGNcdTdhNTVcdTdhNTZcdTdhNTlcdTdhNWNcdTdhNWRcdTdhNWZcdTdhNjBcdTdhNjVcdTdhNjdcdTdhNmFcdTdhNmRcdTdhNzVcdTdhNzhcdTdhN2VcdTdhODBcdTdh''@;'; put 'put ''ODJcdTdhODVcdTdhODZcdTdhOGFcdTdhOGJcdTdhOTBcdTdhOTFcdTdhOTRcdTdhOWVcdTdhYTBcdTdhYTNcdTdhYWNcdTdhYjNcdTdhYjVcdTdhYjlcdTdhYmJcdTdhYmNcdTdhYzZcdTdhYzlcdTdhY2NcdTdhY2VcdTdhZDFcdTdhZGJcdTdhZThcdTdhZTlcdTdhZWJcdTdhZWNcdTdhZjFc''@;'; put 'put ''dTdhZjRcdTdhZmJcdTdhZmRcdTdhZmVcdTdiMDdcdTdiMTRcdTdiMWZcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmFcdTdiMmJcdTdiMmRcdTdiMmVcdTdiMmZcdTdiMzAiXSxbIjhmZDJhMSIsIlx1N2IzMVx1N2IzNFx1N2IzZFx1N2IzZlx1N2I0MFx1N2I0MVx1N2I0N1x1N2I0ZVx1N2I1NVx1''@;'; put 'put ''N2I2MFx1N2I2NFx1N2I2Nlx1N2I2OVx1N2I2YVx1N2I2ZFx1N2I2Zlx1N2I3Mlx1N2I3M1x1N2I3N1x1N2I4NFx1N2I4OVx1N2I4ZVx1N2I5MFx1N2I5MVx1N2I5Nlx1N2I5Ylx1N2I5ZVx1N2JhMFx1N2JhNVx1N2JhY1x1N2JhZlx1N2JiMFx1N2JiMlx1N2JiNVx1N2JiNlx1N2JiYVx1N2Ji''@;'; put 'put ''Ylx1N2JiY1x1N2JiZFx1N2JjMlx1N2JjNVx1N2JjOFx1N2JjYVx1N2JkNFx1N2JkNlx1N2JkN1x1N2JkOVx1N2JkYVx1N2JkYlx1N2JlOFx1N2JlYVx1N2JmMlx1N2JmNFx1N2JmNVx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmY1x1N2JmZVx1N2MwMVx1N2MwMlx1N2MwM1x1N2MwNFx1N2MwNlx1''@;'; put 'put ''N2MwOVx1N2MwYlx1N2MwY1x1N2MwZVx1N2MwZlx1N2MxOVx1N2MxYlx1N2MyMFx1N2MyNVx1N2MyNlx1N2MyOFx1N2MyY1x1N2MzMVx1N2MzM1x1N2MzNFx1N2MzNlx1N2MzOVx1N2MzYVx1N2M0Nlx1N2M0YVx1N2M1NVx1N2M1MVx1N2M1Mlx1N2M1M1x1N2M1OSIsNV0sWyI4ZmQzYTEiLCJc''@;'; put 'put ''dTdjNjFcdTdjNjNcdTdjNjdcdTdjNjlcdTdjNmRcdTdjNmVcdTdjNzBcdTdjNzJcdTdjNzlcdTdjN2NcdTdjN2RcdTdjODZcdTdjODdcdTdjOGZcdTdjOTRcdTdjOWVcdTdjYTBcdTdjYTZcdTdjYjBcdTdjYjZcdTdjYjdcdTdjYmFcdTdjYmJcdTdjYmNcdTdjYmZcdTdjYzRcdTdjYzdcdTdj''@;'; put 'put ''YzhcdTdjYzlcdTdjY2RcdTdjY2ZcdTdjZDNcdTdjZDRcdTdjZDVcdTdjZDdcdTdjZDlcdTdjZGFcdTdjZGRcdTdjZTZcdTdjZTlcdTdjZWJcdTdjZjVcdTdkMDNcdTdkMDdcdTdkMDhcdTdkMDlcdTdkMGZcdTdkMTFcdTdkMTJcdTdkMTNcdTdkMTZcdTdkMWRcdTdkMWVcdTdkMjNcdTdkMjZc''@;'; put 'put ''dTdkMmFcdTdkMmRcdTdkMzFcdTdkM2NcdTdkM2RcdTdkM2VcdTdkNDBcdTdkNDFcdTdkNDdcdTdkNDhcdTdkNGRcdTdkNTFcdTdkNTNcdTdkNTdcdTdkNTlcdTdkNWFcdTdkNWNcdTdkNWRcdTdkNjVcdTdkNjdcdTdkNmFcdTdkNzBcdTdkNzhcdTdkN2FcdTdkN2JcdTdkN2ZcdTdkODFcdTdk''@;'; put 'put ''ODJcdTdkODNcdTdkODVcdTdkODZcdTdkODhcdTdkOGJcdTdkOGNcdTdkOGRcdTdkOTFcdTdkOTZcdTdkOTdcdTdkOWQiXSxbIjhmZDRhMSIsIlx1N2Q5ZVx1N2RhNlx1N2RhN1x1N2RhYVx1N2RiM1x1N2RiNlx1N2RiN1x1N2RiOVx1N2RjMiIsNCwiXHU3ZGNjXHU3ZGNkXHU3ZGNlXHU3ZGQ3''@;'; put 'put ''XHU3ZGQ5XHU3ZTAwXHU3ZGUyXHU3ZGU1XHU3ZGU2XHU3ZGVhXHU3ZGViXHU3ZGVkXHU3ZGYxXHU3ZGY1XHU3ZGY2XHU3ZGY5XHU3ZGZhXHU3ZTA4XHU3ZTEwXHU3ZTExXHU3ZTE1XHU3ZTE3XHU3ZTFjXHU3ZTFkXHU3ZTIwXHU3ZTI3XHU3ZTI4XHU3ZTJjXHU3ZTJkXHU3ZTJmXHU3ZTMzXHU3''@;'; put 'put ''ZTM2XHU3ZTNmXHU3ZTQ0XHU3ZTQ1XHU3ZTQ3XHU3ZTRlXHU3ZTUwXHU3ZTUyXHU3ZTU4XHU3ZTVmXHU3ZTYxXHU3ZTYyXHU3ZTY1XHU3ZTZiXHU3ZTZlXHU3ZTZmXHU3ZTczXHU3ZTc4XHU3ZTdlXHU3ZTgxXHU3ZTg2XHU3ZTg3XHU3ZThhXHU3ZThkXHU3ZTkxXHU3ZTk1XHU3ZTk4XHU3ZTlh''@;'; put 'put ''XHU3ZTlkXHU3ZTllXHU3ZjNjXHU3ZjNiXHU3ZjNkXHU3ZjNlXHU3ZjNmXHU3ZjQzXHU3ZjQ0XHU3ZjQ3XHU3ZjRmXHU3ZjUyXHU3ZjUzXHU3ZjViXHU3ZjVjXHU3ZjVkXHU3ZjYxXHU3ZjYzXHU3ZjY0XHU3ZjY1XHU3ZjY2XHU3ZjZkIl0sWyI4ZmQ1YTEiLCJcdTdmNzFcdTdmN2RcdTdmN2Vc''@;'; put 'put ''dTdmN2ZcdTdmODBcdTdmOGJcdTdmOGRcdTdmOGZcdTdmOTBcdTdmOTFcdTdmOTZcdTdmOTdcdTdmOWNcdTdmYTFcdTdmYTJcdTdmYTZcdTdmYWFcdTdmYWRcdTdmYjRcdTdmYmNcdTdmYmZcdTdmYzBcdTdmYzNcdTdmYzhcdTdmY2VcdTdmY2ZcdTdmZGJcdTdmZGZcdTdmZTNcdTdmZTVcdTdm''@;'; put 'put ''ZThcdTdmZWNcdTdmZWVcdTdmZWZcdTdmZjJcdTdmZmFcdTdmZmRcdTdmZmVcdTdmZmZcdTgwMDdcdTgwMDhcdTgwMGFcdTgwMGRcdTgwMGVcdTgwMGZcdTgwMTFcdTgwMTNcdTgwMTRcdTgwMTZcdTgwMWRcdTgwMWVcdTgwMWZcdTgwMjBcdTgwMjRcdTgwMjZcdTgwMmNcdTgwMmVcdTgwMzBc''@;'; put 'put ''dTgwMzRcdTgwMzVcdTgwMzdcdTgwMzlcdTgwM2FcdTgwM2NcdTgwM2VcdTgwNDBcdTgwNDRcdTgwNjBcdTgwNjRcdTgwNjZcdTgwNmRcdTgwNzFcdTgwNzVcdTgwODFcdTgwODhcdTgwOGVcdTgwOWNcdTgwOWVcdTgwYTZcdTgwYTdcdTgwYWJcdTgwYjhcdTgwYjlcdTgwYzhcdTgwY2RcdTgw''@;'; put 'put ''Y2ZcdTgwZDJcdTgwZDRcdTgwZDVcdTgwZDdcdTgwZDhcdTgwZTBcdTgwZWRcdTgwZWUiXSxbIjhmZDZhMSIsIlx1ODBmMFx1ODBmMlx1ODBmM1x1ODBmNlx1ODBmOVx1ODBmYVx1ODBmZVx1ODEwM1x1ODEwYlx1ODExNlx1ODExN1x1ODExOFx1ODExY1x1ODExZVx1ODEyMFx1ODEyNFx1ODEy''@;'; put 'put ''N1x1ODEyY1x1ODEzMFx1ODEzNVx1ODEzYVx1ODEzY1x1ODE0NVx1ODE0N1x1ODE0YVx1ODE0Y1x1ODE1Mlx1ODE1N1x1ODE2MFx1ODE2MVx1ODE2N1x1ODE2OFx1ODE2OVx1ODE2ZFx1ODE2Zlx1ODE3N1x1ODE4MVx1ODE5MFx1ODE4NFx1ODE4NVx1ODE4Nlx1ODE4Ylx1ODE4ZVx1ODE5Nlx1''@;'; put 'put ''ODE5OFx1ODE5Ylx1ODE5ZVx1ODFhMlx1ODFhZVx1ODFiMlx1ODFiNFx1ODFiYlx1ODFjYlx1ODFjM1x1ODFjNVx1ODFjYVx1ODFjZVx1ODFjZlx1ODFkNVx1ODFkN1x1ODFkYlx1ODFkZFx1ODFkZVx1ODFlMVx1ODFlNFx1ODFlYlx1ODFlY1x1ODFmMFx1ODFmMVx1ODFmMlx1ODFmNVx1ODFm''@;'; put 'put ''Nlx1ODFmOFx1ODFmOVx1ODFmZFx1ODFmZlx1ODIwMFx1ODIwM1x1ODIwZlx1ODIxM1x1ODIxNFx1ODIxOVx1ODIxYVx1ODIxZFx1ODIyMVx1ODIyMlx1ODIyOFx1ODIzMlx1ODIzNFx1ODIzYVx1ODI0M1x1ODI0NFx1ODI0NVx1ODI0NiJdLFsiOGZkN2ExIiwiXHU4MjRiXHU4MjRlXHU4MjRm''@;'; put 'put ''XHU4MjUxXHU4MjU2XHU4MjVjXHU4MjYwXHU4MjYzXHU4MjY3XHU4MjZkXHU4Mjc0XHU4MjdiXHU4MjdkXHU4MjdmXHU4MjgwXHU4MjgxXHU4MjgzXHU4Mjg0XHU4Mjg3XHU4Mjg5XHU4MjhhXHU4MjhlXHU4MjkxXHU4Mjk0XHU4Mjk2XHU4Mjk4XHU4MjlhXHU4MjliXHU4MmEwXHU4MmExXHU4''@;'; put 'put ''MmEzXHU4MmE0XHU4MmE3XHU4MmE4XHU4MmE5XHU4MmFhXHU4MmFlXHU4MmIwXHU4MmIyXHU4MmI0XHU4MmI3XHU4MmJhXHU4MmJjXHU4MmJlXHU4MmJmXHU4MmM2XHU4MmQwXHU4MmQ1XHU4MmRhXHU4MmUwXHU4MmUyXHU4MmU0XHU4MmU4XHU4MmVhXHU4MmVkXHU4MmVmXHU4MmY2XHU4MmY3''@;'; put 'put ''XHU4MmZkXHU4MmZlXHU4MzAwXHU4MzAxXHU4MzA3XHU4MzA4XHU4MzBhXHU4MzBiXHU4MzU0XHU4MzFiXHU4MzFkXHU4MzFlXHU4MzFmXHU4MzIxXHU4MzIyXHU4MzJjXHU4MzJkXHU4MzJlXHU4MzMwXHU4MzMzXHU4MzM3XHU4MzNhXHU4MzNjXHU4MzNkXHU4MzQyXHU4MzQzXHU4MzQ0XHU4''@;'; put 'put ''MzQ3XHU4MzRkXHU4MzRlXHU4MzUxXHU4MzU1XHU4MzU2XHU4MzU3XHU4MzcwXHU4Mzc4Il0sWyI4ZmQ4YTEiLCJcdTgzN2RcdTgzN2ZcdTgzODBcdTgzODJcdTgzODRcdTgzODZcdTgzOGRcdTgzOTJcdTgzOTRcdTgzOTVcdTgzOThcdTgzOTlcdTgzOWJcdTgzOWNcdTgzOWRcdTgzYTZcdTgz''@;'; put 'put ''YTdcdTgzYTlcdTgzYWNcdTgzYmVcdTgzYmZcdTgzYzBcdTgzYzdcdTgzYzlcdTgzY2ZcdTgzZDBcdTgzZDFcdTgzZDRcdTgzZGRcdTgzNTNcdTgzZThcdTgzZWFcdTgzZjZcdTgzZjhcdTgzZjlcdTgzZmNcdTg0MDFcdTg0MDZcdTg0MGFcdTg0MGZcdTg0MTFcdTg0MTVcdTg0MTlcdTgzYWRc''@;'; put 'put ''dTg0MmZcdTg0MzlcdTg0NDVcdTg0NDdcdTg0NDhcdTg0NGFcdTg0NGRcdTg0NGZcdTg0NTFcdTg0NTJcdTg0NTZcdTg0NThcdTg0NTlcdTg0NWFcdTg0NWNcdTg0NjBcdTg0NjRcdTg0NjVcdTg0NjdcdTg0NmFcdTg0NzBcdTg0NzNcdTg0NzRcdTg0NzZcdTg0NzhcdTg0N2NcdTg0N2RcdTg0''@;'; put 'put ''ODFcdTg0ODVcdTg0OTJcdTg0OTNcdTg0OTVcdTg0OWVcdTg0YTZcdTg0YThcdTg0YTlcdTg0YWFcdTg0YWZcdTg0YjFcdTg0YjRcdTg0YmFcdTg0YmRcdTg0YmVcdTg0YzBcdTg0YzJcdTg0YzdcdTg0YzhcdTg0Y2NcdTg0Y2ZcdTg0ZDMiXSxbIjhmZDlhMSIsIlx1ODRkY1x1ODRlN1x1ODRl''@;'; put 'put ''YVx1ODRlZlx1ODRmMFx1ODRmMVx1ODRmMlx1ODRmN1x1ODUzMlx1ODRmYVx1ODRmYlx1ODRmZFx1ODUwMlx1ODUwM1x1ODUwN1x1ODUwY1x1ODUwZVx1ODUxMFx1ODUxY1x1ODUxZVx1ODUyMlx1ODUyM1x1ODUyNFx1ODUyNVx1ODUyN1x1ODUyYVx1ODUyYlx1ODUyZlx1ODUzM1x1ODUzNFx1''@;'; put 'put ''ODUzNlx1ODUzZlx1ODU0Nlx1ODU0ZiIsNCwiXHU4NTU2XHU4NTU5XHU4NTVjIiw2LCJcdTg1NjRcdTg1NmJcdTg1NmZcdTg1NzlcdTg1N2FcdTg1N2JcdTg1N2RcdTg1N2ZcdTg1ODFcdTg1ODVcdTg1ODZcdTg1ODlcdTg1OGJcdTg1OGNcdTg1OGZcdTg1OTNcdTg1OThcdTg1OWRcdTg1OWZc''@;'; put 'put ''dTg1YTBcdTg1YTJcdTg1YTVcdTg1YTdcdTg1YjRcdTg1YjZcdTg1YjdcdTg1YjhcdTg1YmNcdTg1YmRcdTg1YmVcdTg1YmZcdTg1YzJcdTg1YzdcdTg1Y2FcdTg1Y2JcdTg1Y2VcdTg1YWRcdTg1ZDhcdTg1ZGFcdTg1ZGZcdTg1ZTBcdTg1ZTZcdTg1ZThcdTg1ZWRcdTg1ZjNcdTg1ZjZcdTg1''@;'; put 'put ''ZmMiXSxbIjhmZGFhMSIsIlx1ODVmZlx1ODYwMFx1ODYwNFx1ODYwNVx1ODYwZFx1ODYwZVx1ODYxMFx1ODYxMVx1ODYxMlx1ODYxOFx1ODYxOVx1ODYxYlx1ODYxZVx1ODYyMVx1ODYyN1x1ODYyOVx1ODYzNlx1ODYzOFx1ODYzYVx1ODYzY1x1ODYzZFx1ODY0MFx1ODY0Mlx1ODY0Nlx1ODY1''@;'; put 'put ''Mlx1ODY1M1x1ODY1Nlx1ODY1N1x1ODY1OFx1ODY1OVx1ODY1ZFx1ODY2MCIsNCwiXHU4NjY5XHU4NjZjXHU4NjZmXHU4Njc1XHU4Njc2XHU4Njc3XHU4NjdhXHU4NjhkXHU4NjkxXHU4Njk2XHU4Njk4XHU4NjlhXHU4NjljXHU4NmExXHU4NmE2XHU4NmE3XHU4NmE4XHU4NmFkXHU4NmIxXHU4''@;'; put 'put ''NmIzXHU4NmI0XHU4NmI1XHU4NmI3XHU4NmI4XHU4NmI5XHU4NmJmXHU4NmMwXHU4NmMxXHU4NmMzXHU4NmM1XHU4NmQxXHU4NmQyXHU4NmQ1XHU4NmQ3XHU4NmRhXHU4NmRjXHU4NmUwXHU4NmUzXHU4NmU1XHU4NmU3XHU4Njg4XHU4NmZhXHU4NmZjXHU4NmZkXHU4NzA0XHU4NzA1XHU4NzA3''@;'; put 'put ''XHU4NzBiXHU4NzBlXHU4NzBmXHU4NzEwXHU4NzEzXHU4NzE0XHU4NzE5XHU4NzFlXHU4NzFmXHU4NzIxXHU4NzIzIl0sWyI4ZmRiYTEiLCJcdTg3MjhcdTg3MmVcdTg3MmZcdTg3MzFcdTg3MzJcdTg3MzlcdTg3M2FcdTg3M2NcdTg3M2RcdTg3M2VcdTg3NDBcdTg3NDNcdTg3NDVcdTg3NGRc''@;'; put 'put ''dTg3NThcdTg3NWRcdTg3NjFcdTg3NjRcdTg3NjVcdTg3NmZcdTg3NzFcdTg3NzJcdTg3N2JcdTg3ODMiLDYsIlx1ODc4Ylx1ODc4Y1x1ODc5MFx1ODc5M1x1ODc5NVx1ODc5N1x1ODc5OFx1ODc5OVx1ODc5ZVx1ODdhMFx1ODdhM1x1ODdhN1x1ODdhY1x1ODdhZFx1ODdhZVx1ODdiMVx1ODdi''@;'; put 'put ''NVx1ODdiZVx1ODdiZlx1ODdjMVx1ODdjOFx1ODdjOVx1ODdjYVx1ODdjZVx1ODdkNVx1ODdkNlx1ODdkOVx1ODdkYVx1ODdkY1x1ODdkZlx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlYVx1ODdlYlx1ODdlZFx1ODdmMVx1ODdmM1x1ODdmOFx1ODdmYVx1ODdmZlx1ODgwMVx1ODgwM1x1ODgwNlx1''@;'; put 'put ''ODgwOVx1ODgwYVx1ODgwYlx1ODgxMFx1ODgxOVx1ODgxMlx1ODgxM1x1ODgxNFx1ODgxOFx1ODgxYVx1ODgxYlx1ODgxY1x1ODgxZVx1ODgxZlx1ODgyOFx1ODgyZFx1ODgyZVx1ODgzMFx1ODgzMlx1ODgzNSJdLFsiOGZkY2ExIiwiXHU4ODNhXHU4ODNjXHU4ODQxXHU4ODQzXHU4ODQ1XHU4''@;'; put 'put ''ODQ4XHU4ODQ5XHU4ODRhXHU4ODRiXHU4ODRlXHU4ODUxXHU4ODU1XHU4ODU2XHU4ODU4XHU4ODVhXHU4ODVjXHU4ODVmXHU4ODYwXHU4ODY0XHU4ODY5XHU4ODcxXHU4ODc5XHU4ODdiXHU4ODgwXHU4ODk4XHU4ODlhXHU4ODliXHU4ODljXHU4ODlmXHU4OGEwXHU4OGE4XHU4OGFhXHU4OGJh''@;'; put 'put ''XHU4OGJkXHU4OGJlXHU4OGMwXHU4OGNhIiw0LCJcdTg4ZDFcdTg4ZDJcdTg4ZDNcdTg4ZGJcdTg4ZGVcdTg4ZTdcdTg4ZWZcdTg4ZjBcdTg4ZjFcdTg4ZjVcdTg4ZjdcdTg5MDFcdTg5MDZcdTg5MGRcdTg5MGVcdTg5MGZcdTg5MTVcdTg5MTZcdTg5MThcdTg5MTlcdTg5MWFcdTg5MWNcdTg5''@;'; put 'put ''MjBcdTg5MjZcdTg5MjdcdTg5MjhcdTg5MzBcdTg5MzFcdTg5MzJcdTg5MzVcdTg5MzlcdTg5M2FcdTg5M2VcdTg5NDBcdTg5NDJcdTg5NDVcdTg5NDZcdTg5NDlcdTg5NGZcdTg5NTJcdTg5NTdcdTg5NWFcdTg5NWJcdTg5NWNcdTg5NjFcdTg5NjJcdTg5NjNcdTg5NmJcdTg5NmVcdTg5NzBc''@;'; put 'put ''dTg5NzNcdTg5NzVcdTg5N2EiXSxbIjhmZGRhMSIsIlx1ODk3Ylx1ODk3Y1x1ODk3ZFx1ODk4OVx1ODk4ZFx1ODk5MFx1ODk5NFx1ODk5NVx1ODk5Ylx1ODk5Y1x1ODk5Zlx1ODlhMFx1ODlhNVx1ODliMFx1ODliNFx1ODliNVx1ODliNlx1ODliN1x1ODliY1x1ODlkNCIsNCwiXHU4OWU1XHU4''@;'; put 'put ''OWU5XHU4OWViXHU4OWVkXHU4OWYxXHU4OWYzXHU4OWY2XHU4OWY5XHU4OWZkXHU4OWZmXHU4YTA0XHU4YTA1XHU4YTA3XHU4YTBmXHU4YTExXHU4YTEyXHU4YTE0XHU4YTE1XHU4YTFlXHU4YTIwXHU4YTIyXHU4YTI0XHU4YTI2XHU4YTJiXHU4YTJjXHU4YTJmXHU4YTM1XHU4YTM3XHU4YTNk''@;'; put 'put ''XHU4YTNlXHU4YTQwXHU4YTQzXHU4YTQ1XHU4YTQ3XHU4YTQ5XHU4YTRkXHU4YTRlXHU4YTUzXHU4YTU2XHU4YTU3XHU4YTU4XHU4YTVjXHU4YTVkXHU4YTYxXHU4YTY1XHU4YTY3XHU4YTc1XHU4YTc2XHU4YTc3XHU4YTc5XHU4YTdhXHU4YTdiXHU4YTdlXHU4YTdmXHU4YTgwXHU4YTgzXHU4''@;'; put 'put ''YTg2XHU4YThiXHU4YThmXHU4YTkwXHU4YTkyXHU4YTk2XHU4YTk3XHU4YTk5XHU4YTlmXHU4YWE3XHU4YWE5XHU4YWFlXHU4YWFmXHU4YWIzIl0sWyI4ZmRlYTEiLCJcdThhYjZcdThhYjdcdThhYmJcdThhYmVcdThhYzNcdThhYzZcdThhYzhcdThhYzlcdThhY2FcdThhZDFcdThhZDNcdThh''@;'; put 'put ''ZDRcdThhZDVcdThhZDdcdThhZGRcdThhZGZcdThhZWNcdThhZjBcdThhZjRcdThhZjVcdThhZjZcdThhZmNcdThhZmZcdThiMDVcdThiMDZcdThiMGJcdThiMTFcdThiMWNcdThiMWVcdThiMWZcdThiMGFcdThiMmRcdThiMzBcdThiMzdcdThiM2NcdThiNDIiLDQsIlx1OGI0OFx1OGI1Mlx1''@;'; put 'put ''OGI1M1x1OGI1NFx1OGI1OVx1OGI0ZFx1OGI1ZVx1OGI2M1x1OGI2ZFx1OGI3Nlx1OGI3OFx1OGI3OVx1OGI3Y1x1OGI3ZVx1OGI4MVx1OGI4NFx1OGI4NVx1OGI4Ylx1OGI4ZFx1OGI4Zlx1OGI5NFx1OGI5NVx1OGI5Y1x1OGI5ZVx1OGI5Zlx1OGMzOFx1OGMzOVx1OGMzZFx1OGMzZVx1OGM0''@;'; put 'put ''NVx1OGM0N1x1OGM0OVx1OGM0Ylx1OGM0Zlx1OGM1MVx1OGM1M1x1OGM1NFx1OGM1N1x1OGM1OFx1OGM1Ylx1OGM1ZFx1OGM1OVx1OGM2M1x1OGM2NFx1OGM2Nlx1OGM2OFx1OGM2OVx1OGM2ZFx1OGM3M1x1OGM3NVx1OGM3Nlx1OGM3Ylx1OGM3ZVx1OGM4NiJdLFsiOGZkZmExIiwiXHU4Yzg3''@;'; put 'put ''XHU4YzhiXHU4YzkwXHU4YzkyXHU4YzkzXHU4Yzk5XHU4YzliXHU4YzljXHU4Y2E0XHU4Y2I5XHU4Y2JhXHU4Y2M1XHU4Y2M2XHU4Y2M5XHU4Y2NiXHU4Y2NmXHU4Y2Q2XHU4Y2Q1XHU4Y2Q5XHU4Y2RkXHU4Y2UxXHU4Y2U4XHU4Y2VjXHU4Y2VmXHU4Y2YwXHU4Y2YyXHU4Y2Y1XHU4Y2Y3XHU4''@;'; put 'put ''Y2Y4XHU4Y2ZlXHU4Y2ZmXHU4ZDAxXHU4ZDAzXHU4ZDA5XHU4ZDEyXHU4ZDE3XHU4ZDFiXHU4ZDY1XHU4ZDY5XHU4ZDZjXHU4ZDZlXHU4ZDdmXHU4ZDgyXHU4ZDg0XHU4ZDg4XHU4ZDhkXHU4ZDkwXHU4ZDkxXHU4ZDk1XHU4ZDllXHU4ZDlmXHU4ZGEwXHU4ZGE2XHU4ZGFiXHU4ZGFjXHU4ZGFm''@;'; put 'put ''XHU4ZGIyXHU4ZGI1XHU4ZGI3XHU4ZGI5XHU4ZGJiXHU4ZGMwXHU4ZGM1XHU4ZGM2XHU4ZGM3XHU4ZGM4XHU4ZGNhXHU4ZGNlXHU4ZGQxXHU4ZGQ0XHU4ZGQ1XHU4ZGQ3XHU4ZGQ5XHU4ZGU0XHU4ZGU1XHU4ZGU3XHU4ZGVjXHU4ZGYwXHU4ZGJjXHU4ZGYxXHU4ZGYyXHU4ZGY0XHU4ZGZkXHU4''@;'; put 'put ''ZTAxXHU4ZTA0XHU4ZTA1XHU4ZTA2XHU4ZTBiXHU4ZTExXHU4ZTE0XHU4ZTE2XHU4ZTIwXHU4ZTIxXHU4ZTIyIl0sWyI4ZmUwYTEiLCJcdThlMjNcdThlMjZcdThlMjdcdThlMzFcdThlMzNcdThlMzZcdThlMzdcdThlMzhcdThlMzlcdThlM2RcdThlNDBcdThlNDFcdThlNGJcdThlNGRcdThl''@;'; put 'put ''NGVcdThlNGZcdThlNTRcdThlNWJcdThlNWNcdThlNWRcdThlNWVcdThlNjFcdThlNjJcdThlNjlcdThlNmNcdThlNmRcdThlNmZcdThlNzBcdThlNzFcdThlNzlcdThlN2FcdThlN2JcdThlODJcdThlODNcdThlODlcdThlOTBcdThlOTJcdThlOTVcdThlOWFcdThlOWJcdThlOWRcdThlOWVc''@;'; put 'put ''dThlYTJcdThlYTdcdThlYTlcdThlYWRcdThlYWVcdThlYjNcdThlYjVcdThlYmFcdThlYmJcdThlYzBcdThlYzFcdThlYzNcdThlYzRcdThlYzdcdThlY2ZcdThlZDFcdThlZDRcdThlZGNcdThlZThcdThlZWVcdThlZjBcdThlZjFcdThlZjdcdThlZjlcdThlZmFcdThlZWRcdThmMDBcdThm''@;'; put 'put ''MDJcdThmMDdcdThmMDhcdThmMGZcdThmMTBcdThmMTZcdThmMTdcdThmMThcdThmMWVcdThmMjBcdThmMjFcdThmMjNcdThmMjVcdThmMjdcdThmMjhcdThmMmNcdThmMmRcdThmMmVcdThmMzRcdThmMzVcdThmMzZcdThmMzdcdThmM2FcdThmNDBcdThmNDEiXSxbIjhmZTFhMSIsIlx1OGY0''@;'; put 'put ''M1x1OGY0N1x1OGY0Zlx1OGY1MSIsNCwiXHU4ZjU4XHU4ZjVkXHU4ZjVlXHU4ZjY1XHU4ZjlkXHU4ZmEwXHU4ZmExXHU4ZmE0XHU4ZmE1XHU4ZmE2XHU4ZmI1XHU4ZmI2XHU4ZmI4XHU4ZmJlXHU4ZmMwXHU4ZmMxXHU4ZmM2XHU4ZmNhXHU4ZmNiXHU4ZmNkXHU4ZmQwXHU4ZmQyXHU4ZmQzXHU4''@;'; put 'put ''ZmQ1XHU4ZmUwXHU4ZmUzXHU4ZmU0XHU4ZmU4XHU4ZmVlXHU4ZmYxXHU4ZmY1XHU4ZmY2XHU4ZmZiXHU4ZmZlXHU5MDAyXHU5MDA0XHU5MDA4XHU5MDBjXHU5MDE4XHU5MDFiXHU5MDI4XHU5MDI5XHU5MDJmXHU5MDJhXHU5MDJjXHU5MDJkXHU5MDMzXHU5MDM0XHU5MDM3XHU5MDNmXHU5MDQz''@;'; put 'put ''XHU5MDQ0XHU5MDRjXHU5MDViXHU5MDVkXHU5MDYyXHU5MDY2XHU5MDY3XHU5MDZjXHU5MDcwXHU5MDc0XHU5MDc5XHU5MDg1XHU5MDg4XHU5MDhiXHU5MDhjXHU5MDhlXHU5MDkwXHU5MDk1XHU5MDk3XHU5MDk4XHU5MDk5XHU5MDliXHU5MGEwXHU5MGExXHU5MGEyXHU5MGE1XHU5MGIwXHU5''@;'; put 'put ''MGIyXHU5MGIzXHU5MGI0XHU5MGI2XHU5MGJkXHU5MGNjXHU5MGJlXHU5MGMzIl0sWyI4ZmUyYTEiLCJcdTkwYzRcdTkwYzVcdTkwYzdcdTkwYzhcdTkwZDVcdTkwZDdcdTkwZDhcdTkwZDlcdTkwZGNcdTkwZGRcdTkwZGZcdTkwZTVcdTkwZDJcdTkwZjZcdTkwZWJcdTkwZWZcdTkwZjBcdTkw''@;'; put 'put ''ZjRcdTkwZmVcdTkwZmZcdTkxMDBcdTkxMDRcdTkxMDVcdTkxMDZcdTkxMDhcdTkxMGRcdTkxMTBcdTkxMTRcdTkxMTZcdTkxMTdcdTkxMThcdTkxMWFcdTkxMWNcdTkxMWVcdTkxMjBcdTkxMjVcdTkxMjJcdTkxMjNcdTkxMjdcdTkxMjlcdTkxMmVcdTkxMmZcdTkxMzFcdTkxMzRcdTkxMzZc''@;'; put 'put ''dTkxMzdcdTkxMzlcdTkxM2FcdTkxM2NcdTkxM2RcdTkxNDNcdTkxNDdcdTkxNDhcdTkxNGZcdTkxNTNcdTkxNTdcdTkxNTlcdTkxNWFcdTkxNWJcdTkxNjFcdTkxNjRcdTkxNjdcdTkxNmRcdTkxNzRcdTkxNzlcdTkxN2FcdTkxN2JcdTkxODFcdTkxODNcdTkxODVcdTkxODZcdTkxOGFcdTkx''@;'; put 'put ''OGVcdTkxOTFcdTkxOTNcdTkxOTRcdTkxOTVcdTkxOThcdTkxOWVcdTkxYTFcdTkxYTZcdTkxYThcdTkxYWNcdTkxYWRcdTkxYWVcdTkxYjBcdTkxYjFcdTkxYjJcdTkxYjNcdTkxYjZcdTkxYmJcdTkxYmNcdTkxYmRcdTkxYmYiXSxbIjhmZTNhMSIsIlx1OTFjMlx1OTFjM1x1OTFjNVx1OTFk''@;'; put 'put ''M1x1OTFkNFx1OTFkN1x1OTFkOVx1OTFkYVx1OTFkZVx1OTFlNFx1OTFlNVx1OTFlOVx1OTFlYVx1OTFlYyIsNSwiXHU5MWY3XHU5MWY5XHU5MWZiXHU5MWZkXHU5MjAwXHU5MjAxXHU5MjA0XHU5MjA1XHU5MjA2XHU5MjA3XHU5MjA5XHU5MjBhXHU5MjBjXHU5MjEwXHU5MjEyXHU5MjEzXHU5''@;'; put 'put ''MjE2XHU5MjE4XHU5MjFjXHU5MjFkXHU5MjIzXHU5MjI0XHU5MjI1XHU5MjI2XHU5MjI4XHU5MjJlXHU5MjJmXHU5MjMwXHU5MjMzXHU5MjM1XHU5MjM2XHU5MjM4XHU5MjM5XHU5MjNhXHU5MjNjXHU5MjNlXHU5MjQwXHU5MjQyXHU5MjQzXHU5MjQ2XHU5MjQ3XHU5MjRhXHU5MjRkXHU5MjRl''@;'; put 'put ''XHU5MjRmXHU5MjUxXHU5MjU4XHU5MjU5XHU5MjVjXHU5MjVkXHU5MjYwXHU5MjYxXHU5MjY1XHU5MjY3XHU5MjY4XHU5MjY5XHU5MjZlXHU5MjZmXHU5MjcwXHU5Mjc1Iiw0LCJcdTkyN2JcdTkyN2NcdTkyN2RcdTkyN2ZcdTkyODhcdTkyODlcdTkyOGFcdTkyOGRcdTkyOGVcdTkyOTJcdTky''@;'; put 'put ''OTciXSxbIjhmZTRhMSIsIlx1OTI5OVx1OTI5Zlx1OTJhMFx1OTJhNFx1OTJhNVx1OTJhN1x1OTJhOFx1OTJhYlx1OTJhZlx1OTJiMlx1OTJiNlx1OTJiOFx1OTJiYVx1OTJiYlx1OTJiY1x1OTJiZFx1OTJiZiIsNCwiXHU5MmM1XHU5MmM2XHU5MmM3XHU5MmM4XHU5MmNiXHU5MmNjXHU5MmNk''@;'; put 'put ''XHU5MmNlXHU5MmQwXHU5MmQzXHU5MmQ1XHU5MmQ3XHU5MmQ4XHU5MmQ5XHU5MmRjXHU5MmRkXHU5MmRmXHU5MmUwXHU5MmUxXHU5MmUzXHU5MmU1XHU5MmU3XHU5MmU4XHU5MmVjXHU5MmVlXHU5MmYwXHU5MmY5XHU5MmZiXHU5MmZmXHU5MzAwXHU5MzAyXHU5MzA4XHU5MzBkXHU5MzExXHU5''@;'; put 'put ''MzE0XHU5MzE1XHU5MzFjXHU5MzFkXHU5MzFlXHU5MzFmXHU5MzIxXHU5MzI0XHU5MzI1XHU5MzI3XHU5MzI5XHU5MzJhXHU5MzMzXHU5MzM0XHU5MzM2XHU5MzM3XHU5MzQ3XHU5MzQ4XHU5MzQ5XHU5MzUwXHU5MzUxXHU5MzUyXHU5MzU1XHU5MzU3XHU5MzU4XHU5MzVhXHU5MzVlXHU5MzY0''@;'; put 'put ''XHU5MzY1XHU5MzY3XHU5MzY5XHU5MzZhXHU5MzZkXHU5MzZmXHU5MzcwXHU5MzcxXHU5MzczXHU5Mzc0XHU5Mzc2Il0sWyI4ZmU1YTEiLCJcdTkzN2FcdTkzN2RcdTkzN2ZcdTkzODBcdTkzODFcdTkzODJcdTkzODhcdTkzOGFcdTkzOGJcdTkzOGRcdTkzOGZcdTkzOTJcdTkzOTVcdTkzOThc''@;'; put 'put ''dTkzOWJcdTkzOWVcdTkzYTFcdTkzYTNcdTkzYTRcdTkzYTZcdTkzYThcdTkzYWJcdTkzYjRcdTkzYjVcdTkzYjZcdTkzYmFcdTkzYTlcdTkzYzFcdTkzYzRcdTkzYzVcdTkzYzZcdTkzYzdcdTkzYzkiLDQsIlx1OTNkM1x1OTNkOVx1OTNkY1x1OTNkZVx1OTNkZlx1OTNlMlx1OTNlNlx1OTNl''@;'; put 'put ''N1x1OTNmOVx1OTNmN1x1OTNmOFx1OTNmYVx1OTNmYlx1OTNmZFx1OTQwMVx1OTQwMlx1OTQwNFx1OTQwOFx1OTQwOVx1OTQwZFx1OTQwZVx1OTQwZlx1OTQxNVx1OTQxNlx1OTQxN1x1OTQxZlx1OTQyZVx1OTQyZlx1OTQzMVx1OTQzMlx1OTQzM1x1OTQzNFx1OTQzYlx1OTQzZlx1OTQzZFx1''@;'; put 'put ''OTQ0M1x1OTQ0NVx1OTQ0OFx1OTQ0YVx1OTQ0Y1x1OTQ1NVx1OTQ1OVx1OTQ1Y1x1OTQ1Zlx1OTQ2MVx1OTQ2M1x1OTQ2OFx1OTQ2Ylx1OTQ2ZFx1OTQ2ZVx1OTQ2Zlx1OTQ3MVx1OTQ3Mlx1OTQ4NFx1OTQ4M1x1OTU3OFx1OTU3OSJdLFsiOGZlNmExIiwiXHU5NTdlXHU5NTg0XHU5NTg4XHU5''@;'; put 'put ''NThjXHU5NThkXHU5NThlXHU5NTlkXHU5NTllXHU5NTlmXHU5NWExXHU5NWE2XHU5NWE5XHU5NWFiXHU5NWFjXHU5NWI0XHU5NWI2XHU5NWJhXHU5NWJkXHU5NWJmXHU5NWM2XHU5NWM4XHU5NWM5XHU5NWNiXHU5NWQwXHU5NWQxXHU5NWQyXHU5NWQzXHU5NWQ5XHU5NWRhXHU5NWRkXHU5NWRl''@;'; put 'put ''XHU5NWRmXHU5NWUwXHU5NWU0XHU5NWU2XHU5NjFkXHU5NjFlXHU5NjIyXHU5NjI0XHU5NjI1XHU5NjI2XHU5NjJjXHU5NjMxXHU5NjMzXHU5NjM3XHU5NjM4XHU5NjM5XHU5NjNhXHU5NjNjXHU5NjNkXHU5NjQxXHU5NjUyXHU5NjU0XHU5NjU2XHU5NjU3XHU5NjU4XHU5NjYxXHU5NjZlXHU5''@;'; put 'put ''Njc0XHU5NjdiXHU5NjdjXHU5NjdlXHU5NjdmXHU5NjgxXHU5NjgyXHU5NjgzXHU5Njg0XHU5Njg5XHU5NjkxXHU5Njk2XHU5NjlhXHU5NjlkXHU5NjlmXHU5NmE0XHU5NmE1XHU5NmE2XHU5NmE5XHU5NmFlXHU5NmFmXHU5NmIzXHU5NmJhXHU5NmNhXHU5NmQyXHU1ZGIyXHU5NmQ4XHU5NmRh''@;'; put 'put ''XHU5NmRkXHU5NmRlXHU5NmRmXHU5NmU5XHU5NmVmXHU5NmYxXHU5NmZhXHU5NzAyIl0sWyI4ZmU3YTEiLCJcdTk3MDNcdTk3MDVcdTk3MDlcdTk3MWFcdTk3MWJcdTk3MWRcdTk3MjFcdTk3MjJcdTk3MjNcdTk3MjhcdTk3MzFcdTk3MzNcdTk3NDFcdTk3NDNcdTk3NGFcdTk3NGVcdTk3NGZc''@;'; put 'put ''dTk3NTVcdTk3NTdcdTk3NThcdTk3NWFcdTk3NWJcdTk3NjNcdTk3NjdcdTk3NmFcdTk3NmVcdTk3NzNcdTk3NzZcdTk3NzdcdTk3NzhcdTk3N2JcdTk3N2RcdTk3N2ZcdTk3ODBcdTk3ODlcdTk3OTVcdTk3OTZcdTk3OTdcdTk3OTlcdTk3OWFcdTk3OWVcdTk3OWZcdTk3YTJcdTk3YWNcdTk3''@;'; put 'put ''YWVcdTk3YjFcdTk3YjJcdTk3YjVcdTk3YjZcdTk3YjhcdTk3YjlcdTk3YmFcdTk3YmNcdTk3YmVcdTk3YmZcdTk3YzFcdTk3YzRcdTk3YzVcdTk3YzdcdTk3YzlcdTk3Y2FcdTk3Y2NcdTk3Y2RcdTk3Y2VcdTk3ZDBcdTk3ZDFcdTk3ZDRcdTk3ZDdcdTk3ZDhcdTk3ZDlcdTk3ZGRcdTk3ZGVc''@;'; put 'put ''dTk3ZTBcdTk3ZGJcdTk3ZTFcdTk3ZTRcdTk3ZWZcdTk3ZjFcdTk3ZjRcdTk3ZjdcdTk3ZjhcdTk3ZmFcdTk4MDdcdTk4MGFcdTk4MTlcdTk4MGRcdTk4MGVcdTk4MTRcdTk4MTZcdTk4MWNcdTk4MWVcdTk4MjBcdTk4MjNcdTk4MjYiXSxbIjhmZThhMSIsIlx1OTgyYlx1OTgyZVx1OTgyZlx1''@;'; put 'put ''OTgzMFx1OTgzMlx1OTgzM1x1OTgzNVx1OTgyNVx1OTgzZVx1OTg0NFx1OTg0N1x1OTg0YVx1OTg1MVx1OTg1Mlx1OTg1M1x1OTg1Nlx1OTg1N1x1OTg1OVx1OTg1YVx1OTg2Mlx1OTg2M1x1OTg2NVx1OTg2Nlx1OTg2YVx1OTg2Y1x1OThhYlx1OThhZFx1OThhZVx1OThiMFx1OThiNFx1OThi''@;'; put 'put ''N1x1OThiOFx1OThiYVx1OThiYlx1OThiZlx1OThjMlx1OThjNVx1OThjOFx1OThjY1x1OThlMVx1OThlM1x1OThlNVx1OThlNlx1OThlN1x1OThlYVx1OThmM1x1OThmNlx1OTkwMlx1OTkwN1x1OTkwOFx1OTkxMVx1OTkxNVx1OTkxNlx1OTkxN1x1OTkxYVx1OTkxYlx1OTkxY1x1OTkxZlx1''@;'; put 'put ''OTkyMlx1OTkyNlx1OTkyN1x1OTkyYlx1OTkzMSIsNCwiXHU5OTM5XHU5OTNhXHU5OTNiXHU5OTNjXHU5OTQwXHU5OTQxXHU5OTQ2XHU5OTQ3XHU5OTQ4XHU5OTRkXHU5OTRlXHU5OTU0XHU5OTU4XHU5OTU5XHU5OTViXHU5OTVjXHU5OTVlXHU5OTVmXHU5OTYwXHU5OTliXHU5OTlkXHU5OTlm''@;'; put 'put ''XHU5OWE2XHU5OWIwXHU5OWIxXHU5OWIyXHU5OWI1Il0sWyI4ZmU5YTEiLCJcdTk5YjlcdTk5YmFcdTk5YmRcdTk5YmZcdTk5YzNcdTk5YzlcdTk5ZDNcdTk5ZDRcdTk5ZDlcdTk5ZGFcdTk5ZGNcdTk5ZGVcdTk5ZTdcdTk5ZWFcdTk5ZWJcdTk5ZWNcdTk5ZjBcdTk5ZjRcdTk5ZjVcdTk5Zjlc''@;'; put 'put ''dTk5ZmRcdTk5ZmVcdTlhMDJcdTlhMDNcdTlhMDRcdTlhMGJcdTlhMGNcdTlhMTBcdTlhMTFcdTlhMTZcdTlhMWVcdTlhMjBcdTlhMjJcdTlhMjNcdTlhMjRcdTlhMjdcdTlhMmRcdTlhMmVcdTlhMzNcdTlhMzVcdTlhMzZcdTlhMzhcdTlhNDdcdTlhNDFcdTlhNDRcdTlhNGFcdTlhNGJcdTlh''@;'; put 'put ''NGNcdTlhNGVcdTlhNTFcdTlhNTRcdTlhNTZcdTlhNWRcdTlhYWFcdTlhYWNcdTlhYWVcdTlhYWZcdTlhYjJcdTlhYjRcdTlhYjVcdTlhYjZcdTlhYjlcdTlhYmJcdTlhYmVcdTlhYmZcdTlhYzFcdTlhYzNcdTlhYzZcdTlhYzhcdTlhY2VcdTlhZDBcdTlhZDJcdTlhZDVcdTlhZDZcdTlhZDdc''@;'; put 'put ''dTlhZGJcdTlhZGNcdTlhZTBcdTlhZTRcdTlhZTVcdTlhZTdcdTlhZTlcdTlhZWNcdTlhZjJcdTlhZjNcdTlhZjVcdTlhZjlcdTlhZmFcdTlhZmRcdTlhZmYiLDRdLFsiOGZlYWExIiwiXHU5YjA0XHU5YjA1XHU5YjA4XHU5YjA5XHU5YjBiXHU5YjBjXHU5YjBkXHU5YjBlXHU5YjEwXHU5YjEy''@;'; put 'put ''XHU5YjE2XHU5YjE5XHU5YjFiXHU5YjFjXHU5YjIwXHU5YjI2XHU5YjJiXHU5YjJkXHU5YjMzXHU5YjM0XHU5YjM1XHU5YjM3XHU5YjM5XHU5YjNhXHU5YjNkXHU5YjQ4XHU5YjRiXHU5YjRjXHU5YjU1XHU5YjU2XHU5YjU3XHU5YjViXHU5YjVlXHU5YjYxXHU5YjYzXHU5YjY1XHU5YjY2XHU5''@;'; put 'put ''YjY4XHU5YjZhIiw0LCJcdTliNzNcdTliNzVcdTliNzdcdTliNzhcdTliNzlcdTliN2ZcdTliODBcdTliODRcdTliODVcdTliODZcdTliODdcdTliODlcdTliOGFcdTliOGJcdTliOGRcdTliOGZcdTliOTBcdTliOTRcdTliOWFcdTliOWRcdTliOWVcdTliYTZcdTliYTdcdTliYTlcdTliYWNc''@;'; put 'put ''dTliYjBcdTliYjFcdTliYjJcdTliYjdcdTliYjhcdTliYmJcdTliYmNcdTliYmVcdTliYmZcdTliYzFcdTliYzdcdTliYzhcdTliY2VcdTliZDBcdTliZDdcdTliZDhcdTliZGRcdTliZGZcdTliZTVcdTliZTdcdTliZWFcdTliZWJcdTliZWZcdTliZjNcdTliZjdcdTliZjgiXSxbIjhmZWJh''@;'; put 'put ''MSIsIlx1OWJmOVx1OWJmYVx1OWJmZFx1OWJmZlx1OWMwMFx1OWMwMlx1OWMwYlx1OWMwZlx1OWMxMVx1OWMxNlx1OWMxOFx1OWMxOVx1OWMxYVx1OWMxY1x1OWMxZVx1OWMyMlx1OWMyM1x1OWMyNiIsNCwiXHU5YzMxXHU5YzM1XHU5YzM2XHU5YzM3XHU5YzNkXHU5YzQxXHU5YzQzXHU5YzQ0''@;'; put 'put ''XHU5YzQ1XHU5YzQ5XHU5YzRhXHU5YzRlXHU5YzRmXHU5YzUwXHU5YzUzXHU5YzU0XHU5YzU2XHU5YzU4XHU5YzViXHU5YzVkXHU5YzVlXHU5YzVmXHU5YzYzXHU5YzY5XHU5YzZhXHU5YzVjXHU5YzZiXHU5YzY4XHU5YzZlXHU5YzcwXHU5YzcyXHU5Yzc1XHU5Yzc3XHU5YzdiXHU5Y2U2XHU5''@;'; put 'put ''Y2YyXHU5Y2Y3XHU5Y2Y5XHU5ZDBiXHU5ZDAyXHU5ZDExXHU5ZDE3XHU5ZDE4XHU5ZDFjXHU5ZDFkXHU5ZDFlXHU5ZDJmXHU5ZDMwXHU5ZDMyXHU5ZDMzXHU5ZDM0XHU5ZDNhXHU5ZDNjXHU5ZDQ1XHU5ZDNkXHU5ZDQyXHU5ZDQzXHU5ZDQ3XHU5ZDRhXHU5ZDUzXHU5ZDU0XHU5ZDVmXHU5ZDYz''@;'; put 'put ''XHU5ZDYyXHU5ZDY1XHU5ZDY5XHU5ZDZhXHU5ZDZiXHU5ZDcwXHU5ZDc2XHU5ZDc3XHU5ZDdiIl0sWyI4ZmVjYTEiLCJcdTlkN2NcdTlkN2VcdTlkODNcdTlkODRcdTlkODZcdTlkOGFcdTlkOGRcdTlkOGVcdTlkOTJcdTlkOTNcdTlkOTVcdTlkOTZcdTlkOTdcdTlkOThcdTlkYTFcdTlkYWFc''@;'; put 'put ''dTlkYWNcdTlkYWVcdTlkYjFcdTlkYjVcdTlkYjlcdTlkYmNcdTlkYmZcdTlkYzNcdTlkYzdcdTlkYzlcdTlkY2FcdTlkZDRcdTlkZDVcdTlkZDZcdTlkZDdcdTlkZGFcdTlkZGVcdTlkZGZcdTlkZTBcdTlkZTVcdTlkZTdcdTlkZTlcdTlkZWJcdTlkZWVcdTlkZjBcdTlkZjNcdTlkZjRcdTlk''@;'; put 'put ''ZmVcdTllMGFcdTllMDJcdTllMDdcdTllMGVcdTllMTBcdTllMTFcdTllMTJcdTllMTVcdTllMTZcdTllMTlcdTllMWNcdTllMWRcdTllN2FcdTllN2JcdTllN2NcdTllODBcdTllODJcdTllODNcdTllODRcdTllODVcdTllODdcdTllOGVcdTllOGZcdTllOTZcdTllOThcdTllOWJcdTllOWVc''@;'; put 'put ''dTllYTRcdTllYThcdTllYWNcdTllYWVcdTllYWZcdTllYjBcdTllYjNcdTllYjRcdTllYjVcdTllYzZcdTllYzhcdTllY2JcdTllZDVcdTllZGZcdTllZTRcdTllZTdcdTllZWNcdTllZWRcdTllZWVcdTllZjBcdTllZjFcdTllZjJcdTllZjUiXSxbIjhmZWRhMSIsIlx1OWVmOFx1OWVmZlx1''@;'; put 'put ''OWYwMlx1OWYwM1x1OWYwOVx1OWYwZlx1OWYxMFx1OWYxMVx1OWYxMlx1OWYxNFx1OWYxNlx1OWYxN1x1OWYxOVx1OWYxYVx1OWYxYlx1OWYxZlx1OWYyMlx1OWYyNlx1OWYyYVx1OWYyYlx1OWYyZlx1OWYzMVx1OWYzMlx1OWYzNFx1OWYzN1x1OWYzOVx1OWYzYVx1OWYzY1x1OWYzZFx1OWYz''@;'; put 'put ''Zlx1OWY0MVx1OWY0MyIsNCwiXHU5ZjUzXHU5ZjU1XHU5ZjU2XHU5ZjU3XHU5ZjU4XHU5ZjVhXHU5ZjVkXHU5ZjVlXHU5ZjY4XHU5ZjY5XHU5ZjZkIiw0LCJcdTlmNzNcdTlmNzVcdTlmN2FcdTlmN2RcdTlmOGZcdTlmOTBcdTlmOTFcdTlmOTJcdTlmOTRcdTlmOTZcdTlmOTdcdTlmOWVcdTlm''@;'; put 'put ''YTFcdTlmYTJcdTlmYTNcdTlmYTUiXV0nKX0sMzYyNTg6V2U9PnsidXNlIHN0cmljdCI7V2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7InVDaGFycyI6WzEyOCwxNjUsMTY5LDE3OCwxODQsMjE2LDIyNiwyMzUsMjM4LDI0NCwyNDgsMjUxLDI1MywyNTgsMjc2LDI4NCwzMDAsMzI1LDMyOSwzMzQs''@;'; put 'put ''MzY0LDQ2Myw0NjUsNDY3LDQ2OSw0NzEsNDczLDQ3NSw0NzcsNTA2LDU5NCw2MTAsNzEyLDcxNiw3MzAsOTMwLDkzOCw5NjIsOTcwLDEwMjYsMTEwNCwxMTA2LDgyMDksODIxNSw4MjE4LDgyMjIsODIzMSw4MjQxLDgyNDQsODI0Niw4MjUyLDgzNjUsODQ1Miw4NDU0LDg0NTgsODQ3MSw4NDgy''@;'; put 'put ''LDg1NTYsODU3MCw4NTk2LDg2MDIsODcxMyw4NzIwLDg3MjIsODcyNiw4NzMxLDg3MzcsODc0MCw4NzQyLDg3NDgsODc1MSw4NzYwLDg3NjYsODc3Nyw4NzgxLDg3ODcsODgwMiw4ODA4LDg4MTYsODg1NCw4ODU4LDg4NzAsODg5Niw4OTc5LDkzMjIsOTM3Miw5NTQ4LDk1ODgsOTYxNiw5NjIy''@;'; put 'put ''LDk2MzQsOTY1Miw5NjYyLDk2NzIsOTY3Niw5NjgwLDk3MDIsOTczNSw5NzM4LDk3OTMsOTc5NSwxMTkwNiwxMTkwOSwxMTkxMywxMTkxNywxMTkyOCwxMTk0NCwxMTk0NywxMTk1MSwxMTk1NiwxMTk2MCwxMTk2NCwxMTk3OSwxMjI4NCwxMjI5MiwxMjMxMiwxMjMxOSwxMjMzMCwxMjM1MSwx''@;'; put 'put ''MjQzNiwxMjQ0NywxMjUzNSwxMjU0MywxMjU4NiwxMjg0MiwxMjg1MCwxMjk2NCwxMzIwMCwxMzIxNSwxMzIxOCwxMzI1MywxMzI2MywxMzI2NywxMzI3MCwxMzM4NCwxMzQyOCwxMzcyNywxMzgzOSwxMzg1MSwxNDYxNywxNDcwMywxNDgwMSwxNDgxNiwxNDk2NCwxNTE4MywxNTQ3MSwxNTU4''@;'; put 'put ''NSwxNjQ3MSwxNjczNiwxNzIwOCwxNzMyNSwxNzMzMCwxNzM3NCwxNzYyMywxNzk5NywxODAxOCwxODIxMiwxODIxOCwxODMwMSwxODMxOCwxODc2MCwxODgxMSwxODgxNCwxODgyMCwxODgyMywxODg0NCwxODg0OCwxODg3MiwxOTU3NiwxOTYyMCwxOTczOCwxOTg4Nyw0MDg3MCw1OTI0NCw1''@;'; put 'put ''OTMzNiw1OTM2Nyw1OTQxMyw1OTQxNyw1OTQyMyw1OTQzMSw1OTQzNyw1OTQ0Myw1OTQ1Miw1OTQ2MCw1OTQ3OCw1OTQ5Myw2Mzc4OSw2Mzg2Niw2Mzg5NCw2Mzk3Niw2Mzk4Niw2NDAxNiw2NDAxOCw2NDAyMSw2NDAyNSw2NDAzNCw2NDAzNyw2NDA0Miw2NTA3NCw2NTA5Myw2NTEwNyw2NTEx''@;'; put 'put ''Miw2NTEyNyw2NTEzMiw2NTM3NSw2NTUxMCw2NTUzNl0sImdiQ2hhcnMiOlswLDM2LDM4LDQ1LDUwLDgxLDg5LDk1LDk2LDEwMCwxMDMsMTA0LDEwNSwxMDksMTI2LDEzMywxNDgsMTcyLDE3NSwxNzksMjA4LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzQxLDQyOCw0NDMsNTQ0''@;'; put 'put ''LDU0NSw1NTgsNzQxLDc0Miw3NDksNzUwLDgwNSw4MTksODIwLDc5MjIsNzkyNCw3OTI1LDc5MjcsNzkzNCw3OTQzLDc5NDQsNzk0NSw3OTUwLDgwNjIsODE0OCw4MTQ5LDgxNTIsODE2NCw4MTc0LDgyMzYsODI0MCw4MjYyLDgyNjQsODM3NCw4MzgwLDgzODEsODM4NCw4Mzg4LDgzOTAsODM5''@;'; put 'put ''Miw4MzkzLDgzOTQsODM5Niw4NDAxLDg0MDYsODQxNiw4NDE5LDg0MjQsODQzNyw4NDM5LDg0NDUsODQ4Miw4NDg1LDg0OTYsODUyMSw4NjAzLDg5MzYsODk0Niw5MDQ2LDkwNTAsOTA2Myw5MDY2LDkwNzYsOTA5Miw5MTAwLDkxMDgsOTExMSw5MTEzLDkxMzEsOTE2Miw5MTY0LDkyMTgsOTIx''@;'; put 'put ''OSwxMTMyOSwxMTMzMSwxMTMzNCwxMTMzNiwxMTM0NiwxMTM2MSwxMTM2MywxMTM2NiwxMTM3MCwxMTM3MiwxMTM3NSwxMTM4OSwxMTY4MiwxMTY4NiwxMTY4NywxMTY5MiwxMTY5NCwxMTcxNCwxMTcxNiwxMTcyMywxMTcyNSwxMTczMCwxMTczNiwxMTk4MiwxMTk4OSwxMjEwMiwxMjMzNiwx''@;'; put 'put ''MjM0OCwxMjM1MCwxMjM4NCwxMjM5MywxMjM5NSwxMjM5NywxMjUxMCwxMjU1MywxMjg1MSwxMjk2MiwxMjk3MywxMzczOCwxMzgyMywxMzkxOSwxMzkzMywxNDA4MCwxNDI5OCwxNDU4NSwxNDY5OCwxNTU4MywxNTg0NywxNjMxOCwxNjQzNCwxNjQzOCwxNjQ4MSwxNjcyOSwxNzEwMiwxNzEy''@;'; put 'put ''MiwxNzMxNSwxNzMyMCwxNzQwMiwxNzQxOCwxNzg1OSwxNzkwOSwxNzkxMSwxNzkxNSwxNzkxNiwxNzkzNiwxNzkzOSwxNzk2MSwxODY2NCwxODcwMywxODgxNCwxODk2MiwxOTA0MywzMzQ2OSwzMzQ3MCwzMzQ3MSwzMzQ4NCwzMzQ4NSwzMzQ5MCwzMzQ5NywzMzUwMSwzMzUwNSwzMzUxMywz''@;'; put 'put ''MzUyMCwzMzUzNiwzMzU1MCwzNzg0NSwzNzkyMSwzNzk0OCwzODAyOSwzODAzOCwzODA2NCwzODA2NSwzODA2NiwzODA2OSwzODA3NSwzODA3NiwzODA3OCwzOTEwOCwzOTEwOSwzOTExMywzOTExNCwzOTExNSwzOTExNiwzOTI2NSwzOTM5NCwxODkwMDBdfScpfSw0NDM0NjpXZT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtXZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbImExNDAiLCJcdWU0YzYiLDYyXSxbImExODAiLCJcdWU1MDUiLDMyXSxbImEyNDAiLCJcdWU1MjYiLDYyXSxbImEyODAiLCJcdWU1NjUiLDMyXSxbImEyYWIiLCJcdWU3NjYiLDVdLFsiYTJlMyIsIlx1MjBhY1x1ZTc2ZCJdLFsiYTJl''@;'; put 'put ''ZiIsIlx1ZTc2ZVx1ZTc2ZiJdLFsiYTJmZCIsIlx1ZTc3MFx1ZTc3MSJdLFsiYTM0MCIsIlx1ZTU4NiIsNjJdLFsiYTM4MCIsIlx1ZTVjNSIsMzEsIlx1MzAwMCJdLFsiYTQ0MCIsIlx1ZTVlNiIsNjJdLFsiYTQ4MCIsIlx1ZTYyNSIsMzJdLFsiYTRmNCIsIlx1ZTc3MiIsMTBdLFsiYTU0MCIs''@;'; put 'put ''Ilx1ZTY0NiIsNjJdLFsiYTU4MCIsIlx1ZTY4NSIsMzJdLFsiYTVmNyIsIlx1ZTc3ZCIsN10sWyJhNjQwIiwiXHVlNmE2Iiw2Ml0sWyJhNjgwIiwiXHVlNmU1IiwzMl0sWyJhNmI5IiwiXHVlNzg1Iiw3XSxbImE2ZDkiLCJcdWU3OGQiLDZdLFsiYTZlYyIsIlx1ZTc5NFx1ZTc5NSJdLFsiYTZm''@;'; put 'put ''MyIsIlx1ZTc5NiJdLFsiYTZmNiIsIlx1ZTc5NyIsOF0sWyJhNzQwIiwiXHVlNzA2Iiw2Ml0sWyJhNzgwIiwiXHVlNzQ1IiwzMl0sWyJhN2MyIiwiXHVlN2EwIiwxNF0sWyJhN2YyIiwiXHVlN2FmIiwxMl0sWyJhODk2IiwiXHVlN2JjIiwxMF0sWyJhOGJjIiwiXHVlN2M3Il0sWyJhOGJmIiwi''@;'; put 'put ''XHUwMWY5Il0sWyJhOGMxIiwiXHVlN2M5XHVlN2NhXHVlN2NiXHVlN2NjIl0sWyJhOGVhIiwiXHVlN2NkIiwyMF0sWyJhOTU4IiwiXHVlN2UyIl0sWyJhOTViIiwiXHVlN2UzIl0sWyJhOTVkIiwiXHVlN2U0XHVlN2U1XHVlN2U2Il0sWyJhOTg5IiwiXHUzMDNlXHUyZmYwIiwxMV0sWyJhOTk3''@;'; put 'put ''IiwiXHVlN2Y0IiwxMl0sWyJhOWYwIiwiXHVlODAxIiwxNF0sWyJhYWExIiwiXHVlMDAwIiw5M10sWyJhYmExIiwiXHVlMDVlIiw5M10sWyJhY2ExIiwiXHVlMGJjIiw5M10sWyJhZGExIiwiXHVlMTFhIiw5M10sWyJhZWExIiwiXHVlMTc4Iiw5M10sWyJhZmExIiwiXHVlMWQ2Iiw5M10sWyJk''@;'; put 'put ''N2ZhIiwiXHVlODEwIiw0XSxbImY4YTEiLCJcdWUyMzQiLDkzXSxbImY5YTEiLCJcdWUyOTIiLDkzXSxbImZhYTEiLCJcdWUyZjAiLDkzXSxbImZiYTEiLCJcdWUzNGUiLDkzXSxbImZjYTEiLCJcdWUzYWMiLDkzXSxbImZkYTEiLCJcdWU0MGEiLDkzXSxbImZlNTAiLCJcdTJlODFcdWU4MTZc''@;'; put 'put ''dWU4MTdcdWU4MThcdTJlODRcdTM0NzNcdTM0NDdcdTJlODhcdTJlOGJcdWU4MWVcdTM1OWVcdTM2MWFcdTM2MGVcdTJlOGNcdTJlOTdcdTM5NmVcdTM5MThcdWU4MjZcdTM5Y2ZcdTM5ZGZcdTNhNzNcdTM5ZDBcdWU4MmJcdWU4MmNcdTNiNGVcdTNjNmVcdTNjZTBcdTJlYTdcdWU4MzFcdWU4''@;'; put 'put ''MzJcdTJlYWFcdTQwNTZcdTQxNWZcdTJlYWVcdTQzMzdcdTJlYjNcdTJlYjZcdTJlYjdcdWU4M2JcdTQzYjFcdTQzYWNcdTJlYmJcdTQzZGRcdTQ0ZDZcdTQ2NjFcdTQ2NGNcdWU4NDMiXSxbImZlODAiLCJcdTQ3MjNcdTQ3MjlcdTQ3N2NcdTQ3OGRcdTJlY2FcdTQ5NDdcdTQ5N2FcdTQ5N2Rc''@;'; put 'put ''dTQ5ODJcdTQ5ODNcdTQ5ODVcdTQ5ODZcdTQ5OWZcdTQ5OWJcdTQ5YjdcdTQ5YjZcdWU4NTRcdWU4NTVcdTRjYTNcdTRjOWZcdTRjYTBcdTRjYTFcdTRjNzdcdTRjYTJcdTRkMTMiLDYsIlx1NGRhZVx1ZTg2NFx1ZTQ2OCIsOTNdXScpfSwyNzAxNDpXZT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBv''@;'; put 'put ''cnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjhdLFsiYTEiLCJcdWZmNjEiLDYyXSxbIjgxNDAiLCJcdTMwMDBcdTMwMDFcdTMwMDJcdWZmMGNcdWZmMGVcdTMwZmJcdWZmMWFcdWZmMWJcdWZmMWZcdWZmMDFcdTMwOWJcdTMwOWNceGI0XHVmZjQwXHhhOFx1ZmYzZVx1ZmZlM1x1''@;'; put 'put ''ZmYzZlx1MzBmZFx1MzBmZVx1MzA5ZFx1MzA5ZVx1MzAwM1x1NGVkZFx1MzAwNVx1MzAwNlx1MzAwN1x1MzBmY1x1MjAxNVx1MjAxMFx1ZmYwZlx1ZmYzY1x1ZmY1ZVx1MjIyNVx1ZmY1Y1x1MjAyNlx1MjAyNVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1ZmYwOFx1ZmYwOVx1MzAxNFx1MzAx''@;'; put 'put ''NVx1ZmYzYlx1ZmYzZFx1ZmY1Ylx1ZmY1ZFx1MzAwOCIsOSwiXHVmZjBiXHVmZjBkXHhiMVx4ZDciXSxbIjgxODAiLCJceGY3XHVmZjFkXHUyMjYwXHVmZjFjXHVmZjFlXHUyMjY2XHUyMjY3XHUyMjFlXHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmZlNVx1ZmYw''@;'; put 'put ''NFx1ZmZlMFx1ZmZlMVx1ZmYwNVx1ZmYwM1x1ZmYwNlx1ZmYwYVx1ZmYyMFx4YTdcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIwM2JcdTMwMTJcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTMw''@;'; put 'put ''MTMiXSxbIjgxYjgiLCJcdTIyMDhcdTIyMGJcdTIyODZcdTIyODdcdTIyODJcdTIyODNcdTIyMmFcdTIyMjkiXSxbIjgxYzgiLCJcdTIyMjdcdTIyMjhcdWZmZTJcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDMiXSxbIjgxZGEiLCJcdTIyMjBcdTIyYTVcdTIzMTJcdTIyMDJcdTIyMDdcdTIyNjFc''@;'; put 'put ''dTIyNTJcdTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmMiXSxbIjgxZjAiLCJcdTIxMmJcdTIwMzBcdTI2NmZcdTI2NmRcdTI2NmFcdTIwMjBcdTIwMjFceGI2Il0sWyI4MWZjIiwiXHUyNWVmIl0sWyI4MjRmIiwiXHVmZjEwIiw5XSxbIjgyNjAiLCJcdWZm''@;'; put 'put ''MjEiLDI1XSxbIjgyODEiLCJcdWZmNDEiLDI1XSxbIjgyOWYiLCJcdTMwNDEiLDgyXSxbIjgzNDAiLCJcdTMwYTEiLDYyXSxbIjgzODAiLCJcdTMwZTAiLDIyXSxbIjgzOWYiLCJcdTAzOTEiLDE2LCJcdTAzYTMiLDZdLFsiODNiZiIsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNl0sWyI4NDQwIiwi''@;'; put 'put ''XHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDI1XSxbIjg0NzAiLCJcdTA0MzAiLDUsIlx1MDQ1MVx1MDQzNiIsN10sWyI4NDgwIiwiXHUwNDNlIiwxN10sWyI4NDlmIiwiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE4XHUyNTE0XHUyNTFjXHUyNTJjXHUyNTI0XHUyNTM0XHUyNTNjXHUy''@;'; put 'put ''NTAxXHUyNTAzXHUyNTBmXHUyNTEzXHUyNTFiXHUyNTE3XHUyNTIzXHUyNTMzXHUyNTJiXHUyNTNiXHUyNTRiXHUyNTIwXHUyNTJmXHUyNTI4XHUyNTM3XHUyNTNmXHUyNTFkXHUyNTMwXHUyNTI1XHUyNTM4XHUyNTQyIl0sWyI4NzQwIiwiXHUyNDYwIiwxOSwiXHUyMTYwIiw5XSxbIjg3NWYi''@;'; put 'put ''LCJcdTMzNDlcdTMzMTRcdTMzMjJcdTMzNGRcdTMzMThcdTMzMjdcdTMzMDNcdTMzMzZcdTMzNTFcdTMzNTdcdTMzMGRcdTMzMjZcdTMzMjNcdTMzMmJcdTMzNGFcdTMzM2JcdTMzOWNcdTMzOWRcdTMzOWVcdTMzOGVcdTMzOGZcdTMzYzRcdTMzYTEiXSxbIjg3N2UiLCJcdTMzN2IiXSxbIjg3''@;'; put 'put ''ODAiLCJcdTMwMWRcdTMwMWZcdTIxMTZcdTMzY2RcdTIxMjFcdTMyYTQiLDQsIlx1MzIzMVx1MzIzMlx1MzIzOVx1MzM3ZVx1MzM3ZFx1MzM3Y1x1MjI1Mlx1MjI2MVx1MjIyYlx1MjIyZVx1MjIxMVx1MjIxYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MjIzNVx1MjIyOVx1MjIyYSJdLFsi''@;'; put 'put ''ODg5ZiIsIlx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1NjBhYVx1NjNlMVx1NmUyNVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1''@;'; put 'put ''OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4ZFx1Njc0Zlx1NGVlNVx1NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3''@;'; put 'put ''MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1OTA3YVx1NTMzYlx1NGU5NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1''@;'; put 'put ''ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZCJdLFsiODk0MCIsIlx1OTY2Mlx1OTY3MFx1OTZhMFx1OTdmYlx1NTQwYlx1NTNmM1x1NWI4N1x1NzBjZlx1N2ZiZFx1OGZjMlx1OTZlOFx1NTM2Zlx1OWQ1''@;'; put 'put ''Y1x1N2FiYVx1NGUxMVx1Nzg5M1x1ODFmY1x1NmUyNlx1NTYxOFx1NTUwNFx1NmIxZFx1ODUxYVx1OWMzYlx1NTllNVx1NTNhOVx1NmQ2Nlx1NzRkY1x1OTU4Zlx1NTY0Mlx1NGU5MVx1OTA0Ylx1OTZmMlx1ODM0Zlx1OTkwY1x1NTNlMVx1NTViNlx1NWIzMFx1NWY3MVx1NjYyMFx1NjZmM1x1''@;'; put 'put ''NjgwNFx1NmMzOFx1NmNmM1x1NmQyOVx1NzQ1Ylx1NzZjOFx1N2E0ZVx1OTgzNFx1ODJmMVx1ODg1Ylx1OGE2MFx1OTJlZFx1NmRiMlx1NzVhYlx1NzZjYVx1OTljNVx1NjBhNlx1OGIwMVx1OGQ4YVx1OTViMlx1Njk4ZVx1NTNhZFx1NTE4NiJdLFsiODk4MCIsIlx1NTcxMlx1NTgzMFx1NTk0''@;'; put 'put ''NFx1NWJiNFx1NWVmNlx1NjAyOFx1NjNhOVx1NjNmNFx1NmNiZlx1NmYxNFx1NzA4ZVx1NzExNFx1NzE1OVx1NzFkNVx1NzMzZlx1N2UwMVx1ODI3Nlx1ODJkMVx1ODU5N1x1OTA2MFx1OTI1Ylx1OWQxYlx1NTg2OVx1NjViY1x1NmM1YVx1NzUyNVx1NTFmOVx1NTkyZVx1NTk2NVx1NWY4MFx1''@;'; put 'put ''NWZkY1x1NjJiY1x1NjVmYVx1NmEyYVx1NmIyN1x1NmJiNFx1NzM4Ylx1N2ZjMVx1ODk1Nlx1OWQyY1x1OWQwZVx1OWVjNFx1NWNhMVx1NmM5Nlx1ODM3Ylx1NTEwNFx1NWM0Ylx1NjFiNlx1ODFjNlx1Njg3Nlx1NzI2MVx1NGU1OVx1NGZmYVx1NTM3OFx1NjA2OVx1NmUyOVx1N2E0Zlx1OTdm''@;'; put 'put ''M1x1NGUwYlx1NTMxNlx1NGVlZVx1NGY1NVx1NGYzZFx1NGZhMVx1NGY3M1x1NTJhMFx1NTNlZlx1NTYwOVx1NTkwZlx1NWFjMVx1NWJiNlx1NWJlMVx1NzlkMVx1NjY4N1x1Njc5Y1x1NjdiNlx1NmI0Y1x1NmNiM1x1NzA2Ylx1NzNjMlx1Nzk4ZFx1NzliZVx1N2EzY1x1N2I4N1x1ODJiMVx1''@;'; put 'put ''ODJkYlx1ODMwNFx1ODM3N1x1ODNlZlx1ODNkM1x1ODc2Nlx1OGFiMlx1NTYyOVx1OGNhOFx1OGZlNlx1OTA0ZVx1OTcxZVx1ODY4YVx1NGZjNFx1NWNlOFx1NjIxMVx1NzI1OVx1NzUzYlx1ODFlNVx1ODJiZFx1ODZmZVx1OGNjMFx1OTZjNVx1OTkxM1x1OTlkNVx1NGVjYlx1NGYxYVx1ODll''@;'; put 'put ''M1x1NTZkZVx1NTg0YVx1NThjYVx1NWVmYlx1NWZlYlx1NjAyYVx1NjA5NFx1NjA2Mlx1NjFkMFx1NjIxMlx1NjJkMFx1NjUzOSJdLFsiOGE0MCIsIlx1OWI0MVx1NjY2Nlx1NjhiMFx1NmQ3N1x1NzA3MFx1NzU0Y1x1NzY4Nlx1N2Q3NVx1ODJhNVx1ODdmOVx1OTU4Ylx1OTY4ZVx1OGM5ZFx1''@;'; put 'put ''NTFmMVx1NTJiZVx1NTkxNlx1NTRiM1x1NWJiM1x1NWQxNlx1NjE2OFx1Njk4Mlx1NmRhZlx1Nzg4ZFx1ODRjYlx1ODg1N1x1OGE3Mlx1OTNhN1x1OWFiOFx1NmQ2Y1x1OTlhOFx1ODZkOVx1NTdhM1x1NjdmZlx1ODZjZVx1OTIwZVx1NTI4M1x1NTY4N1x1NTQwNFx1NWVkM1x1NjJlMVx1NjRi''@;'; put 'put ''OVx1NjgzY1x1NjgzOFx1NmJiYlx1NzM3Mlx1NzhiYVx1N2E2Ylx1ODk5YVx1ODlkMlx1OGQ2Ylx1OGYwM1x1OTBlZFx1OTVhM1x1OTY5NFx1OTc2OVx1NWI2Nlx1NWNiM1x1Njk3ZFx1OTg0ZFx1OTg0ZVx1NjM5Ylx1N2IyMFx1NmEyYiJdLFsiOGE4MCIsIlx1NmE3Zlx1NjhiNlx1OWMwZFx1''@;'; put 'put ''NmY1Zlx1NTI3Mlx1NTU5ZFx1NjA3MFx1NjJlY1x1NmQzYlx1NmUwN1x1NmVkMVx1ODQ1Ylx1ODkxMFx1OGY0NFx1NGUxNFx1OWMzOVx1NTNmNlx1NjkxYlx1NmEzYVx1OTc4NFx1NjgyYVx1NTE1Y1x1N2FjM1x1ODRiMlx1OTFkY1x1OTM4Y1x1NTY1Ylx1OWQyOFx1NjgyMlx1ODMwNVx1ODQz''@;'; put 'put ''MVx1N2NhNVx1NTIwOFx1ODJjNVx1NzRlNlx1NGU3ZVx1NGY4M1x1NTFhMFx1NWJkMlx1NTIwYVx1NTJkOFx1NTJlN1x1NWRmYlx1NTU5YVx1NTgyYVx1NTllNlx1NWI4Y1x1NWI5OFx1NWJkYlx1NWU3Mlx1NWU3OVx1NjBhM1x1NjExZlx1NjE2M1x1NjFiZVx1NjNkYlx1NjU2Mlx1NjdkMVx1''@;'; put 'put ''Njg1M1x1NjhmYVx1NmIzZVx1NmI1M1x1NmM1N1x1NmYyMlx1NmY5N1x1NmY0NVx1NzRiMFx1NzUxOFx1NzZlM1x1NzcwYlx1N2FmZlx1N2JhMVx1N2MyMVx1N2RlOVx1N2YzNlx1N2ZmMFx1ODA5ZFx1ODI2Nlx1ODM5ZVx1ODliM1x1OGFjY1x1OGNhYlx1OTA4NFx1OTQ1MVx1OTU5M1x1OTU5''@;'; put 'put ''MVx1OTVhMlx1OTY2NVx1OTdkM1x1OTkyOFx1ODIxOFx1NGUzOFx1NTQyYlx1NWNiOFx1NWRjY1x1NzNhOVx1NzY0Y1x1NzczY1x1NWNhOVx1N2ZlYlx1OGQwYlx1OTZjMVx1OTgxMVx1OTg1NFx1OTg1OFx1NGYwMVx1NGYwZVx1NTM3MVx1NTU5Y1x1NTY2OFx1NTdmYVx1NTk0N1x1NWIwOVx1''@;'; put 'put ''NWJjNFx1NWM5MFx1NWUwY1x1NWU3ZVx1NWZjY1x1NjNlZVx1NjczYVx1NjVkN1x1NjVlMlx1NjcxZlx1NjhjYlx1NjhjNCJdLFsiOGI0MCIsIlx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNi''@;'; put 'put ''NFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1OWEwZVx1OWIzY1x1NGU4MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1''@;'; put 'put ''NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1NzgyN1x1Njc3NVx1OWVjZFx1NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MSJdLFsiOGI4MCIsIlx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNl''@;'; put 'put ''M1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1N2QxYVx1N2NmZVx1N2Q2Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhY1x1''@;'; put 'put ''NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3MVx1NTFmNlx1NTM1NFx1NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEw''@;'; put 'put ''NVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1OTk1N1x1OWE1YVx1NGVmMFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1''@;'; put 'put ''Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNjY1x1ODg3Zlx1ODk1Zlx1OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1''@;'; put 'put ''ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1OTY4NVx1NGUzMlx1NmFkYlx1OTFlN1x1NWM1MVx1NWM0OCJdLFsiOGM0MCIsIlx1NjM5OFx1N2E5Zlx1NmM5M1x1OTc3NFx1OGY2MVx1N2FhYVx1NzE4YVx1OTY4OFx1N2M4Mlx1NjgxN1x1N2U3MFx1Njg1MVx1OTM2Y1x1NTJmMlx1''@;'; put 'put ''NTQxYlx1ODVhYlx1OGExM1x1N2ZhNFx1OGVjZFx1OTBlMVx1NTM2Nlx1ODg4OFx1Nzk0MVx1NGZjMlx1NTBiZVx1NTIxMVx1NTE0NFx1NTU1M1x1NTcyZFx1NzNlYVx1NTc4Ylx1NTk1MVx1NWY2Mlx1NWY4NFx1NjA3NVx1NjE3Nlx1NjE2N1x1NjFhOVx1NjNiMlx1NjQzYVx1NjU2Y1x1NjY2''@;'; put 'put ''Zlx1Njg0Mlx1NmUxM1x1NzU2Nlx1N2EzZFx1N2NmYlx1N2Q0Y1x1N2Q5OVx1N2U0Ylx1N2Y2Ylx1ODMwZVx1ODM0YVx1ODZjZFx1OGEwOFx1OGE2M1x1OGI2Nlx1OGVmZFx1OTgxYVx1OWQ4Zlx1ODJiOFx1OGZjZVx1OWJlOCJdLFsiOGM4MCIsIlx1NTI4N1x1NjIxZlx1NjQ4M1x1NmZjMFx1''@;'; put 'put ''OTY5OVx1Njg0MVx1NTA5MVx1NmIyMFx1NmM3YVx1NmY1NFx1N2E3NFx1N2Q1MFx1ODg0MFx1OGEyM1x1NjcwOFx1NGVmNlx1NTAzOVx1NTAyNlx1NTA2NVx1NTE3Y1x1NTIzOFx1NTI2M1x1NTVhN1x1NTcwZlx1NTgwNVx1NWFjY1x1NWVmYVx1NjFiMlx1NjFmOFx1NjJmM1x1NjM3Mlx1Njkx''@;'; put 'put ''Y1x1NmEyOVx1NzI3ZFx1NzJhY1x1NzMyZVx1NzgxNFx1Nzg2Zlx1N2Q3OVx1NzcwY1x1ODBhOVx1ODk4Ylx1OGIxOVx1OGNlMlx1OGVkMlx1OTA2M1x1OTM3NVx1OTY3YVx1OTg1NVx1OWExM1x1OWU3OFx1NTE0M1x1NTM5Zlx1NTNiM1x1NWU3Ylx1NWYyNlx1NmUxYlx1NmU5MFx1NzM4NFx1''@;'; put 'put ''NzNmZVx1N2Q0M1x1ODIzN1x1OGEwMFx1OGFmYVx1OTY1MFx1NGU0ZVx1NTAwYlx1NTNlNFx1NTQ3Y1x1NTZmYVx1NTlkMVx1NWI2NFx1NWRmMVx1NWVhYlx1NWYyN1x1NjIzOFx1NjU0NVx1NjdhZlx1NmU1Nlx1NzJkMFx1N2NjYVx1ODhiNFx1ODBhMVx1ODBlMVx1ODNmMFx1ODY0ZVx1OGE4''@;'; put 'put ''N1x1OGRlOFx1OTIzN1x1OTZjN1x1OTg2N1x1OWYxM1x1NGU5NFx1NGU5Mlx1NGYwZFx1NTM0OFx1NTQ0OVx1NTQzZVx1NWEyZlx1NWY4Y1x1NWZhMVx1NjA5Zlx1NjhhN1x1NmE4ZVx1NzQ1YVx1Nzg4MVx1OGE5ZVx1OGFhNFx1OGI3N1x1OTE5MFx1NGU1ZVx1OWJjOVx1NGVhNFx1NGY3Y1x1''@;'; put 'put ''NGZhZlx1NTAxOVx1NTAxNlx1NTE0OVx1NTE2Y1x1NTI5Zlx1NTJiOVx1NTJmZVx1NTM5YVx1NTNlM1x1NTQxMSJdLFsiOGQ0MCIsIlx1NTQwZVx1NTU4OVx1NTc1MVx1NTdhMlx1NTk3ZFx1NWI1NFx1NWI1ZFx1NWI4Zlx1NWRlNVx1NWRlN1x1NWRmN1x1NWU3OFx1NWU4M1x1NWU5YVx1NWVi''@;'; put 'put ''N1x1NWYxOFx1NjA1Mlx1NjE0Y1x1NjI5N1x1NjJkOFx1NjNhN1x1NjUzYlx1NjYwMlx1NjY0M1x1NjZmNFx1Njc2ZFx1NjgyMVx1Njg5N1x1NjljYlx1NmM1Zlx1NmQyYVx1NmQ2OVx1NmUyZlx1NmU5ZFx1NzUzMlx1NzY4N1x1Nzg2Y1x1N2EzZlx1N2NlMFx1N2QwNVx1N2QxOFx1N2Q1ZVx1''@;'; put 'put ''N2RiMVx1ODAxNVx1ODAwM1x1ODBhZlx1ODBiMVx1ODE1NFx1ODE4Zlx1ODIyYVx1ODM1Mlx1ODg0Y1x1ODg2MVx1OGIxYlx1OGNhMlx1OGNmY1x1OTBjYVx1OTE3NVx1OTI3MVx1NzgzZlx1OTJmY1x1OTVhNFx1OTY0ZCJdLFsiOGQ4MCIsIlx1OTgwNVx1OTk5OVx1OWFkOFx1OWQzYlx1NTI1''@;'; put 'put ''Ylx1NTJhYlx1NTNmN1x1NTQwOFx1NThkNVx1NjJmN1x1NmZlMFx1OGM2YVx1OGY1Zlx1OWViOVx1NTE0Ylx1NTIzYlx1NTQ0YVx1NTZmZFx1N2E0MFx1OTE3N1x1OWQ2MFx1OWVkMlx1NzM0NFx1NmYwOVx1ODE3MFx1NzUxMVx1NWZmZFx1NjBkYVx1OWFhOFx1NzJkYlx1OGZiY1x1NmI2NFx1''@;'; put 'put ''OTgwM1x1NGVjYVx1NTZmMFx1NTc2NFx1NThiZVx1NWE1YVx1NjA2OFx1NjFjN1x1NjYwZlx1NjYwNlx1NjgzOVx1NjhiMVx1NmRmN1x1NzVkNVx1N2QzYVx1ODI2ZVx1OWI0Mlx1NGU5Ylx1NGY1MFx1NTNjOVx1NTUwNlx1NWQ2Zlx1NWRlNlx1NWRlZVx1NjdmYlx1NmM5OVx1NzQ3M1x1Nzgw''@;'; put 'put ''Mlx1OGE1MFx1OTM5Nlx1ODhkZlx1NTc1MFx1NWVhN1x1NjMyYlx1NTBiNVx1NTBhY1x1NTE4ZFx1NjcwMFx1NTRjOVx1NTg1ZVx1NTliYlx1NWJiMFx1NWY2OVx1NjI0ZFx1NjNhMVx1NjgzZFx1NmI3M1x1NmUwOFx1NzA3ZFx1OTFjN1x1NzI4MFx1NzgxNVx1NzgyNlx1Nzk2ZFx1NjU4ZVx1''@;'; put 'put ''N2QzMFx1ODNkY1x1ODhjMVx1OGYwOVx1OTY5Ylx1NTI2NFx1NTcyOFx1Njc1MFx1N2Y2YVx1OGNhMVx1NTFiNFx1NTc0Mlx1OTYyYVx1NTgzYVx1Njk4YVx1ODBiNFx1NTRiMlx1NWQwZVx1NTdmY1x1Nzg5NVx1OWRmYVx1NGY1Y1x1NTI0YVx1NTQ4Ylx1NjQzZVx1NjYyOFx1NjcxNFx1Njdm''@;'; put 'put ''NVx1N2E4NFx1N2I1Nlx1N2QyMlx1OTMyZlx1Njg1Y1x1OWJhZFx1N2IzOVx1NTMxOVx1NTE4YVx1NTIzNyJdLFsiOGU0MCIsIlx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMwNlx1OWJhYlx1NzZiZlx1NjY1Mlx1''@;'; put 'put ''NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1NGY3Zlx1NTIzYVx1NTNmOFx1NTNm''@;'; put 'put ''Mlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2MiJdLFsiOGU4MCIsIlx1NmI3Ylx1NmMwZlx1NzM0NVx1Nzk0OVx1NzljMVx1''@;'; put 'put ''N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1NjY0Mlx1NmIyMVx1NmVj''@;'; put 'put ''Ylx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFjOVx1NWJhNFx1NjA4OVx1''@;'; put 'put ''NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1OTA2ZVx1ODZjN1x1OTBh''@;'; put 'put ''YVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1Mlx1OTk5Nlx1NTExMlx1''@;'; put 'put ''NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OCJdLFsiOGY0MCIsIlx1NWI5N1x1NWMzMVx1NWRkZVx1NGZlZVx1NjEwMVx1NjJmZVx1NmQzMlx1NzljMFx1NzljYlx1N2Q0Mlx1N2U0ZFx1N2ZkMlx1ODFlZFx1ODIxZlx1ODQ5MFx1ODg0''@;'; put 'put ''Nlx1ODk3Mlx1OGI5MFx1OGU3NFx1OGYyZlx1OTAzMVx1OTE0Ylx1OTE2Y1x1OTZjNlx1OTE5Y1x1NGVjMFx1NGY0Zlx1NTE0NVx1NTM0MVx1NWY5M1x1NjIwZVx1NjdkNFx1NmM0MVx1NmUwYlx1NzM2M1x1N2UyNlx1OTFjZFx1OTI4M1x1NTNkNFx1NTkxOVx1NWJiZlx1NmRkMVx1Nzk1ZFx1''@;'; put 'put ''N2UyZVx1N2M5Ylx1NTg3ZVx1NzE5Zlx1NTFmYVx1ODg1M1x1OGZmMFx1NGZjYVx1NWNmYlx1NjYyNVx1NzdhY1x1N2FlM1x1ODIxY1x1OTlmZlx1NTFjNlx1NWZhYVx1NjVlY1x1Njk2Zlx1NmI4OVx1NmRmMyJdLFsiOGY4MCIsIlx1NmU5Nlx1NmY2NFx1NzZmZVx1N2QxNFx1NWRlMVx1OTA3''@;'; put 'put ''NVx1OTE4N1x1OTgwNlx1NTFlNlx1NTIxZFx1NjI0MFx1NjY5MVx1NjZkOVx1NmUxYVx1NWViNlx1N2RkMlx1N2Y3Mlx1NjZmOFx1ODVhZlx1ODVmN1x1OGFmOFx1NTJhOVx1NTNkOVx1NTk3M1x1NWU4Zlx1NWY5MFx1NjA1NVx1OTJlNFx1OTY2NFx1NTBiN1x1NTExZlx1NTJkZFx1NTMyMFx1''@;'; put 'put ''NTM0N1x1NTNlY1x1NTRlOFx1NTU0Nlx1NTUzMVx1NTYxN1x1NTk2OFx1NTliZVx1NWEzY1x1NWJiNVx1NWMwNlx1NWMwZlx1NWMxMVx1NWMxYVx1NWU4NFx1NWU4YVx1NWVlMFx1NWY3MFx1NjI3Zlx1NjI4NFx1NjJkYlx1NjM4Y1x1NjM3N1x1NjYwN1x1NjYwY1x1NjYyZFx1NjY3Nlx1Njc3''@;'; put 'put ''ZVx1NjhhMlx1NmExZlx1NmEzNVx1NmNiY1x1NmQ4OFx1NmUwOVx1NmU1OFx1NzEzY1x1NzEyNlx1NzE2N1x1NzVjN1x1NzcwMVx1Nzg1ZFx1NzkwMVx1Nzk2NVx1NzlmMFx1N2FlMFx1N2IxMVx1N2NhN1x1N2QzOVx1ODA5Nlx1ODNkNlx1ODQ4Ylx1ODU0OVx1ODg1ZFx1ODhmM1x1OGExZlx1''@;'; put 'put ''OGEzY1x1OGE1NFx1OGE3M1x1OGM2MVx1OGNkZVx1OTFhNFx1OTI2Nlx1OTM3ZVx1OTQxOFx1OTY5Y1x1OTc5OFx1NGUwYVx1NGUwOFx1NGUxZVx1NGU1N1x1NTE5N1x1NTI3MFx1NTdjZVx1NTgzNFx1NThjY1x1NWIyMlx1NWUzOFx1NjBjNVx1NjRmZVx1Njc2MVx1Njc1Nlx1NmQ0NFx1NzJi''@;'; put 'put ''Nlx1NzU3M1x1N2E2M1x1ODRiOFx1OGI3Mlx1OTFiOFx1OTMyMFx1NTYzMVx1NTdmNFx1OThmZSJdLFsiOTA0MCIsIlx1NjJlZFx1NjkwZFx1NmI5Nlx1NzFlZFx1N2U1NFx1ODA3N1x1ODI3Mlx1ODllNlx1OThkZlx1ODc1NVx1OGZiMVx1NWMzYlx1NGYzOFx1NGZlMVx1NGZiNVx1NTUwN1x1''@;'; put 'put ''NWEyMFx1NWJkZFx1NWJlOVx1NWZjM1x1NjE0ZVx1NjMyZlx1NjViMFx1NjY0Ylx1NjhlZVx1Njk5Ylx1NmQ3OFx1NmRmMVx1NzUzM1x1NzViOVx1NzcxZlx1Nzk1ZVx1NzllNlx1N2QzM1x1ODFlM1x1ODJhZlx1ODVhYVx1ODlhYVx1OGEzYVx1OGVhYlx1OGY5Ylx1OTAzMlx1OTFkZFx1OTcw''@;'; put 'put ''N1x1NGViYVx1NGVjMVx1NTIwM1x1NTg3NVx1NThlY1x1NWMwYlx1NzUxYVx1NWMzZFx1ODE0ZVx1OGEwYVx1OGZjNVx1OTY2M1x1OTc2ZFx1N2IyNVx1OGFjZlx1OTgwOFx1OTE2Mlx1NTZmM1x1NTNhOCJdLFsiOTA4MCIsIlx1OTAxN1x1NTQzOVx1NTc4Mlx1NWUyNVx1NjNhOFx1NmMzNFx1''@;'; put 'put ''NzA4YVx1Nzc2MVx1N2M4Ylx1N2ZlMFx1ODg3MFx1OTA0Mlx1OTE1NFx1OTMxMFx1OTMxOFx1OTY4Zlx1NzQ1ZVx1OWFjNFx1NWQwN1x1NWQ2OVx1NjU3MFx1NjdhMlx1OGRhOFx1OTZkYlx1NjM2ZVx1Njc0OVx1NjkxOVx1ODNjNVx1OTgxN1x1OTZjMFx1ODhmZVx1NmY4NFx1NjQ3YVx1NWJm''@;'; put 'put ''OFx1NGUxNlx1NzAyY1x1NzU1ZFx1NjYyZlx1NTFjNFx1NTIzNlx1NTJlMlx1NTlkM1x1NWY4MVx1NjAyN1x1NjIxMFx1NjUzZlx1NjU3NFx1NjYxZlx1NjY3NFx1NjhmMlx1NjgxNlx1NmI2M1x1NmUwNVx1NzI3Mlx1NzUxZlx1NzZkYlx1N2NiZVx1ODA1Nlx1NThmMFx1ODhmZFx1ODk3Zlx1''@;'; put 'put ''OGFhMFx1OGE5M1x1OGFjYlx1OTAxZFx1OTE5Mlx1OTc1Mlx1OTc1OVx1NjU4OVx1N2EwZVx1ODEwNlx1OTZiYlx1NWUyZFx1NjBkY1x1NjIxYVx1NjVhNVx1NjYxNFx1Njc5MFx1NzdmM1x1N2E0ZFx1N2M0ZFx1N2UzZVx1ODEwYVx1OGNhY1x1OGQ2NFx1OGRlMVx1OGU1Zlx1NzhhOVx1NTIw''@;'; put 'put ''N1x1NjJkOVx1NjNhNVx1NjQ0Mlx1NjI5OFx1OGEyZFx1N2E4M1x1N2JjMFx1OGFhY1x1OTZlYVx1N2Q3Nlx1ODIwY1x1ODc0OVx1NGVkOVx1NTE0OFx1NTM0M1x1NTM2MFx1NWJhM1x1NWMwMlx1NWMxNlx1NWRkZFx1NjIyNlx1NjI0N1x1NjRiMFx1NjgxM1x1NjgzNFx1NmNjOVx1NmQ0NVx1''@;'; put 'put ''NmQxN1x1NjdkM1x1NmY1Y1x1NzE0ZVx1NzE3ZFx1NjVjYlx1N2E3Zlx1N2JhZFx1N2RkYSJdLFsiOTE0MCIsIlx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4''@;'; put 'put ''NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1''@;'; put 'put ''OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1NjM4M1x1NjMzZlx1NjNiYiJdLFsiOTE4MCIsIlx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYx''@;'; put 'put ''NVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAwMVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZVx1ODFkM1x1ODUzNVx1OGQwOFx1''@;'; put 'put ''OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkx''@;'; put 'put ''YVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJmZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1''@;'; put 'put ''ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQy''@;'; put 'put ''Mlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMzOFx1NTFlN1x1ODZmOFx1NTNlYSJdLFsiOTI0MCIsIlx1NTNlOVx1NGY0Nlx1OTA1NFx1OGZiMFx1NTk2YVx1ODEzMVx1NWRmZFx1N2FlYVx1OGZiZlx1NjhkYVx1OGMzN1x1NzJmOFx1OWM0OFx1NmEzZFx1OGFiMFx1NGUzOVx1NTM1OFx1''@;'; put 'put ''NTYwNlx1NTc2Nlx1NjJjNVx1NjNhMlx1NjVlNlx1NmI0ZVx1NmRlMVx1NmU1Ylx1NzBhZFx1NzdlZFx1N2FlZlx1N2JhYVx1N2RiYlx1ODAzZFx1ODBjNlx1ODZjYlx1OGE5NVx1OTM1Ylx1NTZlM1x1NThjN1x1NWYzZVx1NjVhZFx1NjY5Nlx1NmE4MFx1NmJiNVx1NzUzN1x1OGFjN1x1NTAy''@;'; put 'put ''NFx1NzdlNVx1NTczMFx1NWYxYlx1NjA2NVx1NjY3YVx1NmM2MFx1NzVmNFx1N2ExYVx1N2Y2ZVx1ODFmNFx1ODcxOFx1OTA0NVx1OTliM1x1N2JjOVx1NzU1Y1x1N2FmOVx1N2I1MVx1ODRjNCJdLFsiOTI4MCIsIlx1OTAxMFx1NzllOVx1N2E5Mlx1ODMzNlx1NWFlMVx1Nzc0MFx1NGUyZFx1''@;'; put 'put ''NGVmMlx1NWI5OVx1NWZlMFx1NjJiZFx1NjYzY1x1NjdmMVx1NmNlOFx1ODY2Ylx1ODg3N1x1OGEzYlx1OTE0ZVx1OTJmM1x1OTlkMFx1NmExN1x1NzAyNlx1NzMyYVx1ODJlN1x1ODQ1N1x1OGNhZlx1NGUwMVx1NTE0Nlx1NTFjYlx1NTU4Ylx1NWJmNVx1NWUxNlx1NWUzM1x1NWU4MVx1NWYx''@;'; put 'put ''NFx1NWYzNVx1NWY2Ylx1NWZiNFx1NjFmMlx1NjMxMVx1NjZhMlx1NjcxZFx1NmY2ZVx1NzI1Mlx1NzUzYVx1NzczYVx1ODA3NFx1ODEzOVx1ODE3OFx1ODc3Nlx1OGFiZlx1OGFkY1x1OGQ4NVx1OGRmM1x1OTI5YVx1OTU3N1x1OTgwMlx1OWNlNVx1NTJjNVx1NjM1N1x1NzZmNFx1NjcxNVx1''@;'; put 'put ''NmM4OFx1NzNjZFx1OGNjM1x1OTNhZVx1OTY3M1x1NmQyNVx1NTg5Y1x1NjkwZVx1NjljY1x1OGZmZFx1OTM5YVx1NzVkYlx1OTAxYVx1NTg1YVx1NjgwMlx1NjNiNFx1NjlmYlx1NGY0M1x1NmYyY1x1NjdkOFx1OGZiYlx1ODUyNlx1N2RiNFx1OTM1NFx1NjkzZlx1NmY3MFx1NTc2YVx1NThm''@;'; put 'put ''N1x1NWIyY1x1N2QyY1x1NzIyYVx1NTQwYVx1OTFlM1x1OWRiNFx1NGVhZFx1NGY0ZVx1NTA1Y1x1NTA3NVx1NTI0M1x1OGM5ZVx1NTQ0OFx1NTgyNFx1NWI5YVx1NWUxZFx1NWU5NVx1NWVhZFx1NWVmN1x1NWYxZlx1NjA4Y1x1NjJiNVx1NjMzYVx1NjNkMFx1NjhhZlx1NmM0MFx1Nzg4N1x1''@;'; put 'put ''Nzk4ZVx1N2EwYlx1N2RlMFx1ODI0N1x1OGEwMlx1OGFlNlx1OGU0NFx1OTAxMyJdLFsiOTM0MCIsIlx1OTBiOFx1OTEyZFx1OTFkOFx1OWYwZVx1NmNlNVx1NjQ1OFx1NjRlMlx1NjU3NVx1NmVmNFx1NzY4NFx1N2IxYlx1OTA2OVx1OTNkMVx1NmViYVx1NTRmMlx1NWZiOVx1NjRhNFx1OGY0''@;'; put 'put ''ZFx1OGZlZFx1OTI0NFx1NTE3OFx1NTg2Ylx1NTkyOVx1NWM1NVx1NWU5N1x1NmRmYlx1N2U4Zlx1NzUxY1x1OGNiY1x1OGVlMlx1OTg1Ylx1NzBiOVx1NGYxZFx1NmJiZlx1NmZiMVx1NzUzMFx1OTZmYlx1NTE0ZVx1NTQxMFx1NTgzNVx1NTg1N1x1NTlhY1x1NWM2MFx1NWY5Mlx1NjU5N1x1''@;'; put 'put ''Njc1Y1x1NmUyMVx1NzY3Ylx1ODNkZlx1OGNlZFx1OTAxNFx1OTBmZFx1OTM0ZFx1NzgyNVx1NzgzYVx1NTJhYVx1NWVhNlx1NTcxZlx1NTk3NFx1NjAxMlx1NTAxMlx1NTE1YVx1NTFhYyJdLFsiOTM4MCIsIlx1NTFjZFx1NTIwMFx1NTUxMFx1NTg1NFx1NTg1OFx1NTk1N1x1NWI5NVx1NWNm''@;'; put 'put ''Nlx1NWQ4Ylx1NjBiY1x1NjI5NVx1NjQyZFx1Njc3MVx1Njg0M1x1NjhiY1x1NjhkZlx1NzZkN1x1NmRkOFx1NmU2Zlx1NmQ5Ylx1NzA2Zlx1NzFjOFx1NWY1M1x1NzVkOFx1Nzk3N1x1N2I0OVx1N2I1NFx1N2I1Mlx1N2NkNlx1N2Q3MVx1NTIzMFx1ODQ2M1x1ODU2OVx1ODVlNFx1OGEwZVx1''@;'; put 'put ''OGIwNFx1OGM0Nlx1OGUwZlx1OTAwM1x1OTAwZlx1OTQxOVx1OTY3Nlx1OTgyZFx1OWEzMFx1OTVkOFx1NTBjZFx1NTJkNVx1NTQwY1x1NTgwMlx1NWMwZVx1NjFhN1x1NjQ5ZVx1NmQxZVx1NzdiM1x1N2FlNVx1ODBmNFx1ODQwNFx1OTA1M1x1OTI4NVx1NWNlMFx1OWQwN1x1NTMzZlx1NWY5''@;'; put 'put ''N1x1NWZiM1x1NmQ5Y1x1NzI3OVx1Nzc2M1x1NzliZlx1N2JlNFx1NmJkMlx1NzJlY1x1OGFhZFx1NjgwM1x1NmE2MVx1NTFmOFx1N2E4MVx1NjkzNFx1NWM0YVx1OWNmNlx1ODJlYlx1NWJjNVx1OTE0OVx1NzAxZVx1NTY3OFx1NWM2Zlx1NjBjN1x1NjU2Nlx1NmM4Y1x1OGM1YVx1OTA0MVx1''@;'; put 'put ''OTgxM1x1NTQ1MVx1NjZjN1x1OTIwZFx1NTk0OFx1OTBhM1x1NTE4NVx1NGU0ZFx1NTFlYVx1ODU5OVx1OGIwZVx1NzA1OFx1NjM3YVx1OTM0Ylx1Njk2Mlx1OTliNFx1N2UwNFx1NzU3N1x1NTM1N1x1Njk2MFx1OGVkZlx1OTZlM1x1NmM1ZFx1NGU4Y1x1NWMzY1x1NWYxMFx1OGZlOVx1NTMw''@;'; put 'put ''Mlx1OGNkMVx1ODA4OVx1ODY3OVx1NWVmZlx1NjVlNVx1NGU3M1x1NTE2NSJdLFsiOTQ0MCIsIlx1NTk4Mlx1NWMzZlx1OTdlZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1''@;'; put 'put ''NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJh''@;'; put 'put ''ZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZjM1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYyOVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NSJdLFsiOTQ4MCIsIlx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1''@;'; put 'put ''ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIzNlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4''@;'; put 'put ''N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4Y1x1NzY3YVx1OTE5N1x1OWFlYVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1''@;'; put 'put ''NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1NzU1NFx1N2U0MVx1ODIyY1x1ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1''@;'; put 'put ''MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5MFx1NmJkNFx1NmNjY1x1NzViMlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1''@;'; put 'put ''NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZSJdLFsiOTU0MCIsIlx1OWYzYlx1NjdjYVx1N2ExN1x1NTMzOVx1NzU4Ylx1OWFlZFx1NWY2Nlx1ODE5ZFx1ODNmMVx1ODA5OFx1NWYzY1x1NWZjNVx1NzU2Mlx1N2I0Nlx1OTAzY1x1Njg2N1x1NTllYlx1NWE5Ylx1N2Qx''@;'; put 'put ''MFx1NzY3ZVx1OGIyY1x1NGZmNVx1NWY2YVx1NmExOVx1NmMzN1x1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGE1NVx1OGM3OVx1NWVkZlx1NjNjZlx1NzVjNVx1NzlkMlx1ODJkN1x1OTMyOFx1OTJmMlx1ODQ5Y1x1ODZlZFx1OWMyZFx1NTRjMVx1NWY2Y1x1NjU4Y1x1NmQ1Y1x1NzAxNVx1''@;'; put 'put ''OGNhN1x1OGNkM1x1OTgzYlx1NjU0Zlx1NzRmNlx1NGUwZFx1NGVkOFx1NTdlMFx1NTkyYlx1NWE2Nlx1NWJjY1x1NTFhOFx1NWUwM1x1NWU5Y1x1NjAxNlx1NjI3Nlx1NjU3NyJdLFsiOTU4MCIsIlx1NjVhN1x1NjY2ZVx1NmQ2ZVx1NzIzNlx1N2IyNlx1ODE1MFx1ODE5YVx1ODI5OVx1OGI1''@;'; put 'put ''Y1x1OGNhMFx1OGNlNlx1OGQ3NFx1OTYxY1x1OTY0NFx1NGZhZVx1NjRhYlx1NmI2Nlx1ODIxZVx1ODQ2MVx1ODU2YVx1OTBlOFx1NWMwMVx1Njk1M1x1OThhOFx1ODQ3YVx1ODU1N1x1NGYwZlx1NTI2Zlx1NWZhOVx1NWU0NVx1NjcwZFx1Nzk4Zlx1ODE3OVx1ODkwN1x1ODk4Nlx1NmRmNVx1''@;'; put 'put ''NWYxN1x1NjI1NVx1NmNiOFx1NGVjZlx1NzI2OVx1OWI5Mlx1NTIwNlx1NTQzYlx1NTY3NFx1NThiM1x1NjFhNFx1NjI2ZVx1NzExYVx1NTk2ZVx1N2M4OVx1N2NkZVx1N2QxYlx1OTZmMFx1NjU4N1x1ODA1ZVx1NGUxOVx1NGY3NVx1NTE3NVx1NTg0MFx1NWU2M1x1NWU3M1x1NWYwYVx1Njdj''@;'; put 'put ''NFx1NGUyNlx1ODUzZFx1OTU4OVx1OTY1Ylx1N2M3M1x1OTgwMVx1NTBmYlx1NThjMVx1NzY1Nlx1NzhhN1x1NTIyNVx1NzdhNVx1ODUxMVx1N2I4Nlx1NTA0Zlx1NTkwOVx1NzI0N1x1N2JjN1x1N2RlOFx1OGZiYVx1OGZkNFx1OTA0ZFx1NGZiZlx1NTJjOVx1NWEyOVx1NWYwMVx1OTdhZFx1''@;'; put 'put ''NGZkZFx1ODIxN1x1OTJlYVx1NTcwM1x1NjM1NVx1NmI2OVx1NzUyYlx1ODhkY1x1OGYxNFx1N2E0Mlx1NTJkZlx1NTg5M1x1NjE1NVx1NjIwYVx1NjZhZVx1NmJjZFx1N2MzZlx1ODNlOVx1NTAyM1x1NGZmOFx1NTMwNVx1NTQ0Nlx1NTgzMVx1NTk0OVx1NWI5ZFx1NWNmMFx1NWNlZlx1NWQy''@;'; put 'put ''OVx1NWU5Nlx1NjJiMVx1NjM2N1x1NjUzZVx1NjViOVx1NjcwYiJdLFsiOTY0MCIsIlx1NmNkNVx1NmNlMVx1NzBmOVx1NzgzMlx1N2UyYlx1ODBkZVx1ODJiM1x1ODQwY1x1ODRlY1x1ODcwMlx1ODkxMlx1OGEyYVx1OGM0YVx1OTBhNlx1OTJkMlx1OThmZFx1OWNmM1x1OWQ2Y1x1NGU0Zlx1''@;'; put 'put ''NGVhMVx1NTA4ZFx1NTI1Nlx1NTc0YVx1NTlhOFx1NWUzZFx1NWZkOFx1NWZkOVx1NjIzZlx1NjZiNFx1NjcxYlx1NjdkMFx1NjhkMlx1NTE5Mlx1N2QyMVx1ODBhYVx1ODFhOFx1OGIwMFx1OGM4Y1x1OGNiZlx1OTI3ZVx1OTYzMlx1NTQyMFx1OTgyY1x1NTMxN1x1NTBkNVx1NTM1Y1x1NThh''@;'; put 'put ''OFx1NjRiMlx1NjczNFx1NzI2N1x1Nzc2Nlx1N2E0Nlx1OTFlNlx1NTJjM1x1NmNhMVx1NmI4Nlx1NTgwMFx1NWU0Y1x1NTk1NFx1NjcyY1x1N2ZmYlx1NTFlMVx1NzZjNiJdLFsiOTY4MCIsIlx1NjQ2OVx1NzhlOFx1OWI1NFx1OWViYlx1NTdjYlx1NTliOVx1NjYyN1x1Njc5YVx1NmJjZVx1''@;'; put 'put ''NTRlOVx1NjlkOVx1NWU1NVx1ODE5Y1x1Njc5NVx1OWJhYVx1NjdmZVx1OWM1Mlx1Njg1ZFx1NGVhNlx1NGZlM1x1NTNjOFx1NjJiOVx1NjcyYlx1NmNhYlx1OGZjNFx1NGZhZFx1N2U2ZFx1OWViZlx1NGUwN1x1NjE2Mlx1NmU4MFx1NmYyYlx1ODUxM1x1NTQ3M1x1NjcyYVx1OWI0NVx1NWRm''@;'; put 'put ''M1x1N2I5NVx1NWNhY1x1NWJjNlx1ODcxY1x1NmU0YVx1ODRkMVx1N2ExNFx1ODEwOFx1NTk5OVx1N2M4ZFx1NmMxMVx1NzcyMFx1NTJkOVx1NTkyMlx1NzEyMVx1NzI1Zlx1NzdkYlx1OTcyN1x1OWQ2MVx1NjkwYlx1NWE3Zlx1NWExOFx1NTFhNVx1NTQwZFx1NTQ3ZFx1NjYwZVx1NzZkZlx1''@;'; put 'put ''OGZmN1x1OTI5OFx1OWNmNFx1NTllYVx1NzI1ZFx1NmVjNVx1NTE0ZFx1NjhjOVx1N2RiZlx1N2RlY1x1OTc2Mlx1OWViYVx1NjQ3OFx1NmEyMVx1ODMwMlx1NTk4NFx1NWI1Zlx1NmJkYlx1NzMxYlx1NzZmMlx1N2RiMlx1ODAxN1x1ODQ5OVx1NTEzMlx1NjcyOFx1OWVkOVx1NzZlZVx1Njc2''@;'; put 'put ''Mlx1NTJmZlx1OTkwNVx1NWMyNFx1NjIzYlx1N2M3ZVx1OGNiMFx1NTU0Zlx1NjBiNlx1N2QwYlx1OTU4MFx1NTMwMVx1NGU1Zlx1NTFiNlx1NTkxY1x1NzIzYVx1ODAzNlx1OTFjZVx1NWYyNVx1NzdlMlx1NTM4NFx1NWY3OVx1N2QwNFx1ODVhY1x1OGEzM1x1OGU4ZFx1OTc1Nlx1NjdmM1x1''@;'; put 'put ''ODVhZVx1OTQ1M1x1NjEwOVx1NjEwOFx1NmNiOVx1NzY1MiJdLFsiOTc0MCIsIlx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1''@;'; put 'put ''MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBmNVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1''@;'; put 'put ''NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMiJdLFsiOTc4MCIsIlx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNi''@;'; put 'put ''MVx1OTgzY1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4M1x1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1''@;'; put 'put ''NWY4Ylx1NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4''@;'; put 'put ''MVx1NmRiY1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2ExY1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1''@;'; put 'put ''NmQ5OVx1N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5''@;'; put 'put ''MFx1NmYyM1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2ZiJdLFsiOTg0MCIsIlx1ODRlZVx1OTAyM1x1OTMyY1x1NTQ0Mlx1OWI2Zlx1NmFkM1x1NzA4OVx1OGNjMlx1OGRlZlx1OTczMlx1NTJiNFx1NWE0MVx1NWVjYVx1NWYwNFx1NjcxN1x1Njk3Y1x1Njk5NFx1NmQ2YVx1NmYwZlx1NzI2Mlx1''@;'; put 'put ''NzJmY1x1N2JlZFx1ODAwMVx1ODA3ZVx1ODc0Ylx1OTBjZVx1NTE2ZFx1OWU5M1x1Nzk4NFx1ODA4Ylx1OTMzMlx1OGFkNlx1NTAyZFx1NTQ4Y1x1OGE3MVx1NmI2YVx1OGNjNFx1ODEwN1x1NjBkMVx1NjdhMFx1OWRmMlx1NGU5OVx1NGU5OFx1OWMxMFx1OGE2Ylx1ODVjMVx1ODU2OFx1Njkw''@;'; put 'put ''MFx1NmU3ZVx1Nzg5N1x1ODE1NSJdLFsiOTg5ZiIsIlx1NWYwY1x1NGUxMFx1NGUxNVx1NGUyYVx1NGUzMVx1NGUzNlx1NGUzY1x1NGUzZlx1NGU0Mlx1NGU1Nlx1NGU1OFx1NGU4Mlx1NGU4NVx1OGM2Ylx1NGU4YVx1ODIxMlx1NWYwZFx1NGU4ZVx1NGU5ZVx1NGU5Zlx1NGVhMFx1NGVhMlx1''@;'; put 'put ''NGViMFx1NGViM1x1NGViNlx1NGVjZVx1NGVjZFx1NGVjNFx1NGVjNlx1NGVjMlx1NGVkN1x1NGVkZVx1NGVlZFx1NGVkZlx1NGVmN1x1NGYwOVx1NGY1YVx1NGYzMFx1NGY1Ylx1NGY1ZFx1NGY1N1x1NGY0N1x1NGY3Nlx1NGY4OFx1NGY4Zlx1NGY5OFx1NGY3Ylx1NGY2OVx1NGY3MFx1NGY5''@;'; put 'put ''MVx1NGY2Zlx1NGY4Nlx1NGY5Nlx1NTExOFx1NGZkNFx1NGZkZlx1NGZjZVx1NGZkOFx1NGZkYlx1NGZkMVx1NGZkYVx1NGZkMFx1NGZlNFx1NGZlNVx1NTAxYVx1NTAyOFx1NTAxNFx1NTAyYVx1NTAyNVx1NTAwNVx1NGYxY1x1NGZmNlx1NTAyMVx1NTAyOVx1NTAyY1x1NGZmZVx1NGZlZlx1''@;'; put 'put ''NTAxMVx1NTAwNlx1NTA0M1x1NTA0N1x1NjcwM1x1NTA1NVx1NTA1MFx1NTA0OFx1NTA1YVx1NTA1Nlx1NTA2Y1x1NTA3OFx1NTA4MFx1NTA5YVx1NTA4NVx1NTBiNFx1NTBiMiJdLFsiOTk0MCIsIlx1NTBjOVx1NTBjYVx1NTBiM1x1NTBjMlx1NTBkNlx1NTBkZVx1NTBlNVx1NTBlZFx1NTBl''@;'; put 'put ''M1x1NTBlZVx1NTBmOVx1NTBmNVx1NTEwOVx1NTEwMVx1NTEwMlx1NTExNlx1NTExNVx1NTExNFx1NTExYVx1NTEyMVx1NTEzYVx1NTEzN1x1NTEzY1x1NTEzYlx1NTEzZlx1NTE0MFx1NTE1Mlx1NTE0Y1x1NTE1NFx1NTE2Mlx1N2FmOFx1NTE2OVx1NTE2YVx1NTE2ZVx1NTE4MFx1NTE4Mlx1''@;'; put 'put ''NTZkOFx1NTE4Y1x1NTE4OVx1NTE4Zlx1NTE5MVx1NTE5M1x1NTE5NVx1NTE5Nlx1NTFhNFx1NTFhNlx1NTFhMlx1NTFhOVx1NTFhYVx1NTFhYlx1NTFiM1x1NTFiMVx1NTFiMlx1NTFiMFx1NTFiNVx1NTFiZFx1NTFjNVx1NTFjOVx1NTFkYlx1NTFlMFx1ODY1NVx1NTFlOVx1NTFlZCJdLFsi''@;'; put 'put ''OTk4MCIsIlx1NTFmMFx1NTFmNVx1NTFmZVx1NTIwNFx1NTIwYlx1NTIxNFx1NTIwZVx1NTIyN1x1NTIyYVx1NTIyZVx1NTIzM1x1NTIzOVx1NTI0Zlx1NTI0NFx1NTI0Ylx1NTI0Y1x1NTI1ZVx1NTI1NFx1NTI2YVx1NTI3NFx1NTI2OVx1NTI3M1x1NTI3Zlx1NTI3ZFx1NTI4ZFx1NTI5NFx1''@;'; put 'put ''NTI5Mlx1NTI3MVx1NTI4OFx1NTI5MVx1OGZhOFx1OGZhN1x1NTJhY1x1NTJhZFx1NTJiY1x1NTJiNVx1NTJjMVx1NTJjZFx1NTJkN1x1NTJkZVx1NTJlM1x1NTJlNlx1OThlZFx1NTJlMFx1NTJmM1x1NTJmNVx1NTJmOFx1NTJmOVx1NTMwNlx1NTMwOFx1NzUzOFx1NTMwZFx1NTMxMFx1NTMw''@;'; put 'put ''Zlx1NTMxNVx1NTMxYVx1NTMyM1x1NTMyZlx1NTMzMVx1NTMzM1x1NTMzOFx1NTM0MFx1NTM0Nlx1NTM0NVx1NGUxN1x1NTM0OVx1NTM0ZFx1NTFkNlx1NTM1ZVx1NTM2OVx1NTM2ZVx1NTkxOFx1NTM3Ylx1NTM3N1x1NTM4Mlx1NTM5Nlx1NTNhMFx1NTNhNlx1NTNhNVx1NTNhZVx1NTNiMFx1''@;'; put 'put ''NTNiNlx1NTNjM1x1N2MxMlx1OTZkOVx1NTNkZlx1NjZmY1x1NzFlZVx1NTNlZVx1NTNlOFx1NTNlZFx1NTNmYVx1NTQwMVx1NTQzZFx1NTQ0MFx1NTQyY1x1NTQyZFx1NTQzY1x1NTQyZVx1NTQzNlx1NTQyOVx1NTQxZFx1NTQ0ZVx1NTQ4Zlx1NTQ3NVx1NTQ4ZVx1NTQ1Zlx1NTQ3MVx1NTQ3''@;'; put 'put ''N1x1NTQ3MFx1NTQ5Mlx1NTQ3Ylx1NTQ4MFx1NTQ3Nlx1NTQ4NFx1NTQ5MFx1NTQ4Nlx1NTRjN1x1NTRhMlx1NTRiOFx1NTRhNVx1NTRhY1x1NTRjNFx1NTRjOFx1NTRhOCJdLFsiOWE0MCIsIlx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1''@;'; put 'put ''NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1NTRmYVx1NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVh''@;'; put 'put ''ZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4N1x1NTVhOFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOCJdLFsiOWE4''@;'; put 'put ''MCIsIlx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1NTY2YVx1NTY4Nlx1NTY4MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZm''@;'; put 'put ''OVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOVx1NTcwOFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1''@;'; put 'put ''NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThh''@;'; put 'put ''Ylx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThhZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1''@;'; put 'put ''NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OSJdLFsiOWI0MCIsIlx1NTk3OFx1NTk4MVx1NTk5ZFx1NGY1ZVx1NGZhYlx1NTlhM1x1NTliMlx1NTljNlx1NTllOFx1NTlk''@;'; put 'put ''Y1x1NTk4ZFx1NTlkOVx1NTlkYVx1NWEyNVx1NWExZlx1NWExMVx1NWExY1x1NWEwOVx1NWExYVx1NWE0MFx1NWE2Y1x1NWE0OVx1NWEzNVx1NWEzNlx1NWE2Mlx1NWE2YVx1NWE5YVx1NWFiY1x1NWFiZVx1NWFjYlx1NWFjMlx1NWFiZFx1NWFlM1x1NWFkN1x1NWFlNlx1NWFlOVx1NWFkNlx1''@;'; put 'put ''NWFmYVx1NWFmYlx1NWIwY1x1NWIwYlx1NWIxNlx1NWIzMlx1NWFkMFx1NWIyYVx1NWIzNlx1NWIzZVx1NWI0M1x1NWI0NVx1NWI0MFx1NWI1MVx1NWI1NVx1NWI1YVx1NWI1Ylx1NWI2NVx1NWI2OVx1NWI3MFx1NWI3M1x1NWI3NVx1NWI3OFx1NjU4OFx1NWI3YVx1NWI4MCJdLFsiOWI4MCIs''@;'; put 'put ''Ilx1NWI4M1x1NWJhNlx1NWJiOFx1NWJjM1x1NWJjN1x1NWJjOVx1NWJkNFx1NWJkMFx1NWJlNFx1NWJlNlx1NWJlMlx1NWJkZVx1NWJlNVx1NWJlYlx1NWJmMFx1NWJmNlx1NWJmM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwZFx1NWMxM1x1NWMyMFx1NWMyMlx1NWMyOFx1NWMzOFx1NWMzOVx1''@;'; put 'put ''NWM0MVx1NWM0Nlx1NWM0ZVx1NWM1M1x1NWM1MFx1NWM0Zlx1NWI3MVx1NWM2Y1x1NWM2ZVx1NGU2Mlx1NWM3Nlx1NWM3OVx1NWM4Y1x1NWM5MVx1NWM5NFx1NTk5Ylx1NWNhYlx1NWNiYlx1NWNiNlx1NWNiY1x1NWNiN1x1NWNjNVx1NWNiZVx1NWNjN1x1NWNkOVx1NWNlOVx1NWNmZFx1NWNm''@;'; put 'put ''YVx1NWNlZFx1NWQ4Y1x1NWNlYVx1NWQwYlx1NWQxNVx1NWQxN1x1NWQ1Y1x1NWQxZlx1NWQxYlx1NWQxMVx1NWQxNFx1NWQyMlx1NWQxYVx1NWQxOVx1NWQxOFx1NWQ0Y1x1NWQ1Mlx1NWQ0ZVx1NWQ0Ylx1NWQ2Y1x1NWQ3M1x1NWQ3Nlx1NWQ4N1x1NWQ4NFx1NWQ4Mlx1NWRhMlx1NWQ5ZFx1''@;'; put 'put ''NWRhY1x1NWRhZVx1NWRiZFx1NWQ5MFx1NWRiN1x1NWRiY1x1NWRjOVx1NWRjZFx1NWRkM1x1NWRkMlx1NWRkNlx1NWRkYlx1NWRlYlx1NWRmMlx1NWRmNVx1NWUwYlx1NWUxYVx1NWUxOVx1NWUxMVx1NWUxYlx1NWUzNlx1NWUzN1x1NWU0NFx1NWU0M1x1NWU0MFx1NWU0ZVx1NWU1N1x1NWU1''@;'; put 'put ''NFx1NWU1Zlx1NWU2Mlx1NWU2NFx1NWU0N1x1NWU3NVx1NWU3Nlx1NWU3YVx1OWViY1x1NWU3Zlx1NWVhMFx1NWVjMVx1NWVjMlx1NWVjOFx1NWVkMFx1NWVjZiJdLFsiOWM0MCIsIlx1NWVkNlx1NWVlM1x1NWVkZFx1NWVkYVx1NWVkYlx1NWVlMlx1NWVlMVx1NWVlOFx1NWVlOVx1NWVlY1x1''@;'; put 'put ''NWVmMVx1NWVmM1x1NWVmMFx1NWVmNFx1NWVmOFx1NWVmZVx1NWYwM1x1NWYwOVx1NWY1ZFx1NWY1Y1x1NWYwYlx1NWYxMVx1NWYxNlx1NWYyOVx1NWYyZFx1NWYzOFx1NWY0MVx1NWY0OFx1NWY0Y1x1NWY0ZVx1NWYyZlx1NWY1MVx1NWY1Nlx1NWY1N1x1NWY1OVx1NWY2MVx1NWY2ZFx1NWY3''@;'; put 'put ''M1x1NWY3N1x1NWY4M1x1NWY4Mlx1NWY3Zlx1NWY4YVx1NWY4OFx1NWY5MVx1NWY4N1x1NWY5ZVx1NWY5OVx1NWY5OFx1NWZhMFx1NWZhOFx1NWZhZFx1NWZiY1x1NWZkNlx1NWZmYlx1NWZlNFx1NWZmOFx1NWZmMVx1NWZkZFx1NjBiM1x1NWZmZlx1NjAyMVx1NjA2MCJdLFsiOWM4MCIsIlx1''@;'; put 'put ''NjAxOVx1NjAxMFx1NjAyOVx1NjAwZVx1NjAzMVx1NjAxYlx1NjAxNVx1NjAyYlx1NjAyNlx1NjAwZlx1NjAzYVx1NjA1YVx1NjA0MVx1NjA2YVx1NjA3N1x1NjA1Zlx1NjA0YVx1NjA0Nlx1NjA0ZFx1NjA2M1x1NjA0M1x1NjA2NFx1NjA0Mlx1NjA2Y1x1NjA2Ylx1NjA1OVx1NjA4MVx1NjA4''@;'; put 'put ''ZFx1NjBlN1x1NjA4M1x1NjA5YVx1NjA4NFx1NjA5Ylx1NjA5Nlx1NjA5N1x1NjA5Mlx1NjBhN1x1NjA4Ylx1NjBlMVx1NjBiOFx1NjBlMFx1NjBkM1x1NjBiNFx1NWZmMFx1NjBiZFx1NjBjNlx1NjBiNVx1NjBkOFx1NjE0ZFx1NjExNVx1NjEwNlx1NjBmNlx1NjBmN1x1NjEwMFx1NjBmNFx1''@;'; put 'put ''NjBmYVx1NjEwM1x1NjEyMVx1NjBmYlx1NjBmMVx1NjEwZFx1NjEwZVx1NjE0N1x1NjEzZVx1NjEyOFx1NjEyN1x1NjE0YVx1NjEzZlx1NjEzY1x1NjEyY1x1NjEzNFx1NjEzZFx1NjE0Mlx1NjE0NFx1NjE3M1x1NjE3N1x1NjE1OFx1NjE1OVx1NjE1YVx1NjE2Ylx1NjE3NFx1NjE2Zlx1NjE2''@;'; put 'put ''NVx1NjE3MVx1NjE1Zlx1NjE1ZFx1NjE1M1x1NjE3NVx1NjE5OVx1NjE5Nlx1NjE4N1x1NjFhY1x1NjE5NFx1NjE5YVx1NjE4YVx1NjE5MVx1NjFhYlx1NjFhZVx1NjFjY1x1NjFjYVx1NjFjOVx1NjFmN1x1NjFjOFx1NjFjM1x1NjFjNlx1NjFiYVx1NjFjYlx1N2Y3OVx1NjFjZFx1NjFlNlx1''@;'; put 'put ''NjFlM1x1NjFmNlx1NjFmYVx1NjFmNFx1NjFmZlx1NjFmZFx1NjFmY1x1NjFmZVx1NjIwMFx1NjIwOFx1NjIwOVx1NjIwZFx1NjIwY1x1NjIxNFx1NjIxYiJdLFsiOWQ0MCIsIlx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIzM1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2''@;'; put 'put ''M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1''@;'; put 'put ''NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNiNVx1NjM2YiJdLFsiOWQ4MCIsIlx1NjM2''@;'; put 'put ''OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1NjQ5NVx1NjQ5M1x1NjRhNVx1''@;'; put 'put ''NjRhOVx1NjQ4OFx1NjRiY1x1NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRmZFx1NjUxOFx1NjUxY1x1NjUw''@;'; put 'put ''NVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1NjViN1x1NjVjM1x1NjVjNlx1''@;'; put 'put ''NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2NFx1NjY2N1x1NjY2OFx1NjY1''@;'; put 'put ''Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZjOVx1NjZiZVx1NjZiYyJdLFsiOWU0MCIsIlx1NjZjNFx1NjZiOFx1NjZkNlx1NjZkYVx1NjZlMFx1NjYzZlx1NjZlNlx1NjZlOVx1NjZmMFx1NjZmNVx1NjZmN1x1''@;'; put 'put ''NjcwZlx1NjcxNlx1NjcxZVx1NjcyNlx1NjcyN1x1OTczOFx1NjcyZVx1NjczZlx1NjczNlx1Njc0MVx1NjczOFx1NjczN1x1Njc0Nlx1Njc1ZVx1Njc2MFx1Njc1OVx1Njc2M1x1Njc2NFx1Njc4OVx1Njc3MFx1NjdhOVx1Njc3Y1x1Njc2YVx1Njc4Y1x1Njc4Ylx1NjdhNlx1NjdhMVx1Njc4''@;'; put 'put ''NVx1NjdiN1x1NjdlZlx1NjdiNFx1NjdlY1x1NjdiM1x1NjdlOVx1NjdiOFx1NjdlNFx1NjdkZVx1NjdkZFx1NjdlMlx1NjdlZVx1NjdiOVx1NjdjZVx1NjdjNlx1NjdlN1x1NmE5Y1x1NjgxZVx1Njg0Nlx1NjgyOVx1Njg0MFx1Njg0ZFx1NjgzMlx1Njg0ZSJdLFsiOWU4MCIsIlx1NjhiM1x1''@;'; put 'put ''NjgyYlx1Njg1OVx1Njg2M1x1Njg3N1x1Njg3Zlx1Njg5Zlx1Njg4Zlx1NjhhZFx1Njg5NFx1Njg5ZFx1Njg5Ylx1Njg4M1x1NmFhZVx1NjhiOVx1Njg3NFx1NjhiNVx1NjhhMFx1NjhiYVx1NjkwZlx1Njg4ZFx1Njg3ZVx1NjkwMVx1NjhjYVx1NjkwOFx1NjhkOFx1NjkyMlx1NjkyNlx1Njhl''@;'; put 'put ''MVx1NjkwY1x1NjhjZFx1NjhkNFx1NjhlN1x1NjhkNVx1NjkzNlx1NjkxMlx1NjkwNFx1NjhkN1x1NjhlM1x1NjkyNVx1NjhmOVx1NjhlMFx1NjhlZlx1NjkyOFx1NjkyYVx1NjkxYVx1NjkyM1x1NjkyMVx1NjhjNlx1Njk3OVx1Njk3N1x1Njk1Y1x1Njk3OFx1Njk2Ylx1Njk1NFx1Njk3ZVx1''@;'; put 'put ''Njk2ZVx1NjkzOVx1Njk3NFx1NjkzZFx1Njk1OVx1NjkzMFx1Njk2MVx1Njk1ZVx1Njk1ZFx1Njk4MVx1Njk2YVx1NjliMlx1NjlhZVx1NjlkMFx1NjliZlx1NjljMVx1NjlkM1x1NjliZVx1NjljZVx1NWJlOFx1NjljYVx1NjlkZFx1NjliYlx1NjljM1x1NjlhN1x1NmEyZVx1Njk5MVx1Njlh''@;'; put 'put ''MFx1Njk5Y1x1Njk5NVx1NjliNFx1NjlkZVx1NjllOFx1NmEwMlx1NmExYlx1NjlmZlx1NmIwYVx1NjlmOVx1NjlmMlx1NjllN1x1NmEwNVx1NjliMVx1NmExZVx1NjllZFx1NmExNFx1NjllYlx1NmEwYVx1NmExMlx1NmFjMVx1NmEyM1x1NmExM1x1NmE0NFx1NmEwY1x1NmE3Mlx1NmEzNlx1''@;'; put 'put ''NmE3OFx1NmE0N1x1NmE2Mlx1NmE1OVx1NmE2Nlx1NmE0OFx1NmEzOFx1NmEyMlx1NmE5MFx1NmE4ZFx1NmFhMFx1NmE4NFx1NmFhMlx1NmFhMyJdLFsiOWY0MCIsIlx1NmE5N1x1ODYxN1x1NmFiYlx1NmFjM1x1NmFjMlx1NmFiOFx1NmFiM1x1NmFhY1x1NmFkZVx1NmFkMVx1NmFkZlx1NmFh''@;'; put 'put ''YVx1NmFkYVx1NmFlYVx1NmFmYlx1NmIwNVx1ODYxNlx1NmFmYVx1NmIxMlx1NmIxNlx1OWIzMVx1NmIxZlx1NmIzOFx1NmIzN1x1NzZkY1x1NmIzOVx1OThlZVx1NmI0N1x1NmI0M1x1NmI0OVx1NmI1MFx1NmI1OVx1NmI1NFx1NmI1Ylx1NmI1Zlx1NmI2MVx1NmI3OFx1NmI3OVx1NmI3Zlx1''@;'; put 'put ''NmI4MFx1NmI4NFx1NmI4M1x1NmI4ZFx1NmI5OFx1NmI5NVx1NmI5ZVx1NmJhNFx1NmJhYVx1NmJhYlx1NmJhZlx1NmJiMlx1NmJiMVx1NmJiM1x1NmJiN1x1NmJiY1x1NmJjNlx1NmJjYlx1NmJkM1x1NmJkZlx1NmJlY1x1NmJlYlx1NmJmM1x1NmJlZiJdLFsiOWY4MCIsIlx1OWViZVx1NmMw''@;'; put 'put ''OFx1NmMxM1x1NmMxNFx1NmMxYlx1NmMyNFx1NmMyM1x1NmM1ZVx1NmM1NVx1NmM2Mlx1NmM2YVx1NmM4Mlx1NmM4ZFx1NmM5YVx1NmM4MVx1NmM5Ylx1NmM3ZVx1NmM2OFx1NmM3M1x1NmM5Mlx1NmM5MFx1NmNjNFx1NmNmMVx1NmNkM1x1NmNiZFx1NmNkN1x1NmNjNVx1NmNkZFx1NmNhZVx1''@;'; put 'put ''NmNiMVx1NmNiZVx1NmNiYVx1NmNkYlx1NmNlZlx1NmNkOVx1NmNlYVx1NmQxZlx1ODg0ZFx1NmQzNlx1NmQyYlx1NmQzZFx1NmQzOFx1NmQxOVx1NmQzNVx1NmQzM1x1NmQxMlx1NmQwY1x1NmQ2M1x1NmQ5M1x1NmQ2NFx1NmQ1YVx1NmQ3OVx1NmQ1OVx1NmQ4ZVx1NmQ5NVx1NmZlNFx1NmQ4''@;'; put 'put ''NVx1NmRmOVx1NmUxNVx1NmUwYVx1NmRiNVx1NmRjN1x1NmRlNlx1NmRiOFx1NmRjNlx1NmRlY1x1NmRkZVx1NmRjY1x1NmRlOFx1NmRkMlx1NmRjNVx1NmRmYVx1NmRkOVx1NmRlNFx1NmRkNVx1NmRlYVx1NmRlZVx1NmUyZFx1NmU2ZVx1NmUyZVx1NmUxOVx1NmU3Mlx1NmU1Zlx1NmUzZVx1''@;'; put 'put ''NmUyM1x1NmU2Ylx1NmUyYlx1NmU3Nlx1NmU0ZFx1NmUxZlx1NmU0M1x1NmUzYVx1NmU0ZVx1NmUyNFx1NmVmZlx1NmUxZFx1NmUzOFx1NmU4Mlx1NmVhYVx1NmU5OFx1NmVjOVx1NmViN1x1NmVkM1x1NmViZFx1NmVhZlx1NmVjNFx1NmViMlx1NmVkNFx1NmVkNVx1NmU4Zlx1NmVhNVx1NmVj''@;'; put 'put ''Mlx1NmU5Zlx1NmY0MVx1NmYxMVx1NzA0Y1x1NmVlY1x1NmVmOFx1NmVmZVx1NmYzZlx1NmVmMlx1NmYzMVx1NmVlZlx1NmYzMlx1NmVjYyJdLFsiZTA0MCIsIlx1NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1''@;'; put 'put ''NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZkNVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAw''@;'; put 'put ''Zlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZCJdLFsiZTA4MCIsIlx1NzBkOVx1NzEwOVx1''@;'; put 'put ''NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFhY1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFm''@;'; put 'put ''NVx1NzFmY1x1NzFmOVx1NzFmZlx1NzIwZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1''@;'; put 'put ''NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMxNlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2''@;'; put 'put ''YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1''@;'; put 'put ''NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMSJdLFsiZTE0MCIsIlx1NzRlMFx1NzRlM1x1NzRlN1x1NzRlOVx1NzRlZVx1NzRmMlx1NzRmMFx1NzRmMVx1NzRmOFx1NzRmN1x1NzUwNFx1NzUwM1x1NzUw''@;'; put 'put ''NVx1NzUwY1x1NzUwZVx1NzUwZFx1NzUxNVx1NzUxM1x1NzUxZVx1NzUyNlx1NzUyY1x1NzUzY1x1NzU0NFx1NzU0ZFx1NzU0YVx1NzU0OVx1NzU1Ylx1NzU0Nlx1NzU1YVx1NzU2OVx1NzU2NFx1NzU2N1x1NzU2Ylx1NzU2ZFx1NzU3OFx1NzU3Nlx1NzU4Nlx1NzU4N1x1NzU3NFx1NzU4YVx1''@;'; put 'put ''NzU4OVx1NzU4Mlx1NzU5NFx1NzU5YVx1NzU5ZFx1NzVhNVx1NzVhM1x1NzVjMlx1NzViM1x1NzVjM1x1NzViNVx1NzViZFx1NzViOFx1NzViY1x1NzViMVx1NzVjZFx1NzVjYVx1NzVkMlx1NzVkOVx1NzVlM1x1NzVkZVx1NzVmZVx1NzVmZiJdLFsiZTE4MCIsIlx1NzVmY1x1NzYwMVx1NzVm''@;'; put 'put ''MFx1NzVmYVx1NzVmMlx1NzVmM1x1NzYwYlx1NzYwZFx1NzYwOVx1NzYxZlx1NzYyN1x1NzYyMFx1NzYyMVx1NzYyMlx1NzYyNFx1NzYzNFx1NzYzMFx1NzYzYlx1NzY0N1x1NzY0OFx1NzY0Nlx1NzY1Y1x1NzY1OFx1NzY2MVx1NzY2Mlx1NzY2OFx1NzY2OVx1NzY2YVx1NzY2N1x1NzY2Y1x1''@;'; put 'put ''NzY3MFx1NzY3Mlx1NzY3Nlx1NzY3OFx1NzY3Y1x1NzY4MFx1NzY4M1x1NzY4OFx1NzY4Ylx1NzY4ZVx1NzY5Nlx1NzY5M1x1NzY5OVx1NzY5YVx1NzZiMFx1NzZiNFx1NzZiOFx1NzZiOVx1NzZiYVx1NzZjMlx1NzZjZFx1NzZkNlx1NzZkMlx1NzZkZVx1NzZlMVx1NzZlNVx1NzZlN1x1NzZl''@;'; put 'put ''YVx1ODYyZlx1NzZmYlx1NzcwOFx1NzcwN1x1NzcwNFx1NzcyOVx1NzcyNFx1NzcxZVx1NzcyNVx1NzcyNlx1NzcxYlx1NzczN1x1NzczOFx1Nzc0N1x1Nzc1YVx1Nzc2OFx1Nzc2Ylx1Nzc1Ylx1Nzc2NVx1Nzc3Zlx1Nzc3ZVx1Nzc3OVx1Nzc4ZVx1Nzc4Ylx1Nzc5MVx1NzdhMFx1Nzc5ZVx1''@;'; put 'put ''NzdiMFx1NzdiNlx1NzdiOVx1NzdiZlx1NzdiY1x1NzdiZFx1NzdiYlx1NzdjN1x1NzdjZFx1NzdkN1x1NzdkYVx1NzdkY1x1NzdlM1x1NzdlZVx1NzdmY1x1NzgwY1x1NzgxMlx1NzkyNlx1NzgyMFx1NzkyYVx1Nzg0NVx1Nzg4ZVx1Nzg3NFx1Nzg4Nlx1Nzg3Y1x1Nzg5YVx1Nzg4Y1x1Nzhh''@;'; put 'put ''M1x1NzhiNVx1NzhhYVx1NzhhZlx1NzhkMVx1NzhjNlx1NzhjYlx1NzhkNFx1NzhiZVx1NzhiY1x1NzhjNVx1NzhjYVx1NzhlYyJdLFsiZTI0MCIsIlx1NzhlN1x1NzhkYVx1NzhmZFx1NzhmNFx1NzkwN1x1NzkxMlx1NzkxMVx1NzkxOVx1NzkyY1x1NzkyYlx1Nzk0MFx1Nzk2MFx1Nzk1N1x1''@;'; put 'put ''Nzk1Zlx1Nzk1YVx1Nzk1NVx1Nzk1M1x1Nzk3YVx1Nzk3Zlx1Nzk4YVx1Nzk5ZFx1NzlhN1x1OWY0Ylx1NzlhYVx1NzlhZVx1NzliM1x1NzliOVx1NzliYVx1NzljOVx1NzlkNVx1NzllN1x1NzllY1x1NzllMVx1NzllM1x1N2EwOFx1N2EwZFx1N2ExOFx1N2ExOVx1N2EyMFx1N2ExZlx1Nzk4''@;'; put 'put ''MFx1N2EzMVx1N2EzYlx1N2EzZVx1N2EzN1x1N2E0M1x1N2E1N1x1N2E0OVx1N2E2MVx1N2E2Mlx1N2E2OVx1OWY5ZFx1N2E3MFx1N2E3OVx1N2E3ZFx1N2E4OFx1N2E5N1x1N2E5NVx1N2E5OFx1N2E5Nlx1N2FhOVx1N2FjOFx1N2FiMCJdLFsiZTI4MCIsIlx1N2FiNlx1N2FjNVx1N2FjNFx1''@;'; put 'put ''N2FiZlx1OTA4M1x1N2FjN1x1N2FjYVx1N2FjZFx1N2FjZlx1N2FkNVx1N2FkM1x1N2FkOVx1N2FkYVx1N2FkZFx1N2FlMVx1N2FlMlx1N2FlNlx1N2FlZFx1N2FmMFx1N2IwMlx1N2IwZlx1N2IwYVx1N2IwNlx1N2IzM1x1N2IxOFx1N2IxOVx1N2IxZVx1N2IzNVx1N2IyOFx1N2IzNlx1N2I1''@;'; put 'put ''MFx1N2I3YVx1N2IwNFx1N2I0ZFx1N2IwYlx1N2I0Y1x1N2I0NVx1N2I3NVx1N2I2NVx1N2I3NFx1N2I2N1x1N2I3MFx1N2I3MVx1N2I2Y1x1N2I2ZVx1N2I5ZFx1N2I5OFx1N2I5Zlx1N2I4ZFx1N2I5Y1x1N2I5YVx1N2I4Ylx1N2I5Mlx1N2I4Zlx1N2I1ZFx1N2I5OVx1N2JjYlx1N2JjMVx1''@;'; put 'put ''N2JjY1x1N2JjZlx1N2JiNFx1N2JjNlx1N2JkZFx1N2JlOVx1N2MxMVx1N2MxNFx1N2JlNlx1N2JlNVx1N2M2MFx1N2MwMFx1N2MwN1x1N2MxM1x1N2JmM1x1N2JmN1x1N2MxN1x1N2MwZFx1N2JmNlx1N2MyM1x1N2MyN1x1N2MyYVx1N2MxZlx1N2MzN1x1N2MyYlx1N2MzZFx1N2M0Y1x1N2M0''@;'; put 'put ''M1x1N2M1NFx1N2M0Zlx1N2M0MFx1N2M1MFx1N2M1OFx1N2M1Zlx1N2M2NFx1N2M1Nlx1N2M2NVx1N2M2Y1x1N2M3NVx1N2M4M1x1N2M5MFx1N2NhNFx1N2NhZFx1N2NhMlx1N2NhYlx1N2NhMVx1N2NhOFx1N2NiM1x1N2NiMlx1N2NiMVx1N2NhZVx1N2NiOVx1N2NiZFx1N2NjMFx1N2NjNVx1''@;'; put 'put ''N2NjMlx1N2NkOFx1N2NkMlx1N2NkY1x1N2NlMlx1OWIzYlx1N2NlZlx1N2NmMlx1N2NmNFx1N2NmNlx1N2NmYVx1N2QwNiJdLFsiZTM0MCIsIlx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0''@;'; put 'put ''ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1''@;'; put 'put ''N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2UyM1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzNyJdLFsiZTM4MCIsIlx1N2UzMlx1N2UzYVx1N2U2N1x1N2U1''@;'; put 'put ''ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYVx1''@;'; put 'put ''N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2Zi''@;'; put 'put ''Mlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1N2ZkNVx1N2ZkNFx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1''@;'; put 'put ''ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBk''@;'; put 'put ''ZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1ODEyM1x1ODEyZlx1ODE0YiJdLFsiZTQ0MCIsIlx1OTY4Ylx1ODE0Nlx1ODEzZVx1ODE1M1x1ODE1MVx1ODBmY1x1ODE3MVx1ODE2ZVx1ODE2NVx1ODE2Nlx1ODE3NFx1ODE4M1x1ODE4OFx1ODE4YVx1''@;'; put 'put ''ODE4MFx1ODE4Mlx1ODFhMFx1ODE5NVx1ODFhNFx1ODFhM1x1ODE1Zlx1ODE5M1x1ODFhOVx1ODFiMFx1ODFiNVx1ODFiZVx1ODFiOFx1ODFiZFx1ODFjMFx1ODFjMlx1ODFiYVx1ODFjOVx1ODFjZFx1ODFkMVx1ODFkOVx1ODFkOFx1ODFjOFx1ODFkYVx1ODFkZlx1ODFlMFx1ODFlN1x1ODFm''@;'; put 'put ''YVx1ODFmYlx1ODFmZVx1ODIwMVx1ODIwMlx1ODIwNVx1ODIwN1x1ODIwYVx1ODIwZFx1ODIxMFx1ODIxNlx1ODIyOVx1ODIyYlx1ODIzOFx1ODIzM1x1ODI0MFx1ODI1OVx1ODI1OFx1ODI1ZFx1ODI1YVx1ODI1Zlx1ODI2NCJdLFsiZTQ4MCIsIlx1ODI2Mlx1ODI2OFx1ODI2YVx1ODI2Ylx1''@;'; put 'put ''ODIyZVx1ODI3MVx1ODI3N1x1ODI3OFx1ODI3ZVx1ODI4ZFx1ODI5Mlx1ODJhYlx1ODI5Zlx1ODJiYlx1ODJhY1x1ODJlMVx1ODJlM1x1ODJkZlx1ODJkMlx1ODJmNFx1ODJmM1x1ODJmYVx1ODM5M1x1ODMwM1x1ODJmYlx1ODJmOVx1ODJkZVx1ODMwNlx1ODJkY1x1ODMwOVx1ODJkOVx1ODMz''@;'; put 'put ''NVx1ODMzNFx1ODMxNlx1ODMzMlx1ODMzMVx1ODM0MFx1ODMzOVx1ODM1MFx1ODM0NVx1ODMyZlx1ODMyYlx1ODMxN1x1ODMxOFx1ODM4NVx1ODM5YVx1ODNhYVx1ODM5Zlx1ODNhMlx1ODM5Nlx1ODMyM1x1ODM4ZVx1ODM4N1x1ODM4YVx1ODM3Y1x1ODNiNVx1ODM3M1x1ODM3NVx1ODNhMFx1''@;'; put 'put ''ODM4OVx1ODNhOFx1ODNmNFx1ODQxM1x1ODNlYlx1ODNjZVx1ODNmZFx1ODQwM1x1ODNkOFx1ODQwYlx1ODNjMVx1ODNmN1x1ODQwN1x1ODNlMFx1ODNmMlx1ODQwZFx1ODQyMlx1ODQyMFx1ODNiZFx1ODQzOFx1ODUwNlx1ODNmYlx1ODQ2ZFx1ODQyYVx1ODQzY1x1ODU1YVx1ODQ4NFx1ODQ3''@;'; put 'put ''N1x1ODQ2Ylx1ODRhZFx1ODQ2ZVx1ODQ4Mlx1ODQ2OVx1ODQ0Nlx1ODQyY1x1ODQ2Zlx1ODQ3OVx1ODQzNVx1ODRjYVx1ODQ2Mlx1ODRiOVx1ODRiZlx1ODQ5Zlx1ODRkOVx1ODRjZFx1ODRiYlx1ODRkYVx1ODRkMFx1ODRjMVx1ODRjNlx1ODRkNlx1ODRhMVx1ODUyMVx1ODRmZlx1ODRmNFx1''@;'; put 'put ''ODUxN1x1ODUxOFx1ODUyY1x1ODUxZlx1ODUxNVx1ODUxNFx1ODRmY1x1ODU0MFx1ODU2M1x1ODU1OFx1ODU0OCJdLFsiZTU0MCIsIlx1ODU0MVx1ODYwMlx1ODU0Ylx1ODU1NVx1ODU4MFx1ODVhNFx1ODU4OFx1ODU5MVx1ODU4YVx1ODVhOFx1ODU2ZFx1ODU5NFx1ODU5Ylx1ODVlYVx1ODU4''@;'; put 'put ''N1x1ODU5Y1x1ODU3N1x1ODU3ZVx1ODU5MFx1ODVjOVx1ODViYVx1ODVjZlx1ODViOVx1ODVkMFx1ODVkNVx1ODVkZFx1ODVlNVx1ODVkY1x1ODVmOVx1ODYwYVx1ODYxM1x1ODYwYlx1ODVmZVx1ODVmYVx1ODYwNlx1ODYyMlx1ODYxYVx1ODYzMFx1ODYzZlx1ODY0ZFx1NGU1NVx1ODY1NFx1''@;'; put 'put ''ODY1Zlx1ODY2N1x1ODY3MVx1ODY5M1x1ODZhM1x1ODZhOVx1ODZhYVx1ODY4Ylx1ODY4Y1x1ODZiNlx1ODZhZlx1ODZjNFx1ODZjNlx1ODZiMFx1ODZjOVx1ODgyM1x1ODZhYlx1ODZkNFx1ODZkZVx1ODZlOVx1ODZlYyJdLFsiZTU4MCIsIlx1ODZkZlx1ODZkYlx1ODZlZlx1ODcxMlx1ODcw''@;'; put 'put ''Nlx1ODcwOFx1ODcwMFx1ODcwM1x1ODZmYlx1ODcxMVx1ODcwOVx1ODcwZFx1ODZmOVx1ODcwYVx1ODczNFx1ODczZlx1ODczN1x1ODczYlx1ODcyNVx1ODcyOVx1ODcxYVx1ODc2MFx1ODc1Zlx1ODc3OFx1ODc0Y1x1ODc0ZVx1ODc3NFx1ODc1N1x1ODc2OFx1ODc2ZVx1ODc1OVx1ODc1M1x1''@;'; put 'put ''ODc2M1x1ODc2YVx1ODgwNVx1ODdhMlx1ODc5Zlx1ODc4Mlx1ODdhZlx1ODdjYlx1ODdiZFx1ODdjMFx1ODdkMFx1OTZkNlx1ODdhYlx1ODdjNFx1ODdiM1x1ODdjN1x1ODdjNlx1ODdiYlx1ODdlZlx1ODdmMlx1ODdlMFx1ODgwZlx1ODgwZFx1ODdmZVx1ODdmNlx1ODdmN1x1ODgwZVx1ODdk''@;'; put 'put ''Mlx1ODgxMVx1ODgxNlx1ODgxNVx1ODgyMlx1ODgyMVx1ODgzMVx1ODgzNlx1ODgzOVx1ODgyN1x1ODgzYlx1ODg0NFx1ODg0Mlx1ODg1Mlx1ODg1OVx1ODg1ZVx1ODg2Mlx1ODg2Ylx1ODg4MVx1ODg3ZVx1ODg5ZVx1ODg3NVx1ODg3ZFx1ODhiNVx1ODg3Mlx1ODg4Mlx1ODg5N1x1ODg5Mlx1''@;'; put 'put ''ODhhZVx1ODg5OVx1ODhhMlx1ODg4ZFx1ODhhNFx1ODhiMFx1ODhiZlx1ODhiMVx1ODhjM1x1ODhjNFx1ODhkNFx1ODhkOFx1ODhkOVx1ODhkZFx1ODhmOVx1ODkwMlx1ODhmY1x1ODhmNFx1ODhlOFx1ODhmMlx1ODkwNFx1ODkwY1x1ODkwYVx1ODkxM1x1ODk0M1x1ODkxZVx1ODkyNVx1ODky''@;'; put 'put ''YVx1ODkyYlx1ODk0MVx1ODk0NFx1ODkzYlx1ODkzNlx1ODkzOFx1ODk0Y1x1ODkxZFx1ODk2MFx1ODk1ZSJdLFsiZTY0MCIsIlx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlhOVx1''@;'; put 'put ''ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1OGE3''@;'; put 'put ''Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlNyJdLFsiZTY4MCIsIlx1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1''@;'; put 'put ''OGFmN1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2Ylx1OGI1Zlx1OGI2''@;'; put 'put ''Y1x1OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1''@;'; put 'put ''OGM4ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQx''@;'; put 'put ''MFx1OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1''@;'; put 'put ''OGRmZlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YSJdLFsiZTc0MCIsIlx1OGU0N1x1OGU0OVx1OGU0Y1x1OGU1MFx1OGU0OFx1OGU1OVx1OGU2NFx1OGU2MFx1OGUyYVx1OGU2M1x1OGU1NVx1OGU3Nlx1OGU3Mlx1OGU3Y1x1OGU4MVx1OGU4''@;'; put 'put ''N1x1OGU4NVx1OGU4NFx1OGU4Ylx1OGU4YVx1OGU5M1x1OGU5MVx1OGU5NFx1OGU5OVx1OGVhYVx1OGVhMVx1OGVhY1x1OGViMFx1OGVjNlx1OGViMVx1OGViZVx1OGVjNVx1OGVjOFx1OGVjYlx1OGVkYlx1OGVlM1x1OGVmY1x1OGVmYlx1OGVlYlx1OGVmZVx1OGYwYVx1OGYwNVx1OGYxNVx1''@;'; put 'put ''OGYxMlx1OGYxOVx1OGYxM1x1OGYxY1x1OGYxZlx1OGYxYlx1OGYwY1x1OGYyNlx1OGYzM1x1OGYzYlx1OGYzOVx1OGY0NVx1OGY0Mlx1OGYzZVx1OGY0Y1x1OGY0OVx1OGY0Nlx1OGY0ZVx1OGY1N1x1OGY1YyJdLFsiZTc4MCIsIlx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY5Y1x1OGY5Zlx1OGZh''@;'; put 'put ''M1x1OGZhZFx1OGZhZlx1OGZiN1x1OGZkYVx1OGZlNVx1OGZlMlx1OGZlYVx1OGZlZlx1OTA4N1x1OGZmNFx1OTAwNVx1OGZmOVx1OGZmYVx1OTAxMVx1OTAxNVx1OTAyMVx1OTAwZFx1OTAxZVx1OTAxNlx1OTAwYlx1OTAyN1x1OTAzNlx1OTAzNVx1OTAzOVx1OGZmOFx1OTA0Zlx1OTA1MFx1''@;'; put 'put ''OTA1MVx1OTA1Mlx1OTAwZVx1OTA0OVx1OTAzZVx1OTA1Nlx1OTA1OFx1OTA1ZVx1OTA2OFx1OTA2Zlx1OTA3Nlx1OTZhOFx1OTA3Mlx1OTA4Mlx1OTA3ZFx1OTA4MVx1OTA4MFx1OTA4YVx1OTA4OVx1OTA4Zlx1OTBhOFx1OTBhZlx1OTBiMVx1OTBiNVx1OTBlMlx1OTBlNFx1NjI0OFx1OTBk''@;'; put 'put ''Ylx1OTEwMlx1OTExMlx1OTExOVx1OTEzMlx1OTEzMFx1OTE0YVx1OTE1Nlx1OTE1OFx1OTE2M1x1OTE2NVx1OTE2OVx1OTE3M1x1OTE3Mlx1OTE4Ylx1OTE4OVx1OTE4Mlx1OTFhMlx1OTFhYlx1OTFhZlx1OTFhYVx1OTFiNVx1OTFiNFx1OTFiYVx1OTFjMFx1OTFjMVx1OTFjOVx1OTFjYlx1''@;'; put 'put ''OTFkMFx1OTFkNlx1OTFkZlx1OTFlMVx1OTFkYlx1OTFmY1x1OTFmNVx1OTFmNlx1OTIxZVx1OTFmZlx1OTIxNFx1OTIyY1x1OTIxNVx1OTIxMVx1OTI1ZVx1OTI1N1x1OTI0NVx1OTI0OVx1OTI2NFx1OTI0OFx1OTI5NVx1OTIzZlx1OTI0Ylx1OTI1MFx1OTI5Y1x1OTI5Nlx1OTI5M1x1OTI5''@;'; put 'put ''Ylx1OTI1YVx1OTJjZlx1OTJiOVx1OTJiN1x1OTJlOVx1OTMwZlx1OTJmYVx1OTM0NFx1OTMyZSJdLFsiZTg0MCIsIlx1OTMxOVx1OTMyMlx1OTMxYVx1OTMyM1x1OTMzYVx1OTMzNVx1OTMzYlx1OTM1Y1x1OTM2MFx1OTM3Y1x1OTM2ZVx1OTM1Nlx1OTNiMFx1OTNhY1x1OTNhZFx1OTM5NFx1''@;'; put 'put ''OTNiOVx1OTNkNlx1OTNkN1x1OTNlOFx1OTNlNVx1OTNkOFx1OTNjM1x1OTNkZFx1OTNkMFx1OTNjOFx1OTNlNFx1OTQxYVx1OTQxNFx1OTQxM1x1OTQwM1x1OTQwN1x1OTQxMFx1OTQzNlx1OTQyYlx1OTQzNVx1OTQyMVx1OTQzYVx1OTQ0MVx1OTQ1Mlx1OTQ0NFx1OTQ1Ylx1OTQ2MFx1OTQ2''@;'; put 'put ''Mlx1OTQ1ZVx1OTQ2YVx1OTIyOVx1OTQ3MFx1OTQ3NVx1OTQ3N1x1OTQ3ZFx1OTQ1YVx1OTQ3Y1x1OTQ3ZVx1OTQ4MVx1OTQ3Zlx1OTU4Mlx1OTU4N1x1OTU4YVx1OTU5NFx1OTU5Nlx1OTU5OFx1OTU5OSJdLFsiZTg4MCIsIlx1OTVhMFx1OTVhOFx1OTVhN1x1OTVhZFx1OTViY1x1OTViYlx1''@;'; put 'put ''OTViOVx1OTViZVx1OTVjYVx1NmZmNlx1OTVjM1x1OTVjZFx1OTVjY1x1OTVkNVx1OTVkNFx1OTVkNlx1OTVkY1x1OTVlMVx1OTVlNVx1OTVlMlx1OTYyMVx1OTYyOFx1OTYyZVx1OTYyZlx1OTY0Mlx1OTY0Y1x1OTY0Zlx1OTY0Ylx1OTY3N1x1OTY1Y1x1OTY1ZVx1OTY1ZFx1OTY1Zlx1OTY2''@;'; put 'put ''Nlx1OTY3Mlx1OTY2Y1x1OTY4ZFx1OTY5OFx1OTY5NVx1OTY5N1x1OTZhYVx1OTZhN1x1OTZiMVx1OTZiMlx1OTZiMFx1OTZiNFx1OTZiNlx1OTZiOFx1OTZiOVx1OTZjZVx1OTZjYlx1OTZjOVx1OTZjZFx1ODk0ZFx1OTZkY1x1OTcwZFx1OTZkNVx1OTZmOVx1OTcwNFx1OTcwNlx1OTcwOFx1''@;'; put 'put ''OTcxM1x1OTcwZVx1OTcxMVx1OTcwZlx1OTcxNlx1OTcxOVx1OTcyNFx1OTcyYVx1OTczMFx1OTczOVx1OTczZFx1OTczZVx1OTc0NFx1OTc0Nlx1OTc0OFx1OTc0Mlx1OTc0OVx1OTc1Y1x1OTc2MFx1OTc2NFx1OTc2Nlx1OTc2OFx1NTJkMlx1OTc2Ylx1OTc3MVx1OTc3OVx1OTc4NVx1OTc3''@;'; put 'put ''Y1x1OTc4MVx1OTc3YVx1OTc4Nlx1OTc4Ylx1OTc4Zlx1OTc5MFx1OTc5Y1x1OTdhOFx1OTdhNlx1OTdhM1x1OTdiM1x1OTdiNFx1OTdjM1x1OTdjNlx1OTdjOFx1OTdjYlx1OTdkY1x1OTdlZFx1OWY0Zlx1OTdmMlx1N2FkZlx1OTdmNlx1OTdmNVx1OTgwZlx1OTgwY1x1OTgzOFx1OTgyNFx1''@;'; put 'put ''OTgyMVx1OTgzN1x1OTgzZFx1OTg0Nlx1OTg0Zlx1OTg0Ylx1OTg2Ylx1OTg2Zlx1OTg3MCJdLFsiZTk0MCIsIlx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkx''@;'; put 'put ''OFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1''@;'; put 'put ''OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0MyJdLFsiZTk4MCIsIlx1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2''@;'; put 'put ''Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFlYlx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmN1x1OWFmYlx1OWIwNlx1OWIxOFx1''@;'; put 'put ''OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJh''@;'; put 'put ''OFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMwOVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1''@;'; put 'put ''OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQx''@;'; put 'put ''Zlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1OWQ0OCJdLFsiZWE0MCIsIlx1OWQ1ZFx1OWQ1ZVx1OWQ2NFx1OWQ1MVx1OWQ1MFx1OWQ1OVx1OWQ3Mlx1OWQ4OVx1OWQ4N1x1OWRhYlx1OWQ2Zlx1OWQ3YVx1OWQ5YVx1OWRhNFx1OWRhOVx1OWRiMlx1OWRjNFx1''@;'; put 'put ''OWRjMVx1OWRiYlx1OWRiOFx1OWRiYVx1OWRjNlx1OWRjZlx1OWRjMlx1OWRkOVx1OWRkM1x1OWRmOFx1OWRlNlx1OWRlZFx1OWRlZlx1OWRmZFx1OWUxYVx1OWUxYlx1OWUxZVx1OWU3NVx1OWU3OVx1OWU3ZFx1OWU4MVx1OWU4OFx1OWU4Ylx1OWU4Y1x1OWU5Mlx1OWU5NVx1OWU5MVx1OWU5''@;'; put 'put ''ZFx1OWVhNVx1OWVhOVx1OWViOFx1OWVhYVx1OWVhZFx1OTc2MVx1OWVjY1x1OWVjZVx1OWVjZlx1OWVkMFx1OWVkNFx1OWVkY1x1OWVkZVx1OWVkZFx1OWVlMFx1OWVlNVx1OWVlOFx1OWVlZiJdLFsiZWE4MCIsIlx1OWVmNFx1OWVmNlx1OWVmN1x1OWVmOVx1OWVmYlx1OWVmY1x1OWVmZFx1''@;'; put 'put ''OWYwN1x1OWYwOFx1NzZiN1x1OWYxNVx1OWYyMVx1OWYyY1x1OWYzZVx1OWY0YVx1OWY1Mlx1OWY1NFx1OWY2M1x1OWY1Zlx1OWY2MFx1OWY2MVx1OWY2Nlx1OWY2N1x1OWY2Y1x1OWY2YVx1OWY3N1x1OWY3Mlx1OWY3Nlx1OWY5NVx1OWY5Y1x1OWZhMFx1NTgyZlx1NjljN1x1OTA1OVx1NzQ2''@;'; put 'put ''NFx1NTFkY1x1NzE5OSJdLFsiZWQ0MCIsIlx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYzMVx1NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1''@;'; put 'put ''NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YVx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNk''@;'; put 'put ''ZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1NTdjN1x1ZmEwZiJdLFsiZWQ4MCIsIlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1''@;'; put 'put ''NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRiOVx1NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZiN1x1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEz''@;'; put 'put ''N1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1''@;'; put 'put ''ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1NjllMlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4''@;'; put 'put ''N1x1NmQ2Zlx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1''@;'; put 'put ''NzFmZVx1NzJiMSJdLFsiZWU0MCIsIlx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5''@;'; put 'put ''Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1''@;'; put 'put ''N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OSJdLFsiZWU4MCIsIlx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEy''@;'; put 'put ''Mlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1''@;'; put 'put ''OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1''@;'; put 'put ''N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1''@;'; put 'put ''OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMSJdLFsiZWVlZiIsIlx1MjE3MCIsOSwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyIl0sWyJmMDQwIiwiXHVlMDAwIiw2Ml0sWyJmMDgwIiwiXHVlMDNmIiwx''@;'; put 'put ''MjRdLFsiZjE0MCIsIlx1ZTBiYyIsNjJdLFsiZjE4MCIsIlx1ZTBmYiIsMTI0XSxbImYyNDAiLCJcdWUxNzgiLDYyXSxbImYyODAiLCJcdWUxYjciLDEyNF0sWyJmMzQwIiwiXHVlMjM0Iiw2Ml0sWyJmMzgwIiwiXHVlMjczIiwxMjRdLFsiZjQ0MCIsIlx1ZTJmMCIsNjJdLFsiZjQ4MCIsIlx1''@;'; put 'put ''ZTMyZiIsMTI0XSxbImY1NDAiLCJcdWUzYWMiLDYyXSxbImY1ODAiLCJcdWUzZWIiLDEyNF0sWyJmNjQwIiwiXHVlNDY4Iiw2Ml0sWyJmNjgwIiwiXHVlNGE3IiwxMjRdLFsiZjc0MCIsIlx1ZTUyNCIsNjJdLFsiZjc4MCIsIlx1ZTU2MyIsMTI0XSxbImY4NDAiLCJcdWU1ZTAiLDYyXSxbImY4''@;'; put 'put ''ODAiLCJcdWU2MWYiLDEyNF0sWyJmOTQwIiwiXHVlNjljIl0sWyJmYTQwIiwiXHUyMTcwIiw5LCJcdTIxNjAiLDksIlx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1MzIzMVx1MjExNlx1MjEyMVx1MjIzNVx1N2U4YVx1ODkxY1x1OTM0OFx1OTI4OFx1ODRkY1x1NGZjOVx1NzBiYlx1NjYzMVx1''@;'; put 'put ''NjhjOFx1OTJmOVx1NjZmYlx1NWY0NVx1NGUyOFx1NGVlMVx1NGVmY1x1NGYwMFx1NGYwM1x1NGYzOVx1NGY1Nlx1NGY5Mlx1NGY4YVx1NGY5YVx1NGY5NFx1NGZjZFx1NTA0MFx1NTAyMlx1NGZmZlx1NTAxZVx1NTA0Nlx1NTA3MFx1NTA0Mlx1NTA5NFx1NTBmNFx1NTBkOFx1NTE0YSJdLFsi''@;'; put 'put ''ZmE4MCIsIlx1NTE2NFx1NTE5ZFx1NTFiZVx1NTFlY1x1NTIxNVx1NTI5Y1x1NTJhNlx1NTJjMFx1NTJkYlx1NTMwMFx1NTMwN1x1NTMyNFx1NTM3Mlx1NTM5M1x1NTNiMlx1NTNkZFx1ZmEwZVx1NTQ5Y1x1NTQ4YVx1NTRhOVx1NTRmZlx1NTU4Nlx1NTc1OVx1NTc2NVx1NTdhY1x1NTdjOFx1''@;'; put 'put ''NTdjN1x1ZmEwZlx1ZmExMFx1NTg5ZVx1NThiMlx1NTkwYlx1NTk1M1x1NTk1Ylx1NTk1ZFx1NTk2M1x1NTlhNFx1NTliYVx1NWI1Nlx1NWJjMFx1NzUyZlx1NWJkOFx1NWJlY1x1NWMxZVx1NWNhNlx1NWNiYVx1NWNmNVx1NWQyN1x1NWQ1M1x1ZmExMVx1NWQ0Mlx1NWQ2ZFx1NWRiOFx1NWRi''@;'; put 'put ''OVx1NWRkMFx1NWYyMVx1NWYzNFx1NWY2N1x1NWZiN1x1NWZkZVx1NjA1ZFx1NjA4NVx1NjA4YVx1NjBkZVx1NjBkNVx1NjEyMFx1NjBmMlx1NjExMVx1NjEzN1x1NjEzMFx1NjE5OFx1NjIxM1x1NjJhNlx1NjNmNVx1NjQ2MFx1NjQ5ZFx1NjRjZVx1NjU0ZVx1NjYwMFx1NjYxNVx1NjYzYlx1''@;'; put 'put ''NjYwOVx1NjYyZVx1NjYxZVx1NjYyNFx1NjY2NVx1NjY1N1x1NjY1OVx1ZmExMlx1NjY3M1x1NjY5OVx1NjZhMFx1NjZiMlx1NjZiZlx1NjZmYVx1NjcwZVx1ZjkyOVx1Njc2Nlx1NjdiYlx1Njg1Mlx1NjdjMFx1NjgwMVx1Njg0NFx1NjhjZlx1ZmExM1x1Njk2OFx1ZmExNFx1Njk5OFx1Njll''@;'; put 'put ''Mlx1NmEzMFx1NmE2Ylx1NmE0Nlx1NmE3M1x1NmE3ZVx1NmFlMlx1NmFlNFx1NmJkNlx1NmMzZlx1NmM1Y1x1NmM4Nlx1NmM2Zlx1NmNkYVx1NmQwNFx1NmQ4N1x1NmQ2ZiJdLFsiZmI0MCIsIlx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1''@;'; put 'put ''NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1NzFjMVx1NzFmZVx1NzJiMVx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNk''@;'; put 'put ''Mlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOSJdLFsiZmI4''@;'; put 'put ''MCIsIlx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1''@;'; put 'put ''M1x1ODU1OVx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1''@;'; put 'put ''OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJk''@;'; put 'put ''OVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1''@;'; put 'put ''OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOSJdLFsiZmM0MCIsIlx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJiYlx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEy''@;'; put 'put ''ZFx1OWUxOVx1OWVkMSJdXScpfSwyMjU2MjpXZT0+eyJ1c2Ugc3RyaWN0IjtXZS5leHBvcnRzPUpTT04ucGFyc2UoJ3siMi4xNi44NDAuMS4xMDEuMy40LjEuMSI6ImFlcy0xMjgtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMiI6ImFlcy0xMjgtY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40''@;'; put 'put ''LjEuMyI6ImFlcy0xMjgtb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNCI6ImFlcy0xMjgtY2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjEiOiJhZXMtMTkyLWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyIjoiYWVzLTE5Mi1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMyI6''@;'; put 'put ''ImFlcy0xOTItb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjQiOiJhZXMtMTkyLWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxIjoiYWVzLTI1Ni1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MiI6ImFlcy0yNTYtY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDMiOiJhZXMt''@;'; put 'put ''MjU2LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0IjoiYWVzLTI1Ni1jZmIifScpfX0sV2U9PntXZShXZS5zPTYxNDk1KX1dKTs='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=polyfills.87dbbd3faabed513-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s0MjldLHs1NTMyMTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoNDI0NCksdCg3NzY1NyksdCg4ODgxMyksdCg1MzEwKSx0KDUxNzcxKSx0KDYyMzE0KSx0''@;'; put 'put ''KDE2MzQzKSx0KDM3MDQyKSx0KDc2NzcpLHQoODI2OTEpLHQoMjkxMzIpLHQoMTc4NzgpLHQoNTIyOTgpLHQoNDM0OTkpLHQoNjc3OTUpLHQoNDgzMzIpLHQoMzA3NTgpO3ZhciB2dD10KDM5MDA3KTt3aW5kb3cuZ2xvYmFsPXdpbmRvdyx3aW5kb3cuZ2xvYmFsLkJ1ZmZlcj13aW5kb3cuZ2xv''@;'; put 'put ''YmFsLkJ1ZmZlcnx8dnQuQnVmZmVyLHdpbmRvdy5wcm9jZXNzPXt2ZXJzaW9uOiIifX0sOTkxOTooYyxsKT0+eyJ1c2Ugc3RyaWN0IjtsLmJ5dGVMZW5ndGg9ZnVuY3Rpb24gaShFKXt2YXIgaj1mKEUpLFI9alsxXTtyZXR1cm4gMyooalswXStSKS80LVJ9LGwudG9CeXRlQXJyYXk9ZnVuY3Rp''@;'; put 'put ''b24geShFKXt2YXIgaixTLHc9ZihFKSxSPXdbMF0sRj13WzFdLEI9bmV3IGUoZnVuY3Rpb24gcChFLGosdyl7cmV0dXJuIDMqKGordykvNC13fSgwLFIsRikpLGI9MCxPPUY+MD9SLTQ6Ujtmb3IoUz0wO1M8TztTKz00KWo9bltFLmNoYXJDb2RlQXQoUyldPDwxOHxuW0UuY2hhckNvZGVBdChT''@;'; put 'put ''KzEpXTw8MTJ8bltFLmNoYXJDb2RlQXQoUysyKV08PDZ8bltFLmNoYXJDb2RlQXQoUyszKV0sQltiKytdPWo+PjE2JjI1NSxCW2IrK109aj4+OCYyNTUsQltiKytdPTI1NSZqO3JldHVybiAyPT09RiYmKGo9bltFLmNoYXJDb2RlQXQoUyldPDwyfG5bRS5jaGFyQ29kZUF0KFMrMSldPj40LEJb''@;'; put 'put ''YisrXT0yNTUmaiksMT09PUYmJihqPW5bRS5jaGFyQ29kZUF0KFMpXTw8MTB8bltFLmNoYXJDb2RlQXQoUysxKV08PDR8bltFLmNoYXJDb2RlQXQoUysyKV0+PjIsQltiKytdPWo+PjgmMjU1LEJbYisrXT0yNTUmaiksQn0sbC5mcm9tQnl0ZUFycmF5PWZ1bmN0aW9uIHgoRSl7Zm9yKHZhciBq''@;'; put 'put ''LHc9RS5sZW5ndGgsUj13JTMsRj1bXSxCPTE2MzgzLGI9MCxPPXctUjtiPE87Yis9QilGLnB1c2goZyhFLGIsYitCPk8/TzpiK0IpKTtyZXR1cm4gMT09PVI/Ri5wdXNoKHRbKGo9RVt3LTFdKT4+Ml0rdFtqPDw0JjYzXSsiPT0iKToyPT09UiYmRi5wdXNoKHRbKGo9KEVbdy0yXTw8OCkrRVt3''@;'; put 'put ''LTFdKT4+MTBdK3Rbaj4+NCY2M10rdFtqPDwyJjYzXSsiPSIpLEYuam9pbigiIil9O2Zvcih2YXIgdD1bXSxuPVtdLGU9dHlwZW9mIFVpbnQ4QXJyYXk8InUiP1VpbnQ4QXJyYXk6QXJyYXkscz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAx''@;'; put 'put ''MjM0NTY3ODkrLyIsbz0wO288NjQ7KytvKXRbb109c1tvXSxuW3MuY2hhckNvZGVBdChvKV09bztmdW5jdGlvbiBmKEUpe3ZhciBqPUUubGVuZ3RoO2lmKGolND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO3ZhciB3''@;'; put 'put ''PUUuaW5kZXhPZigiPSIpO3JldHVybi0xPT09dyYmKHc9aiksW3csdz09PWo/MDo0LXclNF19ZnVuY3Rpb24gdihFKXtyZXR1cm4gdFtFPj4xOCY2M10rdFtFPj4xMiY2M10rdFtFPj42JjYzXSt0WzYzJkVdfWZ1bmN0aW9uIGcoRSxqLHcpe2Zvcih2YXIgRj1bXSxCPWo7Qjx3O0IrPTMpRi5w''@;'; put 'put ''dXNoKHYoKEVbQl08PDE2JjE2NzExNjgwKSsoRVtCKzFdPDw4JjY1MjgwKSsoMjU1JkVbQisyXSkpKTtyZXR1cm4gRi5qb2luKCIiKX1uWyItIi5jaGFyQ29kZUF0KDApXT02MixuWyJfIi5jaGFyQ29kZUF0KDApXT02M30sMzkwMDc6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDk5''@;'; put 'put ''MTkpLGU9dCgyMjYwMSkscz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj9TeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpOm51bGw7bC5CdWZmZXI9aSxsLlNsb3dCdWZmZXI9ZnVuY3Rpb24gQihkKXtyZXR1cm4r''@;'; put 'put ''ZCE9ZCYmKGQ9MCksaS5hbGxvYygrZCl9LGwuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIG89MjE0NzQ4MzY0NztmdW5jdGlvbiBmKGQpe2lmKGQ+byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2QrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO3ZhciByPW5l''@;'; put 'put ''dyBVaW50OEFycmF5KGQpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YocixpLnByb3RvdHlwZSkscn1mdW5jdGlvbiBpKGQscixhKXtpZigibnVtYmVyIj09dHlwZW9mIGQpe2lmKCJzdHJpbmciPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gZyhkKX1yZXR1cm4gcChkLHIsYSl9ZnVuY3Rpb24gcChkLHIsYSl7aWYoInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBmdW5jdGlvbiB4KGQscil7aWYoKCJzdHJpbmciIT10eXBlb2Ygcnx8''@;'; put 'put ''IiI9PT1yKSYmKHI9InV0ZjgiKSwhaS5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7dmFyIGE9MHxiKGQsciksbT1mKGEpLEQ9bS53cml0ZShkLHIpO3JldHVybiBEIT09YSYmKG09bS5zbGljZSgwLEQpKSxtfShkLHIpO2lmKEFycmF5''@;'; put 'put ''QnVmZmVyLmlzVmlldyhkKSlyZXR1cm4gZnVuY3Rpb24gaihkKXtpZihadChkLFVpbnQ4QXJyYXkpKXt2YXIgcj1uZXcgVWludDhBcnJheShkKTtyZXR1cm4gdyhyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKX1yZXR1cm4gRShkKX0oZCk7aWYobnVsbD09ZCl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBkKTtpZihadChkLEFycmF5QnVmZmVyKXx8ZCYmWnQoZC5i''@;'; put 'put ''dWZmZXIsQXJyYXlCdWZmZXIpfHx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiJiYoWnQoZCxTaGFyZWRBcnJheUJ1ZmZlcil8fGQmJlp0KGQuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIHcoZCxyLGEpO2lmKCJudW1iZXIiPT10eXBlb2YgZCl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTt2YXIgbT1kLnZhbHVlT2YmJmQudmFsdWVPZigpO2lmKG51bGwhPW0mJm0hPT1kKXJldHVybiBpLmZyb20obSxyLGEpO3ZhciBEPWZ1bmN0aW9uIFIoZCl7''@;'; put 'put ''aWYoaS5pc0J1ZmZlcihkKSl7dmFyIHI9MHxGKGQubGVuZ3RoKSxhPWYocik7cmV0dXJuIDA9PT1hLmxlbmd0aHx8ZC5jb3B5KGEsMCwwLHIpLGF9cmV0dXJuIHZvaWQgMCE9PWQubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgZC5sZW5ndGh8fGVuKGQubGVuZ3RoKT9mKDApOkUoZCk6IkJ1ZmZl''@;'; put 'put ''ciI9PT1kLnR5cGUmJkFycmF5LmlzQXJyYXkoZC5kYXRhKT9FKGQuZGF0YSk6dm9pZCAwfShkKTtpZihEKXJldHVybiBEO2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBkW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJu''@;'; put 'put ''IGkuZnJvbShkW1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLHIsYSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJl''@;'; put 'put ''Y2VpdmVkIHR5cGUgIit0eXBlb2YgZCl9ZnVuY3Rpb24geShkKXtpZigibnVtYmVyIiE9dHlwZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihkPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytk''@;'; put 'put ''KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBnKGQpe3JldHVybiB5KGQpLGYoZDwwPzA6MHxGKGQpKX1mdW5jdGlvbiBFKGQpe2Zvcih2YXIgcj1kLmxlbmd0aDwwPzA6MHxGKGQubGVuZ3RoKSxhPWYociksbT0wO208cjttKz0xKWFbbV09MjU1JmRbbV07cmV0''@;'; put 'put ''dXJuIGF9ZnVuY3Rpb24gdyhkLHIsYSl7aWYocjwwfHxkLmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoZC5ieXRlTGVuZ3RoPHIrKGF8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBp''@;'; put 'put ''cyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTt2YXIgbTtyZXR1cm4gbT12b2lkIDA9PT1yJiZ2b2lkIDA9PT1hP25ldyBVaW50OEFycmF5KGQpOnZvaWQgMD09PWE/bmV3IFVpbnQ4QXJyYXkoZCxyKTpuZXcgVWludDhBcnJheShkLHIsYSksT2JqZWN0LnNldFByb3RvdHlwZU9mKG0saS5w''@;'; put 'put ''cm90b3R5cGUpLG19ZnVuY3Rpb24gRihkKXtpZihkPj1vKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitvLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZH1mdW5jdGlvbiBiKGQscil7''@;'; put 'put ''aWYoaS5pc0J1ZmZlcihkKSlyZXR1cm4gZC5sZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGQpfHxadChkLEFycmF5QnVmZmVyKSlyZXR1cm4gZC5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgZCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVz''@;'; put 'put ''dCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgZCk7dmFyIGE9ZC5sZW5ndGgsbT1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFtJiYwPT09YSlyZXR1cm4gMDtmb3IodmFyIEQ9ITE7''@;'; put 'put ''Oylzd2l0Y2gocil7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gYTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBubihkKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKmE7''@;'; put 'put ''Y2FzZSJoZXgiOnJldHVybiBhPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIG9uKGQpLmxlbmd0aDtkZWZhdWx0OmlmKEQpcmV0dXJuIG0/LTE6bm4oZCkubGVuZ3RoO3I9KCIiK3IpLnRvTG93ZXJDYXNlKCksRD0hMH19ZnVuY3Rpb24gTyhkLHIsYSl7dmFyIG09ITE7aWYoKHZvaWQgMD09PXJ8''@;'; put 'put ''fHI8MCkmJihyPTApLHI+dGhpcy5sZW5ndGh8fCgodm9pZCAwPT09YXx8YT50aGlzLmxlbmd0aCkmJihhPXRoaXMubGVuZ3RoKSxhPD0wKXx8KGE+Pj49MCk8PShyPj4+PTApKXJldHVybiIiO2ZvcihkfHwoZD0idXRmOCIpOzspc3dpdGNoKGQpe2Nhc2UiaGV4IjpyZXR1cm4gdnQodGhpcyxy''@;'; put 'put ''LGEpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIFgodGhpcyxyLGEpO2Nhc2UiYXNjaWkiOnJldHVybiBZKHRoaXMscixhKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBmdCh0aGlzLHIsYSk7Y2FzZSJiYXNlNjQiOnJldHVybiBzdCh0aGlzLHIsYSk7Y2FzZSJ1Y3My''@;'; put 'put ''IjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBNdCh0aGlzLHIsYSk7ZGVmYXVsdDppZihtKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZCk7ZD0oZCsiIikudG9Mb3dlckNhc2UoKSxtPSEwfX1mdW5jdGlvbiBTKGQscixh''@;'; put 'put ''KXt2YXIgbT1kW3JdO2Rbcl09ZFthXSxkW2FdPW19ZnVuY3Rpb24gQyhkLHIsYSxtLEQpe2lmKDA9PT1kLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIGE/KG09YSxhPTApOmE+MjE0NzQ4MzY0Nz9hPTIxNDc0ODM2NDc6YTwtMjE0NzQ4MzY0OCYmKGE9LTIxNDc0ODM2NDgp''@;'; put 'put ''LGVuKGE9K2EpJiYoYT1EPzA6ZC5sZW5ndGgtMSksYTwwJiYoYT1kLmxlbmd0aCthKSxhPj1kLmxlbmd0aCl7aWYoRClyZXR1cm4tMTthPWQubGVuZ3RoLTF9ZWxzZSBpZihhPDApe2lmKCFEKXJldHVybi0xO2E9MH1pZigic3RyaW5nIj09dHlwZW9mIHImJihyPWkuZnJvbShyLG0pKSxpLmlz''@;'; put 'put ''QnVmZmVyKHIpKXJldHVybiAwPT09ci5sZW5ndGg/LTE6SyhkLHIsYSxtLEQpO2lmKCJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gciY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP0Q/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs''@;'; put 'put ''KGQscixhKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGQscixhKTpLKGQsW3JdLGEsbSxEKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBLKGQscixhLG0sRCl7dmFyIFQsJD0xLGg9ZC5s''@;'; put 'put ''ZW5ndGgsUD1yLmxlbmd0aDtpZih2b2lkIDAhPT1tJiYoInVjczIiPT09KG09U3RyaW5nKG0pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bXx8InV0ZjE2bGUiPT09bXx8InV0Zi0xNmxlIj09PW0pKXtpZihkLmxlbmd0aDwyfHxyLmxlbmd0aDwyKXJldHVybi0xOyQ9MixoLz0yLFAvPTIs''@;'; put 'put ''YS89Mn1mdW5jdGlvbiBJKHosb3Qpe3JldHVybiAxPT09JD96W290XTp6LnJlYWRVSW50MTZCRShvdCokKX1pZihEKXt2YXIgQT0tMTtmb3IoVD1hO1Q8aDtUKyspaWYoSShkLFQpPT09SShyLC0xPT09QT8wOlQtQSkpe2lmKC0xPT09QSYmKEE9VCksVC1BKzE9PT1QKXJldHVybiBBKiR9ZWxz''@;'; put 'put ''ZS0xIT09QSYmKFQtPVQtQSksQT0tMX1lbHNlIGZvcihhK1A+aCYmKGE9aC1QKSxUPWE7VD49MDtULS0pe2Zvcih2YXIgaz0hMCxKPTA7SjxQO0orKylpZihJKGQsVCtKKSE9PUkocixKKSl7az0hMTticmVha31pZihrKXJldHVybiBUfXJldHVybi0xfWZ1bmN0aW9uIFUoZCxyLGEsbSl7YT1O''@;'; put 'put ''dW1iZXIoYSl8fDA7dmFyIEQ9ZC5sZW5ndGgtYTttPyhtPU51bWJlcihtKSk+RCYmKG09RCk6bT1EO3ZhciAkPXIubGVuZ3RoO20+JC8yJiYobT0kLzIpO2Zvcih2YXIgaD0wO2g8bTsrK2gpe3ZhciBQPXBhcnNlSW50KHIuc3Vic3RyKDIqaCwyKSwxNik7aWYoZW4oUCkpcmV0dXJuIGg7ZFth''@;'; put 'put ''K2hdPVB9cmV0dXJuIGh9ZnVuY3Rpb24gWihkLHIsYSxtKXtyZXR1cm4gWXQobm4ocixkLmxlbmd0aC1hKSxkLGEsbSl9ZnVuY3Rpb24gdHQoZCxyLGEsbSl7cmV0dXJuIFl0KGZ1bmN0aW9uIGFuKGQpe2Zvcih2YXIgcj1bXSxhPTA7YTxkLmxlbmd0aDsrK2Epci5wdXNoKDI1NSZkLmNoYXJD''@;'; put 'put ''b2RlQXQoYSkpO3JldHVybiByfShyKSxkLGEsbSl9ZnVuY3Rpb24gXyhkLHIsYSxtKXtyZXR1cm4gWXQob24ociksZCxhLG0pfWZ1bmN0aW9uIG50KGQscixhLG0pe3JldHVybiBZdChmdW5jdGlvbiBmbihkLHIpe2Zvcih2YXIgYSxtLCQ9W10saD0wO2g8ZC5sZW5ndGgmJiEoKHItPTIpPDAp''@;'; put 'put ''OysraCltPShhPWQuY2hhckNvZGVBdChoKSk+PjgsJC5wdXNoKGElMjU2KSwkLnB1c2gobSk7cmV0dXJuICR9KHIsZC5sZW5ndGgtYSksZCxhLG0pfWZ1bmN0aW9uIHN0KGQscixhKXtyZXR1cm4gbi5mcm9tQnl0ZUFycmF5KDA9PT1yJiZhPT09ZC5sZW5ndGg/ZDpkLnNsaWNlKHIsYSkpfWZ1''@;'; put 'put ''bmN0aW9uIFgoZCxyLGEpe2E9TWF0aC5taW4oZC5sZW5ndGgsYSk7Zm9yKHZhciBtPVtdLEQ9cjtEPGE7KXt2YXIgSSxULEEsaywkPWRbRF0saD1udWxsLFA9JD4yMzk/NDokPjIyMz8zOiQ+MTkxPzI6MTtpZihEK1A8PWEpc3dpdGNoKFApe2Nhc2UgMTokPDEyOCYmKGg9JCk7YnJlYWs7Y2Fz''@;'; put 'put ''ZSAyOjEyOD09KDE5MiYoST1kW0QrMV0pKSYmKGs9KDMxJiQpPDw2fDYzJkkpPjEyNyYmKGg9ayk7YnJlYWs7Y2FzZSAzOlQ9ZFtEKzJdLDEyOD09KDE5MiYoST1kW0QrMV0pKSYmMTI4PT0oMTkyJlQpJiYoaz0oMTUmJCk8PDEyfCg2MyZJKTw8Nnw2MyZUKT4yMDQ3JiYoazw1NTI5Nnx8az41''@;'; put 'put ''NzM0MykmJihoPWspO2JyZWFrO2Nhc2UgNDpUPWRbRCsyXSxBPWRbRCszXSwxMjg9PSgxOTImKEk9ZFtEKzFdKSkmJjEyOD09KDE5MiZUKSYmMTI4PT0oMTkyJkEpJiYoaz0oMTUmJCk8PDE4fCg2MyZJKTw8MTJ8KDYzJlQpPDw2fDYzJkEpPjY1NTM1JiZrPDExMTQxMTImJihoPWspfW51bGw9''@;'; put 'put ''PT1oPyhoPTY1NTMzLFA9MSk6aD42NTUzNSYmKG0ucHVzaCgoaC09NjU1MzYpPj4+MTAmMTAyM3w1NTI5NiksaD01NjMyMHwxMDIzJmgpLG0ucHVzaChoKSxEKz1QfXJldHVybiBmdW5jdGlvbiBRKGQpe3ZhciByPWQubGVuZ3RoO2lmKHI8PVYpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUu''@;'; put 'put ''YXBwbHkoU3RyaW5nLGQpO2Zvcih2YXIgYT0iIixtPTA7bTxyOylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxkLnNsaWNlKG0sbSs9VikpO3JldHVybiBhfShtKX1sLmtNYXhMZW5ndGg9bywhKGkuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbiB1KCl7dHJ5e3ZhciBk''@;'; put 'put ''PW5ldyBVaW50OEFycmF5KDEpLHI9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YocixVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGQsciksNDI9PT1kLmZvbygpfWNhdGNoe3JldHVybiExfX0oKSkmJnR5''@;'; put 'put ''cGVvZiBjb25zb2xlPCJ1IiYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZl''@;'; put 'put ''cmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLnByb3RvdHlwZSwicGFyZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihpLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ1ZmZlcn19KSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoaS5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoaS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLGkucG9vbFNpemU9ODE5MixpLmZyb209ZnVuY3Rpb24oZCxyLGEpe3JldHVybiBwKGQs''@;'; put 'put ''cixhKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKGkucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoaSxVaW50OEFycmF5KSxpLmFsbG9jPWZ1bmN0aW9uKGQscixhKXtyZXR1cm4gZnVuY3Rpb24gdihkLHIsYSl7cmV0dXJuIHkoZCksZDw9MD9m''@;'; put 'put ''KGQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBhP2YoZCkuZmlsbChyLGEpOmYoZCkuZmlsbChyKTpmKGQpfShkLHIsYSl9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZCl7cmV0dXJuIGcoZCl9LGkuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGQpe3JldHVybiBnKGQpfSxpLmlzQnVm''@;'; put 'put ''ZmVyPWZ1bmN0aW9uKHIpe3JldHVybiBudWxsIT1yJiYhMD09PXIuX2lzQnVmZmVyJiZyIT09aS5wcm90b3R5cGV9LGkuY29tcGFyZT1mdW5jdGlvbihyLGEpe2lmKFp0KHIsVWludDhBcnJheSkmJihyPWkuZnJvbShyLHIub2Zmc2V0LHIuYnl0ZUxlbmd0aCkpLFp0KGEsVWludDhBcnJheSkm''@;'; put 'put ''JihhPWkuZnJvbShhLGEub2Zmc2V0LGEuYnl0ZUxlbmd0aCkpLCFpLmlzQnVmZmVyKHIpfHwhaS5pc0J1ZmZlcihhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZihy''@;'; put 'put ''PT09YSlyZXR1cm4gMDtmb3IodmFyIG09ci5sZW5ndGgsRD1hLmxlbmd0aCwkPTAsaD1NYXRoLm1pbihtLEQpOyQ8aDsrKyQpaWYoclskXSE9PWFbJF0pe209clskXSxEPWFbJF07YnJlYWt9cmV0dXJuIG08RD8tMTpEPG0/MTowfSxpLmlzRW5jb2Rpbmc9ZnVuY3Rpb24ocil7c3dpdGNoKFN0''@;'; put 'put ''cmluZyhyKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJu''@;'; put 'put ''ITA7ZGVmYXVsdDpyZXR1cm4hMX19LGkuY29uY2F0PWZ1bmN0aW9uKHIsYSl7aWYoIUFycmF5LmlzQXJyYXkocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gaS5hbGxvYygw''@;'; put 'put ''KTt2YXIgbTtpZih2b2lkIDA9PT1hKWZvcihhPTAsbT0wO208ci5sZW5ndGg7KyttKWErPXJbbV0ubGVuZ3RoO3ZhciBEPWkuYWxsb2NVbnNhZmUoYSksJD0wO2ZvcihtPTA7bTxyLmxlbmd0aDsrK20pe3ZhciBoPXJbbV07aWYoWnQoaCxVaW50OEFycmF5KSkkK2gubGVuZ3RoPkQubGVuZ3Ro''@;'; put 'put ''P2kuZnJvbShoKS5jb3B5KEQsJCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoRCxoLCQpO2Vsc2V7aWYoIWkuaXNCdWZmZXIoaCkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2guY29weShELCQpfSQrPWgu''@;'; put 'put ''bGVuZ3RofXJldHVybiBEfSxpLmJ5dGVMZW5ndGg9YixpLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsaS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7aWYociUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlw''@;'; put 'put ''bGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgYT0wO2E8cjthKz0yKVModGhpcyxhLGErMSk7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciByPXRoaXMubGVuZ3RoO2lmKHIlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBh''@;'; put 'put ''IG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIGE9MDthPHI7YSs9NClTKHRoaXMsYSxhKzMpLFModGhpcyxhKzEsYSsyKTtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7aWYociU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9y''@;'; put 'put ''KCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgYT0wO2E8cjthKz04KVModGhpcyxhLGErNyksUyh0aGlzLGErMSxhKzYpLFModGhpcyxhKzIsYSs1KSxTKHRoaXMsYSszLGErNCk7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLnRvTG9jYWxlU3Ry''@;'; put 'put ''aW5nPWkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1yPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP1godGhpcywwLHIpOk8uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24ocil7aWYoIWku''@;'; put 'put ''aXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09cnx8MD09PWkuY29tcGFyZSh0aGlzLHIpfSxpLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHI9IiIsYT1sLklOU1BFQ1RfTUFYX0JZVEVTO3Jl''@;'; put 'put ''dHVybiByPXRoaXMudG9TdHJpbmcoImhleCIsMCxhKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPmEmJihyKz0iIC4uLiAiKSwiPEJ1ZmZlciAiK3IrIj4ifSxzJiYoaS5wcm90b3R5cGVbc109aS5wcm90b3R5cGUuaW5zcGVjdCksaS5wcm90b3R5cGUuY29t''@;'; put 'put ''cGFyZT1mdW5jdGlvbihyLGEsbSxELCQpe2lmKFp0KHIsVWludDhBcnJheSkmJihyPWkuZnJvbShyLHIub2Zmc2V0LHIuYnl0ZUxlbmd0aCkpLCFpLmlzQnVmZmVyKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZl''@;'; put 'put ''ciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHIpO2lmKHZvaWQgMD09PWEmJihhPTApLHZvaWQgMD09PW0mJihtPXI/ci5sZW5ndGg6MCksdm9pZCAwPT09RCYmKEQ9MCksdm9pZCAwPT09JCYmKCQ9dGhpcy5sZW5ndGgpLGE8MHx8bT5yLmxlbmd0aHx8RDwwfHwkPnRo''@;'; put 'put ''aXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihEPj0kJiZhPj1tKXJldHVybiAwO2lmKEQ+PSQpcmV0dXJuLTE7aWYoYT49bSlyZXR1cm4gMTtpZih0aGlzPT09cilyZXR1cm4gMDtmb3IodmFyIGg9KCQ+Pj49MCktKEQ+Pj49MCksUD0obT4+''@;'; put 'put ''Pj0wKS0oYT4+Pj0wKSxJPU1hdGgubWluKGgsUCksVD10aGlzLnNsaWNlKEQsJCksQT1yLnNsaWNlKGEsbSksaz0wO2s8STsrK2spaWYoVFtrXSE9PUFba10pe2g9VFtrXSxQPUFba107YnJlYWt9cmV0dXJuIGg8UD8tMTpQPGg/MTowfSxpLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihy''@;'; put 'put ''LGEsbSl7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YocixhLG0pfSxpLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gQyh0aGlzLHIsYSxtLCEwKX0saS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24ocixhLG0pe3JldHVybiBDKHRoaXMscixhLG0sITEpfSxp''@;'; put 'put ''LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihyLGEsbSxEKXtpZih2b2lkIDA9PT1hKUQ9InV0ZjgiLG09dGhpcy5sZW5ndGgsYT0wO2Vsc2UgaWYodm9pZCAwPT09bSYmInN0cmluZyI9PXR5cGVvZiBhKUQ9YSxtPXRoaXMubGVuZ3RoLGE9MDtlbHNle2lmKCFpc0Zpbml0ZShhKSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7YT4+Pj0wLGlzRmluaXRlKG0pPyhtPj4+PTAsdm9pZCAwPT09RCYmKEQ9InV0ZjgiKSk6KEQ9bSxtPXZvaWQgMCl9dmFyICQ9dGhpcy5sZW5n''@;'; put 'put ''dGgtYTtpZigodm9pZCAwPT09bXx8bT4kKSYmKG09JCksci5sZW5ndGg+MCYmKG08MHx8YTwwKXx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtEfHwoRD0idXRmOCIpO2Zvcih2YXIgaD0hMTs7KXN3''@;'; put 'put ''aXRjaChEKXtjYXNlImhleCI6cmV0dXJuIFUodGhpcyxyLGEsbSk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gWih0aGlzLHIsYSxtKTtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB0dCh0aGlzLHIsYSxtKTtjYXNlImJhc2U2NCI6cmV0dXJuIF8o''@;'; put 'put ''dGhpcyxyLGEsbSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBudCh0aGlzLHIsYSxtKTtkZWZhdWx0OmlmKGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitEKTtEPSgiIitEKS50b0xvd2VyQ2FzZSgp''@;'; put 'put ''LGg9ITB9fSxpLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBWPTQwOTY7ZnVuY3Rpb24gWShkLHIsYSl7dmFyIG09IiI7YT1NYXRoLm1pbihkLmxl''@;'; put 'put ''bmd0aCxhKTtmb3IodmFyIEQ9cjtEPGE7KytEKW0rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmRbRF0pO3JldHVybiBtfWZ1bmN0aW9uIGZ0KGQscixhKXt2YXIgbT0iIjthPU1hdGgubWluKGQubGVuZ3RoLGEpO2Zvcih2YXIgRD1yO0Q8YTsrK0QpbSs9U3RyaW5nLmZyb21DaGFyQ29kZShk''@;'; put 'put ''W0RdKTtyZXR1cm4gbX1mdW5jdGlvbiB2dChkLHIsYSl7dmFyIG09ZC5sZW5ndGg7KCFyfHxyPDApJiYocj0wKSwoIWF8fGE8MHx8YT5tKSYmKGE9bSk7Zm9yKHZhciBEPSIiLCQ9cjskPGE7KyskKUQrPWxuW2RbJF1dO3JldHVybiBEfWZ1bmN0aW9uIE10KGQscixhKXtmb3IodmFyIG09ZC5z''@;'; put 'put ''bGljZShyLGEpLEQ9IiIsJD0wOyQ8bS5sZW5ndGgtMTskKz0yKUQrPVN0cmluZy5mcm9tQ2hhckNvZGUobVskXSsyNTYqbVskKzFdKTtyZXR1cm4gRH1mdW5jdGlvbiBFdChkLHIsYSl7aWYoZCUxIT0wfHxkPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lm''@;'; put 'put ''KGQrcj5hKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gRnQoZCxyLGEsbSxELCQpe2lmKCFpLmlzQnVmZmVyKGQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZm''@;'; put 'put ''ZXIgaW5zdGFuY2UnKTtpZihyPkR8fHI8JCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoYSttPmQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBqdChkLHIsYSxtLEQs''@;'; put 'put ''JCl7aWYoYSttPmQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihhPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIFh0KGQscixhLG0sRCl7cmV0dXJuIHI9K3IsYT4+Pj0wLER8fGp0KGQsMCxh''@;'; put 'put ''LDQpLGUud3JpdGUoZCxyLGEsbSwyMyw0KSxhKzR9ZnVuY3Rpb24gQnQoZCxyLGEsbSxEKXtyZXR1cm4gcj0rcixhPj4+PTAsRHx8anQoZCwwLGEsOCksZS53cml0ZShkLHIsYSxtLDUyLDgpLGErOH1pLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihyLGEpe3ZhciBtPXRoaXMubGVuZ3RoOyhy''@;'; put 'put ''PX5+cik8MD8ocis9bSk8MCYmKHI9MCk6cj5tJiYocj1tKSwoYT12b2lkIDA9PT1hP206fn5hKTwwPyhhKz1tKTwwJiYoYT0wKTphPm0mJihhPW0pLGE8ciYmKGE9cik7dmFyIEQ9dGhpcy5zdWJhcnJheShyLGEpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoRCxpLnByb3RvdHlwZSks''@;'; put 'put ''RH0saS5wcm90b3R5cGUucmVhZFVpbnRMRT1pLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHIsYSxtKXtyPj4+PTAsYT4+Pj0wLG18fEV0KHIsYSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBEPXRoaXNbcl0sJD0xLGg9MDsrK2g8YSYmKCQqPTI1Nik7KUQrPXRoaXNbcitoXSokO3JldHVy''@;'; put 'put ''biBEfSxpLnByb3RvdHlwZS5yZWFkVWludEJFPWkucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24ocixhLG0pe3I+Pj49MCxhPj4+PTAsbXx8RXQocixhLHRoaXMubGVuZ3RoKTtmb3IodmFyIEQ9dGhpc1tyKy0tYV0sJD0xO2E+MCYmKCQqPTI1Nik7KUQrPXRoaXNbcistLWFdKiQ7cmV0''@;'; put 'put ''dXJuIER9LGkucHJvdG90eXBlLnJlYWRVaW50OD1pLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24ocixhKXtyZXR1cm4gcj4+Pj0wLGF8fEV0KHIsMSx0aGlzLmxlbmd0aCksdGhpc1tyXX0saS5wcm90b3R5cGUucmVhZFVpbnQxNkxFPWkucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5j''@;'; put 'put ''dGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociwyLHRoaXMubGVuZ3RoKSx0aGlzW3JdfHRoaXNbcisxXTw8OH0saS5wcm90b3R5cGUucmVhZFVpbnQxNkJFPWkucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociwyLHRoaXMubGVu''@;'; put 'put ''Z3RoKSx0aGlzW3JdPDw4fHRoaXNbcisxXX0saS5wcm90b3R5cGUucmVhZFVpbnQzMkxFPWkucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociw0LHRoaXMubGVuZ3RoKSwodGhpc1tyXXx0aGlzW3IrMV08PDh8dGhpc1tyKzJdPDwxNikr''@;'; put 'put ''MTY3NzcyMTYqdGhpc1tyKzNdfSxpLnByb3RvdHlwZS5yZWFkVWludDMyQkU9aS5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxFdChyLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbcl0rKHRoaXNbcisxXTw8MTZ8dGhpc1tyKzJdPDw4''@;'; put 'put ''fHRoaXNbciszXSl9LGkucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihyLGEsbSl7cj4+Pj0wLGE+Pj49MCxtfHxFdChyLGEsdGhpcy5sZW5ndGgpO2Zvcih2YXIgRD10aGlzW3JdLCQ9MSxoPTA7KytoPGEmJigkKj0yNTYpOylEKz10aGlzW3IraF0qJDtyZXR1cm4gRD49KCQqPTEyOCkm''@;'; put 'put ''JihELT1NYXRoLnBvdygyLDgqYSkpLER9LGkucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihyLGEsbSl7cj4+Pj0wLGE+Pj49MCxtfHxFdChyLGEsdGhpcy5sZW5ndGgpO2Zvcih2YXIgRD1hLCQ9MSxoPXRoaXNbcistLURdO0Q+MCYmKCQqPTI1Nik7KWgrPXRoaXNbcistLURdKiQ7cmV0''@;'; put 'put ''dXJuIGg+PSgkKj0xMjgpJiYoaC09TWF0aC5wb3coMiw4KmEpKSxofSxpLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tyXT8tMSooMjU1LXRoaXNbcl0rMSk6dGhpc1tyXX0saS5wcm90b3R5cGUu''@;'; put 'put ''cmVhZEludDE2TEU9ZnVuY3Rpb24ocixhKXtyPj4+PTAsYXx8RXQociwyLHRoaXMubGVuZ3RoKTt2YXIgbT10aGlzW3JdfHRoaXNbcisxXTw8ODtyZXR1cm4gMzI3NjgmbT80Mjk0OTAxNzYwfG06bX0saS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24ocixhKXtyPj4+PTAsYXx8RXQo''@;'; put 'put ''ciwyLHRoaXMubGVuZ3RoKTt2YXIgbT10aGlzW3IrMV18dGhpc1tyXTw8ODtyZXR1cm4gMzI3NjgmbT80Mjk0OTAxNzYwfG06bX0saS5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24ocixhKXtyZXR1cm4gcj4+Pj0wLGF8fEV0KHIsNCx0aGlzLmxlbmd0aCksdGhpc1tyXXx0aGlzW3Ir''@;'; put 'put ''MV08PDh8dGhpc1tyKzJdPDwxNnx0aGlzW3IrM108PDI0fSxpLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociw0LHRoaXMubGVuZ3RoKSx0aGlzW3JdPDwyNHx0aGlzW3IrMV08PDE2fHRoaXNbcisyXTw8OHx0aGlzW3IrM119LGkucHJv''@;'; put 'put ''dG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxFdChyLDQsdGhpcy5sZW5ndGgpLGUucmVhZCh0aGlzLHIsITAsMjMsNCl9LGkucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIHI+Pj49MCxhfHxFdChyLDQsdGhpcy5sZW5n''@;'; put 'put ''dGgpLGUucmVhZCh0aGlzLHIsITEsMjMsNCl9LGkucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihyLGEpe3JldHVybiByPj4+PTAsYXx8RXQociw4LHRoaXMubGVuZ3RoKSxlLnJlYWQodGhpcyxyLCEwLDUyLDgpfSxpLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24ocixh''@;'; put 'put ''KXtyZXR1cm4gcj4+Pj0wLGF8fEV0KHIsOCx0aGlzLmxlbmd0aCksZS5yZWFkKHRoaXMsciwhMSw1Miw4KX0saS5wcm90b3R5cGUud3JpdGVVaW50TEU9aS5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24ocixhLG0sRCl7cj0rcixhPj4+PTAsbT4+Pj0wLER8fEZ0KHRoaXMscixhLG0s''@;'; put 'put ''TWF0aC5wb3coMiw4Km0pLTEsMCk7dmFyIGg9MSxQPTA7Zm9yKHRoaXNbYV09MjU1JnI7KytQPG0mJihoKj0yNTYpOyl0aGlzW2ErUF09ci9oJjI1NTtyZXR1cm4gYSttfSxpLnByb3RvdHlwZS53cml0ZVVpbnRCRT1pLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihyLGEsbSxEKXty''@;'; put 'put ''PStyLGE+Pj49MCxtPj4+PTAsRHx8RnQodGhpcyxyLGEsbSxNYXRoLnBvdygyLDgqbSktMSwwKTt2YXIgaD1tLTEsUD0xO2Zvcih0aGlzW2EraF09MjU1JnI7LS1oPj0wJiYoUCo9MjU2KTspdGhpc1thK2hdPXIvUCYyNTU7cmV0dXJuIGErbX0saS5wcm90b3R5cGUud3JpdGVVaW50OD1pLnBy''@;'; put 'put ''b3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEsMSwyNTUsMCksdGhpc1thXT0yNTUmcixhKzF9LGkucHJvdG90eXBlLndyaXRlVWludDE2TEU9aS5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihyLGEsbSl7''@;'; put 'put ''cmV0dXJuIHI9K3IsYT4+Pj0wLG18fEZ0KHRoaXMscixhLDIsNjU1MzUsMCksdGhpc1thXT0yNTUmcix0aGlzW2ErMV09cj4+PjgsYSsyfSxpLnByb3RvdHlwZS53cml0ZVVpbnQxNkJFPWkucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24ocixhLG0pe3JldHVybiByPStyLGE+Pj49''@;'; put 'put ''MCxtfHxGdCh0aGlzLHIsYSwyLDY1NTM1LDApLHRoaXNbYV09cj4+PjgsdGhpc1thKzFdPTI1NSZyLGErMn0saS5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1pLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEs''@;'; put 'put ''NCw0Mjk0OTY3Mjk1LDApLHRoaXNbYSszXT1yPj4+MjQsdGhpc1thKzJdPXI+Pj4xNix0aGlzW2ErMV09cj4+PjgsdGhpc1thXT0yNTUmcixhKzR9LGkucHJvdG90eXBlLndyaXRlVWludDMyQkU9aS5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIHI9K3Is''@;'; put 'put ''YT4+Pj0wLG18fEZ0KHRoaXMscixhLDQsNDI5NDk2NzI5NSwwKSx0aGlzW2FdPXI+Pj4yNCx0aGlzW2ErMV09cj4+PjE2LHRoaXNbYSsyXT1yPj4+OCx0aGlzW2ErM109MjU1JnIsYSs0fSxpLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHIsYSxtLEQpe2lmKHI9K3IsYT4+Pj0wLCFE''@;'; put 'put ''KXt2YXIgJD1NYXRoLnBvdygyLDgqbS0xKTtGdCh0aGlzLHIsYSxtLCQtMSwtJCl9dmFyIGg9MCxQPTEsST0wO2Zvcih0aGlzW2FdPTI1NSZyOysraDxtJiYoUCo9MjU2KTspcjwwJiYwPT09SSYmMCE9PXRoaXNbYStoLTFdJiYoST0xKSx0aGlzW2EraF09KHIvUD4+MCktSSYyNTU7cmV0dXJu''@;'; put 'put ''IGErbX0saS5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihyLGEsbSxEKXtpZihyPStyLGE+Pj49MCwhRCl7dmFyICQ9TWF0aC5wb3coMiw4Km0tMSk7RnQodGhpcyxyLGEsbSwkLTEsLSQpfXZhciBoPW0tMSxQPTEsST0wO2Zvcih0aGlzW2EraF09MjU1JnI7LS1oPj0wJiYoUCo9MjU2''@;'; put 'put ''KTspcjwwJiYwPT09SSYmMCE9PXRoaXNbYStoKzFdJiYoST0xKSx0aGlzW2EraF09KHIvUD4+MCktSSYyNTU7cmV0dXJuIGErbX0saS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEsMSwxMjcsLTEyOCkscjwwJiYo''@;'; put 'put ''cj0yNTUrcisxKSx0aGlzW2FdPTI1NSZyLGErMX0saS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEsMiwzMjc2NywtMzI3NjgpLHRoaXNbYV09MjU1JnIsdGhpc1thKzFdPXI+Pj44LGErMn0saS5wcm90b3R5''@;'; put 'put ''cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gcj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEsMiwzMjc2NywtMzI3NjgpLHRoaXNbYV09cj4+PjgsdGhpc1thKzFdPTI1NSZyLGErMn0saS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4g''@;'; put 'put ''cj0rcixhPj4+PTAsbXx8RnQodGhpcyxyLGEsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2FdPTI1NSZyLHRoaXNbYSsxXT1yPj4+OCx0aGlzW2ErMl09cj4+PjE2LHRoaXNbYSszXT1yPj4+MjQsYSs0fSxpLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24ocixhLG0pe3Jl''@;'; put 'put ''dHVybiByPStyLGE+Pj49MCxtfHxGdCh0aGlzLHIsYSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHI8MCYmKHI9NDI5NDk2NzI5NStyKzEpLHRoaXNbYV09cj4+PjI0LHRoaXNbYSsxXT1yPj4+MTYsdGhpc1thKzJdPXI+Pj44LHRoaXNbYSszXT0yNTUmcixhKzR9LGkucHJvdG90eXBlLndy''@;'; put 'put ''aXRlRmxvYXRMRT1mdW5jdGlvbihyLGEsbSl7cmV0dXJuIFh0KHRoaXMscixhLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24ocixhLG0pe3JldHVybiBYdCh0aGlzLHIsYSwhMSxtKX0saS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihyLGEsbSl7cmV0''@;'; put 'put ''dXJuIEJ0KHRoaXMscixhLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHIsYSxtKXtyZXR1cm4gQnQodGhpcyxyLGEsITEsbSl9LGkucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24ocixhLG0sRCl7aWYoIWkuaXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''YXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyIik7aWYobXx8KG09MCksIUQmJjAhPT1EJiYoRD10aGlzLmxlbmd0aCksYT49ci5sZW5ndGgmJihhPXIubGVuZ3RoKSxhfHwoYT0wKSxEPjAmJkQ8bSYmKEQ9bSksRD09PW18fDA9PT1yLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAw''@;'; put 'put ''O2lmKGE8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG08MHx8bT49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKEQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91''@;'; put 'put ''dCBvZiBib3VuZHMiKTtEPnRoaXMubGVuZ3RoJiYoRD10aGlzLmxlbmd0aCksci5sZW5ndGgtYTxELW0mJihEPXIubGVuZ3RoLWErbSk7dmFyICQ9RC1tO3JldHVybiB0aGlzPT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/dGhpcy5jb3B5''@;'; put 'put ''V2l0aGluKGEsbSxEKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChyLHRoaXMuc3ViYXJyYXkobSxEKSxhKSwkfSxpLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHIsYSxtLEQpe2lmKCJzdHJpbmciPT10eXBlb2Ygcil7aWYoInN0cmluZyI9PXR5cGVvZiBhPyhEPWEsYT0wLG09dGhp''@;'; put 'put ''cy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbSYmKEQ9bSxtPXRoaXMubGVuZ3RoKSx2b2lkIDAhPT1EJiYic3RyaW5nIiE9dHlwZW9mIEQpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgRCYmIWkuaXNFbmNvZGlu''@;'; put 'put ''ZyhEKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0QpO2lmKDE9PT1yLmxlbmd0aCl7dmFyICQ9ci5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1EJiYkPDEyOHx8ImxhdGluMSI9PT1EKSYmKHI9JCl9fWVsc2UibnVtYmVyIj09dHlwZW9mIHI/ciY9MjU1OiJib29s''@;'; put 'put ''ZWFuIj09dHlwZW9mIHImJihyPU51bWJlcihyKSk7aWYoYTwwfHx0aGlzLmxlbmd0aDxhfHx0aGlzLmxlbmd0aDxtKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihtPD1hKXJldHVybiB0aGlzO3ZhciBoO2lmKGE+Pj49MCxtPXZvaWQgMD09PW0/dGhpcy5s''@;'; put 'put ''ZW5ndGg6bT4+PjAscnx8KHI9MCksIm51bWJlciI9PXR5cGVvZiByKWZvcihoPWE7aDxtOysraCl0aGlzW2hdPXI7ZWxzZXt2YXIgUD1pLmlzQnVmZmVyKHIpP3I6aS5mcm9tKHIsRCksST1QLmxlbmd0aDtpZigwPT09SSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrcisnIiBp''@;'; put 'put ''cyBpbnZhbGlkIGZvciBhcmd1bWVudCAidmFsdWUiJyk7Zm9yKGg9MDtoPG0tYTsrK2gpdGhpc1toK2FdPVBbaCVJXX1yZXR1cm4gdGhpc307dmFyIFF0PS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gbm4oZCxyKXtyPXJ8fDEvMDtmb3IodmFyIGEsbT1kLmxlbmd0aCxEPW51bGwsJD1b''@;'; put 'put ''XSxoPTA7aDxtOysraCl7aWYoKGE9ZC5jaGFyQ29kZUF0KGgpKT41NTI5NSYmYTw1NzM0NCl7aWYoIUQpe2lmKGE+NTYzMTkpeyhyLT0zKT4tMSYmJC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihoKzE9PT1tKXsoci09Myk+LTEmJiQucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9''@;'; put 'put ''RD1hO2NvbnRpbnVlfWlmKGE8NTYzMjApeyhyLT0zKT4tMSYmJC5wdXNoKDIzOSwxOTEsMTg5KSxEPWE7Y29udGludWV9YT02NTUzNisoRC01NTI5Njw8MTB8YS01NjMyMCl9ZWxzZSBEJiYoci09Myk+LTEmJiQucHVzaCgyMzksMTkxLDE4OSk7aWYoRD1udWxsLGE8MTI4KXtpZigoci09MSk8''@;'; put 'put ''MClicmVhazskLnB1c2goYSl9ZWxzZSBpZihhPDIwNDgpe2lmKChyLT0yKTwwKWJyZWFrOyQucHVzaChhPj42fDE5Miw2MyZhfDEyOCl9ZWxzZSBpZihhPDY1NTM2KXtpZigoci09Myk8MClicmVhazskLnB1c2goYT4+MTJ8MjI0LGE+PjYmNjN8MTI4LDYzJmF8MTI4KX1lbHNle2lmKCEoYTwx''@;'; put 'put ''MTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKChyLT00KTwwKWJyZWFrOyQucHVzaChhPj4xOHwyNDAsYT4+MTImNjN8MTI4LGE+PjYmNjN8MTI4LDYzJmF8MTI4KX19cmV0dXJuICR9ZnVuY3Rpb24gb24oZCl7cmV0dXJuIG4udG9CeXRlQXJyYXkoZnVu''@;'; put 'put ''Y3Rpb24gcm4oZCl7aWYoKGQ9KGQ9ZC5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZShRdCwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZC5sZW5ndGglNCE9MDspZCs9Ij0iO3JldHVybiBkfShkKSl9ZnVuY3Rpb24gWXQoZCxyLGEsbSl7Zm9yKHZhciBEPTA7RDxtJiYhKEQrYT49''@;'; put 'put ''ci5sZW5ndGh8fEQ+PWQubGVuZ3RoKTsrK0QpcltEK2FdPWRbRF07cmV0dXJuIER9ZnVuY3Rpb24gWnQoZCxyKXtyZXR1cm4gZCBpbnN0YW5jZW9mIHJ8fG51bGwhPWQmJm51bGwhPWQuY29uc3RydWN0b3ImJm51bGwhPWQuY29uc3RydWN0b3IubmFtZSYmZC5jb25zdHJ1Y3Rvci5uYW1lPT09''@;'; put 'put ''ci5uYW1lfWZ1bmN0aW9uIGVuKGQpe3JldHVybiBkIT1kfXZhciBsbj1mdW5jdGlvbigpe2Zvcih2YXIgZD0iMDEyMzQ1Njc4OWFiY2RlZiIscj1uZXcgQXJyYXkoMjU2KSxhPTA7YTwxNjsrK2EpZm9yKHZhciBtPTE2KmEsRD0wO0Q8MTY7KytEKXJbbStEXT1kW2FdK2RbRF07cmV0dXJuIHJ9''@;'; put 'put ''KCl9LDIyNjAxOihjLGwpPT57bC5yZWFkPWZ1bmN0aW9uKHQsbixlLHMsbyl7dmFyIHUsZixpPTgqby1zLTEscD0oMTw8aSktMSx5PXA+PjEsdj0tNyxnPWU/by0xOjAseD1lPy0xOjEsRT10W24rZ107Zm9yKGcrPXgsdT1FJigxPDwtdiktMSxFPj49LXYsdis9aTt2PjA7dT0yNTYqdSt0W24r''@;'; put 'put ''Z10sZys9eCx2LT04KTtmb3IoZj11JigxPDwtdiktMSx1Pj49LXYsdis9czt2PjA7Zj0yNTYqZit0W24rZ10sZys9eCx2LT04KTtpZigwPT09dSl1PTEteTtlbHNle2lmKHU9PT1wKXJldHVybiBmP05hTjoxLzAqKEU/LTE6MSk7Zis9TWF0aC5wb3coMixzKSx1LT15fXJldHVybihFPy0xOjEp''@;'; put 'put ''KmYqTWF0aC5wb3coMix1LXMpfSxsLndyaXRlPWZ1bmN0aW9uKHQsbixlLHMsbyx1KXt2YXIgZixpLHAseT04KnUtby0xLHY9KDE8PHkpLTEsZz12Pj4xLHg9MjM9PT1vP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxFPXM/MDp1LTEsaj1zPzE6LTEsdz1uPDB8fDA9PT1uJiYx''@;'; put 'put ''L248MD8xOjA7Zm9yKG49TWF0aC5hYnMobiksaXNOYU4obil8fG49PT0xLzA/KGk9aXNOYU4obik/MTowLGY9dik6KGY9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMiksbioocD1NYXRoLnBvdygyLC1mKSk8MSYmKGYtLSxwKj0yKSwobis9ZitnPj0xP3gvcDp4Kk1hdGgucG93KDIs''@;'; put 'put ''MS1nKSkqcD49MiYmKGYrKyxwLz0yKSxmK2c+PXY/KGk9MCxmPXYpOmYrZz49MT8oaT0obipwLTEpKk1hdGgucG93KDIsbyksZis9Zyk6KGk9bipNYXRoLnBvdygyLGctMSkqTWF0aC5wb3coMixvKSxmPTApKTtvPj04O3RbZStFXT0yNTUmaSxFKz1qLGkvPTI1NixvLT04KTtmb3IoZj1mPDxv''@;'; put 'put ''fGkseSs9bzt5PjA7dFtlK0VdPTI1NSZmLEUrPWosZi89MjU2LHktPTgpO3RbZStFLWpdfD0xMjgqd319LDQ4MzMyOigpPT57InVzZSBzdHJpY3QiOyFmdW5jdGlvbihoKXtjb25zdCBQPWgucGVyZm9ybWFuY2U7ZnVuY3Rpb24gSShJdCl7UCYmUC5tYXJrJiZQLm1hcmsoSXQpfWZ1bmN0aW9u''@;'; put 'put ''IFQoSXQsYXQpe1AmJlAubWVhc3VyZSYmUC5tZWFzdXJlKEl0LGF0KX1JKCJab25lIik7Y29uc3QgQT1oLl9fWm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIjtmdW5jdGlvbiBrKEl0KXtyZXR1cm4gQStJdH1jb25zdCBKPSEwPT09aFtrKCJmb3JjZUR1cGxpY2F0ZVpvbmVD''@;'; put 'put ''aGVjayIpXTtpZihoLlpvbmUpe2lmKEp8fCJmdW5jdGlvbiIhPXR5cGVvZiBoLlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIGguWm9uZX1sZXQgej0oKCk9PntjbGFzcyBJdHtzdGF0aWMgYXNzZXJ0Wm9uZVBhdGNoZWQoKXtp''@;'; put 'put ''ZihoLlByb21pc2UhPT1fdC5ab25lQXdhcmVQcm9taXNlKXRocm93IG5ldyBFcnJvcigiWm9uZS5qcyBoYXMgZGV0ZWN0ZWQgdGhhdCBab25lQXdhcmVQcm9taXNlIGAod2luZG93fGdsb2JhbCkuUHJvbWlzZWAgaGFzIGJlZW4gb3ZlcndyaXR0ZW4uXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0''@;'; put 'put ''aGF0IGEgUHJvbWlzZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0ZXIgWm9uZS5qcyAoUG9seWZpbGxpbmcgUHJvbWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVkLiBJZiB5b3UgbXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9u''@;'; put 'put ''ZS5qcy4pIil9c3RhdGljIGdldCByb290KCl7bGV0IE09SXQuY3VycmVudDtmb3IoO00ucGFyZW50OylNPU0ucGFyZW50O3JldHVybiBNfXN0YXRpYyBnZXQgY3VycmVudCgpe3JldHVybiBMdC56b25lfXN0YXRpYyBnZXQgY3VycmVudFRhc2soKXtyZXR1cm4gcXR9c3RhdGljIF9fbG9hZF9w''@;'; put 'put ''YXRjaChNLE4saHQ9ITEpe2lmKF90Lmhhc093blByb3BlcnR5KE0pKXtpZighaHQmJkopdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK00pfWVsc2UgaWYoIWhbIl9fWm9uZV9kaXNhYmxlXyIrTV0pe2NvbnN0IG10PSJab25lOiIrTTtJKG10KSxfdFtNXT1OKGgsSXQsSHQp''@;'; put 'put ''LFQobXQsbXQpfX1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfWNvbnN0cnVjdG9yKE0sTil7dGhpcy5fcGFyZW50PU0sdGhpcy5fbmFtZT1OP04ubmFtZXx8InVubmFtZWQiOiI8cm9vdD4iLHRoaXMuX3Byb3BlcnRpZXM9TiYm''@;'; put 'put ''Ti5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IGN0KHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxOKX1nZXQoTSl7Y29uc3QgTj10aGlzLmdldFpvbmVXaXRoKE0pO2lmKE4pcmV0dXJuIE4uX3Byb3BlcnRpZXNbTV19Z2V0Wm9uZVdp''@;'; put 'put ''dGgoTSl7bGV0IE49dGhpcztmb3IoO047KXtpZihOLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KE0pKXJldHVybiBOO049Ti5fcGFyZW50fXJldHVybiBudWxsfWZvcmsoTSl7aWYoIU0pdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURl''@;'; put 'put ''bGVnYXRlLmZvcmsodGhpcyxNKX13cmFwKE0sTil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIE0pdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK00pO2NvbnN0IGh0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyxNLE4pLG10PXRoaXM7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIG10LnJ1bkd1YXJkZWQoaHQsdGhpcyxhcmd1bWVudHMsTil9fXJ1bihNLE4saHQsbXQpe0x0PXtwYXJlbnQ6THQsem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxNLE4saHQsbXQpfWZpbmFsbHl7THQ9THQucGFyZW50''@;'; put 'put ''fX1ydW5HdWFyZGVkKE0sTj1udWxsLGh0LG10KXtMdD17cGFyZW50Okx0LHpvbmU6dGhpc307dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLE0sTixodCxtdCl9Y2F0Y2goV3Qpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLFd0KSl0''@;'; put 'put ''aHJvdyBXdH19ZmluYWxseXtMdD1MdC5wYXJlbnR9fXJ1blRhc2soTSxOLGh0KXtpZihNLnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKE0uem9uZXx8R3QpLm5hbWUrIjsgRXhl''@;'; put 'put ''Y3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKE0uc3RhdGU9PT1EdCYmKE0udHlwZT09PXp0fHxNLnR5cGU9PT1kdCkpcmV0dXJuO2NvbnN0IG10PU0uc3RhdGUhPXJ0O210JiZNLl90cmFuc2l0aW9uVG8ocnQsd3QpLE0ucnVuQ291bnQrKztjb25zdCBXdD1xdDtxdD1NLEx0PXtwYXJlbnQ6''@;'; put 'put ''THQsem9uZTp0aGlzfTt0cnl7TS50eXBlPT1kdCYmTS5kYXRhJiYhTS5kYXRhLmlzUGVyaW9kaWMmJihNLmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLE0sTixodCl9Y2F0Y2goSCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhh''@;'; put 'put ''bmRsZUVycm9yKHRoaXMsSCkpdGhyb3cgSH19ZmluYWxseXtNLnN0YXRlIT09RHQmJk0uc3RhdGUhPT1xJiYoTS50eXBlPT16dHx8TS5kYXRhJiZNLmRhdGEuaXNQZXJpb2RpYz9tdCYmTS5fdHJhbnNpdGlvblRvKHd0LHJ0KTooTS5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudChN''@;'; put 'put ''LC0xKSxtdCYmTS5fdHJhbnNpdGlvblRvKER0LHJ0LER0KSkpLEx0PUx0LnBhcmVudCxxdD1XdH19c2NoZWR1bGVUYXNrKE0pe2lmKE0uem9uZSYmTS56b25lIT09dGhpcyl7bGV0IGh0PXRoaXM7Zm9yKDtodDspe2lmKGh0PT09TS56b25lKXRocm93IEVycm9yKGBjYW4gbm90IHJlc2NoZWR1''@;'; put 'put ''bGUgdGFzayB0byAke3RoaXMubmFtZX0gd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgJHtNLnpvbmUubmFtZX1gKTtodD1odC5wYXJlbnR9fU0uX3RyYW5zaXRpb25UbyhVdCxEdCk7Y29uc3QgTj1bXTtNLl96b25lRGVsZWdhdGVzPU4sTS5fem9uZT10aGlzO3Ry''@;'; put 'put ''eXtNPXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyxNKX1jYXRjaChodCl7dGhyb3cgTS5fdHJhbnNpdGlvblRvKHEsVXQsRHQpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGh0KSxodH1yZXR1cm4gTS5fem9uZURlbGVnYXRlcz09PU4mJnRoaXMuX3Vw''@;'; put 'put ''ZGF0ZVRhc2tDb3VudChNLDEpLE0uc3RhdGU9PVV0JiZNLl90cmFuc2l0aW9uVG8od3QsVXQpLE19c2NoZWR1bGVNaWNyb1Rhc2soTSxOLGh0LG10KXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGl0KFB0LE0sTixodCxtdCx2b2lkIDApKX1zY2hlZHVsZU1hY3JvVGFzayhNLE4saHQs''@;'; put 'put ''bXQsV3Qpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgaXQoZHQsTSxOLGh0LG10LFd0KSl9c2NoZWR1bGVFdmVudFRhc2soTSxOLGh0LG10LFd0KXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGl0KHp0LE0sTixodCxtdCxXdCkpfWNhbmNlbFRhc2soTSl7aWYoTS56b25lIT10''@;'; put 'put ''aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhNLnpvbmV8fEd0KS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtpZihNLnN0YXRlPT09d3R8fE0uc3RhdGU9PT1y''@;'; put 'put ''dCl7TS5fdHJhbnNpdGlvblRvKEN0LHd0LHJ0KTt0cnl7dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcyxNKX1jYXRjaChOKXt0aHJvdyBNLl90cmFuc2l0aW9uVG8ocSxDdCksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsTiksTn1yZXR1cm4gdGhpcy5fdXBk''@;'; put 'put ''YXRlVGFza0NvdW50KE0sLTEpLE0uX3RyYW5zaXRpb25UbyhEdCxDdCksTS5ydW5Db3VudD0wLE19fV91cGRhdGVUYXNrQ291bnQoTSxOKXtjb25zdCBodD1NLl96b25lRGVsZWdhdGVzOy0xPT1OJiYoTS5fem9uZURlbGVnYXRlcz1udWxsKTtmb3IobGV0IG10PTA7bXQ8aHQubGVuZ3RoO210''@;'; put 'put ''KyspaHRbbXRdLl91cGRhdGVUYXNrQ291bnQoTS50eXBlLE4pfX1yZXR1cm4gSXQuX19zeW1ib2xfXz1rLEl0fSkoKTtjb25zdCBvdD17bmFtZToiIixvbkhhc1Rhc2s6KEl0LGF0LE0sTik9Pkl0Lmhhc1Rhc2soTSxOKSxvblNjaGVkdWxlVGFzazooSXQsYXQsTSxOKT0+SXQuc2NoZWR1bGVU''@;'; put 'put ''YXNrKE0sTiksb25JbnZva2VUYXNrOihJdCxhdCxNLE4saHQsbXQpPT5JdC5pbnZva2VUYXNrKE0sTixodCxtdCksb25DYW5jZWxUYXNrOihJdCxhdCxNLE4pPT5JdC5jYW5jZWxUYXNrKE0sTil9O2NsYXNzIGN0e2NvbnN0cnVjdG9yKGF0LE0sTil7dGhpcy5fdGFza0NvdW50cz17bWljcm9U''@;'; put 'put ''YXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT1hdCx0aGlzLl9wYXJlbnREZWxlZ2F0ZT1NLHRoaXMuX2ZvcmtaUz1OJiYoTiYmTi5vbkZvcms/TjpNLl9mb3JrWlMpLHRoaXMuX2ZvcmtEbGd0PU4mJihOLm9uRm9yaz9NOk0uX2ZvcmtEbGd0KSx0aGlzLl9mb3JrQ3Vy''@;'; put 'put ''clpvbmU9TiYmKE4ub25Gb3JrP3RoaXMuem9uZTpNLl9mb3JrQ3VyclpvbmUpLHRoaXMuX2ludGVyY2VwdFpTPU4mJihOLm9uSW50ZXJjZXB0P046TS5faW50ZXJjZXB0WlMpLHRoaXMuX2ludGVyY2VwdERsZ3Q9TiYmKE4ub25JbnRlcmNlcHQ/TTpNLl9pbnRlcmNlcHREbGd0KSx0aGlzLl9p''@;'; put 'put ''bnRlcmNlcHRDdXJyWm9uZT1OJiYoTi5vbkludGVyY2VwdD90aGlzLnpvbmU6TS5faW50ZXJjZXB0Q3VyclpvbmUpLHRoaXMuX2ludm9rZVpTPU4mJihOLm9uSW52b2tlP046TS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9TiYmKE4ub25JbnZva2U/TTpNLl9pbnZva2VEbGd0KSx0aGlz''@;'; put 'put ''Ll9pbnZva2VDdXJyWm9uZT1OJiYoTi5vbkludm9rZT90aGlzLnpvbmU6TS5faW52b2tlQ3VyclpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9TiYmKE4ub25IYW5kbGVFcnJvcj9OOk0uX2hhbmRsZUVycm9yWlMpLHRoaXMuX2hhbmRsZUVycm9yRGxndD1OJiYoTi5vbkhhbmRsZUVycm9yP006''@;'; put 'put ''TS5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPU4mJihOLm9uSGFuZGxlRXJyb3I/dGhpcy56b25lOk0uX2hhbmRsZUVycm9yQ3VyclpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPU4mJihOLm9uU2NoZWR1bGVUYXNrP046TS5fc2NoZWR1bGVUYXNrWlMpLHRo''@;'; put 'put ''aXMuX3NjaGVkdWxlVGFza0RsZ3Q9TiYmKE4ub25TY2hlZHVsZVRhc2s/TTpNLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1OJiYoTi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6TS5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLHRoaXMuX2ludm9rZVRhc2ta''@;'; put 'put ''Uz1OJiYoTi5vbkludm9rZVRhc2s/TjpNLl9pbnZva2VUYXNrWlMpLHRoaXMuX2ludm9rZVRhc2tEbGd0PU4mJihOLm9uSW52b2tlVGFzaz9NOk0uX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9TiYmKE4ub25JbnZva2VUYXNrP3RoaXMuem9uZTpNLl9pbnZva2VU''@;'; put 'put ''YXNrQ3VyclpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1OJiYoTi5vbkNhbmNlbFRhc2s/TjpNLl9jYW5jZWxUYXNrWlMpLHRoaXMuX2NhbmNlbFRhc2tEbGd0PU4mJihOLm9uQ2FuY2VsVGFzaz9NOk0uX2NhbmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9TiYmKE4ub25D''@;'; put 'put ''YW5jZWxUYXNrP3RoaXMuem9uZTpNLl9jYW5jZWxUYXNrQ3VyclpvbmUpLHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFzVGFza0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1udWxsO2NvbnN0IGh0PU4mJk4ub25IYXNUYXNr''@;'; put 'put ''OyhodHx8TSYmTS5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1odD9OOm90LHRoaXMuX2hhc1Rhc2tEbGd0PU0sdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1hdCxOLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9b3Qs''@;'; put 'put ''dGhpcy5fc2NoZWR1bGVUYXNrRGxndD1NLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPXRoaXMuem9uZSksTi5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9b3QsdGhpcy5faW52b2tlVGFza0RsZ3Q9TSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxOLm9u''@;'; put 'put ''Q2FuY2VsVGFza3x8KHRoaXMuX2NhbmNlbFRhc2taUz1vdCx0aGlzLl9jYW5jZWxUYXNrRGxndD1NLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1mb3JrKGF0LE0pe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlz''@;'; put 'put ''LnpvbmUsYXQsTSk6bmV3IHooYXQsTSl9aW50ZXJjZXB0KGF0LE0sTil7cmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTP3RoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRoaXMuX2ludGVyY2VwdERsZ3QsdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsYXQsTSxOKTpNfWludm9rZShhdCxNLE4s''@;'; put 'put ''aHQsbXQpe3JldHVybiB0aGlzLl9pbnZva2VaUz90aGlzLl9pbnZva2VaUy5vbkludm9rZSh0aGlzLl9pbnZva2VEbGd0LHRoaXMuX2ludm9rZUN1cnJab25lLGF0LE0sTixodCxtdCk6TS5hcHBseShOLGh0KX1oYW5kbGVFcnJvcihhdCxNKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8''@;'; put 'put ''dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLGF0LE0pfXNjaGVkdWxlVGFzayhhdCxNKXtsZXQgTj1NO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmTi5fem9uZURl''@;'; put 'put ''bGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLE49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSxhdCxNKSxOfHwoTj1NKTtlbHNlIGlmKE0uc2NoZWR1bGVGbilNLnNj''@;'; put 'put ''aGVkdWxlRm4oTSk7ZWxzZXtpZihNLnR5cGUhPVB0KXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7eXQoTSl9cmV0dXJuIE59aW52b2tlVGFzayhhdCxNLE4saHQpe3JldHVybiB0aGlzLl9pbnZva2VUYXNrWlM/dGhpcy5faW52b2tlVGFza1pTLm9uSW52''@;'; put 'put ''b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUsYXQsTSxOLGh0KTpNLmNhbGxiYWNrLmFwcGx5KE4saHQpfWNhbmNlbFRhc2soYXQsTSl7bGV0IE47aWYodGhpcy5fY2FuY2VsVGFza1pTKU49dGhpcy5fY2FuY2VsVGFza1pTLm9uQ2FuY2VsVGFz''@;'; put 'put ''ayh0aGlzLl9jYW5jZWxUYXNrRGxndCx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmUsYXQsTSk7ZWxzZXtpZighTS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO049TS5jYW5jZWxGbihNKX1yZXR1cm4gTn1oYXNUYXNrKGF0LE0pe3RyeXt0aGlzLl9oYXNU''@;'; put 'put ''YXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLGF0LE0pfWNhdGNoKE4pe3RoaXMuaGFuZGxlRXJyb3IoYXQsTil9fV91cGRhdGVUYXNrQ291bnQoYXQsTSl7Y29uc3QgTj10aGlzLl90YXNrQ291bnRzLGh0PU5b''@;'; put 'put ''YXRdLG10PU5bYXRdPWh0K007aWYobXQ8MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTswIT1odCYmMCE9bXR8fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpOLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpOLm1hY3Jv''@;'; put 'put ''VGFzaz4wLGV2ZW50VGFzazpOLmV2ZW50VGFzaz4wLGNoYW5nZTphdH0pfX1jbGFzcyBpdHtjb25zdHJ1Y3RvcihhdCxNLE4saHQsbXQsV3Qpe2lmKHRoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVs''@;'; put 'put ''ZWQiLHRoaXMudHlwZT1hdCx0aGlzLnNvdXJjZT1NLHRoaXMuZGF0YT1odCx0aGlzLnNjaGVkdWxlRm49bXQsdGhpcy5jYW5jZWxGbj1XdCwhTil0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5jYWxsYmFjaz1OO2NvbnN0IEg9dGhpczt0aGlzLmludm9r''@;'; put 'put ''ZT1hdD09PXp0JiZodCYmaHQudXNlRz9pdC5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGl0Lmludm9rZVRhc2suY2FsbChoLEgsdGhpcyxhcmd1bWVudHMpfX1zdGF0aWMgaW52b2tlVGFzayhhdCxNLE4pe2F0fHwoYXQ9dGhpcyksVnQrKzt0cnl7cmV0dXJuIGF0LnJ1bkNvdW50Kyss''@;'; put 'put ''YXQuem9uZS5ydW5UYXNrKGF0LE0sTil9ZmluYWxseXsxPT1WdCYmZXQoKSxWdC0tfX1nZXQgem9uZSgpe3JldHVybiB0aGlzLl96b25lfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLl9zdGF0ZX1jYW5jZWxTY2hlZHVsZVJlcXVlc3QoKXt0aGlzLl90cmFuc2l0aW9uVG8oRHQsVXQpfV90cmFu''@;'; put 'put ''c2l0aW9uVG8oYXQsTSxOKXtpZih0aGlzLl9zdGF0ZSE9PU0mJnRoaXMuX3N0YXRlIT09Til0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy50eXBlfSAnJHt0aGlzLnNvdXJjZX0nOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyR7YXR9JywgZXhwZWN0aW5nIHN0YXRlICcke019JyR7Tj8iIG9yICci''@;'; put 'put ''K04rIiciOiIifSwgd2FzICcke3RoaXMuX3N0YXRlfScuYCk7dGhpcy5fc3RhdGU9YXQsYXQ9PUR0JiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX10b1N0cmluZygpe3JldHVybiB0aGlzLmRhdGEmJnR5cGVvZiB0aGlzLmRhdGEuaGFuZGxlSWQ8InUiP3RoaXMuZGF0YS5oYW5kbGVJZC50''@;'; put 'put ''b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKX10b0pTT04oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX19Y29uc3Qg''@;'; put 'put ''QXQ9aygic2V0VGltZW91dCIpLFN0PWsoIlByb21pc2UiKSxPdD1rKCJ0aGVuIik7bGV0IEp0LGt0PVtdLFJ0PSExO2Z1bmN0aW9uICR0KEl0KXtpZihKdHx8aFtTdF0mJihKdD1oW1N0XS5yZXNvbHZlKDApKSxKdCl7bGV0IGF0PUp0W090XTthdHx8KGF0PUp0LnRoZW4pLGF0LmNhbGwoSnQs''@;'; put 'put ''SXQpfWVsc2UgaFtBdF0oSXQsMCl9ZnVuY3Rpb24geXQoSXQpezA9PT1WdCYmMD09PWt0Lmxlbmd0aCYmJHQoZXQpLEl0JiZrdC5wdXNoKEl0KX1mdW5jdGlvbiBldCgpe2lmKCFSdCl7Zm9yKFJ0PSEwO2t0Lmxlbmd0aDspe2NvbnN0IEl0PWt0O2t0PVtdO2ZvcihsZXQgYXQ9MDthdDxJdC5s''@;'; put 'put ''ZW5ndGg7YXQrKyl7Y29uc3QgTT1JdFthdF07dHJ5e00uem9uZS5ydW5UYXNrKE0sbnVsbCxudWxsKX1jYXRjaChOKXtIdC5vblVuaGFuZGxlZEVycm9yKE4pfX19SHQubWljcm90YXNrRHJhaW5Eb25lKCksUnQ9ITF9fWNvbnN0IEd0PXtuYW1lOiJOTyBaT05FIn0sRHQ9Im5vdFNjaGVkdWxl''@;'; put 'put ''ZCIsVXQ9InNjaGVkdWxpbmciLHd0PSJzY2hlZHVsZWQiLHJ0PSJydW5uaW5nIixDdD0iY2FuY2VsaW5nIixxPSJ1bmtub3duIixQdD0ibWljcm9UYXNrIixkdD0ibWFjcm9UYXNrIix6dD0iZXZlbnRUYXNrIixfdD17fSxIdD17c3ltYm9sOmssY3VycmVudFpvbmVGcmFtZTooKT0+THQsb25V''@;'; put 'put ''bmhhbmRsZWRFcnJvcjpLdCxtaWNyb3Rhc2tEcmFpbkRvbmU6S3Qsc2NoZWR1bGVNaWNyb1Rhc2s6eXQsc2hvd1VuY2F1Z2h0RXJyb3I6KCk9PiF6W2soImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3IiKV0scGF0Y2hFdmVudFRhcmdldDooKT0+W10scGF0Y2hPblByb3BlcnRpZXM6''@;'; put 'put ''S3QscGF0Y2hNZXRob2Q6KCk9Pkt0LGJpbmRBcmd1bWVudHM6KCk9PltdLHBhdGNoVGhlbjooKT0+S3QscGF0Y2hNYWNyb1Rhc2s6KCk9Pkt0LHBhdGNoRXZlbnRQcm90b3R5cGU6KCk9Pkt0LGlzSUVPckVkZ2U6KCk9PiExLGdldEdsb2JhbE9iamVjdHM6KCk9Pnt9LE9iamVjdERlZmluZVBy''@;'; put 'put ''b3BlcnR5OigpPT5LdCxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6KCk9Pnt9LE9iamVjdENyZWF0ZTooKT0+e30sQXJyYXlTbGljZTooKT0+W10scGF0Y2hDbGFzczooKT0+S3Qsd3JhcFdpdGhDdXJyZW50Wm9uZTooKT0+S3QsZmlsdGVyUHJvcGVydGllczooKT0+W10sYXR0YWNo''@;'; put 'put ''T3JpZ2luVG9QYXRjaGVkOigpPT5LdCxfcmVkZWZpbmVQcm9wZXJ0eTooKT0+S3QscGF0Y2hDYWxsYmFja3M6KCk9Pkt0LG5hdGl2ZVNjaGVkdWxlTWljcm9UYXNrOiR0fTtsZXQgTHQ9e3BhcmVudDpudWxsLHpvbmU6bmV3IHoobnVsbCxudWxsKX0scXQ9bnVsbCxWdD0wO2Z1bmN0aW9uIEt0''@;'; put 'put ''KCl7fVQoIlpvbmUiLCJab25lIiksaC5ab25lPXp9KHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3d8fHR5cGVvZiBzZWxmPCJ1IiYmc2VsZnx8Z2xvYmFsKTtjb25zdCBjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsbD1PYmplY3QuZGVmaW5lUHJvcGVydHksdD1PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2Ysbj1PYmplY3QuY3JlYXRlLGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLHM9ImFkZEV2ZW50TGlzdGVuZXIiLG89InJlbW92ZUV2ZW50TGlzdGVuZXIiLHU9Wm9uZS5fX3N5bWJvbF9fKHMpLGY9Wm9uZS5fX3N5bWJvbF9fKG8pLGk9InRydWUiLHA9ImZhbHNlIix5PVpvbmUu''@;'; put 'put ''X19zeW1ib2xfXygiIik7ZnVuY3Rpb24gdihoLFApe3JldHVybiBab25lLmN1cnJlbnQud3JhcChoLFApfWZ1bmN0aW9uIGcoaCxQLEksVCxBKXtyZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKGgsUCxJLFQsQSl9Y29uc3QgeD1ab25lLl9fc3ltYm9sX18sRT10eXBlb2Yg''@;'; put 'put ''d2luZG93PCJ1IixqPUU/d2luZG93OnZvaWQgMCx3PUUmJmp8fCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsLFI9InJlbW92ZUF0dHJpYnV0ZSI7ZnVuY3Rpb24gRihoLFApe2ZvcihsZXQgST1oLmxlbmd0aC0xO0k+PTA7SS0tKSJmdW5jdGlvbiI9PXR5cGVvZiBoW0ldJiYo''@;'; put 'put ''aFtJXT12KGhbSV0sUCsiXyIrSSkpO3JldHVybiBofWZ1bmN0aW9uIGIoaCl7cmV0dXJuIWh8fCExIT09aC53cml0YWJsZSYmISgiZnVuY3Rpb24iPT10eXBlb2YgaC5nZXQmJnR5cGVvZiBoLnNldD4idSIpfWNvbnN0IE89dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0''@;'; put 'put ''YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLFM9ISgibnciaW4gdykmJnR5cGVvZiB3LnByb2Nlc3M8InUiJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKHcucHJvY2VzcyksQz0hUyYmIU8mJiEoIUV8fCFqLkhUTUxFbGVtZW50KSxLPXR5cGVvZiB3LnByb2Nlc3M8InUi''@;'; put 'put ''JiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKHcucHJvY2VzcykmJiFPJiYhKCFFfHwhai5IVE1MRWxlbWVudCksVT17fSxaPWZ1bmN0aW9uKGgpe2lmKCEoaD1ofHx3LmV2ZW50KSlyZXR1cm47bGV0IFA9VVtoLnR5cGVdO1B8fChQPVVbaC50eXBlXT14KCJPTl9QUk9Q''@;'; put 'put ''RVJUWSIraC50eXBlKSk7Y29uc3QgST10aGlzfHxoLnRhcmdldHx8dyxUPUlbUF07bGV0IEE7cmV0dXJuIEMmJkk9PT1qJiYiZXJyb3IiPT09aC50eXBlPyhBPVQmJlQuY2FsbCh0aGlzLGgubWVzc2FnZSxoLmZpbGVuYW1lLGgubGluZW5vLGguY29sbm8saC5lcnJvciksITA9PT1BJiZoLnBy''@;'; put 'put ''ZXZlbnREZWZhdWx0KCkpOihBPVQmJlQuYXBwbHkodGhpcyxhcmd1bWVudHMpLG51bGwhPUEmJiFBJiZoLnByZXZlbnREZWZhdWx0KCkpLEF9O2Z1bmN0aW9uIHR0KGgsUCxJKXtsZXQgVD1jKGgsUCk7aWYoIVQmJkkmJmMoSSxQKSYmKFQ9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw''@;'; put 'put ''fSksIVR8fCFULmNvbmZpZ3VyYWJsZSlyZXR1cm47Y29uc3QgQT14KCJvbiIrUCsicGF0Y2hlZCIpO2lmKGguaGFzT3duUHJvcGVydHkoQSkmJmhbQV0pcmV0dXJuO2RlbGV0ZSBULndyaXRhYmxlLGRlbGV0ZSBULnZhbHVlO2NvbnN0IGs9VC5nZXQsSj1ULnNldCx6PVAuc2xpY2UoMik7bGV0''@;'; put 'put ''IG90PVVbel07b3R8fChvdD1VW3pdPXgoIk9OX1BST1BFUlRZIit6KSksVC5zZXQ9ZnVuY3Rpb24oY3Qpe2xldCBpdD10aGlzOyFpdCYmaD09PXcmJihpdD13KSxpdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpdFtvdF0mJml0LnJlbW92ZUV2ZW50TGlzdGVuZXIoeixaKSxKJiZKLmNhbGwoaXQs''@;'; put 'put ''bnVsbCksaXRbb3RdPWN0LCJmdW5jdGlvbiI9PXR5cGVvZiBjdCYmaXQuYWRkRXZlbnRMaXN0ZW5lcih6LFosITEpKX0sVC5nZXQ9ZnVuY3Rpb24oKXtsZXQgY3Q9dGhpcztpZighY3QmJmg9PT13JiYoY3Q9dyksIWN0KXJldHVybiBudWxsO2NvbnN0IGl0PWN0W290XTtpZihpdClyZXR1cm4g''@;'; put 'put ''aXQ7aWYoayl7bGV0IEF0PWsuY2FsbCh0aGlzKTtpZihBdClyZXR1cm4gVC5zZXQuY2FsbCh0aGlzLEF0KSwiZnVuY3Rpb24iPT10eXBlb2YgY3RbUl0mJmN0LnJlbW92ZUF0dHJpYnV0ZShQKSxBdH1yZXR1cm4gbnVsbH0sbChoLFAsVCksaFtBXT0hMH1mdW5jdGlvbiBfKGgsUCxJKXtpZihQ''@;'; put 'put ''KWZvcihsZXQgVD0wO1Q8UC5sZW5ndGg7VCsrKXR0KGgsIm9uIitQW1RdLEkpO2Vsc2V7Y29uc3QgVD1bXTtmb3IoY29uc3QgQSBpbiBoKSJvbiI9PUEuc2xpY2UoMCwyKSYmVC5wdXNoKEEpO2ZvcihsZXQgQT0wO0E8VC5sZW5ndGg7QSsrKXR0KGgsVFtBXSxJKX19Y29uc3QgbnQ9eCgib3Jp''@;'; put 'put ''Z2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIHN0KGgpe2NvbnN0IFA9d1toXTtpZighUClyZXR1cm47d1t4KGgpXT1QLHdbaF09ZnVuY3Rpb24oKXtjb25zdCBBPUYoYXJndW1lbnRzLGgpO3N3aXRjaChBLmxlbmd0aCl7Y2FzZSAwOnRoaXNbbnRdPW5ldyBQO2JyZWFrO2Nhc2UgMTp0aGlzW250''@;'; put 'put ''XT1uZXcgUChBWzBdKTticmVhaztjYXNlIDI6dGhpc1tudF09bmV3IFAoQVswXSxBWzFdKTticmVhaztjYXNlIDM6dGhpc1tudF09bmV3IFAoQVswXSxBWzFdLEFbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW250XT1uZXcgUChBWzBdLEFbMV0sQVsyXSxBWzNdKTticmVhaztkZWZhdWx0OnRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiQXJnIGxpc3QgdG9vIGxvbmcuIil9fSxRKHdbaF0sUCk7Y29uc3QgST1uZXcgUChmdW5jdGlvbigpe30pO2xldCBUO2ZvcihUIGluIEkpIlhNTEh0dHBSZXF1ZXN0Ij09PWgmJiJyZXNwb25zZUJsb2IiPT09VHx8ZnVuY3Rpb24oQSl7ImZ1bmN0aW9uIj09dHlwZW9mIElb''@;'; put 'put ''QV0/d1toXS5wcm90b3R5cGVbQV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tudF1bQV0uYXBwbHkodGhpc1tudF0sYXJndW1lbnRzKX06bCh3W2hdLnByb3RvdHlwZSxBLHtzZXQ6ZnVuY3Rpb24oayl7ImZ1bmN0aW9uIj09dHlwZW9mIGs/KHRoaXNbbnRdW0FdPXYoayxoKyIuIitBKSxRKHRo''@;'; put 'put ''aXNbbnRdW0FdLGspKTp0aGlzW250XVtBXT1rfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tudF1bQV19fSl9KFQpO2ZvcihUIGluIFApInByb3RvdHlwZSIhPT1UJiZQLmhhc093blByb3BlcnR5KFQpJiYod1toXVtUXT1QW1RdKX1mdW5jdGlvbiBYKGgsUCxJKXtsZXQgVD1oO2Zvcig7''@;'; put 'put ''VCYmIVQuaGFzT3duUHJvcGVydHkoUCk7KVQ9dChUKTshVCYmaFtQXSYmKFQ9aCk7Y29uc3QgQT14KFApO2xldCBrPW51bGw7aWYoVCYmKCEoaz1UW0FdKXx8IVQuaGFzT3duUHJvcGVydHkoQSkpJiYoaz1UW0FdPVRbUF0sYihUJiZjKFQsUCkpKSl7Y29uc3Qgej1JKGssQSxQKTtUW1BdPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHoodGhpcyxhcmd1bWVudHMpfSxRKFRbUF0sayl9cmV0dXJuIGt9ZnVuY3Rpb24gVihoLFAsSSl7bGV0IFQ9bnVsbDtmdW5jdGlvbiBBKGspe2NvbnN0IEo9ay5kYXRhO3JldHVybiBKLmFyZ3NbSi5jYklkeF09ZnVuY3Rpb24oKXtrLmludm9rZS5hcHBseSh0aGlz''@;'; put 'put ''LGFyZ3VtZW50cyl9LFQuYXBwbHkoSi50YXJnZXQsSi5hcmdzKSxrfVQ9WChoLFAsaz0+ZnVuY3Rpb24oSix6KXtjb25zdCBvdD1JKEoseik7cmV0dXJuIG90LmNiSWR4Pj0wJiYiZnVuY3Rpb24iPT10eXBlb2YgeltvdC5jYklkeF0/ZyhvdC5uYW1lLHpbb3QuY2JJZHhdLG90LEEpOmsuYXBw''@;'; put 'put ''bHkoSix6KX0pfWZ1bmN0aW9uIFEoaCxQKXtoW3goIk9yaWdpbmFsRGVsZWdhdGUiKV09UH1sZXQgWT0hMSxmdD0hMTtmdW5jdGlvbiBNdCgpe2lmKFkpcmV0dXJuIGZ0O1k9ITA7dHJ5e2NvbnN0IGg9ai5uYXZpZ2F0b3IudXNlckFnZW50OygtMSE9PWguaW5kZXhPZigiTVNJRSAiKXx8LTEh''@;'; put 'put ''PT1oLmluZGV4T2YoIlRyaWRlbnQvIil8fC0xIT09aC5pbmRleE9mKCJFZGdlLyIpKSYmKGZ0PSEwKX1jYXRjaHt9cmV0dXJuIGZ0fVpvbmUuX19sb2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIiwoaCxQLEkpPT57Y29uc3QgVD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEE9''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5LEo9SS5zeW1ib2wsej1bXSxvdD0hMD09PWhbSigiRElTQUJMRV9XUkFQUElOR19VTkNBVUdIVF9QUk9NSVNFX1JFSkVDVElPTiIpXSxjdD1KKCJQcm9taXNlIiksaXQ9SigidGhlbiIpLEF0PSJfX2NyZWF0aW9uVHJhY2VfXyI7SS5vblVuaGFuZGxlZEVy''@;'; put 'put ''cm9yPUg9PntpZihJLnNob3dVbmNhdWdodEVycm9yKCkpe2NvbnN0IFc9SCYmSC5yZWplY3Rpb247Vz9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixXIGluc3RhbmNlb2YgRXJyb3I/Vy5tZXNzYWdlOlcsIjsgWm9uZToiLEguem9uZS5uYW1lLCI7IFRhc2s6''@;'; put 'put ''IixILnRhc2smJkgudGFzay5zb3VyY2UsIjsgVmFsdWU6IixXLFcgaW5zdGFuY2VvZiBFcnJvcj9XLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcihIKX19LEkubWljcm90YXNrRHJhaW5Eb25lPSgpPT57Zm9yKDt6Lmxlbmd0aDspe2NvbnN0IEg9ei5zaGlmdCgpO3RyeXtILnpvbmUucnVu''@;'; put 'put ''R3VhcmRlZCgoKT0+e3Rocm93IEgudGhyb3dPcmlnaW5hbD9ILnJlamVjdGlvbjpIfSl9Y2F0Y2goVyl7T3QoVyl9fX07Y29uc3QgU3Q9SigidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiBPdChIKXtJLm9uVW5oYW5kbGVkRXJyb3IoSCk7dHJ5e2NvbnN0IFc9''@;'; put 'put ''UFtTdF07ImZ1bmN0aW9uIj09dHlwZW9mIFcmJlcuY2FsbCh0aGlzLEgpfWNhdGNoe319ZnVuY3Rpb24ga3QoSCl7cmV0dXJuIEgmJkgudGhlbn1mdW5jdGlvbiBSdChIKXtyZXR1cm4gSH1mdW5jdGlvbiBKdChIKXtyZXR1cm4gTS5yZWplY3QoSCl9Y29uc3QgJHQ9Sigic3RhdGUiKSx5dD1K''@;'; put 'put ''KCJ2YWx1ZSIpLGV0PUooImZpbmFsbHkiKSxHdD1KKCJwYXJlbnRQcm9taXNlVmFsdWUiKSxEdD1KKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxVdD0iUHJvbWlzZS50aGVuIix3dD1udWxsLHJ0PSEwLEN0PSExLHE9MDtmdW5jdGlvbiBQdChILFcpe3JldHVybiBMPT57dHJ5e0h0KEgsVyxMKX1j''@;'; put 'put ''YXRjaChHKXtIdChILCExLEcpfX19Y29uc3QgZHQ9ZnVuY3Rpb24oKXtsZXQgSD0hMTtyZXR1cm4gZnVuY3Rpb24oTCl7cmV0dXJuIGZ1bmN0aW9uKCl7SHx8KEg9ITAsTC5hcHBseShudWxsLGFyZ3VtZW50cykpfX19LHp0PSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixfdD1KKCJj''@;'; put 'put ''dXJyZW50VGFza1RyYWNlIik7ZnVuY3Rpb24gSHQoSCxXLEwpe2NvbnN0IEc9ZHQoKTtpZihIPT09TCl0aHJvdyBuZXcgVHlwZUVycm9yKHp0KTtpZihIWyR0XT09PXd0KXtsZXQgbHQ9bnVsbDt0cnl7KCJvYmplY3QiPT10eXBlb2YgTHx8ImZ1bmN0aW9uIj09dHlwZW9mIEwpJiYobHQ9TCYm''@;'; put 'put ''TC50aGVuKX1jYXRjaChwdCl7cmV0dXJuIEcoKCk9PntIdChILCExLHB0KX0pKCksSH1pZihXIT09Q3QmJkwgaW5zdGFuY2VvZiBNJiZMLmhhc093blByb3BlcnR5KCR0KSYmTC5oYXNPd25Qcm9wZXJ0eSh5dCkmJkxbJHRdIT09d3QpcXQoTCksSHQoSCxMWyR0XSxMW3l0XSk7ZWxzZSBpZihX''@;'; put 'put ''IT09Q3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBsdCl0cnl7bHQuY2FsbChMLEcoUHQoSCxXKSksRyhQdChILCExKSkpfWNhdGNoKHB0KXtHKCgpPT57SHQoSCwhMSxwdCl9KSgpfWVsc2V7SFskdF09Vztjb25zdCBwdD1IW3l0XTtpZihIW3l0XT1MLEhbZXRdPT09ZXQmJlc9PT1ydCYmKEhbJHRd''@;'; put 'put ''PUhbRHRdLEhbeXRdPUhbR3RdKSxXPT09Q3QmJkwgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3QgdXQ9UC5jdXJyZW50VGFzayYmUC5jdXJyZW50VGFzay5kYXRhJiZQLmN1cnJlbnRUYXNrLmRhdGFbQXRdO3V0JiZBKEwsX3Qse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxl''@;'; put 'put ''OiEwLHZhbHVlOnV0fSl9Zm9yKGxldCB1dD0wO3V0PHB0Lmxlbmd0aDspVnQoSCxwdFt1dCsrXSxwdFt1dCsrXSxwdFt1dCsrXSxwdFt1dCsrXSk7aWYoMD09cHQubGVuZ3RoJiZXPT1DdCl7SFskdF09cTtsZXQgdXQ9TDt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlz''@;'; put 'put ''ZSk6ICIrZnVuY3Rpb24gayhIKXtyZXR1cm4gSCYmSC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KEguY29uc3RydWN0b3ImJkguY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoSCk6SD9ILnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50''@;'; put 'put ''b1N0cmluZy5jYWxsKEgpfShMKSsoTCYmTC5zdGFjaz8iXG4iK0wuc3RhY2s6IiIpKX1jYXRjaChndCl7dXQ9Z3R9b3QmJih1dC50aHJvd09yaWdpbmFsPSEwKSx1dC5yZWplY3Rpb249TCx1dC5wcm9taXNlPUgsdXQuem9uZT1QLmN1cnJlbnQsdXQudGFzaz1QLmN1cnJlbnRUYXNrLHoucHVz''@;'; put 'put ''aCh1dCksSS5zY2hlZHVsZU1pY3JvVGFzaygpfX19cmV0dXJuIEh9Y29uc3QgTHQ9SigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKTtmdW5jdGlvbiBxdChIKXtpZihIWyR0XT09PXEpe3RyeXtjb25zdCBXPVBbTHRdO1cmJiJmdW5jdGlvbiI9PXR5cGVvZiBXJiZXLmNhbGwodGhpcyx7cmVq''@;'; put 'put ''ZWN0aW9uOkhbeXRdLHByb21pc2U6SH0pfWNhdGNoe31IWyR0XT1DdDtmb3IobGV0IFc9MDtXPHoubGVuZ3RoO1crKylIPT09eltXXS5wcm9taXNlJiZ6LnNwbGljZShXLDEpfX1mdW5jdGlvbiBWdChILFcsTCxHLGx0KXtxdChIKTtjb25zdCBwdD1IWyR0XSx1dD1wdD8iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgRz9HOlJ0OiJmdW5jdGlvbiI9PXR5cGVvZiBsdD9sdDpKdDtXLnNjaGVkdWxlTWljcm9UYXNrKFV0LCgpPT57dHJ5e2NvbnN0IGd0PUhbeXRdLHh0PSEhTCYmZXQ9PT1MW2V0XTt4dCYmKExbR3RdPWd0LExbRHRdPXB0KTtjb25zdCBUdD1XLnJ1bih1dCx2b2lkIDAseHQmJnV0IT09''@;'; put 'put ''SnQmJnV0IT09UnQ/W106W2d0XSk7SHQoTCwhMCxUdCl9Y2F0Y2goZ3Qpe0h0KEwsITEsZ3QpfX0sTCl9Y29uc3QgSXQ9ZnVuY3Rpb24oKXt9LGF0PWguQWdncmVnYXRlRXJyb3I7Y2xhc3MgTXtzdGF0aWMgdG9TdHJpbmcoKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsg''@;'; put 'put ''W25hdGl2ZSBjb2RlXSB9In1zdGF0aWMgcmVzb2x2ZShXKXtyZXR1cm4gSHQobmV3IHRoaXMobnVsbCkscnQsVyl9c3RhdGljIHJlamVjdChXKXtyZXR1cm4gSHQobmV3IHRoaXMobnVsbCksQ3QsVyl9c3RhdGljIGFueShXKXtpZighV3x8ImZ1bmN0aW9uIiE9dHlwZW9mIFdbU3ltYm9sLml0''@;'; put 'put ''ZXJhdG9yXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGF0KFtdLCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKTtjb25zdCBMPVtdO2xldCBHPTA7dHJ5e2ZvcihsZXQgdXQgb2YgVylHKyssTC5wdXNoKE0ucmVzb2x2ZSh1dCkpfWNhdGNoe3JldHVybiBQcm9taXNlLnJlamVjdChu''@;'; put 'put ''ZXcgYXQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpfWlmKDA9PT1HKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgYXQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpO2xldCBsdD0hMTtjb25zdCBwdD1bXTtyZXR1cm4gbmV3IE0oKHV0LGd0KT0+e2ZvcihsZXQg''@;'; put 'put ''eHQ9MDt4dDxMLmxlbmd0aDt4dCsrKUxbeHRdLnRoZW4oVHQ9PntsdHx8KGx0PSEwLHV0KFR0KSl9LFR0PT57cHQucHVzaChUdCksRy0tLDA9PT1HJiYobHQ9ITAsZ3QobmV3IGF0KHB0LCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKSl9KX0pfXN0YXRpYyByYWNlKFcpe2xldCBMLEcs''@;'; put 'put ''bHQ9bmV3IHRoaXMoKGd0LHh0KT0+e0w9Z3QsRz14dH0pO2Z1bmN0aW9uIHB0KGd0KXtMKGd0KX1mdW5jdGlvbiB1dChndCl7RyhndCl9Zm9yKGxldCBndCBvZiBXKWt0KGd0KXx8KGd0PXRoaXMucmVzb2x2ZShndCkpLGd0LnRoZW4ocHQsdXQpO3JldHVybiBsdH1zdGF0aWMgYWxsKFcpe3Jl''@;'; put 'put ''dHVybiBNLmFsbFdpdGhDYWxsYmFjayhXKX1zdGF0aWMgYWxsU2V0dGxlZChXKXtyZXR1cm4odGhpcyYmdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBNP3RoaXM6TSkuYWxsV2l0aENhbGxiYWNrKFcse3RoZW5DYWxsYmFjazpHPT4oe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTpHfSksZXJy''@;'; put 'put ''b3JDYWxsYmFjazpHPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpHfSl9KX1zdGF0aWMgYWxsV2l0aENhbGxiYWNrKFcsTCl7bGV0IEcsbHQscHQ9bmV3IHRoaXMoKFR0LGJ0KT0+e0c9VHQsbHQ9YnR9KSx1dD0yLGd0PTA7Y29uc3QgeHQ9W107Zm9yKGxldCBUdCBvZiBXKXtrdChUdCl8''@;'; put 'put ''fChUdD10aGlzLnJlc29sdmUoVHQpKTtjb25zdCBidD1ndDt0cnl7VHQudGhlbihOdD0+e3h0W2J0XT1MP0wudGhlbkNhbGxiYWNrKE50KTpOdCx1dC0tLDA9PT11dCYmRyh4dCl9LE50PT57TD8oeHRbYnRdPUwuZXJyb3JDYWxsYmFjayhOdCksdXQtLSwwPT09dXQmJkcoeHQpKTpsdChOdCl9''@;'; put 'put ''KX1jYXRjaChOdCl7bHQoTnQpfXV0KyssZ3QrK31yZXR1cm4gdXQtPTIsMD09PXV0JiZHKHh0KSxwdH1jb25zdHJ1Y3RvcihXKXtjb25zdCBMPXRoaXM7aWYoIShMIGluc3RhbmNlb2YgTSkpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGFuIGluc3RhbmNlb2YgUHJvbWlzZS4iKTtMWyR0XT13''@;'; put 'put ''dCxMW3l0XT1bXTt0cnl7Y29uc3QgRz1kdCgpO1cmJlcoRyhQdChMLHJ0KSksRyhQdChMLEN0KSkpfWNhdGNoKEcpe0h0KEwsITEsRyl9fWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIlByb21pc2UifWdldFtTeW1ib2wuc3BlY2llc10oKXtyZXR1cm4gTX10aGVuKFcsTCl7bGV0''@;'; put 'put ''IEc9dGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTsoIUd8fCJmdW5jdGlvbiIhPXR5cGVvZiBHKSYmKEc9dGhpcy5jb25zdHJ1Y3Rvcnx8TSk7Y29uc3QgbHQ9bmV3IEcoSXQpLHB0PVAuY3VycmVudDtyZXR1cm4gdGhpc1skdF09PXd0P3RoaXNbeXRdLnB1c2gocHQsbHQsVyxM''@;'; put 'put ''KTpWdCh0aGlzLHB0LGx0LFcsTCksbHR9Y2F0Y2goVyl7cmV0dXJuIHRoaXMudGhlbihudWxsLFcpfWZpbmFsbHkoVyl7bGV0IEw9dGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTsoIUx8fCJmdW5jdGlvbiIhPXR5cGVvZiBMKSYmKEw9TSk7Y29uc3QgRz1uZXcgTChJdCk7R1tl''@;'; put 'put ''dF09ZXQ7Y29uc3QgbHQ9UC5jdXJyZW50O3JldHVybiB0aGlzWyR0XT09d3Q/dGhpc1t5dF0ucHVzaChsdCxHLFcsVyk6VnQodGhpcyxsdCxHLFcsVyksR319TS5yZXNvbHZlPU0ucmVzb2x2ZSxNLnJlamVjdD1NLnJlamVjdCxNLnJhY2U9TS5yYWNlLE0uYWxsPU0uYWxsO2NvbnN0IE49aFtj''@;'; put 'put ''dF09aC5Qcm9taXNlO2guUHJvbWlzZT1NO2NvbnN0IGh0PUooInRoZW5QYXRjaGVkIik7ZnVuY3Rpb24gbXQoSCl7Y29uc3QgVz1ILnByb3RvdHlwZSxMPVQoVywidGhlbiIpO2lmKEwmJighMT09PUwud3JpdGFibGV8fCFMLmNvbmZpZ3VyYWJsZSkpcmV0dXJuO2NvbnN0IEc9Vy50aGVuO1db''@;'; put 'put ''aXRdPUcsSC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihsdCxwdCl7cmV0dXJuIG5ldyBNKChndCx4dCk9PntHLmNhbGwodGhpcyxndCx4dCl9KS50aGVuKGx0LHB0KX0sSFtodF09ITB9cmV0dXJuIEkucGF0Y2hUaGVuPW10LE4mJihtdChOKSxYKGgsImZldGNoIixIPT5mdW5jdGlvbiBXdChI''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24oVyxMKXtsZXQgRz1ILmFwcGx5KFcsTCk7aWYoRyBpbnN0YW5jZW9mIE0pcmV0dXJuIEc7bGV0IGx0PUcuY29uc3RydWN0b3I7cmV0dXJuIGx0W2h0XXx8bXQobHQpLEd9fShIKSkpLFByb21pc2VbUC5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMi''@;'; put 'put ''KV09eixNfSksWm9uZS5fX2xvYWRfcGF0Y2goInRvU3RyaW5nIixoPT57Y29uc3QgUD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsST14KCJPcmlnaW5hbERlbGVnYXRlIiksVD14KCJQcm9taXNlIiksQT14KCJFcnJvciIpLGs9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''dGhpcyl7Y29uc3QgY3Q9dGhpc1tJXTtpZihjdClyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgY3Q/UC5jYWxsKGN0KTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY3QpO2lmKHRoaXM9PT1Qcm9taXNlKXtjb25zdCBpdD1oW1RdO2lmKGl0KXJldHVybiBQLmNhbGwoaXQpfWlmKHRo''@;'; put 'put ''aXM9PT1FcnJvcil7Y29uc3QgaXQ9aFtBXTtpZihpdClyZXR1cm4gUC5jYWxsKGl0KX19cmV0dXJuIFAuY2FsbCh0aGlzKX07a1tJXT1QLEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1rO2NvbnN0IEo9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztPYmplY3QucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2UmJnRoaXMgaW5zdGFuY2VvZiBQcm9taXNlPyJbb2JqZWN0IFByb21pc2VdIjpKLmNhbGwodGhpcyl9fSk7bGV0IEV0PSExO2lmKHR5cGVvZiB3aW5kb3c8InUiKXRyeXtjb25zdCBoPU9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe0V0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixoLGgpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixoLGgpfWNhdGNoe0V0PSExfWNvbnN0IEZ0PXt1c2VHOiEwfSxqdD17fSxYdD17fSxC''@;'; put 'put ''dD1uZXcgUmVnRXhwKCJeIit5KyIoXFx3KykodHJ1ZXxmYWxzZSkkIiksUXQ9eCgicHJvcGFnYXRpb25TdG9wcGVkIik7ZnVuY3Rpb24gcm4oaCxQKXtjb25zdCBJPShQP1AoaCk6aCkrcCxUPShQP1AoaCk6aCkraSxBPXkrSSxrPXkrVDtqdFtoXT17fSxqdFtoXVtwXT1BLGp0W2hdW2ldPWt9''@;'; put 'put ''ZnVuY3Rpb24gbm4oaCxQLEksVCl7Y29uc3QgQT1UJiZULmFkZHx8cyxrPVQmJlQucm18fG8sSj1UJiZULmxpc3RlbmVyc3x8ImV2ZW50TGlzdGVuZXJzIix6PVQmJlQucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5lcnMiLG90PXgoQSksY3Q9Ii4iK0ErIjoiLGl0PSJwcmVwZW5kTGlzdGVuZXIi''@;'; put 'put ''LEF0PSIuIitpdCsiOiIsU3Q9ZnVuY3Rpb24oeXQsZXQsR3Qpe2lmKHl0LmlzUmVtb3ZlZClyZXR1cm47Y29uc3QgRHQ9eXQuY2FsbGJhY2s7bGV0IFV0OyJvYmplY3QiPT10eXBlb2YgRHQmJkR0LmhhbmRsZUV2ZW50JiYoeXQuY2FsbGJhY2s9cnQ9PkR0LmhhbmRsZUV2ZW50KHJ0KSx5dC5v''@;'; put 'put ''cmlnaW5hbERlbGVnYXRlPUR0KTt0cnl7eXQuaW52b2tlKHl0LGV0LFtHdF0pfWNhdGNoKHJ0KXtVdD1ydH1jb25zdCB3dD15dC5vcHRpb25zO3JldHVybiB3dCYmIm9iamVjdCI9PXR5cGVvZiB3dCYmd3Qub25jZSYmZXRba10uY2FsbChldCxHdC50eXBlLHl0Lm9yaWdpbmFsRGVsZWdhdGU/''@;'; put 'put ''eXQub3JpZ2luYWxEZWxlZ2F0ZTp5dC5jYWxsYmFjayx3dCksVXR9O2Z1bmN0aW9uIE90KHl0LGV0LEd0KXtpZighKGV0PWV0fHxoLmV2ZW50KSlyZXR1cm47Y29uc3QgRHQ9eXR8fGV0LnRhcmdldHx8aCxVdD1EdFtqdFtldC50eXBlXVtHdD9pOnBdXTtpZihVdCl7Y29uc3Qgd3Q9W107aWYo''@;'; put 'put ''MT09PVV0Lmxlbmd0aCl7Y29uc3QgcnQ9U3QoVXRbMF0sRHQsZXQpO3J0JiZ3dC5wdXNoKHJ0KX1lbHNle2NvbnN0IHJ0PVV0LnNsaWNlKCk7Zm9yKGxldCBDdD0wO0N0PHJ0Lmxlbmd0aCYmKCFldHx8ITAhPT1ldFtRdF0pO0N0Kyspe2NvbnN0IHE9U3QocnRbQ3RdLER0LGV0KTtxJiZ3dC5w''@;'; put 'put ''dXNoKHEpfX1pZigxPT09d3QubGVuZ3RoKXRocm93IHd0WzBdO2ZvcihsZXQgcnQ9MDtydDx3dC5sZW5ndGg7cnQrKyl7Y29uc3QgQ3Q9d3RbcnRdO1AubmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2soKCk9Pnt0aHJvdyBDdH0pfX19Y29uc3Qga3Q9ZnVuY3Rpb24oeXQpe3JldHVybiBPdCh0aGlz''@;'; put 'put ''LHl0LCExKX0sUnQ9ZnVuY3Rpb24oeXQpe3JldHVybiBPdCh0aGlzLHl0LCEwKX07ZnVuY3Rpb24gSnQoeXQsZXQpe2lmKCF5dClyZXR1cm4hMTtsZXQgR3Q9ITA7ZXQmJnZvaWQgMCE9PWV0LnVzZUcmJihHdD1ldC51c2VHKTtjb25zdCBEdD1ldCYmZXQudmg7bGV0IFV0PSEwO2V0JiZ2b2lk''@;'; put 'put ''IDAhPT1ldC5jaGtEdXAmJihVdD1ldC5jaGtEdXApO2xldCB3dD0hMTtldCYmdm9pZCAwIT09ZXQucnQmJih3dD1ldC5ydCk7bGV0IHJ0PXl0O2Zvcig7cnQmJiFydC5oYXNPd25Qcm9wZXJ0eShBKTspcnQ9dChydCk7aWYoIXJ0JiZ5dFtBXSYmKHJ0PXl0KSwhcnR8fHJ0W290XSlyZXR1cm4h''@;'; put 'put ''MTtjb25zdCBDdD1ldCYmZXQuZXZlbnROYW1lVG9TdHJpbmcscT17fSxQdD1ydFtvdF09cnRbQV0sZHQ9cnRbeChrKV09cnRba10senQ9cnRbeChKKV09cnRbSl0sX3Q9cnRbeCh6KV09cnRbel07bGV0IEh0O2V0JiZldC5wcmVwZW5kJiYoSHQ9cnRbeChldC5wcmVwZW5kKV09cnRbZXQucHJl''@;'; put 'put ''cGVuZF0pO2NvbnN0IE09R3Q/ZnVuY3Rpb24oTCl7aWYoIXEuaXNFeGlzdGluZylyZXR1cm4gUHQuY2FsbChxLnRhcmdldCxxLmV2ZW50TmFtZSxxLmNhcHR1cmU/UnQ6a3QscS5vcHRpb25zKX06ZnVuY3Rpb24oTCl7cmV0dXJuIFB0LmNhbGwocS50YXJnZXQscS5ldmVudE5hbWUsTC5pbnZv''@;'; put 'put ''a2UscS5vcHRpb25zKX0sTj1HdD9mdW5jdGlvbihMKXtpZighTC5pc1JlbW92ZWQpe2NvbnN0IEc9anRbTC5ldmVudE5hbWVdO2xldCBsdDtHJiYobHQ9R1tMLmNhcHR1cmU/aTpwXSk7Y29uc3QgcHQ9bHQmJkwudGFyZ2V0W2x0XTtpZihwdClmb3IobGV0IHV0PTA7dXQ8cHQubGVuZ3RoO3V0''@;'; put 'put ''KyspaWYocHRbdXRdPT09TCl7cHQuc3BsaWNlKHV0LDEpLEwuaXNSZW1vdmVkPSEwLDA9PT1wdC5sZW5ndGgmJihMLmFsbFJlbW92ZWQ9ITAsTC50YXJnZXRbbHRdPW51bGwpO2JyZWFrfX1pZihMLmFsbFJlbW92ZWQpcmV0dXJuIGR0LmNhbGwoTC50YXJnZXQsTC5ldmVudE5hbWUsTC5jYXB0''@;'; put 'put ''dXJlP1J0Omt0LEwub3B0aW9ucyl9OmZ1bmN0aW9uKEwpe3JldHVybiBkdC5jYWxsKEwudGFyZ2V0LEwuZXZlbnROYW1lLEwuaW52b2tlLEwub3B0aW9ucyl9LG10PWV0JiZldC5kaWZmP2V0LmRpZmY6ZnVuY3Rpb24oTCxHKXtjb25zdCBsdD10eXBlb2YgRztyZXR1cm4iZnVuY3Rpb24iPT09''@;'; put 'put ''bHQmJkwuY2FsbGJhY2s9PT1HfHwib2JqZWN0Ij09PWx0JiZMLm9yaWdpbmFsRGVsZWdhdGU9PT1HfSxXdD1ab25lW3goIlVOUEFUQ0hFRF9FVkVOVFMiKV0sSD1oW3goIlBBU1NJVkVfRVZFTlRTIildLFc9ZnVuY3Rpb24oTCxHLGx0LHB0LHV0PSExLGd0PSExKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCB4dD10aGlzfHxoO2xldCBUdD1hcmd1bWVudHNbMF07ZXQmJmV0LnRyYW5zZmVyRXZlbnROYW1lJiYoVHQ9ZXQudHJhbnNmZXJFdmVudE5hbWUoVHQpKTtsZXQgYnQ9YXJndW1lbnRzWzFdO2lmKCFidClyZXR1cm4gTC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoUyYmInVuY2F1''@;'; put 'put ''Z2h0RXhjZXB0aW9uIj09PVR0KXJldHVybiBMLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtsZXQgTnQ9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGJ0KXtpZighYnQuaGFuZGxlRXZlbnQpcmV0dXJuIEwuYXBwbHkodGhpcyxhcmd1bWVudHMpO050PSEwfWlmKER0JiYhRHQoTCxidCx4dCxhcmd1''@;'; put 'put ''bWVudHMpKXJldHVybjtjb25zdCBzbj1FdCYmISFIJiYtMSE9PUguaW5kZXhPZihUdCksdG49ZnVuY3Rpb24gTHQoTCxHKXtyZXR1cm4hRXQmJiJvYmplY3QiPT10eXBlb2YgTCYmTD8hIUwuY2FwdHVyZTpFdCYmRz8iYm9vbGVhbiI9PXR5cGVvZiBMP3tjYXB0dXJlOkwscGFzc2l2ZTohMH06''@;'; put 'put ''TD8ib2JqZWN0Ij09dHlwZW9mIEwmJiExIT09TC5wYXNzaXZlP3suLi5MLHBhc3NpdmU6ITB9Okw6e3Bhc3NpdmU6ITB9Okx9KGFyZ3VtZW50c1syXSxzbik7aWYoV3QpZm9yKGxldCBjbj0wO2NuPFd0Lmxlbmd0aDtjbisrKWlmKFR0PT09V3RbY25dKXJldHVybiBzbj9MLmNhbGwoeHQsVHQs''@;'; put 'put ''YnQsdG4pOkwuYXBwbHkodGhpcyxhcmd1bWVudHMpO2NvbnN0IHBuPSEhdG4mJigiYm9vbGVhbiI9PXR5cGVvZiB0bnx8dG4uY2FwdHVyZSksbW49ISghdG58fCJvYmplY3QiIT10eXBlb2YgdG4pJiZ0bi5vbmNlLE1uPVpvbmUuY3VycmVudDtsZXQgeW49anRbVHRdO3lufHwocm4oVHQsQ3Qp''@;'; put 'put ''LHluPWp0W1R0XSk7Y29uc3QgZ249eW5bcG4/aTpwXTtsZXQgdm4saG49eHRbZ25dLEVuPSExO2lmKGhuKXtpZihFbj0hMCxVdClmb3IobGV0IGNuPTA7Y248aG4ubGVuZ3RoO2NuKyspaWYobXQoaG5bY25dLGJ0KSlyZXR1cm59ZWxzZSBobj14dFtnbl09W107Y29uc3QgeG49eHQuY29uc3Ry''@;'; put 'put ''dWN0b3IubmFtZSxUbj1YdFt4bl07VG4mJih2bj1UbltUdF0pLHZufHwodm49eG4rRysoQ3Q/Q3QoVHQpOlR0KSkscS5vcHRpb25zPXRuLG1uJiYocS5vcHRpb25zLm9uY2U9ITEpLHEudGFyZ2V0PXh0LHEuY2FwdHVyZT1wbixxLmV2ZW50TmFtZT1UdCxxLmlzRXhpc3Rpbmc9RW47Y29uc3Qg''@;'; put 'put ''ZG49R3Q/RnQ6dm9pZCAwO2RuJiYoZG4udGFza0RhdGE9cSk7Y29uc3QgdW49TW4uc2NoZWR1bGVFdmVudFRhc2sodm4sYnQsZG4sbHQscHQpO3JldHVybiBxLnRhcmdldD1udWxsLGRuJiYoZG4udGFza0RhdGE9bnVsbCksbW4mJih0bi5vbmNlPSEwKSwhRXQmJiJib29sZWFuIj09dHlwZW9m''@;'; put 'put ''IHVuLm9wdGlvbnN8fCh1bi5vcHRpb25zPXRuKSx1bi50YXJnZXQ9eHQsdW4uY2FwdHVyZT1wbix1bi5ldmVudE5hbWU9VHQsTnQmJih1bi5vcmlnaW5hbERlbGVnYXRlPWJ0KSxndD9obi51bnNoaWZ0KHVuKTpobi5wdXNoKHVuKSx1dD94dDp2b2lkIDB9fTtyZXR1cm4gcnRbQV09VyhQdCxj''@;'; put 'put ''dCxNLE4sd3QpLEh0JiYocnRbaXRdPVcoSHQsQXQsZnVuY3Rpb24oTCl7cmV0dXJuIEh0LmNhbGwocS50YXJnZXQscS5ldmVudE5hbWUsTC5pbnZva2UscS5vcHRpb25zKX0sTix3dCwhMCkpLHJ0W2tdPWZ1bmN0aW9uKCl7Y29uc3QgTD10aGlzfHxoO2xldCBHPWFyZ3VtZW50c1swXTtldCYm''@;'; put 'put ''ZXQudHJhbnNmZXJFdmVudE5hbWUmJihHPWV0LnRyYW5zZmVyRXZlbnROYW1lKEcpKTtjb25zdCBsdD1hcmd1bWVudHNbMl0scHQ9ISFsdCYmKCJib29sZWFuIj09dHlwZW9mIGx0fHxsdC5jYXB0dXJlKSx1dD1hcmd1bWVudHNbMV07aWYoIXV0KXJldHVybiBkdC5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyk7aWYoRHQmJiFEdChkdCx1dCxMLGFyZ3VtZW50cykpcmV0dXJuO2NvbnN0IGd0PWp0W0ddO2xldCB4dDtndCYmKHh0PWd0W3B0P2k6cF0pO2NvbnN0IFR0PXh0JiZMW3h0XTtpZihUdClmb3IobGV0IGJ0PTA7YnQ8VHQubGVuZ3RoO2J0Kyspe2NvbnN0IE50PVR0W2J0XTtpZihtdChO''@;'; put 'put ''dCx1dCkpcmV0dXJuIFR0LnNwbGljZShidCwxKSxOdC5pc1JlbW92ZWQ9ITAsMD09PVR0Lmxlbmd0aCYmKE50LmFsbFJlbW92ZWQ9ITAsTFt4dF09bnVsbCwic3RyaW5nIj09dHlwZW9mIEcpJiYoTFt5KyJPTl9QUk9QRVJUWSIrR109bnVsbCksTnQuem9uZS5jYW5jZWxUYXNrKE50KSx3dD9M''@;'; put 'put ''OnZvaWQgMH1yZXR1cm4gZHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxydFtKXT1mdW5jdGlvbigpe2NvbnN0IEw9dGhpc3x8aDtsZXQgRz1hcmd1bWVudHNbMF07ZXQmJmV0LnRyYW5zZmVyRXZlbnROYW1lJiYoRz1ldC50cmFuc2ZlckV2ZW50TmFtZShHKSk7Y29uc3QgbHQ9W10scHQ9YW4o''@;'; put 'put ''TCxDdD9DdChHKTpHKTtmb3IobGV0IHV0PTA7dXQ8cHQubGVuZ3RoO3V0Kyspe2NvbnN0IGd0PXB0W3V0XTtsdC5wdXNoKGd0Lm9yaWdpbmFsRGVsZWdhdGU/Z3Qub3JpZ2luYWxEZWxlZ2F0ZTpndC5jYWxsYmFjayl9cmV0dXJuIGx0fSxydFt6XT1mdW5jdGlvbigpe2NvbnN0IEw9dGhpc3x8''@;'; put 'put ''aDtsZXQgRz1hcmd1bWVudHNbMF07aWYoRyl7ZXQmJmV0LnRyYW5zZmVyRXZlbnROYW1lJiYoRz1ldC50cmFuc2ZlckV2ZW50TmFtZShHKSk7Y29uc3QgbHQ9anRbR107aWYobHQpe2NvbnN0IGd0PUxbbHRbcF1dLHh0PUxbbHRbaV1dO2lmKGd0KXtjb25zdCBUdD1ndC5zbGljZSgpO2Zvcihs''@;'; put 'put ''ZXQgYnQ9MDtidDxUdC5sZW5ndGg7YnQrKyl7Y29uc3QgTnQ9VHRbYnRdO3RoaXNba10uY2FsbCh0aGlzLEcsTnQub3JpZ2luYWxEZWxlZ2F0ZT9OdC5vcmlnaW5hbERlbGVnYXRlOk50LmNhbGxiYWNrLE50Lm9wdGlvbnMpfX1pZih4dCl7Y29uc3QgVHQ9eHQuc2xpY2UoKTtmb3IobGV0IGJ0''@;'; put 'put ''PTA7YnQ8VHQubGVuZ3RoO2J0Kyspe2NvbnN0IE50PVR0W2J0XTt0aGlzW2tdLmNhbGwodGhpcyxHLE50Lm9yaWdpbmFsRGVsZWdhdGU/TnQub3JpZ2luYWxEZWxlZ2F0ZTpOdC5jYWxsYmFjayxOdC5vcHRpb25zKX19fX1lbHNle2NvbnN0IGx0PU9iamVjdC5rZXlzKEwpO2ZvcihsZXQgcHQ9''@;'; put 'put ''MDtwdDxsdC5sZW5ndGg7cHQrKyl7Y29uc3QgZ3Q9QnQuZXhlYyhsdFtwdF0pO2xldCB4dD1ndCYmZ3RbMV07eHQmJiJyZW1vdmVMaXN0ZW5lciIhPT14dCYmdGhpc1t6XS5jYWxsKHRoaXMseHQpfXRoaXNbel0uY2FsbCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIpfWlmKHd0KXJldHVybiB0aGlz''@;'; put 'put ''fSxRKHJ0W0FdLFB0KSxRKHJ0W2tdLGR0KSxfdCYmUShydFt6XSxfdCksenQmJlEocnRbSl0senQpLCEwfWxldCAkdD1bXTtmb3IobGV0IHl0PTA7eXQ8SS5sZW5ndGg7eXQrKykkdFt5dF09SnQoSVt5dF0sVCk7cmV0dXJuICR0fWZ1bmN0aW9uIGFuKGgsUCl7aWYoIVApe2NvbnN0IGs9W107''@;'; put 'put ''Zm9yKGxldCBKIGluIGgpe2NvbnN0IHo9QnQuZXhlYyhKKTtsZXQgb3Q9eiYmelsxXTtpZihvdCYmKCFQfHxvdD09PVApKXtjb25zdCBjdD1oW0pdO2lmKGN0KWZvcihsZXQgaXQ9MDtpdDxjdC5sZW5ndGg7aXQrKylrLnB1c2goY3RbaXRdKX19cmV0dXJuIGt9bGV0IEk9anRbUF07SXx8KHJu''@;'; put 'put ''KFApLEk9anRbUF0pO2NvbnN0IFQ9aFtJW3BdXSxBPWhbSVtpXV07cmV0dXJuIFQ/QT9ULmNvbmNhdChBKTpULnNsaWNlKCk6QT9BLnNsaWNlKCk6W119ZnVuY3Rpb24gZm4oaCxQKXtjb25zdCBJPWguRXZlbnQ7SSYmSS5wcm90b3R5cGUmJlAucGF0Y2hNZXRob2QoSS5wcm90b3R5cGUsInN0''@;'; put 'put ''b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsVD0+ZnVuY3Rpb24oQSxrKXtBW1F0XT0hMCxUJiZULmFwcGx5KEEsayl9KX1mdW5jdGlvbiBvbihoLFAsSSxULEEpe2NvbnN0IGs9Wm9uZS5fX3N5bWJvbF9fKFQpO2lmKFBba10pcmV0dXJuO2NvbnN0IEo9UFtrXT1QW1RdO1BbVF09ZnVuY3Rpb24o''@;'; put 'put ''eixvdCxjdCl7cmV0dXJuIG90JiZvdC5wcm90b3R5cGUmJkEuZm9yRWFjaChmdW5jdGlvbihpdCl7Y29uc3QgQXQ9YCR7SX0uJHtUfTo6YCtpdCxTdD1vdC5wcm90b3R5cGU7dHJ5e2lmKFN0Lmhhc093blByb3BlcnR5KGl0KSl7Y29uc3QgT3Q9aC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2Ny''@;'; put 'put ''aXB0b3IoU3QsaXQpO090JiZPdC52YWx1ZT8oT3QudmFsdWU9aC53cmFwV2l0aEN1cnJlbnRab25lKE90LnZhbHVlLEF0KSxoLl9yZWRlZmluZVByb3BlcnR5KG90LnByb3RvdHlwZSxpdCxPdCkpOlN0W2l0XSYmKFN0W2l0XT1oLndyYXBXaXRoQ3VycmVudFpvbmUoU3RbaXRdLEF0KSl9ZWxz''@;'; put 'put ''ZSBTdFtpdF0mJihTdFtpdF09aC53cmFwV2l0aEN1cnJlbnRab25lKFN0W2l0XSxBdCkpfWNhdGNoe319KSxKLmNhbGwoUCx6LG90LGN0KX0saC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQoUFtUXSxKKX1mdW5jdGlvbiBZdChoLFAsSSl7aWYoIUl8fDA9PT1JLmxlbmd0aClyZXR1cm4gUDtjb25z''@;'; put 'put ''dCBUPUkuZmlsdGVyKGs9PmsudGFyZ2V0PT09aCk7aWYoIVR8fDA9PT1ULmxlbmd0aClyZXR1cm4gUDtjb25zdCBBPVRbMF0uaWdub3JlUHJvcGVydGllcztyZXR1cm4gUC5maWx0ZXIoaz0+LTE9PT1BLmluZGV4T2YoaykpfWZ1bmN0aW9uIFp0KGgsUCxJLFQpe2gmJl8oaCxZdChoLFAsSSks''@;'; put 'put ''VCl9ZnVuY3Rpb24gZW4oaCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGgpLmZpbHRlcihQPT5QLnN0YXJ0c1dpdGgoIm9uIikmJlAubGVuZ3RoPjIpLm1hcChQPT5QLnN1YnN0cmluZygyKSl9Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChoLFAsSSk9Pntjb25zdCBUPWVu''@;'; put 'put ''KGgpO0kucGF0Y2hPblByb3BlcnRpZXM9XyxJLnBhdGNoTWV0aG9kPVgsSS5iaW5kQXJndW1lbnRzPUYsSS5wYXRjaE1hY3JvVGFzaz1WO2NvbnN0IEE9UC5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksaz1QLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtoW2tdJiYo''@;'; put 'put ''aFtBXT1oW2tdKSxoW0FdJiYoUFtBXT1QW2tdPWhbQV0pLEkucGF0Y2hFdmVudFByb3RvdHlwZT1mbixJLnBhdGNoRXZlbnRUYXJnZXQ9bm4sSS5pc0lFT3JFZGdlPU10LEkuT2JqZWN0RGVmaW5lUHJvcGVydHk9bCxJLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj1jLEkuT2JqZWN0''@;'; put 'put ''Q3JlYXRlPW4sSS5BcnJheVNsaWNlPWUsSS5wYXRjaENsYXNzPXN0LEkud3JhcFdpdGhDdXJyZW50Wm9uZT12LEkuZmlsdGVyUHJvcGVydGllcz1ZdCxJLmF0dGFjaE9yaWdpblRvUGF0Y2hlZD1RLEkuX3JlZGVmaW5lUHJvcGVydHk9T2JqZWN0LmRlZmluZVByb3BlcnR5LEkucGF0Y2hDYWxs''@;'; put 'put ''YmFja3M9b24sSS5nZXRHbG9iYWxPYmplY3RzPSgpPT4oe2dsb2JhbFNvdXJjZXM6WHQsem9uZVN5bWJvbEV2ZW50TmFtZXM6anQsZXZlbnROYW1lczpULGlzQnJvd3NlcjpDLGlzTWl4OkssaXNOb2RlOlMsVFJVRV9TVFI6aSxGQUxTRV9TVFI6cCxaT05FX1NZTUJPTF9QUkVGSVg6eSxBRERf''@;'; put 'put ''RVZFTlRfTElTVEVORVJfU1RSOnMsUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjpvfSl9KTtjb25zdCByPXgoInpvbmVUYXNrIik7ZnVuY3Rpb24gYShoLFAsSSxUKXtsZXQgQT1udWxsLGs9bnVsbDtJKz1UO2NvbnN0IEo9e307ZnVuY3Rpb24geihjdCl7Y29uc3QgaXQ9Y3QuZGF0YTtyZXR1''@;'; put 'put ''cm4gaXQuYXJnc1swXT1mdW5jdGlvbigpe3JldHVybiBjdC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpdC5oYW5kbGVJZD1BLmFwcGx5KGgsaXQuYXJncyksY3R9ZnVuY3Rpb24gb3QoY3Qpe3JldHVybiBrLmNhbGwoaCxjdC5kYXRhLmhhbmRsZUlkKX1BPVgoaCxQKz1ULGN0PT5m''@;'; put 'put ''dW5jdGlvbihpdCxBdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEF0WzBdKXtjb25zdCBTdD17aXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09VCxkZWxheToiVGltZW91dCI9PT1UfHwiSW50ZXJ2YWwiPT09VD9BdFsxXXx8MDp2b2lkIDAsYXJnczpBdH0sT3Q9QXRbMF07QXRbMF09ZnVuY3Rpb24o''@;'; put 'put ''KXt0cnl7cmV0dXJuIE90LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e1N0LmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIFN0LmhhbmRsZUlkP2RlbGV0ZSBKW1N0LmhhbmRsZUlkXTpTdC5oYW5kbGVJZCYmKFN0LmhhbmRsZUlkW3JdPW51bGwpKX19O2NvbnN0IGt0PWcoUCxB''@;'; put 'put ''dFswXSxTdCx6LG90KTtpZigha3QpcmV0dXJuIGt0O2NvbnN0IFJ0PWt0LmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBSdD9KW1J0XT1rdDpSdCYmKFJ0W3JdPWt0KSxSdCYmUnQucmVmJiZSdC51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIFJ0LnJlZiYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFJ0LnVucmVmJiYoa3QucmVmPVJ0LnJlZi5iaW5kKFJ0KSxrdC51bnJlZj1SdC51bnJlZi5iaW5kKFJ0KSksIm51bWJlciI9PXR5cGVvZiBSdHx8UnQ/UnQ6a3R9cmV0dXJuIGN0LmFwcGx5KGgsQXQpfSksaz1YKGgsSSxjdD0+ZnVuY3Rpb24oaXQsQXQpe2NvbnN0IFN0PUF0''@;'; put 'put ''WzBdO2xldCBPdDsibnVtYmVyIj09dHlwZW9mIFN0P090PUpbU3RdOihPdD1TdCYmU3Rbcl0sT3R8fChPdD1TdCkpLE90JiYic3RyaW5nIj09dHlwZW9mIE90LnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1PdC5zdGF0ZSYmKE90LmNhbmNlbEZuJiZPdC5kYXRhLmlzUGVyaW9kaWN8fDA9PT1PdC5y''@;'; put 'put ''dW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIFN0P2RlbGV0ZSBKW1N0XTpTdCYmKFN0W3JdPW51bGwpLE90LnpvbmUuY2FuY2VsVGFzayhPdCkpOmN0LmFwcGx5KGgsQXQpfSl9Wm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsaD0+e2NvbnN0IFA9aFtab25lLl9fc3ltYm9sX18oImxlZ2Fj''@;'; put 'put ''eVBhdGNoIildO1AmJlAoKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJ0aW1lcnMiLGg9Pntjb25zdCBQPSJzZXQiLEk9ImNsZWFyIjthKGgsUCxJLCJUaW1lb3V0IiksYShoLFAsSSwiSW50ZXJ2YWwiKSxhKGgsUCxJLCJJbW1lZGlhdGUiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5p''@;'; put 'put ''bWF0aW9uRnJhbWUiLGg9PnthKGgsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLGEoaCwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksYShoLCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKX0pLFpvbmUu''@;'; put 'put ''X19sb2FkX3BhdGNoKCJibG9ja2luZyIsKGgsUCk9Pntjb25zdCBJPVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl07Zm9yKGxldCBUPTA7VDxJLmxlbmd0aDtUKyspWChoLElbVF0sKGssSix6KT0+ZnVuY3Rpb24ob3QsY3Qpe3JldHVybiBQLmN1cnJlbnQucnVuKGssaCxjdCx6KX0pfSks''@;'; put 'put ''Wm9uZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0IiwoaCxQLEkpPT57KGZ1bmN0aW9uICQoaCxQKXtQLnBhdGNoRXZlbnRQcm90b3R5cGUoaCxQKX0pKGgsSSksZnVuY3Rpb24gRChoLFApe2lmKFpvbmVbUC5zeW1ib2woInBhdGNoRXZlbnRUYXJnZXQiKV0pcmV0dXJuO2NvbnN0e2V2ZW50''@;'; put 'put ''TmFtZXM6SSx6b25lU3ltYm9sRXZlbnROYW1lczpULFRSVUVfU1RSOkEsRkFMU0VfU1RSOmssWk9ORV9TWU1CT0xfUFJFRklYOkp9PVAuZ2V0R2xvYmFsT2JqZWN0cygpO2ZvcihsZXQgb3Q9MDtvdDxJLmxlbmd0aDtvdCsrKXtjb25zdCBjdD1JW290XSxTdD1KKyhjdCtrKSxPdD1KKyhjdCtB''@;'; put 'put ''KTtUW2N0XT17fSxUW2N0XVtrXT1TdCxUW2N0XVtBXT1PdH1jb25zdCB6PWguRXZlbnRUYXJnZXQ7eiYmei5wcm90b3R5cGUmJlAucGF0Y2hFdmVudFRhcmdldChoLFAsW3omJnoucHJvdG90eXBlXSl9KGgsSSk7Y29uc3QgVD1oLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7VCYmVC5wcm90''@;'; put 'put ''b3R5cGUmJkkucGF0Y2hFdmVudFRhcmdldChoLEksW1QucHJvdG90eXBlXSl9KSxab25lLl9fbG9hZF9wYXRjaCgiTXV0YXRpb25PYnNlcnZlciIsKGgsUCxJKT0+e3N0KCJNdXRhdGlvbk9ic2VydmVyIiksc3QoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKX0pLFpvbmUuX19sb2FkX3BhdGNo''@;'; put 'put ''KCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsKGgsUCxJKT0+e3N0KCJJbnRlcnNlY3Rpb25PYnNlcnZlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIkZpbGVSZWFkZXIiLChoLFAsSSk9PntzdCgiRmlsZVJlYWRlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoaCxQLEkpPT57''@;'; put 'put ''IWZ1bmN0aW9uIGxuKGgsUCl7aWYoUyYmIUt8fFpvbmVbaC5zeW1ib2woInBhdGNoRXZlbnRzIildKXJldHVybjtjb25zdCBJPVAuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2xldCBUPVtdO2lmKEMpe2NvbnN0IEE9d2luZG93O1Q9VC5jb25jYXQoWyJEb2N1bWVudCIsIlNWR0VsZW1l''@;'; put 'put ''bnQiLCJFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJIVE1MQm9keUVsZW1lbnQiLCJIVE1MTWVkaWFFbGVtZW50IiwiSFRNTEZyYW1lU2V0RWxlbWVudCIsIkhUTUxGcmFtZUVsZW1lbnQiLCJIVE1MSUZyYW1lRWxlbWVudCIsIkhUTUxNYXJxdWVlRWxlbWVudCIsIldvcmtlciJdKTtjb25zdCBr''@;'; put 'put ''PWZ1bmN0aW9uIHZ0KCl7dHJ5e2NvbnN0IGg9ai5uYXZpZ2F0b3IudXNlckFnZW50O2lmKC0xIT09aC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PWguaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaHt9cmV0dXJuITF9KCk/W3t0YXJnZXQ6QSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJy''@;'; put 'put ''b3IiXX1dOltdO1p0KEEsZW4oQSksSSYmSS5jb25jYXQoayksdChBKSl9VD1ULmNvbmNhdChbIlhNTEh0dHBSZXF1ZXN0IiwiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCIsIklEQkluZGV4IiwiSURCUmVxdWVzdCIsIklEQk9wZW5EQlJlcXVlc3QiLCJJREJEYXRhYmFzZSIsIklEQlRyYW5z''@;'; put 'put ''YWN0aW9uIiwiSURCQ3Vyc29yIiwiV2ViU29ja2V0Il0pO2ZvcihsZXQgQT0wO0E8VC5sZW5ndGg7QSsrKXtjb25zdCBrPVBbVFtBXV07ayYmay5wcm90b3R5cGUmJlp0KGsucHJvdG90eXBlLGVuKGsucHJvdG90eXBlKSxJKX19KEksaCl9KSxab25lLl9fbG9hZF9wYXRjaCgiY3VzdG9tRWxl''@;'; put 'put ''bWVudHMiLChoLFAsSSk9PnshZnVuY3Rpb24gbShoLFApe2NvbnN0e2lzQnJvd3NlcjpJLGlzTWl4OlR9PVAuZ2V0R2xvYmFsT2JqZWN0cygpOyhJfHxUKSYmaC5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIGgmJlAucGF0Y2hDYWxsYmFja3MoUCxoLmN1c3RvbUVsZW1lbnRz''@;'; put 'put ''LCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfShoLEkpfSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsKGgsUCk9PnshZnVuY3Rp''@;'; put 'put ''b24gb3QoY3Qpe2NvbnN0IGl0PWN0LlhNTEh0dHBSZXF1ZXN0O2lmKCFpdClyZXR1cm47Y29uc3QgQXQ9aXQucHJvdG90eXBlO2xldCBPdD1BdFt1XSxrdD1BdFtmXTtpZighT3Qpe2NvbnN0IHE9Y3QuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihxKXtjb25zdCBQdD1xLnByb3RvdHlw''@;'; put 'put ''ZTtPdD1QdFt1XSxrdD1QdFtmXX19Y29uc3QgUnQ9InJlYWR5c3RhdGVjaGFuZ2UiLEp0PSJzY2hlZHVsZWQiO2Z1bmN0aW9uICR0KHEpe2NvbnN0IFB0PXEuZGF0YSxkdD1QdC50YXJnZXQ7ZHRba109ITEsZHRbel09ITE7Y29uc3QgenQ9ZHRbQV07T3R8fChPdD1kdFt1XSxrdD1kdFtmXSks''@;'; put 'put ''enQmJmt0LmNhbGwoZHQsUnQsenQpO2NvbnN0IF90PWR0W0FdPSgpPT57aWYoZHQucmVhZHlTdGF0ZT09PWR0LkRPTkUpaWYoIVB0LmFib3J0ZWQmJmR0W2tdJiZxLnN0YXRlPT09SnQpe2NvbnN0IEx0PWR0W1AuX19zeW1ib2xfXygibG9hZGZhbHNlIildO2lmKDAhPT1kdC5zdGF0dXMmJkx0''@;'; put 'put ''JiZMdC5sZW5ndGg+MCl7Y29uc3QgcXQ9cS5pbnZva2U7cS5pbnZva2U9ZnVuY3Rpb24oKXtjb25zdCBWdD1kdFtQLl9fc3ltYm9sX18oImxvYWRmYWxzZSIpXTtmb3IobGV0IEt0PTA7S3Q8VnQubGVuZ3RoO0t0KyspVnRbS3RdPT09cSYmVnQuc3BsaWNlKEt0LDEpOyFQdC5hYm9ydGVkJiZx''@;'; put 'put ''LnN0YXRlPT09SnQmJnF0LmNhbGwocSl9LEx0LnB1c2gocSl9ZWxzZSBxLmludm9rZSgpfWVsc2UhUHQuYWJvcnRlZCYmITE9PT1kdFtrXSYmKGR0W3pdPSEwKX07cmV0dXJuIE90LmNhbGwoZHQsUnQsX3QpLGR0W0ldfHwoZHRbSV09cSkscnQuYXBwbHkoZHQsUHQuYXJncyksZHRba109ITAs''@;'; put 'put ''cX1mdW5jdGlvbiB5dCgpe31mdW5jdGlvbiBldChxKXtjb25zdCBQdD1xLmRhdGE7cmV0dXJuIFB0LmFib3J0ZWQ9ITAsQ3QuYXBwbHkoUHQudGFyZ2V0LFB0LmFyZ3MpfWNvbnN0IEd0PVgoQXQsIm9wZW4iLCgpPT5mdW5jdGlvbihxLFB0KXtyZXR1cm4gcVtUXT0wPT1QdFsyXSxxW0pdPVB0''@;'; put 'put ''WzFdLEd0LmFwcGx5KHEsUHQpfSksVXQ9eCgiZmV0Y2hUYXNrQWJvcnRpbmciKSx3dD14KCJmZXRjaFRhc2tTY2hlZHVsaW5nIikscnQ9WChBdCwic2VuZCIsKCk9PmZ1bmN0aW9uKHEsUHQpe2lmKCEwPT09UC5jdXJyZW50W3d0XXx8cVtUXSlyZXR1cm4gcnQuYXBwbHkocSxQdCk7e2NvbnN0''@;'; put 'put ''IGR0PXt0YXJnZXQ6cSx1cmw6cVtKXSxpc1BlcmlvZGljOiExLGFyZ3M6UHQsYWJvcnRlZDohMX0senQ9ZygiWE1MSHR0cFJlcXVlc3Quc2VuZCIseXQsZHQsJHQsZXQpO3EmJiEwPT09cVt6XSYmIWR0LmFib3J0ZWQmJnp0LnN0YXRlPT09SnQmJnp0Lmludm9rZSgpfX0pLEN0PVgoQXQsImFi''@;'; put 'put ''b3J0IiwoKT0+ZnVuY3Rpb24ocSxQdCl7Y29uc3QgZHQ9ZnVuY3Rpb24gU3QocSl7cmV0dXJuIHFbSV19KHEpO2lmKGR0JiYic3RyaW5nIj09dHlwZW9mIGR0LnR5cGUpe2lmKG51bGw9PWR0LmNhbmNlbEZufHxkdC5kYXRhJiZkdC5kYXRhLmFib3J0ZWQpcmV0dXJuO2R0LnpvbmUuY2FuY2Vs''@;'; put 'put ''VGFzayhkdCl9ZWxzZSBpZighMD09PVAuY3VycmVudFtVdF0pcmV0dXJuIEN0LmFwcGx5KHEsUHQpfSl9KGgpO2NvbnN0IEk9eCgieGhyVGFzayIpLFQ9eCgieGhyU3luYyIpLEE9eCgieGhyTGlzdGVuZXIiKSxrPXgoInhoclNjaGVkdWxlZCIpLEo9eCgieGhyVVJMIiksej14KCJ4aHJFcnJv''@;'; put 'put ''ckJlZm9yZVNjaGVkdWxlZCIpfSksWm9uZS5fX2xvYWRfcGF0Y2goImdlb2xvY2F0aW9uIixoPT57aC5uYXZpZ2F0b3ImJmgubmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZmdW5jdGlvbiBCKGgsUCl7Y29uc3QgST1oLmNvbnN0cnVjdG9yLm5hbWU7Zm9yKGxldCBUPTA7VDxQLmxlbmd0aDtUKysp''@;'; put 'put ''e2NvbnN0IEE9UFtUXSxrPWhbQV07aWYoayl7aWYoIWIoYyhoLEEpKSljb250aW51ZTtoW0FdPSh6PT57Y29uc3Qgb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gei5hcHBseSh0aGlzLEYoYXJndW1lbnRzLEkrIi4iK0EpKX07cmV0dXJuIFEob3Qseiksb3R9KShrKX19fShoLm5hdmlnYXRvci5nZW9s''@;'; put 'put ''b2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSxab25lLl9fbG9hZF9wYXRjaCgiUHJvbWlzZVJlamVjdGlvbkV2ZW50IiwoaCxQKT0+e2Z1bmN0aW9uIEkoVCl7cmV0dXJuIGZ1bmN0aW9uKEEpe2FuKGgsVCkuZm9yRWFjaChKPT57Y29uc3Qgej1oLlBy''@;'; put 'put ''b21pc2VSZWplY3Rpb25FdmVudDtpZih6KXtjb25zdCBvdD1uZXcgeihULHtwcm9taXNlOkEucHJvbWlzZSxyZWFzb246QS5yZWplY3Rpb259KTtKLmludm9rZShvdCl9fSl9fWguUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoUFt4KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIp''@;'; put 'put ''XT1JKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxQW3goInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPUkoInJlamVjdGlvbmhhbmRsZWQiKSl9KSxab25lLl9fbG9hZF9wYXRjaCgicXVldWVNaWNyb3Rhc2siLChoLFAsSSk9PnshZnVuY3Rpb24gZChoLFApe1AucGF0Y2hNZXRob2QoaCwicXVl''@;'; put 'put ''dWVNaWNyb3Rhc2siLEk9PmZ1bmN0aW9uKFQsQSl7Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJxdWV1ZU1pY3JvdGFzayIsQVswXSl9KX0oaCxJKX0pfSwzMDc1ODooYyxsLHQpPT57InVzZSBzdHJpY3QiO2NvbnN0IG49dCgxMjAzMCk7SW50bC5EYXRlVGltZUZvcm1hdC5wcm90''@;'; put 'put ''b3R5cGUuZm9ybWF0VG9QYXJ0cz1mdW5jdGlvbihiKXtsZXQgTz10aGlzLnJlc29sdmVkT3B0aW9ucygpLFM9ZnVuY3Rpb24gQihiKXt2YXIgWix0dCxfLG50LHN0LE89Yi5hdmFpbGFibGVGb3JtYXRzLFM9Yi50aW1lRm9ybWF0cyxDPWIuZGF0ZUZvcm1hdHMsSz1iLm1lZGl1bSxVPVtdLFg9''@;'; put 'put ''W10sVj1bXTtmdW5jdGlvbiBRKFksZnQpe3ZhciB2dD1uZXcgQXJyYXkoKFkubWF0Y2goL00vZyl8fFtdKS5sZW5ndGgrMSksTXQ9bmV3IEFycmF5KChZLm1hdGNoKC9FL2cpfHxbXSkubGVuZ3RoKzEpO3JldHVybiB2dC5sZW5ndGg+MiYmKGZ0PWZ0LnJlcGxhY2UoLyhNfEwpKy8sdnQuam9p''@;'; put 'put ''bigiJDEiKSkpLE10Lmxlbmd0aD4yJiYoZnQ9ZnQucmVwbGFjZSgvKFtFZWNdKSsvLE10LmpvaW4oIiQxIikpKSxmdH1mb3IoWiBpbiBPKU8uaGFzT3duUHJvcGVydHkoWikmJigoXz1GKHR0PVEoWixPW1pdKSkpJiYoVS5wdXNoKF8pLHcoXyk/Vi5wdXNoKHR0KTpSKF8pJiZYLnB1c2godHQp''@;'; put 'put ''KSk7Zm9yKG50PTA7bnQ8WC5sZW5ndGg7bnQrPTEpZm9yKHN0PTA7c3Q8Vi5sZW5ndGg7c3QrPTEpKF89Rih0dD1LLnJlcGxhY2UoInswfSIsWFtudF0pLnJlcGxhY2UoInsxfSIsVltzdF0pLnJlcGxhY2UoL15bLFxzXSt8Wyxcc10rJC9naSwiIikpKSYmVS5wdXNoKF8pO2ZvcihaIGluIFMp''@;'; put 'put ''Uy5oYXNPd25Qcm9wZXJ0eShaKSYmKChfPUYodHQ9UShaLFNbWl0pKSkmJlUucHVzaChfKSk7Zm9yKFogaW4gQylDLmhhc093blByb3BlcnR5KFopJiYoKF89Rih0dD1RKFosQ1taXSkpKSYmVS5wdXNoKF8pKTtyZXR1cm4gVX0obi5kYXRlLmZvcm1hdHMpLEM9e307Zm9yKHZhciBLIGluIGYp''@;'; put 'put ''cy5jYWxsKGYsSykmJihDWyJbWyIrSysiXV0iXT1PW0tdKTtsZXQgWj1mdW5jdGlvbiBpKGIsTyxTKXtmb3IodmFyIFgsc3Q9LTEvMCxWPTAsUT1PLmxlbmd0aDtWPFE7KXt2YXIgWT1PW1ZdLGZ0PTA7Zm9yKHZhciB2dCBpbiBmKWlmKHMuY2FsbChmLHZ0KSl7dmFyIE10PWJbIltbIit2dCsi''@;'; put 'put ''XV0iXSxFdD1zLmNhbGwoWSx2dCk/WVt2dF06dm9pZCAwO2lmKHZvaWQgMD09PU10JiZ2b2lkIDAhPT1FdClmdC09MjA7ZWxzZSBpZih2b2lkIDAhPT1NdCYmdm9pZCAwPT09RXQpZnQtPTEyMDtlbHNle3ZhciBGdD1bIjItZGlnaXQiLCJudW1lcmljIiwibmFycm93Iiwic2hvcnQiLCJsb25n''@;'; put 'put ''Il0sanQ9by5jYWxsKEZ0LE10KSxYdD1vLmNhbGwoRnQsRXQpLEJ0PU1hdGgubWF4KE1hdGgubWluKFh0LWp0LDIpLC0yKTtTJiYoKCJudW1lcmljIj09PU10fHwiMi1kaWdpdCI9PT1NdCkmJiJudW1lcmljIiE9PUV0JiYiMi1kaWdpdCIhPT1FdHx8Im51bWVyaWMiIT09TXQmJiIyLWRpZ2l0''@;'; put 'put ''IiE9PU10JiYoIjItZGlnaXQiPT09RXR8fCJudW1lcmljIj09PUV0KSkmJihmdC09OCksMj09PUJ0P2Z0LT02OjE9PT1CdD9mdC09MzotMT09PUJ0P2Z0LT02Oi0yPT09QnQmJihmdC09OCl9fWZ0PnN0JiYoc3Q9ZnQsWD1ZKSxWKyt9cmV0dXJuIFh9KEMsUyk7cmV0dXJuIGZ1bmN0aW9uIGUo''@;'; put 'put ''YixPKXtpZighaXNGaW5pdGUoTykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdmFsaWQgZGF0ZSBwYXNzZWQgdG8gZm9ybWF0VG9QYXJ0cyIpO2Zvcih2YXIgWCxTPSJlbi1VUyIsQz1iLnBhdHRlcm4sWj0obmV3IEludGwuTnVtYmVyRm9ybWF0KFtTXSx7dXNlR3JvdXBpbmc6ITF9''@;'; put 'put ''KSxuZXcgSW50bC5OdW1iZXJGb3JtYXQoW1NdLHttaW5pbXVtSW50ZWdlckRpZ2l0czoyLHVzZUdyb3VwaW5nOiExfSksZnVuY3Rpb24gcChiLE8sUyl7dmFyIEM9bmV3IERhdGUoYiksSz0iZ2V0IisoU3x8IiIpO3JldHVybnsiW1t3ZWVrZGF5XV0iOkNbSysiRGF5Il0oKSwiW1tlcmFdXSI6''@;'; put 'put ''KyhDW0srIkZ1bGxZZWFyIl0oKT49MCksIltbeWVhcl1dIjpDW0srIkZ1bGxZZWFyIl0oKSwiW1ttb250aF1dIjpDW0srIk1vbnRoIl0oKSwiW1tkYXldXSI6Q1tLKyJEYXRlIl0oKSwiW1tob3VyXV0iOkNbSysiSG91cnMiXSgpLCJbW21pbnV0ZV1dIjpDW0srIk1pbnV0ZXMiXSgpLCJbW3Nl''@;'; put 'put ''Y29uZF1dIjpDW0srIlNlY29uZHMiXSgpLCJbW2luRFNUXV0iOiExfX0oTykpLHR0PSJncmVnb3J5IixfPW4uZGF0ZS5jYWxlbmRhcnMsbnQ9W10sc3Q9L3soW159XSspfS9nLFY9MDtudWxsIT09KFg9c3QuZXhlYyhDKSk7KXtWPFguaW5kZXgmJm50LnB1c2goe3R5cGU6InNlcGFyYXRvciIs''@;'; put 'put ''dmFsdWU6Qy5zdWJzdHIoVixYLmluZGV4LVYpfSk7dmFyIFE9WFsxXSxZPW51bGw7aWYocy5jYWxsKGIsUSkpe3ZhciBmdCx2dD1iW1FdLE10PVpbIltbIitRKyJdXSJdO2lmKCJ5ZWFyIj09PVEmJk10PD0wP010PTEtTXQ6Im1vbnRoIj09PVE/TXQrKzoiaG91ciI9PT1RJiYhMD09PWJbIltb''@;'; put 'put ''aG91cjEyXV0iXSYmKGZ0PShNdCU9MTIpIT09WlsiW1siK1ErIl1dIl0sMD09PU10JiYhMD09PWJbIltbaG91ck5vMF1dIl0mJihNdD0xMikpLCJudW1lcmljIj09PXZ0KVk9TXQ7ZWxzZSBpZigiMi1kaWdpdCI9PT12dCkoWT1NdCkubGVuZ3RoPjImJihZPVkuc2xpY2UoLTIpKTtlbHNlIGlm''@;'; put 'put ''KHZ0IGluIHUpc3dpdGNoKFEpe2Nhc2UibW9udGgiOlk9eShfLHR0LCJtb250aHMiLHZ0LFpbIltbIitRKyJdXSJdKTticmVhaztjYXNlIndlZWtkYXkiOnRyeXtZPXkoXyx0dCwiZGF5cyIsdnQsWlsiW1siK1ErIl1dIl0pfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQg''@;'; put 'put ''d2Vla2RheSBkYXRhIGZvciBsb2NhbGUgIitTKX1icmVhaztjYXNlInRpbWVab25lTmFtZSI6WT0iIjticmVhaztkZWZhdWx0Olk9WlsiW1siK1ErIl1dIl19fWVsc2UiYW1wbSI9PT1RJiYoWT15KF8sdHQsImRheVBlcmlvZHMiLGZ0PyJwbSI6ImFtIikpO251bGwhPT1ZJiYobnQucHVzaCh7''@;'; put 'put ''dHlwZTpYWzFdLHZhbHVlOll9KSxWPVguaW5kZXgrWFswXS5sZW5ndGgpfXJldHVybiBWPEMubGVuZ3RoJiZudC5wdXNoKHt0eXBlOiJzZXBhcmF0b3IiLHZhbHVlOkMuc3Vic3RyKFYpfSksbnR9KFosYil9O3ZhciBzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1BcnJheS5w''@;'; put 'put ''cm90b3R5cGUuaW5kZXhPZix1PU9iamVjdC5jcmVhdGUobnVsbCx7bmFycm93Ont9LHNob3J0Ont9LGxvbmc6e319KSxmPXt3ZWVrZGF5OlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0sZXJhOlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0seWVhcjpbIjItZGlnaXQiLCJudW1lcmljIl0sbW9u''@;'; put 'put ''dGg6WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLGRheTpbIjItZGlnaXQiLCJudW1lcmljIl0saG91cjpbIjItZGlnaXQiLCJudW1lcmljIl0sbWludXRlOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxzZWNvbmQ6WyIyLWRpZ2l0IiwibnVtZXJpYyJdLHRpbWVa''@;'; put 'put ''b25lTmFtZTpbInNob3J0IiwibG9uZyJdfTtmdW5jdGlvbiB5KGIsTyxTLEMsSyl7dmFyIFU9YltPXSYmYltPXVtTXT9iW09dW1NdOmIuZ3JlZ29yeVtTXSxaPXtuYXJyb3c6WyJzaG9ydCIsImxvbmciXSxzaG9ydDpbImxvbmciLCJuYXJyb3ciXSxsb25nOlsic2hvcnQiLCJuYXJyb3ciXX0s''@;'; put 'put ''dHQ9cy5jYWxsKFUsQyk/VVtDXTpzLmNhbGwoVSxaW0NdWzBdKT9VW1pbQ11bMF1dOlVbWltDXVsxXV07cmV0dXJuIG51bGwhPUs/dHRbS106dHR9dmFyIHY9Lyg/OltFZWNdezEsNn18R3sxLDV9fCg/Olt5WXVdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18YXxbaGtIS117MSwyfXxtezEs''@;'; put 'put ''Mn18c3sxLDJ9fHp7MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2csZz0vW1F4WFZPdlpBU2pnRkR3V0lRcUhdLyx4PXttb250aDpbIm51bWVyaWMiLCIyLWRpZ2l0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il0sd2Vla2RheTpbInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmci''@;'; put 'put ''LCJuYXJyb3ciXSxlcmE6WyJzaG9ydCIsInNob3J0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il19LEU9WyJ3ZWVrZGF5IiwiZXJhIiwieWVhciIsIm1vbnRoIiwiZGF5Il0saj1bImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJ0aW1lWm9uZU5hbWUiXTtmdW5jdGlvbiB3KGIpe2Zvcih2YXIg''@;'; put 'put ''Tz0wO088ai5sZW5ndGg7Tys9MSlpZihiLmhhc093blByb3BlcnR5KGpbT10pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFIoYil7Zm9yKHZhciBPPTA7TzxFLmxlbmd0aDtPKz0xKWlmKGIuaGFzT3duUHJvcGVydHkoRVtPXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gRihiKXtp''@;'; put 'put ''ZighZy50ZXN0KGIpKXt2YXIgTz17fTtyZXR1cm4gTy5wYXR0ZXJuPWIucmVwbGFjZSh2LGZ1bmN0aW9uKFMpe3N3aXRjaChTLmNoYXJBdCgwKSl7Y2FzZSJFIjpjYXNlImUiOmNhc2UiYyI6cmV0dXJuIE8ud2Vla2RheT14LndlZWtkYXlbUy5sZW5ndGgtMV0sInt3ZWVrZGF5fSI7Y2FzZSJH''@;'; put 'put ''IjpyZXR1cm4gTy5lcmE9eC5lcmFbUy5sZW5ndGgtMV0sIntlcmF9IjtjYXNlInkiOmNhc2UiWSI6Y2FzZSJ1IjpjYXNlIlUiOnJldHVybiBPLnllYXI9Mj09PVMubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInt5ZWFyfSI7Y2FzZSJNIjpjYXNlIkwiOnJldHVybiBPLm1vbnRoPXgubW9u''@;'; put 'put ''dGhbUy5sZW5ndGgtMV0sInttb250aH0iO2Nhc2UiZCI6cmV0dXJuIE8uZGF5PTI9PT1TLmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7ZGF5fSI7Y2FzZSJhIjpyZXR1cm4ie2FtcG19IjtjYXNlImgiOmNhc2UiSCI6Y2FzZSJrIjpjYXNlIksiOnJldHVybiBPLmhvdXI9Mj09PVMubGVu''@;'; put 'put ''Z3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsIntob3VyfSI7Y2FzZSJtIjpyZXR1cm4gTy5taW51dGU9Mj09PVMubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInttaW51dGV9IjtjYXNlInMiOnJldHVybiBPLnNlY29uZD0yPT09Uy5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie3NlY29u''@;'; put 'put ''ZH0iO2Nhc2UieiI6cmV0dXJuIE8udGltZVpvbmVOYW1lPVMubGVuZ3RoPDQ/InNob3J0IjoibG9uZyIsInt0aW1lWm9uZU5hbWV9In19KSxPLnBhdHRlcm49Ty5wYXR0ZXJuLnJlcGxhY2UoLycoW14nXSopJy9nLGZ1bmN0aW9uKFMsQyl7cmV0dXJuIEN8fCInIn0pLE8ucGF0dGVybi5pbmRl''@;'; put 'put ''eE9mKCJ7YW1wbX0iKT4tMSYmKE8uaG91cjEyPSEwLE8ucGF0dGVybjEyPU8ucGF0dGVybixPLnBhdHRlcm49Ty5wYXR0ZXJuLnJlcGxhY2UoInthbXBtfSIsIiIpLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKSksT319fSw4MjY5MTooYyxsLHQpPT57''@;'; put 'put ''dCgzOTExNSksdCgyMDc3NCksdCgzMDUyMiksdCg1ODI5NSksdCg4Nzg0MiksdCg1MDExMCksdCgyMDA3NSksdCgyNDMzNiksdCgxOTM3MSksdCg5ODgzNyksdCgyNjc3MyksdCgxNTc0NSksdCgzMzA1NyksdCgzNzUwKSx0KDIzMzY5KSx0KDk5NTY0KSx0KDMyZTMpLHQoNDg5NzcpLHQoNTIz''@;'; put 'put ''MTApLHQoOTQ4OTkpLHQoMzE4NDIpLHQoNTY5OTcpLHQoMjU2NDUpfSw3Njc3OihjLGwsdCk9Pnt0KDgxODIyKSx0KDE5OTc3KSx0KDkxMDMxKSx0KDQ2MzMxKSx0KDQxNTYwKSxjLmV4cG9ydHM9RGF0ZX0sODg4MTM6KGMsbCx0KT0+e3QoMzk3MzApLHQoNjA1OSksdCg0ODM3NyksdCgyNTY0''@;'; put 'put ''NSl9LDE3ODc4OihjLGwsdCk9Pnt0KDk2MjUzKSx0KDM5MTE1KSx0KDkxMTgxKSx0KDg4NDE2KSx0KDI1NjQ1KX0sMTYzNDM6KGMsbCx0KT0+e3QoNzY1MDMpLHQoNjY3ODYpLHQoNTA5MzIpLHQoNTc1MjYpLHQoMjE1OTEpLHQoOTA3MyksdCg4MDM0NyksdCgzMDU3OSksdCg0NjY5KSx0KDY3''@;'; put 'put ''NzEwKSx0KDQ1Nzg5KSx0KDMzNTE0KSx0KDk5OTc4KSx0KDU4NDcyKSx0KDg2OTQ2KSx0KDM1MDY4KSx0KDQxMyksdCgyNTY0NSl9LDYyMzE0OihjLGwsdCk9Pnt0KDExMjQ2KSx0KDMwNzI2KSx0KDE5MDEpLHQoNzU5NzIpLHQoNTM0MDMpLHQoOTI1MTYpLHQoNDkzNzEpLHQoODY0NzkpLHQo''@;'; put 'put ''OTE3MzYpLHQoNTE4ODkpLHQoNjUxNzcpLHQoODEyNDYpLHQoMjU2NDUpfSw3NzY1NzooYyxsLHQpPT57dCg5NTc2NyksdCg2ODEzMiksdCg0ODM4OCksdCgzNzQ3MCksdCg5NDg4MiksdCg0MTUyMCksdCgyNzQ3NiksdCg3OTYyMiksdCg4OTM3NSksdCg0MzUzMyksdCg4NDY3MiksdCg2NDE1''@;'; put 'put ''NyksdCgzNTA5NSksdCg0OTg5MiksdCg3NTExNSksdCg5OTE3NiksdCg2ODgzOCksdCg5NjI1MyksdCgyNTY0NSl9LDUxNzcxOihjLGwsdCk9Pnt0KDY0Mjk5KSx0KDI1NjQ1KX0sNTMxMDooYyxsLHQpPT57dCg3MTA4NCksdCgyNTY0NSl9LDQzNDk5OihjLGwsdCk9Pnt0KDIxNTcyKSx0KDgy''@;'; put 'put ''MTM5KSx0KDEwNjg1KSx0KDg1NTM1KSx0KDE3MzQ3KSx0KDgzMDQ5KSx0KDk2NjMzKSx0KDY4OTg5KSx0KDc4MjcwKSx0KDY0NTEwKSx0KDczOTg0KSx0KDc1NzY5KSx0KDUwMDU1KSx0KDk2MDE0KSx0KDI1NjQ1KX0sMjkxMzI6KGMsbCx0KT0+e3QoODM5NDYpLHQoMTgyNjkpLHQoNjYxMDgp''@;'; put 'put ''LHQoNzY3NzQpLHQoMjE0NjYpLHQoNTkzNTcpLHQoNzYxNDIpLHQoNTE4NzYpLHQoMjU2NDUpfSw1MjI5ODooYyxsLHQpPT57dCg5NjI1MyksdCgzOTExNSksdCg5MTE4MSksdCg5ODE4NCksdCgyNTY0NSl9LDM3MDQyOihjLGwsdCk9Pnt0KDUwMTkxKSx0KDk4MzA2KSx0KDY0NTY0KSx0KDM5''@;'; put 'put ''MTE1KSx0KDI5NTM5KSx0KDk2NjIwKSx0KDYyODUwKSx0KDEwODIzKSx0KDE3NzMyKSx0KDQwODU2KSx0KDgwNzAzKSx0KDkxNTM5KSx0KDUyOTIpLHQoNDUxNzcpLHQoNzM2OTQpLHQoMzc2NDgpLHQoMjc3OTUpLHQoNDUzMSksdCgyMzYwNSksdCg2NzgwKSx0KDY5OTM3KSx0KDEwNTExKSx0''@;'; put 'put ''KDIxNDY2KSx0KDU5MzU3KSx0KDc2MTQyKSx0KDUxODc2KSx0KDI1NjQ1KX0sNDI0NDooYyxsLHQpPT57dCg5NTc2NyksdCg5NjI1MyksdCgyNTY0NSl9LDY3Nzk1OihjLGwsdCk9Pnt0KDUzMzY0KSx0KDUxNDMyKSx0KDI2NTYyKSx0KDg0NDE2KSx0KDk4NjgxKSx0KDMyMjEzKSx0KDYzNDcx''@;'; put 'put ''KSx0KDQzMjkpLHQoMjUxNTkpLHQoMjU2NDUpfSwyNDk2MzpjPT57Yy5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsKXRocm93IFR5cGVFcnJvcihsKyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIGx9fSw4MzM2NTooYyxsLHQpPT57dmFyIG49dCg5MjAz''@;'; put 'put ''Mik7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7aWYoIm51bWJlciIhPXR5cGVvZiBlJiYiTnVtYmVyIiE9bihlKSl0aHJvdyBUeXBlRXJyb3Iocyk7cmV0dXJuK2V9fSwxNzcyMjooYyxsLHQpPT57dmFyIG49dCg4NjMxNCkoInVuc2NvcGFibGVzIiksZT1BcnJheS5wcm90b3R5cGU7bnVsbD09''@;'; put 'put ''ZVtuXSYmdCg4NzcyOCkoZSxuLHt9KSxjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7ZVtuXVtzXT0hMH19LDc2NzkzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgyNDQ5NikoITApO2MuZXhwb3J0cz1mdW5jdGlvbihlLHMsbyl7cmV0dXJuIHMrKG8/bihlLHMpLmxlbmd0aDoxKX19LDgz''@;'; put 'put ''MzI4OmM9PntjLmV4cG9ydHM9ZnVuY3Rpb24obCx0LG4sZSl7aWYoIShsIGluc3RhbmNlb2YgdCl8fHZvaWQgMCE9PWUmJmUgaW4gbCl0aHJvdyBUeXBlRXJyb3IobisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gbH19LDI3MDA3OihjLGwsdCk9Pnt2YXIgbj10KDU1Mjg2KTtj''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIW4oZSkpdGhyb3cgVHlwZUVycm9yKGUrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiBlfX0sNTIxNjooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjA1MDgpLGU9dCg5MjMzNykscz10KDEwODc1KTtjLmV4cG9ydHM9W10uY29weVdp''@;'; put 'put ''dGhpbnx8ZnVuY3Rpb24odSxmKXt2YXIgaT1uKHRoaXMpLHA9cyhpLmxlbmd0aCkseT1lKHUscCksdj1lKGYscCksZz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCx4PU1hdGgubWluKCh2b2lkIDA9PT1nP3A6ZShnLHApKS12LHAteSksRT0xO2Zvcih2PHkmJnk8dit4''@;'; put 'put ''JiYoRT0tMSx2Kz14LTEseSs9eC0xKTt4LS0gPjA7KXYgaW4gaT9pW3ldPWlbdl06ZGVsZXRlIGlbeV0seSs9RSx2Kz1FO3JldHVybiBpfX0sNDY4NTI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDIwNTA4KSxlPXQoOTIzMzcpLHM9dCgxMDg3NSk7Yy5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KHUpe2Zvcih2YXIgZj1uKHRoaXMpLGk9cyhmLmxlbmd0aCkscD1hcmd1bWVudHMubGVuZ3RoLHk9ZShwPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxpKSx2PXA+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGc9dm9pZCAwPT09dj9pOmUodixpKTtnPnk7KWZbeSsrXT11O3JldHVybiBmfX0sOTQ5MDoo''@;'; put 'put ''YyxsLHQpPT57dmFyIG49dCgzNTMxKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXt2YXIgbz1bXTtyZXR1cm4gbihlLCExLG8ucHVzaCxvLHMpLG99fSw3OTMxNTooYyxsLHQpPT57dmFyIG49dCgyMjExMCksZT10KDEwODc1KSxzPXQoOTIzMzcpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24odSxmLGkpe3ZhciBnLHA9bih1KSx5PWUocC5sZW5ndGgpLHY9cyhpLHkpO2lmKG8mJmYhPWYpe2Zvcig7eT52OylpZigoZz1wW3YrK10pIT1nKXJldHVybiEwfWVsc2UgZm9yKDt5PnY7disrKWlmKChvfHx2IGluIHApJiZwW3ZdPT09ZilyZXR1cm4gb3x8dnx8MDtyZXR1''@;'; put 'put ''cm4hbyYmLTF9fX0sMTAwNTA6KGMsbCx0KT0+e3ZhciBuPXQoNzQxKSxlPXQoNDk3OTcpLHM9dCgyMDUwOCksbz10KDEwODc1KSx1PXQoMTY4ODYpO2MuZXhwb3J0cz1mdW5jdGlvbihmLGkpe3ZhciBwPTE9PWYseT0yPT1mLHY9Mz09ZixnPTQ9PWYseD02PT1mLEU9NT09Znx8eCxqPWl8fHU7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKHcsUixGKXtmb3IodmFyIFUsWixCPXModyksYj1lKEIpLE89bihSLEYsMyksUz1vKGIubGVuZ3RoKSxDPTAsSz1wP2oodyxTKTp5P2oodywwKTp2b2lkIDA7Uz5DO0MrKylpZigoRXx8QyBpbiBiKSYmKFo9TyhVPWJbQ10sQyxCKSxmKSlpZihwKUtbQ109WjtlbHNl''@;'; put 'put ''IGlmKFopc3dpdGNoKGYpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIFU7Y2FzZSA2OnJldHVybiBDO2Nhc2UgMjpLLnB1c2goVSl9ZWxzZSBpZihnKXJldHVybiExO3JldHVybiB4Py0xOnZ8fGc/ZzpLfX19LDM3NjI4OihjLGwsdCk9Pnt2YXIgbj10KDI0OTYzKSxlPXQoMjA1MDgp''@;'; put 'put ''LHM9dCg0OTc5Nyksbz10KDEwODc1KTtjLmV4cG9ydHM9ZnVuY3Rpb24odSxmLGkscCx5KXtuKGYpO3ZhciB2PWUodSksZz1zKHYpLHg9byh2Lmxlbmd0aCksRT15P3gtMTowLGo9eT8tMToxO2lmKGk8Milmb3IoOzspe2lmKEUgaW4gZyl7cD1nW0VdLEUrPWo7YnJlYWt9aWYoRSs9aix5P0U8''@;'; put 'put ''MDp4PD1FKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7eT9FPj0wOng+RTtFKz1qKUUgaW4gZyYmKHA9ZihwLGdbRV0sRSx2KSk7cmV0dXJuIHB9fSw0MjczNjooYyxsLHQpPT57dmFyIG49dCg1NTI4NiksZT10KDQz''@;'; put 'put ''MDIpLHM9dCg4NjMxNCkoInNwZWNpZXMiKTtjLmV4cG9ydHM9ZnVuY3Rpb24obyl7dmFyIHU7cmV0dXJuIGUobykmJigiZnVuY3Rpb24iPT10eXBlb2YodT1vLmNvbnN0cnVjdG9yKSYmKHU9PT1BcnJheXx8ZSh1LnByb3RvdHlwZSkpJiYodT12b2lkIDApLG4odSkmJm51bGw9PT0odT11W3Nd''@;'; put 'put ''KSYmKHU9dm9pZCAwKSksdm9pZCAwPT09dT9BcnJheTp1fX0sMTY4ODY6KGMsbCx0KT0+e3ZhciBuPXQoNDI3MzYpO2MuZXhwb3J0cz1mdW5jdGlvbihlLHMpe3JldHVybiBuZXcobihlKSkocyl9fSwzNDM5ODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjQ5NjMpLGU9dCg1NTI4''@;'; put 'put ''Nikscz10KDk3MjQyKSxvPVtdLnNsaWNlLHU9e307Yy5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKHApe3ZhciB5PW4odGhpcyksdj1vLmNhbGwoYXJndW1lbnRzLDEpLGc9ZnVuY3Rpb24oKXt2YXIgeD12LmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5z''@;'; put 'put ''dGFuY2VvZiBnP2Z1bmN0aW9uKGkscCx5KXtpZighKHAgaW4gdSkpe2Zvcih2YXIgdj1bXSxnPTA7ZzxwO2crKyl2W2ddPSJhWyIrZysiXSI7dVtwXT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrdi5qb2luKCIsIikrIikiKX1yZXR1cm4gdVtwXShpLHkpfSh5LHgubGVuZ3RoLHgp''@;'; put 'put ''OnMoeSx4LHApfTtyZXR1cm4gZSh5LnByb3RvdHlwZSkmJihnLnByb3RvdHlwZT15LnByb3RvdHlwZSksZ319LDQxNDg4OihjLGwsdCk9Pnt2YXIgbj10KDkyMDMyKSxlPXQoODYzMTQpKCJ0b1N0cmluZ1RhZyIpLHM9IkFyZ3VtZW50cyI9PW4oZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRz''@;'; put 'put ''fSgpKTtjLmV4cG9ydHM9ZnVuY3Rpb24odSl7dmFyIGYsaSxwO3JldHVybiB2b2lkIDA9PT11PyJVbmRlZmluZWQiOm51bGw9PT11PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGk9ZnVuY3Rpb24odSxmKXt0cnl7cmV0dXJuIHVbZl19Y2F0Y2h7fX0oZj1PYmplY3QodSksZSkpP2k6cz9uKGYp''@;'; put 'put ''OiJPYmplY3QiPT0ocD1uKGYpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGYuY2FsbGVlPyJBcmd1bWVudHMiOnB9fSw5MjAzMjpjPT57dmFyIGw9e30udG9TdHJpbmc7Yy5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCkuc2xpY2UoOCwtMSl9fSw5ODI0OihjLGwsdCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIG49dCg5OTI3NSkuZixlPXQoNDI1MDMpLHM9dCgyNDQwOCksbz10KDc0MSksdT10KDgzMzI4KSxmPXQoMzUzMSksaT10KDQyOTIzKSxwPXQoMTU0MzYpLHk9dCgyOTc0KSx2PXQoNjcwNTcpLGc9dCg4NDcyOCkuZmFzdEtleSx4PXQoMTYxNiksRT12PyJfcyI6InNpemUi''@;'; put 'put ''LGo9ZnVuY3Rpb24odyxSKXt2YXIgQixGPWcoUik7aWYoIkYiIT09RilyZXR1cm4gdy5faVtGXTtmb3IoQj13Ll9mO0I7Qj1CLm4paWYoQi5rPT1SKXJldHVybiBCfTtjLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHcsUixGLEIpe3ZhciBiPXcoZnVuY3Rpb24oTyxTKXt1KE8s''@;'; put 'put ''YixSLCJfaSIpLE8uX3Q9UixPLl9pPWUobnVsbCksTy5fZj12b2lkIDAsTy5fbD12b2lkIDAsT1tFXT0wLG51bGwhPVMmJmYoUyxGLE9bQl0sTyl9KTtyZXR1cm4gcyhiLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIFM9eCh0aGlzLFIpLEM9Uy5faSxLPVMuX2Y7SztLPUsu''@;'; put 'put ''bilLLnI9ITAsSy5wJiYoSy5wPUsucC5uPXZvaWQgMCksZGVsZXRlIENbSy5pXTtTLl9mPVMuX2w9dm9pZCAwLFNbRV09MH0sZGVsZXRlOmZ1bmN0aW9uKE8pe3ZhciBTPXgodGhpcyxSKSxDPWooUyxPKTtpZihDKXt2YXIgSz1DLm4sVT1DLnA7ZGVsZXRlIFMuX2lbQy5pXSxDLnI9ITAsVSYm''@;'; put 'put ''KFUubj1LKSxLJiYoSy5wPVUpLFMuX2Y9PUMmJihTLl9mPUspLFMuX2w9PUMmJihTLl9sPVUpLFNbRV0tLX1yZXR1cm4hIUN9LGZvckVhY2g6ZnVuY3Rpb24oUyl7eCh0aGlzLFIpO2Zvcih2YXIgSyxDPW8oUyxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtLPUs/''@;'; put 'put ''Sy5uOnRoaXMuX2Y7KWZvcihDKEsudixLLmssdGhpcyk7SyYmSy5yOylLPUsucH0saGFzOmZ1bmN0aW9uKFMpe3JldHVybiEhaih4KHRoaXMsUiksUyl9fSksdiYmbihiLnByb3RvdHlwZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsUilbRV19fSksYn0sZGVmOmZ1bmN0''@;'; put 'put ''aW9uKHcsUixGKXt2YXIgYixPLEI9aih3LFIpO3JldHVybiBCP0Iudj1GOih3Ll9sPUI9e2k6Tz1nKFIsITApLGs6Uix2OkYscDpiPXcuX2wsbjp2b2lkIDAscjohMX0sdy5fZnx8KHcuX2Y9QiksYiYmKGIubj1CKSx3W0VdKyssIkYiIT09TyYmKHcuX2lbT109QikpLHd9LGdldEVudHJ5Omos''@;'; put 'put ''c2V0U3Ryb25nOmZ1bmN0aW9uKHcsUixGKXtpKHcsUixmdW5jdGlvbihCLGIpe3RoaXMuX3Q9eChCLFIpLHRoaXMuX2s9Yix0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIEI9dGhpcyxiPUIuX2ssTz1CLl9sO08mJk8ucjspTz1PLnA7cmV0dXJuIEIuX3QmJihCLl9sPU89Tz9P''@;'; put 'put ''Lm46Qi5fdC5fZik/cCgwLCJrZXlzIj09Yj9PLms6InZhbHVlcyI9PWI/Ty52OltPLmssTy52XSk6KEIuX3Q9dm9pZCAwLHAoMSkpfSxGPyJlbnRyaWVzIjoidmFsdWVzIiwhRiwhMCkseShSKX19fSwyMzY1NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjQ0MDgpLGU9dCg4NDcy''@;'; put 'put ''OCkuZ2V0V2VhayxzPXQoMjcwMDcpLG89dCg1NTI4NiksdT10KDgzMzI4KSxmPXQoMzUzMSksaT10KDEwMDUwKSxwPXQoNzkxODEpLHk9dCgxNjE2KSx2PWkoNSksZz1pKDYpLHg9MCxFPWZ1bmN0aW9uKFIpe3JldHVybiBSLl9sfHwoUi5fbD1uZXcgail9LGo9ZnVuY3Rpb24oKXt0aGlzLmE9''@;'; put 'put ''W119LHc9ZnVuY3Rpb24oUixGKXtyZXR1cm4gdihSLmEsZnVuY3Rpb24oQil7cmV0dXJuIEJbMF09PT1GfSl9O2oucHJvdG90eXBlPXtnZXQ6ZnVuY3Rpb24oUil7dmFyIEY9dyh0aGlzLFIpO2lmKEYpcmV0dXJuIEZbMV19LGhhczpmdW5jdGlvbihSKXtyZXR1cm4hIXcodGhpcyxSKX0sc2V0''@;'; put 'put ''OmZ1bmN0aW9uKFIsRil7dmFyIEI9dyh0aGlzLFIpO0I/QlsxXT1GOnRoaXMuYS5wdXNoKFtSLEZdKX0sZGVsZXRlOmZ1bmN0aW9uKFIpe3ZhciBGPWcodGhpcy5hLGZ1bmN0aW9uKEIpe3JldHVybiBCWzBdPT09Un0pO3JldHVybn5GJiZ0aGlzLmEuc3BsaWNlKEYsMSksISF+Rn19LGMuZXhw''@;'; put 'put ''b3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oUixGLEIsYil7dmFyIE89UihmdW5jdGlvbihTLEMpe3UoUyxPLEYsIl9pIiksUy5fdD1GLFMuX2k9eCsrLFMuX2w9dm9pZCAwLG51bGwhPUMmJmYoQyxCLFNbYl0sUyl9KTtyZXR1cm4gbihPLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9u''@;'; put 'put ''KFMpe2lmKCFvKFMpKXJldHVybiExO3ZhciBDPWUoUyk7cmV0dXJuITA9PT1DP0UoeSh0aGlzLEYpKS5kZWxldGUoUyk6QyYmcChDLHRoaXMuX2kpJiZkZWxldGUgQ1t0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKEMpe2lmKCFvKEMpKXJldHVybiExO3ZhciBLPWUoQyk7cmV0dXJuITA9PT1LP0Uo''@;'; put 'put ''eSh0aGlzLEYpKS5oYXMoQyk6SyYmcChLLHRoaXMuX2kpfX0pLE99LGRlZjpmdW5jdGlvbihSLEYsQil7dmFyIGI9ZShzKEYpLCEwKTtyZXR1cm4hMD09PWI/RShSKS5zZXQoRixCKTpiW1IuX2ldPUIsUn0sdWZzdG9yZTpFfX0sNDU3OTU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10''@;'; put 'put ''KDM4MTYpLGU9dCg0Mjk4NSkscz10KDc3MjM0KSxvPXQoMjQ0MDgpLHU9dCg4NDcyOCksZj10KDM1MzEpLGk9dCg4MzMyOCkscD10KDU1Mjg2KSx5PXQoNzQyNTMpLHY9dCg3NDYyKSxnPXQoMjI5NDMpLHg9dCg0MDI2Nik7Yy5leHBvcnRzPWZ1bmN0aW9uKEUsaix3LFIsRixCKXt2YXIgYj1u''@;'; put 'put ''W0VdLE89YixTPUY/InNldCI6ImFkZCIsQz1PJiZPLnByb3RvdHlwZSxLPXt9LFU9ZnVuY3Rpb24oWCl7dmFyIFY9Q1tYXTtzKEMsWCwiZGVsZXRlIj09WD9mdW5jdGlvbihRKXtyZXR1cm4hKEImJiFwKFEpKSYmVi5jYWxsKHRoaXMsMD09PVE/MDpRKX06ImhhcyI9PVg/ZnVuY3Rpb24oWSl7''@;'; put 'put ''cmV0dXJuIShCJiYhcChZKSkmJlYuY2FsbCh0aGlzLDA9PT1ZPzA6WSl9OiJnZXQiPT1YP2Z1bmN0aW9uKFkpe3JldHVybiBCJiYhcChZKT92b2lkIDA6Vi5jYWxsKHRoaXMsMD09PVk/MDpZKX06ImFkZCI9PVg/ZnVuY3Rpb24oWSl7cmV0dXJuIFYuY2FsbCh0aGlzLDA9PT1ZPzA6WSksdGhp''@;'; put 'put ''c306ZnVuY3Rpb24oWSxmdCl7cmV0dXJuIFYuY2FsbCh0aGlzLDA9PT1ZPzA6WSxmdCksdGhpc30pfTtpZigiZnVuY3Rpb24iPT10eXBlb2YgTyYmKEJ8fEMuZm9yRWFjaCYmIXkoZnVuY3Rpb24oKXsobmV3IE8pLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBaPW5ldyBPLHR0PVpbU10oQj97''@;'; put 'put ''fTotMCwxKSE9WixfPXkoZnVuY3Rpb24oKXtaLmhhcygxKX0pLG50PXYoZnVuY3Rpb24oWCl7bmV3IE8oWCl9KSxzdD0hQiYmeShmdW5jdGlvbigpe2Zvcih2YXIgWD1uZXcgTyxWPTU7Vi0tOylYW1NdKFYsVik7cmV0dXJuIVguaGFzKC0wKX0pO250fHwoKE89aihmdW5jdGlvbihYLFYpe2ko''@;'; put 'put ''WCxPLEUpO3ZhciBRPXgobmV3IGIsWCxPKTtyZXR1cm4gbnVsbCE9ViYmZihWLEYsUVtTXSxRKSxRfSkpLnByb3RvdHlwZT1DLEMuY29uc3RydWN0b3I9TyksKF98fHN0KSYmKFUoImRlbGV0ZSIpLFUoImhhcyIpLEYmJlUoImdldCIpKSwoc3R8fHR0KSYmVShTKSxCJiZDLmNsZWFyJiZkZWxl''@;'; put 'put ''dGUgQy5jbGVhcn1lbHNlIE89Ui5nZXRDb25zdHJ1Y3RvcihqLEUsRixTKSxvKE8ucHJvdG90eXBlLHcpLHUuTkVFRD0hMDtyZXR1cm4gZyhPLEUpLEtbRV09TyxlKGUuRytlLlcrZS5GKihPIT1iKSxLKSxCfHxSLnNldFN0cm9uZyhPLEUsRiksT319LDI1NjQ1OmM9Pnt2YXIgbD1jLmV4cG9y''@;'; put 'put ''dHM9e3ZlcnNpb246IjIuNi4xMiJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19lPWwpfSw5MjgxMTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTkyNzUpLGU9dCg5MDY4MSk7Yy5leHBvcnRzPWZ1bmN0aW9uKHMsbyx1KXtvIGluIHM/bi5mKHMsbyxlKDAsdSkpOnNbb109dX19''@;'; put 'put ''LDc0MTooYyxsLHQpPT57dmFyIG49dCgyNDk2Myk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxvKXtpZihuKGUpLHZvaWQgMD09PXMpcmV0dXJuIGU7c3dpdGNoKG8pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGUuY2FsbChzLHUpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHUs''@;'; put 'put ''Zil7cmV0dXJuIGUuY2FsbChzLHUsZil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24odSxmLGkpe3JldHVybiBlLmNhbGwocyx1LGYsaSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHMsYXJndW1lbnRzKX19fSw1MzUzNzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQo''@;'; put 'put ''NzQyNTMpLGU9RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSxzPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nLG89ZnVuY3Rpb24odSl7cmV0dXJuIHU+OT91OiIwIit1fTtjLmV4cG9ydHM9bihmdW5jdGlvbigpe3JldHVybiIwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVoiIT1zLmNhbGwobmV3IERh''@;'; put 'put ''dGUoLTUwMDAwMDAwMDAwMDAxKSl9KXx8IW4oZnVuY3Rpb24oKXtzLmNhbGwobmV3IERhdGUoTmFOKSl9KT9mdW5jdGlvbigpe2lmKCFpc0Zpbml0ZShlLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBmPXRoaXMsaT1mLmdldFVUQ0Z1bGxZ''@;'; put 'put ''ZWFyKCkscD1mLmdldFVUQ01pbGxpc2Vjb25kcygpLHk9aTwwPyItIjppPjk5OTk/IisiOiIiO3JldHVybiB5KygiMDAwMDAiK01hdGguYWJzKGkpKS5zbGljZSh5Py02Oi00KSsiLSIrbyhmLmdldFVUQ01vbnRoKCkrMSkrIi0iK28oZi5nZXRVVENEYXRlKCkpKyJUIitvKGYuZ2V0VVRDSG91''@;'; put 'put ''cnMoKSkrIjoiK28oZi5nZXRVVENNaW51dGVzKCkpKyI6IitvKGYuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKHA+OTk/cDoiMCIrbyhwKSkrIloifTpzfSw4NzA6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDI3MDA3KSxlPXQoMjE2ODkpLHM9Im51bWJlciI7Yy5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKG8pe2lmKCJzdHJpbmciIT09byYmbyE9PXMmJiJkZWZhdWx0IiE9PW8pdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBlKG4odGhpcyksbyE9cyl9fSw5MTM1NTpjPT57Yy5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKG51bGw9PWwpdGhyb3cgVHlwZUVycm9yKCJD''@;'; put 'put ''YW4ndCBjYWxsIG1ldGhvZCBvbiAgIitsKTtyZXR1cm4gbH19LDY3MDU3OihjLGwsdCk9PntjLmV4cG9ydHM9IXQoNzQyNTMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sNjI0NTc6KGMs''@;'; put 'put ''bCx0KT0+e3ZhciBuPXQoNTUyODYpLGU9dCgzODE2KS5kb2N1bWVudCxzPW4oZSkmJm4oZS5jcmVhdGVFbGVtZW50KTtjLmV4cG9ydHM9ZnVuY3Rpb24obyl7cmV0dXJuIHM/ZS5jcmVhdGVFbGVtZW50KG8pOnt9fX0sNzQ0MzA6Yz0+e2MuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJv''@;'; put 'put ''cGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSw1NTQxOihjLGwsdCk9Pnt2YXIgbj10KDQ3MTg0KSxlPXQoNjQ1NDgpLHM9dCgxNDY4Mik7Yy5leHBvcnRzPWZ1bmN0aW9uKG8pe3ZhciB1''@;'; put 'put ''PW4obyksZj1lLmY7aWYoZilmb3IodmFyIHYsaT1mKG8pLHA9cy5mLHk9MDtpLmxlbmd0aD55OylwLmNhbGwobyx2PWlbeSsrXSkmJnUucHVzaCh2KTtyZXR1cm4gdX19LDQyOTg1OihjLGwsdCk9Pnt2YXIgbj10KDM4MTYpLGU9dCgyNTY0NSkscz10KDg3NzI4KSxvPXQoNzcyMzQpLHU9dCg3''@;'; put 'put ''NDEpLGY9InByb3RvdHlwZSIsaT1mdW5jdGlvbihwLHksdil7dmFyIGIsTyxTLEMsZz1wJmkuRix4PXAmaS5HLGo9cCZpLlAsdz1wJmkuQixSPXg/bjpwJmkuUz9uW3ldfHwoblt5XT17fSk6KG5beV18fHt9KVtmXSxGPXg/ZTplW3ldfHwoZVt5XT17fSksQj1GW2ZdfHwoRltmXT17fSk7Zm9y''@;'; put 'put ''KGIgaW4geCYmKHY9eSksdilTPSgoTz0hZyYmUiYmdm9pZCAwIT09UltiXSk/Ujp2KVtiXSxDPXcmJk8/dShTLG4pOmomJiJmdW5jdGlvbiI9PXR5cGVvZiBTP3UoRnVuY3Rpb24uY2FsbCxTKTpTLFImJm8oUixiLFMscCZpLlUpLEZbYl0hPVMmJnMoRixiLEMpLGomJkJbYl0hPVMmJihCW2Jd''@;'; put 'put ''PVMpfTtuLmNvcmU9ZSxpLkY9MSxpLkc9MixpLlM9NCxpLlA9OCxpLkI9MTYsaS5XPTMyLGkuVT02NCxpLlI9MTI4LGMuZXhwb3J0cz1pfSw4ODUyOihjLGwsdCk9Pnt2YXIgbj10KDg2MzE0KSgibWF0Y2giKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHM9Ly4vO3RyeXsiLy4vIltlXShz''@;'; put 'put ''KX1jYXRjaHt0cnl7cmV0dXJuIHNbbl09ITEsISIvLi8iW2VdKHMpfWNhdGNoe319cmV0dXJuITB9fSw3NDI1MzpjPT57Yy5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm4hIWwoKX1jYXRjaHtyZXR1cm4hMH19fSwyODA4MjooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoMTgyNjkpO3Zh''@;'; put 'put ''ciBuPXQoNzcyMzQpLGU9dCg4NzcyOCkscz10KDc0MjUzKSxvPXQoOTEzNTUpLHU9dCg4NjMxNCksZj10KDIxMTY1KSxpPXUoInNwZWNpZXMiKSxwPSFzKGZ1bmN0aW9uKCl7dmFyIHY9Ly4vO3JldHVybiB2LmV4ZWM9ZnVuY3Rpb24oKXt2YXIgZz1bXTtyZXR1cm4gZy5ncm91cHM9e2E6Ijci''@;'; put 'put ''fSxnfSwiNyIhPT0iIi5yZXBsYWNlKHYsIiQ8YT4iKX0pLHk9ZnVuY3Rpb24oKXt2YXIgdj0vKD86KS8sZz12LmV4ZWM7di5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgeD0iYWIiLnNwbGl0KHYpO3JldHVybiAyPT09eC5sZW5ndGgmJiJhIj09''@;'; put 'put ''PXhbMF0mJiJiIj09PXhbMV19KCk7Yy5leHBvcnRzPWZ1bmN0aW9uKHYsZyx4KXt2YXIgRT11KHYpLGo9IXMoZnVuY3Rpb24oKXt2YXIgTz17fTtyZXR1cm4gT1tFXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIlt2XShPKX0pLHc9aj8hcyhmdW5jdGlvbigpe3ZhciBPPSExLFM9L2EvO3Jl''@;'; put 'put ''dHVybiBTLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gTz0hMCxudWxsfSwic3BsaXQiPT09diYmKFMuY29uc3RydWN0b3I9e30sUy5jb25zdHJ1Y3RvcltpXT1mdW5jdGlvbigpe3JldHVybiBTfSksU1tFXSgiIiksIU99KTp2b2lkIDA7aWYoIWp8fCF3fHwicmVwbGFjZSI9PT12JiYhcHx8InNw''@;'; put 'put ''bGl0Ij09PXYmJiF5KXt2YXIgUj0vLi9bRV0sRj14KG8sRSwiIlt2XSxmdW5jdGlvbihTLEMsSyxVLFope3JldHVybiBDLmV4ZWM9PT1mP2omJiFaP3tkb25lOiEwLHZhbHVlOlIuY2FsbChDLEssVSl9Ontkb25lOiEwLHZhbHVlOlMuY2FsbChLLEMsVSl9Ontkb25lOiExfX0pLGI9RlsxXTtu''@;'; put 'put ''KFN0cmluZy5wcm90b3R5cGUsdixGWzBdKSxlKFJlZ0V4cC5wcm90b3R5cGUsRSwyPT1nP2Z1bmN0aW9uKE8sUyl7cmV0dXJuIGIuY2FsbChPLHRoaXMsUyl9OmZ1bmN0aW9uKE8pe3JldHVybiBiLmNhbGwoTyx0aGlzKX0pfX19LDUzMjE4OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49''@;'; put 'put ''dCgyNzAwNyk7Yy5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9bih0aGlzKSxzPSIiO3JldHVybiBlLmdsb2JhbCYmKHMrPSJnIiksZS5pZ25vcmVDYXNlJiYocys9ImkiKSxlLm11bHRpbGluZSYmKHMrPSJtIiksZS51bmljb2RlJiYocys9InUiKSxlLnN0aWNreSYmKHMrPSJ5Iiksc319LDM1''@;'; put 'put ''MzE6KGMsbCx0KT0+e3ZhciBuPXQoNzQxKSxlPXQoMjg4NTEpLHM9dCg4NjU1NSksbz10KDI3MDA3KSx1PXQoMTA4NzUpLGY9dCg2OTAwMiksaT17fSxwPXt9LHk9Yy5leHBvcnRzPWZ1bmN0aW9uKHYsZyx4LEUsail7dmFyIEIsYixPLFMsdz1qP2Z1bmN0aW9uKCl7cmV0dXJuIHZ9OmYodiks''@;'; put 'put ''Uj1uKHgsRSxnPzI6MSksRj0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB3KXRocm93IFR5cGVFcnJvcih2KyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKHModykpe2ZvcihCPXUodi5sZW5ndGgpO0I+RjtGKyspaWYoKFM9Zz9SKG8oYj12W0ZdKVswXSxiWzFdKTpSKHZbRl0pKT09PWl8fFM9PT1w''@;'; put 'put ''KXJldHVybiBTfWVsc2UgZm9yKE89dy5jYWxsKHYpOyEoYj1PLm5leHQoKSkuZG9uZTspaWYoKFM9ZShPLFIsYi52YWx1ZSxnKSk9PT1pfHxTPT09cClyZXR1cm4gU307eS5CUkVBSz1pLHkuUkVUVVJOPXB9LDQwMDE4OihjLGwsdCk9PntjLmV4cG9ydHM9dCgzODI1KSgibmF0aXZlLWZ1bmN0''@;'; put 'put ''aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSwzODE2OmM9Pnt2YXIgbD1jLmV4cG9ydHM9dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSImJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp''@;'; put 'put ''KCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bCl9LDc5MTgxOmM9Pnt2YXIgbD17fS5oYXNPd25Qcm9wZXJ0eTtjLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jYWxsKHQsbil9fSw4NzcyODooYyxsLHQpPT57dmFyIG49dCg5OTI3NSksZT10KDkwNjgxKTtjLmV4cG9ydHM9''@;'; put 'put ''dCg2NzA1Nyk/ZnVuY3Rpb24ocyxvLHUpe3JldHVybiBuLmYocyxvLGUoMSx1KSl9OmZ1bmN0aW9uKHMsbyx1KXtyZXR1cm4gc1tvXT11LHN9fSw0MDYzOTooYyxsLHQpPT57dmFyIG49dCgzODE2KS5kb2N1bWVudDtjLmV4cG9ydHM9biYmbi5kb2N1bWVudEVsZW1lbnR9LDE3MzQ6KGMsbCx0''@;'; put 'put ''KT0+e2MuZXhwb3J0cz0hdCg2NzA1NykmJiF0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkodCg2MjQ1NykoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw0MDI2NjooYyxsLHQpPT57dmFyIG49dCg1NTI4NiksZT10''@;'; put 'put ''KDI3Mzc1KS5zZXQ7Yy5leHBvcnRzPWZ1bmN0aW9uKHMsbyx1KXt2YXIgaSxmPW8uY29uc3RydWN0b3I7cmV0dXJuIGYhPT11JiYiZnVuY3Rpb24iPT10eXBlb2YgZiYmKGk9Zi5wcm90b3R5cGUpIT09dS5wcm90b3R5cGUmJm4oaSkmJmUmJmUocyxpKSxzfX0sOTcyNDI6Yz0+e2MuZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbihsLHQsbil7dmFyIGU9dm9pZCAwPT09bjtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZT9sKCk6bC5jYWxsKG4pO2Nhc2UgMTpyZXR1cm4gZT9sKHRbMF0pOmwuY2FsbChuLHRbMF0pO2Nhc2UgMjpyZXR1cm4gZT9sKHRbMF0sdFsxXSk6bC5jYWxsKG4sdFswXSx0''@;'; put 'put ''WzFdKTtjYXNlIDM6cmV0dXJuIGU/bCh0WzBdLHRbMV0sdFsyXSk6bC5jYWxsKG4sdFswXSx0WzFdLHRbMl0pO2Nhc2UgNDpyZXR1cm4gZT9sKHRbMF0sdFsxXSx0WzJdLHRbM10pOmwuY2FsbChuLHRbMF0sdFsxXSx0WzJdLHRbM10pfXJldHVybiBsLmFwcGx5KG4sdCl9fSw0OTc5NzooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5MjAzMik7Yy5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSw4NjU1NTooYyxsLHQpPT57dmFyIG49dCg4NzIzNCksZT10''@;'; put 'put ''KDg2MzE0KSgiaXRlcmF0b3IiKSxzPUFycmF5LnByb3RvdHlwZTtjLmV4cG9ydHM9ZnVuY3Rpb24obyl7cmV0dXJuIHZvaWQgMCE9PW8mJihuLkFycmF5PT09b3x8c1tlXT09PW8pfX0sNDMwMjooYyxsLHQpPT57dmFyIG49dCg5MjAzMik7Yy5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0''@;'; put 'put ''aW9uKHMpe3JldHVybiJBcnJheSI9PW4ocyl9fSwxODM2NzooYyxsLHQpPT57dmFyIG49dCg1NTI4NiksZT1NYXRoLmZsb29yO2MuZXhwb3J0cz1mdW5jdGlvbihvKXtyZXR1cm4hbihvKSYmaXNGaW5pdGUobykmJmUobyk9PT1vfX0sNTUyODY6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsKXty''@;'; put 'put ''ZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGw/bnVsbCE9PWw6ImZ1bmN0aW9uIj09dHlwZW9mIGx9fSw1NTM2NDooYyxsLHQpPT57dmFyIG49dCg1NTI4NiksZT10KDkyMDMyKSxzPXQoODYzMTQpKCJtYXRjaCIpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgdTtyZXR1cm4gbihvKSYmKHZvaWQg''@;'; put 'put ''MCE9PSh1PW9bc10pPyEhdToiUmVnRXhwIj09ZShvKSl9fSwyODg1MTooYyxsLHQpPT57dmFyIG49dCgyNzAwNyk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxvLHUpe3RyeXtyZXR1cm4gdT9zKG4obylbMF0sb1sxXSk6cyhvKX1jYXRjaChpKXt2YXIgZj1lLnJldHVybjt0aHJvdyB2b2lkIDAh''@;'; put 'put ''PT1mJiZuKGYuY2FsbChlKSksaX19fSw0OTk4ODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI1MDMpLGU9dCg5MDY4MSkscz10KDIyOTQzKSxvPXt9O3QoODc3MjgpKG8sdCg4NjMxNCkoIml0ZXJhdG9yIiksZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGMuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbih1LGYsaSl7dS5wcm90b3R5cGU9bihvLHtuZXh0OmUoMSxpKX0pLHModSxmKyIgSXRlcmF0b3IiKX19LDQyOTIzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0NDYxKSxlPXQoNDI5ODUpLHM9dCg3NzIzNCksbz10KDg3NzI4KSx1PXQoODcyMzQpLGY9dCg0OTk4OCksaT10''@;'; put 'put ''KDIyOTQzKSxwPXQoNDY4KSx5PXQoODYzMTQpKCJpdGVyYXRvciIpLHY9IShbXS5rZXlzJiYibmV4dCJpbltdLmtleXMoKSkseD0ia2V5cyIsRT0idmFsdWVzIixqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2MuZXhwb3J0cz1mdW5jdGlvbih3LFIsRixCLGIsTyxTKXtmKEYsUixCKTt2YXIg''@;'; put 'put ''VixRLFksQz1mdW5jdGlvbihmdCl7aWYoIXYmJmZ0IGluIHR0KXJldHVybiB0dFtmdF07c3dpdGNoKGZ0KXtjYXNlIHg6Y2FzZSBFOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgRih0aGlzLGZ0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBGKHRoaXMsZnQpfX0sSz1SKyIg''@;'; put 'put ''SXRlcmF0b3IiLFU9Yj09RSxaPSExLHR0PXcucHJvdG90eXBlLF89dHRbeV18fHR0WyJAQGl0ZXJhdG9yIl18fGImJnR0W2JdLG50PV98fEMoYiksc3Q9Yj9VP0MoImVudHJpZXMiKTpudDp2b2lkIDAsWD0iQXJyYXkiPT1SJiZ0dC5lbnRyaWVzfHxfO2lmKFgmJihZPXAoWC5jYWxsKG5ldyB3''@;'; put 'put ''KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmWS5uZXh0JiYoaShZLEssITApLCFuJiYiZnVuY3Rpb24iIT10eXBlb2YgWVt5XSYmbyhZLHksaikpLFUmJl8mJl8ubmFtZSE9PUUmJihaPSEwLG50PWZ1bmN0aW9uKCl7cmV0dXJuIF8uY2FsbCh0aGlzKX0pLCghbnx8UykmJih2fHxafHwhdHRbeV0p''@;'; put 'put ''JiZvKHR0LHksbnQpLHVbUl09bnQsdVtLXT1qLGIpaWYoVj17dmFsdWVzOlU/bnQ6QyhFKSxrZXlzOk8/bnQ6Qyh4KSxlbnRyaWVzOnN0fSxTKWZvcihRIGluIFYpUSBpbiB0dHx8cyh0dCxRLFZbUV0pO2Vsc2UgZShlLlArZS5GKih2fHxaKSxSLFYpO3JldHVybiBWfX0sNzQ2MjooYyxsLHQp''@;'; put 'put ''PT57dmFyIG49dCg4NjMxNCkoIml0ZXJhdG9yIiksZT0hMTt0cnl7dmFyIHM9WzddW25dKCk7cy5yZXR1cm49ZnVuY3Rpb24oKXtlPSEwfSxBcnJheS5mcm9tKHMsZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2h7fWMuZXhwb3J0cz1mdW5jdGlvbihvLHUpe2lmKCF1JiYhZSlyZXR1cm4hMTt2''@;'; put 'put ''YXIgZj0hMTt0cnl7dmFyIGk9WzddLHA9aVtuXSgpO3AubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOmY9ITB9fSxpW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHB9LG8oaSl9Y2F0Y2h7fXJldHVybiBmfX0sMTU0MzY6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsLHQpe3JldHVybnt2YWx1ZTp0''@;'; put 'put ''LGRvbmU6ISFsfX19LDg3MjM0OmM9PntjLmV4cG9ydHM9e319LDQ0NjE6Yz0+e2MuZXhwb3J0cz0hMX0sMTMwODY6Yz0+e3ZhciBsPU1hdGguZXhwbTE7Yy5leHBvcnRzPSFsfHxsKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fGwoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1sKC0y''@;'; put 'put ''ZS0xNyk/ZnVuY3Rpb24obil7cmV0dXJuIDA9PShuPStuKT9uOm4+LTFlLTYmJm48MWUtNj9uK24qbi8yOk1hdGguZXhwKG4pLTF9Omx9LDM0OTM0OihjLGwsdCk9Pnt2YXIgbj10KDYxODAxKSxlPU1hdGgucG93LHM9ZSgyLC01Miksbz1lKDIsLTIzKSx1PWUoMiwxMjcpKigyLW8pLGY9ZSgy''@;'; put 'put ''LC0xMjYpO2MuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24oeSl7dmFyIHgsRSx2PU1hdGguYWJzKHkpLGc9bih5KTtyZXR1cm4gdjxmP2cqKHYvZi9vKzEvcy0xL3MpKmYqbzooRT0oeD0oMStvL3MpKnYpLSh4LXYpKT51fHxFIT1FP2cqKDEvMCk6ZypFfX0sNDYyMDY6Yz0+e2MuZXhw''@;'; put 'put ''b3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbih0KXtyZXR1cm4odD0rdCk+LTFlLTgmJnQ8MWUtOD90LXQqdC8yOk1hdGgubG9nKDErdCl9fSw2MTgwMTpjPT57Yy5leHBvcnRzPU1hdGguc2lnbnx8ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KXx8dCE9dD90OnQ8MD8tMToxfX0sODQ3Mjg6''@;'; put 'put ''KGMsbCx0KT0+e3ZhciBuPXQoOTM5NTMpKCJtZXRhIiksZT10KDU1Mjg2KSxzPXQoNzkxODEpLG89dCg5OTI3NSkuZix1PTAsZj1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxpPSF0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybiBmKE9iamVjdC5wcmV2ZW50RXh0''@;'; put 'put ''ZW5zaW9ucyh7fSkpfSkscD1mdW5jdGlvbihFKXtvKEUsbix7dmFsdWU6e2k6Ik8iKyArK3Usdzp7fX19KX0seD1jLmV4cG9ydHM9e0tFWTpuLE5FRUQ6ITEsZmFzdEtleTpmdW5jdGlvbihFLGope2lmKCFlKEUpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgRT9FOigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IEU/IlMiOiJQIikrRTtpZighcyhFLG4pKXtpZighZihFKSlyZXR1cm4iRiI7aWYoIWopcmV0dXJuIkUiO3AoRSl9cmV0dXJuIEVbbl0uaX0sZ2V0V2VhazpmdW5jdGlvbihFLGope2lmKCFzKEUsbikpe2lmKCFmKEUpKXJldHVybiEwO2lmKCFqKXJldHVybiExO3AoRSl9cmV0dXJuIEVbbl0u''@;'; put 'put ''d30sb25GcmVlemU6ZnVuY3Rpb24oRSl7cmV0dXJuIGkmJnguTkVFRCYmZihFKSYmIXMoRSxuKSYmcChFKSxFfX19LDUwMTMzOihjLGwsdCk9Pnt2YXIgbj10KDg4NDE2KSxlPXQoNDI5ODUpLHM9dCgzODI1KSgibWV0YWRhdGEiKSxvPXMuc3RvcmV8fChzLnN0b3JlPW5ldyh0KDMwMTQ3KSkp''@;'; put 'put ''LHU9ZnVuY3Rpb24oeCxFLGope3ZhciB3PW8uZ2V0KHgpO2lmKCF3KXtpZighailyZXR1cm47by5zZXQoeCx3PW5ldyBuKX12YXIgUj13LmdldChFKTtpZighUil7aWYoIWopcmV0dXJuO3cuc2V0KEUsUj1uZXcgbil9cmV0dXJuIFJ9O2MuZXhwb3J0cz17c3RvcmU6byxtYXA6dSxoYXM6ZnVu''@;'; put 'put ''Y3Rpb24oeCxFLGope3ZhciB3PXUoRSxqLCExKTtyZXR1cm4gdm9pZCAwIT09dyYmdy5oYXMoeCl9LGdldDpmdW5jdGlvbih4LEUsail7dmFyIHc9dShFLGosITEpO3JldHVybiB2b2lkIDA9PT13P3ZvaWQgMDp3LmdldCh4KX0sc2V0OmZ1bmN0aW9uKHgsRSxqLHcpe3Uoaix3LCEwKS5zZXQo''@;'; put 'put ''eCxFKX0sa2V5czpmdW5jdGlvbih4LEUpe3ZhciBqPXUoeCxFLCExKSx3PVtdO3JldHVybiBqJiZqLmZvckVhY2goZnVuY3Rpb24oUixGKXt3LnB1c2goRil9KSx3fSxrZXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHZvaWQgMD09PXh8fCJzeW1ib2wiPT10eXBlb2YgeD94OlN0cmluZyh4KX0sZXhw''@;'; put 'put ''OmZ1bmN0aW9uKHgpe2UoZS5TLCJSZWZsZWN0Iix4KX19fSwzNTM0NTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNjcwNTcpLGU9dCg0NzE4NCkscz10KDY0NTQ4KSxvPXQoMTQ2ODIpLHU9dCgyMDUwOCksZj10KDQ5Nzk3KSxpPU9iamVjdC5hc3NpZ247Yy5leHBvcnRzPSFpfHx0''@;'; put 'put ''KDc0MjUzKShmdW5jdGlvbigpe3ZhciBwPXt9LHk9e30sdj1TeW1ib2woKSxnPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIHBbdl09NyxnLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3lbeF09eH0pLDchPWkoe30scClbdl18fE9iamVjdC5rZXlzKGkoe30seSkpLmpvaW4o''@;'; put 'put ''IiIpIT1nfSk/ZnVuY3Rpb24oeSx2KXtmb3IodmFyIGc9dSh5KSx4PWFyZ3VtZW50cy5sZW5ndGgsRT0xLGo9cy5mLHc9by5mO3g+RTspZm9yKHZhciBPLFI9Zihhcmd1bWVudHNbRSsrXSksRj1qP2UoUikuY29uY2F0KGooUikpOmUoUiksQj1GLmxlbmd0aCxiPTA7Qj5iOylPPUZbYisrXSwo''@;'; put 'put ''IW58fHcuY2FsbChSLE8pKSYmKGdbT109UltPXSk7cmV0dXJuIGd9Oml9LDQyNTAzOihjLGwsdCk9Pnt2YXIgbj10KDI3MDA3KSxlPXQoMzU1ODgpLHM9dCg3NDQzMCksbz10KDY5MzM1KSgiSUVfUFJPVE8iKSx1PWZ1bmN0aW9uKCl7fSxmPSJwcm90b3R5cGUiLGk9ZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''eCxwPXQoNjI0NTcpKCJpZnJhbWUiKSx5PXMubGVuZ3RoO2ZvcihwLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQoNDA2MzkpLmFwcGVuZENoaWxkKHApLHAuc3JjPSJqYXZhc2NyaXB0OiIsKHg9cC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCkseC53cml0ZSgiPHNjcmlwdD5kb2N1bWVu''@;'; put 'put ''dC5GPU9iamVjdDxcL3NjcmlwdD4iKSx4LmNsb3NlKCksaT14LkY7eS0tOylkZWxldGUgaVtmXVtzW3ldXTtyZXR1cm4gaSgpfTtjLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oeSx2KXt2YXIgZztyZXR1cm4gbnVsbCE9PXk/KHVbZl09bih5KSxnPW5ldyB1LHVbZl09bnVsbCxn''@;'; put 'put ''W29dPXkpOmc9aSgpLHZvaWQgMD09PXY/ZzplKGcsdil9fSw5OTI3NTooYyxsLHQpPT57dmFyIG49dCgyNzAwNyksZT10KDE3MzQpLHM9dCgyMTY4OSksbz1PYmplY3QuZGVmaW5lUHJvcGVydHk7bC5mPXQoNjcwNTcpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihmLGkscCl7aWYo''@;'; put 'put ''bihmKSxpPXMoaSwhMCksbihwKSxlKXRyeXtyZXR1cm4gbyhmLGkscCl9Y2F0Y2h7fWlmKCJnZXQiaW4gcHx8InNldCJpbiBwKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIHAmJihmW2ldPXAudmFsdWUpLGZ9fSwzNTU4ODooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5OTI3NSksZT10KDI3MDA3KSxzPXQoNDcxODQpO2MuZXhwb3J0cz10KDY3MDU3KT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih1LGYpe2UodSk7Zm9yKHZhciB2LGk9cyhmKSxwPWkubGVuZ3RoLHk9MDtwPnk7KW4uZih1LHY9aVt5KytdLGZbdl0pO3Jl''@;'; put 'put ''dHVybiB1fX0sMTg2OTM6KGMsbCx0KT0+e3ZhciBuPXQoMTQ2ODIpLGU9dCg5MDY4MSkscz10KDIyMTEwKSxvPXQoMjE2ODkpLHU9dCg3OTE4MSksZj10KDE3MzQpLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtsLmY9dCg2NzA1Nyk/aTpmdW5jdGlvbih5LHYpe2lmKHk9cyh5''@;'; put 'put ''KSx2PW8odiwhMCksZil0cnl7cmV0dXJuIGkoeSx2KX1jYXRjaHt9aWYodSh5LHYpKXJldHVybiBlKCFuLmYuY2FsbCh5LHYpLHlbdl0pfX0sMzkzMjc6KGMsbCx0KT0+e3ZhciBuPXQoMjIxMTApLGU9dCgyMDYxNikuZixzPXt9LnRvU3RyaW5nLG89Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cm''@;'; put 'put ''JndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXTtjLmV4cG9ydHMuZj1mdW5jdGlvbihpKXtyZXR1cm4gbyYmIltvYmplY3QgV2luZG93XSI9PXMuY2FsbChpKT9mdW5jdGlvbihmKXt0cnl7cmV0dXJuIGUoZil9''@;'; put 'put ''Y2F0Y2h7cmV0dXJuIG8uc2xpY2UoKX19KGkpOmUobihpKSl9fSwyMDYxNjooYyxsLHQpPT57dmFyIG49dCg2MDE4OSksZT10KDc0NDMwKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO2wuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24obyl7cmV0dXJuIG4obyxl''@;'; put 'put ''KX19LDY0NTQ4OihjLGwpPT57bC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDQ2ODooYyxsLHQpPT57dmFyIG49dCg3OTE4MSksZT10KDIwNTA4KSxzPXQoNjkzMzUpKCJJRV9QUk9UTyIpLG89T2JqZWN0LnByb3RvdHlwZTtjLmV4cG9ydHM9T2JqZWN0LmdldFByb3RvdHlwZU9m''@;'; put 'put ''fHxmdW5jdGlvbih1KXtyZXR1cm4gdT1lKHUpLG4odSxzKT91W3NdOiJmdW5jdGlvbiI9PXR5cGVvZiB1LmNvbnN0cnVjdG9yJiZ1IGluc3RhbmNlb2YgdS5jb25zdHJ1Y3Rvcj91LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp1IGluc3RhbmNlb2YgT2JqZWN0P286bnVsbH19LDYwMTg5OihjLGws''@;'; put 'put ''dCk9Pnt2YXIgbj10KDc5MTgxKSxlPXQoMjIxMTApLHM9dCg3OTMxNSkoITEpLG89dCg2OTMzNSkoIklFX1BST1RPIik7Yy5leHBvcnRzPWZ1bmN0aW9uKHUsZil7dmFyIHYsaT1lKHUpLHA9MCx5PVtdO2Zvcih2IGluIGkpdiE9byYmbihpLHYpJiZ5LnB1c2godik7Zm9yKDtmLmxlbmd0aD5w''@;'; put 'put ''OyluKGksdj1mW3ArK10pJiYofnMoeSx2KXx8eS5wdXNoKHYpKTtyZXR1cm4geX19LDQ3MTg0OihjLGwsdCk9Pnt2YXIgbj10KDYwMTg5KSxlPXQoNzQ0MzApO2MuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24obyl7cmV0dXJuIG4obyxlKX19LDE0NjgyOihjLGwpPT57bC5mPXt9LnBy''@;'; put 'put ''b3BlcnR5SXNFbnVtZXJhYmxlfSwzMzE2MDooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDI1NjQ1KSxzPXQoNzQyNTMpO2MuZXhwb3J0cz1mdW5jdGlvbihvLHUpe3ZhciBmPShlLk9iamVjdHx8e30pW29dfHxPYmplY3Rbb10saT17fTtpW29dPXUoZiksbihuLlMrbi5GKnMoZnVuY3Rp''@;'; put 'put ''b24oKXtmKDEpfSksIk9iamVjdCIsaSl9fSw1NzY0MzooYyxsLHQpPT57dmFyIG49dCgyMDYxNiksZT10KDY0NTQ4KSxzPXQoMjcwMDcpLG89dCgzODE2KS5SZWZsZWN0O2MuZXhwb3J0cz1vJiZvLm93bktleXN8fGZ1bmN0aW9uKGYpe3ZhciBpPW4uZihzKGYpKSxwPWUuZjtyZXR1cm4gcD9p''@;'; put 'put ''LmNvbmNhdChwKGYpKTppfX0sNDc3NDM6KGMsbCx0KT0+e3ZhciBuPXQoMzgxNikucGFyc2VGbG9hdCxlPXQoMjk1OTkpLnRyaW07Yy5leHBvcnRzPTEvbih0KDg0NjQ0KSsiLTAiKSE9LTEvMD9mdW5jdGlvbihvKXt2YXIgdT1lKFN0cmluZyhvKSwzKSxmPW4odSk7cmV0dXJuIDA9PT1mJiYi''@;'; put 'put ''LSI9PXUuY2hhckF0KDApPy0wOmZ9Om59LDU1OTYwOihjLGwsdCk9Pnt2YXIgbj10KDM4MTYpLnBhcnNlSW50LGU9dCgyOTU5OSkudHJpbSxzPXQoODQ2NDQpLG89L15bLStdPzBbeFhdLztjLmV4cG9ydHM9OCE9PW4ocysiMDgiKXx8MjIhPT1uKHMrIjB4MTYiKT9mdW5jdGlvbihmLGkpe3Zh''@;'; put 'put ''ciBwPWUoU3RyaW5nKGYpLDMpO3JldHVybiBuKHAsaT4+PjB8fChvLnRlc3QocCk/MTY6MTApKX06bn0sOTA2ODE6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZsKSxjb25maWd1cmFibGU6ISgyJmwpLHdyaXRhYmxlOiEoNCZsKSx2YWx1ZTp0fX19''@;'; put 'put ''LDI0NDA4OihjLGwsdCk9Pnt2YXIgbj10KDc3MjM0KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzLG8pe2Zvcih2YXIgdSBpbiBzKW4oZSx1LHNbdV0sbyk7cmV0dXJuIGV9fSw3NzIzNDooYyxsLHQpPT57dmFyIG49dCgzODE2KSxlPXQoODc3MjgpLHM9dCg3OTE4MSksbz10KDkzOTUzKSgic3Jj''@;'; put 'put ''IiksdT10KDQwMDE4KSxmPSJ0b1N0cmluZyIsaT0oIiIrdSkuc3BsaXQoZik7dCgyNTY0NSkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihwKXtyZXR1cm4gdS5jYWxsKHApfSwoYy5leHBvcnRzPWZ1bmN0aW9uKHAseSx2LGcpe3ZhciB4PSJmdW5jdGlvbiI9PXR5cGVvZiB2O3gmJihzKHYsIm5h''@;'; put 'put ''bWUiKXx8ZSh2LCJuYW1lIix5KSkscFt5XSE9PXYmJih4JiYocyh2LG8pfHxlKHYsbyxwW3ldPyIiK3BbeV06aS5qb2luKFN0cmluZyh5KSkpKSxwPT09bj9wW3ldPXY6Zz9wW3ldP3BbeV09djplKHAseSx2KTooZGVsZXRlIHBbeV0sZShwLHksdikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxm''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbb118fHUuY2FsbCh0aGlzKX0pfSwyNzc4NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDE0ODgpLGU9UmVnRXhwLnByb3RvdHlwZS5leGVjO2MuZXhwb3J0cz1mdW5jdGlvbihzLG8pe3ZhciB1''@;'; put 'put ''PXMuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgdSl7dmFyIGY9dS5jYWxsKHMsbyk7aWYoIm9iamVjdCIhPXR5cGVvZiBmKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCIpO3Jl''@;'; put 'put ''dHVybiBmfWlmKCJSZWdFeHAiIT09bihzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyIik7cmV0dXJuIGUuY2FsbChzLG8pfX0sMjExNjU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgeSx2LG49dCg1MzIxOCksZT1S''@;'; put 'put ''ZWdFeHAucHJvdG90eXBlLmV4ZWMscz1TdHJpbmcucHJvdG90eXBlLnJlcGxhY2Usbz1lLHU9Imxhc3RJbmRleCIsZj0odj0vYiovZyxlLmNhbGwoeT0vYS8sImEiKSxlLmNhbGwodiwiYSIpLDAhPT15W3VdfHwwIT09dlt1XSksaT12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KGZ8fGkp''@;'; put 'put ''JiYobz1mdW5jdGlvbih2KXt2YXIgeCxFLGosdyxnPXRoaXM7cmV0dXJuIGkmJihFPW5ldyBSZWdFeHAoIl4iK2cuc291cmNlKyIkKD8hXFxzKSIsbi5jYWxsKGcpKSksZiYmKHg9Z1t1XSksaj1lLmNhbGwoZyx2KSxmJiZqJiYoZ1t1XT1nLmdsb2JhbD9qLmluZGV4K2pbMF0ubGVuZ3RoOngp''@;'; put 'put ''LGkmJmomJmoubGVuZ3RoPjEmJnMuY2FsbChqWzBdLEUsZnVuY3Rpb24oKXtmb3Iodz0xO3c8YXJndW1lbnRzLmxlbmd0aC0yO3crKyl2b2lkIDA9PT1hcmd1bWVudHNbd10mJihqW3ddPXZvaWQgMCl9KSxqfSksYy5leHBvcnRzPW99LDI3MTk1OmM9PntjLmV4cG9ydHM9T2JqZWN0LmlzfHxm''@;'; put 'put ''dW5jdGlvbih0LG4pe3JldHVybiB0PT09bj8wIT09dHx8MS90PT0xL246dCE9dCYmbiE9bn19LDI3Mzc1OihjLGwsdCk9Pnt2YXIgbj10KDU1Mjg2KSxlPXQoMjcwMDcpLHM9ZnVuY3Rpb24obyx1KXtpZihlKG8pLCFuKHUpJiZudWxsIT09dSl0aHJvdyBUeXBlRXJyb3IodSsiOiBjYW4ndCBz''@;'; put 'put ''ZXQgYXMgcHJvdG90eXBlISIpfTtjLmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24obyx1LGYpe3RyeXsoZj10KDc0MSkoRnVuY3Rpb24uY2FsbCx0KDE4NjkzKS5mKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCwy''@;'; put 'put ''KSkobyxbXSksdT0hKG8gaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2h7dT0hMH1yZXR1cm4gZnVuY3Rpb24ocCx5KXtyZXR1cm4gcyhwLHkpLHU/cC5fX3Byb3RvX189eTpmKHAseSkscH19KHt9LCExKTp2b2lkIDApLGNoZWNrOnN9fSwyOTc0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49''@;'; put 'put ''dCgzODE2KSxlPXQoOTkyNzUpLHM9dCg2NzA1Nyksbz10KDg2MzE0KSgic3BlY2llcyIpO2MuZXhwb3J0cz1mdW5jdGlvbih1KXt2YXIgZj1uW3VdO3MmJmYmJiFmW29dJiZlLmYoZixvLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSwyMjk0MzooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5OTI3NSkuZixlPXQoNzkxODEpLHM9dCg4NjMxNCkoInRvU3RyaW5nVGFnIik7Yy5leHBvcnRzPWZ1bmN0aW9uKG8sdSxmKXtvJiYhZShvPWY/bzpvLnByb3RvdHlwZSxzKSYmbihvLHMse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTp1fSl9fSw2OTMzNTooYyxsLHQpPT57''@;'; put 'put ''dmFyIG49dCgzODI1KSgia2V5cyIpLGU9dCg5Mzk1Myk7Yy5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiBuW3NdfHwobltzXT1lKHMpKX19LDM4MjU6KGMsbCx0KT0+e3ZhciBuPXQoMjU2NDUpLGU9dCgzODE2KSxzPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZVtzXXx8KGVbc109e30pOyhj''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24odSxmKXtyZXR1cm4gb1t1XXx8KG9bdV09dm9pZCAwIT09Zj9mOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246bi52ZXJzaW9uLG1vZGU6dCg0NDYxKT8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiJceGE5IDIwMjAgRGVuaXMgUHVzaGthcmV2''@;'; put 'put ''ICh6bG9pcm9jay5ydSkifSl9LDU4MzY0OihjLGwsdCk9Pnt2YXIgbj10KDI3MDA3KSxlPXQoMjQ5NjMpLHM9dCg4NjMxNCkoInNwZWNpZXMiKTtjLmV4cG9ydHM9ZnVuY3Rpb24obyx1KXt2YXIgaSxmPW4obykuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWZ8fG51bGw9PShpPW4oZilb''@;'; put 'put ''c10pP3U6ZShpKX19LDc3NzE3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg3NDI1Myk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7cmV0dXJuISFlJiZuKGZ1bmN0aW9uKCl7cz9lLmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6ZS5jYWxsKG51bGwpfSl9fSwyNDQ5NjooYyxsLHQp''@;'; put 'put ''PT57dmFyIG49dCg4MTQ2NyksZT10KDkxMzU1KTtjLmV4cG9ydHM9ZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKG8sdSl7dmFyIHksdixmPVN0cmluZyhlKG8pKSxpPW4odSkscD1mLmxlbmd0aDtyZXR1cm4gaTwwfHxpPj1wP3M/IiI6dm9pZCAwOih5PWYuY2hhckNvZGVBdChpKSk8NTUy''@;'; put 'put ''OTZ8fHk+NTYzMTl8fGkrMT09PXB8fCh2PWYuY2hhckNvZGVBdChpKzEpKTw1NjMyMHx8dj41NzM0Mz9zP2YuY2hhckF0KGkpOnk6cz9mLnNsaWNlKGksaSsyKTp2LTU2MzIwKyh5LTU1Mjk2PDwxMCkrNjU1MzZ9fX0sNDIwOTQ6KGMsbCx0KT0+e3ZhciBuPXQoNTUzNjQpLGU9dCg5MTM1NSk7''@;'; put 'put ''Yy5leHBvcnRzPWZ1bmN0aW9uKHMsbyx1KXtpZihuKG8pKXRocm93IFR5cGVFcnJvcigiU3RyaW5nIyIrdSsiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4ISIpO3JldHVybiBTdHJpbmcoZShzKSl9fSwyOTM5NTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDc0MjUzKSxzPXQoOTEzNTUpLG89''@;'; put 'put ''LyIvZyx1PWZ1bmN0aW9uKGYsaSxwLHkpe3ZhciB2PVN0cmluZyhzKGYpKSxnPSI8IitpO3JldHVybiIiIT09cCYmKGcrPSIgIitwKyc9IicrU3RyaW5nKHkpLnJlcGxhY2UobywiJnF1b3Q7IikrJyInKSxnKyI+Iit2KyI8LyIraSsiPiJ9O2MuZXhwb3J0cz1mdW5jdGlvbihmLGkpe3ZhciBw''@;'; put 'put ''PXt9O3BbZl09aSh1KSxuKG4uUCtuLkYqZShmdW5jdGlvbigpe3ZhciB5PSIiW2ZdKCciJyk7cmV0dXJuIHkhPT15LnRvTG93ZXJDYXNlKCl8fHkuc3BsaXQoJyInKS5sZW5ndGg+M30pLCJTdHJpbmciLHApfX0sNjg1OTU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDgxNDY3KSxl''@;'; put 'put ''PXQoOTEzNTUpO2MuZXhwb3J0cz1mdW5jdGlvbihvKXt2YXIgdT1TdHJpbmcoZSh0aGlzKSksZj0iIixpPW4obyk7aWYoaTwwfHxpPT0xLzApdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoO2k+MDsoaT4+Pj0xKSYmKHUrPXUpKTEmaSYmKGYrPXUpO3Jl''@;'; put 'put ''dHVybiBmfX0sMjk1OTk6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCg5MTM1NSkscz10KDc0MjUzKSxvPXQoODQ2NDQpLHU9IlsiK28rIl0iLGk9UmVnRXhwKCJeIit1K3UrIioiKSxwPVJlZ0V4cCh1K3UrIiokIikseT1mdW5jdGlvbihnLHgsRSl7dmFyIGo9e30sdz1zKGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuISFvW2ddKCl8fCJcdTIwMGJceDg1IiE9Ilx1MjAwYlx4ODUiW2ddKCl9KSxSPWpbZ109dz94KHYpOm9bZ107RSYmKGpbRV09UiksbihuLlArbi5GKncsIlN0cmluZyIsail9LHY9eS50cmltPWZ1bmN0aW9uKGcseCl7cmV0dXJuIGc9U3RyaW5nKGUoZykpLDEmeCYmKGc9Zy5y''@;'; put 'put ''ZXBsYWNlKGksIiIpKSwyJngmJihnPWcucmVwbGFjZShwLCIiKSksZ307Yy5leHBvcnRzPXl9LDg0NjQ0OmM9PntjLmV4cG9ydHM9Ilx0XG5cdlxmXHIgXHhhMFx1MTY4MFx1MTgwZVx1MjAwMFx1MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1''@;'; put 'put ''MjAwYVx1MjAyZlx1MjA1Zlx1MzAwMFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LDkyMzM3OihjLGwsdCk9Pnt2YXIgbj10KDgxNDY3KSxlPU1hdGgubWF4LHM9TWF0aC5taW47Yy5leHBvcnRzPWZ1bmN0aW9uKG8sdSl7cmV0dXJuKG89bihvKSk8MD9lKG8rdSwwKTpzKG8sdSl9fSw4MTQ2NzpjPT57''@;'; put 'put ''dmFyIGw9TWF0aC5jZWlsLHQ9TWF0aC5mbG9vcjtjLmV4cG9ydHM9ZnVuY3Rpb24obil7cmV0dXJuIGlzTmFOKG49K24pPzA6KG4+MD90OmwpKG4pfX0sMjIxMTA6KGMsbCx0KT0+e3ZhciBuPXQoNDk3OTcpLGU9dCg5MTM1NSk7Yy5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiBuKGUocykp''@;'; put 'put ''fX0sMTA4NzU6KGMsbCx0KT0+e3ZhciBuPXQoODE0NjcpLGU9TWF0aC5taW47Yy5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiBzPjA/ZShuKHMpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSwyMDUwODooYyxsLHQpPT57dmFyIG49dCg5MTM1NSk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVy''@;'; put 'put ''biBPYmplY3QobihlKSl9fSwyMTY4OTooYyxsLHQpPT57dmFyIG49dCg1NTI4Nik7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7aWYoIW4oZSkpcmV0dXJuIGU7dmFyIG8sdTtpZihzJiYiZnVuY3Rpb24iPT10eXBlb2Yobz1lLnRvU3RyaW5nKSYmIW4odT1vLmNhbGwoZSkpfHwiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2Yobz1lLnZhbHVlT2YpJiYhbih1PW8uY2FsbChlKSl8fCFzJiYiZnVuY3Rpb24iPT10eXBlb2Yobz1lLnRvU3RyaW5nKSYmIW4odT1vLmNhbGwoZSkpKXJldHVybiB1O3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw5''@;'; put 'put ''Mzk1MzpjPT57dmFyIGw9MCx0PU1hdGgucmFuZG9tKCk7Yy5leHBvcnRzPWZ1bmN0aW9uKG4pe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09bj8iIjpuLCIpXyIsKCsrbCt0KS50b1N0cmluZygzNikpfX0sMTYxNjooYyxsLHQpPT57dmFyIG49dCg1NTI4Nik7Yy5leHBvcnRzPWZ1''@;'; put 'put ''bmN0aW9uKGUscyl7aWYoIW4oZSl8fGUuX3QhPT1zKXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3MrIiByZXF1aXJlZCEiKTtyZXR1cm4gZX19LDM2MDc0OihjLGwsdCk9Pnt2YXIgbj10KDM4MTYpLGU9dCgyNTY0NSkscz10KDQ0NjEpLG89dCgyODc4NyksdT10''@;'; put 'put ''KDk5Mjc1KS5mO2MuZXhwb3J0cz1mdW5jdGlvbihmKXt2YXIgaT1lLlN5bWJvbHx8KGUuU3ltYm9sPXM/e306bi5TeW1ib2x8fHt9KTsiXyIhPWYuY2hhckF0KDApJiYhKGYgaW4gaSkmJnUoaSxmLHt2YWx1ZTpvLmYoZil9KX19LDI4Nzg3OihjLGwsdCk9PntsLmY9dCg4NjMxNCl9LDg2MzE0''@;'; put 'put ''OihjLGwsdCk9Pnt2YXIgbj10KDM4MjUpKCJ3a3MiKSxlPXQoOTM5NTMpLHM9dCgzODE2KS5TeW1ib2wsbz0iZnVuY3Rpb24iPT10eXBlb2YgczsoYy5leHBvcnRzPWZ1bmN0aW9uKGYpe3JldHVybiBuW2ZdfHwobltmXT1vJiZzW2ZdfHwobz9zOmUpKCJTeW1ib2wuIitmKSl9KS5zdG9yZT1u''@;'; put 'put ''fSw2OTAwMjooYyxsLHQpPT57dmFyIG49dCg0MTQ4OCksZT10KDg2MzE0KSgiaXRlcmF0b3IiKSxzPXQoODcyMzQpO2MuZXhwb3J0cz10KDI1NjQ1KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbihvKXtpZihudWxsIT1vKXJldHVybiBvW2VdfHxvWyJAQGl0ZXJhdG9yIl18fHNbbihvKV19''@;'; put 'put ''fSwzMmUzOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUCwiQXJyYXkiLHtjb3B5V2l0aGluOnQoNTIxNil9KSx0KDE3NzIyKSgiY29weVdpdGhpbiIpfSwxNTc0NTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI5ODUpLGU9dCgxMDA1MCkoNCk7bihuLlArbi5GKiF0KDc3''@;'; put 'put ''NzE3KShbXS5ldmVyeSwhMCksIkFycmF5Iix7ZXZlcnk6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LDQ4OTc3OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUCwiQXJyYXkiLHtmaWxsOnQoNDY4NTIpfSksdCgxNzcyMikoImZpbGwiKX0sOTg4Mzc6''@;'; put 'put ''KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMTAwNTApKDIpO24obi5QK24uRiohdCg3NzcxNykoW10uZmlsdGVyLCEwKSwiQXJyYXkiLHtmaWx0ZXI6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvLGFyZ3VtZW50c1sxXSl9fSl9LDk0ODk5OihjLGwsdCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIG49dCg0Mjk4NSksZT10KDEwMDUwKSg2KSxzPSJmaW5kSW5kZXgiLG89ITA7cyBpbltdJiZBcnJheSgxKVtzXShmdW5jdGlvbigpe289ITF9KSxuKG4uUCtuLkYqbywiQXJyYXkiLHtmaW5kSW5kZXg6ZnVuY3Rpb24oZil7cmV0dXJuIGUodGhpcyxmLGFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSx0KDE3NzIyKShzKX0sNTIzMTA6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMTAwNTApKDUpLHM9ImZpbmQiLG89ITA7cyBpbltdJiZBcnJheSgxKVtzXShmdW5jdGlvbigpe289ITF9KSxuKG4uUCtu''@;'; put 'put ''LkYqbywiQXJyYXkiLHtmaW5kOmZ1bmN0aW9uKGYpe3JldHVybiBlKHRoaXMsZixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksdCgxNzcyMikocyl9LDI0MzM2OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0Mjk4NSksZT10KDEwMDUwKSgwKSxzPXQo''@;'; put 'put ''Nzc3MTcpKFtdLmZvckVhY2gsITApO24obi5QK24uRiohcywiQXJyYXkiLHtmb3JFYWNoOmZ1bmN0aW9uKHUpe3JldHVybiBlKHRoaXMsdSxhcmd1bWVudHNbMV0pfX0pfSwzMDUyMjooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNzQxKSxlPXQoNDI5ODUpLHM9dCgyMDUwOCksbz10''@;'; put 'put ''KDI4ODUxKSx1PXQoODY1NTUpLGY9dCgxMDg3NSksaT10KDkyODExKSxwPXQoNjkwMDIpO2UoZS5TK2UuRiohdCg3NDYyKShmdW5jdGlvbih5KXtBcnJheS5mcm9tKHkpfSksIkFycmF5Iix7ZnJvbTpmdW5jdGlvbih2KXt2YXIgQixiLE8sUyxnPXModikseD0iZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''dGhpcz90aGlzOkFycmF5LEU9YXJndW1lbnRzLmxlbmd0aCxqPUU+MT9hcmd1bWVudHNbMV06dm9pZCAwLHc9dm9pZCAwIT09aixSPTAsRj1wKGcpO2lmKHcmJihqPW4oaixFPjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09Rnx8eD09QXJyYXkmJnUoRikpZm9yKGI9bmV3IHgoQj1m''@;'; put 'put ''KGcubGVuZ3RoKSk7Qj5SO1IrKylpKGIsUix3P2ooZ1tSXSxSKTpnW1JdKTtlbHNlIGZvcihTPUYuY2FsbChnKSxiPW5ldyB4OyEoTz1TLm5leHQoKSkuZG9uZTtSKyspaShiLFIsdz9vKFMsaixbTy52YWx1ZSxSXSwhMCk6Ty52YWx1ZSk7cmV0dXJuIGIubGVuZ3RoPVIsYn19KX0sMjMzNjk6''@;'; put 'put ''KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoNzkzMTUpKCExKSxzPVtdLmluZGV4T2Ysbz0hIXMmJjEvWzFdLmluZGV4T2YoMSwtMCk8MDtuKG4uUCtuLkYqKG98fCF0KDc3NzE3KShzKSksIkFycmF5Iix7aW5kZXhPZjpmdW5jdGlvbihmKXtyZXR1cm4gbz9zLmFw''@;'; put 'put ''cGx5KHRoaXMsYXJndW1lbnRzKXx8MDplKHRoaXMsZixhcmd1bWVudHNbMV0pfX0pfSwyMDc3NDooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIkFycmF5Iix7aXNBcnJheTp0KDQzMDIpfSl9LDU2OTk3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgxNzcyMiksZT10KDE1''@;'; put 'put ''NDM2KSxzPXQoODcyMzQpLG89dCgyMjExMCk7Yy5leHBvcnRzPXQoNDI5MjMpKEFycmF5LCJBcnJheSIsZnVuY3Rpb24odSxmKXt0aGlzLl90PW8odSksdGhpcy5faT0wLHRoaXMuX2s9Zn0sZnVuY3Rpb24oKXt2YXIgdT10aGlzLl90LGY9dGhpcy5fayxpPXRoaXMuX2krKztyZXR1cm4hdXx8''@;'; put 'put ''aT49dS5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGUoMSkpOmUoMCwia2V5cyI9PWY/aToidmFsdWVzIj09Zj91W2ldOltpLHVbaV1dKX0sInZhbHVlcyIpLHMuQXJndW1lbnRzPXMuQXJyYXksbigia2V5cyIpLG4oInZhbHVlcyIpLG4oImVudHJpZXMiKX0sODc4NDI6KGMsbCx0KT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMjIxMTApLHM9W10uam9pbjtuKG4uUCtuLkYqKHQoNDk3OTcpIT1PYmplY3R8fCF0KDc3NzE3KShzKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbih1KXtyZXR1cm4gcy5jYWxsKGUodGhpcyksdm9pZCAwPT09dT8iLCI6dSl9fSl9LDk5NTY0Oihj''@;'; put 'put ''LGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0Mjk4NSksZT10KDIyMTEwKSxzPXQoODE0NjcpLG89dCgxMDg3NSksdT1bXS5sYXN0SW5kZXhPZixmPSEhdSYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MDtuKG4uUCtuLkYqKGZ8fCF0KDc3NzE3KSh1KSksIkFycmF5Iix7bGFzdEluZGV4''@;'; put 'put ''T2Y6ZnVuY3Rpb24ocCl7aWYoZilyZXR1cm4gdS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIHk9ZSh0aGlzKSx2PW8oeS5sZW5ndGgpLGc9di0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihnPU1hdGgubWluKGcscyhhcmd1bWVudHNbMV0pKSksZzwwJiYoZz12K2cpO2c+PTA7Zy0t''@;'; put 'put ''KWlmKGcgaW4geSYmeVtnXT09PXApcmV0dXJuIGd8fDA7cmV0dXJuLTF9fSl9LDE5MzcxOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0Mjk4NSksZT10KDEwMDUwKSgxKTtuKG4uUCtuLkYqIXQoNzc3MTcpKFtdLm1hcCwhMCksIkFycmF5Iix7bWFwOmZ1bmN0aW9uKG8pe3JldHVy''@;'; put 'put ''biBlKHRoaXMsbyxhcmd1bWVudHNbMV0pfX0pfSw1ODI5NTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI5ODUpLGU9dCg5MjgxMSk7bihuLlMrbi5GKnQoNzQyNTMpKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcygpe31yZXR1cm4hKEFycmF5Lm9mLmNhbGwocylpbnN0YW5jZW9mIHMp''@;'; put 'put ''fSksIkFycmF5Iix7b2Y6ZnVuY3Rpb24oKXtmb3IodmFyIG89MCx1PWFyZ3VtZW50cy5sZW5ndGgsZj1uZXcoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSkodSk7dT5vOyllKGYsbyxhcmd1bWVudHNbbysrXSk7cmV0dXJuIGYubGVuZ3RoPXUsZn19KX0sMzc1MDooYyxsLHQp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI5ODUpLGU9dCgzNzYyOCk7bihuLlArbi5GKiF0KDc3NzE3KShbXS5yZWR1Y2VSaWdodCwhMCksIkFycmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19''@;'; put 'put ''KX0sMzMwNTc6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMzc2MjgpO24obi5QK24uRiohdCg3NzcxNykoW10ucmVkdWNlLCEwKSwiQXJyYXkiLHtyZWR1Y2U6ZnVuY3Rpb24obyl7cmV0dXJuIGUodGhpcyxvLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFd''@;'; put 'put ''LCExKX19KX0sNTAxMTA6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoNDA2MzkpLHM9dCg5MjAzMiksbz10KDkyMzM3KSx1PXQoMTA4NzUpLGY9W10uc2xpY2U7bihuLlArbi5GKnQoNzQyNTMpKGZ1bmN0aW9uKCl7ZSYmZi5jYWxsKGUpfSksIkFycmF5Iix7c2xp''@;'; put 'put ''Y2U6ZnVuY3Rpb24ocCx5KXt2YXIgdj11KHRoaXMubGVuZ3RoKSxnPXModGhpcyk7aWYoeT12b2lkIDA9PT15P3Y6eSwiQXJyYXkiPT1nKXJldHVybiBmLmNhbGwodGhpcyxwLHkpO2Zvcih2YXIgeD1vKHAsdiksRT1vKHksdiksaj11KEUteCksdz1uZXcgQXJyYXkoaiksUj0wO1I8ajtSKysp''@;'; put 'put ''d1tSXT0iU3RyaW5nIj09Zz90aGlzLmNoYXJBdCh4K1IpOnRoaXNbeCtSXTtyZXR1cm4gd319KX0sMjY3NzM6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMTAwNTApKDMpO24obi5QK24uRiohdCg3NzcxNykoW10uc29tZSwhMCksIkFycmF5Iix7c29tZTpmdW5j''@;'; put 'put ''dGlvbihvKXtyZXR1cm4gZSh0aGlzLG8sYXJndW1lbnRzWzFdKX19KX0sMjAwNzU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoMjQ5NjMpLHM9dCgyMDUwOCksbz10KDc0MjUzKSx1PVtdLnNvcnQsZj1bMSwyLDNdO24obi5QK24uRioobyhmdW5jdGlvbigpe2Yu''@;'; put 'put ''c29ydCh2b2lkIDApfSl8fCFvKGZ1bmN0aW9uKCl7Zi5zb3J0KG51bGwpfSl8fCF0KDc3NzE3KSh1KSksIkFycmF5Iix7c29ydDpmdW5jdGlvbihwKXtyZXR1cm4gdm9pZCAwPT09cD91LmNhbGwocyh0aGlzKSk6dS5jYWxsKHModGhpcyksZShwKSl9fSl9LDMxODQyOihjLGwsdCk9Pnt0KDI5''@;'; put 'put ''NzQpKCJBcnJheSIpfSw4MTgyMjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIkRhdGUiLHtub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KX0sOTEwMzE6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCg1MzUzNyk7bihuLlArbi5GKihEYXRlLnBy''@;'; put 'put ''b3RvdHlwZS50b0lTT1N0cmluZyE9PWUpLCJEYXRlIix7dG9JU09TdHJpbmc6ZX0pfSwxOTk3NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI5ODUpLGU9dCgyMDUwOCkscz10KDIxNjg5KTtuKG4uUCtuLkYqdCg3NDI1MykoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PW5ldyBE''@;'; put 'put ''YXRlKE5hTikudG9KU09OKCl8fDEhPT1EYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMX19KX0pLCJEYXRlIix7dG9KU09OOmZ1bmN0aW9uKHUpe3ZhciBmPWUodGhpcyksaT1zKGYpO3JldHVybiJudW1iZXIiIT10eXBlb2YgaXx8aXNG''@;'; put 'put ''aW5pdGUoaSk/Zi50b0lTT1N0cmluZygpOm51bGx9fSl9LDQxNTYwOihjLGwsdCk9Pnt2YXIgbj10KDg2MzE0KSgidG9QcmltaXRpdmUiKSxlPURhdGUucHJvdG90eXBlO24gaW4gZXx8dCg4NzcyOCkoZSxuLHQoODcwKSl9LDQ2MzMxOihjLGwsdCk9Pnt2YXIgbj1EYXRlLnByb3RvdHlwZSxl''@;'; put 'put ''PSJJbnZhbGlkIERhdGUiLHM9InRvU3RyaW5nIixvPW5bc10sdT1uLmdldFRpbWU7bmV3IERhdGUoTmFOKSsiIiE9ZSYmdCg3NzIzNCkobixzLGZ1bmN0aW9uKCl7dmFyIGk9dS5jYWxsKHRoaXMpO3JldHVybiBpPT1pP28uY2FsbCh0aGlzKTplfSl9LDM5NzMwOihjLGwsdCk9Pnt2YXIgbj10''@;'; put 'put ''KDQyOTg1KTtuKG4uUCwiRnVuY3Rpb24iLHtiaW5kOnQoMzQzOTgpfSl9LDQ4Mzc3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg1NTI4NiksZT10KDQ2OCkscz10KDg2MzE0KSgiaGFzSW5zdGFuY2UiKSxvPUZ1bmN0aW9uLnByb3RvdHlwZTtzIGluIG98fHQoOTkyNzUpLmYobyxz''@;'; put 'put ''LHt2YWx1ZTpmdW5jdGlvbih1KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IW4odSkpcmV0dXJuITE7aWYoIW4odGhpcy5wcm90b3R5cGUpKXJldHVybiB1IGluc3RhbmNlb2YgdGhpcztmb3IoO3U9ZSh1KTspaWYodGhpcy5wcm90b3R5cGU9PT11KXJldHVybiEwO3JldHVybiExfX0p''@;'; put 'put ''fSw2MDU5OihjLGwsdCk9Pnt2YXIgbj10KDk5Mjc1KS5mLGU9RnVuY3Rpb24ucHJvdG90eXBlLHM9L15ccypmdW5jdGlvbiAoW14gKF0qKS8sbz0ibmFtZSI7byBpbiBlfHx0KDY3MDU3KSYmbihlLG8se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuKCIiK3RoaXMp''@;'; put 'put ''Lm1hdGNoKHMpWzFdfWNhdGNoe3JldHVybiIifX19KX0sODg0MTY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDk4MjQpLGU9dCgxNjE2KSxzPSJNYXAiO2MuZXhwb3J0cz10KDQ1Nzk1KShzLGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2dldDpmdW5jdGlvbih1KXt2YXIgZj1uLmdldEVudHJ5KGUodGhpcyxzKSx1KTtyZXR1cm4gZiYmZi52fSxzZXQ6ZnVuY3Rpb24odSxmKXtyZXR1cm4gbi5kZWYoZSh0aGlzLHMpLDA9PT11PzA6dSxmKX19LG4sITApfSw3NjUw''@;'; put 'put ''MzooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDQ2MjA2KSxzPU1hdGguc3FydCxvPU1hdGguYWNvc2g7bihuLlMrbi5GKiEobyYmNzEwPT1NYXRoLmZsb29yKG8oTnVtYmVyLk1BWF9WQUxVRSkpJiZvKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihmKXtyZXR1cm4oZj0r''@;'; put 'put ''Zik8MT9OYU46Zj45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyhmKStNYXRoLkxOMjplKGYtMStzKGYtMSkqcyhmKzEpKX19KX0sNjY3ODY6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9TWF0aC5hc2luaDtuKG4uUytuLkYqIShlJiYxL2UoMCk+MCksIk1hdGgiLHthc2luaDpmdW5jdGlv''@;'; put 'put ''biBzKG8pe3JldHVybiBpc0Zpbml0ZShvPStvKSYmMCE9bz9vPDA/LXMoLW8pOk1hdGgubG9nKG8rTWF0aC5zcXJ0KG8qbysxKSk6b319KX0sNTA5MzI6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9TWF0aC5hdGFuaDtuKG4uUytuLkYqIShlJiYxL2UoLTApPDApLCJNYXRoIix7YXRhbmg6''@;'; put 'put ''ZnVuY3Rpb24obyl7cmV0dXJuIDA9PShvPStvKT9vOk1hdGgubG9nKCgxK28pLygxLW8pKS8yfX0pfSw1NzUyNjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDYxODAxKTtuKG4uUywiTWF0aCIse2NicnQ6ZnVuY3Rpb24obyl7cmV0dXJuIGUobz0rbykqTWF0aC5wb3coTWF0aC5hYnMo''@;'; put 'put ''byksMS8zKX19KX0sMjE1OTE6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TLCJNYXRoIix7Y2x6MzI6ZnVuY3Rpb24ocyl7cmV0dXJuKHM+Pj49MCk/MzEtTWF0aC5mbG9vcihNYXRoLmxvZyhzKy41KSpNYXRoLkxPRzJFKTozMn19KX0sOTA3MzooYyxsLHQpPT57dmFyIG49dCg0Mjk4''@;'; put 'put ''NSksZT1NYXRoLmV4cDtuKG4uUywiTWF0aCIse2Nvc2g6ZnVuY3Rpb24obyl7cmV0dXJuKGUobz0rbykrZSgtbykpLzJ9fSl9LDgwMzQ3OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KSxlPXQoMTMwODYpO24obi5TK24uRiooZSE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTplfSl9LDMwNTc5''@;'; put 'put ''OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUywiTWF0aCIse2Zyb3VuZDp0KDM0OTM0KX0pfSw0NjY5OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KSxlPU1hdGguYWJzO24obi5TLCJNYXRoIix7aHlwb3Q6ZnVuY3Rpb24obyx1KXtmb3IodmFyIHYsZyxmPTAsaT0wLHA9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aCx5PTA7aTxwOyl5PCh2PWUoYXJndW1lbnRzW2krK10pKT8oZj1mKihnPXkvdikqZysxLHk9dik6Zis9dj4wPyhnPXYveSkqZzp2O3JldHVybiB5PT09MS8wPzEvMDp5Kk1hdGguc3FydChmKX19KX0sNjc3MTA6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9TWF0aC5pbXVsO24o''@;'; put 'put ''bi5TK24uRip0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybi01IT1lKDQyOTQ5NjcyOTUsNSl8fDIhPWUubGVuZ3RofSksIk1hdGgiLHtpbXVsOmZ1bmN0aW9uKG8sdSl7dmFyIGY9NjU1MzUsaT0rbyxwPSt1LHk9ZiZpLHY9ZiZwO3JldHVybiAwfHkqdisoKGYmaT4+PjE2KSp2K3kqKGYmcD4+''@;'; put 'put ''PjE2KTw8MTY+Pj4wKX19KX0sNDU3ODk6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24ocyl7cmV0dXJuIE1hdGgubG9nKHMpKk1hdGguTE9HMTBFfX0pfSwzMzUxNDooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk1hdGgiLHtsb2cx''@;'; put 'put ''cDp0KDQ2MjA2KX0pfSw5OTk3ODooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk1hdGgiLHtsb2cyOmZ1bmN0aW9uKHMpe3JldHVybiBNYXRoLmxvZyhzKS9NYXRoLkxOMn19KX0sNTg0NzI6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TLCJNYXRoIix7c2lnbjp0KDYxODAx''@;'; put 'put ''KX0pfSw4Njk0NjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDEzMDg2KSxzPU1hdGguZXhwO24obi5TK24uRip0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2luaCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKHUpe3JldHVybiBNYXRoLmFicyh1''@;'; put 'put ''PSt1KTwxPyhlKHUpLWUoLXUpKS8yOihzKHUtMSktcygtdS0xKSkqKE1hdGguRS8yKX19KX0sMzUwNjg6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCgxMzA4Nikscz1NYXRoLmV4cDtuKG4uUywiTWF0aCIse3Rhbmg6ZnVuY3Rpb24odSl7dmFyIGY9ZSh1PSt1KSxpPWUoLXUpO3JldHVy''@;'; put 'put ''biBmPT0xLzA/MTppPT0xLzA/LTE6KGYtaSkvKHModSkrcygtdSkpfX0pfSw0MTM6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24ocyl7cmV0dXJuKHM+MD9NYXRoLmZsb29yOk1hdGguY2VpbCkocyl9fSl9LDExMjQ2OihjLGwsdCk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIG49dCgzODE2KSxlPXQoNzkxODEpLHM9dCg5MjAzMiksbz10KDQwMjY2KSx1PXQoMjE2ODkpLGY9dCg3NDI1MyksaT10KDIwNjE2KS5mLHA9dCgxODY5MykuZix5PXQoOTkyNzUpLmYsdj10KDI5NTk5KS50cmltLGc9Ik51bWJlciIseD1uW2ddLEU9eCxqPXgucHJvdG90''@;'; put 'put ''eXBlLHc9cyh0KDQyNTAzKShqKSk9PWcsUj0idHJpbSJpbiBTdHJpbmcucHJvdG90eXBlLEY9ZnVuY3Rpb24oUyl7dmFyIEM9dShTLCExKTtpZigic3RyaW5nIj09dHlwZW9mIEMmJkMubGVuZ3RoPjIpe3ZhciBVLFosdHQsSz0oQz1SP0MudHJpbSgpOnYoQywzKSkuY2hhckNvZGVBdCgwKTtp''@;'; put 'put ''Zig0Mz09PUt8fDQ1PT09Syl7aWYoODg9PT0oVT1DLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1VKXJldHVybiBOYU59ZWxzZSBpZig0OD09PUspe3N3aXRjaChDLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpaPTIsdHQ9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpaPTgsdHQ9NTU7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDpyZXR1cm4rQ31mb3IodmFyIFgsXz1DLnNsaWNlKDIpLG50PTAsc3Q9Xy5sZW5ndGg7bnQ8c3Q7bnQrKylpZigoWD1fLmNoYXJDb2RlQXQobnQpKTw0OHx8WD50dClyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChfLFopfX1yZXR1cm4rQ307aWYoIXgoIiAwbzEiKXx8''@;'; put 'put ''IXgoIjBiMSIpfHx4KCIrMHgxIikpe3g9ZnVuY3Rpb24oQyl7dmFyIEs9YXJndW1lbnRzLmxlbmd0aDwxPzA6QyxVPXRoaXM7cmV0dXJuIFUgaW5zdGFuY2VvZiB4JiYodz9mKGZ1bmN0aW9uKCl7ai52YWx1ZU9mLmNhbGwoVSl9KTpzKFUpIT1nKT9vKG5ldyBFKEYoSykpLFUseCk6RihLKX07''@;'; put 'put ''Zm9yKHZhciBPLEI9dCg2NzA1Nyk/aShFKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVH''@;'; put 'put ''RVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksYj0wO0IubGVuZ3RoPmI7YisrKWUoRSxPPUJbYl0pJiYhZSh4LE8pJiZ5KHgsTyxwKEUsTykpO3gucHJvdG90eXBlPWosai5jb25zdHJ1Y3Rvcj14LHQoNzcyMzQpKG4sZyx4KX19LDc1OTcyOihjLGwsdCk9Pnt2''@;'; put 'put ''YXIgbj10KDQyOTg1KTtuKG4uUywiTnVtYmVyIix7RVBTSUxPTjpNYXRoLnBvdygyLC01Mil9KX0sNTM0MDM6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCgzODE2KS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24obyl7cmV0dXJuIm51bWJlciI9PXR5cGVv''@;'; put 'put ''ZiBvJiZlKG8pfX0pfSw5MjUxNjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjp0KDE4MzY3KX0pfSw0OTM3MTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uKHMpe3JldHVybiBzIT1zfX0pfSw4''@;'; put 'put ''NjQ3OTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDE4MzY3KSxzPU1hdGguYWJzO24obi5TLCJOdW1iZXIiLHtpc1NhZmVJbnRlZ2VyOmZ1bmN0aW9uKHUpe3JldHVybiBlKHUpJiZzKHUpPD05MDA3MTk5MjU0NzQwOTkxfX0pfSw5MTczNjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7''@;'; put 'put ''bihuLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSw1MTg4OTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk51bWJlciIse01JTl9TQUZFX0lOVEVHRVI6LTkwMDcxOTkyNTQ3NDA5OTF9KX0sNjUxNzc6KGMsbCx0KT0+e3ZhciBuPXQoNDI5''@;'; put 'put ''ODUpLGU9dCg0Nzc0Myk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9ZSksIk51bWJlciIse3BhcnNlRmxvYXQ6ZX0pfSw4MTI0NjooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDU1OTYwKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9ZSksIk51bWJlciIse3BhcnNlSW50''@;'; put 'put ''OmV9KX0sMzA3MjY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoODE0NjcpLHM9dCg4MzM2NSksbz10KDY4NTk1KSx1PTEuLnRvRml4ZWQsZj1NYXRoLmZsb29yLGk9WzAsMCwwLDAsMCwwXSxwPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24h''@;'; put 'put ''Iix5PSIwIix2PWZ1bmN0aW9uKHcsUil7Zm9yKHZhciBGPS0xLEI9UjsrK0Y8NjspaVtGXT0oQis9dyppW0ZdKSUxZTcsQj1mKEIvMWU3KX0sZz1mdW5jdGlvbih3KXtmb3IodmFyIFI9NixGPTA7LS1SPj0wOylpW1JdPWYoKEYrPWlbUl0pL3cpLEY9RiV3KjFlN30seD1mdW5jdGlvbigpe2Zv''@;'; put 'put ''cih2YXIgdz02LFI9IiI7LS13Pj0wOylpZigiIiE9PVJ8fDA9PT13fHwwIT09aVt3XSl7dmFyIEY9U3RyaW5nKGlbd10pO1I9IiI9PT1SP0Y6UitvLmNhbGwoeSw3LUYubGVuZ3RoKStGfXJldHVybiBSfSxFPWZ1bmN0aW9uKHcsUixGKXtyZXR1cm4gMD09PVI/RjpSJTI9PTE/RSh3LFItMSxG''@;'; put 'put ''KncpOkUodyp3LFIvMixGKX07bihuLlArbi5GKighIXUmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwiMSIhPT0uOS50b0ZpeGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkp''@;'; put 'put ''fHwhdCg3NDI1MykoZnVuY3Rpb24oKXt1LmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b0ZpeGVkOmZ1bmN0aW9uKFIpe3ZhciBTLEMsSyxVLEY9cyh0aGlzLHApLEI9ZShSKSxiPSIiLE89eTtpZihCPDB8fEI+MjApdGhyb3cgUmFuZ2VFcnJvcihwKTtpZihGIT1GKXJldHVybiJOYU4iO2lmKEY8''@;'; put 'put ''PS0xZTIxfHxGPj0xZTIxKXJldHVybiBTdHJpbmcoRik7aWYoRjwwJiYoYj0iLSIsRj0tRiksRj4xZS0yMSlpZihTPWZ1bmN0aW9uKHcpe2Zvcih2YXIgUj0wLEY9dztGPj00MDk2OylSKz0xMixGLz00MDk2O2Zvcig7Rj49MjspUis9MSxGLz0yO3JldHVybiBSfShGKkUoMiw2OSwxKSktNjks''@;'; put 'put ''Qz1TPDA/RipFKDIsLVMsMSk6Ri9FKDIsUywxKSxDKj00NTAzNTk5NjI3MzcwNDk2LChTPTUyLVMpPjApe2Zvcih2KDAsQyksSz1CO0s+PTc7KXYoMWU3LDApLEstPTc7Zm9yKHYoRSgxMCxLLDEpLDApLEs9Uy0xO0s+PTIzOylnKDE8PDIzKSxLLT0yMztnKDE8PEspLHYoMSwxKSxnKDIpLE89''@;'; put 'put ''eCgpfWVsc2UgdigwLEMpLHYoMTw8LVMsMCksTz14KCkrby5jYWxsKHksQik7cmV0dXJuIE89Qj4wP2IrKChVPU8ubGVuZ3RoKTw9Qj8iMC4iK28uY2FsbCh5LEItVSkrTzpPLnNsaWNlKDAsVS1CKSsiLiIrTy5zbGljZShVLUIpKTpiK099fSl9LDE5MDE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgbj10KDQyOTg1KSxlPXQoNzQyNTMpLHM9dCg4MzM2NSksbz0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGUoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1vLmNhbGwoMSx2b2lkIDApfSl8fCFlKGZ1bmN0aW9uKCl7by5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVu''@;'; put 'put ''Y3Rpb24oZil7dmFyIGk9cyh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1mP28uY2FsbChpKTpvLmNhbGwoaSxmKX19KX0sNzUxMTU6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TK24uRiwiT2JqZWN0Iix7YXNz''@;'; put 'put ''aWduOnQoMzUzNDUpfSl9LDY4MTMyOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUywiT2JqZWN0Iix7Y3JlYXRlOnQoNDI1MDMpfSl9LDM3NDcwOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUytuLkYqIXQoNjcwNTcpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0aWVzOnQoMzU1''@;'; put 'put ''ODgpfSl9LDQ4Mzg4OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUytuLkYqIXQoNjcwNTcpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0eTp0KDk5Mjc1KS5mfSl9LDg5Mzc1OihjLGwsdCk9Pnt2YXIgbj10KDU1Mjg2KSxlPXQoODQ3MjgpLm9uRnJlZXplO3QoMzMxNjApKCJmcmVlemUi''@;'; put 'put ''LGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gcyYmbih1KT9zKGUodSkpOnV9fSl9LDk0ODgyOihjLGwsdCk9Pnt2YXIgbj10KDIyMTEwKSxlPXQoMTg2OTMpLmY7dCgzMzE2MCkoImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24obyx1KXtyZXR1cm4gZShuKG8pLHUpfX0pfSw3OTYyMjooYyxsLHQpPT57dCgzMzE2MCkoImdldE93blByb3BlcnR5TmFtZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHQoMzkzMjcpLmZ9KX0sNDE1MjA6KGMsbCx0KT0+e3ZhciBuPXQoMjA1MDgpLGU9dCg0NjgpO3QoMzMxNjApKCJnZXRQcm90''@;'; put 'put ''b3R5cGVPZiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIGUobihvKSl9fSl9LDQ5ODkyOihjLGwsdCk9Pnt2YXIgbj10KDU1Mjg2KTt0KDMzMTYwKSgiaXNFeHRlbnNpYmxlIixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuISFuKG8pJiYoIWV8fGUo''@;'; put 'put ''bykpfX0pfSw2NDE1NzooYyxsLHQpPT57dmFyIG49dCg1NTI4Nik7dCgzMzE2MCkoImlzRnJvemVuIixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIW4obyl8fCEhZSYmZShvKX19KX0sMzUwOTU6KGMsbCx0KT0+e3ZhciBuPXQoNTUyODYpO3QoMzMxNjApKCJpc1NlYWxl''@;'; put 'put ''ZCIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiFuKG8pfHwhIWUmJmUobyl9fSl9LDk5MTc2OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUywiT2JqZWN0Iix7aXM6dCgyNzE5NSl9KX0sMjc0NzY6KGMsbCx0KT0+e3ZhciBuPXQoMjA1MDgpLGU9dCg0NzE4NCk7''@;'; put 'put ''dCgzMzE2MCkoImtleXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBlKG4obykpfX0pfSw4NDY3MjooYyxsLHQpPT57dmFyIG49dCg1NTI4NiksZT10KDg0NzI4KS5vbkZyZWV6ZTt0KDMzMTYwKSgicHJldmVudEV4dGVuc2lvbnMiLGZ1bmN0aW9uKHMpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbih1KXtyZXR1cm4gcyYmbih1KT9zKGUodSkpOnV9fSl9LDQzNTMzOihjLGwsdCk9Pnt2YXIgbj10KDU1Mjg2KSxlPXQoODQ3MjgpLm9uRnJlZXplO3QoMzMxNjApKCJzZWFsIixmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIHMmJm4odSk/cyhlKHUpKTp1fX0p''@;'; put 'put ''fSw2ODgzODooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSk7bihuLlMsIk9iamVjdCIse3NldFByb3RvdHlwZU9mOnQoMjczNzUpLnNldH0pfSw5NjI1MzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDE0ODgpLGU9e307ZVt0KDg2MzE0KSgidG9TdHJpbmdUYWciKV09InoiLGUrIiIh''@;'; put 'put ''PSJbb2JqZWN0IHpdIiYmdCg3NzIzNCkoT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIituKHRoaXMpKyJdIn0sITApfSw2NDI5OTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDQ3NzQzKTtuKG4uRytuLkYqKHBhcnNlRmxvYXQhPWUp''@;'; put 'put ''LHtwYXJzZUZsb2F0OmV9KX0sNzEwODQ6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCg1NTk2MCk7bihuLkcrbi5GKihwYXJzZUludCE9ZSkse3BhcnNlSW50OmV9KX0sMjE1NzI6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCgyNDk2Mykscz10KDI3MDA3KSxvPSh0KDM4MTYpLlJl''@;'; put 'put ''ZmxlY3R8fHt9KS5hcHBseSx1PUZ1bmN0aW9uLmFwcGx5O24obi5TK24uRiohdCg3NDI1MykoZnVuY3Rpb24oKXtvKGZ1bmN0aW9uKCl7fSl9KSwiUmVmbGVjdCIse2FwcGx5OmZ1bmN0aW9uKGkscCx5KXt2YXIgdj1lKGkpLGc9cyh5KTtyZXR1cm4gbz9vKHYscCxnKTp1LmNhbGwodixwLGcp''@;'; put 'put ''fX0pfSw4MjEzOTooYyxsLHQpPT57dmFyIG49dCg0Mjk4NSksZT10KDQyNTAzKSxzPXQoMjQ5NjMpLG89dCgyNzAwNyksdT10KDU1Mjg2KSxmPXQoNzQyNTMpLGk9dCgzNDM5OCkscD0odCgzODE2KS5SZWZsZWN0fHx7fSkuY29uc3RydWN0LHk9ZihmdW5jdGlvbigpe2Z1bmN0aW9uIGcoKXt9''@;'; put 'put ''cmV0dXJuIShwKGZ1bmN0aW9uKCl7fSxbXSxnKWluc3RhbmNlb2YgZyl9KSx2PSFmKGZ1bmN0aW9uKCl7cChmdW5jdGlvbigpe30pfSk7bihuLlMrbi5GKih5fHx2KSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbih4LEUpe3MoeCksbyhFKTt2YXIgaj1hcmd1bWVudHMubGVuZ3RoPDM/''@;'; put 'put ''eDpzKGFyZ3VtZW50c1syXSk7aWYodiYmIXkpcmV0dXJuIHAoeCxFLGopO2lmKHg9PWope3N3aXRjaChFLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgeDtjYXNlIDE6cmV0dXJuIG5ldyB4KEVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHgoRVswXSxFWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB4''@;'; put 'put ''KEVbMF0sRVsxXSxFWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB4KEVbMF0sRVsxXSxFWzJdLEVbM10pfXZhciB3PVtudWxsXTtyZXR1cm4gdy5wdXNoLmFwcGx5KHcsRSksbmV3KGkuYXBwbHkoeCx3KSl9dmFyIFI9ai5wcm90b3R5cGUsRj1lKHUoUik/UjpPYmplY3QucHJvdG90eXBlKSxCPUZ1''@;'; put 'put ''bmN0aW9uLmFwcGx5LmNhbGwoeCxGLEUpO3JldHVybiB1KEIpP0I6Rn19KX0sMTA2ODU6KGMsbCx0KT0+e3ZhciBuPXQoOTkyNzUpLGU9dCg0Mjk4NSkscz10KDI3MDA3KSxvPXQoMjE2ODkpO2UoZS5TK2UuRip0KDc0MjUzKShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkobi5m''@;'; put 'put ''KHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2RlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGYsaSxwKXtzKGYpLGk9byhpLCEwKSxzKHApO3RyeXtyZXR1cm4gbi5mKGYsaSxwKSwhMH1jYXRjaHtyZXR1cm4hMX19fSl9LDg1NTM1OihjLGwsdCk9Pnt2YXIgbj10KDQy''@;'; put 'put ''OTg1KSxlPXQoMTg2OTMpLmYscz10KDI3MDA3KTtuKG4uUywiUmVmbGVjdCIse2RlbGV0ZVByb3BlcnR5OmZ1bmN0aW9uKHUsZil7dmFyIGk9ZShzKHUpLGYpO3JldHVybiEoaSYmIWkuY29uZmlndXJhYmxlKSYmZGVsZXRlIHVbZl19fSl9LDE3MzQ3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIG49dCg0Mjk4NSksZT10KDI3MDA3KSxzPWZ1bmN0aW9uKG8pe3RoaXMuX3Q9ZShvKSx0aGlzLl9pPTA7dmFyIGYsdT10aGlzLl9rPVtdO2ZvcihmIGluIG8pdS5wdXNoKGYpfTt0KDQ5OTg4KShzLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIGYsbz10aGlzLHU9by5faztkb3tpZihvLl9p''@;'; put 'put ''Pj11Lmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXdoaWxlKCEoKGY9dVtvLl9pKytdKWluIG8uX3QpKTtyZXR1cm57dmFsdWU6Zixkb25lOiExfX0pLG4obi5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uKHUpe3JldHVybiBuZXcgcyh1KX19KX0sOTY2MzM6KGMs''@;'; put 'put ''bCx0KT0+e3ZhciBuPXQoMTg2OTMpLGU9dCg0Mjk4NSkscz10KDI3MDA3KTtlKGUuUywiUmVmbGVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbih1LGYpe3JldHVybiBuLmYocyh1KSxmKX19KX0sNjg5ODk6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpLGU9dCg0NjgpLHM9''@;'; put 'put ''dCgyNzAwNyk7bihuLlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih1KXtyZXR1cm4gZShzKHUpKX19KX0sODMwNDk6KGMsbCx0KT0+e3ZhciBuPXQoMTg2OTMpLGU9dCg0NjgpLHM9dCg3OTE4MSksbz10KDQyOTg1KSx1PXQoNTUyODYpLGY9dCgyNzAwNyk7byhvLlMsIlJl''@;'; put 'put ''ZmxlY3QiLHtnZXQ6ZnVuY3Rpb24gaShwLHkpe3ZhciBnLHgsdj1hcmd1bWVudHMubGVuZ3RoPDM/cDphcmd1bWVudHNbMl07cmV0dXJuIGYocCk9PT12P3BbeV06KGc9bi5mKHAseSkpP3MoZywidmFsdWUiKT9nLnZhbHVlOnZvaWQgMCE9PWcuZ2V0P2cuZ2V0LmNhbGwodik6dm9pZCAwOnUo''@;'; put 'put ''eD1lKHApKT9pKHgseSx2KTp2b2lkIDB9fSl9LDc4MjcwOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KTtuKG4uUywiUmVmbGVjdCIse2hhczpmdW5jdGlvbihzLG8pe3JldHVybiBvIGluIHN9fSl9LDY0NTEwOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KSxlPXQoMjcwMDcpLHM9T2JqZWN0Lmlz''@;'; put 'put ''RXh0ZW5zaWJsZTtuKG4uUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih1KXtyZXR1cm4gZSh1KSwhc3x8cyh1KX19KX0sNzM5ODQ6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5TLCJSZWZsZWN0Iix7b3duS2V5czp0KDU3NjQzKX0pfSw3NTc2OTooYyxsLHQpPT57dmFy''@;'; put 'put ''IG49dCg0Mjk4NSksZT10KDI3MDA3KSxzPU9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztuKG4uUywiUmVmbGVjdCIse3ByZXZlbnRFeHRlbnNpb25zOmZ1bmN0aW9uKHUpe2UodSk7dHJ5e3JldHVybiBzJiZzKHUpLCEwfWNhdGNoe3JldHVybiExfX19KX0sOTYwMTQ6KGMsbCx0KT0+e3ZhciBu''@;'; put 'put ''PXQoNDI5ODUpLGU9dCgyNzM3NSk7ZSYmbihuLlMsIlJlZmxlY3QiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlvbihvLHUpe2UuY2hlY2sobyx1KTt0cnl7cmV0dXJuIGUuc2V0KG8sdSksITB9Y2F0Y2h7cmV0dXJuITF9fX0pfSw1MDA1NTooYyxsLHQpPT57dmFyIG49dCg5OTI3NSksZT10KDE4''@;'; put 'put ''NjkzKSxzPXQoNDY4KSxvPXQoNzkxODEpLHU9dCg0Mjk4NSksZj10KDkwNjgxKSxpPXQoMjcwMDcpLHA9dCg1NTI4Nik7dSh1LlMsIlJlZmxlY3QiLHtzZXQ6ZnVuY3Rpb24geSh2LGcseCl7dmFyIHcsUixFPWFyZ3VtZW50cy5sZW5ndGg8ND92OmFyZ3VtZW50c1szXSxqPWUuZihpKHYpLGcp''@;'; put 'put ''O2lmKCFqKXtpZihwKFI9cyh2KSkpcmV0dXJuIHkoUixnLHgsRSk7aj1mKDApfWlmKG8oaiwidmFsdWUiKSl7aWYoITE9PT1qLndyaXRhYmxlfHwhcChFKSlyZXR1cm4hMTtpZih3PWUuZihFLGcpKXtpZih3LmdldHx8dy5zZXR8fCExPT09dy53cml0YWJsZSlyZXR1cm4hMTt3LnZhbHVlPXgs''@;'; put 'put ''bi5mKEUsZyx3KX1lbHNlIG4uZihFLGcsZigwLHgpKTtyZXR1cm4hMH1yZXR1cm4gdm9pZCAwIT09ai5zZXQmJihqLnNldC5jYWxsKEUseCksITApfX0pfSw4Mzk0NjooYyxsLHQpPT57dmFyIG49dCgzODE2KSxlPXQoNDAyNjYpLHM9dCg5OTI3NSkuZixvPXQoMjA2MTYpLmYsdT10KDU1MzY0''@;'; put 'put ''KSxmPXQoNTMyMTgpLGk9bi5SZWdFeHAscD1pLHk9aS5wcm90b3R5cGUsdj0vYS9nLGc9L2EvZyx4PW5ldyBpKHYpIT09djtpZih0KDY3MDU3KSYmKCF4fHx0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybiBnW3QoODYzMTQpKCJtYXRjaCIpXT0hMSxpKHYpIT12fHxpKGcpPT1nfHwiL2EvaSIh''@;'; put 'put ''PWkodiwiaSIpfSkpKXtpPWZ1bmN0aW9uKEYsQil7dmFyIGI9dGhpcyBpbnN0YW5jZW9mIGksTz11KEYpLFM9dm9pZCAwPT09QjtyZXR1cm4hYiYmTyYmRi5jb25zdHJ1Y3Rvcj09PWkmJlM/RjplKHg/bmV3IHAoTyYmIVM/Ri5zb3VyY2U6RixCKTpwKChPPUYgaW5zdGFuY2VvZiBpKT9GLnNv''@;'; put 'put ''dXJjZTpGLE8mJlM/Zi5jYWxsKEYpOkIpLGI/dGhpczp5LGkpfTtmb3IodmFyIEU9ZnVuY3Rpb24oUil7UiBpbiBpfHxzKGksUix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBwW1JdfSxzZXQ6ZnVuY3Rpb24oRil7cFtSXT1GfX0pfSxqPW8ocCksdz0wO2oubGVuZ3Ro''@;'; put 'put ''Pnc7KUUoalt3KytdKTt5LmNvbnN0cnVjdG9yPWksaS5wcm90b3R5cGU9eSx0KDc3MjM0KShuLCJSZWdFeHAiLGkpfXQoMjk3NCkoIlJlZ0V4cCIpfSwxODI2OTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjExNjUpO3QoNDI5ODUpKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAs''@;'; put 'put ''Zm9yY2VkOm4hPT0vLi8uZXhlY30se2V4ZWM6bn0pfSw3Njc3NDooYyxsLHQpPT57dCg2NzA1NykmJiJnIiE9Ly4vZy5mbGFncyYmdCg5OTI3NSkuZihSZWdFeHAucHJvdG90eXBlLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6dCg1MzIxOCl9KX0sMjE0NjY6KGMsbCx0KT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbj10KDI3MDA3KSxlPXQoMTA4NzUpLHM9dCg3Njc5Myksbz10KDI3Nzg3KTt0KDI4MDgyKSgibWF0Y2giLDEsZnVuY3Rpb24odSxmLGkscCl7cmV0dXJuW2Z1bmN0aW9uKHYpe3ZhciBnPXUodGhpcykseD12Py5bZl07cmV0dXJuIHZvaWQgMCE9PXg/eC5jYWxsKHYsZyk6''@;'; put 'put ''bmV3IFJlZ0V4cCh2KVtmXShTdHJpbmcoZykpfSxmdW5jdGlvbih5KXt2YXIgdj1wKGkseSx0aGlzKTtpZih2LmRvbmUpcmV0dXJuIHYudmFsdWU7dmFyIGc9bih5KSx4PVN0cmluZyh0aGlzKTtpZighZy5nbG9iYWwpcmV0dXJuIG8oZyx4KTt2YXIgRT1nLnVuaWNvZGU7Zy5sYXN0SW5kZXg9''@;'; put 'put ''MDtmb3IodmFyIFIsaj1bXSx3PTA7bnVsbCE9PShSPW8oZyx4KSk7KXt2YXIgRj1TdHJpbmcoUlswXSk7alt3XT1GLCIiPT09RiYmKGcubGFzdEluZGV4PXMoeCxlKGcubGFzdEluZGV4KSxFKSksdysrfXJldHVybiAwPT09dz9udWxsOmp9XX0pfSw1OTM1NzooYyxsLHQpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBuPXQoMjcwMDcpLGU9dCgyMDUwOCkscz10KDEwODc1KSxvPXQoODE0NjcpLHU9dCg3Njc5MyksZj10KDI3Nzg3KSxpPU1hdGgubWF4LHA9TWF0aC5taW4seT1NYXRoLmZsb29yLHY9L1wkKFskJmAnXXxcZFxkP3w8W14+XSo+KS9nLGc9L1wkKFskJmAnXXxcZFxkPykvZyx4PWZ1''@;'; put 'put ''bmN0aW9uKEUpe3JldHVybiB2b2lkIDA9PT1FP0U6U3RyaW5nKEUpfTt0KDI4MDgyKSgicmVwbGFjZSIsMixmdW5jdGlvbihFLGosdyxSKXtyZXR1cm5bZnVuY3Rpb24oYixPKXt2YXIgUz1FKHRoaXMpLEM9Yj8uW2pdO3JldHVybiB2b2lkIDAhPT1DP0MuY2FsbChiLFMsTyk6dy5jYWxsKFN0''@;'; put 'put ''cmluZyhTKSxiLE8pfSxmdW5jdGlvbihCLGIpe3ZhciBPPVIodyxCLHRoaXMsYik7aWYoTy5kb25lKXJldHVybiBPLnZhbHVlO3ZhciBTPW4oQiksQz1TdHJpbmcodGhpcyksSz0iZnVuY3Rpb24iPT10eXBlb2YgYjtLfHwoYj1TdHJpbmcoYikpO3ZhciBVPVMuZ2xvYmFsO2lmKFUpe3ZhciBa''@;'; put 'put ''PVMudW5pY29kZTtTLmxhc3RJbmRleD0wfWZvcih2YXIgdHQ9W107Oyl7dmFyIF89ZihTLEMpO2lmKG51bGw9PT1ffHwodHQucHVzaChfKSwhVSkpYnJlYWs7IiI9PT1TdHJpbmcoX1swXSkmJihTLmxhc3RJbmRleD11KEMscyhTLmxhc3RJbmRleCksWikpfWZvcih2YXIgc3Q9IiIsWD0wLFY9''@;'; put 'put ''MDtWPHR0Lmxlbmd0aDtWKyspe189dHRbVl07Zm9yKHZhciBRPVN0cmluZyhfWzBdKSxZPWkocChvKF8uaW5kZXgpLEMubGVuZ3RoKSwwKSxmdD1bXSx2dD0xO3Z0PF8ubGVuZ3RoO3Z0KyspZnQucHVzaCh4KF9bdnRdKSk7dmFyIE10PV8uZ3JvdXBzO2lmKEspe3ZhciBFdD1bUV0uY29uY2F0''@;'; put 'put ''KGZ0LFksQyk7dm9pZCAwIT09TXQmJkV0LnB1c2goTXQpO3ZhciBGdD1TdHJpbmcoYi5hcHBseSh2b2lkIDAsRXQpKX1lbHNlIEZ0PUYoUSxDLFksZnQsTXQsYik7WT49WCYmKHN0Kz1DLnNsaWNlKFgsWSkrRnQsWD1ZK1EubGVuZ3RoKX1yZXR1cm4gc3QrQy5zbGljZShYKX1dO2Z1bmN0aW9u''@;'; put 'put ''IEYoQixiLE8sUyxDLEspe3ZhciBVPU8rQi5sZW5ndGgsWj1TLmxlbmd0aCx0dD1nO3JldHVybiB2b2lkIDAhPT1DJiYoQz1lKEMpLHR0PXYpLHcuY2FsbChLLHR0LGZ1bmN0aW9uKF8sbnQpe3ZhciBzdDtzd2l0Y2gobnQuY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJl''@;'; put 'put ''dHVybiBCO2Nhc2UiYCI6cmV0dXJuIGIuc2xpY2UoMCxPKTtjYXNlIiciOnJldHVybiBiLnNsaWNlKFUpO2Nhc2UiPCI6c3Q9Q1tudC5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgWD0rbnQ7aWYoMD09PVgpcmV0dXJuIF87aWYoWD5aKXt2YXIgVj15KFgvMTApO3JldHVybiAwPT09''@;'; put 'put ''Vj9fOlY8PVo/dm9pZCAwPT09U1tWLTFdP250LmNoYXJBdCgxKTpTW1YtMV0rbnQuY2hhckF0KDEpOl99c3Q9U1tYLTFdfXJldHVybiB2b2lkIDA9PT1zdD8iIjpzdH0pfX0pfSw3NjE0MjooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjcwMDcpLGU9dCgyNzE5NSkscz10KDI3Nzg3''@;'; put 'put ''KTt0KDI4MDgyKSgic2VhcmNoIiwxLGZ1bmN0aW9uKG8sdSxmLGkpe3JldHVybltmdW5jdGlvbih5KXt2YXIgdj1vKHRoaXMpLGc9eT8uW3VdO3JldHVybiB2b2lkIDAhPT1nP2cuY2FsbCh5LHYpOm5ldyBSZWdFeHAoeSlbdV0oU3RyaW5nKHYpKX0sZnVuY3Rpb24ocCl7dmFyIHk9aShmLHAs''@;'; put 'put ''dGhpcyk7aWYoeS5kb25lKXJldHVybiB5LnZhbHVlO3ZhciB2PW4ocCksZz1TdHJpbmcodGhpcykseD12Lmxhc3RJbmRleDtlKHgsMCl8fCh2Lmxhc3RJbmRleD0wKTt2YXIgRT1zKHYsZyk7cmV0dXJuIGUodi5sYXN0SW5kZXgseCl8fCh2Lmxhc3RJbmRleD14KSxudWxsPT09RT8tMTpFLmlu''@;'; put 'put ''ZGV4fV19KX0sNTE4NzY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDU1MzY0KSxlPXQoMjcwMDcpLHM9dCg1ODM2NCksbz10KDc2NzkzKSx1PXQoMTA4NzUpLGY9dCgyNzc4NyksaT10KDIxMTY1KSxwPXQoNzQyNTMpLHk9TWF0aC5taW4sdj1bXS5wdXNoLGc9InNwbGl0Iix4PSJs''@;'; put 'put ''ZW5ndGgiLEU9Imxhc3RJbmRleCIsaj00Mjk0OTY3Mjk1LHc9IXAoZnVuY3Rpb24oKXtSZWdFeHAoaiwieSIpfSk7dCgyODA4MikoInNwbGl0IiwyLGZ1bmN0aW9uKFIsRixCLGIpe3ZhciBPO3JldHVybiBPPSJjIj09ImFiYmMiW2ddKC8oYikqLylbMV18fDQhPSJ0ZXN0IltnXSgvKD86KS8s''@;'; put 'put ''LTEpW3hdfHwyIT0iYWIiW2ddKC8oPzphYikqLylbeF18fDQhPSIuIltnXSgvKC4/KSguPykvKVt4XXx8Ii4iW2ddKC8oKSgpLylbeF0+MXx8IiJbZ10oLy4/LylbeF0/ZnVuY3Rpb24oUyxDKXt2YXIgSz1TdHJpbmcodGhpcyk7aWYodm9pZCAwPT09UyYmMD09PUMpcmV0dXJuW107aWYoIW4o''@;'; put 'put ''UykpcmV0dXJuIEIuY2FsbChLLFMsQyk7Zm9yKHZhciBzdCxYLFYsVT1bXSx0dD0wLF89dm9pZCAwPT09Qz9qOkM+Pj4wLG50PW5ldyBSZWdFeHAoUy5zb3VyY2UsKFMuaWdub3JlQ2FzZT8iaSI6IiIpKyhTLm11bHRpbGluZT8ibSI6IiIpKyhTLnVuaWNvZGU/InUiOiIiKSsoUy5zdGlja3k/''@;'; put 'put ''InkiOiIiKSsiZyIpOyhzdD1pLmNhbGwobnQsSykpJiYhKChYPW50W0VdKT50dCYmKFUucHVzaChLLnNsaWNlKHR0LHN0LmluZGV4KSksc3RbeF0+MSYmc3QuaW5kZXg8S1t4XSYmdi5hcHBseShVLHN0LnNsaWNlKDEpKSxWPXN0WzBdW3hdLHR0PVgsVVt4XT49XykpOyludFtFXT09PXN0Lmlu''@;'; put 'put ''ZGV4JiZudFtFXSsrO3JldHVybiB0dD09PUtbeF0/KFZ8fCFudC50ZXN0KCIiKSkmJlUucHVzaCgiIik6VS5wdXNoKEsuc2xpY2UodHQpKSxVW3hdPl8/VS5zbGljZSgwLF8pOlV9OiIwIltnXSh2b2lkIDAsMClbeF0/ZnVuY3Rpb24oUyxDKXtyZXR1cm4gdm9pZCAwPT09UyYmMD09PUM/W106''@;'; put 'put ''Qi5jYWxsKHRoaXMsUyxDKX06QixbZnVuY3Rpb24oQyxLKXt2YXIgVT1SKHRoaXMpLFo9Qz8uW0ZdO3JldHVybiB2b2lkIDAhPT1aP1ouY2FsbChDLFUsSyk6Ty5jYWxsKFN0cmluZyhVKSxDLEspfSxmdW5jdGlvbihTLEMpe3ZhciBLPWIoTyxTLHRoaXMsQyxPIT09Qik7aWYoSy5kb25lKXJl''@;'; put 'put ''dHVybiBLLnZhbHVlO3ZhciBVPWUoUyksWj1TdHJpbmcodGhpcyksdHQ9cyhVLFJlZ0V4cCksXz1VLnVuaWNvZGUsc3Q9bmV3IHR0KHc/VToiXig/OiIrVS5zb3VyY2UrIikiLChVLmlnbm9yZUNhc2U/ImkiOiIiKSsoVS5tdWx0aWxpbmU/Im0iOiIiKSsoVS51bmljb2RlPyJ1IjoiIikrKHc/''@;'; put 'put ''InkiOiJnIikpLFg9dm9pZCAwPT09Qz9qOkM+Pj4wO2lmKDA9PT1YKXJldHVybltdO2lmKDA9PT1aLmxlbmd0aClyZXR1cm4gbnVsbD09PWYoc3QsWik/W1pdOltdO2Zvcih2YXIgVj0wLFE9MCxZPVtdO1E8Wi5sZW5ndGg7KXtzdC5sYXN0SW5kZXg9dz9ROjA7dmFyIHZ0LGZ0PWYoc3Qsdz9a''@;'; put 'put ''Olouc2xpY2UoUSkpO2lmKG51bGw9PT1mdHx8KHZ0PXkodShzdC5sYXN0SW5kZXgrKHc/MDpRKSksWi5sZW5ndGgpKT09PVYpUT1vKFosUSxfKTtlbHNle2lmKFkucHVzaChaLnNsaWNlKFYsUSkpLFkubGVuZ3RoPT09WClyZXR1cm4gWTtmb3IodmFyIE10PTE7TXQ8PWZ0Lmxlbmd0aC0xO010''@;'; put 'put ''KyspaWYoWS5wdXNoKGZ0W010XSksWS5sZW5ndGg9PT1YKXJldHVybiBZO1E9Vj12dH19cmV0dXJuIFkucHVzaChaLnNsaWNlKFYpKSxZfV19KX0sNjYxMDg6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDc2Nzc0KTt2YXIgbj10KDI3MDA3KSxlPXQoNTMyMTgpLHM9dCg2NzA1Nyksbz0idG9T''@;'; put 'put ''dHJpbmciLHU9Ly4vW29dLGY9ZnVuY3Rpb24oaSl7dCg3NzIzNCkoUmVnRXhwLnByb3RvdHlwZSxvLGksITApfTt0KDc0MjUzKShmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9dS5jYWxsKHtzb3VyY2U6ImEiLGZsYWdzOiJiIn0pfSk/ZihmdW5jdGlvbigpe3ZhciBwPW4odGhpcyk7cmV0dXJu''@;'; put 'put ''Ii8iLmNvbmNhdChwLnNvdXJjZSwiLyIsImZsYWdzImluIHA/cC5mbGFnczohcyYmcCBpbnN0YW5jZW9mIFJlZ0V4cD9lLmNhbGwocCk6dm9pZCAwKX0pOnUubmFtZSE9byYmZihmdW5jdGlvbigpe3JldHVybiB1LmNhbGwodGhpcyl9KX0sOTgxODQ6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgbj10KDk4MjQpLGU9dCgxNjE2KTtjLmV4cG9ydHM9dCg0NTc5NSkoIlNldCIsZnVuY3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHUpe3JldHVybiBuLmRlZihl''@;'; put 'put ''KHRoaXMsIlNldCIpLHU9MD09PXU/MDp1LHUpfX0sbil9LDQwODU2OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgyOTM5NSkoImFuY2hvciIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuKHRoaXMsImEiLCJuYW1lIixzKX19KX0sODA3MDM6KGMsbCx0KT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt0KDI5Mzk1KSgiYmlnIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLCJiaWciLCIiLCIiKX19KX0sOTE1Mzk6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDI5Mzk1KSgiYmxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBuKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LDUyOTI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDI5Mzk1KSgiYm9sZCIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywiYiIsIiIsIiIpfX0pfSwyOTUzOTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBu''@;'; put 'put ''PXQoNDI5ODUpLGU9dCgyNDQ5NikoITEpO24obi5QLCJTdHJpbmciLHtjb2RlUG9pbnRBdDpmdW5jdGlvbihvKXtyZXR1cm4gZSh0aGlzLG8pfX0pfSw5NjYyMDooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDI5ODUpLGU9dCgxMDg3NSkscz10KDQyMDk0KSxvPSJlbmRzV2l0aCIs''@;'; put 'put ''dT0iIltvXTtuKG4uUCtuLkYqdCg4ODUyKShvKSwiU3RyaW5nIix7ZW5kc1dpdGg6ZnVuY3Rpb24oaSl7dmFyIHA9cyh0aGlzLGksbykseT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx2PWUocC5sZW5ndGgpLGc9dm9pZCAwPT09eT92Ok1hdGgubWluKGUoeSksdiks''@;'; put 'put ''eD1TdHJpbmcoaSk7cmV0dXJuIHU/dS5jYWxsKHAseCxnKTpwLnNsaWNlKGcteC5sZW5ndGgsZyk9PT14fX0pfSw0NTE3NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoMjkzOTUpKCJmaXhlZCIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywidHQiLCIiLCIi''@;'; put 'put ''KX19KX0sNzM2OTQ6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDI5Mzk1KSgiZm9udGNvbG9yIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIG4odGhpcywiZm9udCIsImNvbG9yIixzKX19KX0sMzc2NDg6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDI5Mzk1KSgiZm9u''@;'; put 'put ''dHNpemUiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gbih0aGlzLCJmb250Iiwic2l6ZSIscyl9fSl9LDUwMTkxOihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KSxlPXQoOTIzMzcpLHM9U3RyaW5nLmZyb21DaGFyQ29kZSxvPVN0cmluZy5mcm9tQ29kZVBvaW50O24obi5T''@;'; put 'put ''K24uRiooISFvJiYxIT1vLmxlbmd0aCksIlN0cmluZyIse2Zyb21Db2RlUG9pbnQ6ZnVuY3Rpb24oZil7Zm9yKHZhciB2LGk9W10scD1hcmd1bWVudHMubGVuZ3RoLHk9MDtwPnk7KXtpZih2PSthcmd1bWVudHNbeSsrXSxlKHYsMTExNDExMSkhPT12KXRocm93IFJhbmdlRXJyb3IodisiIGlz''@;'; put 'put ''IG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQiKTtpLnB1c2godjw2NTUzNj9zKHYpOnMoNTUyOTYrKCh2LT02NTUzNik+PjEwKSx2JTEwMjQrNTYzMjApKX1yZXR1cm4gaS5qb2luKCIiKX19KX0sNjI4NTA6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyOTg1KSxlPXQoNDIwOTQpLHM9''@;'; put 'put ''ImluY2x1ZGVzIjtuKG4uUCtuLkYqdCg4ODUyKShzKSwiU3RyaW5nIix7aW5jbHVkZXM6ZnVuY3Rpb24odSl7cmV0dXJuISF+ZSh0aGlzLHUscykuaW5kZXhPZih1LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sMjc3OTU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt0KDI5Mzk1KSgiaXRhbGljcyIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywiaSIsIiIsIiIpfX0pfSwzOTExNTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMjQ0OTYpKCEwKTt0KDQyOTIzKShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24oZSl7''@;'; put 'put ''dGhpcy5fdD1TdHJpbmcoZSksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciBvLGU9dGhpcy5fdCxzPXRoaXMuX2k7cmV0dXJuIHM+PWUubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KG89bihlLHMpLHRoaXMuX2krPW8ubGVuZ3RoLHt2YWx1ZTpvLGRvbmU6ITF9KX0pfSw0NTMxOihj''@;'; put 'put ''LGwsdCk9PnsidXNlIHN0cmljdCI7dCgyOTM5NSkoImxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gbih0aGlzLCJhIiwiaHJlZiIscyl9fSl9LDk4MzA2OihjLGwsdCk9Pnt2YXIgbj10KDQyOTg1KSxlPXQoMjIxMTApLHM9dCgxMDg3NSk7bihuLlMsIlN0cmlu''@;'; put 'put ''ZyIse3JhdzpmdW5jdGlvbih1KXtmb3IodmFyIGY9ZSh1LnJhdyksaT1zKGYubGVuZ3RoKSxwPWFyZ3VtZW50cy5sZW5ndGgseT1bXSx2PTA7aT52Oyl5LnB1c2goU3RyaW5nKGZbdisrXSkpLHY8cCYmeS5wdXNoKFN0cmluZyhhcmd1bWVudHNbdl0pKTtyZXR1cm4geS5qb2luKCIiKX19KX0s''@;'; put 'put ''MTA4MjM6KGMsbCx0KT0+e3ZhciBuPXQoNDI5ODUpO24obi5QLCJTdHJpbmciLHtyZXBlYXQ6dCg2ODU5NSl9KX0sMjM2MDU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDI5Mzk1KSgic21hbGwiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInNtYWxsIiwi''@;'; put 'put ''IiwiIil9fSl9LDE3NzMyOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0Mjk4NSksZT10KDEwODc1KSxzPXQoNDIwOTQpLG89InN0YXJ0c1dpdGgiLHU9IiJbb107bihuLlArbi5GKnQoODg1MikobyksIlN0cmluZyIse3N0YXJ0c1dpdGg6ZnVuY3Rpb24oaSl7dmFyIHA9cyh0aGlz''@;'; put 'put ''LGksbykseT1lKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHAubGVuZ3RoKSksdj1TdHJpbmcoaSk7cmV0dXJuIHU/dS5jYWxsKHAsdix5KTpwLnNsaWNlKHkseSt2Lmxlbmd0aCk9PT12fX0pfSw2NzgwOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgy''@;'; put 'put ''OTM5NSkoInN0cmlrZSIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywic3RyaWtlIiwiIiwiIil9fSl9LDY5OTM3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgyOTM5NSkoInN1YiIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhp''@;'; put 'put ''cywic3ViIiwiIiwiIil9fSl9LDEwNTExOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgyOTM5NSkoInN1cCIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywic3VwIiwiIiwiIil9fSl9LDY0NTY0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgyOTU5OSkoInRy''@;'; put 'put ''aW0iLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsMyl9fSl9LDk1NzY3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgzODE2KSxlPXQoNzkxODEpLHM9dCg2NzA1Nyksbz10KDQyOTg1KSx1PXQoNzcyMzQpLGY9dCg4NDcyOCkuS0VZLGk9dCg3NDI1''@;'; put 'put ''MykscD10KDM4MjUpLHk9dCgyMjk0Myksdj10KDkzOTUzKSxnPXQoODYzMTQpLHg9dCgyODc4NyksRT10KDM2MDc0KSxqPXQoNTU0MSksdz10KDQzMDIpLFI9dCgyNzAwNyksRj10KDU1Mjg2KSxCPXQoMjA1MDgpLGI9dCgyMjExMCksTz10KDIxNjg5KSxTPXQoOTA2ODEpLEM9dCg0MjUwMyks''@;'; put 'put ''Sz10KDM5MzI3KSxVPXQoMTg2OTMpLFo9dCg2NDU0OCksdHQ9dCg5OTI3NSksXz10KDQ3MTg0KSxudD1VLmYsc3Q9dHQuZixYPUsuZixWPW4uU3ltYm9sLFE9bi5KU09OLFk9USYmUS5zdHJpbmdpZnksZnQ9InByb3RvdHlwZSIsdnQ9ZygiX2hpZGRlbiIpLE10PWcoInRvUHJpbWl0aXZlIiks''@;'; put 'put ''RXQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsRnQ9cCgic3ltYm9sLXJlZ2lzdHJ5IiksanQ9cCgic3ltYm9scyIpLFh0PXAoIm9wLXN5bWJvbHMiKSxCdD1PYmplY3RbZnRdLFF0PSJmdW5jdGlvbiI9PXR5cGVvZiBWJiYhIVouZixybj1uLlFPYmplY3Qsbm49IXJufHwhcm5bZnRdfHwhcm5b''@;'; put 'put ''ZnRdLmZpbmRDaGlsZCxhbj1zJiZpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPUMoc3Qoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc3QodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24oSSxULEEpe3ZhciBrPW50KEJ0LFQpO2smJmRlbGV0ZSBCdFtUXSxzdChJLFQs''@;'; put 'put ''QSksayYmSSE9PUJ0JiZzdChCdCxULGspfTpzdCxmbj1mdW5jdGlvbihJKXt2YXIgVD1qdFtJXT1DKFZbZnRdKTtyZXR1cm4gVC5faz1JLFR9LG9uPVF0JiYic3ltYm9sIj09dHlwZW9mIFYuaXRlcmF0b3I/ZnVuY3Rpb24oSSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBJfTpmdW5jdGlvbihJ''@;'; put 'put ''KXtyZXR1cm4gSSBpbnN0YW5jZW9mIFZ9LFl0PWZ1bmN0aW9uKFQsQSxrKXtyZXR1cm4gVD09PUJ0JiZZdChYdCxBLGspLFIoVCksQT1PKEEsITApLFIoayksZShqdCxBKT8oay5lbnVtZXJhYmxlPyhlKFQsdnQpJiZUW3Z0XVtBXSYmKFRbdnRdW0FdPSExKSxrPUMoayx7ZW51bWVyYWJsZTpT''@;'; put 'put ''KDAsITEpfSkpOihlKFQsdnQpfHxzdChULHZ0LFMoMSx7fSkpLFRbdnRdW0FdPSEwKSxhbihULEEsaykpOnN0KFQsQSxrKX0sWnQ9ZnVuY3Rpb24oVCxBKXtSKFQpO2Zvcih2YXIgb3Qsaz1qKEE9YihBKSksSj0wLHo9ay5sZW5ndGg7ej5KOylZdChULG90PWtbSisrXSxBW290XSk7cmV0dXJu''@;'; put 'put ''IFR9LGxuPWZ1bmN0aW9uKFQpe3ZhciBBPUV0LmNhbGwodGhpcyxUPU8oVCwhMCkpO3JldHVybiEodGhpcz09PUJ0JiZlKGp0LFQpJiYhZShYdCxUKSkmJighKEF8fCFlKHRoaXMsVCl8fCFlKGp0LFQpfHxlKHRoaXMsdnQpJiZ0aGlzW3Z0XVtUXSl8fEEpfSxkPWZ1bmN0aW9uKFQsQSl7aWYo''@;'; put 'put ''VD1iKFQpLEE9TyhBLCEwKSxUIT09QnR8fCFlKGp0LEEpfHxlKFh0LEEpKXt2YXIgaz1udChULEEpO3JldHVybiBrJiZlKGp0LEEpJiYhKGUoVCx2dCkmJlRbdnRdW0FdKSYmKGsuZW51bWVyYWJsZT0hMCksa319LHI9ZnVuY3Rpb24oVCl7Zm9yKHZhciB6LEE9WChiKFQpKSxrPVtdLEo9MDtB''@;'; put 'put ''Lmxlbmd0aD5KOykhZShqdCx6PUFbSisrXSkmJnohPXZ0JiZ6IT1mJiZrLnB1c2goeik7cmV0dXJuIGt9LGE9ZnVuY3Rpb24oVCl7Zm9yKHZhciBvdCxBPVQ9PT1CdCxrPVgoQT9YdDpiKFQpKSxKPVtdLHo9MDtrLmxlbmd0aD56OyllKGp0LG90PWtbeisrXSkmJighQXx8ZShCdCxvdCkpJiZK''@;'; put 'put ''LnB1c2goanRbb3RdKTtyZXR1cm4gSn07UXR8fCh1KChWPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIFYpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhIik7dmFyIFQ9dihhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCksQT1m''@;'; put 'put ''dW5jdGlvbihrKXt0aGlzPT09QnQmJkEuY2FsbChYdCxrKSxlKHRoaXMsdnQpJiZlKHRoaXNbdnRdLFQpJiYodGhpc1t2dF1bVF09ITEpLGFuKHRoaXMsVCxTKDEsaykpfTtyZXR1cm4gcyYmbm4mJmFuKEJ0LFQse2NvbmZpZ3VyYWJsZTohMCxzZXQ6QX0pLGZuKFQpfSlbZnRdLCJ0b1N0cmlu''@;'; put 'put ''ZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLFUuZj1kLHR0LmY9WXQsdCgyMDYxNikuZj1LLmY9cix0KDE0NjgyKS5mPWxuLFouZj1hLHMmJiF0KDQ0NjEpJiZ1KEJ0LCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsbG4sITApLHguZj1mdW5jdGlvbihJKXtyZXR1cm4gZm4oZyhJKSl9KSxv''@;'; put 'put ''KG8uRytvLlcrby5GKiFRdCx7U3ltYm9sOlZ9KTtmb3IodmFyIG09Imhhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzIi5zcGxpdCgiLCIpLEQ9''@;'; put 'put ''MDttLmxlbmd0aD5EOylnKG1bRCsrXSk7Zm9yKHZhciAkPV8oZy5zdG9yZSksaD0wOyQubGVuZ3RoPmg7KUUoJFtoKytdKTtvKG8uUytvLkYqIVF0LCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24oSSl7cmV0dXJuIGUoRnQsSSs9IiIpP0Z0W0ldOkZ0W0ldPVYoSSl9LGtleUZvcjpmdW5jdGlvbihU''@;'; put 'put ''KXtpZighb24oVCkpdGhyb3cgVHlwZUVycm9yKFQrIiBpcyBub3QgYSBzeW1ib2whIik7Zm9yKHZhciBBIGluIEZ0KWlmKEZ0W0FdPT09VClyZXR1cm4gQX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7bm49ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe25uPSExfX0pLG8oby5TK28uRiohUXQsIk9i''@;'; put 'put ''amVjdCIse2NyZWF0ZTpmdW5jdGlvbihULEEpe3JldHVybiB2b2lkIDA9PT1BP0MoVCk6WnQoQyhUKSxBKX0sZGVmaW5lUHJvcGVydHk6WXQsZGVmaW5lUHJvcGVydGllczpadCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZCxnZXRPd25Qcm9wZXJ0eU5hbWVzOnIsZ2V0T3duUHJvcGVydHlT''@;'; put 'put ''eW1ib2xzOmF9KTt2YXIgUD1pKGZ1bmN0aW9uKCl7Wi5mKDEpfSk7byhvLlMrby5GKlAsIk9iamVjdCIse2dldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbihUKXtyZXR1cm4gWi5mKEIoVCkpfX0pLFEmJm8oby5TK28uRiooIVF0fHxpKGZ1bmN0aW9uKCl7dmFyIEk9VigpO3JldHVybiJb''@;'; put 'put ''bnVsbF0iIT1ZKFtJXSl8fCJ7fSIhPVkoe2E6SX0pfHwie30iIT1ZKE9iamVjdChJKSl9KSksIkpTT04iLHtzdHJpbmdpZnk6ZnVuY3Rpb24oVCl7Zm9yKHZhciBKLHosQT1bVF0saz0xO2FyZ3VtZW50cy5sZW5ndGg+azspQS5wdXNoKGFyZ3VtZW50c1trKytdKTtpZih6PUo9QVsxXSwoRihK''@;'; put 'put ''KXx8dm9pZCAwIT09VCkmJiFvbihUKSlyZXR1cm4gdyhKKXx8KEo9ZnVuY3Rpb24ob3QsY3Qpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB6JiYoY3Q9ei5jYWxsKHRoaXMsb3QsY3QpKSwhb24oY3QpKXJldHVybiBjdH0pLEFbMV09SixZLmFwcGx5KFEsQSl9fSksVltmdF1bTXRdfHx0KDg3NzI4''@;'; put 'put ''KShWW2Z0XSxNdCxWW2Z0XS52YWx1ZU9mKSx5KFYsIlN5bWJvbCIpLHkoTWF0aCwiTWF0aCIsITApLHkobi5KU09OLCJKU09OIiwhMCl9LDMwMTQ3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIHcsbj10KDM4MTYpLGU9dCgxMDA1MCkoMCkscz10KDc3MjM0KSxvPXQoODQ3MjgpLHU9dCgz''@;'; put 'put ''NTM0NSksZj10KDIzNjU3KSxpPXQoNTUyODYpLHA9dCgxNjE2KSx5PXQoMTYxNiksdj0hbi5BY3RpdmVYT2JqZWN0JiYiQWN0aXZlWE9iamVjdCJpbiBuLGc9IldlYWtNYXAiLHg9by5nZXRXZWFrLEU9T2JqZWN0LmlzRXh0ZW5zaWJsZSxqPWYudWZzdG9yZSxSPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbigpe3JldHVybiBiKHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sRj17Z2V0OmZ1bmN0aW9uKE8pe2lmKGkoTykpe3ZhciBTPXgoTyk7cmV0dXJuITA9PT1TP2oocCh0aGlzLGcpKS5nZXQoTyk6Uz9TW3RoaXMuX2ldOnZvaWQgMH19LHNl''@;'; put 'put ''dDpmdW5jdGlvbihPLFMpe3JldHVybiBmLmRlZihwKHRoaXMsZyksTyxTKX19LEI9Yy5leHBvcnRzPXQoNDU3OTUpKGcsUixGLGYsITAsITApO3kmJnYmJih1KCh3PWYuZ2V0Q29uc3RydWN0b3IoUixnKSkucHJvdG90eXBlLEYpLG8uTkVFRD0hMCxlKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwi''@;'; put 'put ''c2V0Il0sZnVuY3Rpb24oYil7dmFyIE89Qi5wcm90b3R5cGUsUz1PW2JdO3MoTyxiLGZ1bmN0aW9uKEMsSyl7aWYoaShDKSYmIUUoQykpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyB3KTt2YXIgVT10aGlzLl9mW2JdKEMsSyk7cmV0dXJuInNldCI9PWI/dGhpczpVfXJldHVybiBTLmNhbGwodGhp''@;'; put 'put ''cyxDLEspfSl9KSl9LDUzMzY0OihjLGwsdCk9Pnt2YXIgbj10KDUwMTMzKSxlPXQoMjcwMDcpLHM9bi5rZXksbz1uLnNldDtuLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24oZixpLHAseSl7byhmLGksZShwKSxzKHkpKX19KX0sNTE0MzI6KGMsbCx0KT0+e3ZhciBuPXQoNTAxMzMpLGU9''@;'; put 'put ''dCgyNzAwNykscz1uLmtleSxvPW4ubWFwLHU9bi5zdG9yZTtuLmV4cCh7ZGVsZXRlTWV0YWRhdGE6ZnVuY3Rpb24oaSxwKXt2YXIgeT1hcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnMoYXJndW1lbnRzWzJdKSx2PW8oZShwKSx5LCExKTtpZih2b2lkIDA9PT12fHwhdi5kZWxldGUoaSkpcmV0''@;'; put 'put ''dXJuITE7aWYodi5zaXplKXJldHVybiEwO3ZhciBnPXUuZ2V0KHApO3JldHVybiBnLmRlbGV0ZSh5KSwhIWcuc2l6ZXx8dS5kZWxldGUocCl9fSl9LDg0NDE2OihjLGwsdCk9Pnt2YXIgbj10KDk4MTg0KSxlPXQoOTQ5MCkscz10KDUwMTMzKSxvPXQoMjcwMDcpLHU9dCg0NjgpLGY9cy5rZXlz''@;'; put 'put ''LGk9cy5rZXkscD1mdW5jdGlvbih5LHYpe3ZhciBnPWYoeSx2KSx4PXUoeSk7aWYobnVsbD09PXgpcmV0dXJuIGc7dmFyIEU9cCh4LHYpO3JldHVybiBFLmxlbmd0aD9nLmxlbmd0aD9lKG5ldyBuKGcuY29uY2F0KEUpKSk6RTpnfTtzLmV4cCh7Z2V0TWV0YWRhdGFLZXlzOmZ1bmN0aW9uKHYp''@;'; put 'put ''e3JldHVybiBwKG8odiksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDppKGFyZ3VtZW50c1sxXSkpfX0pfSwyNjU2MjooYyxsLHQpPT57dmFyIG49dCg1MDEzMyksZT10KDI3MDA3KSxzPXQoNDY4KSxvPW4uaGFzLHU9bi5nZXQsZj1uLmtleSxpPWZ1bmN0aW9uKHAseSx2KXtpZihvKHAseSx2''@;'; put 'put ''KSlyZXR1cm4gdShwLHksdik7dmFyIHg9cyh5KTtyZXR1cm4gbnVsbCE9PXg/aShwLHgsdik6dm9pZCAwfTtuLmV4cCh7Z2V0TWV0YWRhdGE6ZnVuY3Rpb24oeSx2KXtyZXR1cm4gaSh5LGUodiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpmKGFyZ3VtZW50c1syXSkpfX0pfSwzMjIxMzoo''@;'; put 'put ''YyxsLHQpPT57dmFyIG49dCg1MDEzMyksZT10KDI3MDA3KSxzPW4ua2V5cyxvPW4ua2V5O24uZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24oZil7cmV0dXJuIHMoZShmKSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOm8oYXJndW1lbnRzWzFdKSl9fSl9LDk4NjgxOihjLGwsdCk9''@;'; put 'put ''Pnt2YXIgbj10KDUwMTMzKSxlPXQoMjcwMDcpLHM9bi5nZXQsbz1uLmtleTtuLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24oZixpKXtyZXR1cm4gcyhmLGUoaSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpvKGFyZ3VtZW50c1syXSkpfX0pfSw2MzQ3MTooYyxsLHQpPT57dmFyIG49''@;'; put 'put ''dCg1MDEzMyksZT10KDI3MDA3KSxzPXQoNDY4KSxvPW4uaGFzLHU9bi5rZXksZj1mdW5jdGlvbihpLHAseSl7aWYobyhpLHAseSkpcmV0dXJuITA7dmFyIGc9cyhwKTtyZXR1cm4gbnVsbCE9PWcmJmYoaSxnLHkpfTtuLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24ocCx5KXtyZXR1cm4gZihw''@;'; put 'put ''LGUoeSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50c1syXSkpfX0pfSw0MzI5OihjLGwsdCk9Pnt2YXIgbj10KDUwMTMzKSxlPXQoMjcwMDcpLHM9bi5oYXMsbz1uLmtleTtuLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24oZixpKXtyZXR1cm4gcyhmLGUoaSksYXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpvKGFyZ3VtZW50c1syXSkpfX0pfSwyNTE1OTooYyxsLHQpPT57dmFyIG49dCg1MDEzMyksZT10KDI3MDA3KSxzPXQoMjQ5NjMpLG89bi5rZXksdT1uLnNldDtuLmV4cCh7bWV0YWRhdGE6ZnVuY3Rpb24oaSxwKXtyZXR1cm4gZnVuY3Rpb24odixnKXt1''@;'; put 'put ''KGkscCwodm9pZCAwIT09Zz9lOnMpKHYpLG8oZykpfX19KX0sOTExODE6KGMsbCx0KT0+e2Zvcih2YXIgbj10KDU2OTk3KSxlPXQoNDcxODQpLHM9dCg3NzIzNCksbz10KDM4MTYpLHU9dCg4NzcyOCksZj10KDg3MjM0KSxpPXQoODYzMTQpLHA9aSgiaXRlcmF0b3IiKSx5PWkoInRvU3RyaW5n''@;'; put 'put ''VGFnIiksdj1mLkFycmF5LGc9e0NTU1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZp''@;'; put 'put ''bGVMaXN0OiExLEhUTUxBbGxDb2xsZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDoh''@;'; put 'put ''MSxQbHVnaW46ITEsUGx1Z2luQXJyYXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlz''@;'; put 'put ''dDohMCxUZXh0VHJhY2tDdWVMaXN0OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSx4PWUoZyksRT0wO0U8eC5sZW5ndGg7RSsrKXt2YXIgQixqPXhbRV0sdz1nW2pdLFI9b1tqXSxGPVImJlIucHJvdG90eXBlO2lmKEYmJihGW3BdfHx1KEYscCx2KSxGW3ldfHx1KEYseSxqKSxm''@;'; put 'put ''W2pdPXYsdykpZm9yKEIgaW4gbilGW0JdfHxzKEYsQixuW0JdLCEwKX19LDEyMDMwOmM9PnsidXNlIHN0cmljdCI7Yy5leHBvcnRzPUpTT04ucGFyc2UoJ3sibG9jYWxlIjoiZW4iLCJkYXRlIjp7ImNhIjpbImdyZWdvcnkiLCJidWRkaGlzdCIsImNoaW5lc2UiLCJjb3B0aWMiLCJkYW5naSIs''@;'; put 'put ''ImV0aGlvYWEiLCJldGhpb3BpYyIsImdlbmVyaWMiLCJoZWJyZXciLCJpbmRpYW4iLCJpc2xhbWljIiwiaXNsYW1pY2MiLCJqYXBhbmVzZSIsInBlcnNpYW4iLCJyb2MiXSwiaG91ck5vMCI6dHJ1ZSwiaG91cjEyIjp0cnVlLCJmb3JtYXRzIjp7InNob3J0IjoiezF9LCB7MH0iLCJtZWRpdW0i''@;'; put 'put ''OiJ7MX0sIHswfSIsImZ1bGwiOiJ7MX0gXCdhdFwnIHswfSIsImxvbmciOiJ7MX0gXCdhdFwnIHswfSIsImF2YWlsYWJsZUZvcm1hdHMiOnsiZCI6ImQiLCJFIjoiY2NjIiwiRWQiOiJkIEUiLCJFaG0iOiJFIGg6bW0gYSIsIkVIbSI6IkUgSEg6bW0iLCJFaG1zIjoiRSBoOm1tOnNzIGEiLCJF''@;'; put 'put ''SG1zIjoiRSBISDptbTpzcyIsIkd5IjoieSBHIiwiR3lNTU0iOiJNTU0geSBHIiwiR3lNTU1kIjoiTU1NIGQsIHkgRyIsIkd5TU1NRWQiOiJFLCBNTU0gZCwgeSBHIiwiaCI6ImggYSIsIkgiOiJISCIsImhtIjoiaDptbSBhIiwiSG0iOiJISDptbSIsImhtcyI6Img6bW06c3MgYSIsIkhtcyI6''@;'; put 'put ''IkhIOm1tOnNzIiwiaG1zdiI6Img6bW06c3MgYSB2IiwiSG1zdiI6IkhIOm1tOnNzIHYiLCJobXYiOiJoOm1tIGEgdiIsIkhtdiI6IkhIOm1tIHYiLCJNIjoiTCIsIk1kIjoiTS9kIiwiTUVkIjoiRSwgTS9kIiwiTU1NIjoiTExMIiwiTU1NZCI6Ik1NTSBkIiwiTU1NRWQiOiJFLCBNTU0gZCIs''@;'; put 'put ''Ik1NTU1kIjoiTU1NTSBkIiwibXMiOiJtbTpzcyIsInkiOiJ5IiwieU0iOiJNL3kiLCJ5TWQiOiJNL2QveSIsInlNRWQiOiJFLCBNL2QveSIsInlNTU0iOiJNTU0geSIsInlNTU1kIjoiTU1NIGQsIHkiLCJ5TU1NRWQiOiJFLCBNTU0gZCwgeSIsInlNTU1NIjoiTU1NTSB5IiwieVFRUSI6IlFR''@;'; put 'put ''USB5IiwieVFRUVEiOiJRUVFRIHkifSwiZGF0ZUZvcm1hdHMiOnsieU1NTU1FRUVFZCI6IkVFRUUsIE1NTU0gZCwgeSIsInlNTU1NZCI6Ik1NTU0gZCwgeSIsInlNTU1kIjoiTU1NIGQsIHkiLCJ5TWQiOiJNL2QveXkifSwidGltZUZvcm1hdHMiOnsiaG1tc3N6enp6IjoiaDptbTpzcyBhIHp6''@;'; put 'put ''enoiLCJobXN6IjoiaDptbTpzcyBhIHoiLCJobXMiOiJoOm1tOnNzIGEiLCJobSI6Img6bW0gYSJ9fSwiY2FsZW5kYXJzIjp7ImJ1ZGRoaXN0Ijp7Im1vbnRocyI6eyJuYXJyb3ciOlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sInNob3J0IjpbIkph''@;'; put 'put ''biIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIi''@;'; put 'put ''LCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRu''@;'; put 'put ''ZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJCRSJdLCJzaG9ydCI6WyJCRSJdLCJsb25nIjpbIkJFIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJjaGluZXNlIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIs''@;'; put 'put ''IjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk1vMSIsIk1vMiIsIk1vMyIsIk1vNCIsIk1vNSIsIk1vNiIsIk1vNyIsIk1vOCIsIk1vOSIsIk1vMTAiLCJNbzExIiwiTW8xMiJdLCJsb25nIjpbIk1vbnRoMSIsIk1vbnRoMiIsIk1vbnRo''@;'; put 'put ''MyIsIk1vbnRoNCIsIk1vbnRoNSIsIk1vbnRoNiIsIk1vbnRoNyIsIk1vbnRoOCIsIk1vbnRoOSIsIk1vbnRoMTAiLCJNb250aDExIiwiTW9udGgxMiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJX''@;'; put 'put ''ZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiY29wdGljIjp7Im1vbnRocyI6eyJuYXJy''@;'; put 'put ''b3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSwic2hvcnQiOlsiVG91dCIsIkJhYmEiLCJIYXRvciIsIktpYWhrIiwiVG9iYSIsIkFtc2hpciIsIkJhcmFtaGF0IiwiQmFyYW1vdWRhIiwiQmFzaGFucyIsIlBhb25hIiwiRXBlcCIs''@;'; put 'put ''Ik1lc3JhIiwiTmFzaWUiXSwibG9uZyI6WyJUb3V0IiwiQmFiYSIsIkhhdG9yIiwiS2lhaGsiLCJUb2JhIiwiQW1zaGlyIiwiQmFyYW1oYXQiLCJCYXJhbW91ZGEiLCJCYXNoYW5zIiwiUGFvbmEiLCJFcGVwIiwiTWVzcmEiLCJOYXNpZSJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJU''@;'; put 'put ''IiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJy''@;'; put 'put ''b3ciOlsiRVJBMCIsIkVSQTEiXSwic2hvcnQiOlsiRVJBMCIsIkVSQTEiXSwibG9uZyI6WyJFUkEwIiwiRVJBMSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZGFuZ2kiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIs''@;'; put 'put ''IjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiTW8xIiwiTW8yIiwiTW8zIiwiTW80IiwiTW81IiwiTW82IiwiTW83IiwiTW84IiwiTW85IiwiTW8xMCIsIk1vMTEiLCJNbzEyIl0sImxvbmciOlsiTW9udGgxIiwiTW9udGgyIiwiTW9udGgzIiwiTW9udGg0IiwiTW9udGg1IiwiTW9udGg2''@;'; put 'put ''IiwiTW9udGg3IiwiTW9udGg4IiwiTW9udGg5IiwiTW9udGgxMCIsIk1vbnRoMTEiLCJNb250aDEyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25n''@;'; put 'put ''IjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJldGhpb3BpYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1Iiwi''@;'; put 'put ''NiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIl0sInNob3J0IjpbIk1lc2tlcmVtIiwiVGVrZW10IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFzc2UiLCJQYWd1bWVuIl0sImxv''@;'; put 'put ''bmciOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIs''@;'; put 'put ''IlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkVSQTAiLCJF''@;'; put 'put ''UkExIl0sInNob3J0IjpbIkVSQTAiLCJFUkExIl0sImxvbmciOlsiRVJBMCIsIkVSQTEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImV0aGlvYWEiOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjEx''@;'; put 'put ''IiwiMTIiLCIxMyJdLCJzaG9ydCI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdLCJsb25nIjpbIk1lc2tlcmVtIiwiVGVrZW10''@;'; put 'put ''IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFzc2UiLCJQYWd1bWVuIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1v''@;'; put 'put ''biIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJFUkEwIl0sInNob3J0IjpbIkVSQTAiXSwibG9uZyI6''@;'; put 'put ''WyJFUkEwIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJnZW5lcmljIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk0wMSIsIk0wMiIsIk0wMyIsIk0wNCIsIk0w''@;'; put 'put ''NSIsIk0wNiIsIk0wNyIsIk0wOCIsIk0wOSIsIk0xMCIsIk0xMSIsIk0xMiJdLCJsb25nIjpbIk0wMSIsIk0wMiIsIk0wMyIsIk0wNCIsIk0wNSIsIk0wNiIsIk0wNyIsIk0wOCIsIk0wOSIsIk0xMCIsIk0xMSIsIk0xMiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQi''@;'; put 'put ''LCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiRVJB''@;'; put 'put ''MCIsIkVSQTEiXSwic2hvcnQiOlsiRVJBMCIsIkVSQTEiXSwibG9uZyI6WyJFUkEwIiwiRVJBMSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZ3JlZ29yeSI6eyJtb250aHMiOnsibmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8i''@;'; put 'put ''LCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3Qi''@;'; put 'put ''LCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJN''@;'; put 'put ''b25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQiIsIkEiLCJCQ0UiLCJDRSJdLCJzaG9ydCI6WyJCQyIsIkFEIiwiQkNFIiwiQ0UiXSwibG9uZyI6WyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21p''@;'; put 'put ''bmkiLCJCZWZvcmUgQ29tbW9uIEVyYSIsIkNvbW1vbiBFcmEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImhlYnJldyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIiwiNyJd''@;'; put 'put ''LCJzaG9ydCI6WyJUaXNocmkiLCJIZXNodmFuIiwiS2lzbGV2IiwiVGV2ZXQiLCJTaGV2YXQiLCJBZGFyIEkiLCJBZGFyIiwiTmlzYW4iLCJJeWFyIiwiU2l2YW4iLCJUYW11eiIsIkF2IiwiRWx1bCIsIkFkYXIgSUkiXSwibG9uZyI6WyJUaXNocmkiLCJIZXNodmFuIiwiS2lzbGV2IiwiVGV2''@;'; put 'put ''ZXQiLCJTaGV2YXQiLCJBZGFyIEkiLCJBZGFyIiwiTmlzYW4iLCJJeWFyIiwiU2l2YW4iLCJUYW11eiIsIkF2IiwiRWx1bCIsIkFkYXIgSUkiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwi''@;'; put 'put ''VGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkFNIl0sInNob3J0IjpbIkFNIl0sImxvbmciOlsiQU0iXX0sImRheVBlcmlvZHMi''@;'; put 'put ''OnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImluZGlhbiI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJDaGFpdHJhIiwiVmFpc2FraGEiLCJKeWFpc3RoYSIsIkFzYWRoYSIsIlNyYXZhbmEi''@;'; put 'put ''LCJCaGFkcmEiLCJBc3ZpbmEiLCJLYXJ0aWthIiwiQWdyYWhheWFuYSIsIlBhdXNhIiwiTWFnaGEiLCJQaGFsZ3VuYSJdLCJsb25nIjpbIkNoYWl0cmEiLCJWYWlzYWtoYSIsIkp5YWlzdGhhIiwiQXNhZGhhIiwiU3JhdmFuYSIsIkJoYWRyYSIsIkFzdmluYSIsIkthcnRpa2EiLCJBZ3JhaGF5''@;'; put 'put ''YW5hIiwiUGF1c2EiLCJNYWdoYSIsIlBoYWxndW5hIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNk''@;'; put 'put ''YXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJTYWthIl0sInNob3J0IjpbIlNha2EiXSwibG9uZyI6WyJTYWthIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJpc2xhbWljIjp7Im1vbnRocyI6''@;'; put 'put ''eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk11aC4iLCJTYWYuIiwiUmFiLiBJIiwiUmFiLiBJSSIsIkp1bS4gSSIsIkp1bS4gSUkiLCJSYWouIiwiU2hhLiIsIlJhbS4iLCJTaGF3LiIsIkRodVx1MDJiYmwt''@;'; put 'put ''US4iLCJEaHVcdTAyYmJsLUguIl0sImxvbmciOlsiTXVoYXJyYW0iLCJTYWZhciIsIlJhYmlcdTAyYmIgSSIsIlJhYmlcdTAyYmIgSUkiLCJKdW1hZGEgSSIsIkp1bWFkYSBJSSIsIlJhamFiIiwiU2hhXHUwMmJiYmFuIiwiUmFtYWRhbiIsIlNoYXd3YWwiLCJEaHVcdTAyYmJsLVFpXHUwMmJi''@;'; put 'put ''ZGFoIiwiRGh1XHUwMmJibC1IaWpqYWgiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldl''@;'; put 'put ''ZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkFIIl0sInNob3J0IjpbIkFIIl0sImxvbmciOlsiQUgiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImlzbGFtaWNjIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsi''@;'; put 'put ''MSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk11aC4iLCJTYWYuIiwiUmFiLiBJIiwiUmFiLiBJSSIsIkp1bS4gSSIsIkp1bS4gSUkiLCJSYWouIiwiU2hhLiIsIlJhbS4iLCJTaGF3LiIsIkRodVx1MDJiYmwtUS4iLCJEaHVcdTAy''@;'; put 'put ''YmJsLUguIl0sImxvbmciOlsiTXVoYXJyYW0iLCJTYWZhciIsIlJhYmlcdTAyYmIgSSIsIlJhYmlcdTAyYmIgSUkiLCJKdW1hZGEgSSIsIkp1bWFkYSBJSSIsIlJhamFiIiwiU2hhXHUwMmJiYmFuIiwiUmFtYWRhbiIsIlNoYXd3YWwiLCJEaHVcdTAyYmJsLVFpXHUwMmJiZGFoIiwiRGh1XHUw''@;'; put 'put ''MmJibC1IaWpqYWgiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRo''@;'; put 'put ''dXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkFIIl0sInNob3J0IjpbIkFIIl0sImxvbmciOlsiQUgiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImphcGFuZXNlIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiSiIsIkYiLCJNIiwi''@;'; put 'put ''QSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sInNob3J0IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJN''@;'; put 'put ''YXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIs''@;'; put 'put ''IlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJUYWlrYSAoNjQ1XHUyMDEzNjUwKSIsIkhha3VjaGkgKDY1MFx1MjAxMzY3MSkiLCJIYWt1aFx1MDE0''@;'; put 'put ''ZCAoNjcyXHUyMDEzNjg2KSIsIlNodWNoXHUwMTRkICg2ODZcdTIwMTM3MDEpIiwiVGFpaFx1MDE0ZCAoNzAxXHUyMDEzNzA0KSIsIktlaXVuICg3MDRcdTIwMTM3MDgpIiwiV2FkXHUwMTRkICg3MDhcdTIwMTM3MTUpIiwiUmVpa2kgKDcxNVx1MjAxMzcxNykiLCJZXHUwMTRkclx1MDE0ZCAo''@;'; put 'put ''NzE3XHUyMDEzNzI0KSIsIkppbmtpICg3MjRcdTIwMTM3MjkpIiwiVGVucHlcdTAxNGQgKDcyOVx1MjAxMzc0OSkiLCJUZW5weVx1MDE0ZC1rYW1wXHUwMTRkICg3NDktNzQ5KSIsIlRlbnB5XHUwMTRkLXNoXHUwMTRkaFx1MDE0ZCAoNzQ5LTc1NykiLCJUZW5weVx1MDE0ZC1oXHUwMTRkamkg''@;'; put 'put ''KDc1Ny03NjUpIiwiVGVucHlcdTAxNGQtamluZ28gKDc2NS03NjcpIiwiSmluZ28ta2VpdW4gKDc2Ny03NzApIiwiSFx1MDE0ZGtpICg3NzBcdTIwMTM3ODApIiwiVGVuLVx1MDE0ZCAoNzgxLTc4MikiLCJFbnJ5YWt1ICg3ODJcdTIwMTM4MDYpIiwiRGFpZFx1MDE0ZCAoODA2XHUyMDEzODEw''@;'; put 'put ''KSIsIktcdTAxNGRuaW4gKDgxMFx1MjAxMzgyNCkiLCJUZW5jaFx1MDE0ZCAoODI0XHUyMDEzODM0KSIsIkpcdTAxNGR3YSAoODM0XHUyMDEzODQ4KSIsIkthalx1MDE0ZCAoODQ4XHUyMDEzODUxKSIsIk5pbmp1ICg4NTFcdTIwMTM4NTQpIiwiU2Fpa1x1MDE0ZCAoODU0XHUyMDEzODU3KSIs''@;'; put 'put ''IlRlbi1hbiAoODU3LTg1OSkiLCJKXHUwMTRkZ2FuICg4NTlcdTIwMTM4NzcpIiwiR2FuZ3lcdTAxNGQgKDg3N1x1MjAxMzg4NSkiLCJOaW5uYSAoODg1XHUyMDEzODg5KSIsIkthbnB5XHUwMTRkICg4ODlcdTIwMTM4OTgpIiwiU2hcdTAxNGR0YWkgKDg5OFx1MjAxMzkwMSkiLCJFbmdpICg5''@;'; put 'put ''MDFcdTIwMTM5MjMpIiwiRW5jaFx1MDE0ZCAoOTIzXHUyMDEzOTMxKSIsIkpcdTAxNGRoZWkgKDkzMVx1MjAxMzkzOCkiLCJUZW5neVx1MDE0ZCAoOTM4XHUyMDEzOTQ3KSIsIlRlbnJ5YWt1ICg5NDdcdTIwMTM5NTcpIiwiVGVudG9rdSAoOTU3XHUyMDEzOTYxKSIsIlx1MDE0Y3dhICg5NjFc''@;'; put 'put ''dTIwMTM5NjQpIiwiS1x1MDE0ZGhcdTAxNGQgKDk2NFx1MjAxMzk2OCkiLCJBbm5hICg5NjhcdTIwMTM5NzApIiwiVGVucm9rdSAoOTcwXHUyMDEzOTczKSIsIlRlblx1MjAxOWVuICg5NzNcdTIwMTM5NzYpIiwiSlx1MDE0ZGdlbiAoOTc2XHUyMDEzOTc4KSIsIlRlbmdlbiAoOTc4XHUyMDEz''@;'; put 'put ''OTgzKSIsIkVpa2FuICg5ODNcdTIwMTM5ODUpIiwiS2FubmEgKDk4NVx1MjAxMzk4NykiLCJFaWVuICg5ODdcdTIwMTM5ODkpIiwiRWlzbyAoOTg5XHUyMDEzOTkwKSIsIlNoXHUwMTRkcnlha3UgKDk5MFx1MjAxMzk5NSkiLCJDaFx1MDE0ZHRva3UgKDk5NVx1MjAxMzk5OSkiLCJDaFx1MDE0''@;'; put 'put ''ZGhcdTAxNGQgKDk5OVx1MjAxMzEwMDQpIiwiS2Fua1x1MDE0ZCAoMTAwNFx1MjAxMzEwMTIpIiwiQ2hcdTAxNGR3YSAoMTAxMlx1MjAxMzEwMTcpIiwiS2FubmluICgxMDE3XHUyMDEzMTAyMSkiLCJKaWFuICgxMDIxXHUyMDEzMTAyNCkiLCJNYW5qdSAoMTAyNFx1MjAxMzEwMjgpIiwiQ2hc''@;'; put 'put ''dTAxNGRnZW4gKDEwMjhcdTIwMTMxMDM3KSIsIkNoXHUwMTRkcnlha3UgKDEwMzdcdTIwMTMxMDQwKSIsIkNoXHUwMTRka3lcdTAxNmIgKDEwNDBcdTIwMTMxMDQ0KSIsIkthbnRva3UgKDEwNDRcdTIwMTMxMDQ2KSIsIkVpc2hcdTAxNGQgKDEwNDZcdTIwMTMxMDUzKSIsIlRlbmdpICgxMDUz''@;'; put 'put ''XHUyMDEzMTA1OCkiLCJLXHUwMTRkaGVpICgxMDU4XHUyMDEzMTA2NSkiLCJKaXJ5YWt1ICgxMDY1XHUyMDEzMTA2OSkiLCJFbmt5XHUwMTZiICgxMDY5XHUyMDEzMTA3NCkiLCJTaFx1MDE0ZGhvICgxMDc0XHUyMDEzMTA3NykiLCJTaFx1MDE0ZHJ5YWt1ICgxMDc3XHUyMDEzMTA4MSkiLCJF''@;'; put 'put ''aWhcdTAxNGQgKDEwODFcdTIwMTMxMDg0KSIsIlx1MDE0Y3Rva3UgKDEwODRcdTIwMTMxMDg3KSIsIkthbmppICgxMDg3XHUyMDEzMTA5NCkiLCJLYWhcdTAxNGQgKDEwOTRcdTIwMTMxMDk2KSIsIkVpY2hcdTAxNGQgKDEwOTZcdTIwMTMxMDk3KSIsIkpcdTAxNGR0b2t1ICgxMDk3XHUyMDEz''@;'; put 'put ''MTA5OSkiLCJLXHUwMTRkd2EgKDEwOTlcdTIwMTMxMTA0KSIsIkNoXHUwMTRkamkgKDExMDRcdTIwMTMxMTA2KSIsIkthc2hcdTAxNGQgKDExMDZcdTIwMTMxMTA4KSIsIlRlbm5pbiAoMTEwOFx1MjAxMzExMTApIiwiVGVuLWVpICgxMTEwLTExMTMpIiwiRWlreVx1MDE2YiAoMTExM1x1MjAx''@;'; put 'put ''MzExMTgpIiwiR2VuXHUyMDE5ZWkgKDExMThcdTIwMTMxMTIwKSIsIkhcdTAxNGRhbiAoMTEyMFx1MjAxMzExMjQpIiwiVGVuamkgKDExMjRcdTIwMTMxMTI2KSIsIkRhaWppICgxMTI2XHUyMDEzMTEzMSkiLCJUZW5zaFx1MDE0ZCAoMTEzMVx1MjAxMzExMzIpIiwiQ2hcdTAxNGRzaFx1MDE0''@;'; put 'put ''ZCAoMTEzMlx1MjAxMzExMzUpIiwiSFx1MDE0ZGVuICgxMTM1XHUyMDEzMTE0MSkiLCJFaWppICgxMTQxXHUyMDEzMTE0MikiLCJLXHUwMTRkamkgKDExNDJcdTIwMTMxMTQ0KSIsIlRlblx1MjAxOXlcdTAxNGQgKDExNDRcdTIwMTMxMTQ1KSIsIkt5XHUwMTZiYW4gKDExNDVcdTIwMTMxMTUx''@;'; put 'put ''KSIsIk5pbnBlaSAoMTE1MVx1MjAxMzExNTQpIiwiS3lcdTAxNmJqdSAoMTE1NFx1MjAxMzExNTYpIiwiSFx1MDE0ZGdlbiAoMTE1Nlx1MjAxMzExNTkpIiwiSGVpamkgKDExNTlcdTIwMTMxMTYwKSIsIkVpcnlha3UgKDExNjBcdTIwMTMxMTYxKSIsIlx1MDE0Y2hvICgxMTYxXHUyMDEzMTE2''@;'; put 'put ''MykiLCJDaFx1MDE0ZGthbiAoMTE2M1x1MjAxMzExNjUpIiwiRWltYW4gKDExNjVcdTIwMTMxMTY2KSIsIk5pblx1MjAxOWFuICgxMTY2XHUyMDEzMTE2OSkiLCJLYVx1MDE0ZCAoMTE2OVx1MjAxMzExNzEpIiwiU2hcdTAxNGRhbiAoMTE3MVx1MjAxMzExNzUpIiwiQW5nZW4gKDExNzVcdTIw''@;'; put 'put ''MTMxMTc3KSIsIkppc2hcdTAxNGQgKDExNzdcdTIwMTMxMTgxKSIsIllcdTAxNGR3YSAoMTE4MVx1MjAxMzExODIpIiwiSnVlaSAoMTE4Mlx1MjAxMzExODQpIiwiR2Vucnlha3UgKDExODRcdTIwMTMxMTg1KSIsIkJ1bmppICgxMTg1XHUyMDEzMTE5MCkiLCJLZW5reVx1MDE2YiAoMTE5MFx1''@;'; put 'put ''MjAxMzExOTkpIiwiU2hcdTAxNGRqaSAoMTE5OVx1MjAxMzEyMDEpIiwiS2VubmluICgxMjAxXHUyMDEzMTIwNCkiLCJHZW5reVx1MDE2YiAoMTIwNFx1MjAxMzEyMDYpIiwiS2VuXHUyMDE5ZWkgKDEyMDZcdTIwMTMxMjA3KSIsIkpcdTAxNGRnZW4gKDEyMDdcdTIwMTMxMjExKSIsIktlbnJ5''@;'; put 'put ''YWt1ICgxMjExXHUyMDEzMTIxMykiLCJLZW5wXHUwMTRkICgxMjEzXHUyMDEzMTIxOSkiLCJKXHUwMTRka3lcdTAxNmIgKDEyMTlcdTIwMTMxMjIyKSIsIkpcdTAxNGRcdTAxNGQgKDEyMjJcdTIwMTMxMjI0KSIsIkdlbm5pbiAoMTIyNFx1MjAxMzEyMjUpIiwiS2Fyb2t1ICgxMjI1XHUyMDEz''@;'; put 'put ''MTIyNykiLCJBbnRlaSAoMTIyN1x1MjAxMzEyMjkpIiwiS2Fua2kgKDEyMjlcdTIwMTMxMjMyKSIsIkpcdTAxNGRlaSAoMTIzMlx1MjAxMzEyMzMpIiwiVGVucHVrdSAoMTIzM1x1MjAxMzEyMzQpIiwiQnVucnlha3UgKDEyMzRcdTIwMTMxMjM1KSIsIkthdGVpICgxMjM1XHUyMDEzMTIzOCki''@;'; put 'put ''LCJSeWFrdW5pbiAoMTIzOFx1MjAxMzEyMzkpIiwiRW5cdTIwMTlcdTAxNGQgKDEyMzlcdTIwMTMxMjQwKSIsIk5pbmppICgxMjQwXHUyMDEzMTI0MykiLCJLYW5nZW4gKDEyNDNcdTIwMTMxMjQ3KSIsIkhcdTAxNGRqaSAoMTI0N1x1MjAxMzEyNDkpIiwiS2VuY2hcdTAxNGQgKDEyNDlcdTIw''@;'; put 'put ''MTMxMjU2KSIsIktcdTAxNGRnZW4gKDEyNTZcdTIwMTMxMjU3KSIsIlNoXHUwMTRka2EgKDEyNTdcdTIwMTMxMjU5KSIsIlNoXHUwMTRkZ2VuICgxMjU5XHUyMDEzMTI2MCkiLCJCdW5cdTIwMTlcdTAxNGQgKDEyNjBcdTIwMTMxMjYxKSIsIktcdTAxNGRjaFx1MDE0ZCAoMTI2MVx1MjAxMzEy''@;'; put 'put ''NjQpIiwiQnVuXHUyMDE5ZWkgKDEyNjRcdTIwMTMxMjc1KSIsIktlbmppICgxMjc1XHUyMDEzMTI3OCkiLCJLXHUwMTRkYW4gKDEyNzhcdTIwMTMxMjg4KSIsIlNoXHUwMTRkXHUwMTRkICgxMjg4XHUyMDEzMTI5MykiLCJFaW5pbiAoMTI5M1x1MjAxMzEyOTkpIiwiU2hcdTAxNGRhbiAoMTI5''@;'; put 'put ''OVx1MjAxMzEzMDIpIiwiS2VuZ2VuICgxMzAyXHUyMDEzMTMwMykiLCJLYWdlbiAoMTMwM1x1MjAxMzEzMDYpIiwiVG9rdWppICgxMzA2XHUyMDEzMTMwOCkiLCJFbmt5XHUwMTRkICgxMzA4XHUyMDEzMTMxMSkiLCJcdTAxNGNjaFx1MDE0ZCAoMTMxMVx1MjAxMzEzMTIpIiwiU2hcdTAxNGR3''@;'; put 'put ''YSAoMTMxMlx1MjAxMzEzMTcpIiwiQnVucFx1MDE0ZCAoMTMxN1x1MjAxMzEzMTkpIiwiR2VuXHUwMTRkICgxMzE5XHUyMDEzMTMyMSkiLCJHZW5rXHUwMTRkICgxMzIxXHUyMDEzMTMyNCkiLCJTaFx1MDE0ZGNoXHUwMTZiICgxMzI0XHUyMDEzMTMyNikiLCJLYXJ5YWt1ICgxMzI2XHUyMDEz''@;'; put 'put ''MTMyOSkiLCJHZW50b2t1ICgxMzI5XHUyMDEzMTMzMSkiLCJHZW5rXHUwMTRkICgxMzMxXHUyMDEzMTMzNCkiLCJLZW5tdSAoMTMzNFx1MjAxMzEzMzYpIiwiRW5nZW4gKDEzMzZcdTIwMTMxMzQwKSIsIktcdTAxNGRrb2t1ICgxMzQwXHUyMDEzMTM0NikiLCJTaFx1MDE0ZGhlaSAoMTM0Nlx1''@;'; put 'put ''MjAxMzEzNzApIiwiS2VudG9rdSAoMTM3MFx1MjAxMzEzNzIpIiwiQnVuY2hcdTAxNmIgKDEzNzJcdTIwMTMxMzc1KSIsIlRlbmp1ICgxMzc1XHUyMDEzMTM3OSkiLCJLXHUwMTRkcnlha3UgKDEzNzlcdTIwMTMxMzgxKSIsIktcdTAxNGR3YSAoMTM4MVx1MjAxMzEzODQpIiwiR2VuY2hcdTAx''@;'; put 'put ''NmIgKDEzODRcdTIwMTMxMzkyKSIsIk1laXRva3UgKDEzODRcdTIwMTMxMzg3KSIsIktha2VpICgxMzg3XHUyMDEzMTM4OSkiLCJLXHUwMTRkXHUwMTRkICgxMzg5XHUyMDEzMTM5MCkiLCJNZWl0b2t1ICgxMzkwXHUyMDEzMTM5NCkiLCJcdTAxNGNlaSAoMTM5NFx1MjAxMzE0MjgpIiwiU2hc''@;'; put 'put ''dTAxNGRjaFx1MDE0ZCAoMTQyOFx1MjAxMzE0MjkpIiwiRWlreVx1MDE0ZCAoMTQyOVx1MjAxMzE0NDEpIiwiS2FraXRzdSAoMTQ0MVx1MjAxMzE0NDQpIiwiQnVuXHUyMDE5YW4gKDE0NDRcdTIwMTMxNDQ5KSIsIkhcdTAxNGR0b2t1ICgxNDQ5XHUyMDEzMTQ1MikiLCJLeVx1MDE0ZHRva3Ug''@;'; put 'put ''KDE0NTJcdTIwMTMxNDU1KSIsIktcdTAxNGRzaFx1MDE0ZCAoMTQ1NVx1MjAxMzE0NTcpIiwiQ2hcdTAxNGRyb2t1ICgxNDU3XHUyMDEzMTQ2MCkiLCJLYW5zaFx1MDE0ZCAoMTQ2MFx1MjAxMzE0NjYpIiwiQnVuc2hcdTAxNGQgKDE0NjZcdTIwMTMxNDY3KSIsIlx1MDE0Y25pbiAoMTQ2N1x1''@;'; put 'put ''MjAxMzE0NjkpIiwiQnVubWVpICgxNDY5XHUyMDEzMTQ4NykiLCJDaFx1MDE0ZGt5XHUwMTRkICgxNDg3XHUyMDEzMTQ4OSkiLCJFbnRva3UgKDE0ODlcdTIwMTMxNDkyKSIsIk1laVx1MDE0ZCAoMTQ5Mlx1MjAxMzE1MDEpIiwiQnVua2kgKDE1MDFcdTIwMTMxNTA0KSIsIkVpc2hcdTAxNGQg''@;'; put 'put ''KDE1MDRcdTIwMTMxNTIxKSIsIlRhaWVpICgxNTIxXHUyMDEzMTUyOCkiLCJLeVx1MDE0ZHJva3UgKDE1MjhcdTIwMTMxNTMyKSIsIlRlbmJ1biAoMTUzMlx1MjAxMzE1NTUpIiwiS1x1MDE0ZGppICgxNTU1XHUyMDEzMTU1OCkiLCJFaXJva3UgKDE1NThcdTIwMTMxNTcwKSIsIkdlbmtpICgx''@;'; put 'put ''NTcwXHUyMDEzMTU3MykiLCJUZW5zaFx1MDE0ZCAoMTU3M1x1MjAxMzE1OTIpIiwiQnVucm9rdSAoMTU5Mlx1MjAxMzE1OTYpIiwiS2VpY2hcdTAxNGQgKDE1OTZcdTIwMTMxNjE1KSIsIkdlbm5hICgxNjE1XHUyMDEzMTYyNCkiLCJLYW5cdTIwMTllaSAoMTYyNFx1MjAxMzE2NDQpIiwiU2hc''@;'; put 'put ''dTAxNGRobyAoMTY0NFx1MjAxMzE2NDgpIiwiS2VpYW4gKDE2NDhcdTIwMTMxNjUyKSIsIkpcdTAxNGRcdTAxNGQgKDE2NTJcdTIwMTMxNjU1KSIsIk1laXJla2kgKDE2NTVcdTIwMTMxNjU4KSIsIk1hbmppICgxNjU4XHUyMDEzMTY2MSkiLCJLYW5idW4gKDE2NjFcdTIwMTMxNjczKSIsIkVu''@;'; put 'put ''cFx1MDE0ZCAoMTY3M1x1MjAxMzE2ODEpIiwiVGVubmEgKDE2ODFcdTIwMTMxNjg0KSIsIkpcdTAxNGRreVx1MDE0ZCAoMTY4NFx1MjAxMzE2ODgpIiwiR2Vucm9rdSAoMTY4OFx1MjAxMzE3MDQpIiwiSFx1MDE0ZGVpICgxNzA0XHUyMDEzMTcxMSkiLCJTaFx1MDE0ZHRva3UgKDE3MTFcdTIw''@;'; put 'put ''MTMxNzE2KSIsIkt5XHUwMTRkaFx1MDE0ZCAoMTcxNlx1MjAxMzE3MzYpIiwiR2VuYnVuICgxNzM2XHUyMDEzMTc0MSkiLCJLYW5wXHUwMTRkICgxNzQxXHUyMDEzMTc0NCkiLCJFbmt5XHUwMTRkICgxNzQ0XHUyMDEzMTc0OCkiLCJLYW5cdTIwMTllbiAoMTc0OFx1MjAxMzE3NTEpIiwiSFx1''@;'; put 'put ''MDE0ZHJla2kgKDE3NTFcdTIwMTMxNzY0KSIsIk1laXdhICgxNzY0XHUyMDEzMTc3MikiLCJBblx1MjAxOWVpICgxNzcyXHUyMDEzMTc4MSkiLCJUZW5tZWkgKDE3ODFcdTIwMTMxNzg5KSIsIkthbnNlaSAoMTc4OVx1MjAxMzE4MDEpIiwiS3lcdTAxNGR3YSAoMTgwMVx1MjAxMzE4MDQpIiwi''@;'; put 'put ''QnVua2EgKDE4MDRcdTIwMTMxODE4KSIsIkJ1bnNlaSAoMTgxOFx1MjAxMzE4MzApIiwiVGVucFx1MDE0ZCAoMTgzMFx1MjAxMzE4NDQpIiwiS1x1MDE0ZGthICgxODQ0XHUyMDEzMTg0OCkiLCJLYWVpICgxODQ4XHUyMDEzMTg1NCkiLCJBbnNlaSAoMTg1NFx1MjAxMzE4NjApIiwiTWFuXHUy''@;'; put 'put ''MDE5ZW4gKDE4NjBcdTIwMTMxODYxKSIsIkJ1bmt5XHUwMTZiICgxODYxXHUyMDEzMTg2NCkiLCJHZW5qaSAoMTg2NFx1MjAxMzE4NjUpIiwiS2VpXHUwMTRkICgxODY1XHUyMDEzMTg2OCkiLCJNIiwiVCIsIlMiLCJIIl0sInNob3J0IjpbIlRhaWthICg2NDVcdTIwMTM2NTApIiwiSGFrdWNo''@;'; put 'put ''aSAoNjUwXHUyMDEzNjcxKSIsIkhha3VoXHUwMTRkICg2NzJcdTIwMTM2ODYpIiwiU2h1Y2hcdTAxNGQgKDY4Nlx1MjAxMzcwMSkiLCJUYWloXHUwMTRkICg3MDFcdTIwMTM3MDQpIiwiS2VpdW4gKDcwNFx1MjAxMzcwOCkiLCJXYWRcdTAxNGQgKDcwOFx1MjAxMzcxNSkiLCJSZWlraSAoNzE1''@;'; put 'put ''XHUyMDEzNzE3KSIsIllcdTAxNGRyXHUwMTRkICg3MTdcdTIwMTM3MjQpIiwiSmlua2kgKDcyNFx1MjAxMzcyOSkiLCJUZW5weVx1MDE0ZCAoNzI5XHUyMDEzNzQ5KSIsIlRlbnB5XHUwMTRkLWthbXBcdTAxNGQgKDc0OS03NDkpIiwiVGVucHlcdTAxNGQtc2hcdTAxNGRoXHUwMTRkICg3NDkt''@;'; put 'put ''NzU3KSIsIlRlbnB5XHUwMTRkLWhcdTAxNGRqaSAoNzU3LTc2NSkiLCJUZW5weVx1MDE0ZC1qaW5nbyAoNzY1LTc2NykiLCJKaW5nby1rZWl1biAoNzY3LTc3MCkiLCJIXHUwMTRka2kgKDc3MFx1MjAxMzc4MCkiLCJUZW4tXHUwMTRkICg3ODEtNzgyKSIsIkVucnlha3UgKDc4Mlx1MjAxMzgw''@;'; put 'put ''NikiLCJEYWlkXHUwMTRkICg4MDZcdTIwMTM4MTApIiwiS1x1MDE0ZG5pbiAoODEwXHUyMDEzODI0KSIsIlRlbmNoXHUwMTRkICg4MjRcdTIwMTM4MzQpIiwiSlx1MDE0ZHdhICg4MzRcdTIwMTM4NDgpIiwiS2FqXHUwMTRkICg4NDhcdTIwMTM4NTEpIiwiTmluanUgKDg1MVx1MjAxMzg1NCki''@;'; put 'put ''LCJTYWlrXHUwMTRkICg4NTRcdTIwMTM4NTcpIiwiVGVuLWFuICg4NTctODU5KSIsIkpcdTAxNGRnYW4gKDg1OVx1MjAxMzg3NykiLCJHYW5neVx1MDE0ZCAoODc3XHUyMDEzODg1KSIsIk5pbm5hICg4ODVcdTIwMTM4ODkpIiwiS2FucHlcdTAxNGQgKDg4OVx1MjAxMzg5OCkiLCJTaFx1MDE0''@;'; put 'put ''ZHRhaSAoODk4XHUyMDEzOTAxKSIsIkVuZ2kgKDkwMVx1MjAxMzkyMykiLCJFbmNoXHUwMTRkICg5MjNcdTIwMTM5MzEpIiwiSlx1MDE0ZGhlaSAoOTMxXHUyMDEzOTM4KSIsIlRlbmd5XHUwMTRkICg5MzhcdTIwMTM5NDcpIiwiVGVucnlha3UgKDk0N1x1MjAxMzk1NykiLCJUZW50b2t1ICg5''@;'; put 'put ''NTdcdTIwMTM5NjEpIiwiXHUwMTRjd2EgKDk2MVx1MjAxMzk2NCkiLCJLXHUwMTRkaFx1MDE0ZCAoOTY0XHUyMDEzOTY4KSIsIkFubmEgKDk2OFx1MjAxMzk3MCkiLCJUZW5yb2t1ICg5NzBcdTIwMTM5NzMpIiwiVGVuXHUyMDE5ZW4gKDk3M1x1MjAxMzk3NikiLCJKXHUwMTRkZ2VuICg5NzZc''@;'; put 'put ''dTIwMTM5NzgpIiwiVGVuZ2VuICg5NzhcdTIwMTM5ODMpIiwiRWlrYW4gKDk4M1x1MjAxMzk4NSkiLCJLYW5uYSAoOTg1XHUyMDEzOTg3KSIsIkVpZW4gKDk4N1x1MjAxMzk4OSkiLCJFaXNvICg5ODlcdTIwMTM5OTApIiwiU2hcdTAxNGRyeWFrdSAoOTkwXHUyMDEzOTk1KSIsIkNoXHUwMTRk''@;'; put 'put ''dG9rdSAoOTk1XHUyMDEzOTk5KSIsIkNoXHUwMTRkaFx1MDE0ZCAoOTk5XHUyMDEzMTAwNCkiLCJLYW5rXHUwMTRkICgxMDA0XHUyMDEzMTAxMikiLCJDaFx1MDE0ZHdhICgxMDEyXHUyMDEzMTAxNykiLCJLYW5uaW4gKDEwMTdcdTIwMTMxMDIxKSIsIkppYW4gKDEwMjFcdTIwMTMxMDI0KSIs''@;'; put 'put ''Ik1hbmp1ICgxMDI0XHUyMDEzMTAyOCkiLCJDaFx1MDE0ZGdlbiAoMTAyOFx1MjAxMzEwMzcpIiwiQ2hcdTAxNGRyeWFrdSAoMTAzN1x1MjAxMzEwNDApIiwiQ2hcdTAxNGRreVx1MDE2YiAoMTA0MFx1MjAxMzEwNDQpIiwiS2FudG9rdSAoMTA0NFx1MjAxMzEwNDYpIiwiRWlzaFx1MDE0ZCAo''@;'; put 'put ''MTA0Nlx1MjAxMzEwNTMpIiwiVGVuZ2kgKDEwNTNcdTIwMTMxMDU4KSIsIktcdTAxNGRoZWkgKDEwNThcdTIwMTMxMDY1KSIsIkppcnlha3UgKDEwNjVcdTIwMTMxMDY5KSIsIkVua3lcdTAxNmIgKDEwNjlcdTIwMTMxMDc0KSIsIlNoXHUwMTRkaG8gKDEwNzRcdTIwMTMxMDc3KSIsIlNoXHUw''@;'; put 'put ''MTRkcnlha3UgKDEwNzdcdTIwMTMxMDgxKSIsIkVpaFx1MDE0ZCAoMTA4MVx1MjAxMzEwODQpIiwiXHUwMTRjdG9rdSAoMTA4NFx1MjAxMzEwODcpIiwiS2FuamkgKDEwODdcdTIwMTMxMDk0KSIsIkthaFx1MDE0ZCAoMTA5NFx1MjAxMzEwOTYpIiwiRWljaFx1MDE0ZCAoMTA5Nlx1MjAxMzEw''@;'; put 'put ''OTcpIiwiSlx1MDE0ZHRva3UgKDEwOTdcdTIwMTMxMDk5KSIsIktcdTAxNGR3YSAoMTA5OVx1MjAxMzExMDQpIiwiQ2hcdTAxNGRqaSAoMTEwNFx1MjAxMzExMDYpIiwiS2FzaFx1MDE0ZCAoMTEwNlx1MjAxMzExMDgpIiwiVGVubmluICgxMTA4XHUyMDEzMTExMCkiLCJUZW4tZWkgKDExMTAt''@;'; put 'put ''MTExMykiLCJFaWt5XHUwMTZiICgxMTEzXHUyMDEzMTExOCkiLCJHZW5cdTIwMTllaSAoMTExOFx1MjAxMzExMjApIiwiSFx1MDE0ZGFuICgxMTIwXHUyMDEzMTEyNCkiLCJUZW5qaSAoMTEyNFx1MjAxMzExMjYpIiwiRGFpamkgKDExMjZcdTIwMTMxMTMxKSIsIlRlbnNoXHUwMTRkICgxMTMx''@;'; put 'put ''XHUyMDEzMTEzMikiLCJDaFx1MDE0ZHNoXHUwMTRkICgxMTMyXHUyMDEzMTEzNSkiLCJIXHUwMTRkZW4gKDExMzVcdTIwMTMxMTQxKSIsIkVpamkgKDExNDFcdTIwMTMxMTQyKSIsIktcdTAxNGRqaSAoMTE0Mlx1MjAxMzExNDQpIiwiVGVuXHUyMDE5eVx1MDE0ZCAoMTE0NFx1MjAxMzExNDUp''@;'; put 'put ''IiwiS3lcdTAxNmJhbiAoMTE0NVx1MjAxMzExNTEpIiwiTmlucGVpICgxMTUxXHUyMDEzMTE1NCkiLCJLeVx1MDE2Ymp1ICgxMTU0XHUyMDEzMTE1NikiLCJIXHUwMTRkZ2VuICgxMTU2XHUyMDEzMTE1OSkiLCJIZWlqaSAoMTE1OVx1MjAxMzExNjApIiwiRWlyeWFrdSAoMTE2MFx1MjAxMzEx''@;'; put 'put ''NjEpIiwiXHUwMTRjaG8gKDExNjFcdTIwMTMxMTYzKSIsIkNoXHUwMTRka2FuICgxMTYzXHUyMDEzMTE2NSkiLCJFaW1hbiAoMTE2NVx1MjAxMzExNjYpIiwiTmluXHUyMDE5YW4gKDExNjZcdTIwMTMxMTY5KSIsIkthXHUwMTRkICgxMTY5XHUyMDEzMTE3MSkiLCJTaFx1MDE0ZGFuICgxMTcx''@;'; put 'put ''XHUyMDEzMTE3NSkiLCJBbmdlbiAoMTE3NVx1MjAxMzExNzcpIiwiSmlzaFx1MDE0ZCAoMTE3N1x1MjAxMzExODEpIiwiWVx1MDE0ZHdhICgxMTgxXHUyMDEzMTE4MikiLCJKdWVpICgxMTgyXHUyMDEzMTE4NCkiLCJHZW5yeWFrdSAoMTE4NFx1MjAxMzExODUpIiwiQnVuamkgKDExODVcdTIw''@;'; put 'put ''MTMxMTkwKSIsIktlbmt5XHUwMTZiICgxMTkwXHUyMDEzMTE5OSkiLCJTaFx1MDE0ZGppICgxMTk5XHUyMDEzMTIwMSkiLCJLZW5uaW4gKDEyMDFcdTIwMTMxMjA0KSIsIkdlbmt5XHUwMTZiICgxMjA0XHUyMDEzMTIwNikiLCJLZW5cdTIwMTllaSAoMTIwNlx1MjAxMzEyMDcpIiwiSlx1MDE0''@;'; put 'put ''ZGdlbiAoMTIwN1x1MjAxMzEyMTEpIiwiS2Vucnlha3UgKDEyMTFcdTIwMTMxMjEzKSIsIktlbnBcdTAxNGQgKDEyMTNcdTIwMTMxMjE5KSIsIkpcdTAxNGRreVx1MDE2YiAoMTIxOVx1MjAxMzEyMjIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTIyMlx1MjAxMzEyMjQpIiwiR2VubmluICgxMjI0XHUy''@;'; put 'put ''MDEzMTIyNSkiLCJLYXJva3UgKDEyMjVcdTIwMTMxMjI3KSIsIkFudGVpICgxMjI3XHUyMDEzMTIyOSkiLCJLYW5raSAoMTIyOVx1MjAxMzEyMzIpIiwiSlx1MDE0ZGVpICgxMjMyXHUyMDEzMTIzMykiLCJUZW5wdWt1ICgxMjMzXHUyMDEzMTIzNCkiLCJCdW5yeWFrdSAoMTIzNFx1MjAxMzEy''@;'; put 'put ''MzUpIiwiS2F0ZWkgKDEyMzVcdTIwMTMxMjM4KSIsIlJ5YWt1bmluICgxMjM4XHUyMDEzMTIzOSkiLCJFblx1MjAxOVx1MDE0ZCAoMTIzOVx1MjAxMzEyNDApIiwiTmluamkgKDEyNDBcdTIwMTMxMjQzKSIsIkthbmdlbiAoMTI0M1x1MjAxMzEyNDcpIiwiSFx1MDE0ZGppICgxMjQ3XHUyMDEz''@;'; put 'put ''MTI0OSkiLCJLZW5jaFx1MDE0ZCAoMTI0OVx1MjAxMzEyNTYpIiwiS1x1MDE0ZGdlbiAoMTI1Nlx1MjAxMzEyNTcpIiwiU2hcdTAxNGRrYSAoMTI1N1x1MjAxMzEyNTkpIiwiU2hcdTAxNGRnZW4gKDEyNTlcdTIwMTMxMjYwKSIsIkJ1blx1MjAxOVx1MDE0ZCAoMTI2MFx1MjAxMzEyNjEpIiwi''@;'; put 'put ''S1x1MDE0ZGNoXHUwMTRkICgxMjYxXHUyMDEzMTI2NCkiLCJCdW5cdTIwMTllaSAoMTI2NFx1MjAxMzEyNzUpIiwiS2VuamkgKDEyNzVcdTIwMTMxMjc4KSIsIktcdTAxNGRhbiAoMTI3OFx1MjAxMzEyODgpIiwiU2hcdTAxNGRcdTAxNGQgKDEyODhcdTIwMTMxMjkzKSIsIkVpbmluICgxMjkz''@;'; put 'put ''XHUyMDEzMTI5OSkiLCJTaFx1MDE0ZGFuICgxMjk5XHUyMDEzMTMwMikiLCJLZW5nZW4gKDEzMDJcdTIwMTMxMzAzKSIsIkthZ2VuICgxMzAzXHUyMDEzMTMwNikiLCJUb2t1amkgKDEzMDZcdTIwMTMxMzA4KSIsIkVua3lcdTAxNGQgKDEzMDhcdTIwMTMxMzExKSIsIlx1MDE0Y2NoXHUwMTRk''@;'; put 'put ''ICgxMzExXHUyMDEzMTMxMikiLCJTaFx1MDE0ZHdhICgxMzEyXHUyMDEzMTMxNykiLCJCdW5wXHUwMTRkICgxMzE3XHUyMDEzMTMxOSkiLCJHZW5cdTAxNGQgKDEzMTlcdTIwMTMxMzIxKSIsIkdlbmtcdTAxNGQgKDEzMjFcdTIwMTMxMzI0KSIsIlNoXHUwMTRkY2hcdTAxNmIgKDEzMjRcdTIw''@;'; put 'put ''MTMxMzI2KSIsIkthcnlha3UgKDEzMjZcdTIwMTMxMzI5KSIsIkdlbnRva3UgKDEzMjlcdTIwMTMxMzMxKSIsIkdlbmtcdTAxNGQgKDEzMzFcdTIwMTMxMzM0KSIsIktlbm11ICgxMzM0XHUyMDEzMTMzNikiLCJFbmdlbiAoMTMzNlx1MjAxMzEzNDApIiwiS1x1MDE0ZGtva3UgKDEzNDBcdTIw''@;'; put 'put ''MTMxMzQ2KSIsIlNoXHUwMTRkaGVpICgxMzQ2XHUyMDEzMTM3MCkiLCJLZW50b2t1ICgxMzcwXHUyMDEzMTM3MikiLCJCdW5jaFx1MDE2YiAoMTM3Mlx1MjAxMzEzNzUpIiwiVGVuanUgKDEzNzVcdTIwMTMxMzc5KSIsIktcdTAxNGRyeWFrdSAoMTM3OVx1MjAxMzEzODEpIiwiS1x1MDE0ZHdh''@;'; put 'put ''ICgxMzgxXHUyMDEzMTM4NCkiLCJHZW5jaFx1MDE2YiAoMTM4NFx1MjAxMzEzOTIpIiwiTWVpdG9rdSAoMTM4NFx1MjAxMzEzODcpIiwiS2FrZWkgKDEzODdcdTIwMTMxMzg5KSIsIktcdTAxNGRcdTAxNGQgKDEzODlcdTIwMTMxMzkwKSIsIk1laXRva3UgKDEzOTBcdTIwMTMxMzk0KSIsIlx1''@;'; put 'put ''MDE0Y2VpICgxMzk0XHUyMDEzMTQyOCkiLCJTaFx1MDE0ZGNoXHUwMTRkICgxNDI4XHUyMDEzMTQyOSkiLCJFaWt5XHUwMTRkICgxNDI5XHUyMDEzMTQ0MSkiLCJLYWtpdHN1ICgxNDQxXHUyMDEzMTQ0NCkiLCJCdW5cdTIwMTlhbiAoMTQ0NFx1MjAxMzE0NDkpIiwiSFx1MDE0ZHRva3UgKDE0''@;'; put 'put ''NDlcdTIwMTMxNDUyKSIsIkt5XHUwMTRkdG9rdSAoMTQ1Mlx1MjAxMzE0NTUpIiwiS1x1MDE0ZHNoXHUwMTRkICgxNDU1XHUyMDEzMTQ1NykiLCJDaFx1MDE0ZHJva3UgKDE0NTdcdTIwMTMxNDYwKSIsIkthbnNoXHUwMTRkICgxNDYwXHUyMDEzMTQ2NikiLCJCdW5zaFx1MDE0ZCAoMTQ2Nlx1''@;'; put 'put ''MjAxMzE0NjcpIiwiXHUwMTRjbmluICgxNDY3XHUyMDEzMTQ2OSkiLCJCdW5tZWkgKDE0NjlcdTIwMTMxNDg3KSIsIkNoXHUwMTRka3lcdTAxNGQgKDE0ODdcdTIwMTMxNDg5KSIsIkVudG9rdSAoMTQ4OVx1MjAxMzE0OTIpIiwiTWVpXHUwMTRkICgxNDkyXHUyMDEzMTUwMSkiLCJCdW5raSAo''@;'; put 'put ''MTUwMVx1MjAxMzE1MDQpIiwiRWlzaFx1MDE0ZCAoMTUwNFx1MjAxMzE1MjEpIiwiVGFpZWkgKDE1MjFcdTIwMTMxNTI4KSIsIkt5XHUwMTRkcm9rdSAoMTUyOFx1MjAxMzE1MzIpIiwiVGVuYnVuICgxNTMyXHUyMDEzMTU1NSkiLCJLXHUwMTRkamkgKDE1NTVcdTIwMTMxNTU4KSIsIkVpcm9r''@;'; put 'put ''dSAoMTU1OFx1MjAxMzE1NzApIiwiR2Vua2kgKDE1NzBcdTIwMTMxNTczKSIsIlRlbnNoXHUwMTRkICgxNTczXHUyMDEzMTU5MikiLCJCdW5yb2t1ICgxNTkyXHUyMDEzMTU5NikiLCJLZWljaFx1MDE0ZCAoMTU5Nlx1MjAxMzE2MTUpIiwiR2VubmEgKDE2MTVcdTIwMTMxNjI0KSIsIkthblx1''@;'; put 'put ''MjAxOWVpICgxNjI0XHUyMDEzMTY0NCkiLCJTaFx1MDE0ZGhvICgxNjQ0XHUyMDEzMTY0OCkiLCJLZWlhbiAoMTY0OFx1MjAxMzE2NTIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTY1Mlx1MjAxMzE2NTUpIiwiTWVpcmVraSAoMTY1NVx1MjAxMzE2NTgpIiwiTWFuamkgKDE2NThcdTIwMTMxNjYxKSIs''@;'; put 'put ''IkthbmJ1biAoMTY2MVx1MjAxMzE2NzMpIiwiRW5wXHUwMTRkICgxNjczXHUyMDEzMTY4MSkiLCJUZW5uYSAoMTY4MVx1MjAxMzE2ODQpIiwiSlx1MDE0ZGt5XHUwMTRkICgxNjg0XHUyMDEzMTY4OCkiLCJHZW5yb2t1ICgxNjg4XHUyMDEzMTcwNCkiLCJIXHUwMTRkZWkgKDE3MDRcdTIwMTMx''@;'; put 'put ''NzExKSIsIlNoXHUwMTRkdG9rdSAoMTcxMVx1MjAxMzE3MTYpIiwiS3lcdTAxNGRoXHUwMTRkICgxNzE2XHUyMDEzMTczNikiLCJHZW5idW4gKDE3MzZcdTIwMTMxNzQxKSIsIkthbnBcdTAxNGQgKDE3NDFcdTIwMTMxNzQ0KSIsIkVua3lcdTAxNGQgKDE3NDRcdTIwMTMxNzQ4KSIsIkthblx1''@;'; put 'put ''MjAxOWVuICgxNzQ4XHUyMDEzMTc1MSkiLCJIXHUwMTRkcmVraSAoMTc1MVx1MjAxMzE3NjQpIiwiTWVpd2EgKDE3NjRcdTIwMTMxNzcyKSIsIkFuXHUyMDE5ZWkgKDE3NzJcdTIwMTMxNzgxKSIsIlRlbm1laSAoMTc4MVx1MjAxMzE3ODkpIiwiS2Fuc2VpICgxNzg5XHUyMDEzMTgwMSkiLCJL''@;'; put 'put ''eVx1MDE0ZHdhICgxODAxXHUyMDEzMTgwNCkiLCJCdW5rYSAoMTgwNFx1MjAxMzE4MTgpIiwiQnVuc2VpICgxODE4XHUyMDEzMTgzMCkiLCJUZW5wXHUwMTRkICgxODMwXHUyMDEzMTg0NCkiLCJLXHUwMTRka2EgKDE4NDRcdTIwMTMxODQ4KSIsIkthZWkgKDE4NDhcdTIwMTMxODU0KSIsIkFu''@;'; put 'put ''c2VpICgxODU0XHUyMDEzMTg2MCkiLCJNYW5cdTIwMTllbiAoMTg2MFx1MjAxMzE4NjEpIiwiQnVua3lcdTAxNmIgKDE4NjFcdTIwMTMxODY0KSIsIkdlbmppICgxODY0XHUyMDEzMTg2NSkiLCJLZWlcdTAxNGQgKDE4NjVcdTIwMTMxODY4KSIsIk1laWppIiwiVGFpc2hcdTAxNGQiLCJTaFx1''@;'; put 'put ''MDE0ZHdhIiwiSGVpc2VpIl0sImxvbmciOlsiVGFpa2EgKDY0NVx1MjAxMzY1MCkiLCJIYWt1Y2hpICg2NTBcdTIwMTM2NzEpIiwiSGFrdWhcdTAxNGQgKDY3Mlx1MjAxMzY4NikiLCJTaHVjaFx1MDE0ZCAoNjg2XHUyMDEzNzAxKSIsIlRhaWhcdTAxNGQgKDcwMVx1MjAxMzcwNCkiLCJLZWl1''@;'; put 'put ''biAoNzA0XHUyMDEzNzA4KSIsIldhZFx1MDE0ZCAoNzA4XHUyMDEzNzE1KSIsIlJlaWtpICg3MTVcdTIwMTM3MTcpIiwiWVx1MDE0ZHJcdTAxNGQgKDcxN1x1MjAxMzcyNCkiLCJKaW5raSAoNzI0XHUyMDEzNzI5KSIsIlRlbnB5XHUwMTRkICg3MjlcdTIwMTM3NDkpIiwiVGVucHlcdTAxNGQt''@;'; put 'put ''a2FtcFx1MDE0ZCAoNzQ5LTc0OSkiLCJUZW5weVx1MDE0ZC1zaFx1MDE0ZGhcdTAxNGQgKDc0OS03NTcpIiwiVGVucHlcdTAxNGQtaFx1MDE0ZGppICg3NTctNzY1KSIsIlRlbnB5XHUwMTRkLWppbmdvICg3NjUtNzY3KSIsIkppbmdvLWtlaXVuICg3NjctNzcwKSIsIkhcdTAxNGRraSAoNzcw''@;'; put 'put ''XHUyMDEzNzgwKSIsIlRlbi1cdTAxNGQgKDc4MS03ODIpIiwiRW5yeWFrdSAoNzgyXHUyMDEzODA2KSIsIkRhaWRcdTAxNGQgKDgwNlx1MjAxMzgxMCkiLCJLXHUwMTRkbmluICg4MTBcdTIwMTM4MjQpIiwiVGVuY2hcdTAxNGQgKDgyNFx1MjAxMzgzNCkiLCJKXHUwMTRkd2EgKDgzNFx1MjAx''@;'; put 'put ''Mzg0OCkiLCJLYWpcdTAxNGQgKDg0OFx1MjAxMzg1MSkiLCJOaW5qdSAoODUxXHUyMDEzODU0KSIsIlNhaWtcdTAxNGQgKDg1NFx1MjAxMzg1NykiLCJUZW4tYW4gKDg1Ny04NTkpIiwiSlx1MDE0ZGdhbiAoODU5XHUyMDEzODc3KSIsIkdhbmd5XHUwMTRkICg4NzdcdTIwMTM4ODUpIiwiTmlu''@;'; put 'put ''bmEgKDg4NVx1MjAxMzg4OSkiLCJLYW5weVx1MDE0ZCAoODg5XHUyMDEzODk4KSIsIlNoXHUwMTRkdGFpICg4OThcdTIwMTM5MDEpIiwiRW5naSAoOTAxXHUyMDEzOTIzKSIsIkVuY2hcdTAxNGQgKDkyM1x1MjAxMzkzMSkiLCJKXHUwMTRkaGVpICg5MzFcdTIwMTM5MzgpIiwiVGVuZ3lcdTAx''@;'; put 'put ''NGQgKDkzOFx1MjAxMzk0NykiLCJUZW5yeWFrdSAoOTQ3XHUyMDEzOTU3KSIsIlRlbnRva3UgKDk1N1x1MjAxMzk2MSkiLCJcdTAxNGN3YSAoOTYxXHUyMDEzOTY0KSIsIktcdTAxNGRoXHUwMTRkICg5NjRcdTIwMTM5NjgpIiwiQW5uYSAoOTY4XHUyMDEzOTcwKSIsIlRlbnJva3UgKDk3MFx1''@;'; put 'put ''MjAxMzk3MykiLCJUZW5cdTIwMTllbiAoOTczXHUyMDEzOTc2KSIsIkpcdTAxNGRnZW4gKDk3Nlx1MjAxMzk3OCkiLCJUZW5nZW4gKDk3OFx1MjAxMzk4MykiLCJFaWthbiAoOTgzXHUyMDEzOTg1KSIsIkthbm5hICg5ODVcdTIwMTM5ODcpIiwiRWllbiAoOTg3XHUyMDEzOTg5KSIsIkVpc28g''@;'; put 'put ''KDk4OVx1MjAxMzk5MCkiLCJTaFx1MDE0ZHJ5YWt1ICg5OTBcdTIwMTM5OTUpIiwiQ2hcdTAxNGR0b2t1ICg5OTVcdTIwMTM5OTkpIiwiQ2hcdTAxNGRoXHUwMTRkICg5OTlcdTIwMTMxMDA0KSIsIkthbmtcdTAxNGQgKDEwMDRcdTIwMTMxMDEyKSIsIkNoXHUwMTRkd2EgKDEwMTJcdTIwMTMx''@;'; put 'put ''MDE3KSIsIkthbm5pbiAoMTAxN1x1MjAxMzEwMjEpIiwiSmlhbiAoMTAyMVx1MjAxMzEwMjQpIiwiTWFuanUgKDEwMjRcdTIwMTMxMDI4KSIsIkNoXHUwMTRkZ2VuICgxMDI4XHUyMDEzMTAzNykiLCJDaFx1MDE0ZHJ5YWt1ICgxMDM3XHUyMDEzMTA0MCkiLCJDaFx1MDE0ZGt5XHUwMTZiICgx''@;'; put 'put ''MDQwXHUyMDEzMTA0NCkiLCJLYW50b2t1ICgxMDQ0XHUyMDEzMTA0NikiLCJFaXNoXHUwMTRkICgxMDQ2XHUyMDEzMTA1MykiLCJUZW5naSAoMTA1M1x1MjAxMzEwNTgpIiwiS1x1MDE0ZGhlaSAoMTA1OFx1MjAxMzEwNjUpIiwiSmlyeWFrdSAoMTA2NVx1MjAxMzEwNjkpIiwiRW5reVx1MDE2''@;'; put 'put ''YiAoMTA2OVx1MjAxMzEwNzQpIiwiU2hcdTAxNGRobyAoMTA3NFx1MjAxMzEwNzcpIiwiU2hcdTAxNGRyeWFrdSAoMTA3N1x1MjAxMzEwODEpIiwiRWloXHUwMTRkICgxMDgxXHUyMDEzMTA4NCkiLCJcdTAxNGN0b2t1ICgxMDg0XHUyMDEzMTA4NykiLCJLYW5qaSAoMTA4N1x1MjAxMzEwOTQp''@;'; put 'put ''IiwiS2FoXHUwMTRkICgxMDk0XHUyMDEzMTA5NikiLCJFaWNoXHUwMTRkICgxMDk2XHUyMDEzMTA5NykiLCJKXHUwMTRkdG9rdSAoMTA5N1x1MjAxMzEwOTkpIiwiS1x1MDE0ZHdhICgxMDk5XHUyMDEzMTEwNCkiLCJDaFx1MDE0ZGppICgxMTA0XHUyMDEzMTEwNikiLCJLYXNoXHUwMTRkICgx''@;'; put 'put ''MTA2XHUyMDEzMTEwOCkiLCJUZW5uaW4gKDExMDhcdTIwMTMxMTEwKSIsIlRlbi1laSAoMTExMC0xMTEzKSIsIkVpa3lcdTAxNmIgKDExMTNcdTIwMTMxMTE4KSIsIkdlblx1MjAxOWVpICgxMTE4XHUyMDEzMTEyMCkiLCJIXHUwMTRkYW4gKDExMjBcdTIwMTMxMTI0KSIsIlRlbmppICgxMTI0''@;'; put 'put ''XHUyMDEzMTEyNikiLCJEYWlqaSAoMTEyNlx1MjAxMzExMzEpIiwiVGVuc2hcdTAxNGQgKDExMzFcdTIwMTMxMTMyKSIsIkNoXHUwMTRkc2hcdTAxNGQgKDExMzJcdTIwMTMxMTM1KSIsIkhcdTAxNGRlbiAoMTEzNVx1MjAxMzExNDEpIiwiRWlqaSAoMTE0MVx1MjAxMzExNDIpIiwiS1x1MDE0''@;'; put 'put ''ZGppICgxMTQyXHUyMDEzMTE0NCkiLCJUZW5cdTIwMTl5XHUwMTRkICgxMTQ0XHUyMDEzMTE0NSkiLCJLeVx1MDE2YmFuICgxMTQ1XHUyMDEzMTE1MSkiLCJOaW5wZWkgKDExNTFcdTIwMTMxMTU0KSIsIkt5XHUwMTZianUgKDExNTRcdTIwMTMxMTU2KSIsIkhcdTAxNGRnZW4gKDExNTZcdTIw''@;'; put 'put ''MTMxMTU5KSIsIkhlaWppICgxMTU5XHUyMDEzMTE2MCkiLCJFaXJ5YWt1ICgxMTYwXHUyMDEzMTE2MSkiLCJcdTAxNGNobyAoMTE2MVx1MjAxMzExNjMpIiwiQ2hcdTAxNGRrYW4gKDExNjNcdTIwMTMxMTY1KSIsIkVpbWFuICgxMTY1XHUyMDEzMTE2NikiLCJOaW5cdTIwMTlhbiAoMTE2Nlx1''@;'; put 'put ''MjAxMzExNjkpIiwiS2FcdTAxNGQgKDExNjlcdTIwMTMxMTcxKSIsIlNoXHUwMTRkYW4gKDExNzFcdTIwMTMxMTc1KSIsIkFuZ2VuICgxMTc1XHUyMDEzMTE3NykiLCJKaXNoXHUwMTRkICgxMTc3XHUyMDEzMTE4MSkiLCJZXHUwMTRkd2EgKDExODFcdTIwMTMxMTgyKSIsIkp1ZWkgKDExODJc''@;'; put 'put ''dTIwMTMxMTg0KSIsIkdlbnJ5YWt1ICgxMTg0XHUyMDEzMTE4NSkiLCJCdW5qaSAoMTE4NVx1MjAxMzExOTApIiwiS2Vua3lcdTAxNmIgKDExOTBcdTIwMTMxMTk5KSIsIlNoXHUwMTRkamkgKDExOTlcdTIwMTMxMjAxKSIsIktlbm5pbiAoMTIwMVx1MjAxMzEyMDQpIiwiR2Vua3lcdTAxNmIg''@;'; put 'put ''KDEyMDRcdTIwMTMxMjA2KSIsIktlblx1MjAxOWVpICgxMjA2XHUyMDEzMTIwNykiLCJKXHUwMTRkZ2VuICgxMjA3XHUyMDEzMTIxMSkiLCJLZW5yeWFrdSAoMTIxMVx1MjAxMzEyMTMpIiwiS2VucFx1MDE0ZCAoMTIxM1x1MjAxMzEyMTkpIiwiSlx1MDE0ZGt5XHUwMTZiICgxMjE5XHUyMDEz''@;'; put 'put ''MTIyMikiLCJKXHUwMTRkXHUwMTRkICgxMjIyXHUyMDEzMTIyNCkiLCJHZW5uaW4gKDEyMjRcdTIwMTMxMjI1KSIsIkthcm9rdSAoMTIyNVx1MjAxMzEyMjcpIiwiQW50ZWkgKDEyMjdcdTIwMTMxMjI5KSIsIkthbmtpICgxMjI5XHUyMDEzMTIzMikiLCJKXHUwMTRkZWkgKDEyMzJcdTIwMTMx''@;'; put 'put ''MjMzKSIsIlRlbnB1a3UgKDEyMzNcdTIwMTMxMjM0KSIsIkJ1bnJ5YWt1ICgxMjM0XHUyMDEzMTIzNSkiLCJLYXRlaSAoMTIzNVx1MjAxMzEyMzgpIiwiUnlha3VuaW4gKDEyMzhcdTIwMTMxMjM5KSIsIkVuXHUyMDE5XHUwMTRkICgxMjM5XHUyMDEzMTI0MCkiLCJOaW5qaSAoMTI0MFx1MjAx''@;'; put 'put ''MzEyNDMpIiwiS2FuZ2VuICgxMjQzXHUyMDEzMTI0NykiLCJIXHUwMTRkamkgKDEyNDdcdTIwMTMxMjQ5KSIsIktlbmNoXHUwMTRkICgxMjQ5XHUyMDEzMTI1NikiLCJLXHUwMTRkZ2VuICgxMjU2XHUyMDEzMTI1NykiLCJTaFx1MDE0ZGthICgxMjU3XHUyMDEzMTI1OSkiLCJTaFx1MDE0ZGdl''@;'; put 'put ''biAoMTI1OVx1MjAxMzEyNjApIiwiQnVuXHUyMDE5XHUwMTRkICgxMjYwXHUyMDEzMTI2MSkiLCJLXHUwMTRkY2hcdTAxNGQgKDEyNjFcdTIwMTMxMjY0KSIsIkJ1blx1MjAxOWVpICgxMjY0XHUyMDEzMTI3NSkiLCJLZW5qaSAoMTI3NVx1MjAxMzEyNzgpIiwiS1x1MDE0ZGFuICgxMjc4XHUy''@;'; put 'put ''MDEzMTI4OCkiLCJTaFx1MDE0ZFx1MDE0ZCAoMTI4OFx1MjAxMzEyOTMpIiwiRWluaW4gKDEyOTNcdTIwMTMxMjk5KSIsIlNoXHUwMTRkYW4gKDEyOTlcdTIwMTMxMzAyKSIsIktlbmdlbiAoMTMwMlx1MjAxMzEzMDMpIiwiS2FnZW4gKDEzMDNcdTIwMTMxMzA2KSIsIlRva3VqaSAoMTMwNlx1''@;'; put 'put ''MjAxMzEzMDgpIiwiRW5reVx1MDE0ZCAoMTMwOFx1MjAxMzEzMTEpIiwiXHUwMTRjY2hcdTAxNGQgKDEzMTFcdTIwMTMxMzEyKSIsIlNoXHUwMTRkd2EgKDEzMTJcdTIwMTMxMzE3KSIsIkJ1bnBcdTAxNGQgKDEzMTdcdTIwMTMxMzE5KSIsIkdlblx1MDE0ZCAoMTMxOVx1MjAxMzEzMjEpIiwi''@;'; put 'put ''R2Vua1x1MDE0ZCAoMTMyMVx1MjAxMzEzMjQpIiwiU2hcdTAxNGRjaFx1MDE2YiAoMTMyNFx1MjAxMzEzMjYpIiwiS2FyeWFrdSAoMTMyNlx1MjAxMzEzMjkpIiwiR2VudG9rdSAoMTMyOVx1MjAxMzEzMzEpIiwiR2Vua1x1MDE0ZCAoMTMzMVx1MjAxMzEzMzQpIiwiS2VubXUgKDEzMzRcdTIw''@;'; put 'put ''MTMxMzM2KSIsIkVuZ2VuICgxMzM2XHUyMDEzMTM0MCkiLCJLXHUwMTRka29rdSAoMTM0MFx1MjAxMzEzNDYpIiwiU2hcdTAxNGRoZWkgKDEzNDZcdTIwMTMxMzcwKSIsIktlbnRva3UgKDEzNzBcdTIwMTMxMzcyKSIsIkJ1bmNoXHUwMTZiICgxMzcyXHUyMDEzMTM3NSkiLCJUZW5qdSAoMTM3''@;'; put 'put ''NVx1MjAxMzEzNzkpIiwiS1x1MDE0ZHJ5YWt1ICgxMzc5XHUyMDEzMTM4MSkiLCJLXHUwMTRkd2EgKDEzODFcdTIwMTMxMzg0KSIsIkdlbmNoXHUwMTZiICgxMzg0XHUyMDEzMTM5MikiLCJNZWl0b2t1ICgxMzg0XHUyMDEzMTM4NykiLCJLYWtlaSAoMTM4N1x1MjAxMzEzODkpIiwiS1x1MDE0''@;'; put 'put ''ZFx1MDE0ZCAoMTM4OVx1MjAxMzEzOTApIiwiTWVpdG9rdSAoMTM5MFx1MjAxMzEzOTQpIiwiXHUwMTRjZWkgKDEzOTRcdTIwMTMxNDI4KSIsIlNoXHUwMTRkY2hcdTAxNGQgKDE0MjhcdTIwMTMxNDI5KSIsIkVpa3lcdTAxNGQgKDE0MjlcdTIwMTMxNDQxKSIsIktha2l0c3UgKDE0NDFcdTIw''@;'; put 'put ''MTMxNDQ0KSIsIkJ1blx1MjAxOWFuICgxNDQ0XHUyMDEzMTQ0OSkiLCJIXHUwMTRkdG9rdSAoMTQ0OVx1MjAxMzE0NTIpIiwiS3lcdTAxNGR0b2t1ICgxNDUyXHUyMDEzMTQ1NSkiLCJLXHUwMTRkc2hcdTAxNGQgKDE0NTVcdTIwMTMxNDU3KSIsIkNoXHUwMTRkcm9rdSAoMTQ1N1x1MjAxMzE0''@;'; put 'put ''NjApIiwiS2Fuc2hcdTAxNGQgKDE0NjBcdTIwMTMxNDY2KSIsIkJ1bnNoXHUwMTRkICgxNDY2XHUyMDEzMTQ2NykiLCJcdTAxNGNuaW4gKDE0NjdcdTIwMTMxNDY5KSIsIkJ1bm1laSAoMTQ2OVx1MjAxMzE0ODcpIiwiQ2hcdTAxNGRreVx1MDE0ZCAoMTQ4N1x1MjAxMzE0ODkpIiwiRW50b2t1''@;'; put 'put ''ICgxNDg5XHUyMDEzMTQ5MikiLCJNZWlcdTAxNGQgKDE0OTJcdTIwMTMxNTAxKSIsIkJ1bmtpICgxNTAxXHUyMDEzMTUwNCkiLCJFaXNoXHUwMTRkICgxNTA0XHUyMDEzMTUyMSkiLCJUYWllaSAoMTUyMVx1MjAxMzE1MjgpIiwiS3lcdTAxNGRyb2t1ICgxNTI4XHUyMDEzMTUzMikiLCJUZW5i''@;'; put 'put ''dW4gKDE1MzJcdTIwMTMxNTU1KSIsIktcdTAxNGRqaSAoMTU1NVx1MjAxMzE1NTgpIiwiRWlyb2t1ICgxNTU4XHUyMDEzMTU3MCkiLCJHZW5raSAoMTU3MFx1MjAxMzE1NzMpIiwiVGVuc2hcdTAxNGQgKDE1NzNcdTIwMTMxNTkyKSIsIkJ1bnJva3UgKDE1OTJcdTIwMTMxNTk2KSIsIktlaWNo''@;'; put 'put ''XHUwMTRkICgxNTk2XHUyMDEzMTYxNSkiLCJHZW5uYSAoMTYxNVx1MjAxMzE2MjQpIiwiS2FuXHUyMDE5ZWkgKDE2MjRcdTIwMTMxNjQ0KSIsIlNoXHUwMTRkaG8gKDE2NDRcdTIwMTMxNjQ4KSIsIktlaWFuICgxNjQ4XHUyMDEzMTY1MikiLCJKXHUwMTRkXHUwMTRkICgxNjUyXHUyMDEzMTY1''@;'; put 'put ''NSkiLCJNZWlyZWtpICgxNjU1XHUyMDEzMTY1OCkiLCJNYW5qaSAoMTY1OFx1MjAxMzE2NjEpIiwiS2FuYnVuICgxNjYxXHUyMDEzMTY3MykiLCJFbnBcdTAxNGQgKDE2NzNcdTIwMTMxNjgxKSIsIlRlbm5hICgxNjgxXHUyMDEzMTY4NCkiLCJKXHUwMTRka3lcdTAxNGQgKDE2ODRcdTIwMTMx''@;'; put 'put ''Njg4KSIsIkdlbnJva3UgKDE2ODhcdTIwMTMxNzA0KSIsIkhcdTAxNGRlaSAoMTcwNFx1MjAxMzE3MTEpIiwiU2hcdTAxNGR0b2t1ICgxNzExXHUyMDEzMTcxNikiLCJLeVx1MDE0ZGhcdTAxNGQgKDE3MTZcdTIwMTMxNzM2KSIsIkdlbmJ1biAoMTczNlx1MjAxMzE3NDEpIiwiS2FucFx1MDE0''@;'; put 'put ''ZCAoMTc0MVx1MjAxMzE3NDQpIiwiRW5reVx1MDE0ZCAoMTc0NFx1MjAxMzE3NDgpIiwiS2FuXHUyMDE5ZW4gKDE3NDhcdTIwMTMxNzUxKSIsIkhcdTAxNGRyZWtpICgxNzUxXHUyMDEzMTc2NCkiLCJNZWl3YSAoMTc2NFx1MjAxMzE3NzIpIiwiQW5cdTIwMTllaSAoMTc3Mlx1MjAxMzE3ODEp''@;'; put 'put ''IiwiVGVubWVpICgxNzgxXHUyMDEzMTc4OSkiLCJLYW5zZWkgKDE3ODlcdTIwMTMxODAxKSIsIkt5XHUwMTRkd2EgKDE4MDFcdTIwMTMxODA0KSIsIkJ1bmthICgxODA0XHUyMDEzMTgxOCkiLCJCdW5zZWkgKDE4MThcdTIwMTMxODMwKSIsIlRlbnBcdTAxNGQgKDE4MzBcdTIwMTMxODQ0KSIs''@;'; put 'put ''IktcdTAxNGRrYSAoMTg0NFx1MjAxMzE4NDgpIiwiS2FlaSAoMTg0OFx1MjAxMzE4NTQpIiwiQW5zZWkgKDE4NTRcdTIwMTMxODYwKSIsIk1hblx1MjAxOWVuICgxODYwXHUyMDEzMTg2MSkiLCJCdW5reVx1MDE2YiAoMTg2MVx1MjAxMzE4NjQpIiwiR2VuamkgKDE4NjRcdTIwMTMxODY1KSIs''@;'; put 'put ''IktlaVx1MDE0ZCAoMTg2NVx1MjAxMzE4NjgpIiwiTWVpamkiLCJUYWlzaFx1MDE0ZCIsIlNoXHUwMTRkd2EiLCJIZWlzZWkiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sInBlcnNpYW4iOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYi''@;'; put 'put ''LCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiRmFydmFyZGluIiwiT3JkaWJlaGVzaHQiLCJLaG9yZGFkIiwiVGlyIiwiTW9yZGFkIiwiU2hhaHJpdmFyIiwiTWVociIsIkFiYW4iLCJBemFyIiwiRGV5IiwiQmFobWFuIiwiRXNmYW5kIl0sImxvbmciOlsiRmFydmFyZGlu''@;'; put 'put ''IiwiT3JkaWJlaGVzaHQiLCJLaG9yZGFkIiwiVGlyIiwiTW9yZGFkIiwiU2hhaHJpdmFyIiwiTWVociIsIkFiYW4iLCJBemFyIiwiRGV5IiwiQmFobWFuIiwiRXNmYW5kIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1v''@;'; put 'put ''biIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBUCJdLCJzaG9ydCI6WyJBUCJdLCJsb25nIjpbIkFQ''@;'; put 'put ''Il19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJyb2MiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwiTSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVs''@;'; put 'put ''IiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFy''@;'; put 'put ''cm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXki''@;'; put 'put ''XX0sImVyYXMiOnsibmFycm93IjpbIkJlZm9yZSBSLk8uQy4iLCJNaW5ndW8iXSwic2hvcnQiOlsiQmVmb3JlIFIuTy5DLiIsIk1pbmd1byJdLCJsb25nIjpbIkJlZm9yZSBSLk8uQy4iLCJNaW5ndW8iXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX19fSwibnVtYmVyIjp7''@;'; put 'put ''Im51IjpbImxhdG4iXSwicGF0dGVybnMiOnsiZGVjaW1hbCI6eyJwb3NpdGl2ZVBhdHRlcm4iOiJ7bnVtYmVyfSIsIm5lZ2F0aXZlUGF0dGVybiI6InttaW51c1NpZ259e251bWJlcn0ifSwiY3VycmVuY3kiOnsicG9zaXRpdmVQYXR0ZXJuIjoie2N1cnJlbmN5fXtudW1iZXJ9IiwibmVnYXRp''@;'; put 'put ''dmVQYXR0ZXJuIjoie21pbnVzU2lnbn17Y3VycmVuY3l9e251bWJlcn0ifSwicGVyY2VudCI6eyJwb3NpdGl2ZVBhdHRlcm4iOiJ7bnVtYmVyfXtwZXJjZW50U2lnbn0iLCJuZWdhdGl2ZVBhdHRlcm4iOiJ7bWludXNTaWdufXtudW1iZXJ9e3BlcmNlbnRTaWdufSJ9fSwic3ltYm9scyI6eyJs''@;'; put 'put ''YXRuIjp7ImRlY2ltYWwiOiIuIiwiZ3JvdXAiOiIsIiwibmFuIjoiTmFOIiwicGx1c1NpZ24iOiIrIiwibWludXNTaWduIjoiLSIsInBlcmNlbnRTaWduIjoiJSIsImluZmluaXR5IjoiXHUyMjFlIn19LCJjdXJyZW5jaWVzIjp7IkFVRCI6IkEkIiwiQlJMIjoiUiQiLCJDQUQiOiJDQSQiLCJD''@;'; put 'put ''TlkiOiJDTlx4YTUiLCJFVVIiOiJcdTIwYWMiLCJHQlAiOiJceGEzIiwiSEtEIjoiSEskIiwiSUxTIjoiXHUyMGFhIiwiSU5SIjoiXHUyMGI5IiwiSlBZIjoiXHhhNSIsIktSVyI6Ilx1MjBhOSIsIk1YTiI6Ik1YJCIsIk5aRCI6Ik5aJCIsIlRXRCI6Ik5UJCIsIlVTRCI6IiQiLCJWTkQiOiJc''@;'; put 'put ''dTIwYWIiLCJYQUYiOiJGQ0ZBIiwiWENEIjoiRUMkIiwiWE9GIjoiQ0ZBIiwiWFBGIjoiQ0ZQRiJ9fX0nKX19LGM9Pnt2YXIgbD1uPT5jKGMucz1uKTtsKDU1MzIxKSxsKDQ4MzMyKX1dKTs='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=runtime.c316ac51d5966713-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlLHM9e30sdj17fTtmdW5jdGlvbiBhKGUpe3ZhciBuPXZbZV07aWYodm9pZCAwIT09bilyZXR1cm4gbi5leHBvcnRzO3ZhciByPXZbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBzW2VdLmNhbGwoci5leHBvcnRzLHIsci5leHBv''@;'; put 'put ''cnRzLGEpLHIubG9hZGVkPSEwLHIuZXhwb3J0c31hLm09cyxlPVtdLGEuTz0obixyLG8sbCk9PntpZighcil7dmFyIHU9MS8wO2Zvcih0PTA7dDxlLmxlbmd0aDt0Kyspe2Zvcih2YXJbcixvLGxdPWVbdF0sZD0hMCxmPTA7ZjxyLmxlbmd0aDtmKyspKCExJmx8fHU+PWwpJiZPYmplY3Qua2V5''@;'; put 'put ''cyhhLk8pLmV2ZXJ5KHA9PmEuT1twXShyW2ZdKSk/ci5zcGxpY2UoZi0tLDEpOihkPSExLGw8dSYmKHU9bCkpO2lmKGQpe2Uuc3BsaWNlKHQtLSwxKTt2YXIgYz1vKCk7dm9pZCAwIT09YyYmKG49Yyl9fXJldHVybiBufWw9bHx8MDtmb3IodmFyIHQ9ZS5sZW5ndGg7dD4wJiZlW3QtMV1bMl0+''@;'; put 'put ''bDt0LS0pZVt0XT1lW3QtMV07ZVt0XT1bcixvLGxdfSxhLm49ZT0+e3ZhciBuPWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBhLmQobix7YTpufSksbn0sYS5kPShlLG4pPT57Zm9yKHZhciByIGluIG4pYS5vKG4scikmJiFhLm8oZSxyKSYmT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6bltyXX0pfSxhLm89KGUsbik9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pLGEucj1lPT57dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUs''@;'; put 'put ''U3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sYS5ubWQ9ZT0+KGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10pLGUpLCgoKT0+e3ZhciBlPXs2NjY6MH07YS5PLmo9''@;'; put 'put ''bz0+MD09PWVbb107dmFyIG49KG8sbCk9Pnt2YXIgZixjLFt0LHUsZF09bCxpPTA7aWYodC5zb21lKF89PjAhPT1lW19dKSl7Zm9yKGYgaW4gdSlhLm8odSxmKSYmKGEubVtmXT11W2ZdKTtpZihkKXZhciBiPWQoYSl9Zm9yKG8mJm8obCk7aTx0Lmxlbmd0aDtpKyspYS5vKGUsYz10W2ldKSYm''@;'; put 'put ''ZVtjXSYmZVtjXVswXSgpLGVbY109MDtyZXR1cm4gYS5PKGIpfSxyPXNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W107ci5mb3JFYWNoKG4uYmluZChudWxsLDApKSxyLnB1c2g9bi5iaW5kKG51bGwsci5wdXNoLmJpbmQo''@;'; put 'put ''cikpfSkoKX0pKCk7'';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=scripts.89a8947a0266c47a-js; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''KGZ1bmN0aW9uKGIsail7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1qKCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxqKTtlbHNle3ZhciB6LE09aigpO2Zv''@;'; put 'put ''cih6IGluIE0pKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzOmIpW3pdPU1bel19fSkodGhpcyxmdW5jdGlvbigpe3JldHVybiBqPXsiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMgKioqIQogICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNLGwsdil7''@;'; put 'put ''InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLkNsYXJpdHlJY29uc0FwaT12b2lkIDA7dmFyIHA9digKLyohIC4vdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2ZXIgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3No''@;'; put 'put ''YXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzIiksYT17fTtmdW5jdGlvbiBrKCl7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShrLCJpbnN0YW5jZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBrLnNpbmdsZUluc3RhbmNlPWsuc2luZ2xlSW5zdGFuY2U/ay5zaW5nbGVJbnN0YW5jZTpuZXcga30sZW51''@;'; put 'put ''bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxrLnByb3RvdHlwZS52YWxpZGF0ZU5hbWU9ZnVuY3Rpb24oUyl7aWYoMD09PVMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyEiKTtpZigvXHMvLnRlc3QoUykp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJTaGFwZSBuYW1lIG9yIGFsaWFzIG11c3Qgbm90IGNvbnRhaW4gYW55IHdoaXRlc3BhY2UgY2hhcmFjdGVycyEiKTtyZXR1cm4hMH0say5wcm90b3R5cGUubm9ybWFsaXplU2hhcGVOYW1lPWZ1bmN0aW9uKFMpe3JldHVybiBTLnRvTG93ZXJDYXNlKCl9LGsucHJv''@;'; put 'put ''dG90eXBlLnNldEljb25UZW1wbGF0ZT1mdW5jdGlvbihTLEQpe0Q9RC50cmltKCksdGhpcy52YWxpZGF0ZU5hbWUoUykmJihTPXRoaXMubm9ybWFsaXplU2hhcGVOYW1lKFMpLGFbU10mJmRlbGV0ZSBhW1NdLGFbU109RCxwLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5lbWl0Q2hh''@;'; put 'put ''bmdlcyhTLEQpKX0say5wcm90b3R5cGUuc2V0SWNvbkFsaWFzZXM9ZnVuY3Rpb24oUyxELHgpe2Zvcih2YXIgRz0wLFA9eDtHPFAubGVuZ3RoO0crKyl7dmFyIE89UFtHXTt0aGlzLnZhbGlkYXRlTmFtZShPKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KFMsTyx7Z2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFNbRF19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9fSxrLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oUyl7aWYoIm9iamVjdCIhPXR5cGVvZiBTKXRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBm''@;'; put 'put ''b2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAgICAgICAgICB7ICJzaGFwZS1uYW1lIjogInNoYXBlLXRlbXBsYXRlIiB9Jyk7Zm9yKHZhciBEIGluIFMpUy5oYXNPd25Qcm9wZXJ0eShEKSYmdGhpcy5zZXRJY29uVGVtcGxhdGUoRCxTW0RdKX0say5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKFMp''@;'; put 'put ''e3JldHVybiEhYVt0aGlzLm5vcm1hbGl6ZVNoYXBlTmFtZShTKV19LGsucHJvdG90eXBlLmdldD1mdW5jdGlvbihTKXtpZighUylyZXR1cm4gYTtpZigic3RyaW5nIiE9dHlwZW9mIFMpdGhyb3cgbmV3IFR5cGVFcnJvcigiT25seSBzdHJpbmcgYXJndW1lbnQgaXMgYWxsb3dlZCBpbiB0aGlz''@;'; put 'put ''IG1ldGhvZC4iKTtyZXR1cm4gYVt0aGlzLm5vcm1hbGl6ZVNoYXBlTmFtZShTKV19LGsucHJvdG90eXBlLmFsaWFzPWZ1bmN0aW9uKFMpe2lmKCJvYmplY3QiIT10eXBlb2YgUyl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCBsaXRlcmFsIHBhc3NlZCBp''@;'; put 'put ''biB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gICAgICAgICAgICAgICAgeyAic2hhcGUtbmFtZSI6IFsiYWxpYXMtbmFtZSIsIC4uLl0gfScpO2Zvcih2YXIgRCBpbiBTKWlmKFMuaGFzT3duUHJvcGVydHkoRCkpe2lmKCFhLmhhc093blByb3BlcnR5KEQpKXRocm93IG5ldyBFcnJvcignQW4g''@;'; put 'put ''aWNvbiAiJytEKyJcIiB5b3UgYXJlIHRyeWluZyB0byBzZXQgYWxpYXNlcyB0byBkb2Vzbid0IGV4aXN0IGluIHRoZSBDbGFyaXR5IEljb25zIHNldHMhIik7dGhpcy5zZXRJY29uQWxpYXNlcyhhLEQsU1tEXSl9fSxsLkNsYXJpdHlJY29uc0FwaT12PWt9LCIuL3Byb2plY3RzL2ljb25zL3Ny''@;'; put 'put ''Yy9jbHItaWNvbnMtZWxlbWVudC50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNLGwsSCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLkNsYXJpdHlJY29uRWxlbWVudD12b2lk''@;'; put 'put ''IDA7dmFyIHA9SCgKLyohIC4vY2xyLWljb25zLWFwaSAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLGE9SCgKLyohIC4vdXRpbHMvc2hhcGUtdGVtcGxhdGUtb2JzZXJ2ZXIgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9i''@;'; put 'put ''c2VydmVyLnRzIiksdj0wLGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2suY2xhc3NOYW1lPSJpcy1vZmYtc2NyZWVuIjt2YXIgUz1mdW5jdGlvbigpe3JldHVybiBIVE1MRWxlbWVudC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIEQoKXt2YXIgeD1TLmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKTtyZXR1cm4geC5jbHJJY29uVW5pcUlkPSJfY2xyX2ljb25fIit2LHYrKyx4fSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmKFM9ZnVuY3Rpb24oKXtyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoSFRNTEVsZW1lbnQsYXJndW1lbnRzLHRoaXMuY29uc3RydWN0b3IpfSks''@;'; put 'put ''KGwuQ2xhcml0eUljb25FbGVtZW50PUQpLm9ic2VydmVkQXR0cmlidXRlcz1bInNoYXBlIiwic2l6ZSIsInRpdGxlIl0sKChELnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1''@;'; put 'put ''ZTpEfX0pKS5jb25zdHJ1Y3Rvcj1EKS5wcm90b3R5cGUuX2FwcGVuZEN1c3RvbVRpdGxlPWZ1bmN0aW9uKCl7dmFyIHg9ay5jbG9uZU5vZGUoITEpO3guaWQ9dGhpcy5jbHJJY29uVW5pcUlkLHgudGV4dENvbnRlbnQ9dGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsLHRoaXMuYXBwZW5kQ2hpbGQo''@;'; put 'put ''eCl9LEQucHJvdG90eXBlLl9zZXRJY29uU2l6ZT1mdW5jdGlvbih4KXshTnVtYmVyKHgpfHxOdW1iZXIoeCk8MD8odGhpcy5zdHlsZS53aWR0aD1udWxsLHRoaXMuc3R5bGUuaGVpZ2h0PW51bGwpOih0aGlzLnN0eWxlLndpZHRoPXgrInB4Iix0aGlzLnN0eWxlLmhlaWdodD14KyJweCIpfSxE''@;'; put 'put ''LnByb3RvdHlwZS5fbm9ybWFsaXplU2hhcGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHguc3BsaXQoL1xzLylbMF0udG9Mb3dlckNhc2UoKX0sRC5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXt2YXIgeCxHPXRoaXM7aWYodGhpcy5nZXRBdHRyaWJ1dGUoInJvbGUiKXx8dGhp''@;'; put 'put ''cy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJub25lIiksdGhpcy5oYXNBdHRyaWJ1dGUoInNpemUiKSYmKHg9dGhpcy5nZXRBdHRyaWJ1dGUoInNpemUiKSx0aGlzLmN1cnJlbnRTaXplQXR0clZhbCE9PXgmJih0aGlzLmN1cnJlbnRTaXplQXR0clZhbD14LHRoaXMuX3NldEljb25TaXplKHgpKSks''@;'; put 'put ''dGhpcy5oYXNBdHRyaWJ1dGUoInNoYXBlIikpe3ZhciBQPXRoaXMuX25vcm1hbGl6ZVNoYXBlKHRoaXMuZ2V0QXR0cmlidXRlKCJzaGFwZSIpKTtpZih0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uPWEuU2hhcGVUZW1wbGF0ZU9ic2VydmVyLmluc3RhbmNlLnN1YnNjcmliZVRvKFAs''@;'; put 'put ''ZnVuY3Rpb24oTyl7Ry5faW5qZWN0VGVtcGxhdGUoTyl9KSx0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWw9UCwhcC5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuaGFzKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCkpcmV0dXJuIHZvaWQgdGhpcy5faW5qZWN0RXJyb3JUZW1wbGF0ZSgpO2lmKChQ''@;'; put 'put ''PXAuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpKT09PXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUpcmV0dXJuO3RoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9UH10aGlzLmhhc0F0dHJpYnV0ZSgidGl0bGUiKSYmKFA9dGhpcy5nZXRBdHRy''@;'; put 'put ''aWJ1dGUoInRpdGxlIiksdGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsIT09UCYmKHRoaXMuY3VycmVudFRpdGxlQXR0clZhbD1QKSwhdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKXx8dGhpcy5faW5qZWN0VGVtcGxhdGUoKX0sRC5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrPWZ1''@;'; put 'put ''bmN0aW9uKHgsRyxQKXt2YXIgTz10aGlzO2lmKCJzaXplIj09PXgmJnRoaXMuX3NldEljb25TaXplKFApLCJzaGFwZSI9PT14KXtpZih0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWw9dGhpcy5fbm9ybWFsaXplU2hhcGUoUCksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmKHRoaXMu''@;'; put 'put ''X3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24oKSx0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uPWEuU2hhcGVUZW1wbGF0ZU9ic2VydmVyLmluc3RhbmNlLnN1YnNjcmliZVRvKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCxmdW5jdGlvbihUKXtPLl9pbmplY3RUZW1wbGF0ZShUKX0p''@;'; put 'put ''KSwhcC5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuaGFzKHRoaXMuY3VycmVudFNoYXBlQXR0clZhbCkpcmV0dXJuIHZvaWQgdGhpcy5faW5qZWN0RXJyb3JUZW1wbGF0ZSgpO3RoaXMuY3VycmVudFNoYXBlVGVtcGxhdGU9cC5DbGFyaXR5SWNvbnNBcGkuaW5zdGFuY2UuZ2V0KHRoaXMuY3Vy''@;'; put 'put ''cmVudFNoYXBlQXR0clZhbCl9InRpdGxlIj09PXgmJih0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWw9UCwhdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKXx8dGhpcy5faW5qZWN0VGVtcGxhdGUoKX0sRC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9zaGFw''@;'; put 'put ''ZVRlbXBsYXRlU3Vic2NyaXB0aW9uJiZ0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uKCl9LEQucHJvdG90eXBlLl9zZXRBcmlhTGFiZWxsZWRCeT1mdW5jdGlvbigpe3ZhciB4PXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiKSxHPShHPXRoaXMucXVlcnlTZWxlY3Rv''@;'; put 'put ''cigic3ZnIikpfHx0aGlzO3g/eCYmeC5pbmRleE9mKHRoaXMuY2xySWNvblVuaXFJZCk8MCYmRy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIseCsiICIrdGhpcy5jbHJJY29uVW5pcUlkKTpHLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0aGlzLmNsckljb25VbmlxSWQp''@;'; put 'put ''fSxELnByb3RvdHlwZS5faW5qZWN0VGVtcGxhdGU9ZnVuY3Rpb24oeCl7eCYmeCE9PXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUmJih0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXgpLHRoaXMuaW5uZXJIVE1MPXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUsdGhpcy5jdXJyZW50VGl0bGVB''@;'; put 'put ''dHRyVmFsJiYodGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKSx0aGlzLl9hcHBlbmRDdXN0b21UaXRsZSgpKX0sRC5wcm90b3R5cGUuX2luamVjdEVycm9yVGVtcGxhdGU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXAuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCgi''@;'; put 'put ''ZXJyb3IiKSx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1zZngudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNv''@;'; put 'put ''bnMtc2Z4LnRzICoqKiEKICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTSxsLEgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksbC5DbGFyaXR5SWNvbnM9dm9pZCAwO3ZhciBwPUgoCi8qISAuL2luZGV4ICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJDbGFyaXR5SWNvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBwLkNsYXJpdHlJY29uc319KSxIPUgoCi8qISAuL3NoYXBlcy9hbGwtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyIpLHAuQ2xhcml0eUljb25zLmFkZChILkFsbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyI6Ci8q''@;'; put 'put ''ISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9m''@;'; put 'put ''dW5jdGlvbihNLGwsYSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLkNsYXJpdHlJY29ucz12b2lkIDA7dmFyIHY9YSgKLyohIC4vY2xyLWljb25zLWFwaSAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFw''@;'; put 'put ''aS50cyIpLHA9YSgKLyohIC4vY2xyLWljb25zLWVsZW1lbnQgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIik7YT1hKAovKiEgLi9zaGFwZXMvY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLChs''@;'; put 'put ''LkNsYXJpdHlJY29ucz12PXYuQ2xhcml0eUljb25zQXBpLmluc3RhbmNlKS5hZGQoYS5Db3JlU2hhcGVzKSx0eXBlb2Ygd2luZG93PCJ1IiYmKHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIil8fCh3aW5kb3cuQ2xhcml0eUljb25zPXYpLGN1c3RvbUVsZW1lbnRzLmdldCgi''@;'; put 'put ''Y2xyLWljb24iKXx8Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJjbHItaWNvbiIscC5DbGFyaXR5SWNvbkVsZW1lbnQpKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9hbGwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9hbGwtc2hhcGVzLnRzICoqKiEKICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxH''@;'; put 'put ''KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuQWxsU2hhcGVzPXZvaWQgMDt2YXIgcD1HKAovKiEgLi9jaGFydC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiKSxhPUco''@;'; put 'put ''Ci8qISAuL2NvbW1lcmNlLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyIpLHY9RygKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpLGs9RygKLyohIC4vZXNzZW50''@;'; put 'put ''aWFsLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2Vzc2VudGlhbC1zaGFwZXMudHMiKSxTPUcoCi8qISAuL21lZGlhLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyIpLEQ9RygKLyohIC4vc29jaWFsLXNoYXBlcyAq''@;'; put 'put ''LwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3NvY2lhbC1zaGFwZXMudHMiKSx4PUcoCi8qISAuL3RlY2hub2xvZ3ktc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiKSxQPUcoCi8qISAuL3RleHQtZWRpdC1zaGFwZXMgKi8K''@;'; put 'put ''Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIiksTz0oRz1HKAovKiEgLi90cmF2ZWwtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdHJhdmVsLXNoYXBlcy50cyIpLFA9W3YuQ29yZVNoYXBlcyxhLkNvbW1lcmNlU2hhcGVzLGsu''@;'; put 'put ''RXNzZW50aWFsU2hhcGVzLFMuTWVkaWFTaGFwZXMsRC5Tb2NpYWxTaGFwZXMseC5UZWNobm9sb2d5U2hhcGVzLEcuVHJhdmVsU2hhcGVzLHAuQ2hhcnRTaGFwZXMsUC5UZXh0RWRpdFNoYXBlc10se30pO2wuQWxsU2hhcGVzPU87Zm9yKHZhciBUPTAsdDE9UDtUPHQxLmxlbmd0aDtUKyspe3Zh''@;'; put 'put ''ciBRLFk9dDFbVF07Zm9yKFEgaW4gWSlZLmhhc093blByb3BlcnR5KFEpJiYoT1tRXT1ZW1FdKX10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoTyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9z''@;'; put 'put ''aGFwZXMvY2hhcnQtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NoYXJ0LXNoYXBlcy50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuQ2hhcnRTaGFwZXM9bC5DbHJT''@;'; put 'put ''aGFwZUJlbGxDdXJ2ZT1sLkNsclNoYXBlVGlja0NoYXJ0PWwuQ2xyU2hhcGVTY2F0dGVyUGxvdD1sLkNsclNoYXBlUGllQ2hhcnQ9bC5DbHJTaGFwZUxpbmVDaGFydD1sLkNsclNoYXBlSGVhdE1hcD1sLkNsclNoYXBlR3JpZENoYXJ0PWwuQ2xyU2hhcGVDdXJ2ZUNoYXJ0PWwuQ2xyU2hhcGVD''@;'; put 'put ''bG91ZENoYXJ0PWwuQ2xyU2hhcGVCdWJibGVDaGFydD1sLkNsclNoYXBlQm94UGxvdD1sLkNsclNoYXBlQmFyQ2hhcnQ9bC5DbHJTaGFwZUF4aXNDaGFydD12b2lkIDA7dmFyIHA9YSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGls''@;'; put 'put ''cy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpO2E9YSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGwuQ2xyU2hhcGVBeGlzQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUg''@;'; put 'put ''MzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAy''@;'; put 'put ''NS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44''@;'; put 'put ''OTYgMzQgNyBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2''@;'; put 'put ''LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQg''@;'; put 'put ''Ni42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEy''@;'; put 'put ''LjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTSA2LjAwNyAyNi43MzEgTCAyNy43MyAyNi43MyBDIDI4LjQ5IDI2LjY3IDI4Ljkx''@;'; put 'put ''IDI1LjggMjguNDcgMjUuMTcgQyAyOC4zIDI0LjkyIDI4LjAzIDI0Ljc2IDI3LjczIDI0Ljc0IEwgOC4wMDEgMjQuNzM2IEwgOC4wMSAxMS4wMSBDIDguMDEgMTAuMjMgNy4xNyA5Ljc1IDYuNSAxMC4xNCBDIDYuMTkgMTAuMzEgNiAxMC42NSA2IDExLjAxIEwgNi4wMDcgMjYuNzMxIFoiLz5c''@;'; put 'put ''biAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjEuOTY5IDkuMjMzIDI1LjA1IDEzLjEgMjkuMzEgMTMuNDYgTCAz''@;'; put 'put ''MC4zMiAxMy40OCBDIDMxLjYyNiAxMy40MjkgMzIuODk1IDEzLjAzNiAzNCAxMi4zNCBaIE0gNi4wMDcgMjYuNzMxIEwgMjcuNzMgMjYuNzMgQyAyOC40OSAyNi42NyAyOC45MSAyNS44IDI4LjQ3IDI1LjE3IEMgMjguMyAyNC45MiAyOC4wMyAyNC43NiAyNy43MyAyNC43NCBMIDguMDAxIDI0''@;'; put 'put ''LjczNiBMIDguMDEgMTEuMDEgQyA4LjAxIDEwLjIzIDcuMTcgOS43NSA2LjUgMTAuMTQgQyA2LjE5IDEwLjMxIDYgMTAuNjUgNiAxMS4wMSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4''@;'; put 'put ''PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAy''@;'; put 'put ''IDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVk''@;'; put 'put ''IiBkPSJNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAyNC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEw''@;'; put 'put ''LjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgTCA2LjAwNyAyNi43MzEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEu''@;'; put 'put ''MDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4w''@;'; put 'put ''ODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAy''@;'; put 'put ''OSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5''@;'; put 'put ''LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDYuMDA3IDI2LjczMSBMIDI3LjczIDI2LjczIEMgMjguNDkgMjYuNjcgMjguOTEgMjUuOCAyOC40NyAyNS4xNyBDIDI4LjMgMjQuOTIgMjguMDMgMjQuNzYgMjcuNzMgMjQuNzQgTCA4LjAwMSAy''@;'; put 'put ''NC43MzYgTCA4LjAxIDExLjAxIEMgOC4wMSAxMC4yMyA3LjE3IDkuNzUgNi41IDEwLjE0IEMgNi4xOSAxMC4zMSA2IDEwLjY1IDYgMTEuMDEgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBk''@;'; put 'put ''PSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5''@;'; put 'put ''MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLGwuQ2xyU2hhcGVCYXJDaGFydD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTAg''@;'; put 'put ''TCAxMyAxMCBMIDEzIDI2IEwgMTEuNCAyNiBMIDExLjQgMTEuNiBMIDguNiAxMS42IEwgOC42IDI2IEwgNyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYg''@;'; put 'put ''TCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMyAxNiBMIDI5IDE2IEwgMjkgMjYgTCAyNy40IDI2IEwgMjcuNCAxNy42IEwgMjQuNiAxNy42''@;'; put 'put ''IEwgMjQuNiAyNiBMIDIzIDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAz''@;'; put 'put ''MSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAy''@;'; put 'put ''MyAyNiBMIDI5IDI2IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42''@;'; put 'put ''NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0''@;'; put 'put ''IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gNyAxMCBMIDEzIDEwIEwgMTMgMjYgTCAxMS40IDI2IEwgMTEuNCAxMS42IEwgOC42IDExLjYgTCA4LjYgMjYgTCA3IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE5IEwgMjEgMTkgTCAyMSAyNiBMIDE5LjQgMjYgTCAxOS40IDIwLjYgTCAxNi42IDIwLjYgTCAxNi42IDI2IEwgMTUgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC00LS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMS45Njkg''@;'; put 'put ''OS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI1IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA3IDI2IEwgMTMgMjYgTCAxMyAxMCBMIDcgMTAgWiBNIDE1IDI2IEwgMjEgMjYgTCAyMSAxOSBMIDE1IDE5IFogTSAyMyAyNiBMIDI5IDI2''@;'; put 'put ''IEwgMjkgMTYgTCAyMyAxNiBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwg''@;'; put 'put ''NCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEwIEwgMTMgMTAgTCAxMyAyNiBMIDExLjQgMjYgTCAxMS40IDExLjYgTCA4LjYgMTEuNiBMIDguNiAyNiBMIDcgMjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxNSAxOSBMIDIxIDE5IEwgMjEgMjYgTCAxOS40IDI2IEwgMTkuNCAyMC42IEwgMTYuNiAyMC42IEwgMTYuNiAyNiBMIDE1IDI2IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjMgMTYgTCAyOSAxNiBMIDI5IDI2IEwgMjcuNCAyNiBMIDI3LjQgMTcuNiBMIDI0LjYgMTcuNiBMIDI0LjYgMjYgTCAyMyAyNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgx''@;'; put 'put ''OCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0''@;'; put 'put ''Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEw''@;'; put 'put ''NSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcg''@;'; put 'put ''MTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDcgMjYgTCAxMyAyNiBMIDEzIDEwIEwgNyAxMCBaIE0gMTUgMjYgTCAyMSAyNiBMIDIxIDE5IEwgMTUgMTkgWiBNIDIzIDI2IEwgMjkgMjYgTCAyOSAxNiBMIDIzIDE2IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAx''@;'; put 'put ''My4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkg''@;'; put 'put ''MjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxsLkNsclNoYXBlQm94UGxvdD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiww''@;'; put 'put ''LDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCwyOVY3SDMyVjI5WiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTIgTCAxNyAxMiBMIDE3IDI2IEwgNyAyNiBMIDcgMTIgWiBNIDguNiAyNC40IEwgMTUuNCAyNC40IEwgMTUuNCAxOC44IEwgOC42IDE4LjggTCA4LjYgMjQuNCBaIE0gMTUu''@;'; put 'put ''NCAxMy42IEwgOC42IDEzLjYgTCA4LjYgMTcuMiBMIDE1LjQgMTcuMiBMIDE1LjQgMTMuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE5IDI0IEwgMjkgMjQgTCAyOSAxMCBMIDE5IDEwIEwgMTkgMjQgWiBNIDIw''@;'; put 'put ''LjYgMTEuNiBMIDI3LjQgMTEuNiBMIDI3LjQgMTcuMiBMIDIwLjYgMTcuMiBMIDIwLjYgMTEuNiBaIE0gMjcuNCAyMi40IEwgMjAuNiAyMi40IEwgMjAuNiAxOC44IEwgMjcuNCAxOC44IEwgMjcuNCAyMi40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIj48''@;'; put 'put ''L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMy''@;'; put 'put ''IDUgQyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAxOSAyNCBMIDI5IDI0IEwgMjkgMTAgTCAxOSAxMCBaIE0gMjEg''@;'; put 'put ''MTIgTCAyNyAxMiBMIDI3IDE3IEwgMjEgMTcgWiBNIDI3IDIyIEwgMjEgMjIgTCAyMSAxOSBMIDI3IDE5IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0''@;'; put 'put ''IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4x''@;'; put 'put ''MDUgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTgu''@;'; put 'put ''OCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAxNS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0gMTkgMTAgTCAyMy43MjggMTAgQyAyNC4xMDUgMTAuNTk2IDI0LjU2NCAxMS4xMzUgMjUuMDkgMTEuNiBMIDIwLjYgMTEuNiBMIDIwLjYgMTcuMiBMIDI3LjQgMTcuMiBMIDI3LjQgMTIuOTg3IEMgMjcuOTA5IDEzLjE3NyAyOC40NDUgMTMuMzEzIDI5IDEzLjM4NyBMIDI5IDI0IEwgMTkg''@;'; put 'put ''MjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAu''@;'; put 'put ''MTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIyLjU3IDUgQyAyMi4zMTIgNi44MTcgMjIuNzMyIDguNTY2IDIzLjYzMyAxMCBMIDE5IDEwIEwgMTkgMjQgTCAyOSAyNCBMIDI5IDEzLjQyNyBD''@;'; put 'put ''IDI5LjEwMyAxMy40NCAyOS4yMDYgMTMuNDUxIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDcgMjYgTCAxNyAyNiBMIDE3IDEyIEwgNyAxMiBaIE0gOSAxOSBMIDE1IDE5IEwgMTUgMjQgTCA5IDI0IFogTSAxNSAx''@;'; put 'put ''NyBMIDkgMTcgTCA5IDE0IEwgMTUgMTQgWiBNIDIxIDEyIEwgMjUuNDcyIDEyIEMgMjUuOTQgMTIuMzUyIDI2LjQ1MiAxMi42NSAyNyAxMi44ODUgTCAyNyAxNyBMIDIxIDE3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAz''@;'; put 'put ''NCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwv''@;'; put 'put ''cGF0aD5cbiAgPHBhdGggZD0iTSA3IDEyIEwgMTcgMTIgTCAxNyAyNiBMIDcgMjYgTCA3IDEyIFogTSA4LjYgMjQuNCBMIDE1LjQgMjQuNCBMIDE1LjQgMTguOCBMIDguNiAxOC44IEwgOC42IDI0LjQgWiBNIDE1LjQgMTMuNiBMIDguNiAxMy42IEwgOC42IDE3LjIgTCAxNS40IDE3LjIgTCAx''@;'; put 'put ''NS40IDEzLjYgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOSAyNCBMIDE5IDI0IEwgMTkgMTUuMzQ1IEMgMTkuMDIxIDE1LjM0OCAyMC42IDE1LjM2IDIwLjYgMTUuMzYgTCAyMC42''@;'; put 'put ''IDE3LjIgTCAyNy40IDE3LjIgTCAyNy40IDE1LjM2IEwgMjkgMTUuMzU3IEwgMjkgMjQgWiBNIDI3LjQgMTguOCBMIDIwLjYgMTguOCBMIDIwLjYgMjIuNCBMIDI3LjQgMjIuNCBMIDI3LjQgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4''@;'; put 'put ''IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAy''@;'; put 'put ''OS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIg''@;'; put 'put ''MzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDE5LjAyOCAxMCBMIDE5IDEwIEwgMTkgMTAuMDQ4IEwgMTcuNjI1IDEyLjM5NSBDIDE2LjgwNyAxMy41ODMgMTcuNTcxIDE1LjE5NyAxOSAxNS4zNDUgTCAx''@;'; put 'put ''OSAyNCBMIDI5IDI0IEwgMjkgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA3IDI2IEwgMTcgMjYgTCAxNyAxMiBMIDcgMTIgWiBNIDkgMTkgTCAxNSAxOSBMIDE1IDI0IEwgOSAyNCBaIE0gMTUgMTcgTCA5IDE3IEwgOSAxNCBMIDE1IDE0IFogTSAyNyAxNyBMIDIxIDE3IEwgMjEgMTUuMzU3IEwg''@;'; put 'put ''MjcgMTUuMzU3IFogTSAyNyAyMiBMIDIxIDIyIEwgMjEgMTkgTCAyNyAxOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAw''@;'; put 'put ''NCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgx''@;'; put 'put ''IDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksbC5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBN''@;'; put 'put ''IDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI5IDE4IEMgMjkgMTkuNjU3IDI3LjY1NyAyMSAyNiAyMSBDIDI0LjM0MyAyMSAyMyAxOS42NTcgMjMgMTggQyAyMyAxNi4zNDMgMjQuMzQzIDE1IDI2IDE1IEMgMjcuNjU3IDE1IDI5IDE2LjM0MyAy''@;'; put 'put ''OSAxOCBaIE0gMjYgMTYuNiBDIDI1LjIyNyAxNi42IDI0LjYgMTcuMjI3IDI0LjYgMTggQyAyNC42IDE4Ljc3MyAyNS4yMjcgMTkuNCAyNiAxOS40IEMgMjYuNzczIDE5LjQgMjcuNCAxOC43NzMgMjcuNCAxOCBDIDI3LjQgMTcuMjI3IDI2Ljc3MyAxNi42IDI2IDE2LjYgWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDEx''@;'; put 'put ''Ljc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQgQyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIxIDIzIEMgMjEgMjQuNjU3IDE5LjY1NyAyNiAxOCAyNiBDIDE2LjM0MyAyNiAxNSAyNC42NTcgMTUgMjMgQyAxNSAyMS4zNDMgMTYuMzQzIDIwIDE4IDIwIEMgMTkuNjU3IDIw''@;'; put 'put ''IDIxIDIxLjM0MyAyMSAyMyBaIE0gMTggMjEuNiBDIDE3LjIyNyAyMS42IDE2LjYgMjIuMjI3IDE2LjYgMjMgQyAxNi42IDIzLjc3MyAxNy4yMjcgMjQuNCAxOCAyNC40IEMgMTguNzczIDI0LjQgMTkuNCAyMy43NzMgMTkuNCAyMyBDIDE5LjQgMjIuMjI3IDE4Ljc3MyAyMS42IDE4IDIxLjYg''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHJ4PSIzIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAy''@;'; put 'put ''Ljg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIwOSAxOCAxNSAxNi4yMDkg''@;'; put 'put ''MTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUgMjYgMTUgWiBNIDE4IDIw''@;'; put 'put ''IEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5''@;'; put 'put ''NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMjkgMTggQyAyOSAxOS42NTcg''@;'; put 'put ''MjcuNjU3IDIxIDI2IDIxIEMgMjQuMzQzIDIxIDIzIDE5LjY1NyAyMyAxOCBDIDIzIDE2LjM0MyAyNC4zNDMgMTUgMjYgMTUgQyAyNy42NTcgMTUgMjkgMTYuMzQzIDI5IDE4IFogTSAyNiAxNi42IEMgMjUuMjI3IDE2LjYgMjQuNiAxNy4yMjcgMjQuNiAxOCBDIDI0LjYgMTguNzczIDI1LjIy''@;'; put 'put ''NyAxOS40IDI2IDE5LjQgQyAyNi43NzMgMTkuNCAyNy40IDE4Ljc3MyAyNy40IDE4IEMgMjcuNCAxNy4yMjcgMjYuNzczIDE2LjYgMjYgMTYuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHJ4PSIzIj48L3BhdGg+XG4gIDxw''@;'; put 'put ''YXRoIGQ9Ik0gMTUgMTQgQyAxNSAxNi4yMDkgMTMuMjA5IDE4IDExIDE4IEMgOC43OTEgMTggNyAxNi4yMDkgNyAxNCBDIDcgMTEuNzkxIDguNzkxIDEwIDExIDEwIEMgMTMuMjA5IDEwIDE1IDExLjc5MSAxNSAxNCBaIE0gMTEgMTEuNiBDIDkuNjc1IDExLjYgOC42IDEyLjY3NSA4LjYgMTQg''@;'; put 'put ''QyA4LjYgMTUuMzI1IDkuNjc1IDE2LjQgMTEgMTYuNCBDIDEyLjMyNSAxNi40IDEzLjQgMTUuMzI1IDEzLjQgMTQgQyAxMy40IDEyLjY3NSAxMi4zMjUgMTEuNiAxMSAxMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgcng9''@;'; put 'put ''IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAyMSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcg''@;'; put 'put ''MjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgcng9IjMiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIy''@;'; put 'put ''LjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMSAxMCBDIDguNzkxIDEwIDcgMTEuNzkxIDcgMTQgQyA3IDE2LjIwOSA4Ljc5MSAxOCAxMSAxOCBDIDEzLjIw''@;'; put 'put ''OSAxOCAxNSAxNi4yMDkgMTUgMTQgQyAxNSAxMS43OTEgMTMuMjA5IDEwIDExIDEwIFogTSAyNiAxNSBDIDI0LjM0MyAxNSAyMyAxNi4zNDMgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1NyAyOSAxOCBDIDI5IDE2LjM0MyAyNy42NTcgMTUg''@;'; put 'put ''MjYgMTUgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBD''@;'; put 'put ''IDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5c''@;'; put 'put ''biAgPHBhdGggZD0iTSAyOSAxOCBDIDI5IDE5LjY1NyAyNy42NTcgMjEgMjYgMjEgQyAyNC4zNDMgMjEgMjMgMTkuNjU3IDIzIDE4IEMgMjMgMTYuMzQzIDI0LjM0MyAxNSAyNiAxNSBDIDI3LjY1NyAxNSAyOSAxNi4zNDMgMjkgMTggWiBNIDI2IDE2LjYgQyAyNS4yMjcgMTYuNiAyNC42IDE3''@;'; put 'put ''LjIyNyAyNC42IDE4IEMgMjQuNiAxOC43NzMgMjUuMjI3IDE5LjQgMjYgMTkuNCBDIDI2Ljc3MyAxOS40IDI3LjQgMTguNzczIDI3LjQgMTggQyAyNy40IDE3LjIyNyAyNi43NzMgMTYuNiAyNiAxNi42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE1IDE0IEMgMTUgMTYuMjA5IDEzLjIwOSAxOCAxMSAxOCBDIDguNzkxIDE4IDcgMTYuMjA5IDcgMTQgQyA3IDExLjc5MSA4Ljc5MSAxMCAxMSAxMCBDIDEzLjIwOSAxMCAxNSAxMS43OTEgMTUgMTQgWiBNIDExIDEx''@;'; put 'put ''LjYgQyA5LjY3NSAxMS42IDguNiAxMi42NzUgOC42IDE0IEMgOC42IDE1LjMyNSA5LjY3NSAxNi40IDExIDE2LjQgQyAxMi4zMjUgMTYuNCAxMy40IDE1LjMyNSAxMy40IDE0IEMgMTMuNCAxMi42NzUgMTIuMzI1IDExLjYgMTEgMTEuNiBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgcng9IjMiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMSAyMyBDIDIxIDI0LjY1NyAxOS42NTcgMjYgMTggMjYgQyAxNi4zNDMgMjYgMTUgMjQuNjU3IDE1IDIzIEMgMTUgMjEuMzQzIDE2LjM0MyAyMCAxOCAyMCBDIDE5LjY1NyAyMCAy''@;'; put 'put ''MSAyMS4zNDMgMjEgMjMgWiBNIDE4IDIxLjYgQyAxNy4yMjcgMjEuNiAxNi42IDIyLjIyNyAxNi42IDIzIEMgMTYuNiAyMy43NzMgMTcuMjI3IDI0LjQgMTggMjQuNCBDIDE4Ljc3MyAyNC40IDE5LjQgMjMuNzczIDE5LjQgMjMgQyAxOS40IDIyLjIyNyAxOC43NzMgMjEuNiAxOCAyMS42IFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiByeD0iMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAy''@;'; put 'put ''Ni44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQu''@;'; put 'put ''ODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMS45NTggNSBMIDE3LjYyNSAxMi4zOTUgQyAxNi43OTUgMTMuNjAxIDE3''@;'; put 'put ''LjU5NCAxNS4yNDUgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNC41NzkgMTUuMzU3IEMgMjMuNjM5IDE1Ljg2MyAyMyAxNi44NTcgMjMgMTggQyAyMyAxOS42NTcgMjQuMzQzIDIxIDI2IDIxIEMgMjcuNjU3IDIxIDI5IDE5LjY1''@;'; put 'put ''NyAyOSAxOCBDIDI5IDE2Ljg1NyAyOC4zNjEgMTUuODYzIDI3LjQyMSAxNS4zNTcgTCAzNCAxNS4zNTcgWiBNIDExIDEwIEMgOC43OTEgMTAgNyAxMS43OTEgNyAxNCBDIDcgMTYuMjA5IDguNzkxIDE4IDExIDE4IEMgMTMuMjA5IDE4IDE1IDE2LjIwOSAxNSAxNCBDIDE1IDExLjc5MSAxMy4y''@;'; put 'put ''MDkgMTAgMTEgMTAgWiBNIDE4IDIwIEMgMTYuMzQzIDIwIDE1IDIxLjM0MyAxNSAyMyBDIDE1IDI0LjY1NyAxNi4zNDMgMjYgMTggMjYgQyAxOS42NTcgMjYgMjEgMjQuNjU3IDIxIDIzIEMgMjEgMjEuMzQzIDE5LjY1NyAyMCAxOCAyMCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2''@;'; put 'put ''IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1''@;'; put 'put ''NCAxLjE0NCBaIj48L3BhdGg+JyksbC5DbHJTaGFwZUNsb3VkQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsMjlWN0gzMlYyOVoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyMC45NzEgMTEuMjQzIEMgMjMuMzE0IDEzLjU4NiAyMi4zNjQgMTguMzM1IDE4Ljg0OSAyMS44NDkgQyAxNS4zMzQgMjUuMzY0IDEwLjU4NiAyNi4zMTQgOC4yNDMgMjMuOTcgQyA1''@;'; put 'put ''Ljg5OSAyMS42MjcgNi44NDkgMTYuODc4IDEwLjM2NCAxMy4zNjQgQyAxMy44NzkgOS44NDkgMTguNjI4IDguOSAyMC45NzEgMTEuMjQzIFogTSAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUxNSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4z''@;'; put 'put ''ODkgMTcuNTc2IDIwLjU3NyBDIDIwLjM4OCAxNy43NjUgMjEuMzM4IDE0LjE1NiAxOS42OTcgMTIuNTE2IEMgMTguMDU3IDEwLjg3NiAxNC40NDggMTEuODI1IDExLjYzNiAxNC42MzcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcGF0aD5cbiAgPHBh''@;'; put 'put ''dGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjcgMjAuNiAyMy42IDIxLjIyNyAy''@;'; put 'put ''My42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI3IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNyAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI3Ij48L3Bh''@;'; put 'put ''dGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDMyIDUg''@;'; put 'put ''QyAzMy4xMDUgNSAzNCA1Ljg5NSAzNCA3IFogTSAxMC4zNjQgMTMuMzY0IEMgNi44NDkgMTYuODc4IDUuODk5IDIxLjYyNyA4LjI0MyAyMy45NyBDIDEwLjU4NiAyNi4zMTQgMTUuMzM0IDI1LjM2NCAxOC44NDkgMjEuODQ5IEMgMjIuMzY0IDE4LjMzNSAyMy4zMTQgMTMuNTg2IDIwLjk3MSAx''@;'; put 'put ''MS4yNDMgQyAxOC42MjggOC45IDEzLjg3OSA5Ljg0OSAxMC4zNjQgMTMuMzY0IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUg''@;'; put 'put ''MTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAy''@;'; put 'put ''Mi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4w''@;'; put 'put ''MjYgMzIgMTMuMjIgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDIwLjk3MSAxMS4yNDMgQyAyMy4zMTQgMTMuNTg2IDIyLjM2NCAxOC4zMzUgMTguODQ5IDIxLjg0OSBDIDE1LjMzNCAyNS4zNjQgMTAuNTg2IDI2LjMxNCA4LjI0MyAyMy45NyBDIDUuODk5IDIxLjYyNyA2Ljg0OSAxNi44Nzgg''@;'; put 'put ''MTAuMzY0IDEzLjM2NCBDIDEzLjg3OSA5Ljg0OSAxOC42MjggOC45IDIwLjk3MSAxMS4yNDMgWiBNIDExLjYzNiAxNC42MzcgQyA4LjgyNCAxNy40NDkgNy44NzUgMjEuMDU4IDkuNTE1IDIyLjY5OCBDIDExLjE1NSAyNC4zMzggMTQuNzY0IDIzLjM4OSAxNy41NzYgMjAuNTc3IEMgMjAuMzg4''@;'; put 'put ''IDE3Ljc2NSAyMS4zMzggMTQuMTU2IDE5LjY5NyAxMi41MTYgQyAxOC4wNTcgMTAuODc2IDE0LjQ0OCAxMS44MjUgMTEuNjM2IDE0LjYzNyBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAy''@;'; put 'put ''OCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAxOSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMg''@;'; put 'put ''MjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMgMjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgeD0i''@;'; put 'put ''NyI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAx''@;'; put 'put ''My4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjUgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAy''@;'; put 'put ''MS44NDkgQyAyMi4zNjQgMTguMzM1IDIzLjMxNCAxMy41ODYgMjAuOTcxIDExLjI0MyBDIDE4LjYyOCA4LjkgMTMuODc5IDkuODQ5IDEwLjM2NCAxMy4zNjQgWiBNIDI1IDE5IEMgMjMuMzQzIDE5IDIyIDIwLjM0MyAyMiAyMiBDIDIyIDIzLjY1NyAyMy4zNDMgMjUgMjUgMjUgQyAyNi42NTcg''@;'; put 'put ''MjUgMjggMjMuNjU3IDI4IDIyIEMgMjggMjAuMzQzIDI2LjY1NyAxOSAyNSAxOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xl''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUg''@;'; put 'put ''NSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAxOC44NDkgMjEuODQ5IEMgMTUuMzM0IDI1LjM2NCAxMC41ODYgMjYuMzE0IDguMjQzIDIzLjk3IEMgNS44OTkgMjEu''@;'; put 'put ''NjI3IDYuODQ5IDE2Ljg3OCAxMC4zNjQgMTMuMzY0IEMgMTMuMDQ5IDEwLjY3OSAxNi40NTMgOS40OTIgMTguOTU2IDEwLjEyNCBMIDE4LjAwOCAxMS43NDEgQyAxNi4xOCAxMS41MTggMTMuNjk1IDEyLjU3OCAxMS42MzYgMTQuNjM3IEMgOC44MjQgMTcuNDQ5IDcuODc1IDIxLjA1OCA5LjUx''@;'; put 'put ''NSAyMi42OTggQyAxMS4xNTUgMjQuMzM4IDE0Ljc2NCAyMy4zODkgMTcuNTc2IDIwLjU3NyBDIDE5LjIyOCAxOC45MjUgMjAuMjM3IDE2Ljk5OCAyMC40NTYgMTUuMzU3IEwgMjIuMjIgMTUuMzU3IEMgMjIuMDA2IDE3LjQ3NyAyMC44MzggMTkuODYxIDE4Ljg0OSAyMS44NDkgWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSAyOCAyMiBDIDI4IDIzLjY1NyAyNi42NTcgMjUgMjUgMjUgQyAyMy4zNDMgMjUgMjIgMjMuNjU3IDIyIDIyIEMgMjIgMjAuMzQzIDIzLjM0MyAxOSAyNSAx''@;'; put 'put ''OSBDIDI2LjY1NyAxOSAyOCAyMC4zNDMgMjggMjIgWiBNIDI1IDIwLjYgQyAyNC4yMjYgMjAuNiAyMy42IDIxLjIyNiAyMy42IDIyIEMgMjMuNiAyMi43NzMgMjQuMjI2IDIzLjQgMjUgMjMuNCBDIDI1Ljc3MyAyMy40IDI2LjQgMjIuNzczIDI2LjQgMjIgQyAyNi40IDIxLjIyNiAyNS43NzMg''@;'; put 'put ''MjAuNiAyNSAyMC42IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiB4PSI3Ij48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1p''@;'; put 'put ''LWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUu''@;'; put 'put ''MzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMTguOTU2IDEwLjEyNCBDIDE2''@;'; put 'put ''LjQ1MyA5LjQ5MiAxMy4wNDkgMTAuNjc5IDEwLjM2NCAxMy4zNjQgQyA2Ljg0OSAxNi44NzggNS44OTkgMjEuNjI3IDguMjQzIDIzLjk3IEMgMTAuNTg2IDI2LjMxNCAxNS4zMzQgMjUuMzY0IDE4Ljg0OSAyMS44NDkgQyAyMC44MzggMTkuODYxIDIyLjAwNiAxNy40NzcgMjIuMjIgMTUuMzU3''@;'; put 'put ''IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBDIDIzLjM0MyAxOSAyMiAyMC4zNDMgMjIgMjIgQyAyMiAyMy42NTcgMjMuMzQzIDI1IDI1IDI1IEMgMjYuNjU3IDI1IDI4IDIzLjY1NyAyOCAyMiBDIDI4IDIwLjM0MyAyNi42NTcgMTkgMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAw''@;'; put 'put ''NiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44''@;'; put 'put ''NTQgMS4xNDQgWiI+PC9wYXRoPicpLGwuQ2xyU2hhcGVDdXJ2ZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMw''@;'; put 'put ''LjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4y''@;'; put 'put ''IDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQg''@;'; put 'put ''MTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEg''@;'; put 'put ''MjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUuMDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMzQgNyBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5''@;'; put 'put ''IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMgMjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1''@;'; put 'put ''LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAxOC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3''@;'; put 'put ''LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIiBkPSJNIDMyIDEzLjIyIEwgMzIgMjkgTCA0IDI5IEwgNCA3IEwgMjIuNTcgNyBDIDIyLjUyNCA2LjY2OCAyMi41MDEgNi4zMzQgMjIuNSA2IEMgMjIuNTAxIDUuNjY1IDIyLjUyNCA1LjMzMSAyMi41NyA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkg''@;'; put 'put ''QyAyIDMwLjEwNCAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDQgMzEgMzQgMzAuMTA0IDM0IDI5IEwgMzQgMTIuMzQgQyAzMy4zOCAxMi43MyAzMi43MDYgMTMuMDI2IDMyIDEzLjIyIFoiPjwvcGF0aD5cbiAgPHBhdGggZD0iTSA3IDExLjggQyA2LjU1OCAxMS44IDYuMiAxMS40NDIg''@;'; put 'put ''Ni4yIDExIEMgNi4yIDEwLjU1OCA2LjU1OCAxMC4yIDcgMTAuMiBMIDEzIDEwLjIgQyAxNS40MDQgMTAuMiAxNi4zNjggMTEuOTA3IDE3LjY1MyAxNi40NzggQyAxNy42OTUgMTYuNjI4IDE3Ljc0NCAxNi44MDMgMTcuODM1IDE3LjEyOSBDIDE3LjkwOSAxNy4zOTIgMTcuOTY0IDE3LjU4OCAx''@;'; put 'put ''OC4wMTkgMTcuNzggQyAxOS4zMzIgMjIuMzc1IDIwLjU0OSAyNC4yIDIzIDI0LjIgTCAyOSAyNC4yIEMgMjkuNDQyIDI0LjIgMjkuOCAyNC41NTggMjkuOCAyNSBDIDI5LjggMjUuNDQyIDI5LjQ0MiAyNS44IDI5IDI1LjggTCAyMyAyNS44IEMgMTkuNTM1IDI1LjggMTcuOTgxIDIzLjQ2OSAx''@;'; put 'put ''Ni40ODEgMTguMjIgQyAxNi40MjUgMTguMDI1IDE2LjM2OSAxNy44MjYgMTYuMjk1IDE3LjU2IEMgMTYuMjAzIDE3LjIzNCAxNi4xNTQgMTcuMDYgMTYuMTEzIDE2LjkxMSBDIDE1LjA0MyAxMy4xMDUgMTQuMzA1IDExLjggMTMgMTEuOCBMIDcgMTEuOCBaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1''@;'; put 'put ''IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAxMyAxMiBDIDE0LjgxNyAxMiAxNS42NzQgMTMuNDk5IDE3LjAzOSAxOC4yNzUgQyAxNy44MTMg''@;'; put 'put ''MjAuOTg0IDE4LjIwMSAyMi4xMTggMTguODgyIDIzLjMwOSBDIDE5Ljg3IDI1LjAzOCAyMS4yMDUgMjYgMjMgMjYgTCAyOSAyNiBDIDI5LjU1MiAyNiAzMCAyNS41NTIgMzAgMjUgQyAzMCAyNC40NDggMjkuNTUyIDI0IDI5IDI0IEwgMjMgMjQgQyAyMS4xODMgMjQgMjAuMzI2IDIyLjUwMSAx''@;'; put 'put ''OC45NjIgMTcuNzI1IEMgMTguMTg4IDE1LjAxNiAxNy43OTkgMTMuODgyIDE3LjExOCAxMi42OTEgQyAxNi4xMyAxMC45NjIgMTQuNzk1IDEwIDEzIDEwIEwgNyAxMCBDIDYuNDQ4IDEwIDYgMTAuNDQ4IDYgMTEgQyA2IDExLjU1MiA2LjQ0OCAxMiA3IDEyIFoiPjwvcGF0aD5cbiAgPGNpcmNs''@;'; put 'put ''ZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAx''@;'; put 'put ''NS4zNTcgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDcgMTEuOCBDIDYuNTU4IDExLjggNi4yIDExLjQ0MiA2LjIgMTEgQyA2LjIgMTAuNTU4IDYuNTU4IDEwLjIgNyAxMC4yIEwgMTMgMTAuMiBDIDE1LjQwNCAxMC4yIDE2LjM2OCAxMS45MDcgMTcuNjUzIDE2LjQ3OCBDIDE3LjY5NSAxNi42''@;'; put 'put ''MjggMTcuNzQ0IDE2LjgwMyAxNy44MzUgMTcuMTI5IEMgMTcuOTA5IDE3LjM5MiAxNy45NjQgMTcuNTg4IDE4LjAxOSAxNy43OCBDIDE5LjMzMiAyMi4zNzUgMjAuNTQ5IDI0LjIgMjMgMjQuMiBMIDI5IDI0LjIgQyAyOS40NDIgMjQuMiAyOS44IDI0LjU1OCAyOS44IDI1IEMgMjkuOCAyNS40''@;'; put 'put ''NDIgMjkuNDQyIDI1LjggMjkgMjUuOCBMIDIzIDI1LjggQyAxOS41MzUgMjUuOCAxNy45ODEgMjMuNDY5IDE2LjQ4MSAxOC4yMiBDIDE2LjQyNSAxOC4wMjUgMTYuMzY5IDE3LjgyNiAxNi4yOTUgMTcuNTYgQyAxNi4yMDMgMTcuMjM0IDE2LjE1NCAxNy4wNiAxNi4xMTMgMTYuOTExIEMgMTUu''@;'; put 'put ''MDQzIDEzLjEwNSAxNC4zMDUgMTEuOCAxMyAxMS44IEwgNyAxMS44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAw''@;'; put 'put ''NCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIxLjk1OCA1''@;'; put 'put ''IEwgMTcuNjI1IDEyLjM5NSBDIDE3LjQ3NiAxMi42MTIgMTcuMzc5IDEyLjg0MyAxNy4zMyAxMy4wNzcgQyAxNy4yNjIgMTIuOTQ4IDE3LjE5MiAxMi44MiAxNy4xMTggMTIuNjkxIEMgMTYuMTMgMTAuOTYyIDE0Ljc5NSAxMCAxMyAxMCBMIDcgMTAgQyA2LjQ0OCAxMCA2IDEwLjQ0OCA2IDEx''@;'; put 'put ''IEMgNiAxMS41NTIgNi40NDggMTIgNyAxMiBMIDEzIDEyIEMgMTQuODE3IDEyIDE1LjY3NCAxMy40OTkgMTcuMDM5IDE4LjI3NSBDIDE3LjgxMyAyMC45ODQgMTguMjAxIDIyLjExOCAxOC44ODIgMjMuMzA5IEMgMTkuODcgMjUuMDM4IDIxLjIwNSAyNiAyMyAyNiBMIDI5IDI2IEMgMjkuNTUy''@;'; put 'put ''IDI2IDMwIDI1LjU1MiAzMCAyNSBDIDMwIDI0LjQ0OCAyOS41NTIgMjQgMjkgMjQgTCAyMyAyNCBDIDIxLjE4MyAyNCAyMC4zMjYgMjIuNTAxIDE4Ljk2MiAxNy43MjUgQyAxOC42NCAxNi41OTggMTguMzg1IDE1Ljc0NCAxOC4xNDcgMTUuMDQ0IEMgMTguNDA3IDE1LjIxNSAxOC43MTcgMTUu''@;'; put 'put ''MzI2IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i''@;'; put 'put ''TSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEg''@;'; put 'put ''MzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxsLkNsclNoYXBlR3JpZENoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xu''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwxNSwxN1pNNCw4djdIMTVWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxN0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJN''@;'; put 'put ''MzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0gMTUgMTcgTCA0IDE3IEMgMi44''@;'; put 'put ''OTUgMTcgMiAxNi4xMDUgMiAxNSBMIDIgOCBDIDIgNi44OTUgMi44OTUgNiA0IDYgTCAxNSA2IEMgMTYuMTA1IDYgMTcgNi44OTUgMTcgOCBMIDE3IDE1IEMgMTcgMTYuMTA1IDE2LjEwNSAxNyAxNSAxNyBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDMyIDYgQyAzMy4xMDUgNiAzNCA2Ljg5NSAzNCA4IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTSAxNSAzMCBMIDQgMzAgQyAyLjg5NSAzMCAyIDI5LjEwNSAyIDI4IEwgMiAyMSBDIDIgMTkuODk1IDIuODk1IDE5IDQgMTkgTCAxNSAxOSBDIDE2LjEwNSAxOSAxNyAxOS44OTUgMTcgMjEgTCAxNyAyOCBDIDE3IDI5''@;'; put 'put ''LjEwNSAxNi4xMDUgMzAgMTUgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNIDMyIDMwIEwgMjEgMzAgQyAxOS44OTUgMzAgMTkgMjkuMTA1IDE5IDI4IEwgMTkgMjEgQyAxOSAxOS44OTUgMTkuODk1IDE5IDIxIDE5IEwgMzIgMTkg''@;'; put 'put ''QyAzMy4xMDUgMTkgMzQgMTkuODk1IDM0IDIxIEwgMzQgMjggQyAzNCAyOS4xMDUgMzMuMTA1IDMwIDMyIDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS1hbGVydGVkIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhB''@;'; put 'put ''MiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLWFsZXJ0ZWQiIGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDIwLjAxNCAxNyAx''@;'; put 'put ''OS4xOTUgMTYuMjg3IDE5LjAzIDE1LjM0OCBDIDE5LjA0MSAxNS4zNDkgMTkuMDUzIDE1LjM1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzMuOTY4IDE1LjM1NyBDIDMzLjggMTYuMjkyIDMyLjk4MyAxNyAzMiAxNyBaIE0gMTkg''@;'; put 'put ''OCBDIDE5IDYuODk1IDE5Ljg5NSA2IDIxIDYgTCAyMS4zNzIgNiBMIDE5IDEwLjA0OCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtYWxlcnRlZCIgZD0iTTE1LDMwSDRhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0y''@;'; put 'put ''SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC1hbGVydGVkIiBkPSJNMzIsMzBIMjFhMiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0y''@;'; put 'put ''SDMyYTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMzIsMzBaTTIxLDIxdjdIMzJWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAx''@;'; put 'put ''MS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDEx''@;'; put 'put ''LjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDE1''@;'; put 'put ''IDE3IEwgNCAxNyBDIDIuODk1IDE3IDIgMTYuMTA1IDIgMTUgTCAyIDggQyAyIDYuODk1IDIuODk1IDYgNCA2IEwgMTUgNiBDIDE2LjEwNSA2IDE3IDYuODk1IDE3IDggTCAxNyAxNSBDIDE3IDE2LjEwNSAxNi4xMDUgMTcgMTUgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiBkPSJNIDMyIDE3IEwgMjEgMTcgQyAyMC4wMTQgMTcgMTkuMTk1IDE2LjI4NyAxOS4wMyAxNS4zNDggQyAxOS4wNDEgMTUuMzQ5IDE5LjA1MyAxNS4zNSAxOS4wNjQgMTUuMzUxIEMgMTkuMTM0IDE1LjM1NyAxOS4yMDEgMTUu''@;'; put 'put ''MzU5IDE5LjI3IDE1LjM1NyBMIDMzLjk2OCAxNS4zNTcgQyAzMy44IDE2LjI5MiAzMi45ODMgMTcgMzIgMTcgWiBNIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjEuMzcyIDYgTCAxOSAxMC4wNDggWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNIDE1IDMwIEwgNCAzMCBDIDIuODk1IDMwIDIgMjkuMTA1IDIgMjggTCAyIDIxIEMgMiAxOS44OTUgMi44OTUgMTkgNCAxOSBMIDE1IDE5IEMgMTYuMTA1IDE5IDE3IDE5Ljg5NSAxNyAyMSBMIDE3IDI4IEMgMTcgMjkuMTA1IDE2LjEwNSAz''@;'; put 'put ''MCAxNSAzMCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAz''@;'; put 'put ''MiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBDIDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAx''@;'; put 'put ''LjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEu''@;'; put 'put ''MTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiIGQ9Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJh''@;'; put 'put ''ZGdlZCIgZD0iTSAzMiAxNyBMIDIxIDE3IEMgMTkuODk1IDE3IDE5IDE2LjEwNSAxOSAxNSBMIDE5IDggQyAxOSA2Ljg5NSAxOS44OTUgNiAyMSA2IEwgMjIuNTkgNiBDIDIyLjU5IDYuMDE5IDIyLjU5IDYuMDM3IDIyLjU5IDYuMDU2IEMgMjIuNTkgNi43MjkgMjIuNjggNy4zODEgMjIuODQ4''@;'; put 'put ''IDggTCAyMSA4IEwgMjEgMTUgTCAzMiAxNSBMIDMyIDEzLjE3NSBDIDMyLjcxNyAxMi45NzIgMzMuMzg5IDEyLjY2NCAzNCAxMi4yNjkgTCAzNCAxNSBDIDM0IDE2LjEwNSAzMy4xMDUgMTcgMzIgMTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMyLDMwSDIxYTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAxNSAxNyBMIDQgMTcgQyAyLjg5NSAxNyAyIDE2LjEwNSAyIDE1''@;'; put 'put ''IEwgMiA4IEMgMiA2Ljg5NSAyLjg5NSA2IDQgNiBMIDE1IDYgQyAxNi4xMDUgNiAxNyA2Ljg5NSAxNyA4IEwgMTcgMTUgQyAxNyAxNi4xMDUgMTYuMTA1IDE3IDE1IDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0gMzIgMTcgTCAyMSAxNyBDIDE5Ljg5NSAxNyAxOSAxNi4xMDUgMTkgMTUgTCAxOSA4IEMgMTkgNi44OTUgMTkuODk1IDYgMjEgNiBMIDIyLjU5IDYgQyAyMi41OSA2LjAxOSAyMi41OSA2LjAzNyAyMi41OSA2LjA1NiBDIDIyLjU5IDEwLjE0MSAyNS45MDEgMTMuNDUyIDI5Ljk4NiAx''@;'; put 'put ''My40NTIgQyAzMS40NjYgMTMuNDUyIDMyLjg0NCAxMy4wMTggMzQgMTIuMjY5IEwgMzQgMTUgQyAzNCAxNi4xMDUgMzMuMTA1IDE3IDMyIDE3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0gMTUgMzAgTCA0''@;'; put 'put ''IDMwIEMgMi44OTUgMzAgMiAyOS4xMDUgMiAyOCBMIDIgMjEgQyAyIDE5Ljg5NSAyLjg5NSAxOSA0IDE5IEwgMTUgMTkgQyAxNi4xMDUgMTkgMTcgMTkuODk1IDE3IDIxIEwgMTcgMjggQyAxNyAyOS4xMDUgMTYuMTA1IDMwIDE1IDMwIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQiIGQ9Ik0gMzIgMzAgTCAyMSAzMCBDIDE5Ljg5NSAzMCAxOSAyOS4xMDUgMTkgMjggTCAxOSAyMSBDIDE5IDE5Ljg5NSAxOS44OTUgMTkgMjEgMTkgTCAzMiAxOSBDIDMzLjEwNSAxOSAzNCAxOS44OTUgMzQgMjEgTCAzNCAyOCBD''@;'; put 'put ''IDM0IDI5LjEwNSAzMy4xMDUgMzAgMzIgMzAgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksbC5DbHJTaGFwZUhlYXRNYXA9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkg''@;'; put 'put ''TCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDI4IDEwIEwgMjggMjYgTCA4IDI2IFogTSA5LjYgMjQgTCAxNC4xIDI0IEwgMTQuMSAxOC44IEwgOS42IDE4LjggWiBNIDE0''@;'; put 'put ''LjEgMTEuNiBMIDkuNiAxMS42IEwgOS42IDE3LjIgTCAxNC4xIDE3LjIgWiBNIDI2IDI0IEwgMjYgMTguOCBMIDIxLjkgMTguOCBMIDIxLjkgMjQgWiBNIDI2IDExLjYgTCAyMS45IDExLjYgTCAyMS45IDE3LjIgTCAyNiAxNy4yIFogTSAxNS43IDExLjYgTCAxNS43IDE3LjIgTCAyMC4zIDE3''@;'; put 'put ''LjIgTCAyMC4zIDExLjYgWiBNIDE1LjcgMjQgTCAyMC4zIDI0IEwgMjAuMyAxOC44IEwgMTUuNyAxOC44IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAy''@;'; put 'put ''IDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDIzLjcyOCAxMCBDIDI0LjEwNSAx''@;'; put 'put ''MC41OTYgMjQuNTY0IDExLjEzNSAyNS4wOSAxMS42IEwgMjEuOSAxMS42IEwgMjEuOSAxNy4yIEwgMjYgMTcuMiBMIDI2IDEyLjI4NyBDIDI2LjYxMSAxMi42NzkgMjcuMjg0IDEyLjk4MyAyOCAxMy4xODIgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4xIDE4Ljgg''@;'; put 'put ''TCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxMS42IFogTSAxNS43IDI0IEwg''@;'; put 'put ''MjAuMyAyNCBMIDIwLjMgMTguOCBMIDE1LjcgMTguOCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMi0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAz''@;'; put 'put ''MSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gOCAxMCBMIDE5LjAyOCAxMCBM''@;'; put 'put ''IDE4LjA5MSAxMS42IEwgMTUuNyAxMS42IEwgMTUuNyAxNy4yIEwgMjAuMyAxNy4yIEwgMjAuMyAxNS4zNTcgTCAyMS45IDE1LjM1NyBMIDIxLjkgMTcuMiBMIDI2IDE3LjIgTCAyNiAxNS4zNTcgTCAyOCAxNS4zNTcgTCAyOCAyNiBMIDggMjYgWiBNIDkuNiAyNCBMIDE0LjEgMjQgTCAxNC4x''@;'; put 'put ''IDE4LjggTCA5LjYgMTguOCBaIE0gMTQuMSAxMS42IEwgOS42IDExLjYgTCA5LjYgMTcuMiBMIDE0LjEgMTcuMiBaIE0gMjYgMjQgTCAyNiAxOC44IEwgMjEuOSAxOC44IEwgMjEuOSAyNCBaIE0gMTUuNyAyNCBMIDIwLjMgMjQgTCAyMC4zIDE4LjggTCAxNS43IDE4LjggWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIx''@;'; put 'put ''LjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQu''@;'; put 'put ''ODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAz''@;'; put 'put ''NCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAzMiA1IEMgMzMuMTA1IDUgMzQgNS44OTYgMzQgNyBaIE0gOCAyNiBMIDI4IDI2IEwgMjggMTAgTCA4IDEwIFogTSAxMCAx''@;'; put 'put ''OSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTIgTCAyNiAxMiBaIE0gMjAgMTIgTCAyMCAxNyBMIDE2IDE3IEwgMTYgMTIgWiBN''@;'; put 'put ''IDE0IDEyIEwgMTQgMTcgTCAxMCAxNyBMIDEwIDEyIFoiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzQgMTIuMzQgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMg''@;'; put 'put ''Mi44OTYgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTYgMi44OTYgNSA0IDUgTCAyMi41NyA1IEMgMjIuMzEyIDYuODE3IDIyLjczMiA4LjU2NiAyMy42MzMgMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTMuMjMyIEMgMjguNDIxIDEzLjM0NSAyOC44NTkgMTMuNDIyIDI5''@;'; put 'put ''LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBNIDEwIDE5IEwgMTQgMTkgTCAxNCAyNCBMIDEwIDI0IFogTSAyMiAyNCBMIDIyIDE5IEwgMjYgMTkgTCAyNiAyNCBaIE0gMjAgMTkgTCAyMCAyNCBMIDE2IDI0IEwgMTYgMTkg''@;'; put 'put ''WiBNIDI2IDE3IEwgMjIgMTcgTCAyMiAxMiBMIDI1LjU4NCAxMiBDIDI1LjcxOSAxMi4xIDI1Ljg1OCAxMi4xOTYgMjYgMTIuMjg3IFogTSAyMCAxMiBMIDIwIDE3IEwgMTYgMTcgTCAxNiAxMiBaIE0gMTQgMTIgTCAxNCAxNyBMIDEwIDE3IEwgMTAgMTIgWiI+PC9wYXRoPlxuICA8Y2lyY2xl''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMjItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSI+PC9jaXJjbGU+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQi''@;'; put 'put ''IGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxOS4wMjggMTAgTCA4IDEwIEwgOCAyNiBMIDI4IDI2IEwgMjggMTUuMzU3IEwgMzQgMTUu''@;'; put 'put ''MzU3IFogTSAxMCAxOSBMIDE0IDE5IEwgMTQgMjQgTCAxMCAyNCBaIE0gMjIgMjQgTCAyMiAxOSBMIDI2IDE5IEwgMjYgMjQgWiBNIDIwIDE5IEwgMjAgMjQgTCAxNiAyNCBMIDE2IDE5IFogTSAyNiAxNyBMIDIyIDE3IEwgMjIgMTUuMzU3IEwgMjYgMTUuMzU3IFogTSAyMCAxNyBMIDE2IDE3''@;'; put 'put ''IEwgMTYgMTIgTCAxNy44NTYgMTIgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjAgMTUuMzU3IFogTSAxNCAxMiBMIDE0IDE3IEwgMTAgMTcgTCAx''@;'; put 'put ''MCAxMiBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIyLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIxLjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3''@;'; put 'put ''IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAx''@;'; put 'put ''LjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGwuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUg''@;'; put 'put ''QyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNSAzMSAzNCAzMC4xMDUgMzQgMjkgTCAzNCA3IEMgMzQgNS44OTUgMzMuMTA1IDUgMzIgNSBaIE0gNCAyOSBMIDQgNyBMIDMyIDcgTCAzMiAyOSBaIj48L3BhdGg+XG4g''@;'; put 'put ''IDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEzLjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiPjwvcG9seWdvbj5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEg''@;'; put 'put ''QyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk2IDMzLjEwNSA1IDMyIDUgWiBNIDIyLjU2IDI1Ljk0IEwgMTUuNDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3''@;'; put 'put ''IEwgMjkuNjUgMTMgTCAzMS4zNSAxNC4yOCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42Njgg''@;'; put 'put ''MjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0IEMg''@;'; put 'put ''MzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwb2x5Z29uIHBvaW50cz0iMTUuNjIgMTUuMjIyIDkuNjAyIDIzLjk2OCA1LjU1IDIwLjM4NCA2LjYxIDE5LjE4NiA5LjMwOCAyMS41NzIgMTUuNjM0IDEyLjM4IDIyLjM4NCAyMi4zOTUgMjkuMTM4IDEz''@;'; put 'put ''LjQ3IDMwLjQxNCAxNC40MzYgMjIuMzA4IDI1LjE0NSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BvbHlnb24+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzAuMzIgMTMuNDggTCAzMS4zOCAxNC4yOCBMIDIyLjU2IDI1Ljk0IEwgMTUu''@;'; put 'put ''NDYgMTUuMzYgTCA5LjEyIDI0LjY0IEwgNC42MiAyMC42NCBMIDYgMTkuMDUgTCA4LjcgMjEuNDQgTCAxNS40NiAxMS41NiBMIDIyLjY1IDIyLjI3IEwgMjkuMzEgMTMuNDYgQyAyNS4wNSAxMy4xIDIxLjk2OSA5LjIzMyAyMi41NyA1IEwgNCA1IEMgMi44OTYgNSAyIDUuODk2IDIgNyBMIDIg''@;'; put 'put ''MjkgQyAyIDMwLjEwNSAyLjg5NiAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgMTIuMzQgQyAzMi44OTUgMTMuMDM2IDMxLjYyNiAxMy40MjkgMzAuMzIgMTMuNDggWiI+PC9wYXRoPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ij48L2NpcmNsZT5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUg''@;'; put 'put ''MzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk1IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk1IDIuODk1IDUgNCA1IEwgMjEuOTU4IDUgTCAyMC43ODYgNyBMIDQgNyBMIDQgMjkgTCAzMiAyOSBMIDMyIDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0gMTUuNjIgMTUuMjIyIEwgOS42MDIgMjMuOTY4IEwgNS41NSAyMC4zODQgTCA2LjYxIDE5LjE4NiBMIDkuMzA4IDIxLjU3MiBMIDE1LjYzNCAxMi4zOCBMIDIyLjM4NCAyMi4zOTUgTCAyNy43MTcgMTUuMzQ4IEwgMjkuNzI0IDE1LjM0OCBMIDIyLjMwOCAyNS4xNDUgWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEu''@;'; put 'put ''MTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44''@;'; put 'put ''MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0''@;'; put 'put ''ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1IDE5LjA2''@;'; put 'put ''NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMjcuNDUyIDE1LjM1NyBMIDIyLjM4IDIyLjA2IEwgMTUuNjMgMTIgTCA5LjI4IDIxLjI4IEwgNi43NSAxOS4wNCBMIDUuNDIgMjAuNTMgTCA5LjY1IDI0LjI4IEwgMTUuNjEgMTUuNTYgTCAyMi4y''@;'; put 'put ''OCAyNS41IEwgMjkuOTU5IDE1LjM1NyBMIDM0IDE1LjM1NyBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3''@;'; put 'put ''OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDEx''@;'; put 'put ''LjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+JyksbC5DbHJTaGFwZVBpZUNoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcg''@;'; put 'put ''TCAzMiA3IEwgMzIgMjkgWiI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDE3IDI3IEMgMTIuNTgyIDI3IDkgMjMuNDE4IDkgMTkgQyA5IDE0LjU4MiAxMi41ODIgMTEgMTcgMTEgTCAxNyAxOSBMIDI1IDE5IEMgMjUgMjMuNDE4IDIxLjQxOCAyNyAxNyAyNyBaIE0gMjMuMjQ3IDIwLjQgTCAxNS40''@;'; put 'put ''IDIwLjQgTCAxNS40IDEyLjgwMiBDIDEyLjY0IDEzLjUxMyAxMC42MDEgMTYuMDE4IDEwLjYgMTkgQyAxMC42IDIyLjUzNSAxMy40NjUgMjUuNCAxNyAyNS40IEMgMjAuMDU0IDI1LjQwMSAyMi42MDggMjMuMjYxIDIzLjI0NyAyMC40IFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEwLjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMyI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNIDM0IDcgTCAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgQyAzMiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAy''@;'; put 'put ''Ljg5NiA1IDQgNSBMIDMyIDUgQyAzMy4xMDUgNSAzNCA1Ljg5NiAzNCA3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcg''@;'; put 'put ''MTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzMiAxMy4yMiBMIDMyIDI5IEwgNCAyOSBMIDQgNyBMIDIyLjU3IDcgQyAyMi41MjQgNi42''@;'; put 'put ''NjggMjIuNTAxIDYuMzM0IDIyLjUgNiBDIDIyLjUwMSA1LjY2NSAyMi41MjQgNS4zMzEgMjIuNTcgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDQgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA0IDMxIDM0IDMwLjEwNCAzNCAyOSBMIDM0IDEyLjM0''@;'; put 'put ''IEMgMzMuMzggMTIuNzMgMzIuNzA2IDEzLjAyNiAzMiAxMy4yMiBaIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTcgMjcgQyAxMi41ODIgMjcgOSAyMy40MTggOSAxOSBDIDkgMTQuNTgyIDEyLjU4MiAxMSAxNyAxMSBMIDE3IDE5IEwgMjUgMTkgQyAyNSAyMy40MTggMjEuNDE4IDI3IDE3IDI3''@;'; put 'put ''IFogTSAyMy4yNDcgMjAuNCBMIDE1LjQgMjAuNCBMIDE1LjQgMTIuODAyIEMgMTIuNjQgMTMuNTEzIDEwLjYwMSAxNi4wMTggMTAuNiAxOSBDIDEwLjYgMjIuNTM1IDEzLjQ2NSAyNS40IDE3IDI1LjQgQyAyMC4wNTQgMjUuNDAxIDIyLjYwOCAyMy4yNjEgMjMuMjQ3IDIwLjQgWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIj48L3BhdGg+XG4gIDxwYXRoIGQ9Ik0gMTkgOSBDIDIzLjQxOCA5IDI3IDEyLjU4MiAyNyAxNyBMIDE5IDE3IFogTSAyNS4xOTggMTUuNCBDIDI0LjYyIDEzLjE1IDIyLjg0OSAxMS4zOCAyMC42IDEw''@;'; put 'put ''LjgwMSBMIDIwLjYgMTUuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiPjwvcGF0aD5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFk''@;'; put 'put ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAz''@;'; put 'put ''MSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUgMTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSAyNSAxOSBMIDE3IDE5IEwg''@;'; put 'put ''MTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBDIDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiBNIDE5IDE3IEwgMjcgMTcgQyAyNyAxMi41ODIgMjMuNDE4IDkgMTkgOSBaIj48L3BhdGg+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiPjwvY2lyY2xlPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAy''@;'; put 'put ''OSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwgNCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiPjwvcGF0''@;'; put 'put ''aD5cbiAgPHBhdGggZD0iTSAxNyAyNyBDIDEyLjU4MiAyNyA5IDIzLjQxOCA5IDE5IEMgOSAxNC41ODIgMTIuNTgyIDExIDE3IDExIEwgMTcgMTkgTCAyNSAxOSBDIDI1IDIzLjQxOCAyMS40MTggMjcgMTcgMjcgWiBNIDIzLjI0NyAyMC40IEwgMTUuNCAyMC40IEwgMTUuNCAxMi44MDIgQyAx''@;'; put 'put ''Mi42NCAxMy41MTMgMTAuNjAxIDE2LjAxOCAxMC42IDE5IEMgMTAuNiAyMi41MzUgMTMuNDY1IDI1LjQgMTcgMjUuNCBDIDIwLjA1NCAyNS40MDEgMjIuNjA4IDIzLjI2MSAyMy4yNDcgMjAuNCBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCI+PC9wYXRoPlxuICA8cGF0aCBkPSJNIDI3IDE3IEwgMTkgMTcgTCAxOSAxNS4zNDUgQyAxOS4wMjEgMTUuMzQ4IDE5LjA0MyAxNS4zNDkgMTkuMDY0IDE1LjM1MSBDIDE5LjEzNCAxNS4zNTcgMTkuMjAxIDE1LjM1OSAxOS4yNyAxNS4zNTcgTCAyNi44MzEgMTUuMzU3IEMgMjYu''@;'; put 'put ''OTQyIDE1Ljg4NyAyNyAxNi40MzcgMjcgMTcgWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiPjwvcGF0aD5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEz''@;'; put 'put ''LjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIj48L3BhdGg+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIu''@;'; put 'put ''Mzk1IEMgMTYuODA3IDEzLjU4MyAxNy41NzEgMTUuMTk3IDE5IDE1LjM0NSBMIDE5IDE3IEwgMjcgMTcgQyAyNyAxNi40MzcgMjYuOTQyIDE1Ljg4NyAyNi44MzEgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSAyNSAxOSBMIDE3IDE5IEwgMTcgMTEgQyAxMi41ODIgMTEgOSAxNC41ODIgOSAxOSBD''@;'; put 'put ''IDkgMjMuNDE4IDEyLjU4MiAyNyAxNyAyNyBDIDIxLjQxOCAyNyAyNSAyMy40MTggMjUgMTkgWiI+PC9wYXRoPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNIDI2Ljg1NCAxLjE0NCBMIDIx''@;'; put 'put ''LjEzNCAxMS4wMDQgQyAyMC41NzkgMTEuODE4IDIxLjExNCAxMi45MjggMjIuMDk3IDEzLjAwMSBDIDIyLjE0MiAxMy4wMDUgMjIuMTg4IDEzLjAwNiAyMi4yMzQgMTMuMDA0IEwgMzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQu''@;'; put 'put ''ODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiI+PC9wYXRoPicpLGwuQ2xyU2hhcGVTY2F0dGVyUGxvdD0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMxIDM0IDMwLjEwNSAzNCAyOSBMIDM0IDcgQyAzNCA1Ljg5NSAzMy4xMDUg''@;'; put 'put ''NSAzMiA1IFogTSA0IDI5IEwgNCA3IEwgMzIgNyBMIDMyIDI5IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQg''@;'; put 'put ''TCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4z''@;'; put 'put ''OTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEw''@;'; put 'put ''LjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1''@;'; put 'put ''Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIu''@;'; put 'put ''MTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDgg''@;'; put 'put ''QyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEg''@;'; put 'put ''MjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAy''@;'; put 'put ''NC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIg''@;'; put 'put ''MjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1''@;'; put 'put ''IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDkuMTAxIDE1LjggQyA5LjQxMyAxNi4xMTEgOS45MTkgMTYuMTExIDEwLjIzMSAxNS44IEwgMTEuMzkxIDE0LjY0IEwgMTIuNTUxIDE1LjggQyAxMi45NjQgMTYuMjU2IDEzLjcxNyAxNi4wOTQgMTMuOTA1IDE1LjUwNyBDIDE0''@;'; put 'put ''LjAwMiAxNS4yMDggMTMuOTE0IDE0Ljg4MSAxMy42ODEgMTQuNjcgTCAxMi41MzEgMTMuNTQgTCAxMy42OTEgMTIuMzggQyAxNC4xNDcgMTEuOTY2IDEzLjk4NSAxMS4yMTQgMTMuMzk5IDExLjAyNSBDIDEzLjEgMTAuOTI5IDEyLjc3MiAxMS4wMTcgMTIuNTYxIDExLjI1IEwgMTEuNDAxIDEy''@;'; put 'put ''LjQxIEwgMTAuMjMxIDExLjIyIEMgOS44MTcgMTAuNzYzIDkuMDY1IDEwLjkyNiA4Ljg3NyAxMS41MTIgQyA4Ljc4IDExLjgxMSA4Ljg2OCAxMi4xMzkgOS4xMDEgMTIuMzUgTCAxMC4yNjEgMTMuNTQgTCA5LjEwMSAxNC42NyBDIDguNzg5IDE0Ljk4MiA4Ljc4OSAxNS40ODcgOS4xMDEgMTUu''@;'; put 'put ''OCBaIE0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42''@;'; put 'put ''MTcgMTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1''@;'; put 'put ''NiBDIDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYg''@;'; put 'put ''WiBNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEzIDE5Ljc1MSAyNy43MjUgMTkuNDI0''@;'; put 'put ''IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2Ljk1MyBMIDI0LjA0MiAxNS43NjMg''@;'; put 'put ''QyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAzIDIyLjkxMiAyMC4zNDMgWiIvPlxu''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIu''@;'; put 'put ''NTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAuMjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAx''@;'; put 'put ''Ni4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAxMS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45Mjkg''@;'; put 'put ''MTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3''@;'; put 'put ''IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYu''@;'; put 'put ''MzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTkuOTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIw''@;'; put 'put ''LjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYgMjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1''@;'; put 'put ''IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNC0tYmFkZ2VkIiBkPSJNIDIyLjkxMiAyMC4zNDMgQyAyMy4yMjQgMjAuNjU0IDIzLjczIDIwLjY1NCAyNC4wNDIgMjAuMzQzIEwgMjUuMjAyIDE5LjE4MyBMIDI2LjM2MiAyMC4zNDMgQyAyNi43NzUgMjAuNzk5IDI3LjUyOCAyMC42MzcgMjcuNzE2IDIwLjA1IEMgMjcuODEz''@;'; put 'put ''IDE5Ljc1MSAyNy43MjUgMTkuNDI0IDI3LjQ5MiAxOS4yMTMgTCAyNi4zNDIgMTguMDgzIEwgMjcuNTAyIDE2LjkyMyBDIDI3Ljk1OCAxNi41MDkgMjcuNzk2IDE1Ljc1NyAyNy4yMSAxNS41NjggQyAyNi45MTEgMTUuNDcyIDI2LjU4MyAxNS41NiAyNi4zNzIgMTUuNzkzIEwgMjUuMjEyIDE2''@;'; put 'put ''Ljk1MyBMIDI0LjA0MiAxNS43NjMgQyAyMy42MjggMTUuMzA2IDIyLjg3NiAxNS40NjkgMjIuNjg4IDE2LjA1NSBDIDIyLjU5MSAxNi4zNTQgMjIuNjc5IDE2LjY4MiAyMi45MTIgMTYuODkzIEwgMjQuMDcyIDE4LjA4MyBMIDIyLjkxMiAxOS4yMTMgQyAyMi42IDE5LjUyNSAyMi42IDIwLjAz''@;'; put 'put ''IDIyLjkxMiAyMC4zNDMgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTSAzNCAxMi4zNCBMIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NiAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1Ljg5NiAyLjg5NiA1IDQgNSBMIDIyLjU3IDUgQyAyMS45NjkgOS4yMzMgMjUuMDUg''@;'; put 'put ''MTMuMSAyOS4zMSAxMy40NiBMIDMwLjMyIDEzLjQ4IEMgMzEuNjI2IDEzLjQyOSAzMi44OTUgMTMuMDM2IDM0IDEyLjM0IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2''@;'; put 'put ''LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAx''@;'; put 'put ''Mi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcg''@;'; put 'put ''QyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTku''@;'; put 'put ''OTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYg''@;'; put 'put ''MjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2''@;'; put 'put ''NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3Ljcx''@;'; put 'put ''NiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1''@;'; put 'put ''Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAx''@;'; put 'put ''OS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTSAzNCAyOSBDIDM0IDMwLjEwNSAzMy4xMDUgMzEgMzIgMzEgTCA0IDMxIEMgMi44OTUgMzEgMiAzMC4xMDUgMiAyOSBMIDIgNyBDIDIgNS44OTUgMi44OTUgNSA0IDUgTCAyMS45NTggNSBMIDIwLjc4NiA3IEwg''@;'; put 'put ''NCA3IEwgNCAyOSBMIDMyIDI5IEwgMzIgMTUuMzU3IEwgMzQgMTUuMzU3IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0gOS4xMDEgMTUuOCBDIDkuNDEzIDE2LjExMSA5LjkxOSAxNi4xMTEgMTAu''@;'; put 'put ''MjMxIDE1LjggTCAxMS4zOTEgMTQuNjQgTCAxMi41NTEgMTUuOCBDIDEyLjk2NCAxNi4yNTYgMTMuNzE3IDE2LjA5NCAxMy45MDUgMTUuNTA3IEMgMTQuMDAyIDE1LjIwOCAxMy45MTQgMTQuODgxIDEzLjY4MSAxNC42NyBMIDEyLjUzMSAxMy41NCBMIDEzLjY5MSAxMi4zOCBDIDE0LjE0NyAx''@;'; put 'put ''MS45NjYgMTMuOTg1IDExLjIxNCAxMy4zOTkgMTEuMDI1IEMgMTMuMSAxMC45MjkgMTIuNzcyIDExLjAxNyAxMi41NjEgMTEuMjUgTCAxMS40MDEgMTIuNDEgTCAxMC4yMzEgMTEuMjIgQyA5LjgxNyAxMC43NjMgOS4wNjUgMTAuOTI2IDguODc3IDExLjUxMiBDIDguNzggMTEuODExIDguODY4''@;'; put 'put ''IDEyLjEzOSA5LjEwMSAxMi4zNSBMIDEwLjI2MSAxMy41NCBMIDkuMTAxIDE0LjY3IEMgOC43ODkgMTQuOTgyIDguNzg5IDE1LjQ4NyA5LjEwMSAxNS44IFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9''@;'; put 'put ''Ik0gMTUuMTc2IDI1LjUzNiBDIDE1LjQ4OCAyNS44NDcgMTUuOTk0IDI1Ljg0NyAxNi4zMDYgMjUuNTM2IEwgMTcuNDY2IDI0LjM3NiBMIDE4LjYyNiAyNS41MzYgQyAxOS4wMzkgMjUuOTkyIDE5Ljc5MiAyNS44MyAxOS45OCAyNS4yNDMgQyAyMC4wNzcgMjQuOTQ0IDE5Ljk4OSAyNC42MTcg''@;'; put 'put ''MTkuNzU2IDI0LjQwNiBMIDE4LjYwNiAyMy4yNzYgTCAxOS43NjYgMjIuMTE2IEMgMjAuMjIyIDIxLjcwMiAyMC4wNiAyMC45NSAxOS40NzQgMjAuNzYxIEMgMTkuMTc1IDIwLjY2NSAxOC44NDcgMjAuNzUzIDE4LjYzNiAyMC45ODYgTCAxNy40NzYgMjIuMTQ2IEwgMTYuMzA2IDIwLjk1NiBD''@;'; put 'put ''IDE1Ljg5MiAyMC40OTkgMTUuMTQgMjAuNjYyIDE0Ljk1MiAyMS4yNDggQyAxNC44NTUgMjEuNTQ3IDE0Ljk0MyAyMS44NzUgMTUuMTc2IDIyLjA4NiBMIDE2LjMzNiAyMy4yNzYgTCAxNS4xNzYgMjQuNDA2IEMgMTQuODY0IDI0LjcxOCAxNC44NjQgMjUuMjIzIDE1LjE3NiAyNS41MzYgWiIv''@;'; put 'put ''PlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgZD0iTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQz''@;'; put 'put ''IEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3LjcxNiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMg''@;'; put 'put ''MjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0''@;'; put 'put ''LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAxOS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYuODU0''@;'; put 'put ''IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1NSAx''@;'; put 'put ''MS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUuMjQ1''@;'; put 'put ''IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA5LjEwMSAxNS44IEMgOS40MTMgMTYuMTExIDkuOTE5IDE2LjExMSAxMC4yMzEgMTUuOCBMIDExLjM5MSAxNC42NCBMIDEyLjU1MSAxNS44IEMgMTIuOTY0IDE2''@;'; put 'put ''LjI1NiAxMy43MTcgMTYuMDk0IDEzLjkwNSAxNS41MDcgQyAxNC4wMDIgMTUuMjA4IDEzLjkxNCAxNC44ODEgMTMuNjgxIDE0LjY3IEwgMTIuNTMxIDEzLjU0IEwgMTMuNjkxIDEyLjM4IEMgMTQuMTQ3IDExLjk2NiAxMy45ODUgMTEuMjE0IDEzLjM5OSAxMS4wMjUgQyAxMy4xIDEwLjkyOSAx''@;'; put 'put ''Mi43NzIgMTEuMDE3IDEyLjU2MSAxMS4yNSBMIDExLjQwMSAxMi40MSBMIDEwLjIzMSAxMS4yMiBDIDkuODE3IDEwLjc2MyA5LjA2NSAxMC45MjYgOC44NzcgMTEuNTEyIEMgOC43OCAxMS44MTEgOC44NjggMTIuMTM5IDkuMTAxIDEyLjM1IEwgMTAuMjYxIDEzLjU0IEwgOS4xMDEgMTQuNjcg''@;'; put 'put ''QyA4Ljc4OSAxNC45ODIgOC43ODkgMTUuNDg3IDkuMTAxIDE1LjggWiBNIDE1LjE3NiAyNS41MzYgQyAxNS40ODggMjUuODQ3IDE1Ljk5NCAyNS44NDcgMTYuMzA2IDI1LjUzNiBMIDE3LjQ2NiAyNC4zNzYgTCAxOC42MjYgMjUuNTM2IEMgMTkuMDM5IDI1Ljk5MiAxOS43OTIgMjUuODMgMTku''@;'; put 'put ''OTggMjUuMjQzIEMgMjAuMDc3IDI0Ljk0NCAxOS45ODkgMjQuNjE3IDE5Ljc1NiAyNC40MDYgTCAxOC42MDYgMjMuMjc2IEwgMTkuNzY2IDIyLjExNiBDIDIwLjIyMiAyMS43MDIgMjAuMDYgMjAuOTUgMTkuNDc0IDIwLjc2MSBDIDE5LjE3NSAyMC42NjUgMTguODQ3IDIwLjc1MyAxOC42MzYg''@;'; put 'put ''MjAuOTg2IEwgMTcuNDc2IDIyLjE0NiBMIDE2LjMwNiAyMC45NTYgQyAxNS44OTIgMjAuNDk5IDE1LjE0IDIwLjY2MiAxNC45NTIgMjEuMjQ4IEMgMTQuODU1IDIxLjU0NyAxNC45NDMgMjEuODc1IDE1LjE3NiAyMi4wODYgTCAxNi4zMzYgMjMuMjc2IEwgMTUuMTc2IDI0LjQwNiBDIDE0Ljg2''@;'; put 'put ''NCAyNC43MTggMTQuODY0IDI1LjIyMyAxNS4xNzYgMjUuNTM2IFogTSAyMi45MTIgMjAuMzQzIEMgMjMuMjI0IDIwLjY1NCAyMy43MyAyMC42NTQgMjQuMDQyIDIwLjM0MyBMIDI1LjIwMiAxOS4xODMgTCAyNi4zNjIgMjAuMzQzIEMgMjYuNzc1IDIwLjc5OSAyNy41MjggMjAuNjM3IDI3Ljcx''@;'; put 'put ''NiAyMC4wNSBDIDI3LjgxMyAxOS43NTEgMjcuNzI1IDE5LjQyNCAyNy40OTIgMTkuMjEzIEwgMjYuMzQyIDE4LjA4MyBMIDI3LjUwMiAxNi45MjMgQyAyNy45NTggMTYuNTA5IDI3Ljc5NiAxNS43NTcgMjcuMjEgMTUuNTY4IEMgMjYuOTExIDE1LjQ3MiAyNi41ODMgMTUuNTYgMjYuMzcyIDE1''@;'; put 'put ''Ljc5MyBMIDI1LjIxMiAxNi45NTMgTCAyNC4wNDIgMTUuNzYzIEMgMjMuNjI4IDE1LjMwNiAyMi44NzYgMTUuNDY5IDIyLjY4OCAxNi4wNTUgQyAyMi41OTEgMTYuMzU0IDIyLjY3OSAxNi42ODIgMjIuOTEyIDE2Ljg5MyBMIDI0LjA3MiAxOC4wODMgTCAyMi45MTIgMTkuMjEzIEMgMjIuNiAx''@;'; put 'put ''OS41MjUgMjIuNiAyMC4wMyAyMi45MTIgMjAuMzQzIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAy''@;'; put 'put ''MS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4''@;'; put 'put ''NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxsLkNsclNoYXBlVGlja0NoYXJ0PSgwLGEuY2xySWNvblNWRykoJ1xuICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIgMzEgQyAzMy4xMDUgMzEgMzQgMzAuMTA1IDM0IDI5IEwgMzQgNyBDIDM0''@;'; put 'put ''IDUuODk1IDMzLjEwNSA1IDMyIDUgWiBNIDQgMjkgTCA0IDcgTCAzMiA3IEwgMzIgMjkgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTSA2IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBM''@;'; put 'put ''IDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAyNS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3Ljcy''@;'; put 'put ''MyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTSAzNCA3IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2''@;'; put 'put ''IDIuODk2IDUgNCA1IEwgMzIgNSBDIDMzLjEwNSA1IDM0IDUuODk2IDM0IDcgWiBNIDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUg''@;'; put 'put ''MjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTggMjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0gMzIgMTMuMjIgTCAzMiAyOSBMIDQgMjkgTCA0IDcgTCAyMi41NyA3IEMgMjIuNTI0IDYuNjY4IDIyLjUwMSA2LjMzNCAyMi41IDYgQyAyMi41MDEgNS42NjUgMjIuNTI0IDUuMzMxIDIyLjU3IDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44''@;'; put 'put ''OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA0IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMzLjEwNCAzMSAzNCAzMC4xMDQgMzQgMjkgTCAzNCAxMi4zNCBDIDMzLjM4IDEyLjczIDMyLjcwNiAxMy4wMjYgMzIgMTMuMjIgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0gNiAyNSBMIDggMjUgTCA4IDIyIEwgMTAgMjIgTCAxMCAyNSBMIDEzIDI1IEwgMTMgMjIgTCAxNSAyMiBMIDE1IDI1IEwgMTggMjUgTCAxOCAyMiBMIDIwIDIyIEwgMjAgMjUgTCAyMyAyNSBMIDIzIDIyIEwgMjUgMjIgTCAyNSAy''@;'; put 'put ''NSBMIDI3LjcyMyAyNSBDIDI4LjAyMyAyNS4wMiAyOC4yOTMgMjUuMTggMjguNDYzIDI1LjQzIEMgMjguOTAzIDI2LjA2IDI4LjQ4MyAyNi45MyAyNy43MjMgMjYuOTkgTCA2IDI2Ljk5MSBaIi8+XG4gIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNIDM0IDEyLjM0IEwgMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMx''@;'; put 'put ''IEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjIuNTcgNSBDIDIxLjk2OSA5LjIzMyAyNS4wNSAxMy4xIDI5LjMxIDEzLjQ2IEwgMzAuMzIgMTMuNDggQyAzMS42MjYgMTMuNDI5IDMyLjg5NSAxMy4wMzYgMzQgMTIuMzQgWiBN''@;'; put 'put ''IDYgMjYuOTkxIEwgMjcuNzIzIDI2Ljk5IEMgMjguNDgzIDI2LjkzIDI4LjkwMyAyNi4wNiAyOC40NjMgMjUuNDMgQyAyOC4yOTMgMjUuMTggMjguMDIzIDI1LjAyIDI3LjcyMyAyNSBMIDI1IDI1IEwgMjUgMjIgTCAyMyAyMiBMIDIzIDI1IEwgMjAgMjUgTCAyMCAyMiBMIDE4IDIyIEwgMTgg''@;'; put 'put ''MjUgTCAxNSAyNSBMIDE1IDIyIEwgMTMgMjIgTCAxMyAyNSBMIDEwIDI1IEwgMTAgMjIgTCA4IDIyIEwgOCAyNSBMIDYgMjUgWiIvPlxuICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5''@;'; put 'put ''PSI2IiByPSI1Ii8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNIDM0IDI5IEMgMzQgMzAuMTA1IDMzLjEwNSAzMSAzMiAzMSBMIDQgMzEgQyAyLjg5NSAzMSAyIDMwLjEwNSAyIDI5IEwgMiA3IEMgMiA1''@;'; put 'put ''Ljg5NSAyLjg5NSA1IDQgNSBMIDIxLjk1OCA1IEwgMjAuNzg2IDcgTCA0IDcgTCA0IDI5IEwgMzIgMjkgTCAzMiAxNS4zNTcgTCAzNCAxNS4zNTcgWiIvPlxuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTSA2''@;'; put 'put ''IDI1IEwgOCAyNSBMIDggMjIgTCAxMCAyMiBMIDEwIDI1IEwgMTMgMjUgTCAxMyAyMiBMIDE1IDIyIEwgMTUgMjUgTCAxOCAyNSBMIDE4IDIyIEwgMjAgMjIgTCAyMCAyNSBMIDIzIDI1IEwgMjMgMjIgTCAyNSAyMiBMIDI1IDI1IEwgMjcuNzIzIDI1IEMgMjguMDIzIDI1LjAyIDI4LjI5MyAy''@;'; put 'put ''NS4xOCAyOC40NjMgMjUuNDMgQyAyOC45MDMgMjYuMDYgMjguNDgzIDI2LjkzIDI3LjcyMyAyNi45OSBMIDYgMjYuOTkxIFoiLz5cbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0gMjYu''@;'; put 'put ''ODU0IDEuMTQ0IEwgMjEuMTM0IDExLjAwNCBDIDIwLjU3OSAxMS44MTggMjEuMTE0IDEyLjkyOCAyMi4wOTcgMTMuMDAxIEMgMjIuMTQyIDEzLjAwNSAyMi4xODggMTMuMDA2IDIyLjIzNCAxMy4wMDQgTCAzMy42ODQgMTMuMDA0IEMgMzQuNjY5IDEzLjAzNiAzNS4zMTkgMTEuOTkxIDM0Ljg1''@;'; put 'put ''NSAxMS4xMjIgQyAzNC44MzQgMTEuMDgxIDM0LjgxIDExLjA0MiAzNC43ODQgMTEuMDA0IEwgMjkuMDY0IDEuMTQ0IEMgMjguNTcgMC4yOTkgMjcuMzQ4IDAuMjk5IDI2Ljg1NCAxLjE0NCBaIi8+XG4gIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiIGQ9Ik0gMzQgMjkgQyAzNCAzMC4xMDUgMzMuMTA1IDMxIDMyIDMxIEwgNCAzMSBDIDIuODk2IDMxIDIgMzAuMTA1IDIgMjkgTCAyIDcgQyAyIDUuODk2IDIuODk2IDUgNCA1IEwgMjEuOTU4IDUgTCAxNy42MjUgMTIuMzk1IEMgMTYuNzk1IDEzLjYwMSAxNy41OTQgMTUu''@;'; put 'put ''MjQ1IDE5LjA2NCAxNS4zNTEgQyAxOS4xMzQgMTUuMzU3IDE5LjIwMSAxNS4zNTkgMTkuMjcgMTUuMzU3IEwgMzQgMTUuMzU3IFogTSA2IDI2Ljk5MSBMIDI3LjcyMyAyNi45OSBDIDI4LjQ4MyAyNi45MyAyOC45MDMgMjYuMDYgMjguNDYzIDI1LjQzIEMgMjguMjkzIDI1LjE4IDI4LjAyMyAy''@;'; put 'put ''NS4wMiAyNy43MjMgMjUgTCAyNSAyNSBMIDI1IDIyIEwgMjMgMjIgTCAyMyAyNSBMIDIwIDI1IEwgMjAgMjIgTCAxOCAyMiBMIDE4IDI1IEwgMTUgMjUgTCAxNSAyMiBMIDEzIDIyIEwgMTMgMjUgTCAxMCAyNSBMIDEwIDIyIEwgOCAyMiBMIDggMjUgTCA2IDI1IFoiLz5cbiAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTSAyNi44NTQgMS4xNDQgTCAyMS4xMzQgMTEuMDA0IEMgMjAuNTc5IDExLjgxOCAyMS4xMTQgMTIuOTI4IDIyLjA5NyAxMy4wMDEgQyAyMi4xNDIgMTMuMDA1IDIyLjE4''@;'; put 'put ''OCAxMy4wMDYgMjIuMjM0IDEzLjAwNCBMIDMzLjY4NCAxMy4wMDQgQyAzNC42NjkgMTMuMDM2IDM1LjMxOSAxMS45OTEgMzQuODU1IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4y''@;'; put 'put ''OTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxsLkNsclNoYXBlQmVsbEN1cnZlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4xMSwwLDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAsMSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44''@;'; put 'put ''OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQuMTYsOC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6bC5DbHJTaGFwZUF4aXND''@;'; put 'put ''aGFydCwiYmFyLWNoYXJ0IjpsLkNsclNoYXBlQmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6bC5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6bC5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjpsLkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6bC5DbHJTaGFw''@;'; put 'put ''ZUdyaWRDaGFydCwibGluZS1jaGFydCI6bC5DbHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjpsLkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOmwuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6bC5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6bC5DbHJTaGFw''@;'; put 'put ''ZUJveFBsb3QsImhlYXQtbWFwIjpsLkNsclNoYXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6bC5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkNoYXJ0U2hhcGVzWyJsaW5lLWNo''@;'; put 'put ''YXJ0Il0pKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQobC5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjoKLyohKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuQ29tbWVyY2VTaGFwZXM9bC5DbHJTaGFwZUZhY3Rvcnk9bC5DbHJTaGFw''@;'; put 'put ''ZUVtcGxveWVlPWwuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPWwuQ2xyU2hhcGVSdWJsZT1sLkNsclNoYXBlUGVzbz1sLkNsclNoYXBlQ29pbkJhZz1sLkNsclNoYXBlQml0Y29pbj1sLkNsclNoYXBlWWVuPWwuQ2xyU2hhcGVXb249bC5DbHJTaGFwZVJ1cGVlPWwuQ2xyU2hhcGVQb3VuZD1sLkNs''@;'; put 'put ''clNoYXBlRUNoZWNrPWwuQ2xyU2hhcGVEb2xsYXJCaWxsPWwuQ2xyU2hhcGVCYW5rPWwuQ2xyU2hhcGVDcmVkaXRDYXJkPWwuQ2xyU2hhcGVEb2xsYXI9bC5DbHJTaGFwZUV1cm89bC5DbHJTaGFwZVN0b3JlPWwuQ2xyU2hhcGVXYWxsZXQ9bC5DbHJTaGFwZVNob3BwaW5nQ2FydD1sLkNsclNo''@;'; put 'put ''YXBlUGlnZ3lCYW5rPWwuQ2xyU2hhcGVTaG9wcGluZ0JhZz1sLkNsclNoYXBlQ2FsY3VsYXRvcj12b2lkIDA7dmFyIHA9YSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpO2E9YSgKLyoh''@;'; put 'put ''IC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGwuQ2xyU2hhcGVDYWxjdWxhdG9yPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTgsMzJWNEgyOFYzMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJN''@;'; put 'put ''MTIsOEgyNS42N1Y2SDExYTEsMSwwLDAsMC0xLDF2NC42N2gyWiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHBvaW50cz0iMTIgMTYgMTAgMTYgMTAgMTggMTQgMTggMTQgMTQgMTIgMTQgMTIgMTYiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBwb2ludHM9IjI0IDE2IDIyIDE2IDIyIDE4IDI2IDE4IDI2IDE0IDI0IDE0IDI0IDE2Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgcG9pbnRzPSIxOCAxNiAxNiAxNiAxNiAxOCAyMCAxOCAyMCAxNCAxOCAxNCAxOCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIHBvaW50cz0iMTIgMjIgMTAgMjIgMTAgMjQgMTQgMjQgMTQg''@;'; put 'put ''MjAgMTIgMjAgMTIgMjIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiBwb2ludHM9IjI0IDIyIDIyIDIyIDIyIDI0IDI2IDI0IDI2IDIwIDI0IDIwIDI0IDIyIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgcG9pbnRzPSIxOCAyMiAxNiAyMiAxNiAyNCAyMCAyNCAyMCAyMCAxOCAyMCAxOCAyMiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIHBvaW50cz0iMTIg''@;'; put 'put ''MjggMTAgMjggMTAgMzAgMTQgMzAgMTQgMjYgMTIgMjYgMTIgMjgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgcG9pbnRzPSIyNCAyOCAyMiAyOCAyMiAzMCAyNiAzMCAyNiAyNiAyNCAyNiAyNCAyOCIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiBwb2ludHM9IjE4IDI4IDE2IDI4IDE2IDMwIDIwIDMwIDIwIDI2IDE4IDI2IDE4IDI4Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJaTTEyLDI4SDEwVjI2aDJabTAtNkgxMFYyMGgyWm0wLTZIMTBWMTRoMlptNywxMkgxN1YyNmgyWm0wLTZIMTdWMjBoMlptMC02SDE3VjE0aDJa''@;'; put 'put ''bTcsMTJIMjRWMjZoMlptMC02SDI0VjIwaDJabTAtNkgyNFYxNGgyWm0wLTdIMTBWNUgyNloiLz4nKSxsLkNsclNoYXBlU2hvcHBpbmdCYWc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNSwxMlY5LjA1YTcs''@;'; put 'put ''NywwLDEsMC0xNCwwdjdhMSwxLDAsMCwwLDIsMFYxNGg4VjEySDEzVjkuMDVhNSw1LDAsMSwxLDEwLDBWMTZhMSwxLDAsMSwwLDIsMFYxNGg1VjMySDZWMTRIOVYxMkg0VjMyLjA5QTEuOTEsMS45MSwwLDAsMCw1LjkxLDM0SDMwLjA5QTEuOTEsMS45MSwwLDAsMCwzMiwzMi4wOVYxMloiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xMyw5LjIyYTUsNSwwLDEsMSwxMCwwVjEyaDJWOS4yMmE3LDcsMCwxLDAtMTQsMFYxMmgyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIgZD0iTTI1LDEydjMuMWExLDEsMCwxLDEtMiwwVjEySDEzdjMuMWExLDEsMCwwLDEtMiwwVjEySDRWMzJhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjEyWiIvPicpLGwuQ2xyU2hhcGVQaWdneUJhbms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS43MiwxMC40N2ExMS42NSwxMS42NSwwLDAsMC02LjMxLjUyQS44LjgsMCwxLDAsMTQsMTIuNDgsMTAuMTEsMTAuMTEsMCwwLDEsMTkuNDQsMTJhLjguOCwwLDEsMCwuMjgtMS41N1oiLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyNS4zOCIgY3k9IjE2LjcxIiByPSIxLjM2Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM1LjUxLDE4LjYzYTEsMSwwLDAs''@;'; put 'put ''MC0uODQtLjQ0LDMuNDIsMy40MiwwLDAsMS0yLjA5LTEuMTIsMTcuMzUsMTcuMzUsMCwwLDEtMi42My0zLjc4bDIuODgtNC41QTEuODksMS44OSwwLDAsMCwzMyw3YTEuNzcsMS43NywwLDAsMC0xLjMzLTEsMTAuMTIsMTAuMTIsMCwwLDAtNS4zOS43NSwxMi43MiwxMi43MiwwLDAsMC0yLjcy''@;'; put 'put ''LDEuNjMsMTYuOTQsMTYuOTQsMCwwLDAtNS4xNi0xLjM5QzExLjMxLDYuMyw0LjgzLDEwLjksNCwxN0g0YTIuNTYsMi41NiwwLDAsMS0xLjM4LTEuNTMsMS44MSwxLjgxLDAsMCwxLC4xNC0xLjQsMS4xOSwxLjE5LDAsMCwxLC40My0uNDMsMS4wOCwxLjA4LDAsMCwwLTEuMTItMS44NUEzLjMx''@;'; put 'put ''LDMuMzEsMCwwLDAsLjkxLDEzYTQsNCwwLDAsMC0uMzMsMy4wOEE0Ljc2LDQuNzYsMCwwLDAsMywxOC45NWwuOTIuNDZhMTcuNTgsMTcuNTgsMCwwLDAsMS44Miw3bC4xNy4zOEEyMywyMywwLDAsMCw5LjIsMzEuODhhMSwxLDAsMCwwLC43NS4zNGg0LjUyYTEsMSwwLDAsMCwuOTItMS4zOEwx''@;'; put 'put ''NSwyOS45NGwxLjE4LjEzYTIwLjMzLDIwLjMzLDAsMCwwLDQsMGMuMzcuNi43NywxLjIsMS4yMSwxLjc5YTEsMSwwLDAsMCwuOC40MWg0LjM0YTEsMSwwLDAsMCwuOTItMS4zOWMtLjE3LS40LS4zNC0uODMtLjQ3LTEuMi0uMTgtLjUzLS4zMi0xLS40My0xLjQ1QTEzLjE4LDEzLjE4LDAsMCww''@;'; put 'put ''LDI5LjU2LDI2YTEyLjUsMTIuNSwwLDAsMCwzLDAsMSwxLDAsMCwwLC43OC0uNjJsMi4yNi01LjgxQTEsMSwwLDAsMCwzNS41MSwxOC42M1ptLTMuNzgsNS40NGExMS4zNywxMS4zNywwLDAsMS0yLjM1LS4xMWgwYTguMiw4LjIsMCwwLDEtMi41My0uODcsMSwxLDAsMCwwLS45MywxLjc3LDEx''@;'; put 'put ''LjcyLDExLjcyLDAsMCwwLDEuMjkuNTgsOCw4LDAsMCwxLTEuOCwxLjE2bC0xLjA2LjQ4cy40OSwyLjE5LjgyLDMuMTZIMjIuNzljLS4yNC0uMzQtMS40NS0yLjM2LTEuNDUtMi4zNmwtLjY3LjA5YTE4LjUzLDE4LjUzLDAsMCwxLTQuMjUuMTJjLS42Ni0uMDYtMS43Ni0uMi0yLjYyLS4zNWwt''@;'; put 'put ''MS41NS0uMjdzLjYzLDIuNDMuNzUsMi43NHYwSDEwLjQyQTIwLjU3LDIwLjU3LDAsMCwxLDcuNzYsMjZsLS4xOC0uMzlBMTQuNjIsMTQuNjIsMCwwLDEsNiwxNy40OGMuNTQtNS4xOSw2LjEyLTkuMTEsMTIuMTktOC41NGExNS40NywxNS40NywwLDAsMSw1LjA4LDEuNDhsLjYyLjI5LjUtLjQ3''@;'; put 'put ''QTEwLjI5LDEwLjI5LDAsMCwxLDI3LDguNTRhOC4yNSw4LjI1LDAsMCwxLDQtLjY1bC0zLjM4LDUuMjkuMjUuNWgwYTIxLjE2LDIxLjE2LDAsMCwwLDMuMzEsNC44NCw2LjQ5LDYuNDksMCwwLDAsMi4xNCwxLjM5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM1LDE4Ljg3QTUuODMsNS44MywwLDAsMSwzMywxNy42MWEyMS42MywyMS42MywwLDAsMS0zLjI5LTQuODRsMy4zOS01LjI5YS45LjksMCwwLDAtLjU0LTEuMzgsOS42Nyw5LjY3LDAsMCwwLTUuMTMuNzIsMTIsMTIsMCwwLDAtMy4xMywyQTE3LjM3LDE3''@;'; put 'put ''LjM3LDAsMCwwLDE4LjYsNy4xNUMxMS44LDYuNTIsNS4yNywxMC45LDQuNTQsMTdsLS4xNC0uMDdBMi43NiwyLjc2LDAsMCwxLDIuOSwxNS4yOWEyLDIsMCwwLDEsLjE1LTEuNTUsMS4zMiwxLjMyLDAsMCwxLC40Ny0uNDgsMS4wOCwxLjA4LDAsMSwwLTEuMTItMS44NSwzLjQ1LDMuNDUsMCww''@;'; put 'put ''LDAtMS4yMywxLjI1QTQuMTYsNC4xNiwwLDAsMCwuODQsMTUuOWE1LDUsMCwwLDAsMi41NywzbDEsLjU0YTE4LjYyLDE4LjYyLDAsMCwwLDIsNy4zLDIzLDIzLDAsMCwwLDMsNC43OSwxLDEsMCwwLDAsLjguMzhoMy42MWEuNTIuNTIsMCwwLDAsLjQtLjc1TDE0LDMwLjM4YTExLDExLDAsMCwx''@;'; put 'put ''LS4zMy0xLjE4Yy45MS4xNiwyLjA4LjMxLDIuODcuMzhhMjAuMDcsMjAuMDcsMCwwLDAsMy4xMiwwYy4zOS43Ljc5LDEuMzMsMS4xNSwxLjg1YS45My45MywwLDAsMCwuNzcuNDFoMy4xMWEuNjUuNjUsMCwwLDAsLjYxLS44NWMtLjIzLS43NC0uNTMtMS43NS0uNzEtMi4zN2ExNS45LDE1Ljks''@;'; put 'put ''MCwwLDAsMy43NS0xLjc2Yy4xNi0uMTEuMzItLjI2LjQ4LS4zOWExMy43NywxMy43NywwLDAsMS0yLjQyLTEsLjguOCwwLDAsMSwuNzQtMS40MiwxMS42NCwxMS42NCwwLDAsMCwzLjE4LDEuMSwxMy4zMSwxMy4zMSwwLDAsMCwyLjY4LjEyLDEsMSwwLDAsMCwuOS0uNjZsMS43My00LjQ0QTEs''@;'; put 'put ''MSwwLDAsMCwzNSwxOC44N1pNMTMuNzksMTEuNTlhLjg2Ljg2LDAsMCwxLS4zLjA1Ljg1Ljg1LDAsMCwxLS4zLTEuNjQsMTIuNDEsMTIuNDEsMCwwLDEsNi42OS0uNTUuODUuODUsMCwxLDEtLjMsMS42N0ExMC43NSwxMC43NSwwLDAsMCwxMy43OSwxMS41OVptMTIuNTIsNi4xMmExLjQ0LDEu''@;'; put 'put ''NDQsMCwxLDEsMS40NC0xLjQ0QTEuNDQsMS40NCwwLDAsMSwyNi4zMiwxNy43MloiLz4nKSxsLkNsclNoYXBlU2hvcHBpbmdDYXJ0PSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjciIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMDgsNS4zN0ExLDEsMCwwLDAsMzIuMzEsNUgxMS40''@;'; put 'put ''OWwuNjUsMkgzMUwyOC4zMywxOWgtMTVMOC43Niw0LjUzYTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42MmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY0bDQuNTksMTQuNUw5Ljk1LDIxLjQ4bC0uMTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5''@;'; put 'put ''YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xM2ExLDEsMCwwLDAsMS0uNzhsMy4xNy0xNEExLDEsMCwwLDAsMzMuMDgsNS4zN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjeD0iMTMuMzMiIGN5PSIyOS43NSIgcj0iMi4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNyIgY3k9IjI5Ljc1IiByPSIyLjI1IiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMjAuNzEgNyAyMS44NyA1IDExLjQ5IDUgMTIuMTQgNyAyMC43MSA3IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4xNSwxNS40LDI4LjMzLDE5aC0xNUw4Ljc2LDQuNTNhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjYyYTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjRsNC41OSwxNC41TDkuOTUsMjEuNDhsLS4xMy4xM0EyLjY2LDIuNjYsMCww''@;'; put 'put ''LDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEzYTEsMSwwLDAsMCwxLS43OGwxLjA5LTQuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjMzIiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3IiBjeT0iMjkuNzUiIHI9IjIuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41Nyw3YTcuNTIs''@;'; put 'put ''Ny41MiwwLDAsMS0uMDctMSw3LjUyLDcuNTIsMCwwLDEsLjA3LTFIMTEuNDlsLjY1LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWwtLjQyLDBMMjguMzMsMTloLTE1''@;'; put 'put ''TDguNzYsNC41M2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjJhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42NGw0LjU5LDE0LjVMOS45NSwyMS40OGwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWExLDEsMCwwLDAsMC0ySDExLjg0YS42''@;'; put 'put ''Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTNhMSwxLDAsMCwwLDEtLjc4bDEuNTctNi45MUE3LjUxLDcuNTEsMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEzLjUiIGN5PSIyOS41IiByPSIyLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNi41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEsNi4zOUExLDEsMCwwLDAsMzIuMzEsNkg5''@;'; put 'put ''LjIxTDguNzYsNC41N2ExLDEsMCwwLDAtLjY2LS42NUw0LDIuNjZhMSwxLDAsMSwwLS41OSwxLjkyTDcsNS42OGw0LjU4LDE0LjQ3TDkuOTUsMjEuNDlsLS4xMy4xM0EyLjY2LDIuNjYsMCwwLDAsOS43NCwyNSwyLjc1LDIuNzUsMCwwLDAsMTIsMjZIMjguNjlhMSwxLDAsMCwwLDAtMkgxMS44''@;'; put 'put ''NGEuNjcuNjcsMCwwLDEtLjU2LTFsMi40MS0ySDI5LjEyYTEsMSwwLDAsMCwxLS43NmwzLjItMTNBMSwxLDAsMCwwLDMzLjEsNi4zOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMy41IiBjeT0iMjkuNSIgcj0i''@;'; put 'put ''Mi41IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjYuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIOS4yMUw4Ljc2LDQuNTdhMSwxLDAsMCwwLS42Ni0uNjVMNCwyLjY2YTEsMSwwLDEsMC0uNTksMS45Mkw3LDUuNjhsNC41OCwxNC40N0w5Ljk1LDIxLjQ5bC0u''@;'; put 'put ''MTMuMTNBMi42NiwyLjY2LDAsMCwwLDkuNzQsMjUsMi43NSwyLjc1LDAsMCwwLDEyLDI2SDI4LjY5YTEsMSwwLDAsMCwwLTJIMTEuODRhLjY3LjY3LDAsMCwxLS41Ni0xbDIuNDEtMkgyOS4xMmExLDEsMCwwLDAsMS0uNzZsMS4xOS00Ljg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUs''@;'; put 'put ''MS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTMuNSIgY3k9IjI5LjUiIHI9IjIuNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNi41IiBjeT0iMjkuNSIgcj0iMi41IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3''@;'; put 'put ''LjUsMCwwLDEsMjIuNSw2SDkuMjFMOC43Niw0LjU3YTEsMSwwLDAsMC0uNjYtLjY1TDQsMi42NmExLDEsMCwxLDAtLjU5LDEuOTJMNyw1LjY4bDQuNTgsMTQuNDdMOS45NSwyMS40OWwtLjEzLjEzQTIuNjYsMi42NiwwLDAsMCw5Ljc0LDI1LDIuNzUsMi43NSwwLDAsMCwxMiwyNkgyOC42OWEx''@;'; put 'put ''LDEsMCwwLDAsMC0ySDExLjg0YS42Ny42NywwLDAsMS0uNTYtMWwyLjQxLTJIMjkuMTJhMSwxLDAsMCwwLDEtLjc2bDEuNzEtN0E3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksbC5DbHJTaGFwZVdhbGxldD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDE1SDMxVjlhMSwxLDAsMCwwLTEtMUg2YTEsMSwwLDAsMS0xLS44MlY2LjgyQTEsMSwwLDAsMSw2LDZIMjkuNThhMSwxLDAsMCwwLDAtMkg2QTMsMywwLDAsMCwzLDdhMy4wOCwzLjA4LDAsMCwwLDAsLjM2VjI3LjkzQTQuMSw0LjEs''@;'; put 'put ''MCwwLDAsNy4xMywzMkgzMGExLDEsMCwwLDAsMS0xVjI1aDFhMSwxLDAsMCwwLDEtMVYxNkExLDEsMCwwLDAsMzIsMTVaTTI5LDMwSDcuMTNBMi4xMSwyLjExLDAsMCwxLDUsMjcuOTNWOS44OEEzLjExLDMuMTEsMCwwLDAsNiwxMEgyOXY1SDIyYTUsNSwwLDAsMCwwLDEwaDdabTItN0gyMmEz''@;'; put 'put ''LDMsMCwwLDEsMC02SDMxWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjIzLjAxIiBjeT0iMjAiIHI9IjEuNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMSIgZD0iTTMyLjk0LDE0SDMxVjlhMSwxLDAsMCwwLTEtMUg2QTEsMSwwLDAsMSw1LDdINVY3QTEsMSwwLDAsMSw2LDZIMjkuNmExLDEsMCwxLDAsMC0ySDZBMi45NCwyLjk0LDAsMCwwLDMsNi44OHYyMUE0LjEzLDQuMTMsMCwwLDAsNy4xNSwzMkgzMGExLDEsMCwwLDAsMS0xVjI2aDEu''@;'; put 'put ''OTRhLjkzLjkzLDAsMCwwLDEtLjkxdi0xMEExLjA4LDEuMDgsMCwwLDAsMzIuOTQsMTRaTTMyLDI0bC04LjU4LDBhMy44NywzLjg3LDAsMCwxLTMuNzMtNCwzLjg3LDMuODcsMCwwLDEsMy43My00TDMyLDE2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0yIiBjeD0iMjQuMDQiIGN5PSIxOS45MiIgcj0iMS41Ii8+JyksbC5DbHJTaGFwZVN0b3JlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsMzBIMTZWMjJIMTR2OEg4VjIySDZ2OGEy''@;'; put 'put ''LDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMjJIMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMzLjc5LDEzLjI3LDI5LjcxLDUuMTFBMiwyLDAsMCwwLDI3LjkyLDRIOC4wOEEyLDIsMCwwLDAsNi4y''@;'; put 'put ''OSw1LjExTDIuMjEsMTMuMjdhMiwyLDAsMCwwLS4yMS45djMuMDhhMiwyLDAsMCwwLC40NiwxLjI4QTQuNjcsNC42NywwLDAsMCw2LDIwLjEzYTQuNzIsNC43MiwwLDAsMCwzLTEuMDcsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzMsNC43MywwLDAsMCw2LDAs''@;'; put 'put ''NC43Miw0LjcyLDAsMCwwLDYuNTMtLjUyQTIsMiwwLDAsMCwzNCwxNy4yNlYxNC4xN0EyLDIsMCwwLDAsMzMuNzksMTMuMjdaTTMwLDE4LjEzQTIuNjgsMi42OCwwLDAsMSwyNy44MiwxN0wyNywxNS44OCwyNi4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDIxLDE1Ljg4LDIwLjE5LDE3''@;'; put 'put ''YTIuNzEsMi43MSwwLDAsMS00LjM3LDBMMTUsMTUuODgsMTQuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEw5LDE1Ljg4LDguMTgsMTdBMi42OCwyLjY4LDAsMCwxLDYsMTguMTNhMi42NCwyLjY0LDAsMCwxLTItLjg4VjE0LjE3TDguMDgsNkgyNy45MkwzMiwxNC4xNnYuNjdsMCwyLjM5''@;'; put 'put ''QTIuNjcsMi42NywwLDAsMSwzMCwxOC4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOCwzMEgxNlYyMkgxNHY4SDhWMjJINnY4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYyMkgyOFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy43OSwxMy4yNywyOS43MSw1LjExQTIsMiwwLDAsMCwyNy45Miw0SDguMDhBMiwyLDAsMCwwLDYuMjksNS4xMUwyLjIxLDEzLjI3YTIsMiwwLDAsMC0uMjEuOXYzLjA4YTIsMiwwLDAsMCwu''@;'; put 'put ''NDYsMS4yOEE0LjY3LDQuNjcsMCwwLDAsNiwyMC4xM2E0LjcyLDQuNzIsMCwwLDAsMy0xLjA3LDQuNzMsNC43MywwLDAsMCw2LDAsNC43Myw0LjczLDAsMCwwLDYsMCw0LjczLDQuNzMsMCwwLDAsNiwwLDQuNzIsNC43MiwwLDAsMCw2LjUzLS41MkEyLDIsMCwwLDAsMzQsMTcuMjZWMTQuMTdB''@;'; put 'put ''MiwyLDAsMCwwLDMzLjc5LDEzLjI3Wk0xNSwxNC40djEuNTJMMTQuMTgsMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEw5LDE1Ljg4VjE0LjRMMTEuNTksNkgxNlptMTIsMS40OEwyNi4xOSwxN2EyLjcxLDIuNzEsMCwwLDEtNC4zNywwTDIxLDE1Ljg4bDAsMFYxNC40TDIwLDZoNC40NUwyNywx''@;'; put 'put ''NC40WiIvPicpLGwuQ2xyU2hhcGVFdXJvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEuNDgsMjguNDlhMSwxLDAsMCwwLTEuMzgtLjMyQTEyLDEyLDAsMCwxLDEyLjQ1LDIySDI0LjE2YTEsMSwwLDAsMCww''@;'; put 'put ''LTJIMTEuOTNhMTEuMTYsMTEuMTYsMCwwLDEsMC00SDI0LjE2YTEsMSwwLDAsMCwwLTJIMTIuNDVBMTIsMTIsMCwwLDEsMzAuMDYsNy44YTEsMSwwLDAsMCwxLjA2LTEuN0ExNCwxNCwwLDAsMCwxMC4zNCwxNEgzLjU0YTEsMSwwLDEsMCwwLDJIOS45MWExNCwxNCwwLDAsMC0uMTYsMiwxNCwx''@;'; put 'put ''NCwwLDAsMCwuMTYsMkgzLjU0YTEsMSwwLDEsMCwwLDJoNi44YTE0LDE0LDAsMCwwLDIwLjgzLDcuODdBMSwxLDAsMCwwLDMxLjQ4LDI4LjQ5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNy40MiwyNS4xNkExMC44OCwxMC44OCwwLDAsMSw5LjIzLDIxSDUuODRhMSwxLDAsMCwxLDAtMmgzYzAtLjM1LS4wNS0uNzEtLjA1LTEuMDdzMC0uNjMsMC0uOTNoLTNhMSwxLDAsMCwxLDAtMkg5LjE5QTEwLjg2LDEwLjg2LDAsMCwxLDI1LjM4LDgu''@;'; put 'put ''NjlhMS4yNSwxLjI1LDAsMCwxLTEuMzIsMi4xMkE4LjM2LDguMzYsMCwwLDAsMTEuODIsMTVoOS4zNmExLDEsMCwwLDEsMCwySDExLjMzYTcuNzIsNy43MiwwLDAsMCwwLDJoOS44MmExLDEsMCwwLDEsMCwySDExLjg3YTguMzYsOC4zNiwwLDAsMCwxMi4yMiw0LDEuMjUsMS4yNSwwLDEsMSwx''@;'; put 'put ''LjMzLDIuMTJaIi8+JyksbC5DbHJTaGFwZURvbGxhcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI2LDIxLjE1YTYuOTEsNi45MSwwLDAsMC00LjM4LTMuMzJBMjYsMjYsMCwwLDAsMTksMTcuMTlWOC4xMkEx''@;'; put 'put ''MC4wNSwxMC4wNSwwLDAsMSwyMy44NiwxMGExLDEsMCwwLDAsMS4zMy0xLjVBMTEuNzUsMTEuNzUsMCwwLDAsMTksNi4xVjNhMSwxLDAsMCwwLTIsMFY2Yy00LjQuMS02LjgzLDIuMjktNy41Nyw0LjE4QTUuNTYsNS41NiwwLDAsMCwxMS42NiwxNywxMy4yLDEzLjIsMCwwLDAsMTcsMTguODRW''@;'; put 'put ''MjhhMTIuMywxMi4zLDAsMCwxLTcuMTQtMi43NEExLDEsMCwxLDAsOC40OSwyNi43LDE0LjA5LDE0LjA5LDAsMCwwLDE3LDMwdjNhMSwxLDAsMCwwLDIsMFYzMGMyLjgyLS4xOSw2LjA3LTEuMDksNy4zLTQuNzZBNS4zMyw1LjMzLDAsMCwwLDI2LDIxLjE1Wk0xMi43OSwxNS4zMmEzLjU3LDMu''@;'; put 'put ''NTcsMCwwLDEtMS40OS00LjM5QzExLjQxLDEwLjYzLDEyLjUzLDguMTIsMTcsOHY4LjhBMTAuNywxMC43LDAsMCwxLDEyLjc5LDE1LjMyWk0yNC40LDI0LjU2Yy0uNzIsMi4xNC0yLjMyLDMuMTctNS40LDMuNFYxOS4yM2MuNjQuMTQsMS4zLjMsMiwuNTFhNSw1LDAsMCwxLDMuMTksMi4zMkEz''@;'; put 'put ''LjM0LDMuMzQsMCwwLDEsMjQuNCwyNC41NloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNy42NSwyMS41OWMtMSwz''@;'; put 'put ''LTMuNjEsMy44NC01LjksNHYyYTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNy41OUExMS40NywxMS40NywwLDAsMSwxMSwyNWExLjI1LDEuMjUsMCwxLDEsMS43MS0xLjgzLDkuMTEsOS4xMSwwLDAsMCw0LjU1LDEuOTRWMTguODNhOS42Myw5LjYzLDAsMCwxLTMuNzMtMS40MSw0LjgsNC44LDAs''@;'; put 'put ''MCwxLTEuOTEtNS44NGMuNTktMS41MSwyLjQyLTMuMjMsNS42NC0zLjUxVjYuMjVhMS4yNSwxLjI1LDAsMCwxLDIuNSwwVjguMTFhOS42Nyw5LjY3LDAsMCwxLDQuOSwyQTEuMjUsMS4yNSwwLDAsMSwyMywxMS45NWE3LjE0LDcuMTQsMCwwLDAtMy4yNC0xLjMxdjYuMTNjLjYuMTMsMS4yNC4y''@;'; put 'put ''NywxLjkxLjQ4YTUuODUsNS44NSwwLDAsMSwzLjY5LDIuODJBNC42NCw0LjY0LDAsMCwxLDI1LjY1LDIzLjU5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTIwLjkyLDE5LjY0Yy0uNC0uMTItLjc5LS4yMi0xLjE3LS4z''@;'; put 'put ''djUuNzZjMi0uMiwzLjA3LS45LDMuNTMtMi4zYTIuMTUsMi4xNSwwLDAsMC0uMTUtMS41OEEzLjQ5LDMuNDksMCwwLDAsMjAuOTIsMTkuNjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTMuOTQsMTIuNDhhMi4zMSwy''@;'; put 'put ''LjMxLDAsMCwwLDEsMi44Nyw2LjUzLDYuNTMsMCwwLDAsMi4zMi45MlYxMC41NUMxNS4xNiwxMC44LDE0LjE5LDExLjg0LDEzLjk0LDEyLjQ4WiIvPicpLGwuQ2xyU2hhcGVDcmVkaXRDYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIs''@;'; put 'put ''MCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyLDAsMTJINEw0LDhaTTQsMjhWMjRIMzJ2NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMyIgd2lkdGg9IjIyIiBo''@;'; put 'put ''ZWlnaHQ9IjMwIiByeD0iMC45NiIgcnk9IjAuOTYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2KSByb3RhdGUoOTApIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwxOEg0VjIwSDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4n''@;'; put 'put ''KSxsLkNsclNoYXBlQmFuaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMy41LDEzLjU2LDE4LDUuMjNsMTQuNSw4LjMzYTEsMSwwLDAsMCwxLTEuNzNMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMjhWMTcuNjNIMjZWMjVIMTlWMTcuNjNIMTdWMjVIMTBWMTcuNjNIOFYyNUg1QTEsMSwwLDAsMCw0LDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjUuMDIiIHk9IjE0IiB3aWR0aD0iMjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywyOUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAs''@;'; put 'put ''MCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMTUsMTEuNThoMy4yMUwxOC42NSw3LjcyYS44LjgsMCwwLDAtLjgsMGwtNi43MiwzLjg2aDMuMjFsMy45LTIuMjRaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDI4VjE3LjYzSDI2VjI1SDE5VjE3LjYzSDE3VjI1SDEwVjE3LjYzSDhWMjVINUExLDEsMCwwLDAsNCwyNloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNS4wMiIgeT0iMTQiIHdpZHRoPSIyNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywyOUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjE1LDExLjU4aDMuMjFM''@;'; put 'put ''MTguNjUsNy43MmEuOC44LDAsMCwwLS44LDBsLTYuNzIsMy44NmgzLjIxbDMuOS0yLjI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YzAtLjE2LDAtLjMyLDAtLjQ4TDE4''@;'; put 'put ''LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMMTgsNS4yMywyMi43Nyw4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45NCwx''@;'; put 'put ''My4yNGwuNTYuMzJhMSwxLDAsMCwwLDEuNDQtMS4xOUE3LjQ1LDcuNDUsMCwwLDEsMzEuOTQsMTMuMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMjhWMTcuNjNIMjZWMjVIMTlWMTcuNjNIMTdWMjVIMTBW''@;'; put 'put ''MTcuNjNIOFYyNUg1QTEsMSwwLDAsMCw0LDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywyOUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSwxNUEzLjUxLDMuNTEsMCwwLDEsMjAsMTRINXYySDMxVjE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS40Niw5Ljc0bC42OC0xLjE3LTEuNDktLjg1YS44LjgsMCwwLDAtLjgsMGwtNi43MiwzLjg2aDMuMjFsMy45LTIuMjQsMS4xLjYzQzE5LjM5LDkuODksMTkuNDIsOS44MSwxOS40Niw5Ljc0WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4wNSw1LjI1LDE4LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNMMTgsNS4yMywyMS4wNSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYu''@;'; put 'put ''ODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMy41LDEzLjU2LDUsMTIuNjhWMTZIMzFWMTIuNzFsMS40OC44NWExLDEsMCwwLDAsMS0xLjczTDE4''@;'; put 'put ''LDIuOTIsMi41LDExLjgzYTEsMSwwLDEsMCwxLDEuNzNaTTE3Ljg1LDcuMTFhLjguOCwwLDAsMSwuOCwwTDI1LjM3LDExSDIyLjE1bC0zLjktMi4yNEwxNC4zNSwxMUgxMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMi44NSwyN0gzMnYtLjg1QTEuMTUsMS4xNSwwLDAsMCwzMC44NSwyNUgyOFYxNy42M0gyNFYyNUgyMFYxNy42M0gxNlYyNUgxMlYxNy42M0g4VjI1SDUuMTVBMS4xNSwxLjE1LDAsMCwwLDQsMjYuMTVWMjdIMy4xNUExLjE1LDEuMTUsMCwwLDAsMiwyOC4xNVYzMUgzNFYyOC4xNUExLjE1''@;'; put 'put ''LDEuMTUsMCwwLDAsMzIuODUsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuODUsMjdIMzJ2LS44NUExLjE1LDEuMTUsMCwwLDAsMzAuODUsMjVIMjhWMTcuNjNIMjRWMjVIMjBWMTcuNjNIMTZWMjVIMTJWMTcu''@;'; put 'put ''NjNIOFYyNUg1LjE1QTEuMTUsMS4xNSwwLDAsMCw0LDI2LjE1VjI3SDMuMTVBMS4xNSwxLjE1LDAsMCwwLDIsMjguMTVWMzFIMzRWMjguMTVBMS4xNSwxLjE1LDAsMCwwLDMyLjg1LDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDcsNy40NywwLDAsMSwyNC4zOSwxMUgyMi4xNWwtMy45LTIuMjRMMTQuMzUsMTFIMTEuMTRsNi43Mi0zLjg2YS44LjgsMCwwLDEsLjgsMGw1LDIuODdBNy40NSw3LjQ1LDAsMCwxLDIyLjUsNmMwLS4xNiwwLS4zMiwwLS40OEwxOCwy''@;'; put 'put ''LjkyLDIuNSwxMS44M2ExLDEsMCwxLDAsMSwxLjczTDUsMTIuNjhWMTZIMzFWMTMuNDJBNy41Myw3LjUzLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjk0LDEz''@;'; put 'put ''LjI0bC41Ni4zMmExLDEsMCwwLDAsMS40NC0xLjE5QTcuNDUsNy40NSwwLDAsMSwzMS45NCwxMy4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjg1LDI3SDMydi0uODVBMS4xNSwxLjE1LDAsMCwwLDMwLjg1LDI1SDI4VjE3LjYzSDI0VjI1SDIwVjE3LjYzSDE2VjI1SDEyVjE3''@;'; put 'put ''LjYzSDhWMjVINS4xNUExLjE1LDEuMTUsMCwwLDAsNCwyNi4xNVYyN0gzLjE1QTEuMTUsMS4xNSwwLDAsMCwyLDI4LjE1VjMxSDM0VjI4LjE1QTEuMTUsMS4xNSwwLDAsMCwzMi44NSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDE1YTMuNTEsMy41MSwwLDAsMS0zLTUuMjZsLjE0LS4yNC0xLjM1LS43OEwxNC4zNSwxMUgxMS4xNGw2LjcyLTMuODZhLjguOCwwLDAsMSwuOCwwbDEuNzUsMSwxLjY1LTIuODZMMTgsMi45MiwyLjUsMTEuODNhMSwxLDAsMSwwLDEsMS43''@;'; put 'put ''M0w1LDEyLjY4VjE2SDMxVjE1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPicpLGwuQ2xyU2hhcGVEb2xsYXJCaWxsPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wm0wLDZhNC4yNSw0LjI1LDAsMCwxLTMuOS00SDMyWm0wLDEuNjJ2''@;'; put 'put ''NC44M0E1Ljg3LDUuODcsMCwwLDAsMjYuNDksMjZoLTE3QTUuODcsNS44NywwLDAsMCw0LDIwLjQ0VjE1LjZBNS44Nyw1Ljg3LDAsMCwwLDkuNTEsMTBoMTdBNS44Nyw1Ljg3LDAsMCwwLDMyLDE1LjZaTTcuOSwxMEE0LjI1LDQuMjUsMCwwLDEsNCwxNFYxMFpNNCwyMi4wNkE0LjI1LDQuMjUs''@;'; put 'put ''MCwwLDEsNy45LDI2SDRaTTI4LjEsMjZBNC4yNSw0LjI1LDAsMCwxLDMyLDIyLjA2VjI2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwxMC44NWMtMy40NywwLTYuMywzLjIxLTYuMyw3LjE1czIuODMsNy4x''@;'; put 'put ''NSw2LjMsNy4xNSw2LjMtMy4yMSw2LjMtNy4xNVMyMS40NywxMC44NSwxOCwxMC44NVptMCwxMi42OWMtMi41OSwwLTQuNy0yLjQ5LTQuNy01LjU1czIuMTEtNS41NSw0LjctNS41NSw0LjcsMi40OSw0LjcsNS41NVMyMC41OSwyMy41NSwxOCwyMy41NVoiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMiw4SDRhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDMyLDhaTTQsMjZWMjEuMTVBNS4xOCw1LjE4LDAsMCwxLDguNzksMjZaTTQsMTQuODVWMTBI''@;'; put 'put ''OC43OUE1LjE4LDUuMTgsMCwwLDEsNCwxNC44NVpNMTgsMjUuMTVjLTMuNDcsMC02LjMtMy4yMS02LjMtNy4xNXMyLjgzLTcuMTUsNi4zLTcuMTUsNi4zLDMuMjEsNi4zLDcuMTVTMjEuNDcsMjUuMTUsMTgsMjUuMTVaTTMyLDI2SDI3LjI1QTUuMTgsNS4xOCwwLDAsMSwzMiwyMS4xNVptMC0x''@;'; put 'put ''MS4xNUE1LjE4LDUuMTgsMCwwLDEsMjcuMjUsMTBIMzJaIi8+XG4gICAgICAgICAgICA8ZWxsaXBzZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBjeD0iMTgiIGN5PSIxOCIgcng9IjQiIHJ5PSI0LjcyIi8+JyksbC5DbHJTaGFwZUVDaGVjaz0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTYiIHk9IjE2IiB3aWR0aD0iMTUiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjIwIiB5PSIy''@;'; put 'put ''MSIgd2lkdGg9IjExIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzQsOEgxMi45M2E4LjM1LDguMzUsMCwwLDEsLjc5LDJIMzNWMjZIM1YxOS45YTcuODMsNy44MywwLDAsMS0yLTEuMzRWMjdh''@;'; put 'put ''MSwxLDAsMCwwLDEsMUgzNGExLDEsMCwwLDAsMS0xVjlBMSwxLDAsMCwwLDM0LDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTYuNTcsMTguNjhhNi4xNyw2LjE3LDAsMCwwLDQuMzItMS41OSwxLjIsMS4yLDAs''@;'; put 'put ''MCwwLC4zNi0uODQsMS4wOCwxLjA4LDAsMCwwLTEuMDktMS4xMSwxLDEsMCwwLDAtLjcxLjI1LDQuMzIsNC4zMiwwLDAsMS0yLjg0LDEsMy4zNSwzLjM1LDAsMCwxLTMuNDYtM2g3LjUzQTEuMjksMS4yOSwwLDAsMCwxMiwxMi4wNiw1LjY4LDUuNjgsMCwwLDAsNi4yNyw2LjE0LDYsNiwwLDAs''@;'; put 'put ''MCwuNCwxMi40djBBNiw2LDAsMCwwLDYuNTcsMTguNjhaTTYuMjUsOC4zOWMxLjgyLDAsMi44NywxLjM5LDMsMy4xNkgzLjEzQzMuMzgsOS42OSw0LjU2LDguMzksNi4yNSw4LjM5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTM0LDhIMTIuOTFhOC42MSw4LjYxLDAsMCwxLDEuMiw0LjM5LDgsOCwwLDAsMS03Ljc4LDguMjdBNy41MSw3LjUxLDAsMCwxLDEsMTguNDFWMjdhMSwxLDAsMCwwLDEsMUgzNGExLDEsMCwwLDAsMS0xVjlBMSwxLDAsMCwwLDM0LDhaTTMxLDIzSDIwVjIxSDMxWm0wLTVIMTZWMTZIMzFa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNNi41NywxOC42OEE2LDYsMCwwLDEsLjQsMTIuNDR2MEE2LDYsMCwwLDEsNi4yNyw2LjE0LDUuNjgsNS42OCwwLDAsMSwxMiwxMi4wNmExLjI5LDEuMjksMCwwLDEtMS4zLDEu''@;'; put 'put ''MzJIMy4xNWEzLjM1LDMuMzUsMCwwLDAsMy40NiwzLDQuMzIsNC4zMiwwLDAsMCwyLjg0LTEsMSwxLDAsMCwxLC43MS0uMjUsMS4wOCwxLjA4LDAsMCwxLDEuMDksMS4xMSwxLjIsMS4yLDAsMCwxLS4zNi44NEE2LjE3LDYuMTcsMCwwLDEsNi41NywxOC42OFpNOS4zLDExLjU1Yy0uMTgtMS43''@;'; put 'put ''Ny0xLjIzLTMuMTYtMy0zLjE2cy0yLjg3LDEuMy0zLjEyLDMuMTZaIi8+JyksbC5DbHJTaGFwZVBvdW5kPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuOSwzMEgxMy40QTguNDUsOC40NSwwLDAsMCwxNSwy''@;'; put 'put ''NC42NVYyMWg0LjMxYTEsMSwwLDAsMCwwLTJIMTVWMTEuMzFBNS4yNCw1LjI0LDAsMCwxLDIwLjIxLDYsNS4xOSw1LjE5LDAsMCwxLDI0LDcuNzNhMSwxLDAsMCwwLDEuNDgtMS4zNUE3LjE5LDcuMTksMCwwLDAsMTMsMTEuMzFWMTlIOC43MmExLDEsMCwxLDAsMCwySDEzdjMuNjVDMTMsMjku''@;'; put 'put ''MzgsMTAuMTIsMzAsMTAsMzBhMSwxLDAsMCwwLC4xNywySDI3LjlhMSwxLDAsMSwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTYuNSwy''@;'; put 'put ''NS45MkgxMS43NGExLjI1LDEuMjUsMCwwLDEtLjIyLTIuNDhjLjE1LDAsMS43Mi0uNDksMS43Mi0zLjU0VjE5aC0yLjVhMSwxLDAsMCwxLDAtMmgyLjVWMTEuODhhNS44NSw1Ljg1LDAsMCwxLDUuNzItNiw1LjYzLDUuNjMsMCwwLDEsNC4yMSwxLjk0QTEuMjUsMS4yNSwwLDEsMSwyMS4zLDku''@;'; put 'put ''NTEsMy4wOCwzLjA4LDAsMCwwLDE5LDguNDJhMy4zNSwzLjM1LDAsMCwwLTMuMjIsMy40NlYxN2gzYTEsMSwwLDAsMSwwLDJoLTN2Mi45QTcuNjUsNy42NSwwLDAsMSwxNSwyNS40MkgyNC41YTEuMjUsMS4yNSwwLDAsMSwwLDIuNVoiLz4nKSxsLkNsclNoYXBlUnVwZWU9KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOCw4SDI0LjE0QTcuNTIsNy41MiwwLDAsMCwyMi42LDZIMjhhMSwxLDAsMCwwLDAtMkgxMGExLDEsMCwwLDAsMCwyaDcuNTVhNS40Miw1LjQyLDAsMCwxLDQuMiwySDEwYTEsMSwwLDAs''@;'; put 'put ''MCwwLDJIMjIuNzlBNS41NCw1LjU0LDAsMCwxLDIzLDExLjUxLDUuNDgsNS40OCwwLDAsMSwxNy41NSwxN0gxMS4xNGExLDEsMCwwLDAtLjc1LDEuNjZMMjIuMDYsMzJhMSwxLDAsMSwwLDEuNS0xLjMyTDEzLjM1LDE5aDQuMjFhNy41MSw3LjUxLDAsMCwwLDcuMy05SDI4YTEsMSwwLDAsMCww''@;'; put 'put ''LTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm01Ljg4LDlIMjZhMSwxLDAsMCwxLDAsMkgyNC4yNmMwLC4wNiwwLC4xMiwwLC4xOWE2LjA5LDYu''@;'; put 'put ''MDksMCwwLDEtNiw2LjJoLTJsNi44Miw4LjA2YTEuMjUsMS4yNSwwLDAsMS0xLjkxLDEuNjJMMTIuNjMsMTguOTRhMS4yNSwxLjI1LDAsMCwxLDEtMi4wNmg0LjcxYTMuNTksMy41OSwwLDAsMCwzLjQ4LTMuNjljMC0uMDcsMC0uMTMsMC0uMmgtOWExLDEsMCwwLDEsMC0yaDguMzJhMy40MSwz''@;'; put 'put ''LjQxLDAsMCwwLTIuNzgtMS41SDEyLjc1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNUgyNmExLDEsMCwwLDEsMCwySDIyLjY4QTYuMjMsNi4yMywwLDAsMSwyMy44OCwxMVoiLz4nKSxsLkNsclNoYXBlV29uPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsMThIMjguNzVsLjUtMkgzM2ExLDEsMCwwLDAsMC0ySDI5Ljc0bDIuMTctOC43NkExLDEsMCwwLDAsMzAsNC43NkwyNy42OCwxNEgyMS4zMUwxOSw0Ljc2YTEsMSwwLDAsMC0xLjk0LDBMMTQuNzksMTRIOC40Mkw2LjEzLDQuNzZhMSwxLDAsMCwwLTEu''@;'; put 'put ''OTQuNDhMNi4zNiwxNEgzYTEsMSwwLDAsMCwwLDJINi44NWwuNSwySDNhMSwxLDAsMCwwLDAsMkg3Ljg0bDIuNzksMTEuMjRhMSwxLDAsMCwwLDEuOTQsMEwxNS4zNiwyMGg1LjM4bDIuNzksMTEuMjRhMSwxLDAsMCwwLDEuOTQsMEwyOC4yNSwyMEgzM2ExLDEsMCwwLDAsMC0yWm0tNS44Mi0y''@;'; put 'put ''LS41LDJIMjIuM2wtLjUtMlpNMTgsOS4xNiwxOS4yNSwxNGgtMi40Wk04LjkxLDE2aDUuMzhsLS41LDJIOS40MVpNMTEuNiwyNi44NCw5LjkxLDIwSDEzLjNaTTE1Ljg1LDE4bC41LTJoMy4zOWwuNSwyWm04LjY0LDguODRMMjIuOCwyMGgzLjM5WiIvPlxuICAgICAgICAgICAgPHBvbHlnb24g''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgcG9pbnRzPSIxNy43NCAxNiAxNy4yMiAxOCAxOC44NSAxOCAxOC4zMiAxNiAxNy43NCAxNiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgcG9pbnRzPSIx''@;'; put 'put ''MS45NCAxOCAxNC42MyAxOCAxNS4xNiAxNiAxMS40MSAxNiAxMS45NCAxOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgcG9pbnRzPSIxMy4yOSAyMy4xIDE0LjEgMjAgMTIuNDcgMjAgMTMuMjkgMjMuMSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgcG9pbnRzPSIyMS40NCAxOCAyNC4xMyAxOCAyNC42NiAxNiAyMC45MSAxNiAyMS40NCAxOCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtNSIgcG9pbnRzPSIyMi43OCAyMy4xIDIzLjYgMjAgMjEuOTcgMjAgMjIuNzggMjMuMSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjksMjBI''@;'; put 'put ''MjYuMTlMMjQsMjguMzJhMS4yNSwxLjI1LDAsMCwxLTIuNDIsMEwxOS4zOCwyMEgxNi42OWwtMi4xOSw4LjMyYTEuMjUsMS4yNSwwLDAsMS0yLjQyLDBMOS44OCwyMEg3YTEsMSwwLDAsMSwwLTJIOS4zNWwtLjUzLTJIN2ExLDEsMCwwLDEsMC0ySDguM2wtMS0zLjY4YTEuMjUsMS4yNSwwLDAs''@;'; put 'put ''MSwyLjQyLS42NEwxMC44OCwxNGg0LjhsMS4xNC00LjMyYTEuMjUsMS4yNSwwLDAsMSwyLjQyLDBMMjAuMzgsMTRoNC44bDEuMTQtNC4zMmExLjI1LDEuMjUsMCwwLDEsMi40Mi42NGwtMSwzLjY4SDI5YTEsMSwwLDAsMSwwLDJIMjcuMjRsLS41MywySDI5YTEsMSwwLDAsMSwwLDJaIi8+Jyks''@;'; put 'put ''bC5DbHJTaGFwZVllbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LjM0LDQuNTVhMSwxLDAsMSwwLTEuNjctMS4xTDE4LDE4LjIzLDguMzMsMy40NWExLDEsMCwwLDAtMS42NywxLjFMMTcsMjAuMzVWMjIu''@;'; put 'put ''MkgxMmEuOC44LDAsMCwwLDAsMS42aDV2Mi40SDEyYS44LjgsMCwwLDAsMCwxLjZoNVYzMmExLDEsMCwwLDAsMiwwVjI3LjhoNWEuOC44LDAsMCwwLDAtMS42SDE5VjIzLjhoNWEuOC44LDAsMCwwLDAtMS42SDE5VjIwLjM1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOC4wNyw3LjkxTDE5Ljc0LDIwSDIyYTEsMSwwLDAsMSwwLDJIMTkuMjV2MkgyMmExLDEsMCwwLDEsMCwySDE5LjI1djIuNzVhMS4yNSwxLjI1LDAsMCwxLTIuNSwwVjI2''@;'; put 'put ''SDE0YTEsMSwwLDEsMSwwLTJoMi43NVYyMkgxNGExLDEsMCwxLDEsMC0yaDIuMjZMOS45Myw5LjkxYTEuMjUsMS4yNSwwLDEsMSwyLjEyLTEuMzNMMTgsMTguMDhsNS45NS05LjQ5YTEuMjUsMS4yNSwwLDEsMSwyLjEyLDEuMzNaIi8+JyksbC5DbHJTaGFwZUJpdGNvaW49KDAsYS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTI0LjExLDE2Ljg4QTUuNDksNS40OSwwLDAsMCwyMSw3VjRhMSwxLDAsMCwwLTIsMFY3SDE2VjRhMSwxLDAsMCwwLTIsMFY3SDExYTEsMSwwLDAsMC0xLDFWMjhhMSwxLDAsMCwwLDEsMWgzdjNhMSwxLDAsMCwwLDIsMFYyOWgzdjNhMSwxLDAsMCwwLDIsMFYyOWgu''@;'; put 'put ''MDhBNi4wNyw2LjA3LDAsMCwwLDI3LDIyLjgxdi0uNjJBNi4yNSw2LjI1LDAsMCwwLDI0LjExLDE2Ljg4Wk0xMiw5aDguNjlhMy41OSwzLjU5LDAsMCwxLDMuNDMsMi4zNkEzLjUxLDMuNTEsMCwwLDEsMjAuNzksMTZIMTJaTTI1LDIyLjgxQTQuMDgsNC4wOCwwLDAsMSwyMS4wNiwyN0gxMlYx''@;'; put 'put ''OGg5LjA2QTQuMDgsNC4wOCwwLDAsMSwyNSwyMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLjE4LDE4LjQ3SDE0LjV2Nmg2LjY4YTIuNywyLjcsMCwwLDAsMi42My0yLjc3di0uNDhBMi43MSwyLjcx''@;'; put 'put ''LDAsMCwwLDIxLjE4LDE4LjQ3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMywxMy43NWEyLjI0LDIuMjQsMCwwLDAtMi4yMy0yLjI1SDE0LjVWMTZoNi4zQTIuMjIsMi4yMiwwLDAsMCwyMywxMy43NVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LjMxLDE5LjczQTUuMjIsNS4yMiwwLDAsMSwyMS4xOCwyN0gyMXYxLjlhMSwxLDAsMCwxLTIsMFYyN0gxN3Yx''@;'; put 'put ''LjlhMSwxLDAsMCwxLTIsMFYyN0gxMy4yNUExLjI1LDEuMjUsMCwwLDEsMTIsMjUuNzVWMTcuMjNoMHYtN0ExLjI1LDEuMjUsMCwwLDEsMTMuMjUsOUgxNVY3LjA3YTEsMSwwLDAsMSwyLDBWOWgyVjcuMDdhMSwxLDAsMCwxLDIsMFY5YTQuNzIsNC43MiwwLDAsMSwzLjIsOCw1LjMxLDUuMzEs''@;'; put 'put ''MCwwLDEsMi4xMSw0LjI0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxsLkNsclNoYXBlQ29pbkJhZz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuNiwyOWExLDEsMCwwLDAtMS0xaC02YTEsMSwwLDAsMCwwLDJoNkExLDEsMCwwLDAsMjEuNiwy''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMi41NCwyNGgtNmExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMiwzMkgx''@;'; put 'put ''NmExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi43LDMyaC03YTEsMSwwLDAsMCwwLDJoN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLjcsMjhoLTdhMSwxLDAsMCwwLDAsMmg3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuNzQsMjZhMjgsMjgsMCwwLDAtMi44Mi0xMC4xMkEyMC4yNCwyMC4yNCww''@;'; put 'put ''LDAsMCwyNC42LDguNzFMMjcsMy40MmExLDEsMCwwLDAtLjA3LTFBMSwxLDAsMCwwLDI2LjEzLDJIOS44YTEsMSwwLDAsMC0uOTEsMS40MmwyLjQ1LDUuMzFhMjAuMzMsMjAuMzMsMCwwLDAtNi4yOCw3LjE1Yy0yLjE1LDQtMi44Miw4Ljg5LTMsMTIuMjhhMy42LDMuNiwwLDAsMCwxLDIuNzFB''@;'; put 'put ''My43OSwzLjc5LDAsMCwwLDUuOCwzMS45NEgxMlYzMEg1LjcyYTEuNjgsMS42OCwwLDAsMS0xLjIxLS41MiwxLjYyLDEuNjIsMCwwLDEtLjQ1LTEuMjNjLjE0LTIuNjEuNjktNy41OCwyLjc2LTExLjQ1QTE4LDE4LDAsMCwxLDEzLjA4LDEwaDFhMzAuODEsMzAuODEsMCwwLDAtMS44NywyLjky''@;'; put 'put ''LDIyLjc4LDIyLjc4LDAsMCwwLTEuNDcsMy4zNGwxLjM3LjkyYTI0LDI0LDAsMCwxLDEuNDktMy40N0EyOS4xLDI5LjEsMCwwLDEsMTYuMDUsMTBoMWEyMS40NSwyMS40NSwwLDAsMSwxLjQxLDUsMjIuNTQsMjIuNTQsMCwwLDEsLjMyLDMuODZsMS41OC0xLjExYTI0LjE1LDI0LjE1LDAsMCww''@;'; put 'put ''LS4zMi0zQTI0LjgyLDI0LjgyLDAsMCwwLDE4Ljc2LDEwaC43OGwuOTEtMkgxMy4yMUwxMS4zNiw0SDI0LjU3bC0yLjUsNS40N2E5LjkzLDkuOTMsMCwwLDEsMS4yMy43OCwxOC42MywxOC42MywwLDAsMSw1Ljg2LDYuNTdBMjYuNTksMjYuNTksMCwwLDEsMzEuNzMsMjZaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICA8cGF0aCBkPSJNMjQuODksMjZoNy44NmMtLjY2LTguNzEtNC40MS0xNC4xMi05LjIyLTE3LjMyTDI1LjcyLDMuOWExLDEsMCwwLDAtLjkxLTEuNEgxMS4xYTEsMSwwLDAsMC0uOTEsMS40bDEuMiwyLjZIMjEuNTFsLS45''@;'; put 'put ''LDJIMTguNzZBMjQuOSwyNC45LDAsMCwxLDIwLDEzLjE5YTI0LjQ5LDI0LjQ5LDAsMCwxLC4zMiwzbC0xLjU4LDEuMTFhMjIuNTQsMjIuNTQsMCwwLDAtLjMyLTMuODZBMjEuNzQsMjEuNzQsMCwwLDAsMTcsOC41aC0xYTI4LjIyLDI4LjIyLDAsMCwwLTIuNDgsMy43LDIzLjkxLDIzLjkxLDAs''@;'; put 'put ''MCwwLTEuNDksMy40NmwtMS4zNy0uOTFhMjIuNzgsMjIuNzgsMCwwLDEsMS40Ny0zLjM0QTMwLjgxLDMwLjgxLDAsMCwxLDE0LjA1LDguNUgxMi4zbC4wOC4xN0M3LjA4LDEyLjIsMy4wNSwxOC40LDMuMDUsMjguNzVBMS42NSwxLjY1LDAsMCwwLDQuNjEsMzAuNWg4QTIuNjcsMi42NywwLDAs''@;'; put 'put ''MSwxNC4yMSwyNmEyLjY3LDIuNjcsMCwwLDEtLjM3LTEuMzQsMi43LDIuNywwLDAsMSwyLjctMi43aDZhMi43LDIuNywwLDAsMSwyLjcsMi43QTIuNjMsMi42MywwLDAsMSwyNC44OSwyNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLjYs''@;'; put 'put ''MjguNWExLDEsMCwwLDAtMS0xaC02YTEsMSwwLDAsMCwwLDJoNkExLDEsMCwwLDAsMjEuNiwyOC41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNTQsMjMuNWgtNmExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDMxLjVIMTZhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMi43LDMxLjVoLTdhMSwxLDAsMCwwLDAsMmg3''@;'; put 'put ''YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy43LDI3LjVoLTdhMSwxLDAsMCwwLDAsMmg3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiAvPicpLGwuQ2xyU2hh''@;'; put 'put ''cGVQZXNvPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwxMy4ySDI3Ljg5QTYuODEsNi44MSwwLDAsMCwyOCwxMmE3Ljg1LDcuODUsMCwwLDAtLjEtMS4xOWgyLjkzYS44LjgsMCwwLDAsMC0xLjZIMjcuNDZBOC40NCw4LjQ0LDAsMCwwLDE5LjU3LDRIMTFhMSwxLDAsMCwwLTEsMVY5''@;'; put 'put ''LjJIN2EuOC44LDAsMCwwLDAsMS42aDN2Mi40SDdhLjguOCwwLDAsMCwwLDEuNmgzVjMxYTEsMSwwLDAsMCwyLDBWMjBoNy41N2E4LjQ1LDguNDUsMCwwLDAsNy44OS01LjJIMzFhLjguOCwwLDAsMCwwLTEuNlpNMTIsNmg3LjU3YTYuNTEsNi41MSwwLDAsMSw1LjY4LDMuMkgxMlptMCw0LjhI''@;'; put 'put ''MjUuODdhNS42LDUuNiwwLDAsMSwwLDIuNEgxMlpNMTkuNTcsMThIMTJWMTQuOEgyNS4yNUE2LjUxLDYuNTEsMCwwLDEsMTkuNTcsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTQuMTgsMTMuOFYxNmg5LjQ1YTUuMjYsNS4yNiww''@;'; put 'put ''LDAsMCwuMDgtLjg5LDQuNzIsNC43MiwwLDAsMC0uMi0xLjMxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTQuMTgsMTkuN2g1LjE5YTQuMjgsNC4yOCwwLDAsMCwzLjUtMS45SDE0LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzcsMTAuNTFIMTQuMThWMTJoOC4zN0E0LjIxLDQuMjEsMCwwLDAsMTkuMzcsMTAuNTFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNy42NywyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAs''@;'; put 'put ''MCwwLDE3LjY3LDJabTEwLjUsMTUuOEgyNS43YTYuODcsNi44NywwLDAsMS02LjMzLDQuNEgxNC4xOHY2LjU0YTEuMjUsMS4yNSwwLDEsMS0yLjUsMFYxNy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjEzLjhIOC43NmEuOS45LDAsMSwxLDAtMS44aDIuOTJWOS4yNkExLjI1LDEuMjUs''@;'; put 'put ''MCwwLDEsMTIuOTMsOGg2LjQ0YTYuODQsNi44NCwwLDAsMSw2LjE1LDRoMi42NWEuOS45LDAsMCwxLDAsMS44SDI2LjA5YTYuOTEsNi45MSwwLDAsMSwuMTIsMS4zLDYuOCw2LjgsMCwwLDEtLjA2LjloMmEuOS45LDAsMCwxLDAsMS44WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtNCIgLz4nKSxsLkNsclNoYXBlUnVibGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjU3LDIwQTguMjMsOC4yMywwLDAsMCwyOSwxMmE4LjIzLDguMjMsMCwwLDAtOC40My04SDEyYTEsMSwwLDAsMC0xLDFWMThIOWExLDEsMCwwLDAsMCwyaDJ2Mkg5YTEsMSwwLDAsMCww''@;'; put 'put ''LDJoMnY3YTEsMSwwLDAsMCwyLDBWMjRoOWExLDEsMCwwLDAsMC0ySDEzVjIwWk0xMyw2aDcuNTdBNi4yNCw2LjI0LDAsMCwxLDI3LDEyYTYuMjMsNi4yMywwLDAsMS02LjQzLDZIMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjAu''@;'; put 'put ''NzUsOS4yNUgxNXY4LjgxaDUuNzlhNC42Niw0LjY2LDAsMCwwLDQuODYtNC40QTQuNjUsNC42NSwwLDAsMCwyMC43NSw5LjI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''Wm0yLjc1LDE4LjU2SDE1VjIyaDguMjlhMSwxLDAsMCwxLDAsMkgxNXY1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNEgxMS4yNWExLDEsMCwwLDEsMC0yaDEuMjFWMjAuNTZIMTEuMjVhMS4yNSwxLjI1LDAsMCwxLDAtMi41aDEuMjFWOGExLjI1LDEuMjUsMCwwLDEsMS4yNS0xLjI1aDdhNy4x''@;'; put 'put ''NCw3LjE0LDAsMCwxLDcuMzYsNi45QTcuMTUsNy4xNSwwLDAsMSwyMC43NSwyMC41NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZUVtcGxveWVlR3JvdXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjQyLDE2LjMxYTUuNyw1''@;'; put 'put ''LjcsMCwxLDEsNS43Ni01LjdBNS43NCw1Ljc0LDAsMCwxLDE4LjQyLDE2LjMxWm0wLTkuNGEzLjcsMy43LDAsMSwwLDMuNzYsMy43QTMuNzQsMy43NCwwLDAsMCwxOC40Miw2LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4''@;'; put 'put ''LjQyLDE2LjMxYTUuNyw1LjcsMCwxLDEsNS43Ni01LjdBNS43NCw1Ljc0LDAsMCwxLDE4LjQyLDE2LjMxWm0wLTkuNGEzLjcsMy43LDAsMSwwLDMuNzYsMy43QTMuNzQsMy43NCwwLDAsMCwxOC40Miw2LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5c''@;'; put 'put ''biAgPHBhdGggZD0iTTIxLjkxLDE3LjY1YTIwLjYsMjAuNiwwLDAsMC0xMywyQTEuNzcsMS43NywwLDAsMCw4LDIxLjI1djMuNTZhMSwxLDAsMCwwLDIsMFYyMS4zOGExOC45MiwxOC45MiwwLDAsMSwxMi0xLjY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMi''@;'; put 'put ''Lz5cbiAgPHBhdGggZD0iTTMzLDIySDI2LjNWMjAuNTJhMSwxLDAsMCwwLTIsMFYyMkgxN2ExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM0ExLDEsMCwwLDAsMzMsMjJaTTMyLDMySDE4VjI0aDYuM3YuNDFhMSwxLDAsMCwwLDIsMFYyNEgzMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxyZWN0IHg9IjIxLjgxIiB5PSIyNy40MiIgd2lkdGg9IjUuOTYiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNMTAuODQsMTIu''@;'; put 'put ''MjRhMTgsMTgsMCwwLDAtNy45NSwyQTEuNjcsMS42NywwLDAsMCwyLDE1LjcxdjMuMWExLDEsMCwwLDAsMiwwdi0yLjlhMTYsMTYsMCwwLDEsNy41OC0xLjY3QTcuMjgsNy4yOCwwLDAsMSwxMC44NCwxMi4yNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0zMy4xMSwxNC4yM2ExNy44LDE3LjgsMCwwLDAtNy4xMi0yLDcuNDYsNy40NiwwLDAsMS0uNzMsMkExNS44OSwxNS44OSwwLDAsMSwzMiwxNS45MXYyLjlhMSwxLDAsMSwwLDIsMHYtMy4xQTEuNjcsMS42NywwLDAsMCwzMy4xMSwxNC4yM1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gIDxwYXRoIGQ9Ik0xMC42NiwxMC42MWMwLS4yMywwLS40NSwwLS42N2EzLjA3LDMuMDcsMCwwLDEsLjU0LTYuMTEsMy4xNSwzLjE1LDAsMCwxLDIuMi44OSw4LjE2LDguMTYsMCwwLDEsMS43LTEuMDgsNS4xMyw1LjEzLDAsMCwwLTks''@;'; put 'put ''My4yNyw1LjEsNS4xLDAsMCwwLDQuNyw1QTcuNDIsNy40MiwwLDAsMSwxMC42NiwxMC42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04Ii8+XG4gIDxwYXRoIGQ9Ik0yNC43NywxLjgzYTUuMTcsNS4xNywwLDAsMC0zLjY5LDEuNTUsNy44Nyw3Ljg3LDAsMCwx''@;'; put 'put ''LDEuOSwxLDMuMTQsMy4xNCwwLDAsMSw0LjkzLDIuNTIsMy4wOSwzLjA5LDAsMCwxLTEuNzksMi43Nyw3LjE0LDcuMTQsMCwwLDEsLjA2LjkzLDcuODgsNy44OCwwLDAsMS0uMSwxLjIsNS4xLDUuMSwwLDAsMCwzLjgzLTQuOUE1LjEyLDUuMTIsMCwwLDAsMjQuNzcsMS44M1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gIFxuICA8ZWxsaXBzZSBjeD0iMTgiIGN5PSIxMS4yOCIgcng9IjQuNzYiIHJ5PSI0LjciIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEwLjc4LDExLjc1Yy4xNiwwLC4z''@;'; put 'put ''MiwwLC40OCwwLDAtLjE1LDAtLjI4LDAtLjQzYTYuNyw2LjcsMCwwLDEsMy43NS02LDQuNjIsNC42MiwwLDEsMC00LjIxLDYuNDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yNC43NiwxMS4yOGMwLC4xNSwwLC4yOCwwLC40My4xNiww''@;'; put 'put ''LC4zMiwwLC40OCwwQTQuNTgsNC41OCwwLDEsMCwyMSw1LjI5LDYuNyw2LjcsMCwwLDEsMjQuNzYsMTEuMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0yMi4yOSwxNi40NWEyMS40NSwyMS40NSwwLDAsMSw1LjcxLDIsMi43MSwyLjcx''@;'; put 'put ''LDAsMCwxLC42OC41M0gzNFYxNS41NmEuNzIuNzIsMCwwLDAtLjM4LS42NCwxOCwxOCwwLDAsMC04LjQtMi4wNWwtLjY2LDBBNi42Niw2LjY2LDAsMCwxLDIyLjI5LDE2LjQ1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNNi41MywyMC45''@;'; put 'put ''MkEyLjc2LDIuNzYsMCwwLDEsOCwxOC40N2EyMS40NSwyMS40NSwwLDAsMSw1LjcxLTIsNi42Niw2LjY2LDAsMCwxLTIuMjctMy41NWwtLjY2LDBhMTgsMTgsMCwwLDAtOC40LDIuMDUuNzIuNzIsMCwwLDAtLjM4LjY0VjIySDYuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC01Ii8+XG4gIDxyZWN0IHg9IjIxLjQ2IiB5PSIyNi42OSIgd2lkdGg9IjUuOTYiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02Ii8+XG4gIDxwYXRoIGQ9Ik0zMi44MSwyMS4yNkgyNS45NHYtMWExLDEsMCwwLDAtMiwwdjFIMjJWMTguNDNB''@;'; put 'put ''MjAuMTcsMjAuMTcsMCwwLDAsMTgsMThhMTkuMjcsMTkuMjcsMCwwLDAtOS4wNiwyLjIyLjc2Ljc2LDAsMCwwLS40MS42OHY1LjYxaDcuMTF2Ni4wOWExLDEsMCwwLDAsMSwxSDMyLjgxYTEsMSwwLDAsMCwxLTFWMjIuMjZBMSwxLDAsMCwwLDMyLjgxLDIxLjI2Wm0tMSwxMC4zNkgxNy42NFYy''@;'; put 'put ''My4yNmg2LjN2LjkxYTEsMSwwLDAsMCwyLDB2LS45MWg1Ljg3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIvPicpLGwuQ2xyU2hhcGVFbXBsb3llZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYuNDMsMTYuNjlhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEs''@;'; put 'put ''MTYuNDMsMTYuNjlabTAtMTEuOTJhNSw1LDAsMSwwLDUsNUE1LDUsMCwwLDAsMTYuNDMsNC43N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMiwxNy45QTI1LjQxLDI1LjQxLDAsMCwwLDUuODgsMTkuNTdhNC4wNiw0LjA2LDAs''@;'; put 'put ''MCwwLTIuMzEsMy42OFYyOS4yYTEsMSwwLDEsMCwyLDBWMjMuMjVhMiwyLDAsMCwxLDEuMTYtMS44NiwyMi45MSwyMi45MSwwLDAsMSw5LjctMi4xMSwyMy41OCwyMy41OCwwLDAsMSw1LjU3LjY2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJl''@;'; put 'put ''Y3QgeD0iMjIuMTQiIHk9IjI3LjQxIiB3aWR0aD0iNi4xNCIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMy4xNywyMS40N0gyOHYyaDQuMTd2OC4zN0gxOFYyMy40N2g2LjN2LjQyYTEsMSwwLDAsMCwyLDBW''@;'; put 'put ''MjBhMSwxLDAsMCwwLTIsMHYxLjQ3SDE3YTEsMSwwLDAsMC0xLDFWMzIuODRhMSwxLDAsMCwwLDEsMUgzMy4xN2ExLDEsMCwwLDAsMS0xVjIyLjQ3QTEsMSwwLDAsMCwzMy4xNywyMS40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIFxuICA8Y2ly''@;'; put 'put ''Y2xlIGN4PSIxNi44NiIgY3k9IjkuNzMiIHI9IjYuNDYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgPHJlY3QgeD0iMjEiIHk9IjI4IiB3aWR0aD0iNyIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTE1LDMwdjNhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjIzYTEsMSwwLDAsMC0xLTFIMjZWMjAuNTNhMSwxLDAsMCwwLTIsMFYyMkgyMlYxOC40MkEzMi4xMiwzMi4xMiwwLDAsMCwxNi44NiwxOGEyNiwyNiwwLDAsMC0xMSwyLjM5LDMuMjgsMy4yOCwwLDAsMC0x''@;'; put 'put ''Ljg4LDNWMzBabTE3LDJIMTdWMjRoN3YuNDJhMSwxLDAsMCwwLDIsMFYyNGg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLGwuQ2xyU2hhcGVGYWN0b3J5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40Nyw3LjM3YTEsMSwwLDAsMC0xLC4wNkwy''@;'; put 'put ''MywxMy43N1Y4LjI2YTEsMSwwLDAsMC0xLjY0LS43N0wxMy40OCwxNEgxMFY0LjYyYTEsMSwwLDAsMC0uNzgtMWwtNC0uOWExLDEsMCwwLDAtLjg1LjJBMSwxLDAsMCwwLDQsMy43M1YxNEgzYTEsMSwwLDAsMC0xLDFWMzFhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjguMjZBMSwx''@;'; put 'put ''LDAsMCwwLDMzLjQ3LDcuMzdaTTYsNWwyLC40NFYxNEg2Wk0zMiwzMEg0VjE2aDkuODNhMSwxLDAsMCwwLC42NC0uMjNMMjEsMTAuMzd2NS4yOGExLDEsMCwwLDAsMS41Ni44M0wzMiwxMC4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0''@;'; put 'put ''IHg9IjYiIHk9IjE3Ljk5IiB3aWR0aD0iOCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cmVjdCB4PSI2IiB5PSIyMS45OSIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMiLz5cbiAgPHJlY3QgeD0iNiIgeT0iMjUuOTkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxyZWN0IHg9IjE5IiB5PSIxOC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHJlY3QgeD0iMTkiIHk9IjI0Ljk5IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cmVjdCB4PSIyMyIgeT0iMTguOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG4gIDxyZWN0IHg9IjIzIiB5PSIyNC45OSIgd2lkdGg9IjIiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgPHJlY3QgeD0iMjciIHk9IjE4Ljk5IiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICA8cmVjdCB4PSIyNyIgeT0iMjQuOTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIvPlxuICBcbiAg''@;'; put 'put ''PHBhdGggZD0iTTMyLjQ1LDguNDQsMjIsMTUuM1Y5LjUxYTEsMSwwLDAsMC0xLjYzLS43OEwxNC4wNywxNEgxMFY0LjA2TDQsMi43MVYxNEgyVjMxYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY5LjI3QTEsMSwwLDAsMCwzMi40NSw4LjQ0Wk0xNCwyOUg2VjI3aDhabTAtNEg2VjIz''@;'; put 'put ''aDhabTAtNEg2VjE5aDhabTgsOEgyMFYyNmgyWm0wLTZIMjBWMjBoMlptNCw2SDI0VjI2aDJabTAtNkgyNFYyMGgyWm00LDZIMjhWMjZoMlptMC02SDI4VjIwaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksbC5Db21tZXJjZVNoYXBlcz17Y2FsY3VsYXRv''@;'; put 'put ''cjpsLkNsclNoYXBlQ2FsY3VsYXRvciwicGlnZ3ktYmFuayI6bC5DbHJTaGFwZVBpZ2d5QmFuaywic2hvcHBpbmctYmFnIjpsLkNsclNoYXBlU2hvcHBpbmdCYWcsInNob3BwaW5nLWNhcnQiOmwuQ2xyU2hhcGVTaG9wcGluZ0NhcnQsd2FsbGV0OmwuQ2xyU2hhcGVXYWxsZXQsc3RvcmU6bC5D''@;'; put 'put ''bHJTaGFwZVN0b3JlLGV1cm86bC5DbHJTaGFwZUV1cm8sZG9sbGFyOmwuQ2xyU2hhcGVEb2xsYXIscGVzbzpsLkNsclNoYXBlUGVzbywiY3JlZGl0LWNhcmQiOmwuQ2xyU2hhcGVDcmVkaXRDYXJkLGJhbms6bC5DbHJTaGFwZUJhbmssImRvbGxhci1iaWxsIjpsLkNsclNoYXBlRG9sbGFyQmls''@;'; put 'put ''bCwiZS1jaGVjayI6bC5DbHJTaGFwZUVDaGVjayxwb3VuZDpsLkNsclNoYXBlUG91bmQscnVwZWU6bC5DbHJTaGFwZVJ1cGVlLHdvbjpsLkNsclNoYXBlV29uLHllbjpsLkNsclNoYXBlWWVuLGJpdGNvaW46bC5DbHJTaGFwZUJpdGNvaW4scnVibGU6bC5DbHJTaGFwZVJ1YmxlLCJjb2luLWJh''@;'; put 'put ''ZyI6bC5DbHJTaGFwZUNvaW5CYWcsImVtcGxveWVlLWdyb3VwIjpsLkNsclNoYXBlRW1wbG95ZWVHcm91cCxlbXBsb3llZTpsLkNsclNoYXBlRW1wbG95ZWUsZmFjdG9yeTpsLkNsclNoYXBlRmFjdG9yeX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29tbWVyY2VTaGFwZXMsInNhdmluZ3Mi''@;'; put 'put ''LCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db21tZXJjZVNoYXBlc1sicGlnZ3ktYmFuayJdKSksdHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKGwuQ29tbWVyY2VTaGFwZXMpfSwiLi9wcm9q''@;'; put 'put ''ZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMgKioqIQogICAgICBcKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuQ29yZVNo''@;'; put 'put ''YXBlcz1sLkNsclNoYXBlQXJyb3c9bC5DbHJTaGFwZVN0ZXBGb3J3YXJkMj1sLkNsclNoYXBlRXllSGlkZT1sLkNsclNoYXBlRXllPWwuQ2xyU2hhcGVFdmVudD1sLkNsclNoYXBlQ2FsZW5kYXI9bC5DbHJTaGFwZUFuZ2xlRG91YmxlPWwuQ2xyU2hhcGVWaWV3Q29sdW1ucz1sLkNsclNoYXBl''@;'; put 'put ''U2VhcmNoPWwuQ2xyU2hhcGVWbUJ1Zz1sLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT1sLkNsclNoYXBlRmlsdGVyR3JpZD1sLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD1sLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPWwuQ2xyU2hhcGVDbG91ZD1sLkNsclNoYXBlSW1hZ2U9bC5DbHJT''@;'; put 'put ''aGFwZUJlbGw9bC5DbHJTaGFwZUZvbGRlck9wZW49bC5DbHJTaGFwZUZvbGRlcj1sLkNsclNoYXBlQW5nbGU9bC5DbHJTaGFwZVVzZXI9bC5DbHJTaGFwZUJhcnM9bC5DbHJTaGFwZUhlbHBJbmZvPWwuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9bC5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9bC5D''@;'; put 'put ''bHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD1sLkNsclNoYXBlSW5mb1N0YW5kYXJkPWwuQ2xyU2hhcGVJbmZvQ2lyY2xlPWwuQ2xyU2hhcGVDaGVja0NpcmNsZT1sLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9bC5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9bC5DbHJTaGFwZVRpbWVzPWwu''@;'; put 'put ''Q2xyU2hhcGVDaGVjaz1sLkNsclNoYXBlQ29nPWwuQ2xyU2hhcGVIb21lPWwuQ2xyU2hhcGVVbmtub3duU3RhdHVzPXZvaWQgMDt2YXIgcD1hKAovKiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRz''@;'; put 'put ''Iik7YT1hKAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksbC5DbHJTaGFwZVVua25vd25TdGF0dXM9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3LjU4IiBjeT0iMjYuMjMiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjQuNywxM2E1LjE4LDUuMTgsMCwwLDAtMi4xNi0zLjU2LDcuMjYsNy4y''@;'; put 'put ''NiwwLDAsMC01LjcxLTEuMDlBMTEuMzQsMTEuMzQsMCwwLDAsMTIsMTAuNDQsMSwxLDAsMSwwLDEzLjI2LDEyYTkuMzIsOS4zMiwwLDAsMSwzLjk0LTEuNzIsNS4yOSw1LjI5LDAsMCwxLDQuMTYuNzQsMy4yMSwzLjIxLDAsMCwxLDEuMzUsMi4xOWMuMzMsMi42OS0zLjE5LDMuNzUtNS4zMiw0''@;'; put 'put ''LjE0bC0uODIuMTV2NC4zNmExLDEsMCwwLDAsMiwwVjE5LjE3QzI0LjYxLDE3Ljc5LDI0Ljg4LDE0LjQxLDI0LjcsMTNaIi8+JyksbC5DbHJTaGFwZUhvbWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy43''@;'; put 'put ''MSwxNy4yOWwtMTUtMTVhMSwxLDAsMCwwLTEuNDEsMGwtMTUsMTVhMSwxLDAsMCwwLDEuNDEsMS40MUwxOCw0LjQxLDMyLjI5LDE4LjcxYTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0yOCwzMmgtNVYyMkgxM1YzMkg4VjE4TDYsMjBWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAsMi0yVjE5Ljc2bC0yLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDE5''@;'; put 'put ''YTEsMSwwLDAsMS0uNzEtLjI5TDE4LDQuNDEsMy43MSwxOC43MWExLDEsMCwwLDEtMS40MS0xLjQxbDE1LTE1YTEsMSwwLDAsMSwxLjQxLDBsMTUsMTVBMSwxLDAsMCwxLDMzLDE5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTIiIGQ9Ik0xOCw3Ljc5LDYsMTkuODNWMzJhMiwyLDAsMCwwLDIsMmg3VjI0aDZWMzRoN2EyLDIsMCwwLDAsMi0yVjE5Ljc2WiIvPicpLGwuQ2xyU2hhcGVDb2c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0x''@;'; put 'put ''OC4xLDExYy0zLjksMC03LDMuMS03LDdzMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN1MyMiwxMSwxOC4xLDExeiBNMTguMSwyM2MtMi44LDAtNS0yLjItNS01czIuMi01LDUtNWMyLjgsMCw1LDIuMiw1LDVTMjAuOSwyMywxOC4xLDIzeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuOCwxNC43TDMwLDEzLjhsLTAuNi0xLjVsMS40LTIuNmMwLjMtMC42LDAuMi0xLjQtMC4zLTEuOWwtMi40LTIuNGMtMC41LTAuNS0xLjMtMC42LTEuOS0wLjNsLTIuNiwxLjRsLTEuNS0wLjZsLTAuOS0yLjhDMjEs''@;'; put 'put ''Mi41LDIwLjQsMiwxOS43LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYs''@;'; put 'put ''MS42bC0yLjgsMC45QzIuNSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjlj''@;'; put 'put ''MC4yLDAuNiwwLjgsMS4xLDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEu''@;'; put 'put ''MS0wLjgsMS4xLTEuNXYtMy40QzM0LDE1LjYsMzMuNSwxNC45LDMyLjgsMTQuN3ogTTMyLDE5LjRsLTMuNiwxLjFMMjguMywyMWMtMC4zLDAuNy0wLjYsMS40LTAuOSwyLjFsLTAuMywwLjVsMS44LDMuM2wtMiwybC0zLjMtMS44bC0wLjUsMC4zYy0wLjcsMC40LTEuNCwwLjctMi4xLDAuOWwt''@;'; put 'put ''MC41LDAuMUwxOS40LDMyaC0yLjhsLTEuMS0zLjZMMTUsMjguM2MtMC43LTAuMy0xLjQtMC42LTIuMS0wLjlsLTAuNS0wLjNsLTMuMywxLjhsLTItMmwxLjgtMy4zbC0wLjMtMC41Yy0wLjQtMC43LTAuNy0xLjQtMC45LTIuMWwtMC4xLTAuNUw0LDE5LjR2LTIuOGwzLjQtMWwwLjItMC41YzAu''@;'; put 'put ''Mi0wLjgsMC41LTEuNSwwLjktMi4ybDAuMy0wLjVMNy4xLDkuMWwyLTJsMy4yLDEuOGwwLjUtMC4zYzAuNy0wLjQsMS40LTAuNywyLjItMC45bDAuNS0wLjJMMTYuNiw0aDIuOGwxLjEsMy41TDIxLDcuN2MwLjcsMC4yLDEuNCwwLjUsMi4xLDAuOWwwLjUsMC4zbDMuMy0xLjhsMiwybC0xLjgs''@;'; put 'put ''My4zbDAuMywwLjVjMC40LDAuNywwLjcsMS40LDAuOSwyLjFsMC4xLDAuNWwzLjYsMS4xVjE5LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTEuMSwxOGMwLDMuOSwzLjEs''@;'; put 'put ''Nyw3LDdjMy45LDAsNy0zLjEsNy03cy0zLjEtNy03LTdDMTQuMiwxMSwxMS4xLDE0LjEsMTEuMSwxOHogTTIzLjEsMThjMCwyLjgtMi4yLDUtNSw1Yy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01QzIwLjksMTMsMjMuMSwxNS4yLDIzLjEsMTh6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuOCwxNC43TDMwLDEzLjhsLTAuMS0wLjNjLTAuOCwwLTEuNi0wLjItMi40LTAuNGMwLjMsMC42LDAuNiwxLjMsMC44LDEuOWwwLjEsMC41bDMuNiwxLjF2Mi44bC0zLjYsMS4x''@;'; put 'put ''TDI4LjMsMjFjLTAuMywwLjctMC42LDEuNC0wLjksMi4xbC0wLjMsMC41bDEuOCwzLjNsLTIsMmwtMy4zLTEuOGwtMC41LDAuM2MtMC43LDAuNC0xLjQsMC43LTIuMSwwLjlsLTAuNSwwLjFMMTkuNCwzMmgtMi44bC0xLjEtMy42TDE1LDI4LjNjLTAuNy0wLjMtMS40LTAuNi0yLjEtMC45bC0w''@;'; put 'put ''LjUtMC4zbC0zLjMsMS44bC0yLTJsMS44LTMuM2wtMC4zLTAuNWMtMC40LTAuNy0wLjctMS40LTAuOS0yLjFsLTAuMS0wLjVMNCwxOS40di0yLjhsMy40LTFsMC4yLTAuNWMwLjItMC44LDAuNS0xLjUsMC45LTIuMmwwLjMtMC41TDcuMSw5LjFsMi0ybDMuMiwxLjhsMC41LTAuM2MwLjctMC40''@;'; put 'put ''LDEuNC0wLjcsMi4yLTAuOWwwLjUtMC4yTDE2LjYsNGgyLjhsMS4xLDMuNUwyMSw3LjdjMC43LDAuMiwxLjMsMC41LDEuOSwwLjhjLTAuMy0wLjgtMC40LTEuNi0wLjQtMi41bC0wLjQtMC4ybC0wLjktMi44QzIxLDIuNSwyMC40LDIsMTkuNywyaC0zLjRjLTAuNywwLTEuMywwLjUtMS40LDEu''@;'; put 'put ''MkwxNCw2Yy0wLjYsMC4xLTEuMSwwLjMtMS42LDAuNkw5LjgsNS4yQzkuMiw0LjksOC40LDUsNy45LDUuNUw1LjUsNy45QzUsOC40LDQuOSw5LjIsNS4yLDkuOGwxLjMsMi41Yy0wLjIsMC41LTAuNCwxLjEtMC42LDEuNmwtMi44LDAuOUMyLjUsMTUsMiwxNS42LDIsMTYuM3YzLjRjMCwwLjcs''@;'; put 'put ''MC41LDEuMywxLjIsMS41TDYsMjIuMWwwLjYsMS41bC0xLjQsMi42Yy0wLjMsMC42LTAuMiwxLjQsMC4zLDEuOWwyLjQsMi40YzAuNSwwLjUsMS4zLDAuNiwxLjksMC4zbDIuNi0xLjRsMS41LDAuNmwwLjksMi45YzAuMiwwLjYsMC44LDEuMSwxLjUsMS4xaDMuNGMwLjcsMCwxLjMtMC41LDEu''@;'; put 'put ''NS0xLjFsMC45LTIuOWwxLjUtMC42bDIuNiwxLjRjMC42LDAuMywxLjQsMC4yLDEuOS0wLjNsMi40LTIuNGMwLjUtMC41LDAuNi0xLjMsMC4zLTEuOWwtMS40LTIuNmwwLjYtMS41bDIuOS0wLjljMC42LTAuMiwxLjEtMC44LDEuMS0xLjV2LTMuNEMzNCwxNS42LDMzLjUsMTQuOSwzMi44LDE0''@;'; put 'put ''Ljd6Ii8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMzLjcsMTUuNGgtNS4zdjAuMWwzLjYsMS4xdjIuOGwtMy42LDEuMUwyOC4zLDIxYy0wLjMsMC43LTAuNiwxLjQtMC45LDIuMWwtMC4zLDAuNWwxLjgsMy4zbC0yLDJsLTMuMy0xLjhsLTAuNSwwLjNjLTAu''@;'; put 'put ''NywwLjQtMS40LDAuNy0yLjEsMC45bC0wLjUsMC4xTDE5LjQsMzJoLTIuOGwtMS4xLTMuNkwxNSwyOC4zYy0wLjctMC4zLTEuNC0wLjYtMi4xLTAuOWwtMC41LTAuM2wtMy4zLDEuOGwtMi0ybDEuOC0zLjNsLTAuMy0wLjVjLTAuNC0wLjctMC43LTEuNC0wLjktMi4xbC0wLjEtMC41TDQsMTku''@;'; put 'put ''NHYtMi44bDMuNC0xbDAuMi0wLjVjMC4yLTAuOCwwLjUtMS41LDAuOS0yLjJsMC4zLTAuNUw3LjEsOS4xbDItMmwzLjIsMS44bDAuNS0wLjNjMC43LTAuNCwxLjQtMC43LDIuMi0wLjlsMC41LTAuMkwxNi42LDRoMi44bDEuMSwzLjRsMS40LTIuM2wtMC42LTJDMjEsMi40LDIwLjQsMiwxOS43''@;'; put 'put ''LDJoLTMuNGMtMC43LDAtMS4zLDAuNS0xLjQsMS4yTDE0LDZjLTAuNiwwLjEtMS4xLDAuMy0xLjYsMC42TDkuOCw1LjJDOS4yLDQuOSw4LjQsNSw3LjksNS41TDUuNSw3LjlDNSw4LjQsNC45LDkuMiw1LjIsOS44bDEuMywyLjVjLTAuMiwwLjUtMC40LDEuMS0wLjYsMS42bC0yLjgsMC45QzIu''@;'; put 'put ''NSwxNSwyLDE1LjYsMiwxNi4zdjMuNGMwLDAuNywwLjUsMS4zLDEuMiwxLjVMNiwyMi4xbDAuNiwxLjVsLTEuNCwyLjZjLTAuMywwLjYtMC4yLDEuNCwwLjMsMS45bDIuNCwyLjRjMC41LDAuNSwxLjMsMC42LDEuOSwwLjNsMi42LTEuNGwxLjUsMC42bDAuOSwyLjljMC4yLDAuNiwwLjgsMS4x''@;'; put 'put ''LDEuNSwxLjFoMy40YzAuNywwLDEuMy0wLjUsMS41LTEuMWwwLjktMi45bDEuNS0wLjZsMi42LDEuNGMwLjYsMC4zLDEuNCwwLjIsMS45LTAuM2wyLjQtMi40YzAuNS0wLjUsMC42LTEuMywwLjMtMS45bC0xLjQtMi42bDAuNi0xLjVsMi45LTAuOWMwLjYtMC4yLDEuMS0wLjgsMS4xLTEuNXYt''@;'; put 'put ''My40QzM0LDE2LDMzLjksMTUuNywzMy43LDE1LjR6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xOC4xLDIzYy0yLjgsMC01LTIuMi01LTVzMi4yLTUsNS01YzAuMiwwLDAu''@;'; put 'put ''NSwwLDAuNywwLjFjLTAuMi0wLjYtMC4zLTEuMy0wLjItMmgtMC41Yy0zLjksMC03LDMuMS03LDdjMCwzLjksMy4xLDcsNyw3YzMuOSwwLDctMy4xLDctN2MwLTAuOS0wLjItMS44LTAuNS0yLjZoLTIuMmMwLjUsMC44LDAuNywxLjYsMC43LDIuNUMyMy4xLDIwLjgsMjAuOSwyMywxOC4xLDIz''@;'; put 'put ''eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAu''@;'; put 'put ''OCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEiIGQ9Ik0zMi41NywxNS43MmwtMy4zNS0xYTExLjY1LDExLjY1LDAsMCwwLS45NS0yLjMzbDEuNjQtMy4wN2EuNjEuNjEsMCwwLDAtLjExLS43MkwyNy40MSw2LjJhLjYxLjYxLDAsMCwwLS43Mi0uMTFMMjMuNjQsNy43MmExMS42MiwxMS42MiwwLDAsMC0yLjM2LTFsLTEt''@;'; put 'put ''My4zMUEuNjEuNjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCww''@;'; put 'put ''LTEsMi4zN2wtMy4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWEx''@;'; put 'put ''MS42NSwxMS42NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAs''@;'; put 'put ''LjExLS43MmwtMS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MlpNMTgsMjMuNUE1LjUsNS41LDAsMSwxLDIzLjUsMTgsNS41LDUuNSwwLDAsMSwxOCwyMy41WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIuNTcsMTUuNzJsLTMuMzUtMWExMi4xMiwxMi4xMiwwLDAsMC0uNDctMS4zMiw3LjQ5LDcuNDksMCwwLDEtNi4xNC02LjE2LDExLjgyLDExLjgyLDAs''@;'; put 'put ''MCwwLTEuMzMtLjQ4bC0xLTMuMzFBLjYxLjYxLDAsMCwwLDE5LjY5LDNIMTYuMzFhLjYxLjYxLDAsMCwwLS41OC40M2wtMSwzLjNhMTEuNjMsMTEuNjMsMCwwLDAtMi4zOCwxbC0zLTEuNjJhLjYxLjYxLDAsMCwwLS43Mi4xMUw2LjIsOC41OWEuNjEuNjEsMCwwLDAtLjExLjcybDEuNjIsM2Ex''@;'; put 'put ''MS42MywxMS42MywwLDAsMC0xLDIuMzdsLTMuMzEsMWEuNjEuNjEsMCwwLDAtLjQzLjU4djMuMzhhLjYxLjYxLDAsMCwwLC40My41OGwzLjMzLDFhMTEuNjIsMTEuNjIsMCwwLDAsMSwyLjMzTDYuMDksMjYuNjlhLjYxLjYxLDAsMCwwLC4xMS43Mkw4LjU5LDI5LjhhLjYxLjYxLDAsMCwwLC43''@;'; put 'put ''Mi4xMWwzLjA5LTEuNjVhMTEuNjUsMTEuNjUsMCwwLDAsMi4zLjk0bDEsMy4zN2EuNjEuNjEsMCwwLDAsLjU4LjQzaDMuMzhhLjYxLjYxLDAsMCwwLC41OC0uNDNsMS0zLjM4YTExLjYzLDExLjYzLDAsMCwwLDIuMjgtLjk0bDMuMTEsMS42NmEuNjEuNjEsMCwwLDAsLjcyLS4xMWwyLjM5LTIu''@;'; put 'put ''MzlhLjYxLjYxLDAsMCwwLC4xMS0uNzJsLTEuNjYtMy4xYTExLjYzLDExLjYzLDAsMCwwLC45NS0yLjI5bDMuMzctMWEuNjEuNjEsMCwwLDAsLjQzLS41OFYxNi4zMUEuNjEuNjEsMCwwLDAsMzIuNTcsMTUuNzJaTTE4LDIzLjVBNS41LDUuNSwwLDEsMSwyMy41LDE4LDUuNSw1LjUsMCwwLDEs''@;'; put 'put ''MTgsMjMuNVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMyLjU3LDE1LjcyLDMxLjUsMTUuNEgyMi44NUE1LjUsNS41LDAsMSwxLDE4LDEyLjVhNS41Myw1LjUzLDAsMCwxLC42NSwwQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDIuMDktMy42Mi0uODYtMi44M0EuNjEu''@;'; put 'put ''NjEsMCwwLDAsMTkuNjksM0gxNi4zMWEuNjEuNjEsMCwwLDAtLjU4LjQzbC0xLDMuM2ExMS42MywxMS42MywwLDAsMC0yLjM4LDFsLTMtMS42MmEuNjEuNjEsMCwwLDAtLjcyLjExTDYuMiw4LjU5YS42MS42MSwwLDAsMC0uMTEuNzJsMS42MiwzYTExLjYzLDExLjYzLDAsMCwwLTEsMi4zN2wt''@;'; put 'put ''My4zMSwxYS42MS42MSwwLDAsMC0uNDMuNTh2My4zOGEuNjEuNjEsMCwwLDAsLjQzLjU4bDMuMzMsMWExMS42MiwxMS42MiwwLDAsMCwxLDIuMzNMNi4wOSwyNi42OWEuNjEuNjEsMCwwLDAsLjExLjcyTDguNTksMjkuOGEuNjEuNjEsMCwwLDAsLjcyLjExbDMuMDktMS42NWExMS42NSwxMS42''@;'; put 'put ''NSwwLDAsMCwyLjMuOTRsMSwzLjM3YS42MS42MSwwLDAsMCwuNTguNDNoMy4zOGEuNjEuNjEsMCwwLDAsLjU4LS40M2wxLTMuMzhhMTEuNjMsMTEuNjMsMCwwLDAsMi4yOC0uOTRsMy4xMSwxLjY2YS42MS42MSwwLDAsMCwuNzItLjExbDIuMzktMi4zOWEuNjEuNjEsMCwwLDAsLjExLS43Mmwt''@;'; put 'put ''MS42Ni0zLjFhMTEuNjMsMTEuNjMsMCwwLDAsLjk1LTIuMjlsMy4zNy0xYS42MS42MSwwLDAsMCwuNDMtLjU4VjE2LjMxQS42MS42MSwwLDAsMCwzMi41NywxNS43MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksbC5DbHJTaGFwZUNoZWNr''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTMuNzIsMjcuNjksMy4yOSwxNy4yN2ExLDEsMCwwLDEsMS40MS0xLjQxbDksOUwzMS4yOSw3LjI5YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+JyksbC5DbHJTaGFw''@;'; put 'put ''ZVRpbWVzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNDEsMThsOC4yOS04LjI5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTgsMTYuNTksOS43MSw4LjI5QTEsMSwwLDAsMCw4LjI5LDkuNzFMMTYuNTksMTgs''@;'; put 'put ''OC4yOSwyNi4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDguMjksOC4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPicpLGwuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTgsMjEuMzJhMS4zLDEuMywwLDAsMCwxLjMtMS4zVjE0YTEuMywxLjMsMCwxLDAtMi42LDB2NkExLjMsMS4zLDAsMCwwLDE4LDIxLjMyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4''@;'; put 'put ''PSIxNy45NSIgY3k9IjI0LjI3IiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEs''@;'; put 'put ''MzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1ptLTEuNzgsMS45NGExLDEsMCwwLDEtLjg2LjQ5SDguMjFhMSwxLDAsMCwxLS44OC0xLjQ4TDE3LjA3LDguNTVhMSwxLDAsMCwxLDEuNzYsMGw5Ljc0LDE3Ljk0QTEsMSwwLDAsMSwyOC41NSwyNy40OFoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWk0xNi40NiwxMi43NGExLjQ5LDEuNDks''@;'; put 'put ''MCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjYuMjVhMS43MiwxLjcyLDAsMSwxLDEuNzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjYuMjVaIi8+JyksbC5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjAuMDdhMS4zLDEuMywwLDAsMS0xLjMtMS4zdi02YTEuMywxLjMsMCwxLDEsMi42LDB2NkExLjMsMS4zLDAsMCwxLDE4LDIwLjA3WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiIGN4PSIxNy45NSIgY3k9IjIzLjAyIiByPSIxLjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMS40OSw2YTEuNDks''@;'; put 'put ''MS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNS41YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI1LjVaIi8+JyksbC5DbHJTaGFwZUNoZWNrQ2lyY2xlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTYuMzQsMjMuNzRsLTUtNWExLDEsMCwwLDEsMS40MS0xLjQxbDMuNTksMy41OSw2Ljc4LTYuNzhhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''IiBkPSJNMzAsMThBMTIsMTIsMCwxLDEsMTgsNiwxMiwxMiwwLDAsMSwzMCwxOFptLTQuNzctMi4xNmExLjQsMS40LDAsMCwwLTItMmwtNi43Nyw2Ljc3TDEzLDE3LjE2YTEuNCwxLjQsMCwwLDAtMiwybDUuNDUsNS40NVoiLz4nKSxsLkNsclNoYXBlSW5mb0NpcmNsZT0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAgY3g9IjE3LjkzIiBjeT0iMTEuOSIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiICBkPSJNMjEsMjNI''@;'; put 'put ''MTlWMTVIMTZhMSwxLDAsMCwwLDAsMmgxdjZIMTVhMSwxLDAsMSwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiICBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiww''@;'; put 'put ''LDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4LDEwLDEwLDAsMCwxLDE4LDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0y''@;'; put 'put ''LDUuMTVhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsMTUuOSwxMS4xNVpNMjMsMjRhMSwxLDAsMCwxLTEsMUgxNWExLDEsMCwxLDEsMC0yaDJWMTdIMTZhMSwxLDAsMCwxLDAtMmg0djhoMkExLDEsMCwwLDEsMjMsMjRaIi8+JyksbC5DbHJTaGFwZUluZm9TdGFuZGFyZD0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuOTciIGN5PSIxMC40NSIgcj0iMS40Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMSwyNUgx''@;'; put 'put ''OVYxNC4xSDE2YTEsMSwwLDAsMCwwLDJoMVYyNUgxNWExLDEsMCwwLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2''@;'; put 'put ''LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''LjFabS0uMSw1LjI4YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDE3LjksNy4zOFptMy42LDIxLjI1aC03YTEuNCwxLjQsMCwxLDEsMC0yLjhoMi4xdi05LjJIMTVhMS40LDEuNCwwLDEsMSwwLTIuOGg0LjR2MTJoMi4xYTEuNCwxLjQsMCwxLDEsMCwyLjhaIi8+JyksbC5DbHJTaGFwZVN1Y2Nl''@;'; put 'put ''c3NTdGFuZGFyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDEyLjFhMSwxLDAsMCwwLTEuNDEsMEwxNS40OSwyMy4xNWwtNi02QTEsMSwwLDAsMCw4LDE4LjUzTDE1LjQ5LDI2LDI4LDEzLjUyQTEsMSwwLDAsMCwyOCwx''@;'; put 'put ''Mi4xWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI4LjQ1LDEyLjYzLDE1LjMxLDI1Ljc2LDcuNTUsMThhMS40LDEuNCwwLDAsMSwyLTJs''@;'; put 'put ''NS43OCw1Ljc4TDI2LjQ3LDEwLjY1YTEuNCwxLjQsMCwxLDEsMiwyWiIvPicpLGwuQ2xyU2hhcGVFcnJvclN0YW5kYXJkPSgwLGEuY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMz''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMi42MWExLDEsMCwwLDEtMS0xdi0xMmExLDEsMCwxLDEsMiwwdjEyQTEsMSwwLDAsMSwxOCwyMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuMWExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOCwyLjFaTTE2LjYsOC44YTEuNCwxLjQsMCwwLDEsMi44LDB2MTJhMS40LDEuNCwwLDAsMS0yLjgsMFpNMTgsMjguNmExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44''@;'; put 'put ''LDEuOCwwLDAsMSwxOCwyOC42WiIvPicpLGwuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTUuMDYyMDc4MiwxLjY4MTE5NiBDMTUuNjI5ODgxOSwwLjY0OTI2NjM1NSAxNi43MTA5MDkxLDAuMDEwMjIxOTM5NiAxNy44ODUsMC4wMTAyMjE5Mzk2IEMxOS4wNTkwOTA5LDAuMDEwMjIxOTM5NiAyMC4xNDAxMTgxLDAuNjQ5MjY2MzU1IDIw''@;'; put 'put ''LjcwODY0MzMsMS42ODI1MjEyOSBMMzQuNTk4NjQ0LDI3LjI0MjUyMjUgQzM1LjE0MDc3NDYsMjguMjQwMTM5NyAzNS4xMTc0MzQ1LDI5LjQ0OTUzNzMgMzQuNTM3MjE2MSwzMC40MjU0OTQzIEMzMy45NTY5OTc3LDMxLjQwMTQ1MTQgMzIuOTA1NjcxLDMxLjk5OTY5ODQgMzEuNzcsMzIgTDQu''@;'; put 'put ''MDIyMzkzMjMsMzEuOTk5NzQ5MiBDMi44NzQwOTAwOSwzMi4wMjU0Njk5IDEuNzk5MDI4NDMsMzEuNDM3NTc1MyAxLjIwMTA2MzM1LDMwLjQ1NjkxMjYgQzAuNjAzMDk4MjY1LDI5LjQ3NjI0OTkgMC41NzI3Nzc4OTksMjguMjUxMzE3OSAxLjEyMjA3ODE4LDI3LjI0MTE5NiBMMTUuMDYyMDc4''@;'; put 'put ''MiwxLjY4MTE5NiBaIE0yLjg3ODUwNzY3LDI4LjE5NzcyODIgQzIuNjcwNjA5NjYsMjguNTgwMDM3NiAyLjY4MjA5NzUsMjkuMDQ0MTQyMyAyLjkwODY1NTcsMjkuNDE1Njk3NyBDMy4xMzUyMTM5LDI5Ljc4NzI1MzIgMy41NDI1MzU0LDMwLjAwOTk5NTkgNCwzMCBMMzEuNzY5NzM0NCwzMCBD''@;'; put 'put ''MzIuMTk5OTE5MSwyOS45OTk4ODU4IDMyLjU5ODI0NzgsMjkuNzczMjIwOCAzMi44MTgwODIxLDI5LjQwMzQ0ODIgQzMzLjAzNzkxNjQsMjkuMDMzNjc1NyAzMy4wNDY3NTk1LDI4LjU3NTQ1NjcgMzIuODQxMzU2NywyOC4xOTc0Nzg3IEwxOC45NTM4NzM5LDIuNjQyMDgxOTUgQzE4LjczOTQy''@;'; put 'put ''MzYsMi4yNTIzNDQzNiAxOC4zMjk4NDE5LDIuMDEwMjIxOTQgMTcuODg1LDIuMDEwMjIxOTQgQzE3LjQ0MDY4ODksMi4wMTAyMjE5NCAxNy4wMzE1NTM4LDIuMjUxNzY2OTIgMTYuODE2ODk0NiwyLjY0MDY4NzUzIEwyLjg3ODUwNzY3LDI4LjE5NzcyODIgWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC42LDI5LjIxLDIwLjcxLDMuNjVhMy4yMiwzLjIyLDAsMCwwLTUuNjYsMEwxLjE3LDI5LjIxQTMuMjIsMy4yMiwwLDAsMCw0LDM0SDMxLjc3YTMuMjIsMy4yMiwwLDAsMCwyLjgzLTQuNzVaTTE2LjYs''@;'; put 'put ''MTBhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOS44NWExLjgsMS44LDAsMSwxLDEuOC0xLjhBMS44LDEuOCwwLDAsMSwxOCwyOS44NVoiLz4nKSxsLkNsclNoYXBlSGVscEluZm89KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjM5LDI1LjQ1''@;'; put 'put ''YTEsMSwwLDAsMC0xLjM4LjI5Yy0xLjQxLDIuMTYtNCw0LjgxLTYuMzEsNS43cy00LjEyLjU3LTQuODQsMGMtLjMxLS4yNy0xLjEyLTEtLjQzLTMuNDkuNDYtMS42NiwzLjMyLTkuNDgsNC0xMS4zOGwtMi4xOC4yOGMtLjY5LDEuODYtMy4yOSw4Ljg0LTMuNzYsMTAuNTgtLjY4LDIuNDktLjM0''@;'; put 'put ''LDQuMywxLjA5LDUuNTZBNS41OSw1LjU5LDAsMCwwLDE1LDM0YTkuNTMsOS41MywwLDAsMCwzLjQ1LS43YzIuNzktMS4wOSw1LjcyLTQuMTIsNy4yNi02LjQ3QTEsMSwwLDAsMCwyNS4zOSwyNS40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE5LjMsMTFhNC41LDQuNSwwLDEsMC00LjUtNC41QTQuNSw0LjUsMCwwLDAsMTkuMywxMVptMC03YTIuNSwyLjUsMCwxLDEtMi41LDIuNUEyLjUsMi41LDAsMCwxLDE5LjMsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjgxLDE1Yy4wNiwwLDYuMjctLjgyLDcuNzMtMSwuNjUtLjEsMS4xNCwwLDEuMy4xNXMuMjEuOC0uMDcsMS42OGMtLjYxLDEuODYtMy42OSwxMS00LjU5LDEzLjcxYTgsOCwwLDAsMCwxLjI5LS4zOCw3LjMyLDcuMzIsMCwwLDAsMS4xNS0uNkMx''@;'; put 'put ''OS44NSwyNSwyMi4xNSwxOC4xLDIyLjY3LDE2LjUycy4zOS0yLjc4LS4zLTMuNmEzLjE2LDMuMTYsMCwwLDAtMy4wOC0uODNjLTEuNDMuMTUtNy40Ny45NC03LjczLDFhMSwxLDAsMCwwLC4yNiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIyMC43NSIgY3k9IjYiIHI9IjQiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuODQsMjYuMjNhMSwxLDAsMCwwLTEuNC4yOSwxNi42LDE2LjYsMCwwLDEtMy41MSwzLjc3Yy0uMzMu''@;'; put 'put ''MjUtMS41NiwxLjItMi4wOCwxLS4zNi0uMTEtLjE1LS44Mi0uMDgtMS4xMmwuNTMtMS41N2MuMjItLjY0LDQuMDUtMTIsNC40Ny0xMy4zLjYyLTEuOS4zNS0zLjc3LTIuNDgtMy4zMi0uNzcuMDgtOC41OCwxLjA5LTguNzIsMS4xYTEsMSwwLDAsMCwuMTMsMnMzLS4zOSwzLjMzLS40MmEuODgu''@;'; put 'put ''ODgsMCwwLDEsLjg1LjQ0LDIuNDcsMi40NywwLDAsMS0uMDcsMS43MWMtLjI2LDEtNC4zNywxMi41OC00LjUsMTMuMjVhMi43OCwyLjc4LDAsMCwwLDEuMTgsMyw1LDUsMCwwLDAsMy4wOC44M2gwYTguNTMsOC41MywwLDAsMCwzLjA5LS42MmMyLjQ5LTEsNS4wOS0zLjY2LDYuNDYtNS43NUEx''@;'; put 'put ''LDEsMCwwLDAsMjQuODQsMjYuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVCYXJzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMjlINGExLDEs''@;'; put 'put ''MCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwxOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTMyLDlINEExLDEsMCwwLDEsNCw3SDMyYTEsMSwwLDAsMSwwLDJaIi8+JyksbC5DbHJTaGFwZVVzZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE3YTcsNywwLDEsMC03LTdBNyw3LDAsMCww''@;'; put 'put ''LDE4LDE3Wk0xOCw1YTUsNSwwLDEsMS01LDVBNSw1LDAsMCwxLDE4LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC40NywyNC4zN2ExNy4xNiwxNy4xNiwwLDAsMC0yNC45MywwQTIsMiwwLDAsMCw1LDI1''@;'; put 'put ''Ljc0VjMxYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyNS43NEEyLDIsMCwwLDAsMzAuNDcsMjQuMzdaTTI5LDMxSDdWMjUuNzNhMTUuMTcsMTUuMTcsMCwwLDEsMjIsMGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzAuNDcsMjQuMzdhMTcuMTYsMTcuMTYsMCwwLDAtMjQuOTMsMEEyLDIsMCwwLDAsNSwyNS43NFYzMWEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjUuNzRBMiwyLDAsMCwwLDMwLjQ3LDI0LjM3Wk0yOSwzMUg3VjI1LjczYTE1LjE3LDE1LjE3LDAsMCwxLDIy''@;'; put 'put ''LDBoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwyMCwxNC42YTUsNSwwLDEsMSwxLjI0LTgu''@;'; put 'put ''NDJsMS0xLjc2QTcsNywwLDEsMCwxOCwxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTMwLjQ3LDI0LjM3YTE3LjE2LDE3LjE2LDAsMCwwLTI0LjkzLDBBMiwyLDAsMCwwLDUsMjUuNzRWMzFhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0yVjI1Ljc0QTIsMiwwLDAsMCwzMC40NywyNC4zN1pNMjksMzFIN1YyNS43M2ExNS4xNywxNS4xNywwLDAsMSwyMiwwaDBaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUs''@;'; put 'put ''NUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYt''@;'; put 'put ''NkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxMCIgcj0iNyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMC42MSwyNC41MmExNy4xNiwxNy4xNiwwLDAsMC0yNS4yMiwwLDEuNTEsMS41MSwwLDAsMC0uMzksMXY2QTEuNSwxLjUsMCwwLDAsNi41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNXYtNkExLjUxLDEuNTEsMCwwLDAsMzAuNjEsMjQuNTJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE3YTcsNywwLDAsMCw0LjQ1LTEuNmgtLjIyQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDMuMTYtNS40N0E3LDcsMCwxLDAsMTgsMTdaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNjEsMjQuNTJhMTcuMTYsMTcuMTYsMCwwLDAtMjUuMjIsMCwxLjUx''@;'; put 'put ''LDEuNTEsMCwwLDAtLjM5LDF2NkExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjV2LTZBMS41MSwxLjUxLDAsMCwwLDMwLjYxLDI0LjUyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMCwwLDYuODUtNS41Niw3LjQsNy40LDAsMCwxLTIuMjQtNi42OUE3LDcsMCwxLDAsMTgsMTdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVBbmdsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTI5LjUyLDIyLjUyLDE4LDEwLjYsNi40OCwyMi41MmExLjcsMS43LDAsMCwwLDIuNDUsMi4zNkwxOCwxNS40OWw5LjA4LDkuMzlhMS43LDEuNywwLDAsMCwyLjQ1LTIuMzZaIi8+JyksbC5DbHJTaGFwZUZvbGRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMCw5Wm0wLDIwSDZWMTNoNy4zMWEy''@;'; put 'put ''LDIsMCwwLDAsMi0ySDZWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVWMjlINlYxM2g3LjMxYTIs''@;'; put 'put ''MiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MWE3LjUsNy41LDAsMCwxLTEuMjktMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJB''@;'; put 'put ''Ny40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTMwLDE1LjRWMjlINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEsMTks''@;'; put 'put ''OS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwz''@;'; put 'put ''MCw5Wk02LDExVjdoNi40OWwyLjcyLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4x''@;'; put 'put ''MSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVBNy41LDcuNSwwLDAsMSwyMy4xMyw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVpNNiwxMVY3aDYuNDlsMi43Miw0WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2Ui''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxsLkNsclNoYXBlRm9sZGVyT3Blbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5''@;'; put 'put ''LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMmEyLDIsMCwwLDAtMi0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAs''@;'; put 'put ''MCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwu''@;'; put 'put ''ODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1''@;'; put 'put ''LjMyLDEzLjc0Wk0yOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9''@;'; put 'put ''IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNGgtLjNMMjkuNTUsMjlINi45bDMuODgtMTMuODFhLjY2LjY2LDAsMCwxLC4zOC0u''@;'; put 'put ''MjRoOS40MkEzLjY3LDMuNjcsMCwwLDEsMTksMTMuNTZhMy42MywzLjYzLDAsMCwxLS4yNi0uNTZIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoMi43M0EzLjY2LDMuNjYsMCwwLDEs''@;'; put 'put ''MTksOS44OUwxOS41Niw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcsMS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFhMS42OCwxLjY4LDAsMCwwLC4wNy0uMzJBMy42NywzLjY3LDAs''@;'; put 'put ''MCwxLDMzLjY4LDE1LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gz''@;'; put 'put ''My42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCww''@;'; put 'put ''LDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdW''@;'; put 'put ''MjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQx''@;'; put 'put ''aDIuNzNBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xYTEuNjgsMS42OCwwLDAs''@;'; put 'put ''MCwuMDctLjMyQTMuNjcsMy42NywwLDAsMSwzMy42OCwxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4y''@;'; put 'put ''OCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdl''@;'; put 'put ''ZCIgZD0iTTM1LjMyLDEzLjc0QTEuNzEsMS43MSwwLDAsMCwzMy44NywxM0gxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWg4LjUyYTcuNDksNy40OSwwLDAsMS0xLjMxLTJIMTYuNDJM''@;'; put 'put ''MTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGwuQ2xyU2hhcGVCZWxsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMzIuNTEsMjcuODNBMTQuNCwxNC40LDAsMCwxLDMwLDI0LjlhMTIuNjMsMTIuNjMsMCwwLDEtMS4zNS00LjgxVjE1LjE1QTEwLjgxLDEwLjgxLDAsMCwwLDE5LjIxLDQuNFYzLjExYTEuMzMsMS4zMywwLDEsMC0yLjY3LDBWNC40MkExMC44MSwxMC44MSwwLDAsMCw3LjIx''@;'; put 'put ''LDE1LjE1djQuOTRBMTIuNjMsMTIuNjMsMCwwLDEsNS44NiwyNC45YTE0LjQsMTQuNCwwLDAsMS0yLjQ3LDIuOTMsMSwxLDAsMCwwLS4zNC43NXYxLjM2YTEsMSwwLDAsMCwxLDFoMjcuOGExLDEsMCwwLDAsMS0xVjI4LjU4QTEsMSwwLDAsMCwzMi41MSwyNy44M1pNNS4xMywyOC45NGExNi4x''@;'; put 'put ''NywxNi4xNywwLDAsMCwyLjQ0LTMsMTQuMjQsMTQuMjQsMCwwLDAsMS42NS01Ljg1VjE1LjE1YTguNzQsOC43NCwwLDEsMSwxNy40NywwdjQuOTRhMTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0LjI4QTIuNjcsMi42NywwLDAsMCwyMC41OCwzMkgxNS4zMkEyLjY3LDIuNjcsMCwwLDAsMTgsMzQuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAtLjE2LTEuNzksNy40NCw3LjQ0LDAsMCwxLTIuMjQtLjg0LDguODksOC44OSwwLDAsMSwu''@;'; put 'put ''NCwyLjY0djQuOTRhMTQuMjQsMTQuMjQsMCwwLDAsMS42NSw1Ljg1LDE2LjE3LDE2LjE3LDAsMCwwLDIuNDQsM0g1LjEzYTE2LjE3LDE2LjE3LDAsMCwwLDIuNDQtMywxNC4yNCwxNC4yNCwwLDAsMCwxLjY1LTUuODVWMTUuMTVBOC44LDguOCwwLDAsMSwxOCw2LjMxYTguNjEsOC42MSwwLDAs''@;'; put 'put ''MSw0Ljc2LDEuNDRBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNmMwLS4yMSwwLS40MiwwLS42M2ExMC41OCwxMC41OCwwLDAsMC0zLjMyLTFWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAsMCwxLDUu''@;'; put 'put ''ODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzLDEsMSwwLDAsMC0uMzQuNzV2MS4zNmExLDEsMCwwLDAsMSwxaDI3LjhhMSwxLDAsMCwwLDEtMVYyOC41OEExLDEsMCwwLDAsMzIuNTEsMjcuODNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuODUsMjguMTNsLS4zNC0uM0ExNC4z''@;'; put 'put ''NywxNC4zNywwLDAsMSwzMCwyNC45YTEyLjYzLDEyLjYzLDAsMCwxLTEuMzUtNC44MVYxNS4xNUExMC44MSwxMC44MSwwLDAsMCwxOS4yMSw0LjRWMy4xMWExLjMzLDEuMzMsMCwxLDAtMi42NywwVjQuNDJBMTAuODEsMTAuODEsMCwwLDAsNy4yMSwxNS4xNXY0Ljk0QTEyLjYzLDEyLjYzLDAs''@;'; put 'put ''MCwxLDUuODYsMjQuOWExNC40LDE0LjQsMCwwLDEtMi40NywyLjkzbC0uMzQuM3YyLjgySDMyLjg1WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xNS4zMiwzMmEyLjY1LDIuNjUsMCwwLDAsNS4yNSwwWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTgsMzQuMjhBMi42NywyLjY3LDAsMCwwLDIwLjU4LDMySDE1LjMyQTIuNjcsMi42NywwLDAsMCwxOCwzNC4yOFoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgZD0iTTMyLjg1LDI4LjEzbC0uMzQtLjNBMTQuMzcsMTQuMzcsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0xLjM1LTQuODFWMTUuMTVhMTAuOTIsMTAuOTIsMCwwLDAt''@;'; put 'put ''LjE2LTEuNzlBNy41LDcuNSwwLDAsMSwyMi41LDZjMC0uMjEsMC0uNDIsMC0uNjNhMTAuNTcsMTAuNTcsMCwwLDAtMy4zMi0xVjMuMTFhMS4zMywxLjMzLDAsMSwwLTIuNjcsMFY0LjQyQTEwLjgxLDEwLjgxLDAsMCwwLDcuMjEsMTUuMTV2NC45NEExMi42MywxMi42MywwLDAsMSw1Ljg2LDI0''@;'; put 'put ''LjlhMTQuNCwxNC40LDAsMCwxLTIuNDcsMi45M2wtLjM0LjN2Mi44MkgzMi44NVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+''@;'; put 'put ''JyksbC5DbHJTaGFwZUltYWdlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCwzMFY2SDMyVjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkyLDE0YTMsMywwLDEsMC0zLTNBMywzLDAsMCwwLDguOTIsMTRabTAtNC42QTEuNiwxLjYsMCwxLDEsNy4zMywxMSwxLjYsMS42LDAsMCwxLDguOTIsOS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNzgsMTUuMzdsLTUuNCw1LjQtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIyLjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFBMSwxLDAs''@;'; put 'put ''MCwwLDIyLjc4LDE1LjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MywxMWEzLDMsMCwxLDAtMywzQTMsMywwLDAsMCwxMS45MywxMVptLTQuNiwwYTEuNiwxLjYsMCwxLDEsMS42LDEuNkExLjYsMS42''@;'; put 'put ''LDAsMCwxLDcuMzMsMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zOCwyMC43N2wtNC00YTEsMSwwLDAsMC0xLjQxLDBMNS45MiwyMi45djIuODNsNi43OS02Ljc5TDE2LDIy''@;'; put 'put ''LjE4bC0zLjc1LDMuNzVIMTVsOC40NS04LjQ1TDMwLDI0VjIxLjE4bC01LjgxLTUuODFhMSwxLDAsMCwwLTEuNDEsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjMw''@;'; put 'put ''SDRWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCww''@;'; put 'put ''LDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02''@;'; put 'put ''LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTguOTIsOGEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjkyLDhaTTYsMjdWMjIuOWw2LTYuMDhhMSwxLDAsMCwxLDEuNDEsMEwxNiwxOS4zNSw4LjMyLDI3Wm0yNCwwSDExLjE1bDYuMjMtNi4yMyw1''@;'; put 'put ''LjQtNS40YTEsMSwwLDAsMSwxLjQxLDBMMzAsMjEuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGwuQ2xyU2hhcGVDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE0LDMzSDEwLjYyQzUuNjcsMzMsMSwyOC4xOSwxLDIzLjFh''@;'; put 'put ''MTAsMTAsMCwwLDEsOC05Ljc1LDEwLjE5LDEwLjE5LDAsMCwxLDIwLjMzLDEuMDZBMTAuMDcsMTAuMDcsMCwwLDEsMjksMTYuNjZhOC4yOSw4LjI5LDAsMCwxLDYsOEMzNSwyOS4xLDMxLjMzLDMzLDI3LjE0LDMzWk0xOS4wOSw2LjIzYTguMjQsOC4yNCwwLDAsMC04LjE5LDhsMCwuODctLjg2''@;'; put 'put ''LjFBNy45NCw3Ljk0LDAsMCwwLDMsMjMuMWMwLDQsMy43Nyw3LjksNy42Miw3LjlIMjcuMTRDMzAuMjEsMzEsMzMsMjgsMzMsMjQuNjVhNi4zMSw2LjMxLDAsMCwwLTUuMzctNi4yNmwtMS4xOC0uMTguMzktMS4xM0E4LjE4LDguMTgsMCwwLDAsMTkuMDksNi4yM1oiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOSwxNi42NmExMC4wNywxMC4wNywwLDAsMCwuMjUtMi4yNGMwLS4zMywwLS42NSwwLTFhNy40NSw3LjQ1LDAsMCwxLTIuMS0uNTQsOCw4LDAsMCwxLS4zLDQu''@;'; put 'put ''MTZsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwzMUgxMC41N2MtMy44NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N2E4LjI0LDguMjQsMCwwLDEsOC4xOS04''@;'; put 'put ''QTguMTMsOC4xMywwLDAsMSwyMi41OCw3YTcuNTMsNy41MywwLDAsMS0uMDgtMSw3LjUxLDcuNTEsMCwwLDEsLjA5LTEuMTJBMTAuMTMsMTAuMTMsMCwwLDAsMTksNC4yMywxMC4yNiwxMC4yNiwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5LjksOS42''@;'; put 'put ''Miw5LjlIMjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4''@;'; put 'put ''PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE0LDEwLjE0LDAsMCwwLC4yLTEuM2gtMmE4LjI4LDguMjgsMCwwLDEtLjM3''@;'; put 'put ''LDEuNzJsLS4zOSwxLjEzLDEuMTguMThhNi4zMSw2LjMxLDAsMCwxLDUuMzcsNi4yNkMzMi45NSwyOCwzMC4xNiwzMSwyNy4wOSwzMUgxMC41N2MtMy44NCwwLTcuNjItMy45MS03LjYyLTcuOWE3Ljk0LDcuOTQsMCwwLDEsNy03Ljg5bC44Ni0uMSwwLS44N0E4LjE2LDguMTYsMCwwLDEsMjEs''@;'; put 'put ''Ni40N2wxLTEuOEExMC4xOSwxMC4xOSwwLDAsMCw4LjkxLDEzLjM2YTEwLDEwLDAsMCwwLTgsOS43NWMwLDUuMDksNC42Nyw5LjksOS42Miw5LjlIMjcuMDljNC4xOSwwLDcuODYtMy45LDcuODYtOC4zNUE4LjI5LDguMjksMCwwLDAsMjksMTYuNjZaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4x''@;'; put 'put ''NEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRBMTAuMTksMTAuMTksMCwwLDAsOC45MSwxMy4zNiwx''@;'; put 'put ''MCwxMCwwLDAsMCwxLDIzLjFDMSwyOC4xOSw1LjYyLDMzLDEwLjU3LDMzSDI3LjA5QzMxLjI4LDMzLDM1LDI5LjEsMzUsMjQuNjVBOC4yOSw4LjI5LDAsMCwwLDI5LDE2LjY2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiBkPSJNMjksMTYuNjZhMTAuMDcsMTAuMDcsMCwwLDAsLjI1LTIuMjRjMC0uMzMsMC0uNjUsMC0xYTcuNDQsNy40NCwwLDAsMS02LjYtOC41OEExMC4xMywxMC4xMywwLDAsMCwxOSw0LjIzLDEwLjI2LDEwLjI2LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAs''@;'; put 'put ''MSwyMy4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI5LDE2LjY2YTEwLjE1LDEwLjE1LDAsMCwwLC4yLTEuMjZoLTdB''@;'; put 'put ''My42OCwzLjY4LDAsMCwxLDE5LDkuODlsMy01LjIxQTEwLjE5LDEwLjE5LDAsMCwwLDguOTEsMTMuMzYsMTAsMTAsMCwwLDAsMSwyMy4xQzEsMjguMTksNS42MiwzMywxMC41NywzM0gyNy4wOUMzMS4yOCwzMywzNSwyOS4xLDM1LDI0LjY1QTguMjksOC4yOSwwLDAsMCwyOSwxNi42NloiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksbC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbD0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksbC5DbHJTaGFwZUVsbGlwc2lzVmVy''@;'; put 'put ''dGljYWw9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSI0LjkiIHI9IjIu''@;'; put 'put ''OSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVGaWx0ZXJHcmlkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUs''@;'; put 'put ''MjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40''@;'; put 'put ''NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAs''@;'; put 'put ''LjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksbC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAsMC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEs''@;'; put 'put ''MSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAs''@;'; put 'put ''MzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2''@;'; put 'put ''Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSwwLDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLGwuQ2xyU2hhcGVWbUJ1Zz0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB3aWR0aD0i''@;'; put 'put ''MzYiIGhlaWdodD0iMzYiIHJ4PSIzIiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjE1IiBzdHlsZT0iaXNvbGF0aW9uOmlzb2xhdGUiLz48cGF0aCBkPSJNMy43OSwxNC44M2ExLjA5LDEuMDksMCwwLDAtMS40Ny0uNTYsMS4wOSwxLjA5LDAsMCwwLS41NCwxLjQ5bDIuNDcsNS40Yy4zOS44''@;'; put 'put ''NS44LDEuMjksMS41NywxLjI5UzcsMjIsNy4zOSwyMS4xNmwyLjE3LTQuNzdhLjMzLjMzLDAsMCwxLC4zMS0uMi4zNS4zNSwwLDAsMSwuMzUuMzV2NC42MWExLjE1LDEuMTUsMCwwLDAsMS4xNCwxLjMsMS4xNywxLjE3LDAsMCwwLDEuMTctMS4zVjE3LjM4YTEuMTUsMS4xNSwwLDAsMSwxLjIy''@;'; put 'put ''LTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE3LDEuMTcsMCwxLDAsMi4zMiwwVjE3LjM4YTEuMTUsMS4xNSwwLDAsMSwxLjIyLTEuMiwxLjEzLDEuMTMsMCwwLDEsMS4xOCwxLjJ2My43N2ExLjE2LDEuMTYsMCwxLDAsMi4zMSwwVjE2Ljg2YTIuNjksMi42OSwwLDAsMC0y''@;'; put 'put ''Ljc4LTIuNjksMy41NywzLjU3LDAsMCwwLTIuNDcsMS4wNSwyLjc1LDIuNzUsMCwwLDAtMi4zOC0xLjA1QTMuOTMsMy45MywwLDAsMCwxMiwxNS4yMmEyLjgyLDIuODIsMCwwLDAtMi4wOC0xLjA1QTIuNTUsMi41NSwwLDAsMCw3LjQsMTUuODlMNS44MiwxOS42M2wtMi00LjgiIGZpbGw9IiNm''@;'; put 'put ''ZmZmZmYiLz48cGF0aCBkPSJNMzMsMTQuMThBMS4xNCwxLjE0LDAsMCwwLDMxLjksMTVsLTEuMTksMy43M0wyOS41LDE1LjA1YTEuMTgsMS4xOCwwLDAsMC0xLjE1LS44N2gtLjFhMS4yLDEuMiwwLDAsMC0xLjE1Ljg3bC0xLjE5LDMuNzEtMS4xOC0zLjcxYTEuMTUsMS4xNSwwLDAsMC0xLjEx''@;'; put 'put ''LS44NywxLjA4LDEuMDgsMCwwLDAtMS4xMiwxLjA3LDEuNjgsMS42OCwwLDAsMCwuMS41NGwyLDUuN2ExLjI3LDEuMjcsMCwwLDAsMS4yNywxLDEuMjQsMS4yNCwwLDAsMCwxLjItLjkzbDEuMi0zLjY0LDEuMiwzLjY0YTEuMjUsMS4yNSwwLDAsMCwxLjI2LjkzQTEuMjcsMS4yNywwLDAsMCwz''@;'; put 'put ''MiwyMS41TDM0LDE1LjczYTEuNzcsMS43NywwLDAsMCwuMDgtLjQ4QTEuMDcsMS4wNywwLDAsMCwzMywxNC4xOFoiIGZpbGw9IiNmZmZmZmYiLz4nKSxsLkNsclNoYXBlU2VhcmNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiBkPSJNMTYuMzMsNS4wNUExMC45NSwxMC45NSwwLDEsMSw1LjM5LDE2LDExLDExLDAsMCwxLDE2LjMzLDUuMDVtMC0yLjA1YTEzLDEzLDAsMSwwLDEzLDEzLDEzLDEzLDAsMCwwLTEzLTEzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiBkPSJNMzUsMzMuMjlsLTcuMzctNy40Mi0xLjQyLDEuNDEsNy4zNyw3LjQyQTEsMSwwLDEsMCwzNSwzMy4yOVoiLz4nKSxsLkNsclNoYXBlVmlld0NvbHVtbnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIGQ9Ik0zMSw1SDVBMiwyLDAsMCwwLDMsN1YyOWEyLDIsMCwwLDAsMiwySDMxYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzEsNVpNMTMsMjlINVY3aDhabTEwLDBIMTVWN2g4WiIvPicpLGwuQ2xyU2hhcGVBbmdsZURvdWJsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI5LDE5LjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDguODMsNy43MSwxOS4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDYsMjkuNzEsMTcuNzFBMSwxLDAsMCwxLDI5LDE5LjQxWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjksMzAuNDFhMSwxLDAsMCwxLS43MS0uMjlMMTgsMTkuODMsNy43MSwzMC4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDE3LDI5LjcxLDI4LjcxQTEsMSwwLDAsMSwyOSwzMC40MVoiLz4n''@;'; put 'put ''KSxsLkNsclNoYXBlQ2FsZW5kYXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCww''@;'; put 'put ''LDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhl''@;'; put 'put ''aWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNCIgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI4IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSIxNCIg''@;'; put 'put ''eT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTEiIHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xMiIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEzIiB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMTUiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTYiIHg9IjEzIiB5PSI2IiB3''@;'; put 'put ''aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEu''@;'; put 'put ''NzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiB4PSI4IiB5PSIxOSIgd2lk''@;'; put 'put ''dGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05''@;'; put 'put ''LS1iYWRnZWQiIHg9IjI2IiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQiIHg9IjgiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIgeD0iMjAiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTMtLWJhZGdlZCIgeD0iMjYi''@;'; put 'put ''IHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTQtLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCww''@;'; put 'put ''LDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE1LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNs''@;'; put 'put ''ZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI4IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0zLS1hbGVydGVkIiB4PSIxNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiIHg9IjIwIiB5PSIxOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVy''@;'; put 'put ''dGVkIiB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYWxlcnRlZCIgeD0iOCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxlcnRlZCIgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIiB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTEtLWFsZXJ0ZWQiIHg9IjI2''@;'; put 'put ''IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAs''@;'; put 'put ''MCwwLDEwLDEwWiIvPjxwb2x5Z29uIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEzLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBk''@;'; put 'put ''PSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjI1LDZoLTRWOWEyLjIsMi4yLDAsMSwxLTQuNCwwVjZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0''@;'; put 'put ''LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRWMTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0''@;'; put 'put ''aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRn''@;'; put 'put ''ZWQiIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcu''@;'; put 'put ''NDUsMCwwLDEsMzAsMTMuNVpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAt''@;'; put 'put ''NUgyNlYxNGgyWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMS4yOSw2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEu''@;'; put 'put ''NzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxNS4zOFpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0wLTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptNiw1SDI2''@;'; put 'put ''VjI0aDJabTAtNUgyNlYxOWgyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+JyksbC5DbHJTaGFwZUV2ZW50PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMTcsMjUuODYsMTAuODEsMjAuNWExLDEs''@;'; put 'put ''MCwwLDEsMS40MS0xLjQxTDE2LjE3LDIzbDguNjQtOC42NGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgs''@;'; put 'put ''MS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYz''@;'; put 'put ''YTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5''@;'; put 'put ''VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0yMi41LDZIMTNWOGg5Ljc4QTcuNDksNy40OSwwLDAsMSwyMi41LDZaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLC4yMy0uNDFIMjMuOEwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwx''@;'; put 'put ''LjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0zIiBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwwLDEtNC40LDBWNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUEx''@;'; put 'put ''Ljc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMjUuOTQsMTYuNThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzhMMjQsMTQuNjZhMS4zNiwxLjM2LDAsMSwxLDEuOTMsMS45M1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTMzLjY4LDE1LjRIMjYuM2ExLjM0LDEuMzQsMCwwLDEtLjM2LDEuMThsLTkuNjcsOS42N0wxMSwyMC45NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzgsNy03aC0xQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5''@;'; put 'put ''QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCww''@;'; put 'put ''LDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVabS00LjA2LDMuMDgtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45Mywx''@;'; put 'put ''LjkzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxsLkNsclNoYXBlRXllPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwx''@;'; put 'put ''OGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOSwxMS4x''@;'; put 'put ''N0E2Ljg2LDYuODYsMCwxLDAsMjUsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjA5LDExLjE3Wm0wLDExLjcyQTQuODYsNC44NiwwLDEsMSwyMywxOCw0Ljg3LDQuODcsMCwwLDEsMTguMDksMjIuODlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYu''@;'; put 'put ''NDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQyLDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4''@;'; put 'put ''PSIxOC4wOSIgY3k9IjE4LjAzIiByPSI2Ljg2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksbC5DbHJTaGFwZUV5ZUhpZGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LjE5LDIwLjRBNi43OCw2Ljc4LDAsMCwwLDI1LjYyLDE4YTYuODYsNi44Niww''@;'; put 'put ''LDAsMC02Ljg2LTYuODYsNi43OSw2Ljc5LDAsMCwwLTIuMzcuNDNMMTgsMTMuMjNhNC43OCw0Ljc4LDAsMCwxLC43NC0uMDZBNC44Nyw0Ljg3LDAsMCwxLDIzLjYyLDE4YTQuNzksNC43OSwwLDAsMS0uMDYuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LjI5LDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMGExNi44MiwxNi44MiwwLDAsMC01LjI0Ljg1TDE0Ljg0LDEwYTE0Ljc4LDE0Ljc4LDAsMCwxLDMuNjMtLjQ3YzUuNjMsMCwxMC43NSwzLjE0LDEzLjgsOC40M2ExNy43NSwxNy43''@;'; put 'put ''NSwwLDAsMS00LjM3LDUuMWwxLjQyLDEuNDJhMTkuOTMsMTkuOTMsMCwwLDAsNS02bC4yNi0uNDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcsNS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAt''@;'; put 'put ''Ni42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTkuNzUsOS43NSw2LjY1LDYuNjVhNC44MSw0LjgxLDAsMCwxLTIuNS43MkE0Ljg3LDQuODcsMCwwLDEsMTMuOSwx''@;'; put 'put ''OCw0LjgxLDQuODEsMCwwLDEsMTQuNjIsMTUuNTNabS0xLjQ1LTEuNDVhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcuMjksMCwwLDEsNi4xMi02LjNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjM3LDExLjE3QTYuNzksNi43OSwwLDAsMCwxNiwxMS42bDguOCw4LjhBNi43OCw2Ljc4LDAsMCwwLDI1LjIzLDE4LDYuODYsNi44NiwwLDAsMCwxOC4zNywxMS4xN1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1''@;'; put 'put ''LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQuODcs''@;'; put 'put ''NS43OGw0LjQ2LDQuNDZhMTkuNTIsMTkuNTIsMCwwLDAtNi42OSw3LjI5TDIuMzgsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwYTE2LjkzLDE2LjkzLDAsMCwwLDcuMzctMS42OWw1LDUsMS43NS0xLjUtMjYtMjZabTguMyw4LjNhNi44NSw2Ljg1LDAsMCwwLDkuNTUsOS41''@;'; put 'put ''NWwxLjYsMS42YTE0LjkxLDE0LjkxLDAsMCwxLTUuODYsMS4yYy01LjYzLDAtMTAuNzUtMy4xNC0xMy44LTguNDNhMTcuMjksMTcuMjksMCwwLDEsNi4xMi02LjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+JyksbC5DbHJTaGFwZVN0ZXBGb3J3YXJkMj0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNNy4wOCw2LjUyYTEuNjgsMS42OCwwLDAsMCwwLDIuNEwxNi41MSwxOCw3LjEyLDI3LjA4YTEuNywxLjcsMCwwLDAsMi4zNiwyLjQ0aDBMMjEuNCwxOCw5LjQ4LDYuNDdBMS42OSwxLjY5LDAsMCwwLDcuMDgsNi41MloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNi40OSw1YTEuNywxLjcsMCwwLDAtMS43LDEuN1YyOS4zYTEuNywxLjcsMCwwLDAsMy40LDBWNi43QTEuNywxLjcsMCwwLDAsMjYuNDksNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAv''@;'; put 'put ''PicpLGwuQ2xyU2hhcGVBcnJvdz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuNjYsMTUuNjEsMTgsNiw4LjM0LDE1LjYxQTEsMSwwLDEsMCw5Ljc1LDE3TDE3LDkuODFWMjguOTRhMSwxLDAsMSwwLDIsMFY5LjgxTDI2LjI1LDE3YTEsMSwwLDAsMCwxLjQxLTEuNDJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLGwuQ29yZVNoYXBlcz17InVua25vd24tc3RhdHVzIjpsLkNsclNoYXBlVW5rbm93blN0YXR1cyxob21lOmwuQ2xyU2hhcGVIb21lLGNvZzpsLkNsclNoYXBlQ29nLGNoZWNrOmwuQ2xyU2hhcGVDaGVjayx0aW1lczpsLkNs''@;'; put 'put ''clNoYXBlVGltZXMsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIjpsLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZSwiZXhjbGFtYXRpb24tY2lyY2xlIjpsLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGUsImNoZWNrLWNpcmNsZSI6bC5DbHJTaGFwZUNoZWNrQ2lyY2xlLCJpbmZvLWNpcmNsZSI6''@;'; put 'put ''bC5DbHJTaGFwZUluZm9DaXJjbGUsImluZm8tc3RhbmRhcmQiOmwuQ2xyU2hhcGVJbmZvU3RhbmRhcmQsInN1Y2Nlc3Mtc3RhbmRhcmQiOmwuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQsImVycm9yLXN0YW5kYXJkIjpsLkNsclNoYXBlRXJyb3JTdGFuZGFyZCwid2FybmluZy1zdGFuZGFyZCI6''@;'; put 'put ''bC5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZCwiaGVscC1pbmZvIjpsLkNsclNoYXBlSGVscEluZm8sYmFyczpsLkNsclNoYXBlQmFycyx1c2VyOmwuQ2xyU2hhcGVVc2VyLGFuZ2xlOmwuQ2xyU2hhcGVBbmdsZSxmb2xkZXI6bC5DbHJTaGFwZUZvbGRlciwiZm9sZGVyLW9wZW4iOmwuQ2xyU2hh''@;'; put 'put ''cGVGb2xkZXJPcGVuLGJlbGw6bC5DbHJTaGFwZUJlbGwsaW1hZ2U6bC5DbHJTaGFwZUltYWdlLGNsb3VkOmwuQ2xyU2hhcGVDbG91ZCwiZWxsaXBzaXMtaG9yaXpvbnRhbCI6bC5DbHJTaGFwZUVsbGlwc2lzSG9yaXpvbnRhbCwiZWxsaXBzaXMtdmVydGljYWwiOmwuQ2xyU2hhcGVFbGxpcHNp''@;'; put 'put ''c1ZlcnRpY2FsLCJmaWx0ZXItZ3JpZCI6bC5DbHJTaGFwZUZpbHRlckdyaWQsImZpbHRlci1ncmlkLWNpcmNsZSI6bC5DbHJTaGFwZUZpbHRlckdyaWRDaXJjbGUsInZtLWJ1ZyI6bC5DbHJTaGFwZVZtQnVnLHNlYXJjaDpsLkNsclNoYXBlU2VhcmNoLCJ2aWV3LWNvbHVtbnMiOmwuQ2xyU2hh''@;'; put 'put ''cGVWaWV3Q29sdW1ucywiYW5nbGUtZG91YmxlIjpsLkNsclNoYXBlQW5nbGVEb3VibGUsY2FsZW5kYXI6bC5DbHJTaGFwZUNhbGVuZGFyLGV2ZW50OmwuQ2xyU2hhcGVFdmVudCxleWU6bC5DbHJTaGFwZUV5ZSwiZXllLWhpZGUiOmwuQ2xyU2hhcGVFeWVIaWRlLCJzdGVwLWZvcndhcmQtMiI6''@;'; put 'put ''bC5DbHJTaGFwZVN0ZXBGb3J3YXJkMixhcnJvdzpsLkNsclNoYXBlQXJyb3d9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkNvcmVTaGFwZXMsImhvdXNlIiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuQ29yZVNoYXBlcy5ob21lKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNoYXBl''@;'; put 'put ''cywic2V0dGluZ3MiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db3JlU2hhcGVzLmNvZykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkNvcmVTaGFwZXMsInN1Y2Nlc3MiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db3JlU2hhcGVzLmNoZWNrKSksT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KGwuQ29yZVNoYXBlcywiY2xvc2UiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db3JlU2hhcGVzLnRpbWVzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNoYXBlcywid2FybmluZyIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkNvcmVTaGFwZXNbImV4Y2xhbWF0aW9uLXRyaWFu''@;'; put 'put ''Z2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Db3JlU2hhcGVzLCJlcnJvciIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkNvcmVTaGFwZXNbImV4Y2xhbWF0aW9uLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNoYXBlcywiaW5mbyIsKDAscC5kZXNjcmlw''@;'; put 'put ''dG9yQ29uZmlnKShsLkNvcmVTaGFwZXNbImluZm8tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Db3JlU2hhcGVzLCJtZW51IiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuQ29yZVNoYXBlcy5iYXJzKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNoYXBlcywiYXZh''@;'; put 'put ''dGFyIiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuQ29yZVNoYXBlcy51c2VyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNoYXBlcywiY2FyZXQiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db3JlU2hhcGVzLmFuZ2xlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuQ29yZVNo''@;'; put 'put ''YXBlcywiZGlyZWN0b3J5IiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuQ29yZVNoYXBlcy5mb2xkZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Db3JlU2hhcGVzLCJub3RpZmljYXRpb24iLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Db3JlU2hhcGVzLmJlbGwpKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkobC5Db3JlU2hhcGVzLCJjb2xsYXBzZSIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkNvcmVTaGFwZXNbImFuZ2xlLWRvdWJsZSJdKSl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''LwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNLGwsdil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLkNsclNoYXBlTG9nb3V0PWwuQ2xyU2hhcGVMb2dpbj1sLkNsclNoYXBlSGVscD1sLkNsclNo''@;'; put 'put ''YXBlQ29weT1sLkNsclNoYXBlQ2hpbGRBcnJvdz1sLkNsclNoYXBlQ2lyY2xlQXJyb3c9bC5DbHJTaGFwZUFsYXJtQ2xvY2s9bC5DbHJTaGFwZUNsb2NrPWwuQ2xyU2hhcGVIaXN0b3J5PWwuQ2xyU2hhcGVUYWdzPWwuQ2xyU2hhcGVUYWc9bC5DbHJTaGFwZVRyYXNoPWwuQ2xyU2hhcGVUaW1l''@;'; put 'put ''c0NpcmNsZT1sLkNsclNoYXBlQmFuPWwuQ2xyU2hhcGVQbHVzQ2lyY2xlPWwuQ2xyU2hhcGVNaW51c0NpcmNsZT1sLkNsclNoYXBlTWludXM9bC5DbHJTaGFwZVBsdXM9bC5DbHJTaGFwZUZpbGU9bC5DbHJTaGFwZVBpbj1sLkNsclNoYXBlRmlsdGVyPWwuQ2xyU2hhcGVQb3BPdXQ9bC5DbHJT''@;'; put 'put ''aGFwZVVzZXJzPWwuQ2xyU2hhcGVVbmxvY2s9bC5DbHJTaGFwZUxvY2s9bC5DbHJTaGFwZVVwbG9hZD1sLkNsclNoYXBlRG93bmxvYWQ9bC5DbHJTaGFwZUxpZ2h0YnVsYj1sLkNsclNoYXBlVmlld0NhcmRzPWwuQ2xyU2hhcGVWaWV3TGlzdD1sLkNsclNoYXBlU3luYz1sLkNsclNoYXBlUmVm''@;'; put 'put ''cmVzaD1sLkNsclNoYXBlTm90ZT1sLkNsclNoYXBlUGVuY2lsPWwuQ2xyU2hhcGVUaGVybW9tZXRlcj1sLkNsclNoYXBlQnVnPWwuQ2xyU2hhcGVTY2lzc29ycz1sLkNsclNoYXBlQXN0ZXJpc2s9bC5DbHJTaGFwZUJvb2s9bC5DbHJTaGFwZU9iamVjdHM9bC5DbHJTaGFwZVJlc2l6ZT1sLkNs''@;'; put 'put ''clNoYXBlQ3Vyc29ySGFuZENsaWNrPWwuQ2xyU2hhcGVDdXJzb3JIYW5kPWwuQ2xyU2hhcGVDdXJzb3JBcnJvdz1sLkNsclNoYXBlR3JpZFZpZXc9bC5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uPWwuQ2xyU2hhcGVOZXc9bC5DbHJTaGFwZUFsYXJtT2ZmPWwuQ2xyU2hhcGVQaW5ib2FyZD1s''@;'; put 'put ''LkNsclNoYXBlQWRkVGV4dD12b2lkIDAsbC5DbHJTaGFwZUNsb25lPWwuQ2xyU2hhcGVDdXJzb3JNb3ZlPWwuQ2xyU2hhcGVXYW5kPWwuQ2xyU2hhcGVTdW49bC5DbHJTaGFwZU1vb249bC5DbHJTaGFwZUZpbHRlcjI9bC5DbHJTaGFwZURyYWdIYW5kbGU9bC5DbHJTaGFwZUNvcHlUb0NsaXBi''@;'; put 'put ''b2FyZD1sLkNsclNoYXBlQ29sb3JQaWNrZXI9bC5DbHJTaGFwZUJyaWVmY2FzZT1sLkNsclNoYXBlRXhwYW5kQ2FyZD1sLkNsclNoYXBlQ29sbGFwc2VDYXJkPWwuQ2xyU2hhcGVTb3J0Qnk9bC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyPWwuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5MT1sLkNsclNo''@;'; put 'put ''YXBlU2hyaW5rPWwuQ2xyU2hhcGVQYXBlcmNsaXA9bC5DbHJTaGFwZUZpbGVHcm91cD1sLkNsclNoYXBlUmVwZWF0PWwuQ2xyU2hhcGVJZEJhZGdlPWwuQ2xyU2hhcGVCYWxhbmNlPWwuQ2xyU2hhcGVPcmdhbml6YXRpb249bC5DbHJTaGFwZU5vQWNjZXNzPWwuQ2xyU2hhcGVIb3VyZ2xhc3M9''@;'; put 'put ''bC5DbHJTaGFwZUZsYW1lPWwuQ2xyU2hhcGVUYXJnZXQ9bC5DbHJTaGFwZUJ1bGxzZXllPWwuQ2xyU2hhcGVXcmVuY2g9bC5DbHJTaGFwZUJvbHQ9bC5DbHJTaGFwZUxpYnJhcnk9bC5DbHJTaGFwZUtleT1sLkNsclNoYXBlWm9vbU91dD1sLkNsclNoYXBlWm9vbUluPWwuQ2xyU2hhcGVXaW5k''@;'; put 'put ''b3dSZXN0b3JlPWwuQ2xyU2hhcGVXaW5kb3dNaW49bC5DbHJTaGFwZVdpbmRvd01heD1sLkNsclNoYXBlV2luZG93Q2xvc2U9bC5DbHJTaGFwZVRvb2xzPWwuQ2xyU2hhcGVTd2l0Y2g9bC5DbHJTaGFwZVR3b1dheUFycm93cz1sLkNsclNoYXBlRmlsZVNldHRpbmdzPWwuQ2xyU2hhcGVTY3Jv''@;'; put 'put ''bGw9bC5DbHJTaGFwZVVuZG89bC5DbHJTaGFwZVJlZG89bC5DbHJTaGFwZUxpc3Q9bC5DbHJTaGFwZUZpcmV3YWxsPWwuQ2xyU2hhcGVDbGlwYm9hcmQ9bC5DbHJTaGFwZVNsaWRlcj1sLkNsclNoYXBlV29ybGQ9bC5DbHJTaGFwZVByaW50ZXI9dm9pZCAwLGwuRXNzZW50aWFsU2hhcGVzPWwu''@;'; put 'put ''Q2xyU2hhcGVDb2xvclBhbGV0dGU9bC5DbHJTaGFwZUZpcnN0QWlkPWwuQ2xyU2hhcGVCZXRhPWwuQ2xyU2hhcGVEb3RDaXJjbGU9bC5DbHJTaGFwZUNpcmNsZT1sLkNsclNoYXBlQ3Jvc3NoYWlycz1sLkNsclNoYXBlVm9sdW1lPWwuQ2xyU2hhcGVUYWJsZT1sLkNsclNoYXBlU25vd2ZsYWtl''@;'; put 'put ''PWwuQ2xyU2hhcGVGdWVsPWwuQ2xyU2hhcGVGb3JtPWwuQ2xyU2hhcGVGaXNoPWwuQ2xyU2hhcGVUcmVlPWwuQ2xyU2hhcGVSZWN5Y2xlPWwuQ2xyU2hhcGVGaWx0ZXJPZmY9bC5DbHJTaGFwZUZpbGVaaXA9bC5DbHJTaGFwZUN1cnNvckhhbmRPcGVuPWwuQ2xyU2hhcGVDdXJzb3JIYW5kR3Jh''@;'; put 'put ''Yj1sLkNsclNoYXBlVHJlZVZpZXc9bC5DbHJTaGFwZVBvcnRyYWl0PWwuQ2xyU2hhcGVQYXN0ZT1sLkNsclNoYXBlTGFuZHNjYXBlPWwuQ2xyU2hhcGVFcmFzZXI9bC5DbHJTaGFwZURyYWdIYW5kbGVDb3JuZXI9bC5DbHJTaGFwZURldGFpbHM9dm9pZCAwO3ZhciBwPXYoCi8qISAuLi91dGls''@;'; put 'put ''cy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxhPXYoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTt2''@;'; put 'put ''PXYoCi8qISAuL2NvcmUtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxsLkNsclNoYXBlQWRkVGV4dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDIx''@;'; put 'put ''SDEzYTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTIsMTZhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMC0ySDEzQTEsMSwwLDAsMCwxMiwxNloiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjcsMjdIMTNhMSwxLDAsMCwwLDAsMkgyN2ExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTQiIGQ9Ik0xNS44OSw5YTEsMSwwLDAsMC0xLTFIMTBWMy4yMWExLDEsMCwwLDAtMiwwVjhIMi44OWExLDEsMCwwLDAsMCwySDh2NS4yMWExLDEsMCwwLDAsMiwwVjEwaDQuODlBMSwxLDAsMCwwLDE1Ljg5LDlaIi8+JyksbC5DbHJTaGFwZVBpbmJvYXJkPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMy41Nyw5LjMzbC03LTdhMSwxLDAsMCwwLTEuNDEsMS40MWw3LDdhMSwxLDAsMSwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJN''@;'; put 'put ''MjIuMSwxMS4xOWwuNy41TDI2LjQ2LDgsMjUsNi41NiwyMi41MSw5LjEzYy0yLS44Ny00LjM1LjE0LTUuOTIsMS42OGwtLjcyLjcxLDMuNTQsMy41NC0zLjY3LDMuNjcsMS40MSwxLjQxLDMuNjctMy42N0wyNC4zNywyMGwuNzEtLjcyYzEuNTQtMS41NywyLjU1LTMuOTIsMS42OC01LjkzbDIu''@;'; put 'put ''NTQtMi41N0wyNy44OCw5LjM4LDI0LjIxLDEzLjFsLjQ5LjY5Yy43NiwxLC4yNSwyLjM3LS40MSwzLjMzTDE4Ljc3LDExLjZDMTkuODQsMTAuODYsMjEuMTUsMTAuNSwyMi4xLDExLjE5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgZD0iTTMwLDMwLDYsMzAsNiw2SDIyVjRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEgzMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMy41Nyw5LjMzbC03LTdh''@;'; put 'put ''MSwxLDAsMCwwLTEuNDEsMS40MWwxLjM4LDEuMzgtNCw0Yy0yLS44Ny00LjM1LjE0LTUuOTIsMS42OGwtLjcyLjcxLDMuNTQsMy41NC0zLjY3LDMuNjcsMS40MSwxLjQxLDMuNjctMy42N0wyNC4zNywyMGwuNzEtLjcyYzEuNTQtMS41NywyLjU1LTMuOTEsMS42OC01LjkybDQtNCwxLjM4LDEu''@;'; put 'put ''MzhhMSwxLDAsMSwwLDEuNDEtMS40MVoiLz4nKSxsLkNsclNoYXBlQWxhcm1PZmY9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMS40NywzLjg0YTUuNzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4w''@;'; put 'put ''OCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuMzMsMjEuNTRhLjkuOSwwLDAsMC0uNDEtMS4ybC0zLjItMS41NkwyNC44OSwyMkEu''@;'; put 'put ''ODkuODksMCwwLDAsMjUuMzMsMjEuNTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDguNmEuOS45LDAsMCwwLS45Ljl2NC42bDEuOCwxLjgxVjkuNUEuOS45LDAsMCwwLDE4LDguNloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMTEuNDIsMy40M2E1LjgsNS44LDAsMCwwLTUuODEtLjgxTDguMyw1LjMyQTE2LDE2LDAsMCwxLDExLjQyLDMuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTE4LDRhMTMuOTEsMTMuOTEsMCwwLDAtOC4zLDIuNzVsMS40MiwxLjQzQTEyLDEyLDAsMCwxLDI3LjgyLDI0LjlsMS40MiwxLjQzQTE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTEuNTYsNC4yMSwyLjczLDUuMzhhNS43LDUuNywwLDAsMCwuNjcsNi4xQTE1Ljc4LDE1Ljc4LDAsMCwxLDUuNDYsOC4xMkw2Ljg4LDkuNTVBMTMuOTQsMTMuOTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIu''@;'; put 'put ''NjYtMi42NmExMy44OSwxMy44OSwwLDAsMCwxNi44LDBsNC4xNCw0LjE1TDMyLDMxLjksMywyLjhaTTI1LDI3LjcyQTExLjg5LDExLjg5LDAsMCwxLDE4LDMwLDEyLDEyLDAsMCwxLDYsMThhMTEuODksMTEuODksMCwwLDEsMi4yOS03WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTExLjQyLDMuNDNhNS44LDUuOCwwLDAsMC01Ljc3LS44Mkw4LjMzLDUuM0ExNiwxNiwwLDAsMSwxMS40MiwzLjQzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTI0LjkyLDIx''@;'; put 'put ''Ljk0bDQuMzQsNC4zNkExNCwxNCwwLDAsMCw5Ljc1LDYuNzNMMTcsMTRWOS42OWExLDEsMCwwLDEsMiwwVjE2bDIuMzMsMi4zNEwyNSwyMC4xYTEsMSwwLDAsMSwuNDcsMS4zM0ExLDEsMCwwLDEsMjQuOTIsMjEuOTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC00IiBkPSJNMS42MSw0LjIxLDIuNzMsNS4zNGE1LjczLDUuNzMsMCwwLDAsLjY3LDYuMTVBMTUuODgsMTUuODgsMCwwLDEsNS40OCw4LjFMNi45MSw5LjUyQTEzLjk0LDEzLjk0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwy''@;'; put 'put ''LjY2LTIuNjZhMTMuODksMTMuODksMCwwLDAsMTYuODMsMGw0LjE2LDQuMTdMMzIsMzEuOSwzLDIuOFoiLz4nKSxsLkNsclNoYXBlTmV3PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuNTksMjNsLTQuMDgt''@;'; put 'put ''NSw0LTQuOWExLjgyLDEuODIsMCwwLDAsLjIzLTEuOTRBMS45MywxLjkzLDAsMCwwLDMyLjk0LDEwaC0zMUExLjkxLDEuOTEsMCwwLDAsMCwxMS44OFYyNC4xM0ExLjkxLDEuOTEsMCwwLDAsMS45NCwyNkgzMy4wNWExLjkzLDEuOTMsMCwwLDAsMS43Ny0xLjA5QTEuODIsMS44MiwwLDAsMCwz''@;'; put 'put ''NC41OSwyM1pNMiwyNFYxMkgzMi43OGwtNC44NCw1LjkzTDMyLjg1LDI0WiIvPlxuICAgICAgICAgICAgPHBvbHlnb24gIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBwb2ludHM9IjkuMzkgMTkuMzUgNi4xMyAxNSA1IDE1IDUgMjEuMTggNi4xMyAyMS4xOCA2''@;'; put 'put ''LjEzIDE2Ljg0IDkuMzkgMjEuMTggMTAuNTEgMjEuMTggMTAuNTEgMTUgOS4zOSAxNSA5LjM5IDE5LjM1Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHBvaW50cz0iMTIuMTggMjEuMTggMTYuODQgMjEuMTggMTYu''@;'; put 'put ''ODQgMjAuMTYgMTMuMzEgMjAuMTYgMTMuMzEgMTguNTUgMTYuNSAxOC41NSAxNi41IDE3LjUyIDEzLjMxIDE3LjUyIDEzLjMxIDE2LjAzIDE2Ljg0IDE2LjAzIDE2Ljg0IDE1IDEyLjE4IDE1IDEyLjE4IDIxLjE4Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHBvaW50cz0iMjQuNTIgMTkuNDMgMjMuMDYgMTUgMjEuODQgMTUgMjAuMzcgMTkuNDMgMTkuMDUgMTUgMTcuODIgMTUgMTkuNzggMjEuMTggMjAuODkgMjEuMTggMjIuNDUgMTYuNTkgMjQgMjEuMTggMjUuMTMgMjEuMTggMjcuMDggMTUgMjUuODUg''@;'; put 'put ''MTUgMjQuNTIgMTkuNDMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC4xMSwyNC40OWwtMy45Mi02LjYyLDMuODgtNi4zNUExLDEsMCwwLDAsMzMuMjIsMTBIMmEyLDIsMCwwLDAtMiwyVjI0YTIsMiwwLDAsMCwyLDJI''@;'; put 'put ''MzMuMjVBMSwxLDAsMCwwLDM0LjExLDI0LjQ5Wm0tMjMuNi0zLjMxSDkuMzlMNi4xMywxNi44NHY0LjM1SDVWMTVINi4xM2wzLjI3LDQuMzVWMTVoMS4xMlpNMTYuODQsMTZIMTMuMzF2MS40OWgzLjJ2MWgtMy4ydjEuNjFoMy41M3YxSDEyLjE4VjE1aDQuNjVabTguMjksNS4xNkgyNGwtMS41''@;'; put 'put ''NS00LjU5TDIwLjksMjEuMThIMTkuNzhsLTItNi4xOEgxOWwxLjMyLDQuNDNMMjEuODQsMTVoMS4yMmwxLjQ2LDQuNDNMMjUuODUsMTVoMS4yM1oiLz4nKSxsLkNsclNoYXBlQnViYmxlRXhjbGFtYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIu''@;'; put 'put ''NVpNMjguMjksMjQuNjFhMSwxLDAsMCwwLS4zMi43M2wwLDUuMzQtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExQTE2LDE2LDAsMCwxLDE4LDI4LjVjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4wOCwxMS4wOCwwLDAsMSwyOC4yOSwyNC42''@;'; put 'put ''MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjAuNjNhMSwxLDAsMCwwLDEtMVY4LjQ4YTEsMSwwLDEsMC0yLDBWMTkuNjFBMSwxLDAsMCwwLDE4LDIwLjYzWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE4IiBjeT0iMjQuMDQiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcu''@;'; put 'put ''MTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMTYuOTMsOS4xM2ExLjQxLDEuNDEsMCwxLDEsMi44MSwwVjE4LjlhMS40MSwxLjQxLDAs''@;'; put 'put ''MSwxLTIuODEsMFptMS40MSwxNy4zNWExLjg3LDEuODcsMCwxLDEsMS44Ny0xLjg3QTEuODcsMS44NywwLDAsMSwxOC4zNCwyNi40N1oiLz4nKSxsLkNsclNoYXBlR3JpZFZpZXc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0xNCw0SDZBMiwyLDAsMCwwLDQsNnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDE0LDRaTTYsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLDRI''@;'; put 'put ''MjJhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRaTTIyLDE0VjZoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNCwyMEg2YTIsMiwwLDAs''@;'; put 'put ''MC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIsMCwwLDAsMTQsMjBaTTYsMzBWMjJoOHY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMCwyMEgyMmEyLDIsMCwwLDAtMiwydjhh''@;'; put 'put ''MiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWMjJBMiwyLDAsMCwwLDMwLDIwWk0yMiwzMFYyMmg4djhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSI0IiB5PSI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIy''@;'; put 'put ''IiByeT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjAiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0zIiB4PSI0IiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIHg9IjIwIiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0i''@;'; put 'put ''MiIgcnk9IjIiLz4nKSxsLkNsclNoYXBlQ3Vyc29yQXJyb3c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNC41OCwzMi4zMWExLDEsMCwwLDEtLjk0LS42NUw0LDUuNjVBMSwxLDAsMCwxLDUuMjUsNC4zN2wy''@;'; put 'put ''Niw5LjY4YTEsMSwwLDAsMS0uMDUsMS44OWwtOC4zNiwyLjU3LDguMyw4LjNhMSwxLDAsMCwxLDAsMS40MWwtMy4yNiwzLjI2YTEsMSwwLDAsMS0uNzEuMjloMGExLDEsMCwwLDEtLjcxLS4yOWwtOC4zMy04LjMzLTIuNiw4LjQ1YTEsMSwwLDAsMS0uOTMuNzFabTMuMDktMTJhMSwxLDAsMCwx''@;'; put 'put ''LC43MS4yOWw4Ljc5LDguNzlMMjksMjcuNTFsLTguNzYtOC43NmExLDEsMCwwLDEsLjQxLTEuNjZsNy4xMy0yLjJMNi42LDdsNy44OSwyMS4yTDE2LjcxLDIxYTEsMSwwLDAsMSwuNzEtLjY4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMSIgZD0iTTI5LDEyLjM2LDMuODgsM0ExLDEsMCwwLDAsMi41OSw0LjI4TDEyLDI5LjQ0YTEsMSwwLDAsMCwxLjg5LS4wNWwyLjY5LTguNzUsOS4xMiw4LjlhMSwxLDAsMCwwLDEuNDEsMGwyLjM1LTIuMzVhMSwxLDAsMCwwLDAtMS40MWwtOS4wOS04Ljg2TDI5LDE0LjI1QTEsMSwwLDAs''@;'; put 'put ''MCwyOSwxMi4zNloiLz4nKSxsLkNsclNoYXBlQ3Vyc29ySGFuZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjc0LDE1LjE5YTEzLjY2LDEzLjY2LDAsMCwwLTYuODctMy44M0EyNiwyNiwwLDAsMCwxOCwx''@;'; put 'put ''MC41OFY1LjI4QTMuNCwzLjQsMCwwLDAsMTQuNSwyLDMuNCwzLjQsMCwwLDAsMTEsNS4yOHYxMEw5LjQsMTMuN2EzLjc3LDMuNzcsMCwwLDAtNS4yOCwwQTMuNjcsMy42NywwLDAsMCwzLDE2LjMzYTMuNiwzLjYsMCwwLDAsMSwyLjU2bDQuNjYsNS41MmExMS41MywxMS41MywwLDAsMCwxLjQz''@;'; put 'put ''LDQsMTAuMTIsMTAuMTIsMCwwLDAsMiwyLjU0djEuOTJhMS4wNywxLjA3LDAsMCwwLDEsMS4wOEgyN2ExLjA3LDEuMDcsMCwwLDAsMS0xLjA4di0yLjdhMTIuODEsMTIuODEsMCwwLDAsMy04LjM2di02QTEsMSwwLDAsMCwzMC43NCwxNS4xOVpNMjksMjEuODZhMTAuNzIsMTAuNzIsMCwwLDEt''@;'; put 'put ''Mi42LDcuMjYsMS4xMSwxLjExLDAsMCwwLS40LjcyVjMySDE0LjE0VjMwLjUyYTEsMSwwLDAsMC0uNDQtLjgzLDcuMjYsNy4yNiwwLDAsMS0xLjgyLTIuMjMsOS4xNCw5LjE0LDAsMCwxLTEuMi0zLjUyLDEsMSwwLDAsMC0uMjMtLjU5TDUuNTMsMTcuNTNhMS43LDEuNywwLDAsMSwwLTIuNDIs''@;'; put 'put ''MS43NiwxLjc2LDAsMCwxLDIuNDcsMGwzLDN2My4xNGwyLTFWNS4yOEExLjQyLDEuNDIsMCwwLDEsMTQuNSw0LDEuNDIsMS40MiwwLDAsMSwxNiw1LjI4djExLjhsMiwuNDNWMTIuNTlhMjQuMjcsMjQuMjcsMCwwLDEsMi41MS4xOFYxOGwxLjYuMzVWMTNjLjQxLjA4LjgzLjE3LDEuMjYuMjhh''@;'; put 'put ''MTQuODgsMTQuODgsMCwwLDEsMS41My40OXY1LjE1bDEuNi4zNVYxNC41QTExLjA2LDExLjA2LDAsMCwxLDI5LDE2LjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI4LjY5LDE0LjMzdjQuODNsLTItLjQzVjEzLjI0''@;'; put 'put ''YTE2LjE5LDE2LjE5LDAsMCwwLTIuMzMtLjg0djUuODJsLTItLjQzVjEyYy0xLjEtLjE4LTIuMTgtLjMtMy4wOC0uMzZ2NS41MWwtMi0uNDNWMTEuNDhoMFY0LjM0YTIuNTMsMi41MywwLDAsMC0yLjYtMi40MywyLjUzLDIuNTMsMCwwLDAtMi42LDIuNDNWMTcuMjdoMHYyLjU5bC0yLDFWMTUu''@;'; put 'put ''Nkw3Ljc1LDEzLjIxYTIuODMsMi44MywwLDAsMC00LDAsMi45MywyLjkzLDAsMCwwLDAsNC4wOWw2LDcuMWExMC44MiwxMC44MiwwLDAsMCwxLjM5LDQuMjIsOC40Miw4LjQyLDAsMCwwLDIuMjEsMi43M3YyLjU2SDI3Ljc5VjMwLjYyYTEyLjU0LDEyLjU0LDAsMCwwLDMtOC41di02QTEwLDEw''@;'; put 'put ''LDAsMCwwLDI4LjY5LDE0LjMzWiIvPicpLGwuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC40LDE3LjZjLTEuOC0xLjktNC4yLTMuMi02LjctMy43Yy0xLjEtMC4z''@;'; put 'put ''LTIuMi0wLjUtMy4zLTAuNmMyLjgtMy4zLDIuMy04LjMtMS0xMS4xcy04LjMtMi4zLTExLjEsMXMtMi4zLDguMywxLDExLjFcbiAgICAgICAgICAgICAgICAgICAgYzAuNiwwLjUsMS4yLDAuOSwxLjgsMS4xdjIuMmwtMS42LTEuNWMtMS40LTEuNC0zLjctMS40LTUuMiwwYy0xLjQsMS40LTEu''@;'; put 'put ''NSwzLjYtMC4xLDVsNC42LDUuNGMwLjIsMS40LDAuNywyLjcsMS40LDMuOVxuICAgICAgICAgICAgICAgICAgICBjMC41LDAuOSwxLjIsMS44LDEuOSwyLjV2MS45YzAsMC42LDAuNCwxLDEsMWgxMy42YzAuNSwwLDEtMC41LDEtMXYtMi42YzEuOS0yLjMsMi45LTUuMiwyLjktOC4xdi01Ljhc''@;'; put 'put ''biAgICAgICAgICAgICAgICAgICAgQzMwLjcsMTcuOSwzMC42LDE3LjcsMzAuNCwxNy42eiBNOC40LDguMmMwLTMuMywyLjctNS45LDYtNS44YzMuMywwLDUuOSwyLjcsNS44LDZjMCwxLjgtMC44LDMuNC0yLjIsNC41VjcuOVxuICAgICAgICAgICAgICAgICAgICBjLTAuMS0xLjgtMS42LTMu''@;'; put 'put ''Mi0zLjQtMy4yYy0xLjgtMC4xLTMuNCwxLjQtMy40LDMuMnY1LjJDOS41LDEyLjEsOC41LDEwLjIsOC40LDguMkw4LjQsOC4yeiBNMjguNywyNGMwLjEsMi42LTAuOCw1LjEtMi41LDcuMVxuICAgICAgICAgICAgICAgICAgICBjLTAuMiwwLjItMC40LDAuNC0wLjQsMC43djIuMUgxNC4ydi0x''@;'; put 'put ''LjRjMC0wLjMtMC4yLTAuNi0wLjQtMC44Yy0wLjctMC42LTEuMy0xLjMtMS44LTIuMmMtMC42LTEtMS0yLjItMS4yLTMuNFxuICAgICAgICAgICAgICAgICAgICBjMC0wLjItMC4xLTAuNC0wLjItMC42bC00LjgtNS43Yy0wLjMtMC4zLTAuNS0wLjctMC41LTEuMmMwLTAuNCwwLjItMC45LDAu''@;'; put 'put ''NS0xLjJjMC43LTAuNiwxLjctMC42LDIuNCwwbDIuOSwyLjl2M2wxLjktMVY3LjlcbiAgICAgICAgICAgICAgICAgICAgYzAuMS0wLjcsMC43LTEuMywxLjUtMS4yYzAuNywwLDEuNCwwLjUsMS40LDEuMnYxMS41bDIsMC40di00LjZjMC4xLTAuMSwwLjItMC4xLDAuMy0wLjJjMC43LDAsMS40''@;'; put 'put ''LDAuMSwyLjEsMC4ydjUuMWwxLjYsMC4zdi01LjJcbiAgICAgICAgICAgICAgICAgICAgbDEuMiwwLjNjMC41LDAuMSwxLDAuMywxLjUsMC41djVsMS42LDAuM3YtNC42YzAuOSwwLjQsMS43LDEsMi40LDEuN0wyOC43LDI0eiIvPicpLGwuQ2xyU2hhcGVSZXNpemU9KDAsYS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOSw0YTEsMSwwLDAsMCwwLDJoOS41OWwtOS4yNSw5LjI1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzAsNy40MVYxN2ExLDEsMCwwLDAsMiwwVjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTQsMTlhMSwxLDAsMCwxLDIsMHY5LjU5bDkuMjUtOS4yNWExLDEsMCwxLDEsMS40MSwxLjQxTDcuNDEsMzBIMTdhMSwxLDAsMCwxLDAsMkg0WiIvPicpLGwuQ2xyU2hhcGVPYmplY3RzPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTYuMDgsMTQuOWExMC40MSwxMC40MSwwLDAsMSwxLjg3LS43MWwtNC0xMC43N2EyLDIsMCwwLDAtMy43NSwwTDIsMjUuMjZBMiwyLDAsMCwwLDMuOTIsMjhoNi45NGExMCwxMCwwLDAsMS0uNTIt''@;'; put 'put ''MkgzLjkyTDEyLjA2LDQuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDlIMjJhMiwyLDAsMCwwLTIsMnYyLjg1Yy4yMywwLC40NiwwLC42OSwwQTEwLjUxLDEwLjUxLDAsMCwxLDIyLDEzLjlWMTFIMzJW''@;'; put 'put ''MjFIMzAuNjVhMTAuNDIsMTAuNDIsMCwwLDEsLjQ1LDJIMzJhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzIsOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAuNjksMTUuODFhOC41LDguNSwwLDEsMCw4''@;'; put 'put ''LjUsOC41QTguNTEsOC41MSwwLDAsMCwyMC42OSwxNS44MVptMCwxNWE2LjUsNi41LDAsMSwxLDYuNS02LjVBNi41MSw2LjUxLDAsMCwxLDIwLjY5LDMwLjgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTEwLjY1LDI0''@;'; put 'put ''LjQ0YTkuNTEsOS41MSwwLDAsMSw3LjA2LTkuMTdMMTMsM2ExLDEsMCwwLDAtMS44NywwTDIuMDcsMjYuNTZBMSwxLDAsMCwwLDMsMjcuOTJoOC4zMkE5LjQ0LDkuNDQsMCwwLDEsMTAuNjUsMjQuNDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIiBkPSJNMzIsMTBIMjBhMSwxLDAsMCwwLTEsMXY0YTkuNDMsOS40MywwLDAsMSwxMC42Myw5SDMyYTEsMSwwLDAsMCwxLTFWMTFBMSwxLDAsMCwwLDMyLDEwWiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBj''@;'; put 'put ''eD0iMjAuMTUiIGN5PSIyNC40NCIgcj0iNy41Ii8+JyksbC5DbHJTaGFwZUJvb2s9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjEwIiB5PSI1LjIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxLjU1Ii8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5Ljg2LDRIMjlhMSwxLDAsMCwwLDAtMkg5Ljg2QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEs''@;'; put 'put ''MSwwLDAsMCwwLC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjksOFpNMjgsMzJIOS44NkEyLDIsMCwwLDEsOCwzMFY5LjU1QTMuNjMsMy42MywwLDAsMCw5Ljg2LDEwSDI4WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOSw4''@;'; put 'put ''SDkuODZBMS44OSwxLjg5LDAsMCwxLDgsNiwyLDIsMCwwLDEsOS44Niw0SDI5YTEsMSwwLDEsMCwwLTJIOS44NkE0LDQsMCwwLDAsNiw2YTQuMTQsNC4xNCwwLDAsMCwwLC40OSwxLDEsMCwwLDAsMCwuMjRWMzBhNCw0LDAsMCwwLDMuODYsNEgyOWExLDEsMCwwLDAsMS0xVjkuMjVzMC0uMDYs''@;'; put 'put ''MC0uMDksMC0uMDYsMC0uMDlBMS4wNywxLjA3LDAsMCwwLDI5LDhaIi8+JyksbC5DbHJTaGFwZUFzdGVyaXNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjguODksMjAuOTFsLTUtMi45MSw0Ljg3LTIuODZh''@;'; put 'put ''My4xMSwzLjExLDAsMCwwLDEuMTQtMS4wOCwzLDMsMCwwLDAtNC4wOS00LjE1TDIxLDEyLjc2VjdhMywzLDAsMCwwLTYsMHY1Ljc2TDEwLjE1LDkuOTFhMywzLDAsMSwwLTMsNS4xOGw1LDIuOTFMNy4yLDIwLjg2YTMuMTEsMy4xMSwwLDAsMC0xLjE0LDEuMDgsMywzLDAsMCwwLDQuMDksNC4x''@;'; put 'put ''NEwxNSwyMy4yNFYyOC45YTMsMywwLDAsMCwyLDIuOTRBMywzLDAsMCwwLDIxLDI5VjIzLjI0bDQuODUsMi44NWEzLDMsMCwxLDAsMy01LjE4Wk0yOC4yNCwyNGExLDEsMCwwLDEtMS4zNy4zNkwxOSwxOS43NVYyOWExLDEsMCwwLDEtMiwwVjE5Ljc1TDkuMTMsMjQuMzZhMSwxLDAsMCwxLTEt''@;'; put 'put ''MS43MkwxNiwxOGwtNy45LTQuNjRhMSwxLDAsMSwxLDEtMS43MkwxNywxNi4yNVY3YTEsMSwwLDAsMSwyLDB2OS4yNWw3Ljg3LTQuNjJhMSwxLDAsMCwxLDEsMS43MkwyMCwxOGw3LjksNC42NEExLDEsMCwwLDEsMjguMjQsMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjguODksMjAuOTFsLTUtMi45MSw0Ljg3LTIuODZhMy4xMSwzLjExLDAsMCwwLDEuMTQtMS4wOCwzLDMsMCwwLDAtNC4wOS00LjE1TDIxLDEyLjc2VjdhMywzLDAsMCwwLTYsMHY1Ljc2TDEwLjE1LDkuOTFhMywzLDAsMSwwLTMsNS4xOGw1''@;'; put 'put ''LDIuOTFMNy4yLDIwLjg2YTMuMTEsMy4xMSwwLDAsMC0xLjE0LDEuMDgsMywzLDAsMCwwLDQuMDksNC4xNEwxNSwyMy4yNFYyOC45YTMsMywwLDAsMCwyLDIuOTRBMywzLDAsMCwwLDIxLDI5VjIzLjI0bDQuODUsMi44NWEzLDMsMCwxLDAsMy01LjE4WiIvPicpLGwuQ2xyU2hhcGVTY2lzc29y''@;'; put 'put ''cz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSJcbiAgICAgICAgICAgIGQ9Ik0yNC4wNiwxOC4xOGw5LjYxLTguNzdhMSwxLDAsMCwwLS4wOS0xLjU1bC0yLjI0LTEuNmEzLjU3LDMuNTcsMCwwLDAtNC4yOC4xMkwxNS44''@;'; put 'put ''OCwxNS4zbC0zLjI2LTIuNTJhNS40NSw1LjQ1LDAsMSwwLTEsMS43N2wyLjYyLDJMMTAsMjBhNS40OCw1LjQ4LDAsMSwwLDEuNTksMS4yOUwyOC4zLDcuOTRhMS41NywxLjU3LDAsMCwxLDEuODgtLjA1bDEuMjMuODhMMjEuMSwxOC4xOWwxMC4zMSw5LjQtMS4yMy44OGExLjU3LDEuNTcsMCww''@;'; put 'put ''LDEtMS44OC0uMDVsLTkuODEtNy44NUwxNywyMS45M2wxMC4wNiw4YTMuNTcsMy41NywwLDAsMCw0LjI5LjEybDIuMjQtMS42YTEsMSwwLDAsMCwuMDktMS41NVpNNy40NSwxNC41NGEzLjQ2LDMuNDYsMCwxLDEsMy40NS0zLjQ2QTMuNDYsMy40NiwwLDAsMSw3LjQ1LDE0LjU0Wm0wLDEzLjcy''@;'; put 'put ''QTMuNDYsMy40NiwwLDEsMSwxMC45LDI0LjgsMy40NiwzLjQ2LDAsMCwxLDcuNDUsMjguMjZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMuODEsOC4xMywzMS42Myw2LjQ4YTEuOTIsMS45MiwwLDAsMC0yLjM2LDBM''@;'; put 'put ''MTAsMjIuMDZhNS40Niw1LjQ2LDAsMSwwLDIsMS44MWwzLjktMy4xMkwyOS4yNywzMS41MmExLjkyLDEuOTIsMCwwLDAsMi4zNiwwbDIuMTgtMS42NEwyMC45NCwxOVpNNy40NSwyOS43NWEyLjg2LDIuODYsMCwxLDEsMi44Ni0yLjg2QTIuODcsMi44NywwLDAsMSw3LjQ1LDI5Ljc1WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE0LjMsMTUuMjQsMTIsMTMuMzhhNS40Niw1LjQ2LDAsMSwwLTIsMS44MUwxMi4xNiwxN1ptLTYuODUtMmEyLjg2LDIuODYsMCwxLDEsMi44Ni0yLjg2QTIuODYsMi44NiwwLDAsMSw3''@;'; put 'put ''LjQ1LDEzLjIzWiIvPicpLGwuQ2xyU2hhcGVCdWc9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjIzLjU2IiBjeT0iMTcuNzQiIHI9IjEuOTUiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMi40MiIgY3k9IjI1Ljg4IiByPSIxLjU4Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTIuODYiIGN5PSIxNy43NCIgcj0iMS45NSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgY3g9IjEzLjk5IiBjeT0iMjUuODgiIHI9IjEuNTgiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMzAuODMs''@;'; put 'put ''MjBIMjlhMTkuMjksMTkuMjksMCwwLDAtMS4xOC01LjczbDEuNDYtLjc5YTEsMSwwLDAsMC0uOTUtMS43NmwtMywxLjY0QTE3LjY1LDE3LjY1LDAsMCwxLDI3LDIwLjcyQzI3LDI3LDIzLjgsMzEuMjMsMTguOCwzMS42MlYxNUgxNy4yVjMxLjYyQzEyLjIyLDMxLjIxLDksMjcsOSwyMC43MmEx''@;'; put 'put ''Ny43NCwxNy43NCwwLDAsMSwxLjczLTcuMzRMNy43LDExLjcyYTEsMSwwLDAsMC0uOTUsMS43NmwxLjUuOEExOS4zOCwxOS4zOCwwLDAsMCw3LjA3LDIwSDUuMTdhMSwxLDAsMCwwLDAsMkg3LjFhMTQuNjIsMTQuNjIsMCwwLDAsMS42Niw2LjE3TDYuODcsMjkuNDlBMSwxLDAsMSwwLDgsMzEu''@;'; put 'put ''MTJsMS44NC0xLjI5QTEwLjM4LDEwLjM4LDAsMCwwLDE4LDMzLjY2YTEwLjM4LDEwLjM4LDAsMCwwLDguMTQtMy44MUwyOCwzMS4xMmExLDEsMCwxLDAsMS4xNS0xLjY0bC0xLjg2LTEuM0ExNC42MSwxNC42MSwwLDAsMCwyOC45NCwyMmgxLjg5YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgZD0iTTExLjUxLDUuMzZhMS42NywxLjY3LDAsMCwwLDEuMDctLjUxQTMuMjEsMy4yMSwwLDAsMSwxMy43Niw2YTE2LjM4LDE2LjM4LDAsMCwwLTIuNjUsMi44OSwyLDIsMCwwLDAsMS42MSwzLjE5''@;'; put 'put ''SDIzLjMyQTIsMiwwLDAsMCwyNS4xLDExYTIsMiwwLDAsMC0uMTctMi4xQTE2LjM0LDE2LjM0LDAsMCwwLDIyLjI1LDZhMy4yMSwzLjIxLDAsMCwxLDEuMTctMS4xMUExLjY4LDEuNjgsMCwxLDAsMjMsMy4yNyw0Ljc3LDQuNzcsMCwwLDAsMjEsNWE1LjgxLDUuODEsMCwwLDAtMi45My0xLDUu''@;'; put 'put ''ODMsNS44MywwLDAsMC0zLDFBNC43Nyw0Ljc3LDAsMCwwLDEzLDMuMjdhMS42OCwxLjY4LDAsMSwwLTEuNDksMi4wOVpNMTgsNi4wN2MxLjQ1LDAsMy41MywxLjU3LDUuMzEsNGgwbC0xMC42LDBDMTQuNDksNy42MywxNi41Niw2LjA3LDE4LDYuMDdaIi8+XG4gICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuODMsMjBIMjlhMTkuMjksMTkuMjksMCwwLDAtMS4xOC01LjczbDEuNDYtLjc5YTEsMSwwLDAsMC0uOTUtMS43NmwtMywxLjI4SDEwLjc4TDcuNywxMS43MmExLDEsMCwwLDAtLjk1LDEuNzZsMS41LjhBMTkuMzgs''@;'; put 'put ''MTkuMzgsMCwwLDAsNy4wNywyMEg1LjE3YTEsMSwwLDAsMCwwLDJINy4xYTE0LjYyLDE0LjYyLDAsMCwwLDEuNjYsNi4xN0w2Ljg3LDI5LjQ5QTEsMSwwLDEsMCw4LDMxLjEybDEuODQtMS4yOUExMC4yOSwxMC4yOSwwLDAsMCwxNywzMy42VjE1aDJWMzMuNmExMC4yOSwxMC4yOSwwLDAsMCw3''@;'; put 'put ''LjE2LTMuNzVMMjgsMzEuMTJhMSwxLDAsMSwwLDEuMTUtMS42NGwtMS44Ni0xLjNBMTQuNjEsMTQuNjEsMCwwLDAsMjguOTQsMjJoMS44OWExLDEsMCwwLDAsMC0yWk0xMC45MSwxNy43NGExLjk1LDEuOTUsMCwxLDEsMS45NSwxLjk1QTEuOTUsMS45NSwwLDAsMSwxMC45MSwxNy43NFpNMTQs''@;'; put 'put ''MjcuNDZhMS41OCwxLjU4LDAsMSwxLDEuNTgtMS41OEExLjU4LDEuNTgsMCwwLDEsMTQsMjcuNDZabTguNDMsMEExLjU4LDEuNTgsMCwxLDEsMjQsMjUuODgsMS41OCwxLjU4LDAsMCwxLDIyLjQyLDI3LjQ2Wm0xLjEzLTcuNzdhMS45NSwxLjk1LDAsMSwxLDEuOTUtMS45NUExLjk1LDEuOTUs''@;'; put 'put ''MCwwLDEsMjMuNTYsMTkuNjlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTEuMjMsNS4yNmExLjY3LDEuNjcsMCwwLDAsLjU0LS4zMiw1LjksNS45LDAsMCwxLC44OS41OCw3LjQ0LDcuNDQsMCwwLDEsLjk1Ljk0QTE4''@;'; put 'put ''LjQ4LDE4LjQ4LDAsMCwwLDEwLjc5LDkuN2MtLjQuNTcuMDksMS4yOC44NiwxLjI4SDI0LjQ0Yy43NywwLDEuMjYtLjcxLjg2LTEuMjhhMTguMzgsMTguMzgsMCwwLDAtMi44OC0zLjI4LDcuMjgsNy4yOCwwLDAsMSwuOTEtLjksNS45LDUuOSwwLDAsMSwuODktLjU4LDEuNjksMS42OSwwLDEs''@;'; put 'put ''MC0uNTYtMS41MSw3LjQ5LDcuNDksMCwwLDAtMS4zMi44Myw5LjA2LDkuMDYsMCwwLDAtMS4xOSwxLjE4QTUuODUsNS44NSwwLDAsMCwxOCw0LjNhNS45MSw1LjkxLDAsMCwwLTMuMTcsMS4xOSw5LjIsOS4yLDAsMCwwLTEuMjItMS4yMSw3LjQ5LDcuNDksMCwwLDAtMS4zMi0uODMsMS42OCwx''@;'; put 'put ''LjY4LDAsMSwwLTEuMTEsMS44M1oiLz4nKSxsLkNsclNoYXBlVGhlcm1vbWV0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOSwyMy4xN1YxMS40NkgxN1YyMy4yYTMsMywwLDEsMCwyLDBaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDE1YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTFIMjZhMSwxLDAsMCwwLDAtMkgyMy45MlY4YTYsNiwwLDAsMC0xMiwwVjIwLjgxYTgsOCwwLDEsMCwxMi0uMlYxOUgyNmExLDEsMCww''@;'; put 'put ''LDAsMC0ySDIzLjkyVjE1Wk0yNCwyNmE2LDYsMCwxLDEtMTAuMzYtNC4xMmwuMjctLjI5VjhhNCw0LDAsMCwxLDgsMFYyMS40NGwuMy4yOUE2LDYsMCwwLDEsMjQsMjZaIi8+JyksbC5DbHJTaGFwZVBlbmNpbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjg3LDguMzIsMjgsMi40MmEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDQuMjcsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUsMi4xNCwyLjE0LDAsMCwwLC40MywwTDEzLjA5LDMyLDMzLjg3LDExLjI0QTIuMDcsMi4wNywwLDAs''@;'; put 'put ''MCwzMy44Nyw4LjMyWk0xMi4wOSwzMC4yLDQuMzIsMzEuODNsMS43Ny03LjYyTDIxLjY2LDguN2w2LDZaTTI5LDEzLjI1bC02LTYsMy40OC0zLjQ2LDUuOSw2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik00LjIy''@;'; put 'put ''LDIzLjJsLTEuOSw4LjJhMi4wNiwyLjA2LDAsMCwwLDIsMi41LDIuMTQsMi4xNCwwLDAsMCwuNDMsMEwxMywzMiwyOC44NCwxNi4yMiwyMCw3LjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjgyLDguMzJs''@;'; put 'put ''LTUuOS01LjlhMi4wNywyLjA3LDAsMCwwLTIuOTIsMEwyMS43Miw1LjdsOC44Myw4LjgzLDMuMjgtMy4yOEEyLjA3LDIuMDcsMCwwLDAsMzMuODIsOC4zMloiLz4nKSxsLkNsclNoYXBlTm90ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsMzBINlY4SDE5LjIybDItMkg2QTIsMiww''@;'; put 'put ''LDAsMCw0LDhWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjE1bC0yLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy41Myw1Ljg0LDMwLjE2LDIuNDdhMS42MSwxLjYxLDAsMCwwLTIuMjgs''@;'; put 'put ''MEwxNC4xNywxNi4yNmwtMS4xMSw0LjgxQTEuNjEsMS42MSwwLDAsMCwxNC42MywyMywxLjY5LDEuNjksMCwwLDAsMTUsMjNsNC44NS0xLjA3TDMzLjUzLDguMTJBMS42MSwxLjYxLDAsMCwwLDMzLjUzLDUuODRaTTE4LjgxLDIwLjA4bC0zLjY2LjgxTDE2LDE3LjI2LDI2LjMyLDYuODdsMi44''@;'; put 'put ''MiwyLjgyWk0zMC4yNyw4LjU2LDI3LjQ1LDUuNzQsMjksNC4xNiwzMS44NCw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNi40LDI5LjMsMi43YTEuNzEsMS43MSwwLDAsMC0yLjM2LDBMMjMuNjUsNkg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDhWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjExLjc2bDMtM0ExLjY3LDEuNjcsMCwwLDAsMzMsNi40Wk0xOC44MywyMC4xM2wtNC4xOS45MywxLTQuMTUsOS41NS05LjU3LDMuMjMsMy4yM1pNMjkuNSw5LjQzLDI2LjI3LDYuMmwxLjg1LTEuODUsMy4y''@;'; put 'put ''MywzLjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlUmVmcmVzaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIyLjQsMTEuNjVhMS4wOSwxLjA5LDAs''@;'; put 'put ''MCwwLDEuMDksMS4wOUgzNC40M1YxLjgxYTEuMDksMS4wOSwwLDEsMC0yLjE5LDBWOC45NWExNi40MSwxNi40MSwwLDEsMCwxLjQ3LDE1Ljg2LDEuMTIsMS4xMiwwLDAsMC0yLjA1LS45LDE0LjE4LDE0LjE4LDAsMSwxLTEuMDUtMTMuMzZIMjMuNUExLjA5LDEuMDksMCwwLDAsMjIuNCwxMS42''@;'; put 'put ''NVoiLz4nKSxsLkNsclNoYXBlU3luYz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjg0LDE1LjcyYTEsMSwwLDEsMC0yLC4yOUExMy4xNSwxMy4xNSwwLDAsMSwzMSwxNy45NCwxMywxMywwLDAsMSw4Ljcs''@;'; put 'put ''MjdoNS4zNmExLDEsMCwwLDAsMC0yaC05djlhMSwxLDAsMSwwLDIsMFYyOC4yQTE1LDE1LDAsMCwwLDMyLjg0LDE1LjcyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuMDYsMUExLjA1LDEuMDUsMCww''@;'; put 'put ''LDAsMjksMlY3LjgzQTE0Ljk0LDE0Ljk0LDAsMCwwLDMsMTcuOTRhMTUuMTYsMTUuMTYsMCwwLDAsLjIsMi40OCwxLDEsMCwwLDAsMSwuODRoLjE2YTEsMSwwLDAsMCwuODItMS4xNUExMy4yMywxMy4yMywwLDAsMSw1LDE3Ljk0YTEzLDEzLDAsMCwxLDEzLTEzQTEyLjg3LDEyLjg3LDAsMCwx''@;'; put 'put ''LDI3LjQ0LDlIMjIuMDZhMSwxLDAsMCwwLDAsMkgzMVYyQTEsMSwwLDAsMCwzMC4wNiwxWiIvPicpLGwuQ2xyU2hhcGVWaWV3TGlzdD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMiIgeT0iOCIgd2lkdGg9IjIi''@;'; put 'put ''IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNywxMEgzMWExLDEsMCwwLDAsMC0ySDdhMSwxLDAsMCwwLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMiIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMxLDE0SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCww''@;'; put 'put ''LDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIyIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02IiBkPSJNMzEsMjBIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjIiIHk9IjI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIGQ9Ik0zMSwyNkg3YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz4nKSxsLkNsclNoYXBlVmlld0NhcmRzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTUsMTdINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDE3Wk00LDh2N0gxNVY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTdIMjFhMiwyLDAsMCwxLTItMlY4YTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwxN1pNMjEsOHY3SDMyVjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xNSwzMEg0YTIsMiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgxNWEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDE1LDMwWk00LDIxdjdIMTVWMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik0zMiwzMEgyMWEyLDIsMCwwLDEtMi0yVjIxYTIsMiwwLDAsMSwyLTJIMzJhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwzMiwzMFpNMjEsMjF2N0gzMlYyMVoiLz4nKSxsLkNsclNoYXBlTGlnaHRidWxiPSgwLGEuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwyLjI1YTExLDExLDAsMCwwLTExLDExLDEwLjY4LDEwLjY4LDAsMCwwLDEsNC42MywxNi4zNiwxNi4zNiwwLDAsMCwxLjEyLDEuNzgsMTcsMTcsMCwwLDEsMiwzLjQ3LDE2LjE5LDE2LjE5LDAsMCwxLC41OSw0aDJBMTguMTcsMTguMTcsMCwwLDAsMTMsMjIuNDRhMTguNDYsMTgu''@;'; put 'put ''NDYsMCwwLDAtMi4yMi0zLjkyLDE1Ljc5LDE1Ljc5LDAsMCwxLTEtMS41NEE4LjY0LDguNjQsMCwwLDEsOSwxMy4yM2E5LDksMCwwLDEsMTguMDcsMEE4LjY0LDguNjQsMCwwLDEsMjYuMjEsMTdhMTUuNzksMTUuNzksMCwwLDEtMSwxLjU0QTE4LjQ2LDE4LjQ2LDAsMCwwLDIzLDIyLjQ0YTE4''@;'; put 'put ''LjE3LDE4LjE3LDAsMCwwLS43MSw0LjcxaDJhMTYuMTksMTYuMTksMCwwLDEsLjU5LTQsMTcsMTcsMCwwLDEsMi0zLjQ3QTE2LjMxLDE2LjMxLDAsMCwwLDI4LDE3Ljg2YTEwLjY4LDEwLjY4LDAsMCwwLDEtNC42M0ExMSwxMSwwLDAsMCwxOCwyLjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC42MywxNS41MWEuOC44LDAsMCwwLTEuMTMsMGwtMywzLDIuODYsMy4xM3Y1LjU0SDE5VjIxbC0yLjI0LTIuNDUsMS44OS0xLjg5QS44LjgsMCwwLDAsMTguNjMsMTUuNTFaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjg2LDI5LjE1SDEyLjExYS44LjgsMCwxLDAsMCwxLjZIMjMuODZhLjguOCwwLDAsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjIsMzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy4zMiwxMC44OWwtMi43MywyLjczYS44LjgsMCww''@;'; put 'put ''LDAsMS4xMywxLjEzTDE4LjQ1LDEyYS44LjgsMCwxLDAtMS4xMy0xLjEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwyNy4xNVYyMWwtMi4yNC0yLjQ1LDEuODktMS44OWEuOC44LDAsMCwwLTEuMTMtMS4x''@;'; put 'put ''M2wtMywzLDIuODYsMy4xM3Y1LjU0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNzIsMTQuNzUsMTguNDUsMTJhLjguOCwwLDEsMC0xLjEzLTEuMTNsLTIuNzMsMi43M2EuOC44LDAsMCwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LDEyLjg4YzAsLjEyLDAsLjIzLDAsLjM1QTguNjQsOC42NCwwLDAsMSwyNi4yMSwxN2ExNS43OSwxNS43OSwwLDAsMS0xLDEuNTRBMTguNDYsMTguNDYsMCwwLDAsMjMsMjIuNDRhMTguMTcsMTgu''@;'; put 'put ''MTcsMCwwLDAtLjcxLDQuNzFoMmExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjMsMTAuNjMsMCwwLDAsMS00LjQzQTcuNDUsNy40NSwwLDAsMSwyNywxMi44OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDI3LjE1QTE4LjE3LDE4LjE3LDAsMCwwLDEzLDIyLjQ0YTE4LjQ2LDE4LjQ2LDAsMCwwLTIuMjItMy45MiwxNS43OSwxNS43OSwwLDAsMS0xLTEuNTRBOC42NCw4LjY0LDAs''@;'; put 'put ''MCwxLDksMTMuMjMsOSw5LDAsMCwxLDIyLjUzLDUuNDdhNy40NSw3LjQ1LDAsMCwxLC40My0yLDExLDExLDAsMCwwLTE2LDkuOCwxMC42OCwxMC42OCwwLDAsMCwxLDQuNjMsMTYuMzYsMTYuMzYsMCwwLDAsMS4xMiwxLjc4LDE3LDE3LDAsMCwxLDIsMy40NywxNi4xOSwxNi4xOSwwLDAsMSwu''@;'; put 'put ''NTksNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwyOS4xNUgxMi4xMWEuOC44LDAsMSwwLDAsMS42SDIzLjg2YS44LjgsMCwwLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjIsMzIuMTVIMTRhLjguOCwwLDEsMCwwLDEuNkgyMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYz''@;'; put 'put ''LDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoNS42OVYyMS42MWwtMi44Ni0zLjEzLDMtM2EuOC44LDAsMCwxLDEuMTMsMS4xM2wtMS44OSwxLjg5TDE5LDIxdjYuMTdIMjQuM2ExNi4xOSwxNi4xOSwwLDAsMSwu''@;'; put 'put ''NTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjgsMTAuNjgsMCwwLDAsMS00LjYzQTExLDExLDAsMCwwLDE4LDIuMjVaTTE4LjQ1LDEybC0yLjczLDIuNzNhLjguOCwwLDEsMS0xLjEzLTEuMTNsMi43My0yLjczQS44LjgsMCwxLDEsMTguNDUs''@;'; put 'put ''MTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODYsMjkuMTVIMTIuMTFhLjguOCwwLDEsMCwwLDEuNkgyMy44NmEuOC44LDAsMCwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwzMi4xNUgxNGEuOC44LDAsMSwwLDAsMS42SDIyYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLjUsNkE3LjQ3LDcuNDcsMCwwLDEsMjMsMy40NGExMSwxMSwwLDAsMC0xNiw5LjgsMTAuNjgsMTAuNjgsMCwwLDAsMSw0LjYzLDE2LjM2LDE2LjM2LDAsMCwwLDEuMTIsMS43OCwxNywxNywwLDAsMSwyLDMuNDcsMTYuMTksMTYuMTksMCwwLDEsLjU5LDRoNS42OVYyMS42''@;'; put 'put ''MWwtMi44Ni0zLjEzLDMtM2EuOC44LDAsMCwxLDEuMTMsMS4xM2wtMS44OSwxLjg5TDE5LDIxdjYuMTdIMjQuM2ExNi4xOSwxNi4xOSwwLDAsMSwuNTktNCwxNywxNywwLDAsMSwyLTMuNDdBMTYuMzEsMTYuMzEsMCwwLDAsMjgsMTcuODZhMTAuNjMsMTAuNjMsMCwwLDAsMS00LjQzQTcuNSw3''@;'; put 'put ''LjUsMCwwLDEsMjIuNSw2Wm0tNCw2LTIuNzMsMi43M2EuOC44LDAsMSwxLTEuMTMtMS4xM2wyLjczLTIuNzNBLjguOCwwLDEsMSwxOC40NSwxMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4''@;'; put 'put ''PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksbC5DbHJTaGFwZURvd25sb2FkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMzEsMzFINWExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyOS40OCwyOC42MSwxOC44N2ExLDEsMCwwLDAtMS40MS0x''@;'; put 'put ''LjQxTDE5LDI1LjY1VjVhMSwxLDAsMCwwLTIsMFYyNS42NUw4LjgxLDE3LjQ2YTEsMSwwLDEsMC0xLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzEsMzFINWEx''@;'; put 'put ''LDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTgsMjkuNDgsMjguNjEsMTguODdhMSwxLDAsMCwwLTEuNDEtMS40MUwxOSwy''@;'; put 'put ''NS42NVY1YTEsMSwwLDAsMC0yLDBWMjUuNjVMOC44MSwxNy40NmExLDEsMCwxLDAtMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAi''@;'; put 'put ''IGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTE4LDI5LjQ4LDI4LjYxLDE4Ljg3YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMjUuNjVWNWExLDEsMCwwLDAtMiwwVjI1LjY1TDguODEsMTcuNDZhMSwxLDAsMSwwLTEu''@;'; put 'put ''NDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLGwuQ2xyU2hhcGVVcGxvYWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEs''@;'; put 'put ''MSwwLDAsMCwwLDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguODEsMTUsMTcsNi44M1YyNy40OGExLDEsMCwwLDAsMiwwVjYuODNMMjcuMTksMTVhMSwxLDAsMCwwLDEu''@;'; put 'put ''NDEtMS40MUwxOCwzLDcuMzksMTMuNjFBMSwxLDAsMSwwLDguODEsMTVaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMSwzMUg1Yy0wLjYsMC0xLDAuNC0xLDFzMC40LDEs''@;'; put 'put ''MSwxaDI2YzAuNiwwLDEtMC40LDEtMVMzMS42LDMxLDMxLDMxeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNOC44LDE1TDE3LDYuOHYyMC42YzAsMC42LDAuNCwxLDEsMXMx''@;'; put 'put ''LTAuNCwxLTFWNi44TDIwLjEsOGwxLTEuOEwxOCwzTDcuNCwxMy42QzcsMTQsNi45LDE0LjYsNy4yLDE1czEsMC41LDEuNCwwLjFDOC43LDE1LjEsOC44LDE1LjEsOC44LDE1eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0w''@;'; put 'put ''LjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEs''@;'; put 'put ''MCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTguODEsMTUsMTcsNi44M1YyNy40OGExLDEsMCwwLDAsMiwwVjYuODNMMjcuMTksMTVhMSwxLDAsMCwwLDEuNDEt''@;'; put 'put ''MS40MUwxOCwzLDcuMzksMTMuNjFBMSwxLDAsMSwwLDguODEsMTVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxs''@;'; put 'put ''LkNsclNoYXBlTG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjA5LDIwLjU5QTIuNDEsMi40MSwwLDAsMCwxNywyNS4xNFYyOGgyVjI1LjIzYTIuNDEsMi40MSwwLDAsMC0uOTEtNC42NFoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDE1VjEwLjcyYTguMiw4LjIsMCwwLDAtOC04LjM2LDguMiw4LjIsMCwwLDAtOCw4LjM2VjE1SDdWMzJhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjE1Wk0x''@;'; put 'put ''MiwxMC43MmE2LjIsNi4yLDAsMCwxLDYtNi4zNiw2LjIsNi4yLDAsMCwxLDYsNi4zNlYxNUgxMlpNOSwzMlYxN0gyN1YzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAs''@;'; put 'put ''MC04LTguMzYsOC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTE5LDI1LjIzVjI4SDE3VjI1LjE0YTIuNCwyLjQsMCwxLDEsMiwuMDlaTTI0LDE1SDEyVjEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIsMCwwLDEs''@;'; put 'put ''Niw2LjM2WiIvPicpLGwuQ2xyU2hhcGVVbmxvY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMiwyNS4xNFYyOGgyVjI1LjIzYTIuNDIsMi40MiwwLDEsMC0yLS4wOVoiLz5cbiAgICAgICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LDJhOC4yLDguMiwwLDAsMC04LDguMzZWMTVIMlYzMmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTVIMjBWMTAuMzZBNi4yLDYuMiwwLDAsMSwyNiw0YTYuMiw2LjIsMCwwLDEsNiw2''@;'; put 'put ''LjM2djYuODNhMSwxLDAsMCwwLDIsMFYxMC4zNkE4LjIsOC4yLDAsMCwwLDI2LDJaTTIyLDE3VjMySDRWMTdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LDJhOC4yLDguMiwwLDAsMC04LDguMzZWMTVIMlYz''@;'; put 'put ''MmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTVIMjBWMTAuMzZBNi4yLDYuMiwwLDAsMSwyNiw0YTYuMiw2LjIsMCwwLDEsNiw2LjM2djYuODNhMSwxLDAsMCwwLDIsMFYxMC4zNkE4LjIsOC4yLDAsMCwwLDI2LDJaTTE0LDI1LjIzVjI4SDEyVjI1LjE0YTIuNCwyLjQsMCwxLDEs''@;'; put 'put ''MiwuMDlaIi8+JyksbC5DbHJTaGFwZVVzZXJzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuOSwxNy4zYzIuNywwLDQuOC0yLjIsNC44LTQuOWMwLTIuNy0yLjItNC44LTQuOS00LjhjLTIuNywwLTQuOCwy''@;'; put 'put ''LjItNC44LDQuOEMxMywxNS4xLDE1LjIsMTcuMywxNy45LDE3LjN6IE0xNy44LDkuNkMxNy45LDkuNiwxNy45LDkuNiwxNy44LDkuNmMxLjYsMCwyLjksMS4zLDIuOSwyLjlzLTEuMywyLjgtMi45LDIuOGMtMS42LDAtMi44LTEuMy0yLjgtMi44QzE1LDEwLjksMTYuMyw5LjYsMTcuOCw5LjZ6''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMi43LDE2LjdjLTEuOS0xLjctNC40LTIuNi03LTIuNWMtMC4zLDAtMC41LDAtMC44LDBjLTAuMiwwLjgtMC41LDEuNS0wLjksMi4xYzAuNi0wLjEsMS4xLTAu''@;'; put 'put ''MSwxLjctMC4xYzEuOS0wLjEsMy44LDAuNSw1LjMsMS42VjI1aDJ2LThMMzIuNywxNi43eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjMuNCw3LjhjMC41LTEuMiwxLjktMS44LDMuMi0xLjNjMS4yLDAu''@;'; put 'put ''NSwxLjgsMS45LDEuMywzLjJjLTAuNCwwLjktMS4zLDEuNS0yLjIsMS41Yy0wLjIsMC0wLjUsMC0wLjctMC4xYzAuMSwwLjUsMC4xLDEsMC4xLDEuNGMwLDAuMiwwLDAuNCwwLDAuNmMwLjIsMCwwLjQsMC4xLDAuNiwwLjFjMi41LDAsNC41LTIsNC41LTQuNGMwLTIuNS0yLTQuNS00LjQtNC41''@;'; put 'put ''Yy0xLjYsMC0zLDAuOC0zLjgsMi4yQzIyLjUsNi44LDIzLDcuMiwyMy40LDcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTEyLDE2LjRjLTAuNC0wLjYtMC43LTEuMy0wLjktMi4xYy0wLjMsMC0wLjUs''@;'; put 'put ''MC0wLjgsMGMtMi42LTAuMS01LjEsMC44LTcsMi40TDMsMTd2OGgydi03LjJjMS42LTEuMSwzLjQtMS43LDUuMy0xLjZDMTAuOSwxNi4yLDExLjUsMTYuMywxMiwxNi40eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01''@;'; put 'put ''IiBkPSJNMTAuMywxMy4xYzAuMiwwLDAuNCwwLDAuNi0wLjFjMC0wLjIsMC0wLjQsMC0wLjZjMC0wLjUsMC0xLDAuMS0xLjRjLTAuMiwwLjEtMC41LDAuMS0wLjcsMC4xYy0xLjMsMC0yLjQtMS4xLTIuNC0yLjRjMC0xLjMsMS4xLTIuNCwyLjQtMi40YzEsMCwxLjksMC42LDIuMywxLjVjMC40''@;'; put 'put ''LTAuNSwxLTEsMS41LTEuNGMtMS4zLTIuMS00LTIuOC02LjEtMS41Yy0yLjEsMS4zLTIuOCw0LTEuNSw2LjFDNy4zLDEyLjMsOC43LDEzLjEsMTAuMywxMy4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJN''@;'; put 'put ''MjYuMSwyMi43bC0wLjItMC4zYy0yLTIuMi00LjgtMy41LTcuOC0zLjRjLTMtMC4xLTUuOSwxLjItNy45LDMuNEwxMCwyMi43djcuNmMwLDAuOSwwLjcsMS43LDEuNywxLjdjMCwwLDAsMCwwLDBoMTIuOGMwLjksMCwxLjctMC44LDEuNy0xLjdjMCwwLDAsMCwwLDBWMjIuN3ogTTI0LjEsMzBI''@;'; put 'put ''MTJ2LTYuNmMxLjYtMS42LDMuOC0yLjQsNi4xLTIuNGMyLjItMC4xLDQuNCwwLjgsNiwyLjRWMzB6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMS4wOSwxNC41N2MuMSww''@;'; put 'put ''LC4yLDAsLjMxLDBhNi40Myw2LjQzLDAsMCwxLC4wOS0yLDIuMDksMi4wOSwwLDEsMSwxLjQ3LTMsNi41OCw2LjU4LDAsMCwxLDEuNTUtMS4zMSw0LjA5LDQuMDksMCwxLDAtMy40Miw2LjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMTMsMTguMTRhNi41Myw2LjUzLDAsMCwxLTEuMjgtMi4ybC0uNjMsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2N2gyVjE5LjUxYTcsNywwLDAsMSw0LjY3LTEuNkE4LjA5LDguMDksMCwwLDEsMTMsMTguMTRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMS4zNSwxOC40MkE4LjU5LDguNTksMCwwLDAsMjUsMTUuOTFjLS4zMiwwLS42LDAtLjkuMDZhNi41Myw2LjUzLDAsMCwxLTEu''@;'; put 'put ''MzUsMi4yNUE3LjksNy45LDAsMCwxLDI1LDE3LjkxYTYuOTQsNi45NCwwLDAsMSw0LjY0LDEuNTh2Ni4yN2gyVjE4LjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xOC4x''@;'; put 'put ''LDE5LjczQTkuNjksOS42OSwwLDAsMCwxMSwyMi40N2wtLjI1LjI4djcuMzNhMS41NywxLjU3LDAsMCwwLDEuNjEsMS41NEgyMy44M2ExLjU3LDEuNTcsMCwwLDAsMS42MS0xLjU0VjIyLjczbC0uMjUtLjI4QTkuNTgsOS41OCwwLDAsMCwxOC4xLDE5LjczWm01LjMzLDkuODhIMTIuNzNWMjMu''@;'; put 'put ''NTVhOC4wOCw4LjA4LDAsMCwxLDUuMzctMS44Miw4LDgsMCwwLDEsNS4zMywxLjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0yMC4yOCwxNC4yN2EyLjQ2LDIuNDYsMCwx''@;'; put 'put ''LDEtMi40Mi0yLjg5LDIuNDQsMi40NCwwLDAsMSwxLC4yNCwzLjY3LDMuNjcsMCwwLDEsLjQzLTIsNC40MSw0LjQxLDAsMCwwLTEuNDgtLjI3QTQuNDcsNC40NywwLDEsMCwyMi4xNCwxNSwzLjY5LDMuNjksMCwwLDEsMjAuMjgsMTQuMjdaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNy4xOC44bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDM0YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4zOS44QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNy4xOC44WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjA5LDE0LjU3Yy4xLDAsLjIsMCwuMzEsMGE2LjQzLDYuNDMsMCwwLDEsLjA5LTIsMi4wOSwyLjA5LDAs''@;'; put 'put ''MSwxLDEuNDctMyw2LjU4LDYuNTgsMCwwLDEsMS41NS0xLjMxLDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTMsMTguMTRhNi41''@;'; put 'put ''Myw2LjUzLDAsMCwxLTEuMjgtMi4ybC0uNjMsMGE4LjY3LDguNjcsMCwwLDAtNi40MywyLjUybC0uMjQuMjh2N2gyVjE5LjUxYTcsNywwLDAsMSw0LjY3LTEuNkE4LjA5LDguMDksMCwwLDEsMTMsMTguMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMzEuMzUsMTguNDJBOC41OSw4LjU5LDAsMCwwLDI1LDE1LjkxYy0uMzIsMC0uNiwwLS45LjA2YTYuNTMsNi41MywwLDAsMS0xLjM1LDIuMjVBNy45LDcuOSwwLDAsMSwyNSwxNy45MWE2Ljk0LDYuOTQsMCwwLDEsNC42''@;'; put 'put ''NCwxLjU4djYuMjdoMlYxOC43WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTE3Ljg2LDE4LjNhNC40Nyw0LjQ3LDAsMSwwLTQuNDctNC40N0E0LjQ3LDQuNDcsMCwwLDAsMTcu''@;'; put 'put ''ODYsMTguM1ptMC02LjkzYTIuNDcsMi40NywwLDEsMS0yLjQ3LDIuNDdBMi40NywyLjQ3LDAsMCwxLDE3Ljg2LDExLjM3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgZD0iTTE4LjEs''@;'; put 'put ''MTkuNzNBOS42OSw5LjY5LDAsMCwwLDExLDIyLjQ3bC0uMjUuMjh2Ny4zM2ExLjU3LDEuNTcsMCwwLDAsMS42MSwxLjU0SDIzLjgzYTEuNTcsMS41NywwLDAsMCwxLjYxLTEuNTRWMjIuNzNsLS4yNS0uMjhBOS41OCw5LjU4LDAsMCwwLDE4LjEsMTkuNzNabTUuMzMsOS44OEgxMi43M1YyMy41''@;'; put 'put ''NWE4LjA4LDguMDgsMCwwLDEsNS4zNy0xLjgyLDgsOCwwLDAsMSw1LjMzLDEuOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIGQ9Ik0yNi4zNywxMmEyLDIsMCwwLDEtMi4wOS40Miw2''@;'; put 'put ''LjUzLDYuNTMsMCwwLDEsLjE1LDEuMzgsNi41OSw2LjU5LDAsMCwxLDAsLjY4LDQsNCwwLDAsMCwuNTcuMDYsNC4wOCw0LjA4LDAsMCwwLDMuMy0xLjdBNy40NSw3LjQ1LDAsMCwxLDI2LjM3LDEyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgZD0iTTIyLjk1LDYuOTNhNC4xNiw0LjE2LDAsMCwwLTEuNDcsMS40NEE2LjU5LDYuNTksMCwwLDEsMjMsOS43N2EyLjEsMi4xLDAsMCwxLC41OS0uODNBNy40NCw3LjQ0LDAsMCwxLDIyLjk1LDYuOTNaIi8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMC4zMyIgY3k9IjUuNjciIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTIsMTYuMTRxLS40MywwLS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wuNTUtLjYyLjI1LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OSw2LjU5LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3LDguNjcsMCwwLDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwxLTIsMi40NSwxMC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4''@;'; put 'put ''LjU0LjYydjQuNzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMu''@;'; put 'put ''NDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMjQuNDMsMTMuNDRhNi41NCw2LjU0LDAsMCwxLDAsLjY5LDQuMDksNC4wOSwwLDAsMCwuNTguMDVoLjE5QTQuMDksNC4wOSwwLDEsMCwyMS40Nyw4LDYu''@;'; put 'put ''NTMsNi41MywwLDAsMSwyNC40MywxMy40NFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIGN4PSIxNy44NyIgY3k9IjEzLjQ1IiByPSI0LjQ3Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgZD0iTTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRIMjMuODRhMS41NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEs''@;'; put 'put ''MjAuM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTIsMTYuMTRxLS40MywwLS44NywwYTguNjcsOC42NywwLDAsMC02LjQzLDIuNTJsLS4yNC4yOHY4LjI4SDguNTR2LTQuN2wu''@;'; put 'put ''NTUtLjYyLjI1LS4yOWExMSwxMSwwLDAsMSw0LjcxLTIuODZBNi41OSw2LjU5LDAsMCwxLDEyLDE2LjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3''@;'; put 'put ''LDguNjcsMCwwLDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwxLTIsMi40NSwxMC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4LjU0LjYydjQuNzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIiBkPSJNMTEuMSwxNC4xOWMuMTEsMCwuMiwwLC4zMSwwYTYuNDUsNi40NSwwLDAsMSwzLjExLTYuMjksNC4wOSw0LjA5LDAsMSwwLTMuNDIsNi4zM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguMTEsMjAuM0E5LjY5LDkuNjksMCwwLDAsMTEsMjNsLS4yNS4yOHY2LjMzYTEuNTcsMS41NywwLDAsMCwxLjYsMS41NEgyMy44NGExLjU3LDEuNTcsMCwwLDAsMS42LTEuNTRWMjMuM0wyNS4yLDIzQTku''@;'; put 'put ''NTgsOS41OCwwLDAsMCwxOC4xMSwyMC4zWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0xNy44NywxNy45MmE0LjQ2LDQuNDYsMCwwLDAsNC0yLjU0QTMuNjcsMy42NywwLDAsMSwx''@;'; put 'put ''OSw5Ljg5bC4zNS0uNjFBNC40Miw0LjQyLDAsMCwwLDE3Ljg3LDlhNC40Nyw0LjQ3LDAsMSwwLDAsOC45M1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYu''@;'; put 'put ''ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMiwxNi4xNHEtLjQzLDAtLjg3LDBhOC42Nyw4LjY3LDAsMCwwLTYuNDMsMi41MmwtLjI0LjI4djguMjhIOC41NHYtNC43bC41NS0uNjIuMjUtLjI5YTExLDExLDAsMCwxLDQuNzEtMi44NkE2LjU4LDYuNTgsMCwwLDEsMTIsMTYuMTRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMS4zNCwxOC42M2E4LjY3LDguNjcsMCwwLDAtNi40My0yLjUyLDEwLjQ3LDEwLjQ3LDAsMCwwLTEuMDkuMDYsNi41OSw2LjU5LDAsMCwx''@;'; put 'put ''LTIsMi40NSwxMC45MSwxMC45MSwwLDAsMSw1LDNsLjI1LjI4LjU0LjYydjQuNzFoMy45NFYxOC45MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgZD0iTTExLjEsMTQuMTljLjExLDAsLjIs''@;'; put 'put ''MCwuMzEsMGE2LjQ1LDYuNDUsMCwwLDEsMy4xMS02LjI5LDQuMDksNC4wOSwwLDEsMC0zLjQyLDYuMzNaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgY3g9IjE3Ljg3IiBjeT0iMTMuNDUi''@;'; put 'put ''IHI9IjQuNDciLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCIgZD0iTTE4LjExLDIwLjNBOS42OSw5LjY5LDAsMCwwLDExLDIzbC0uMjUuMjh2Ni4zM2ExLjU3LDEuNTcsMCwwLDAsMS42LDEuNTRI''@;'; put 'put ''MjMuODRhMS41NywxLjU3LDAsMCwwLDEuNi0xLjU0VjIzLjNMMjUuMiwyM0E5LjU4LDkuNTgsMCwwLDAsMTguMTEsMjAuM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWJhZGdlZCIgZD0iTTI0LjQzLDEz''@;'; put 'put ''LjQ0YTYuNTQsNi41NCwwLDAsMSwwLC42OSw0LjA5LDQuMDksMCwwLDAsLjU4LjA1aC4xOWE0LjA1LDQuMDUsMCwwLDAsMi41Mi0xLDcuNSw3LjUsMCwwLDEtNS4xNC02LjMyQTQuMTMsNC4xMywwLDAsMCwyMS40Nyw4LDYuNTMsNi41MywwLDAsMSwyNC40MywxMy40NFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+JyksbC5DbHJTaGFwZVBvcE91dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LDMzSDVhMiwyLDAsMCwxLTItMlY5QTIsMiwwLDAsMSw1LDdIMTVWOUg1VjMxSDI3VjIxaDJWMzFBMiwyLDAsMCwxLDI3LDMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiBkPSJNMTgsM2ExLDEsMCwwLDAsMCwySDI5LjU5TDE1Ljc0LDE4Ljg1YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzEsNi40MVYxOGExLDEsMCwwLDAsMiwwVjNaIi8+JyksbC5DbHJTaGFwZUZpbHRlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDRIM0ExLDEsMCwwLDAsMiw1VjYuNjdhMS43OSwxLjc5LDAsMCwwLC41MywxLjI3TDE0LDE5LjU4djEwLjJsMiwuNzZWMTlhMSwxLDAsMCwwLS4yOS0uNzFMNCw2LjU5VjZIMzJ2LjYxTDIwLjMzLDE4LjI5QTEsMSwwLDAsMCwyMCwxOWww''@;'; put 'put ''LDEzLjIxTDIyLDMzVjE5LjVMMzMuNDcsOEExLjgxLDEuODEsMCwwLDAsMzQsNi43VjVBMSwxLDAsMCwwLDMzLDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIyLDMzVjE5LjVMMzMuNDcsOEExLjgxLDEuODEs''@;'; put 'put ''MCwwLDAsMzQsNi43VjVhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDVWNi42N2ExLjc5LDEuNzksMCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMzMuNDgsNGgtMzFBLjUyLjUyLDAsMCwwLDIsNC41MlY2LjI0YTEuMzMsMS4z''@;'; put 'put ''MywwLDAsMCwuMzkuOTVsMTIsMTJ2MTBsNy4yNSwzLjYxVjE5LjE3bDEyLTEyQTEuMzUsMS4zNSwwLDAsMCwzNCw2LjI2VjQuNTJBLjUyLjUyLDAsMCwwLDMzLjQ4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVQaW49KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMywxNi41OWExLDEsMCwwLDEtLjcxLS4yOUwxOS43LDMuNzFhMSwxLDAsMCwxLDEuNDEtMS40MUwzMy43MSwxNC44OUExLDEsMCwwLDEsMzMsMTYuNTlaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOC41MiwxNS41NmwtMS40MS0xLjQxLTcuMiw3LjJhMSwxLDAsMCwwLS4yNSwxLDksOSwwLDAsMS0xLjUzLDguMDlMNS41OCwxNy44N2E5LDksMCwwLDEsOC4wOS0xLjUzLDEsMSwwLDAs''@;'; put 'put ''MCwxLS4yNWw3LjItNy4yTDIwLjQ0LDcuNDhsLTYuNzksNi43OUExMC45NCwxMC45NCwwLDAsMCwzLjQxLDE3LjExYTEsMSwwLDAsMCwwLDEuNDJsNi4zMyw2LjMzTDIuMjksMzIuMjlhMSwxLDAsMSwwLDEuNDEsMS40MWw3LjQ0LTcuNDQsNi4zMyw2LjMzYTEsMSwwLDAsMCwuNzEuMjloMGEx''@;'; put 'put ''LDEsMCwwLDAsLjcxLS4zLDExLDExLDAsMCwwLDIuODQtMTAuMjRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDE2LjcxYTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy44MmExLDEsMCwwLDEsMS40MS0xLjQx''@;'; put 'put ''TDMzLjcxLDE1QTEsMSwwLDAsMSwzMywxNi43MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjAuNDQsNy41OWwtNi43OSw2Ljc5QTEwLjk0LDEwLjk0LDAsMCwwLDMuNDEsMTcuMjJhMSwxLDAsMCwwLDAsMS40''@;'; put 'put ''Mkw5LjczLDI1LDIuMjksMzIuNDFhMSwxLDAsMSwwLDEuNDEsMS40MWw3LjQ0LTcuNDQsNi4zMyw2LjMzYTEsMSwwLDAsMCwuNzEuMjloMGExLDEsMCwwLDAsLjcxLS4zLDExLDExLDAsMCwwLDIuODQtMTAuMjRsNi43OS02Ljc5WiIvPicpLGwuQ2xyU2hhcGVGaWxlPSgwLGEuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjExLjkyWm0tLjMs''@;'; put 'put ''Mi40OSw2LDUuOWgtNlpNOCwzMFY2SDIwdjhoOFYzMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yMS41OSwxMi4zOVY2LjQ5bDEuMDcsMWE3LjMxLDcuMzEsMCwwLDEsMC0y''@;'; put 'put ''LjgyTDIxLjg5LDRINy44M0ExLjg4LDEuODgsMCwwLDAsNiw1LjkxVjMwLjA5QTEuODgsMS44OCwwLDAsMCw3LjgzLDMySDI4LjE3QTEuODgsMS44OCwwLDAsMCwzMCwzMC4wOVYxMy41YTcuNDUsNy40NSwwLDAsMS0zLjkxLTEuMTFaTTI4LDMwSDhWNkgyMHY4aDhaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTI4LDE1LjRWMzBIOFY2SDIwVjguMjVsMi4yNS0zLjlMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjE1LjRa''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlB''@;'; put 'put ''MS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjExLjkyWk0yMSwxM1Y1Ljg0TDI4LjMsMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9''@;'; put 'put ''Ik0yNy4yNSwxM0gyMVY1Ljg0bDEuNjQsMS42YTcuMjUsNy4yNSwwLDAsMSwwLTIuNzRMMjEuODksNEg3LjgzQTEuODgsMS44OCwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OCwxLjg4LDAsMCwwLDcuODMsMzJIMjguMTdBMS44OCwxLjg4LDAsMCwwLDMwLDMwLjA5VjEzLjVBNy40Nyw3LjQ3LDAs''@;'; put 'put ''MCwxLDI3LjI1LDEzWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMjIuMiwxNS40Yy0yLDAtMy43LTEuNi0zLjctMy42YzAtMC43LDAuMi0xLjMsMC41LTEuOWwzLjItNS41TDIxLjksNEg3LjhDNi44LDQsNiw0LjksNiw1Ljl2MjQuMmMwLDEsMC44LDEuOSwxLjgsMS45''@;'; put 'put ''aDIwLjNjMSwwLDEuOC0wLjksMS44LTEuOVYxNS40SDIyLjJ6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2LjksMS4xTDIxLjEsMTFjLTAuNCwwLjYtMC4y''@;'; put 'put ''LDEuNCwwLjMsMS44YzAuMiwwLjIsMC41LDAuMiwwLjgsMC4yaDExLjVjMC43LDAsMS4zLTAuNSwxLjMtMS4yYzAtMC4zLTAuMS0wLjUtMC4yLTAuOGwtNS43LTkuOWMtMC40LTAuNi0xLjEtMC44LTEuOC0wLjVDMjcuMSwwLjgsMjcsMSwyNi45LDEuMXoiLz4nKSxsLkNsclNoYXBlUGx1cz0o''@;'; put 'put ''MCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDE3SDE5VjZhMSwxLDAsMSwwLTIsMFYxN0g2YTEsMSwwLDAsMC0xLDEsLjkxLjkxLDAsMCwwLDEsLjk0SDE3VjMwYTEsMSwwLDEsMCwyLDBWMTlIMzBhMSwxLDAs''@;'; put 'put ''MCwwLDEtMUExLDEsMCwwLDAsMzAsMTdaIi8+JyksbC5DbHJTaGFwZU1pbnVzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNiwxN0gxMGExLDEsMCwwLDAsMCwySDI2YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxs''@;'; put 'put ''LkNsclNoYXBlTWludXNDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LDE3SDEyYTEsMSwwLDAsMCwwLDJIMjRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptNiwxNy41SDEyYTEuNSwxLjUsMCwwLDEsMC0zSDI0YTEuNSwxLjUsMCwwLDEsMCwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlUGx1c0NpcmNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBk''@;'; put 'put ''PSJNMjYuMTcsMTdIMTlWOS44M2ExLDEsMCwwLDAtMiwwVjE3SDkuODNhMSwxLDAsMCwwLDAsMkgxN3Y3LjE3YTEsMSwwLDAsMCwyLDBWMTloNy4xN2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDE4QTE2''@;'; put 'put ''LDE2LDAsMSwxLDE4LDIsMTYsMTYsMCwwLDEsMzQsMThabS04LjQxLTEuNUgxOS41VjEwLjQxYTEuNSwxLjUsMCwwLDAtMywwVjE2LjVIMTAuNDFhMS41LDEuNSwwLDAsMCwwLDNIMTYuNXY2LjA5YTEuNSwxLjUsMCwwLDAsMywwVjE5LjVoNi4wOWExLjUsMS41LDAsMCwwLDAtM1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxsLkNsclNoYXBlQmFuPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk00''@;'; put 'put ''LDE4QTEzLjkzLDEzLjkzLDAsMCwxLDcuNDMsOC44NUwyNy4xNSwyOC41N0ExNCwxNCwwLDAsMSw0LDE4Wm0yNC41Nyw5LjE1TDguODUsNy40M0ExNCwxNCwwLDAsMSwyOC41NywyNy4xNVoiLz4nKSxsLkNsclNoYXBlVGltZXNDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOS42MSwxOGw0Ljg2LTQuODZhMSwxLDAsMCwwLTEuNDEtMS40MUwxOC4yLDE2LjU0bC00Ljg5LTQuODlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi43OCwxOCwxMiwyMi43MmExLDEsMCwxLDAsMS40MSwxLjQxbDQuNzct''@;'; put 'put ''NC43Nyw0Ljc0LDQuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAs''@;'; put 'put ''MSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptOCwyMi4xYTEuNCwxLjQsMCwwLDEtMiwybC02''@;'; put 'put ''LTZMMTIsMjYuMTJhMS40LDEuNCwwLDEsMS0yLTJMMTYsMTguMDgsOS44MywxMS44NmExLjQsMS40LDAsMSwxLDItMkwxOCwxNi4xbDYuMTctNi4xN2ExLjQsMS40LDAsMSwxLDIsMkwyMCwxOC4wOFoiLz4nKSxsLkNsclNoYXBlVHJhc2g9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzNEg4Ljg2QTIuOTMsMi45MywwLDAsMSw2LDMxVjExLjIzSDhWMzFhLjkzLjkzLDAsMCwwLC44NiwxSDI3LjE0QS45My45MywwLDAsMCwyOCwzMVYxMS4yM2gyVjMxQTIuOTMsMi45MywwLDAsMSwyNy4xNCwz''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjc4LDlINUExLDEsMCwwLDEsNSw3SDMwLjc4YTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjIxIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMjMsNS44NkgyMS4xVjRIMTQuOVY1Ljg2SDEzVjRhMiwyLDAsMCwxLDEuOS0yaDYuMkEyLDIsMCwwLDEsMjMsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNiw5VjMxYTIuOTMsMi45MywwLDAsMCwyLjg2LDNIMjcuMDlBMi45MywyLjkzLDAsMCwwLDMwLDMxVjlabTksMjBIMTNWMTRoMlptOCwwSDIxVjE0aDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjczLDVIMjNWNEEyLDIsMCwwLDAsMjEsMmgtNi4yQTIsMiwwLDAsMCwxMyw0VjVINUExLDEsMCwxLDAsNSw3SDMwLjczYTEsMSwwLDAsMCwwLTJaIi8+JyksbC5DbHJTaGFwZVRhZz0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xl''@;'; put 'put ''IGN4PSIxMC41MiIgY3k9IjEwLjUyIiByPSIxLjQzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIsMCwwLDAsNCw2bDAsOS45MmEy''@;'; put 'put ''LDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNMjAuNjIsMzAuNTIsNiwxNS45MVY2aDkuOTJsMTQuNiwxNC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGN4PSIxMC41MiIgY3k9IjEwLjUyIiByPSIxLjQzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjJsLTMuOC0zLjhIMjUuMzFsNS4yMiw1''@;'; put 'put ''LjIyLTkuOSw5LjlMNiwxNS45MVY2aDkuOTJsMy40MSwzLjQxLDEtMS43OC0zLTNBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4y''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFM''@;'; put 'put ''MjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC41MiIgY3k9IjEwLjUyIiByPSIxLjQz''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS45MywxOS4yLDE3LjMzLDQuNkEyLDIsMCwwLDAsMTUuOTIsNEw2LDRBMiwyLDAsMCwwLDQsNmwwLDkuOTJhMiwyLDAsMCwwLC41OSwx''@;'; put 'put ''LjQxbDE0LjYsMTQuNmEyLDIsMCwwLDAsMi44MywwbDkuOS05LjlBMiwyLDAsMCwwLDMxLjkzLDE5LjJaTTIwLjYyLDMwLjUyLDYsMTUuOTFWNmg5LjkybDE0LjYsMTQuNjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuOTMsMTkuMiwxNy4zMyw0LjZBMiwyLDAsMCww''@;'; put 'put ''LDE1LjkyLDRMNiw0QTIsMiwwLDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45QTIsMiwwLDAsMCwzMS45MywxOS4yWk05LjY1LDExLjMxYTEuNjYsMS42NiwwLDEsMSwxLjY2LTEuNjZBMS42NiwxLjY2LDAsMCwxLDku''@;'; put 'put ''NjUsMTEuMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNDYsMTUuNzNIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDEwLjIybDEuNDMtMi40N0wxNy4zMyw0LjZBMiwyLDAsMCwwLDE1LjkyLDRMNiw0QTIsMiww''@;'; put 'put ''LDAsMCw0LDZsMCw5LjkyYTIsMiwwLDAsMCwuNTksMS40MWwxNC42LDE0LjZhMiwyLDAsMCwwLDIuODMsMGw5LjktOS45YTIsMiwwLDAsMCwwLTIuODNaTTkuNjUsMTEuMzFhMS42NiwxLjY2LDAsMSwxLDEuNjYtMS42NkExLjY2LDEuNjYsMCwwLDEsOS42NSwxMS4zMVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjQ3bC01LjcyLDkuOTFhMS4yOCwxLjI4LDAsMCwwLDEuMSwxLjkxSDMzLjY4YTEuMjgsMS4yOCwwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjQ3QTEuMjgs''@;'; put 'put ''MS4yOCwwLDAsMCwyNi44NSwxLjQ3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjkzLDE5LjIsMTcuMzMsNC42QTIsMiwwLDAsMCwxNS45Miw0TDYsNEEyLDIs''@;'; put 'put ''MCwwLDAsNCw2bDAsOS45MmEyLDIsMCwwLDAsLjU5LDEuNDFsMTQuNiwxNC42YTIsMiwwLDAsMCwyLjgzLDBsOS45LTkuOUEyLDIsMCwwLDAsMzEuOTMsMTkuMlpNOS42NSwxMS4zMWExLjY2LDEuNjYsMCwxLDEsMS42Ni0xLjY2QTEuNjYsMS42NiwwLDAsMSw5LjY1LDExLjMxWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNi4zMyIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4n''@;'; put 'put ''KSxsLkNsclNoYXBlVGFncz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEsNUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMs''@;'; put 'put ''MCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4zMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAsMCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFB''@;'; put 'put ''MS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk0xNy4yNiwyOS42OSwzLjY5LDE2LjE1VjdoOS4xTDI2LjM3LDIwLjQ4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4z''@;'; put 'put ''MyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuNzgsMTkuMTcsMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5''@;'; put 'put ''LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwyNy43OCwxOS4xN1pNMTcuMjYsMjkuNjksMy42OSwxNi4xNVY3aDkuMUwyNi4zNywyMC40OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5''@;'; put 'put ''LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjcuODEiIGN5PSIxMS4xNCIgcj0iMS4zMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywyNCwxNS40SDIyLjIzQTMuNjUsMy42NSwwLDAsMSwyMSwxNS4xOWw1LjMzLDUuMjktOS4xMSw5LjIxTDMuNjksMTYuMTVWN2g5LjFsNiw1Ljk0YTMuNjgsMy42OCwwLDAsMSwuMS0yLjY5TDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIu''@;'; put 'put ''ODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTkuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjgzLDYuOCwxOS41OCw1LjU1QTEuOTIsMS45MiwwLDAsMCwxOC4yMSw1SDE2LjEyTDE5Ljc5LDguNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMjkuNDMsMTUuNEgyNi42NWw1LjEsNUwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTYsMTkuMTMsMTkuNTgsNS41NUExLjkyLDEuOTIsMCwwLDAsMTguMjEs''@;'; put 'put ''NUgxNi4xMkwzMS43NSwyMC40NSwyMS4yMiwzMS4wN2ExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMWExLjkzLDEuOTMsMCwwLDAsMC0yLjczWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3Ljc4LDE5LjE3''@;'; put 'put ''LDE0LjIsNS41OEExLjkyLDEuOTIsMCwwLDAsMTIuODMsNUgzLjYxQTEuOTMsMS45MywwLDAsMCwxLjY4LDYuOTN2OS4yMmExLjkyLDEuOTIsMCwwLDAsLjU3LDEuMzZMMTUuODQsMzEuMWExLjkzLDEuOTMsMCwwLDAsMi43MywwbDkuMjEtOS4yMUExLjkzLDEuOTMsMCwwLDAsMjcuNzgsMTku''@;'; put 'put ''MTdaTTYuNjcsMTEuNzJBMS43MywxLjczLDAsMSwxLDguNCwxMCwxLjczLDEuNzMsMCwwLDEsNi42NywxMS43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywxNC4yLDUuNThBMS45MiwxLjkyLDAs''@;'; put 'put ''MCwwLDEyLjgzLDVIMy42MUExLjkzLDEuOTMsMCwwLDAsMS42OCw2LjkzdjkuMjJhMS45MiwxLjkyLDAsMCwwLC41NywxLjM2TDE1Ljg0LDMxLjFhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFBMS45MywxLjkzLDAsMCwwLDI3Ljc4LDE5LjE3Wk02LjY3LDExLjcyQTEuNzMsMS43''@;'; put 'put ''MywwLDEsMSw4LjQsMTAsMS43MywxLjczLDAsMCwxLDYuNjcsMTEuNzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4''@;'; put 'put ''LjIxLDVIMTYuMTJMMzEuNzUsMjAuNDUsMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIuNzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8''@;'; put 'put ''Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAuODMsNi44LDE5LjU4LDUuNTVBMS45MiwxLjkyLDAsMCwwLDE4LjIxLDVI''@;'; put 'put ''MTYuMTJMMTkuNzksOC42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjE2LDE5LjEzLDI5LjQzLDE1LjRIMjYuNjVsNS4xLDVMMjEuMjIsMzEuMDdhMS45MywxLjkzLDAsMCwwLDIu''@;'; put 'put ''NzMsMGw5LjIxLTkuMjFhMS45MywxLjkzLDAsMCwwLDAtMi43M1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy43OCwxOS4xNywyNCwxNS40SDIyLjIzYTMuNjcsMy42NywwLDAsMS0z''@;'; put 'put ''LjM2LTUuMTVMMTQuMiw1LjU4QTEuOTIsMS45MiwwLDAsMCwxMi44Myw1SDMuNjFBMS45MywxLjkzLDAsMCwwLDEuNjgsNi45M3Y5LjIyYTEuOTIsMS45MiwwLDAsMCwuNTcsMS4zNkwxNS44NCwzMS4xYTEuOTMsMS45MywwLDAsMCwyLjczLDBsOS4yMS05LjIxQTEuOTMsMS45MywwLDAsMCwy''@;'; put 'put ''Ny43OCwxOS4xN1pNNi42NywxMS43MkExLjczLDEuNzMsMCwxLDEsOC40LDEwLDEuNzMsMS43MywwLDAsMSw2LjY3LDExLjcyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEu''@;'; put 'put ''MTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1hbGVydCIvPicpLGwuQ2xyU2hhcGVIaXN0b3J5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCw5LjgzYTEsMSwwLDAsMC0xLDF2OC43Mmw1LjksNEExLDEsMCwwLDAsMjQsMjEuODhsLTUtMy4zOVYxMC44M0ExLDEsMCwwLDAsMTgsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNi4wOSwxNi4wOSwwLDAsMCw0LDEwLjI2VjUuMmExLDEsMCwwLDAtMiwwVjE0aDguOGExLDEsMCwwLDAsMC0ySDUuMzVBMTQsMTQsMCwxLDEsOC41OCwyOC4zNWExLDEsMCwwLDAtMS4zNSwx''@;'; put 'put ''LjQ4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLGwuQ2xyU2hhcGVDbG9jaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0''@;'; put 'put ''LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxOC40VjEwLjc1YTEsMSwwLDAsMC0yLDB2OC43Mmw1LjksNGExLDEsMCwxLDAsMS4xMS0xLjY2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE3Ljk0QTkuOTQsOS45NCwwLDAsMSwyMy40MSw5LjU5bC44NS0xLjM2YTExLjU1LDExLjU1LDAsMSwwLTguNTMsMjFMMTYsMjcuN0ExMCwxMCwwLDAsMSw4LDE3Ljk0''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC45MiwxMC43NWExLDEsMCwwLDAtMiwwdjguNzJsNS45LDRhMSwxLDAsMSwwLDEuMTEtMS42NmwtNS0zLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40NCw3LjQ0LDAsMCwxLTEuOTEuNTgsMTQuMDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQ0LDcuNDQsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45''@;'; put 'put ''Myw5LjkzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNi4zOGExMS41NiwxMS41NiwwLDAsMC0yLjI3LDIyLjg5TDE2LDI3LjdhMTAsMTAsMCwxLDEsNy4zOS0xOC4xaDBhNy40''@;'; put 'put ''NSw3LjQ1LDAsMCwxLS43OC0yLjIzQTExLjQ1LDExLjQ1LDAsMCwwLDE4LDYuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguOTIsMTAuNzVhMSwxLDAsMCwwLTIsMHY4LjcybDUuOSw0YTEsMSwwLDEsMCwxLjExLTEuNjZsLTUtMy4zOVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzcsMTUuMzloLTJBMTQsMTQsMCwxLDEsMjIuMDksNC42MWwxLTEuNzZBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMzMuNzcsMTUuMzlaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDhhOS44MSw5LjgxLDAsMCwxLDIsLjIzbC44NS0xLjQ2YTExLjU1LDExLjU1LDAsMSwwLTUuMTMsMjIuNTJMMTYsMjcuN0ExMCwxMCwwLDAs''@;'; put 'put ''MSwxOCw4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwx''@;'; put 'put ''OCwxNiwxNiwwLDAsMCwxOCwyWm02LjIsMjEuMThhMSwxLDAsMCwxLTEuMzkuMjhsLTUuOS00VjEwLjc1YTEsMSwwLDAsMSwyLDBWMTguNGw1LDMuMzlBMSwxLDAsMCwxLDI0LjIsMjMuMThaTTIzLjg1LDguMjNhMTEuMzksMTEuMzksMCwxLDAtOC41NCwyMC44M0wxNSwzMC42M2ExMywxMyww''@;'; put 'put ''LDEsMSw5LjctMjMuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFBNy40OCw3LjQ4LDAsMCwxLDIyLjY4LDcuNjMsMTEuMjQsMTEuMjQsMCwwLDAsMTgsNi42YTExLjM5LDExLjM5LDAsMCwwLTIu''@;'; put 'put ''NjksMjIuNDdMMTUsMzAuNjNBMTMsMTMsMCwwLDEsMTgsNWExMi44MSwxMi44MSwwLDAsMSw0LjUxLjgyLDcuNDYsNy40NiwwLDAsMSwuNjgtMi45NCwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaTTI0LjIsMjMuMThhMSwxLDAsMCwxLTEuMzkuMjhsLTUuOS00VjEwLjc1YTEsMSwwLDAs''@;'; put 'put ''MSwyLDBWMTguNGw1LDMuMzlBMSwxLDAsMCwxLDI0LjIsMjMuMThaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc3LDE1LjM5SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NmMwLS4wOS0uMDktLjE4LS4xMy0uMjdWMTguNGw1LDMuMzlhMSwxLDAsMCwxLTEuMTEsMS42Nmwt''@;'; put 'put ''NS45LTRWMTAuNzVhMSwxLDAsMCwxLDEuOTEtLjQxQTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5TDIwLjc0LDdBMTEuMTksMTEuMTksMCwwLDAsMTgsNi42YTExLjM5LDExLjM5LDAsMCwwLTIuNjksMjIuNDdMMTUsMzAuNjNBMTMsMTMsMCwwLDEsMTgsNWExMi44LDEyLjgsMCwwLDEsMy41Ny41''@;'; put 'put ''MWwxLjUzLTIuNjZBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMzMuNzcsMTUuMzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+JyksbC5D''@;'; put 'put ''bHJTaGFwZUFsYXJtQ2xvY2s9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40NywzLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40LDQuMDlBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxTDI4''@;'; put 'put ''LDI3Ljc4QTE0LDE0LDAsMCwwLDE2LjQsNC4wOVpNMTkuNTgsMjkuOUExMiwxMiwwLDEsMSwyOS45MiwxOS41NiwxMiwxMiwwLDAsMSwxOS41OCwyOS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC45Miwy''@;'; put 'put ''MC4zNGwtNi4wNi0zVjkuNWEuOS45LDAsMCwwLTEuOCwwdjlMMjQuMTIsMjJhLjkuOSwwLDEsMCwuNzktMS42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTEuNDIsMy40M2E1Ljc3LDUuNzcsMCwwLDAtNy42''@;'; put 'put ''NC40MSw1LjcyLDUuNzIsMCwwLDAtLjM4LDcuNjRBMTYuMDgsMTYuMDgsMCwwLDEsMTEuNDIsMy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODYsOS41YS45LjksMCww''@;'; put 'put ''LDAtMS44LDB2OUwyNC4xMiwyMmEuOS45LDAsMSwwLC43OS0xLjYybC02LjA2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4QTEzLjg4LDEzLjg4LDAsMCwwLDMx''@;'; put 'put ''Ljc3LDE1LjRoLTJhMTIuMDcsMTIuMDcsMCwxLDEtOC42Ny05bDEtMS44YTE0LDE0LDAsMCwwLTE0LDIzLjI3TDUuNTYsMzAuNDNBMSwxLDAsMSwwLDcsMzEuODRsMi42Ni0yLjY2YTEzLjksMTMuOSwwLDAsMCwxNi44OC0uMDhsMi43NCwyLjc0YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwx''@;'; put 'put ''LjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43NywwLDAsMC03LjY0LjQx''@;'; put 'put ''LDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4QTEzLjg4LDEzLjg4LDAsMCww''@;'; put 'put ''LDMxLjc3LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2TDE5LDEzLjR2My43OEwyNSwyMC4xYTEsMSwwLDEsMS0uODcsMS44TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMFYxMEwxOSw5Ljg5bDMtNS4yOGExNCwxNCwwLDAsMC0xNCwyMy4yN0w1LjU2LDMwLjQzQTEsMSww''@;'; put 'put ''LDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2''@;'; put 'put ''Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4YTEzLjg5LDEzLjg5LDAsMCwwLDMuMjEtMTQuMzlBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjExLTEuMjFBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1LjU2LDMw''@;'; put 'put ''LjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxWm0tMi41Mi02LjM1YTEsMSwwLDAsMS0xLjMzLjQ3TDE3LDE4LjQ0VjkuNjlhMSwxLDAsMCwxLDIsMHY3LjVMMjUsMjAuMUExLDEsMCww''@;'; put 'put ''LDEsMjUuNDksMjEuNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjQyLDMuNDNhNS43Nyw1Ljc3LDAsMCwwLTcuNjQuNDEsNS43Miw1LjcyLDAsMCwwLS4zOCw3LjY0QTE2LjA4LDE2LjA4LDAsMCwxLDExLjQyLDMuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC44Niw5LjVhLjkuOSwwLDAsMC0xLjgsMHY5TDI0LjEyLDIyYS45LjksMCwxLDAsLjc5LTEuNjJsLTYuMDYtM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDI3Ljc4YTEzLjg5LDEzLjg5LDAsMCwwLDMuMjEtMTQuMzksNyw3LDAsMCwxLTIuMTEuMDVBMTIsMTIsMCwxLDEsMjIuNTYsNi45LDcuNTQsNy41NCwwLDAsMSwyMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xMS0xLjIx''@;'; put 'put ''QTE0LDE0LDAsMCwwLDguMTEsMjcuODhMNS41NiwzMC40M0ExLDEsMCwxLDAsNywzMS44NGwyLjY2LTIuNjZhMTMuOSwxMy45LDAsMCwwLDE2Ljg4LS4wOGwyLjc0LDIuNzRhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40NywzLjg0''@;'; put 'put ''YTUuNzgsNS43OCwwLDAsMC03LjM3LS42MywxNi4wOCwxNi4wOCwwLDAsMSw4LjIsNy42NUE1LjczLDUuNzMsMCwwLDAsMzEuNDcsMy44NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS40MiwzLjQzYTUuNzcsNS43''@;'; put 'put ''NywwLDAsMC03LjY0LjQxLDUuNzIsNS43MiwwLDAsMC0uMzgsNy42NEExNi4wOCwxNi4wOCwwLDAsMSwxMS40MiwzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDRBMTQsMTQsMCwwLDAsOC4xMSwyNy44OEw1''@;'; put 'put ''LjU2LDMwLjQzQTEsMSwwLDEsMCw3LDMxLjg0bDIuNjYtMi42NmExMy45LDEzLjksMCwwLDAsMTYuODgtLjA4bDIuNzQsMi43NGExLDEsMCwwLDAsMS40MS0xLjQxTDI4LDI3Ljc4QTE0LDE0LDAsMCwwLDE4LDRabTcuNDcsMTcuNDNhMSwxLDAsMCwxLTEuMzMuNDdMMTcsMTguNDRWOS42OWEx''@;'; put 'put ''LDEsMCwwLDEsMiwwdjcuNUwyNSwyMC4xQTEsMSwwLDAsMSwyNS40OSwyMS40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxsLkNsclNoYXBlQ2lyY2xlQXJyb3c9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgs''@;'; put 'put ''MTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDgsOC4yNmwtNy42MSw3LjYxYTEsMSwwLDEsMCwxLjQx''@;'; put 'put ''LDEuNDFMMTcsMTIuMTh2MTVhMSwxLDAsMCwwLDIsMFYxMmw1LjI4LDUuMjhhMSwxLDAsMSwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiww''@;'; put 'put ''LDAsMCwxOCwyWm04LDE1LjU3YTEuNDMsMS40MywwLDAsMS0yLDBMMTkuNCwxM1YyNy4xNGExLjQsMS40LDAsMCwxLTIuOCwwdi0xNGwtNC40Myw0LjQzYTEuNCwxLjQsMCwwLDEtMi0yTDE4LjA4LDcuNywyNiwxNS41OUExLjQsMS40LDAsMCwxLDI2LDE3LjU3WiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGwuQ2xyU2hhcGVDaGlsZEFycm93PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC44MiwxNS44YTEsMSwwLDAsMC0xLjQxLDAsMSwxLDAsMCwwLDAsMS40MUwyNy4yLDIxSDlWMy43OGExLDEsMCwxLDAtMiwwVjIxYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjcuMTVsLTMuNzQsMy43NWExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVDb3B5PSgwLGEuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yOS41LDdoLTE5QTEuNSwxLjUsMCwwLDAsOSw4LjV2MjRBMS41LDEuNSwwLDAsMCwxMC41LDM0aDE5QTEuNSwxLjUsMCwwLDAsMzEsMzIuNVY4LjVBMS41LDEuNSwwLDAsMCwyOS41LDdaTTI5LDMySDExVjlIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMuNUExLjUsMS41LDAsMCwwLDI0LjUsMkg1LjVBMS41LDEuNSwwLDAsMCw0LDMuNXYyNEExLjUsMS41LDAsMCwwLDUuNSwyOUg2VjRIMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI3LDMuNTZBMS41NiwxLjU2LDAsMCwwLDI1LjQzLDJINS41N0ExLjU2LDEuNTYsMCwwLDAsNCwzLjU2VjI4LjQ0QTEuNTYsMS41NiwwLDAsMCw1LjU3LDMwaC41MlY0LjA3SDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iNiIgd2lkdGg9IjIzIiBoZWlnaHQ9IjI4IiByeD0iMS41IiByeT0iMS41IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+JyksbC5DbHJTaGFwZUhlbHA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYs''@;'; put 'put ''MTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMjksOC45MmE3LjM4LDcuMzgs''@;'; put 'put ''MCwwLDAtNS43MiwyLjU3LDEsMSwwLDAsMC0uMzIuNzEuOTIuOTIsMCwwLDAsLjk1LjkyLDEuMDgsMS4wOCwwLDAsMCwuNzEtLjI5LDUuNyw1LjcsMCwwLDEsNC4zMy0yYzIuMzYsMCwzLjgzLDEuNTIsMy44MywzLjQxdi4wNWMwLDIuMjEtMS43NiwzLjQ0LTQuNTQsMy42NWEuOC44LDAsMCww''@;'; put 'put ''LS43Ni45MnMwLDIuMzIsMCwyLjc1YTEsMSwwLDAsMCwxLC45aC4xMWExLDEsMCwwLDAsLjktMVYxOS40NWMzLS40Miw1LjQzLTIsNS40My01LjI4di0uMDVDMjQuMTgsMTEuMTIsMjEuODQsOC45MiwxOC4yOSw4LjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljc4IiBjeT0iMjYuMiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC4xOCwxNC4xN3YtLjA1YzAtMy0yLjM0LTUuMi01Ljg4LTUuMmE3''@;'; put 'put ''LjM4LDcuMzgsMCwwLDAtNS43MiwyLjU3LDEsMSwwLDAsMC0uMzIuNzEuOTIuOTIsMCwwLDAsLjk1LjkyLDEuMDgsMS4wOCwwLDAsMCwuNzEtLjI5LDUuNyw1LjcsMCwwLDEsNC4zMy0yYzIuMzYsMCwzLjgzLDEuNTIsMy44MywzLjQxdi4wNWMwLDIuMjEtMS43NiwzLjQ0LTQuNTQsMy42NWEu''@;'; put 'put ''OC44LDAsMCwwLS43Ni45MnMwLDIuMzIsMCwyLjc1YTEsMSwwLDAsMCwxLC45aC4xMWExLDEsMCwwLDAsLjktMVYxOS40NUMyMS43NSwxOSwyNC4xOCwxNy40NSwyNC4xOCwxNC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcuNzgiIGN5PSIyNi4yIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQzLDcuNDMsMCwwLDEt''@;'; put 'put ''MS45MS41OCwxNC4wNSwxNC4wNSwwLDEsMS04LjYtOC42LDcuNDQsNy40NCwwLDAsMSwuNTgtMS45MSwxNi4wNiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40OSw3LjQ5LDAsMCwxLTkuOTMtOS45MywxNi4w''@;'; put 'put ''NiwxNi4wNiwwLDEsMCw5LjkzLDkuOTNabS0xNS4zNCwxNWExLjY1LDEuNjUsMCwxLDEsMS42NS0xLjY1QTEuNjUsMS42NSwwLDAsMSwxNy43OCwyNy44NVptMS4zNy04LjA2djEuNzJhMS4zNywxLjM3LDAsMCwxLTEuMywxLjM2aC0uMTFhMS4zNCwxLjM0LDAsMCwxLTEuMzktMS4zYzAtLjQ0''@;'; put 'put ''LDAtMi43NiwwLTIuNzZhMS4xOSwxLjE5LDAsMCwxLDEuMTItMS4zMWMxLjU3LS4xMiw0LjE4LS43LDQuMTgtMy4yNSwwLTEuODMtMS40MS0zLjA3LTMuNDMtMy4wN2E1LjMxLDUuMzEsMCwwLDAtNCwxLjkyLDEuMzYsMS4zNiwwLDAsMS0yLjM1LS45LDEuNDMsMS40MywwLDAsMSwuNDMtMSw3''@;'; put 'put ''Ljc3LDcuNzcsMCwwLDEsNi0yLjY5YzMuNywwLDYuMjgsMi4zLDYuMjgsNS42QzI0LjU4LDE3LjE2LDIyLjYxLDE5LjIsMTkuMTUsMTkuNzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0i''@;'; put 'put ''MzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptLS4yMiwyNS44NWExLjY1''@;'; put 'put ''LDEuNjUsMCwxLDEsMS42NS0xLjY1QTEuNjUsMS42NSwwLDAsMSwxNy43OCwyNy44NVptMS4zNy04LjA2djEuNzJhMS4zNywxLjM3LDAsMCwxLTEuMywxLjM2aC0uMTFhMS4zNCwxLjM0LDAsMCwxLTEuMzktMS4zYzAtLjQ0LDAtMi43NiwwLTIuNzZhMS4xOSwxLjE5LDAsMCwxLDEuMTItMS4z''@;'; put 'put ''MWMxLjU3LS4xMiw0LjE4LS43LDQuMTgtMy4yNSwwLTEuODMtMS40MS0zLjA3LTMuNDMtMy4wN2E1LjMxLDUuMzEsMCwwLDAtNCwxLjkyLDEuMzYsMS4zNiwwLDAsMS0yLjM1LS45LDEuNDMsMS40MywwLDAsMSwuNDMtMSw3Ljc3LDcuNzcsMCwwLDEsNi0yLjY5YzMuNywwLDYuMjgsMi4zLDYu''@;'; put 'put ''MjgsNS42QzI0LjU4LDE3LjE2LDIyLjYxLDE5LjIsMTkuMTUsMTkuNzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksbC5DbHJTaGFwZUxvZ2luPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw0SDEyYTIsMiwwLDAsMC0yLDJIMjhWMzBIMTJWMjAu''@;'; put 'put ''MkgxMFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LjEyLDE4LjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFsNS43OS01''@;'; put 'put ''Ljc5TDE2LjU0LDguMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxOC41LDEzSDRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxSDE4LjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw0SDEyYTIsMiwwLDAs''@;'; put 'put ''MC0yLDJ2N2g4LjVMMTUuMTIsOS43MWExLDEsMCwwLDEsMS40MS0xLjQxbDUuNzksNS43OS01Ljc5LDUuNzlhMSwxLDAsMCwxLTEuNDEtMS40MUwxOC41LDE1SDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCwxM0g0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlTG9nb3V0PSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik03LDZIMjN2OS44aDJWNmEyLDIsMCwwLDAtMi0ySDdBMiwyLDAsMCwwLDUsNlYzMGEyLDIsMCwwLDAsMiwySDIzYTIsMiwwLDAsMCwyLTJIN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgu''@;'; put 'put ''MTYsMTcuMjhhMSwxLDAsMCwwLTEuNDEsMS40MUwzMC4xMywyMkgxNS42M2ExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoMTQuNWwtMy4zOCwzLjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjMuMDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTIzLDRIN0EyLDIsMCwwLDAsNSw2VjMwYTIsMiwwLDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMlYyNEgxNS42M2ExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLTFIMjVWNkEyLDIsMCwwLDAsMjMsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIySDI1djJoNS4xM2wtMy4zOCwzLjQ2YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjMuMDdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''Ii8+JyksbC5DbHJTaGFwZVByaW50ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDlIMjdWNUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVYxM2EyLDIsMCwwLDEsMi0ySDI5YTIsMiwwLDAsMSwyLDJ2OUgyOS4wOFYyNEgzM1YxM0E0LDQsMCwwLDAsMjksOVpN''@;'; put 'put ''MjUsOUgxMVY3SDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxOEg4YTEsMSwwLDAsMCwwLDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxMy4wNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxOEg4YTEs''@;'; put 'put ''MSwwLDAsMCwwLDJIOVYzMkgyN1YyMGgxYTEsMSwwLDAsMCwwLTJaTTI1LDMwSDExVjIwSDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzEgMTUuNCAzMSAyMi4w''@;'; put 'put ''OSAyOS4wOCAyMi4wOSAyOS4wOCAyNCAzMyAyNCAzMyAxNS40IDMxIDE1LjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNSwxM2EyLDIsMCwwLDEsMi0ySDE4LjY0QTMuNjUsMy42''@;'; put 'put ''NSwwLDAsMSwxOSw5Ljg5TDE5LjU0LDlIMTFWN2g5LjcxbDEuMTMtMkg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDYuOTJWMjIuMDlINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDE4SDhhMSwxLDAsMCwwLDAsMkg5VjMySDI3VjIwaDFhMSwxLDAsMCwwLDAtMlpNMjUsMzBIMTFWMjBIMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxMy4wNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsMTIuODhhNy40''@;'; put 'put ''NSw3LjQ1LDAsMCwxLTIsLjU1djguNjZIMjkuMDhWMjRIMzNWMTNDMzMsMTMsMzMsMTIuOTMsMzMsMTIuODhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEzYTIsMiwwLDAsMSwy''@;'; put 'put ''LTJIMjQuNDJhNy41LDcuNSwwLDAsMS0xLjI3LTJIMTFWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41NCw3LjU0LDAsMCwxLC4wNy0xSDlWOUg3YTQsNCwwLDAsMC00LDRWMjRINi45MlYyMi4wOUg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDlIMjdW''@;'; put 'put ''NUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjEzQTQsNCwwLDAsMCwyOSw5Wk0yNSwyNHY2SDExVjE5SDI1Wk0yNSw5SDExVjdIMjVabTQsNkgyN1YxM2gyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTIyLjIzLDE1LjRBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTQsOUgxMVY3aDkuNzFsMS4xMy0ySDlWOUg3YTQsNCwwLDAsMC00LDRWMjRIOXY4SDI3VjI0aDZWMTUuNFpNMjUsMjR2NkgxMVYxOUgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxMi44OGE3LjMsNy4zLDAsMCwxLTQsLjU1VjE1SDI3VjEzaC4zMmE3LjUyLDcuNTIsMCwwLDEtNC4xOC00SDExVjdIMjIuNTdhNy41Miw3''@;'; put 'put ''LjUyLDAsMCwxLS4wNy0xLDcuNTQsNy41NCwwLDAsMSwuMDctMUg5VjlIN2E0LDQsMCwwLDAtNCw0VjI0SDl2OEgyN1YyNGg2VjEzQzMzLDEzLDMzLDEyLjkzLDMzLDEyLjg4Wk0yNSwyNHY2SDExVjE5SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0x''@;'; put 'put ''LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxsLkNsclNoYXBlV29ybGQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTI2LjU0LDE4YTE5LjM4LDE5LjM4LDAsMCwwLS40My00aDMuNmExMi4zLDEyLjMsMCwwLDAtLjY3LTEuNkgyNS42OUExOS43MiwxOS43MiwwLDAsMCwyMi44LDYuNTNhMTIuMywxMi4zLDAsMCwwLTIuNTUtLjc2LDE3LjgzLDE3LjgzLDAsMCwxLDMuODksNi41OUgxOC43NVY1LjZjLS4y''@;'; put 'put ''NSwwLS41MSwwLS43Nywwcy0uNDksMC0uNzMsMHY2Ljc3SDExLjg2YTE3LjgzLDE3LjgzLDAsMCwxLDMuOS02LjYsMTIuMjgsMTIuMjgsMCwwLDAtMi41NC43NSwxOS43MiwxOS43MiwwLDAsMC0yLjkxLDUuODVINi45NEExMi4zLDEyLjMsMCwwLDAsNi4yNiwxNEg5Ljg5YTE5LjM4LDE5LjM4''@;'; put 'put ''LDAsMCwwLS40Myw0LDE5LjY3LDE5LjY3LDAsMCwwLC41LDQuMzdINi40MkExMi4zNCwxMi4zNCwwLDAsMCw3LjE2LDI0aDMuMjNhMTkuMzIsMTkuMzIsMCwwLDAsMi42OSw1LjM2LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjEuNzlBMTcuOTEsMTcuOTEsMCwwLDEsMTIsMjRoNS4yNnY2LjM0Yy4y''@;'; put 'put ''NCwwLC40OSwwLC43Mywwcy41MSwwLC43NywwVjI0SDI0YTE3LjksMTcuOSwwLDAsMS0zLjcsNi4xNSwxMi4yOCwxMi4yOCwwLDAsMCwyLjYyLS44MUExOS4zMiwxOS4zMiwwLDAsMCwyNS42MSwyNGgzLjJhMTIuMzQsMTIuMzQsMCwwLDAsLjc0LTEuNkgyNkExOS42NywxOS42NywwLDAsMCwy''@;'; put 'put ''Ni41NCwxOFptLTkuMjksNC4zN0gxMS41MWExNy42OSwxNy42OSwwLDAsMS0uMDktOC40aDUuODNabTcuMjQsMEgxOC43NVYxNGg1LjgzQTE4LjIxLDE4LjIxLDAsMCwxLDI1LDE4LDE4LjEyLDE4LjEyLDAsMCwxLDI0LjQ5LDIyLjM3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjEyLDEyLjgxYTcuNDQsNy40NCwwLDAsMS0xLjkxLjU4LDE0LjA1LDE0LjA1LDAsMSwxLTguNi04LjYsNy40Myw3LjQzLDAsMCwxLC41OC0xLjkxLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLjI1LDUuNzdhMTcuODMsMTcuODMsMCwwLDEsMy44OSw2LjU5SDE4Ljc1VjUuNmMtLjI1LDAtLjUxLDAtLjc3LDBzLS40OSwwLS43MywwdjYuNzdIMTEuODZhMTcuODMsMTcuODMs''@;'; put 'put ''MCwwLDEsMy45LTYuNiwxMi4yOCwxMi4yOCwwLDAsMC0yLjU0Ljc1LDE5LjcyLDE5LjcyLDAsMCwwLTIuOTEsNS44NUg2Ljk0QTEyLjMsMTIuMywwLDAsMCw2LjI2LDE0SDkuODlhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLDQsMTkuNjcsMTkuNjcsMCwwLDAsLjUsNC4zN0g2LjQyQTEyLjM0LDEy''@;'; put 'put ''LjM0LDAsMCwwLDcuMTYsMjRoMy4yM2ExOS4zMiwxOS4zMiwwLDAsMCwyLjY5LDUuMzYsMTIuMjgsMTIuMjgsMCwwLDAsMi42MS43OUExNy45MSwxNy45MSwwLDAsMSwxMiwyNGg1LjI2djYuMzRjLjI0LDAsLjQ5LDAsLjczLDBzLjUxLDAsLjc3LDBWMjRIMjRhMTcuOSwxNy45LDAsMCwxLTMu''@;'; put 'put ''Nyw2LjE1LDEyLjI4LDEyLjI4LDAsMCwwLDIuNjItLjgxQTE5LjMyLDE5LjMyLDAsMCwwLDI1LjYxLDI0aDMuMmExMi4zNCwxMi4zNCwwLDAsMCwuNzQtMS42SDI2YTE5LjY3LDE5LjY3LDAsMCwwLC41LTQuMzcsMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRoMy42Yy0uMDYtLjE3LS4xMi0uMzMt''@;'; put 'put ''LjE5LS40OWE3LjQ1LDcuNDUsMCwwLDEtMy40Ny0xLjExaC0uMzZjMC0uMTEtLjA4LS4yMS0uMTEtLjMyYTcuNDgsNy40OCwwLDAsMS0zLjA2LTUuNjJBMTIuNDEsMTIuNDEsMCwwLDAsMjAuMjUsNS43N1ptLTMsMTYuNTlIMTEuNTFhMTcuNjksMTcuNjksMCwwLDEtLjA5LTguNGg1LjgzWk0y''@;'; put 'put ''NSwxOGExOC4xMiwxOC4xMiwwLDAsMS0uNTUsNC4zN0gxOC43NVYxNGg1LjgzQTE4LjIxLDE4LjIxLDAsMCwxLDI1LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9''@;'; put 'put ''IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjA1LDE4YTIwLjQ2LDIwLjQ2LDAsMCwwLC42Miw0LjkzaDYuNDhWMTMuNDVIMTAuNThBMjAuNTUs''@;'; put 'put ''MjAuNTUsMCwwLDAsMTAuMDUsMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguODUsMTMuNDV2OS40OGg2LjQ4QTIwLjQ2LDIwLjQ2LDAsMCwwLDI2LDE4YTIwLjU1LDIwLjU1LDAsMCwwLS41Mi00LjU1WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMzAuMjIsMjQuNzFIMjYuNmEyMS44LDIxLjgsMCwwLDEtMyw2LDEzLjg2LDEzLjg2LDAsMCwxLTMsLjkyLDIw''@;'; put 'put ''LjIxLDIwLjIxLDAsMCwwLDQuMTgtNi45NEgxOC44NnY3LjE1Yy0uMjksMC0uNTcsMC0uODYsMHMtLjU1LDAtLjgzLDBWMjQuNzFIMTEuMjJhMjAuMjEsMjAuMjEsMCwwLDAsNC4xOCw2Ljk1LDEzLjg2LDEzLjg2LDAsMCwxLTIuOTQtLjksMjEuOCwyMS44LDAsMCwxLTMtNi4wNUg1Ljc4YTEz''@;'; put 'put ''Ljk0LDEzLjk0LDAsMCwxLS44My0xLjgxaDRBMjIuMiwyMi4yLDAsMCwxLDguMzcsMThhMjEuODgsMjEuODgsMCwwLDEsLjQ4LTQuNTVINC43NmExMy44OCwxMy44OCwwLDAsMSwuNzYtMS44MUg5LjMzQTIyLjI2LDIyLjI2LDAsMCwxLDEyLjYxLDVhMTMuODYsMTMuODYsMCwwLDEsMi44Ny0u''@;'; put 'put ''ODQsMjAuMTMsMjAuMTMsMCwwLDAtNC40LDcuNDVoNi4wOVY0Yy4yOCwwLC41NSwwLC44Mywwcy41OCwwLC44NiwwdjcuNjRoNi4wOWEyMC4xMywyMC4xMywwLDAsMC00LjM5LTcuNDRBMTMuODksMTMuODksMCwwLDEsMjMuNDMsNWEyMi4yNiwyMi4yNiwwLDAsMSwzLjI3LDYuNTloMy43N2Ex''@;'; put 'put ''My44OSwxMy44OSwwLDAsMSwuNzYsMS44MUgyNy4xN0EyMS44OCwyMS44OCwwLDAsMSwyNy42NiwxOGEyMi4yLDIyLjIsMCwwLDEtLjU3LDQuOTNoNEExMy45NCwxMy45NCwwLDAsMSwzMC4yMiwyNC43MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xMC4wNSwxOGEyMC40NiwyMC40NiwwLDAsMCwuNjIsNC45M2g2LjQ4VjEzLjQ1SDEwLjU4QTIwLjU1LDIwLjU1LDAsMCwwLDEwLjA1LDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOC44NSwyMi45NGg2LjQ4QTIwLjQ2LDIwLjQ2LDAsMCwwLDI2LDE4YTIwLjU1LDIwLjU1LDAsMCwwLS41Mi00LjU1SDE4Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0zMy4xMiwxMi44MWE3LjQ0LDcuNDQsMCwwLDEtMS45LjU4djBIMzFhNi43Nyw2Ljc3LDAsMCwxLTIuMDcsMGgtMS44QTIxLjg4LDIxLjg4LDAsMCwxLDI3LjY2LDE4YTIyLjIsMjIuMiwwLDAsMS0uNTcsNC45M2g0YTEzLjk0LDEzLjk0LDAsMCwxLS44MywxLjgxSDI2LjZhMjEuOCwy''@;'; put 'put ''MS44LDAsMCwxLTMsNiwxMy44NiwxMy44NiwwLDAsMS0zLC45MiwyMC4yMSwyMC4yMSwwLDAsMCw0LjE4LTYuOTRIMTguODZ2Ny4xNWMtLjI5LDAtLjU3LDAtLjg2LDBzLS41NSwwLS44MywwVjI0LjcxSDExLjIyYTIwLjIxLDIwLjIxLDAsMCwwLDQuMTgsNi45NSwxMy44NiwxMy44NiwwLDAs''@;'; put 'put ''MS0yLjk0LS45LDIxLjgsMjEuOCwwLDAsMS0zLTYuMDVINS43OGExMy45NCwxMy45NCwwLDAsMS0uODMtMS44MWg0QTIyLjIsMjIuMiwwLDAsMSw4LjM3LDE4YTIxLjg4LDIxLjg4LDAsMCwxLC40OC00LjU1SDQuNzZhMTMuODgsMTMuODgsMCwwLDEsLjc2LTEuODFIOS4zM0EyMi4yNiwyMi4y''@;'; put 'put ''NiwwLDAsMSwxMi42MSw1YTEzLjg2LDEzLjg2LDAsMCwxLDIuODctLjg0LDIwLjEzLDIwLjEzLDAsMCwwLTQuNCw3LjQ1aDYuMDlWNGMuMjgsMCwuNTUsMCwuODMsMHMuNTgsMCwuODYsMHY3LjY0aDYuMDlsMC0uMTNhNy40Nyw3LjQ3LDAsMCwxLTIuMzYtNC43NiwyMC4zNywyMC4zNywwLDAs''@;'; put 'put ''MC0yLTIuNTUsMTQuMjMsMTQuMjMsMCwwLDEsMi4wNi41Niw3LjQ0LDcuNDQsMCwwLDEsLjU3LTEuODYsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxsLkNsclNoYXBlU2xpZGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMiwxMi4zN0E0LDQsMCwwLDAsOSw4LjQ4''@;'; put 'put ''VjVBMSwxLDAsMSwwLDcsNVY4LjQ4YTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYxNi4yNkE0LDQsMCwwLDAsMTIsMTIuMzdabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsOCwxNC40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxNS44M2E0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMHY2Ljk0YTQsNCwwLDAsMCwwLDcuNzhWMzFhMSwxLDAsMSwwLDIsMFYxOS43MkE0LDQsMCwwLDAsMzIsMTUuODNabS00LDJhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMjgsMTcu''@;'; put 'put ''ODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDI0LjVhNCw0LDAsMCwwLTMtMy44OVY1YTEsMSwwLDEsMC0yLDBWMjAuNjFhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjI4LjM5QTQsNCww''@;'; put 'put ''LDAsMCwyMiwyNC41Wm0tNCwyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDI2LjUzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LDkuMjlWNUExLDEsMCwxLDAsNyw1VjkuM2EzLjIyLDMuMjIsMCwwLDAs''@;'; put 'put ''MCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMTUuNDNBMy4yMiwzLjIyLDAsMCwwLDksOS4yOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwyMS40NVY1YTEsMSwwLDEsMC0yLDBWMjEuNDdhMy4yMiwzLjIyLDAsMCww''@;'; put 'put ''LDAsNi4xMVYzMWExLDEsMCwxLDAsMiwwVjI3LjZhMy4yMiwzLjIyLDAsMCwwLDAtNi4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSwxMi43NVY1YTEsMSwwLDEsMC0yLDB2Ny43NmEzLjIyLDMuMjIsMCwwLDAs''@;'; put 'put ''MCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMTguODlhMy4yMiwzLjIyLDAsMCwwLDAtNi4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxsLkNsclNoYXBlQ2xpcGJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS4yOSw1SDI3VjdoMlYzMkg3''@;'; put 'put ''VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVY2LjY5QTEuNywxLjcsMCwwLDAsMjkuMjksNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI2LDcuMzNBMi4zNCwyLjM0LDAsMCwwLDIzLjY3LDVIMjEuODdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNlpNMjQsOUgxMlY3LjMzQS4zMy4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQs''@;'; put 'put ''MFY3aDMuNjdhLjMzLjMzLDAsMCwxLC4zMy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjE0IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTgiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMiIgd2lkdGg9IjE0IiBoZWlnaHQ9''@;'; put 'put ''IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI2IiB3aWR0aD0iMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSIxMSIgeT0iMTQiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTgiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjIiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRn''@;'; put 'put ''ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjYiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMTMsOUgxMlY3LjMzQS4z''@;'; put 'put ''My4zMywwLDAsMSwxMi4zMyw3SDE2VjZhMiwyLDAsMCwxLDQsMFY3aDIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMWgtLjdhNCw0LDAsMCwwLTcuNzUsMEgxMi4zM0EyLjM0LDIuMzQsMCwwLDAsMTAsNy4zM1YxMUgyNC40MkE3LjUsNy41LDAsMCwxLDIz''@;'; put 'put ''LjEzLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNWE3LjUyLDcuNTIsMCwwLDEtMS0uMDdWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjlWMzIuMzFB''@;'; put 'put ''MS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTMuNDNBNy41Miw3LjUyLDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xl''@;'; put 'put ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMjksNUgyMi4xN2E0LjQ1LDQuNDUsMCwwLDAtNC4xMS0zQTQuNDYsNC40''@;'; put 'put ''NiwwLDAsMCwxNCw1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVY2LjY5QTEuNywxLjcsMCwwLDAsMjkuMjksNVptLTE4LDNhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzFhMi4zMSwyLjMxLDAs''@;'; put 'put ''MSwxLDQuNjMsMFY3aDMuNDRhMSwxLDAsMCwxLDEsMXYySDExLjMxWk0yNSwyOEgxMVYyNkgyNVptMC00SDExVjIySDI1Wm0wLTRIMTFWMThIMjVabTAtNEgxMVYxNEgyNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzAsMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBIMTEuMzFWOGExLDEsMCwwLDEsMS0xaDMuNDRWNi4zMWEyLjMxLDIuMzEsMCwxLDEsNC42MywwVjdoMi4xOWE3LjU0LDcuNTQsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uNGE0LjQ1LDQuNDUsMCwwLDAtNC4xMS0z''@;'; put 'put ''QTQuNDYsNC40NiwwLDAsMCwxNCw1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjUsMjhIMTFWMjZIMjVabTAtNEgxMVYyMkgyNVpt''@;'; put 'put ''MC00SDExVjE4SDI1Wm0wLTRIMTFWMTRIMjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVGaXJld2FsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTQsOEgzMnY1''@;'; put 'put ''LjA4SDIzLjh2LTRIMjJ2NEgxNHYtNEgxMnY0SDRabTAsN0gzMnY2LjA4SDI4LjkyVjE2LjI3SDI3djQuODFIMTguOTJWMTYuMjdIMTd2NC44MUg4LjlWMTYuMjdIN3Y0LjgxSDRaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2NS42OEgyOC45MlYxNi4yN0gyN3Y0LjgxSDE4LjkyVjE2LjI3SDE3djQuODFIOC45VjE2LjI3SDd2NC44MUg0VjE1SDIwLjU4YTMuNTgsMy41OCwwLDAsMS0xLjc2''@;'; put 'put ''LTEuOTJIMTR2LTRIMTJ2NEg0VjhIMjAuMTRsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTIzLjgsMjhWMjQuMjdIMjIuMlYyOEgxNFYyNC4yN2gtMS42VjI4SDRWMjNIMzJ2NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1h''@;'; put 'put ''bGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTIuNDUtLjQySDIzLjhWMTAuMjJhNy41LDcu''@;'; put 'put ''NSwwLDAsMS0uNjMtMS4xNEgyMnY0SDE0di00SDEydjRINFY4SDIyLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMCwxMy41Wk00LDE1SDMydjYuMDhIMjguOTJW''@;'; put 'put ''MTYuMjdIMjd2NC44MUgxOC45MlYxNi4yN0gxN3Y0LjgxSDguOVYxNi4yN0g3djQuODFINFpNMjMuOCwyOFYyNC4yN0gyMi4yVjI4SDE0VjI0LjI3aC0xLjZWMjhINFYyM0gzMnY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xNCwyOEgxMlYyNGgyWm0xMCwwSDIyVjI0aDJabTgtNkg0VjIwSDdWMTZIOXY0aDhWMTZoMnY0aDhWMTZoMnY0aDNabTAtOEg0VjEyaDhWOGgydjRoOFY4aDJ2NGg4WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4zNSwxNEg0VjEyaDhWOGgydjRoNC41N0EzLjY3LDMuNjcsMCwwLDEsMTksOS44OUwyMS4yOSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCww''@;'; put 'put ''LDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaTTE0LDI4SDEyVjI0aDJabTEwLDBIMjJWMjRoMlptOC02SDRWMjBIN1YxNkg5djRoOFYxNmgydjRoOFYxNmgydjRoM1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwxMC40OVYxMmgxLjUxQTcuNTMsNy41MywwLDAsMSwyNCwxMC40OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDEzLjIyVjE0SDRWMTJoOFY4aDJ2NGg4VjhoLjc4YTcuNDksNy40OSwwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMlpNMTQs''@;'; put 'put ''MjhIMTJWMjRoMlptMTAsMEgyMlYyNGgyWm04LTZINFYyMEg3VjE2SDl2NGg4VjE2aDJ2NGg4VjE2aDJ2NGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUi''@;'; put 'put ''ICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxsLkNsclNoYXBlTGlzdD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB4PSIxNSIgeT0iOCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTIiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE2IiB3aWR0''@;'; put 'put ''aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyMCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjQiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxNiIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgy''@;'; put 'put ''OGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJabTAsMzBIOFY0SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjEyIiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTYiIHdpZHRoPSI5IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyMCIgd2lkdGg9IjkiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI0IiB3aWR0aD0iOSIgaGVpZ2h0PSIy''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTYiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIyMCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTUsOHYyaDguNjZhNy40NSw3LjQ1LDAsMCwxLS44OS0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjRIMjIuNzhhNy40NSw3LjQ1LDAsMCwx''@;'; put 'put ''LC44OC0ySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlpNMTMsMjZIMTFWMjRoMlptMC00SDExVjIwaDJabTAtNEgxMVYxNmgyWm0wLTRIMTFWMTJoMlptMC00SDExVjhoMlpNMjUsMjZIMTVWMjRIMjVabTAtNEgxNVYyMEgyNVptMC00SDE1VjE2SDI1Wm0wLTRIMTVWMTJIMjVabTAtNEgx''@;'; put 'put ''NVY4SDI1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy42NiwxMEgxNVY4aDcuNzhhNy40Miw3LjQyLDAsMCwxLC44OS02SDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTMuNUE3LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBaTTEzLDI2SDExVjI0aDJabTAtNEgxMVYyMGgyWm0wLTRIMTFWMTZoMlptMC00SDExVjEyaDJabTAtNEgxMVY4aDJaTTI1LDI2SDE1VjI0SDI1Wm0wLTRIMTVWMjBIMjVabTAtNEgxNVYxNkgyNVptMC00SDE1VjEySDI1WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxs''@;'; put 'put ''LkNsclNoYXBlUmVkbz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQsNC4yMmExLDEsMCwwLDAtMS40MSwxLjQybDUuNTYsNS40OWgtMTNBMTEsMTEsMCwwLDAsMTAuMDcsMzIsMSwxLDAsMCwwLDExLDMwLjE4YTksOSwwLDAsMS01LTgsOS4wOCw5LjA4LDAsMCwxLDkuMTMtOWgxM2wt''@;'; put 'put ''NS41NCw1LjQ4QTEsMSwwLDAsMCwyNCwyMGw4LTcuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlVW5kbz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuODcsMTEuMTRoLTEzbDUuNTYtNS40OUExLDEsMCwwLDAsMTIs''@;'; put 'put ''NC4yMkw0LDEyLjEzLDEyLDIwYTEsMSwwLDAsMCwxLjQxLTEuNDJMNy44NiwxMy4xNGgxM2E5LjA4LDkuMDgsMCwwLDEsOS4xMyw5LDksOSwwLDAsMS01LDhBMSwxLDAsMCwwLDI1LjkzLDMyYTExLDExLDAsMCwwLTUuMDYtMjAuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlU2Nyb2xsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwxMS4xMlY2LjU4YTQuNSw0LjUsMCwwLDAtNC41LTQuNWgtMTZBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEsMS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUs''@;'; put 'put ''NC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTMuMTNoLTJWMjkuNTRhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0Wm0tNC41LTdBMi41LDIuNSwwLDAsMSwzMiw2''@;'; put 'put ''LjU4VjkuMTJIMThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjA4LDE1LjRWMjkuNTRhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40''@;'; put 'put ''NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0LjU0aDIuNjFBMy42NiwzLjY2LDAsMCwxLDE5LDkuODlsLjQ0LS43NkgxOFY2LjU4YTQuNDgsNC40OCwwLDAsMC0uNzYtMi41SDIyLjRsMS4xNS0ySDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNTh2MjNhMi41LDIuNSwwLDEs''@;'; put 'put ''MS01LDBWMjZINy4xOVYyNEgydjUuNUE0LjUsNC41LDAsMCwwLDYuNSwzNEgyNS41OGE0LjUsNC41LDAsMCwwLDQuNS00LjVWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTEuOTItLjI2djE2LjNhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUsMHY0''@;'; put 'put ''LjU0aDguNTRhNy41LDcuNSwwLDAsMS0xLjM1LTJIMThWNi41OGE0LjQ4LDQuNDgsMCwwLDAtLjc2LTIuNWg1LjUyYTcuNDQsNy40NCwwLDAsMSwuODYtMkgxMy41QTQuNSw0LjUsMCwwLDAsOSw2LjU4djIzYTIuNSwyLjUsMCwxLDEtNSwwVjI2SDcuMTlWMjRIMnY1LjVBNC41LDQuNSwwLDAs''@;'; put 'put ''MCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41di0xNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxMS4xMlY2LjU4YTQuNSw0LjUsMCwwLDAtNC41LTQuNWgtMTZBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2''@;'; put 'put ''LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41VjEzLjEzaC0yVjI5LjU0YTIuNSwyLjUsMCwwLDEtMi41LDIuNUgxMC4yNGE0LjQ3LDQuNDcsMCwwLDAsLjc2LTIuNXYtMjNhMi41LDIuNSwwLDAsMSw1LDB2NC41NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMDgsMTUuNFYyOS41NGEyLjUsMi41LDAsMCwxLTIuNSwyLjVIMTAuMjRhNC40Nyw0LjQ3LDAsMCwwLC43Ni0yLjV2LTIzYTIuNSwyLjUsMCwwLDEsNSwwdjQuNTRoMi42MUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWw0LjUxLTcuOEgx''@;'; put 'put ''My41QTQuNSw0LjUsMCwwLDAsOSw2LjU4VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAsNC41LTQuNVYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTEuOTItLjI2djE2LjNhMi41LDIuNSwwLDAsMS0yLjUsMi41SDEwLjI0YTQuNDcsNC40NywwLDAsMCwuNzYtMi41di0yM2EyLjUsMi41LDAsMCwxLDUs''@;'; put 'put ''MHY0LjU0aDguNTRhNy40Niw3LjQ2LDAsMCwxLS45Mi05SDEzLjVBNC41LDQuNSwwLDAsMCw5LDYuNThWMjRIMnY1LjVBNC41LDQuNSwwLDAsMCw2LjUsMzRIMjUuNThhNC41LDQuNSwwLDAsMCw0LjUtNC41di0xNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksbC5DbHJTaGFwZUZpbGVTZXR0aW5ncz0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzMuODMsMjMuNDNhMS4xNiwxLjE2LDAsMCwwLS43MS0xLjEybC0xLjY4LS41Yy0uMDktLjI0LS4xOC0uNDgtLjI5LS43MWwuNzgtMS40NGExLjE2LDEuMTYsMCwwLDAtLjIxLTEuMzdsLTEuNDItMS40MWExLjE2LDEuMTYsMCwwLDAtMS4zNy0uMmwtMS40NS43''@;'; put 'put ''NmE3Ljg0LDcuODQsMCwwLDAtLjc2LS4zMmwtLjQ4LTEuNThhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjc3aC0yYTEuMTYsMS4xNiwwLDAsMC0xLjExLjgybC0uNDcsMS41NGE3Ljc2LDcuNzYsMCwwLDAtLjc3LjMybC0xLjQyLS43NmExLjE2LDEuMTYsMCwwLDAtMS4zNi4ybC0xLjQ1LDEuNGEx''@;'; put 'put ''LjE2LDEuMTYsMCwwLDAtLjIxLDEuMzhMMTcuMDgsMjFhNy42NCw3LjY0LDAsMCwwLS4zMS43NGwtMS41OC40N2ExLjE1LDEuMTUsMCwwLDAtLjgzLDEuMTF2MmExLjE1LDEuMTUsMCwwLDAsLjgzLDEuMWwxLjU5LjQ3YTcuNTMsNy41MywwLDAsMCwuMzEuNzJsLS43OCwxLjQ2YTEuMTYsMS4x''@;'; put 'put ''NiwwLDAsMCwuMjEsMS4zN2wxLjQyLDEuNGExLjE2LDEuMTYsMCwwLDAsMS4zNy4yMWwxLjQ4LS43OGMuMjMuMTEuNDcuMi43Mi4yOUwyMiwzMy4xOGExLjE2LDEuMTYsMCwwLDAsMS4xMS44MWgyYTEuMTYsMS4xNiwwLDAsMCwxLjExLS44MmwuNDctMS41OGMuMjQtLjA4LjQ3LS4xOC43LS4y''@;'; put 'put ''OWwxLjUuNzlhMS4xNiwxLjE2LDAsMCwwLDEuMzYtLjJsMS40Mi0xLjRhMS4xNiwxLjE2LDAsMCwwLC4yMS0xLjM4bC0uNzktMS40NXEuMTYtLjM0LjI5LS42OUwzMywyNi41YTEuMTUsMS4xNSwwLDAsMCwuODMtMS4xMVptLTEuNiwxLjYzLTIuMTEuNjItLjEyLjQyYTYsNiwwLDAsMS0uNSwx''@;'; put 'put ''LjE5bC0uMjEuMzgsMSwxLjkxLTEsMS0yLTEtLjM3LjJhNi4yMSw2LjIxLDAsMCwxLTEuMi40OWwtLjQyLjEyLS42MywyLjA5SDIzLjQybC0uNjMtMi4wOC0uNDItLjEyYTYuMjMsNi4yMywwLDAsMS0xLjIxLS40OWwtLjM3LS4yLTEuOTQsMS0xLTEsMS0xLjk0LS4yMi0uMzhBNiw2LDAsMCwx''@;'; put 'put ''LDE4LjE3LDI2TDE4LDI1LjYzLDE2LDI1VjIzLjY5TDE4LDIzLjA4bC4xMy0uNDFhNS45NCw1Ljk0LDAsMCwxLC41My0xLjIzTDE4LjksMjFsLTEtMS44NSwxLS45NCwxLjg5LDEsLjM4LS4yMWE2LjIzLDYuMjMsMCwwLDEsMS4yNi0uNTJsLjQxLS4xMi42My0yaDEuMzhsLjYyLDIsLjQxLjEy''@;'; put 'put ''QTYuMjEsNi4yMSwwLDAsMSwyNy4xLDE5bC4zOC4yMSwxLjkyLTEsMSwxLTEsMS44OS4yMS4zOGE2LjA4LDYuMDgsMCwwLDEsLjUsMS4yMWwuMTIuNDIsMi4wNi42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI0LjEyLDIwLjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4wNiw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYsMCwwLDEsMjQuMTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjZ2Ny44OWEzLjIsMy4yLDAsMCwxLDIsMS43MlY1YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTYuMjNsLTEuMS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40OSwzMVoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI0LjEyLDIwLjM1YTQsNCwwLDEsMCw0LjA4LDRBNC4wNiw0LjA2LDAsMCwwLDI0LjEyLDIwLjM1Wm0wLDYuNDZhMi40MywyLjQzLDAsMSwxLDIuNDgtMi40M0EyLjQ2LDIuNDYs''@;'; put 'put ''MCwwLDEsMjQuMTIsMjYuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEuMTYsMCwwLDAtLjcxLTEuMTJsLTEuNjgtLjVjLS4wOS0uMjQtLjE4''@;'; put 'put ''LS40OC0uMjktLjcxbC43OC0xLjQ0YTEuMTYsMS4xNiwwLDAsMC0uMjEtMS4zN2wtMS40Mi0xLjQxYTEuMTYsMS4xNiwwLDAsMC0xLjM3LS4ybC0xLjQ1Ljc2YTcuODQsNy44NCwwLDAsMC0uNzYtLjMybC0uNDgtMS41OGExLjE1LDEuMTUsMCwwLDAtMS4xMS0uNzdoLTJhMS4xNiwxLjE2LDAs''@;'; put 'put ''MCwwLTEuMTEuODJsLS40NywxLjU0YTcuNzYsNy43NiwwLDAsMC0uNzcuMzJsLTEuNDItLjc2YTEuMTYsMS4xNiwwLDAsMC0xLjM2LjJsLTEuNDUsMS40YTEuMTYsMS4xNiwwLDAsMC0uMjEsMS4zOEwxNy4wOCwyMWE3LjY0LDcuNjQsMCwwLDAtLjMxLjc0bC0xLjU4LjQ3YTEuMTUsMS4xNSww''@;'; put 'put ''LDAsMC0uODMsMS4xMXYyYTEuMTUsMS4xNSwwLDAsMCwuODMsMS4xbDEuNTkuNDdhNy41Myw3LjUzLDAsMCwwLC4zMS43MmwtLjc4LDEuNDZhMS4xNiwxLjE2LDAsMCwwLC4yMSwxLjM3bDEuNDIsMS40YTEuMTYsMS4xNiwwLDAsMCwxLjM3LjIxbDEuNDgtLjc4Yy4yMy4xMS40Ny4yLjcyLjI5''@;'; put 'put ''TDIyLDMzLjE4YTEuMTYsMS4xNiwwLDAsMCwxLjExLjgxaDJhMS4xNiwxLjE2LDAsMCwwLDEuMTEtLjgybC40Ny0xLjU4Yy4yNC0uMDguNDctLjE4LjctLjI5bDEuNS43OWExLjE2LDEuMTYsMCwwLDAsMS4zNi0uMmwxLjQyLTEuNGExLjE2LDEuMTYsMCwwLDAsLjIxLTEuMzhsLS43OS0xLjQ1''@;'; put 'put ''cS4xNi0uMzQuMjktLjY5TDMzLDI2LjVhMS4xNSwxLjE1LDAsMCwwLC44My0xLjExWm0tMS42LDEuNjMtMi4xMS42Mi0uMTIuNDJhNiw2LDAsMCwxLS41LDEuMTlsLS4yMS4zOCwxLDEuOTEtMSwxLTItMS0uMzcuMmE2LjIxLDYuMjEsMCwwLDEtMS4yLjQ5bC0uNDIuMTItLjYzLDIuMDlIMjMu''@;'; put 'put ''NDJsLS42My0yLjA4LS40Mi0uMTJhNi4yMyw2LjIzLDAsMCwxLTEuMjEtLjQ5bC0uMzctLjItMS45NCwxLTEtMSwxLTEuOTQtLjIyLS4zOEE2LDYsMCwwLDEsMTguMTcsMjZMMTgsMjUuNjMsMTYsMjVWMjMuNjlMMTgsMjMuMDhsLjEzLS40MWE1Ljk0LDUuOTQsMCwwLDEsLjUzLTEuMjNMMTgu''@;'; put 'put ''OSwyMWwtMS0xLjg1LDEtLjk0LDEuODksMSwuMzgtLjIxYTYuMjMsNi4yMywwLDAsMSwxLjI2LS41MmwuNDEtLjEyLjYzLTJoMS4zOGwuNjIsMiwuNDEuMTJBNi4yMSw2LjIxLDAsMCwxLDI3LjEsMTlsLjM4LjIxLDEuOTItMSwxLDEtMSwxLjg5LjIxLjM4YTYuMDgsNi4wOCwwLDAsMSwuNSwx''@;'; put 'put ''LjIxbC4xMi40MiwyLjA2LjYxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuNDksMzFINlY1SDIxLjg3TDIzLDNINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJI''@;'; put 'put ''MTYuMjNsLTEuMS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40OSwzMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjQzYTEuMTYsMS4xNiwwLDAsMC0uNzEtMS4xMmwtMS42OC0uNWMtLjA5LS4yNC0uMTgtLjQ4LS4yOS0uNzFsLjc4LTEuNDRhMS4xNiwxLjE2LDAsMCwwLS4yMS0xLjM3bC0xLjQyLTEuNDFhMS4xNiwxLjE2LDAsMCwwLTEuMzctLjJsLTEuNDUuNzZh''@;'; put 'put ''Ny44NCw3Ljg0LDAsMCwwLS43Ni0uMzJsLS40OC0xLjU4YTEuMTUsMS4xNSwwLDAsMC0xLjExLS43N2gtMmExLjE2LDEuMTYsMCwwLDAtMS4xMS44MmwtLjQ3LDEuNTRhNy43Niw3Ljc2LDAsMCwwLS43Ny4zMmwtMS40Mi0uNzZhMS4xNiwxLjE2LDAsMCwwLTEuMzYuMmwtMS40NSwxLjRhMS4x''@;'; put 'put ''NiwxLjE2LDAsMCwwLS4yMSwxLjM4TDE3LjA4LDIxYTcuNjQsNy42NCwwLDAsMC0uMzEuNzRsLTEuNTguNDdhMS4xNSwxLjE1LDAsMCwwLS44MywxLjExdjJhMS4xNSwxLjE1LDAsMCwwLC44MywxLjFsMS41OS40N2E3LjUzLDcuNTMsMCwwLDAsLjMxLjcybC0uNzgsMS40NmExLjE2LDEuMTYs''@;'; put 'put ''MCwwLDAsLjIxLDEuMzdsMS40MiwxLjRhMS4xNiwxLjE2LDAsMCwwLDEuMzcuMjFsMS40OC0uNzhjLjIzLjExLjQ3LjIuNzIuMjlMMjIsMzMuMThhMS4xNiwxLjE2LDAsMCwwLDEuMTEuODFoMmExLjE2LDEuMTYsMCwwLDAsMS4xMS0uODJsLjQ3LTEuNThjLjI0LS4wOC40Ny0uMTguNy0uMjls''@;'; put 'put ''MS41Ljc5YTEuMTYsMS4xNiwwLDAsMCwxLjM2LS4ybDEuNDItMS40YTEuMTYsMS4xNiwwLDAsMCwuMjEtMS4zOGwtLjc5LTEuNDVxLjE2LS4zNC4yOS0uNjlMMzMsMjYuNWExLjE1LDEuMTUsMCwwLDAsLjgzLTEuMTFabS0xLjYsMS42My0yLjExLjYyLS4xMi40MmE2LDYsMCwwLDEtLjUsMS4x''@;'; put 'put ''OWwtLjIxLjM4LDEsMS45MS0xLDEtMi0xLS4zNy4yYTYuMjEsNi4yMSwwLDAsMS0xLjIuNDlsLS40Mi4xMi0uNjMsMi4wOUgyMy40MmwtLjYzLTIuMDgtLjQyLS4xMmE2LjIzLDYuMjMsMCwwLDEtMS4yMS0uNDlsLS4zNy0uMi0xLjk0LDEtMS0xLDEtMS45NC0uMjItLjM4QTYsNiwwLDAsMSwx''@;'; put 'put ''OC4xNywyNkwxOCwyNS42MywxNiwyNVYyMy42OUwxOCwyMy4wOGwuMTMtLjQxYTUuOTQsNS45NCwwLDAsMSwuNTMtMS4yM0wxOC45LDIxbC0xLTEuODUsMS0uOTQsMS44OSwxLC4zOC0uMjFhNi4yMyw2LjIzLDAsMCwxLDEuMjYtLjUybC40MS0uMTIuNjMtMmgxLjM4bC42MiwyLC40MS4xMkE2''@;'; put 'put ''LjIxLDYuMjEsMCwwLDEsMjcuMSwxOWwuMzguMjEsMS45Mi0xLDEsMS0xLDEuODkuMjEuMzhhNi4wOCw2LjA4LDAsMCwxLC41LDEuMjFsLjEyLjQyLDIuMDYuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMjQuMTIsMjAuMzVhNCw0LDAsMSwwLDQuMDgsNEE0LjA2LDQuMDYsMCwwLDAsMjQuMTIsMjAuMzVabTAsNi40NmEyLjQzLDIuNDMsMCwxLDEsMi40OC0yLjQzQTIuNDYsMi40NiwwLDAsMSwyNC4xMiwyNi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40OSwzMUg2VjVIMjMuMDhhNi45NCw2Ljk0LDAsMCwxLC42LTJINkEyLDIsMCwwLDAsNCw1VjMxYTIsMiwwLDAsMCwyLDJIMTYuMjNsLTEuMS0xLjA4QTMuMTEsMy4xMSwwLDAsMSwxNC40''@;'; put 'put ''OSwzMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxNS4zM1YxMi43MWE3LDcsMCwwLDEtMi0xdjEuODhBMy4yLDMuMiwwLDAsMSwyOCwxNS4zM1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjZ2OC43OGEyLjM3LDIuMzcsMCwwLDEsMiwxLjU3VjVhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNTQsMjMuNDdsLTItLjYxYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3LjM3LDAsMCwwLS4wNy0uNDRMMzAuNDEsMTcuN2EuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwx''@;'; put 'put ''QTcsNywwLDAsMCwyNi42OSwxOGwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFsLTEuODItMWEuMzcuMzcsMCwwLDAtLjQ0LjA3bC0xLjQ3LDEuNDRhLjM3LjM3LDAsMCwwLS4wNy40NGwxLDEuODJhNyw3''@;'; put 'put ''LDAsMCwwLS42MSwxLjQ0bC0yLC42MWEuMzcuMzcsMCwwLDAtLjI2LjM1djJhLjM3LjM3LDAsMCwwLC4yNi4zNWwyLC42MWE3LDcsMCwwLDAsLjYxLDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTksMzJhLjM3LjM3LDAsMCwwLC40NC4wN2wxLjg3LTFhNy4wNiw3LjA2LDAsMCww''@;'; put 'put ''LDEuMzkuNTdsLjYxLDJhLjM3LjM3LDAsMCwwLC4zNS4yNmgyYS4zNy4zNywwLDAsMCwuMzUtLjI2bC42MS0yYTcsNywwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM3LjM3LDAsMCwwLC40NC0uMDdsMS40NS0xLjQ1YS4zNy4zNywwLDAsMCwuMDctLjQ0bC0xLTEuODhhNy4wNiw3LjA2LDAsMCww''@;'; put 'put ''LC41OC0xLjM5bDItLjYxYS4zNy4zNywwLDAsMCwuMjYtLjM1VjIzLjgzQS4zNy4zNywwLDAsMCwzMy41NCwyMy40N1pNMjQuNywyOC4xOUEzLjMzLDMuMzMsMCwxLDEsMjgsMjQuODYsMy4zMywzLjMzLDAsMCwxLDI0LjcsMjguMTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYuNjksMThs''@;'; put 'put ''LS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40NGwtMiwu''@;'; put 'put ''NjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwyYS4zNy4z''@;'; put 'put ''NywwLDAsMCwuMzUuMjZoMmEuMzcuMzcsMCwwLDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzcu''@;'; put 'put ''MzcsMCwwLDAsLjI2LS4zNVYyMy44M0EuMzcuMzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxl''@;'; put 'put ''cnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS41NSwzMUg2VjVIMjEuODdMMjMsM0g2QTIsMiwwLDAsMCw0LDVWMzFhMiwyLDAsMCwwLDIsMkgxNy4xNmwtMS0xQTIuMzgsMi4zOCwwLDAsMSwxNS41NSwzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjU0LDIzLjQ3bC0yLS42MWE3LjA2LDcuMDYsMCwwLDAtLjU4LTEuNDFsMS0xLjg2YS4zNy4zNywwLDAsMC0uMDctLjQ0TDMwLjQxLDE3LjdhLjM3LjM3LDAsMCwwLS40NC0uMDdsLTEuODUsMUE3LDcsMCwwLDAsMjYu''@;'; put 'put ''NjksMThsLS42MS0yYS4zNy4zNywwLDAsMC0uMzYtLjI1aC0yYS4zNy4zNywwLDAsMC0uMzUuMjZsLS42MSwyYTcsNywwLDAsMC0xLjQ0LjYxbC0xLjgyLTFhLjM3LjM3LDAsMCwwLS40NC4wN2wtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyYTcsNywwLDAsMC0uNjEsMS40''@;'; put 'put ''NGwtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFhNyw3LDAsMCwwLC42MSwxLjQxbC0xLDEuOWEuMzcuMzcsMCwwLDAsLjA3LjQ0TDE5LDMyYS4zNy4zNywwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDYsNy4wNiwwLDAsMCwxLjM5LjU3bC42MSwy''@;'; put 'put ''YS4zNy4zNywwLDAsMCwuMzUuMjZoMmEuMzcuMzcsMCwwLDAsLjM1LS4yNmwuNjEtMmE3LDcsMCwwLDAsMS4zOC0uNTdsMS44OSwxYS4zNy4zNywwLDAsMCwuNDQtLjA3bDEuNDUtMS40NWEuMzcuMzcsMCwwLDAsLjA3LS40NGwtMS0xLjg4YTcuMDYsNy4wNiwwLDAsMCwuNTgtMS4zOWwyLS42''@;'; put 'put ''MWEuMzcuMzcsMCwwLDAsLjI2LS4zNVYyMy44M0EuMzcuMzcsMCwwLDAsMzMuNTQsMjMuNDdaTTI0LjcsMjguMTlBMy4zMywzLjMzLDAsMSwxLDI4LDI0Ljg2LDMuMzMsMy4zMywwLDAsMSwyNC43LDI4LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0y''@;'; put 'put ''LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuNTUsMzFINlY1SDIzLjA4YTYuOTQsNi45NCwwLDAsMSwuNi0ySDZBMiwyLDAsMCwwLDQsNVYzMWEyLDIsMCwwLDAsMiwySDE3LjE2bC0xLTFBMi4zOCwyLjM4LDAsMCwxLDE1LjU1LDMxWiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuMzZWMTIuNzFhNyw3LDAsMCwxLTItMXYyQTIuMzcsMi4zNywwLDAsMSwyOCwxNS4zNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''NC0tYmFkZ2VkIiAvPicpLGwuQ2xyU2hhcGVUd29XYXlBcnJvd3M9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjQzLDE2LjgzQTEsMSwwLDAsMCwyMiwxOC4yNEwyNS43MiwyMkg3LjgzYTEsMSwwLDAsMCwwLDJIMjUuNzJMMjIsMjcuN2ExLDEsMCwxLDAsMS40MiwxLjQxTDI5LjUz''@;'; put 'put ''LDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjQsMTguNDVhMSwxLDAsMCwwLC43MS0xLjcxTDEwLjI0LDEzSDI4LjEyYTEsMSwwLDAsMCwwLTJIMTAuMjRsMy43MS0zLjczYTEsMSwwLDAsMC0xLjQy''@;'; put 'put ''LTEuNDFMNi40MiwxMmw2LjExLDYuMTRBMSwxLDAsMCwwLDEzLjI0LDE4LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZVN3aXRjaD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNS43MSwxNEgyMC45MlYxMkg1LjcxTDku''@;'; put 'put ''NDIsOC4yN0ExLDEsMCwxLDAsOCw2Ljg2TDEuODksMTMsOCwxOS4xNGExLDEsMCwxLDAsMS40Mi0xLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxMiIgd2lkdGg9IjMiIGhlaWdodD0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyOCIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI3LjkyLDE3Ljg2YTEsMSwwLDAsMC0xLjQyLDEuNDFMMzAuMjEsMjNIMTV2MkgzMC4yMUwyNi41LDI4Ljc0YTEsMSwwLDEsMCwxLjQyLDEuNEwzNCwyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTAiIHk9''@;'; put 'put ''IjIzIiB3aWR0aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NiIgLz4nKSxsLkNsclNoYXBlVG9vbHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLDE0SDE2YTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxaDRhMSwxLDAsMCwwLDEtMVYxNUExLDEsMCwwLDAsMjAsMTRabS0uNCw2LjZIMTYuNFYxNS40aDMuMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4LjkyLDhoLTVWNi4wNUEyLDIsMCwwLDAsMjIsNEgxMy44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCww''@;'; put 'put ''LS43MS4yOUwyLjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEzLjA4QTEsMSwwLDAsMCwzMy43MSwxMi4zOFpNMTQsNmg4VjhIMTRaTTMyLDE3SDIydjEuOTNIMzJWMjhINFYxOC45M0gxNFYxN0g0VjEzLjVMNy41LDEwaDIxTDMy''@;'; put 'put ''LDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2LjQiIHk9IjE1LjQiIHdpZHRoPSIzLjIiIGhlaWdodD0iNS4yIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTIxLDIxYTEsMSwwLDAsMS0xLDFIMTZhMSwxLDAsMCwxLTEtMVYxOUgydjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5SDIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''My43MSwxMi4zOCwyOS42Miw4LjI5QTEsMSwwLDAsMCwyOC45Miw4aC01VjYuMDVBMiwyLDAsMCwwLDIyLDRIMTMuODRBMS45MiwxLjkyLDAsMCwwLDEyLDYuMDVWOEg3LjA4YTEsMSwwLDAsMC0uNzEuMjlMMi4yOSwxMi4zOGExLDEsMCwwLDAtLjI5LjcxVjE3SDE1VjE1YTEsMSwwLDAsMSwx''@;'; put 'put ''LTFoNGExLDEsMCwwLDEsMSwxdjJIMzRWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0yMiw4SDE0VjZoOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksbC5DbHJTaGFwZVdpbmRvd0Nsb3NlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS40''@;'; put 'put ''MSwxOGw3LjI5LTcuMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSwxMC43MSw5LjI5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTYuNTksMTgsOS4yOSwyNS4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDcuMjksNy4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZVdpbmRvd01heD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuODksOWgtMjBhMiwyLDAsMCwwLTIsMlYyNWEyLDIsMCwwLDAsMiwyaDIwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDI3Ljg5''@;'; put 'put ''LDlabS0yMCwxNlYxMWgyMFYyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVXaW5kb3dNaW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDI3SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZVdpbmRvd1Jlc3RvcmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDhIMTRhMiwyLDAsMCwwLTIsMnYyaDJWMTBIMjhWMjBIMjZ2MmgyYTIsMiwwLDAsMCwyLTJWMTBBMiwyLDAsMCwwLDI4''@;'; put 'put ''LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiwxNEg4YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgyMmEyLDIsMCwwLDAsMi0yVjE2QTIsMiwwLDAsMCwyMiwxNFpNOCwyNlYxNkgyMlYyNloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVab29tSW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LDRBMTIsMTIsMCwxLDAsMjgsMTYsMTIsMTIsMCwwLDAsMTYsNFptMCwyMS45MUExMCwxMCwwLDEsMSwyNiwxNiwxMCwx''@;'; put 'put ''MCwwLDAsMSwxNiwyNS45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjcxLDI5LjY5bC01LjE3LTUuMTdBMTMuNjgsMTMuNjgsMCwwLDEsMjUuMTUsMjZsNS4xNSw1LjE1YTEsMSwwLDAsMCwxLjQxLTEu''@;'; put 'put ''NDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMSwxNUgxN1YxMWExLDEsMCwwLDAtMiwwdjRIMTFhMSwxLDAsMCwwLDAsMmg0djRhMSwxLDAsMCwwLDIsMFYxN2g0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxsLkNsclNoYXBlWm9vbU91dD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwx''@;'; put 'put ''LDE2LDI1LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIwLDE1SDEyYTEsMSwwLDAsMCwwLDJoOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksbC5DbHJTaGFw''@;'; put 'put ''ZUtleT0oMCxhLmNsckljb25TVkcpKCc8cmVjdCB4PSI2LjMzIiB5PSIxMC43MSIgd2lkdGg9IjkuNzEiIGhlaWdodD0iMi41NyIgcng9IjEiIHJ5PSIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNS4yMSAxMS40Mykgcm90YXRlKC00NSkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M0E1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRM''@;'; put 'put ''MTgsMjYuNDhoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBs''@;'; put 'put ''NS4yNiw1LjI2YTMsMywwLDAsMSwwLDQuMjRsLTIsMkwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4zMyIgeT0iMTAuNzEiIHdpZHRoPSI5LjcxIiBoZWlnaHQ9IjIuNTciIHJ4PSIxIiByeT0i''@;'; put 'put ''MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMjEgMTEuNDMpIHJvdGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zNSwxNi44bC42My0uNjNhNSw1LDAsMCww''@;'; put 'put ''LC42My0uNzdIMjIuMjNsLS4yOSwwTDIwLjUyLDE2LjgsMzIsMjguMjhWMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTMtM0wxNCwyMy4zMWEzLDMsMCwwLDEtNC4yNCwwTDQuNSwxOGEzLDMsMCwwLDEsMC00LjI0bDguNTYtOC41NmEzLDMsMCwwLDEsNC4yNCwwTDIw''@;'; put 'put ''LjEsOC4wNmwxLTEuNzlMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNC0uNEwxOCwyNi40OGgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjYuMzMiIHk9IjEwLjcxIiB3aWR0aD0iOS43MSIgaGVpZ2h0PSIyLjU3IiByeD0i''@;'; put 'put ''MSIgcnk9IjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjIxIDExLjQzKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjM1LDE2LjhsLjYzLS42M0E1LDUs''@;'; put 'put ''MCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQtLjRMMTgsMjYuNDhoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2''@;'; put 'put ''di0yLjhIMjMuNDF2LTNIMTguOGwtMy0zTDE0LDIzLjMxYTMsMywwLDAsMS00LjI0LDBMNC41LDE4YTMsMywwLDAsMSwwLTQuMjRsOC41Ni04LjU2YTMsMywwLDAsMSw0LjI0LDBsNS4yNiw1LjI2YTMsMywwLDAsMSwwLDQuMjRsLTIsMkwzMiwyOC4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNkE1LDUsMCwwLDAsMjQsOS4xTDE4LjcxLDMuODRhNSw1LDAsMCwwLTcuMDcsMEwzLjA5LDEyLjM5YTUsNSwwLDAsMCwwLDcuMDdsNS4yNiw1LjI2YTUsNSwwLDAsMCw3LjA3LDBsLjQ1LS40NSwyLjEsMi4yaDMuNDR2M2gzLjY5djEu''@;'; put 'put ''NjNMMjgsMzRoNlYyNy40NVptLTguNTYtNi41OUw5LjM3LDE1LjY0YTEsMSwwLDAsMS0xLjQxLDBsLS40LS40YTEsMSwwLDAsMSwwLTEuNDFMMTMsOC4zNmExLDEsMCwwLDEsMS40MSwwbC40LjRBMSwxLDAsMCwxLDE0LjgyLDEwLjE4Wk0zMiwzMkgyOC44NmwtMS43Ny0xLjc2di0yLjhIMjMu''@;'; put 'put ''NDF2LTNIMTguOGwtMS41Mi0xLjYxTDIyLDE4LjE4LDMyLDI4LjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zOCwxNi43N2wuNi0uNmE1LDUsMCwwLDAsLjYzLS43N0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEs''@;'; put 'put ''MTksOS44OWwyLjA5LTMuNjJMMTguNzEsMy44NGE1LDUsMCwwLDAtNy4wNywwTDMuMDksMTIuMzlhNSw1LDAsMCwwLDAsNy4wN2w1LjI2LDUuMjZhNSw1LDAsMCwwLDcuMDcsMGwuNDUtLjQ1LDIuMSwyLjJoMy40NHYzaDMuNjl2MS42M0wyOCwzNGg2VjI3LjQ1Wm0tOC41Ni02LjU5TDkuMzcs''@;'; put 'put ''MTUuNjRhMSwxLDAsMCwxLTEuNDEsMGwtLjQtLjRhMSwxLDAsMCwxLDAtMS40MUwxMyw4LjM2YTEsMSwwLDAsMSwxLjQxLDBsLjQuNEExLDEsMCwwLDEsMTQuODIsMTAuMThaTTMyLDMySDI4Ljg2bC0xLjc3LTEuNzZ2LTIuOEgyMy40MXYtM0gxOC44bC0xLjUyLTEuNjFMMjIsMTguMTgsMzIs''@;'; put 'put ''MjguMjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMzgsMTYuNzdsLjYtLjZBNSw1LDAsMCww''@;'; put 'put ''LDI0LDkuMUwxOC43MSwzLjg0YTUsNSwwLDAsMC03LjA3LDBMMy4wOSwxMi4zOWE1LDUsMCwwLDAsMCw3LjA3bDUuMjYsNS4yNmE1LDUsMCwwLDAsNy4wNywwbC40NS0uNDUsMi4xLDIuMmgzLjQ0djNoMy42OXYxLjYzTDI4LDM0aDZWMjcuNDVabS04LjU2LTYuNTlMOS4zNywxNS42NGExLDEs''@;'; put 'put ''MCwwLDEtMS40MSwwbC0uNC0uNGExLDEsMCwwLDEsMC0xLjQxTDEzLDguMzZhMSwxLDAsMCwxLDEuNDEsMGwuNC40QTEsMSwwLDAsMSwxNC44MiwxMC4xOFpNMzIsMzJIMjguODZsLTEuNzctMS43NnYtMi44SDIzLjQxdi0zSDE4LjhsLTEuNTItMS42MUwyMiwxOC4xOCwzMiwyOC4yOFoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2Ui''@;'; put 'put ''IC8+JyksbC5DbHJTaGFwZUxpYnJhcnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjQ4LDI5LjYzLDI2Ljc0LDExLjgyYTIsMiwwLDAsMC0yLjU4LTEuMTZMMjEsMTEuODVWOC45MkExLjkyLDEuOTIsMCwwLDAsMTkuMDgsN0gxNFY0LjkyQTEuOTIsMS45MiwwLDAsMCwxMi4wOCwz''@;'; put 'put ''SDVBMiwyLDAsMCwwLDMsNVYzMmExLDEsMCwwLDAsMSwxSDIwYTEsMSwwLDAsMCwxLTFWMTkuMjdsNSwxMy4yMWExLDEsMCwwLDAsMS4yOS41OGw1LjYxLTIuMTRhMSwxLDAsMCwwLC41OC0xLjI5Wk0xMiw4LjgzVjMxSDVWNWg3Wk0xOSwzMUgxNFY5aDVabTguNTEtLjI1TDIxLjEzLDEzLjky''@;'; put 'put ''bDMuNzQtMS40Miw2LjM5LDE2LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuNzUsM0g1LjI1QTEuMTUsMS4xNSwwLDAsMCw0LDRWMzNIMTRWNEExLjE1LDEuMTUsMCwwLDAsMTIuNzUsM1oiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzcsMzEuMDlsLTYuOTQtMTguM2ExLDEsMCwwLDAtMS4yOS0uNThMMjIsMTMuNTlWOWExLDEsMCwwLDAtMS0xSDE2VjMzaDZWMTQuNjlMMjguOTMsMzNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVCb2x0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC41MiwzNGgtM2ExLDEsMCwwLDEtLjg4LTEuNDRMMTIuNTUsMjFINmExLDEsMCwwLDEtLjg1LTEuNTRsMTAuNjgtMTdBMSwxLDAsMCwxLDE2LjY0LDJIMzAu''@;'; put 'put ''MDdhMSwxLDAsMCwxLC43NywxLjY5TDIxLjc4LDE0aDUuMzhhMSwxLDAsMCwxLC43MywxLjY2bC0xNi42MywxOEExLDEsMCwwLDEsMTAuNTIsMzRaTTkuMTgsMzJoLjkxTDI0Ljg2LDE2SDE5LjU5YTEsMSwwLDAsMS0uNzctMS42OUwyNy44OCw0SDE3LjE5TDcuNzcsMTlIMTQuMmExLDEsMCww''@;'; put 'put ''LDEsLjg4LDEuNDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC44LDIuMjlBLjQ5LjQ5LDAsMCwwLDMwLjM1LDJIMTYuNDJhLjUuNSwwLDAsMC0uNDIuMjNsLTEwLjcxLDE3QS40OS40OSwwLDAsMCw1Ljcs''@;'; put 'put ''MjBoNy42N0w2LjYsMzMuMjVhLjUyLjUyLDAsMCwwLC40Ni43NWgzYS41LjUsMCwwLDAsLjM3LS4xNkwyOCwxNC44NWEuNS41LDAsMCwwLS4zNy0uODVIMjAuODlMMzAuNzIsMi44MkEuNDkuNDksMCwwLDAsMzAuOCwyLjI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgLz4nKSxsLkNsclNoYXBlV3JlbmNoPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy4xOCwyNi4xMSwyMC4zNSwxMy4yOEE5LjI4LDkuMjgsMCwwLDAsNy41NCwyLjc5bC0xLjM0LjU5LDUuMzgsNS4zOEw4Ljc2LDExLjU5LDMuMzgsNi4yMSwyLjc5LDcuNTRBOS4yNyw5LjI3LDAs''@;'; put 'put ''MCwwLDEzLjI4LDIwLjM1TDI2LjExLDMzLjE4YTIsMiwwLDAsMCwyLjgzLDBsNC4yNC00LjI0QTIsMiwwLDAsMCwzMy4xOCwyNi4xMVptLTUuNjYsNS42NkwxMy44OCwxOC4xMmwtLjU3LjE2YTcuMjcsNy4yNywwLDAsMS05LjMxLTcsNy4yLDcuMiwwLDAsMSwuMTUtMS40OGw0LjYxLDQuNjEs''@;'; put 'put ''NS42Ni01LjY2TDkuODEsNC4xNWE3LjI3LDcuMjcsMCwwLDEsOC40Nyw5LjE2bC0uMTYuNTdMMzEuNzcsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI3LjEzIiBjeT0iMjcuMDkiIHI9IjEuMyIg''@;'; put 'put ''dHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTExLjIxIDI3LjEyKSByb3RhdGUoLTQ1KSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzMsMjcuNzIsMTkuNjcsMTMuNjZhOC43OSw4Ljc5LDAsMCwwLTEyLTEwLjVM''@;'; put 'put ''MTMsOC41Myw4LjUzLDEzLDMuMTYsNy42N2E4Ljc5LDguNzksMCwwLDAsMTAuNSwxMkwyNy43MiwzMy43M2ExLjA3LDEuMDcsMCwwLDAsMS41LDBsNC41MS00LjUxQTEuMDcsMS4wNywwLDAsMCwzMy43MywyNy43MlpNMjksMjlhMS4zOCwxLjM4LDAsMSwxLDAtMkExLjM4LDEuMzgsMCwwLDEs''@;'; put 'put ''MjksMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVCdWxsc2V5ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMmExNS45MiwxNS45MiwwLDAsMC00LjI1LjU5bC43NywxLjg2YTE0LjA3LDE0LjA3LDAsMSwxLTEwLDEwbC0x''@;'; put 'put ''Ljg2LS43OEExNiwxNiwwLDEsMCwxOCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNy40NSwxNS43YTEwLjgxLDEwLjgxLDAsMSwwLDguMy04LjI2TDE2LjM3LDlBOS4yNCw5LjI0LDAsMSwxLDksMTYuMzJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMi4wOWE0LjA4LDQuMDgsMCwwLDEtNC0zLjY4bC0xLjYzLS42OGMwLC4wOSwwLC4xOCwwLC4yN0E1LjY5LDUuNjksMCwxLDAsMTgsMTIuMzFoLS4yNEwxOC40''@;'; put 'put ''MywxNEE0LjA3LDQuMDcsMCwwLDEsMTgsMjIuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjIsMTMuMzRhLjUuNSwwLDAsMCwuMzUuMTVIMTIuMmw1LjM3LDUuMzdBMSwxLDAsMCwwLDE5LDE3LjQ0TDEz''@;'; put 'put ''LjUzLDEyVjguNTFhLjUuNSwwLDAsMC0uMTUtLjM1TDcuNzksMi41N2EuNS41LDAsMCwwLS44NS4zNXY0SDNhLjUuNSwwLDAsMC0uMzUuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxOC44NWExLDEs''@;'; put 'put ''MCwwLDEtMS40MSwwbC0zLTNBNCw0LDAsMCwwLDEzLjkxLDE4LDQuMDksNC4wOSwwLDEsMCwxOCwxMy45MWE0LDQsMCwwLDAtMiwuNTVsMywzQTEsMSwwLDAsMSwxOSwxOC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMTgsMmExNS45MiwxNS45MiwwLDAsMC00LjI1LjU5bDEuNiwzLjg5QTExLjg5LDExLjg5LDAsMSwxLDYuNDksMTUuM0wyLjYxLDEzLjY4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTgsMTUuOTRBMTAuMTcsMTAuMTcsMCwxLDAsMTYsOGwxLjY5LDQuMTEuMzEsMEE1Ljg4LDUuODgsMCwxLDEsMTIuMTIsMThjMC0uMTIsMC0uMjMsMC0uMzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguMiwxMy4z''@;'; put 'put ''NGEuNS41LDAsMCwwLC4zNS4xNUgxMi4ybDIuMzUsMi4zNUE0LjA5LDQuMDksMCwwLDEsMTYsMTQuNDZMMTMuNTMsMTJWOC41MWEuNS41LDAsMCwwLS4xNS0uMzVMNy43OSwyLjU3YS41LjUsMCwwLDAtLjg1LjM1djRIM2EuNS41LDAsMCwwLS4zNS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTQiIC8+JyksbC5DbHJTaGFwZVRhcmdldD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsNy4yQTEwLjgsMTAuOCwwLDEsMCwyOC44LDE4LDEwLjgxLDEwLjgxLDAsMCwwLDE4LDcuMlptMCwyMEE5LjIsOS4yLDAsMSwxLDI3LjIsMTgsOS4yMSw5LjIxLDAsMCwxLDE4LDI3LjJa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMi4zMUE1LjY5LDUuNjksMCwxLDAsMjMuNjksMTgsNS42OSw1LjY5LDAsMCwwLDE4LDEyLjMxWm0wLDkuNzdBNC4wOSw0LjA5LDAsMSwxLDIyLjA5LDE4LDQu''@;'; put 'put ''MDksNC4wOSwwLDAsMSwxOCwyMi4wOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iNC4wOSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0xOCw3LjgzQTEwLjE3LDEwLjE3LDAsMSwwLDI4LjE3LDE4LDEwLjE4LDEwLjE4LDAsMCwwLDE4LDcuODNabTAsMTZBNS44OCw1Ljg4LDAsMSwxLDIzLjg4LDE4LDUuODgsNS44OCwwLDAsMSwxOCwyMy44OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDI3LjgzQTExLjgzLDExLjgzLDAsMSwxLDI5LjgzLDE4LDExLjg1LDExLjg1LDAsMCwxLDE4LDI5LjgzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMyIgLz4nKSxsLkNsclNoYXBlRmxhbWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjMsMTYuNjZjLTEuMTktMi4wOS03Ljk0LTE0LjE1LTcuOTQtMTQuMTVhMSwxLDAsMCwwLTEuNzUsMGwtNiwxMC42NC0zLTUuMjhhMSwxLDAsMCwwLTEuNzUsMFM1LjQsMTcu''@;'; put 'put ''NzgsNC40MiwxOS41QTkuMyw5LjMsMCwwLDAsMywyNC42MUMzLDI5LjcyLDUuODYsMzQsMTEuNjcsMzRIMjIuNDhDMjguMjgsMzQsMzMsMjksMzMsMjIuNzhBMTEuMTMsMTEuMTMsMCwwLDAsMzEuMywxNi42NlpNMjIuNDgsMzJIMTEuNzdDOC4xMywzMiw1LDI4LjY2LDUsMjQuNjFhNy40Myw3''@;'; put 'put ''LjQzLDAsMCwxLDEuMTYtNC4xM2MuNzMtMS4yOSw0LjA1LTcuMjEsNS42NS0xMC4wN2wzLDUuMjhhMSwxLDAsMCwwLC44Ny41MWgwYTEsMSwwLDAsMCwuODctLjUxTDIyLjQ5LDVjMS44NiwzLjMzLDYuMTUsMTEsNy4wNywxMi42QTkuMjQsOS4yNCwwLDAsMSwzMSwyMi43OEMzMSwyNy44Nywy''@;'; put 'put ''Ny4xOCwzMiwyMi40OCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1Ljc1LDIxLjczYy0uNjUtMS4xNi00LjM4LTcuODEtNC4zOC03LjgxYS44LjgsMCwwLDAtMS40LDBsLTQuMiw3LjQ4LTEuNTktMi40''@;'; put 'put ''OWEuOC44LDAsMCwwLTEuMzUsMEw5LjM3LDI0LjM1YTQuMzUsNC4zNSwwLDAsMC0uODIsMi42LDQuNDksNC40OSwwLDAsMCwuNSwySDExYTMsMywwLDAsMS0uODMtMiwyLjc4LDIuNzgsMCwwLDEsLjU2LTEuNzNsMi44LTQuMzgsMS42NiwyLjZhLjguOCwwLDAsMCwxLjQxLS4xMiw3LjgyLDcu''@;'; put 'put ''ODIsMCwwLDEsLjQtLjhMMjAuNjcsMTZsMy42OSw2LjU3YTQuODMsNC44MywwLDAsMSwuNzcsMi43MUE1LDUsMCwwLDEsMjMuNDYsMjloMi4xM2E2LjY4LDYuNjgsMCwwLDAsMS4xNC0zLjc0LDYuNDUsNi40NSwwLDAsMC0xLTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjMsMTYuMzJjLTEuMTktMi4wOS03Ljk0LTE0LjE1LTcuOTQtMTQuMTVhMSwxLDAsMCwwLTEuNzUsMGwtNiwxMC42NC0zLTUuMjhhMSwxLDAsMCwwLTEuNzUsMFM1LjQsMTcuNDMsNC40MiwxOS4xNUE5LjMsOS4zLDAsMCww''@;'; put 'put ''LDMsMjQuMjZjMCw1LjExLDMuODgsOS42NSw4LjY3LDkuNzRIMjIuNDhDMjguMjgsMzQsMzMsMjguNjIsMzMsMjIuNDRBMTEuMTMsMTEuMTMsMCwwLDAsMzEuMywxNi4zMlpNMjEuNDgsMzJIMTQuNTRBNC42OCw0LjY4LDAsMCwxLDEwLDI3LjQxYTMuOTEsMy45MSwwLDAsMSwuNzUtMi4zNGwz''@;'; put 'put ''LjM1LTUuMjFhLjUuNSwwLDAsMSwuODQsMGwxLjc4LDIuNzcsMC0uMDhjLjYzLTEuMTEsNC4yMy03LjQ4LDQuMjMtNy40OGEuNS41LDAsMCwxLC44NywwczMuNiw2LjM4LDQuMjMsNy40OEE1LjgzLDUuODMsMCwwLDEsMjcsMjUuNzZDMjcsMzIsMjIuMSwzMiwyMS40OCwzMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZUhvdXJnbGFzcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFhNi42Nyw2LjY3LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiwwLDAsMCwyMSwxOGgwYTYuMjksNi4y''@;'; put 'put ''OSwwLDAsMCwxLS42MmwxLjI4LTFBNi42Nyw2LjY3LDAsMCwwLDI2LDExLjA5VjRoM2ExLDEsMCwwLDAsMC0ySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIuNjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYy''@;'; put 'put ''bC0xLjI4LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWk0xMiwyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEsMS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwx''@;'; put 'put ''LDAsMCwwLS42NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjR2Ny4wOWE0LjY2LDQuNjYsMCwwLDEtMS44OCwzLjcybC0xLjI4LDFoMGE0LjY2LDQuNjYsMCwwLDEtMS4xOC42MywxLDEsMCwwLDAtLjY1Ljk0djEuMzRh''@;'; put 'put ''MSwxLDAsMCwwLC42NS45NCw0LjY3LDQuNjcsMCwwLDEsMS4xOS42M2wxLjI4LDFBNC42Niw0LjY2LDAsMCwxLDI0LDI0LjkxVjMySDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFh''@;'; put 'put ''Ni42Nyw2LjY3LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiwwLDAsMCwyMSwxOGgwYTYuMjksNi4yOSwwLDAsMCwxLS42MmwxLjI4LTFhNi42NCw2LjY0LDAsMCwwLDEuMDktMUgyMi4yM2EzLjY0LDMuNjQsMCwwLDEtLjc4LS4wOWwtLjYyLjQ2aDBhNC42Niw0LjY2LDAsMCwx''@;'; put 'put ''LTEuMTguNjMsMSwxLDAsMCwwLS42NS45NHYxLjM0YTEsMSwwLDAsMCwuNjUuOTQsNC42Nyw0LjY3LDAsMCwxLDEuMTkuNjNsMS4yOCwxQTQuNjYsNC42NiwwLDAsMSwyNCwyNC45MVYzMkgxMlYyNC45MWE0LjY2LDQuNjYsMCwwLDEsMS44OC0zLjcybDEuMjgtMWE0LjY2LDQuNjYsMCwwLDEs''@;'; put 'put ''MS4xOC0uNjMsMSwxLDAsMCwwLC42NS0uOTRWMTcuMzNhMSwxLDAsMCwwLS42NS0uOTQsNC42Nyw0LjY3LDAsMCwxLTEuMTktLjYzbC0xLjI4LTFBNC42Niw0LjY2LDAsMCwxLDEyLDExLjA5VjRIMjIuNDVMMjMuNiwySDdBMSwxLDAsMCwwLDcsNGgzdjcuMDlhNi42Nyw2LjY3LDAsMCwwLDIu''@;'; put 'put ''NjksNS4zM2wxLjI4LDFBNi4zNiw2LjM2LDAsMCwwLDE1LDE4aDBhNi4yNyw2LjI3LDAsMCwwLTEsLjYybC0xLjI4LDFBNi42Nyw2LjY3LDAsMCwwLDEwLDI0LjkxVjMySDdhMSwxLDAsMCwwLDAsMkgyOWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEu''@;'; put 'put ''MTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjksMzJIMjZWMjQuOTFhNi42Nyw2LjY3LDAsMCwwLTIuNjktNS4zM2wtMS4yOC0xQTYuMzYsNi4zNiww''@;'; put 'put ''LDAsMCwyMSwxOGgwYTYuMjksNi4yOSwwLDAsMCwxLS42MmwxLjI4LTFhNi42OCw2LjY4LDAsMCwwLDIuNTctNC4xNkE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDl2LjYxYTQuNjYsNC42NiwwLDAsMS0xLjg4LDMuNzJsLTEuMjgsMWgwYTQuNjYsNC42NiwwLDAsMS0xLjE4LjYzLDEsMSwwLDAs''@;'; put 'put ''MC0uNjUuOTR2MS4zNGExLDEsMCwwLDAsLjY1Ljk0LDQuNjcsNC42NywwLDAsMSwxLjE5LjYzbDEuMjgsMUE0LjY2LDQuNjYsMCwwLDEsMjQsMjQuOTFWMzJIMTJWMjQuOTFhNC42Niw0LjY2LDAsMCwxLDEuODgtMy43MmwxLjI4LTFhNC42Niw0LjY2LDAsMCwxLDEuMTgtLjYzLDEsMSwwLDAs''@;'; put 'put ''MCwuNjUtLjk0VjE3LjMzYTEsMSwwLDAsMC0uNjUtLjk0LDQuNjcsNC42NywwLDAsMS0xLjE5LS42M2wtMS4yOC0xQTQuNjYsNC42NiwwLDAsMSwxMiwxMS4wOVY0SDIyLjc4YTcuNDUsNy40NSwwLDAsMSwuODktMkg3QTEsMSwwLDAsMCw3LDRoM3Y3LjA5YTYuNjcsNi42NywwLDAsMCwyLjY5''@;'; put 'put ''LDUuMzNsMS4yOCwxQTYuMzYsNi4zNiwwLDAsMCwxNSwxOGgwYTYuMjcsNi4yNywwLDAsMC0xLC42MmwtMS4yOCwxQTYuNjcsNi42NywwLDAsMCwxMCwyNC45MVYzMkg3YTEsMSwwLDAsMCwwLDJIMjlhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik02LjY3LDRoMjJhMSwxLDAsMCwwLDAtMmgtMjJhMSwxLDAsMSwwLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguNjcsMzJoLTIyYTEsMSwwLDAsMCwwLDJoMjJhMSwxLDAsMSwwLDAtMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNTUsMTUuNjdBNi4wNyw2LjA3LDAsMCwwLDI1LDExLjEyVjZIMTAuMDZ2NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2''@;'; put 'put ''YTExLjQ4LDExLjQ4LDAsMCwwLTIuOTEsMS43Miw2LjA3LDYuMDcsMCwwLDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJhNi4wNyw2LjA3LDAsMCwwLTIuNDUtNC41NSwxMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlBMTEuNDgsMTEuNDgsMCwwLDAsMjIuNTUsMTUuNjdaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTYuNjcsNEgyMi40NUwyMy42LDJINi42N2ExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi41MSwyMC4yN2E2LjA3''@;'; put 'put ''LDYuMDcsMCwwLDAtMi40NSw0LjU1djUuMTJIMjVWMjQuODJhNi4wNyw2LjA3LDAsMCwwLTIuNDUtNC41NSwxMS40OCwxMS40OCwwLDAsMC0yLjkxLTEuNzJWMTcuMzlhMTEuNDgsMTEuNDgsMCwwLDAsMi45MS0xLjcybC4zLS4yN2gtLjYyQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5''@;'; put 'put ''LDZIMTAuMDZ2NS4xMmE2LjA3LDYuMDcsMCwwLDAsMi40NSw0LjU1LDExLjQ4LDExLjQ4LDAsMCwwLDIuOTEsMS43MnYxLjE2QTExLjQ4LDExLjQ4LDAsMCwwLDEyLjUxLDIwLjI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjY3LDMyaC0yMmExLDEsMCwwLDAsMCwyaDIyYTEsMSwwLDEsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJh''@;'; put 'put ''ZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LjY3LDRIMjIuNzhhNy40NSw3LjQ1LDAsMCwxLC44OS0yaC0xN2ExLDEsMCwxLDAsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjIuNTUsMjAuMjdhMTEuNDgsMTEuNDgsMCwwLDAtMi45MS0xLjcyVjE3LjM5YTExLjQ4LDExLjQ4LDAsMCwwLDIuOTEtMS43MkE2LjI1LDYuMjUsMCwwLDAsMjUsMTEuNTUsNy40Nyw3LjQ3LDAsMCwxLDIyLjUsNkgxMC4wNnY1LjEyYTYuMDcsNi4wNywwLDAsMCwyLjQ1LDQuNTUsMTEu''@;'; put 'put ''NDgsMTEuNDgsMCwwLDAsMi45MSwxLjcydjEuMTZhMTEuNDgsMTEuNDgsMCwwLDAtMi45MSwxLjcyLDYuMDcsNi4wNywwLDAsMC0yLjQ1LDQuNTV2NS4xMkgyNVYyNC44MkE2LjA3LDYuMDcsMCwwLDAsMjIuNTUsMjAuMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVOb0FjY2Vzcz0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMjcuMTUsMTVIOC44NUExLjg1LDEuODUsMCwwLDAsNywxNi44NXYyLjI5QTEuODUsMS44NSwwLDAsMCw4Ljg1LDIxSDI3LjE1QTEuODUsMS44NSwwLDAsMCwyOSwxOS4xNVYxNi44NUExLjg1LDEuODUsMCwwLDAsMjcuMTUsMTVabS4yNSw0LjE1YS4yNS4yNSwwLDAsMS0uMjUuMjVI''@;'; put 'put ''OC44NWEuMjUuMjUsMCwwLDEtLjI1LS4yNVYxNi44NWEuMjUuMjUsMCwwLDEsLjI1LS4yNUgyNy4xNWEuMjUuMjUsMCwwLDEsLjI1LjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEs''@;'; put 'put ''MCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0yOS4xNSwyMEg2Ljg1QS44NS44NSwwLDAsMSw2LDE5LjE1VjE2Ljg1QS44NS44NSwwLDAsMSw2Ljg1LDE2SDI5LjE1YS44NS44NSwwLDAsMSwuODUuODV2Mi4yOUEuODUuODUsMCwwLDEsMjkuMTUsMjBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVPcmdhbml6YXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjggMTguOCAyNi4yIDE4LjggMjYuMiAyMS44OCAyNy44IDIxLjg4IDI3LjggMTcuMiAxOC44IDE3LjIgMTguOCAxNCAxNy4yIDE0IDE3LjIgMTcu''@;'; put 'put ''MiA4LjIgMTcuMiA4LjIgMjEuODggOS44IDIxLjg4IDkuOCAxOC44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyM0g0YTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDE0YTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MjVBMiwyLDAsMCwwLDE0LDIzWk00LDMxVjI1SDE0djZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwyM0gyMmEyLDIsMCwwLDAtMiwydjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI1QTIs''@;'; put 'put ''MiwwLDAsMCwzMiwyM1pNMjIsMzFWMjVIMzJ2NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLDEzSDIzYTIsMiwwLDAsMCwyLTJWNWEyLDIsMCwwLDAtMi0ySDEzYTIsMiwwLDAsMC0yLDJ2NkEyLDIsMCww''@;'; put 'put ''LDAsMTMsMTNabTAtOEgyM3Y2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44''@;'; put 'put ''IDE0IDE3LjIgMTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4LjgiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIg''@;'; put 'put ''cnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjMiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGwuQ2xyU2hhcGVCYWxhbmNlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwzM0gxMmEx''@;'; put 'put ''LDEsMCwwLDEsMC0ySDI0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSI5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyMi41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw3SDhBMSwxLDAsMCwxLDgsNUgyOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuOTMsMjQuNzlhNy4yMyw3''@;'; put 'put ''LjIzLDAsMCwxLTUuODEtMi44OWwtLjYtLjgsMS41OS0xLjIxLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSwyNi45MywyNC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMwLjUxLDE5LjI1YS44LjgsMCwwLDEtLjczLS40OEwyNi45MywxMi4ybC0yLjg1LDYuNTdhLjguOCwwLDAsMS0xLjQ3LS42NEwyNi4yLDkuODdhLjgzLjgzLDAsMCwxLDEuNDcsMGwzLjU4LDguMjZhLjguOCwwLDAsMS0uNzMsMS4xMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuNjgsMjQuNzlBNy4yMyw3LjIzLDAsMCwxLDMuODgsMjEuOWwtLjYtLjhMNC44NiwxOS45bC42LjhhNS4yOCw1LjI4LDAsMCwwLDguNDIsMGwuNi0uOCwxLjU5LDEuMjEtLjYuOEE3LjIz''@;'; put 'put ''LDcuMjMsMCwwLDEsOS42OCwyNC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjI2LDE5LjI1YS44LjgsMCwwLDEtLjczLS40OEw5LjY4LDEyLjIsNi44NCwxOC43N2EuOC44LDAsMCwxLTEuNDctLjY0''@;'; put 'put ''TDguOTUsOS44N2EuODMuODMsMCwwLDEsMS40NywwTDE0LDE4LjEzYS44LjgsMCwwLDEtLjczLDEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxsLkNsclNoYXBlSWRCYWRnZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjJhNC4y''@;'; put 'put ''Myw0LjIzLDAsMSwwLTQuMjMtNC4yM0E0LjIzLDQuMjMsMCwwLDAsMTgsMjJabTAtNi44NmEyLjYzLDIuNjMsMCwxLDEtMi42MywyLjYzQTIuNjMsMi42MywwLDAsMSwxOCwxNS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTIyLDRhMiwyLDAsMCwwLTItMkgxNmEyLDIsMCwwLDAtMiwydjdoOFpNMjAsOUgxNlY0aDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMFYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYt''@;'; put 'put ''LjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlhOC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsNkgyNFY4aDRWMzJIOFY4aDRWNkg4QTIsMiwwLDAsMCw2LDhWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDI4LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAsMCwxOCwyMlptMC02Ljg2YTIuNjMsMi42MywwLDEsMS0yLjYzLDIuNjNBMi42MywyLjYzLDAsMCwxLDE4LDE1LjE0WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMGgxLjZWMjcuODdBOC4zMyw4LjMzLDAsMCwxLDE4LDI1LjI5YTguMzMsOC4zMywwLDAsMSw2''@;'; put 'put ''LjQsMi41OVYzMEgyNlYyNy43YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTE5LDkuODksMTkuNTYsOUgxNlY0aDRWOC4yNGwyLTMuNDZWNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g0LjY0QTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMkg4VjhoNFY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1h''@;'; put 'put ''bGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIyYTQuMjMsNC4yMywwLDEsMC00LjIzLTQuMjNBNC4yMyw0LjIzLDAsMCwwLDE4LDIyWm0wLTYuODZhMi42MywyLjYzLDAsMSwxLTIu''@;'; put 'put ''NjMsMi42M0EyLjYzLDIuNjMsMCwwLDEsMTgsMTUuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNGEyLDIsMCwwLDAtMi0ySDE2YTIsMiwwLDAsMC0yLDJ2N2g4Wk0yMCw5''@;'; put 'put ''SDE2VjRoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwaDEuNlYyNy44N0E4LjMzLDguMzMsMCwwLDEsMTgsMjUuMjlh''@;'; put 'put ''OC4zMyw4LjMzLDAsMCwxLDYuNCwyLjU5VjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2Vk''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEzLjIyVjMySDhWOGg0VjZIOEEyLDIsMCwwLDAsNiw4VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlYxMy41QTcuNDksNy40OSwwLDAsMSwyOCwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjE4IiBjeT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yNiwyN2ExLjEzLDEuMTMsMCwwLDAtLjI2LjczVjMwSDI2VjI3LjdhMS4xMiwxLjEyLDAsMCwwLS4yNi0uNzNBOS45LDkuOSwwLDAsMCwxOCwyMy42OSw5LjksOS45LDAsMCwwLDEwLjI2LDI3WiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCw2SDIzVjhoNVYzMkg4VjhoNVY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjgsNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOS44OSwyMSw2LjVWNGEyLDIsMCwwLDAtMi0ySDE3YTIsMiwwLDAsMC0yLDJ2Nmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuMjYsMjdhMS4xMywxLjEzLDAsMCwwLS4yNi43M1YzMEgyNlYyNy43''@;'; put 'put ''YTEuMTIsMS4xMiwwLDAsMC0uMjYtLjczQTkuOSw5LjksMCwwLDAsMTgsMjMuNjksOS45LDkuOSwwLDAsMCwxMC4yNiwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYz''@;'; put 'put ''Mkg4VjhoNVY2SDhBMiwyLDAsMCwwLDYsOFYzMmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4x''@;'; put 'put ''MywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTcuNzciIHI9IjQuMjMiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDRhMiwyLDAsMCwwLTItMkgxN2EyLDIs''@;'; put 'put ''MCwwLDAtMiwydjZoNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjI2LDI3YTEuMTMsMS4xMywwLDAsMC0uMjYuNzNWMzBIMjZWMjcuN2ExLjEyLDEuMTIsMCwwLDAtLjI2LS43M0E5''@;'; put 'put ''LjksOS45LDAsMCwwLDE4LDIzLjY5LDkuOSw5LjksMCwwLDAsMTAuMjYsMjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOCwxMy4yMlYzMkg4VjhoNVY2SDhBMiwyLDAsMCwwLDYsOFYz''@;'; put 'put ''MmEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjgsMTMuMjJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIg''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVSZXBlYXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik02LDE0''@;'; put 'put ''LjE1QTMuMTcsMy4xNywwLDAsMSw5LjE3LDExSDI4LjRsLTQuMjgsNC41NGExLDEsMCwxLDAsMS40NiwxLjM3TDMyLjA5LDEwLDI1LjU4LDMuMDlhMSwxLDAsMSwwLTEuNDYsMS4zN0wyOC40LDlIOS4xN0E1LjE3LDUuMTcsMCwwLDAsNCwxNC4xNXY2LjFsMi0yLjEyWiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMCwyMS44NUEzLjE3LDMuMTcsMCwwLDEsMjYuODMsMjVINy42bDQuMjgtNC41NGExLDEsMCwxLDAtMS40Ni0xLjM3TDMuOTEsMjZsNi41MSw2LjkxYTEsMSwwLDEsMCwxLjQ2LTEuMzdMNy42''@;'; put 'put ''LDI3SDI2LjgzQTUuMTcsNS4xNywwLDAsMCwzMiwyMS44NXYtNi4xbC0yLDIuMTJaIi8+JyksbC5DbHJTaGFwZUZpbGVHcm91cD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDM0SDEzYTEsMSwwLDAsMS0x''@;'; put 'put ''LTFWMTFhMSwxLDAsMCwxLDEtMUgzMWExLDEsMCwwLDEsMSwxVjMzQTEsMSwwLDAsMSwzMSwzNFpNMTQsMzJIMzBWMTJIMTRaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgeD0iMTYiIHk9IjE2IiB3aWR0aD0iMTIiIGhl''@;'; put 'put ''aWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjE2IiB5PSIyMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC00IiB4PSIxNiIgeT0iMjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTYsMjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAs''@;'; put 'put ''MCwxLDFINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiBkPSJNMTAsMjhWOEgyOFY3YTEsMSwwLDAsMC0xLTFIOUExLDEsMCwwLDAsOCw3VjI5YTEsMSwwLDAsMCwxLDFoMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMSwxMEgxM2ExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwxLDFIMzFhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzEsMTBaTTI4LDI2SDE2VjI0SDI4Wm0wLTRIMTZWMjBIMjhabTAtNEgxNlYxNkgyOFoiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik02LDI0VjRIMjRWM2ExLDEsMCwwLDAtMS0xSDVBMSwxLDAsMCwwLDQsM1YyNWExLDEsMCwwLDAsMSwxSDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTAsMjhWOEgyOFY3YTEsMSwwLDAsMC0xLTFIOUExLDEsMCwwLDAsOCw3VjI5YTEsMSwwLDAsMCwxLDFoMVoiLz4nKSxsLkNsclNoYXBlUGFwZXJjbGlwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xIiBkPSJNOC40MiwzMi42QTYuMyw2LjMsMCwwLDEsNCwzMC43OWwtLjEzLS4xM0E2LjIsNi4yLDAsMCwxLDIsMjYuMjIsNi43Nyw2Ljc3LDAsMCwxLDQsMjEuNEwxOS41LDYuMDdhOC42Nyw4LjY3LDAsMCwxLDEyLjE1LS4zNUE4LDgsMCwwLDEsMzQsMTEuNDRhOSw5LDAs''@;'; put 'put ''MCwxLTIuNyw2LjM2TDE3LjM3LDMxLjZBMSwxLDAsMSwxLDE2LDMwLjE4TDI5Ljg5LDE2LjM4QTcsNywwLDAsMCwzMiwxMS40NGE2LDYsMCwwLDAtMS43Ni00LjMsNi42Nyw2LjY3LDAsMCwwLTkuMzQuMzVMNS40NSwyMi44MkE0Ljc4LDQuNzgsMCwwLDAsNCwyNi4yMmE0LjIxLDQuMjEsMCww''@;'; put 'put ''LDAsMS4yNCwzbC4xMy4xM2E0LjY0LDQuNjQsMCwwLDAsNi41LS4yMUwyNS4yMiwxNS45NEEyLjcsMi43LDAsMCwwLDI2LDE0YTIuMzUsMi4zNSwwLDAsMC0uNjktMS42OCwyLjYxLDIuNjEsMCwwLDAtMy42Ni4xM2wtOS4yLDkuMTJhMSwxLDAsMSwxLTEuNDEtMS40MkwyMC4yOCwxMWE0LjYy''@;'; put 'put ''LDQuNjIsMCwwLDEsNi40OC0uMTNBNC4zMyw0LjMzLDAsMCwxLDI4LDE0YTQuNjgsNC42OCwwLDAsMS0xLjQxLDMuMzRMMTMuMjgsMzAuNThBNi45MSw2LjkxLDAsMCwxLDguNDIsMzIuNloiLz4nKSxsLkNsclNoYXBlU2hyaW5rPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTVIMjIuNDFsOS4yNS05LjI1YTEsMSwwLDAsMC0xLjQxLTEuNDFMMjEsMTMuNTlWNGExLDEsMCwwLDAtMiwwVjE3SDMyYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTQsMTlhMSwxLDAsMCwwLDAsMmg5LjU5TDQuMzMsMzAuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwxNSwyMi40MVYzMmExLDEsMCwwLDAsMiwwVjE5WiIvPicpLGwuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5MT0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMTQuNDQsMzEuOTRhNy4zMSw3LjMxLDAsMCwxLTUuNy0xMS44OEw3LjMyLDE4LjY0YTkuMyw5LjMsMCwwLDAsMTMuMSwxMy4xMUwxOSwzMC4zM0E3LjI5LDcuMjksMCwwLDEsMTQuNDQsMzEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4zNiwxLjY3YTQuMTIsNC4xMiwwLDEsMCw0LjExLDQuMTFBNC4xMiw0LjEyLDAsMCwwLDI1LjM2LDEuNjdabTAsNi4yM2EyLjEyLDIuMTIsMCwxLDEsMi4xMS0yLjEyQTIuMTIsMi4xMiwwLDAsMSwyNS4zNiw3LjlaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41NiwxOC4xOGgtNWExLDEsMCwwLDAtLjI0LjA1bDMuMDktMy41NWEyLjgzLDIuODMsMCwwLDAtLjY5LTQuMzNsLTgtNC42YTEsMSwwLDAsMC0xLjEyLjA4TDkuODMsOS41OEExLDEsMCwwLDAs''@;'; put 'put ''OS42NiwxMWExLDEsMCwwLDAsLjc5LjM4LDEsMSwwLDAsMCwuNjEtLjIxbDQuMjctMy4zNCwzLjExLDEuNzctNS4wOCw1Ljc4aDBhOS4yOCw5LjI4LDAsMCwwLTQuNTMsMS44M2wxLjQzLDEuNDNBNy4zLDcuMywwLDAsMSwyMC40MiwyOC44MWwxLjQyLDEuNDNhOS4yNyw5LjI3LDAsMCwwLC43''@;'; put 'put ''Ny0xMC4wNmgyLjgybC0uNzcsNi41MWExLDEsMCwwLDAsLjg4LDEuMTFoLjEyYTEsMSwwLDAsMCwxLS44OGwuOS03LjYyYTEsMSwwLDAsMC0uMjUtLjc4QTEsMSwwLDAsMCwyNi41NiwxOC4xOFptLTYuMzctNy41NiwyLjUyLDEuNDZhLjc5Ljc5LDAsMCwxLC40LjU5LjgxLjgxLDAsMCwxLS4y''@;'; put 'put ''LjY5TDE5Ljc1LDE3QTkuMTcsOS4xNywwLDAsMCwxNiwxNS40NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0Ljc3LDMxLjk0YTcuMzEsNy4zMSwwLDAsMS01LjctMTEuODhMNy42NSwxOC42NGE5LjMsOS4z''@;'; put 'put ''LDAsMCwwLDEzLjEsMTMuMTFsLTEuNDItMS40MkE3LjI5LDcuMjksMCwwLDEsMTQuNzcsMzEuOTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjY1LDIuMWEzLjEyLDMuMTIsMCwxLDAsMy4xMSwzLjEyQTMuMTIs''@;'; put 'put ''My4xMiwwLDAsMCwyNi42NSwyLjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LjgxLDE4LjE4SDIxLjQ3cS0uMzEtLjMzLS42Ni0uNjNsNC4zOC00Ljg2YTIuMTQsMi4xNCwwLDAsMC0uNTMtMy4yN0wyMC45LDcu''@;'; put 'put ''MjNsMCwwTDE3LjA1LDUuMDdhMSwxLDAsMCwwLTEuMTEuMDhMMTEuMTUsOC45YTEsMSwwLDAsMCwxLjIzLDEuNThsNC4yNy0zLjM0LDIuODcsMS42M0wxMy42LDE1LjM5YTkuMzMsOS4zMywwLDAsMC00LjQ0LDEuODJsMS40MiwxLjQzQTcuMyw3LjMsMCwwLDEsMjAuNzUsMjguODFsMS40Mywx''@;'; put 'put ''LjQzQTkuMjcsOS4yNywwLDAsMCwyMywyMC4xOGgyLjc0bC0uNzcsNi41MWExLDEsMCwwLDAsLjg3LDEuMTFoLjEyYTEsMSwwLDAsMCwxLS44OGwuOS03LjYyYTEsMSwwLDAsMC0uMjUtLjc4QTEsMSwwLDAsMCwyNi44MSwxOC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMiIC8+JyksbC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC4wNiwxMWgtMjRhMSwxLDAsMSwwLDAsMkgxNHY5LjY1czAsMCwwLDBsLTMuNzUsMTBhMSwxLDAsMCwwLC41OCwxLjI5LDEuMTMsMS4xMywwLDAsMCwuMzYuMDYsMSwxLDAs''@;'; put 'put ''MCwwLC45My0uNjVMMTUuNjIsMjRoNC43NmwzLjUyLDkuMzVhMSwxLDAsMCwwLC45My42NSwxLjEzLDEuMTMsMCwwLDAsLjM2LS4wNiwxLDEsMCwwLDAsLjU4LTEuMjlMMjIsMjIuNjhzMCwwLDAsMFYxM2g4LjA2YTEsMSwwLDEsMCwwLTJaTTIwLDIySDE2VjEzaDRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMGE0LDQsMCwxLDAtNC00QTQsNCwwLDAsMCwxOCwxMFptMC02YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE3Ljk2IiBjeT0iNSIgcj0iMyIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEg2YTEsMSwwLDAsMCwwLDJoOHY4LjM2czAsMCwwLDBMMTAuMTEsMzMu''@;'; put 'put ''MTdhMSwxLDAsMCwwLC42NiwxLjI1LDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsMS0uNzFsMy4yOS0xMC44NGg1LjM4TDI0LDMzLjc1YTEsMSwwLDAsMCwxLC43MSwxLjU1LDEuNTUsMCwwLDAsLjI5LDAsMSwxLDAsMCwwLC42Ni0xLjI1TDIyLDIwLjRzMCwwLDAsMFYxMmg4YTEs''@;'; put 'put ''MSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVTb3J0Qnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LjU0LDEzSDcuNDZhMSwxLDAsMCwxLDAtMkgyOC41NGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuMTcsMTlINy40NmExLDEsMCwwLDEsMC0ySDIxLjE3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xMy43NCwyNUg3LjQ2YTEsMSwwLDAsMSwwLTJoNi4yOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksbC5DbHJTaGFwZUNvbGxhcHNlQ2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMjFI''@;'; put 'put ''M2ExLDEsMCwwLDAtMSwxdjZhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjIyQTEsMSwwLDAsMCwzMywyMVptLTEsNkg0VjIzSDMyWiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjAuMjJsNS42''@;'; put 'put ''NS01LjY1YS44MS44MSwwLDAsMCwwLTEuMTQuOC44LDAsMCwwLTEuMTMsMEwxOCwxOGwtNC41Mi00LjUyYS44LjgsMCwwLDAtMS4xMywwLC44MS44MSwwLDAsMCwwLDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwxNC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAtMS4xMywwTDE4LDEyLDEzLjQ4LDcuNDNhLjguOCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMiIgeT0iMjIiIHdpZHRoPSIzMiIgaGVpZ2h0PSI4IiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjAuN2wtNS43OS01Ljc5YTEsMSwwLDAsMSwwLTEu''@;'; put 'put ''NDEsMSwxLDAsMCwxLDEuNDEsMEwxOCwxNy44N2w0LjM4LTQuMzdhMSwxLDAsMCwxLDEuNDEsMCwxLDEsMCwwLDEsMCwxLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC41LDEyLjIxLDguNzFhMSwxLDAs''@;'; put 'put ''MCwxLDAtMS40MiwxLDEsMCwwLDEsMS40MSwwTDE4LDExLjY3bDQuMzgtNC4zOGExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVFeHBhbmRDYXJkPSgwLGEuY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0zMyw2SDNBMSwxLDAsMCwwLDIsN1YyOWExLDEsMCwwLDAsMSwxSDMzYTEsMSwwLDAsMCwxLTFWN0ExLDEsMCwwLDAsMzMsNlpNMzIsMjhINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xMy40OCwxNS44NiwxOCwxMS4zNGw0LjUyLDQuNTJhLjc3Ljc3LDAsMCwwLC41Ni4yNC44MS44MSwwLDAsMCwuNTctMS4zN0wxOCw5LjA4bC01LjY1LDUuNjVhLjguOCwwLDEsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTEzLjQ4LDIxLjg2LDE4LDE3LjM0bDQuNTIsNC41MmEuNzcuNzcsMCwwLDAsLjU2LjI0LjgxLjgxLDAsMCwwLC41Ny0xLjM3TDE4LDE1LjA4bC01LjY1LDUuNjVhLjguOCwwLDEsMCwxLjEzLDEuMTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCwzMyw2Wk0yMy43OSwyMS40MWExLDEsMCwwLDEtMS40MSwwTDE4LDE3bC00LjM4LDQuMzhhMSwxLDAsMCwx''@;'; put 'put ''LTEuNDEsMCwxLDEsMCwwLDEsMC0xLjQyTDE4LDE0LjIsMjMuNzksMjBBMSwxLDAsMCwxLDIzLjc5LDIxLjQxWm0wLTYuMmExLDEsMCwwLDEtMS40MSwwTDE4LDEwLjgzbC00LjM4LDQuMzhhMSwxLDAsMCwxLTEuNDEsMCwxLDEsMCwwLDEsMC0xLjQyTDE4LDhsNS43OSw1Ljc5QTEsMSwwLDAs''@;'; put 'put ''MSwyMy43OSwxNS4yMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZUJyaWVmY2FzZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMjhhMCwwLDAsMCwxLDAsMEg0VjIxLjMyYTcuMSw3LjEsMCwwLDEtMi0xLjQzVjI4YTIsMiww''@;'; put 'put ''LDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS44OWE2Ljc0LDYuNzQsMCwwLDEtMiwxLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjUsMjIuNGExLDEsMCwwLDAsMS0xVjE1Ljk0SDI0VjE4SDE0djJIMjR2MS40QTEsMSww''@;'; put 'put ''LDAsMCwyNSwyMi40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMsNkgyNFY0LjM4QTIuNDIsMi40MiwwLDAsMCwyMS41NSwyaC03LjFBMi40MiwyLjQyLDAsMCwwLDEyLDQuMzhWNkgzQTEsMSwwLDAsMCwyLDd2OGE1LDUsMCww''@;'; put 'put ''LDAsNSw1aDN2MS40YTEsMSwwLDAsMCwyLDBWMTUuOTRIMTBWMThIN2EzLDMsMCwwLDEtMy0zVjhIMzJ2N2EzLDMsMCwwLDEtMywzSDI4djJoMWE1LDUsMCwwLDAsNS01VjdBMSwxLDAsMCwwLDMzLDZaTTIyLDZIMTRWNC40M0EuNDUuNDUsMCwwLDEsMTQuNDUsNGg3LjExYS40My40MywwLDAs''@;'; put 'put ''MSwuNDQuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbjxwYXRoIGQ9Ik0zMCwxOEE0LjA2LDQuMDYsMCwwLDAsMzQsMTRWNkgyNFY0LjQzQTIuNDQsMi40NCwwLDAsMCwyMS41NSwyaC03LjFBMi40NCwyLjQ0LDAsMCwwLDEyLDQuNDNWNkgydjhB''@;'; put 'put ''NC4wNiw0LjA2LDAsMCwwLDYuMDUsMThoNFYxNS45MmgydjUuN2ExLDEsMCwxLDEtMiwwVjIwLjA2SDYuMDZBNi4wNiw2LjA2LDAsMCwxLDIsMTguNDl2OS40NWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTguNDlhNiw2LDAsMCwxLTQuMDYsMS41N0gyOFYxOFpNMTQsNC40M0Eu''@;'; put 'put ''NDUuNDUsMCwwLDEsMTQuNDUsNGg3LjFhLjQ1LjQ1LDAsMCwxLC40NS40M1Y2SDE0Wk0yNiwyMS42MmExLDEsMCwxLDEtMiwwVjIwLjA2SDE0VjE4SDI0VjE1LjkyaDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVDb2xvclBpY2tlcj0o''@;'; put 'put ''MCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMTAuMDVhNS4wNyw1LjA3LDAsMCwwLC4xLTcuMTdBNS4wNiw1LjA2LDAsMCwwLDI2LDNMMjAuNzgsOC4xNWEyLjEzLDIuMTMsMCwwLDEtMywwbC0uNjctLjY3TDE1LjcyLDguOTIsMjcuMDgsMjAuMjhsMS40Mi0xLjQyLS42Ny0uNjdhMi4x''@;'; put 'put ''MywyLjEzLDAsMCwxLDAtM1pNMjYuNDQsMTMuOGE0LjA3LDQuMDcsMCwwLDAtMS4wOCwxLjkybC01LjA4LTUuMDhBNC4wNyw0LjA3LDAsMCwwLDIyLjIsOS41Nmw1LjE2LTUuMTdhMy4wOSwzLjA5LDAsMCwxLDQuMzUtLjEsMy4wOSwzLjA5LDAsMCwxLS4xLDQuMzVaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik03LjMsMzEuNTFhMiwyLDAsMSwxLTIuODMtMi44M0wxOC41OCwxNC41N2wtMS40Mi0xLjQxTDMuMDUsMjcuMjdhNCw0LDAsMCwwLS42OCw0LjhMLjg5LDMzLjU1QTEsMSwwLDAsMCwuODksMzVhMSwxLDAsMCwwLDEu''@;'; put 'put ''NDIsMGwxLjQzLTEuNDRhMy45MywzLjkzLDAsMCwwLDIuMDkuNiw0LjA2LDQuMDYsMCwwLDAsMi44OC0xLjJMMjIuODIsMTguODEsMjEuNDEsMTcuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTMzLjczLDIuMTFhNC4wOSw0LjA5''@;'; put 'put ''LDAsMCwwLTUuNzYuMUwyMi44MSw3LjM4YTMuMTMsMy4xMywwLDAsMS00LjMuMTFMMTcuMDksOC45MSwyNywxOC43OWwxLjQyLTEuNDJBMy4xOCwzLjE4LDAsMCwxLDI4LjQ2LDEzbDUuMTctNS4xN0E0LjA4LDQuMDgsMCwwLDAsMzMuNzMsMi4xMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMjIuMTgsMTYuNzksNy40NiwzMS41MWEyLDIsMCwxLDEtMi44Mi0yLjgzTDE5LjM1LDE0bC0xLjQxLTEuNDFMMy4yMiwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwxLjA2LDMzLjU1YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLDEuNDEs''@;'; put 'put ''MGwxLjQ0LTEuNDRhMy45MywzLjkzLDAsMCwwLDIuMDkuNiw0LjA2LDQuMDYsMCwwLDAsMi44OC0xLjJMMjMuNiwxOC4yMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZUNvcHlUb0NsaXBib2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNMjIuNiw0SDIxLjU1YTMuODksMy44OSwwLDAsMC03LjMxLDBIMTMuNEEyLjQxLDIuNDEsMCwwLDAsMTEsNi40VjEwSDI1VjYuNEEyLjQxLDIuNDEsMCwwLDAsMjIuNiw0Wk0yMyw4SDEzVjYuMjVBLjI1LjI1LDAsMCwxLDEzLjI1LDZoMi42OWwuMTItMS4xMUExLjI0LDEuMjQsMCww''@;'; put 'put ''LDEsMTYuNjEsNGEyLDIsMCwwLDEsMy4xNSwxLjE4bC4wOS44NGgyLjlhLjI1LjI1LDAsMCwxLC4yNS4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTMzLjI1LDE4LjA2SDIxLjMzbDIuODQtMi44M2ExLDEsMCwxLDAtMS40Mi0x''@;'; put 'put ''LjQyTDE3LjUsMTkuMDZsNS4yNSw1LjI1YTEsMSwwLDAsMCwuNzEuMjksMSwxLDAsMCwwLC43MS0xLjdsLTIuODQtMi44NEgzMy4yNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjksMTZoMlY2LjY4QTEu''@;'; put 'put ''NjYsMS42NiwwLDAsMCwyOS4zNSw1SDI3LjA4VjdIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbjxwYXRoIGQ9Ik0yOSwzMUg3VjdIOVY1SDYuNjRBMS42NiwxLjY2LDAsMCwwLDUsNi42N1YzMS4zMkExLjY2LDEuNjYsMCwwLDAsNi42NSwzM0gy''@;'; put 'put ''OS4zNkExLjY2LDEuNjYsMCwwLDAsMzEsMzEuMzNWMjIuMDZIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxsLkNsclNoYXBlRHJhZ0hhbmRsZT0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxNSIgY3k9IjEyIiByPSIxLjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE1IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxMiIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxjaXJjbGUgY3g9IjIxIiBjeT0iMTgiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUiIC8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxsLkNsclNoYXBlRmlsdGVyMj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsMTFIM2ExLDEsMCwwLDAsMCwy''@;'; put 'put ''SDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yOCwxN0g4YTEsMSwwLDAsMCwwLDJIMjhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxu''@;'; put 'put ''PHBhdGggZD0iTTIzLDIzSDEzYTEsMSwwLDAsMCwwLDJIMjNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVNb29uPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwyNy4xOWExLDEsMCwwLDAtMS0u''@;'; put 'put ''NTZjLS4yOCwwLS41NiwwLS44NSwwQTExLDExLDAsMCwxLDI0LjkyLDUuNjFhMSwxLDAsMCwwLC42MS0xLDEsMSwwLDAsMC0uNjctLjkxLDE0LjcsMTQuNywwLDAsMC01LS44NywxNS4xMiwxNS4xMiwwLDAsMCwwLDMwLjI0LDE0Ljc4LDE0Ljc4LDAsMCwwLDExLTQuODFBMSwxLDAsMCwwLDMx''@;'; put 'put ''LDI3LjE5Wk0xOS44OSwzMS4xMmExMy4xMiwxMy4xMiwwLDAsMSwwLTI2LjI0LDExLjgxLDExLjgxLDAsMCwxLDIsLjE2LDEzLDEzLDAsMCwwLDUuNzIsMjMuNTNBMTIuNzUsMTIuNzUsMCwwLDEsMTkuODksMzEuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz5cbjxwYXRoIGQ9Ik0yOS4yLDI2LjcyQTEyLjA3LDEyLjA3LDAsMCwxLDIyLjksNC40NCwxMy42OCwxMy42OCwwLDAsMCwxOS40OSw0YTE0LDE0LDAsMCwwLDAsMjgsMTMuODIsMTMuODIsMCwwLDAsMTAuOS01LjM0QTExLjcxLDExLjcxLDAsMCwxLDI5LjIsMjYuNzJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVTdW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDYuMzFhMSwxLDAsMCwwLDEtMVYxLjkxYTEsMSwwLDAsMC0yLDB2My40QTEsMSwwLDAsMCwxOCw2LjMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMTgsMjkuNjlhMSwxLDAsMCwwLTEsMXYzLjRhMSwxLDAsMCwwLDIsMHYtMy40QTEsMSwwLDAsMCwxOCwyOS42OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuPHBhdGggZD0iTTguMzIs''@;'; put 'put ''OS43NEExLDEsMCwwLDAsOSwxMGExLDEsMCwwLDAsLjcxLS4yOSwxLDEsMCwwLDAsMC0xLjQyTDcuMzMsNS45MkExLDEsMCwwLDAsNS45Miw3LjMzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjY4LDI2LjI2YTEsMSwwLDEsMC0x''@;'; put 'put ''LjQyLDEuNDJsMi40MSwyLjRhMSwxLDAsMCwwLC43MS4zLDEsMSwwLDAsMCwuNy0uMywxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTYuMzEsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''My40QTEsMSwwLDAsMCw2LjMxLDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTM0LjA5LDE3aC0zLjRhMSwxLDAsMSwwLDAsMmgzLjRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC02IiAvPjxwYXRoIGQ9Ik04LjMyLDI2LjI2bC0yLjQsMi40MWExLDEsMCwwLDAsLjcsMS43MSwxLDEsMCwwLDAsLjcxLS4zbDIuNDEtMi40YTEsMSwwLDEsMC0xLjQyLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMjcsMTBh''@;'; put 'put ''MSwxLDAsMCwwLC43MS0uMjlsMi40LTIuNDFhMSwxLDAsMCwwLDAtMS40MSwxLDEsMCwwLDAtMS40MSwwbC0yLjQxLDIuNGExLDEsMCwwLDAsMCwxLjQyQTEsMSwwLDAsMCwyNywxMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPjxwYXRoIGQ9Ik0xOC4x''@;'; put 'put ''Myw3Ljc1YTEwLjEzLDEwLjEzLDAsMSwwLDEwLDEwLjEzQTEwLjA4LDEwLjA4LDAsMCwwLDE4LjEzLDcuNzVabTAsMTguMjVhOC4xMyw4LjEzLDAsMSwxLDgtOC4xMkE4LjA4LDguMDgsMCwwLDEsMTguMTMsMjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMTgsNi40MmExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMFY1LjQyQTEsMSwwLDAsMCwxOCw2LjQyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjkuNThhMSwxLDAsMCwwLTEsMXYzLjUxYTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWMzAuNThBMSwxLDAsMCwwLDE4LDI5LjU4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNOC40LDkuODFBMSwxLDAsMCwwLDkuODEsOC40TDcuMzMsNS45MkExLDEsMCwwLDAsNS45Miw3LjMzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMjcuNiwyNi4xOWExLDEsMCwwLDAtMS40MSwxLjQxbDIuNDgsMi40OGExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48cGF0aCBkPSJNNi40MiwxOGExLDEsMCwwLDAtMS0x''@;'; put 'put ''SDEuOTFhMSwxLDAsMCwwLDAsMkg1LjQyQTEsMSwwLDAsMCw2LjQyLDE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMzQuMDksMTdIMzAuNThhMSwxLDAsMCwwLDAsMmgzLjUxYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC02IiAvPjxwYXRoIGQ9Ik04LjQsMjYuMTksNS45MiwyOC42N2ExLDEsMCwwLDAsMS40MSwxLjQxTDkuODEsMjcuNkExLDEsMCwwLDAsOC40LDI2LjE5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNyIgLz48cGF0aCBkPSJNMjcuNiw5Ljgx''@;'; put 'put ''bDIuNDgtMi40OGExLDEsMCwwLDAtMS40MS0xLjQxTDI2LjE5LDguNEExLDEsMCwwLDAsMjcuNiw5LjgxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOCIgLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIxMCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtOSIgLz4nKSxsLkNsclNoYXBlV2FuZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LjEsNCwzMS43MSwxLjZhMS44MywxLjgzLDAsMCwwLTEuMzEtLjU0aDBhMi4wNSwyLjA1LDAsMCwwLTEuNDUu''@;'; put 'put ''NjJMMS43NiwyOS4yM0EyLDIsMCwwLDAsMS42OCwzMmwyLjQsMi40M0ExLjgzLDEuODMsMCwwLDAsNS4zOSwzNWgwYTIuMDUsMi4wNSwwLDAsMCwxLjQ1LS42MkwzNCw2Ljc5QTIsMiwwLDAsMCwzNC4xLDRaTTUuNDIsMzIuOTMsMy4xNiwzMC42NWgwTDI0LjExLDkuNDNsMi4yNSwyLjI4Wk0z''@;'; put 'put ''Mi42MSw1LjM5bC01LjEyLDUuMThMMjUuMjQsOC4yOWw1LjEzLTUuMiwyLjI1LDIuMjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLjUzLDIwLjQ3bDIuMDktMi4wOWEuOC44LDAsMCwwLTEuMTMtMS4xM2wt''@;'; put 'put ''Mi4wOSwyLjA5LTIuMDktMi4wOWEuOC44LDAsMCwwLTEuMTMsMS4xM2wyLjA5LDIuMDktMi4wOSwyLjA5YS44LjgsMCwwLDAsMS4xMywxLjEzbDIuMDktMi4wOSwyLjA5LDIuMDlhLjguOCwwLDAsMCwxLjEzLTEuMTNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0Ljc4LDYuNTFhLjguOCwwLDAsMCwxLjEzLDBMMTcuNCw1bDEuNDksMS40OUEuOC44LDAsMCwwLDIwLDUuMzhMMTguNTQsMy44OSwyMCwyLjRhLjguOCwwLDAsMC0xLjEzLTEuMTNMMTcuNCwyLjc2LDE1LjkxLDEuMjdBLjguOCwwLDEsMCwx''@;'; put 'put ''NC43OCwyLjRsMS40OSwxLjQ5TDE0Ljc4LDUuMzhBLjguOCwwLDAsMCwxNC43OCw2LjUxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIGQ9Ik04LjMzLDE1LjI2YS44LjgsMCwwLDAsMS4xMywwbDEuMTYtMS4xNiwxLjE2''@;'; put 'put ''LDEuMTZhLjguOCwwLDEsMCwxLjEzLTEuMTNMMTEuNzYsMTNsMS4xNi0xLjE2YS44LjgsMCwxLDAtMS4xMy0xLjEzbC0xLjE2LDEuMTZMOS40NiwxMC42OGEuOC44LDAsMSwwLTEuMTMsMS4xM0w5LjQ5LDEzLDguMzMsMTQuMTNBLjguOCwwLDAsMCw4LjMzLDE1LjI2WiIvPicpLGwuQ2xyU2hh''@;'; put 'put ''cGVDdXJzb3JNb3ZlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC44NSwxMi44OWExLDEsMCwwLDAtMS40MiwwLDEsMSwwLDAsMCwwLDEuNDFMMzAuMTQsMTdIMTlWNS44NmwyLjY5LDIuN2ExLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMCwwLTEuNDJMMTgsMiwxMi44OSw3LjE1YTEs''@;'; put 'put ''MSwwLDAsMC0uMjkuNzEsMSwxLDAsMCwwLDEuNzEuN0wxNyw1Ljg2VjE3SDUuODZsMi43LTIuNjlhMSwxLDAsMCwwLDAtMS40MSwxLDEsMCwwLDAtMS40MiwwTDIsMThsNS4xNCw1LjExYTEsMSwwLDAsMCwuNzEuMjksMSwxLDAsMCwwLC43LTEuNzFMNS44NiwxOUgxN1YzMC4xNGwtMi42OS0y''@;'; put 'put ''LjdhMSwxLDAsMCwwLTEuNzEuNywxLDEsMCwwLDAsLjI5LjcxTDE4LDM0bDUuMTEtNS4xNGExLDEsMCwwLDAsMC0xLjQyLDEsMSwwLDAsMC0xLjQxLDBMMTksMzAuMTRWMTlIMzAuMTRsLTIuNywyLjY5YTEsMSwwLDAsMCwuNywxLjcxLDEsMSwwLDAsMCwuNzEtLjI5TDM0LDE4WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZUNsb25lPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LDZIMjJ2NGgyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMmg0VjIySDZaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTJIMTRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRBMiwyLDAsMCwwLDMwLDEyWm0wLDE4SDE0VjE0SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBvbHlnb24gcG9pbnRzPSIyMSAyOCAyMyAyOCAyMyAyMyAyOCAyMyAyOCAyMSAyMyAyMSAyMyAxNiAyMSAxNiAyMSAyMSAxNiAyMSAxNiAyMyAyMSAyMyAyMSAyOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTI0LDEwVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJhMiwyLDAsMCwwLDIsMmg0VjEyYTIsMiwwLDAsMSwyLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxMkgxNGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAs''@;'; put 'put ''MCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJaTTI4LDIzSDIzdjVIMjFWMjNIMTZWMjFoNVYxNmgydjVoNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZURldGFpbHM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDE0SDI3YTEsMSwwLDAsMCww''@;'; put 'put ''LTJIOWExLDEsMCwwLDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTksMThIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0''@;'; put 'put ''aCBkPSJNOSwyMkgxOWExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCww''@;'; put 'put ''LDAsMzIsNlpNMTksMjJIOWExLDEsMCwwLDEsMC0ySDE5YTEsMSwwLDAsMSwwLDJabTgtNEg5YTEsMSwwLDAsMSwwLTJIMjdhMSwxLDAsMCwxLDAsMlptMC00SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxsLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcj0oMCxhLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjI0IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PGNpcmNsZSBjeD0iMjQiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNiIgLz4nKSxsLkNsclNoYXBlRXJhc2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNS42MiwxMmEyLjgyLDIuODIsMCwwLDAtLjg0LTJMMjcuNDksMi42NWEyLjksMi45LDAsMCwwLTQsMEwyLjgzLDIzLjI4YTIuODQsMi44NCwwLDAsMCwwLDRMNy41MywzMkgz''@;'; put 'put ''YTEsMSwwLDAsMCwwLDJIMjhhMSwxLDAsMCwwLDAtMkgxNi43NGwxOC0xOEEyLjgyLDIuODIsMCwwLDAsMzUuNjIsMTJaTTEzLjkxLDMySDEwLjM2TDQuMjUsMjUuODlhLjg0Ljg0LDAsMCwxLDAtMS4xOWw1LjUxLTUuNTIsOC40OSw4LjQ4Wk0zMy4zNywxMi41NCwxOS42NiwyNi4yNWwtOC40''@;'; put 'put ''OC04LjQ5LDEzLjctMTMuN2EuODYuODYsMCwwLDEsMS4xOSwwbDcuMyw3LjI5YS44Ni44NiwwLDAsMSwuMjUuNkEuODIuODIsMCwwLDEsMzMuMzcsMTIuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgsMzJIMTUuMzNMMTksMjgu''@;'; put 'put ''MzdsLTkuOS05LjlMMy41NCwyNGExLjgzLDEuODMsMCwwLDAsMCwyLjZMOSwzMkgzYTEsMSwwLDAsMCwwLDJIMjhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTM0LjA4LDEwLjY1bC03LjMtNy4zYTEuODMsMS44Myww''@;'; put 'put ''LDAsMC0yLjYsMEwxMC40NywxNy4wNmw5LjksOS45TDM0LjA4LDEzLjI1QTEuODUsMS44NSwwLDAsMCwzNC4wOCwxMC42NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZUxhbmRzY2FwZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMjJhLjgyLjgyLDAsMCwwLC41NS0u''@;'; put 'put ''MjEuOC44LDAsMCwwLDAtMS4xM0w3LjgzLDE4LjhIMjguMTdsLTEuNzIsMS44NmEuOC44LDAsMCwwLDAsMS4xM0EuODIuODIsMCwwLDAsMjcsMjJhLjc4Ljc4LDAsMCwwLC41OC0uMjZMMzEuMDksMThsLTMuNDctMy43NGEuNzkuNzksMCwwLDAtMS4xMywwLC44LjgsMCwwLDAsMCwxLjEzbDEu''@;'; put 'put ''NzIsMS44Nkg3LjgzbDEuNzItMS44NmEuOC44LDAsMCwwLDAtMS4xMy43OS43OSwwLDAsMC0xLjEzLDBMNC45MSwxOGwzLjQ3LDMuNzRBLjc4Ljc4LDAsMCwwLDksMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiww''@;'; put 'put ''LDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTI3Ljc3LDIxLjg4YTEsMSwwLDAsMS0uNzMuMzIsMSwxLDAsMCwxLS42OC0uMjcsMSwxLDAsMCwxLS4wNi0xLjQxTDI3LjcxLDE5SDguMjlMOS43LDIwLjUyYTEsMSwwLDAsMS0uMDYs''@;'; put 'put ''MS40MUExLDEsMCwwLDEsOSwyMi4yYTEsMSwwLDAsMS0uNzMtLjMyTDQuNjQsMThsMy41OS0zLjg4QTEsMSwwLDAsMSw5LjcsMTUuNDhMOC4yOSwxN0gyNy43MUwyNi4zLDE1LjQ4YTEsMSwwLDAsMSwxLjQ3LTEuMzZMMzEuMzYsMThaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVQYXN0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cmVjdCB4PSIzMCIgeT0iMTgiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwzMEgyOHYyaDJhMiwyLDAsMCwwLDItMlYyNkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwy''@;'; put 'put ''MlY2YTIsMiwwLDAsMC0yLTJINkEyLDIsMCwwLDAsNCw2VjIyYTIsMiwwLDAsMCwyLDJIMjJBMiwyLDAsMCwwLDI0LDIyWk02LDZIMjJWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdo''@;'; put 'put ''dD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTE0LDI2SDEydjRhMiwyLDAsMCwwLDIsMmg0VjMwSDE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTMwLDEySDI2djJoNHYy''@;'; put 'put ''aDJWMTRBMiwyLDAsMCwwLDMwLDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cmVjdCB4PSIzMCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMwSDI4''@;'; put 'put ''djJoMmEyLDIsMCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz48''@;'; put 'put ''cmVjdCB4PSIyMCIgeT0iMzAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTUiIC8+PHBhdGggZD0iTTE0LDI2SDEydjRhMiwyLDAsMCwwLDIsMmg0VjMwSDE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIg''@;'; put 'put ''Lz4nKSxsLkNsclNoYXBlUG9ydHJhaXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LjM0LDI2LjQ1YS44LjgsMCwwLDAtMS4xMywwLC43OS43OSwwLDAsMCwwLDEuMTNMMTgsMzEuMDlsMy43NC0zLjQ3YS43OS43OSwwLDAsMCwuMDUtMS4xMy44LjgsMCwwLDAtMS4xMywwTDE4Ljgs''@;'; put 'put ''MjguMTdWNy44M2wxLjg2LDEuNzJhLjguOCwwLDEsMCwxLjA4LTEuMTdMMTgsNC45MSwxNC4yNiw4LjM4YS43OS43OSwwLDAsMCwwLDEuMTMuOC44LDAsMCwwLDEuMTMsMEwxNy4yLDcuODNWMjguMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0''@;'; put 'put ''aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAsMCwwLDI4LDJabTAsMzBIOFY0SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI4LDJIOEEyLDIsMCwwLDAs''@;'; put 'put ''Niw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk0yMC41MiwyNi4zYTEsMSwwLDAsMSwxLjM2LDEuNDdMMTgsMzEuMzZsLTMuODgtMy41OWExLDEsMCwwLDEsMS4zNi0xLjQ3TDE3LDI3LjcxVjguMjlMMTUuNDgsOS43YTEsMSwwLDAsMS0xLjM2''@;'; put 'put ''LTEuNDdMMTgsNC42NGwzLjg4LDMuNTlhMSwxLDAsMCwxLC4wNSwxLjQxLDEsMSwwLDAsMS0uNzMuMzIsMSwxLDAsMCwxLS42OC0uMjZMMTksOC4yOVYyNy43MVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZVRyZWVWaWV3PSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0xNSwzMkgxMWExLDEsMCwwLDEtMS0xVjI3YTEsMSwwLDAsMSwxLTFoNGExLDEsMCwwLDEsMSwxdjRBMSwxLDAsMCwxLDE1LDMyWm0tMy0yaDJWMjhIMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJN''@;'; put 'put ''MTUsMTZIMTFhMSwxLDAsMCwwLTEsMXYxLjJINS44VjEySDdhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCw3LDZIM0ExLDEsMCwwLDAsMiw3djRhMSwxLDAsMCwwLDEsMUg0LjJWMjkuOGg2LjM2YS44LjgsMCwwLDAsMC0xLjZINS44VjE5LjhIMTBWMjFhMSwxLDAsMCwwLDEsMWg0YTEsMSww''@;'; put 'put ''LDAsMCwxLTFWMTdBMSwxLDAsMCwwLDE1LDE2Wk00LDhINnYySDRaTTE0LDIwSDEyVjE4aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzQsOWExLDEsMCwwLDAtMS0xSDEwdjJIMzNBMSwxLDAsMCwwLDM0LDlaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMThIMTh2MkgzM2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLDI4SDE4djJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxyZWN0IHg9IjEwIiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xNSwxNkgxMWExLDEsMCwwLDAt''@;'; put 'put ''MSwxdjEuMkg1LjhWMTJIN2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDcsNkgzQTEsMSwwLDAsMCwyLDd2NGExLDEsMCwwLDAsMSwxSDQuMlYyOS44SDExYS44LjgsMCwxLDAsMC0xLjZINS44VjE5LjhIMTBWMjFhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTdBMSwxLDAsMCww''@;'; put 'put ''LDE1LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOEgxMHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOEgxOHYySDMzYTEsMSwwLDAsMCww''@;'; put 'put ''LTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMywyOEgxOHYySDMzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLGwuQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYj0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMjguMDksOS43NGE0LDQsMCwwLDAtMS4xNi4xOWMtLjE5LTEuMjQtMS41NS0yLjE4LTMuMjctMi4xOEE0LDQsMCwwLDAsMjIuMTMsOCwzLjM3LDMuMzcsMCwwLDAsMTksNi4zYTMuNDUsMy40NSwwLDAsMC0yLjg3LDEuMzIsMy42NSwzLjY1LDAsMCwwLTEuODkt''@;'; put 'put ''LjUxQTMuMDUsMy4wNSwwLDAsMCwxMSw5Ljg5di45MWMtMS4wNi40LTQuMTEsMS44LTQuOTEsNC44NHMuMzQsOCwyLjY5LDExLjc4YTI1LjIxLDI1LjIxLDAsMCwwLDUuOSw2LjQxLjkuOSwwLDAsMCwuNTMuMTdIMjUuNTVhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMuMTMsMTMuMTMsMCwwLDAs''@;'; put 'put ''My43NS02LjEzQTI1LjgsMjUuOCwwLDAsMCwzMS40MSwxOHYtNS41QTMuMDgsMy4wOCwwLDAsMCwyOC4wOSw5Ljc0Wk0yOS42MSwxOGEyNCwyNCwwLDAsMS0xLjQ3LDkuMTVBMTIuNDYsMTIuNDYsMCwwLDEsMjUuMiwzMi4ySDE1LjQ3YTIzLjc1LDIzLjc1LDAsMCwxLTUuMi01LjcyYy0yLjM3''@;'; put 'put ''LTMuODYtMy04LjIzLTIuNDgtMTAuMzlBNS43LDUuNywwLDAsMSwxMSwxMi43NnY3LjY1YS45LjksMCwwLDAsMS44LDBWOS44OWMwLS40Ny41OS0xLDEuNDYtMXMxLjQ5LjUyLDEuNDksMXY1LjcyaDEuOFY4LjgxYzAtLjI4LjU4LS43MSwxLjQ2LS43MXMxLjUzLjQ4LDEuNTMuNzV2Ni44OWgx''@;'; put 'put ''LjhWMTBsLjE3LS4xMmEyLjEsMi4xLDAsMCwxLDEuMTgtLjMyYy45MywwLDEuNS40NCwxLjUuNjhsMCw2LjVIMjdWMTEuODdhMS45MSwxLjkxLDAsMCwxLDEuMTItLjMzYy44NiwwLDEuNTIuNTEsMS41Mi45NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAv''@;'; put 'put ''PicpLGwuQ2xyU2hhcGVDdXJzb3JIYW5kT3Blbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDYsOC41N0EzLjExLDMuMTEsMCwwLDAsMjcsNS43NWEzLjE5LDMuMTksMCwwLDAtNC42Ni0yLjY0LDMuMjksMy4yOSwwLDAsMC02LjQyLS43NiwzLjIzLDMuMjMsMCwwLDAtMS42Ni0u''@;'; put 'put ''NDZBMy4yNywzLjI3LDAsMCwwLDExLDUuMThWMTcuODRjLTEuMjgtMS42LTIuNTMtMy4xOC0yLjcyLTMuNDVBMy4xOSwzLjE5LDAsMCwwLDUuNTYsMTIuOWEzLjM3LDMuMzcsMCwwLDAtMy40NywzLjQ4QzIuMTgsMTguMTgsNS42NiwyNC41NCw4LDI4YzMuNTQsNS4yNCw2LjkyLDYsNy4wNyw2''@;'; put 'put ''bC4xOCwwSDI1LjU5YS45Mi45MiwwLDAsMCwuNTUtLjE5LDEzLjEzLDEzLjEzLDAsMCwwLDMuNzUtNi4xM2MxLTMuMDksMS41My03LjUzLDEuNTgtMTMuNTZaTTI4LjE4LDI3LjEyYTEyLjQ2LDEyLjQ2LDAsMCwxLTIuOTQsNS4wOEgxNS4zM2MtLjQ3LS4xNC0zLjA3LTEuMS01Ljg3LTUuMjVT''@;'; put 'put ''My45NCwxNy4yNywzLjg5LDE2LjI5YTEuNSwxLjUsMCwwLDEsLjQ1LTEuMTMsMS41MiwxLjUyLDAsMCwxLDEuMTQtLjQ2LDEuNDMsMS40MywwLDAsMSwxLjMyLjcxYy4yOS40MywyLjM2LDMsMy41Nyw0LjUzTDEyLjgsMTguM1Y1LjE4YTEuNDgsMS40OCwwLDEsMSwyLjk1LDBWMTYuMzJoMS44''@;'; put 'put ''di0xM2ExLjUxLDEuNTEsMCwwLDEsMywwVjE2LjQ1aDEuOFY2YTEuNDMsMS40MywwLDEsMSwyLjg1LDBWMTcuNDRIMjdWOC41NGExLjMzLDEuMzMsMCwwLDEsMi42NSwwdjUuNTVDMjkuNjIsMjAsMjkuMTQsMjQuMjEsMjguMTgsMjcuMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlRmlsZVppcD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsMzAuMlYxMmwtOC4xLTcuOUg3LjhDNi44LDQuMSw2LDQuOSw2LDZjMCwwLDAsMCwwLDB2MjQuMmMwLDEsMC43LDEuOCwxLjcsMS44YzAsMCwwLjEsMCwwLjEsMGgyMC4z''@;'; put 'put ''XG5cdFx0YzEsMCwxLjgtMC43LDEuOC0xLjdDMzAsMzAuMywzMCwzMC4yLDMwLDMwLjJ6IE0yMiw2LjZsNS42LDUuNEgyMlY2LjZ6IE0yOCwzMEg3LjlMOCw2aDEydjhoOFYzMHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xMiwyNGMw''@;'; put 'put ''LDEuNywxLjMsMywzLDNzMy0xLjMsMy0zdi00aC02VjI0eiBNMTMuNCwyNHYtMi42aDMuMlYyNGMwLjEsMC45LTAuNiwxLjctMS41LDEuN2MtMC45LDAuMS0xLjctMC42LTEuNy0xLjVcblx0XHRDMTMuNCwyNC4yLDEzLjQsMjQuMSwxMy40LDI0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LjIsOWMwLTAuNi0wLjQtMS0xLTFIMTV2MmgyLjJDMTcuOCwxMCwxOC4yLDkuNiwxOC4yLDl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTIuNywxMGMtMC42LDAtMSwwLjQt''@;'; put 'put ''MSwxczAuNCwxLDEsMUgxNXYtMkgxMi43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTE3LjIsMTRjMC42LDAsMS0wLjQsMS0xcy0wLjQtMS0xLTFIMTV2MkgxNy4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUiIC8+PHBhdGggZD0iTTExLjcsMTVjMCwwLjYsMC40LDEsMSwxSDE1di0yaC0yLjNDMTIuMiwxNCwxMS43LDE0LjQsMTEuNywxNXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0xNy4yLDE4YzAuNiwwLDEtMC40LDEtMXMtMC40''@;'; put 'put ''LTEtMS0xSDE1djJIMTcuMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0xNSwyNS42YzAuOSwwLDEuNi0wLjcsMS42LTEuNnYtMi42aC0zLjJWMjRDMTMuNCwyNC45LDE0LjEsMjUuNiwxNSwyNS42eiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOSw0SDcuOEM2LjgsNCw2LDQuOSw2LDUuOXYyNC4yYzAsMSwwLjgsMS45LDEuOCwxLjloMjAuM2MxLDAsMS44LTAuOSwxLjgtMS45VjExLjlMMjEuOSw0eiBNMTgsMjRjMCwxLjctMS4zLDMtMywzXG5cdFx0cy0zLTEuMy0zLTN2''@;'; put 'put ''LTRoNlYyNHogTTE3LjIsMTJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2MmgyLjJjMC42LDAsMSwwLjQsMSwxcy0wLjQsMS0xLDFIMTV2LTJoLTIuMmMtMC42LDAtMS0wLjQtMS0xXG5cdFx0czAuNC0xLDEtMUgxNXYtMmgtMi4yYy0wLjYsMC0xLTAuNC0xLTFzMC40LTEsMS0xSDE1''@;'; put 'put ''VjhoMi4yYzAuNiwwLDEsMC40LDEsMXMtMC40LDEtMSwxSDE1djJIMTcuMnogTTIxLjksMTJWNi41bDUuNyw1LjVIMjEuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZUZpbHRlck9mZj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MzQsNi40QzM0LDUuNiwzMy4zLDUsMzIuNSw1SDEwLjNsMiwySDMydjAuNmwtOS42LDkuNmwxLjQsMS40TDMzLjQsOUMzMy44LDguNiwzNCw4LjEsMzQsNy42VjYuNUMzNCw2LjUsMzQsNi40LDM0LDYuNHoiXG5cdFx0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0yLjcsM2wyLDJoLTFDMi45LDQuOSwyLjEsNS41LDIsNi4zdjEuMWMwLDAuNSwwLjIsMSwwLjYsMS40TDE0LDIwLjJ2MTAuM2wxLjksMC44VjE5LjRMNCw3LjVWN2gyLjdMMjAsMjAuM3YxMi45bDIsMC44XG5cdFx0YzAsMCwwLDAsMC0wLjFWMjIuM2wxMC4xLDEwLjFs''@;'; put 'put ''MS40LTEuNEw0LjEsMS42TDIuNywzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIzLjksMTguNkwxMC4zLDUuMWgyMi4yQzMzLjMsNSwzNCw1LjYsMzQsNi40YzAsMCwwLDAsMCwwLjF2MS4xYzAsMC41LTAuMiwxLTAuNiwxLjRMMjMu''@;'; put 'put ''OSwxOC42eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMuNSwzMUw0LjEsMS42TDIuNiwzbDIuMSwyLjFIMy41QzIuNyw1LDIsNS42LDIsNi40YzAsMCwwLDAsMCwwLjF2MS4xYzAsMC41LDAuMiwxLDAuNiwxLjRMMTQsMjAuNXYxMC4xbDgs''@;'; put 'put ''My40VjIyLjRcblx0bDEwLjEsMTAuMUwzMy41LDMxeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlUmVjeWNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNi40LDE3LjRjMC4yLDAuMSwwLjMsMC4xLDAuNSwwLjFjMC4yLDAsMC40''@;'; put 'put ''LTAuMSwwLjUtMC4xbDctNC4xYzAuMy0wLjIsMC41LTAuNSwwLjUtMC45YzAtMC40LTAuMi0wLjctMC41LTAuOUwxMS45LDEwXG5cdFx0TDE0LDYuMmMwLjQtMC43LDEtMS4zLDEuNy0xLjdjMi0xLjEsNC41LTAuMyw1LjYsMS43YzAuMywwLjUsMC45LDAuNiwxLjQsMC4zYzAsMCwwLDAsMC4x''@;'; put 'put ''LDBjMC40LTAuMywwLjUtMC45LDAuMy0xLjNcblx0XHRjLTAuNi0xLTEuNC0xLjktMi40LTIuNGMtMy0xLjYtNi43LTAuNi04LjMsMi40TDkuNiw5LjljLTAuMywwLjUtMC4xLDEuMSwwLjMsMS40bDIsMS4ybC00LDIuNFY4LjJjMC0wLjYtMC40LTEtMS0xXG5cdFx0QzYuNCw3LjMsNiw3Ljcs''@;'; put 'put ''Niw4LjN2OC4zQzYsMTYuOSw2LjIsMTcuMiw2LjQsMTcuNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4xLDIxbC0zLjUtNi4yYy0wLjEtMC4yLTAuNC0wLjQtMC42LTAuNWMtMC4zLTAuMS0wLjUsMC0wLjgsMC4xbC0yLjIsMS4z''@;'; put 'put ''VjExbDUuNSwzLjNjMC4xLDAsMC4xLDAuMSwwLjIsMC4xXG5cdFx0YzAuNSwwLjIsMS4xLDAsMS4zLTAuNWMwLjItMC41LDAtMS4xLTAuNS0xLjNsLTctNC4yYy0wLjMtMC4yLTAuNy0wLjItMSwwQzIzLjEsOC41LDIzLDguOCwyMyw5LjJ2OC4zYzAsMC40LDAuMSwwLjgsMC40LDFcblx0XHRj''@;'; put 'put ''MC4zLDAuMiwwLjcsMC4yLDEsMGwyLjktMS43bDMsNS4zYzAuNywxLjMsMC43LDIuOCwwLDQuMWMtMC42LDEuMi0xLjksMS45LTMuMiwxLjloLTAuOWMtMC41LDAtMS4yLDAuNC0xLjIsMVxuXHRcdGMwLjEsMC42LDAuNiwxLDEuMiwxaDAuOWMyLjEsMCw0LTEuMSw1LTIuOUMzMy4yLDI1LjIs''@;'; put 'put ''MzMuMiwyMi45LDMyLjEsMjF6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIuNCwyOC4ybC03LTQuMmMtMC4zLTAuMi0wLjctMC4yLTEsMGMtMC4zLDAuMi0wLjQsMC41LTAuNCwwLjl2My4zSDkuMWMtMS41LTAuMS0yLjktMC45LTMu''@;'; put 'put ''Ni0yLjNcblx0XHRjLTAuOC0xLjQtMC44LTMuMiwwLTQuNmMwLjMtMC41LDAuMS0xLjEtMC40LTEuNGMtMC41LTAuMy0xLjEtMC4xLTEuNCwwLjRjLTEuMiwyLjEtMS4xLDQuNiwwLjEsNi42QzQuOSwyOC44LDcsMzAsOS4yLDMwSDE1XG5cdFx0YzAuNiwwLDEtMC40LDEtMXYtMi40bDQsMi40''@;'; put 'put ''bC01LjYsMy4zYy0wLjMsMC4yLTAuNSwwLjUtMC41LDAuOWMwLDAuNiwwLjUsMSwxLDFjMC4yLDAsMC4zLTAuMSwwLjUtMC4ybDctNC4yXG5cdFx0YzAuMi0wLjEsMC4zLTAuMiwwLjQtMC40QzIzLjEsMjksMjIuOSwyOC40LDIyLjQsMjguMnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMC44LDMuMWMtMy0xLjYtNi43LTAuNi04LjQsMi40bC0yLjIsMy44bC0yLTEuMUM4LjIsOCw4LDgsNy45LDhDNy40LDgsNyw4LjQsNyw4Ljl2Ny4yYzAsMC4zLDAuMSwwLjYsMC40LDAuOFxuXHRcdGMwLjEsMC4xLDAuMywwLjEsMC40LDAu''@;'; put 'put ''MWMwLjIsMCwwLjMsMCwwLjQtMC4xbDYuMy0zLjZjMC4zLTAuMiwwLjQtMC40LDAuNC0wLjhjMC0wLjMtMC4yLTAuNi0wLjQtMC44TDEyLDEwLjNsMi4yLTMuOFxuXHRcdGMwLjQtMC43LDEtMS4zLDEuNy0xLjdjMi0xLjEsNC41LTAuMyw1LjYsMS43YzAuMywwLjUsMC45LDAuNiwxLjQsMC40''@;'; put 'put ''YzAuNS0wLjMsMC42LTAuOSwwLjQtMS40QzIyLjYsNC41LDIxLjgsMy42LDIwLjgsMy4xeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMiwyMS4xbC0zLTUuM2wyLjMtMS4zYzAuMy0wLjIsMC40LTAuNCwwLjQtMC44YzAtMC4zLTAuMi0w''@;'; put 'put ''LjYtMC40LTAuOGwtNi4yLTMuNmMtMC4xLTAuMS0wLjMtMC4xLTAuNC0wLjFcblx0XHRjLTAuNSwwLTAuOSwwLjQtMC45LDAuOXY3LjJjMCwwLjMsMC4yLDAuNiwwLjQsMC44YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMiwwLDAuMy0wLjEsMC40LTAuMWwyLjItMS4zbDMsNS4zXG5cdFx0''@;'; put 'put ''YzAuNywxLjIsMC43LDIuOCwwLDRjLTAuNywxLjItMS45LDEuOS0zLjIsMS45aC0wLjljLTAuNiwwLTEsMC40LTEsMWMwLDAuNiwwLjQsMSwxLDFoMC45YzIuMSwwLDQtMS4xLDUtM1xuXHRcdEMzMy4yLDI1LjMsMzMuMiwyMywzMi4yLDIxLjF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMS43LDI4LjRsLTYuMi0zLjZjLTAuMS0wLjEtMC4zLTAuMS0wLjQtMC4xYy0wLjUsMC0wLjksMC40LTAuOSwwLjl2Mi42SDkuM2MtMS41LDAtMi45LTAuOC0zLjYtMi4xXG5cdFx0Yy0wLjgtMS40LTAuOC0zLjEsMC00LjVjMC4zLTAuNSwwLjEt''@;'; put 'put ''MS4xLTAuNC0xLjRjLTAuNS0wLjMtMS4xLTAuMS0xLjQsMC40Yy0xLjIsMi0xLjIsNC41LDAsNi41YzEuMSwxLjksMy4xLDMuMSw1LjQsMy4xaDQuOHYyLjZcblx0XHRjMCwwLjMsMC4yLDAuNiwwLjQsMC44YzAuMSwwLjEsMC4zLDAuMSwwLjQsMC4xYzAuMSwwLDAuMywwLDAuNC0wLjFsNi4z''@;'; put 'put ''LTMuNmMwLjMtMC4yLDAuNC0wLjQsMC40LTAuOFxuXHRcdEMyMi4xLDI4LjgsMjEuOSwyOC41LDIxLjcsMjguNHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksbC5DbHJTaGFwZVRyZWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjYsMTEuN0My''@;'; put 'put ''OS4yLDUuOCwyNCwxLjcsMTgsMS43Yy03LjIsMC0xMyw1LjgtMTMsMTNjMCw2LjgsNS4zLDEyLjQsMTIsMTIuOXY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTV2LTJWMjJcblx0YzAsMCwwLDAsMC0wLjF2LTMuNmw0LjctNC43YzAuNC0wLjQsMC40LTEsMC0xLjRjLTAuNC0wLjQtMS0w''@;'; put 'put ''LjQtMS40LDBMMTksMTUuNnYtM2wtMy4zLTMuM2MtMC40LTAuNC0xLTAuNC0xLjQsMFxuXHRjLTAuNCwwLjQtMC40LDEsMCwxLjRsMi43LDIuN3Y2LjJsLTMuOC0zLjhjLTAuNC0wLjQtMS0wLjQtMS40LDBjLTAuNCwwLjQtMC40LDEsMCwxLjRsNS4yLDUuMnYzLjJjLTUuNi0wLjUtMTAtNS4y''@;'; put 'put ''LTEwLTEwLjlcblx0YzAtNi4xLDQuOS0xMSwxMS0xMXMxMSw0LjksMTEsMTFjMCw0LjktMy4zLDkuMi04LDEwLjZ2Mi4xQzI4LDI1LjcsMzIuMywxOC43LDMwLjYsMTEuN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwyQzEwLjgs''@;'; put 'put ''MS43LDQuOCw3LjMsNC41LDE0LjVDNC4yLDIxLjcsOS44LDI3LjcsMTcsMjh2LTUuMmwtNS4yLTUuMmMtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwXG5cdGMwLDAsMCwwLDAsMGwzLjgsMy44di02LjJsLTIuNy0yLjdjLTAuNC0wLjQtMC40LTEsMC0xLjRjMC40LTAu''@;'; put 'put ''NCwxLTAuNCwxLjQsMGMwLDAsMCwwLDAsMGwzLjMsMy4zdjNsMy4zLTMuM2MwLjQtMC40LDEtMC40LDEuNCwwXG5cdGMwLDAsMCwwLDAsMGMwLjQsMC40LDAuNCwxLDAsMS40TDE5LDE4LjhWMjhjNy4yLTAuMywxMi44LTYuMywxMi41LTEzLjVTMjUuMiwxLjcsMTgsMnoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDI4Yy0wLjMsMC0wLjYsMC0xLDB2NWMwLDAuNiwwLjQsMSwxLDFzMS0wLjQsMS0xdi01QzE4LjcsMjgsMTguMywyOCwxOCwyOHoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5D''@;'; put 'put ''bHJTaGFwZUZpc2g9KDAsYS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMTEuNDkiIGN5PSIxNy41IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMy40OCw5LjI5YTEsMSwwLDAsMC0xLDBjLTMuMzcsMi01LjkxLDUuODEt''@;'; put 'put ''Ni45LDcuNDVMMjQuODUsMThzLTEsMS42Mi0xLDEuNjJjLTEuNzYsMi40OS01LjEsNi4zNi04Ljc5LDYuMzYtNC42NSwwLTguNzUtNi4xNS05Ljg0LTcuOTQsMS4wOS0xLjc5LDUuMTgtNy45NCw5Ljg0LTcuOTQsMy41NCwwLDYuNzcsMy41OCw4LjU4LDYuMDdsLjI4LS40OHMuMzYtLjUxLjkz''@;'; put 'put ''LTEuMjVDMjIuNzIsMTEuNjQsMTkuMTgsOC4wNiwxNSw4LjA2Yy02LjU5LDAtMTEuNjcsOS4wNy0xMS44OCw5LjQ2TDIuODksMThsLjI3LjQ4Yy4yMS4zOSw1LjI5LDkuNDYsMTEuODgsOS40Niw1LjA2LDAsOS4yMi01LjM0LDExLThDMjYsMjAsMjcuMTgsMTgsMjcuMTgsMThoMGwuMDctLjEx''@;'; put 'put ''YTE4LjA2LDE4LjA2LDAsMCwxLDEuODgtMi43NXMwLDAsMCwwYTIwLjMxLDIwLjMxLDAsMCwxLDIuODYtM1YyMy44OGEyMC45MywyMC45MywwLDAsMS0zLjYxLTRsLS4xNi4yNmgwbC0xLDEuNTlhMTguNzQsMTguNzQsMCwwLDAsNS4yMSw0Ljk1LDEsMSwwLDAsMCwuNS4xNCwxLjEzLDEuMTMs''@;'; put 'put ''MCwwLDAsLjUtLjEzLDEsMSwwLDAsMCwuNS0uODdWMTAuMTZBMSwxLDAsMCwwLDMzLjQ4LDkuMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlRm9ybT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEsMTJIN2ExLDEsMCww''@;'; put 'put ''LDEtMS0xVjdBMSwxLDAsMCwxLDcsNkgyMWExLDEsMCwwLDEsMSwxdjRBMSwxLDAsMCwxLDIxLDEyWk04LDEwSDIwVjcuOTRIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwxNC4wOEg3YTEsMSwwLDAsMC0xLDFWMTlhMSwxLDAs''@;'; put 'put ''MCwwLDEsMUgxOC4zNkwyMiwxNi4zVjE1LjA4QTEsMSwwLDAsMCwyMSwxNC4wOFpNMjAsMThIOFYxNkgyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMS4wNiwzMS41MXYtLjA2bC4zMi0xLjM5SDRWNGgyMFYxNC4yNUwyNiwxMi4z''@;'; put 'put ''NlYzYTEsMSwwLDAsMC0xLTFIM0ExLDEsMCwwLDAsMiwzVjMxYTEsMSwwLDAsMCwxLDFoOEEzLjQ0LDMuNDQsMCwwLDEsMTEuMDYsMzEuNTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjIsMTkuMTdsLS43OC43OUExLDEsMCwwLDAs''@;'; put 'put ''MjIsMTkuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNNiwyNi45NGExLDEsMCwwLDAsMSwxaDQuODRsLjMtMS4zLjEzLS41NSwwLS4wNUg4VjI0aDYuMzRsMi0ySDdhMSwxLDAsMCwwLTEsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMy40OSwxNi42NywzMC4xMiwxMy4zYTEuNjEsMS42MSwwLDAsMC0yLjI4LDBoMEwxNC4xMywyNy4wOSwxMywzMS45YTEuNjEsMS42MSwwLDAsMCwxLjI2LDEuOSwxLjU1LDEuNTUsMCwwLDAsLjMxLDAsMS4xNSwxLjE1LDAsMCww''@;'; put 'put ''LC4zNywwbDQuODUtMS4wN0wzMy40OSwxOWExLjYsMS42LDAsMCwwLDAtMi4yN1pNMTguNzcsMzAuOTFsLTMuNjYuODFMMTYsMjguMDksMjYuMjgsMTcuN2wyLjgyLDIuODJaTTMwLjIzLDE5LjM5bC0yLjgyLTIuODJMMjksMTVsMi44NCwyLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTYiIC8+JyksbC5DbHJTaGFwZUZ1ZWw9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjEyLDM0SDUuOUEyLjgxLDIuODEsMCwwLDEsMywzMS4xOVY0Ljg2QTIuOSwyLjksMCwwLDEsNiwyLjA3SDIwLjIyQTIuNzIsMi43MiwwLDAsMSwyMyw0Ljg2VjMxLjE5''@;'; put 'put ''QTIuODIsMi44MiwwLDAsMSwyMC4xMiwzNFpNNS45LDRBLjg3Ljg3LDAsMCwwLDUsNC44NlYzMS4xOWEuODcuODcsMCwwLDAsLjg3Ljg3SDIwLjEyYS45NC45NCwwLDAsMCwuOTUtLjg3VjQuODZBLjk0Ljk0LDAsMCwwLDIwLjEyLDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjkuNTMsMzRBMy41LDMuNSwwLDAsMSwyNiwzMC41VjIzYTIsMiwwLDAsMC0yLTJIMjIuNTdhMSwxLDAsMCwxLDAtMkgyNGE0LDQsMCwwLDEsNCw0VjMwLjVhMS41LDEuNSwwLDAsMCwzLDBWMTcuM2wtMy4xMy03QTIuMjksMi4yOSwwLDAsMCwyNS44''@;'; put 'put ''LDloLS43M2ExLDEsMCwxLDEsMC0yaC43M2E0LjMsNC4zLDAsMCwxLDMuOTMsMi41NWwzLjIxLDcuMTZhMSwxLDAsMCwxLC4wOS40MVYzMC41QTMuNSwzLjUsMCwwLDEsMjkuNTMsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTgs''@;'; put 'put ''OUg4QTEsMSwwLDEsMSw4LDdIMThhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xOCwxM0g4QTEsMSwwLDEsMSw4LDExSDE4QTEsMSwwLDEsMSwxOCwxM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yNSwxMi4wOGExLDEsMCwwLDEtMS0xdi02YTEsMSwwLDAsMSwyLDB2NkExLDEsMCwwLDEsMjUsMTIuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz4nKSxsLkNsclNoYXBlU25vd2ZsYWtlPSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0xOC4wNSwzMy42MWExLDEsMCwwLDEtMS0xVjMuMzdhMSwxLDAsMSwxLDEuOTUsMFYzMi42M0ExLDEsMCwwLDEsMTguMDUsMzMuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTguMDYsMTAuMDcs''@;'; put 'put ''MTQuNTIsNi41NGExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBsMi4xMywyLjEyLDIuMTItMi4xMmExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAuODUsMzEu''@;'; put 'put ''MTdhMSwxLDAsMCwxLS43LS4yOUwxOCwyOC43NiwxNS45LDMwLjg4YTEsMSwwLDAsMS0xLjQxLDAsMSwxLDAsMCwxLDAtMS40MkwxOCwyNS45M2wzLjU0LDMuNTNhMSwxLDAsMCwxLDAsMS40MkExLDEsMCwwLDEsMjAuODUsMzEuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuOTIsMjYuNWExLDEsMCwwLDEtLjUtLjEzbC0yNi0xNUExLDEsMCwwLDEsNC4wNywxMGExLDEsMCwwLDEsMS4zNy0uMzZsMjYsMTVhMSwxLDAsMCwxLS41LDEuODdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIg''@;'; put 'put ''Lz48cGF0aCBkPSJNNiwxNS4zN2ExLDEsMCwwLDEtLjI2LTJsMi45LS43OEw3Ljg0LDkuNzNhMSwxLDAsMSwxLDEuOTMtLjUyTDExLjA3LDE0LDYuMjQsMTUuMzNBLjgyLjgyLDAsMCwxLDYsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0''@;'; put 'put ''aCBkPSJNMjcuMDUsMjcuNTRhMSwxLDAsMCwxLTEtLjc1TDI0LjgsMjJsNC44Mi0xLjNhMSwxLDAsMSwxLC41MiwxLjkzbC0yLjkuNzguNzgsMi45YTEsMSwwLDAsMS0uNzEsMS4yMkEuNzUuNzUsMCwwLDEsMjcuMDUsMjcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtNiIgLz48cGF0aCBkPSJNNC45NCwyNi41YTEsMSwwLDAsMS0uNS0xLjg3bDI2LTE1YTEsMSwwLDAsMSwxLjM2LjM2LDEsMSwwLDAsMS0uMzYsMS4zN2wtMjYsMTVBMSwxLDAsMCwxLDQuOTQsMjYuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAv''@;'; put 'put ''PjxwYXRoIGQ9Ik04LjgxLDI3LjU0YS43NS43NSwwLDAsMS0uMjYsMCwxLDEsMCwwLDEtLjcxLTEuMjJsLjc4LTIuOS0yLjktLjc4QTEsMSwwLDAsMSw1LDIxLjM4YTEsMSwwLDAsMSwxLjIzLS43MUwxMS4wNywyMmwtMS4zLDQuODJBMSwxLDAsMCwxLDguODEsMjcuNTRaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz48cGF0aCBkPSJNMjkuODgsMTUuMzdhLjgyLjgyLDAsMCwxLS4yNiwwTDI0LjgsMTRsMS4yOS00LjgzQTEsMSwwLDEsMSwyOCw5LjczbC0uNzgsMi44OSwyLjkuNzhhMSwxLDAsMCwxLS4yNiwyWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTkiIC8+JyksbC5DbHJTaGFwZVRhYmxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDM0YTEsMSwwLDAsMS0xLTFWMi45MmExLDEsMCwwLDEsMiwwVjMzQTEsMSwwLDAsMSw4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE3LDMzLjkyYTEsMSwwLDAsMS0xLTFWOS4xYTEsMSwwLDEsMSwyLDBWMzIuOTJBMSwxLDAsMCwxLDE3LDMzLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI2LDM0YTEsMSwwLDAsMS0xLTFW''@;'; put 'put ''OWExLDEsMCwwLDEsMiwwVjMzQTEsMSwwLDAsMSwyNiwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMy4xMSwxOGgtMjVhMSwxLDAsMSwxLDAtMmgyNWExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMzLjEsMjYuOTRIOC4xQTEsMSwwLDEsMSw4LjEsMjVoMjVhMSwxLDAsMSwxLDAsMS45MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMyw4LjkySDNBMSwxLDAsMSwxLDMsN0gzM2Ex''@;'; put 'put ''LDEsMCwxLDEsMCwxLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksbC5DbHJTaGFwZVZvbHVtZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuODgsMzJIMTJhNCw0LDAsMCwxLTQtNFYxMS40NkwyLjMxLDUuNzdhMSwxLDAsMCwxLS4y''@;'; put 'put ''Mi0xLjA5QTEsMSwwLDAsMSwzLDQuMDZIMjguODZhMSwxLDAsMCwxLDEsMVYyOEE0LDQsMCwwLDEsMjUuODgsMzJaTTUuNDMsNmw0LjI4LDQuMzRhLjc1Ljc1LDAsMCwxLC4yMS42M3YxN0EyLjEzLDIuMTMsMCwwLDAsMTIsMzBIMjUuODhBMi4xLDIuMSwwLDAsMCwyOCwyOFY2WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDE2YTEsMSwwLDAsMS0xLTFWNkgyOC44NmEuOTIuOTIsMCwwLDEtMS0uOSwxLDEsMCwwLDEsMS0xSDMzYTEsMSwwLDAsMSwxLDFWMTVBMSwxLDAsMCwxLDMzLDE2WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDExSDE4YTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNCwxNUgyMWExLDEsMCwxLDEsMC0ySDI0YTEsMSww''@;'; put 'put ''LDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjQsMTlIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTI0''@;'; put 'put ''LDI3SDE4YTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yNCwyM0gyMUExLDEsMCwxLDEsMjEsMjFIMjRBMSwxLDAsMSwxLDI0LDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTciIC8+JyksbC5DbHJTaGFwZUNyb3NzaGFpcnM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDI5QTExLDExLDAsMSwxLDI5LDE4LDExLDExLDAsMCwxLDE4LDI5Wk0xOCw5YTksOSwwLDEsMCw5LDlBOSw5LDAsMCwwLDE4LDlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMjNhNSw1LDAsMSwxLDUtNUE1LDUsMCwwLDEsMTgsMjNabTAtOGEzLDMsMCwxLDAsMywzQTMsMywwLDAsMCwxOCwxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xOCw5YTEsMSwwLDAsMS0xLTFWMi44YTEsMSwwLDAsMSwyLDBWOEExLDEsMCwwLDEsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xOCwzNGExLDEsMCwwLDEtMS0xVjI4YTEsMSwwLDAsMSwyLDB2NUExLDEsMCwwLDEs''@;'; put 'put ''MTgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNOCwxOUgzLjE3YTEsMSwwLDAsMSwwLTJIOGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLjEs''@;'; put 'put ''MTlIMjhhMSwxLDAsMCwxLDAtMmg1LjFhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLGwuQ2xyU2hhcGVDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAs''@;'; put 'put ''MCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVEb3RDaXJjbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDExYTcsNywwLDEsMS03LDcsNyw3LDAsMCwxLDctNyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGgg''@;'; put 'put ''ZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlQmV0YT0oMCxhLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNNy4yMSwxNC4wN2gzYTEuNjEsMS42MSwwLDAsMSwxLjgxLDEuNSwxLjQ0LDEuNDQsMCwwLDEtLjg0LDEuMzQsMS42NywxLjY3LDAsMCwxLDEuMSwxLjUzLDEuNzUsMS43NSwwLDAsMS0yLDEuNjNINy4yMVptMi43MSwyLjQyYy40OCwwLC44Mi0uMjguODItLjY3cy0u''@;'; put 'put ''MzQtLjY1LS44Mi0uNjVIOC40OXYxLjMyWm0uMiwyLjQ4YS43NS43NSwwLDEsMCwwLTEuNDdIOC40OVYxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xNC41NSwxNS4yM3YxLjJoM3YxLjE2aC0zdjEuMzJoMy4zM3YxLjE2SDEz''@;'; put 'put ''LjI2di02aDQuNjJ2MS4xNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMC40MSwxNS4yM0gxOC41NFYxNC4wN2g1djEuMTZIMjEuN3Y0Ljg0SDIwLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTMiLz5cbiAgPHBhdGggZD0iTTI4LDE5LjEySDI1LjMybC0uMzguOTVIMjMuNWwyLjQ0LTZoMS40NGwyLjQ1LDZIMjguMzhaTTI3LjU1LDE4bC0uODktMi4xOUwyNS43NywxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik04LjA2''@;'; put 'put ''LDMwYS44NC44NCwwLDAsMS0uMzgtLjA4QTEsMSwwLDAsMSw3LjA2LDI5VjI1aC00YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDEtMWgzMGExLDEsMCwwLDEsMSwxVjI0YTEsMSwwLDAsMS0xLDFIMTMuNDhMOC43NywyOS43MUExLDEsMCwwLDEsOC4wNiwzMFptLTQtN2g0YTEsMSwwLDAs''@;'; put 'put ''MSwxLDF2Mi41OWwzLjMtMy4zYTEsMSwwLDAsMSwuNy0uMjloMTlWMTFoLTI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cblxuICA8cG9seWdvbiBwb2ludHM9IjI1LjgsMTggMjcuNSwxOCAyNi43LDE1LjgiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiLz5cblx0PHBhdGggZD0iTTEwLjQsMTcuNWMtMC4xLDAtMC4yLDAtMC4zLDBIOC41VjE5bDEuNiwwYzAuNCwwLjEsMC44LTAuMiwwLjktMC42QzExLjEsMTgsMTAuOCwxNy42LDEwLjQsMTcuNXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''Lz5cblx0PHBhdGggZD0iTTEwLjcsMTUuOGMwLTAuNC0wLjMtMC43LTAuOC0wLjdIOC41djEuM2gxLjRDMTAuNCwxNi41LDEwLjcsMTYuMiwxMC43LDE1Ljh6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIi8+XG5cdDxwYXRoIGQ9Ik0zMy4xLDloLTMwYy0wLjYsMC0x''@;'; put 'put ''LDAuNC0xLDF2MTRjMCwwLjYsMC40LDEsMSwxaDR2NGMwLDAuNCwwLjIsMC44LDAuNiwwLjlDNy44LDMwLDcuOSwzMCw4LjEsMzBjMC4zLDAsMC41LTAuMSwwLjctMC4zXG5cdFx0bDQuNy00LjdoMTkuNmMwLjYsMCwxLTAuNCwxLTFWMTBDMzQuMSw5LjQsMzMuNiw5LDMzLjEsOXogTTEwLjQs''@;'; put 'put ''MjAuMWMtMC4xLDAtMC4xLDAtMC4yLDBINy4ydi02aDNjMC45LTAuMSwxLjcsMC41LDEuOCwxLjRcblx0XHRjMCwwLDAsMC4xLDAsMC4xYzAsMC42LTAuMywxLjEtMC44LDEuM2MwLjYsMC4yLDEuMSwwLjgsMS4xLDEuNUMxMi4yLDE5LjQsMTEuNCwyMC4xLDEwLjQsMjAuMXogTTE3LjksMTUu''@;'; put 'put ''MmgtMy4zdjEuMmgzdjEuMmgtM3YxLjNcblx0XHRoMy4zdjEuMmgtNC42di02aDQuNlYxNS4yeiBNMjEuNywyMC4xaC0xLjN2LTQuOGgtMS45di0xLjJoNXYxLjJoLTEuOFYyMC4xeiBNMjguNCwyMC4xbC0wLjQtMWgtMi43bC0wLjQsMWgtMS40bDIuNC02aDEuNGwyLjUsNlxuXHRcdEgyOC40''@;'; put 'put ''eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuJyksbC5DbHJTaGFwZUZpcnN0QWlkPSgwLGEuY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsNkgyMy45MVY0LjVBMi41LDIuNSwwLDAsMCwyMS40MSwyaC03YTIuNSwyLjUsMCwwLDAtMi41LDIuNVY2SDRB''@;'; put 'put ''MiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTMuOTEsNC41YS41LjUsMCwwLDEsLjUtLjVoN2EuNS41LDAsMCwxLC41LjVWNmgtOFpNNCwyOFY4SDMyVjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIwLjE1LDI1LjJIMTYuNzRhMS4zLDEuMywwLDAsMS0xLjMtMS4zVjIxLjJoLTIuN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjNWMTYuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMi43VjEyLjVhMS4zLDEuMywwLDAsMSwxLjMtMS4zaDMuNDFhMS4zLDEu''@;'; put 'put ''MywwLDAsMSwxLjI5LDEuM3YyLjdoMi43MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjMuNGExLjMsMS4zLDAsMCwxLTEuMjksMS4zSDIxLjQ0djIuN0ExLjMsMS4zLDAsMCwxLDIwLjE1LDI1LjJaTTE3LDIzLjZoMi44MXYtNGg0VjE2LjhoLTR2LTRIMTd2NEgxM3YyLjhoNFptNy4xMS02Ljha''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwy''@;'; put 'put ''LDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk0yNC42NCwxOS45YS41LjUsMCwwLDEtLjUuNWgtMy41djMuNWEuNS41LDAsMCwxLS41LjVoLTMuNGEuNS41LDAsMCwxLS41LS41VjIwLjRoLTMuNWEu''@;'; put 'put ''NS41LDAsMCwxLS41LS41VjE2LjVhLjUuNSwwLDAsMSwuNS0uNWgzLjVWMTIuNWEuNS41LDAsMCwxLC41LS41aDMuNGEuNS41LDAsMCwxLC41LjVWMTZoMy41YS41LjUsMCwwLDEsLjUuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksbC5DbHJTaGFw''@;'; put 'put ''ZUNvbG9yUGFsZXR0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuNTQsMjMuMDVhMy4yMiwzLjIyLDAsMCwxLTMtMS43N0EzLjA1LDMuMDUsMCwwLDEsMTguNSwxOWEzLjc0LDMuNzQsMCwwLDEsMS45NS0yLjA2QTMuNCwzLjQsMCwwLDEsMjUsMTguM2EzLDMsMCwwLDEsLjA4LDIu''@;'; put 'put ''MzIsMy42OSwzLjY5LDAsMCwxLTIsMi4wN0EzLjg1LDMuODUsMCwwLDEsMjEuNTQsMjMuMDVabS41NC00LjkxYTIuNDEsMi40MSwwLDAsMC0xLC4yMWgwQTIuMTMsMi4xMywwLDAsMCwyMCwxOS41MWExLjM3LDEuMzcsMCwwLDAsMCwxLjA5LDEuODEsMS44MSwwLDAsMCwyLjQ1LjYzLDIuMSwy''@;'; put 'put ''LjEsMCwwLDAsMS4xMi0xLjE1LDEuNCwxLjQsMCwwLDAsMC0xLjFBMS41OSwxLjU5LDAsMCwwLDIyLjA4LDE4LjE0Wm0tMS4yOS0uNTJoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xNi4xOSwzMy44N0ExMy43MiwxMy43Miww''@;'; put 'put ''LDAsMSw2LjQsMzAsMTMuODYsMTMuODYsMCwwLDEsMiwyMGMwLTQuNCwyLTguODQsNS42OC0xMi41YTE4LjIsMTguMiwwLDAsMSwxMy4xLTUuMzdoLjEyYzMuMzMsMCw2Ljg1LDEuNDksNy4yNCw0LjczLjIxLDEuNzctLjU5LDMuNDctMS4yOSw1LS41NSwxLjE3LTEuMTEsMi4zOS0uNzIsMi44''@;'; put 'put ''MXMxLC4xMiwyLjA5LS4yYTYuMjcsNi4yNywwLDAsMSwzLjM4LS4zNiwzLDMsMCwwLDEsMS44NywxLjU2Yy45NCwxLjgzLjQ3LDQuNjctLjIzLDYuNTRoMEExNy4zOCwxNy4zOCwwLDAsMSwyOSwyOC43NCwxOS40MywxOS40MywwLDAsMSwxNi4xOSwzMy44N1pNMjAuNzgsNC4xNkExNi4yMiwx''@;'; put 'put ''Ni4yMiwwLDAsMCw5LjA5LDlDNS43OSwxMi4yMyw0LDE2LjE2LDQsMjBBMTEuOTIsMTEuOTIsMCwwLDAsNy44LDI4LjZjNS4zOCw1LjI1LDE0LjYyLDMuNTUsMTkuODctMS4zM2ExNS41MiwxNS41MiwwLDAsMCwzLjctNS43NWgwYy43LTEuOS44NC0zLjkyLjMyLTQuOTJhMSwxLDAsMCwwLS42''@;'; put 'put ''MS0uNTUsNC44Niw0Ljg2LDAsMCwwLTIuMjkuMzVjLTEuMzEuMzktMywuODktNC4xMi0uMzUtMS4zMi0xLjQtLjQ2LTMuMjUuMzctNWE3LjkzLDcuOTMsMCwwLDAsMS4xMS0zLjljLS4yNC0yLTIuODEtMi45NS01LjI2LTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuODcsMjYuNjVBMi41OSwyLjU5LDAsMCwwLDIyLjM1LDI1TDIyLDI0LjlsLS40NiwxLjUzLjE2LDBhMSwxLDAsMCwxLC42LjYxYy4xNy42LS40MSwxLjMxLTEuMjYsMS41NXMtMS43MS0uMDctMS44OC0uNjZsLTEuNTQuNDNoMGEyLjgzLDIuODMsMCww''@;'; put 'put ''LDAsMi44NCwxLjkxLDQsNCwwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMjMuODcsMjYuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTUuMDcsMjUuNTloMGEyLjczLDIuNzMsMCwwLDAtMi4yNC0xLjg0bC0uMjcsMS41OGExLjEy''@;'; put 'put ''LDEuMTIsMCwwLDEsMSwuN2MuMTcuNTktLjQxLDEuMy0xLjI2LDEuNTRBMS45MiwxLjkyLDAsMCwxLDExLDI3LjUyYTEsMSwwLDAsMS0uNi0uNjFzMC0uMDksMC0uMTNsLTEuNTguMTZhMiwyLDAsMCwwLC4wNi40MUEyLjU5LDIuNTksMCwwLDAsMTAuMzcsMjlhMy4zNiwzLjM2LDAsMCwwLDEu''@;'; put 'put ''MzEuMjUsMy43LDMuNywwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMTUuMDcsMjUuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMTAuNzgsMTkuMTdhMi41OSwyLjU5LDAsMCwwLTEuNTItMS42NSwyLjkxLDIuOTEsMCwwLDAtLjUt''@;'; put 'put ''LjE2bC0uMzcsMS41NmExLjIxLDEuMjEsMCwwLDEsLjI1LjA4LDEsMSwwLDAsMSwuNi42Yy4xNy42LS40MSwxLjMxLTEuMjYsMS41NXMtMS43MS0uMDYtMS44OC0uNjZhLjg2Ljg2LDAsMCwxLDAtLjM5bC0xLjU2LS4zNGEyLjQsMi40LDAsMCwwLDAsMS4xNkEyLjgzLDIuODMsMCwwLDAsNy40''@;'; put 'put ''LDIyLjgzYTQsNCwwLDAsMCwxLS4xNEEzLDMsMCwwLDAsMTAuNzgsMTkuMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNMTMuNDUsMTEuNGEyLjU5LDIuNTksMCwwLDAtMS41Mi0xLjY1LDEuMTcsMS4xNywwLDAsMC0uMi0uMDZs''@;'; put 'put ''LS41MiwxLjUxYS4zOC4zOCwwLDAsMSwuMSwwLDEsMSwwLDAsMSwuNi42Yy4xNy42LS40MSwxLjMxLTEuMjYsMS41NWEyLjA2LDIuMDYsMCwwLDEtMS4yOC0uMDUsMSwxLDAsMCwxLS42LS42MS44NS44NSwwLDAsMSwwLS4zMmwtMS41OC0uMTlhMi4zLDIuMywwLDAsMCwuMDYuOTRBMi41Niwy''@;'; put 'put ''LjU2LDAsMCwwLDguNzUsMTQuOGEzLjM3LDMuMzcsMCwwLDAsMS4zMS4yNiw0LDQsMCwwLDAsMS0uMTRBMywzLDAsMCwwLDEzLjQ1LDExLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICA8cGF0aCBkPSJNMjEsNi43OGEyLjU2LDIuNTYsMCwwLDAt''@;'; put 'put ''MS41Mi0xLjY1bC0uMy0uMUwxOC43LDYuNTZsLjE1LDBhMSwxLDAsMCwxLC42LjYxYy4xNy42LS40MSwxLjMtMS4yNiwxLjU0cy0xLjcxLS4wNi0xLjg4LS42NWEuOS45LDAsMCwxLC4wNi0uNThMMTQuODksNi45YTIuNDcsMi40NywwLDAsMC0uMTIsMS42MywyLjg0LDIuODQsMCwwLDAsMi44''@;'; put 'put ''NCwxLjkxLDMuNTgsMy41OCwwLDAsMCwxLS4xNUEzLDMsMCwwLDAsMjEsNi43OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03Ii8+XG5cbiAgPHBhdGggZD0iTTMyLjIzLDE0Ljg5Yy0yLjEtLjU2LTQuOTMsMS44LTYuMzQuMy0xLjcxLTEuODIsMi4yNy01LjUz''@;'; put 'put ''LDEuODYtOC45Mi0uMzMtMi43OC0zLjUxLTQuMDgtNi42Ni00LjFBMTguNSwxOC41LDAsMCwwLDcuNzQsNy41OWMtNi42NCw2LjU5LTguMDcsMTYtMS4zNywyMi40OCw2LjIxLDYsMTYuNjEsNC4yMywyMi42Ny0xLjRhMTcuNzMsMTcuNzMsMCwwLDAsNC4yMi02LjU0QzM0LjM0LDE5LjIzLDM0''@;'; put 'put ''LjQ0LDE1LjQ5LDMyLjIzLDE0Ljg5Wk05LjQsMTAuNTdhMi4yMywyLjIzLDAsMCwxLDIuODcsMS4yMSwyLjIyLDIuMjIsMCwwLDEtMS44MSwyLjUzQTIuMjIsMi4yMiwwLDAsMSw3LjU5LDEzLjEsMi4yMywyLjIzLDAsMCwxLDkuNCwxMC41N1pNNS4wNywyMC44MmEyLjIyLDIuMjIsMCwwLDEs''@;'; put 'put ''MS44Mi0yLjUzQTIuMjIsMi4yMiwwLDAsMSw5Ljc1LDE5LjUsMi4yMywyLjIzLDAsMCwxLDcuOTQsMjIsMi4yNCwyLjI0LDAsMCwxLDUuMDcsMjAuODJabTcsOC4zM2EyLjIyLDIuMjIsMCwwLDEtMi44Ny0xLjIxQTIuMjMsMi4yMywwLDAsMSwxMSwyNS40MWEyLjIzLDIuMjMsMCwwLDEsMi44''@;'; put 'put ''NywxLjIxQTIuMjIsMi4yMiwwLDAsMSwxMiwyOS4xNVpNMTUsOC4yNmEyLjIzLDIuMjMsMCwwLDEsMS44MS0yLjUzLDIuMjQsMi4yNCwwLDAsMSwyLjg3LDEuMjEsMi4yMiwyLjIyLDAsMCwxLTEuODIsMi41M0EyLjIxLDIuMjEsMCwwLDEsMTUsOC4yNlptNS44MiwyMi4xOWEyLjIyLDIuMjIs''@;'; put 'put ''MCwwLDEtMi44Ny0xLjIxLDIuMjMsMi4yMywwLDAsMSwxLjgxLTIuNTMsMi4yNCwyLjI0LDAsMCwxLDIuODcsMS4yMUEyLjIyLDIuMjIsMCwwLDEsMjAuNzgsMzAuNDVabTUtMTAuNDZhMy4yLDMuMiwwLDAsMS0xLjY5LDEuNzYsMy41MywzLjUzLDAsMCwxLTEuNC4zLDIuNzgsMi43OCwwLDAs''@;'; put 'put ''MS0yLjU2LTEuNSwyLjQ5LDIuNDksMCwwLDEtLjA3LTIsMy4yLDMuMiwwLDAsMSwxLjY5LTEuNzYsMywzLDAsMCwxLDQsMS4yQTIuNTQsMi41NCwwLDAsMSwyNS43OSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxsLkVzc2VudGlhbFNoYXBlcz17ImFk''@;'; put 'put ''ZC10ZXh0IjpsLkNsclNoYXBlQWRkVGV4dCwiYWxhcm0tb2ZmIjpsLkNsclNoYXBlQWxhcm1PZmYscGluYm9hcmQ6bC5DbHJTaGFwZVBpbmJvYXJkLG5ldzpsLkNsclNoYXBlTmV3LCJidWJibGUtZXhjbGFtYXRpb24iOmwuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbiwiZ3JpZC12aWV3Ijps''@;'; put 'put ''LkNsclNoYXBlR3JpZFZpZXcsImN1cnNvci1hcnJvdyI6bC5DbHJTaGFwZUN1cnNvckFycm93LCJjdXJzb3ItaGFuZCI6bC5DbHJTaGFwZUN1cnNvckhhbmQsImN1cnNvci1oYW5kLWNsaWNrIjpsLkNsclNoYXBlQ3Vyc29ySGFuZENsaWNrLCJjdXJzb3ItaGFuZC1ncmFiIjpsLkNsclNoYXBl''@;'; put 'put ''Q3Vyc29ySGFuZEdyYWIsImN1cnNvci1oYW5kLW9wZW4iOmwuQ2xyU2hhcGVDdXJzb3JIYW5kT3BlbiwiY3Vyc29yLW1vdmUiOmwuQ2xyU2hhcGVDdXJzb3JNb3ZlLCJmaXJzdC1haWQiOmwuQ2xyU2hhcGVGaXJzdEFpZCxyZXNpemU6bC5DbHJTaGFwZVJlc2l6ZSxvYmplY3RzOmwuQ2xyU2hh''@;'; put 'put ''cGVPYmplY3RzLGJvb2s6bC5DbHJTaGFwZUJvb2ssYXN0ZXJpc2s6bC5DbHJTaGFwZUFzdGVyaXNrLGJ1ZzpsLkNsclNoYXBlQnVnLHNjaXNzb3JzOmwuQ2xyU2hhcGVTY2lzc29ycyx0aGVybW9tZXRlcjpsLkNsclNoYXBlVGhlcm1vbWV0ZXIscGVuY2lsOmwuQ2xyU2hhcGVQZW5jaWwsbm90''@;'; put 'put ''ZTpsLkNsclNoYXBlTm90ZSxyZWZyZXNoOmwuQ2xyU2hhcGVSZWZyZXNoLHN5bmM6bC5DbHJTaGFwZVN5bmMsInZpZXctbGlzdCI6bC5DbHJTaGFwZVZpZXdMaXN0LCJ2aWV3LWNhcmRzIjpsLkNsclNoYXBlVmlld0NhcmRzLCJ0cmVlLXZpZXciOmwuQ2xyU2hhcGVUcmVlVmlldyxsaWdodGJ1''@;'; put 'put ''bGI6bC5DbHJTaGFwZUxpZ2h0YnVsYixkb3dubG9hZDpsLkNsclNoYXBlRG93bmxvYWQsdXBsb2FkOmwuQ2xyU2hhcGVVcGxvYWQsbG9jazpsLkNsclNoYXBlTG9jayx1bmxvY2s6bC5DbHJTaGFwZVVubG9jayx1c2VyczpsLkNsclNoYXBlVXNlcnMsInBvcC1vdXQiOmwuQ2xyU2hhcGVQb3BP''@;'; put 'put ''dXQsZmlsdGVyOmwuQ2xyU2hhcGVGaWx0ZXIscGluOmwuQ2xyU2hhcGVQaW4sZmlsZTpsLkNsclNoYXBlRmlsZSxwbHVzOmwuQ2xyU2hhcGVQbHVzLG1pbnVzOmwuQ2xyU2hhcGVNaW51cywibWludXMtY2lyY2xlIjpsLkNsclNoYXBlTWludXNDaXJjbGUsInBsdXMtY2lyY2xlIjpsLkNsclNo''@;'; put 'put ''YXBlUGx1c0NpcmNsZSxiYW46bC5DbHJTaGFwZUJhbiwidGltZXMtY2lyY2xlIjpsLkNsclNoYXBlVGltZXNDaXJjbGUsdHJhc2g6bC5DbHJTaGFwZVRyYXNoLGNpcmNsZTpsLkNsclNoYXBlQ2lyY2xlLHRhZzpsLkNsclNoYXBlVGFnLHRhZ3M6bC5DbHJTaGFwZVRhZ3MsaGlzdG9yeTpsLkNs''@;'; put 'put ''clNoYXBlSGlzdG9yeSxjbG9jazpsLkNsclNoYXBlQ2xvY2ssImFsYXJtLWNsb2NrIjpsLkNsclNoYXBlQWxhcm1DbG9jayxhcnJvdzp2LkNsclNoYXBlQXJyb3csImNpcmNsZS1hcnJvdyI6bC5DbHJTaGFwZUNpcmNsZUFycm93LCJjaGlsZC1hcnJvdyI6bC5DbHJTaGFwZUNoaWxkQXJyb3cs''@;'; put 'put ''Y29weTpsLkNsclNoYXBlQ29weSxoZWxwOmwuQ2xyU2hhcGVIZWxwLGxvZ2luOmwuQ2xyU2hhcGVMb2dpbixsb2dvdXQ6bC5DbHJTaGFwZUxvZ291dCxwcmludGVyOmwuQ2xyU2hhcGVQcmludGVyLHdvcmxkOmwuQ2xyU2hhcGVXb3JsZCxzbGlkZXI6bC5DbHJTaGFwZVNsaWRlcixjbGlwYm9h''@;'; put 'put ''cmQ6bC5DbHJTaGFwZUNsaXBib2FyZCxmaXJld2FsbDpsLkNsclNoYXBlRmlyZXdhbGwsbGlzdDpsLkNsclNoYXBlTGlzdCxyZWRvOmwuQ2xyU2hhcGVSZWRvLHVuZG86bC5DbHJTaGFwZVVuZG8sc2Nyb2xsOmwuQ2xyU2hhcGVTY3JvbGwsImZpbGUtc2V0dGluZ3MiOmwuQ2xyU2hhcGVGaWxl''@;'; put 'put ''U2V0dGluZ3MsInR3by13YXktYXJyb3dzIjpsLkNsclNoYXBlVHdvV2F5QXJyb3dzLHN3aXRjaDpsLkNsclNoYXBlU3dpdGNoLHRvb2xzOmwuQ2xyU2hhcGVUb29scywid2luZG93LWNsb3NlIjpsLkNsclNoYXBlV2luZG93Q2xvc2UsIndpbmRvdy1tYXgiOmwuQ2xyU2hhcGVXaW5kb3dNYXgs''@;'; put 'put ''IndpbmRvdy1taW4iOmwuQ2xyU2hhcGVXaW5kb3dNaW4sIndpbmRvdy1yZXN0b3JlIjpsLkNsclNoYXBlV2luZG93UmVzdG9yZSwiem9vbS1pbiI6bC5DbHJTaGFwZVpvb21Jbiwiem9vbS1vdXQiOmwuQ2xyU2hhcGVab29tT3V0LGtleTpsLkNsclNoYXBlS2V5LGxpYnJhcnk6bC5DbHJTaGFw''@;'; put 'put ''ZUxpYnJhcnksYm9sdDpsLkNsclNoYXBlQm9sdCx3cmVuY2g6bC5DbHJTaGFwZVdyZW5jaCxidWxsc2V5ZTpsLkNsclNoYXBlQnVsbHNleWUsdGFyZ2V0OmwuQ2xyU2hhcGVUYXJnZXQsZmxhbWU6bC5DbHJTaGFwZUZsYW1lLGhvdXJnbGFzczpsLkNsclNoYXBlSG91cmdsYXNzLCJuby1hY2Nl''@;'; put 'put ''c3MiOmwuQ2xyU2hhcGVOb0FjY2Vzcyxvcmdhbml6YXRpb246bC5DbHJTaGFwZU9yZ2FuaXphdGlvbixiYWxhbmNlOmwuQ2xyU2hhcGVCYWxhbmNlLCJpZC1iYWRnZSI6bC5DbHJTaGFwZUlkQmFkZ2UscmVwZWF0OmwuQ2xyU2hhcGVSZXBlYXQsImZpbGUtZ3JvdXAiOmwuQ2xyU2hhcGVGaWxl''@;'; put 'put ''R3JvdXAscGFwZXJjbGlwOmwuQ2xyU2hhcGVQYXBlcmNsaXAsc2hyaW5rOmwuQ2xyU2hhcGVTaHJpbmssImFjY2Vzc2liaWxpdHktMSI6bC5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxLCJhY2Nlc3NpYmlsaXR5LTIiOmwuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Miwic29ydC1ieSI6bC5DbHJTaGFw''@;'; put 'put ''ZVNvcnRCeSwiY29sbGFwc2UtY2FyZCI6bC5DbHJTaGFwZUNvbGxhcHNlQ2FyZCwiZXhwYW5kLWNhcmQiOmwuQ2xyU2hhcGVFeHBhbmRDYXJkLGJyaWVmY2FzZTpsLkNsclNoYXBlQnJpZWZjYXNlLCJjb2xvci1waWNrZXIiOmwuQ2xyU2hhcGVDb2xvclBpY2tlciwiY29weS10by1jbGlwYm9h''@;'; put 'put ''cmQiOmwuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQsImZpbHRlci0yIjpsLkNsclNoYXBlRmlsdGVyMiwiZHJhZy1oYW5kbGUiOmwuQ2xyU2hhcGVEcmFnSGFuZGxlLG1vb246bC5DbHJTaGFwZU1vb24sc3VuOmwuQ2xyU2hhcGVTdW4sd2FuZDpsLkNsclNoYXBlV2FuZCxjbG9uZTpsLkNsclNo''@;'; put 'put ''YXBlQ2xvbmUsZGV0YWlsczpsLkNsclNoYXBlRGV0YWlscywiZHJhZy1oYW5kbGUtY29ybmVyIjpsLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcixlcmFzZXI6bC5DbHJTaGFwZUVyYXNlcixsYW5kc2NhcGU6bC5DbHJTaGFwZUxhbmRzY2FwZSxwYXN0ZTpsLkNsclNoYXBlUGFzdGUscG9ydHJh''@;'; put 'put ''aXQ6bC5DbHJTaGFwZVBvcnRyYWl0LCJmaWxlLXppcCI6bC5DbHJTaGFwZUZpbGVaaXAsImZpbHRlci1vZmYiOmwuQ2xyU2hhcGVGaWx0ZXJPZmYscmVjeWNsZTpsLkNsclNoYXBlUmVjeWNsZSx0cmVlOmwuQ2xyU2hhcGVUcmVlLGZpc2g6bC5DbHJTaGFwZUZpc2gsZm9ybTpsLkNsclNoYXBl''@;'; put 'put ''Rm9ybSxmdWVsOmwuQ2xyU2hhcGVGdWVsLHNub3dmbGFrZTpsLkNsclNoYXBlU25vd2ZsYWtlLHRhYmxlOmwuQ2xyU2hhcGVUYWJsZSwiZG90LWNpcmNsZSI6bC5DbHJTaGFwZURvdENpcmNsZSx2b2x1bWU6bC5DbHJTaGFwZVZvbHVtZSxjcm9zc2hhaXJzOmwuQ2xyU2hhcGVDcm9zc2hhaXJz''@;'; put 'put ''LGJldGE6bC5DbHJTaGFwZUJldGEsImNvbG9yLXBhbGV0dGUiOmwuQ2xyU2hhcGVDb2xvclBhbGV0dGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkVzc2VudGlhbFNoYXBlcywiZWRpdCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5wZW5jaWwpKSxPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsIm5vdGUtZWRpdCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5ub3RlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuRXNzZW50aWFsU2hhcGVzLCJncm91cCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShs''@;'; put 'put ''LkVzc2VudGlhbFNoYXBlcy51c2VycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkVzc2VudGlhbFNoYXBlcywiZG9jdW1lbnQiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Fc3NlbnRpYWxTaGFwZXMuZmlsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkVzc2VudGlhbFNoYXBlcywi''@;'; put 'put ''YWRkIiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuRXNzZW50aWFsU2hhcGVzLnBsdXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsImNhbmNlbCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5iYW4pKSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsInJlbW92ZSIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlc1sidGltZXMtY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsInNpZ24taW4iLCgwLHAuZGVzY3JpcHRvckNvbmZpZyko''@;'; put 'put ''bC5Fc3NlbnRpYWxTaGFwZXMubG9naW4pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsInNpZ24tb3V0IiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuRXNzZW50aWFsU2hhcGVzLmxvZ291dCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkVzc2VudGlhbFNoYXBl''@;'; put 'put ''cywibGlnaHRuaW5nIiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuRXNzZW50aWFsU2hhcGVzLmJvbHQpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsImZsb3ctY2hhcnQiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Fc3NlbnRpYWxTaGFwZXMub3JnYW5pemF0''@;'; put 'put ''aW9uKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuRXNzZW50aWFsU2hhcGVzLCJhbGVydCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlc1siYnViYmxlLWV4Y2xhbWF0aW9uIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsInBpbm5l''@;'; put 'put ''ZCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5waW5ib2FyZCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsImF0dGFjaG1lbnQiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5Fc3NlbnRpYWxTaGFwZXMucGFwZXJjbGlwKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuRXNzZW50aWFsU2hhcGVzLCJyZXNpemUtZG93biIsKDAscC5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5zaHJpbmspKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS11cCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLkVzc2VudGlhbFNoYXBlcy5yZXNpemUpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2lu''@;'; put 'put ''ZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQobC5Fc3NlbnRpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMgKioqIQogICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91''@;'; put 'put ''bmQgKi9mdW5jdGlvbihNLGwsSCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLk1lZGlhU2hhcGVzPWwuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZT1sLkNsclNoYXBlTWljcm9waG9uZT1sLkNsclNoYXBlVmlkZW9HYWxsZXJ5''@;'; put 'put ''PWwuQ2xyU2hhcGVSZXBsYXlPbmU9bC5DbHJTaGFwZVJlcGxheUFsbD1sLkNsclNoYXBlSW1hZ2VHYWxsZXJ5PWwuQ2xyU2hhcGVNdXNpY05vdGU9bC5DbHJTaGFwZUZpbG1TdHJpcD1sLkNsclNoYXBlSGVhZHBob25lcz1sLkNsclNoYXBlVm9sdW1lTXV0ZT1sLkNsclNoYXBlVm9sdW1lVXA9''@;'; put 'put ''bC5DbHJTaGFwZVZvbHVtZURvd249bC5DbHJTaGFwZVNodWZmbGU9bC5DbHJTaGFwZVZpZGVvQ2FtZXJhPWwuQ2xyU2hhcGVDYW1lcmE9bC5DbHJTaGFwZUZhc3RGb3J3YXJkPWwuQ2xyU2hhcGVSZXdpbmQ9bC5DbHJTaGFwZVBvd2VyPWwuQ2xyU2hhcGVTdG9wPWwuQ2xyU2hhcGVTdGVwRm9y''@;'; put 'put ''d2FyZD1sLkNsclNoYXBlUGF1c2U9bC5DbHJTaGFwZVBsYXk9dm9pZCAwLEg9SCgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGwuQ2xyU2hhcGVQbGF5PSgwLEguY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC4wNywzMS42QTIuMDcsMi4wNywwLDAsMSw2LDI5LjUzVjYuMzJBMi4wNywyLjA3LDAsMCwxLDksNC40N0wzMi4yMSwxNi4wOGEyLjA3LDIuMDcsMCwwLDEsMCwzLjdMOSwzMS4zOEEyLjA2LDIu''@;'; put 'put ''MDYsMCwwLDEsOC4wNywzMS42Wm0wLTI1LjM0TDgsNi4zMlYyOS41M2wuMS4wNkwzMS4zMSwxOGEuMDYuMDYsMCwwLDAsMC0uMDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjE2LDE2LjA4LDguOTQsNC40''@;'; put 'put ''N0EyLjA3LDIuMDcsMCwwLDAsNiw2LjMyVjI5LjUzYTIuMDYsMi4wNiwwLDAsMCwzLDEuODVMMzIuMTYsMTkuNzdhMi4wNywyLjA3LDAsMCwwLDAtMy43WiIvPicpLGwuQ2xyU2hhcGVQYXVzZT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgZD0iTTEyLjkzLDMySDYuMDdBMi4wNywyLjA3LDAsMCwxLDQsMjkuOTNWNi4wN0EyLjA3LDIuMDcsMCwwLDEsNi4wNyw0aDYuODdBMi4wNywyLjA3LDAsMCwxLDE1LDYuMDdWMjkuOTNBMi4wNywyLjA3LDAsMCwxLDEyLjkzLDMyWk0xMyw2SDZWMzBoN1oiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LjkzLDMySDIzLjA3QTIuMDcsMi4wNywwLDAsMSwyMSwyOS45M1Y2LjA3QTIuMDcsMi4wNywwLDAsMSwyMy4wNyw0aDYuODdBMi4wNywyLjA3LDAsMCwxLDMyLDYuMDdWMjku''@;'; put 'put ''OTNBMi4wNywyLjA3LDAsMCwxLDI5LjkzLDMyWk0zMCw2SDIzVjMwaDdaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgeD0iMy45NSIgeT0iNCIgd2lkdGg9IjExIiBoZWlnaHQ9IjI4IiByeD0iMi4wNyIgcnk9IjIuMDci''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyMC45NSIgeT0iNCIgd2lkdGg9IjExIiBoZWlnaHQ9IjI4IiByeD0iMi4wNyIgcnk9IjIuMDciLz4nKSxsLkNsclNoYXBlU3RlcEZvcndhcmQ9KDAsSC5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik01LDMyLjIzYTIsMiwwLDAsMS0yLTJWNS43N0EyLDIsMCwwLDEsNi4xNyw0LjE0TDIzLjIzLDE2LjM4YTIsMiwwLDAsMSwwLDMuMjVoMEw2LjE3LDMxLjg2QTIsMiwwLDAsMSw1LDMyLjIzWk01''@;'; put 'put ''LDUuNzdWMzAuMjNMMjIuMDcsMThaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMSwzMkgyOGEyLDIsMCwwLDEtMi0yVjZhMiwyLDAsMCwxLDItMmgzYTIsMiwwLDAsMSwyLDJWMzBBMiwyLDAsMCwxLDMx''@;'; put 'put ''LDMyWk0yOCw2VjMwaDNWNloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNSwzMS45YTIsMiwwLDAsMS0yLTJWNS40NEEyLDIsMCwwLDEsNi4xMiwzLjgxTDIzLjE4LDE2YTIsMiwwLDAsMSwwLDMuMjVoMEw2LjEy''@;'; put 'put ''LDMxLjUyQTIsMiwwLDAsMSw1LDMxLjlaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjUuOTUiIHk9IjMuNjciIHdpZHRoPSI3IiBoZWlnaHQ9IjI4IiByeD0iMiIgcnk9IjIiLz4nKSxsLkNsclNoYXBlU3RvcD0o''@;'; put 'put ''MCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDMySDZhMiwyLDAsMCwxLTItMlY2QTIsMiwwLDAsMSw2LDRIMzBhMiwyLDAsMCwxLDIsMlYzMEEyLDIsMCwwLDEsMzAsMzJaTTYsNlYzMEgzMFY2WiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjMuOTYiIHk9IjQiIHdpZHRoPSIyNy45OSIgaGVpZ2h0PSIyOCIgcng9IjIiIHJ5PSIyIi8+JyksbC5DbHJTaGFwZVBvd2VyPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjFhMSwxLDAsMCwxLTEtMVY0YTEsMSwwLDAsMSwyLDBWMjBBMSwxLDAsMCwxLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBk''@;'; put 'put ''PSJNMTgsMzQuMTVhMTUsMTUsMCwwLDEtNy41Mi0yOCwxLDEsMCwwLDEsMSwxLjczLDEzLDEzLDAsMSwwLDEzLDAsMSwxLDAsMSwxLDEtMS43MywxNSwxNSwwLDAsMS03LjUyLDI4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTgsMjFhMSwxLDAsMCwwLDEtMVY0YTEsMSwwLDAsMC0yLDBWMjBBMSwxLDAsMCwwLDE4LDIxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1h''@;'; put 'put ''bGVydGVkIiBkPSJNMzIuNTEsMTUuNEgzMC40NGExMywxMywwLDEsMS0xOS03LjUsMSwxLDAsMCwwLTEtMS43M0ExNSwxNSwwLDEsMCwzMywxOS4xNSwxNC45LDE0LjksMCwwLDAsMzIuNTEsMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0''@;'; put 'put ''WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDIxYTEsMSwwLDAsMS0xLTFWNGExLDEsMCwwLDEsMiwwVjIwQTEsMSwwLDAsMSwxOCwyMVoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMCwxMy41bC0uMzEsMEExMywxMywwLDEsMSwxMS40OCw3LjlhMSwxLDAsMCwwLTEtMS43MywxNSwxNSwwLDEsMCwyMS4zMSw3LjFBNy40OSw3LjQ5LDAsMCwxLDMw''@;'; put 'put ''LDEzLjVaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0uMDYsMTcuNjhhMS4yOCwxLjI4LDAsMCwxLTEuMjktMS4yOFY4LjY1YTEuMjksMS4yOSwwLDAsMSwyLjU4LDBWMTguNEExLjI4LDEuMjgsMCwwLDEsMTguMDYsMTku''@;'; put 'put ''NjhaTTE4LDI3Ljc5QTkuODgsOS44OCwwLDAsMSwxMi4xNyw5Ljg1YTEuNCwxLjQsMCwwLDEsMS45NC4zMSwxLjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4LDAsMSwwLDExLjQzLDUuOCw3LjA3LDcuMDcsMCwwLDAtMy01Ljc2QTEuMzcsMS4zNywwLDAsMSwyMiwxMC4yYTEuNCwx''@;'; put 'put ''LjQsMCwwLDEsMS45NC0uMjlBOS44OCw5Ljg4LDAsMCwxLDE4LDI3Ljc5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40aC02QTkuNyw5LjcsMCwwLDEsMjgsMTcu''@;'; put 'put ''ODlhMTAsMTAsMCwxLDEtMTUuODMtOCwxLjQsMS40LDAsMCwxLDEuOTQuMzEsMS4zNywxLjM3LDAsMCwxLS4zMSwxLjkyLDcuMTgsNy4xOCwwLDEsMCwxMS40Myw1LjgsNy4wOCw3LjA4LDAsMCwwLS40NS0yLjQ5SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4zNSwxNHY0LjRhMS4yOSwxLjI5''@;'; put 'put ''LDAsMCwxLTIuNTgsMFY4LjY1YTEuMjksMS4yOSwwLDAsMSwyLjU4LDB2LjcxbDMuNzYtNi41MUExNiwxNiwwLDEsMCwzNCwxOGExNiwxNiwwLDAsMC0uMjMtMi42MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0zLjU3LS45QTkuODMsOS44MywwLDAsMSwyOCwxNy44OWExMCwxMCwwLDEsMS0xNS44My04LDEuNCwxLjQsMCwwLDEsMS45NC4zMSwx''@;'; put 'put ''LjM3LDEuMzcsMCwwLDEtLjMxLDEuOTIsNy4xOCw3LjE4LDAsMSwwLDExLjQzLDUuOCw3LjA3LDcuMDcsMCwwLDAtMy01Ljc2QTEuMzcsMS4zNywwLDAsMSwyMiwxMC4yYTEuMzgsMS4zOCwwLDAsMSwxLjUyLS40OSw3LjQ1LDcuNDUsMCwwLDEtLjMtNi44MywxNi4wNiwxNi4wNiwwLDEsMCw5''@;'; put 'put ''LjkzLDkuOTNBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjVaTTE2Ljc3LDguNjVhMS4yOSwxLjI5LDAsMCwxLDIuNTgsMFYxOC40YTEuMjksMS4yOSwwLDAsMS0yLjU4LDBaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGwuQ2xyU2hhcGVSZXdpbmQ9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy4wOSwzMS41OGwtMTUuMzItMTJhMiwy''@;'; put 'put ''LDAsMCwxLDAtMy4xNWwxNS4zMi0xMmExLjkzLDEuOTMsMCwwLDEsMi4wNi0uMjJBMS43NywxLjc3LDAsMCwxLDIwLDZ2Ni43TDMwLjgzLDQuNDJhMS45MywxLjkzLDAsMCwxLDIuMDYtLjIyQTIsMiwwLDAsMSwzNCw2VjMwYTIsMiwwLDAsMS0xLjExLDEuNzksMS45NCwxLjk0LDAsMCwxLTIu''@;'; put 'put ''MDYtLjIyTDIwLDIzLjMxVjMwYTEuNzcsMS43NywwLDAsMS0uODUsMS43OSwxLjk0LDEuOTQsMCwwLDEtMi4wNi0uMjJaTTMyLDMwbC4wNi0yNEwxOCwxNi44VjZMMywxOCwxOCwzMFYxOS4yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMSIgZD0iTTE2LjkyLDMxLjU4LDEuNiwxOS41N2EyLDIsMCwwLDEsMC0zLjE1bDE1LjMyLTEyQTEuOTMsMS45MywwLDAsMSwxOSw0LjIsMS44OSwxLjg5LDAsMCwxLDIwLDZ2Ni43TDMwLjY2LDQuNDJhMS45MywxLjkzLDAsMCwxLDIuMDYtLjIyQTIsMiwwLDAsMSwzMy44Myw2VjMwYTIs''@;'; put 'put ''MiwwLDAsMS0xLjExLDEuNzksMS45NCwxLjk0LDAsMCwxLTIuMDYtLjIyTDIwLDIzLjMxVjMwYTEuODksMS44OSwwLDAsMS0xLDEuNzksMS45NCwxLjk0LDAsMCwxLTIuMDYtLjIyWiIvPicpLGwuQ2xyU2hhcGVGYXN0Rm9yd2FyZD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE3Ljc3LDMxLjkyYTIsMiwwLDAsMS0uODYtLjJBMS44MSwxLjgxLDAsMCwxLDE2LDI5Ljkzdi02LjdMNS4yNCwzMS41YTEuOTQsMS45NCwwLDAsMS0yLjA2LjIyLDIsMiwwLDAsMS0xLjExLTEuNzl2LTI0QTIsMiwwLDAsMSwz''@;'; put 'put ''LjE4LDQuMTJhMS45MywxLjkzLDAsMCwxLDIuMDYuMjJMMTYsMTIuNjFWNS45MWExLjgxLDEuODEsMCwwLDEsLjkxLTEuNzlBMS45MywxLjkzLDAsMCwxLDE5LDQuMzRsMTUuMzIsMTJhMiwyLDAsMCwxLDAsMy4xNUwxOSwzMS41QTIsMiwwLDAsMSwxNy43NywzMS45MlptMC0xMi44VjI5Ljkz''@;'; put 'put ''bDE1LjI2LTEyLTE1LjMyLTEyLC4wNiwxMC44MUw0LDUuOTF2MjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTcuNzEsMzJhMiwyLDAsMCwxLS44Ni0uMkExLjc3LDEuNzcsMCwwLDEsMTYsMzB2LTYuN0w1LjE3LDMx''@;'; put 'put ''LjU4YTEuOTQsMS45NCwwLDAsMS0yLjA2LjIyQTIsMiwwLDAsMSwyLDMwVjZBMiwyLDAsMCwxLDMuMTEsNC4yYTEuOTMsMS45MywwLDAsMSwyLjA2LjIyTDE2LDEyLjY5VjZhMS43NywxLjc3LDAsMCwxLC44NS0xLjc5LDEuOTMsMS45MywwLDAsMSwyLjA2LjIybDE1LjMyLDEyYTIsMiwwLDAs''@;'; put 'put ''MSwwLDMuMTVsLTE1LjMyLDEyQTIsMiwwLDAsMSwxNy43MSwzMloiLz4nKSxsLkNsclNoYXBlQ2FtZXJhPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw4SDI0LjdMMjMuNjQsNS4yOEEyLDIsMCwwLDAsMjEuNzgsNEgxNC4yMmEyLDIsMCwwLDAtMS44NywxLjI4TDExLjMsOEg0YTIs''@;'; put 'put ''MiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wm0wLDIySDRWMTBoOC42N2wxLjU1LTRoNy41NmwxLjU1LDRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTksMTlhOSw5LDAsMSwwLDktOUE5LDksMCwwLDAsOSwxOVptMTYuNCwwQTcuNCw3LjQsMCwxLDEsMTgsMTEuNiw3LjQxLDcuNDEsMCwwLDEsMjUuNCwxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''OS4zNywxMi44M2EuOC44LDAsMCwwLS44LS44SDYuMTdhLjguOCwwLDAsMCwwLDEuNmgyLjRBLjguOCwwLDAsMCw5LjM3LDEyLjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4zNCwxOWE1LjU3LDUuNTcs''@;'; put 'put ''MCwwLDAsMy4yNCw1bC44NS0xLjM3YTQsNCwwLDEsMSw0LjExLTYuNjFsLjg2LTEuMzhBNS41Niw1LjU2LDAsMCwwLDEyLjM0LDE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw4SDI0LjdMMjMuNjQsNS4y''@;'; put 'put ''OEEyLDIsMCwwLDAsMjEuNzgsNEgxNC4yMmEyLDIsMCwwLDAtMS44NywxLjI4TDExLjMsOEg0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk02LjE3LDEzLjYzYS44LjgsMCwwLDEsMC0xLjZoMi40YS44LjgsMCwwLDEs''@;'; put 'put ''MCwxLjZaTTE4LDI4YTksOSwwLDEsMSw5LTlBOSw5LDAsMCwxLDE4LDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjExLDE5LjA2YTcuMDcsNy4wNywwLDAsMCw0LjExLDYuNDFsMS4wOS0xLjc0YTUsNSwwLDEs''@;'; put 'put ''MSw1LjIyLTguMzlsMS4wOS0xLjc2YTcuMDYsNy4wNiwwLDAsMC0xMS41MSw1LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLGwuQ2xyU2hhcGVWaWRlb0NhbWVyYT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDEwLjM0YTIuMTEsMi4xMSwwLDAsMC0xLjE2LTEuOSwyLDIsMCwwLDAtMi4xMy4xNUwyNiwxMS42VjhhMiwyLDAsMCwwLTItMkg2YTQsNCwwLDAsMC00LDRWMjZhNCw0LDAsMCwwLDQsNEgyNGEyLDIsMCwwLDAsMi0yVjI0LjRsNC42NCwzYTIuMDcs''@;'; put 'put ''Mi4wNywwLDAsMCwyLjIuMkEyLjExLDIuMTEsMCwwLDAsMzQsMjUuNjZaTTMxLjkzLDI1Ljc3Yy0uMDYsMC0uMTEsMC0uMTktLjA2TDI0LDIwLjc3VjI4SDZhMiwyLDAsMCwxLTItMlYxMEEyLDIsMCwwLDEsNiw4SDI0djcuMjNsNy44LTVhLjExLjExLDAsMCwxLC4xMywwLC4xMS4xMSwwLDAs''@;'; put 'put ''MSwuMDcuMTFWMjUuNjZBLjExLjExLDAsMCwxLDMxLjkzLDI1Ljc3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjMsOS4zNSwyNiwxMi45VjhhMiwyLDAsMCwwLTItMkg2YTQsNCwwLDAsMC00LDRWMjZhNCw0LDAs''@;'; put 'put ''MCwwLDQsNEgyNGEyLDIsMCwwLDAsMi0yVjIzLjA4bDYuMywzLjU1QTEuMSwxLjEsMCwwLDAsMzQsMjUuNzdWMTAuMkExLjEsMS4xLDAsMCwwLDMyLjMsOS4zNVoiLz4nKSxsLkNsclNoYXBlU2h1ZmZsZT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgZD0iTTIxLjYxLDExaDguNjJsLTMuMywzLjNhMSwxLDAsMSwwLDEuNDEsMS40MkwzNCwxMC4wOGwtLjcxLS43MWgwTDI4LjM0LDQuNDNhMSwxLDAsMCwwLTEuNDEsMS40MkwzMC4xMSw5SDIxYTEsMSwwLDAsMC0uODYuNUwxNy41LDE0LjA5bDEuMTYsMloiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTEuMDcsMjUuMDdIM2ExLDEsMCwwLDAsMCwyaDguNjVhMSwxLDAsMCwwLC44Ni0uNUwxNS4xOCwyMiwxNCwyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjguMzQsMjAuMTdhMSwxLDAsMCwwLTEuNDEsMS40MmwzLjUsMy41SDIxLjYxTDEyLjUxLDkuNTNhMSwxLDAsMCwwLS44Ni0uNUgzYTEsMSwwLDEsMCwwLDJoOC4wN2w5LjEsMTUuNTVhMSwxLDAsMCwwLC44Ni41SDI5LjlsLTMs''@;'; put 'put ''M2ExLDEsMCwwLDAsMS40MSwxLjQybDQuOTUtNC45NGgwbC43MS0uNzFaIi8+JyksbC5DbHJTaGFwZVZvbHVtZURvd249KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yMy40MSwyNS4xMWExLDEsMCwwLDEtLjU0''@;'; put 'put ''LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczQTguMjEsOC4yMSwwLDAsMSwyMy45NCwyNSwxLDEsMCwwLDEsMjMuNDEsMjUuMTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTE4LDMyYTIsMiwwLDAsMS0xLjQyLS41OUw5LjE0LDI0SDRhMiwyLDAsMCwxLTItMlYxNGEyLDIsMCwwLDEsMi0ySDkuMjJsNy4zMy03LjQxQTIsMiwwLDAsMSwyMCw2VjMwYTIsMiwwLDAsMS0xLjI0LDEuODVBMiwyLDAsMCwxLDE4LDMyWk00LDE0djhIOS41NmExLDEsMCwwLDEsLjcxLjI4''@;'; put 'put ''TDE4LDMwVjZsLTcuNjUsNy42OGExLDEsMCwwLDEtLjcxLjNaTTE4LDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMTFhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUs''@;'; put 'put ''MSwxLDAsMSwxLDEtMS43M0E4LjIxLDguMjEsMCwwLDEsMjMuOTQsMjUsMSwxLDAsMCwxLDIzLjQxLDI1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LjM0LDMuODcsOSwxMkgzYTEsMSwwLDAsMC0xLDFWMjNh''@;'; put 'put ''MSwxLDAsMCwwLDEsMUg4LjgzbDkuNTEsOC4zQTEsMSwwLDAsMCwyMCwzMS41NVY0LjYyQTEsMSwwLDAsMCwxOC4zNCwzLjg3WiIvPicpLGwuQ2xyU2hhcGVWb2x1bWVVcD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTIzLjQxLDI1LjI1YTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSwwLDEsMSwxLTEuNzMsOC4yMSw4LjIxLDAsMCwxLC4yNCwxNC4wNkExLDEsMCwwLDEsMjMuNDEsMjUuMjVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI1LjYyLDMxLjE4YTEsMSwwLDAsMS0uNDUtMS44OUExMi40NCwxMi40NCwwLDAsMCwyNSw2Ljg5YTEsMSwwLDEsMSwuODctMS44LDE0LjQ0LDE0LjQ0LDAsMCwxLC4yNCwyNkExLDEsMCwwLDEsMjUuNjIsMzEuMThaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDMyLjA2YTIsMiwwLDAsMS0xLjQyLS41OUw5LjE0LDI0SDRhMiwyLDAsMCwxLTItMlYxNGEyLDIsMCwwLDEsMi0ySDkuMjJsNy4zMy03LjM5QTIsMiwwLDAsMSwyMCw2djI0YTIsMiww''@;'; put 'put ''LDAsMS0xLjI0LDEuODVBMiwyLDAsMCwxLDE4LDMyLjA2Wk00LDE0djhIOS41NmExLDEsMCwwLDEsLjcxLjNMMTgsMzAuMDZWNkwxMC4zNSwxMy43YTEsMSwwLDAsMS0uNzEuM1pNMTgsNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0yMy40MSwyNS4yNWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczLDguMjEsOC4yMSwwLDAsMSwuMjQsMTQuMDZBMSwxLDAsMCwxLDIzLjQxLDI1LjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI1LjYyLDMxLjE4YTEsMSwwLDAsMS0uNDUtMS44OUExMi40NCwxMi40NCwwLDAsMCwyNSw2Ljg5YTEsMSwwLDEsMSwuODctMS44LDE0LjQ0LDE0LjQ0LDAsMCwxLC4yNCwyNkExLDEsMCwwLDEsMjUuNjIsMzEuMThaIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMTguMzMsNCw5LjA3LDEyaC02YTEsMSwwLDAsMC0xLDF2OS45MmExLDEsMCwwLDAsMSwxSDguODhsOS40Niw4LjI0QTEsMSwwLDAsMCwyMCwzMS40M1Y0LjcyQTEsMSwwLDAsMCwxOC4zMyw0WiIv''@;'; put 'put ''PicpLGwuQ2xyU2hhcGVWb2x1bWVNdXRlPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMy42MSw2LjQxLDkuMTksMTJINGEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkg5LjE0bDcuNDEsNy40N0EyLDIs''@;'; put 'put ''MCwwLDAsMTgsMzJhMiwyLDAsMCwwLC43Ni0uMTVBMiwyLDAsMCwwLDIwLDMwVjIyLjc3bDUuODksNS44OWMtLjI1LjE1LS40OS4yOS0uNzUuNDJhMSwxLDAsMCwwLC45LDEuNzksMTQuNCwxNC40LDAsMCwwLDEuMzEtLjc1bDIuMjgsMi4yOEwzMSwzMSw1LDVaTTE4LDMwbC03LjczLTcuNzdB''@;'; put 'put ''MSwxLDAsMCwwLDkuNTYsMjJINFYxNEg5LjY0YTEsMSwwLDAsMCwuNzEtLjNsLjI2LS4yNkwxOCwyMC44MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjQuODksNi42OUExMi40MiwxMi40MiwwLDAsMSwyOSwy''@;'; put 'put ''Ni4xbDEuNDIsMS40MkExNC40MiwxNC40MiwwLDAsMCwyNS43Niw0Ljg4YTEsMSwwLDEsMC0uODcsMS44WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMi42OSwxMi42MkE2LjI3LDYuMjcsMCwwLDEsMjUuOCwx''@;'; put 'put ''OGE2LjE3LDYuMTcsMCwwLDEtMS4yNCwzLjcxTDI2LDIzLjEzQTguMTUsOC4xNSwwLDAsMCwyNy44LDE4YTguMjgsOC4yOCwwLDAsMC00LjEtNy4xMSwxLDEsMCwxLDAtMSwxLjczWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTQiIGQ9Ik0xOCw2djkuMTVsMiwyVjZhMiwyLDAsMCwwLTMuNDItMS40MUwxMiw5LjE3bDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNC44Nyw2LjY5QTEyLjQyLDEyLjQyLDAsMCwxLDI4Ljc1LDI2''@;'; put 'put ''LjNsMS40MiwxLjQyQTE0LjQzLDE0LjQzLDAsMCwwLDI1Ljc0LDQuODhhMSwxLDAsMCwwLS44NywxLjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjcuMywyNy42N2gwbC0zLjg0LTMuODQtLjU3LS41N2gwTDQuNjMs''@;'; put 'put ''NSwzLjIxLDYuNDEsOC44LDEySDNhMSwxLDAsMCwwLTEsMVYyM2ExLDEsMCwwLDAsMSwxSDguODNsOS41MSw4LjNBMSwxLDAsMCwwLDIwLDMxLjU1VjIzLjJsNS41OSw1LjU5Yy0uMTcuMS0uMzQuMi0uNTEuMjlhMSwxLDAsMCwwLC45LDEuNzljLjM3LS4xOS43Mi0uNCwxLjA4LS42MmwyLjE0''@;'; put 'put ''LDIuMTRMMzAuNjEsMzFsLTMuMjUtMy4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yMi42OSwxMi42MkE2LjI3LDYuMjcsMCwwLDEsMjUuOCwxOGE2LjE3LDYuMTcsMCwwLDEtMS40MiwzLjkybDEuNDIsMS40MmE4''@;'; put 'put ''LjE2LDguMTYsMCwwLDAsMi01LjM0LDguMjgsOC4yOCwwLDAsMC00LjEtNy4xMSwxLDEsMCwxLDAtMSwxLjczWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIwLDQuNjJhMSwxLDAsMCwwLTEuNjYtLjc1bC02LjQyLDUu''@;'; put 'put ''NkwyMCwxNy41NFoiLz4nKSxsLkNsclNoYXBlSGVhZHBob25lcz0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDNBMTQuMjcsMTQuMjcsMCwwLDAsNCwxNy41VjMxSDkuMkEyLjc0LDIuNzQsMCwwLDAsMTIs''@;'; put 'put ''MjguMzNWMjEuNjdBMi43NCwyLjc0LDAsMCwwLDkuMiwxOUg2VjE3LjVBMTIuMjcsMTIuMjcsMCwwLDEsMTgsNSwxMi4yNywxMi4yNywwLDAsMSwzMCwxNy41VjE5SDI2LjhBMi43NCwyLjc0LDAsMCwwLDI0LDIxLjY3djYuNjdBMi43NCwyLjc0LDAsMCwwLDI2LjgsMzFIMzJWMTcuNUExNC4y''@;'; put 'put ''NywxNC4yNywwLDAsMCwxOCwzWk05LjIsMjFhLjc1Ljc1LDAsMCwxLC44LjY3djYuNjdhLjc1Ljc1LDAsMCwxLS44LjY3SDZWMjFaTTI2LDI4LjMzVjIxLjY3YS43NS43NSwwLDAsMSwuOC0uNjdIMzB2OEgyNi44QS43NS43NSwwLDAsMSwyNiwyOC4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwzQTE0LjI3LDE0LjI3LDAsMCwwLDQsMTcuNVYzMUg4LjJBMS43NCwxLjc0LDAsMCwwLDEwLDI5LjMzVjIyLjY3QTEuNzQsMS43NCwwLDAsMCw4LjIsMjFINlYxNy41QTEyLjI3LDEyLjI3LDAsMCwxLDE4LDUs''@;'; put 'put ''MTIuMjcsMTIuMjcsMCwwLDEsMzAsMTcuNVYyMUgyNy44QTEuNzQsMS43NCwwLDAsMCwyNiwyMi42N3Y2LjY3QTEuNzQsMS43NCwwLDAsMCwyNy44LDMxSDMyVjE3LjVBMTQuMjcsMTQuMjcsMCwwLDAsMTgsM1oiLz4nKSxsLkNsclNoYXBlRmlsbVN0cmlwPSgwLEguY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMwLDRabTAsMjZINlY2SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNC42LDIzLjA3YTEuMjksMS4yOSwwLDAsMCwxLjI0LjA5bDguNzMtNGExLjMsMS4zLDAsMCwwLDAtMi4zN2gwbC04LjczLTRBMS4zLDEuMywwLDAsMCwxNCwxNHY4QTEuMjksMS4yOSwwLDAsMCwxNC42LDIzLjA3Wm0x''@;'; put 'put ''LTguNkwyMy4zMSwxOCwxNS42LDIxLjUxWiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjgiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxNCIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjIwIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIzIi8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgeD0iMjYiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiB4PSI4IiB5PSIyNiIg''@;'; put 'put ''d2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIHg9IjE0IiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTkiIHg9IjIwIiB5PSIyNiIgd2lkdGg9IjIiIGhlaWdodD0iMyIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEwIiB4PSIyNiIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjMiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMjAsN2gydjNIMjBaTTE0LDdoMnYzSDE0Wk0xMCwyOUg4VjI2aDJa''@;'; put 'put ''bTAtMTlIOFY3aDJabTYsMTlIMTRWMjZoMlptNiwwSDIwVjI2aDJabTMuMTYtMTAuMTZMMTUuMzksMjMuMkExLDEsMCwwLDEsMTQsMjIuMjhWMTMuNTdhMSwxLDAsMCwxLDEuNDEtLjkxTDI1LjE2LDE3QTEsMSwwLDAsMSwyNS4xNiwxOC44NFpNMjgsMjlIMjZWMjZoMlptMC0xOUgyNlY3aDJa''@;'; put 'put ''Ii8+JyksbC5DbHJTaGFwZU11c2ljTm90ZT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSJcbiAgICAgICAgICAgICAgICBkPSJNMzEuNjgsNi4xNmMtMS45Mi0zLjMtMTAuNi00LTExLjU4LTQuMDlMMTksMlYyMi4zNGE1''@;'; put 'put ''Ljg5LDUuODksMCwwLDAtLjgyLS41Niw4LjMzLDguMzMsMCwwLDAtNi41My0uNDFDNy41NywyMi43LDQuOTIsMjYuNSw1Ljc4LDI5Ljg0YTUuMzMsNS4zMywwLDAsMCwyLjY2LDMuMzIsNy40OCw3LjQ4LDAsMCwwLDMuNjEuODhBOS41NCw5LjU0LDAsMCwwLDE1LDMzLjU3YzMuNjctMS4xOCw2''@;'; put 'put ''LjE3LTQuMzMsNi4wNi03LjM2VjkuMzRhMjkuMTQsMjkuMTQsMCwwLDEsNi41NSwxLjQzLDEsMSwwLDEsMCwuNzItMS44N0EzMS4zNywzMS4zNywwLDAsMCwyMSw3LjMzVjQuMTdjMy4zMy4zNiw4LDEuMzgsOC45MiwzLDIsMy40MS0yLjMzLDcuMzYtMi4zNyw3LjRhMSwxLDAsMCwwLDEuMzMs''@;'; put 'put ''MS40OUMyOS4xNSwxNS44NSwzNC41LDExLDMxLjY4LDYuMTZaTTE0LjM1LDMxLjY3YTYuNDMsNi40MywwLDAsMS01LS4yNiwzLjMxLDMuMzEsMCwwLDEtMS42OS0yLjA3Yy0uNi0yLjMzLDEuNDUtNS4wNSw0LjU4LTYuMDZhNy41Miw3LjUyLDAsMCwxLDIuMy0uMzcsNS41Miw1LjUyLDAsMCwx''@;'; put 'put ''LDIuNjUuNjIsMy4zMSwzLjMxLDAsMCwxLDEuNjksMi4wN0MxOS41NCwyNy45NCwxNy40OSwzMC42NiwxNC4zNSwzMS42N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTMxLjY4LDYuMTZj''@;'; put 'put ''LTEuOTItMy4zLTEwLjYtNC0xMS41OC00LjA5TDE5LDJWMjIuMjlhNS44OCw1Ljg4LDAsMCwwLS44MS0uNTUsOC4zMyw4LjMzLDAsMCwwLTYuNTMtLjQxYy00LjEyLDEuMzMtNi43Nyw1LjEzLTUuOTEsOC40N2E1LjMzLDUuMzMsMCwwLDAsMi42NiwzLjMyLDcuNDgsNy40OCwwLDAsMCwzLjYx''@;'; put 'put ''Ljg4QTkuNTQsOS41NCwwLDAsMCwxNSwzMy41MmMzLjctMS4xOSw2LjItNC4zNyw2LjA2LTcuNDIsMCwwLDAsMCwwLDBWOC40OWMxLC4xMiwyLjM3LjMzLDMuODIuNjRhMTEuMTcsMTEuMTcsMCwwLDEsNC4wNiwxLjQ2YzEsLjY2LjM4LDEuOS4zMywyYTExLjgsMTEuOCwwLDAsMS0xLjY2LDIs''@;'; put 'put ''MSwxLDAsMCwwLDEuMzMsMS40OUMyOS4xNSwxNS44NSwzNC41LDExLDMxLjY4LDYuMTZaIi8+JyksbC5DbHJTaGFwZUltYWdlR2FsbGVyeT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCww''@;'; put 'put ''LDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0zMiwzMEg0VjEySDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTguNTYsMTkuNDVhMywzLDAsMSww''@;'; put 'put ''LTMtM0EzLDMsMCwwLDAsOC41NiwxOS40NVptMC00LjZBMS42LDEuNiwwLDEsMSw3LDE2LjQ1LDEuNiwxLjYsMCwwLDEsOC41NiwxNC44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik03LjksMjhsNi02LDMuMTgsMy4xOEwxNC4yNiwy''@;'; put 'put ''OGgybDcuNDYtNy40NkwzMCwyNi43N3YtMkwyNC4yLDE5YS43MS43MSwwLDAsMC0xLDBsLTUuMTYsNS4xNkwxNC4zNywyMC41YS43MS43MSwwLDAsMC0xLDBMNS45MiwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBh''@;'; put 'put ''MSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0y''@;'; put 'put ''NmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMuODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCww''@;'; put 'put ''LDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNOC41NiwxMy40NWEzLDMsMCwxLDEtMywzQTMsMywwLDAsMSw4LjU2LDEzLjQ1Wk0zMCwyOGgtMjRsNy40Ni03LjQ3YS43MS43MSwwLDAsMSwxLDBsMy42OCwzLjY4TDIzLjIxLDE5YS43MS43MSwwLDAsMSwxLDBMMzAs''@;'; put 'put ''MjQuNzlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVSZXBsYXlBbGw9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE3LjQ2LDI2LjIyYTEuNCwxLjQsMCwwLDAsMS0uNDJsNS41OS01LjU2YTEuNDMsMS40MywwLDAsMCwuNDItMSwx''@;'; put 'put ''LjQ2LDEuNDYsMCwwLDAtLjQyLTFsLTUuNTktNS41NmExLjQzLDEuNDMsMCwwLDAtMi40NCwxVjI0Ljc5YTEuNDEsMS40MSwwLDAsMCwuODgsMS4zMkExLjU0LDEuNTQsMCwwLDAsMTcuNDYsMjYuMjJabS4xNi0xMi4xNiw1LjE5LDUuMTYtNS4xOSw1LjE3WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LjA2LDVoLTYuN2wyLjkyLTIuNjRBMSwxLDAsMCwwLDEyLjk0Ljg4TDcuMzIsNiwxMi45NCwxMWExLDEsMCwwLDAsLjY3LjI2LDEsMSwwLDAsMCwuNzQtLjMzLDEsMSwwLDAsMC0uMDctMS40MkwxMS40Niw3aDYuNkExMS43''@;'; put 'put ''OCwxMS43OCwwLDEsMSw3LjcxLDI0LjQxLDEsMSwwLDAsMCw2LDI1LjM2LDEzLjc4LDEzLjc4LDAsMSwwLDE4LjA2LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlUmVwbGF5T25lPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0xOSwyNy4yN2ExLDEsMCwwLDAsMS0xVjE0YTEsMSwwLDAsMC0xLTFIMTlhMy44LDMuOCwwLDAsMC0xLjEuMjNsLTIsLjYyYS45Mi45MiwwLDAsMC0uNzIuODYuODguODgsMCwwLDAsLjg4Ljg2LDEuNDYsMS40NiwwLDAsMCwuNDMtLjA4TDE4LDE1LjA3djExLjJBMSwxLDAsMCwwLDE5LDI3''@;'; put 'put ''LjI3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LjA2LDVoLTYuN2wyLjkyLTIuNjRBMSwxLDAsMCwwLDEyLjk0Ljg4TDcuMzIsNiwxMi45NCwxMWExLDEsMCwwLDAsLjY3LjI2LDEsMSwwLDAsMCwuNzQtLjMzLDEsMSwwLDAsMC0u''@;'; put 'put ''MDctMS40MkwxMS40Niw3aDYuNkExMS43OCwxMS43OCwwLDEsMSw3LjcxLDI0LjQxLDEsMSwwLDAsMCw2LDI1LjM2LDEzLjc4LDEzLjc4LDAsMSwwLDE4LjA2LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlVmlkZW9HYWxsZXJ5''@;'; put 'put ''PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTMyLDMw''@;'; put 'put ''SDRWMTJIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBh''@;'; put 'put ''dGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMi44MiwyNi43OWExLjc0LDEuNzQsMCwwLDAsLjkzLjI4LDEuNjgsMS42OCwwLDAsMCwu''@;'; put 'put ''NjktLjE1bDkuNzctNC4zNmExLjY5LDEuNjksMCwwLDAsMC0zLjFMMTQuNDQsMTUuMWExLjcsMS43LDAsMCwwLTIuMzksMS41NXY4LjcyQTEuNywxLjcsMCwwLDAsMTIuODIsMjYuNzlabS42My0xMC4xNGEuMjkuMjksMCwwLDEsLjE0LS4yNS4zLjMsMCwwLDEsLjE2LDAsLjI3LjI3LDAsMCwx''@;'; put 'put ''LC4xMiwwbDkuNzcsNC4zNWEuMjkuMjksMCwwLDEsLjE4LjI4LjI4LjI4LDAsMCwxLS4xOC4yN2wtOS43Nyw0LjM2YS4yOC4yOCwwLDAsMS0uMjgsMCwuMzEuMzEsMCwwLDEtLjE0LS4yNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0z''@;'; put 'put ''Mi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwzMC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTI0LjE4LDIxLjgzbC05Ljc3LDQuMzZBMSwxLDAsMCwxLDEz''@;'; put 'put ''LDI1LjI4VjE2LjU2YTEsMSwwLDAsMSwxLjQxLS45MUwyNC4xOCwyMEExLDEsMCwwLDEsMjQuMTgsMjEuODNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVNaWNyb3Bo''@;'; put 'put ''b25lPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyNGMzLjksMCw3LTMuMSw3LTdWOWMwLTMuOS0zLjEtNy03LTdzLTcsMy4xLTcsN3Y4QzExLDIwLjksMTQuMSwyNCwxOCwyNHogTTEzLDljMC0yLjgsMi4yLTUsNS01czUsMi4yLDUsNXY4XG5cdFx0YzAsMi44LTIuMiw1LTUsNXMt''@;'; put 'put ''NS0yLjItNS01Vjl6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTdoLTJjMCw1LjUtNC41LDEwLTEwLDEwUzgsMjIuNSw4LDE3SDZjMCw2LjMsNC44LDExLjQsMTEsMTEuOVYzMmgtM2MtMC42LDAtMSwwLjQtMSwxczAuNCwxLDEs''@;'; put 'put ''MWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zLjFDMjUuMiwyOC40LDMwLDIzLjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTgsMjRjMy45LDAsNy0zLjEsNy03VjljMC0zLjktMy4xLTctNy03''@;'; put 'put ''cy03LDMuMS03LDd2OEMxMSwyMC45LDE0LjEsMjQsMTgsMjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDUuNS00LjUsMTAtMTAsMTBTOCwyMi41LDgsMTdINmMwLDYuMyw0LjgsMTEuNCwxMSwxMS45VjMyaC0zYy0wLjYs''@;'; put 'put ''MC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTMuMUMyNS4yLDI4LjQsMzAsMjMuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlPSgwLEgu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwxN2gtMmMwLDEuOC0wLjUsMy41LTEuNCw1bDEuNSwxLjVDMjkuMywyMS41LDI5LjksMTkuMywzMCwxN3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCw0YzIuOCwwLDUsMi4yLDUsNXY4''@;'; put 'put ''YzAsMC40LTAuMSwwLjgtMC4yLDEuMmwxLjYsMS42YzAuNC0wLjksMC42LTEuOCwwLjYtMi44VjljMC0zLjktMy4yLTctNy4xLTYuOVxuXHRcdGMtMi45LDAtNS42LDEuOS02LjUsNC43TDEzLDguM0MxMy41LDUuOSwxNS42LDQuMiwxOCw0eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LjIsMjYuNmw2LjksNi45bDEuNC0xLjRMNCwyLjZMMi42LDRsOC40LDguNFYxN2MwLDMuOSwzLjEsNyw3LDdjMS4zLDAsMi41LTAuMywzLjYtMWwyLjIsMi4yQzIyLjEsMjYuNCwyMC4xLDI3LDE4LDI3XG5cdFx0Yy01LjQsMC4yLTkuOC00''@;'; put 'put ''LjEtMTAtOS40YzAtMC4yLDAtMC40LDAtMC42SDZjMC4xLDYuMiw0LjgsMTEuNCwxMSwxMnYzaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTNDMjEuMiwyOC44LDIzLjQsMjgsMjUuMiwyNi42eiBNMTMuOCwxOS43''@;'; put 'put ''QzEzLjMsMTguOSwxMywxOCwxMywxN3YtMi42bDcuMSw3LjFDMTcuOSwyMi41LDE1LjIsMjEuOCwxMy44LDE5Ljd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAsMTdoLTJjMCwxLjgtMC41LDMuNS0xLjQsNWwxLjUsMS41QzI5LjMs''@;'; put 'put ''MjEuNSwyOS45LDE5LjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNSwxN1Y5YzAtMy45LTMuMi03LTcuMS02LjljLTIuOSwwLTUuNiwxLjktNi41LDQuN2wxMywxM0MyNC44LDE4LjksMjUsMTcuOSwyNSwxN3oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTI1LjIsMjYuNmw2LjksNi45bDEuNC0xLjRMNCwyLjZMMi42LDRsOC40LDguNFYxN2MwLDMuOSwzLjEsNyw3LDdjMS4zLDAsMi41LTAuMywzLjYtMWwyLjIsMi4yQzIyLjEsMjYuNCwyMC4xLDI3LDE4LDI3XG5cdFx0''@;'; put 'put ''Yy01LjQsMC4yLTkuOC00LjEtMTAtOS40YzAtMC4yLDAtMC40LDAtMC42SDZjMC4xLDYuMiw0LjgsMTEuNCwxMSwxMnYzaC0zYy0wLjYsMC0xLDAuNC0xLDFzMC40LDEsMSwxaDhjMC42LDAsMS0wLjQsMS0xXG5cdFx0cy0wLjQtMS0xLTFoLTN2LTNDMjEuMiwyOC44LDIzLjQsMjgsMjUuMiwy''@;'; put 'put ''Ni42eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxsLk1lZGlhU2hhcGVzPXtwbGF5OmwuQ2xyU2hhcGVQbGF5LHBhdXNlOmwuQ2xyU2hhcGVQYXVzZSwic3RlcC1mb3J3YXJkIjpsLkNsclNoYXBlU3RlcEZvcndhcmQsc3RvcDpsLkNsclNoYXBlU3RvcCxw''@;'; put 'put ''b3dlcjpsLkNsclNoYXBlUG93ZXIscmV3aW5kOmwuQ2xyU2hhcGVSZXdpbmQsImZhc3QtZm9yd2FyZCI6bC5DbHJTaGFwZUZhc3RGb3J3YXJkLGNhbWVyYTpsLkNsclNoYXBlQ2FtZXJhLCJ2aWRlby1jYW1lcmEiOmwuQ2xyU2hhcGVWaWRlb0NhbWVyYSxzaHVmZmxlOmwuQ2xyU2hhcGVTaHVm''@;'; put 'put ''ZmxlLCJ2b2x1bWUtdXAiOmwuQ2xyU2hhcGVWb2x1bWVVcCwidm9sdW1lLWRvd24iOmwuQ2xyU2hhcGVWb2x1bWVEb3duLCJ2b2x1bWUtbXV0ZSI6bC5DbHJTaGFwZVZvbHVtZU11dGUsaGVhZHBob25lczpsLkNsclNoYXBlSGVhZHBob25lcywiZmlsbS1zdHJpcCI6bC5DbHJTaGFwZUZpbG1T''@;'; put 'put ''dHJpcCwibXVzaWMtbm90ZSI6bC5DbHJTaGFwZU11c2ljTm90ZSwiaW1hZ2UtZ2FsbGVyeSI6bC5DbHJTaGFwZUltYWdlR2FsbGVyeSwicmVwbGF5LWFsbCI6bC5DbHJTaGFwZVJlcGxheUFsbCwicmVwbGF5LW9uZSI6bC5DbHJTaGFwZVJlcGxheU9uZSwidmlkZW8tZ2FsbGVyeSI6bC5DbHJT''@;'; put 'put ''aGFwZVZpZGVvR2FsbGVyeSxtaWNyb3Bob25lOmwuQ2xyU2hhcGVNaWNyb3Bob25lLCJtaWNyb3Bob25lLW11dGUiOmwuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZX0sdHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5''@;'; put 'put ''SWNvbnMuYWRkKGwuTWVkaWFTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3NvY2lhbC1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMv''@;'; put 'put ''c2hhcGVzL3NvY2lhbC1zaGFwZXMudHMgKioqIQogICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTSxsLHYpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbC5Tb2NpYWxTaGFwZXM9bC5DbHJTaGFwZUhhc2h0YWc9bC5DbHJTaGFwZUNyb3duPWwuQ2xyU2hhcGVUaHVtYnNEb3duPWwuQ2xyU2hhcGVUaHVtYnNVcD1sLkNsclNoYXBlU2FkRmFjZT1sLkNsclNoYXBlTmV1dHJhbEZhY2U9bC5D''@;'; put 'put ''bHJTaGFwZUhhcHB5RmFjZT1sLkNsclNoYXBlUGljdHVyZT1sLkNsclNoYXBlQ2hhdEJ1YmJsZT1sLkNsclNoYXBlVGFsa0J1YmJsZXM9bC5DbHJTaGFwZUhlYXJ0QnJva2VuPWwuQ2xyU2hhcGVIZWFydD1sLkNsclNoYXBlSW5ib3g9bC5DbHJTaGFwZUZsYWc9bC5DbHJTaGFwZVRhc2tzPWwu''@;'; put 'put ''Q2xyU2hhcGVFbnZlbG9wZT1sLkNsclNoYXBlQm9va21hcms9bC5DbHJTaGFwZUhhbGZTdGFyPWwuQ2xyU2hhcGVTdGFyPWwuQ2xyU2hhcGVTaGFyZT12b2lkIDA7dmFyIHA9digKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9k''@;'; put 'put ''ZXNjcmlwdG9yLWNvbmZpZy50cyIpLGE9digKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO3Y9digKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBl''@;'; put 'put ''cy9jb3JlLXNoYXBlcy50cyIpLGwuQ2xyU2hhcGVTaGFyZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjUzLDI0YTUsNSwwLDAsMC0zLjYsMS41NUwxMS43NCwxOS40NWE0LjQ3LDQuNDcsMCwwLDAsMC0y''@;'; put 'put ''LjhsMTIuMjEtNi4yMWE1LjEyLDUuMTIsMCwxLDAtMS4wNy0xLjdMMTAuNzksMTQuODlhNSw1LDAsMSwwLDAsNi4zM2wxMi4wNiw2LjA3QTQuOTMsNC45MywwLDAsMCwyMi41NCwyOWE1LDUsMCwxLDAsNS01Wm0wLTIwYTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDI3LjUzLDRaTTcsMjFhMywz''@;'; put 'put ''LDAsMSwxLDMtM0EzLDMsMCwwLDEsNywyMVpNMjcuNTMsMzJhMywzLDAsMSwxLDMtM0EzLDMsMCwwLDEsMjcuNTMsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI3LjUzLDI0YTUsNSwwLDAsMC0zLjYsMS41''@;'; put 'put ''NUwxMS43NCwxOS40NWE0LjQ3LDQuNDcsMCwwLDAsMC0yLjhsMTIuMjEtNi4yMWE1LjEyLDUuMTIsMCwxLDAtMS4wNy0xLjdMMTAuNzksMTQuODlhNSw1LDAsMSwwLDAsNi4zM2wxMi4wNiw2LjA3QTQuOTMsNC45MywwLDAsMCwyMi41NCwyOWE1LDUsMCwxLDAsNS01WiIvPicpLGwuQ2xyU2hh''@;'; put 'put ''cGVTdGFyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuMTksMzRhMi4yMiwyLjIyLDAsMCwxLTEuMjQtLjM4bC03LjQ2LTVhLjIyLjIyLDAsMCwwLS4yNSwwbC03LjQ2LDVBMi4yMiwyLjIyLDAsMCwxLDcu''@;'; put 'put ''NCwzMS4yMWwyLjQ1LTguNjRhLjIzLjIzLDAsMCwwLS4wOC0uMjRMMi43MSwxNi43OGEyLjIyLDIuMjIsMCwwLDEsMS4yOS00bDktLjM0YS4yMy4yMywwLDAsMCwuMi0uMTVsMy4xLTguNDNhMi4yMiwyLjIyLDAsMCwxLDQuMTcsMGwzLjEsOC40M2EuMjMuMjMsMCwwLDAsLjIuMTVsOSwuMzRh''@;'; put 'put ''Mi4yMiwyLjIyLDAsMCwxLDEuMjksNEwyNywyMi4zM2EuMjIuMjIsMCwwLDAtLjA4LjI0bDIuNDUsOC42NEEyLjIzLDIuMjMsMCwwLDEsMjcuMTksMzRabS04LjgyLTcuNDJBMi4yMSwyLjIxLDAsMCwxLDE5LjYsMjdsNy40Niw1YS4yMi4yMiwwLDAsMCwuMzQtLjI1bC0yLjQ1LTguNjRhMi4y''@;'; put 'put ''MSwyLjIxLDAsMCwxLC43Ny0yLjM1bDcuMDYtNS41NWEuMjIuMjIsMCwwLDAtLjEzLS40bC05LS4zNGEyLjIyLDIuMjIsMCwwLDEtMi0xLjQ2bC0zLjEtOC40M2EuMjIuMjIsMCwwLDAtLjQyLDBMMTUuMDYsMTNhMi4yMiwyLjIyLDAsMCwxLTIsMS40NmwtOSwuMzRhLjIyLjIyLDAsMCwwLS4x''@;'; put 'put ''My40TDExLDIwLjc2YTIuMjIsMi4yMiwwLDAsMSwuNzcsMi4zNUw5LjMzLDMxLjc1YS4yMS4yMSwwLDAsMCwuMDguMjQuMi4yLDAsMCwwLC4yNiwwbDcuNDYtNUEyLjIyLDIuMjIsMCwwLDEsMTguMzYsMjYuNjJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAsMC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAs''@;'; put 'put ''MCwwLTEuMjksNGw3LjA2LDUuNTVhLjIzLjIzLDAsMCwxLC4wOC4yNEw3LjM1LDMxLjIxYTIuMjIsMi4yMiwwLDAsMCwzLjM4LDIuNDVsNy40Ni01YS4yMi4yMiwwLDAsMSwuMjUsMGw3LjQ2LDVhMi4yLDIuMiwwLDAsMCwyLjU1LDAsMi4yLDIuMiwwLDAsMCwuODMtMi40bC0yLjQ1LTguNjRh''@;'; put 'put ''LjIyLjIyLDAsMCwxLC4wOC0uMjRaIi8+JyksbC5DbHJTaGFwZUhhbGZTdGFyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAs''@;'; put 'put ''MCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcsMGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjIuMjIsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFBMi4yMywyLjIzLDAsMCwwLDkuNDks''@;'; put 'put ''MzRhMi4yMiwyLjIyLDAsMCwwLDEuMjQtLjM4bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMjIsMi4yMiwwLDAsMCwzLjM4LTIuNDVsLTIuNDUtOC42NGEuMjMuMjMsMCwwLDEsLjA4LS4yNFpNMTguMzMsMjYuNjJoMGEyLjIxLDIuMjEsMCwwLDAtMS4yNC4zOEw5LjYyLDMy''@;'; put 'put ''YS4yMi4yMiwwLDAsMS0uMzQtLjI1bDIuNDUtOC42NEEyLjIxLDIuMjEsMCwwLDAsMTEsMjAuNzZMMy45LDE1LjIxYS4yMi4yMiwwLDAsMSwuMTMtLjRsOS0uMzRBMi4yMiwyLjIyLDAsMCwwLDE1LDEzbDMuMS04LjQzYS4yLjIsMCwwLDEsLjIxLS4xNWgwWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMuMjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEt''@;'; put 'put ''LjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAsMy4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIs''@;'; put 'put ''MCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0Wk0yNC45LDIzLjExbDIuNDUsOC42NEEuMjIuMjIsMCwwLDEsMjcsMzJsLTcuNDYtNWEyLjIxLDIuMjEsMCwwLDAtMS4yNC0uMzhoMFY0LjQ0aDBhLjIuMiwwLDAsMSwuMjEuMTVMMjEuNjIsMTNhMi4yMiwyLjIy''@;'; put 'put ''LDAsMCwwLDIsMS40Nmw5LC4zNGEuMjIuMjIsMCwwLDEsLjEzLjRsLTcuMDYsNS41NUEyLjIxLDIuMjEsMCwwLDAsMjQuOSwyMy4xMVoiLz4nKSxsLkNsclNoYXBlQm9va21hcms9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0yNiwzNGEyLDIsMCwwLDEtMS40MS0uNThMMTgsMjYuODJsLTYuNTQsNi41MkEyLDIsMCwwLDEsOCwzMS45M1Y0YTIsMiwwLDAsMSwyLTJIMjZhMiwyLDAsMCwxLDIsMlYzMmEyLDIsMCwwLDEtMiwyWm0wLTJoMFY0SDEwVjMxLjkzTDE4LDI0WiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwySDEwQTIsMiwwLDAsMCw4LDRWMzEuOTNhMiwyLDAsMCwwLDMuNDIsMS40MWw2LjU0LTYuNTIsNi42Myw2LjZBMiwyLDAsMCwwLDI4LDMyVjRBMiwyLDAsMCwwLDI2LDJaIi8+JyksbC5DbHJTaGFw''@;'; put 'put ''ZUVudmVsb3BlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTMwLjQ2LDI4SDUu''@;'; put 'put ''NjZsNy03LjI0LTEuNDQtMS4zOUw0LDI2Ljg0VjkuNTJMMTYuNDMsMjEuODlhMiwyLDAsMCwwLDIuODIsMEwzMiw5LjIxdjE3LjVsLTcuMzYtNy4zNi0xLjQxLDEuNDFaTTUuMzEsOEgzMC4zOEwxNy44NCwyMC40N1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMiwxMy4wOFYyNi43MWwtNy4zNi03LjM2LTEuNDEsMS40MUwzMC40NiwyOEg1LjY2bDctNy4yNC0xLjQ0LTEuMzlMNCwyNi44NFY5LjUyTDE2LjQzLDIxLjg5YTIsMiwwLDAsMCwyLjgyLDBsOC44My04Ljc4''@;'; put 'put ''YTcuNDQsNy40NCwwLDAsMS0yLS44NWwtOC4yNiw4LjIxTDUuMzEsOEgyMi44MWE3LjQ5LDcuNDksMCwwLDEtLjMxLTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4yQTcuNDUsNy40NSwwLDAsMSwzMiwxMy4wOFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuMjZIMzJWMjYuNzFsLTcuMzYtNy4zNi0xLjQxLDEuNDFMMzAuNDYsMjhINS42Nmw3LTcuMjQtMS40NC0xLjM5TDQsMjYuODRWOS41MkwxNi40MywyMS44OWEyLDIsMCwwLDAsMi44MiwwbDYuNjYtNi42M0gyMy4wOGwt''@;'; put 'put ''NS4yNCw1LjIxTDUuMzEsOEgyMC4wNmwxLjE1LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4yNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDFsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDFBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLjMzLDZhMiwyLDAsMCwwLS40MSwwaC0yOGEyLDIsMCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0z''@;'; put 'put ''My44MSw3LjM5LDE5LjI1LDIxLjg5YTIsMiwwLDAsMS0yLjgyLDBMMiw3LjVhMiwyLDAsMCwwLS4wNy41VjI4YTIsMiwwLDAsMCwyLDJoMjhhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMy44MSw3LjM5Wk01LjMsMjhIMy45MVYyNi41N2w3LjI3LTcuMjEsMS40MSwxLjQxWm0yNi42MSww''@;'; put 'put ''SDMwLjUxbC03LjI5LTcuMjMsMS40MS0xLjQxLDcuMjcsNy4yMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTI2LDEyLjM0QTcuNDksNy40OSwwLDAsMSwyMi41LDZIMy45MmEyLDIs''@;'; put 'put ''MCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzAsMTMuNWE3LjQ5LDcuNDksMCwwLDEtMi0uMjlsLTguNzEsOC42OGEyLDIsMCwwLDEtMi44''@;'; put 'put ''MiwwTDIsNy41YTIsMiwwLDAsMC0uMDcuNVYyOGEyLDIsMCwwLDAsMiwyaDI4YTIsMiwwLDAsMCwyLTJWMTIuMzlBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTUuMywyOEgzLjkxVjI2LjU3bDcuMjctNy4yMSwxLjQxLDEuNDFabTI2LjYxLDBIMzAuNTFsLTcuMjktNy4yMywxLjQxLTEuNDEs''@;'; put 'put ''Ny4yNyw3LjIxWiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMzMuNjgsMTUuNEgyNS43N2wtNi41Miw2LjQ5YTIsMiwwLDAsMS0yLjgyLDBMMiw3LjVhMiwyLDAsMCwwLS4wNy41VjI4YTIsMiwwLDAsMCwyLDJoMjhhMiwyLDAsMCwwLDItMlYxNS4zOFpNNS4zLDI4SDMu''@;'; put 'put ''OTFWMjYuNTdsNy4yNy03LjIxLDEuNDEsMS40MVptMjYuNjEsMEgzMC41MWwtNy4yOS03LjIzLDEuNDEtMS40MSw3LjI3LDcuMjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTIy''@;'; put 'put ''Ljk0LDE1LjRoLS43QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMy45MmEyLDIsMCwwLDAtLjUzLjA4TDE3Ljg0LDIwLjQ3WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxsLkNsclNoYXBlVGFza3M9KDAsYS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4yOSwzNEg2LjcxQTEuNywxLjcsMCwwLDEsNSwzMi4zMVY2LjY5QTEuNzUsMS43NSwwLDAsMSw3LDVIOVY3SDdWMzJIMjlWN0gyN1Y1aDIuMjVBMS43LDEuNywwLDAsMSwzMSw2LjY5VjMy''@;'; put 'put ''LjMxQTEuNywxLjcsMCwwLDEsMjkuMjksMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi42NiwyNS43NiwxMS4zLDIwLjRBMSwxLDAsMCwxLDEyLjcyLDE5bDMuOTQsMy45NCw4LjY0LTguNjRhMSwx''@;'; put 'put ''LDAsMCwxLDEuNDEsMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTI2LDExSDEwVjcuMzNBMi4zNCwyLjM0LDAsMCwxLDEyLjMzLDVoMS43OWE0LDQsMCwwLDEsNy43NSwwaDEuNzlBMi4zNCwyLjM0''@;'; put 'put ''LDAsMCwxLDI2LDcuMzNaTTEyLDlIMjRWNy4zM0EuMzMuMzMsMCwwLDAsMjMuNjcsN0gyMFY2YTIsMiwwLDAsMC00LDBWN0gxMi4zM2EuMzMuMzMsMCwwLDAtLjMzLjMzWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTksOS44OSwxOS41Niw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoLjcxbDEuMTYtMmE0LDQsMCwwLDAtNy43NCwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExaDguNjRBMy42NSwzLjY1''@;'; put 'put ''LDAsMCwxLDE5LDkuODlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yNC4xOSwxNS40bC03LjUzLDcuNTNMMTIuNzIsMTlBMSwxLDAsMCwwLDExLjMsMjAuNGw1LjM2LDUu''@;'; put 'put ''MzZMMjYuNzEsMTUuNzFhMSwxLDAsMCwwLC4yLS4zMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTI5LDE1LjRWMzJIN1Y3SDlWNUg3QTEuNzUsMS43NSwwLDAsMCw1LDYu''@;'; put 'put ''NjlWMzIuMzFBMS43LDEuNywwLDAsMCw2LjcxLDM0SDI5LjI5QTEuNywxLjcsMCwwLDAsMzEsMzIuMzFWMTUuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIg''@;'; put 'put ''ZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTEyLjcyLDE5QTEsMSwwLDAsMCwxMS4zLDIwLjRsNS4zNiw1LjM2TDI2LjcxLDE1LjcxYTEsMSwwLDAsMC0xLjQxLTEuNDFsLTguNjQsOC42NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yMy4xMyw5SDEyVjcuMzNBLjMzLjMzLDAsMCwxLDEyLjMzLDdIMTZWNmEyLDIsMCwwLDEsNCwwVjdoMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xaC0uN2E0LDQs''@;'; put 'put ''MCwwLDAtNy43NSwwSDEyLjMzQTIuMzQsMi4zNCwwLDAsMCwxMCw3LjMzVjExSDI0LjQyQTcuNSw3LjUsMCwwLDEsMjMuMTMsOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0z''@;'; put 'put ''MCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YzMkg3VjdIOVY1SDdBMS43NSwxLjc1LDAsMCwwLDUsNi42OVYzMi4zMUExLjcsMS43LDAsMCwwLDYuNzEsMzRIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4zMVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0yOS4yOSw0Ljk1aC03LjJhNC4zMSw0LjMxLDAsMCwwLTguMTcsMEg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjRWMzIuMjZhMS43LDEuNywwLDAsMCwxLjcxLDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlY2LjY0QTEuNywxLjcsMCwwLDAsMjkuMjksNC45NVpt''@;'; put 'put ''LTE4LDNhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzJhMi4zMSwyLjMxLDAsMCwxLDQuNjMsMFY3aDMuNDRhMSwxLDAsMCwxLDEsMVY5LjhIMTEuMjVabTE0LjUyLDkuMjMtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwxLDItMmwzLjI2LDMuMjYsNy4xNC03LjE0YTEuNCwxLjQsMCwx''@;'; put 'put ''LDEsMiwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0yNS44OCwxNS40YTEuMzgsMS4zOCwwLDAsMS0uMTEsMS44MWwtOS4xMiw5LjEyLTUuMjQtNS4yNGExLjQsMS40LDAsMCwx''@;'; put 'put ''LDItMmwzLjI2LDMuMjYsNy03SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5bDAtLjA5SDExLjI1VjhhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzJhMi4zMSwyLjMxLDAsMCwxLDQuNjMsMFY3aC40MkwyMiw0Ljc2YTQuMyw0LjMsMCwwLDAtOC4wOS4xOUg3QTEuNzUsMS43NSwwLDAsMCw1''@;'; put 'put ''LDYuNjRWMzIuMjZhMS43LDEuNywwLDAsMCwxLjcxLDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlYxNS40WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQi''@;'; put 'put ''IGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTMwLDEzLjVhNy40OSw3LjQ5LDAsMCwxLTYuNDYtMy43SDExLjI1VjhhMSwxLDAsMCwxLDEtMWgzLjQ0VjYuMzJhMi4zMSwyLjMxLDAsMCwxLDQuNjMsMFY3aDIuMjZhNy41Myw3LjUzLDAsMCwxLS4wNy0xLDcuNTMsNy41''@;'; put 'put ''MywwLDAsMSwuMDgtMS4wNWgtLjVhNC4zMSw0LjMxLDAsMCwwLTguMTcsMEg3QTEuNzUsMS43NSwwLDAsMCw1LDYuNjRWMzIuMjZhMS43LDEuNywwLDAsMCwxLjcxLDEuNjlIMjkuMjlBMS43LDEuNywwLDAsMCwzMSwzMi4yNlYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVptLTQuMjMs''@;'; put 'put ''My43MS05LjEyLDkuMTItNS4yNC01LjI0YTEuNCwxLjQsMCwwLDEsMi0ybDMuMjYsMy4yNiw3LjE0LTcuMTRhMS40LDEuNCwwLDEsMSwyLDJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBj''@;'; put 'put ''bHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLGwuQ2xyU2hhcGVGbGFnPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNiwzNGExLDEsMCwwLDEtMS0xVjNBMSwxLDAsMCwxLDcsM1YzM0ExLDEs''@;'; put 'put ''MCwwLDEsNiwzNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMwLjU1LDMuODJhMSwxLDAsMCwwLTEsMCwxNC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwx''@;'; put 'put ''Mi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjUuMDhBOC44LDguOCwwLDAsMSwxMy4yNSw0YTExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0LDAsMCwwLDYsMS42NkExOC43NSwxOC43NSwwLDAsMCwyOSw2LjEyVjE4Ljk1YTE2LjE2''@;'; put 'put ''LDE2LjE2LDAsMCwxLTUuNTguOTMsMTMuMTEsMTMuMTEsMCwwLDEtNS4xOC0xLjQ5LDEyLjc4LDEyLjc4LDAsMCwwLTUtMS40NUExMC44NiwxMC44NiwwLDAsMCw5LDE3Ljc5VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0Ljg0''@;'; put 'put ''LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNTUsMy44MloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNNS45MiwyYTEsMSww''@;'; put 'put ''LDAsMC0xLDFWMzNhMSwxLDAsMCwwLDIsMFYzQTEsMSwwLDAsMCw1LjkyLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMwLjUsMy44MmExLDEsMCwwLDAtMSwwLDE0LjksMTQuOSwwLDAsMS02LjEzLDEuMTYs''@;'; put 'put ''MTMuMTEsMTMuMTEsMCwwLDEtNS4xOC0xLjQ5QTEyLjc4LDEyLjc4LDAsMCwwLDEzLjIsMiwxMC44NiwxMC44NiwwLDAsMCw5LDIuODVWMjBhOC44LDguOCwwLDAsMSw0LjI1LTEuMDgsMTEuMjIsMTEuMjIsMCwwLDEsNC4yLDEuMjgsMTQuODQsMTQuODQsMCwwLDAsNiwxLjY2LDE2Ljc5LDE2''@;'; put 'put ''Ljc5LDAsMCwwLDctMS4zNywxLDEsMCwwLDAsLjU1LS44OVY0LjY3QTEsMSwwLDAsMCwzMC41LDMuODJaIi8+JyksbC5DbHJTaGFwZUluYm94PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQxTDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAs''@;'; put 'put ''MC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjUs''@;'; put 'put ''NUgyMlY3aDdWMjFIMjMuNjFsLS4xLjg5YTUuNDIsNS40MiwwLDAsMS0xMC43NywwbC0uMS0uODlIN1Y3aDdWNUg2LjVBMS41LDEuNSwwLDAsMCw1LDYuNXYyNUExLjUsMS41LDAsMCwwLDYuNSwzM2gyM0ExLjUsMS41LDAsMCwwLDMxLDMxLjVWNi41QTEuNSwxLjUsMCwwLDAsMjkuNSw1Wk0y''@;'; put 'put ''OSwzMUg3VjIzaDMuOTFhNy40Miw3LjQyLDAsMCwwLDE0LjQ0LDBIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEyLjIzLDEzLjA5YTEsMSwwLDAsMCwwLDEuNDFMMTgsMjAuM2w1Ljc5LTUuNzlhMSwxLDAs''@;'; put 'put ''MCwwLTEuNDEtMS40MUwxOSwxNi40N1YyQTEsMSwwLDAsMCwxOCwxYTEsMSwwLDAsMC0xLDF2MTQuNWwtMy4zOC0zLjM4QTEsMSwwLDAsMCwxMi4yMywxMy4wOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMwLDEzLjVhNy41Miw3LjUyLDAsMCwxLTEtLjA3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwz''@;'; put 'put ''MSwzMS41VjEzLjQzQTcuNTIsNy41MiwwLDAsMSwzMCwxMy41Wk0yOSwzMUg3VjIzaDMuOTFhNy40Miw3LjQyLDAsMCwwLDE0LjQ0LDBIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksbC5DbHJTaGFwZUhlYXJ0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzMi40M2ExLDEsMCwwLDEtLjYxLS4y''@;'; put 'put ''MUMxMS44MywyNy45LDgsMjQuMTgsNS4zMiwyMC41MSwxLjksMTUuODIsMS4xMiwxMS40OSwzLDcuNjRjMS4zNC0yLjc1LDUuMTktNSw5LjY5LTMuNjlBOS44Nyw5Ljg3LDAsMCwxLDE4LDcuNzJhOS44Nyw5Ljg3LDAsMCwxLDUuMzEtMy43N2M0LjQ5LTEuMjksOC4zNS45NCw5LjY5LDMuNjks''@;'; put 'put ''MS44OCwzLjg1LDEuMSw4LjE4LTIuMzIsMTIuODdDMjgsMjQuMTgsMjQuMTcsMjcuOSwxOC42MSwzMi4yMkExLDEsMCwwLDEsMTgsMzIuNDNaTTEwLjEzLDUuNThBNS45LDUuOSwwLDAsMCw0LjgsOC41MWMtMS41NSwzLjE4LS44NSw2LjcyLDIuMTQsMTAuODFBNTcuMTMsNTcuMTMsMCwwLDAs''@;'; put 'put ''MTgsMzAuMTYsNTcuMTMsNTcuMTMsMCwwLDAsMjkuMDYsMTkuMzNjMy00LjEsMy42OS03LjY0LDIuMTQtMTAuODEtMS0yLTQtMy41OS03LjM0LTIuNjVhOCw4LDAsMCwwLTQuOTQsNC4yLDEsMSwwLDAsMS0xLjg1LDAsNy45Myw3LjkzLDAsMCwwLTQuOTQtNC4yQTcuMzEsNy4zMSwwLDAsMCwx''@;'; put 'put ''MC4xMyw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw3LjY0Yy0xLjM0LTIuNzUtNS4yLTUtOS42OS0zLjY5QTkuODcsOS44NywwLDAsMCwxOCw3LjcyYTkuODcsOS44NywwLDAsMC01LjMxLTMuNzdD''@;'; put 'put ''OC4xOSwyLjY2LDQuMzQsNC44OSwzLDcuNjRjLTEuODgsMy44NS0xLjEsOC4xOCwyLjMyLDEyLjg3QzgsMjQuMTgsMTEuODMsMjcuOSwxNy4zOSwzMi4yMmExLDEsMCwwLDAsMS4yMywwYzUuNTUtNC4zMSw5LjM5LTgsMTIuMDctMTEuNzFDMzQuMSwxNS44MiwzNC44OCwxMS40OSwzMyw3LjY0''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGwuQ2xyU2hhcGVIZWFydEJyb2tlbj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMDktNS05LjY5LTMuNjlhOS44Nyw5Ljg3LDAsMCwwLTYsNC44NCwxOC45LDE4Ljks''@;'; put 'put ''MCwwLDAtMi4yMyw1LjMzbDUuMjgsMi4zNC00LjYsNC4zNywzLjQ5LDQuMSwxLjUyLTEuM0wxOC41NCwyMWw1LjQtNS4xM0wxNy41OCwxM0ExNi4yMywxNi4yMywwLDAsMSwxOS43NSw4LjlhNy42OCw3LjY4LDAsMCwxLDQuMTEtM2MzLjM0LS44OSw2LjM0LjYsNy4zNCwyLjY1LDEuNTUsMy4x''@;'; put 'put ''OC44NSw2LjcyLTIuMTQsMTAuODFBNTcuMTYsNTcuMTYsMCwwLDEsMTgsMzAuMTYsNTcuMTYsNTcuMTYsMCwwLDEsNi45NCwxOS4zM2MtMy00LjEtMy42OS03LjY0LTIuMTQtMTAuODFhNS45LDUuOSwwLDAsMSw1LjMzLTIuOTMsNy4zMSw3LjMxLDAsMCwxLDIsLjI5LDcuNyw3LjcsMCwwLDEs''@;'; put 'put ''My4zOCwybC4xNS0uM2ExMC42NiwxMC42NiwwLDAsMSwxLTEuNDEsOS42NCw5LjY0LDAsMCwwLTMuOTQtMi4yMkM4LjIsMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEu''@;'; put 'put ''MjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjkt''@;'; put 'put ''My42OUExMS41NSwxMS41NSwwLDAsMCwxOC4xOSw3LjVhMTYuODksMTYuODksMCwwLDAtMi40OCw0LjU2TDIyLjI3LDE1LDE2LjcsMjAuMjYsMTksMjNsLTEuNTcsMS4zNC0zLjYtNC4yMiw0Ljc0LTQuNTEtNS40NC0yLjQxYTE5LjQ5LDE5LjQ5LDAsMCwxLDIuMy01LjUsMTQuNzcsMTQuNzcs''@;'; put 'put ''MCwwLDEsMS4wNi0xLjU0bC4wNiwwYTkuNjYsOS42NiwwLDAsMC0zLjg5LTIuMThDOC4xOSwyLjY2LDQuMzQsNC44OSwzLDcuNjRjLTEuODgsMy44NS0xLjEsOC4xOCwyLjMyLDEyLjg3QzgsMjQuMTgsMTEuODMsMjcuOSwxNy4zOSwzMi4yMmExLDEsMCwwLDAsMS4yMywwYzUuNTUtNC4zMSw5''@;'; put 'put ''LjM5LTgsMTIuMDctMTEuNzFDMzQuMSwxNS44MiwzNC44OCwxMS40OSwzMyw3LjY0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGwuQ2xyU2hhcGVUYWxrQnViYmxlcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMsMjZhMSwxLDAsMCwxLTEsMUg4''@;'; put 'put ''Yy0uMjIsMC0uNDMuMi0uNjEuMzNMNCwzMFYxNGExLDEsMCwwLDEsMS0xSDguODZWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMjNaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDRIMTRhMywzLDAsMCwwLTMsM1YxOWEzLDMsMCwwLDAsMywzSDI3LjU1bDQuNzgsMy43MWExLDEsMCwwLDAsMSwuMTEsMSwxLDAsMCwwLC41Ny0uOVY3QTMsMywwLDAsMCwzMSw0Wk0zMiwyMi45''@;'; put 'put ''NCwyOC41LDIwLjIxYTEsMSwwLDAsMC0uNjEtLjIxSDE0YTEsMSwwLDAsMS0xLTFWN2ExLDEsMCwwLDEsMS0xSDMxQTEuMSwxLjEsMCwwLDEsMzIsNy4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMjZh''@;'; put 'put ''MSwxLDAsMCwxLTEsMUg4Yy0uMjIsMC0uNDMuMi0uNjEuMzNMNCwzMFYxNGExLDEsMCwwLDEsMS0xSDguODZWMTFINWEzLDMsMCwwLDAtMywzVjMyYTEsMSwwLDAsMCwuNTYuODksMSwxLDAsMCwwLDEtLjFMOC43MSwyOUgyMi4xNUEyLjc3LDIuNzcsMCwwLDAsMjUsMjYuMTNWMjVIMjNaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnY5LjcyTDI4LjUsMjAuMjFhMSwxLDAsMCwwLS42MS0uMjFIMTRhMSwxLDAsMCwxLTEtMVY3YTEsMSwwLDAsMSwxLTFIMjIuNWE3''@;'; put 'put ''LjQ5LDcuNDksMCwwLDEsLjI4LTJIMTRhMywzLDAsMCwwLTMsM1YxOWEzLDMsMCwwLDAsMywzSDI3LjU1bDQuNzgsMy43MWExLDEsMCwwLDAsMSwuMTEsMSwxLDAsMCwwLC41Ny0uOVYxMi4zN0E3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNOCwxOVYxMUg1YTMsMywwLDAsMC0zLDNWMzJhMSwxLDAsMCwwLC41Ni44OSwxLDEsMCwwLDAsMS0uMUw4LjcxLDI5SDIyLjE1QTIuNzcsMi43NywwLDAsMCwyNSwyNi4xM1YyNUgxNEE2LDYsMCwwLDEsOCwxOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjExLDEsMSwwLDAsMCwuNTctLjlWN0EzLDMsMCwwLDAsMzEsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LDE5VjExSDVhMywzLDAsMCwwLTMsM1YzMmExLDEsMCwwLDAsLjU2Ljg5LDEsMSwwLDAsMCwxLS4xTDguNzEsMjlIMjIuMTVBMi43NywyLjc3LDAsMCwwLDI1LDI2LjEzVjI1SDE0QTYsNiwwLDAsMSw4LDE5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNDgsNy40OCwwLDAsMSwyMi43OCw0SDE0YTMsMywwLDAsMC0zLDNWMTlhMywzLDAsMCwwLDMsM0gyNy41NWw0Ljc4LDMuNzFhMSwxLDAsMCwwLDEsLjEx''@;'; put 'put ''LDEsMSwwLDAsMCwuNTctLjlWMTIuMzdBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLGwuQ2xyU2hhcGVDaGF0QnViYmxlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0u''@;'; put 'put ''NjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QzM0LDguNzgsMjYuODIsMi41LDE4LDIuNVpNMjguMjksMjQuNjFhMSwxLDAsMCwwLS4zMi43M2wwLDUuMzQtNC4zOC0yLjc5YTEsMSwwLDAsMC0uODMtLjExQTE2LDE2LDAsMCwxLDE4LDI4''@;'; put 'put ''LjVjLTcuNzIsMC0xNC01LjM4LTE0LTEyczYuMjgtMTIsMTQtMTIsMTQsNS4zOCwxNCwxMkExMS4wOCwxMS4wOCwwLDAsMSwyOC4yOSwyNC42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LDE1LjVIMTFh''@;'; put 'put ''MSwxLDAsMCwwLDAsMkgyNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNzUsMjAuNWgtNy41YTEsMSwwLDAsMCwwLDJoNy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOCwxMi41SDI0LjcyYTEsMSwwLDAsMCwwLTJIMTEuMjhhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMzLjM4LDEyLjY5YTcuNDMsNy40MywwLDAsMS0xLjg5LjY2QTEwLjM1LDEwLjM1LDAsMCwxLDMyLDE2LjVhMTEuMDgsMTEuMDgsMCwwLDEtMy43MSw4LjExLDEsMSwwLDAsMC0uMzIuNzNsMCw1LjM0LTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMUExNiwxNiwwLDAs''@;'; put 'put ''MSwxOCwyOC41Yy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyYTE2LDE2LDAsMCwxLDQuNTUuNjZBNy40NCw3LjQ0LDAsMCwxLDIzLDMuMjJhMTgsMTgsMCwwLDAtNS0uNzJjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTgsMTgsMCwwLDAsNC44OC0uNjhs''@;'; put 'put ''NS41MywzLjUyYTEsMSwwLDAsMCwxLjU0LS44NGwwLTYuNzNhMTMsMTMsMCwwLDAsNC05LjI3QTEyLjMyLDEyLjMyLDAsMCwwLDMzLjM4LDEyLjY5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTExLDE1LjVhMSwxLDAsMCwwLDAsMkgyNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjI1LDIwLjVhMSwxLDAsMCwwLDAsMmg3LjVhMSwx''@;'; put 'put ''LDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yOCwxMS41YTEsMSwwLDAsMCwxLDFIMjQuNzJhMSwxLDAsMCwwLC44My0uNDdBNy41Myw3LjUzLDAsMCwxLDI0''@;'; put 'put ''LDEwLjVIMTEuMjhBMSwxLDAsMCwwLDEwLjI4LDExLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0LDE2LDE0YTE4LDE4LDAsMCwwLDQuODgtLjY4bDUuNTMsMy41MmExLDEsMCwwLDAsMS41NC0uODRs''@;'; put 'put ''MC02LjczYTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVabTgsMTRhMSwxLDAsMCwxLTEsMUgxMWExLDEsMCwwLDEsMC0ySDI1QTEsMSwwLDAsMSwyNiwxNi41Wm0tMy4yNSw1YTEsMSwwLDAsMS0xLDFoLTcuNWExLDEsMCwwLDEsMC0yaDcuNUExLDEsMCwwLDEs''@;'; put 'put ''MjIuNzUsMjEuNVptLTEyLjQ3LTEwYTEsMSwwLDAsMSwxLTFIMjQuNzJhMSwxLDAsMCwxLDAsMkgxMS4yOEExLDEsMCwwLDEsMTAuMjgsMTEuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuMjVhNy40Niw3''@;'; put 'put ''LjQ2LDAsMCwxLTQuMzUtMS40LDEsMSwwLDAsMS0uOTMuNjVIMTEuMjhhMSwxLDAsMCwxLDAtMkgyNC4yQTcuNDYsNy40NiwwLDAsMSwyMywzLjJhMTgsMTgsMCwwLDAtNS0uN2MtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMu''@;'; put 'put ''NTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjcsMTIuMzQsMTIuMzQsMCwwLDAtLjY4LTRBNy40Niw3LjQ2LDAsMCwxLDMwLDEzLjI1Wk0yMS43NSwyMi41aC03LjVhMSwxLDAsMCwxLDAtMmg3LjVhMSwxLDAsMCwxLDAsMlptMy4yNS01SDExYTEsMSwwLDAs''@;'; put 'put ''MSwwLTJIMjVhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI1Ljc1IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+JyksbC5DbHJTaGFwZVBpY3R1cmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk00LDMwVjZIMzJW''@;'; put 'put ''MzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTguOTIsMTRhMywzLDAsMSwwLTMtM0EzLDMsMCwwLDAsOC45MiwxNFptMC00LjZBMS42LDEuNiwwLDEsMSw3LjMzLDExLDEuNiwxLjYsMCwwLDEsOC45Miw5LjQx''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi43OCwxNS4zN2wtNS40LDUuNC00LTRhMSwxLDAsMCwwLTEuNDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1''@;'; put 'put ''LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MUExLDEsMCwwLDAsMjIuNzgsMTUuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjkzLDExYTMsMywwLDEsMC0zLDNBMywzLDAsMCwwLDExLjkzLDExWm0t''@;'; put 'put ''NC42LDBhMS42LDEuNiwwLDEsMSwxLjYsMS42QTEuNiwxLjYsMCwwLDEsNy4zMywxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjM4LDIwLjc3bC00LTRhMSwxLDAsMCwwLTEu''@;'; put 'put ''NDEsMEw1LjkyLDIyLjl2Mi44M2w2Ljc5LTYuNzlMMTYsMjIuMThsLTMuNzUsMy43NUgxNWw4LjQ1LTguNDVMMzAsMjRWMjEuMThsLTUuODEtNS44MWExLDEsMCwwLDAtMS40MSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTMuMjJWMzBINFY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwzMiw0Wk04LjkyLDhhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC45Miw4Wk02LDI3VjIyLjlsNi02LjA4YTEsMSwwLDAsMSwxLjQxLDBM''@;'; put 'put ''MTYsMTkuMzUsOC4zMiwyN1ptMjQsMEgxMS4xNWw2LjIzLTYuMjMsNS40LTUuNGExLDEsMCwwLDEsMS40MSwwTDMwLDIxLjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVBNy40OCw3LjQ4LDAsMCwxLDIy''@;'; put 'put ''Ljc4LDRINEEyLDIsMCwwLDAsMiw2VjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMi4zNEE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNOC45Miw4YTMsMywwLDEsMS0zLDNBMywzLDAsMCwxLDguOTIsOFpNNiwyN1YyMi45bDYtNi4wOGExLDEsMCwwLDEsMS40MSwwTDE2LDE5''@;'; put 'put ''LjM1LDguMzIsMjdabTI0LDBIMTEuMTVsNi4yMy02LjIzLDUuNC01LjRhMSwxLDAsMCwxLDEuNDEsMEwzMCwyMS4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9''@;'; put 'put ''IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+JyksbC5DbHJTaGFwZUhhcHB5RmFjZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0w''@;'; put 'put ''LDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEwLjg5IiBjeT0iMTMuODkiIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4wNSIgY3k9IjEzLjg5IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjEzLDI4LjIxYTguNjcsOC42NywwLDAsMCw4LjI2''@;'; put 'put ''LTZIOS44N0E4LjY3LDguNjcsMCwwLDAsMTguMTMsMjguMjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNOC44OSwxMy44OWEyLDIsMCwx''@;'; put 'put ''LDEsMiwyQTIsMiwwLDAsMSw4Ljg5LDEzLjg5Wm05LjI0LDE0LjMyYTguNjcsOC42NywwLDAsMS04LjI2LTZIMjYuMzhBOC42Nyw4LjY3LDAsMCwxLDE4LjEzLDI4LjIxWm02LjkzLTEyLjMyYTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDI1LjA1LDE1Ljg5WiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGwuQ2xyU2hhcGVOZXV0cmFsRmFjZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuMDUsMjIuMDZoLTEyYTEsMSwwLDAsMCwwLDJoMTJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjI1LjE2IiBjeT0iMTQuMjgiIHI9IjEuOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjExLjE2IiBjeT0iMTQuMjgiIHI9IjEuOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuMDUsMjEuMDZhMSwxLDAsMCwxLTEsMWgtMTJhMSwxLDAsMCwxLDAtMmgxMkExLDEsMCwwLDEsMjUuMDUsMjMuMDZaTTI3LDE0LjI4YTEuOCwx''@;'; put 'put ''LjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0LjI4Wm0tMTUuOCwxLjhhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTEuMTYsMTYuMDhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksbC5DbHJTaGFwZVNhZEZhY2U9KDAs''@;'; put 'put ''YS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS40MSIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMTYsMjBhOSw5LDAsMCwwLTcuMzMsMy43OCwxLDEsMCwxLDAsMS42MywxLjE2LDcsNywwLDAsMSwxMS4zMS0uMTMsMSwxLDAsMCwwLDEuNi0xLjJBOSw5LDAsMCwwLDE4LjE2LDIwWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTksMTIuMjhhMS44LDEuOCwwLDEsMS0xLjgtMS44QTEuOCwxLjgsMCwwLDEsMjcsMTQuMjhabS0xNS41NSwxLjhhMS44LDEuOCww''@;'; put 'put ''LDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTEuNDEsMTYuMDhabTE0LDcuNTNhMSwxLDAsMCwxLTEuNiwxLjIsNyw3LDAsMCwwLTExLjMxLjEzLDEsMSwwLDEsMS0xLjYzLTEuMTYsOSw5LDAsMCwxLDE0LjU0LS4xN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''Lz4nKSxsLkNsclNoYXBlVGh1bWJzVXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDI2Yy0yLjkyLDEuODItNy4zLDQtOS4zNyw0aC02YTE2LjY4LDE2LjY4LDAsMCwxLTMuMzEtNi4wOEEyNi43MSwyNi43MSwwLDAsMSw0LDE2aDlWNmEyLjA1LDIuMDUsMCwwLDEsMS4yNi0xLjY5''@;'; put 'put ''Yy43NywyLDIuNjIsNi41Nyw0LjIzLDguNzJBMTEuMzksMTEuMzksMCwwLDAsMjQsMTYuOTFWMTQuNzhhOS4xMyw5LjEzLDAsMCwxLTMuOTEtM2MtMS44OC0yLjUxLTQuMjktOS4xMS00LjMxLTkuMTdBMSwxLDAsMCwwLDE0LjU5LDJDMTMuMjUsMi4zOCwxMSwzLjYsMTEsNnY4SDNhMSwxLDAs''@;'; put 'put ''MCwwLTEsMSwyOSwyOSwwLDAsMCwxLjQsOS42MmMxLjg5LDUuNCw0LjEsNy4xNCw0LjIsNy4yMmExLDEsMCwwLDAsLjYxLjIxaDYuNDJjMi40MywwLDYuNTUtMiw5LjM3LTMuNjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zNCwzMUgyN2ExLDEsMCwwLDEtMS0xVjE0YTEsMSwwLDAsMSwxLTFoN1ptLTYtMmg0VjE1SDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNjMsMTIuMTJDMTcuNTEsOS4yOCwxNC44OCwy''@;'; put 'put ''LDE0Ljg4LDJTMTIsMi44MywxMiw1LjI1VjE1SDIuMjNhMjkuNDYsMjkuNDYsMCwwLDAsMS40NCw5Ljc0QzUuNjEsMzAuMjcsNy44LDMyLDcuOCwzMmg2Ljg2QzE2LjksMzIsMjEsMzAuMDYsMjQsMjguMzFWMTUuNTFBMTAuODQsMTAuODQsMCwwLDEsMTkuNjMsMTIuMTJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LDEzYTEsMSwwLDAsMC0xLDFWMzBhMSwxLDAsMCwwLDEsMWg3VjEzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlVGh1bWJzRG93bj0o''@;'; put 'put ''MCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIsMTBjMi45Mi0xLjgyLDcuMy00LDkuMzctNGg2YTE2LjY4LDE2LjY4LDAsMCwxLDMuMzEsNi4wOEEyNi43MSwyNi43MSwwLDAsMSwzMiwyMEgyM1YzMGEyLjA1LDIuMDUsMCwwLDEtMS4yNiwxLjY5Yy0uNzctMi0yLjYyLTYuNTctNC4yMy04''@;'; put 'put ''LjcyQTExLjM5LDExLjM5LDAsMCwwLDEyLDE5LjA5djIuMTNhOS4xMyw5LjEzLDAsMCwxLDMuOTEsM2MxLjg4LDIuNTEsNC4yOSw5LjExLDQuMzEsOS4xN2ExLDEsMCwwLDAsMS4xOS42M0MyMi43NSwzMy42MiwyNSwzMi40LDI1LDMwVjIyaDhhMSwxLDAsMCwwLDEtMSwyOSwyOSwwLDAsMC0x''@;'; put 'put ''LjQtOS42MmMtMS44OS01LjQtNC4xLTcuMTQtNC4yLTcuMjJBMSwxLDAsMCwwLDI3Ljc5LDRIMjEuMzdDMTguOTQsNCwxNC44Myw2LDEyLDcuNjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yLDVIOWExLDEs''@;'; put 'put ''MCwwLDEsMSwxVjIyYTEsMSwwLDAsMS0xLDFIMlpNOCw3SDRWMjFIOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjM3LDIzLjg0YzIuMTIsMi44NCw0Ljc2LDEwLjA3LDQuNzYsMTAuMDdTMjQsMzMuMTMs''@;'; put 'put ''MjQsMzAuNzFWMjFoOS43N2EyOS40NiwyOS40NiwwLDAsMC0xLjQ0LTkuNzRDMzAuMzksNS42OCwyOC4yLDQsMjguMiw0SDIxLjM1QzE5LjEsNCwxNSw1LjksMTIsNy42NXYxMi44QTEwLjg0LDEwLjg0LDAsMCwxLDE2LjM3LDIzLjg0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LDIzYTEsMSwwLDAsMCwxLTFWNkExLDEsMCwwLDAsOSw1SDJWMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVDcm93bj0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGgg''@;'; put 'put ''ZD0iTTQsMTMuMzNBMS4zOSwxLjM5LDAsMSwwLDIuNiwxNC43MiwxLjM5LDEuMzksMCwwLDAsNCwxMy4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS44MSwxNS44NGEyMC4zNSwyMC4zNSwwLDAsMC00LjU4LDEuNDMsMjIu''@;'; put 'put ''NywyMi43LDAsMCwwLTMuNDgsMi4xQTE3LjY5LDE3LjY5LDAsMCwxLDIyLDE2LjU3YTQ3LjY1LDQ3LjY1LDAsMCwxLTIuOC03LjY5LDEsMSwwLDAsMC0xLS43NCwxLDEsMCwwLDAtMSwuNzQsNDYuNzEsNDYuNzEsMCwwLDEtMi44LDcuNjksMTcsMTcsMCwwLDEtMS43NiwyLjgsMjIuNywyMi43''@;'; put 'put ''LDAsMCwwLTMuNDgtMi4xLDIwLjY2LDIwLjY2LDAsMCwwLTQuNTgtMS40MywxLDEsMCwwLDAtMSwuMzksMSwxLDAsMCwwLS4wOSwxLjA1QTUwLjEzLDUwLjEzLDAsMCwxLDcuODIsMzEuMTdhMSwxLDAsMCwwLDEsLjgzSDI3LjYyYTEsMSwwLDAsMCwxLS44Myw1MC4xNSw1MC4xNSwwLDAsMSw0''@;'; put 'put ''LjI2LTEzLjg5LDEsMSwwLDAsMC0uMDktMS4wNUExLDEsMCwwLDAsMzEuODEsMTUuODRaTTI2Ljc5LDMwSDkuNjRhNTUuNjYsNTUuNjYsMCwwLDAtMy40LTExLjcxLDE1Ljc1LDE1Ljc1LDAsMCwxLDIuMDkuNzgsMjAsMjAsMCwwLDEsMy44NSwyLjQ1LDEsMSwwLDAsMCwxLjM5LS4wOSwxOS4y''@;'; put 'put ''OCwxOS4yOCwwLDAsMCwyLjY3LTQsNDMuNDYsNDMuNDYsMCwwLDAsMi00Ljg5LDQxLjc0LDQxLjc0LDAsMCwwLDIsNC44OSwxOS45MiwxOS45MiwwLDAsMCwyLjY2LDQsMSwxLDAsMCwwLDEuNC4wOSwxOS4yMSwxOS4yMSwwLDAsMSwzLjg1LTIuNDUsMTQuNzcsMTQuNzcsMCwwLDEsMi4wOS0u''@;'; put 'put ''NzhBNTUuMDcsNTUuMDcsMCwwLDAsMjYuNzksMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8ZWxsaXBzZSBjeD0iMzMuODMiIGN5PSIxMy4zMyIgcng9IjEuMzkiIHJ5PSIxLjM5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTguMjIsNi4zOUExLjM5LDEuMzksMCwxLDAsMTYuODQsNSwxLjM5LDEuMzksMCwwLDAsMTguMjIsNi4zOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOC4yMywyNi4zNGExLjExLDEu''@;'; put 'put ''MTEsMCwxLDAsMS4xLDEuMUExLjEsMS4xLDAsMCwwLDE4LjIzLDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTEyLjU4LDI2LjM0YTEuMTEsMS4xMSwwLDEsMCwxLjEsMS4xQTEuMSwxLjEsMCwwLDAsMTIuNTgsMjYuMzRa''@;'; put 'put ''Ii8+PHBhdGggZD0iTTIzLjg5LDI2LjM0YTEuMTEsMS4xMSwwLDEsMCwxLjEsMS4xQTEuMSwxLjEsMCwwLDAsMjMuODksMjYuMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuXG4gIDxwYXRoIGQ9Ik0yLjYsMTEuOTNBMS40LDEuNCwwLDEsMCw0LDEz''@;'; put 'put ''LjMzLDEuNCwxLjQsMCwwLDAsMi42LDExLjkzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8ZWxsaXBzZSBjeD0iMzMuODMiIGN5PSIxMy4zMyIgcng9IjEuMzkiIHJ5PSIxLjM5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0xOC4yMiw2LjM5QTEuMzksMS4zOSwwLDEsMCwxNi44NCw1LDEuMzksMS4zOSwwLDAsMCwxOC4yMiw2LjM5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuNjMsMTYuMUExOC42MSwxOC42MSwwLDAsMCwyOCwx''@;'; put 'put ''Ny4zNGEyMS41NywyMS41NywwLDAsMC00LDIuNDksMTkuMiwxOS4yLDAsMCwxLTIuMjYtMy40OSw0OC45Miw0OC45MiwwLDAsMS0yLjUyLTYuNTgsMSwxLDAsMCwwLTEtLjcxaDBhMSwxLDAsMCwwLTEsLjcxLDQ4LjQyLDQ4LjQyLDAsMCwxLTIuNTIsNi41OCwxOC42OSwxOC42OSwwLDAsMS0y''@;'; put 'put ''LjI2LDMuNDgsMjIuODEsMjIuODEsMCwwLDAtNC0yLjQ4QTE4LjgzLDE4LjgzLDAsMCwwLDQuOSwxNi4xYTEsMSwwLDAsMC0xLC4zMywxLDEsMCwwLDAtLjEzLDEuMDcsNTUuOSw1NS45LDAsMCwxLDQsMTMuNSwxLDEsMCwwLDAsMSwuODNoMTlhMSwxLDAsMCwwLDEtLjgzLDU1LjksNTUuOSww''@;'; put 'put ''LDAsMSw0LTEzLjUsMSwxLDAsMCwwLS4xMy0xLjA3QTEsMSwwLDAsMCwzMS42MywxNi4xWk0xMS4wOCwyOC41NWExLjExLDEuMTEsMCwxLDEsMS4xLTEuMTFBMS4xMSwxLjExLDAsMCwxLDExLjA4LDI4LjU1Wm03LjE1LDBhMS4xMSwxLjExLDAsMCwxLDAtMi4yMSwxLjExLDEuMTEsMCwwLDEs''@;'; put 'put ''MCwyLjIxWm03LjE2LDBhMS4xMSwxLjExLDAsMSwxLDEuMS0xLjExQTEuMTEsMS4xMSwwLDAsMSwyNS4zOSwyOC41NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiLz5cbiAgJyksbC5DbHJTaGFwZUhhc2h0YWc9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMiwxMkgyNS4zNGwxLjU1LTcuNzRhMSwxLDAsMCwwLTItLjM5TDIzLjMsMTJIMTUuMTFsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwxMy4wNywxMkg2YTEsMSwwLDAsMCwwLDJoNi42N2wtMS42LDhINGExLDEsMCwwLDAsMCwyaDYuNjZMOS4xMSwzMS43NGExLDEsMCwwLDAsLjc5LDEu''@;'; put 'put ''MTcuNjguNjgsMCwwLDAsLjIsMCwxLDEsMCwwLDAsMS0uOEwxMi43LDI0aDguMTlsLTEuNTUsNy43NGExLDEsMCwwLDAsLjc5LDEuMTcuNjIuNjIsMCwwLDAsLjE5LDAsMSwxLDAsMCwwLDEtLjhMMjIuOTMsMjRIMzBhMSwxLDAsMCwwLDAtMkgyMy4zM2wxLjYxLThIMzJhMSwxLDAsMCwwLDAt''@;'; put 'put ''MlpNMjEuMjksMjJIMTMuMWwxLjYxLThIMjIuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG5cbiAgPHBhdGggZD0iTTMxLjg3LDEwSDI2LjMybDEtNC44M0ExLDEsMCwwLDAsMjYuMzUsNGgtMmExLDEsMCwwLDAtMSwuNzhMMjIuMzMsMTBoLTUuNGwx''@;'; put 'put ''LTQuODNBMSwxLDAsMCwwLDE3LDRIMTVhMSwxLDAsMCwwLTEsLjc4TDEzLDEwSDdhMSwxLDAsMCwwLTEsLjhsLS40MSwyYTEsMSwwLDAsMCwxLDEuMmg1LjU1TDEwLjUsMjJoLTZhMSwxLDAsMCwwLTEsLjhsLS40MSwyYTEsMSwwLDAsMCwxLDEuMkg5LjY4bC0xLDQuODNhMSwxLDAsMCwwLDEs''@;'; put 'put ''MS4xN2gyYTEsMSwwLDAsMCwuOTUtLjc4TDEzLjY3LDI2aDUuNGwtMSw0LjgzQTEsMSwwLDAsMCwxOSwzMmgyYTEsMSwwLDAsMCwxLS43OEwyMy4wNSwyNmg2YTEsMSwwLDAsMCwxLS44bC40LTJhMSwxLDAsMCwwLTEtMS4ySDIzLjg3bDEuNjMtOGg2YTEsMSwwLDAsMCwxLS44bC40MS0yQTEs''@;'; put 'put ''MSwwLDAsMCwzMS44NywxMFptLTEyLDEyaC01LjRsMS42NC04aDUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksbC5Tb2NpYWxTaGFwZXM9e2Nyb3duOmwuQ2xyU2hhcGVDcm93bixzaGFyZTpsLkNsclNoYXBlU2hhcmUsc3RhcjpsLkNsclNoYXBl''@;'; put 'put ''U3RhciwiaGFsZi1zdGFyIjpsLkNsclNoYXBlSGFsZlN0YXIsYm9va21hcms6bC5DbHJTaGFwZUJvb2ttYXJrLGVudmVsb3BlOmwuQ2xyU2hhcGVFbnZlbG9wZSxjYWxlbmRhcjp2LkNsclNoYXBlQ2FsZW5kYXIsZXZlbnQ6di5DbHJTaGFwZUV2ZW50LHRhc2tzOmwuQ2xyU2hhcGVUYXNrcyxm''@;'; put 'put ''bGFnOmwuQ2xyU2hhcGVGbGFnLGluYm94OmwuQ2xyU2hhcGVJbmJveCxoYXNodGFnOmwuQ2xyU2hhcGVIYXNodGFnLGhlYXJ0OmwuQ2xyU2hhcGVIZWFydCwiaGVhcnQtYnJva2VuIjpsLkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxlcyI6bC5DbHJTaGFwZVRhbGtCdWJibGVzLCJj''@;'; put 'put ''aGF0LWJ1YmJsZSI6bC5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTpsLkNsclNoYXBlUGljdHVyZSwiaGFwcHktZmFjZSI6bC5DbHJTaGFwZUhhcHB5RmFjZSwibmV1dHJhbC1mYWNlIjpsLkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNlIjpsLkNsclNoYXBlU2FkRmFjZSwidGh1bWJz''@;'; put 'put ''LXVwIjpsLkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjpsLkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuU29jaWFsU2hhcGVzLCJmYXZvcml0ZSIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLlNvY2lhbFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGwuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLlNvY2lhbFNoYXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLlNvY2lhbFNoYXBlcy5j''@;'; put 'put ''YWxlbmRhcikpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChsLlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGVjaG5vbG9neS1zaGFwZXMudHMiOgovKiEq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZWNobm9sb2d5LXNoYXBlcy50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTSxsLGEpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbC5DbHJTaGFwZVZNV0FwcD1sLkNsclNoYXBlVk09bC5D''@;'; put 'put ''bHJTaGFwZVJvdXRlcj1sLkNsclNoYXBlTmV0d29ya1N3aXRjaD1sLkNsclNoYXBlTmV0d29ya1NldHRpbmdzPWwuQ2xyU2hhcGVOZXR3b3JrR2xvYmU9bC5DbHJTaGFwZVRhYmxldD1sLkNsclNoYXBlTW9iaWxlPWwuQ2xyU2hhcGVCYXR0ZXJ5PWwuQ2xyU2hhcGVBcHBsaWNhdGlvbj1sLkNs''@;'; put 'put ''clNoYXBlQ29kZT1sLkNsclNoYXBlVGVybWluYWw9bC5DbHJTaGFwZURpc3BsYXk9bC5DbHJTaGFwZUNvbXB1dGVyPWwuQ2xyU2hhcGVGbG9wcHk9bC5DbHJTaGFwZVBsdWdpbj1sLkNsclNoYXBlRG93bmxvYWRDbG91ZD1sLkNsclNoYXBlVXBsb2FkQ2xvdWQ9bC5DbHJTaGFwZUV4cG9ydD1s''@;'; put 'put ''LkNsclNoYXBlSW1wb3J0PWwuQ2xyU2hhcGVTaGllbGRYPWwuQ2xyU2hhcGVTaGllbGQ9bC5DbHJTaGFwZVNoaWVsZENoZWNrPWwuQ2xyU2hhcGVSZXNvdXJjZVBvb2w9bC5DbHJTaGFwZURhdGFDbHVzdGVyPWwuQ2xyU2hhcGVNZW1vcnk9bC5DbHJTaGFwZUNQVT1sLkNsclNoYXBlQnVpbGRp''@;'; put 'put ''bmc9bC5DbHJTaGFwZUFwcGxpY2F0aW9ucz1sLkNsclNoYXBlQ2x1c3Rlcj1sLkNsclNoYXBlU3RvcmFnZT1sLkNsclNoYXBlSG9zdD1sLkNsclNoYXBlRGFzaGJvYXJkPWwuQ2xyU2hhcGVNb3VzZT1sLkNsclNoYXBlS2V5Ym9hcmQ9bC5DbHJTaGFwZURldmljZXM9bC5DbHJTaGFwZUJhY2t1''@;'; put 'put ''cD1sLkNsclNoYXBlQmFja3VwUmVzdG9yZT1sLkNsclNoYXBlSGFyZERpc2s9bC5DbHJTaGFwZVJhY2tTZXJ2ZXI9bC5DbHJTaGFwZVdpZmk9bC5DbHJTaGFwZUJ1bmRsZT1sLkNsclNoYXBlQmxvY2tzR3JvdXA9bC5DbHJTaGFwZUJsb2NrPWwuQ2xyU2hhcGVMYXllcnM9bC5DbHJTaGFwZVVu''@;'; put 'put ''aW5zdGFsbD1sLkNsclNoYXBlSW5zdGFsbD1sLkNsclNoYXBlTm9XaWZpPWwuQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9bC5DbHJTaGFwZVJ1bGVyUGVuY2lsPXZvaWQgMCxsLlRlY2hub2xvZ3lTaGFwZXM9bC5DbHJTaGFwZUZpbGVTaGFyZTI9bC5DbHJTaGFwZUNpQ2Q9bC5DbHJTaGFwZUFuaW1h''@;'; put 'put ''dGlvbj1sLkNsclNoYXBlVGFwZURyaXZlPWwuQ2xyU2hhcGVNZWRpYUNoYW5nZXI9bC5DbHJDb250cm9sTHVuPWwuQ2xyU2hhcGVQb2Q9bC5DbHJTaGFwZU5vZGU9bC5DbHJTaGFwZU5hbWVzcGFjZT1sLkNsclNoYXBlTm9kZXM9bC5DbHJTaGFwZU5vZGVHcm91cD1sLkNsclNoYXBlU3RvcmFn''@;'; put 'put ''ZUFkYXB0ZXI9bC5DbHJTaGFwZUhvc3RHcm91cD1sLkNsclNoYXBlU3F1aWQ9bC5DbHJTaGFwZUNhcGFjaXRvcj1sLkNsclNoYXBlUmVzaXN0b3I9bC5DbHJTaGFwZUluZHVjdG9yPWwuQ2xyU2hhcGVSYWRhcj1sLkNsclNoYXBlVXNiPWwuQ2xyU2hhcGVRckNvZGU9bC5DbHJTaGFwZUZpbGVT''@;'; put 'put ''aGFyZT1sLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPWwuQ2xyU2hhcGVDb250YWluZXI9bC5DbHJTaGFwZUNkRHZkPWwuQ2xyU2hhcGVCYXJDb2RlPWwuQ2xyU2hhcGVBdG9tPWwuQ2xyU2hhcGVBc3NpZ25Vc2VyPWwuQ2xyU2hhcGVQcm9jZXNzT25WTT1sLkNsclNoYXBlQmx1ZXRvb3RoT2Zm''@;'; put 'put ''PWwuQ2xyU2hhcGVCbHVldG9vdGg9bC5DbHJTaGFwZVNTRD1sLkNsclNoYXBlTlZNZT1sLkNsclNoYXBlSGFyZERyaXZlRGlza3M9bC5DbHJTaGFwZUhhcmREcml2ZT1sLkNsclNoYXBlQWRtaW5pc3RyYXRvcj1sLkNsclNoYXBlRmxhc2s9bC5DbHJTaGFwZUhlbGl4PWwuQ2xyU2hhcGVEZXBs''@;'; put 'put ''b3k9bC5DbHJTaGFwZUNsb3VkVHJhZmZpYz1sLkNsclNoYXBlQ2xvdWRTY2FsZT1sLkNsclNoYXBlQ2xvdWROZXR3b3JrPWwuQ2xyU2hhcGVVbmxpbms9bC5DbHJTaGFwZUxpbms9bC5DbHJTaGFwZURpc2Nvbm5lY3Q9bC5DbHJTaGFwZUNvbm5lY3Q9bC5DbHJTaGFwZVVuYXJjaGl2ZT1sLkNs''@;'; put 'put ''clNoYXBlQXJjaGl2ZT1sLkNsclNoYXBlQ2VydGlmaWNhdGU9dm9pZCAwO3ZhciBwPWEoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKTthPWEoCi8qISAuLi91dGlscy9zdmctdGFnLWdl''@;'; put 'put ''bmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxsLkNsclNoYXBlUnVsZXJQZW5jaWw9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHBvaW50cz0iOSAx''@;'; put 'put ''Ny40MSA5IDI3IDE4LjU5IDI3IDE2LjU5IDI1IDExIDI1IDExIDE5LjQxIDkgMTcuNDEiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzQuODcsMzIuMjksMzIsMjkuMzhWMzJINFYyNy44NUg2di0xLjZINFYxOS42''@;'; put 'put ''SDZWMThINFYxMS42SDZWMTBINFY0LjQxTDE5Ljk0LDIwLjI2VjE3LjQ0TDMuNzEsMS4yOUExLDEsMCwwLDAsMiwyVjMzYTEsMSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIGQ9Ik0yNCwzMGg0YTIsMiwwLDAsMCwyLTJWOC43TDI3LjcsNC40N2EyLDIsMCwwLDAtMS43Ni0xaDBhMiwyLDAsMCwwLTEuNzYsMS4wOEwyMiw4LjcyVjI4QTIsMiwwLDAsMCwyNCwzMFpNMjQsOS4ybDEuOTQtMy43N0wyOCw5LjIxVjI0SDI0Wm0wLDE2LjQzaDR2Mi40NEgy''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNC44NywzMi4yMSwzMCwyNy4zN1Y4Ljc1TDI3LjcsNC41MmEyLDIsMCwwLDAtMy41NCwwTDIyLDguNzZWMTkuNDFMMy43MSwxLjIxQTEsMSwwLDAsMCwyLDEuOTJWMTBI''@;'; put 'put ''NC4xN3YxLjZIMlYxOEg0LjE3djEuNkgydjYuNjVINC4xN3YxLjZIMnY1LjA3YTEsMSwwLDAsMCwxLDFIMzQuMTZhMSwxLDAsMCwwLC43MS0xLjcxWk0xMCwyNlYxNi45NEwxOS4wNywyNlptMTgsMi4xMUgyNFYyNS42OGg0Wm0wLTRIMjRWOS4yNWwxLjk0LTMuNzdMMjgsOS4yNloiLz5cbicp''@;'; put 'put ''LGwuQ2xyU2hhcGVQaG9uZUhhbmRzZXQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy43MywzNS40NGE0LjcyLDQuNzIsMCwwLDEtMS0uMTEsMzMuOTEsMzMuOTEsMCwwLDEtMTYuNjItOC43NSwzMi43MSwz''@;'; put 'put ''Mi43MSwwLDAsMS05LTE2LjI1QTQuNTgsNC41OCwwLDAsMSwyLjQ2LDYuMDVsNC0zLjg1QTIsMiwwLDAsMSw4LDEuNjZhMiwyLDAsMCwxLDEuNDUuODdsNSw3LjM5YTEuNiwxLjYsMCwwLDEtLjExLDEuOWwtMi41MSwzYTE4Ljk0LDE4Ljk0LDAsMCwwLDQuMTcsNS44OWgwYTE5LjI2LDE5LjI2''@;'; put 'put ''LDAsMCwwLDYuMDcsNC4wOWwzLjExLTIuNDdhMS42NCwxLjY0LDAsMCwxLDEuODYtLjEybDcuNTUsNC44OEEyLDIsMCwwLDEsMzUsMzAuMmwtMy45LDMuODZBNC43NCw0Ljc0LDAsMCwxLDI3LjczLDM1LjQ0Wk03Ljg0LDMuNjRsLTQsMy44NWEyLjU0LDIuNTQsMCwwLDAtLjc1LDIuNCwzMC43''@;'; put 'put ''LDMwLjcsMCwwLDAsOC40MSwxNS4yNiwzMS45LDMxLjksMCwwLDAsMTUuNjQsOC4yMywyLjc1LDIuNzUsMCwwLDAsMi41LS43NGwzLjktMy44Ni03LjI5LTQuNzEtMy4zNCwyLjY2YTEsMSwwLDAsMS0uOTIuMTcsMjAuMDYsMjAuMDYsMCwwLDEtNy4zNi00Ljc1aDBhMTkuNDksMTkuNDksMCww''@;'; put 'put ''LDEtNC44Ny03LjJBMSwxLDAsMCwxLDEwLDE0bDIuNy0zLjIzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjIyLDIwLjY0YTIwLjM3LDIwLjM3LDAsMCwwLDcuNCw0Ljc5bDMuNzctM2EuNjcuNjcsMCwwLDEsLjc2''@;'; put 'put ''LDBsNyw0LjUxYTIsMiwwLDAsMSwuMzMsMy4xOGwtMy4yOCwzLjI0YTQsNCwwLDAsMS0zLjYzLDEuMDcsMzUuMDksMzUuMDksMCwwLDEtMTcuMTUtOUEzMy43OSwzMy43OSwwLDAsMSwxLjE1LDguNmEzLjc4LDMuNzgsMCwwLDEsMS4xLTMuNTVsMy40LTMuMjhhMiwyLDAsMCwxLDMuMTIuMzJM''@;'; put 'put ''MTMuNDMsOWEuNjMuNjMsMCwwLDEsMCwuNzVsLTMuMDcsMy42OUExOS43NSwxOS43NSwwLDAsMCwxNS4yMiwyMC42NFoiLz5cbicpLGwuQ2xyU2hhcGVOb1dpZmk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0x''@;'; put 'put ''OCwyNC40MmE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwyNC40MlptMCw2YTIsMiwwLDEsMSwyLTJBMiwyLDAsMCwxLDE4LDMwLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNi4yMSwyMS44NWExLDEs''@;'; put 'put ''MCwwLDAtLjIzLTEuNCwxMy41NiwxMy41NiwwLDAsMC01LTIuMjNsMy44NywzLjg3QTEsMSwwLDAsMCwyNi4yMSwyMS44NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTAuNzJhMjAuODgsMjAuODgs''@;'; put 'put ''MCwwLDAtNC4xNi40M2wxLjc0LDEuNzRhMTksMTksMCwwLDEsMi40Mi0uMTdBMTguNzYsMTguNzYsMCwwLDEsMjguNjQsMTZhMSwxLDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzMuNTUsOC4yQTI4LjExLDI4LjExLDAsMCwwLDguMTEsNS4zNkw5LjY5LDYuOTNBMjYsMjYsMCwwLDEsMzIuNDUsOS44N2ExLDEsMCwwLDAsMS4xLTEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNSIgZD0iTTEuODQsNC43NSw0LjI3LDcuMThjLS42Mi4zNC0xLjIzLjctMS44MywxLjFBMSwxLDAsMSwwLDMuNTYsOS45NEM0LjI2LDkuNDcsNSw5LDUuNzQsOC42NWwzLjg3LDMuODdBMjAuNTksMjAuNTksMCwwLDAsNi4yMywxNC40LDEsMSwwLDAsMCw3LjM2LDE2''@;'; put 'put ''YTE4LjgyLDE4LjgyLDAsMCwxLDMuNzctMmw0LjE2LDQuMTZBMTMuNTEsMTMuNTEsMCwwLDAsMTAsMjAuNTVhMSwxLDAsMCwwLDEuMTgsMS42MUExMS41MiwxMS41MiwwLDAsMSwxNywyMGwxMC44LDEwLjgsMS40MS0xLjQxLTI2LTI2WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBjeD0iMTgiIGN5PSIyOS41NCIgcj0iMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LjE4LDE3LjcxbC4xMS0uMTdhMS41MSwxLjUxLDAsMCwwLS40Ny0yLjFB''@;'; put 'put ''MjAuNTcsMjAuNTcsMCwwLDAsMTgsMTIuMzdjLS41NiwwLTEuMTEsMC0xLjY1LjA3bDMuMjEsMy4yMWExNy40MSwxNy40MSwwLDAsMSw3LjYsMi41MkExLjQ5LDEuNDksMCwwLDAsMjkuMTgsMTcuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0zIiBkPSJNMzIuNzYsOS4zOEEyNy45LDI3LjksMCwwLDAsMTAuMTgsNi4yN0wxMi44MSw4LjlBMjQuNjgsMjQuNjgsMCwwLDEsMzEuMSwxMi4xMmExLjQ5LDEuNDksMCwwLDAsMi0uNDZsLjExLS4xN0ExLjUxLDEuNTEsMCwwLDAsMzIuNzYsOS4zOFoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0zLDQuNzVsMy4xLDMuMUEyNy4yOCwyNy4yOCwwLDAsMCwzLjE4LDkuNDJhMS41MSwxLjUxLDAsMCwwLS40OCwyLjExbC4xMS4xN2ExLjQ5LDEuNDksMCwwLDAsMiwuNDYsMjQuNjksMjQuNjksMCwwLDEs''@;'; put 'put ''My42Ny0xLjlsMy4xNCwzLjE0YTIwLjYzLDIwLjYzLDAsMCwwLTQuNTMsMi4wOSwxLjUxLDEuNTEsMCwwLDAtLjQ2LDIuMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2QTE3LjQ2LDE3LjQ2LDAsMCwxLDE0LjI1LDE2bDMuNiwzLjZhMTMuMzksMTMuMzksMCwwLDAtNi43OSwxLjkzLDEu''@;'; put 'put ''NSwxLjUsMCwwLDAtLjQ2LDIuMDlsLjEuMTZhMS41MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMiwxMC4yLDAsMCwxLDktLjdMMjksMzAuNzVsMS40MS0xLjQxLTI2LTI2WiIvPlxuJyksbC5DbHJTaGFwZUluc3RhbGw9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSwwLDAsMCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAu''@;'; put 'put ''OTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTAuMywxOC44N2w3LDYuODlhMSwxLDAsMCwwLDEuNCwwbDctNi44OWExLDEsMCwwLDAtMS40LTEuNDNMMTksMjIuNjVWNGExLDEsMCwwLDAtMiwwVjIyLjY1''@;'; put 'put ''bC01LjMtNS4yMWExLDEsMCwwLDAtMS40LDEuNDNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAs''@;'; put 'put ''MC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAsMC0yLDBWMjIuNjVsLTUuMy01LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz48cGF0aCBkPSJNMzEsMTMuNDNWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjky''@;'; put 'put ''QTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMC4zLDE4Ljg3bDcsNi44OWExLDEsMCwwLDAsMS40LDBsNy02Ljg5YTEsMSwwLDAsMC0xLjQtMS40M0wxOSwyMi42NVY0YTEsMSwwLDAs''@;'; put 'put ''MC0yLDBWMjIuNjVsLTUuMy01LjIxYTEsMSwwLDAsMC0xLjQsMS40M1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1''@;'; put 'put ''LjA4QTIsMiwwLDAsMCwzLDEwVjMwYTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwyLDAsMCwwLDMzLDMwVjE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0i''@;'; put 'put ''TTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksbC5DbHJTaGFwZVVuaW5zdGFsbD0oMCxhLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTExLjI5LDI2LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4''@;'; put 'put ''bC01LjMtNS4yM2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1LjNBMSwxLDAsMCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC45Miw4SDI2LjU1YTEsMSwwLDAs''@;'; put 'put ''MCwwLDJIMzFWMzBINVYxMEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMEEyLDIsMCwwLDAsMzAuOTIsOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTExLjI5LDI2LjcyYTEsMSwwLDAsMCwxLjQxLDBMMTgsMjEuNDlsNS4zLDUuMjNBMSwxLDAsMCwwLDI0LjcsMjUuM2wtNS4yOC01LjIxLDUuMjgtNS4yMWExLDEsMCwwLDAtMS40MS0xLjQyTDE4LDE4LjY4bC01LjMtNS4y''@;'; put 'put ''M2ExLDEsMCwwLDAtMS40MSwxLjQybDUuMjgsNS4yMUwxMS4zLDI1LjNBMSwxLDAsMCwwLDExLjI5LDI2LjcyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzEsMTMuNDNWMzBINVYx''@;'; put 'put ''MEg5LjM4YTEsMSwwLDAsMCwwLTJINS4wOEEyLDIsMCwwLDAsMywxMFYzMGEyLDIsMCwwLDAsMi4wOCwySDMwLjkyQTIsMiwwLDAsMCwzMywzMFYxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xMS4yOSwyNi43MmEx''@;'; put 'put ''LDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43LDI1LjNsLTUuMjgtNS4yMSw0Ljc1LTQuNjlIMjIuMjNhMy42NSwzLjY1LDAsMCwxLS44MS0uMUwxOCwxOC42OGwtNS4zLTUuMjNhMSwxLDAsMCwwLTEuNDEsMS40Mmw1LjI4LDUuMjFMMTEuMywyNS4zQTEs''@;'; put 'put ''MSwwLDAsMCwxMS4yOSwyNi43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiBkPSJNMzEsMTUuNFYzMEg1VjEwSDkuMzhhMSwxLDAsMCwwLDAtMkg1LjA4QTIsMiwwLDAsMCwzLDEwVjMw''@;'; put 'put ''YTIsMiwwLDAsMCwyLjA4LDJIMzAuOTJBMiwyLDAsMCwwLDMzLDMwVjE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuJyksbC5DbHJTaGFwZUxheWVycz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUsMGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1Wk01LjM0LDEyLjE2''@;'; put 'put ''bDEyLjY2LDYsMTIuNjYtNkwxOCw2LjE4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYu''@;'; put 'put ''ODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzIuMDdhMSwxLDAsMCwxLS40My0uMWwtMTUtNy4wOWExLDEsMCwwLDEs''@;'; put 'put ''Ljg1LTEuODFMMTgsMzBsMTQuNTctNi44OWExLDEsMCwxLDEsLjg1LDEuODFMMTguNDMsMzJBMSwxLDAsMCwxLDE4LDMyLjA3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIwLjI1YTEsMSwwLDAsMS0uNDMtLjFs''@;'; put 'put ''LTE1LTcuMDlhMSwxLDAsMCwxLDAtMS44MWwxNS03LjA5YTEsMSwwLDAsMSwuODUsMGwxNSw3LjA5YTEsMSwwLDAsMSwwLDEuODFsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDIwLjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTE4LDI2LjE2YTEsMSwwLDAsMS0uNDMtLjFMMi41NywxOWExLDEsMCwxLDEsLjg1LTEuODFMMTgsMjQuMDZsMTQuNTctNi44OUExLDEsMCwxLDEsMzMuNDMsMTlsLTE1LDcuMDlBMSwxLDAsMCwxLDE4LDI2LjE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbicpLGwuQ2xyU2hhcGVCbG9j''@;'; put 'put ''az0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDIsOS4wOWwtMTMtNmExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMEExLDEsMCwwLDAsMzEuNDIs''@;'; put 'put ''OS4wOVpNMTgsNS4xLDI4LjYxLDEwLDE4LDE0LjksNy4zOSwxMFpNNiwxMS41NmwxMSw1LjA4djE0LjhMNiwyNi4zNlpNMTksMzEuNDRWMTYuNjRsMTEtNS4wOHYxNC44WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzAsMTUuNTNWMjYuMzZMMTksMzEuNDRWMTYuNjRsMi41Ny0xLjE5YTMuNjcsMy42NywwLDAsMS0yLjExLTEuMjJMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWwzLjA4LDEuNDIsMS0xLjc0TDE4LjQyLDMuMDlhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSww''@;'; put 'put ''LDAsMCwuNTguOTFsMTMsNmExLDEsMCwwLDAsLjg0LDBsMTMtNkExLDEsMCwwLDAsMzIsMjdWMTUuNTNaTTE3LDMxLjQ0LDYsMjYuMzZWMTEuNTZsMTEsNS4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI2Ljg3LDEuMjZsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTJIMzMuN2ExLjI4LDEuMjgsMCwwLDAsMS4xLTEuOTJMMjkuMDgsMS4yNkExLjI4LDEuMjgsMCwwLDAsMjYuODcsMS4yNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4x''@;'; put 'put ''Miw3LjEyLDAsMCwxLDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCww''@;'; put 'put ''LDEsMzAsMTMuNVpNMTcsMzEuNDQsNiwyNi4zNlYxMS41NmwxMSw1LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40Miw5LjA5bC0xMy02YTEsMSwwLDAsMC0uODQsMGwtMTMsNkExLDEsMCwwLDAsNCwxMFYyN2ExLDEsMCwwLDAsLjU4''@;'; put 'put ''LjkxbDEzLDZhMSwxLDAsMCwwLC44NCwwbDEzLTZBMSwxLDAsMCwwLDMyLDI3VjEwQTEsMSwwLDAsMCwzMS40Miw5LjA5Wk0xOCwxNC45LDcuMzksMTAsMTgsNS4xLDI4LjYxLDEwWk0zMCwyNi4zNiwxOSwzMS40NFYxNi42NGwxMS01LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS4zOHYxMUwxOSwzMS40NFYxNi42NGwyLjc5LTEuMjlhMy42OCwzLjY4LDAsMCwxLTIuMjUtMS4xNkwxOCwxNC45LDcuMzksMTAsMTgsNS4xbDMsMS4zOSwxLTEuNzVMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBs''@;'; put 'put ''LTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjYuODUsMS4xMiwyMS4xMywxMWExLjI3LDEuMjcsMCwwLDAsMS4xLDEuOTFIMzMuNjhBMS4yNywxLjI3LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTJBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMjYuMzZMMTksMzEuNDRWMTYuNjRsOC4wOC0zLjczYTcuNTcsNy41NywwLDAsMS0yLTEuMjdMMTgsMTQuOSw3LjM5LDEwLDE4LDUuMWw0LjYxLDIuMTNBNy4xMiw3LjEyLDAsMCwx''@;'; put 'put ''LDIyLjUsNmE4LDgsMCwwLDEsLjA3LTFMMTguNDIsMy4wOWExLDEsMCwwLDAtLjg0LDBsLTEzLDZBMSwxLDAsMCwwLDQsMTBWMjdhMSwxLDAsMCwwLC41OC45MWwxMyw2YTEsMSwwLDAsMCwuODQsMGwxMy02QTEsMSwwLDAsMCwzMiwyN1YxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRn''@;'; put 'put ''ZSIgLz4nKSxsLkNsclNoYXBlQmxvY2tzR3JvdXA9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42''@;'; put 'put ''OCwxOC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43''@;'; put 'put ''NlptLTIuODEuOTFMMjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzVaTTE4LjEsNC4wOGw1LjExLDIuMzVMMTguMSw4Ljc4LDEzLDYuNDNaTTEwLjYsMTcuMzFsNS4xMSwyLjM1TDEwLjYsMjIsNS40OSwxOS42N1ptNi41LDExLjQ5LTYuNSwzLTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSww''@;'; put 'put ''LDAsMCwxMSwyNGw2LjA4LTIuOFpNMTEuNiwxNS41N2gwVjhsNi4wOCwyLjhhMSwxLDAsMCwwLC44NCwwTDI0LjYsOHY3LjU4aDBsLTYuNSwzWk0zMi4xMSwyOC44MWwtNi41LDMtNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdoLTJ2MGwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCwwLDAsLjg0LDBsLjI0LS4xMWE0LjE3LDQuMTcsMCwwLDEsLjI5LS42NWwxLjMzLTIuMzEtMi4yOCwxTDEzLDYu''@;'; put 'put ''NDNsNS4xLTIuMzUsMy40NywxLjYsMS0xLjczTDE4LjUsMi4wOGExLDEsMCwwLDAtLjg0LDBsLTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgt''@;'; put 'put ''My4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgtLjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5LDE5LjY3Wm0wLDE0LjQ5LTYuNS0zVjIxLjIzTDEwLjE4LDI0QTEsMSwwLDAs''@;'; put 'put ''MCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptMTUtMTQuNDgsNS4xMSwyLjM1TDI1LjYxLDIyLDIwLjUsMTkuNjdabTAsMTQuNDktNi41MS0zVjIxLjIyTDI1LjE5LDI0QTEsMSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbjxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG48cGF0aCBkPSJNMzMuNTMsMTguNzYsMjYuNiwxNS41N1YxMi43YTcuNTgsNy41OCwwLDAsMS0yLTEuNTF2NC4zOWwtNi41LDMtNi41LTNWOGw2LjA4LDIuOGExLDEsMCww''@;'; put 'put ''LDAsLjg0LDBMMjMsOC43MmE3LjA1LDcuMDUsMCwwLDEtLjQ3LTJsLTQuNDcsMkwxMyw2LjQzbDUuMS0yLjM1LDQuNDQsMnMwLS4wNiwwLS4wOWE3LjU1LDcuNTUsMCwwLDEsLjI3LTJsLTQuMy0yYTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0bC02Ljks''@;'; put 'put ''My4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEsMCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwxLDAsMCwwLDMzLjUzLDE4Ljc2Wk0xMC42''@;'; put 'put ''LDE3LjMxbDUuMTEsMi4zNUwxMC42LDIyLDUuNDksMTkuNjdabTAsMTQuNDktNi41LTNWMjEuMjNMMTAuMTgsMjRBMSwxLDAsMCwwLDExLDI0bDYuMDgtMi44LDAsNy42Wm0xNS0xNC40OCw1LjExLDIuMzVMMjUuNjEsMjIsMjAuNSwxOS42N1ptMCwxNC40OS02LjUxLTNWMjEuMjJMMjUuMTks''@;'; put 'put ''MjRBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbjxjaXJjbGUgY3g9IjMwLjAzIiBjeT0iNi4wMyIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuPHBhdGggZD0iTTMzLjUzLDE4Ljc2LDI2LjYsMTUuNTdWNi40M0ExLDEsMCwwLDAsMjYsNS41M2wtNy41LTMuNDVhMSwxLDAsMCwwLS44NCwwbC03LjUsMy40NWExLDEsMCwwLDAtLjU4LjkxdjkuMTRMMi42OCwx''@;'; put 'put ''OC43NmExLDEsMCwwLDAtLjU4LjkxdjkuNzhoMGExLDEsMCwwLDAsLjU4LjkxbDcuNSwzLjQ1YTEsMSwwLDAsMCwuODQsMGw3LjA4LTMuMjYsNy4wOCwzLjI2YTEsMSwwLDAsMCwuODQsMGw3LjUtMy40NWExLDEsMCwwLDAsLjU4LS45MWgwVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlpN''@;'; put 'put ''MjUuNjEsMjIsMjAuNSwxOS42N2w1LjExLTIuMzUsNS4xMSwyLjM1Wm0tMS02LjQ0LTYuNDQsM1YxMC44N2ExLDEsMCwwLDAsLjM1LS4wOEwyNC42LDh2Ny41OFpNMTguMSw0LjA4bDUuMTEsMi4zNUwxOC4xLDguNzgsMTMsNi40M1pNMTAuNiwxNy4zMWw1LjExLDIuMzVMMTAuNiwyMiw1LjQ5''@;'; put 'put ''LDE5LjY3Wm02LjUsMTEuNDktNi41LDNoMFYyNC4xMWgwQTEsMSwwLDAsMCwxMSwyNGw2LjA4LTIuOFptMTUsMC02LjQ2LDNWMjQuMTFBMSwxLDAsMCwwLDI2LDI0bDYuMDgtMi44WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0zMy41Mywx''@;'; put 'put ''OC43NiwyNi42LDE1LjU3djBoLTJ2MGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSwwLDAsMCwuMzUtLjA4bC4xNC0uMDZBMy4yMywzLjIzLDAsMCwxLDE5LDEwbDEuMjgtMi4yMi0yLjE0LDFMMTMsNi40M2w1LjEtMi4zNSwzLjM5LDEuNTYsMS0xLjczLTQtMS44M2ExLDEsMCwwLDAtLjg0LDBs''@;'; put 'put ''LTcuNSwzLjQ1YTEsMSwwLDAsMC0uNTguOTF2OS4xNGwtNi45LDMuMThhMSwxLDAsMCwwLS41OC45MXY5Ljc4YTEsMSwwLDAsMCwuNTguOTFsNy41LDMuNDVhMSwxLDAsMCwwLC44NCwwbDcuMDgtMy4yNiw3LjA4LDMuMjZhMSwxLDAsMCwwLC44NCwwbDcuNS0zLjQ1YTEsMSwwLDAsMCwuNTgt''@;'; put 'put ''LjkxVjE5LjY3QTEsMSwwLDAsMCwzMy41MywxOC43NlptLTI4LC45MSw1LjExLTIuMzYsNS4xMSwyLjM1TDEwLjYsMjJaTTEwLjYsMzEuOFYyNC4xMUExLjA4LDEuMDgsMCwwLDAsMTEsMjRsNi4wOC0yLjgsMCw3LjZabTkuOS0xMi4xMyw1LjExLTIuMzUsNS4xMSwyLjM1TDI1LjYxLDIyWk0y''@;'; put 'put ''NS42NCwzMS44VjI0LjExQS44OS44OSwwLDAsMCwyNiwyNGw2LjA4LTIuOCwwLDcuNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG48cGF0aCBkPSJNMjYuODksMS4xNGwtNS43Miw5LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4y''@;'; put 'put ''NywxM0gzMy43MmExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMSwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44OSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbjxwYXRoIGQ9Ik0zMy41Mywx''@;'; put 'put ''OC43NiwyNi42LDE1LjU3VjEyLjY5YTcuNjYsNy42NiwwLDAsMS0yLTEuNDd2NC4zNGwtNi40MywzVjEwLjg3YTEuMDUsMS4wNSwwLDAsMCwuMzUtLjA4TDIzLDguNzNhNy42NSw3LjY1LDAsMCwxLS40OC0ybC00LjQyLDJMMTMsNi40M2w1LjEtMi4zNSw0LjM4LDJWNmE3LjU1LDcuNTUsMCww''@;'; put 'put ''LDEsLjI3LTJMMTguNSwyLjA4YTEsMSwwLDAsMC0uODQsMGwtNy41LDMuNDVhMSwxLDAsMCwwLS41OC45MXY5LjE0bC02LjksMy4xOGExLDEsMCwwLDAtLjU4LjkxdjkuNzhhMSwxLDAsMCwwLC41OC45MWw3LjUsMy40NWExLDEsMCwwLDAsLjg0LDBsNy4wOC0zLjI2LDcuMDgsMy4yNmExLDEs''@;'; put 'put ''MCwwLDAsLjg0LDBsNy41LTMuNDVhMSwxLDAsMCwwLC41OC0uOTFWMTkuNjdBMSwxLDAsMCwwLDMzLjUzLDE4Ljc2Wm0tMjgsLjkxLDUuMTEtMi4zNiw1LjExLDIuMzVMMTAuNiwyMlpNMTAuNiwzMS44VjI0LjExQTEuMDgsMS4wOCwwLDAsMCwxMSwyNGw2LjA4LTIuOCwwLDcuNlptOS45LTEy''@;'; put 'put ''LjEzLDUuMTEtMi4zNSw1LjExLDIuMzVMMjUuNjEsMjJaTTI1LjY0LDMxLjhWMjQuMTFBLjg5Ljg5LDAsMCwwLDI2LDI0bDYuMDgtMi44LDAsNy42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG48Y2lyY2xlIGN4PSIyOS45OCIg''@;'; put 'put ''Y3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLGwuQ2xyU2hhcGVCdW5kbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0zMi40Myw4LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUsNy4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCwwLC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1''@;'; put 'put ''Wk0xOSw0LjE1LDI5LjkzLDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywxNS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFaTTUsMTIuMTMsMTYsMTcuNFYzMS40Nkw1LDI2LjJaTTE4LDMxLjQ1VjE3LjM2bDEzLTYuMjl2MTQuMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi40Myw4LjM1bC0xMy02LjIxYTEsMSwwLDAsMC0uODcsMGwtMTUsNy4yNGExLDEsMCwwLDAtLjU3LjlWMjYuODNhMSwxLDAsMCwwLC42LjkybDEzLDYuMTlhMSwxLDAsMCwwLC44NywwbDE1LTcuMjRhMSwxLDAsMCww''@;'; put 'put ''LC41Ny0uOVY5LjI1QTEsMSwwLDAsMCwzMi40Myw4LjM1Wk0xOSw0LjE1LDI5LjkzLDkuMzdsLTUuMDUsMi40NEwxNC4yMSw2LjQ2Wk0xNywxNS42NCw2LDEwLjQxbDUuOS0yLjg1TDIyLjYsMTIuOTFabTEsMTUuOFYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4nKSxsLkNsclNoYXBlV2lmaT0o''@;'; put 'put ''MCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjU1LDguMmEyOC4xLDI4LjEsMCwwLDAtMzEuMTEuMDhBMSwxLDAsMSwwLDMuNTYsOS45NGEyNi4xMSwyNi4xMSwwLDAsMSwyOC44OS0uMDcsMSwxLDAsMCwwLDEu''@;'; put 'put ''MS0xLjY3WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOC4wNSwxMC43MkEyMC43NCwyMC43NCwwLDAsMCw2LjIzLDE0LjQsMSwxLDAsMCwwLDcuMzYsMTYsMTguODUsMTguODUsMCwwLDEsMjguNjQsMTZhMSwx''@;'; put 'put ''LDAsMCwwLDEuMTItMS42NUEyMC43NSwyMC43NSwwLDAsMCwxOC4wNSwxMC43MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTguMDUsMTcuOWExMy41MSwxMy41MSwwLDAsMC04LDIuNjQsMSwxLDAsMCwwLDEu''@;'; put 'put ''MTgsMS42MSwxMS41NiwxMS41NiwwLDAsMSwxMy42Mi0uMDhBMSwxLDAsMSwwLDI2LDIwLjQ2LDEzLjUyLDEzLjUyLDAsMCwwLDE4LjA1LDE3LjlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LDI0LjQyYTQs''@;'; put 'put ''NCwwLDEsMCw0LDRBNCw0LDAsMCwwLDE4LDI0LjQyWm0wLDZhMiwyLDAsMSwxLDItMkEyLDIsMCwwLDEsMTgsMzAuNDJaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGN4PSIxOCIgY3k9IjI5LjU0IiByPSIzIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzIuNzYsOS4zOGEyNy44NywyNy44NywwLDAsMC0yOS41NywwLDEuNTEsMS41MSwwLDAsMC0uNDgsMi4xMWwuMTEuMTdhMS40OSwxLjQ5LDAsMCwwLDIsLjQ2LDI0LjY4LDI0LjY4LDAsMCwx''@;'; put 'put ''LDI2LjI2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDMyLjc2LDkuMzhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiBkPSJNMjguODIsMTUuNDRhMjAuNTksMjAuNTksMCwwLDAtMjEu''@;'; put 'put ''NywwLDEuNTEsMS41MSwwLDAsMC0uNDYsMi4xbC4xMS4xN2ExLjQ5LDEuNDksMCwwLDAsMiwuNDYsMTcuNCwxNy40LDAsMCwxLDE4LjM2LDAsMS40OSwxLjQ5LDAsMCwwLDItLjQ2bC4xMS0uMTdBMS41MSwxLjUxLDAsMCwwLDI4LjgyLDE1LjQ0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTI0Ljg4LDIxLjQ5YTEzLjQxLDEzLjQxLDAsMCwwLTEzLjgyLDAsMS41LDEuNSwwLDAsMC0uNDYsMi4wOWwuMS4xNmExLjUyLDEuNTIsMCwwLDAsMi4wNi40NCwxMC4yNywxMC4yNywwLDAsMSwxMC40MiwwLDEuNTIsMS41''@;'; put 'put ''MiwwLDAsMCwyLjA2LS40NWwuMS0uMTZBMS40OSwxLjQ5LDAsMCwwLDI0Ljg4LDIxLjQ5WiIvPlxuJyksbC5DbHJTaGFwZVJhY2tTZXJ2ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQi''@;'; put 'put ''IHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMTguNjQsMTFBMy42NSwzLjY1LDAsMCwxLDE5LDkuODlMMTkuNTYsOUgxMHYyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIGQ9Ik0zMy42''@;'; put 'put ''OCwxNS40SDMyVjIxSDRWMTVIMjAuNThBMy42NywzLjY3LDAsMCwxLDE5LDEzLjU2YTMuNjMsMy42MywwLDAsMS0uMjYtLjU2SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFpNNCwyOVYyM0gzMnY2WiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQu''@;'; put 'put ''NzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgeD0iNiIgeT0iOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiB4PSIxMCIgeT0iMTciIHdpZHRoPSIxNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIHg9IjYiIHk9IjI1IiB3aWR0aD0iMiIgaGVp''@;'; put 'put ''Z2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIgZD0iTTEwLDExSDI0di0uNTFBNy40OCw3LjQ4LDAsMCwxLDIzLjEzLDlIMTBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQi''@;'; put 'put ''IGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjY4LS41SDRWN0gyMi41N2E3LjUyLDcuNTIsMCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDMw''@;'; put 'put ''LDEzLjVaTTQsMTVIMzJ2Nkg0Wk00LDI5VjIzSDMydjZaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjYiIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxMCIgeT0iOSIgd2lkdGg9''@;'; put 'put ''IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSI2IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIHg9IjEwIiB5PSIxNyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMnY2SDRabTAsOEgzMnY2SDRaTTQsMjlWMjNIMzJ2NloiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiB4PSI2IiB5PSIyNSIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIHg9IjEwIiB5PSIyNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0x''@;'; put 'put ''OSw5Ljg5LDE5LjU2LDlIMTBWN0gyMC43MWwxLjczLTNINEEyLDIsMCwwLDAsMiw2djZIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5LDkuODlaTTgsOUg2VjdIOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFs''@;'; put 'put ''ZXJ0ZWQiIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOS4zNSwxNEgydjhIMzRWMTUuMzhaTTgsMTlINlYxN0g4Wm0xNiwwSDEwVjE3SDI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yLDE0djhIMzRWMTRabTYsNUg2VjE3SDhabTE2LDBIMTBWMTdIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWJhZGdlZCIgZD0iTTIsMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0SDJabTgtM0gyNHYySDEwWk02LDI3SDh2Mkg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0yMy4x''@;'; put 'put ''Myw5SDEwVjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNDksNy40OSwwLDAsMSwuMjgtMkg0QTIsMiwwLDAsMCwyLDZ2NkgyNS41MUE3LjUyLDcuNTIsMCwwLDEsMjMuMTMsOVpNOCw5SDZWN0g4WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIsMjJIMzRWMTRIMlptOC01SDI0djJIMTBaTTYsMTdIOHYy''@;'; put 'put ''SDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZ2NkgzNFY2QTIsMiwwLDAsMCwzMiw0Wk04LDlINlY3SDhaTTI0LDlIMTBWN0gyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNEgyWm04LTNIMjR2MkgxMFpNNiwyN0g4djJINloiLz5cbicpLGwuQ2xyU2hhcGVIYXJkRGlzaz0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRl''@;'; put 'put ''ZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTM0LDIxLjA4bC0xLjQtNS42OEgzMC41MWwxLjQ5LDZWMjlINFYyMS40''@;'; put 'put ''NEw3LjA2LDloMTIuNWwxLjE1LTJINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiB4PSI2IiB5PSIyMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI0IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0z''@;'; put 'put ''NCwyMS4wOCwzMiwxMy4yMWE3LjQ5LDcuNDksMCwwLDEtMiwuMjlsMiw3Ljk0VjI5SDRWMjEuNDRMNy4wNiw5SDIzLjEzYTcuNDUsNy40NSwwLDAsMS0uNTUtMkg3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMiwyMS4wOGExLDEsMCwwLDAsMCwuMjRWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIs''@;'; put 'put ''MCwwLDAsMi0yVjIxLjMxQTEsMSwwLDAsMCwzNCwyMS4wOFoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDIxLjA4LDMwLjg2LDguNDNBMiwyLDAsMCwwLDI4Ljk0LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIsMjEuMDhhMSwxLDAsMCwwLDAsLjI0VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyMS4zMUExLDEsMCwwLDAsMzQsMjEuMDhaTTQsMjlWMjEuNDRMNy4wNiw5SDI4LjkzTDMyLDIxLjQ0VjI5WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhl''@;'; put 'put ''aWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIHg9IjI2IiB5PSIyNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0z''@;'; put 'put ''Mi41OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTIsMjJ2N2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjJabTI4LDVIMjZWMjVoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMS0tYmFkZ2VkIiBkPSJNMzIsMTMuMjFBNy40Nyw3LjQ3LDAsMCwxLDIyLjU3LDdINy4wNkEyLDIsMCwwLDAsNS4xMyw4LjQ3TDIuMjksMjBIMzMuNzFaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAuODYsOC40M0EyLDIsMCwwLDAsMjguOTQsN0g3LjA2QTIsMiwwLDAsMCw1LjEzLDguNDdMMi4yOSwy''@;'; put 'put ''MEgzMy43MVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yLDIydjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyWm0yOCw1SDI2VjI1aDRaIi8+XG4nKSxsLkNsclNoYXBlQmFja3VwUmVzdG9yZT0oMCxh''@;'; put 'put ''LmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcs''@;'; put 'put ''NlYxOWExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiBkPSJNMzEu''@;'; put 'put ''NTgsMTUuNEgyOS40NmMxLDIuODUsMi4zMSw2LjM3LDIuNTQsNy4wOFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjIyLjMzQzM0LDIyLjEyLDM0LDIyLDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4''@;'; put 'put ''LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0xMyw5LjkyLDE3LDZWMTlhMSwxLDAsMSwwLDIsMFY2bDQsMy45NWExLDEsMCwwLDAsLjcxLjI5bC4xMSwwYTcuNDYsNy40NiwwLDAsMS0xLjI1LTMuNTJMMTgsMi4x''@;'; put 'put ''NiwxMS42MSw4LjVBMSwxLDAsMCwwLDEzLDkuOTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAs''@;'; put 'put ''MSwyNS41MSwxMkgyMXYyaDcuOTVDMzAsMTYuOTQsMzEuNzIsMjEuNjUsMzIsMjIuNDhWMzBINFYyMi40OEM0LjI4LDIxLjY1LDcuMDUsMTQsNy4wNSwxNEgxNVYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLDIyLDIsMjIuMSwyLDIyLjMzVjMwYTIsMiwwLDAsMCwyLDJIMzJh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYyMi4zM0MzNCwyMi4xLDM0LDIyLDMwLjg3LDEzLjQ1WiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSI2IiB5PSIyMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIy''@;'; put 'put ''NiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTMsOS45MiwxNyw2VjE5YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2''@;'; put 'put ''LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDIxdjJoNy45NUMzMCwxNi45NCwzMS43MiwyMS42''@;'; put 'put ''NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDE1VjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODQs''@;'; put 'put ''MTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNUgyNlYyN2g0WiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgZD0iTTEzLDkuOTIsMTcsNlYxOGExLDEsMCwxLDAsMiwwVjZsMS40NywxLjQ2LDEtMS43OUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDIyLjIzQTMuNjIsMy42MiwwLDAsMSwyMSwxNS4xNlYxOGEzLDMsMCwxLDEtNiwwVjEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYs''@;'; put 'put ''MTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDMzLjkzQzMzLjc5LDIxLjQ5LDMzLjI4LDIwLjA3LDMxLjU4LDE1LjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYu''@;'; put 'put ''ODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDVIMjZWMjdoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJN''@;'; put 'put ''MTMsOS45MiwxNyw2VjE4YTEsMSwwLDEsMCwyLDBWNmw0LDMuOTVhMSwxLDAsMCwwLC43MS4yOWwuMTEsMGE3LjQ2LDcuNDYsMCwwLDEtMS4yNS0zLjUyTDE4LDIuMTYsMTEuNjEsOC41QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiIGQ9Ik0zMC44NywxMy40NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1QTcuNDYsNy40NiwwLDAsMSwyNS41MSwxMkgyMXY2YTMsMywwLDEsMS02LDBWMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwy''@;'; put 'put ''LjI0LDIxLjQzLDIuMDcsMjJIMzMuOTNDMzMuNzcsMjEuNDMsMzMuMTUsMTkuNywzMC44NywxMy40NVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yLDI0djZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjI0Wm0yOCw1SDI2VjI3aDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29s''@;'; put 'put ''aWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAuODQsMTMuMzdBMS45NCwxLjk0LDAsMCwwLDI4LjkzLDEySDIxdjZhMywzLDAsMSwxLTYsMFYxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgzMy45M0MzMy43NywyMS40Mywz''@;'; put 'put ''My4xNCwxOS42OSwzMC44NCwxMy4zN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMyw5LjkyLDE3LDZWMThhMSwxLDAsMSwwLDIsMFY2bDQsMy45NUExLDEsMCwxLDAsMjQuMzgsOC41TDE4LDIuMTYsMTEuNjEsOC41''@;'; put 'put ''QTEsMSwwLDAsMCwxMyw5LjkyWiIvPlxuJyksbC5DbHJTaGFwZUJhY2t1cD0oMCxhLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgeD0iNiIgeT0iMjIiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgZD0iTTE4LDE5Ljg0bDQuNDctNC40NGgtLjIzYTMuNjcsMy42NywwLDAsMS0yLS42MUwxOSwxNlY0YTEsMSwwLDEsMC0yLDBWMTZsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0zMS41OCwxNS40SDI5LjQ2YzEsMi44NSwyLjMxLDYuMzcsMi41NCw3LjA4VjMwSDRWMjIuNDhDNC4yOCwyMS42NSw3LjA1LDE0LDcuMDUsMTRIOS41OGEzLDMsMCwwLDEtLjE0LTJINy4w''@;'; put 'put ''N2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMiwyMiwyLDIyLjEsMiwyMi4zM1YzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjIuMzNDMzQsMjIuMTIsMzQsMjIsMzEuNTgsMTUuNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiB4PSIyNiIgeT0iMjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4z''@;'; put 'put ''NUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0iTTMwLjg3''@;'; put 'put ''LDEzLjQ1YTcuNTUsNy41NSwwLDAsMS0uODcuMDUsNy40Niw3LjQ2LDAsMCwxLTMuMzUtLjgsMywzLDAsMCwxLS4yNCwxLjNoMi41NEMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0y''@;'; put 'put ''SDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIuMzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODcsMTMuNDVaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdodD0i''@;'; put 'put ''MiIvPjxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiXG4gICAgICAgICAgICAgICAgZD0iTTMwLjg0LDEzLjM3QTEuOTQsMS45NCwwLDAsMCwyOC45Mywx''@;'; put 'put ''MkgyNi41NWEzLDMsMCwwLDEtLjE0LDJoMi41NEMzMCwxNi45NCwzMS43MiwyMS42NSwzMiwyMi40OFYzMEg0VjIyLjQ4QzQuMjgsMjEuNjUsNy4wNSwxNCw3LjA1LDE0SDkuNThhMywzLDAsMCwxLS4xNC0ySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIsMjIsMiwyMi4xLDIsMjIu''@;'; put 'put ''MzNWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjIyLjMzQzM0LDIyLjEsMzQsMjIsMzAuODQsMTMuMzdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwx''@;'; put 'put ''LDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIGQ9Ik0xNi41OCwyMS4yNiwxMC4y''@;'; put 'put ''LDE0LjkxQTMsMywwLDAsMSw5LjQ0LDEySDcuMDdhMS45MiwxLjkyLDAsMCwwLTEuOSwxLjMyQzIuODYsMTkuNjgsMi4yNCwyMS40MywyLjA3LDIySDE3LjMzWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxl''@;'; put 'put ''cnRlZCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2Mt''@;'; put 'put ''LjE1LS41MS0uNjUtMS45My0yLjM1LTYuNkgyNS4zbC01Ljg5LDUuODZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIiBkPSJNMTgsMTkuODRsNC40Ny00LjQ0aC0uMjNhMy42NCwzLjY0LDAsMCwx''@;'; put 'put ''LTItLjYxTDE5LDE2VjRhMSwxLDAsMSwwLTIsMFYxNmwtNC0zLjk1YTEsMSwwLDAsMC0xLjQxLDEuNDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEtLWJhZGdlZCIgZD0iTTE4LDE5Ljg0bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMTYuNTgsMjEuMjYsMTAuMiwxNC45MUEzLDMsMCwwLDEsOS40NCwxMkg3LjA3YTEuOTIsMS45MiwwLDAsMC0xLjksMS4zMkMyLjg2LDE5LjY4LDIuMjQsMjEuNDMsMi4wNywyMkgxNy4zM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIiBkPSJNMiwyNHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYyNmg0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC00LS1iYWRnZWQiIGQ9Ik0xOC42NiwyMkgzMy45M2MtLjE3LS41Ny0uNzktMi4zLTMuMDYtOC41NWE3LjU1LDcuNTUsMCwwLDEtLjg3LjA1LDcuNDYsNy40NiwwLDAsMS0zLjM1LS44LDMsMywwLDAsMS0uODYsMi4yMWwtNi4zOCw2LjM1WiIvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDE5Ljg0''@;'; put 'put ''bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTIuMDhMMTksMTZWNGExLDEsMCwxLDAtMiwwVjE2bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOS40MSwyMS4yNmwtLjc0''@;'; put 'put ''Ljc0SDMzLjkzYy0uMTctLjU3LS43OS0yLjMxLTMuMDktOC42M0ExLjk0LDEuOTQsMCwwLDAsMjguOTMsMTJIMjYuNTVhMywzLDAsMCwxLS43NiwyLjkyWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE2LjU4LDIxLjI2''@;'; put 'put ''LDEwLjIsMTQuOTFBMywzLDAsMCwxLDkuNDQsMTJINy4wN2ExLjkyLDEuOTIsMCwwLDAtMS45LDEuMzJDMi44NiwxOS42OCwyLjI0LDIxLjQzLDIuMDcsMjJIMTcuMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiBkPSJNMiwy''@;'; put 'put ''NHY2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyNFptMjgsNEgyNlYyNmg0WiIvPlxuJyksbC5DbHJTaGFwZURldmljZXM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxM0gyNGEyLDIsMCww''@;'; put 'put ''LDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0yVjE1QTIsMiwwLDAsMCwzMiwxM1ptMCwyVjI2SDI0VjE1Wk0yNCwzMFYyNy42aDhWMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIwLDIy''@;'; put 'put ''SDRWNkgyOHY1aDJWNmEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsNlYyMmEyLDIsMCwwLDAsMiwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMCwyNkg5YTEsMSwwLDAsMCwwLDJIMjBaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyOEgyNFYxNVoiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yOCw0SDRBMiwyLDAsMCwwLDIsNlYyMmEyLDIsMCwwLDAsMiwyaDh2Mkg5LjMyQTEuMiwxLjIsMCwwLDAsOCwyN2ExLjIsMS4yLDAsMCwwLDEuMzIsMUgxOS45MnYtLjM3SDIwVjIySDRWNkgyOHY1aDJW''@;'; put 'put ''NkEyLDIsMCwwLDAsMjgsNFoiLz5cbicpLGwuQ2xyU2hhcGVLZXlib2FyZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwxOEg0VjEwSDMyWiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHg9IjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTEiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgeD0iMTUiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0''@;'; put 'put ''PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgeD0iMTkiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NiIgeD0iMjMiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMjciIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgeD0iNyIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiB4PSIxMSIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9''@;'; put 'put ''IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMCIgeD0iMTUiIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MTEiIHg9IjE5IiB5PSIxNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIiB4PSIyMyIgeT0iMTciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIgeD0iMjciIHk9IjE3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIHg9IjI3IiB5PSIyMiIgd2lkdGg9IjEuOTQi''@;'; put 'put ''IGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE1IiB4PSI3IiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTE2IiB4PSIxMS4xMyIgeT0iMjIiIHdpZHRoPSIxMy43NSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCww''@;'; put 'put ''LDAsMi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk0xOSwxM2gydjJIMTlabTAsNGgydjJIMTlabS00LTRoMnYySDE1Wm0wLDRoMnYySDE1Wm0tNC00aDJ2MkgxMVpNOSwyNEg3VjIySDlabTAtNUg3VjE3SDlabTAtNEg3VjEzSDlabTIsMmgydjJIMTFabTEzLjg4LDdIMTEuMTNWMjJIMjQuODhaTTI1''@;'; put 'put ''LDE5SDIzVjE3aDJabTAtNEgyM1YxM2gyWm0zLjk0LDlIMjdWMjJoMS45NFpNMjksMTlIMjdWMTdoMlptMC00SDI3VjEzaDJaIi8+XG4nKSxsLkNsclNoYXBlTW91c2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0xOCwzNEExMCwxMCwwLDAsMSw4LDI0VjEyYTEwLDEwLDAsMCwxLDIwLDBWMjRBMTAsMTAsMCwwLDEsMTgsMzRaTTE4LDRhOCw4LDAsMCwwLTgsOFYyNGE4LDgsMCwwLDAsMTYsMFYxMkE4LDgsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTVhMSwxLDAsMCwxLTEtMVYxMGExLDEsMCwwLDEsMiwwdjRBMSwxLDAsMCwxLDE4LDE1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTAsMTAsMCwwLDAs''@;'; put 'put ''OCwxMlYyNGExMCwxMCwwLDAsMCwyMCwwVjEyQTEwLDEwLDAsMCwwLDE4LDJabTEuMywxMS40NGExLjMsMS4zLDAsMCwxLTIuNiwwVjEwYTEuMywxLjMsMCwwLDEsMi42LDBaIi8+XG4nKSxsLkNsclNoYXBlRGFzaGJvYXJkPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUuMTgsMTIuMzJsLTUuOTEsNS44MWEzLDMsMCwxLDAsMS40MSwxLjQybDUuOTItNS44MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDQu''@;'; put 'put ''MjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMxLjRsLjMuMzVIMzAuM2wuMy0uMzVBMTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVptMTEuMzQsMjUuNUg2LjY2YTE0LjQzLDE0LjQzLDAsMCwxLTMuMTEtNy44NEg3di0ySDMuNTVBMTQuNDEsMTQuNDEsMCwwLDEsNywxMS4yOWwyLjQ1LDIuNDUs''@;'; put 'put ''MS40MS0xLjQxTDguNDMsOS44N0ExNC40MSwxNC40MSwwLDAsMSwxNyw2LjI5djMuNWgyVjYuM2ExNC40NywxNC40NywwLDAsMSwxMy40LDEzLjYxSDI4LjkydjJoMy41M0ExNC40MywxNC40MywwLDAsMSwyOS4zNCwyOS43NVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNS44NSwxOC42OWEzLDMsMCwxLDAsNC44My44NWw1LjkyLTUuODEtMS40MS0xLjQxLTUuOTEsNS44MUEzLDMsMCwwLDAsMTUuODUsMTguNjlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiBkPSJNMzIuNTgsMTNhNy40NSw3LjQ1LDAsMCwxLTIuMDYuNDQsMTQuNCwxNC40LDAsMCwxLDEuOTMsNi40M0gyOC45MnYyaDMuNTNhMTQuNDMsMTQuNDMsMCwwLDEtMy4xMSw3Ljg0SDYuNjZh''@;'; put 'put ''MTQuNDMsMTQuNDMsMCwwLDEtMy4xMS03Ljg0SDd2LTJIMy41NUExNC40MSwxNC40MSwwLDAsMSw3LDExLjI5bDIuNDUsMi40NSwxLjQxLTEuNDFMOC40Myw5Ljg3QTE0LjQxLDE0LjQxLDAsMCwxLDE3LDYuMjl2My41aDJWNi4zQTE0LjQxLDE0LjQxLDAsMCwxLDIyLjU4LDdhNy41Miw3LjUy''@;'; put 'put ''LDAsMCwxLS4wOC0xLDcuNTIsNy41MiwwLDAsMSwuMDktMS4wOUExNi40OSwxNi40OSwwLDAsMCw1LjQsMzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDQuMjVBMTYuNDksMTYuNDksMCwwLDAsNS40LDMx''@;'; put 'put ''LjRsLjMuMzVIMzAuM2wuMy0uMzVBMTYuNDksMTYuNDksMCwwLDAsMTgsNC4yNVptOC42LDkuNDgtNS45Miw1LjgxYTMsMywwLDEsMS0xLjQxLTEuNDJsNS45MS01LjgxWm0tMjMsNi4xN0g3djJIMy41NmMwLS4zOS0uMDUtLjc3LS4wNS0xLjE3UzMuNTMsMjAuMTgsMy41NSwxOS45Wm00Ljg4''@;'; put 'put ''LTEwLDIuNDYsMi40Nkw5LjQ3LDEzLjc0LDcsMTEuMjlBMTQuNTcsMTQuNTcsMCwwLDEsOC40Myw5Ljg3Wk0xOSw5Ljc5SDE3VjYuMjljLjMyLDAsLjYzLDAsMSwwcy43LDAsMSwuMDVaTTMyLjQ5LDIwLjc0YzAsLjM5LDAsLjc5LS4wNSwxLjE3SDI4Ljkydi0yaDMuNTNDMzIuNDcsMjAuMTgs''@;'; put 'put ''MzIuNDksMjAuNDYsMzIuNDksMjAuNzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0zMi41OCwxM2E3LjQ2LDcuNDYsMCwwLDEtMTAtOC4xMkExNi40OSwxNi40OSwwLDAsMCw1LjQs''@;'; put 'put ''MzEuNGwuMy4zNUgzMC4zbC4zLS4zNWExNi40NSwxNi40NSwwLDAsMCwyLTE4LjM2Wk0xNyw2LjI5Yy4zMiwwLC42MywwLDEsMHMuNywwLDEsLjA1djMuNUgxN1pNNywyMS45MUgzLjU2YzAtLjM5LS4wNS0uNzctLjA1LTEuMTdzMC0uNTYsMC0uODNIN1ptMi41MS04LjE2TDcsMTEuMjlBMTQu''@;'; put 'put ''NTcsMTQuNTcsMCwwLDEsOC40Myw5Ljg3bDIuNDYsMi40NlptMTAuNjIsOS4xOWEzLDMsMCwxLDEtLjgyLTQuODFsNS45MS01LjgxLDEuNDEsMS40MS01LjkyLDUuODFBMywzLDAsMCwxLDIwLjA5LDIyLjkzWm0xMi4zNS0xSDI4Ljkydi0yaDMuNTNjMCwuMjgsMCwuNTUsMCwuODNTMzIuNDcs''@;'; put 'put ''MjEuNTIsMzIuNDQsMjEuOTFaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuJyksbC5DbHJTaGFwZUhvc3Q9KDAsYS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyNC4zYTIuNDgsMi40OCwwLDEsMCwyLjQ4LDIuNDdBMi40OCwyLjQ4LDAsMCwwLDE4LDI0LjNabTAsMy42YTEuMTMsMS4xMywwLDEsMSwxLjEzLTEuMTJBMS4xMywxLjEzLDAs''@;'; put 'put ''MCwxLDE4LDI3LjlaIi8+PHJlY3QgeD0iMTMuNSIgeT0iMjAuNyIgd2lkdGg9IjkiIGhlaWdodD0iMS40NCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjUuNjUsMy42SDEwLjM1QTEuMzUsMS4zNSwwLDAs''@;'; put 'put ''MCw5LDQuOTVWMzIuNEgyN1Y0Ljk1QTEuMzUsMS4zNSwwLDAsMCwyNS42NSwzLjZabS0uNDUsMjdIMTAuOFY1LjRIMjUuMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTIuNiIgeT0iNy4yIiB3aWR0aD0i''@;'; put 'put ''MTAuOCIgaGVpZ2h0PSIxLjQ0Ii8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjEyLjYiIHk9IjEwLjgiIHdpZHRoPSIxMC44IiBoZWlnaHQ9IjEuNDQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4yLDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4y''@;'; put 'put ''LTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwyNy4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgeD0iMTMiIHk9IjIxIiB3''@;'; put 'put ''aWR0aD0iMTAiIGhlaWdodD0iMS42Ii8+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIHBvaW50cz0iMjEuMyw2IDEyLDYgMTIsNy42IDIwLjQsNy42Ii8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIGQ9Ik0xMiwxMS42aDYuNmMwLTAuNiwwLjItMS4xLDAuNC0xLjZoLTdWMTEuNnoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIgZD0iTTI2LDE1LjRWMzJIMTBWNGgxMi41bDEuMS0ySDkuNUM4LjcsMiw4LDIuNyw4LDMuNVYzNGgyMFYxNS40SDI2eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuOSwxLjFMMjEuMSwxMWMtMC40LDAuNi0wLjIsMS40LDAuMywxLjhjMC4yLDAuMiwwLjUsMC4yLDAuOCwwLjJoMTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01Ljct''@;'; put 'put ''OS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgZD0iTTE1LjIsMjcuOGMwLDEuNSwxLjIsMi44''@;'; put 'put ''LDIuOCwyLjhzMi44LTEuMiwyLjgtMi44UzE5LjUsMjUsMTgsMjVTMTUuMiwyNi4yLDE1LjIsMjcuOHogTTE5LjIsMjcuOGMwLDAuNy0wLjYsMS4yLTEuMiwxLjJzLTEuMi0wLjYtMS4yLTEuMnMwLjYtMS4yLDEuMi0xLjJTMTkuMiwyNy4xLDE5LjIsMjcuOHoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIHg9IjEzIiB5PSIyMSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgZD0iTTI0LDEwLjVjLTAuMS0wLjItMC4yLTAuMy0wLjMtMC41SDEydjEuNmgxMlYxMC41eiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgZD0i''@;'; put 'put ''TTEyLDZ2MS42aDEwLjdjLTAuMS0wLjUtMC4yLTEuMS0wLjItMS42SDEyeiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCIgZD0iTTI2LDEyLjNWMzJIMTBWNGgxMi44YzAuMi0wLjcsMC41''@;'; put 'put ''LTEuNCwwLjktMkg5LjVDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMTMuMkMyNy4zLDEzLDI2LjYsMTIuNywyNiwxMi4zeiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIGNsci1pLWJh''@;'; put 'put ''ZGdlIiBjeD0iMzAiIGN5PSI2IiByPSI1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTI2LjUsMmgtMTdDOC43LDIsOCwyLjcsOCwzLjVWMzRoMjBWMy41QzI4LDIuNywyNy4zLDIsMjYuNSwyeiBNMTgsMzAuNWMt''@;'; put 'put ''MS41LDAtMi44LTEuMi0yLjgtMi44UzE2LjUsMjUsMTgsMjVzMi44LDEuMiwyLjgsMi44UzE5LjUsMzAuNSwxOCwzMC41eiBNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiBNMjQsMTEuNkgxMlYxMGgxMlYxMS42eiBNMjQsNy42SDEyVjZoMTJWNy42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjE4IiBjeT0iMjcuOCIgcj0iMS4yIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTIyLjIsMTUuM2Mt''@;'; put 'put ''MiwwLTMuNy0xLjYtMy43LTMuN0gxMlYxMGg2LjljMC0wLjEsMC4xLTAuMiwwLjEtMC4ybDEuMi0yLjJIMTJWNmg5LjJsMi4zLTRoLTE0QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjE1LjNIMjIuMnogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwx''@;'; put 'put ''LjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXogTTIzLDIyLjZIMTNWMjFoMTBWMjIuNnoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi45LDFsLTUuNyw5LjljLTAuMywwLjYtMC4xLDEuNCwwLjUsMS43YzAuMiwwLjEsMC40LDAuMiwwLjYsMC4yaDEx''@;'; put 'put ''LjRjMC43LDAsMS4zLTAuNiwxLjMtMS4zYzAtMC4yLTAuMS0wLjQtMC4yLTAuNkwyOS4xLDFjLTAuNC0wLjYtMS4xLTAuOC0xLjgtMC41QzI3LjEsMC43LDI3LDAuOCwyNi45LDF6Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yNCwxMC4zdjEuMkgxMlYxMGgxMS44Yy0wLjUtMC43LTAuOC0xLjUtMS0yLjRIMTJWNmgxMC41YzAsMCwwLTAuMSwwLTAuMWMwLTEuNCwwLjQtMi43LDEuMS0zLjlIOS41QzguNywyLDgsMi43LDgsMy41VjM0aDIwVjEzLjFDMjYuNCwxMi42LDI1LDEx''@;'; put 'put ''LjcsMjQsMTAuM3ogTTE4LDMwLjVjLTEuNSwwLTIuOC0xLjItMi44LTIuOFMxNi41LDI1LDE4LDI1czIuOCwxLjIsMi44LDIuOFMxOS41LDMwLjUsMTgsMzAuNXpNMjMsMjIuNkgxM1YyMWgxMFYyMi42eiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiIGN4PSIxOCIgY3k9IjI3LjgiIHI9IjEuMiIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9''@;'; put 'put ''IjUuOSIgcj0iNSIvPlxuJyksbC5DbHJTaGFwZVN0b3JhZ2U9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMyw2LjY5aDBjLS4xOC0zLjQxLTkuNDctNC4zMy0xNS00LjMzUzMsMy4yOSwzLDYuNzhWMjkuMzdj''@;'; put 'put ''MCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00LjQzVjYuNzhzMCwwLDAsMFMzMyw2LjcsMzMsNi42OVptLTIsNy41NmMtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMTUuMzR2Mi4wOEE0My4zMiw0My4zMiwwLDAsMCwxOCwxOC43YzQsMCw5''@;'; put 'put ''LjkzLS40OCwxMy0ydjUuMTdjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDIyLjkyVjI1YTQzLjMyLDQzLjMyLDAsMCwwLDExLDEuMjhjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xYy0uMzUuODYtNS4wOCwyLjQ1LTEzLDIuNDVTNS4zLDMwLjIsNSwyOS4zN1Y2''@;'; put 'put ''LjgyQzUuMyw2LDEwLDQuMzYsMTgsNC4zNmM3Ljc3LDAsMTIuNDYsMS41MywxMywyLjM3LS41Mi44Ny01LjIxLDIuMzktMTMsMi4zOUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2M0LDAsOS45My0uNDgsMTMtMloiLz5cbiAgICAgICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgZD0iTTE5LjUxLDkuMDksMTgsOS4xMUEzNy42LDM3LjYsMCwwLDEsNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yN2guNjFBMy42NiwzLjY2LDAs''@;'; put 'put ''MCwxLDE5LDkuODlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIGQ9Ik0yOC44MywxNS40QTM4LjM3LDM4LjM3LDAsMCwxLDE4LDE2LjcsMzcuNDUsMzcuNDUsMCwwLDEsNywxNS4z''@;'; put 'put ''NHYyLjA4QTQzLjMzLDQzLjMzLDAsMCwwLDE4LDE4LjdjNCwwLDkuOTMtLjQ4LDEzLTJ2NS4xN2MtLjMzLjg2LTUuMDYsMi40NS0xMywyLjQ1QTM3LjQ1LDM3LjQ1LDAsMCwxLDcsMjIuOTJWMjVhNDMuMzMsNDMuMzMsMCwwLDAsMTEsMS4yOGM0LDAsOS45My0uNDgsMTMtMnY1LjFjLS4zNS44''@;'; put 'put ''Ni01LjA4LDIuNDUtMTMsMi40NVM1LjMsMzAuMiw1LDI5LjM3VjYuODJDNS4zLDYsMTAsNC4zNiwxOCw0LjM2YzEuNSwwLDIuODkuMDYsNC4xNS4xNmwxLjEtMS45Yy0xLjg2LS4xOC0zLjctLjI2LTUuMjUtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4zN2MwLDMuNDksOS40Myw0LjQz''@;'; put 'put ''LDE1LDQuNDNzMTUtLjkzLDE1LTQuNDN2LTE0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0IiBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''IiBkPSJNNyw3Ljc2VjkuODVhNDMuNTMsNDMuNTMsMCwwLDAsMTEsMS4yNyw1NC44Miw1NC44MiwwLDAsMCw2LjItLjM2LDcuNSw3LjUsMCwwLDEtMS4xMy0xLjg4Yy0xLjUuMTUtMy4yLjI0LTUuMDcuMjRBMzcuNiwzNy42LDAsMCwxLDcsNy43NloiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0zMSwxMy40M3YuODJjLS4zMy44Ni01LjA2LDIuNDUtMTMsMi40NUEzNy40NSwzNy40NSwwLDAsMSw3LDE1LjM0djIuMDhBNDMuMzMsNDMuMzMsMCwwLDAsMTgsMTguN2M0LDAs''@;'; put 'put ''OS45My0uNDgsMTMtMnY1LjE3Yy0uMzMuODYtNS4wNiwyLjQ1LTEzLDIuNDVBMzcuNDUsMzcuNDUsMCwwLDEsNywyMi45MlYyNWE0My4zMyw0My4zMywwLDAsMCwxMSwxLjI4YzQsMCw5LjkzLS40OCwxMy0ydjUuMWMtLjM1Ljg2LTUuMDgsMi40NS0xMywyLjQ1UzUuMywzMC4yLDUsMjkuMzdW''@;'; put 'put ''Ni44MkM1LjMsNiwxMCw0LjM2LDE4LDQuMzZjMS43LDAsMy4yNS4wOCw0LjY0LjJhNy40NCw3LjQ0LDAsMCwxLC42Ny0xLjk0Yy0xLjg4LS4xOC0zLjc1LS4yNi01LjMxLS4yNi01LjU3LDAtMTUsLjkzLTE1LDQuNDNWMjkuMzdjMCwzLjQ5LDkuNDMsNC40MywxNSw0LjQzczE1LS45MywxNS00''@;'; put 'put ''LjQzVjEyLjg3QTcuNDUsNy40NSwwLDAsMSwzMSwxMy40M1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNy45MSwxOC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0VjguNTljLS40MywyLjItNywzLjk0LTE1LjA5LDMuOTRBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40LDM5''@;'; put 'put ''LjQsMCwwLDAsMTEuNjYsMS41MUMyNiwxMC41MywzMi41Miw4Ljc5LDMzLDYuNjFoMEMzMi44LDMuMiwyMy41MiwyLjI4LDE4LDIuMjhTMywzLjIxLDMsNi43MVYyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQuMDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcu''@;'; put 'put ''OTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAs''@;'; put 'put ''MCwxNy45MSwxOC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiBkPSJNMTcuOTEsMjAuMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTguNzd2LTJhMzkuNCwzOS40LDAsMCwwLDExLjY2''@;'; put 'put ''LDEuNTFjNi45LDAsMTIuNy0xLjI3LDE0LjUxLTNIMjIuMjNhMy42NywzLjY3LDAsMCwxLTMuNTUtMi43NWgtLjc3QTM5LjQsMzkuNCwwLDAsMSw2LjI1LDExVjlhMzkuNCwzOS40LDAsMCwwLDExLjY2LDEuNTFoLjgyQTMuNjQsMy42NCwwLDAsMSwxOSw5Ljc1bDQuMTctNy4yMmMtMS44NS0u''@;'; put 'put ''MTgtMy42OC0uMjUtNS4yMS0uMjUtNS41NywwLTE1LC45My0xNSw0LjQzVjI5LjI5YzAsMy40OSw5LjQzLDQuNDMsMTUsNC40M3MxNS0uOTMsMTUtNC40M1YyNC4wOUMzMi41NywyNi4yOCwyNiwyOCwxNy45MSwyOEEzOS40LDM5LjQsMCwwLDEsNi4yNSwyNi41MnYtMkEzOS40LDM5LjQsMCww''@;'; put 'put ''LDAsMTcuOTEsMjZDMjYsMjYsMzIuNTcsMjQuMjgsMzMsMjIuMDlWMTYuMzRDMzIuNTcsMTguNTMsMjYsMjAuMjgsMTcuOTEsMjAuMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1hbGVydCIgZD0iTTI2Ljg1LDFsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4xLDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDFBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xNy45MSwxOC4yOGM4LjA4LDAsMTQuNjYtMS43NCwxNS4wOS0zLjk0di0xLjZhNy40Nyw3LjQ3LDAsMCwxLTcuMzgtLjgsNDguMyw0OC4zLDAsMCwxLTcuNzEuNTlBMzkuNCwzOS40LDAsMCwxLDYuMjUsMTFWOWEzOS40''@;'; put 'put ''LDM5LjQsMCwwLDAsMTEuNjYsMS41MSw1MSw1MSwwLDAsMCw2LS4zNCw3LjQ2LDcuNDYsMCwwLDEtLjU5LTcuNjVjLTEuODctLjE4LTMuNzMtLjI2LTUuMjgtLjI2LTUuNTcsMC0xNSwuOTMtMTUsNC40M1YyOS4yOWMwLDMuNDksOS40Myw0LjQzLDE1LDQuNDNzMTUtLjkzLDE1LTQuNDNWMjQu''@;'; put 'put ''MDlDMzIuNTcsMjYuMjgsMjYsMjgsMTcuOTEsMjhBMzkuNCwzOS40LDAsMCwxLDYuMjUsMjYuNTJ2LTJBMzkuNCwzOS40LDAsMCwwLDE3LjkxLDI2QzI2LDI2LDMyLjU3LDI0LjI4LDMzLDIyLjA5VjE2LjM0Yy0uNDMsMi4yLTcsMy45NC0xNS4wOSwzLjk0QTM5LjQsMzkuNCwwLDAsMSw2LjI1''@;'; put 'put ''LDE4Ljc3di0yQTM5LjQsMzkuNCwwLDAsMCwxNy45MSwxOC4yOFoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1Ljg2IiByPSI1Ii8+XG4nKSxs''@;'; put 'put ''LkNsclNoYXBlQ2x1c3Rlcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMzYsOEgyNy41djJIMzFWMzBIMjcuNXYySDMzVjkuNjdBMS42NSwxLjY1LDAsMCwwLDMxLjM2LDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz48ZWxsaXBzZSBjeD0iMTguMDEiIGN5PSIyNS45OSIgcng9IjEuOCIgcnk9IjEuNzkiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0yNCwzMEgxMlY2SDI0WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzLjUiIHk9IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDEwSDgu''@;'; put 'put ''NVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1YzMkg4LjVWMzBINVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDkuODlsLjM5LS42OEgxMy41djEuNmg1LjE3QTMuNjUsMy42NSwwLDAsMSwxOSw5Ljg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCwzMEgxMlY2aDkuMjlsMS4xNS0ySDExLjY4QTEuNjgsMS42OCwwLDAsMCwxMCw1LjY4VjMySDI2VjE1LjRIMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNC0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMSAxNS40IDMxIDMwIDI3LjUgMzAgMjcuNSAzMiAzMyAzMiAzMyAxNS40IDMxIDE1LjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUsMTBIOC41VjhINC42NEExLjY1LDEuNjUsMCwwLDAsMyw5LjY3VjMySDguNVYzMEg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+PGVsbGlwc2UgY3g9IjE4LjAxIiBjeT0iMjUuOTkiIHJ4PSIxLjgiIHJ5PSIxLjc5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzLjUiIHk9''@;'; put 'put ''IjkuMjEiIHdpZHRoPSI5IiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQsMTAuNDlWMzBIMTJWNkgyMi41YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMS42OEEx''@;'; put 'put ''LjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjUzLDcuNTMsMCwwLDEsMjQsMTAuNDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMSwxMy40M1YzMEgyNy41djJI''@;'; put 'put ''MzNWMTIuODdBNy40NSw3LjQ1LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjM2LDhIMjcuNVYzMkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjQuMzIsNEgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42''@;'; put 'put ''OFYzMkgyNlY1LjY4QTEuNjgsMS42OCwwLDAsMCwyNC4zMiw0Wk0xOCwyNy43OUExLjc5LDEuNzksMCwxLDEsMTkuODEsMjYsMS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTMsOS42N1YzMkg4LjVWOEg0LjY0QTEuNjUsMS42NSwwLDAsMCwzLDkuNjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy41IiB5PSIxNS40IiB3aWR0aD0iNS41''@;'; put 'put ''IiBoZWlnaHQ9IjE2LjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NmEzLjY4LDMuNjgsMCwwLDEtLjMxLTNIMTNWOWg2LjU2bDIuODktNUgxMS42OEExLjY4LDEuNjgsMCww''@;'; put 'put ''LDAsMTAsNS42OFYzMkgyNlYxNS40SDIyLjIzQTMuNjksMy42OSwwLDAsMSwxOSwxMy41NlpNMTgsMjcuNzlBMS43OSwxLjc5LDAsMSwxLDE5LjgxLDI2LDEuOCwxLjgsMCwwLDEsMTgsMjcuNzlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVy''@;'; put 'put ''dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMyw5LjY3VjMySDguNVY4SDQuNjRBMS42NSwxLjY1LDAsMCwwLDMsOS42N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgxMS42OEExLjY4LDEuNjgsMCwwLDAsMTAsNS42OFYzMkgyNlYxMi4zNEE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2Wk0xOCwyNy43OUExLjc5LDEuNzksMCwxLDEsMTkuODEsMjYs''@;'; put 'put ''MS44LDEuOCwwLDAsMSwxOCwyNy43OVpNMjMsMTAuNkgxM1Y5SDIzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDcsNy40NywwLDAsMS0yLjUtLjQ0VjMySDMzVjEyLjg3''@;'; put 'put ''QTcuNDcsNy40NywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUFwcGxpY2F0aW9ucz0oMCxhLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDggMTUgOCAxNSAxMCAyMSAxMCAyMSA0IDE5IDQgMTkgOCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgNCAzMCA4''@;'; put 'put ''IDI2IDggMjYgMTAgMzIgMTAgMzIgNCAzMCA0IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9p''@;'; put 'put ''bnRzPSIzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSAzMCAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAzMiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjggOCA0IDggNCAxMCAxMCAxMCAxMCA0''@;'; put 'put ''IDggNCA4IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSA4IDE1IDggMTUgMTAgMjEgMTAgMjEgNCAxOSA0IDE5IDgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAxOSAxNSAxOSAxNSAyMSAyMSAyMSAyMSAxNSAxOSAxNSAxOSAxOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjMw''@;'; put 'put ''IDE5IDI2IDE5IDI2IDIxIDMyIDIxIDMyIDE1IDMwIDE1IDMwIDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4''@;'; put 'put ''IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMTkgMzAgMTUgMzAgMTUgMzIgMjEgMzIgMjEgMjYgMTkgMjYgMTkgMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAzMCAyNiAzMCAyNiAzMiAzMiAzMiAzMiAyNiAzMCAyNiAzMCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQgMTAgMTAg''@;'; put 'put ''MTAgMTAgNCA4IDQgOCA4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE5IDQgMTkgNCAyMSAxMCAyMSAxMCAxNSA4IDE1IDggMTkiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE5IDE5IDE1IDE5IDE1IDIxIDIxIDIxIDIxIDE1IDE5IDE1IDE5IDE5IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIzMCAxNSAzMCAxOSAyNiAxOSAyNiAyMSAzMiAyMSAzMiAxNSAzMCAxNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwb2x5Z29uIHBvaW50cz0iOCAzMCA0IDMwIDQgMzIgMTAgMzIgMTAgMjYgOCAyNiA4IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxOSAzMCAxNSAzMCAxNSAz''@;'; put 'put ''MiAyMSAzMiAyMSAyNiAxOSAyNiAxOSAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMzAgMzAgMjYgMzAgMjYgMzIgMzIgMzIgMzIgMjYgMzAgMjYgMzAgMzAiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksOEgxNXYyaDRMMTksOS44OSwyMSw2LjVWNEgxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC04LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtOS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI2IiB5PSI0''@;'; put 'put ''IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC03Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTgiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxyZWN0IHg9IjI2IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjQiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNiIgeT0iMjYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTctLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxMGg0TDE5LDkuODksMjEsNi41VjRIMTVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC04LS1hbGVydGVkIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC05LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iNCIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI0IiB5PSIyNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE1IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHJlY3QgeD0iMTUiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTUiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjYiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTctLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHJlY3QgeD0iMjYiIHk9IjI2IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTktLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlQnVpbGRpbmc9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5Ljg4LDNINi4xMkEyLjEyLDIuMTIsMCwwLDAsNCw1LjEyVjMzSDIyVjUuMTJBMi4xMiwyLjEyLDAs''@;'; put 'put ''MCwwLDE5Ljg4LDNaTTIwLDMxSDE3VjI4SDl2M0g2VjUuMTJBLjEyLjEyLDAsMCwxLDYuMTIsNUgxOS44OGEuMTIuMTIsMCwwLDEsLjEyLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4''@;'; put 'put ''PSI4IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxyZWN0IHg9IjgiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdl''@;'; put 'put ''ZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVp''@;'; put 'put ''Z2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMTAtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIy''@;'; put 'put ''MyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxyZWN0IHg9IjI3IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xNi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1iYWRn''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xOS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsMTMuNDNWMzFIMjN2MkgzM1YxMi44N0E3LjQ1LDcuNDUsMCwwLDEsMzEsMTMuNDNaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yMC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTIxLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMTMiIHdp''@;'; put 'put ''ZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxy''@;'; put 'put ''ZWN0IHg9IjEyIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWFsZXJ0''@;'; put 'put ''ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNiIgeT0iMjMiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE0LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVj''@;'; put 'put ''dCB4PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTYtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMCwzMUgxN1YyOEg5djNINlY1LjEyQS4xMi4xMiwwLDAsMSw2LjEyLDVIMTkuODhhLjEyLjEyLDAsMCwxLC4xMi4xMlY4LjI0bDItMy40MUEyLjEyLDIu''@;'; put 'put ''MTIsMCwwLDAsMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIMjJWMTUuMzhhMy42OCwzLjY4LDAsMCwxLTItLjc0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTE3LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdv''@;'; put 'put ''biBwb2ludHM9IjMxIDE1LjQgMzEgMzEgMjMgMzEgMjMgMzMgMzMgMzMgMzMgMTUuNCAzMSAxNS40IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTgtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDEx''@;'; put 'put ''QTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xOS0tYWxlcnRlZCBjbHItaS1h''@;'; put 'put ''bGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDhIMjJWMzNIMzNWMTBBMiwyLDAsMCwwLDMxLDhaTTI2LDI1SDI0VjIzaDJabTAtNUgyNFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMlptMC01SDI4VjEzaDJaIiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVptMC01''@;'; put 'put ''SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMTcuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIOVYzMGg2djNoNVYxNC42NGEzLjY3LDMuNjcsMCwwLDEtMS00Ljc2bDEtMS42NVY1LjEyQTIuMTIsMi4xMiwwLDAsMCwxNy44OCwzWk05LDI1SDdWMjNIOVptMC01SDdWMThIOVptMC01SDdWMTNIOVpt''@;'; put 'put ''MC01SDdWOEg5Wm00LDE1SDExVjIzaDJabTAtNUgxMVYxOGgyWm0wLTVIMTFWMTNoMlptMC01SDExVjhoMlptNCwxNUgxNVYyM2gyWm0wLTVIMTVWMThoMlptMC01SDE1VjEzaDJabTAtNUgxNVY4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1h''@;'; put 'put ''bGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNGwtLjIzLDBWMzNIMzNWMTUuNFpNMjYsMjVIMjRWMjNoMlptMC01SDI0VjE4aDJabTQsNUgyOFYyM2gyWm0wLTVIMjhWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTIt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNy44OCwzSDYuMTJBMi4xMiwyLjEyLDAsMCwwLDQsNS4xMlYzM0g5VjMwaDZ2M2g1VjUuMTJBMi4xMiwyLjEyLDAsMCwwLDE3Ljg4LDNaTTksMjVI''@;'; put 'put ''N1YyM0g5Wm0wLTVIN1YxOEg5Wm0wLTVIN1YxM0g5Wm0wLTVIN1Y4SDlabTQsMTVIMTFWMjNoMlptMC01SDExVjE4aDJabTAtNUgxMVYxM2gyWm0wLTVIMTFWOGgyWm00LDE1SDE1VjIzaDJabTAtNUgxNVYxOGgyWm0wLTVIMTVWMTNoMlptMC01SDE1VjhoMloiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNVYxNUgyOFYxMy4yMkE3LjUsNy41LDAsMCwxLDIyLjc4LDhIMjJWMzNIMzNWMTIuODdBNy40Nyw3LjQ3LDAsMCwxLDMwLDEzLjVaTTI2LDI1SDI0VjIzaDJabTAtNUgy''@;'; put 'put ''NFYxOGgyWm0wLTVIMjRWMTNoMlptNCwxMEgyOFYyM2gyWm0wLTVIMjhWMThoMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEsOEgyM3YyaDhWMzFIMjN2MkgzM1YxMEEyLDIsMCwwLDAsMzEsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMTkuODgsM0g2LjEyQTIuMTIsMi4xMiwwLDAsMCw0LDUuMTJWMzNIMjJWNS4xMkEyLjEyLDIuMTIsMCwwLDAsMTkuODgsM1pNMjAsMzFIMTdWMjhIOXYzSDZWNS4xMkEuMTIuMTIsMCwwLDEsNi4xMiw1SDE5Ljg4YS4xMi4xMiwwLDAsMSwuMTIuMTJaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEy''@;'; put 'put ''IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC01Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjgiIHk9''@;'; put 'put ''IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTIiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MTAiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE2IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSIyMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEyIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMyIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYi''@;'; put 'put ''IHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTE1Ii8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xNiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjE4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTciLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE4Ii8+XG4gICAgICAgICAgICA8cmVjdCB4''@;'; put 'put ''PSIyMyIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOSIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjciIHk9IjIzIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMjAiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUNQVT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuMDgsMjMuMDdoLTExdjEuNUgyMy44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxMS4zM2gtMS41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDE4LjE1YS44LjgsMCwxLDAsMC0xLjZIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFY4LjFBMi4xLDIuMSwwLDAsMCwyNy45LDZIMjYuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSww''@;'; put 'put ''LTEuNiwwVjZoLTUuNFYzLjhhLjguOCwwLDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4x''@;'; put 'put ''LDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40Wk0yOCwyNy45YS4xLjEs''@;'; put 'put ''MCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4LjEsOEgyNy45YS4xLjEsMCwwLDEsLjEuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMDYsMjQuNTdIMjMuODNhLjc1''@;'; put 'put ''Ljc1LDAsMCwwLC43NS0uNzVWMTEuMzNoLTEuNVYyMy4wN2gtMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZI''@;'; put 'put ''MzBWMTMuNWE3LjQ5LDcuNDksMCwwLDEtMi0uMjhWMjcuOWEuMS4xLDAsMCwxLS4xLjFIOC4xYS4xLjEsMCwwLDEtLjEtLjFWOC4xQS4xLjEsMCwwLDEsOC4xLDhIMjIuNzhhNy40OSw3LjQ5LDAsMCwxLS4yOC0ySDE5LjM1VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZoLTUuNFYzLjhhLjguOCww''@;'; put 'put ''LDEsMC0xLjYsMFY2SDguMUEyLjEsMi4xLDAsMCwwLDYsOC4xVjkuNTVIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINnY1LjRIMy44YS44LjgsMCwxLDAsMCwxLjZINlYyNy45QTIuMSwyLjEsMCwwLDAsOC4xLDMwaDIuNjV2Mi4yYS44LjgsMCwxLDAs''@;'; put 'put ''MS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMEgyNy45QTIuMSwyLjEsMCwwLDAsMzAsMjcuOVYyNS4xNWgyLjJhLjguOCwwLDEsMCwwLTEuNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi4yLDIzLjU1''@;'; put 'put ''SDMwdi01LjRoMi4yYS44LjgsMCwxLDAsMC0xLjZIMzBWMTUuNEgyOFYyNy45YS4xLjEsMCwwLDEtLjEuMUg4LjFhLjEuMSwwLDAsMS0uMS0uMVY4LjFBLjEuMSwwLDAsMSw4LjEsOGgxMmwxLjE1LTJIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEu''@;'; put 'put ''NiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYz''@;'; put 'put ''MGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4wNiwyNC41N0gyMy44M2EuNzUuNzUsMCwwLDAsLjc1LS43NVYxNS40aC0xLjV2Ny42N2gtMTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMiwyMy41NUgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjE1LjRIMjV2OC40MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTUuNGgtLjc3QTMu''@;'; put 'put ''NjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTkuMzVWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4xQTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2''@;'; put 'put ''djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45''@;'; put 'put ''VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMjMu''@;'; put 'put ''NTVIMzB2LTUuNGgyLjJhLjguOCwwLDEsMCwwLTEuNkgzMFYxMy41YTcuNDYsNy40NiwwLDAsMS01LTEuOTJWMjMuODFBMS4xOCwxLjE4LDAsMCwxLDI0LDI1SDEzVjIzSDIzVjExaDEuNDJBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkgxOS4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRW''@;'; put 'put ''My44YS44LjgsMCwxLDAtMS42LDBWNkg4LjFBMi4xLDIuMSwwLDAsMCw2LDguMVY5LjU1SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZ2NS40SDMuOGEuOC44LDAsMSwwLDAsMS42SDZWMjcuOUEyLjEsMi4xLDAsMCwwLDguMSwzMGgyLjY1djIuMmEu''@;'; put 'put ''OC44LDAsMSwwLDEuNiwwVjMwaDUuNHYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4yYS44LjgsMCwxLDAsMS42LDBWMzBIMjcuOUEyLjEsMi4xLDAsMCwwLDMwLDI3LjlWMjUuMTVoMi4yYS44LjgsMCwxLDAsMC0xLjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjIsMTgu''@;'; put 'put ''MTVhLjguOCwwLDEsMCwwLTEuNkgzMHYtNS40aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwVjguMUEyLjEsMi4xLDAsMCwwLDI3LjksNkgyNi4zNVYzLjhhLjguOCwwLDEsMC0xLjYsMFY2aC01LjRWMy44YS44LjgsMCwxLDAtMS42LDBWNmgtNS40VjMuOGEuOC44LDAsMSwwLTEuNiwwVjZIOC4x''@;'; put 'put ''QTIuMSwyLjEsMCwwLDAsNiw4LjFWOS41NUgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2djUuNEgzLjhhLjguOCwwLDEsMCwwLDEuNkg2VjI3LjlBMi4xLDIuMSwwLDAsMCw4LjEsMzBoMi42NXYyLjJhLjguOCwwLDEsMCwxLjYsMFYzMGg1LjR2Mi4y''@;'; put 'put ''YS44LjgsMCwxLDAsMS42LDBWMzBoNS40djIuMmEuOC44LDAsMSwwLDEuNiwwVjMwSDI3LjlBMi4xLDIuMSwwLDAsMCwzMCwyNy45VjI1LjE1aDIuMmEuOC44LDAsMSwwLDAtMS42SDMwdi01LjRaTTI1LDIzLjgxQTEuMTgsMS4xOCwwLDAsMSwyNCwyNUgxM1YyM0gyM1YxMWgyWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlTWVtb3J5PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjQiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDI3SDRWMTdIMlYyN2EyLDIsMCwwLDAsMiwySDE2LjYxVjI1LjU1aDIuMjZWMjRIMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMyLDdINEEyLDIsMCwwLDAsMiw5djRINFY5SDMydjRoMlY5QTIsMiwwLDAsMCwzMiw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwyN0gxOXYySDMyYTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTdIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUsMjdINFYxN0gyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUuNTVoMi4yNlYyNEgxNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOSwxMy41NkEzLjY2LDMuNjYsMCwwLDEsMTguNTcsMTJIMTZ2OGg0''@;'; put 'put ''VjE0LjY0QTMuNjcsMy42NywwLDAsMSwxOSwxMy41NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNCIgeT0iMTUuNCIgd2lkdGg9IjQiIGhlaWdodD0iNC42IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgxOS41NmwxLjE1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOCIgeT0iMTIiIHdpZHRoPSI0IiBoZWlnaHQ9IjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWJhZGdlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYiIHk9IjEyIiB3aWR0aD0iNCIgaGVpZ2h0PSI4IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwyN0g0VjE3SDJWMjdh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NWgyLjI2VjI0SDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsMTdWMjdIMTl2MkgzMmEyLDIsMCwwLDAsMi0yVjE3WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTMuMjJBNy40Niw3LjQ2LDAsMCwxLDI1LjUxLDEySDI0djhoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsOUgyMy4xM2E3LjQ1LDcuNDUsMCwwLDEtLjU1LTJINEEyLDIsMCwwLDAsMiw5djRINFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNCwxM1Y5YTIsMiwwLDAsMC0yLTJINEEyLDIsMCwwLDAsMiw5''@;'; put 'put ''djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEyLDIsMCwwLDAsMi0yVjE3SDMyVjEzWk0xMiwyMEg4VjEyaDRabTgsMEgxNlYxMmg0Wm04LDBIMjRWMTJoNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0zMiwxN1YxNS4wN0gyOFYyMEgyNFYxNS4wN0gyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMjAsMTQuMzFWMjBIMTZWMTJoMi42MUEzLjY4LDMuNjgsMCwwLDEsMTksOS41NUwyMC41Miw3SDRBMiwyLDAsMCwwLDIsOXY0SDR2NEgyVjI3YTIsMiwwLDAsMCwyLDJIMTYuNjFWMjUu''@;'; put 'put ''NTVIMTlWMjlIMzJhMiwyLDAsMCwwLDItMlYxN1pNMTIsMjBIOFYxMmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LjhsLTUuNzIsOS45MWExLjI4LDEuMjgsMCwwLDAsMS4x''@;'; put 'put ''LDEuOTFIMzMuNjhhMS4yOCwxLjI4LDAsMCwwLDEuMS0xLjkxTDI5LjA2LjhBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LjhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzIsMTdWMTMuMjJhNy4zMyw3LjMzLDAsMCwxLTQsMFYyMEgyNFYxMmgxLjUxYTcuNDgsNy40OCwwLDAsMS0yLjk0LTVINEEyLDIsMCwwLDAsMiw5djRINHY0SDJWMjdhMiwyLDAsMCwwLDIsMkgxNi42MVYyNS41NUgxOVYyOUgzMmEyLDIsMCwwLDAsMi0yVjE3Wk0xMiwyMEg4VjEyaDRabTgs''@;'; put 'put ''MEgxNlYxMmg0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZURhdGFDbHVzdGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41LDQuMDhDMjIuNzcsNC4wOCwxOSw1LjQsMTksNy45MVY5LjVhMTguNzUsMTguNzUsMCwwLDEsMiwuMlY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUt''@;'; put 'put ''MS44NFMzMiw3LjI3LDMyLDcuOTFWMTguMjRjMCwuNTQtMS40NiwxLjQ0LTMuOSwxLjczdjJjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3LjkxQzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMxNSw3LjI3LDE1LDcuOTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42''@;'; put 'put ''Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQu''@;'; put 'put ''MzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMTUuMjNDMjYuNjUsMTIuNzMsMjIuOTMsMTAuODUsMTgsMTAuODVabTYuNjUsNy42N2MtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEy''@;'; put 'put ''Ljc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDItNi42NSwyYTE0LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4zOHMtNi42NS0x''@;'; put 'put ''LjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42NS0yLjM4czYuNjUsMS40Myw2LjY1LDIuMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMTguMjRWNy45MWMwLS42NSwyLjA5LTEuODQs''@;'; put 'put ''NS41LTEuODRTMTUsNy4yNywxNSw3LjkxVjkuN2ExOC43NSwxOC43NSwwLDAsMSwyLS4yVjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyVjIwQzUuNDYsMTkuNjgsNCwxOC43OCw0LDE4LjI0WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNC42NSwxOC41MmMtLjg1LDEtMy40MiwyLTYuNjUsMkExNC40OSwxNC40OSwwLDAsMSwxNCwyMHYxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3''@;'; put 'put ''LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYzLjEyYy0uODUsMS0zLjQyLDItNi42NSwyYTE0LjQ5LDE0LjQ5LDAsMCwxLTQtLjUzdjEuNDZhMTYuMzMsMTYuMzMsMCwwLDAsNCwuNDcsMTIuNzYsMTIuNzYsMCwwLDAsNi42NS0xLjU2djIuMjljMCwuOTUtMi42NSwyLjM4LTYuNjUsMi4z''@;'; put 'put ''OHMtNi42NS0xLjQzLTYuNjUtMi4zOFYxNS4yM2MwLS45NSwyLjY1LTIuMzgsNi42NS0yLjM4bC43NSwwYTMuNjksMy42OSwwLDAsMS0uMDgtMmwtLjY2LDBjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1LDQuMzhzOC42NS0xLjg4LDguNjUt''@;'; put 'put ''NC4zOFYxNS40aC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0LjhjLTEuNzUuNjMtMywxLjY4LTMsMy4xMlY5LjVsLjI1LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2Mi44NGMwLC41NC0xLjQ2LDEuNDQtMy45LDEuNzN2MmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwxOC4yNFY3LjkxYzAtLjY1LDIuMDktMS44NCw1LjUtMS44NFMxNSw3LjI3LDE1LDcu''@;'; put 'put ''OTFWOS43YTE4Ljc1LDE4Ljc1LDAsMCwxLDItLjJWNy45MWMwLTIuNTItMy43Ny0zLjg0LTcuNS0zLjg0UzIsNS40LDIsNy45MVYxOC4yNEMyLDIwLjQsNC43NywyMS42Nyw3LjksMjJWMjBDNS40NiwxOS42OCw0LDE4Ljc4LDQsMTguMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2Vk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxMC44NWMtNC45MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjE1LjIzQzI2LjY1LDEyLjczLDIy''@;'; put 'put ''LjkzLDEwLjg1LDE4LDEwLjg1Wm02LjY1LDcuNjdjLS44NSwxLTMuNDIsMi02LjY1LDJBMTQuNDksMTQuNDksMCwwLDEsMTQsMjB2MS40NmExNi4zMywxNi4zMywwLDAsMCw0LC40NywxMi43NiwxMi43NiwwLDAsMCw2LjY1LTEuNTZ2My4xMmMtLjg1LDEtMy40MiwyLTYuNjUsMmExNC40OSwx''@;'; put 'put ''NC40OSwwLDAsMS00LS41M3YxLjQ2YTE2LjMzLDE2LjMzLDAsMCwwLDQsLjQ3LDEyLjc2LDEyLjc2LDAsMCwwLDYuNjUtMS41NnYyLjI5YzAsLjk1LTIuNjUsMi4zOC02LjY1LDIuMzhzLTYuNjUtMS40My02LjY1LTIuMzhWMTUuMjNjMC0uOTUsMi42NS0yLjM4LDYuNjUtMi4zOHM2LjY1LDEu''@;'; put 'put ''NDMsNi42NSwyLjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsNy45MWMwLS4zMy41NS0uOCwxLjU0LTEuMTgsMC0uMjQsMC0uNDgsMC0uNzNhNy41Miw3LjUyLDAsMCwxLC4x''@;'; put 'put ''NC0xLjQxQzIwLjU1LDUuMTksMTksNi4zLDE5LDcuOTFWOS41YTE4Ljc1LDE4Ljc1LDAsMCwxLDIsLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnY1YzAsLjU0LTEu''@;'; put 'put ''NDYsMS40NC0zLjksMS43M3YyYzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzV2LTUuOUE3LjQ1LDcuNDUsMCwwLDEsMzIsMTMuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMw''@;'; put 'put ''IiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcuOTFWOS40OGM1LjMuMjYsOSwyLjYs''@;'; put 'put ''OSw1Ljc2djYuN2wuMDUuMDZjMy4xMy0uMzIsNS45LTEuNiw1LjktMy43NVY3LjkxQzM0LDUuNCwzMC4yMyw0LjA4LDI2LjUsNC4wOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMu''@;'; put 'put ''NzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyTDgsMjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE4LDEwLjg1Yy00LjkzLDAtOC42NSwxLjg4LTguNjUsNC4zOFYyNy41NGMwLDIuNSwzLjcyLDQuMzgsOC42NSw0LjM4czguNjUtMS44OCw4LjY1LTQuMzhWMjUuMzhBMTMuNTgsMTMuNTgsMCwwLDEsMTgsMjhhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjI1LjI3YTE0LjUsMTQuNSwwLDAsMCw2''@;'; put 'put ''LDEuMTdjNC4yMSwwLDcuNjUtMS4yMyw4LjYzLTMuMjNWMjAuNDdDMjQuOCwyMiwyMS43MiwyMywxOCwyM2ExNi43NywxNi43NywwLDAsMS02LTFWMjAuMjNhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjExLDguNjMtMy4xMVYxNS4yM0MyNi42NSwxMi43MywyMi45Mywx''@;'; put 'put ''MC44NSwxOCwxMC44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNyw5LjQ4VjcuOTFjMC0yLjUyLTMuNzctMy44NC03LjUtMy44NFMyLDUuNCwyLDcuOTFWMTguMjRDMiwyMC40LDQuNzcsMjEuNjcsNy45LDIyTDgs''@;'; put 'put ''MjEuOTN2LTYuN0M4LDEyLjA4LDExLjcsOS43NCwxNyw5LjQ4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2YTMuNjgsMy42OCwwLDAsMS0uMzktMi43bC0uNjYsMGMtNC45''@;'; put 'put ''MywwLTguNjUsMS44OC04LjY1LDQuMzhWMjcuNTRjMCwyLjUsMy43Miw0LjM4LDguNjUsNC4zOHM4LjY1LTEuODgsOC42NS00LjM4VjI1LjM4QTEzLjU4LDEzLjU4LDAsMCwxLDE4LDI4YTE2Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyNS4yN2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3''@;'; put 'put ''LjY1LTEuMjMsOC42My0zLjIzVjIwLjQ3QzI0LjgsMjIsMjEuNzIsMjMsMTgsMjNhMTYuNzcsMTYuNzcsMCwwLDEtNi0xVjIwLjIzYTE0LjUsMTQuNSwwLDAsMCw2LDEuMTdjNC4yMSwwLDcuNjUtMS4xMSw4LjYzLTMuMTFWMTUuNEgyMi4yM0EzLjY5LDMuNjksMCwwLDEsMTksMTMuNTZaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNC44Yy0xLjc1LjYzLTMsMS42OC0zLDMuMTJWOS40OGwuMjcsMFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDI4djYuNTNsLjA1LjA2YzMuMTMtLjMyLDUuOS0xLjYsNS45LTMuNzVWMTUuMzhaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktc29saWQtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcsOS40OFY3LjkxYzAtMi41Mi0zLjc3LTMuODQtNy41LTMuODRTMiw1LjQsMiw3LjkxVjE4LjI0QzIsMjAuNCw0Ljc3LDIxLjY3LDcuOSwyMkw4LDIxLjkzdi02LjdDOCwxMi4w''@;'; put 'put ''OCwxMS43LDkuNzQsMTcsOS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTAuODVjLTQuOTMsMC04LjY1LDEuODgtOC42NSw0LjM4VjI3LjU0YzAsMi41LDMuNzIsNC4zOCw4LjY1''@;'; put 'put ''LDQuMzhzOC42NS0xLjg4LDguNjUtNC4zOFYyNS4zOEExMy41OCwxMy41OCwwLDAsMSwxOCwyOGExNi43NywxNi43NywwLDAsMS02LTFWMjUuMjdhMTQuNSwxNC41LDAsMCwwLDYsMS4xN2M0LjIxLDAsNy42NS0xLjIzLDguNjMtMy4yM1YyMC40N0MyNC44LDIyLDIxLjcyLDIzLDE4LDIzYTE2''@;'; put 'put ''Ljc3LDE2Ljc3LDAsMCwxLTYtMVYyMC4yM2ExNC41LDE0LjUsMCwwLDAsNiwxLjE3YzQuMjEsMCw3LjY1LTEuMTEsOC42My0zLjExVjE1LjIzQzI2LjY1LDEyLjczLDIyLjkzLDEwLjg1LDE4LDEwLjg1WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1i''@;'; put 'put ''YWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi41LDZhNy41Miw3LjUyLDAsMCwxLC4xNC0xLjRDMjAuNTUsNS4xOSwxOSw2LjMsMTksNy45MVY5LjQ4YTE1LjMzLDE1LjMzLDAsMCwxLDUsMUE3LjQ2LDcuNDYsMCwwLDEsMjIuNSw2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy40OUE3LjQ3LDcuNDcsMCwwLDEsMjcuMzUsMTNhNCw0LDAsMCwxLC43LDIuMjN2Ni43bC4wNS4wNmMzLjEzLS4zMiw1LjktMS42LDUuOS0zLjc1VjEyLjMzQTcuNDYsNy40NiwwLDAs''@;'; put 'put ''MSwzMCwxMy40OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjUuOTkiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNS0tYmFk''@;'; put 'put ''Z2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVSZXNvdXJjZVBvb2w9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjY4LDE1LjRIMzEuNzNhMTQsMTQsMCwwLDEsLjIyLDEuNkgxNy40OUw4LjMsMjguMDdBMTQsMTQsMCwwLDEsMjIuMDksNC42MmwxLTEuNzZB''@;'; put 'put ''MTYsMTYsMCwxLDAsMzQsMThhMTYsMTYsMCwwLDAtLjIzLTIuNjFaTTE4LDMyYTEzLjkxLDEzLjkxLDAsMCwxLTguMTYtMi42NUwxOC40MywxOUgzMS45NUExNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVy''@;'; put 'put ''dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNCwxOGExNCwxNCwwLDAsMSwyNy45NS0xSDE3LjQ5TDguMywyOC4wN0ExNCwx''@;'; put 'put ''NCwwLDAsMSw0LDE4Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjIsMTMuNGExMy45''@;'; put 'put ''MSwxMy45MSwwLDAsMSwuNzUsMy42SDE3LjQ5TDguMywyOC4wN0ExNCwxNCwwLDAsMSwyMi42MSw0LjhhNy40Myw3LjQzLDAsMCwxLC41OC0xLjkyLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M0E3LjQzLDcuNDMsMCwwLDEsMzEuMiwxMy40Wk0xOCwzMmExMy45MSwxMy45MSwwLDAsMS04''@;'; put 'put ''LjE2LTIuNjVMMTguNDMsMTlIMzEuOTVBMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOC41NywzMC45QTE2LDE2LDAsMCwwLDMzLjk1LDE5SDE4LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMzLjk1LDE3QTE2LDE2LDAsMSwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAsMzMuOTUsMTlIMTguNDNaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjk1LDE3YTE1LjkxLDE1LjkxLDAsMCwwLS44NC00LjE4LDcuNDksNy40OSwwLDAsMS05LjkyLTkuOTRBMTYsMTYsMCwwLDAsNywyOS42TDE3LjQ5LDE3WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2Ui''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjU3LDMwLjlBMTYsMTYsMCwwLDAsMzMuOTUsMTlIMTguNDNaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTUsMTdhMTYsMTYsMCww''@;'; put 'put ''LDAtLjE4LTEuNjFIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsNC4wNi03QTE2LDE2LDAsMCwwLDcsMjkuNkwxNy40OSwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44''@;'; put 'put ''NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVNoaWVsZENoZWNrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAs''@;'; put 'put ''MS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVY3LjU5Wk0zMCwxNS45M2MwLDExLTEwLDE1LjYxLTEyLDE2LjQzLTIt''@;'; put 'put ''LjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODIsM0E0Ny41NCw0Ny41NCwwLDAsMCwzMCw5LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC44OCwxNi44N2ExLDEsMCwwLDAtMS40MSwxLjQxbDYsNkwyNi40LDEzLjc3QTEsMSwwLDAsMCwyNSwxMi4zM2wtOS40Nyw5LjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMS4yNSw3LjRhNDMuNzksNDMuNzksMCwwLDEtNi42Mi0yLjM1LDQ1LDQ1LDAsMCwxLTYuMDgtMy4yMUwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41''@;'; put 'put ''MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVY3LjU5Wm0tNC41Nyw2LjY1TDE1LjUxLDI0LjksOS4xOSwxOC41N2ExLjQsMS40LDAsMCwxLDItMkwxNS41NCwyMSwyNC43MywxMmExLjQsMS40LDAsMSwxLDIsMloiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVNoaWVsZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVh''@;'; put 'put ''NDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0x''@;'; put 'put ''MiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTUuNHYuNTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItM2MxLC42''@;'; put 'put ''NCwyLjIsMS4yNywzLjQzLDEuODlsMS0xLjc0YTQxLjEsNDEuMSwwLDAsMS0zLjg5LTIuMThMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQu''@;'; put 'put ''MTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTUuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCww''@;'; put 'put ''LDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTMwLDEzLjV2Mi40M2MwLDExLTEwLDE1LjYxLTEyLDE2LjQzLTItLjgyLTEyLTUuNDQtMTItMTYuNDNWOS4xNGE0Ny41NCw0Ny41NCwwLDAsMCw2LjE4LTIuMjUsNDguMjMsNDguMjMsMCwwLDAsNS44Mi0zLDQ2LjE5LDQ2LjE5LDAsMCwwLDQuNTEsMi40MmMwLS4x''@;'; put 'put ''LDAtLjE5LDAtLjI5YTcuNDksNy40OSwwLDAsMSwuMjMtMS44Myw0MS42MSw0MS42MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42''@;'; put 'put ''NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAs''@;'; put 'put ''MS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yMywxNS40QTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIyLjQzLDRhNDEuMSw0MS4xLDAsMCwxLTMuODktMi4xOEwxOCwxLjVsLS41NC4zNWE0NSw0NSwwLDAsMS02''@;'; put 'put ''LjA4LDMuMjFBNDMuNzksNDMuNzksMCwwLDEsNC43NSw3LjRMNCw3LjU5djguMzRjMCwxMy4zOSwxMy41MywxOC40LDEzLjY2LDE4LjQ1bC4zNC4xMi4zNC0uMTJjLjE0LDAsMTMuNjYtNS4wNSwxMy42Ni0xOC40NVYxNS40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Nyw3LjQ3LDAsMCwxLTcuMjctOS4zMyw0MS42MSw0MS42MSwwLDAsMS00LjE5LTIuMzNMMTgsMS41bC0uNTQu''@;'; put 'put ''MzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEz''@;'; put 'put ''LjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1i''@;'; put 'put ''YWRnZSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlU2hpZWxkWD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQz''@;'; put 'put ''Ljc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEy''@;'; put 'put ''LTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQsNDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjIuODEsMTAuNzksMTgsMTUuNjFsLTQuODEtNC44MWExLDEsMCwwLDAtMS40MSwxLjQxTDE2LjU5LDE3bC00LjgxLDQuODFhMSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOC40M2w0LjgxLDQuODFhMSwxLDAsMCwwLDEuNDEtMS40MUwxOS40MSwxN2w0Ljgx''@;'; put 'put ''LTQuODFhMSwxLDAsMCwwLTEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0u''@;'; put 'put ''NTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVpNMjQuNTEsMjEuNTVhMS40LDEu''@;'; put 'put ''NCwwLDAsMS0yLDJMMTgsMTlsLTQuNTMsNC41M2ExLjQzLDEuNDMsMCwwLDEtMiwwLDEuNCwxLjQsMCwwLDEsMC0yTDE2LDE3bC00LjUzLTQuNTNhMS40LDEuNCwwLDEsMSwyLTJMMTgsMTVsNC41My00LjUzYTEuNCwxLjQsMCwwLDEsMiwyTDIwLDE3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlSW1wb3J0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCw0SDE0Ljg3TDgsMTAuODZWMTVoMlYxMy42MWg3LjYxVjZIMjhWMzBIOGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAs''@;'; put 'put ''MjgsNFpNMTYsMTJIMTB2LS4zMkwxNS43LDZIMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjk0LDI2LjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTksMjJsLTUuNjgtNS42OGExLDEsMCwwLDAtMS40MSwx''@;'; put 'put ''LjQxTDE1LjIsMjFIM2ExLDEsMCwxLDAsMCwySDE1LjIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEu''@;'; put 'put ''NDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjgsMTUuNFYzMEg4YTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMCwxMy42MWg3LjYxVjZoMy42OGwxLjE1LTJIMTQuODdMOCwxMC44NlYxNWgyWm0wLTEuOTJMMTUuNyw2SDE2djZI''@;'; put 'put ''MTBaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwx''@;'; put 'put ''MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45NCwyNi4yOGExLDEsMCwxLDAsMS40''@;'; put 'put ''MSwxLjQxTDE5LDIybC01LjY4LTUuNjhhMSwxLDAsMCwwLTEuNDEsMS40MUwxNS4yLDIxSDNhMSwxLDAsMSwwLDAsMkgxNS4yM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDEz''@;'; put 'put ''LjIyVjMwSDhhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjEzLjVBNy40OSw3LjQ5LDAsMCwxLDI4LDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTMuNjFo''@;'; put 'put ''Ny42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgsMTAuODZWMTVoMlptMC0xLjkyTDE1LjcsNkgxNnY2SDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIz''@;'; put 'put ''MCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTQuODdMOCwxMC44NlYyMUgxNS4ybC0zLjI1LTMuMjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxOSwyMmwtNS42OCw1LjY4YTEsMSwwLDAsMS0xLjQxLTEuNDFMMTUuMjMsMjNIOHY3YTIsMiwwLDAsMCwyLDJIMjhhMiwy''@;'; put 'put ''LDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyOCw0Wk0xNiwxMkgxMHYtLjMyTDE1LjY5LDZIMTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMywyMWExLDEsMCwxLDAsMCwySDhWMjFaIiBjbGFzcz0iY2xyLWktc29saWQt''@;'; put 'put ''LWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJs''@;'; put 'put ''LTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTUuNFpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVy''@;'; put 'put ''dGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMsMjFhMSwxLDAsMSwwLDAsMkg4VjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0yMi41LDZhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDE0Ljg3TDgsMTAuODZWMjFIMTUuMmwtMy4yNS0zLjI1YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTksMjJsLTUuNjgsNS42OGExLDEsMCwwLDEtMS40MS0xLjQxTDE1LjIzLDIzSDh2N2EyLDIsMCwwLDAsMiwySDI4YTIsMiww''@;'; put 'put ''LDAsMCwyLTJWMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNlpNMTYsMTJIMTB2LS4zMkwxNS42OSw2SDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUV4cG9ydD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMy42MWg3LjYxVjZIMjR2OC4zOGgyVjZhMiwyLDAsMCwwLTItMkgx''@;'; put 'put ''MC44N0w0LDEwLjg3VjMwYTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkg2Wm0wLTEuOTJMMTEuNjksNkgxMnY2SDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0x''@;'; put 'put ''LjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSww''@;'; put 'put ''LDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwxLjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTYsMTMuNjFoNy42MVY2aDcuNjhsMS4xNS0ySDEwLjg3TDQsMTAuODdWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVy''@;'; put 'put ''dGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTYsMjFIMThhMSwxLDAsMCwwLDAsMkgzMC4xOWwtMy4yOCwzLjI4YTEsMSwwLDEsMCwx''@;'; put 'put ''LjQxLDEuNDFMMzQsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwxMi4zNGE3LjUzLDcuNTMsMCwwLDEtMi0xLjg1djMuODloMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTYsMTMuNjFoNy42MVY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDEwLjg3TDQsMTAuODdWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0ySDZabTAtMS45MkwxMS42''@;'; put 'put ''OSw2SDEydjZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWNmEyLDIsMCwwLDAtMi0ySDEwLjg3TDQsMTAuODZWMzBhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYt''@;'; put 'put ''LjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVhMSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1''@;'; put 'put ''LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjMyLDE2LjM1YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzEuMTYsMjFIMjZ2Mmg1LjE5bC0zLjI4LDMuMjhhMSwxLDAsMSwwLDEuNDEsMS40MUwzNSwyMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMi40NSw0SDEwLjg3TDQsMTAuODZWMzBhMiwyLDAs''@;'; put 'put ''MCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjIzSDE4QTEsMSwwLDAsMSwxNywyMlpNMTIsMTJINnYtLjMyTDExLjY5LDZIMTJaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4x''@;'; put 'put ''NCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuMzIsMTYuMzVhMSwxLDAsMCwwLTEuNDEsMS40MUwzMS4xNiwyMUgyNnYyaDUuMTlsLTMuMjgsMy4yOGExLDEsMCwxLDAsMS40MSwxLjQxTDM1LDIyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywyMmExLDEsMCwwLDEsMS0xaDhWMTIuMzRBNy40Niw3LjQ2LDAsMCwxLDIyLjc4LDRIMTAuODdMNCwxMC44NlYzMGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMjNIMThBMSwxLDAsMCwxLDE3LDIyWk0x''@;'; put 'put ''MiwxMkg2di0uMzJMMTEuNjksNkgxMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVVcGxvYWRDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuMzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0xMCwxMC40NywxMC40NywwLDAsMC05LjYs''@;'; put 'put ''Ni4xQTkuNzQsOS43NCwwLDAsMCwxLjYsMTguNCw5LjYyLDkuNjIsMCwwLDAsMTEuMjUsMjhIMTVWMjZIMTEuMjVBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguMjYsOC4yNiwwLDAsMSw4LjQ1LDgsNy43NSw3Ljc1LDAsMCwx''@;'; put 'put ''LDAsLjhsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhhOCw4LDAsMCwwLDMuOTMtMTVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDIxLjg1QTEsMSwwLDAsMCwyMywyMC4x''@;'; put 'put ''NGwtNS01LTUsNWExLDEsMCwwLDAsMS40MSwxLjQxTDE3LDE5VjMxLjI1YTEsMSwwLDEsMCwyLDBWMTlsMi41NywyLjU3QTEsMSwwLDAsMCwyMi4yOCwyMS44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIu''@;'; put 'put ''MjgsMjEuODVBMSwxLDAsMCwwLDIzLDIwLjE0bC01LTUtNSw1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTcsMTlWMzEuMjVhMSwxLDAsMSwwLDIsMFYxOWwyLjU3LDIuNTdBMSwxLDAsMCwwLDIyLjI4LDIxLjg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTguMzhBNy43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguODEsOC44MSwwLDAsMSwyLC4yNWwxLTEuOGExMC44LDEwLjgsMCwwLDAtMy4wNy0uNDUs''@;'; put 'put ''MTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5Ljc0LDkuNzQsMCwwLDAsMS42LDE4LjQsOS42Miw5LjYyLDAsMCwwLDExLjI1LDI4SDE1VjI2SDExLjI1QTcuNjYsNy42NiwwLDAsMSwzLjYsMTguMzhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjksMTUuNEgzMC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjF2Mmg1LjM4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyMS44NUExLDEsMCwwLDAsMjMsMjAuMTRsLTUtNS01LDVhMSwxLDAsMCwwLDEuNDEsMS40MUwxNywxOVYzMS4yNWExLDEsMCwxLDAsMiwwVjE5bDIu''@;'; put 'put ''NTcsMi41N0ExLDEsMCwwLDAsMjIuMjgsMjEuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwuMDgsMCwuMTUs''@;'; put 'put ''MCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyMXYyaDUuMzhhOCw4LDAsMCwwLDQuNTQtMTQuNTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zLjYsMTguMzhB''@;'; put 'put ''Ny43MSw3LjcxLDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNhOC40Myw4LjQzLDAsMCwxLDgtNS40LDguNzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEwLjc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS43''@;'; put 'put ''NCw5Ljc0LDAsMCwwLDEuNiwxOC40LDkuNjIsOS42MiwwLDAsMCwxMS4yNSwyOEgxNVYyNkgxMS4yNUE3LjY2LDcuNjYsMCwwLDEsMy42LDE4LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2ly''@;'; put 'put ''Y2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlRG93bmxvYWRDbG91ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAu''@;'; put 'put ''MzEsMTNjMC0uMSwwLS4yMSwwLS4zMmExMC4yNiwxMC4yNiwwLDAsMC0xMC40NS0xMCwxMC40NywxMC40NywwLDAsMC05LjYsNi4xQTkuNjUsOS42NSwwLDAsMCwxMC44OSwyOGEzLDMsMCwwLDEsMC0yQTcuNjUsNy42NSwwLDAsMSwxMSwxMC43NGwuNjcsMCwuMjMtLjYzYTguNDMsOC40Myww''@;'; put 'put ''LDAsMSw4LTUuNCw4LjI2LDguMjYsMCwwLDEsOC40NSw4LDcuNzUsNy43NSwwLDAsMSwwLC44bC0uMDguNzIuNjUuM0E2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4YTgsOCwwLDAsMCwzLjkzLTE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0yLDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjI4LDI2LjA3YTEsMSwwLDAsMC0uNzEuMjlMMTksMjguOTRWMTYuNjhhMSwxLDAsMSwwLTIsMFYyOC45NGwtMi41Ny0yLjU3QTEsMSwwLDAsMCwxMywyNy43OGw1LDUsNS01YTEs''@;'; put 'put ''MSwwLDAsMC0uNzEtMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuODcsNC42OWE4LjgxLDguODEsMCwwLDEsMiwuMjVsMS0xLjhhMTAuOCwxMC44LDAsMCwwLTMuMDct''@;'; put 'put ''LjQ1LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEwLjg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjksMTUuNEgzMC4yMUE2LDYsMCwwLDEsMjYuMzgsMjZIMjUuMDlhMywzLDAsMCwxLDAsMmgxLjI4QTgsOCwwLDAsMCwzMi45LDE1LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxl''@;'; put 'put ''cnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwy''@;'; put 'put ''Ni44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMi4yOCwyNi4wN2ExLDEsMCwwLDAtLjcxLjI5TDE5LDI4Ljk0VjE2LjY4YTEsMSwwLDEsMC0y''@;'; put 'put ''LDBWMjguOTRsLTIuNTctMi41N0ExLDEsMCwwLDAsMTMsMjcuNzhsNSw1LDUtNWExLDEsMCwwLDAtLjcxLTEuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS44Nyw0LjY5YTgu''@;'; put 'put ''NzksOC43OSwwLDAsMSwyLjY4LjQyLDcuNDUsNy40NSwwLDAsMSwuNS0xLjk0LDEwLjc5LDEwLjc5LDAsMCwwLTMuMTgtLjQ4LDEwLjQ3LDEwLjQ3LDAsMCwwLTkuNiw2LjFBOS42NSw5LjY1LDAsMCwwLDEwLjg5LDI4YTMsMywwLDAsMSwwLTJBNy42NSw3LjY1LDAsMCwxLDExLDEwLjc0bC42''@;'; put 'put ''NywwLC4yMy0uNjNBOC40Myw4LjQzLDAsMCwxLDE5Ljg3LDQuNjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC45MiwxMy40NGE3LjEzLDcuMTMsMCwwLDEtMi42My0uMTRjMCwu''@;'; put 'put ''MDgsMCwuMTUsMCwuMjNsLS4wOC43Mi42NS4zQTYsNiwwLDAsMSwyNi4zOCwyNkgyNS4wOWEzLDMsMCwwLDEsMCwyaDEuMjhhOCw4LDAsMCwwLDQuNTQtMTQuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVQbHVnaW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5''@;'; put 'put ''LjgxLDE2SDI5VjguODNhMiwyLDAsMCwwLTItMkgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwy''@;'; put 'put ''LDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZabTIuNDEsN0EzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwxNUg0VjguODNoOVY3''@;'; put 'put ''YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2g4VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+''@;'; put 'put ''XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuODEsMTZIMjl2LS42SDI3VjE4aDIuODFBMy4xMywzLjEzLDAsMCwxLDMzLDIwLjY5LDMsMywwLDAsMSwzMi4yMiwyMywzLDMsMCwwLDEsMzAsMjRIMjd2Ny44M0g0VjI1SDVhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsNC44MSwx''@;'; put 'put ''NUg0VjguODNoOVY3YTMsMywwLDAsMSwxLTIuMjJBMywzLDAsMCwxLDE2LjMxLDQsMy4xMywzLjEzLDAsMCwxLDE5LDcuMTlWOC44M2guNjZMMjEsNi41OUE1LjEyLDUuMTIsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMs''@;'; put 'put ''MCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gydjguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwx''@;'; put 'put ''LjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVYxMy40M2E3LjQ1LDcuNDUsMCwwLDEtMi0uNTVWMThoMi44MUEzLjEzLDMuMTMsMCww''@;'; put 'put ''LDEsMzMsMjAuNjksMywzLDAsMCwxLDMyLjIyLDIzLDMsMywwLDAsMSwzMCwyNEgyN3Y3LjgzSDRWMjVINWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCw0LjgxLDE1SDRWOC44M2g5VjdhMywzLDAsMCwxLDEtMi4yMkEzLDMsMCwwLDEsMTYuMzEsNCwzLjEzLDMuMTMsMCwwLDEs''@;'; put 'put ''MTksNy4xOVY4LjgzaDQuMDZhNy40NCw3LjQ0LDAsMCwxLS41MS0ySDIxQTUuMTQsNS4xNCwwLDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIz''@;'; put 'put ''SDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAsNS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0''@;'; put 'put ''LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAsMCwxLDgsMTkuNjksMywzLDAsMCwxLDcuMjIsMjIsMywzLDAsMCwxLDUsMjNIMnY4LjgzYTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYyNmgxYTUsNSwwLDAs''@;'; put 'put ''MCw1LTUuNTFBNS4xNSw1LjE1LDAsMCwwLDI5LjgxLDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjgxLDE2SDI5di0uNkgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTksOS44OUwyMSw2LjU5QTUuMTIsNS4xMiww''@;'; put 'put ''LDAsMCwxNi41MSwyLDUsNSwwLDAsMCwxMSw2LjgzSDRhMiwyLDAsMCwwLTIsMlYxN0g0LjgxQTMuMTMsMy4xMywwLDAsMSw4LDE5LjY5LDMsMywwLDAsMSw3LjIyLDIyLDMsMywwLDAsMSw1LDIzSDJ2OC44M2EyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMjZoMWE1LDUsMCwwLDAs''@;'; put 'put ''NS01LjUxQTUuMTUsNS4xNSwwLDAsMCwyOS44MSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42''@;'; put 'put ''OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS44''@;'; put 'put ''MSwxNkgyOVYxMy40M2E3LjUsNy41LDAsMCwxLTYuNDUtNi41OUgyMUE1LjE0LDUuMTQsMCwwLDAsMTYuNTEsMiw1LDUsMCwwLDAsMTEsNi44M0g0YTIsMiwwLDAsMC0yLDJWMTdINC44MUEzLjEzLDMuMTMsMCwwLDEsOCwxOS42OSwzLDMsMCwwLDEsNy4yMiwyMiwzLDMsMCwwLDEsNSwyM0gy''@;'; put 'put ''djguODNhMiwyLDAsMCwwLDIsMkgyN2EyLDIsMCwwLDAsMi0yVjI2aDFhNSw1LDAsMCwwLDUtNS41MUE1LjE1LDUuMTUsMCwwLDAsMjkuODEsMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBj''@;'; put 'put ''eD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxsLkNsclNoYXBlRmxvcHB5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy4zNiw0SDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWOC43OFpNMjUsMzBIMTFWMjJIMjVabTUsMEgyN1YyMmEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OEg2VjZoNHY2YTIsMiwwLDAsMCwyLDJIMjRhMiwyLDAsMCwwLDItMkgxMlY2SDI2LjUxTDMwLDkuNTlaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41aDBWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTEuNjhsLS40''@;'; put 'put ''My0uM0gxMlY2SDIyLjVhNy40OSw3LjQ5LDAsMCwxLC4yOC0ySDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI1LDMwSDExVjIySDI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDE1LjRWMzBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2NmEyLDIsMCwwLDAsMiwyaDcuMzVhMy41NCwzLjU0LDAsMCwxLS43Ny0ySDEyVjZoOS4yOWwxLjE1LTJINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCww''@;'; put 'put ''LDItMlYxNS40Wk0yNSwzMEgxMVYyMkgyNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhB''@;'; put 'put ''MS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3''@;'; put 'put ''LjM2LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY4Ljc4Wk0yNiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaTTI0LDE0SDEyYTIsMiwwLDAsMS0yLTJWNmgydjZIMjZBMiwyLDAsMCwx''@;'; put 'put ''LDI0LDE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVhNy40Niw3LjQ2LDAsMCwxLTQtMS4xOEEyLDIsMCwwLDEsMjQsMTRIMTJhMiwyLDAsMCwxLTItMlY2aDJ2NkgyNS41NGE3LjQ1LDcuNDUsMCwwLDEt''@;'; put 'put ''Mi43Ni04SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTI2LDMwSDEwVjIxLjVBMS41LDEuNSwwLDAsMSwxMS41LDIwaDEzQTEuNSwxLjUsMCwwLDEsMjYsMjEuNVoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY5LDMuNjksMCwwLDEsMTkuMzUsMTRIMTJhMiwyLDAsMCwxLTItMlY2aDJ2Nmg2LjU4QTMuNjcsMy42NywwLDAsMSwxOSw5Ljg5TDIyLjQ1LDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNS40Wk0y''@;'; put 'put ''NiwzMEgxMFYyMS41QTEuNSwxLjUsMCwwLDEsMTEuNSwyMGgxM0ExLjUsMS41LDAsMCwxLDI2LDIxLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+''@;'; put 'put ''XG4gICAgICAgICcpLGwuQ2xyU2hhcGVDb21wdXRlcj0oMCxhLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjkuNiAyMi44OCA5LjYgMTAuNiAyNC40IDEwLjYgMjUuOTggOSA4IDkgOCAyMi44OCA5LjYgMjIuODgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNiw3SDMwVjIzaDJWNi41QTEuNSwxLjUsMCwwLDAsMzAuNSw1SDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41''@;'; put 'put ''LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEsMjV2My40QTIuNiwyLjYsMCwwLDAsMy42LDMxSDMyLjM0YTIuNiwyLjYsMCwwLDAsMi42LTIuNlYyNVptMzIsMy40YS42LjYsMCwwLDEtLjYuNkgzLjU2''@;'; put 'put ''YS42LjYsMCwwLDEtLjYtLjZWMjYuNTNoOS45NWExLjY0LDEuNjQsMCwwLDAsMS41LDFoNy4xM2ExLjY0LDEuNjQsMCwwLDAsMS41LTFIMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTkuNiwyMi44OFYxMC42aDkuMTRBMy42NCwzLjY0LDAsMCwxLDE5LDkuODlMMTkuNTYsOUg4VjIyLjg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik02LDdIMjAuNzFsMS4x''@;'; put 'put ''NS0ySDUuNUExLjUsMS41LDAsMCwwLDQsNi41VjIzSDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMzAiIHk9IjE1LjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjcuNiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEEx''@;'; put 'put ''LjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMSwyNXYzLjRBMi42LDIuNiwwLDAsMCwzLjYsMzFIMzIuMzRhMi42''@;'; put 'put ''LDIuNiwwLDAsMCwyLjYtMi42VjI1Wm0zMiwzLjRhLjYuNiwwLDAsMS0uNi42SDMuNTZhLjYuNiwwLDAsMS0uNi0uNlYyNi41M2g5Ljk1YTEuNjQsMS42NCwwLDAsMCwxLjUsMWg3LjEzYTEuNjQsMS42NCwwLDAsMCwxLjUtMUgzM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjUsNmE3LjUyLDcuNTIsMCwwLDEsLjA3LTFINS41QTEuNSwxLjUsMCwwLDAsNCw2LjVWMjNINlY3SDIyLjU3QTcuNTIsNy41MiwwLDAsMSwyMi41LDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0t''@;'; put 'put ''YmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41VjIzaDJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4xMyw5SDhWMjIuODhIOS42VjEwLjZIMjQuMDhBNy40OSw3LjQ5LDAsMCwxLDIzLjEzLDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwxLjVIMTMuNzRjLS42OCwwLTEu''@;'; put 'put ''MjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40NSwwLDAsMCwzLjYsMzBIMzIuNEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNywxMEgyOVYyNGgzVjcuNTdBMS41''@;'; put 'put ''NCwxLjU0LDAsMCwwLDMwLjUsNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIzLjgxLDI2Yy0uMzUuOS0uOTQsMS41LTEuNjEsMS41SDEzLjc0Yy0uNjgsMC0x''@;'; put 'put ''LjI2LS42LTEuNjEtMS41SDF2MS43NUEyLjQ1LDIuNDUsMCwwLDAsMy42LDMwSDMyLjRBMi40NSwyLjQ1LDAsMCwwLDM1LDI3Ljc1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjki''@;'; put 'put ''IHk9IjE1LjQiIHdpZHRoPSIzIiBoZWlnaHQ9IjguNiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTcsMTBIMTlMMTksOS44OSwyMS4yOSw2SDUuNUExLjU0LDEuNTQsMCwwLDAsNCw3LjU3''@;'; put 'put ''VjI0SDdaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDEx''@;'; put 'put ''TDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuODEsMjZjLS4zNS45LS45NCwxLjUtMS42MSwx''@;'; put 'put ''LjVIMTMuNzRjLS42OCwwLTEuMjYtLjYtMS42MS0xLjVIMXYxLjc1QTIuNDUsMi40NSwwLDAsMCwzLjYsMzBIMzIuNEEyLjQ1LDIuNDUsMCwwLDAsMzUsMjcuNzVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggZD0iTTcsMTBIMjMuNjZBNy40Niw3LjQ2LDAsMCwxLDIyLjUsNkg1LjVBMS41NCwxLjU0LDAsMCwwLDQsNy41N1YyNEg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwx''@;'; put 'put ''My4yMmE3LjE0LDcuMTQsMCwwLDEtMywuMlYyNGgzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZURpc3BsYXk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCww''@;'; put 'put ''LDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwzWk0zMiwyNUg0VjVIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI3LjcgOC43NiAyOC4xMyA4Ljc2IDI5Ljk0IDcuMTYgNi4xIDcuMTYg''@;'; put 'put ''Ni4xIDIzIDcuNyAyMyA3LjcgOC43NiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3''@;'; put 'put ''LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIsMCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYx''@;'; put 'put ''LDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0zMy42OCwxNS40SDMyVjI1SDRWNUgyMS44N0wyMywzSDMuNUExLjUsMS41LDAsMCwwLDIsNC41djIxQTEuNSwxLjUsMCwwLDAsMy41LDI3aDI5QTEuNSwxLjUsMCwwLDAsMzQsMjUuNVYxNS4zOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''LS1hbGVydGVkIi8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcuNyAyMyA3LjcgOC43NiAxOS43IDguNzYgMjAuNjIgNy4xNiA2LjEgNy4xNiA2LjEgMjMgNy43IDIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFs''@;'; put 'put ''ZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMjEuMjRWMjkuNUE0LjIsNC4yLDAsMCwwLDIyLjE3LDMySDEzLjgzYTQuMiw0LjIs''@;'; put 'put ''MCwwLDAsLjkzLTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MS0tYmFkZ2VkIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNi4xLDIzSDcuN1Y4Ljc2SDIzYTcuNDQsNy40NCwwLDAsMS0uNDMtMS42SDYuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMyLDEzLjIyVjI1SDRWNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiwzMkgyNC4yNmEzLjYxLDMuNjEsMCwwLDEtMS41LTIuNTJWMjguMTNIMTMuMjRWMjkuNUEzLjYxLDMuNjEsMCwwLDEsMTEuNzQsMzJIOS45NGExLDEsMCwxLDAsMCwySDI2LjA2YS45Mi45MiwwLDAsMCwxLTFBMSwxLDAsMCwwLDI2LDMyWiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjUsM0gzLjVBMS41LDEuNSwwLDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWNC41QTEuNSwxLjUsMCwwLDAsMzIuNSwz''@;'; put 'put ''Wk0zMSwyMS44M0g1VjdIMzFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMzJIMjQuMjZhMy42MSwzLjYxLDAsMCwxLTEuNS0yLjUyVjI4LjEzSDEzLjI0VjI5LjVBMy42MSwzLjYxLDAsMCwxLDExLjc0LDMySDku''@;'; put 'put ''OTRhMSwxLDAsMSwwLDAsMkgyNi4wNmEuOTIuOTIsMCwwLDAsMS0xQTEsMSwwLDAsMCwyNiwzMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxdjYuNDNINVY3SDIw''@;'; put 'put ''LjcxTDIzLDNIMy41QTEuNSwxLjUsMCwwLDAsMiw0LjV2MjFBMS41LDEuNSwwLDAsMCwzLjUsMjdoMjlBMS41LDEuNSwwLDAsMCwzNCwyNS41VjE1LjM4WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBh''@;'; put 'put ''dGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2LDMySDI0LjI2YTMuNjEsMy42MSwwLDAsMS0xLjUtMi41MlYyOC4xM0gxMy4yNFYyOS41QTMuNjEsMy42MSwwLDAsMSwxMS43NCwzMkg5Ljk0YTEsMSwwLDEsMCwwLDJIMjYuMDZhLjkyLjkyLDAs''@;'; put 'put ''MCwwLDEtMUExLDEsMCwwLDAsMjYsMzJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLDEzLjQzdjguNDFINVY3SDIyLjU3YTcuMjksNy4yOSwwLDAsMSwuNTUtNEgzLjVBMS41LDEuNSww''@;'; put 'put ''LDAsMCwyLDQuNXYyMUExLjUsMS41LDAsMCwwLDMuNSwyN2gyOUExLjUsMS41LDAsMCwwLDM0LDI1LjVWMTIuMzRBNy40NCw3LjQ0LDAsMCwxLDMxLDEzLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxj''@;'; put 'put ''aXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVRlcm1pbmFsPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw1SDRBMiwy''@;'; put 'put ''LDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpNNCw3SDMyVjkuMkg0Wk00LDI5VjEwLjhIMzJWMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3''@;'; put 'put ''IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMTUuNjggMTMuNzkgMTguOCA3IDIxLjkxIDcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAx''@;'; put 'put ''My40OCA3IDE1LjY4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyMyIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEt''@;'; put 'put ''LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjcgMjQuMTEgMTYuNiAxOS43IDE2LjYgMTcuODkgNyAxMy40OCA3IDE1LjY4IDEzLjc5IDE4LjggNyAyMS45MSA3IDI0LjExIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjI5SDRWMTAuOEgxOC42OEEzLjY2LDMuNjYsMCwwLDEsMTksOS44OWwuNC0uNjlINFY3SDIwLjcxbDEuMTUtMkg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjE1LjM4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0''@;'; put 'put ''Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjMiIHdpZHRoPSI2''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iNyAyNC4xMSAxNi42IDE5LjcgMTYuNiAxNy44OSA3IDEzLjQ4IDcgMTUuNjggMTMuNzkgMTguOCA3IDIx''@;'; put 'put ''LjkxIDcgMjQuMTEiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMlYyOUg0VjEwLjhIMjQuMjRhNy41MSw3LjUxLDAsMCwxLTEtMS42SDRWN0gyMi41N2E3LjUyLDcuNTIs''@;'; put 'put ''MCwwLDEtLjA3LTEsNy41Miw3LjUyLDAsMCwxLC4wNy0xSDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''My0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDVINEEyLDIs''@;'; put 'put ''MCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY3QTIsMiwwLDAsMCwzMiw1Wk02LjgsMTUuODFWMTMuMTdsMTAsNC41OXYyLjA4bC0xMCw0LjU5VjIxLjc4bDYuNTEtM1pNMjMuNCwyNS40SDE3VjIzaDYuNFpNNCw5LjJWN0gzMlY5LjJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMjIuMjNBMy42OCwzLjY4LDAsMCwxLDE5LDkuODlsLjQtLjY5SDRWN0gyMC43MWwxLjE1LTJINEEyLDIsMCwwLDAsMiw3VjI5YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlYxNS4zOFpNMTYuOCwxOS44M2wtMTAsNC41OVYyMS43OGw2LjUxLTMtNi41MS0zVjEzLjE3bDEwLDQuNTlabTYuNiw1LjU3SDE3VjIzaDYuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBk''@;'; put 'put ''PSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''Mi0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS02Ljc4LTQuM0g0VjdIMjIuNTdhNy41Miw3LjUyLDAsMCwxLS4wNy0xLDcuNTIsNy41MiwwLDAsMSwuMDctMUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNDYsNy40NiwwLDAsMSwzMCwxMy41Wk0xNi44LDE5LjgzbC0xMCw0LjU5VjIxLjc4bDYuNTEtMy02LjUxLTNWMTMuMTdsMTAsNC41OVptNi42LDUuNTdIMTdWMjNoNi40WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUNvZGU9KDAs''@;'; put 'put ''YS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtNi41My00LjQ1QTEsMSwwLDEsMCwyMi41NSwxNGw1LjMyLDMuNjMtNS4zMiwzLjYzYTEsMSwwLDAsMCwxLjEzLDEuNjVsNi41My00LjQ1YTEsMSwwLDAsMCww''@;'; put 'put ''LTEuNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCw5LjgzYS45LjksMCwwLDAtMS4wOS42NkwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OGwz''@;'; put 'put ''LjQ0LTEzLjgxQS45LjksMCwwLDAsMTkuOTQsOS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41''@;'; put 'put ''Myw0LjQ1YTEsMSwwLDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC41Niwx''@;'; put 'put ''MS42MiwxNS40MSwyNC4yOWEuOS45LDAsMCwwLC42NiwxLjA5bC4yMiwwYS45LjksMCwwLDAsLjg3LS42OEwxOS43MywxNC40YTMuNTksMy41OSwwLDAsMS0xLjE2LTIuNzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4yMSwxNi43OGwtMi0xLjM4SDI0LjY0bDMuMjQsMi4yMS01LjMyLDMuNjNhMSwxLDAsMCwwLDEuMTMsMS42NWw2LjUzLTQuNDVhMSwxLDAsMCwwLDAtMS42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjcxLDEyLjU5YTEsMSwwLDAsMC0xLjM5LS4yNkw1Ljc5LDE2Ljc4YTEsMSwwLDAsMCwwLDEuNjVsNi41Myw0LjQ1YTEsMSww''@;'; put 'put ''LDEsMCwxLjEzLTEuNjVMOC4xMywxNy42MSwxMy40NSwxNEExLDEsMCwwLDAsMTMuNzEsMTIuNTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuMjEsMTYuNzhsLTYuNTMtNC40''@;'; put 'put ''NUExLDEsMCwxLDAsMjIuNTUsMTRsNS4zMiwzLjYzLTUuMzIsMy42M2ExLDEsMCwwLDAsMS4xMywxLjY1bDYuNTMtNC40NWExLDEsMCwwLDAsMC0xLjY1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTE5Ljk0LDkuODNhLjkuOSwwLDAsMC0xLjA5LjY2TDE1LjQxLDI0LjI5YS45LjksMCwwLDAsLjY2LDEuMDlsLjIyLDBhLjkuOSwwLDAsMCwuODctLjY4bDMuNDQtMTMuODFBLjkuOSwwLDAsMCwxOS45NCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxsLkNsclNo''@;'; put 'put ''YXBlQXBwbGljYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHJlY3QgeD0iNSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0''@;'; put 'put ''PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFpNNCw2SDMydjQuMkg0Wk00LDMwVjExLjhIMzJWMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAg''@;'; put 'put ''ICAgICAgIDxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzIsNFptMCw2LjJINFY2SDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0''@;'; put 'put ''IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0z''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVCYXR0ZXJ5PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC41OSwx''@;'; put 'put ''MS43N2ExLDEsMCwwLDAtMS43MywxbDIuNSw0LjM0LTYuMDctMSw1LjI5LDEwLjU5YTEsMSwwLDAsMCwxLjc5LS44OWwtMy41My03LjA4LDYuMzgsMS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI1LjEy''@;'; put 'put ''LDRIMjNWMy41OEExLjU4LDEuNTgsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEuNTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCwwLDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlY1Ljg4QTEu''@;'; put 'put ''ODgsMS44OCwwLDAsMCwyNS4xMiw0Wk0yNSwzMkgxMVY2aDRWNGg2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjU5LDExLjc3YTEsMSwwLDAsMC0xLjczLDFsMi41LDQuMzQtNi4wNy0xLDUuMjks''@;'; put 'put ''MTAuNTlhMSwxLDAsMCwwLDEuNzktLjg5bC0zLjUzLTcuMDgsNi4zOCwxLjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgs''@;'; put 'put ''MCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTUuNFYzMkgxMVY2aDRWNGg2VjZoLjI4bDEuNjQtMi44NUExLjU3LDEuNTcsMCwwLDAsMjEuNDIsMkgxNC41OEExLjU4LDEuNTgsMCwwLDAsMTMsMy41OFY0SDEwLjg4QTEuODgsMS44OCwwLDAsMCw5LDUuODhWMzIuMTJBMS44OCwxLjg4LDAsMCww''@;'; put 'put ''LDEwLjg4LDM0SDI1LjEyQTEuODgsMS44OCwwLDAsMCwyNywzMi4xMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMu''@;'; put 'put ''NTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMTEuNThWMzJIMTFWNmg0VjRoNlY2SDIyLjVBNy40Nyw3LjQ3LDAsMCwxLDIzLDMuMzgsMS41Nywx''@;'; put 'put ''LjU3LDAsMCwwLDIxLjQyLDJIMTQuNThBMS41OCwxLjU4LDAsMCwwLDEzLDMuNThWNEgxMC44OEExLjg4LDEuODgsMCwwLDAsOSw1Ljg4VjMyLjEyQTEuODgsMS44OCwwLDAsMCwxMC44OCwzNEgyNS4xMkExLjg4LDEuODgsMCwwLDAsMjcsMzIuMTJWMTIuODdBNy41LDcuNSwwLDAsMSwyNSwx''@;'; put 'put ''MS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMiw0VjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCww''@;'; put 'put ''LDksNS4wN3YyOEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0di0yOEExLjA5LDEuMDksMCwwLDAsMjYsNFpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybDQuODMsOC4zN0wx''@;'; put 'put ''Ni45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEu''@;'; put 'put ''MjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuMjMsMTUuNEEzLjY2LDMuNjYsMCwwLDEsMjAuNTUsMTVsMi43Niw0''@;'; put 'put ''Ljc5TDE2LjksMTguN2wzLjM2LDYuNzNhMS4yLDEuMiwwLDAsMS0yLjE1LDEuMDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybC4wOS4xNUEzLjY2LDMuNjYsMCwwLDEsMTksOS44OUwyMi40NSw0SDIyVjIuNjJBLjYuNiwwLDAsMCwyMS40MiwySDE0LjU4''@;'; put 'put ''YS42LjYsMCwwLDAtLjU4LjYyVjRIMTBBMS4wOSwxLjA5LDAsMCwwLDksNS4wN3YyOEExLDEsMCwwLDAsMTAsMzRIMjZhMSwxLDAsMCwwLDEtLjk0VjE1LjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIuNSw2YTcuNDksNy40OSwwLDAsMSwuMjgtMkgyMlYyLjYyQS42LjYs''@;'; put 'put ''MCwwLDAsMjEuNDIsMkgxNC41OGEuNi42LDAsMCwwLS41OC42MlY0SDEwQTEuMDksMS4wOSwwLDAsMCw5LDUuMDd2MjhBMSwxLDAsMCwwLDEwLDM0SDI2YTEsMSwwLDAsMCwxLS45NFYxMi44N0E3LjUsNy41LDAsMCwxLDIyLjUsNlpNMjAuMjYsMjUuNDRhMS4yLDEuMiwwLDAsMS0yLjE1LDEu''@;'; put 'put ''MDdMMTIuNjUsMTUuNTZsNiwxLTIuMjktNGExLjIsMS4yLDAsMSwxLDIuMDgtMS4ybDQuODMsOC4zN0wxNi45LDE4LjdaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZU1vYmlsZT0oMCxhLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIsMiwwLDAsMCwyLDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xMSw2SDI1VjI0SDExWm0wLDI0VjI2SDI1djRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3IiB5PSIyNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsNEgxMUEyLDIsMCwwLDAsOSw2VjMwYTIsMiwwLDAsMCwy''@;'; put 'put ''LDJIMjVhMiwyLDAsMCwwLDItMlY2QTIsMiwwLDAsMCwyNSw0Wk0xOSwzMEgxN1YyOGgyWm0tOC00VjZIMjVWMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxsLkNsclNoYXBlVGFibGV0PSgwLGEuY2xySWNvblNWRykoJzxyZWN0IHg9''@;'; put 'put ''IjE3IiB5PSIyOSIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMkg2QTIsMiwwLDAsMCw0LDRWMzJhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjRBMiwyLDAs''@;'; put 'put ''MCwwLDMwLDJabTAsMlYyNi4zOEg2VjRaTTYsMzJWMjhIMzB2NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEyLDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0''@;'; put 'put ''QTIsMiwwLDAsMCwzMCwyWk0xOSwzMkgxN1YzMGgyWk02LDI4VjRIMzBWMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAnKSxsLkNsclNoYXBlTmV0d29ya0dsb2JlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41OCwzMmgtMThh''@;'; put 'put ''MSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUsMmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMSww''@;'; put 'put ''LDE3Ljc1LDJabTAsMmExMiwxMiwwLDAsMSw4LjQ0LDMuNDhjMCwuMzMsMCwuNjYsMCwxQTE4LjUxLDE4LjUxLDAsMCwwLDE0LDguNTNhMi4zMywyLjMzLDAsMCwwLTEuMTQtLjYxbC0uMjUsMGMtLjEyLS40Mi0uMjMtLjg0LS4zMi0xLjI3cy0uMTQtLjgxLS4xOS0xLjIyQTExLjkyLDExLjky''@;'; put 'put ''LDAsMCwxLDE3Ljc1LDRabS0zLDUuODdBMTcsMTcsMCwwLDEsMjUuOTIsMTBhMTYuOSwxNi45LDAsMCwxLTMuMTEsNywyLjI4LDIuMjgsMCwwLDAtMi41OC41N2MtLjM1LS4yLS43LS40LTEtLjYzYTE2LDE2LDAsMCwxLTQuOTMtNS4yMywyLjI1LDIuMjUsMCwwLDAsLjQ3LTEuNzdabS00LTMu''@;'; put 'put ''NmMwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgsMCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBBMTEuOTQsMTEu''@;'; put 'put ''OTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEtNC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQxLjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0LDE2Ljk0LDAs''@;'; put 'put ''MCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjkyLDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTguNDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQxLDE3LjQxLDAs''@;'; put 'put ''MCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhabTYuNTEtOC45YTIuMzMsMi4zMywwLDAsMC0uMzMtMS4xOSwxOC40LDE4LjQsMCwwLDAsMy4zOS03LjM3cS43NS4zNSwxLjQ4Ljc4YTEyLDEyLDAsMCwxLC40Miw4LjJBMTYsMTYsMCwwLDEsMjQuMjcsMTkuMTFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFs''@;'; put 'put ''ZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzMsMTUuNGgtMmMwLC4yLDAsLjQsMCwuNjFhMTIsMTIsMCwwLDEtLjUzLDMuNTIsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4Ljg3LDE4Ljg3LDAsMCwwLDEuNjItMi41MkgyMy44M2ExNy4y''@;'; put 'put ''OSwxNy4yOSwwLDAsMS0xLDEuNTQsMi4yOCwyLjI4LDAsMCwwLTIuNTguNTdjLS4zNS0uMi0uNy0uNC0xLS42M2ExNiwxNiwwLDAsMS00LjkzLTUuMjMsMi4yNSwyLjI1LDAsMCwwLC40Ny0xLjc3QTE3LjA4LDE3LjA4LDAsMCwxLDE5LjU2LDlsLjg3LTEuNTFhMTguNTksMTguNTksMCwwLDAt''@;'; put 'put ''Ni4zOSwxLDIuMzMsMi4zMywwLDAsMC0xLjE0LS42MWwtLjI1LDBjLS4xMi0uNDItLjIzLS44NC0uMzItMS4yN3MtLjE0LS44MS0uMTktMS4yMkExMS44OCwxMS44OCwwLDAsMSwyMiw0Ljc5TDIzLDNBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0''@;'; put 'put ''LDAsMCwwLDMxLjc2LDE2QzMxLjc2LDE1LjgsMzEuNzQsMTUuNiwzMS43MywxNS40Wm0tMjEtOS4xM2MwLC4yMS4wNi40My4xLjY0LjA5LjQ0LjIxLjg3LjMzLDEuM2EyLjI4LDIuMjgsMCwwLDAtMS4xLDIuMjVBMTguMzIsMTguMzIsMCwwLDAsNS45LDE0LjIyLDEyLDEyLDAsMCwxLDEwLjc2''@;'; put 'put ''LDYuMjdabTAsMTUuNzFBMi4zNCwyLjM0LDAsMCwwLDkuMiwyMy43NGwtLjY0LDBBMTEuOTQsMTEuOTQsMCwwLDEsNS44LDE2LjkybC4xMS0uMTlhMTYuOSwxNi45LDAsMCwxLDQuODEtNC44OSwyLjMxLDIuMzEsMCwwLDAsMi4yOC42MywxNy41MywxNy41MywwLDAsMCw1LjM1LDUuNjVjLjQx''@;'; put 'put ''LjI3LjgzLjUyLDEuMjUuNzZBMi4zMiwyLjMyLDAsMCwwLDE5Ljc4LDIwYTE2Ljk0LDE2Ljk0LDAsMCwxLTYuMiwzLjExQTIuMzQsMi4zNCwwLDAsMCwxMC43NiwyMlptNyw2YTExLjkyLDExLjkyLDAsMCwxLTUuODEtMS41MWwuMjgtLjA2YTIuMzQsMi4zNCwwLDAsMCwxLjU3LTEuNzksMTgu''@;'; put 'put ''NDMsMTguNDMsMCwwLDAsNy0zLjUsMi4yOSwyLjI5LDAsMCwwLDMtLjYyLDE3LjQxLDE3LjQxLDAsMCwwLDQuMzIuNTZsLjUzLDBBMTIsMTIsMCwwLDEsMTcuNzUsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRl''@;'; put 'put ''ZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjUsMTMuMzVhNy41NCw3LjU0LDAsMCwxLTEuNS4xNWwtLjUxLDBhMTEuOTEsMTEuOTEsMCwwLDEtLjI1LDYsMTYsMTYsMCwwLDEtNS0uNDEsMi4zMywyLjMzLDAsMCwwLS4zMy0xLjE5LDE4LjU5LDE4LjU5LDAsMCwwLDIu''@;'; put 'put ''NzgtNS4xOCw3LjQ5LDcuNDksMCwwLDEtMS4zMS0uODIsMTcsMTcsMCwwLDEtMi42MSw1LDIuMjgsMi4yOCwwLDAsMC0yLjU4LjU3Yy0uMzUtLjItLjctLjQtMS0uNjNhMTYsMTYsMCwwLDEtNC45My01LjIzLDIuMjUsMi4yNSwwLDAsMCwuNDctMS43NywxNywxNywwLDAsMSw4LjUzLS42Miw3''@;'; put 'put ''LjQzLDcuNDMsMCwwLDEtLjU2LTEuNTlBMTguNTYsMTguNTYsMCwwLDAsMTQsOC41M2EyLjMzLDIuMzMsMCwwLDAtMS4xNC0uNjFsLS4yNSwwYy0uMTItLjQyLS4yMy0uODQtLjMyLTEuMjdzLS4xNC0uODEtLjE5LTEuMjJBMTEuOTIsMTEuOTIsMCwwLDEsMjIuNTcsNWE3LjQ1LDcuNDUsMCww''@;'; put 'put ''LDEsLjUzLTJBMTQsMTQsMCwwLDAsMy43NSwxNmMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwYTE0LDE0LDAsMSwwLDI3LjY4LTRaTTEwLjc2LDYuMjdjMCwuMjEuMDYuNDMuMS42NC4wOS40NC4yMS44Ny4zMywxLjNhMi4yOCwyLjI4LDAsMCwwLTEuMSwyLjI1QTE4LjMyLDE4LjMyLDAsMCww''@;'; put 'put ''LDUuOSwxNC4yMiwxMiwxMiwwLDAsMSwxMC43Niw2LjI3Wm0wLDE1LjcxQTIuMzQsMi4zNCwwLDAsMCw5LjIsMjMuNzRsLS42NCwwQTExLjk0LDExLjk0LDAsMCwxLDUuOCwxNi45MmwuMTEtLjE5YTE2LjksMTYuOSwwLDAsMSw0LjgxLTQuODksMi4zMSwyLjMxLDAsMCwwLDIuMjguNjMsMTcu''@;'; put 'put ''NTMsMTcuNTMsMCwwLDAsNS4zNSw1LjY1Yy40MS4yNy44My41MiwxLjI1Ljc2QTIuMzIsMi4zMiwwLDAsMCwxOS43OCwyMGExNi45NCwxNi45NCwwLDAsMS02LjIsMy4xMUEyLjM0LDIuMzQsMCwwLDAsMTAuNzYsMjJabTcsNmExMS45MiwxMS45MiwwLDAsMS01LjgxLTEuNTFsLjI4LS4wNmEy''@;'; put 'put ''LjM0LDIuMzQsMCwwLDAsMS41Ny0xLjc5LDE4LjQzLDE4LjQzLDAsMCwwLDctMy41LDIuMjksMi4yOSwwLDAsMCwzLS42MiwxNy40MSwxNy40MSwwLDAsMCw0LjMyLjU2bC41MywwQTEyLDEyLDAsMCwxLDE3Ljc1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2''@;'; put 'put ''LjU4LDMyaC0xOGExLDEsMCwxLDAsMCwyaDE4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LjcyLDkuODdhMi4yNSwyLjI1LDAsMCwxLS40NywxLjc3LDE2LDE2LDAsMCwwLDQuOTMsNS4y''@;'; put 'put ''M2MuMzQuMjMuNjkuNDMsMSwuNjNhMi4yOCwyLjI4LDAsMCwxLDIuNTgtLjU3LDE2LjksMTYuOSwwLDAsMCwzLjExLTdBMTcsMTcsMCwwLDAsMTQuNzIsOS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTcuNzUs''@;'; put 'put ''MmExNCwxNCwwLDAsMC0xNCwxNGMwLC40NSwwLC44OS4wNywxLjMzbDAsMGgwQTE0LDE0LDAsMSwwLDE3Ljc1LDJaTTI4LjEsMjEuMDlhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAsMCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAs''@;'; put 'put ''MS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAsMCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcu''@;'; put 'put ''NTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQz''@;'; put 'put ''LS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4LjUzYTE4LjUxLDE4LjUxLDAsMCwxLDEyLjExLS4wN2MwLS4zMiwwLS42NSwwLTFo''@;'; put 'put ''MGExMiwxMiwwLDAsMSwyLjYyLDMuODVoMHEtLjczLS40My0xLjQ4LS43OGExOC40LDE4LjQsMCwwLDEtMy4zOSw3LjM3LDIuMzMsMi4zMywwLDAsMSwuMzMsMS4xOSwyMiwyMiwwLDAsMCw1LC40NSwxMS44OCwxMS44OCwwLDAsMS0uNjEsMS41M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMzEuNzMsMTUuNEgyNS41NmExOC44NywxOC44NywwLDAsMS0xLjYyLDIuNTIsMi4zMywyLjMzLDAsMCwxLC4zMywxLjE5LDIyLDIyLDAsMCwwLDUsLjQ1LDExLjg4LDExLjg4LDAsMCwxLS42MSwxLjUzSDI4LjFhMTcuNDEsMTcuNDEsMCwwLDEtNC4zMi0uNTYsMi4yOSwyLjI5LDAs''@;'; put 'put ''MCwxLTMsLjYyLDE4LjQzLDE4LjQzLDAsMCwxLTcsMy41LDIuMzQsMi4zNCwwLDAsMS0xLjU3LDEuNzlsLS4yOS4wNmExMS45MywxMS45MywwLDAsMS0zLjM5LTIuOGwuNjYsMGEyLjMzLDIuMzMsMCwwLDEsNC4zNy0uNThBMTYuOTQsMTYuOTQsMCwwLDAsMTkuNzgsMjBhMi4zMiwyLjMyLDAs''@;'; put 'put ''MCwxLS4xOC0xLjE3Yy0uNDItLjI0LS44NC0uNDktMS4yNS0uNzZBMTcuNTMsMTcuNTMsMCwwLDEsMTMsMTIuNDdhMi4zMSwyLjMxLDAsMCwxLTIuMjgtLjYzLDI3LjMxLDI3LjMxLDAsMCwwLTUsNC43NGMwLS4yLDAtLjM5LDAtLjU3YTEyLDEyLDAsMCwxLC4xNC0xLjczLDE4Ljc1LDE4Ljc1''@;'; put 'put ''LDAsMCwxLDQuMi0zLjgsMi4yOCwyLjI4LDAsMCwxLDEuMS0yLjI1Yy0uMTItLjQzLS4yNC0uODYtLjMzLTEuMywwLS4xNCwwLS4yOS0uMTEtLjY0YTEyLDEyLDAsMCwxLDEuMzctLjg3Yy4xLjU5LjE0LjkuMjEsMS4yMXMuMi44NS4zMiwxLjI3bC4yNSwwQTIuMzMsMi4zMywwLDAsMSwxNCw4''@;'; put 'put ''LjUzYTE4LjU5LDE4LjU5LDAsMCwxLDYuMzktMUwyMywzQTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMEExNCwxNCwwLDAsMCwzMS43NiwxNkMzMS43NiwxNS44LDMxLjc0LDE1LjYsMzEuNzMsMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTQuMjYsMTEuNjRhMTYsMTYsMCwwLDAsNC45Myw1LjIzYy4zNC4yMy42OS40MywxLC42M2EyLjI4LDIuMjgsMCwwLDEsMi41OC0uNTcsMTcuMjksMTcuMjksMCwwLDAsMS0xLjU0aC0xLjZBMy42''@;'; put 'put ''OCwzLjY4LDAsMCwxLDE5LDkuODlMMTkuNTYsOWExNy4wOCwxNy4wOCwwLDAsMC00Ljg0Ljg4LDIuMjUsMi4yNSwwLDAsMS0uNDcsMS43N1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0t''@;'; put 'put ''YWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi41OCwzMmgtMThhMSwxLDAsMSwwLDAsMmgxOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMS41LDEzLjM1YTcuNTQsNy41NCwwLDAsMS0xLjUuMTUsNy40Niw3LjQ2LDAsMCwxLTMuMjgtLjc2LDE4LjU5LDE4LjU5LDAsMCwxLTIuNzgsNS4xOCwyLjMzLDIuMzMsMCwwLDEsLjMzLDEuMTksMjIsMjIsMCwwLDAsNSwuNDUsMTEuODgsMTEuODgsMCwwLDEtLjYxLDEuNTNI''@;'; put 'put ''MjguMWExNy40MSwxNy40MSwwLDAsMS00LjMyLS41NiwyLjI5LDIuMjksMCwwLDEtMywuNjIsMTguNDMsMTguNDMsMCwwLDEtNywzLjUsMi4zNCwyLjM0LDAsMCwxLTEuNTcsMS43OWwtLjI5LjA2YTExLjkzLDExLjkzLDAsMCwxLTMuMzktMi44bC42NiwwYTIuMzMsMi4zMywwLDAsMSw0LjM3''@;'; put 'put ''LS41OEExNi45NCwxNi45NCwwLDAsMCwxOS43OCwyMGEyLjMyLDIuMzIsMCwwLDEtLjE4LTEuMTdjLS40Mi0uMjQtLjg0LS40OS0xLjI1LS43NkExNy41MywxNy41MywwLDAsMSwxMywxMi40N2EyLjMxLDIuMzEsMCwwLDEtMi4yOC0uNjMsMjcuMzEsMjcuMzEsMCwwLDAtNSw0Ljc0YzAtLjIs''@;'; put 'put ''MC0uMzksMC0uNTdhMTIsMTIsMCwwLDEsLjE0LTEuNzMsMTguNzUsMTguNzUsMCwwLDEsNC4yLTMuOCwyLjI4LDIuMjgsMCwwLDEsMS4xLTIuMjVjLS4xMi0uNDMtLjI0LS44Ni0uMzMtMS4zLDAtLjE0LDAtLjI5LS4xMS0uNjRhMTIsMTIsMCwwLDEsMS4zNy0uODdjLjEuNTkuMTQuOS4yMSwx''@;'; put 'put ''LjIxcy4yLjg1LjMyLDEuMjdsLjI1LDBBMi4zMywyLjMzLDAsMCwxLDE0LDguNTNhMTguNTYsMTguNTYsMCwwLDEsOC42NS0uODcsNy40NSw3LjQ1LDAsMCwxLC40MS00LjU5QTE0LDE0LDAsMCwwLDMuNzUsMTZjMCwuNDUsMCwuODkuMDcsMS4zM2wwLDBoMGExNCwxNCwwLDEsMCwyNy42OC00''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC43Miw5Ljg3YTIuMjUsMi4yNSwwLDAsMS0uNDcsMS43NywxNiwxNiwwLDAsMCw0LjkzLDUuMjNjLjM0LjIzLjY5LjQzLDEsLjYzYTIuMjgs''@;'; put 'put ''Mi4yOCwwLDAsMSwyLjU4LS41NywxNywxNywwLDAsMCwyLjYxLTUsNy41Miw3LjUyLDAsMCwxLTIuMTYtMi42N0ExNywxNywwLDAsMCwxNC43Miw5Ljg3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJj''@;'; put 'put ''bGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZU5ldHdvcmtTZXR0aW5ncz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuODUs''@;'; put 'put ''MjcuNDRhMi4yOSwyLjI5LDAsMCwwLDEuNzQtMS42OGMuNTQtLjE0LDEuMDYtLjMyLDEuNTktLjUxdi0xLjJhMi43NywyLjc3LDAsMCwxLC4wNi0uNTEsMTcuNDQsMTcuNDQsMCwwLDEtMS44Mi42MiwyLjI4LDIuMjgsMCwwLDAtNC4yOC42M2wtLjQ1LDBoMGExMS45MywxMS45MywwLDAsMS0y''@;'; put 'put ''Ljg4LTcuMjcsMTcuNzksMTcuNzksMCwwLDEsNS00LjcyLDIuMjMsMi4yMywwLDAsMCwyLjI5LjU2LDE4LjUyLDE4LjUyLDAsMCwwLDQuNDcsNSwyLjc0LDIuNzQsMCwwLDEsLjIxLS4yNGwuOTUtLjkxYTE2LjksMTYuOSwwLDAsMS00LjM1LTQuNzksMi4yNywyLjI3LDAsMCwwLC4zNS0xLjJj''@;'; put 'put ''MC0uMDcsMC0uMTQsMC0uMjJBMTcuNjksMTcuNjksMCwwLDEsMjUsMTFhMTcuNDksMTcuNDksMCwwLDEtMS4xNSwzLjM0bC4xOSwwaDEuNTZhMTksMTksMCwwLDAsLjkxLTIuNzJjLjQzLjE5Ljg0LjQxLDEuMjYuNjRhMTEuOTQsMTEuOTQsMCwwLDEsMSw0LjA5bDAsMEEyLjc3LDIuNzcsMCww''@;'; put 'put ''LDEsMzAsMTZhMi43MywyLjczLDAsMCwxLC42OC4xQTE0LDE0LDAsMSwwLDE2LjA4LDMxYTIuNzIsMi43MiwwLDAsMSwwLTJBMTEuOTMsMTEuOTMsMCwwLDEsMTAuODUsMjcuNDRaTTE2Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSww''@;'; put 'put ''LDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAsMS0uNjEtMi41M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTguNzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1''@;'; put 'put ''LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjUsMjEuMTlBMy44NCwzLjg0LDAsMSwwLDI4Ljg4LDI1LDMuODcsMy44NywwLDAsMCwy''@;'; put 'put ''NSwyMS4xOVptMCw2LjA4QTIuMjQsMi4yNCwwLDEsMSwyNy4yOCwyNSwyLjI2LDIuMjYsMCwwLDEsMjUsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC4xNywyNC4xNGExLjE0LDEuMTQsMCwwLDAt''@;'; put 'put ''LjctMS4xbC0xLjU2LS40NnEtLjExLS4zMi0uMjYtLjYzbC43Mi0xLjMzYTEuMTQsMS4xNCwwLDAsMC0uMjEtMS4zNGwtMS4zNC0xLjMyYTEuMTQsMS4xNCwwLDAsMC0xLjM0LS4ybC0xLjM0LjcxYTcuMjgsNy4yOCwwLDAsMC0uNjctLjI4TDI3LDE2LjcxYTEuMTQsMS4xNCwwLDAsMC0xLjA4''@;'; put 'put ''LS43NkgyNGExLjE0LDEuMTQsMCwwLDAtMS4wOC44bC0uNDQsMS40M2E3LjMyLDcuMzIsMCwwLDAtLjY4LjI4bC0xLjMyLS43YTEuMTQsMS4xNCwwLDAsMC0xLjMzLjE5bC0xLjM3LDEuMzFhMS4xNCwxLjE0LDAsMCwwLS4yMSwxLjM1bC43LDEuMjhxLS4xNi4zMi0uMjguNjVMMTYuNTgsMjNh''@;'; put 'put ''MS4xMywxLjEzLDAsMCwwLS44MSwxLjA5djEuODdBMS4xNCwxLjE0LDAsMCwwLDE2LjU5LDI3bDEuNDcuNDRxLjEyLjMyLjI4LjY0bC0uNzIsMS4zNWExLjE0LDEuMTQsMCwwLDAsLjIsMS4zNWwxLjM0LDEuMzJhMS4xNCwxLjE0LDAsMCwwLDEuMzQuMmwxLjM3LS43MnEuMzEuMTQuNjMuMjZs''@;'; put 'put ''LjQ0LDEuNDdhMS4xNCwxLjE0LDAsMCwwLDEuMDkuOGgxLjlBMS4xNCwxLjE0LDAsMCwwLDI3LDMzLjMxbC40NC0xLjQ3Yy4yMS0uMDcuNDItLjE2LjYyLS4yNWwxLjM4LjczYTEuMTQsMS4xNCwwLDAsMCwxLjMzLS4ybDEuMzQtMS4zMmExLjE0LDEuMTQsMCwwLDAsLjIxLTEuMzVsLS43My0x''@;'; put 'put ''LjM0cS4xNC0uMy4yNS0uNmwxLjUtLjQ0QTEuMTMsMS4xMywwLDAsMCwzNC4xNywyNlptLTEuNiwxLjUtMiwuNTgtLjEyLjQyQTUuNTUsNS41NSwwLDAsMSwzMCwyNy43M2wtLjIxLjM4LDEsMS43OS0uODYuODQtMS44Mi0xLS4zNy4yYTUuNzgsNS43OCwwLDAsMS0xLjEyLjQ2bC0uNDIuMTIt''@;'; put 'put ''LjU5LDJIMjQuMzhsLS41OS0xLjk1LS40Mi0uMTJBNS44Niw1Ljg2LDAsMCwxLDIyLjI0LDMwbC0uMzctLjItMS44MSwxLS44Ni0uODUsMS0xLjgyLS4yMi0uMzhhNS42LDUuNiwwLDAsMS0uNDktMS4xM2wtLjEzLS40MS0xLjk1LS41OFYyNC40MmwxLjk0LS41OC4xMi0uNDFhNS41Myw1LjUz''@;'; put 'put ''LDAsMCwxLC40OS0xLjE0bC4yMi0uMzktMS0xLjczLjg3LS44NCwxLjc3Ljk0LjM4LS4yMWE1LjgsNS44LDAsMCwxLDEuMTctLjQ5bC40MS0uMTIuNTktMS45MWgxLjIzbC41OCwxLjkuNDEuMTJhNS43OSw1Ljc5LDAsMCwxLDEuMTYuNDhsLjM4LjIxLDEuOC0uOTUuODYuODUtMSwxLjc3LjIx''@;'; put 'put ''LjM4YTUuNTMsNS41MywwLDAsMSwuNDcsMS4xM2wuMTIuNDIsMS45My41N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTM0LDIzLjYzLDMyLDIzYTcuMDYsNy4wNiwwLDAsMC0uNTgtMS40MWwxLTEuODZhLjM3''@;'; put 'put ''LjM3LDAsMCwwLS4wNy0uNDRMMzAuOSwxNy44NmEuMzcuMzcsMCwwLDAtLjQ0LS4wN2wtMS44NSwxYTcsNywwLDAsMC0xLjQzLS42MWwtLjYxLTJhLjM3LjM3LDAsMCwwLS4zNi0uMjVoLTJhLjM3LjM3LDAsMCwwLS4zNS4yNmwtLjYxLDJhNyw3LDAsMCwwLTEuNDQuNjFMMjAsMTcuOGEuMzcu''@;'; put 'put ''MzcsMCwwLDAtLjQ0LjA3TDE4LDE5LjMxYS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyQTcsNywwLDAsMCwxOC4zNSwyM2wtMiwuNjFhLjM3LjM3LDAsMCwwLS4yNi4zNXYyYS4zNy4zNywwLDAsMCwuMjYuMzVsMiwuNjFBNyw3LDAsMCwwLDE5LDI4LjM3bC0xLDEuOWEuMzcuMzcsMCwwLDAs''@;'; put 'put ''LjA3LjQ0bDEuNDUsMS40NWEuMzcuMzcsMCwwLDAsLjQ0LjA3bDEuODctMWE3LjA2LDcuMDYsMCwwLDAsMS4zOS41N2wuNjEsMmEuMzcuMzcsMCwwLDAsLjM1LjI2aDJhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTJhNyw3LDAsMCwwLDEuMzgtLjU3bDEuODksMWEuMzcuMzcsMCwwLDAsLjQ0''@;'; put 'put ''LS4wN2wxLjQ1LTEuNDVhLjM3LjM3LDAsMCwwLC4wNy0uNDRsLTEtMS44OEE3LDcsMCwwLDAsMzEuOTUsMjdsMi0uNjFhLjM3LjM3LDAsMCwwLC4yNi0uMzVWMjRBLjM3LjM3LDAsMCwwLDM0LDIzLjYzWm0tOC44Myw0LjcyQTMuMzMsMy4zMywwLDEsMSwyOC41MywyNSwzLjMzLDMuMzMsMCww''@;'; put 'put ''LDEsMjUuMTksMjguMzRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjgsMTkuNzEsMTkuNzEsMCwwLDAsMS44OS0uNlYyMy45NWEyLDIsMCwwLDEsLjA5''@;'; put 'put ''LS41NSwxNy40MiwxNy40MiwwLDAsMS0yLjE3Ljc4LDIuMjgsMi4yOCwwLDAsMC00LjI4LjYzbC0uNDUsMGgwYTExLjkzLDExLjkzLDAsMCwxLTIuODgtNy4yNywxNy43OSwxNy43OSwwLDAsMSw1LTQuNzIsMi4yMywyLjIzLDAsMCwwLDIuMjkuNTYsMTguNTIsMTguNTIsMCwwLDAsNC42NSw1''@;'; put 'put ''LjA5LDEuOTMsMS45MywwLDAsMSwuMjMtLjMybC44OS0uODdhMTYuODksMTYuODksMCwwLDEtNC40OS00Ljg5LDIuMjcsMi4yNywwLDAsMCwuMzUtMS4yYzAtLjA3LDAtLjE0LDAtLjIyQTE3LjY5LDE3LjY5LDAsMCwxLDI1LDExYTE3LjQ5LDE3LjQ5LDAsMCwxLTEuMTUsMy4zNSwxLjk0LDEu''@;'; put 'put ''OTQsMCwwLDEsLjMxLS4wNWgxLjQ1YTE5LjA2LDE5LjA2LDAsMCwwLC45LTIuN2MuNDMuMTkuODQuNDEsMS4yNi42NGExMS45MywxMS45MywwLDAsMSwxLDQuNjNsMS0uNTFhMiwyLDAsMCwxLC45Mi0uMjNoLjA4QTE0LDE0LDAsMSwwLDE2LjQ0LDMxYTEuOTQsMS45NCwwLDAsMSwuMTItMS40''@;'; put 'put ''NmwuMjgtLjUzaC0uMDdBMTEuOTEsMTEuOTEsMCwwLDEsMTAuODUsMjcuNDRaTTE2Ljc2LDVhMTIsMTIsMCwwLDEsOC42MSwzLjY2YzAsLjI1LDAsLjUxLS4wOC43NmExOS4yMSwxOS4yMSwwLDAsMC0xMi4zNS4xMUEyLjI4LDIuMjgsMCwwLDAsMTEuNzQsOWExNywxNywwLDAsMS0uNjEtMi41''@;'; put 'put ''M0ExMS45MiwxMS45MiwwLDAsMSwxNi43Niw1Wk05LjY2LDcuMzZhMTguNzIsMTguNzIsMCwwLDAsLjQ5LDEuOTIsMi4yOCwyLjI4LDAsMCwwLTEuMDcsMS45M3MwLC4xLDAsLjE1QTE5LjQ1LDE5LjQ1LDAsMCwwLDUsMTQuNzksMTIsMTIsMCwwLDEsOS42Niw3LjM2WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZU5ldHdvcmtTd2l0Y2g9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMwLjc4LDguNDFBMiwyLDAsMCwwLDI4Ljg3LDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDks''@;'; put 'put ''MTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZBMiwyLDAsMCwwLDMzLjkxLDE4LjQ3Wk0zMiwyN0g0VjE5LjA2TDcuMTMsOUgyOC44N0wzMiwxOS4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0i''@;'; put 'put ''MyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4x''@;'; put 'put ''MiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMi4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNy4xMSIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMt''@;'; put 'put ''LWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI3LjEiIHk9''@;'; put 'put ''IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC01LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNi4yMyIgeT0iMTgiIHdpZHRoPSIyMy42OSIgaGVpZ2h0PSIxLjQiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3LDMzLDE1LjRIMzAuODZMMzIsMTkuMDZWMjdINFYxOS4wNkw3LjEzLDlIMTkuNTZsMS4xNS0ySDcuMTNBMiwyLDAsMCwwLDUuMjIsOC40''@;'; put 'put ''MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2QTIsMiwwLDAsMCwzMy45MSwxOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNy4xMiIgeT0iMjIiIHdpZHRoPSIxLjgiIGhlaWdodD0iMyIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHJlY3QgeD0iMTIuMTIiIHk9IjIyIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE3LjExIiB5PSIyMiIgd2lkdGg9IjEu''@;'; put 'put ''OCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyMi4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNy4xIiB5PSIyMiIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cmVjdCB4PSI2LjIzIiB5PSIxOCIgd2lkdGg9IjIzLjY5IiBoZWlnaHQ9IjEuNCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjkxLDE4LjQ3bC0xLjY1LTUuMzJhNy40OSw3LjQ5''@;'; put 'put ''LDAsMCwxLTIsLjMzTDMyLDE5LjA2VjI3SDRWMTkuMDZMNy4xMyw5aDE2YTcuNDUsNy40NSwwLDAsMS0uNTUtMkg3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCww''@;'; put 'put ''LDAsMzMuOTEsMTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC04LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTEsMTguNDcsMzAuNzgsOC40MUEyLDIsMCwwLDAsMjguODcsN0g3LjEzQTIsMiwwLDAsMCw1LjIyLDguNDFMMi4wOSwxOC40OGEyLDIsMCwwLDAtLjA5LjU5VjI3YTIsMiwwLDAsMCwyLDJI''@;'; put 'put ''MzJhMiwyLDAsMCwwLDItMlYxOS4wNkEyLDIsMCwwLDAsMzMuOTEsMTguNDdaTTguOTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIwLjcxLDdINy4xM0EyLDIsMCwwLDAsNS4yMiw4LjQxTDIuMDksMTguNDhhMiwyLDAsMCwwLS4wOS41OVYyN2EyLDIsMCwwLDAs''@;'; put 'put ''MiwySDMyYTIsMiwwLDAsMCwyLTJWMTkuMDZhMiwyLDAsMCwwLS4wOS0uNTlaTTguOTIsMjVINy4xMlYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwaC0xLjhWMjJoMS44Wm01LDBIMjIuMVYyMmgxLjhabTUsMEgyNy4xVjIyaDEuOFpNMzEsMTkuNEg1VjE4SDMxWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEu''@;'; put 'put ''MjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEzLjE1QTcuNDksNy40OSwwLDAsMSwyMi41Nyw3SDcuMTNBMiwyLDAs''@;'; put 'put ''MCwwLDUuMjIsOC40MUwyLjA5LDE4LjQ4YTIsMiwwLDAsMC0uMDkuNTlWMjdhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5LjA2YTIsMiwwLDAsMC0uMDktLjU5Wk04LjkyLDI1SDcuMTJWMjJoMS44Wm01LDBoLTEuOFYyMmgxLjhabTUsMGgtMS44VjIyaDEuOFptNSwwSDIyLjFW''@;'; put 'put ''MjJoMS44Wm01LDBIMjcuMVYyMmgxLjhaTTMxLDE5LjRINVYxOEgzMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVSb3V0ZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDE0Ljg3bDUuMTEtNS4xNGExLDEsMCwxLDAtMS40Mi0xLjQxTDE5LDExVjMuMzNhMSwxLDAsMCww''@;'; put 'put ''LTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMS4xM2wtNS4xMSw1LjE0YTEsMSwwLDAsMCwxLjQyLDEuNDFMMTcsMjV2Ny42OWExLDEs''@;'; put 'put ''MCwwLDAsMiwwVjI1bDIuNjksMi43MWExLDEsMCwwLDAsMS40Mi0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40MkwzMC4xNSwxN0gyMi40NmExLDEs''@;'; put 'put ''MCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEsMCwwLDAsMS40MSwxLjQyTDM0LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNS44NSwxOWg3LjY5YTEsMSwwLDAsMCwwLTJINS44NWwyLjcxLTIuNjlh''@;'; put 'put ''MSwxLDAsMSwwLTEuNDEtMS40MkwyLDE4bDUuMTQsNS4xMWExLDEsMCwxLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjEuMTNsLTUuMTEsNS4xNGExLDEsMCwwLDAsMS40MiwxLjQx''@;'; put 'put ''TDE3LDI1djcuNjlhMSwxLDAsMCwwLDIsMFYyNWwyLjY5LDIuNzFhMSwxLDAsMCwwLDEuNDItMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTloNy42OWExLDEs''@;'; put 'put ''MCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''ZD0iTTMxLjM4LDE1LjRIMjguNTRMMzAuMTUsMTdIMjIuNDZhMSwxLDAsMSwwLDAsMmg3LjY5bC0yLjcxLDIuNjlhMSwxLDAsMCwwLDEuNDEsMS40MkwzNCwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE4LDE0Ljg3bDEuMTUtMS4xNi0uMS0uMTVBMy42OCwzLjY4LDAsMCwxLDE5LDEwVjMuMzNhMSwxLDAsMCwwLTIsMFYxMUwxNC4zMSw4LjMyYTEsMSwwLDEsMC0xLjQyLDEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxNC44N2w1LjExLTUuMTRhMSwxLDAsMSwwLTEuNDItMS40MUwxOSwxMVYzLjMzYTEsMSwwLDAsMC0yLDBWMTFMMTQuMzEs''@;'; put 'put ''OC4zMmExLDEsMCwxLDAtMS40MiwxLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDIxLjEzbC01LjExLDUuMTRhMSwxLDAsMCwwLDEuNDIsMS40MUwxNywyNXY3LjY5YTEs''@;'; put 'put ''MSwwLDAsMCwyLDBWMjVsMi42OSwyLjcxYTEsMSwwLDAsMCwxLjQyLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguODUsMTIuODlhMSwxLDAsMCwwLTEuNDEsMS40Mkwz''@;'; put 'put ''MC4xNSwxN0gyMi40NmExLDEsMCwxLDAsMCwyaDcuNjlsLTIuNzEsMi42OWExLDEsMCwwLDAsMS40MSwxLjQyTDM0LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuODUsMTlo''@;'; put 'put ''Ny42OWExLDEsMCwwLDAsMC0ySDUuODVsMi43MS0yLjY5YTEsMSwwLDEsMC0xLjQxLTEuNDJMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMSwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxLjY3YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCww''@;'; put 'put ''LDE4LDEuNjdaTTEzLjg2LDkuOTJhLjguOCwwLDAsMSwxLjEzLDBsMi4yMSwyLjE5VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY2LjE4TDIxLDkuOTJhLjguOCwwLDEsMSwxLjEzLDEuMTRMMTgsMTUuMTVsLTQuMTQtNC4xQS44LjgsMCwwLDEsMTMuODYsOS45MlpNMTAuMzIsMjEuNzRhLjguOCww''@;'; put 'put ''LDAsMS0xLjEzLDBMNSwxNy42N2w0LjE5LTQuMDlhLjguOCwwLDEsMSwxLjEyLDEuMTRsLTIuMiwyLjE0aDYuMjdhLjguOCwwLDAsMSwwLDEuNkg4LjExbDIuMiwyLjE1QS44LjgsMCwwLDEsMTAuMzIsMjEuNzRabTExLjgyLDMuNjdhLjguOCwwLDAsMS0xLjEzLDBMMTguOCwyMy4yM1YyOS40''@;'; put 'put ''YS44LjgsMCwwLDEtMS42LDBWMjMuMjNMMTUsMjUuNDJhLjguOCwwLDEsMS0xLjEzLTEuMTRMMTgsMjAuMThsNC4xNCw0LjFBLjguOCwwLDAsMSwyMi4xNCwyNS40MVptNC42Ny0zLjY2YS44LjgsMCwxLDEtMS4xMi0xLjE0bDIuMi0yLjE1SDIxLjYzYS44LjgsMCwwLDEsMC0xLjZoNi4yN2wt''@;'; put 'put ''Mi4yLTIuMTRhLjguOCwwLDEsMSwxLjEyLTEuMTRMMzEsMTcuNjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgyLDE1LjM5SDI4LjY4TDMxLDE3LjY3bC00LjE5LDQuMDlhLjguOCwwLDEsMS0xLjEyLTEuMTRs''@;'; put 'put ''Mi4yLTIuMTVIMjEuNjNhLjguOCwwLDAsMSwwLTEuNmg2LjI3bC0xLjUtMS40N0gyMi4yM2EzLjY4LDMuNjgsMCwwLDEtMy0xLjUxTDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMSwxLDE1LDkuOTJsMi4yMSwyLjE5VjUuOTNhLjguOCwwLDAsMSwxLjYsMHY0LjQ5QTMuNjUsMy42NSwwLDAs''@;'; put 'put ''MSwxOSw5Ljg5bDQuMjItNy4zMUExNiwxNiwwLDEsMCwzNCwxNy42NywxNiwxNiwwLDAsMCwzMy44MiwxNS4zOVptLTIzLjUsNi4zNWEuOC44LDAsMCwxLTEuMTMsMEw1LDE3LjY3bDQuMTktNC4wOWEuOC44LDAsMSwxLDEuMTIsMS4xNGwtMi4yLDIuMTRoNi4yN2EuOC44LDAsMCwxLDAsMS42''@;'; put 'put ''SDguMTFsMi4yLDIuMTVBLjguOCwwLDAsMSwxMC4zMiwyMS43NFptMTEuODIsMy42N2EuOC44LDAsMCwxLTEuMTMsMEwxOC44LDIzLjIzVjI5LjRhLjguOCwwLDAsMS0xLjYsMFYyMy4yM0wxNSwyNS40MmEuOC44LDAsMSwxLTEuMTMtMS4xNEwxOCwyMC4xOGw0LjE0LDQuMUEuOC44LDAsMCwx''@;'; put 'put ''LDIyLjE0LDI1LjQxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiICBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjIyLDEyLjc2QTcuNDksNy40''@;'; put 'put ''OSwwLDAsMSwyMy4zMiwyLjZhMTYsMTYsMCwxLDAsOS45LDEwLjE3Wk0xMy44Niw5LjkyYS44LjgsMCwwLDEsMS4xMywwbDIuMjEsMi4xOVY1LjkzYS44LjgsMCwwLDEsMS42LDB2Ni4xOEwyMSw5LjkyYS44LjgsMCwxLDEsMS4xMywxLjE0TDE4LDE1LjE1bC00LjE0LTQuMUEuOC44LDAsMCwx''@;'; put 'put ''LDEzLjg2LDkuOTJaTTEwLjMyLDIxLjc0YS44LjgsMCwwLDEtMS4xMywwTDUsMTcuNjdsNC4xOS00LjA5YS44LjgsMCwxLDEsMS4xMiwxLjE0bC0yLjIsMi4xNGg2LjI3YS44LjgsMCwwLDEsMCwxLjZIOC4xMWwyLjIsMi4xNUEuOC44LDAsMCwxLDEwLjMyLDIxLjc0Wm0xMS44MiwzLjY3YS44''@;'; put 'put ''LjgsMCwwLDEtMS4xMywwTDE4LjgsMjMuMjNWMjkuNGEuOC44LDAsMCwxLTEuNiwwVjIzLjIzTDE1LDI1LjQyYS44LjgsMCwxLDEtMS4xMy0xLjE0TDE4LDIwLjE4bDQuMTQsNC4xQS44LjgsMCwwLDEsMjIuMTQsMjUuNDFabTQuNjctMy42NmEuOC44LDAsMSwxLTEuMTItMS4xNGwyLjItMi4x''@;'; put 'put ''NUgyMS42M2EuOC44LDAsMCwxLDAtMS42aDYuMjdsLTIuMi0yLjE0YS44LjgsMCwxLDEsMS4xMi0xLjE0TDMxLDE3LjY3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYi''@;'; put 'put ''IHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVZNPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMSw1SDI1VjhoMlY1YTIsMiwwLDAsMC0yLTJIMTFBMiwy''@;'; put 'put ''LDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMEgxN3YyaDh2NmgyVjEyaDNWMjZIMjJWMTdhMiwyLDAsMCwwLTItMkg2YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIs''@;'; put 'put ''MkgyMGEyLDIsMCwwLDAsMi0yVjI4aDhhMiwyLDAsMCwwLDItMlYxMkEyLDIsMCwwLDAsMzAsMTBaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJoNHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBkPSJNMTEsNUgyMS44N0wyMywzSDExQTIsMiwwLDAsMCw5LDV2Ni44NWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyNS4wMSIgeT0iMTUuNCIgd2lkdGg9IjEuOTkiIGhl''@;'; put 'put ''aWdodD0iMi42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxNS40VjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTUuNFpNNiwzMVYxN0gyMHY5SDE2VjIwSDE0djZhMiwyLDAsMCwwLDIsMmg0djNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGQ9Ik0xNywxMHYyaDEuNTdBMy42NywzLjY3LDAsMCwxLDE5LDEwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAs''@;'; put 'put ''MjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMTEsNUgyMi41N2E3LjQ1LDcuNDUsMCwwLDEsLjU1LTJIMTFBMiwyLDAsMCwwLDksNXY2Ljg1aDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMu''@;'; put 'put ''NWgwVjI2SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOGg4YTIsMiwwLDAsMCwyLTJWMTMuMjJBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaTTYsMzFWMTdIMjB2OUgxNlYyMEgxNHY2YTIsMiwwLDAsMCwyLDJo''@;'; put 'put ''NHYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDEyaDh2NmgyVjEyLjg3QTcuNTIsNy41MiwwLDAsMSwyMy42NiwxMEgxN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRn''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjdWNWEyLDIsMCwwLDAtMi0ySDExQTIsMiwwLDAsMCw5LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDE3LjE5''@;'; put 'put ''YTIsMiwwLDAsMC0yLDJ2MS40SDIwQTMuNiwzLjYsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwyLDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCww''@;'; put 'put ''LDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTJBMiwyLDAsMCwwLDMwLDEwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZoMi43MkwyMywzSDExQTIsMiwwLDAsMCw5''@;'; put 'put ''LDV2OC40aDQuNTlaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjE5LDEwYTIsMiwwLDAsMC0yLDJ2MS40SDE5QTMuNjgsMy42OCwwLDAsMSwxOSwxMFoiIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMuMjEsMTUuNEEzLjU1LDMuNTUsMCwwLDEsMjMuNiwxN3Y4SDIyVjE3YTIsMiwwLDAsMC0yLTJINmEyLDIsMCwwLDAtMiwyVjMxYTIsMiwwLDAsMCwyLDJIMjBhMiwy''@;'; put 'put ''LDAsMCwwLDItMlYyOS42SDE3LjE5YTMuNiwzLjYsMCwwLDEtMy42LTMuNlYyMGgxLjZ2NmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTUuNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8''@;'; put 'put ''cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy41OSwxMmEzLjYsMy42LDAsMCwxLDMuNi0zLjZIMjIuOUE3LjQ1LDcuNDUsMCwwLDEsMjMuMTMsM0gxMUEyLDIsMCwwLDAsOSw1djguNGg0LjU5WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAsMTMuNUE3LjQ5LDcuNDksMCwwLDEsMjMuNjYsMTBIMTcuMTlhMiwyLDAsMCwwLTIsMnYxLjRIMjBBMy42LDMuNiwwLDAsMSwyMy42LDE3djhIMjJWMTdhMiwyLDAsMCwwLTItMkg2''@;'; put 'put ''YTIsMiwwLDAsMC0yLDJWMzFhMiwyLDAsMCwwLDIsMkgyMGEyLDIsMCwwLDAsMi0yVjI5LjZIMTcuMTlhMy42LDMuNiwwLDAsMS0zLjYtMy42VjIwaDEuNnY2YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjQ5LDcuNDksMCwwLDEsMzAsMTMuNVoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAg''@;'; put 'put ''ICAgICcpLGwuQ2xyU2hhcGVWTVdBcHA9KDAsYS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAzMiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjE0IDMwIDYgMzAgNiAyMiA4IDIyIDggMjAgNCAyMCA0IDMyIDE2IDMyIDE2IDI4IDE0IDI4IDE0IDMwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29u''@;'; put 'put ''IHBvaW50cz0iOCAxNCA2IDE0IDYgNiAxNCA2IDE0IDggMTYgOCAxNiA0IDQgNCA0IDE2IDggMTYgOCAxNCIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjIwIDQgMjAgOCAyMiA4IDIyIDYgMzAgNiAz''@;'; put 'put ''MCAxNCAyOCAxNCAyOCAxNiAzMiAxNiAzMiA0IDIwIDQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9''@;'; put 'put ''IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''b2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIgMjAgMjggMjAgMjggMjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHln''@;'; put 'put ''b24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAyOCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9''@;'; put 'put ''IjggMTQgNiAxNCA2IDYgMTQgNiAxNCA4IDE2IDggMTYgNCA0IDQgNCAxNiA4IDE2IDggMTQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTEiIHk9IjExIiB3aWR0aD0iNiIgaGVp''@;'; put 'put ''Z2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxOSIgeT0iMTkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI1LDE1LjRIMjIuMjNBMy42OSwzLjY5LDAsMCwxLDE5LDEzLjU2bDAtLjFWMTdoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyMi40NSA0IDIwIDQgMjAgOCAy''@;'; put 'put ''MC4xNCA4IDIyLjQ1IDQiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC04LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjgiIHk9IjE1LjQiIHdpZHRoPSI0IiBoZWlnaHQ9IjAuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0''@;'; put 'put ''ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2''@;'; put 'put ''Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIyOCAyMiAzMCAyMiAzMCAzMCAyMiAzMCAyMiAyOCAyMCAyOCAyMCAzMiAzMiAz''@;'; put 'put ''MiAzMiAyMCAyOCAyMCAyOCAyMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNCAzMCA2IDMwIDYgMjIgOCAyMiA4IDIwIDQgMjAgNCAzMiAxNiAzMiAxNiAyOCAxNCAy''@;'; put 'put ''OCAxNCAzMCIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSI4IDE0IDYgMTQgNiA2IDE0IDYgMTQgOCAxNiA4IDE2IDQgNCA0IDQgMTYgOCAxNiA4IDE0IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMTEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjExIiB5PSIxOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTkiIHk9IjE5IiB3aWR0aD0iNiIgaGVp''@;'; put 'put ''Z2h0PSI2IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsNmguNWE3LjQ5LDcuNDksMCwwLDEsLjI4LTJIMjBWOGgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtNy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEzLjVWMTRIMjh2Mmg0VjEzLjIyQTcuNDksNy40OSwwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtOC0tYmFkZ2VkIiAvPlxu''@;'; put 'put ''ICAgICAgICAgICAgPHBhdGggZD0iTTI1LDExLjU4YTcuNTMsNy41MywwLDAsMS0uNTgtLjU4SDE5djZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0i''@;'; put 'put ''NSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEwLS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVDZXJ0aWZpY2F0ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOEg0VjhIMzJsMCw4LjU2YTguNDEsOC40MSwwLDAsMSwyLDEuODFWOEEyLDIsMCwwLDAsMzIsNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0i''@;'; put 'put ''NyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiww''@;'; put 'put ''LDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwy''@;'; put 'put ''Ny40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTYiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMjMiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3''@;'; put 'put ''LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQsMTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQu''@;'; put 'put ''MzUsNC4zNSwwLDAsMSwyNy40NiwyNy45MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDEzLjU2QTMuNjYsMy42NiwwLDAsMSwxOC41NywxMkg3djEuNkgxOS4wN1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDE1LjRIMzJ2MS4xNmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxdi0zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNNCwyOFY4SDIwLjE0bDEuMTUtMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEwyMC40MSwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVk''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC02LS1hbGVydGVkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44''@;'; put 'put ''NSwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIGNsci1pLWFsZXJ0IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNyIgeT0iMTIiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxLjYiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1i''@;'; put 'put ''YWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjE2IiB3aWR0aD0iMTEiIGhlaWdodD0iMS42IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cmVjdCB4PSI3IiB5PSIyMyIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEuNiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI3LjQ2LDE3LjIzYTYuMzYsNi4zNiwwLDAsMC00LjQs''@;'; put 'put ''MTFsLTEuOTQsMi4zNy45LDMuNjEsMy42Ni00LjQ2YTYuMjYsNi4yNiwwLDAsMCwzLjU1LDBsMy42Niw0LjQ2LjktMy42MS0xLjk0LTIuMzdhNi4zNiw2LjM2LDAsMCwwLTQuNC0xMVptMCwxMC42OGE0LjMxLDQuMzEsMCwxLDEsNC4zNy00LjMxQTQuMzUsNC4zNSwwLDAsMSwyNy40NiwyNy45''@;'; put 'put ''MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiwxMy4yMnYzLjM0YTguNDEsOC40MSwwLDAsMSwyLDEuODF2LTZBNy40NSw3LjQ1LDAsMCwxLDMyLDEzLjIyWiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNS0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTQsMjhWOEgyMi43OGE3LjQ5LDcuNDksMCwwLDEtLjI4LTJINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAu''@;'; put 'put ''NDEsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC03LS1i''@;'; put 'put ''YWRnZWQgY2xyLWktYmFkZ2UiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTksMzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjE4LjM3YTguMzQsOC4zNCwwLDAsMC0xMy40OSw5Ljc5bC0uOTMsMS4xNFpNNywxMnYxLjZIMjRWMTJabTAsNS42''@;'; put 'put ''SDE4VjE2SDdabTAsN0gxN1YyM0g3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy44MywyMy41OWE2LjM3LDYuMzcsMCwxLDAtMTAuNzcsNC41OWwtMS45NCwyLjM3LjksMy42MSwzLjY2LTQuNDZhNi4yNiw2LjI2''@;'; put 'put ''LDAsMCwwLDMuNTUsMGwzLjY2LDQuNDYuOS0zLjYxLTEuOTQtMi4zN0E2LjM0LDYuMzQsMCwwLDAsMzMuODMsMjMuNTlabS0xMC43NCwwYTQuMzcsNC4zNywwLDEsMSw0LjM3LDQuMzFBNC4zNSw0LjM1LDAsMCwxLDIzLjEsMjMuNTlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjgzLDIzLjU5YTYuMzcsNi4zNywwLDEsMC0xMC43Nyw0LjU5bC0xLjk0LDIuMzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3QTYuMzQsNi4zNCwwLDAs''@;'; put 'put ''MCwzMy44MywyMy41OVptLTEwLjc0LDBhNC4zNyw0LjM3LDAsMSwxLDQuMzcsNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjMuMSwyMy41OVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMu''@;'; put 'put ''NjgsMTUuNEgyOS4yNWE4LjM2LDguMzYsMCwwLDEsNC43NSwzdi0zWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMi0tYWxlcnRlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS4wNywxMy42SDdWMTJIMTguNTdBMy42NywzLjY3LDAsMCwxLDE5''@;'; put 'put ''LDkuODlMMjEuMjksNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgxOWwuNTctLjcuOTMtMS4xNEE4LjM0LDguMzQsMCwwLDEsMjUuNjYsMTUuNEgyMi4yM0EzLjY4LDMuNjgsMCwwLDEsMTkuMDcsMTMuNlpNMTcsMjQuNkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYuODUsMS4xNCwyMS4xMywxMUExLjI4LDEuMjgsMCwwLDAsMjIuMjMsMTNIMzMuNjhBMS4yOCwxLjI4LDAsMCwwLDM0Ljc4LDExTDI5LjA2LDEuMTRBMS4y''@;'; put 'put ''OCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiAgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy40NiwxNy4yM2E2LjM2LDYuMzYsMCwwLDAtNC40LDExbC0xLjk0LDIu''@;'; put 'put ''MzcuOSwzLjYxLDMuNjYtNC40NmE2LjI2LDYuMjYsMCwwLDAsMy41NSwwbDMuNjYsNC40Ni45LTMuNjEtMS45NC0yLjM3YTYuMzYsNi4zNiwwLDAsMC00LjQtMTFabTAsMTAuNjhhNC4zMSw0LjMxLDAsMSwxLDQuMzctNC4zMUE0LjM1LDQuMzUsMCwwLDEsMjcuNDYsMjcuOTFaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41QTcuNSw3LjUsMCwwLDEsMjIuNSw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDE5bC41Ny0uNy45My0xLjE0QTguMzQsOC4zNCww''@;'; put 'put ''LDAsMSwzNCwxOC4zN3YtNkE3LjQ2LDcuNDYsMCwwLDEsMzAsMTMuNVpNMTcsMjQuNkg3VjIzSDE3Wm0xLTdIN1YxNkgxOFptNi00SDdWMTJIMjRaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUg''@;'; put 'put ''Y3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxsLkNsclNoYXBlQXJjaGl2ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjksMzJIN1YyMkg1VjMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMkgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDI0YTEsMSwwLDAsMCwxLDFoNmExLDEsMCwwLDAsMC0ySDE1QTEsMSwwLDAsMCwxNCwyNFoi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDE4SDZWMTRoNGEzLDMsMCwwLDEtLjY4LTEuODdzMC0uMDksMC0uMTNINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE2WiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM0EzLDMsMCwwLDEsMjYsMTRoNHY0SDIybC0yLDJIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwxOS4xOGw2LjM4LTYuMzVBMSwxLDAsMSwwLDIzLDExLjQxbC00LDMuOTVWM2ExLDEsMCwxLDAtMiwwdjEyLjRsLTQtMy45NWExLDEsMCwwLDAtMS40MSwxLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTkuNDEsMjAuNiwxOCwyMmwtMS40MS0xLjRMMTYsMjBINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjBIMjBaTTIyLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMCwxLDAtMmg2QTEsMSwwLDAs''@;'; put 'put ''MSwyMiwyNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyNi42NnMwLC4wOSwwLC4xM2EzLDMsMCwwLDEtLjg4LDIuMTJMMjIsMThIMzJWMTMuNUExLjUsMS41LDAsMCwwLDMwLjUsMTJaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjIsMTQuMjVhMywzLDAsMCwxLS44OC0yLjEyczAtLjA5LDAtLjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYxOEgxNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRo''@;'; put 'put ''LTQiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVVbmFyY2hpdmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNSwxOEg2VjE0aDlW''@;'; put 'put ''MTJINS41QTEuNSwxLjUsMCwwLDAsNCwxMy41VjIwSDE1Ljc4QTMsMywwLDAsMSwxNSwxOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjF2Mmg5djRIMjFhMywzLDAsMCwxLS43OCwySDMyVjEz''@;'; put 'put ''LjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsOS41NSwxNyw1LjZWMThhMSwxLDAsMSwwLDIsMFY1LjZsNCwzLjk1YTEsMSwwLDEsMCwxLjQxLTEuNDJMMTgsMS43''@;'; put 'put ''OCwxMS42MSw4LjEzQTEsMSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMjFhMywzLDAsMCwxLTIuMjItMUg1VjMyYTIsMiwwLDAsMCwyLDJIMjlhMiwyLDAsMCwwLDItMlYyMEgy''@;'; put 'put ''MC4yMUEzLDMsMCwwLDEsMTgsMjFabTQsM2ExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE1LDEySDUuNUExLjUsMS41LDAsMCww''@;'; put 'put ''LDQsMTMuNVYxOEgxNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNSwxMkgyMXY2SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyw5LjU1LDE3LDUuNlYxOGExLDEsMCwxLDAsMiwwVjUuNmw0LDMuOTVhMSwxLDAsMSwwLDEuNDEtMS40MkwxOCwxLjc4LDExLjYxLDguMTNBMSwxLDAsMCwwLDEzLDkuNTVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00''@;'; put 'put ''IiAvPlxuICAgICAgICAnKSxsLkNsclNoYXBlQ29ubmVjdD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMTdIMjguMjNBNi4yNSw2LjI1LDAsMCwwLDIyLDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgyMmE2LjIy''@;'; put 'put ''LDYuMjIsMCwwLDAsNi4yMi01SDM0Wk0xNy4wOCwyMkgxNC4xNWE0LjE3LDQuMTcsMCwwLDEtNC4zMS00LDQuMTcsNC4xNywwLDAsMSw0LjMxLTRoMi45NFpNMjIsMjJIMTlWMTRoM2E0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMiwyMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LDEySDE0LjE1YTYuMjUsNi4yNSwwLDAsMC02LjIxLDVIMnYySDcuOTNhNi4yMiw2LjIyLDAsMCwwLDYuMjIsNUgxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjguMjMsMTdBNi4yNSw2LjI1LDAsMCwwLDIyLDEySDE5VjI0aDNhNi4yMiw2LjIyLDAsMCwwLDYuMjItNUgzNFYxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVEaXNj''@;'; put 'put ''b25uZWN0PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xNyw2QTYuMjEsNi4yMSwwLDAsMCw2LDExSDIuMTN2Mkg2YTYuMjMsNi4yMywwLDAsMCw2LjIxLDVIMTdWNlpNMTUuMSwxNkgxMi4xN2E0LjIsNC4yLDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00SDE1LjFa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy45MiwyM0gzMC4xNGE2LjI1LDYuMjUsMCwwLDAtNi4yMS01SDE5djJIMTRhMSwxLDAsMSwwLDAsMmg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwx''@;'; put 'put ''aDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy43NlptLTEwLDVIMjFWMjBoMi45NGE0LjE3LDQuMTcsMCwwLDEsNC4zMSw0QTQuMTcsNC4xNywwLDAsMSwyMy45NCwyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTEyLDZhNi4yMSw2LjIxLDAsMCwwLTYuMjEsNUgydjJINS44M0E2LjIzLDYuMjMsMCwwLDAsMTIsMThIMTdWNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNzksMjNIMzAuMTRhNi4yNSw2LjI1''@;'; put 'put ''LDAsMCwwLTYuMjEtNUgxOXYySDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djRIMTRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDV2Mmg0Ljk0YTYuMjMsNi4yMywwLDAsMCw2LjIyLTVoMy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+''@;'; put 'put ''XG4gICAgICAgICcpLGwuQ2xyU2hhcGVMaW5rPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNy42LDI0LjMybC0yLjQ2LDIuNDRhNCw0LDAsMCwxLTUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMC01LjU1bDQuNjktNC42NWE0LDQsMCwwLDEsNS42MiwwLDMuODYsMy44NiwwLDAsMSwxLDEu''@;'; put 'put ''NzFBMiwyLDAsMCwwLDIxLjEsMThsMS4yOS0xLjI4YTUuODksNS44OSwwLDAsMC0xLjE1LTEuNjIsNiw2LDAsMCwwLTguNDQsMEw4LjEsMTkuNzlhNS45MSw1LjkxLDAsMCwwLDAsOC4zOSw2LDYsMCwwLDAsOC40NCwwbDMuNjUtMy42MmMtLjE3LDAtLjMzLDAtLjUsMEE4LDgsMCwwLDEsMTcu''@;'; put 'put ''NiwyNC4zMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjYxLDcuODJhNiw2LDAsMCwwLTguNDQsMGwtMy42NSwzLjYyYy4xNywwLC4zMywwLC40OSwwaDBhOCw4LDAsMCwxLDIuMS4yOGwyLjQ2LTIuNDRh''@;'; put 'put ''NCw0LDAsMCwxLDUuNjIsMCwzLjkyLDMuOTIsMCwwLDEsMCw1LjU1bC00LjY5LDQuNjVhNCw0LDAsMCwxLTUuNjIsMCwzLjg2LDMuODYsMCwwLDEtMS0xLjcxLDIsMiwwLDAsMC0uMjguMjNsLTEuMjksMS4yOGE1Ljg5LDUuODksMCwwLDAsMS4xNSwxLjYyLDYsNiwwLDAsMCw4LjQ0LDBsNC42''@;'; put 'put ''OS00LjY1YTUuOTIsNS45MiwwLDAsMCwwLTguMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVVubGluaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw1LDMuNTksNi40MWw5LDlMOC4xLDE5Ljc5YTUu''@;'; put 'put ''OTEsNS45MSwwLDAsMCwwLDguMzksNiw2LDAsMCwwLDguNDQsMEwyMSwyMy43OGw4LjYzLDguNjNMMzEsMzFaTTE1LjEzLDI2Ljc2YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAtNS41NUwxNCwxNi43OWw1LjU4LDUuNThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS41Myw5LjIyYTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC43OSw0Ljc2TDIzLjc4LDIxbDQuNzktNC43NmE1LjkyLDUuOTIsMCwwLDAsMC04LjM5LDYsNiwwLDAsMC04LjQ0LDBsLTQu''@;'; put 'put ''NzYsNC43NEwxNi43OCwxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAnKSxsLkNsclNoYXBlQ2xvdWROZXR3b3JrPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMC43MSwxNS4xOHYtMUExMS4yOCwxMS4yOCwwLDAsMCwxOS41''@;'; put 'put ''NiwyLjgzaC0uMTFhMTEuMjgsMTEuMjgsMCwwLDAtMTEsOC45Myw3LjQ3LDcuNDcsMCwwLDAsMCwxNC45NEgyOS4xM2E1Ljg2LDUuODYsMCwwLDAsMS41OC0xMS41MlpNMjkuMTMsMjQuN0g4LjQ2YTUuNDcsNS40NywwLDEsMSwwLTEwLjk0aDEuNjlsLjExLS44N2E5LjI3LDkuMjcsMCwwLDEs''@;'; put 'put ''MTguNDUsMS4zdjEuMjhjMCwuMDksMCwuMTgsMCwuMjdsLS4wNywxLjE1Ljk0LjExYTMuODYsMy44NiwwLDAsMS0uNDMsNy43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjU4LDMxLjE4SDE4Ljg1di0y''@;'; put 'put ''LjRoLTJ2Mi40SDYuMDhhMSwxLDAsMCwwLDAsMmgyMy41YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUNsb3VkU2NhbGU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYuMzIsMTEu''@;'; put 'put ''MTFINy44NEw4LDEwLjI0QTcuMTksNy4xOSwwLDAsMSwxNS4wNyw0aC4wN2E3LjE1LDcuMTUsMCwwLDEsNC43MSwxLjgzLDExLjEsMTEuMSwwLDAsMSwzLjA5LjY0QTkuMTgsOS4xOCwwLDAsMCwxNS4xNiwyaC0uMDlBOS4yLDkuMiwwLDAsMCw2LjEzLDkuMTEsNi4xNSw2LjE1LDAsMCwwLDIu''@;'; put 'put ''MzMsMTkuOTUsOC4wOSw4LjA5LDAsMCwxLDMsMTcuNzFhNC4xMiw0LjEyLDAsMCwxLS44MS0yLjQ0QTQuMTYsNC4xNiwwLDAsMSw2LjMyLDExLjExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuNCwxNi45''@;'; put 'put ''MWgxLjUyTDEyLDE2YTcuMTksNy4xOSwwLDAsMSw3LjEyLTYuMjVoLjA3YTcuMTcsNy4xNywwLDAsMSw1LjcsMi45MiwxMS4wNSwxMS4wNSwwLDAsMSwyLjcyLjc3LDkuMiw5LjIsMCwwLDAtOC40LTUuNjloLS4wOWE5LjIsOS4yLDAsMCwwLTguOTQsNy4xMiw2LjE1LDYuMTUsMCwwLDAtMy42''@;'; put 'put ''NCwxMSw4LjExLDguMTEsMCwwLDEsLjc5LTIsNC4xNCw0LjE0LDAsMCwxLDMtN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjQyLDI0LjQ3di0uNjJhOS4xOCw5LjE4LDAsMCwwLTE4LjEzLTIuMTZBNi4x''@;'; put 'put ''Niw2LjE2LDAsMCwwLDE0LjQ4LDM0SDMxYTQuODgsNC44OCwwLDAsMCwxLjQ2LTkuNTNaTTMxLDMySDE0LjQ4YTQuMTYsNC4xNiwwLDEsMSwwLTguMzJIMTZsLjExLS44N2E3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjIxLDcuMjEsMCwwLDEsNy4xMiw3LjI1djFjMCwuMDcsMCwu''@;'; put 'put ''MTMsMCwuMmwtLjA3LDEuMTEuOTQuMTFBMi44OCwyLjg4LDAsMCwxLDMxLDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVDbG91ZFRyYWZmaWM9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LjU0LDIw''@;'; put 'put ''LjgyYS44OC44OCwwLDAsMC0uODgtLjg4SDIwLjc1bDEuMS0xLjFBLjg4Ljg4LDAsMCwwLDIwLjYsMTcuNmwtMy4yMSwzLjIyTDIwLjYsMjRhLjg4Ljg4LDAsMSwwLDEuMjUtMS4yNEwyMC43NiwyMS43aDQuOUEuODguODgsMCwwLDAsMjYuNTQsMjAuODJaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS4yNywyMS43YS44OC44OCwwLDEsMCwwLTEuNzZoLS41OGEuODguODgsMCwxLDAsMCwxLjc2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBkPSJNMzIuMjEsMjBoLS4wNmEuODUuODUsMCwwLDAtLjg1Ljg4LjkxLjkxLDAsMCwwLC45MS44OC44OC44OCwwLDEsMCwwLTEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMi41OSwxMWEu''@;'; put 'put ''ODguODgsMCwwLDAtMS4yNSwxLjI0bDEuMSwxLjFIMjcuNTNhLjg4Ljg4LDAsMSwwLDAsMS43Nmg0LjlsLTEuMDksMS4wOWEuODguODgsMCwwLDAsMS4yNSwxLjI0bDMuMjEtMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTI0LjUsMTUuMDdhLjg4Ljg4LDAsMSwwLDAtMS43NmgtLjU4YS44OC44OCwwLDEsMCwwLDEuNzZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS45LDE0LjI3YS44NS44NSwwLDAsMC0uODUt''@;'; put 'put ''Ljg4SDIxYS44OC44OCwwLDEsMCwwLDEuNzZBLjkxLjkxLDAsMCwwLDIxLjksMTQuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMC4zNiwyMy42NWMwLC4xMywwLC4yNiwwLC4zOWEzLjc3LDMuNzcsMCww''@;'; put 'put ''LDEtMy42MiwzLjg5SDcuMjhhNS4zMiw1LjMyLDAsMCwxLTUuMTMtNS40OEE1LjMyLDUuMzIsMCwwLDEsNy4yOCwxN0g4LjkxTDksMTYuMTJhOC45Miw4LjkyLDAsMCwxLDguNjItOGguMDhhOC40OSw4LjQ5LDAsMCwxLDYuNTYsMy4yOWgyLjM3YTEwLjU1LDEwLjU1LDAsMCwwLTguOTEtNS4y''@;'; put 'put ''NWgtLjExQTEwLjgyLDEwLjgyLDAsMCwwLDcuMjIsMTVhNy4yOCw3LjI4LDAsMCwwLTcsNy40Myw3LjI3LDcuMjcsMCwwLDAsNy4wOCw3LjQzSDI2Ljc3QTUuNzIsNS43MiwwLDAsMCwzMi4zNSwyNGEzLjc3LDMuNzcsMCwwLDAsMC0uMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZURlcGxveT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAs''@;'; put 'put ''MS40MywxLjRMMzIsNS40NlYxMy45YTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsMzMsMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTEuNTQsMTAuNzNsLTksNS4xN2ExLDEsMCwwLDAtLjUuODd2MTFhMSwx''@;'; put 'put ''LDAsMCwwLC41Ljg3bDksNS4xNWExLDEsMCwwLDAsMSwwbDktNS4xNWExLDEsMCwwLDAsLjUtLjg3di0xMWExLDEsMCwwLDAtLjUtLjg3bC05LTUuMTdBMSwxLDAsMCwwLDExLjU0LDEwLjczWk0xMSwzMS4wOGwtNy00VjE4LjQ0bDcsNFpNMTIsMjEsNC44MSwxNi44NywxMiwxMi43OGw3LjIx''@;'; put 'put ''LDQuMTJabTgsNi4wOS03LDRWMjIuNDRsNy00WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMzLDJIMjIuMWExLDEsMCwwLDAsMCwyaDguNTNsLTguODIsOWExLDEsMCwxLDAsMS40MywxLjRMMzIsNS40NlYxMy45YTEs''@;'; put 'put ''MSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsMzMsMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xMi40NiwxMC43M2ExLDEsMCwwLDAtMSwwbC04LjY4LDVMMTIsMjFsOS4xOS01LjI2WiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTIsMjcuNzNhMSwxLDAsMCwwLC41Ljg3TDExLDMzLjQ2di0xMUwyLDE3LjI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTEzLDMzLjQ2''@;'; put 'put ''bDguNS00Ljg2YTEsMSwwLDAsMCwuNS0uODdWMTcuMjlsLTksNS4xNVoiLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUhlbGl4PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNOC44OCwxMy4wN2EuOS45LDAsMCwx''@;'; put 'put ''LS40OS0xLjY2bDguOTMtNS43M2EuOS45LDAsMSwxLDEsMS41Mkw5LjM3LDEyLjkyQS45LjksMCwwLDEsOC44OCwxMy4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTMuMjUsMTUuMTFhLjkuOSwwLDAsMS0u''@;'; put 'put ''NDktMS42NkwxOCwxMC4wOGEuOS45LDAsMSwxLDEsMS41MkwxMy43NCwxNUEuOS45LDAsMCwxLDEzLjI1LDE1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOS43MiwzMC4yM2EuOS45LDAsMCwxLS40OS0x''@;'; put 'put ''LjY2bDguOTMtNS43M2EuOS45LDAsMCwxLDEsMS41MkwyMC4yLDMwLjA5QS45LjksMCwwLDEsMTkuNzIsMzAuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE4LjkyLDI1Ljk0YS45LjksMCwwLDEtLjQ5LTEu''@;'; put 'put ''NjZsNS4yNS0zLjM3YS45LjksMCwxLDEsMSwxLjUxTDE5LjQsMjUuOEEuODkuODksMCwwLDEsMTguOTIsMjUuOTRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgZD0iTTIxLjU2LDUuNjlhMy41OSwzLjU5LDAsMCwxLC4x''@;'; put 'put ''NSwzLjUzTDE4LjgzLDE1aDIuMjVsMi40My00Ljg3YTUuNjEsNS42MSwwLDAsMC01LTguMTRIMTMuMjZsLTEsMmg2LjIyQTMuNjEsMy42MSwwLDAsMSwyMS41Niw1LjY5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0zMi45MSwyMC43OEE1LjUzLDUuNTMsMCwwLDAsMjcuNjYsMTdIOS4zMWEzLjU0LDMuNTQsMCwwLDEtMy41Ni0zLjY3LDMuNjEsMy42MSwwLDAsMSwuNDItMS41NGw0LjI2LTguNDlhMSwxLDAsMSwwLTEuNzktLjlMNC40LDEwLjg0QTUuNjcsNS42NywwLDAsMCw0LDE1LjIyLDUuNTMsNS41''@;'; put 'put ''MywwLDAsMCw5LjI4LDE5aDcuNmwtMy40NCw2Ljg3YTUuNjQsNS42NCwwLDAsMCwxLjUsNi45MkE1LjM4LDUuMzgsMCwwLDAsMTguNDEsMzRoNS4yNWwxLTJIMTguNDNhMy41OCwzLjU4LDAsMCwxLTMuMjItNS4yMUwxOS4xMSwxOWg4LjU0YTMuNDIsMy40MiwwLDAsMSwyLjE1LjcxLDMuNTcs''@;'; put 'put ''My41NywwLDAsMSwxLDQuNDNsLTQuMTIsOC4yMmExLDEsMCwxLDAsMS43OS45bDQuMDYtOC4xQTUuNjcsNS42NywwLDAsMCwzMi45MSwyMC43OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxOS42M0E1LjU1''@;'; put 'put ''LDUuNTUsMCwwLDAsMjcuNDIsMTdIMTAuMDZhNC4zNiw0LjM2LDAsMCwxLTMuNjctMiw0LjA3LDQuMDcsMCwwLDEtLjE5LTQuMTNsMy42Mi03LDEuNDIsMS42My0yLjc0LDUuMyw4Ljg0LTUuNjZhLjkxLjkxLDAsMCwxLDEsMS41M0w3Ljg0LDEzLjM4YTIuMTMsMi4xMywwLDAsMCwuMjQuNTIs''@;'; put 'put ''Mi4yOCwyLjI4LDAsMCwwLDEuNjUsMUwxOC4xMSw5LjVhLjkxLjkxLDAsMCwxLDEsMS41MkwxMywxNC45NEgyMC44bDIuNDEtNC44MmE1LjYsNS42LDAsMCwwLTUtOC4xMkg5YTEsMSwwLDAsMC0uOS41NkwzLjg4LDEwLjg5YTUuNiw1LjYsMCwwLDAsNSw4LjEyaDcuNjVsLTMuNDMsNi44N2E1''@;'; put 'put ''LjYsNS42LDAsMCwwLDUsOC4xMmg5LjI4YTEsMSwwLDAsMCwuOTMtLjY1bDQuMTQtOC4yNEE1LjU4LDUuNTgsMCwwLDAsMzIuMTYsMTkuNjNaTTE3Ljc1LDI1LjU3QS45MS45MSwwLDAsMSwxOCwyNC4zMWw2LTMuODhBLjkxLjkxLDAsMSwxLDI1LDIybC02LDMuODhhLjkxLjkxLDAsMCwxLTEu''@;'; put 'put ''MjYtLjI3Wk0yOSwyNC4zNGwtOSw1Ljc4YS45MS45MSwwLDEsMS0xLTEuNTNsOS01Ljc4YS45MS45MSwwLDEsMSwxLDEuNTNaIi8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVGbGFzaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuNDMsMjcuMjgsMjMsMTQuODRWNGgxYTEsMSwwLDAs''@;'; put 'put ''MCwwLTJIMTJhMSwxLDAsMCwwLDAsMmgxVjE0Ljg0TDQuNTEsMjcuMzZBNC4yOSw0LjI5LDAsMCwwLDUsMzIuOCw0LjM4LDQuMzgsMCwwLDAsOC4xNSwzNEgyOGE0LjI0LDQuMjQsMCwwLDAsMy40Mi02LjcyWk0yOS44NSwzMWEyLjYyLDIuNjIsMCwwLDEtMiwxSDhhMi4yLDIuMiwwLDAsMS0y''@;'; put 'put ''LjA2LTEuNDEsMi42OCwyLjY4LDAsMCwxLC4yOS0yLjE3bDMtNC40NCwxNCwwLTEuMzEtMkgxMC41N0wxNSwxNS40NlY0aDZWMTUuNDZsOC44NCwxMy4wNUEyLjIzLDIuMjMsMCwwLDEsMjkuODUsMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0zMS40OSwyNy40LDIzLDE0Ljk0VjRoMWExLDEsMCwwLDAsMC0ySDEyLjA4YTEsMSwwLDAsMCwwLDJIMTNWMTQuOTRMNC41OCwyNy4zMWE0LjMxLDQuMzEsMCwwLDAtLjc4LDNBNC4yMyw0LjIzLDAsMCwwLDgsMzRIMjcuODZBNC4zNiw0LjM2LDAsMCwwLDMx''@;'; put 'put ''LDMyLjgsNC4yMyw0LjIzLDAsMCwwLDMxLjQ5LDI3LjRaTTE1LDE1LjQ5VjRoNlYxNS40OUwyNi4xNSwyM0g5Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZUFkbWluaXN0cmF0b3I9KDAsYS5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTE0LjY4LDE0LjgxYTYuNzYsNi43NiwwLDEsMSw2Ljc2LTYuNzVBNi43Nyw2Ljc3LDAsMCwxLDE0LjY4LDE0LjgxWm0wLTExLjUxYTQuNzYsNC43NiwwLDEsMCw0Ljc2LDQuNzZBNC43Niw0Ljc2LDAsMCwwLDE0LjY4LDMuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE2LjQyLDMxLjY4QTIuMTQsMi4xNCwwLDAsMSwxNS44LDMwSDRWMjQuMjJhMTQuODEsMTQuODEsMCwwLDEsMTEuMDktNC42OGwuNzIsMGEyLjIsMi4yLDAsMCwxLC42Mi0xLjg1bC4xMi0uMTFjLS40NywwLTEtLjA2''@;'; put 'put ''LTEuNDYtLjA2QTE2LjQ3LDE2LjQ3LDAsMCwwLDIuMiwyMy4yNmExLDEsMCwwLDAtLjIuNlYzMGEyLDIsMCwwLDAsMiwySDE2LjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi44NywxNi4yOWEuMzcuMzcs''@;'; put 'put ''MCwwLDEsLjE1LDAsLjQyLjQyLDAsMCwwLS4xNSwwWiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjY4LDIzLjMybC0yLS42MWE3LjIxLDcuMjEsMCwwLDAtLjU4LTEuNDFsMS0xLjg2QS4zOC4zOCwwLDAs''@;'; put 'put ''MCwzMiwxOWwtMS40NS0xLjQ1YS4zNi4zNiwwLDAsMC0uNDQtLjA3bC0xLjg0LDFhNy4xNSw3LjE1LDAsMCwwLTEuNDMtLjYxbC0uNjEtMmEuMzYuMzYsMCwwLDAtLjM2LS4yNEgyMy44MmEuMzYuMzYsMCwwLDAtLjM1LjI2bC0uNjEsMmE3LDcsMCwwLDAtMS40NC42bC0xLjgyLTFhLjM1LjM1''@;'; put 'put ''LDAsMCwwLS40My4wN0wxNy42OSwxOWEuMzguMzgsMCwwLDAtLjA2LjQ0bDEsMS44MkE2Ljc3LDYuNzcsMCwwLDAsMTgsMjIuNjlsLTIsLjZhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1QS4zNS4zNSwwLDAsMCwxNiwyNmwyLC42MWE3LDcsMCwwLDAsLjYsMS40MWwtMSwxLjkxYS4zNi4zNiww''@;'; put 'put ''LDAsMCwuMDYuNDNsMS40NSwxLjQ1YS4zOC4zOCwwLDAsMCwuNDQuMDdsMS44Ny0xYTcuMDksNy4wOSwwLDAsMCwxLjQuNTdsLjYsMmEuMzguMzgsMCwwLDAsLjM1LjI2aDIuMDVhLjM3LjM3LDAsMCwwLC4zNS0uMjZsLjYxLTIuMDVhNi45Miw2LjkyLDAsMCwwLDEuMzgtLjU3bDEuODksMWEu''@;'; put 'put ''MzYuMzYsMCwwLDAsLjQzLS4wN0wzMiwzMC40QS4zNS4zNSwwLDAsMCwzMiwzMGwtMS0xLjg4YTcsNywwLDAsMCwuNTgtMS4zOWwyLS42MWEuMzYuMzYsMCwwLDAsLjI2LS4zNVYyMy42N0EuMzYuMzYsMCwwLDAsMzMuNjgsMjMuMzJaTTI0Ljg1LDI4YTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMu''@;'; put 'put ''MzNBMy4zNCwzLjM0LDAsMCwxLDI0Ljg1LDI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxNC42NyIgY3k9IjguMyIgcj0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi40NCwzMS44MmEyLjE1LDIuMTUsMCwwLDEtLjM4LTIuNTVsLjUzLTEtMS4wOS0uMzNBMi4xNCwyLjE0LDAsMCwxLDE0LDI1Ljg0VjIzLjc5YTIuMTYsMi4xNiwwLDAsMSwxLjUzLTIuMDdsMS4wOS0uMzMtLjUyLTFhMi4xNywyLjE3LDAsMCwxLC4z''@;'; put 'put ''NS0yLjUyLDE4LjkyLDE4LjkyLDAsMCwwLTIuMzItLjE2QTE1LjU4LDE1LjU4LDAsMCwwLDIsMjMuMDd2Ny43NWExLDEsMCwwLDAsMSwxSDE2LjQ0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43LDIzLjQ2bC0y''@;'; put 'put ''LS42YTYuNzMsNi43MywwLDAsMC0uNTgtMS40MmwxLTEuODZhLjM1LjM1LDAsMCwwLS4wNy0uNDNsLTEuNDUtMS40NmEuMzguMzgsMCwwLDAtLjQzLS4wN2wtMS44NSwxYTcuNzQsNy43NCwwLDAsMC0xLjQzLS42bC0uNjEtMmEuMzguMzgsMCwwLDAtLjM2LS4yNUgyMy44NGEuMzguMzgsMCww''@;'; put 'put ''LDAtLjM1LjI2bC0uNiwyYTYuODUsNi44NSwwLDAsMC0xLjQ1LjYxbC0xLjgxLTFhLjM4LjM4LDAsMCwwLS40NC4wNmwtMS40NywxLjQ0YS4zNy4zNywwLDAsMC0uMDcuNDRsMSwxLjgyQTcuMjQsNy4yNCwwLDAsMCwxOCwyMi44M2wtMiwuNjFhLjM2LjM2LDAsMCwwLS4yNi4zNXYyLjA1YS4z''@;'; put 'put ''Ni4zNiwwLDAsMCwuMjYuMzVsMiwuNjFhNy4yOSw3LjI5LDAsMCwwLC42LDEuNDFsLTEsMS45YS4zNy4zNywwLDAsMCwuMDcuNDRMMTkuMTYsMzJhLjM4LjM4LDAsMCwwLC40NC4wNmwxLjg3LTFhNy4wOSw3LjA5LDAsMCwwLDEuNC41N2wuNiwyLjA1YS4zOC4zOCwwLDAsMCwuMzYuMjZoMi4w''@;'; put 'put ''NWEuMzguMzgsMCwwLDAsLjM1LS4yNmwuNi0yLjA1YTYuNjgsNi42OCwwLDAsMCwxLjM4LS41N2wxLjg5LDFhLjM4LjM4LDAsMCwwLC40NC0uMDZMMzIsMzAuNTVhLjM4LjM4LDAsMCwwLC4wNi0uNDRsLTEtMS44OGE2LjkyLDYuOTIsMCwwLDAsLjU3LTEuMzhsMi0uNjFhLjM5LjM5LDAsMCww''@;'; put 'put ''LC4yNy0uMzVWMjMuODJBLjQuNCwwLDAsMCwzMy43LDIzLjQ2Wm0tOC44Myw0LjcyYTMuMzQsMy4zNCwwLDEsMSwzLjMzLTMuMzRBMy4zNCwzLjM0LDAsMCwxLDI0Ljg3LDI4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgJyksbC5DbHJT''@;'; put 'put ''aGFwZUhhcmREcml2ZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsOGEyLDIsMCwwLDAtMi0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJaTTMyLDI4SDRWOEgzMlYyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjEwLjI1IiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5LjgxIiBjeT0iMTAuMjUiIHI9IjEuMjUiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNi4yMSIgY3k9IjI1LjQyIiByPSIxLjI1IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI5''@;'; put 'put ''LjgxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTExLjg4LDE4LjA4YTMuNTksMy41OSwwLDEsMCwzLjU5LTMuNTksMy44NCwzLjg0LDAsMCwwLS45MS4xM0wxNSwxNi4xNmEy''@;'; put 'put ''LjA4LDIuMDgsMCwwLDEsLjUtLjA3LDIsMiwwLDEsMS0yLDIsMS42NCwxLjY0LDAsMCwxLC4wOC0uNUwxMiwxNy4xNkEzLjUzLDMuNTMsMCwwLDAsMTEuODgsMTguMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik0xNS40NywyNS43M2E3LjY2LDcuNjYsMCwwLDEtNy42NS03LjY1LDcuNTUsNy41NSwwLDAsMSwuMjctMkw2LjU0LDE1LjdhOS4yNCw5LjI0LDAsMCwwLDE3LjgsNC45NUgyMi42NkE3LjY0LDcuNjQsMCwwLDEsMTUuNDcsMjUuNzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4yMiwxNy44M2EuOC44LDAsMCwwLS44LS44SDI0LjY2YTkuMjYsOS4yNiwwLDAsMC05LjE5LTguMiw5LjM2LDkuMzYsMCwwLDAtMi4zOC4zMmwuNDIsMS41NGE3Ljg2LDcuODYsMCwwLDEsMi0uMjZBNy42Niw3LjY2LDAs''@;'; put 'put ''MCwxLDIzLDE3SDIwLjkyYS44LjgsMCwwLDAsMCwxLjZoNi41QS44LjgsMCwwLDAsMjguMjIsMTcuODNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAs''@;'; put 'put ''MiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMTIsMTcuMTZsMS41NC40MmExLjY0LDEuNjQsMCwwLDAtLjA4LjUsMiwyLDAsMSwwLDItMiwyLjA4LDIuMDgsMCwwLDAtLjUuMDdsLS40MS0xLjU0YTMuODQsMy44NCwwLDAsMSwuOTEtLjEzLDMuNTksMy41OSwwLDEsMS0z''@;'; put 'put ''LjU5LDMuNTlBMy41MywzLjUzLDAsMCwxLDEyLDE3LjE2Wk01LjMxLDhBMS4yNSwxLjI1LDAsMSwxLDQuMDYsOS4yNSwxLjI1LDEuMjUsMCwwLDEsNS4zMSw4Wm0wLDIwLjA2YTEuMjUsMS4yNSwwLDEsMSwxLjI1LTEuMjVBMS4yNSwxLjI1LDAsMCwxLDUuMzEsMjguMDZabTEwLjE2LS43M0E5''@;'; put 'put ''LjIyLDkuMjIsMCwwLDEsNi41NCwxNS43bDEuNTUuNDFhNy41NSw3LjU1LDAsMCwwLS4yNywyLDcuNjQsNy42NCwwLDAsMCwxNC44NCwyLjU3aDEuNjhBOS4yNSw5LjI1LDAsMCwxLDE1LjQ3LDI3LjMzWm0xMi04LjdoLTYuNWEuOC44LDAsMCwxLDAtMS42SDIzYTcuNjYsNy42NiwwLDAsMC03''@;'; put 'put ''LjU3LTYuNiw3Ljg2LDcuODYsMCwwLDAtMiwuMjZsLS40Mi0xLjU0YTkuMzYsOS4zNiwwLDAsMSwyLjM4LS4zMkE5LjI2LDkuMjYsMCwwLDEsMjQuNjYsMTdoMi43NmEuOC44LDAsMCwxLDAsMS42Wm0zLjM5LDkuNDNhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEs''@;'; put 'put ''MzAuODEsMjguMDZabTAtMTcuNTZhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuODEsMTAuNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz0oMCxhLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMjYsNS43NEExLjc0LDEuNzQsMCwwLDAsMjQuMjYsNEgzLjc0QTEuNzQsMS43NCwwLDAsMCwyLDUuNzRWMjAuMjZBMS43NCwxLjc0LDAsMCwwLDMuNzQsMjJINFY2SDI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNMzAsOS43NEExLjc0LDEuNzQsMCwwLDAsMjguMjYsOEg3Ljc0QTEuNzQsMS43NCwwLDAsMCw2LDkuNzRWMjQuMjZBMS43NCwxLjc0LDAsMCwwLDcuNzQsMjZIOFYxMEgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLjI2LDEySDExLjc0QTEuNzQsMS43NCwwLDAsMCwxMCwxMy43NFYyOC4yNkExLjc0LDEuNzQsMCwwLDAsMTEuNzQsMzBIMzIuMjZBMS43NCwxLjc0LDAsMCwwLDM0LDI4LjI2VjEzLjc0QTEuNzQsMS43NCwwLDAsMCwzMi4yNiwxMlpNMzIsMjhI''@;'; put 'put ''MTJWMTRIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwyMy42OGEyLjY0LDIuNjQsMCwxLDAtMi43LTIuNjNBMi42NywyLjY3LDAsMCwwLDE5Ljk0LDIzLjY4Wm0wLTMuODdhMS4yNCwxLjI0LDAs''@;'; put 'put ''MSwxLTEuMjksMS4yNEExLjI3LDEuMjcsMCwwLDEsMTkuOTQsMTkuODFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOS45NCwxNi4yMmE0LjkzLDQuOTMsMCwwLDEsNC45NSw0LjM1SDIzLjcxVjIyaDQuNDFh''@;'; put 'put ''LjcuNywwLDAsMCwwLTEuNEgyNi4zMWE2LjMzLDYuMzMsMCwwLDAtNi4zNy01Ljc1LDYuNTgsNi41OCwwLDAsMC0xLjQ4LjE3bC4zNSwxLjM3QTQuNzMsNC43MywwLDAsMSwxOS45NCwxNi4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggZD0iTTE5Ljk0LDI3LjI3YTYuNDIsNi40MiwwLDAsMCw1LjY3LTMuMzVIMjMuOTNhNSw1LDAsMCwxLTQsMS45NSw0LjkxLDQuOTEsMCwwLDEtNS00LjgyLDUuMTYsNS4xNiwwLDAsMSwuMDgtLjc5TDEzLjYzLDIwYTcsNywwLDAsMC0uMDksMUE2LjMyLDYuMzIsMCwwLDAs''@;'; put 'put ''MTkuOTQsMjcuMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNiw1Ljc0QTEuNzQsMS43NCwwLDAsMCwyNC4yNiw0SDMuNzRBMS43NCwxLjc0LDAsMCwwLDIsNS43NFYyMC4yNkExLjc0LDEuNzQsMCwwLDAs''@;'; put 'put ''My43NCwyMkg0VjZIMjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDkuNzRBMS43NCwxLjc0LDAsMCwwLDI4LjI2LDhINy43NEExLjc0LDEuNzQsMCwwLDAsNiw5Ljc0VjI0LjI2QTEuNzQsMS43NCwwLDAsMCw3''@;'; put 'put ''Ljc0LDI2SDhWMTBIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYyLDIyLjZBMS41NSwxLjU1LDAsMSwwLDE4LDIxLjA1LDEuNiwxLjYsMCwwLDAsMTkuNjIsMjIuNloiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIuMjYsMTJIMTEuNzRBMS43NCwxLjc0LDAsMCwwLDEwLDEzLjc0VjI4LjI2QTEuNzQsMS43NCwwLDAsMCwxMS43NCwzMEgzMi4yNkExLjc0LDEuNzQsMCwwLDAsMzQsMjguMjZWMTMuNzRBMS43NCwxLjc0LDAs''@;'; put 'put ''MCwwLDMyLjI2LDEyWk0xOS42MiwxNy43NGEzLjMxLDMuMzEsMCwxLDEtMy4zOCwzLjMxQTMuMzUsMy4zNSwwLDAsMSwxOS42MiwxNy43NFptMCwxMS4xM2E3Ljk0LDcuOTQsMCwwLDEtOC03LjgyLDcuODMsNy44MywwLDAsMSwuMTEtMS4yOWwxLjc1LjNhNS4zNiw1LjM2LDAsMCwwLS4xMSwx''@;'; put 'put ''LDYuMTgsNi4xOCwwLDAsMCw2LjI4LDYuMDYsNi4zNSw2LjM1LDAsMCwwLDUtMi40NmgyLjFBOC4wNiw4LjA2LDAsMCwxLDE5LjYyLDI4Ljg3Wk0yOS44OSwyMi4ySDI0LjM2VjIwLjQ0aDEuNDhBNi4xOSw2LjE5LDAsMCwwLDE5LjYyLDE1YTYuNDgsNi40OCwwLDAsMC0xLjQxLjE2bC0uNDUt''@;'; put 'put ''MS43YTguMTYsOC4xNiwwLDAsMSwxLjg2LS4yMiw4LDgsMCwwLDEsOCw3LjIxaDIuMjZhLjg4Ljg4LDAsMCwxLDAsMS43NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVOVk1lPSgwLGEuY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yNywyMlYxNGEyLDIsMCwwLDAtMi0ySDExYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwySDI1QTIsMiwwLDAsMCwyNywyMlpNMTEsMTRIMjV2OEgxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0i''@;'; put 'put ''MTkiIHk9IjYiIHdpZHRoPSI0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjUuMDEiIHk9IjYiIHdpZHRoPSIxLjk3IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTUuOCw4SDE2Ljg3VjZoLTExTDcuNzgsNC4wOGExLDEsMCwwLDAsMC0xLjQyLDEsMSwwLDAsMC0xLjQxLDBMMiw3LDYuMzcsMTEuNGExLDEsMCwwLDAsMS40MSwwLDEsMSwwLDAsMCwwLTEuNDFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS42MSwyNC42OGExLDEsMCwwLDAtMS40MSwwLDEsMSwwLDAsMCwwLDEuNDJMMzAuMSwyOEgxOXYySDMwLjJsLTIsMmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCww''@;'; put 'put ''LDAsLjcxLS4yOUwzNCwyOS4wNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTMiIHk9IjI4IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjkiIHk9IjI4IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz5cbiAgICAgICAgJyksbC5DbHJTaGFwZVNTRD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0''@;'; put 'put ''QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMTAu''@;'; put 'put ''MjUiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIxMC4yNSIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8Y2lyY2xlIGN4PSI2LjIxIiBjeT0iMjUuNDIiIHI9IjEuMjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjkuODEiIGN5PSIyNS40MiIgcj0iMS4yNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTUiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAsMTguNjJjMS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMnMtLjUzLDEuMDktMS41NSwxLjA5YTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0y''@;'; put 'put ''LjUycy0xLjE1LTIuMDUtMi44Ny0yLjQ0Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTItMS4yMUExLjI1LDEuMjUsMCwwLDEsMTAsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xQTQuNTgsNC41OCwwLDAsMCwxMCwxMy42OWMtMS43NCwwLTMsMS4wNS0zLDIuNDlTOC4yNiwxOC4yMiwx''@;'; put 'put ''MCwxOC42MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3LjgzLDIwLjkzYTQsNCwwLDAsMS0yLjcxLTEuMTFsLS44NiwxLjA2YTUsNSwwLDAsMCwzLjUyLDEuMzRjMiwwLDMuMS0xLDMuMS0yLjUyUzE5Ljcz''@;'; put 'put ''LDE3LjY1LDE4LDE3LjI2Yy0xLjMxLS4zLTEuOTItLjU0LTEuOTItMS4yMUExLjI1LDEuMjUsMCwwLDEsMTcuNDgsMTVhMy42OCwzLjY4LDAsMCwxLDIuMzcsMWwuODEtMS4xYTQuNTYsNC41NiwwLDAsMC0zLjEyLTEuMTVjLTEuNzMsMC0zLDEuMDUtMywyLjQ5czEuMTksMiwyLjg5LDIuNDRj''@;'; put 'put ''MS4zMi4zMSwxLjkxLjU0LDEuOTEsMS4yMlMxOC44NSwyMC45MywxNy44MywyMC45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LjksMThjMC0yLjQxLTEuOTItNC4xMi00LjY0LTQuMTJoLTIuOXY4LjI0''@;'; put 'put ''aDIuOUMyOCwyMi4wOCwyOS45LDIwLjM3LDI5LjksMThabS02LTIuNzZoMS41NmEyLjc3LDIuNzcsMCwxLDEsMCw1LjUzSDIzLjg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwy''@;'; put 'put ''LDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTUuMjEsOEExLjI1LDEuMjUsMCwxLDEsNCw5LjI1LDEuMjUsMS4yNSwwLDAsMSw1LjIxLDhabTAsMjBhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsNS4yMSwyOFpt''@;'; put 'put ''NS4wNi01Ljc4YTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2LTEuMDZhNCw0LDAsMCwwLDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlzLS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjItMi40OSwzLTIuNDlhNC41OCw0LjU4LDAsMCwxLDMuMTIs''@;'; put 'put ''MS4xNWwtLjgxLDEuMUEzLjY4LDMuNjgsMCwwLDAsMTAsMTVhMS4yNSwxLjI1LDAsMCwwLTEuMzksMS4wOGMwLC42Ny42MS45MSwxLjkyLDEuMjEsMS43Mi4zOSwyLjg3Ljk0LDIuODcsMi40NFMxMi4yNCwyMi4yMiwxMC4yNywyMi4yMlptNy41MSwwYTUsNSwwLDAsMS0zLjUyLTEuMzRsLjg2''@;'; put 'put ''LTEuMDZhNCw0LDAsMCwwLDIuNzEsMS4xMWMxLDAsMS41NS0uNSwxLjU1LTEuMDlzLS41OS0uOTEtMS45MS0xLjIyYy0xLjctLjQtMi44OS0uODktMi44OS0yLjQ0czEuMjMtMi40OSwzLTIuNDlhNC41Niw0LjU2LDAsMCwxLDMuMTIsMS4xNWwtLjgxLDEuMWEzLjY4LDMuNjgsMCwwLDAtMi4z''@;'; put 'put ''Ny0xLDEuMjUsMS4yNSwwLDAsMC0xLjM5LDEuMDhjMCwuNjcuNjEuOTEsMS45MiwxLjIxLDEuNzIuMzksMi44Ny45NCwyLjg3LDIuNDRTMTkuNzUsMjIuMjIsMTcuNzgsMjIuMjJabTQuNTgtLjE0VjEzLjg0aDIuOWMyLjcyLDAsNC42NCwxLjcxLDQuNjQsNC4xMlMyOCwyMi4wOCwyNS4yNiwy''@;'; put 'put ''Mi4wOFpNMzAuNjksMjhhMS4yNSwxLjI1LDAsMSwxLDEuMjUtMS4yNUExLjI1LDEuMjUsMCwwLDEsMzAuNjksMjhabTAtMTcuNWExLjI1LDEuMjUsMCwxLDEsMS4yNS0xLjI1QTEuMjUsMS4yNSwwLDAsMSwzMC42OSwxMC41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy44NiwxNS4yaDEuNTZhMi43NywyLjc3LDAsMSwxLDAsNS41M0gyMy44NloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+XG4gICAgICAgICcpLGwuQ2xyU2hhcGVCbHVldG9vdGg9KDAsYS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTI2LjY0LDI1LjI3LDE5LDE3LjUzLDE5LDMsMjUuMjEsOS40bC01LjY1LDUuNzlMMjEsMTYuNjJsNS42OC01LjgyYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIuMDgsMi4wOCwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzVjE1LjM4TDEwLjA1LDguMjdBMSwx''@;'; put 'put ''LDAsMCwwLDguNjIsOS42NkwxNi43OSwxOCw5LjA2LDI2YTEsMSwwLDAsMCwwLDEuNDEsMSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwuNzItLjMxTDE3LDIwLjY4VjMzYTIuMDcsMi4wNywwLDAsMCwuNzEsMS42MkEyLDIsMCwwLDAsMTksMzVhMS45NCwxLjk0LDAsMCwwLDEuNDItLjZsNi4y''@;'; put 'put ''My02LjM4QTIsMiwwLDAsMCwyNi42NCwyNS4yN1pNMTksMzMuMDVWMjAuMjlsNi4yMSw2LjM2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gIDxwYXRoIGQ9Ik0yNi41MiwyNC41MmwtNS42NS01LjgzLTEuNDYtMS41di0xMkwyMy43OSw5LjdsLTMu''@;'; put 'put ''NiwzLjcxLDIuMjQsMi4yOSw0LjA5LTQuMjJhMi41NCwyLjU0LDAsMCwwLDAtMy41NkwyMC41NywxLjc4QTIuNTQsMi41NCwwLDAsMCwxNi4yLDMuNTVWMTMuODZsLTUuNTMtNS43YTEuNiwxLjYsMCwxLDAtMi4zLDIuMjNMMTUuNzUsMThsLTcsNy4xOWExLjYsMS42LDAsMCwwLDAsMi4yNiwx''@;'; put 'put ''LjYzLDEuNjMsMCwwLDAsMS4xMi40NSwxLjU4LDEuNTgsMCwwLDAsMS4xNS0uNDlsNS4xMS01LjI3VjMyLjQ1YTIuNTMsMi41MywwLDAsMCwxLjU5LDIuMzYsMi40NCwyLjQ0LDAsMCwwLC45NS4xOSwyLjU2LDIuNTYsMCwwLDAsMS44My0uNzdsNS45NS02LjE1QTIuNTQsMi41NCwwLDAsMCwy''@;'; put 'put ''Ni41MiwyNC41MlpNMTkuNCwzMC44M1YyMS43N2w0LjM5LDQuNTNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVCbHVldG9vdGhPZmY9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LDMsMjUuMjIsOS40bC01LjY2LDUuOEwyMSwx''@;'; put 'put ''Ni42M2w1LjY4LTUuODNhMiwyLDAsMCwwLDAtMi43OEwyMC40OCwxLjdBMiwyLDAsMCwwLDE4Ljg1LDEsMiwyLDAsMCwwLDE3LDN2MTEuNGwyLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNC43Nyw1LDMuMzYsNi40MiwxNS44OSwx''@;'; put 'put ''OSw5LjA2LDI2YTEsMSwwLDAsMCwuNzEsMS43LDEsMSwwLDAsMCwuNzItLjMxTDE3LDIwLjY4VjMyLjk0YTIuMDgsMi4wOCwwLDAsMCwuNzEsMS42M0EyLDIsMCwwLDAsMTksMzVhMiwyLDAsMCwwLDEuNDItLjZsNS40MS01LjU0LDMuNTQsMy41M0wzMC43NywzMVpNMTksMzMuMDV2LTExbDUu''@;'; put 'put ''NDEsNS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOS4zMSw1LjE3LDIzLjcsOS43bC0zLjU5LDMuNzEsMi4yNCwyLjI5LDQuMDktNC4yMmEyLjU2LDIuNTYsMCwwLDAsMC0zLjU2bC02LTYuMTRhMi41MSwyLjUxLDAsMCwwLTIu''@;'; put 'put ''NzctLjU5LDIuNTQsMi41NCwwLDAsMC0xLjYsMi4zNnYxMGwzLjIxLDMuMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjUsNSwzLjA5LDYuNDIsMTUuMTcsMTguNTEsOC43LDI1LjE5QTEuNiwxLjYsMCwwLDAsOS44NSwyNy45LDEuNTcs''@;'; put 'put ''MS41NywwLDAsMCwxMSwyNy40MWw1LjExLTUuMjdWMzIuNDVhMi41NCwyLjU0LDAsMCwwLDEuNiwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUuMTksMi41NSwyLjU1LDAsMCwwLDEuODItLjc3bDUuMTItNS4yOSwzLjQ5LDMuNDhMMzAuNSwzMVpNMTkuODEsMzAuODNWMjIuNjVsNCw0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlUHJvY2Vzc09uVk09KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjQ5LDI2LjI4YTEsMSwwLDAsMC0xLjItLjdsLTIuNDkuNjdhMTQuMjMsMTQuMjMsMCwwLDAsMi40LTYuNzVBMTQuNDgsMTQu''@;'; put 'put ''NDgsMCwwLDAsMjcuMzcsNy4zNSwxLDEsMCwwLDAsMjYsNy40NGExLDEsMCwwLDAsLjA5LDEuNDEsMTIuNDUsMTIuNDUsMCwwLDEsNC4xNiwxMC40NiwxMi4xOSwxMi4xOSwwLDAsMS0yLDUuNzRMMjgsMjIuNTRhMSwxLDAsMSwwLTEuOTUuMTZsLjUsNi40NCw2LjI1LTEuNjZBMSwxLDAsMCww''@;'; put 'put ''LDMzLjQ5LDI2LjI4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuMzEsMTcuMDhhMS4wNiwxLjA2LDAsMCwwLC40NC4xNiwxLDEsMCwwLDAsMS4xMi0uODVBMTIuMjEsMTIuMjEsMCwwLDEsMTguNjksNS44NEwxNi40NSw3LjM3YTEs''@;'; put 'put ''MSwwLDAsMCwuNDcsMS43OUExLDEsMCwwLDAsMTcuNTYsOWw1LjMzLTMuNjZMMTguMzMuNzZhMSwxLDAsMSwwLTEuMzksMS4zOGwxLjcsMS43QTE0LjIsMTQuMiwwLDAsMCwzLjg5LDE2LjEyLDEsMSwwLDAsMCw0LjMxLDE3LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIxLjczLDI5LjkzYTEyLDEyLDAsMCwxLTQuODQuNTEsMTIuMywxMi4zLDAsMCwxLTkuNTctNi4zbDIuNDkuOTNhMSwxLDAsMCwwLC42OS0xLjg0bC00LjU5LTEuN2gwTDQuNDQsMjEsMy4zMywyNy4zNWExLDEsMCwwLDAsLjc5LDEuMTNsLjE3LDBhMSwx''@;'; put 'put ''LDAsMCwwLDEtLjgxbC40Mi0yLjRhMTQuMywxNC4zLDAsMCwwLDExLDcuMTQsMTMuOTEsMTMuOTEsMCwwLDAsNS42My0uNiwxLDEsMCwwLDAtLjYtMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIyLDEzSDE0YTEsMSwwLDAsMC0x''@;'; put 'put ''LDF2OGExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxNEExLDEsMCwwLDAsMjIsMTNabS0xLDhIMTVWMTVoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGwuQ2xyU2hhcGVBc3NpZ25Vc2VyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0xOCwxN2E3LjQ2LDcuNDYsMCwxLDAtNy40NS03LjQ2QTcuNDYsNy40NiwwLDAsMCwxOCwxN1pNMTgsNC4wN2E1LjQ2LDUuNDYsMCwxLDEtNS40NSw1LjQ1QTUuNDYsNS40NiwwLDAsMSwxOCw0LjA3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBh''@;'; put 'put ''dGggZD0iTTYsMzEuODlWMjUuNzdhMTYuMTMsMTYuMTMsMCwwLDEsMTItNSwxNi42MSwxNi42MSwwLDAsMSw4LjcxLDIuMzNsMS4zNS0xLjUxQTE4LjUzLDE4LjUzLDAsMCwwLDE4LDE4Ljc0LDE3LjcsMTcuNywwLDAsMCw0LjIxLDI0LjhhMSwxLDAsMCwwLS4yMS42djYuNDlBMi4wNiwyLjA2''@;'; put 'put ''LDAsMCwwLDYsMzRIMTguMzlsLTEuOS0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMxLjg5LDMwLDMySDI2Ljg1bC0xLjgsMkgzMGEyLjA2LDIuMDYsMCwwLDAsMi0yLjA3VjI2LjJsLTIsMi4yM1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zNC43NiwxOC42MmExLDEsMCwwLDAtMS40MS4wOGwtMTEuNjIsMTMtNS4yLTUuNTlBMSwxLDAsMCwwLDE1LjEyLDI2YTEsMSwwLDAsMC0uMDYsMS40Mmw2LjY5LDcuMkwzNC44NCwyMEExLDEsMCwwLDAsMzQuNzYsMTgu''@;'; put 'put ''NjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48Y2lyY2xlIGN4PSIxNy45OSIgY3k9IjEwLjM2IiByPSI2LjgxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xMiwyNi42NWEyLjgsMi44LDAsMCwxLDQu''@;'; put 'put ''ODUtMS44TDIwLjcxLDI5bDYuODQtNy42M0ExNi44MSwxNi44MSwwLDAsMCwxOCwxOC41NSwxNi4xMywxNi4xMywwLDAsMCw1LjUsMjRhMSwxLDAsMCwwLS4yLjYxVjMwYTIsMiwwLDAsMCwxLjk0LDJoOC41N2wtMy4wNy0zLjNBMi44MSwyLjgxLDAsMCwxLDEyLDI2LjY1WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguNzYsMzJhMiwyLDAsMCwwLDEuOTQtMlYyNi4yNEwyNS41NywzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjc3LDE4LjYyYTEsMSwwLDAsMC0xLjQyLjA4''@;'; put 'put ''bC0xMS42MiwxMy01LjItNS41OUExLDEsMCwwLDAsMTQuMTIsMjZhMSwxLDAsMCwwLDAsMS40Mmw2LjY4LDcuMkwzMy44NCwyMEExLDEsMCwwLDAsMzMuNzcsMTguNjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPicpLGwuQ2xyU2hhcGVBdG9tPSgwLGEuY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxNC4wNWE0LDQsMCwxLDAsNCw0QTQsNCwwLDAsMCwxOCwxNC4wNVptMCw2LjQ0YTIuNDIsMi40MiwwLDEsMSwyLjQyLTIuNDJBMi40MiwyLjQyLDAsMCwxLDE4LDIwLjQ5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+PHBhdGggZD0iTTI0LjIzLDExLjcxYTM5LjE0LDM5LjE0LDAsMCwwLTQuNTctMy45MiwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LTEuNzJjLjMyLS4xMi42Mi0uMjEuOTItLjNhMi4yOCwyLjI4LDAsMCwwLDMuODEtLjQ2LDMuMzEsMy4zMSwwLDAsMSwxLjkyLjg0YzEuMTksMS4xOSwxLjIy''@;'; put 'put ''LDMuNTkuMSw2LjU4LjQ5LjY1Ljk0LDEuMzEsMS4zNSwyLC4xNy0uNC4zNS0uNzkuNDktMS4xOCwxLjQ3LTMuODUsMS4yOC03LS41My04Ljc4YTUuMjksNS4yOSwwLDAsMC0zLjMzLTEuNDQsMi4yOSwyLjI5LDAsMCwwLTQuMzEuNTRjLS4zNy4xMS0uNzQuMjItMS4xMy4zN2EyNS43OSwyNS43''@;'; put 'put ''OSwwLDAsMC00LjU3LDIuMzVBMjYuMjEsMjYuMjEsMCwwLDAsMTMuMjgsNC4yYy0zLjg1LTEuNDYtNy0xLjI4LTguNzcuNTNDMi44NSw2LjQsMi41OCw5LjE3LDMuNjgsMTIuNTlhMi4yOCwyLjI4LDAsMCwwLDEuNTksMy42N2MuMzIuNjEuNjcsMS4yMiwxLjA2LDEuODJBMjUuNTQsMjUuNTQs''@;'; put 'put ''MCwwLDAsNCwyMi42NmMtMS40NywzLjg0LTEuMjgsNywuNTMsOC43N2E1LjYzLDUuNjMsMCwwLDAsNC4xMiwxLjUxLDEzLjM0LDEzLjM0LDAsMCwwLDQuNjUtMSwyNi4yMSwyNi4yMSwwLDAsMCw0LjU4LTIuMzVBMjUuNzksMjUuNzksMCwwLDAsMjIuNDMsMzJhMTQuMTYsMTQuMTYsMCwwLDAs''@;'; put 'put ''My42NS45QTIuMywyLjMsMCwwLDAsMzAuNDYsMzJhNC41NSw0LjU1LDAsMCwwLC43NC0uNTdjMS44MS0xLjgxLDItNC45My41My04Ljc3QTMyLjY4LDMyLjY4LDAsMCwwLDI0LjIzLDExLjcxWk0xMi41NywzMC4wOWMtMywxLjE1LTUuNDUsMS4xMy02LjY1LS4wOHMtMS4yMy0zLjYyLS4wNy02''@;'; put 'put ''LjY0YTIyLjc3LDIyLjc3LDAsMCwxLDEuNzEtMy40OCw0MC4xOSw0MC4xOSwwLDAsMCwzLjkyLDQuNTZjLjQzLjQzLjg3Ljg1LDEuMzEsMS4yNXEuOS0uNDYsMS44My0xLjA1Yy0uNTgtLjUyLTEuMTYtMS0xLjcyLTEuNjFhMzQsMzQsMCwwLDEtNS43NC03LjQ3QTIuMjksMi4yOSwwLDAsMCw1''@;'; put 'put ''LjUsMTEuNjloMGMtLjc1LTIuNS0uNjItNC40OS40My01LjU0YTMuNzIsMy43MiwwLDAsMSwyLjcyLS45MiwxMS40LDExLjQsMCwwLDEsMy45My44NCwyMi44NiwyMi44NiwwLDAsMSwzLjQ4LDEuNzIsMzkuMTQsMzkuMTQsMCwwLDAtNC41NywzLjkyYy0uNDQuNDQtLjg3LjktMS4yOSwxLjM2''@;'; put 'put ''YTIwLjI3LDIwLjI3LDAsMCwwLDEsMS44NWMuNTQtLjYxLDEuMDktMS4yMSwxLjY4LTEuOGEzNi4zMywzNi4zMywwLDAsMSw1LTQuMTcsMzYuODgsMzYuODgsMCwwLDEsNC45NSw0LjE3LDM2LjI2LDM2LjI2LDAsMCwxLDQuMTcsNSwzNywzNywwLDAsMS00LjE3LDVBMzAuNjgsMzAuNjgsMCww''@;'; put 'put ''LDEsMTIuNTcsMzAuMDlaTTI5Ljc5LDMwbC0uMTYuMTNhMi4yNywyLjI3LDAsMCwwLTMuNS43MiwxMi41NywxMi41NywwLDAsMS0zLS43NywyMiwyMiwwLDAsMS0zLjQ4LTEuNzIsMzkuMTQsMzkuMTQsMCwwLDAsNC41Ny0zLjkyLDM4LjI2LDM4LjI2LDAsMCwwLDMuOTItNC41NiwyMi44OCwy''@;'; put 'put ''Mi44OCwwLDAsMSwxLjcyLDMuNDhDMzEsMjYuMzksMzEsMjguODEsMjkuNzksMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjQuMjMsMTEuNzFhMzkuMTQsMzkuMTQsMCwwLDAtNC41Ny0zLjkyLDIyLjg2LDIyLjg2LDAsMCwxLDMu''@;'; put 'put ''NDgtMS43MmMuMzItLjEyLjYyLS4yMS45Mi0uM2EyLjI4LDIuMjgsMCwwLDAsMy44MS0uNDYsMy4zMSwzLjMxLDAsMCwxLDEuOTIuODRjMS4xOSwxLjE5LDEuMjIsMy41OS4xLDYuNTguNDkuNjUuOTQsMS4zMSwxLjM1LDIsLjE3LS40LjM1LS43OS40OS0xLjE4LDEuNDctMy44NSwxLjI4LTct''@;'; put 'put ''LjUzLTguNzhhNS4yOSw1LjI5LDAsMCwwLTMuMzMtMS40NCwyLjI5LDIuMjksMCwwLDAtNC4zMS41NGMtLjM3LjExLS43NC4yMi0xLjEzLjM3YTI1Ljc5LDI1Ljc5LDAsMCwwLTQuNTcsMi4zNUEyNi4yMSwyNi4yMSwwLDAsMCwxMy4yOCw0LjJjLTMuODUtMS40Ni03LTEuMjgtOC43Ny41M0My''@;'; put 'put ''Ljg1LDYuNCwyLjU4LDkuMTcsMy42OCwxMi41OWEyLjI4LDIuMjgsMCwwLDAsMS41OSwzLjY3Yy4zMi42MS42NywxLjIyLDEuMDYsMS44MkEyNS41NCwyNS41NCwwLDAsMCw0LDIyLjY2Yy0xLjQ3LDMuODQtMS4yOCw3LC41Myw4Ljc3YTUuNjMsNS42MywwLDAsMCw0LjEyLDEuNTEsMTMuMzQs''@;'; put 'put ''MTMuMzQsMCwwLDAsNC42NS0xLDI2LjIxLDI2LjIxLDAsMCwwLDQuNTgtMi4zNUEyNS43OSwyNS43OSwwLDAsMCwyMi40MywzMmExNC4xNiwxNC4xNiwwLDAsMCwzLjY1LjlBMi4zLDIuMywwLDAsMCwzMC40NiwzMmE0LjU1LDQuNTUsMCwwLDAsLjc0LS41N2MxLjgxLTEuODEsMi00LjkzLjUz''@;'; put 'put ''LTguNzdBMzIuNjgsMzIuNjgsMCwwLDAsMjQuMjMsMTEuNzFaTTEyLjU3LDMwLjA5Yy0zLDEuMTUtNS40NSwxLjEzLTYuNjUtLjA4cy0xLjIzLTMuNjItLjA3LTYuNjRhMjIuNzcsMjIuNzcsMCwwLDEsMS43MS0zLjQ4LDQwLjE5LDQwLjE5LDAsMCwwLDMuOTIsNC41NmMuNDMuNDMuODcuODUs''@;'; put 'put ''MS4zMSwxLjI1cS45LS40NiwxLjgzLTEuMDVjLS41OC0uNTItMS4xNi0xLTEuNzItMS42MWEzNCwzNCwwLDAsMS01Ljc0LTcuNDdBMi4yOSwyLjI5LDAsMCwwLDUuNSwxMS42OWgwYy0uNzUtMi41LS42Mi00LjQ5LjQzLTUuNTRhMy43MiwzLjcyLDAsMCwxLDIuNzItLjkyLDExLjQsMTEuNCww''@;'; put 'put ''LDAsMSwzLjkzLjg0LDIyLjg2LDIyLjg2LDAsMCwxLDMuNDgsMS43MiwzOS4xNCwzOS4xNCwwLDAsMC00LjU3LDMuOTJjLS40NC40NC0uODcuOS0xLjI5LDEuMzZhMjAuMjcsMjAuMjcsMCwwLDAsMSwxLjg1Yy41NC0uNjEsMS4wOS0xLjIxLDEuNjgtMS44YTM2LjMzLDM2LjMzLDAsMCwxLDUt''@;'; put 'put ''NC4xNywzNi44OCwzNi44OCwwLDAsMSw0Ljk1LDQuMTcsMzYuMjYsMzYuMjYsMCwwLDEsNC4xNyw1LDM3LDM3LDAsMCwxLTQuMTcsNUEzMC42OCwzMC42OCwwLDAsMSwxMi41NywzMC4wOVpNMjkuNzksMzBsLS4xNi4xM2EyLjI3LDIuMjcsMCwwLDAtMy41LjcyLDEyLjU3LDEyLjU3LDAsMCwx''@;'; put 'put ''LTMtLjc3LDIyLDIyLDAsMCwxLTMuNDgtMS43MiwzOS4xNCwzOS4xNCwwLDAsMCw0LjU3LTMuOTIsMzguMjYsMzguMjYsMCwwLDAsMy45Mi00LjU2LDIyLjg4LDIyLjg4LDAsMCwxLDEuNzIsMy40OEMzMSwyNi4zOSwzMSwyOC44MSwyOS43OSwzMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTcuOTkiIGN5PSIxOC4wNyIgcj0iMy4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi42NiAzLjExKSByb3RhdGUoLTkuMjIpIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVCYXJDb2Rl''@;'; put 'put ''PSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDdBMSwxLDAsMCwwLDQsOFYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDdBMSwxLDAsMCwwLDgsOFYyNmExLDEsMCww''@;'; put 'put ''LDAsMiwwVjhBMSwxLDAsMCwwLDksN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxMyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDE3LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjEsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMjEsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyNSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI5LDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDI5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz48cGF0aCBkPSJNMzMsN2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMzMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC04IiAvPicpLGwuQ2xyU2hhcGVDZER2ZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0''@;'; put 'put ''LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIyLjMzLDE4YTQuNDYsNC40NiwwLDEsMC00LjQ1LDQuNDZBNC40Niw0LjQ2LDAsMCwwLDIyLjMzLDE4Wk0xNy44OCwyMC45QTIu''@;'; put 'put ''ODYsMi44NiwwLDEsMSwyMC43MywxOCwyLjg2LDIuODYsMCwwLDEsMTcuODgsMjAuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNy44OCw3LjQzSDE4VjUuODRoLS4xMkExMi4yMSwxMi4yMSwwLDAsMCw1LjY4LDE3Ljc1aDEuNkEx''@;'; put 'put ''MC42MSwxMC42MSwwLDAsMSwxNy44OCw3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMwLjA4LDE4SDI4LjQ5djBBMTAuNjEsMTAuNjEsMCwwLDEsMTguMjUsMjguNjN2MS42QTEyLjIyLDEyLjIyLDAsMCwwLDMwLjA5LDE4UzMw''@;'; put 'put ''LjA4LDE4LDMwLjA4LDE4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTE4LDExVjkuNDRoLS4xMmE4LjYyLDguNjIsMCwwLDAtOC42LDguMzJoMS42YTcsNywwLDAsMSw3LTYuNzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTguMjUsMjV2MS42QTguNjEsOC42MSwwLDAsMCwyNi40OCwxOHYwaC0xLjZ2MEE3LDcsMCwwLDEsMTguMjUsMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMTguMTcsMS45MmExNiwx''@;'; put 'put ''NiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxOC4xNywxLjkyWk0yNi4yMywxOGgxLjU0YTkuNjEsOS42MSwwLDAsMS05LjYsOS41M0gxOFYyNmguMTdBOC4wNyw4LjA3LDAsMCwwLDI2LjIzLDE4Wk02LjA1LDE4SDQuNDV2LS4wOEExMy43MiwxMy43MiwwLDAsMSwxOCw0LjIxdjEuNkExMi4x''@;'; put 'put ''MywxMi4xMywwLDAsMCw2LjA1LDE3LjkyWm00LjA1LDBIOC41NnYtLjA4QTkuNjEsOS42MSwwLDAsMSwxOCw4LjMyVjkuODZhOC4wNyw4LjA3LDAsMCwwLTcuOSw4LjA2Wm00LjMyLS4wOGEzLjc1LDMuNzUsMCwxLDEsMy43NSwzLjc1QTMuNzUsMy43NSwwLDAsMSwxNC40MiwxNy45MlptMy43''@;'; put 'put ''NSwxMy43MUgxOFYzMGguMTdBMTIuMTMsMTIuMTMsMCwwLDAsMzAuMjgsMThoMS42QTEzLjczLDEzLjczLDAsMCwxLDE4LjE3LDMxLjYzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlQ29udGFpbmVyPSgwLGEuY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGQ9Ik0zMiwzMEg0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDMyYTIsMiwwLDAsMSwyLDJWMjhBMiwyLDAsMCwxLDMyLDMwWk00LDhWMjhIMzJWOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik05LDI1LjNhLjguOCww''@;'; put 'put ''LDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDksMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45MiwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjgu''@;'; put 'put ''OCwwLDAsMSwxNC45MiwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTIxLDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDIxLDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMjcsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMjcsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMiw2''@;'; put 'put ''SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNOS42MywyNC4yM2EuNzkuNzksMCwwLDEtLjgxLjc3QS43OS43OSwwLDAsMSw4LDI0LjIzVjExLjc3QS43OS43OSwwLDAsMSw4LjgyLDExYS43OS43OSwwLDAsMSwuODEu''@;'; put 'put ''NzdabTYsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEsLjgyLjc3Wm02LjIxLDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEt''@;'; put 'put ''Ljc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4xMiwwYS43OS43OSwwLDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwuODIuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwu''@;'; put 'put ''Q2xyU2hhcGVDb250YWluZXJWb2x1bWU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTgsMTcuNThhMzIuMzUsMzIuMzUsMCwwLDAsNi4zLjkyLDQuMTMsNC4xMywwLDAsMSwuOTItMS4zNywzMC45NCwzMC45NCwwLDAsMS03LjIyLTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNiwyOFY4LjE5Yy4zNC0uNzYsNC4zMS0yLjExLDExLTIuMTFzMTAuNjcsMS4zNSwxMSwydi4zYy0uODIuNzktNC41OCwyLjA1LTExLjExLDIuMDVBMzMuNDgsMzMuNDgsMCwwLDEsOCw5LjQ0djEuNDRhMzUuNiwzNS42LDAsMCwwLDguODksMWM0''@;'; put 'put ''LjI5LDAsOC44LS41OCwxMS4xMS0xLjgydjUuMDdhNS4zLDUuMywwLDAsMS0xLjgxLjg4SDMwVjguMTJjMC0zLjE5LTguMTctNC0xMy00cy0xMywuODUtMTMsNFYyOEM0LDMwLjYzLDkuMzksMzEuNjgsMTQsMzJWMzBDOS4xMywyOS42Niw2LjI4LDI4LjYyLDYsMjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNOCwyNC4yOGEzMS4zLDMxLjMsMCwwLDAsNiwuODl2LTEuNGEyOC45MywyOC45MywwLDAsMS02LS45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMiwxOEgx''@;'; put 'put ''OGEyLDIsMCwwLDAtMiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDIxLjdhLjcuNywwLDAsMC0uNy43''@;'; put 'put ''djcuNDlhLjcuNywwLDAsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjEsMjEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0yNSwyMS44MmEuNy43LDAsMCwwLS43LjdWMzBhLjcuNywwLDEsMCwxLjQsMFYyMi41MkEuNy43LDAsMCww''@;'; put 'put ''LDI1LDIxLjgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC03IiAvPjxwYXRoIGQ9Ik0zMiwxOEgxOGEyLDIsMCwwLDAtMiwyVjMyYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYyMEEyLDIsMCwwLDAsMzIsMThaTTE4LDMyVjIwSDMyVjMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48''@;'; put 'put ''cGF0aCBkPSJNMjEsMjEuN2EuNy43LDAsMCwwLS43Ljd2Ny40OWEuNy43LDAsMCwwLDEuNCwwVjIyLjRBLjcuNywwLDAsMCwyMSwyMS43WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMjUsMjEuODJhLjcuNywwLDAsMC0uNy43VjMwYS43Ljcs''@;'; put 'put ''MCwxLDAsMS40LDBWMjIuNTJBLjcuNywwLDAsMCwyNSwyMS44MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LDIxLjdhLjcuNywwLDAsMC0uNy43djcuNDlhLjcuNywwLDEsMCwxLjQsMFYyMi40QS43LjcsMCwwLDAsMjksMjEuN1oiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTE4LDE2SDI4VjguMTJjMC0xLjY4LTUuMzgtMy0xMi0zUzQsNi40NCw0LDguMTJWMjhjMCwxLjUsNC4zMywyLjc1LDEwLDNWMjUuMjJhMjkuMTcsMjkuMTcsMCwwLDEtOC0xLjI5VjIyLjQ0bC4yNC4xQTI2''@;'; put 'put ''LjYzLDI2LjYzLDAsMCwwLDE0LDIzLjgyVjIwYTQsNCwwLDAsMSwuMjktMS40N0EyOS4xOSwyOS4xOSwwLDAsMSw2LDE3LjIzVjE1Ljc1bC4yNC4wOWEyOSwyOSwwLDAsMCw5LDEuMzJoMEE0LDQsMCwwLDEsMTgsMTZaTTYsMTAuNTRWOS4wNWwuMjQuMDlBMzAuMTIsMzAuMTIsMCwwLDAsMTYs''@;'; put 'put ''MTAuNDcsMjguMzMsMjguMzMsMCwwLDAsMjYsOS4wNXYxLjVhMzIuNTMsMzIuNTMsMCwwLDEtMTAsMS4zMkEzMi40NCwzMi40NCwwLDAsMSw2LDEwLjU0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz4nKSxsLkNsclNoYXBlRmlsZVNoYXJlPSgwLGEuY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0zMCw5SDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5YTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMzAsOVptMCwyMEg2VjEzaDcuMzFhMiwyLDAsMCwwLDItMkg2VjdoNi40OWwy''@;'; put 'put ''LjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MUgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMS45MSwyMi40OGEyLjA2LDIuMDYsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2VjIwbDUuNjYtMi42NWEyLjA4LDIuMDgsMCwxLDAsLjA2''@;'; put 'put ''LTIuOTQsMi4xMiwyLjEyLDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIuMDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM2EyLjA5LDIuMDksMCwxLDAsMi4wOC0yLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48''@;'; put 'put ''cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFBMiwyLDAsMCwwLDMwLDlaTTYsN2g2LjQ5bDIuNzIsNEg2Wk0yMS45NCwyNi42NGEyLjA5LDIuMDksMCwwLDEt''@;'; put 'put ''Mi4xMS0yLjA2bDAtLjMtNS42Ny0yLjY2LS4wOC4wOGEyLjA4LDIuMDgsMCwxLDEsLjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4wOCwyLjA4LDAsMSwxLC41OCwxLjQ2TDE0Ljc1LDIwdi40N2w1LjcyLDIuNjZhMi4wNywyLjA3LDAsMSwxLDEuNDcsMy41NFoiIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZVFyQ29kZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNS42LDRBMS42LDEuNiwwLDAsMCw0LDUuNlYxMmg4VjRaTTEwLDEwSDZWNmg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+''@;'; put 'put ''PHBhdGggZD0iTTQsMzAuNEExLjYsMS42LDAsMCwwLDUuNiwzMkgxMlYyNEg0Wk02LDI2aDR2NEg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDMyaDYuNEExLjYsMS42LDAsMCwwLDMyLDMwLjRWMjRIMjRabTItNmg0djRIMjZa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuNCw0SDI0djhoOFY1LjZBMS42LDEuNiwwLDAsMCwzMC40LDRaTTMwLDEwSDI2VjZoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29u''@;'; put 'put ''IHBvaW50cz0iMjAgMTAgMjAgOCAxNiA4IDE2IDEyIDE4IDEyIDE4IDEwIDIwIDEwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cmVjdCB4PSIxMiIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC02IiAvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+PHBvbHlnb24gcG9pbnRzPSIyMCA2IDIwIDggMjIgOCAyMiA0IDE0IDQgMTQgOCAxNiA4IDE2IDYgMjAgNiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiIC8+PHJlY3QgeD0iNCIgeT0iMTQiIHdpZHRoPSIyIiBoZWlnaHQ9IjQiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05IiAvPjxwb2x5Z29uIHBvaW50cz0iMTIgMTYgMTIgMTggMTAgMTgg''@;'; put 'put ''MTAgMTQgOCAxNCA4IDE4IDYgMTggNiAyMCA0IDIwIDQgMjIgOCAyMiA4IDIwIDEwIDIwIDEwIDIyIDEyIDIyIDEyIDIwIDE0IDIwIDE0IDE2IDEyIDE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiIC8+PHBvbHlnb24gcG9pbnRzPSIyMCAxNiAyMiAxNiAy''@;'; put 'put ''MiAxOCAyNCAxOCAyNCAxNiAyNiAxNiAyNiAxNCAyMiAxNCAyMiAxMCAyMCAxMCAyMCAxMiAxOCAxMiAxOCAxNCAyMCAxNCAyMCAxNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTExIiAvPjxwb2x5Z29uIHBvaW50cz0iMTggMzAgMTQgMzAgMTQgMzIgMjIgMzIg''@;'; put 'put ''MjIgMzAgMjAgMzAgMjAgMjggMTggMjggMTggMzAiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xMiIgLz48cG9seWdvbiBwb2ludHM9IjIyIDIwIDIyIDE4IDIwIDE4IDIwIDE2IDE4IDE2IDE4IDE4IDE2IDE4IDE2IDIwIDE4IDIwIDE4IDIyIDIwIDIyIDIwIDIw''@;'; put 'put ''IDIyIDIwIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTMiIC8+PHJlY3QgeD0iMzAiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTQiIC8+PHJlY3QgeD0iMjIiIHk9IjIwIiB3aWR0''@;'; put 'put ''aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTUiIC8+PHBvbHlnb24gcG9pbnRzPSIzMCAxNCAyOCAxNCAyOCAxNiAyNiAxNiAyNiAxOCAyOCAxOCAyOCAyMCAzMCAyMCAzMCAxOCAzMiAxOCAzMiAxNiAzMCAxNiAzMCAxNCIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE2IiAvPjxyZWN0IHg9IjIwIiB5PSIyMiIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTE3IiAvPjxwb2x5Z29uIHBvaW50cz0iMTQgMjggMTYgMjggMTYgMjYgMTgg''@;'; put 'put ''MjYgMTggMjQgMTYgMjQgMTYgMjAgMTQgMjAgMTQgMjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xOCIgLz4nKSxsLkNsclNoYXBlVXNiPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC4yOSwxMS40YTEuNDksMS40OSwwLDAsMSwxLjI4LS43MmgxYTIu''@;'; put 'put ''ODksMi44OSwwLDAsMCwyLjc1LDIuMDksMywzLDAsMCwwLDAtNS45MSwyLjksMi45LDAsMCwwLTIuNjcsMS44MkgxNS41N2EzLjQ5LDMuNDksMCwwLDAtMywxLjY2bC0zLDQuODNoMi4zNlptNS0yLjk0QTEuMzYsMS4zNiwwLDEsMSwxOCw5LjgxLDEuMzIsMS4zMiwwLDAsMSwxOS4zMyw4LjQ2''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTM0LjMsMTcuMzdsLTYuMTEtMy42NmEuNy43LDAsMCwwLS43LDAsLjcxLjcxLDAsMCwwLS4zNi42MVYxN0g2LjkyYTIuMzMsMi4zMywwLDAsMSwuMzIsMS4xNywyLjQ3LDIuNDcsMCwxLDEt''@;'; put 'put ''Mi40Ny0yLjQ2LDIuMzcsMi4zNywwLDAsMSwxLjE1LjNsLjkzLTEuNzZBNC40NCw0LjQ0LDAsMSwwLDkuMTUsMTloMy41OGw0LjE3LDYuNjVhMy40OSwzLjQ5LDAsMCwwLDMsMS42NmgxLjY2djEuMjhhLjc5Ljc5LDAsMCwwLC44Ljc5aDQuNDlhLjc5Ljc5LDAsMCwwLC44LS43OXYtNC40YS43''@;'; put 'put ''OS43OSwwLDAsMC0uOC0uOEgyMi4zNGEuOC44LDAsMCwwLS44Ljh2MS4xMkgxOS44OGExLjUxLDEuNTEsMCwwLDEtMS4yOC0uNzJMMTUuMDksMTloMTJ2Mi42NmEuNjkuNjksMCwwLDAsLjM2LjYxLjY3LjY3LDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNi4xMS0zLjY2YS42OS42''@;'; put 'put ''OSwwLDAsMCwuMzQtLjZBLjcxLjcxLDAsMCwwLDM0LjMsMTcuMzdaTTIzLjE0LDI1SDI2djIuOEgyMy4xNFptNS4zOS00LjU2VjE1LjU1bDQsMi40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zNC43MiwxNy4zN2wtNS41MS0zLjMx''@;'; put 'put ''YS43MS43MSwwLDAsMC0xLjA3LjZWMTdIMTEuNzdsMy41Mi01LjZhMS40OSwxLjQ5LDAsMCwxLDEuMjgtLjcyaDEuNjRhMi40MSwyLjQxLDAsMCwwLDIuMjUsMS42MSwyLjQ4LDIuNDgsMCwwLDAsMC00Ljk1LDIuMzgsMi4zOCwwLDAsMC0yLjEzLDEuMzRIMTYuNTdhMy40OSwzLjQ5LDAsMCww''@;'; put 'put ''LTMsMS42Nkw5LjQxLDE3SDhhMy40NiwzLjQ2LDAsMSwwLC4wOCwyaDUuNjRsNC4xNSw2LjYyYTMuNDksMy40OSwwLDAsMCwzLDEuNjZoMi41OXYuOTJoNC40VjIzLjhoLTQuNHYxLjQ4SDIwLjg4YTEuNTEsMS41MSwwLDAsMS0xLjI4LS43MkwxNi4xMSwxOWgxMnYyLjI4YS43LjcsMCwwLDAs''@;'; put 'put ''LjM2LjYxLjcyLjcyLDAsMCwwLC4zNC4wOS42NS42NSwwLDAsMCwuMzYtLjFsNS41Mi0zLjMxYS43LjcsMCwwLDAsMC0xLjJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVSYWRhcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIs''@;'; put 'put ''MThjMCw3LjctNi4zLDE0LTE0LDE0Yy03LjcsMC0xNC02LjMtMTQtMTRDNCwxMC42LDkuNyw0LjUsMTcuMSw0djMuN2MtNS43LDAuNS05LjksNS41LTkuNCwxMS4yczUuNSw5LjksMTEuMiw5LjRcblx0YzUuMy0wLjUsOS40LTQuOSw5LjQtMTAuM2gtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNz''@;'; put 'put ''LTguMy0zLjctOC4zLTguM2MwLTQuMiwzLjEtNy44LDcuMy04LjN2NC40Yy0xLjgsMC40LTMuMSwyLTMuMSwzLjlcblx0YzAsMi4yLDEuOCw0LDQsNHM0LTEuOCw0LTRjMC0xLjgtMS4zLTMuNC0zLTMuOFYyLjFDMTguNiwyLDE4LjMsMiwxOCwyQzkuMiwyLDIsOS4yLDIsMThzNy4yLDE2LDE2''@;'; put 'put ''LDE2czE2LTcuMiwxNi0xNkgzMnogTTIwLDE4XG5cdGMwLDEuMS0wLjksMi0yLDJzLTItMC45LTItMnMwLjktMiwyLTJTMjAsMTYuOSwyMCwxOHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMiwxOGMwLDcuNy02LjIsMTQtMTQsMTRT''@;'; put 'put ''NCwyNS44LDQsMThjMC03LjQsNS43LTEzLjUsMTMuMS0xNHYzLjdjLTUuNywwLjUtOS44LDUuNS05LjMsMTEuMnM1LjUsOS44LDExLjIsOS4zXG5cdFx0YzUuMy0wLjUsOS4zLTQuOSw5LjMtMTAuMmgtMmMwLDQuNi0zLjcsOC4zLTguMyw4LjNTOS43LDIyLjYsOS43LDE4YzAtNC4yLDMuMi03''@;'; put 'put ''LjgsNy4zLTguMnY0LjRjLTIuMSwwLjYtMy40LDIuNy0yLjksNC45XG5cdFx0YzAuNiwyLjEsMi43LDMuNCw0LjksMi45YzIuMS0wLjYsMy40LTIuNywyLjktNC45Yy0wLjQtMS40LTEuNS0yLjUtMi45LTIuOVYyYy0wLjQsMC0wLjcsMC0xLjEsMGMtOC44LDAtMTYsNy4yLTE2LDE2XG5cdFx0''@;'; put 'put ''YzAsOC44LDcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZjMCwwLDAsMCwwLDBIMzJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVJbmR1Y3Rvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjQuMzEsMjUuODFjLTEuNzUsMC0zLTIu''@;'; put 'put ''NDktMy02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDBBMTIuNzksMTIuNzksMCwwLDEsMjEsMTkuNzZjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuNzksMTIuNzksMCwwLDEsMS43Mi02LjcsMi41NywyLjU3LDAsMCwwLTMuNzksMCwx''@;'; put 'put ''Mi43OSwxMi43OSwwLDAsMSwxLjcyLDYuN2MwLDMuNTYtMS4yMyw2LTMsNnMtMy0yLjQ5LTMtNmExMi44OCwxMi44OCwwLDAsMSwxLjcxLTYuNywyLjcsMi43LDAsMCwwLTEuODktLjg3QzcuMSwxMi4xOSw1LjY5LDEzLjcsNSwxNmwtLjIzLjdIMmExLDEsMCwwLDEsMC0ySDMuMjljMS4xLTIu''@;'; put 'put ''ODMsMy4wNi00LjU1LDUuMjQtNC41NWE0LjY3LDQuNjcsMCwwLDEsMy4xNiwxLjMyLDQuNjIsNC42MiwwLDAsMSwzLjE1LTEuMzJBNC42NSw0LjY1LDAsMCwxLDE4LDExLjUxYTQuNDMsNC40MywwLDAsMSw2LjMxLDAsNC42Nyw0LjY3LDAsMCwxLDMuMTYtMS4zMmMyLjE4LDAsNC4xNCwxLjcy''@;'; put 'put ''LDUuMjQsNC41NUgzNGExLDEsMCwwLDEsMCwySDMxLjI4bC0uMjMtLjdjLS43NC0yLjM0LTIuMTUtMy44NS0zLjU4LTMuODVhMi43LDIuNywwLDAsMC0xLjg5Ljg3LDEyLjg4LDEyLjg4LDAsMCwxLDEuNzEsNi43QzI3LjI5LDIzLjMyLDI2LjA3LDI1LjgxLDI0LjMxLDI1LjgxWk0xOCwxNC45''@;'; put 'put ''M2ExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxOCwxNC45M1ptNi4zMSwwYTExLjcxLDExLjcxLDAsMCwwLTEsNC44M2MwLDIuNTQuNjYsMy43NSwxLDQsLjMyLS4yNywxLTEuNDgsMS00QTEx''@;'; put 'put ''LjcxLDExLjcxLDAsMCwwLDI0LjMxLDE0LjkzWm0tMTIuNjIsMGExMS43MSwxMS43MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwxMS42OSwxNC45M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVSZXNpc3Rvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjkuNDMsMjYuMzRoMEExLjQ3LDEuNDcsMCwwLDEsMjgsMjUuMjJMMjQuODYsMTMuMTUsMjEuNzQsMjUuMjJhMS40OSwxLjQ5LDAsMCwxLTEuNDUsMS4xMmgwYTEuNDksMS40OSww''@;'; put 'put ''LDAsMS0xLjQ2LTEuMTJMMTUuNzEsMTMuMTUsMTIuNiwyNS4yMmExLjUxLDEuNTEsMCwwLDEtMi45MSwwTDYuNTcsMTMuMTUsNS4yMiwxOC4zN0gyYTEsMSwwLDAsMSwwLTJIMy42N2wxLjQ1LTUuNTlBMS40OCwxLjQ4LDAsMCwxLDYuNTcsOS42NmgwQTEuNDcsMS40NywwLDAsMSw4LDEwLjc4''@;'; put 'put ''bDMuMTIsMTIuMDcsMy4xMi0xMi4wN2ExLjQ5LDEuNDksMCwwLDEsMS40NS0xLjEyaDBhMS40OSwxLjQ5LDAsMCwxLDEuNDYsMS4xMmwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS41LDEuNSwwLDAsMSwyLjksMGwzLjEyLDEyLjA3LDEuMzUtNS4yMkgzNGExLDEsMCwwLDEsMCwySDMyLjMzbC0x''@;'; put 'put ''LjQ1LDUuNTlBMS40OCwxLjQ4LDAsMCwxLDI5LjQzLDI2LjM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZUNhcGFjaXRvcj0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUsMzQuMDZhMSwxLDAsMCwxLTEtMVYzLjE1YTEs''@;'; put 'put ''MSwwLDEsMSwyLDBWMzMuMDZBMSwxLDAsMCwxLDE1LDM0LjA2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwyMSwzNC4wNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC40NiwxOUgzYTEsMSwwLDAsMSwwLTJIMTQuNDZhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMywxOUgyMS41''@;'; put 'put ''NGExLDEsMCwwLDEsMC0ySDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxsLkNsclNoYXBlU3F1aWQ9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDdhMSwxLDAsMCwxLTEtMVYzLjE5YTEsMSwwLDAsMSwyLDBW''@;'; put 'put ''NkExLDEsMCwwLDEsMTgsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNGExLDEsMCwwLDEtMS0xVjMwYTEsMSwwLDAsMSwyLDB2M0ExLDEsMCwwLDEsMTgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNNy40MSwxOGwxLjc4LTEuNzdhMSwxLDAsMSwwLTEuNDItMS40Mkw2LDE2LjU5LDQuMjMsMTQuODFhMSwxLDAsMSwwLTEuNDIsMS40Mkw0LjU5LDE4LDIuODEsMTkuNzdhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEt''@;'; put 'put ''LjI5TDYsMTkuNDFsMS43NywxLjc4YTEsMSwwLDAsMCwxLjQyLDAsMSwxLDAsMCwwLDAtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik02LDEzLjc2bC4zNi0uMzZhMywzLDAsMCwxLDIuMTEtLjg4LDExLDExLDAsMCwxLDE5LDAs''@;'; put 'put ''MywzLDAsMCwxLDIuMTIuODhsLjM2LjM2LjItLjJhMTMsMTMsMCwwLDAtMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMwLDIyLjI0bC0uMzYuMzZhMywzLDAsMCwxLTIuMTIuODgsMTEsMTEsMCwwLDEtMTksMCwzLDMsMCww''@;'; put 'put ''LDEtMi4xMi0uODhMNiwyMi4yNGwtLjIuMmExMywxMywwLDAsMCwyNC40LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDEsMThsMS43OC0xLjc3YTEsMSwwLDAsMC0xLjQyLTEuNDJMMzAsMTYuNTlsLTEuNzctMS43OGExLDEs''@;'; put 'put ''MCwxLDAtMS40MiwxLjQyTDI4LjU5LDE4bC0xLjc4LDEuNzdhMSwxLDAsMCwwLDAsMS40MiwxLDEsMCwwLDAsLjcxLjI5LDEsMSwwLDAsMCwuNzEtLjI5TDMwLDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxsLkNsclNoYXBlSG9zdEdyb3VwPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMS4wOCwzNGgtMTRBMS4wOCwxLjA4LDAsMCwxLDYsMzNWMTJhMS4wOCwxLjA4LDAsMCwxLDEuMDgtMS4wOGgxNEExLjA4LDEuMDgsMCwwLDEsMjIuMTYsMTJW''@;'; put 'put ''MzNBMS4wOCwxLjA4LDAsMCwxLDIxLjA4LDM0Wk04LjE2LDMxLjg4SDIwVjEzSDguMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxyZWN0IHg9IjEwLjA4IiB5PSIxNC45NiIgd2lkdGg9IjgiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI2LjEsMjcuODFoLTJWOWgtMTJWN2gxM2ExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG48cGF0aCBkPSJNMzAuMDgsMjNoLTJWNWgtMTFWM2gxMmExLDEsMCww''@;'; put 'put ''LDEsMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMTMuMDgiIHk9IjI3Ljg4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyLjE2IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cblxuPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE1LjA4LDMxIEwxLjA4LDMxIEMwLjUxMzQyNzE5NywzMS4wMDE1NTY0IDAuMDQxOTY2Mzc2NSwzMC41NjUwMTg2IDAsMzAgTDAsOSBDMCw4LjQwMzUzMjQ3IDAuNDgzNTMyNDcsNy45MiAxLjA4LDcuOTIgTDE1LjA4LDcuOTIg''@;'; put 'put ''QzE1LjY3NjQ2NzUsNy45MiAxNi4xNiw4LjQwMzUzMjQ3IDE2LjE2LDkgTDE2LjE2LDMwIEMxNi4xMTgwMzM2LDMwLjU2NTAxODYgMTUuNjQ2NTcyOCwzMS4wMDE1NTY0IDE1LjA4LDMxIFogTTQuMDgsMTEuOTYgTDQuMDgsMTMuOTYgTDEyLjA4LDEzLjk2IEwxMi4wOCwxMS45NiBMNC4wOCwx''@;'; put 'put ''MS45NiBaIE03LjA4LDI0Ljg4IEw3LjA4LDI3LjA0IEw5LjA4LDI3LjA0IEw5LjA4LDI0Ljg4IEw3LjA4LDI0Ljg4IFoiIC8+XG48cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjAuMSwyNC44MSBMMTguMSwyNC44MSBMMTguMSw2IEw2LjEsNiBMNi4x''@;'; put 'put ''LDQgTDE5LjEsNCBDMTkuNjUyMjg0Nyw0IDIwLjEsNC40NDc3MTUyNSAyMC4xLDUgTDIwLjEsMjQuODEgWiIgLz5cbjxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yNC4wOCwyMCBMMjIuMDgsMjAgTDIyLjA4LDIgTDExLjA4LDIgTDExLjA4LDAgTDIz''@;'; put 'put ''LjA4LDAgQzIzLjYzMjI4NDcsMCAyNC4wOCwwLjQ0NzcxNTI1IDI0LjA4LDEgTDI0LjA4LDIwIFoiIC8+JyksbC5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjA2LDMwYTEsMSwwLDAsMS0xLTFWOGgtMmExLDEsMCwwLDEsMC0yaDRWMjlBMSwx''@;'; put 'put ''LDAsMCwxLDYuMDYsMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzAuMDYsMjdoLTI1VjloMjVhMywzLDAsMCwxLDMsM1YyNEEzLDMsMCwwLDEsMzAuMDYsMjdabS0yMy0yaDIzYTEsMSwwLDAsMCwxLTFWMTJhMSwxLDAsMCww''@;'; put 'put ''LTEtMWgtMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMjAiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxyZWN0IHg9IjIyLjA2''@;'; put 'put ''IiB5PSIxNCIgd2lkdGg9IjYiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE5LjA2LDIyaC04VjIwaDdWMTRoMnY3QTEsMSwwLDAsMSwxOS4wNiwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC01Ii8+JyksbC5DbHJTaGFwZU5vZGVHcm91cD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNTMsMjEuNThsLTQuOTQtMi44M1YxMy4wOWExLDEsMCwwLDAtLjUxLS44N0wyMi42NCw5LjFhMSwxLDAsMCwwLTEsMEwxNi4yLDEyLjIyYTEsMSwwLDAsMC0uNTEuODd2NS42''@;'; put 'put ''NmwtNC45NCwyLjgzYTEsMSwwLDAsMC0uNS44N3Y2LjI0YTEsMSwwLDAsMCwuNS44Nmw1LjQ1LDMuMTJhMSwxLDAsMCwwLDEsMGw0Ljk1LTIuODMsNC45NSwyLjgzYTEsMSwwLDAsMCwuNS4xNCwxLDEsMCwwLDAsLjQ5LS4xNGw1LjQ1LTMuMTJhMSwxLDAsMCwwLC41LS44NlYyMi40NUExLDEs''@;'; put 'put ''MCwwLDAsMzMuNTMsMjEuNThaTTIyLjE0LDExLjEybDQuNDUsMi41NVYxOWwtNC40NiwyLjU2LTQuNDQtMi42VjEzLjY3Wk0xNi42OSwzMC42NWwtNC40NC0yLjU0VjIzbDQuNjgtMi42OCw0LjQsMi41N1YyOFpNMzIsMjguMTFsLTQuNDQsMi41NEwyMi45MywyOFYyMi45M2w0LjQ2LTIuNTdM''@;'; put 'put ''MzIsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNywyNy40M2ExLDEsMCwwLDEtMS0xVjE5LjlBMSwxLDAsMCwxLDYuNSwxOWw0Ljk1LTIuODNWMTAuNTRhMSwxLDAsMCwxLC41LS44N2w1LjIxLTNhMSwxLDAsMCwxLDEuMzcu''@;'; put 'put ''MzcsMSwxLDAsMCwxLS4zOCwxLjM3bC00LjcsMi42OHY1LjY2YTEsMSwwLDAsMS0uNTEuODdMOCwyMC40OHY1Ljk1QTEsMSwwLDAsMSw3LDI3LjQzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMsMjUuMDVhMSwxLDAsMCwxLTEt''@;'; put 'put ''MVYxNy41M2ExLDEsMCwwLDEsLjUtLjg2bDUtMi44NFY4LjE3QTEsMSwwLDAsMSw4LDcuMzFsNS4yNS0zYTEsMSwwLDAsMSwxLDEuNzRMOS40NSw4Ljc1djUuNjZhMSwxLDAsMCwxLS41MS44N0w0LDE4LjExdjUuOTRBMSwxLDAsMCwxLDMsMjUuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGwuQ2xyU2hhcGVOb2Rlcz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTAuNSwzNC4yOSwyLDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk00LDI4LjIzLDEwLjUsMzIsMTcsMjguMjNWMjAuNzRMMTAuNSwxNyw0LDIwLjc0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI1LjUsMzQuMjksMTcsMjkuMzlWMTkuNThsOC41LTQuOSw4LjUsNC45djkuODFaTTE5LDI4LjIzLDI1LjUsMzIsMzIsMjguMjNWMjAuNzRMMjUuNSwxNywxOSwyMC43NFoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xOCwyMS4zMmwtOC41LTQuOVY2LjYxTDE4LDEuNzFsOC41LDQuOXY5LjgxWm0tNi41LTYuMDZMMTgsMTlsNi41LTMuNzVWNy43N0wxOCw0LDExLjUsNy43N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zIi8+JyksbC5DbHJTaGFwZU5hbWVzcGFjZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsNC4xOGExLDEsMCwxLDAtMSwxLjczbDYsMy40N1YyNi42MmwtNiwzLjQ3YTEsMSwwLDAsMC0uMzcsMS4zNiwxLDEsMCwwLDAsMS4zNy4zN2w3LTQuMDVWOC4y''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik05LjY4LDI5LjksNCwyNi42MlY5LjM4TDkuNjgsNi4xYTEsMSwwLDEsMC0xLTEuNzNMMiw4LjIzVjI3Ljc3bDYuNjgsMy44NmExLDEsMCwwLDAsMS4zNy0uMzdBMSwxLDAsMCwwLDku''@;'; put 'put ''NjgsMjkuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMCwxMlYyNGEyLDIsMCwwLDAsMiwySDI0YTIsMiwwLDAsMCwyLTJWMTJhMiwyLDAsMCwwLTItMkgxMkEyLDIsMCwwLDAsMTAsMTJabTcsMHY1SDEyVjEyWm0tNSw3aDV2''@;'; put 'put ''NUgxMlptNyw1VjE5aDV2NVptNS03SDE5VjEyaDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLGwuQ2xyU2hhcGVOb2RlPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwzMC42Niw3LDI0LjMzVjExLjY3TDE4LDUuMzRsMTEsNi4zM1YyNC4z''@;'; put 'put ''M1pNOSwyMy4xOGw5LDUuMTcsOS01LjE3VjEyLjgyTDE4LDcuNjUsOSwxMi44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksbC5DbHJTaGFwZVBvZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYsMzJIMTBhNiw2LDAsMCwxLTYtNlYxMGE2''@;'; put 'put ''LDYsMCwwLDEsNi02SDI2YTYsNiwwLDAsMSw2LDZWMjZBNiw2LDAsMCwxLDI2LDMyWk0xMCw2YTQsNCwwLDAsMC00LDRWMjZhNCw0LDAsMCwwLDQsNEgyNmE0LDQsMCwwLDAsNC00VjEwYTQsNCwwLDAsMC00LTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICA8cGF0aCBkPSJNMjYuNTYsMTVIMTUuNDRBMS40MywxLjQzLDAsMCwwLDE0LDE2LjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDE1LjQ0LDI2SDI2LjU2QTEuNDMsMS40MywwLDAsMCwyOCwyNC41NlYxNi40NEExLjQzLDEuNDMsMCwwLDAsMjYuNTYsMTVaTTI2LDI0SDE2VjE3SDI2WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTEyLjQsMTlIMTBWMTJIMjB2MS40aDJ2LTJBMS40MywxLjQzLDAsMCwwLDIwLjU2LDEwSDkuNDRBMS40MywxLjQzLDAsMCwwLDgsMTEuNDR2OC4xMkExLjQzLDEuNDMsMCwwLDAsOS40NCwy''@;'; put 'put ''MWgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxsLkNsckNvbnRyb2xMdW49KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44''@;'; put 'put ''M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik02LDI3LjUzVjEwLjNjMi45LDEuNDMsOC4zNCwxLjg4LDEyLDEuODhzOS4xLS40NSwxMi0xLjg4djUuMTFjLS45MS44Mi01LDIuMTMtMTIsMi4xM0EzNC44MSwzNC44MSwwLDAsMSw4''@;'; put 'put ''LDE2LjMzVjE4YTQwLjg2LDQwLjg2LDAsMCwwLDEwLDEuMTZjMy40NiwwLDkuMTMtLjQ1LDEyLTEuOTF2My4yM2gyVjhoMHMwLDAsMC0uMDdjMC0zLjM1LTguOC00LjI1LTE0LTQuMjVTNCw0LjU4LDQsNy45M3YxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4y''@;'; put 'put ''OCw2LjEzLDI3Ljg0LDYsMjcuNTNaTTE4LDUuNjhjNy4xNSwwLDExLjUzLDEuNDQsMTIsMi4yNS0uNDYuODEtNC44NCwyLjI1LTEyLDIuMjVTNi4zMSw4LjY5LDYsOEM2LjMxLDcuMTgsMTAuNzEsNS42OCwxOCw1LjY4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4wOSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuXG4gIDxwYXRoIGQ9Ik04LDI0LjU5YTI1LjUsMjUuNSwwLDAsMCwyLjc1''@;'; put 'put ''LjU5bDEuMjEtMS40MWEyNC4xMywyNC4xMywwLDAsMS00LS44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIuMDksMjJIMTUuNDZsLTUuNDEsNi4zMUwxNS40OSwzNGgxNi42YTIsMiwwLDAsMCwy''@;'; put 'put ''LTJWMjMuOTNBMiwyLDAsMCwwLDMyLjA5LDIyWm0wLDEwSDE2LjM0bC0zLjU5LTMuNzdMMTYuMzgsMjRIMzIuMDl2OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEs''@;'; put 'put ''MUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTE4LDE3LjU0QTM0LjgxLDM0LjgxLDAsMCwxLDgsMTYuMzNWMThhNDAuODYsNDAuODYsMCwwLDAsMTAsMS4xNmMzLjQ2''@;'; put 'put ''LDAsOS4xMy0uNDUsMTItMS45MXYzLjIzaDJWMTMuMjJhNy4zMiw3LjMyLDAsMCwxLTIsLjI4djEuOTFDMjkuMDksMTYuMjMsMjUsMTcuNTQsMTgsMTcuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0i''@;'; put 'put ''TTYsMjcuNTNWMTAuM2MyLjksMS40Myw4LjM0LDEuODgsMTIsMS44OGE0Ny42Niw0Ny42NiwwLDAsMCw3LjA5LS41Miw3LjQ1LDcuNDUsMCwwLDEtMS41MS0xLjgsNDcuNCw0Ny40LDAsMCwxLTUuNTguMzJDMTAuNzEsMTAuMTgsNi4zMSw4LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4z''@;'; put 'put ''LDEuNjYsMCwzLjE2LjA4LDQuNTEuMjFhNy41Niw3LjU2LDAsMCwxLC4yOS0yYy0xLjctLjE3LTMuMzgtLjI0LTQuOC0uMjQtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3Ljg0LDYsMjcuNTNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC01LS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxu''@;'; put 'put ''ICA8cGF0aCBkPSJNOCwyNC41OWEyNS41LDI1LjUsMCwwLDAsMi43NS41OWwxLjIxLTEuNDFhMjQuMTMsMjQuMTMsMCwwLDEtNC0uODNaIi8+PHBhdGggZD0iTTMyLjA5LDIySDE1LjQ2bC01LjQxLDYuMzFMMTUuNDksMzRoMTYuNmEyLDIsMCwwLDAsMi0yVjIzLjkzQTIsMiwwLDAsMCwzMi4w''@;'; put 'put ''OSwyMlptMCwxMEgxNi4zNGwtMy41OS0zLjc3TDE2LjM4LDI0SDMyLjA5djhaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjda''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNNiwyNy41M1YxMC4zYzIuOSwxLjQzLDguMzQsMS44OCwxMiwxLjg4aC41OWEzLjU5LDMuNTksMCwwLDEsLjMyLTJIMThDMTAuNzEsMTAuMTgsNi4zMSw4''@;'; put 'put ''LjY5LDYsOGMuMzItLjgsNC43Mi0yLjMsMTItMi4zLDEuMjIsMCwyLjM1LjA1LDMuNDEuMTJsMS4xLTEuOTFjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4yLDAtMTQsLjktMTQsNC4yNXYxOS42YzAsMiwzLjE3LDMuMTQsNi44MywzLjcyTDguMzgsMjguNjhDNywyOC4yOCw2LjEzLDI3''@;'; put 'put ''Ljg0LDYsMjcuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNOCwxNi4zM1YxOGE0MC44Niw0MC44NiwwLDAsMCwxMCwxLjE2YzMuNDYsMCw5LjEzLS40NSwxMi0xLjkxdjMuMjNoMlYxNS40SDMw''@;'; put 'put ''Yy0uOTEuODItNSwyLjEzLTEyLDIuMTNBMzQuODEsMzQuODEsMCwwLDEsOCwxNi4zM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCww''@;'; put 'put ''LDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0''@;'; put 'put ''aCBkPSJNMTYuMTEsMjdhMSwxLDAsMSwwLDEsMUExLDEsMCwwLDAsMTYuMTEsMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMi4wOSwyMUgzMlYxNy4zMmMtMS45LDIuOTMtMTAuNDYsMy4zLTE0LDMuM0E0Mi40Myw0Mi40MywwLDAs''@;'; put 'put ''MSw4LDE5LjU2VjE3Ljg4QTQwLjU5LDQwLjU5LDAsMCwwLDE4LDE5YzUsMCwxMy4yLS44MiwxNC0zLjgyVjEwLjcyYy0yLjIxLDMuMzYtMTAuNDksMy40Ni0xNCwzLjQ2QTQyLjEyLDQyLjEyLDAsMCwxLDgsMTMuMTFWMTFhNDAuNTksNDAuNTksMCwwLDAsMTAsMS4xNGM1LDAsMTMuMjgtLjgz''@;'; put 'put ''LDE0LTMuODhWNy44M2gwYy0uMTktMy4yNy04Ljg0LTQuMTUtMTQtNC4xNVM0LjIxLDQuNTYsNCw3LjgzSDR2MTkuN2MwLDIuMTYsMy42NCwzLjMsNy42MywzLjg0bDIuODQsMywuNTkuNjJoMTdhMywzLDAsMCwwLDMtM1YyMy45M0EzLDMsMCwwLDAsMzIuMDksMjFaTTgsMjYuMDhWMjQuNGEy''@;'; put 'put ''NS43OSwyNS43OSwwLDAsMCwzLjQ2LjdsLTEuMjQsMS40NEM5LjQ2LDI2LjQyLDguNzEsMjYuMjcsOCwyNi4wOFpNMzMuMDksMzJhMSwxLDAsMCwxLTEsMUgxNS45MkwxMS40LDI4LjIzLDE1LjkyLDIzSDMyLjA5YTEsMSwwLDAsMSwxLDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTE2LjExLDI3YTEsMSwwLDEsMCwxLDFBMSwxLDAsMCwwLDE2LjExLDI3WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjks''@;'; put 'put ''Mi45My0xMC40NiwzLjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZWMTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNSwwLDEzLjItLjgyLDE0LTMuODJ2LTJhNy4zNCw3LjM0LDAsMCwxLTQuMTIsMCwzOS40NywzOS40NywwLDAsMS05Ljg4LDFBNDIuMTIsNDIuMTIsMCww''@;'; put 'put ''LDEsOCwxMy4xMVYxMWE0MC41OSw0MC41OSwwLDAsMCwxMCwxLjE0LDQ3Ljc2LDQ3Ljc2LDAsMCwwLDcuMDktLjUyQTcuNDUsNy40NSwwLDAsMSwyMi44LDMuOTJjLTEuNy0uMTctMy4zOC0uMjQtNC44LS4yNC01LjE0LDAtMTMuNzkuODgtMTQsNC4xNUg0djE5LjdjMCwyLjE2LDMuNjQsMy4z''@;'; put 'put ''LDcuNjMsMy44NGwyLjg0LDMsLjU5LjYyaDE3YTMsMywwLDAsMCwzLTNWMjMuOTNBMywzLDAsMCwwLDMyLjA5LDIxWk04LDI2LjA4VjI0LjRhMjUuNzksMjUuNzksMCwwLDAsMy40Ni43bC0xLjI0LDEuNDRDOS40NiwyNi40Miw4LjcxLDI2LjI3LDgsMjYuMDhaTTMzLjA5LDMyYTEsMSwwLDAs''@;'; put 'put ''MS0xLDFIMTUuOTJMMTEuNCwyOC4yMywxNS45MiwyM0gzMi4wOWExLDEsMCwwLDEsMSwxWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik0xNi4xMSwyN2ExLDEsMCwxLDAsMSwxQTEsMSwwLDAsMCwxNi4xMSwyN1oiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5c''@;'; put 'put ''biAgPHBhdGggZD0iTTMyLjA5LDIxSDMyVjE3LjMyYy0xLjksMi45My0xMC40NiwzLjMtMTQsMy4zQTQyLjQzLDQyLjQzLDAsMCwxLDgsMTkuNTZWMTcuODhBNDAuNTksNDAuNTksMCwwLDAsMTgsMTljNC44NSwwLDEyLjgtLjc5LDEzLjkxLTMuNjJIMjIuMjNhMy42OCwzLjY4LDAsMCwxLTIu''@;'; put 'put ''NzMtMS4yM0gxOEE0Mi4xMiw0Mi4xMiwwLDAsMSw4LDEzLjExVjExYTQwLjU5LDQwLjU5LDAsMCwwLDEwLDEuMTRoLjU5YTMuNjEsMy42MSwwLDAsMSwuNDYtMi4yOWwzLjQ2LTZjLTEuNi0uMTUtMy4xNy0uMjEtNC41MS0uMjEtNS4xNCwwLTEzLjc5Ljg4LTE0LDQuMTVINHYxOS43YzAsMi4x''@;'; put 'put ''NiwzLjY0LDMuMyw3LjYzLDMuODRsMi44NCwzLC41OS42MmgxN2EzLDMsMCwwLDAsMy0zVjIzLjkzQTMsMywwLDAsMCwzMi4wOSwyMVpNOCwyNi4wOFYyNC40YTI1Ljc5LDI1Ljc5LDAsMCwwLDMuNDYuN2wtMS4yNCwxLjQ0QzkuNDYsMjYuNDIsOC43MSwyNi4yNyw4LDI2LjA4Wk0zMy4wOSwz''@;'; put 'put ''MmExLDEsMCwwLDEtMSwxSDE1LjkyTDExLjQsMjguMjMsMTUuOTIsMjNIMzIuMDlhMSwxLDAsMCwxLDEsMVoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEu''@;'; put 'put ''MjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0zLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcp''@;'; put 'put ''LGwuQ2xyU2hhcGVNZWRpYUNoYW5nZXI9KDAsYS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMCw0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjZB''@;'; put 'put ''MiwyLDAsMCwwLDMwLDRaTTYsMzBWNkgzMFYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0yNy4yMiwxMEgyMHY0YS44LjgsMCwxLDAsMS41OSwwVjExLjZoNS42M2EuOC44LDAsMSwwLDAtMS42WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTUiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTAiIHdpZHRoPSI4LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxOCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTgiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMjIiIHdpZHRoPSI4LjE0IiBo''@;'; put 'put ''ZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC05Ii8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMTAiLz5cblxuICA8cmVjdCB4PSIy''@;'; put 'put ''MCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMTgiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyMCIgeT0iMjIiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxMCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNS0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjE0IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC02LS1iYWRnZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4''@;'; put 'put ''LjE0IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTctLWJhZGdlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyMiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtOC0tYmFkZ2VkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjI2IiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC05LS1iYWRnZWQiLz5cbiAgPHBhdGggZD0iTTIwLDE0YS44LjgsMCwxLDAsMS41''@;'; put 'put ''OSwwVjExLjZIMjVBNy43NCw3Ljc0LDAsMCwxLDIzLjY2LDEwSDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMTAtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzAsMTMuNWgwVjMwSDZWNkgyMi41VjZhNy4zNyw3LjM3LDAsMCwxLC4yOC0ySDZB''@;'; put 'put ''MiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjEzLjIyQTcuMzcsNy4zNywwLDAsMSwzMCwxMy41WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMTEtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEyLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cblxuICA8cmVjdCB4PSIyMCIgeT0iMTgiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjI0IiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTItLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iMjAiIHk9IjIyIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSIyNCIgeT0iMjIiIHdpZHRoPSIyIiBoZWln''@;'; put 'put ''aHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjEwIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtNS0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIxNCIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTYtLWFsZXJ0ZWQiLz5cbiAgPHJlY3QgeD0iOC44MSIgeT0iMTgiIHdpZHRoPSI4LjE0''@;'; put 'put ''IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC03LS1hbGVydGVkIi8+XG4gIDxyZWN0IHg9IjguODEiIHk9IjIyIiB3aWR0aD0iOC4xNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtOC0tYWxlcnRlZCIvPlxuICA8cmVjdCB4PSI4LjgxIiB5PSIyNiIgd2lkdGg9IjguMTQiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTktLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTMwLDE1LjRWMzBINlY2SDIx''@;'; put 'put ''LjI3bDEuMTgtMkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxNS40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEwLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTExLS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG5cbiAgPHBhdGggZD0iTTMwLDRINkEyLDIsMCwwLDAsNCw2VjMwYTIsMiwwLDAsMCwyLDJINy44OHYxLjU3YTEsMSwwLDAsMCwyLDBWMzJoMTZ2MS41N2ExLDEsMCwwLDAsMiwwVjMy''@;'; put 'put ''SDMwYTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMTcsMjhIOC44MVYyNkgxN1ptMC00SDguODFWMjJIMTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBIMTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0''@;'; put 'put ''VjE4aDJabTAtNkgyMFYxMGg2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNDksNy40OSwwLDAsMS00LTEuMTZWMTRIMjBWMTBoMy42NkE3LjQ5LDcuNDksMCwwLDEsMjIuNSw2YTcuMzcsNy4zNywwLDAsMSwuMjgt''@;'; put 'put ''Mkg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAsMCwwLDIsMFYzMmgxNnYxLjU3YTEsMSwwLDAsMCwyLDBWMzJIMzBhMiwyLDAsMCwwLDItMlYxMy4yMkE3LjM3LDcuMzcsMCwwLDEsMzAsMTMuNVpNMTcsMjhIOC44MVYyNkgxN1ptMC00SDguODFWMjJI''@;'; put 'put ''MTdabTAtNEg4LjgxVjE4SDE3Wm0wLTRIOC44MVYxNEgxN1ptMC00SDguODFWMTBIMTdaTTIyLDI0SDIwVjIyaDJabTAtNEgyMFYxOGgyWm00LDRIMjRWMjJoMlptMC00SDI0VjE4aDJaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWJhZGdlZCIvPlxu''@;'; put 'put ''ICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTIyLjIzLDE1LjRhMy42OCwzLjY4LDAsMCwxLTMuMTgtNS41MUwyMi40NSw0SDZBMiwy''@;'; put 'put ''LDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDcuODh2MS41N2ExLDEsMCwwLDAsMiwwVjMyaDE2djEuNTdhMSwxLDAsMCwwLDIsMFYzMkgzMGEyLDIsMCwwLDAsMi0yVjE1LjRaTTE3LDI4SDguODFWMjZIMTdabTAtNEg4LjgxVjIySDE3Wm0wLTRIOC44MVYxOEgxN1ptMC00SDguODFWMTRI''@;'; put 'put ''MTdabTAtNEg4LjgxVjEwSDE3Wk0yMiwyNEgyMFYyMmgyWm0wLTRIMjBWMThoMlptNCw0SDI0VjIyaDJabTAtNEgyNFYxOGgyWiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjYuODUsMS4xNGwtNS43Miw5''@;'; put 'put ''LjkxQTEuMjcsMS4yNywwLDAsMCwyMi4yMywxM0gzMy42OGExLjI3LDEuMjcsMCwwLDAsMS4xLTEuOTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTItLWFsZXJ0ZWQgY2xyLWktYWxl''@;'; put 'put ''cnQiLz5cbiAgJyksbC5DbHJTaGFwZVRhcGVEcml2ZT0oMCxhLmNsckljb25TVkcpKCdcbiAgPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTMuMzMsMTMuMzVhNC41Miw0LjUyLDAsMSwwLDQuNTMsNC41MkE0LjUzLDQuNTMsMCwwLDAsMTMuMzMsMTMuMzVabTAsNy40NGEyLjkyLDIuOTIsMCwxLDEsMi45My0yLjkyQTIuOTIsMi45MiwwLDAsMSwxMy4z''@;'; put 'put ''MywyMC43OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMy42MiwxMy4zNWE0LjUyLDQuNTIsMCwxLDAsNC41Miw0LjUyQTQuNTMsNC41MywwLDAsMCwyMy42MiwxMy4zNVptMCw3LjQ0YTIuOTIsMi45MiwwLDEsMSwyLjkyLTIu''@;'; put 'put ''OTJBMi45MiwyLjkyLDAsMCwxLDIzLjYyLDIwLjc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTYsMTFWMjMuNTVIOFYxMkgyOS4zNFYxMEg3QTEsMSwwLDAsMCw2LDExWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiLz5cblxuICA8cGF0aCBkPSJNOC44MSwxNy44N2E0LjUzLDQuNTMsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCw4LjgxLDE3Ljg3Wm03LjQ1LDBBMi45MywyLjkzLDAsMSwxLDEzLjMzLDE1LDIuOTMsMi45MywwLDAsMSwxNi4yNiwxNy44N1oiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMTkuMSwxNy44N2E0LjUyLDQuNTIsMCwxLDAsNC41Mi00LjUyQTQuNTMsNC41MywwLDAsMCwxOS4xLDE3Ljg3Wm03LjQ0LDBBMi45MiwyLjkyLDAsMSwxLDIzLjYyLDE1LDIu''@;'; put 'put ''OTIsMi45MiwwLDAsMSwyNi41NCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNMzIsMTMuMjJWMjhINFY4SDIyLjc4YTcuMzcsNy4zNywwLDAsMS0uMjgtMkg0QTIsMiwwLDAsMCwyLDhWMjhh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjEyLjM0QTcuNjUsNy42NSwwLDAsMSwzMiwxMy4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIvPlxuICA8cGF0aCBkPSJNNiwxMVYyMy41NUg4VjEySDI1LjUxYTcuNjYs''@;'; put 'put ''Ny42NiwwLDAsMS0xLjg1LTJIN0ExLDEsMCwwLDAsNiwxMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWkt''@;'; put 'put ''b3V0bGluZS1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuXG4gIDxwYXRoIGQ9Ik04LjgxLDE3Ljg3YTQuNTMsNC41MywwLDEsMCw0LjUyLTQuNTJBNC41Myw0LjUzLDAsMCwwLDguODEsMTcuODdabTcuNDUsMEEyLjkzLDIuOTMsMCwxLDEsMTMuMzMsMTUsMi45MywyLjkzLDAsMCwx''@;'; put 'put ''LDE2LjI2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTcsMTBhMSwxLDAsMCwwLTEsMVYyMy41NUg4VjEySDE4LjU3QTMuNywzLjcsMCwwLDEsMTksMTBaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMzMuNjgsMTUuNEgzMlYyOEg0VjhIMjAuMTRsMS4xNS0ySDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTUuMzhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYWxlcnRlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYWxlcnRlZCIvPlxuICA8cGF0aCBkPSJNMjIuMDksMTUuMzlhMy42NSwzLjY1LDAsMCwxLTEuOC0uNTUsNC41MSw0LjUxLDAsMSwwLDcuMTEuNTZIMjUuMTdhMi45MiwyLjkyLDAsMSwxLTMuMDgsMFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lLS1hbGVydGVkIGNsci1pLW91dGxpbmUtcGF0aC00LS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0yNi44NSwxLjE0bC01LjcyLDkuOTFBMS4yNywxLjI3LDAsMCwwLDIyLjIzLDEzSDMzLjY4YTEuMjcsMS4yNywwLDAsMCwxLjEtMS45MUwyOS4wNiwxLjE0QTEuMjgsMS4yOCww''@;'; put 'put ''LDAsMCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTUtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz5cblxuICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhB''@;'; put 'put ''MiwyLDAsMCwwLDMyLDZaTTMwLDI0SDZWMTJIMzBaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xMi4yMSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAsMCwxMi4yMSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDEyLjIxLDE2''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjMuNzksMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMjMuNzksMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwyMy43OSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTMiLz5cblxuICA8cGF0aCBkPSJNMTIuMjEsMjNhNSw1LDAsMSwwLTUtNUE1LDUsMCwwLDAsMTIuMjEsMjNabTAtN2EyLDIsMCwxLDEtMiwyQTIsMiwwLDAsMSwxMi4yMSwxNloiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gIDxwYXRoIGQ9Ik0yMy43OSwyM2E1LDUsMCwxLDAtNS01QTUsNSwwLDAsMCwyMy43OSwyM1ptMC03YTIsMiwwLDEsMS0yLDJBMiwyLDAsMCwxLDIzLjc5LDE2WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQiLz5cbiAgPHBhdGgg''@;'; put 'put ''ZD0iTTMwLDEzLjVWMjRINlYxMkgyNS41MWE3LjQ5LDcuNDksMCwwLDEtMy02SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTIuMzRBNy40OSw3LjQ5LDAsMCwxLDMwLDEzLjVaIiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTMtLWJhZGdlZCIvPlxuICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIi8+XG5cbiAgPHBhdGggZD0iTTcuMiwxOGE1LDUsMCwxLDAsNS01QTUsNSwwLDAs''@;'; put 'put ''MCw3LjIsMThabTcsMGEyLDIsMCwxLDEtMi0yQTIsMiwwLDAsMSwxNC4yMiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQiLz5cbiAgPHBhdGggZD0iTTE4Ljc4LDE4YTUsNSwwLDEsMCw5LjI3LTIuNkgyMi4yM2EzLjcxLDMuNzEs''@;'; put 'put ''MCwwLDEtMi4xNy0uNzFBNSw1LDAsMCwwLDE4Ljc4LDE4Wm01LTJhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMjMuNzksMTZaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQtcGF0aC0yLS1hbGVydGVkIi8+XG4gIDxwYXRoIGQ9Ik0zMy42OCwxNS40SDMwVjI0SDZW''@;'; put 'put ''MTJIMTguNTdhMy42NSwzLjY1LDAsMCwxLC40OC0yLjExTDIxLjI5LDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxNS4zOFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWFsZXJ0ZWQiLz5cbiAgPHBh''@;'; put 'put ''dGggZD0iTTI2Ljg1LDEuMTRsLTUuNzIsOS45MUExLjI3LDEuMjcsMCwwLDAsMjIuMjMsMTNIMzMuNjhhMS4yNywxLjI3LDAsMCwwLDEuMS0xLjkxTDI5LjA2LDEuMTRBMS4yOCwxLjI4LDAsMCwwLDI2Ljg1LDEuMTRaIiBjbGFzcz0iY2xyLWktc29saWQtLWFsZXJ0ZWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC00LS1hbGVydGVkIGNsci1pLWFsZXJ0Ii8+XG4gICcpLGwuQ2xyU2hhcGVBbmltYXRpb249KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjE2LDMxLjcxYTQuNCw0LjQsMCwwLDEtNC42NC0xQTQuMzQsNC4zNCwwLDAsMSw0LjIzLDI3LjZhNC40MSw0LjQxLDAsMCwxLC4xOC0x''@;'; put 'put ''LjIsMTEuNjEsMTEuNjEsMCwwLDEtMS0yLjU2LDYuNCw2LjQsMCwwLDAsOS4zMyw4LjYzQTExLjU1LDExLjU1LDAsMCwxLDEwLjE2LDMxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTE4LjQxLDI3LjY4YTcuNjEsNy42MSww''@;'; put 'put ''LDAsMS05LjA4LTEuMjYsNy41OCw3LjU4LDAsMCwxLTEuMjctOS4wNiwxNC4yNiwxNC4yNiwwLDAsMS0uMzctMi44NSw5LjU4LDkuNTgsMCwwLDAsLjIyLDEzLjMzLDkuNjMsOS42MywwLDAsMCwxMy4zNS4yMkExNC40NiwxNC40NiwwLDAsMSwxOC40MSwyNy42OFoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS42NiwyNi4yMWExMi4xLDEyLjEsMCwxLDEsOC41Ny0zLjU0aDBBMTIuMTEsMTIuMTEsMCwwLDEsMjEuNjYsMjYuMjFaTTIxLjY2LDRBMTAuMTEsMTAuMTEsMCwwLDAsMTEuNTQsMTQuMTFhMTAsMTAsMCwwLDAs''@;'; put 'put ''Myw3LjE0LDEwLjEyLDEwLjEyLDAsMCwwLDE0LjMxLDBBMTAuMTEsMTAuMTEsMCwwLDAsMjEuNjYsNFptNy44NiwxOGgwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0zLjUsMjMuNzdhNi40MSw2LjQxLDAsMCwwLDkuMzMs''@;'; put 'put ''OC42N0ExMS42NSwxMS42NSwwLDAsMSwzLjUsMjMuNzdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik03LjY4LDE0LjUzYTkuNiw5LjYsMCwwLDAsMTMuNCwxMy43QTE0LjExLDE0LjExLDAsMCwxLDcuNjgsMTQuNTNaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0yMS43OCwyQTEyLjEyLDEyLjEyLDAsMSwxLDkuNjYsMTQuMTUsMTIuMTIsMTIuMTIsMCwwLDEsMjEuNzgsMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPlxuICAnKSxsLkNsclNoYXBl''@;'; put 'put ''Q2lDZD0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuNTMsMTkuODFhNy40NSw3LjQ1LDAsMCwxLTEuNjUtLjE4LDEwLjQ4LDEwLjQ4LDAsMCwxLC43MiwyLjEzYy4zLDAsLjYxLDAsLjkzLDBhOS41Miw5LjUyLDAsMCwwLDMtLjQ5bC0uOTMtMS44MUE3LjY3LDcuNjcsMCwwLDEsMjMu''@;'; put 'put ''NTMsMTkuODFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMTguMzYsMTcuODcsMTgsMTcuNDlhNy40LDcuNCwwLDAsMS0yLjItNS45Miw3LjMxLDcuMzEsMCwwLDEsMS41NC00TDE3LjI2LDlBMSwxLDAsMCwwLDE4LjE3LDEwaC4w''@;'; put 'put ''OWExLDEsMCwwLDAsMS0uOTFMMTkuNiw1YTEsMSwwLDAsMC0uMjktLjc5QTEsMSwwLDAsMCwxOC41Miw0bC00LjA5LjM1YTEsMSwwLDAsMCwuMTcsMmwxLjI5LS4xMWE5LjQ1LDkuNDUsMCwwLDAtMi4wNSw1LjMyLDkuMjgsOS4yOCwwLDAsMCwyLjY3LDcuMjZsLjMxLjM3YTcuMzMsNy4zMyww''@;'; put 'put ''LDAsMSwyLjA2LDQuOTEsNy4zOSw3LjM5LDAsMCwxLS4yNiwyLjQ3bDEuOC45MWE4Ljc2LDguNzYsMCwwLDAsLjQ1LTMuNTFBOS4yOCw5LjI4LDAsMCwwLDE4LjM2LDE3Ljg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMyLjQs''@;'; put 'put ''MTcuOTEsMzEuMTksMThBOS42NSw5LjY1LDAsMCwwLDIzLjUzLDIuNDVhOS4zMyw5LjMzLDAsMCwwLTMsLjQ5bC45MSwxLjhhNy42Nyw3LjY3LDAsMCwxLDkuNzYsNy4zOSw3LjU4LDcuNTgsMCwwLDEtMS42NSw0LjcybC4xLTEuNTRhMSwxLDAsMSwwLTItLjEzbC0uMjgsNC4wOGExLDEsMCww''@;'; put 'put ''LDAsLjMxLjc4Ljk0Ljk0LDAsMCwwLC42OS4yOGguMWw0LjA4LS40MmExLDEsMCwwLDAsLjktMS4xQTEsMSwwLDAsMCwzMi40LDE3LjkxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTQuMDcsMjAuNDRoLjA4bDQuMDktLjM1YTEs''@;'; put 'put ''MSwwLDEsMC0uMTctMmwtMS4zOS4xMmE3LjYzLDcuNjMsMCwwLDEsNC41Mi0xLjQ5LDcuOSw3LjksMCwwLDEsMS42My4xOCwxMC4yMywxMC4yMywwLDAsMS0uNzEtMi4xM2MtLjMsMC0uNjEsMC0uOTIsMGE5LjY2LDkuNjYsMCwwLDAtNS45LDJsLjEyLTEuMzFhMSwxLDAsMCwwLS45Mi0xLjA4''@;'; put 'put ''LDEsMSwwLDAsMC0xLjA4LjkxbC0uMzUsNC4wOGExLDEsMCwwLDAsMSwxLjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGggZD0iTTE4LjQyLDI4LjIzbC00LjA5LjI3YTEsMSwwLDAsMCwuMTMsMkwxNiwzMC4zOWE3LjcxLDcuNzEsMCww''@;'; put 'put ''LDEtMTIuNTQtNiw3LjYsNy42LDAsMCwxLC4yOS0yTDIsMjEuNDZhOS41OSw5LjU5LDAsMCwwLS40NywyLjk1QTkuNyw5LjcsMCwwLDAsMTcuMTksMzJsLS4xMiwxLjE4YTEsMSwwLDAsMCwuODksMS4xaC4xMWExLDEsMCwwLDAsMS0uOWwuNDItNC4wNmExLDEsMCwwLDAtMS4wNi0xLjFaIiBj''@;'; put 'put ''bGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLGwuQ2xyU2hhcGVGaWxlU2hhcmUyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNSw0SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNS45MVYzMC4wOUExLjg5LDEuODksMCwwLDAsNy44MywzMkgyOC4xN0Ex''@;'; put 'put ''Ljg3LDEuODcsMCwwLDAsMzAsMzAuMDlWOVpNMjQsNS43OCwyOC4yLDEwSDI0Wk04LDMwVjZIMjJ2Nmg2VjMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIyLDIxLjgxYTIuMTEsMi4xMSwwLDAsMC0xLjQ0LjYybC01LjcyLTIu''@;'; put 'put ''NjZ2LS40NGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0aDBhMi4xNCwyLjE0LDAsMCwwLS42NCwxLjQ4di4yM2wtNS42NCwyLjY2YTIuMDgsMi4wOCwwLDEsMC0uMDgsMi45NWwuMDgtLjA4LDUuNjcsMi42NnYuM0EyLjA5LDIuMDksMCwxLDAsMjIsMjEuODRaIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICBcbiAgPHBhdGggZD0iTTI1LDQuMDZINy44M0ExLjg5LDEuODksMCwwLDAsNiw2VjMwLjE1YTEuODksMS44OSwwLDAsMCwxLjgzLDEuOTFIMjguMTdBMS44NywxLjg3LDAsMCwwLDMwLDMwLjE1VjlaTTIyLDI2YTIuMDks''@;'; put 'put ''Mi4wOSwwLDAsMS0yLjEtMi4wOHYtLjNMMTQuMjcsMjFsLS4wOC4wOGEyLjA4LDIuMDgsMCwxLDEsLjA4LTIuOTVsNS42NC0yLjY2di0uMjNhMi4xNCwyLjE0LDAsMCwxLC42NC0xLjQ4aDBhMi4wOCwyLjA4LDAsMSwxLS4wNiwyLjk0bC01LjY2LDIuNjV2LjQ0bDUuNzIsMi42NkEyLjExLDIu''@;'; put 'put ''MTEsMCwwLDEsMjIsMjEuODFsMCwwQTIuMDksMi4wOSwwLDAsMSwyMiwyNlptMi0xNlY1Ljg0bDQuMiw0LjIyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLGwuVGVjaG5vbG9neVNoYXBlcz17InJ1bGVyLXBlbmNpbCI6bC5DbHJTaGFwZVJ1bGVyUGVuY2ls''@;'; put 'put ''LCJwaG9uZS1oYW5kc2V0IjpsLkNsclNoYXBlUGhvbmVIYW5kc2V0LCJuby13aWZpIjpsLkNsclNoYXBlTm9XaWZpLGluc3RhbGw6bC5DbHJTaGFwZUluc3RhbGwsdW5pbnN0YWxsOmwuQ2xyU2hhcGVVbmluc3RhbGwsbGF5ZXJzOmwuQ2xyU2hhcGVMYXllcnMsYmxvY2s6bC5DbHJTaGFwZUJs''@;'; put 'put ''b2NrLCJibG9ja3MtZ3JvdXAiOmwuQ2xyU2hhcGVCbG9ja3NHcm91cCxidW5kbGU6bC5DbHJTaGFwZUJ1bmRsZSx3aWZpOmwuQ2xyU2hhcGVXaWZpLCJyYWNrLXNlcnZlciI6bC5DbHJTaGFwZVJhY2tTZXJ2ZXIsImhhcmQtZGlzayI6bC5DbHJTaGFwZUhhcmREaXNrLCJiYWNrdXAtcmVzdG9y''@;'; put 'put ''ZSI6bC5DbHJTaGFwZUJhY2t1cFJlc3RvcmUsYmFja3VwOmwuQ2xyU2hhcGVCYWNrdXAsZGV2aWNlczpsLkNsclNoYXBlRGV2aWNlcyxrZXlib2FyZDpsLkNsclNoYXBlS2V5Ym9hcmQsbW91c2U6bC5DbHJTaGFwZU1vdXNlLGRhc2hib2FyZDpsLkNsclNoYXBlRGFzaGJvYXJkLGhvc3Q6bC5D''@;'; put 'put ''bHJTaGFwZUhvc3Qsc3RvcmFnZTpsLkNsclNoYXBlU3RvcmFnZSxjbHVzdGVyOmwuQ2xyU2hhcGVDbHVzdGVyLGFwcGxpY2F0aW9uczpsLkNsclNoYXBlQXBwbGljYXRpb25zLGJ1aWxkaW5nOmwuQ2xyU2hhcGVCdWlsZGluZyxjcHU6bC5DbHJTaGFwZUNQVSxtZW1vcnk6bC5DbHJTaGFwZU1l''@;'; put 'put ''bW9yeSwiZGF0YS1jbHVzdGVyIjpsLkNsclNoYXBlRGF0YUNsdXN0ZXIsInJlc291cmNlLXBvb2wiOmwuQ2xyU2hhcGVSZXNvdXJjZVBvb2wsc2hpZWxkOmwuQ2xyU2hhcGVTaGllbGQsInNoaWVsZC1jaGVjayI6bC5DbHJTaGFwZVNoaWVsZENoZWNrLCJzaGllbGQteCI6bC5DbHJTaGFwZVNo''@;'; put 'put ''aWVsZFgsaW1wb3J0OmwuQ2xyU2hhcGVJbXBvcnQsZXhwb3J0OmwuQ2xyU2hhcGVFeHBvcnQsInVwbG9hZC1jbG91ZCI6bC5DbHJTaGFwZVVwbG9hZENsb3VkLCJkb3dubG9hZC1jbG91ZCI6bC5DbHJTaGFwZURvd25sb2FkQ2xvdWQscGx1Z2luOmwuQ2xyU2hhcGVQbHVnaW4sZmxvcHB5Omwu''@;'; put 'put ''Q2xyU2hhcGVGbG9wcHksY29tcHV0ZXI6bC5DbHJTaGFwZUNvbXB1dGVyLGRpc3BsYXk6bC5DbHJTaGFwZURpc3BsYXksdGVybWluYWw6bC5DbHJTaGFwZVRlcm1pbmFsLGNvZGU6bC5DbHJTaGFwZUNvZGUsYXBwbGljYXRpb246bC5DbHJTaGFwZUFwcGxpY2F0aW9uLGJhdHRlcnk6bC5DbHJT''@;'; put 'put ''aGFwZUJhdHRlcnksbW9iaWxlOmwuQ2xyU2hhcGVNb2JpbGUsdGFibGV0OmwuQ2xyU2hhcGVUYWJsZXQsIm5ldHdvcmstZ2xvYmUiOmwuQ2xyU2hhcGVOZXR3b3JrR2xvYmUsIm5ldHdvcmstc2V0dGluZ3MiOmwuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3MsIm5ldHdvcmstc3dpdGNoIjpsLkNs''@;'; put 'put ''clNoYXBlTmV0d29ya1N3aXRjaCxyb3V0ZXI6bC5DbHJTaGFwZVJvdXRlcix2bTpsLkNsclNoYXBlVk0sInZtdy1hcHAiOmwuQ2xyU2hhcGVWTVdBcHAsY2VydGlmaWNhdGU6bC5DbHJTaGFwZUNlcnRpZmljYXRlLGFyY2hpdmU6bC5DbHJTaGFwZUFyY2hpdmUsdW5hcmNoaXZlOmwuQ2xyU2hh''@;'; put 'put ''cGVVbmFyY2hpdmUsY29ubmVjdDpsLkNsclNoYXBlQ29ubmVjdCxkaXNjb25uZWN0OmwuQ2xyU2hhcGVEaXNjb25uZWN0LGxpbms6bC5DbHJTaGFwZUxpbmssdW5saW5rOmwuQ2xyU2hhcGVVbmxpbmssImNsb3VkLW5ldHdvcmsiOmwuQ2xyU2hhcGVDbG91ZE5ldHdvcmssImNsb3VkLXNjYWxl''@;'; put 'put ''IjpsLkNsclNoYXBlQ2xvdWRTY2FsZSwiY2xvdWQtdHJhZmZpYyI6bC5DbHJTaGFwZUNsb3VkVHJhZmZpYywiY29udHJvbC1sdW4iOmwuQ2xyQ29udHJvbEx1bixkZXBsb3k6bC5DbHJTaGFwZURlcGxveSxoZWxpeDpsLkNsclNoYXBlSGVsaXgsZmxhc2s6bC5DbHJTaGFwZUZsYXNrLGFkbWlu''@;'; put 'put ''aXN0cmF0b3I6bC5DbHJTaGFwZUFkbWluaXN0cmF0b3IsImhhcmQtZHJpdmUiOmwuQ2xyU2hhcGVIYXJkRHJpdmUsImhhcmQtZHJpdmUtZGlza3MiOmwuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcyxudm1lOmwuQ2xyU2hhcGVOVk1lLHNzZDpsLkNsclNoYXBlU1NELGJsdWV0b290aDpsLkNsclNo''@;'; put 'put ''YXBlQmx1ZXRvb3RoLCJibHVldG9vdGgtb2ZmIjpsLkNsclNoYXBlQmx1ZXRvb3RoT2ZmLCJwcm9jZXNzLW9uLXZtIjpsLkNsclNoYXBlUHJvY2Vzc09uVk0sImFzc2lnbi11c2VyIjpsLkNsclNoYXBlQXNzaWduVXNlcixhdG9tOmwuQ2xyU2hhcGVBdG9tLCJiYXItY29kZSI6bC5DbHJTaGFw''@;'; put 'put ''ZUJhckNvZGUsImNkLWR2ZCI6bC5DbHJTaGFwZUNkRHZkLGNvbnRhaW5lcjpsLkNsclNoYXBlQ29udGFpbmVyLCJjb250YWluZXItdm9sdW1lIjpsLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lLCJmaWxlLXNoYXJlIjpsLkNsclNoYXBlRmlsZVNoYXJlLCJxci1jb2RlIjpsLkNsclNoYXBlUXJD''@;'; put 'put ''b2RlLHVzYjpsLkNsclNoYXBlVXNiLHJhZGFyOmwuQ2xyU2hhcGVSYWRhcixjYXBhY2l0b3I6bC5DbHJTaGFwZUNhcGFjaXRvcixzcXVpZDpsLkNsclNoYXBlU3F1aWQsaW5kdWN0b3I6bC5DbHJTaGFwZUluZHVjdG9yLHJlc2lzdG9yOmwuQ2xyU2hhcGVSZXNpc3RvciwiaG9zdC1ncm91cCI6''@;'; put 'put ''bC5DbHJTaGFwZUhvc3RHcm91cCwic3RvcmFnZS1hZGFwdGVyIjpsLkNsclNoYXBlU3RvcmFnZUFkYXB0ZXIsIm5vZGUtZ3JvdXAiOmwuQ2xyU2hhcGVOb2RlR3JvdXAsbm9kZXM6bC5DbHJTaGFwZU5vZGVzLG5hbWVzcGFjZTpsLkNsclNoYXBlTmFtZXNwYWNlLG5vZGU6bC5DbHJTaGFwZU5v''@;'; put 'put ''ZGUscG9kOmwuQ2xyU2hhcGVQb2QsIm1lZGlhLWNoYW5nZXIiOmwuQ2xyU2hhcGVNZWRpYUNoYW5nZXIsInRhcGUtZHJpdmUiOmwuQ2xyU2hhcGVUYXBlRHJpdmUsYW5pbWF0aW9uOmwuQ2xyU2hhcGVBbmltYXRpb24sImNpLWNkIjpsLkNsclNoYXBlQ2lDZCwiZmlsZS1zaGFyZS0yIjpsLkNs''@;'; put 'put ''clNoYXBlRmlsZVNoYXJlMn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuVGVjaG5vbG9neVNoYXBlcywic2VydmVyIiwoMCxwLmRlc2NyaXB0b3JDb25maWcpKGwuVGVjaG5vbG9neVNoYXBlcy5ob3N0KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuVGVjaG5vbG9neVNoYXBlcywiY29tbWFu''@;'; put 'put ''ZCIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLlRlY2hub2xvZ3lTaGFwZXMudGVybWluYWwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5UZWNobm9sb2d5U2hhcGVzLCJtb2JpbGUtcGhvbmUiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5UZWNobm9sb2d5U2hhcGVzLm1vYmlsZSkpLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShsLlRlY2hub2xvZ3lTaGFwZXMsImxpY2Vuc2UiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5UZWNobm9sb2d5U2hhcGVzLmNlcnRpZmljYXRlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuVGVjaG5vbG9neVNoYXBlcywiZGlzY29ubmVjdGVkIiwoMCxw''@;'; put 'put ''LmRlc2NyaXB0b3JDb25maWcpKGwuVGVjaG5vbG9neVNoYXBlc1sibm8td2lmaSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuVGVjaG5vbG9neVNoYXBlcywicmVjZWl2ZXIiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5UZWNobm9sb2d5U2hhcGVzWyJwaG9uZS1oYW5kc2V0Il0pKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobC5UZWNobm9sb2d5U2hhcGVzLCJkZXNpZ24iLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5UZWNobm9sb2d5U2hhcGVzWyJydWxlci1wZW5jaWwiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLlRlY2hub2xvZ3lTaGFwZXMsImRuYSIsKDAscC5kZXNj''@;'; put 'put ''cmlwdG9yQ29uZmlnKShsLlRlY2hub2xvZ3lTaGFwZXMuaGVsaXgpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5UZWNobm9sb2d5U2hhcGVzLCJmb2xkZXItc2hhcmUiLCgwLHAuZGVzY3JpcHRvckNvbmZpZykobC5UZWNobm9sb2d5U2hhcGVzWyJmaWxlLXNoYXJlIl0pKSx0eXBlb2Ygd2lu''@;'; put 'put ''ZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQobC5UZWNobm9sb2d5U2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzICoqKiEKICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxIKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuVGV4dEVkaXRTaGFwZXM9bC5DbHJTaGFwZVN1cGVyc2NyaXB0PWwuQ2xyU2hhcGVTdWJz''@;'; put 'put ''Y3JpcHQ9bC5DbHJTaGFwZVN0cmlrZXRocm91Z2g9bC5DbHJTaGFwZUluZGVudD1sLkNsclNoYXBlT3V0ZGVudD1sLkNsclNoYXBlSGlnaGxpZ2h0ZXI9bC5DbHJTaGFwZVRleHRDb2xvcj1sLkNsclNoYXBlTGFuZ3VhZ2U9bC5DbHJTaGFwZUFsaWduVG9wPWwuQ2xyU2hhcGVBbGlnbk1pZGRs''@;'; put 'put ''ZT1sLkNsclNoYXBlQWxpZ25Cb3R0b209bC5DbHJTaGFwZVVuZGVybGluZT1sLkNsclNoYXBlVGV4dD1sLkNsclNoYXBlQWxpZ25SaWdodFRleHQ9bC5DbHJTaGFwZUJsb2NrUXVvdGU9bC5DbHJTaGFwZVBhaW50Um9sbGVyPWwuQ2xyU2hhcGVOdW1iZXJMaXN0PWwuQ2xyU2hhcGVBbGlnbkxl''@;'; put 'put ''ZnRUZXh0PWwuQ2xyU2hhcGVKdXN0aWZ5VGV4dD1sLkNsclNoYXBlSXRhbGljPWwuQ2xyU2hhcGVBbGlnblJpZ2h0PWwuQ2xyU2hhcGVBbGlnbkxlZnQ9bC5DbHJTaGFwZUFsaWduQ2VudGVyPWwuQ2xyU2hhcGVGb250U2l6ZT1sLkNsclNoYXBlQ2hlY2tib3hMaXN0PWwuQ2xyU2hhcGVDZW50''@;'; put 'put ''ZXJUZXh0PWwuQ2xyU2hhcGVCdWxsZXRMaXN0PWwuQ2xyU2hhcGVCb2xkPXZvaWQgMCxIPUgoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxsLkNsclNoYXBlQm9sZD0oMCxILmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMjIuNDMsMTcuNTRhNC42Nyw0LjY3LDAsMCwwLDIuOC00LjM3di0uMDZhNC40Myw0LjQzLDAsMCwwLTEuMzEtMy4yNSw3LjA5LDcuMDksMCwwLDAtNS4xMy0xLjczaC03QTEuNzEsMS43MSwwLDAsMCwxMCw5Ljg2VjI2YTEuNzIsMS43MiwwLDAsMCwxLjc0LDEu''@;'; put 'put ''NzRoNy4zM2M0LjM3LDAsNy4yNS0xLjg4LDcuMjUtNS4zOFYyMi4zQzI2LjMyLDE5LjY0LDI0LjczLDE4LjMyLDIyLjQzLDE3LjU0Wk0xMy42OCwxMS40aDQuNTRjMiwwLDMuMTUuODksMy4xNSwyLjMzdi4wNmMwLDEuNjgtMS4zNiwyLjQ5LTMuMzgsMi40OUgxMy42OFpNMjIuMzcsMjJjMCwx''@;'; put 'put ''LjU5LTEuMzEsMi40My0zLjQ2LDIuNDNIMTMuNjhWMTkuNjJoNWMyLjQ5LDAsMy42OS44OCwzLjY5LDIuMzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlQnVsbGV0TGlzdD0oMCxILmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSI1''@;'; put 'put ''LjIxIiBjeT0iOS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iNS4yMSIgY3k9IjE3LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSI1LjIxIiBj''@;'; put 'put ''eT0iMjUuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMi40Miw5YTEsMSwwLDAsMC0xLTFIMTB2MkgzMS40MkExLDEsMCwwLDAsMzIuNDIsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0zMS40MiwxNkgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzEuNDIsMjRIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTYiIC8+JyksbC5DbHJTaGFwZUNlbnRlclRleHQ9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjg4LDhINS4xMmExLjEsMS4xLDAsMCwwLDAsMi4ySDMwLjg4YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjUuNSwxNi4yYTEuMSwxLjEsMCwxLDAsMC0yLjJoLTE1YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAuMjUsMjBINS43NWExLjEsMS4xLDAsMCwwLDAs''@;'; put 'put ''Mi4yaDI0LjVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNC44OCwyNkgxMS4xMmExLjEsMS4xLDAsMSwwLDAsMi4ySDI0Ljg4YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxsLkNsclNoYXBlQ2hlY2tib3hMaXN0PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS40MywxNkgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48''@;'; put 'put ''cGF0aCBkPSJNMzEuNDMsMjRIMTB2MkgzMS40M2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE1LjQ1LDEwaDE2YTEsMSwwLDAsMCwwLTJoLTE0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE3LjUsMy40MmExLjA5LDEuMDksMCwwLDAtMS41NSwwTDcuODksMTEuNDgsNC41MSw3Ljg0QTEuMSwxLjEsMCwxLDAsMi45LDkuMzRsNC45NCw1LjNMMTcuNSw1QTEuMSwxLjEsMCwwLDAsMTcuNSwzLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQiIC8+JyksbC5DbHJTaGFwZUZvbnRTaXplPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSw5LjA4QTEuMTMsMS4xMywwLDAsMCwxOS44Niw4SDQuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMTFWMjdhMS4wOSwxLjA5LDAsMCwwLDIuMTcsMFYxMC4xOWg2''@;'; put 'put ''LjY5QTEuMTQsMS4xNCwwLDAsMCwyMSw5LjA4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjY3LDE1SDIxLjE1YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDI1VjI2LjVhMS4wOSwxLjA5LDAsMCwwLDIuMTcsMFYxNy4yM2gzLjU0YTEu''@;'; put 'put ''MSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZUFsaWduQ2VudGVyPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMSwyMEgxOVYxNmg2YTEsMSwwLDAsMCwxLTFWN2ExLDEsMCwwLDAtMS0xSDE5''@;'; put 'put ''VjJhMSwxLDAsMCwwLTIsMFY2SDExYTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDZ2NEg1YTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxSDE3djRhMSwxLDAsMCwwLDIsMFYzMEgzMWExLDEsMCwwLDAsMS0xVjIxQTEsMSwwLDAsMCwzMSwyMFpNMTIsMTRWOEgyNHY2Wk0zMCwy''@;'; put 'put ''OEg2VjIySDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksbC5DbHJTaGFwZUFsaWduTGVmdD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSwxQTEsMSwwLDAsMCw0LDJWMzRhMSwxLDAsMCwwLDIsMFYyQTEsMSwwLDAsMCw1LDFaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEsMjBIOFYzMEgzMWExLDEsMCwwLDAsMS0xVjIxQTEsMSwwLDAsMCwzMSwyMFptLTEsOEgxMFYyMkgzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0yNCwxNVY3YTEsMSwwLDAsMC0xLTFIOFYxNkgyM0ExLDEsMCwwLDAsMjQsMTVabS0yLTFIMTBWOEgyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVBbGlnblJpZ2h0PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0z''@;'; put 'put ''MSwxYTEsMSwwLDAsMC0xLDFWMzRhMSwxLDAsMCwwLDIsMFYyQTEsMSwwLDAsMCwzMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQsMjF2OGExLDEsMCwwLDAsMSwxSDI4VjIwSDVBMSwxLDAsMCwwLDQsMjFabTIsMUgyNnY2SDZa''@;'; put 'put ''IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTIsN3Y4YTEsMSwwLDAsMCwxLDFIMjhWNkgxM0ExLDEsMCwwLDAsMTIsN1ptMiwxSDI2djZIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxs''@;'; put 'put ''LkNsclNoYXBlSXRhbGljPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC40Miw4SDE3LjFhMS4xLDEuMSwwLDEsMCwwLDIuMTloMi4xM0wxMy4xMSwyNS41NUgxMC40N2ExLjEsMS4xLDAsMSwwLDAsMi4xOUgxNy44YTEuMSwxLjEsMCwxLDAsMC0yLjE5SDE1LjUxbDYuMTMtMTUuMzZo''@;'; put 'put ''Mi43OGExLjEsMS4xLDAsMSwwLDAtMi4xOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLGwuQ2xyU2hhcGVKdXN0aWZ5VGV4dD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNNiwxMC4ySDMxLjc1YTEuMSwxLjEsMCwxLDAsMC0yLjJINmExLjEs''@;'; put 'put ''MS4xLDAsMSwwLDAsMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMxLjc1LDE0SDZhMS4xLDEuMSwwLDEsMCwwLDIuMkgzMS43NWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMxLjEyLDIwSDYuNjJhMS4xLDEuMSwwLDEsMCwwLDIuMmgyNC41YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuNDUsMjUuODNINi42YTEuMSwxLjEsMCww''@;'; put 'put ''LDAsMCwyLjJIMzAuNDVhMS4xLDEuMSwwLDAsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGwuQ2xyU2hhcGVBbGlnbkxlZnRUZXh0PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC4yNSwyNkg2djIuMkgyMC4yNWExLjEsMS4x''@;'; put 'put ''LDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI4LDIwSDZ2Mi4ySDI4QTEuMSwxLjEsMCwwLDAsMjgsMjBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjIu''@;'; put 'put ''NiwxNS4xQTEuMSwxLjEsMCwwLDAsMjEuNSwxNEg2djIuMkgyMS41QTEuMSwxLjEsMCwwLDAsMjIuNiwxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI5LjI1LDhINnYyLjJIMjkuMjVhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLGwuQ2xyU2hhcGVOdW1iZXJMaXN0PSgwLEguY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iNS40NiA3LjQxIDUuNDYgMTEuNTYgNi42NSAxMS41NiA2LjY1IDYuMDUgNS43IDYuMDUgNC4wNSA3LjE2IDQu''@;'; put 'put ''NTIgOCA1LjQ2IDcuNDEiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjU3LDE0LjgyYS43Ni43NiwwLDAsMSwuODMuNzNjMCwuMzgtLjIxLjc0LS44NywxLjI3bC0yLDEuNTd2MUg3LjY3VjE4LjI4SDUuMzNsMS0uNzdjMS0uNywxLjI4''@;'; put 'put ''LTEuMjcsMS4yOC0yYTEuODMsMS44MywwLDAsMC0yLTEuNzYsMi42MywyLjYzLDAsMCwwLTIuMTQsMS4wOGwuNzYuNzNBMS43NSwxLjc1LDAsMCwxLDUuNTcsMTQuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNNi41NiwyNC42NGEx''@;'; put 'put ''LjMyLDEuMzIsMCwwLDAsMS0xLjI3YzAtLjg3LS43OC0xLjUxLTItMS41MWEyLjYxLDIuNjEsMCwwLDAtMi4xLDFsLjY5LjcyYTEuNzgsMS43OCwwLDAsMSwxLjMtLjY0Yy41NCwwLC45Mi4yNi45Mi42NnMtLjM2LjYyLTEsLjYySDQuNzl2MWguNjRjLjc0LDAsMS4wNy4yMSwxLjA3LjYzcy0u''@;'; put 'put ''MzUuNjgtMSwuNjhhMiwyLDAsMCwxLTEuNDYtLjY1bC0uNy43OGEyLjg1LDIuODUsMCwwLDAsMi4yMS45M2MxLjI5LDAsMi4xMy0uNjksMi4xMy0xLjY0QTEuMzMsMS4zMywwLDAsMCw2LjU2LDI0LjY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBh''@;'; put 'put ''dGggZD0iTTMyLjQyLDlhMSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxsLkNsclNoYXBlUGFpbnRSb2xsZXI9KDAsSC5jbHJJY29uU1ZHKSgn''@;'; put 'put ''PHBhdGggZD0iTTMxLDEwVjRhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDR2NmEyLDIsMCwwLDAsMiwySDI5QTIsMiwwLDAsMCwzMSwxMFpNNiw0SDI5djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjlM''@;'; put 'put ''MTguNywxNi41NGExLDEsMCwwLDAtLjcsMVYxOUgxNlYzM2EyLDIsMCwwLDAsMiwyaDJhMiwyLDAsMCwwLDItMlYxOUgyMHYtLjczTDMzLjMsMTRhMSwxLDAsMCwwLC43LTFWN0ExLDEsMCwwLDAsMzMsNlpNMjAsMzNIMThWMjFoMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPjxyZWN0IHg9IjQiIHk9IjIiIHdpZHRoPSIyNyIgaGVpZ2h0PSIxMCIgcng9IjEiIHJ5PSIxIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMyw2SDMydjYuMjRMMTguNzEsMTYuNDVhMSwxLDAsMCwwLS43MSwxVjE5SDE2''@;'; put 'put ''VjM0YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE5SDIwdi0uODJMMzMuMjksMTRBMSwxLDAsMCwwLDM0LDEzVjdBMSwxLDAsMCwwLDMzLDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVCbG9ja1F1b3RlPSgwLEguY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xMS44NiwxNi41NWE0LjMxLDQuMzEsMCwwLDAtMi4xMS41NiwxNC40NCwxNC40NCwwLDAsMSw0LjM2LTYsMS4xLDEuMSwwLDAsMC0xLjQtMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRBNS4wOCw1LjA4LDAsMCwwLDEwLDI0LjU4YTQuNCw0LjQsMCww''@;'; put 'put ''LDAsMS44OC40NCw0LjI0LDQuMjQsMCwxLDAsMC04LjQ3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIzLDE2LjU1YTQuMjksNC4yOSwwLDAsMC0yLjExLjU2LDE0LjUsMTQuNSwwLDAsMSw0LjM1LTYsMS4xLDEuMSwwLDEsMC0xLjM5''@;'; put 'put ''LTEuN2MtNCwzLjI1LTUuNzgsNy43NS01Ljc4LDEwLjU0YTUuMDgsNS4wOCwwLDAsMCwzLDQuNjFBNC4zNyw0LjM3LDAsMCwwLDIzLDI1YTQuMjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxsLkNsclNoYXBlQWxp''@;'; put 'put ''Z25SaWdodFRleHQ9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjY1LDI3LjFhMS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjI2SDE1Ljc1QTEuMSwxLjEsMCwwLDAsMTQuNjUsMjcuMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik02LjksMjEuMUExLjEsMS4xLDAsMCwwLDgsMjIuMkgzMFYyMEg4QTEuMSwxLjEsMCwwLDAsNi45LDIxLjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMuNCwxNS4xYTEuMSwxLjEsMCwwLDAsMS4xLDEuMUgzMFYxNEgxNC41QTEu''@;'; put 'put ''MSwxLjEsMCwwLDAsMTMuNCwxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTYuNzUsOGExLjEsMS4xLDAsMSwwLDAsMi4ySDMwVjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxsLkNs''@;'; put 'put ''clNoYXBlVGV4dD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTksOC44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFoLS4xMmExLjQ2LDEuNDYsMCwwLDAtMS40MiwxTDEuMTQsMjYuNTZhMS4yOSwxLjI5LDAsMCwwLS4xNC41OSwxLDEsMCwwLDAsMSwxLDEuMTIsMS4xMiwwLDAsMCwx''@;'; put 'put ''LjA4LS43N2wyLjA4LTQuNjVoMTFsMi4wOCw0LjU5YTEuMjQsMS4yNCwwLDAsMCwxLjEyLjgzLDEuMDgsMS4wOCwwLDAsMCwxLjA4LTEuMDgsMS42NCwxLjY0LDAsMCwwLS4xNC0uNTdaTTYuMDgsMjAuNzFsNC41OS0xMC4yMiw0LjYsMTAuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIuMjQsMTQuNzhBNi4zNSw2LjM1LDAsMCwwLDI3LjYsMTMuMmExMS4zNiwxMS4zNiwwLDAsMC00LjcsMSwxLDEsMCwwLDAtLjU4Ljg5LDEsMSwwLDAsMCwuOTQuOTIsMS4yMywxLjIzLDAsMCwwLC4zOS0uMDgsOC44Nyw4Ljg3LDAsMCwx''@;'; put 'put ''LDMuNzItLjgxYzIuNywwLDQuMjgsMS4zMyw0LjI4LDMuOTJ2LjVhMTUuMjksMTUuMjksMCwwLDAtNC40Mi0uNjFjLTMuNjQsMC02LjE0LDEuNjEtNi4xNCw0LjY0di4wNWMwLDIuOTUsMi43LDQuNDgsNS4zNyw0LjQ4YTYuMjksNi4yOSwwLDAsMCw1LjE5LTIuNDhWMjYuOWExLDEsMCwwLDAs''@;'; put 'put ''MSwxLDEsMSwwLDAsMCwxLTEuMDZWMTlBNS43MSw1LjcxLDAsMCwwLDMyLjI0LDE0Ljc4Wm0tLjU2LDcuN2MwLDIuMjgtMi4xNywzLjg5LTQuODEsMy44OS0xLjk0LDAtMy42MS0xLjA2LTMuNjEtMi44NnYtLjA2YzAtMS44LDEuNS0zLDQuMi0zYTE1LjIsMTUuMiwwLDAsMSw0LjIyLjYxWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksbC5DbHJTaGFwZVVuZGVybGluZT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjguMTdjNS4wOCwwLDguNDgtMy4wOCw4LjQ4LTlWOC41NGExLjE1LDEuMTUsMCwxLDAtMi4zLDB2MTAuOGMwLDQu''@;'; put 'put ''NDQtMi4zOCw2LjcxLTYuMTMsNi43MXMtNi4yMS0yLjQ3LTYuMjEtNi44NVY4LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44QzkuNTMsMjUuMDksMTMsMjguMTcsMTgsMjguMTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEs''@;'; put 'put ''MzBINWExLjExLDEuMTEsMCwwLDAsMCwyLjIxSDMxQTEuMTEsMS4xMSwwLDAsMCwzMSwzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVBbGlnbkJvdHRvbT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsMzBIMmExLDEs''@;'; put 'put ''MCwwLDAsMCwySDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTYsNWExLDEsMCwwLDAtMS0xSDdBMSwxLDAsMCwwLDYsNVYyOEgxNlpNMTQsMjZIOFY2aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMTNhMSwxLDAsMCwwLTEtMUgyMWExLDEsMCwwLDAtMSwxVjI4SDMwWk0yOCwyNkgyMlYxNGg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksbC5DbHJTaGFwZUFsaWduTWlkZGxlPSgwLEgu''@;'; put 'put ''Y2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwxN0gzMFYxMWExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDF2NkgxNlY1YTEsMSwwLDAsMC0xLTFIN0ExLDEsMCwwLDAsNiw1VjE3SDJhMSwxLDAsMCwwLDAsMkg2VjMxYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjE5aDR2NmEx''@;'; put 'put ''LDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVYxOWg0YTEsMSwwLDAsMCwwLTJaTTE0LDMwSDhWNmg2Wm0xNC02SDIyVjEyaDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxsLkNsclNoYXBlQWxpZ25Ub3A9KDAsSC5jbHJJY29uU1ZHKSgnPHBh''@;'; put 'put ''dGggZD0iTTM0LDRIMkExLDEsMCwwLDAsMiw2SDM0YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNiwzMWExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMVY4SDZaTTgsMTBoNlYzMEg4WiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTIwLDIzYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjhIMjBabTItMTNoNlYyMkgyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLGwuQ2xyU2hhcGVMYW5n''@;'; put 'put ''dWFnZT0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsM0gxNHY1aDJWNWgxNGMwLjYsMCwxLDAuNCwxLDF2MTFjMCwwLjYtMC40LDEtMSwxSDE3djdoLTUuM0w4LDI3LjlWMjVINWMtMC42LDAtMS0wLjQtMS0xVjEzYzAtMC42LDAuNC0xLDEtMWgxM3YtMkg1XG5cdFx0Yy0xLjcsMC0z''@;'; put 'put ''LDEuMy0zLDN2MTFjMCwxLjcsMS4zLDMsMywzaDF2NS4xbDYuMy01LjFIMTl2LTdoMTFjMS43LDAsMy0xLjMsMy0zVjZDMzMsNC4zLDMxLjcsMywzMCwzeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYuMiwyMi45aDIuNGwwLjYtMS42''@;'; put 'put ''aDMuMWwwLjYsMS42aDIuNEwxMS45LDE0SDkuNUw2LjIsMjIuOXogTTEwLjcsMTYuNWwxLDMuMWgtMkwxMC43LDE2LjV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMTdjMS4xLDAsMi42LTAuMyw0LTFjMS40LDAuNywzLDEsNCwx''@;'; put 'put ''di0yYzAsMC0xLDAtMi4xLTAuNGMxLjItMS4yLDIuMS0zLDIuMS01LjZWOGgtM1Y2aC0ydjJoLTN2Mmg1Ljlcblx0XHRjLTAuMiwxLjgtMSwyLjktMS45LDMuNmMtMC42LTAuNS0xLjItMS4yLTEuNi0yLjFoLTIuMWMwLjQsMS4zLDEsMi4zLDEuOCwzLjFDMjEuMSwxNSwyMC4yLDE1LDIwLDE1''@;'; put 'put ''VjE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBvbHlnb24gcG9pbnRzPSIxMSwxNi41IDEwLDE5LjYgMTIsMTkuNiAxMSwxNi41IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMC4zLDNoLTE2''@;'; put 'put ''djVoNHYyaC0xM2MtMS43LDAtMywxLjMtMywzdjExYzAsMS43LDEuMywzLDMsM2gxdjUuMWw2LjMtNS4xaDYuN3YtN2gxMWMxLjcsMCwzLTEuMywzLTNWNlxuXHRcdEMzMy4zLDQuMywzMiwzLDMwLjMsM3ogTTEzLjEsMjIuOWwtMC41LTEuNkg5LjVsLTAuNiwxLjZINi41TDkuOCwxNGgyLjRs''@;'; put 'put ''My4zLDguOUwxMy4xLDIyLjl6IE0yOC4zLDE1djJjLTEuMywwLTIuNy0wLjQtMy45LTFcblx0XHRjLTEuMiwwLjYtMi42LDAuOS00LDFsLTAuMS0yYzAuNywwLDEuNC0wLjEsMi4xLTAuM2MtMC45LTAuOS0xLjUtMi0xLjgtMy4yaDIuMWMwLjMsMC45LDAuOSwxLjYsMS42LDIuMmMxLjEtMC45''@;'; put 'put ''LDEuOC0yLjIsMS45LTMuN1xuXHRcdGgtNlY4aDNWNmgydjJoMy4zbDAuMSwxYzAuMSwyLjEtMC43LDQuMi0yLjIsNS43QzI3LjEsMTQuOSwyNy43LDE1LDI4LjMsMTV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVUZXh0Q29sb3I9KDAs''@;'; put 'put ''SC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQ3LDMuODRhMS40NSwxLjQ1LDAsMCwwLTEuNC0xSDE4YTEuNDUsMS40NSwwLDAsMC0xLjQyLDFMOC40MiwyMS41NmExLjM1LDEuMzUsMCwwLDAtLjE0LjU5LDEsMSwwLDAsMCwxLDEsMS4xMSwxLjExLDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42''@;'; put 'put ''NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4wOCwxLjU5LDEuNTksMCwwLDAtLjE0LS41N1pNMTMuMzYsMTUuNzEsMTgsNS40OWw0LjYsMTAuMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIv''@;'; put 'put ''PlxuICA8cmVjdCB4PSI0LjA2IiB5PSIyNSIgd2lkdGg9IjI4IiBoZWlnaHQ9IjgiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxsLkNsclNoYXBlSGlnaGxpZ2h0ZXI9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1Ljgy''@;'; put 'put ''LDI2LjA2YTEsMSwwLDAsMS0uNzEtLjI5TDguNjcsMTkuMzNhMSwxLDAsMCwxLS4yOS0uNzEsMSwxLDAsMCwxLC4yOS0uNzFMMjMsMy41NGE1LjU1LDUuNTUsMCwxLDEsNy44NSw3Ljg2TDE2LjUzLDI1Ljc3QTEsMSwwLDAsMSwxNS44MiwyNi4wNlptLTUtNy40NCw1LDVMMjkuNDgsMTBhMy41''@;'; put 'put ''NCwzLjU0LDAsMCwwLDAtNSwzLjYzLDMuNjMsMCwwLDAtNSwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTEwLjM4LDI4LjI4QTEsMSwwLDAsMSw5LjY3LDI4TDYuNDUsMjQuNzdhMSwxLDAsMCwxLS4yMi0xLjA5bDIuMjItNS40''@;'; put 'put ''NGExLDEsMCwwLDEsMS42My0uMzNsNi40NSw2LjQ0QTEsMSwwLDAsMSwxNi4yLDI2bC01LjQ0LDIuMjJBMS4zMywxLjMzLDAsMCwxLDEwLjM4LDI4LjI4Wk04LjMzLDIzLjgybDIuMjksMi4yOCwzLjQzLTEuNEw5Ljc0LDIwLjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGlu''@;'; put 'put ''ZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTguOTQsMzBoLTVhMSwxLDAsMCwxLS44NC0xLjU1bDMuMjItNC45NGExLDEsMCwwLDEsMS41NS0uMTZsMy4yMSwzLjIyYTEsMSwwLDAsMSwuMDYsMS4zNUw5LjcsMjkuNjRBMSwxLDAsMCwxLDguOTQsMzBaTTUuNzgsMjhIOC40N0w5LDI3LjM0bC0x''@;'; put 'put ''LjctMS43WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHJlY3QgeD0iMy4wNiIgeT0iMzEiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPicpLGwuQ2xyU2hhcGVPdXRkZW50''@;'; put 'put ''PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwx''@;'; put 'put ''LDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxOWgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTMxLjA2LDI0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik05LjU2LDIyLjU0YTEsMSwwLDAsMS0uNy0uM0w0LjYxLDE4bDQuMjUtNC4yNGExLDEsMCwwLDEsMS40MSwxLjQxTDcuNDQsMThsMi44MywyLjgzYTEsMSwwLDAsMS0uNzEsMS43MVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksbC5DbHJTaGFwZUluZGVudD0oMCxILmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMDYsOWgtMjZhMSwxLDAsMSwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE0aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTloLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwx''@;'; put 'put ''LDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgPHBhdGgg''@;'; put 'put ''ZD0iTTMxLjA2LDI5aC0yNmExLDEsMCwwLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPlxuICA8cGF0aCBkPSJNNS41NiwyMi41NGExLDEsMCwwLDEtLjctMS43MUw3LjY4LDE4LDQuODYsMTUuMTdhMSwxLDAsMCwx''@;'; put 'put ''LDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDEwLjUxLDE4LDYuMjcsMjIuMjRBMSwxLDAsMCwxLDUuNTYsMjIuNTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIvPicpLGwuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoPSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9''@;'; put 'put ''Ik0zMi44OCwxOS45MmgtMzBhMSwxLDAsMSwxLDAtMmgzMGExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcuMjcsMTUuODZhMTIuOSwxMi45LDAsMCwxLDEuMjktLjUyQTUuNjksNS42OSwwLDAsMSwxMC4z''@;'; put 'put ''OSwxNWEzLjE4LDMuMTgsMCwwLDEsMi43NSwxLjExQTQuNDQsNC40NCwwLDAsMSwxNCwxOC44NXYuNDlhMTMuODMsMTMuODMsMCwwLDAtNC4yOS0uNzQsNi4xOSw2LjE5LDAsMCwwLTIuNTkuNTRBNSw1LDAsMCwwLDUuODEsMjBIMTUuODhWMTguODVhNS42Nyw1LjY3LDAsMCwwLTEuMzctNCw1''@;'; put 'put ''LjE2LDUuMTYsMCwwLDAtNC0xLjQ5LDEwLDEwLDAsMCwwLTMuOTEuODguODcuODcsMCwwLDAtLjQ0LDEuMThBLjg0Ljg0LDAsMCwwLDcuMjcsMTUuODZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEsMjBhNS45NCw1Ljk0LDAs''@;'; put 'put ''MCwxLC41NC0yLjMxLDQuMzUsNC4zNSwwLDAsMSwxLjU4LTEuODMsNC4yNyw0LjI3LDAsMCwxLDQuNTksMCw0LjQ3LDQuNDcsMCwwLDEsMS41NywxLjgzQTYuMTIsNi4xMiwwLDAsMSwyOS44NSwyMGgyYTcuNzMsNy43MywwLDAsMC0uNzgtMy4xOSw2LDYsMCwwLDAtMi4xOC0yLjQ1LDUuNzQs''@;'; put 'put ''NS43NCwwLDAsMC0zLjEtLjg4LDUuMzksNS4zOSwwLDAsMC0yLjguNzMsNS41NSw1LjU1LDAsMCwwLTIsMi4wNVYxMGEuODcuODcsMCwwLDAtLjg2LS44NkgyMGEuODcuODcsMCwwLDAtLjg2Ljg2VjIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAg''@;'; put 'put ''PHBhdGggZD0iTTI5LjY3LDIyYTUuNjEsNS42MSwwLDAsMS0uMzYsMS4wNyw0LjQ3LDQuNDcsMCwwLDEtMS41NywxLjg1LDQuMzIsNC4zMiwwLDAsMS00LjU5LDAsNC4zNSw0LjM1LDAsMCwxLTEuNTgtMS44NUE1LjY0LDUuNjQsMCwwLDEsMjEuMiwyMkgxOS4wOXY0LjEzQS44Ny44NywwLDAs''@;'; put 'put ''MCwyMCwyN2guMmEuODcuODcsMCwwLDAsLjg2LS44NlYyNC41MWE1LjU4LDUuNTgsMCwwLDAsMiwyLjA2LDUuNDgsNS40OCwwLDAsMCwyLjguNzIsNS42Niw1LjY2LDAsMCwwLDMuMS0uODhBNS44OCw1Ljg4LDAsMCwwLDMxLjA5LDI0LDcuMDksNy4wOSwwLDAsMCwzMS43MywyMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xNCwyMnYuNzZhMy4zNCwzLjM0LDAsMCwxLTEuNjIsMiw1LjM0LDUuMzQsMCwwLDEtMi42OS43MiwzLjc4LDMuNzgsMCwwLDEtMi4zNi0uNywyLjI0LDIuMjQsMCwwLDEtLjk0LTEuOSwyLjI5LDIu''@;'; put 'put ''MjksMCwwLDEsLjItLjkxSDQuNjJhNCw0LDAsMCwwLS4xMywxLDMuODMsMy44MywwLDAsMCwxLjM1LDMuMDZBNS4xNSw1LjE1LDAsMCwwLDkuMzEsMjcuMiw2LDYsMCwwLDAsMTIsMjYuNTdhNC42Miw0LjYyLDAsMCwwLDItMS43NFYyNmEuODYuODYsMCwwLDAsLjg2Ljg2SDE1YS44Ni44Niww''@;'; put 'put ''LDAsMCwuODYtLjg2VjIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxsLkNsclNoYXBlU3Vic2NyaXB0PSgwLEguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC41NSwxOGw2LjgsOC42YTEuMTcsMS4xNywwLDAsMS0uOTIsMS45aDBhMS4xNywxLjE3''@;'; put 'put ''LDAsMCwxLS45Mi0uNDRMMTMsMTkuOTEsNi42LDI4YTEuMTcsMS4xNywwLDAsMS0uOTIuNDRoMGExLjE3LDEuMTcsMCwwLDEtLjkyLTEuOUwxMS41NSwxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMTcsMS4xNywwLDAsMSw2LjYzLDhsNi40NCw4LjEzTDE5LjUsOGEx''@;'; put 'put ''LjE3LDEuMTcsMCwwLDEsLjkyLS40NGgwYTEuMTcsMS4xNywwLDAsMSwuOTIsMS45WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTIzLDMxLjgsMjcuNDksMjhhOS45LDkuOSwwLDAsMCwxLjg4LTIuMDVBMy40NCwzLjQ0LDAsMCww''@;'; put 'put ''LDMwLDI0YTIuMzUsMi4zNSwwLDAsMC0uMzUtMS4yNywyLjQ0LDIuNDQsMCwwLDAtMS0uODQsMi45LDIuOSwwLDAsMC0xLjI2LS4yOCwzLjM2LDMuMzYsMCwwLDAtMS44My41LDUuNjQsNS42NCwwLDAsMC0xLjQ4LDEuNDJsLTEtLjgxYTUuMTEsNS4xMSwwLDAsMSw0LjM2LTIuMzcsNC4zNSw0''@;'; put 'put ''LjM1LDAsMCwxLDIsLjQ1LDMuNDMsMy40MywwLDAsMSwyLDMuMTgsNC40NSw0LjQ1LDAsMCwxLS42OCwyLjM1LDEwLjksMTAuOSwwLDAsMS0yLjI0LDIuNDZsLTMuMjQsMi44MUgzMS41VjMzSDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxsLkNs''@;'; put 'put ''clNoYXBlU3VwZXJzY3JpcHQ9KDAsSC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjQzLDE4bDYuNzksOC42YTEuMTcsMS4xNywwLDAsMS0uOTIsMS45aDBhMS4xNywxLjE3LDAsMCwxLS45Mi0uNDRsLTYuNDQtOC4xM0w2LjQ3LDI4YTEuMTcsMS4xNywwLDAsMS0uOTIuNDRoMGExLjE3LDEu''@;'; put 'put ''MTcsMCwwLDEtLjkyLTEuOUwxMS40MywxOGwtNi44LTguNmExLjE3LDEuMTcsMCwwLDEsLjkyLTEuOWgwQTEuMiwxLjIsMCwwLDEsNi41MSw4bDYuNDMsOC4xM0wxOS4zOCw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwxLC45MiwxLjlaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjIuODUsMTQuNDdsNC41MS0zLjg1YTkuMzcsOS4zNywwLDAsMCwxLjg4LTIsMy40MywzLjQzLDAsMCwwLC41OS0xLjg2LDIuMjcsMi4yNywwLDAsMC0uMzYtMS4yNywyLjM4LDIuMzgsMCwwLDAtLjk1LS44Mywy''@;'; put 'put ''Ljc3LDIuNzcsMCwwLDAtMS4yNi0uMjksMy4zOSwzLjM5LDAsMCwwLTEuODMuNSw1LjgzLDUuODMsMCwwLDAtMS40OSwxLjQybC0xLS44MWE1LjEyLDUuMTIsMCwwLDEsNC4zNi0yLjM3LDQuMzYsNC4zNiwwLDAsMSwyLC40NSwzLjQ3LDMuNDcsMCwwLDEsMiwzLjE4QTQuNDQsNC40NCwwLDAs''@;'; put 'put ''MSwzMC41OCw5YTExLjE0LDExLjE0LDAsMCwxLTIuMjQsMi40NkwyNS4xLDE0LjMxaDYuMjh2MS4zM0gyMi44NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksbC5UZXh0RWRpdFNoYXBlcz17Ym9sZDpsLkNsclNoYXBlQm9sZCwiYnVsbGV0LWxpc3Qi''@;'; put 'put ''OmwuQ2xyU2hhcGVCdWxsZXRMaXN0LCJjaGVja2JveC1saXN0IjpsLkNsclNoYXBlQ2hlY2tib3hMaXN0LCJudW1iZXItbGlzdCI6bC5DbHJTaGFwZU51bWJlckxpc3QsImZvbnQtc2l6ZSI6bC5DbHJTaGFwZUZvbnRTaXplLGl0YWxpYzpsLkNsclNoYXBlSXRhbGljLCJqdXN0aWZ5LXRleHQi''@;'; put 'put ''OmwuQ2xyU2hhcGVKdXN0aWZ5VGV4dCwiY2VudGVyLXRleHQiOmwuQ2xyU2hhcGVDZW50ZXJUZXh0LCJhbGlnbi1sZWZ0LXRleHQiOmwuQ2xyU2hhcGVBbGlnbkxlZnRUZXh0LCJhbGlnbi1yaWdodC10ZXh0IjpsLkNsclNoYXBlQWxpZ25SaWdodFRleHQsInBhaW50LXJvbGxlciI6bC5DbHJT''@;'; put 'put ''aGFwZVBhaW50Um9sbGVyLCJibG9jay1xdW90ZSI6bC5DbHJTaGFwZUJsb2NrUXVvdGUsdGV4dDpsLkNsclNoYXBlVGV4dCx1bmRlcmxpbmU6bC5DbHJTaGFwZVVuZGVybGluZSwiYWxpZ24tY2VudGVyIjpsLkNsclNoYXBlQWxpZ25DZW50ZXIsImFsaWduLWxlZnQiOmwuQ2xyU2hhcGVBbGln''@;'; put 'put ''bkxlZnQsImFsaWduLXJpZ2h0IjpsLkNsclNoYXBlQWxpZ25SaWdodCwiYWxpZ24tYm90dG9tIjpsLkNsclNoYXBlQWxpZ25Cb3R0b20sImFsaWduLW1pZGRsZSI6bC5DbHJTaGFwZUFsaWduTWlkZGxlLCJhbGlnbi10b3AiOmwuQ2xyU2hhcGVBbGlnblRvcCxsYW5ndWFnZTpsLkNsclNoYXBl''@;'; put 'put ''TGFuZ3VhZ2UsInRleHQtY29sb3IiOmwuQ2xyU2hhcGVUZXh0Q29sb3IsaGlnaGxpZ2h0ZXI6bC5DbHJTaGFwZUhpZ2hsaWdodGVyLGluZGVudDpsLkNsclNoYXBlSW5kZW50LG91dGRlbnQ6bC5DbHJTaGFwZU91dGRlbnQsc3RyaWtldGhyb3VnaDpsLkNsclNoYXBlU3RyaWtldGhyb3VnaCxz''@;'; put 'put ''dWJzY3JpcHQ6bC5DbHJTaGFwZVN1YnNjcmlwdCxzdXBlcnNjcmlwdDpsLkNsclNoYXBlU3VwZXJzY3JpcHR9LHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChsLlRleHRFZGl0U2hhcGVzKX0s''@;'; put 'put ''Ii4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90cmF2ZWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90cmF2ZWwtc2hhcGVzLnRzICoq''@;'; put 'put ''KiEKICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxhKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLGwuVHJhdmVsU2hhcGVzPWwuQ2xyU2hhcGVPbkhvbGlkYXk9bC5DbHJTaGFwZVRyYWlsZXI9bC5DbHJTaGFwZUZlcnJ5PWwuQ2xyU2hhcGVDYXJhdmFuPWwuQ2xyU2hhcGVDYW1wZXJ2YW49bC5DbHJTaGFwZUJvYXQ9bC5DbHJTaGFwZUJpY3ljbGU9bC5DbHJTaGFwZU1hcE1hcmtl''@;'; put 'put ''cj1sLkNsclNoYXBlQ29tcGFzcz1sLkNsclNoYXBlTWFwPWwuQ2xyU2hhcGVDYXI9bC5DbHJTaGFwZUFpcnBsYW5lPWwuQ2xyU2hhcGVUcnVjaz12b2lkIDA7dmFyIHA9YSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNj''@;'; put 'put ''cmlwdG9yLWNvbmZpZy50cyIpO2E9YSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpLGwuQ2xyU2hhcGVUcnVjaz0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMTkuN2E2LjQ1LDYuNDUsMCwwLDEsMS41Ni0uMmMuMTUsMCwuMjksMCwuNDQsMFYxNGg0YTIsMiwwLDAsMSwyLDJ2MUgy''@;'; put 'put ''OHYyaDR2NUgyOS42YTQuNTQsNC41NCwwLDAsMC04LjM0LDBIMTQuNDNhNC41LDQuNSwwLDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDksNC40OSwwLDAsMCw4LjkyLDBIMzNhMSwxLDAsMCwwLDEtMVYxNkE0LDQsMCwwLDAsMzAsMTJaTTEwLjI2LDI4YTIu''@;'; put 'put ''MzgsMi4zOCwwLDEsMSwwLTQuNzUsMi4zOCwyLjM4LDAsMSwxLDAsNC43NVptMTUuMTcsMGEyLjM4LDIuMzgsMCwxLDEsMi41LTIuMzdBMi40NCwyLjQ0LDAsMCwxLDI1LjQzLDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTMwLDEySDI2VjdhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMjEuNDlBNC40NSw0LjQ1LDAsMCwwLDIxLjI1LDI0SDE0LjQzYTQuNSw0LjUsMCwwLDAtNC4xNy0yLjc2QTQuMzgsNC4zOCwwLDEsMCwxNC43MiwyNkgyMWE0LjQ4LDQu''@;'; put 'put ''NDgsMCwwLDAsOC45MSwwSDM0VjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4zOCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDIsMjhaTTMyLDE3SDI2VjE0''@;'; put 'put ''aDRhMiwyLDAsMCwxLDIsMloiLz4nKSxsLkNsclNoYXBlQWlycGxhbmU9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS43Nyw4LjE2YTIuNDMsMi40MywwLDAsMC0xLjktMkwyOCw0Ljg3YTQuNSw0LjUsMCww''@;'; put 'put ''LDAtMy42NS43OUw3LDE4LjMsMi4xNCwxOC4xQTEuODYsMS44NiwwLDAsMCwuOTEsMjEuNDFsNSwzLjkzYy42LjczLDEsLjU5LDEwLjkzLTQuODJsLjkzLDkuNDJhMS4zNiwxLjM2LDAsMCwwLC44NSwxLjE4LDEuNDMsMS40MywwLDAsMCwuNTQuMSwxLjU0LDEuNTQsMCwwLDAsMS0uNDFsMi4z''@;'; put 'put ''OS0yLjE4YTEuNTIsMS41MiwwLDAsMCwuNDYtLjgzTDI1LjIsMTUuOWMzLjU3LTIsNi45NS0zLjg4LDkuMzYtNS4yNUEyLjQzLDIuNDMsMCwwLDAsMzUuNzcsOC4xNlptLTIuMi43NWMtMi41LDEuNDItNiwzLjQxLTkuNzYsNS40N2wtLjQxLjIzTDIxLjA3LDI3LjI4bC0xLjQ3LDEuMzRMMTgu''@;'; put 'put ''NSwxNy4zMiwxNy4xNywxOEMxMCwyMiw3LjYxLDIzLjE2LDYuNzksMjMuNTJsLTQuMy0zLjQxLDUuMDguMjIsMTgtMTMuMDZhMi41MSwyLjUxLDAsMCwxLDItLjQ1bDUuODUsMS4yNmEuNDMuNDMsMCwwLDEsLjM1LjM3QS40Mi40MiwwLDAsMSwzMy41Nyw4LjkxWiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEyLjU0bDMuNTYsMSwxLjY0LTEuMTktNC0xLjE2TDEwLDEwLjA5bDUuNDctLjE2LDIuMy0xLjY3TDEwLDguNWExLjI1LDEuMjUsMCwwLDAtLjcuMTdMNi42NywxMC4yQTEuMjgsMS4yOCwwLDAs''@;'; put 'put ''MCw3LDEyLjU0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYuMjUsMTEuNSwxMiwxMy4xNmw2LjMyLTQuNTktOS4wNy4yNkEuNTIuNTIsMCwwLDAsOSw4LjkxTDYuMTMsMTAuNTZBLjUxLjUxLDAsMCwwLDYuMjUsMTEu''@;'; put 'put ''NVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zNC41Miw2LjM2LDI4LjIyLDVhMy43OCwzLjc4LDAsMCwwLTMuMDcuNjdMNi4xMiwxOS41bC00LjU3LS4yYTEuMjUsMS4yNSwwLDAsMC0uODMsMi4yMmw0LjQ1LDMuNTNh''@;'; put 'put ''LjU1LjU1LDAsMCwwLC41My4wOWMxLjI3LS40OSw2LTMsMTEuNTktNi4wN2wxLjEyLDExLjUxYS41NS41NSwwLDAsMCwuOS4zN2wyLjUtMi4wOGEuNzYuNzYsMCwwLDAsLjI2LS40NWwyLjM3LTEzLjI5YzQtMi4yMiw3LjgyLTQuMzcsMTAuNTEtNS44OUExLjU1LDEuNTUsMCwwLDAsMzQuNTIs''@;'; put 'put ''Ni4zNloiLz4nKSxsLkNsclNoYXBlQ2FyPSgwLGEuY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIxNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI2LjQ1LDE0LjE3QTIyLjEsMjIuMSwwLDAsMCwxOS4zOCw3YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4wOC40Ny0uMTQuOTItLjIsMS4zNkE0LDQsMCwwLDAsMiwxOHY2LjEzYTIsMiwwLDAs''@;'; put 'put ''MCwyLDJWMjBINFYxOGEyLDIsMCwwLDEsMi0ySDI0LjczQTcuMjgsNy4yOCwwLDAsMSwzMiwyMy4yN1YyNGgtMmE0LjUzLDQuNTMsMCwxLDAsLjMzLDJIMzJhMiwyLDAsMCwwLDItMnYtLjczQTkuMjgsOS4yOCwwLDAsMCwyNi40NSwxNC4xN1pNMTEsMTRINi45M2MwLS4zMS4wOS0uNjMuMTUt''@;'; put 'put ''MUE2LjUyLDYuNTIsMCwwLDEsMTEsOGgwWm0yLDBWNy41OGE4LjE3LDguMTcsMCwwLDEsNS4zNiwxLjE2QTE5LDE5LDAsMCwxLDIzLjksMTRaTTI1LjgsMjguMzhhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjUuOCwyOC4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LjE3LDI0YTQuNTMsNC41MywwLDEsMCwuMzMsMmg1LjNjMC0uMDgsMC0uMTcsMC0uMjVBNiw2LDAsMCwxLDIwLDI0Wk0xMCwyOC4zOGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwx''@;'; put 'put ''MCwyOC4zOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYuODcsMTQuMjhBMjIuMzYsMjIuMzYsMCwwLDAsMTkuNjUsNi45YTkuNjQsOS42NCwwLDAsMC05LS43LDguNiw4LjYsMCwwLDAtNC44Miw2LjRjLS4w''@;'; put 'put ''OC40OS0uMTUsMS0uMjEsMS40aC0xQTIuNTksMi41OSwwLDAsMCwyLDE2LjU5djguNTVhLjg2Ljg2LDAsMCwwLC44Ni44Nkg0LjU5YzAtLjEzLDAtLjI2LDAtLjM5YTUuNzcsNS43NywwLDAsMSw3LjcxLTUuNDVsLTEsMWE0LjU2LDQuNTYsMCwwLDAtNC4zNCwxLjU4LDMsMywwLDAsMC0uNjMu''@;'; put 'put ''OTNBNC41LDQuNSwwLDEsMCwxNC44MiwyNmg1LjQ4YzAtLjEzLDAtLjI2LDAtLjM5QTUuNzcsNS43NywwLDAsMSwyOCwyMC4xNmwtMSwxYTQuNTYsNC41NiwwLDAsMC00LjM0LDEuNTgsMywzLDAsMCwwLS42My45M0E0LjUsNC41LDAsMSwwLDMwLjUzLDI2aDIuNjFhLjg2Ljg2LDAsMCwwLC44''@;'; put 'put ''Ni0uODZWMjMuMzZBOS4zOSw5LjM5LDAsMCwwLDI2Ljg3LDE0LjI4Wk0xMiwxNEg4YzAtLjM1LjEtLjcxLjE2LTEuMDdhNi41Miw2LjUyLDAsMCwxLDMuODctNWgwWk0xMC4zNiwyOC4zNmEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi41LDIuNSwwLDAsMSwxMC4zNiwyOC4zNlpNMTksMTlIMTZW''@;'; put 'put ''MTdoM1ptLTYtNVY3LjQ3YTguMTYsOC4xNiwwLDAsMSw1LjQsMS4xNUExOS4xNSwxOS4xNSwwLDAsMSwyNCwxNFpNMjYuMDYsMjguMzZhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNSwyLjUsMCwwLDEsMjYuMDYsMjguMzZaIi8+JyksbC5DbHJTaGFwZU1hcD0oMCxhLmNsckljb25TVkcpKCc8''@;'; put 'put ''cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjU5LDYuMTlBMSwxLDAsMCwwLDMyLjcsNkwyMy4wOSw5LDEzLjQ2LDQuMTFhMSwxLDAsMCwwLS44NCwwTDIuNjIsOC4yQTEsMSwwLDAsMCwyLDkuMTNWMjkuNjFhMSwxLDAsMCwwLDEuMzguOTJM''@;'; put 'put ''MTMsMjYuNThsOS41OSw0LjkyYTEsMSwwLDAsMCwuNDYuMTEsMSwxLDAsMCwwLC4zLDBsMTAtMy4xMmExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMy41OSw2LjE5Wk0zMiwyNi43NWwtOC4zMiwyLjZWMjcuMDZoLTEuNnYybC04LjQtNC4zMVYyMy4wNmgtMS42djEuNzJMNCwyOC4xMVY5''@;'; put 'put ''Ljc5bDguMDgtMy4zM1Y4LjgxaDEuNlY2LjQ3bDguNCw0LjN2Mi4xaDEuNlYxMUwzMiw4LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMi4wOCIgeT0iMTUuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0i''@;'; put 'put ''My44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMi4wOCIgeT0iMjEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi4wOCIgeT0iMTEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMi4wOCIgeT0iMTcuMTMiIHdpZHRoPSIx''@;'; put 'put ''LjYiIGhlaWdodD0iMy43NSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy4zMSw3LjM1LDI1LDkuOTRWMTRIMjNWMTAuMjlMMTQsNS42OFY5SDEyVjUuMjdsLTkuNjcsNEEuNTMuNTMsMCwwLDAsMiw5Ljc1VjMw''@;'; put 'put ''LjQ1YS41My41MywwLDAsMCwuNzQuNDlMMTIsMjcuMTJWMjNoMnY0LjUzbDksNC42MVYyOGgydjMuNzlsOC42My0yLjdhLjUzLjUzLDAsMCwwLC4zNy0uNTFWNy44NkEuNTMuNTMsMCwwLDAsMzMuMzEsNy4zNVpNMTQsMjFIMTJWMTdoMlptMC02SDEyVjExaDJaTTI1LDI2SDIzVjIyaDJabTAt''@;'; put 'put ''NkgyM1YxNmgyWiIvPicpLGwuQ2xyU2hhcGVDb21wYXNzPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44MiwxNS4zMWgwTDEwLjQ2LDljLS40Ni0uMjYtMS4xMS4zNy0uODYuODRsNi4xNSwxMC41NiwxMC41Niw2LjE1YS42Ni42NiwwLDAsMCwuODQtLjg2Wm0tNCw0LDMtMyw0LjU1''@;'; put 'put ''LDcuNDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTEsMjkuOTVWMjkuNTNIMTd2Mi40MkExNCwxNCwwLDAsMSw0LjA1LDE5SDYuNDdW''@;'; put 'put ''MTdINC4wNUExNCwxNCwwLDAsMSwxNyw0LjA1VjYuNDdoMlY0LjA1QTE0LDE0LDAsMCwxLDMxLjk1LDE3SDI5LjUzdjJoMi40MkExNCwxNCwwLDAsMSwxOSwzMS45NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNi40NywxOUg0LjA1YzAtLjMzLS4wNS0uNjYtLjA1LTFzMC0uNjcuMDUtMUg2LjQ3Wk0xNyw0LjA1Yy4zMywwLC42Ni0uMDUsMS0uMDVzLjY3LDAsMSwuMDVWNi40N0gxN1ptMiwyNy45Yy0uMzMsMC0uNjYuMDUtMSwu''@;'; put 'put ''MDVzLS42NywwLTEtLjA1VjI5LjUzaDJabTgtNS41OGEuNTkuNTksMCwwLDEtLjY5LjE2TDE1Ljc1LDIwLjM4LDkuNiw5LjgyYy0uMjUtLjQ3LjM5LTEuMS44Ni0uODRsMTAuMzcsNi4zM2gwbDYuMzMsMTAuMzdBLjU5LjU5LDAsMCwxLDI3LDI2LjM3Wk0yOS41MywxOVYxN2gyLjQyYzAsLjMz''@;'; put 'put ''LjA1LjY2LjA1LDFzMCwuNjctLjA1LDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNi43NyAxOS4zNSAyNC4zNSAyMy43NyAxOS44IDE2LjMzIDE2Ljc3IDE5LjM1IiBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVNYXBNYXJrZXI9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCww''@;'; put 'put ''LDE4LDYuNzJabTAsOS40NmEzLjczLDMuNzMsMCwxLDEsMy43My0zLjczQTMuNzMsMy43MywwLDAsMSwxOCwxNi4xN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTEuNzksMTEuNzksMCwwLDAs''@;'; put 'put ''Ni4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkExMS43OSwxMS43OSwwLDAs''@;'; put 'put ''MCwxOCwyWk0yMy41OSwyNGwtLjM2LjUzYy0xLjcyLDIuNTgtNCw1LjQ3LTUuMjMsNi45LTEuMTgtMS40My0zLjUxLTQuMzItNS4yMy02LjlMMTIuNDIsMjRjLTEuNzctMi42NC00LjItNi4yNS00LjItMTAuMzFhOS43OCw5Ljc4LDAsMSwxLDE5LjU2LDBDMjcuNzgsMTcuNzksMjUuMzYsMjEu''@;'; put 'put ''NCwyMy41OSwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0xOCw2LjcyYTUuNzMsNS43MywwLDEsMCw1LjczLDUuNzNBNS43Myw1LjczLDAsMCwwLDE4LDYuNzJabTAsOS40''@;'; put 'put ''NmEzLjczLDMuNzMsMCwxLDEsMy43My0zLjczQTMuNzMsMy43MywwLDAsMSwxOCwxNi4xN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0yLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40OWE3LjQ5LDcuNDks''@;'; put 'put ''MCwwLDEtMi0uMzNjMCwuMTksMCwuMzgsMCwuNTcsMCw0LjA2LTIuNDIsNy42Ny00LjE5LDEwLjMxbC0uMzYuNTNjLTEuNzIsMi41OC00LDUuNDctNS4yMyw2LjktMS4xOC0xLjQzLTMuNTEtNC4zMi01LjIzLTYuOUwxMi40MiwyNGMtMS43Ny0yLjY0LTQuMi02LjI1LTQuMi0xMC4zMUE5Ljc3''@;'; put 'put ''LDkuNzcsMCwwLDEsMjIuNTYsNS4wOWE3LjQ1LDcuNDUsMCwwLDEsLjUyLTJBMTEuNzUsMTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCww''@;'; put 'put ''LDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJh''@;'; put 'put ''ZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTExLjc5LDExLjc5LDAsMCwwLDYuMjIsMTMuNzNjMCw0LjY3LDIuNjIsOC41OCw0LjU0LDEx''@;'; put 'put ''LjQzbC4zNS41MmE5OS42MSw5OS42MSwwLDAsMCw2LjE0LDhsLjc2Ljg5Ljc2LS44OWE5OS44Miw5OS44MiwwLDAsMCw2LjE0LThsLjM1LS41M2MxLjkxLTIuODUsNC41My02Ljc1LDQuNTMtMTEuNDJBMTEuNzksMTEuNzksMCwwLDAsMTgsMlptMCwxN2E2LjU2LDYuNTYsMCwxLDEsNi41Ni02''@;'; put 'put ''LjU2QTYuNTYsNi41NiwwLDAsMSwxOCwxOVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGN4PSIxOCIgY3k9IjEyLjQ0IiByPSIzLjczIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiIGQ9Ik0yOS43NywxMy40OUE3LjQ3LDcuNDcsMCwwLDEsMjQuMzgsMTFhNi41OCw2LjU4LDAsMSwxLTEuNjEtMyw3LjQyLDcuNDIsMCwwLDEsLjMxLTQuODRBMTEuNzUsMTEuNzUsMCwwLDAsNi4yMiwxMy43M2MwLDQuNjcsMi42''@;'; put 'put ''Miw4LjU4LDQuNTQsMTEuNDNsLjM1LjUyYTk5LjYxLDk5LjYxLDAsMCwwLDYuMTQsOGwuNzYuODkuNzYtLjg5YTk5LjgyLDk5LjgyLDAsMCwwLDYuMTQtOGwuMzUtLjUzYzEuOTEtMi44NSw0LjUzLTYuNzUsNC41My0xMS40MkMyOS43OCwxMy42NSwyOS43NywxMy41NywyOS43NywxMy40OVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIiBjeD0iMTgiIGN5PSIxMi40NCIgcj0iMy43MyIvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxsLkNsclNoYXBlQmljeWNsZT0oMCxhLmNsckljb25TVkcpKCc8cGF0aCBkPSJNOC41LDI5LjY1QTYuNTEsNi41MSwwLDAsMSwyLDIzLjE1YTYuMzksNi4zOSwwLDAsMSw2LjUt''@;'; put 'put ''Ni4zNkE2LjM5LDYuMzksMCwwLDEsMTUsMjMuMTUsNi41MSw2LjUxLDAsMCwxLDguNSwyOS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDguNSwxOC42NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0yNy41LDI5LjY1YTYuNTEsNi41MSwwLDAsMS02LjUtNi41LDYuNSw2LjUsMCwwLDEsMTMsMEE2LjUxLDYuNTEsMCwwLDEsMjcuNSwyOS42NVptMC0xMWE0LjUsNC41LDAsMSwwLDQuNSw0LjVBNC41MSw0LjUxLDAsMCwwLDI3LjUsMTguNjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTksMjQuNjZIOGExLDEsMCwwLDEtLjg5LTEuNDVsNS0xMCwxLjc4LjlMOS42MiwyMi43M0gxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxyZWN0IHg9IjEzIiB5PSIxMi42OCIgd2lkdGg9IjEx''@;'; put 'put ''IiBoZWlnaHQ9IjEuOTEiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yOCwyNC42NmExLDEsMCwwLDEtLjk0LS42NkwyMi4yOSwxMC42NkgyMGExLDEsMCwwLDEtMS0xLDEsMSwwLDAsMSwxLS45M2gzYS45NC45NCwwLDAsMSwuOTQuNmw1''@;'; put 'put ''LDE0YTEsMSwwLDAsMS0uNiwxLjI3QTEsMSwwLDAsMSwyOCwyNC42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0xMywxNC42NmExLDEsMCwwLDEtLjcxLS4yOWwtMS43LTEuNzFIOGExLDEsMCwwLDEtMS0xLC45NC45NCwwLDAsMSwx''@;'; put 'put ''LTFoM2ExLjA4LDEuMDgsMCwwLDEsLjc1LjI3bDIsMmExLDEsMCwwLDEsMCwxLjQxQTEsMSwwLDAsMSwxMywxNC42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0xNSwyMS45Yy0wLjItMi0xLjItMy44LTIuOS00LjlsLTIuNSw0LjlI''@;'; put 'put ''MTV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik03LjIsMjMuNGMtMC4yLTAuMy0wLjItMC43LDAtMWwzLjItNi4zYy0wLjYtMC4yLTEuMi0wLjItMS44LTAuMkM1LDE1LjksMiwxOC44LDIsMjIuNGMwLDMuNiwyLjksNi41LDYuNSw2LjVcblx0''@;'; put 'put ''YzMsMCw1LjYtMi4xLDYuMy01SDhDNy43LDIzLjksNy4zLDIzLjcsNy4yLDIzLjR6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOSwyMS45aC00YzAsMC4yLDAsMC4zLDAsMC41YzAsMC41LTAuMSwxLTAuMiwxLjVIMTlWMjEuOXoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+PHBhdGggZD0iTTI3LjUsMTUuOWMtMC4zLDAtMC42LDAtMC45LDAuMWwyLjQsNi42YzAuMiwwLjUtMC4xLDEuMS0wLjYsMS4zYy0wLjEsMC0wLjIsMC4xLTAuMywwLjFjLTAuNCwwLTAuOC0wLjMtMC45LTAuN2wtMi40LTYuN1xu''@;'; put 'put ''XHRjLTMuMiwxLjYtNC41LDUuNS0zLDguN2MxLjYsMy4yLDUuNSw0LjUsOC43LDNjMy4yLTEuNiw0LjUtNS41LDMtOC43QzMyLjIsMTcuMywzMCwxNS45LDI3LjUsMTUuOXoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBhdGggZD0iTTI0LjcsMTYuN2MwLjYt''@;'; put 'put ''MC4zLDEuMy0wLjUsMS45LTAuNmwtMi43LTcuNEMyMy44LDguMiwyMy40LDgsMjMsNy45aC0zYy0wLjYsMC0xLDAuNS0xLDEuMWMwLDAuNSwwLjQsMC45LDEsMC45XG5cdGMwLDAsMCwwLDAsMGgyLjNsMC43LDJoLTkuNmwtMS43LTEuN0MxMS41LDEwLjEsMTEuMywxMCwxMSwxMEg4Yy0wLjYs''@;'; put 'put ''MC0xLDAuNC0xLDFzMC40LDEsMSwxaDIuNmwxLjIsMS4ybC0xLjUsM1xuXHRjMC42LDAuMiwxLjMsMC41LDEuOCwwLjhsMS42LTMuMmgxMEwyNC43LDE2Ljd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLGwuQ2xyU2hhcGVCb2F0PSgwLGEuY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGQ9Ik0yOS4xLDI3LjFDMjgsMjcsMjYuOSwyNy40LDI2LDI4LjJjLTEuMSwxLjEtMi45LDEuMS00LjEsMGMtMS0wLjctMi4xLTEuMS0zLjMtMS4xYy0xLjItMC4xLTIuNCwwLjMtMy4zLDEuMVxuXHRcdEMxNC43LDI4LjcsMTQsMjksMTMuMiwyOXMtMS41LTAuMy0yLjEtMC44''@;'; put 'put ''Yy0xLTAuOC0yLjItMS4yLTMuNC0xLjJzLTIuNCwwLjQtMy40LDEuMkMzLjcsMjguNywyLjgsMjksMiwyOXYyXG5cdFx0YzEuMywwLjEsMi42LTAuMywzLjYtMS4yQzYuMiwyOS4zLDcuMSwyOSw3LjksMjljMC43LDAsMS41LDAuMywyLjEsMC44YzEuOCwxLjYsNC42LDEuNiw2LjUsMGMwLjYt''@;'; put 'put ''MC41LDEuMy0wLjgsMi4xLTAuOFxuXHRcdGMwLjcsMCwxLjQsMC4zLDIsMC44YzEuOSwxLjYsNC42LDEuNiw2LjUsMGMwLjUtMC41LDEuMy0wLjgsMi0wLjhjMC43LDAsMS40LDAuMywxLjksMC44YzAuOSwwLjcsMS45LDEuMSwzLDEuMnYtMlxuXHRcdGMtMSwwLTEuMi0wLjQtMS43LTAuOEMz''@;'; put 'put ''MS40LDI3LjUsMzAuMywyNy4xLDI5LjEsMjcuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDIzYzAtMC42LDAuNS0xLDEuMS0xSDMybC0zLjUsMy4xaDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjItMC4yYzAu''@;'; put 'put ''Ny0wLjgsMC42LTIuMS0wLjItMi44XG5cdFx0QzMzLDIwLjIsMzIuNiwyMCwzMi4xLDIwaC0yNWMtMS43LDAtMywxLjMtMywzdjMuMmMwLjUtMC41LDEuMi0wLjgsMS45LTEuMVYyM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik04Ljks''@;'; put 'put ''MTlIMTV2LTcuOGMwLTAuNi0wLjMtMS4yLTAuOC0xLjZDMTMuMyw4LjksMTIsOS4xLDExLjQsMTBsLTQuMSw1LjljLTAuNCwwLjYtMC40LDEuNC0wLjEsMi4xQzcuNSwxOC42LDguMiwxOSw4LjksMTlcblx0XHR6IE0xMy4xLDExLjJMMTMsMTdIOC45TDEzLjEsMTEuMnoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNiwxOGMwLjQtMC42LDAuNC0xLjQsMC0yTDE5LjcsNS42Yy0wLjQtMC42LTEtMS0xLjctMWMtMS4xLDAtMiwwLjktMiwyVjE5aDguM0MyNSwxOSwyNS43LDE4LjYsMjYsMTh6IE0xNy45LDYuNlxuXHRcdGw2LjQs''@;'; put 'put ''MTAuNWgtNi40VjYuNnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zNCwzMWMtMS4xLTAuMS0yLjEtMC41LTMtMS4yYy0wLjUtMC41LTEuMi0wLjgtMi0wLjhjLTAuNywwLTEuNSwwLjMtMiwwLjhjLTAuOSwwLjgtMiwxLjEtMy4xLDEu''@;'; put 'put ''MWMtMS4yLDAtMi40LTAuNC0zLjMtMS4xXG5cdGMtMS4yLTEuMS0zLTEuMS00LjEsMGMtMC45LDAuOC0yLjEsMS4yLTMuNCwxLjJjLTEuMiwwLTIuMy0wLjQtMy4yLTEuMmMtMC42LTAuNS0xLjMtMC44LTItMC44Yy0wLjgsMC0xLjcsMC4zLTIuMywwLjhcblx0Yy0xLDAuOC0yLjMsMS4yLTMu''@;'; put 'put ''NSwxLjFWMjljMC44LDAsMS43LTAuMywyLjMtMC45YzEtMC44LDIuMi0xLjIsMy40LTEuMWMxLjIsMCwyLjQsMC40LDMuMywxLjJjMS4yLDEuMSwzLDEuMSw0LjIsMFxuXHRjMS45LTEuNiw0LjctMS42LDYuNSwwYzEuMiwxLjEsMywxLjEsNC4xLDBjMC45LTAuOCwyLjEtMS4yLDMuMy0xLjJj''@;'; put 'put ''MS4xLDAsMi4yLDAuNCwzLDEuMkMzMi44LDI4LjcsMzMsMjksMzQsMjlMMzQsMzF6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjEsMjYuMmMwLjYtMC41LDEuMi0wLjgsMS45LTFWMjNjMC0wLjYsMC40LTEuMSwxLTEuMWgyNUwyOC40LDI1''@;'; put 'put ''aDAuMmMwLjgsMCwxLjYsMC4yLDIuMiwwLjVsMi41LTIuMmwwLjItMC4yXG5cdGMwLjctMC45LDAuNS0yLjEtMC40LTIuOEMzMi45LDIwLjEsMzIuNCwyMCwzMiwyMEg3Yy0xLjcsMC0zLDEuMy0zLDNMNC4xLDI2LjJMNC4xLDI2LjJ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNC45LDE4LjlIOC45Yy0xLjEsMC0yLTAuOS0yLTJjMC0wLjQsMC4xLTAuOCwwLjQtMS4ybDQuMS01LjhjMC42LTAuOSwxLjktMS4xLDIuOC0wLjVjMC41LDAuNCwwLjgsMSwwLjgsMS42VjE4Ljl6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQt''@;'; put 'put ''cGF0aC0zIiAvPjxwYXRoIGQ9Ik0yNC4zLDE4LjlIMTZWNi40YzAtMS4xLDAuOS0yLDItMmMwLjcsMCwxLjMsMC40LDEuNywxTDI2LDE1LjhjMC42LDEsMC4yLDIuMi0wLjcsMi43QzI1LDE4LjcsMjQuNiwxOC44LDI0LjMsMTguOVxuXHRMMjQuMywxOC45eiIgY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxsLkNsclNoYXBlQ2FtcGVydmFuPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik05LjUsMjRDOS41LDI0LDkuNSwyNCw5LjUsMjRDNy42LDI0LDYsMjUuNiw2LDI3LjVjMCwwLDAsMCwwLDBDNiwyOS40LDcuNiwzMSw5LjUsMzFjMS45LDAsMy41''@;'; put 'put ''LTEuNiwzLjUtMy41XG5cdFx0UzExLjQsMjQsOS41LDI0eiBNOS41LDI5QzguNywyOSw4LDI4LjMsOCwyNy41UzguNywyNiw5LjUsMjZzMS41LDAuNywxLjUsMS41UzEwLjMsMjksOS41LDI5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0i''@;'; put 'put ''TTIzLjUsMjRDMjMuNSwyNCwyMy41LDI0LDIzLjUsMjRjLTEuOSwwLTMuNSwxLjYtMy41LDMuNWMwLDAsMCwwLDAsMGMwLDEuOSwxLjUsMy41LDMuNSwzLjVjMS45LDAsMy41LTEuNiwzLjUtMy41XG5cdFx0UzI1LjQsMjQsMjMuNSwyNHogTTIzLjUsMjljLTAuOCwwLTEuNS0wLjctMS41LTEu''@;'; put 'put ''NXMwLjctMS41LDEuNS0xLjVzMS41LDAuNywxLjUsMS41UzI0LjMsMjksMjMuNSwyOXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMywyMC4xVjIwaC0wLjFsLTMuNS01LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4zVjkuN0MzMiw3LjEs''@;'; put 'put ''MjkuOSw1LDI3LjMsNWgtOC41Yy0xLjksMC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMsMS4zLTMsM1xuXHRcdHYxN2gyVjExYzAtMC42LDAuNC0xLDEtMWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIu''@;'; put 'put ''Ny0yLjcsMi43SDI0djloNy44XG5cdFx0bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwxaC0ydjJoMmMxLjcsMCwzLTEuMywzLTN2LTMuM0wzMywyMC4xeiBNMjYsMjB2LTVoMS41bDMuMSw1SDI2eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHJlY3Qg''@;'; put 'put ''eD0iMTkiIHk9IjkiIHdpZHRoPSI4IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwb2x5Z29uIHBvaW50cz0iMjAsMjIgMjIsMjIgMjIsMTMgMTUsMTMgMTUsMjggMTcsMjggMTcsMTUgMjAsMTUgXHQiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik02LDIwaDd2LTdINlYyMHogTTgsMTVoM3YzSDhWMTV6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNOS41LDI0QzcuNiwyNCw2LDI1LjYsNiwyNy41UzcuNiwzMSw5LjUs''@;'; put 'put ''MzFjMCwwLDAsMCwwLDBjMS45LDAsMy41LTEuNiwzLjUtMy41YzAsMCwwLTAuMSwwLTAuMUMxMywyNS41LDExLjQsMjQsOS41LDI0eiJcblx0XHQgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSIyMy41IiBjeT0iMjcuNSIgcj0iMy41IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yOS41LDE0LjVDMzEsMTMuNiwzMiwxMiwzMiwxMC4yVjkuN2MwLDAsMCwwLDAtMC4xQzMyLDcsMjkuOSw1LDI3LjMsNWgtOC41Yy0xLjksMC0zLjcsMS4yLTQuNCwzSDVjLTEuNywwLTMsMS4zLTMsM3YxN1xu''@;'; put 'put ''XHRcdGgyVjExYzAtMC42LDAuNC0xLDEtMWgxMC45TDE2LDkuMkMxNi4zLDcuOSwxNy40LDcsMTguNyw3aDguNUMyOC44LDcsMzAsOC4yLDMwLDkuN3YwLjVjMCwxLjUtMS4yLDIuNy0yLjcsMi43SDI3aC0zdjloNy44XG5cdFx0bDAuMiwwLjNWMjVjMCwwLjYtMC40LDEtMSwxaC0ydjJoMmMx''@;'; put 'put ''LjcsMCwzLTEuMywzLTN2LTMuM0wyOS41LDE0LjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxyZWN0IHg9IjE5IiB5PSI5IiB3aWR0aD0iNy45IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+PHBvbHlnb24g''@;'; put 'put ''cG9pbnRzPSIyMCwyMiAyMS45LDIyIDIxLjksMTMgMTUsMTMgMTUsMjggMTYuOSwyOCAxNi45LDE1IDIwLDE1IFx0IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPjxyZWN0IHg9IjYiIHk9IjEzIiB3aWR0aD0iNi45IiBoZWlnaHQ9IjciIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTYiIC8+JyksbC5DbHJTaGFwZUNhcmF2YW49KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjUsMjFDMTEsMjEsOSwyMyw5LDI1LjVzMiw0LjUsNC41LDQuNWMyLjUsMCw0LjUtMiw0LjUtNC41QzE4LDIzLDE2LDIxLDEzLjUsMjF6IE0xMy41LDI4''@;'; put 'put ''Yy0xLjQsMC0yLjUtMS4xLTIuNS0yLjVcblx0XHRzMS4xLTIuNSwyLjUtMi41czIuNSwxLjEsMi41LDIuNVMxNC45LDI4LDEzLjUsMjh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQt''@;'; put 'put ''MS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRcdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSww''@;'; put 'put ''LjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRcdGMwLjYsMCwxLTAuNCwxLTFTMzMuNiwyNCwzMywyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxMkg3djZoOVYxMnogTTE0LDE2SDl2''@;'; put 'put ''LTJoNVYxNnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xMy41LDMwQzExLDMwLDksMjgsOSwyNS41czItNC41LDQuNS00LjVzNC41LDIsNC41LDQuNUMxOCwyOCwxNiwzMCwxMy41LDMweiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1p''@;'; put 'put ''LXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRjLTAuNiwwLTEtMC40LTEtMVY5YzAtMC42''@;'; put 'put ''LDAuNC0xLDEtMWgxOC44YzAuNCwwLDAuNywwLjIsMC45LDAuNWw0LjIsNy41YzAuMSwwLjEsMC4xLDAuMywwLjEsMC41VjI0aC00VjEyaC03djhoMnYtNmgzdjEwaC0zdjJoMTNcblx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNv''@;'; put 'put ''bGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMTYsMThIN3YtNmg5VjE4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxsLkNsclNoYXBlRmVycnk9KDAsYS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDI1LjFjLTEuMiwwLTIuMywwLjQtMy4zLDEuMWMwLDAs''@;'; put 'put ''MCwwLDAsMGMtMS4xLDEuMS0zLDEuMS00LjEsMGMtMC45LTAuOC0yLjEtMS4yLTMuMy0xLjJjLTEuMiwwLTIuMywwLjQtMy4yLDEuMlxuXHRcdGMtMS4yLDEuMS0zLDEuMS00LjIsMEMxMCwyNS40LDguOCwyNSw3LjYsMjVjLTEuMiwwLTIuNCwwLjQtMy40LDEuMUMzLjYsMjYuNywyLjgsMjcs''@;'; put 'put ''MiwyN3YyYzEuMywwLjEsMi41LTAuNCwzLjQtMS4yXG5cdFx0QzYuMSwyNy4zLDYuOSwyNyw3LjcsMjdjMC44LDAsMS41LDAuMywyLjEsMC44YzEuOSwxLjYsNC43LDEuNiw2LjUsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4zLDIuMSwwLjhcblx0XHRjMS45LDEuNiw0''@;'; put 'put ''LjYsMS42LDYuNSwwYzAuNS0wLjUsMS4zLTAuOCwyLTAuOGMwLjcsMCwxLjUsMC4zLDIsMC44YzAuOSwwLjcsMiwxLjEsMy4xLDEuMnYtMS45Yy0wLjcsMC0xLjQtMC4zLTEuOS0wLjlcblx0XHRDMzEuMywyNS40LDMwLjEsMjUsMjksMjUuMXoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjksMjMuMlYyMEgzMmwtMy41LDNoMC4yYzAuOCwwLDEuNiwwLjIsMi4yLDAuNWwyLjUtMi4ybDAuMi0wLjJjMC41LTAuNiwwLjUtMS40LDAuMi0yLjFjLTAuNC0wLjctMS0xLTEuOC0xaC00LjRcblx0XHRMMjIuNSwxMUgxN2MtMS43LDAt''@;'; put 'put ''MywxLjMtMywzaC0yVjguMUg2djYuMWMtMS4yLDAuNC0yLDEuNS0yLDIuOHYxLjFWMjB2NC4zbDAuMS0wLjFDNC42LDIzLjcsNS4yLDIzLjQsNS45LDIzLjJ6IE04LDEwaDJ2NEg4VjEwelxuXHRcdCBNNiwxN2MwLTAuNiwwLjQtMSwxLTFoOXYtMmMwLTAuNiwwLjQtMSwxLTFoNWwwLjYsMUgx''@;'; put 'put ''OHYyaDUuOGwxLjIsMi4xSDZWMTd6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjguMiwyNWMtMS4yLDAtMi40LDAuNC0zLjMsMS4yYy0xLjIsMS4xLTMsMS4xLTQuMSwwYy0xLjktMS42LTQuNi0xLjYtNi41LDBjLTEuMiwxLjEtMi45''@;'; put 'put ''LDEuMS00LjEsMFxuXHRcdGMtMC45LTAuOC0yLTEuMi0zLjItMS4yYy0xLjIsMC0yLjMsMC40LTMuMiwxLjJDMy40LDI2LjcsMi43LDI3LDIsMjd2MmMxLjEtMC4xLDIuMi0wLjUsMy4xLTEuMkM1LjYsMjcuMyw2LjMsMjcsNywyN1xuXHRcdGMwLjcsMCwxLjUsMC4zLDIsMC44YzEuOSwxLjYs''@;'; put 'put ''NC43LDEuNiw2LjYsMGMwLjYtMC41LDEuMy0wLjgsMi4xLTAuOGMwLjgsMCwxLjUsMC4zLDIuMSwwLjhjMS45LDEuNiw0LjcsMS42LDYuNSwwXG5cdFx0YzAuNi0wLjUsMS4zLTAuOCwyLjEtMC44YzAuOCwwLDEuNiwwLjMsMi4xLDAuOGMwLjksMC44LDIuMiwxLjMsMy40LDEuMnYtMmMtMC44''@;'; put 'put ''LDAtMS42LTAuMy0yLjItMC44QzMwLjcsMjUuNCwyOS41LDI1LDI4LjIsMjV6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik01LjgsMjMuMnYtMy4zaDI2LjFMMjguNCwyM2gwLjJjMC44LDAsMS42LDAuMiwyLjIsMC41bDIuNS0yLjJsMC4xLTAu''@;'; put 'put ''MmMwLjctMC45LDAuNS0yLjEtMC40LTIuOGMtMC4zLTAuMy0wLjgtMC40LTEuMi0wLjRcblx0XHRoLTQuMWwtNS40LTdoLTUuNWMtMS43LDAtMywxLjMtMywzaC0yVjhINnY2LjJjLTEuMiwwLjQtMi4xLDEuNS0yLjEsMi44bDAsNy4ybDAuMSwwQzQuNSwyMy43LDUuMSwyMy40LDUuOCwyMy4y''@;'; put 'put ''eiBNMTcuOSwxNGg0LjJcblx0XHRsMS40LDJoLTUuN1YxNHogTTcuOSwxMGgydjRoLTJWMTB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVUcmFpbGVyPSgwLGEuY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01Ljgs''@;'; put 'put ''Mi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUuOFMxOC4yLDE5LjIsMTUsMTkuMnogTTE1LDI5LjJjLTIuMywwLTQuMi0xLjktNC4yLTQuMlxuXHRcdHMxLjktNC4yLDQuMi00LjJzNC4yLDEuOSw0LjIsNC4yUzE3LjMsMjkuMiwxNSwyOS4yeiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHJlY3QgeD0iMTQiIHk9IjI0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOUgydjEzLjFjMCwwLDAsMCwwLDBDMiwyNC4zLDMuNywy''@;'; put 'put ''Niw1LjksMjZIN3YtMkg1LjljLTEsMC0xLjgtMC44LTEuOS0xLjlWMTVoMjJ2Ny4xYzAsMS0wLjgsMS44LTEuOSwxLjlIMjN2MmgxLjFcblx0XHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiBNMjYsMTNINHYtMmgy''@;'; put 'put ''MlYxM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEu''@;'; put 'put ''OUgyM3YyaDEuMVxuXHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTkuMmMtMy4yLDAtNS44LDIuNi01LjgsNS44''@;'; put 'put ''czIuNiw1LjgsNS44LDUuOHM1LjgtMi42LDUuOC01LjhsMCwwQzIwLjgsMjEuOCwxOC4yLDE5LjIsMTUsMTkuMnogTTE2LDI2aC0ydi0yaDJWMjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLGwuQ2xyU2hhcGVPbkhvbGlkYXk9KDAsYS5jbHJJY29uU1ZH''@;'; put 'put ''KSgnPHBhdGggZD0iTTE4LjA4LDIuMzRjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRBMTcuOTEsMTcuOTEsMCwwLDAsMjMsMjkuNjZsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zLDEsMSwwLDAsMCwuMTYtLjU0VjI1LjYxYTEzLDEzLDAsMCwwLDQtOS4yN0MzNC4wOCw4''@;'; put 'put ''LjYyLDI2LjksMi4zNCwxOC4wOCwyLjM0Wk0yOC4zNywyNC40NWExLDEsMCwwLDAtLjMyLjczdjUuMzRsLTQuMzgtMi43OWExLDEsMCwwLDAtLjgzLS4xMSwxNiwxNiwwLDAsMS00Ljc2LjcyYy03LjcyLDAtMTQtNS4zOC0xNC0xMnM2LjI4LTEyLDE0LTEyLDE0LDUuMzgsMTQsMTJBMTEuMSwx''@;'; put 'put ''MS4xLDAsMCwxLDI4LjM3LDI0LjQ1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMxLjEsMTUuODIsMzEsMTUuNjcsMjguNSwxMy40NGEzLjI1LDMuMjUsMCwwLDAtMi4zOS0uODRsLTUuMzguMzQtMy41OS0zYS44MS44MSwwLDAs''@;'; put 'put ''MC0uNTItLjE5SDEzLjU2YS43OC43OCwwLDAsMC0uNjkuNC43Ny43NywwLDAsMCwwLC43OWwxLjM2LDIuNDQtNC43MS4yOSwxLjMxLDEuNTIsMTUuMzktMWExLjY1LDEuNjUsMCwwLDEsMS4yMi40M2wyLjM2LDIuMTNhLjExLjExLDAsMCwxLDAsLjA3YzAsLjA2LS4wOS4wNS0uMS4wNkgyMS44''@;'; put 'put ''MmwtLjM1LjM3LTUuMTksNS41M0gxNC42NGwyLjczLTUuOUg4LjU0TDcuMTMsMTQuMTYsNi41MSwxM2EuOC44LDAsMCwwLTEtLjJBLjgxLjgxLDAsMCwwLDUuMiwxMy45bDIsMy45NGExLjIxLDEuMjEsMCwwLDAsMS4wOC42NWg2LjU3bC0xLjk0LDQuMThBMS4yLDEuMiwwLDAsMCwxMywyMy44''@;'; put 'put ''M2ExLjIyLDEuMjIsMCwwLDAsMSwuNTZoMi40M2ExLjE3LDEuMTcsMCwwLDAsLjg4LS4zOWw1LjE4LTUuNTFoNy4xNmExLjY1LDEuNjUsMCwwLDAsMS41Mi0uOTFBMS43NCwxLjc0LDAsMCwwLDMxLjEsMTUuODJaTTE0LjkyLDExLjMxaDEuNDFsMi4wOSwxLjc3TDE2LDEzLjIzWiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0xOCwyLjVjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgsMTQsMTYsMTRhMTcuOTEsMTcuOTEsMCwwLDAsNC44OC0uNjhsNS41MywzLjUyYTEsMSwwLDAsMCwxLjM4LS4zQTEsMSwwLDAsMCwz''@;'; put 'put ''MCwzMi41VjI1Ljc3YTEzLDEzLDAsMCwwLDQtOS4yN0MzNCw4Ljc4LDI2LjgyLDIuNSwxOCwyLjVaTTI5Ljg0LDE4SDIxLjUxYS40Mi40MiwwLDAsMC0uMy4xM2wtNS4zLDUuNjRhLjM5LjM5LDAsMCwxLS4yOS4xM0gxMy4xOWEuNDEuNDEsMCwwLDEtLjM3LS41OGwyLjQ3LTUuMzJINy40NmEu''@;'; put 'put ''NDIuNDIsMCwwLDEtLjM2LS4yMmwtMi43LTVINi4yNGEuNTMuNTMsMCwwLDEsLjM5LjE4bDEuNTYsMS42OWEuMzguMzgsMCwwLDAsLjMzLjE0bDYuMTgtLjM4LTItMy41NWgyLjg5YS40Ny40NywwLDAsMSwuMzEuMTFMMTkuNjMsMTRsNi42OS0uMzVhMi40NCwyLjQ0LDAsMCwxLDEuODEuNjNs''@;'; put 'put ''Mi40NywyLjIzQS45Mi45MiwwLDAsMSwyOS44NCwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksbC5UcmF2ZWxTaGFwZXM9e3RydWNrOmwuQ2xyU2hhcGVUcnVjayxhaXJwbGFuZTpsLkNsclNoYXBlQWlycGxhbmUsY2FyOmwuQ2xyU2hhcGVDYXIs''@;'; put 'put ''bWFwOmwuQ2xyU2hhcGVNYXAsY29tcGFzczpsLkNsclNoYXBlQ29tcGFzcywibWFwLW1hcmtlciI6bC5DbHJTaGFwZU1hcE1hcmtlcixiaWN5Y2xlOmwuQ2xyU2hhcGVCaWN5Y2xlLGJvYXQ6bC5DbHJTaGFwZUJvYXQsY2FtcGVydmFuOmwuQ2xyU2hhcGVDYW1wZXJ2YW4sY2FyYXZhbjpsLkNs''@;'; put 'put ''clNoYXBlQ2FyYXZhbixmZXJyeTpsLkNsclNoYXBlRmVycnksdHJhaWxlcjpsLkNsclNoYXBlVHJhaWxlciwib24taG9saWRheSI6bC5DbHJTaGFwZU9uSG9saWRheX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGwuVHJhdmVsU2hhcGVzLCJwbGFuZSIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShs''@;'; put 'put ''LlRyYXZlbFNoYXBlcy5haXJwbGFuZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLlRyYXZlbFNoYXBlcywiYXV0byIsKDAscC5kZXNjcmlwdG9yQ29uZmlnKShsLlRyYXZlbFNoYXBlcy5jYXIpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNv''@;'; put 'put ''bnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQobC5UcmF2ZWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAg''@;'; put 'put ''ICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMgKioqIQogICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTSxs''@;'; put 'put ''LEgpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbC5kZXNjcmlwdG9yQ29uZmlnPXZvaWQgMCxsLmRlc2NyaXB0b3JDb25maWc9ZnVuY3Rpb24ocCl7cmV0dXJue2VudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJh''@;'; put 'put ''YmxlOiEwLHZhbHVlOnB9fX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAhKioqIC4vcHJvamVjdHMv''@;'; put 'put ''aWNvbnMvc3JjL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyLnRzICoqKiEKICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE0sbCxIKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGwuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPWwuY2hhbmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsbC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciBwPShPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoYSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5zaW5nbGVJbnN0YW5jZT1hLnNpbmdsZUluc3RhbmNlP2Euc2luZ2xlSW5zdGFuY2U6bmV3IGF9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksYS5wcm90b3R5cGUuc3Vic2NyaWJlVG89ZnVuY3Rp''@;'; put 'put ''b24odixrKXt2YXIgUz10aGlzO3JldHVybiB0aGlzLmNhbGxiYWNrc1t2XT8tMT09PXRoaXMuY2FsbGJhY2tzW3ZdLmluZGV4T2YoaykmJnRoaXMuY2FsbGJhY2tzW3ZdLnB1c2goayk6dGhpcy5jYWxsYmFja3Nbdl09W2tdLGZ1bmN0aW9uKCl7dmFyIEQ9Uy5jYWxsYmFja3Nbdl0uaW5kZXhP''@;'; put 'put ''ZihrKTtTLmNhbGxiYWNrc1t2XS5zcGxpY2UoRCwxKSwwPT09Uy5jYWxsYmFja3Nbdl0ubGVuZ3RoJiZkZWxldGUgUy5jYWxsYmFja3Nbdl19fSxhLnByb3RvdHlwZS5lbWl0Q2hhbmdlcz1mdW5jdGlvbih2LGspe3RoaXMuY2FsbGJhY2tzW3ZdJiZ0aGlzLmNhbGxiYWNrc1t2XS5tYXAoZnVu''@;'; put 'put ''Y3Rpb24oUyl7UyhrKX0pfSxhKTtmdW5jdGlvbiBhKCl7dGhpcy5jYWxsYmFja3M9bC5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzfWwuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPXB9LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyI6Ci8qISoqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyAqKiohCiAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNLGwsSCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxsLmNsckljb25TVkc9dm9pZCAwLGwuY2xySWNvblNWRz1mdW5jdGlvbihwKXt2''@;'; put 'put ''YXIgYT0iIjtyZXR1cm4tMTxwLmluZGV4T2YoIi0tYmFkZ2VkIikmJihhKz0iY2FuLWJhZGdlICIpLC0xPHAuaW5kZXhPZigiLS1hbGVydGVkIikmJihhKz0iY2FuLWFsZXJ0ICIpLC0xPHAuaW5kZXhPZigiY2xyLWktc29saWQiKSYmKGErPSJoYXMtc29saWQgIiksKGE/JzxzdmcgdmVyc2lv''@;'; put 'put ''bj0iMS4xIiBjbGFzcz0iJythKyciIHZpZXdCb3g9IjAgMCAzNiAzNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1''@;'; put 'put ''c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6JzxzdmcgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNhYmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nKStwKyI8L3N2Zz4ifX19LHo9e30sYi5tPWosYi5jPXosYi5kPWZ1bmN0aW9uKE0sbCxIKXtiLm8oTSxsKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KE0sbCx7ZW51bWVyYWJsZTohMCxnZXQ6SH0pfSxi''@;'; put 'put ''LnI9ZnVuY3Rpb24oTSl7dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KE0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0s''@;'; put 'put ''Yi50PWZ1bmN0aW9uKE0sbCl7aWYoMSZsJiYoTT1iKE0pKSw4Jmx8fDQmbCYmIm9iamVjdCI9PXR5cGVvZiBNJiZNJiZNLl9fZXNNb2R1bGUpcmV0dXJuIE07dmFyIEg9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihiLnIoSCksT2JqZWN0LmRlZmluZVByb3BlcnR5KEgsImRlZmF1bHQiLHtlbnVt''@;'; put 'put ''ZXJhYmxlOiEwLHZhbHVlOk19KSwyJmwmJiJzdHJpbmciIT10eXBlb2YgTSlmb3IodmFyIHAgaW4gTSliLmQoSCxwLGZ1bmN0aW9uKGEpe3JldHVybiBNW2FdfS5iaW5kKG51bGwscCkpO3JldHVybiBIfSxiLm49ZnVuY3Rpb24oTSl7dmFyIGw9TSYmTS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIE0uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gTX07cmV0dXJuIGIuZChsLCJhIixsKSxsfSxiLm89ZnVuY3Rpb24oTSxsKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE0sbCl9LGIucD0iIixiKGIucz0iLi9wcm9qZWN0cy9pY29ucy9zcmMv''@;'; put 'put ''Y2xyLWljb25zLXNmeC50cyIpO2Z1bmN0aW9uIGIoTSl7aWYoeltNXSlyZXR1cm4geltNXS5leHBvcnRzO3ZhciBsPXpbTV09e2k6TSxsOiExLGV4cG9ydHM6e319O3JldHVybiBqW01dLmNhbGwobC5leHBvcnRzLGwsbC5leHBvcnRzLGIpLGwubD0hMCxsLmV4cG9ydHN9dmFyIGosen0pLGZ1''@;'; put 'put ''bmN0aW9uKGIsail7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZ0eXBlb2YgbW9kdWxlPCJ1Ij9qKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLGopOmooKGI9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6''@;'; put 'put ''Ynx8c2VsZikubWFya2VkPXt9KX0odGhpcyxmdW5jdGlvbihiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaihuLHMpe2Zvcih2YXIgdD0wO3Q8cy5sZW5ndGg7dCsrKXt2YXIgZT1zW3RdO2UuZW51bWVyYWJsZT1lLmVudW1lcmFibGV8fCExLGUuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBl''@;'; put 'put ''JiYoZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInN5bWJvbCI9PXR5cGVvZihpPWZ1bmN0aW9uKHIsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiByfHxudWxsPT09cilyZXR1cm4gcjt2YXIgaD1yW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwPT09aClyZXR1cm4g''@;'; put 'put ''U3RyaW5nKHIpO2lmKCJvYmplY3QiIT10eXBlb2YoaD1oLmNhbGwociwic3RyaW5nIikpKXJldHVybiBoO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9KGk9ZS5rZXkpKT9pOlN0cmluZyhpKSxlKX12YXIgaX1mdW5j''@;'; put 'put ''dGlvbiB6KCl7cmV0dXJuKHo9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihuKXtmb3IodmFyIHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXt2YXIgdCxlPWFyZ3VtZW50c1tzXTtmb3IodCBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku''@;'; put 'put ''Y2FsbChlLHQpJiYoblt0XT1lW3RdKX1yZXR1cm4gbn0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBNKG4scyl7KG51bGw9PXN8fHM+bi5sZW5ndGgpJiYocz1uLmxlbmd0aCk7Zm9yKHZhciB0PTAsZT1uZXcgQXJyYXkocyk7dDxzO3QrKyllW3RdPW5bdF07cmV0dXJuIGV9ZnVu''@;'; put 'put ''Y3Rpb24gbChuLHMpe3ZhciB0LGU9dHlwZW9mIFN5bWJvbDwidSImJm5bU3ltYm9sLml0ZXJhdG9yXXx8blsiQEBpdGVyYXRvciJdO2lmKGUpcmV0dXJuKGU9ZS5jYWxsKG4pKS5uZXh0LmJpbmQoZSk7aWYoQXJyYXkuaXNBcnJheShuKXx8KGU9ZnVuY3Rpb24oaSxyKXt2YXIgYztpZihpKXJl''@;'; put 'put ''dHVybiJzdHJpbmciPT10eXBlb2YgaT9NKGkscik6Ik1hcCI9PT0oYz0iT2JqZWN0Ij09PShjPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpKS5zbGljZSg4LC0xKSkmJmkuY29uc3RydWN0b3I/aS5jb25zdHJ1Y3Rvci5uYW1lOmMpfHwiU2V0Ij09PWM/QXJyYXkuZnJvbShpKToi''@;'; put 'put ''QXJndW1lbnRzIj09PWN8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGMpP00oaSxyKTp2b2lkIDB9KG4pKXx8cyYmbiYmIm51bWJlciI9PXR5cGVvZiBuLmxlbmd0aClyZXR1cm4gZSYmKG49ZSksdD0wLGZ1bmN0aW9uKCl7cmV0dXJuIHQ+PW4ubGVu''@;'; put 'put ''Z3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTpuW3QrK119fTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEg''@;'; put 'put ''W1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIEg9MDtmdW5jdGlvbiBwKG4pe3JldHVybiJfX3ByaXZhdGVfIitIKysrIl8iK259ZnVuY3Rpb24gYShuLHMpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHMpKXJldHVybiBuO3Rocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoImF0dGVtcHRlZCB0byB1c2UgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKX1mdW5jdGlvbiB2KCl7cmV0dXJue2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hs''@;'; put 'put ''aWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHho''@;'; put 'put ''dG1sOiExfX1mdW5jdGlvbiBrKG4pe2IuZGVmYXVsdHM9bn1mdW5jdGlvbiBTKG4pe3JldHVybiBPW25dfWIuZGVmYXVsdHM9e2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdo''@;'; put 'put ''dDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1s''@;'; put 'put ''OiExfTt2YXIgRD0vWyY8PiInXS8seD1uZXcgUmVnRXhwKEQuc291cmNlLCJnIiksRz0vWzw+IiddfCYoPyEoI1xkezEsN318I1tYeF1bYS1mQS1GMC05XXsxLDZ9fFx3Kyk7KS8sUD1uZXcgUmVnRXhwKEcuc291cmNlLCJnIiksTz17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsi''@;'; put 'put ''LCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In07ZnVuY3Rpb24gVChuLHMpe2lmKHMpe2lmKEQudGVzdChuKSlyZXR1cm4gbi5yZXBsYWNlKHgsUyl9ZWxzZSBpZihHLnRlc3QobikpcmV0dXJuIG4ucmVwbGFjZShQLFMpO3JldHVybiBufXZhciB0MT0vJigjKD86XGQrKXwoPzojeFswLTlBLUZh''@;'; put 'put ''LWZdKyl8KD86XHcrKSk7Py9naTtmdW5jdGlvbiBRKG4pe3JldHVybiBuLnJlcGxhY2UodDEsZnVuY3Rpb24ocyx0KXtyZXR1cm4iY29sb24iPT09KHQ9dC50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09dC5jaGFyQXQoMCk/IngiPT09dC5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShw''@;'; put 'put ''YXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK3Quc3Vic3RyaW5nKDEpKToiIn0pfXZhciBZPS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9uIHcobixzKXtuPSJzdHJpbmciPT10eXBlb2Ygbj9uOm4uc291cmNlLHM9c3x8IiI7dmFyIHQ9e3JlcGxhY2U6ZnVu''@;'; put 'put ''Y3Rpb24oZSxpKXtyZXR1cm4gaT0oaT1pLnNvdXJjZXx8aSkucmVwbGFjZShZLCIkMSIpLG49bi5yZXBsYWNlKGUsaSksdH0sZ2V0UmVnZXg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJlZ0V4cChuLHMpfX07cmV0dXJuIHR9dmFyIEgxPS9bXlx3Ol0vZyxBMT0vXiR8XlthLXpdW2EtejAtOSsu''@;'; put 'put ''LV0qOnxeWz8jXS9pO2Z1bmN0aW9uIG4xKG4scyx0KXtpZihuKXt0cnl7ZT1kZWNvZGVVUklDb21wb25lbnQoUSh0KSkucmVwbGFjZShIMSwiIikudG9Mb3dlckNhc2UoKX1jYXRjaHtyZXR1cm4gbnVsbH1pZigwPT09ZS5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09ZS5pbmRleE9mKCJ2''@;'; put 'put ''YnNjcmlwdDoiKXx8MD09PWUuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH12YXIgZTtzJiYhQTEudGVzdCh0KSYmKG49dCxlMVsiICIrKGU9cyldfHwoZTFbIiAiK2VdPVYxLnRlc3QoZSk/ZSsiLyI6YzEoZSwiLyIsITApKSxzPS0xPT09KGU9ZTFbIiAiK2VdKS5pbmRleE9mKCI6Iiks''@;'; put 'put ''dD0iLy8iPT09bi5zdWJzdHJpbmcoMCwyKT9zP246ZS5yZXBsYWNlKFoxLCIkMSIpK246Ii8iPT09bi5jaGFyQXQoMCk/cz9uOmUucmVwbGFjZShDMSwiJDEiKStuOmUrbik7dHJ5e3Q9ZW5jb2RlVVJJKHQpLnJlcGxhY2UoLyUyNS9nLCIlIil9Y2F0Y2h7cmV0dXJuIG51bGx9cmV0dXJuIHR9''@;'; put 'put ''dmFyIGUxPXt9LFYxPS9eW146XSs6XC8qW14vXSokLyxaMT0vXihbXjpdKzopW1xzXFNdKiQvLEMxPS9eKFteOl0rOlwvKlteL10qKVtcc1xTXSokLyxLPXtleGVjOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZDEobixzKXt2YXIgdD1uLnJlcGxhY2UoL1x8L2csZnVuY3Rpb24oaSxyLGMpe2Zv''@;'; put 'put ''cih2YXIgaD0hMSxWPXI7MDw9LS1WJiYiXFwiPT09Y1tWXTspaD0haDtyZXR1cm4gaD8ifCI6IiB8In0pLnNwbGl0KC8gXHwvKSxlPTA7aWYodFswXS50cmltKCl8fHQuc2hpZnQoKSwwPHQubGVuZ3RoJiYhdFt0Lmxlbmd0aC0xXS50cmltKCkmJnQucG9wKCksdC5sZW5ndGg+cyl0LnNwbGlj''@;'; put 'put ''ZShzKTtlbHNlIGZvcig7dC5sZW5ndGg8czspdC5wdXNoKCIiKTtmb3IoO2U8dC5sZW5ndGg7ZSsrKXRbZV09dFtlXS50cmltKCkucmVwbGFjZSgvXFxcfC9nLCJ8Iik7cmV0dXJuIHR9ZnVuY3Rpb24gYzEobixzLHQpe3ZhciBlPW4ubGVuZ3RoO2lmKDA9PT1lKXJldHVybiIiO2Zvcih2YXIg''@;'; put 'put ''aT0wO2k8ZTspe3ZhciByPW4uY2hhckF0KGUtaS0xKTtpZigociE9PXN8fHQpJiYocj09PXN8fCF0KSlicmVhaztpKyt9cmV0dXJuIG4uc2xpY2UoMCxlLWkpfWZ1bmN0aW9uIG8xKG4scix0LGUpe3ZhciBpPXIuaHJlZixjPShyPXIudGl0bGU/VChyLnRpdGxlKTpudWxsLG5bMV0ucmVwbGFj''@;'; put 'put ''ZSgvXFwoW1xbXF1dKS9nLCIkMSIpKTtyZXR1cm4iISIhPT1uWzBdLmNoYXJBdCgwKT8oZS5zdGF0ZS5pbkxpbms9ITAsbj17dHlwZToibGluayIscmF3OnQsaHJlZjppLHRpdGxlOnIsdGV4dDpjLHRva2VuczplLmlubGluZVRva2VucyhjKX0sZS5zdGF0ZS5pbkxpbms9ITEsbik6e3R5cGU6''@;'; put 'put ''ImltYWdlIixyYXc6dCxocmVmOmksdGl0bGU6cix0ZXh0OlQoYyl9fXZhciBKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt0aGlzLm9wdGlvbnM9dHx8Yi5kZWZhdWx0c312YXIgcz1uLnByb3RvdHlwZTtyZXR1cm4gcy5zcGFjZT1mdW5jdGlvbih0KXtpZigodD10aGlzLnJ1bGVzLmJsb2Nr''@;'; put 'put ''Lm5ld2xpbmUuZXhlYyh0KSkmJjA8dFswXS5sZW5ndGgpcmV0dXJue3R5cGU6InNwYWNlIixyYXc6dFswXX19LHMuY29kZT1mdW5jdGlvbihpKXt2YXIgZTtpZihpPXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKGkpKXJldHVybiBlPWlbMF0ucmVwbGFjZSgvXiB7MSw0fS9nbSwiIikse3R5''@;'; put 'put ''cGU6ImNvZGUiLHJhdzppWzBdLGNvZGVCbG9ja1N0eWxlOiJpbmRlbnRlZCIsdGV4dDp0aGlzLm9wdGlvbnMucGVkYW50aWM/ZTpjMShlLCJcbiIpfX0scy5mZW5jZXM9ZnVuY3Rpb24oaCl7dmFyIGUsaSxyLGM7aWYoaD10aGlzLnJ1bGVzLmJsb2NrLmZlbmNlcy5leGVjKGgpKXJldHVybiBp''@;'; put 'put ''PWU9aFswXSxyPWhbM118fCIiLGk9bnVsbD09PShpPWUubWF0Y2goL14oXHMrKSg/OmBgYCkvKSk/cjooYz1pWzFdLHIuc3BsaXQoIlxuIikubWFwKGZ1bmN0aW9uKFYpe3ZhciBDPVYubWF0Y2goL15ccysvKTtyZXR1cm4gbnVsbCE9PUMmJkNbMF0ubGVuZ3RoPj1jLmxlbmd0aD9WLnNsaWNl''@;'; put 'put ''KGMubGVuZ3RoKTpWfSkuam9pbigiXG4iKSkse3R5cGU6ImNvZGUiLHJhdzplLGxhbmc6aFsyXSYmaFsyXS50cmltKCkucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0ZXh0Oml9fSxzLmhlYWRpbmc9ZnVuY3Rpb24ocil7dmFyIGUsaTtpZihyPXRoaXMucnVsZXMu''@;'; put 'put ''YmxvY2suaGVhZGluZy5leGVjKHIpKXJldHVybiBlPXJbMl0udHJpbSgpLC8jJC8udGVzdChlKSYmKGk9YzEoZSwiIyIpLCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJmkmJiEvICQvLnRlc3QoaSl8fChlPWkudHJpbSgpKSkse3R5cGU6ImhlYWRpbmciLHJhdzpyWzBdLGRlcHRoOnJbMV0ubGVu''@;'; put 'put ''Z3RoLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fSxzLmhyPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5ibG9jay5oci5leGVjKHQpKXJldHVybnt0eXBlOiJociIscmF3OnRbMF19fSxzLmJsb2NrcXVvdGU9ZnVuY3Rpb24oYyl7dmFyIGUsaSxyO2lmKGM9dGhpcy5y''@;'; put 'put ''dWxlcy5ibG9jay5ibG9ja3F1b3RlLmV4ZWMoYykpcmV0dXJuIGU9Y1swXS5yZXBsYWNlKC9eICo+WyBcdF0/L2dtLCIiKSxpPXRoaXMubGV4ZXIuc3RhdGUudG9wLHRoaXMubGV4ZXIuc3RhdGUudG9wPSEwLHI9dGhpcy5sZXhlci5ibG9ja1Rva2VucyhlKSx0aGlzLmxleGVyLnN0YXRlLnRv''@;'; put 'put ''cD1pLHt0eXBlOiJibG9ja3F1b3RlIixyYXc6Y1swXSx0b2tlbnM6cix0ZXh0OmV9fSxzLmxpc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ydWxlcy5ibG9jay5saXN0LmV4ZWModCk7aWYoZSl7dmFyIGkscixjLGgsVixDLHUsZCxMLHksSSxaPTE8KGY9ZVsxXS50cmltKCkpLmxlbmd0aCxv''@;'; put 'put ''PXt0eXBlOiJsaXN0IixyYXc6IiIsb3JkZXJlZDpaLHN0YXJ0Olo/K2Yuc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119LGY9Wj8iXFxkezEsOX1cXCIrZi5zbGljZSgtMSk6IlxcIitmO3RoaXMub3B0aW9ucy5wZWRhbnRpYyYmKGY9Wj9mOiJbKistXSIpO2Zvcih2YXIgRT1uZXcg''@;'; put 'put ''UmVnRXhwKCJeKCB7MCwzfSIrZisiKSgoPzpbXHQgXVteXFxuXSopPyg/OlxcbnwkKSkiKTt0JiYoST0hMSxlPUUuZXhlYyh0KSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QodCk7KXtpZih0PXQuc3Vic3RyaW5nKChpPWVbMF0pLmxlbmd0aCksdT1lWzJdLnNwbGl0KCJcbiIsMSlbMF0u''@;'; put 'put ''cmVwbGFjZSgvXlx0Ky8sZnVuY3Rpb24oaTEpe3JldHVybiIgIi5yZXBlYXQoMyppMS5sZW5ndGgpfSksZD10LnNwbGl0KCJcbiIsMSlbMF0sdGhpcy5vcHRpb25zLnBlZGFudGljPyhoPTIseT11LnRyaW1MZWZ0KCkpOihoPWVbMl0uc2VhcmNoKC9bXiBdLykseT11LnNsaWNlKGg9NDxoPzE6''@;'; put 'put ''aCksaCs9ZVsxXS5sZW5ndGgpLFY9ITEsIXUmJi9eICokLy50ZXN0KGQpJiYoaSs9ZCsiXG4iLHQ9dC5zdWJzdHJpbmcoZC5sZW5ndGgrMSksST0hMCksIUkpZm9yKHZhciBCPW5ldyBSZWdFeHAoIl4gezAsIitNYXRoLm1pbigzLGgtMSkrIn0oPzpbKistXXxcXGR7MSw5fVsuKV0pKCg/Olsg''@;'; put 'put ''XHRdW15cXG5dKik/KD86XFxufCQpKSIpLG09bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMsaC0xKSsifSgoPzotICopezMsfXwoPzpfICopezMsfXwoPzpcXCogKil7Myx9KSg/Olxcbit8JCkiKSxfPW5ldyBSZWdFeHAoIl4gezAsIitNYXRoLm1pbigzLGgtMSkrIn0oPzpgYGB8fn5+''@;'; put 'put ''KSIpLFI9bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMsaC0xKSsifSMiKTt0JiYoZD1MPXQuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWMmJihkPWQucmVwbGFjZSgvXiB7MSw0fSg/PSggezR9KSpbXiBdKS9nLCIgICIpKSwhXy50ZXN0KGQpKSYmIVIudGVzdChk''@;'; put 'put ''KSYmIUIudGVzdChkKSYmIW0udGVzdCh0KTspe2lmKGQuc2VhcmNoKC9bXiBdLyk+PWh8fCFkLnRyaW0oKSl5Kz0iXG4iK2Quc2xpY2UoaCk7ZWxzZXtpZihWfHw0PD11LnNlYXJjaCgvW14gXS8pfHxfLnRlc3QodSl8fFIudGVzdCh1KXx8bS50ZXN0KHUpKWJyZWFrO3krPSJcbiIrZH1WfHxk''@;'; put 'put ''LnRyaW0oKXx8KFY9ITApLGkrPUwrIlxuIix0PXQuc3Vic3RyaW5nKEwubGVuZ3RoKzEpLHU9ZC5zbGljZShoKX1vLmxvb3NlfHwoQz9vLmxvb3NlPSEwOi9cbiAqXG4gKiQvLnRlc3QoaSkmJihDPSEwKSksdGhpcy5vcHRpb25zLmdmbSYmKHI9L15cW1sgeFhdXF0gLy5leGVjKHkpKSYmKGM9''@;'; put 'put ''IlsgXSAiIT09clswXSx5PXkucmVwbGFjZSgvXlxbWyB4WF1cXSArLywiIikpLG8uaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6aSx0YXNrOiEhcixjaGVja2VkOmMsbG9vc2U6ITEsdGV4dDp5fSksby5yYXcrPWl9by5pdGVtc1tvLml0ZW1zLmxlbmd0aC0xXS5yYXc9aS50cmlt''@;'; put 'put ''UmlnaHQoKSxvLml0ZW1zW28uaXRlbXMubGVuZ3RoLTFdLnRleHQ9eS50cmltUmlnaHQoKSxvLnJhdz1vLnJhdy50cmltUmlnaHQoKTtmb3IodmFyICQsdTE9by5pdGVtcy5sZW5ndGgsVT0wO1U8dTE7VSsrKXRoaXMubGV4ZXIuc3RhdGUudG9wPSExLG8uaXRlbXNbVV0udG9rZW5zPXRoaXMu''@;'; put 'put ''bGV4ZXIuYmxvY2tUb2tlbnMoby5pdGVtc1tVXS50ZXh0LFtdKSxvLmxvb3NlfHwoJD0wPCgkPW8uaXRlbXNbVV0udG9rZW5zLmZpbHRlcihmdW5jdGlvbihpMSl7cmV0dXJuInNwYWNlIj09PWkxLnR5cGV9KSkubGVuZ3RoJiYkLnNvbWUoZnVuY3Rpb24oaTEpe3JldHVybi9cbi4qXG4vLnRl''@;'; put 'put ''c3QoaTEucmF3KX0pLG8ubG9vc2U9JCk7aWYoby5sb29zZSlmb3IoVT0wO1U8dTE7VSsrKW8uaXRlbXNbVV0ubG9vc2U9ITA7cmV0dXJuIG99fSxzLmh0bWw9ZnVuY3Rpb24oaSl7dmFyIGU7aWYoaT10aGlzLnJ1bGVzLmJsb2NrLmh0bWwuZXhlYyhpKSlyZXR1cm4gZT17dHlwZToiaHRtbCIs''@;'; put 'put ''YmxvY2s6ITAscmF3OmlbMF0scHJlOiF0aGlzLm9wdGlvbnMuc2FuaXRpemVyJiYoInByZSI9PT1pWzFdfHwic2NyaXB0Ij09PWlbMV18fCJzdHlsZSI9PT1pWzFdKSx0ZXh0OmlbMF19LHRoaXMub3B0aW9ucy5zYW5pdGl6ZSYmKGk9dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlv''@;'; put 'put ''bnMuc2FuaXRpemVyKGlbMF0pOlQoaVswXSksZS50eXBlPSJwYXJhZ3JhcGgiLGUudGV4dD1pLGUudG9rZW5zPXRoaXMubGV4ZXIuaW5saW5lKGkpKSxlfSxzLmRlZj1mdW5jdGlvbihjKXt2YXIgZSxpLHI7aWYoYz10aGlzLnJ1bGVzLmJsb2NrLmRlZi5leGVjKGMpKXJldHVybiBlPWNbMV0u''@;'; put 'put ''dG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiICIpLGk9Y1syXT9jWzJdLnJlcGxhY2UoL148KC4qKT4kLywiJDEiKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpOiIiLHI9Y1szXSYmY1szXS5zdWJzdHJpbmcoMSxjWzNdLmxlbmd0aC0xKS5yZXBsYWNlKHRo''@;'; put 'put ''aXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpLHt0eXBlOiJkZWYiLHRhZzplLHJhdzpjWzBdLGhyZWY6aSx0aXRsZTpyfX0scy50YWJsZT1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuYmxvY2sudGFibGUuZXhlYyh0KSl7dmFyIGU9e3R5cGU6InRhYmxlIixoZWFkZXI6ZDEodFsx''@;'; put 'put ''XSkubWFwKGZ1bmN0aW9uKEMpe3JldHVybnt0ZXh0OkN9fSksYWxpZ246dFsyXS5yZXBsYWNlKC9eICp8XHwgKiQvZywiIikuc3BsaXQoLyAqXHwgKi8pLHJvd3M6dFszXSYmdFszXS50cmltKCk/dFszXS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKS5zcGxpdCgiXG4iKTpbXX07aWYoZS5oZWFk''@;'; put 'put ''ZXIubGVuZ3RoPT09ZS5hbGlnbi5sZW5ndGgpe2UucmF3PXRbMF07Zm9yKHZhciBpLHIsYyxoPWUuYWxpZ24ubGVuZ3RoLFY9MDtWPGg7VisrKWUuYWxpZ25bVl09L14gKi0rOiAqJC8udGVzdChlLmFsaWduW1ZdKT8icmlnaHQiOi9eICo6LSs6ICokLy50ZXN0KGUuYWxpZ25bVl0pPyJjZW50''@;'; put 'put ''ZXIiOi9eICo6LSsgKiQvLnRlc3QoZS5hbGlnbltWXSk/ImxlZnQiOm51bGw7Zm9yKGg9ZS5yb3dzLmxlbmd0aCxWPTA7VjxoO1YrKyllLnJvd3NbVl09ZDEoZS5yb3dzW1ZdLGUuaGVhZGVyLmxlbmd0aCkubWFwKGZ1bmN0aW9uKEMpe3JldHVybnt0ZXh0OkN9fSk7Zm9yKGg9ZS5oZWFkZXIu''@;'; put 'put ''bGVuZ3RoLGk9MDtpPGg7aSsrKWUuaGVhZGVyW2ldLnRva2Vucz10aGlzLmxleGVyLmlubGluZShlLmhlYWRlcltpXS50ZXh0KTtmb3IoaD1lLnJvd3MubGVuZ3RoLGk9MDtpPGg7aSsrKWZvcihjPWUucm93c1tpXSxyPTA7cjxjLmxlbmd0aDtyKyspY1tyXS50b2tlbnM9dGhpcy5sZXhlci5p''@;'; put 'put ''bmxpbmUoY1tyXS50ZXh0KTtyZXR1cm4gZX19fSxzLmxoZWFkaW5nPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5ibG9jay5saGVhZGluZy5leGVjKHQpKXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6dFswXSxkZXB0aDoiPSI9PT10WzJdLmNoYXJBdCgwKT8xOjIsdGV4dDp0WzFdLHRv''@;'; put 'put ''a2Vuczp0aGlzLmxleGVyLmlubGluZSh0WzFdKX19LHMucGFyYWdyYXBoPWZ1bmN0aW9uKGkpe3ZhciBlO2lmKGk9dGhpcy5ydWxlcy5ibG9jay5wYXJhZ3JhcGguZXhlYyhpKSlyZXR1cm4gZT0iXG4iPT09aVsxXS5jaGFyQXQoaVsxXS5sZW5ndGgtMSk/aVsxXS5zbGljZSgwLC0xKTppWzFd''@;'; put 'put ''LHt0eXBlOiJwYXJhZ3JhcGgiLHJhdzppWzBdLHRleHQ6ZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoZSl9fSxzLnRleHQ9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmJsb2NrLnRleHQuZXhlYyh0KSlyZXR1cm57dHlwZToidGV4dCIscmF3OnRbMF0sdGV4dDp0WzBdLHRva2Vuczp0''@;'; put 'put ''aGlzLmxleGVyLmlubGluZSh0WzBdKX19LHMuZXNjYXBlPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5pbmxpbmUuZXNjYXBlLmV4ZWModCkpcmV0dXJue3R5cGU6ImVzY2FwZSIscmF3OnRbMF0sdGV4dDpUKHRbMV0pfX0scy50YWc9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmlu''@;'; put 'put ''bGluZS50YWcuZXhlYyh0KSlyZXR1cm4hdGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePGEgL2kudGVzdCh0WzBdKT90aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148XC9hPi9pLnRlc3QodFswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluTGlu''@;'; put 'put ''az0hMSksIXRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmL148KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdCh0WzBdKT90aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITA6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjxcLyhwcmV8Y29kZXxrYmR8c2NyaXB0''@;'; put 'put ''KShcc3w+KS9pLnRlc3QodFswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITEpLHt0eXBlOnRoaXMub3B0aW9ucy5zYW5pdGl6ZT8idGV4dCI6Imh0bWwiLHJhdzp0WzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2NrOnRoaXMubGV4ZXIuc3RhdGUu''@;'; put 'put ''aW5SYXdCbG9jayxibG9jazohMSx0ZXh0OnRoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIodFswXSk6VCh0WzBdKTp0WzBdfX0scy5saW5rPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5pbmxpbmUubGluay5leGVj''@;'; put 'put ''KHQpKXt2YXIgZT10WzJdLnRyaW0oKTtpZighdGhpcy5vcHRpb25zLnBlZGFudGljJiYvXjwvLnRlc3QoZSkpe2lmKCEvPiQvLnRlc3QoZSkpcmV0dXJuO3ZhciByPWMxKGUuc2xpY2UoMCwtMSksIlxcIik7aWYoKGUubGVuZ3RoLXIubGVuZ3RoKSUyPT0wKXJldHVybn1lbHNlLTE8KHI9ZnVu''@;'; put 'put ''Y3Rpb24oaCxWKXtpZigtMSE9PWguaW5kZXhPZihWWzFdKSlmb3IodmFyIEM9aC5sZW5ndGgsdT0wLGQ9MDtkPEM7ZCsrKWlmKCJcXCI9PT1oW2RdKWQrKztlbHNlIGlmKGhbZF09PT1WWzBdKXUrKztlbHNlIGlmKGhbZF09PT1WWzFdJiYtLXU8MClyZXR1cm4gZDtyZXR1cm4tMX0odFsyXSwi''@;'; put 'put ''KCkiKSkmJihjPSgwPT09dFswXS5pbmRleE9mKCIhIik/NTo0KSt0WzFdLmxlbmd0aCtyLHRbMl09dFsyXS5zdWJzdHJpbmcoMCxyKSx0WzBdPXRbMF0uc3Vic3RyaW5nKDAsYykudHJpbSgpLHRbM109IiIpO3I9dFsyXTt2YXIgaSxjPSIiO3JldHVybiB0aGlzLm9wdGlvbnMucGVkYW50aWM/''@;'; put 'put ''KGk9L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLy5leGVjKHIpKSYmKHI9aVsxXSxjPWlbM10pOmM9dFszXT90WzNdLnNsaWNlKDEsLTEpOiIiLHI9ci50cmltKCksbzEodCx7aHJlZjoocj0vXjwvLnRlc3Qocik/dGhpcy5vcHRpb25zLnBlZGFudGljJiYhLz4kLy50ZXN0KGUpP3Iu''@;'; put 'put ''c2xpY2UoMSk6ci5zbGljZSgxLC0xKTpyKSYmci5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpLHRpdGxlOmMmJmMucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKX0sdFswXSx0aGlzLmxleGVyKX19LHMucmVmbGluaz1mdW5jdGlvbih0LGUp''@;'; put 'put ''e3ZhciBpO2lmKGk9KGk9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKHQpKXx8dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWModCkpcmV0dXJuKHQ9ZVsodD0oaVsyXXx8aVsxXSkucmVwbGFjZSgvXHMrL2csIiAiKSkudG9Mb3dlckNhc2UoKV0pP28xKGksdCxpWzBdLHRoaXMu''@;'; put 'put ''bGV4ZXIpOnt0eXBlOiJ0ZXh0IixyYXc6ZT1pWzBdLmNoYXJBdCgwKSx0ZXh0OmV9fSxzLmVtU3Ryb25nPWZ1bmN0aW9uKHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0iIik7dmFyIHI9dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWModCk7aWYociYmKCFyWzNdfHwhaS5tYXRj''@;'; put 'put ''aCgvKD86WzAtOUEtWmEtelx4QUFceEIyXHhCM1x4QjVceEI5XHhCQVx4QkMtXHhCRVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4''@;'; put 'put ''Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MC1cdTA1ODhcdTA1RDAtXHUwNUVBXHUwNUVGLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NjAtXHUwNjY5XHUwNjZFXHUw''@;'; put 'put ''NjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDMC1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1''@;'; put 'put ''OFx1MDg2MC1cdTA4NkFcdTA4NzAtXHUwODg3XHUwODg5LVx1MDg4RVx1MDhBMC1cdTA4QzlcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk2Ni1cdTA5NkZcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUw''@;'; put 'put ''OUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RTYtXHUwOUYxXHUwOUY0LVx1MDlGOVx1MDlGQ1x1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEz''@;'; put 'put ''Nlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTZGXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQUU2''@;'; put 'put ''LVx1MEFFRlx1MEFGOVx1MEIwNS1cdTBCMENcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjY2LVx1MEI2Rlx1MEI3MS1cdTBCNzdcdTBCODNcdTBCODUtXHUwQjhB''@;'; put 'put ''XHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEJFNi1cdTBCRjJcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzM5''@;'; put 'put ''XHUwQzNEXHUwQzU4LVx1MEM1QVx1MEM1RFx1MEM2MFx1MEM2MVx1MEM2Ni1cdTBDNkZcdTBDNzgtXHUwQzdFXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDRERcdTBDREVcdTBDRTBcdTBDRTFc''@;'; put 'put ''dTBDRTYtXHUwQ0VGXHUwQ0YxXHUwQ0YyXHUwRDA0LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDU0LVx1MEQ1Nlx1MEQ1OC1cdTBENjFcdTBENjYtXHUwRDc4XHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERC''@;'; put 'put ''Qlx1MERCRFx1MERDMC1cdTBEQzZcdTBERTYtXHUwREVGXHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFNTAtXHUwRTU5XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg2LVx1MEU4QVx1MEU4Qy1cdTBFQTNcdTBFQTVcdTBFQTctXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJE''@;'; put 'put ''XHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEMC1cdTBFRDlcdTBFREMtXHUwRURGXHUwRjAwXHUwRjIwLVx1MEYzM1x1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0YtXHUxMDQ5XHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEw''@;'; put 'put ''NjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTA5MC1cdTEwOTlcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUx''@;'; put 'put ''MjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzY5LVx1MTM3Q1x1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y1XHUxM0Y4''@;'; put 'put ''LVx1MTNGRFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUtXHUxNkY4XHUxNzAwLVx1MTcxMVx1MTcxRi1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUx''@;'; put 'put ''N0UwLVx1MTdFOVx1MTdGMC1cdTE3RjlcdTE4MTAtXHUxODE5XHUxODIwLVx1MTg3OFx1MTg4MC1cdTE4ODRcdTE4ODctXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUVcdTE5NDYtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5XHUxOUQw''@;'; put 'put ''LVx1MTlEQVx1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQTgwLVx1MUE4OVx1MUE5MC1cdTFBOTlcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Q1x1MUI1MC1cdTFCNTlcdTFCODMtXHUxQkEwXHUxQkFFLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNDAtXHUxQzQ5XHUxQzRELVx1''@;'; put 'put ''MUM3RFx1MUM4MC1cdTFDODhcdTFDOTAtXHUxQ0JBXHUxQ0JELVx1MUNCRlx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YzXHUxQ0Y1XHUxQ0Y2XHUxQ0ZBXHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3''@;'; put 'put ''XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MFx1MjA3''@;'; put 'put ''MVx1MjA3NC1cdTIwNzlcdTIwN0YtXHUyMDg5XHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE1''@;'; put 'put ''MC1cdTIxODlcdTI0NjAtXHUyNDlCXHUyNEVBLVx1MjRGRlx1Mjc3Ni1cdTI3OTNcdTJDMDAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkNGRFx1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJE''@;'; put 'put ''QTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMjlcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQt''@;'; put 'put ''XHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJGXHUzMTMxLVx1MzE4RVx1MzE5Mi1cdTMxOTVcdTMxQTAtXHUzMUJGXHUzMUYwLVx1MzFGRlx1MzIyMC1cdTMyMjlcdTMyNDgtXHUzMjRGXHUzMjUxLVx1MzI1Rlx1MzI4MC1cdTMyODlcdTMyQjEtXHUzMkJGXHUz''@;'; put 'put ''NDAwLVx1NERCRlx1NEUwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5RFx1QTZBMC1cdUE2RUZcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3Q0FcdUE3RDBcdUE3RDFcdUE3RDNcdUE3RDUt''@;'; put 'put ''XHVBN0Q5XHVBN0YyLVx1QTgwMVx1QTgwMy1cdUE4MDVcdUE4MDctXHVBODBBXHVBODBDLVx1QTgyMlx1QTgzMC1cdUE4MzVcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThEMC1cdUE4RDlcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOEZFXHVBOTAwLVx1QTkyNVx1QTkzMC1cdUE5''@;'; put 'put ''NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRi1cdUE5RDlcdUE5RTAtXHVBOUU0XHVBOUU2LVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE1MC1cdUFBNTlcdUFBNjAtXHVBQTc2XHVBQTdBXHVBQTdFLVx1QUFBRlx1QUFCMVx1QUFCNVx1''@;'; put 'put ''QUFCNlx1QUFCOS1cdUFBQkRcdUFBQzBcdUFBQzJcdUFBREItXHVBQUREXHVBQUUwLVx1QUFFQVx1QUFGMi1cdUFBRjRcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1cdUFCMTZcdUFCMjAtXHVBQjI2XHVBQjI4LVx1QUIyRVx1QUIzMC1cdUFCNUFcdUFCNUMtXHVBQjY5XHVBQjcw''@;'; put 'put ''LVx1QUJFMlx1QUJGMC1cdUFCRjlcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVG''@;'; put 'put ''QjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYxMC1cdUZGMTlcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVc''@;'; put 'put ''dUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERDA3LVx1REQzM1x1''@;'; put 'put ''REQ0MC1cdURENzhcdUREOEFcdUREOEJcdURFODAtXHVERTlDXHVERUEwLVx1REVEMFx1REVFMS1cdURFRkJcdURGMDAtXHVERjIzXHVERjJELVx1REY0QVx1REY1MC1cdURGNzVcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZcdURGRDEtXHVERkQ1XXxcdUQ4MDFbXHVE''@;'; put 'put ''QzAwLVx1REM5RFx1RENBMC1cdURDQTlcdURDQjAtXHVEQ0QzXHVEQ0Q4LVx1RENGQlx1REQwMC1cdUREMjdcdUREMzAtXHVERDYzXHVERDcwLVx1REQ3QVx1REQ3Qy1cdUREOEFcdUREOEMtXHVERDkyXHVERDk0XHVERDk1XHVERDk3LVx1RERBMVx1RERBMy1cdUREQjFcdUREQjMtXHVEREI5''@;'; put 'put ''XHVEREJCXHVEREJDXHVERTAwLVx1REYzNlx1REY0MC1cdURGNTVcdURGNjAtXHVERjY3XHVERjgwLVx1REY4NVx1REY4Ny1cdURGQjBcdURGQjItXHVERkJBXXxcdUQ4MDJbXHVEQzAwLVx1REMwNVx1REMwOFx1REMwQS1cdURDMzVcdURDMzdcdURDMzhcdURDM0NcdURDM0YtXHVEQzU1XHVE''@;'; put 'put ''QzU4LVx1REM3Nlx1REM3OS1cdURDOUVcdURDQTctXHVEQ0FGXHVEQ0UwLVx1RENGMlx1RENGNFx1RENGNVx1RENGQi1cdUREMUJcdUREMjAtXHVERDM5XHVERDgwLVx1RERCN1x1RERCQy1cdUREQ0ZcdURERDItXHVERTAwXHVERTEwLVx1REUxM1x1REUxNS1cdURFMTdcdURFMTktXHVERTM1''@;'; put 'put ''XHVERTQwLVx1REU0OFx1REU2MC1cdURFN0VcdURFODAtXHVERTlGXHVERUMwLVx1REVDN1x1REVDOS1cdURFRTRcdURFRUItXHVERUVGXHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNTgtXHVERjcyXHVERjc4LVx1REY5MVx1REZBOS1cdURGQUZdfFx1RDgwM1tcdURDMDAtXHVEQzQ4''@;'; put 'put ''XHVEQzgwLVx1RENCMlx1RENDMC1cdURDRjJcdURDRkEtXHVERDIzXHVERDMwLVx1REQzOVx1REU2MC1cdURFN0VcdURFODAtXHVERUE5XHVERUIwXHVERUIxXHVERjAwLVx1REYyN1x1REYzMC1cdURGNDVcdURGNTEtXHVERjU0XHVERjcwLVx1REY4MVx1REZCMC1cdURGQ0JcdURGRTAtXHVE''@;'; put 'put ''RkY2XXxcdUQ4MDRbXHVEQzAzLVx1REMzN1x1REM1Mi1cdURDNkZcdURDNzFcdURDNzJcdURDNzVcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1RENGMC1cdURDRjlcdUREMDMtXHVERDI2XHVERDM2LVx1REQzRlx1REQ0NFx1REQ0N1x1REQ1MC1cdURENzJcdURENzZcdUREODMtXHVEREIy''@;'; put 'put ''XHVEREMxLVx1RERDNFx1REREMC1cdUREREFcdURERENcdURERTEtXHVEREY0XHVERTAwLVx1REUxMVx1REUxMy1cdURFMkJcdURFM0ZcdURFNDBcdURFODAtXHVERTg2XHVERTg4XHVERThBLVx1REU4RFx1REU4Ri1cdURFOURcdURFOUYtXHVERUE4XHVERUIwLVx1REVERVx1REVGMC1cdURF''@;'; put 'put ''RjlcdURGMDUtXHVERjBDXHVERjBGXHVERjEwXHVERjEzLVx1REYyOFx1REYyQS1cdURGMzBcdURGMzJcdURGMzNcdURGMzUtXHVERjM5XHVERjNEXHVERjUwXHVERjVELVx1REY2MV18XHVEODA1W1x1REMwMC1cdURDMzRcdURDNDctXHVEQzRBXHVEQzUwLVx1REM1OVx1REM1Ri1cdURDNjFc''@;'; put 'put ''dURDODAtXHVEQ0FGXHVEQ0M0XHVEQ0M1XHVEQ0M3XHVEQ0QwLVx1RENEOVx1REQ4MC1cdUREQUVcdURERDgtXHVERERCXHVERTAwLVx1REUyRlx1REU0NFx1REU1MC1cdURFNTlcdURFODAtXHVERUFBXHVERUI4XHVERUMwLVx1REVDOVx1REYwMC1cdURGMUFcdURGMzAtXHVERjNCXHVERjQw''@;'; put 'put ''LVx1REY0Nl18XHVEODA2W1x1REMwMC1cdURDMkJcdURDQTAtXHVEQ0YyXHVEQ0ZGLVx1REQwNlx1REQwOVx1REQwQy1cdUREMTNcdUREMTVcdUREMTZcdUREMTgtXHVERDJGXHVERDNGXHVERDQxXHVERDUwLVx1REQ1OVx1RERBMC1cdUREQTdcdUREQUEtXHVEREQwXHVEREUxXHVEREUzXHVE''@;'; put 'put ''RTAwXHVERTBCLVx1REUzMlx1REUzQVx1REU1MFx1REU1Qy1cdURFODlcdURFOURcdURFQjAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNTAtXHVEQzZDXHVEQzcyLVx1REM4Rlx1REQwMC1cdUREMDZcdUREMDhcdUREMDlcdUREMEItXHVERDMw''@;'; put 'put ''XHVERDQ2XHVERDUwLVx1REQ1OVx1REQ2MC1cdURENjVcdURENjdcdURENjhcdURENkEtXHVERDg5XHVERDk4XHVEREEwLVx1RERBOVx1REVFMC1cdURFRjJcdURGMDJcdURGMDQtXHVERjEwXHVERjEyLVx1REYzM1x1REY1MC1cdURGNTlcdURGQjBcdURGQzAtXHVERkQ0XXxcdUQ4MDhbXHVE''@;'; put 'put ''QzAwLVx1REY5OV18XHVEODA5W1x1REMwMC1cdURDNkVcdURDODAtXHVERDQzXXxcdUQ4MEJbXHVERjkwLVx1REZGMF18W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4MjJcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XHVEODgwLVx1RDg4M1x1RDg4''@;'; put 'put ''NS1cdUQ4ODddW1x1REMwMC1cdURGRkZdfFx1RDgwRFtcdURDMDAtXHVEQzJGXHVEQzQxLVx1REM0Nl18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REU2MC1cdURFNjlcdURFNzAtXHVERUJFXHVERUMwLVx1REVDOVx1REVEMC1cdURF''@;'; put 'put ''RURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY1MC1cdURGNTlcdURGNUItXHVERjYxXHVERjYzLVx1REY3N1x1REY3RC1cdURGOEZdfFx1RDgxQltcdURFNDAtXHVERTk2XHVERjAwLVx1REY0QVx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFcdURGRTNdfFx1RDgyMVtcdURD''@;'; put 'put ''MDAtXHVERkY3XXxcdUQ4MjNbXHVEQzAwLVx1RENENVx1REQwMC1cdUREMDhdfFx1RDgyQltcdURGRjAtXHVERkYzXHVERkY1LVx1REZGQlx1REZGRFx1REZGRV18XHVEODJDW1x1REMwMC1cdUREMjJcdUREMzJcdURENTAtXHVERDUyXHVERDU1XHVERDY0LVx1REQ2N1x1REQ3MC1cdURFRkJd''@;'; put 'put ''fFx1RDgyRltcdURDMDAtXHVEQzZBXHVEQzcwLVx1REM3Q1x1REM4MC1cdURDODhcdURDOTAtXHVEQzk5XXxcdUQ4MzRbXHVERUMwLVx1REVEM1x1REVFMC1cdURFRjNcdURGNjAtXHVERjc4XXxcdUQ4MzVbXHVEQzAwLVx1REM1NFx1REM1Ni1cdURDOUNcdURDOUVcdURDOUZcdURDQTJcdURD''@;'; put 'put ''QTVcdURDQTZcdURDQTktXHVEQ0FDXHVEQ0FFLVx1RENCOVx1RENCQlx1RENCRC1cdURDQzNcdURDQzUtXHVERDA1XHVERDA3LVx1REQwQVx1REQwRC1cdUREMTRcdUREMTYtXHVERDFDXHVERDFFLVx1REQzOVx1REQzQi1cdUREM0VcdURENDAtXHVERDQ0XHVERDQ2XHVERDRBLVx1REQ1MFx1''@;'; put 'put ''REQ1Mi1cdURFQTVcdURFQTgtXHVERUMwXHVERUMyLVx1REVEQVx1REVEQy1cdURFRkFcdURFRkMtXHVERjE0XHVERjE2LVx1REYzNFx1REYzNi1cdURGNEVcdURGNTAtXHVERjZFXHVERjcwLVx1REY4OFx1REY4QS1cdURGQThcdURGQUEtXHVERkMyXHVERkM0LVx1REZDQlx1REZDRS1cdURG''@;'; put 'put ''RkZdfFx1RDgzN1tcdURGMDAtXHVERjFFXHVERjI1LVx1REYyQV18XHVEODM4W1x1REMzMC1cdURDNkRcdUREMDAtXHVERDJDXHVERDM3LVx1REQzRFx1REQ0MC1cdURENDlcdURENEVcdURFOTAtXHVERUFEXHVERUMwLVx1REVFQlx1REVGMC1cdURFRjldfFx1RDgzOVtcdURDRDAtXHVEQ0VC''@;'; put 'put ''XHVEQ0YwLVx1RENGOVx1REZFMC1cdURGRTZcdURGRTgtXHVERkVCXHVERkVEXHVERkVFXHVERkYwLVx1REZGRV18XHVEODNBW1x1REMwMC1cdURDQzRcdURDQzctXHVEQ0NGXHVERDAwLVx1REQ0M1x1REQ0Qlx1REQ1MC1cdURENTldfFx1RDgzQltcdURDNzEtXHVEQ0FCXHVEQ0FELVx1RENB''@;'; put 'put ''Rlx1RENCMS1cdURDQjRcdUREMDEtXHVERDJEXHVERDJGLVx1REQzRFx1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRG''@;'; put 'put ''XHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1''@;'; put 'put ''REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4M0NbXHVERDAwLVx1REQwQ118XHVEODNFW1x1REZGMC1cdURGRjldfFx1RDg2OVtcdURDMDAtXHVERURGXHVERjAwLVx1REZGRl18XHVEODZEW1x1REMwMC1cdURGMzlcdURGNDAtXHVERkZGXXxcdUQ4NkVbXHVEQzAwLVx1REMxRFx1REMy''@;'; put 'put ''MC1cdURGRkZdfFx1RDg3M1tcdURDMDAtXHVERUExXHVERUIwLVx1REZGRl18XHVEODdBW1x1REMwMC1cdURGRTBdfFx1RDg3RVtcdURDMDAtXHVERTFEXXxcdUQ4ODRbXHVEQzAwLVx1REY0QVx1REY1MC1cdURGRkZdfFx1RDg4OFtcdURDMDAtXHVERkFGXSkvKSkmJighclsxXSYmIXJbMl18''@;'; put 'put ''fCFpfHx0aGlzLnJ1bGVzLmlubGluZS5wdW5jdHVhdGlvbi5leGVjKGkpKSl7dmFyIGM9clswXS5sZW5ndGgtMSxoPWMsVj0wLEM9IioiPT09clswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltVW5kO2Zv''@;'; put 'put ''cihDLmxhc3RJbmRleD0wLGU9ZS5zbGljZSgtMSp0Lmxlbmd0aCtjKTtudWxsIT0ocj1DLmV4ZWMoZSkpOyl7dmFyIHUsZD1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdO2lmKGQpaWYoZD1kLmxlbmd0aCxyWzNdfHxyWzRdKWgrPWQ7ZWxzZSBpZigocls1XXx8cls2XSkmJmMl''@;'; put 'put ''MyYmISgoYytkKSUzKSlWKz1kO2Vsc2UgaWYoISgwPChoLT1kKSkpcmV0dXJuIGQ9TWF0aC5taW4oZCxkK2grViksdT10LnNsaWNlKDAsYytyLmluZGV4K2QrMSksTWF0aC5taW4oYyxkKSUyPyhkPXUuc2xpY2UoMSwtMSkse3R5cGU6ImVtIixyYXc6dSx0ZXh0OmQsdG9rZW5zOnRoaXMubGV4''@;'; put 'put ''ZXIuaW5saW5lVG9rZW5zKGQpfSk6KGQ9dS5zbGljZSgyLC0yKSx7dHlwZToic3Ryb25nIixyYXc6dSx0ZXh0OmQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKGQpfSl9fX0scy5jb2Rlc3Bhbj1mdW5jdGlvbihjKXt2YXIgZSxpLHI7aWYoYz10aGlzLnJ1bGVzLmlubGluZS5jb2Rl''@;'; put 'put ''LmV4ZWMoYykpcmV0dXJuIHI9Y1syXS5yZXBsYWNlKC9cbi9nLCIgIiksZT0vW14gXS8udGVzdChyKSxpPS9eIC8udGVzdChyKSYmLyAkLy50ZXN0KHIpLHI9VChyPWUmJmk/ci5zdWJzdHJpbmcoMSxyLmxlbmd0aC0xKTpyLCEwKSx7dHlwZToiY29kZXNwYW4iLHJhdzpjWzBdLHRleHQ6cn19''@;'; put 'put ''LHMuYnI9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKHQpKXJldHVybnt0eXBlOiJiciIscmF3OnRbMF19fSxzLmRlbD1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuaW5saW5lLmRlbC5leGVjKHQpKXJldHVybnt0eXBlOiJkZWwiLHJhdzp0WzBdLHRleHQ6''@;'; put 'put ''dFsyXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnModFsyXSl9fSxzLmF1dG9saW5rPWZ1bmN0aW9uKHIsZSl7dmFyIGk7aWYocj10aGlzLnJ1bGVzLmlubGluZS5hdXRvbGluay5leGVjKHIpKXJldHVybiBlPSJAIj09PXJbMl0/Im1haWx0bzoiKyhpPVQodGhpcy5vcHRpb25zLm1h''@;'; put 'put ''bmdsZT9lKHJbMV0pOnJbMV0pKTppPVQoclsxXSkse3R5cGU6ImxpbmsiLHJhdzpyWzBdLHRleHQ6aSxocmVmOmUsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmksdGV4dDppfV19fSxzLnVybD1mdW5jdGlvbih0LGUpe3ZhciBpLHIsYyxoO2lmKGk9dGhpcy5ydWxlcy5pbmxpbmUudXJsLmV4''@;'; put 'put ''ZWModCkpe2lmKCJAIj09PWlbMl0pYz0ibWFpbHRvOiIrKHI9VCh0aGlzLm9wdGlvbnMubWFuZ2xlP2UoaVswXSk6aVswXSkpO2Vsc2V7Zm9yKDtoPWlbMF0saVswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoaVswXSlbMF0saCE9PWlbMF07KTtyPVQoaVswXSksYz0id3d3''@;'; put 'put ''LiI9PT1pWzFdPyJodHRwOi8vIitpWzBdOmlbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzppWzBdLHRleHQ6cixocmVmOmMsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OnIsdGV4dDpyfV19fX0scy5pbmxpbmVUZXh0PWZ1bmN0aW9uKHQsZSl7aWYodD10aGlzLnJ1bGVzLmlubGluZS50ZXh0''@;'; put 'put ''LmV4ZWModCkpcmV0dXJuIGU9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrP3RoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIodFswXSk6VCh0WzBdKTp0WzBdOlQodGhpcy5vcHRpb25zLnNtYXJ0eXBhbnRzP2UodFsw''@;'; put 'put ''XSk6dFswXSkse3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6ZX19LG59KCksZz17bmV3bGluZTovXig/OiAqKD86XG58JCkpKy8sY29kZTovXiggezR9W15cbl0rKD86XG4oPzogKig/OlxufCQpKSopPykrLyxmZW5jZXM6L14gezAsM30oYHszLH0oPz1bXmBcbl0qKD86XG58JCkpfH57Myx9''@;'; put 'put ''KShbXlxuXSopKD86XG58JCkoPzp8KFtcc1xTXSo/KSg/OlxufCQpKSg/OiB7MCwzfVwxW35gXSogKig/PVxufCQpfCQpLyxocjovXiB7MCwzfSgoPzotW1x0IF0qKXszLH18KD86X1sgXHRdKil7Myx9fCg/OlwqWyBcdF0qKXszLH0pKD86XG4rfCQpLyxoZWFkaW5nOi9eIHswLDN9KCN7MSw2''@;'; put 'put ''fSkoPz1cc3wkKSguKikoPzpcbit8JCkvLGJsb2NrcXVvdGU6L14oIHswLDN9PiA/KHBhcmFncmFwaHxbXlxuXSopKD86XG58JCkpKy8sbGlzdDovXiggezAsM31idWxsKShbIFx0XVteXG5dKz8pPyg/OlxufCQpLyxodG1sOiJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVh''@;'; put 'put ''KVtcXHM+XVtcXHNcXFNdKj8oPzo8L1xcMT5bXlxcbl0qXFxuK3wkKXxjb21tZW50W15cXG5dKihcXG4rfCQpfDxcXD9bXFxzXFxTXSo/KD86XFw/Plxcbip8JCl8PCFbQS1aXVtcXHNcXFNdKj8oPzo+XFxuKnwkKXw8IVxcW0NEQVRBXFxbW1xcc1xcU10qPyg/OlxcXVxcXT5cXG4qfCQpfDwv''@;'; put 'put ''Pyh0YWcpKD86ICt8XFxufC8/PilbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKXw8KD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSkoW2Etel1bXFx3LV0qKSg/OmF0dHJpYnV0ZSkqPyAqLz8+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKXw8''@;'; put 'put ''Lyg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW2Etel1bXFx3LV0qXFxzKj4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpKSIsZGVmOi9eIHswLDN9XFsobGFiZWwpXF06ICooPzpcbiAqKT8oW148XHNdW15cc10qfDwuKj8+KSg/Oig/OiArKD86''@;'; put 'put ''XG4gKik/fCAqXG4gKikodGl0bGUpKT8gKig/OlxuK3wkKS8sdGFibGU6SyxsaGVhZGluZzovXigoPzooPyFeYnVsbCApLnxcbig/IVxufGJ1bGwgKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxuXSsoPzpcbig/IWhyfGhlYWRpbmd8bGhlYWRpbmd8''@;'; put 'put ''YmxvY2txdW90ZXxmZW5jZXN8bGlzdHxodG1sfHRhYmxlfCArXG4pW15cbl0rKSopLyx0ZXh0Oi9eW15cbl0rLyxfbGFiZWw6Lyg/IVxzKlxdKSg/OlxcLnxbXlxbXF1cXF0pKy8sX3RpdGxlOi8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8XChbXigp''@;'; put 'put ''XSpcKSkvfSxBPShnLmRlZj13KGcuZGVmKS5yZXBsYWNlKCJsYWJlbCIsZy5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixnLl90aXRsZSkuZ2V0UmVnZXgoKSxnLmJ1bGxldD0vKD86WyorLV18XGR7MSw5fVsuKV0pLyxnLmxpc3RJdGVtU3RhcnQ9dygvXiggKikoYnVsbCkgKi8pLnJlcGxhY2Uo''@;'; put 'put ''ImJ1bGwiLGcuYnVsbGV0KS5nZXRSZWdleCgpLGcubGlzdD13KGcubGlzdCkucmVwbGFjZSgvYnVsbC9nLGcuYnVsbGV0KS5yZXBsYWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2UoImRlZiIs''@;'; put 'put ''IlxcbisoPz0iK2cuZGVmLnNvdXJjZSsiKSIpLmdldFJlZ2V4KCksZy5fdGFnPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8ZmllbGRz''@;'; put 'put ''ZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJhbXxzZWN0''@;'; put 'put ''aW9ufHNvdXJjZXxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixnLl9jb21tZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxnLmh0bWw9dyhnLmh0bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixnLl9jb21tZW50KS5yZXBs''@;'; put 'put ''YWNlKCJ0YWciLGcuX3RhZykucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxnLmxoZWFkaW5nPXcoZy5saGVhZGluZykucmVwbGFjZSgvYnVsbC9n''@;'; put 'put ''LGcuYnVsbGV0KS5nZXRSZWdleCgpLGcucGFyYWdyYXBoPXcoZy5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsZy5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJibG9ja3F1''@;'; put 'put ''b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8''@;'; put 'put ''PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsZy5fdGFnKS5nZXRSZWdleCgpLGcuYmxvY2txdW90ZT13KGcuYmxvY2txdW90ZSkucmVwbGFjZSgicGFyYWdyYXBoIixnLnBhcmFncmFwaCkuZ2V0UmVnZXgoKSxnLm5vcm1hbD16KHt9LGcpLGcuZ2Zt''@;'; put 'put ''PXooe30sZy5ub3JtYWwse3RhYmxlOiJeICooW15cXG4gXS4qXFx8LiopXFxuIHswLDN9KD86XFx8ICopPyg6Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKikoPzpcXHwgKik/KD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLioo''@;'; put 'put ''PzpcXG58JCkpKilcXG4qfCQpIn0pLGcuZ2ZtLnRhYmxlPXcoZy5nZm0udGFibGUpLnJlcGxhY2UoImhyIixnLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiY29kZSIsIiB7NH1bXlxcbl0iKS5y''@;'; put 'put ''ZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0''@;'; put 'put ''eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLGcuX3RhZykuZ2V0UmVnZXgoKSxnLmdmbS5wYXJhZ3JhcGg9dyhnLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixnLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIsIiIpLnJl''@;'; put 'put ''cGxhY2UoInRhYmxlIixnLmdmbS50YWJsZSkucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAi''@;'; put 'put ''KS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLGcuX3RhZykuZ2V0UmVnZXgoKSxnLnBlZGFudGljPXooe30sZy5ub3JtYWwse2h0bWw6dygiXiAqKD86Y29tbWVudCAqKD86''@;'; put 'put ''XFxufFxccyokKXw8KHRhZylbXFxzXFxTXSs/PC9cXDE+ICooPzpcXG57Mix9fFxccyokKXw8dGFnKD86XCJbXlwiXSpcInwnW14nXSonfFxcc1teJ1wiLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpIikucmVwbGFjZSgiY29tbWVudCIsZy5fY29tbWVudCkucmVwbGFjZSgvdGFn''@;'; put 'put ''L2csIig/ISg/OmF8ZW18c3Ryb25nfHNtYWxsfHN8Y2l0ZXxxfGRmbnxhYmJyfGRhdGF8dGltZXxjb2RlfHZhcnxzYW1wfGtiZHxzdWJ8c3VwfGl8Ynx1fG1hcmt8cnVieXxydHxycHxiZGl8YmRvfHNwYW58YnJ8d2JyfGluc3xkZWx8aW1nKVxcYilcXHcrKD8hOnxbXlxcd1xcc0BdKkApXFxi''@;'; put 'put ''IikuZ2V0UmVnZXgoKSxkZWY6L14gKlxbKFteXF1dKylcXTogKjw/KFteXHM+XSspPj8oPzogKyhbIihdW15cbl0rWyIpXSkpPyAqKD86XG4rfCQpLyxoZWFkaW5nOi9eKCN7MSw2fSkoLiopKD86XG4rfCQpLyxmZW5jZXM6SyxsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSspICooPzpc''@;'; put 'put ''bit8JCkvLHBhcmFncmFwaDp3KGcubm9ybWFsLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixnLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLGcubGhlYWRpbmcpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFj''@;'; put 'put ''ZSgifGZlbmNlcyIsIiIpLnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5nZXRSZWdleCgpfSkse2VzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sYXV0b2xpbms6L148KHNjaGVtZTpbXlxzXHgwMC1ceDFmPD5dKnxlbWFp''@;'; put 'put ''bCk+Lyx1cmw6Syx0YWc6Il5jb21tZW50fF48L1thLXpBLVpdW1xcdzotXSpcXHMqPnxePFthLXpBLVpdW1xcdy1dKig/OmF0dHJpYnV0ZSkqP1xccyovPz58XjxcXD9bXFxzXFxTXSo/XFw/PnxePCFbYS16QS1aXStcXHNbXFxzXFxTXSo/PnxePCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1c''@;'; put 'put ''XF0+IixsaW5rOi9eIT9cWyhsYWJlbClcXVwoXHMqKGhyZWYpKD86XHMrKHRpdGxlKSk/XHMqXCkvLHJlZmxpbms6L14hP1xbKGxhYmVsKVxdXFsocmVmKVxdLyxub2xpbms6L14hP1xbKHJlZilcXSg/OlxbXF0pPy8scmVmbGlua1NlYXJjaDoicmVmbGlua3xub2xpbmsoPyFcXCgpIixlbVN0''@;'; put 'put ''cm9uZzp7bERlbGltOi9eKD86XCorKD86KCg/IVwqKVtwdW5jdF0pfFteXHMqXSkpfF5fKyg/OigoPyFfKVtwdW5jdF0pfChbXlxzX10pKS8sckRlbGltQXN0Oi9eW15fKl0qP19fW15fKl0qP1wqW15fKl0qPyg/PV9fKXxbXipdKyg/PVteKl0pfCg/IVwqKVtwdW5jdF0oXCorKSg/PVtcc118''@;'; put 'put ''JCl8W15wdW5jdFxzXShcKispKD8hXCopKD89W3B1bmN0XHNdfCQpfCg/IVwqKVtwdW5jdFxzXShcKispKD89W15wdW5jdFxzXSl8W1xzXShcKispKD8hXCopKD89W3B1bmN0XSl8KD8hXCopW3B1bmN0XShcKispKD8hXCopKD89W3B1bmN0XSl8W15wdW5jdFxzXShcKispKD89W15wdW5jdFxz''@;'; put 'put ''XSkvLHJEZWxpbVVuZDovXlteXypdKj9cKlwqW15fKl0qP19bXl8qXSo/KD89XCpcKil8W15fXSsoPz1bXl9dKXwoPyFfKVtwdW5jdF0oXyspKD89W1xzXXwkKXxbXnB1bmN0XHNdKF8rKSg/IV8pKD89W3B1bmN0XHNdfCQpfCg/IV8pW3B1bmN0XHNdKF8rKSg/PVtecHVuY3Rcc10pfFtcc10o''@;'; put 'put ''XyspKD8hXykoPz1bcHVuY3RdKXwoPyFfKVtwdW5jdF0oXyspKD8hXykoPz1bcHVuY3RdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcc1xTXSo/W15gXSlcMSg/IWApLyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6Syx0ZXh0Oi9eKGArfFteYF0pKD86KD89IHsyLH1cbil8W1xz''@;'; put 'put ''XFNdKj8oPzooPz1bXFw8IVxbYCpfXXxcYl98JCl8W14gXSg/PSB7Mix9XG4pKSkvLHB1bmN0dWF0aW9uOi9eKCg/IVsqX10pW1xzcHVuY3R1YXRpb25dKS99KTtmdW5jdGlvbiBNMShuKXtyZXR1cm4gbi5yZXBsYWNlKC8tLS0vZywiXHUyMDE0IikucmVwbGFjZSgvLS0vZywiXHUyMDEzIiku''@;'; put 'put ''cmVwbGFjZSgvKF58Wy1cdTIwMTQvKFxbeyJcc10pJy9nLCIkMVx1MjAxOCIpLnJlcGxhY2UoLycvZywiXHUyMDE5IikucmVwbGFjZSgvKF58Wy1cdTIwMTQvKFxbe1x1MjAxOFxzXSkiL2csIiQxXHUyMDFjIikucmVwbGFjZSgvIi9nLCJcdTIwMWQiKS5yZXBsYWNlKC9cLnszfS9nLCJcdTIw''@;'; put 'put ''MjYiKX1mdW5jdGlvbiBwMShuKXtmb3IodmFyIHMsdD0iIixlPW4ubGVuZ3RoLGk9MDtpPGU7aSsrKXM9bi5jaGFyQ29kZUF0KGkpLHQrPSImIyIrKHM9LjU8TWF0aC5yYW5kb20oKT8ieCIrcy50b1N0cmluZygxNik6cykrIjsiO3JldHVybiB0fUEuX3B1bmN0dWF0aW9uPSJcXHB7UH0kKzw9''@;'; put 'put ''PmBefH4iLEEucHVuY3R1YXRpb249dyhBLnB1bmN0dWF0aW9uLCJ1IikucmVwbGFjZSgvcHVuY3R1YXRpb24vZyxBLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxBLmJsb2NrU2tpcD0vXFtbXltcXV0qP1xdXChbXlwoXCldKj9cKXxgW15gXSo/YHw8W148Pl0qPz4vZyxBLmFueVB1bmN0dWF0''@;'; put 'put ''aW9uPS9cXFtwdW5jdF0vZyxBLl9lc2NhcGVzPS9cXChbcHVuY3RdKS9nLEEuX2NvbW1lbnQ9dyhnLl9jb21tZW50KS5yZXBsYWNlKCIoPzotLVx4M2V8JCkiLCItLVx4M2UiKS5nZXRSZWdleCgpLEEuZW1TdHJvbmcubERlbGltPXcoQS5lbVN0cm9uZy5sRGVsaW0sInUiKS5yZXBsYWNlKC9w''@;'; put 'put ''dW5jdC9nLEEuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLEEuZW1TdHJvbmcuckRlbGltQXN0PXcoQS5lbVN0cm9uZy5yRGVsaW1Bc3QsImd1IikucmVwbGFjZSgvcHVuY3QvZyxBLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxBLmVtU3Ryb25nLnJEZWxpbVVuZD13KEEuZW1TdHJvbmcuckRl''@;'; put 'put ''bGltVW5kLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csQS5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksQS5hbnlQdW5jdHVhdGlvbj13KEEuYW55UHVuY3R1YXRpb24sImd1IikucmVwbGFjZSgvcHVuY3QvZyxBLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxBLl9lc2NhcGVzPXcoQS5fZXNjYXBl''@;'; put 'put ''cywiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLEEuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLEEuX3NjaGVtZT0vW2EtekEtWl1bYS16QS1aMC05Ky4tXXsxLDMxfS8sQS5fZW1haWw9L1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17''@;'; put 'put ''MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLyxBLmF1dG9saW5rPXcoQS5hdXRvbGluaykucmVwbGFjZSgic2NoZW1lIixBLl9zY2hlbWUpLnJlcGxhY2UoImVtYWlsIixBLl9lbWFpbCkuZ2V0UmVn''@;'; put 'put ''ZXgoKSxBLl9hdHRyaWJ1dGU9L1xzK1thLXpBLVo6X11bXHcuOi1dKig/OlxzKj1ccyoiW14iXSoifFxzKj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8sQS50YWc9dyhBLnRhZykucmVwbGFjZSgiY29tbWVudCIsQS5fY29tbWVudCkucmVwbGFjZSgiYXR0cmlidXRlIixBLl9h''@;'; put 'put ''dHRyaWJ1dGUpLmdldFJlZ2V4KCksQS5fbGFiZWw9Lyg/OlxbKD86XFwufFteXFtcXVxcXSkqXF18XFwufGBbXmBdKmB8W15cW1xdXFxgXSkqPy8sQS5faHJlZj0vPCg/OlxcLnxbXlxuPD5cXF0pKz58W15cc1x4MDAtXHgxZl0qLyxBLl90aXRsZT0vIig/OlxcIj98W14iXFxdKSoifCcoPzpc''@;'; put 'put ''XCc/fFteJ1xcXSkqJ3xcKCg/OlxcXCk/fFteKVxcXSkqXCkvLEEubGluaz13KEEubGluaykucmVwbGFjZSgibGFiZWwiLEEuX2xhYmVsKS5yZXBsYWNlKCJocmVmIixBLl9ocmVmKS5yZXBsYWNlKCJ0aXRsZSIsQS5fdGl0bGUpLmdldFJlZ2V4KCksQS5yZWZsaW5rPXcoQS5yZWZsaW5rKS5y''@;'; put 'put ''ZXBsYWNlKCJsYWJlbCIsQS5fbGFiZWwpLnJlcGxhY2UoInJlZiIsZy5fbGFiZWwpLmdldFJlZ2V4KCksQS5ub2xpbms9dyhBLm5vbGluaykucmVwbGFjZSgicmVmIixnLl9sYWJlbCkuZ2V0UmVnZXgoKSxBLnJlZmxpbmtTZWFyY2g9dyhBLnJlZmxpbmtTZWFyY2gsImciKS5yZXBsYWNlKCJy''@;'; put 'put ''ZWZsaW5rIixBLnJlZmxpbmspLnJlcGxhY2UoIm5vbGluayIsQS5ub2xpbmspLmdldFJlZ2V4KCksQS5ub3JtYWw9eih7fSxBKSxBLnBlZGFudGljPXooe30sQS5ub3JtYWwse3N0cm9uZzp7c3RhcnQ6L15fX3xcKlwqLyxtaWRkbGU6L15fXyg/PVxTKShbXHNcU10qP1xTKV9fKD8hXyl8Xlwq''@;'; put 'put ''XCooPz1cUykoW1xzXFNdKj9cUylcKlwqKD8hXCopLyxlbmRBc3Q6L1wqXCooPyFcKikvZyxlbmRVbmQ6L19fKD8hXykvZ30sZW06e3N0YXJ0Oi9eX3xcKi8sbWlkZGxlOi9eKClcKig/PVxTKShbXHNcU10qP1xTKVwqKD8hXCopfF5fKD89XFMpKFtcc1xTXSo/XFMpXyg/IV8pLyxlbmRBc3Q6''@;'; put 'put ''L1wqKD8hXCopL2csZW5kVW5kOi9fKD8hXykvZ30sbGluazp3KC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixBLl9sYWJlbCkuZ2V0UmVnZXgoKSxyZWZsaW5rOncoL14hP1xbKGxhYmVsKVxdXHMqXFsoW15cXV0qKVxdLykucmVwbGFjZSgibGFiZWwiLEEuX2xh''@;'; put 'put ''YmVsKS5nZXRSZWdleCgpfSksQS5nZm09eih7fSxBLm5vcm1hbCx7ZXNjYXBlOncoQS5lc2NhcGUpLnJlcGxhY2UoIl0pIiwifnxdKSIpLmdldFJlZ2V4KCksX2V4dGVuZGVkX2VtYWlsOi9bQS1aYS16MC05Ll8rLV0rKEApW2EtekEtWjAtOS1fXSsoPzpcLlthLXpBLVowLTktX10qW2EtekEt''@;'; put 'put ''WjAtOV0pKyg/IVstX10pLyx1cmw6L14oKD86ZnRwfGh0dHBzPyk6XC9cL3x3d3dcLikoPzpbYS16QS1aMC05XC1dK1wuPykrW15cczxdKnxeZW1haWwvLF9iYWNrcGVkYWw6Lyg/OltePyEuLDo7Kl8nIn4oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTldKzskKXxbPyEuLDo7Kl8nIn4p''@;'; put 'put ''XSsoPyEkKSkrLyxkZWw6L14ofn4/KSg/PVteXHN+XSkoW1xzXFNdKj9bXlxzfl0pXDEoPz1bXn5dfCQpLyx0ZXh0Oi9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aqfl9dfFxi''@;'; put 'put ''X3xodHRwcz86XC9cL3xmdHA6XC9cL3x3d3dcLnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS99KSxBLmdmbS51cmw9dyhBLmdmbS51cmwsImkiKS5yZXBsYWNlKCJlbWFp''@;'; put 'put ''bCIsQS5nZm0uX2V4dGVuZGVkX2VtYWlsKS5nZXRSZWdleCgpLEEuYnJlYWtzPXooe30sQS5nZm0se2JyOncoQS5icikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6dyhBLmdmbS50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2UoL1x7Mixc''@;'; put 'put ''fS9nLCIqIikuZ2V0UmVnZXgoKX0pO3ZhciBOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihpKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2Vucy5saW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucz1pfHxiLmRlZmF1bHRzLHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhpcy5vcHRp''@;'; put 'put ''b25zLnRva2VuaXplcnx8bmV3IEosdGhpcy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcix0aGlzLnRva2VuaXplci5vcHRpb25zPXRoaXMub3B0aW9ucywodGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcykuaW5saW5lUXVldWU9W10sdGhpcy5zdGF0ZT17aW5MaW5rOiExLGluUmF3''@;'; put 'put ''QmxvY2s6ITEsdG9wOiEwfSxpPXtibG9jazpnLm5vcm1hbCxpbmxpbmU6QS5ub3JtYWx9LHRoaXMub3B0aW9ucy5wZWRhbnRpYz8oaS5ibG9jaz1nLnBlZGFudGljLGkuaW5saW5lPUEucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihpLmJsb2NrPWcuZ2ZtLGkuaW5saW5lPXRoaXMub3B0''@;'; put 'put ''aW9ucy5icmVha3M/QS5icmVha3M6QS5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWl9bi5sZXg9ZnVuY3Rpb24oaSxyKXtyZXR1cm4gbmV3IG4ocikubGV4KGkpfSxuLmxleElubGluZT1mdW5jdGlvbihpLHIpe3JldHVybiBuZXcgbihyKS5pbmxpbmVUb2tlbnMoaSl9O3ZhciB0LGU9bi5w''@;'; put 'put ''cm90b3R5cGU7cmV0dXJuIGUubGV4PWZ1bmN0aW9uKGkpe3ZhciByO2ZvcihpPWkucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxvY2tUb2tlbnMoaSx0aGlzLnRva2Vucyk7cj10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKHIuc3JjLHIudG9rZW5z''@;'; put 'put ''KTtyZXR1cm4gdGhpcy50b2tlbnN9LGUuYmxvY2tUb2tlbnM9ZnVuY3Rpb24oaSxyKXt2YXIgYyxoLFYsQyx1PXRoaXM7Zm9yKHZvaWQgMD09PXImJihyPVtdKSxpPXRoaXMub3B0aW9ucy5wZWRhbnRpYz9pLnJlcGxhY2UoL1x0L2csIiAgICAiKS5yZXBsYWNlKC9eICskL2dtLCIiKTppLnJl''@;'; put 'put ''cGxhY2UoL14oICopKFx0KykvZ20sZnVuY3Rpb24oTCx5LEkpe3JldHVybiB5KyIgICAgIi5yZXBlYXQoSS5sZW5ndGgpfSk7aTspe3ZhciBkPWZ1bmN0aW9uKCl7aWYodS5vcHRpb25zLmV4dGVuc2lvbnMmJnUub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrJiZ1Lm9wdGlvbnMuZXh0ZW5zaW9u''@;'; put 'put ''cy5ibG9jay5zb21lKGZ1bmN0aW9uKG8pe3JldHVybiEhKGM9by5jYWxsKHtsZXhlcjp1fSxpLHIpKSYmKGk9aS5zdWJzdHJpbmcoYy5yYXcubGVuZ3RoKSxyLnB1c2goYyksITApfSkpcmV0dXJuImNvbnRpbnVlIjtpZihjPXUudG9rZW5pemVyLnNwYWNlKGkpKXJldHVybiBpPWkuc3Vic3Ry''@;'; put 'put ''aW5nKGMucmF3Lmxlbmd0aCksMT09PWMucmF3Lmxlbmd0aCYmMDxyLmxlbmd0aD9yW3IubGVuZ3RoLTFdLnJhdys9IlxuIjpyLnB1c2goYyksImNvbnRpbnVlIjtpZihjPXUudG9rZW5pemVyLmNvZGUoaSkpcmV0dXJuIGk9aS5zdWJzdHJpbmcoYy5yYXcubGVuZ3RoKSwhKGg9cltyLmxlbmd0''@;'; put 'put ''aC0xXSl8fCJwYXJhZ3JhcGgiIT09aC50eXBlJiYidGV4dCIhPT1oLnR5cGU/ci5wdXNoKGMpOihoLnJhdys9IlxuIitjLnJhdyxoLnRleHQrPSJcbiIrYy50ZXh0LHUuaW5saW5lUXVldWVbdS5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPWgudGV4dCksImNvbnRpbnVlIjtpZigoYz11LnRv''@;'; put 'put ''a2VuaXplci5mZW5jZXMoaSkpfHwoYz11LnRva2VuaXplci5oZWFkaW5nKGkpKXx8KGM9dS50b2tlbml6ZXIuaHIoaSkpfHwoYz11LnRva2VuaXplci5ibG9ja3F1b3RlKGkpKXx8KGM9dS50b2tlbml6ZXIubGlzdChpKSl8fChjPXUudG9rZW5pemVyLmh0bWwoaSkpKXJldHVybiBpPWkuc3Vi''@;'; put 'put ''c3RyaW5nKGMucmF3Lmxlbmd0aCksci5wdXNoKGMpLCJjb250aW51ZSI7aWYoYz11LnRva2VuaXplci5kZWYoaSkpcmV0dXJuIGk9aS5zdWJzdHJpbmcoYy5yYXcubGVuZ3RoKSwhKGg9cltyLmxlbmd0aC0xXSl8fCJwYXJhZ3JhcGgiIT09aC50eXBlJiYidGV4dCIhPT1oLnR5cGU/dS50b2tl''@;'; put 'put ''bnMubGlua3NbYy50YWddfHwodS50b2tlbnMubGlua3NbYy50YWddPXtocmVmOmMuaHJlZix0aXRsZTpjLnRpdGxlfSk6KGgucmF3Kz0iXG4iK2MucmF3LGgudGV4dCs9IlxuIitjLnJhdyx1LmlubGluZVF1ZXVlW3UuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1oLnRleHQpLCJjb250aW51''@;'; put 'put ''ZSI7aWYoKGM9dS50b2tlbml6ZXIudGFibGUoaSkpfHwoYz11LnRva2VuaXplci5saGVhZGluZyhpKSkpcmV0dXJuIGk9aS5zdWJzdHJpbmcoYy5yYXcubGVuZ3RoKSxyLnB1c2goYyksImNvbnRpbnVlIjt2YXIgTCx5LEk7aWYoVj1pLHUub3B0aW9ucy5leHRlbnNpb25zJiZ1Lm9wdGlvbnMu''@;'; put 'put ''ZXh0ZW5zaW9ucy5zdGFydEJsb2NrJiYoTD0xLzAseT1pLnNsaWNlKDEpLHUub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0QmxvY2suZm9yRWFjaChmdW5jdGlvbihvKXsibnVtYmVyIj09dHlwZW9mKEk9by5jYWxsKHtsZXhlcjp0aGlzfSx5KSkmJjA8PUkmJihMPU1hdGgubWluKEwsSSkpfSks''@;'; put 'put ''TDwxLzApJiYwPD1MJiYoVj1pLnN1YnN0cmluZygwLEwrMSkpLHUuc3RhdGUudG9wJiYoYz11LnRva2VuaXplci5wYXJhZ3JhcGgoVikpKXJldHVybiBoPXJbci5sZW5ndGgtMV0sQyYmInBhcmFncmFwaCI9PT1oLnR5cGU/KGgucmF3Kz0iXG4iK2MucmF3LGgudGV4dCs9IlxuIitjLnRleHQs''@;'; put 'put ''dS5pbmxpbmVRdWV1ZS5wb3AoKSx1LmlubGluZVF1ZXVlW3UuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1oLnRleHQpOnIucHVzaChjKSxDPVYubGVuZ3RoIT09aS5sZW5ndGgsaT1pLnN1YnN0cmluZyhjLnJhdy5sZW5ndGgpLCJjb250aW51ZSI7aWYoYz11LnRva2VuaXplci50ZXh0KGkp''@;'; put 'put ''KXJldHVybiBpPWkuc3Vic3RyaW5nKGMucmF3Lmxlbmd0aCksKGg9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PWgudHlwZT8oaC5yYXcrPSJcbiIrYy5yYXcsaC50ZXh0Kz0iXG4iK2MudGV4dCx1LmlubGluZVF1ZXVlLnBvcCgpLHUuaW5saW5lUXVldWVbdS5pbmxpbmVRdWV1ZS5sZW5ndGgt''@;'; put 'put ''MV0uc3JjPWgudGV4dCk6ci5wdXNoKGMpLCJjb250aW51ZSI7aWYoaSl7dmFyIFo9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitpLmNoYXJDb2RlQXQoMCk7aWYodS5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcihaKSwiYnJlYWsiO3Rocm93IG5ldyBFcnJvcihaKX19KCk7''@;'; put 'put ''aWYoImNvbnRpbnVlIiE9PWQmJiJicmVhayI9PT1kKWJyZWFrfXJldHVybiB0aGlzLnN0YXRlLnRvcD0hMCxyfSxlLmlubGluZT1mdW5jdGlvbihpLHIpe3JldHVybiB0aGlzLmlubGluZVF1ZXVlLnB1c2goe3NyYzppLHRva2VuczpyPXZvaWQgMD09PXI/W106cn0pLHJ9LGUuaW5saW5lVG9r''@;'; put 'put ''ZW5zPWZ1bmN0aW9uKGkscil7dmFyIGMsaCxWLEMsdSxkLEw9dGhpcyx5PSh2b2lkIDA9PT1yJiYocj1bXSksaSk7aWYodGhpcy50b2tlbnMubGlua3Mpe3ZhciBJPU9iamVjdC5rZXlzKHRoaXMudG9rZW5zLmxpbmtzKTtpZigwPEkubGVuZ3RoKWZvcig7bnVsbCE9KEM9dGhpcy50b2tlbml6''@;'; put 'put ''ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2guZXhlYyh5KSk7KUkuaW5jbHVkZXMoQ1swXS5zbGljZShDWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYoeT15LnNsaWNlKDAsQy5pbmRleCkrIlsiKyJhIi5yZXBlYXQoQ1swXS5sZW5ndGgtMikrIl0iK3kuc2xpY2UodGhpcy50b2tl''@;'; put 'put ''bml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT0oQz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMoeSkpOyl5PXkuc2xpY2UoMCxDLmluZGV4KSsiWyIrImEiLnJlcGVhdChDWzBdLmxlbmd0aC0yKSsiXSIreS5z''@;'; put 'put ''bGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmxhc3RJbmRleCk7Zm9yKDtudWxsIT0oQz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24uZXhlYyh5KSk7KXk9eS5zbGljZSgwLEMuaW5kZXgpKyIrKyIreS5zbGljZSh0aGlzLnRva2Vu''@;'; put 'put ''aXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24ubGFzdEluZGV4KTtmb3IoO2k7KXt2YXIgWj1mdW5jdGlvbigpe2lmKHV8fChkPSIiKSx1PSExLEwub3B0aW9ucy5leHRlbnNpb25zJiZMLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUmJkwub3B0aW9ucy5leHRlbnNpb25zLmlubGlu''@;'; put 'put ''ZS5zb21lKGZ1bmN0aW9uKG0pe3JldHVybiEhKGM9bS5jYWxsKHtsZXhlcjpMfSxpLHIpKSYmKGk9aS5zdWJzdHJpbmcoYy5yYXcubGVuZ3RoKSxyLnB1c2goYyksITApfSkpcmV0dXJuImNvbnRpbnVlIjtpZihjPUwudG9rZW5pemVyLmVzY2FwZShpKSlyZXR1cm4gaT1pLnN1YnN0cmluZyhj''@;'; put 'put ''LnJhdy5sZW5ndGgpLHIucHVzaChjKSwiY29udGludWUiO2lmKGM9TC50b2tlbml6ZXIudGFnKGkpKXJldHVybiBpPWkuc3Vic3RyaW5nKGMucmF3Lmxlbmd0aCksKGg9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PWMudHlwZSYmInRleHQiPT09aC50eXBlPyhoLnJhdys9Yy5yYXcsaC50ZXh0''@;'; put 'put ''Kz1jLnRleHQpOnIucHVzaChjKSwiY29udGludWUiO2lmKGM9TC50b2tlbml6ZXIubGluayhpKSlyZXR1cm4gaT1pLnN1YnN0cmluZyhjLnJhdy5sZW5ndGgpLHIucHVzaChjKSwiY29udGludWUiO2lmKGM9TC50b2tlbml6ZXIucmVmbGluayhpLEwudG9rZW5zLmxpbmtzKSlyZXR1cm4gaT1p''@;'; put 'put ''LnN1YnN0cmluZyhjLnJhdy5sZW5ndGgpLChoPXJbci5sZW5ndGgtMV0pJiYidGV4dCI9PT1jLnR5cGUmJiJ0ZXh0Ij09PWgudHlwZT8oaC5yYXcrPWMucmF3LGgudGV4dCs9Yy50ZXh0KTpyLnB1c2goYyksImNvbnRpbnVlIjtpZigoYz1MLnRva2VuaXplci5lbVN0cm9uZyhpLHksZCkpfHwo''@;'; put 'put ''Yz1MLnRva2VuaXplci5jb2Rlc3BhbihpKSl8fChjPUwudG9rZW5pemVyLmJyKGkpKXx8KGM9TC50b2tlbml6ZXIuZGVsKGkpKXx8KGM9TC50b2tlbml6ZXIuYXV0b2xpbmsoaSxwMSkpfHwhTC5zdGF0ZS5pbkxpbmsmJihjPUwudG9rZW5pemVyLnVybChpLHAxKSkpcmV0dXJuIGk9aS5zdWJz''@;'; put 'put ''dHJpbmcoYy5yYXcubGVuZ3RoKSxyLnB1c2goYyksImNvbnRpbnVlIjt2YXIgbyxmLEU7aWYoVj1pLEwub3B0aW9ucy5leHRlbnNpb25zJiZMLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZSYmKG89MS8wLGY9aS5zbGljZSgxKSxMLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGlu''@;'; put 'put ''ZS5mb3JFYWNoKGZ1bmN0aW9uKG0peyJudW1iZXIiPT10eXBlb2YoRT1tLmNhbGwoe2xleGVyOnRoaXN9LGYpKSYmMDw9RSYmKG89TWF0aC5taW4obyxFKSl9KSxvPDEvMCkmJjA8PW8mJihWPWkuc3Vic3RyaW5nKDAsbysxKSksYz1MLnRva2VuaXplci5pbmxpbmVUZXh0KFYsTTEpKXJldHVy''@;'; put 'put ''biBpPWkuc3Vic3RyaW5nKGMucmF3Lmxlbmd0aCksIl8iIT09Yy5yYXcuc2xpY2UoLTEpJiYoZD1jLnJhdy5zbGljZSgtMSkpLHU9ITAsKGg9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PWgudHlwZT8oaC5yYXcrPWMucmF3LGgudGV4dCs9Yy50ZXh0KTpyLnB1c2goYyksImNvbnRpbnVlIjtp''@;'; put 'put ''ZihpKXt2YXIgQj0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2kuY2hhckNvZGVBdCgwKTtpZihMLm9wdGlvbnMuc2lsZW50KXJldHVybiBjb25zb2xlLmVycm9yKEIpLCJicmVhayI7dGhyb3cgbmV3IEVycm9yKEIpfX0oKTtpZigiY29udGludWUiIT09WiYmImJyZWFrIj09PVopYnJlYWt9''@;'; put 'put ''cmV0dXJuIHJ9LGU9biwodD1be2tleToicnVsZXMiLGdldDpmdW5jdGlvbigpe3JldHVybntibG9jazpnLGlubGluZTpBfX19XSkmJmooZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxufSgpLGwxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0''@;'; put 'put ''KXt0aGlzLm9wdGlvbnM9dHx8Yi5kZWZhdWx0c312YXIgcz1uLnByb3RvdHlwZTtyZXR1cm4gcy5jb2RlPWZ1bmN0aW9uKHQsYyxpKXt2YXIgcjtyZXR1cm4gYz0oY3x8IiIpLm1hdGNoKC9cUyovKVswXSx0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0JiZudWxsIT0ocj10aGlzLm9wdGlvbnMuaGln''@;'; put 'put ''aGxpZ2h0KHQsYykpJiZyIT09dCYmKGk9ITAsdD1yKSx0PXQucmVwbGFjZSgvXG4kLywiIikrIlxuIixjPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K1QoYykrJyI+JysoaT90OlQodCwhMCkpKyI8L2NvZGU+PC9wcmU+XG4iOiI8cHJlPjxjb2RlPiIrKGk/''@;'; put 'put ''dDpUKHQsITApKSsiPC9jb2RlPjwvcHJlPlxuIn0scy5ibG9ja3F1b3RlPWZ1bmN0aW9uKHQpe3JldHVybiI8YmxvY2txdW90ZT5cbiIrdCsiPC9ibG9ja3F1b3RlPlxuIn0scy5odG1sPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9LHMuaGVhZGluZz1mdW5jdGlvbih0LGUsaSxyKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5vcHRpb25zLmhlYWRlcklkcz8iPGgiK2UrJyBpZD0iJysodGhpcy5vcHRpb25zLmhlYWRlclByZWZpeCtyLnNsdWcoaSkpKyciPicrdCsiPC9oIitlKyI+XG4iOiI8aCIrZSsiPiIrdCsiPC9oIitlKyI+XG4ifSxzLmhyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy54aHRt''@;'; put 'put ''bD8iPGhyLz5cbiI6Ijxocj5cbiJ9LHMubGlzdD1mdW5jdGlvbih0LGUsaSl7dmFyIHI9ZT8ib2wiOiJ1bCI7cmV0dXJuIjwiK3IrKGUmJjEhPT1pPycgc3RhcnQ9IicraSsnIic6IiIpKyI+XG4iK3QrIjwvIityKyI+XG4ifSxzLmxpc3RpdGVtPWZ1bmN0aW9uKHQpe3JldHVybiI8bGk+Iit0''@;'; put 'put ''KyI8L2xpPlxuIn0scy5jaGVja2JveD1mdW5jdGlvbih0KXtyZXR1cm4iPGlucHV0ICIrKHQ/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIiIHR5cGU9ImNoZWNrYm94IicrKHRoaXMub3B0aW9ucy54aHRtbD8iIC8iOiIiKSsiPiAifSxzLnBhcmFncmFwaD1mdW5jdGlvbih0KXtyZXR1''@;'; put 'put ''cm4iPHA+Iit0KyI8L3A+XG4ifSxzLnRhYmxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIjx0YWJsZT5cbjx0aGVhZD5cbiIrdCsiPC90aGVhZD5cbiIrKGU9ZSYmIjx0Ym9keT4iK2UrIjwvdGJvZHk+IikrIjwvdGFibGU+XG4ifSxzLnRhYmxlcm93PWZ1bmN0aW9uKHQpe3JldHVybiI8dHI+XG4i''@;'; put 'put ''K3QrIjwvdHI+XG4ifSxzLnRhYmxlY2VsbD1mdW5jdGlvbih0LGUpe3ZhciBpPWUuaGVhZGVyPyJ0aCI6InRkIjtyZXR1cm4oZS5hbGlnbj8iPCIraSsnIGFsaWduPSInK2UuYWxpZ24rJyI+JzoiPCIraSsiPiIpK3QrIjwvIitpKyI+XG4ifSxzLnN0cm9uZz1mdW5jdGlvbih0KXtyZXR1cm4i''@;'; put 'put ''PHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9LHMuZW09ZnVuY3Rpb24odCl7cmV0dXJuIjxlbT4iK3QrIjwvZW0+In0scy5jb2Rlc3Bhbj1mdW5jdGlvbih0KXtyZXR1cm4iPGNvZGU+Iit0KyI8L2NvZGU+In0scy5icj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxici8+''@;'; put 'put ''IjoiPGJyPiJ9LHMuZGVsPWZ1bmN0aW9uKHQpe3JldHVybiI8ZGVsPiIrdCsiPC9kZWw+In0scy5saW5rPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbnVsbD09PSh0PW4xKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCx0KSk/aToodD0nPGEgaHJlZj0iJyt0Kyci''@;'; put 'put ''JyxlJiYodCs9JyB0aXRsZT0iJytlKyciJyksdCsiPiIraSsiPC9hPiIpfSxzLmltYWdlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbnVsbD09PSh0PW4xKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCx0KSk/aToodD0nPGltZyBzcmM9IicrdCsnIiBhbHQ9Iicr''@;'; put 'put ''aSsnIicsZSYmKHQrPScgdGl0bGU9IicrZSsnIicpLHQrKHRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+IikpfSxzLnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG59KCkscjE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fXZhciBzPW4ucHJvdG90eXBlO3JldHVybiBzLnN0cm9uZz1mdW5j''@;'; put 'put ''dGlvbih0KXtyZXR1cm4gdH0scy5lbT1mdW5jdGlvbih0KXtyZXR1cm4gdH0scy5jb2Rlc3Bhbj1mdW5jdGlvbih0KXtyZXR1cm4gdH0scy5kZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHMuaHRtbD1mdW5jdGlvbih0KXtyZXR1cm4gdH0scy50ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0fSxz''@;'; put 'put ''Lmxpbms9ZnVuY3Rpb24odCxlLGkpe3JldHVybiIiK2l9LHMuaW1hZ2U9ZnVuY3Rpb24odCxlLGkpe3JldHVybiIiK2l9LHMuYnI9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sbn0oKSxzMT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLnNlZW49e319dmFyIHM9bi5wcm90b3R5cGU7cmV0dXJu''@;'; put 'put ''IHMuc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoLzxbIVwvYS16XS4qPz4vZ2ksIiIpLnJlcGxhY2UoL1tcdTIwMDAtXHUyMDZGXHUyRTAwLVx1MkU3RlxcJyEiIyQlJigpKissLi86Ozw9Pj9AW1xdXmB7fH1+XS9nLCIiKS5yZXBs''@;'; put 'put ''YWNlKC9ccy9nLCItIil9LHMuZ2V0TmV4dFNhZmVTbHVnPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dCxyPTA7aWYodGhpcy5zZWVuLmhhc093blByb3BlcnR5KGkpKWZvcihyPXRoaXMuc2Vlblt0XTtpPXQrIi0iKyArK3IsdGhpcy5zZWVuLmhhc093blByb3BlcnR5KGkpOyk7cmV0dXJuIGV8fCh0''@;'; put 'put ''aGlzLnNlZW5bdF09cix0aGlzLnNlZW5baV09MCksaX0scy5zbHVnPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSx0PXRoaXMuc2VyaWFsaXplKHQpLHRoaXMuZ2V0TmV4dFNhZmVTbHVnKHQsZS5kcnlydW4pfSxufSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQp''@;'; put 'put ''e3RoaXMub3B0aW9ucz10fHxiLmRlZmF1bHRzLHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBsMSx0aGlzLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudGV4dFJlbmRl''@;'; put 'put ''cmVyPW5ldyByMSx0aGlzLnNsdWdnZXI9bmV3IHMxfW4ucGFyc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG4oZSkucGFyc2UodCl9LG4ucGFyc2VJbmxpbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG4oZSkucGFyc2VJbmxpbmUodCl9O3ZhciBzPW4ucHJvdG90eXBlO3JldHVybiBz''@;'; put 'put ''LnBhcnNlPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO2Zvcih2YXIgaSxyLGMsaCxWLEMsdSxkLEwseSxJLFosbyxmLEUsQixtPSIiLF89dC5sZW5ndGgsUj0wO1I8XztSKyspaWYoZD10W1JdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9u''@;'; put 'put ''cy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tkLnR5cGVdJiYoITEhPT0oQj10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbZC50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sZCkpfHwhWyJzcGFjZSIsImhyIiwiaGVhZGluZyIsImNvZGUiLCJ0''@;'; put 'put ''YWJsZSIsImJsb2NrcXVvdGUiLCJsaXN0IiwiaHRtbCIsInBhcmFncmFwaCIsInRleHQiXS5pbmNsdWRlcyhkLnR5cGUpKSltKz1CfHwiIjtlbHNlIHN3aXRjaChkLnR5cGUpe2Nhc2Uic3BhY2UiOmNvbnRpbnVlO2Nhc2UiaHIiOm0rPXRoaXMucmVuZGVyZXIuaHIoKTtjb250aW51ZTtjYXNl''@;'; put 'put ''ImhlYWRpbmciOm0rPXRoaXMucmVuZGVyZXIuaGVhZGluZyh0aGlzLnBhcnNlSW5saW5lKGQudG9rZW5zKSxkLmRlcHRoLFEodGhpcy5wYXJzZUlubGluZShkLnRva2Vucyx0aGlzLnRleHRSZW5kZXJlcikpLHRoaXMuc2x1Z2dlcik7Y29udGludWU7Y2FzZSJjb2RlIjptKz10aGlzLnJlbmRl''@;'; put 'put ''cmVyLmNvZGUoZC50ZXh0LGQubGFuZyxkLmVzY2FwZWQpO2NvbnRpbnVlO2Nhc2UidGFibGUiOmZvcihDPUw9IiIsYz1kLmhlYWRlci5sZW5ndGgsaT0wO2k8YztpKyspQys9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5wYXJzZUlubGluZShkLmhlYWRlcltpXS50b2tlbnMpLHtoZWFk''@;'; put 'put ''ZXI6ITAsYWxpZ246ZC5hbGlnbltpXX0pO2ZvcihMKz10aGlzLnJlbmRlcmVyLnRhYmxlcm93KEMpLHU9IiIsYz1kLnJvd3MubGVuZ3RoLGk9MDtpPGM7aSsrKXtmb3IoQz0iIixoPShWPWQucm93c1tpXSkubGVuZ3RoLHI9MDtyPGg7cisrKUMrPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRo''@;'; put 'put ''aXMucGFyc2VJbmxpbmUoVltyXS50b2tlbnMpLHtoZWFkZXI6ITEsYWxpZ246ZC5hbGlnbltyXX0pO3UrPXRoaXMucmVuZGVyZXIudGFibGVyb3coQyl9bSs9dGhpcy5yZW5kZXJlci50YWJsZShMLHUpO2NvbnRpbnVlO2Nhc2UiYmxvY2txdW90ZSI6dT10aGlzLnBhcnNlKGQudG9rZW5zKSxt''@;'; put 'put ''Kz10aGlzLnJlbmRlcmVyLmJsb2NrcXVvdGUodSk7Y29udGludWU7Y2FzZSJsaXN0Ijpmb3IoTD1kLm9yZGVyZWQsJD1kLnN0YXJ0LHk9ZC5sb29zZSxjPWQuaXRlbXMubGVuZ3RoLHU9IiIsaT0wO2k8YztpKyspbz0oWj1kLml0ZW1zW2ldKS5jaGVja2VkLGY9Wi50YXNrLEk9IiIsWi50YXNr''@;'; put 'put ''JiYoRT10aGlzLnJlbmRlcmVyLmNoZWNrYm94KG8pLHk/MDxaLnRva2Vucy5sZW5ndGgmJiJwYXJhZ3JhcGgiPT09Wi50b2tlbnNbMF0udHlwZT8oWi50b2tlbnNbMF0udGV4dD1FKyIgIitaLnRva2Vuc1swXS50ZXh0LFoudG9rZW5zWzBdLnRva2VucyYmMDxaLnRva2Vuc1swXS50b2tlbnMu''@;'; put 'put ''bGVuZ3RoJiYidGV4dCI9PT1aLnRva2Vuc1swXS50b2tlbnNbMF0udHlwZSYmKFoudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0PUUrIiAiK1oudG9rZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6Wi50b2tlbnMudW5zaGlmdCh7dHlwZToidGV4dCIsdGV4dDpFfSk6SSs9RSksSSs9dGhpcy5wYXJz''@;'; put 'put ''ZShaLnRva2Vucyx5KSx1Kz10aGlzLnJlbmRlcmVyLmxpc3RpdGVtKEksZixvKTttKz10aGlzLnJlbmRlcmVyLmxpc3QodSxMLCQpO2NvbnRpbnVlO2Nhc2UiaHRtbCI6bSs9dGhpcy5yZW5kZXJlci5odG1sKGQudGV4dCxkLmJsb2NrKTtjb250aW51ZTtjYXNlInBhcmFncmFwaCI6bSs9dGhp''@;'; put 'put ''cy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZUlubGluZShkLnRva2VucykpO2NvbnRpbnVlO2Nhc2UidGV4dCI6Zm9yKHU9ZC50b2tlbnM/dGhpcy5wYXJzZUlubGluZShkLnRva2Vucyk6ZC50ZXh0O1IrMTxfJiYidGV4dCI9PT10W1IrMV0udHlwZTspdSs9IlxuIisoKGQ9dFsrK1Jd''@;'; put 'put ''KS50b2tlbnM/dGhpcy5wYXJzZUlubGluZShkLnRva2Vucyk6ZC50ZXh0KTttKz1lP3RoaXMucmVuZGVyZXIucGFyYWdyYXBoKHUpOnU7Y29udGludWU7ZGVmYXVsdDp2YXIgJD0nVG9rZW4gd2l0aCAiJytkLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNp''@;'; put 'put ''bGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCQpO3Rocm93IG5ldyBFcnJvcigkKX1yZXR1cm4gbX0scy5wYXJzZUlubGluZT1mdW5jdGlvbih0LGUpe2U9ZXx8dGhpcy5yZW5kZXJlcjtmb3IodmFyIGkscixjPSIiLGg9dC5sZW5ndGgsVj0wO1Y8aDtWKyspaWYoaT10W1ZdLHRoaXMu''@;'; put 'put ''b3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tpLnR5cGVdJiYoITEhPT0ocj10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbaS50eXBlXS5jYWxsKHtwYXJzZXI6dGhp''@;'; put 'put ''c30saSkpfHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwiZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKGkudHlwZSkpKWMrPXJ8fCIiO2Vsc2Ugc3dpdGNoKGkudHlwZSl7Y2FzZSJlc2NhcGUiOmNhc2UidGV4dCI6Yys9ZS50ZXh0''@;'; put 'put ''KGkudGV4dCk7YnJlYWs7Y2FzZSJodG1sIjpjKz1lLmh0bWwoaS50ZXh0KTticmVhaztjYXNlImxpbmsiOmMrPWUubGluayhpLmhyZWYsaS50aXRsZSx0aGlzLnBhcnNlSW5saW5lKGkudG9rZW5zLGUpKTticmVhaztjYXNlImltYWdlIjpjKz1lLmltYWdlKGkuaHJlZixpLnRpdGxlLGkudGV4''@;'; put 'put ''dCk7YnJlYWs7Y2FzZSJzdHJvbmciOmMrPWUuc3Ryb25nKHRoaXMucGFyc2VJbmxpbmUoaS50b2tlbnMsZSkpO2JyZWFrO2Nhc2UiZW0iOmMrPWUuZW0odGhpcy5wYXJzZUlubGluZShpLnRva2VucyxlKSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6Yys9ZS5jb2Rlc3BhbihpLnRleHQpO2JyZWFr''@;'; put 'put ''O2Nhc2UiYnIiOmMrPWUuYnIoKTticmVhaztjYXNlImRlbCI6Yys9ZS5kZWwodGhpcy5wYXJzZUlubGluZShpLnRva2VucyxlKSk7YnJlYWs7ZGVmYXVsdDp2YXIgQz0nVG9rZW4gd2l0aCAiJytpLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudCly''@;'; put 'put ''ZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKEMpO3Rocm93IG5ldyBFcnJvcihDKX1yZXR1cm4gY30sbn0oKSxYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt0aGlzLm9wdGlvbnM9dHx8Yi5kZWZhdWx0c312YXIgcz1uLnByb3RvdHlwZTtyZXR1cm4gcy5wcmVwcm9jZXNzPWZ1bmN0aW9uKHQp''@;'; put 'put ''e3JldHVybiB0fSxzLnBvc3Rwcm9jZXNzPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxufSgpLGExPShYLnBhc3NUaHJvdWdoSG9va3M9bmV3IFNldChbInByZXByb2Nlc3MiLCJwb3N0cHJvY2VzcyJdKSxwKCJwYXJzZU1hcmtkb3duIikpLGgxPXAoIm9uRXJyb3IiKTtmdW5jdGlvbiBnMShuLHMp''@;'; put 'put ''e3ZhciB0PXRoaXM7cmV0dXJuIGZ1bmN0aW9uKGUsaSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgaSYmKHI9aSxpPW51bGwpO3ZhciBjLGg9eih7fSxpKSxWPShpPXooe30sdC5kZWZhdWx0cyxoKSxhKHQsaDEpW2gxXShpLnNpbGVudCxpLmFzeW5jLHIpKTtpZihudWxsPT1lKXJldHVybiBWKG5l''@;'; put 'put ''dyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIFYobmV3IEVycm9yKCJtYXJrZWQoKTogaW5wdXQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgIitPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n''@;'; put 'put ''LmNhbGwoZSkrIiwgc3RyaW5nIGV4cGVjdGVkIikpO2lmKGg9ciwoYz1pKSYmIWMuc2lsZW50JiYoaCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogY2FsbGJhY2sgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3Zl''@;'; put 'put ''ZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnL3VzaW5nX3BybyNhc3luYyIpLChjLnNhbml0aXplfHxjLnNhbml0aXplcikmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNhbml0aXplIGFuZCBzYW5pdGl6ZXIgcGFyYW1ldGVycyBhcmUgZGVw''@;'; put 'put ''cmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNy4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnLyMvVVNJTkdfQURWQU5DRUQubWQjb3B0aW9ucyIpLCFjLmhpZ2hsaWdodCYm''@;'; put 'put ''Imxhbmd1YWdlLSI9PT1jLmxhbmdQcmVmaXh8fGNvbnNvbGUud2FybigibWFya2VkKCk6IGhpZ2hsaWdodCBhbmQgbGFuZ1ByZWZpeCBwYXJhbWV0ZXJzIGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGlu''@;'; put 'put ''IHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1oaWdobGlnaHQuIiksYy5tYW5nbGUmJmNvbnNvbGUud2FybigibWFya2VkKCk6IG1hbmdsZSBwYXJhbWV0ZXIgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgaXMgZGVwcmVjYXRl''@;'; put 'put ''ZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFRvIGNsZWFyIHRoaXMgd2FybmluZywgaW5zdGFsbCBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtbWFuZ2xlLCBvciBkaXNhYmxlIGJ5IHNldHRpbmcgYHttYW5nbGU6''@;'; put 'put ''IGZhbHNlfWAuIiksYy5iYXNlVXJsJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBiYXNlVXJsIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNl''@;'; put 'put ''IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1iYXNlLXVybC4iKSxjLnNtYXJ0eXBhbnRzJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzbWFydHlwYW50cyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQg''@;'; put 'put ''YW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtc21hcnR5cGFudHMuIiksYy54aHRtbCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogeGh0bWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2lu''@;'; put 'put ''Y2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLXhodG1sLiIpLGMuaGVhZGVySWRzfHxjLmhlYWRlclByZWZpeCkmJmNvbnNv''@;'; put 'put ''bGUud2FybigibWFya2VkKCk6IGhlYWRlcklkcyBhbmQgaGVhZGVyUHJlZml4IHBhcmFtZXRlcnMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlz''@;'; put 'put ''IHdhcm5pbmcsIGluc3RhbGwgIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1nZm0taGVhZGluZy1pZCwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7aGVhZGVySWRzOiBmYWxzZX1gLiIpLGkuaG9va3MmJihpLmhvb2tzLm9wdGlvbnM9aSkscil7dmFyIEMsdT1pLmhpZ2hs''@;'; put 'put ''aWdodDt0cnl7aS5ob29rcyYmKGU9aS5ob29rcy5wcmVwcm9jZXNzKGUpKSxDPW4oZSxpKX1jYXRjaChaKXtyZXR1cm4gVihaKX12YXIgZCxMPWZ1bmN0aW9uKFope3ZhciBvO2lmKCFaKXRyeXtpLndhbGtUb2tlbnMmJnQud2Fsa1Rva2VucyhDLGkud2Fsa1Rva2Vucyksbz1zKEMsaSksaS5o''@;'; put 'put ''b29rcyYmKG89aS5ob29rcy5wb3N0cHJvY2VzcyhvKSl9Y2F0Y2goZil7Wj1mfXJldHVybiBpLmhpZ2hsaWdodD11LFo/VihaKTpyKG51bGwsbyl9O3JldHVybiF1fHx1Lmxlbmd0aDwzP0woKTooZGVsZXRlIGkuaGlnaGxpZ2h0LEMubGVuZ3RoPyhkPTAsdC53YWxrVG9rZW5zKEMsZnVuY3Rp''@;'; put 'put ''b24oWil7ImNvZGUiPT09Wi50eXBlJiYoZCsrLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt1KFoudGV4dCxaLmxhbmcsZnVuY3Rpb24obyxmKXtpZihvKXJldHVybiBMKG8pO251bGwhPWYmJmYhPT1aLnRleHQmJihaLnRleHQ9ZixaLmVzY2FwZWQ9ITApLDA9PS0tZCYmTCgpfSl9LDApKX0pLHZv''@;'; put 'put ''aWQoMD09PWQmJkwoKSkpOkwoKSl9aWYoaS5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkuaG9va3M/aS5ob29rcy5wcmVwcm9jZXNzKGUpOmUpLnRoZW4oZnVuY3Rpb24oWil7cmV0dXJuIG4oWixpKX0pLnRoZW4oZnVuY3Rpb24oWil7cmV0dXJuIGkud2Fsa1Rva2Vucz9Qcm9taXNl''@;'; put 'put ''LmFsbCh0LndhbGtUb2tlbnMoWixpLndhbGtUb2tlbnMpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIFp9KTpafSkudGhlbihmdW5jdGlvbihaKXtyZXR1cm4gcyhaLGkpfSkudGhlbihmdW5jdGlvbihaKXtyZXR1cm4gaS5ob29rcz9pLmhvb2tzLnBvc3Rwcm9jZXNzKFopOlp9KS5jYXRjaChW''@;'; put 'put ''KTt0cnl7aS5ob29rcyYmKGU9aS5ob29rcy5wcmVwcm9jZXNzKGUpKTt2YXIgeT1uKGUsaSksST0oaS53YWxrVG9rZW5zJiZ0LndhbGtUb2tlbnMoeSxpLndhbGtUb2tlbnMpLHMoeSxpKSk7cmV0dXJuIGkuaG9va3M/aS5ob29rcy5wb3N0cHJvY2VzcyhJKTpJfWNhdGNoKFope3JldHVybiBW''@;'; put 'put ''KFopfX19ZnVuY3Rpb24gTDEobixzLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgaTtpZihlLm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkLiIsbilyZXR1cm4gaT0iPHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxw''@;'; put 'put ''cmU+IitUKGUubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiIscz9Qcm9taXNlLnJlc29sdmUoaSk6dD92b2lkIHQobnVsbCxpKTppO2lmKHMpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO2lmKCF0KXRocm93IGU7dChlKX19Sz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkodGhpcyxoMSx7dmFsdWU6TDF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhMSx7dmFsdWU6ZzF9KSx0aGlzLmRlZmF1bHRzPXthc3luYzohMSxiYXNlVXJsOm51bGwsYnJlYWtzOiExLGV4dGVuc2lvbnM6bnVsbCxnZm06ITAsaGVhZGVySWRzOiEwLGhlYWRlclByZWZpeDoi''@;'; put 'put ''IixoaWdobGlnaHQ6bnVsbCxob29rczpudWxsLGxhbmdQcmVmaXg6Imxhbmd1YWdlLSIsbWFuZ2xlOiEwLHBlZGFudGljOiExLHJlbmRlcmVyOm51bGwsc2FuaXRpemU6ITEsc2FuaXRpemVyOm51bGwsc2lsZW50OiExLHNtYXJ0eXBhbnRzOiExLHRva2VuaXplcjpudWxsLHdhbGtUb2tlbnM6''@;'; put 'put ''bnVsbCx4aHRtbDohMX0sdGhpcy5vcHRpb25zPXRoaXMuc2V0T3B0aW9ucyx0aGlzLnBhcnNlPWEodGhpcyxhMSlbYTFdKE4ubGV4LHEucGFyc2UpLHRoaXMucGFyc2VJbmxpbmU9YSh0aGlzLGExKVthMV0oTi5sZXhJbmxpbmUscS5wYXJzZUlubGluZSksdGhpcy5QYXJzZXI9cSx0aGlzLnBh''@;'; put 'put ''cnNlcj1xLnBhcnNlLHRoaXMuUmVuZGVyZXI9bDEsdGhpcy5UZXh0UmVuZGVyZXI9cjEsdGhpcy5MZXhlcj1OLHRoaXMubGV4ZXI9Ti5sZXgsdGhpcy5Ub2tlbml6ZXI9Six0aGlzLlNsdWdnZXI9czEsdGhpcy5Ib29rcz1YLHRoaXMudXNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcz1u''@;'; put 'put ''LnByb3RvdHlwZTtyZXR1cm4gcy53YWxrVG9rZW5zPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLHI9dGhpcyxjPVtdLGg9bCh0KTshKGk9aCgpKS5kb25lOykhZnVuY3Rpb24oKXt2YXIgVj1pLnZhbHVlO3N3aXRjaChjPWMuY29uY2F0KGUuY2FsbChyLFYpKSxWLnR5cGUpe2Nhc2UidGFibGUi''@;'; put 'put ''OmZvcih2YXIgQz1sKFYuaGVhZGVyKTshKHU9QygpKS5kb25lOyl7dmFyIHU9dS52YWx1ZTtjPWMuY29uY2F0KHIud2Fsa1Rva2Vucyh1LnRva2VucyxlKSl9Zm9yKHZhciBkLEw9bChWLnJvd3MpOyEoZD1MKCkpLmRvbmU7KWZvcih2YXIgeT1sKGQudmFsdWUpOyEoST15KCkpLmRvbmU7KXt2''@;'; put 'put ''YXIgST1JLnZhbHVlO2M9Yy5jb25jYXQoci53YWxrVG9rZW5zKEkudG9rZW5zLGUpKX1icmVhaztjYXNlImxpc3QiOmM9Yy5jb25jYXQoci53YWxrVG9rZW5zKFYuaXRlbXMsZSkpO2JyZWFrO2RlZmF1bHQ6ci5kZWZhdWx0cy5leHRlbnNpb25zJiZyLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hp''@;'; put 'put ''bGRUb2tlbnMmJnIuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1tWLnR5cGVdP3IuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1tWLnR5cGVdLmZvckVhY2goZnVuY3Rpb24oWil7Yz1jLmNvbmNhdChyLndhbGtUb2tlbnMoVltaXSxlKSl9KTpWLnRva2VucyYmKGM9Yy5j''@;'; put 'put ''b25jYXQoci53YWxrVG9rZW5zKFYudG9rZW5zLGUpKSl9fSgpO3JldHVybiBjfSxzLnVzZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJy''@;'; put 'put ''YXkoaSksYz0wO2M8aTtjKyspcltjXT1hcmd1bWVudHNbY107cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgVixDPXooe30saCk7aWYoQy5hc3luYz10LmRlZmF1bHRzLmFzeW5jfHxDLmFzeW5jfHwhMSxoLmV4dGVuc2lvbnMmJihoLmV4dGVuc2lvbnMuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bihvKXtpZighby5uYW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTt2YXIgZjtpZihvLnJlbmRlcmVyJiYoZS5yZW5kZXJlcnNbby5uYW1lXT0oZj1lLnJlbmRlcmVyc1tvLm5hbWVdKT9mdW5jdGlvbigpe2Zvcih2YXIgRT1hcmd1bWVudHMubGVuZ3RoLEI9''@;'; put 'put ''bmV3IEFycmF5KEUpLG09MDttPEU7bSsrKUJbbV09YXJndW1lbnRzW21dO3ZhciBfPW8ucmVuZGVyZXIuYXBwbHkodGhpcyxCKTtyZXR1cm4hMT09PV8/Zi5hcHBseSh0aGlzLEIpOl99Om8ucmVuZGVyZXIpLG8udG9rZW5pemVyKXtpZighby5sZXZlbHx8ImJsb2NrIiE9PW8ubGV2ZWwmJiJp''@;'; put 'put ''bmxpbmUiIT09by5sZXZlbCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSciKTtlW28ubGV2ZWxdP2Vbby5sZXZlbF0udW5zaGlmdChvLnRva2VuaXplcik6ZVtvLmxldmVsXT1bby50b2tlbml6ZXJdLG8uc3RhcnQmJigiYmxvY2si''@;'; put 'put ''PT09by5sZXZlbD9lLnN0YXJ0QmxvY2s/ZS5zdGFydEJsb2NrLnB1c2goby5zdGFydCk6ZS5zdGFydEJsb2NrPVtvLnN0YXJ0XToiaW5saW5lIj09PW8ubGV2ZWwmJihlLnN0YXJ0SW5saW5lP2Uuc3RhcnRJbmxpbmUucHVzaChvLnN0YXJ0KTplLnN0YXJ0SW5saW5lPVtvLnN0YXJ0XSkpfW8u''@;'; put 'put ''Y2hpbGRUb2tlbnMmJihlLmNoaWxkVG9rZW5zW28ubmFtZV09by5jaGlsZFRva2Vucyl9KSxDLmV4dGVuc2lvbnM9ZSksaC5yZW5kZXJlcil7dmFyIHUsZD10LmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgbDEodC5kZWZhdWx0cyk7Zm9yKHUgaW4gaC5yZW5kZXJlcikhZnVuY3Rpb24obyl7dmFy''@;'; put 'put ''IGY9ZFtvXTtkW29dPWZ1bmN0aW9uKCl7Zm9yKHZhciBFPWFyZ3VtZW50cy5sZW5ndGgsQj1uZXcgQXJyYXkoRSksbT0wO208RTttKyspQlttXT1hcmd1bWVudHNbbV07dmFyIF89aC5yZW5kZXJlcltvXS5hcHBseShkLEIpO3JldHVybiExPT09Xz9mLmFwcGx5KGQsQik6X319KHUpO0MucmVu''@;'; put 'put ''ZGVyZXI9ZH1pZihoLnRva2VuaXplcil7dmFyIEwseT10LmRlZmF1bHRzLnRva2VuaXplcnx8bmV3IEoodC5kZWZhdWx0cyk7Zm9yKEwgaW4gaC50b2tlbml6ZXIpIWZ1bmN0aW9uKG8pe3ZhciBmPXlbb107eVtvXT1mdW5jdGlvbigpe2Zvcih2YXIgRT1hcmd1bWVudHMubGVuZ3RoLEI9bmV3''@;'; put 'put ''IEFycmF5KEUpLG09MDttPEU7bSsrKUJbbV09YXJndW1lbnRzW21dO3ZhciBfPWgudG9rZW5pemVyW29dLmFwcGx5KHksQik7cmV0dXJuITE9PT1fP2YuYXBwbHkoeSxCKTpffX0oTCk7Qy50b2tlbml6ZXI9eX1pZihoLmhvb2tzKXt2YXIgSSxaPXQuZGVmYXVsdHMuaG9va3N8fG5ldyBYO2Zv''@;'; put 'put ''cihJIGluIGguaG9va3MpIWZ1bmN0aW9uKG8pe3ZhciBmPVpbb107WltvXT1YLnBhc3NUaHJvdWdoSG9va3MuaGFzKG8pP2Z1bmN0aW9uKEUpe3JldHVybiB0LmRlZmF1bHRzLmFzeW5jP1Byb21pc2UucmVzb2x2ZShoLmhvb2tzW29dLmNhbGwoWixFKSkudGhlbihmdW5jdGlvbihCKXtyZXR1''@;'; put 'put ''cm4gZi5jYWxsKFosQil9KTooRT1oLmhvb2tzW29dLmNhbGwoWixFKSxmLmNhbGwoWixFKSl9OmZ1bmN0aW9uKCl7Zm9yKHZhciBFPWFyZ3VtZW50cy5sZW5ndGgsQj1uZXcgQXJyYXkoRSksbT0wO208RTttKyspQlttXT1hcmd1bWVudHNbbV07dmFyIF89aC5ob29rc1tvXS5hcHBseShaLEIp''@;'; put 'put ''O3JldHVybiExPT09Xz9mLmFwcGx5KFosQik6X319KEkpO0MuaG9va3M9Wn1oLndhbGtUb2tlbnMmJihWPXQuZGVmYXVsdHMud2Fsa1Rva2VucyxDLndhbGtUb2tlbnM9ZnVuY3Rpb24obyl7dmFyIGY9W107cmV0dXJuIGYucHVzaChoLndhbGtUb2tlbnMuY2FsbCh0aGlzLG8pKSxWP2YuY29u''@;'; put 'put ''Y2F0KFYuY2FsbCh0aGlzLG8pKTpmfSksdC5kZWZhdWx0cz16KHt9LHQuZGVmYXVsdHMsQyl9KSx0aGlzfSxzLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmYXVsdHM9eih7fSx0aGlzLmRlZmF1bHRzLHQpLHRoaXN9LG59KCk7dmFyIFc9bmV3IEsoYi5kZWZhdWx0cyk7''@;'; put 'put ''ZnVuY3Rpb24gRihuLHMsdCl7cmV0dXJuIFcucGFyc2UobixzLHQpfUYub3B0aW9ucz1GLnNldE9wdGlvbnM9ZnVuY3Rpb24obil7cmV0dXJuIFcuc2V0T3B0aW9ucyhuKSxrKEYuZGVmYXVsdHM9Vy5kZWZhdWx0cyksRn0sRi5nZXREZWZhdWx0cz12LEYuZGVmYXVsdHM9Yi5kZWZhdWx0cyxG''@;'; put 'put ''LnVzZT1mdW5jdGlvbigpe3JldHVybiBXLnVzZS5hcHBseShXLGFyZ3VtZW50cyksayhGLmRlZmF1bHRzPVcuZGVmYXVsdHMpLEZ9LEYud2Fsa1Rva2Vucz1mdW5jdGlvbihuLHMpe3JldHVybiBXLndhbGtUb2tlbnMobixzKX0sRi5wYXJzZUlubGluZT1XLnBhcnNlSW5saW5lLEYuUGFyc2Vy''@;'; put 'put ''PXEsRi5wYXJzZXI9cS5wYXJzZSxGLlJlbmRlcmVyPWwxLEYuVGV4dFJlbmRlcmVyPXIxLEYuTGV4ZXI9TixGLmxleGVyPU4ubGV4LEYuVG9rZW5pemVyPUosRi5TbHVnZ2VyPXMxLEYuSG9va3M9WDt2YXIgYjE9KEYucGFyc2U9Rikub3B0aW9ucyxTMT1GLnNldE9wdGlvbnMsdjE9Ri51c2Us''@;'; put 'put ''eTE9Ri53YWxrVG9rZW5zLG0xPUYucGFyc2VJbmxpbmUseDE9RixEMT1xLnBhcnNlLGYxPU4ubGV4O2IuSG9va3M9WCxiLkxleGVyPU4sYi5NYXJrZWQ9SyxiLlBhcnNlcj1xLGIuUmVuZGVyZXI9bDEsYi5TbHVnZ2VyPXMxLGIuVGV4dFJlbmRlcmVyPXIxLGIuVG9rZW5pemVyPUosYi5nZXRE''@;'; put 'put ''ZWZhdWx0cz12LGIubGV4ZXI9ZjEsYi5tYXJrZWQ9RixiLm9wdGlvbnM9YjEsYi5wYXJzZT14MSxiLnBhcnNlSW5saW5lPW0xLGIucGFyc2VyPUQxLGIuc2V0T3B0aW9ucz1TMSxiLnVzZT12MSxiLndhbGtUb2tlbnM9eTF9KTs='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=styles.327edc88a5f001bb-css; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''LyohCiAqIENvcHlyaWdodCAoYykgSEFORFNPTkNPREUgc3AuIHogby4gby4KICogCiAqIEhBTkRTT05UQUJMRSBpcyBhIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGJ5IEhBTkRTT05DT0RFIHNwLiB6IG8uIG8uLCBhIFBvbGlzaCBjb3Jwb3JhdGlvbiBiYXNlZCBpbgogKiBHZHluaWEsIFBvbGFu''@;'; put 'put ''ZCwgYXQgQWxlamEgWnd5Y2llzKhzdHdhIDk2LTk4LCByZWdpc3RlcmVkIGJ5IHRoZSBEaXN0cmljdCBDb3VydCBpbiBHZGFuc2sgdW5kZXIgbnVtYmVyCiAqIDUzODY1MSwgRVUgdGF4IElEIG51bWJlcjogUEw1ODYyMjk0MDAyLCBzaGFyZSBjYXBpdGFsOiBQTE4gNjIsODAwLjAwLgogKiAK''@;'; put 'put ''ICogVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3cywgaW5jbHVkaW5nIGludGVybmF0aW9uYWwgdHJlYXRpZXMsIGFuZCBkdWFsLQogKiBsaWNlbnNlZCDigJMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91ciB1c2UgZm9yIGNvbW1lcmNpYWwg''@;'; put 'put ''cHVycG9zZXMsIG1lYW5pbmcgaW50ZW5kZWQgZm9yIG9yCiAqIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC4KICogCiAqIElmIHlvdXIgdXNlIGlzIHN0cmljdGx5IHBlcnNvbmFsIG9yIHNvbGVseSBmb3IgZXZhbHVh''@;'; put 'put ''dGlvbiBwdXJwb3NlcywgbWVhbmluZyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRlc3RpbmcKICogdGhlIHN1aXRhYmlsaXR5LCBwZXJmb3JtYW5jZSwgYW5kIHVzZWZ1bG5lc3Mgb2YgdGhpcyBzb2Z0d2FyZSBvdXRzaWRlIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50LAogKiB5b3UgYWdyZWUg''@;'; put 'put ''dG8gYmUgYm91bmQgYnkgdGhlIHRlcm1zIGluY2x1ZGVkIGluIHRoZSAiaGFuZHNvbnRhYmxlLW5vbi1jb21tZXJjaWFsLWxpY2Vuc2UucGRmIiBmaWxlLgogKiAKICogWW91ciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcyBpcyBzdWJqZWN0IHRvIHRoZSB0''@;'; put 'put ''ZXJtcyBpbmNsdWRlZCBpbiBhbiBhcHBsaWNhYmxlCiAqIGxpY2Vuc2UgYWdyZWVtZW50LgogKiAKICogSW4gYW55IGNhc2UsIHlvdSBtdXN0IG5vdCBtYWtlIGFueSBzdWNoIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGFzIHRvIGRldmVsb3Agc29mdHdhcmUgd2hpY2ggbWF5IGJlCiAqIGNvbnNp''@;'; put 'put ''ZGVyZWQgY29tcGV0aXRpdmUgd2l0aCB0aGlzIHNvZnR3YXJlLgogKiAKICogVU5MRVNTIEVYUFJFU1NMWSBBR1JFRUQgT1RIRVJXSVNFLCBIQU5EU09OQ09ERSBQUk9WSURFUyBUSElTIFNPRlRXQVJFIE9OIEFOICJBUyBJUyIKICogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E''@;'; put 'put ''SVRJT05TIE9GIEFOWSBLSU5ELCBBTkQgSU4gTk8gRVZFTlQgQU5EIFVOREVSIE5PCiAqIExFR0FMIFRIRU9SWSwgU0hBTEwgSEFORFNPTkNPREUgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBESVJFQ1QsCiAqIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVO''@;'; put 'put ''VEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBBUklTSU5HIEZST00KICogVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhJUyBTT0ZUV0FSRS4KICogCiAqIFZlcnNpb246IDEzLjAuMAogKiBSZWxlYXNlIGRhdGU6IDIyLzA2LzIwMjMgKGJ1aWx0IGF0IDIy''@;'; put 'put ''LzA2LzIwMjMgMTI6NTE6MzApCiAqLy5oYW5kc29udGFibGUgLnRhYmxlIHRoLC5oYW5kc29udGFibGUgLnRhYmxlIHRke2JvcmRlci10b3A6bm9uZX0uaGFuZHNvbnRhYmxlIHRye2JhY2tncm91bmQ6I2ZmZn0uaGFuZHNvbnRhYmxlIHRke2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIC50YWJsZSBjYXB0aW9uK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUgLnRhYmxlIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsLmhhbmRzb250YWJsZSAudGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250''@;'; put 'put ''YWJsZSAudGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsLmhhbmRzb250YWJsZSAudGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZSAudGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVy''@;'; put 'put ''LXRvcDoxcHggc29saWQgI0NDQ0NDQ30uaGFuZHNvbnRhYmxlIC50YWJsZS1ib3JkZXJlZHtib3JkZXI6MDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmhhbmRzb250YWJsZSAudGFibGUtYm9yZGVyZWQgdGgsLmhhbmRzb250YWJsZSAudGFibGUtYm9yZGVyZWQgdGR7Ym9yZGVyLWxlZnQ6''@;'; put 'put ''bm9uZX0uaGFuZHNvbnRhYmxlIC50YWJsZS1ib3JkZXJlZCB0aDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlIC50YWJsZS1ib3JkZXJlZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdDoxcHggc29saWQgI0NDQ0NDQ30uaGFuZHNvbnRhYmxlIC50YWJsZT50Ym9keT50cj50ZCwuaGFuZHNv''@;'; put 'put ''bnRhYmxlIC50YWJsZT50Ym9keT50cj50aCwuaGFuZHNvbnRhYmxlIC50YWJsZT50Zm9vdD50cj50ZCwuaGFuZHNvbnRhYmxlIC50YWJsZT50Zm9vdD50cj50aCwuaGFuZHNvbnRhYmxlIC50YWJsZT50aGVhZD50cj50ZCwuaGFuZHNvbnRhYmxlIC50YWJsZT50aGVhZD50cj50aHtsaW5lLWhl''@;'; put 'put ''aWdodDoyMXB4O3BhZGRpbmc6MH0uY29sLWxnLTEuaGFuZHNvbnRhYmxlLC5jb2wtbGctMTAuaGFuZHNvbnRhYmxlLC5jb2wtbGctMTEuaGFuZHNvbnRhYmxlLC5jb2wtbGctMTIuaGFuZHNvbnRhYmxlLC5jb2wtbGctMi5oYW5kc29udGFibGUsLmNvbC1sZy0zLmhhbmRzb250YWJsZSwuY29s''@;'; put 'put ''LWxnLTQuaGFuZHNvbnRhYmxlLC5jb2wtbGctNS5oYW5kc29udGFibGUsLmNvbC1sZy02LmhhbmRzb250YWJsZSwuY29sLWxnLTcuaGFuZHNvbnRhYmxlLC5jb2wtbGctOC5oYW5kc29udGFibGUsLmNvbC1sZy05LmhhbmRzb250YWJsZSwuY29sLW1kLTEuaGFuZHNvbnRhYmxlLC5jb2wtbWQt''@;'; put 'put ''MTAuaGFuZHNvbnRhYmxlLC5jb2wtbWQtMTEuaGFuZHNvbnRhYmxlLC5jb2wtbWQtMTIuaGFuZHNvbnRhYmxlLC5jb2wtbWQtMi5oYW5kc29udGFibGUsLmNvbC1tZC0zLmhhbmRzb250YWJsZSwuY29sLW1kLTQuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNS5oYW5kc29udGFibGUsLmNvbC1tZC02''@;'; put 'put ''LmhhbmRzb250YWJsZSwuY29sLW1kLTcuaGFuZHNvbnRhYmxlLC5jb2wtbWQtOC5oYW5kc29udGFibGUsLmNvbC1tZC05LmhhbmRzb250YWJsZSAuY29sLXNtLTEuaGFuZHNvbnRhYmxlLC5jb2wtc20tMTAuaGFuZHNvbnRhYmxlLC5jb2wtc20tMTEuaGFuZHNvbnRhYmxlLC5jb2wtc20tMTIu''@;'; put 'put ''aGFuZHNvbnRhYmxlLC5jb2wtc20tMi5oYW5kc29udGFibGUsLmNvbC1zbS0zLmhhbmRzb250YWJsZSwuY29sLXNtLTQuaGFuZHNvbnRhYmxlLC5jb2wtc20tNS5oYW5kc29udGFibGUsLmNvbC1zbS02LmhhbmRzb250YWJsZSwuY29sLXNtLTcuaGFuZHNvbnRhYmxlLC5jb2wtc20tOC5oYW5k''@;'; put 'put ''c29udGFibGUsLmNvbC1zbS05LmhhbmRzb250YWJsZSAuY29sLXhzLTEuaGFuZHNvbnRhYmxlLC5jb2wteHMtMTAuaGFuZHNvbnRhYmxlLC5jb2wteHMtMTEuaGFuZHNvbnRhYmxlLC5jb2wteHMtMTIuaGFuZHNvbnRhYmxlLC5jb2wteHMtMi5oYW5kc29udGFibGUsLmNvbC14cy0zLmhhbmRz''@;'; put 'put ''b250YWJsZSwuY29sLXhzLTQuaGFuZHNvbnRhYmxlLC5jb2wteHMtNS5oYW5kc29udGFibGUsLmNvbC14cy02LmhhbmRzb250YWJsZSwuY29sLXhzLTcuaGFuZHNvbnRhYmxlLC5jb2wteHMtOC5oYW5kc29udGFibGUsLmNvbC14cy05LmhhbmRzb250YWJsZXtwYWRkaW5nLWxlZnQ6MDtwYWRk''@;'; put 'put ''aW5nLXJpZ2h0OjB9LmhhbmRzb250YWJsZSAudGFibGUtc3RyaXBlZD50Ym9keT50cjpudGgtb2YtdHlwZShldmVuKXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhhbmRzb250YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5oaWRle2Rpc3BsYXk6bm9uZX0uaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC53dEhpZGVye3dpZHRoOjB9LmhhbmRzb250YWJsZSAud3RTcHJlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDowO2hlaWdodDphdXRvfS5oYW5kc29udGFibGUgdGFibGUsLmhhbmRzb250YWJsZSB0Ym9k''@;'; put 'put ''eSwuaGFuZHNvbnRhYmxlIHRoZWFkLC5oYW5kc29udGFibGUgdGQsLmhhbmRzb250YWJsZSB0aCwuaGFuZHNvbnRhYmxlIGlucHV0LC5oYW5kc29udGFibGUgdGV4dGFyZWEsLmhhbmRzb250YWJsZSBkaXZ7Ym94LXNpemluZzpjb250ZW50LWJveDstd2Via2l0LWJveC1zaXppbmc6Y29udGVu''@;'; put 'put ''dC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5oYW5kc29udGFibGUgaW5wdXQsLmhhbmRzb250YWJsZSB0ZXh0YXJlYXttaW4taGVpZ2h0OmluaXRpYWx9LmhhbmRzb250YWJsZSB0YWJsZS5odENvcmV7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlci1zcGFjaW5nOjA7''@;'; put 'put ''bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjA7dGFibGUtbGF5b3V0OmZpeGVkO3dpZHRoOjA7b3V0bGluZS13aWR0aDowO2N1cnNvcjpkZWZhdWx0O21heC13aWR0aDpub25lO21heC1oZWlnaHQ6bm9uZX0uaGFuZHNvbnRhYmxlIGNvbCwuaGFuZHNvbnRhYmxlIGNvbC5yb3dIZWFkZXJ7d2lkdGg6''@;'; put 'put ''NTBweH0uaGFuZHNvbnRhYmxlIHRoLC5oYW5kc29udGFibGUgdGR7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7aGVpZ2h0OjIycHg7ZW1wdHktY2VsbHM6c2hvdzts''@;'; put 'put ''aW5lLWhlaWdodDoyMXB4O3BhZGRpbmc6MCA0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO3ZlcnRpY2FsLWFsaWduOnRvcDtvdmVyZmxvdzpoaWRkZW47b3V0bGluZS13aWR0aDowO3doaXRlLXNwYWNlOnByZS13cmFwfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGgsW2Rpcj1ydGxdLmhhbmRz''@;'; put 'put ''b250YWJsZSB0ZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY31bZGly''@;'; put 'put ''PXJ0bF0uaGFuZHNvbnRhYmxlIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9LmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlIHRoOm50aC1jaGlsZCgyKSwuaGFuZHNvbnRhYmxlIHRkOmZpcnN0LW9mLXR5''@;'; put 'put ''cGV7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZCxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoOm50aC1jaGlsZCgyKSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRkOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXJpZ2h0OjFweCBz''@;'; put 'put ''b2xpZCAjY2NjfS5oYW5kc29udGFibGUgLmh0X2Nsb25lX3RvcCB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRfY2xvbmVfdG9wIHRoOm50aC1jaGlsZCgyKXtib3JkZXItcmln''@;'; put 'put ''aHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlLmh0Um93SGVhZGVycyB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5odFJvd0hlYWRlcnMgdGhlYWQgdHIgdGg6''@;'; put 'put ''bnRoLWNoaWxkKDIpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjY30uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVT''@;'; put 'put ''dGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGUgdGJvZHkgdHIgdGgsLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRfY2xvbmVfdG9wKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGls''@;'; put 'put ''ZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGUgdGJvZHkgdHIgdGgsW2Rpcj1ydGxdLmh0X21hc3Rlcjpu''@;'; put 'put ''b3QoLmlubmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRfY2xvbmVfdG9wKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY30uaHRfbWFzdGVyOm5v''@;'; put 'put ''dCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmh0X21h''@;'; put 'put ''c3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKSB0aGVhZCB0ci5sYXN0Q2hpbGQgdGgsLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyLmxhc3RDaGlsZCB0aHti''@;'; put 'put ''b3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRzb250YWJsZSB0aHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Y29sb3I6IzIyMjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5oYW5kc29udGFibGUgdGhlYWQgdGh7cGFkZGluZzowfS5oYW5k''@;'; put 'put ''c29udGFibGUgdGguYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2NjY30uaGFuZHNvbnRhYmxlIHRoZWFkIHRoIC5yZWxhdGl2ZXtwYWRkaW5nOjJweCA0cHh9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxLjF9LmhhbmRzb250''@;'; put 'put ''YWJsZSAud3RCb3JkZXJ7cG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjB9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY3VycmVudHt6LWluZGV4OjEwfS5oYW5kc29udGFibGUgLnd0Qm9yZGVy''@;'; put 'put ''LmFyZWF7ei1pbmRleDo4fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmZpbGx7ei1pbmRleDo2fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmNvcm5lcntmb250LXNpemU6MDtjdXJzb3I6Y3Jvc3NoYWlyfS5odF9jbG9uZV9tYXN0ZXJ7ei1pbmRleDoxMDB9Lmh0X2Nsb25lX2lubGluZV9zdGFy''@;'; put 'put ''dHt6LWluZGV4OjEyMH0uaHRfY2xvbmVfYm90dG9te3otaW5kZXg6MTMwfS5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lcnt6LWluZGV4OjE1MH0uaHRfY2xvbmVfdG9we3otaW5kZXg6MTYwfS5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lcnt6LWluZGV4OjE4MH0u''@;'; put 'put ''aGFuZHNvbnRhYmxlIGNvbC5oaWRkZW57d2lkdGg6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSB0ci5oaWRkZW4sLmhhbmRzb250YWJsZSB0ci5oaWRkZW4gdGQsLmhhbmRzb250YWJsZSB0ci5oaWRkZW4gdGh7ZGlzcGxheTpub25lfS5odF9tYXN0ZXIsLmh0X2Nsb25lX2lubGluZV9zdGFy''@;'; put 'put ''dCwuaHRfY2xvbmVfdG9wLC5odF9jbG9uZV9ib3R0b217b3ZlcmZsb3c6aGlkZGVufS5odF9tYXN0ZXIgLnd0SG9sZGVye292ZXJmbG93OmF1dG99LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRoZWFkLC5oYW5kc29udGFibGUgLmh0X21hc3RlciB0ciB0aCwuaGFuZHNvbnRhYmxlIC5odF9j''@;'; put 'put ''bG9uZV9pbmxpbmVfc3RhcnQgdGhlYWR7dmlzaWJpbGl0eTpoaWRkZW59Lmh0X2Nsb25lX3RvcCAud3RIb2xkZXIsLmh0X2Nsb25lX2lubGluZV9zdGFydCAud3RIb2xkZXIsLmh0X2Nsb25lX2JvdHRvbSAud3RIb2xkZXJ7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGV7dG91Y2gtYWN0''@;'; put 'put ''aW9uOm1hbmlwdWxhdGlvbjtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sT3h5Z2VuLFVidW50dSxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzcz''@;'; put 'put ''NzM3fS5oYW5kc29udGFibGUgYXtjb2xvcjojMTA0YWNjfS5oYW5kc29udGFibGUuaHRBdXRvU2l6ZXt2aXNpYmlsaXR5OmhpZGRlbjtsZWZ0Oi05OTAwMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotOTkwMDBweH0uaGFuZHNvbnRhYmxlIHRkLmh0SW52YWxpZHtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OiNmZjRjNDIhaW1wb3J0YW50fS5oYW5kc29udGFibGUgdGQuaHROb1dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS5ob3QtZGlzcGxheS1saWNlbnNlLWluZm97Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLE94eWdlbixVYnVudHUs''@;'; put 'put ''SGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzM3MzczNztwYWRkaW5nOjVweCAwIDNweDt0ZXh0LWFsaWduOmxlZnR9LmhvdC1kaXNwbGF5LWxpY2Vuc2UtaW5mbyBhe2NvbG9yOiMxMDRhY2M7Zm9udC1zaXplOjEw''@;'; put 'put ''cHh9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtjdXJzb3I6Y29sLXJlc2l6ZTt6LWluZGV4OjIxMDt3aWR0aDo1cHg7aGVpZ2h0OjI1cHh9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplcntwb3NpdGlvbjphYnNvbHV0ZTts''@;'; put 'put ''ZWZ0OjA7Y3Vyc29yOnJvdy1yZXNpemU7ei1pbmRleDoyMTA7aGVpZ2h0OjVweDt3aWR0aDo1MHB4fS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXI6aG92ZXIsLmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplci5hY3RpdmUsLmhhbmRzb250YWJsZSAubWFudWFsUm93''@;'; put 'put ''UmVzaXplcjpob3ZlciwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMzNGE5ZGJ9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplckd1aWRle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OnVuc2V0O3RvcDowO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6IzM0YTlkYjtkaXNwbGF5Om5vbmU7d2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IGRhc2hlZCAjNzc3O2JvcmRlci1sZWZ0Om5vbmU7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDp1bnNldH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyR3VpZGV7''@;'; put 'put ''bGVmdDp1bnNldDtib3JkZXItbGVmdDoxcHggZGFzaGVkICM3Nzc7Ym9yZGVyLXJpZ2h0Om5vbmU7bWFyZ2luLXJpZ2h0OjVweDttYXJnaW4tbGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNpemVyR3VpZGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6IzM0YTlkYjtkaXNwbGF5Om5vbmU7aGVpZ2h0OjA7Ym9yZGVyLWJvdHRvbToxcHggZGFzaGVkICM3Nzc7bWFyZ2luLXRvcDo1cHh9LmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplckd1aWRlLmFjdGl2ZSwuaGFuZHNvbnRhYmxlIC5tYW51YWxSb3dSZXNp''@;'; put 'put ''emVyR3VpZGUuYWN0aXZle2Rpc3BsYXk6YmxvY2s7ei1pbmRleDoyMDl9LmhhbmRzb250YWJsZSAuY29sdW1uU29ydGluZ3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5jb2x1bW5Tb3J0aW5nLnNvcnRBY3Rpb246aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJz''@;'; put 'put ''b3I6cG9pbnRlcn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YmVmb3Jle3RvcDo1MCU7bWFyZ2luLXRvcDotNnB4O3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi05cHg7bGVmdDp1bnNldDtjb250ZW50''@;'; put 'put ''OiIiO2hlaWdodDoxMHB4O3dpZHRoOjVweDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbi14OnJpZ2h0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpiZWZvcmV7''@;'; put 'put ''cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjA7bGVmdDotOXB4O3JpZ2h0OnVuc2V0O2JhY2tncm91bmQtcG9zaXRpb24teDpsZWZ0fS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5hc2NlbmRpbmc6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRh''@;'; put 'put ''dGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBb0NBTUFBQURKN3lycEFBQUFLbEJNVkVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLRTg2SUFBQUFEWFJTVGxNQUJCRW1SR3BybEpXNzJlNzd0''@;'; put 'put ''VGtUS3dBQUFGTkpSRUZVZUFIdHpqa1NnQ0FVQk5IUGdzb3k5Nyt1bEdYUnFKRTVMK3hreG9ZdDJVZHNMYjVicUZJTnorYUx1dUxuNXJJdTJSa08zZlpwV0VOaW1OZ2l3NmlCWVJUUE1MSmpHRnhRWjFoeHhiL3hCSTFxQzhrMzlDZEtBQUFBQUVsRlRrU3VRbUNDKX0uaGFuZHNvbnRhYmxlIHNw''@;'; put 'put ''YW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuZGVzY2VuZGluZzpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFvQ0FNQUFBREo3eXJwQUFBQUtsQk1WRVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtFODZJQUFBQURYUlNUbE1BQkJFbVJHcHJsSlc3MmU3N3RUa1RLd0FBQUZKSlJFRlVlQUh0emprU2dDQVFSTkZtUVlVWjduOWRLVXZydTBUbXZQQW4zYnIwUWZnZFo1eHg2eCtyUW4yM0dxVFlucTFGRGNudXpaSU8yV21lZFZxSVJW''@;'; put 'put ''eGdHS0V5ak5nWVJqS0drWjFoRklaM0k3MEx5TTBWdFU4QUFBQUFTVVZPUks1Q1lJST0pfS5odEdob3N0VGFibGUgLmh0Q29yZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlzYWJsZWQpOmFmdGVye2NvbnRlbnQ6IioiO2Rpc3BsYXk6aW5saW5lLWJsb2Nr''@;'; put 'put ''O3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctcmlnaHQ6MjBweH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTEsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTIsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTMsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTQsLmhhbmRzb250''@;'; put 'put ''YWJsZSB0ZC5hcmVhLTUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTYsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTd7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0ZC5hcmVhOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6''@;'; put 'put ''YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS02OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7Y29u''@;'; put 'put ''dGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JvdHRvbTotMTAwJSBcCTtiYWNrZ3JvdW5kOiMwMDVlZmZ9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLCgtbXMtaGlnaC1jb250cmFzdDogbm9uZSl7LmhhbmRzb250YWJsZSB0ZC5hcmVhOmJl''@;'; put 'put ''Zm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTI6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3JlLC5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS02OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7Ym90dG9tOi0xMDAlfX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3Jle29wYWNpdHk6LjF9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTE6YmVmb3Jle29wYWNpdHk6LjJ9LmhhbmRzb250YWJs''@;'; put 'put ''ZSB0ZC5hcmVhLTI6YmVmb3Jle29wYWNpdHk6LjI3fS5oYW5kc29udGFibGUgdGQuYXJlYS0zOmJlZm9yZXtvcGFjaXR5Oi4zNX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNDpiZWZvcmV7b3BhY2l0eTouNDF9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTU6YmVmb3Jle29wYWNpdHk6LjQ3fS5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS02OmJlZm9yZXtvcGFjaXR5Oi41NH0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNzpiZWZvcmV7b3BhY2l0eTouNTh9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxpZ2h0LC5oYW5kc29udGFibGUgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOiNkY2RjZGN9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6IzhlYjBlNztjb2xvcjojMDAwfS5oYW5kc29udGFibGVJbnB1dHtib3JkZXI6''@;'; put 'put ''bm9uZTtvdXRsaW5lLXdpZHRoOjA7bWFyZ2luOjA7cGFkZGluZzoxcHggNXB4IDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDoyMXB4O2ZvbnQtc2l6ZTppbmhlcml0O2JveC1zaGFkb3c6MCAwIDAgMnB4ICM1MjkyZjcgaW5zZXQ7cmVzaXplOm5vbmU7ZGlzcGxheTpibG9jaztj''@;'; put 'put ''b2xvcjojMDAwO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhhbmRzb250YWJsZUlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5odFNlbGVjdEVkaXRvcnstd2Via2l0''@;'; put 'put ''LWFwcGVhcmFuY2U6bWVudWxpc3QtYnV0dG9uIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDphdXRvfS5odFNlbGVjdEVkaXRvcjpmb2N1c3tvdXRsaW5lOm5vbmV9LmhhbmRzb250YWJsZSAuaHREaW1tZWR7Y29sb3I6Izc3N30uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnV7cG9z''@;'; put 'put ''aXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDphZnRlcntjb250ZW50OiJcMjViNiI7Y29sb3I6Izc3Nztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHg7Zm9udC1zaXplOjlweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnUgOmFmdGVye2NvbnRlbnQ6''@;'; put 'put ''IiJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDpiZWZvcmV7Y29udGVudDoiXDI1YzAiO2NvbG9yOiM3Nzc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1cHg7Zm9udC1zaXplOjlweH0uaGFuZHNvbnRhYmxlIC5odExlZnR7dGV4dC1hbGlnbjpsZWZ0fS5oYW5kc29udGFibGUg''@;'; put 'put ''Lmh0Q2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5oYW5kc29udGFibGUgLmh0UmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uaGFuZHNvbnRhYmxlIC5odEp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5fS5oYW5kc29udGFibGUgLmh0VG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uaGFuZHNvbnRhYmxl''@;'; put 'put ''IC5odE1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRCb3R0b217dmVydGljYWwtYWxpZ246Ym90dG9tfS5oYW5kc29udGFibGUgLmh0UGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uaGFuZHNvbnRhYmxlLmxpc3Rib3h7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5s''@;'; put 'put ''aXN0Ym94IC5odF9tYXN0ZXIgdGFibGV7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtiYWNrZ3JvdW5kOndoaXRlfS5oYW5kc29udGFibGUubGlzdGJveCB0aCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6Zmlyc3QtY2hpbGQgdGgsLmhhbmRzb250YWJs''@;'; put 'put ''ZS5saXN0Ym94IHRyOmxhc3QtY2hpbGQgdGgsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmZpcnN0LWNoaWxkIHRkLC5oYW5kc29udGFibGUubGlzdGJveCB0ZHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS5oYW5kc29udGFibGUubGlzdGJveCB0aCwuaGFuZHNvbnRhYmxl''@;'; put 'put ''Lmxpc3Rib3ggdGR7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmhhbmRzb250YWJsZS5saXN0Ym94IHRkLmh0RGltbWVke2N1cnNvcjpkZWZhdWx0O2NvbG9yOmluaGVyaXQ7Zm9udC1zdHlsZTppbmhlcml0fS5oYW5kc29udGFibGUubGlzdGJveCAud3RCb3Jk''@;'; put 'put ''ZXJ7dmlzaWJpbGl0eTpoaWRkZW59LmhhbmRzb250YWJsZS5saXN0Ym94IHRyIHRkLmN1cnJlbnQsLmhhbmRzb250YWJsZS5saXN0Ym94IHRyOmhvdmVyIHRke2JhY2tncm91bmQ6I2VlZX0uaHRfZWRpdG9yX2hpZGRlbnt6LWluZGV4Oi0xfS5odF9lZGl0b3JfdmlzaWJsZXt6LWluZGV4OjIw''@;'; put 'put ''MH0uaGFuZHNvbnRhYmxlIHRkLmh0U2VhcmNoUmVzdWx0e2JhY2tncm91bmQ6I2ZjZWRkOTtjb2xvcjojNTgzNzA3fS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7bGVmdDp1bnNl''@;'; put 'put ''dDtyaWdodDo1cHg7Ym9yZGVyOjFweCBzb2xpZCAjQTZBNkE2O2xpbmUtaGVpZ2h0OjhweDtjb2xvcjojMjIyO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTBweDt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAwIDAgNnB4ICNlZWU7YmFj''@;'; put 'put ''a2dyb3VuZDojZWVlO3RleHQtYWxpZ246Y2VudGVyfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmNvbGxhcHNpYmxlSW5kaWNhdG9ye3JpZ2h0OnVuc2V0O2xlZnQ6NXB4fS5oYW5kc29udGFibGUubW9iaWxlLC5oYW5kc29udGFibGUubW9iaWxlIC53dEhvbGRlcnstd2Via2l0LXRvdWNoLWNh''@;'; put 'put ''bGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uaGFuZHNvbnRhYmxlLm1vYmlsZSAuaGFuZHNvbnRhYmxlSW5w''@;'; put 'put ''dXQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAycHggIzUyOTJmNyBpbnNldDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0udG9wU2VsZWN0aW9uSGFuZGxlOm5vdCguaHRfbWFzdGVyIC50b3BTZWxlY3Rpb25IYW5kbGUpLC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYTpub3QoLmh0X21hc3Rl''@;'; put 'put ''ciAudG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEpe3otaW5kZXg6OTk5OX0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUsLmhhbmRzb250YWJsZSAudG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEsLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLC5oYW5kc29u''@;'; put 'put ''dGFibGUgLmJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhe2xlZnQ6LTEwMDAwcHg7cmlnaHQ6dW5zZXQ7dG9wOi0xMDAwMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhhbmRsZSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0''@;'; put 'put ''QXJlYSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUsW2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWF7cmlnaHQ6LTEwMDAwcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmhpZGUtdHdlZW57YW5pbWF0aW9u''@;'; put 'put ''Om9wYWNpdHktaGlkZSAuM3M7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczstd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHN9LmhhbmRzb250YWJsZS5zaG93LXR3ZWVue2FuaW1hdGlvbjpvcGFjaXR5LXNob3cgLjNzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7''@;'; put 'put ''LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS8qIQogKiBQaWthZGF5CiAqIENvcHlyaWdodCDCqSAyMDE0IERhdmlkIEJ1c2hlbGwgfCBCU0QgJiBNSVQgbGljZW5zZSB8IGh0dHBzOi8vZGJ1c2hlbGwuY29tLwogKi8ucGlrYS1zaW5nbGV7ei1pbmRleDo5OTk5O2Rpc3Bs''@;'; put 'put ''YXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b20tY29sb3I6I2JiYjtmb250LWZhbWlseTpIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0ucGlrYS1zaW5n''@;'; put 'put ''bGU6YmVmb3JlLC5waWthLXNpbmdsZTphZnRlcntjb250ZW50OiIgIjtkaXNwbGF5OnRhYmxlfS5waWthLXNpbmdsZTphZnRlcntjbGVhcjpib3RofS5waWthLXNpbmdsZS5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5waWthLXNpbmdsZS5pcy1ib3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtib3gt''@;'; put 'put ''c2hhZG93OjAgNXB4IDE1cHggLTVweCAjMDAwMDAwODB9LnBpa2EtbGVuZGFye2Zsb2F0OmxlZnQ7d2lkdGg6MjQwcHg7bWFyZ2luOjhweH0ucGlrYS10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcn0ucGlrYS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3Np''@;'; put 'put ''dGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTk7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3BhZGRpbmc6NXB4IDNweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBpa2EtdGl0bGUgc2VsZWN0e2N1cnNvcjpw''@;'; put 'put ''b2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5ODttYXJnaW46MDtsZWZ0OjA7dG9wOjVweDtvcGFjaXR5OjB9LnBpa2EtcHJldiwucGlrYS1uZXh0e2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7b3V0bGluZTpub25lO2JvcmRlcjowO3Bh''@;'; put 'put ''ZGRpbmc6MDt3aWR0aDoyMHB4O2hlaWdodDozMHB4O3RleHQtaW5kZW50OjIwcHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpu''@;'; put 'put ''by1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjc1JSA3NSU7b3BhY2l0eTouNX0ucGlrYS1wcmV2OmhvdmVyLC5waWthLW5leHQ6aG92ZXJ7b3BhY2l0eToxfS5waWthLXByZXYsLmlzLXJ0bCAucGlrYS1uZXh0e2Zsb2F0OmxlZnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7''@;'; put 'put ''YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFlQ0FZQUFBQXNFajVyQUFBQVVrbEVRVlI0MnUzVk1Rb0FJQkFEUWY4UGdqK09EOWhHMkN0T05KQjJ5bVFrS2UwSGJ3QVAweHVjRGlRV0FSSVRJREVCRW5NZ01ROFM4K0FxQklsNmtLZ0hpWHFRcUFlSmVwQm8vejM4Si9VMHVB''@;'; put 'put ''SGxhQmtCbDlJNEd3QUFBQUJKUlU1RXJrSmdnZz09KX0ucGlrYS1uZXh0LC5pcy1ydGwgLnBpa2EtcHJldntmbG9hdDpyaWdodDtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQWVDQVlBQUFBc0VqNXJBQUFB''@;'; put 'put ''VTBsRVFWUjQydTNWT3dvQU1BZ0UwZHdmQW5OalUyNmJZa0JDRkd3ZmlMOVZWV29PK0JKNEdmM2d0c0VLS29GQk5UQ29DQVlWd2FBaUdOUUdNVUhNa2pHYmdqazJtSU9OdVhvMG5DOFhuQ2YxSlhnQXJWSVpBUWg1VEtZQUFBQUFTVVZPUks1Q1lJST0pfS5waWthLXByZXYuaXMtZGlzYWJsZWQs''@;'; put 'put ''LnBpa2EtbmV4dC5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi4yfS5waWthLXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9ja30ucGlrYS10YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO2JvcmRlcjowfS5waWthLXRh''@;'; put 'put ''YmxlIHRoLC5waWthLXRhYmxlIHRke3dpZHRoOjE0LjI4NTcxNDI4NTclO3BhZGRpbmc6MH0ucGlrYS10YWJsZSB0aHtjb2xvcjojOTk5O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjI1cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5waWthLWJ1dHRvbntjdXJzb3I6''@;'; put 'put ''cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lOm5vbmU7Ym9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTtwYWRkaW5nOjVweDtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE1''@;'; put 'put ''cHg7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kOiNmNWY1ZjU7aGVpZ2h0OmluaXRpYWx9LnBpa2Etd2Vla3tmb250LXNpemU6MTFweDtjb2xvcjojOTk5fS5pcy10b2RheSAucGlrYS1idXR0b257Y29sb3I6IzNhZjtmb250LXdlaWdodDo3MDB9LmlzLXNlbGVjdGVkIC5waWthLWJ1dHRv''@;'; put 'put ''biwuaGFzLWV2ZW50IC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOiMzM2FhZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzE3OGZlNTtib3JkZXItcmFkaXVzOjNweH0uaGFzLWV2ZW50IC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiMwMDVk''@;'; put 'put ''YTk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAzcHggIzAwNzZjOX0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9uLC5pcy1pbnJhbmdlIC5waWthLWJ1dHRvbntiYWNrZ3JvdW5kOiNENUU5Rjd9LmlzLXN0YXJ0cmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNkNCMzFE''@;'; put 'put ''O2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjNweH0uaXMtZW5kcmFuZ2UgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojMzNhYWZmO2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjNweH0uaXMtZGlzYWJsZWQgLnBpa2EtYnV0dG9ue3BvaW50ZXItZXZlbnRz''@;'; put 'put ''Om5vbmU7Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6Izk5OTtvcGFjaXR5Oi4zfS5pcy1vdXRzaWRlLWN1cnJlbnQtbW9udGggLnBpa2EtYnV0dG9ue2NvbG9yOiM5OTk7b3BhY2l0eTouM30uaXMtc2VsZWN0aW9uLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHR9LnBp''@;'; put 'put ''a2EtYnV0dG9uOmhvdmVyLC5waWthLXJvdy5waWNrLXdob2xlLXdlZWs6aG92ZXIgLnBpa2EtYnV0dG9ue2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZmY4MDAwO2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjNweH0ucGlrYS10YWJsZSBhYmJye2JvcmRlci1ib3R0b206bm9uZTtjdXJz''@;'; put 'put ''b3I6aGVscH0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFycm93e2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxMHB4O2NvbG9yOiNlZWU7Y3Vyc29yOmRlZmF1bHQ7d2lkdGg6MTZweDt0ZXh0LWFsaWduOmNlbnRlcn1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21wbGV0ZUFy''@;'; put 'put ''cm93e2Zsb2F0OmxlZnR9LmhhbmRzb250YWJsZSB0ZCAuaHRBdXRvY29tcGxldGVBcnJvdzpob3Zlcntjb2xvcjojNzc3fS5oYW5kc29udGFibGUgdGQuYXJlYSAuaHRBdXRvY29tcGxldGVBcnJvd3tjb2xvcjojZDNkM2QzfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0Lm5vVmFsdWV7b3BhY2l0eTouNX0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJMYWJlbHtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29y''@;'; put 'put ''OnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVyTGFiZWwuZnVsbFdpZHRoe3dpZHRoOjEwMCV9LmhhbmRzb250YWJsZSAuaHRDb21tZW50Q2VsbHtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxs''@;'; put 'put ''OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtsZWZ0OnVuc2V0O2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOjZweCBzb2xpZCBibGFja31bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5o''@;'; put 'put ''dENvbW1lbnRDZWxsOmFmdGVye2xlZnQ6MDtyaWdodDp1bnNldDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0Om5vbmV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudHN7ZGlzcGxheTpub25lO3otaW5kZXg6MTA1OTtwb3NpdGlvbjphYnNvbHV0''@;'; put 'put ''ZX0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWF7Ym94LXNoYWRvdzojMDAwMDAwMWUgMCAxcHggM3B4LCMwMDAwMDAzZCAwIDFweCAycHg7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjpub25lO2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjY2NjO2JvcmRlci1yaWdo''@;'; put 'put ''dDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjt3aWR0aDoyMTVweDtoZWlnaHQ6OTBweDtmb250LXNpemU6MTJweDtwYWRkaW5nOjVweDtvdXRsaW5lOjBweCFpbXBvcnRhbnQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9W2Rpcj1ydGxdLmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVu''@;'; put 'put ''dFRleHRBcmVhe2JvcmRlci1yaWdodDozcHggc29saWQgI2NjYztib3JkZXItbGVmdDpub25lfS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRUZXh0QXJlYTpmb2N1c3tib3gtc2hhZG93OiMwMDAwMDAxZSAwIDFweCAzcHgsIzAwMDAwMDNkIDAgMXB4IDJweCxpbnNldCAwIDAgMCAx''@;'; put 'put ''cHggIzUyOTJmNztib3JkZXItbGVmdDozcHggc29saWQgIzUyOTJmNztib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWE6Zm9jdXN7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjNTI5MmY3O2JvcmRlci1sZWZ0Om5vbmV9Lyoh''@;'; put 'put ''CiAqIEhhbmRzb250YWJsZSBDb250ZXh0TWVudQogKi8uaHRDb250ZXh0TWVudTpub3QoLmh0R2hvc3RUYWJsZSl7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA2MH0uaHRDb250ZXh0TWVudSAuaHRfY2xvbmVfdG9wLC5odENvbnRleHRNZW51IC5odF9jbG9uZV9i''@;'; put 'put ''b3R0b20sLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRDb250ZXh0TWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHRDb250''@;'; put 'put ''ZXh0TWVudSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1y''@;'; put 'put ''dGxdLmh0Q29udGV4dE1lbnUgLmh0X21hc3RlciB0YWJsZS5odENvcmV7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweDtib3JkZXItbGVmdC13aWR0aDoycHh9Lmh0Q29udGV4dE1lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRke2Jh''@;'; put 'put ''Y2tncm91bmQ6d2hpdGU7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxk''@;'; put 'put ''e2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXIt''@;'; put 'put ''bGVmdC13aWR0aDowfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMzMjMyMzJ9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuY3VycmVudCwuaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC56ZXJv''@;'; put 'put ''Y2xpcGJvYXJkLWlzLWhvdmVye2JhY2tncm91bmQ6I2YzZjNmM30uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hlaWdodDowO3BhZGRpbmc6MDtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJs''@;'; put 'put ''ZSB0Ym9keSB0ciB0ZC5odERpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uaHRDb250ZXh0TWVudSB0YWJsZSB0''@;'; put 'put ''Ym9keSB0ci5odEhpZGRlbntkaXNwbGF5Om5vbmV9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgLmh0SXRlbVdyYXBwZXJ7bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6NnB4fVtkaXI9cnRsXS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFw''@;'; put 'put ''cGVye21hcmdpbi1yaWdodDoxMHB4O21hcmdpbi1sZWZ0OjZweH0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCBkaXYgc3Bhbi5zZWxlY3RlZHttYXJnaW4tdG9wOi0ycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7cmlnaHQ6MH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSB0''@;'; put 'put ''YWJsZSB0Ym9keSB0ciB0ZCBkaXYgc3Bhbi5zZWxlY3RlZHtyaWdodDo0cHg7bGVmdDowfS5odENvbnRleHRNZW51IC5odF9tYXN0ZXIgLnd0SG9sZGVye292ZXJmbG93OmhpZGRlbn10ZXh0YXJlYS5IYW5kc29udGFibGVDb3B5UGFzdGV7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RvcDow''@;'; put 'put ''IWltcG9ydGFudDtyaWdodDoxMDAlIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW47b3BhY2l0eTowO291dGxpbmU6MCBub25lIWltcG9ydGFudH0vKiEKICogSGFuZHNvbnRhYmxlIERyb3Bkb3duTWVudQogKi8uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBle2JhY2tncm91bmQ6I2VlZTtib3Jk''@;'; put 'put ''ZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkICNiYmI7Y29sb3I6I2JiYjtmb250LXNpemU6OXB4O2xpbmUtaGVpZ2h0OjlweDtwYWRkaW5nOjJweDttYXJnaW46M3B4IDFweCAwIDVweDtmbG9hdDpyaWdodH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5jaGFuZ2VUeXBle2Zsb2F0Omxl''@;'; put 'put ''ZnR9LmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZTpiZWZvcmV7Y29udGVudDoiXDI1YmMgICJ9LmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICM3Nzc7Y29sb3I6Izc3NztjdXJzb3I6cG9pbnRlcn0uaHREcm9wZG93bk1lbnU6bm90KC5odEdob3N0VGFi''@;'; put 'put ''bGUpe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwNjB9Lmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV90b3AsLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9ib3R0b20sLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmh0RHJvcGRvd25NZW51''@;'; put 'put ''IC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciwuaHREcm9wZG93bk1lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHREcm9wZG93bk1lbnUgdGFibGUuaHRDb3Jle2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1zdHlsZTpzb2xp''@;'; put 'put ''ZDtib3JkZXItdG9wLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXdpZHRoOjJweDtib3JkZXItbGVmdC13aWR0aDoxcHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjJweH1bZGlyPXJ0bF0uaHREcm9wZG93bk1lbnUgdGFibGUuaHRDb3Jle2JvcmRlci1yaWdodC13aWR0aDoxcHg7Ym9yZGVyLWxlZnQt''@;'; put 'put ''d2lkdGg6MnB4fS5odERyb3Bkb3duTWVudSAud3RCb3JkZXJ7dmlzaWJpbGl0eTpoaWRkZW59Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRke2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlk''@;'; put 'put ''ZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci1sZWZ0''@;'; put 'put ''LXdpZHRoOjB9W2Rpcj1ydGxdLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjB9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFs''@;'; put 'put ''O2NvbG9yOiMzMjMyMzJ9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmN1cnJlbnQsLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLnplcm9jbGlwYm9hcmQtaXMtaG92ZXJ7YmFja2dyb3VuZDojZTllOWU5fS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0''@;'; put 'put ''ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hlaWdodDowO3BhZGRpbmc6MDtjdXJzb3I6ZGVmYXVsdH0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZHtjb2xvcjojOTk5fS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0''@;'; put 'put ''ZC5odERpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0fS5odERyb3Bkb3duTWVudTpub3QoLmh0R2hvc3RUYWJsZSkgdGFibGUgdGJvZHkgdHIuaHRIaWRkZW57ZGlzcGxheTpub25lfS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0''@;'; put 'put ''ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tbGVmdDoxMHB4O21hcmdpbi1yaWdodDoxMHB4fVtkaXI9cnRsXS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tcmlnaHQ6MTBweDttYXJnaW4tbGVmdDoxMHB4fS5odERyb3Bkb3duTWVudSB0YWJs''@;'; put 'put ''ZSB0Ym9keSB0ciB0ZCBkaXYgc3Bhbi5zZWxlY3RlZHttYXJnaW4tdG9wOi0ycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7cmlnaHQ6MH1bZGlyPXJ0bF0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7cmlnaHQ6NHB4O2xlZnQ6MH0uaHRE''@;'; put 'put ''cm9wZG93bk1lbnUgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6aGlkZGVufS8qIQogKiBIYW5kc29udGFibGUgRmlsdGVycwogKi8uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEw''@;'; put 'put ''NzB9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV90b3AsLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV9ib3R0b20sLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9u''@;'; put 'put ''ZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUuaHRDb3Jle2JvcmRlcjoxcHggc29saWQgI2JiYjtib3Jk''@;'; put 'put ''ZXItYm90dG9tLXdpZHRoOjJweDtib3JkZXItcmlnaHQtd2lkdGg6MnB4fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAud3RCb3JkZXJ7dmlzaWJpbGl0eTpoaWRkZW59Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRke2JhY2tncm91bmQ6d2hpdGU7Ym9yZGVyLXdp''@;'; put 'put ''ZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdp''@;'; put 'put ''ZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci1sZWZ0LXdpZHRoOjB9W2Rpcj1ydGxdLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''LXdpZHRoOjB9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMzMjMyMzJ9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmN1cnJlbnQsLmh0RmlsdGVyc0NvbmRpdGlvbnNN''@;'; put 'put ''ZW51IHRhYmxlIHRib2R5IHRyIHRkLnplcm9jbGlwYm9hcmQtaXMtaG92ZXJ7YmFja2dyb3VuZDojZTllOWU5fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hlaWdodDowO3BhZGRpbmc6''@;'; put 'put ''MH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZHtjb2xvcjojOTk5fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojOTk5O2N1cnNvcjpkZWZh''@;'; put 'put ''dWx0fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tbGVmdDoxMHB4O21hcmdpbi1yaWdodDoxMHB4fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCBkaXYgc3Bhbi5zZWxlY3RlZHttYXJnaW4t''@;'; put 'put ''dG9wOi0ycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHh9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9tYXN0ZXIgLnd0SG9sZGVye292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5odE1lbnVGaWx0ZXJpbmd7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICNjY2M7aGVpZ2h0''@;'; put 'put ''OjEzNXB4O292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGFibGUgdGQuaHRDdXN0b21NZW51UmVuZGVyZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2N1cnNvcjphdXRvfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVMYWJlbHtmb250LXNpemU6Ljc1ZW19Lmhh''@;'; put 'put ''bmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUFjdGlvbkJhcnt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjNweH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uLmJvcmRlcntib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgI2NjYyFp''@;'; put 'put ''bXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUNvbmRpdGlvbiAuaHRVSUlucHV0e3BhZGRpbmc6MCAwIDVweH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51VmFsdWV7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICNjY2MhaW1wb3J0YW50fS5oYW5kc29udGFibGUgLmh0''@;'; put 'put ''RmlsdGVyc01lbnVWYWx1ZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoe3BhZGRpbmc6MH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29uZGl0aW9uIC5odFVJSW5wdXQgaW5wdXQsLmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFy''@;'; put 'put ''Y2ggaW5wdXR7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6Ljc1ZW07cGFkZGluZzo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCV9Lmh0VUlNdWx0aXBsZVNlbGVjdCAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdy15OnNjcm9sbH0uaGFuZHNvbnRhYmxlIC5o''@;'; put 'put ''dEZpbHRlcnNBY3RpdmUgLmNoYW5nZVR5cGV7Ym9yZGVyOjFweCBzb2xpZCAjNTA5MjcyO2NvbG9yOiMxODgwNGU7YmFja2dyb3VuZC1jb2xvcjojZDJlMGQ5fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGx7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MTBweH1bZGlyPXJ0bF0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxse21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjEwcHh9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsLC5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGx7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRVSUNsZWFyQWxsIGEs''@;'; put 'put ''LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbCBhe2ZvbnQtc2l6ZTouNzVlbX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0aW9uQ29udHJvbHN7dGV4dC1hbGlnbjpyaWdodH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0aW9uQ29udHJvbHN7dGV4dC1hbGlnbjpsZWZ0fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlcklucHV0e21hcmdpbjowIDVweCAwIDA7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDoxZW19W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXR7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDow''@;'; put 'put ''fS5oYW5kc29udGFibGUgLmh0VUlJbnB1dHtwYWRkaW5nOjNweCAwIDdweDtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcn0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQgaW5wdXR7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjFweCBzb2xpZCAjZDJkMWQxfS5oYW5kc29udGFi''@;'; put 'put ''bGUgLmh0VUlJbnB1dCBpbnB1dDpmb2N1c3tvdXRsaW5lOjB9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0SWNvbntwb3NpdGlvbjphYnNvbHV0ZX0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbiBpbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Y29sb3I6IzAwMDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTouNzVlbTtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjE5cHg7bWluLXdpZHRoOjY0cHh9LmhhbmRz''@;'; put 'put ''b250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b24gaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNiOWI5Yjl9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b25PS3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDoxMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlJbnB1''@;'; put 'put ''dC5odFVJQnV0dG9uT0t7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MTBweH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlucHV0e2JhY2tncm91bmQtY29sb3I6IzBmOWQ1ODtib3JkZXItY29sb3I6IzE4ODA0ZTtjb2xvcjojZmZmfS5oYW5kc29udGFibGUgLmh0''@;'; put 'put ''VUlJbnB1dC5odFVJQnV0dG9uT0sgaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiMxYTZmNDZ9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdHtjdXJzb3I6cG9pbnRlcjttYXJnaW4tYm90dG9tOjdweDtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0Q2FwdGlvbnti''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjFweCBzb2xpZCAjZDJkMWQxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOi43NWVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCAyMHB4IDNweCAxMHB4O3RleHQtb3ZlcmZsb3c6ZWxsaXBz''@;'; put 'put ''aXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0Q2FwdGlvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyOjFweCBzb2xpZCAjYjliOWI5fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3REcm9wZG93bjphZnRl''@;'; put 'put ''cntjb250ZW50OiJcMjViMiI7Zm9udC1zaXplOjdweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMHB4O3RvcDowfS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3REcm9wZG93bjpiZWZvcmV7Y29udGVudDoiXDI1YmMiO2ZvbnQtc2l6ZTo3cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBw''@;'; put 'put ''eDt0b3A6OHB4fS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaGFuZHNvbnRhYmxlIC5odENvcmV7Ym9yZGVyOm5vbmV9LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0IC5oYW5kc29udGFibGUgLmh0Q29yZSB0ZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1''@;'; put 'put ''ZjV9LmhhbmRzb250YWJsZSAuaHRVSU11bHRpcGxlU2VsZWN0U2VhcmNoIGlucHV0e2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMTtwYWRkaW5nOjNweH0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW97ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6MDtt''@;'; put 'put ''YXJnaW4tcmlnaHQ6NXB4O2hlaWdodDoxMDAlfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlSYWRpb3ttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo1cHh9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmhhbmRzb250YWJsZSAuaHRVSVJh''@;'; put 'put ''ZGlvPmlucHV0W3R5cGU9cmFkaW9de21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0Oi41ZXh9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRVSVJhZGlvPmlucHV0W3R5cGU9cmFkaW9de21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0Oi41ZXh9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlvIGxh''@;'; put 'put ''YmVse3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51T3BlcmF0b3Jze3BhZGRpbmctYm90dG9tOjVweH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRl''@;'; put 'put ''bkNvbHVtbjphZnRlciwuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtjb2xvcjojYmJiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7Zm9udC1zaXplOjVwdDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29s''@;'; put 'put ''dW1ue3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuQ29sdW1uOmFmdGVye3JpZ2h0OjFweDtjb250ZW50OiJcMjVjMCJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXJ7cmlnaHQ6aW5pdGlhbDtsZWZ0OjFweDtj''@;'; put 'put ''b250ZW50OiJcMjViNiJ9LmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmV7bGVmdDoxcHg7Y29udGVudDoiXDI1YjYifVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Db2x1bW46YmVmb3Jle3JpZ2h0OjFweDtsZWZ0OmluaXRpYWw7Y29udGVudDoi''@;'; put 'put ''XDI1YzAifS8qIQogKiBIYW5kc29udGFibGUgSGlkZGVuUm93cwogKi8uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlblJvdzpiZWZvcmUsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlblJvdzphZnRlcntjb2xvcjojYmJiO2ZvbnQtc2l6ZTo2cHQ7bGluZS1oZWlnaHQ6NnB0O3Bvc2l0''@;'; put 'put ''aW9uOmFic29sdXRlO2xlZnQ6MnB4fS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93LC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3d7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3Jle2NvbnRlbnQ6IlwyNWIyIjtib3R0''@;'; put 'put ''b206MnB4fS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29udGVudDoiXDI1YmMiO3RvcDoycHh9LmhhbmRzb250YWJsZS5odF9fc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmJlZm9yZUhpZGRlblJvdy5odF9faGlnaGxpZ2h0OmJlZm9yZSwuaGFuZHNvbnRhYmxlLmh0''@;'; put 'put ''X19zZWxlY3Rpb24tLXJvd3MgdGJvZHkgdGguYWZ0ZXJIaWRkZW5Sb3cuaHRfX2hpZ2hsaWdodDphZnRlcntjb2xvcjojZWVlfS5oYW5kc29udGFibGUgdGQuYWZ0ZXJIaWRkZW5Sb3cuZmlyc3RWaXNpYmxlUm93LC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3cuZmlyc3RWaXNpYmxl''@;'; put 'put ''Um93e2JvcmRlci10b3A6MXB4IHNvbGlkICNDQ0N9Lmh0Um93SGVhZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5lU3RhcnR+Lmh0X2Nsb25lX3RvcF9pbmxpbmVfc3RhcnRfY29ybmVyIHRoOm50aC1jaGlsZCgyKSwuaHRSb3dIZWFkZXJzIC5odF9tYXN0ZXIuaW5uZXJCb3JkZXJJ''@;'; put 'put ''bmxpbmVTdGFydH4uaHRfY2xvbmVfaW5saW5lX3N0YXJ0IHRkOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLWxlZnQ6MCBub25lfS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUuYWZ0ZXItc2VsZWN0aW9uLS1jb2x1bW5zIHRoZWFkIHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7''@;'; put 'put ''Y3Vyc29yOmdyYWJ9LmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMsLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3Jh''@;'; put 'put ''YmJpbmd9LmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgLm1hbnVhbENvbHVtblJlc2l6ZXJ7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZSAuaHRfX21hbnVh''@;'; put 'put ''bENvbHVtbk1vdmUtLWJhY2tsaWdodHtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MTAwJTtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZXtiYWNrZ3JvdW5kOiM3NTc1NzU7d2lkdGg6MnB4O3RvcDowO21hcmdpbi1pbmxpbmUtc3Rh''@;'; put 'put ''cnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDowO3otaW5kZXg6MjA1fS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7YmFja2dyb3VuZDojMzQzNDM0O2JhY2tncm91bmQ6cmdiYSg1Miw1Miw1MiwuMjUpO2Rpc3BsYXk6bm9uZTt6LWluZGV4OjIwNTtwb2lu''@;'; put 'put ''dGVyLWV2ZW50czpub25lfS5oYW5kc29udGFibGUub24tbW92aW5nLS1jb2x1bW5zLnNob3ctdWkgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLWNvbHVtbnMgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7ZGlzcGxheTpi''@;'; put 'put ''bG9ja30uaGFuZHNvbnRhYmxlIC53dEhpZGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUuYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdyYWJ9LmhhbmRzb250YWJsZS5odF9f''@;'; put 'put ''bWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MsLmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgdGJvZHkgdGguaHRfX2hpZ2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYmJpbmd9LmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1t''@;'; put 'put ''b3ZpbmctLXJvd3MgLm1hbnVhbFJvd1Jlc2l6ZXJ7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodHtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2Rpc3Bs''@;'; put 'put ''YXk6bm9uZX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tZ3VpZGVsaW5le2JhY2tncm91bmQ6Izc1NzU3NTtoZWlnaHQ6MnB4O2xlZnQ6MDttYXJnaW4tdG9wOi0xcHg7ei1pbmRleDoyMDV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodHtiYWNr''@;'; put 'put ''Z3JvdW5kOiMzNDM0MzQ7YmFja2dyb3VuZDpyZ2JhKDUyLDUyLDUyLC4yNSk7ZGlzcGxheTpub25lO3otaW5kZXg6MjA1O3BvaW50ZXItZXZlbnRzOm5vbmV9LmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLXJvd3Muc2hvdy11aSAuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZSwuaGFuZHNv''@;'; put 'put ''bnRhYmxlLm9uLW1vdmluZy0tcm93cyAuaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodHtkaXNwbGF5OmJsb2NrfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdOm5vdChbY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxs''@;'; put 'put ''XSk6YmVmb3Jle29wYWNpdHk6MH0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtbXVsdGlwbGVdOmJlZm9yZXtvcGFjaXR5Oi4xfS5oYW5kc29udGFibGUgdGJvZHkgdGRb''@;'; put 'put ''cm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0wXTpiZWZvcmV7b3BhY2l0eTouMX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVs''@;'; put 'put ''bHlTZWxlY3RlZE1lcmdlZENlbGwtMV06YmVmb3Jle29wYWNpdHk6LjJ9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTJdOmJlZm9yZXtvcGFjaXR5Oi4yN30uaGFuZHNv''@;'; put 'put ''bnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtM106YmVmb3Jle29wYWNpdHk6LjM1fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdo''@;'; put 'put ''bGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC00XTpiZWZvcmV7b3BhY2l0eTouNDF9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTVdOmJlZm9yZXtv''@;'; put 'put ''cGFjaXR5Oi40N30uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtNl06YmVmb3Jle29wYWNpdHk6LjU0fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3Mq''@;'; put 'put ''PWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC03XTpiZWZvcmV7b3BhY2l0eTouNTh9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOmFmdGVye3RvcDo1MCU7bWFyZ2luLXRvcDotMnB4O3Bvc2l0aW9uOmFic29s''@;'; put 'put ''dXRlO3JpZ2h0Oi0xNXB4O2xlZnQ6dW5zZXQ7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OnVuc2V0O2ZvbnQtc2l6ZTo4cHg7aGVpZ2h0OjhweDtsaW5lLWhlaWdodDoxLjE7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVh''@;'; put 'put ''ZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXJ7bGVmdDotMTVweDtyaWdodDp1bnNldDtwYWRkaW5nLXJpZ2h0OjVweDtwYWRkaW5nLWxlZnQ6dW5zZXR9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOmFmdGVye3RleHQtZGVjb3JhdGlvbjpub25lfS5oYW5kc29udGFi''@;'; put 'put ''bGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZ1tjbGFzc149c29ydC1dOmFmdGVyLC5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZ1tjbGFzcyo9IiBzb3J0LSJdOmFmdGVye2NvbnRlbnQ6IisifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1u''@;'; put 'put ''U29ydGluZy5zb3J0LTE6YWZ0ZXJ7Y29udGVudDoiMSJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMjphZnRlcntjb250ZW50OiIyIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC0zOmFmdGVye2NvbnRlbnQ6''@;'; put 'put ''IjMifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTQ6YWZ0ZXJ7Y29udGVudDoiNCJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNTphZnRlcntjb250ZW50OiI1In0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVh''@;'; put 'put ''ZGVyLmNvbHVtblNvcnRpbmcuc29ydC02OmFmdGVye2NvbnRlbnQ6IjYifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTc6YWZ0ZXJ7Y29udGVudDoiNyJ9Lmh0R2hvc3RUYWJsZSB0aCBkaXYgYnV0dG9uLmNoYW5nZVR5cGUrc3Bhbi5jb2xIZWFkZXIu''@;'; put 'put ''Y29sdW1uU29ydGluZzpub3QoLmluZGljYXRvckRpc2FibGVkKXtwYWRkaW5nLXJpZ2h0OjVweH0uaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmhpZGRlbkhlYWRlcjpub3QoOmZpcnN0LW9mLXR5cGUpe2Rpc3BsYXk6bm9uZX1AY2hhcnNldCAiVVRGLTgiOy5oYW5kc29udGFibGUgdGguaHRfbmVz''@;'; put 'put ''dGluZ0xldmVsc3t0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZy1sZWZ0OjdweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoLmh0X25lc3RpbmdMZXZlbHN7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXJpZ2h0OjdweH0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze2Rpc3Bs''@;'; put 'put ''YXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTFweDtyaWdodDp1bnNldH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze3JpZ2h0OjExcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnQgdGgg''@;'; put 'put ''ZGl2Lmh0X25lc3RpbmdMZXZlbHMsLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7cmlnaHQ6MTBweDtsZWZ0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0''@;'; put 'put ''aCBkaXYuaHRfbmVzdGluZ0xldmVscyxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0xldmVsc3tsZWZ0OjEwcHg7cmlnaHQ6dW5zZXR9LmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZl''@;'; put 'put ''bHtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVsX2VtcHR5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwcHg7aGVpZ2h0OjFweDtmbG9hdDpsZWZ0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggc3Bhbi5odF9uZXN0aW5nTGV2''@;'; put 'put ''ZWxfZW1wdHl7ZmxvYXQ6cmlnaHR9LmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZlbDphZnRlcntjb250ZW50OiJcMjUxMCI7Zm9udC1zaXplOjlweDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3R0b206M3B4fS5oYW5kc29udGFibGUgdGggZGl2''@;'; put 'put ''Lmh0X25lc3RpbmdCdXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTJweDtsZWZ0OnVuc2V0O2N1cnNvcjpwb2ludGVyfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b257bGVmdDotMnB4O3JpZ2h0OnVuc2V0fS5o''@;'; put 'put ''YW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdDb2xsYXBzZTphZnRlcntjb250ZW50OiItIn0uaGFuZHNvbnRhYmxlLmlubmVy''@;'; put 'put ''Qm9yZGVySW5saW5lU3RhcnQgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24sLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b257cmlnaHQ6MDtsZWZ0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJC''@;'; put 'put ''b3JkZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntsZWZ0OjA7cmlnaHQ6dW5zZXR9OnJvb3R7LS1jZHMtZ2xvYmFsLWJh''@;'; put 'put ''c2U6MjB9aHRtbHtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuMTU7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1ib2R5e21hcmdpbjowfWFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290''@;'; put 'put ''ZXIsaGVhZGVyLG1haW4sbWVudSxuYXYsc2VjdGlvbixzdW1tYXJ5e2Rpc3BsYXk6YmxvY2t9YXVkaW8sY2FudmFzLHByb2dyZXNzLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrfWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjB9cHJvZ3Jlc3N7dmVydGljYWwt''@;'; put 'put ''YWxpZ246YmFzZWxpbmV9dGVtcGxhdGUsW2hpZGRlbl17ZGlzcGxheTpub25lfWF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOm9iamVjdHN9YTphY3RpdmUsYTpob3ZlcntvdXRsaW5lLXdpZHRoOjB9YWJiclt0aXRsZV17Ym9yZGVy''@;'; put 'put ''LWJvdHRvbTpub25lO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZH1iLHN0cm9uZ3tmb250LXdlaWdodDppbmhlcml0fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJv''@;'; put 'put ''bGRlcn1kZm57Zm9udC1zdHlsZTppdGFsaWN9aDF7Zm9udC1zaXplOjJlbTttYXJnaW46LjY3ZW0gMH1tYXJre2JhY2tncm91bmQtY29sb3I6I2ZmMDtjb2xvcjojMDAwfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVs''@;'; put 'put ''YXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX1pbWd7Ym9yZGVyLXN0eWxlOm5vbmV9c3ZnOm5vdCg6cm9vdCl7b3ZlcmZsb3c6aGlkZGVufWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6''@;'; put 'put ''MWVtfWZpZ3VyZXttYXJnaW46MWVtIDQwcHh9aHJ7Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6MDtvdmVyZmxvdzp2aXNpYmxlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udDppbmhlcml0O21hcmdpbjowfXRleHRhcmVhe2xpbmUtaGVpZ2h0OjEuMTV9''@;'; put 'put ''b3B0Z3JvdXB7Zm9udC13ZWlnaHQ6NzAwfWJ1dHRvbixpbnB1dHtvdmVyZmxvdzp2aXNpYmxlfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saHRtbCBbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdey13ZWJraXQtYXBwZWFyYW5jZTpidXR0''@;'; put 'put ''b259YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPWJ1dHRvbl06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9cmVzZXRdOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPXN1Ym1pdF06Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyLXN0eWxlOm5vbmU7cGFkZGluZzowfWJ1dHRvbjotbW96LWZv''@;'; put 'put ''Y3VzcmluZyxbdHlwZT1idXR0b25dOi1tb3otZm9jdXNyaW5nLFt0eXBlPXJlc2V0XTotbW96LWZvY3VzcmluZyxbdHlwZT1zdWJtaXRdOi1tb3otZm9jdXNyaW5ne291dGxpbmU6MXB4IGRvdHRlZCBCdXR0b25UZXh0fWZpZWxkc2V0e2JvcmRlcjoxcHggc29saWQgc2lsdmVyO21hcmdpbjow''@;'; put 'put ''IDJweDtwYWRkaW5nOi4zNWVtIC42MjVlbSAuNzVlbX1sZWdlbmR7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTp0YWJsZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm9ybWFsfXRleHRhcmVhe292ZXJmbG93OmF1dG99W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdLFt0eXBlPXJhZGlvXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowfVt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sW3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJr''@;'; put 'put ''aXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH1bdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZp''@;'; put 'put ''bGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH06cm9vdHstLWNsci1jb2xvci1uZXV0cmFsLTA6d2hpdGU7LS1jbHItY29sb3ItbmV1dHJhbC01MDojZmFmYWZhOy0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwOiNmMmYyZjI7LS1jbHItY29sb3It''@;'; put 'put ''bmV1dHJhbC0yMDA6I2U4ZThlODstLWNsci1jb2xvci1uZXV0cmFsLTMwMDojZGVkZWRlOy0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwOiNjY2NjY2M7LS1jbHItY29sb3ItbmV1dHJhbC01MDA6I2IzYjNiMzstLWNsci1jb2xvci1uZXV0cmFsLTYwMDojOGM4YzhjOy0tY2xyLWNvbG9yLW5ldXRy''@;'; put 'put ''YWwtNzAwOiM2NjY2NjY7LS1jbHItY29sb3ItbmV1dHJhbC04MDA6IzQ1NDU0NTstLWNsci1jb2xvci1uZXV0cmFsLTkwMDojMzMzMzMzOy0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTA6YmxhY2s7LS1jbHItY29sb3Itb24tbmV1dHJhbC01''@;'; put 'put ''MDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTIwMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTUw''@;'; put 'put ''MDpibGFjazstLWNsci1jb2xvci1vbi1uZXV0cmFsLTYwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTgwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTEw''@;'; put 'put ''MDA6d2hpdGU7LS1jbHItY29sb3ItYWN0aW9uLTUwOiNlM2Y1ZmM7LS1jbHItY29sb3ItYWN0aW9uLTEwMDojYzhlYWY5Oy0tY2xyLWNvbG9yLWFjdGlvbi0yMDA6IzliZDhmMzstLWNsci1jb2xvci1hY3Rpb24tMzAwOiM3OWM2ZTY7LS1jbHItY29sb3ItYWN0aW9uLTQwMDojNDlhZWRhOy0t''@;'; put 'put ''Y2xyLWNvbG9yLWFjdGlvbi01MDA6IzE3OWJkMzstLWNsci1jb2xvci1hY3Rpb24tNjAwOiMwMDcyYTM7LS1jbHItY29sb3ItYWN0aW9uLTcwMDojMDA2NDhmOy0tY2xyLWNvbG9yLWFjdGlvbi04MDA6IzAwNTY3YTstLWNsci1jb2xvci1hY3Rpb24tOTAwOiMwMDRiNmI7LS1jbHItY29sb3It''@;'; put 'put ''YWN0aW9uLTEwMDA6IzAwMzY0ZDstLWNsci1jb2xvci1vbi1hY3Rpb24tNTA6YmxhY2s7LS1jbHItY29sb3Itb24tYWN0aW9uLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0zMDA6YmxhY2s7LS1jbHItY29sb3Itb24tYWN0''@;'; put 'put ''aW9uLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1hY3Rpb24tNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi02MDA6d2hpdGU7LS1jbHItY29sb3Itb24tYWN0aW9uLTcwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1hY3Rpb24tODAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi05''@;'; put 'put ''MDA6d2hpdGU7LS1jbHItY29sb3Itb24tYWN0aW9uLTEwMDA6d2hpdGU7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi01MDojZjdlNmZmOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMTAwOiNlNmNhZjE7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0yMDA6I2QyYWFlNDst''@;'; put 'put ''LWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTMwMDojYzA5MGQ1Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNDAwOiNhZjczYzk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi01MDA6IzllNTdiYzstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTYwMDojOGEzOWFjOy0t''@;'; put 'put ''Y2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNzAwOiM3ODFkOWY7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi04MDA6IzY4MDA5NDstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTkwMDojNGYwMDcwOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMTAwMDojMzIwMDQ3Oy0t''@;'; put 'put ''Y2xyLWNvbG9yLW9uLXNlY29uZGFyeS1hY3Rpb24tNTA6YmxhY2s7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0xMDA6YmxhY2s7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0yMDA6YmxhY2s7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0zMDA6YmxhY2s7''@;'; put 'put ''LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi00MDA6YmxhY2s7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi01MDA6d2hpdGU7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi02MDA6d2hpdGU7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi03MDA6d2hp''@;'; put 'put ''dGU7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi04MDA6d2hpdGU7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi05MDA6d2hpdGU7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0xMDAwOndoaXRlOy0tY2xyLWNvbG9yLWRhbmdlci01MDojZmZmMmYwOy0tY2xy''@;'; put 'put ''LWNvbG9yLWRhbmdlci0xMDA6I2ZlZGRkNzstLWNsci1jb2xvci1kYW5nZXItMjAwOiNmY2M1YmI7LS1jbHItY29sb3ItZGFuZ2VyLTMwMDojZjU5ZThmOy0tY2xyLWNvbG9yLWRhbmdlci00MDA6I2YyNzk2MzstLWNsci1jb2xvci1kYW5nZXItNTAwOiNmMzVlNDQ7LS1jbHItY29sb3ItZGFu''@;'; put 'put ''Z2VyLTYwMDojZjUyZDBhOy0tY2xyLWNvbG9yLWRhbmdlci03MDA6I2RiMjEwMDstLWNsci1jb2xvci1kYW5nZXItODAwOiNjMjFkMDA7LS1jbHItY29sb3ItZGFuZ2VyLTkwMDojOTkxNzAwOy0tY2xyLWNvbG9yLWRhbmdlci0xMDAwOiM2NjBmMDA7LS1jbHItY29sb3Itb24tZGFuZ2VyLTUw''@;'; put 'put ''OmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0xMDA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTIwMDpibGFjazstLWNsci1jb2xvci1vbi1kYW5nZXItMzAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci00MDA6YmxhY2s7LS1jbHItY29sb3Itb24tZGFuZ2VyLTUwMDpibGFj''@;'; put 'put ''azstLWNsci1jb2xvci1vbi1kYW5nZXItNjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLWRhbmdlci03MDA6d2hpdGU7LS1jbHItY29sb3Itb24tZGFuZ2VyLTgwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1kYW5nZXItOTAwOndoaXRlOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0xMDAwOndoaXRlOy0t''@;'; put 'put ''Y2xyLWNvbG9yLXdhcm5pbmctNTA6I2ZmZmFlNjstLWNsci1jb2xvci13YXJuaW5nLTEwMDojZmZmNGM3Oy0tY2xyLWNvbG9yLXdhcm5pbmctMjAwOiNmZmVlYTg7LS1jbHItY29sb3Itd2FybmluZy0zMDA6I2ZlZTI3MjstLWNsci1jb2xvci13YXJuaW5nLTQwMDojZjhjZjJhOy0tY2xyLWNv''@;'; put 'put ''bG9yLXdhcm5pbmctNTAwOiNlZmMwMDY7LS1jbHItY29sb3Itd2FybmluZy02MDA6I2U2YjAwMDstLWNsci1jb2xvci13YXJuaW5nLTcwMDojZDY5YTAwOy0tY2xyLWNvbG9yLXdhcm5pbmctODAwOiNhZDc2MDA7LS1jbHItY29sb3Itd2FybmluZy05MDA6IzhmNWEwMDstLWNsci1jb2xvci13''@;'; put 'put ''YXJuaW5nLTEwMDA6IzYxMzIwMDstLWNsci1jb2xvci1vbi13YXJuaW5nLTUwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMzAwOmJsYWNrOy0tY2xyLWNvbG9yLW9u''@;'; put 'put ''LXdhcm5pbmctNDAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNjAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNzAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctODAwOmJsYWNrOy0tY2xyLWNvbG9yLW9u''@;'; put 'put ''LXdhcm5pbmctOTAwOmJsYWNrOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMTAwMDp3aGl0ZTstLWNsci1jb2xvci1zdWNjZXNzLTUwOiNkZmYwZDA7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDA6I2JjZTQ5YTstLWNsci1jb2xvci1zdWNjZXNzLTIwMDojNzNkYzFlOy0tY2xyLWNvbG9yLXN1Y2Nl''@;'; put 'put ''c3MtMzAwOiM2OGM3MWE7LS1jbHItY29sb3Itc3VjY2Vzcy00MDA6IzVlYjcxNTstLWNsci1jb2xvci1zdWNjZXNzLTUwMDojNWFhMjIwOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtNjAwOiM0Yjk3MGM7LS1jbHItY29sb3Itc3VjY2Vzcy03MDA6IzNjODUwMDstLWNsci1jb2xvci1zdWNjZXNzLTgw''@;'; put 'put ''MDojMzA2YjAwOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtOTAwOiMyNTUyMDA7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDAwOiMxZTQyMDA7LS1jbHItY29sb3Itb24tc3VjY2Vzcy01MDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTEwMDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTIw''@;'; put 'put ''MDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTMwMDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTQwMDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwMDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTYwMDpibGFjazstLWNsci1jb2xvci1vbi1zdWNjZXNzLTcw''@;'; put 'put ''MDp3aGl0ZTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTgwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTkwMDp3aGl0ZTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTEwMDA6d2hpdGV9OnJvb3R7LS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1czouMTVyZW07LS1jbHItZ2xvYmFsLWJvcmRl''@;'; put 'put ''cndpZHRoOi4wNXJlbTstLWNsci1nbG9iYWwtYXBwLWJhY2tncm91bmQ6I2ZhZmFmYTstLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yOiNkOGUzZTk7LS1jbHItZ2xvYmFsLW9uLXNlbGVjdGlvbi1jb2xvcjpibGFjazstLWNsci1nbG9iYWwtaG92ZXItY29sb3I6I2U4ZThlODstLWNsci1n''@;'; put 'put ''bG9iYWwtY29udGVudC1oZWFkZXItZm9udC1jb2xvcjpibGFjazstLWNsci1nbG9iYWwtZm9udC1jb2xvcjojNjY2NjY2Oy0tY2xyLWdsb2JhbC1zdWNjZXNzLWNvbG9yOiM1YWEyMjA7LS1jbHItZ2xvYmFsLWVycm9yLWNvbG9yOiNjMjFkMDA7LS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbDoj''@;'; put 'put ''OGM4YzhjOy0tY2xyLWNsb3NlLWNvbG9yLS1ub3JtYWwtb3BhY2l0eTouMjstLWNsci1jbG9zZS1jb2xvci0taG92ZXI6YmxhY2s7LS1jbHItY2xvc2UtY29sb3ItLWhvdmVyLW9wYWNpdHk6LjU7LS1jbHItcG9wb3Zlci1ib3gtc2hhZG93LWNvbG9yOnJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1''@;'; put 'put ''KX06cm9vdHstLWNsci1mb250Ok1ldHJvcG9saXMsIEF2ZW5pciBOZXh0LCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWY7LS1jbHItZGlzcGxheS1mb250OnZhcigtLWNsci1mb250KTstLWNsci1mb250LXdlaWdodC1saWdodDoyMDA7LS1jbHItZm9udC13ZWlnaHQtcmVndWxh''@;'; put 'put ''cjo0MDA7LS1jbHItZm9udC13ZWlnaHQtc2VtaWJvbGQ6NTAwOy0tY2xyLWZvbnQtd2VpZ2h0LWJvbGQ6NjAwOy0tY2xyLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDo2MDA7LS1jbHItaDEtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oMS1m''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtbGlnaHQpOy0tY2xyLWgxLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgyLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtY29udGVudC1oZWFkZXItZm9udC1jb2xvcik7LS1jbHItaDItZm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1oMi1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTstLWNsci1oMy1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWNvbnRlbnQtaGVhZGVyLWZvbnQtY29sb3IpOy0tY2xyLWgzLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1m''@;'; put 'put ''b250LXdlaWdodC1saWdodCk7LS1jbHItaDMtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yKTstLWNsci1oNC1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQt''@;'; put 'put ''bGlnaHQpOy0tY2xyLWg0LWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWg1LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItaDUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLWg1LWZvbnQtZmFt''@;'; put 'put ''aWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWg2LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItaDYtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci1oNi1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1m''@;'; put 'put ''b250KTstLWNsci1wMC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpOy0tY2xyLXAwLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCk7LS1jbHItcDEtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wMS1mb250LXdlaWdodDp2''@;'; put 'put ''YXIoLS1jbHItZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItcDItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1wMi1mb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtc2VtaWJvbGQpOy0tY2xyLXAzLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1j''@;'; put 'put ''b2xvcik7LS1jbHItcDMtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLXA0LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDQtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LWJvbGQpOy0tY2xyLXA1LWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDUtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLXA2LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDYtZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2Vp''@;'; put 'put ''Z2h0LWJvbGQpOy0tY2xyLXA3LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDctZm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLXA4LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItcDgtZm9udC13''@;'; put 'put ''ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpfS5jbHItYWxpZ24tYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tdG9we3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnR9LmNsci1hbGlnbi1taWRkbGV7dmVydGljYWwtYWxp''@;'; put 'put ''Z246bWlkZGxlIWltcG9ydGFudH0uY2xyLWFsaWduLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fS5jbHItYWxpZ24tdGV4dC1ib3R0b217dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b20haW1wb3J0YW50fS5jbHItYWxpZ24tdGV4dC10b3B7dmVydGljYWwtYWxpZ246''@;'; put 'put ''dGV4dC10b3AhaW1wb3J0YW50fS5jbHItY2xlYXJmaXg6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmNsci1kaXNwbGF5LWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jbHItZGlzcGxheS1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2sh''@;'; put 'put ''aW1wb3J0YW50fS5jbHItZGlzcGxheS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5jbHItZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZsZXgtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXJvdy1yZXZl''@;'; put 'put ''cnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbm93cmFwe2Zs''@;'; put 'put ''ZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6Zmxl''@;'; put 'put ''eC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWJldHdl''@;'; put 'put ''ZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24taXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5j''@;'; put 'put ''bHItYWxpZ24taXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0''@;'; put 'put ''YW50fS5jbHItYWxpZ24tY29udGVudC1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWFyb3VuZHthbGlnbi1jb250ZW50''@;'; put 'put ''OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zdGFydHthbGlnbi1zZWxmOmZs''@;'; put 'put ''ZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUh''@;'; put 'put ''aW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZsZXgtc20tY29sdW1ue2ZsZXgtZGlyZWN0''@;'; put 'put ''aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtc20tY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1zbS13''@;'; put 'put ''cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtc20tbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC1zbS13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWZpbGx7ZmxleDoxIDEgYXV0''@;'; put 'put ''byFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC1zbS1zaHJpbmstMXtm''@;'; put 'put ''bGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQtc20tY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZHtqdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLWNl''@;'; put 'put ''bnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNv''@;'; put 'put ''bnRlbnQtc20tc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0''@;'; put 'put ''YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLXN0cmV0''@;'; put 'put ''Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1lbmR7''@;'; put 'put ''YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1zdHJl''@;'; put 'put ''dGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxl''@;'; put 'put ''eC1tZC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9''@;'; put 'put ''LmNsci1mbGV4LW1kLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1tZC1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC1tZC1ncm93''@;'; put 'put ''LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1tZC1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1tZC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1q''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcntqdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9''@;'; put 'put ''LmNsci1hbGlnbi1pdGVtcy1tZC1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1tZC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9y''@;'; put 'put ''dGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLXN0YXJ0e2FsaWduLWNvbnRlbnQ6''@;'; put 'put ''ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtYmV0''@;'; put 'put ''d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItYWxpZ24tc2VsZi1tZC1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0''@;'; put 'put ''YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWxnLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1sZy1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uY2xyLWZsZXgtbGctcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rp''@;'; put 'put ''b246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1sZy1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXdyYXB7ZmxleC13cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1sZy1ub3dyYXB7ZmxleC13cmFw''@;'; put 'put ''Om5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbGctZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uY2xyLWZsZXgtbGctZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsZXgtbGctZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtbGctc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXNocmluay0xe2ZsZXgtc2hyaW5rOjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0e2p1c3Rp''@;'; put 'put ''ZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1q''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbGctc3RhcnR7YWxp''@;'; put 'put ''Z24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbGctY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1iYXNl''@;'; put 'put ''bGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1zdGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxp''@;'; put 'put ''Z24tY29udGVudC1sZy1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3''@;'; put 'put ''ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1hdXRv''@;'; put 'put ''e2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctY2VudGVye2Fs''@;'; put 'put ''aWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4''@;'; put 'put ''KXsuY2xyLWZsZXgteGwtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxleC14bC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1mbGV4LXhsLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgteGwtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgt''@;'; put 'put ''eGwtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC14bC1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC14bC1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC14bC1ncm93LTF7ZmxleC1ncm93OjEh''@;'; put 'put ''aW1wb3J0YW50fS5jbHItZmxleC14bC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgteGwtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0''@;'; put 'put ''YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1iZXR3ZWVue2p1''@;'; put 'put ''c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWFsaWduLWl0ZW1zLXhsLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLWVuZHthbGlnbi1jb250''@;'; put 'put ''ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29u''@;'; put 'put ''dGVudC14bC1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXhsLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0u''@;'; put 'put ''Y2xyLWFsaWduLXNlbGYteGwtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5j''@;'; put 'put ''bHItYWxpZ24tc2VsZi14bC1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX0uY2xyLWZsZXgteHMtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXhzLWxhc3R7b3JkZXI6''@;'; put 'put ''MX0uY2xyLWZsZXgteHMtdW5vcmRlcmVke29yZGVyOjB9LmNsci1mbGV4LWl0ZW1zLXhzLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14cy1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14cy1ib3R0b217YWxpZ24taXRlbXM6Zmxl''@;'; put 'put ''eC1lbmR9LmNsci1mbGV4LXhzLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXhzLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgteHMtYm90dG9te2FsaWduLXNlbGY6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXhzLWxlZnR7anVzdGlmeS1jb250ZW50OmZs''@;'; put 'put ''ZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhzLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14cy1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXhzLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5j''@;'; put 'put ''bHItZmxleC1pdGVtcy14cy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtc20tZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXNtLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtc20tdW5vcmRlcmVke29yZGVyOjB9''@;'; put 'put ''fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtaXRlbXMtc20tdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXNtLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLXNtLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH19''@;'; put 'put ''QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5jbHItZmxleC1zbS1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LXNtLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZw''@;'; put 'put ''eCl7LmNsci1mbGV4LWl0ZW1zLXNtLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXNtLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1zbS1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0''@;'; put 'put ''ZW1zLXNtLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1zbS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbGV4LW1kLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC1t''@;'; put 'put ''ZC1sYXN0e29yZGVyOjF9LmNsci1mbGV4LW1kLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbGV4LWl0ZW1zLW1kLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1tZC1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5j''@;'; put 'put ''bHItZmxleC1pdGVtcy1tZC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZsZXgtbWQtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1tZC1ib3R0''@;'; put 'put ''b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1pdGVtcy1tZC1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1tZC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMt''@;'; put 'put ''bWQtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy1tZC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMtbWQtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19QG1lZGlhIChtaW4td2lkdGg6''@;'; put 'put ''OTkycHgpey5jbHItZmxleC1sZy1maXJzdHtvcmRlcjotMX0uY2xyLWZsZXgtbGctbGFzdHtvcmRlcjoxfS5jbHItZmxleC1sZy11bm9yZGVyZWR7b3JkZXI6MH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxleC1pdGVtcy1sZy10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0u''@;'; put 'put ''Y2xyLWZsZXgtaXRlbXMtbGctbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbGctYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWxnLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4''@;'; put 'put ''LWxnLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgtbGctYm90dG9te2FsaWduLXNlbGY6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtaXRlbXMtbGctbGVmdHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtbGct''@;'; put 'put ''Y2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLWxnLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMtbGctYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLWxnLWJldHdlZW57anVz''@;'; put 'put ''dGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC14bC1sYXN0e29yZGVyOjF9LmNsci1mbGV4LXhsLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgp''@;'; put 'put ''ey5jbHItZmxleC1pdGVtcy14bC10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMteGwtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteGwtYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgp''@;'; put 'put ''ey5jbHItZmxleC14bC10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5jbHItZmxleC14bC1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LXhsLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC1pdGVtcy14bC1s''@;'; put 'put ''ZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14bC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteGwtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy14bC1hcm91bmR7anVzdGlmeS1j''@;'; put 'put ''b250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMteGwtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19LmNsci1mbG9hdC14cy1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQteHMtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHIt''@;'; put 'put ''ZmxvYXQteHMtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbG9hdC1zbS1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQtc20tcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQtc20tbm9uZXtmbG9h''@;'; put 'put ''dDpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxvYXQtbWQtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LW1kLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uY2xyLWZsb2F0LW1kLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9''@;'; put 'put ''fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsb2F0LWxnLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1sZy1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9hdC1sZy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0''@;'; put 'put ''aDoxMjAwcHgpey5jbHItZmxvYXQteGwtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LXhsLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uY2xyLWZsb2F0LXhsLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9fS5jbHItaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVu''@;'; put 'put ''IWltcG9ydGFudH0uY2xyLWhpZGRlbi14cy11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjU3NS45OHB4KXsuY2xyLWhpZGRlbi14cy1kb3due2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWhpZGRlbi1zbS11''@;'; put 'put ''cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjcuOThweCl7LmNsci1oaWRkZW4tc20tZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1oaWRkZW4tbWQtdXB7ZGlzcGxheTpub25lIWltcG9ydGFudH19''@;'; put 'put ''QG1lZGlhIChtYXgtd2lkdGg6OTkxLjk4cHgpey5jbHItaGlkZGVuLW1kLWRvd257ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItaGlkZGVuLWxnLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjExOTkuOThw''@;'; put 'put ''eCl7LmNsci1oaWRkZW4tbGctZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItaGlkZGVuLXhsLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5jbHItaGlkZGVuLXhsLWRvd24sLmNsci12aXNpYmxlLXByaW50LWJsb2Nre2Rpc3Bs''@;'; put 'put ''YXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQtaW5s''@;'; put 'put ''aW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1l''@;'; put 'put ''ZGlhIHByaW50ey5jbHItaGlkZGVuLXByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5jbHItcm93e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tcmlnaHQ6LS42cmVtO21hcmdpbi1sZWZ0Oi0uNnJlbX0uY2xyLW5vLWd1dHRlcnN7bWFyZ2luLXJpZ2h0OjA7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6MH0uY2xyLW5vLWd1dHRlcnM+LmNsci1jb2wsLmNsci1uby1ndXR0ZXJzPltjbGFzcyo9Y2xyLWNvbC1de3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH0uY2xyLWNvbC14bCwuY2xyLWNvbC14bC1hdXRvLC5jbHItY29sLXhsLTEyLC5jbHItY29sLXhsLTExLC5jbHItY29s''@;'; put 'put ''LXhsLTEwLC5jbHItY29sLXhsLTksLmNsci1jb2wteGwtOCwuY2xyLWNvbC14bC03LC5jbHItY29sLXhsLTYsLmNsci1jb2wteGwtNSwuY2xyLWNvbC14bC00LC5jbHItY29sLXhsLTMsLmNsci1jb2wteGwtMiwuY2xyLWNvbC14bC0xLC5jbHItY29sLWxnLC5jbHItY29sLWxnLWF1dG8sLmNs''@;'; put 'put ''ci1jb2wtbGctMTIsLmNsci1jb2wtbGctMTEsLmNsci1jb2wtbGctMTAsLmNsci1jb2wtbGctOSwuY2xyLWNvbC1sZy04LC5jbHItY29sLWxnLTcsLmNsci1jb2wtbGctNiwuY2xyLWNvbC1sZy01LC5jbHItY29sLWxnLTQsLmNsci1jb2wtbGctMywuY2xyLWNvbC1sZy0yLC5jbHItY29sLWxn''@;'; put 'put ''LTEsLmNsci1jb2wtbWQsLmNsci1jb2wtbWQtYXV0bywuY2xyLWNvbC1tZC0xMiwuY2xyLWNvbC1tZC0xMSwuY2xyLWNvbC1tZC0xMCwuY2xyLWNvbC1tZC05LC5jbHItY29sLW1kLTgsLmNsci1jb2wtbWQtNywuY2xyLWNvbC1tZC02LC5jbHItY29sLW1kLTUsLmNsci1jb2wtbWQtNCwuY2xy''@;'; put 'put ''LWNvbC1tZC0zLC5jbHItY29sLW1kLTIsLmNsci1jb2wtbWQtMSwuY2xyLWNvbC1zbSwuY2xyLWNvbC1zbS1hdXRvLC5jbHItY29sLXNtLTEyLC5jbHItY29sLXNtLTExLC5jbHItY29sLXNtLTEwLC5jbHItY29sLXNtLTksLmNsci1jb2wtc20tOCwuY2xyLWNvbC1zbS03LC5jbHItY29sLXNt''@;'; put 'put ''LTYsLmNsci1jb2wtc20tNSwuY2xyLWNvbC1zbS00LC5jbHItY29sLXNtLTMsLmNsci1jb2wtc20tMiwuY2xyLWNvbC1zbS0xLC5jbHItY29sLC5jbHItY29sLWF1dG8sLmNsci1jb2wtMTIsLmNsci1jb2wtMTEsLmNsci1jb2wtMTAsLmNsci1jb2wtOSwuY2xyLWNvbC04LC5jbHItY29sLTcs''@;'; put 'put ''LmNsci1jb2wtNiwuY2xyLWNvbC01LC5jbHItY29sLTQsLmNsci1jb2wtMywuY2xyLWNvbC0yLC5jbHItY29sLTF7d2lkdGg6MTAwJTttaW4taGVpZ2h0Oi4wNXJlbTtwYWRkaW5nLXJpZ2h0Oi42cmVtO3BhZGRpbmctbGVmdDouNnJlbX0uY2xyLWNvbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93''@;'; put 'put ''OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7''@;'; put 'put ''bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lk''@;'; put 'put ''dGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42''@;'; put 'put ''NjY2NjY2NjY3JX0uY2xyLWNvbC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2''@;'; put 'put ''NjY2NyV9LmNsci1jb2wtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLTB7b3JkZXI6MH0uY2xyLW9yZGVyLTF7b3JkZXI6MX0uY2xyLW9yZGVyLTJ7b3JkZXI6Mn0uY2xy''@;'; put 'put ''LW9yZGVyLTN7b3JkZXI6M30uY2xyLW9yZGVyLTR7b3JkZXI6NH0uY2xyLW9yZGVyLTV7b3JkZXI6NX0uY2xyLW9yZGVyLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLTd7b3JkZXI6N30uY2xyLW9yZGVyLTh7b3JkZXI6OH0uY2xyLW9yZGVyLTl7b3JkZXI6OX0uY2xyLW9yZGVyLTEwe29yZGVyOjEw''@;'; put 'put ''fS5jbHItb3JkZXItMTF7b3JkZXI6MTF9LmNsci1vcmRlci0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9m''@;'; put 'put ''ZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC04e21hcmdp''@;'; put 'put ''bi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xy''@;'; put 'put ''LWNvbC1zbXtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtc20tYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtc20tMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMl''@;'; put 'put ''fS5jbHItY29sLXNtLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLXNtLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtc20tNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMz''@;'; put 'put ''MyV9LmNsci1jb2wtc20tNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC1zbS03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMz''@;'; put 'put ''MzMzJX0uY2xyLWNvbC1zbS04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLXNtLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMz''@;'; put 'put ''MzMzMzMzJX0uY2xyLWNvbC1zbS0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLXNtLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItc20tbGFzdHtv''@;'; put 'put ''cmRlcjoxM30uY2xyLW9yZGVyLXNtLTB7b3JkZXI6MH0uY2xyLW9yZGVyLXNtLTF7b3JkZXI6MX0uY2xyLW9yZGVyLXNtLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLXNtLTN7b3JkZXI6M30uY2xyLW9yZGVyLXNtLTR7b3JkZXI6NH0uY2xyLW9yZGVyLXNtLTV7b3JkZXI6NX0uY2xyLW9yZGVyLXNt''@;'; put 'put ''LTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLXNtLTd7b3JkZXI6N30uY2xyLW9yZGVyLXNtLTh7b3JkZXI6OH0uY2xyLW9yZGVyLXNtLTl7b3JkZXI6OX0uY2xyLW9yZGVyLXNtLTEwe29yZGVyOjEwfS5jbHItb3JkZXItc20tMTF7b3JkZXI6MTF9LmNsci1vcmRlci1zbS0xMntvcmRlcjoxMn0uY2xy''@;'; put 'put ''LW9mZnNldC1zbS0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQtc20tMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtc20tM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQtc20tNHtt''@;'; put 'put ''YXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1zbS01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXNtLTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LXNtLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtc20tOHtt''@;'; put 'put ''YXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1zbS05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC1zbS0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1zbS0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lk''@;'; put 'put ''dGg6NzY4cHgpey5jbHItY29sLW1ke2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1tZC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9uZX0uY2xyLWNvbC1tZC0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRo''@;'; put 'put ''OjguMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY2xyLWNvbC1tZC00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0''@;'; put 'put ''aDozMy4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jbHItY29sLW1kLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdp''@;'; put 'put ''ZHRoOjU4LjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNsci1jb2wtbWQtMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4''@;'; put 'put ''LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5jbHItb3JkZXItbWQtZmlyc3R7b3JkZXI6LTF9LmNsci1v''@;'; put 'put ''cmRlci1tZC1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItbWQtMHtvcmRlcjowfS5jbHItb3JkZXItbWQtMXtvcmRlcjoxfS5jbHItb3JkZXItbWQtMntvcmRlcjoyfS5jbHItb3JkZXItbWQtM3tvcmRlcjozfS5jbHItb3JkZXItbWQtNHtvcmRlcjo0fS5jbHItb3JkZXItbWQtNXtvcmRlcjo1''@;'; put 'put ''fS5jbHItb3JkZXItbWQtNntvcmRlcjo2fS5jbHItb3JkZXItbWQtN3tvcmRlcjo3fS5jbHItb3JkZXItbWQtOHtvcmRlcjo4fS5jbHItb3JkZXItbWQtOXtvcmRlcjo5fS5jbHItb3JkZXItbWQtMTB7b3JkZXI6MTB9LmNsci1vcmRlci1tZC0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLW1kLTEy''@;'; put 'put ''e29yZGVyOjEyfS5jbHItb2Zmc2V0LW1kLTB7bWFyZ2luLWxlZnQ6MH0uY2xyLW9mZnNldC1tZC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0uY2xy''@;'; put 'put ''LW9mZnNldC1tZC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbWQtNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZzZXQtbWQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xy''@;'; put 'put ''LW9mZnNldC1tZC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LW1kLTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LW1kLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfX1A''@;'; put 'put ''bWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1jb2wtbGd7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLWxnLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jbHItY29sLWxnLTF7ZmxleDowIDAgOC4zMzMzMzMz''@;'; put 'put ''MzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC1sZy0ze2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jbHItY29sLWxnLTR7ZmxleDowIDAgMzMuMzMzMzMz''@;'; put 'put ''MzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLWxnLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNsci1jb2wtbGctN3tmbGV4OjAgMCA1OC4zMzMz''@;'; put 'put ''MzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGctOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY2xyLWNvbC1sZy0xMHtmbGV4OjAgMCA4My4z''@;'; put 'put ''MzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTEye2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LmNsci1vcmRlci1sZy1maXJzdHtv''@;'; put 'put ''cmRlcjotMX0uY2xyLW9yZGVyLWxnLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci1sZy0we29yZGVyOjB9LmNsci1vcmRlci1sZy0xe29yZGVyOjF9LmNsci1vcmRlci1sZy0ye29yZGVyOjJ9LmNsci1vcmRlci1sZy0ze29yZGVyOjN9LmNsci1vcmRlci1sZy00e29yZGVyOjR9LmNsci1vcmRl''@;'; put 'put ''ci1sZy01e29yZGVyOjV9LmNsci1vcmRlci1sZy02e29yZGVyOjZ9LmNsci1vcmRlci1sZy03e29yZGVyOjd9LmNsci1vcmRlci1sZy04e29yZGVyOjh9LmNsci1vcmRlci1sZy05e29yZGVyOjl9LmNsci1vcmRlci1sZy0xMHtvcmRlcjoxMH0uY2xyLW9yZGVyLWxnLTExe29yZGVyOjExfS5j''@;'; put 'put ''bHItb3JkZXItbGctMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQtbGctMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LWxnLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LWxnLTN7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6MjUlfS5jbHItb2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1sZy02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9mZnNldC1sZy03e21hcmdpbi1sZWZ0OjU4LjMz''@;'; put 'put ''MzMzMzMzMzMlfS5jbHItb2Zmc2V0LWxnLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbGctOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtbGctMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctMTF7bWFyZ2luLWxlZnQ6OTEu''@;'; put 'put ''NjY2NjY2NjY2NyV9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1jb2wteGx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLXhsLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jbHItY29sLXhsLTF7Zmxl''@;'; put 'put ''eDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC14bC0ze2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jbHItY29sLXhsLTR7Zmxl''@;'; put 'put ''eDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLXhsLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLXhsLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNsci1jb2wteGwtN3tm''@;'; put 'put ''bGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wteGwtOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY2xyLWNvbC14bC0x''@;'; put 'put ''MHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLXhsLTEye2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LmNsci1v''@;'; put 'put ''cmRlci14bC1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLXhsLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci14bC0we29yZGVyOjB9LmNsci1vcmRlci14bC0xe29yZGVyOjF9LmNsci1vcmRlci14bC0ye29yZGVyOjJ9LmNsci1vcmRlci14bC0ze29yZGVyOjN9LmNsci1vcmRlci14bC00e29y''@;'; put 'put ''ZGVyOjR9LmNsci1vcmRlci14bC01e29yZGVyOjV9LmNsci1vcmRlci14bC02e29yZGVyOjZ9LmNsci1vcmRlci14bC03e29yZGVyOjd9LmNsci1vcmRlci14bC04e29yZGVyOjh9LmNsci1vcmRlci14bC05e29yZGVyOjl9LmNsci1vcmRlci14bC0xMHtvcmRlcjoxMH0uY2xyLW9yZGVyLXhs''@;'; put 'put ''LTExe29yZGVyOjExfS5jbHItb3JkZXIteGwtMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQteGwtMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LXhsLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC14bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zm''@;'; put 'put ''c2V0LXhsLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LXhsLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC14bC02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9mZnNldC14bC03e21h''@;'; put 'put ''cmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQteGwtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQteGwtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtMTF7''@;'; put 'put ''bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fS5jbHItYnJlYWstcm93e3dpZHRoOjEwMCV9Kiw6YmVmb3JlLDphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3h9cHJle21hcmdpbjouNnJlbSAwfXByZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5l''@;'; put 'put ''dXRyYWwtNDAwLCAjY2NjY2NjKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9y''@;'; put 'put ''ZGVycmFkaXVzLCAuMTVyZW0pfXByZSBjb2Rle3doaXRlLXNwYWNlOnByZX1jb2RlLmNsci1jb2Rle2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDAsICNjMjFkMDApO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOjAgMH11bC5saXN0LXVuc3R5bGVkOm5vdChbY2Rz''@;'; put 'put ''LWxpc3RdKXtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tbGVmdDowO2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZX11bC5saXN0LXVuc3R5bGVkOm5vdChbY2RzLWxpc3RdKSBsaTo6bWFya2Vye2NvbG9yOnRyYW5zcGFyZW50fXVsOm5vdChbY2RzLWxpc3RdKSxvbDpub3QoW2Nkcy1saXN0XSl7''@;'; put 'put ''bGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowfXVsLmxpc3Q6bm90KFtjZHMtbGlzdF0pLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pe2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZTttYXJn''@;'; put 'put ''aW4tbGVmdDoxLjFlbX11bC5saXN0Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0LG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3R7bGluZS1oZWlnaHQ6LjlyZW19dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saSxvbC5saXN0Om5vdChbY2RzLWxpc3RdKS5jb21wYWN0Pmxp''@;'; put 'put ''e21hcmdpbi1ib3R0b206LjNyZW19dWwubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saTpsYXN0LWNoaWxkLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBhY3Q+bGk6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9dWw6bm90KC5saXN0LXVuc3R5bGVkKTpub3QoW2Nkcy1saXN0''@;'; put 'put ''XSk+bGk+dWwubGlzdC11bnN0eWxlZCxvbDpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxlZHttYXJnaW4tbGVmdDoxLjFlbX1saT51bDpub3QoW2Nkcy1saXN0XSl7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEuMWVtfXVsLmxpc3QtZ3JvdXA6bm90KFtjZHMtbGlzdF0pe21h''@;'; put 'put ''cmdpbi10b3A6MH11bDpub3QoW2Nkcy1saXN0XSkubGlzdC1zcGFjZXIsb2w6bm90KFtjZHMtbGlzdF0pLmxpc3Qtc3BhY2Vye21hcmdpbi10b3A6MS4ycmVtfWgxOm5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oMS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0''@;'; put 'put ''OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItaDEtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oMS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywg''@;'; put 'put ''IkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxLjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjIuNHJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJnaW4tYm90dG9tOjB9aDI6bm90KFtjZHMtdGV4dF0pe2Nv''@;'; put 'put ''bG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWgyLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMi1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2Vy''@;'; put 'put ''aWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWgyLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOjEuNHJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6Mi40cmVtO21h''@;'; put 'put ''cmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1oMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItaDMtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgzLWZvbnQtd2VpZ2h0LCAyMDApO2ZvbnQtZmFtaWx5''@;'; put 'put ''Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItaDMtZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNp''@;'; put 'put ''emU6MS4xcmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWg0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1oNC1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtm''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jbHItaDQtZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oNC1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5p''@;'; put 'put ''ciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1oNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2''@;'; put 'put ''Njtjb2xvcjp2YXIoLS1jbHItaDUtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItaDUtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2Zv''@;'; put 'put ''bnQtZmFtaWx5OnZhcigtLWNsci1oNS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOHJlbTtsZXR0ZXItc3BhY2luZzouMDFlbTtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRv''@;'; put 'put ''cDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWg2Om5vdChbY2RzLXRleHRdKXtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1oNi1jb2xvciwgIzMzMzMzMyk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oNi1mb250LXdlaWdodCwgNTAwKTtmb250LWZhbWlseTpNZXRy''@;'; put 'put ''b3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWg2LWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOi43''@;'; put 'put ''cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHk6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6dmFyKC0tY2xyLXAxLWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouN3JlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFy''@;'; put 'put ''aWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWZvbnQsIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTttYXJnaW4tdG9wOjAhaW1wb3J0YW50fWJvZHkgcDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItcDEtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJy''@;'; put 'put ''ZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnAwOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDA6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXAwLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDoyMDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAwLWZvbnQtd2Vp''@;'; put 'put ''Z2h0LCAyMDApO2ZvbnQtc2l6ZToxcmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnAyOm5vdChbY2RzLXRleHRdKSxib2R5IHAucDI6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLXAyLWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtc2l6ZTouNjVyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJl''@;'; put 'put ''bTttYXJnaW4tYm90dG9tOjB9Ym9keSAucDM6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wMzpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDMtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDMtZm9udC13ZWln''@;'; put 'put ''aHQsIDQwMCk7Zm9udC1zaXplOi42NXJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH1ib2R5IC5wNDpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA0Om5vdChbY2RzLXRleHRdKXtjb2xvcjojNjY2O2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1wNC1jb2xvciwgIzY2NjY2Nik7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1wNC1mb250LXdlaWdodCwgNjAwKTtmb250LXNpemU6LjZyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW4tdG9wOjEuMnJl''@;'; put 'put ''bTttYXJnaW4tYm90dG9tOjB9Ym9keSAucDU6bm90KFtjZHMtdGV4dF0pLGJvZHkgcC5wNTpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDUtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItcDUtZm9udC13ZWln''@;'; put 'put ''aHQsIDQwMCk7Zm9udC1zaXplOi42cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA2Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDY6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLXA2LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA2LWZvbnQtd2VpZ2h0LCA2MDApO2ZvbnQtc2l6ZTouNTVyZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07''@;'; put 'put ''bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA3Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDc6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXA3LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA3LWZvbnQtd2VpZ2h0''@;'; put 'put ''LCA0MDApO2ZvbnQtc2l6ZTouNTVyZW07bGV0dGVyLXNwYWNpbmc6LjAzZW07bGluZS1oZWlnaHQ6LjZyZW07bWFyZ2luLXRvcDoxLjJyZW07bWFyZ2luLWJvdHRvbTowfWJvZHkgLnA4Om5vdChbY2RzLXRleHRdKSxib2R5IHAucDg6bm90KFtjZHMtdGV4dF0pe2NvbG9yOiM2NjY7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLXA4LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA4LWZvbnQtd2VpZ2h0LCA0MDApO2ZvbnQtc2l6ZTouNXJlbTtsZXR0ZXItc3BhY2luZzouMDNlbTtsaW5lLWhlaWdodDouNnJlbTttYXJnaW4tdG9wOjEuMnJlbTttYXJn''@;'; put 'put ''aW4tYm90dG9tOjB9LnRleHQtbGlnaHR7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1saWdodCwgMjAwKX0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50''@;'; put 'put ''fS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0udGV4dC1qdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeSFpbXBvcnRhbnR9aHRtbDpub3QoW2Nkcy10ZXh0XSl7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IsICM2NjY2NjYpO2ZvbnQtZmFt''@;'; put 'put ''aWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItZm9udCwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZToxMjUl''@;'; put 'put ''fTpyb290ey0tY2xyLWxpbmstYWN0aXZlLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwMCk7LS1jbHItbGluay1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7''@;'; put 'put ''LS1jbHItbGluay12aXNpdGVkLWNvbG9yOmhzbCgyMzgsIDQxJSwgNTMlKTstLWNsci1jdXN0b20tbGlua3MtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKX1odG1se2JveC1zaXppbmc6Ym9yZGVyLWJveH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6aW5oZXJp''@;'; put 'put ''dH1odG1sey1tcy1vdmVyZmxvdy1zdHlsZTpzY3JvbGxiYXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9W3JvbGU9YnV0dG9uXXtjdXJzb3I6cG9pbnRlcn1hLGFyZWEsYnV0dG9uLFtyb2xlPWJ1dHRvbl0saW5wdXQs''@;'; put 'put ''bGFiZWwsc2VsZWN0LHN1bW1hcnksdGV4dGFyZWF7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbn1idXR0b246Zm9jdXN7b3V0bGluZToycHggc29saWQgLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OjFweH1idXR0b246LW1vei1mb2N1c3JpbmcsW3R5cGU9YnV0dG9u''@;'; put 'put ''XTotbW96LWZvY3VzcmluZyxbdHlwZT1yZXNldF06LW1vei1mb2N1c3JpbmcsW3R5cGU9c3VibWl0XTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOjJweCBzb2xpZCBIaWdobGlnaHQ7b3V0bGluZS1vZmZzZXQ6MXB4fWlucHV0LGJ1dHRvbixzZWxlY3QsdGV4dGFyZWF7Ym9yZGVyLXJhZGl1czow''@;'; put 'put ''fWlucHV0W3R5cGU9cmFkaW9dOmRpc2FibGVkLGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH1pbnB1dFt0eXBlPWRhdGVdLGlucHV0W3R5cGU9dGltZV0saW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0saW5wdXRbdHlwZT1tb250aF17LXdlYmtpdC1h''@;'; put 'put ''cHBlYXJhbmNlOmxpc3Rib3h9dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfWZpZWxkc2V0e21pbi13aWR0aDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MH1sZWdlbmR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6MDtsaW5lLWhlaWdodDppbmhlcml0fWlucHV0W3R5cGU9''@;'; put 'put ''c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1baGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWRse21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjFyZW19dGFibGV7Ym9yZGVyLXNwYWNpbmc6MH1hOmxpbmt7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItbGluay1j''@;'; put 'put ''b2xvciwgIzAwNzJhMyl9YTp2aXNpdGVke2NvbG9yOiM1NjU5Yjg7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvciwgIzU2NTliOCl9YTp2aXNpdGVkOmhvdmVye2NvbG9yOiM1NjU5Yjg7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvci1ob3ZlciwgIzU2NTliOCl9''@;'; put 'put ''YTpob3Zlcntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1saW5rLWhvdmVyLWNvbG9yLCAjMDA3MmEzKX1hOmFjdGl2ZXtjb2xvcjojOWU1N2JjO2NvbG9yOnZhcigtLWNsci1saW5rLWFjdGl2ZS1jb2xvciwgIzllNTdiYyl9LmNsci1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO2Ns''@;'; put 'put ''aXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uYWxlcnQtaWNvbiwuY2xyLWljb257ZGlzcGxheTpp''@;'; put 'put ''bmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47dmVydGljYWwtYWxpZ246bWlkZGxlfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmcsLmFsZXJ0LWljb24uaWNv''@;'; put 'put ''bi13YXJuaW5nLC5jbHItaWNvbi5jbHItaWNvbi13YXJuaW5nLC5jbHItaWNvbi5pY29uLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIw''@;'; put 'put ''MjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUyMG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4''@;'; put 'put ''bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUyMHR5cGUlM0QlMjJ0ZXh0JTJGY3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUlN0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0ElMjM3NDc0NzQlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUy''@;'; put 'put ''RmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWxpbmUlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Bh''@;'; put 'put ''dGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMSUyMiUyMGQlM0QlMjJNMTglMkMyMS4zMmExLjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxLjMtMS4zVjE0YTEuMyUyQzEuMyUyQzAlMkMxJTJDMC0yLjYlMkMwdjZBMS4zJTJDMS4zJTJDMCUyQzAlMkMw''@;'; put 'put ''JTJDMTglMkMyMS4zMlolMjIlM0UlM0MlMkZwYXRoJTNFJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTIlMjIlMjBjeCUzRCUyMjE3Ljk1JTIyJTIwY3klM0QlMjIyNC4yNyUyMiUyMHIlM0QlMjIxLjUlMjIlM0UlM0MlMkZjaXJjbGUl''@;'; put 'put ''M0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTMlMjIlMjBkJTNEJTIyTTMwLjMzJTJDMjUuNTQlMkMyMC41OSUyQzcuNmEzJTJDMyUyQzAlMkMwJTJDMC01LjI3JTJDMEw1LjU3JTJDMjUuNTRBMyUyQzMlMkMwJTJDMCUyQzAlMkM4LjIx''@;'; put 'put ''JTJDMzBIMjcuNjlhMyUyQzMlMkMwJTJDMCUyQzAlMkMyLjY0LTQuNDNabS0xLjc4JTJDMS45NGExJTJDMSUyQzAlMkMwJTJDMS0uODYuNDlIOC4yMWExJTJDMSUyQzAlMkMwJTJDMS0uODgtMS40OEwxNy4wNyUyQzguNTVhMSUyQzElMkMwJTJDMCUyQzElMkMxLjc2JTJDMGw5Ljc0JTJDMTcu''@;'; put 'put ''OTRBMSUyQzElMkMwJTJDMCUyQzElMkMyOC41NSUyQzI3LjQ4WiUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZzdmclM0UpfS5hbGVydC1pY29uLmNsci1pY29uLXdhcm5pbmctd2hpdGUsLmNsci1pY29uLmNsci1pY29uLXdh''@;'; put 'put ''cm5pbmctd2hpdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwdmlld0JveCUzRCUyMjUlMjA1JTIwMjYlMjAyNiUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWlkWU1pZCUy''@;'; put 'put ''MG1lZXQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUyMHR5cGUlM0QlMjJ0ZXh0JTJG''@;'; put 'put ''Y3NzJTIyJTNFJTBBJTA5LmNsci1pLW91dGxpbmUlN0JmaWxsLXJ1bGUlM0FldmVub2RkJTNCY2xpcC1ydWxlJTNBZXZlbm9kZCUzQmZpbGwlM0F3aGl0ZSUzQiU3RCUzQyUyRnN0eWxlJTNFJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3RpdGxlJTNFZXhjbGFtYXRpb24tdHJpYW5nbGUtbGluZSUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0x''@;'; put 'put ''JTIyJTIwZCUzRCUyMk0xOCUyQzIxLjMyYTEuMyUyQzEuMyUyQzAlMkMwJTJDMCUyQzEuMy0xLjNWMTRhMS4zJTJDMS4zJTJDMCUyQzElMkMwLTIuNiUyQzB2NkExLjMlMkMxLjMlMkMwJTJDMCUyQzAlMkMxOCUyQzIxLjMyWiUyMiUzRSUzQyUyRnBhdGglM0UlM0NjaXJjbGUlMjBjbGFzcyUz''@;'; put 'put ''RCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMiUyMiUyMGN4JTNEJTIyMTcuOTUlMjIlMjBjeSUzRCUyMjI0LjI3JTIyJTIwciUzRCUyMjEuNSUyMiUzRSUzQyUyRmNpcmNsZSUzRSUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMyUyMiUyMGQlM0QlMjJNMzAuMzMlMkMyNS41NCUyQzIwLjU5JTJDNy42YTMlMkMzJTJDMCUyQzAlMkMwLTUuMjclMkMwTDUuNTclMkMyNS41NEEzJTJDMyUyQzAlMkMwJTJDMCUyQzguMjElMkMzMEgyNy42OWEzJTJDMyUyQzAlMkMwJTJDMCUyQzIuNjQtNC40M1ptLTEuNzglMkMx''@;'; put 'put ''Ljk0YTElMkMxJTJDMCUyQzAlMkMxLS44Ni40OUg4LjIxYTElMkMxJTJDMCUyQzAlMkMxLS44OC0xLjQ4TDE3LjA3JTJDOC41NWExJTJDMSUyQzAlMkMwJTJDMSUyQzEuNzYlMkMwbDkuNzQlMkMxNy45NEExJTJDMSUyQzAlMkMwJTJDMSUyQzI4LjU1JTJDMjcuNDhaJTIyJTNFJTNDJTJGcGF0''@;'; put 'put ''aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN2ZyUzRSl9LmFsZXJ0LWljb24uY2xyLXZtdy1sb2dvLC5jbHItaWNvbi5jbHItdm13LWxvZ297YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3Zn''@;'; put 'put ''JTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4''@;'; put 'put ''bGluayUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFdm0lMjBidWclM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIySGVhZGVycyUyMiUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBzdHJv''@;'; put 'put ''a2Utd2lkdGglM0QlMjIxJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIyQ0wtSGVhZGVycy1TcGVjcyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgtMjYyLjAw''@;'; put 'put ''MDAwMCUyQyUyMC0xNzUuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMjAxJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlKDIzOC4wMDAwMDAlMkMlMjAxNjMuMDAwMDAwKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMnZtLWJ1ZyUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSgyNC43MDMxMjUlMkMlMjAxMi4wMDAwMDApJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlLTQyJTIyJTIwZmlsbC1vcGFjaXR5JTNEJTIyMC4yNSUyMiUyMGZpbGwlM0QlMjIlMjNEREREREQlMjIlMjBvcGFjaXR5JTNEJTIyMC42JTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIy''@;'; put 'put ''MzYlMjIlMjBoZWlnaHQlM0QlMjIzNiUyMiUyMHJ4JTNEJTIyMyUyMiUzRSUzQyUyRnJlY3QlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk03LjYzOTQ4Mzc2JTJDMTMuODc2MjQwMiUyMEM3''@;'; put 'put ''LjMyMjY1MzI0JTJDMTMuMjA5NzA4MiUyMDYuNTM5NzgxNTIlMkMxMi45MDg1MTM5JTIwNS44MDkyMzA0MiUyQzEzLjIxOTkzNCUyMEM1LjA3NzcxMDQzJTJDMTMuNTMyMjgzNyUyMDQuODA5MzI0OTUlMkMxNC4zMTAzNjkxJTIwNS4xMzk3MjAwNyUyQzE0Ljk3NjkwMTElMjBMOC4yMDcyNTk1''@;'; put 'put ''NCUyQzIxLjM3NDQ5MjMlMjBDOC42ODk3NzIwNyUyQzIyLjM3ODQ3MzUlMjA5LjE5ODQ0NDkxJTJDMjIuOTAzNzA0NCUyMDEwLjE1MjgxMjElMkMyMi45MDM3MDQ0JTIwQzExLjE3MjA5NTUlMkMyMi45MDM3MDQ0JTIwMTEuNjE2ODIwOSUyQzIyLjMzMTA2MzMlMjAxMi4wOTgzNjQ2JTJDMjEu''@;'; put 'put ''Mzc0NDkyMyUyMEMxMi4wOTgzNjQ2JTJDMjEuMzc0NDkyMyUyMDE0Ljc3NDQ2ODIlMkMxNS43ODQ3MzQxJTIwMTQuODAxNTk3NCUyQzE1LjcyNjE2ODUlMjBDMTQuODI4NzI2NiUyQzE1LjY2NjY3MzMlMjAxNC45MTQ5NTg4JTJDMTUuNDg2MzI4NiUyMDE1LjE4NzIxOTklMkMxNS40ODcyNTgy''@;'; put 'put ''JTIwQzE1LjQxNzgxODIlMkMxNS40OTAwNDclMjAxNS42MTA2Mjk0JTJDMTUuNjY1NzQzNyUyMDE1LjYxMDYyOTQlMkMxNS45MDE4NjUyJTIwTDE1LjYxMDYyOTQlMkMyMS4zNjk4NDQzJTIwQzE1LjYxMDYyOTQlMkMyMi4yMTIwNzMlMjAxNi4wOTc5ODY1JTJDMjIuOTAzNzA0NCUyMDE3LjAz''@;'; put 'put ''NDkxMzQlMkMyMi45MDM3MDQ0JTIwQzE3Ljk3MTg0MDMlMkMyMi45MDM3MDQ0JTIwMTguNDc4NTc1NCUyQzIyLjIxMjA3MyUyMDE4LjQ3ODU3NTQlMkMyMS4zNjk4NDQzJTIwTDE4LjQ3ODU3NTQlMkMxNi44OTY1NTAzJTIwQzE4LjQ3ODU3NTQlMkMxNi4wMzM4NzAyJTIwMTkuMTIxOTI1NCUy''@;'; put 'put ''QzE1LjQ3NDI0MzYlMjAyMC4wMDA3MTgzJTJDMTUuNDc0MjQzNiUyMEMyMC44Nzg1NDIzJTJDMTUuNDc0MjQzNiUyMDIxLjQ2Mzc1ODMlMkMxNi4wNTI0NjI0JTIwMjEuNDYzNzU4MyUyQzE2Ljg5NjU1MDMlMjBMMjEuNDYzNzU4MyUyQzIxLjM2OTg0NDMlMjBDMjEuNDYzNzU4MyUyQzIyLjIx''@;'; put 'put ''MjA3MyUyMDIxLjk1MjA4NDIlMkMyMi45MDM3MDQ0JTIwMjIuODg4MDQyMyUyQzIyLjkwMzcwNDQlMjBDMjMuODI0MDAwMyUyQzIyLjkwMzcwNDQlMjAyNC4zMzI2NzMxJTJDMjIuMjEyMDczJTIwMjQuMzMyNjczMSUyQzIxLjM2OTg0NDMlMjBMMjQuMzMyNjczMSUyQzE2Ljg5NjU1MDMlMjBD''@;'; put 'put ''MjQuMzMyNjczMSUyQzE2LjAzMzg3MDIlMjAyNC45NzUwNTQzJTJDMTUuNDc0MjQzNiUyMDI1Ljg1Mzg0NzIlMkMxNS40NzQyNDM2JTIwQzI2LjczMDcwMjMlMkMxNS40NzQyNDM2JTIwMjcuMzE2ODg3MSUyQzE2LjA1MjQ2MjQlMjAyNy4zMTY4ODcxJTJDMTYuODk2NTUwMyUyMEwyNy4zMTY4''@;'; put 'put ''ODcxJTJDMjEuMzY5ODQ0MyUyMEMyNy4zMTY4ODcxJTJDMjIuMjEyMDczJTIwMjcuODA1MjEzMSUyQzIyLjkwMzcwNDQlMjAyOC43NDIxNCUyQzIyLjkwMzcwNDQlMjBDMjkuNjc3MTI5MSUyQzIyLjkwMzcwNDQlMjAzMC4xODQ4MzMxJTJDMjIuMjEyMDczJTIwMzAuMTg0ODMzMSUyQzIxLjM2''@;'; put 'put ''OTg0NDMlMjBMMzAuMTg0ODMzMSUyQzE2LjI3ODM1ODIlMjBDMzAuMTg0ODMzMSUyQzE0LjQwNzA0ODglMjAyOC42MTgxMjA3JTJDMTMuMDk2Mjk1NiUyMDI2LjczMDcwMjMlMkMxMy4wOTYyOTU2JTIwQzI0Ljg0NTIyMTYlMkMxMy4wOTYyOTU2JTIwMjMuNjY1MTAwNiUyQzE0LjM0NzU1MzYl''@;'; put 'put ''MjAyMy42NjUxMDA2JTJDMTQuMzQ3NTUzNiUyMEMyMy4wMzcyNTMlMkMxMy41NjY2NzkzJTIwMjIuMTcyMDI0NyUyQzEzLjA5NzIyNTIlMjAyMC43MDg5ODQ3JTJDMTMuMDk3MjI1MiUyMEMxOS4xNjQ1NTclMkMxMy4wOTcyMjUyJTIwMTcuODEyOTQwNiUyQzE0LjM0NzU1MzYlMjAxNy44MTI5''@;'; put 'put ''NDA2JTJDMTQuMzQ3NTUzNiUyMEMxNy4xODQxMjQxJTJDMTMuNTY2Njc5MyUyMDE2LjExNTQyNjclMkMxMy4wOTcyMjUyJTIwMTUuMjMwODIwNCUyQzEzLjA5NzIyNTIlMjBDMTMuODYxNzYzOCUyQzEzLjA5NzIyNTIlMjAxMi43NzQ2NTcyJTJDMTMuNjc1NDQ0JTIwMTIuMTExOTI5MiUyQzE1''@;'; put 'put ''LjEzMDI4NzElMjBMMTAuMTUyODEyMSUyQzE5LjU2MDgxODklMjBMNy42Mzk0ODM3NiUyQzEzLjg3NjI0MDIlMjIlMjBpZCUzRCUyMkZpbGwtNCUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUzQyUyRnN2ZyUzRSIpfS5pcy1vZmYtc2NyZWVu''@;'; put 'put ''e3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3RvcDotY29udmVydEJhc2VsaW5lVG9CYXNlMjAoMSkhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBv''@;'; put 'put ''cnRhbnQ7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAtY29udmVydEJhc2VsaW5lVG9CYXNlMjAoMSkgMCFpbXBvcnRhbnR9LmNsci1wb3BvdmVyLWNvbnRlbnR7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDUwfTpyb290ey0tY2xy''@;'; put 'put ''LWJ0bi12ZXJ0aWNhbC1tYXJnaW46LjNyZW07LS1jbHItYnRuLWhvcml6b250YWwtbWFyZ2luOi42cmVtOy0tY2xyLWJ0bi1ob3Jpem9udGFsLXBhZGRpbmc6LjZyZW07LS1jbHItYnRuLXZlcnRpY2FsLXBhZGRpbmc6MDstLWNsci1idG4tcGFkZGluZzp2YXIoLS1jbHItYnRuLXZlcnRpY2Fs''@;'; put 'put ''LXBhZGRpbmcpIHZhcigtLWNsci1idG4taG9yaXpvbnRhbC1wYWRkaW5nKTstLWNsci1idG4taGVpZ2h0OjEuOHJlbTstLWNsci1idG4taGVpZ2h0LXNtOjEuMnJlbTstLWNsci1idG4tZm9udC13ZWlnaHQ6NTAwOy0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzOi4xNXJlbTstLWNsci1idG4tYm9y''@;'; put 'put ''ZGVyLXdpZHRoOi4wNXJlbTstLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1saW5lLWhlaWdodDoxLjE1cmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtc2l6ZTouNTVyZW07LS1jbHItYnRuLWFw''@;'; put 'put ''cGVhcmFuY2Utc3RhbmRhcmQtZm9udC13ZWlnaHQ6NTAwOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdodDoxLjJyZW07LS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtcGFkZGluZzowIC42cmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWljb24tc2l6ZTou''@;'; put 'put ''NnJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWxpbmUtaGVpZ2h0OjEuOHJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWxldHRlci1zcGFjaW5nOi4xMmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0tZm9udC1zaXplOi42cmVtOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0t''@;'; put 'put ''Zm9udC13ZWlnaHQ6NTAwOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0taGVpZ2h0OjEuOHJlbTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLXBhZGRpbmc6MCAuNnJlbTstLWNsci1idG4tZGVmYXVsdC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItYnRuLWRlZmF1''@;'; put 'put ''bHQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWRlZmF1bHQtaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYnRuLWRlZmF1bHQtaG92''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1j''@;'; put 'put ''bHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWJnLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1kZWZh''@;'; put 'put ''dWx0LW91dGxpbmUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1iZy1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTUwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01''@;'; put 'put ''MDApOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1i''@;'; put 'put ''dG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNo''@;'; put 'put ''ZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1wcmltYXJ5LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1i''@;'; put 'put ''dG4tcHJpbWFyeS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1idG4tcHJpbWFyeS1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9u''@;'; put 'put ''LTUwKTstLWNsci1idG4tcHJpbWFyeS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1j''@;'; put 'put ''bHItYnRuLXByaW1hcnktY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tc3VjY2Vzcy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy03MDApOy0t''@;'; put 'put ''Y2xyLWJ0bi1zdWNjZXNzLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTgwMCk7LS1jbHItYnRuLXN1Y2Nlc3MtaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1zdWNjZXNzLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTkwMCk7LS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4tc3VjY2Vzcy1kaXNh''@;'; put 'put ''YmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNj''@;'; put 'put ''ZXNzLWhvdmVyLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy03MDApOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxp''@;'; put 'put ''bmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy03MDApOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLXN1Y2Nlc3MtNTApOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtOTAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNDAwKTstLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0''@;'; put 'put ''bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYm9yZGVyLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1vdXRs''@;'; put 'put ''aW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLWRhbmdlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4tZGFuZ2VyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItNzAwKTstLWNsci1idG4tZGFuZ2Vy''@;'; put 'put ''LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcik7LS1jbHItYnRuLWRhbmdlci1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLWRhbmdlci1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvcik7LS1j''@;'; put 'put ''bHItYnRuLWRhbmdlci1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItOTAwKTstLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Y29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci1idG4tZGFuZ2Vy''@;'; put 'put ''LWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTcwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yOnZhcigtLWNsci1idG4tb3V0bGluZS1iZy1jb2xv''@;'; put 'put ''cik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItMTAwKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtaG92''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItMjAwKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5l''@;'; put 'put ''dXRyYWwtNzAwKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRs''@;'; put 'put ''aW5lLWRpc2FibGVkLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRu''@;'; put 'put ''LXdhcm5pbmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRuLXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci03MDApOy0tY2xyLWJ0bi13YXJuaW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLXdhcm5pbmctaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yKTstLWNsci1idG4td2FybmluZy1ib3gtc2hhZG93LWNvbG9yOnZhcigtLWNsci1jb2xvci1k''@;'; put 'put ''YW5nZXItOTAwKTstLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYnRuLXdhcm5pbmctZGlzYWJsZWQt''@;'; put 'put ''Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvcik7''@;'; put 'put ''LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTcwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItMTAwKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItOTAwKTst''@;'; put 'put ''LWNsci1idG4td2FybmluZy1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci0yMDApOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1idG4td2FybmluZy1vdXRsaW5l''@;'; put 'put ''LWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpOy0tY2xyLWJ0bi13YXJu''@;'; put 'put ''aW5nLW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1saW5rLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rp''@;'; put 'put ''b24tNjAwKTstLWNsci1idG4tbGluay1iZy1jb2xvcjp0cmFuc3BhcmVudDstLWNsci1idG4tbGluay1ib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstaG92ZXItYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstaG92ZXItY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLWFjdGlvbi04MDApOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnRyYW5zcGFy''@;'; put 'put ''ZW50Oy0tY2xyLWJ0bi1saW5rLWNoZWNrZWQtYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItYnRuLWxpbmstY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYnRuLWludmVyc2UtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItYnRu''@;'; put 'put ''LWludmVyc2UtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1pbnZlcnNlLWJnLWNvbG9yOnRyYW5zcGFyZW50Oy0tY2xyLWJ0bi1pbnZlcnNlLWhvdmVyLWJnLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KTstLWNsci1idG4taW52ZXJzZS1o''@;'; put 'put ''b3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taW52ZXJzZS1ib3gtc2hhZG93LWNvbG9yOnJnYmEoMCwgMCwgMCwgLjI1KTstLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taW52''@;'; put 'put ''ZXJzZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtYmctY29sb3IpOy0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWJnLWNvbG9yOnJnYmEoMjU1''@;'; put 'put ''LCAyNTUsIDI1NSwgLjE1KTstLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJ0bi1pY29uLWRpc2FibGVkLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7LS1jbHItYnRuLWdy''@;'; put 'put ''b3VwLWZvY3VzLW91dGxpbmU6IzUxY2JlZX0uYnRue2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtYXBwZWFyYW5jZTpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1idG4tYm9yZGVyLXJhZGl1cywg''@;'; put 'put ''LjE1cmVtKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItYnRuLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7bWluLXdpZHRoOjMuNnJlbTttYXgtd2lkdGg6MThyZW07d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxs''@;'; put 'put ''aXBzaXM7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1i''@;'; put 'put ''b3JkZXItY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvciwgIzAw''@;'; put 'put ''NzJhMyk7bGluZS1oZWlnaHQ6MS44cmVtO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWxpbmUtaGVpZ2h0LCAxLjhyZW0pO2xldHRlci1zcGFjaW5nOi4xMmVtO2ZvbnQtc2l6ZTouNnJlbTtmb250LXNpemU6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0t''@;'; put 'put ''Zm9udC1zaXplLCAuNnJlbSk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWZvbnQtd2VpZ2h0LCA1MDApO2hlaWdodDoxLjhyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLWhlaWdodCwgMS44cmVtKTtwYWRk''@;'; put 'put ''aW5nOjAgLjZyZW07cGFkZGluZzp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2UtZm9ybS1wYWRkaW5nLCAwIC42cmVtKX0uYnRuOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5idG4gY2RzLWljb24sLmJ0biBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVm''@;'; put 'put ''YXVsdC1jb2xvciwgIzAwNzJhMyl9LmJ0bjp2aXNpdGVke2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yLCAjMDA3MmEzKX0uYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2UzZjVmYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVs''@;'; put 'put ''dC1ob3Zlci1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtaG92ZXItY29sb3IsICMwMDU2N2EpfS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1kZWZhdWx0LWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uZGlzYWJsZWQsLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNp''@;'; put 'put ''dHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlz''@;'; put 'put ''YWJsZWQtYm9yZGVyLWNvbG9yLCAjOGM4YzhjKTtib3gtc2hhZG93Om5vbmV9LmJ0bi1ncm91cD4uYnRuIGNsci1pY29uLC5idG4gY2xyLWljb257dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLS4xcmVtLDApfS5idG4tZ3JvdXA+LmJ0biBjZHMtaWNvbiwuYnRuIGNkcy1pY29ue21hcmdpbi10''@;'; put 'put ''b3A6LS4xNHJlbX0uYnRuLmJ0bi1zZWNvbmRhcnksLmJ0bi5idG4taW5mbywuYnRuLmJ0bi1vdXRsaW5lLC5idG4uYnRuLXByaW1hcnktb3V0bGluZSwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnksLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnks''@;'; put 'put ''LmJ0bi5idG4taW5mby1vdXRsaW5lLC5idG4tc2Vjb25kYXJ5IC5idG4sLmJ0bi1pbmZvIC5idG4sLmJ0bi1vdXRsaW5lIC5idG4sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biwuYnRuLW91dGxp''@;'; put 'put ''bmUtc2Vjb25kYXJ5IC5idG4sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtaW5mbyAuYnRue2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5z''@;'; put 'put ''cGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLXNlY29uZGFyeSBjZHMtaWNvbiwuYnRuLmJ0bi1z''@;'; put 'put ''ZWNvbmRhcnkgY2xyLWljb24sLmJ0bi5idG4taW5mbyBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFy''@;'; put 'put ''eS1vdXRsaW5lIGNsci1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgY2xyLWljb24sLmJ0bi5i''@;'; put 'put ''dG4tb3V0bGluZS1zZWNvbmRhcnkgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgY2xyLWljb24sLmJ0bi5idG4taW5mby1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZSBjbHItaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuIGNkcy1pY29uLC5idG4tc2Vj''@;'; put 'put ''b25kYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1pbmZvIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXBy''@;'; put 'put ''aW1hcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuIGNs''@;'; put 'put ''ci1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5i''@;'; put 'put ''dG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0biBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tc2Vjb25kYXJ5OnZpc2l0ZWQsLmJ0bi5idG4taW5mbzp2aXNpdGVkLC5idG4uYnRuLW91dGxp''@;'; put 'put ''bmU6dmlzaXRlZCwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6dmlzaXRlZCwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OnZpc2l0ZWQsLmJ0bi5idG4taW5mby1vdXRs''@;'; put 'put ''aW5lOnZpc2l0ZWQsLmJ0bi1zZWNvbmRhcnkgLmJ0bjp2aXNpdGVkLC5idG4taW5mbyAuYnRuOnZpc2l0ZWQsLmJ0bi1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOnZpc2l0ZWQsLmJ0bi1v''@;'; put 'put ''dXRsaW5lLXByaW1hcnkgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjp2aXNpdGVkLC5idG4taW5mby1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOnZpc2l0ZWR7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1''@;'; put 'put ''bHQtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLXNlY29uZGFyeTpob3ZlciwuYnRuLmJ0bi1pbmZvOmhvdmVyLC5idG4uYnRuLW91dGxpbmU6aG92ZXIsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtcHJpbWFyeTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6aG92ZXIsLmJ0bi1zZWNvbmRhcnkgLmJ0bjpob3ZlciwuYnRuLWluZm8gLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLXByaW1hcnktb3V0''@;'; put 'put ''bGluZSAuYnRuOmhvdmVyLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpob3ZlciwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1pbmZvIC5i''@;'; put 'put ''dG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTNmNWZjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWJnLWNvbG9yLCAjZTNmNWZjKTtjb2xvcjojMDA1NjdhO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zlci1jb2xvciwgIzAwNTY3YSl9LmJ0''@;'; put 'put ''bi5idG4tc2Vjb25kYXJ5OmFjdGl2ZSwuYnRuLmJ0bi1pbmZvOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6YWN0aXZlLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZl''@;'; put 'put ''LC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmFjdGl2ZSwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6YWN0aXZlLC5idG4tc2Vjb25kYXJ5IC5idG46YWN0aXZlLC5idG4taW5mbyAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjph''@;'; put 'put ''Y3RpdmUsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46YWN0aXZlLC5idG4taW5mby1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1pbmZvIC5idG46YWN0''@;'; put 'put ''aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJveC1zaGFkb3ctY29sb3IsICMxNzliZDMpIGluc2V0fS5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnk6ZGlz''@;'; put 'put ''YWJsZWQsLmJ0bi5idG4taW5mby5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmRp''@;'; put 'put ''c2FibGVkLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1z''@;'; put 'put ''ZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQsLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxlZCwuYnRuLXNlY29uZGFyeSAuYnRuLmRpc2FibGVkLC5idG4tc2Vjb25kYXJ5IC5idG46''@;'; put 'put ''ZGlzYWJsZWQsLmJ0bi1pbmZvIC5idG4uZGlzYWJsZWQsLmJ0bi1pbmZvIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLXByaW1hcnktb3V0bGlu''@;'; put 'put ''ZSAuYnRuOmRpc2FibGVkLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmRpc2FibGVkLC5idG4t''@;'; put 'put ''b3V0bGluZS1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46ZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4tb3V0bGluZS1pbmZvIC5idG4uZGlzYWJsZWQs''@;'; put 'put ''LmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojOGM4YzhjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjOGM4YzhjKTtib3gtc2hhZG93Om5vbmV9''@;'; put 'put ''LmJ0bi5idG4tcHJpbWFyeSwuYnRuLXByaW1hcnkgLmJ0bntib3JkZXItY29sb3I6IzAwNzJhMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWJvcmRlci1jb2xvciwgIzAwNzJhMyk7YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1wcmltYXJ5LWJnLWNvbG9yLCAjMDA3MmEzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXByaW1hcnkgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeSBjbHItaWNvbiwuYnRuLXByaW1hcnkgLmJ0biBjZHMtaWNvbiwu''@;'; put 'put ''YnRuLXByaW1hcnkgLmJ0biBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXByaW1hcnk6dmlzaXRlZCwuYnRuLXByaW1hcnkgLmJ0bjp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmlt''@;'; put 'put ''YXJ5LWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4tcHJpbWFyeTpob3ZlciwuYnRuLXByaW1hcnkgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDU2N2E7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktaG92ZXItYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNlM2Y1''@;'; put 'put ''ZmM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yLCAjZTNmNWZjKX0uYnRuLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICMxNzliZDMgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1j''@;'; put 'put ''bHItYnRuLXByaW1hcnktYm94LXNoYWRvdy1jb2xvciwgIzE3OWJkMykgaW5zZXR9LmJ0bi5idG4tcHJpbWFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1wcmltYXJ5OmRpc2FibGVkLC5idG4tcHJpbWFyeSAuYnRuLmRpc2FibGVkLC5idG4tcHJpbWFyeSAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYmctY29sb3IsICNj''@;'; put 'put ''Y2NjY2MpO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tc3VjY2VzcywuYnRuLXN1Y2Nlc3MgLmJ0bntib3JkZXItY29sb3I6IzNjODUwMDti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWJvcmRlci1jb2xvciwgIzNjODUwMCk7YmFja2dyb3VuZC1jb2xvcjojM2M4NTAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWJnLWNvbG9yLCAjM2M4NTAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1idG4tc3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3MgY2RzLWljb24sLmJ0bi5idG4tc3VjY2VzcyBjbHItaWNvbiwuYnRuLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXN1Y2Nlc3M6dmlzaXRlZCwuYnRuLXN1Y2Nlc3MgLmJ0bjp2aXNpdGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4tc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3MgLmJ0''@;'; put 'put ''bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtaG92ZXItYmctY29sb3IsICMzMDZiMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWhvdmVyLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4t''@;'; put 'put ''c3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzIC5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMjU1MjAwIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWJveC1zaGFkb3ctY29sb3IsICMyNTUyMDApIGluc2V0fS5idG4uYnRuLXN1Y2Nl''@;'; put 'put ''c3MuZGlzYWJsZWQsLmJ0bi5idG4tc3VjY2VzczpkaXNhYmxlZCwuYnRuLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCwuYnRuLXN1Y2Nlc3MgLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5v''@;'; put 'put ''dC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWJnLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWRp''@;'; put 'put ''c2FibGVkLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXdhcm5pbmcsLmJ0bi13YXJuaW5nIC5idG57Ym9yZGVyLWNvbG9yOiNkYjIxMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ib3JkZXItY29sb3IsICNkYjIxMDApO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6I2RiMjEwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1iZy1jb2xvciwgI2RiMjEwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi13YXJuaW5nIGNkcy1pY29uLC5idG4uYnRu''@;'; put 'put ''LXdhcm5pbmcgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi13YXJuaW5nOnZpc2l0ZWQsLmJ0bi13YXJuaW5nIC5i''@;'; put 'put ''dG46dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9yLCAjYzIxZDAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ob3Zlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzk5''@;'; put 'put ''MTcwMCBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4td2FybmluZy1ib3gtc2hhZG93LWNvbG9yLCAjOTkxNzAwKSBpbnNldH0uYnRuLmJ0bi13YXJuaW5nLmRpc2FibGVkLC5idG4uYnRuLXdhcm5pbmc6ZGlzYWJsZWQsLmJ0bi13YXJuaW5nIC5idG4uZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi13YXJuaW5nIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1ib3JkZXItY29sb3IsICM2NjY2NjYpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1kYW5nZXIs''@;'; put 'put ''LmJ0bi1kYW5nZXIgLmJ0bntib3JkZXItY29sb3I6I2RiMjEwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYm9yZGVyLWNvbG9yLCAjZGIyMTAwKTtiYWNrZ3JvdW5kLWNvbG9yOiNkYjIxMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1iZy1jb2xv''@;'; put 'put ''ciwgI2RiMjEwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWRhbmdlciBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXIgY2xyLWljb24sLmJ0bi1kYW5nZXIgLmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlciAuYnRuIGNsci1pY29u''@;'; put 'put ''e2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1kYW5nZXI6dmlzaXRlZCwuYnRuLWRhbmdlciAuYnRuOnZpc2l0ZWR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWRh''@;'; put 'put ''bmdlcjpob3ZlciwuYnRuLWRhbmdlciAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWhvdmVyLWJnLWNvbG9yLCAjYzIxZDAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWhvdmVy''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlciAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gIzk5MTcwMCBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGFuZ2VyLWJveC1zaGFkb3ctY29sb3IsICM5OTE3MDAp''@;'; put 'put ''IGluc2V0fS5idG4uYnRuLWRhbmdlci5kaXNhYmxlZCwuYnRuLmJ0bi1kYW5nZXI6ZGlzYWJsZWQsLmJ0bi1kYW5nZXIgLmJ0bi5kaXNhYmxlZCwuYnRuLWRhbmdlciAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtY29sb3IsICM2''@;'; put 'put ''NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1kYW5nZXItZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjNjY2NjY2KTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tb3V0bGluZSwuYnRuLmJ0bi1vdXRsaW5lIC5idG4sLmJ0bi5idG4taW5mby1vdXRsaW5lLC5idG4taW5mby1vdXRsaW5lIC5idG4sLmJ0bi5idG4tb3V0bGluZS1pbmZv''@;'; put 'put ''LC5idG4tb3V0bGluZSAuYnRue2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ib3JkZXItY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLW91dGxpbmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSBjbHItaWNvbiwuYnRuLmJ0''@;'; put 'put ''bi1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUgY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGlu''@;'; put 'put ''ZSAuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbyBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm8gY2xyLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2xyLWljb257Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LWRlZmF1bHQtb3V0bGluZS1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4uYnRuLWluZm8tb3V0bGluZTp2aXNpdGVkLC5idG4taW5mby1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLmJ0bi1vdXRsaW5l''@;'; put 'put ''LWluZm86dmlzaXRlZCwuYnRuLW91dGxpbmUgLmJ0bjp2aXNpdGVke2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IsICMwMDcyYTMpfS5idG4uYnRuLW91dGxpbmU6aG92ZXIsLmJ0bi5idG4tb3V0bGluZSAuYnRuOmhvdmVyLC5idG4uYnRu''@;'; put 'put ''LWluZm8tb3V0bGluZTpob3ZlciwuYnRuLWluZm8tb3V0bGluZSAuYnRuOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtaW5mbzpob3ZlciwuYnRuLW91dGxpbmUgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlM2Y1ZmM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQt''@;'; put 'put ''b3V0bGluZS1ob3Zlci1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1jb2xvciwgIzAwNTY3YSl9LmJ0bi5idG4tb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLmJ0''@;'; put 'put ''bi1pbmZvLW91dGxpbmU6YWN0aXZlLC5idG4taW5mby1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtaW5mbzphY3RpdmUsLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjMTc5YmQzIGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYm94LXNoYWRvdy1jb2xvciwgIzE3OWJkMykgaW5zZXR9LmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG46''@;'; put 'put ''ZGlzYWJsZWQsLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxlZCwuYnRuLWluZm8tb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4taW5mby1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVk''@;'; put 'put ''LC5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCwuYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUgLmJ0bjpkaXNhYmxlZHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6''@;'; put 'put ''bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCAjOGM4YzhjKTtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzcywuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLC5idG4tb3V0bGlu''@;'; put 'put ''ZS1zdWNjZXNzIC5idG57Ym9yZGVyLWNvbG9yOiMzYzg1MDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJvcmRlci1jb2xvciwgIzNjODUwMCk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3Vj''@;'; put 'put ''Y2Vzcy1vdXRsaW5lLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzNjODUwMDtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvciwgIzNjODUwMCl9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBjbHIt''@;'; put 'put ''aWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAu''@;'; put 'put ''YnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG4gY2xyLWljb257Y29sb3I6IzNjODUwMDtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvciwgIzNjODUwMCl9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tb3V0bGluZS1z''@;'; put 'put ''dWNjZXNzOnZpc2l0ZWQsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bjp2aXNpdGVkLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46dmlzaXRlZHtjb2xvcjojM2M4NTAwO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNvbG9yLCAjM2M4NTAwKX0uYnRuLmJ0bi1zdWNjZXNz''@;'; put 'put ''LW91dGxpbmU6aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LXN1Y2Nlc3Mtb3V0bGluZS1ob3Zlci1iZy1jb2xvciwgI2RmZjBkMCk7Y29sb3I6IzI1NTIwMDtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ob3Zlci1jb2xvciwgIzI1NTIwMCl9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXN1''@;'; put 'put ''Y2Nlc3M6YWN0aXZlLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMXJlbSAjNWViNzE1IGluc2V0O2JveC1zaGFkb3c6MCAuMXJlbSAwIDAgdmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUt''@;'; put 'put ''Ym94LXNoYWRvdy1jb2xvciwgIzVlYjcxNSkgaW5zZXR9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2Fi''@;'; put 'put ''bGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVk''@;'; put 'put ''LWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZSwuYnRu''@;'; put 'put ''LmJ0bi1vdXRsaW5lLXdhcm5pbmcsLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRue2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ib3JkZXItY29sb3IsICNjMjFkMDApO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiNkYjIxMDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICNkYjIxMDApfS5idG4u''@;'; put 'put ''YnRuLXdhcm5pbmctb3V0bGluZSBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtd2FybmluZyBjbHItaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuIGNkcy1pY29u''@;'; put 'put ''LC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuIGNsci1pY29ue2NvbG9yOiNkYjIxMDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3IsICNk''@;'; put 'put ''YjIxMDApfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTp2aXNpdGVkLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzp2aXNpdGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOnZpc2l0ZWR7Y29sb3I6I2RiMjEwMDtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvciwgI2RiMjEwMCl9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46aG92''@;'; put 'put ''ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmVkZGQ3O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtaG92ZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM5OTE3MDA7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtaG92ZXItY29sb3IsICM5''@;'; put 'put ''OTE3MDApfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjFyZW0gI2ZjYzViYiBp''@;'; put 'put ''bnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJveC1zaGFkb3ctY29sb3IsICNmY2M1YmIpIGluc2V0fS5idG4uYnRuLXdhcm5pbmctb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi5i''@;'; put 'put ''dG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxl''@;'; put 'put ''ZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJl''@;'; put 'put ''bnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3Is''@;'; put 'put ''ICM2NjY2NjYpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRue2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWRhbmdlci1vdXRsaW5lLWJvcmRlci1jb2xvciwgI2MyMWQwMCk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojZGIyMTAwO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IsICNkYjIxMDApfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtZGFuZ2Vy''@;'; put 'put ''IGNsci1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biBjbHItaWNvbntjb2xvcjojZGIyMTAwO2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IsICNkYjIxMDApfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lOnZpc2l0ZWQsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6dmlzaXRlZCwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46dmlzaXRlZCwuYnRuLW91dGxpbmUtZGFuZ2VyIC5i''@;'; put 'put ''dG46dmlzaXRlZHtjb2xvcjojZGIyMTAwO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IsICNkYjIxMDApfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bjpob3Zl''@;'; put 'put ''ciwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmVkZGQ3O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1iZy1jb2xvciwgI2ZlZGRkNyk7Y29sb3I6Izk5MTcwMDtjb2xvcjp2YXIoLS1jbHItYnRuLWRh''@;'; put 'put ''bmdlci1vdXRsaW5lLWhvdmVyLWNvbG9yLCAjOTkxNzAwKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bjphY3RpdmUsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmFjdGl2ZXtib3gt''@;'; put 'put ''c2hhZG93OjAgLjFyZW0gI2ZjYzViYiBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYm94LXNoYWRvdy1jb2xvciwgI2ZjYzViYikgaW5zZXR9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tZGFuZ2VyLW91''@;'; put 'put ''dGxpbmU6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUtZGFu''@;'; put 'put ''Z2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1i''@;'; put 'put ''b3JkZXItY29sb3IsICM2NjY2NjYpO2JveC1zaGFkb3c6bm9uZX0uYnRuLmJ0bi1saW5rLC5idG4tbGluayAuYnRue2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJvcmRlci1jb2xvciwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tbGluayBjZHMtaWNvbiwuYnRuLmJ0bi1saW5r''@;'; put 'put ''IGNsci1pY29uLC5idG4tbGluayAuYnRuIGNkcy1pY29uLC5idG4tbGluayAuYnRuIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yLCAjMDA3MmEzKX0uYnRuLmJ0bi1saW5rOnZpc2l0ZWQsLmJ0bi1saW5rIC5idG46dmlzaXRlZHtjb2xvcjoj''@;'; put 'put ''MDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvciwgIzAwNzJhMyl9LmJ0bi5idG4tbGluazpob3ZlciwuYnRuLWxpbmsgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNv''@;'; put 'put ''bG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3IsICMwMDU2N2EpfS5idG4uYnRuLWxpbms6YWN0aXZlLC5idG4tbGluayAuYnRuOmFjdGl2ZXtib3gtc2hhZG93Om5vbmV9LmJ0bi5idG4tbGluay5kaXNhYmxlZCwuYnRu''@;'; put 'put ''LmJ0bi1saW5rOmRpc2FibGVkLC5idG4tbGluayAuYnRuLmRpc2FibGVkLC5idG4tbGluayAuYnRuOmRpc2FibGVke2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDtiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYm9yZGVyLWNv''@;'; put 'put ''bG9yLCB0cmFuc3BhcmVudCk7Ym94LXNoYWRvdzpub25lfS5idG4uYnRuLWludmVyc2UsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5idG4taW52ZXJzZSAuYnRue2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtYm9yZGVyLWNv''@;'; put 'put ''bG9yLCB3aGl0ZSk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4t''@;'; put 'put ''aW52ZXJzZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmJ0bi5idG4taW52ZXJzZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmJ0bi1pbnZlcnNlIC5idG4gY2RzLWljb24sLmJ0bi1pbnZl''@;'; put 'put ''cnNlIC5idG4gY2xyLWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY29sb3IsIHdoaXRlKX0uYnRuLmJ0bi1pbnZlcnNlOnZpc2l0ZWQsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOnZpc2l0ZWQsLmJ0bi1pbnZlcnNlIC5idG46dmlzaXRlZHtj''@;'; put 'put ''b2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jb2xvciwgd2hpdGUpfS5idG4uYnRuLWludmVyc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyLC5idG4taW52ZXJzZSAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjI2''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWhvdmVyLWJnLWNvbG9yLCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xNSkpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWhvdmVyLWNvbG9yLCB3aGl0ZSl9LmJ0bi5idG4taW52ZXJzZTphY3RpdmUs''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSwuYnRuLWludmVyc2UgLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICMwMDAwMDA0MCBpbnNldDtib3gtc2hhZG93OjAgLjFyZW0gMCAwIHZhcigtLWNsci1idG4taW52ZXJzZS1ib3gtc2hhZG93LWNvbG9yLCBy''@;'; put 'put ''Z2JhKDAsIDAsIDAsIC4yNSkpIGluc2V0fS5idG4uYnRuLWludmVyc2UuZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkLC5idG4uYnRuLWludmVyc2U6ZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkLC5i''@;'; put 'put ''dG4taW52ZXJzZSAuYnRuLmRpc2FibGVkLC5idG4taW52ZXJzZSAuYnRuOmRpc2FibGVke2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWNvbG9yLCB3aGl0ZSk7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7YmFja2dyb3VuZC1jb2xvcjp0cmFu''@;'; put 'put ''c3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1iZy1jb2xvciwgdHJhbnNwYXJlbnQpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtYm9yZGVyLWNvbG9yLCB3aGl0ZSk7Ym94''@;'; put 'put ''LXNoYWRvdzpub25lfS5idG4uYnRuLXNtLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLXNtIC5idG57bGluZS1oZWlnaHQ6MS4xNXJlbTtsaW5lLWhlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtbGluZS1oZWlnaHQsIDEuMTVyZW0pO2xldHRl''@;'; put 'put ''ci1zcGFjaW5nOi4wNzNlbTtmb250LXNpemU6LjU1cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtZm9udC1zaXplLCAuNTVyZW0pO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtZm9udC13''@;'; put 'put ''ZWlnaHQsIDUwMCk7aGVpZ2h0OjEuMnJlbTtoZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWhlaWdodCwgMS4ycmVtKTtwYWRkaW5nOjAgLjZyZW07cGFkZGluZzp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtcGFkZGluZywgMCAuNnJlbSl9LmJ0bi1i''@;'; put 'put ''bG9ja3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0bnttYXJnaW4tdG9wOi4zcmVtO21hcmdpbi10b3A6dmFyKC0tY2xyLWJ0bi12ZXJ0aWNhbC1tYXJnaW4sIC4zcmVtKTttYXJnaW4tYm90dG9tOi4zcmVtO21hcmdpbi1ib3R0b206dmFyKC0tY2xyLWJ0bi12''@;'; put 'put ''ZXJ0aWNhbC1tYXJnaW4sIC4zcmVtKTttYXJnaW4tcmlnaHQ6LjZyZW07bWFyZ2luLXJpZ2h0OnZhcigtLWNsci1idG4taG9yaXpvbnRhbC1tYXJnaW4sIC42cmVtKTttYXJnaW4tbGVmdDowfS5idG4uYnRuLWxpbmt7bWFyZ2luLXJpZ2h0OjB9LmJ0bi5idG4tbGluay5idG4taW52ZXJzZSwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4uYnRuLWxpbmt7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tc206bm90KC5idG4tbGluaykgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOm5vdCguYnRuLWxpbmspIGNsci1pY29ue3dpZHRoOi42''@;'; put 'put ''cmVtO3dpZHRoOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemUsIC42cmVtKTtoZWlnaHQ6LjZyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemUsIC42cmVtKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtLjA1cmVt''@;'; put 'put ''LDApfS5idG4tc206bm90KC5idG4tbGluaykgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOm5vdCguYnRuLWxpbmspIGNkcy1pY29ue3dpZHRoOi42cmVtO3dpZHRoOnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemUsIC42cmVtKTto''@;'; put 'put ''ZWlnaHQ6LjZyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1pY29uLXNpemUsIC42cmVtKTttYXJnaW4tdG9wOi0uMXJlbX0uYnRuLWljb257bWluLXdpZHRoOjB9LmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG46ZGlz''@;'; put 'put ''YWJsZWQgY2RzLWljb24sLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjojY2NjO2NvbG9yOnZhcigtLWNsci1idG4taWNvbi1kaXNhYmxlZC1jb2xvciwgI2NjY2NjYyl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLWNvbG9yOiMwMDcyYTM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ib3JkZXItY29sb3IsICMw''@;'; put 'put ''MDcyYTMpO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvciwgIzAwNzJhMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdoaXRlKX0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5''@;'; put 'put ''IC5kcm9wZG93bi10b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUg''@;'; put 'put ''Y2xyLWljb24sLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZSBjbHItaWNvbiwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNvbiwuYnRuLWdyb3Vw''@;'; put 'put ''LmJ0bi1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZSBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvciwgd2hpdGUpfS5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVkLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZTp2aXNpdGVkLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTp2aXNpdGVkLC5idG4tZ3JvdXAuYnRuLWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOnZpc2l0ZWR7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY29sb3IsIHdo''@;'; put 'put ''aXRlKX0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIg''@;'; put 'put ''LmRyb3Bkb3duLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDU2N2E7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktaG92ZXItYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNlM2Y1ZmM7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9y''@;'; put 'put ''LCAjZTNmNWZjKX0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmUsLmJ0bi1ncm91cC5idG4td2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwuYnRuLWdyb3VwLmJ0''@;'; put 'put ''bi1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Ym94LXNoYWRvdzowIC4xcmVtICMxNzliZDMgaW5zZXQ7Ym94LXNoYWRvdzowIC4xcmVtIDAgMCB2YXIoLS1jbHItYnRuLXByaW1hcnktYm94LXNoYWRvdy1jb2xvciwgIzE3OWJkMykgaW5zZXR9LmJ0bi1ncm91cC5idG4tcHJpbWFy''@;'; put 'put ''eSAuZHJvcGRvd24tdG9nZ2xlLmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLXByaW1hcnkgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xl''@;'; put 'put ''OmRpc2FibGVkLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQsLmJ0bi1ncm91''@;'; put 'put ''cC5idG4tZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JveC1zaGFkb3c6bm9uZX0uYnRuLWdy''@;'; put 'put ''b3VwLmJ0bi1kYW5nZXIgOmRpc2FibGVke2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS0tLWNsci1jb2xvci1uZXV0cmFsLTQwMCwgI2NjY2NjYyl9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXIt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJvcmRlci1jb2xvciwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstYmctY29sb3IsIHRyYW5zcGFyZW50KTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci1idG4tbGluay1jb2xvciwgIzAwNzJhMyl9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uLC5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZSBjbHItaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xv''@;'; put 'put ''ciwgIzAwNzJhMyl9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOnZpc2l0ZWR7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IsICMwMDcyYTMpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNvbG9yLCB0cmFuc3BhcmVudCk7Y29sb3I6IzAwNTY3YTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3IsICMwMDU2N2EpfS5idG4tZ3JvdXAuYnRuLWxpbmsg''@;'; put 'put ''LmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Ym94LXNoYWRvdzpub25lfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYnRuLWxp''@;'; put 'put ''bmstZGlzYWJsZWQtY29sb3IsICM2NjY2NjYpO2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYmctY29sb3IsIHRyYW5zcGFyZW50KTtib3JkZXItY29s''@;'; put 'put ''b3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1ib3JkZXItY29sb3IsIHRyYW5zcGFyZW50KTtib3gtc2hhZG93Om5vbmV9LmJ0bi1ncm91cC5idG4tc20gLmJ0bi1ncm91cC1vdmVyZmxvdz4uZHJvcGRvd24tdG9nZ2xlLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1ncm91cC5idG4gLmJ0bi1ncm91cC1vdmVyZmxvdz4uZHJvcGRvd24tdG9nZ2xle2xpbmUtaGVpZ2h0OjEuMTVyZW07bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWxpbmUtaGVpZ2h0LCAxLjE1cmVtKTtsZXR0ZXIt''@;'; put 'put ''c3BhY2luZzouMDczZW07Zm9udC1zaXplOi41NXJlbTtmb250LXNpemU6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtc2l6ZSwgLjU1cmVtKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWZvbnQtd2Vp''@;'; put 'put ''Z2h0LCA1MDApO2hlaWdodDoxLjJyZW07aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQsIDEuMnJlbSk7cGFkZGluZzowIC42cmVtO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmcsIDAgLjZyZW0pfS5jaGVja2Jv''@;'; put 'put ''eC5idG4sLmNoZWNrYm94LWlubGluZS5idG4sLnJhZGlvLmJ0biwucmFkaW8taW5saW5lLmJ0bntwYWRkaW5nOjB9LmNoZWNrYm94LmJ0biBsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwucmFkaW8uYnRuIGxhYmVsLC5yYWRpby1pbmxpbmUuYnRuIGxhYmVse2Rpc3BsYXk6Ymxv''@;'; put 'put ''Y2s7bGluZS1oZWlnaHQ6aW5oZXJpdDtwYWRkaW5nOjAgLjZyZW07Y3Vyc29yOnBvaW50ZXJ9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmUsLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDphZnRlciwuY2hlY2tib3gtaW5saW5l''@;'; put 'put ''LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmUsLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7Y29udGVudDpub25lfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb10rbGFiZWw6YmVmb3JlLC5yYWRpby5idG4gaW5wdXRb''@;'; put 'put ''dHlwZT1yYWRpb10rbGFiZWw6YWZ0ZXIsLnJhZGlvLWlubGluZS5idG4gaW5wdXRbdHlwZT1yYWRpb10rbGFiZWw6YmVmb3JlLC5yYWRpby1pbmxpbmUuYnRuIGlucHV0W3R5cGU9cmFkaW9dK2xhYmVsOmFmdGVye2NvbnRlbnQ6bm9uZX0uY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBl''@;'; put 'put ''PWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOiMwMDcyYTM7Y29sb3I6I2ZmZn0uY2hlY2tib3guYnRuIGxhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuIGxhYmVse3dpZHRoOjEwMCV9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4t''@;'; put 'put ''c2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hd''@;'; put 'put ''OmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xy''@;'; put 'put ''LWljb24sLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gu''@;'; put 'put ''YnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5i''@;'; put 'put ''dG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5''@;'; put 'put ''IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNo''@;'; put 'put ''ZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNo''@;'; put 'put ''ZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1p''@;'; put 'put ''bmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1v''@;'; put 'put ''dXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxp''@;'; put 'put ''bmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFy''@;'; put 'put ''eS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFy''@;'; put 'put ''eS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXBy''@;'; put 'put ''aW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxp''@;'; put 'put ''bmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5m''@;'; put 'put ''byBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5''@;'; put 'put ''cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnkgaW5wdXRb''@;'; put 'put ''dHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNv''@;'; put 'put ''biwuY2hlY2tib3guYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4t''@;'; put 'put ''c3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojMzA2YjAwO2NvbG9yOiNmZmZ9''@;'; put 'put ''LmNoZWNrYm94LmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5''@;'; put 'put ''cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNo''@;'; put 'put ''ZWNrYm94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4t''@;'; put 'put ''ZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2NvbG9yOiNmZmZ9LmNoZWNrYm94LmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWxp''@;'; put 'put ''bmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06''@;'; put 'put ''Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMDA1NjdhfS5jaGVja2JveC5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06''@;'; put 'put ''Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xy''@;'; put 'put ''LWljb24sLmNoZWNrYm94LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5j''@;'; put 'put ''aGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxp''@;'; put 'put ''bmUuYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2Jv''@;'; put 'put ''eC1pbmxpbmUuYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6I2ZmZmZmZjI2O2NvbG9yOiNmZmZ9LnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNr''@;'; put 'put ''ZWQrbGFiZWw+Y2RzLWljb257YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2NvbG9yOiNmZmZ9LnJhZGlvLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8u''@;'; put 'put ''YnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCts''@;'; put 'put ''YWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVs''@;'; put 'put ''PmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1z''@;'; put 'put ''ZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWws''@;'; put 'put ''LnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWlu''@;'; put 'put ''Zm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlu''@;'; put 'put ''cHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5w''@;'; put 'put ''dXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6IzMwNmIwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4td2Fy''@;'; put 'put ''bmluZyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0''@;'; put 'put ''eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVs''@;'; put 'put ''PmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtd2FybmluZyBpbnB1''@;'; put 'put ''dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtd2FybmluZyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtd2FybmluZyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNk''@;'; put 'put ''cy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJl''@;'; put 'put ''bD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZS1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtjb2xvcjojZmZmfS5yYWRpby5i''@;'; put 'put ''dG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29u''@;'; put 'put ''e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzAwNTY3YX0ucmFkaW8uYnRuLmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQr''@;'; put 'put ''bGFiZWwsLnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LWludmVyc2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYyNjtjb2xvcjoj''@;'; put 'put ''ZmZmfS5idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtZmxleDttYXJnaW4tcmlnaHQ6LjZyZW19LmJ0bi1ncm91cCBjbHItZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cCBjbHItZHJvcGRvd246bGFzdC1jaGlsZCAuZHJvcGRvd24tdG9nZ2xle2Jv''@;'; put 'put ''cmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMTVyZW19LmJ0bi1ncm91cCAuYnRue21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDtvdmVyZmxvdzpoaWRkZW59LmJ0bi1ncm91cCAuYnRuIGxhYmVse2hlaWdodDoxMDAlfS5idG4tZ3Jv''@;'; put 'put ''dXAgLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXN7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MTt0b3A6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2JveC1zaGFkb3c6''@;'; put 'put ''MCAwIC4yNXJlbSAjNTFjYmVlO2JveC1zaGFkb3c6MCAwIC4yNXJlbSB2YXIoLS1jbHItYnRuLWdyb3VwLWZvY3VzLW91dGxpbmUsICM1MWNiZWUpO3BhZGRpbmc6LjE1cmVtIDAgLjE1cmVtIC4xNXJlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29s''@;'; put 'put ''b3I6IzUxY2JlZTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1ncm91cC1mb2N1cy1vdXRsaW5lLCAjNTFjYmVlKX0uYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6Oi1tcy1jaGVjaywuYnRuLWdyb3VwIC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXM6Oi1t''@;'; put 'put ''cy1jaGVja3tkaXNwbGF5Om5vbmV9LmJ0bi1ncm91cCAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6''@;'; put 'put ''MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpmaXJzdC1jaGlsZCkgLmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKSAu''@;'; put 'put ''YnRue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1wcmltYXJ5IC5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdy''@;'; put 'put ''b3VwLmJ0bi1zdWNjZXNzIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0biwuYnRuLWdyb3VwLmJ0bi1zdWNjZXNzIC5idG46bm90KDpsYXN0LWNoaWxkKSwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKSAuYnRuLC5idG4tZ3JvdXAuYnRuLWRhbmdl''@;'; put 'put ''ciAuYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4td2FybmluZyAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpIC5idG4sLmJ0bi1ncm91cC5idG4td2FybmluZyAuYnRuOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luOjA7bWFyZ2luLXJpZ2h0Oi4wNXJlbTttYXJnaW4tcmlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1ib3JkZXItd2lkdGgsIC4wNXJlbSl9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAuZHJvcGRvd24tbWVudSAuYnRuLC5idG4tZ3JvdXAuYnRuLXN1Y2Nlc3MgLmRyb3Bkb3duLW1lbnUgLmJ0biwuYnRuLWdyb3VwLmJ0bi1kYW5nZXIgLmRyb3Bkb3duLW1lbnUgLmJ0biwu''@;'; put 'put ''YnRuLWdyb3VwLmJ0bi13YXJuaW5nIC5kcm9wZG93bi1tZW51IC5idG57bWFyZ2luOjB9LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS5idG4tZ3JvdXA+LmJ0bi1ncm91cC1vdmVyZmxvdzpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG46''@;'; put 'put ''Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXAtb3ZlcmZs''@;'; put 'put ''b3c6bGFzdC1jaGlsZDpmaXJzdC1jaGlsZD4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5idG4tZ3JvdXAgLmJ0bisuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAu''@;'; put 'put ''dG9vbHRpcDpub3QoOmZpcnN0LWNoaWxkKSAuYnRue2JvcmRlci1sZWZ0Om5vbmV9LmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAtb3ZlcmZsb3cgLmJ0bntib3JkZXItbGVmdDpub25lfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZSwuYnRuLWdyb3VwLmJ0bi1pY29uLWxp''@;'; put 'put ''bmsuYnRuLWxpbmsgLmJ0biwuYnRuLWdyb3VwLmJ0bi1pY29uIC5idG57bWluLXdpZHRoOjB9LmJ0bi1ncm91cCAuY2xyLWljb24tdGl0bGV7ZGlzcGxheTpub25lO3RleHQtdHJhbnNmb3JtOm5vbmV9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xle2Rpc3BsYXk6YmxvY2t9LmJ0bi1ncm91''@;'; put 'put ''cCAuZHJvcGRvd24tbWVudSBjZHMtaWNvbiwuYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IGNsci1pY29ue2Rpc3BsYXk6bm9uZX0uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IC5jbHItaWNvbi10aXRsZXtkaXNwbGF5OmlubGluZX0uY2hlY2tib3gsLnJhZGlve3Bvc2l0aW9uOnJlbGF0aXZl''@;'; put 'put ''fS5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwuY2hlY2tib3ggaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvIGlucHV0W3R5cGU9Y2hlY2tib3hdLC5yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjA7d2lkdGg6MDtvcGFj''@;'; put 'put ''aXR5OjB9LmNhcmQtZm9vdGVyIC5jaGVja2JveC5idG4gbGFiZWwsLmNhcmQtZm9vdGVyIC5yYWRpby5idG4gbGFiZWx7bGluZS1oZWlnaHQ6MS4xNXJlbX0uZHJvcGRvd24tbWVudS5jbHItYnV0dG9uLWdyb3VwLW1lbnV7dmlzaWJpbGl0eTp2aXNpYmxlfWJ1dHRvbi5jbG9zZXtwYWRkaW5n''@;'; put 'put ''OjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjhyZW07dHJhbnNpdGlvbjpjb2xvciBsaW5lYXIgLjJzO2ZvbnQtd2VpZ2h0OjIwMDt0ZXh0LXNoYWRvdzpub25lO2xp''@;'; put 'put ''bmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbCwgIzhjOGM4Yyl9LmNsb3NlIGNkcy1pY29uLC5jbG9zZSBjbHItaWNvbntmaWxsOiM4YzhjOGM7ZmlsbDp2YXIoLS1jbHItY2xvc2UtY29sb3ItLW5vcm1hbCwgIzhjOGM4''@;'; put 'put ''Yyl9LmNsb3NlOmZvY3VzLC5jbG9zZTpob3ZlciwuY2xvc2U6YWN0aXZle29wYWNpdHk6MTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXMgY2RzLWljb24sLmNsb3NlOmZvY3VzIGNsci1pY29uLC5jbG9zZTpob3ZlciBj''@;'; put 'put ''ZHMtaWNvbiwuY2xvc2U6aG92ZXIgY2xyLWljb24sLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6IzAwMDtmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci0taG92ZXIsIGJsYWNrKX0uY2xvc2U6Zm9jdXN7b3V0bGluZTpIaWdobGlnaHQgc29saWQg''@;'; put 'put ''LjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfTpyb290ey0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tOTAwKTstLWNsci1hbGVydC1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tY29sb3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29s''@;'; put 'put ''b3IpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eToxOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItb3BhY2l0eToxOy0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5Oi44Oy0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6MTstLWNsci1hbGVydC1ib3JkZXJyYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRp''@;'; put 'put ''dXMpOy0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlv''@;'; put 'put ''bi04MDApOy0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLW9w''@;'; put 'put ''YWNpdHkpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcik7LS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItb3Bh''@;'; put 'put ''Y2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy01MCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLW9wYWNpdHk6''@;'; put 'put ''dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItb3BhY2l0eTp2''@;'; put 'put ''YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTEwMCk7LS1jbHItYWxlcnQtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHIt''@;'; put 'put ''YWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctODAwKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQt''@;'; put 'put ''YWN0aW9uLWNvbG9yKTstLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1j''@;'; put 'put ''bHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVy''@;'; put 'put ''dC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItb3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci0xMDApOy0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTkwMCk7LS1jbHItYWxlcnQtZGFuZ2VyLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApOy0tY2xyLWFsZXJ0LWRhbmdlci1h''@;'; put 'put ''Y3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1h''@;'; put 'put ''bGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29u''@;'; put 'put ''LWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1h''@;'; put 'put ''cHAtYWxlcnQtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9y''@;'; put 'put ''KTstLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1pbmZvLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWNs''@;'; put 'put ''b3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC13YXJuaW5nLWJnLWNvbG9yOmhzbCgyNiwgMTAwJSwgMzglKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LXdhcm5pbmctZm9udC1jb2xvcjp2YXIoLS1jbHItYXBwLWxldmVsLWFsZXJ0LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9u''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29u''@;'; put 'put ''LW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1p''@;'; put 'put ''Y29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yOm5vbmU7''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xv''@;'; put 'put ''c2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tb3BhY2l0eSk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVy''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHkpOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJv''@;'; put 'put ''cmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTcwMCk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2xyLWFwcC1sZXZlbC1hbGVydC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWNsb3NlLWljb24tY29sb3IpOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1v''@;'; put 'put ''cGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNv''@;'; put 'put ''bi1ob3Zlci1vcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5KTstLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wLCB3aGl0ZSk7LS1jbHItYXBwLWFsZXJ0LWluZm8tcGFnZXItYmctY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi04MDAsICMwMDU2N2EpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTkwMCwgIzhmNWEwMCk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1iZy1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItZGFuZ2VyLTkwMCwgIzk5MTcwMCl9LmFsZXJ0LWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07bWFyZ2luLWxlZnQ6LS4xNXJlbTttYXJnaW4tdG9wOi0uMnJlbX0uYWxlcnQtaWNvbi13cmFwcGVye2ZsZXg6MCAwIDEuMjVyZW07YWxpZ24tc2VsZjpzdGFydDtwYWRkaW5nLXRv''@;'; put 'put ''cDouMDVyZW07aGVpZ2h0Oi45cmVtfS5hbGVydC1pdGVte2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDpub3dyYXA7bWluLWhlaWdodDouOXJlbTttYXJnaW4tYm90dG9tOi4zcmVtfS5hbGVydC1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5hbGVydC1pdGVt''@;'; put 'put ''c3tmbGV4OjEgMSBhdXRvO2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO3BhZGRpbmc6LjVyZW0gLjU1cmVtO2Rpc3BsYXk6ZmxleH0uYWxlcnQtaXRlbT5zcGFuLC5hbGVydC10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC1iYXNpczo5OCU7''@;'; put 'put ''bWF4LXdpZHRoOjk4JTttYXJnaW4tcmlnaHQ6LjZyZW07dGV4dC1hbGlnbjpsZWZ0fS5hbGVydHtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDouOXJlbTtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4''@;'; put 'put ''O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWFsZXJ0LWJvcmRlcnJhZGl1cywgLjE1cmVtKTttYXJnaW4tdG9wOi4zcmVtO2JhY2tncm91bmQ6I2UzZjVmYztiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1pbmZvLWJnLWNvbG9yLCAjZTNmNWZjKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMwMDU2N2E7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWJvcmRl''@;'; put 'put ''ci1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0IC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZXtj''@;'; put 'put ''b2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8t''@;'; put 'put ''YWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0IC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydCAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46''@;'; put 'put ''YWN0aXZlLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGluc2V0fS5hbGVydCAu''@;'; put 'put ''YWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydCAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNp''@;'; put 'put ''dHk6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQgLmNsb3NlIGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0IC5j''@;'; put 'put ''bG9zZTpmb2N1cywuYWxlcnQgLmNsb3NlOmhvdmVyLC5hbGVydCAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWluZm8t''@;'; put 'put ''Y2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtaW5mb3tiYWNrZ3JvdW5kOiNlM2Y1ZmM7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtaW5mby1iZy1jb2xvciwgI2UzZjVmYyk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA1NjdhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1ib3JkZXItY29sb3IsICMwMDU2N2EpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1pY29ue2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWFsZXJ0LWluZm8taWNvbi1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2NjYpO2JvcmRlci1j''@;'; put 'put ''b2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1pbmZvLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1j''@;'; put 'put ''b2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWlu''@;'; put 'put ''Zm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCl9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5zZXQ7Ym94LXNoYWRv''@;'; put 'put ''dzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCkgaW5zZXR9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC5hbGVydC1pbmZv''@;'; put 'put ''IC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKTtjb2xvcjojNGYwMDcwfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3IsICM2NjY2NjYpO29wYWNpdHk6MTtvcGFjaXR5OnZhcigt''@;'; put 'put ''LWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24tb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZSBjbHItaWNvbntmaWxsOiM2NjY7ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCAjNjY2''@;'; put 'put ''NjY2KX0uYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTphY3RpdmV7Y29sb3I6IzRmMDA3MDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCAj''@;'; put 'put ''NGYwMDcwKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6I2RmZjBkMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJnLWNvbG9yLCAjZGZm''@;'; put 'put ''MGQwKTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IsICM2NjY2NjYpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiMzMDZiMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJvcmRlci1jb2xvciwgIzMwNmIw''@;'; put 'put ''MCl9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6IzMwNmIwMDtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCAjMzA2YjAwKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtj''@;'; put 'put ''b2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nik7Ym9yZGVyLWNvbG9yOiM2NjY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFs''@;'; put 'put ''ZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQuYWxlcnQt''@;'; put 'put ''c3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQuYWxlcnQt''@;'; put 'put ''c3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5i''@;'; put 'put ''dG46aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojNGYwMDcwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQuYWxlcnQtc3VjY2Vz''@;'; put 'put ''cyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzRmMDA3MCBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24t''@;'; put 'put ''YWN0aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb246aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFsZXJ0LmFsZXJ0''@;'; put 'put ''LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLC5hbGVydC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUt''@;'; put 'put ''Y29sb3IsICM0ZjAwNzApO2NvbG9yOiM0ZjAwNzB9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3Nle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nl''@;'; put 'put ''c3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29sb3IsICM2NjY2NjYp''@;'; put 'put ''fS5hbGVydC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmFjdGl2ZXtjb2xvcjojNGYwMDcwO2NvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXIt''@;'; put 'put ''Y29sb3IsICM0ZjAwNzApO29wYWNpdHk6MTtvcGFjaXR5OnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDojZmZmNGM3O2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYmct''@;'; put 'put ''Y29sb3IsICNmZmY0YzcpO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvciwgIzMzMzMzMyk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2FkNzYwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYm9yZGVyLWNv''@;'; put 'put ''bG9yLCAjYWQ3NjAwKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtaWNvbntjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3IsICM0NTQ1NDUpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQuYWxlcnQt''@;'; put 'put ''d2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuLC5h''@;'; put 'put ''bGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmZvY3VzLC5h''@;'; put 'put ''bGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiM0ZjAwNzA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApfS5hbGVydC5h''@;'; put 'put ''bGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym94LXNoYWRvdzowIC4wNXJlbSAjNGYwMDcwIGluc2V0O2JveC1zaGFkb3c6MCAuMDVyZW0gMCAwIHZhcigtLWNsci1hbGVydC13YXJu''@;'; put 'put ''aW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsICM0ZjAwNzApIGluc2V0fS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwu''@;'; put 'put ''YWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0''@;'; put 'put ''aW9uLWFjdGl2ZS1jb2xvciwgIzRmMDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2V7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yLCAjNjY2NjY2KTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHIt''@;'; put 'put ''YWxlcnQtd2FybmluZy1jbG9zZS1pY29uLW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDojNjY2O2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xv''@;'; put 'put ''ciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2Ut''@;'; put 'put ''aWNvbi1ob3Zlci1jb2xvciwgIzRmMDA3MCk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQuYWxlcnQtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZGRkNztiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1k''@;'; put 'put ''YW5nZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCAjNjY2NjY2KTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOTkxNzAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWJv''@;'; put 'put ''cmRlci1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtaWNvbntjb2xvcjojOTkxNzAwO2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvciwgIzk5MTcwMCl9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCAjNjY2NjY2KTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsICM2NjY2NjYpfS5hbGVydC5hbGVy''@;'; put 'put ''dC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biwuYWxl''@;'; put 'put ''cnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojNjY2O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQu''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xl''@;'; put 'put ''LmJ0bjpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6IzRmMDA3MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCAjNGYwMDcwKX0uYWxlcnQuYWxlcnQtZGFuZ2Vy''@;'; put 'put ''IC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM0ZjAwNzAgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0''@;'; put 'put ''aXZlLWNvbG9yLCAjNGYwMDcwKSBpbnNldH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFsZXJ0LmFsZXJ0LWRhbmdl''@;'; put 'put ''ciAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1jb2xvciwgIzRm''@;'; put 'put ''MDA3MCk7Y29sb3I6IzRmMDA3MH0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nik7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29u''@;'; put 'put ''LW9wYWNpdHksIDEpfS5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlIGNsci1pY29ue2ZpbGw6IzY2NjtmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvciwgIzY2NjY2Nil9LmFsZXJ0LmFsZXJ0LWRh''@;'; put 'put ''bmdlciAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZle2NvbG9yOiM0ZjAwNzA7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCAjNGYwMDcwKTtvcGFj''@;'; put 'put ''aXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbntoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07bWFyZ2luLXJpZ2h0Oi4zcmVtfS5hbGVydCAuYWxlcnQtaXRlbSAuY2xyLWlj''@;'; put 'put ''b24rLmFsZXJ0LXRleHR7cGFkZGluZy1sZWZ0OjB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbisuYWxlcnQtdGV4dDpiZWZvcmV7Y29udGVudDpub25lfS5hbGVydCAuYWxlcnQtYWN0aW9uc3tmbGV4OjAgMCBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uYWxlcnQgLmFsZXJ0LWFjdGlv''@;'; put 'put ''bnMgLmRyb3Bkb3duOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0uMXJlbX0uYWxlcnQgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVtO2xpbmUtaGVpZ2h0''@;'; put 'put ''OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWx9LmFsZXJ0IC5hbGVydC1hY3Rpb246bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6LjZyZW19LmFsZXJ0IC5hbGVydC1hY3Rpb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGV7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uYWxlcnQg''@;'; put 'put ''LmFsZXJ0LWFjdGlvbiBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi10ZXh0LWNvbG9yLCAjNjY2NjY2KX0uYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0''@;'; put 'put ''bil7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9LmFsZXJ0IC5jbG9zZXt3aWR0aDoxLjJyZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MS44cmVtO2ZsZXg6MCAwIDEuNHJlbTtvcmRlcjoxMDA7cGFkZGluZy1yaWdodDouMnJlbX0uYWxlcnQgLmNsb3NlIGNk''@;'; put 'put ''cy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257bWFyZ2luLXRvcDotLjE1cmVtO2hlaWdodDoxLjE1cmVtO3dpZHRoOjEuMTVyZW19LmFsZXJ0IC5jbG9zZX4uYWxlcnQtaXRlbT4uYWxlcnQtYWN0aW9uc3twYWRkaW5nLXJpZ2h0Oi42cmVtfS5hbGVydCAuY2xvc2V+LmFsZXJ0LWl0ZW0+''@;'; put 'put ''LmFsZXJ0LWFjdGlvbnM+LmFsZXJ0LWFjdGlvbjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDouNnJlbX0uYWxlcnQtYXBwLWxldmVse21hcmdpbjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZDojMDA3MmEzO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVy''@;'; put 'put ''dC1pbmZvLWJnLWNvbG9yLCAjMDA3MmEzKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5m''@;'; put 'put ''by1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0''@;'; put 'put ''aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0''@;'; put 'put ''ZSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZS5idG46''@;'; put 'put ''Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUt''@;'; put 'put ''Y29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC1pbmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKSBpbnNldH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb246Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNv''@;'; put 'put ''bG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1p''@;'; put 'put ''Y29uLW9wYWNpdHksIC44KX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwg''@;'; put 'put ''LmNsb3NlOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eToxO29wYWNpdHk6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNzJhMztiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1iZy1jb2xvciwgIzAwNzJhMyk7Y29sb3I6I2Zm''@;'; put 'put ''Zjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9yLCB3aGl0ZSl9LmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0''@;'; put 'put ''LWluZm8tYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFw''@;'; put 'put ''cC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZv''@;'; put 'put ''IC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAu''@;'; put 'put ''ZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpIGlu''@;'; put 'put ''c2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1p''@;'; put 'put ''bmZvLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6Ljg7b3BhY2l0eTp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZhcigtLWNsci1hcHAt''@;'; put 'put ''YWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6YWN0aXZle2NvbG9y''@;'; put 'put ''OiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRh''@;'; put 'put ''bmdlcntiYWNrZ3JvdW5kOiNjMjFkMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1iZy1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOjB9LmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7''@;'; put 'put ''Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVy''@;'; put 'put ''dC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIg''@;'; put 'put ''LmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwu''@;'; put 'put ''YWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFs''@;'; put 'put ''ZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9y''@;'; put 'put ''OiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSkgaW5zZXR9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5n''@;'; put 'put ''ZXIgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb246YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10''@;'; put 'put ''b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tYWN0aXZl''@;'; put 'put ''LWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eTouODtvcGFjaXR5OnZhcigtLWNsci1hcHAt''@;'; put 'put ''YWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2UgY2xyLWljb257ZmlsbDojZmZmO2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1k''@;'; put 'put ''YW5nZXItY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZXtjb2xv''@;'; put 'put ''cjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLW9wYWNpdHksIDEpfS5hbGVydC1hcHAtbGV2ZWwuYWxl''@;'; put 'put ''cnQtd2FybmluZ3tiYWNrZ3JvdW5kOiNjMjU0MDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYmctY29sb3IsICNjMjU0MDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IsIHdoaXRlKTtib3JkZXI6MH0uYWxl''@;'; put 'put ''cnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bk''@;'; put 'put ''b3duLXRvZ2dsZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IsIHdoaXRl''@;'; put 'put ''KX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3Rp''@;'; put 'put ''dmUsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2ds''@;'; put 'put ''ZS5idG46YWN0aXZle2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICNmZmYgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKSBpbnNl''@;'; put 'put ''dH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbjphY3RpdmUsLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSk7Y29sb3I6I2ZmZn0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tY29sb3IsIHdo''@;'; put 'put ''aXRlKTtvcGFjaXR5Oi44O29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tb3BhY2l0eSwgLjgpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZSBjbHIt''@;'; put 'put ''aWNvbntmaWxsOiNmZmY7ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciwuYWxl''@;'; put 'put ''cnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmFjdGl2ZXtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yLCB3aGl0ZSk7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNs''@;'; put 'put ''b3NlLWljb24taG92ZXItb3BhY2l0eSwgMSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6IzNjODUwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1iZy1jb2xvciwgIzNjODUwMCk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBw''@;'; put 'put ''LWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvciwgd2hpdGUpO2JvcmRlcjowfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6I2ZmZjtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvciwgd2hpdGUpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46aG92ZXIsLmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuOmhvdmVy''@;'; put 'put ''LC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5h''@;'; put 'put ''bGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gI2ZmZiBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItYXBw''@;'; put 'put ''LWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvciwgd2hpdGUpIGluc2V0fS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmZvY3VzLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmhvdmVyLC5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFs''@;'; put 'put ''ZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3IsIHdoaXRlKTtjb2xvcjojZmZmfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2V7Y29sb3I6I2ZmZjtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvciwgd2hpdGUpO29wYWNpdHk6Ljg7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1vcGFjaXR5LCAuOCl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5jbG9zZSBjZHMt''@;'; put 'put ''aWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNsci1pY29ue2ZpbGw6I2ZmZjtmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZle2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29sb3IsIHdoaXRlKTtv''@;'; put 'put ''cGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1vcGFjaXR5LCAxKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtc3twYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouM3JlbX0uYWxlcnQtYXBwLWxldmVsIC5hbGVy''@;'; put 'put ''dC1pdGVte2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6MS4ycmVtfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bnttYXJnaW46MH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtPnNwYW4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxl''@;'; put 'put ''cnQtdGV4dHtmbGV4OjAgMSAxMDAlfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWljb24td3JhcHBlcnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZXtoZWlnaHQ6MS44cmVtO292ZXJmbG93OmhpZGRlbn0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjZHMtaWNvbiwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsIC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW19LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2dsZXt0ZXh0LWRlY29yYXRpb246bm9uZX0uYWxlcnQtc217Zm9udC1zaXplOi41NXJlbTts''@;'; put 'put ''ZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6LjhyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVtc3twYWRkaW5nOi4xNXJlbSAuMjVyZW19LmFsZXJ0LXNtIC5hbGVydC1pdGVte3BhZGRpbmctdG9wOi4wNXJlbTttYXJnaW4tYm90dG9tOi4ycmVtfS5hbGVydC1zbSAuYWxlcnQtaXRl''@;'; put 'put ''bTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uYWxlcnQtc20gLmFsZXJ0LWljb24td3JhcHBlcntwYWRkaW5nLXRvcDowO2hlaWdodDouOHJlbX0uYWxlcnQtc20gLmFsZXJ0LWljb257bWFyZ2luLWxlZnQ6LS4ycmVtO21hcmdpbi10b3A6LS4ycmVtfS5hbGVydC1zbSAuYWxlcnQtaXRl''@;'; put 'put ''bT5zcGFuLC5hbGVydC1zbSAuYWxlcnQtdGV4dHttYXJnaW4tcmlnaHQ6LjNyZW19LmFsZXJ0LXNtIC5jbG9zZXtwYWRkaW5nLXJpZ2h0OjA7ZmxleDowIDAgMS4ycmVtO2hlaWdodDoxLjJyZW07bGluZS1oZWlnaHQ6MS4ycmVtfS5hbGVydC1zbSAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LXNt''@;'; put 'put ''IC5jbG9zZSBjbHItaWNvbnttYXJnaW4tdG9wOi0uMjVyZW07bWFyZ2luLXJpZ2h0Oi0uMDVyZW07aGVpZ2h0OjFyZW07d2lkdGg6MXJlbTtsaW5lLWhlaWdodDoxLjA1cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5hbGVydCAuYWxlcnQtaXRlbXtmbGV4LXdyYXA6''@;'; put 'put ''d3JhcH0uYWxlcnQgLmFsZXJ0LXRleHR7bWFyZ2luLXJpZ2h0OjA7bWF4LXdpZHRoOjkwJTt3aWR0aDo5MCU7ZmxleC1iYXNpczo5MCV9LmFsZXJ0IC5hbGVydC1hY3Rpb25ze2ZsZXg6MSAwIDEwMCU7cGFkZGluZy10b3A6LjE1cmVtO3BhZGRpbmctbGVmdDoxLjJyZW19LmFsZXJ0cy1wYWdl''@;'; put 'put ''cnttYXJnaW4tdG9wOi4xNXJlbX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb25ze21hcmdpbi1sZWZ0OjIuMjVyZW19fS5hbGVydC1oaWRkZW57ZGlzcGxheTpub25lfS5jYXJkIC5hbGVydHttYXJnaW46LjNyZW0gMH0ubW9kYWwgLmFsZXJ0Ky5tb2RhbC1oZWFkZXIsLm1vZGFsIC5h''@;'; put 'put ''bGVydCsubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle21hcmdpbi10b3A6LjZyZW19LmFsZXJ0cy5hbGVydC1pbmZve2JhY2tncm91bmQ6IzAwNTY3YTtiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1wYWdlci1iZy1jb2xvciwgIzAwNTY3YSl9LmFsZXJ0cy5hbGVydC1kYW5n''@;'; put 'put ''ZXJ7YmFja2dyb3VuZDojOTkxNzAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItYmctY29sb3IsICM5OTE3MDApfS5hbGVydHMuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOiM4ZjVhMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmct''@;'; put 'put ''cGFnZXItYmctY29sb3IsICM4ZjVhMDApfS5hbGVydHMuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOiMyNTUyMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy05MDAsICMyNTUyMDApfS5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0''@;'; put 'put ''LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtmb250LXNpemU6LjY1cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6MS44cmVtO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjcuMnJlbX0uYWxlcnQtaW5mbyAuYWxlcnRzLXBhZ2Vye2NvbG9yOiNmZmY7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2Vye2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtZGFuZ2Vy''@;'; put 'put ''IC5hbGVydHMtcGFnZXJ7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0cy1wYWdlcntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1wYWdlci1m''@;'; put 'put ''b250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0cy1wYWdlci1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IsIHdoaXRlKTtjdXJzb3I6cG9pbnRlcn1idXR0b24uYWxlcnRzLXBhZ2VyLWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uYWxlcnRzLXBhZ2Vy''@;'; put 'put ''LWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtcGFnZXItdGV4dC1jb2xvciwgd2hpdGUpfS5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1pbmZvIC5h''@;'; put 'put ''bGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtd2FybmluZyAuYWxlcnRzLXBh''@;'; put 'put ''Z2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1wYWdlci1mb250LWNvbG9yLCB3aGl0ZSl9LmFsZXJ0LWRhbmdlciAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtZGFuZ2VyIC5hbGVydHMtcGFnZXItYnV0''@;'; put 'put ''dG9uIGNsci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItZm9udC1jb2xvciwgd2hpdGUpfS5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFnZXItYnV0dG9uIGNs''@;'; put 'put ''ci1pY29ue2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLXBhZ2VyLWZvbnQtY29sb3IsIHdoaXRlKX0uYWxlcnRzLXBhZ2VyLWNvbnRyb2x7ZGlzcGxheTpmbGV4O21hcmdpbi10b3A6LjNyZW07d2hpdGUtc3BhY2U6bm93cmFwfS5hbGVydHMtcGFnZS1kb3du''@;'; put 'put ''e21hcmdpbi1sZWZ0OjEuMnJlbTt3aWR0aDozMy4zMyV9LmFsZXJ0cy1wYWdlLXVwe21hcmdpbi1yaWdodDoxLjJyZW07d2lkdGg6MzMuMzMlfS5hbGVydHMtcGFnZXItdGV4dHt3aWR0aDozMy4zMyV9OnJvb3R7LS1jbHItY2FyZC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0w''@;'; put 'put ''KTstLWNsci1jYXJkLWRpdmlkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1jYXJkLXRpdGxlLWNvbG9yOnZhcigtLWNsci1oNC1jb2xvcik7LS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDQtZm9udC13ZWlnaHQpOy0tY2xyLWNhcmQt''@;'; put 'put ''Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItY2FyZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1jYXJkLWJv''@;'; put 'put ''eC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yKTstLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNhcmQtY2xpY2th''@;'; put 'put ''YmxlLWJvcmRlci1jb2xvcil9LmNhcmR7Ym94LXNoYWRvdzowIC4xNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMTVyZW0gMCAwIHZhcigtLWNsci1jYXJkLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVy''@;'; put 'put ''LXJhZGl1cywgLjE1cmVtKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZGVkZWRlO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY2FyZC1ib3JkZXItY29s''@;'; put 'put ''b3IsICNkZWRlZGUpfS5jYXJkLmNsaWNrYWJsZTpob3Zlcntib3gtc2hhZG93OjAgLjE1cmVtICMxNzliZDM7Ym94LXNoYWRvdzowIC4xNXJlbSAwIDAgdmFyKC0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3ctY29sb3IpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZh''@;'; put 'put ''cigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiMxNzliZDM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3IsICMxNzliZDMpO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlv''@;'; put 'put ''bjpub25lO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0uMXJlbSk7dHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UsdHJhbnNmb3JtIC4ycyBlYXNlfS5jYXJkLWJsb2NrIC5jYXJkLWRpdmlkZXIsLmNhcmQgLmNhcmQtdGl0bGUsLmNhcmQgLmNhcmQtdGV4dCwuY2FyZCAuY2FyZC1tZWRpYS1ibG9j''@;'; put 'put ''aywuY2FyZCAubGlzdCwuY2FyZCAubGlzdC11bnN0eWxlZHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouNnJlbX0uY2FyZC1ibG9jayAuY2FyZC1kaXZpZGVyOmxhc3QtY2hpbGQsLmNhcmQgLmNhcmQtdGl0bGU6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC10ZXh0Omxhc3QtY2hpbGQsLmNh''@;'; put 'put ''cmQgLmNhcmQtbWVkaWEtYmxvY2s6bGFzdC1jaGlsZCwuY2FyZCAubGlzdDpsYXN0LWNoaWxkLC5jYXJkIC5saXN0LXVuc3R5bGVkOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLmNhcmQtaW1nPmltZywuY2FyZD4uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZD5pbWcs''@;'; put 'put ''LmNhcmQtaW1nPmltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY2FyZC1iZy1jb2xv''@;'; put 'put ''ciwgd2hpdGUpO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxLjJyZW19LmNhcmQgLmJ0bi1saW5re21pbi13aWR0aDowO3BhZGRpbmc6MH0uY2FyZC5jbGlja2FibGV7Y29sb3I6aW5oZXJpdH0uY2FyZD4ubGlzdCwuY2FyZD4ubGlzdC11bnN0eWxlZHtwYWRkaW5nOi42cmVtIC45cmVtfS5jYXJk''@;'; put 'put ''IC5saXN0LWdyb3Vwe3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtsaXN0LXN0eWxlOm5vbmV9LmNhcmQgLmxpc3QtZ3JvdXAtaXRlbXtwYWRkaW5nOi42cmVtIC45cmVtO2ZvbnQtc2l6ZTouN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItY2FyZC1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGVkZWRlO2Jv''@;'; put 'put ''cmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yLCAjZGVkZWRlKX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDotLjZyZW19''@;'; put 'put ''fS5jYXJkLWhlYWRlciwuY2FyZC1ibG9jaywuY2FyZC1mb290ZXJ7cGFkZGluZzouNnJlbSAuOXJlbX0uY2FyZC1oZWFkZXIsLmNhcmQtdGl0bGV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY2FyZC10aXRsZS1jb2xvciwgYmxhY2spO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2''@;'; put 'put ''YXIoLS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodCwgMjAwKTtmb250LXNpemU6LjlyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsfWgxLmNhcmQtaGVhZGVyLGgxLmNhcmQtdGl0bGUsaDIuY2FyZC1oZWFkZXIsaDIuY2FyZC10aXRsZSxoMy5jYXJkLWhlYWRlcixoMy5jYXJkLXRpdGxlLGg0''@;'; put 'put ''LmNhcmQtaGVhZGVyLGg0LmNhcmQtdGl0bGUsaDUuY2FyZC1oZWFkZXIsaDUuY2FyZC10aXRsZSxoNi5jYXJkLWhlYWRlcixoNi5jYXJkLXRpdGxle21hcmdpbi10b3A6MH0uY2FyZC10ZXh0e2ZvbnQtc2l6ZTouN3JlbX0uY2FyZC1pbWc6Zmlyc3QtY2hpbGQ+aW1ne2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJv''@;'; put 'put ''cmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtaW1nOmxhc3QtY2hpbGQ+aW1ne2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQuY2FyZC1pbWc+aW1nLC5jYXJkPi5jYXJkLWltZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkPmltZ3tib3JkZXItcmFk''@;'; put 'put ''aXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNhcmQtYmxvY2sgLmJ0biwuY2FyZC1ibG9jayAuYnRuLmJ0bi1saW5rLC5jYXJkLWJsb2NrIC5jYXJkLWxpbmssLmNhcmQtZm9vdGVyIC5idG4sLmNhcmQtZm9vdGVyIC5idG4u''@;'; put 'put ''YnRuLWxpbmssLmNhcmQtZm9vdGVyIC5jYXJkLWxpbmt7bWFyZ2luOjAgLjZyZW0gMCAwfS5jYXJkLWJsb2NrIC5idG4tZ3JvdXAgLmJ0biwuY2FyZC1mb290ZXIgLmJ0bi1ncm91cCAuYnRue21hcmdpbjowfS5jYXJkLWhlYWRlciwuY2FyZC1ibG9ja3tib3JkZXItYm90dG9tLXdpZHRoOi4w''@;'; put 'put ''NXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6I2RlZGVkZTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1jYXJkLWJvcmRlci1jb2xvciwg''@;'; put 'put ''I2RlZGVkZSl9LmNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsLmNhcmQtYmxvY2s6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LmNhcmQtZGl2aWRlcntkaXNwbGF5OmJsb2NrO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWNhcmQt''@;'; put 'put ''Ym9yZGVyLXdpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZGVkZWRlO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNhcmQtZGl2aWRlci1jb2xvciwgI2RlZGVkZSl9LmNhcmQtYmxvY2sgLmNhcmQtZGl2aWRlcnttYXJn''@;'; put 'put ''aW4tbGVmdDotLjlyZW07bWFyZ2luLXJpZ2h0Oi0uOXJlbTt3aWR0aDphdXRvfS5jYXJkLWhlYWRlcisuY2FyZC1kaXZpZGVyLC5jYXJkLWJsb2NrKy5jYXJkLWRpdmlkZXJ7ZGlzcGxheTpub25lfS5jYXJkLW1lZGlhLWJsb2Nre2Rpc3BsYXk6ZmxleH0uY2FyZC1tZWRpYS1ibG9jayAuY2Fy''@;'; put 'put ''ZC1tZWRpYS1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4OjAgMCBhdXRvO2hlaWdodDozcmVtO3dpZHRoOjNyZW07bWF4LWhlaWdodDozcmVtO21heC13aWR0aDozcmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue2Rpc3BsYXk6ZmxleDtmbGV4LWRp''@;'; put 'put ''cmVjdGlvbjpjb2x1bW47bWFyZ2luOjAgMCAwIC42cmVtfS5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLXRpdGxlLC5jYXJkLW1lZGlhLWJsb2NrIHNwYW4sLmNhcmQtbWVkaWEtYmxvY2sgLmNhcmQtbWVkaWEtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2FyZC1tZWRpYS1ibG9j''@;'; put 'put ''ay53cmFwe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2FyZC1tZWRpYS1ibG9jay53cmFwIC5jYXJkLW1lZGlhLWRlc2NyaXB0aW9ue21hcmdpbjouM3JlbSAwIDB9LmNhcmQtYmxvY2s+Lmxpc3QsLmNhcmQtYmxvY2s+Lmxpc3QtdW5zdHlsZWR7cGFkZGluZzowfUBtZWRpYSBzY3JlZW4gYW5k''@;'; put 'put ''IChtaW4td2lkdGg6NTc2cHgpey5jYXJkLWNvbHVtbnN7Y29sdW1uLWNvdW50OjM7Y29sdW1uLWdhcDouNnJlbTticmVhay1pbnNpZGU6YXZvaWQ7Y29sdW1uLWZpbGw6YmFsYW5jZTstd2Via2l0LXBlcnNwZWN0aXZlOjF9LmNhcmQtY29sdW1ucy5jYXJkLWNvbHVtbnMtMntjb2x1bW4tY291''@;'; put 'put ''bnQ6Mn0uY2FyZC1jb2x1bW5zLmNhcmQtY29sdW1ucy00e2NvbHVtbi1jb3VudDo0fS5jYXJkLWNvbHVtbnMgLmNhcmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOi4zcmVtfS5jYXJkLWNvbHVtbnMgLmNsaWNrYWJsZXstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2Jh''@;'; put 'put ''Y2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufX1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmNoZWNrYm94LmJ0biBsYWJlbCwuY2FyZCAuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwuY2FyZCAucmFkaW8uYnRuIGxhYmVsLC5jYXJkIC5yYWRpby1pbmxpbmUuYnRuIGxh''@;'; put 'put ''YmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfX06cm9vdHstLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kcm9wZG93bi1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1kcm9wZG93bi1ib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1kcm9wZG93bi1kaXZpZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItZHJvcGRvd24tZGl2aWRlci1ib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCk7LS1j''@;'; put 'put ''bHItZHJvcGRvd24tY2hpbGQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcik7LS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNsci1nbG9i''@;'; put 'put ''YWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1kcm9wZG93bi1ib3gtc2hhZG93OnZhcigtLWNsci1wb3BvdmVyLWJveC1zaGFkb3ctY29sb3IpOy0tY2xyLWRyb3Bkb3duLXRleHQtY29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTstLWNsci1kcm9wZG93bi1oZWFkZXItY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1kcm9wZG93bi1oZWFkZXItZm9udC13ZWlnaHQ6NjAwOy0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kcm9wZG93bi1pdGVtLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMS1mb250LXdl''@;'; put 'put ''aWdodCl9LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8sLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''b3V0bGluZS1zZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzcywuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlciwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuYnRuLXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzcywuZHJvcGRvd24tbWVudSAuYnRuLWxpbmssLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0sLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntvdmVyZmxv''@;'; put 'put ''dzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0ZXh0LWFsaWduOmxlZnR9LmRyb3Bkb3due3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1''@;'; put 'put ''c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgY2xyLWlj''@;'; put 'put ''b25bc2hhcGVePWFuZ2xlXXtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTttaW4taGVpZ2h0Oi41cmVtO21pbi13aWR0aDouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSBjZHMtaWNvbltzaGFwZV49Y2FyZXRdLC5kcm9wZG93''@;'; put 'put ''biAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uW3NoYXBlXj1hbmdsZV17bWFyZ2luLXRvcDp1bnNldDtwb3NpdGlvbjphYnNvbHV0ZTtjb2xvcjppbmhlcml0O2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTstLWNkcy1nbG9iYWwtc3BhY2UtNzouNXJlbX0uZHJvcGRvd24gLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZS5idG57cGFkZGluZy1yaWdodDoxLjJyZW07dGV4dC1vdmVyZmxvdzp1bnNldH0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257dHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bk''@;'; put 'put ''b3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6LjZy''@;'; put 'put ''ZW19LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4pe3BhZGRpbmc6MCAuNnJlbSAwIDA7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3IsIGJsYWNrKX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWlj''@;'; put 'put ''b25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVePWFuZ2xlXSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpu''@;'; put 'put ''b3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtyaWdodDowfS5kcm9wZG93biBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUt''@;'; put 'put ''dGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51Pip7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOjZy''@;'; put 'put ''ZW07bWF4LXdpZHRoOjE4cmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kcm9wZG93bi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxl''@;'; put 'put ''OnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6''@;'; put 'put ''MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZHJvcGRvd24tYm94LXNoYWRvdywgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTttYXJnaW4tdG9wOi4xcmVtO3BhZGRpbmc6LjZyZW0gMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWlu''@;'; put 'put ''ZGV4OjEwNTB9LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1oZWFkZXItY29sb3IsICMzMzMzMzMpO2ZvbnQtc2l6ZTouNnJlbTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWhl''@;'; put 'put ''YWRlci1mb250LXdlaWdodCwgNjAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7cGFkZGluZzowIC42cmVtO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tb3V0bGluZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1k''@;'; put 'put ''YW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZywuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmJ0bi1saW5rLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVte2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0''@;'; put 'put ''ZW0tZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6aW5oZXJpdDttYXJnaW46MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5v''@;'; put 'put ''bmV9LmRyb3Bkb3duLW1lbnUgLmJ0bjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5''@;'; put 'put ''OmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3Vj''@;'; put 'put ''Y2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LWxpbms6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KTtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kcm9w''@;'; put 'put ''ZG93bi1pdGVtLWNvbG9yLCAjNjY2NjY2KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91''@;'; put 'put ''dGxpbmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1v''@;'; put 'put ''dXRsaW5lLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5hY3Rp''@;'; put 'put ''dmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tc2VsZWN0aW9u''@;'; put 'put ''LWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5kcm9wZG93bi1tZW51IC5idG46YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWlu''@;'; put 'put ''Zm86YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJu''@;'; put 'put ''aW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTphY3RpdmUs''@;'; put 'put ''LmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluazphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06YWN0aXZle2JveC1zaGFkb3c6bm9uZX0uZHJvcGRvd24t''@;'; put 'put ''bWVudSAuYnRuOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsLmRyb3Bk''@;'; put 'put ''b3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tbGluazpmb2N1cywu''@;'; put 'put ''ZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpmb2N1c3t6LWluZGV4OmluaGVyaXR9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZCwu''@;'; put 'put ''ZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1z''@;'; put 'put ''ZWNvbmRhcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4td2Fybmlu''@;'; put 'put ''ZzpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6ZGlzYWJsZWQsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5Oi40Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5kcm9wZG93bi1tZW51IC5idG4uZGlzYWJs''@;'; put 'put ''ZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZGlzYWJs''@;'; put 'put ''ZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXBy''@;'; put 'put ''aW1hcnkuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRp''@;'; put 'put ''c2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQ6aG92ZXIs''@;'; put 'put ''LmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuYnRuLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmRpc2FibGVkOmhvdmVyLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4td2FybmluZy5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2VzczpkaXNhYmxlZDpob3Zlciwu''@;'; put 'put ''ZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOmRpc2FibGVkOmhv''@;'; put 'put ''dmVye2JhY2tncm91bmQ6MCAwfS5kcm9wZG93bi1tZW51IC5idG4uZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG46ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFy''@;'; put 'put ''eTpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1v''@;'; put 'put ''dXRsaW5lOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnku''@;'; put 'put ''ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxl''@;'; put 'put ''ZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5k''@;'; put 'put ''aXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0''@;'; put 'put ''bi1zdWNjZXNzLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuZHJvcGRvd24taXRlbS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQ6YWN0aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNv''@;'; put 'put ''bmRhcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGlu''@;'; put 'put ''ZS1zZWNvbmRhcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmJ0bi1saW5rLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZXttYXJnaW4tcmlnaHQ6MS4ycmVtO3BhZGRpbmctcmlnaHQ6LjZyZW19LmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLXNl''@;'; put 'put ''Y29uZGFyeS5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGU6YmVm''@;'; put 'put ''b3JlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlOmJlZm9y''@;'; put 'put ''ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmJ0''@;'; put 'put ''bi13YXJuaW5nLmV4cGFuZGFibGU6YmVmb3JlLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlOmJlZm9yZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZTpiZWZvcmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZTpiZWZvcmV7''@;'; put 'put ''Y29udGVudDoiIjtmbG9hdDpyaWdodDtoZWlnaHQ6LjZyZW07d2lkdGg6LjZyZW07dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3Lncz''@;'; put 'put ''Lm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyMzlhOWE5YSUzQiU3RCUzQyUyRnN0eWxlJTNF''@;'; put 'put ''JTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUy''@;'; put 'put ''QzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRs''@;'; put 'put ''ZTttYXJnaW4tdG9wOi4zcmVtfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW17cGFkZGluZzouMTVyZW0gMS4ycmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmRy''@;'; put 'put ''b3Bkb3duLWl0ZW17cGFkZGluZzouM3JlbSAxLjJyZW19fS5kcm9wZG93bi1tZW51IGEuZHJvcGRvd24taXRlbXt0ZXh0LWRlY29yYXRpb246bm9uZX0uZHJvcGRvd24tbWVudSAuZHJvcGRvd24tZGl2aWRlcntmb250LXNpemU6LjZyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9y''@;'; put 'put ''ZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItZHJvcGRvd24tZGl2aWRlci1ib3JkZXItd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tZGl2aWRl''@;'; put 'put ''ci1jb2xvciwgI2U4ZThlOCk7bWFyZ2luOi4zcmVtIDB9LmJ0bi1ncm91cC1vdmVyZmxvdy5vcGVuPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3du''@;'; put 'put ''LW1lbnUsLnRhYnMtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5vcGVuPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5vcGVuPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7dmlzaWJpbGl0eTp2aXNpYmxl''@;'; put 'put ''fS5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdy5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cuYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0''@;'; put 'put ''Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5ib3R0b20tbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24uYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3RvcDoxMDAlO2JvdHRvbTphdXRvO21hcmdpbjouMXJlbSAwIDB9LmJ0bi1ncm91cC1vdmVyZmxvdy5ib3R0b20tbGVmdD4uZHJv''@;'; put 'put ''cGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5ib3R0b20tbGVmdD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnV7bGVmdDowO3JpZ2h0OmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3Zl''@;'; put 'put ''cmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1yaWdodD4u''@;'; put 'put ''ZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtbGVmdD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnV7dG9w''@;'; put 'put ''OmF1dG87Ym90dG9tOjEwMCU7bWFyZ2luOjAgMCAuMXJlbX0uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtbGVmdD4uZHJvcGRvd24tbWVudXtsZWZ0OjA7cmlnaHQ6''@;'; put 'put ''YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1yaWdodD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnRvcC1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93Lmxl''@;'; put 'put ''ZnQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmxlZnQt''@;'; put 'put ''dG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudXtyaWdodDoxMDAlO2xlZnQ6YXV0bzttYXJnaW46MCAuMXJlbSAwIDB9LmJ0bi1ncm91cC1vdmVyZmxvdy5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5sZWZ0LWJv''@;'; put 'put ''dHRvbT4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnV7dG9wOjA7Ym90dG9tOmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRv''@;'; put 'put ''d24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnV7Ym90dG9tOjA7dG9wOmF1dG99LmJ0bi1ncm91cC1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cucmlnaHQtdG9wPi5k''@;'; put 'put ''cm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnV7bGVmdDoxMDAlO3JpZ2h0OmF1dG87bWFyZ2luOjAgMCAwIC4x''@;'; put 'put ''cmVtfS5idG4tZ3JvdXAtb3ZlcmZsb3cucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51e3RvcDowO2JvdHRvbTphdXRvfS5idG4tZ3JvdXAtb3Zl''@;'; put 'put ''cmZsb3cucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51e2JvdHRvbTowO3RvcDphdXRvfS5idG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duIC5kcm9wZG93bi1t''@;'; put 'put ''ZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e2JvcmRlci1jb2xvcjojYjNiM2IzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tY2hpbGQtYm9yZGVyLWNvbG9yLCAjYjNiM2IzKTtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9w''@;'; put 'put ''ZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24u''@;'; put 'put ''bGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXtpbnNldDowIDEwMCUgYXV0byBhdXRvO21hcmdpbi10b3A6LS45NXJlbTttYXJnaW4tcmlnaHQ6LS4ycmVtfS5idG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwu''@;'; put 'put ''YnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51e2luc2V0OjAgYXV0byBhdXRv''@;'; put 'put ''IDEwMCU7bWFyZ2luLXRvcDotLjk1cmVtO21hcmdpbi1sZWZ0Oi0uMnJlbX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudS13cmFwcGVy''@;'; put 'put ''Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxl''@;'; put 'put ''ZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXtpbnNldDphdXRvIDEwMCUgMCBhdXRvO21hcmdpbi1ib3R0b206LS45NXJlbTttYXJnaW4tcmlnaHQ6LS4ycmVtfS5idG4t''@;'; put 'put ''Z3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQt''@;'; put 'put ''Ym90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3du''@;'; put 'put ''LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51e2luc2V0OmF1dG8gYXV0byAwIDEwMCU7bWFyZ2luLWJvdHRvbTotLjk1cmVtO21hcmdpbi1sZWZ0Oi0uMnJlbX06cm9vdHstLWNsci1iYWRnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xv''@;'; put 'put ''ci1uZXV0cmFsLTYwMCk7LS1jbHItYmFkZ2UtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNjAwKTstLWNsci1iYWRnZS1pbmZvLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1iYWRnZS1pbmZvLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFs''@;'; put 'put ''LTApOy0tY2xyLWJhZGdlLXN1Y2Nlc3MtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNsci1iYWRnZS1zdWNjZXNzLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5p''@;'; put 'put ''bmctMTAwMCk7LS1jbHItYmFkZ2Utd2FybmluZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1iYWRnZS1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci05MDApOy0tY2xyLWJhZGdlLWRhbmdlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJh''@;'; put 'put ''bC0wKTstLWNsci1iYWRnZS1ncmF5LWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItYmFkZ2UtZ3JheS1jb2xvcjp2YXIoLS1jbHItYmFkZ2UtZm9udC1jb2xvci1saWdodCk7LS1jbHItYmFkZ2UtcHVycGxlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1zZWNv''@;'; put 'put ''bmRhcnktYWN0aW9uLTUwMCk7LS1jbHItYmFkZ2UtcHVycGxlLWNvbG9yOnZhcigtLWNsci1iYWRnZS1mb250LWNvbG9yLWxpZ2h0KTstLWNsci1iYWRnZS1ibHVlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1iYWRnZS1ibHVlLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''YWRnZS1mb250LWNvbG9yLWxpZ2h0KTstLWNsci1iYWRnZS1vcmFuZ2UtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdhcm5pbmctMTAwMCk7LS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLWJhZGdlLWxpZ2h0LWJsdWUtYmctY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MDApOy0tY2xyLWJhZGdlLWxpZ2h0LWJsdWUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxpZ246bWlkZGxlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRl''@;'; put 'put ''bnQ6Y2VudGVyO21pbi13aWR0aDouNzVyZW07YmFja2dyb3VuZDojOGM4YzhjO2hlaWdodDouNzVyZW07bGluZS1oZWlnaHQ6bm9ybWFsO2JvcmRlci1yYWRpdXM6LjVyZW07Zm9udC1zaXplOi41cmVtO3BhZGRpbmc6MCAuMnJlbTttYXJnaW4tcmlnaHQ6LjNyZW07d2hpdGUtc3BhY2U6bm93''@;'; put 'put ''cmFwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWZvbnQtY29sb3ItbGlnaHQsIHdoaXRlKX0uYmFkZ2U6dmlzaXRlZHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1mb250LWNvbG9yLWxpZ2h0LCB3aGl0ZSl9LmJhZGdlLmJhZGdl''@;'; put 'put ''LWdyYXksLmJhZGdlLmJhZGdlLTF7YmFja2dyb3VuZDojOGM4YzhjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWdyYXktYmctY29sb3IsICM4YzhjOGMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWdyYXktY29sb3IsIHdoaXRlKX0uYmFkZ2UuYmFkZ2UtcHVycGxlLC5i''@;'; put 'put ''YWRnZS5iYWRnZS0ye2JhY2tncm91bmQ6IzllNTdiYztiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1wdXJwbGUtYmctY29sb3IsICM5ZTU3YmMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1ibHVlLC5iYWRnZS5i''@;'; put 'put ''YWRnZS0ze2JhY2tncm91bmQ6IzAwNTY3YTtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1ibHVlLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1ibHVlLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLW9yYW5nZSwuYmFkZ2UuYmFkZ2UtNHti''@;'; put 'put ''YWNrZ3JvdW5kOiM2MTMyMDA7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWJnLWNvbG9yLCAjNjEzMjAwKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtY29sb3IsIHdoaXRlKX0uYmFkZ2UuYmFkZ2UtbGlnaHQtYmx1ZSwuYmFkZ2UuYmFkZ2UtNXti''@;'; put 'put ''YWNrZ3JvdW5kOiMxNzliZDM7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1iZy1jb2xvciwgIzE3OWJkMyk7Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS1pbmZve2JhY2tncm91bmQ6IzAw''@;'; put 'put ''NTY3YTtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1pbmZvLWJnLWNvbG9yLCAjMDA1NjdhKTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS1pbmZvLWNvbG9yLCB3aGl0ZSl9LmJhZGdlLmJhZGdlLXN1Y2Nlc3N7YmFja2dyb3VuZDojMzA2YjAwO2JhY2tncm91bmQ6dmFyKC0t''@;'; put 'put ''Y2xyLWJhZGdlLXN1Y2Nlc3MtYmctY29sb3IsICMzMDZiMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXN1Y2Nlc3MtY29sb3IsIHdoaXRlKX0uYmFkZ2UuYmFkZ2UtZGFuZ2Vye2JhY2tncm91bmQ6Izk5MTcwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1kYW5nZXIt''@;'; put 'put ''YmctY29sb3IsICM5OTE3MDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWRhbmdlci1jb2xvciwgd2hpdGUpfS5iYWRnZS5iYWRnZS13YXJuaW5ne2JhY2tncm91bmQ6IzYxMzIwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS13YXJuaW5nLWJnLWNvbG9yLCAjNjEzMjAw''@;'; put 'put ''KTtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci1iYWRnZS13YXJuaW5nLWNvbG9yLCB3aGl0ZSl9XzotbXMtaW5wdXQtcGxhY2Vob2xkZXIgLmJhZGdlLDpyb290IC5iYWRnZXtwYWRkaW5nOi4xcmVtIC4xNXJlbSAwfUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuYmFkZ2V7cGFk''@;'; put 'put ''ZGluZzouMXJlbSAuMTVyZW0gMH19OnJvb3R7LS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodDp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1sYWJlbC1mb250LWNvbG9yLWRhcms6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItbGFiZWwtZGVmYXVsdC1i''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1sYWJlbC1mb250LXNpemU6LjU1cmVtOy0tY2xyLWxhYmVsLWZvbnQtd2VpZ2h0OjQwMDstLWNsci1sYWJlbC1sZXR0ZXItc3BhY2luZzouMDNlbTstLWNsci1sYWJlbC1ib3JkZXItcmFkaXVzOi42cmVtOy0t''@;'; put 'put ''Y2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWxhYmVsLWdyYXktY29sb3I6dmFyKC0tY2xyLWxhYmVsLWZvbnQtY29sb3ItbGlnaHQp''@;'; put 'put ''Oy0tY2xyLWxhYmVsLXB1cnBsZS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi01MDApOy0tY2xyLWxhYmVsLXB1cnBsZS1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCk7LS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItYWN0aW9uLTgwMCk7LS1jbHItbGFiZWwtYmx1ZS1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCk7LS1jbHItbGFiZWwtb3JhbmdlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTEwMDApOy0tY2xyLWxhYmVsLW9yYW5nZS1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''bGFiZWwtZm9udC1jb2xvci1kYXJrKTstLWNsci1sYWJlbC1saWdodC1ibHVlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNTAwKTstLWNsci1sYWJlbC1saWdodC1ibHVlLWNvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWRhcmspOy0tY2xyLWxhYmVsLWluZm8tYmct''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi01MCk7LS1jbHItbGFiZWwtaW5mby1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tODAwKTstLWNsci1sYWJlbC1pbmZvLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItbGFiZWwtc3VjY2Vz''@;'; put 'put ''cy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy01MCk7LS1jbHItbGFiZWwtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTgwMCk7LS1jbHItbGFiZWwtc3VjY2Vzcy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwKTstLWNs''@;'; put 'put ''ci1sYWJlbC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci13YXJuaW5nLTEwMCk7LS1jbHItbGFiZWwtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItbGFiZWwtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLXdh''@;'; put 'put ''cm5pbmctODAwKTstLWNsci1sYWJlbC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci0xMDApOy0tY2xyLWxhYmVsLWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItOTAwKTstLWNsci1sYWJlbC1kYW5nZXItYm9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1jb2xvci1kYW5nZXItOTAwKX0ubGFiZWwsYS5sYWJlbHtmb250LXNpemU6LjU1cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItbGFiZWwtZm9udC1zaXplLCAuNTVyZW0pO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItbGFiZWwtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVy''@;'; put 'put ''LXNwYWNpbmc6LjAzZW07bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLWxhYmVsLWxldHRlci1zcGFjaW5nLCAuMDNlbSk7bGluZS1oZWlnaHQ6LjZyZW07ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjAgLjZyZW07''@;'; put 'put ''Ym9yZGVyLXJhZGl1czouNnJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1sYWJlbC1ib3JkZXItcmFkaXVzLCAuNnJlbSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCAj''@;'; put 'put ''OGM4YzhjKTtoZWlnaHQ6MS4wNXJlbTttYXJnaW46MCAuM3JlbSAuMDVyZW0gMDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCwgYmxhY2spfS5sYWJlbDp2aXNpdGVkLGEubGFiZWw6dmlzaXRlZHtjb2xvcjojMDAw''@;'; put 'put ''O2NvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0LCBibGFjayl9LmxhYmVsOmZvY3VzLC5sYWJlbDpob3ZlciwubGFiZWw6YWN0aXZlLGEubGFiZWw6Zm9jdXMsYS5sYWJlbDpob3ZlcixhLmxhYmVsOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0ubGFiZWwuY2xpY2th''@;'; put 'put ''YmxlOmhvdmVyLC5sYWJlbC5jbGlja2FibGU6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlOmhvdmVyLGEubGFiZWwuY2xpY2thYmxlOmFjdGl2ZXtiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IsICNlOGU4ZTgpfS5sYWJlbC5jbGlj''@;'; put 'put ''a2FibGU6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM4YzhjOGMgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWxhYmVsLWdyYXktYmctY29sb3IsICM4YzhjOGMpIGluc2V0O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC41''@;'; put 'put ''cHgpfS5sYWJlbC5sYWJlbC1ncmF5LC5sYWJlbC5sYWJlbC0xLGEubGFiZWwubGFiZWwtZ3JheSxhLmxhYmVsLmxhYmVsLTF7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLWdyYXktYmctY29sb3IsICM4YzhjOGMp''@;'; put 'put ''fS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTpob3ZlciwubGFiZWwuY2xpY2thYmxlLmxhYmVsLWdyYXk6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlLmxhYmVsLWdyYXk6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtZ3JheTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFj''@;'; put 'put ''a2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLWdyYXk6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlLmxhYmVsLWdyYXk6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzhjOGM4''@;'; put 'put ''YyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvciwgIzhjOGM4YykgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLWdyYXk+LmJhZGdlLGEubGFiZWwubGFiZWwtZ3JheT4uYmFkZ2V7YmFja2dyb3Vu''@;'; put 'put ''ZDojOGM4YzhjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWdyYXktYmctY29sb3IsICM4YzhjOGMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWdyYXktY29sb3IsIHdoaXRlKX0ubGFiZWwubGFiZWwtcHVycGxlLC5sYWJlbC5sYWJlbC0yLGEubGFiZWwubGFiZWwtcHVy''@;'; put 'put ''cGxlLGEubGFiZWwubGFiZWwtMntib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOWU1N2JjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtcHVycGxlLWJnLWNvbG9yLCAjOWU1N2JjKX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLXB1cnBsZTpob3ZlciwubGFiZWwuY2xpY2th''@;'; put 'put ''YmxlLmxhYmVsLXB1cnBsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmhvdmVyLGEubGFiZWwuY2xpY2thYmxlLmxhYmVsLXB1cnBsZTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVs''@;'; put 'put ''LWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLXB1cnBsZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtcHVycGxlOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM5ZTU3YmMgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0t''@;'; put 'put ''Y2xyLWxhYmVsLXB1cnBsZS1iZy1jb2xvciwgIzllNTdiYykgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLXB1cnBsZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1wdXJwbGU+LmJhZGdle2JhY2tncm91bmQ6IzllNTdiYztiYWNrZ3JvdW5kOnZhcigtLWNsci1i''@;'; put 'put ''YWRnZS1wdXJwbGUtYmctY29sb3IsICM5ZTU3YmMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1jb2xvciwgd2hpdGUpfS5sYWJlbC5sYWJlbC1ibHVlLC5sYWJlbC5sYWJlbC0zLGEubGFiZWwubGFiZWwtYmx1ZSxhLmxhYmVsLmxhYmVsLTN7Ym9yZGVyOi4wNXJl''@;'; put 'put ''bSBzb2xpZDtib3JkZXItY29sb3I6IzAwNTY3YTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLWJsdWUtYmctY29sb3IsICMwMDU2N2EpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTpob3ZlciwubGFiZWwuY2xpY2thYmxlLmxhYmVsLWJsdWU6YWN0aXZlLGEubGFiZWwuY2xpY2th''@;'; put 'put ''YmxlLmxhYmVsLWJsdWU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtYmx1ZTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0ubGFiZWwuY2xpY2thYmxl''@;'; put 'put ''LmxhYmVsLWJsdWU6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlLmxhYmVsLWJsdWU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzAwNTY3YSBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvciwgIzAwNTY3YSkgaW5zZXQ7dHJhbnNm''@;'; put 'put ''b3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLWJsdWU+LmJhZGdlLGEubGFiZWwubGFiZWwtYmx1ZT4uYmFkZ2V7YmFja2dyb3VuZDojMDA1NjdhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3IsICMwMDU2N2EpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJhZGdlLWJsdWUtY29sb3IsIHdoaXRlKX0ubGFiZWwubGFiZWwtb3JhbmdlLC5sYWJlbC5sYWJlbC00LGEubGFiZWwubGFiZWwtb3JhbmdlLGEubGFiZWwubGFiZWwtNHtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojNjEzMjAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''bGFiZWwtb3JhbmdlLWJnLWNvbG9yLCAjNjEzMjAwKX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLW9yYW5nZTpob3ZlciwubGFiZWwuY2xpY2thYmxlLmxhYmVsLW9yYW5nZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtb3JhbmdlOmhvdmVyLGEubGFiZWwuY2xpY2thYmxlLmxhYmVs''@;'; put 'put ''LW9yYW5nZTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLW9yYW5nZTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGUubGFi''@;'; put 'put ''ZWwtb3JhbmdlOmFjdGl2ZXtib3gtc2hhZG93OjAgLjA1cmVtICM2MTMyMDAgaW5zZXQ7Ym94LXNoYWRvdzowIC4wNXJlbSAwIDAgdmFyKC0tY2xyLWxhYmVsLW9yYW5nZS1iZy1jb2xvciwgIzYxMzIwMCkgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmxhYmVsLmxhYmVsLW9y''@;'; put 'put ''YW5nZT4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1vcmFuZ2U+LmJhZGdle2JhY2tncm91bmQ6IzYxMzIwMDtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1vcmFuZ2UtYmctY29sb3IsICM2MTMyMDApO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLW9yYW5nZS1jb2xvciwgd2hpdGUp''@;'; put 'put ''fS5sYWJlbC5sYWJlbC1saWdodC1ibHVlLC5sYWJlbC5sYWJlbC01LGEubGFiZWwubGFiZWwtbGlnaHQtYmx1ZSxhLmxhYmVsLmxhYmVsLTV7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzE3OWJkMztib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYmct''@;'; put 'put ''Y29sb3IsICMxNzliZDMpfS5sYWJlbC5jbGlja2FibGUubGFiZWwtbGlnaHQtYmx1ZTpob3ZlciwubGFiZWwuY2xpY2thYmxlLmxhYmVsLWxpZ2h0LWJsdWU6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxlLmxhYmVsLWxpZ2h0LWJsdWU6aG92ZXIsYS5sYWJlbC5jbGlja2FibGUubGFiZWwtbGln''@;'; put 'put ''aHQtYmx1ZTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0ubGFiZWwuY2xpY2thYmxlLmxhYmVsLWxpZ2h0LWJsdWU6YWN0aXZlLGEubGFiZWwuY2xpY2thYmxl''@;'; put 'put ''LmxhYmVsLWxpZ2h0LWJsdWU6YWN0aXZle2JveC1zaGFkb3c6MCAuMDVyZW0gIzE3OWJkMyBpbnNldDtib3gtc2hhZG93OjAgLjA1cmVtIDAgMCB2YXIoLS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1iZy1jb2xvciwgIzE3OWJkMykgaW5zZXQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9Lmxh''@;'; put 'put ''YmVsLmxhYmVsLWxpZ2h0LWJsdWU+LmJhZGdlLGEubGFiZWwubGFiZWwtbGlnaHQtYmx1ZT4uYmFkZ2V7YmFja2dyb3VuZDojMTc5YmQzO2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWxpZ2h0LWJsdWUtYmctY29sb3IsICMxNzliZDMpO2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLWJh''@;'; put 'put ''ZGdlLWxpZ2h0LWJsdWUtY29sb3IsIHdoaXRlKX0ubGFiZWwubGFiZWwtaW5mbyxhLmxhYmVsLmxhYmVsLWluZm97YmFja2dyb3VuZDojZTNmNWZjO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWluZm8tYmctY29sb3IsICNlM2Y1ZmMpO2NvbG9yOiMwMDU2N2E7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWxhYmVsLWluZm8tZm9udC1jb2xvciwgIzAwNTY3YSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzAwNTY3YTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLWluZm8tYm9yZGVyLWNvbG9yLCAjMDA1NjdhKX0ubGFiZWwubGFiZWwtc3VjY2VzcyxhLmxhYmVsLmxhYmVs''@;'; put 'put ''LXN1Y2Nlc3N7YmFja2dyb3VuZDojZGZmMGQwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLXN1Y2Nlc3MtYmctY29sb3IsICNkZmYwZDApO2NvbG9yOiMzMDZiMDA7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLXN1Y2Nlc3MtZm9udC1jb2xvciwgIzMwNmIwMCk7Ym9yZGVyOi4wNXJlbSBzb2xp''@;'; put 'put ''ZDtib3JkZXItY29sb3I6IzMwNmIwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVsLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yLCAjMzA2YjAwKX0ubGFiZWwubGFiZWwtd2FybmluZyxhLmxhYmVsLmxhYmVsLXdhcm5pbmd7YmFja2dyb3VuZDojZmZmNGM3O2JhY2tncm91bmQ6dmFyKC0tY2xy''@;'; put 'put ''LWxhYmVsLXdhcm5pbmctYmctY29sb3IsICNmZmY0YzcpO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLXdhcm5pbmctZm9udC1jb2xvciwgIzMzMzMzMyk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2FkNzYwMDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWxhYmVs''@;'; put 'put ''LXdhcm5pbmctYm9yZGVyLWNvbG9yLCAjYWQ3NjAwKX0ubGFiZWwubGFiZWwtZGFuZ2VyLGEubGFiZWwubGFiZWwtZGFuZ2Vye2JhY2tncm91bmQ6I2ZlZGRkNztiYWNrZ3JvdW5kOnZhcigtLWNsci1sYWJlbC1kYW5nZXItYmctY29sb3IsICNmZWRkZDcpO2NvbG9yOiM5OTE3MDA7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWxhYmVsLWRhbmdlci1mb250LWNvbG9yLCAjOTkxNzAwKTtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojOTkxNzAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZGFuZ2VyLWJvcmRlci1jb2xvciwgIzk5MTcwMCl9LmxhYmVsPi5iYWRnZSxhLmxhYmVs''@;'; put 'put ''Pi5iYWRnZXttYXJnaW46MCAtLjQ1cmVtIDAgLjNyZW19QC1tb3otZG9jdW1lbnQgdXJsLXByZWZpeCgpey5sYWJlbCxhLmxhYmVse3ZlcnRpY2FsLWFsaWduOmJvdHRvbX19OnJvb3R7LS1jbHItbG9naW4tdGl0bGUtY29sb3I6dmFyKC0tY2xyLWgxLWNvbG9yKTstLWNsci1sb2dpbi10aXRs''@;'; put 'put ''ZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDEtZm9udC13ZWlnaHQpOy0tY2xyLWxvZ2luLXRpdGxlLWZvbnQtZmFtaWx5OnZhcigtLWNsci1oMS1mb250LWZhbWlseSk7LS1jbHItbG9naW4tdHJhZGVtYXJrLWNvbG9yOnZhcigtLWNsci1oMi1jb2xvcik7LS1jbHItbG9naW4tdHJhZGVtYXJr''@;'; put 'put ''LWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMi1mb250LXdlaWdodCk7LS1jbHItbG9naW4tdHJhZGVtYXJrLWZvbnQtZmFtaWx5OnZhcigtLWNsci1oMi1mb250LWZhbWlseSk7LS1jbHItbG9naW4tc3VidGl0bGUtY29sb3I6dmFyKC0tY2xyLWgzLWNvbG9yKTstLWNsci1sb2dpbi1zdWJ0aXRs''@;'; put 'put ''ZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDMtZm9udC13ZWlnaHQpOy0tY2xyLWxvZ2luLXN1YnRpdGxlLWZvbnQtZmFtaWx5OnZhcigtLWNsci1oMy1mb250LWZhbWlseSk7LS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWFwcC1iYWNrZ3JvdW5kKTstLWNs''@;'; put 'put ''ci1sb2dpbi1iYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQyUzRnhtbCUyMHZlcnNpb24lM0QlMjIxLjAlMjIlMjBlbmNvZGluZyUzRCUyMnV0Zi04JTIyJTNGJTNFJTBEJTBBJTNDJTIxRE9DVFlQRSUyMHN2ZyUyMFBVQkxJQyUyMCUyMi0lMkYlMkZX''@;'; put 'put ''M0MlMkYlMkZEVEQlMjBTVkclMjAxLjElMkYlMkZFTiUyMiUyMCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGR3JhcGhpY3MlMkZTVkclMkYxLjElMkZEVEQlMkZzdmcxMS5kdGQlMjIlM0UlMEQlMEElM0NzdmclMEQlMEElMjAlMjAlMjAlMjAlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTBE''@;'; put 'put ''JTBBJTIwJTIwJTIwJTIwJTIwaWQlM0QlMjJuby1hc3BlY3QtcmF0aW8lMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJG''@;'; put 'put ''JTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHglM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB5JTNEJTIyMHB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwaGVpZ2h0JTNEJTIyMjA1NS41NXB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''d2lkdGglM0QlMjIxNDQwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyMDU1LjU1JTIwMTQ0MCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWluWU1pbiUyMHNsaWNlJTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTNDZGVzYyUzRUxvZ2luJTIwSW1hZ2UlM0MlMkZkZXNjJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxJTIyJTIwZmlsbCUzRCUyMm5vbmUl''@;'; put 'put ''MjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MC4wMDAwMDAlMkMlMjAtNC4wMDAwMDAlMjklMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTNDZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzRkFGQUZBJTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyNCUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMTA4LjQzJTIwMTQ0''@;'; put 'put ''My42MyUyMDExMDkuMDglMjAxNDQzLjYzJTIwNDQzLjQ0JTIwNzc3Ljc0JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3BhY2l0eSUz''@;'; put 'put ''RCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMC43OSUyMDMzNC45MiUyMDQ0My40NCUyMDc3Ny43NCUyMDAuNzklMjAzMzQuNDklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMjExLjg4JTIwMC43OSUyMDMyOS42JTIwNTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUlMjAxNjkuNzQlMjAwLjc5JTIwOS43MyUyMDAuNzklMjAyMTEuODglMjA5MC4yNyUyMDMwMS40NiUyMDU5LjYyJTIwMjcwLjc3''@;'; put 'put ''JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyNTAzLjc3JTIwMTQ0My42MyUyMDY5Ny40NyUyMDE0NDMuNjMlMjA4''@;'; put 'put ''MDMuNzQlMjAxMzM3LjM2JTIwNzA2LjkzJTIwMTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjE1OC4z''@;'; put 'put ''MyUyMDY5MS4xNSUyMDAuNzklMjA4NDguNzIlMjAwLjc5JTIwMTQyNy40MyUyMDQ0Ny41MiUyMDk4MC43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0VE''@;'; put 'put ''REUwJTIyJTIwcG9pbnRzJTNEJTIyMjU3LjcxJTIwNTkxLjc1JTIwMC43OSUyMDMzNC40OSUyMDAuNzklMjA1MzMuNDIlMjAxNTguMzMlMjA2OTEuMTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBOUM5RDUlMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwNTMzLjQyJTIwMC43OSUyMDg0OC43MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDRFNyUyMiUyMHBvaW50cyUzRCUyMjgwNi40NiUyMDExNDAuODklMjA1NDYuOTQlMjA4ODEuMjglMjA0NDcuNTIlMjA5ODAuNyUyMDcwNi45MyUyMDEyNDAuNDMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4RkM0REYlMjIlMjBwb2ludHMlM0QlMjI0NDcuNTIlMjA5ODAuNyUyMDAuNzklMjAxNDI3LjQzJTIwMC43OSUyMDE0NDMuNjMlMjA1MDMuNzclMjAxNDQzLjYzJTIwNzA2LjkzJTIw''@;'; put 'put ''MTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzcwQzBEQyUyMiUyMHBvaW50cyUzRCUyMjYwOC4yMyUyMDgxOS45OSUyMDU0Ni45NCUyMDg4MS4y''@;'; put 'put ''OCUyMDgwNi40NiUyMDExNDAuODklMjA4NjcuNjQlMjAxMDc5LjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjI0''@;'; put 'put ''MjAuMDUlMjA0MjkuMzklMjAzMTkuMDElMjA1MzAuNDUlMjA2MDguMjMlMjA4MTkuOTklMjA3MDkuMyUyMDcxOC45MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUy''@;'; put 'put ''MiUyMzY5QUZENCUyMiUyMHBvaW50cyUzRCUyMjcwOS4zJTIwNzE4LjkxJTIwNjA4LjIzJTIwODE5Ljk5JTIwODY3LjY0JTIwMTA3OS43JTIwOTY4Ljc0JTIwOTc4LjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4RUI1QkMlMjIlMjBwb2ludHMlM0QlMjI2MTkuNTklMjAyMjkuODIlMjAzOTMuNDIlMjAzLjEyJTIwMzI3LjI3JTIwMy4xMiUyMDE2MC42NSUyMDE2OS43NCUyMDQyMC4wNSUyMDQyOS4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDMxOS4wMSUyMDUzMC40NSUyMDkwLjI3JTIwMzAxLjQ2JTIyJTNFJTNDJTJGcG9s''@;'; put 'put ''eWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyMTYwLjY1JTIwMTY5Ljc0JTIwNTkuNjIlMjAyNzAuNzclMjA5MC4yNyUyMDMwMS40NiUyMDMx''@;'; put 'put ''OS4wMSUyMDUzMC40NSUyMDQyMC4wNSUyMDQyOS4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzg0QzREMiUyMiUyMHBvaW50cyUzRCUyMjU5LjYyJTIw''@;'; put 'put ''MjcwLjc3JTIwMC43OSUyMDMyOS42JTIwMC43OSUyMDMzNC40OSUyMDI1Ny43MSUyMDU5MS43NSUyMDMxOS4wMSUyMDUzMC40NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzdDQjBDNyUyMiUyMHBvaW50cyUzRCUyMjUzNy41NSUyMDMuMTIlMjAzOTMuNDIlMjAzLjEyJTIwNjE5LjU5JTIwMjI5LjgyJTIwNjkxLjc0JTIwMTU3LjY2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzODdEMURCJTIyJTIwcG9pbnRzJTNEJTIyODQ2LjI1JTIwMy4xMiUyMDUzNy41NSUyMDMuMTIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2ludHMlM0QlMjI5MDkuODclMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDc5MC40MyUyMDE0NDMuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIzMTkuMDElMjA1MzAuNDUlMjAyNTcuNzElMjA1OTEuNzUlMjA0NDMuNDQlMjA3NzcuNzQlMjA1NDYuOTQlMjA4ODEuMjglMjA2MDguMjMlMjA4''@;'; put 'put ''MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA4NjcuNjQlMjAxMDc5LjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjI4NjcuNjQlMjAxMDc5LjclMjA4MDYuNDYlMjAxMTQwLjg5JTIwOTAzLjMxJTIwMTIzNy43OCUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMDY1LjU3JTIwMTA3NS41MiUyMDk2OC43NCUyMDk3OC42JTIwODY3LjY0JTIwMTA3OS43JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA4NjcuNjQlMjAxMDc5LjclMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMjMxLjE2JTIwMTQ0My42MyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTND''@;'; put 'put ''JTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTI0MC4wOCUyMDcwNy4yMiUyMDExNjcuOSUyMDc3OS40JTIwMTI2NC42OCUyMDg3''@;'; put 'put ''Ni40JTIwMTMzNi44NyUyMDgwNC4yMiUyMDEyNDAuMDglMjA3MDcuMjElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjI5ODAuODMlMjA0NDcuMzklMjA2OTEuNzQlMjAxNTcuNjYlMjA2MTkuNTklMjAyMjkuODIlMjA5MDguNjYlMjA1MTkuNTYlMjA5ODAuODMlMjA0NDcuMzklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0QlMjI3MDkuMyUyMDcxOC45MSUyMDk2OC43NCUyMDk3OC42JTIwMTE2Ny45MSUyMDc3OS40JTIwOTA4LjY2JTIwNTE5LjU1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyOTgwLjgzJTIwNDQ3LjM5JTIwOTA4LjY2JTIwNTE5LjU1JTIwMTE2Ny45MSUyMDc3OS40JTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHln''@;'; put 'put ''b24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMzQuNTklMjAzLjEyJTIwODQ2LjI1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMDk4MC44''@;'; put 'put ''MyUyMDQ0Ny4zOSUyMDEyMjkuNzUlMjAxOTguNDclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMjQwLjA4JTIw''@;'; put 'put ''NzA3LjIxJTIwMTMzNi44NyUyMDgwNC4yMiUyMDE1ODYuMDElMjA1NTUuMDglMjAxNDg5LjE0JTIwNDU4LjEyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIz''@;'; put 'put ''NzBDMERDJTIyJTIwcG9pbnRzJTNEJTIyMTIyOS43NSUyMDE5OC40NyUyMDk4MC44MyUyMDQ0Ny4zOSUyMDEyNDAuMDglMjA3MDcuMjElMjAxNDg5LjE0JTIwNDU4LjEyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTI5Mi4yMiUyMDEzMDIuMzglMjAxNDMzLjMyJTIwMTQ0My42MyUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTQ5MS4xOCUyMDExMDMuNDIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDk0OS43OCUyMDEyODQuMjclMjAxMTA5LjA4JTIwMTQ0My42MyUyMDExNTAuOTglMjAx''@;'; put 'put ''NDQzLjYzJTIwMTE5MS4wOSUyMDE0MDMuNTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3NUI4QzUlMjIlMjBwb2ludHMlM0QlMjIxMTUwLjk4JTIwMTQ0''@;'; put 'put ''My42MyUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTE5MS4wOSUyMDE0MDMuNTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMl''@;'; put 'put ''M0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDExMTIuMDMlMjAxMTIyLjAyJTIwMTAxMC45MiUyMDEyMjMuMTMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5''@;'; put 'put ''Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBvaW50cyUzRCUyMjExOTEuMDklMjAxNDAzLjUxJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxNDMzLjMyJTIwMTQ0My42MyUyMDEyOTIuMjIlMjAxMzAyLjM4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzODMuMyUyMDg1MC43''@;'; put 'put ''NSUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxNDkxLjE4JTIwMTEwMy40MiUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdD''@;'; put 'put ''RUQyJTIyJTIwcG9pbnRzJTNEJTIyMTQ5MS4xOCUyMDExMDMuNDIlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2RUE0QkMlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjE4MTIuNjUlMjA3ODEuOTUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTM4My4zJTIwODUwLjc1JTIwMTU2My4zNyUyMDEw''@;'; put 'put ''MzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNTYzLjM3JTIwMTAzMS4yMyUyMDE5NzQuODYlMjAxNDQz''@;'; put 'put ''LjYzJTIwMjA1NC40NSUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTAyMy45OSUyMDE4MTIuNjUlMjA3ODEuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3''@;'; put 'put ''OENBRDQlMjIlMjBwb2ludHMlM0QlMjIxNTYzLjM3JTIwMTAzMS4yMyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTAyMy45OSUyMDE4MTIuNjUlMjA3ODEuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjI4MDMuNzQlMjAxMzM3LjM2JTIwODUwLjE5JTIwMTM4My44NyUyMDk0OS43OCUyMDEyODQuMjclMjA5MDMuMzElMjAxMjM3Ljc4JTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwcG9pbnRzJTNEJTIyMTA2NS41NyUyMDEwNzUuNTIlMjAxMTEyLjAzJTIwMTEyMi4wMiUyMDEzMTEuMTIlMjA5''@;'; put 'put ''MjIuOTQlMjAxMjY0LjY5JTIwODc2LjQlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3N0I4RDklMjIlMjBwb2ludHMlM0QlMjI2OTcuNDclMjAxNDQzLjYz''@;'; put 'put ''JTIwNzkwLjQzJTIwMTQ0My42MyUyMDg1MC4xOSUyMDEzODMuODclMjA4MDMuNzQlMjAxMzM3LjM2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVB''@;'; put 'put ''JTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NDkuNzglMjAxMjg0LjI3JTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1REI1RDYlMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJDJTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNs''@;'; put 'put ''YXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM1N0E4RDAlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxMDM4LjI0NzI5NyUyQyUyMDExNDkuMjc1NDI5JTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRy''@;'; put 'put ''YW5zbGF0ZSUyOC0xMDM4LjI0NzI5NyUyQyUyMC0xMTQ5LjI3NTQyOSUyOSUyMCUyMiUyMHglM0QlMjI5NjYuNzUyMjk3JTIyJTIweSUzRCUyMjExMTYuNDEwNDMlMjIlMjB3aWR0aCUzRCUyMjE0Mi45OSUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDk2NC40NiUyMDExNzYuNjMlMjA5NjQuNDYlMjAx''@;'; put 'put ''MTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDAwMDAwJTIyJTIwb3BhY2l0eSUzRCUyMjAuNDIlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIw''@;'; put 'put ''MTIyMy4xMyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIl''@;'; put 'put ''MjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEyNjQuNjklMjA4NzYuNCUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxMzgzLjMlMjA4NTAu''@;'; put 'put ''NzUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1N0E4RDAlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2NC42OSUyMDg3Ni40JTIw''@;'; put 'put ''MTMxMS4xMiUyMDkyMi45NCUyMDEzODMuMyUyMDg1MC43NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkzRDhDQSUyMiUyMG9wYWNpdHklM0QlMjIwLjYl''@;'; put 'put ''MjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwb3ZlcmxheSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMzgzLjMlMjA4NTAuNzUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMzgzLjMlMjA4NTAuNzUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1''@;'; put 'put ''NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDNFNiUyMiUyMHBvaW50cyUzRCUyMjIwNTYlMjAwLjEyJTIwMTY0NS40OSUyMDAuMTIlMjAxNjQ4''@;'; put 'put ''LjQ5JTIwMy4xMiUyMDE5NDQuMDclMjAzLjEyJTIwMTc5Ni4yMiUyMDE1MC45OSUyMDE4OTMuMTIlMjAyNDcuOTclMjAyMDU0LjQ1JTIwODYuNjQlMjAyMDU0LjQ1JTIwMTc5LjYlMjAxOTM5LjU4JTIwMjk0LjQ3JTIwMjA1NiUyMDQxMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzdBQjlEOSUyMiUyMHBvaW50cyUzRCUyMjE2NDguNDklMjAzLjEyJTIwMTc5Ni4yMiUyMDE1MC45OSUyMDE5NDQuMDclMjAzLjEyJTIyJTNFJTNDJTJGcG9seWdvbiUz''@;'; put 'put ''RSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjZBRUQ0JTIyJTIwcG9pbnRzJTNEJTIyMjA1NC40NSUyMDg2LjY0JTIwMTg5My4xMiUyMDI0Ny45NyUyMDE5MzkuNTglMjAyOTQuNDclMjAyMDU0''@;'; put 'put ''LjQ1JTIwMTc5LjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxODg0LjgyJTIwNzA5Ljc4JTIwMjA1NC40NSUy''@;'; put 'put ''MDg3OS41NyUyMDIwNTQuNDUlMjA1NDAuMTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0QlMjIxNDg5LjE0JTIwNDU4''@;'; put 'put ''LjEyJTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMDEzNzEuMTMlMjAzMzkuOTklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjIxNzk2LjIyJTIwMTUwLjk5JTIwMTY0OC40OSUyMDMuMTIlMjAxNDI1LjElMjAzLjEyJTIwMTMwMS45MSUyMDEyNi4zMSUyMDE1NjEuMyUyMDM4NS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0NyZWN0JTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE3OTguOTU0MDY2JTJDJTIwMzg4Ljc5ODc4MSUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTc5OC45NTQwNjYlMkMlMjAtMzg4Ljc5ODc4MSUyOSUy''@;'; put 'put ''MCUyMiUyMHglM0QlMjIxNjMyLjgyNDA3JTIyJTIweSUzRCUyMjM1NS45MzM3ODElMjIlMjB3aWR0aCUzRCUyMjMzMi4yNiUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwcG9pbnRzJTNEJTIyMTU4Ni4wMSUyMDU1NS4wOCUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE1NzMuNzExNTc3JTJDJTIwNDcwLjYyMDI2MyUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUl''@;'; put 'put ''MjgtMTU3My43MTE1NzclMkMlMjAtNDcwLjYyMDI2MyUyOSUyMCUyMiUyMHglM0QlMjIxNTIyLjY4MTU4JTIyJTIweSUzRCUyMjQwMi4wODUyNjMlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjEzNy4wNyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE3NTguNjc2NzU4JTJDJTIwNjU1Ljc2NzEyMCUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xh''@;'; put 'put ''dGUlMjgtMTc1OC42NzY3NTglMkMlMjAtNjU1Ljc2NzEyMCUyOSUyMCUyMiUyMHglM0QlMjIxNzA3LjY0Njc2JTIyJTIweSUzRCUyMjUyOC4yOTIxMiUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyMjU0Ljk1JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwcG9pbnRzJTNEJTIyMTMwMS45MSUyMDEyNi4zMSUyMDExNzguODQlMjAzLjEyJTIwMTAzNC41OSUyMDMuMTIlMjAxMjI5Ljc1JTIwMTk4LjQ3JTIyJTNF''@;'; put 'put ''JTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzODNDMEM4JTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMjA1NC40''@;'; put 'put ''NSUyMDg3OS41NyUyMDE4ODQuODIlMjA3MDkuNzglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM3REM2REMlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUl''@;'; put 'put ''MjgxMzk1LjUxNjkwMSUyQyUyMDI5Mi4yMDY1MTklMjklMjByb3RhdGUlMjgtNDUuMDAwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEzOTUuNTE2OTAxJTJDJTIwLTI5Mi4yMDY1MTklMjklMjAlMjIlMjB4JTNEJTIyMTM0NC40OTE5JTIyJTIweSUzRCUyMjEwOC43MDE1MTklMjIlMjB3aWR0aCUz''@;'; put 'put ''RCUyMjEwMi4wNSUyMiUyMGhlaWdodCUzRCUyMjM2Ny4wMSUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzY4QjhENSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0''@;'; put 'put ''ZSUyODE2NDUuMzEzNjE5JTJDJTIwNTQyLjI0OTc2MCUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTY0NS4zMTM2MTklMkMlMjAtNTQyLjI0OTc2MCUyOSUyMCUyMiUyMHglM0QlMjIxNTk0LjI4MzYyJTIyJTIweSUzRCUyMjUwOS4zODQ3NiUyMiUyMHdpZHRo''@;'; put 'put ''JTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjB0cmFuc2Zvcm0l''@;'; put 'put ''M0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMDMuMDAwMDAwJTI5JTIyJTIwc3Ryb2tlJTNEJTIyJTIzMDAwMDAwJTIyJTIwb3BhY2l0eSUzRCUyMjAuMTUlMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUz''@;'; put 'put ''RCUyMk0wLjk1JTJDMC4xMiUyMEwwLjk1JTJDODQwLjEyJTIyJTIwaWQlM0QlMjJTaGFwZSUyMiUzRSUzQyUyRnBhdGglM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElM0MlMkZzdmclM0UpOy0tY2xyLWxvZ2luLWVycm9yLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWRhbmdlci04MDApOy0tY2xyLWxvZ2luLWVycm9yLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJy''@;'; put 'put ''YWRpdXMpOy0tY2xyLWxvZ2luLXBhbmVsLWxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItbG9naW4tcGFuZWwtbGluZS1vcGFjaXR5Oi4xfS5sb2dpbi13cmFwcGVye2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdl''@;'; put 'put ''L3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQyUzRnhtbCUyMHZlcnNpb24lM0QlMjIxLjAlMjIlMjBlbmNvZGluZyUzRCUyMnV0Zi04JTIyJTNGJTNFJTBEJTBBJTNDJTIxRE9DVFlQRSUyMHN2ZyUyMFBVQkxJQyUyMCUyMi0lMkYlMkZXM0MlMkYlMkZEVEQlMjBTVkclMjAxLjElMkYlMkZFTiUy''@;'; put 'put ''MiUyMCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGR3JhcGhpY3MlMkZTVkclMkYxLjElMkZEVEQlMkZzdmcxMS5kdGQlMjIlM0UlMEQlMEElM0NzdmclMEQlMEElMjAlMjAlMjAlMjAlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwaWQlM0QlMjJuby1hc3Bl''@;'; put 'put ''Y3QtcmF0aW8lMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMHglM0QlMjIwcHglMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB5JTNEJTIyMHB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwaGVpZ2h0JTNEJTIyMjA1NS41NXB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwd2lkdGglM0QlMjIxNDQwcHglMjIlMEQlMEElMjAlMjAl''@;'; put 'put ''MjAlMjAlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyMDU1LjU1JTIwMTQ0MCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJ4TWluWU1pbiUyMHNsaWNlJTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZGVzYyUzRUxvZ2luJTIw''@;'; put 'put ''SW1hZ2UlM0MlMkZkZXNjJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTIw''@;'; put 'put ''dHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MC4wMDAwMDAlMkMlMjAtNC4wMDAwMDAlMjklMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzRkFGQUZBJTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyNCUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''M0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMlM0QlMjIxMTA4LjQzJTIwMTQ0My42MyUyMDExMDkuMDglMjAxNDQzLjYzJTIwNDQzLjQ0''@;'; put 'put ''JTIwNzc3Ljc0JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTNEOENBJTIyJTIwb3BhY2l0eSUzRCUyMjAuNiUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5k''@;'; put 'put ''LW1vZGUlM0ElMjBvdmVybGF5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMC43OSUyMDMzNC45MiUyMDQ0My40NCUyMDc3Ny43NCUyMDAuNzklMjAzMzQuNDklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIwLjc5JTIwMjExLjg4JTIwMC43OSUyMDMyOS42JTIwNTkuNjIlMjAyNzAuNzclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxNjAuNjUlMjAxNjkuNzQlMjAwLjc5JTIwOS43MyUyMDAuNzklMjAyMTEuODglMjA5MC4yNyUyMDMwMS40NiUyMDU5LjYyJTIwMjcwLjc3JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyNTAzLjc3JTIwMTQ0My42MyUyMDY5Ny40NyUyMDE0NDMuNjMlMjA4MDMuNzQlMjAxMzM3LjM2JTIwNzA2LjkzJTIwMTI0MC40''@;'; put 'put ''MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjE1OC4zMyUyMDY5MS4xNSUyMDAuNzklMjA4NDguNzIlMjAwLjc5''@;'; put 'put ''JTIwMTQyNy40MyUyMDQ0Ny41MiUyMDk4MC43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0VEREUwJTIyJTIwcG9pbnRzJTNEJTIyMjU3LjcxJTIwNTkx''@;'; put 'put ''Ljc1JTIwMC43OSUyMDMzNC40OSUyMDAuNzklMjA1MzMuNDIlMjAxNTguMzMlMjA2OTEuMTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBOUM5RDUlMjIl''@;'; put 'put ''MjBwb2ludHMlM0QlMjIwLjc5JTIwNTMzLjQyJTIwMC43OSUyMDg0OC43MiUyMDE1OC4zMyUyMDY5MS4xNSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FG''@;'; put 'put ''RDRFNyUyMiUyMHBvaW50cyUzRCUyMjgwNi40NiUyMDExNDAuODklMjA1NDYuOTQlMjA4ODEuMjglMjA0NDcuNTIlMjA5ODAuNyUyMDcwNi45MyUyMDEyNDAuNDMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4RkM0REYlMjIlMjBwb2ludHMlM0QlMjI0NDcuNTIlMjA5ODAuNyUyMDAuNzklMjAxNDI3LjQzJTIwMC43OSUyMDE0NDMuNjMlMjA1MDMuNzclMjAxNDQzLjYzJTIwNzA2LjkzJTIwMTI0MC40MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzcwQzBEQyUyMiUyMHBvaW50cyUzRCUyMjYwOC4yMyUyMDgxOS45OSUyMDU0Ni45NCUyMDg4MS4yOCUyMDgwNi40NiUyMDExNDAuODklMjA4NjcuNjQlMjAx''@;'; put 'put ''MDc5LjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjI0MjAuMDUlMjA0MjkuMzklMjAzMTkuMDElMjA1MzAuNDUl''@;'; put 'put ''MjA2MDguMjMlMjA4MTkuOTklMjA3MDkuMyUyMDcxOC45MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzY5QUZENCUyMiUyMHBvaW50cyUzRCUyMjcwOS4z''@;'; put 'put ''JTIwNzE4LjkxJTIwNjA4LjIzJTIwODE5Ljk5JTIwODY3LjY0JTIwMTA3OS43JTIwOTY4Ljc0JTIwOTc4LjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4''@;'; put 'put ''RUI1QkMlMjIlMjBwb2ludHMlM0QlMjI2MTkuNTklMjAyMjkuODIlMjAzOTMuNDIlMjAzLjEyJTIwMzI3LjI3JTIwMy4xMiUyMDE2MC42NSUyMDE2OS43NCUyMDQyMC4wNSUyMDQyOS4zOSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzhFQjVCQyUyMiUyMHBvaW50cyUzRCUyMjMxOS4wMSUyMDUzMC40NSUyMDMxOS4wMSUyMDUzMC40NSUyMDkwLjI3JTIwMzAxLjQ2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzN0NCMEM3JTIyJTIwcG9pbnRzJTNEJTIyMTYwLjY1JTIwMTY5Ljc0JTIwNTkuNjIlMjAyNzAuNzclMjA5MC4yNyUyMDMwMS40NiUyMDMxOS4wMSUyMDUzMC40NSUyMDQyMC4wNSUyMDQyOS4zOSUy''@;'; put 'put ''MiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzg0QzREMiUyMiUyMHBvaW50cyUzRCUyMjU5LjYyJTIwMjcwLjc3JTIwMC43OSUyMDMyOS42JTIwMC43OSUyMDMz''@;'; put 'put ''NC40OSUyMDI1Ny43MSUyMDU5MS43NSUyMDMxOS4wMSUyMDUzMC40NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzdDQjBDNyUyMiUyMHBvaW50cyUzRCUy''@;'; put 'put ''MjUzNy41NSUyMDMuMTIlMjAzOTMuNDIlMjAzLjEyJTIwNjE5LjU5JTIwMjI5LjgyJTIwNjkxLjc0JTIwMTU3LjY2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIy''@;'; put 'put ''JTIzODdEMURCJTIyJTIwcG9pbnRzJTNEJTIyODQ2LjI1JTIwMy4xMiUyMDUzNy41NSUyMDMuMTIlMjA2OTEuNzQlMjAxNTcuNjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZp''@;'; put 'put ''bGwlM0QlMjIlMjNDREUzRUUlMjIlMjBwb2ludHMlM0QlMjI5MDkuODclMjAxNDQzLjYzJTIwODUwLjE5JTIwMTM4My44NyUyMDc5MC40MyUyMDE0NDMuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIzMTkuMDElMjA1MzAuNDUlMjAyNTcuNzElMjA1OTEuNzUlMjA0NDMuNDQlMjA3NzcuNzQlMjA1NDYuOTQlMjA4ODEuMjglMjA2MDguMjMlMjA4MTkuOTklMjA4NjcuNjQlMjAxMDc5LjclMjA4NjcuNjQl''@;'; put 'put ''MjAxMDc5LjclMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjI4NjcuNjQlMjAxMDc5LjclMjA4MDYuNDYlMjAxMTQw''@;'; put 'put ''Ljg5JTIwOTAzLjMxJTIwMTIzNy43OCUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0Ql''@;'; put 'put ''MjIxMDY1LjU3JTIwMTA3NS41MiUyMDk2OC43NCUyMDk3OC42JTIwODY3LjY0JTIwMTA3OS43JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA4NjcuNjQlMjAxMDc5LjclMjA4NjcuNjQlMjAxMDc5LjclMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMjMxLjE2JTIwMTQ0My42MyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTI0MC4wOCUyMDcwNy4yMiUyMDExNjcuOSUyMDc3OS40JTIwMTI2NC42OCUyMDg3Ni40JTIwMTMzNi44NyUyMDgwNC4yMiUyMDEyNDAuMDgl''@;'; put 'put ''MjA3MDcuMjElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjI5ODAuODMlMjA0NDcuMzklMjA2OTEuNzQlMjAxNTcu''@;'; put 'put ''NjYlMjA2MTkuNTklMjAyMjkuODIlMjA5MDguNjYlMjA1MTkuNTYlMjA5ODAuODMlMjA0NDcuMzklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTcl''@;'; put 'put ''MjIlMjBwb2ludHMlM0QlMjI3MDkuMyUyMDcxOC45MSUyMDk2OC43NCUyMDk3OC42JTIwMTE2Ny45MSUyMDc3OS40JTIwOTA4LjY2JTIwNTE5LjU1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Bv''@;'; put 'put ''bHlnb24lMjBmaWxsJTNEJTIyJTIzNjlBRkQ0JTIyJTIwcG9pbnRzJTNEJTIyOTgwLjgzJTIwNDQ3LjM5JTIwOTA4LjY2JTIwNTE5LjU1JTIwMTE2Ny45MSUyMDc3OS40JTIwMTI0MC4wOCUyMDcwNy4yMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjEwMzQuNTklMjAzLjEyJTIwODQ2LjI1JTIwMy4xMiUyMDY5MS43NCUyMDE1Ny42NiUyMDk4MC44MyUyMDQ0Ny4zOSUyMDEyMjkuNzUlMjAxOTguNDclMjIl''@;'; put 'put ''M0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMjQwLjA4JTIwNzA3LjIxJTIwMTMzNi44NyUyMDgwNC4yMiUyMDE1ODYu''@;'; put 'put ''MDElMjA1NTUuMDglMjAxNDg5LjE0JTIwNDU4LjEyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzBDMERDJTIyJTIwcG9pbnRzJTNEJTIyMTIyOS43NSUy''@;'; put 'put ''MDE5OC40NyUyMDk4MC44MyUyMDQ0Ny4zOSUyMDEyNDAuMDglMjA3MDcuMjElMjAxNDg5LjE0JTIwNDU4LjEyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIz''@;'; put 'put ''QjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTI5Mi4yMiUyMDEzMDIuMzglMjAxNDMzLjMyJTIwMTQ0My42MyUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTQ5MS4xOCUyMDExMDMuNDIlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDk0OS43OCUyMDEyODQuMjclMjAxMTA5LjA4JTIwMTQ0My42MyUyMDExNTAuOTglMjAxNDQzLjYzJTIwMTE5MS4wOSUyMDE0MDMuNTElMjIlM0Ul''@;'; put 'put ''M0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3NUI4QzUlMjIlMjBwb2ludHMlM0QlMjIxMTUwLjk4JTIwMTQ0My42MyUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTE5MS4w''@;'; put 'put ''OSUyMDE0MDMuNTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjIxMjkyLjIyJTIwMTMwMi4zOCUyMDExMTIuMDMl''@;'; put 'put ''MjAxMTIyLjAyJTIwMTAxMC45MiUyMDEyMjMuMTMlMjAxMTkxLjA5JTIwMTQwMy41MSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzZFQTRCQyUyMiUyMHBv''@;'; put 'put ''aW50cyUzRCUyMjExOTEuMDklMjAxNDAzLjUxJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxNDMzLjMyJTIwMTQ0My42MyUyMDEyOTIuMjIlMjAxMzAyLjM4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUz''@;'; put 'put ''Q3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzODMuMyUyMDg1MC43NSUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxNDkxLjE4JTIw''@;'; put 'put ''MTEwMy40MiUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTQ5MS4xOCUyMDEx''@;'; put 'put ''MDMuNDIlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIl''@;'; put 'put ''MjM2RUE0QkMlMjIlMjBwb2ludHMlM0QlMjIxNDkxLjE4JTIwMTEwMy40MiUyMDE4MzAuNjElMjAxNDQzLjYzJTIwMTk3NC44NiUyMDE0NDMuNjMlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjE4MTIuNjUlMjA3ODEuOTUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTM4My4zJTIwODUwLjc1JTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBB''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxNTYzLjM3JTIwMTAzMS4yMyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDE0NDMuNjMlMjAyMDU0LjQ1''@;'; put 'put ''JTIwMTAyMy45OSUyMDE4MTIuNjUlMjA3ODEuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3OENBRDQlMjIlMjBwb2ludHMlM0QlMjIxNTYzLjM3JTIw''@;'; put 'put ''MTAzMS4yMyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDE0NDMuNjMlMjAyMDU0LjQ1JTIwMTAyMy45OSUyMDE4MTIuNjUlMjA3ODEuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjBwb2ludHMlM0QlMjI4MDMuNzQlMjAxMzM3LjM2JTIwODUwLjE5JTIwMTM4My44NyUyMDk0OS43OCUyMDEyODQuMjclMjA5MDMuMzElMjAxMjM3Ljc4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwcG9pbnRzJTNEJTIyMTA2NS41NyUyMDEwNzUuNTIlMjAxMTEyLjAzJTIwMTEyMi4wMiUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxMjY0LjY5JTIwODc2LjQlMjIlM0UlM0Ml''@;'; put 'put ''MkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3N0I4RDklMjIlMjBwb2ludHMlM0QlMjI2OTcuNDclMjAxNDQzLjYzJTIwNzkwLjQzJTIwMTQ0My42MyUyMDg1MC4xOSUyMDEz''@;'; put 'put ''ODMuODclMjA4MDMuNzQlMjAxMzM3LjM2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42''@;'; put 'put ''MyUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NDkuNzglMjAxMjg0LjI3JTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1REI1''@;'; put 'put ''RDYlMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwOTAzLjMxJTIwMTIzNy43OCUyMDk0OS43OCUyMDEyODQuMjclMjAxMDEwLjkyJTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODEwMzguMjQ3Mjk3JTJDJTIwMTE0OS4yNzU0MjklMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEwMzguMjQ3Mjk3JTJDJTIwLTExNDkuMjc1''@;'; put 'put ''NDI5JTI5JTIwJTIyJTIweCUzRCUyMjk2Ni43NTIyOTclMjIlMjB5JTNEJTIyMTExNi40MTA0MyUyMiUyMHdpZHRoJTNEJTIyMTQyLjk5JTIyJTIwaGVpZ2h0JTNEJTIyNjUuNzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM1N0E4RDAlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxMDM4LjI0NzI5NyUyQyUyMDExNDkuMjc1NDI5JTI5JTIwcm90YXRlJTI4LTQ0Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xMDM4LjI0NzI5NyUyQyUyMC0xMTQ5''@;'; put 'put ''LjI3NTQyOSUyOSUyMCUyMiUyMHglM0QlMjI5NjYuNzUyMjk3JTIyJTIweSUzRCUyMjExMTYuNDEwNDMlMjIlMjB3aWR0aCUzRCUyMjE0Mi45OSUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDk2NC40NiUyMDExNzYuNjMlMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzMDAwMDAwJTIyJTIwb3BhY2l0eSUzRCUyMjAuNDIlMjIlMjBwb2ludHMlM0QlMjIxMDEwLjkyJTIwMTIyMy4xMyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwOTY0''@;'; put 'put ''LjQ2JTIwMTE3Ni42MyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIy''@;'; put 'put ''JTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUyMDEyNjQuNjklMjA4NzYuNCUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxMzgzLjMlMjA4NTAuNzUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1N0E4RDAlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTI2NC42OSUyMDg3Ni40JTIwMTMxMS4xMiUyMDkyMi45NCUyMDEzODMuMyUyMDg1MC43''@;'; put 'put ''NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkzRDhDQSUyMiUyMG9wYWNpdHklM0QlMjIwLjYlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNB''@;'; put 'put ''JTIwb3ZlcmxheSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMzgzLjMlMjA4NTAuNzUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzVEQjVENiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMzgzLjMlMjA4NTAuNzUlMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0FGRDNFNiUyMiUyMHBvaW50cyUzRCUyMjIwNTYlMjAwLjEyJTIwMTY0NS40OSUyMDAuMTIlMjAxNjQ4LjQ5JTIwMy4xMiUyMDE5NDQuMDclMjAzLjEyJTIwMTc5''@;'; put 'put ''Ni4yMiUyMDE1MC45OSUyMDE4OTMuMTIlMjAyNDcuOTclMjAyMDU0LjQ1JTIwODYuNjQlMjAyMDU0LjQ1JTIwMTc5LjYlMjAxOTM5LjU4JTIwMjk0LjQ3JTIwMjA1NiUyMDQxMSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzdBQjlEOSUyMiUyMHBvaW50cyUzRCUyMjE2NDguNDklMjAzLjEyJTIwMTc5Ni4yMiUyMDE1MC45OSUyMDE5NDQuMDclMjAzLjEyJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNjZBRUQ0JTIyJTIwcG9pbnRzJTNEJTIyMjA1NC40NSUyMDg2LjY0JTIwMTg5My4xMiUyMDI0Ny45NyUyMDE5MzkuNTglMjAyOTQuNDclMjAyMDU0LjQ1JTIwMTc5LjYlMjIlM0UlM0MlMkZwb2x5Z29uJTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNCN0NFRDIlMjIlMjBwb2ludHMlM0QlMjIxODg0LjgyJTIwNzA5Ljc4JTIwMjA1NC40NSUyMDg3OS41NyUyMDIwNTQuNDUlMjA1NDAuMTUlMjIlM0Ul''@;'; put 'put ''M0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0QlMjIxNDg5LjE0JTIwNDU4LjEyJTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMDEzNzEuMTMl''@;'; put 'put ''MjAzMzkuOTklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0QlMjIxNzk2LjIyJTIwMTUwLjk5JTIwMTY0OC40OSUyMDMu''@;'; put 'put ''MTIlMjAxNDI1LjElMjAzLjEyJTIwMTMwMS45MSUyMDEyNi4zMSUyMDE1NjEuMyUyMDM4NS45NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUy''@;'; put 'put ''MHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE3OTguOTU0MDY2JTJDJTIwMzg4Ljc5ODc4MSUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTc5OC45NTQwNjYlMkMlMjAtMzg4Ljc5ODc4MSUyOSUyMCUyMiUyMHglM0QlMjIxNjMyLjgyNDA3JTIyJTIweSUz''@;'; put 'put ''RCUyMjM1NS45MzM3ODElMjIlMjB3aWR0aCUzRCUyMjMzMi4yNiUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUw''@;'; put 'put ''JTIyJTIwcG9pbnRzJTNEJTIyMTU4Ni4wMSUyMDU1NS4wOCUyMDE2MzIuNDYlMjA2MDEuNTklMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTU4Ni4wMSUyMDU1NS4wOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE1NzMuNzExNTc3JTJDJTIwNDcwLjYyMDI2MyUyOSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTU3My43MTE1NzclMkMlMjAtNDcwLjYyMDI2MyUy''@;'; put 'put ''OSUyMCUyMiUyMHglM0QlMjIxNTIyLjY4MTU4JTIyJTIweSUzRCUyMjQwMi4wODUyNjMlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjEzNy4wNyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE3NTguNjc2NzU4JTJDJTIwNjU1Ljc2NzEyMCUyOSUyMHJvdGF0ZSUyOC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTc1OC42NzY3NTglMkMlMjAtNjU1Ljc2NzEy''@;'; put 'put ''MCUyOSUyMCUyMiUyMHglM0QlMjIxNzA3LjY0Njc2JTIyJTIweSUzRCUyMjUyOC4yOTIxMiUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyMjU0Ljk1JTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjNFQUVFJTIyJTIwcG9pbnRzJTNEJTIyMTMwMS45MSUyMDEyNi4zMSUyMDExNzguODQlMjAzLjEyJTIwMTAzNC41OSUyMDMuMTIlMjAxMjI5Ljc1JTIwMTk4LjQ3JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzODNDMEM4JTIyJTIwcG9pbnRzJTNEJTIyMTgxMi42NSUyMDc4MS45NSUyMDIwNTQuNDUlMjAxMDIzLjk5JTIwMjA1NC40NSUyMDg3OS41NyUyMDE4ODQuODIlMjA3MDkuNzglMjIl''@;'; put 'put ''M0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM3REM2REMlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxMzk1LjUxNjkwMSUyQyUyMDI5Mi4yMDY1MTklMjkl''@;'; put 'put ''MjByb3RhdGUlMjgtNDUuMDAwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTEzOTUuNTE2OTAxJTJDJTIwLTI5Mi4yMDY1MTklMjklMjAlMjIlMjB4JTNEJTIyMTM0NC40OTE5JTIyJTIweSUzRCUyMjEwOC43MDE1MTklMjIlMjB3aWR0aCUzRCUyMjEwMi4wNSUyMiUyMGhlaWdodCUzRCUyMjM2Ny4w''@;'; put 'put ''MSUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyMzY4QjhENSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODE2NDUuMzEzNjE5JTJDJTIwNTQyLjI0OTc2MCUy''@;'; put 'put ''OSUyMHJvdGF0ZSUyOC00NS4wMDAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTY0NS4zMTM2MTklMkMlMjAtNTQyLjI0OTc2MCUyOSUyMCUyMiUyMHglM0QlMjIxNTk0LjI4MzYyJTIyJTIweSUzRCUyMjUwOS4zODQ3NiUyMiUyMHdpZHRoJTNEJTIyMTAyLjA2JTIyJTIwaGVpZ2h0JTNEJTIyNjUu''@;'; put 'put ''NzMlMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgwLjAwMDAwMCUyQyUyMDMu''@;'; put 'put ''MDAwMDAwJTI5JTIyJTIwc3Ryb2tlJTNEJTIyJTIzMDAwMDAwJTIyJTIwb3BhY2l0eSUzRCUyMjAuMTUlMjIlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0wLjk1JTJDMC4xMiUyMEwwLjk1JTJDODQwLjEy''@;'; put 'put ''JTIyJTIwaWQlM0QlMjJTaGFwZSUyMiUzRSUzQyUyRnBhdGglM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEEl''@;'; put 'put ''M0MlMkZzdmclM0UpO2JhY2tncm91bmQtc2l6ZToxMDAlO2JhY2tncm91bmQtcG9zaXRpb246MjUuMnJlbSAwO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0ubG9naW4td3JhcHBlciAubG9naW57YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxvZ2luLWJhY2tn''@;'; put 'put ''cm91bmQtY29sb3IsICNmYWZhZmEpO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjEuMnJlbSAzcmVtO2hlaWdodDphdXRvO21pbi1oZWlnaHQ6MTAwdmg7d2lkdGg6MjUuMnJlbX0ubG9n''@;'; put 'put ''aW4td3JhcHBlciAubG9naW4gLnRpdGxle2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWxvZ2luLXRpdGxlLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1sb2dpbi10aXRsZS1mb250LXdlaWdodCwgMjAwKTtmb250LWZhbWlseTpNZXRyb3Bv''@;'; put 'put ''bGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWxvZ2luLXRpdGxlLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1z''@;'; put 'put ''aXplOjEuNnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS44cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGUgLndlbGNvbWV7bGluZS1oZWlnaHQ6MS44cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAudGl0bGUgLmhpbnR7Y29sb3I6IzAwMDtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItbG9naW4tdGl0bGUtY29sb3IsIGJsYWNrKTttYXJnaW4tdG9wOjEuNXJlbTtmb250LXNpemU6LjdyZW19LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50cmFkZW1hcmt7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbG9naW4tdHJhZGVtYXJrLWNvbG9yLCBibGFjayk7Zm9udC13ZWln''@;'; put 'put ''aHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1sb2dpbi10cmFkZW1hcmstZm9udC13ZWlnaHQsIDIwMCk7Zm9udC1mYW1pbHk6TWV0cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1sb2dpbi10cmFkZW1h''@;'; put 'put ''cmstZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MS40cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubG9naW4td3JhcHBlciAubG9naW4gLnN1YnRpdGxle2ZvbnQtd2VpZ2h0OjIw''@;'; put 'put ''MDtmb250LXdlaWdodDp2YXIoLS1jbHItbG9naW4tc3VidGl0bGUtZm9udC13ZWlnaHQsIDIwMCk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbG9naW4tc3VidGl0bGUtY29sb3IsIGJsYWNrKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFy''@;'; put 'put ''aWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWxvZ2luLXN1YnRpdGxlLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOjEuMXJlbTtsZXR0ZXItc3BhY2luZzpub3Jt''@;'; put 'put ''YWw7bGluZS1oZWlnaHQ6MS44cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjIuNHJlbSAwIDB9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuYXV0aC1zb3VyY2UsLmxvZ2lu''@;'; put 'put ''LXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudXNlcm5hbWUsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAucGFzc3dvcmQsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2hlY2tib3gsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAu''@;'; put 'put ''Y2xyLWZvcm0tY29udHJvbCwubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY2hlY2tib3gtd3JhcHBlcnttYXJnaW46LjNyZW0gMCAuOXJlbX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXJ7ZGlzcGxheTpibG9j''@;'; put 'put ''azt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLXNlbGVjdHt3aWR0''@;'; put 'put ''aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dHt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAu''@;'; put 'put ''Y2xyLWlucHV0LXdyYXBwZXJ7d2lkdGg6MTAwJX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyPi5jbHItaW5wdXQtZ3JvdXB7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0Oi40''@;'; put 'put ''OHJlbX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVyPi5jbHItaW5wdXQtZ3JvdXA+LmNsci1pbnB1dHt3aWR0aDpjYWxjKDEwMCUgLSAxLjJyZW0pfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4t''@;'; put 'put ''Z3JvdXAgLnRvb2x0aXAtdmFsaWRhdGlvbnttYXJnaW4tdG9wOi4zcmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnRvb2x0aXAtdmFsaWRhdGlvbiAudXNlcm5hbWUsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9uIC5w''@;'; put 'put ''YXNzd29yZHt3aWR0aDoxMDAlO21hcmdpbi10b3A6MH0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcntkaXNwbGF5Om5vbmU7bWFyZ2luOi4zcmVtIDAgMDtwYWRkaW5nOi40NXJlbSAuNnJlbTtiYWNrZ3JvdW5kOiNjMjFkMDA7YmFja2dyb3VuZDp2YXIoLS1jbHIt''@;'; put 'put ''bG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvciwgI2MyMWQwMCk7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvciwgI2ZhZmFmYSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItbG9naW4tZXJyb3ItYm9yZGVy''@;'; put 'put ''LXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDouOXJlbX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5lcnJvcjpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUz''@;'; put 'put ''Q3N2ZyUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB2aWV3Qm94JTNEJTIyNSUyMDUlMjAyNiUyMDI2JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1s''@;'; put 'put ''bnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTNFJTNDZGVmcyUzRSUzQ3N0eWxlJTNFLmNsci1pLW91dGxpbmUlN0JmaWxsJTNBJTIzZmFmYWZhJTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VleGNsYW1hdGlvbi1jaXJjbGUtbGluZSUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGlu''@;'; put 'put ''ZSUyMGNsci1pLW91dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xOCUyQzZBMTIlMkMxMiUyQzAlMkMxJTJDMCUyQzMwJTJDMTglMkMxMiUyQzEyJTJDMCUyQzAlMkMwJTJDMTglMkM2Wm0wJTJDMjJBMTAlMkMxMCUyQzAlMkMxJTJDMSUyQzI4JTJDMTglMkMxMCUyQzEwJTJDMCUyQzAlMkMx''@;'; put 'put ''JTJDMTglMkMyOFolMjIlM0UlM0MlMkZwYXRoJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0yJTIyJTIwZCUzRCUyMk0xOCUyQzIwLjA3YTEuMyUyQzEuMyUyQzAlMkMwJTJDMS0xLjMtMS4zdi02YTEuMyUyQzEuMyUyQzAlMkMxJTJD''@;'; put 'put ''MSUyQzIuNiUyQzB2NkExLjMlMkMxLjMlMkMwJTJDMCUyQzElMkMxOCUyQzIwLjA3WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMyUyMiUyMGN4JTNEJTIyMTcuOTUlMjIlMjBjeSUzRCUyMjIzLjAy''@;'; put 'put ''JTIyJTIwciUzRCUyMjEuNSUyMiUzRSUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN2ZyUzRSk7bWFyZ2luOi4wNXJlbSAuM3JlbSAwIDA7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9n''@;'; put 'put ''aW4tZ3JvdXAgLmVycm9yLmFjdGl2ZXtkaXNwbGF5OmZsZXh9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3IuYWN0aXZlOmJlZm9yZXtmbGV4OjAgMCAuOHJlbX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5idG57bWFyZ2luOjMuNnJlbSAwIDA7''@;'; put 'put ''bWF4LXdpZHRoOm5vbmV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3IrLmJ0bnttYXJnaW46MS4ycmVtIDAgMH0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC5zaWdudXB7bWFyZ2luLXRvcDouNnJlbTtmb250LXNpemU6LjdyZW07dGV4dC1hbGln''@;'; put 'put ''bjpjZW50ZXJ9LmxvZ2luLXdyYXBwZXIgLmxvZ2luOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDouMDVyZW07aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDojMDAwO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxvZ2luLXBhbmVsLWxpbmUtY29sb3Is''@;'; put 'put ''IGJsYWNrKTtvcGFjaXR5Oi4xO29wYWNpdHk6dmFyKC0tY2xyLWxvZ2luLXBhbmVsLWxpbmUtb3BhY2l0eSwgLjEpO3RvcDowO3JpZ2h0Oi0uMXJlbX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXsubG9naW4td3JhcHBlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tn''@;'; put 'put ''cm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1sb2dpbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmFmYWZhKX0ubG9naW4td3JhcHBlciAubG9naW57d2lkdGg6MTAwJTttYXJnaW4tbGVmdDowO3BhZGRpbmc6MS4ycmVtIDIwJX0ubG9naW4td3JhcHBlciAubG9naW46YWZ0ZXJ7Y29u''@;'; put 'put ''dGVudDpub25lfX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjU3NnB4KXsubG9naW4td3JhcHBlciAubG9naW57cGFkZGluZzoxLjJyZW0gMTUlfX0ubWFpbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZDoj''@;'; put 'put ''ZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWdsb2JhbC1hcHAtYmFja2dyb3VuZCwgI2ZhZmFmYSl9Lm1haW4tY29udGFpbmVyIC5hbGVydC5hbGVydC1hcHAtbGV2ZWx7ZmxleDowIDAgYXV0bztvdmVyZmxvdy14OmhpZGRlbn0ubWFpbi1jb250YWluZXIgaGVhZGVyLC5tYWluLWNvbnRh''@;'; put 'put ''aW5lciAuaGVhZGVye2ZsZXg6MCAwIDNyZW19Lm1haW4tY29udGFpbmVyIC5zdWItbmF2LC5tYWluLWNvbnRhaW5lciAuc3VibmF2e2ZsZXg6MCAwIDEuOHJlbX0ubWFpbi1jb250YWluZXIgLnUtbWFpbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4''@;'; put 'put ''OjEgMSBhdXRvO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO21pbi1oZWlnaHQ6LjA1cmVtfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYXtmbGV4OjEgMSBh''@;'; put 'put ''dXRvO292ZXJmbG93LXk6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nOjEuMnJlbX0ubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWE+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubWFpbi1jb250YWluZXIgLmNvbnRl''@;'; put 'put ''bnQtY29udGFpbmVyIC5zaWRlbmF2e2ZsZXg6MCAwIGF1dG87b3JkZXI6LTE7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXZ7ZmxleDowIDAgYXV0bztvcmRlcjotMX1AbWVkaWEgcHJpbnR7Lm1haW4tY29udGFpbmVy''@;'; put 'put ''e2hlaWdodDphdXRvfX1ib2R5Lm5vLXNjcm9sbGluZyxib2R5W2Nkcy1sYXlvdXQ9bm8tc2Nyb2xsaW5nXSxib2R5Lm5vLXNjcm9sbGluZyAubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWEsYm9keVtjZHMtbGF5b3V0PW5vLXNjcm9sbGluZ10gLm1haW4t''@;'; put 'put ''Y29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhe292ZXJmbG93OmhpZGRlbn06cm9vdHstLWNsci1tb2RhbC1jbG9zZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLW1vZGFsLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTAp''@;'; put 'put ''Oy0tY2xyLW1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKCAwLCAwLCAwLCAuMiApOy0tY2xyLW1vZGFsLWJhY2tkcm9wLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItbW9kYWwtYmFja2Ryb3Atb3BhY2l0eTouODU7LS1jbHItbW9kYWwtYm9yZGVy''@;'; put 'put ''LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItbW9kYWwtdGl0bGUtY29sb3I6dmFyKC0tY2xyLWgzLWNvbG9yKTstLWNsci1tb2RhbC10aXRsZS1mb250LWZhbWlseTp2YXIoLS1jbHItaDMtZm9udC1mYW1pbHkpOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtd2Vp''@;'; put 'put ''Z2h0OnZhcigtLWNsci1oMy1mb250LXdlaWdodCl9Lm1vZGFse3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoxMDUwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoyLjRyZW19''@;'; put 'put ''QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFse3BhZGRpbmc6LjZyZW19fS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxMDUwO3dpZHRoOjI4LjhyZW07bWF4LXdpZHRoOjEwMCV9Lm1vZGFsLWRpYWxvZy5tb2RhbC1zbXt3aWR0aDoxNC40''@;'; put 'put ''cmVtfS5tb2RhbC1kaWFsb2cubW9kYWwtbGd7d2lkdGg6NDMuMnJlbX0ubW9kYWwtZGlhbG9nLm1vZGFsLXhse3dpZHRoOjU3LjZyZW19Lm1vZGFsLWRpYWxvZyAubW9kYWwtY29udGVudHtwYWRkaW5nOjEuMnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItbW9kYWwtYmctY29sb3IsIHdoaXRlKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1tb2RhbC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjFyZW0gLjFyZW0gIzAwMDM7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJl''@;'; put 'put ''bSAuMXJlbSB2YXIoLS1jbHItbW9kYWwtY29udGVudC1ib3gtc2hhZG93LWNvbG9yKX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmc6MCAwIDEuMnJlbX0ubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tb2RhbC1oZWFkZXIgLm1vZGFsLXRpdGxlLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLm1vZGFsLXRpdGxle2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWNvbG9y''@;'; put 'put ''LCBibGFjayk7bWFyZ2luOjA7cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtaGVhZGVyIC5tb2RhbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAubW9kYWwtdGl0bGU6bm90KFtjZHMtdGV4dF0pe2ZvbnQtc2l6ZToxLjFyZW07Zm9udC1mYW1pbHk6TWV0''@;'; put 'put ''cm9wb2xpcyxBdmVuaXIgTmV4dCxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1tb2RhbC10aXRsZS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYpO2Zv''@;'; put 'put ''bnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItbW9kYWwtdGl0bGUtZm9udC13ZWlnaHQsIDIwMCk7bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubW9kYWwtaGVhZGVyIC5jbG9zZSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZXttYXJn''@;'; put 'put ''aW4tdG9wOi0uMDVyZW07bWFyZ2luLXJpZ2h0Oi0uMjVyZW07Zm9udC1zaXplOjEuM3JlbTtsaW5lLWhlaWdodDoxLjJyZW19Lm1vZGFsLWhlYWRlciAuY2xvc2UgY2RzLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2RzLWljb24sLm1vZGFsLWhlYWRlciAuY2xvc2Ug''@;'; put 'put ''Y2xyLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2UgY2xyLWljb257ZmlsbDojOGM4YzhjO2ZpbGw6dmFyKC0tY2xyLW1vZGFsLWNsb3NlLWNvbG9yLCAjOGM4YzhjKTtoZWlnaHQ6MS4ycmVtO3dpZHRoOjEuMnJlbX0ubW9kYWwtdGl0bGUtd3JhcHBlcntmbGV4OjF9Lm1v''@;'; put 'put ''ZGFsLXRpdGxlLXdyYXBwZXIgLm1vZGFsLXRpdGxlPmgze21hcmdpbi10b3A6MH0ubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NzB2aDtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZzowIC4xNXJlbX0ubW9kYWwtYm9keS13cmFwcGVyPjpmaXJzdC1jaGls''@;'; put 'put ''ZHttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MS4ycmVtIDAgMH0ubW9kYWwtZm9vdGVyIC5idG57bWFyZ2luOjAgMCAw''@;'; put 'put ''IC42cmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKXsubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NTV2aH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1vZGFsLWNvbnRlbnR7cGFkZGlu''@;'; put 'put ''ZzouNnJlbSAwIC42cmVtIDEuMnJlbX0ubW9kYWwtaGVhZGVyLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7cGFkZGluZzowIDEuMnJlbSAuNnJlbSAwfS5tb2RhbC1ib2R5LXdyYXBwZXJ7bWF4LWhlaWdodDo1NXZofS5tb2RhbC1mb290ZXJ7cGFkZGluZzouNnJlbSAxLjJyZW0gMCAwfX0u''@;'; put 'put ''bW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbW9kYWwtYmFja2Ryb3AtY29sb3IsICMzMzMzMzMpO29wYWNpdHk6Ljg1O29wYWNpdHk6dmFyKC0tY2xyLW1vZGFsLWJhY2tkcm9wLW9w''@;'; put 'put ''YWNpdHksIC44NSk7ei1pbmRleDoxMDQwfS5tb2RhbCAubW9kYWwtbmF2e2Rpc3BsYXk6bm9uZX06cm9vdHstLWNsci1oZWFkZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtOTAwKTstLWNsci1oZWFkZXItZGl2aWRlci1vcGFjaXR5Oi4xNTstLWNsci1oZWFkZXItbmF2LW9w''@;'; put 'put ''YWNpdHk6LjY1Oy0tY2xyLWhlYWRlci1uYXYtaG92ZXItb3BhY2l0eToxOy0tY2xyLWhlYWRlci0yLWJnLWNvbG9yOiM0ODVhNmE7LS1jbHItaGVhZGVyLTMtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMTAwMCk7LS1jbHItaGVhZGVyLTQtYmctY29sb3I6IzI0''@;'; put 'put ''N2JhZTstLWNsci1oZWFkZXItNS1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItaGVhZGVyLTYtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi0xMDAwKTstLWNsci1oZWFkZXItNy1iZy1jb2xvcjojMzA0MjUwOy0tY2xyLWhlYWRlci04LWJnLWNvbG9y''@;'; put 'put ''OiMwZjE3MWM7LS1jbHItaGVhZGVyLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLWhlYWRlci10aXRsZS1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpOy0tY2xyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jbHItaDUtZm9udC13''@;'; put 'put ''ZWlnaHQpOy0tY2xyLWhlYWRlci10aXRsZS1mb250LWZhbWlseTp2YXIoLS1jbHItaDUtZm9udC1mYW1pbHkpfWhlYWRlciwuaGVhZGVye2Rpc3BsYXk6ZmxleDtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjojMzMzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci1iZy1jb2xvciwgIzMzMzMzMyk7aGVpZ2h0OjNyZW07d2hpdGUtc3BhY2U6bm93cmFwfWhlYWRlci5oZWFkZXItMSwuaGVhZGVyLmhlYWRlci0xe2JhY2tncm91bmQtY29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1oZWFkZXItYmctY29sb3IsICMzMzMzMzMpfWhlYWRlci5oZWFkZXItMiwuaGVhZGVyLmhlYWRlci0ye2JhY2tncm91bmQtY29sb3I6IzQ4NWE2YTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItMi1iZy1jb2xvciwgIzQ4NWE2YSl9aGVhZGVyLmhlYWRlci0zLC5o''@;'; put 'put ''ZWFkZXIuaGVhZGVyLTN7YmFja2dyb3VuZC1jb2xvcjojMzIwMDQ3O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci0zLWJnLWNvbG9yLCAjMzIwMDQ3KX1oZWFkZXIuaGVhZGVyLTQsLmhlYWRlci5oZWFkZXItNHtiYWNrZ3JvdW5kLWNvbG9yOiMyNDdiYWU7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItaGVhZGVyLTQtYmctY29sb3IsICMyNDdiYWUpfWhlYWRlci5oZWFkZXItNSwuaGVhZGVyLmhlYWRlci01e2JhY2tncm91bmQtY29sb3I6IzAwNTY3YTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItNS1iZy1jb2xvciwgIzAwNTY3YSl9aGVhZGVyLmhl''@;'; put 'put ''YWRlci02LC5oZWFkZXIuaGVhZGVyLTZ7YmFja2dyb3VuZC1jb2xvcjojMDAzNjRkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci02LWJnLWNvbG9yLCAjMDAzNjRkKX1oZWFkZXIuaGVhZGVyLTcsLmhlYWRlci5oZWFkZXItN3tiYWNrZ3JvdW5kLWNvbG9yOiMzMDQyNTA7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTctYmctY29sb3IsICMzMDQyNTApfWhlYWRlci5oZWFkZXItOCwuaGVhZGVyLmhlYWRlci04e2JhY2tncm91bmQtY29sb3I6IzBmMTcxYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItOC1iZy1jb2xvciwgIzBmMTcxYyl9''@;'; put 'put ''aGVhZGVyIC5icmFuZGluZywuaGVhZGVyIC5icmFuZGluZ3tkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bzttaW4td2lkdGg6MTAuMnJlbTtwYWRkaW5nOjAgMS4ycmVtO2hlaWdodDozcmVtfWhlYWRlciAuYnJhbmRpbmc+YSxoZWFkZXIgLmJyYW5kaW5nPi5uYXYtbGluaywuaGVhZGVyIC5i''@;'; put 'put ''cmFuZGluZz5hLC5oZWFkZXIgLmJyYW5kaW5nPi5uYXYtbGlua3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6M3JlbTt0ZXh0LWRlY29yYXRpb246bm9uZX1oZWFkZXIgLmJyYW5kaW5nPmE6Zm9jdXMsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9j''@;'; put 'put ''dXMsLmhlYWRlciAuYnJhbmRpbmc+YTpmb2N1cywuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX1oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbixoZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLGhlYWRlciAuYnJhbmRpbmcgY2xyLWljb24s''@;'; put 'put ''LmhlYWRlciAuYnJhbmRpbmcgLmNsci1pY29uLC5oZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLC5oZWFkZXIgLmJyYW5kaW5nIGNsci1pY29ue2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OjEuOHJlbTt3aWR0aDoxLjhyZW07bWFyZ2luLXJpZ2h0Oi40NXJlbX1oZWFkZXIgLmJy''@;'; put 'put ''YW5kaW5nIC50aXRsZSwuaGVhZGVyIC5icmFuZGluZyAudGl0bGV7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLXRpdGxlLWNvbG9yLCAjZmFmYWZhKTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci10aXRsZS1mb250LXdlaWdodCwgNDAw''@;'; put 'put ''KTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWhlYWRlci10aXRsZS1mb250LWZhbWlseSwgTWV0cm9wb2xpcywgIkF2ZW5pciBOZXh0IiwgIkhlbHZldGljYSBOZXVlIiwgQXJp''@;'; put 'put ''YWwsIHNhbnMtc2VyaWYpO2ZvbnQtc2l6ZTouOHJlbTtsZXR0ZXItc3BhY2luZzouMDFlbTtsaW5lLWhlaWdodDozcmVtO3RleHQtZGVjb3JhdGlvbjpub25lfWhlYWRlciAuc2V0dGluZ3MsaGVhZGVyIC5oZWFkZXItbmF2LGhlYWRlciAuaGVhZGVyLWFjdGlvbnMsLmhlYWRlciAuc2V0dGlu''@;'; put 'put ''Z3MsLmhlYWRlciAuaGVhZGVyLW5hdiwuaGVhZGVyIC5oZWFkZXItYWN0aW9uc3toZWlnaHQ6M3JlbX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdz''@;'; put 'put ''IC5uYXYtdGV4dCwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtdGV4dCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LXRleHR7Zm9udC13ZWlnaHQ6NTAwfWhlYWRlciAuc2V0dGluZ3MgY2xyLWljb24saGVhZGVyIC5oZWFkZXItbmF2IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLWFjdGlv''@;'; put 'put ''bnMgY2xyLWljb24sLmhlYWRlciAuc2V0dGluZ3MgY2xyLWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyBjbHItaWNvbntjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSl9aGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtaWNvbiwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWljb24sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMg''@;'; put 'put ''Lm5hdi1pY29ue2hlaWdodDozcmVtO3dpZHRoOjNyZW19aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmssaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluaywuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmssLmhlYWRlciAuaGVhZGVy''@;'; put 'put ''LW5hdiAubmF2LWxpbmssLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5re3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6LjlyZW0gMS4ycmVtO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiNmYWZhZmE7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLCAjZmFmYWZhKTtvcGFjaXR5Oi42NTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItbmF2LW9wYWNpdHksIC42NSl9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlcixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5r''@;'; put 'put ''OmVuYWJsZWQ6aG92ZXIsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazplbmFibGVkOmhvdmVyLC5oZWFkZXIgLmhlYWRlci1h''@;'; put 'put ''Y3Rpb25zIC5uYXYtbGluazplbmFibGVkOmhvdmVye29wYWNpdHk6MTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHksIDEpfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6ZGlzYWJsZWQsaGVh''@;'; put 'put ''ZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpkaXNhYmxlZHtjdXJzb3I6''@;'; put 'put ''bm90LWFsbG93ZWR9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgLmZhLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5mYSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbixoZWFkZXIgLmhlYWRl''@;'; put 'put ''ci1hY3Rpb25zIC5uYXYtbGluayAuZmEsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgLm5hdi1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAuZmEsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIC5uYXYtaWNvbiwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGlu''@;'; put 'put ''ayAuZmEsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAuZmEsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbntmb250LXNpemU6MS4xcmVtfWhlYWRlciAuc2V0dGluZ3MgLm5h''@;'; put 'put ''di1saW5rIGNkcy1pY29uLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgY2RzLWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMt''@;'; put 'put ''aWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjbHItaWNvbiwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgY2RzLWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNkcy1pY29uLC5oZWFk''@;'; put 'put ''ZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgY2xyLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06''@;'; put 'put ''dHJhbnNsYXRlKC01MCUsLTUwJSk7aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW19aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5h''@;'; put 'put ''diAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2xyLWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25z''@;'; put 'put ''IC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNkcy1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5r''@;'; put 'put ''Lm5hdi1pY29uLXRleHQgY2RzLWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxp''@;'; put 'put ''bmsubmF2LWljb24tdGV4dCBjbHItaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6YXV0bztsZWZ0OmF1dG87dHJhbnNmb3JtOm5vbmU7bWFyZ2luLWxlZnQ6MS4ycmVtfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5h''@;'; put 'put ''diAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCAubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYg''@;'; put 'put ''Lm5hdi1saW5rLm5hdi1pY29uLXRleHQgLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IC5uYXYtdGV4dHttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDouM3JlbX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5h''@;'; put 'put ''di10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHR7ZGlzcGxheTpub25lfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5h''@;'; put 'put ''di1saW5rLmFjdGl2ZSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5hY3RpdmUsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmFjdGl2''@;'; put 'put ''ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTtvcGFjaXR5OjF9aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbms6Zm9jdXMsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmb2N1cyxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpmb2N1cywuaGVhZGVyIC5zZXR0''@;'; put 'put ''aW5ncyAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19aGVhZGVyIC5oZWFkZXItbmF2LC5oZWFkZXIgLmhlYWRlci1uYXZ7ZGlzcGxh''@;'; put 'put ''eTpmbGV4O2ZsZXg6MCAwIGF1dG99aGVhZGVyIC5oZWFkZXItbmF2Omxhc3QtY2hpbGQ+Lm5hdi1saW5rOmxhc3QtY2hpbGQ6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdjpsYXN0LWNoaWxkPi5uYXYtbGluazpsYXN0LWNoaWxkOmFmdGVye2NvbnRlbnQ6bm9uZX1oZWFkZXIgLmhlYWRlci1u''@;'; put 'put ''YXYgLm5hdi1saW5rOmZpcnN0LW9mLXR5cGUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGUsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zmlyc3Qtb2YtdHlwZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGV7cG9zaXRpb246''@;'; put 'put ''cmVsYXRpdmV9aGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmxhc3Qtb2YtdHlwZTphZnRlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpmaXJzdC1vZi10eXBlOmJlZm9yZSwuaGVhZGVy''@;'; put 'put ''IC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNp''@;'; put 'put ''dHk6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7aGVpZ2h0OjJyZW07d2lkdGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6YXV0b31oZWFkZXIgLmhlYWRlci1uYXYgLm5h''@;'; put 'put ''di1saW5rOmZpcnN0LW9mLXR5cGU6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmZpcnN0LW9mLXR5cGU6YmVmb3Jle2xlZnQ6MH1oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmxhc3Qtb2YtdHlwZTphZnRlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazps''@;'; put 'put ''YXN0LW9mLXR5cGU6YWZ0ZXJ7cmlnaHQ6MH1oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZTpmaXJzdC1vZi10eXBlOmJlZm9yZSxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZTpsYXN0LW9mLXR5cGU6YWZ0ZXIsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxp''@;'; put 'put ''bmsuYWN0aXZlOmZpcnN0LW9mLXR5cGU6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLmFjdGl2ZTpsYXN0LW9mLXR5cGU6YWZ0ZXJ7Y29udGVudDpub25lfWhlYWRlciAuc2V0dGluZ3MsaGVhZGVyIC5oZWFkZXItYWN0aW9ucywuaGVhZGVyIC5zZXR0aW5ncywuaGVhZGVy''@;'; put 'put ''IC5oZWFkZXItYWN0aW9uc3tmbGV4OjEgMCBhdXRvO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlLC5o''@;'; put 'put ''ZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xle3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjNyZW07aGVpZ2h0OjNyZW07b3V0bGluZS1vZmZzZXQ6LS4yNXJlbTtj''@;'; put 'put ''b2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTouNjU7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1vcGFjaXR5LCAuNjUpfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZW5hYmxlZDpo''@;'; put 'put ''b3ZlcixoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmVuYWJsZWQ6aG92ZXIsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRy''@;'; put 'put ''b3Bkb3duLXRvZ2dsZTplbmFibGVkOmhvdmVye29wYWNpdHk6MTtvcGFjaXR5OnZhcigtLWNsci1oZWFkZXItbmF2LWhvdmVyLW9wYWNpdHksIDEpfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJv''@;'; put 'put ''cGRvd24+LmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9''@;'; put 'put ''aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLGhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFwZV49YW5nbGVdKSxo''@;'; put 'put ''ZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNkcy1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbjpub3QoW3NoYXBl''@;'; put 'put ''Xj1hbmdsZV0pLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNkcy1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFw''@;'; put 'put ''ZV49YW5nbGVdKSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1p''@;'; put 'put ''Y29uOm5vdChbc2hhcGVePWFuZ2xlXSl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtoZWlnaHQ6MS4xcmVtO3dpZHRoOjEuMXJlbTtyaWdodDoxLjJyZW19aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYt''@;'; put 'put ''aWNvbiBjZHMtaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNk''@;'; put 'put ''cy1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbltzaGFwZV49YW5nbGVdLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNkcy1pY29u''@;'; put 'put ''W3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbltzaGFw''@;'; put 'put ''ZV49YW5nbGVdLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6LjZyZW07dG9wOjQ0JX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0''@;'; put 'put ''LGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUu''@;'; put 'put ''bmF2LXRleHR7cGFkZGluZzowIDEuOHJlbSAwIDEuMnJlbX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0saGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBj''@;'; put 'put ''bHItaWNvbltzaGFwZV49YW5nbGVdLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2RzLWljb25bc2hhcGVePWFuZ2xlXSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNs''@;'; put 'put ''ci1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2RzLWljb25bc2hhcGVePWFuZ2xlXSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtdGV4dCBjbHItaWNvbltzaGFw''@;'; put 'put ''ZV49YW5nbGVdLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi10ZXh0IGNkcy1pY29uW3NoYXBlXj1hbmdsZV0sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LXRleHQgY2xyLWljb25bc2hh''@;'; put 'put ''cGVePWFuZ2xlXXtyaWdodDoxLjJyZW19aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAu''@;'; put 'put ''ZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29ue3dpZHRoOjNyZW07cGFkZGluZy1yaWdodDowfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVu''@;'; put 'put ''dSxoZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bi5ib3R0b20tbGVmdD4uZHJvcGRvd24tbWVudSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93bi5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRy''@;'; put 'put ''b3Bkb3duLW1lbnUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duLmJvdHRvbS1y''@;'; put 'put ''aWdodD4uZHJvcGRvd24tbWVudSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnV7dG9wOjg1JX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bjpsYXN0LWNoaWxkLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSxoZWFkZXIgLmhl''@;'; put 'put ''YWRlci1hY3Rpb25zPi5kcm9wZG93bjpsYXN0LWNoaWxkLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd246bGFzdC1jaGlsZC5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duOmxh''@;'; put 'put ''c3QtY2hpbGQuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0Oi4xNXJlbX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tbWVudSxoZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tbWVudSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRv''@;'; put 'put ''d24gLmRyb3Bkb3duLW1lbnUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6LS4ycmVtO2xlZnQ6YXV0bztyaWdodDowfWhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duIDpsYXN0LWNoaWxkLmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5o''@;'; put 'put ''ZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gOmxhc3QtY2hpbGQuZHJvcGRvd24tbWVudSwuaGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gOmxhc3QtY2hpbGQuZHJvcGRvd24tbWVudSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gOmxhc3QtY2hpbGQuZHJvcGRvd24tbWVudXtt''@;'; put 'put ''YXJnaW4tcmlnaHQ6LjRyZW19aGVhZGVyIC5zZWFyY2gtYm94LGhlYWRlciAuc2VhcmNoLC5oZWFkZXIgLnNlYXJjaC1ib3gsLmhlYWRlciAuc2VhcmNoe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDowIDAgYXV0bzttYXgtd2lkdGg6MTQuNHJlbTtwYWRkaW5nOjA7aGVp''@;'; put 'put ''Z2h0OjNyZW07Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6LjY1O29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtb3BhY2l0eSwgLjY1KX1oZWFkZXIgLnNlYXJjaC1ib3g6ZW5hYmxlZDpob3ZlcixoZWFkZXIgLnNl''@;'; put 'put ''YXJjaDplbmFibGVkOmhvdmVyLC5oZWFkZXIgLnNlYXJjaC1ib3g6ZW5hYmxlZDpob3ZlciwuaGVhZGVyIC5zZWFyY2g6ZW5hYmxlZDpob3ZlcntvcGFjaXR5OjE7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLW5hdi1ob3Zlci1vcGFjaXR5LCAxKX1oZWFkZXIgLnNlYXJjaC1ib3g6ZGlzYWJs''@;'; put 'put ''ZWQsaGVhZGVyIC5zZWFyY2g6ZGlzYWJsZWQsLmhlYWRlciAuc2VhcmNoLWJveDpkaXNhYmxlZCwuaGVhZGVyIC5zZWFyY2g6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWhlYWRlciAuc2VhcmNoLWJveD4ubmF2LWljb24saGVhZGVyIC5zZWFyY2g+Lm5hdi1pY29uLC5oZWFkZXIgLnNl''@;'; put 'put ''YXJjaC1ib3g+Lm5hdi1pY29uLC5oZWFkZXIgLnNlYXJjaD4ubmF2LWljb257bWFyZ2luOjAgLjNyZW0gLjE1cmVtIDEuMnJlbX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsaGVhZGVyIC5zZWFyY2ggbGFiZWwsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCwuaGVhZGVyIC5zZWFyY2ggbGFi''@;'; put 'put ''ZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjNyZW07bGluZS1oZWlnaHQ6M3JlbTtwYWRkaW5nLWxlZnQ6MS4ycmVtO3RleHQtYWxpZ246Y2VudGVyfWhlYWRlciAuc2VhcmNoLWJveCBsYWJlbDpiZWZvcmUsaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJj''@;'; put 'put ''aC1ib3ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJjaCBsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUy''@;'; put 'put ''Rnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjNmZmZmZmYlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlM0N0aXRsZSUzRVNlYXJjaCUzQyUy''@;'; put 'put ''RnRpdGxlJTNFJTNDZyUyMGlkJTNEJTIyaWNvbnMlMjIlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNMTUlMkM0LjA1QTEwLjk1JTJDMTAuOTUlMkMwJTJDMSUyQzElMkM0LjA1JTJDMTUlMkMxMSUyQzExJTJDMCUyQzAlMkMxJTJDMTUlMkM0LjA1TTE1JTJDMkEx''@;'; put 'put ''MyUyQzEzJTJDMCUyQzElMkMwJTJDMjglMkMxNSUyQzEzJTJDMTMlMkMwJTJDMCUyQzAlMkMxNSUyQzJaJTIyJTJGJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTElMjIlMjAlMjBkJTNEJTIyTTMzLjcxJTJDMzIuMjlsLTcuMzctNy40Mi0xLjQyJTJDMS40MSUyQzcuMzclMkM3LjQyYTEl''@;'; put 'put ''MkMxJTJDMCUyQzElMkMwJTJDMS40Mi0xLjQxWiUyMiUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0UpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MXJlbTt3aWR0aDoxcmVtO21hcmdpbjoxcmVtIDAg''@;'; put 'put ''MDt2ZXJ0aWNhbC1hbGlnbjp0b3B9aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LGhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0e2xpbmUtaGVpZ2h0OjEuMnJlbTttYXJnaW46''@;'; put 'put ''LjlyZW0gMH1oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XSxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XSwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XXtib3JkZXI6MDtiYWNrZ3JvdW5k''@;'; put 'put ''OjAgMDtjb2xvcjojZmFmYWZhO2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7cGFkZGluZzowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxoZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlw''@;'; put 'put ''ZT10ZXh0XTphY3RpdmUsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBl''@;'; put 'put ''PXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cywuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmV7YmFja2dyb3VuZDowIDB9aGVhZGVyIC5icmFuZGluZysuc2VhcmNoLGhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaC1ib3gsLmhl''@;'; put 'put ''YWRlciAuYnJhbmRpbmcrLnNlYXJjaCwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveHtwb3NpdGlvbjpyZWxhdGl2ZX1oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2g6YWZ0ZXIsaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveDphZnRlciwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoOmFm''@;'; put 'put ''dGVyLC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZDojZmFmYWZhO2JhY2tncm91bmQ6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLCAjZmFmYWZhKTtvcGFjaXR5''@;'; put 'put ''OnZhcigtLWNsci1oZWFkZXItZGl2aWRlci1vcGFjaXR5LCAuMTUpO29wYWNpdHk6LjE1O2hlaWdodDoycmVtO3dpZHRoOi4wNXJlbTt3aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO3RvcDouNXJlbTtsZWZ0OjB9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0''@;'; put 'put ''aDo3NjhweCl7aGVhZGVyIC5zZWFyY2gtYm94LGhlYWRlciAuc2VhcmNoLC5oZWFkZXIgLnNlYXJjaC1ib3gsLmhlYWRlciAuc2VhcmNoe2ZsZXg6MSAwIGF1dG87anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21heC13aWR0aDpub25lfWhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCxoZWFkZXIg''@;'; put 'put ''LnNlYXJjaCBsYWJlbCwuaGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsLC5oZWFkZXIgLnNlYXJjaCBsYWJlbHtwYWRkaW5nOjA7d2lkdGg6M3JlbX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWw6YmVmb3JlLGhlYWRlciAuc2VhcmNoIGxhYmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2gtYm94IGxh''@;'; put 'put ''YmVsOmJlZm9yZSwuaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3Jle2xlZnQ6MXJlbX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsaGVhZGVyIC5zZWFyY2ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCBpbnB1dCwuaGVhZGVyIC5zZWFyY2ggbGFiZWwgaW5w''@;'; put 'put ''dXR7ZGlzcGxheTpub25lfWhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaDphZnRlcixoZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2gtYm94OmFmdGVyLC5oZWFkZXIgLmJyYW5kaW5nKy5zZWFyY2g6YWZ0ZXIsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaC1ib3g6YWZ0ZXJ7Y29udGVudDpub25lfWhl''@;'; put 'put ''YWRlciAuc2VhcmNoLWJveCsuc2V0dGluZ3MsaGVhZGVyIC5zZWFyY2gtYm94Ky5oZWFkZXItYWN0aW9ucyxoZWFkZXIgLnNlYXJjaCsuc2V0dGluZ3MsaGVhZGVyIC5zZWFyY2grLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzLC5oZWFkZXIgLnNlYXJjaC1i''@;'; put 'put ''b3grLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNlYXJjaCsuc2V0dGluZ3MsLmhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9uc3twb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjAgMCBhdXRvfWhlYWRlciAuc2VhcmNoLWJveCsuc2V0dGluZ3M6YWZ0ZXIsaGVhZGVyIC5zZWFyY2gtYm94Ky5o''@;'; put 'put ''ZWFkZXItYWN0aW9uczphZnRlcixoZWFkZXIgLnNlYXJjaCsuc2V0dGluZ3M6YWZ0ZXIsaGVhZGVyIC5zZWFyY2grLmhlYWRlci1hY3Rpb25zOmFmdGVyLC5oZWFkZXIgLnNlYXJjaC1ib3grLnNldHRpbmdzOmFmdGVyLC5oZWFkZXIgLnNlYXJjaC1ib3grLmhlYWRlci1hY3Rpb25zOmFmdGVy''@;'; put 'put ''LC5oZWFkZXIgLnNlYXJjaCsuc2V0dGluZ3M6YWZ0ZXIsLmhlYWRlciAuc2VhcmNoKy5oZWFkZXItYWN0aW9uczphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2JhY2tncm91bmQ6I2ZhZmFmYTtiYWNrZ3JvdW5kOnZhcigtLWNsci1oZWFk''@;'; put 'put ''ZXItZm9udC1jb2xvciwgI2ZhZmFmYSk7b3BhY2l0eTp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItb3BhY2l0eSwgLjE1KTtvcGFjaXR5Oi4xNTtoZWlnaHQ6MnJlbTt3aWR0aDouMDVyZW07d2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTt0b3A6LjVyZW07bGVm''@;'; put 'put ''dDowfX1hLmxpbmstbm9ybWFsOmxpbmt7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItbGluay1jb2xvciwgIzAwNzJhMyl9YS5saW5rLWhvdmVyZWQ6bGlua3tjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1saW5rLWhvdmVyLWNvbG9yLCAjMDA3MmEzKX1hLmxpbmstY2xpY2tl''@;'; put 'put ''ZDpsaW5re2NvbG9yOiM5ZTU3YmM7Y29sb3I6dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yLCAjOWU1N2JjKX1hLmxpbmstdmlzaXRlZDpsaW5re2NvbG9yOiM1NjU5Yjg7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvciwgIzU2NTliOCl9Lm5hdntkaXNwbGF5OmZsZXg7aGVp''@;'; put 'put ''Z2h0OjEuOHJlbTtsaXN0LXN0eWxlLXR5cGU6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOjA7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym94LXNoYWRvdzowIC0uMDVyZW0gI2NjYyBpbnNldDtib3gtc2hhZG93OjAgLS4wNXJlbSAwIHZhcigtLWNsci1uYXYtYm94LXNo''@;'; put 'put ''YWRvdy1jb2xvciwgI2NjY2NjYykgaW5zZXR9Lm5hdiAubmF2LWl0ZW17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OjEuMnJlbX0ubmF2IC5uYXYtaXRlbS5hY3RpdmU+Lm5hdi1saW5re2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5rLWFjdGl2ZS1jb2xvciwg''@;'; put 'put ''YmxhY2spO2JveC1zaGFkb3c6MCAtLjA1cmVtICNjY2MgaW5zZXQ7Ym94LXNoYWRvdzowIC0uMDVyZW0gMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IsICNjY2NjY2MpIGluc2V0fS5uYXYgLm5hdi1saW5re2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5rLWNvbG9y''@;'; put 'put ''LCAjNjY2NjY2KTtmb250LXNpemU6LjdyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1uYXYtbGluay1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS44cmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAu''@;'; put 'put ''MTVyZW07Ym94LXNoYWRvdzpub25lfS5uYXYgLm5hdi1saW5rLmJ0bnt0ZXh0LXRyYW5zZm9ybTpub25lO21hcmdpbjowO21hcmdpbi1ib3R0b206LS4wNXJlbTtib3JkZXItcmFkaXVzOjB9Lm5hdiAubmF2LWxpbms6aG92ZXIsLm5hdiAubmF2LWxpbms6Zm9jdXMsLm5hdiAubmF2LWxpbms6''@;'; put 'put ''YWN0aXZle2NvbG9yOmluaGVyaXR9Lm5hdiAubmF2LWxpbms6aG92ZXIsLm5hdiAubmF2LWxpbmsuYWN0aXZle2JveC1zaGFkb3c6MCAtLjE1cmVtICMwMDcyYTMgaW5zZXQ7Ym94LXNoYWRvdzowIC0uMTVyZW0gMCB2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yLCAjMDA3''@;'; put 'put ''MmEzKSBpbnNldDt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjJzIGVhc2UtaW59Lm5hdiAubmF2LWxpbms6aG92ZXIsLm5hdiAubmF2LWxpbms6Zm9jdXMsLm5hdiAubmF2LWxpbms6YWN0aXZlLC5uYXYgLm5hdi1saW5rLmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2IC5uYXYtbGlu''@;'; put 'put ''ay5hY3RpdmV7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yLCBibGFjayk7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1uYXYtbGluay1hY3RpdmUtZm9udC13ZWlnaHQsIDQwMCl9Lm5hdiAubmF2LWxpbmsubmF2LWl0ZW17bWFy''@;'; put 'put ''Z2luLXJpZ2h0OjEuMnJlbX06cm9vdHstLWNsci1zdWJuYXYtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKX0uc3ViLW5hdiwuc3VibmF2e2Rpc3BsYXk6ZmxleDtib3gtc2hh''@;'; put 'put ''ZG93OjAgLS4wNXJlbSAjY2NjIGluc2V0O2JveC1zaGFkb3c6MCAtLjA1cmVtIDAgdmFyKC0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yLCAjY2NjY2NjKSBpbnNldDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZm''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN1Ym5hdi1iZy1jb2xvciwgd2hpdGUpO2hlaWdodDoxLjhyZW19LnN1Yi1uYXYgLm5hdiwuc3VibmF2IC5uYXZ7ZmxleDoxIDEgYXV0bztwYWRkaW5nLWxlZnQ6MS4ycmVtfS5zdWItbmF2IC5uYXYtaXRlbSwuc3ViLW5hdiAubmF2LWl0ZW0g''@;'; put 'put ''YSwuc3VibmF2IC5uYXYtaXRlbSwuc3VibmF2IC5uYXYtaXRlbSBhe3RleHQtZGVjb3JhdGlvbjpub25lfS5zdWItbmF2IGFzaWRlLC5zdWJuYXYgYXNpZGV7ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxLjhyZW07cGFkZGluZzowIDEuMnJl''@;'; put 'put ''bX0uc3ViLW5hdiBhc2lkZT46bGFzdC1jaGlsZCwuc3VibmF2IGFzaWRlPjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowO3BhZGRpbmctcmlnaHQ6MH06cm9vdHstLWNsci1zaWRlbmF2LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXNpZGVuYXYtYm9y''@;'; put 'put ''ZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpOy0tY2xyLXNpZGVuYXYtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1j''@;'; put 'put ''bHItc2lkZW5hdi1saW5rLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1zaWRlbmF2LWhlYWRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItaDYtY29sb3IpOy0tY2xyLXNpZGVuYXYtaGVhZGVyLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1oNi1mb250LXdlaWdodCk7LS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC1mYW1pbHk6dmFyKC0tY2xyLWg2LWZvbnQtZmFtaWx5KTstLWNsci1zaWRlbmF2LWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1wMS1jb2xvcik7LS1jbHItc2lkZW5hdi1mb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQpfS5zaWRlbmF2e2xpbmUtaGVpZ2h0OjEuMnJlbTttYXgtd2lkdGg6MTUuNnJlbTttaW4td2lkdGg6MTAuOHJlbTt3aWR0aDoxOCU7Ym9yZGVyLXJpZ2h0Oi4wNXJlbSBzb2xpZCAj''@;'; put 'put ''Y2NjO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnNpZGVuYXYgLnNpZGVuYXYtY29udGVudHtmbGV4OjEgMSBhdXRvO292ZXJmbG93LXg6aGlkZGVuO3BhZGRpbmctYm90dG9tOjEuMnJlbX0uc2lkZW5hdiAuc2lkZW5hdi1jb250ZW50IC5uYXYtbGlua3tib3JkZXItcmFk''@;'; put 'put ''aXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWFjdGl2ZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1y''@;'; put 'put ''YWRpdXM6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3dpZHRoOjEwMCV9LnNpZGVuYXYgLnNpZGVuYXYtY29udGVu''@;'; put 'put ''dD4ubmF2LWxpbmt7bWFyZ2luOjEuMnJlbSAwIDAgMS41cmVtO3BhZGRpbmctbGVmdDouNnJlbTtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci1zaWRlbmF2LWhlYWRlci1jb2xvciwgIzMzMzMzMyk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1zaWRlbmF2LWhlYWRl''@;'; put 'put ''ci1mb250LXdlaWdodCwgNTAwKTtmb250LWZhbWlseTpNZXRyb3BvbGlzLEF2ZW5pciBOZXh0LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWZvbnQtZmFtaWx5LCBNZXRyb3BvbGlzLCAiQXZlbmlyIE5leHQiLCAi''@;'; put 'put ''SGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZik7Zm9udC1zaXplOi43cmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0ZXItc3BhY2luZzpub3JtYWx9LnNpZGVuYXYgLnNpZGVuYXYtY29udGVudD4ubmF2LWxpbms6aG92ZXJ7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6''@;'; put 'put ''dmFyKC0tY2xyLXNpZGVuYXYtbGluay1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LnNpZGVuYXYgLnNpZGVuYXYtY29udGVudD4ubmF2LWxpbmsuYWN0aXZle2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWJnLWNvbG9yLCAjZDhlM2U5''@;'; put 'put ''KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1zaWRlbmF2LWxpbmstYWN0aXZlLWNvbG9yLCBibGFjayl9LnNpZGVuYXYgLm5hdi1ncm91cHtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1zaWRlbmF2LWNvbG9yLCAjNjY2NjY2KTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFy''@;'; put 'put ''KC0tY2xyLXNpZGVuYXYtZm9udC13ZWlnaHQsIDQwMCk7Zm9udC1zaXplOi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW4tdG9wOjEuMnJlbTt3aWR0aDoxMDAlfS5zaWRlbmF2IC5uYXYtZ3JvdXAgLm5hdi1saXN0LC5zaWRlbmF2IC5uYXYtZ3JvdXAgbGFiZWx7cGFkZGluZzow''@;'; put 'put ''IDAgMCAxLjhyZW07Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MCAuM3JlbX0uc2lkZW5hdiAubmF2LWdyb3VwIC5uYXYtbGlzdHtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLXRvcDowfS5zaWRlbmF2IC5uYXYtZ3JvdXAgLm5hdi1saXN0IC5u''@;'; put 'put ''YXYtbGlua3tsaW5lLWhlaWdodDouOHJlbTtwYWRkaW5nOi4ycmVtIDAgLjJyZW0gLjZyZW19LnNpZGVuYXYgLm5hdi1ncm91cCAubmF2LWxpc3QgLm5hdi1saW5rOmhvdmVye2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1zaWRlbmF2LWxpbmstaG92ZXItY29sb3Is''@;'; put 'put ''ICNlOGU4ZTgpfS5zaWRlbmF2IC5uYXYtZ3JvdXAgLm5hdi1saXN0IC5uYXYtbGluay5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLXNpZGVuYXYtbGluay1hY3RpdmUtYmctY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXNp''@;'; put 'put ''ZGVuYXYtbGluay1hY3RpdmUtY29sb3IsIGJsYWNrKX0uc2lkZW5hdiAubmF2LWdyb3VwIGxhYmVse2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLXNpZGVuYXYtaGVhZGVyLWNvbG9yLCAjMzMzMzMzKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXNpZGVuYXYtaGVh''@;'; put 'put ''ZGVyLWZvbnQtd2VpZ2h0LCA1MDApO2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsQXZlbmlyIE5leHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjtmb250LWZhbWlseTp2YXIoLS1jbHItc2lkZW5hdi1oZWFkZXItZm9udC1mYW1pbHksIE1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIs''@;'; put 'put ''ICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmKTtmb250LXNpemU6LjdyZW07bGluZS1oZWlnaHQ6MS4ycmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbH0uc2lkZW5hdiAubmF2LWdyb3VwIGlucHV0W3R5cGU9Y2hlY2tib3hde3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgx''@;'; put 'put ''cHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uc2lkZW5hdiAubmF2LWdyb3VwIGlucHV0W3R5cGU9Y2hlY2tib3hd''@;'; put 'put ''OmZvY3VzK2xhYmVse291dGxpbmU6IzNiOTlmYyBhdXRvIC4yNXJlbX0uc2lkZW5hdiAuY29sbGFwc2libGUgbGFiZWx7cGFkZGluZzowIDAgMCAxLjNyZW19LnNpZGVuYXYgLmNvbGxhcHNpYmxlIGxhYmVsOmFmdGVye2NvbnRlbnQ6IiI7ZmxvYXQ6bGVmdDtoZWlnaHQ6LjVyZW07d2lkdGg6''@;'; put 'put ''LjVyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSgtLjRyZW0pIHRyYW5zbGF0ZVkoLjM1cmVtKTtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIy''@;'; put 'put ''JTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjM5YTlhOWElM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUy''@;'; put 'put ''RmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJD''@;'; put 'put ''OS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjB9LnNpZGVuYXYg''@;'; put 'put ''LmNvbGxhcHNpYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWR+Lm5hdi1saXN0LC5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkfnVse2hlaWdodDowO2Rpc3BsYXk6bm9uZX0uc2lkZW5hdiAuY29sbGFwc2libGUgaW5wdXRbdHlwZT1jaGVj''@;'; put 'put ''a2JveF1+Lm5hdi1saXN0LC5zaWRlbmF2IC5jb2xsYXBzaWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XX51bHtoZWlnaHQ6YXV0b30uc2lkZW5hdiAuY29sbGFwc2libGUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZH5sYWJlbDphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC05MGRlZykgdHJh''@;'; put 'put ''bnNsYXRlKC0uMzVyZW0pIHRyYW5zbGF0ZVkoLS40cmVtKX06cm9vdHstLWNsci12ZXJ0aWNhbC1uYXYtZGl2aWRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYw''@;'; put 'put ''MCk7LS1jbHItdmVydGljYWwtbmF2LWl0ZW0tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci12ZXJ0aWNhbC1uYXYtYmctY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXZlcnRpY2FsLW5hdi10''@;'; put 'put ''b2dnbGUtaWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXZlcnRpY2FsLW5hdi1oZWFkZXItZm9udC13ZWlnaHQ6dmFyKC0tY2xyLXA0LWZvbnQtd2VpZ2h0KX0uY2xyLXZlcnRpY2FsLW5hdntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmctdG9w''@;'; put 'put ''Oi45cmVtO3dpZHRoOjEycmVtO21pbi13aWR0aDoyLjRyZW07YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvciwgI2U4ZThlOCk7d2lsbC1jaGFuZ2U6d2lkdGg7dHJhbnNpdGlvbjp3aWR0aCAuMnMgZWFzZS1p''@;'; put 'put ''bi1vdXR9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1kaXZpZGVye2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6LjA1''@;'; put 'put ''cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItd2lkdGgsIC4wNXJlbSk7bWFyZ2luOi42cmVtIDB9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDox''@;'; put 'put ''IDEgYXV0bztvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW59LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cHtkaXNwbGF5OmJsb2NrO2ZsZXg6MCAwIGF1dG87aGVpZ2h0OmF1dG87bWluLWhlaWdodDoxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50''@;'; put 'put ''e2Rpc3BsYXk6ZmxleDtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvciwgIzY2NjY2Nil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1h''@;'; put 'put ''Y3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7cG9zaXRpb246cmVsYXRpdmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFj''@;'; put 'put ''dGl2ZTpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6LjE1cmVtO2JhY2tncm91bmQ6dmFyKC0tY2xyLW5hdi1hY3RpdmUtYm94LXNoYWRvdy1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFj''@;'; put 'put ''dGl2ZSAubmF2LWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvciwgIzAwNzJhMyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50OmhvdmVye2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5h''@;'; put 'put ''di1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91''@;'; put 'put ''cC1jb250ZW50IC5uYXYtbGlua3tmbGV4OjEgMSBhdXRvO3BhZGRpbmctbGVmdDowO21pbi13aWR0aDowfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWljb257bWFyZ2luLWxlZnQ6MS4ycmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAu''@;'; put 'put ''bmF2LXRleHR7cGFkZGluZy1sZWZ0OjEuMnJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1pY29uKy5uYXYtdGV4dHtwYWRkaW5nLWxlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdGV4dHtk''@;'; put 'put ''aXNwbGF5Om5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jaGlsZHJlbntvdmVyZmxvdy15OmhpZGRlbn0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2Vye2ZsZXg6MCAwIDEuOHJlbTtib3JkZXI6MDtoZWln''@;'; put 'put ''aHQ6MS44cmVtO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYg''@;'; put 'put ''Lm5hdi10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xl''@;'; put 'put ''LWRvdWJsZV17Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWNvbG9yLCBibGFjayl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2Vye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7''@;'; put 'put ''aGVpZ2h0OjEuOHJlbTttYXJnaW4tdG9wOi0uOXJlbX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87Y29sb3I6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpsZWZ0fS5jbHItdmVydGljYWwtbmF2IC5uYXYt''@;'; put 'put ''Z3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRyaWdnZXItaWNvbntmbGV4LXNocmluazowO3dpZHRoOi44cmVtO2FsaWduLXNlbGY6Y2VudGVyO21hcmdpbi1yaWdodDouNXJlbTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLWlj''@;'; put 'put ''b257bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6LjVyZW07dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlcisubmF2LWNvbnRlbnR7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXZl''@;'; put 'put ''cnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRo''@;'; put 'put ''LCAuMDVyZW0pO3BhZGRpbmctdG9wOi42cmVtfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7aGVpZ2h0OjEuOHJlbTtwYWRkaW5nOjAgLjZyZW0gMCAxLjJyZW07bGluZS1oZWlnaHQ6MS44cmVtO291dGxpbmUtb2Zmc2V0Oi0u''@;'; put 'put ''MjVyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2IC5uYXYtdGV4dHtmbGV4OjEgMSBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxp''@;'; put 'put ''bmt7ZGlzcGxheTpmbGV4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IsIHdoaXRlKTtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxp''@;'; put 'put ''bmsuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDouMTVyZW07YmFja2dyb3VuZDp2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmsuYWN0aXZl''@;'; put 'put ''IC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZl''@;'; put 'put ''LWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yLCAjY2NjY2NjKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWhlYWRlcntwYWRkaW5nOjAg''@;'; put 'put ''LjZyZW0gMCAxLjJyZW07Zm9udC1zaXplOi42cmVtO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhlYWRlci1mb250LXdlaWdodCwgNjAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7bGluZS1oZWlnaHQ6MS44cmVtfS5jbHItdmVydGljYWwtbmF2''@;'; put 'put ''IC5uYXYtaWNvbntmbGV4OjAgMCAuOHJlbTthbGlnbi1zZWxmOmNlbnRlcjtoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07bWluLWhlaWdodDouOHJlbTttaW4td2lkdGg6LjhyZW07bWFyZ2luLXJpZ2h0Oi4zcmVtO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uY2xyLXZlcnRpY2FsLW5hdiBjbHIt''@;'; put 'put ''dmVydGljYWwtbmF2LWdyb3VwLWNoaWxkcmVue2Rpc3BsYXk6YmxvY2t9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1idG57ZmxleDoxIDEgYXV0bztwYWRkaW5nOjA7bWFyZ2luOjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0u''@;'; put 'put ''Y2xyLXZlcnRpY2FsLW5hdj4ubmF2LWxpbmssLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1jb250ZW50Pi5uYXYtbGlua3tmbGV4OjAgMCAxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCAxLjhyZW19LmNsci12ZXJ0aWNhbC1uYXYg''@;'; put 'put ''Lm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRleHR7ZGlzcGxheTpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaWNvbisubmF2LWdyb3VwLXRleHR7cGFkZGluZy1sZWZ0OjB9LmNsci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1saW5rLC5jbHIt''@;'; put 'put ''dmVydGljYWwtbmF2Lmhhcy1uYXYtZ3JvdXBzIC5uYXYtZ3JvdXAgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2Lmhhcy1uYXYtZ3JvdXBzIC5uYXYtZ3JvdXAgLm5hdi1ncm91cC10cmlnZ2Vye2ZvbnQtd2VpZ2h0OjYwMH0uY2xyLXZlcnRpY2FsLW5hdi5oYXMtbmF2LWdyb3Vw''@;'; put 'put ''cyAubmF2LWdyb3VwLWNoaWxkcmVuIC5uYXYtbGlua3tmb250LXdlaWdodDo0MDB9LmNsci12ZXJ0aWNhbC1uYXYuaGFzLWljb25zIC5uYXYtZ3JvdXAtY2hpbGRyZW4gLm5hdi1saW5re3BhZGRpbmctbGVmdDoyLjNyZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC5hY3RpdmU6bm90''@;'; put 'put ''KC5pcy1leHBhbmRlZCkgLm5hdi1ncm91cC1jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWxlZnQ6LjE1cmVtIHNvbGlkIHZhcigtLWNsci1uYXYtYWN0aXZl''@;'; put 'put ''LWJveC1zaGFkb3ctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAuYWN0aXZlOm5vdCguaXMtZXhwYW5kZWQpIC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWljb257ZmlsbDojMDA3MmEzO2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvciwgIzAw''@;'; put 'put ''NzJhMyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluay5hY3RpdmV+Lm5hdi1ncm91cC10cmlnZ2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSl9''@;'; put 'put ''LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtbGluazpob3Zlcn4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyl9LmNsci12''@;'; put 'put ''ZXJ0aWNhbC1uYXY6bm90KC5pcy1jb2xsYXBzZWQpIC5uYXYtbGluaysubmF2LWdyb3VwLXRyaWdnZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0p''@;'; put 'put ''IC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZHt3aWR0aDoyLjRyZW07bWluLXdpZHRoOjIuNHJlbTtjdXJzb3I6cG9pbnRlcn0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHIt''@;'; put 'put ''dmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LXRyaWdnZXJ7bWFyZ2luLXJpZ2h0Oi4xNXJlbX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNv''@;'; put 'put ''bGxhcHNlZCAubmF2LWljb257bWFyZ2luOjA7bWFyZ2luLWxlZnQ6LjhyZW19Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1n''@;'; put 'put ''cm91cC1jb250ZW50IC5uYXYtbGlua3tmbGV4OjAgMCAyLjRyZW19Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC1j''@;'; put 'put ''b250ZW50IC5uYXYtbGlua34ubmF2LWdyb3VwLXRyaWdnZXJ7ZmxleDowIDAgLjhyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSgtLjhyZW0pO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4t''@;'; put 'put ''aGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29s''@;'; put 'put ''bGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlcntwYWRkaW5nOjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cC10cmln''@;'; put 'put ''Z2Vye3BhZGRpbmctbGVmdDowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjbHItaWNvbi5uYXYt''@;'; put 'put ''Z3JvdXAtdHJpZ2dlci1pY29ue2hlaWdodDoxLjhyZW07d2lkdGg6LjVyZW07bWFyZ2luLWxlZnQ6LjE1cmVtO21hcmdpbi1yaWdodDowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNs''@;'; put 'put ''ci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbi5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue3dpZHRoOi41cmVtfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdl''@;'; put 'put ''ci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAsLm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQg''@;'; put 'put ''Lm5hdi1saW5re2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZC5oYXMtaWNvbnMgLm5hdi1ncm91cHtkaXNwbGF5''@;'; put 'put ''OmJsb2NrfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LWxpbmt7ZGlzcGxheTpmbGV4fS5tYWluLWNvbnRh''@;'; put 'put ''aW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LWdyb3VwLXRleHQsLm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3Zl''@;'; put 'put ''cmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtdGV4dHtwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtw''@;'; put 'put ''YWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjB9LmNsci12ZXJ0aWNhbC1uYXYubmF2LXRyaWdnZXItLWJvdHRvbSAubmF2LXRyaWdnZXJ7b3JkZXI6MjttYXJnaW4tdG9wOjB9LmNsci12''@;'; put 'put ''ZXJ0aWNhbC1uYXYubmF2LXRyaWdnZXItLWJvdHRvbSAubmF2LXRyaWdnZXIrLm5hdi1jb250ZW50e2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wOm5vbmU7cGFkZGluZy10b3A6MH06''@;'; put 'put ''cm9vdHstLWNsci1zbGlkaW5nLXBhbmVsLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhvdmVyLWJnOnZhcigtLWNsci1jb2xv''@;'; put 'put ''ci1uZXV0cmFsLTApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LXRyaWdnZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci1yZXNwb25z''@;'; put 'put ''aXZlLW5hdi1oYW1idXJnZXItYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1ib3JkZXItcmFkaXVzKTstLWNsci1yZXNwb25zaXZlLW5hdi1vdmVyZmxvdy1ib3JkZXItcmFkaXVzOi4ycmVtOy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJv''@;'; put 'put ''cC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1yZXNwb25zaXZlLW5hdi1oZWFkZXItYmFja2Ryb3Atb3BhY2l0eTouODV9LmNsci1uYXYtY2xvc2V7bWFyZ2luOi43NXJlbTstLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCl9LmNsci1uYXYt''@;'; put 'put ''Y2xvc2U6aG92ZXIsLmNsci1uYXYtY2xvc2U6Zm9jdXN7LS1jb2xvcjp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvcil9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlciwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7ZGlzcGxheTpub25lfS5oZWFkZXItaGFtYnVyZ2Vy''@;'; put 'put ''LXRyaWdnZXI+c3BhbiwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7ZGlz''@;'; put 'put ''cGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi4xcmVtO3dpZHRoOjEuMnJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xy''@;'; put 'put ''LXJlc3BvbnNpdmUtbmF2LWhhbWJ1cmdlci1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbiwuY2xyLW5hdi1jbG9zZT5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2Vy''@;'; put 'put ''PnNwYW46YmVmb3JlLC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+''@;'; put 'put ''c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmV7dG9wOi0uMzVyZW19LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Ym90dG9tOi0uMzVyZW19LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3Bh''@;'; put 'put ''biwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbntiYWNrZ3JvdW5kOjAgMH0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmJlZm9y''@;'; put 'put ''ZSwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbjphZnRlcntsZWZ0Oi4xNXJlbTt0cmFuc2Zvcm0tb3JpZ2luOjklO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5z''@;'; put 'put ''cGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3Bh''@;'; put 'put ''biwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjpiZWZvcmUsLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2U+c3BhbiwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO2hlaWdodDouMnJlbTt3aWR0aDouMnJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1yYWRpdXM6LjJyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYt''@;'; put 'put ''b3ZlcmZsb3ctYm9yZGVyLXJhZGl1cywgLjJyZW0pfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW57cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVy''@;'; put 'put ''LW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuY2xyLW5hdi1j''@;'; put 'put ''bG9zZT5zcGFuOmJlZm9yZXt0b3A6LS40cmVtfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Ym90dG9tOi0uNHJlbX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW4sLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNw''@;'; put 'put ''YW57YmFja2dyb3VuZDowIDB9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFu''@;'; put 'put ''OmFmdGVye2hlaWdodDouMXJlbTt3aWR0aDoxLjJyZW07bGVmdDotLjNyZW07dHJhbnNmb3JtLW9yaWdpbjotMyU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3Bh''@;'; put 'put ''bjpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk5''@;'; put 'put ''MnB4KXsubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxLjJyZW07''@;'; put 'put ''aGVpZ2h0OjNyZW07d2lkdGg6M3JlbTtwYWRkaW5nOjAgMCAuMnJlbTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6I2ZhZmFmYTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6LjY1O29wYWNpdHk6dmFyKC0tY2xy''@;'; put 'put ''LWhlYWRlci1uYXYtb3BhY2l0eSwgLjY1KX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjpmb2N1cywubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmZvY3Vze291dGxpbmUtb2Zmc2V0Oi0uMjVyZW19Lm1haW4tY29udGFpbmVyIC5oZWFk''@;'; put 'put ''ZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZW5hYmxlZDpob3ZlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmVuYWJsZWQ6aG92ZXJ7b3BhY2l0eToxO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1uYXYtaG92ZXItb3BhY2l0eSwgMSl9Lm1haW4tY29udGFpbmVyIC5o''@;'; put 'put ''ZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZGlzYWJsZWQsLm1haW4tY29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1''@;'; put 'put ''Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7ZGlzcGxheTpmbGV4''@;'; put 'put ''O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpmaXhlZDtpbnNldDowIGF1dG8gMCAwO2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvciwgI2U4ZThlOCk7ei1pbmRleDoxMDM5O2hlaWdodDoxMDB2aDt0cmFuc2Zvcm06dHJh''@;'; put 'put ''bnNsYXRlKC0xOHJlbSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMiwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpmaXhlZDtpbnNldDowIDAgMCBhdXRvO2Jh''@;'; put 'put ''Y2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvciwgI2U4ZThlOCk7ei1pbmRleDoxMDM5O2hlaWdodDoxMDB2aDt0cmFuc2Zvcm06dHJhbnNsYXRlKDE4cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWlu''@;'; put 'put ''ZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0ye292ZXJmbG93OmluaGVyaXR9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lkZSwubWFpbi1jb250''@;'; put 'put ''YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lkZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEg''@;'; put 'put ''YXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lkZXtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu''@;'; put 'put ''dGVyO3dpZHRoOjEwMCV9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LC5tYWluLWNvbnRhaW5l''@;'; put 'put ''ciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdntwYWRkaW5nLWxlZnQ6MH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWl0ZW0sLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtaXRlbSwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWl0ZW0sLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtaXRlbXtoZWlnaHQ6MS44cmVtO21hcmdpbi1yaWdodDowfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYt''@;'; put 'put ''bGV2ZWwtMSAubmF2IC5uYXYtbGluaywubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluaywubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5h''@;'; put 'put ''di1sZXZlbC0yIC5uYXYgLm5hdi1saW5re3BhZGRpbmc6MCAuNnJlbSAwIDEuMnJlbTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3Jk''@;'; put 'put ''ZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Y29sb3I6IzY2''@;'; put 'put ''Njtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tY29sb3IsICM2NjY2NjYpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYt''@;'; put 'put ''bGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12''@;'; put 'put ''ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyIC5zdWJu''@;'; put 'put ''YXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5u''@;'; put 'put ''YXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDouMTVyZW07YmFja2dyb3Vu''@;'; put 'put ''ZDp2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1s''@;'; put 'put ''aW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29u''@;'; put 'put ''e2ZpbGw6IzAwNzJhMztmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3RpdmUtY29sb3IsICMwMDcyYTMpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1s''@;'; put 'put ''ZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2NjY7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm1h''@;'; put 'put ''aW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2''@;'; put 'put ''IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2Jv''@;'; put 'put ''eC1zaGFkb3c6bm9uZX0ubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhvdmVyLWJnLCB3aGl0ZSl9Lm1h''@;'; put 'put ''aW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNs''@;'; put 'put ''ci1uYXYtbGV2ZWwtMntib3JkZXItcmlnaHQ6bm9uZX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7Y29udGVudDoiIjtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IsICNmYWZhZmEpO29wYWNpdHk6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLW9wYWNpdHksIC4xNSk7b3BhY2l0eTouMTU7aGVpZ2h0OjJyZW07d2lk''@;'; put 'put ''dGg6LjA1cmVtO3dpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7dG9wOi41cmVtO2xlZnQ6MH0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuYnJhbmRpbmd7bWF4LXdpZHRoOjEycmVtO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWluZXIg''@;'; put 'put ''LmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZ3twYWRkaW5nLWxlZnQ6MH0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZyAuY2xyLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1i''@;'; put 'put ''dXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgLmxvZ28sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgY2RzLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgY2xyLWlj''@;'; put 'put ''b257ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5icmFuZGluZysuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1uYXYrLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye21hcmdpbi1sZWZ0OmF1dG99Lm1haW4tY29udGFp''@;'; put 'put ''bmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLWJhY2tkcm9wLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDojMDAwO2JhY2tncm91bmQ6dmFyKC0t''@;'; put 'put ''Y2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1iZy1jb2xvciwgYmxhY2spO29wYWNpdHk6Ljg1O29wYWNpdHk6dmFyKC0tY2xyLXJlc3BvbnNpdmUtbmF2LWhlYWRlci1iYWNrZHJvcC1vcGFjaXR5LCAuODUpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTAzOH0ubWFpbi1jb250''@;'; put 'put ''YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLC5tYWluLWNvbnRh''@;'; put 'put ''aW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5re2ZsZXg6MCAwIGF1dG87''@;'; put 'put ''b3BhY2l0eToxO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNvbG9yLCAjNjY2NjY2KX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1pY29uLC5t''@;'; put 'put ''YWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAuZmEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5r''@;'; put 'put ''IC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVs''@;'; put 'put ''LTEgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAuZmEsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNs''@;'; put 'put ''ci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5mYXtkaXNwbGF5Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1l''@;'; put 'put ''bnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5l''@;'; put 'put ''ci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LXRl''@;'; put 'put ''eHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc2xpZGluZy1wYW5lbC10ZXh0LWNvbG9yLCAjNjY2NjY2KTtsaW5lLWhlaWdodDoxLjJyZW07cGFkZGluZzouM3JlbSAwIC4zcmVtIDEuMnJlbTt3aGl0ZS1zcGFjZTpub3JtYWw7Zm9udC13ZWlnaHQ6''@;'; put 'put ''NDAwfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xy''@;'; put 'put ''LW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4t''@;'; put 'put ''b3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYt''@;'; put 'put ''bGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXIt''@;'; put 'put ''bmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYt''@;'; put 'put ''aXRlbS1hY3RpdmUtY29sb3IsICM2NjY2NjYpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yLCB3aGl0ZSk7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1l''@;'; put 'put ''bnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4t''@;'; put 'put ''Y29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYt''@;'; put 'put ''bGluay5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOi4xNXJlbTtiYWNrZ3JvdW5kOnZhcigtLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1t''@;'; put 'put ''ZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29u''@;'; put 'put ''LC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yLCAjMDA3MmEzKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYt''@;'; put 'put ''bGV2ZWwtMSAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5h''@;'; put 'put ''di5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVt''@;'; put 'put ''LWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1ob3Zlci1iZy1jb2xvciwgI2NjY2NjYyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1l''@;'; put 'put ''bnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0yIC5uYXYtbGluay5hY3RpdmU+Lm5hdi10ZXh0e2NvbG9yOmluaGVyaXR9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYg''@;'; put 'put ''Lm5hdi10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZ3twb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjE4cmVtO21heC13aWR0aDoxOHJlbTt6LWluZGV4OjEwNDA7''@;'; put 'put ''cGFkZGluZy1sZWZ0OjEuMnJlbX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmt7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwu''@;'; put 'put ''bWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyAubG9nbywubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVy''@;'; put 'put ''IC5icmFuZGluZyBjbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9ja30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbltzaGFwZT12bS1idWddLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJy''@;'; put 'put ''YW5kaW5nIGNsci1pY29uW3NoYXBlPXZtLWJ1Z10sLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLmNsci12bXctbG9nb3tiYWNrZ3JvdW5kLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLXJhZGl1czouMTVyZW19Lm1haW4tY29udGFpbmVyLm9wZW4t''@;'; put 'put ''aGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLnRpdGxle2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXNsaWRpbmctcGFuZWwtdGV4dC1jb2xvciwgIzY2NjY2Nik7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyLm9wZW4taGFt''@;'; put 'put ''YnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6YXV0bztsZWZ0OjA7ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoMTguNnJlbSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVy''@;'; put 'put ''Z2VyLW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW57YmFja2dyb3VuZDowIDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+''@;'; put 'put ''c3BhbjpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntsZWZ0Oi4xNXJlbTt0cmFuc2Zvcm0tb3JpZ2luOjklO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdl''@;'; put 'put ''ci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVu''@;'; put 'put ''LWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEs''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtwYWRkaW5nLXRvcDo0LjJyZW07dHJhbnNmb3JtOnRyYW5z''@;'; put 'put ''bGF0ZSgwKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLnNpZGVuYXYtY29udGVudCwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3VibmF2LmNs''@;'; put 'put ''ci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMSAuc2lkZW5hdi1jb250ZW50LC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMSAuc2lkZW5hdi1jb250ZW50e3BhZGRpbmctYm90dG9tOjEuMnJlbX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51''@;'; put 'put ''IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5v''@;'; put 'put ''cGVuLW92ZXJmbG93LW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2''@;'; put 'put ''LmNsci1uYXYtbGV2ZWwtMntwYWRkaW5nLXRvcDoxLjJyZW19Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2xlZnQ6YXV0bzt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTguNnJl''@;'; put 'put ''bSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFue2JhY2tncm91''@;'; put 'put ''bmQ6MCAwfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2hlaWdodDouMXJlbTt3aWR0aDoxLjJyZW07bGVmdDotLjNy''@;'; put 'put ''ZW07dHJhbnNmb3JtLW9yaWdpbjotMyU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVy''@;'; put 'put ''Zmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3Vi''@;'; put 'put ''bmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhh''@;'; put 'put ''bWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtvdmVyZmxvdzppbmhlcml0O3dpZHRoOjE4cmVtO21heC13aWR0aDoxOHJlbX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250''@;'; put 'put ''YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnNpZGVuYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0ye3dpZHRoOjE4cmVtO21heC13aWR0aDoxOHJlbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmJy''@;'; put 'put ''YW5kaW5ne21heC13aWR0aDo3LjJyZW07bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xe3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE0LjRyZW0pfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1u''@;'; put 'put ''YXYuY2xyLW5hdi1sZXZlbC0ye3RyYW5zZm9ybTp0cmFuc2xhdGUoMTQuNHJlbSl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmd7d2lkdGg6MTQuNHJlbTttYXgtd2lkdGg6MTQuNHJlbX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXIt''@;'; put 'put ''bWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRh''@;'; put 'put ''aW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDoxNC40cmVtO21heC13aWR0aDoxNC40''@;'; put 'put ''cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OmF1dG87bGVmdDowO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKDE1cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0u''@;'; put 'put ''bWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVu''@;'; put 'put ''dSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zaWRlbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Bl''@;'; put 'put ''bi1vdmVyZmxvdy1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt3aWR0aDoxNC40cmVtO21heC13aWR0aDoxNC40cmVtfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtsZWZ0''@;'; put 'put ''OmF1dG87ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE1cmVtKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlOmFmdGVye2NvbnRlbnQ6bm9uZX19OnJvb3R7LS1jbHItcHJvZ3Jl''@;'; put 'put ''c3MtZGVmYXVsdC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7LS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTE6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNDAwKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMjp2YXIoLS1jbHItY29sb3ItZGFuZ2VyLTgwMCk7LS1jbHItcHJv''@;'; put 'put ''Z3Jlc3MtYWx0LWNvbG9yLTM6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKTstLWNsci1wcm9ncmVzcy1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApfS5wcm9ncmVzcywucHJvZ3Jlc3Mtc3RhdGlje2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVy''@;'; put 'put ''LXJhZGl1czowO2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDoyZW07bWFyZ2luOjA7bWF4LWhlaWdodDouN3JlbTttaW4taGVpZ2h0Oi4ycmVtO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LnByb2dyZXNzPnByb2dyZXNzey13ZWJraXQtYXBwZWFyYW5jZTpub25l''@;'; put 'put ''Oy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWRlZmF1bHQtY29sb3IsICMwMDcyYTMpO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yLCAjZThlOGU4KTtib3JkZXI6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyl9LnByb2dyZXNzPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAw''@;'; put 'put ''NzJhMyl9LnByb2dyZXNzPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi1tb3otcHJvZ3Jlc3MtYmFyey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO2NvbG9yOiNlOGU4ZTg7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXByb2dyZXNzLWJnLWNvbG9yLCAjZThlOGU4KTttaW4td2lkdGg6Mi40cmVtO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfS5wcm9ncmVzcz5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJh''@;'; put 'put ''bnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFye2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYmctY29sb3IsICNlOGU4ZTgp''@;'; put 'put ''fS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1w''@;'; put 'put ''cm9ncmVzcy12YWx1ZXstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluO3RyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluO2JvcmRlci1yYWRpdXM6MH0ucHJvZ3Jlc3Muc3VjY2Vzcz5wcm9ncmVzc3tjb2xvcjojNWViNzE1O2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1h''@;'; put 'put ''bHQtY29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3Mu''@;'; put 'put ''c3VjY2Vzcz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzc3tjb2xvcjojYzIxZDAwO2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMywgI2MyMWQwMCl9LnByb2dyZXNzLndhcm5pbmc+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0z''@;'; put 'put ''LCAjYzIxZDAwKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNz''@;'; put 'put ''e2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1w''@;'; put 'put ''cm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmRhbmdlcj5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jl''@;'; put 'put ''c3MubGFiZWxlZCwucHJvZ3Jlc3Mtc3RhdGljLmxhYmVsZWR7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDozZW19LnByb2dyZXNzLmxhYmVsZWQ+c3BhbiwucHJvZ3Jlc3Mtc3RhdGljLmxhYmVsZWQ+c3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxZW07cG9zaXRpb246YWJz''@;'; put 'put ''b2x1dGU7dG9wOjUwJTtyaWdodDowO2xpbmUtaGVpZ2h0OjFlbTttYXJnaW4tdG9wOi0uMzc1ZW19QGtleWZyYW1lcyBjbHItcHJvZ3Jlc3MtZmFkZXswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX0ucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZT5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0sLnByb2dy''@;'; put 'put ''ZXNzLnByb2dyZXNzLWZhZGU+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdK3NwYW57YW5pbWF0aW9uOmNsci1wcm9ncmVzcy1mYWRlIC4zcyBsaW5lYXIgLjVzIGZvcndhcmRzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3MsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNze3RyYW5zaXRpb246''@;'; put 'put ''Y29sb3IgLjFzIGVhc2Utb3V0IDFzfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUsLnByb2dyZXNzLmZsYXNoPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4s''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzO3RyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUs''@;'; put 'put ''LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFyLC5wcm9ncmVzcy5mbGFz''@;'; put 'put ''aD5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7LW1vei10cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNrZ3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3M7dHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzfS5w''@;'; put 'put ''cm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl17Y29sb3I6IzVlYjcxNTtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjojNWViNzE1O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xLCAjNWViNzE1KX0ucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXSwucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZS5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0rc3Bhbnthbmlt''@;'; put 'put ''YXRpb246Y2xyLXByb2dyZXNzLWZhZGUgLjZzIGxpbmVhciAxcyBmb3J3YXJkc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXXtjb2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmZs''@;'; put 'put ''YXNoLWRhbmdlcj5wcm9ncmVzc1t2YWx1ZT0iMTAwIl06Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX0ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnBy''@;'; put 'put ''b2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yLCAjYzIxZDAwKX1Aa2V5ZnJhbWVzIGNsci1wcm9ncmVzcy1sb29wZXJ7MCV7bGVmdDotMTAw''@;'; put 'put ''JX10b3tsZWZ0OjEwMCV9fS5wcm9ncmVzcy5sb29we3Bvc2l0aW9uOnJlbGF0aXZlfS5wcm9ncmVzcy5sb29wPnByb2dyZXNze292ZXJmbG93OmhpZGRlbjtjb2xvcjp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCwgdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy5s''@;'; put 'put ''b29wPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCwgdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy5sb29wPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJh''@;'; put 'put ''cntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsIHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MubG9vcD5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucHJv''@;'; put 'put ''Z3Jlc3MubG9vcDphZnRlcnthbmltYXRpb246Y2xyLXByb2dyZXNzLWxvb3BlciAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtjb250ZW50OiIgIjt0b3A6MDtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvciwgIzAwNzJhMyk7d2lkdGg6NzUlfS5wcm9ncmVzcy5sb29wLmRhbmdlcjphZnRlciwucHJvZ3Jlc3MubG9vcC53YXJuaW5nOmFmdGVye2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMiwgI2MyMWQwMCl9LnByb2dyZXNzLmxvb3Auc3VjY2VzczphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI3MTU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEsICM1ZWI3MTUpfS5uYXYtaXRlbSAu''@;'; put 'put ''cHJvZ3Jlc3M6YWZ0ZXJ7dG9wOjB9LnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9n''@;'; put 'put ''cmVzcy1iZy1jb2xvciwgI2U4ZThlOCk7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3Mt''@;'; put 'put ''ZGVmYXVsdC1jb2xvciwgIzAwNzJhMyk7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MCU7Y29udGVudDoiICJ9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMSJdOmJlZm9yZSwucHJvZ3Jlc3Mt''@;'; put 'put ''c3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMiXTpiZWZvcmV7d2lkdGg6MiV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNCJdOmJlZm9y''@;'; put 'put ''ZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNyJdOmJl''@;'; put 'put ''Zm9yZXt3aWR0aDo1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12''@;'; put 'put ''YWx1ZT0iMTAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTIiXTpiZWZvcmV7d2lkdGg6MTAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dy''@;'; put 'put ''ZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+''@;'; put 'put ''LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE3Il06YmVmb3Jle3dpZHRoOjE1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOCJdOmJlZm9yZSwu''@;'; put 'put ''cHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMSJdOmJl''@;'; put 'put ''Zm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMiJdOmJlZm9yZXt3aWR0aDoyMCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0''@;'; put 'put ''YS12YWx1ZT0iMjQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0''@;'; put 'put ''ZXJbZGF0YS12YWx1ZT0iMjciXTpiZWZvcmV7d2lkdGg6MjUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0''@;'; put 'put ''aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMyIl06YmVmb3Jle3dpZHRoOjMw''@;'; put 'put ''JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNSJd''@;'; put 'put ''OmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNyJdOmJlZm9yZXt3aWR0aDozNSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJb''@;'; put 'put ''ZGF0YS12YWx1ZT0iMzgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3Mt''@;'; put 'put ''bWV0ZXJbZGF0YS12YWx1ZT0iNDEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDIiXTpiZWZvcmV7d2lkdGg6NDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQzIl06YmVmb3JlLC5wcm9ncmVzcy1z''@;'; put 'put ''dGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ2Il06YmVmb3JlLC5wcm9n''@;'; put 'put ''cmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ3Il06YmVmb3Jle3dpZHRoOjQ1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0''@;'; put 'put ''OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZh''@;'; put 'put ''bHVlPSI1MiJdOmJlZm9yZXt3aWR0aDo1MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jl''@;'; put 'put ''c3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTciXTpiZWZvcmV7d2lkdGg6NTUlfS5wcm9ncmVz''@;'; put 'put ''cy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYwIl06YmVmb3JlLC5w''@;'; put 'put ''cm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYyIl06YmVmb3Jle3dpZHRoOjYwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVl''@;'; put 'put ''PSI2MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRh''@;'; put 'put ''LXZhbHVlPSI2NiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NyJdOmJlZm9yZXt3aWR0aDo2NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJv''@;'; put 'put ''Z3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRp''@;'; put 'put ''Yz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzIiXTpiZWZvcmV7d2lkdGg6NzAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjczIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc0Il06YmVmb3Jl''@;'; put 'put ''LC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc3Il06''@;'; put 'put ''YmVmb3Jle3dpZHRoOjc1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltk''@;'; put 'put ''YXRhLXZhbHVlPSI4MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MiJdOmJlZm9yZXt3aWR0aDo4MCV9LnByb2dyZXNzLXN0YXRpYz4u''@;'; put 'put ''cHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODUiXTpiZWZvcmUsLnByb2dyZXNzLXN0''@;'; put 'put ''YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODciXTpiZWZvcmV7d2lkdGg6ODUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg4Il06YmVm''@;'; put 'put ''b3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijkx''@;'; put 'put ''Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkyIl06YmVmb3Jle3dpZHRoOjkwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRl''@;'; put 'put ''cltkYXRhLXZhbHVlPSI5NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NiJdOmJlZm9yZXt3aWR0aDo5NSV9LnByb2dyZXNzLXN0YXRp''@;'; put 'put ''Yz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTciXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTkiXTpiZWZvcmV7d2lkdGg6OTgl''@;'; put 'put ''fS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEwMCJdOmJlZm9yZXt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD4ucHJvZ3Jlc3MtbWV0ZXJ7cmlnaHQ6M2VtfS5wcm9ncmVzcy1zdGF0aWMuc3VjY2Vzcz4ucHJvZ3Jlc3MtbWV0ZXI6YmVm''@;'; put 'put ''b3Jle2JhY2tncm91bmQtY29sb3I6IzVlYjcxNTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSwgIzVlYjcxNSl9LnByb2dyZXNzLXN0YXRpYy53YXJuaW5nPi5wcm9ncmVzcy1tZXRlcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjojYzIxZDAwO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zLCAjYzIxZDAwKX0ucHJvZ3Jlc3Mtc3RhdGljLmRhbmdlcj4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQt''@;'; put 'put ''Y29sb3ItMiwgI2MyMWQwMCl9LmNhcmQtYmxvY2sgLnByb2dyZXNzLC5jYXJkLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWMsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcywuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpY3ttYXJnaW46MDttYXJnaW4tdG9wOi0uNnJlbTtoZWlnaHQ6LjE4NzVyZW07''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGU7bGVmdDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlciwuY2FyZC1mb290ZXIgLnByb2dyZXNzPnByb2dyZXNzLC5jYXJkLWZvb3RlciAucHJvZ3Jlc3Mtc3RhdGljPi5w''@;'; put 'put ''cm9ncmVzcy1tZXRlcntoZWlnaHQ6LjE4NzVyZW07cG9zaXRpb246YWJzb2x1dGV9LmNhcmQtYmxvY2sgLnByb2dyZXNzLnRvcCwuY2FyZC1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYy50''@;'; put 'put ''b3B7bWFyZ2luLXRvcDowO3RvcDowfS5uYXYtaXRlbSAucHJvZ3Jlc3MsLm5hdi1pdGVtIC5wcm9ncmVzcy1zdGF0aWN7bWFyZ2luOjA7aGVpZ2h0Oi4yNHJlbTttaW4taGVpZ2h0Oi4yNHJlbTttYXgtaGVpZ2h0Oi4yNHJlbTtsZWZ0OjB9Lm5hdi1pdGVtIC5wcm9ncmVzcz5wcm9ncmVzcywu''@;'; put 'put ''bmF2LWl0ZW0gLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0Oi4yNHJlbTttaW4taGVpZ2h0Oi4yNHJlbTttYXgtaGVpZ2h0Oi4yNHJlbTtwb3NpdGlvbjphYnNvbHV0ZX0ucHJvZ3Jlc3MtYmxvY2t7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2Vu''@;'; put 'put ''dGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnByb2dyZXNzLWJsb2NrPip7ZmxleDowIDAgYXV0bztwYWRkaW5nLXJpZ2h0Oi42cmVtfS5wcm9ncmVzcy1ibG9jaz46Zmlyc3QtY2hpbGR7cGFkZGluZy1yaWdodDouOXJlbX0ucHJvZ3Jlc3MtYmxvY2s+Omxhc3QtY2hpbGR7cGFkZGluZy1y''@;'; put 'put ''aWdodDowfS5wcm9ncmVzcy1ibG9jaz5sYWJlbHtmb250LXdlaWdodDo2MDB9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcywucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLXN0YXRpY3tmbGV4OjAgMSBhdXRvfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXB7ZmxleC1kaXJlY3Rpb246''@;'; put 'put ''Y29sdW1uO2hlaWdodDphdXRvO2ZsZXg6MCAxIGF1dG87ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcy1ncm91cCAuY2xyLXJvd3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXAgLmNsci1y''@;'; put 'put ''b3c+W2NsYXNzKj1jbHItY29sLV17cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9ja3ttYXJnaW4tYm90dG9tOi42cmVtO3BhZGRpbmc6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2s6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9''@;'; put 'put ''LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrPmxhYmVse21heC13aWR0aDozMyU7bGluZS1oZWlnaHQ6LjlyZW19LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2''@;'; put 'put ''ZTtoZWlnaHQ6LjYzOTVyZW07bWFyZ2luLXRvcDowfS5jYXJkLWJsb2NrIC5wcm9ncmVzcy1ibG9jayAucHJvZ3Jlc3M+cHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcz4ucHJvZ3Jlc3MtbWV0ZXIsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9n''@;'; put 'put ''cmVzcy1zdGF0aWM+cHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVye2hlaWdodDouNjM5NXJlbX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAucHJvZ3Jlc3MtYmxvY2s+bGFiZWwsOnJvb3QgLnByb2dyZXNzLWJsb2Nr''@;'; put 'put ''PmxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDozLjZyZW07d2lkdGg6My42cmVtO21pbi1oZWlnaHQ6My42cmVtO21pbi13aWR0aDozLjZyZW07YW5pbWF0aW9uOnNwaW4gMXMgbGluZWFyIGlu''@;'; put 'put ''ZmluaXRlO21hcmdpbjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMGlkJTNEJTIyTGF5ZXJfMiUyMiUyMGRhdGEtbmFtZSUzRCUyMkxheWVyJTIwMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5v''@;'; put 'put ''cmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNzIlMjA3MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUy''@;'; put 'put ''QyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZpbGwlM0ElMjBub25lJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwc3Ryb2tlLW1pdGVybGltaXQlM0ElMjAxMCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS13aWR0aCUzQSUyMDVweCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUzQSUyMGJsYWNrJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tl''@;'; put 'put ''LW9wYWNpdHklM0ElMjAwLjE1JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''c3Ryb2tlJTNBJTIwJTIzMDA3MmEzJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VQcmVs''@;'; put 'put ''b2FkZXJfNzJ4MiUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGN4JTNEJTIyMzYlMjIlMjBjeSUzRCUyMjM2JTIyJTIwciUzRCUyMjMzJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTIl''@;'; put 'put ''MjIlMjBkJTNEJTIyTTE0LjMlMkM2MC45QTMzJTJDMzMlMkMwJTJDMCUyQzElMkMzNiUyQzMlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZwYXRoJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTt0ZXh0LWluZGVudDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LnNwaW5u''@;'; put 'put ''ZXIuc3Bpbm5lci1tZHtoZWlnaHQ6MS44cmVtO3dpZHRoOjEuOHJlbTttaW4taGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtfS5zcGlubmVyLnNwaW5uZXItaW5saW5lLC5zcGlubmVyLnNwaW5uZXItc217aGVpZ2h0Oi45cmVtO3dpZHRoOi45cmVtO21pbi1oZWlnaHQ6LjlyZW07bWlu''@;'; put 'put ''LXdpZHRoOi45cmVtfS5zcGlubmVyLnNwaW5uZXItaW5saW5le3ZlcnRpY2FsLWFsaWduOnRleHQtYm90dG9tfS5zcGlubmVyLnNwaW5uZXItaW52ZXJzZXtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMGlkJTNEJTIyTGF5ZXJfMiUyMiUy''@;'; put 'put ''MGRhdGEtbmFtZSUzRCUyMkxheWVyJTIwMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNzIlMjA3MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlM0NzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MGZpbGwlM0ElMjBub25lJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLW1pdGVybGltaXQlM0ElMjAxMCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS13aWR0aCUzQSUy''@;'; put 'put ''MDVweCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUzQSUyMHdo''@;'; put 'put ''aXRlJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlLW9wYWNpdHklM0ElMjAwLjE1JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''LmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzNzRjMWUyJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3R5''@;'; put 'put ''bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VQcmVsb2FkZXJfNzJ4MiUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGN4JTNEJTIyMzYlMjIlMjBjeSUzRCUyMjM2JTIy''@;'; put 'put ''JTIwciUzRCUyMjMzJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTIlMjIlMjBkJTNEJTIyTTE0LjMlMkM2MC45QTMzJTJDMzMlMkMwJTJDMCUyQzElMkMzNiUyQzMlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZwYXRoJTNFJTBBJTNDJTJGc3ZnJTNF''@;'; put 'put ''JTBBKX0uc3Bpbm5lci5zcGlubmVyLW5ldXRyYWwtMHtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMGlkJTNEJTIyTGF5ZXJfMiUyMiUyMGRhdGEtbmFtZSUzRCUyMkxheWVyJTIwMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3''@;'; put 'put ''dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNzIlMjA3MiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5j''@;'; put 'put ''bHMtMSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMiUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZpbGwlM0ElMjBub25lJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwc3Ryb2tlLW1pdGVybGltaXQlM0ElMjAxMCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZS13aWR0aCUzQSUyMDVweCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5jbHMtMSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHN0cm9rZSUzQSUyMHRyYW5zcGFyZW50JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwc3Ryb2tlLW9wYWNpdHklM0ElMjAxJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmNscy0yJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwc3Ryb2tlJTNBJTIwJTIzZmZmZmZmJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3R5bGUlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDdGl0''@;'; put 'put ''bGUlM0VQcmVsb2FkZXJfNzJ4MiUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDY2lyY2xlJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGN4JTNEJTIyMzYlMjIlMjBjeSUzRCUyMjM2JTIyJTIwciUzRCUyMjMzJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGNsYXNzJTNE''@;'; put 'put ''JTIyY2xzLTIlMjIlMjBkJTNEJTIyTTE0LjMlMkM2MC45QTMzJTJDMzMlMkMwJTJDMCUyQzElMkMzNiUyQzMlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZwYXRoJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKX0uc3Bpbm5lci5zcGlubmVyLWNoZWNre2FuaW1hdGlvbjpub25lO2JhY2tncm91bmQ6''@;'; put 'put ''dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMzYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNB''@;'; put 'put ''JTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlMjBmb2N1c2FibGUlM0QlMjJmYWxzZSUyMiUyMGFyaWEtaGlkZGVuJTNEJTIydHJ1ZSUyMiUyMHJvbGUlM0QlMjJpbWcl''@;'; put 'put ''MjIlM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwNzJhMyUyMiUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xMy43MiUyQzI3LjY5JTJDMy4yOSUyQzE3LjI3YTElMkMxJTJDMCUyQzAlMkMxJTJDMS40MS0xLjQxbDklMkM5''@;'; put 'put ''TDMxLjI5JTJDNy4yOWExJTJDMSUyQzAlMkMwJTJDMSUyQzEuNDElMkMxLjQxWiUyMiUzRSUzQyUyRnBhdGglM0UlM0MlMkZzdmclM0UpfS5idG4tc20gLnNwaW5uZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIC5zcGlubmVye2hlaWdodDouNjVyZW07d2lkdGg6LjY1cmVt''@;'; put 'put ''O21pbi1oZWlnaHQ6LjY1cmVtO21pbi13aWR0aDouNjVyZW19LmJ0bi1pY29uOm5vdCguYnRuLXNtKSAuc3Bpbm5lcntoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW07bWluLWhlaWdodDouOHJlbTttaW4td2lkdGg6LjhyZW19OnJvb3R7LS1jbHItdGFibGUtYmdjb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3ItbmV1dHJhbC0wKTstLWNsci10aGVhZC1iZ2NvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci10YWJsZS1oZWFkZXItYm9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXRhYmxlLWZvb3Rlci1ib3JkZXItdG9wLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdGFibGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTQwMCk7LS1jbHItdGFibGVyb3ctYm9yZGVyY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci10YWJsZS1ib3JkZXItcmFkaXVz''@;'; put 'put ''OnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci10YWJsZS1ib3JkZXJ3aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoKTstLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzOi4xcmVtOy0tY2xyLXRhYmxlLWZvbnQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRy''@;'; put 'put ''YWwtNzAwKTstLWNsci10aGVhZC1jb2xvcjojNjY2NjY2fS50YWJsZXtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29s''@;'; put 'put ''b3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdGFibGUtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYmdjb2xvciwgd2hpdGUpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IsICM2NjY2NjYpO21hcmdpbjowO21hcmdpbi10b3A6MS4ycmVtO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCV9LnRhYmxlIHRoLC50YWJsZSB0''@;'; put 'put ''ZHtmb250LXNpemU6LjY1cmVtO2xpbmUtaGVpZ2h0Oi43cmVtO2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXRvcC1jb2xvcjojZThlOGU4O2Jv''@;'; put 'put ''cmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlcm93LWJvcmRlcmNvbG9yLCAjZThlOGU4KTtwYWRkaW5nOi41NXJlbSAuNnJlbTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnRhYmxlIHRoLmxlZnQsLnRhYmxlIHRkLmxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50YWJs''@;'; put 'put ''ZSB0aC5sZWZ0OmZpcnN0LWNoaWxkLC50YWJsZSB0ZC5sZWZ0OmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDouM3JlbX0udGFibGUgdGh7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdGhlYWQtY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNTVyZW07Zm9udC13ZWlnaHQ6NjAwO2xldHRl''@;'; put 'put ''ci1zcGFjaW5nOi4wM2VtO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJl''@;'; put 'put ''bTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLWNvbG9yOiNjY2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wOjAgbm9uZX0udGFi''@;'; put 'put ''bGUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlIHRib2R5K3Rib2R5e2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7''@;'; put 'put ''Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LnRhYmxlIHRoZWFkIHRoOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xcmVtO2JvcmRlci10b3AtbGVm''@;'; put 'put ''dC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUgdGhlYWQgdGg6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjFyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNv''@;'; put 'put ''cm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xcmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxl''@;'; put 'put ''LWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci10''@;'; put 'put ''YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlLWNvbXBhY3QgdGgsLnRhYmxlLWNvbXBhY3QgdGR7cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0aGVhZCB0aHtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7ZGlz''@;'; put 'put ''cGxheTpub25lfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0aHtib3JkZXItYm90dG9tOjA7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wLWNv''@;'; put 'put ''bG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0aHt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLWNvbG9yOiNj''@;'; put 'put ''Y2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0ZDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdo''@;'; put 'put ''dC13aWR0aDouMDVyZW07Ym9yZGVyLXJpZ2h0LXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IsICNmYWZhZmEpO2ZvbnQtd2VpZ2h0OjYwMH0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUudGFibGUtdmVydGljYWwgdGJv''@;'; put 'put ''ZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjAgbm9uZX0udGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlw''@;'; put 'put ''ZSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRi''@;'; put 'put ''b2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwudGFibGUudGFibGUtdmVydGljYWwgdGJvZHk6Zmlyc3Qtb2YtdHlwZSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMXJlbTti''@;'; put 'put ''b3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cywgLjFyZW0pfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3Qt''@;'; put 'put ''Y2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LnRhYmxlLnRhYmxlLXZl''@;'; put 'put ''cnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjFy''@;'; put 'put ''ZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMsIC4xcmVtKX0udGFibGUudGFibGUtbm9ib3JkZXJ7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS50''@;'; put 'put ''YWJsZS50YWJsZS1ub2JvcmRlciB0aHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci10b3A6MCBub25lfS50YWJsZS50YWJs''@;'; put 'put ''ZS1ub2JvcmRlciB0aDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQ6MCBub25lfS50YWJsZS50YWJsZS1ub2JvcmRlciB0ZHtib3JkZXItdG9wOjAgbm9uZTtwYWRkaW5nLXRvcDouNnJlbX0udGFibGUudGFibGUtbm9ib3JkZXIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjAgbm9uZX0u''@;'; put 'put ''dGFibGUudGFibGUtbm9ib3JkZXIgdGhlYWQgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoZWFkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowfS50YWJsZS50YWJsZS1ub2JvcmRlciB0aCwudGFibGUudGFibGUtbm9ib3JkZXIgdGR7Ym9yZGVyLXJhZGl1czow''@;'; put 'put ''IWltcG9ydGFudH0udGFibGUudGFibGUtbm9ib3JkZXIgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRkOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS50YWJsZS50YWJsZS1jb21wYWN0IHRoLC50YWJsZS50YWJsZS1jb21wYWN0IHRke3BhZGRpbmctdG9wOi4zcmVt''@;'; put 'put ''O3BhZGRpbmctYm90dG9tOi4yNXJlbX0udGFibGUudGFibGUtY29tcGFjdC50YWJsZS1ub2JvcmRlciB0aCwudGFibGUudGFibGUtY29tcGFjdC50YWJsZS1ub2JvcmRlciB0ZHtwYWRkaW5nLXRvcDouMzVyZW07cGFkZGluZy1ib3R0b206LjNyZW19OnJvb3R7LS1jbHItdG9vbHRpcC1iYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItdG9vbHRpcC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci10b29sdGlwLWZv''@;'; put 'put ''bnQtd2VpZ2h0OnZhcigtLWNsci1wMy1mb250LXdlaWdodCl9LnRvb2x0aXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OnZpc2libGV9LnRvb2x0aXA+LnRvb2x0aXAtY29udGVudHt2aXNpYmlsaXR5OmhpZGRlbjtvcGFj''@;'; put 'put ''aXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBsaW5lYXI7d2hpdGUtc3BhY2U6bm9ybWFsO3otaW5kZXg6MTA1MH0udG9vbHRpcD4udG9vbHRpcC1jb250ZW50OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0Oi0yMHB4O2NvbnRlbnQ6IiJ9LnRvb2x0aXA6aG92ZXI+LnRvb2x0aXAt''@;'; put 'put ''Y29udGVudCwudG9vbHRpcDpmb2N1cz4udG9vbHRpcC1jb250ZW50e3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjF9LnRvb2x0aXA6aG92ZXI+LnRvb2x0aXAtY29udGVudDplbXB0eSwudG9vbHRpcDpmb2N1cz4udG9vbHRpcC1jb250ZW50OmVtcHR5e3Zpc2liaWxpdHk6aGlkZGVuO29w''@;'; put 'put ''YWNpdHk6MH0udG9vbHRpcDpmb2N1c3tvdXRsaW5lOjB9LnRvb2x0aXA6Zm9jdXM+OmZpcnN0LWNoaWxke291dGxpbmUtb2Zmc2V0Oi4wNXJlbTtvdXRsaW5lLXdpZHRoOi4wNXJlbTtvdXRsaW5lLWNvbG9yOiMzYjk5ZmM7b3V0bGluZS1zdHlsZTpzb2xpZH0udG9vbHRpcD4udG9vbHRpcC1j''@;'; put 'put ''b250ZW50LC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXRvcC1yaWdodHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250''@;'; put 'put ''LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTti''@;'; put 'put ''b3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6YXV0byBh''@;'; put 'put ''dXRvIDEwMCUgNTAlO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDttYXJnaW4tYm90dG9tOi44cmVtfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNv''@;'; put 'put ''bnRlbnQudG9vbHRpcC10b3AtcmlnaHQ6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotLjQycmVtO2xlZnQ6MDt0b3A6YXV0bztyaWdodDphdXRvO2NvbnRlbnQ6IiI7Ym9yZGVyLWxlZnQ6LjNyZW0gc29saWQgIzAwMDtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1jbHItdG9vbHRp''@;'; put 'put ''cC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCAjMDAwO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJpZ2h0Oi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlk''@;'; put 'put ''IHRyYW5zcGFyZW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC10b3AtbGVmdHtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0''@;'; put 'put ''ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJh''@;'; put 'put ''Y2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzouNDVyZW0gLjZyZW07d2lkdGg6MTJyZW07cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7aW5zZXQ6YXV0byA1MCUgMTAwJSBhdXRvO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTouOHJlbX0udG9vbHRpcC50b29sdGlwLXRvcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9v''@;'; put 'put ''bHRpcC10b3AtbGVmdDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uNDJyZW07cmlnaHQ6MDt0b3A6YXV0bztsZWZ0OmF1dG87Y29udGVudDoiIjtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgIzAwMDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcik7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0Oi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkIHRyYW5zcGFy''@;'; put 'put ''ZW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLXJpZ2h0e2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IsIHdoaXRl''@;'; put 'put ''KTtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvciwgYmxhY2spO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDouOXJlbTttYXJnaW46MDtwYWRkaW5nOi40NXJlbSAuNnJlbTt3aWR0aDoxMnJlbTtwb3NpdGlv''@;'; put 'put ''bjphYnNvbHV0ZTtpbnNldDoxMDAlIGF1dG8gYXV0byA1MCU7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO21hcmdpbi10b3A6LjhyZW19LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tcmlnaHQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlw''@;'; put 'put ''LWJvdHRvbS1yaWdodDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0uNDJyZW07bGVmdDowO2JvdHRvbTphdXRvO3JpZ2h0OmF1dG87Y29udGVudDoiIjtib3JkZXItbGVmdDouM3JlbSBzb2xpZCAjMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91''@;'; put 'put ''bmQtY29sb3IpO2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkICMwMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItcmlnaHQ6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNw''@;'; put 'put ''YXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0e2NvbG9yOiNmZmY7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IsIHdoaXRl''@;'; put 'put ''KTtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvciwgYmxhY2spO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDouOXJlbTttYXJnaW46MDtwYWRkaW5nOi40NXJlbSAuNnJlbTt3aWR0aDoxMnJlbTtwb3NpdGlv''@;'; put 'put ''bjphYnNvbHV0ZTtpbnNldDoxMDAlIDUwJSBhdXRvIGF1dG87Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDttYXJnaW4tdG9wOi44cmVtfS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlw''@;'; put 'put ''LWJvdHRvbS1sZWZ0OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LS40MnJlbTtyaWdodDowO2JvdHRvbTphdXRvO2xlZnQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1yaWdodDouM3JlbSBzb2xpZCAjMDAwO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yKTtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCAjMDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWxlZnQ6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNw''@;'; put 'put ''YXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXJpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjUwJSBhdXRvIGF1dG8gMTAwJTtjb2xvcjojZmZmO2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci10b29sdGlwLWNvbG9yLCB3aGl0ZSk7Zm9udC1zaXplOi42NXJlbTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQsIDQwMCk7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGJsYWNrKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7bGluZS1oZWlnaHQ6LjlyZW07bWFyZ2luOjA7cGFkZGluZzou''@;'; put 'put ''NDVyZW0gLjZyZW07d2lkdGg6MTJyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO21hcmdpbi1sZWZ0Oi44cmVtfS50b29sdGlwLnRvb2x0aXAtcmlnaHQ+LnRvb2x0aXAtY29udGVudDpiZWZvcmUsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXJpZ2h0OmJlZm9yZXtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi0uNDVyZW07Ym90dG9tOmF1dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci10b3A6LjNyZW0gc29saWQgIzAwMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1yaWdodDouMjVy''@;'; put 'put ''ZW0gc29saWQgIzAwMDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTouM3JlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0u''@;'; put 'put ''dG9vbHRpcC50b29sdGlwLWxlZnQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtbGVmdHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDo1MCUgMTAwJSBhdXRvIGF1dG87Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvciwgd2hp''@;'; put 'put ''dGUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0LCA0MDApO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1i''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yLCBibGFjayk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0Oi45cmVtO21hcmdpbjowO3BhZGRpbmc6LjQ1cmVtIC42cmVtO3dpZHRoOjEycmVtO2JvcmRl''@;'; put 'put ''ci10b3AtcmlnaHQtcmFkaXVzOjA7bWFyZ2luLXJpZ2h0Oi44cmVtfS50b29sdGlwLnRvb2x0aXAtbGVmdD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtbGVmdDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6LS40''@;'; put 'put ''NXJlbTtib3R0b206YXV0bztsZWZ0OmF1dG87Y29udGVudDoiIjtib3JkZXItdG9wOi4zcmVtIHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItbGVmdDouMjVyZW0gc29saWQgIzAwMDtib3JkZXItbGVmdC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItYm90dG9tOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udG9vbHRpcC50b29sdGlwLXhzPi50b29sdGlwLWNv''@;'; put 'put ''bnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXhze3dpZHRoOjMuNnJlbX0udG9vbHRpcC50b29sdGlwLXNtPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLXNte3dpZHRoOjZyZW19LnRvb2x0aXAudG9vbHRpcC1tZD4udG9v''@;'; put 'put ''bHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1tZHt3aWR0aDoxMnJlbX0udG9vbHRpcC50b29sdGlwLWxnPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWxne3dpZHRoOjE4cmVtfS50b29sdGlwPi5idG4rLnRv''@;'; put 'put ''b2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLXRvcC1yaWdodD4uYnRuKy50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4uYnRuKy50b29sdGlwLWNvbnRlbnR7bWFyZ2luLWJvdHRvbTouNXJlbX0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1yaWdodD4uYnRu''@;'; put 'put ''Ky50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4uYnRuKy50b29sdGlwLWNvbnRlbnR7bWFyZ2luLXRvcDouNXJlbX0udG9vbHRpcC50b29sdGlwLXJpZ2h0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tbGVmdDouMnJlbX0udG9vbHRpcD4uY2xyLWlj''@;'; put 'put ''b257bWFyZ2luLXJpZ2h0OjB9LnRvb2x0aXA+c3Zne3BvaW50ZXItZXZlbnRzOm5vbmV9LnRvb2x0aXAtdHJpZ2dlcjpmb2N1cysudG9vbHRpcC1jb250ZW50e3Zpc2liaWxpdHk6dmlzaWJsZX06cm9vdHstLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtNDAwKTstLWNsci1mb3Jtcy1sYWJlbC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC04MDApOy0tY2xyLWZvcm1zLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcjp2YXIoLS1jbHItY29sb3It''@;'; put 'put ''ZGFuZ2VyLTgwMCk7LS1jbHItZm9ybXMtdmFsaWQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNzAwKTstLWNsci1mb3Jtcy12YWxpZC10ZXh0LWNvbG9yOnZhcigtLWNsci1jb2xvci1zdWNjZXNzLTkwMCk7LS1jbHItZm9ybXMtc3VidGV4dC1jb2xvcjp2YXIoLS1jbHItY29sb3It''@;'; put 'put ''bmV1dHJhbC02MDApOy0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yOiM2YTdhODE7LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9u''@;'; put 'put ''LTYwMCk7LS1jbHItZm9ybXMtc3VidGV4dC1kaXNhYmxlZC1jb2xvcjojOGM4YzhjOy0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvcjojYjNiM2IzOy0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3I6I2IzYjNiMzstLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xvcjoj''@;'; put 'put ''OGM4YzhjOy0tY2xyLWZvcm1zLWxhYmVsLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1mb250LXdlaWdodC1ib2xkKTstLWNsci1mb3Jtcy1ibG9jay1sYWJlbC1mb250LXdlaWdodDo0MDA7LS1jbHItZm9ybXMtdGV4dC1mb250LXdlaWdodDo0MDA7LS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1mb3Jtcy10ZXh0YXJlYS1mb2N1c2VkLW91dGxpbmU6MCAwIC4xcmVtIC4xcmVtICM2OWMwZTI7LS1jbHItZm9ybXMtdGV4dGFyZWEtaW52YWxpZC1mb2N1c2VkLW91dGxpbmU6MCAwIC4xcmVtIC4xcmVtICNmZjc0''@;'; put 'put ''NWM7LS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJhY2tncm91bmQ6cmdiYSggMjIyLCAyMjIsIDIyMiwgLjUgKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWNvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcik7LS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1vcHRpb24tY29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IpOy0tY2xyLWZvcm1zLXNlbGVj''@;'; put 'put ''dC1tdWx0aXBsZS1lcnJvci1mb2N1cy1jb2xvcjojZmY3NDVjOy0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvcik7LS1jbHItZm9ybXMtY2hlY2tib3gtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTYwMCk7''@;'; put 'put ''LS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LW1hcmstY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQt''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXM6''@;'; put 'put ''dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWNoZWNrZWQtc2hhZG93Omluc2V0IDAgMCAwIC4zcmVtIHZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1sYWJlbC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItZm9ybXMtY2hlY2tib3gtbGFiZWwtY29sb3IpOy0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1tYXJrLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2Jv''@;'; put 'put ''eC1kaXNhYmxlZC1tYXJrLWNvbG9yKTstLWNsci1mb3Jtcy1yYWRpby1zZWxlY3RlZC1zaGFkb3c6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWNoZWNrZWQtc2hhZG93KTstLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1zaGFkb3c6aW5zZXQgMCAwIDAgLjZyZW0gI2U4ZThlODstLWNsci1m''@;'; put 'put ''b3Jtcy1yYWRpby1mb2N1c2VkLXNoYWRvdzowIDAgLjFyZW0gLjFyZW0gIzY5YzBlMjstLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1''@;'; put 'put ''dHJhbC0yMDApfS5jbHItZGF0ZS1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDotbW96LWZpdC1jb250ZW50O21heC13aWR0aDpmaXQtY29udGVudH0uY2xyLWZvcm0tY29udHJvbHttYXJnaW4tdG9wOjEuMnJlbTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29s''@;'; put 'put ''dW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1yZXZlYWwsLmNsci1mb3JtLWNvbnRyb2wgaW5wdXQ6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgbGFiZWwsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jb250cm9sLWxhYmVse2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWRpc2Fi''@;'; put 'put ''bGVkLWNvbG9yLCAjOGM4YzhjKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWlucHV0LC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItdGV4dGFyZWEsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3R7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYjNiM2IzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgaW5w''@;'; put 'put ''dXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2IzYjNiMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc3VidGV4''@;'; put 'put ''dHtjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zdWJ0ZXh0LWRpc2FibGVkLWNvbG9yLCAjOGM4YzhjKX0uY2xyLWZvcm0tY29udHJvbC1tdWx0aXtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9LmNsci1mb3JtLWNvbnRyb2wtbXVsdGkgLmNsci1jb250cm9s''@;'; put 'put ''LWxhYmVse3dpZHRoOjEwMCV9LmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6YmxvY2s7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtY29sb3IsICM0NTQ1NDUpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1m''@;'; put 'put ''b3Jtcy1sYWJlbC1mb250LXdlaWdodCwgNjAwKTtsaW5lLWhlaWdodDouOXJlbX0uY2xyLWNvbnRyb2wtY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItY29udHJvbC1pbmxpbmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0u''@;'; put 'put ''Y2xyLWNvbnRyb2wtaW5saW5lIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LjZyZW07d2lkdGg6YXV0b30uY2xyLXN1YnRleHR7ZGlzcGxheTpibG9jaztmb250LXNpemU6LjU1cmVtO2xpbmUtaGVpZ2h0Oi42cmVtO2NvbG9yOiM4YzhjOGM7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQtY29sb3IsICM4YzhjOGMpO21hcmdpbi10b3A6LjNyZW19LmNsci1zdWJ0ZXh0LXdyYXBwZXJ7ZmxleC1iYXNpczoxMDAlO2Rpc3BsYXk6ZmxleH0uY2xyLXZhbGlkYXRlLWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07bWluLWhl''@;'; put 'put ''aWdodDoxLjJyZW07bWluLXdpZHRoOjEuMnJlbTtjb2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtmaWxsOiNjMjFkMDA7ZmlsbDp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCk7ZGlzcGxheTpub25lO21hcmdp''@;'; put 'put ''bi1sZWZ0Oi0xLjJyZW19LmNsci1zdWNjZXNzIC5jbHItaW5wdXR7Ym9yZGVyLWJvdHRvbS1jb2xvcjojM2M4NTAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yLCAjM2M4NTAwKX0uY2xyLXN1Y2Nlc3MgLmNsci12YWxpZGF0ZS1pY29ue2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWJsb2NrO2NvbG9yOiMzYzg1MDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yLCAjM2M4NTAwKTtmaWxsOiMzYzg1MDA7ZmlsbDp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IsICMzYzg1MDApO21hcmdpbi1sZWZ0Oi0uMnJlbX0uY2xyLXN1Y2Nlc3MgLmNsci1z''@;'; put 'put ''dWJ0ZXh0e2NvbG9yOiMyNTUyMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLXRleHQtY29sb3IsICMyNTUyMDApfS5jbHItZXJyb3IgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0Oi0uMnJlbTtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWVycm9yIC5jbHItc3VidGV4dHtj''@;'; put 'put ''b2xvcjojYzIxZDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbD4uY2xyLWNvbnRyb2wtbGFiZWwsLmNsci1mb3JtLWhvcml6b250YWwgLmNsci1mb3JtLWNvbnRyb2w+LmNsci1mb3Jt''@;'; put 'put ''LWNvbnRyb2wuY2xyLWZvcm0tY29udHJvbC1tdWx0aSAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6OS42cmVtO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXRvcDouMTVyZW19LmNsci1mb3JtLWhvcml6b250YWwuY2xyLXJvdyAuY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6YXV0b30uY2xyLWZvcm0t''@;'; put 'put ''aG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9sPi5jbHItY29udHJvbC1sYWJlbHt3aWR0aDo5LjZyZW07bWluLXdpZHRoOjkuNnJlbX0uY2xyLWZvcm0tY29tcGFjdCAu''@;'; put 'put ''Y2xyLWZvcm0tY29udHJvbC5jbHItcm93Pi5jbHItY29udHJvbC1sYWJlbHt3aWR0aDphdXRvO21pbi13aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOi4xNXJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZvcm0tY29udHJvbHtkaXNw''@;'; put 'put ''bGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21hcmdpbi10b3A6LjZyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6LjNy''@;'; put 'put ''ZW07bWFyZ2luLWxlZnQ6MS4ycmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZXJyb3IgLmNsci1zdWJ0ZXh0LC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXN1YnRleHQsLmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXZhbGlkYXRlLWljb24sLmNsci1mb3Jt''@;'; put 'put ''LWNvbXBhY3QgLmNsci1zdWNjZXNzIC5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VidGV4dC13cmFwcGVye2ZsZXgtYmFzaXM6YXV0bztkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWZvcm0sLmNsci1mb3JtLWdyb3Vwe3BhZGRpbmc6''@;'; put 'put ''LjNyZW19LmNsci1yZXF1aXJlZC1tYXJrOmFmdGVye2NvbnRlbnQ6IioiO2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2ZpbGw6I2MyMWQwMDtmaWxsOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKTtmb250''@;'; put 'put ''LXNpemU6LjY1cmVtO21hcmdpbi1sZWZ0Oi4zcmVtfS5jbHItY2hlY2tib3gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXh9LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtmb250LXdlaWdodDo0MDA7ZGlzcGxheTpibG9ja30uY2xyLWNoZWNr''@;'; put 'put ''Ym94LXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1jaGVja2JveC13cmFwcGVyfi5jbHItc3VidGV4dHtkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3Bs''@;'; put 'put ''YXk6YmxvY2s7bWluLWhlaWdodDoxLjJyZW07cGFkZGluZy1sZWZ0OjEuMXJlbTttYXJnaW4tdG9wOjA7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MS4ycmVtO2NvbG9yOiM0NTQ1NDU7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWxhYmVsLWNvbG9yLCAjNDU0NTQ1KX0uY2xy''@;'; put 'put ''LWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF17cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RvcDouMjVyZW07bGVmdDowO2hlaWdodDouOHJlbTt3aWR0aDouOHJlbX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9s''@;'; put 'put ''LWxhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjJyZW07bGVmdDowO2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiM2YTdhODE7Ym9yZGVyLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3Vz''@;'; put 'put ''Ky5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7b3V0bGluZTpIaWdobGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94''@;'; put 'put ''XSsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5Om5vbmU7aGVpZ2h0Oi4yNXJlbTt3aWR0aDouNHJlbTtib3JkZXItbGVmdDouMXJlbSBzb2xpZDtib3JkZXItYm90dG9tOi4xcmVtIHNvbGlkO2JvcmRlci1jb2xvcjojZmZmO2Jv''@;'; put 'put ''cmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtbWFyay1jb2xvciwgd2hpdGUpO3RvcDouMnJlbTtsZWZ0Oi4ycmVtO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC4ycmVtKSByb3RhdGUoLTQ1ZGVnKX0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JhY2tncm91bmQ6IzAwNzJhMztiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yLCAjMDA3MmEzKTtib3JkZXI6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06''@;'; put 'put ''Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdLmNsci1pbmRldGVybWluYXRlKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmUsLmNsci1jaGVja2JveC13cmFwcGVyIGlu''@;'; put 'put ''cHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3JkZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojMDA3MmEzO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3Is''@;'; put 'put ''ICMwMDcyYTMpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XS5jbHItaW5kZXRlcm1pbmF0ZSsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXIsLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUrLmNsci1jb250cm9s''@;'; put 'put ''LWxhYmVsOmFmdGVye2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yLCAjMDA3MmEzKTtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFu''@;'; put 'put ''c2Zvcm06dHJhbnNsYXRlWSguMnJlbSl9LmNsci1jaGVja2JveC13cmFwcGVyLmNsci1jaGVja2JveC1pbmxpbmV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWNoZWNrYm94LXdyYXBwZXIuY2xyLWNoZWNrYm94LWlubGluZSAuY2xy''@;'; put 'put ''LWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtO3dpZHRoOmF1dG99LmNsci1lcnJvciAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3JkZXItY29sb3I6I2MyMWQw''@;'; put 'put ''MDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWZvcm1zLWxhYmVsLWRpc2FibGVkLWNvbG9yLCAjOGM4YzhjKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZSwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxl''@;'; put 'put ''ZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yLCAjY2NjY2NjKTtib3JkZXI6MH0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7Ym9yZGVyLWxlZnQ6LjFyZW0gc29saWQ7Ym9yZGVyLWJvdHRvbTou''@;'; put 'put ''MXJlbSBzb2xpZDtib3JkZXItbGVmdC1jb2xvcjojMDAwO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1tYXJrLWNvbG9yLCBibGFjayk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1z''@;'; put 'put ''LWNoZWNrYm94LWRpc2FibGVkLW1hcmstY29sb3IsIGJsYWNrKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZC5jbHItaW5kZXRlcm1pbmF0ZSsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXIsLmNsci1m''@;'; put 'put ''b3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aW5kZXRlcm1pbmF0ZSsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7Ym9yZGVyLWxlZnQ6bm9uZX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNoZWNrYm94LXdyYXBw''@;'; put 'put ''ZXJ7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydDtoZWlnaHQ6MS4ycmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlcn4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6LjNyZW19LmNsci1mb3Jt''@;'; put 'put ''LWNvbXBhY3QgLmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LjZyZW07d2lkdGg6YXV0b30uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse21hcmdp''@;'; put 'put ''bi10b3A6MH0uY2xyLWZpbGUtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOi4zcmVtfS5jbHItZmlsZS13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtmb250LXdlaWdodDo0MDA7ZGlzcGxheTpibG9ja30uY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257''@;'; put 'put ''bWFyZ2luLWxlZnQ6MH0uY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXN1YnRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1maWxlLXdyYXBwZXIgLmJ0bnttYXJnaW46MH0uY2xyLWZpbGV7aGVpZ2h0OjA7d2lkdGg6MDtvcGFjaXR5OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29s''@;'; put 'put ''dXRlO3otaW5kZXg6LTF9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1maWxlLXdyYXBwZXJ7bWF4LXdpZHRoOjEwMCU7bWFyZ2luLXRvcDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4tbGVmdDouM3JlbX0uY2xyLWZvcm0tY29tcGFjdCAu''@;'; put 'put ''Y2xyLWZpbGUtd3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bGluZS1oZWlnaHQ6MS4ycmVtfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyfi5jbHItc3VidGV4dHtsaW5lLWhlaWdodDoxLjJyZW07bWFyZ2luLXRvcDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13''@;'; put 'put ''cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOjA7bGluZS1oZWlnaHQ6MS4wOHJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlciAuYnRue2hlaWdodDoxLjJyZW19LmNsci1pbnB1dC13cmFwcGVye3doaXRlLXNwYWNlOm5vd3JhcDttYXgtaGVpZ2h0OjEu''@;'; put 'put ''MnJlbX0uY2xyLWlucHV0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tn''@;'; put 'put ''cm91bmQ6MCAwO2hlaWdodDoxLjJyZW07Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgYmxhY2spO2JvcmRlci1ib3R0b206LjA1cmVtIHNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jt''@;'; put 'put ''cy1ib3JkZXItY29sb3IsICM2YTdhODEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MCAuM3JlbTttYXgtaGVpZ2h0OjEuMnJlbTtmb250LXNpemU6LjY1cmVtfS5jbHItaW5wdXQ6Zm9jdXN7b3V0bGluZTowfS5jbHItaW5wdXRbcmVhZG9ubHlde2JvcmRlcjowfS5jbHItaW5wdXQ6''@;'; put 'put ''bm90KFtyZWFkb25seV0pe2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3Jv''@;'; put 'put ''dW5kLXNpemUgLjJzIGVhc2V9LmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSk6Zm9jdXMsLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSkuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6IzAwNzJhMztib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9y''@;'; put 'put ''LCAjMDA3MmEzKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItaW5wdXQ6ZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZXJyb3IgLmNsci1pbnB1dDpu''@;'; put 'put ''b3QoW3JlYWRvbmx5XSl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYzIxZDAwO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xy''@;'; put 'put ''LWZvcm1zLWludmFsaWQtY29sb3IsICNjMjFkMDApIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LmNsci1lcnJvciAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKTpmb2N1cywuY2xyLWVycm9yIC5jbHIt''@;'; put 'put ''aW5wdXQ6bm90KFtyZWFkb25seV0pLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCk7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWZvcm0tY29udHJvbC5y''@;'; put 'put ''b3cgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpjYWxjKDEwMCUgLSAxLjJyZW0pfS5jbHItZm9ybS1jb21wYWN0IC5jbHItaW5wdXR7bWF4LXdpZHRoOjEwMCV9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1pbnB1dH4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6LjNyZW19LmNsci1mb3Jt''@;'; put 'put ''LWNvbnRyb2wtcmVhZG9ubHkgLmNsci1pbnB1dHtib3JkZXI6MH0uY2xyLWZvcm0tY29udHJvbC1tdWx0aSAuY2xyLWlucHV0e21heC13aWR0aDpjYWxjKDEwMCUgKyAxLjJyZW0pfTo6cGxhY2Vob2xkZXJ7Y29sb3I6IzRmNjE2OTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtcGxhY2Vob2xkZXIt''@;'; put 'put ''Y29sb3IsICM0ZjYxNjkpfS5jbHItaW5wdXQtZ3JvdXB7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgYmxhY2spO2JvcmRlci1ib3R0b206LjA1cmVtIHNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpIDk1JSkgbm8tcmVwZWF0O2Jh''@;'; put 'put ''Y2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2U7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OjEuMnJlbX0uY2xyLWlucHV0LWdyb3VwOmZvY3VzLC5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6IzAwNzJhMzti''@;'; put 'put ''b3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yLCAjMDA3MmEzKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3Vze3dpZHRoOmF1dG99LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0e2JhY2tncm91bmQ6MCAw''@;'; put 'put ''O2JvcmRlcjowO21hcmdpbi1yaWdodDowO21heC13aWR0aDoxMDAlfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSk6Zm9jdXN7YmFja2dyb3VuZC1zaXplOjA7Ym9yZGVyOjB9LmNsci1pbnB1dC1ncm91cCBzZWxlY3QsLmNsci1pbnB1dC1ncm91cCAuY2xyLXNl''@;'; put 'put ''bGVjdC13cmFwcGVyIHNlbGVjdCwuY2xyLWlucHV0LWdyb3VwIC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3R7Ym9yZGVyOjB9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWFkZG9ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQtY29s''@;'; put 'put ''b3IsICM4YzhjOGMpfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZHtwYWRkaW5nOjAgMCAwIC40NXJlbX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZHtwYWRkaW5nOjAgLjQ1cmVtIDAgMH0uY2xyLWlu''@;'; put 'put ''cHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6''@;'; put 'put ''MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMyk7cGFkZGluZzowIC40NXJlbX1idXR0b24uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257Y3Vy''@;'; put 'put ''c29yOnBvaW50ZXJ9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIGNkcy1pY29uLC5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiBjbHItaWNvbntoZWlnaHQ6LjlyZW07d2lkdGg6LjlyZW07dHJhbnNmb3JtOnRyYW5zbGF0''@;'; put 'put ''ZSgtLjA1cmVtLC0uMDVyZW0pfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHIt''@;'; put 'put ''ZXJyb3IgLmNsci1pbnB1dC1ncm91cHtib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCkgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXA6Zm9jdXMsLmNsci1lcnJvciAuY2xyLWlu''@;'; put 'put ''cHV0LWdyb3VwLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCk7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWlucHV0''@;'; put 'put ''LWdyb3Vwe21heC13aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MH0uY2xyLXJhZGlvLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2xpbmUtaGVpZ2h0OjEuMnJlbX0uY2xyLXJhZGlvLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2ZvbnQtd2VpZ2h0OjQwMDtkaXNw''@;'; put 'put ''bGF5OmJsb2NrfS5jbHItcmFkaW8td3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLXJhZGlvLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNv''@;'; put 'put ''bHV0ZTtvcGFjaXR5OjA7dG9wOi4yNXJlbTtsZWZ0OjA7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtfS5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjEuMnJlbTtwYWRkaW5nLWxlZnQ6MS4xcmVt''@;'; put 'put ''O21hcmdpbi10b3A6MDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjJyZW07Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFkaW8tbGFiZWwtY29sb3IsICM0NTQ1NDUpfS5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWw6ZW1wdHl7cGFkZGluZy1s''@;'; put 'put ''ZWZ0OjB9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi4ycmVtO2xlZnQ6MDtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouOHJlbTt3aWR0aDouOHJlbTtib3Jk''@;'; put 'put ''ZXI6LjA1cmVtIHNvbGlkO2JvcmRlci1jb2xvcjojNmE3YTgxO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yLCAjNmE3YTgxKTtib3JkZXItcmFkaXVzOjUwJX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCsuY2xyLWNvbnRyb2wt''@;'; put 'put ''bGFiZWw6YmVmb3Jle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgLjNyZW0gIzAwNzJhMztib3gtc2hhZG93OnZhcigtLWNsci1mb3Jtcy1yYWRpby1zZWxlY3RlZC1zaGFkb3csIGluc2V0IDAgMCAwIC4zcmVtICMwMDcyYTMpO2JvcmRlcjowfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBl''@;'; put 'put ''PXJhZGlvXTpmb2N1cysuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIC4xcmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxpbmUtb2Zmc2V0Oi4wNXJlbX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlw''@;'; put 'put ''ZT1yYWRpb106Zm9jdXM6Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIC4xcmVtO291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIC4xcmVtO291dGxpbmUtb2Zmc2V0Oi4wNXJlbX0uY2xyLXJhZGlvLXdyYXBwZXIg''@;'; put 'put ''aW5wdXRbdHlwZT1yYWRpb106ZGlzYWJsZWQrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3JkZXI6MDtib3gtc2hhZG93Omluc2V0IDAgMCAwIC42cmVtICNlOGU4ZTg7Ym94LXNoYWRvdzp2YXIoLS1jbHItZm9ybXMtcmFkaW8tZGlzYWJsZWQtc2hhZG93LCBpbnNldCAwIDAgMCAuNnJl''@;'; put 'put ''bSAjZThlOGU4KX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpkaXNhYmxlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzY2NjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1iYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yLCAjNjY2NjY2KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIC4zcmVtICNlOGU4ZTg7Ym94LXNoYWRvdzp2YXIoLS1jbHItZm9ybXMtcmFkaW8tY2hlY2tlZC1kaXNhYmxlZC1zaGFkb3csIGluc2V0IDAgMCAwIC4zcmVtICNlOGU4ZTgpfS5jbHItZm9ybS1jb250cm9sLWRp''@;'; put 'put ''c2FibGVkIC5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZXJyb3IgLmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNjMjFkMDA7Ym9yZGVy''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItc3VidGV4dHttYXJnaW4tbGVmdDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZs''@;'; put 'put ''ZXg7ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2hlaWdodDoxLjJyZW19LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4tbGVmdDouM3JlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXJhZGlvLXdyYXBwZXIgLmNs''@;'; put 'put ''ci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDouNnJlbTt3aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItc2VsZWN0LXdyYXBwZXIsLmNsci1tdWx0''@;'; put 'put ''aXNlbGVjdC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxLjJyZW07Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwg''@;'; put 'put ''YmxhY2spO2JvcmRlci1ib3R0b206LjA1cmVtIHNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRp''@;'; put 'put ''bmc6MCAxLjFyZW0gMCAuM3JlbTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6LjY1cmVtO3otaW5kZXg6Mn0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmZvY3Vze291dGxpbmU6MH0uY2xyLXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdDpub3QoW211bHRpcGxlXSksLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSl7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvciwgIzAwNzJhMykgOTUl''@;'; put 'put ''KSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pLmNs''@;'; put 'put ''ci1mb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWZvcm1zLWZvY3VzZWQtY29sb3IsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3VzLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3RbbXVsdGlwbGVdOmZvY3Vze291dGxp''@;'; put 'put ''bmU6SGlnaGxpZ2h0IGF1dG8gLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byAuMXJlbX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpob3ZlciwuY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmUsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVj''@;'; put 'put ''dDpob3ZlciwuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmFjdGl2ZXtib3JkZXItY29sb3I6I2RlZGVkZTgwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJhY2tncm91bmQsIHJnYmEoMjIyLCAyMjIsIDIyMiwgLjUpKTtiYWNrZ3JvdW5kOnJnYmEo''@;'; put 'put ''MjIyLDIyMiwyMjIsLjUpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1ob3Zlci1iYWNrZ3JvdW5kLCByZ2JhKDIyMiwgMjIyLCAyMjIsIC41KSl9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWQgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxl''@;'; put 'put ''Y3Q6ZGlzYWJsZWQgb3B0aW9ue2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCBvcHRpb24sLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdCBvcHRpb257Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW9wdGlvbi1jb2xvciwgYmxhY2spfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0OjotbXMtZXhwYW5kLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Oi1tcy1leHBhbmR7ZGlzcGxheTpu''@;'; put 'put ''b25lfS5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDoxLjJyZW07ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2hlaWdodDouNXJlbTt3aWR0aDouNXJlbTt0b3A6LjM1cmVtO3JpZ2h0Oi4zcmVt''@;'; put 'put ''O2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyM2IzYjNiMyUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUz''@;'; put 'put ''RSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUz''@;'; put 'put ''RSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MH0uY2xyLXNlbGVjdC13cmFwcGVyOmhvdmVyOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1h''@;'; put 'put ''Z2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmlsbCUzQSUyMzhjOGM4YyUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFz''@;'; put 'put ''cyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSl9LmNsci1lcnJv''@;'; put 'put ''ciAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVyLC5jbHItc3VjY2VzcyAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye3JpZ2h0OjEuNXJlbX0uY2xyLW11bHRpc2VsZWN0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciAuY2xyLXZhbGlkYXRlLWljb257bWFy''@;'; put 'put ''Z2luLWxlZnQ6MH1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtwYWRkaW5nOjA7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1iYWNrZ3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29s''@;'; put 'put ''b3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7aGVpZ2h0OmF1dG87bWlu''@;'; put 'put ''LXdpZHRoOjZyZW19c2VsZWN0W211bHRpcGxlXTpob3ZlcixzZWxlY3RbbXVsdGlwbGVdOmFjdGl2ZSxzZWxlY3Rbc2l6ZV06aG92ZXIsc2VsZWN0W3NpemVdOmFjdGl2ZXtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJhY2tncm91''@;'; put 'put ''bmQtY29sb3IsIHdoaXRlKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1tdWx0aXBsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfXNlbGVjdFttdWx0aXBsZV0gb3B0aW9uLHNlbGVjdFtzaXplXSBvcHRpb257cGFkZGluZzouMTVyZW0gLjNy''@;'; put 'put ''ZW07Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLW9wdGlvbi1jb2xvciwgYmxhY2spfS5jbHItZXJyb3Igc2VsZWN0Om5vdChbbXVsdGlwbGVdKXtib3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Zm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1lcnJvciBzZWxlY3RbbXVsdGlwbGVde2JvcmRlci1jb2xvcjojYzIxZDAwO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvciwgI2MyMWQwMCl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1z''@;'; put 'put ''ZWxlY3QuZGlzYWJsZWR7Y29sb3I6I2IzYjNiMztjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVkOmhvdmVyOmFmdGVye2NvbG9y''@;'; put 'put ''OiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1jb2xvciwgI2IzYjNiMyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ+c2VsZWN0LC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0IHNlbGVjdDpkaXNh''@;'; put 'put ''YmxlZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ+c2VsZWN0OmhvdmVyLC5jbHItZm9ybS1jb250''@;'; put 'put ''cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0IHNlbGVjdDpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMDtib3JkZXItY29sb3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1tdWx0aXNl''@;'; put 'put ''bGVjdC13cmFwcGVye21hcmdpbi10b3A6MH0uY2xyLXRleHRhcmVhLXdyYXBwZXJ7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6ZmxleDttYXJnaW4tdG9wOi4zcmVtfS5jbHItdGV4dGFyZWEtd3JhcHBlciAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLXRleHRhcmVh''@;'; put 'put ''e21heC13aWR0aDpjYWxjKDEwMCUgLSAuM3JlbSk7aGVpZ2h0OmF1dG87cmVzaXplOnZlcnRpY2FsO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29s''@;'; put 'put ''b3I6IzZhN2E4MTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvciwgIzZhN2E4MSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvciwgYmxhY2spO2JvcmRlci1yYWRpdXM6LjE1cmVtO3BhZGRpbmc6LjRyZW0gLjZyZW07Zm9udC1zaXpl''@;'; put 'put ''Oi42NXJlbX0uY2xyLXRleHRhcmVhOmZvY3Vze291dGxpbmU6SGlnaGxpZ2h0IGF1dG8gLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3IgYXV0byAuMXJlbX0uY2xyLXRleHRhcmVhOmRpc2FibGVke2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQt''@;'; put 'put ''ZGlzYWJsZWQtY29sb3IsICNiM2IzYjMpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWVycm9yIC5jbHItdGV4dGFyZWF7Ym9yZGVyLWNvbG9yOiNjMjFkMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWNvbnRyb2wtY29udGFpbmVy''@;'; put 'put ''IHRleHRhcmVhe3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItdGV4dGFyZWEtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gLjNyZW0pfS5jbHItZm9ybS1jb21wYWN0IC5jbHItdGV4dGFyZWEtd3JhcHBlcnttYXJnaW4tdG9wOjB9LmNsci1mb3JtLWNvbXBhY3Qg''@;'; put 'put ''LmNsci10ZXh0YXJlYS13cmFwcGVyIC5jbHItdGV4dGFyZWF7bWF4LXdpZHRoOjEwMCV9LmNsci1mb3JtLWNvbXBhY3QgLmNsci10ZXh0YXJlYS13cmFwcGVyIC5jbHItdGV4dGFyZWF+LmNsci1zdWJ0ZXh0e21hcmdpbi1sZWZ0Oi4zcmVtfTpyb290ey0tY2xyLXRvZ2dsZS1iZy1jb2xvci1v''@;'; put 'put ''ZmY6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci10b2dnbGUtYmctY29sb3Itb246dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNTAwKTstLWNsci10b2dnbGUtaGFuZGxlLWJnLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTUwKTstLWNsci10b2dnbGUtZGlzYWJsZWQt''@;'; put 'put ''ZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1oYW5kbGUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWhhbmRsZS1ib3JkZXIt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb24t''@;'; put 'put ''YmctY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWhhbmRsZS1jb2xvcil9LmNsci10b2dnbGUtd3Jh''@;'; put 'put ''cHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0uY2xyLXRvZ2dsZS13cmFwcGVye2hlaWdodDoxLjJyZW07dmVydGljYWwtYWxpZ246bWlkZGxl''@;'; put 'put ''O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIgbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjEuMnJlbTttYXJnaW4tbGVmdDoyLjFyZW07''@;'; put 'put ''bWFyZ2luLXJpZ2h0OjB9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LjNyZW07cmlnaHQ6LjNyZW07aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO29wYWNpdHk6MH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdK2xhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2hlaWdodDouOXJlbTt3aWR0aDoxLjY1cmVtO2JvcmRlcjouMXJlbSBzb2xpZDtib3JkZXItcmFkaXVzOi40NXJlbTtib3JkZXItY29sb3I6IzhjOGM4Yztib3JkZXIt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1iZy1jb2xvci1vZmYsICM4YzhjOGMpO2JhY2tncm91bmQtY29sb3I6IzhjOGM4YztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb2ZmLCAjOGM4YzhjKTt0b3A6LjE1cmVtO3JpZ2h0OjA7bGVmdDotMi4xcmVtO3RyYW5z''@;'; put 'put ''aXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cytsYWJlbDpiZWZvcmV7''@;'; put 'put ''b3V0bGluZTpIaWdobGlnaHQgc29saWQgLjFyZW07b3V0bGluZTotd2Via2l0LWZvY3VzLXJpbmctY29sb3Igc29saWQgLjFyZW07b3V0bGluZS1vZmZzZXQ6LjA1cmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Ym9yZGVy''@;'; put 'put ''LWNvbG9yOiM1YWEyMjA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb24sICM1YWEyMjApO2JhY2tncm91bmQtY29sb3I6IzVhYTIyMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb24sICM1YWEyMjApO3RyYW5zaXRpb24tZHVyYXRp''@;'; put 'put ''b246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtk''@;'; put 'put ''aXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci1jb2xvcjojZmFmYWZhO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvciwgI2ZhZmFmYSk7Ym9yZGVyLXN0eWxl''@;'; put 'put ''OnNvbGlkO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtaGFuZGxlLWJnLWNvbG9yLCAjZmFmYWZhKTt0b3A6LjI1cmVtO3JpZ2h0OjA7bGVmdDotMnJlbTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7''@;'; put 'put ''dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OnJpZ2h0LGxlZnR9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmFmdGVye3JpZ2h0Oi0ycmVtO2xlZnQ6LTEuMjVyZW07dHJhbnNpdGlvbi1k''@;'; put 'put ''dXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodCxsZWZ0fS5jbHItdG9nZ2xlLXdyYXBwZXIuZGlzYWJsZWQgbGFiZWx7b3BhY2l0eTouNDtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci10b2dnbGUtd3JhcHBlci5k''@;'; put 'put ''aXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xl''@;'; put 'put ''LWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1v''@;'; put 'put ''ZmYtYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjFyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1oYW5kbGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtoZWlnaHQ6LjlyZW07d2lk''@;'; put 'put ''dGg6LjlyZW07dG9wOi4xNXJlbX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6ZGlzYWJsZWQrbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvciwg''@;'; put 'put ''I2NjY2NjYyk7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1iZy1jb2xvciwgI2NjY2NjYyl9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmRpc2FibGVkK2xhYmVsOmFmdGVy''@;'; put 'put ''e2JvcmRlci1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3IsIHdoaXRlKTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07dG9wOi4yNXJlbTtsZWZ0Oi0xLjI1cmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRb''@;'; put 'put ''dHlwZT1jaGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7bGVmdDotMi4xcmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgbGFiZWx7bWFyZ2luLWxlZnQ6Mi4xcmVtO21hcmdpbi1yaWdodDowfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF0rbGFiZWw6YmVmb3Jle3JpZ2h0OjA7bGVmdDotMi4xcmVtfS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7cmlnaHQ6MDtsZWZ0Oi0ycmVtO3RyYW5zaXRpb24tcHJvcGVydHk6bGVmdH0uY2xyLXRvZ2dsZS13''@;'; put 'put ''cmFwcGVyLnJpZ2h0LWxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YWZ0ZXJ7bGVmdDotMS4yNXJlbTt0cmFuc2l0aW9uLXByb3BlcnR5OmxlZnR9LmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0''@;'; put 'put ''MDA7bGluZS1oZWlnaHQ6MS4ycmVtfS5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0Oi42cmVtfS5jbHItdG9nZ2xlLXJpZ2h0IGxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2Nr''@;'; put 'put ''O21hcmdpbi1yaWdodDoyLjFyZW07bWFyZ2luLWxlZnQ6MH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmV7bGVmdDp1bnNldDtyaWdodDotMi4xcmVtfS5jbHItdG9nZ2xlLXJpZ2h0IGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye2xl''@;'; put 'put ''ZnQ6dW5zZXQ7cmlnaHQ6LTEuMjVyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6LTJyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0uY2xyLXRv''@;'; put 'put ''Z2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XTpkaXNhYmxlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0xLjNyZW19LmNsci10b2dnbGUtcmlnaHQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0Oi0y''@;'; put 'put ''cmVtfS5jbHItdG9nZ2xlLXJpZ2h0IC5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXJpZ2h0OjIuN3JlbX0uY2xyLXJhbmdlLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDouN3JlbTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6LjJyZW07cG9pbnRlci1l''@;'; put 'put ''dmVudHM6bm9uZTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjEwO2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXJhbmdle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDouN3JlbX0uY2xyLXJhbmdlOmRpc2FibGVkLC5jbHItcmFuZ2U6ZGlzYWJsZWQrLmZpbGwtaW5wdXR7cG9pbnRlci1ldmVudHM6YXV0bztjdXJzb3I6bm90LWFsbG93ZWR9aW5wdXRbdHlwZT1yYW5nZV17cGFkZGluZzow''@;'; put 'put ''Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjJyZW07YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yLCAjZThlOGU4KX1pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXIt''@;'; put 'put ''cnVubmFibGUtdHJhY2t7aGVpZ2h0Oi4ycmVtO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvciwgI2U4ZThlOCl9aW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRo''@;'; put 'put ''dW1iey13ZWJraXQtYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6LS4yNXJlbTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZp''@;'; put 'put ''bGwtY29sb3IsICMwMDcyYTMpfWlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRyYWNre2hlaWdodDouMnJlbTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IsICNlOGU4''@;'; put 'put ''ZTgpfWlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRodW1ie2JvcmRlcjowO21hcmdpbi10b3A6LS4yNXJlbTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZv''@;'; put 'put ''cm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXR7ZGlzcGxheTpub25lfS5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9cmFuZ2Vd''@;'; put 'put ''OjotbXMtZmlsbC1sb3dlcntoZWlnaHQ6LjJyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfWlucHV0W3R5cGU9cmFuZ2Vde2JvcmRlcjowO21hcmdpbjowOy13ZWJr''@;'; put 'put ''aXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjdyZW19aW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFja3ttYXJnaW46MDtib3JkZXI6MDtoZWlnaHQ6LjJyZW07Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWZvcm1zLXJhbmdlLXRyYWNrLWNvbG9yLCAjZThlOGU4KX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1ie2JvcmRlcjowO21hcmdpbi10b3A6MDtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfX1fOi1tcy1mdWxsc2NyZWVuIC5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dCw6cm9vdCAuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXR7ZGlzcGxheTpub25lfV86LW1zLWZ1''@;'; put 'put ''bGxzY3JlZW4gLmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyLDpyb290IC5jbHItcmFuZ2Utd3JhcHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlcntoZWlnaHQ6LjJyZW07YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IsICMwMDcyYTMpfV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10b29sdGlwLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjot''@;'; put 'put ''bXMtdG9vbHRpcHt2aXNpYmlsaXR5OmhpZGRlbn1fOi1tcy1mdWxsc2NyZWVuIGlucHV0W3R5cGU9cmFuZ2VdLDpyb290IGlucHV0W3R5cGU9cmFuZ2Vde2JvcmRlcjowO21hcmdpbjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2xlZnQ6MDtoZWlnaHQ6LjdyZW19XzotbXMtZnVsbHNjcmVl''@;'; put 'put ''biBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNrLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdHJhY2t7Ym9yZGVyOjA7bWFyZ2luOjA7aGVpZ2h0Oi4ycmVtO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1m''@;'; put 'put ''b3Jtcy1yYW5nZS10cmFjay1jb2xvciwgI2U4ZThlOCl9XzotbXMtZnVsbHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7Ym9yZGVyOjA7bWFyZ2luLXRvcDowO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDouN3Jl''@;'; put 'put ''bTt3aWR0aDouN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDcyYTM7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvciwgIzAwNzJhMyl9aW5wdXRbY2xyRGF0YWxpc3RdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlz''@;'; put 'put ''cGxheTpub25lfWNsci1kYXRhbGlzdC1jb250YWluZXIgLmNsci1pbnB1dC1ncm91cHtwYWRkaW5nLXJpZ2h0OjB9OnJvb3R7LS1jbHItY2FsZW5kYXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1jYWxlbmRhci1ib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1kYXRlcGlja2VyLXRyaWdnZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWRhdGVwaWNrZXItdHJpZ2dlci1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTgwMCk7LS1jbHItY2FsZW5kYXItYnRu''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ob3Zlci1jb2xvcik7LS1jbHItY2FsZW5kYXItcGlja2VyLWJ0bi1mb250LXNpemU6LjlyZW07LS1jbHItY2FsZW5kYXItcGlja2Vy''@;'; put 'put ''LWJ0bi1mb250LXdlaWdodDoyMDA7LS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1mb250LXdlaWdodDo2MDA7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItY2FsZW5kYXItYWN0aXZlLWZvY3VzLWNlbGwtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItZGF5LWZvbnQtc2l6ZTouNnJlbX0uZGF0ZS1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5kYXRlcGlja2VyLXRyaWdnZXJ7aGVpZ2h0OjEuOHJlbTtt''@;'; put 'put ''aW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpw''@;'; put 'put ''b2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbX0uZGF0ZXBpY2tlci10cmlnZ2VyIC5kYXRlcGlja2VyLXRyaWdnZXItaWNvbntmaWxsOiMwMDcyYTM7ZmlsbDp2YXIoLS1jbHItZGF0ZXBpY2tlci10cmlnZ2VyLWNvbG9yLCAjMDA3MmEzKX0uZGF0ZXBpY2tlci10cmlnZ2VyIC5kYXRlcGlja2Vy''@;'; put 'put ''LXRyaWdnZXItaWNvbjpob3ZlcntmaWxsOiMwMDU2N2E7ZmlsbDp2YXIoLS1jbHItZGF0ZXBpY2tlci10cmlnZ2VyLWhvdmVyLWNvbG9yLCAjMDA1NjdhKX0uZGF0ZXBpY2tlci10cmlnZ2VyOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZvcm0tY29udHJvbCAuZGF0ZXBpY2tl''@;'; put 'put ''ci10cmlnZ2Vye2xpbmUtaGVpZ2h0OjEuMXJlbTtoZWlnaHQ6MS4xcmVtfS5kYXRlLWlucHV0e2ZsZXg6MSAxIGF1dG99LmRhdGVwaWNrZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOi42cmVtO21hcmdpbi10b3A6LjNyZW07d2lkdGg6MTMuOXJlbTtoZWln''@;'; put 'put ''aHQ6MTUuN3JlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlcjouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jYWxlbmRhci1ib3JkZXItY29sb3Is''@;'; put 'put ''ICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1wb3BvdmVy''@;'; put 'put ''LWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTA1MH0uY2FsZW5kYXItaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXJ9LmNhbGVuZGFyLXN3''@;'; put 'put ''aXRjaGVycywueWVhci1zd2l0Y2hlcnN7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLS4xcmVtKTtkaXNwbGF5OmZsZXh9LnllYXItc3dpdGNoZXJze2ZsZXg6MCAwIGF1dG87d2lkdGg6NS40cmVtO2FsaWduLXNlbGY6Y2VudGVyfS5jYWxlbmRhci10YWJsZXtmbGV4OjEgMSBhdXRvO3dpZHRoOjEw''@;'; put 'put ''MCV9LmNhbGVuZGFyLWNlbGwsLmNhbGVuZGFyLXRhYmxlIC5jYWxlbmRhci1jZWxse2hlaWdodDoxLjhyZW07d2lkdGg6MS44cmVtO21pbi1oZWlnaHQ6MS44cmVtO21pbi13aWR0aDoxLjhyZW07cGFkZGluZzowO3RleHQtYWxpZ246Y2VudGVyfS5kYXl7ZGlzcGxheTppbmxpbmUtYmxvY2t9''@;'; put 'put ''LndlZWtkYXlze2ZsZXg6MCAwIDEuOHJlbX0ud2Vla2RheXtmb250LXNpemU6LjZyZW07Zm9udC1zaXplOnZhcigtLWNsci1kYXktZm9udC1zaXplLCAuNnJlbSk7Zm9udC13ZWlnaHQ6NjAwfS5jYWxlbmRhci1idG57aGVpZ2h0OjEuOHJlbTttaW4td2lkdGg6MS44cmVtO3BhZGRpbmc6MDtt''@;'; put 'put ''YXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbTtm''@;'; put 'put ''b250LXNpemU6LjlyZW07Zm9udC1zaXplOnZhcigtLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtc2l6ZSwgLjlyZW0pO2ZvbnQtd2VpZ2h0OjIwMDtmb250LXdlaWdodDp2YXIoLS1jbHItY2FsZW5kYXItcGlja2VyLWJ0bi1mb250LXdlaWdodCwgMjAwKX0uY2FsZW5kYXItYnRuOmhv''@;'; put 'put ''dmVyLC5jYWxlbmRhci1idG46Zm9jdXN7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvciwgI2U4ZThlOCl9LmNhbGVuZGFyLWJ0bjpmb2N1c3tvdXRsaW5lOjB9LmRheS1idG57aGVpZ2h0OjEuOHJlbTttaW4td2lk''@;'; put 'put ''dGg6MS44cmVtO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDox''@;'; put 'put ''LjhyZW07d2lkdGg6MTAwJTtjb2xvcjppbmhlcml0fS5kYXktYnRuOmhvdmVyLC5kYXktYnRuOmZvY3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3IsICNlOGU4ZTgpfS5kYXktYnRuOmZvY3Vze291dGxpbmU6''@;'; put 'put ''MH0uZGF5LWJ0bi5pcy10b2RheXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci10b2RheS1kYXRlLWNlbGwtY29sb3IsIGJsYWNrKTtmb250LXdlaWdodDo2MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWNhbGVuZGFyLXRvZGF5LWRhdGUtY2VsbC1mb250LXdlaWdodCwgNjAw''@;'; put 'put ''KX0uZGF5LWJ0bi5pcy1leGNsdWRlZHtvcGFjaXR5Oi40fS5kYXktYnRuLmlzLWV4Y2x1ZGVkOmhvdmVye2JhY2tncm91bmQ6MCAwfS5kYXktYnRuLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1jb2xvciwgYmxhY2spfS5kYXktYnRuLmlzLXNlbGVjdGVkOmZvY3Vze2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUt''@;'; put 'put ''Zm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0uZGF5LWJ0bi5pcy1kaXNhYmxlZHtvcGFjaXR5Oi40O3BvaW50ZXItZXZlbnRzOm5vbmV9LmRheS1idG4uaXMtZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmNhbGVuZGFyLXBpY2tlcnN7ZGlzcGxheTpmbGV4fS5z''@;'; put 'put ''d2l0Y2hlcntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tY29sb3IsICMwMDcyYTMpfS5zd2l0Y2hlciBjZHMtaWNvbiwuc3dpdGNoZXIgY2xyLWljb257aGVpZ2h0Oi45cmVtO3dpZHRoOi45cmVtfS5tb250aHBpY2tlci10cmlnZ2VyLC55ZWFycGlja2VyLXRy''@;'; put 'put ''aWdnZXJ7bWluLXdpZHRoOjIuNHJlbTttYXgtd2lkdGg6M3JlbTtjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tY29sb3IsICMwMDcyYTMpO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzpl''@;'; put 'put ''bGxpcHNpc30ubW9udGhwaWNrZXIsLnllYXJwaWNrZXJ7bWluLWhlaWdodDoxNC40cmVtfS5tb250aHBpY2tlciwueWVhcnBpY2tlciwueWVhcnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW59Lm1vbnRocGlja2VyLC55ZWFyc3tmbGV4LXdyYXA6''@;'; put 'put ''d3JhcH0ubW9udGgsLnllYXJ7aGVpZ2h0OjIuNHJlbTttaW4td2lkdGg6Mi40cmVtO3BhZGRpbmc6MCAuNnJlbTttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVy''@;'; put 'put ''cmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuOHJlbTt3aWR0aDo2LjNyZW07Zm9udC1zaXplOi45cmVtO2ZvbnQtd2VpZ2h0OjIwMDtvdXRsaW5lLW9mZnNldDotLjI1cmVtfS5tb250aDpob3ZlciwubW9udGg6Zm9jdXMsLnllYXI6''@;'; put 'put ''aG92ZXIsLnllYXI6Zm9jdXN7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvciwgI2U4ZThlOCl9Lm1vbnRoOmZvY3VzLC55ZWFyOmZvY3Vze291dGxpbmU6MH0ubW9udGguaXMtZGlzYWJsZWQsLnllYXIuaXMtZGlz''@;'; put 'put ''YWJsZWR7b3BhY2l0eTouNDtwb2ludGVyLWV2ZW50czpub25lfS5tb250aC5pcy1kaXNhYmxlZDpob3ZlciwueWVhci5pcy1kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0ubW9udGguaXMtc2VsZWN0ZWQsLnllYXIuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91''@;'; put 'put ''bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWJhY2tncm91bmQtY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9yLCBibGFjayl9Lm1vbnRoLmlzLXNlbGVjdGVkOmZvY3VzLC55ZWFyLmlzLXNlbGVjdGVk''@;'; put 'put ''OmZvY3Vze2JhY2tncm91bmQ6I2Q4ZTNlOTtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0ubW9udGh7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0''@;'; put 'put ''LW92ZXJmbG93OmVsbGlwc2lzfS55ZWFye3RleHQtYWxpZ246Y2VudGVyfTpyb290ey0tY2xyLWNvbWJvYm94LXRyaWdnZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNsci1jb21ib2JveC1mb250LXNpemU6LjY1cmVtOy0tY2xyLWNvbWJvYm94LWJvcmRlci1jb2xv''@;'; put 'put ''cjojZThlOGU4Oy0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXM6LjE1cmVtOy0tY2xyLWNvbWJvYm94LWlucHV0LWJhY2tncm91bmQtY29sb3I6I2YyZjJmMjstLWNsci1jb21ib2JveC1waWxsLWJhY2tncm91bmQtY29sb3I6d2hpdGU7LS1jbHItY29tYm9ib3gtcGlsbC1ib3JkZXItY29s''@;'; put 'put ''b3I6IzY2NjY2NjstLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1yYWRpdXM6LjE1cmVtOy0tY2xyLWNvbWJvYm94LXBpbGwtZm9udC1jb2xvcjojNDU0NTQ1Oy0tY2xyLWNvbWJvYm94LWZpbHRlci1oaWdobGlnaHQ6IzQ1NDU0NX0uY2xyLWNvbWJvYm94LWZvcm0tY29udHJvbHthbGlnbi1p''@;'; put 'put ''dGVtczpzdHJldGNofS5jbHItY29tYm9ib3gtZm9ybS1jb250cm9sIC5jbHItZXJyb3IgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1mb2N1cy1pbmRpY2F0b3J7YmFja2dyb3VuZC1jb2xvcjojMDA3MmEzO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWZv''@;'; put 'put ''Y3VzZWQtY29sb3IsICMwMDcyYTMpO2hlaWdodDouMXJlbTt3aWR0aDowO3RyYW5zaXRpb246d2lkdGggLjJzIGVhc2U7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0uMDVyZW07bGVmdDowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRp''@;'; put 'put ''dXM6dmFyKC0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pfS5jbHItZm9jdXN7d2lkdGg6''@;'; put 'put ''MTAwJX0uY2xyLWVycm9yIC5jbHItZm9jdXMtaW5kaWNhdG9ye2JhY2tncm91bmQtY29sb3I6I2MyMWQwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yLCAjYzIxZDAwKX0uY2xyLWNvbWJvYm94LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGlu''@;'; put 'put ''ZzowIDEuMnJlbSAwIC4zcmVtO21pbi1oZWlnaHQ6MS4ycmVtO21pbi13aWR0aDo4LjRyZW07Zm9udC1zaXplOi42NXJlbTtmb250LXNpemU6dmFyKC0tY2xyLWNvbWJvYm94LWZvbnQtc2l6ZSwgLjY1cmVtKTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWNvbG9yLCBi''@;'; put 'put ''bGFjayk7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LWlucHV0LWJhY2tncm91bmQtY29sb3IsICNmMmYyZjIpO2JvcmRlci13aWR0aDouMDVy''@;'; put 'put ''ZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZThlOGU4O2JvcmRlci1jb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLWNvbG9yLCAjZThlOGU4KTtib3JkZXItYm90dG9tLXdpZHRoOi4wNXJlbTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20t''@;'; put 'put ''Y29sb3I6IzZhN2E4MTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IsICM2YTdhODEpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNsci1jb21ib2JveC13''@;'; put 'put ''cmFwcGVyLm11bHRpe21pbi13aWR0aDptaW4oMThyZW0sMTAwJSk7cGFkZGluZy1ib3R0b206LjE1cmVtfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWlucHV0LmNsci1jb21ib2JveC1pbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LXdyYXBwZXIuaW52YWxpZHti''@;'; put 'put ''b3JkZXItYm90dG9tLWNvbG9yOiNjMjFkMDB9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItY29tYm9ib3gtaW5wdXR7YmFja2dyb3VuZDowIDA7Ym9yZGVyLWJvdHRvbTpub25lfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJvYm94LXJlbW92ZS1idG57YmFja2dyb3VuZDowIDA7''@;'; put 'put ''Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzouMTVyZW07Y29sb3I6IzQ1NDU0NX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGx7bWFyZ2luOi4xNXJlbSAuM3JlbSAwIDA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWNvbWJvYm94LXBpbGwtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9y''@;'; put 'put ''ZGVyLXJhZGl1cywgLjE1cmVtKTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLWNvbG9yLCAjNjY2NjY2KTtwYWRkaW5nOjAgLjFyZW0gMCAuMnJlbX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwg''@;'; put 'put ''LmNsci1jb21ib2JveC1waWxsLWNvbnRlbnR7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yLCAjNDU0NTQ1KTtmb250LXNpemU6LjU1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nOjAgLjRyZW0gMCAuMnJlbX0uY2xyLWNvbWJvYm94LXdy''@;'; put 'put ''YXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2RzLWljb25bc2hhcGU9d2luZG93LWNsb3NlXSwuY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2xyLWljb25bc2hhcGU9d2luZG93LWNsb3NlXXtjb2xvcjojNDU0NTQ1O2NvbG9yOnZhcigtLWNsci1jb21ib2Jv''@;'; put 'put ''eC1waWxsLWZvbnQtY29sb3IsICM0NTQ1NDUpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJvYm94LWlucHV0LXdyYXBwZXJ7Ym9yZGVyOjA7YmFja2dyb3VuZDowIDB9LmNsci1jb21ib2JveC10cmlnZ2Vye3dpZHRoOjEuMnJlbTttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0''@;'; put 'put ''ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2NvbG9yOmN1cnJlbnRDb2xvcjtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjB9LmNsci1jb21ib2JveC10cmlnZ2VyOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvciwg''@;'; put 'put ''IzY2Nik7b3BhY2l0eTouNH0uY2xyLWNvbWJvYm94LXRyaWdnZXIgY2RzLWljb25bc2hhcGU9YW5nbGVdLC5jbHItY29tYm9ib3gtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZV17Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yLCAjNDU0''@;'; put 'put ''NTQ1KX0uY2xyLWNvbWJvYm94LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOjZyZW07bWF4LXdpZHRoOjE4cmVtO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1k''@;'; put 'put ''cm9wZG93bi1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24t''@;'; put 'put ''Ym9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIo''@;'; put 'put ''LS1jbHItZHJvcGRvd24tYm94LXNoYWRvdywgcmdiYSgxNDAsIDE0MCwgMTQwLCAuMjUpKTttYXJnaW4tdG9wOi4xcmVtO3BhZGRpbmc6LjZyZW0gMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwNTA7cG9zaXRpb246c3RhdGljO21heC1oZWlnaHQ6MTJyZW07b3ZlcmZsb3cteTpzY3Jv''@;'; put 'put ''bGw7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZ3twYWRkaW5nOi4xNXJlbSAxLjJyZW19LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9ucy1sb2FkaW5nIC5jbHItY29tYm9ib3gtb3B0''@;'; put 'put ''aW9ucy1sb2FkaW5nLXRleHR7cGFkZGluZy1sZWZ0Oi4zcmVtfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtZW1wdHktdGV4dHtwYWRkaW5nLWxlZnQ6LjZyZW19LmNsci1jb21ib2JveC1vcHRpb257Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRv''@;'; put 'put ''d24taXRlbS1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXplOi43cmVtO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXdlaWdodDp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1mb250LXdlaWdodCwgNDAwKTtsZXR0ZXItc3BhY2luZzpub3JtYWw7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBv''@;'; put 'put ''aW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDppbmhlcml0O21hcmdpbjowO3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3IsICNlOGU4ZTgpO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IsICM2NjY2NjYpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItY29tYm9ib3gtb3B0aW9uLmFjdGl2ZXtiYWNrZ3JvdW5kOiNkOGUzZTk7''@;'; put 'put ''YmFja2dyb3VuZDp2YXIoLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yLCAjZDhlM2U5KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1hY3RpdmUtdGV4dC1jb2xvciwgYmxhY2spfS5jbHItY29tYm9ib3gtb3B0aW9uOmFjdGl2ZXtib3gtc2hhZG93Om5vbmV9LmNs''@;'; put 'put ''ci1jb21ib2JveC1vcHRpb246Zm9jdXN7ei1pbmRleDppbmhlcml0fS5jbHItY29tYm9ib3gtb3B0aW9uLmRpc2FibGVkLC5jbHItY29tYm9ib3gtb3B0aW9uOmRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxl''@;'; put 'put ''Y3Q6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDpob3ZlciwuY2xyLWNvbWJvYm94LW9wdGlvbjpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uY2xyLWNvbWJvYm94LW9wdGlvbi5kaXNhYmxlZDphY3RpdmUsLmNsci1jb21ib2JveC1vcHRpb246ZGlzYWJsZWQ6YWN0''@;'; put 'put ''aXZle2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uY2xyLWNvbWJvYm94LW9wdGlvbi5jbHItZm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWhvdmVyLWNvbG9yLCAjZThlOGU4KX0uY2xyLWNvbWJvYm94''@;'; put 'put ''LW9wdGlvbnMgLmNsci1jb21ib2JveC1vcHRpb257cGFkZGluZzouMTVyZW0gMS4ycmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbntwYWRkaW5nOi4zcmVtIDEuMnJlbX19LmNsci1jb21ib2Jv''@;'; put 'put ''eC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9uOmhvdmVyLC5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbi5hY3RpdmV7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1jb2xvciwgIzY2NjY2Nil9LmNsci1jb21ib2JveC1kaXNhYmxl''@;'; put 'put ''ZHtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yLCAjYjNiM2IzKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1jb21ib2JveC1kaXNhYmxlZCAuY2xyLWNvbWJvYm94LWlucHV0LC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2Jv''@;'; put 'put ''eC1yZW1vdmUtYnRuLC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2JveC10cmlnZ2Vye2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZpbHRlci1oaWdobGlnaHQgYntmb250LXdlaWdodDo1MDA7Y29sb3I6IzQ1NDU0NTtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtZmlsdGVyLWhp''@;'; put 'put ''Z2hsaWdodCwgIzQ1NDU0NSl9OnJvb3R7LS1jbHItc3RhY2stdmlldy1ib3JkZXItcmFkaXVzOi4xNXJlbTstLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLXN0YWNrLXZpZXctYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5l''@;'; put 'put ''dXRyYWwtNTApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbTp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0zMDApOy0tY2xyLXN0YWNrLXZpZXctY29sb3I6IzY2NjY2NjstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLXRleHQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWdsb2JhbC1mb250LWNvbG9yKTstLWNsci1zdGFjay12aWV3LWJvcmRlci1ib3gtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwKTstLWNsci1zdGFjay1ibG9jay1jaGFuZ2VkLWJvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLXN0''@;'; put 'put ''YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtYW5kLWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRyZW4tc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0y''@;'; put 'put ''MDApOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stY2hpbGRyZW4tc3RhY2stYmxvY2stbGFiZWwtYW5kLWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC1iZy1jb2xvcjp2YXIoLS1jbHItZ2xvYmFs''@;'; put 'put ''LXNlbGVjdGlvbi1jb2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRhYmxlLWhvdmVyOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jb250ZW50LXRleHQtY29sb3I6aW5oZXJpdDstLWNsci1zdGFjay12aWV3''@;'; put 'put ''LXN0YWNrLWJsb2NrLWV4cGFuZGVkLXRleHQtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jYXJldC1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLWZvbnQtY29sb3IpfS5zdGFjay1oZWFkZXJ7Zm9udC13ZWlnaHQ6NDAwO2Rp''@;'; put 'put ''c3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZH0uc3RhY2staGVhZGVyIC5zdGFjay10aXRsZXtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87cGFkZGluZzouM3JlbSAwfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnN7ZGlzcGxheTpibG9jaztmbGV4OjAgMCBhdXRvfS5zdGFj''@;'; put 'put ''ay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMgLnN0YWNrLWFjdGlvbnttYXJnaW46MCAwIC4zcmVtIC42cmVtfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMgLnN0YWNrLWFjdGlvbi5idG57bWluLXdpZHRoOjA7cGFkZGluZzowIC42cmVtfS5zdGFjay1oZWFkZXIgLnN0YWNrLWFjdGlvbnMg''@;'; put 'put ''LnN0YWNrLWFjdGlvbi5idG4tbGlua3ttYXJnaW4tcmlnaHQ6LS42cmVtfS5zdGFjay12aWV3e2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNjVyZW07Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMnJlbTtsZXR0''@;'; put 'put ''ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luLXRvcDowO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci1yYWRpdXM6LjE1cmVt''@;'; put 'put ''O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctYmctY29sb3IsICNmYWZhZmEpO3dvcmQtd3Jh''@;'; put 'put ''cDpicmVhay13b3JkfS5zdGFjay12aWV3IGRkLC5zdGFjay12aWV3IGR0e21hcmdpbi1pbmxpbmUtc3RhcnQ6MDttYXJnaW4tbGVmdDowfS5zdGFjay12aWV3IC5zdGFjay1ibG9ja3tkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyB3cmFwO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2Jv''@;'; put 'put ''cmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6I2RlZGVkZTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWJv''@;'; put 'put ''cmRlci1ib3R0b20sICNkZWRlZGUpO292ZXJmbG93LXk6aGlkZGVufS5zdGFjay12aWV3Pi5zdGFjay1ibG9jazpsYXN0LWNoaWxkLC5zdGFjay12aWV3PjpsYXN0LWNoaWxkIC5zdGFjay1ibG9jazpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRvbTpub25lO2JveC1zaGFkb3c6MCAuMDVyZW0g''@;'; put 'put ''I2RlZGVkZTtib3gtc2hhZG93OjAgLjA1cmVtIDAgdmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLWJveC1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNoYW5nZWQ+LnN0YWNrLWJsb2NrLWxhYmVse21hcmdpbi1sZWZ0Oi0uNDVyZW19LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2Nr''@;'; put 'put ''LWNoYW5nZWQ6YmVmb3Jle2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDowO3dpZHRoOjA7Ym9yZGVyLXRvcDouNDVyZW0gc29saWQ7Ym9yZGVyLXRvcC1jb2xvcjojMDA3MmEzO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXN0YWNrLWJsb2NrLWNoYW5nZWQtYm9yZGVy''@;'; put 'put ''LXRvcC1jb2xvciwgIzAwNzJhMyk7Ym9yZGVyLXJpZ2h0Oi40NXJlbSBzb2xpZCB0cmFuc3BhcmVudH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWx7cGFkZGluZzouM3JlbSAuNnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3Rh''@;'; put 'put ''Y2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvciwgI2ZhZmFmYSl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHthbGlnbi1zZWxmOmNlbnRlcn0u''@;'; put 'put ''c3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWx7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC10ZXh0LWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjJyZW07bGV0dGVy''@;'; put 'put ''LXNwYWNpbmc6bm9ybWFsO2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtmbG9hdDpsZWZ0O2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTttYXJnaW46LjM1cmVtIC4y''@;'; put 'put ''NHJlbSAwIDA7dGV4dC1hbGlnbjpjZW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWxhYmVsOmZvY3Vze291dGxpbmU6LjA1cmVtIGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0uMDVyZW19LnN0YWNrLXZpZXcgLnN0YWNrLXZpZXcta2V5e2ZsZXg6''@;'; put 'put ''MCAwIDQwJTttYXgtd2lkdGg6NDAlfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jYXJldHtoZWlnaHQ6LjdyZW07d2lkdGg6LjdyZW07bWFyZ2luLXJpZ2h0Oi4yNHJlbTtmaWxsOiM2NjY7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jYXJldC1jb2xvciwgIzY2NjY2''@;'; put 'put ''Nil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnR7Y29sb3I6aW5oZXJpdDtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jb250ZW50LXRleHQtY29sb3IsIGluaGVyaXQpO2ZsZXg6MSAxIGF1dG87d2lkdGg6NjAlO21hcmdpbi1ib3R0b206MDtmb250LXdl''@;'; put 'put ''aWdodDo0MDB9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudD46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVue2ZsZXg6MCAw''@;'; put 'put ''IGF1dG87d2lkdGg6MTAwJX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2Nre2JvcmRlci1ib3R0b20tY29sb3I6I2U4ZThlODtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWNoaWxkcmVuLXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0''@;'; put 'put ''b20tY29sb3IsICNlOGU4ZTgpfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbj4uc3RhY2stYmxvY2s6bGFzdC1jaGlsZCwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4+Omxhc3QtY2hpbGQgLnN0YWNrLWJsb2NrOmxhc3Qtb2YtdHlwZXtib3JkZXItYm90dG9tOm5vbmU7Ym94LXNoYWRv''@;'; put 'put ''dzowIC4wNXJlbSAjZGVkZWRlO2JveC1zaGFkb3c6MCAuMDVyZW0gMCB2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItYm94LWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxv''@;'; put 'put ''Y2stY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvciwgd2hpdGUpfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3Rh''@;'; put 'put ''Y2stYmxvY2stbGFiZWx7cGFkZGluZy1sZWZ0OjEuMnJlbX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stbGFiZWx7Y3Vyc29yOnBvaW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9y''@;'; put 'put ''ZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3QmZpbGwlM0ElMjM2NjY2NjYlM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUl''@;'; put 'put ''M0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNNiUyQzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYl''@;'; put 'put ''M0UlMEElM0MlMkZzdmclM0UlMEEpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO2hlaWdodDouNnJlbTt3aWR0aDouNnJlbX0uc3RhY2stdmlldyAuc3RhY2st''@;'; put 'put ''YmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stbGFiZWwsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnR7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlLWluLW91dCxjb2xvciAuMnMgZWFzZS1pbi1vdXR9LnN0YWNr''@;'; put 'put ''LXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU6aG92ZXI6bm90KC5zdGFjay1ibG9jay1leHBhbmRlZCk+LnN0YWNrLWJsb2NrLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGFi''@;'; put 'put ''bGUtaG92ZXIsICNlOGU4ZTgpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoMCl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1sYWJlbHtiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC1iZy1jb2xvciwgI2Q4ZTNlOSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC10ZXh0LWNvbG9yLCBibGFj''@;'; put 'put ''ayl9LnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10ZXh0XSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXBhc3N3b3JkXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPW51bWJlcl0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1lbWFpbF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT11cmxdLC5zdGFjay12aWV3''@;'; put 'put ''IGlucHV0W3R5cGU9dGVsXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPWRhdGVdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9dGltZV0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sLnN0YWNrLXZpZXcgLnNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1h''@;'; put 'put ''bGlnbjp0b3A7bWFyZ2luLXJpZ2h0Oi42cmVtO21hcmdpbi1ib3R0b206LS45NXJlbX0uc3RhY2stdmlldyBpbnB1dFt0eXBlPXRleHRdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9cGFzc3dvcmRdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9bnVtYmVyXSwuc3RhY2stdmlldyBpbnB1dFt0eXBl''@;'; put 'put ''PWVtYWlsXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPXVybF0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10ZWxdLC5zdGFjay12aWV3IGlucHV0W3R5cGU9ZGF0ZV0sLnN0YWNrLXZpZXcgaW5wdXRbdHlwZT10aW1lXSwuc3RhY2stdmlldyBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwuc3Rh''@;'; put 'put ''Y2stdmlldyAuc2VsZWN0IHNlbGVjdHtoZWlnaHQ6MS4ycmVtfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGV4dF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRl''@;'; put 'put ''bnQgaW5wdXRbdHlwZT1wYXNzd29yZF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1udW1iZXJdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5''@;'; put 'put ''cGU9ZW1haWxdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dXJsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRlbF0sLnN0YWNrLXZp''@;'; put 'put ''ZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1kYXRlXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZT4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRpbWVdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1l''@;'; put 'put ''eHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxde3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlLGJvcmRlci1ib3R0b20tY29sb3IgLjJzIGVhc2UtaW4tb3V0fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxl''@;'; put 'put ''Pi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Qgc2VsZWN0e3RyYW5zaXRpb246Ym9yZGVyLWJvdHRvbS1jb2xvciAuMnMgZWFzZS1pbi1vdXR9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWNvbnRlbnQgLnNlbGVjdDphZnRlcnt0cmFuc2l0aW9u''@;'; put 'put ''OmNvbG9yIC4ycyBlYXNlLWluLW91dH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZXh0XSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1wYXNz''@;'; put 'put ''d29yZF0sLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9bnVtYmVyXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1lbWFpbF0sLnN0YWNrLXZpZXcg''@;'; put 'put ''LnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dXJsXSwuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10ZWxdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4u''@;'; put 'put ''c3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGVdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRpbWVdLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBp''@;'; put 'put ''bnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXXtib3JkZXItYm90dG9tLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUs''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2V9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50''@;'; put 'put ''IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9dGV4dF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1''@;'; put 'put ''dFt0eXBlPXBhc3N3b3JkXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT1wYXNzd29yZF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBp''@;'; put 'put ''bnB1dFt0eXBlPW51bWJlcl06Zm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9bnVtYmVyXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlu''@;'; put 'put ''cHV0W3R5cGU9ZW1haWxdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWVtYWlsXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0''@;'; put 'put ''W3R5cGU9dXJsXTpmb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT11cmxdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10''@;'; put 'put ''ZWxdOmZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPXRlbF0uY2xyLWZvY3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGVdOmZv''@;'; put 'put ''Y3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGVdLmNsci1mb2N1cywuc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10aW1lXTpmb2N1cywu''@;'; put 'put ''c3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWNvbnRlbnQgaW5wdXRbdHlwZT10aW1lXS5jbHItZm9jdXMsLnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOmZv''@;'; put 'put ''Y3VzLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stY29udGVudCBpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA3MmEzO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlv''@;'; put 'put ''bi02MDAsICMwMDcyYTMpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Qgc2VsZWN0e2JvcmRlci1ib3R0b20tY29sb3I6IzhjOGM4Yztib3JkZXItYm90dG9tLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1jb2xvci1uZXV0cmFsLTYwMCwgIzhjOGM4Yyl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1jb250ZW50IC5zZWxlY3Q6YWZ0ZXJ7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpfS5tb2Rh''@;'; put 'put ''bCAuc3RhY2stdmlld3toZWlnaHQ6NTV2aDttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgY2xyLXN0YWNrLWJsb2NrLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtjb250ZW50Om5vbmV9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIGNsci1z''@;'; put 'put ''dGFjay1ibG9jayAuc3RhY2stYmxvY2stbGFiZWwsLnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1sYWJlbHtwYWRkaW5nLWxlZnQ6MS44cmVtfS5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiBjbHItc3RhY2stYmxvY2sgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9y''@;'; put 'put ''ZSwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtkaXNwbGF5Om5vbmV9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIGNsci1zdGFjay1ibG9jayAuc3RhY2stYmxvY2stY29udGVudCwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0''@;'; put 'put ''YWNrLWJsb2NrLWNvbnRlbnR7cGFkZGluZy1sZWZ0Oi4zNnJlbX06cm9vdHstLWNsci10cmVlLWJvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMpOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEw''@;'; put 'put ''MDApOy0tY2xyLXRyZWUtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY3VzdG9tLWxpbmtzLWhvdmVyLWNvbG9yKTstLWNsci10cmVlLWxpbmstc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci10cmVlLWxpbmstdGV4dC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLXRyZWUtbm9kZS1jYXJldC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApfS5jbHItdHJlZS1ub2Rle2Rpc3BsYXk6YmxvY2t9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0''@;'; put 'put ''ZW1zOmNlbnRlcn0uY2xyLXRyZWVub2RlLWNvbnRlbnR7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci10cmVlLWJv''@;'; put 'put ''cmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdHJlZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2xpbmUtaGVpZ2h0OjEuNjJyZW19LmNsci10cmVlbm9kZS1jb250ZW50OmZpcnN0''@;'; put 'put ''LWNoaWxke3BhZGRpbmctbGVmdDoxLjYycmVtfS5jbHItdHJlZW5vZGUtY29udGVudCBjZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgY2xyLWljb257aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO21hcmdpbi1yaWdodDouM3JlbTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmNsci10cmVl''@;'; put 'put ''bm9kZS1jYXJldHtmbGV4OjAgMCAxLjYycmVtO3BhZGRpbmc6MDttYXJnaW46MDtoZWlnaHQ6MS42MnJlbTt3aWR0aDoxLjYycmVtO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2NvbG9yOiNiM2IzYjM7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1jb2xvciwgI2IzYjNiMyk7Y3Vy''@;'; put 'put ''c29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6LS4yNXJlbX0uY2xyLXRyZWVub2RlLWNhcmV0OmhvdmVye2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yLCBibGFjayl9LmNsci10cmVlLW5vZGUtY2FyZXQtaWNvbntoZWlnaHQ6Ljhy''@;'; put 'put ''ZW07d2lkdGg6LjhyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJ7aGVpZ2h0OjEuNjJyZW07d2lkdGg6MS42MnJlbTtwYWRkaW5nOi40MXJlbX0uY2xyLXRyZWVub2RlLXNwaW5uZXJ7aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO21pbi1o''@;'; put 'put ''ZWlnaHQ6LjhyZW07bWluLXdpZHRoOi44cmVtfS5jbHItdHJlZW5vZGUtY2hpbGRyZW57bWFyZ2luLWxlZnQ6MS4xN3JlbTt3aWxsLWNoYW5nZTpoZWlnaHQ7b3ZlcmZsb3cteTpoaWRkZW59LmNsci10cmVlbm9kZS1saW5re2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRo''@;'; put 'put ''OjEwMCU7bWFyZ2luOjA7cGFkZGluZzowIDAgMCAuM3JlbTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10cmVlLWxpbmstdGV4dC1jb2xvciwgIzY2NjY2Nik7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6aW5oZXJpdDt0ZXh0LWFsaWduOmxl''@;'; put 'put ''ZnR9LmNsci10cmVlbm9kZS1saW5rOmxpbmssLmNsci10cmVlbm9kZS1saW5rOnZpc2l0ZWQsLmNsci10cmVlbm9kZS1saW5rOmFjdGl2ZSwuY2xyLXRyZWVub2RlLWxpbms6aG92ZXJ7Y29sb3I6aW5oZXJpdH0uY2xyLXRyZWVub2RlLWxpbms6aG92ZXIsLmNsci10cmVlbm9kZS1saW5rOmZv''@;'; put 'put ''Y3Vze2JhY2tncm91bmQ6I2U4ZThlODtiYWNrZ3JvdW5kOnZhcigtLWNsci10cmVlLWxpbmstaG92ZXItY29sb3IsICNlOGU4ZTgpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItdHJlZW5vZGUtbGluay5hY3RpdmV7YmFja2dyb3VuZDojZDhlM2U5O2JhY2tncm91bmQ6dmFyKC0tY2xyLXRy''@;'; put 'put ''ZWUtbGluay1zZWxlY3Rpb24tY29sb3IsICNkOGUzZTkpO2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jYXJldC1saW5rLWhvdmVyLWNvbG9yLCBibGFjayl9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci1jaGVja2JveC13cmFwcGVye3BhZGRpbmct''@;'; put 'put ''dG9wOi4yMXJlbTtwYWRkaW5nLWxlZnQ6LjQxcmVtfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyPi5jbHItY2hlY2tib3gtd3JhcHBlcjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxLjYycmVtfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyPi5jbHItY2hlY2tib3gt''@;'; put 'put ''d3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC1zaXplOi43cmVtfS5jbHItdHJlZW5vZGUtY29udGVudCAubGFiZWx7bWFyZ2luLWxlZnQ6LjNyZW19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItdHJlZW5vZGUtY29udGVudCAubGFiZWx7bWFyZ2luLWxlZnQ6LjE1''@;'; put 'put ''cmVtfX1fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAuY2xyLXRyZWVub2RlLWNvbnRlbnQgLmxhYmVsLDpyb290IC5jbHItdHJlZW5vZGUtY29udGVudCAubGFiZWx7bWFyZ2luLWxlZnQ6LjE1cmVtfTpyb290ey0tY2xyLWRhdGFncmlkLWZvbnQtY29sb3I6I2FjYmFjMzstLWNsci1kYXRhZ3Jp''@;'; put 'put ''ZC1kZWZhdWx0LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC00MDApOy0tY2xyLWRhdGFncmlkLWljb24tY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwKTstLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXI6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNs''@;'; put 'put ''ci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7LS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1idG4tY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZWZhdWx0''@;'; put 'put ''LWJvcmRlci1jb2xvcik7LS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItZm9jdXMtY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi00MDApOy0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItZGF0YWdy''@;'; put 'put ''aWQtcG9wb3Zlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1hY3Rpb24tcG9wb3Zlci1ob3Zlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0yMDApOy0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZDp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1kYXRhZ3JpZC1sb2FkaW5nLWJhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7LS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvcjpyZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSk7LS1jbHItZGF0YWdy''@;'; put 'put ''aWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWRhdGFncmlkLWRldGFp''@;'; put 'put ''bC1jYXJldC1pY29uLW9wZW4tYmctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4taWNvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTouOHJlbTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWJ0bi1kaXNhYmxlZC1vcGFjaXR5Oi41NjstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJvcmRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCk7''@;'; put 'put ''LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1ib3JkZXItaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtaG92ZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMCk7LS1jbHItZGF0YWdyaWQt''@;'; put 'put ''Y29sdW1uLXRvZ2dsZS10ZXh0LWhvdmVyLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dn''@;'; put 'put ''bGUtZmlsbC1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcwMCl9LmRhdGFncmlke2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtib3Jk''@;'; put 'put ''ZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItcmFk''@;'; put 'put ''aXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10YWJsZS1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yLCB3aGl0ZSk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItdGFi''@;'; put 'put ''bGUtZm9udC1jb2xvciwgIzY2NjY2Nik7bWFyZ2luOjA7bWFyZ2luLXRvcDoxLjJyZW07bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbiwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGx7Zm9udC1zaXplOi42NXJlbTtsaW5lLWhlaWdodDouN3JlbTti''@;'; put 'put ''b3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6LjA1cmVtO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci10b3AtY29sb3I6I2U4ZThlODtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3Jk''@;'; put 'put ''ZXJjb2xvciwgI2U4ZThlOCk7cGFkZGluZzouNTVyZW0gLjZyZW07dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246dG9wfS5kYXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1uLmxlZnQsLmRhdGFncmlkIC5kYXRhZ3JpZC1jZWxsLmxlZnR7dGV4dC1hbGlnbjpsZWZ0fS5kYXRhZ3JpZCAu''@;'; put 'put ''ZGF0YWdyaWQtY29sdW1uLmxlZnQ6Zmlyc3QtY2hpbGQsLmRhdGFncmlkIC5kYXRhZ3JpZC1jZWxsLmxlZnQ6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0Oi4zcmVtfS5kYXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1ue2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRoZWFkLWNvbG9yLCAjNjY2''@;'; put 'put ''NjY2KTtmb250LXNpemU6LjU1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMDNlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvciwgI2ZhZmFmYSk7dmVydGljYWwtYWxpZ246Ym90dG9tO2JvcmRlci1i''@;'; put 'put ''b3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojY2NjO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJv''@;'; put 'put ''cmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXRvcDowIG5vbmV9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5IC5kYXRhZ3JpZC1yb3c6Zmlyc3QtY2hpbGQgLmRhdGFncmlkLWNlbGx7Ym9yZGVyLXRvcDowIG5vbmV9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5Ky5kYXRhZ3JpZC1ib2R5e2Jv''@;'; put 'put ''cmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDouMDVyZW07Ym9yZGVyLXRvcC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXRvcC1jb2xvcjojY2NjO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xv''@;'; put 'put ''ciwgI2NjY2NjYyl9LmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbjpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFk''@;'; put 'put ''aXVzLCAuMXJlbSl9LmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbjpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czouMXJlbTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJh''@;'; put 'put ''ZGl1cywgLjFyZW0pfS5kYXRhZ3JpZCAuZGF0YWdyaWQtYm9keTpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1yb3c6bGFzdC1jaGlsZCAuZGF0YWdyaWQtY2VsbDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMXJlbTtib3JkZXItYm90dG9tLWxl''@;'; put 'put ''ZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5Omxhc3QtY2hpbGQgLmRhdGFncmlkLXJvdzpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1jZWxsOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0''@;'; put 'put ''b20tcmlnaHQtcmFkaXVzOi4xcmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzLCAuMXJlbSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNvbHVtbiwuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY2VsbHtwYWRkaW5n''@;'; put 'put ''LXRvcDouM3JlbTtwYWRkaW5nLWJvdHRvbTouMjVyZW19LmRhdGFncmlkLWhvc3R7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5kYXRhZ3JpZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRp''@;'; put 'put ''dXM6MDstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO292ZXJmbG93OmF1dG87ZmxleDoxIDEgYXV0bzttYXJnaW4tdG9wOi42cmVtfS5kYXRhZ3JpZC1jb250YWluZXJ7d2lkdGg6YXV0bztmb250LXNpemU6LjY1cmVtO3BhZGRpbmc6LjU1cmVtIC42cmVtfS5k''@;'; put 'put ''YXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmc6LjFyZW0gLjJyZW0gLjE1cmVtO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVh''@;'; put 'put ''cmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MS41cmVtO3dpZHRoOjEuNXJl''@;'; put 'put ''bX1idXR0b24uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbntjb2xvcjojOGM4YzhjO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1kYXRhZ3JpZC1pY29uLWNvbG9yLCAjOGM4YzhjKTttYXJnaW4tdG9wOi4xNXJlbX0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1pY29uIHN2Z3t0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXR9LmRhdGFncmlk''@;'; put 'put ''LWV4cGFuZGFibGUtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDouM3JlbX0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jb2x1bW57cGFkZGluZzouNTVyZW0gLjZyZW19LmRhdGFncmlkLWhlYWRlciwuZGF0YWdyaWQtYm9keSwuZGF0YWdyaWQtcm93LC5kYXRhZ3JpZC1j''@;'; put 'put ''b2x1bW4sLmRhdGFncmlkLWNlbGwsLmRhdGFncmlkLWZpeGVkLWNvbHVtbntkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1yb3d7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCwg''@;'; put 'put ''LjA1cmVtKTtib3JkZXItdG9wLWNvbG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtcm93OmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXRvcDpub25lfS5kYXRhZ3JpZC1yb3c6aG92ZXIsLmRhdGFncmlkLXJvdzpo''@;'; put 'put ''b3ZlciAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLCAjZThlOGU4KX0uZGF0YWdyaWQtcm93LmRhdGFncmlkLXNlbGVjdGVkLC5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtc2Vs''@;'; put 'put ''ZWN0ZWQgLmRhdGFncmlkLXJvdy1zdGlja3l7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LXNlbGVjdGVkLCBibGFjayk7YmFja2dyb3VuZC1jb2xvcjojZDhlM2U5O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IsICNkOGUz''@;'; put 'put ''ZTkpfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdzpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOi0uM3JlbTtib3JkZXItdG9wOi4zcmVtIHNvbGlkIHRyYW5zcGFy''@;'; put 'put ''ZW50O2JvcmRlci1ib3R0b206LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4zcmVtO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9y''@;'; put 'put ''ZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVyLXRvcDouMjVy''@;'; put 'put ''ZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4yNXJlbTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1k''@;'; put 'put ''YXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7cGFk''@;'; put 'put ''ZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFn''@;'; put 'put ''cmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwg''@;'; put 'put ''LjI1KSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdzpiZWZvcmV7Y29u''@;'; put 'put ''dGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uM3JlbTtib3JkZXItdG9wOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''LXdpZHRoOi4zcmVtO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3Zl''@;'; put 'put ''cmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVyLXRvcDouMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouMjVyZW0gc29saWQgdHJhbnNw''@;'; put 'put ''YXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOi4yNXJlbTtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSl9LmRhdGFncmlkLXJvdyAuZGF0YWdy''@;'; put 'put ''aWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24t''@;'; put 'put ''cG9wb3Zlci1ob3Zlci1jb2xvciwgI2U4ZThlOCk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1o''@;'; put 'put ''b3ZlciwgI2U4ZThlOCk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwLCBibGFjayl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1k''@;'; put 'put ''YXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7cGFkZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29s''@;'; put 'put ''b3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJv''@;'; put 'put ''eC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7Ym9yZGVyLWNvbG9yOi4xNXJlbTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtcm93IC5k''@;'; put 'put ''YXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjNyZW07Ym9yZGVyLXJpZ2h0Oi4zcmVtIHNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjojY2NjO2Jv''@;'; put 'put ''cmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JvcmRlci10b3A6LjNyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouM3JlbSBzb2xpZCB0cmFuc3BhcmVudH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1h''@;'; put 'put ''Y3Rpb24tb3ZlcmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7d2lkdGg6MDtoZWlnaHQ6MDttYXJnaW4tdG9wOi0uMjVyZW07Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCAjZmZmO2JvcmRlci10b3A6LjI1cmVtIHNvbGlkIHRyYW5z''@;'; put 'put ''cGFyZW50O2JvcmRlci1ib3R0b206LjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50fS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW17Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Zm9udC1zaXpl''@;'; put 'put ''Oi43cmVtO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMTVyZW07bWFyZ2luOjA7cGFkZGluZzouMDVyZW0gMS4ycmVtIDA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCV9LmRh''@;'; put 'put ''dGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tcG9wb3Zlci1ob3Zlci1jb2xvciwgI2U4ZThlOCl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3RpdmV7YmFja2dyb3VuZDojZThlOGU4O2JhY2tncm91bmQ6dmFyKC0t''@;'; put 'put ''Y2xyLWRhdGFncmlkLXJvdy1ob3ZlciwgI2U4ZThlOCk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWZvbnQtY29sb3IsIGJsYWNrKX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6''@;'; put 'put ''MH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmRpc2FibGVkLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjQ7LXdlYmtpdC11''@;'; put 'put ''c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVkOmhv''@;'; put 'put ''dmVye2JhY2tncm91bmQ6MCAwfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlk''@;'; put 'put ''LXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpmb2N1c3tiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmV9LmRhdGFn''@;'; put 'put ''cmlkLXJvdyAuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjZHMtaWNvbiwuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtIGNsci1pY29ue3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwt''@;'; put 'put ''LjA1cmVtLDApfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1kZXRhaWwtd3JhcHBlcntmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1yb3ctZGV0YWlse3dpZHRoOmF1dG99LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0''@;'; put 'put ''YWdyaWQtY2VsbHtwYWRkaW5nLXRvcDowO2JvcmRlcjowfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdHttaW4td2lkdGg6LjRyZW07YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdCAuY2xyLWNoZWNrYm94LXdyYXBwZXJ7ZGlzcGxheTpibG9j''@;'; put 'put ''azttYXJnaW4tdG9wOi0uM3JlbX0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zZWxlY3QsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2VsZWN0IGlucHV0e2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkLC5kYXRh''@;'; put 'put ''Z3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIGlucHV0e2N1cnNvcjpub3QtYWxsb3dlZH0uZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdHttYXJnaW46LS4zNnJlbSAwO2hlaWdodDoxLjIzNnJlbX0uZGF0''@;'; put 'put ''YWdyaWQtcm93IC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJpZ2dlcntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjJyZW19LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LXN0aWNreXt6LWluZGV4OjUwMH0uZGF0YWdyaWQtcm93LXN0aWNr''@;'; put 'put ''eXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYmdjb2xvciwgd2hpdGUpO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO3Bvc2l0aW9uOnN0aWNreTtsZWZ0OjA7ei1pbmRleDo1MDJ9LmRhdGFncmlkLXJvdy1zdGlja3kgLmRhdGFn''@;'; put 'put ''cmlkLWNlbGw6bGFzdC1jaGlsZDphZnRlcntjb250ZW50OiIiO3dpZHRoOi4wNXJlbTtoZWlnaHQ6Y2FsYygxMDAlIC0gLjVyZW0pO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOi4yNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFi''@;'; put 'put ''bGUtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtcm93LXNjcm9sbGFibGV7ZmxleDoxIDEgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXB9LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxlLmlzLXJlcGxhY2Vke2ZsZXgtZGlyZWN0aW9uOnJvd30uZGF0YWdy''@;'; put 'put ''aWQtcm93LXNjcm9sbGFibGUuaXMtcmVwbGFjZWQgLmRhdGFncmlkLXNjcm9sbGluZy1jZWxsc3tmbGV4OjAgMCBhdXRvfS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZSAuZGF0YWdyaWQtY29sdW1uOmxhc3QtY2hpbGQgLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3J7ZGlzcGxheTpub25lfS5k''@;'; put 'put ''YXRhZ3JpZC1yb3ctZmxleHtmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IG5vd3JhcH0uZGF0YWdyaWQtcm93LWZsZXggLmRhdGFncmlkLXJvdy1kZXRhaWx7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kYXRhZ3JpZC1yb3ctZmxleCAuZGF0YWdy''@;'; put 'put ''aWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtwYWRkaW5nLXRvcDowfS5kYXRhZ3JpZC1zY3JvbGxpbmctY2VsbHMsLmRhdGFncmlkLXNjcm9sbGluZy1kZXRhaWxze2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kYXRhZ3JpZC1hY3Rpb24tYmFy''@;'; put 'put ''e21hcmdpbi10b3A6MS4ycmVtfS5kYXRhZ3JpZC1hY3Rpb24tYmFyfi5kYXRhZ3JpZC1zcGlubmVye2hlaWdodDpjYWxjKDEwMCUgLSAxLjJyZW0pO3RvcDoxLjJyZW19LmRhdGFncmlkLWhlYWRlcntwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDo1MDE7d2lkdGg6YXV0b30uZGF0YWdy''@;'; put 'put ''aWQtaGVhZGVyIC5kYXRhZ3JpZC1jb2x1bW57Ym9yZGVyLWJvdHRvbTpub25lfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvd3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvciwgI2ZhZmFmYSk7Ym9yZGVyLXRvcDpu''@;'; put 'put ''b25lO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDouMDVyZW07Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1ib3R0b20tY29sb3I6I2NjYztib3JkZXItYm90dG9tLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LXN0aWNreSwuZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3c6aG92ZXIsLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93OmhvdmVyIC5kYXRh''@;'; put 'put ''Z3JpZC1yb3ctc3RpY2t5e2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKX0uZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZXtmbGV4LWRpcmVjdGlvbjpyb3d9LmRhdGFncmlkLXRh''@;'; put 'put ''YmxlLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87bWluLWhlaWdodDoxMDAlfS5kYXRhZ3JpZC10YWJsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxIGF1dG87YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0fS5kYXRhZ3JpZC10YWJsZSAuZGF0''@;'; put 'put ''YWdyaWQtYm9keXt3aWR0aDphdXRvfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1ue3RleHQtYWxpZ246bGVmdDttaW4td2lkdGg6NC44cmVtO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXI6MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbjpmb2N1c3tvdXRsaW5lOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciBzb2xpZCAuMXJlbTtvdXRsaW5lLW9mZnNldDotLjFyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gY2xyLWRnLWZpbHRlciwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBj''@;'; put 'put ''bHItZGctc3RyaW5nLWZpbHRlciwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBjbHItZGctbnVtZXJpYy1maWx0ZXJ7ZGlzcGxheTpmbGV4O29yZGVyOjk5O21hcmdpbi1sZWZ0OmF1dG87YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1u''@;'; put 'put ''IC5kYXRhZ3JpZC1maWx0ZXItaW5wdXQtc3BhY2Vye3dpZHRoOi42cmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1udW1lcmljLWZpbHRlci1pbnB1dHt3aWR0aDozLjlyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3Jp''@;'; put 'put ''ZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGV7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gt''@;'; put 'put ''c2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTttYXJnaW4tbGVmdDouM3JlbTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNv''@;'; put 'put ''bnRhaW59YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxl''@;'; put 'put ''IC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUgY2xyLWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDAsICM4YzhjOGMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xl''@;'; put 'put ''OmhvdmVyIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlOmhvdmVyIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0''@;'; put 'put ''YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlci1vcGVuIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlci1vcGVuIGNsci1pY29ue2NvbG9yOiMwMDcy''@;'; put 'put ''YTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNkcy1pY29uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5k''@;'; put 'put ''YXRhZ3JpZC1maWx0ZXItdG9nZ2xlLmRhdGFncmlkLWZpbHRlcmVkIGNsci1pY29ue2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDAsICMwMDcyYTMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXJ7dG9wOjEwMCU7''@;'; put 'put ''cmlnaHQ6MDttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3BhZGRpbmc6LjlyZW07Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZh''@;'; put 'put ''cigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6''@;'; put 'put ''MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9u''@;'; put 'put ''dC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXJ7dG9wOjEwMCU7cmlnaHQ6MDttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hp''@;'; put 'put ''dGUpO3BhZGRpbmc6LjlyZW07Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2Nj''@;'; put 'put ''Y2NjKTtib3JkZXItc3R5bGU6c29saWQ7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1jbG9zZS13cmFwcGVy''@;'; put 'put ''e3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIgLmNsb3Nle2Zsb2F0Om5vbmV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRl''@;'; put 'put ''ciAuZGF0YWdyaWQtZmlsdGVyLWFwcGx5e21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1maXhlZC13aWR0aHtmbGV4OjAgMCBhdXRvfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tZmxleHtk''@;'; put 'put ''aXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25l''@;'; put 'put ''O21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IsICM2NjY2NjYpO3RleHQtYWxpZ246bGVmdDtmbGV4OjEgMSBhdXRvO2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjtkaXNwbGF5OmZsZXh9YnV0dG9uLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQt''@;'; put 'put ''Y29sdW1uLXRpdGxlIC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uLmJ0bntoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29u''@;'; put 'put ''dHJvbC1sYWJlbHttYXJnaW4tdG9wOi0uNDhyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gYnV0dG9uLmRhdGFncmlkLWNvbHVtbi10aXRsZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQt''@;'; put 'put ''Y29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLnNvcnQtaWNvbntjb2xvcjojMDA3MmEzO2NvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwLCAjMDA3MmEzKTttYXJnaW4tbGVmdDphdXRvO2hlaWdodDouN3JlbTt3aWR0aDouN3JlbTt2ZXJ0aWNhbC1hbGlnbjptaWRk''@;'; put 'put ''bGV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3J7cG9zaXRpb246cmVsYXRpdmU7bGVmdDouNnJlbTtmbGV4OjAgMCBhdXRvO3dpZHRoOi4wNXJlbTt3aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO29y''@;'; put 'put ''ZGVyOjEwMDttYXJnaW4tbGVmdDphdXRvO2hlaWdodDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OmNhbGMoMTAwJSArIC42cmVtIC0gLjA1cmVt''@;'; put 'put ''KTt3aWR0aDouMDVyZW07dG9wOi0uMjVyZW07bGVmdDowO2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2Vw''@;'; put 'put ''YXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4taGFuZGxley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNo''@;'; put 'put ''YWRvdzpub25lO2JhY2tncm91bmQ6MCAwO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOi42NXJlbTtyaWdodDotLjNyZW07dG9wOi0uM3JlbTtjdXJzb3I6Y29sLXJlc2l6ZTtoZWlnaHQ6Y2FsYygxMDAlICsgLjZyZW0gLSAuMDVyZW0pO3otaW5kZXg6NTAxfWJ1dHRvbi5kYXRhZ3JpZC10YWJs''@;'; put 'put ''ZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4taGFuZGxle2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4tcmVz''@;'; put 'put ''aXplLXRyYWNrZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0uNnJlbTtkaXNwbGF5Om5vbmU7d2lkdGg6LjA1cmVtO2hlaWdodDowO2JvcmRlci1yaWdodC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM3OWM2ZTY7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci1jb2xvci1h''@;'; put 'put ''Y3Rpb24tMzAwLCAjNzljNmU2KTtib3JkZXItcmlnaHQtd2lkdGg6LjA1cmVtO2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7Y3Vyc29yOmNvbC1yZXNpemV9LmRhdGFncmlkLXRhYmxlIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmRhdGFncmlkLWNvbHVtbi1yZXNpemUtdHJhY2tlci5vbi1hcnJvdy1rZXktcmVzaXple3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLW91dH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdy''@;'; put 'put ''aWQtY29sdW1uLXNlcGFyYXRvciAuZXhjZWVkZWQtbWF4e2JvcmRlci1yaWdodDouMDVyZW0gZG90dGVkIHJnYmEoMjE5LDMzLDAsLjMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdHttYXJnaW46LS4zNnJlbSAw''@;'; put 'put ''O2hlaWdodDoxLjIzNnJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXJ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQt''@;'; put 'put ''Y29sdW1uLmRhdGFncmlkLXNlbGVjdCwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbi5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uLmRhdGFncmlkLXJvdy1hY3Rpb25ze21heC13aWR0aDoxLjlyZW07bWluLXdpZHRoOjEu''@;'; put 'put ''OXJlbX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGx7ZmxleDoxIDEgYXV0bzt0ZXh0LWFsaWduOmxlZnQ7bWluLXdpZHRoOjQuOHJlbTtib3JkZXI6MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZml4ZWQtd2lkdGh7ZmxleDowIDAgYXV0b30uZGF0YWdy''@;'; put 'put ''aWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZml4ZWQtY29sdW1ue2ZsZXg6MCAwIDEuOXJlbTttYXgtd2lkdGg6MS45cmVtO21pbi13aWR0aDoxLjlyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLXJvdy1hY3Rpb25ze2JhY2tncm91bmQ6MCAwfS5k''@;'; put 'put ''YXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmc6LjFyZW0gLjJyZW0gLjE1cmVtO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbDpmb2N1c3tvdXRsaW5lOi13ZWJraXQtZm9jdXMtcmluZy1j''@;'; put 'put ''b2xvciBzb2xpZCAuMXJlbTtvdXRsaW5lLW9mZnNldDotLjFyZW19LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBw''@;'; put 'put ''ZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwfWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZXtjdXJzb3I6cG9pbnRlcn0u''@;'; put 'put ''ZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlIGNsci1pY29ue2NvbG9yOiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlk''@;'; put 'put ''LWljb24tY29sb3IsICM4YzhjOGMpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZTphY3RpdmUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlOmFjdGl2ZSBjbHItaWNvbntj''@;'; put 'put ''b2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlLCAjNjY2NjY2KX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmNsci10b2dnbGUtd3JhcHBlcnttYXJnaW4tdG9wOi0uNjZyZW07cGFkZGluZy10b3A6LjQycmVtfS5kYXRhZ3JpZC10YWJsZSAu''@;'; put 'put ''ZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVye2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLWNvbG9yOiNjY2M7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVy''@;'; put 'put ''LWNvbG9yLCAjY2NjY2NjKTtib3JkZXItdG9wLXdpZHRoOi4wNXJlbTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlcntiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIo''@;'; put 'put ''LS1jbHItdGFibGUtYmdjb2xvciwgd2hpdGUpO2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXIuZGF0YWdyaWQtZW1wdHl7Ym9yZGVyLXRvcDowO3BhZGRpbmc6LjZyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93''@;'; put 'put ''cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtmb250LXNpemU6LjhyZW07Zm9udC1zaXplOnZhcigtLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1mb250LXNpemUsIC44cmVtKTtjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1w''@;'; put 'put ''bGFjZWhvbGRlci1jb2xvciwgI2IzYjNiMyl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlciAuZGF0YWdyaWQtcGxhY2Vob2xkZXItaW1hZ2V7aGVpZ2h0OjNyZW07d2lkdGg6M3JlbTttYXJnaW4tYm90dG9tOi42cmVtO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDti''@;'; put 'put ''YWNrZ3JvdW5kLXNpemU6Y29udGFpbjtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjA2MCUyMDcyJTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUy''@;'; put 'put ''MiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQ2VsbGlwc2UlMjBpZCUzRCUyMnBhdGgtMSUyMiUyMGN4JTNEJTIyMzAlMjIlMjBjeSUzRCUyMjYxLjc2NjY2NjclMjIlMjByeCUzRCUyMjE1LjQ1MTI5MDQlMjIlMjByeSUzRCUyMjQuNzMzMzMzMzMlMjIlM0UlM0MlMkZlbGxpcHNlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTNDbWFzayUyMGlkJTNEJTIybWFzay0yJTIyJTIwbWFza0NvbnRlbnRVbml0cyUzRCUyMnVzZXJTcGFjZU9uVXNlJTIyJTIwbWFza1VuaXRzJTNEJTIyb2JqZWN0Qm91bmRpbmdCb3glMjIlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIzMC45MDI1ODA4''@;'; put 'put ''JTIyJTIwaGVpZ2h0JTNEJTIyOS40NjY2NjY2NyUyMiUyMGZpbGwlM0QlMjJ3aGl0ZSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3VzZSUyMHhsaW5rJTNBaHJlZiUzRCUyMiUyM3BhdGgtMSUyMiUzRSUzQyUyRnVzZSUzRSUwQSUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUzQyUyRm1hc2slM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIyUGFnZS0xJTIyJTIwc3Ryb2tlJTNEJTIybm9uZSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwt''@;'; put 'put ''cnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJBcnRib2FyZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3VzZSUyMGlkJTNEJTIyT3ZhbC0xMCUyMiUyMHN0cm9rZSUzRCUyMiUyM0Mx''@;'; put 'put ''REZFRiUyMiUyMG1hc2slM0QlMjJ1cmwoJTIzbWFzay0yKSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjIuOCUyMiUyMHN0cm9rZS1saW5lY2FwJTNEJTIyc3F1YXJlJTIyJTIwc3Ryb2tlLWRhc2hhcnJheSUzRCUyMjMlMkM2JTJDMyUyQzUlMjIlMjB4bGluayUzQWhyZWYlM0QlMjIlMjNwYXRo''@;'; put 'put ''LTElMjIlM0UlM0MlMkZ1c2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0zOC40NjEzNjQ3JTJDMTguMTY0MjQ1NiUyMEwzMC45ODkwMTM3JTJDMzQuOTE0MTg0NiUyMEwzMSUyQzQ3JTIwTDMyLjU5Nzc3ODMlMkM0Ni41MTY3MjM2''@;'; put 'put ''JTIwTDMyLjU5Nzc3ODMlMkMzNC45MTQxODQ2JTIwTDUxLjA2NzMyMTglMkMxNS43NTYwNDI1JTIwQzUxLjA2NzMyMTglMkMxNS43NTYwNDI1JTIwNDguNjI5NTE2NiUyQzE2LjY1NDI5NjklMjA0NC45NjI4OTA2JTJDMTcuMzM5MjMzNCUyMEM0MS4yOTYyNjQ2JTJDMTguMDI0MTY5OSUyMDM4''@;'; put 'put ''LjQ2MTM2NDclMkMxOC4xNjQyNDU2JTIwMzguNDYxMzY0NyUyQzE4LjE2NDI0NTYlMjBaJTIyJTIwaWQlM0QlMjJQYXRoLTE5NSUyMiUyMGZpbGwlM0QlMjIlMjNDMURGRUYlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUy''@;'; put 'put ''MGQlM0QlMjJNNC43NDYzOTIyNiUyQzEyLjU2NjE4NTUlMjBMNC42MjA2NTcyNiUyQzEyLjE2MDUzNDglMjBMNS4zNTE1NDE0JTJDMTEuMTYyNTA0NCUyMEw1Ljc3NjIyMzg1JTJDMTEuMTU5OTM5JTIwTDYuMjA5MzYzMDklMkMxMi41NTczNDgxJTIwTDQuNzQ2MzkyMjYlMkMxMi41NjYxODU1''@;'; put 'put ''JTIwWiUyME02LjIwOTM2MzA5JTJDMTIuNTU3MzQ4MSUyMEw2LjMyNTQyNjMyJTJDMTIuOTMxNzk1NCUyMEwyOC40OTYzODU1JTJDMzQuODc5NjcxOCUyMEwyOC40OTYzODU1JTJDNDcuODA5NjY5MSUyMEwzMi42JTJDNDYuNDgzNjUxMyUyMEwzMi42JTJDMzQuODk5MjM2NSUyMEw1My45NzM0''@;'; put 'put ''OTQlMkMxMi43MDM1ODEzJTIwTDUzLjk3MzQ5NCUyQzEyLjI2ODgyMDElMjBMNi4yMDkzNjMwOSUyQzEyLjU1NzM0ODElMjBaJTIwTTU1LjM3MzQ5NCUyQzEwLjg2MDMzNzYlMjBMNTUuMzczNDk0JTJDMTMuMjY4MDY2NCUyMEwzNCUyQzM1LjQ2MzcyMTYlMjBMMzQlMkM0Ny41MDI1NDAxJTIw''@;'; put 'put ''TDI3LjA5NjM4NTUlMkM0OS43MzMzMzMzJTIwTDI3LjA5NjM4NTUlMkMzNS40NjM3MjE5JTIwTDUuMDkxNzk2ODglMkMxMy42ODA1NDIlMjBMNC4zMTMyNTMwMSUyQzExLjE2ODc3NjQlMjBMNTUuMzczNDk0JTJDMTAuODYwMzM3NiUyMFolMjIlMjBpZCUzRCUyMlBhdGgtMTQ5JTIyJTIwZmls''@;'; put 'put ''bCUzRCUyMiUyMzdGQkRERCUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NlbGxpcHNlJTIwaWQlM0QlMjJPdmFsLTklMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTIwY3glM0QlMjIzMCUyMiUyMGN5JTNEJTIyMTEuNzg1NjU0''@;'; put 'put ''JTIyJTIwcnglM0QlMjIyNiUyMiUyMHJ5JTNEJTIyNi43ODU2NTQwMSUyMiUzRSUzQyUyRmVsbGlwc2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0zMCUyQzE3LjE3MTMwOCUyMEMzNi44NzcyMTc3JTJDMTcuMTcxMzA4JTIwNDMu''@;'; put 'put ''MzExMjI4MiUyQzE2LjQ2MTA3MDElMjA0OC4wMzEyMzcxJTJDMTUuMjI5MjEwNiUyMEM1MC4yNzc3NjExJTJDMTQuNjQyODk3NyUyMDUyLjA1MDc2MTklMkMxMy45NTc5Njc3JTIwNTMuMjIxNjIzMSUyQzEzLjIzNTQ5NzMlMjBDNTQuMTkzODU2NSUyQzEyLjYzNTU4ODYlMjA1NC42JTJDMTIu''@;'; put 'put ''MTE3NTg5MSUyMDU0LjYlMkMxMS43ODU2NTQlMjBDNTQuNiUyQzExLjQ1MzcxODklMjA1NC4xOTM4NTY1JTJDMTAuOTM1NzE5NCUyMDUzLjIyMTYyMzElMkMxMC4zMzU4MTA3JTIwQzUyLjA1MDc2MTklMkM5LjYxMzM0MDMyJTIwNTAuMjc3NzYxMSUyQzguOTI4NDEwMzQlMjA0OC4wMzEyMzcx''@;'; put 'put ''JTJDOC4zNDIwOTc0NiUyMEM0My4zMTEyMjgyJTJDNy4xMTAyMzc5NSUyMDM2Ljg3NzIxNzclMkM2LjQlMjAzMCUyQzYuNCUyMEMyMy4xMjI3ODIzJTJDNi40JTIwMTYuNjg4NzcxOCUyQzcuMTEwMjM3OTUlMjAxMS45Njg3NjI5JTJDOC4zNDIwOTc0NiUyMEM5LjcyMjIzODg2JTJDOC45Mjg0''@;'; put 'put ''MTAzNCUyMDcuOTQ5MjM4MTQlMkM5LjYxMzM0MDMyJTIwNi43NzgzNzY4OSUyQzEwLjMzNTgxMDclMjBDNS44MDYxNDM1JTJDMTAuOTM1NzE5NCUyMDUuNCUyQzExLjQ1MzcxODklMjA1LjQlMkMxMS43ODU2NTQlMjBDNS40JTJDMTIuMTE3NTg5MSUyMDUuODA2MTQzNSUyQzEyLjYzNTU4ODYl''@;'; put 'put ''MjA2Ljc3ODM3Njg5JTJDMTMuMjM1NDk3MyUyMEM3Ljk0OTIzODE0JTJDMTMuOTU3OTY3NyUyMDkuNzIyMjM4ODYlMkMxNC42NDI4OTc3JTIwMTEuOTY4NzYyOSUyQzE1LjIyOTIxMDYlMjBDMTYuNjg4NzcxOCUyQzE2LjQ2MTA3MDElMjAyMy4xMjI3ODIzJTJDMTcuMTcxMzA4JTIwMzAlMkMx''@;'; put 'put ''Ny4xNzEzMDglMjBaJTIwTTMwJTJDMTguNTcxMzA4JTIwQzE1LjY0MDU5NjUlMkMxOC41NzEzMDglMjA0JTJDMTUuNTMzMjY3MiUyMDQlMkMxMS43ODU2NTQlMjBDNCUyQzguMDM4MDQwNzglMjAxNS42NDA1OTY1JTJDNSUyMDMwJTJDNSUyMEM0NC4zNTk0MDM1JTJDNSUyMDU2JTJDOC4wMzgw''@;'; put 'put ''NDA3OCUyMDU2JTJDMTEuNzg1NjU0JTIwQzU2JTJDMTUuNTMzMjY3MiUyMDQ0LjM1OTQwMzUlMkMxOC41NzEzMDglMjAzMCUyQzE4LjU3MTMwOCUyMFolMjIlMjBpZCUzRCUyMk92YWwtOS1Db3B5JTIyJTIwZmlsbCUzRCUyMiUyMzdGQkRERCUyMiUzRSUzQyUyRnBhdGglM0UlMEElMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwZCUzRCUyMk0xOC4yNjA4NjQzJTJDNy4xNDU2Mjk4OCUyMEwyMi43MjczNTYlMkMxNi45MDQ3MjQxJTIwQzIyLjcyNzM1NiUyQzE2LjkwNDcyNDElMjAxNS4zMDA2NTkyJTJDMTYuMzkxMTc0MyUyMDEwLjI3NjAwMSUyQzE0''@;'; put 'put ''Ljc1MTE1OTclMjBDNS4yNTEzNDI3NyUyQzEzLjExMTE0NSUyMDUuMzgwMzEwMDYlMkMxMS44Mjg0MzAyJTIwNS4zODAzMTAwNiUyQzExLjY4ODI5MzUlMjBDNS4zODAzMTAwNiUyQzEwLjQ4MzI4MzElMjA4LjE2NjMzMTUyJTJDOS40MTg3NzcxNiUyMDExLjExNDU2MyUyQzguNTczMjQyMTkl''@;'; put 'put ''MjBDMTQuNTQ5MzE5JTJDNy41ODgxNzQ5MiUyMDE4LjI2MDg2NDMlMkM3LjE0NTYyOTg4JTIwMTguMjYwODY0MyUyQzcuMTQ1NjI5ODglMjBaJTIyJTIwaWQlM0QlMjJQYXRoLTE5NiUyMiUyMGZpbGwlM0QlMjIlMjNDMURGRUYlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTNDJTJGZyUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElM0MlMkZzdmclM0UiKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWhpZGRlbi1jb2x1bW4uZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtaGlkZGVuLWNvbHVtbi5kYXRhZ3Jp''@;'; put 'put ''ZC1jZWxse2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1zY3JvbGxpbmctY2VsbHMgLmRhdGFncmlkLWNlbGw6bm90KC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0KTpub3QoLmRhdGFncmlkLXJvdy1hY3Rpb25zKTpub3QoLmRhdGFncmlkLXNlbGVjdCl7''@;'; put 'put ''ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1kZXRhaWwgLmRhdGFncmlkLWNlbGx7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDouNTVyZW19LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbC5k''@;'; put 'put ''YXRhZ3JpZC1oaWRkZW4tY29sdW1ue2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmctdG9wOi4xcmVtfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1kZXRh''@;'; put 'put ''aWwuZGF0YWdyaWQtY29udGFpbmVye2JvcmRlci10b3A6LjA1cmVtIHNvbGlkICNjY2N9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbC5kYXRhZ3JpZC1jb250YWluZXIgLmRhdGFncmlkLWNlbGx7Ym9yZGVyLXRvcDpub25lfS5kYXRhZ3JpZC1mb290ZXJ7Zmxl''@;'; put 'put ''eDowIDAgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6c3RyZXRjaDtwYWRkaW5nOjAgLjZyZW07bGluZS1oZWlnaHQ6MS42NXJlbTtmb250LXNpemU6LjU1cmVtO2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yLCAjZmFmYWZhKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZS1mb290ZXItYm9yZGVyLXRvcC1jb2xvciwgI2NjY2NjYyk7Ym9yZGVy''@;'; put 'put ''LXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1j''@;'; put 'put ''bHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4xNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb257ZGlzcGxh''@;'; put 'put ''eTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bGluZS1oZWlnaHQ6MS44cmVtfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tc2l6ZXtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87d2hpdGUtc3BhY2U6bm93cmFw''@;'; put 'put ''O3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXplIC5jbHItc2VsZWN0LXdyYXBwZXI6YWZ0ZXJ7dG9wOi42cmVtfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tc2l6ZSAuY2xyLXBhZ2Utc2l6ZS1zZWxlY3R7Zm9udC1zaXplOjEwMCU7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6LjZyZW07aGVpZ2h0OjEuMnJlbTtsaW5lLWhlaWdodDoxLjJyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb24tc2l6ZSsucGFnaW5hdGlvbi1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDoxLjJyZW19LmRhdGFncmlkLWZvb3RlciAucGFn''@;'; put 'put ''aW5hdGlvbi1kZXNjcmlwdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXB9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1saXN0e21hcmdpbi1sZWZ0OjEuMnJlbTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlcntw''@;'; put 'put ''b3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb257bWluLXdpZHRoOi45cmVtO3BhZGRpbmctbGVmdDouM3JlbTtwYWRk''@;'; put 'put ''aW5nLXJpZ2h0Oi4zcmVtO3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7Ym9yZGVyLWNvbG9yOiM4YzhjOGM7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJvcmRlci1jb2xvciwgIzhjOGM4Yyk7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvciwgI2ZhZmFmYSk7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWNvbG9yLCAjNjY2NjY2KX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNo''@;'; put 'put ''LXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpob3Zlcntib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWhvdmVyLWNvbG9yLCAjNjY2NjY2KTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1maWxsLWhvdmVyLWNvbG9yLCB3aGl0ZSk7Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWhvdmVyLWNvbG9yLCBibGFjayl9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3''@;'; put 'put ''aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb246YWN0aXZlLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmZvY3Vze2JveC1zaGFkb3c6bm9uZTtib3JkZXItY29sb3I6IzY2Njtib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWFjdGl2ZS1jb2xvciwgIzY2NjY2Nik7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1hY3RpdmUtY29sb3IsICNmMmYyZjIpO2NvbG9y''@;'; put 'put ''OiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtdGV4dC1hY3RpdmUtY29sb3IsICM2NjY2NjYpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaHtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZh''@;'; put 'put ''cigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRh''@;'; put 'put ''Z3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAu''@;'; put 'put ''MTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KSk7cGFkZGluZzouOXJlbTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcDpub25lO3dpZHRoOjEyLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0''@;'; put 'put ''aW9uOmNvbHVtbjt6LWluZGV4OjEwNTB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudHttYXgtaGVpZ2h0OjE1cmVtO292ZXJmbG93LXk6YXV0bzttaW4taGVpZ2h0OjIuNHJlbX0uZGF0YWdyaWQtZm9vdGVyIC5j''@;'; put 'put ''b2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2h7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdy''@;'; put 'put ''aWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1j''@;'; put 'put ''b2xvciwgI2NjY2NjYyk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtICM4YzhjOGM0MDtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSB2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdy1jb2xvciwgcmdiYSgxNDAsIDE0MCwgMTQwLCAu''@;'; put 'put ''MjUpKTtwYWRkaW5nOi45cmVtO3dpZHRoOjEyLjVyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt6LWluZGV4OjEwNTB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVye2Rpc3BsYXk6ZmxleDtq''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOi44cmVtO3BhZGRpbmctYm90dG9tOi42cmVtO2xpbmUtaGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1o''@;'; put 'put ''ZWFkZXIgYnV0dG9ue21pbi13aWR0aDouOXJlbTttYXJnaW46MDtwYWRkaW5nOjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbiBjZHMtaWNvbntjb2xvcjojYjNiM2IzO2NvbG9yOnZhcigtLWNsci1k''@;'; put 'put ''YXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yLCAjYjNiM2IzKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9uIGNkcy1pY29uOmhvdmVye2NvbG9yOiMwMDcyYTM7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtaG92ZXItY29sb3IsICMwMDcyYTMpfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnR7bWF4LWhlaWdodDoxNXJlbTtvdmVyZmxvdy15OmF1''@;'; put 'put ''dG87bWluLWhlaWdodDoxLjI1cmVtfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnQgbGl7bGluZS1oZWlnaHQ6MS4ycmVtO3BhZGRpbmctbGVmdDouMXJlbX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNo''@;'; put 'put ''LXdyYXBwZXIgLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1mb290ZXIgLmJ0bnttYXJnaW46MDtwYWRkaW5nOjB9LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtZm9vdGVyIC5hY3Rpb24tcmlnaHR7ZGlzcGxheTpmbGV4O2p1c3Rp''@;'; put 'put ''ZnktY29udGVudDpmbGV4LWVuZH0uZGF0YWdyaWQtZm9vdGVyIC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMCV9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNo''@;'; put 'put ''ZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHtjdXJzb3I6ZGVmYXVsdDttYXJnaW4tcmlnaHQ6LjQ1cmVtfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5kYXRhZ3JpZC1mb290ZXItc2VsZWN0LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5''@;'; put 'put ''cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6IzhjOGM4YztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCwgIzhjOGM4Yyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3Qu''@;'; put 'put ''Y2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntib3JkZXItbGVmdC1jb2xvcjojZmZmO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTAsIHdoaXRlKTtib3JkZXItYm90dG9tLWNvbG9yOiNmZmY7Ym9y''@;'; put 'put ''ZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0wLCB3aGl0ZSl9LmRhdGFncmlkLXNwaW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7dG9wOi42cmVtO2hl''@;'; put 'put ''aWdodDpjYWxjKDEwMCUgLSAuNnJlbSk7YmFja2dyb3VuZC1jb2xvcjojZmZmOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1sb2FkaW5nLWJhY2tncm91bmQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpKTt6LWluZGV4OjU5MH0uZGF0YWdyaWQtc2VsZWN0IC5jbHItY29u''@;'; put 'put ''dHJvbC1sYWJlbHttaW4taGVpZ2h0Oi42cmVtO21hcmdpbi10b3A6LS4yNHJlbTtwYWRkaW5nLWxlZnQ6LjdyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWhlYWRlcnttaW4taGVpZ2h0OjEuMnJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1j''@;'; put 'put ''b2x1bW4tc2VwYXJhdG9yOmFmdGVye2hlaWdodDpjYWxjKDEwMCUgKyAuMjVyZW0pO3RvcDpjYWxjKC0uMjUqLjZyZW0gKyAuMDVyZW0pfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jZWxsIGNsci1pY29ue21hcmdpbi10b3A6LS4ycmVtO21hcmdpbi1ib3R0b206LS4xNXJlbTt0cmFu''@;'; put 'put ''c2Zvcm06dHJhbnNsYXRlWSgtLjA1cmVtKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtY2VsbCBjZHMtaWNvbnttYXJnaW4tdG9wOi0uMnJlbTttYXJnaW4tYm90dG9tOi0uMTVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGwgLmJhZGdle21hcmdpbi10b3A6LS4xNXJl''@;'; put 'put ''bTttYXJnaW4tYm90dG9tOi0uMDVyZW19LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7dGV4dC1hbGlnbjpjZW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDouMTVyZW19LmRhdGFn''@;'; put 'put ''cmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjow''@;'; put 'put ''O3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2hlaWdodDoxLjJyZW07d2lkdGg6MS4ycmVtO291dGxpbmUtb2Zmc2V0Oi0uMnJlbX1idXR0b24uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJl''@;'; put 'put ''dCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbnttYXJnaW46MH0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQt''@;'; put 'put ''ZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jZWxse3BhZGRpbmc6MH0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jb2x1bW57cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRh''@;'; put 'put ''Z3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJpZ2dlciBjZHMtaWNvbjpub3QoW3NoYXBlPWluZm8tY2lyY2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tdHJpYW5nbGVdLFtzaGFwZT1leGNsYW1hdGlvbi1jaXJjbGVdLFtzaGFwZT1jaGVjay1jaXJjbGVdLFtzaGFw''@;'; put 'put ''ZT1pbmZvXSxbc2hhcGU9ZXJyb3JdKSwuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXIgY2xyLWljb246bm90KFtzaGFwZT1pbmZvLWNpcmNsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXSxbc2hhcGU9''@;'; put 'put ''ZXhjbGFtYXRpb24tY2lyY2xlXSxbc2hhcGU9Y2hlY2stY2lyY2xlXSxbc2hhcGU9aW5mb10sW3NoYXBlPWVycm9yXSl7aGVpZ2h0OjEuMDVyZW07d2lkdGg6MS4wNXJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVye3BhZGRpbmc6MCAuNnJlbTtsaW5lLWhlaWdodDoxLjE1''@;'; put 'put ''cmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLnBhZ2luYXRpb257bGluZS1oZWlnaHQ6MS4ycmVtfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9ue21hcmdpbjowO291dGxp''@;'; put 'put ''bmUtb2Zmc2V0Oi0uMnJlbX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyIC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5kYXRhZ3JpZC1mb290ZXItc2VsZWN0LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7dG9wOjB9''@;'; put 'put ''LmRhdGFncmlkLWZvb3Rlci1kZXNjcmlwdGlvbntmbGV4OjEgMSBhdXRvO2ZsZXgtd3JhcDpub3dyYXA7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpyaWdodDttYXJnaW46YXV0byAwfS5wYWdpbmF0aW9uLWxpc3R7bGlzdC1zdHlsZTpub25lO2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtmbGV4LWZsb3c6cm93IG5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50e2JhY2tncm91bmQ6MCAwO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci1mb3Jtcy10ZXh0YXJlYS1iYWNrZ3JvdW5kLWNvbG9yLCB3aGl0ZSk7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lk''@;'; put 'put ''dGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtsaW5lLWhlaWdodDoxLjJyZW07Zm9udC1zaXplOi41''@;'; put 'put ''NXJlbTttaW4td2lkdGg6MS4ycmVtO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50OmZvY3VzLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tY3VycmVudC5jbHItZm9jdXN7YmFja2dyb3Vu''@;'; put 'put ''ZDowIDA7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6IzQ5YWVkYTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yLCAjNDlhZWRhKTtib3gtc2hhZG93OjAgMCAuMDVyZW0gIzQ5YWVkYTtib3gtc2hhZG93''@;'; put 'put ''OjAgMCB2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pIHZhcigtLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1mb2N1cy1jb2xvciwgIzQ5YWVkYSl9LnBhZ2luYXRpb24tbGlzdD4qe3BhZGRpbmc6MCAuMTJyZW19LnBhZ2luYXRpb24tbGlzdCAucGFn''@;'; put 'put ''aW5hdGlvbi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3QsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91cywucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLXJl''@;'; put 'put ''cGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdDpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3Q6ZGlzYWJsZWQsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91czpk''@;'; put 'put ''aXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHQ6ZGlzYWJsZWR7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1idG4tZGlzYWJsZWQtY29sb3IsICM4YzhjOGMpO29wYWNpdHk6LjU2O29wYWNpdHk6dmFyKC0tY2xyLWRhdGFn''@;'; put 'put ''cmlkLXBhZ2luYXRpb24tYnRuLWRpc2FibGVkLW9wYWNpdHksIC41Nil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLXByZXZpb3Vze21hcmdpbi1yaWdodDouNnJlbX0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxh''@;'; put 'put ''c3QsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1uZXh0e21hcmdpbi1sZWZ0Oi42cmVtfS5wYWdpbmF0aW9uLWxpc3QgYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21h''@;'; put 'put ''cmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWNvbG9yLCAjNjY2NjY2KTtjdXJzb3I6cG9pbnRlcn1idXR0b24ucGFn''@;'; put 'put ''aW5hdGlvbi1saXN0IGJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtY2VsbC13aWR0aC16ZXJve2JvcmRlcjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3dpZHRoOjA7ZmxleDowIDAgYXV0byFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O2Rpc3BsYXk6Ymxv''@;'; put 'put ''Y2shaW1wb3J0YW50fS5kYXRhZ3JpZC1vdXRlci13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0b30uZGF0YWdyaWQtaW5uZXItd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZ3Jvdzox''@;'; put 'put ''O292ZXJmbG93OmF1dG87bWluLXdpZHRoOjEycmVtfS5kYXRhZ3JpZC1kZXRhaWwtb3Blbj4uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcj4uZGF0YWdyaWQtaW5uZXItd3JhcHBlciBkaXYuZGF0YWdyaWQtdGFibGV7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5kYXRhZ3JpZC1kZXRh''@;'; put 'put ''aWwtb3Blbj4uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcj4uZGF0YWdyaWQtaW5uZXItd3JhcHBlciBjbHItZGctY2VsbHt3aWR0aDoxMDAlIWltcG9ydGFudH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4+LmRhdGFncmlkLW91dGVyLXdyYXBwZXI+LmRhdGFncmlkLWlubmVyLXdyYXBwZXIgY2xyLWRn''@;'; put 'put ''LWNvbHVtbjpmaXJzdC1jaGlsZHt3aWR0aDphdXRvIWltcG9ydGFudH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXJpZ2h0Om5vbmV9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1pbm5lci13cmFwcGVye3dp''@;'; put 'put ''ZHRoOjM0JX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNvbnRhaW5lciwuZGF0YWdyaWQtZGV0YWlsLW9wZW4gLmRhdGFncmlkLXJvd3tib3JkZXItcmlnaHQ6LjA1cmVtIHNvbGlkICNjY2N9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1mb290''@;'; put 'put ''ZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb257d2lkdGg6MTAwJX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb24tZGVzY3JpcHRpb24tY29tcGFjdHt0ZXh0LWFsaWduOmxlZnQ7ZmxleDoxfS5kYXRhZ3JpZC1k''@;'; put 'put ''ZXRhaWwtb3BlbiAuZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLWxpc3R7bWFyZ2luLXJpZ2h0OjB9LmRhdGFncmlkLXJvdy1kZXRhaWwtb3Blbntwb3NpdGlvbjpyZWxhdGl2ZX0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVuOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJs''@;'; put 'put ''b2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjouNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IsICNjY2NjY2MpO3RvcDou''@;'; put 'put ''NXJlbTtyaWdodDowfS5kYXRhZ3JpZC1yb3ctZGV0YWlsLW9wZW46YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6LjQ1cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjojZmZmO2JvcmRlci1yaWdodC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO3RvcDouNTVyZW07cmlnaHQ6LS4wNXJlbX0uZGF0YWdyaWQtZGV0YWlsLXBhbmV7bWFyZ2luLXRvcDouNnJlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJv''@;'; put 'put ''cmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRlZmF1bHQtYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3JkZXItbGVmdDpub25lO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJl''@;'; put 'put ''bTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRpdXMsIC4xNXJlbSk7''@;'; put 'put ''YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jaztmbGV4LWdyb3c6Mjt3aWR0aDo2NiV9LmRhdGFncmlkLWRldGFpbC1wYW5lLWNvbnRlbnR7ZGlzcGxheTpmbGV4''@;'; put 'put ''O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzphdXRvO2hlaWdodDoxMDAlfS5kYXRhZ3JpZC1kZXRhaWwtYm9keXtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MCAxLjJyZW19LmRhdGFncmlkLWRldGFpbC1oZWFkZXJ7ZmxleDowIDAgYXV0bztmb250LXNpemU6LjlyZW07bGluZS1oZWln''@;'; put 'put ''aHQ6MS42OHJlbTtwYWRkaW5nLWxlZnQ6MS4ycmVtO21hcmdpbi10b3A6MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyLXRpdGxle2ZsZXg6MSAxIGF1dG87cGFkZGluZy10b3A6LjhyZW19LmRh''@;'; put 'put ''dGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1wYW5lLWNsb3Nle2ZsZXg6MSAxIDEuOHJlbTtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZGF0YWdyaWQtZGV0YWlsLWhlYWRlciAuZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2Ug''@;'; put 'put ''LmJ0bi5idG4tbGlua3ttYXJnaW4tdG9wOi44cmVtO21hcmdpbi1ib3R0b206MDtwYWRkaW5nLXJpZ2h0OjB9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1wYW5lLWNsb3NlIC5idG4uYnRuLWxpbmsgY2RzLWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItbW9kYWwtY2xvc2UtY29sb3IsICM4YzhjOGMpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXR7cGFkZGluZzowO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQuZGF0YWdyaWQtY2VsbHtwYWRkaW5nOi4zcmVtIC40NXJlbX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5k''@;'; put 'put ''YXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRv''@;'; put 'put ''dzpub25lO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6LjFyZW0gLjJyZW0gLjE1cmVtfWJ1dHRvbi5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0''@;'; put 'put ''YWdyaWQtZGV0YWlsLWNhcmV0LWJ1dHRvbi5pcy1vcGVue2JhY2tncm91bmQtY29sb3I6IzAwNzJhMztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbi1vcGVuLWJnLWNvbG9yLCAjMDA3MmEzKTtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXIt''@;'; put 'put ''cmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24uaXMtb3BlbiAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb257Y29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1jbHItZGF0''@;'; put 'put ''YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1pY29uLWNvbG9yLCB3aGl0ZSl9LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb257Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtaWNvbi1jb2xvciwgIzhjOGM4Yyk7bWFyZ2lu''@;'; put 'put ''LXRvcDouMXJlbX0uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5zcGlubmVye21hcmdpbi10b3A6LjNyZW19LmRhdGFncmlkLWRldGFpbC1jYXJldC5kYXRhZ3JpZC1jb2x1bW57cGFkZGluZzouNTVyZW0gLjZyZW19LmRhdGFncmlkLWRldGFpbC1vdmVybGF5LmRhdGFncmlkLWRldGFpbC1vcGVu''@;'; put 'put ''Pi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVye2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtZGV0YWlsLW92ZXJsYXkgLmRhdGFncmlkLWRldGFpbC1wYW5le2JvcmRlci1sZWZ0Oi4wNXJlbSBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6LjE1cmVtfUBtZWRp''@;'; put 'put ''YSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5kYXRhZ3JpZC1kZXRhaWwtb3Blbj4uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcj4uZGF0YWdyaWQtaW5uZXItd3JhcHBlcntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLWRldGFpbC1wYW5le2JvcmRlci1sZWZ0Oi4wNXJlbSBzb2xpZCAjY2Nj''@;'; put 'put ''O2JvcmRlci1yYWRpdXM6LjE1cmVtfX0uY29sdW1uLXN3aXRjaHtib3JkZXItcmFkaXVzOi4xNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzLCAuMTVyZW0pO3BhZGRpbmc6LjlyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYmctY29sb3IsIHdoaXRlKTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEo''@;'; put 'put ''MTQwLCAxNDAsIDE0MCwgLjI1KSk7d2lkdGg6MTIuNXJlbTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3otaW5kZXg6MTA1MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Zm9udC13ZWln''@;'; put 'put ''aHQ6NDAwO2ZvbnQtc2l6ZTouOHJlbTtwYWRkaW5nLWJvdHRvbTouNnJlbTtsaW5lLWhlaWdodDoxLjJyZW19LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDEsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDIsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDMsLmNv''@;'; put 'put ''bHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDQsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDUsLmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgaDZ7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDEtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNp''@;'; put 'put ''emU6LjhyZW07bGluZS1oZWlnaHQ6MS4ycmVtO21hcmdpbjowfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbnttaW4td2lkdGg6LjlyZW07bWFyZ2luOjA7cGFkZGluZzowfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbiBjZHMtaWNvbntjb2xvcjojYjNi''@;'; put 'put ''M2IzO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWNvbG9yLCAjYjNiM2IzKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b24gY2RzLWljb246aG92ZXJ7Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29s''@;'; put 'put ''dW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvciwgIzAwNzJhMyl9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1jb250ZW50e21heC1oZWlnaHQ6MTVyZW07b3ZlcmZsb3cteTphdXRvO21pbi1oZWlnaHQ6MS4yNXJlbX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnQgbGl7bGlu''@;'; put 'put ''ZS1oZWlnaHQ6MS4ycmVtO3BhZGRpbmctbGVmdDouMXJlbX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYnRue21hcmdpbjowO3BhZGRpbmc6MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYWN0aW9uLXJpZ2h0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Zmxl''@;'; put 'put ''eC1lbmR9LmRhdGFncmlkLWZpbHRlcnttYXJnaW4tdG9wOi4yNHJlbTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9y''@;'; put 'put ''ZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IsICNjY2NjY2MpO3BhZGRpbmc6LjlyZW07Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gIzhjOGM4''@;'; put 'put ''YzQwO2JveC1zaGFkb3c6MCAuMDVyZW0gLjE1cmVtIHZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93LWNvbG9yLCByZ2JhKDE0MCwgMTQwLCAxNDAsIC4yNSkpO2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJyYWRp''@;'; put 'put ''dXMsIC4xNXJlbSk7Zm9udC13ZWlnaHQ6NDAwfS5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1jbG9zZS13cmFwcGVye3RleHQtYWxpZ246cmlnaHR9LmRhdGFncmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWNsb3NlLXdyYXBwZXIgLmNsb3Nle2Zsb2F0Om5vbmV9LmRhdGFn''@;'; put 'put ''cmlkLWZpbHRlciAuZGF0YWdyaWQtZmlsdGVyLWFwcGx5e21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yLCB3aGl0ZSk7''@;'; put 'put ''cGFkZGluZzouM3JlbTttYXJnaW4tbGVmdDouM3JlbTtib3JkZXItd2lkdGg6LjA1cmVtO2JvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWRh''@;'; put 'put ''dGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKTtib3gtc2hhZG93OjAgLjA1cmVtIC4xNXJlbSAjOGM4YzhjNDA7Ym94LXNoYWRvdzowIC4wNXJlbSAuMTVyZW0gdmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3ctY29sb3IsIHJnYmEoMTQwLCAxNDAsIDE0''@;'; put 'put ''MCwgLjI1KSk7Ym9yZGVyLXJhZGl1czouMTVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cywgLjE1cmVtKTtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IiI7cG9z''@;'; put 'put ''aXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjNyZW07Ym9yZGVyOi4zcmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjAgbm9uZTtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItcmlnaHQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWRhdGFncmlkLXBvcG92ZXItYm9yZGVyLWNvbG9yLCAjY2NjY2NjKX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLXRvcDotLjI1cmVtO2Jv''@;'; put 'put ''cmRlci1yaWdodDouMjVyZW0gc29saWQgI2ZmZjtib3JkZXItdG9wOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbXtjb2xvcjojNjY2O2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci1kcm9wZG93bi10ZXh0LWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjdyZW07bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4xNXJlbTttYXJnaW46MDtwYWRkaW5nOi4w''@;'; put 'put ''NXJlbSAxLjJyZW0gMDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6MTAwJX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpob3ZlciwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3IsICNlOGU4ZTgpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLCAjZThlOGU4KTtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvciwgYmxhY2spfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6''@;'; put 'put ''MH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZCwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6''@;'; put 'put ''bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRl''@;'; put 'put ''bS5kaXNhYmxlZDphY3RpdmUsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVt''@;'; put 'put ''OmRpc2FibGVkOmZvY3Vze2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjZHMtaWNvbiwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjbHItaWNvbnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7''@;'; put 'put ''dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTFweCwwKX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZXtkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZCwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxh''@;'; put 'put ''dGUtbW9kZSAuZGF0YWdyaWQtZm9vdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctbWFzdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctY2xpY2thYmxle2Rpc3BsYXk6bm9uZX0uZGF0''@;'; put 'put ''YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGV7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6YXV0b30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRh''@;'; put 'put ''dGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlcntkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlciAuZGF0YWdyaWQtY29sdW1u''@;'; put 'put ''e2Rpc3BsYXk6dGFibGUtY2VsbDttaW4td2lkdGg6NC44cmVtfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24taGVhZGVyIC5kYXRhZ3JpZC1jb2x1bW57Ym9yZGVyLWNvbG9yOiNl''@;'; put 'put ''OGU4ZTg7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvciwgI2U4ZThlOCk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1zdHlsZTpzb2xpZDtwYWRkaW5nOi41NXJlbSAu''@;'; put 'put ''NnJlbTt2ZXJ0aWNhbC1hbGlnbjp0b3A7Y29sb3I6IzY2Njtjb2xvcjp2YXIoLS1jbHItcDYtY29sb3IsICM2NjY2NjYpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtYm9sZCwgNjAwKTtmb250LXNpemU6LjU1cmVtO2xldHRlci1zcGFjaW5nOi4w''@;'; put 'put ''M2VtO2xpbmUtaGVpZ2h0Oi42cmVtO21hcmdpbi10b3A6MS4ycmVtO21hcmdpbi1ib3R0b206MH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLXJvd3tkaXNwbGF5OnRhYmxlLXJvd30uZGF0YWdyaWQt''@;'; put 'put ''aG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGw7bWluLXdpZHRoOjQuOHJlbTtmb250LXNpemU6LjY1cmVtO2xpbmUtaGVpZ2h0Oi43cmVtO3BhZGRpbmc6''@;'; put 'put ''LjU1cmVtIC42cmVtO3ZlcnRpY2FsLWFsaWduOnRvcH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciwuZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFp''@;'; put 'put ''bmVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1maXhlZC1jb2x1bW57ZGlzcGxheTpub25lfS5mYWRle29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0O3dpbGwtY2hhbmdlOm9wYWNpdHl9LmZhZGUuaW57b3BhY2l0''@;'; put 'put ''eToxfS5mYWRlRG93bntvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLWluLW91dCx0cmFuc2Zvcm0gLjJzIGVhc2UtaW4tb3V0O3dpbGwtY2hhbmdlOm9wYWNpdHksdHJhbnNmb3JtfS5mYWRlRG93bi5pbntvcGFjaXR5OjE7''@;'; put 'put ''dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0ub2Zmc2NyZWVuLWZvY3VzLXJlYm91bmRlcntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LWNvbnZlcnRC''@;'; put 'put ''YXNlbGluZVRvQmFzZTIwKDEpIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLWNvbnZlcnRCYXNlbGluZVRvQmFzZTIwKDEpIDAhaW1wb3J0YW50O3Zpc2liaWxpdHk6''@;'; put 'put ''dmlzaWJsZSFpbXBvcnRhbnR9OnJvb3R7LS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1uYXYtYWN0aXZlLWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2xyLWNvbG9yLWFjdGlvbi02MDApOy0tY2xyLW5hdi1hY3RpdmUtYmctY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWdsb2JhbC1zZWxlY3Rpb24tY29sb3IpOy0tY2xyLW5hdi1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItc2lkZW5hdi1saW5rLWhvdmVyLWNvbG9yKTstLWNsci1uYXYtbGluay1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC03MDApOy0tY2xyLW5hdi1saW5rLWFj''@;'; put 'put ''dGl2ZS1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci1uYXYtbGluay1mb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQpOy0tY2xyLW5hdi1saW5rLWFjdGl2ZS1mb250LXdlaWdodDp2YXIoLS1jbHItbmF2LWxpbmstZm9udC13ZWlnaHQpfUBtZWRp''@;'; put 'put ''YSBzY3JlZW57c2VjdGlvblthcmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9fVtkYXRhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9YnV0dG9uLm5hdi1saW5re2JvcmRlci1yYWRpdXM6MDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO21pbi13aWR0aDowfS50YWJzLW92ZXJmbG93''@;'; put 'put ''e3Bvc2l0aW9uOnJlbGF0aXZlfS50YWJzLW92ZXJmbG93IC5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MH0udGFiLWNvbnRlbnR7ZGlzcGxheTppbmxpbmV9XzotbXMtZnVsbHNjcmVlbiAudGFiLWNvbnRlbnQsOnJvb3QgLnRhYi1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEw''@;'; put 'put ''MCV9LnRhYnMtdmVydGljYWx7ZGlzcGxheTpmbGV4fS50YWJzLXZlcnRpY2FsPi5uYXZ7aGVpZ2h0OmF1dG87Ym94LXNoYWRvdzpub25lO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNoO21hcmdpbi1yaWdodDoxLjJyZW07b3ZlcmZsb3c6YXV0bztmbGV4LXNocmlu''@;'; put 'put ''azowO3BhZGRpbmc6LjJyZW07d2lkdGg6MTJyZW07bWluLXdpZHRoOjIuNHJlbX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGlua3t0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzowIC42cmVtO2JvcmRlcjowO21hcmdpbi1ib3R0b206LjA1cmVtO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXRvcDow''@;'; put 'put ''O21hcmdpbi1sZWZ0OjA7d2lkdGg6MTAwJX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5uYXYtaXRlbXttYXJnaW4tcmlnaHQ6MH0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5hY3RpdmUsLnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbms6aG92ZXJ7Ym94LXNoYWRvdzpp''@;'; put 'put ''bnNldCAuMTVyZW0gMCAjMDA3MmEzO2JveC1zaGFkb3c6aW5zZXQgLjE1cmVtIDAgMCB2YXIoLS1jbHItbmF2LWFjdGl2ZS1ib3gtc2hhZG93LWNvbG9yKX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZDhlM2U5O2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLW5hdi1hY3RpdmUtYmctY29sb3IsICNkOGUzZTkpfS50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5rOm5vdCguYWN0aXZlKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbmF2LWhvdmVyLWJnLWNvbG9yLCAj''@;'; put 'put ''ZThlOGU4KX06cm9vdHstLWNsci13aXphcmQtbWFpbi1iZ2NvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTApOy0tY2xyLXdpemFyZC1zaWRlbmF2LWJnY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTApOy0tY2xyLXdpemFyZC1tYWluLXRleHRDb2xvcjp2YXIoLS1jbHItY29s''@;'; put 'put ''b3Itb24tbmV1dHJhbC0wKTstLWNsci13aXphcmQtc2lkZW5hdi10ZXh0OnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTkwMCk7LS1jbHItd2l6YXJkLXNpZGVuYXYtdGV4dC0tYWN0aXZlOnZhcigtLWNsci1nbG9iYWwtb24tc2VsZWN0aW9uLWNvbG9yKTstLWNsci13aXphcmQtdGl0bGUtdGV4''@;'; put 'put ''dDp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC0xMDAwKTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItc2l6ZTouMnJlbTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwKTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29s''@;'; put 'put ''b3ItLWFjdGl2ZTp2YXIoLS1jbHItY29sb3Itc3VjY2Vzcy00MDApOy0tY2xyLXdpemFyZC1zdGVwbmF2LWFjdGl2ZS1iZ2NvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJh''@;'; put 'put ''bC02MDApOy0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uLWNvbG9yLS1ob3ZlcmVkOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTEwMDApOy0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzOnZhcigtLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzKTstLWNsci13aXphcmQtc3RlcG5hdi1hY3RpdmUt''@;'; put 'put ''Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMpOy0tY2xyLXdpemFyZC1zdGVwLW5hdi1ib3JkZXItY29sb3I6aHNsKDAsIDAlLCA4OSUpOy0tY2xyLXdpemFyZC1ib3gtc2hhZG93LWNvbG9yOnJnYmEoMCwgMCwgMCwgLjIpfS5jbHItd2l6YXJkIC5tb2RhbC1k''@;'; put 'put ''aWFsb2d7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNoYWRvdzowIC4wNXJlbSAuMXJlbSAuMXJlbSAjMDAwMztib3gtc2hhZG93OjAgLjA1cmVtIC4xcmVtIC4xcmVtIHZhcigtLWNsci13aXphcmQtYm94LXNoYWRvdy1jb2xvcik7''@;'; put 'put ''aGVpZ2h0OjUwJTttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4xNXJlbTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cywgLjE1cmVtKTtib3gtc2hhZG93Om5vbmU7cGFkZGluZzowO2ZsZXg6MiAyIGF1dG87d2lkdGg6NjYlO2hlaWdodDppbml0aWFs''@;'; put 'put ''O292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci13aXphcmQgLm1vZGFsLWhlYWRlciwuY2xyLXdpemFyZCAubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJTtw''@;'; put 'put ''YWRkaW5nOjEuMnJlbSAuOTVyZW0gLjNyZW0gMS4ycmVtfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtdGl0bGUtdGV4dCwgYmxhY2spO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2lkdGg6MTAwJTtsaW5lLWhlaWdo''@;'; put 'put ''dDoxLjM1NnJlbTttYXJnaW4tdG9wOi0uMTU2cmVtfS5jbHItd2l6YXJkIC5tb2RhbC1ib2R5e2ZsZXg6MSAxIGF1dG87Y29sb3I6IzAwMDtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLW1haW4tdGV4dENvbG9yLCBibGFjayk7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtZm9vdGVye3Bh''@;'; put 'put ''ZGRpbmc6MDtkaXNwbGF5OmJsb2NrO3BhZGRpbmctdG9wOjEuMnJlbTtoZWlnaHQ6NC4ycmVtO21pbi1oZWlnaHQ6NC4ycmVtO21heC1oZWlnaHQ6NC4ycmVtO3dpZHRoOjEwMCU7ZmxleDowIDAgNC4ycmVtfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWJ0bnttYXJnaW46MDttYXgtd2lkdGg6''@;'; put 'put ''MTAwJTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZS10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXg6MCAxIGF1dG87d2lkdGg6MTAwJTtvdXRsaW5lOjB9LmNsci13aXphcmQgLm1vZGFsLXRpdGxlLXdyYXBwZXJ7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9k''@;'; put 'put ''YWwtaGVhZGVyLWFjdGlvbnMtd3JhcHBlcntmbGV4OjEgMCBhdXRvO3BhZGRpbmctbGVmdDouNnJlbTtwYWRkaW5nLXJpZ2h0Oi4ycmVtfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07cGFkZGluZzowO21hcmdpbjowO21p''@;'; put 'put ''bi13aWR0aDoxLjJyZW07bGluZS1oZWlnaHQ6MS4ycmVtO2ZvbnQtc2l6ZToxLjNyZW07Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3IsICM4YzhjOGMpO3RyYW5zaXRpb246Y29sb3IgbGluZWFyIC4yc30uY2xyLXdpemFyZCAuY2xyLXdp''@;'; put 'put ''emFyZC1oZWFkZXItYWN0aW9uIGF7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3IsICM4YzhjOGMpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb246aG92ZXIsLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFj''@;'; put 'put ''dGlvbjphY3RpdmUsLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbjpmb2N1c3tjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtaGVhZGVyLWFjdGlvbi1jb2xvci0taG92ZXJlZCwgYmxhY2spfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24g''@;'; put 'put ''Y2RzLWljb24sLmNsci13aXphcmQgLmNsci13aXphcmQtaGVhZGVyLWFjdGlvbiBjbHItaWNvbntoZWlnaHQ6MS4xcmVtO3dpZHRoOjEuMXJlbX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7ZmxleDoxIDEgYXV0bzt3aWR0aDozNCU7bWF4LXdpZHRoOjM0JTtkaXNw''@;'; put 'put ''bGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO29yZGVyOi0xO292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87cGFkZGluZy1ib3R0b206MS4ycmVtO2xpbmUtaGVpZ2h0OjEuMnJlbTtib3JkZXItcmlnaHQtd2lkdGg6LjA1cmVtO2JvcmRlci1yaWdodC13aWR0aDp2YXIoLS1j''@;'; put 'put ''bHItZ2xvYmFsLWJvcmRlcndpZHRoLCAuMDVyZW0pO2JvcmRlci1yaWdodC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtY29sb3I6I2UzZTNlMztib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwLW5hdi1ib3JkZXItY29sb3IsICNlM2UzZTMpO2hlaWdodDoxMDAlO2Jh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6I2ZhZmFmYTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi1iZ2NvbG9yLCAjZmFmYWZhKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItd2l6''@;'; put 'put ''YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMsIC4xNXJlbSl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdntwYWRkaW5n''@;'; put 'put ''LWxlZnQ6MS4ycmVtO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi43cmVtO2NvbG9yOiMzMzM7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1zaWRlbmF2LXRleHQsICMzMzMzMzMpO3dpZHRoOjEwMCU7ZmxleDoxIDEgYXV0b30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWxpc3R7ZGlz''@;'; put 'put ''cGxheTpibG9jaztib3gtc2hhZG93Om5vbmU7Y291bnRlci1yZXNldDphO3doaXRlLXNwYWNlOm5vd3JhcDtoZWlnaHQ6YXV0bztsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW46MDt3aWR0aDoxMDAlfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbXtkaXNwbGF5OmJsb2Nr''@;'; put 'put ''O2JveC1zaGFkb3c6LjJyZW0gMCAjZThlOGU4IGluc2V0O2JveC1zaGFkb3c6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWJvcmRlci1zaXplKSAwIDAgdmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWJvcmRlci1jb2xvcikgaW5zZXQ7bWFyZ2luOjAgMCAtLjA1cmVtO3BhZGRpbmc6LjNyZW0g''@;'; put 'put ''MCAuM3JlbSAuNHJlbTtjb2xvcjojMzMzO2NvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi10ZXh0LCAjMzMzMzMzKTtmb250LXdlaWdodDo0MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXJlZ3VsYXIsIDQwMCl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5h''@;'; put 'put ''di1pdGVtLmFjdGl2ZXtjb2xvcjojMDAwO2NvbG9yOnZhcigtLWNsci13aXphcmQtc2lkZW5hdi10ZXh0LS1hY3RpdmUsIGJsYWNrKTtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvbnQtd2VpZ2h0LXNlbWlib2xkLCA1MDApfS5jbHItd2l6YXJkIC5jbHItd2l6YXJk''@;'; put 'put ''LXN0ZXBuYXYtaXRlbS5hY3RpdmUgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2JhY2tncm91bmQtY29sb3I6I2Q4ZTNlOTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1hY3RpdmUtYmdjb2xvciwgI2Q4ZTNlOSk7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3At''@;'; put 'put ''bGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzLCAuMTVyZW0pO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXIt''@;'; put 'put ''cmFkaXVzLCAuMTVyZW0pfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5jb21wbGV0ZXtib3gtc2hhZG93Oi4ycmVtIDAgIzVlYjcxNSBpbnNldDtib3gtc2hhZG93OnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItc2l6ZSkgMCAwIHZhcigtLWNsci13aXphcmQt''@;'; put 'put ''c3RlcG5hdi1ib3JkZXItY29sb3ItLWFjdGl2ZSkgaW5zZXQ7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4ycyBlYXNlLWlufS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5lcnJvcntib3gtc2hhZG93Oi4ycmVtIDAgI2MyMWQwMCBpbnNldDt0cmFuc2l0aW9uOmJveC1zaGFk''@;'; put 'put ''b3cgLjJzIGVhc2UtaW59LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLm5vLWNsaWNrIGJ1dHRvbntwb2ludGVyLWV2ZW50czpub25lfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGlua3t3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtjb2xvcjppbmhlcml0O2Fs''@;'; put 'put ''aWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjAgLjE1cmVtIDAgLjVyZW07Zm9udC1zaXplOi43cmVtO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3RleHQtYWxpZ246bGVmdDt0ZXh0LXRyYW5zZm9ybTpub25lO21hcmdpbjowfS5jbHItd2l6YXJkIC5jbHItd2l6''@;'; put 'put ''YXJkLXN0ZXBuYXYtbGluayAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstc3VmZml4e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi13aWR0aDoxLjJyZW07cGFkZGluZy1yaWdodDouMzVyZW19LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saW5rIC5jbHIt''@;'; put 'put ''d2l6YXJkLXN0ZXBuYXYtbGluay1zdWZmaXggLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLWVycm9yLWljb257dHJhbnNmb3JtOm5vbmU7ZmlsbDojYzIxZDAwfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXRpdGxle2NvbG9yOiMwMDA7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC10aXRsZS10ZXh0''@;'; put 'put ''LCBibGFjayk7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMS1mb250LXdlaWdodCwgMjAwKTttYXJnaW4tdG9wOjA7cGFkZGluZzoxLjJyZW0gLjZyZW0gMS4ycmVtIDEuMnJlbTtmbGV4OjAgMCBhdXRvO2ZvbnQtc2l6ZToxLjFyZW07bGluZS1oZWlnaHQ6MS4ycmVt''@;'; put 'put ''fS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4OjEgMSAxMDAlO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50LXdyYXBwZXIgLm1vZGFsLW5h''@;'; put 'put ''dntoZWlnaHQ6YXV0b30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1mb290ZXItYnV0dG9uc3t0ZXh0LWFsaWduOnJpZ2h0O3BhZGRpbmctcmlnaHQ6MS4ycmVtO21hcmdpbjowfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWZvb3Rlci1idXR0b25zLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgt''@;'; put 'put ''ZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6bm93cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1idG4td3JhcHBlcntmbGV4OjAgMSBhdXRvO21pbi13aWR0aDo0LjJyZW07cGFkZGluZy1sZWZ0Oi42cmVtfS5jbHItd2l6YXJkIC5jbHItd2l6YXJk''@;'; put 'put ''LWJ0bi13cmFwcGVyW2FyaWEtaGlkZGVuPXRydWVde2Rpc3BsYXk6bm9uZX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1idG4uYnRuLWxpbmt7cGFkZGluZzowfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWNvbnRlbnR7ZGlzcGxheTpibG9ja30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1wYWdl''@;'; put 'put ''Om5vdChbYXJpYS1oaWRkZW49dHJ1ZV0pe3BhZGRpbmc6LjlyZW0gMS4ycmVtIDEuMnJlbTtkaXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC1kaWFsb2d7aGVpZ2h0Ojc1dmh9LmNsci13aXphcmQgLm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4''@;'; put 'put ''O2ZsZXgtZ3JvdzoxO3dpZHRoOjEwMCV9LmNsci13aXphcmQud2l6YXJkLW1kIC5tb2RhbC1kaWFsb2d7bWluLWhlaWdodDoyMXJlbTttYXgtaGVpZ2h0OjI1LjJyZW19LmNsci13aXphcmQud2l6YXJkLW1kIC5tb2RhbC1jb250ZW50LC5jbHItd2l6YXJkLndpemFyZC1tZCAuY2xyLXdpemFy''@;'; put 'put ''ZC1zdGVwbmF2LXdyYXBwZXJ7bWF4LWhlaWdodDoyNS4ycmVtfS5jbHItd2l6YXJkLndpemFyZC1tZCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWluLXdpZHRoOjEwLjhyZW07bWF4LXdpZHRoOjEycmVtfS5jbHItd2l6YXJkLndpemFyZC1sZyAubW9kYWwtZGlhbG9ne21pbi1oZWln''@;'; put 'put ''aHQ6MjFyZW07bWF4LWhlaWdodDozNnJlbX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm1vZGFsLWNvbnRlbnQsLmNsci13aXphcmQud2l6YXJkLWxnIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttYXgtaGVpZ2h0OjM2cmVtfS5jbHItd2l6YXJkLndpemFyZC1sZyAubmF2LXBhbmVsLC5j''@;'; put 'put ''bHItd2l6YXJkLndpemFyZC1sZyAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7bWluLXdpZHRoOjEycmVtO21heC13aWR0aDoxNC40cmVtfS5jbHItd2l6YXJkLndpemFyZC14bCAubW9kYWwtZGlhbG9ne2hlaWdodDo3NXZoO21heC1oZWlnaHQ6bm9uZX0uY2xyLXdpemFyZC53aXphcmQt''@;'; put 'put ''eGwgLm5hdi1wYW5lbCwuY2xyLXdpemFyZC53aXphcmQteGwgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye21pbi13aWR0aDoxMnJlbTttYXgtd2lkdGg6MTUuNnJlbX0uY2xyLXdpemFyZCAuc3Bpbm5lcjpub3QoLnNwaW5uZXItaW5saW5lKTpub3QoLmNsci10cmVlbm9kZS1zcGlubmVy''@;'; put 'put ''KXtsZWZ0OmNhbGMoNTAlICsgNS43NXJlbSk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjQwJX0uY2xyLXdpemFyZC1wYWdlPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LmNsci13aXphcmQtcGFnZT46Zmlyc3QtY2hpbGQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uY2xyLXdpemFyZC1w''@;'; put 'put ''YWdlPmZvcm06Zmlyc3QtY2hpbGR7cGFkZGluZy10b3A6MH0uY2xyLXdpemFyZC1wYWdlPmZvcm06Zmlyc3QtY2hpbGQ+LmZvcm0tYmxvY2s6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5jbHItd2l6YXJkLS1pbmxpbmV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5jbHItd2l6YXJkLS1p''@;'; put 'put ''bmxpbmU+Y2xyLW1vZGFsPi5tb2RhbDpmb2N1c3tvdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1jb2xvcjp0cmFuc3BhcmVudH0uY2xyLXdpemFyZC0taW5saW5lIGNsci1tb2RhbHtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQtLWlubGluZSAubW9k''@;'; put 'put ''YWx7cGFkZGluZzowO3Bvc2l0aW9uOnN0YXRpYztoZWlnaHQ6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwgLmNvbnRlbnQtY29udGFpbmVye2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5jb250ZW50LWNvbnRhaW5lciAubmF2''@;'; put 'put ''LXBhbmVse2hlaWdodDo5OSU7d2lkdGg6OTklfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5tb2RhbC1jb250ZW50e2JveC1zaGFkb3c6bm9uZX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAubW9kYWwtZGlhbG9ne21pbi1oZWlnaHQ6MTAwJTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAl''@;'; put 'put ''O3otaW5kZXg6YXV0b30uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1ib2R5LXdyYXBwZXJ7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtaGVhZGVyIC5jbG9zZSwuY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLmNsb3Nle2Rpc3Bs''@;'; put 'put ''YXk6bm9uZX0uY2xyLXdpemFyZC0taW5saW5lIC5uYXYubmF2TGlzdHtwYWRkaW5nLXRvcDowfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsLWRpYWxvZyAubW9kYWwtY29udGVudCAubW9kYWwtYm9keSAuY29udGVudC1hcmVhe292ZXJmbG93LXk6YXV0b30uY2xyLXdpemFyZC0taW5saW5l''@;'; put 'put ''IC5tb2RhbC1iYWNrZHJvcHtoZWlnaHQ6MDt3aWR0aDowO2Rpc3BsYXk6bm9uZX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1jb250ZW50LXdyYXBwZXJ7YWxpZ24taXRlbXM6c3RyZXRjaDtoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3Jh''@;'; put 'put ''cHBlciwuY2xyLXdpemFyZC0taW5saW5lLmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnR7bWluLWhlaWdodDoxMDAlO2hlaWdodDphdXRvO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0taW5saW5lIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlciAuY2xyLXdpemFyZC1zdGVwbmF2LC5j''@;'; put 'put ''bHItd2l6YXJkLS1pbmxpbmUuY2xyLXdpemFyZCAubW9kYWwtY29udGVudCAuY2xyLXdpemFyZC1zdGVwbmF2e2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1uby1zaGFkb3cgLm1vZGFsLWNvbnRlbnQtd3JhcHBlciwuY2xyLXdpemFyZC0tbm8tc2hhZG93IC5tb2RhbC1kaWFsb2d7Ym94LXNo''@;'; put 'put ''YWRvdzpub25lfS5jbHItd2l6YXJkLS1uby10aXRsZSAuY2xyLXdpemFyZC10aXRsZXtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQtLW5vLXRpdGxlIC5jbHItd2l6YXJkLXN0ZXBuYXZ7cGFkZGluZy10b3A6MS4ycmVtfUBtZWRpYSBzY3JlZW57LmNsci13aXphcmQtcGFnZVthcmlhLWhpZGRl''@;'; put 'put ''bj10cnVlXXtkaXNwbGF5Om5vbmV9fUBzdXBwb3J0cyAoLW1zLWltZS1hbGlnbjphdXRvKXsuY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9ue21hcmdpbi10b3A6LS4xNXJlbX19OnJvb3R7LS1jbHItc2lnbnBvc3QtY29udGVudC1iZy1jb2xvcjp2YXIoLS1jbHItY29sb3It''@;'; put 'put ''bmV1dHJhbC0wKTstLWNsci1zaWducG9zdC1jb250ZW50LWJvcmRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MDApOy0tY2xyLXNpZ25wb3N0LWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLXNpZ25wb3N0LWFjdGlvbi1ob3Zlci1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItY29sb3ItYWN0aW9uLTcwMCk7LS1jbHItc2lnbnBvc3QtYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItc2lnbnBvc3QtcG9pbnRlci1ib3JkZXI6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9yZGVyKTstLWNsci1zaWdu''@;'; put 'put ''cG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXI6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7LS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLXBzdWVkby1ib3JkZXIpfS5zaWducG9zdHtk''@;'; put 'put ''aXNwbGF5OmlubGluZS1ibG9ja30uc2lnbnBvc3Q6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb257bWluLXdpZHRoOjEuMnJlbTttYXJnaW46MDtwYWRkaW5nOjA7Y29sb3I6IzhjOGM4Yztjb2xvcjp2YXIoLS1jbHItc2lnbnBvc3QtYWN0aW9uLWNvbG9y''@;'; put 'put ''LCAjOGM4YzhjKX0uc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbiBjZHMtaWNvbiwuc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbiBjbHItaWNvbntoZWlnaHQ6MS4ycmVtO3dpZHRoOjEuMnJlbX0uc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpob3Zlciwuc2lnbnBvc3QgLnNpZ25wb3N0LWFj''@;'; put 'put ''dGlvbi5hY3RpdmV7Y29sb3I6IzAwNjQ4Zjtjb2xvcjp2YXIoLS1jbHItc2lnbnBvc3QtYWN0aW9uLWhvdmVyLWNvbG9yLCAjMDA2NDhmKX0uc2lnbnBvc3QgLnNpZ25wb3N0LWNvbnRlbnQtaGVhZGVyIGJ1dHRvbiBjZHMtaWNvbiwuc2lnbnBvc3QgLnNpZ25wb3N0LWNvbnRlbnQtaGVhZGVy''@;'; put 'put ''IGJ1dHRvbiBjbHItaWNvbntoZWlnaHQ6LjhyZW07d2lkdGg6LjhyZW19LnNpZ25wb3N0LXRyaWdnZXJ7bWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zaWducG9zdC1jb250ZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7bWluLXdpZHRoOjEwLjhyZW07''@;'; put 'put ''bWF4LXdpZHRoOjE4cmVtO21pbi1oZWlnaHQ6Mi40cmVtO21heC1oZWlnaHQ6MjUuMnJlbTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwNTB9LnNpZ25wb3N0LWNvbnRlbnQ6aG92ZXJ7Y3Vyc29yOmRlZmF1bHR9LnNpZ25wb3N0LWNvbnRlbnQgLnBv''@;'; put 'put ''cG92ZXItcG9pbnRlcntoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOmFic29sdXRlfS5zaWducG9zdC1jb250ZW50IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7aGVpZ2h0OjA7d2lkdGg6MDtwb3NpdGlvbjphYnNvbHV0ZX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAu''@;'; put 'put ''cG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItdG9wOi42cmVtIHNvbGlkICNiM2IzYjM7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBv''@;'; put 'put ''c3QtcG9pbnRlci1ib3JkZXIsIC42cmVtIHNvbGlkICNiM2IzYjMpO2JvdHRvbTotLjZyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBv''@;'; put 'put ''c3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXRvcDouNnJlbSBzb2xpZCAjZmZmO2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlciwgLjZyZW0gc29saWQgd2hpdGUpO2JvdHRvbTouMXJlbX0uc2lnbnBv''@;'; put 'put ''c3QtY29udGVudC50b3AtbGVmdCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xy''@;'; put 'put ''LXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3JpZ2h0Oi0uMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWxlZnQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9y''@;'; put 'put ''ZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3JpZ2h0Oi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC50b3AtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRy''@;'; put 'put ''YW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7bGVmdDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmln''@;'; put 'put ''aHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtsZWZ0Oi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnNpZ25wb3N0LXdyYXB7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAucG9wb3Zlci1wb2ludGVye2JvcmRlci1yaWdodDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRl''@;'; put 'put ''ciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2xlZnQ6LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9p''@;'; put 'put ''bnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7bGVmdDouMDVyZW19LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLWxlZnQgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0''@;'; put 'put ''LWNvbnRlbnQuYm90dG9tLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCAjYjNiM2IzO2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9yZGVyLCAuNnJlbSBzb2xpZCAjYjNiM2IzKTt0b3A6LS41NXJlbX0uc2lnbnBvc3Qt''@;'; put 'put ''Y29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LmJvdHRvbS1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90''@;'; put 'put ''dG9tOi42cmVtIHNvbGlkICNmZmY7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyLCAuNnJlbSBzb2xpZCB3aGl0ZSk7dG9wOi4xcmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5zaWducG9zdC13cmFwe2JvcmRlci10b3Atcmln''@;'; put 'put ''aHQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLWxlZnQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItbGVmdDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0''@;'; put 'put ''cmFuc3BhcmVudCk7cmlnaHQ6LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUt''@;'; put 'put ''Ym9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7cmlnaHQ6LjA1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1w''@;'; put 'put ''b2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0''@;'; put 'put ''OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTtyaWdodDotLjY1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1yaWdodCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0''@;'; put 'put ''LWNvbnRlbnQuYm90dG9tLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0Oi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7bGVmdDot''@;'; put 'put ''LjA1cmVtfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNv''@;'; put 'put ''bGlkIHRyYW5zcGFyZW50KTtsZWZ0Oi4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1ib3R0b20gLnBvcG92ZXItcG9pbnRl''@;'; put 'put ''cntib3JkZXItbGVmdDouNnJlbSBzb2xpZCAjYjNiM2IzO2JvcmRlci1sZWZ0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlciwgLjZyZW0gc29saWQgI2IzYjNiMyk7cmlnaHQ6LS42cmVtfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jl''@;'; put 'put ''LC5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1sZWZ0Oi42cmVtIHNvbGlkICNmZmY7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25w''@;'; put 'put ''b3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlciwgLjZyZW0gc29saWQgd2hpdGUpfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQubGVmdC10b3AgLnBvcG92ZXItcG9pbnRlcntib3Jk''@;'; put 'put ''ZXItdG9wOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2JvdHRvbTotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBv''@;'; put 'put ''aW50ZXI6YmVmb3Jle2JvcmRlci10b3A6LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi0uNjVyZW07cmlnaHQ6LjFyZW19LnNpZ25wb3N0LWNv''@;'; put 'put ''bnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDo1MCU7''@;'; put 'put ''dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnNpZ25wb3N0LWNvbnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlz''@;'; put 'put ''aWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LjA1cmVtO2xlZnQ6LS43cmVtfS5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5zaWducG9zdC13cmFwe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQubGVmdC1ib3R0b20gLnBv''@;'; put 'put ''cG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDotLjA1cmVtfS5zaWducG9zdC1jb250ZW50''@;'; put 'put ''LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOi4w''@;'; put 'put ''NXJlbTtsZWZ0Oi0uN3JlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcntib3JkZXIt''@;'; put 'put ''cmlnaHQ6LjZyZW0gc29saWQgI2IzYjNiMztib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItYm9yZGVyLCAuNnJlbSBzb2xpZCAjYjNiM2IzKTtsZWZ0Oi0uNnJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25w''@;'; put 'put ''b3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3JlLC5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6LjZyZW0gc29saWQgI2ZmZjtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0''@;'; put 'put ''LXBvaW50ZXItcHN1ZWRvLWJvcmRlciwgLjZyZW0gc29saWQgd2hpdGUpO2xlZnQ6LjFyZW19LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9wIC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9p''@;'; put 'put ''bnRlcntib3JkZXItdG9wOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO2JvdHRvbTotLjA1cmVtfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAu''@;'; put 'put ''cG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOi42cmVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlciwgLjZyZW0gc29saWQgdHJhbnNwYXJlbnQpO3RvcDotLjY1cmVtfS5zaWducG9zdC1jb250''@;'; put 'put ''ZW50LnJpZ2h0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1ib3R0b206LjZyZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyLCAuNnJlbSBzb2xpZCB0cmFuc3BhcmVudCk7dG9wOjUwJTt0''@;'; put 'put ''cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlz''@;'; put 'put ''aWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LjA1cmVtfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50''@;'; put 'put ''ZXJ7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LS4wNXJlbX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0''@;'; put 'put ''b20gLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTouNnJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIsIC42cmVtIHNvbGlkIHRyYW5zcGFyZW50KTt0b3A6LjA1cmVtfS5zaWdu''@;'; put 'put ''cG9zdC1jb250ZW50LWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O3RvcDowfS5zaWducG9zdC13cmFwe2JvcmRlci1yYWRpdXM6LjE1cmVtO2JvcmRlci1yYWRp''@;'; put 'put ''dXM6dmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXdpZHRoOi4wNXJlbTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNiM2IzYjM7Ym9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1zaWducG9zdC1jb250ZW50LWJvcmRlci1jb2xvciwgI2IzYjNiMyk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3IsIHdoaXRlKTt6LWluZGV4OjEwNTA7cG9zaXRpb246cmVsYXRp''@;'; put 'put ''dmV9LnNpZ25wb3N0LWNvbnRlbnQtYm9keXtwYWRkaW5nOjEuMnJlbTttYXgtaGVpZ2h0OjI0cmVtO292ZXJmbG93LXk6YXV0b30uZHJhZy1oYW5kbGV7Y3Vyc29yOmdyYWJ9LmluLWRyYWd7Y3Vyc29yOmdyYWJiaW5nOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25l''@;'; put 'put ''fS5pbi1kcmFnICp7cG9pbnRlci1ldmVudHM6bm9uZX0uaW4tZHJhZyAuZHJhZ2dhYmxlLmJlaW5nLWRyYWdnZWR7b3BhY2l0eTouNn0uZHJhZ2dhYmxlLWdob3N0e3Bvc2l0aW9uOmZpeGVkO2Rpc3BsYXk6YmxvY2s7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoyMTQ3NDgzNjQ3O3BvaW50''@;'; put 'put ''ZXItZXZlbnRzOm5vbmU7d2lsbC1jaGFuZ2U6bGVmdCx0b3B9LmRyYWdnYWJsZS1naG9zdD4uZHJhZ2dhYmxle21hcmdpbjowO29wYWNpdHk6MX0uZHJhZ2dhYmxlLWdob3N0LmRyb3BwZWR7b3BhY2l0eTowfS5kcm9wcGFibGUuZHJhZ2dhYmxlLW1hdGNoe2JvcmRlcjouMDVyZW0gZGFzaGVk''@;'; put 'put ''ICNjMDkwZDV9LmRyb3BwYWJsZS5kcmFnZ2FibGUtb3Zlcntib3JkZXI6LjA1cmVtIGRhc2hlZCAjNjgwMDk0fTpyb290ey0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZm9udC1jb2xvcik7LS1jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1jb2xvci1uZXV0cmFsLTUwMCk7LS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yKTstLWNsci1hY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFs''@;'; put 'put ''LTApOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC01MCk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTIwMCk7LS1jbHItYWNjb3JkaW9uLWhl''@;'; put 'put ''YWRlci1mb250LXNpemU6LjhyZW07LS1jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b24tZm9udC1zaXplOi42cmVtOy0tY2xyLWFjY29yZGlvbi10aXRsZS1mb250LXdlaWdodDo1MDA7LS1jbHItYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTouNjVyZW07LS1jbHItYWNjb3JkaW9uLWVycm9y''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1nbG9iYWwtZXJyb3ItY29sb3IpOy0tY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1jb2xvcjp2YXIoLS1jbHItZ2xvYmFsLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwKTstLWNsci1h''@;'; put 'put ''Y2NvcmRpb24tYm9yZGVyLXJhZGl1czp2YXIoLS1jbHItZ2xvYmFsLWJvcmRlcnJhZGl1cyk7LS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LWNvbG9yOiNlOGU4ZTg7LS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LXdpZHRoOi4zcmVtOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1j''@;'; put 'put ''b2xvci1jb21wbGV0ZTp2YXIoLS1jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWNvbG9yKTstLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWluZGljYXRvcjppbnNl''@;'; put 'put ''dCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LXdpZHRoKSAwIDAgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvcik7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWNvbXBsZXRlLWluZGljYXRvcjppbnNldCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1s''@;'; put 'put ''ZWZ0LXdpZHRoKSAwIDAgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1jb21wbGV0ZSk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWVycm9yLWluZGljYXRvcjppbnNldCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1sZWZ0LXdpZHRoKSAwIDAgdmFyKC0tY2xy''@;'; put 'put ''LWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvcil9LmNsci1hY2NvcmRpb257ZGlzcGxheTpibG9jaztjb3VudGVyLXJlc2V0OmFjY29yZGlvbjttYXJnaW4tYm90dG9tOjEuMnJlbX0uY2xyLWFjY29yZGlvbi1wYW5lbHtkaXNwbGF5OmJsb2NrfS5jbHItYWNjb3JkaW9uLWhlYWRl''@;'; put 'put ''cntjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tdGV4dC1jb2xvciwgIzY2NjY2Nik7Ym9yZGVyOi4wNXJlbSBzb2xpZDtib3JkZXItY29sb3I6I2NjYztib3JkZXItY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItY29sb3IsICNjY2NjY2MpO2JveC1zaGFkb3c6''@;'; put 'put ''aW5zZXQgLjNyZW0gMCAjZThlOGU4O2JveC1zaGFkb3c6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1pbmRpY2F0b3IsIGluc2V0IC4zcmVtIDAgMCAjZThlOGU4KTtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1iYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yLCAjZmFmYWZhKTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7Ym9yZGVyLWJvdHRvbTowO3dpZHRoOjEwMCU7Zm9udC1zaXplOi44cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1mb250LXNpemUsIC44cmVtKTt0ZXh0LWFsaWduOmxlZnR9''@;'; put 'put ''LmNsci1hY2NvcmRpb24taGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U4ZThlODtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWhvdmVyLWJhY2tncm91bmQtY29sb3IsICNlOGU4ZTgpfS5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNs''@;'; put 'put ''ci1hY2NvcmRpb24tY29udGVudCwuY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6LjA1cmVtO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWdsb2JhbC1i''@;'; put 'put ''b3JkZXJ3aWR0aCwgLjA1cmVtKTtib3JkZXItYm90dG9tLWNvbG9yOiNjY2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvciwgI2NjY2NjYyl9LmNsci1hY2NvcmRpb24tbnVtYmVye3BhZGRpbmc6MCAuOXJlbTtkaXNwbGF5Om5vbmV9LmNsci1h''@;'; put 'put ''Y2NvcmRpb24tbnVtYmVyOmJlZm9yZXtjb250ZW50OmNvdW50ZXIoYWNjb3JkaW9uKSAiLiI7Y291bnRlci1pbmNyZW1lbnQ6YWNjb3JkaW9ufS5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcDtmbGV4OjEgMSAwJTt3aWR0aDoxMDAl''@;'; put 'put ''O2JvcmRlcjowO3BhZGRpbmc6LjlyZW07YmFja2dyb3VuZDowIDA7dGV4dC1hbGlnbjpsZWZ0O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLCAjNjY2NjY2KX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRp''@;'; put 'put ''b24taGVhZGVyLWJ1dHRvbntmbGV4LWZsb3c6cm93fX0uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVkIC5jbHItYWNjb3JkaW9uLXRpdGxle2NvbG9yOiNiM2IzYjM7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZC1jb2xvciwgI2IzYjNiMyl9LmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOjEuOHJlbTtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmNsci1hY2NvcmRpb24tdGl0bGV7ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2t9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpe2Nsci1zdGVwLXRpdGxlLmNsci1hY2NvcmRpb24tdGl0bGV7bWluLXdpZHRoOjguNjRyZW19fS5jbHItYWNjb3JkaW9uLWhlYWRlci1oYXMtZGVzY3JpcHRpb24gLmNsci1hY2NvcmRpb24tdGl0bGV7bWF4LXdpZHRoOjEzLjJyZW19LmNs''@;'; put 'put ''ci1hY2NvcmRpb24tZGVzY3JpcHRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjMyLjVyZW19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9ue21hcmdpbi1sZWZ0OjEuOHJlbX19LmNsci1hY2NvcmRpb24tY29udGVudHtiYWNrZ3Jv''@;'; put 'put ''dW5kOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZC1jb2xvciwgd2hpdGUpO2JvcmRlci13aWR0aDouMDVyZW07Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgsIC4wNXJlbSk7Ym9yZGVyLXN0eWxlOnNvbGlkO2Jv''@;'; put 'put ''cmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvciwgI2NjY2NjYyk7Ym9yZGVyLWJvdHRvbTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOi45cmVtO2Rpc3BsYXk6bm9uZX0uY2xyLWFjY29yZGlvbi1jb250ZW50IC5jbHItZm9ybSwu''@;'; put 'put ''Y2xyLWFjY29yZGlvbi1jb250ZW50Lm5nLXRyaWdnZXJ7cGFkZGluZzowfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6LjlyZW0gMi43cmVtfX0uY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6LjlyZW19QG1lZGlhICht''@;'; put 'put ''aW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnR7cGFkZGluZzouOXJlbSAyLjdyZW19fS5jbHItYWNjb3JkaW9uLWFuZ2xle3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDt0cmFuc2Zvcm06cm90YXRlKDkwKX0uY2xyLWFjY29yZGlvbi1lcnJvci1pY29u''@;'; put 'put ''LC5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257aGVpZ2h0OjEuMnJlbTt3aWR0aDoxLjJyZW07ZGlzcGxheTpub25lO3BhZGRpbmc6MDttYXJnaW46MCAuNnJlbX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWNvbnRlbnQtcmVnaW9uIC5jbHItYWNjb3JkaW9u''@;'; put 'put ''LWNvbnRlbnR7ZGlzcGxheTpibG9ja30uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlcntiYWNrZ3JvdW5kOiNkOGUzZTk7YmFja2dyb3VuZDp2YXIoLS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0uY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlciAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGU7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257ZGlz''@;'; put 'put ''cGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzVhYTIyMDtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWNvbG9yLCAjNWFhMjIwKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1jb21wbGV0ZSAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGV9LmNsci1hY2NvcmRp''@;'; put 'put ''b24tcGFuZWwtY29tcGxldGUgLmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6aW5zZXQgLjNyZW0gMCAjNWFhMjIwO2JveC1zaGFkb3c6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1jb21wbGV0ZS1pbmRpY2F0b3IsIGluc2V0IC4zcmVtIDAgMCAjNWFhMjIwKX0uY2xy''@;'; put 'put ''LWFjY29yZGlvbi1wYW5lbC1jb21wbGV0ZSAubmctdHJpZ2dlci5jbHItYWNjb3JkaW9uLWNvbnRlbnR7ZGlzcGxheTpibG9ja30uY2xyLWFjY29yZGlvbi1wYW5lbC1lcnJvciAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbTouMDVyZW0gc29saWQ7Ym9yZGVyLWNvbG9yOiNj''@;'; put 'put ''MjFkMDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItZXJyb3IsICNjMjFkMDApO2JveC1zaGFkb3c6aW5zZXQgLjNyZW0gMCAjYzIxZDAwO2JveC1zaGFkb3c6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1lcnJvci1pbmRpY2F0b3Is''@;'; put 'put ''IGluc2V0IC4zcmVtIDAgMCAjYzIxZDAwKTtiYWNrZ3JvdW5kLWNvbG9yOiNkOGUzZTk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yLCAjZDhlM2U5KX0uY2xyLWFjY29yZGlvbi1wYW5lbC1lcnJvciAuY2xyLWFjY29yZGlvbi1l''@;'; put 'put ''cnJvci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1lcnJvci1jb2xvciwgI2MyMWQwMCl9LmNsci1hY2NvcmRpb24tcGFuZWwtZXJyb3IgLmNsci1hY2NvcmRpb24tbnVtYmVyLC5jbHItYWNjb3JkaW9uLXBhbmVsLWNv''@;'; put 'put ''bXBsZXRlIC5jbHItYWNjb3JkaW9uLW51bWJlcntwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5v''@;'; put 'put ''d3JhcDt0b3A6MDtsZWZ0OjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6bm9uZX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1wYW5lbDpmaXJzdC1jaGls''@;'; put 'put ''ZCAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMsIC4xNXJlbSk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci10b3Atcmln''@;'; put 'put ''aHQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWNvbnRlbnQsLmNsci1hY2NvcmRpb246bm90''@;'; put 'put ''KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFuZWw6bGFzdC1jaGlsZCAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czouMTVyZW07Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRp''@;'; put 'put ''dXMsIC4xNXJlbSk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6LjE1cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cywgLjE1cmVtKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29y''@;'; put 'put ''ZGlvbi10aXRsZXtmb250LXdlaWdodDo1MDA7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWFjY29yZGlvbi10aXRsZS1mb250LXdlaWdodCwgNTAwKTtmb250LXNpemU6LjY1cmVtO2ZvbnQtc2l6ZTp2YXIoLS1jbHItYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSwgLjY1cmVtKX0uY2xyLWFjY29y''@;'; put 'put ''ZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9ue2ZvbnQtc2l6ZTouNnJlbTtmb250LXNpemU6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uLWZvbnQtc2l6ZSwgLjZyZW0pO3BhZGRpbmc6LjNyZW0gLjZyZW19LmNsci1hY2Nv''@;'; put 'put ''cmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOjB9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtwYWRkaW5nOi4zcmVtIDEuNzVyZW19LmNsci1hY2NvcmRp''@;'; put 'put ''b246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOi45NnJlbX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1zdGF0dXMgY2RzLWljb24sLmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1m''@;'; put 'put ''b3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVzIGNsci1pY29ue2hlaWdodDouN3JlbTt3aWR0aDouN3JlbX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tcmln''@;'; put 'put ''aHQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnR9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLXBhbmVsLWluYWN0aXZlIC5jbHItYWNjb3JkaW9uLWFuZ2xle3Zpc2liaWxpdHk6aGlkZGVufS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlciAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGV9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLXN0YXR1c3ttaW4td2lkdGg6My42cmVtfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29y''@;'; put 'put ''ZGlvbi1udW1iZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zdGVwLWJ1dHRvbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MS4ycmVtfTpyb290ey0tY2xyLXRpbWVsaW5lLWxpbmUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNTAwKTstLWNsci10aW1lbGluZS1zdGVwLWhl''@;'; put 'put ''YWRlci1jb2xvcjp2YXIoLS1jbHItY29sb3ItbmV1dHJhbC02MDApOy0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtY29sb3I6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwKTstLWNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTcw''@;'; put 'put ''MCk7LS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yOnZhcigtLWNsci1jb2xvci1uZXV0cmFsLTYwMCk7LS1jbHItdGltZWxpbmUtY3VycmVudC1zdGVwLWNvbG9yOnZhcigtLWNsci1jb2xvci1hY3Rpb24tNjAwKTstLWNsci10aW1lbGluZS1zdWNjZXNzLXN0ZXAtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWNvbG9yLXN1Y2Nlc3MtNDAwKTstLWNsci10aW1lbGluZS1lcnJvci1zdGVwLWNvbG9yOnZhcigtLWNsci1jb2xvci1kYW5nZXItODAwKTstLWNsci10aW1lbGluZS1zdGVwLXRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNsci1wMi1mb250LXdlaWdodCl9LmNsci10aW1lbGlu''@;'; put 'put ''ZXtkaXNwbGF5OmZsZXg7cGFkZGluZzouNnJlbX0uY2xyLXRpbWVsaW5lLXN0ZXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlO21pbi13aWR0aDo4Ljc1cmVtO21hcmdpbi1sZWZ0Oi42cmVtfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbiwuY2xyLXRp''@;'; put 'put ''bWVsaW5lLXN0ZXAgY2xyLWljb257aGVpZ2h0OjEuOHJlbTt3aWR0aDoxLjhyZW07bWluLWhlaWdodDoxLjhyZW07bWluLXdpZHRoOjEuOHJlbX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9Y2lyY2xl''@;'; put 'put ''XXtjb2xvcjojOGM4YzhjO2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1pbmNvbXBsZXRlLXN0ZXAtY29sb3IsICM4YzhjOGMpfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9ZG90LWNpcmNsZV17''@;'; put 'put ''Y29sb3I6IzAwNzJhMztjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtY3VycmVudC1zdGVwLWNvbG9yLCAjMDA3MmEzKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9c3VjY2Vzcy1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29uW3NoYXBlPXN1Y2Nlc3Mtc3Rh''@;'; put 'put ''bmRhcmRde2NvbG9yOiM1ZWI3MTU7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN1Y2Nlc3Mtc3RlcC1jb2xvciwgIzVlYjcxNSl9LmNsci10aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9ZXJyb3It''@;'; put 'put ''c3RhbmRhcmRde2NvbG9yOiNjMjFkMDA7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLWVycm9yLXN0ZXAtY29sb3IsICNjMjFkMDApfS5jbHItdGltZWxpbmUtc3RlcDpub3QoOmxhc3Qtb2YtdHlwZSkgLmNsci10aW1lbGluZS1zdGVwLWJvZHk6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3Vu''@;'; put 'put ''ZDojYjNiM2IzO2JhY2tncm91bmQ6dmFyKC0tY2xyLXRpbWVsaW5lLWxpbmUtY29sb3IsICNiM2IzYjMpO2hlaWdodDouMXJlbTt3aWR0aDpjYWxjKDEwMCUgLSAxcmVtKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDEuN3JlbSwtLjk1cmVtKX0uY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVye2NvbG9y''@;'; put 'put ''OiM4YzhjOGM7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVyLWNvbG9yLCAjOGM4YzhjKTtmb250LXNpemU6LjY1cmVtO2xpbmUtaGVpZ2h0Oi45cmVtO3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOi40cmVtfS5jbHItdGltZWxpbmUtc3RlcC1ib2R5e2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb24sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb257aGVpZ2h0Oi44cmVtO3dpZHRoOi44cmVtO21pbi13aWR0aDppbml0aWFsO21pbi1oZWlnaHQ6aW5pdGlhbH0uY2xyLXRp''@;'; put 'put ''bWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1jaXJjbGVdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNkcy1pY29uW3NoYXBlPWRvdC1jaXJjbGVdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNkcy1pY29uW3NoYXBlPXN1Y2Nlc3Mtc3RhbmRhcmRdLC5jbHItdGltZWxpbmUtc3Rl''@;'; put 'put ''cC1ib2R5IGNkcy1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1jaXJjbGVdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNsci1pY29uW3NoYXBlPWRvdC1jaXJjbGVdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNsci1p''@;'; put 'put ''Y29uW3NoYXBlPXN1Y2Nlc3Mtc3RhbmRhcmRdLC5jbHItdGltZWxpbmUtc3RlcC1ib2R5IGNsci1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXXtjb2xvcjppbmhlcml0fS5jbHItdGltZWxpbmUtc3RlcC10aXRsZXtjb2xvcjojNjY2O2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1zdGVwLXRp''@;'; put 'put ''dGxlLWNvbG9yLCAjNjY2NjY2KTtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXdlaWdodDp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1mb250LXdlaWdodCwgNTAwKTtsaW5lLWhlaWdodDouOXJlbTttYXJnaW4tdG9wOi40cmVtO21hcmdpbi1ib3R0b206LjNy''@;'; put 'put ''ZW19LmNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9ue2NvbG9yOiM2NjY7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24tY29sb3IsICM2NjY2NjYpO2ZvbnQtc2l6ZTouNTVyZW07bGluZS1oZWlnaHQ6LjhyZW19LmNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0''@;'; put 'put ''aW9uIGJ1dHRvbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6LjRyZW19LmNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uIGltZ3t3aWR0aDoxMDAlO21hcmdpbi10b3A6LjRyZW19LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21p''@;'; put 'put ''bi13aWR0aDoxNnJlbX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXB7ZmxleC1kaXJlY3Rpb246cm93O21hcmdpbi1sZWZ0OjA7cG9zaXRpb246cmVsYXRpdmV9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1l''@;'; put 'put ''bGluZS1zdGVwOm5vdCg6bGFzdC1vZi10eXBlKXttYXJnaW4tYm90dG9tOjEuOHJlbX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXA6bm90KDpsYXN0LW9mLXR5cGUpIC5jbHItdGltZWxpbmUtc3RlcC1ib2R5OmJlZm9yZXtwb3NpdGlvbjph''@;'; put 'put ''YnNvbHV0ZTt3aWR0aDouMXJlbTtoZWlnaHQ6Y2FsYygxMDAlICsgLjJyZW0pO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEuNTVyZW0sMS40cmVtKX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVye3RleHQtYWxpZ246cmlnaHQ7d2hp''@;'; put 'put ''dGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aWR0aDozcmVtO21pbi13aWR0aDozcmVtO21hcmdpbi1yaWdodDouNnJlbTttYXJnaW4tdG9wOi4zcmVtO21hcmdpbi1ib3R0b206MH0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5l''@;'; put 'put ''LXN0ZXAtdGl0bGV7bWFyZ2luLXRvcDowfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjguOXJlbTttYXJnaW4tbGVmdDouNnJlbTttYXJnaW4tdG9w''@;'; put 'put ''Oi4zcmVtfUBrZXlmcmFtZXMgc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQs''@;'; put 'put ''ZDA5R1JnQUJBQUFBQUZRZ0FCTUFBQUFBbThBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY2FBQUFPZGp5K2VqbEhVMVZDQUFBSk1BQUFBQ0FBQUFBZ1JIWk1k''@;'; put 'put ''VTlUTHpJQUFBbFFBQUFBVFFBQUFHQm9QcXpyWTIxaGNBQUFDYUFBQUFKc0FBQURubmRERDdGamRuUWdBQUFNREFBQUFEQUFBQUE4RVk0QmpHWndaMjBBQUF3OEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuZ0FBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNnQUFBTm5NQUFHZ1V4RklnTjJobFlX''@;'; put 'put ''UUFBRWowQUFBQU5nQUFBRFlMWVlnVWFHaGxZUUFBU1N3QUFBQWhBQUFBSkFkMkJESm9iWFI0QUFCSlVBQUFBb2dBQUFUdXVQSS9GR3h2WTJFQUFFdllBQUFDY2dBQUFucUphbkJ3YldGNGNBQUFUa3dBQUFBZ0FBQUFJQUtFQWVsdVlXMWxBQUJPYkFBQUFZSUFBQU5XTGRDRTlYQnZjM1FBQUUv''@;'; put 'put ''d0FBQURvUUFBQmlHWEZqMktjSEpsY0FBQVU1UUFBQUNCQUFBQWpSbFFBaEIzWldKbUFBQlVHQUFBQUFZQUFBQUc5bmhZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNv''@;'; put 'put ''N0h6VHYxRDRCN200MDQ4RE9sb3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY0JiRmJWRmY3T3VmZSt2LzBMV0VvTENCMERVaGt4VFdXRVNVVkdpV01Gc1ZQRG1FRUhabHVjWTYxUTdCalppREZLSFpxbDZZekREcEUwcUF5TU5zQlFzU0t5cHF2T09VZGtZNlloWUZ3SHlEWW0w''@;'; put 'put ''N25GQ1BMMnZmTis2RjlvdC9HRmo4TzU5OTE3enpuZjdibUZBTWhpTWhaQzV0WFdMVVlCUEQySVl6aitJMUM0aG04M3JVVHBpbTgyTmFCOFJjT0tCczRHL2Nsb09pTmh4Kyt5R0kwSm1HSWVod3JVdVk1ME5GcGxxMHJVaW9nZnlmRFYvR0tjK1FKS0wwQlFHN2VTQTJhakJaOGlsbkZRSG9QelpL''@;'; put 'put ''d2NRUkdHOFdSL2o3dmo3WEZ2ZkJSRC9Jay9HSExrdDRONis3aDMvditQeHo4ZGNvWDNoaHdaK2p4L2pQY09NYkk5N292M0piakkzOHUvdjBrdzJCNXhLN09rbU1oTVQyRzJQa2NvcWdpSHF3aVA2VVRBRjRnSU00a01yaUVLTUlzb1pHNW5zMUpyQ01IOStCRm5Qa2dFWnJ5Ri9oY0l3WXVFNENW''@;'; put 'put ''Q2NaRHcrQVBoY1pRSStETVI0VGdSNFQwaXdta2lndytJRE00UWhhemVwMXd0SnJKU0xNVW9sQklwSVpkS0tYa2NLNXZsMnRPb2tncCtjeVVoZHU3MHhHb25kblppYnljT21FY1VvSllveEFJaWkwVkVFUnJ4ZmE2UVJCSlpKSkZGRXZBVFBNcjViVVFoZm9aTm5QOEVmczc1MjRraTdDUXkyRVVV''@;'; put 'put ''NEJkRUJydUpBanhIWlBBOFVZQTlSQ0U2aVVMc0o3TG9JckxvSnJMb0liSjRsUkQ4bWhETFRvUjNpQ0w4aVVqem9wWVh0Yng0eTB1d3ZBVExpN2U4ZU11TGx6RXlodm02WEM0bkp6a0tYTFdLR1pyQ0dsZXh0dE5aMDVuTXpDeG1wQkdyY0RlYThEMnNaaTN2eHpvMDR3Rm00VUZHdjVNUlBjZEt2''@;'; put 'put ''c2dLSG1UbGpySml4MW1wMHp6SkdidFp4ZHkzTkxsZmVxL2R3OWVraVhFUHA3cjJVWGV0OGI4R1VhdU5ESFlITG95Y1NqRElsNmVIdkJ1bnppdWU5L3BvM0J3M1h6eVMzcnA0Yzd4NTBKRy8yRGVLY3RPRW1DWVVYeU1jYmlVOGJpTUNsaElSRmZFbzV5UnFFRk9EbWhvVUhVU0VIVVJrbFJhcnRG''@;'; put 'put ''aWx4U290VmxmRk1jTGhCT0Z3a25BNFN3U2NJeUlaS1NOWjExRXlpbHdtWmVTa29tSVZGUmt2NDdtK29oS1hFVVVZU1F3enBZc3BYVTNwTHFmMCtVUyswcjNGRStYRmt6R2x1NXpTK3pYdUxTcHZVV1VzcXZOS1R6V2VxbnN2TWJTdWsyaTlhVlp6RVNiS2RSWm54dlRyVEwrYWl6bFJzZVlpVDdT''@;'; put 'put ''c2VmSG5LOXBaRmpJeVRhN2g3c2xQcjFwR3VJajF1cFZ4TFdVa2JZeGtJeDVqTkUvZ1NUeUZyWXhvT3lQWndkdll5ZE4yOFpROVBOMHgxdUFrVDNhT0p4akYzY1p3bC9GY2NZTHBXVEhDT2txSnFhT0V1OVRRRXJOcjJJbU9SQlBJZmN4L3Q2eVhGbmxFTmtxN2JKVm5aSmZza1gzU0xhL0xBVGtr''@;'; put 'put ''aCtWZE9TR241RVA1V002cDE2d1c2Mmd0MThrNlZhdDBoczdTdVZxcmRicElsK2p0ZW9mVzZ5cGRvL2ZvT24xSVczV0RidEl0dWswN2RMZDI2bjd0MFRmMExYMWJqMmlmbnRUMzlTUDl4TUZGYnBncmNXUGRCRmZocm5UVDNOVnV0cnZPTFhBM3VzWHVOdmNOZDZlN3l6VzVIN2g3M1FQdXgrNWgx''@;'; put 'put ''K1kydXlmZDAyNkhlOTd0ZFYzdU5mZW0rNzNyZGUrNFkrNnY3aC91Mys2c1YxL2dSL2hTUDg1UDlGTjhwWi91cS8wY1A4OHY5RGY3Vy94Uy95Mi8zSy8wcS8xYWY1OWY3MXY4STM2amIvZGIvVE4rbDkvajkvbHUvN28vNEEvNXcvNWRmOEtmOGgvNmovMjU0RU0yRklmUm9UeE1EbE5EVlpnUlpv''@;'; put 'put ''VzVvVGJVaFVWaFNiZzkzQkhxdzZxd0p0d1Qxb1dIUW12WUVEYUZMV0ZiNkFpN1EyZllIM3JDRytHdDhIWTRFdnJDeWZCKytDaDhFaUdLb21HOEhVMjZrOXhzUE4rNHhuaER3bWcwYmpQUDJuNS9qbTh3cmpTKzFuaGx3bHBtOXZYR2M0d3JsRDlUNVFyanE0eXJFMGE5Y2J1K1RHNHdmNlh4YlBQ''@;'; put 'put ''M0dwOHh6MFRqeDQwbkdVZkdDMXc5K1NuanBzRlpmNVVYWTQzNUwyRjgyWGlMY1dNL3k3STBkclB2TW43VmVNT2xuR2JBN0V2NWV1TUs3ZnBmck04T3lGWFhZSXk1eG84YjEvY3pzOWRsMmZ2dm5PYXphMUNlbE1kTmVXY2VZT2ZWdE5uOFY1Zy8zNTV2T1d3eGUxbGU1dE1vQnRnMm1xb2kzNTlt''@;'; put 'put ''dFRxMWJVNnFtYlE2YWRTcFBuTjJ6cC9NYVRPNzNhMDVyOTZjeGc2YTNaUFl1WnFtR1Z1YlUzSzR5SitlSWMzYkFiUFhXbzBPSmZOZHFzQWJiSzllbTJNM0l0WHRBSCtsMldkeU5kcDVRZFg1L3ZRR1hadW5tYlFpK2ZaV3M3K2UrbTIrM1FzdE03L3BJYWUwU1huMkhPUElQRVBaZnpQN2JvdXUx''@;'; put 'put ''dXczemM1ZnVTYitKYmtxM245UnBmSjNyTTdkN3E3L2d3Zk9WSHpXM3FYZ3Uyc3FzNUs4VGoyN2RpVzdZUExDanZCNXZzUXltSUZxOXJDa2M0OWczLzRpZTNyU3VVZmFHN1hFT3Zjby9sNjFrSDJvamlqRFRleHpvOW5wYnVIdlBrdUljdXZsbjJIWFc4YXUxY2kzMjBSN3ZjMWtSMi9uZWx2WSti''@;'; put 'put ''NWl2ZStyN0g0dnMwTytnZ1A0RGw5MHAvRkRlMVZ1eEQ4bDRERjI0dkhvc0o3YXlmT0tYR2EvbTBXUWVMMnA4RDdjU1Y3UGJsZUVzZHlyZ2hGTnc5VTg5WFU4NVkxWXpORVhUTHUvTXo1c2JIZUdHdTNuZzhiTGpiY1o5eG1mTlM3Q2w3alBjbnhYTWxJZ2haS1ZJaGt1SXk0OTBYOEF0bEtYV0FB''@;'; put 'put ''QUFBRUFBQUFLQUJ3QUhnQUJSRVpNVkFBSUFBUUFBQUFBLy84QUFBQUFBQUI0Mm1OZ1pySmduTURBeXNEQzFNVVV3Y0RBNEEyaEdlTVlSQmpOZ0h5Z0ZCeXdNeUNCVU85d1B3WUhCZ1hWUDh6Uy80MFpHSmlQTXFvcU1EQk1Cc2t4c1RLdEIxSUtERXdBeGxjS05nQUFBSGphdFpOWlVJNVJITVov''@;'; put 'put ''LzdkOUVTb1U5ZmIyYWROR29oUkY5cVhJdnBTczJiS3YyUnJyRUVORlVzaWVKS01aRTFOVHRodnV1RFZqakw3UGxWdnVEQjNIVjB3enpMaHladDV6M25QT25PZWNlWjdmSDNDaDZ3dEJkSTlVNnBrNDU2NVNyTWNsak1PTmdaUndpenJ1MGtnVHpiVFFKaDRTSUlNa1RBWkxuQ1JKcXFSTHBreVZI''@;'; put 'put ''TW1UUWltU0VpUFZlR1c4ZDRreWo1dXQ1aFB6aStWdUJWckJWcWhsczZLc1lWYTZkZC9tSC9sTktYMkh4WTBlMm85cDQ1bjRTbjh4eFNheGtpZ3BraVlaa2lYWmtpc0Zza0UyYSsyWHhsdXRmY2hzTWR2Tno1WmhCVmhCVm9oVGU2aVY5a3RiZlZRdjFIUDFWTFdyVnZWSU5hdUhxa2sxcWdaVnIr''@;'; put 'put ''clVOVldyYWxTMXFsS1Zxa0tWcVRPcVZKM29mTk9aMVpuMC9aT2ozRkhneUhmRTJBZmEvZXcrZGkrN205M28rTnJ4dWVQd2g1QjN5VjFlL2FmbWJuZzdrK0NQV3dTais4LzRoMGJYU1JkY2RYYnVlT0NKRjk3NDRFc3YvT2hOSC9yaVR3Q0I5S00vQXdnaVdHYzhTS2NlaWttWVRpUWNHNE9KSUpJ''@;'; put 'put ''b29vbGhDTEhFRVU4Q2lReGxHRWtNSjVrUmpDU0ZWRWFSUmpxakdVTUdtWXpWekdReG5nbE1aQktUbWNKVXBqR2RHV1NUdzB4bWtjdHM1akNYZWN4bkFRdFp4R0pOV2g3NUxLV0FaU3huaFg3L0RuYXltMklPY1p6VGxGTkdCZWM1UnlWVlZIT1JHaTV4aGN2VWNwWHIzTlFVL1dUME5nMmFwWHVh''@;'; put 'put ''cHA5dEZhdTFIZEZzNEd5M04rdFpvL3RkblBqdFZ1RmZITHhBUFp0WjJXTmxMWnNrUm85YjJNNHg3RGdrWFBNWktWRzZBaUs0bzNjZW9HbVdCRjBQOGQxbmlweGh4TEtOdld4bEgzczR3RUZkUy9zNXdsRzlkWmhTVG5HUzE3cWFlckZPdk1SYmZOZ29mcHAvengrUXphcm9lTnBqWU1BQ0hJSFFr''@;'; put 'put ''c0dTYVQwREE5TnVKbFlHaHY4aHpOTC9qWmwyLy8vQ2RJQko4UCtYLzM0Z1BnRElQUTBpZU5xdFZtbDMwMFlVbGJ4bEl4dFphRkZMeDB5Y3B0SElwQlNDQVFOQml1MUN1amhiSzBGcHBUaEo5d1c2MFgxZjhLOTVjdHB6NkRkK1d1OGIyU2FCaEo3MjFCLzA3c3k3TTIrYmVXTXlsQ0JqM2E4RVFp''@;'; put 'put ''emROWWFXbHlpM2VzMm5VeGJOQk9HMmFLNzdsQ3BFZi9VYXZVYWpJVGVzZko2TWdBeFBMcllNMC9CQzF5RlRrUWkzSFVvcHNTbm9YcDB5MDlkYU0yYS9WMmxVS0ZmeDg1UXVCQ3ZYL2J6TVcwMWZVTDJPcVlYQUVsUmlWQW9DRVNmc2FKTm1NTlVlQ1pwai9Sd3o3OVY5QVcrYWthRCt1aDlpUnJD''@;'; put 'put ''dW45RThvL25RQ29NZ3NNaTBnMENTVWZlM2dzQ2h0QkxZSjFPSTRGbldxL3VVbFM3bHBJczRBakpEaHpKS3dpK3hHV2MzWE1FYTl0aEtQT0F2U0pVR3BXZnpVSHFpS1pvd0VNOWxDd2h5MlEvclZyUVMrRExJQjRJV1ZuM29MQTZ0YmQraHJLSWV6MjRacVNSVE9ReWxLNUZ4NlVhVTJ0Z21zd0VE''@;'; put 'put ''bEoxMXFFY0pkblhBYTl6TkdCdUNkNkNGTUdCS3VLaGQ3Vld0bmdIRHE3aXorVzd1KzlUZVd2UW51NWcyWFBBUWR5Z3FUUmx4WFhTK0RJdHpTc0tDa3gwdlVSMFpMU1ltQmc1WVRsTllaVmozUTl1OTZKRFNBYlVHK3RNb3RpWHp3V3plb1VFVnAxSVYyb3dXSFJwU0lBcEJoN3lydkJ4QXVnRU44''@;'; put 'put ''bWdGbzBHTUhCckdOaU02SlFJWmFNQXVEWG1oYUlhQ2hwQTBoMGJVMHBvZlp6WVhneWthM0pLM0hScFZTOHYrMG1veWFlVXhQNmJuRDZ2WUdQYlcvWGg0R0FXTVhCcTIrY3ppSkx2eElmNE00a1BtSkNxUkx0VDltSk9IYU4wbTZzdG1aL01TeXpyWVN2UzhCRmVCWndKRVVvUC9OY3p1TGRVQkJZ''@;'; put 'put ''d05ZMHdpV3g0WkYxdW1hZXBhalNrak5sS1ZOWitHcFNzcU5JREQxdy9Eb1N0Q21QOXpkTlEwaGd6WGJZYng0WnhOZDJ6ck9OSTBqdGpHYkljbVZHeXluRVNlV1I1UmNacmxZeXJPc0h4Y3hWbVdSMVdjWTJtcHVJZmxFeXJ1WmZta2l2dFlQcU5rSisrVUM1RmhLWXBrM3VBTDR0RHNMdVZrVjNr''@;'; put 'put ''elVkcTdsTk5kNWExRWVVd1pOR2ovaC9pZVFuekg0SmRBZkN6emlJL2xjY1RIVWlJK2xsT0lqMlVCOGJHY1Jud3NuMFo4TEdjUUgwdWxSRmtmVTBmQjdHZ29QSGJCMDZYRTFWTjhWb3VLSEpzYzNNSVR1QUExY1VBVlpWU1MzQkVmeWJBNCtybHVhYzFKT2pFYlo4MkppbzlHeGdFK3V6c3pENnRQ''@;'; put 'put ''S25GYSsvc2NlR2JsWVNPNG5mc2E1M2xqOGcrRGY0c1haU2srYVU1d2NLZVFBSGk4djhPNEZWSEpvZE9xZUtUczBQdy9VWEdDRzZDZlFVMk15WUlvaWhyZmZPVHlTck5aa3pXMENoOVBCRG9yMnNHOGFVNk1JNlVsdEtoSkdnRXRnNjVaMERUcTgreXRabEVLVVc1aXY3TjdLYUtZN0VVWnpJQXBL''@;'; put 'put ''T1Ntc2JEczc2UkVXbGc3cWVuMDBjRGxSdHFMbml3MVcxWnhoYjBINzJQSXpTeDVOMUpldUNrcDdVV2JVS2U4eUFJT3VaRTl1Q2FDVzJqdnNvcGlTbGlvSWo0SWJRWDc3V05FSmkwemd5NkJJbVJ4c3JJUDdZb2RPYUtDZGdMZmV0SXE3OXRDN2M5MThpQXdtNTF1NTBHV2thTHpYUlgxYW4xVjF0''@;'; put 'put ''Z29WNi9jVFI4SDA4NndzZVlYUlJsUExudmZuaFRzVjZjRXVRSkdWM2EvN2tueDlqdlc3VXBKUHRzWGRubmlkVW9WOGwrQUIwUHVsUGNpR2tXUnMxaWxFYyt2VzNneVJUa294a1Z6SEJmMDBoN3RpbFhmbzEzWWQrMmpWbHhXVkxJZlpkQlZkTlp1d2pjK1h3anFRQ29LV3FRaVZuZzZaRDZiblpy''@;'; put 'put ''d3NaUzRMRVhjczJUWFJmUWRQQ0VkNHI4NHhMWC82OXh5Rk55aXloSmRhTmNKeVFkdEh5dm9yU1c3azRjcVJtZnR2R3hub2gxSk4rZ2FncDVJTGpqK1h1QXVqeFhwRk83ejh3Zk1YOEYyNXZnWW5RYStxdWdNeEJMbnJZSUVpeXJlMGs2bVhsQjhoR2tKOEVYVlFyTUNlQW5BWlBDeWFwbDZwZzZn''@;'; put 'put ''WjVhWlV3RllZUTZEVmVZd1dHTU9nM1cxZzY1M0dlZ1ZJRk9qVjlXT21jejVRTWxjd0R5VDBUWG1hWFNkZVJxOXhqeU5ickJORCtCMXRzbmdEYmJKSUdTYkRDTG1WQUUybU1PZ3dSd0dtOHhoc0tYOWNvRzJ0VitNM3RSK01YcEwrOFhvYmUwWG8zZTBYNHplMVg0eGVrLzd4ZWg5NVBoY3Q0QWY2''@;'; put 'put ''QkZkQlB3d2daY0FQK0trNjlFQ1JqZnhqTFk1dHhMSW5JODF4Mnh6UHNIaTg5MWRQOVVqdmVLekJQS0t6eFBJOU52WXAwMzRJb0ZNK0RLQlRQZ0szSEozdjYvMVNOTy9TU0RUdjAwZzA3L0R5amJoK3dReTRZY0VNdUZIY0M5MDkvdEpqelQ5NXdReS9aY0VNdjFYckd3VGZrc2dFMzVQSUJQdXFK''@;'; put 'put ''MitUS3J6WjlXMXFYZUwwbFAxMjUxMzJQa2JaVE82TEFBQUFBRUFBZi8vQUE5NDJyVjlDWGhiVjVub09lZEt1cElsMmI1YUxjdWJyTlhXYW11enZNalhTN3d2Y2J6RlNSeG5jNXkwS1YzU2xpNGhwTFFORkFxVUFXWllocjR1MEtGTVM1SzJkS0h0RkNoUTJxSExERytBZWNNSDVRMHpMRy9ZQmpv''@;'; put 'put ''d2JYMDkvem4zWGxtMjdLYndmUysxSlB2cXJQLzU5K1VVbGFIRnRTVCtGT2RHSEtwQWR1UkNYdFNFMGlpSHV0QVFjb21PM254bmV6YVRiQTc2NnF1ckhFS2xRVU5RV1NLczlRZ2UzcDYwZSszSnREZWRUUFBzazRkZjFhZjBHZjJrMzhDVHRQcTcwb1oxeUNiVCtGUFNzN2pyUDN0NjcrdnR2ZSsr''@;'; put 'put ''M2thUHA3ZTM5MGl2NTliN2pqUjZqbmp1dSs4K3o1RWp0dzRNM0hkMG9PRkY3bWQ5SHI4SGZtNDYxamd3NERzSXZ3MTRPbnNiajl6UTVvenZ2UExLQjYrOGNtZDh4UlAzd0E5Q0JFMnYvUjZkSStmWTN2eGlJOElZTFNLRXlrY1JJZHlTQm5PY2t4dlRhRFFWbW5LL1VLbmxuV0Zya3ZNNkF1bFVK''@;'; put 'put ''dG5xc050MDN2M0Q1b1RHN2JaWnE2dXQ1SnhrZWRGdHM3amRGcHNib2JVMU5JZ2Z4V1BrazVXTnFBeWhTZzdlSDBGMDNpQzhYUWZ6dWxFOXVtSDB2SGZuYmpGVW9TTkl5eEZNRUY0MllvT2hmTFM4MHN6eHZIN1JWRWIwZW1GVWd3bXBJR051TVVBZnNDK1JuajlhMms5cHVDRFdJVlJmVjFzRDA3''@;'; put 'put ''aXJYVlZPV0xCVktQemphOE9ZVC9KZTNwdGxyMnlTdlpJOGUvSDBTL3liekkzbUcyTnRzYnZnZGEzNTJzdzd6ZGNwZjkxZ2Z2aXV6RjM0YTk5TlB3Yi8wdDlOUHc3LzB0OEZTTWJXSGlVUjhnZmtRU0VVUjUxaUx1YjMxZFZXdTV3MnM2bk1ZT2FJRGlPT2pDRENrWnNSUnZnV0NtYTBCSEJ4b3JH''@;'; put 'put ''bXBxWjRVOXhoRnl4YTNoSDJsV1BBa1hRTUI3TU9weERENlZRZVp3RlpIRTRlbmdsMTJJNGN6blE1ZkdUU3FVQlFJSkhVa1IxaXo4bG9hT2Z4b3dkYTkrYkVLeFpEdnBubzVlK1E5b3M3T2thd2VXWjA2dWE1Tk5mZHkyY2pyVHNyY1dYMXJxSGtiRnJYMldXY2JmVkdlT2xOOSs1SlhKTzIvWjRm''@;'; put 'put ''YnBXeUk2bVdEb2YwSnF4TmkrSnIvMFgrbFh3Sk1NVUtweFpISGVpRjBmTlZjSEpoSTlhV1lhelQ0aFdrUTNxRFRuOE1hVFJvaVdDS1NXWTRFbTdKeEJPT3ErREczS1BuZzlBbC9wWmRFRFJsL2ZnbEUrWjVKdzlubnR5aUJ5SFFsblpEVy9kYVdCQURpVVJEZzgyR1VLSWowWjVKTmNRYllxR0Fy''@;'; put 'put ''ZDVXVjExbHRRaVZzSm55UURsdkQxdGs0Q1piQWFhMmN1ekZTZXkxVUtCNkczVjJteU9KTm4yZngrdmYvZlZBTURRWWlRN0NleFIvcUZOcTdyd20xeDZKdExXSDhkUkFLRGdZbGIrS3RkR0h1UWhlakU3RVczWkdvNU9KbG9rbzNyVTZoVDg0a000TURtVFRBOUx4NkVSTFlpSVduWXkzVEVZVEE1''@;'; put 'put ''bjBJUDBLOXNlaHByWGZreFBrTVlCOUdQaFBYdXlJUi8xMU5XNlgwNERMT0ZMUGtJcGlQbDRDTW5hTWFvdXdLaEpwYUlpa0k2bUdjRU56dUZFSG1LVU42cnlOZEUvWjRvM0JOODVNMXFuam5ZanV6Q252MHBJTkJPSFBPcHdraWFWOUp6dVA1Tzd4MUVYR0U1SGg4TnhjNXNwSVV5YVJ2RnI2ZEZk''@;'; put 'put ''dC9VUmZyamswZmpwL3RubW9tVCt3M0xLUXUya2dPdWlMaklUREk4MzVVWi80VHZGQTFmSGhhOGp4OWxoTlY2Z2hHMjd1V2owM2Q4dFkxLzZRNkFWaUFINkJQa0UraVV3b09ucmVBWWhpcEN5Sm5TOEdKS2hFOU05NStCTXZVdElaWDNqRTdpT3dIV3VCSTFWZzcyeDVsU0E0eS9rZy9vOUQzc29x''@;'; put 'put ''cCtBOWxJSFcrYlU1SENOUHdkaTZoMDFhbkFnek5wWjFBdm5ZblB6bkw3bmtzSGR1NFp4MzE0OXZ1T0hIdS8yN3YzN1ZEeTRFWUNLZzV6bGNwL2JUUVQ4bkk3YXNETERZdVlVNTcySG9mTXVGSDF6MWRlakh1dE4rSGZnbTRIMWZRck5JRkx2OEdKUEpIZDJ4UnBkTnEwZDRGOVlpYm9URFdJT1JG''@;'; put 'put ''cU1WSGRacXlSSkZhTzBZN0c0V3pRd1BaZEpOd2RvYU4wK3hFMWJhalhuZ0JuQnFRZmdqbStuR3dZRDhXN0xWNmFqSHdTSUlaTExBSnRoenV3MDZWV0NIMDhGK1o3M2hQeWRqM1Y4MkczVGVpb1p5cmNiTWE4cWMwWEFrWmkvVDhHYXR4dExzMHhuTXdLejB1c3BLTG1UVGFzMDhWeWFFZFJHbkkr''@;'; put 'put ''d280M2l6VHVNSU9ZdzZ2ZG1BYnpMcmExcWFhOHhWUEdmU2E0eThXUkFzRmlOdjFPaE5YRmxqVFhOTGpkNXMxanRhNDZaeXJzSEltWFJhRTE4bUVHZ2ltSGlUVm1maXloc3MrbmlyUTIrbUI0djYwSEZTVGxMSWlBS0FFeG9PYTJZQmw0RXpZQTR0QTduVG85ZmdjY2JESzNWOGRSaDdxZlJNVXlt''@;'; put 'put ''YUpPWGZ6RC8zWFA2Yk9QNU4rZ3NkYjNMdE5Ib003VVRseUNrQzZhSkJGYVdBTUh3V2lqMkE4NDNySW8yZkRKcXRJTkdjTmZXaDQ5RUVGVzMrdWxxeGxZN1ZobjZMTzNBTXFMRkt0RE5rbkYxSFJxR1NvYUxIN21uRG5MU0tZMTFzUDhNZ1l6OEg4eHVwdGtDZkFKZkQySW5wUVJ0Um1ZK0RBeTZX''@;'; put 'put ''cUVjVWFXb3FTRks4OXB1MVIvSEh5VTloWGtFc3A0T0M1TUJYeXhOU1ZvVW5CNlM3QjhoUDMzd1pNZm5hQWJ6aUdIa1MyRnM5aW9oTmdGaHN4ekpYd0NEWTJRSXFnWjRxNnl2cnFoeU1EK3BnSVpyTmZJNmtVekhzYmFSRUFnd0E0M2NQRHI1N2F1cjA0T0RwcWZ6QlRPWmdQbjhva3ptVU4rMjla''@;'; put 'put ''MlhsN3IxNzcxNVp1V2R2NTlqWnVkbjNqbzZlblpzN084WmdVQTN2YjRDODF5RzNXQVZIeVFHOFJtU3VqUUUveHdRckF4MGZ6Q1lGNzVPMzFENllFc21CMlphVHExT0k5VytCVGVsaFB5N1VMQWFOWmJBZHdBWkNSaGc0R2J1akNzc2lZakpHY1BxQ0dyNHFuUFZUL2tWWHp3Y0xISzRDdy9tMHdL''@;'; put 'put ''bjBOdTFvdW1KbkxIcjljT2VoM05qTXQvQkpxYW50WC9LWHBwcDZBNWY3eGY3VVlxN3YxTkNEOGhtR0FKNWFtRCtNdXNWT2R6WE01UU9DaGhYQU1rQ1NRd3NDY29uak5FdUFvTEFZa0pkTGxLYWRqSnpEcU5ubjkvajlQTytDazZhY0k5bktXR3NZcDUydEdYbU5PajZZVWJtd0F2eFhUa1dpdnFQ''@;'; put 'put ''NXhGajQwTnlPZ2JGOXpjT1J6RUpUZVBIOStTUHRBMjJkVTUyWDlKcDYycHVUV1g5UFU3NjNFL2QzK3ZPK2RDcDBLakdYN3RvbGxNLzJaZmVtR0Q2RTRDMEY4QzlEWmhRVm0wMFlVSEJFcDRWOVlBVDY2bEVBSVJPbEZab3hvOUZvTmdJTkM1Wkt1bDYvSjRpVEF0Vll2V2tCNDl1a3p4dnd6UGls''@;'; put 'put ''bDRyU3p4OXN3eTlJdVk0SGY0WnZrTTdLNTlRR2NITENQQTFVNzNFQWV4TXFPYUpCR0U0SzNwR0dBWWtzeXBKN0k1QWFVSDJqWUEyVUFFaytQMHBWZkthQWxqOStWNlM1ZWFVOVBoR0pUQ1FtUjFzTitJUFNRM3pmWE9keVovNUVyNms5R1k4bHcyUFJ5RkFvVzRXWHVsNXZTUi9JOTZ5ME0xaDB3''@;'; put 'put ''aHI5Y0padTBPTjd4VzRnSW80RXFvaFdRMFowd0dJMFdrNnpnZ3BpbEljRnF0eWlwZ2FobXFhYWtLOFJPbGQ3L1FFOUtNUklXUkxsSUJUTG5IeUFra3N0aGo4czZnYm9rU2J4ZTQ1MmRaM29QWDFtOE5UWU8yWjlvM081L1pucXkzcjlFNUhZUkx6L3NMbHkzeEIrTUhPd08zK3M2OGs3Vi83bXdL''@;'; put 'put ''N1c0YW5iNTJ6cGJ1bE1mTHc1UHR3MDNyVjdXWVp6QjJ6RXdPaXBYcXdCR1lJWk5WRStoSm51RHRvdmFEY2NMQTk3MGg0N01JaW5wSGZqbDZUdkRKT3J1bHBXMzBQMWlSVEFvWWJCSVF6ajlZczlOaDBCYmp2Q0Z3RkI0UnA2QUFLR3MySmNJeEtoY0loMFJOcFRyVFhobW1ZWkdoRURaV09VZTJR''@;'; put 'put ''MnFSUUtmQXF3a0ZtSlUvazdXRTRZWi9uSjVUMnp2WjNEM2NjNk9vOTFqN1gzenZaYzBkYzBFbytNUkVCN2lJK0VXbllsVXRPUnlLNTBZbGVMcVdVKzI3WGY3cGpMcHFaanNabFVidGJtMk4rWm5XL0J0M3R5Zmw5SFkyT0hMNUJySU5JRlh6NFE2dlppN08wT0JmSSt0Tlg1MTFYQzBSdjBZRDhR''@;'; put 'put ''MkxvV0NGbExWb0FVT05ndnh6bEdpNlNGZXY2TkRYVEhBYStmbmI5RFBuNVEwU25DZG1INmh3SUJDNFhGT3ZQODNLYVQ3Mkw0c0lPZGZBdkRBdkxreHBPWHNVRTZRMDlleGdGNUQweW00TmRCZnNDeVJzOUhRVk55VXFiT1ZpckkxcHRXdHQ3Y1ZGREJkOENrVm9xZkw0Z1drd2toazlQa3NGUXlR''@;'; put 'put ''YVJUTkExVkVKRXRoSkpOK2NSMzFsaXBkTExXU0hPcW5BSjdqOGxhL0RyWWV4V3dEaDRKeUlTL2dBd1hNSDRjZitGOE1reHhONHNXc1VTbUFYZDFEK3NJNkZQV3ROOXV4dllzZms2NkFaL0ZYWmxYODA4L25XZjc3RU5mSmVYNFh3QmJlZFFvMWxNY3AyWWUyRTRjbVZWWVB1R29MbEJKT1Q3bEV2''@;'; put 'put ''Uy9QdnozVXBxOS9pVi9aeDdtSEVPTHhLck95Y0djMlNoT2ErM2FNWHdXNW54T3luMGFabncxOHlxZDA3MzJlL3d0d0k4cTVFTlpNZVV3R1NtTHhKVE5jekR4NlNLWlF4bStGbXMwVHMyWXkrWHl1YnorS2w5UVJ4ZWl5czExcnM1TXVXSTUvMHo3M3FTdnB5azc3dy92Tzl1K21FcnViZTh4cStD''@;'; put 'put ''OVdodnM4RFoyK3BMeDVwTXRNOG5JenB6eFBVV21OVjFuWk8xMmJnZTVGM1dqQ1ZqTCtUckFBYUhSUS9SY2c0Vm85SjBkWUdkeUkrNzFad2IxMllMY09HUTBFQTNJQVIzbHlyb3kwQzM1dzBoaGRzQkU5SHB1Q1RZbzZLbk5WZy90bzJCY2E3QmhIcjNkVGszVU5nU1k2UTJjZnVXaW5iV0FxUzFV''@;'; put 'put ''Sm5CSXU3SjlMNTdYelNPZGpsOWkzU2NYd01hckVrV0V4QWx4ZkdnQWdKRVBCSm9DdmtEQXhMdEx0Sm5HUUxDSU9sc2R6cXlUWnlaYzYwYm1sR3hsZG9HWHF0SE16cU9QSFVuY2YvN1lWVis1NHNpRFI1TlRzV2ludm02MkpUN2MzSE84dlhYUVltNHZpNFRxNjlvRGk1L1p1L3pGbGYxMzdjc2Z6''@;'; put 'put ''bHJhMzlFZjNHTWc3ZW40emtSUDZ1cWpEeDY1L0N0WEh2enMwc1JsR2JCREU1R0paUC9KdnBpM1Y5djZUKzZHUUhpaGQvWmo4eXZubHZkK1pySEc0L1kzdkxZOGFpdEw1ek1McWJZQmR1WU44UFoxNFBzOFNQS3dHREpnQU13SVlDQ2dwQWFrT0JXcllGUlFqVXF2MTVmcHkyUVZ1UXFrT005TTJx''@;'; put 'put ''QVJrNngwN2VBQWp0T2Z3L2ZmZjg4OTVOenExS3Y0akhRR2dMNGZ4ajhHNDFlQ3B0V0l1c1IyNFB3d2d3Nm9EdVNqZGhuT1ZuRVE4VmpXeE9sYzdtcUw0S212Ym5RM1Zqa0VsOFVWYWRBelJYaWpBUEJncXVxQXptTzNLcjhJKzNGcmRpNlJqTGYzcFJZN3BLL2hVTWZvZU5kUGZ0TTNOOWYzRzNJ''@;'; put 'put ''dU10R1NIbmRXTDdabDVoTDQxcjUwcXUvWDBxUGpIUjFqMG04cEg2SHk2d05BcDdVb0pvYXJYY1l5aWlRaktydDJiSEJod1lOYVZCUHdCNmdMUzdOKy9uenBtZVBzdlFjTzNMczRjS1lsRXJva04zN0x4TVF0NDdsTFFwR1dNd01tT0xtbGV3OW1XeU5OaWFuM1RrNitieXJSSEcxcGczT2hjSHVF''@;'; put 'put ''NlZkMlpyVVV3TVFNY2dWTUpxUE5ZclNiN0lFRzZ0dXhxbGdaeGxrRi9TaEVmbjdKZll1TDkxM3k4NS9QM3pZK2Z0djgvZVRjN3I4K2ZQZ3p1enVHMzdOcjEwM0RxODh4K1Q4Sjg4VmdQaU9LaXhHVksxSmRTck1Jb3F1OFdCdG1Wb1pSOW5pQmFtV2wvRkdRWDNmZzY2VDM0VHNsRC80UnVlcTF2''@;'; put 'put ''Q1Ixa1hOZGhmSFRNTDRCTllrQmRYeks2ZGlvcW9vQlh4aVFnWTdNZUI0YjJjdkdQU1hkMG9QL25RMzZWWFZNZWw1M3dubDVVRnBzQmEwTGNmV0VhTFJNaWRkcUVFTXVaZ003cUNiS1dDeG9HNkFSQnJ5eW1lY1JOaEx2cHNOTGUvRUhzTFhsanVGRmRvRERkOEFCWHQ4bEgyRDZSTk4zOEdIcHYr''@;'; put 'put ''TTUrUWpiRWxIMUNQMmU4Nml3NTZzWVRJT2lUMUZYbDBGSHB2dWxmcWtLdEJtV21PNFdYa2w0SjFlSjBxSW80bnNwT2VGdXVtM3BKZHdxajRzK3pIeXNWdXJBV0xkNVpITVJESjVKVWFTOXFKMEVzdWNaYUN0UUxHTG1CY05vcGl5VEpRNlF5Y25BTHFCS20xOEQzWXMwWlZnR0piTUhUelpFblh0''@;'; put 'put ''Ynd2MEJFYXd6VTNjeUhzMUZkcmJpZjVSaWZaZDB3aHo3WUtncjJENGJ4RnFEWGt1WWRNUE04OGJKbmxPcnhTTEwwNlNBa3dhZ0NSQmQrMFI4NmF6MEtrNU5TNys3R3RZcm5RU2Qrem5wL1hqazFFc01mdjB3TG9GeHRWUW5aWXVtb3pFNmtFR25SVnBCb0l2MkE1NGtCVUtrWHJFTFVHNzFRNncv''@;'; put 'put ''cGFGZnJLK0wzMkpkTmtGZGx3R01FcTlnZ0JQWUwySWQxb21pOUxyME9sMldEZi9INmhRSnNzOS9Wc2Y5UzRiTGRhS2JKNlJrVkV0aFZBekw4c3BqUGc0akR0RmplWUlNd25pRHEwOVEva3R4K0hmL1AreHFtZW5zdi92QWdidjNqOTg4TVhIenVJeTRDc3M1ZU8vUzBtY1BkazY5YjNMeXZWTXkz''@;'; put 'put ''ako1UUhIMklPek5CSHdITEdOWUJaQXFoNm1iWk4yUkQxc3NOOXNzWm51NVhRZzA2S2dUMzFQZ1BYYXZ5cGFGU1Z3OWNHVlB6NVVELzBmRUZmTW5Uc3kvVE02MUhjNkRISk53eDh6ZzRLejBmREVNYkdCVjVzUU05YXRyaVE3TVBPYUI1RENIaDlmTnAyTGZ0dDF1RDltRHNVQ1FNbUdRNUU1K2d6''@;'; put 'put ''U0dGWkZzTU92Y0pJcko3eUpOWTAwNzQxZDJMYW93V3B1NHB1bTZCbDhCU0xqcTJrUnZZa2NnWEFDVzlQMzhjdUpZOEZDcUdGeEY4Q3FIOVlEOEpOUUJwNXFteTZDS0tPeE5JWGVmenlNSVZzcDdZTFZXYnhCc1lJRkJUcHRVWUVZT1hqYi82TWpEejRrTWRGTHNaUVkyZk12VjVSTDhZK0Q3TklX''@;'; put 'put ''YzdFZDhqVVRJVXloSTVaWERUdTFpUXJWS0ZWVFV5VnNrcjRJbzRJdjRLS2dvalNzcVNpQ29RbXVkK3ptY0NrNzk4djNwMEpGYjB4Tk5lNDllZlZuSFNzOHRKMExoNDluWVVOT2VvMWRlbVRzeFlzeWxXbzk0TzcyWnJpcjM5SGgyVC9KUWEzUGMyK1ZyYVhPNWQrL01MaVJsUGhnRkdBMHpIVVAy''@;'; put 'put ''MVJUTVN0bTVvcWphMkF0MnBSZW94ZjByVXZNckVjektMb1dPNXdBL3prSi9PL0tJZFlwREgrUGlyZG1SemVhenFhS1k4cTJOTEF6WG5oa1Vzd3p6eE1FelU2YVJXMmJ3SjZXVnZ1TWRIY2Y3Nkc4enQ0eklhMVgxSVIyZFM4dnNZT0NhQ3NPVXVRNm8vRExYb1h3TStBYjV1dlFQQS9DRFRkaEV1''@;'; put 'put ''UzY4N2lJSFlDdy9tRWthUmtzd1ZobmwrOEFvYUZpSmlYRzJlZUFVbGtvdGxhSkpONlkvbk5lSXZmNmhiend6K0pXdkQvMjg1eHZmN0lIaG5pTDk3RFZGZHE5K1hsNG55RkJ5TStOdHdCc05PaGdhanA2eW4vSlJMT09heFdJUktGeGhsVENrZ1kyT1QySGQ1STkrTklsNTZiOG5mL1RxSko2WDdz''@;'; put 'put ''Yys2UWQ0SHUrR2Q1ODh0Z1hHUGdOajYxR3RXSzNqZ0FnTERFN3hCRmdFNmdsUXhvUWpDMG0vMlBuVG4wOUkvNjhQVitHL2tqNFBveDJYZmtiSGFvZXhSRlh1VTNpdXU5a0t2b1dDbTgwaXNCVm5aUmNEQ1A5Mi9JQzBGNzhoVGVNTHE2OG5TWGRYY3ZXcnN1eWZXdnNnYmlNL2ZKdFdYQklRQzE1''@;'; put 'put ''VFB6MTM3cWZraDYyclZ1cDdYWHRqN1ZGODF6WStVQTUwVyswQVhwSmRvQmkxd0h4VmhmbGsvOXd5b21vWjlkZlMrZEQ2ZkU1ZyttbDR0Y0IwUCswaHYyeDk4eHdkUG9NL2d4K1VjZXVDN2tpLzZBRHV6cnlXTURQMTRGNnRlRmd1NkZDL05RbnNnZmQrTDNOWCswMDM1MEFLL2VyVlYrbWFwYlYz''@;'; put 'put ''a2wxcjUyRzZCamJHTmo1ak9nUVBBQ1JrWnZXQm5UbjVYTHVKaU40a0wwTmZKK3RyZ3A1RDhNM1ZGaERIOHF4WnA3ZTc5OFlzK1VyRmgyWCsxZ3I2d3krSWdLb0I0M2FLNDFXWTB6aEJJQWlneGRmVmFqbWRWa1BOV0syT2FHVnZKZFhpWFl4V1J2VllwMU9WTGplWW1PNkEyKytwaDVGY1ByL1hh''@;'; put 'put ''Z0E0SVljZEFGWHM2bUsyRWJWd0xhQitxZUV3ZlBwRTNuMGl1K3VTekdMN3hOTEF6b0ZwMS80RjF5WGxzNU05dXljNmlIRE5RZWtidXlLdGUwZGFKeUwxOXI1OXNXU3I1TTYzVFZmM3RDYTc1SmcweVlOOHNZQUYwaTEyVnBRUnJZYnh5Y3JSZ2x2R3hYU29EYzQ1cXhVaGE2UFY0M1pCVDJEYm01''@;'; put 'put ''eHpRWXBUUXJGUFRoVzlIenVSejUvbzdUNWNuOC9YSCs0T3pTUVNNOG4wZEN3Mm5TYkM0STFqWTZjR085UEw1RW5wMzlLZFVrM2JvYzdPZzIzVTdYMHdDMmVVQUhqL0J1Qzl0UTNpMnQ0R2NieWxEZkxiR3dZSGJ4aEtMdnJEN3FGZ2RsODZ2UzhiR25hSC9mdFRwcUYzall5Y0dncjVtbXNiY2dj''@;'; put 'put ''N09nN2xQSFhOL2laNjlobUFtMmNkYmdMSDRFYWh4UURIVkd2bHJIbm16MU1VN0dLNFdRSmVnY0lOS3dlOXZrcUJiSmJMSGdxdVhoVjROekdJSlJuMHlKT3JPNWJUbllPbnhzWnVCT0JoOStwVldRcXhUTnZCenM1RDFGNEN1QkVmd00ySjZxaVZDVHlHSTB3UUUwNURsZ3ZMYzQzcWl2U0hxaXFF''@;'; put 'put ''cXVxcWF0M1Y4SmNEREFPNlVwOE1zV0l0d2xOSGtrVEhlMkN4K01nQmQ3RGgrdmIrNndaM1hMTmo3QjBkMHFnMk01dWF1TFFNWDZzN01CbjExVFo3bzBPbnhrWnZIQnkrZFNFOTM0TC9kbm5uMUJGR2Z5QVA4QlI1QmFUVkhyR3NBdXUwbFJqcHlJanNES2xCT3AxMkNUU0dLbVp3bzBYUWZtVEhH''@;'; put 'put ''OHRRcUFabFZ3ZDB0bEw2NVlKWTV2V3kyQlhQdTJWZTU2WDhoem1HbVBOWVozL3MxbHZ6TXpQOXFWU2t3UkdvOWhGdFRrcmhiK2NHMjBjOE1VZXpSNmIxK05vTXFRRVkwbGo4a0xpanJwTG90SW9mRTJnWkdKNk9yRkQ2aG9sQnNhRnVHVmZCbVdsRll3MGdPK1Z3T0l4UUgvRDdmWlRHc2FDUUM3''@;'; put 'put ''TXFNaHU4bVlBRjZSSXNxT20rY3FqelNsOU53MkxMd3JHNkZiSDMwcTZ1UzN0N2p0YmRPcHRJekthVDAvSDRkSkpvcGRiZWxmWkFmV3V0Wisvay9uUzdlTVhBaml2RVhQcVF0Q2N4bHdYN3ZtVXVEZEJuY0IrSHR6OEFIdHRwcE1JaSs3WVpEb095eHJ4dHJpSnpERlFKd2VhMVVmdVQwanFBVW5I''@;'; put 'put ''WENBcTU0OHNXV3ZJVCtlaElPSiszTDdZUm9YVlBUbm9FOS9kTUIzcUQwbU5BMTYrRk13eWUzZkQrY2ZJVmtORVYxQUlzdUZPcjZNRUpvNm8xWFZGdU5qRjNxWGFUdTVRSEViTGI1YkpZNEFXOGhGemlzZ2pWMVlMRnRiejZCb3kvOXRUYUJQb0lHOTlOY2I0QytISTUxc0JwYVl0bTRqaUdKeHJn''@;'; put 'put ''Y2hxTld6UEdYTFJ1VTdYVFlSWFlySHlKazFZNUtxWTg2Ynd6eWdyZUVhMG9NL3NGdHpmZm4xcGZ5cHMvTWZCcExkOVVUektyTDdRTk0zZ0RTd0RxZXhKRzk0b05CZzNRRzZleVc3b2FWVDhSckV6YVl5cm9HQzhGMkZiL1lPTEx5L2s4YnByQ1ZkTFBmblgwZlFET1doeVY1UmM5bnZmRHVLcmRX''@;'; put 'put ''MWxpOTQ0QmxJQlZ5RzI1SU9DeUY2WEVsb1pxMmU3VmFnVkdYTG9sTUFaMU90ZW9oc2I5NUhQM29rYXZZUFZhdlRZRFVGSFIwZXMyL0pLMHkzZ0w3K1MrNlZoK3FFMmN5Zy9TdDd4MUt0MCtaNi9jMzFtRUVoUDU5VStpSFd1S2Q2WkFKQlZ3VXRpRWs4S2ZnWlAydDRHVDJsbUdrZ3FmSElSNU45''@;'; put 'put ''bWJyb3ZhbTQ2M3RqZGZPelU4ZkdwdzhNYmg0UnNITTR2WjdHSW1TOSt6cHBGM0RRMmRvaElHNUV5dS9YQXVkNmk5L1ZDdS9WQzd2SjVwNERsNVdFK0piQmFLWmZPNldLWUFzdUtMeW1ZVk1IK1diSlorVFM0c2w4aG1LZzluUUI0S1c4aERvVWdlcm92Q1Vaa3ZiaWNQaFl0eHdyZVFoOXJWU1N5''@;'; put 'put ''c0M4UmxLYlJCSG1JMERmaTFBR3MxMFN3OE9UcXI0dGU2SmdIQ1E3REpPcmNsazdRWE1PcHZUZ3kwNzAwQ0diN1NrNHRQcDZVZkVlMGwxSTREM2VScEdET3dwYjNwMm14dkJwRGZGeTYyTnpQRjVxWkRrVXpVMmlUczJMNTlWZFN6YnlFOTJEZXdmekkrMVJvLzBGeS9jNlNscjJ0bmRqRGNNcHN5''@;'; put 'put ''TmZsaXZTMytZTlR1N3NzMDkvcnIzWW1XcUsreHFWcnc1Y0xoL29ETUkveXd4aW55VVpEbmNUSGl4RHEyYjhMZFRGa2lXYVRPVTRDQlRxZHFBRXh1V2h1cDRQVExlcWlnNUgwQVI2SnUvRXdXVDlsYXExUDlNelA1OTd6SFYyMnBOOW9yaFpGMlBKUDcwSWR5MGdPZVpsTVo0MDB3NzM4UnJVelBI''@;'; put 'put ''TTB1R2RFQ2Q2R3pVZjBJVWVKQ2FwS0dIZG05TmkvemNSYnBSWlRkeWxhNWdQK0xrbkdiU3RSdzNHOEFCUU5SNHpIcEtVYlVlRmplTCtqVnhFYTBhaDZFYXFtcHVvRmdZUmFGVlRZdDNUc2VmMnpIcTFrUW5pUDRVU3BETUxBOXhGbWhmNm1OS3J5MWplcnR2ZTB2TWg5NWYrK0QrUTkrS0E4alR1''@;'; put 'put ''Q0g2R3YxRFh5L05GK3dwZkVmWVd5V2QxUEdhN0NHc2pscTZjRFlIQ2x5Z0lLdFN2SEVBeGFQTlpoMFpwTzhGWis3OTk3aGIzMWwrTk9mSG43bXVlOS9IK3RYWDN4eFZmb2pIYmR1Yll5NFlGeUJ3dHFvSjdCa2pNRUFWb1l1b0tHYlV6eWJGcHVYb2FHTWhkMllZN3NveC94aGYyV3R0N2FwdlA1''@;'; put 'put ''Zis1LzVVdCt2cXNheWp3alpDcWVyajVpbEx2enM2cE9kV1N6dkJkZ25mZ25tM01hT0ZkN2FqczNnUHVsWmZJZjBGQjZRanJYZ1QzYTBTQ3NkYk56dzJoNjhsendCSEFWZzVHSnlvQkxqb1VhV1ZRUU41aFdDeFdoU2NGQXhwNG5oTGd6c1AwMTFLWnE5NlN3bmRxY2NGT0ZwR0p6SHBsbC9JdHNX''@;'; put 'put ''OTgrT2FEdnlMdXp6Qjd6WWxlL1EzaG5xVDM4d0ZXMkpwVzdQOUFmMWNYMU5vdm1PZU5aa3ppUStIRTdVNk9Nd3kyVnJqNks3dDdHSnFZUzlMSlZTa29Lby8ya1Azcy9XSGhMOWVtYkxDbUJSTm1JOHVKNVd0MFJCTlVtelpRbHZDenRCYkFUbGdINld4dXF6ZGFRV0E5YmJHM1h3Q1NjU1l5c09C''@;'; put 'put ''SHhzeFNPei9uaGJOZ0U3ZVNjc052emhlTlpzeXNidmFLYUwxUWY3TTdlbllpM1IxQWZUL1NIOTJocnF3YzM0TlA2Q3dHUHptaVQ5RWhrdUlQeTQ5RXNXSmFheVp0ZmFIUG9pRVZSOWpLMk9DanpYcUpwRFlpVWwraGpUaWVSa0x0QU9raDlWNHFtK1lYT0NDR3I4ZEhVSC9wVXFYeDhGKzIwYzFR''@;'; put 'put ''QmxBWmRzcUs5eFZ6bHRWck8yVEZhQzFCUmRXWGxtUEVpb2x0R0Zoc3U5NlJoUmMzTHBXZEtrWEhyR1ByQ1hnRHZqbDJaall2NUlMbmNrTDhhbUc4TlYrVVp2ZDFWWXVtbStyMisrSWNSMTl4ckhydXJ0dldyVUtIWnhRVTl6ZFQwbnpXc2FxcHV2UGluZ3U0V1RjdTVVRmhZYVlYR3VQbEdFbzZW''@;'; put 'put ''SkdvaW51WjQ4SHRaaUFreVRKOHpseTVSOG1xM0I4MFZ1OTFwVUs5ajhQdERmcUtya3QzdlNXWll0dDlIOHJNVTB4NGRFSkdOSExnY3lkTWRKVjd4eUlRZWMrc1VYdTdycTYxN00zZDUvb2xOTVJXTnQwYW5rN2JrWE4vaWVITlFUYk1QSWdNSDJRRHpMTmppcXd3VFVGQTNobHN0WVdyYWNYK1N3''@;'; put 'put ''V3kxcUNuYWxrU1poczNSNHU1ckVCeTlHOFBpMmgxNTU1WlUrZUQzMFIrcXR3djI1UGJucnJvTTNmQ2wxV2JIejZ5ZDc4Qng1Z09WQnRESXZTWkFtQ2dJeU04ZmxrcGFqd01LVFcyUTZVQWRLc1NMZFd2VDd2cW9xb2RKVkpaeFRQc2tlK3VtcXBML0xuNEMvWVpUR1g4Wi9WOW1JdzFwVXllRXdl''@;'; put 'put ''bEx4Mjh6aWE4alp0K1B6b2ZrSzNUZ2p2VURPdHJ4ZG40K1Q5ejdSZHpaTFhxNDRJL082NE5wTGdNUG40TFJCZjBkVWZDSnltb3JPOTFBeHh0eDJ6RzBiWUZJQkt6cE1CMVZwcVAvVzJMK1NhenZjOWR2MGpXa2NidG1keSsxdVdhMG5YMXpkSmVkaS9nUjlDbmNBME9wRWR4R1hJSlI5VEJZbE1H''@;'; put 'put ''YUtvTGRZWGMxTWtKKzRyUFRENmxMOFdXc2llbzFtUWFKcjJkNHFuVGJBWmFzQnhKZWU4bWV3ckUxZ1dUZUFPZzN5V0hNRnpiWUFycjJ5emxnUDBHRjJ1a1VQYXdLWWRYcTdOZ3NpelNWMUlaZlY1L05Sd1UxQng2TFJ6TFpWdEJ2cXV3TGhsVW0rRkd3TFZjVXFMYlUrUjUzZGFpdXY5Q1NxTlBx''@;'; put 'put ''b3Y4WVhxekFIS1JKWWpjSkVEck9haGhTYys3UHMzQ004UGZjSWVsckp4eGpCLzh6NGxRKzFpOW5HS3FkSlErVHdBa0YwclF3aFpRWUcwdWNBVWtTZXordDIyYTBGdkVURkxFeEpqcUp1SVoycWZRS3p3U0dGcjNtMnlDRlo1M1BTbVMyeVNOZ2VtTitjdTc2eUVkWks4M1Q2MEVmUkY1RCtBc0hu''@;'; put 'put ''NVRTZExkb2N4ODV0MnB4VTIyQWVmWEdiTml1Rk5tWjB4elp0NWdwekhVV2ZrOXVRelcyK1VSakhpTDY5c1kyY0g4RTl4R2pCZ2diRmZvSHlJaWIxOVFnREY5TERPZWcxeXdaZ2tMcEYwQ3NWZjdaVzFweVlHV1dwdEVEdkNvVkJHWUZqWWpWaW5xWkpGS0FoZ0NWaFV5UG4wbXY3Ui9EdFJDZDVm''@;'; put 'put ''cWFFMEdsQ1JaZjBEdndSNlhLa3hMMUZscWVRUWErTDdrdzZHTkR3T2pkZ2FqVU5tYmtxQUkvTE1lRzBDdnBIYUN5S3cxZkFHOUs4US9VeU9VWVI4SFRGcEFMcGR3RFc3U1kweWNaR00zTm9INFExcDk5dUoxcHZFOXZRaVR0MXNWNWllSE1IbWcxRmptelJENDNSdEJ4andOOE0xR2NGQTZvR3BH''@;'; put 'put ''VUZWdm5EWmdxVVplaFdybEN5ZUcxUHVVWmZ1NWs4cStZL1ByOVZqa1k4eTNueFJxcHQweC81eko2U3BBMktUeXlIZ3VGM1NLR0I5ek44d2tWNHVibk5jZlR3Tm0xT3FtMkFCbTdjcHMxY1laeWo2Q3E1elRwK3IxRXQ3Y05zcm9pOG5yVTd0aG9IVnhhMU9ZNXNtOXVzL1FMR2VZMnRKeUt2Wisx''@;'; put 'put ''dlM5cjhPN1Q1STF1UFBNN1J0WHMycmdkb3FSbmVYbUN4MGxxYXpidFIwMWpVWXhvb05SU3BHaFVWOEZGYlVjTktyZXpRelF3eXAyemQwR2ZHVTFKUWpYeWdxeVFQNWl0K1RrNTRHUmxSVTE2K2cvK3hrUGFDdS9PNGRmVjJPZm5sRDNsV2lnUndZREY5eGxOYUZKN3lpUkpZc1RnMWcxV3JjcjZQ''@;'; put 'put ''bGZDZHpXMk80OXcyYlU2cWJlQjhYOW1telVxaGpSazl0RTJidWNKY1I5RnptL2dYUnJ2UVgrS3ZFUjBJQTkzRGVwb2JDVXBsRUVna21IVm1uVGh6ZStSMitlZURZVHloL25iNzdXR2s1dlAranVYSSsxQ2MxZ2RGd3JVMUxvZkpvR2MrR3BhMm83ZzlISEw0UkZjVVB2SDcvWEYvTEdnTldsa0d0''@;'; put 'put ''cHJWR2dBYkwxdVVMNWZra2NPSkZUSkZja2dhVSsvSE02a0RkKzl2dnpTV0hwNkxaNEEyMjA5RTA4T3pxLzhXOHVOVC92a1kwQ2crY2ZORXlDZmRBbitSbW5mdldQcnN3WUMzNjFETG1SMUFuZlEzNlRzcklmeHdUVDBRcWZUOXFmZE5abzgyU2VNMTlReDJMS2JNenFsTk9jc25TczU3YzV2ajZQ''@;'; put 'put ''OXUwK2FrMmdiTzhndmJ0SmtyakhNVTNiMlpWbVc5bDgzVnFjejE5TVp4TnVVYXhCajNoSFBRTHV1d0V1VW9GSzJCNUtsdzJDcWNsVTRoNEtuazVRaG9zaWhEdzEvSTBPajU1NUlNalZNc1JhUHRwbWRtQmdkbnBCZGttVFBEY25HZUJScHVFV05HVU1LWkdnSUNoMXRSRXk2Wld4c3Y2dVIwUWF2''@;'; put 'put ''UDQvZEV2Q3drVVpLN0hjYnA5WUlGbFhGVC8rcE1lbDh1dHkvVkdtbnJTZTNKN2hrSTd3ak45ZTNvNkJpZmJHK2ZGSWs1T1oxSVRDZFRNMVh1L2RuMGZFdUhyenZZTWRveGttNGJIYyt0U2dCSE9WNzVNc0N4SDJRdlFYMlh5L1M5OFRrSDhQMUUwZlBuMWZhWVAxRGMvdW5DYzNOdjhmTUhDdU1m''@;'; put 'put ''blM5Nnpya0w3WTFVT3dNYWd1ZmNYYUREUlVITDYwSEh4T1VhZ0ozSERVcUNIZXRKRHV2S0RLQjQ4am90RGFPVzZValpDdElqSGEvWExac05STTBHZG8yV0cwMGNGWWJVdHdPMGxVN0hZZ2lsZTlKaVozc3NGVXUySkdDQ2lOWG45Zmw5L2dvQXVSckVrdE5UUzZLcnNnTjdVMmdMMFZ4ek5lWktY''@;'; put 'put ''cFhqWEgzWGV1dXVHZHA3YVhIb2RmQ0F3M3Q1VDBuc1M3cGxJa3BEc3BQOWNoUnNvS05qWUdGc1BTYmJsYzNraTJOaTBreDROQnFvN21sTmRjbzRsbGdUV2V3emd5Nkk3a1RjMDZEUmF1eFlwMDJCV3E4cnFQV3FYdVBuNFN1Q2RWZWc0aFQ3UWxDS25xTWJxYnBKZ0RYVzZrQnBmc3ZXb3JlMEli''@;'; put 'put ''VUUwSkZDZXcydEFnWEpCTXZNeUFxSm5xOE9hLzVFUllRVzBXV1MrSENKSXRKemFkZFdrZHJHdVVSNWlRR1IwNDllczZNa2VOc1kwalJpaXBOeVRKVGkvSkJNQ3pmSXVMcnhPYVdGZTR1ZVA2KzJ4L3lseGUwZktJeHo5QkI3dmtaWncyMXNuSmZrOFQ4Z3R4OEZnQm1MbmgrdmtOdi9HM3o4aG8z''@;'; put 'put ''L2tqeitmZkx6SDhQSDc5ajRjdnVqbjFtdnEyZ2xmdy9hUWhUdEVhMlZ6S3RhQytvQWFBTTJxNlVNRDhsNTV3N1ZCUzFzeUE1eml6YWFwc0Zoc2xMOEdDeTV1cnE2YUYwazRBdjRhZDZzS3BrS2lWQUJLaURwU2RKczdzMWVlZnhQaStLVnc4Tlg5WFNkNkQvV0Z6NTh5bm13UHRzVkRCOXlqbFRN''@;'; put 'put ''eG1PemJablplR0l1UXl4Zk9MRHo5RUR2dGFQREozdG1adWF6cVhDMXI3ckdHMGw1Vmw5STdtdHYyNU5LN3NtMTcwMEJ2T1JZRU9VMVV6S3ZHVm1IK3lDRDR5NTJUbjNvdlZzK1A0N09GejEvWG5rTzhMMnVlSnluQzgvTmU0cWZQNkErUjBjdmwzbFdIenBOeWtrZDg1TzUwU0c1d0xxR1ZpdFEx''@;'; put 'put ''d3ZTOEZpcjBSN1dxVUZHRnkya2JVUklwNWFFcU8yMFdzMDhrSTEyaVhXWVhCQWR6Q0J5VjFhRGNGS2RiSHBxb1JZSFBjRXVLaTVxd0E3Rk12MHBMYi80amxyTzhEWFZKSjNOWDFpdll1QUs4UzBuV0c3TnJBWUpMUHRRc05ybE5PcTBHajNHV2s0SmhLd25NR3pXWER3ZVQ3T255VzhKV2pab0xz''@;'; put 'put ''V0tDOU5ibkZpT3dta1VyUVc0WmtOdytNYkI2ZjZHNFc1dmFQalU0SzdCaG1GUk90bUNUYWw4ZGpHTDhXTFc1WlJlUytieHgvZW5odDQxMHVJZkRoeElEWjBhYVEyTVNtL21jWHVnL1ZEdXUrMkhjNEdCR3VrNVA1eVJIRmVnWjcxYnBqR0ZKamMrcHpqd3NhTG56NnZ0TWIrdnVQMERoWEdPVHN2''@;'; put 'put ''UFpWODZIV2VmTXM3SGkrSnlGOHVaK2JQaWNzS2ZINWZqVnJaSW1pbmF4d1BLUG1CL002akl4azhVL0FESEZMMitXSStXWmZyWmdrdy9ObExjZDIvQlAyQlE5TGJTdmhjS2N0OHdMZk91aHJWcHpncTZtaE5WVS9pNXNJN1RZNEtkSUZHNEVaQXhpQm8vUjVrT3pTNlhHRlcxS0N0TlM2bXFycXIy''@;'; put 'put ''Q1lMZzhGRFpvbFc4TjltZ1hIUWhTK2pXckpGd1ZtOUx2TU11OUJjcU1Hb2FQYlVOMWgvY2YvOGR0Ym1FczhuMEtWYU4wZWl1YmJEakhhd21nK1owVFpNYzBFZ3ppTEJGY1EvVlNOeVlLaVE4aVVVTm5KN1hZNjIrbVNaQlU2V0UxeE8rVUlucW91dXNBQ3ROcjFkam5Fb3dEZFlkRG9jejRYVEFa''@;'; put 'put ''d1UxSk9RcEF5TzlzUEwwTm1xSVhWQTNFeWhLK0NJNXVpMjNveVRwNi9BSmVYOC9WNU8vNkM3ZFVXUGZ4dXd2bWhER3R2eVJRaGFZYWk5OWdPbllBVVhIL2tPSnJpN25YMUY2R0ZEbzRaTkZmVStxZmJFZVBiTk4zK2VWdmdUckQ2N2Jsbyt3dmtHbDc4MGxlRVJ6cmI1R25vUTJnNnhOQldqeEZt''@;'; put 'put ''U0FObzl6RnRvSTJpajJNMkRvdTVHYW4zVUlhTFFhdmhrUSt5d2FZdERUYWtzdFRaeldvbVU0bXNwQ0JaWEM1NmpqblBFOUp4bHp1OTNON3FZZ2pZQUd2SXJyM0Z1U3A2VVd3cVBONGVsRFBSdmkwK2ZQNTN2V1VIR1FlblQxUzBWSlczOGI2KzFkZldSRG1Mcmd4MGdVL0JqSFlObGJ3QlgwajdN''@;'; put 'put ''Ri9lUFlMTnJLQjRMTDBQZTI2YXZxTGh5MFVlcGRnQVpvdlVzTjllcFZnb3dRTUszWFZUTkpLWUx6aTRqbkZZY2VaWGNWbzB5WUFRRllXWDF4RGFvUmJGNmEwUzFRWEZmcllMd3FSanRsNU04V0ZjWk15dWhiUTlHN1JucTJVQ1hEa0RVTXVCeXFZY1V0Tkk1MG1PV3owUnRmem9oV3Z3LzRiemtH''@;'; put 'put ''eFJRMEdoNEVyd2EwWUErdHVVTTZFTFE2elRLTjBhZ0hyVno5d0JJUUdKbGFxWWoycTAwWkFQRGhyWHJRYkxKS2RtVk16T1cxQnZ4ZUx3M3hhRFp1U0ZlU0hDZHJ0THlhSTNkOVlaTUdXOW1tVExrV3NDdHNZdUJ2RktPaHNsYlp1Y05HaXRQbXdJSndlTXZ3OTFqeTNCWStNZjBXUHJITitxdGVr''@;'; put 'put ''WldzVG9qeDhXYUZqejliMGxmT2ZhTjhmRVRtNHl0S1grblh0TVpJN2d2NFUwR01URWRpN1RucWxJcWhQRG9zSG9qV0V6MWY1YVNHT0syRFIwTkc2aHptOUpvVmc2b29sUVAxNlhRQ2RXc3lOSkxqamt0eTNERWVwKzZ1ZUQ3ZWxVMVh4Q3BpNFNhdnA2YmFicVZ1cnlxVHFpVFJxMVJrdmNqNUor''@;'; put 'put ''YlZZYmVyeGxzWE1BaE9wK1dYYnl2RmJxK251cm90NmdpSDZPVW5jMjgzM3c3MCtmOE4rRlhHYUZyMkJSNWIrM2lKdi9CbGFLTmxOQzNyL01mdVVISUcxcWJSRDRFdXJUVE9UaVdtVlk2enEyWG9GR1NxdlBHQmZHVHAxcXFVQWQxQ0piNGZVdXlydG9zeXdWRXhVUjB4a2JzVlVjaGs5Tm9iTU5j''@;'; put 'put ''VExOYm5vVGVxMkcxRXczbXdYTFpmT0RKVldhd29FQWtMRWpmVWdSWGlxREJ2bVVKblZSZmtwT1UvNnBJV3FOVldWVlU1U1pmbWRWdnk5ZkxpMUZpZ1VMWHFnSFhXdCtoNS9NZlZONVNGQWc3U1NzMi9XdmV0QWcvak4vbUdXTTRkMkdMYVFtNmNVSkliTjVyUDB6d1NHRzhmNFBRVklFY2FBWGNa''@;'; put 'put ''VHVOdnlYWWJQT2NZcms4b3oyOWp6MWtkRnBPYmNVVnVscFhRRDRBRWwzTzNRcHRKcFkwRlBTcTNlVlJ0STlkelBhbU9BK05meFdRY0xwSnhkSnd3YXpPcHRMbHVZeHM1ajVaMEFZNllhUWFieVZobUFNMmUweE8xc20xVGtaZ1ptZTJGSWpFK1RaRWthK2NGMGlYMTd0a2pmdVFqWFYyNExpYkc4''@;'; put 'put ''SlQweXFnNEtrbW9rS3VMV1E1amcxaHJMT04xVktqcWxlcTVTcVVZeE00dWU4RThhTFhLd0JoUDVjZkg4MVA0UUxQMEFuYUd4QkErSWozWlhPeGp2bDcxTVFPTWZsVUNSOWtXZkZteEJhbitjWmZjRjg3bUw5bVp0U2huODN1NXZmUnJta2VvdG9mbjl4WE5kYkxnejliRGFXdzkxL01GdTFOL0RC''@;'; put 'put ''WDVsUk1Gdi9JeDlPVVNmVVcyczg0V2JNZGpoOUJXL205Y2p2NnhKTzYyMFg0bHVQeTByRE9uZ0xFK0MrZHFBWXUvWGN3V3FsRDFwRkNHYXFEbGRtcWVEVE0yYXEwMURodExySk1Gc1dzOXZLYXlReHBoVzFkYi9MSW9YdjJIL2ZjY09IRFBmaEtYUER2bGdJOGlqSGQvZXYvUzNmdTdWbDhnMlls''@;'; put 'put ''Ykp5ZmVQYVRZbGR3YkxKODBpZHJSbERqaHhIb2RkZDB4clFFNHZWYXZXVFlaaUU0blYxVzZSbzE4R1VkMWVzVmxsMHI1d0lwSXRhZHkyWXd2Nld1Tk5OT1VVNnN2NFBPYllkRWJIWGJyZkx4SXlEWnM0dWhJbHJaY2greXBHN3FoMGZ1dWtVR1doem44THEvbnVxR0N6SldPRldWazRqTWJjdFhI''@;'; put 'put ''ZTNzbTVCek44VzV4VEJhK3hXbWFhdjY2SW9NUHNyTk5LL2o3VEFsZXlIbUg5R3huWmQvUG1LS3JBZjRlWlBpYlZ2RDBDYms5NE84Q3c5OVo1Ym14YUs2VDZseUF2Ky9kY3E3OURIOW5aZnkxeVhPeHVqaTJ6b3l5enJ0S2NGL09aYVRybkpQWHFjUldZMnNpcTZrVDBSdWlNOW5hVUsvUjZkMDA2''@;'; put 'put ''bDVkQ2FLZHBsaHJGUDlqZEdOY0ZmVEZKUkRzRHRrZzB1S3RBNnV4VFlIVmkvZWkzc3Y0NWtEcHhickpRZDh0UXF0YmRKUmpxeVpmeEVkVEc2d1dBNWdCUHRrOXVVMTBGVis4ZXBCRTBrZDJWR3dWYUIyOFByRjlUZUhOODZtU2VHdE8yeFovaXlwRGxwY3FzcnpVUEp4WlRXdExmWjFHeTIrTWhX''@;'; put 'put ''dEczS0R4RG04WkVPZDUzUktpeWVCbzNaZHgwWUQ0UlR0dEdSQy9TSzl0QStLbC9aU0F1QzhjZW5zQmNYeXhCRno4OUtHUkxRUGppYVhBdGxtNW83dTBqU1duRmF6ZlBrMjNtRDVQcXZRSnRIMXNHL3A4WHFWUHJNOHF0YVJBbjdTVzFJTWVGdTFWY0xUSWFRYUpZS0tYWjQxNHNFWTk1Q2FFYUly''@;'; put 'put ''cEZTeEVSVTVSUjVXYW9NRjBPVUx3QVpEa2Jxd2VWalB0b0VIYzZiZlJRd3h1YWt3TEFnaytzcWtQaXhUUTRuNUdXUFNNMkkxVFc1NFF0YnRwK1N1ZXRXNXhDalZsdENZMnRnbldmVVUxc242Z0FacjNIRWZQaWE0bXJPZWE3Y1NnajlvSU1aUkVUaUpJcTlIZVhJWnBiWS9oQ2hCZUFGNWEyY054''@;'; put 'put ''bWtXZFhOOVRFa0NKcnZmUkc4anBpM1VDY0c3WlhnbW1GSFhqS0pBczBDMk80aXdiMnduQW9xNkliU0lxdURSRDI4a3dId2RLY0RlU1hjL2FibWp3VjJ3UlFCbE1GbWR5eDZwMGZqa25pOVVzTXh6TktqajZ6aEljcGJubVAyQzY2cnlzcTVLbUVuMVdqdjBtQ3JIZlkraGpwYm96ODgyZUxmaG1q''@;'; put 'put ''dzJnb3JqeE53cXhaU1A2VmtuY21QVmxjVWZaMzJ1OEFXMFZ1d1k5N1BOYjlRV0x2K0JieHVWTFNLbTNubWIxMW43VUliWTVnQ1dWdzhtQzZNUGNpSEo3aFhwSEtuUDdyaHRGME1QdnEvTDZmZkpkRnJMWGZKTTNaRk45TmprN2VHYktyS3NxZUF5cURseXRWR3FUYzZ3dUcxc2FGQmVCdjlyeHlS''@;'; put 'put ''UEZkZHNzNzM2YTdBQzdoNjNWQUxhaUhtczVQNmEzRWluSi90UmZXVWkvTDNaWCttaE5UY2hESTlRYi9aUWJjL0hYYlVxeVEzWkxGcWZtNTljTlRIZlVPTEE1U2I5Z3hqRjhvZlhnREtmYTVWd0JQRldDQzNJK1B1VjdlNWcreEtQdkZlVUhuRlR6QStENXJTVjlaUi80ODZvUEhQT0xxS2p2WENH''@;'; put 'put ''MzRDZzZWWUlMckU2YjRVdVhvak05VkRLK25BTlA4V1ZSMXBrVVhKUDd6cWw5d1Q3OTdqWjlIMUQ2VWovY25VVjlUeGI2NnRFTjIvUjlYcDBYNjNzWm5yTDZ0MXZoN0N1b3I0Qm01ZEs2QmVZckVOYXZOM0V6eEt4QTVWWjJ2WWx1VTNXYnZxaXE3YUhOcFd4eS9pd2VJYysvelpwdEo2M1ovbHpY''@;'; put 'put ''c2ZUVXpqUjUvcmJGeGEzSEtOUnBFSFF6ME03VlNwV0dNa1kyeVh1NzB6dW4wc2U2eVBPTGk3Y3BZNHpqdytRQ3ZXMlJqZEZJOHdZMDFORlZta0pyUmlZL1YwaElWdmJMekl2N3grcENqbXh0YmRZUnFoMXJJdU4xZFNHNzAya1AxZGJMYyt4QmR6Qi9TSUROOFpiNXVadXpuZWNWNzhhNk4wT3Vn''@;'; put 'put ''WVIxbXprM3k2ZHVZNlBTWWo2YVVieWl4UnpHM0h5aDhJeDdXMW5WeGZjazM5alpHUTdEcTlybnEzYjUvUzR5THY4ZDdtenl1K1NIY3A3d05GcEZOaVNnZHJhQ3VNclBhS1VrQXlHdGNnRDVQcys0R1VlL21aUXJSM3dPalpKWnJkenRXK1RjdmFIRDYyNHBPSFFmWko0Ym0rTEpsZStkSlYzNERI''@;'; put 'put ''a2FkdDdMNXMzYUFJWjY1cyt5WWp3RVFwRFZlQkNNVnRqTkJmTnFjVGZoSnBtUzV3QlJxRlVRQTFITlRiMTRsT3JZZEJIMGFndHp2VXR3bUVPbVpqNFJ0TFBmZzJiNk8rbXpXQ3ZLaC9oc3Avb3BuMGMzZnB6bGcvT29tcTJxUWd2WU9FU3QxS3V0bGtJZXVaUDMrcFhFY0p6dFBac2hMMWZjOUdH''@;'; put 'put ''V0lJN1g1cVJmcnoyOGRqOHFSejQyZ3F0OGkyb1ZYMkVzZnVObHVGK1FmWkEyVjQzM0RkbTN5UHlNQmY1NHZjb2ZVUi9PYk1NZlgxYjVJK3BEVHhYeDF2Vyt4L0dYTDlyM09CYUwrczRWK2g3RlF5WDhVZTc3UUtIdlVlcTNaUGNUTHRBNFFuRU00czAxV1FkNGMwM1JBUkpydTZrdlgvWkxzemJm''@;'; put 'put ''ZkZPU1l6dHZTa29iMmIrOVVoakhETHh1YS8vMjB3WC90bmtjYlprNzFyZUZqckV4emt0UTN3bmxmbFgwbjhTQW94ZS9mL2dmcERpT2RxaDl1UGEzMFljamIwcHFuMkg4YlhTQjNBazQwL293b012UXBzdTRYWnN1NDVhcmhoWWVrYkhJcWpxOVpTRjlnVjZuWEcybjF5bVRXK2w5eWhhM2ZKOHlo''@;'; put 'put ''U1ArRm5xTWZBcWdVSUdvTEdBMVFHU2tVQU1FNjhBbjJUcHFVZnNqdGVWRVhZcVpGZGF6KytMWllxd2J5ajQ0eHY0V0h2VlYrU3pzUnBHTkszSnV1OEIvM1dhdHJ0SjE0K3ZJcHlxRDhyclorcjhLNjdjVTFrOVJTdDBJdlhQcmNkeU5QLzJuMVZIOHI3NitlTHkzTi82NC9CSHZrL0ZuR1BBcWhI''@;'; put 'put ''WUNiZ2lBRzE1NC95ckRjUUhmREExNGVrKy9abmZSUGYzZGFCUm0rdy81cnY2V0Nxd3RsNi9SMTJPZENaY1pkV1hGVis5YnpSYk9hT1NXQkVNbHJ5bStzVDk5a1k3czluMjVOMDk3YzhxOS9ia3QrMjF4YzM5Slh6QTBNbU5qb3FqZTREODJQemEzYTZjNEtvNE05Q2U2RS9tMnpKYTMrZHYrak52''@;'; put 'put ''OEd6Yjk3U3RxMjVENWsyLzZ4OE9Ed2NJZjBoUHF2ZjkzNS83VS93SEFsdjh6Z1BYL0tRQzlWeWlOMXZEZjBkc21IdFppbkFoM1l5ZkFMbkJ2NWhPZnlMeitkZE5qVDVpVk81M1NvR1FyN1RqV0xwaDE4dEZQZkNMOTJjLzJQdkdZNmV2ZllMTGlaOHFkaW5FMEtZN1Z1SWxHQitMUGlPbk51Qm9x''@;'; put 'put ''Q2pYY3NnR1RNb3lOTkErOGtQbHZ3a2FqNnVsZ3RtRXNFbTV1RWl4K3NQa0VxOTlNZlZTRmV6cUNZQkJTMHdJKzhxU1FiS2VqbVVRQVpDZDgwUGpYaS9LVmkyTzNMVHYyVFhLNlhZZGNSMjRaVmhMK1p6N2t4Y1BTWjNrTlhwTE8xMzkwVDRKZHc5aDdjaWpuZEhycWMzMlhkckpzL3dNVHVWcHZ0''@;'; put 'put ''UzAzZTBLVzd6aE95dkZsd0FkMUQ0TkNsMkJjVDc0cDlqSjZSeXhUZEVEVjRZQXJld1FQNFZaWDZZdnhvU1RBcFU2cEpkZC95V1UxYTBsaWkwdFNTb3ZDNjk2cUtQeU41VzFyd29ITzVUbEJCdUNFRWx0NGdORy8vUHlDOG53OTlpay9mNzd3bkwrNitQa0Q2bk4wOU5MaTUrdmo5NEZhdGY3OGJL''@;'; put 'put ''SDlzZjFJZ2NFMHVReGdRR01GK2k4MWVhMFlZRkJpaXFtUVdMZkRBcHRoY3Bsc2x4VURSckhML3JNSVBvcU5ObGNFSXNVOCs0c05XUW5yYTZaMnRid1hzTDMvb21ndlR4ZGdZcDZUNVNoTisva0l1NXRDeFlXazRKMVdycU9nMzYvTndQZmEwdSsxcTVQb2Z3QVBmbng1QUFBQkFBQUFBUUFBdENj''@;'; put 'put ''QXdsOFBQUFVBSHdQb0FBQUFBTlBCbllZQUFBQUExTDZtOWY5Vy91OEVXQVBGQUFBQUNBQUNBQUFBQUFBQWVOcGpZR1JnWUQ3Njd6WURBMHZILzdEL2sxa2lHSUFpeUlEUkdnQ2xoZ2F2QUFBQWVOcU5sRTFvRTFFVWhjKzdrNVVMd1Q4VUJTbHFFbHVicEsyaERhWTBsQlJiYlVyU2puWVJha1do''@;'; put 'put ''Q3hkYVlyVzZGdEc2RXhFWFhma0RVdmN1QmJIdVJNZ211TktLK0VNVVdseGtJUzA0bnZ1YXFYWFNnb0hETnpPNWI5Njc1NTE1cG9ZejRNOE1VUWNvQTlmY1I3ODhSRlRPSSs3c1FFSWVvQmtmMFcvRzBFUEZ6UXpTTW95c0FmSm1DaWtzNG9TNTYvMlVKMGliSXZiS1NiUkxEdzdMQkZWQVNzNmhX''@;'; put 'put ''MDV6VEFGSnZiYjFITXU2TG4wUG1UTTE3SE5LYUpVdmFKSkhHSmM1MXRiSUNkWVZxU3J2WHlHUEJWN3Y0aHczTVNhSDBPY01zSVoxVHBULzMwRGU4aFpydUhhWlJremVZMVRmR1dwR1dKNGhJdmV3WGE3am1MbUFZYTU1aFd3M245RXBCZSszU1NNalhlaVFLM0JsTjlySVRuSFJ4cDdETWtrZnNo''@;'; put 'put ''aENCUm04OVY3SU5nemlIWExPRkhMNlhLN1plbGZIbUt2MGNCRXhNOGx4V2Y2ZllHOUpISlE5N0cwQSswVlljd2RIekZaY0pPUG1KWHJwKzRpZHMwaFB1RVl6aXo2enhKcm55TmgxalNPS0QvUTh5ZnNsSk9uWHFsY2J5UGxPcW4vcTNUcGh3U3VyZitRUDZwdXpCUzIrZDBISlRveFlxbi9ycGY3''@;'; put 'put ''UlorbkFLZXZWQm5MS3BQYmkvaXRVdkRmMGI1RDhTbjJTUzh5RjcxMVFtZ3RsMXZyN1YrcWYrcXpVZm5YT0lMVjNuZCtuNW9qN1l2dTl6VDFWUDNSTm0xR3pwdnRkSjcycWNMM3FYUk81UWg3WFBtd0dtUVBOb1daaGpXY1JOaEh1dmM2ci9RVm9mV1Z2YTF4R010VENlWmxielU0RG1XWE5Vd09u''@;'; put 'put ''NnhuenFmdWpIbTFDL1Fac0RuVVAxYi82dDZCNURGSXp6bXhtckI0ejgyVXlSM1ZUcjVuRFgzd0diOVIvWjVBTm50Ym5aRzdoVkZmUEd5eFRUd0hwUmNxNWpCVFBCSHN1bUhseW5weWx2eVZlODF3S3pTQmhXaEdoWWpMblZXMCtISTR0NGVoL2labUIrd2ViUC9VTWVOcE53bDFJR2dFQUFHRHp2''@;'; put 'put ''MU5QTy9XNjgrNjZYKzl1ZXVlZGR4RVJFVEpFUWlRa1lrajBFTkZEUkVRUFEwSmt4QWpwSVh5SWlCZ2pJbVNFaEl3WUlTTjZrQmdSd3dlSkhpUWlJaVFpZWhnU01tVHNaUS9qK3d3R3cvSS9lNFp5RDlLemJvd2JUNHdQSm9NSk4xVk5kMmFybVRLL05VK2JEOHcxaTlFeVo5bXhQRnFUMWlYcm95''@;'; put 'put ''MXAyN0VkMnM1czk3YU9QZFdiNk0zMi9nUWdJQW5rZ0JMUWRsQ09JY2VDWTl2eHpYSG50RG9ubkJ2T2xvdHpyYnAyWFhWWEcyVEFOSmdGRDhCenNBbDIzUVB1VWZjN2Q5VURlcVk4WlUrM0w5Vlg3V3RESExRQ2ZZYU92VWJ2bUxmZ3ZmRnB2aGxmeGZmazUvMEovM3YvdnI4SlcrRUplQjQrZ2sv''@;'; put 'put ''aGwvNVlmN0cvampnUkJCbEMwc2dIcElUYVVSKzZpT2JSSXJxUEhxUG42SFdBQ2p3SC9tQWVqTUVHc1FTV3dSYXhQSGFKM1dBdnVBR0hjQTRmd3Fmd0duNkZ0L0FPQVJBNE1VMVVpTy9FRDZKQjNCSlB4T3ZBSmpsSXhzZ1VtU0hueVJVeVQyNlEyNVNkOGxFVUpWSERWSnhLVXhVYXBoazZRby9R''@;'; put 'put ''Q1hxU0x0TW45QVY5UmJmb1gweU1PV1hxVEpONVpqb3N3T0lzeHhiWVhiYkVuckExRHVJK2NVZGNsYnZrcnJuNzRFcndZN0FZUE9jUlBzVEgrQlNmNFJmNVBGL2s5L2tHM3hWQUlTRHdnaWJFaGJRd0p5d0xhOEttMEJSbnhHVXhKeGJFTGJFa2ZoVnJZdjNOWVdndHRCWGFDNGZDamZCRCtGV3lT''@;'; put 'put ''ejZKbHpRcExxV2xMMUpYQnVXQUxNbkRjbEtla1Jma25GeVFkK1dTZkMxM0lvRklLcEtOVkNOdFpVeVpWVGFWUGFXc25Db1hTbE5wS1IwVlVIRlZWRWZVeEg5bTFaeGFVYytpUUpTSmprY3owWXcyb2MxcFdlMUJhK3RHZlZRZjE2ZjBXWDFKWDlYWDlZWitxei9wdndlQnYwdEF2U29BQUFBQkFB''@;'; put 'put ''QUJQQUJZQUFvQVB3QUVBQUlBS0FBNUFJc0FBQUNEQVJZQUF3QUJlTnFGa3MxT3drQVVoYzhVSklER0tERXVHaGQ5QWZsVEllcFN3MFpRSXdvN0VoQUVJbEF0eFlUWDhDbjBUZng1QWQyNGR1M2FoWWZodHFEQmtFazczOHk1OTl5NTB3S0k0UU1CcUdBRXdDR2ZNU3RZWEkzWndETHF3Z0ZrNEFn''@;'; put 'put ''SGtjU0Q4QUpNdkFtSG1Qc2xIRVpheFlRak1KWG51WWh0VlJGZVFrbmRDNjlnVFgwS3J5S3F2b1dmc0c2RWhKK1JORGFFWHhBMjhzS3ZpQnJuWTM0UHdEUXFPSUNOR3d4NTRqYWFhTUhseVI3NXBIbnlGRHV4VUtOcU1hNmxZL3JrSXVjdXMvck03U0dPQWhyTWM3U1RqWTVFNVgzSE0rcE5ES2hV''@;'; put 'put ''R1pWaVJsS1BmVnpnQ0dVY2syWjViRTU1ekt0aC9hbFM0c3BoVEZ1ZjBacXFPcTlTaVhUSjJXYk1xUE1UNWpjNGovTHExS3JrVStwRFhkL2wzdjkzTS9KenVkcERndVB1bDdPdGZidSthNXlhemJXWDA1ZXNKbFdYdXdOK0NTOG13ZG1yMmRWZFRtb21ablk0YTIvU2M1bHFEVmM2My9WdnF5QjNs''@;'; put 'put ''OU9xeFpIUldwWW5TMkdYN3kzcytQOUtGdGVNYTJoL1IrNDk1enNXY2NzTzJsUWN4blIrQUdpaWd2Y0FBSGphYlpOWGJCeFZGSWEvMzdGMzNUWk83NzFYeDE3M3hDa3VhOGV4WXljdWNlekVTY2E3WTJmeGVoZkd1M0ZzdWdRQ0hrRHd3alBsQ1JDOUNpUjRRS0pYMFhzSDBYbWtCKy9jQ1Y0azdz''@;'; put 'put ''TjgveG1kODU4ejk5NGhDM2VkRzJBZS83TlVtMzZReFF5eXljR0huMXp5eUtlQVFnTE1wSWhaekdZT2M2ZnE1N09BaFN4aU1VdFl5aktXczRLVnJHSTFhMWpMT3RhemdZMXNZak5iMk1vMnRsUE1Ea29vSlVnWjVWUlFTUlhWMUxDVFhkU3ltejNzWlI5MTFOTkFJeUdhYUdZL0xSeWdsVFlPMGs0''@;'; put 'put ''SGh6aE1KMTEwMDhNUmVqbEtILzBjNHpnRG5PQWtwN0M0bmF1NG1wdTVnVHQ0bit1NWxxZjVtRHU1amJ0NW5tZTVoMEhDM0VpRUY3RjVqaGQ0bFpkNG1WZjRsaUhlNERWZTUxNkcrWVdiZUpzM2VZdlRmTStQWE1jRlJCbGhsQmh4YmlIQlJWeUl3eGdwa3B4aG5PODR5eVFUWE15bFhNSmozTXJs''@;'; put 'put ''WE1ZVlhNa1AvTVRqeXRJTVpTdEhQdm41aTc4NUo1U3JQT1ZMS2xDaEFwcXBJczNTYk0zaFYzN1RYTTNUZkMzUVFpM2lkOTdSWWkzUlVpM1RjcTNnYzc3UVNxM1NhcTNSV3EzVGVtM1FSbTNpUHU3WFptM1JWbTNUZGhWcmgwcjRnei81a3E5VXFxREtWSzRLVmFwSzFhclJUdTFTclhacmovWnFI''@;'; put 'put ''MCtvVHZWcVVDTmY4NDFDdk10bmZNQ0hmTVNudk1jbmFsS3o5cXRGQjlTcU5oMVV1enAwU0lmVnFTNTFxMGRIMU1zRFBNZ2pQTXBEUE13MTNLV2pQTU9UUEtVK2ZsYS9qdW00Qm5SQ0ozVktsZ1lWVmtTMmh2eDFvMWJZU2NUOWxxR3ZidEN4ejlnK3k0Vy9MakdjaU5zamZzdlExeGkyMGtrUmc4''@;'; put 'put ''YXBDaXZwRDNrV3RtRitLSkpJV3VHd0hVL20yLzlLZjhpenNqMnJrUEd3WFJRMmh4T2pvNVpKTFJ6T0NQd3RubnZVWTR2bkV6VXNiTTJzSE1rSWZHMVdPSlcwZlRHRE50TXZadEJ1WHNaZEZMWm5lc1F6UGRwTmV0eUZ2OE9iSVdFWTZEaWRpZzliVG1vMFpxV1NnVVJtNU9zMEhSelRvVE96ZzVQ''@;'; put 'put ''Wm9kTjBjQXk2VE5XWUMzOHFIaTBwclF4NkxQTjFtNlNrbWFiSG15WmxtTlBqUk9QRE9hbjBNOUR6bjhsU21aRy94OXZCbEdGQmJ6anFoRk9qUXpIN2JNRjRodTdMMEJQVDJ0ZHZacHgwa2Q4L2ZkcVQwNmVkbmpoWVZ1V3lMRmpwNngxMnJLbHJOVzdRYXh6R1hlVDFScUsyWTQ5RngvTEd6NnQw''@;'; put 'put ''WFdtb3Z0cGpqY2NHajQyK1BtTTA0U0w5TmxoU0V2Ulk1ckhjWTRYSFNzTmdVM1lvNVNUY29LS3BJY2NxdG1MSmZNdWR4VWozN3FkbGtUWDkyZWs0WUowZjBDUzYzZE95d1B0OWpEYjdtdFo1VnZvMFRISXlHb3U0eWJuVzJOUWVSV3duTDJKNzZoKzNaYmNoQUFBQWVOcGo4TjdCY0NJb1lpTWpZ''@;'; put 'put ''MS9rQnNhZEhBd2NETWtGR3huWW5UWkpNakpvZ1JpYmVUZ1lPU0FzTVRZd2k4TnBGN01EQXlNREo1RE42YlNMQWNwbVpuRFpxTUxZRVJpeHdhRWpZaU56aXN0R05SQnZGMGNEQXlPTFEwZHlTQVJJU1NRUWJPYmpZT1RSMnNINHYzVURTKzlHSmdhWHphd3BiQXd1TGdEK0hDVmdBQUFBQUFGWW1Q''@;'; put 'put ''WjNBQUE9KSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDoyMDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUZVa0FC''@;'; put 'put ''TUFBQUFBcFFnQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY1hBQUFPZGo1OGZFeEhVMVZDQUFBSkxBQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJQUFBbE1BQUFBVFFB''@;'; put 'put ''QUFHQm9RS3p6WTIxaGNBQUFDWndBQUFKc0FBQURubmRERDdGamRuUWdBQUFNQ0FBQUFEQUFBQUE4RWF3QnBHWndaMjBBQUF3NEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuUUFBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNmQUFBTjR3QUFIRzQvN0hHREdobFlXUUFBRW9JQUFBQU5nQUFBRFlM''@;'; put 'put ''WllnU2FHaGxZUUFBU2tBQUFBQWhBQUFBSkFkNkJDQm9iWFI0QUFCS1pBQUFBb1lBQUFUYXExTStWV3h2WTJFQUFFenNBQUFDY3dBQUFucE43akxtYldGNGNBQUFUMkFBQUFBZ0FBQUFJQUtFQXBGdVlXMWxBQUJQZ0FBQUFYRUFBQU1RSSt4NFlYQnZjM1FBQUZEMEFBQURvUUFBQmlHWEZqMktj''@;'; put 'put ''SEpsY0FBQVZKZ0FBQUNCQUFBQWpSbFFBaEIzWldKbUFBQlZIQUFBQUFZQUFBQUc5bmRZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYxRDRCN200MDQ4RE9s''@;'; put 'put ''b3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY05iSmJWRlg3T3VmZSszOWV2Z0tXVUg2RWdJVmdiMHhSR21BaXlhUmhVUnlxU2ppa2FadmJqbklQeDEyRXpGdWY0Y1dnV1VoZUhEQWxwRVBreDJnQ2lZa1hHdW9ZeHh6WUN5Z3hoWUZ3SHlCWW0wK2xDUkhuM3ZPZjlzQy9RYnVN''@;'; put 'put ''SkQ0ZHo3M3Z2UGVjOHQrY1dBcUNBRVpnS21WeFhQd041ZUhvUXgzRDhSNkJ3Yzc3ZE9BOFZjNy9ST0FlVmMrZk1uY1Bab0Q4WlRXY2s3UGhkQVFNd0RGWG1jUmlKZXRlYWprWUxiRldKbWhIeEkrbTlpRjhNTmw5QXhXY1ExTVhONUlDSldJbFBFY3RnS0kvQmVUSklqcUVVdlhpeWY4UWQ4WmI0''@;'; put 'put ''U0h3Y1BmeUozKzl4NVBmZGVqdTVkL2IvSitPZjk3akN1ejJPOUh5ZVA4VzdlaGpaRW5mR3V4TmM1ai9Ddjc5TDBOMGVjVE96cEJqT1RGY3hXOWNSaWxyQ1lSVGhNWVlJK0R3UllSeVJ3M2dpandsRUNYTTdrWlZxSWdSTDhSUE9mSlFJelBoSytsOG1CSzhRZ2xjSnhTSEM0MDNDNHpnUjhGY2l3''@;'; put 'put ''a2tpd3J0RWhMTkVEdThUT1p3blNsaTlUN2xhVEJTa1RNcFFJdVZTVHE2UUN2SmdWcmJBdFVkVEpTUDV6ZldFMkxuVEU2dWQyTm1KdlowNFlES1JSeDFSZ3R1SUFocUlVc3pIZzF3aGlTU3lTQ0tMSk9CeFBNbjVxNGtTL0FKck9mOXBiT0w4TFVRcHRoRTViQ2Z5ZUlISVlRZVJ4NHRFRGk4UmVl''@;'; put 'put ''d2tTdEJHbEdBUFVVQTdVVUFIVWNCZW9vRGZFSUxmRW1MWmlmQTJVWXEvRUdsZTFQS2lsaGR2ZVFtV2wyQjU4WllYYjNueE1sQUdNbDlYeTlYa0pFZUJxOVl5UTFXc2NTMXJPNFkxSGNmTVRHQkc1bU1CRnFJUjM4Y2kxbklwbG1FNUhtRVdIbVgwMnhqUmk2emtLNnpnSVZidU9DdDJrcFU2eTVP''@;'; put 'put ''Y3Q1dFZ4bjBya3Z1bEQ5czkzQ2VOakxzMzFiV2J1bXVPUCtwR3JUYlMzUjM0Yk9STWdtNitQTnZqM1RoelVmRzgxOGZqNWZIeXkwZlNXeGV2aTlkMU8vSTMrMFpSYVpvUTA0VGlxNFREM1lUSFBVVEFMQ0tpSXA3a25FUU5ZbXBRVTRPaWxZaXdsWWlzMG1LVkZxdTBXS1hGNnFvNFFUaWNJaHhP''@;'; put 'put ''RXc2ZkVBRVhpRWo2U2wvV3RaLzBJL2VYL3VTa29tSVZGUmtpUTdpK29nWlhFYVhvUy9ReXBZc3BYVTNwcnFqMFc0bXMwcjNGRTJYaXlablNYVkhwWFJyM0ZwVzNxSElXMVVXbHB4cFAxYjJMNkZuWFNiVGVOS3ZGQ0JQbE9vc3paL3AxcGw4dHhweW9XSXVSSjFyV1RQeFpSVHZMUWs1R3kzanVu''@;'; put 'put ''dnowcW1PRURhelgzWXhyRmlOWnpValc0Q2xHOHpRMjRCbHNaRVJiR01sVzNzWTJucmFkcDl6TDA1MWdEVTd6WkJkNGduN2NiU0IzR2NJVmg1bWVGWDJzbzVTYk9zcTV5ODIweE95YjJZbU9SY1BJbmN4L2g2eVFsZktFckpFVzJTalB5WGJaS2J1bFExNlhBM0pZanNvN2Nrck95QWR5VGk2bzE0''@;'; put 'put ''S1c2UUN0MUJGYXJiVTZWaWZvTFZxbjlkcWdNL1ZldlU5bjZ3SnQwb2QwbVQ2bXpicEsxK3A2M2F5dHVrUGJkSS91MWYxNlVOL1NZOXFwcC9VOS9WQS9kbkNSNitYSzNTQTN6STEwMTd2UjdnWTMwVTF5dDdscGJvYTd4MzNkM2UrKzV4cmREOXpEN2hIM1UvY3p0OXF0Y3h2Y3MyNnJlOG50Y3Ux''@;'; put 'put ''dW4vdURlOE1kY1crN0UrN3Y3cC91Mys0VHJ6N3YrL2dLUDlnUDkxVyt4by94Ti9vditzbCtxcC91Ny9Tei9EZjlBMzZlWCtSLzZKZjRGWDZsZjhLdjhTMStvMy9PYi9jNy9XN2Y0Vi8zQi94aGY5Uy80MC81TS80RGY4NWZDRDRVUWxrWUVDckRpRkFkYXNQWU1DSGNFdXBDZldnSU04Tzk0YjR3''@;'; put 'put ''T3l3SVRlR2hzQ3c4RnByRHFyQTJyQStiUTJ2WUVkckNuckEzN0E4SHcxdmhXT2dNcDhONzRjUHdjWVFvaW5yeGRpeldiZVFseG5VWlhwVXdtb3hiekxPMHkxL2thY1kxeGpjWlA1aXdEalY3dXZFazQydVZQMU9sMm5pVThaU0VzZEI0azc1R2JqVC9lT09KNXU4MFBtK2U2NHczR0ZjWjU0MGIz''@;'; put 'put ''R3p5ODhhTHUyZDlNeHVqK2E5Z1RETisxcmlwaStXdU5IYXo1eG52TTE1MUphY1pNUHRLbm01OHJiYi9MOWFObCtTcXZUdkdsNDJmTVY3WXhjeGV1Mlh2djNPYXovWnV1U3JEaXpObnZzVE8xSFNKK2F2Tm43WFRyRDV1OWwyWnpJL3FHcjFvMjJpcWlxdy96ZXFVMUxZNXFXYlM2cVJScC9vczJr''@;'; put 'put ''Vi9NcWZGN0UydTZhSjZpeHA3dyt6OWlWMnNhWnF4Vk51cDlyTCs5QXhwM2c2YS9TT3IwWjlONStkc2ZxcWNUcHRqTnlMVjdTWCtHclBQcDdiTlNWV2Q5YWMzNkthTVp0S0taTzBYelA1VzZyZjVkaTkwcVBrM21EOVZXbFhHbm1TY04wOVA5a2ZwZmJIbzdqRDdzTm5abGV2aVh5WFZpZmRjVnFu''@;'; put 'put ''c2psT0t0N3Y5LytCTFp5cXVzWGNwK082cVpsYVMxNmxuMTY1aEYweGUyQkUreDVkWURtTnhJM3RZMHJuN3NHOS9nVDA5NmR4OTdZMWFicDI3SDMrdm1zbytWRS8weHgzc2N3UFk2ZTdrN3o0emlVcnI1VVBaOWI3R3JqV2ZiN2ZoOW5vYng0N2V3dlhXcy9QZGJyM3ZLK3grcjdGRC9oSUg4QjIr''@;'; put 'put ''Nk01aXNiMHExK0JmRXZBVU8vRVF0RnBQYmVONVJhNnkzODBpU1B4alUrRVMzRTlld1c1WGlrSGNheVFqR28wYmVPcEpQT1Uwek9Eb3IwMjdmelErYW14M0J2c3lmTWg0cnZGbTQxUlZPYk5MOFNYdTh3QytLem5KUzRrVXBGUjZTNThyVC9RZjZqNmJLUUFBQVFBQUFBb0FIQUFlQUFGRVJreFVB''@;'; put 'put ''QWdBQkFBQUFBRC8vd0FBQUFBQUFIamFZMkJtY21DY3dNREt3TUxVeFJUQndNRGdEYUVaNHhoRUdNMkFmS0FVSExBeklJRlE3M0EvQmdjR0JkVS96TkwvalJrWW1JOHlxaXN3TUV3R3lUR3hNcTBIVWdvTVRBREpaUXBBQUFBQWVOcTFrMWxRamxFY3huLy90MzBSS2hUMTl2WnAwMGFpRkVYMnBj''@;'; put 'put ''aStsS3pac3EvWkd1c1FRMFZTeUo0a294a1RVMU8yRys2NE5XT012cytWVys0TUhjZFhURFBNdUhKbTNuUGVjODZjNTV4NW50OGZjS0hyQzBGMGoxVHFtVGpucmxLc3h5V013NDJCbEhDTE91N1NTQlBOdE5BbUhoSWdneVJNQmt1Y0pFbXFwRXVtVEpVY3laTkNLWklTSTlWNFpieDNpVEtQbTYz''@;'; put 'put ''bUUvT0w1VzRGV3NGV3FHV3pvcXhoVnJwMTMrWWYrVTBwZllmRmpSN2FqMm5qbWZoS2Z6SEZKckdTS0NtU0pobVNKZG1TS3dXeVFUWnI3WmZHVzYxOXlHd3gyODNQbG1FRldFRldpRk43cUpYMlMxdDlWQy9VYy9WVXRhdFc5VWcxcTRlcVNUV3FCbFd2NnRRMVZhdHFWTFdxVXBXcVFwV3BNNnBV''@;'; put 'put ''bmVoODA1blZtZlQ5azZQY1VlRElkOFRZQjlyOTdENTJMN3ViM2VqNDJ2RzU0L0NIa0hmSlhWNzlwK1p1ZUR1VDRJOWJCS1A3ei9pSFJ0ZEpGMXgxZHU1NDRJa1gzdmpnU3kvODZFMGYrdUpQQUlIMG96OERDQ0pZWnp4SXB4NktTWmhPSkJ3Ymc0a2draWlpaVdFSXNjUVJUd0tKREdVWVNRd25t''@;'; put 'put ''UkdNSklWVVJwRkdPcU1aUXdhWmpOWE1aREdlQ1V4a0VwT1p3bFNtTVowWlpKUERUR2FSeTJ6bU1KZDV6R2NCQzFuRVlrMWFIdmtzcFlCbExHZUZmdjhPZHJLYllnNXhuTk9VVTBZRjV6bEhKVlZVYzVFYUxuR0Z5OVJ5bGV2YzFCVDlaUFEyRFpxbGU1cW1uMjBWcTdVZDBXemdiTGMzNjFtaisx''@;'; put 'put ''MmMrTzFXNFY4Y3ZFQTltMW5aWTJVdG15UkdqMXZZempIc09DUmM4eGtwVWJvQ0lyaWpkeDZnYVpZRVhRL3gzV2VLbkdIRXNvMjliR1VmZXpqQVFWMUwrem5DVWIxMW1GSk9jWkxYdXBwNnNVNjh4RnQ4MkNoK21uL1BINUROcXVoNDJtTmd3QUw4Z2RDWndabHBQUU1EMDI0bVZnYUcveUhNMHYr''@;'; put 'put ''Tm1YYi8vOEowakVudy81Zi9maUErQU05UERWaDQycTFXYVhmVFJoU1Z2R1VqRzFsb1VVdkhUSnltMGNpa0ZJSUJBMEdLN1VLNk9Gc3JRV21sT0VuM0JiclJmVi93cjNseTJuUG9OMzVhN3h2WkpvR0VudmJVSC9UdXpMc3piNXQ1WXpLVUlHUGRyd1JDTE4wMWhwYVhLTGQ2emFkVEZzMEU0Ylpv''@;'; put 'put ''cnZ1VUtrUi85UnE5UnFNaE42eDhub3lBREU4dXRnelQ4RUxYSVZPUkNMY2RTaW14S2VoZW5UTFQxMW96WnI5WGFWUW9WL0h6bEM0RUs5Zjl2TXhiVFY5UXZZNnBoY0FTVkdKVUNnSVJKK3hvazJZdzFSNEptbVA5SERQdjFYMEJiNXFSb1A2NkgySkdzSzZmMFR5aitkQUtneUN3eUxTRFFKSlI5''@;'; put 'put ''N2VDd0tHMEV0Z25VNGpnV2Rhcis1U1ZMdVdraXpnQ01rT0hNa3JDTDdFWlp6ZGN3UnIyMkVvODRDOUlsUWFsWi9OUWVxSXBtakFRejJVTENITFpEK3RXdEJMNE1zZ0hnaFpXZmVnc0RxMXQzNkdzb2g3UGJobXBKRk01REtVcmtYSHBScFRhMkNhekFRT1VuWFdvUndsMmRjQnIzTTBZRzRKM29J''@;'; put 'put ''VXdZRXE0cUYzdFZhMmVBY09ydUxQNWJ1NzcxTjVhOUNlN21EWmM4QkIzS0NwTkdYRmRkTDRNaTNOS3dvS1RIUzlSSFJrdEppWUdEbGhPVTFobFdQZEQyNzNva05JQnRRYjYweWkySmZQQmJONmhRUlduVWhYYWpCWWRHbElnQ2tHSHZLdThIRUM2QVEzeWFBV2pRWXdjR3NZMkl6b2xBaGxvd0M0''@;'; put 'put ''TmVhRm9ob0tHa0RTSFJ0VFNtaDluTmhlREtScmNrcmNkR2xWTHkvN1NhakpwNVRFL3B1Y1BxOWdZOXRiOWVIZ1lCWXhjR3JiNXpPSWt1L0VoL2d6aVErWWtLcEV1MVAyWWs0ZG8zU2JxeTJabjh4TExPdGhLOUx3RVY0Rm5Ba1JTZy84MXpPNHQxUUVGakExalRDSmJIaGtYVzZacDZscU5LU00y''@;'; put 'put ''VXBVMW40YWxLeW8wZ01QWEQ4T2hLMEtZLzNOMDFEU0dETmR0aHZIaG5FMTNiT3M0MGpTTzJNWnNoeVpVYkxLY1JKNVpIbEZ4bXVWaktzNndmRnpGV1paSFZaeGphYW00aCtVVEt1NWwrYVNLKzFnK28yUW43NVFMa1dFcGltVGU0QXZpME93dTVXUlhlVE5SMnJ1VTAxM2xyVVI1VEJrMGFQK0gr''@;'; put 'put ''SjVDZk1mZ2wwQjhMUE9JaitWeHhNZFNJajZXVTRpUFpRSHhzWnhHZkN5ZlJud3NaeEFmUzZWRVdSOVRSOEhzYUNnOGRzSFRwY1RWVTN4V2k0b2NteHpjd2hPNEFEVnhRQlZsVkpMY0VSL0pzRGo2dVc1cHpVazZNUnRuelltS2owYkdBVDY3T3pNUHEwOHFjVnI3K3h4NFp1VmhJN2lkK3hybmVX''@;'; put 'put ''UHlENE4vaXhkbEtUNXBUbkJ3cDVBQWVMeS93N2dWVWNtaDA2cDRwT3pRL0Q5UmNZSWJvSjlCVFl6SmdpaUtHdDk4NVBKS3MxbVROYlFLSDA4RU9pdmF3YnhwVG93anBTVzBxRWthQVMyRHJsblFOT3J6N0sxbVVRcFJibUsvczNzcG9wanNSUm5NZ0NrbzVLYXhzT3p2cEVSYVdEdXA2ZlRSd09W''@;'; put 'put ''RzJvdWVMRFZiVm5HRnZRZnZZOGpOTEhrM1VsNjRLU250Ulp0UXA3eklBZzY1a1QyNEpvSmJhTyt5aW1KS1dLZ2lQZ2h0QmZ2dFkwUW1MVE9ETG9FaVpIR3lzZy90aWgwNW9vSjJBdDk2MGlydjIwTHR6M1h5SURDYm5XN25RWmFSb3ZOZEZmVnFmVlhXMkNoWHI5eE5Id2ZUenJDeDVoZEZHVTh1''@;'; put 'put ''ZTkrZUZPeFhwd1M1QWtaWGRyL3VTZkgyTzlidFNraysyeGQyZWVKMVNoWHlYNEFIUSs2VTl5SWFSWkd6V0tVUno2OWJlREpGT1NqR1JYTWNGL1RTSHUyS1ZkK2pYZGgzN2FOV1hGWlVzaDlsMEZWMDFtN0NOejVmQ09wQUtncGFwQ0pXZURwa1BwdWRtdkN4bExnc1JkeXpaTmRGOUIwOElSM2l2''@;'; put 'put ''empFdGYvcjNISVUzS0xLRWwxbzF3bkpCMjBmSytpdEpidVRoeXBHWisyOGJHZWlIVWszNkJxQ25rZ3VPUDVlNEM2UEZla1U3dlB6Qjh4ZndYYm0rQmlkQnI2cTZBekVFdWV0Z2dTTEt0N1NUcVplVUh5RWFRbndSZFZDc3dKNENjQms4TEpxbVhxbURxQm5scGxUQVZoaERvTlY1akJZWXc2RGRi''@;'; put 'put ''V0RybmNaNkJVZ1U2TlgxWTZaelBsQXlWekFQSlBSTmVacGRKMTVHcjNHUEkxdXNFMFA0SFcyeWVBTnRza2daSnNNSXVaVUFUYVl3NkRCSEFhYnpHR3dwZjF5Z2JhMVg0emUxSDR4ZWt2N3hlaHQ3UmVqZDdSZmpON1ZmakY2VC92RjZIM2srRnkzZ0Ivb0VWMEUvRENCbHdBLzRxVHIwUUpHTi9H''@;'; put 'put ''TXRqbTNFc2ljanpYSGJITSt3ZUx6M1YwLzFTTzk0ck1FOG9yUEU4ajAyOWluVGZnaWdVejRNb0ZNK0FyY2NuZS9yL1ZJMDc5SklOTy9UU0RUdjhQS051SDdCRExoaHdReTRVZHdMM1QzKzBtUE5QM25CREw5bHdReS9WZXNiQk4rU3lBVGZrOGdFKzZvbmI1TXF2Tm4xYldwZDR2U1UvWGJuWGZZ''@;'; put 'put ''K1J0bE03b3NBQUFBQVFBQi8vOEFEM2phdFgwSmVHUFZlZWc1NTBxNmtqZnRrbVY1MFM3YnNpVGIycnhidHJ4S3R1eXh4K1BaUEo1aHh1TVpHQWlUR1FqTERFc0lKU1NrU1VOQzJnUkNDRHhhYUZrbXdMQk1GZ2hmU2lZTEpDOXRtclJaMnJRcDlBWFN0RWxMK3NEeSs4ODU5MHF5SmM4TStiNEhZ''@;'; put 'put ''OG0rT3V0Ly9uMDVRaFZvYVQyQ1B5dllrWUMweUl4c3lJMWFVQXgxbzM0MGdXeEp5L0JBWDA4aUhtbjFlNXJxYWkxNm5VWkJVRVY3UU9uVU8wVnp4T3cyUjJMdVdDUW1zbmNSZnBXZjBtZjBuWDRDVDJMeTcxSWIxaUVSaWVIUDVsN0cvZjg1TlB6dzhQREREdys3bk03aDRlRkR3ODdiSHo3a2No''@;'; put 'put ''NXlQdnp3dzg1RGgyNGZHM3Y0OEpqanU4SWJLYWZYQ2Y5dVBlSWFHL01jZ04vR25IM0Rya00zZEZuRHM4ZVBQM2I4K0d4NDFSbDJ3aitFQ0pwZi94MzZHbm1DN2MyYmRDR00wUkpDcUNhRENCR1dGVmdRck1LVVFxSFFLbXE4ZXAxU3RBYU1FY0Z0OGNXaThVaW54V3hTdVpmMm1tS0N3MkcxTkRW''@;'; put 'put ''WnlCTTV3M2NkVnJQRFliWTZFRnBmUitQNE1ieElIdFM1VUFWQ09nRmVuMFowWGorODNBRHoybEVUdWlIelpPZnN6bVN6VmtXUVVpQ1lJTHhTaVRXYW1reU5ybG9RUmZWU1ZRVlJxL1VaQlNaRVM2YnNTUjk5d0Q1RWF2RndhVCtwNGE1a0kwSk5qUTMxTUkyOXpsWnJoUVViOWZuL3hJWUFGaU9p''@;'; put 'put ''VzNRbjJFOGl3bjRpSXZzUjZZZjR2NkxYYXE4TkRnZnZnWi9qMnVQUjkydFBTSDlkbzMzdW51ZzkrS3V2OWo4Ri8vVy8ydjgwL05mL0trQXl0SDZXaE1uYnFCRjVVUnRxVHdiYkFpNm52YTdXYWpaVVZxakZHa1NVQUdhU0JqQ1EyeEJHK0VNQUVpdWFhdExyQlFDd1J3Vm9FZlA1RXhackxJUmow''@;'; put 'put ''UUdjQVBTd1dFV2YzOXlJelFnZTE4QmJQQmFGQnlSOC9FajJwcjBkMDNzdjI5KzVzeXQ3MWE3MmlabkwzNWM3M05VYlNXSXltUnEvL0VveE9hemIzVCt0WDdQTlp6dTJ4OFgrL3BxNS90R2EzOVR0bk1mMmR2MVBOVU90dVpHUlVEQm1lZ3NXb2tUaDlmOG1iNUpuQUNPTWNEcGgxSXUrbFhteUZr''@;'; put 'put ''NG9VSW1WRlJpcmxIZ1ZxWkJhbzFJZlFRb0ZXaWFZWWt3MWdGNVlyaEtKSUdpRktYdm1TVDkwQ1Yrd0M0S21ySis0WElWRjBTckMyVWJLOUNBRTJ0SnVxSHl2WGJ1U3Z2WjJoOE5rUXFpOXQ3MG5IbldFSGFGbW42bkoxRmhYYXpUb2RiQ1pHbCtOYUE0WU9FZ2puUUJLVXcxMjR3aDJHeWdzM1M2''@;'; put 'put ''VjJXU0pvRTJmRCtEQ1oxK1liRzZaRElYWUsvN29jSzUxK05wNG9yVTEzdFdDWnlkYjhoOEYyTU5FSzE0S1pVTWRNNkhRVExoOUpvam4xcmJodTFPZGtaRlV0RE9WT3hpY2FRL1R6NkJGTUo2S2RJN1FqMkIvQW1wWi94MDVTWjVGRGhRQVBqT1E3QTBIdlUwTjlYVzFGYmhDSUE2TUJKS21HSTZY''@;'; put 'put ''Z1Z3dEdTVVFLWU1Nb0ZCYm05UFpGbXVMT2dQTzFqYVhTclFFbEg2VjIwWDNGRThVN3d3K3NzWVRWcFZvUmJBMUs5K2xJZUh6QTJyQlRrbHc5OUkxL1FlN3BtY2I2NE96bmNGMFlQdjIvdjN0alVNZG9mZm5QdGNWbitqdjhEVk5uaHp1R1p6dkYvZnNEKy9zVFIxMHQwejRncE9Cd0dSZ2NObzV2''@;'; put 'put ''akkrMzNEbDBFbXlPeEtJajliSFc1cmpheTlucjV1MVo4SzlZNER6d0JmUWcrUkJWSU9DbVNkYkFGRXFLZXRoNTRzQkNYU0kvcmtJZitJbFNpSFR1NTYyZUFsc3h4RExzeDdSSkxwMzZ1MUdvMTB2dHVFZmtlT3RScnZkMkhxY0JLREh3UG9PbkNCZlJ0Vkk5VlMxRXJjSEdNdEtXTm4yck9Lang0''@;'; put 'put ''NnROQzlzMzc3UXZQQ3pXMjc5NlVMcnpoYytjTzI1eFFDZEVPaDNCL2JMZlVYb3k4SGpUM0RBaFZpL0ZSamg1c1Z6MTM3Z2haMnRDeis5OVphZkxiQyt2Zmc2dkVTK0Nqc1pUZzR1VG8wbi9QVldVUTJjS2QyUFVUVWMyaVMwQXVRbk55RWlZQ0tjb2l5V0g2UXdCU01zbzMxenMrMGhsME1wbWdJ''@;'; put 'put ''R3R1WjRRaVhDLzI2WHp3OS9KK0tEMk05L28yZHB0Y0QvUGo4N1lNNlFvUzN0US8raS9FNVVhYkdWL3diWTdLSmQvUllyMjRuNzYxbzFGaFRWdGMxV3BWSlZwVkJVMWdjRGdXQjlwVUpScFZJcHJNMjExUW9CcTdVVkZmbDJDdFdGMnVIcnFqWFdpRXJicURHNUdPTldWcXQwT3IxZXAxTlZLOVdp''@;'; put 'put ''S0ZTN1RKcEdyU3BpMVZSZmVrc0cxeFE2U21wSUZGVWlYOUtOWURyRkF1QTlBQklMYUFWWUEwVVRCWjVtZkYybkV1c0MyRTBsYW94SzFnaXBlVEh6SXZ6RExTKyttSDdwSlRyZTlQcU42Q1cwSC9EUG1nUXlSK015K2dFUmVRd1UwNEE4WEFVeEo4NDBWMWxBeXRVN0hjR2pvVEFWZDBGMzQyQVhI''@;'; put 'put ''YXNML1FyMzRpaFFibTNTekJCM29ZQzRlaDBkek9nME83dXdrRnZEMFVtMm4wbVF1OC9BL0pWVWc2QlBnQ05pYk1VVUJ5cFJoVWNBVmxVc1pZOUtFcllxTDEzeCttL1d6K0tIeU9zd3J6NVpRd2NGWVlKUDhna3BXOE16QzdrSEZzanI3NzZHbU16dEJiNXlMVGtIckxBSnRTVmJnS3V5SFhNT2dr''@;'; put 'put ''SFlzd1hvZ1BaMFRickdXZ3ZqbVNDTUFvck5QSkhFb2lGQUprcE1qVENUNm9PVGt4K2NuNFBYVytmNzlrV2orL3I2OXNWaSsvcXE5bnh4ZGZXQlBYc2VXRjM5NHA2SnlWdm41bTZkbUtDdkhBWjFsQlJBQjFBaGU3SVdqbElBZUtVNWg4ZFlpNmYwUmdZNjBaK0k2TjFQWCtkNlpEQkxack05Sjlh''@;'; put 'put ''MklkYS9BelpWQ2Z1eG9kYWt2Nm9TdGdQWVFFaWFnWk94UnFyRUxDRW1qL1JXajE4aDFnWUdNU1ZtdW5xVjZJOUx6RkNMNFh3NjNwa1lhaDcyZHUveUpaWSszWGVvTjdQNE5GN0srWVorT0xBYWJlNTNkRVdDSCtyYzJ6ZDZZK2JlTkorL0dlQ3BoL2xiMEdDeXoxWUxjN2t3a0RTc0F3dFV1QU9W''@;'; put 'put ''NHhXWVhiRU1DQXFMQWRtNnJNSktwVlZKVDdrRk5YczhUbzlYRkcxdzBwUzVSRHFwSEFyZ21OVWlDYVRDQ2tVSjlOKy90VG51UHRRL3NYUGYvR1I2ZlBmaVVIeUhQN3JuRTBPcnZabWUvc1crSzhlcWhtS1JVSFNpdDI5Z0F1T2g3dmhZWnpoOGZYZ2hQakNucjlrKzByMDd3bkdoR1Y0R0FQWVZ3''@;'; put 'put ''T1dDeWRZcTRFazRyVkxDSGpBQy9mVXdnSStKWEsxaXFyS3lzcnF5R3VqS29LTnI5VHI5T0tLbkdxdzdwc2Y0enR3akZYaGg5K3BxTnZmN1B4L0NyK1FHeC8vODEvaGc3ajRPb3k2QVVTUE0wNGo2a3QwbWpCWGFHb0VvNE56VENGNlJBb1M4SUpBbEx1RTNBcWdSTmJqMFJxOUhCcEFsMGlrSlk5''@;'; put 'put ''RlA2VW1NNXhIeVo5Y0hJenN2RDZkYjlrN01qWGRYNEh0eVo4V1JtY0hWL3NIM2pWWDFSTHIzTjQ4Rmh1ZGk5ZmhBK3ZWUTVNQndhclVMWU5BSGE0dkErVFdnVnNxdERYbzRPMzhkVVNwSVdnVnNSYUVVRktzb0wyWkZXSmpNSVJwQnIyeHNiV3p4dXFGenZkZnJVNFBlaHFURlVLNUJpUVhFRENl''@;'; put 'put ''U0JrQzVpRUZXSkVSS01YY2RIUmk0YXV6Mlc5STNUL2Z0YXdsNEprTHgzVEhIU3I4bjA3eHZmR2lwV3JjNGloK0RoUTRlNmZ2S3ZTdC9jYUMxdWQvdG5ibGptNll6a2Z0SWNNSS9DdHVjTzBEbERaeGpGYU9ocG1TOUFnaUlVUkRsUFpqcDhLQUZnL1pEMVVyc2pEbk53QlNleU4yRnY1LzcwVzZ5''@;'; put 'put ''a3U1ZHU0dnFHMUdBUXl2QXdRNXc2RUVqeVNHVGlnQ0hUWXRGUUpBNGhScUFnT0dNR0tjSUJPcnJFUXIwQkxvakhmV3Q5UzBlRnd4UjE2YWhyS3VjeGlIQng1QW5RTW85ck5LZi9ockNtTWtiN3g5ZVNBMU1ERjNSUDNERlVLWjNlR0g0eEpobkl0d3lIaGphMVQ3dUJwVXBQdXZ6emNaQnFhcHFY''@;'; put 'put ''K3dlMkd1dTNkYWRtRzhMemlkNlp5Mld2ZjNkaSszNEU0MXhyeXZlTkJMeHhSdEk3bmxIdDlmZjU4VFkyZWYzZGpzWS9tODZlNGNCanIxQ0F6WUVnVzByZ1hDVlpCWFFYNEM5Q29JbFV5UWQ1TE9IM2NMWis3eGVkdllXNmVnNUhRL2dma3ovbFBadm9KRGc3TklTd1UrVm5Qb2d3NFlVTy9ZT2ln''@;'; put 'put ''SGszT1pUNTdpUSt3ZzlkbmIrc0FjbVEvQTZ5QXNyNWVlVWY3TkY2cm54cHVUR1cxVVZRbFhXS290Qnh3UUw1ZWVHSXNGQ3lnZ1pxL1NPNzVhbFRlNkEvQnZZZEV4MjRuV3c2YlF3bVlqMFFNYjNJODBaakovRDl6OFpDVkM2VDZDZE9FY1dBUzlWVDZrSTZGREdtTmRjamMwSjRCQzM0ZE80cC9j''@;'; put 'put ''WFk4OC9QODdPSW9YT2tScjhUNENKSW5JbG15aitVbE1PRkNTQkxFZ3NuQWhVdHVzb0I2ZTBULzlQNFcvbll1em5uOUtmVE1PY1UyZ25NY3B6Q2pCbklvaGpTck55Q3ArR09WL0pkZC8vL1BOanYrajlCWjNUdnY0Ny9CcWNmeTN5b0VReWFxbXFwR3dQVTdZdHdNUTNGY2tReXNDVldLR3dLcVpz''@;'; put 'put ''TnB2SDV2YldldndxdWhCWkRoYjRkQTBHMjYxWWJqL1hzeWZpSEdpT3pua2plLzlvWUg4MHNxZG5SaStEOTVUUzArVm9Tamc3ZzVFVDdkc2piYk85VmJjVW1jOTBuVzNyZHdtam9DY1BvaXgrSnZOa0JXaktCcWVEcUlYaEpvT2dVUGYxRWtEUU5CaGJWUnMrMFJSOVl0cWlUN25tdTNidDRwTTBW''@;'; put 'put ''MnFJQW1TQ2luSm9WUVVHcmZJZ2toZ2dNQmExV2xnR3dPalZVOUxVUVRDOEZWaXppQzYxaytrOVR0TDBoMHhDRFlzQUhLaGFJNmhYTDlwWkNZWkhCeFZDQWxLdWJ0MUxGRldBWXlweG1YV2YyVVgvUzlZbWt3Z2xzOG5waVRFNHF3R2ZyOVhyOGZtcVJIdUo4dVNpTmxhUmtBQWpySU5abDUweVg1''@;'; put 'put ''VFVxazVtcm9BQm11RGFnTVErUnA0ODh2NFhyejcwMk9Ib1hDalVyMjZjNzVoY1NoM3I2UncxVktmMEhrOWpZN2QzNmI0OUs0K3Y3dnZDM29HRENVUFBWU1BOTzlVNEhndG13LzJSazRjZk8vUytGNDhmZUdnNWUyVTgxT3dQNzU4ZU9aRUtlb2FWQzJldFRlNld4ZUdGVHkydVByR3k1NzZsZXFm''@;'; put 'put ''ZDYxaTdiRXJVUm5xaU96cGlReFFmQVMzSkQwRGVpS0E1QkpMTkdneHdTUU4xQUxrb1FHdWdZbHpBVEh0VHE5VVY2Z3F1anRlQzFpQXlVOXRmaVVsMzd0YlJCUnltLzFidS84Szk5NUluMXJiOUt6NmErd3pBZkIrTWZ4ekcxNEZXNTBMOXlSNlFPRENEQ2pnQ3lHVWxWYWNrQjVXSXVkWlA1N0xY''@;'; put 'put ''R2ZUT3BqcVgzVlZyMGRzTXRqYUhtaW5kR3dXUEUwc0tsdGtvLzdJUDl5WjJ0SGQwOUExRmwzcHp6Mk4vOStSazk0OS9tZHkyTGZsTDhrUmJ0aU02MXRDNHB5dStveDNmTmREZVB2Q1QzTG54cnE3eEhOTnRxTno4S0pNaG9XU2d6bFpaUVhFa0xZc0t5d1lYR2p4ZzBzSkhYV2g1bE1pckNNVUhq''@;'; put 'put ''aE1QN3QvLzROTFlMUjB4MzBwaThuUW1jM295c2VLTGRkd3lWZ1hudHZ6Z2dVUm52Q1UwZlZ0bTZvUFpVRXU4ZytveUZHNHZNSDNPekN5a1BKaVlvMEFDVTFXbHlWQnByakw3d0xvRThNZ29HY0FKQ2ZjQ1dML3ZqV09QTEM4L2N1eU5OeFp1ejJSdVgvZ3NlV0xudlFjUDNyZHpmT3pVek15Tlky''@;'; put 'put ''cy9aM3VmZ2ZuNllMNUtGRTYyeVJ5YjZtNktKUkNiTmNXYU43Tm9Lcm5IRFZRNW8xbmkzM3FuK2ZQNG10eEg4ZWR6UnZ3V1dmbEYrdC9UNUFsSnQ1YkgxNkNXcEU4ZW4zSmhOcXFzMnNBSEdxU2hJek4rekVaMXkrUE84RUZ6ci9CQitYbmREK2ZsUkxGa0o1aEpTR2dpUktGa0JvTlNnUmh5a1dV''@;'; put 'put ''WTJVSTFYOGIrUWNzeHdxRzV1VW5wMUJjSjlkTERpN254WGRqWWZ2ZkVFanZBaVUrRlk5N3J1dmtCdHEvNnZvRXZ6LzIydlpzZllYZDczTi9PajlEZDhGQmh6N2N3bVBxVEhrazlYZ0dkbk82WCtzdTBhRE1zTWQwdC9FVGdsZHlTelYyUnplSlBVM0xDM1hUYnViL0JiWHhjZEIvejhScXBZNlZn''@;'; put 'put ''WDNIVEZJeXJtV3lXOXFJMkdjakZ2MmIwQjFqRVRCbUcwVXc1SjhzQ0lKT1ZnVjJIdEVhdkFyb1hUQmRZQmFXeUp6L1ExRzFhRFBkbnM0bURnMVhKenE1QTE5NUovRnF1WStSWUg5L24zdncrSGNrR2pWcEptT1RGekNNb2NNK3QwV0Rnc2o2aXh4RU4wQVNJMWIxWnZIYzE5M01jWGNtOWN3eldt''@;'; put 'put ''L3NRUHBYN2E4Q2Y1UHRmWmVPT3dMZ2FHRmRKZFdHMmFEb2FKUTBKZEVxazFPdnBvcjJBSnhFOTBlUjZzMm5BdWJYUHNmNlVobjVmV0pkWVpsMG12Ynd1RFJoQmJuMGxuTUMrTEZwSDY5bnMranBkbEJQL2ZHMGJFZG43LzZEOHVBOHhYRzVNMmtWQ1NrWTE1RWZGc0N3M0d4TS9tczNtZHRCaitU''@;'; put 'put ''NEp3NGpodGU5VC9rdHgrTGYvUDJ4NHpuVDJQYkIvL3dQN0prK24wNmNuT2VKS0xPZkFnOHZMRHgyWXlINXdLblBiTk1kYnBwOVFuRDBJZTZzQ3ZnTldPS3dDU0ZYQTFDVlRDQ1RBRm11cVRZWnFjNDFaNzNPb2FCREJtZWM5WnJmTWx2VXoyRHAyTXBVNk9YWStpelVMcTZzTDU4Z1RYU3VEZ3l0''@;'; put 'put ''ZGIrT2g3TWhJTnZlVFloaVlhQndtMlVrZCswcWlBck5TSU5RMVdqRFpGRVdlVWJQWjNHSnVEdnY4bEFHREVMZUsvbUppcG83MWVNS2ZzRzRTd3VTM3pkN3B6dG53OGY0bEdVQzVWN2U3citpOHFxNGhEeU5jZjNVNDFUUG1EK1JobGZ1WHB2cWxubVhQWXFnWVhFWHdxb0UxZ2Z3RWdhSEFzaW04''@;'; put 'put ''QXBxSXhONGtjdmQ0bkhxOWtmSWV1bUszSDJ4dVBZT2NVdllWa0lOSDVyKzA2L0d6V1FhNlhNODVCalo4MndsRDd1MjNHZlErU1FFbitUWC9pNFRKbHdGcUlLOXFyUVFrTnNGRjRLTE81eUo1MVlLYXZVRVBCWmRGdG1xb0Z6UkVTdGdmOXljQ09POTdYMGY0cXBISWhIZnhzc3lCV04vUm9jbHJJ''@;'; put 'put ''dTF0aDJJdEk3NGRCNjg2a2JocXV2TEsvbkRVbVhCRUUxWkRXNlk3dmpzYUNmZTNocHlKcG81SWJkMnU3VjI3bzJ5dFFZRFRKTk16dUc4b2I5SnlaNDVrQ21BMzJMUnVvQmpUNjZUKzlTeVl0R21KbG5jQWpud0srcHVSTTlrb0JSc3dMdDZlR1psTUhwTXNqaW56a3ZZbzhUSHN1bTB5RzEvdTYx''@;'; put 'put ''dU9aeWR2bTYrYXVtTUgvbVR1cXFIVm5wN1ZJZnJiamp1bU9IM0xPcEdLenFWa05qaHdUb2xwY3M0REpnbm5QSlNYQWU4Z1A4aDlmd0grWVJCcGxQUEN6eGt5QTJONUVWS1lHRDNCV0JXVTl3T3pvS0V0SnNyWjVvRmJHSFJLS2tramRrei9DZTVLN1BidS9Pclp4Yk5mM2ZtcjZhKzlPQTNEL1Ex''@;'; put 'put ''cFl6L2J5T1RhczN5ZElFZkozWXkvQVgvVXFHQm9PSDdLZ21veW1PT2J3V0RRVTdqQ0ttRklEUnNkWkpxNC8rLytiaG1MdWY5aDd6dHpmNEZ0dWRmeEl2ejJPcmJ4c1EwdzlzZGdiRFZxU05hcEJLRERQSk9UdkJBR0Z0eVN4b1FqOCtkK2RlQ25QOStYZTNNTzErTFA1SjdDMDdtanVUZm9XRDB3''@;'; put 'put ''MXJncyt5azhDMjY5dkY4ajc5WXo2Tm1LRTl5OUFRcEFEK2dUUnduSkhjQVBydjEyZ1BqVEEycy81dkovMi9ySGNELzUyU1ZhbVJGQUxQalo5dWFqajc1SmZ0YTk1dXlHSHV2dnJKL0ZUMnpoY3hWQXYxVXU0R1h1Y3NXb0ErWnJ5TThuK3dPcGFrYjl3M1ErVkpqUENvdy9CajhkTU4yYlBlVG4z''@;'; put 'put ''ZTgrUVllUDQvdncweHkzenFnT2pTUXR3T0dabHhSbXBoN2prNUozNTR3S2pSZ2pScmRmZFArbzk0R2htMjVPZ2l6NjlULzhBMTF6YnYzOVpHNzlHWmpPd2NiWXdrZE5oeEFCZ0lSc1gvdXJUSXFmNnlCSllwRjhEL3BhV2Q4cTZEa0JuNXcwZ0VqbXN5YXM3c0daNjN2SVZ3MmY0RHl1RTNTSTN4''@;'; put 'put ''QTlzaU0vK2tIU1pNT0NvaGFFZ2g0MCthWkdwYUJTS3RMY3lIUkFZNldLVUdNTGJHeXEwTnN5YXF4U29XVUpIeVhqMGxPbUhTVXQxbGpXMHlTYjh1SmpYdHB3MUtnelUvOVd2Yi9lNTNKUXo1Ykg2elpxNEtpUXhReG5WV1RFV1F2ZVdnT29nWEs0RU45K1JjYStFcCsvUExHVXlPNU9UcmtuQTQy''@;'; put 'put ''SGRsZ08xa3pOOXM1UGRoSDlOUWR5MzlqVzFyRTcwemtUYURBT0x0b3MvWjA1YjNka3h0d1hDaWVRRko4bkV5RHJER0FOUFhkV1cwR1VJQzg0OUJvQWFYV1p2SlBLSm5rbzZUYXRlZEE1TnplaXF0OEdYNllFdDR1TWRna0RVWWlaakVhRWpDNmowMjZESllQczJ1UVo5Vk9pMHN2dTBHTDk0NzRy''@;'; put 'put ''QndhdVRQVWZhTXhrR2cvMGUyYmEybVk2TzJmYjJtWTdpWDcweG16MjFHaDM5QUE1bC91M2FIZk9COFphNzk1b2RHOXY3MUtVNDJrNzROemJnSFBsYlRIYjFyYVk1WUsyMkgrZG1wdzhOUjVkOWticlJueVJ4UWo4ODQzWm85NERzYXIwNlltSlUrbG1UNlRla2RnWFR5eDFPUnNqM2xaNlpuRTRz''@;'; put 'put ''MEQrelBSQzhabFIyREV3TWtPakdNb0ZkSGR1YnNTUVUyU3UxdzI0ZnBIUkxtR2cwak16K054NmVtWllRdkVDZVBSa3MyNFVvRWVWa2cvdUZEdXRUblp5NU56YTZJRm85K2lwYlBaR09EaHNYVHUxK2N3SVBUUGlnVE16bzNwcTZRT1BGd2hUaG9pZ0lDdjVaZG95cWlJOXptSUJiYmZlWXJmVlVn''@;'; put 'put ''bHU4REgzcTRlZlZtR3haaWRkbjBwMHduTHh3YVhha1BNRFhhUFhUWTVlTTNyeTF0d3U5VXBtOGxBRjNxdmVrVTU0NmpvOGJXT25wek9ueHI1NDUvUmwrRE43MHVrOUhLZEFGdVB0d1Bzc2FIZXlRb3RWU2gxR0twTG0yU3IxU0tWU0xvUEdWc3NjSG1oSmdTWFBLOHRRcVFOalF3VmNaclgwdzEz''@;'; put 'put ''SkNvK2J4U2xGMGM3bGpKdnlmdVkwNUVpb01yOTA4ODJaYmR2R0UvRldyNlplYjNVU1pTbzNnTCtlR3U5Sk94T2FLbTg5MDRPM2t4YUFIODNSK0hheXFsRkhWRXFObXZtd0pmNEtEQTFram9xc1VzMXlXVlFRaVhBWk1JMEYvcHB2UjVraHJKTzJScVZ0VFpjMDVxVU54L2lyQTFRbm5xa0JtMmp5''@;'; put 'put ''ZWIwZXlsK3h2dGlYSHQvZ1NnYzhqSlhnWWN2UWlYVC8xUjVuNDg3MlhZY0FKVWVQOWZjZkc5Mk1rc3BjNS9CcWo2K3B0OEd4ZldwN2Uyenc2dkh4cXdkaTdidHloMExib3BGdG9kQzJTSFJiaUovOU5DQ29BbWpZVEtOakJoNVhZYlFFQ2p2ekJ0dUtUSEpBUkwzSmJhSStDTXJxNERnbGY1MWU0''@;'; put 'put ''bmI0aGwwZG1ZbnV3R1JiSm1OZGloTjlaRTlQN2xrOE9EanJHWERubmdXMjluWnJqTkhFSUx4K2tmdzE2R2hhNmdYSSsvUnJLZkxvTTdKSFJWdFRYY1hjK2NwTjdud1JWSWk5RFExbVUwT0R5WmZKa0lPTkp2cXJxWEhmMmpzdy92b3I2MWxwZkR1bE9TM0k1UnBRUVVsYVdUU1RJREJjVmV4WHdV''@;'; put 'put ''YnRDaDVDc0ZmVldTMUdQWnRWTEFraUZEc0JWUGtWWEJYVVZsVjV0YmFtekhpaXNKUjNmNlVSQjVRcVR3T0pySDIzaCt0bXdKcFlMTFVTdVpNT2pRTG9YV0NtaVk2dlJ0WlA5VWFtN1dHcTZEQlJBckJ0L3NtK3A1WXlHV3pmajJ0emIveHk3NTBBempiY3lNK1JIczluWUZ6Wjk2RXI4WDFNQVpT''@;'; put 'put ''QVcvRzJRZ1RveVkzKzlLeWpqcmsrT0IxWktCRXJsOVdpU2xBcTlSa0ZqVFFYMkRXUU9qeWtUVlRRaEtoVXR1SVdwZ3YwdjFCWFNoOTB3VzdrY3V1TmJxUGJwQUZ1VVlSZXFnMi9STXljT09DVlBMazluRWxGQjdMOEpXT2FpZlRzTk92MjloYWhYYWJvblNpbldzSzlrYzYrQXQ1VG52emhaemph''@;'; put 'put ''Y3hBWW1mV2twTlN1bHpGZjJyK1Y0MHNKWVVpYkw5dHp5MDUwMjlVWEl5bnpKWkNVY2g0b2lzdVljZGpQSm4rSjdhTCtFc3VGL1NWY01SaS9jWEx5eHZGT3FoZDBjdTFBVWd2U3B5WW1UcWRUWFV1SitMNEVWdytRcE05dEIzMU9YMTZmbzNKYUJXSVFDTDJnV0ZFZ0dYR3hQcWN2VmRNMk5qUmRm''@;'; put 'put ''TFJMR09pUzlEbjVPUDRnZlM3M1czTG1RRGw5anVwUTIwR0gwcGZWb1FvN3N4VXBNNWtOSW8ycFB2cE5xdEhtaHFhTGozWUpBMTFRaDlKZlRIWmRRSWRTcnMzZzZvSVNkU0RYV2FyM3pzUExZWUJURmJyK0daN0V3WUdrWjZKV3dKTHVTM1VTRGhpelRIZ0Z4WmgvYUNyZmE0c09zT216ZWhPM3ZR''@;'; put 'put ''M3hpRGxQbXM5Y1B0NnpKd0xzK0cvNlU3Q0ozTTlwMEFhaklPam5MOEk2ZmFnakdUTERRaTFnYkNOUzhOYlpOcnVmZk1qckNYRDNFMC8raUxNMEFUblR6U3I2NUF5Q1JrSmwwSGVPaC95N2RrUUdYWkhnY3Zid1RIaC9xMmQ2SXRSWEYrMUtqSVN1bUt0cTlpYUcycngxYmxPMWZTZ3hPdDlrNyts''@;'; put 'put ''bzlvQW1hZEE3dWtOak82aStCMnZjVHU0R2ZTK2NiTE5nRlpQNVJMaU5pa2F5UkFNcEFBZXdKUGR6VFpUcGNFWW5WZUs4TkRzdnBwZlN6VUF3MFhCZVBJRzN0OFlUNDl1MlpXNisyV25WMTJ2TXpuUVBUcWYrK0k5VHViUDEzaW9ObFRuQW53QzVHYjhWYUVLYnpHK0JZVW9DZjdONVlKVS9vc284''@;'; put 'put ''a3JJSEMwWkIyWjViZGlyd1c3UGI1R1pobENMTm4wcHpIcGpVRTRHeTJTNlo2UUp5dmdNY0ZwZ3Vuc3k5eEpndW5vVDkySUY0YTRsU3p1bVN2VUN5N3FzM01HK0ZrYnV0N052LzZwSHRQNTRBeld3ZVAwYjFFd3ppRGdrTzZGL3EvOUpmMlAvbG5yMzFZME1mdTNYMjhmRTdQem9PSXk3akIralAy''@;'; put 'put ''anY0dnR6QmdwOU9oTEZaRG1HRnFNQUtLdCtvRndYR0ZraFJnTVZnTUZERWMvcEZ0OUVmc1NZaW9oRS84Ymw3ZDM3enhaMmZ1bnZuMTE1NTlWV3NYbnY1NWJYYzcrbTRqZXRUeEFYajZxbXVXS2tHdklZaEFibWxvU2xlNzZkcnR6TzgxaU9kd2VTVzNLb1VUUWF4d0haUmc4VmpYa09kdTg2bGJm''@;'; put 'put ''eW4rV2YrY3R1YmRWT0pwL1hKYWxOZGtvaTVPZno0Mmt2SmJzejNFb2VYVjJIT0xYeGsrZ3Y3eU9LNEkvZTMrQk81VjNFMGQ2UVgzemJlbXpzOXpzWU5yTy9HZThuendIVUJSamFtQU9nd25uQ3hERWxvc0NneEFveG05QmFxUWlsQ3VCK0RiSTVSUlozbXFsdHJpTm5LZzY0aXBVNFJheGE5d1Zn''@;'; put 'put ''czZGMmNWdlgzV3JEWDUvTmlhMitmNnZQTkk3R1BkYllsZ3AxM3hWUE42cGltcnEzbEU2RkVkVTBpOVBIV29FMFRnMW11WEQrTEh0bkMzMGExdHl2NytxUUVSK3JmM28yWDJkcWJrMTQxODVQcE1ZSzE0L0ZDT3ZFeUJkVU1yUVlnb2lsZ0JiSHU1NGxLQ2NwZEVvMmtBUVBLbTEwcWVJY1RDZlgx''@;'; put 'put ''V3ZtS0xiMzlxdW44VG81cmJNSFdqNGNTTmRXSjBDZGEydW8wTVhWektuNVhaekRSMXZteDJFaXplbjBkRGVCV2ZETitWQy9pNnZXMTNGdEljd2JoNTNKdnNRd1pLdVBtMW5lZ3J4SzlyT3V6MVZHRnhKYVJjK0tNcEVUWFovbzJUMHdGclREeWVTbVhKTGpYRkNONk9YZGtiUlQvV3JheHorSzN5''@;'; put 'put ''VFNxUTA2S0tZME5kVGFyeFdUVVZTdEpGWS90d2F3TFV0a0hxSDkxTE9lU2x5QndUejh0UHFESENMSWVyR3lQeFFvaXpZeC9PQmZLOWgzczdqN1lsdzNPT3FOdEE0T2hhTzdEMmQ3ZXJLdFpPWmlxbmo0K09IaDh1bXFvWCtsdmluUm9jbGRXZGtaT1hXbkVkeGl2VFBIOElFVDZRUyt2UjZsa0Vv''@;'; put 'put ''NlRKcHdoa2VhMWkzaFNpUWt3WDVHd01CSXpIV25tbVNpeWlCSW4wbnBVVDNNRHdSNmdhckhYN0l3bFdMWnZzU3NIanBDbUtaTCt0Zjg3TkRDUU9EZzRlbTF0ZC9XT1JILzJXOTlLcDMyZWM2azdSbzcxU1JIS08xTG5pdjNZRnRTZGpKc3cwdUMwR2hhR0tTYzdyTUlFMUViUVpGY3FXSmtKejQr''@;'; put 'put ''MG1JMEd1YVJFVjBtTFNsaDVqMWxPUUlZZlJ1RDRzNCsvOXRwcmMvRHorTytvNXh0UHBtWlRKMDdBQ3o1TTNkL2MvaU1MZUE4NXczSzZPcG5IMVUrVG5BRjVXUkJrV1NsUVFPR1pNbGxkMUJsYmJKUjFGdjIrMjA3ejVPM0d4NlIzc21BM0d1cnJEZlIzL2c3NDJvYWkrSWY0UlowTEIxUklKK0FB''@;'; put 'put ''K283a0E1N0QxNUE3TDhWL1RIT3pCbkU4OXkxeVorSlMvY2RXMGYzY3pCLzNrTzhaYnVLOHpiLytLbDZITTlCU1d4QWhwaWpjUk1YdkI2bmdZaUVBRmdMeU1TbUFKZldxbDJwYk5CWlVNM3FrcCt2Z1lHN2dtZ0hjMHJHenUzdFg1MW9UK2ZPMVhUeEcvRlAwbDNnRWdOYVl0QmR4QlVMWnhVeFI4''@;'; put 'put ''blc4Q0hxWE5UWmF6STJONXA4Mldpd05EUmFMWkZzT3JpZlIvOUFNYm5RdDI1dk9hZ0k4TnRJc1FqWGx4Mmt1cngxZzRJQmdWMXhOTTh1QVM2OFdHT2wrT3N3c0tKbXNDV0RXVFZ1MTRWTGFobXhHajhkRHBUUUZIYy9pZCtYVkk1WWFDOElxSHZuZi9xNVdXMWhuYkFBTngyUTAxZWljMFZxRkdQ''@;'; put 'put ''UTJlSUs2cWxhcldhODFWdXF6VkpqQXVVZmgzSC9HenIxTnBPZmVocjRyNVo2bDhUOHkvdVJCUGNtRXE5WmFwU0E4WEVrUVhTdERTTTZ3UU5yc1I1S0k4N2p0TnJNeGo1ZW9tR1ZKV1o3VXZhcVNGV1BnTUxoVDRtUE5aZkxsQ253dGQxMlpqRG0yQnhhREUyN1F1V0N0TkNjeGhmNEVQWXJVWndo''@;'; put 'put ''KzhsSEdjTXUwT1lycnQyaHpRbTZEUmZUVUZtMVc4MjJxMFdlMmFMTW5QOWRoOUZlOERkbmM1aHY1Y1NyUkR6YTI0ZmxXd25sR0N3WTBsa3pwS1h1a2NGY2pERXhJRGNlZ1ZxeG9nRGVxbGtBMWxVSmpTcTRvTWF2V29ETkFaNjNFbnlxQldXSTVBU2RHYzdKQUlRRHJLaUFuNHVSK3YzczN2b3Mw''@;'; put 'put ''NUl3LzVSazVORDBybmJzVjM1eTdsZWZRSkZuT1V4eTlrNnlQeC93K2hhaXFFd0FyYkZyQTN4b01MMms3SVA4a3gzMmFmZ0lNNjJwNFFZcXJaSmVwSllPQW1VdTJKb2k2L2JCcWU5NElDZEkrQ0N0dXV0Uk9idWdVMnRCSk9IV3hYc25BNWc0MDdaTWNLdE9QVzNpVlBtOHJrSjRSREx0NmtJOWFM''@;'; put 'put ''RE9IemVSWEpqNHVJVHhaK3NCUWpVSnMzRXlidFRzK3VhTmN3bGM0b1hEaGpTVGJyVGwwNzY2U0REREFKWll2eFhDN1djTC8yeGt1NFNLYzNOem1LSHAyaXpZbjVEYUEvN2RzMFdaUGZwekQ2SHJlcG9EYjYxUnkzTWZtYXVQcldmOVl1WEd3bzZqTlVlQnZtOXFzL3p1TXM4N1cwOGJYcy81a1NS''@;'; put 'put ''c2FORmF3OWZCeERxOC9zbkU5UUVjME1QTnRsbmZSUUNzUk5tb1lTMnBNa3k0MFJTcUdWZ3R2RGRwNlZqWnFobTdWSUc4cUNyNFBaaVZGOUxMZkE0Z3FJb0xReHkvejVMblJVVGw5N2x2NGZENkZEbmVuY2R2YW4vSkV1bCttL3hOZ3dIS0RHQy9wa0hqSi9TVndZdmt1REU2ZDB0aytWc0p2TnJj''@;'; put 'put ''NWloTmJ0RGtodDRHemZYV0xOcXY1TnRYb1MxdTAyWk9mNnpCNlpSUGZ3bWdPZlJKL200QXBoVlJQcVduK04yaVFmcUFPZjhLYXNPS1JPMkozZkRqMllmb3ZpbWZZRy9zamh1UjZoTit5dWg0M0NtSlJNb2d0V0VFQ3JRMzF0aXFWVXFIQlNKbFBlNllmQ1VVZllXVSs3N2xzcjdJZDhwblB0Y3pW''@;'; put 'put ''UTlNaUxCbFZtWWlxZytjZlN2NGdDNCtEcWtvRHFsdVBjL0VoS01PcEFXNFQ5TFQ1akg0anF4RXFsQmlJN2tUQm93VGlIbG1zbUR0SEVVL1J3WllJZVRHeS80RjlYWmNISXdzN1F4SGdMdDJYdDhHdmE3L3hPUEFWNDR2QVpQRHUwMm1QSTNmUCtDS3huUjVaZnVpQXg5V3owbkY2RkxnTC9TMzM5''@;'; put 'put ''L3Q5K1A0NDhKamN2MlEvT0JYWjc4c2RpQ04yL2l5M2h1RmFsNFNQVDVmZzdPWTJSOUcvYnRIbWhOd0c4UEdKTGRyc3lZOXpHUDNGWmw3RGRYWTJWNTgwMTBzYng5bVVkeFZpekYrcHdNb1ZGWmFpamZuQ1loQ2JXb3RKYTlWWjlUNm5UdVNaSUpHaWJEVnZQbHR0OXBXU2JMWHJlYnJhVGQrVXM5''@;'; put 'put ''VW9MV3lIdVhYa1pkUkNmVjhWWUVBd0ZZcm1xNjNLdWVjc3ZJT1hWRHgxMnVoMWVwd0JOd3NQNW4zUW9yeUVXTDVPTEY4UVJVTUEyMW11VXV3eWxzcThtS0lwekttRXQ5YzEyZDA5bVNVMTBmbFFhRDU2cEp0bk00L1RMT1p4WjhJUlM0M0cxOWI1dWZLOGplOEJIRWRBY1NBb2RhamNjd0hnZTAv''@;'; put 'put ''UjgvTnlleXd1RjdmL1N2NTVkYXI0K1puOCtJZDNGajBYN1BuMmxUY2p4Z2ZndWZCbm9IKzJvUWhLb2lQSmxRYUFuYXNlTkJ3enJsQjNZVldGQnBSbVVhV2tWUnNWS2xLeGl0UklKYXBWSzlVYUlsZHQyREkxbFZVQ2xlVVMrVVdqd1NCQzBXUjBzTGM3R0FsMnRvZGhnb0FCcU0zcjhXb0I1SEl3''@;'; put 'put ''ZVVPZWZsR0tCNCt5Ykl3eEkxcnhJK2Q5a0IveGdQUFFTWS96NU1pK294dlNQMGFYclo3TCt6ZEZvWE4zVHJiUnBKRDBFSTlIRDNiRmh4YXpSVmtoaVk2T1JDRThuVHZTTXRMc00vZUYydU04OXlISmNoL2lXSkdzYnc4N0hRcWxJZ3FtaUpnM1JSUnBNMWJKT2xrUVRHa1ZuTmJWTEVaN2xXeGky''@;'; put 'put ''MmljVnJVTUNoQUxBREF2cHozUHpVS3NrMHFrZGN1WDFvdHFaZUdOdmZDcGkzVkx0cFgwb0lZUU9sU21veW9mSTR1anVKbXJaOVFab0hpUGFsa05wc29jUGxLaWxpV1BEWlJML25BdHRtdExiS2x1emZRMXd5WDVJSzRXd2MxdExKN3JRR2xvZ3RQV1Zhak1jMHBiWHloNmZsNXVqOFdqeGUzUDVN''@;'; put 'put ''YzVmQmw3dnY0S3ZOM0R4bm1Wai85aDNqNEQwTE1YUFQ5cTR1My9EN3o5WHpiK3Ezejh2K1RQLzVtK3NmRjUrOE1Qb1h5OVhJSjhCN1NuSU5xZE5PcVlxN3FobnQxcVlUSWFLdkJFNXNrNkd1cVUvZm42RGRtMzlxU0pwcitCTkZ3dGZneFdiV05qWTdDeHplZnhlV2xOZ2l6a1pQbG05VkdsZ2Qy''@;'; put 'put ''RmtiQ0ttNE1uK0I4WGt5Y20weWVIK2k1UEhSeHAyWGVEZlUvY1B0WGlPR2dmdDgyMEJXWmpuYk50d1cwUlV2V0Y1Ym1iSjFMWFppYmVuOXcyT3hjZmFHNDJORFhaMndZY2F6OXEzNUdJTG5TR0YyS0p4UTVhMjhiaW41UjNiZU84YTdFQTkzRUd4emtPM3h2TFBhZm45MWpSOC9OeWV5eGVXOXor''@;'; put 'put ''Sy9ubjFidUxuNS9KajMvNGZad0hwdEMxcEliNG1JL1FqaTdqOTNEUTVBL21oa0lLRVNzVnlvTXFPWGh2bzZFOUYwSXE1ckJhTGJSVEtoV0xRRVBLWmRaaFpsZlN3cXhEdTY0T2hKM3NZRlJUYTcwNG1RQ014T0ppTm15VXJQVFhhZG5kOStReXRoZGs4M3c4L1ZTaGVrM0l4MTZ0WU1XMjVQVTRF''@;'; put 'put ''MmhrZmwrZHpWb0p1cGQ2Z3g0SEh3bEZIeFhyY2VWNmxlMVFSbyt6YmFuSEZjZjFMcTdIMmNycGNSY2NndWx4VHFlenhkbnNOZmdORy9TNFlqV09hbkVLcTVFcmNSYUs1WDRCNUlqTE8zbmorT3hJdzhLd3l3ZWNhR2FzY1NHVnU2bmxuWTQ0c0tKL1g0ejQzd2tuOENmM1JpWk9wME91YWM5eUJC''@;'; put 'put ''aFEySjE5SjQ1OUx1QkIzK2xhU2d4MzUvN2VDZmpGNDB3VVQzZHkvRDNNOFc3amM0cS9mMXIwL0x6Y0hvc0hpdHVmeVk5eldNSmZIZ09oNCt5Vnh2bE1VYnliNThJTkp2dWtnSGY1WE1PaTJQT2xoSjMxZjNqWVdWZ3RtMGVZMzhjWmFSK3d2MTJveUZjVHlmdHpqa2gyV3JGZHhQV2JPL1A2elpG''@;'; put 'put ''TWNkL0w4bjRlamFURGx2WjlMcThEYWJaenZ1dFlueGRjekI5dG8vQ3J4U3BCcE5GVHJDUkNXc1FxUkEzWnc4eWVZSmNlWldTTjBvaW1yRmFyeldyejZQVjZzMU10MWdXVTNBdVg4UE5hUEs2c2RDWXFpZUJ5ZDNUMDFZL2s2L0pzemlaN28vN2Y3di9DSnhxNk81dnJQOHRLOUJ3MmU2TVJqN0pD''@;'; put 'put ''UFNuUGQ1NE1BbjBIVUFKZnpvbXVucXBvOVpocWFDSUpoelNDV2dTeVZBZEErMURKWkY2MmpiTFF4blRSY1M0OFJKNER0TUFhUlRVUlYrVTdHR3hnNHF2VjNHZHBaYUhjalhsd3dkSU9BRTZ0MUF1VmRqSzl0MW5lNHdTVWUramIydG9TYlhHZnh3ajZhYk96UXF5WGp6R2VpRzJsbjVyMTh0bjZp''@;'; put 'put ''dEtSeVNBOVpZdStOQ1Y1OVFwKzRMK1NVNVBwc1Z0YnE4WTI1U2JUZkdXR0JaOHU1Q2hML29DUE12dkxKOWxmLzFGaXgvSDhYTW9meGlUKzhHZEZmVS9JZmJFYXZiQkYzL05TWDRMVlhPZmhOWStzcjEvcWUwc0pYZEZjM0IrUmM5Qm1uTFhSQ2w2aEdtbWd6WE5DTlcwRWJTVGZFRkRzelVqTzN6''@;'; put 'put ''MEdQS3NPUHZuN3N3WUYwYWpsc0x5UGlrK01CQ1ZhZ1lQUzVjdU5iUmthRWVLWHVHanp5VHF0VzdabWtvSjJZWkxEbXZkOVh1cjQ3MlZvaWtZR3U5M2VhbS94MDR3Rm4xc0tVN2xMVW56bEMzUFE1aXlWWTBNYjBsUWVmVFF6bFB0OWNhN0s1TnF6UmZtKy82c3ptVno3OGdidW12Y2JSdkord3lQ''@;'; put 'put ''b1dMbXpCdjMyenJ4K2UyUUJsZk01NGdyMDR5MzZ5cnF4QUcyK3p1c3FnVS9SV3RKNk5KNGMwWUhLb01mMGpnKzVBb1FTbjdpRVJGSHlubE9ScE0wd1pRbUkwNmlVdzQwbU42M0cwbE1TbEd0WTNUS2RXU1hXV2xUVU9zTnB5a0dKcmk3M2dsemh5dWluQStqTDI4RHJVbW1NOWlETGc2YTN4ZDJT''@;'; put 'put ''TkxwZElDTnJNRkdxUUdNV1FkbWc1UkpPV2k2UFZLRElxUlFyTkJaYXNJYjRPV2ZrR3d0WWRwZFhic29BZ0ErVzYwRXprWFUrbjYvTkY2aDFHWHhldDV0WlR4czNwTnFjVk0waU42S2NXbjA2djBXMVdyc2h3VG9FTm5CTDlrSEp3TlhXU2JzMkdYRWgyUnBzM1RZci9pN0x1QzdqZTFhWDhUMXZ0''@;'; put 'put ''b3ZVa2wzRWFudVpqRzJWWk96TFpmeW9ORitheXRnMGw3RW5wYjY1dDJoZE1POExlS01sQnNrUENlMEZLNnBCSVNBSU1ha1BOaEcxV0d1bERpTjZWdzZhNEV3aFVFa0RNWUphc2FxUjlmQWFHajVRTGxlb2lGTEp3L25MUEp3dmNZWnd1UzRWV0tYUzg0Nm90SnZwdmM3MG5pZWhqTUlSRGxQWGQz''@;'; put 'put ''Z2czSitJYVVQYVVLREY3YXl2TXh1cEM3eTJTallRS0E1d204RDZIcE8xc2FQZTduTzROY1k2dS9FL0xpbHZlNGV2MFJadHR6Yjc3VWFEZmR1bEpuR0RMVXVMbi9TTTMvQzR3SkgxZTB0aUJ6K0VObFdNMzNCNzk4aG5rSlFITTQvZUJKNWhwRmtUYXRDNGpEeS9ScjVXaDZkWGNUbnQwVnVjcklS''@;'; put 'put ''TEZzeWdtOHFNNFUxS0d5WmRsak1ESmxlYnE4akRramJGOUNoWXhUeDZrY1g4blNpWjdEZWJpRUp3WW40TlVlR1VKVk5EbXlkZ2xoemlhQVFMM0tLdExwdVdiWlFYWktWbHhmS1M5a2s1QUROMGFVMFdhOGJMRjFmSUNWaXp3enJyMnpVaS9wKzFkNlNGQXAzUXVQMURoVGdMOEZmTkpqOHJ5K05H''@;'; put 'put ''OXhCbFB0OWFYNUp2bmNsa2FQSVlqTGNYNk80V2tMc3VvQzlHZC9pSDNHY0J6L1dNSHJQUzgwK3o1NnkrbStrWllVblAwSmJRT0lBRU53aC9CRzFtcERZV2RKYTNPU3UzNFhYaTUrUnhZUHk3bUU2QWkzUUNPczRJYXpNanRmbVRqVzE0ZlFqcEJ4eXBwcG5GVlpVVkdqQkNCVFdSSytZM0ZaOVhv''@;'; put 'put ''MnB6dnZoY2pGRWtTWmhGTStuUDljN1Baei95a1hRYW13T1pBSjdKL1hnOE0vNWJxZjZraHVYRU81SU5sUldpaWtwOHRWU1JyNU9LUzgzc3Nqb3Nna1VrRFlwcjVqSlRVNWs1ZkZscjdwdFk3OC80OFhMdW02MEZuZWtoQnNNT0NUNy9XUUpEN2dQNW51UURvYnJhbzd3dm5NdEQ3THc2SkQ1SmVI''@;'; put 'put ''dDRyaUI2dVQzQTZvV2l1VTdrWTF0cWRHNkx1YzduL1MzcUU2Z294aFRKeDVpT1NIb2gyU1FMeGhudGNwL0prY3RRdVZnWXJrSG5TMkx2bS93NXVPWmFidE9BR1NoOEg4N1VnQnBvemtQK1pnczF5Vjl0b2FFbC9ISnVIVE5VRzR6MUZoUEwrK1VLZ3EwUVk1ZFpJUTJ6RjlTcENGY1IxbDdlOThY''@;'; put 'put ''OSs3KzREM0RBT0R0NU9wTStuZVpLd3VLZjdWdis0djcwMmorVHB1bGJNNW5yVWtqeXB3aEFHY0FsT2xBWDJwYk1XckZhUlYzZ1RKc0JWcTlVSzFhcU5FU2xrdjBWbFdLRlVPU3g2T3gwdVJEcTdPcE14S0t1RGxkN2F6T001VEI0ZkI1dk5TeDZvK083d01NTHd0K3hpWmtqcmdZSWJYS0ZsZHQ3''@;'; put 'put ''L2VnNFM0MGZ2YzdyT2praUtRTzVxNHRTNVBIMUcydXYrbnJIZWRMOFdFL3ZLRlVMaXJQbTgvVllrbjV3a0oxclRNTGRyNVhnQk0rSHB1ZTZ3UDJkODFKZndOR0RESGRqRW82K3lOdm4zcUw1MDFKNytyeXBhSzRUOGx5QXV4OHVPOWNWREhjWE9PN1c4N2xZblQxYloxeGE1MzBsZU0vem9lazZk''@;'; put 'put ''L0IxSGtOU0RtT1MxZWdQMC95S1dMU3BVYUVVN1RUcnBrNEhhb2VXNVZmVWI1bGZJWXJNTlc3SmV3RXVKYi9pb3AzSzVsZGNwTmVXK1JXbC9hVDhDbSt3bWVaWEdGaCtCZmZKbDArdzhGM0tiUVFrSEZtWjBKWkx0dmpvWlJlOG8rQ1Bkc1lGOSthc2k4b0RGNzYxZ0o5ZGNEM0pjdHdIVVM3WjFJ''@;'; put 'put ''RkZWV2RUbzZBVU42YkhLQytRSGlQQnh2YUhISi90RHpvKzJ4OTRmTGFTNC9NRW1pOHRQUVpmTkprZnYzaGdxbXllVEhpZmIrc1UvK3lDc2lSYlJ1bHZ1a0RTZjRGV1Q4aTBDblIrZUF0YVBTL1RLbGJIOHVmTjdxaHdvaGVTT2xyaGpxelZJQm1xNkNXZ1V1NGZERUF6eTY5bTBWNXlpdm81cFVR''@;'; put 'put ''dGpab3daWTRRdkIvRXVSM0xSOVZHdXlpUWNOTWw5VW0yYkdwTzd4a2crRkJKTHdXOUpGc1A2M1lpS3FSb0dxR1JtckxzR3MyeUowWGRBL1IyRGJ4Z0xITVk5ZFgweW8zUUpvaW44bGR3c0hxS0pLdW5DS05Ya3JZV3JCWmF6VVNqRHBvSTBlUWprOHEwVEFsS2hmSzJDa3pyVnpWWGd6QURNTlA2''@;'; put 'put ''VVVGUUxLbDRGV2xKZERGWTZLUFdrSnN1MWluWldyNjlGR0VzNmlaUVdGRWJNSXpDck1yREN0Q2lMcE10UW91NHRQVER5a2dBdDVYaWNIZWhIc1JiNzlXVlJoTEY4V2h4a1VqQ292YnlHQ0s3RTRYaGFrTEMxV3RLY0pYV3NQeWE2YTJMWEc4bHZTVzZMYytwaU9SektvNmd6NVhxMGN6UGYyZmV6''@;'; put 'put ''MzlrdWpqMzR4djVuSTFLOUZwSlBnYnJ5K0w1TEtZQWJXNHRseE1DZXRtalpmc0dDbkVLWExNWFNmZTV6TFA3WER5b045bGxCdDVVRFNjTC9CUUxhZW1HTFBsK2VCWkNLQmhJME1QanFYVjdQUHkrTEpaQnNjbHBzK242Ri9LcHlkdm10ZWE4WjhOeTJRZWtlMkRJRSt6V0YxMkQ1TXh3TmxqdWZW''@;'; put 'put ''L3hwVEJTelNtc2RRNXNJQzk2bXpzSWFqUmdQS294RnJ5NDZMWkc2YW15OE5SVXB1M21abm52ZHIxVWtFUnJlYlp5YUR1a050VEhuQy82S2VQRHZ2QllGeCtHU29BS0R5M1liR2IxVUJ0ZDFCc0xpUXEyTVpuakR1bml1cUpNa2FIY1dqV3h1Y0lvYjQ0eVhLZDM1VEI2Nk9INVEzaXhCSTk1UFJI''@;'; put 'put ''bDNic1pMb3JvSjBVNVF5ZmtuQ0Y0L3BHU3Zqd1dkRjZPQldGeFB5cnF1eWVmYjNRWTNWYUN4K3dPRzRici9aSU8rRlRKK0x5R2grTDZFdGNCcjBkRmZmZklmY0hPL3RzdCtwNlIrbEpmNStlSytwN0k5MVdqVTF2MFBTL1BpOVhEREc5WmJUaTEzYlhVNTBHckRHamRGZk41c0NJbXNwOGFGWFpH''@;'; put 'put ''VkZwVVUrNzZONVZiS0tyNC90TG1NbStwSG1DR25ML0UrMnlzOUQ2YkI4Y085OHhrdThuNU8zZnNLRDlHdnM2TXdFa1FjbEtxTXBQR1NFUkU5MkIzZHFibjhCZzV2MlBIbmRJWTAvZ2dlUTZzY3FuS29vTFFPb3MwbUZQVXoxRmFGMUNOcXJ4Q3ZzcEMyalN6bHg2WmFneWJZblYxTVZPNFlhcUZU''@;'; put 'put ''RGZDbnhZTC9OSEU1bGxBbjJPK0hSK2I1NEkxQjVzck9IYVhWR3RJTlNMVHVGcXdzeHFSTGpacWtENEhEVzFWaVFWZ0hZdjU0bWJoa2lwRmlyL2o0c2ErdmtBQWZtcmQ3bHI2UTZiNTM0RytOdjZnMXMxckgrWXhKWDA5Nm1FckNOZkFaclFVWTlKS1Z1SEJLclVBcG91TUd3djBreGxlL2VheEtL''@;'; put 'put ''UnFFZWs3R1lxYzZEZjJOVm42ODQ3eng1Z1h5aWk1ek5tNURaRisvRUh5RmRqNU1KczNBYklBYTVodnpvVHhoQm9MckU0TnpuS1YzZXkwS0YvOFFvUVpwcTFhUUpRckplUkE5SXNUQ2xsZCtib0VYTjFrMDF1cVRiV3FrRzdXWFBRN0dUUVl0VFVPai9nQitaMmZ4eUIramRXNGlLaU9yVXFyQkl5''@;'; put 'put ''Y29GYjNTYU1oWHh0akZkMWVxZGdGRC9HS2w1cy9iampOYUc5YjdxMzFwOVlmUnpYSXcwYXcxWlNwdVBQa3h4STNmam5CNDl5ZldsdHY5NzNML2FUTVo1cm5rVGZJUEJLbGNIUUxIdms5bVVlaUZIcXVpTDhXK2g0Rm0vbGlmWS9pMGFLK2UvSjlEK1BaRWg3Sis1N0o5ejBNZkk3WjN1dmJhYnlt''@;'; put 'put ''T05iejdqclhZZDVkbDNTWWRwQ3hIbWEzVDBodHZ2NXVqc2YxM3MxSmJYZzhZVFUvVGpVNnRFVTg0U3Y1ZUVMMU5DcWJVNXBDSDk5Q1Bud3ZueXVRV3BIdXZFZHZFZzJPWFB6N0lMNmZDK1BJdU54SDZMbUVQZ0o1TnlmM0djZGZSdWZJQTRBem5VOEJ1a3hrbnJRVWY1R0tiZE1YcWZES3gxMVBj''@;'; put 'put ''eXd5eWc1OExxaWZwMTl2MFZSTHY5NkMzRTYvMzhMczROOXZRWDEwK0t2b0pmSWdRRUVMVUVueE9rYVN5dGN4d2pyd2JXd2REYWpuNllZYUlpK2xtbDErdzc3cmh5M0d1S0dVVFdEc2I5ZFpUNjNId0c1YzI3Z2k2NVlMZkd1THRkYVhyaHZmU1I3VStmbTYyZnEvQ2VzMzVOZFBVVXJlQ0FZcy9C''@;'; put 'put ''S2V4QSs4dDlxd0I4YkhPenJHeGpxK3hOODZ4am4rVEFKZWphTDlnQnRnYytuYzhQcE5odU42VEM5SkUrbDNMQ2tPRkgzSDBpREt3R3h2OHZ5dURpMVcxdkN2UUZKalZSV3VxRlJWRkg5dGtySGFJRlJXQ3N0NmpVNVVGSC9iVXV3aUhkazNKL0hlSXUwdFNOKzUxRjIyWDVsdlhTcnBDNHBmZkdv''@;'; put 'put ''cW1aUy9mV2xxY1dySDNHd3lrMHlQamJRUHRnOTB4Y3QrRTVQcEQvZ21Kc2VtdnoxRmJSM3g5L3d0VFhpaTZJL2NXZms3bSs1L3oxL2VWUGFMbkFwZjZFVHZYWXppQ3VDZFNxUjZDclRyOXNBZ3RnTHNmQStrN3I0NzljNDNkRTgvcTVmdXZJeGl2ZHhPWU8zOENhc1loRllQUERENjdOTzZiN3pD''@;'; put 'put ''Wk1VYjByM1RZVFNUbktxM0V3Vzl2YUlTMDI4dVVJQUFKQXBoUllOSkJjYVZ0TDRsWDlCVWhTc3JaWmNOczIxRGJZSFdGcjNCQ3phcjN1aXRCdnUyY0krV0h3eGFhaHZCMndBcFZOVFNqRUQ2ZlZGTzVnN0czK2JYVW1jK3ZHSmR5aExsdGtOMUIyK2JrT3FZcGova3dvbmNHWldBNTNJdk9qNHkx''@;'; put 'put ''OGV1cWs0ZUgwL1ZhZTJPMVBDUlhsYkV0RGlXcW04eW0xTFp5L2ozL09BV1VvTlBBQjlVUFFWS1hUdmpldnltL3hPc1dKa3FPcURxQ01DVm5Yb25FZGJXNkE4cTNMdkc3d3hSUDJNelZpdEplNWw3ek43akhSenZITmp5Q2c0cHY0VFpxN2hkaXBXY3plZWRCR2lzbVQwdnhKcjU4L1A1NStMTnhj''@;'; put 'put ''L1B5TS9SNGV1S254ZkdUNkVQRlQyL005Lyt5Qlh5dlNuejVBYUFBWTE5cUo5cGNSc3h3S0RFSEpNaFViREZmSnRoY2dPM3pZb0JJOWxtLzEwRUg4bE8yMUVFSXNsRXU2YzB0NDZ0bWZvRitGNXdKYnEvYUM5ZnljT2srbUQrYmhQMGVYWjNrNHdMRWIxN1hycXVpWDYrdmgwK1Y1WitybHliUWY4''@;'; put 'put ''UDJ6K2Mwd0FCQUFBQUFRQUEzNXZtaGw4UFBQVUFId1BvQUFBQUFOUEJuWVlBQUFBQTFMNm05ZjlSL3UwRVlRUEZBQUFBQ0FBQ0FBQUFBQUFBZU5wallHUmdZRDc2N3lZREE4dkUvNEgvVzFnU0dZQWl5SURSRUFDbElBYWhBQUFBZU5wMWxEOU1VMUVVeHI5elhnZWlnOEhCUVNzYURWUXRmNldC''@;'; put 'put ''S21odEpLTFNwaTNQb0RGYXc4QmswQWdKTGtZUzQ4UkFRdUtpQXlRZERIRXpjWEZ3Y3REQlJDWUhuUWhMYllpU3lBVFI1M2N1TFdKYjJuejV0ZS9kKys0NTMvM2VsWFhjQmorU3BvNVJqZkJsSG9OYVFFVEgwTzZGMGFIek9Ja1NCbVVNNTZsMmVZNCt6ZUdpTkNBdGs0ampONjdJUXJDbXI5RW5v''@;'; put 'put ''emlvYVhUcFZaelErOVIxeE1sK3ZjRTVlY1RzdHh2UHVSelRhODhoVTdLSlE5NER0T292SE5WWHlPc2l4MjZRazhqb0tQV2QvejhqZzFYK0RuT05aN2lsVVF4NEk4aDdTa1Y0L3lreWpqTWN3enAxQ20xYXdvZzlNM1FHemZvV0xicUEvVHFOczNJUE9kYThTWFpKQ1QyYURmN0lKU1QwSEU3clkv''@;'; put 'put ''amFoRTZ5UjMxMHloM09mY1RuWnBIR01oSllEajdvRVF4aEJTbHZHaW03cmcvZGVOL215Qk42dUlZMm1lQzhMTzkzczdja2ptdUV2ZVhRcE1veE00aktBWXlUN2ZLT3ZqWmkySzE1bDU2d1JubkJXdmFnVmQ0ZzRlb2FSd1EvTUNCeGR6MUd2N2E4cXFNUVNQUFB2TnNockFhZnpEL3lKMVgwOXVK''@;'; put 'put ''VXhidHE2V0VNTzVwL08yWCswV2U5Z0d2T3F6cnlQcExXaS8rL3pEZjZOMFNXcUJYVzFML3RYYlVzRjhhczgvZWZ6RC96MldqOTJwclZ0TjV0L1FvdFI5d1g2MWZudUtmbWg5VzBHeTFydHQ5bDBxdHZyUGNMdll1U0FYblorbkFaWkE0c2g1YUZiVEl2MG8xbTg5YjZxNkg1eXQ0cUREVWdGZ3B6''@;'; put 'put ''WGViV3NsTkRlK2VZcHhwT2xUTldvZTJQZWJRTDdSMXdPYlE5TlAvSzc0TGxzWnEyVnpMTDdKa0t6UHhYTWtVbHFQZEk2ajVlUTVDclBMT2FOWjZXMTVSMXdDdHVuVGZZb0Y0Q21rVGNtMENjWjhLZ08xT1d5Q1d5Z0pzNnk3T0M1MUpvRGgzU2l4YXFUUmVEb3N1SHg3bmMxenBmSC81ZjdSendw''@;'; put 'put ''QUFBZU5wTndsOUlHbkVBQUdBei81U2VwNlhwZWQ2ZHQvTThyN3ZUenArLzAyTU0yVU5FaU1Ud29jZUlJUkU5UkE4aEVURmloRWhFUkE4UkVqNkVqQkVTTVlhSVJJeUlpT0ZEaE1RSWtSRXloZ3pwUVNTa2g3M3NZWHlmUnFOWi9xZWdPUm5BQnRhMHF2WkUrNkI5SG5RT1hnNjJkVGFkb0V2cTBy''@;'; put 'put ''cVNycVpIOUV2Nmd2NlBZY2F3WW1nYms4YWNNVzg4TTlhTjdhSDRjSGE0YkVKTUtkTzJxV3BxbWFGNTNwd3hmemJYelYyRVJxYVFYZVRHd2xuU2xxcmxBYldoVVRTTjdxTVZ0R1UxV0FscjNEcHYvV0E5dE1WdGR5UFlTR25rWlRRNTJyZEg3UXYyTC9hbXZldklPSnBqM0ZqVk9lTThkblpkSWRl''@;'; put 'put ''QnEreHFZVFlzZ1dXd0M2enVKdHlTZTg1OTR1N2hVWHdWMzhRTGVBWC81VUU4SzU0Tno1Mm41ZWtSUXdST1NFU2N5SklwTWsxbXlCeVpKMHZrQlhsTFBsSWg2aTJWb3RKVWhzcFJlYXJpelhuejNwTDN3bnZyZmFScGVwWGVwSGZvUTdwSW45SG5yOTR4REJOaVhqTlRUSXFaWTVhWURQT1I2Zm0w''@;'; put 'put ''UHRTSCt6Z2Y4TVY5Uit4N2RwbGRaN1BzUGx0Z2UzNnQzK0duL2NBZjkrOXdlOXd4ZDhwOTQycGNrM3ZpbmdQRlFEbHdHYWdIZnZJeS81Vy81dS80RnYvRXY0dzN4anZqZlVFV3RvUURvU1JVaEN2aFh2Z3Q5RVZFZkNNdWlHdmlscmduSG9tbllsV3NpVC9FdHRpVEpxVXI2VjU2bERwU1A0Z0Vz''@;'; put 'put ''YUFRaklZY29jNkVaZ0taT0pJbjVWbDVVVjZYcy9LaFhKVEw4bVVZQzlmQ3pYQTcvQUtHQUE0a29JSUVtQVdMWUJWOEFqZWdIYUVpMDVIdHlEVzBRUURuNEFyY2dMc3dEMHV3QXIvREJ1ekF2b0lvMkgrQWtsUTJsVDJsb1hTamVGU0lDakU2Qm1QVHNYTHNPbFpYVVJWWE9SV29jVFdoenFwRjlV''@;'; put 'put ''dzlWMnRxNHk5TU04bWdBQUFCQUFBQlBBQmdBQW9BUUFBRUFBSUFLQUE1QUlzQUFBQ0RBYlVBQXdBQmVOcU5rczFPd2xBUWhjOXQwWUFhNDhLNFlHRzZNTzZFZ2dRaUxqVnNGRFFTd1MwSUFwRmFMY1hFclUvaTF2Y3d4cDhYMEkyUDRETjRlanRVSlkweE4rVitkODZabWQ0cEFKYndDQk1xa1FL''@;'; put 'put ''d3l5ZGtoV1dlUWphd2lCTmhFMldjQ1Nld2hqdmhHYVR4SUR6TCtJZHdFbmxsQ0tlUVZnWGhlUlJVVFhnQkRYVXIvSVFWOVNiOERGdDlDcjhnYWF3S3YyTE9XQS81M1VUYXNMRURGNWU0Z1ljQmV1akRoNFY3UG5uWXlLRklhbE8xNk90cno0aGM1KzR3YThUY0MyUlFSWmQ1bnE3a1lxaGRSNHox''@;'; put 'put ''TU9hcFJTVkhsNjNYTm82eGh5WnFwTGk4amFuTU9JODE1V253NURFKzBPOWovZWoybnc0TlJrL3Bjc25CVFE5WW84czl5TzFRYTVFUHFRZmFQdmZPSDdNSTV1ZnpWRWFXNi9wWFpWZlhkYUtxR1dvdXo1T2NrV1QxcVBxTWpqbjVpU2ZMZmRMVDBUZjk3cG1OdldXVHNUYi9iNEhEajJaU2xRbFZ0''@;'; put 'put ''R3B4RmJWV1l1OGN0dmk3aVVMMDlVczRwNitycTNveTNVcFVzWTRydnVPQWlrZlA4QXZjdlhoekFBQUFlTnB0azFkc0hGVVVoci9mc1hmZE5rN3Z2VmZIWHZmRUtTNXJ4N0ZqSnk1eDdNUkp4cnRqWi9GNkY4YTdjV3k2QkFJZVFQRENNK1VKRUwwS0pIaEFvbGZSZXdmUmVhUUg3OXdKWGlUdXcz''@;'; put 'put ''ei9HWjN6bnpQMzNpRUxkNTBiWUI3L3MxU2JmcERGRExMSndZZWZYUExJcDRCQ0FzeWtpRm5NWmc1enArcm5zNENGTEdJeFMxaktNcGF6Z3BXc1lqVnJXTXM2MXJPQmpXeGlNMXZZeWphMlU4d09TaWdsU0JubFZGQkpGZFhVc0pOZDFMS2JQZXhsSDNYVTAwQWpJWnBvWmo4dEhLQ1ZOZzdTVGdl''@;'; put 'put ''SE9Fd25YWFRUd3hGNk9Vb2YvUnpqT0FPYzRDU25zTGlkcTdpYW03bUJPM2lmNjdtV3AvbVlPN21OdTNtZVo3bUhRY0xjU0lRWHNYbU9GM2lWbDNpWlYvaVdJZDdnTlY3blhvYjVoWnQ0bXpkNWk5Tjh6NDljeHdWRUdXR1VHSEZ1SWNGRlhJakRHQ21TbkdHYzd6akxKQk5jektWY3dtUGN5dVZj''@;'; put 'put ''eGhWY3lRLzh4T1BLMGd4bEswYysrZm1MdnprbmxLczg1VXNxVUtFQ21xa2l6ZEpzemVGWGZ0TmN6ZE44TGRCQ0xlSjMzdEZpTGRGU0xkTnlyZUJ6dnRCS3JkSnFyZEZhcmRONmJkQkdiZUkrN3RkbWJkRldiZE4yRld1SFN2aURQL21TcjFTcW9NcFVyZ3BWcWtyVnF0Rk83Vkt0ZG11UDltb2ZU''@;'; put 'put ''NmhPOVdwUUkxL3pqVUs4eTJkOHdJZDh4S2U4eHlkcVVyUDJxMFVIMUtvMkhWUzdPblJJaDlXcExuV3JSMGZVeXdNOHlDTTh5a004ekRYY3BhTTh3NU04cFQ1K1ZyK082YmdHZEVJbmRVcVdCaFZXUkxhRy9IV2pWdGhKeFAyV29hOXUwTEhQMkQ3TGhiOHVNWnlJMnlOK3k5RFhHTGJTU1JHRHhx''@;'; put 'put ''a0tLK2tQZVJhMllYNG9ra2hhNGJBZFQrYmIvMHAveUxPeVBhdVE4YkJkRkRhSEU2T2psa2t0SE00SS9DMmVlOVJqaStjVE5TeHN6YXdjeVFoOGJWWTRsYlI5TVlNMjB5OW0wRzVleGwwVXRtZDZ4RE05MmsxNjNJVy93NXNoWVJqb09KMktEMXRPYWpSbXBaS0JSR2JrNnpRZEhOT2hNN09Eazlt''@;'; put 'put ''aDAzUndETHBNMVpnTGZ5b2VMU210REhvczgzV2JwS1NacHNlYkptV1kwK05FNDhNNXFmUXowUE9meVZLWmtiL0gyOEdVWVVGdk9PcUVVNk5ETWZ0c3dYaUc3c3ZRRTlQYTEyOW1uSFNSM3o5OTJwUFRwNTJlT0ZoVzViSXNXT25ySFhhc3FXczFidEJySE1aZDVQVkdvclpqajBYSDhzYlBxM1Jk''@;'; put 'put ''YWFpKzJtT054d2FQamI0K1l6VGhJdjAyV0ZJUzlGam1zZHhqaGNkS3cyQlRkaWpsSk55Z29xa2h4eXEyWXNsOHk1M0ZTUGZ1cDJXUk5mM1o2VGhnblIvUUpMcmQwN0xBKzMyTU52dWExbmxXK2pSTWNqSWFpN2pKdWRiWTFCNUZiQ2N2WW52cUg3ZGx0eUVBQUFCNDJtUHczc0Z3SWloaUl5TmpY''@;'; put 'put ''K1FHeHAwY0RCd015UVViR2RpZE5ra3lNbWlCR0p0NU9CZzVJQ3d4TmpDTHcya1hzd01ESXdNbmtNM3B0SXNCeW1abWNObW93dGdSR0xIQm9TTmlJM09LeTBZMUVHOFhSd01ESTR0RFIzSklCRWhKSkJCczV1Tmc1Tkhhd2ZpL2RRTkw3MFltQnBmTnJDbHNEQzR1QVA0Y0pXQUFBQUFBQVZpWTlu''@;'; put 'put ''WUFBQT09KSBmb3JtYXQoIndvZmYiKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUZYd0FC''@;'; put 'put ''TUFBQUFBb09BQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmS1RiTEVkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY2ZBQUFPZGoraGZYUkhVMVZDQUFBSk5BQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJQUFBbFVBQUFBVGdB''@;'; put 'put ''QUFHQm9xYTMrWTIxaGNBQUFDYVFBQUFKc0FBQURubmRERDdGamRuUWdBQUFNRUFBQUFEQUFBQUE4RWQ4QnkyWndaMjBBQUF4QUFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVud0FBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNoQUFBT0RrQUFHMDhzTkd5TldobFlXUUFBRXJBQUFBQU5nQUFBRFlM''@;'; put 'put ''YTRZSGFHaGxZUUFBU3ZnQUFBQWhBQUFBSkFlRUJDQm9iWFI0QUFCTEhBQUFBb3NBQUFUYXNuZzVQbXh2WTJFQUFFMm9BQUFDYndBQUFucHlWVmZhYldGNGNBQUFVQmdBQUFBZ0FBQUFJQUtSQWg1dVlXMWxBQUJRT0FBQUFZVUFBQU5rTCthR1NuQnZjM1FBQUZIQUFBQURvUUFBQmlHWEZqMktj''@;'; put 'put ''SEpsY0FBQVZXUUFBQUNCQUFBQWpSbFFBaEIzWldKbUFBQlY2QUFBQUFZQUFBQUc5RzFZbUFBQUFBRUFBQUFBMUNTWXVnQUFBQURUd1oyR0FBQUFBTlMrcE90NDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYxRDRCN200MDQ4RE9s''@;'; put 'put ''b3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY0xiRlZWRmwzN2ZPNXIzd01zcFh5RVVna2hVQWhXaGpDaUNLTnhtbHBJUnhtc0JBMFlOWTRma005VVpLYkd5R2NVelVqcXhKR0taRUxRTXRwZ0JVVEZxa2hlQ1A2SUlmZ0pFaXdFSzJMOUFTb2FJOHAxM1gwZmNFdjdadXhLVjNm''@;'; put 'put ''M09mZmNzL2RlNSszeklBRFNHSW9wa01xcW1sb1V3TkdETUlUbEg0R0JuZk9YdW5rb21YdGozUnlVenAwemR3NW5nLzVvTko0UnNlVnphZlJER1lhcngySVlhbXhMUEJvczBGVWxhRURBaDZUblFqNHhVSDBlSmFjaHFBb2J5QjRUc1FLL0lKU0JNTndHNThrQWFVTUdQYml6STJFMmJBNzNodnVS''@;'; put 'put ''NXlmOEp1L0k3bTY5bjJCQXAvOC9DLytkZDRXT3ZDTnRlVWYyaHRrOEk4M2h3WEJyaExPZjRPL09DRjEyaXZEenNJRlpNaGpDVEE5bnRrWVFCaFdFeFFXRXcxakM0L2RFZ1BGRUNoY1RCWmhBRkRLM0UxbXBSWVJnS2U3bnpBY0l6NHl2b1A5RlF2QVNJWGlaTUhpWGNIaWZjTmhQZUh4Q0JQaVVD''@;'; put 'put ''UEFaRWVBb2tjSTNSQW9uaUVKVzd4ZXVGaEpwS1pJaUZFcXhGSk5McElROGtKVk5jKzB4Vk1rd1BqT0tFTjEzdkdPak83YTZZNmM3OXFna0NsQkZGS0thU0dNYWtjRjgzTVVWb2tnQ2pTVFFTRHdleGtyT2J5UUs4UmhXYy80VCtDL25QMDFrc0pGSVlSTlJnT2VJRkRZVEJYaWVTT0VGb2dCYmlF''@;'; put 'put ''SzBFb1hZUnFTUkpkTFlUcVN4ZzBqamRVTHdKaUdhblFBSGlBdytKdUs4R00yTDBidzR6WXZYdkhqTmk5TzhPTTJMay83U24vazZWODRsUnpueVhMV0NHUnJPR2xld3RtTlowL0hNekFSbVpENFc0SytvdzUxWXlGb3V4VEw4QS9jeEN3OHcrbzJNNkhsVzhpVlc4RjFXYmo4cjlpa3JkWlE3T2FF''@;'; put 'put ''bnE0anZMWW5PbDdsWHorRWJVc2U0ZTFKZlc2bTdodkQ3YnRTcUk5SDV5RHZ5SlhHc215ZVA1VDBiWCtiKzdndS9EZytFRDRVUG5UMlNPNUZOWWRQcC83NUlqSHl1enhpVXFpWkVOV0Z3RFdGeExlRndIZUV4a3dpb2lKV2NFNmxCVkExRzFXRFFRZ1RZUUFSYWFkRktpMVphdE5LaWRUVTRSRmdj''@;'; put 'put ''Sml3NkNJdWZDWStUUkNDOXBUZnIya2Y2a1B0S1gzSlVVZEdLaWd5U1FWemZZRFRPSVRMb1RmUlFwWXNxM2FqU2JVN3BWeEJKcFR1TkowakVrMUtsMjV6U3oyamNhVlJPbzBwcFZLZVVIbXM4VnZjclJINWRSOUU2MWF6SlJSZ3AxMnFjS2RXdlZmMmFYTXlSaWswdThrakxKaEYvVXRGV3M1Q1NN''@;'; put 'put ''WEl4M3g1OWVsVXh3bW1zMTdXTWF5WWphV1FrcS9BNG8za0NUNklKNnhqUjA0eGtBMDlqSzNlYjVTNTNjSGVIV0lNTzd1d2tkOUNIYit2UHR3emlpbVdxWjROZTJsR0t3NlcwaTluZkxxVWxhbC9LVHRRV2xKSGJtZi90c2x4V3lDT3lTdGJJT2xrdm0yU0xiSlh0OHBic2tnOWtueHlVdy9LVmZD''@;'; put 'put ''cy95a25qVE5vVW1YNm0xQXcxNWFiQ2pETVR6R1dteXRTWWFXYUd1ZDdjYkdhYkJXYVJ1Y2NzTXcrYUJ2T29XVzNXbXFkTWk5bHNXczAyczhQc05Mdk5IdE5tMmsySE9XS09tNThzYkdCNzJHSTd3SmJaWVhhVUhXTXZ0QlB0NWJiYVhtbHI3WFgyQm51THZjUFcyYi9iZSsxOTlwLzJYN2JSL3Nj''@;'; put 'put ''K2FadnRCdnVDZmNWbTdSdjJIZnVlM1dzUDJFUDJDM3ZNL21CL2RzWVZ1RjZ1eEExMFE5eHdOOXFOZFJlNVA3aEtOOFZOZGRQZFRIZVR1ODNOY3d2ZDNXNkpXKzVXdUVmY0tyZkdyWFByM1NhM3hXMTEyOTFiYnBmN3dPMXpCOTFoOTVYNzF2M29UbnJuMDc3STkvT2xmcWd2OXhWK25KL2dML05W''@;'; put 'put ''dnNaUDh6UDg5ZjVtUDlzdjhJdjhQWDZaZjlBMytFZjlhci9XUCtWYi9HYmY2cmY1SFg2bjMrMzMrRGJmN2p2OEVYL2MveFFnQ0lJZVBCMzFaaU41aVhLbGNyVnlZOFJZck55c25tWEtLeE04VmJsQ2VaTHkzeUkyZzlXdVZhNVNIbUg0bVNybHloWEtreU5HdmZLejV0VlR0bHlpUEVuOTdjb24x''@;'; put 'put ''RE5LdVVsNXBISkcrYzkyTnZrWjVmcnVtVlUvRTJPMStyc3dwaXR2Vmw1OGhtVldITHZhODVUZlZGN1psZU1NcU4yVmE1VkhtT3ovWTJvM21hdHNkNHlweWkzSzlXZVkyY3RxOXY0M3gvbk1kc3NqRTF5ZjJITW5PMUhUSmVvdlYzL1NydFFjUHFiMnJFVG00eWc2MlRrVitiUDhqV3BQam0yZEUy''@;'; put 'put ''c21yazRjZGF6UG5KM3pSM09hMVg3V0xqcWwzcHpHUGxUNy9jak8xVFRPV0t6dFdIdEpmMXpaT0cvdnFiMVlhL1NSNnZ4cm5UOVYzOVd1Yy9SRXhMcnQ1SzlRKzBTdWdodFBxenJwajAvUXBJUm00b29rN2VmVXZqWDI2M3c5RjJhdytwdlVIeXR0Wk1LdVVzNm9KNTk5WE8yN05icXIxTjZqZG5M''@;'; put 'put ''bDZuQUwrWHpsWktXU2I1eWNPOTNaMzhDZFp4cWNwL2RTOE41VnpxeEV0MVBIcmoyYVhUQzZZUWY0SFc5aUtZekRSZXhoVWVmdXhiNDlpVDA5NnR5OTlZNWFySjI3RC92T0ZQYWhHcUl2cm1LZjY4ZE9ONTNmZldZUXBkckxCN1ByeldMWG1zKzcyeEM5dlkxblIxL0Q5ZGF5OC8xSmU5L1Y3SDZ2''@;'; put 'put ''c2tPK2hsMjRsVGU2bzZqWFcrVXFmQ2NlajdNVEQwS0w5dFJXN2xma0hQMXVGa0RDV0lWTGNBdDVPYnRkaHQ5MXloamJLTjY5TCtTdUwrY3VyMFF0Ujk5VzdlNVZQcWlzWndhN0U2eVZ3RjNLNjVVLzFxejFWVHVEUC9JOXQrRjJTVW1CRkVwYU10SlRlblhkMGE5OWw1OTBBQUFCQUFBQUNnQWNB''@;'; put 'put ''QjRBQVVSR1RGUUFDQUFFQUFBQUFQLy9BQUFBQUFBQWVOcGpZR1p5Wi96Q3dNckF3dFRGRk1IQXdPQU5vUm5qR0VRWXpZQjhCallHT0dCblFBS2gzdUYrREE0TUNxcC9tS1gvR3pNd01KOWsxRkZnWUpnTWttTmlaVm9QcEJRWW1BRHdiUXExQUFCNDJyV1RXVkNPVVJ6R2YvKzNmUkVxRlBYMjlt''@;'; put 'put ''blRScUlVUmZhbHlMNlVyTm15cjlrYTZ4QkRSVkxJbmlTakdSTlRVN1liN3JnMVk0eSt6NVZiN2d3ZHgxZE1NOHk0Y21iZWM5NXp6cHpubkhtZTN4OXdvZXNMUVhTUFZPcVpPT2V1VXF6SEpZekRqWUdVY0lzNjd0SklFODIwMENZZUVpQ0RKRXdHUzV3a1NhcWtTNlpNbFJ6SmswSXBraElqMVho''@;'; put 'put ''bHZIZUpNbyticmVZVDg0dmxiZ1Zhd1Zhb1piT2lyR0ZXdW5YZjVoLzVUU2w5aDhXTkh0cVBhZU9aK0VwL01jVW1zWklvS1pJbUdaSWwyWklyQmJKQk5tdnRsOFpiclgzSWJESGJ6YytXWVFWWVFWYUlVM3VvbGZaTFczMVVMOVJ6OVZTMXExYjFTRFdyaDZwSk5hb0dWYS9xMURWVnEycFV0YXBT''@;'; put 'put ''bGFwQ2xha3pxbFNkNkh6VG1kV1o5UDJUbzl4UjRNaDN4TmdIMnYzc1BuWXZ1NXZkNlBqYThibmo4SWVRZDhsZFh2Mm41bTU0TzVQZ2oxc0VvL3ZQK0lkRzEwa1hYSFYyN25qZ2lSZmUrT0JMTC96b1RSLzY0azhBZ2ZTalB3TUlJbGhuUEVpbkhvcEptRTRrSEJ1RGlTQ1NLS0tKWVFpeHhCRlBB''@;'; put 'put ''b2tNWlJoSkRDZVpFWXdraFZSR2tVWTZveGxEQnBtTTFjeGtNWjRKVEdRU2s1bkNWS1l4blJsa2s4Tk1acEhMYk9Zd2wzbk1ad0VMV2NSaVRWb2UrU3lsZ0dVc1o0VisvdzUyc3B0aURuR2MwNVJUUmdYbk9VY2xWVlJ6a1JvdWNZWEwxSEtWNjl6VUZQMWs5RFlObXFWN21xYWZiUldydFIzUmJP''@;'; put 'put ''QnN0emZyV2FQN1haejQ3VmJoWHh5OFFEMmJXZGxqWlMyYkpFYVBXOWpPTWV3NEpGenpHU2xSdWdJaXVLTjNIcUJwbGdSZEQvSGRaNHFjWWNTeWpiMXNaUjk3T01CQlhVdjdPY0pSdlhXWVVrNXhrdGU2bW5xeFRyekVXM3pZS0g2YWY4OGZrTTJxNkhqYVkyREFBcEtCTUl3aGpHazlBd1BUYmla''@;'; put 'put ''V0JvYi9JY3pTLzQyWmR2Ly93blNKU2ZEL2wvOStJRDRBMnM4TnNuamFyVlpwZDlOR0ZKVzhaU01iV1doUlM4ZE1uS2JSeUtRVWdnRURRWXJ0UXJvNFd5dEJhYVU0U2ZjRnV0RjlYL0N2ZVhMYWMrZzNmbHJ2RzlrbWdZU2U5dFFmOU83TXV6TnZtM2xqTXBRZ1k5MnZCRUlzM1RXR2xwY290M3JO''@;'; put 'put ''cDFNV3pRVGh0bWl1KzVRcVJILzFHcjFHb3lFM3JIeWVqSUFNVHk2MkROUHdRdGNoVTVFSXR4MUtLYkVwNkY2ZE10UFhXak5tdjFkcFZDaFg4Zk9VTGdRcjEvMjh6RnROWDFDOWpxbUZ3QkpVWWxRS0FoRW43R2lUWmpEVkhnbWFZLzBjTSsvVmZRRnZtcEdnL3JvZllrYXdycC9SUEtQNTBBcURJ''@;'; put 'put ''TERJdElOQWtsSDN0NExBb2JRUzJDZFRpT0JaMXF2N2xKVXU1YVNMT0FJeVE0Y3lTc0l2c1Jsbk4xekJHdmJZU2p6Z0wwaVZCcVZuODFCNm9pbWFNQkRQWlFzSWN0a1A2MWEwRXZneXlBZUNGbFo5NkN3T3JXM2ZvYXlpSHM5dUdha2tVemtNcFN1UmNlbEdsTnJZSnJNQkE1U2RkYWhIQ1haMXdH''@;'; put 'put ''dmN6UmdiZ25lZ2hUQmdTcmlvWGUxVnJaNEJ3NnU0cy9sdTd2dlUzbHIwSjd1WU5sendFSGNvS2swWmNWMTB2Z3lMYzByQ2dwTWRMMUVkR1MwbUpnWU9XRTVUV0dWWTkwUGJ2ZWlRMGdHMUJ2clRLTFlsODhGczNxRkJGYWRTRmRxTUZoMGFVaUFLUVllOHE3d2NRTG9CRGZKb0JhTkJqQndheGpZ''@;'; put 'put ''ak9pVUNHV2pBTGcxNW9XaUdnb2FRTklkRzFOS2FIMmMyRjRNcEd0eVN0eDBhVlV2TC90SnFNbW5sTVQrbTV3K3IyQmoyMXYxNGVCZ0ZqRndhdHZuTTRpUzc4U0grRE9KRDVpUXFrUzdVL1ppVGgyamRKdXJMWm1mekVzczYyRXIwdkFSWGdXY0NSRktEL3pYTTdpM1ZBUVdNRFdOTUlsc2VHUmRi''@;'; put 'put ''cG1ucVdvMHBJelpTbFRXZmhxVXJLalNBdzljUHc2RXJRcGovYzNUVU5JWU0xMjJHOGVHY1RYZHM2empTTkk3WXhteUhKbFJzc3B4RW5sa2VVWEdhNVdNcXpyQjhYTVZabGtkVm5HTnBxYmlINVJNcTdtWDVwSXI3V0Q2alpDZnZsQXVSWVNtS1pON2dDK0xRN0M3bFpGZDVNMUhhdTVUVFhlV3RS''@;'; put 'put ''SGxNR1RSby80ZjRua0o4eCtDWFFId3M4NGlQNVhIRXgxSWlQcFpUaUk5bEFmR3huRVo4TEo5R2ZDeG5FQjlMcFVSWkgxTkh3ZXhvS0R4MndkT2x4TlZUZkZhTGloeWJITnpDRTdnQU5YRkFGV1ZVa3R3Ukg4bXdPUHE1Ym1uTlNUb3hHMmZOaVlxUFJzWUJQcnM3TXcrclR5cHhXdnY3SEhobTVX''@;'; put 'put ''RWp1SjM3R3VkNVkvSVBnMytMRjJVcFBtbE9jSENua0FCNHZML0R1QlZSeWFIVHFuaWs3TkQ4UDFGeGdodWduMEZOak1tQ0tJb2EzM3prOGtxeldaTTF0QW9mVHdRNks5ckJ2R2xPakNPbEpiU29TUm9CTFlPdVdkQTA2dlBzcldaUkNsRnVZcit6ZXltaW1PeEZHY3lBS1Nqa3ByR3c3TytrUkZw''@;'; put 'put ''WU82bnA5TkhBNVViYWk1NHNOVnRXY1lXOUIrOWp5TTBzZVRkU1hyZ3BLZTFGbTFDbnZNZ0NEcm1SUGJnbWdsdG83N0tLWWtwWXFDSStDRzBGKysxalJDWXRNNE11Z1NKa2NiS3lEKzJLSFRtaWduWUMzM3JTS3UvYlF1M1BkZklnTUp1ZGJ1ZEJscEdpODEwVjlXcDlWZGJZS0ZldjNFMGZCOVBP''@;'; put 'put ''c0xIbUYwVVpUeTU3MzU0VTdGZW5CTGtDUmxkMnYrNUo4Zlk3MXUxS1NUN2JGM1o1NG5WS0ZmSmZnQWREN3BUM0locEZrYk5ZcFJIUHIxdDRNa1U1S01aRmN4d1g5TkllN1lwVjM2TmQySGZ0bzFaY1ZsU3lIMlhRVlhUV2JzSTNQbDhJNmtBcUNscWtJbFo0T21RK201MmE4TEdVdUN4RjNMTmsx''@;'; put 'put ''MFgwSFR3aEhlSy9PTVMxLyt2Y2NoVGNvc29TWFdqWENja0hiUjhyNkswbHU1T0hLa1puN2J4c1o2SWRTVGZvR29LZVNDNDQvbDdnTG84VjZSVHU4L01IekYvQmR1YjRHSjBHdnFyb0RNUVM1NjJDQklzcTN0Sk9wbDVRZklScENmQkYxVUt6QW5nSndHVHdzbXFaZXFZT29HZVdtVk1CV0dFT2cx''@;'; put 'put ''WG1NRmhqRG9OMXRZT3VkeG5vRlNCVG8xZlZqcG5NK1VESlhNQThrOUUxNW1sMG5Ya2F2Y1k4alc2d1RRL2dkYmJKNEEyMnlTQmttd3dpNWxRQk5wakRvTUVjQnB2TVliQ2wvWEtCdHJWZmpON1VmakY2Uy92RjZHM3RGNk4zdEYrTTN0VitNWHBQKzhYb2ZlVDRYTGVBSCtnUlhRVDhNSUdYQUQv''@;'; put 'put ''aXBPdlJBa1kzOFl5Mk9iY1N5SnlQTmNkc2N6N0I0dlBkWFQvVkk3M2lzd1R5aXM4VHlQVGIyS2ROK0NLQlRQZ3lnVXo0Q3R4eWQ3K3Y5VWpUdjBrZzA3OU5JTk8vdzhvMjRmc0VNdUdIQkRMaFIzQXZkUGY3U1k4MC9lY0VNdjJYQkRMOVY2eHNFMzVMSUJOK1R5QVQ3cWlkdmt5cTgyZlZ0YWwz''@;'; put 'put ''aTlKVDlkdWRkOWo1RzJVenVpd0FBQUFCQUFILy93QVBlTnExZlFsNFpGV1o2RG5uVnRXdExhblVucVN5MVo2bGt0cFNxZXlwN0V0bDZYUm43ZTRrdlNYcHBxRnA2SVZGUUJBYkJrVlJuSEVieFVFUUIxa2FCRnFVWlJ4R0JaNDlMaU1PT283b20zRkdIYmZuRzBaMEpEZnZQK2ZjVzNXek5UamY5''@;'; put 'put ''NkNUVk83OXovYWZmei8vZjRLTWFHRTlpVDh1ZUpDQUxNaUpTcEFmMWFBVWFrRWRhQWlWWkZ3OW5lMnQ2YVprYlRoUVdWcnNzaFlaTkFRWlkzVmFyOVVyT3BOT3Z6T1o4cWVTS1pIOUZPR2o4cFErb3ovcEczaVNVajdMTUt4Qk9wbkNINWYrRG5mODMrNmVCM3A2SG5pZ3grZjE5dlQwSE9ueG5u''@;'; put 'put ''dmdpTTk3eFB2QUF3OTRqeHc1TnpEd3dNcEExZDhMUCt2MUJyM3c3NWFqdm9HQndFSDROT0J0Ny9FZHViN1pIZDExMVZXUFhIWFZydWlxTitxRmZ3Z1JOTHIrT3ZvV09jL1dGc3o0RU1ab0FTRlVtRVdFQ0VzYUxBaHVZVlNqMFZnMGhVRnJrVlowMTltVGd0OFZTalUySlJNdXAwUG5uemxUMHFj''@;'; put 'put ''Tmg4czhvWkNIbkpkOFA2d3VLdzJIUzh1cUVWcGZSMzM0WG53RGViREloNHdJRlFudy9TVkV4dzNBdHh0aFhBK3FSTU9aQVl1T0lLMUFNRUY0MllRTmhzSnNZVkdCSUlyNkJiT1I2UFhXckFZVFlpR2pDRlZXbEpkQkswOXBTYkVieHJkYmMvK0o1WFZZVElwKzBaOW1YK2trKzBxSzdFdWtML0di''@;'; put 'put ''c1N2dEp5SzdJdStOVEVRdXR4K1BYV0cvQWo2OUY1NmNzUDNOZTJQdnhSZWV6ejRDLzJXZnp6NEsvMldmUjRDWjBQb0Ywa2JlUUJVb2lDS29QbE1icWZONVBhWEZicWZOWk5TTGhZaG9BVzFrQkphRkNUNEk2M09qMFVxclZRQnNCWFN3eDZsUU9PMXlweHB3cXJFVHAyR3ZYVzR4RkhaV1lDZUN4''@;'; put 'put ''NFhZYVd0S05jSUQwbmJtc3FsM0hlakk3ajF5SkxtdmRlckt4ZGIrOFJOWFNaZEhFM1ZOdjg2MFpLNDRLV1o2aXZabGgydy9LcDNlbFp4cEZqczZ6YnRITzYzLzZKbWJ3dTRhNnd1R0ZyODAzMVpkM1dEOUpzeERpeUxydnlOcjVDbllYVHRnT29yYTBQL0tQbGE4YXk1VFo4SmFJOFk2TFY1Rk9x''@;'; put 'put ''UTM2UFJIa1VhRGxnaW11MThBZXlBc21VVWlDQlpoMUpOOUxBeE5vcGRzZ2dDVXRST1h6RmdVM2VLb0o1UGNwZ1VoQUV1Ym9lMWJ6YzluUXJGWVZaWERnVkNzTGRiYTFGZ1ZyV3FvRGprcUhSV2x4WGFidFFnV1V4Z3FGSjExTm83UlpBSXc2U2pFZnB6RWZvWkt2MC9uZExpU2FOUDdUcHgvOTZt''@;'; put 'put ''Um10cVJXQXkrWjZQNHZidWs4TVRwUkRJVWppZERlTzlJTFR6a3I2cmo5R0VpalBjMWpFZmp1eG9hSm1MeGlYbzh0VGFKLzdJakd1M3NpRFYwU3Z2cUorSlIrZzRnNnJ2cDQ4NkdhQ2VpdEJOY2Y1M2NRTDZBdktnZU5hSE9URnM4R3E2cUtQZVVtSWhSSUY2TUJESkNhUnN2QWV1NXNscGdPSVla''@;'; put 'put ''b0tDR0JwK3ZvYWtoNWF2M1JTSituZWlxMDRiQ09yK1BMcW9wclY0YXZITTNwZDA2MFkzbzJ0eDhuYlkwZ05PbGtxQXZzZTkwMTNKTGRxSzhOTHFuTVRaUlB6RTkxRmRYT1JHTm5aVCtNbGxjMnROVTczY01YTkd4T3BvMitocm5ZblB0dlFmOE5mMmhobXdra3Exdkh3M3NHZWlhREN6M25TSWow''@;'; put 'put ''WEJwMmxzYUR3Y1NhNjkxWHoyY21tektJSVFwbjZNbnlZUElqT3laSWlwRjJQYmlVV2VBd01SdGVYa2grcWV0WHJmYmE3WEU4SDhzZTkwK245dTdQSXhvSDYzck03aVBQSXNLa082SkFpMk8xVEV4azNZRGc4Q2l4QWV2dkhLMWNXclg1SjdHMlIvZDhxN1g5alJOUDNYcTFGTlRhZGEyRnRvMktt''@;'; put 'put ''MUZhTXVSRUU1ei9OVHVtWVIycTlERHFlbW5yajcxNUV6VG50ZmVkY3VQOXJDMktYd0NIeURQbzRPb09aUGFPekhVVkYzaDF1bGhFU01DeGhxTXRCaXQ2ckJXUzVhQWVGMWFFRUlBZW1EUDdzNzJXSVBQV3lkU1NvU1pwcHZTT2hIKzkvdkMvRGZnOVFZY0R2SGZrZ20zQy81bnYzRlVBQ3hBTlBG''@;'; put 'put ''WDdOZENEQnRaZ2ZsdnRKc3d0SGU1bVpoOTNtclVFYnVqMnFyVFdRMGFjM0dEd1cwMnV3ME54V2FOc1VpanQxWTc3RVJudEpvTEtKelJaZ2c1R1dBQkE3U1dhcUtPQWdib0RCbHNSZ3BaZ0U5WVRLVUpuN25BN2pNS0Z0RmdFUXN0R3IxV3E5ZFlDdlVXdlZpa01mcnNCV1pmb3RSazRaQmlrZWd6''@;'; put 'put ''QXlpOFphQ2lBVnZOSE5Uc2c1Y2NsdUcwR3kwVEIybEdKaFRLK0pGR3dKcHBvRzJRRkZoQXk4RCtlQUVCYXNlWTRDN1NpYVYxMkU4MVlJcHF3aVJ4UEx2L21XZjJQNHU5eno0Ny8venp0TCtCOVd2UXQ5RjFxQkM1TThES2FGQ2hNV0NVZ0kzU0dIQ0FUMFZtdTJvTFBLRndtVGNjamgyTHhFRTlo''@;'; put 'put ''Vk8xL3VFMDdhc1IvUVMzNDA3Z3p1S01FOUdPcHVtY1lVWUlabFJFTzdON25kNUdySmQranp2M3N2WDBncDU4RWNZM1VZMVBuNERVdzlpTktUR1lrREVnQUJHb3RlSmxza1kwNTdRaFh2L1YrZ1Y4Z2Z3VXhyVm1DbW1udDhMWXAvbUFWSFRoa2N1bCt5NG5QMzJUaW01UUprMGdPMjRoejRDNHEw''@;'; put 'put ''U1JUQTBRSDFzeGx4SVlsRE9iUUZFUktOYktvb3BpRjVPTG9HL3FOSnZsSGtrMU5tQy9qekpTQll3azNwYk4zalk5ZlM2YlBUZWRub25GWnRMcDJYaDhObTNlOStuVjFYdjM3YnQzZGZYVCt4WjZyeDBkdmFhMzk1clIwV3Q3R1E1ZzNiZ2NkTFlPZVRMRnNKVUM0R3VFUzNHTUxYalVhbWVvRThQ''@;'; put 'put ''cHBOWC9oV3RxbjlxOVF0S2p3KzlZbTBTc2ZSUVdWUXpyS1VhMW1iREpDTXNCYWlCa2hLR1RpVDlxZEN3Z3BuT3M3a0JJSXhiWGRXRkZhb3ZoSmxuY1dUQnNUL1ROdnJiUnBxYVpVTitCajJlT2RZek0zWXVISmZlZWI3VXNScHU2R3hQdDV4cVhPdnF2SGZxelJUYTJIM0JaQVdQWG9LNU1lMGt4''@;'; put 'put ''ak9QRG1NRG9NQVdtdUJIQnl6Q3laZ21JRXlZQ3VuT0o4cnlic1hzTnFnNEV2SUdnS0piQUxsT2hra3hRUFFPV21qdlJ0SGw2b296MmZ6aFgyeDA0MU5xemEybzhtKzJkM05XZW5BcDFMWHk0LzNqN1NHdkhUT2RWdytaTXFyY3VrV2xNcGZGZTNKeU1kVWJyTzYrTFRUZTE3N1lWN3VsdDNaZmtk''@;'; put 'put ''T0NIYjFuQXV4R2tHMWdmWmpBeThJaE9DMnZBQ0d6TkZVQWRVNmtXemFqSlpDb3dGUUJQMllyb1hJUGVNRTVhcWJYcFQxa0ZmS3Ywa0FtUFhYdjQ4UEp2NzVuRVg1YUc1dTk1QS9kTHo4RHE0NENmR2hpakRMVm5XbXdnOWdyTUJHdkFuaGxCOEIxcFFJRUxBbG5nMm5zamNzQWM4MW50QVQ5RERo''@;'; put 'put ''ZzZTUmtqWXBoeWtkaVVJOE8vT05JMXQ5S3paMC92Wk0rZ0VYOVcrcUt1WjZ6emFFZjNxUkh6NVVQN3h0dmFoaE5WZUhYeFlpUjVxS2Z2V0V1T0I3cGczenlvR3ZXRDdRTnJ0d0xSQkl1SlZpT002RUNhYUxTQ1poWGxOS2dJODFJRVExa1p6SzY2TE96M1F2dlNRRENrQjRzTXliT2h3b0x5aUZ2''@;'; put 'put ''a3JBSENPR25MMFJwbGs0OGU2OHhjUFhqSDdkbHplNjZjYnd6MFJ4cW5FcmpxVUl1N056alQzVEpWV0RqZWpUL2ZlTENuKzdMMjV6NngrdGtERStOZWIvOTEyYnFZOU5IcWJuL0hTRWRpYkpiU0hnZ2Q0bVo4VTVrcEEzMkNHZGRRZVlPWm5RMTJMVmcxMUZyRTNwVFhDWUxncjZTUDRCOUxQenBO''@;'; put 'put ''SmhkSDF6NUo3WWdvNENIRjhCQUczNk12MCszUUVaQ3FJNklLQTdKMDBBTUdNT3dQa3c3VjFSUUoxYW5xeG1oOVdiZ3M1S3VpcUlnWXFMamF6cENRa2FPeW90ejBNK2loUWtKdGlaK2Y3WnZzYnUvcnZiS3IrOHFld1pidVhmMW5oMUp6ayszdHUyWlR2WHRqd3dIL2NIeHZyemsyMjlxeHoxVzhx''@;'; put 'put ''N2w1S2xJL2xXN2Q1WEx2YTIrZGkrS1B0c2ZxTzlvYjRtMkM5Sld1aEsrcEF1T0tKbCtpaSs1MUd0YVl5ZTkxUlJIc3NRRzRWRSsxQnF4VUN6eXFKYXRBNlFJc1R4QmNXWlVTVVBhYUx6QVlDTEs5ZHZHdDVod0wycGIrSWkvWVJwZk9aYUlyaWIrNFpaY3piUGU3MkRiWDB4MG56MnpjWmI3ejBr''@;'; put 'put ''Zm9OclA5cG10Z2VvTG9RQ2U0cWN5bU1wck4wTW9kS2kxM3FNeG1oTXh1czh0V3hKU0hUcllnRk9WQnRsRWtaZkpQZkl1aVVhUlR5aWZ3czVoK0pEcndzMEQvV2tWa0JlbjhQbVI0SE9Pbjhmc2VTOVp4T3B3aGhNd0RIZXFlMEJHd2tleXBvTE1BTzlQNDY5TDc4Q2tjSC92QnpFTVB6VEsrNjBa''@;'; put 'put ''UEVBZitCVkNlaUh5WlNrcXYxRGRENEJDUWFWbE1FNEhxN3lJcXBTbW4wLys3OFhla2V2YjFpL25iNW1ITUVSalRxWXdwd0pqcGVwelNPclVqK0JTTStYVXA5Y2hERDgzOFlPd0hkRXozK3V2NE83RC9UckNXMDVsR3UwRlB4UnVtNGxtQWdXOVM2UWtxcUxWWW8zRnJSbDB1bDlkVkZTejJCM1Yw''@;'; put 'put ''SWpJSDU2UXhNTFp6ZzcvNnhPNmpmYzB6QTUyTHQzY2Rhb3JQcFE4NEZNemVxdXVPMUhWTmRWNFZuMm1NVExhYVQvd2c3OHJTK1VYVzd4VDZ5WDJBbXduMG80eTV5a2FNaHM0T0lvS1F6RDdtQndjcEJZYU9RZEFZYmpKam94WWJaNUVXSkxXb3hVZVJhTUo2VVg4WTZYU0szMFA5SzFpRzFVQzlx''@;'; put 'put ''eHBvbkZRYXcySU5Sc0d3K3BhZDZNRERhc20xUWtnbklOM3F6cTMxZW5FV2dVdTl4THFaQUQrcnBLY0hvWjZKbnZIaFFWaFVKaFFLMjBPQlVLaEFMTnRpUXZoQ1lSWHZKRnp1dEZ2a0VpRkJNYTZ5TGhMTVl2Y3JvbFRtcjk3SFZxLys4c25sUjViVE05Rm9oN0ZpVnpRMld0ZHpXV3U4ejI2ZUx0''@;'; put 'put ''SzREZDd5OHJSLzN5ZjJMeis2c25EUFlzZHl5dDV5c3RmZUYwekVhZ2RybTZPblZ4NWV2dkxMVngyNGIzSGl5blFrSEtxUDdHcnNQZFZYNSsvU1RialB0SmdxcW1xbXU2WS9PTFA2NlBMK1Qrd3ZyeW9MZUxFeHRpY1JiWXhPMU1mYjJmNlZ3cmZ2Z1J3V1FaUFdaYW9OV0VQd0NGQVJrSlVHdENo''@;'; put 'put ''VmJXRHdVMHRHcjljYjlVWnVtaGFERmhXWmF4azJZUktSUHQ1K0VvZnB2OE4zd24vay9OcmtUL0dBOUNYQSs2d2MweWhDSmNpSE9qS3RJSWxoQkIxd2psWkR0TlM4a0lNckl1WVdNQjNMVTJxemVpdExmUjVmc2N0YVlpdUpWT21aQWJwUklIc3gwNnAxMkdsWFBzemlnWmI1UkR6ZTBkMTBvRU42''@;'; put 'put ''Qk5jMzl2UTB2dlJxNi9CdzY2dmtmR1E4M2pqc3FkamIwalFkd3g5TTE5VTFmMVY2cVN1UjZQb1haZy9GUU5iZURieFdqaG95ZGFVbEpxT0dHaFdLUEhWdENQL0FnM0pVRmdxR2FQaEhreWNCY2V1dTQ2YjdEeDI2ZjJubzFzUmdZTEd4OTB4Ly81bmV4c1hBWU9MV0lmUEIrNWVXN2p2WWt1d0xS''@;'; put 'put ''NGF1SFJpNGJpZ1M3a3Uyd0w1UXZIMloyVGRPNWkzazBNUWNZeGxOWnBQRFpuS2FuYUVxTFVXUFFwaDFPQzBUWUIyMnp2N3F4Q01IRHo1eTRsZi9PWEY5Zi84N3h0OVB6czk5NHZEaFQ4N3R6NXdhSHI0Nkl4blkyc0dBSVgwd25nbEZNeEZGc2xGN1JyTUF1cVZRYllVeTY5N0V3MHRnM3RpZHNw''@;'; put 'put ''eXplcDJQNDh1bFA4Y2Zra1Q4QnpMNWxjVnZMNUx6aTJoRC93WlVrd2twL1ZOcHhYcFZWRDY4TUNBRDdabkpMZGFyWCtsM2hYYjYwcUwwWGQ0cDM2LzdZYis4S0pWSmdNdUFoRXBDTkZwbVBHczFpQkVYOTArcEpjakVKR2gvTzJ5YW43dFhYdXRHL3QyMGVTay8vak5jRnZ1TDRhWFBIRHIwbWFX''@;'; put 'put ''UlA0OE4razgwOWRFTjdJdnM4eitOcjVaK0hXL2pXOWlhNkF2Vjh5MnM4SHdnditZN0dVN0RtWUJzTWk2RGpVclhTK05ERnJRWmw1aXVGcjZTOEozY3VTemRzYnlNcjZIc2hLUFN0OGw1NlRYc2cxNW9xOGRaZkpMR0ZWUytCbmZUd05FWVhWNm1yUURXQ2Zyakc0ei9nSXFZYWM4b21obXNaRWtB''@;'; put 'put ''WW5JenRCY2hpejJvZ2VaNVV4NW1RYm5zc2V1OWcvWmRkYzJEeXkzTDNlWk1vcjg2dWFjYnRGUzg3L0oydnM0WjZPcERiSjFWbVhLRFhrdVloc0lzQWlid0dLWGRadU02TVduRlNRUDJnMnZvbjFuR2ZiZEkvNDdyMy9sZlIyQzYwc2Z4aXZSMTZUYmNlUHhsM2k4SVl2Q1h6eU10dFJIWnBHbHZp''@;'; put 'put ''RzQrUjUwV2FhMVdPdWtnMEVuU1NoeFN3OG9pME56YWVkWWVlQWdJSURjdmNadDVPYXpLdkR6Z0ZQaXRKdGlCMmVYZi9uYVpmc0djdXZEZkF2Si9UbjlLYnJsUDhqQ2o0NHFNUnlSa1M0KzJYSThZcHVSbi9lSDNMaTlMWitpV3ZFRU1hNVB3OVFhVnZaUitmLy8vdzVmbEFnZW84dUI5Uzcybisv''@;'; put 'put ''dFA5M0twSTRzYmVMcDAvOEdGb2VzR0JxNGQ0alRMZEFHbDErT3dOalBJSFBCR1lSYkFwZ0ttb1lsOEFCeVdXRmpnc0JVNEM1M1dVSldPQnIrOU9ibmo5Q3NpMlpyRjNpRVk5L1RRczh2WW50MjNML3NvT2QreW1zbXN0dndHancyMHR3OUliNnB4NEtBMmZDWkJBOWhFSzFCSFJxQmh3THdQbzFG''@;'; put 'put ''RkFaMU9aOWdacWcrRnFmQkZNQWR4Z3lLbU1lUjBPTzF1Mm9BVjh2dVFmN2gxTEhwVis1S0NIdWxYUFlkYWwrdHorTUVWVnpSMDlmV0dhbko0a3Y2UW1PNmI2NTlRSVNxUHAwS1lDK2hNUWdOaWlrdTRqTFJhV2FUSkxBNU9zdFZxcC9LR3p0UWZCci9UeWpDbVRjcTRJc2NQVHB3Ly9kZjNMRE9V''@;'; put 'put ''U2YyUE1uVGhXMDQ1Ly9DYjN6Q3N2WXNpak5GMGFQMi9TQnQ1RnJ3QjBGRXVKL1ZIQ1ZhaGlRWllWVHFxR29XREVUOUZVOTRMRFRlUWJRU2VXNmFsajUzcVdMNnhiM1JpWWZ4d2M4Y1ZmYVBYcDFvank0M0JkbDlvc092VW1kYXJKa3duc2djNklnMXhwNjFodEsxbGZ5b1JIYTJPbE1jOGxkVWVp''@;'; put 'put ''MmR1cG0xL2lzNnpCbkEweWV3S0hoZkp1WFk4a0NHYnlOZ1B2cDBmdU1UNHYwbjF2eXlEYTdjbzgrNHVvSXQ3b0QzWXZaa0tPWmlPc1hwcFR1UndCQnlLK3FYQ2l2c3ppdHpDdnR1enkvSDU1dWE1K01yb2JkUG1zVHRtOGZ1bDB4MEhtc0Ewd0hkS1Y4L2VNY2JsakdJRDZlaFlXdWFMZ3FTVWhT''@;'; put 'put ''U1hOR0NxYzBsam9CRjFEeWJmazc1L0V2N1IvUUdHUHIvMkhWTFArZ0t2UUZQQ2VBajZNbEpaRHdLQ251RXcxYzBXRHhMQ1ZxU2xtcE1LSGZnbitFM1lYM255d1lkUFB2emd5WDlaZnVvTFZGSzhUc3pzYTVMNDEzNklsTDdKcDVnOEEzbG8wRUhYaElaanFZMkdPYTNaYkRZcnhTdk1Fcm8wc043''@;'; put 'put ''eEo3RHdqcTk5N1Rvc1NHdlhmKzNGNi9DYzlOZFlsUDZBWitIVEg3REkreTZBdmo4R2ZldFJlYVpVUjNrdko5aGtiOXpHem03a1BtSExxcVJmWGYvMzN6b2ovZVlvTHNDZmxwN0hQZEtpOUorMHJ5Ym9hN2VpNnlrKzh5R3RuSCtmQzJuWnJHekdhZTdtZzhKdnd1K1Qza0dLcEZQNGcydi9Oa0hJ''@;'; put 'put ''NHNTYXhQWDkrUHE3Y1QvNTd0djB2cEpBV1BBMS9zWm5Qdk1HK2U3QVdoc3dFRjcvL2ZvRi9MYzd4QnNGc0dmMWwrTUZIbTdFS0FyamhYUGpLZkV3YW9yUjJDZ2REK1hIYzRPd1Q4Rlg5SUVIZnYvN0p2TFZnVGZQMCs0VCtKUDRDNXkySHRjZDZjdTRRS3F6Q0NHTVRLT2xwK1VveCtNNjFHZFAy''@;'; put 'put ''djFoMGYvdDRVK09uemt6QnRybjE5LzhKcDJ6dEg0bDJiMytOQXhYeGZyWUlUNUx1eEFCZ1lSTXJUMDhOTXozdFl0a3NKdThBbTNkckswWldsSnBmOW9HUGlBZk5lMzJkeDI0ZG9oODJmSG4zS2VyQjV2aEQ4UUtmQkZDTjJZY3hWalF1RUVSV01GeXJ5alhDanF0Qm53N0I3aG5WUUNzMVJIdEt2''@;'; put 'put ''TTlxUUZma3RWajZvcko5T2dCdTJjckNPVXFCcWVZWlBNWnA4ZURrQ2ZrQ1hvcllkaVNRTkJ2TndCU2tjc0pXRlVIcG5LT3JBM3NNK1hjQ3Q5KzljR3lwZmpVOGZSU3k4anV6c0hPcWNEUi9iWjVjL2RvYXFRN1FheG5EMGt2RG9ZamU3T0ppYnF5b3BheHV1RkdLWjZzNzNjMDFkVEUrWnJIUU41''@;'; put 'put ''TWd4NnlnWmZ5N0FXTEVUUVFsbGRaRHNSVmxNMUZXRXJrY0JwZEl1Z2k4RlM5QU9UZERFUk5zZzJCTjltbDlTcUhmVHNEQW96cXRXTHViNENaQjAvVlliY2paUGZadlo0U21EYm9tRTJodkRCbEFLc1N3VlBiQjUrN29yUHppdDYycFlwRGh5b1gyOXdqTlRVajBZYmhtcHJoQm1JRkYySDhodjVV''@;'; put 'put ''ZkM5NVJ2cHRMQ1cxUktkVHFhbG9kQ3FWbW81eW1vb0FmVWhBSCtXb01STTNBaDVLVERESlVtQnlJZWN0bGV6c0xia3U2UzI5ZnROSTlzYmhwa09oWG5kM29HRWlHcDJJQm5xS2U4T0htODBqTnc0TjNUQlNHK29zclVoTXh4UFRpVXBQUnpqQzk0L2FFYzI1L2JNSzZ2MmppR1I3dzV3QjlmNVo4''@;'; put 'put ''dnUzR1lnUnFjakNocHhJbGYyamdJV1hCR1Q3SjcrbDBNeDQyZ2l6ZGY5c0liK1Y3aCtXQ1Q2UEpDdlp0SCtrK1ZERlVsc3YzOFRGeXF2WnprWFpMcEpuMXZyM3hsUDlONHlQdjZNL0ZjT1d0YnMyN3grTjJieE93ckIvTHRpVVRLYUQwSTFqaDY1Z3d4QkJRNVp6TTVYbkx4T2RHeXhnZDdtN3JM''@;'; put 'put ''UUVtanJCajZMekRmQnRVeHRmWGpwSG5laUZLZU9GYVhlbjc1cm1vZXVIK3M4T2pwOXNrNDRaNTN1NjVzMjR5VENhR2EwcXpnUWlBemVNajc1aklQdWUvVDI3OFJYWnJxNHNwVEV2ZkZzazM0Smg5MmFNUlZpbnRXS2tvekVsdWxsbFNLZlRMb0dsVmN5Q0UyaEJnK1ZvSWlncVQ2WVVIQU1kU0oz''@;'; put 'put ''VnJTL25NOGFnbjUydmlhS0g2d2cvbGRzOEZNYnBVZWY4MXZYWEh4d2ZIMjB2YTNJRzlPVkZya3FpblpJbThPTlRuWjBURG11UDN1VDNVRHhHMTZkSUkrQ3hFdFdoYXpPV2lpS2kwK1pqczdLSUJEa0hha05IVnFsaHVDUnFpTXp6REtsMkppSnpJRlE4d2t3cElOb0VCaUt5cWdxaHFycXEybEFB''@;'; put 'put ''UnF3TUJZTUJLaUt4VmVaMjdyVjE0STNFa3lLcXMzL1MySHZOYU5lcFVMaHNOcnBucVhLeHRmZDRSOGZ4M3RhbENxREgvdjY1dVg2aWxSSTlxNjJoeWhGUHhXaHZ0ajdlZFhKdzhHUm5NckpIdW1idndNRDgvTUFBUC91amhyQ1Z4U1ZQUG1WakpoUGZHamRpYkFRbU1ZdEZsaWhXc013OWJ1N3Ni''@;'; put 'put ''MzBOYi9JUFdiUkRmZ09NVXNDdFBhdkQ3NkJoQVNyaFlOZmtRSnBWRm5MNDl2bjR3ZDdHVUUvNDBLSGllZGlXNUw1VzZRdTR1WFhZMit5Vi9nYWsyVnExTE9zNzRQdVQ1Qi9BanJLZ0FUNXRWeTRvWFV3cHhTcmJxWjZNQSt3NVRBMk5WZFhqZVdvNldBb0x6Q3hTcmQwVXFSYkJDampnOTVjVSsv''@;'; put 'put ''M0ZpY09IeWI1QWNiRS80QzRPekt6OWtZNi8vdEw2dUR4K0tUcVNNVnBBdHhaaURjbFJ0MVkxRjBGZ3BLczVvQVBNZURTTXVoRUFDSWlkUG0xOENUS0ZSZEZMelNVdXB4eEhGN2ZFMFdWSGdKckp1dHhFVDhhTENrcjh4UldIeHpyeUUzN3pQNDM2TWFQZlF3SnJyM2J1WXZzK0NBdWdaNFltdFBR''@;'; put 'put ''RkEzUFNsSjIzY2cxSTU0UTM3TG1WYXp6MUM5aHRjSFlYMks4YjNzelBYN0JaN2N3aXhOUVlZaW9NWE9tdTc1Nzk5SjVEaDlhdXhSN3AzNzQvZFE2MnN3ZnJPUjJpejhGOEJOVE9wMkdpd1F3NUlDSlB3S1NLa1hqWWIwb0FiWDcreVh6UVpPalFJU28ra2JKT29ROTQyMC9sVHluRzJpcU1XRXli''@;'; put 'put ''TXJXTENoYnRrbDdVQ1ZxdE5hdWhwN1pzV1NCNTRIZjZWZ2R2aVU1WGtuczV6MEkxZnVUelcrMSt1OTloQVBtam9tVGRoZzlKSitkZStFNytaanAyc0NQZVBNQytIVDdzR0lzM3o3cHQrOW9VQ205dEdlcE5TYzhwUDRsMktGemZISXMxSXhXZldzRy9IcnRnTlJQT3FIUU5kdVpPYWFrOHNxcTVr''@;'; put 'put ''TkhVRnY3a1RPaEFkcGo4WmliVWljcU1aUjVzMnEwN2ZMaDRUczJEblEzUzQwU2JEY2NVL1RNS2M5b1U5eWg1eTdpSDY5SnhqOWR2eklMcE1IVGpDQmdLekhKb2lPNkt3ai9aY0JpNVlRamV6WURkRUo5T2NBTkNzZjJtd1Bhek10dmg2R2JiajJweUhiZ3Z3UHg1QTR4aXlNNDFQWk1LbTIxREZj''@;'; put 'put ''emJzTk1VOVAyUDdEVHB2OG5qODl2WmFkUW1tZ0tiU0ZuWFJwc292NjRTbFdHU1ZYUVNzM0tzbTJ5bURUQ1hzRitzbTFYUW4yQy9hTmNtc0M1dndNeEwvVnZ0VDNEYjhVbFlsd24xWEREcHFLY3VyOHJLRkNiWU10ejhaTWFBVTZIb3ZGbEs3WUFMSUdXWW1MRTFKWjBLQ2IrODNMUHJtSGo0TVA3''@;'; put 'put ''SHRwbkpQdW1maVBZd2o3bThqbCtFOFlMVTNuVmdncDNnSGNPd0lQeHlrWmVTelpHWElBb0VhZ1BNM2cycFFpOVlzVFM0VHFaeEYwTEY4c3RuR3FLemM1R201bzZsUGNmMnhBL1hSY1lHcXBQdWhrVHpZUHpFakxrNk9OZ1ZyS2lxc3BiMmRBeE1WNVVOeDd4bGptS0h4VnJaSGh1YW8vWVN6SEdS''@;'; put 'put ''ZkFqc3BXZ200c1k2R3VZRnMrNVdxa3ZJQWowMEFDU0FaM2FBbTNMTUJyTDdxQkVVNU82VlZjNHpBb2xMRDdDYTBualIyVlRXUGpvK2Z2RDY2eXRkUmVYNkVxdGpvaFBIcHQ3Ly9pbnBWWS9mcE9jNVNLOERQclZNdnRoaFFKS1RMeUJhWkkycGNnZmR5bE5aOE9jOVFDNWZRTVg3V2V4ZlpRWlRS''@;'; put 'put ''Y1ZtWkNVV0tsYWFGU0VEeFBKSEVDa2daUEN3OUJJVk1uaEN6c2toZFVTcjVPUW9rUXpGQnJUYW1NZHQ1NkVYMS9GNzd6bitUd3RnK0p6QWQxTUZqY0VxUmtJMXROOGF3N0ZlT29aVHZuek56Vk0zbjExK2ROOE5OKzZESHQrSmI2RmZhMy9FTjBzMzUyTk5OdWliNVlBWlJRM05KNkdkWXd4OUMw''@;'; put 'put ''UjFLR0N6MlNqMWVNT2kzeDVPdXROSjBZN3ZlOS83VDN6MXVaUHZQbmZpMmE4Ky96eldyMzMrODI5S2I5QitTOVpIU1QzMGE2WFpNQ1k5Z1NsVEk0SElYVlBpUEVEbjdtSEVhVVZGTm9jNkxOaUZCYmFLUWl3ZXIzV1YrMHA4NXRMWExudmdrNnMvOGV4dWVkSTFXbVJ6cFlsZU9vby91bmF4TDRQ''@;'; put 'put ''NVdrQjg0dS9CbUR2RWVheVhqdk1rc0UvNkNiNUhlZzBIcEwwaitORDhpSFRQUE91M2VuMHZQa0srQ0ZLck9oTXNZY1lsYUdrODVQTVNtdU1HSUxNeVAyTTBZWFZSL1UxRGdHbFFSaWxnc3pCTktIWVhFcWViSHhXS2xNdEViTjVmamVzYlV4RmN2VENoYjJ0MTRsQW9ITVN1bGpiOVBUVURUYmZG''@;'; put 'put ''NjNycTR1ZlNBOVg2Ym9PN3R2bzlEZW1Dd25UREhkVzF4WVp1R09leTlRdm9DUlkzMmprL0RteUl5NGFIbFZ3MW1uKzVGNit5ZFFCKzlDenVRMCtwaG53WUQ3SXVadVhUZTRRbmFPNDJFUjExYnRCcFlaNkJrcVlaSm1rUUR5S1FQOGdvV0E5c1QyMWJpd3VtSGdwaFoydWJmaGRkRkJXdTFmdDNM''@;'; put 'put ''UnVLYTZ2dmFFZ1hGcVFiM2xOZDZ6WjA2NnNIMHVmWXdtNUw5OWZvYWU1NUM2N0d0K0ZIclNJdVdGK1hmb2tNanlQOHRQUkxsZzNCYzk5bjBMZVliTFd3VXlzNlFhcVFtVkhPY3AzczlMeG9vL0hMREV1ZWFBaTJUZkpCT1htZzVVd0ptRkJLdnNCYVAzNU44VDh2WUltTUFTOTRLV1lxeWt0TDND''@;'; put 'put ''Nkh2YWhBUzh6OGZBcEduWmJUN2tIY2w3SWNPcDQxem1QWE5GK2NiaXJvVG5BL0ErQWpnMnJCUDV5S1RuVWNibTA1MGpIVnNOdmJHMmh0Qy9WS2QvYzBOdllFYTdXWlB2UFlWVjFkVjQ0VjlIUnFxNzJkdFNicEwweVJqcHNQMlBHQzdXQWJ6NEZFWkF4c3lUTFVtOG5BVHRGa0lpVFNYR1FSRDJz''@;'; put 'put ''eEFhRXFFblljd3Z3em1sVWtpdHk1Unp6cHE4eHFEd1pBczFEakx1ajBwdElzZTFNZDdOQ1ZZNXA2UnNiV2ZqcVV5YlNzWkFhdTh3d1dUTVNiaDU1N2JtNnVvZmFod1hOOWw3ZkxwMnkzREQ2a2pzMjZVRXVteVlHUkFZK0FpeWt5dDJSRmh3bVlUV0RHTFJ0WmpRRFBlWE01N1RhbEJxRElSS3NB''@;'; put 'put ''V0htRlUwa29oUy9HOFBqUmU3N3lsYThjaGE5N1dEUVhEdzVtQjArY2dHLzRLQTNwc3YzcUlwUDRhdkljeTk5SnNDaGltQ2F0QXYyeXdQNlNWcUNJd2hQYlpQRFFBS1BhKzBpb1BpOVdWcnBkVlpYdXg5alBLaGVacEQrOVR2cU0vd1I2clVGSi9IL3czeFg1Y0owV0ZRbTREcjBxeHpYSDhTM2ty''@;'; put 'put ''cmNURTZWNU9GMjRSM3FlM05YOWRtT2lidEYvNGVBSGhzZ3JEbGx1QjlhL0FYN1BvN0RUL2d6NDRhRHBFTG1KcXRWM1VTM0d3dHJzV0NQRXRBSld6Qjk2bUV2UE53b0hMbXR0WHM3ZzhyR3pZemdRbjI5dDNadFlxeUlmWFRzS2ZYZWlWOUNYUUhXWjZKbWlTakFRS2pJbVZNbTBUU3JzSFFvRVNr''@;'; put 'put ''dmg2eFg0NGZmRFJ6bmV1OTZKMXFGQk1UckQxbVlCZTBWak41QjhWTUpNb3hKZzNJT3ExcHlrU1VRZ3RGZnpVdlVBTzMwQkM1Q0JBR0hkdEJNTTE5bkZ5RzBQQkFKVVoxUE1zUVFORm81UTVUelNXcE5YcTFzakpUR3JzOXp2OEFCdFdteFY3Y1g2U0tnODJGQlVFSFU3TElVMm8yMHN6ZXBqWXJE''@;'; put 'put ''bnYyTjdIdEhSUFkrZzd6RTZESytQNEg5bHNzbUxXalBwU3FmRHJDSDg2STBnT2xGR2pGeFlnZVk1Z0dSMTU2MHFkdG10T1pwRWFuSEZVM0VTYWJkT01WbEJ0dUNrTE1GaW0vT2k4dUpNdW1welpoU2JPenRMRW00cTh0RnFIcXVJZXRHZm9jOGgvZU1FUC9ZNUptUzNnVG1HSFR2QW5GVmdzSWdl''@;'; put 'put ''M0FIbThoeE1BZnJvRGpDcnViRlcwTDBjaG15R2VUblhqd2w5Y3lNTXp4TVNYZ01aWkFGVGZ6RFRaNlh5aDJsNmNNSkI4dENzTkwxbTJRQUNVYmNBZHFaOHhxUGwxaEp6NVd4Rk5taHRrWVdTQ1NRa1ZqSkhValNaQ0t3Q2NGR3lTZ2FKdExibkRMNlRORXZpdDNrcXlWMTNrZk9MMG9meE1la2pM''@;'; put 'put ''UGVqaytYcXBEREpsTmJXQ0VRajZpcUFOTXV4QnBmWmdHNnRtQWhhbWR6cjZkR3NnRS9DTjZRNW9RUVBaZmt0TzJ1ZzNRN0FuRDJFUmcyb0FkdEFHeUdzdWVsdHQ2cWs5VUFiV2drM3ZHV3pUR1J6QzVyWFI0NXMxNURIL1drY0lZVWFnN1hBZGw0blZUVThCbXZCc21qWXpIM2JudmNtOGN1TGdj''@;'; put 'put ''R0c2M29LOVpXYldkTTljL2ZNNW95bHlVaTRMOXFzOFc3azJHYmprVS9NYmN4Z1FveW1XTDRQby9GcW1RL2V5V2dLcTJoek04d3g5UGdPTUdjVkdPQ0RhM2VBV2MzMXM0Sk9jcGc4amE5ZnBEa3piS3dJbjgvNis3YjBBNklDSjFRd3g1Qm5NOHo2cndIR3h1WVQ0Zk5aUDc4RjV0OEJwb1ROaC9l''@;'; put 'put ''enN2N1pqZk1CZnFxRmI5OW5PUVRsTkx0OG8zV3hvR2RuREFhVmVXR3h3STl5U3htcjhYTkNzd0xRTmNaOEhJRTVURW1yRWtNQTNrcUtvUER4MTNueTE4REFyNlo1K3RleitKbGNDaGh1V01UK3RVZDRJdGlMaS84QU9HRDVMVXlteEdXWmN1OFdQTEdjRFlhbmhMeTNuOWtpZHpiREhNT3hIV0RP''@;'; put 'put ''S2pDd3QxL2RBZWJ5SEV3QmVuSUhtTlhjV0N2b3VVM3lpK1pNM1lGZkpRNVFBcm9uZEFqSDZvSmg0SXh3bXVac3V2R0h6NzA3Yys2Mjd0dk9kYjc3M0IzbjN0M0pQbWZlZlE2eGVqVWxSNFZXdWRhamM3Si82OElhVWxkYlhsWmkxdEdVYktRVlJqenNxYUI2aXVIcFBHOVF6SUlwOUxqZWxkVnRP''@;'; put 'put ''RUVFZzBKOXBPVGlSNEk2OVhGZnBoQ1l2VDRRQ2RuRGRsWnhvV1J4aDhBOVRLc3lVSk1pY3JreEQ0MGpYdTZGWFVueTFlVEIrNWJTcTVHR0kvTU5qY0RhVFVjajlVZm1KRlJaaGtlN3NzRGhPSE82djZKTWVpS1RKY1UzOUMzZGY5QlhtVnFKMzlnSHZPMnRiRnlSZmp6dHd6ZFREcGYrTUhUZFFN''@;'; put 'put ''TzBYN3E1bnVLZTVXbXdmVzZXYWVIUkxmU3lHZVlZK3ZFT01HY1ZHS0NGeis0QXM1cnJad1Y5YWpPZmMxdVpqZFV1ai9YY3huNDI1ZTgwWk9xQU9yUWFyRjNXWWZuNEsxZUVDWnJMNG5KWTNFVnVhOGhiSlBLc2dxUXEyeW1ZeTNaYWVXWkx0dE9abHRWTTkwckw5ZDhiYUcvdmw5WnlzU3ZpSlY4''@;'; put 'put ''RFNUWC9sQkhzZGhvdXFRZnFxQUFkQUVwTW9NZEUrWFJUdktERGN0aTZURTVxWE0wQnFsN1BaNHoyZ0RmZ3JmT3pZNjFjakZSVXBwcFNjbzFTaWw2Z2NlYXhsaU9aek9IbWcrMDBXM1ozZTh2d2NFdDdKTm5iMDVqc1hTYm1wdWxvZExycFdMcGlYM1BUZEd5ZTVzbk9kRWFpN1oxeG1qTUt1T1o1''@;'; put 'put ''QXE4QXJ2dEF2eFBVdTRpMmVTN0FIbnhBOWZ5aUFvL0ZXVFg4QzdubkJRUHE1OC9sK2wrWlVEMFhLblB3cGhzNW44Sno0VU5nSDBaUUVtVndONi9wTFNzRExIczlZSTA0c1ZIZmpIVkdBeUdpam5wMnVoRzVpSGRIR0JPRnliODJiUE42ZnA2UEV3SENvbFdHcTBpUGRLSmV0MXhnSUVwR2ZrbTIw''@;'; put 'put ''R1FXcUJiUEp3M1FjWnN1MmNhTWN5MnloZGhrVWdtTXpPYUdLTitNRmc2L1pSZGdSbFExTnRiWEk5U1lhZXhxYTZsUDFpZGlVY0JjblQzZ0R3UURRVXZPckZEUzNMZGtZUER6aVUwSHZpQnpPbkR1dlBGbGZ2cWJPUm4wWHRtN2RFS1ZuakhYdlZBU1dHM2JmQ0lzZmFBM1RMTTJlbHI0MlhCTEl0''@;'; put 'put ''RXlONVpQMjRqWFJ4S3FrMkxwRG4rYlArQm9xcW1Oc2J5RVRwYVhrRUlQWmNxRFdLdHBEQkdkTmxWS2tLNEVDNmk0RURhNEFMeG1uV3dXQm1oNUFBRmpRUWNjcFdPc3gwcmRlTkxGQVpEQ0hxellkVUVLQzNBM1hSbzQ0OXNDeHdyZ2orVEF0UlQzeGhDejNoaTNCblIvb3VGR0V5WHdEK2JpbHEy''@;'; put 'put ''R1czSDM4YTd0c2ljQ2Rac050eGJEMk9tZUxka1VuTDk0ZmdEbDN5SE8xOHZiUGFkOC9SSFY4NHNLUEJZWDFmRFA1ZnBabVdIUDE3L0d6dXhvUDkvZy9kL080V2xRTEtKNmZzeko0WDhHejgycy8yL3cvaC9rejM4TXorMnNmdzYvY2krUEw5R2FxVTd5VFZRR1Z0YmVqTDJJMVFiS2xwUERialBp''@;'; put 'put ''b2V4anBmUVlUd25lV3pka2w5SkRYd3lhQUpOVjlXTndkOHZMeTJ2TGF3SytVSkRtMnlzcVdORys3aEExS1VMY3BpQnk4cW1PMjlvL24rNDVreDA5Mjl0MnJPZEFiM2pmbWZMSnFvYWwvZ01WUFFWejFjT3hnWGw2OUdINTFOS2VXNFo3ejQ0T1hkVTFQanJSMkJzb3JneW42M3JMMTM2MmxJMk8x''@;'; put 'put ''aThPeDhjakZFLzhUSS9LeTBrdUwvZm04VDNLOExlYjQvWDBkcy9wdmoyZ2VuNVJnY2ZpRldyNEYzTFBDL2FybnorWDYzOWxtY3ZkYm5SRXJtdTJnTVhjbGdIdHJGUE96QkVMVFNFTmtQOHNrTDkyU1FTKzFFNHdqOUJUVkFyYVZZa2s2cWxycmo1R0I4ZFFYYU9FcmNHZ3B5UVFLUGtGcmFYNmx2''@;'; put 'put ''d0wvbEtvdENRWUxDa05kYzAvcjN5RU9TbG5qRzVVaFdweU5wc0RiTFl3UUxsTllKM3BGWnNObmdxcXA5dmFiQ1hiMld6cUE3THRiRGF2MTF2anJRN2F3cllOTnB2YVpLTVdtOFp0NXdhYml4cHNZUUVFWnpnNGN1UFFaRS9aL2g1ZkNCaDZvcjlzZnk4SXU1L1V4S0s3b3Y4OEVmWENKL3pCL1lt''@;'; put 'put ''aEcwY2lWV09oaFNTd2NyMTMvTGR4YlBJQU4zOFIyTGs5S3IzaFlmdkd6MmpvL3M5eHVqaUl0bmxPNmVKRHF1Y1hGWGdzN2xYRFA1ZnJaMlUzZjg3UEhtZy8rK1YrN2xhZHEvS2NyQS9uejFXM1RaZmJlcmE2UTdyY3RvZXcyNytXTStmb0llemJQSVcxL3M5UFlZWFZyZWx5T2R3OEorTUdjRGFK''@;'; put 'put ''VkRHWGxseGM1aWo2MkJhL2h0cy9kK1hzbjZPRGFMdVlEamFnKzNab203T2RzR0dTeThiUzlUMkNGMnhmTi9UU2tXa3R3VUI5V0lmSmlCNU1idGhxc3NMS2ZlaTlNMERQU2xtZEhZMFdGeGVYRnBjR2FPekc0YVZCQnkyUG9hWDlZVjRLeGxWK0ltMGlndGVmaUhlNEM5cHpkV0hGRmVVbFpSYnB6''@;'; put 'put ''anZ2cW1oTkJNdDRpVmlGdTloanhaMnNVRXpPTzkxRGVvQm42VTFDVDNNR0xQT0E2VldLaWVDQXFkVkg5SUplRkRIVzE4Q1VtV1cyM1d1dC9Gcm00UnJvV2RRVGNWV3BaQzhCeDFxdjU1RkN0M3FKbmt6OVZsaFEzQmE1QWRvRVA1K3gxdGJXcG1vYlF3RTdHRTFocjFFc3k2RWx0WVBONUxRcWlB''@;'; put 'put ''cXBNbGhKRDBWWnlaWWsxcFdyT2VwK3F5U3pVZ1NHeS9vM0pyUFMvRmFHelkvbGsxcGx2L2h1NWd1RlpGL281MXQ4S3A3TFNYbDNRT2JkRDZyYW5sWGFZajE2YkllMkYrVzJCT3ZuT0gyeTJqWFdOaXkzUGIydHovNWI4Z3pBRERJWWk5QUJKcmtCWUo0V01BVUNHRGxHQXBUL3pseU81N1VnVDBy''@;'; put 'put ''aHpXc1hiQnBpMEN1bnpTR3FWakFTdEdnWk5nZ2tpMTR2NTlEUlV4RitNUVZQQ0tMU3AzWkhhQ2JGYVJNbTFkMUVFVU1iV3hSZXNzVUc0RHljVGlmbjhhcUJhVHpQNXZGNGFqMDFZWG9pSC9MTHh6WCtMV21neWtVZ2FITTJ4YldaRGVrVTk5OS9LQ1A5VXAxVDBiLzJqQ29uOUdPdDdlMXJYOStR''@;'; put 'put ''VlpHTG9iWGtZbWhINGY5dDlodnN1YnR5OXR6UmNiUmQvQTBiMFhkMmFLdllnZ0xBZkpIWHlBSFA5N0U3RmdZemZVV2dpSzJBTzM2R1RMUDdLZU9KQzBnVTVZQXlGZktXTERNa2dESHRXdVhZemVHblZUWld5b0JLUGFKZjRUTzN6SkdxQXNWaHpsVVZURTVKVHlqVmlveUhtcG1JNGpXRzlLeHlo''@;'; put 'put ''ZVhLaGxBOWVtZkdScjJLRUNaYXNCMklBV3dCbWdsZkJ2UlJEZWErUnF2VExOTmdyYkxqOHUwNExHT0dTUSttcllJS0tGcy9QcnhkQzVxb1doUU9oK3ZERVpmUEhtcjBCMW1ZVjl5MEl0Mld0RnZxR3lBNTlmYkgyY0xjSW5XNmdvMHB1TlhnbVVtL2tiMnVVbmVoc25LYkZhdnljY0VIdzJkNFN1''@;'; put 'put ''NDJzVmo5TnJIWXpiNkFYdllGV0swbW81RmFXV2Q5ZVV0Ym5rOUxhV1NFNjZ4VGNsdnBaN1RPazdjRjJyR1FVc1R2ZndCNHdZOEtVUU5xUmZka0hQV1ZSQzhxNVFvQ3ZRNEVEWEg1VUdlaVJ4U0NYck5xd1BsNlhsSFVMb0VicmRYeTArMGxmcnJ0b1pkNmJZVTJZcDNPeXR1Z1RTM0FtWTVHYVlR''@;'; put 'put ''MjJocHRTU1V0RFphR3VocS90NnpVYWFlUjJtS3pZdHJTKzZpNE5lditFOUoyY1dWVlZkZ2ZNRGdycTF6Ly9aWVp2Sk4xdnJLMmhwSmdUYVhMVlRYNnR0SjV3WmQ2RFlpeGl2RS9qMWtmWGYvVWxyajI5d0NtbFBFLzk3ZU9mb3pIdE9McmU5RHJ3TU1PbnVkQXNJUG5nU2hYZWZBY0lLNHpBMTZY''@;'; put 'put ''bDVYTHlDZHdhVm9rcVhEcTY1UlVMZVpsSFdkUHF1c2NnUUx5a0d3cjBOelpkUmpyQlhZVzdhVzU2MDRIMFFoZUpqSjBxbzJWVFhOTGpxTlkwa0pWUldteDIyVXAyRFl2MXE1TXlLMmUwU0g1akhxWXpxekNiVDhjNTFQTG4xV3ZWY0VzeTJNbUhYNTk3WS95TklGbWFmbk5VL2t6QUpCM3hrMXhT''@;'; put 'put ''SlpqQ242d05sZkhhOTFTeHp0NCtEQk5jb0wrWm9BSFBnUzYwQWUwem5nQS95djNtZUY1QmVPTmNmbjVwOWx6Vmp2TGRIOVUxdjNXTGZ3R0hJcnJoZmNBeklRTTQwSVhPTXdGQlliWDRENmo5QVA5UDh6ME5GYnBhZHJQWVFZekljT2Mzd2pEOC9sSkw5QklBYzM0Tkp1TUJuQzFCRDFScXBFM0Zm''@;'; put 'put ''WVdvQUpucnJCWFRGRWlTVHRGSittVkduYnRXcm4xMXNWRnNBRVhhdkNJOVBQZWhkNGZ5dlVDWHBhWG5NMFVtSXlpam1wZ2ZUNHYzUVFmaStSNnZseGFjTDdFejhOK1V3NWI1dWVmZExMN3N6RE5DNVRIeDk3SlEyTmpoeWJ4d1JycEphd0xMNFR4blBTRG10eVp5VTNLbVFuZzhSZmI0UnA4OWxk''@;'; put 'put ''a241M2FXZmR6V3duMjcyRzJyM0ZadHZIWTZoQTh0eEtyQWc4NGZTRm5XejNNWkhCY2xzR2YzMkdzaTduNGdQNDRVcDJUdE9UT1NZNmlwN2JZWmR4dnZpdm40eDlkUU51ZDUrREN6V2NzY3R1cGZQd0JGMTRtNTZHQ3NINFY5dDZHeXVtNWZlNTJBVDNKWFM5Z29LWFVTcTRZODlUSzdXVXVCOHNy''@;'; put 'put ''NVlxOUpIOWNuRXV1Y0dKcjNnenE0NnA5N2ZrRDl4ODhkUDhTNlpIRVlYcDBlYnFQSy9lNWp5OHUzYnUwS0pueGZ3MmNIUmk0a3Q5RkNITVcvaDMwTzExWEM1cktUTHF4WG1jZ3RBQ1poUWVBaGpSYXZXYlpiQ0E2blJJS01JbEdRUlVNU0NiOWZvU1NMY25tcHBRLzRZL1gxVUIzWG5zZ0ZBZ1d3''@;'; put 'put ''THczaGxIek1sNmx0aldiYkRwWmhRdGxQSDdhZXpvWVBOTXp6TktiZTA0SEF5ZTdGVFV1WGFQS2M4YlhicWlyNld4S2RmSE01NDdHVkR2VDUwU2QvSXl2cEpwZDF1dkgyZDZtWlByOTRoYTY0RG0zZEcrbmVXd3VLOXQrUUtmSEdmMm1aRHE5eU9HbG45RWNYUm1lUG8vbWJJampqSDVUTXYzZXZP''@;'; put 'put ''MVlaeGo5VG5QNnRmR3hXTzB6bTJlVFBNK1BiS0Y5bnF0TDV6bkQ1M2tFeVhYVG5heHV1Z3Y5ZDhZVmo1V1hhWFQ2RXF6QnhZVkUwQlNBdWFEWlBsY0F6TThsMFBrdTd2ZHA4ZFpUZjlzMnVRSnYzV3JiWElHM2FyWmpyc0EyRFhtdWdEa1k4ZFAwSEsvVkFGN0ZKVUxOb2JkUkhrN2FycjFpbTZD''@;'; put 'put ''eiszMnJseW9aUDM1U3R6bjJiRHgweVJKeWViOVl6blVIV2dmakNvdTZXQVhSaXVYQWs2VzA0RkM5YzZLOGM1R05PeWVLdWlWRUt6QlFQaUswSmNtamZ0UEd2V1dqeWkyN0RidndGcTNZRWVOMjI3YTFIZDgxVTZDMm1tMmFIdnlaUzUwUDRMZktMTWN2SGh6ZkxzRWp2aFRlTWQxODE0eDJjNWFI''@;'; put 'put ''Tmx5NWMvNjVpamZQS3J3SmZMMjRBMjllVkhnVDYrczRiOVlBYjlLN0FxclFGek1XTnhhUXl3ekt3RVR2SXBTM0ZnQTE3S1NHbm55U0cyaVFUMDR6TXVnSnMvTzJITmhFYUJNTlBZaDVPMjB5Tlp2QTVXT2JMYTAwTkpZSUpoNU10b282N0hTYnFOZnBGWGZZSStySTB6c084RDc3MW4zd09PbTlC''@;'; put 'put ''NXV5NEhweTF5Q3d2UDVPbHRmZmdMNldLYTdCZXFIV1NReDZCeWFHWEZLZk5rZi9XbzMyVmlPR2lXTERTVkJjZ0dGYVV5Z0ltZ1Vkcnl6a3VYdklneFFzMWVmYjZBM2twcmRxbEtuZEhwNmxCcUlqcW1ZQ3hST1YydzJvbmhVYnVBRlROTEtoMllHU3R4WWd1Q25oNC9nVzJrMjA1MnNTQW1YVlJa''@;'; put 'put ''dXpDSnYxbzJsMW1VS2YyeGhnOU1mdXBHQTBtcFpwOUlvdE5Pb0ZHMFpndHV3c3QyWEp4Qlo3bCtjaHRPVHlFSTV1bzRkNHJQeXVYS3o4NkFoUzVUQzhuTXR6TUtHLzM1TER3TnF5ODIwV2x3ZVltN2ZMb3dBYjdCUGJ0bTNQeC9weDRXNGszNmV4aDkybkVhRG5NMDRRUndXd3JZVkE0c3hObHRO''@;'; put 'put ''UDhuSDF2Tk1FTFFLQlluL1F3ZThuWXRrRW04SVFtNjdmSVBlTTNqYXR0K1ZpRDQ0ajE4bjNjSkR6N05ZTlM2a2NiUEI1M1BlY1ZGL0t3ZWM2QUhPZEE3L0lqMjdpVXRwU3JJZE5FVEVXL0ZpSDZabE5FWHZpWjVGcjRGRThMQWQ3eStSS0YxcFpzazE4dDBwK1RXTzZ1ZXFUalNGZFk0Q1d1SVc5''@;'; put 'put ''b2lyRXZiVVNKWm1MNHBJNUZrUlMxNlVjenJ1dndiTE5CU3FLa3doN3hlNEtZZlRZeW5OZThOZ1dPdUsxS0ZSbTdtVzBJS0x2cVBKY3ppcDVMdkQ4M1Z2YThyT0hpOHJaQXhibmthcnRhaTVIWmdYZHNJV08yQjBlak5ZNlpGdHJTNTZiWFA5QmFXMkIyMXJ5ZVNOdnU2cTBCZC8zMnp1MGZVNXVT''@;'; put 'put ''K09CSDFhMVBadHJxMGRuZDJoN1VSa1g2OXNZM2JDNld1cFBGOUk0Qk0xSXB6VTdMQTdCQ21ESUFXcTlleGhSRjZJQ2UwQzU3a3BWRG12SWw4Ritma3Z0SzgwYlAwd3V2czI3UE56MExvL1B6SzcyajQvMWtZdDM3dDY5ZlIrNStpU0NiZ1dlT3kxWEo4bDlwSk9pdjZ0dmJMeC9kWlpjM0wzN1Ry''@;'; put 'put ''bVBFWHdGZVE3MlVjN0dOeEthano5aUFCVTV0RjMrZUFFeUI0VmNOcjRjY21KT3ljUGpsWTJPVkdscHl0RllNVkZMUnFvcVVnNlh5NUdxcUdMalRLS0hXS3dseE1hNVpHNzY1a3gvSmJzL0h5bVJhd2xHc0VPb1pMVUV6YXhYZW04T3phWmYxV0lCT0h3MlZ3UXF2SzJLQXZYOTlUZDFkVVVpblow''@;'; put 'put ''UmVvRTYvU0lqL1BkSVY0SS9jUHQ0anZ3ZVFMb2JXVkVybTBHMEVCWmpvZFF5b21XVkFPeFdHTURwTEpPRUFuMHp3YXVtQWk2TlhGVWczOE91Q2pMZjBGSGg3czhGbGg5aFVTRzNIRkxtZDdtVGRudzdlUUZHN21IanBwM1FzNEZWYVRrd0h0SmpZWkFlbUpOWnFrNkJmbGVWS3pTSU1NR01ReGZv''@;'; put 'put ''VUsxTUhJaWFmTW9WeS9TR2RLNHkvYmpBVjJ4MW0reHViYnBvMnNrKzI5eTZ0R1dHZE5xc0JRVVZYc003K0UvOURYdy91dkIvc0ZvSUVaWHlpZ0V0SUdlSXVyYW43YlpjRFlWYjlBZmxvZ2ljUGZDQlFmS0s0NVlQT2Q3SitLNVgrdG42ayt0ZkFxWUtzQjVLK0Yza0crdTBBcm0reEkyWGtsL2dn''@;'; put 'put ''VTFQVlZWNG5RY3RXUUF6Sng5dlV1UWo2c1YxTzhqSFZ4VDVpSHJSNHdodDAvWVlmdm90Mng3RFhhcTJxN20ySzdoL2kzemtiWi9MdFYxQlgrZis3Zm9nUGM5UW40VzgrVHR1UDd6NU85bCtpQUJNbVBuR1F6TE0wd3lHcUdCNHJQM3lYRDhGUUEzYng5cGZ5TVhhQzhiUXRqbVF2ZWk5TytpR1Yz''@;'; put 'put ''TG4wcjBIdU81dFJQOUdUTGpqcmUrQmYxV3F3UjF6U2h1aC9XMjBFZlJ2L2w1cDA0MC9neTZTendMTmxERjZHZHBjRU1mcHhhN0V5M2xzOW9YOEJmYms5ZzAzMkRQYkIzOFdmWnM4Q0N1MkFBWml2TGFOeEhLMWJUQW0vbXMyWmptOTBhbThFT2g4UXlHVHdJUmFvRGhnWXpkSWJSeGJ1K05Vc0c2''@;'; put 'put ''SGFWV3BQdlA1NFVmSWcwVmhQajgyejMrR2VkcHk4NlJrb2t5WVl2Rmh2QXZXWk5tcExvald4Yk82b0UxMThZKzMrbnp3cjRYK2V4ZytlZW52WHZqQThkUUxkUE5PZEIzc1BUZ3lSWDc0L3MrTWhxM0FJd2prUUdUOWQ1b3pxcitQMGdYVU9JdCt5Zk1jNHhhc0xlUi92a1NQZFdac05PbU02ajk1''@;'; put 'put ''WWkrd0NTYVRzR1ExRklrYTlWOUtTYjFGUS9aWFQzaHJrYllXNUwrWDBySnR1MjMrWXNxV3R1Q0JOSTJPWmpMS1gwNFpuUjJkMmIwcms4Mk1EUFRGdW1LZHpVM2IvaFVWeC8vZ3I2aFViZm85b0lLdGF2cVQvOElLSHNrcXY0eEVwZlBLMzF2NUsvb2g4YWY4NFpYODU0bUczQjloeWY4eEZneldm''@;'; put 'put ''UktYNEwrak4rWThBUVp6cks0THV3RjNnZnQyMzMzMzdqZGZ0RDl4d2NGcldRR3VRb0VUR0Z3NDdSWnJQL2pCM1ovKzlPQ0ZKK3d2dnN4MHdTL2tPM1NqYUNJeld1WWhHbnJIZ0lsWjZScFFjT0JiTHhzd01XSnNvclVPdVJvWE0wdE81UkVRK0I1RkRaRzYyaHFyTFFqT29OVWVMS0RCcTl4RlEy''@;'; put 'put ''SHdGRm5tU1NyWlNmS1ZsVFJoREpEczlyS1FLaXR2U2R3Nk5QYWVGZmZNSU5FTTd5OVp2bTFFTG1rWnVOYUxLNldYWUNHdDB2Y3Jic3BPc210M3U2OGU3Qzh1QUNYZWUxazdLMmdaNitvdks3SGIrZ2RtWlpubEpRNThQY2c1M1JPRTFoRFljN2Q3WDAvdjlXYUdESmd5QWtoZHI5VkxoTFUxK3BY''@;'; put 'put ''TFhXaVI3MkxRUDFWaUw5Q1MyRFozUFcyOUs2SGw4Q1h1U3ZqajNoMnZTcEJqOWkxVXh1T1lmT2J3K1Z3c3Y0WHFMdlpjZGM3S25sL01QUmV2UTl2Qm81V3IxTS96L2ZmS2ZpcC9mbGNPL3VneDVUNktQZVJkZ0FNdmlnTU9xbjAyRERqWTdHTXBpTWg3V0lITktIa1g4N2pVYUpFOXJuV2tRZzkz''@;'; put 'put ''djlRSWtsMnZlemZuUHJENVVuK2Jyd1A4N1UrcDF2RkNEaDhGUjNNNS9PZzh1M05Hb1lPazFUK20zQjZEYWQ0YnZOZHVmYTlkbTBEL0Q1RDhFaUlBQUFBQUFRQUFBQUVBQUE4Q0creGZEenoxQUI4RDZBQUFBQURUd1oyR0FBQUFBTlMrcE92L1EvN29CSFVEeVFBQUFBZ0FBZ0FBQUFBQUFIamFZ''@;'; put 'put ''MkJrWUdBKytlOEtBd1BMb3YvTy95dFlTaG1BSXNpQTBSQUFwZklHcXdBQUFIamFkWlEvYUpOUkZNWFB2VjhHUlJ5c1dGRnNhekhXSmtTYTF0aHF3Y1kweFZTVFNGdHJnMElYY1ZBUnNhQ3A0dUpTc1E0dTR1UmtFRjBzNnVSVy93emk0SzZUT0VsVVdtZ29XQXIxODl4bklqR0pDWWNmZWZuZWUv''@;'; put 'put ''ZWVkNzRueTVnRVA1S2xXcWtkeU1ockRHa0JRYjJJRGkrTWlEN0VicXhnU0M2aG53ckxmZXpYY1NTa0NVZGtDakZaajZRODh4ZjBKWG9sajJiKzE2V2oyS1hUMUNTNk5ZOWVQWVUrUGN2eFBQcmM4NXlyR1k1eEhmS1lyR0tyTjhXOVN0aXV6NUhUT1VSMWxieUd0SjZuaXZ6OUVXbXNJYU90Mk1L''@;'; put 'put ''YUpuUWZCcjNUeUhrZUZlTC9zMGc3M3VQenJGMnZJNlFMR0xFMUF3ZlFwdlBVRTJ6VVc2enpDbzZ6NWhXeVM3NmhSMGY4WHpLQnVCN0dYcDFCVm5leWxobXVOWWFJbkVPNzNtVHRPUXhqQ1lldzVML1hUcVJRd3JCM0J5a2JaNTBSTjQ5elpCWlpLYUZEYm5CZWpuMG0wT3dOb1VVajdHMGMyM1Fk''@;'; put 'put ''ZXVRdU9xVUZGOGl3dk1KQjg5M3RPWTJZMVNndldFc2JRanlMdUt2ck5vTDRpUUVaY09OUityWEhlZFZBZ1NiUy9EUHZxb1ExLzRQNVJ5NVNYNzNOQ0ZlOHE1VUdrWEUwLzZwbC90Rm5ubG5XZWRWQTNqeHB2WXo5Sy9yMmp2Nmx5Q0wxUmEveS9DdmUxY3B5WVRUL3FtWCttYzlHNjlmMnJLWDFi''@;'; put 'put ''dnRYYURuaXVWaS8rcURzeTVqYnB6RXRhM2JlWmRLcno2ejNFNzNySm4zeXFQWGhNc2djV0E0dEMzOTVCdTB5aUhiejF2cXJZOGpWRUtrd3NBSFJ3Q2J1eTl4YWR1cklMRnVlNnNoOHU0eFZhT2RqSHYySDlnNjRITm9abW4vbGQ4SHlXRXZMdUJTWVBkTlR4UEdkUEVFbHFEZm8xekRINENjcmE5''@;'; put 'put ''YXl6dFB5bnJJTWVNVS85dzFXcWNlQXhoSHpMdk1lYVNyZktZdmtJdmtJSi9VdDd3cmVTNEVDMzhNa2dsUlk1L3dmTGg4ZTUvSmNHM3l6eVA0R2o1Znd0QUI0MmtYQ1hVZ2FjUUFBY0x1dU03OHVNenZQMjNtZmVwOTVudi96N2tFaVFpSkNJcUluaWVIRGlCZ3hZc1NJaUlneHhoNUdSRVFQRVNJ''@;'; put 'put ''UnNZYzlEQW1KRVNFajloQWpJa1JpakpBaEVoSWlNVWFJak5qTFlQeCtOcHR0OForODdXT1hyU3NMVWRBMlZJVEswSDMzWHZkWmR3T0c0REE4REwrRkQrRmF6MmpQVWs4SllaQVVVclJqOWhuN25IM1ZucmNYZStIZXVzUHZXSEFVSEEwbjdrdzV0NTBsWjhXRnVJQnJ4clhtT25EZHVjUHVkZmVw''@;'; put 'put ''eCt2UlBmT2VEYytKcDRHaWFCSjlpaTZoTytneFdrRmJmYy83SHIwVDNtcS8zdi9HWi9ObGZYbmZuNEd4Z1pjREZUL2xuL2VYQjBjR2x3ZlBNUmlid2hheEhIWWVnQUphWUNXd0hiZ0pOSEVLWDhDUDhZZGdJamdhekFaWGdoK0NGNFJHSklrTklrOFVpRE9pUXR3UzdTZWpwSmZreUFRNVRtYklC''@;'; put 'put ''WEtOM0NUM3lTYjVHUEtHdUZBaU5CN0toSllwbU1Jb2lVcFNrMVNXeXRFUWpkSUVMZENBSHFIVFRKcHBNUjBXWVgwc3hTcXN4YWJZS2JiRWZtT3YyUnJiWWpzY3drMXoxMXlOYTNFZEh1RjkvQTYvengveEpmNkt2d2tyNFhLNEhyNlBRQkUwd2tSQUpCbHBSRG9DSXVCQ1dIZ2xkRVMzaUl1S2FJ''@;'; put 'put ''a3BzU0YySkVRYWxyYWtBK216OUZXNmttclNieG1SY1hsQ2ZpZnZ5b2R5UVQ2VkwrVWZjbE51SzA0RlUrYVVXNld0d3FwWEpWVk5UYXFUYW1aSWovWkdpYWdRTFdxejJndHRYZHZTY3RvbjdVUzcwTDdIdE5oQnJCajdFaXZIcXJGN0hkSlJuZEdIOUJFOXJhL3FPYjJrLzRxVDhXeDhMMTRIQ0FC''@;'; put 'put ''Z0RFeURaMkFSdkFZYklBOEs0QXhjZ3ArZytaK0JHSXlSTm1hTlBlUElxQm90bzVXb0o5cW0yMXcxMzV1N1p0bXNtbmZtZ3dWWnFFVlk4OWFTdFc1dFd2bS9hbXpBVFFBQUFRQUFBVHdBWWdBS0FEOEFCQUFDQUNnQU9RQ0xBQUFBa0FGQkFBTUFBWGphaFpMTlRzSkFGSVZQQ3hxSWhLQXhMcnBx''@;'; put 'put ''WExpVHZ5Z1lYR3JjQ0dva2xwMEpTQVZpc2RBV0UxL0ZOekR4UWZ4NUFqYytnMHVYbmc2M0NBWWxrMmErbVh2dXVUTzNBMkFOSDRoQml5Y0JIUEliczRaTnJzYXNJNDFyNFJqMkVBakhVY1NUOEJLTWljOHljNytFRXlocWhuQVNobFlWWHNHT0ZubW1ZR2tQd2htc2E1L0NxMGpwY2VGbmJPZ1o0''@;'; put 'put ''UmZrOVMzaFZ5UjBTL2dOYWYxeXpPOHhHTHFEQTdnWTRCNGVldWlneTVPYmVPUlhSQjRGbEVndFJrM3F1a3Jqayt1Yys4enltWHVMTEdxd21lY3BKeGVPcU1MZE5ubEU3VG01UTNMUXBLN0FuTHdhKzdqQU1SbzRJYzF6Mlo1eFdWekgvRlhKNHNxanFxZE9hazVWWGx6TjRueEZqVXRWMklGVE90''@;'; put 'put ''aFQ5WnJrTThiRFdKVnorNThlaFgwTnVLb2d4M0UzNCt3cTMvN0VOY3VZeTNXVTQwdFdoOUdBdXlQK2tVaVQ0eHpWN0t0Ny90VE16YjNqWDN2UnJSdmtGdDl5NkJCTU9sYVQvaDJwcU1sUlVyRXl6MVpndklKZHZwam8xWlJ4UTUzTkNnUHB2MDF2bjltUmF4MUQ3dlFZOHhoenZnSEZmWVZqQUFB''@;'; put 'put ''QWVOcHRrMWRzSEZVVWhyL2ZzWGZkTms3dnZWZkhYdmZFS1M1cng3RmpKeTV4N01SSnhydGpaL0Y2RjhhN2NXeTZCQUllUVBEQ00rVUpFTDBLSkhoQW9sZlJld2ZSZWFRSDc5d0pYaVR1dzN6L0daM3puelAzM2lFTGQ1MGJZQjcvczFTYmZwREZETExKd1llZlhQTElwNEJDQXN5a2lGbk1aZzV6''@;'; put 'put ''cCtybnM0Q0ZMR0l4UzFqS01wYXpncFdzWWpWcldNczYxck9Cald4aU0xdll5amEyVTh3T1NpZ2xTQm5sVkZCSkZkWFVzSk5kMUxLYlBleGxIM1hVMDBBaklacG9aajh0SEtDVk5nN1NUZ2VIT0V3blhYVFR3eEY2T1VvZi9SempPQU9jNENTbnNMaWRxN2lhbTdtQk8zaWY2N21XcC9tWU83bU51''@;'; put 'put ''M21lWjdtSFFjTGNTSVFYc1htT0YzaVZsM2laVi9pV0lkN2dOVjduWG9iNWhadDRtemQ1aTlOOHo0OWN4d1ZFR1dHVUdIRnVJY0ZGWElqREdDbVNuR0djN3pqTEpCTmN6S1Zjd21QY3l1VmN4aFZjeVEvOHhPUEswZ3hsSzBjKytmbUx2emtubEtzODVVc3FVS0VDbXFraXpkSnN6ZUZYZnROY3pk''@;'; put 'put ''TjhMZEJDTGVKMzN0RmlMZEZTTGROeXJlQnp2dEJLcmRKcXJkRmFyZE42YmRCR2JlSSs3dGRtYmRGV2JkTjJGV3VIU3ZpRFAvbVNyMVNxb01wVXJncFZxa3JWcXRGTzdWS3RkbXVQOW1vZlQ2aE85V3BRSTEvempVSzh5MmQ4d0lkOHhLZTh4eWRxVXJQMnEwVUgxS28ySFZTN09uUkloOVdwTG5X''@;'; put 'put ''clIwZlV5d004eUNNOHlrTTh6RFhjcGFNOHc1TThwVDUrVnIrTzZiZ0dkRUluZFVxV0JoVldSTGFHL0hXalZ0aEp4UDJXb2E5dTBMSFAyRDdMaGI4dU1aeUkyeU4reTlEWEdMYlNTUkdEeHFrS0sra1BlUmEyWVg0b2traGE0YkFkVCtiYi8wcC95TE95UGF1UThiQmRGRGFIRTZPamxra3RITTRJ''@;'; put 'put ''L0MyZWU5UmppK2NUTlN4c3phd2N5UWg4YlZZNGxiUjlNWU0yMHk5bTBHNWV4bDBVdG1kNnhETTkyazE2M0lXL3c1c2hZUmpvT0oyS0QxdE9halJtcFpLQlJHYms2elFkSE5PaE03T0RrOW1oMDNSd0RMcE0xWmdMZnlvZUxTbXRESG9zODNXYnBLU1pwc2ViSm1XWTArTkU0OE01cWZRejBQT2Z5''@;'; put 'put ''Vktaa2IvSDI4R1VZVUZ2T09xRVU2TkRNZnRzd1hpRzdzdlFFOVBhMTI5bW5IU1Izejk5MnBQVHA1MmVPRmhXNWJJc1dPbnJIWGFzcVdzMWJ0QnJITVpkNVBWR29yWmpqMFhIOHNiUHEzUmRhYWkrMm1PTnh3YVBqYjQrWXpUaEl2MDJXRklTOUZqbXNkeGpoY2RLdzJCVGRpamxKTnlnb3FraHh5''@;'; put 'put ''cTJZc2w4eTUzRlNQZnVwMldSTmYzWjZUaGduUi9RSkxyZDA3TEErMzJNTnZ1YTFubFcralJNY2pJYWk3akp1ZGJZMUI1RmJDY3ZZbnZxSDdkbHR5RUFBQUI0Mm1QdzNzRndJaWhpSXlOalgrUUd4cDBjREJ3TXlRVWJHZGlkTmtreU1taUJHSnQ1T0JnNUlDd3hOakNMdzJrWHN3TURJd01ua00z''@;'; put 'put ''cHRJc0J5bVptY05tb3d0Z1JHTEhCb1NOaUkzT0t5MFkxRUc4WFJ3TURJNHREUjNKSUJFaEpKQkJzNXVOZzVOSGF3ZmkvZFFOTDcwWW1CcGZOckNsc0RDNHVBUDRjSldBQUFBQUFBVmlZOUd3QUFBPT0pIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbH1A''@;'; put 'put ''Zm9udC1mYWNle2ZvbnQtZmFtaWx5Ok1ldHJvcG9saXM7c3JjOnVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxkMDlHUmdBQkFBQUFBRmFFQUJNQUFBQUFvdUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBQnFBQUFBQndB''@;'; put 'put ''QUFBY2ZOSDU1a2RFUlVZQUFBSEVBQUFBVFFBQUFHSUgxUWY4UjFCUFV3QUFBaFFBQUFjWUFBQU9ka0RDZnBaSFUxVkNBQUFKTEFBQUFDQUFBQUFnUkhaTWRVOVRMeklBQUFsTUFBQUFUUUFBQUdCcEVxOEpZMjFoY0FBQUNad0FBQUpzQUFBRG5uZEREN0ZqZG5RZ0FBQU1DQUFBQURBQUFBQThF''@;'; put 'put ''aEVCOFdad1oyMEFBQXc0QUFBR09nQUFEUloyWkgxMloyRnpjQUFBRW5RQUFBQUlBQUFBQ0FBQUFCQm5iSGxtQUFBU2ZBQUFPTXdBQUc4a0hkN1lsMmhsWVdRQUFFdElBQUFBTmdBQUFEWUxjNGdSYUdobFlRQUFTNEFBQUFBaEFBQUFKQWVSQkNCb2JYUjRBQUJMcEFBQUFvd0FBQVRhdVk0MEoy''@;'; put 'put ''eHZZMkVBQUU0d0FBQUNkQUFBQW5yVSs3bjJiV0Y0Y0FBQVVLUUFBQUFnQUFBQUlBS1VBMUJ1WVcxbEFBQlF4QUFBQVk0QUFBTjZNZ2lJV25CdmMzUUFBRkpVQUFBRG9RQUFCaUdYRmoyS2NISmxjQUFBVmZnQUFBQ0JBQUFBalJsUUFoQjNaV0ptQUFCV2ZBQUFBQVlBQUFBRzluaFltQUFBQUFF''@;'; put 'put ''QUFBQUExRkcxYWdBQUFBRFR3WjJHQUFBQUFOUytwdlY0MmcyTVFRcUVRQkRFRWtmME1MUG9mN3lwTC9Eb2ZYZlYvei9BSWdSQzBUUUNMUjZjZEZSa2pWc283SHpUdjFENEI3bTQwNDhET2xvcE5sdjY0NVNlWFhMVDUxc1h6U2ErVzNBRjNBQUFBSGphalZjTmJKYlZGWDdPdWZlK1gvc1ZhaW5s''@;'; put 'put ''UitnWUlZUWhhVG9nVEpRZ0drWTYweFJVeGx3MWFMYnBuSU1oakRIQ051Y0tjMkFXQXBzL1hTVUxRKzEwa2dxc0NuYldrWVl3UnR4Q1pCTERvREFHRmFweE1vUXRCcFYzejN2ZUQvdld0dE0rNmRQVGMrOTczM3ZPZWU1MzdnY0JrTWM0MUVMbTFOUXRRQkU4UFloak9QNFJLTnppYnk2L0R4Vkx2''@;'; put 'put ''cjU4TVNxWExGNnltTE5CZnpLYXpralk4Yms4aG1NTUpwakhZVHpxWEVzNkdpMnpWU1hhZ0lnUHllQVZmR0tVK1FJcVBvS2dKdDVBRHBpSjlmZ1FzWXlDY2h1Y0p5T2xFeVVZeEoyZGpUdmlaK1BEOFRFTThCT2ZHM0RrVUwvZUxsVDIrdit0K0pFQlYzaHp3SkdqQTQvRSt3WVllVFkrSHJjbitK''@;'; put 'put ''ai9NSC8va3FEdjIrUFg0bzN4UnVaMUxETTlnZG42SEtHb0podytUM2hNSlFLK1FFU1lUdVJ3TFZHRUdVUXhjenVUbFZwSkNGYmpaNXk1amdqTStIcjZkeEtDRnduQkh3akZRY0xqTmNMakdCRndpb2p3QmhIaERCSGhMSkhET1NLSDk0bGlWdTlEcmhZVGVTbVRNaFJMdVpTVEs2U0NQSXFWelhQ''@;'; put 'put ''dHlWVEplRDR6aVJEYmQ3cGp0UjA3MjdHM0hRZk1JWXBRUXhUalJpS1ArVVFKbHVMN1hDR0pKTEpJSW9za1lDTWU0L3hHb2hpL3dpYk9md0svNWZ4bmlCSnNKM0xZUVJUaDkwUU9yVVFSbmlkeWVJRW93aTZpR0cxRU1YWVRlWFFRZWV3aDh0aEw1UEVuUXZCblFpdzdFWTRUSmZnbmtlWkZMUzlx''@;'; put 'put ''ZWZHV2wyQjVDWllYYjNueGxoY3ZJMlFFODNXbFhFbE9jaFM0YWpVek5JRTFybVp0cDdLbTA1bVpHY3pJVWl6RGQ3RWMzOE1LMW5JMTF1Q25lSkJaV01mb3R6T2k1MW5KRjFuQmc2emNNVmJzRFZicUxIZnl2cDJzTXI2M0lqbGYrb0NkdzMyeW5IRVBwcjdhcWJ1TjhYLzZVYXVOOE8rWkFVZmVK''@;'; put 'put ''QzcwOCtUNVR6cFBjV2Y4ci9nZjhTTTlKeTk3MHVJejhkWjQ2MGYvZFdlZnQyZVVKempSaEpnbUZGOGhIRzRqUEc0bkFoWVNFUlh4R09ja2FoQlRnNW9hRkMxRWhHMUVaSlVXcTdSWXBjVXFMVlpYUlJmaGNKcHc2Q1ljUGlBQ0xoR1JESkVock90UUdVb2VKc1BJU1VYRktpb3lXa1p6ZlVVVnJp''@;'; put 'put ''QktNSVFZWkVvWFU3cWEwbDFCNlY4aXNrcjNGaytVaVNkblNuY0ZwZmRvM0Z0VTNxTEtXVlNYbFo1cVBGWDNTOFRBdWs2aTlhWlpMVVNZS05kWm5EblRyelA5YWlIbVJNVmFpRHpSc21iaXp5cmFXUlp5TWxtdTVkdVRUNjhhUmppZjlicU5jUzFrSkkyTXBBbVBNNW9uOENTZVFqTWplb2FSYk9O''@;'; put 'put ''cGJPTnVPN2pMdmR4ZEYydlF6WjFkNGc2RzhtMGorSmJSWEhHTTZWbFJhaDJsUFA0SjdYTE13L1cweE96cjJZazZvekhrazh6L0hsa3I2K1ZoYVpMTjBpeGJaWWZza3BkbGoreVhBM0pJanNnSk9TMXZ5N3Z5bmx4U3Iza3QwK0ZhcWVOMG9sYnJOSjJoTjJpTjF1bDhyZGM3OVc1ZHBNdDBwZDZ2''@;'; put 'put ''YS9RaDNhQ1A2aWJkb2s5cmk3WnFtKzdXdmZxS3ZxcXZhNmVlMUc1OVJ5L29SUWNYdVVHdTNJMTBZOXg0TjhsTmRsZTdtVzYydTlITmN3dmM3ZTVyN2g3M0hiZmNyWElQdUFmZHo5MHZYS1A3dFh2Uy9jNXRjeSs0bDF5SDIrZis2djdtRHJ2anJzdTk1Zjd0L3VzKzhPcUxmS212OEtQOFdEL0JW''@;'; put 'put ''L21wL2hvL3k4L3h0ZjVtZjZ0ZjZML2g3L1gzK1JYK2g3N0JyL1hyL2NPK3lXLzJ6WDZyMytGMytaZjlIci9mSC9DSC9CRi93cC8yYi90My9YditVdkFoSDhyQzhGQVp4b1dKb1RwTUN6UENEYUVtMUlYNW9UN2NHZTRPaThLeXNETGNIOWFFaDhLRzhHallGTGFFcDBOTGFBMXRZWGZZRzE0SnI0''@;'; put 'put ''YlhRMmM0R2JyRE8rRkN1QmdoaXFKQlBCMnJkRHU1d1hpMmNhMXhVOEpZWjl4cW5qWEdqUm0reFhpSzhTeGpXNDExU3V6NnpHcVRsSitwY3BWeHRmSGNoTEhhZUtlMmt4dk1mMTBQNDVUeHhjeFR6Y1pWeHFYR3Q3aEY1QmJqVmYyem5zdkVXR3YrUG93N2pOdU4xL1d3M0pYR2J2WVM0LzNHalgw''@;'; put 'put ''NXpjQUFPNmszbnFRZG44VDZ5MTY1NnVpUDhWWGpuY2FyZTVoNSt6VDhmMVptYm50NFZXYlB2ZXhNVFJ2TWY1WDVzL1pzeStGdnpMNHJrL24wTGIxc0cwM3JtL1UzbVQwM3RXMU9xcG0wT21uVXFUNExkc0dmekdrMWU2ZGJlVm05QlkxMW1uMDBzUXMxVFhPU2Fqdk5UTmJmbUxFUG1kMWdOVHBx''@;'; put 'put ''T2ovVm8wQnF0ZVB5aVVCZi94U3pMNmEyelVsVm5mV25KMmhXUmpQVm1jeW45ZzZ6RjJXcVlIblRTdk0zbXo5VldsWEdUck5hbXNsOFgvdTgyVCt5Nkc0eSsrOW1aMWV1amJjbEs4ZlBmYXhTMlRmT0xaenVqay9CdldjcVBtdjNVdkRlTlpGWlNXNm5ubDI3aWwwd3VXRkhtTUtiV0E3VGNBMTdX''@;'; put 'put ''Tks1UzltM3IyTlBUenIzRUx1amxsdm5Ic3J2VmJYc1EzWEVNTnpFUGplY25lNVdmdmVwSnlxdGwzK0dYZThPZHEybHZMdU50ZHZiZEhiMHpWeHZDenZmWE90OVgyYjNhMmVIL0NNTzRGdTgwWjNGRCt4VzJZVHpFdkE0Ty9Gb3RGaFBiZU4rUmE2dzcyWVJKRjVoS216QVBlUzE3SFlsR01sM2pX''@;'; put 'put ''ZEVrM0UxZHoyYnU1eUhCUnc5YU5ydE1qNXRiR2NHUnpKODFQakh4czhabjdDc2pUTzdCRi9rZSs3RnR5VW5SVklzZVNtUndWTGFkMGYvQTNJRm9iY0FBUUFBQUFvQUhBQWVBQUZFUmt4VUFBZ0FCQUFBQUFELy93QUFBQUFBQUhqYVkyQm04bVdLWUdCbFlHSHFBdElNRE40UW1qR09RWVRSRE1o''@;'; put 'put ''bllHZUFBeVFtQTBPb2Q3Z2Znd09EZ3VvZlp1bi94Z3dNek9jWURSVVlHQ2FENUpoWW1kWURLUVVHSmdDOGlRb3JBQUFBZU5xMWsxbFFqbEVjeG4vL3QzMFJLaFQxOXZacDAwYWlGRVgycGNpK2xLelpzcS9aR3VzUVEwVlN5SjRrb3hrVFUxTzJHKzY0TldPTXZzK1ZXKzRNSGNkWFREUE11SEpt''@;'; put 'put ''M25QZWM4NmM1NXg1bnQ4ZmNLSHJDMEYwajFUcW1Uam5ybEtzeHlXTXc0MkJsSENMT3U3U1NCUE50TkFtSGhJZ2d5Uk1Ca3VjSkVtcXBFdW1USlVjeVpOQ0taSVNJOVY0WmJ4M2lUS1BtNjNtRS9PTDVXNEZXc0ZXcUdXem9xeGhWcnAxMytZZitVMHBmWWZGalI3YWoybmptZmhLZnpIRkpyR1NL''@;'; put 'put ''Q21TSmhtU0pkbVNLd1d5UVRacjdaZkdXNjE5eUd3eDI4M1BsbUVGV0VGV2lGTjdxSlgyUzF0OVZDL1VjL1ZVdGF0VzlVZzFxNGVxU1RXcUJsV3Y2dFExVmF0cVZMV3FVcFdxUXBXcE02cFVuZWg4MDVuVm1mVDlrNlBjVWVESWQ4VFlCOXI5N0Q1Mkw3dWIzZWo0MnZHNTQvQ0hrSGZKWFY3OXAr''@;'; put 'put ''WnVlRHVUNEk5YkJLUDd6L2lIUnRkSkYxeDFkdTU0NElrWDN2amdTeS84NkUwZit1SlBBSUgwb3o4RENDSllaenhJcHg2S1NaaE9KQndiZzRrZ2tpaWlpV0VJc2NRUlR3S0pER1VZU1F3bm1SR01KSVZVUnBGR09xTVpRd2Faak5YTVpER2VDVXhrRXBPWndsU21NWjBaWkpQRFRHYVJ5MnptTUpk''@;'; put 'put ''NXpHY0JDMW5FWWsxYUh2a3NwWUJsTEdlRmZ2OE9kcktiWWc1eG5OT1VVMFlGNXpsSEpWVlVjNUVhTG5HRnk5UnlsZXZjMUJUOVpQUTJEWnFsZTVxbW4yMFZxN1VkMFd6Z2JMYzM2MW1qKzEyYytPMVc0VjhjdkVBOW0xblpZMlV0bXlSR2oxdll6akhzT0NSYzh4a3BVYm9DSXJpamR4NmdhWllF''@;'; put 'put ''WFEveDNXZUtuR0hFc28yOWJHVWZlempBUVYxTCt6bkNVYjExbUZKT2NaTFh1cHA2c1U2OHhGdDgyQ2grbW4vUEg1RE5xdWg0Mm1OZ3dBTEtnVENESVlOcFBRTUQwMjRtVmdhRy95SE0wditObVhiLy84SjBqMG53LzVmL2ZpQStBT1lMRGdwNDJxMVdhWGZUUmhTVnZHVWpHMWxvVVV2SFRKeW0w''@;'; put 'put ''Y2lrRklJQkEwR0s3VUs2T0ZzclFXbWxPRW4zQmJyUmZWL3dyM2x5Mm5Qb04zNWE3eHZaSm9HRW52YlVIL1R1ekxzemI1dDVZektVSUdQZHJ3UkNMTjAxaHBhWEtMZDZ6YWRURnMwRTRiWm9ydnVVS2tSLzlScTlScU1oTjZ4OG5veUFERTh1dGd6VDhFTFhJVk9SQ0xjZFNpbXhLZWhlblRMVDEx''@;'; put 'put ''b3pacjlYYVZRb1YvSHpsQzRFSzlmOXZNeGJUVjlRdlk2cGhjQVNWR0pVQ2dJUkoreG9rMll3MVI0Sm1tUDlIRFB2MVgwQmI1cVJvUDY2SDJKR3NLNmYwVHlqK2RBS2d5Q3d5TFNEUUpKUjk3ZUN3S0cwRXRnblU0amdXZGFyKzVTVkx1V2tpemdDTWtPSE1rckNMN0VaWnpkY3dScjIyRW84NEM5''@;'; put 'put ''SWxRYWxaL05RZXFJcG1qQVF6MlVMQ0hMWkQrdFd0Qkw0TXNnSGdoWldmZWdzRHExdDM2R3NvaDdQYmhtcEpGTTVES1Vya1hIcFJwVGEyQ2F6QVFPVW5YV29Sd2wyZGNCcjNNMFlHNEozb0lVd1lFcTRxRjN0VmEyZUFjT3J1TFA1YnU3NzFONWE5Q2U3bURaYzhCQjNLQ3BOR1hGZGRMNE1pM05L''@;'; put 'put ''d29LVEhTOVJIUmt0SmlZR0RsaE9VMWhsV1BkRDI3M29rTklCdFFiNjB5aTJKZlBCYk42aFFSV25VaFhhakJZZEdsSWdDa0dIdkt1OEhFQzZBUTN5YUFXalFZd2NHc1kySXpvbEFobG93QzROZWFGb2hvS0drRFNIUnRUU21oOW5OaGVES1JyY2tyY2RHbFZMeS83U2FqSnA1VEUvcHVjUHE5Z1k5''@;'; put 'put ''dGI5ZUhnWUJZeGNHcmI1ek9Ja3UvRWgvZ3ppUStZa0twRXUxUDJZazRkbzNTYnF5MlpuOHhMTE90aEs5THdFVjRGbkFrUlNnLzgxek80dDFRRUZqQTFqVENKYkhoa1hXNlpwNmxxTktTTTJVcFUxbjRhbEt5bzBnTVBYRDhPaEswS1kvM04wMURTR0ROZHRodkhobkUxM2JPczQwalNPMk1ac2h5''@;'; put 'put ''WlViTEtjUko1WkhsRnhtdVZqS3M2d2ZGekZXWlpIVlp4amFhbTRoK1VUS3U1bCthU0srMWcrbzJRbjc1UUxrV0VwaW1UZTRBdmkwT3d1NVdSWGVUTlIycnVVMDEzbHJVUjVUQmswYVArSCtKNUNmTWZnbDBCOExQT0lqK1Z4eE1kU0lqNldVNGlQWlFIeHNaeEdmQ3lmUm53c1p4QWZTNlZFV1I5''@;'; put 'put ''VFI4SHNhQ2c4ZHNIVHBjVFZVM3hXaTRvY214emN3aE80QURWeFFCVmxWSkxjRVIvSnNEajZ1VzVwelVrNk1SdG56WW1LajBiR0FUNjdPek1QcTA4cWNWcjcreHg0WnVWaEk3aWQreHJuZVdQeUQ0Ti9peGRsS1Q1cFRuQndwNUFBZUx5L3c3Z1ZVY21oMDZwNHBPelEvRDlSY1lJYm9KOUJUWXpK''@;'; put 'put ''Z2lpS0d0OTg1UEpLczFtVE5iUUtIMDhFT2l2YXdieHBUb3dqcFNXMHFFa2FBUzJEcmxuUU5Pcno3SzFtVVFwUmJtSy9zM3Nwb3Bqc1JSbk1nQ2tvNUtheHNPenZwRVJhV0R1cDZmVFJ3T1ZHMm91ZUxEVmJWbkdGdlFmdlk4ak5MSGszVWw2NEtTbnRSWnRRcDd6SUFnNjVrVDI0Sm9KYmFPK3lp''@;'; put 'put ''bUpLV0tnaVBnaHRCZnZ0WTBRbUxUT0RMb0VpWkhHeXNnL3RpaDA1b29KMkF0OTYwaXJ2MjBMdHozWHlJRENiblc3blFaYVJvdk5kRmZWcWZWWFcyQ2hYcjl4Tkh3ZlR6ckN4NWhkRkdVOHVlOStlRk94WHB3UzVBa1pYZHIvdVNmSDJPOWJ0U2trKzJ4ZDJlZUoxU2hYeVg0QUhRKzZVOXlJYVJa''@;'; put 'put ''R3pXS1VSejY5YmVESkZPU2pHUlhNY0YvVFNIdTJLVmQralhkaDM3YU5XWEZaVXNoOWwwRlYwMW03Q056NWZDT3BBS2dwYXBDSldlRHBrUHB1ZG12Q3hsTGdzUmR5elpOZEY5QjA4SVIzaXZ6akV0Zi9yM0hJVTNLTEtFbDFvMXduSkIyMGZLK2l0SmJ1VGh5cEdaKzI4YkdlaUhVazM2QnFDbmtn''@;'; put 'put ''dU9QNWU0QzZQRmVrVTd2UHpCOHhmd1hibStCaWRCcjZxNkF6RUV1ZXRnZ1NMS3Q3U1RxWmVVSHlFYVFud1JkVkNzd0o0Q2NCazhMSnFtWHFtRHFCbmxwbFRBVmhoRG9OVjVqQllZdzZEZGJXRHJuY1o2QlVnVTZOWDFZNlp6UGxBeVZ6QVBKUFJOZVpwZEoxNUdyM0dQSTF1c0UwUDRIVzJ5ZUFO''@;'; put 'put ''dHNrZ1pKc01JdVpVQVRhWXc2REJIQWFiekdHd3BmMXlnYmExWDR6ZTFINHhla3Y3eGVodDdSZWpkN1Jmak43VmZqRjZUL3ZGNkgzaytGeTNnQi9vRVYwRS9EQ0Jsd0EvNHFUcjBRSkdOL0dNdGptM0VzaWNqelhIYkhNK3dlTHozVjAvMVNPOTRyTUU4b3JQRThqMDI5aW5UZmdpZ1V6NE1vRk0r''@;'; put 'put ''QXJjY25lL3IvVkkwNzlKSU5PL1RTRFR2OFBLTnVIN0JETGhod1F5NFVkd0wzVDMrMG1QTlAzbkJETDlsd1F5L1Zlc2JCTitTeUFUZms4Z0UrNm9uYjVNcXZObjFiV3BkNHZTVS9YYm5YZlkrUnRsTTdvc0FBQUFBUUFCLy84QUQzamF0WDBKZEZ6RmxXaFZ2ZTczZWxPcjk1YlUybHE5U2QydDF0''@;'; put 'put ''SnF0ZlorV216dHEyMWsyUmF5c0MzSjJHQmJack94TWVDUUJRSWhKTTVrZzRTUVl6SWhZSlpBSUNReldTWWh6b0ovZnVZUEp3bVRTZUNmSkgreVRENGhrOG1BbnY2dHF2ZGFyYzA0ODgvWVVxdjd2VnYxcXU1K2I5MnFSaVkwdlp6RUh4ZDhTRUQ1eUkwS1VRQlZvUlJxUnUyb0R4WEtucTZPdHBa''@;'; put 'put ''MFl6SWFDWllWRlhqc05xT09JRk50VE8rMyt5VjMwaDF3SjFPQlZESWxzYjhTdk5XdTBtdjBMNzBEVjFMYWV4V0dOVWduVS9qanlqZHgreHVkWGVlN3VzNmY3NnJ3Kzd1NnV2WjMrZTg2djcvQ3Y5OS8vdng1Ly83OWQyM2RlbjV1YS9rUGhGOTMrME4rK0xsam9XTHIxdUFzdk52cWIrdXEySCt5''@;'; put 'put ''eVZzemR1elk0OGVPamRYTSsydjg4SU1RUVZ1WDMwU3Zrd3RzYmlHNUFtR01waEZDMWtGRWlEQ2p3NExnRllaME9sMit6aHF5Mi9TU04rWk1DZ0ZQT05YUW1LejN1RjFpWVBTK2t1MkdSS0tpTEZGZFRpNG85YityOFpjbEVtWCtHb1NXbDFFblBvY2ZKaGRzRmNpRWtFMkExMWNSZlc0RnZOd096''@;'; put 'put ''L1doTXRRdmI4MFhDZElMQkJPRUQ1aXgwV2dkdE5yeUJFa3lURnRNeEdDd0Qrb3dJZmxrQ0tHeTBwSmlhT1VyS2l6d3d2T2Q5dXcvcVNTR3BhUVVrQUpwOXB0T3N0K2t4SDRsZXBPUStFSHZRblE2ZWlaNmRYUy9aMzk4empNUDc4N0FsWG5QdDg3RXorREhIOThGQ0QyLzYvRmRuNE4vdXg1SGdK''@;'; put 'put ''bXk1ZWRJTC9rektrRkJGRU1KT1JhTCtzdUxDcjBlbDkxc01raFdSUENBSGlQY0QvUENCTS9DQkwxb3FOUnVGd0JkUVJHSW5BcEgwaDV2S29FQmJXbWd0Y2NyaFNQdVV1eEdjTldLM1k3R1ZBTmNJTDBuRHUxKzk3NitnY241K2NVOXUyKzR1cWRuNE5oeDVWZzRHb3kvMmxqVGRHUlJrcnR0dTZl''@;'; put 'put ''Nm5kLzA3WmdZWHpTM2Qxakc5N1RhdmxLMDh5cnNET2FmTjlhVUtrZnJLL3dSMjlOSWo2cVcvMTJ3a21lQnNrN0FjZzFxUmQ4ZGZMSmdiS2NjTTJPOUNXTlJqK2VSaUF4RzBiQ0FkRG8wUXpDbGZCN2dYNWl4U0VRUThvVWgzK0NURVdoU2M5a21DRUJaTzJuR2dpWEpLdzM1NU9RR0xRZ0JXTm9N''@;'; put 'put ''YmR4cWFrb08xOWFXbDd0Y0NOVzIxclkwTnBUWGxDY3F3NjR5VjJsUmdkTmh0OEZrckdHcjVJNDVLREk3Y0xJZXNPaXk0Z0JPNGdCRFk2QkNkTHM4U2JUbWZnZGV1ZmVwb1doMHVMWnVPQm9icXNQdjM2T0U5aXdtRW9GZ2RTS0E1NFppY0xGdWlONEtKbW9DQVhweEtqRmFXemVXU0l6QmF6Vyth''@;'; put 'put ''bWtjZnpZZGl6ZWxxMk5wWlNJeFdsYzdWbFBESUFiVDhWZ1R2WVVvMy9pWC8wamVSYjZFeWxFY05hSU91YlUyRVM0cktTNHFNQmtGVWc2OExwQUJ5dGQ0QnNUT002Z0hZV09ZQWVhcHJ2YjdxeHVyVS82NFB4YXZFQ1ZQVEI4UkF4V2NnWEpuQnJlOGpXbXZLSGtSblpxWFQ5T1JEa2VBcldDcXBI''@;'; put 'put ''aGthckZ6dnFWdnRMaWdicktoWVh2TjBMYjZ2cXFTNmJyRTljb25FcDdDdHBwb21Ta3oyUk9MOWRUbGpZL1ZUclYzVHdjck84T0prVVQxY0UzellMaDFxSDBndms4K1RscmlnY0xhMG9KNG9LSjY2UytwM1dNRnpjRzZGb1F3bFhIMExaQmxDM0xLTnFwQkdIbnhrRHRJWU9DT0ZWMGhCYTV5UjN5''@;'; put 'put ''K0NQQTdmdlZ3MEZkWjZRc2U3a1cwajhibHEvQVkrUXJLUStJemVYcGNHMk1xSnUxbHMvQktuMXRjUEpnWkh4NGV6K3o2K2Rtei96TGV0ZTNDa1NOUGJPdG1iY1BRVnRiYVN0Q1dZeUdTNWdnS1R3d1BUMlFPUWcvejI1NDRjdVRDdHE0eDZPUG5ZNnh0QXUvSCs4amZvWG1VbGh0bWhucWFxZ0NY''@;'; put 'put ''TUljQkFXTWRSaURXOHlMVzY4a004SzVIRC9vSElPZW1KdVdPdXBxQVB5WlJSb1NCcGh2VG9nVC9BeFhoQ1AvWUNCVGc3eW1sdkI1dktmYXl6eG9xUktrUmJxWHBSeSs3WU1VU0pTYUZkTHZnVTZBQ09ramdDTDhnQmw1MG1VV1NWeEJ3NlkxR20wNXZMWWlXVzYybDFWNnJYbWMzaUFadmhXUTNF''@;'; put 'put ''OUhzeXJPNlRGZ1U3QzRoNE9DZ0JzbGVyUzl3dXdwcVhaSWhCMW9Rc1FsRVk3L0Q0a3VVNWhzOWZyUE9hRFNZSElhOFBKTW9tdktzQm9kWk1waDAxbkxSWnNndlRmZ3NEb2ZGVmFzcmRPYzVoRElUQlRZYThuV21mQ0lhamFMTm9yTWFEQ1lOM2wyb3EzVlpIQlRISFdpV0ZKSTJaRVpoT1lCMEF0''@;'; put 'put ''YnRBRjRIellFRmRBRFVBWjVHZ090aHBzUnRvbFFVd3dGcURWUFVLaVpKNFpldSt4TDg0S0lYWGxqNDhwZHBmNW5sUmZRTDlFRmtSVjRaeG85Nk5aNER3UWs2S00rQlNGVGs0SG84WVNtclRwU0hFOVhKYXhPMU5lWGxpZmJheXUyTnRLODY5TSs0QS9lQnRCYklia1E3MmtINUFrYUVZRVEyMnBu''@;'; put 'put ''VDcvYlg0VHpsajdqdkVPT1pkckNaUDRIbm02bjFwMWRBQzJMc3haUTd6TWdVRklBcmNpM2tJZFU2V3JLV0VTLy9adms1L0IzeUszaXVYYmJTVHMvQ3MyL2dENlNxREc4NXE1dy9TMzcxOWlYRTdHWGQ4cHZrSHZJaXFMOHlGSmVyZ0J2WmpMbld3R0NvMlFCc05qQ3laYmJTQWcvVGsyQjZZcnEx''@;'; put 'put ''ZXBDa0doTEFYRlN3U3VGSmhydUhoKytlbkh6ZjBORDdKdXRINC9IUit2cXhlSHlzM3JMN00vUHpEKy9lL2ZEOC9HZDJMM1pjdjNYcjllM3Q5TFdENFlBU05nMHlMeUtmWEFDa0ZBQmZBMXlyWTV5UGgreE9oam9wa2s3YUF5L2VsUHo2L2xPa2JIRG4yYVZ4eE5ySFlWSmhtRThCaXNvUnN3bW1B''@;'; put 'put ''OXhBeUFCREoxT0gxQUdaUnN3RzJiM0JzRTRxaUdXd3BzV2xTS09xLy9JeGtLZDZTVzdjVXB2Y1Zqays5MkRQZFpuK3lmdHhXcEhtdnB2Y0hxdHBxYXNkZkhmak5SMWJidTYrWVpFOXV4UndHWVZuVjZHTTNGWllBTStwd0pqQTAyRUlBOVNHZzBFL0FFL1d6UUJ6d2tBUTBzOVFKZUJsOGwrRktv''@;'; put 'put ''TkJmekFrU1lWQVphcGtrdlhNN2tpcHBLZHg3ZkFrRmUzL2VIZDhLTFEzM2Q0MzJEODgzTkhYMTFRM0hoclkrOG0rNjl2N1d0cTN5emNNV1RLcGlhcEVVM1dpQmgvR2RmRm9LbDQxZEtKMlIyUGJoTjI2dmJOMWR3UG5nMUo0MlFsNE40RzJxNWFqRnZBMzhJQ29oemxnQkg3bkhLQ09tZGg4M1pE''@;'; put 'put ''WmJNNHo1NEZNT1d4MHJDRi9CQ2Z0MVBNTUZHSUJuMVlldCtDdDUyWm1UdjNrM0N4K1FSay9kQTVJR0ZGK3pPa1RBeHcxd0hPS0tZNGNvQXZ6TEVTQXpyRWVBWTUwQUtFRHV5NElaSm9iOWRVNEFnK3R3dTRNQmhpT3dQVlJNVlFoUmFnd1NZMVpicnovd01EVTNvN0JvZmFSamgwbS9MenlWUkhl''@;'; put 'put ''TGJSMzNUSml1WFpxY2t0RFNxNE40dXNXbjRvbXIrbmVlbTBMeDBFdGpHMEE2T2RERWRRbmI3RUJEdXpBUEFWWUo0U3dYcWNiRUVHeDZQU0NiaDVsamFzRVk5TjBSSEV4akRCU0hBNzRvWXVpWUNoc0FEOE5xU09pZW9PcGJJbExpUVFmSEZtMjh5VHhJd2M3dW03c3YvZmU0WHQySHQvVkh1aU8x''@;'; put 'put ''UTRsZE9WWE54ZzcvS010ZFlQNUJUZmlMelhzNitvKzFQYVZUeDU4ZEdaNHBxeXNlYUU3VktVOFd0RmNudTVNeGo5TThadUVpUVNZL0pUSnhXQm9NSk1lcW5jdzg3M0Ixd1Z2aHpxUTJKL3l1MEVoUEtBOGpQK2cvTzk3U2Z2aTFVc1hxSDhSQlR4MHFuaElvUjY1MHlVUzBLNERVczcwVlMxaGdP''@;'; put 'put ''bGpJQkRURXBXVkZBT1ZxY3FHbW1xS2g0cHlpb2U0a2FxdGpUd01GVE01M3BXWHZnZmJaQ1hVeC9qWGsxdUhNODJkV3hhN3VvLzNkRFhKUTcwbkIrdEcraHNiKzBacTI4ZGpYUkN3eE1iYkxUVlRyVzFUM29MUnB1YnQ4ZXJ0VGMyajNnSzRzck1HUDlRWXJVdzNWc1VhQk9WU1U3eTBwb2lRb3Bw''@;'; put 'put ''UzZrUVJWQTl6SEZxaGRTblFGK2l0TjRMQUdnQnJPcGlzSHNSVlQrYUI2UVdZb1NCNEJuUHNnVVpyZnhtZFl5Z1lZclQyY0ZKejRRVXJURCtvYzNhQTVlYmFFV2o5OSt1b0xEUHFOMU15VjFLQ2t4ZFhVNWxUWG5rRXlNeklUZWZBN0FXeGdHM3dVdDFOZFRVYlhpRVBzdlE4eUxKWUVMSjRMUjZI''@;'; put 'put ''alJrUlVYVXROQ05DTmpBb0ZlcGZmRVN6TE1wZDJqdUl2WmlkSkJhSXZmSVJza3ZJRG9pNkZSbWZ3dmg1Zk91VHlSamx3elRhVGtTeUcvaFFmRVlrNERzNVV5RjNIbmFuOFNYbGIvQkJISm45MGR5REQ4NHp1ZXRBajVGQy9DZmdQQWwxREQ1WkJtR0JBMUV2VnBqVjRrWTdCcysvZ0hJeWplUVFo''@;'; put 'put ''QkJraDZySWlUQTg5UnkxOEZTVFV6VkEvM2ZnbnlvaDl2dW5oWk1MTUo0K0dJOVhHNDhBNDBsWDQ1VGVyZS9EQjJFOGw1UzZGeDk4Y081SHN6K2k0M0V1djRsZkFkNXdJejlxbDFzMG5uQUMrd3RVbWdRZEVnN0F5TGp6UnJWaVZrZDVQQjYvcHp6a0RRYVpiblNxQWk1RlZyamV2U3JLZldKb2Iw''@;'; put 'put ''ZjljR2QvOVEyOW5mdlQ4K1BIdkJydTc5WTFWNFliK3dhU3JmVTdHN3V2Yyt6NVB5c0JNRUh4NWZjTFc4Z2pTRVlqNkpMczlwZVhDUWFoR3hzTkRxd3p0cmNSRVZpWVIxalZFUGZxc0hFUzFEaEVUVlM3aWlicUV1NURxdVlDdldBd0NET2dkTzBHR3BaVjBVZ09pR0V3Q29iNWQyeXNCOExVVVRV''@;'; put 'put ''dElQMzg1cTBrU1p4RW9pak5zT2FqRUpBVmRBSVRkNDUwRHZkdGhWbGt3dUZZS0JnT1d5VGZPdGVpZ2dZZFdRWHE4ZEt3aEF0U1BjVnZqdGRSenp4NzBDZ1ozTEFpYlowWDVoYS9kblQrQy91YmQ5WFZ0bHVLUnhLRDA1MEhXMnE2blpaNWE1N1pXdTRyYnFpWStzVDAzQmZtOWp3NDAzWWc1V28r''@;'; put 'put ''MXUzdkYzRWlGcEhERGRFYkRueGg3c2pYanUxOWVIcjhXRk1zRW83dEcrcyszbDNsYnpQMGRUU08yb3JMS3JlMzcvakE5cmtuRHV6NXhKNlM4cEtnSDNzbk1yWllmYXkzcXJxUjJ4WW52THdLZWxrQ0N4dVRLNDFZeDRKN0hYQzBEcXdydFhVUUdWQVB4OENjWGU2eUZvQjFsVmdJR2pGalVxcDhz''@;'; put 'put ''ZUVlWEFZL2Q4K2VPSEhxRkxtd05QNXI3RmYrQmRBT1VRZDVIL1NmRDU0UDQxclFYL0FFRWVSRnJ5TjY2bmFvQ1JnSmM4K1lQcXVvMEc0ckx5MzBGL205Ymx1QnZTQldibUNPS2NPOHBwLzltRm5aR0hZN3RUZGplTHgxVDhOc1cxZlQvb3p5R1p4TXRMWW12blF4MmRtWnZFZ3V4RWZyOWplVTdH''@;'; put 'put ''NXEzRkdMUDFJWEN0YzlydnhUT2haTC93UFZDOVdnZHo4R3NsV0NHdVE2Q09OUm9SbHNhUkdZV1JBdFZYOTVWaVdKNEVJSktnNkh3alJKbEdVTmoyWkhjK21PRzgvdjIzZCs3OEM3azFQbFUzVWRoMlg1Y0VmZGxIOW4vWHNHTExPZm5abDVaTGExWVZzbzFuVkU3anpTRlExUHBGb1piU2p1dnNW''@;'; put 'put ''OEh6ZUxKTEtvWWtHMGlpcUwyZVV3dXkzdWNMbWVva2hqemhnT3FVd1l3L2F4TjQ0K3VXL2ZrMGZmUU10OVJ6T1pvMzEza2dzN1A3bHYzNE03ajdVZTdPNWVhRldTRkFjUW1ZTHR1UURxdUVhT2F6cU5LaERkTk9nU2E2Nkh5angvTTA5RFVYM2lWdldiM2UvK0I3eFBlUkMvZCtrdG9pZnQ1eGVm''@;'; put 'put ''V1NRWEZybVBwZlZ2UkZWeVdPc2ZlRTNIZXRYY0FMaGhSRWJhTStVejFyTTlvUFY3bW5iNnhLTHlPdStVMCsxdmdXNSsxQ28zMllCY2R2RE55N0FPbUF3NnBscFJyME9NelZhMEluT1J3Qzl3QXZFQ1BBRHoyM05NNG5vaXBnTDRYVGhVZDI1dzl0RjkreDZkSGZwdzNWVDVnV1RtT2xtK0xoTVpL''@;'; put 'put ''MzhNbjFUK05kbk9TZG1XekpLeXlIdGFtL2RIR1Y0amNsRDFKUStBRDB2blRQTkorV2d0UGpHZE1md200WlY4OUxUeXQ2ZFA0MGtxVmppay9KUmNVSDZOQzZDWGZtajFMWmJMcEhtSW5GaUVoM0VRaVBSellRUllPOWlPZndKWUcrVWs1dnJqQWU1N3dlQm1CR0FvTDBPOURlVTdRenBvdnVMcXd5''@;'; put 'put ''aW91RDE1dW1LN295K1M3RHpWdXRCbGtlc25nalg5TGZnbHBhN25jQnVuN3loMGRaN05zMXd1TVJyMEJCeDBQSUJaeGt6ZytVeW53OEh0WWRLT2swWWNnTkF4TUhvYVYzOU0rUjJPZlB6MTZkTXd1U2Z4bVBKRDVYWmN1ZjhmZUwvVXFTaUZmdlhVZDJTRHByMmhxNUdHT2ozUzIrMTAwQ0hnbGFR''@;'; put 'put ''ZEZGTGcxQ0x3M2RJM1dYdVFJOEc2TWk1cGczRzU3TnE0ZkJBMEJPeG1vTURZNmRkZVAzWHE5ZGZvbUtieEk0RDg3OUcvU2tydGszeVI4WEtwN0pNSVdkZWpJOXNqaGlFRldILzQwS2xUeWpuYVh3bCtIZnA3WFNtaGNrNTVXUG52aUhXNTJ0bDcvcHByenUvdE9KVEpIT3JndWtkVk9yT1B6TXg4''@;'; put 'put ''ZG5heDYwaW5mS1NMY3l6VE81UmZqN1A4bHB0R3F6QUtFRlVCMDlURlNySWNwbWpOY3pueTNGYTNQVnd1MGtTNVA2dDczSUdzYnU3RnNmNGJ1N3R2N0gvaU5DN3BIQjN0L0RTNTBMTFExYlhROGl1OHE3MmhvZjAxbElzREYvWHQ1WHFhN0NaNmdlaDFvUFFFQ0pPemdZMHVKMnZvZHJzajduQjFP''@;'; put 'put ''RUpWTU5oeXJ4VEpGV01ZalM0ZFNYc2JWMkdGS01HS0xWMEROVWZiOW1yb1VYN1dNdFcxSjVERkR5NjdOdDQyTEFjcnMzaDZvMnBrZUt5MWV6MmVUZ0NlckRDV3BGeWJSK1dheG9yVWRCNEFSMFNORlVXQk1MR0VJYnZ0UURwazlWTXA5OGI4RVloTjdYN1YvL0txY1hVTTQ5OTg1cTdUREcyN2hy''@;'; put 'put ''NmdESDZhWWUxWHYySjRHMTRzZUpQampjdEcyZktmU0MvNUNxcEVkWExDQzVGaEFWZ3NSSEl4UmozREhLTlZpU0toNmlERkdCVnhIcXBDYUpNZ3EzUWZpM3BVdHZyOXVaYSsrVnZiZS95ZDdXTnpyWmxqdlNPM04vWlVIMGdtTy90MjNueEwrNDFqNXViR3FlbUdTSEdnME9xc0h1NW9uV21zcTlr''@;'; put 'put ''VGlhWkNsVlV1MzlSa3gweUtqVFdveHZLU21rUEpobjg4NmFHNnlqZ0E4VjhBSkFhOVNocGVQUVhoMzZJcXgvM0FJNDlDZS9CLzVWSTFFWTl4N3R6Y3lPVUt1alNEVEJVWEQzZzBIWWI5ZDQrY1Rvd25HOFlUcDRidjNta1p1V2NudmxzNTJiU3J2bjVYRTM2M2N0UE9lMFk0WGwwdzFuOW04U284''@;'; put 'put ''UzgvaVZkQ2Fxc0xrV2dkY2RxNTFqRFFiNzhQa241VmYzS1A4NHU2Zi9JVHFYUGo5TXpHeXZnb1IwcFV5ZVlLK1RGVHZnN0tnYXovTWxMUEpnN1p3MlBUVWtsSUZCRDlDd0l3RGhlLzcwQ1B2L2N5SDN2ZmowMTk0SEJTNTRzSy9wYitnT1JTRjhIRkM3RUUrejNRYjZFYWpDRjBUbXN1bGZJZTVh''@;'; put 'put ''WEU0SEhhS1Z4aGxCSHcySWVsTkovRmphUG5Eeno3M0liUzhmTzdaNXg3QU81WFB2ZmttbnNRNzMzd1QralNvZXR5QVN1UWlrY3BmVnJtcGticURMZlVZMlVoQnMrRUM1UThmK3VyWDdsUCs3eG5nd01lVml6aXRiRk1VTGU2ZjFtdyt4ZU5LMmlzYisyZlRYZzQ3RzJtYXB3REE4Q2Z4cmNyN1Fa''@;'; put 'put ''Mi9HNTlaK3FjWi9MUEZHYVdDMi8yQjVWdnhDUGsrajh3OEcwUm10aXVQek1ET3V2MERXUGZ3dzhyYjVQdmJsblpzWTdoZC92Zmw1L0NQTnNsWkN1RDdtczdpWFR4bFNmMlFXM0hkNnZIUWxBVWJEOU1ENm5pMGJCdDE1bWptbFk0SDVZN0hDOFlpQlg1VTljTVBZNTN5ZGoxNWJOdmJGeml0YS9D''@;'; put 'put ''RCtNdWNKNThTOS9mSUhyQU1MQXNKSTZNWjJSdlVETXBUSXVweEpwMlUzQmNuUDc3NzBLRmR3RHUvLytZMzZaeVU1VU5rWXZsRmVHZzU2Mk9USEREdFFnSUNFTEo5NlF0Ynh2anpNeVNEdytRVmFPdGxiUzJZeHE4STNlREFZSXpZVTlQZVFHYnh4aDNrNjU2UDh2Z2lBakpMaUozbE0yNlh2WVZZ''@;'; put 'put ''MEJXQU1YRkFGRkJXU2tROXNJU29oNGpRQlNnckIzaTlTR2k0SnVobWFEeFFPR2pBb29obVZGYjJnZnUwSG9RS0pJUFQvTG9wMmEybFFYaXFKeGdPT0kyQVcrUnhBM0p6VFlSWERZTWJhUjRrcGEyWDRidHZ1Ymw0S3BIZVdkKzh0Nld2djcycll5UjYvVjdycUtsbFMwSnVqaFA3emZ1VWl4MkJT''@;'; put 'put ''TlZnWGYxSXZOaGEzeFBaMGFpMEpTSXRycHBnTUs2dU01TlpzR2NPVklwK3hLZG55c2M2d1lTUm5nejR0QStBaG9FcGZydUVNc2xnTnF0VHFLYnc2TlRCMVBrNFYvblhBbEdQYjFXeVR3MlUvZHJhNCthQUFKTnpXNHNvVnNGTVFUenNja0tNNkN4MWxoUjZZVFoydTNOTitqQkM1Y2ZPTWtrcks0''@;'; put 'put ''NzQrY1B0N1lkN212ZVVuVHhadHFlNWZQdjJUbmxpUWliMkxiZU9qSnphVWxjOVFWNVUvcU82VGhtOHVyOS9lcnEvLzJyZ3IwckFtUjU0NVhJeFdPSG1NWmpuc2pIWUg4OE1EZDArMEh3Z1BPSHVLSS8yUmVISG4vRk1ST2JhTEFPbisvcE9EVlJIK2dxS3E0ZmoxY1BWSllXOVZRbk92M0VZMDFh''@;'; put 'put ''VmpsK1RUWGFJandWR1FwVm9GSHVNSUN5OHlDVmEvZ3JSMWdJeGpwVllpcEp6ckVZMENtaTlMQ0FqbW5xWFFqTmR0eHBtUGRFYzRZQ2RFZzJ2NFg2UDEwNXlpRWEyQXEyYWVoamxtdmFVVFFEQk9vRnc1TVdsTFdQeDJpMm5Sa1p1M1ZJYngrTFN3MW1pWldVOEJuVHpBREZrdVoxUWdtSG10ZWxB''@;'; put 'put ''NytySWdlem8xREdyM09YMXdwOFNiM0ZSSVRSMVF6Ukd4eGprNU1wMTR2elVheE1sUHhBVjd4enlEUHR2YVI2NHRYL3JMZjJqaTIzS1NmTnd1bUU0RDl2TTNhbTlwWjZ4UVBYV1V5TkR0MjRkdW5lbXNSdHZhVXNtMjZqdUFrY2JMNUQvQVk4OUk1dHNXTlJEbkNoU0tsSUNGU05SMU0rQXgxYkFr''@;'; put 'put ''aDFvV2dmMHM2dkd6c2RyQ0xJd25vMWc1Q0lJUWtSUVRmUHJid0k1VEtFQVcreVRKQjlZZU9yZDJPbHlIOHUyYWY3V3Y5eDQ0ODJEZ3hOeVNhc25ZUFRsZTBxSS9vQ3lGMy82UUdQbmRvOXp4R2lxS0FKY1I1ZTNrdzdBZFJtS29ZOXdIblNVWXIxZ3cwUmNTUkw3MkVYZDZvdXFuaWtIVlFrbVND''@;'; put 'put ''VHpNQmxoUmdLRzV1cUJrY1hKdEd3V2hHcFltQWNGUkd2QVFNdVdseU5VSGl1UGhvTXduckp3S0JTa1doYmJWY1hBNDhkMnZKcmxVcXRZcmdNVVF1ZU5sZFcrcXhKRHU4cDJwN3NPdGJVZDZrcGZYVHcyTnRiUlBqYmFRZlJLZmRkOFM3aHNxckNrcDdVN21zZ2M3ZTA5MmxGYk5heThiNnlqWTNT''@;'; put 'put ''MG8yTU02QXNlT1NsaDhjUFJaKzEwS1ZzbHJSY3gwWU1yTTNwbUxVaFdOS3ZVMjlhTmJzT2RsWXNzODZMZUFXcm1BUUpjeUdsM0JsdzBSVUZWSVJDVXo0a0c3VzZZS0Q0M1dYZFRlMjNEd01tVEJWY2xpVDI1dTBYNUVxNUxkWGNsbEpkQW9zTFZYSFpvcHVmYjVHZmd2K1dqclh6SW5tekN2SUJ5''@;'; put 'put ''a0YzMWozMHkrS1J3Q3p5SStaekxVOVExeWJmbVdWZ1dYYjhtaXk2Qk43Ry9xcXFrdUtxcXVPUGtTYkl0V2t6ZkZrZEhsdDZpejEvK3p2S0krbndmMmsrdEVoR3NvT095a3FIUEdZc2dNSmJXN1JVQkt6NGQ0M29FQUFKaVMyT3JiNElPWWhsK242WEk2M0hhMmVpa2RUbiszQnlEbUIzcFlxTTkz''@;'; put 'put ''K1MzZWtwT2J1dGFHZkxiYjVrTjB6cXhvb2k0bDE3cjJiR1NHNGdCM2MxbzVrdEdGaXhxbExkelUwbkhoVmZSM001TlkrNE5vRFlFM2RQczQ2bzdVMVBQT2V4TzVwVmk2bEF4V3dmKzgxVXYzL2RBLzhtVFA3OGZseXF2dlR4OEIxaXpIWCtpNDZFVkdsOGwxTDlxNDhNd1UxOVVUY3lvQXpEbjVH''@;'; put 'put ''cDg3Sk9Xekp1YSt1Sks4cVliNkFXcWw4OFQrRnZZQVhJZlFGYzlWMTVFc0I2ckZzaERGWTUreGlDSmdsNXZIOVRSbFdVMkpkQkk4Sm5lRmVFdUVjWEM3TTBwbGk0S29Jb0E4REJ3c1JIVTBsb3VYczNPOWJUU0prbCtNRmwzYzFPOFBuTnpVM1dkZlBLa2E2aTJjYkxBdWF0RjQrOVVzck85UnZt''@;'; put 'put ''bTlwZm90NGJqRFlucUZKOURONU5STzhqT09MV2tXTENBWHRJc3FaT0ZjbnFxamV5NVVzajRhcDE4WGxZSXBUVkNXTnNyVWltc3o1SENwcWp5QXRGdkNURmZqZm9kRXpDdU5mbVh3bmZNdjNndW4zK2hMc2VaZ1FIMkd1Mkx4Y0RwNkkvRitxT3F3ekZ3cXEvdjlNQUMrQnZ4NFdydWVIQ2RzQlYw''@;'; put 'put ''L0N5TWgvb2NoNW1uU0V5NVBnZnpBRVNCK3RVNTNockZrcE43Q0V3N3JIVWtjMkN1MEtsei83Vk9uVUtlbWxqbDAxSC9hVHY0VDN3dVoxUS9tRHRSbVB2QjhFRVFWdnZCMmVrVjV2ZzFnNXB4WWs2U2ZZM0x0UXJteXQyZjFKVzRQL3FsMGJkWDNKOHhaWExGKzhGb0s3eWNJRlM5ZFQ1clpzVUpm''@;'; put 'put ''QloyWmluQkRlSWVLL01SM0JvenIzaXkxRDE0RGhRTTB6Q094cVJiazdrZnoyYTJ6WjA4aWY5WDI4S3VBZVV0b3QvUFphaDgrVTM4QTNoZUpmV1JQZkJBTDBUbjRDV3pKVUExNVZPNFVjb252aWJsRTk0ZzQxT0t2YVdFS3VadjM1SkliOXNWU3RTbE04UHh1cW5taHJsNE1qaGM0WSs1b3ZHbWdl''@;'; put 'put ''VFIzWmFxMEk2MmtnS2ZMOThXYkk3WERsVDVTNmE4QllWdW05dVdsMStScVIrWW9qNFhqSFdCZkFoOHJobzU3c1VpVFRtRGEzaVcyaFF5VFJjeEFCc1EzdTNsN2lCemtad1YxRWNLOFhVMXUxb1RCY3hJRjlVYTAzakIwMW9pVHd3TzNuempqU1dlZkoreHhPblozb205Qis2Nzc0RHlIMFVWSmlP''@;'; put 'put ''ekNTRFBQcUxuZXNhWjlVWlZQUU1xUnJXZU9YR2xWN3VxR29DVlVKTHJHVmZBRldEckVUazhSRzBXRzVXZCtLaDZhZEtVRFhETVc2QmFRTm5nZnVVU1ZUYTRWNjBoQXQ5TnI5VVFhVmtWelUrME8xajA3dVRwSDhjZEgvblFuVDg5RHU3UGUvRXQxRml6WEk5UUMrM1g1NUhzbDg4akZadzhmSHp1''@;'; put 'put ''aGtNbm56aHk1UG9qME9PbjhDejlYWG9MWDZNOHRKTHZBbytUMTZ5WkpCM1cwWlFYelNwQTN3TEpXYVJ3T0J4NmxyeVVBczRJVFNaSlR2eVIyODdjOVkwWDNuM1RUWGU5OEkzSEg4ZUdwWWNmZmx2NU0rdDNlWWcwUWI4MldyMWpOdEFoVTJZbGF0ZVVVZmZTc2ZzRWRmWEI0Y3hsMUF3VzJDeEU2''@;'; put 'put ''UVB0M3FKQVdjTGwrZWtkZjNQZmJUOXR2dVdMMXJ5ZHpvb0VNU3EzNFR1WFhybVA4UHBHZUhrZG5yZEp2c20rYWI1Sm92bW1CSFlvYitMSHNmSTc3RkVHcDNEbm9Tbmw3dyt4M09YeUxueVl2SUQ4cUZJT0ZiQjhJRmhxM09jdnAzbGdtc3VjVkFVYm8xRzdoOXB3bW9KTWczWkpnYmhGUU5JZ3Jp''@;'; put 'put ''RnVMMXUrbEtpb1NUaC9Ob3FyRzFKeEhOdTd6ZFRjNU1iRGtUQjJOeldiUGhYdGF6cFRFeDJPMXQ3VzNGZHBHRFo0SStHN0pvdXM2ZXAzaGFzOGhtRk9zN25sNTlEZnNmelU1clY4NEVmTTdkeXAxZFZoaU5WMjRldlpQQUEvQnBZL3N1VVQxT2ZIakVjeG1sUXIwaEFlcFNYblJITEZ2R0RYSWcy''@;'; put 'put ''TjZUQk1KNEhCWlNNd0FRL1RWVjR3RjFLRURqMFVHYUpETjI2YmplRjRRd1BNYVhiYmxNRlRGWDVYZGRwYU5IbFhPT0tGZVZUMk5kOVdDL09xT2RQVUY1V1dsMUVLUi9COStHbTdoUE1RVVg2RGpFOGgvTHp5RzFhdFFXMWh6L0pWNkJkTXYrYXoxVE02T0dxUW1WUE9FbXRPdW02MTJnRm16aVV2''@;'; put 'put ''aUFUL0p2bU1XcnJRZTEvSmRtTFhxaFdXdHVDWCtUTXFsNThqZWpLTUNsRTV4VXBKY1dHQngrMTA1RnQwMk1MWHllQ3BPOVRFSWtiRFJhem1Na2pyM0xrT3BTWHVsS0RoaUIyaTF5Q0UxZUFCNEsvdjI5VitvS1ZsZjhldTJ1M2xFeFcxOVlFSjVaUHBlRHhOTEhKUDN2RFJUT2JJY0Y1WGh4aXQ2''@;'; put 'put ''QXVibEJmTmtkNTNiWGZpbEhON2t0VnAwcnpwaTZnWWRjc3kwSklXT2lHSjFrOUx1RjhQY1IzR0VtRkxNaXd5b3hWUGtzU1RBWWhYcEJYYm5hRWdtQmJxM0lYYy9sU2FWWml1MHZnbG1KYkhrZW1sZnh6dDdtNWQ2TjV5VzhtT3ZQNVlmZGVUVDg3TnBlbytNWGkyNTNDYnV0SjM2K0FuVUU1dTJJ''@;'; put 'put ''T2E1VVlYUmtZOEFOR2x4TUtTT1JFVGNKbkF1Qjh3c1QwTnZDNlA0bExiczJBejAxMExiRHVJV3l0NmhWOG01UGpySDNqaGhSZk9QUC84OC9mOWttYVRjYy9nbHNHREIrRUZINklwWlVhckRCbkM3eU1YV1cxUlBjdENSbWhoTGZBdFcxQ1kwUXNVVVhoMGcrb2ltcURNalQ3cWM5N3ZDd2FMQ2tQ''@;'; put 'put ''Qm9tZUNJZmFYRE5HLzRZS2lrUFlYZURXQzZva1JmOXRXZ1dNNlpCTndETDJtNWtVSDhMM2szSlhrVkdrZFVBYVBLRStUYzROWG1sUDFTb0V2TGo2d2c3eml1WlBMc0gvNVpkSk9uZ0JLQjJTSXdObUN6MjNVbk41SkxSZExxN1BsbERDekJGanpkK2lDTWwxWHNmWWVhbTJlNjhSdGUyN2VnOHZx''@;'; put 'put ''ZDdXMDdxbGZLaWQzTDkwRWZUZWo3Nkh2NE4yQXRGTFpsNk1RQ0ZVVm96a0Z2NDI1Mkl0R1MwdWkwWkx2UlV0TG8vUlh6UmN2dDRNWk1ZUGR1cEhOTGQrRmljNXBKRHdoSVlCQnR0SjhCRGoyQXNHNm80aXVYUWhrZmtXYjdtVXJyZUR5TVJCZ3JOczJnK0YydWdCNW5jRmdrTnBwaWpsZVIxNFJY''@;'; put 'put ''bFdRU2ZmRy9MU3FOVkZVYnlzbzhUc0w3WFpIbnF1OHUwQWZENWVFRTdhOEJxOGpQODltY2cybDJYNmVPTkRjeW1nZTExT2F4OUhyZkQvUDhnRCtKZE5MZnRRcGQ1UUI1N3RnWUc3cXpRNGdQU0lDTGRHam1CTTFiY1hLYXlFeVJzaGZYdWgxMmxXTlJZTmlsS3V4MUJLaWxUUVkzVUtERzFRbDFy''@;'; put 'put ''eTJNR3RGb3luWHJpM05RbXdPck1aSHVNTldRVmZnN0JMRVliZWp6eVBEVXdRLytYbW1hRGVBT1FqNmVHT1lFeG9NbHRCRG04QWN5OExrb1k5dUFuTTgrNnc1OUdFT1E5YkN2Snp0eHd4OHVRb0dhQUEraS9CSFZsdmtRRnZsYmp0VmpSVGxCb1JCQVJtUWpoaDBCNHlnRjhWcGNEUFZwU1k5ZDVS''@;'; put 'put ''WU5PZXdPYUJ4dnFxYnpLQW9zVmJJa3FMMVRYNDN0Z3Zra0ZiUXNvd0dQNERmVDdZdHZmVXRYdGx5NTUza3dxTHlHTjZoUE1aclVkcFpEVkVLRzJWL0ZSYjFVVUlnTEFmMVdJSjF1TmdCSEd6SFJCQUhTdW5tS2M3OTFiUWFSTUJINFFYcHJsL0pNVEoxcnNac1lPajJ3dGg5TEJmcGdFWUoyZ2ho''@;'; put 'put ''M1cxWDNLcVVibWxhMVVvNDlZN041UGphRmlCOUF0bS9VVU8rVmtEVENpblVFSXFDRlByZDFQTHdkRzQrVmpYRldtRmNFNE5vaFFzdlRmbDNKazcyV1BWbGF5WFZPL25BanJXbFZIUFI4RVJkaTg2L1dvQ2JUQWMrdm5OMWFSWHdGYXRCWW54ZXFjckNDY1pYT0ljLzE4SWNSSTl0QW5OQ2d3RlpP''@;'; put 'put ''TG9KelBGc1AzUHduOEdzOFBueTkyZ05EM3RXbkk5bitmM3IrZ0dteGwwNU1BZkJ1cStCV2Y0dHdBVFplT0o4UE11UHI0TUJhNFhqYkR5OG43bmxSMWFQQjJTcUNsNSt5V29hU2xDYjNMemEwNWcyc1BVSlk0NnJrWjhQZjByeWk5bitSRGMweXdPN1kxckpKYkNBS1dubkplVzBHTTJkbE1ENDR4''@;'; put 'put ''L3hnclMrdmpkMjhJcTBMK0RIc2xWcE9MQ0lpNWErd1d2VC9uYnhhY0FCcTdkaGVxVk8xU3VmV1ljblZrUEM4RlN2MHZhVDYzVFBXcGlEdUdvVG1CTWFETkQySzV2QUhNdkM1S0huTm9FNW5uM1dISHA2alE2anRXRzNRN3hTQXBaQWZFWkV1RFlXaW9CWVJOTGV0RmZ5NG8vY2VlZkFuV2VIejk0''@;'; put 'put ''eGNNZWR0NS9OdmorTDJPS3lWalBqQlJzVVJYZXA4YTBMNjBobHhGZmtOWXQ2SFJoYXZURGdZMWVGbktzWXJxcjVsZ0tXU2FFbEE1NUJjZFdTSXpnWHVjdFJIcjZHS09hdUQ4cldpb3FLYUVWVjJCRnhzQjBpMlZKektaQ3RxcWN4SXZKNE1hOTgxVkZPaUdCUGtud3ZlYzM1dmRmdXJqeStNNUVF''@;'; put 'put ''bVQ1STN5bjVSUVc0cGlrRGtvMHJEMlhxbEI4Mlo0ajMxcDZaejg2MjFzelhuZXFoRWwwenIveDZ1QXhmRXdDeGZxUHJTT2RFcC9KUWdOczZWaVBDNk51azhzQ2o2K1ZwRGN4QjlPTk5ZRTVvTUZsYnR4N21lTFlmelk3bHlEZjNsOW16MnRSbnZiQzZuNXg2SzFwSGxKQmp3QlY2SGRZZkVMRzZm''@;'; put 'put ''SmJkUEFwbUs5L2p5dmZhdlBhdzN5YXg2akozTXFmcUtwU3R1anAxWWFYcVNoNWpWVmZIV2hjNnV4WmFidnAxUjBORCsrdHFYV0tTZkJka2Z1cFpNL2p0TkhmbEI0NG9CYVV2UU1BeHJ4VlRlL2p5c0lqVmxIV3hXbFk1bndYTXVUMGxtNXhCZjlBZkQ3RFZyblg3S21JNHBSVTZwVFJMUUpOZXZh''@;'; put 'put ''M1hkbmNmYkUwbVdQWHVjS3ErczdNK1ZWSGQxbEpUMDNxS0dKdDIxdFh0YkdvWUwrUVZ2SWRwNWU1Y1k3aXFvVEd1T0RudGVhM0JLNERySGpEdUJIVlBiWFJkQUJyY2szUDlrZ2FQcGJGYytKZXkxL01HY3E5ZnpQWS90elhudWhETXdwdFBjL21FNjhKOTRDTldvd1lrazBPRFQ1cm9pa3BGTVJE''@;'; put 'put ''VkIzNkFHNXRJRXhaTjhHRFJLQkFraVFOZ3FjMEFVN1l4RERaTDRFeVlKUXBtdVlLdWJGZldWZWxhTU1NR1lDc1F4bzBocHVnL1BzVVlNb25FTkdtQW1GQ1VpSGdnejBpbzk4c1QrRmF6UmFCT3cwcGRBNTF4Nm5KTkxEamJZTkNLemViY3hwYS8vbm0yLzUvblVXUTFnc3pTNXZNZzNhSmt1T0xX''@;'; put 'put ''c3J5MklWcHBSdmVGdjJNWERNbHllU3FWU0lDakphY3lyYzJKaGtTeXJoWjRMRTVEbjFBd2xKLzF1dFpzVVBEbWJQbGd5emxyMXRaUll6dk81c0pmNU92c0hZZkQ1WWU3OWg1ZnFZTnB1cnEyZlhkUmFIL0wyc1YzNWZPRHREeW1wWTZ2d3RkWHg1TlRROW55bU9LaWVGVmxkYzZpdlBJNU9lRjMx''@;'; put 'put ''UVJEM0E1V2d1OU1hejhhMEdOeVNSRHJkY2tRRWZVTmhVQ2ZBZ3pCY1I1SUdNVEdSRlNqUm9nS1JHRDBvMGdFRFNReVZjWGlLMTdKc2hjc2xROXI5QXBSV0lDNzdmTEFjc1U2T0hhK3dmNHN1SjZ0NVllWmU4dnkxTHEvMHJHbHRTajRLd2Z5MS91MUJaM1haVGFxVDhHbXRXNnRjZmlHcm5YbEts''@;'; put 'put ''azlGR042cm8vcnYybTB3WFdxL3o2UWMvMlNCbytsN2Jud0Y3UDl6SEg5dC93dHRyWkorM21aOS85dUR0OE5CR3pMdVg3UXcrRi9DZGRMV2Y4djgvNGY1ZGRmaGV0aDFqK0huM3VRNStIcVdhM04vMlMxWXJ0a3A0MHRwMlFQdm5DWWNCOHZ4ZkJvQ3gzMlZkWEFkSUVjZzhYRVpENzM4cFNjVjF6''@;'; put 'put ''TWE4SENJYnBIUW5OUnN1NUplTVhseWwwUHdtOXM3N2xsZVBoa1Q4dEMxNTdPOE9TUnN0NkJZNTNUNWEwbDQrT2Q4dmhFSjdFL2RQWDJzd1BkTnczMUhzc01EZmJYOVpjbmF4cWkvYjZsdit6b2txL2ExdGw5bFlZZlVzTHN5VGkzSnlwZCtMb2p4ZHNFeCtmaGphNVRlajJVYy8yU0JvK2xmYm53''@;'; put 'put ''TDJXdnIrNy9ZcmIvdVNsdWx6clFObEpJK2xsTzFVZjNUUURmYTNVRmlLWHZrQTVZZnBKdElKTkFGdldqTEZ6MjJZckErOUF5clFhYXQ4Z3ROWUNvT1hjSEdjNlB4a3FMbzFVbGY2RDczWDZvZnNCZnBuK2p4YVd4cG9XWHRMY3dKbTBOMWt0enNGbGYxdXNpT2hJSkZ4WHE5RHF6Z2FpK0xMMHFy''@;'; put 'put ''RnpkMEpjdDNNaVh6VjAxM01pWDlmdjlWZjdLMER2NXNqcXZ1bVhTdzF4WkNkUmxQRHgwWm1CNFM5Rys3b29JdkJ2WldyU3ZSemxYL0hLd010b2YrMDVmelBjRGZ4Ui9jRTk5MyttQmFPbElhRG9KRWh3ckcvMWwvTjg4SU1PUGdoRFh4WDd2cHVmSHNMVXJTdnVkcTJSNDlmVVZHZWJYTDJud1dS''@;'; put 'put ''bm0xeTltKzFGbFdGMlBvZjNzVWZ1NU4yZk5tZGU1ZlR5M1ZIR1R1c1AxNjg2YjFCMXV1RUM5OFcyMUJKRXVVUDkzbFIwcXd2eWFzc01zVGk2cU9BRmM5ZVhtelRMWlBOVUNlbUJkak1kOXduTlpuM0NoSjdmdDRXeit5b2dlM0tUdE43SitvM0ZVM1pPM3ZFMm9nSGlnQUtTelhXNHB3cEt1QUl1''@;'; put 'put ''WURCZ2dEQUVTa3ptMkhVdlA5aFd3RlZTMUpLdXdzTkJYNkF2NjdYYTd5MCt6TDNxZVZFd0hJbnk3WHBLanFUNk53ZCt2Q05mWHRidkxHcks3OTdDbjJGZFFZRk4rYytMRWZXVnQ5VUVmM3ozazgzZ0tiRGpOTnZTcDlYN2JTQy9JYWd5bDBRdGM4SHdsV0tjdmhoakNndzFDVFlJWURVYU1qVEVz''@;'; put 'put ''WWZCRU43OEw1bHlWM0tpMlJaTXBIYkM0aFlOMERRSFBpSVRQVWswMHNSS0F4SHBnRm55d0preSt2YmtOcG1SSFBCNVB4eHZEUVdjZ0dBNjQvSFFWSW91YlRRcUNRWXZaTlhTRmM0cURTUy9EbTNsOWdmRGNMUnlCZjlFS2hUa1cxeFlLMCtKaGh0TlBhZ1hEYXE3Z1l5eE9ES3R4NGkvV3hadThQ''@;'; put 'put ''cGJLN2xaVmR1L081aGsreG1KVjFoWWIwUGxOMmw1UzJ4SnNHT1Y4eXZZWXNyWVJ0ZTNDT2o2TlF4eGpKaThDVEMrRHlSZDJrRDhoSThBOFQvNUVnUUJHelJ1QkJKekoxczIrQy9SSkVZenBOZG5rQU1McmdPYmFLbnlZbWhXTUJEMDZBUHhyeSs3MDFhaE9zRll3UmJWUGRGTm90SnJxUkZORHEx''@;'; put 'put ''dFlMOXRpRmZBS25DaXFCZEc1d05UOWR2aDh2ckF2RktMVkN1R0F1cVFWV0Y5Ym9oWXZvTndTazNkMXJLb3hlZWloa3gzS3YydUZKcDFMZjU5VFovditycWFtcFIvbjZpbWVUOHhrODRrTGFQODZPblBmN1Z6V2QxdFFkZG1hWENRMm9SOXMwbGJ6K3dTQWVZcm5xRURlaDluWkdLQ05pckVCczEx''@;'; put 'put ''T2VsSEg5MVdxSjJMUStudUpTU0VnVVJNOXBvdTRObHFST0xwTFZQc2YwRVNNRERPeFVoNGpldVVXbm5IdjRlTEVwWWhjV0tRcGR5WTRUQWN0c0pyakVJcWpNN0tEUmd3aFRQUUdjQUJCdHlDNnlid0krS0FTWEhrZGpQUUF6VlJybEZXUE4yTGxRc3lQWkZZcHBJR3lPZU45RzdVZ3RIUXVIQTdI''@;'; put 'put ''d3pGUGhUTWNESVJZamx0UzUrRFZWTXJhNm1YcTl5TzFndm0xclJZNnEySTZYWjF0ZFNGekVLSXU1UzlxUUZYc3RUcGhzaG1ZdnNXUlU5UU00UldlWlhYTkcrU2hEUnZrb2RmNitRYlZSMkI3WjVtTmlxbzI2cXZyMnZKNlkycWpCcmlOV2xUYktxL1RmYmU4TGZCS1B2RWpma1lId0FzMXlJb1Nx''@;'; put 'put ''QVg5bVV1N3R4cEwraktzTTBBb3AvTmlJdWpvRVM2b3o4ZnVpQnZjVWExQ3pFeVhjUVNEYnQ2SVZ6WmhTNUorQnNKb3F2YTFmYjFPa25OdzIvb21KaXlLZHQ0UXJXMG1WeU5rcE9lODRQbHMwOHZBMC9pN3BvYW12V3RhYXBwVHlmeEVmaUpXRmZBWEY3bWROUDFkWU5IOFlub2NBSGVGOVg5RlJU''@;'; put 'put ''UXVEUVdyUWlGallTQlVpSVYzckk0ZXFndVhkY2FMQTVWMC9icjNDa3FsSWY3Nk9UQjRndWtSdmc2d3NQend1cldDbndCTUpkTWpQRVpiK0FSZjAyMWEzb1lVMEFVdXVqT1VybmpTNDFjSTdzK2U0OElMcXpUcDkvalpuaVpOTHVoT1dFM2dGU2J2dWxPVzFWS3UraHZVaGlCNDFyZlpXcjhmSFpM''@;'; put 'put ''TmJ1cjIrMEhRcVJFSjBKVmpNWWNwVk84K1B5dXNqTGFsTExSWktWQmVBekJGdDJtVmx4WkJoSm1mdDJHSnNsTmRsazE3YzhjK3I1WUxiS0Z6S1BIbW4yemprMWdwRzFnS3czeEthdlAwK04rVzNsSm5wSzdsb0crdHJNR0Fqald0eVFkck5jVDY3TDV1KzdwOTNiUTBXTC8wRnZRM0NuSjRucDAz''@;'; put 'put ''bWVCeWlIL1AvWCs0SG1QeU9hSmVmNEpmcDN1cG1aOVJvL29aem5VeXorSjU0VjZBR1ZWaFBPZzVEdk9jQnNQM1pMK285UVA5ZjUvNUJEakhKNkQ5M01sZ1JqZUc0ZnN5U0Ivd1V4NnR2TFdZVFVaUkR4Skl0TjNwYXpaNjU2RTh0N2JST3lXbDByUVkyeTI1U1o4U0FQLysxS25GeGJjaVJ5SjRp''@;'; put 'put ''L0tmbWFNZDM5SDJmVFN3K3ZCQk9jOXNra1JxNlEwSWExWGlabmhyVS9kMFpzdXpWN1o1K3RnbmJiRnJhdXFMYmxiN2d5VXc5K3J6Y2NQNHlhR2hrK040YjVWeThUL0RSOEo0UXZsdEZjcXVXZDJoclZrQkhsL2ZDTmVraFBsMDQ2dGkvVEdnM3hjWlhldFUvV3JsOEhDOWhOZzFlTURwUmJUeXJC''@;'; put 'put ''UFo5VEVEK3R3bXo3cVV6VU1ZOXFHY2RhcE1kcDFxQVQyNXpnZms4Zm01YkM1aFlSSnR0SjZHcld2WHVOUzIrMWJ5SE5pcTdoc0N4U3ZRUGJZT29GS0xuTTZlT0dFZzJTTW5qSFJydlZhdnh5TENFbWV4eDhXS2VxbHJZYUlGTHBvemtTMTBjV1A3eW5idkhlcnkvUXV6ZEIvOExPbGRlcXNyYzBq''@;'; put 'put ''T0hNN3dSZnlwVDF3OTgrbXJGNVVVL2w3bXNDelBOek03Qm1NV2ZnNytCWjFYTTlvdWozc3hqVVQwT3BwZTF3c0R3RU02dlVGM3dHSWtvcWlsSE15U1NjaEpPaVNUZ1FCQ3llWmtVMk1xVUIrb2kxVkJkMzVuTUJ3TTVjRzRWeWRwVjh4Qmp0K2dXM09Pak9wRENIazhPOXQ1SkJ3NUt2TUM4OHpS''@;'; put 'put ''U1BDNmpPWklLTGZsMUp2alcxYnRqMnFzcTAzekN2VEdtdG9VY3lsMHVVWG91Sjg2RjZwdmNZTFJOcVh5NzlQcitJTFhQMVBhN3VDNVB6WCs3UVUrUGNINE42WHk2U3NjWG5tZDFrdXI4UFI2UjlZL1BjSDRONlh5NzgwYlB1dDJ4cjg3T1A4YStiUFlIbmcyemtaMW5BK3M0MzFlTjAzSGVSVWY1''@;'; put 'put ''MjV0LzN3NzJ6L2ZnZDZXUytyQUdha3ZLUmIwVWhIZGZZaDF1TUFLTGtrZUs5cmdlZWY0Nm5vTlNSSm53UFAxREtLVk5NYTZjbzNxTmVVYTc5aW9kRjJOaDNEcW5WcXhkY09OaWpYV3QrTzFHdVpRZFlTV2FkZ05VbkVzS0c2YXliNkNRd0pJNzZuck44aHBleDg0ZUpsekE2NWZGQ3ZXcExZdHM1''@;'; put 'put ''YzdSa0N0ZjI5bjllOHlYU2VvdzZLK3ZwVG94SklpZ25UZ0xpR2dGeEh5VnE4VDZOZzZnYlpTcWRhdWJMSk9vS05uYU4xMmVXQzZUckFHVGwwbjBNQkZ2dWN2WGduNFphdWdsMEV2TGFoOXA0cDgvSU85b3h2aE4zbE4rSEpsK3RzbXBUV0xCMmt4VW5iWnV2MGNlVHFoeVJQSTR1UW04blJKa3lk''@;'; put 'put ''c0tPZnlGQVI1b21jOGxLTVg1SHd2VU1SakFZcVk2WG1US2tWaUdrVW82c2dwbWdCVTY3T01Cc0w4czNXRWlXY1JmaVZ0NUtvMTRDcDUxclhTVVRMWllkamxxSndHODFRYVRDQU1mbWtUV3RFZ254NFhnR2VkNjZuaEs2WG5WYXlwSXV6TUhsL0I5a08wcy8wUUNmUnR1YUFLRzRTb214Z05Ma3lN''@;'; put 'put ''MmFKSWZWYk42SFg2c3lZTUE4WEdvMkJzQU1OME42WWc2S1pGdmllVDF6NGlYM1pac25xbGpjRklibnVuUm5KMFkzaFdXb24yNXpRVEtKN29lUVlKVk0wMmFYZ0JVelRyb2R1RW85ZHYzUEJTQWNDcGRSeWNrbGYyY2dSOGNkdmFLc3kwYWF3NWQzdkhSSUVseFBpUG5TWENlRFN0OHVqNlhFZ0or''@;'; put 'put ''QjBGelArYzVQNG51V2Fkajhwck9ETFpHbzZGRFd3SHo2V2Z5K2JTdFp3S2IvdHl0a1pFcTFITXJmOWdiVmx0QU12YkE4d2RHOVdnZ045MDM0WnRoMWZXQXJDMUQ2bm5vR3hqNTZBRTZOcU5DN1ErTFJyT28vc3FCdFJUcGJRengxbk9YUXQyMkphL1FMQWdFSFR4TTZab1VMb21jN0htMUJUeTZQ''@;'; put 'put ''RGRrN1pzdXNJeGYwbzlQWVZjWUdlbFdMMXFnc0pmNUgzNFdPNVJLbndmempZeUMzRk1DTjNHdzNrcm1GUUJZbTFkQ0FON0RmaFdYU0RaVlp3U3ZiYkRhK1AwcjUvZjV5bGZiVVZuVGNiWEhQUTdBNjZBeTArdDI3cFU3OHJXbmFROW14TW5zeXdpemMvZHluTVM1MGFuYXpmMWFKRWQwSXFkOGNM''@;'; put 'put ''NHNZWFhDK0d1ZFh6RTkrOVFuYm1MOFlLRXZwdFRJM1JDcXhHQzY3ZXRhOHZYS0M1cGF4Ullta0E1Ylk5bjY0dm0wQTNyK0lpZHdjSjRyWDNUZWthK2I0YnkyalQzajQ2Z25MYkh0YlliNWcxNTI0dHFXNW8zL0dCTzJ4UFp0aHZscG5qYlM5cHpzYUdCbjcxQzl5WFRHRGlmN3NpZ0ZmMTBueE1a''@;'; put 'put ''UU9xbUliS1hldHcreHRUNXlMclJrV1ZpSUQ5bkcvSFRHK3dkcHJYM041TkxWM2llaXBlZXAzSis0ZURZOE5Bb3VYVC82T2pHZldUM2RSRjBGdGp5Qm5WWGw5cEhPaWtGTXFORHcyTUhGOGlsa1pINzFUNTZvWTl2UUhTcjdtZ3dFYnFuWVlDR0duMGIxZURuSVV0SXlPNW9VQ2ZOZ29rbngvd3Ry''@;'; put 'put ''b2Fpb2daWFMvbDRqUFQ2eTF0Y1hpOTg4TFBuREtFWFdUNGx6SjV6MmZyK3Ric2x0QjBTS3lrT2RUOUdMd2I5eHZaak5MRmU2U1pXdWlOaEhxUVVZMkV5dTRsV3VLSmRHYm5mVzNCN1oyZDFRcFlUM3ZKeXI4ZnY5NURlemdUOW5PaHM4bnY0UmI3UFlCdldnMDJ6b3hZMmdob3JUQ2FmY2d6OW1v''@;'; put 'put ''bys5ZVFld09razA0WUN2VU9uYWtlMm9FZW43c3hRejkrdldGR0lwOXBMdk1OYy9FSDdQYzdTT1Q0bThKa3lScmNrYWNQdkp5K0JYSGV4NTZicGZrd2oyOTNteHJqUGdJVmVkaWpSSkRXcHdNUHoydEVsUkJqbHV4V0NJYmJaalQ0ZjBjUHYyVkhhM0FOVWFTb0dzQ1ZRNkhDYkhCNTl4cENzY1dz''@;'; put 'put ''ZjVQemRwTjF1czVoOXBVYTZROGhpTGk0MTNhN1NKRVBYaWRpNXRVVjg1NFVldUxLUGhxVTNPQjNadlNoZUtSQlNONWZnSGNmNERwTy84ZHpCNUs5UmVYMzV1ZVZ2SXlzS3NoNEsrYm56cS9lNUJiTjlDYXNQb1A4S3oxK1doSUpWeWpMUFRiSThKZGNwWEZmZW9lbEsxSTByTnRHVnIyaTZFblVE''@;'; put 'put ''eEVadEQrSW4zN0h0UWR5UzAvWjR0dTBjYmxxbkszbmJpOW0yYytoclBENWRicUZuVithdW43ejllKzVMdlAxNzFaZUlMRGZUTlFtZVoyY3dGOTcrSFY4bmUvdDNLZ3pQMXgvTDlwT0hydDBrWC85U05sK2ZONEkyckNYdFJ1L1p4RTY4a2wzTDdsYmozRHIwTTJMQnZlOTg3ajg5bTdqM29OWkdh''@;'; put 'put ''TCtDTm9MbDdUZTFOaTM0QStoVjhnVHdUVEhqbWI2MW13bzV6emkxMURoUHJuNTM1UXNMeU4ycnZyR0F6aW1ENzBlL0lCZGd4dmswNjhqM0NKTFM3QjVCZUNiK1BudG1DYXFReTBxc3dPdXJOb1VKVExrRkM0SU9kdUxYNm1mck54MEtMdDlrV01HYzkzeDgrSWZBR3hFK1BqYk9QOEE0SGRseE1w''@;'; put 'put ''ZXpWTXZ2anFIemVCSS9EbENiN0xHaTV3dXdQVlpyemhkNHFqMFliQThFMk0vNVlGdVF2NE5MSEUvdHdEZGZSaDhFMmtOUVl3dkE2eDhZRDl2eHp3RkFvdCtQbzdzNzUvdHhNbWdRbnZ4YlhsUlZsNC8xVnY3MU5RWXNXckRKTEpweXYvTEdtZWNRekdaaHhtNjBTYnJjYjhwSnZVTkQ5cTAzdkxW''@;'; put 'put ''RVd3dnE5K1UwYjlodWcyL01XZGNXb3BIR29TRloxcjQ1WjJoeTZLcUpNWGxRSHRqYVU1dXA3V2hxM1BCYmRGei9oVy9SS1Yvek9aZ0RXOTc0VjMvRERoNWtmK2lINFZybGM5cjM3WHdLM2dCczhNcS9lRWQ5UDFhVCt5VThLMS9HZzhIVHI4Y1IvRzE2S3RFemVveHJZeG5zQmR3RkhwbTkvLzda''@;'; put 'put ''cFl1ZXA1LzE4djNBQUJmVDRBUUdGMGw3cFFoQVBmSkkvN05QZXk1K2o5bUQzNm5uSTllZ0hmS0VENmhXakhVaW9XVWtHSm5wcWZRNk1IY1FiUjh3WW1MQzJFeDNqR1MzQ1ZsWURTdFBQY0ZyRFVyRVk5RXF1eU1FNGFIZEdjcURVSExsMktjSXhJN2NXVTkya0pWY0NDMHZBMVI3L1N3eHluWUkx''@;'; put 'put ''YjluWU9UZWVlOVlGeEc2ZHhUT3YzZEkzUldVdWE0TWk4clA5UVFIbERkS0Y3dm4ySkhLbmNmN2VqM21Razl2eitGMnRpZW91Nm0zMEdQMjlIWU0wZTlzd1VXa0VOOEp1azU4aHRCOUdNN3NhZTEzMG5QYW1WTURibzBBbXRkdjl4TmhhWW4rNXB3UnhzKzRNRHpyZGVicFNlMS8vYkNKdDhZMlBH''@;'; put 'put ''eUMxMkhBYzBDMzQxcDFyZUFKclQ0RHJuOUR2YjZ5UnN1dlg4cGVsNDduWHIrb1hVZHpCM092djVLOTNuMHE5L3E1N1BXRmVlMXN0RzNrSHBZalQ4QzhJd0VuaG5sdlhGWURzMC9tVk5QazRPRWVGblJaYzVGeGtqdGRmMUp4d21PdlhLeW9jZGRqYTNGRDQyeU9HNGl6UDUwejlwZXlPTWk3anR0''@;'; put 'put ''RFdyci9OWFpPajBidnBEMndWVHR4QjlONk9MaXZYMzlmdnpTSy9oL2lFeno2QUFFQUFBQUJBQUJWRXJUK1h3ODg5UUFmQStnQUFBQUEwOEdkaGdBQUFBRFV2cWIxL3piKzR3U0tBODRBQUFBSUFBSUFBQUFBQUFCNDJtTmdaR0JnUHZmdlBBTUR5K2IvWnY5eldMb1lnQ0xJZ05FUUFLY05CcmdB''@;'; put 'put ''QUFCNDJuV1V6V3NUVVJURno3MHpGRUVJMkVSUVFvekdZRXhNcWttMTBXb3RhV3BpQld2c1JxeFlGMUlYTGxTNlVFUUZrYTVFUlYyNGMxWHAwb1ZLZDNhaENBWDlDMFJRdXRDQ0NoVktvUzZNNXo0ekVwT2FjRGp6OGQ2OGUzL3Z6TWdTVG9NL09VcEZxUlFxTW8rU1RpR2hFNGg3UmFUMUNiWklC''@;'; put 'put ''MHB5QlQzVU5ubUFMajJCZ3h6Zkx4ZVJsL1hvazluNlYzM0o0OXZvMUZQSTh2NG12VW1keFE2OWpsMDZpbTQ5and5UEMyNDg1K293aXZZYyttRlpRZGk3eEhtTENPc01hdm9NT1YyaDMwQ1ZkVlQxQzg4L29pb2hER2tjNi9RcGp1a0JsTHd6cUhrK2xlSDllNmc2Zit6bXhMbFdrczhiMGgrSStF''@;'; put 'put ''VnMxTmZZd0hscjlDNjY1UnFPc09abGVrNFdzRk5yOVY4eXpwcktTT2tkVkRTQjdmU3NqaUFsRTRqcEpHc2Z3NEFJOW92VTU3UkFIb0t5OXdnRHZGN1dxMjU4eGViSWZUSmN3bWFaNUx3eHNxeWgwNnR5N1R3aTdEZWlJWFRKUXlRbGlYUDBsTHpDSG5JZmRHdmVRdDVxbERuV3NwdjMzcEd4MVRY''@;'; put 'put ''RlBRRDJTZGxkejVKWGduMkZuUmIvbFova0dzYlAyRFZKUXZXM3hvLytqWnIzb2tnSDdGcWxtUVpMNDljczQwZk9lcEl5VnF2SWUwRzNYc2l1V2VUMnhwalJQMU1mOURJS2Y5bTF5bkpoYnZ5YVpmeU1zN24xYTJ1MnV2VnU2d2R1T2VLK1dML01jdGJ4c0pxYS9YalR1V1hOOXJ2aFpQV0o5YjRu''@;'; put 'put ''dTcyc0g0NGgrM0FaWkE0c2grNDg4SEhFWkFReFkydjl0Ymx4WlcrQit5SGsvQTdXeWR4YWR0cWNXYlk4dFRuejdUSVd1TzJQTWZxUDJ6dmdjbWg3YVB3YTc0TGxzZFV0NHpMRDdEV0VuL1JSYXBDYTVaaER2SVo2VC9ETVZtOWoybGlUZGNOYitQTzk0VE9CYVVEN2tQY3U4TnNSUmEvN0xxeEZM''@;'; put 'put ''OVV2MCtTMTdMNFY4SjhqTGNQWVNuRi82OTlkUGp6TzViNnU4cStnOGhzcFk5Zk9lTnBGd2wxSTRuQUFBUEMxbHQrdU1wdE85M0grTjZlYk83ZTVOVUY2a2lQaUNCL2lpQWlKSG82SU9PUTRJcUtISXlUaWtCNE9rWkNJT0VJaUl1S0lFTG1Ia09naFlrUVBJUkVSUi9RZ0l0SkR5Q0VSOTNKdy9I''@;'; put 'put ''NFFCR1grMlliMnU2Q3VORXpBMytFaitBcHVkZi9vUHU5dUlSWkVRSkpJRHRsSDZqMGpQY3M5NXliQk5HWTZNYjh4cDgwWjg2cTViRFlzbEtWdDVhekwxalByaTAyMFRkajJiTmUyaHAyd2o5cm43SGw3eFFFNUVvNkNvK1lVbldQT3JIUFBXVU1obEVQSDBWVjBFelhRVnEramwrdmQ2UnZ1Vyt2''@;'; put 'put ''MzlzLzNYN3FtWEdWWGUyQmlZSHZnd2kyNmw5elZRVzV3WS9BU1k3RVo3QUF6c0k2SDgweDdjcDVyVDh1cmUwZThTOTVUSE1WVCtEcGV4TXY0RmY3cVkzMXJ2cnl2N3V2NEhYN0tML3VUL2cvK0xTSkRyQkI1b2tTVWlYUGlsbWdTcitSN01rMW15QlV5VDViSU1ubE5UVk9mcVN4Vm9IYXBDdlZN''@;'; put 'put ''cCtrNWVvRmVvZGZwSWwwS0pBSjNnWHJnR1VEQUFieUFCVElZQm52Z0dGU0JBVzdBSTNoaUVzd0pjOEhVbUFlbXhYVFlKWGFWM1dCMzJHTzJHdXdML2dvYXdadGdJOWptTEp5UEE1ekIzWE1ON2lWa0NZMkhhcUY2NkRsc0NydkNWUGlKaDNtVWY4Y2Y4bFcreGovd0xRRVNYQUlyNk1Lc1VCTEt3''@;'; put 'put ''cWx3S2R3S1RlRlB4QmJCSXVHSUZzbUtpSWlKUUl5S0NYRk1uQlRueGNXM3FTZ1VkVVdwNklFMExuMlVGcVZ2VWtIYWxZNmtNK2xLWnVWTitVQ3V5QmR5VGE3TEhjV2tlQlZXMFpXa3NxQnNLQldsR2NOaWs3RkM3TGNLcTdLYVZGUHFqUHBKL2FybTFDMzFVSzJxaG5xdk52N1RFSTNTUnJWSnJh''@;'; put 'put ''ajkxTzYwcHRZY2VoaHE2elo5V2MvcFJkM1FiL1JIL1VsL2lWdmk3dmhVZkRiK0paNk41LzhDREJETXlBQUJBQUFCUEFCb0FBb0FRUUFFQUFJQUtBQTVBSXNBQUFDVEFtc0FBd0FCZU5xTmtzdE93a0FVaHY4V05LREdLREhHc09yS0dCTzVxZUJ0WWRTd1VkUkloSzBnRlJyQllpbEdYZm8yYmx6''@;'; put 'put ''NkRGNmV3STJQNERQNGR6aXROMkxJcEoxdjV2em5Qek9uQlJERE8wTFF3bEVBTzN4NnJHR09xeDdyR0VkVE9JUU4zQXFIc1lKSDRTSEU4U0U4akZrdEloeEJSa3NJUnhIWFRvUkhzYVQ1UG1Nb2FRL0NFNWpTdzhLVGlPa3p3aytZMXVlRm41SFNONFZmRU5IYndxOFkwYTk3L0JaQ1hML0RObXkw''@;'; put 'put ''Y1FNSEZ1cG93SVdCZXo0WnBKQkdsbFJsMUtDdW9UUWRjcEZ6aTFrZDVsNGdnUUpNNWpuS3lXWWZmSlZKbFVYYVVyczFISEduamk2NVFuV2FtU2sxMW5HTVhaU3hUK3JudFJCNCtVNkRWalIrMVN4eDVWQnJxWk1iMzg0d1dOMFMrWlE2bTBxdkt3ZDBNVGw3MlRYR0t1UkR4cjNZSHVmYVAzM3pl''@;'; put 'put ''dTF5dFlZa3g5VVBaMXY1dGdMWEJHTTIxMzVPUjdMcWpMcmM3ZklyK1pva1o3OW1TOTMxcTJheTd6Mzc3ZjN0WlprN1Zad3BIemZvWFVFNm1WZFJneU9yWWptZU1JMVZ2aGV4SFB4UE9aeFRaNm82am55RmZPQll4Q1Z2WWpIaVVOUDhCTGhaaDVjQUFIamFiWk5YYkJ4VkZJYS8zN0YzM1RaTzc3''@;'; put 'put ''MVh4MTczeENrdWE4ZXhZeWN1Y2V6RVNjYTdZMmZ4ZWhmR3UzRnN1Z1FDSGtEd3dqUGxDUkM5Q2lSNFFLSlgwWHNIMFhta0IrL2NDVjRrN3NOOC94bWQ4NTh6OTk0aEMzZWRHMkFlLzdOVW0zNlF4UXl5eWNHSG4xenl5S2VBUWdMTXBJaFp6R1lPYzZmcTU3T0FoU3hpTVV0WXlqS1dzNEtWckdJ''@;'; put 'put ''MWExakxPdGF6Z1kxc1lqTmIyTW8ydGxQTURrb29KVWdaNVZSUVNSWFYxTENUWGRTeW16M3NaUjkxMU5OQUl5R2FhR1kvTFJ5Z2xUWU8wazRIaHpoTUoxMTAwOE1SZWpsS0gvMGM0emdEbk9Ba3A3QzRuYXU0bXB1NWdUdDRuK3U1bHFmNW1EdTVqYnQ1bm1lNWgwSEMzRWlFRjdGNWpoZDRsWmQ0''@;'; put 'put ''bVZmNGxpSGU0RFZlNTE2RytZV2JlSnMzZVl2VGZNK1BYTWNGUkJsaGxCaHhiaUhCUlZ5SXd4Z3BrcHhobk84NHl5UVRYTXlsWE1KajNNcmxYTVlWWE1rUC9NVGp5dElNWlN0SFB2bjVpNzg1SjVTclBPVkxLbENoQXBxcElzM1NiTTNoVjM3VFhNM1RmQzNRUWkzaWQ5N1JZaTNSVWkzVGNxM2dj''@;'; put 'put ''NzdRU3EzU2FxM1JXcTNUZW0zUVJtM2lQdTdYWm0zUlZtM1RkaFZyaDByNGd6LzVrcTlVcXFES1ZLNEtWYXBLMWFyUlR1MVNyWFpyai9acUgwK29UdlZxVUNOZjg0MUN2TXRuZk1DSGZNU252TWNuYWxLejlxdEZCOVNxTmgxVXV6cDBTSWZWcVM1MXEwZEgxTXNEUE1nalBNcERQTXcxM0tXalBN''@;'; put 'put ''T1RQS1UrZmxhL2p1bTRCblJDSjNWS2xnWVZWa1MyaHZ4MW8xYllTY1Q5bHFHdmJ0Q3h6OWcreTRXL0xqR2NpTnNqZnN2UTF4aTIwa2tSZzhhcENpdnBEM2tXdG1GK0tKSklXdUd3SFUvbTIvOUtmOGl6c2oycmtQR3dYUlEyaHhPam81WkpMUnpPQ1B3dG5udlVZNHZuRXpVc2JNMnNITWtJZkcx''@;'; put 'put ''V09KVzBmVEdETnRNdlp0QnVYc1pkRkxabmVzUXpQZHBOZXR5RnY4T2JJV0VZNkRpZGlnOWJUbW8wWnFXU2dVUm01T3MwSFJ6VG9UT3pnNVBab2ROMGNBeTZUTldZQzM4cUhpMHByUXg2TFBOMW02U2ttYWJIbXlabG1OUGpST1BET2FuME05RHpuOGxTbVpHL3g5dkJsR0ZCYnpqcWhGT2pRekg3''@;'; put 'put ''Yk1GNGh1N0wwQlBUMnRkdlpweDBrZDgvZmRxVDA2ZWRuamhZVnVXeUxGanA2eDEycktsck5XN1FheHpHWGVUMVJxSzJZNDlGeC9MR3o2dDBYV21vdnRwampjY0dqNDIrUG1NMDRTTDlObGhTRXZSWTVySGNZNFhIU3NOZ1UzWW81U1Rjb0tLcEljY3F0bUxKZk11ZHhVajM3cWRsa1RYOTJlazRZ''@;'; put 'put ''SjBmMENTNjNkT3l3UHQ5akRiN210WjVWdm8wVEhJeUdvdTR5Ym5XMk5RZVJXd25MMko3NmgrM1piY2hBQUFBZU5wajhON0JjQ0lvWWlNalkxL2tCc2FkSEF3Y0RNa0ZHeG5ZblRaSk1qSm9nUmliZVRnWU9TQXNNVFl3aThOcEY3TURBeU1ESjVETjZiU0xBY3BtWm5EWnFNTFlFUml4d2FFallp''@;'; put 'put ''Tnppc3RHTlJCdkYwY0RBeU9MUTBkeVNBUklTU1FRYk9iallPVFIyc0g0djNVRFMrOUdKZ2FYemF3cGJBd3VMZ0QrSENWZ0FBQUFBQUZZbVBaM0FBQT0pIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXN0eWxlOm5vcm1hbH1jbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9j''@;'; put 'put ''azttYXJnaW46MDtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmaWxsOmN1cnJlbnRDb2xvcn1jbHItaWNvbiAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOmN1cnJlbnRDb2xvcn1jbHItaWNvbi5pcy1ncmVlbixjbHItaWNvbi5pcy1zdWNjZXNz''@;'; put 'put ''e2ZpbGw6IzJlODUwMH1jbHItaWNvbi5pcy1ncmVlbiAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtc3VjY2VzcyAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMyZTg1MDB9Y2xyLWljb24uaXMtcmVkLGNsci1pY29uLmlzLWRhbmdlcixjbHItaWNvbi5pcy1l''@;'; put 'put ''cnJvcntmaWxsOiNlMDIyMDB9Y2xyLWljb24uaXMtcmVkIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1kYW5nZXIgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLWVycm9yIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2UwMjIwMH1jbHIt''@;'; put 'put ''aWNvbi5pcy13YXJuaW5ne2ZpbGw6I2MyN2IwMH1jbHItaWNvbi5pcy13YXJuaW5nIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2MyN2IwMH1jbHItaWNvbi5pcy1ibHVlLGNsci1pY29uLmlzLWluZm97ZmlsbDojMDA3N2I4fWNsci1pY29uLmlzLWJsdWUgLnRyYW5zcGFyZW50''@;'; put 'put ''LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLWluZm8gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uLmlzLXdoaXRlLGNsci1pY29uLmlzLWludmVyc2V7ZmlsbDojZmZmfWNsci1pY29uLmlzLXdoaXRlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHIt''@;'; put 'put ''aWNvbi5pcy1pbnZlcnNlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2ZmZn1jbHItaWNvbi5pcy1oaWdobGlnaHR7ZmlsbDojMDA3N2I4fWNsci1pY29uLmlzLWhpZ2hsaWdodCAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMwMDc3Yjh9Y2xyLWljb25bc2hhcGUk''@;'; put 'put ''PSIgdXAiXSBzdmcsY2xyLWljb25bZGlyPXVwXSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgwKX1jbHItaWNvbltzaGFwZSQ9IiBkb3duIl0gc3ZnLGNsci1pY29uW2Rpcj1kb3duXSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfWNsci1pY29uW3NoYXBlJD0iIHJpZ2h0Il0gc3ZnLGNsci1p''@;'; put 'put ''Y29uW2Rpcj1yaWdodF0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfWNsci1pY29uW3NoYXBlJD0iIGxlZnQiXSBzdmcsY2xyLWljb25bZGlyPWxlZnRdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9Y2xyLWljb25bZmxpcD1ob3Jpem9udGFsXSBzdmd7dHJhbnNmb3JtOnNjYWxl''@;'; put 'put ''KC0xKSByb3RhdGVYKDE4MGRlZyl9Y2xyLWljb25bZmxpcD12ZXJ0aWNhbF0gc3Zne3RyYW5zZm9ybTpzY2FsZSgtMSkgcm90YXRlWSgxODBkZWcpfWNsci1pY29uIC5jbHItaS1iYWRnZXtmaWxsOiNlMDIyMDB9Y2xyLWljb24gLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9r''@;'; put 'put ''ZXtzdHJva2U6I2UwMjIwMH1jbHItaWNvbj4qe2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztwb2ludGVyLWV2ZW50czpub25lfWNsci1pY29uPnN2Z3t0cmFuc2l0aW9uOmluaGVyaXR9Y2xyLWljb24+c3ZnIHRpdGxle2Rpc3BsYXk6bm9uZX1jbHItaWNvbiAuY2xyLWkt''@;'; put 'put ''c29saWQsY2xyLWljb24gLmNsci1pLXNvbGlkLS1iYWRnZWQsY2xyLWljb24gLmNsci1pLXNvbGlkLS1hbGVydGVke2Rpc3BsYXk6bm9uZX1jbHItaWNvbiAuY2xyLWktb3V0bGluZS0tYWxlcnRlZDpub3QoLmNsci1pLW91dGxpbmUpLGNsci1pY29uIC5jbHItaS1vdXRsaW5lLS1iYWRnZWQ6''@;'; put 'put ''bm90KC5jbHItaS1vdXRsaW5lKXtkaXNwbGF5Om5vbmV9Y2xyLWljb25bY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydCAuY2xyLWktb3V0bGluZS0tYWxlcnRlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQgLmNsci1pLW91dGxpbmU6bm90''@;'; put 'put ''KC5jbHItaS1vdXRsaW5lLS1hbGVydGVkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb25bY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZSAuY2xyLWktb3V0bGluZS0tYmFkZ2Vke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb25bY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZSAuY2xyLWktb3V0bGlu''@;'; put 'put ''ZTpub3QoLmNsci1pLW91dGxpbmUtLWJhZGdlZCl7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWQgLmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZSxjbHItaWNvbi5pcy1zb2xpZCAuaGFz''@;'; put 'put ''LXNvbGlkIC5jbHItaS1vdXRsaW5lLS1iYWRnZWR7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1hbGVydGVkOm5vdCguY2xyLWktc29saWQpLGNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1iYWRnZWQ6bm90''@;'; put 'put ''KC5jbHItaS1zb2xpZCl7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYmFkZ2Vke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRn''@;'; put 'put ''ZS5oYXMtc29saWQgLmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZS5oYXMtc29saWQgLmNsci1pLW91dGxpbmUtLWJhZGdlZCxjbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdlLmhhcy1zb2xpZCAu''@;'; put 'put ''Y2xyLWktc29saWQ6bm90KC5jbHItaS1zb2xpZC0tYmFkZ2VkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLXNvbGlkLS1hbGVydGVke2Rpc3BsYXk6YmxvY2t9Y2xyLWljb24uaXMtc29saWRbY2xh''@;'; put 'put ''c3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVydF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWQsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1hbGVy''@;'; put 'put ''dF0gLmNhbi1hbGVydC5oYXMtc29saWQgLmNsci1pLXNvbGlkOm5vdCguY2xyLWktc29saWQtLWFsZXJ0ZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5oYXMtYmFkZ2UtLXN1Y2Nlc3MgLmNsci1pLWJhZGdle2ZpbGw6IzJlODUwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLXN1Y2Nlc3MgLmNsci1p''@;'; put 'put ''LWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzJlODUwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLWVycm9yIC5jbHItaS1iYWRnZXtmaWxsOiNlMDIyMDB9Y2xyLWljb24uaGFzLWJhZGdlLS1lcnJvciAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0''@;'; put 'put ''cm9rZTojZTAyMjAwfWNsci1pY29uLmhhcy1iYWRnZS0taW5mbyAuY2xyLWktYmFkZ2V7ZmlsbDojMDA3N2I4fWNsci1pY29uLmhhcy1iYWRnZS0taW5mbyAuY2xyLWktYmFkZ2UgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uLmhhcy1hbGVydCAuY2xy''@;'; put 'put ''LWktYWxlcnR7ZmlsbDojYzI3YjAwfWNsci1pY29uLmhhcy1hbGVydCAuY2xyLWktYWxlcnQgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojYzI3YjAwfWNsci1pY29uIC5pcy1vZmYtc2NyZWVue3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7aGVp''@;'; put 'put ''Z2h0OjFweCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3RvcDotMXB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCAtMXB4IWltcG9ydGFudH1AZm9udC1mYWNle2ZvbnQtZmFt''@;'; put 'put ''aWx5OnRleHQtc2VjdXJpdHktZGlzYztzcmM6dXJsKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ub3BwYS90ZXh0LXNlY3VyaXR5L21hc3Rlci9kaXN0L3RleHQtc2VjdXJpdHktZGlzYy53b2ZmKX1ib2R5LGh0bWx7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtwYWRkaW5n''@;'; put 'put ''OjA7bWFyZ2luOjB9Ym9keS5zaG91bGQtbG9naW4gY2xyLW1vZGFsLGh0bWwuc2hvdWxkLWxvZ2luIGNsci1tb2RhbHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWJ1dHRvbjpmb2N1c3tvdXRsaW5lOm5vbmV9LnNsaWRlcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMjBweDttYXJnaW4tbGVm''@;'; put 'put ''dDo3NXB4O21hcmdpbi10b3A6NzBweDtoZWlnaHQ6NXB4O292ZXJmbG93LXg6aGlkZGVufS5saW5le3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6LjQ7YmFja2dyb3VuZDojNzNENTQ0O3dpZHRoOjE1MCU7aGVpZ2h0OjVweH0uc3VibGluZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5k''@;'; put 'put ''OiM3M0Q1NDQ7aGVpZ2h0OjVweH0uaW5je2FuaW1hdGlvbjppbmNyZWFzZSAycyBpbmZpbml0ZX0uZGVje2FuaW1hdGlvbjpkZWNyZWFzZSAycyAuNXMgaW5maW5pdGV9QGtleWZyYW1lcyBpbmNyZWFzZXswJXtsZWZ0Oi01JTt3aWR0aDo1JX10b3tsZWZ0OjEzMCU7d2lkdGg6MTAwJX19QGtl''@;'; put 'put ''eWZyYW1lcyBkZWNyZWFzZXswJXtsZWZ0Oi04MCU7d2lkdGg6ODAlfXRve2xlZnQ6MTEwJTt3aWR0aDoxMCV9fS5hcHAtbG9hZGluZ3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQ6IzMxNDM1MTtm''@;'; put 'put ''bGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjB9LnNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5oLWF1dG97aGVpZ2h0OmF1dG99LmgtdW5zZXQtaXtoZWlnaHQ6dW5zZXQhaW1wb3J0YW50''@;'; put 'put ''fS5taW4taC01MHZoe21pbi1oZWlnaHQ6NTB2aH0uaC0yNHZoLC5oLTI1dmh7aGVpZ2h0OjI1dmh9LmgtNzB2aHtoZWlnaHQ6NzB2aH0uaC04MHZoe2hlaWdodDo4MHZofS5oLTEwMHtoZWlnaHQ6MTAwJX0udy01MHZ3e3dpZHRoOjUwdnd9LnctMTAwe3dpZHRoOjEwMCV9LnctNDB7d2lkdGg6''@;'; put 'put ''NDAlfS5taW4tdy0we21pbi13aWR0aDowcHh9Lm14LTV7bWFyZ2luOjAgNXB4fS5teS01e21hcmdpbjo1cHggMH0ubXktMTV7bWFyZ2luOjE1cHggMH0ubXktMTAtbXgtYXV0b3ttYXJnaW46MTBweCBhdXRvfS5tLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tLTEwe21hcmdpbjoxMHB4fS5tdC0w''@;'; put 'put ''e21hcmdpbi10b3A6MH0ubXQtMC1pe21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm10LTMtbmVnYXRpdmV7bWFyZ2luLXRvcDotM3B4fS5tdC01e21hcmdpbi10b3A6NXB4fS5tdC01LWl7bWFyZ2luLXRvcDo1cHghaW1wb3J0YW50fS5tdC0ye21hcmdpbi10b3A6MnB4fS5tdC0yLWl7bWFyZ2lu''@;'; put 'put ''LXRvcDoycHghaW1wb3J0YW50fS5tdC0xMHttYXJnaW4tdG9wOjEwcHh9Lm10LTE1e21hcmdpbi10b3A6MTVweH0ubXQtMTd7bWFyZ2luLXRvcDoxN3B4fS5tdC0yMHttYXJnaW4tdG9wOjIwcHh9Lm1sLTB7bWFyZ2luLWxlZnQ6MH0ubWwtM3ttYXJnaW4tbGVmdDozcHh9Lm1sLTV7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6NXB4fS5tbC0xMHttYXJnaW4tbGVmdDoxMHB4fS5tbC0xNXttYXJnaW4tbGVmdDoxNXB4fS5tbC0yMHttYXJnaW4tbGVmdDoyMHB4fS5tbC0yMC1pe21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50fS5tci0we21hcmdpbi1yaWdodDowfS5tci01e21hcmdpbi1yaWdodDo1cHh9Lm1y''@;'; put 'put ''LTEwe21hcmdpbi1yaWdodDoxMHB4fS5tci0xMnttYXJnaW4tcmlnaHQ6MTJweH0ubXItMjB7bWFyZ2luLXJpZ2h0OjIwcHh9Lm1iLTB7bWFyZ2luLWJvdHRvbTowfS5tYi0waXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tYi01e21hcmdpbi1ib3R0b206NXB4fS5tYi0xMHttYXJnaW4t''@;'; put 'put ''Ym90dG9tOjEwcHh9Lm1iLTIwe21hcmdpbi1ib3R0b206MjBweH0ubWItMzB7bWFyZ2luLWJvdHRvbTozMHB4fS5wLTB7cGFkZGluZzowfS5wLTEwe3BhZGRpbmc6MTBweH0ucGItMHtwYWRkaW5nLWJvdHRvbTowfS5wYi0xMHtwYWRkaW5nLWJvdHRvbToxMHB4fS5weS01e3BhZGRpbmc6NXB4''@;'; put 'put ''IDB9LnB5LTEwe3BhZGRpbmc6MTBweCAwfS5iYWNrZ3JvdW5kLXRyYW5zcGFyZW50e2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LmJhY2tncm91bmQtdHJhbnNwYXJlbnQtaXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH0uY29sb3ItZ3JheXtjb2xvcjojNWE1YTVhfS5jb2xvci1k''@;'; put 'put ''YXJrLWdyYXl7Y29sb3I6IzQ5NTk2N30uY29sb3ItZGFya2VyLWdyYXl7Y29sb3I6IzMxNDM1MX0uY29sb3Itd2hpdGV7Y29sb3I6I2ZmZn0uY29sb3Itd2hpdGUtaXtjb2xvcjojZmZmIWltcG9ydGFudH0uY29sb3ItZ3JlZW57Y29sb3I6IzRiOWU0Yn0uY29sb3ItZGMtZ3JlZW57Y29sb3I6''@;'; put 'put ''IzgxYjQ0MH0uY29sb3ItcmVke2NvbG9yOiNlNDU0NTR9LmNvbG9yLW9yYW5nZXtjb2xvcjojZTY3ZTIyfS5jb2xvci1ibHVle2NvbG9yOiMzZjhjYzN9LmNvbG9yLXllbGxvd3tjb2xvcjojZjFjNDBmfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uY3Vyc29yLWRlZnVhbHR7Y3Vy''@;'; put 'put ''c29yOmRlZmF1bHR9LmN1cnNvci1kZWZhdWx0LWl7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50fS5iYWNrZ3JvdW5kLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0udGV4dC1jZW50ZXJ7dGV4''@;'; put 'put ''dC1hbGlnbjpjZW50ZXJ9LmZvbnQtc2l6ZS0xNXtmb250LXNpemU6MTVweH0uZm9udC1zaXplLTE4e2ZvbnQtc2l6ZToxOHB4fS5mb250LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS5mb250LWJvbGQtaXtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50fS5mb250LXdlaWdodC0zMDB7Zm9udC13ZWln''@;'; put 'put ''aHQ6MzAwfS5mb250LXdlaWdodC03MDB7Zm9udC13ZWlnaHQ6NzAwfS53b3JkLWJyZWFre3dvcmQtYnJlYWs6YnJlYWstd29yZH0ud29yZC1icmVhay1hbGx7d29yZC1icmVhazpicmVhay1hbGx9LnBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5wb3NpdGlvbi1hYnNvbHV0''@;'; put 'put ''ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZC1ub25le2Rpc3BsYXk6bm9uZX0uZC1ibG9ja3tkaXNwbGF5OmJsb2NrfS5kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uZC1mbGV4e2Rpc3BsYXk6ZmxleH0uZC1jb250ZW50c3tkaXNwbGF5OmNvbnRlbnRzfS5mbGV4LXVuc2V0e2Zs''@;'; put 'put ''ZXg6dW5zZXR9LmFsaWduLXNlbGYtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmR9LmFsaWduLXNlbGYtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5hbGlnbi1pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNvbnRlbnQtY2VudGVye2p1c3RpZnktY29udGVudDpj''@;'; put 'put ''ZW50ZXJ9Lmp1c3RpZnktY29udGVudC1jZW50ZXItaXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWNvbnRlbnQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVz''@;'; put 'put ''dGlmeS1jb250ZW50LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY29udGVudC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZ2FwLTV7Z2FwOjVweH0uY2xyLWdh''@;'; put 'put ''cC0we2dhcDowfS5vdmVyZmxvdy1hdXRve292ZXJmbG93OmF1dG99LnotaW5kZXgtaGlnaGVzdHt6LWluZGV4OjEwMDAwMDAwfS52ZXJ0aWNhbC1hbGlnbi1taWRkbGV7dmVydGljYWwtYWxpZ246bWlkZGxlfS5pY29uLWRjLWZpbGx7ZmlsbDojODFiNDQwfS5kYXRhZ3JpZC1jdXN0b20tZm9v''@;'; put 'put ''dGVyIC5kYXRhZ3JpZC1vdXRlci13cmFwcGVye3dpZHRoOjEwMCV9LnByb2dyZXNTdGF0aWN7bWFyZ2luLXRvcDotNnB4IWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7ei1pbmRleDoxMDAwMCFpbXBvcnRhbnR9LnByb2dyZXNzLC5wcm9ncmVzcy1zdGF0aWN7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjojZjVmNmZlO2JvcmRlci1yYWRpdXM6MDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6NnB4O21hcmdpbjowO21heC1oZWlnaHQ6LjU4MzMzM3JlbTttaW4taGVpZ2h0Oi4xNjY2NjdyZW07b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7d2lkdGg6Y2FsYygxMDAlIC0g''@;'; put 'put ''NjNweCl9LnByb2dyZXNzLmxvb3A6YWZ0ZXJ7YW5pbWF0aW9uOmNsci1wcm9ncmVzcy1sb29wZXIgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtjb250ZW50OiIgIjt0b3A6LjE2NjY2N3JlbTtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOiM2MGI1MTU7d2lkdGg6NzUlfS5iYWRnZS13YXJuaW5ne2NvbG9yOiNmZmYhaW1wb3J0YW50fS5jb250ZW50LWNvbnRhaW5lciAuY29udGVudC1hcmVhIC5jYXJkLWhlYWRlciBoM3ttYXJnaW4tdG9wOjEwcHh9Lm1vZGFsLWhlYWRlciAuY2xvc2UgY2xyLWljb257ZGlzcGxh''@;'; put 'put ''eTpub25lfS5zaG93LWNsb3NlIC5tb2RhbC1oZWFkZXIgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMThweDtyaWdodDotMTBweH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOiNEOTRCMkU7Y29sb3I6''@;'; put 'put ''I2ZmZjtib3JkZXI6bm9uZX0uY2FyZC1oZWFkZXJ7Zm9udC13ZWlnaHQ6MzAwfS5zZWxlY3Qgc2VsZWN0OmZvY3Vze2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM0OTU5Njc7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHRyYW5zcGFyZW50IDk1JSwjNDk1YTY3IDApIG5vLXJl''@;'; put 'put ''cGVhdH0uY2xyLXRyZWVub2RlLWNoaWxkcmVue21hcmdpbi1sZWZ0Oi4ycmVtIWltcG9ydGFudH0udGFibGUtYWN0aXZle2JhY2tncm91bmQ6I2Q4ZTNlOSFpbXBvcnRhbnQ7Y29sb3I6IzAwMCFpbXBvcnRhbnR9LnRhYmxlLWFjdGl2ZTpmb2N1c3tiYWNrZ3JvdW5kOiNkOGUzZTl9Y2xyLXNl''@;'; put 'put ''bGVjdC1jb250YWluZXIgLmNsci1jb250cm9sLWNvbnRhaW5lcixjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0e3dpZHRoOjEwMCV9dGJvZHl7Zm9udC13ZWlnaHQ6NDAwfWgz''@;'; put 'put ''LGg0e2NvbG9yOiM1ODU4NTg7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxcmVtO21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjB9aDEsaDJ7Y29sb3I6IzU4NTg1ODtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xp''@;'; put 'put ''bmUtaGVpZ2h0OjJyZW07bWFyZ2luLXRvcDoxcmVtO21hcmdpbi1ib3R0b206MH1jbHItaWNvbi5pcy1pbmZve2ZpbGw6IzgwYjQ0MX0uZGF0YWdyaWQtaG9zdCwuZGF0YWdyaWQtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRh''@;'; put 'put ''bnR9LmJ0bi5idG4tZGFuZ2VyLC5idG4uYnRuLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNlZjRmMmU7YmFja2dyb3VuZC1jb2xvcjojZDk0YjJlO2NvbG9yOiNmZmZ9LmQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jbHItZmxl''@;'; put 'put ''eC0xe2ZsZXg6MX0uY2xyLWZsZXgtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uYm9yZGVyLTB7Ym9yZGVyOjB9LmJveC1zaGFkb3ctbm9uZXtib3gtc2hhZG93Om5vbmV9LmJveC1zaGFkb3ctbm9uZS1pe2JveC1zaGFkb3c6''@;'; put 'put ''bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tjb2xvcjojODI4MjgyfS5oYW5kc29udGFibGUubGlzdGJveHtwYWRkaW5nOjVweCAwIDVweCA1cHg7Ym94LXNoYWRvdzowIDRweCAyMHB4ICMwMDAwMDA3MH0uaGFuZHNvbnRhYmxlIHRkLmh0SW52YWxp''@;'; put 'put ''ZHtiYWNrZ3JvdW5kOnJnYmEoMjMwLDM5LDAsLjY3ODQzMTM3MjUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJlZCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9Lm1hcmdpbi10b3AtMjB7bWFyZ2luLXRvcDoyMHB4fS5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudH0u''@;'; put 'put ''dW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVufUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LmQtc20tbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2Nr''@;'; put 'put ''IWltcG9ydGFudH0uZC1zbS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1zbS10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC1zbS10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtc20tZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5k''@;'; put 'put ''LXNtLWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jbHItZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZ2FwLXNtLTV7Z2FwOjVweH0uY2xyLWdhcC1zbS0we2dhcDow''@;'; put 'put ''fX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5kLW1kLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1tZC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbWQtYmxvY2t7ZGlz''@;'; put 'put ''cGxheTpibG9jayFpbXBvcnRhbnR9LmQtbWQtdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtbWQtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLW1kLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1tZC1pbmxpbmUtZmxleHtkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1mbGV4IWltcG9ydGFudH0uY2xyLWZsZXgtbWQtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtbWQtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uY2xyLWdhcC1tZC01e2dhcDo1cHh9LmNsci1nYXAtbWQtMHtnYXA6MH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4''@;'; put 'put ''KXsuZC1sZy1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtbGctaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1sZy1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLWxnLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLWxn''@;'; put 'put ''LXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLWxnLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1sZy1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtbGctaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmNsci1m''@;'; put 'put ''bGV4LWxnLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci1mbGV4LWxnLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1nYXAtbGctNXtnYXA6NXB4fS5jbHItZ2FwLWxnLTB7Z2FwOjB9fS5kYXRhZ3JpZC1ib2R5e3BhZGRpbmctYm90dG9tOjJyZW0haW1wb3J0YW50fS5hYm9y''@;'; put 'put ''dE1zZ3t3aGl0ZS1zcGFjZTpwcmUtd3JhcDtmb250LWZhbWlseTptb25vc3BhY2V9I2dyYXBoIHN2Z3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5uby10YWJsZS1zZWxlY3RlZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24t''@;'; put 'put ''aXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6d2hpdGU7ei1pbmRleDoxMDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowfS5jb3B5UmlnaHR7YmFja2dyb3VuZDojNDk1OTY3IWltcG9ydGFudDtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo1cHggMCA0cHg7ei1pbmRleDoxMDB9Lm5hdi10cmVlPmNsci10cmVlLW5vZGUuY2xyLWV4cGFuZGVke2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH1jbHItdHJlZS1ub2Rle292ZXJmbG93LXk6dmlz''@;'; put 'put ''aWJsZX1jbHItdHJlZS1ub2RlOmZvY3Vze291dGxpbmU6bm9uZSFpbXBvcnRhbnR9Y2xyLXRyZWUtbm9kZSAuY2xyLXRyZWVub2RlLWNhcmV0e3dpZHRoOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudH1jbHItdHJlZS1ub2RlIC5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250''@;'; put 'put ''YWluZXJ7cGFkZGluZzowIDhweDt3aWR0aDphdXRvO2hlaWdodDphdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Y2xyLXRyZWUtbm9kZSAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcjpmb2N1c3tvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5jbHItdHJlZW5vZGUt''@;'; put 'put ''Y29udGVudCBwe3doaXRlLXNwYWNlOm5vd3JhcH0uc2VhcmNoLW5vZGV7bWFyZ2luLWJvdHRvbTo1cHh9LnRyZWUtc2VhcmNoLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHItaW5wdXQtY29u''@;'; put 'put ''dGFpbmVye21hcmdpbjowfS50cmVlLXNlYXJjaC13cmFwcGVyIGNsci1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bWFyZ2luOjVweCAwIDA7YmFja2dyb3VuZDp3aGl0ZTtjdXJzb3I6cG9pbnRlcn0uY2xyLXRyZWUtbm9kZXtvdmVyZmxvdzp2aXNpYmxlIWltcG9y''@;'; put 'put ''dGFudH0uY29udGVudC1jb250YWluZXJ7d2lkdGg6MTAwJX1ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCl7Lnd0SG9sZGVye3dpZHRoOjEwMCUhaW1wb3J0YW50fX1pbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX1AbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUp''@;'; put 'put ''LCgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXtjbHItdHJlZS1ub2RlLmNsci1leHBhbmRlZHtwYWRkaW5nLWJvdHRvbToyMHB4O21pbi1oZWlnaHQ6YXV0b30uY2xyLXRyZWUtbm9kZXttaW4taGVpZ2h0OjI0cHh9LmNsci10cmVlbm9kZS1jaGlsZHJlbntvdmVyZmxvdzpoaWRkZW4haW1w''@;'; put 'put ''b3J0YW50fS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IGNsci1pY29ue21pbi13aWR0aDoxNnB4O21pbi1oZWlnaHQ6MTZweH0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHItaWNvbntib3R0b206MnB4fS5jb250ZW50LWNvbnRhaW5lcntoZWln''@;'; put 'put ''aHQ6MTAwJX0uY29udGVudC1hcmVhPi5jYXJke21hcmdpbi1ib3R0b206MjBweH0ucmVjb3JkLWVkaXQtbW9kYWwgdGV4dGFyZWF7bWluLWhlaWdodDo0MnB4fX0uYm9yZGVyLWJvdHRvbS1kaXZpZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkM2QzZDN9LmxvYWRpbmdTcGlubmVye2hl''@;'; put 'put ''aWdodDo3MHZoO2ZsZXg6MTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5kaXNhYmxlLXBhc3N3b3JkLW1hbmFnZXJ7LXdlYmtpdC10ZXh0LXNlY3VyaXR5OmRpc2M7LW1vei10ZXh0LXNlY3VyaXR5''@;'; put 'put ''OmRpc2M7dGV4dC1zZWN1cml0eTpkaXNjO2ZvbnQtZmFtaWx5OnRleHQtc2VjdXJpdHktZGlzY30ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9aHIubGlnaHR7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RlZGVkZX0uc3Bpbm5lcntiYWNrZ3JvdW5kOnVybCgvU0FTU3Rv''@;'; put 'put ''cmVkUHJvY2Vzcy8/X1BST0dSQU09cFpLZDZGOTVqRUN2UlFsTjBMQ2ZkQT09L3dlYjkvaW1hZ2VzL3NwaW5uZXIuMTZmNzYzY2ViYzZiNjRkZi1zdmcpIWltcG9ydGFudH0uY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye2JhY2tncm91bmQ6dXJsKC9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JB''@;'; put 'put ''TT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvY2FyZXQuNjVmMWZjMGFjYmU0YzdmZi1zdmcpIWltcG9ydGFudH0udGFibGUtc2VhcmNoLXdyYXBwZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1zZWFyY2gtd3JhcHBlciAuaW5wdXQtd3JhcHBlcntwb3NpdGlv''@;'; put 'put ''bjpyZWxhdGl2ZTttaW4td2lkdGg6MTcwcHh9LnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVyIGNsci1pY29uLC50YWJsZS1zZWFyY2gtd3JhcHBlciAuaW5wdXQtd3JhcHBlciAuc3Bpbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxOXB4O3RvcDowfS50YWJsZS1zZWFy''@;'; put 'put ''Y2gtd3JhcHBlciAuaW5wdXQtd3JhcHBlciBjbHItaWNvbntjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOndoaXRlfS50YWJsZS1zZWFyY2gtd3JhcHBlciBjbHItaW5wdXQtY29udGFpbmVye21hcmdpbi10b3A6LTVweDttYXJnaW4tcmlnaHQ6MH0udGFibGUtc2VhcmNoLXdyYXBwZXIgY2xy''@;'; put 'put ''LWlucHV0LWNvbnRhaW5lciBsYWJlbHtkaXNwbGF5Om5vbmV9LnRhYmxlLXNlYXJjaC13cmFwcGVyIGNsci1jaGVja2JveC1jb250YWluZXJ7bWFyZ2luLXRvcDowfS50YWJsZS1zZWFyY2gtd3JhcHBlciBpbnB1dHtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjOTk5fS50''@;'; put 'put ''YWJsZS1zZWFyY2gtd3JhcHBlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwudGFibGUtc2VhcmNoLXdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyIGlu''@;'; put 'put ''cHV0W3R5cGU9bnVtYmVyXXstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkfS5kYy1sb2NrZWQtY29udHJvbHtvcGFjaXR5Oi40O2N1cnNvcjpub3QtYWxsb3dlZCFpbXBvcnRhbnR9LmxpbmstaXR7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0K'';'; put 'run;'; put '%sasjsout(CSS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let path=services/web9/images; %let service=caret-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+LmNscy0xe2ZpbGw6I2IzYjNiMzt9PC9zdHlsZT4KICAgIDwvZGVmcz4KICAgIDx0aXRsZT5DYXJldDwvdGl0bGU+CiAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xzLTEiIGQ9Ik02LDlMMS4yLDQuMmEwLjY4LDAuNjgsMCwwLDEsMS0xTDYsNy4wOCw5Ljg0LDMuMjRhMC42OCwwLjY4LDAsMSwxLDEsMVoiLz4KPC9zdmc+Cg=='';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=caret.65f1fc0acbe4c7ff-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+LmNscy0xe2ZpbGw6I2IzYjNiMzt9PC9zdHlsZT4KICAgIDwvZGVmcz4KICAgIDx0aXRsZT5DYXJldDwvdGl0bGU+CiAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xzLTEiIGQ9Ik02LDlMMS4yLDQuMmEwLjY4LDAuNjgsMCwwLDEsMS0xTDYsNy4wOCw5Ljg0LDMuMjRhMC42OCwwLjY4LDAsMSwxLDEsMVoiLz4KPC9zdmc+Cg=='';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=datacontroller-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB3aWR0aD0iMTY5MCIgaGVpZ2h0PSIyNDAiIHZpZXdCb3g9IjAgMCAxNjkwIDI0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwNV83KSI+CjxwYXRoIGQ9Ik0xMjQuOSA1NS4yMDAxQzEyOC4y''@;'; put 'put ''IDU1LjYwMDEgMTMxLjQgNTUuOTAwMSAxMzQuNyA1Ni4zMDAxQzE0Mi42IDU3LjQwMDEgMTUwLjMgNTguOTAwMSAxNTcuNSA2Mi42MDAxQzE1OS42IDYzLjcwMDEgMTYxLjYgNjQuOTAwMSAxNjMuMSA2Ni44MDAxQzE2NS41IDY5LjYwMDEgMTY1LjQgNzIuNjAwMSAxNjMgNzUuNDAwMUMxNjAu''@;'; put 'put ''NSA3OC4yMDAxIDE1Ny4zIDc5LjgwMDEgMTUzLjkgODEuMTAwMUMxNDYgODQuMjAwMSAxMzcuNyA4NS42MDAxIDEyOS4zIDg2LjMwMDFDMTE1LjYgODcuNDAwMSAxMDIuMSA4Ni45MDAxIDg4LjcgODMuNzAwMUM4NC4zIDgyLjcwMDEgODAgODEuMzAwMSA3Ni4xIDc5LjEwMDFDNzQuNiA3OC4z''@;'; put 'put ''MDAxIDczLjIgNzcuMzAwMSA3MS45IDc2LjEwMDFDNjguMyA3Mi42MDAxIDY4LjMgNjguOTAwMSA3MiA2NS42MDAxQzc2IDYyLjAwMDEgODAuOSA2MC4zMDAxIDg1LjkgNTguOTAwMUM5Mi45IDU2LjkwMDEgMTAwIDU1LjkwMDEgMTA3LjIgNTUuNDAwMUMxMDcuOCA1NS40MDAxIDEwOC41IDU1''@;'; put 'put ''LjYwMDEgMTA5IDU1LjEwMDFDMTE0LjIgNTUuMjAwMSAxMTkuNiA1NS4yMDAxIDEyNC45IDU1LjIwMDFaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik02OS4yMDAxIDEzNy4zQzc1LjYwMDEgMTQ1LjUgODQuNzAwMSAxNDguNSA5NC4xMDAxIDE1MC41QzExMi43IDE1NC41IDEzMS4zIDE1''@;'; put 'put ''NCAxNDkuNCAxNDcuNkMxNTUgMTQ1LjYgMTYwLjIgMTQyLjkgMTYzLjkgMTM3LjlDMTY0LjUgMTM3LjEgMTY0LjggMTM3LjUgMTY1LjEgMTM4LjFDMTY1LjcgMTM5LjQgMTY2IDE0MC43IDE2NiAxNDIuMUMxNjYgMTQ3IDE2NiAxNTIgMTY2IDE1Ni45QzE2NiAxNjAuMSAxNjQuNSAxNjIuNiAx''@;'; put 'put ''NjIuMyAxNjQuOEMxNTcuNyAxNjkuNCAxNTEuOSAxNzEuOSAxNDUuOCAxNzMuOEMxMzMuNSAxNzcuNiAxMjAuOSAxNzguNCAxMDguMiAxNzcuNUM5OC43MDAxIDE3Ni44IDg5LjUgMTc1IDgwLjggMTcxLjFDNzcuMSAxNjkuNCA3My43MDAxIDE2Ny40IDcxLjAwMDEgMTY0LjNDNjguOTAwMSAx''@;'; put 'put ''NjEuOSA2Ny44IDE1OS4yIDY3LjggMTU2QzY3LjkgMTUxLjUgNjcuOCAxNDcgNjcuOCAxNDIuNUM2Ny44IDE0MC43IDY4LjEwMDEgMTM5IDY5LjIwMDEgMTM3LjNaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik02OS4yOTk5IDEwNi40Qzc0LjU5OTkgMTEzLjUgODEuOTk5OSAxMTYuNSA4''@;'; put 'put ''OS44OTk5IDExOC42QzEwOC44IDEyMy42IDEyNy43IDEyMy41IDE0Ni40IDExNy45QzE1Mi42IDExNi4xIDE1OC40IDExMy40IDE2Mi45IDEwOC41QzE2My41IDEwNy45IDE2My45IDEwNi41IDE2NC42IDEwNi43QzE2NS42IDEwNyAxNjUuNiAxMDguNCAxNjUuOSAxMDkuNUMxNjYuMyAxMTEu''@;'; put 'put ''MiAxNjYuMSAxMTIuOSAxNjYuMSAxMTQuNkMxNjYuMSAxMTggMTY2IDEyMS4zIDE2Ni4xIDEyNC43QzE2Ni4zIDEyOC45IDE2NC42IDEzMi4yIDE2MS41IDEzNC45QzE1Ni44IDEzOS4xIDE1MS4xIDE0MS42IDE0NSAxNDMuMkMxMjQuNSAxNDguNyAxMDQuMSAxNDguNiA4My45OTk5IDE0MS42''@;'; put 'put ''Qzc5LjA5OTkgMTM5LjkgNzQuNTk5OSAxMzcuNSA3MC45OTk5IDEzMy42QzY4Ljc5OTkgMTMxLjIgNjcuNyAxMjguNCA2Ny43IDEyNS4xQzY3LjggMTIwLjcgNjcuNyAxMTYuMiA2Ny43IDExMS44QzY3LjggMTEwIDY4LjA5OTkgMTA4LjIgNjkuMjk5OSAxMDYuNFoiIGZpbGw9IiNFMEUwRTAi''@;'; put 'put ''Lz4KPHBhdGggZD0iTTY5LjEgNzYuN0M3MC42IDgxLjEgNzQuMiA4My4wOTk5IDc4IDg0Ljg5OTlDODQuOCA4OC4wOTk5IDkyLjEgODkuNiA5OS40IDkwLjVDMTEzLjkgOTIuMyAxMjguNCA5Mi4xIDE0Mi43IDg5LjFDMTQ4LjUgODcuOSAxNTQuMSA4Ni4zIDE1OS4yIDgzLjFDMTYyLjEgODEu''@;'; put 'put ''MyAxNjMuNiA3OS42IDE2NC42IDc2LjhDMTY1LjYgNzguMiAxNjUuOSA3OS43IDE2NS45IDgxLjJDMTY1LjkgODYuMiAxNjYgOTEuMSAxNjUuOSA5Ni4xQzE2NS44IDEwMC4zIDE2My40IDEwMy4zIDE2MC4zIDEwNS44QzE1NC41IDExMC40IDE0Ny43IDExMi44IDE0MC42IDExNC40QzEyMS44''@;'; put 'put ''IDExOC41IDEwMy4yIDExOC4yIDg0LjkgMTEyQzgwLjEgMTEwLjQgNzUuNSAxMDguMSA3MS44IDEwNC41QzY5IDEwMS44IDY3LjUgOTguNyA2Ny42IDk0LjdDNjcuNyA5MC40IDY3LjYgODYuMSA2Ny42IDgxLjhDNjcuOCA3OS45IDY4LjEgNzguMyA2OS4xIDc2LjdaIiBmaWxsPSIjOEVDNjNG''@;'; put 'put ''Ii8+CjxwYXRoIGQ9Ik0xODMuOSAyMTAuOUMyMDAuMiAyMTEuOCAyMDguOSAxOTEuOCAxOTcuMSAxODAuNUMxODQuNyAxNjguNiAxNjQuMyAxNzkuNyAxNjcuNSAxOTYuNUM5My44IDI0My41IC0wLjk5OTk4MSAxNzMuMiAyNiA4Ny44MDAxTDcuODAwMDIgNzUuNjAwMUMtMzMuMSAxODQuMyA5''@;'; put 'put ''Mi44IDI3Ni4yIDE4My45IDIxMC45Wk0xNzguNyAxODcuNEMxODYuMyAxNzkuNSAxOTguNCAxOTAuNSAxOTEuMyAxOTguOEMxODMuOCAyMDcuNSAxNzAuNiAxOTUuOCAxNzguNyAxODcuNFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTM1LjIgNTAuNzAwMUM0Ni45IDYxLjkwMDEgNjYu''@;'; put 'put ''MiA1Mi43MDAxIDY1LjEgMzYuNzAwMUMxMzguNyAtMTAuNyAyMzQgNTkuNTAwMSAyMDcgMTQ1LjJMMjI1LjIgMTU3LjRDMjY0LjkgNTEuODAwMSAxNDQuNCAtNDMuMjk5OSA1MS4yIDIwLjYwMDFDMzMuNyAxNy4wMDAxIDIyLjQgMzguNDAwMSAzNS4yIDUwLjcwMDFaTTUzLjYgNDMuODAwMUM0''@;'; put 'put ''NS44IDUxLjkwMDEgMzMuNSA0MC4xMDAxIDQxLjMgMzIuMDAwMUM0OS4xIDIzLjkwMDEgNjEuNCAzNS43MDAxIDUzLjYgNDMuODAwMVoiIGZpbGw9IiM4RUM2M0YiLz4KPHBhdGggZD0iTTMyMy41NzUgNDcuODg3NEMzMjMuNTc1IDQ2Ljc5MDEgMzIzLjkxNyA0NS44OTg1IDMyNC42MDMgNDUu''@;'; put 'put ''MjEyN0MzMjUuNDI2IDQ0LjM4OTcgMzI2LjM4NiA0My45NzgyIDMyNy40ODQgNDMuOTc4MkgzNjkuMDQ0QzM3OC45MiA0My45NzgyIDM4OC4wNDEgNDUuNzYxMyAzOTYuNDA4IDQ5LjMyNzZDNDA0LjkxMyA1Mi44OTM4IDQxMi4yNTEgNTcuOTAwMyA0MTguNDIzIDY0LjM0N0M0MjQuNTk2IDcw''@;'; put 'put ''LjY1NjUgNDI5LjQ2NSA3OC4yMDA1IDQzMy4wMzEgODYuOTc5QzQzNi41OTcgOTUuNzU3NSA0MzguMzggMTA1LjQyOCA0MzguMzggMTE1Ljk4OUM0MzguMzggMTI2LjU1MSA0MzYuNTk3IDEzNi4yMjEgNDMzLjAzMSAxNDQuOTk5QzQyOS40NjUgMTUzLjc3OCA0MjQuNTk2IDE2MS4zOSA0MTgu''@;'; put 'put ''NDIzIDE2Ny44MzdDNDEyLjI1MSAxNzQuMTQ2IDQwNC45MTMgMTc5LjA4NCAzOTYuNDA4IDE4Mi42NTFDMzg4LjA0MSAxODYuMjE3IDM3OC45MiAxODggMzY5LjA0NCAxODhIMzI3LjQ4NEMzMjYuMzg2IDE4OCAzMjUuNDI2IDE4Ny42NTcgMzI0LjYwMyAxODYuOTcxQzMyMy45MTcgMTg2LjE0''@;'; put 'put ''OCAzMjMuNTc1IDE4NS4xODggMzIzLjU3NSAxODQuMDkxVjQ3Ljg4NzRaTTM0OS4yOTMgNjkuMjg0OVYxNjIuNjkzSDM2OS42NjJDMzc1LjgzNCAxNjIuNjkzIDM4MS40NTggMTYxLjUyNyAzODYuNTMzIDE1OS4xOTZDMzkxLjYwOCAxNTYuODY0IDM5NS45MjggMTUzLjY0MSAzOTkuNDk1IDE0''@;'; put 'put ''OS41MjZDNDAzLjE5OCAxNDUuNDExIDQwNi4wMSAxNDAuNTQxIDQwNy45MyAxMzQuOTE4QzQwOS45ODggMTI5LjE1NyA0MTEuMDE2IDEyMi44NDcgNDExLjAxNiAxMTUuOTg5QzQxMS4wMTYgMTA5LjI2OCA0MDkuOTg4IDEwMy4wMjcgNDA3LjkzIDk3LjI2NjNDNDA2LjAxIDkxLjUwNTQgNDAz''@;'; put 'put ''LjE5OCA4Ni41Njc1IDM5OS40OTUgODIuNDUyNkMzOTUuOTI4IDc4LjMzNzcgMzkxLjYwOCA3NS4xMTQzIDM4Ni41MzMgNzIuNzgyNkMzODEuNDU4IDcwLjQ1MDggMzc1LjgzNCA2OS4yODQ5IDM2OS42NjIgNjkuMjg0OUgzNDkuMjkzWk01MzEuMDkzIDE3Ny45MThDNTI3LjM4OSAxODAuNjYy''@;'; put 'put ''IDUyMy4xMzcgMTgzLjEzMSA1MTguMzM3IDE4NS4zMjVDNTEzLjUzNiAxODcuMzgzIDUwOC43MzUgMTg4LjQxMSA1MDMuOTM1IDE4OC40MTFDNDk2LjgwMiAxODguNDExIDQ5MC4yMTggMTg3LjEwOCA0ODQuMTgzIDE4NC41MDJDNDc4LjE0OCAxODEuODk2IDQ3Mi45MzYgMTc4LjI2MSA0Njgu''@;'; put 'put ''NTQ2IDE3My41OThDNDY0LjI5NCAxNjguOTM0IDQ2MC45MzQgMTYzLjQ0OCA0NTguNDY1IDE1Ny4xMzhDNDU1Ljk5NiAxNTAuODI5IDQ1NC43NjEgMTQzLjk3IDQ1NC43NjEgMTM2LjU2NEM0NTQuNzYxIDEyOS40MzEgNDU2LjA2NCAxMjIuNzc5IDQ1OC42NzEgMTE2LjYwNkM0NjEuMjc3IDEx''@;'; put 'put ''MC4yOTcgNDY0Ljg0MyAxMDQuODEgNDY5LjM2OSAxMDAuMTQ3QzQ3My44OTYgOTUuMzQ2IDQ3OS4xMDggOTEuNTc0IDQ4NS4wMDYgODguODMwN0M0OTEuMDQxIDg2LjA4NzQgNDk3LjQ4OCA4NC43MTU4IDUwNC4zNDYgODQuNzE1OEM1MDkuMTQ3IDg0LjcxNTggNTEzLjg3OSA4NS44MTMxIDUx''@;'; put 'put ''OC41NDIgODguMDA3N0M1MjMuMjA2IDkwLjA2NTIgNTI3LjM4OSA5Mi40NjU1IDUzMS4wOTMgOTUuMjA4OFY4OS4wMzY1QzUzMS4wOTMgODcuOTM5MSA1MzEuNDM2IDg3LjA0NzYgNTMyLjEyMiA4Ni4zNjE4QzUzMi45NDUgODUuNTM4OCA1MzMuOTA1IDg1LjEyNzMgNTM1LjAwMiA4NS4xMjcz''@;'; put 'put ''SDU1MS4wNUM1NTMuNjU2IDg1LjEyNzMgNTU0Ljk1OSA4Ni40MzAzIDU1NC45NTkgODkuMDM2NVYxODQuMDkxQzU1NC45NTkgMTg2LjY5NyA1NTMuNjU2IDE4OCA1NTEuMDUgMTg4SDUzNS4wMDJDNTMzLjkwNSAxODggNTMyLjk0NSAxODcuNjU3IDUzMi4xMjIgMTg2Ljk3MUM1MzEuNDM2IDE4''@;'; put 'put ''Ni4xNDggNTMxLjA5MyAxODUuMTg4IDUzMS4wOTMgMTg0LjA5MVYxNzcuOTE4Wk00NzkuNjU3IDEzNi41NjRDNDc5LjY1NyAxNDAuMjY3IDQ4MC4zNDIgMTQzLjc2NSA0ODEuNzE0IDE0Ny4wNTdDNDgzLjA4NiAxNTAuMjExIDQ4NC45MzcgMTUzLjAyMyA0ODcuMjY5IDE1NS40OTJDNDg5LjYw''@;'; put 'put ''MSAxNTcuOTYxIDQ5Mi4yNzYgMTU5Ljk1IDQ5NS4yOTMgMTYxLjQ1OUM0OTguNDQ4IDE2Mi44MyA1MDEuNzQgMTYzLjUxNiA1MDUuMTY5IDE2My41MTZDNTA4Ljg3MiAxNjMuNTE2IDUxMi4yMzMgMTYyLjgzIDUxNS4yNTEgMTYxLjQ1OUM1MTguMjY4IDE1OS45NSA1MjAuODc0IDE1Ny45NjEg''@;'; put 'put ''NTIzLjA2OSAxNTUuNDkyQzUyNS40MDEgMTUzLjAyMyA1MjcuMTg0IDE1MC4yMTEgNTI4LjQxOCAxNDcuMDU3QzUyOS42NTMgMTQzLjc2NSA1MzAuMjcgMTQwLjI2NyA1MzAuMjcgMTM2LjU2NEM1MzAuMjcgMTMyLjg2IDUyOS42NTMgMTI5LjQzMSA1MjguNDE4IDEyNi4yNzZDNTI3LjE4NCAx''@;'; put 'put ''MjIuOTg0IDUyNS40MDEgMTIwLjEwNCA1MjMuMDY5IDExNy42MzVDNTIwLjg3NCAxMTUuMTY2IDUxOC4yNjggMTEzLjI0NiA1MTUuMjUxIDExMS44NzRDNTEyLjIzMyAxMTAuMzY1IDUwOC44NzIgMTA5LjYxMSA1MDUuMTY5IDEwOS42MTFDNTAxLjc0IDEwOS42MTEgNDk4LjQ0OCAxMTAuMzY1''@;'; put 'put ''IDQ5NS4yOTMgMTExLjg3NEM0OTIuMjc2IDExMy4yNDYgNDg5LjYwMSAxMTUuMTY2IDQ4Ny4yNjkgMTE3LjYzNUM0ODQuOTM3IDEyMC4xMDQgNDgzLjA4NiAxMjIuOTg0IDQ4MS43MTQgMTI2LjI3NkM0ODAuMzQyIDEyOS40MzEgNDc5LjY1NyAxMzIuODYgNDc5LjY1NyAxMzYuNTY0Wk01NzQu''@;'; put 'put ''NDA3IDg5LjAzNjVDNTc0LjQwNyA4Ny45MzkxIDU3NC43NSA4Ny4wNDc2IDU3NS40MzYgODYuMzYxOEM1NzYuMTIyIDg1LjUzODggNTc3LjAxMyA4NS4xMjczIDU3OC4xMTEgODUuMTI3M0g1OTMuMzM2VjU4LjE3NDZDNTkzLjMzNiA1Ny4wNzczIDU5My42NzkgNTYuMTg1OCA1OTQuMzY0IDU1''@;'; put 'put ''LjQ5OTlDNTk1LjE4NyA1NC42NzcgNTk2LjE0OCA1NC4yNjU1IDU5Ny4yNDUgNTQuMjY1NUg2MTMuMjkzQzYxNS44OTkgNTQuMjY1NSA2MTcuMjAyIDU1LjU2ODUgNjE3LjIwMiA1OC4xNzQ2Vjg1LjEyNzNINjM1LjMwOEM2MzYuNDA1IDg1LjEyNzMgNjM3LjI5NyA4NS41Mzg4IDYzNy45ODIg''@;'; put 'put ''ODYuMzYxOEM2MzguNjY4IDg3LjA0NzYgNjM5LjAxMSA4Ny45MzkxIDYzOS4wMTEgODkuMDM2NVYxMDQuMjYyQzYzOS4wMTEgMTA1LjM1OSA2MzguNjY4IDEwNi4yNSA2MzcuOTgyIDEwNi45MzZDNjM3LjI5NyAxMDcuNjIyIDYzNi40MDUgMTA3Ljk2NSA2MzUuMzA4IDEwNy45NjVINjE3LjIw''@;'; put 'put ''MlYxODQuMDkxQzYxNy4yMDIgMTg2LjY5NyA2MTUuODk5IDE4OCA2MTMuMjkzIDE4OEg1OTcuMjQ1QzU5Ni4xNDggMTg4IDU5NS4xODcgMTg3LjY1NyA1OTQuMzY0IDE4Ni45NzFDNTkzLjY3OSAxODYuMTQ4IDU5My4zMzYgMTg1LjE4OCA1OTMuMzM2IDE4NC4wOTFWMTA3Ljk2NUg1NzguMTEx''@;'; put 'put ''QzU3Ny4wMTMgMTA3Ljk2NSA1NzYuMTIyIDEwNy42MjIgNTc1LjQzNiAxMDYuOTM2QzU3NC43NSAxMDYuMjUgNTc0LjQwNyAxMDUuMzU5IDU3NC40MDcgMTA0LjI2MlY4OS4wMzY1Wk03MjkuNjkzIDE3Ny45MThDNzI1Ljk5IDE4MC42NjIgNzIxLjczOCAxODMuMTMxIDcxNi45MzcgMTg1LjMy''@;'; put 'put ''NUM3MTIuMTM3IDE4Ny4zODMgNzA3LjMzNiAxODguNDExIDcwMi41MzUgMTg4LjQxMUM2OTUuNDAzIDE4OC40MTEgNjg4LjgxOSAxODcuMTA4IDY4Mi43ODQgMTg0LjUwMkM2NzYuNzQ4IDE4MS44OTYgNjcxLjUzNiAxNzguMjYxIDY2Ny4xNDcgMTczLjU5OEM2NjIuODk1IDE2OC45MzQgNjU5''@;'; put 'put ''LjUzNCAxNjMuNDQ4IDY1Ny4wNjUgMTU3LjEzOEM2NTQuNTk2IDE1MC44MjkgNjUzLjM2MiAxNDMuOTcgNjUzLjM2MiAxMzYuNTY0QzY1My4zNjIgMTI5LjQzMSA2NTQuNjY1IDEyMi43NzkgNjU3LjI3MSAxMTYuNjA2QzY1OS44NzcgMTEwLjI5NyA2NjMuNDQzIDEwNC44MSA2NjcuOTcgMTAw''@;'; put 'put ''LjE0N0M2NzIuNDk2IDk1LjM0NiA2NzcuNzA4IDkxLjU3NCA2ODMuNjA3IDg4LjgzMDdDNjg5LjY0MiA4Ni4wODc0IDY5Ni4wODggODQuNzE1OCA3MDIuOTQ3IDg0LjcxNThDNzA3Ljc0NyA4NC43MTU4IDcxMi40NzkgODUuODEzMSA3MTcuMTQzIDg4LjAwNzdDNzIxLjgwNyA5MC4wNjUyIDcy''@;'; put 'put ''NS45OSA5Mi40NjU1IDcyOS42OTMgOTUuMjA4OFY4OS4wMzY1QzcyOS42OTMgODcuOTM5MSA3MzAuMDM2IDg3LjA0NzYgNzMwLjcyMiA4Ni4zNjE4QzczMS41NDUgODUuNTM4OCA3MzIuNTA1IDg1LjEyNzMgNzMzLjYwMyA4NS4xMjczSDc0OS42NTFDNzUyLjI1NyA4NS4xMjczIDc1My41NiA4''@;'; put 'put ''Ni40MzAzIDc1My41NiA4OS4wMzY1VjE4NC4wOTFDNzUzLjU2IDE4Ni42OTcgNzUyLjI1NyAxODggNzQ5LjY1MSAxODhINzMzLjYwM0M3MzIuNTA1IDE4OCA3MzEuNTQ1IDE4Ny42NTcgNzMwLjcyMiAxODYuOTcxQzczMC4wMzYgMTg2LjE0OCA3MjkuNjkzIDE4NS4xODggNzI5LjY5MyAxODQu''@;'; put 'put ''MDkxVjE3Ny45MThaTTY3OC4yNTcgMTM2LjU2NEM2NzguMjU3IDE0MC4yNjcgNjc4Ljk0MyAxNDMuNzY1IDY4MC4zMTUgMTQ3LjA1N0M2ODEuNjg2IDE1MC4yMTEgNjgzLjUzOCAxNTMuMDIzIDY4NS44NyAxNTUuNDkyQzY4OC4yMDEgMTU3Ljk2MSA2OTAuODc2IDE1OS45NSA2OTMuODk0IDE2''@;'; put 'put ''MS40NTlDNjk3LjA0OSAxNjIuODMgNzAwLjM0IDE2My41MTYgNzAzLjc3IDE2My41MTZDNzA3LjQ3MyAxNjMuNTE2IDcxMC44MzMgMTYyLjgzIDcxMy44NTEgMTYxLjQ1OUM3MTYuODY5IDE1OS45NSA3MTkuNDc1IDE1Ny45NjEgNzIxLjY2OSAxNTUuNDkyQzcyNC4wMDEgMTUzLjAyMyA3MjUu''@;'; put 'put ''Nzg0IDE1MC4yMTEgNzI3LjAxOSAxNDcuMDU3QzcyOC4yNTMgMTQzLjc2NSA3MjguODcgMTQwLjI2NyA3MjguODcgMTM2LjU2NEM3MjguODcgMTMyLjg2IDcyOC4yNTMgMTI5LjQzMSA3MjcuMDE5IDEyNi4yNzZDNzI1Ljc4NCAxMjIuOTg0IDcyNC4wMDEgMTIwLjEwNCA3MjEuNjY5IDExNy42''@;'; put 'put ''MzVDNzE5LjQ3NSAxMTUuMTY2IDcxNi44NjkgMTEzLjI0NiA3MTMuODUxIDExMS44NzRDNzEwLjgzMyAxMTAuMzY1IDcwNy40NzMgMTA5LjYxMSA3MDMuNzcgMTA5LjYxMUM3MDAuMzQgMTA5LjYxMSA2OTcuMDQ5IDExMC4zNjUgNjkzLjg5NCAxMTEuODc0QzY5MC44NzYgMTEzLjI0NiA2ODgu''@;'; put 'put ''MjAxIDExNS4xNjYgNjg1Ljg3IDExNy42MzVDNjgzLjUzOCAxMjAuMTA0IDY4MS42ODYgMTIyLjk4NCA2ODAuMzE1IDEyNi4yNzZDNjc4Ljk0MyAxMjkuNDMxIDY3OC4yNTcgMTMyLjg2IDY3OC4yNTcgMTM2LjU2NFoiIGZpbGw9IiNFMEUwRTAiLz4KPHBhdGggZD0iTTg3My4yMDYgNzQuMjIy''@;'; put 'put ''OEM4NzIuNjU3IDc1LjA0NTggODcxLjkwMyA3NS41MjU4IDg3MC45NDMgNzUuNjYzQzg2OS45ODIgNzUuODAwMiA4NjkuMDIyIDc1LjU5NDQgODY4LjA2MiA3NS4wNDU4Qzg2NC45MDcgNzMuMTI1NSA4NjEuMTM1IDcxLjQ3OTUgODU2Ljc0NiA3MC4xMDc5Qzg1Mi4zNTcgNjguNzM2MiA4NDcu''@;'; put 'put ''ODk5IDY4LjExOSA4NDMuMzczIDY4LjI1NjJDODM3LjQ3NSA2OC4yNTYyIDgzMS45ODggNjkuNTU5MiA4MjYuOTEzIDcyLjE2NTNDODIxLjk3NSA3NC42MzQzIDgxNy42NTQgNzguMDYzNCA4MTMuOTUxIDgyLjQ1MjZDODEwLjI0OCA4Ni43MDQ3IDgwNy4zNjcgOTEuNzExMSA4MDUuMzEgOTcu''@;'; put 'put ''NDcyQzgwMy4yNTIgMTAzLjIzMyA4MDIuMjkyIDEwOS40MDUgODAyLjQyOSAxMTUuOTg5QzgwMi41NjYgMTIyLjg0NyA4MDMuNTk1IDEyOS4yMjUgODA1LjUxNSAxMzUuMTIzQzgwNy41NzMgMTQwLjg4NCA4MTAuMzg1IDE0NS44OTEgODEzLjk1MSAxNTAuMTQzQzgxNy41MTcgMTU0LjM5NSA4''@;'; put 'put ''MjEuODM4IDE1Ny43NTUgODI2LjkxMyAxNjAuMjI0QzgzMS45ODggMTYyLjU1NiA4MzcuNjggMTYzLjcyMiA4NDMuOTkgMTYzLjcyMkM4NTAuMDI1IDE2My41ODUgODU1LjUxMiAxNjIuNTU2IDg2MC40NSAxNjAuNjM2Qzg2NS41MjUgMTU4LjcxNiA4NzAuNTMxIDE1NS45NzIgODc1LjQ2OSAx''@;'; put 'put ''NTIuNDA2Qzg3Ni40MjkgMTUxLjcyIDg3Ny40NTggMTUxLjUxNCA4NzguNTU1IDE1MS43ODlDODc5LjY1MiAxNTEuOTI2IDg4MC41NDQgMTUyLjQ3NSA4ODEuMjMgMTUzLjQzNUw4OTEuMTA2IDE2OC4yNDhDODkyLjM0IDE3MC4xNjkgODkxLjk5NyAxNzEuODgzIDg5MC4wNzcgMTczLjM5MkM4''@;'; put 'put ''ODIuNTMzIDE3OS4xNTMgODc1LjE5NSAxODMuMzM2IDg2OC4wNjIgMTg1Ljk0M0M4NjAuOTMgMTg4LjU0OSA4NTIuOTc0IDE4OS44NTIgODQ0LjE5NiAxODkuODUyQzgzMy42MzQgMTg5Ljk4OSA4MjQuMTAxIDE4OC4zNDMgODE1LjU5NyAxODQuOTE0QzgwNy4yMyAxODEuMzQ4IDgwMC4wMjkg''@;'; put 'put ''MTc2LjM0MSA3OTMuOTk0IDE2OS44OTRDNzg4LjA5NiAxNjMuMzExIDc4My41MDEgMTU1LjQ5MiA3ODAuMjA5IDE0Ni40MzlDNzc3LjA1NCAxMzcuMzg3IDc3NS40MDggMTI3LjM3NCA3NzUuMjcxIDExNi40MDFDNzc1LjEzNCAxMDcuMDczIDc3Ni41NzQgOTguMDIwNyA3NzkuNTkyIDg5LjI0''@;'; put 'put ''MjJDNzgyLjc0NiA4MC4zMjY2IDc4Ny4yMDQgNzIuMzcxMSA3OTIuOTY1IDY1LjM3NTdDNzk4LjcyNiA1OC4zODA0IDgwNS43MjEgNTIuNzU2NyA4MTMuOTUxIDQ4LjUwNDZDODIyLjE4MSA0NC4yNTI1IDgzMS40MzkgNDIuMTI2NSA4NDEuNzI3IDQyLjEyNjVDODQ4LjcyMiA0MS45ODkzIDg1''@;'; put 'put ''NS41OCA0Mi44MTIzIDg2Mi4zMDEgNDQuNTk1NEM4NjkuMTU5IDQ2LjM3ODYgODc1Ljg4IDQ5LjY3MDUgODgyLjQ2NCA1NC40NzEyQzg4My40MjQgNTUuMTU3IDg4My45NzMgNTYuMDQ4NiA4ODQuMTEgNTcuMTQ1OUM4ODQuMjQ3IDU4LjEwNjEgODgzLjk3MyA1OS4wNjYyIDg4My4yODcgNjAu''@;'; put 'put ''MDI2M0w4NzMuMjA2IDc0LjIyMjhaTTkwNi4yMTIgMTM2LjU2NEM5MDYuMjEyIDEyOS4yOTQgOTA3LjUxNSAxMjIuNTA0IDkxMC4xMjEgMTE2LjE5NUM5MTIuNzI3IDEwOS44ODUgOTE2LjIyNSAxMDQuMzk5IDkyMC42MTQgOTkuNzM1MkM5MjUuMTQgOTUuMDcxNyA5MzAuNDIxIDkxLjQzNjgg''@;'; put 'put ''OTM2LjQ1NiA4OC44MzA3Qzk0Mi40OTIgODYuMDg3NCA5NDkuMDA3IDg0LjcxNTggOTU2LjAwMiA4NC43MTU4Qzk2Mi45OTggODQuNzE1OCA5NjkuNDQ0IDg2LjA4NzQgOTc1LjM0MiA4OC44MzA3Qzk4MS4zNzcgOTEuNDM2OCA5ODYuNTkgOTUuMDcxNyA5OTAuOTc5IDk5LjczNTJDOTk1LjUw''@;'; put 'put ''NSAxMDQuMzk5IDk5OS4wMDMgMTA5Ljg4NSAxMDAxLjQ3IDExNi4xOTVDMTAwNC4wOCAxMjIuNTA0IDEwMDUuMzggMTI5LjI5NCAxMDA1LjM4IDEzNi41NjRDMTAwNS4zOCAxNDMuODMzIDEwMDQuMDggMTUwLjYyMyAxMDAxLjQ3IDE1Ni45MzJDOTk5LjAwMyAxNjMuMjQyIDk5NS41MDUgMTY4''@;'; put 'put ''LjcyOSA5OTAuOTc5IDE3My4zOTJDOTg2LjU5IDE3OC4wNTYgOTgxLjM3NyAxODEuNzU5IDk3NS4zNDIgMTg0LjUwMkM5NjkuMzA3IDE4Ny4xMDggOTYyLjc5MiAxODguNDExIDk1NS43OTYgMTg4LjQxMUM5NDguODAxIDE4OC40MTEgOTQyLjI4NiAxODcuMTA4IDkzNi4yNTEgMTg0LjUwMkM5''@;'; put 'put ''MzAuMjE1IDE4MS43NTkgOTI0LjkzNSAxNzguMDU2IDkyMC40MDggMTczLjM5MkM5MTYuMDE5IDE2OC43MjkgOTEyLjUyMSAxNjMuMjQyIDkwOS45MTUgMTU2LjkzMkM5MDcuNDQ2IDE1MC42MjMgOTA2LjIxMiAxNDMuODMzIDkwNi4yMTIgMTM2LjU2NFpNOTMxLjEwNyAxMzYuNTY0QzkzMS4x''@;'; put 'put ''MDcgMTQwLjQwNCA5MzEuNzI0IDE0NC4wMzkgOTMyLjk1OSAxNDcuNDY4QzkzNC4xOTMgMTUwLjc2IDkzNS45MDggMTUzLjY0MSA5MzguMTAyIDE1Ni4xMDlDOTQwLjI5NyAxNTguNTc4IDk0Mi45MDMgMTYwLjU2NyA5NDUuOTIxIDE2Mi4wNzZDOTQ4LjkzOCAxNjMuNDQ4IDk1Mi4yMyAxNjQu''@;'; put 'put ''MTM0IDk1NS43OTYgMTY0LjEzNEM5NTkuMzYzIDE2NC4xMzQgOTYyLjY1NSAxNjMuNDQ4IDk2NS42NzIgMTYyLjA3NkM5NjguODI3IDE2MC41NjcgOTcxLjUwMiAxNTguNTc4IDk3My42OTYgMTU2LjEwOUM5NzUuODkxIDE1My42NDEgOTc3LjYwNSAxNTAuNzYgOTc4Ljg0IDE0Ny40NjhDOTgw''@;'; put 'put ''LjA3NCAxNDQuMDM5IDk4MC42OTIgMTQwLjQwNCA5ODAuNjkyIDEzNi41NjRDOTgwLjY5MiAxMzIuNzIzIDk4MC4wNzQgMTI5LjE1NyA5NzguODQgMTI1Ljg2NUM5NzcuNjA1IDEyMi40MzYgOTc1Ljg5MSAxMTkuNDg3IDk3My42OTYgMTE3LjAxOEM5NzEuNTAyIDExNC41NDkgOTY4LjgyNyAx''@;'; put 'put ''MTIuNjI5IDk2NS42NzIgMTExLjI1N0M5NjIuNjU1IDEwOS43NDggOTU5LjM2MyAxMDguOTk0IDk1NS43OTYgMTA4Ljk5NEM5NTIuMjMgMTA4Ljk5NCA5NDguOTM4IDEwOS43NDggOTQ1LjkyMSAxMTEuMjU3Qzk0Mi45MDMgMTEyLjYyOSA5NDAuMjk3IDExNC41NDkgOTM4LjEwMiAxMTcuMDE4''@;'; put 'put ''QzkzNS45MDggMTE5LjQ4NyA5MzQuMTkzIDEyMi40MzYgOTMyLjk1OSAxMjUuODY1QzkzMS43MjQgMTI5LjE1NyA5MzEuMTA3IDEzMi43MjMgOTMxLjEwNyAxMzYuNTY0Wk0xMDUwLjkgMTg0LjA5MUMxMDUwLjkgMTg2LjY5NyAxMDQ5LjU5IDE4OCAxMDQ2Ljk5IDE4OEgxMDMwLjk0QzEwMjku''@;'; put 'put ''ODQgMTg4IDEwMjguODggMTg3LjY1NyAxMDI4LjA2IDE4Ni45NzFDMTAyNy4zNyAxODYuMTQ4IDEwMjcuMDMgMTg1LjE4OCAxMDI3LjAzIDE4NC4wOTFWODkuMDM2NUMxMDI3LjAzIDg3LjkzOTEgMTAyNy4zNyA4Ny4wNDc2IDEwMjguMDYgODYuMzYxOEMxMDI4Ljg4IDg1LjUzODggMTAyOS44''@;'; put 'put ''NCA4NS4xMjczIDEwMzAuOTQgODUuMTI3M0gxMDQ2Ljk5QzEwNDkuNTkgODUuMTI3MyAxMDUwLjkgODYuNDMwMyAxMDUwLjkgODkuMDM2NVY5Ni42NDlDMTA1NC44OCA5My4zNTcxIDEwNTkuNDcgOTAuNTQ1MyAxMDY0LjY4IDg4LjIxMzVDMTA2OS44OSA4NS44ODE3IDEwNzUuMDQgODQuNzE1''@;'; put 'put ''OCAxMDgwLjExIDg0LjcxNThDMTA4NC45MSA4NC43MTU4IDEwODkuMzcgODUuNjA3NCAxMDkzLjQ5IDg3LjM5MDVDMTA5Ny42IDg5LjAzNjUgMTEwMS4xIDkxLjQzNjggMTEwMy45OCA5NC41OTE2QzExMDcgOTcuNjA5MiAxMTA5LjMzIDEwMS4xNzUgMTExMC45OCAxMDUuMjlDMTExMi42MiAx''@;'; put 'put ''MDkuNDA1IDExMTMuNDQgMTEzLjkzMiAxMTEzLjQ0IDExOC44N1YxODQuMDkxQzExMTMuNDQgMTg2LjY5NyAxMTEyLjE0IDE4OCAxMTA5LjUzIDE4OEgxMDkzLjQ5QzEwOTIuMzkgMTg4IDEwOTEuNDMgMTg3LjY1NyAxMDkwLjYxIDE4Ni45NzFDMTA4OS45MiAxODYuMTQ4IDEwODkuNTggMTg1''@;'; put 'put ''LjE4OCAxMDg5LjU4IDE4NC4wOTFWMTI2LjY4OEMxMDg5LjU4IDEyMS4wNjQgMTA4OC4yNyAxMTYuNzQ0IDEwODUuNjcgMTEzLjcyNkMxMDgzLjA2IDExMC41NzEgMTA3OS4zNiAxMDguOTk0IDEwNzQuNTYgMTA4Ljk5NEMxMDcxLjU0IDEwOC45OTQgMTA2OC41OSAxMDkuNjExIDEwNjUuNzEg''@;'; put 'put ''MTEwLjg0NUMxMDYyLjk3IDExMS45NDMgMTA2MC41IDExMy41MiAxMDU4LjMgMTE1LjU3OEMxMDU2LjI1IDExNy40OTggMTA1NC41MyAxMTkuODMgMTA1My4xNiAxMjIuNTczQzEwNTEuOTMgMTI1LjMxNiAxMDUxLjMxIDEyOC4xOTcgMTA1MS4zMSAxMzEuMjE0TDEwNTAuOSAxODQuMDkxWk0x''@;'; put 'put ''MTI3Ljg3IDg5LjAzNjVDMTEyNy44NyA4Ny45MzkxIDExMjguMjEgODcuMDQ3NiAxMTI4LjkgODYuMzYxOEMxMTI5LjU4IDg1LjUzODggMTEzMC40OCA4NS4xMjczIDExMzEuNTcgODUuMTI3M0gxMTQ2LjhWNTguMTc0NkMxMTQ2LjggNTcuMDc3MyAxMTQ3LjE0IDU2LjE4NTggMTE0Ny44MyA1''@;'; put 'put ''NS40OTk5QzExNDguNjUgNTQuNjc3IDExNDkuNjEgNTQuMjY1NSAxMTUwLjcxIDU0LjI2NTVIMTE2Ni43NkMxMTY5LjM2IDU0LjI2NTUgMTE3MC42NyA1NS41Njg1IDExNzAuNjcgNTguMTc0NlY4NS4xMjczSDExODguNzdDMTE4OS44NyA4NS4xMjczIDExOTAuNzYgODUuNTM4OCAxMTkxLjQ1''@;'; put 'put ''IDg2LjM2MThDMTE5Mi4xMyA4Ny4wNDc2IDExOTIuNDcgODcuOTM5MSAxMTkyLjQ3IDg5LjAzNjVWMTA0LjI2MkMxMTkyLjQ3IDEwNS4zNTkgMTE5Mi4xMyAxMDYuMjUgMTE5MS40NSAxMDYuOTM2QzExOTAuNzYgMTA3LjYyMiAxMTg5Ljg3IDEwNy45NjUgMTE4OC43NyAxMDcuOTY1SDExNzAu''@;'; put 'put ''NjdWMTg0LjA5MUMxMTcwLjY3IDE4Ni42OTcgMTE2OS4zNiAxODggMTE2Ni43NiAxODhIMTE1MC43MUMxMTQ5LjYxIDE4OCAxMTQ4LjY1IDE4Ny42NTcgMTE0Ny44MyAxODYuOTcxQzExNDcuMTQgMTg2LjE0OCAxMTQ2LjggMTg1LjE4OCAxMTQ2LjggMTg0LjA5MVYxMDcuOTY1SDExMzEuNTdD''@;'; put 'put ''MTEzMC40OCAxMDcuOTY1IDExMjkuNTggMTA3LjYyMiAxMTI4LjkgMTA2LjkzNkMxMTI4LjIxIDEwNi4yNSAxMTI3Ljg3IDEwNS4zNTkgMTEyNy44NyAxMDQuMjYyVjg5LjAzNjVaTTEyNzMuMjggMTA4LjE3MUMxMjcyLjg3IDEwOS4yNjggMTI3Mi4xOCAxMTAuMDIyIDEyNzEuMjIgMTEwLjQz''@;'; put 'put ''NEMxMjcwLjI2IDExMC44NDUgMTI2OS4yMyAxMTAuNzc3IDEyNjguMTQgMTEwLjIyOEMxMjY3LjA0IDEwOS42OCAxMjY1LjY3IDEwOS4yIDEyNjQuMDIgMTA4Ljc4OEMxMjYyLjUxIDEwOC4zNzcgMTI2MC44NyAxMDguMTcxIDEyNTkuMDggMTA4LjE3MUMxMjU2LjA3IDEwOC4xNzEgMTI1My4x''@;'; put 'put ''OSAxMDguNzg4IDEyNTAuNDQgMTEwLjAyMkMxMjQ3LjcgMTExLjI1NyAxMjQ1LjIzIDExMi45NzIgMTI0My4wNCAxMTUuMTY2QzEyNDAuOTggMTE3LjIyNCAxMjM5LjMzIDExOS42OTMgMTIzOC4xIDEyMi41NzNDMTIzNi44NiAxMjUuMzE2IDEyMzYuMjUgMTI4LjE5NyAxMjM2LjI1IDEzMS4y''@;'; put 'put ''MTRMMTIzNS44NCAxODQuMDkxQzEyMzUuODQgMTg1LjE4OCAxMjM1LjQ5IDE4Ni4xNDggMTIzNC44MSAxODYuOTcxQzEyMzQuMTIgMTg3LjY1NyAxMjMzLjIzIDE4OCAxMjMyLjEzIDE4OEgxMjE1Ljg4QzEyMTQuNzggMTg4IDEyMTMuODIgMTg3LjY1NyAxMjEzIDE4Ni45NzFDMTIxMi4zMSAx''@;'; put 'put ''ODYuMTQ4IDEyMTEuOTcgMTg1LjE4OCAxMjExLjk3IDE4NC4wOTFWODkuMDM2NUMxMjExLjk3IDg3LjkzOTEgMTIxMi4zMSA4Ny4wNDc2IDEyMTMgODYuMzYxOEMxMjEzLjgyIDg1LjUzODggMTIxNC43OCA4NS4xMjczIDEyMTUuODggODUuMTI3M0gxMjMyLjEzQzEyMzMuMjMgODUuMTI3MyAx''@;'; put 'put ''MjM0LjEyIDg1LjUzODggMTIzNC44MSA4Ni4zNjE4QzEyMzUuNDkgODcuMDQ3NiAxMjM1Ljg0IDg3LjkzOTEgMTIzNS44NCA4OS4wMzY1Vjk0LjU5MTZDMTIzOS44MSA5MS43MTExIDEyNDQuMDcgODkuMzc5NCAxMjQ4LjU5IDg3LjU5NjJDMTI1My4xMiA4NS42NzU5IDEyNTcuOTkgODQuNzE1''@;'; put 'put ''OCAxMjYzLjIgODQuNzE1OEMxMjY4LjU1IDg0LjcxNTggMTI3My4yMSA4NS43NDQ1IDEyNzcuMTkgODcuODAyQzEyNzkuMTEgODkuMDM2NSAxMjc5LjczIDkwLjYxMzggMTI3OS4wNCA5Mi41MzQxTDEyNzMuMjggMTA4LjE3MVpNMTI4NS4zMyAxMzYuNTY0QzEyODUuMzMgMTI5LjI5NCAxMjg2''@;'; put 'put ''LjYzIDEyMi41MDQgMTI4OS4yNCAxMTYuMTk1QzEyOTEuODUgMTA5Ljg4NSAxMjk1LjM0IDEwNC4zOTkgMTI5OS43MyA5OS43MzUyQzEzMDQuMjYgOTUuMDcxNyAxMzA5LjU0IDkxLjQzNjggMTMxNS41NyA4OC44MzA3QzEzMjEuNjEgODYuMDg3NCAxMzI4LjEyIDg0LjcxNTggMTMzNS4xMiA4''@;'; put 'put ''NC43MTU4QzEzNDIuMTIgODQuNzE1OCAxMzQ4LjU2IDg2LjA4NzQgMTM1NC40NiA4OC44MzA3QzEzNjAuNSA5MS40MzY4IDEzNjUuNzEgOTUuMDcxNyAxMzcwLjEgOTkuNzM1MkMxMzc0LjYyIDEwNC4zOTkgMTM3OC4xMiAxMDkuODg1IDEzODAuNTkgMTE2LjE5NUMxMzgzLjIgMTIyLjUwNCAx''@;'; put 'put ''Mzg0LjUgMTI5LjI5NCAxMzg0LjUgMTM2LjU2NEMxMzg0LjUgMTQzLjgzMyAxMzgzLjIgMTUwLjYyMyAxMzgwLjU5IDE1Ni45MzJDMTM3OC4xMiAxNjMuMjQyIDEzNzQuNjIgMTY4LjcyOSAxMzcwLjEgMTczLjM5MkMxMzY1LjcxIDE3OC4wNTYgMTM2MC41IDE4MS43NTkgMTM1NC40NiAxODQu''@;'; put 'put ''NTAyQzEzNDguNDMgMTg3LjEwOCAxMzQxLjkxIDE4OC40MTEgMTMzNC45MSAxODguNDExQzEzMjcuOTIgMTg4LjQxMSAxMzIxLjQgMTg3LjEwOCAxMzE1LjM3IDE4NC41MDJDMTMwOS4zMyAxODEuNzU5IDEzMDQuMDUgMTc4LjA1NiAxMjk5LjUzIDE3My4zOTJDMTI5NS4xNCAxNjguNzI5IDEy''@;'; put 'put ''OTEuNjQgMTYzLjI0MiAxMjg5LjAzIDE1Ni45MzJDMTI4Ni41NiAxNTAuNjIzIDEyODUuMzMgMTQzLjgzMyAxMjg1LjMzIDEzNi41NjRaTTEzMTAuMjMgMTM2LjU2NEMxMzEwLjIzIDE0MC40MDQgMTMxMC44NCAxNDQuMDM5IDEzMTIuMDggMTQ3LjQ2OEMxMzEzLjMxIDE1MC43NiAxMzE1LjAz''@;'; put 'put ''IDE1My42NDEgMTMxNy4yMiAxNTYuMTA5QzEzMTkuNDIgMTU4LjU3OCAxMzIyLjAyIDE2MC41NjcgMTMyNS4wNCAxNjIuMDc2QzEzMjguMDYgMTYzLjQ0OCAxMzMxLjM1IDE2NC4xMzQgMTMzNC45MSAxNjQuMTM0QzEzMzguNDggMTY0LjEzNCAxMzQxLjc3IDE2My40NDggMTM0NC43OSAxNjIu''@;'; put 'put ''MDc2QzEzNDcuOTUgMTYwLjU2NyAxMzUwLjYyIDE1OC41NzggMTM1Mi44MSAxNTYuMTA5QzEzNTUuMDEgMTUzLjY0MSAxMzU2LjcyIDE1MC43NiAxMzU3Ljk2IDE0Ny40NjhDMTM1OS4xOSAxNDQuMDM5IDEzNTkuODEgMTQwLjQwNCAxMzU5LjgxIDEzNi41NjRDMTM1OS44MSAxMzIuNzIzIDEz''@;'; put 'put ''NTkuMTkgMTI5LjE1NyAxMzU3Ljk2IDEyNS44NjVDMTM1Ni43MiAxMjIuNDM2IDEzNTUuMDEgMTE5LjQ4NyAxMzUyLjgxIDExNy4wMThDMTM1MC42MiAxMTQuNTQ5IDEzNDcuOTUgMTEyLjYyOSAxMzQ0Ljc5IDExMS4yNTdDMTM0MS43NyAxMDkuNzQ4IDEzMzguNDggMTA4Ljk5NCAxMzM0Ljkx''@;'; put 'put ''IDEwOC45OTRDMTMzMS4zNSAxMDguOTk0IDEzMjguMDYgMTA5Ljc0OCAxMzI1LjA0IDExMS4yNTdDMTMyMi4wMiAxMTIuNjI5IDEzMTkuNDIgMTE0LjU0OSAxMzE3LjIyIDExNy4wMThDMTMxNS4wMyAxMTkuNDg3IDEzMTMuMzEgMTIyLjQzNiAxMzEyLjA4IDEyNS44NjVDMTMxMC44NCAxMjku''@;'; put 'put ''MTU3IDEzMTAuMjMgMTMyLjcyMyAxMzEwLjIzIDEzNi41NjRaTTE0MDguMjEgMzcuMzk0NEMxNDA4LjIxIDM2LjI5NyAxNDA4LjU1IDM1LjQwNTUgMTQwOS4yNCAzNC43MTk3QzE0MTAuMDYgMzQuMDMzOCAxNDExLjAyIDMzLjY5MDkgMTQxMi4xMiAzMy42OTA5SDE0MjguMTZDMTQyOS4yNiAz''@;'; put 'put ''My42OTA5IDE0MzAuMTUgMzQuMDMzOCAxNDMwLjg0IDM0LjcxOTdDMTQzMS42NiAzNS40MDU1IDE0MzIuMDcgMzYuMjk3IDE0MzIuMDcgMzcuMzk0NFYxODQuMDkxQzE0MzIuMDcgMTg2LjY5NyAxNDMwLjc3IDE4OCAxNDI4LjE2IDE4OEgxNDEyLjEyQzE0MTEuMDIgMTg4IDE0MTAuMDYgMTg3''@;'; put 'put ''LjY1NyAxNDA5LjI0IDE4Ni45NzFDMTQwOC41NSAxODYuMTQ4IDE0MDguMjEgMTg1LjE4OCAxNDA4LjIxIDE4NC4wOTFWMzcuMzk0NFpNMTQ2MyAzNy4zOTQ0QzE0NjMgMzYuMjk3IDE0NjMuMzUgMzUuNDA1NSAxNDY0LjAzIDM0LjcxOTdDMTQ2NC44NSAzNC4wMzM4IDE0NjUuODEgMzMuNjkw''@;'; put 'put ''OSAxNDY2LjkxIDMzLjY5MDlIMTQ4Mi45NkMxNDg0LjA2IDMzLjY5MDkgMTQ4NC45NSAzNC4wMzM4IDE0ODUuNjMgMzQuNzE5N0MxNDg2LjQ2IDM1LjQwNTUgMTQ4Ni44NyAzNi4yOTcgMTQ4Ni44NyAzNy4zOTQ0VjE4NC4wOTFDMTQ4Ni44NyAxODYuNjk3IDE0ODUuNTcgMTg4IDE0ODIuOTYg''@;'; put 'put ''MTg4SDE0NjYuOTFDMTQ2NS44MSAxODggMTQ2NC44NSAxODcuNjU3IDE0NjQuMDMgMTg2Ljk3MUMxNDYzLjM1IDE4Ni4xNDggMTQ2MyAxODUuMTg4IDE0NjMgMTg0LjA5MVYzNy4zOTQ0Wk0xNTM3Ljc2IDE0OC4wODVDMTUzOS42OCAxNTIuODg2IDE1NDIuNTYgMTU2Ljc5NSAxNTQ2LjQgMTU5''@;'; put 'put ''LjgxM0MxNTUwLjM3IDE2Mi44MyAxNTU0LjkgMTY0LjMzOSAxNTU5Ljk4IDE2NC4zMzlDMTU2My42OCAxNjQuMzM5IDE1NjcuMjUgMTYzLjcyMiAxNTcwLjY3IDE2Mi40ODhDMTU3NC4xIDE2MS4yNTMgMTU3Ni45OCAxNTkuNTM5IDE1NzkuMzIgMTU3LjM0NEMxNTgwLjE0IDE1Ni42NTggMTU4''@;'; put 'put ''MS4wMyAxNTYuMzg0IDE1ODEuOTkgMTU2LjUyMUMxNTgzLjA5IDE1Ni41MjEgMTU4My45OCAxNTYuODY0IDE1ODQuNjcgMTU3LjU1TDE1OTYuMzkgMTY4LjY2QzE1OTcuMDggMTY5LjM0NiAxNTk3LjQyIDE3MC4yMzcgMTU5Ny40MiAxNzEuMzM1QzE1OTcuNDIgMTcyLjI5NSAxNTk3LjA4IDE3''@;'; put 'put ''My4xMTggMTU5Ni4zOSAxNzMuODA0QzE1OTEuODcgMTc4LjYwNCAxNTg2LjUyIDE4Mi4yMzkgMTU4MC4zNCAxODQuNzA4QzE1NzQuMTcgMTg3LjE3NyAxNTY3LjM4IDE4OC40MTEgMTU1OS45OCAxODguNDExQzE1NTMuMTIgMTg4LjQxMSAxNTQ2Ljc0IDE4Ny4xNzcgMTU0MC44NCAxODQuNzA4''@;'; put 'put ''QzE1MzUuMDggMTgyLjIzOSAxNTMwLjAxIDE3OC43NDEgMTUyNS42MiAxNzQuMjE1QzE1MjAuODIgMTY5LjQxNCAxNTE3LjExIDE2My43MjIgMTUxNC41MSAxNTcuMTM4QzE1MTEuOSAxNTAuNTU0IDE1MTAuNiAxNDMuNTU5IDE1MTAuNiAxMzYuMTUyQzE1MTAuNiAxMjkuMDIgMTUxMS45IDEy''@;'; put 'put ''Mi4zNjcgMTUxNC41MSAxMTYuMTk1QzE1MTcuMTEgMTA5Ljg4NSAxNTIwLjYxIDEwNC4zOTkgMTUyNSA5OS43MzUyQzE1MjkuNTMgOTUuMDcxNyAxNTM0LjgxIDkxLjQzNjggMTU0MC44NCA4OC44MzA3QzE1NDYuODggODYuMDg3NCAxNTUzLjMyIDg0LjcxNTggMTU2MC4xOCA4NC43MTU4QzE1''@;'; put 'put ''NjYuNDkgODQuNzE1OCAxNTcyLjMyIDg1Ljg4MTcgMTU3Ny42NyA4OC4yMTM1QzE1ODMuMTYgOTAuNTQ1MyAxNTg3Ljk2IDkzLjc2ODYgMTU5Mi4wNyA5Ny44ODM1QzE1OTMuODYgOTkuNTI5NSAxNTk1LjU3IDEwMS40NSAxNTk3LjIyIDEwMy42NDRDMTU5OC44NiAxMDUuODM5IDE2MDAuMyAx''@;'; put 'put ''MDguMzc3IDE2MDEuNTQgMTExLjI1N0MxNjAyLjc3IDExNC4xMzcgMTYwMy43MyAxMTcuNDk4IDE2MDQuNDIgMTIxLjMzOEMxNjA1LjI0IDEyNS4wNDIgMTYwNS42NSAxMjkuMjk0IDE2MDUuNjUgMTM0LjA5NUMxNjA1LjY1IDEzNy4zODcgMTYwNS40NSAxNDAuOTUzIDE2MDUuMDMgMTQ0Ljc5''@;'; put 'put ''M0MxNjA0Ljc2IDE0Ni45ODggMTYwMy41MyAxNDguMDg1IDE2MDEuMzMgMTQ4LjA4NUgxNTM3Ljc2Wk0xNTU5LjU2IDEwOC43ODhDMTU1My44IDEwOC43ODggMTU0OS4wNyAxMTAuMzY1IDE1NDUuMzcgMTEzLjUyQzE1NDEuNjYgMTE2LjY3NSAxNTM5LjA2IDEyMC41ODQgMTUzNy41NSAxMjUu''@;'; put 'put ''MjQ4SDE1ODAuNzZDMTU3OS4yNSAxMjAuODU4IDE1NzYuNzEgMTE3LjAxOCAxNTczLjE0IDExMy43MjZDMTU2OS43MSAxMTAuNDM0IDE1NjUuMTkgMTA4Ljc4OCAxNTU5LjU2IDEwOC43ODhaTTE2ODguNTEgMTA4LjE3MUMxNjg4LjEgMTA5LjI2OCAxNjg3LjQxIDExMC4wMjIgMTY4Ni40NSAx''@;'; put 'put ''MTAuNDM0QzE2ODUuNDkgMTEwLjg0NSAxNjg0LjQ2IDExMC43NzcgMTY4My4zNyAxMTAuMjI4QzE2ODIuMjcgMTA5LjY4IDE2ODAuOSAxMDkuMiAxNjc5LjI1IDEwOC43ODhDMTY3Ny43NCAxMDguMzc3IDE2NzYuMSAxMDguMTcxIDE2NzQuMzEgMTA4LjE3MUMxNjcxLjI5IDEwOC4xNzEgMTY2''@;'; put 'put ''OC40MSAxMDguNzg4IDE2NjUuNjcgMTEwLjAyMkMxNjYyLjkzIDExMS4yNTcgMTY2MC40NiAxMTIuOTcyIDE2NTguMjYgMTE1LjE2NkMxNjU2LjIxIDExNy4yMjQgMTY1NC41NiAxMTkuNjkzIDE2NTMuMzMgMTIyLjU3M0MxNjUyLjA5IDEyNS4zMTYgMTY1MS40NyAxMjguMTk3IDE2NTEuNDcg''@;'; put 'put ''MTMxLjIxNEwxNjUxLjA2IDE4NC4wOTFDMTY1MS4wNiAxODUuMTg4IDE2NTAuNzIgMTg2LjE0OCAxNjUwLjAzIDE4Ni45NzFDMTY0OS4zNSAxODcuNjU3IDE2NDguNDYgMTg4IDE2NDcuMzYgMTg4SDE2MzEuMTFDMTYzMC4wMSAxODggMTYyOS4wNSAxODcuNjU3IDE2MjguMjMgMTg2Ljk3MUMx''@;'; put 'put ''NjI3LjU0IDE4Ni4xNDggMTYyNy4yIDE4NS4xODggMTYyNy4yIDE4NC4wOTFWODkuMDM2NUMxNjI3LjIgODcuOTM5MSAxNjI3LjU0IDg3LjA0NzYgMTYyOC4yMyA4Ni4zNjE4QzE2MjkuMDUgODUuNTM4OCAxNjMwLjAxIDg1LjEyNzMgMTYzMS4xMSA4NS4xMjczSDE2NDcuMzZDMTY0OC40NiA4''@;'; put 'put ''NS4xMjczIDE2NDkuMzUgODUuNTM4OCAxNjUwLjAzIDg2LjM2MThDMTY1MC43MiA4Ny4wNDc2IDE2NTEuMDYgODcuOTM5MSAxNjUxLjA2IDg5LjAzNjVWOTQuNTkxNkMxNjU1LjA0IDkxLjcxMTEgMTY1OS4yOSA4OS4zNzk0IDE2NjMuODIgODcuNTk2MkMxNjY4LjM1IDg1LjY3NTkgMTY3My4y''@;'; put 'put ''MiA4NC43MTU4IDE2NzguNDMgODQuNzE1OEMxNjgzLjc4IDg0LjcxNTggMTY4OC40NCA4NS43NDQ1IDE2OTIuNDIgODcuODAyQzE2OTQuMzQgODkuMDM2NSAxNjk0Ljk2IDkwLjYxMzggMTY5NC4yNyA5Mi41MzQxTDE2ODguNTEgMTA4LjE3MVoiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVm''@;'; put 'put ''cz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDVfNyI+CjxyZWN0IHdpZHRoPSIxNjg5IiBoZWlnaHQ9IjI0MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=dc-logo-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA3MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEwMV84KSI+CjxwYXRoIGQ9Ik0zNy41OTkzIDE2LjYyMTJDMzguNTkxNiAx''@;'; put 'put ''Ni43NDE1IDM5LjU1MzggMTYuODMxNyA0MC41NDYxIDE2Ljk1MTlDNDIuOTIxNiAxNy4yODI3IDQ1LjIzNyAxNy43MzM3IDQ3LjQwMiAxOC44NDYzQzQ4LjAzMzQgMTkuMTc3MSA0OC42MzQ4IDE5LjUzNzkgNDkuMDg1OSAyMC4xMDkyQzQ5LjgwNzUgMjAuOTUxMiA0OS43Nzc0IDIxLjg1MzMg''@;'; put 'put ''NDkuMDU1OCAyMi42OTUyQzQ4LjMwNCAyMy41MzcxIDQ3LjM0MTggMjQuMDE4MyA0Ni4zMTk1IDI0LjQwOTJDNDMuOTQ0IDI1LjM0MTMgNDEuNDQ4MiAyNS43NjIzIDM4LjkyMjQgMjUuOTcyOEMzNC44MDI5IDI2LjMwMzUgMzAuNzQzNSAyNi4xNTMyIDI2LjcxNDIgMjUuMTkxQzI1LjM5MTEg''@;'; put 'put ''MjQuODkwMyAyNC4wOTgxIDI0LjQ2OTMgMjIuOTI1NCAyMy44MDc4QzIyLjQ3NDQgMjMuNTY3MiAyMi4wNTM0IDIzLjI2NjUgMjEuNjYyNSAyMi45MDU3QzIwLjU4IDIxLjg1MzMgMjAuNTggMjAuNzQwNyAyMS42OTI2IDE5Ljc0ODRDMjIuODk1NCAxOC42NjU5IDI0LjM2ODggMTguMTU0NyAy''@;'; put 'put ''NS44NzIyIDE3LjczMzdDMjcuOTc3MSAxNy4xMzI0IDMwLjExMiAxNi44MzE3IDMyLjI3NyAxNi42ODEzQzMyLjQ1NzUgMTYuNjgxMyAzMi42Njc5IDE2Ljc0MTUgMzIuODE4MyAxNi41OTExQzM0LjM4MTkgMTYuNjIxMiAzNi4wMDU2IDE2LjYyMTIgMzcuNTk5MyAxNi42MjEyWiIgZmlsbD0i''@;'; put 'put ''I0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODUwNyA0MS4zMDgyQzIyLjc3NTEgNDMuNzczOCAyNS41MTE1IDQ0LjY3NTkgMjguMzM4IDQ1LjI3NzNDMzMuOTMwOSA0Ni40ODAxIDM5LjUyMzggNDYuMzI5NyA0NC45NjYzIDQ0LjQwNTNDNDYuNjUwMiA0My44MDM5IDQ4LjIxMzggNDIuOTkyIDQ5''@;'; put 'put ''LjMyNjQgNDEuNDg4NkM0OS41MDY4IDQxLjI0OCA0OS41OTcgNDEuMzY4MyA0OS42ODcyIDQxLjU0ODdDNDkuODY3NyA0MS45Mzk2IDQ5Ljk1NzkgNDIuMzMwNSA0OS45NTc5IDQyLjc1MTVDNDkuOTU3OSA0NC4yMjQ5IDQ5Ljk1NzkgNDUuNzI4NCA0OS45NTc5IDQ3LjIwMThDNDkuOTU3OSA0''@;'; put 'put ''OC4xNjQgNDkuNTA2OCA0OC45MTU3IDQ4Ljg0NTMgNDkuNTc3MkM0Ny40NjIxIDUwLjk2MDQgNDUuNzE4MSA1MS43MTIyIDQzLjg4MzggNTIuMjgzNUM0MC4xODUzIDUzLjQyNjEgMzYuMzk2NiA1My42NjY3IDMyLjU3NzcgNTMuMzk2MUMyOS43MjEyIDUzLjE4NTYgMjYuOTU0OCA1Mi42NDQz''@;'; put 'put ''IDI0LjMzODcgNTEuNDcxNkMyMy4yMjYxIDUwLjk2MDQgMjIuMjAzOCA1MC4zNTkxIDIxLjM5MTkgNDkuNDI2OUMyMC43NjA1IDQ4LjcwNTIgMjAuNDI5NyA0Ny44OTM0IDIwLjQyOTcgNDYuOTMxMUMyMC40NTk4IDQ1LjU3OCAyMC40Mjk3IDQ0LjIyNDkgMjAuNDI5NyA0Mi44NzE4QzIwLjQy''@;'; put 'put ''OTcgNDIuMzMwNSAyMC41MTk5IDQxLjgxOTMgMjAuODUwNyA0MS4zMDgyWiIgZmlsbD0iIzhFQzYzRiIvPgo8cGF0aCBkPSJNMjAuODgwNyAzMi4wMTY3QzIyLjQ3NDQgMzQuMTUxNiAyNC42OTk2IDM1LjA1MzcgMjcuMDc1IDM1LjY4NTJDMzIuNzU4MiAzNy4xODg2IDM4LjQ0MTMgMzcuMTU4''@;'; put 'put ''NiA0NC4wNjQzIDM1LjQ3NDdDNDUuOTI4NiAzNC45MzM0IDQ3LjY3MjYgMzQuMTIxNiA0OS4wMjU4IDMyLjY0ODJDNDkuMjA2MiAzMi40Njc3IDQ5LjMyNjUgMzIuMDQ2OCA0OS41MzY5IDMyLjEwNjlDNDkuODM3NiAzMi4xOTcxIDQ5LjgzNzYgMzIuNjE4MSA0OS45Mjc4IDMyLjk0ODhDNTAu''@;'; put 'put ''MDQ4MSAzMy40NiA0OS45ODggMzMuOTcxMiA0OS45ODggMzQuNDgyNEM0OS45ODggMzUuNTA0NyA0OS45NTc5IDM2LjQ5NyA0OS45ODggMzcuNTE5NEM1MC4wNDgxIDM4Ljc4MjMgNDkuNTM2OSAzOS43NzQ2IDQ4LjYwNDggNDAuNTg2NUM0Ny4xOTE1IDQxLjg0OTQgNDUuNDc3NiA0Mi42MDEx''@;'; put 'put ''IDQzLjY0MzMgNDMuMDgyMkMzNy40NzkxIDQ0LjczNjEgMzEuMzQ0OSA0NC43MDYgMjUuMzAwOSA0Mi42MDExQzIzLjgyNzUgNDIuMDkgMjIuNDc0NCA0MS4zNjgzIDIxLjM5MTkgNDAuMTk1NkMyMC43MzA0IDM5LjQ3MzkgMjAuMzk5NyAzOC42MzIgMjAuMzk5NyAzNy42Mzk3QzIwLjQyOTcg''@;'; put 'put ''MzYuMzE2NiAyMC4zOTk3IDM0Ljk2MzUgMjAuMzk5NyAzMy42NDA0QzIwLjQyOTcgMzMuMDk5MiAyMC41MTk5IDMyLjU1NzkgMjAuODgwNyAzMi4wMTY3WiIgZmlsbD0iI0UwRTBFMCIvPgo8cGF0aCBkPSJNMjAuODIwNyAyMy4wODYxQzIxLjI3MTcgMjQuNDA5MSAyMi4zNTQyIDI1LjAxMDUg''@;'; put 'put ''MjMuNDk2OSAyNS41NTE3QzI1LjU0MTYgMjYuNTE0IDI3LjczNjYgMjYuOTY1IDI5LjkzMTcgMjcuMjM1N0MzNC4yOTE4IDI3Ljc3NjkgMzguNjUxOSAyNy43MTY4IDQyLjk1MTggMjYuODE0N0M0NC42OTU4IDI2LjQ1MzkgNDYuMzc5NyAyNS45NzI3IDQ3LjkxMzIgMjUuMDEwNUM0OC43ODUz''@;'; put 'put ''IDI0LjQ2OTMgNDkuMjM2MyAyMy45NTgxIDQ5LjUzNyAyMy4xMTYxQzQ5LjgzNzcgMjMuNTM3MSA0OS45Mjc5IDIzLjk4ODIgNDkuOTI3OSAyNC40MzkyQzQ5LjkyNzkgMjUuOTQyNyA0OS45NTggMjcuNDE2MSA0OS45Mjc5IDI4LjkxOTVDNDkuODk3OCAzMC4xODI1IDQ5LjE3NjIgMzEuMDg0''@;'; put 'put ''NSA0OC4yNDQgMzEuODM2M0M0Ni41IDMzLjIxOTUgNDQuNDU1MyAzMy45NDExIDQyLjMyMDMgMzQuNDIyM0MzNi42NjczIDM1LjY1NTEgMzEuMDc0NCAzNS41NjQ5IDI1LjU3MTcgMzMuNzAwNkMyNC4xMjgzIDMzLjIxOTUgMjIuNzQ1MSAzMi41Mjc5IDIxLjYzMjYgMzEuNDQ1NEMyMC43OTA2''@;'; put 'put ''IDMwLjYzMzUgMjAuMzM5NiAyOS43MDE0IDIwLjM2OTYgMjguNDk4NkMyMC4zOTk3IDI3LjIwNTYgMjAuMzY5NiAyNS45MTI2IDIwLjM2OTYgMjQuNjE5NkMyMC40Mjk4IDI0LjA0ODMgMjAuNTIgMjMuNTY3MiAyMC44MjA3IDIzLjA4NjFaIiBmaWxsPSIjOEVDNjNGIi8+CjxwYXRoIGQ9Ik01''@;'; put 'put ''NS4zNDAzIDYzLjQzOTNDNjAuMjQxNyA2My43MDk5IDYyLjg1NzcgNTcuNjk2IDU5LjMwOTUgNTQuMjk4MUM1NS41ODA5IDUwLjcxOTkgNDkuNDQ2NyA1NC4wNTc2IDUwLjQwOSA1OS4xMDkzQzI4LjI0NzggNzMuMjQxOSAtMC4yNTgwMzQgNTIuMTAzMSA3Ljg2MDcxIDI2LjQyMzhMMi4zODgw''@;'; put 'put ''OCAyMi43NTUzQy05LjkxMDMzIDU1LjQ0MDggMjcuOTQ3MSA4My4wNzQ2IDU1LjM0MDMgNjMuNDM5M1pNNTMuNzc2NyA1Ni4zNzI5QzU2LjA2MiA1My45OTc0IDU5LjcwMDQgNTcuMzA1MSA1Ny41NjU1IDU5LjgwMDlDNTUuMzEwMyA2Mi40MTY5IDUxLjM0MTEgNTguODk4OCA1My43NzY3IDU2''@;'; put 'put ''LjM3MjlaIiBmaWxsPSIjRTBFMEUwIi8+CjxwYXRoIGQ9Ik0xMC42MjcyIDE1LjI2ODFDMTQuMTQ1MyAxOC42MzU4IDE5Ljk0ODcgMTUuODY5NCAxOS42MTc5IDExLjA1ODNDNDEuNzQ5IC0zLjE5NDYxIDcwLjQwNTIgMTcuOTE0MiA2Mi4yODY1IDQzLjY4MzZMNjcuNzU5MSA0Ny4zNTIxQzc5''@;'; put 'put ''LjY5NjcgMTUuNTk4OCA0My40NjMgLTEyLjk5NzIgMTUuNDM4MyA2LjIxNzE1QzEwLjE3NjEgNS4xMzQ2NSA2Ljc3ODI3IDExLjU2OTUgMTAuNjI3MiAxNS4yNjgxWk0xNi4xNTk5IDEzLjE5MzNDMTMuODE0NSAxNS42Mjg5IDEwLjExNiAxMi4wODA3IDEyLjQ2MTQgOS42NDUwN0MxNC44MDY4''@;'; put 'put ''IDcuMjA5NDQgMTguNTA1NCAxMC43NTc2IDE2LjE1OTkgMTMuMTkzM1oiIGZpbGw9IiM4RUM2M0YiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDFfOCI+CjxyZWN0IHdpZHRoPSI3MCIgaGVpZ2h0PSI3MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8''@;'; put 'put ''L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=favicon-ico; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''iVBORw0KGgoAAAANSUhEUgAAApgAAAJ6CAYAAACMvTJAAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUk8kWnr+kEBJaIAJSQm+CFOnSe0c62AhJgFAiJAQVO7Ko4FpQEQFR0RUQRdcCyKIidmUR7P1hQWVlXSzYUHmTArq+dt49Z/75cufeO9+d3JkzA4CiNSsnJwtVAiCbnyeICvBmJiQmMUmP''@;'; put 'put ''AAY0AB0YAiUWW5jjFRkZCqCM9X+XdzcAIu6vWopj/ev4fxVlDlfIBgCJhDiFI2RnQ3wYAFydnSPIA4DQBfUGc/NyxHgIYlUBJAgAERfjNClWF+MUKZ4ksYmJ8oHYEwAylcUSpAGgIObNzGenwTgKYo7WfA6PD3E1xO7sdBYH4nsQT8rOngOxIhli05Tv4qT9LWbKeEwWK20cS3ORCNmXJ8zJYs3/''@;'; put 'put ''P5fjf0t2lmhsDn3YqOmCwChxznDd6jPnhIgxFeJ2fkp4BMQqEJ/ncST2YnwnXRQYK7MfZAt94JoBBgAo4LB8QyDWgpghyoz1kmFblkDiC+3RcF5eUIwMpwjmRMnio/n8rPBQWZyV6dygMVzDFfpFj9mk8vyDIIaVhh4uSI+Jl/JET+fz4sIhVoC4R5gZHSLzfVCQ7hM+ZiMQRYk5G0L8NlXgHyW1''@;'; put 'put ''wdSzhWN5YVZslmQuWAuYZ156TKDUF0vgChNCxzhwuL5+Ug4Yh8uPlXHDYHV5R8l8i3OyImX2WA03KyBKus7YAWF+9JjvlTxYYNJ1wB5lsIIjZXO9y8mLjJFyw1EQCnyAL2ACEWwpYA7IALzuwZZB+Es64g9YQADSABdYyjRjHvGSET78RoMC8CdEXCAc9/OWjHJBPtR/GddKv5YgVTKaL/HIBE8h''@;'; put 'put ''zsY1cXfcFQ+FX0/YbHEn3HnMj6k4NivRj+hLDCT6E83GebAh6yzYBID3b3QhsOfC7MRc+GM5fItHeEroJTwiXCf0EW6DOPBEEkVmNZtXKPiBOROEgT4YzV+WXcr32eHGkLU97o27Qf6QO87ANYElPgVm4oV7wNzsofZ7hqJxbt/W8sf5xKy/z0emVzBXsJexSBn/Z3zGrX6M4vPdGnFgH/KjJbYS''@;'; put 'put ''O4Sdw05iF7B2rAUwsRNYK9aFHRPj8Up4IqmEsdmiJNwyYRzemI11o/WA9ecf5mbJ5hevlzCPOy9PvBl85uTMF/DS0vOYXvA05jKD+GyrSUxbaxsnAMRnu/ToeMOQnNkI4+I3XW4HAM4lUJn2TccyAODoUwDo777pDF7Dcl8HwLEetkiQL9WJj2NAABSgCHeFBtABBsAU5mMLHIAr8AR+IBhEgBiQ''@;'; put 'put ''CGbBFU8H2ZDzXLAQLAPFoBSsA5tAJdgGdoJ6sA8cBC2gHZwEZ8El0AOug7uwLvrBCzAE3oERBEFICA2hIxqILmKEWCC2iBPijvghoUgUkogkI2kIHxEhC5HlSClShlQiO5AG5FfkKHISuYD0IreRh8gA8hr5hGIoFVVFtVFjdDLqhHqhIWgMOhNNQ3PRArQIXYNWoLXoXrQZPYleQq+jfegLdBgD''@;'; put 'put ''mDzGwPQwS8wJ88EisCQsFRNgi7ESrByrxZqwNvg/X8X6sEHsI07E6TgTt4S1GYjH4mw8F1+Mr8Yr8Xq8GT+NX8Uf4kP4VwKNoEWwILgQgggJhDTCXEIxoZywm3CEcAbum37COyKRyCCaEB3hvkwkZhAXEFcTtxL3EzuIvcTHxGESiaRBsiC5kSJILFIeqZi0hbSXdIJ0hdRP+kCWJ+uSbcn+5CQy''@;'; put 'put ''n1xILifvIR8nXyE/I4/IKckZybnIRchx5ObLrZXbJdcmd1muX26EokwxobhRYigZlGWUCkoT5QzlHuWNvLy8vryz/DR5nvxS+Qr5A/Ln5R/Kf6SqUM2pPtQZVBF1DbWO2kG9TX1Do9GMaZ60JFoebQ2tgXaK9oD2QYGuYKUQpMBRWKJQpdCscEXhpaKcopGil+IsxQLFcsVDipcVB5XklIyVfJRY''@;'; put 'put ''SouVqpSOKt1UGlamK9soRyhnK69W3qN8Qfm5CknFWMVPhaNSpLJT5ZTKYzpGN6D70Nn05fRd9DP0flWiqolqkGqGaqnqPtVu1SE1FbUpanFq89Sq1I6p9TEwhjEjiJHFWMs4yLjB+DRBe4LXBO6EVROaJlyZ8F59orqnOle9RH2/+nX1TxpMDT+NTI31Gi0a9zVxTXPNaZpzNWs0z2gOTlSd6DqR''@;'; put 'put ''PbFk4sGJd7RQLXOtKK0FWju1urSGtXW0A7RztLdon9Ie1GHoeOpk6GzUOa4zoEvXddfl6W7UPaH7B1ON6cXMYlYwTzOH9LT0AvVEejv0uvVG9E30Y/UL9ffr3zegGDgZpBpsNOg0GDLUNQwzXGjYaHjHSM7IySjdaLPROaP3xibG8cYrjFuMn5uomwSZFJg0mtwzpZl6mOaa1ppeMyOaOZllmm01''@;'; put 'put ''6zFHze3N082rzC9boBYOFjyLrRa9kwiTnCfxJ9VOumlJtfSyzLdstHxoxbAKtSq0arF6OdlwctLk9ZPPTf5qbW+dZb3L+q6Nik2wTaFNm81rW3Nbtm2V7TU7mp2/3RK7VrtXUyymcKfUTLllT7cPs19h32n/xcHRQeDQ5DDgaOiY7FjteNNJ1SnSabXTeWeCs7fzEud2548uDi55Lgdd/nK1dM10''@;'; put 'put ''3eP6fKrJVO7UXVMfu+m7sdx2uPW5M92T3be793noebA8aj0eeRp4cjx3ez7zMvPK8Nrr9dLb2lvgfcT7vY+LzyKfDl/MN8C3xLfbT8Uv1q/S74G/vn+af6P/UIB9wIKAjkBCYEjg+sCbQdpB7KCGoKFgx+BFwadDqCHRIZUhj0LNQwWhbWFoWHDYhrB74Ubh/PCWCBARFLEh4n6kSWRu5G/TiNMi''@;'; put 'put ''p1VNexplE7Uw6lw0PXp29J7odzHeMWtj7saaxopiO+MU42bENcS9j/eNL4vvS5icsCjhUqJmIi+xNYmUFJe0O2l4ut/0TdP7Z9jPKJ5xY6bJzHkzL8zSnJU169hsxdms2YeSCcnxyXuSP7MiWLWs4ZSglOqUIbYPezP7BceTs5EzwHXjlnGfpbqllqU+T3NL25A2kO6RXp4+yPPhVfJeZQRmbMt4''@;'; put 'put ''nxmRWZc5mhWftT+bnJ2cfZSvws/kn56jM2fenN4ci5zinL5cl9xNuUOCEMFuISKcKWzNU4XXnC6Rqegn0cN89/yq/A9z4+Yemqc8jz+va775/FXznxX4F/yyAF/AXtC5UG/hsoUPF3kt2rEYWZyyuHOJwZKiJf1LA5bWL6Msy1z2e6F1YVnh2+Xxy9uKtIuWFj3+KeCnxmKFYkHxzRWuK7atxFfy''@;'; put 'put ''Vnavslu1ZdXXEk7JxVLr0vLSz6vZqy/+bPNzxc+ja1LXdK91WFuzjriOv+7Geo/19WXKZQVljzeEbWjeyNxYsvHtptmbLpRPKd+2mbJZtLmvIrSidYvhlnVbPlemV16v8q7aX61Vvar6/VbO1is1njVN27S3lW77tJ23/daOgB3Ntca15TuJO/N3Pt0Vt+vcL06/NOzW3F26+0sdv66vPqr+dINj''@;'; put 'put ''Q8MerT1rG9FGUePA3hl7e/b57mttsmzasZ+xv/QAOCA68Mevyb/eOBhysPOQ06Gmw0aHq4/Qj5Q0I83zm4da0lv6WhNbe48GH+1sc2078pvVb3Xteu1Vx9SOrT1OOV50fPREwYnhjpyOwZNpJx93zu68eyrh1LXT0053nwk5c/6s/9lT57zOnTjvdr79gsuFoxedLrZccrjU3GXfdeR3+9+PdDt0''@;'; put 'put ''N192vNza49zT1ju19/gVjysnr/pePXst6Nql6+HXe2/E3rh1c8bNvlucW89vZ91+dSf/zsjdpfcI90ruK90vf6D1oPYfZv/Y3+fQd+yh78OuR9GP7j5mP37xRPjkc3/RU9rT8me6zxqe2z5vH/Af6Plj+h/9L3JejAwW/6n8Z/VL05eH//L8q2soYaj/leDV6OvVbzTe1L2d8rZzOHL4wbvsdyPv''@;'; put 'put ''Sz5ofKj/6PTx3Kf4T89G5n4mfa74Yval7WvI13uj2aOjOSwBS3IVwGBDU1MBeF0HAC0R3h16AKAoSN9eEkGk70UJAv8JS99nEnEAoM4TgNilAITCO0oNbEYQU2EvvnrHeALUzm68yUSYamcrjUWFLxjCh9HRN9oAkNoA+CIYHR3ZOjr6ZRckexuAjlzpm08sRHi/324mRt2XRobAD/JPCotuA2JA''@;'; put 'put ''n4YAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y''@;'; put 'put ''Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY2NDwvZXhpZjpQaXhlbFhEaW1lbnNp''@;'; put 'put ''b24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42MzQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KSHKtHgAAABxpRE9UAAAAAgAAAAAAAAE9AAAAKAAAAT0AAAE9AACKlRxL/UIAAEAASURB''@;'; put 'put ''VHgB7L0HgNxmeqb5FVChIzuRTTZzzlESRUVSFCUqzIwmjyZnx71zWO96b89h7b31ede+27O9DjOe8eSo0USlURxpGESKYhBzzqFJdrNzqADg3g/FoppUk6zuQlWjUC+kZmXgx/OjUC++GFq25v2OcCEBEiABEiABEiABEiABjwiEKDA9IsnVkAAJkAAJkAAJkAAJuAQoMHkgkAAJkAAJkAAJkAAJ''@;'; put 'put ''eEqAAtNTnFwZCZAACZAACZAACZAABSaPARIgARIgARIgARIgAU8JUGB6ipMrIwESIAESIAESIAESoMDkMUACJEACJEACJEACJOApAQpMT3FyZSRAAiRAAiRAAiRAAhSYPAZIgARIgARIgARIgAQ8JUCB6SlOrowESIAESIAESIAESIACk8cACZAACZAACZAACZCApwQoMD3FyZWRAAmQAAmQAAmQ''@;'; put 'put ''AAlQYPIYIAESIAESIAESIAES8JQABaanOLkyEiABEiABEiABEiABCkweAyRAAiRAAiRAAiRAAp4SoMD0FCdXRgIkQAIkQAIkQAIkQIHJY4AESIAESIAESIAESMBTAhSYnuLkykiABEiABEiABEiABCgweQyQAAmQAAmQAAmQAAl4SoAC01OcXBkJkAAJkAAJkAAJkAAFJo8BEiABEiABEiABEiAB''@;'; put 'put ''TwlQYHqKkysjARIgARIgARIgARKgwOQxQAIkQAIkQAIkQAIk4CkBCkxPcXJlJEACJEACJEACJEACFJg8BkiABAJBwHEcMc2QmGFbwtGQhCM27ockEnMkHBOJRHGL52OVtlRW2VJW5UhZpT7W53G/PCTRCkdC+O+GC162EiL9vY4k4yGJ9+OvRx+HpKcTt90hSeA5Ky6SSuI+3qvvTyUMsZL4DJ6z''@;'; put 'put ''UrqFm2znhoPgiyRAAiTgbwIUmP6eH46OBEgAOiwCsRgpE4mVO64grKjCfQjDimo8rtDnRaJ4LVrmuILSjAhEo4hpiBhh/BkG/iDp8E9IHLHtNFbbdtw70KaiAhUvZbdgTFgdVog7+r/7l34yvQUR27Lxh1tszMF2kokQBCfEJv5SEKb9EKAJiNI4/vp7DOntdiBUcb/r8nN9+j5DUimIXt0AFxIg''@;'; put 'put ''ARIoIgIUmEU0WRwqCQSVQCjkSLlaFGFBrKh1ZFSDI1U16fsV+jwEZQRWyDCskZGwIWYEMi6juSAKIeH0H1ckqk7URUXdFb145U76tYL9e3mMeuPeNdJPGHqL/43LAlXHo0N0LAeC0oYYtcVSyyj+etU62mVId4dIT7uBPzwHS2lPZ0iSeN1x0uvUdXAhARIgAb8QoMD0y0xwHCQQeAJqXRRYHW2p''@;'; put 'put ''qheprrelpt6RStxW1YorLqNwU0diEJBwdeuiVkUHwtG1NEIwXjY8ptVYUHmltSesrek7KkYzQlRFqA2LZjKekr5uQ/p6HAhPU7pbRbouhaSzNS1A1U2fhBv+pu7+oDLkfpEACYw4AQrMEZ8CDoAEgkfAhFtahaRaIkc12lI7xpHqBkuqa+DOhkUyVhZ24yPThkeISFju1PLoCsmRsjYWyzRcNlhe''@;'; put 'put ''EZ5m2hKq2Ky4Lf39DuJARbph6Wxvgei8gFv86WMVpY59eQXFsr8cJwmQQFESoMAsymnjoEnAHwTUwhhBvGNlLayREJH14yAqxzpSOxqJNDVIoIFFUt3Zqh4zlkiKyDzOnWpHuN3VABxCgpMbD4r7qbiFWE+Izg5HOi4Y0nbelLaLAvEJiydc7bZF0ZnHWeGqSaAkCVBgluS0c6dJYHgEDI2VRGJN''@;'; put 'put ''TaMjDeNtaWiCoMT9asRLRitMJNVArMAsqRZJ5LjAJElz5PBIe/wpFZwqPDE/IVg89b4FV3tfry29bQ7EpiGtZwy51GxAgGrSEWM7PZ4Bro4ESo4ABWbJTTl3mASyJ2AY6tqGmISQHD0RgnICXN6Imyyv1jJABvQjxCSECvQkxWT2WP3zTgjO8GXRqZbPVMKCGx1WTrjW284ZcvEUROc5uNcvocQS''@;'; put 'put ''Xev+mTeOhASKgAAFZhFMEodIAoUiYJrpDO6GCbY0TlFBaSMZR7O7w9AfaTe3pdnZapmkcbJQ01K47ailE4LTtXSmIxtgzbSksw1CExbOC8dD0noWVk4kFdmWW6ipcGPjlkiABIqKAAVmUU0XB0sC3hIIwUJZhfjJMRMdaZzqyGgIylGjYaGshB/VdXUjfk/FJF3d3oIvprUNtHIiL70PgrPrkrgu''@;'; put 'put ''9fPHDWk5bbgC1EHNTy4kQAIkkCFAgZkhwVsSKAkC6cLkGj85biqslPirHWMj49uE5QqSEiIhpVXIr9QDKgko3MmhEMBxEtaC9e41iNbptKTjvMgFuNObj4Wk5YyJgvHIVqeFeyhU+V4SCBwBCszATSl3iASuJqBWyuo6WCinODJ+puXGUlbVaXccLVmD0jZaIogWyquh8VH2BNTCibR1vUDRxCHN''@;'; put 'put ''VG89G5LmI6ach0u9HQlEzFLPHiffSQJBIUCBGZSZ5H6QwAACZlhLBjkybrolTbNsqUctysoaFKeE21sLdWscJWMoBwDjXW8IZGI4VXAiaSgO6+YlZKU3Q2g2HzZh3Uz3aUekpzfb41pIgAR8S4AC07dTw4GRwNAIRNFGsX6CJRNm2tI0A7UoUT6orNx0M73VskQr5dB48t0eEBhg3Uyh/WUnug2p''@;'; put 'put ''G/2Mis0T6l6H0GSrSw9AcxUk4D8CFJj+mxOOiASyIqBFzmNlIg0oHzRxliXjYamsGYNWi1HUMITrW3ta00qZFUq+qRAEoCU1O91AAXgLsb49bbacg8g8cwCudIhOt8sQxWYhZoLbIIGCEKDALAhmboQEvCNgRhwZo5bKOY4rLGsaL4tKTdDR6uZMrvAONteUNwIG3OgmxKbmlHWh2PuF4yKnDkJs''@;'; put 'put ''InaztwebpdjMG3uumAQKQYACsxCUuQ0SyJGAgfqUdYipnDQbwnK2dtBBi8YyJOlQVOZIlh/3A4EQxKYmCmlocNclWDaPGXJ6ryHnjpuS6NMRMmbTD/PEMZDAUAhQYA6FFt9LAgUkoIXNq2odCEpLpsyH1XKSjXaMSNWl+7uAs8BNFZpAxrJpIcRDOwqdOWjIyX3oKoRC71aCQrPQ88HtkcBwCVBg''@;'; put 'put ''DpccP0cCeSDgxlWWizRNs2TyAhtlhWypqjHh9XYQUwnzDssJ5YE6V+lLAtCSrtiEZTMZt6UFpY9O7Ydlc78p7RCejkWx6ct546BI4DIBCkweCiTgAwLqAteC51MX2jJhnpYVciQcNhBTCWnpNvr2wSA5BBIYKQLQkvp9EPzf3+Wg7JHI8V2mnD1sSH+vCk2KzZGaGm6XBK5HgALzemT4PAnkmYBa''@;'; put 'put ''K8sqHNSpdGTGopQ0ThOpqEIcGuIqLSbr5Jk+V1+sBNxe6UgO0koJHS0O3OchObHHlEvokW7Rqlms08pxB5AABWYAJ5W75G8C2lmnZowjUxdZMnW+JbVjUboF5VtYq9Lf88bR+Y+Aljwy4UKP99pyHiWPju40ELMZln7NQqdV038TxhGVFAEKzJKabu7sSBIIwQ3eiESdOStSMnEmrJfV6SxwWitH''@;'; put 'put ''cla47UAQ0ILul62a7RccOYEMdHWht51nT/RAzC93oigJUGAW5bRx0MVCwE3agRt84hxbZt1iSeNkR6IxxlYWy/xxnMVHIGPV7O9x5PiekBzZhtqap/RijnGaxTebHHExE6DALObZ49j9S0BLDNU4Mg1u8BnLbNSwRH5CyJBkEgGWLITu33njyAJDQGM1IxFD4nFLLsB9fnir6RZyj/fCeR6i2AzM''@;'; put 'put ''RHNHfEuAAtO3U8OBFSMBrV1ZN9aWGbfYMm2hJdUNJmIrbbG1xBAXEiCBwhOAlowgA11LfV06J3L4LVOOvRWSng6kpDNOs/DzwS2WDAEKzJKZau5oPglo4s6YyYivvM2SSXNtZIObkoSwZImhfFLnuklgaARc9znEZmeL5cZoHt5uSPsFjdOkRXNoJPluErg5AQrMmzPiO0jgugS0fuW4GZbMXY4W''@;'; put 'put ''jkjciZWjtV0S9VNYEP26zPgCCYw0AW1NqVbNnk5LTqJT0MHNprSgU5BjU2iO9Nxw+8EhQIEZnLnknhSQgAlhOXGOJXPusKVpqiXhSJjxlQXkz02RgCcEEKcZRZxmX68lZw+FZP8bYTl/3EAtWgpNT/hyJSVNgAKzpKefOz9UAmbYlsnoCz5vhSVjpkBYmhSWQ2XI95OA7whonGYUYS1ICDp7JCQH''@;'; put 'put ''NoflDLoEUWj6bqY4oCIiQIFZRJPFoY4cgbSwtGXuClvGTnXcLFRN3mFG+MjNCbdMAp4TUKEZMSWVTKEdZVj2bwrJ6QNI1KNF03PUXGHwCVBgBn+OuYc5EDBNWyaiN/j8OwcIS42x5EICJBBcApeFpjZBaD4Wkn2vG3IKQpMWzeBOOffMewIUmN4z5RoDQECTdybOtGT+PbaMmwaLpbZypLAMwMxy''@;'; put 'put ''F0hgCAQgNMOwaFpWSs4dMmXvJkPOHqbQHAJBvrWECVBglvDkc9ffSUDbOTZNsWXePSlkhdtu8k6KxdHfCYrPkEApEbgsNNV1fvqQIfs3huUckoHYHaiUDgLu61AJUGAOlRjfH0gCBupY1jfZsuDelEyeq+0cEfBPYRnIueZOkcCwCVx2nSeQDHTqQEj2rtfyRrBosrzRsJHyg8ElQIEZ3LnlnmVB''@;'; put 'put ''QDvGVY+GsLwrJdOWoEB6BepYJtjOMQt0fAsJlC4BnDeiyDrv67FRsF1kz+th6WDB9tI9HrjngxKgwBwUC58MPgFHyqscmYNyQ3NQJL26lgXSgz/n3EMS8JjA5Tqa3SjYfuhNuM5RR7OnHeqTLSg9Bs3VFSMBCsxinDWOOScCkYgjU5elZCEywxuaDLZ0zIkmP0wCJJDpDNR20ZZ9KG10ZFtY+ntD''@;'; put 'put ''bjkz0iGBUiVAgVmqM1+C+62Z4ePR1nHRKiTyTLPdbo52yilBEtxlEiCBfBAw0ILSRAvKCydt2bXOlFP7kIGeUosmFxIoPQIUmKU35yW3x6GQIzWNtixamZRpC1F2BLFTKY2z5EICJEACeSBgov2kbdtyen9Idr8Wlovoc85EoDyA5ip9TYAC09fTw8HlQsBxHKmoEpm9IiXz7rCkahQTeHLhyc+S''@;'; put 'put ''AAkMgQAMl9oVqK/PkiNbDdm70ZSuNgMroEVzCBT51iImQIFZxJPHoV+fgBl2ZPI8SxbfZ8no8Yak0JHDsegOvz4xvkICJJAXApcTgdouWrJnvSFHtkckmaDIzAtrrtRXBCgwfTUdHEyuBNQdXj/OlsWrbZk83xIjZCAGiq0dc+XKz5MACeRGQOMz9e/sEZGdvzJZqD03nPx0ERCgwCyCSeIQb05A''@;'; put 'put ''3eFllSJz1R1+J93hNyfGd5AACYwEAY0B10Lth+E2370+LN1tas2kRXMk5oLbzC8BCsz88uXaC0DAzQ5HW8clq1Mybgrd4QVAzk2QAAnkQgChmFHEZ7Zd0GxzuM13hMVKUmTmgpSf9R8BCkz/zQlHlDUBR6rqHJQdSsmspbaYUbjDk3SHZ42PbyQBEhhRAuoy125iJw/Abf5KBG0nQ+I4FJojOinc''@;'; put 'put ''uGcEKDA9Q8kVFZKAGbZl6mJYLZHEUz/WcF1OwhyeQk4Bt0UCJOARgXAM2eZdlux93ZR9aDuZ6KPI9AgtVzOCBCgwRxA+Nz10Anq1XzPGkqX3Q2AugrUSotJmdvjQQfITJEACviKg3YDCpoHkH1t2vBRmEpCvZoeDGQ4BCszhUONnRoSAiRaPs27RTjwpqalnTcsRmQRulARIIK8EwijSHo/bcvAN''@;'; put 'put ''Q/agG1BPl8GWk3klzpXniwAFZr7Icr2eEXBLD421ZemDFmpbwmhpO7RaekaXKyIBEvAdgcu1M5vRcnL7iyhpdNTEOY9uc9/NEwd0QwIUmDfEwxe9IKACMYzC52ZYxIg6KMiRPlGqUEyhT6+N7Ekrpd7ud55ATbx/1rIUYi1TSOgJSxLlPbiQAAmQQCkQ0JaTyYQjBzZnrJmaFPTO82QpsOA+Fh8B''@;'; put 'put ''CszimzMfj9iRylr0/R5tS22j9v9Glne1LVG0aywrg7iEiztk4A/Fz1VLhhBCaaHDTjIBl1CfSH9XSLo6DOlqEem4COGJ1xfcjVjL+bBYYq/ZicfHU8+hkQAJ5IfAZWvmeVgzt72I2Myj6GtOa2Z+WHOtnhKgwPQUZ+mtLFpmy+iJtjTNsGTsFJFRDSh4XoVg9bD23H3bne0meOMf93YAJvdaXPUm''@;'; put 'put ''7hiGxhrph0SSKQslh9DLN3a5E8+1HxywDt4lgaESuMoIdPmBeyzqiq7cuclaBx7PKPR/ZRn4/JUneYcEciOg1sxEwpYDGw3ZtT4i8d5sD9TctstPk8BwCVBgDpdcCX/OMEUap6RkynxbJs52pLpeRAPTNZs7pRndcH3nurg60/0n1zXx80En4P7MwsqjC65R8A9a8qlKTBvK3edV/zn6HyIsbJjG''@;'; put 'put ''bbQPtS0cs3jBsWEtx3Fr41at5LbWIbzJIaxGeC3w795ie2qZN3S7JuqxYhAGLrBC+J5oOEh6fFilrlPH4W7THVD6q6KPb7I9dyf4DwngGIvgXHv2iCNbnzel5TSOYRy3XEjAjwQoMP04Kz4dU7TclikLLZl9K6yW421YFxETicLmdF37dMICMqy0QIN4U8GoVu6McIQosyAWk8i41RjeOGoHpuIh''@;'; put 'put ''3DrS3yuoJYjQix48j+cSsPYk+/FcHJ9BSEYqhYuhBGJ/ITjVUu4gBsO9LsI67SzCfF2LOwSkKkYznB6bhoBEEGdsRnDBFcNfFBb4Mlj08RetwB/CRGIVCBep1Pvpx5EY4pNjKhqwDl0PVuxqTR2PCmGNDdGteHDRll4T/w0CAW032d9tyVu/NhGfaeJYxpeCCwn4jAAFps8mxI/DiZZZKA9ky5wV''@;'; put 'put ''ttShqLmNHzsLFqCbWXn8uC8ck38JuJ5qWGhMtQhqhxNXQDoQhRCREId9PRCOiNPt6dA/Q3o7Q9Lbhdjd7hAEZVpAppAwZkNspmMt/Luvhlo8kfgWU6FZrqJTpHwUYpjxV1GTvtX7KkzLIEo1VCQMAeooJFcEqwUWd9L/+3dHObK8EdDviH5XTuwTWDPD0n4RIhPHAxcS8AsBCky/zIQPx6Fuv2mL''@;'; put 'put ''LVm80paG8WrtUdciz2A+nKqiGlLGZayu5BBEU0ZIxvtTEodY7IFw7LhgSMclke4WU7rbVVymrZBqqfS7ePRqMtRiG47ZUo4kuSokz2kC3Sgk0FXX6WMbVRVgES2DyID1U5lk3P9q7aTL3atZ8P96IugC1H7Rkm0vmHJyH3qaozIHFxLwAwEKTD/Mgu/G4Ej9OFtueTAlk7TuJMZnJyksfTdNRTCg''@;'; put 'put ''a8WkKp8UEhXUha2WyI6WkLRdCEknqgZ0tqhVEglecYMC6SZzayL+s0ItnhCdtWNQsWEc/hosiE9YPKu1aoOJUAKITjgaUrgwFFg7+Q2+CdQiflljfh3EU+zdZMquX6HtJC7IWM6oiCc0IEOnwAzIRHq1GyHDlnl32LL4viR+wMKIacsiIM2rjXM9RU/AFZSXW95p/VONdezvtaX7kiFtEJGtZwxp''@;'; put 'put ''P49yVK1wa+NH0GK5FQ/nPO1uV+tmLRoT1EN06m3NaJEKiM4o3OyaAOVgTjR2VWt/UXR6iH+kV4UvXxSxmWeQAPTmLw0kAJm4UKM1c6SnpZS3T4FZyrM/YN/VvlGF2K/lj6ZkxmK1euAZjfHiQgI3IKA/X24smFuWynETbrphheyAiGyBmLx0FsKyGS7ubtNNqLnBqvhSPgjAYhxDfGdVHcJcmhxp''@;'; put 'put ''QEmxBngnqhs07lNj+C7HVKuVk4IzHzNQ8HVqAlBvpy1bXzLk2A4YCRCXzIUERoIABeZIUPfbNmFpapxky13vs6RhgiZL0Grptynyy3jcn6rLFkoNntQMbo2RbD0bkgsnDdwidhLxk5rRzcWfBExkv1fUWq6Fc8zkdEUIbYxQVmWIaaqrFRZOCk5/Tl6WozLwHdXv5wG4zHfAZd6L5Di6zLOEx7d5''@;'; put 'put ''RoAC0zOUxbkidWNORj3LOx9LIYsVLkvEx3EhgYEEtCyQCg+9TSEWt6fTkfZzITl33ICoRBzlRRMlgSgoBzIrpvuamF4Jt7paOMdMsWTMZEfqxtjIXtc5h4XTrRnKGM5imlN3rJjXjMt8y7Ome/FHl3nRzWJRD5gCs6inL7fBa5b4zFtTcsejlphRLe9Cl3huRIPxaVcqagZzGDFc+K+/N+VaJZsh''@;'; put 'put ''KM8fxw/VGS0PRItIMGb7nXuhFk51qY+BV6NpOiycuK2qD0GspJOG1LqpyUNcioOAusy72y2UMorI8d3aGY0Xg8Uxc8U/SgrM4p/DYe2BistZt1ly57tR90UD/xlvOSyOQfmQ/uRkYiltCAi1UraeCsmZo6Y0Hwu55YLQvZNLCRKIlaeThZpm2DJuakrqmxC/WYEsdZg+U3pQMHbT90eFusy1g9Tu''@;'; put 'put ''9cgyfzWM2rIUmb6ftAAMkAIzAJM41F3IWC7veg9+HLR+HmKuuJQegbSoRNwdalFqUldXqy0X4fI+fcB04ym722mlLL2j4sZ7rO0xR9U7Mg6WzfGzYN2cYKM4PDoQIYQilaTYvDG9EX4VhoQIkvGO77Vly7Nh6URlB1TuH+FBcfNBJkCBGeTZHWTfNOZyygJb7v1gUgwUaKblchBIAX7KFZUaUwn3''@;'; put 'put ''t4rKbojKc8cMOX3QkIsn0vXzArz73DVPCaTrcI6basnEOY6MRfxmZQ36sFNsekrZ65VpYfbWs7Zsetp0Q14c9jL3GjHXd5kABWYpHQoQl2MnOXL/J+MoXaLB+7RclsL0uzaKyzGV6v7uaHPkAuIpT+6FqDxJUVkKx0Ah9rGyxpax0yyZNEBsapKQRTd6IfAPaRtmxEAdWlveRPefI1vDaP9LS+aQ''@;'; put 'put ''APLNWRGgwMwKU/G/SZM1RiFTdM2nU1LXxGzx4p/Rm++BZgebl+tTakzlRZQROr43JM2Iq+zthOLkQgJ5IqDF3sfPdCA2kzJ6CiydVZowph3BkCCUp21ytUMjoDHX2jJr16uGvPVahMk/Q8PHd2dBgAIzC0hBeEsk4sg9H0rI9KUG61wGYUKvsw9qhwjBRWmERRL9trSeFjm535BT6FHc2UpReR1s''@;'; put 'put ''fDpPBDQkR/unT5pny+R5joxusiVcpt4TaBvNRs/TdrnaLAnghBFBlvnhbSJvPIMLz27GXWdJjm/LggAFZhaQiv0tIdOWBXdZcvu7UMeQrR+LfToHHX/GWmkjYauzzZYz+005tgexVqdZlmRQYHyy4ARMXOSOmaB1d5Myaa4j1Sh9pNnNllo1qTQLPh8DNxhB7/rmo7Zs+ElE2tHSFZepA1/mfRIY''@;'; put 'put ''FgEKzGFhK6IPwYIwZoIlD34uhStVZowX0czddKjuzwAyQzVZK9HjyPlTgjp3ppsF3oc6lVxIwK8EyqscmTgrJVMWatwm2lmWw6qJJHRaNUduxsJI/ulssWT9T8Ny/miYon/kpiIwW6bADMxUDr4jkZgtqz+eRJYnyojQejk4pCJ7VqWjgSB9/QXoanfkNKyVR3cY0oI2jbZFYVlk01nSwzVwAVyH''@;'; put 'put ''UkfTITQnzUvJqAaEd+CiyUL3IFo1C39o6MVqsldkMzr/HN1hMvmn8FMQqC1SYAZqOq/eGa13Oef2FHqMj6xr3LW0wRWmrQa1OPOVnrj4BdGOIDZu1bXLgKyr5+/aR2k3eLq8UOsZR47tNOUEMsF72hlbeS0rPi4+AuXVSAqabcm0pZY0TtbYwLTQZCH3ws6lm/yD8/FbSP7ZieQfXrQWln+QtkaB''@;'; put 'put ''GaTZHLAvmjVejbIhj/xGQirqDHEKXJJIxZDGV2kP6wQsp71d6GHdJRLvgTu3HyIT/0XLbYlWog9ytYi6zGJlKJeB2owpWC8oNtOT6Ypz6EcD2eCJXlvOomblkW2mnD0CS0OcwnLAIc+7ASGgsZpjJ1syY5lmoltSUYMMdD0lqFUzIPvo+93AiScCL8nezSJvPhfmucb3E+bPAVJg+nNech6Vdty4''@;'; put 'put ''ZU1SlqyBEOlHcFOBFrVShiEq4wjcbzkpcuYQivmi1WBHiymJPtWNKpkGLhCWldodxIbVAnFZs21pQK3OCrSiS+oPCgRnKS5pYQkZDpHe22nLqQMhOYx6dRdP4ce2NJGU4mFQ0vusrQ3rxzkybbElUxdaUtOAbwXc5yx1VKDDQkUm4jKP77Ll9V9EpKdjgPepQEPgZoqbAAVmcc/fdUbvSM0YRx7+''@;'; put 'put ''Yhw9g2G9VPdznhcVRG7xXojZ0/sMObAFYghFvG1YHoayqFu/fpwtM5ba+FFBTFY9+uZCrMKPPpTVFO17XWEJayXSsdDKzcHJPR0L1XaB1sqinVQOPGcClTXIPl+QkpmwajaMS3tH3OzznNfMFdyMgJthfsyWdU9GkATknqFu9hG+TgIuAQrMAB4Iar1ctiYlS9dI3q2XerpRo6QmnTQfdWT7S2Fp''@;'; put 'put ''PmbmThXB/zWwas5HeaXpt8KVHkW5HRWaAV2Uo7rBVUZ3XLDlyM6wHNsRkq42D1gGlBl3q/QIxMrh5UAy0Jxb0Ad9CrwlmhCk9TRL4/pzxCZcM8zbmm1Z/yQMB2dwscse5iM2F8W0YQrMYpqtLMaqbqVR9Y489IW4VNZCsOTRxeyKS7hwraQjezaasvs1uLUT3lraQtBX49F+btnaFOKyUCQ+obVM''@;'; put 'put ''sgBRJG95W1g6cqlZ5Og2Q44ieae3y1uORYKDwySBrAhEoojPnO3I7FuTMm6agXhBB0ITkecBOjdkBaKAbzJxkd+DGrsbfhqRs4fx20KRWUD6xbkpCszinLfrjjoE6+U8ZI7ficzxfMZeqjBy4wO7bdn8VERO7EHrmDwtmrBUhQxTFZmzb0FGvPrdi9yY6fKDxVLFcutZWw4hcefErrD0IQmKCwmQ''@;'; put 'put ''QHYEwrgAHTsrKfOWO9I0UxNThCWOskM3rHe5ZYz6HNn48wjCdygyhwWxhD5EgRmwydYr+wc/l5CxU/LnUk6LS0O6ECO4Di6TC4i1LMQSiTmy8J6ULL7Pgi7DKIowLvOKsASwtnMQltvVFW5SWBbiAOI2AkvAxClonCs0YdmcEZKwCk26zvMy36EwEq0SjmxGdvmhNzXDnxfFeQEdgJVSYAZgEq/s''@;'; put 'put ''Ar7nTXAnP/iZZLrTVx7cRa5Aglu865LIaz8KSwuymgu5hCO2zLvDklvWQmSqi6ZIfGLuKRgGyzCslpfOQ1hu1eSdMFzh7iuFRMhtkUBgCajQbJqZkrk4RzRNh9AMo8YuXeeez7dbKxO/L9teNGT3BnT9YYMHzxkHYYUUmEGYxcv7oMk9t61NyKL7EKuYh9JEaZEUkjg6Pbz6A4+SeYbBXy2Zi1al''@;'; put 'put ''ZMkqxF1pzUyfL1q6yYSw7O2y5ehbpuxFvGp3G2MsfT5tHF4REzAhLLXkmZ4nxkxCTQZciGot4DxccxcxpRyHjgQrFfQ7Xg7JW1qQPcWL5RyJBu7jFJgBmtJYmSUPfTEp9eO1Vpz3p1I9fdhwTb/+c1MOb8tfzGU2UxKrsGXFuyyZdStiTX3aAjPdeQc1QeO2nNwVkj2vh+XSucJafLNhyfeQQFAJ''@;'; put 'put ''RMscmb4UFs3bbZQ/Q0KihtWoRTOoO1zo/cKPQhgVRHb9GtbMFyIIS6DILPQU+Hl7FJh+np2hjA1lfRon2bIW8ZfaQcfrM6ieNkKwwh14QwUmApxGfEG2fIMjqz8BQT32cku5ER9TegCZLkY2Et5PHxbZs27krL0+QcJhkMCIEiivsmX2cr0gtd2C7W63MDg/KDQ9mBb8OLhdf14X2fJcRFJJikwP''@;'; put 'put ''qAZiFRSYgZhGzei2ZeGdltz+Hu+zx93TBdwhbRcceenrUent9od7V0MCJs+zZeWH8xdzOpTDw+UEcW+A1cWTtuzeGJaTu7XYPE+4Q+HI95JAvgiMakAMN86TM2DVjKFbmK3dwqgyc8eNU5x2/dm/yZE3nmVrydyBBmMNFJjBmEe4KRy590MJmbbEkJTHLmOVR45hyIYfm3IEGc9+WlxX+buTMusW''@;'; put 'put ''xJ16vN9D2U+NszTQIrPrki374Qo/iHqWiT5/CPGh7AffSwKlQGDMJEsWrrRkEmppmoj2YSKQN7OuXX8ObxWUMUJN5DjPf95QLd61UGAW79xdNfIyxCQ+8hsJGdWIgHYEs3u1uLY3WOTOHxd58ZuIsUn566QRQmjA2Cm23A9XebgMoy1w6SI3zhLCsr/fkWNvhWT3+jBEpr8YeXUscD0kECQCBs4d''@;'; put 'put ''k+dbsuDelDSiiYPN+ExPptcVmdsui8x+ngs9gVqkK6HALNKJu3rY6N893pFH0XvcQI0yLwOLXIEJAfX6Tw05uHVkE3uu3ue3H8XKbbnjMe1THCqYFVO5uKU6oDDPHbaRRRlFq0yeTN+eFd4jgeIgEMX5Y/ZtllvaaFQd6gfTbZ7zxKnIPLLNkQ0/o7s8Z5hFvAIKzCKevMzQ1Yo3ZYElqz9uuW0b''@;'; put 'put ''M8/neqsiyoGA0oLqv/xKFMXA/SmgDJQkmTTHklWPIxazAO3LXHc4Ep60Z7iWHDoM4Z1iiY5cDzd+ngRGlEDNGJQ1WpmSqQttiURRiYP1M3OaD4rMnPAF4sMUmAGYRk12WXhPUpY/Cgueh/Uv01Y6Qw7vcGT9kzHfktIad1V1jqz9VEJqkFGuPwz5WDLZ4cm4yBG4wzU7vJPu8Hyg5jpJYMQITJqL''@;'; put 'put ''bmGrbGmcorGZ6ba0+TmjjNguFmzDaXe5g8ojYUnQXV4w7n7ZEAWmX2Yih3FoUeHbH0nK/Hu8F5haSXfTz0NyYIs/3eMZbNFyR5aDwdzbvXeTu2ECMN5qEs/FkyHZ/kpIzhz0N48MF96SAAkMnYC6zefekZL5K2wpH4WLVi3STpU5dJD4BEXmsLAF4kMUmAGYxnxlkKuwSsL1++I3TLl4yt+CykQW''@;'; put 'put ''/exbLcRi2ggT8K67jxsmgKDWODLCD2wOyT5kiMd5JR6Abw13gQRuTqBhvCVL70vJxHmGhEIoacQi7TeHNsg7IuUmzp+2bPqF1sn0Z6jVIMPmUzkSoMDMEaAfPq7i6sFPJ9CDFwXHE96IK1dY4Z+eDkH8ZUx6OvUZ/y4hw5GmGYhD/VjKLTviVaKTusW15/mR7SjT9DM/FJj37xxwZCQQRAImQpBm''@;'; put 'put ''LLPQgjclo+qRbc4koGFNcxiJP26dzKcgMhmzPiyGxfYhCsxim7FBxhuOWvIIWkQ2TEif/AZ5y5CfcuWkFldvRoLPV6OS8HtNMyQ61Y+F0P5sQmKVGL1H5YpcgYn2mEd3hGT9T6JD5sgPkAAJBINAzWhLFt+fkukLQ6ggwd7mQ55VnJbDUVP2rNeOPyhyb9GSOWSGRfYBCswim7DBhhstt+ThL6Bl''@;'; put 'put ''YlM6Vmiw9wz1ubTAFGk5HYLA1B6zfj8ZaOtIS9Z+JiWV9agF6lGiT8aCeQy9xNc9SYE51OOI7yeBIBHAmUVm3AKhiSLtNag5TGvmEGf3ssjc+Qp6l78chsh0f2mGuBK+vVgIUGAWy0zdYJz5FJitZ0Py3Ff8V2D9nTjSAvOhz6akoo4C8518+AwJkIBXBKrrbVn6QDJtzUR4DmMzh0BWRWbEkG0v''@;'; put 'put ''iux8LUKROQR0xfZWCsxim7FBxps/gRmSjouOPPuvcJH7PrGFFsxBDg0+RQIkkCcCV6yZqzU2M31Ry0zzLGFDZJpmCH3LDdm7KQyBTktmluSK6m0UmEU1XYMPNl8CU6ty9HVrDGZMutp87iJHDGbDOEce+EweYjA1yectkQ0/8W8t0MGPDD5LAiSQbwJaoP2WB5MyZb6BhECtmwmLZr43GoT1I8Zf''@;'; put 'put ''az9pjcwj2xGTaVNkBmFaB+4DBeZAGkV6Pxyx5aEvJNx+ul6X6LFwZfnSt01pPubvMkVXssg/jixyExPp0Rk+HYOJ7MctjrzxNGMwi/QrwmGTQF4JaC3iObdrbGZKyqohNFGgndbMmyPXdrsWGrCt+7EpJ/eYbsWOm3+K7ygWAhSYxTJTNxinlim6/xMJmTjHuzJFujm9ngxBrb3xnCN7N/hbXLl1''@;'; put 'put ''MG9LyZ2PiaQS1g1oDe2ltMA0ZNevUWD9ZZYpGho9vpsESotA42RLbllrSdN0GDJZziiryTfCaI7R68jL3w/LeRgyKMyzwlYUb6LALIppuvEgzbAtd70/JbNvy0MnH/TcPrHbkVe/72/3sHbeWPHuJIqtG5KMeyswbduQN5833CLrN54JvkoCJFDqBMoqHFl8XxIWTUdMXJM62gWo1KHcZP9NJP30''@;'; put 'put ''tNnyyncj0nIO4VgIS+JS/AQoMIt/DtHC0JFb1iRlyQMQmH0eiiuw0RNjb6fIc/8WlZ52f8Zh6ul7VH06/rKmwdte5GrBTCZM2fjTkBzf4+8wgQAcytwFEggMgelLUrLsAQvnJu1pjrMUVeYN59aMGnLprCO/+m5YOi6hc5LrQ7vhR/iizwlQYPp8grIZnsYfzkKbxHs+6EjKQ+udbjvjJt/8TLpN''@;'; put 'put ''YjbjKfR7NP5p6iLd/xRin7zduu5/b6/Iq9+NysXT/hTY3u4x10YCJOAVgbqxttz2CFpNzoLItBGX6U2jNa+G57v1hGOmnDtky69+GJH+bp5vfTdBQxwQBeYQgfnx7WplGzvNkgeRQe31VZ8KLMH3XAuuP/81f/aRjVU6svKDCZmEfsGexl9i121kp3deMOSFb0alr8ul4cdDgGMiARLwKYFIzJYl''@;'; put 'put ''91sy73Y77TJnP/MbzlQELSWPbLdlw0+jCHfiOfeGsHz+IgWmzycom+G5LuJaWx75rYSUVyGD0aM2iZlt61fcMQy4iQ05vM1fbmIND5g4x5b7HkcqojvQzKhzv1XhrijPHRZ5+btltD7kjpRrIIGSJTBjqSXLHkxIdQ1a+mopI7rMr3ssqMjc/ZojW55nIfbrQiqCFygwi2CSshmilip68DNJGTfD''@;'; put 'put ''20xy3bar26C22lF0/UXEYvb1+sd1UV5ly6rHUzJ+BrLHk976n1RgOo4m94Rkyy+ZQZ7Nccj3kAAJXJ9Aw3hL7niXJWOm4dzCLPPrg8K5N4wE0zeeDcme11mI/fqg/P0KBaa/5yfr0bmJPmhdtmSNt4k+mQGoyDTwhd+9AVeVz/ojozwctWXeHYhxethGLTVvxaXutwpMK2nKhp8bcmynFtfkQgIk''@;'; put 'put ''QAK5ESivcuTWB1Poaa4mTC3Mnk6mzG2twft0CIXY1Rv36x+H5cQu1sgsxhmmwCzGWRtkzCHECk6cY8n9n7TcvriDvCXnp1RwpZBEs+7JMIrijqyr3EBi09jplqx+3JJIOU7QiGvyclFB7YBpT1tIXvhWVLpa/WO19XI/uS4SIIHCE9DEzPl3oTA7yhnFyrQwuwY6cbmWgNbI7O9B0s93Y3L+JM7K''@;'; put 'put ''LF90LSJfP6bA9PX0ZD84BwE9laMcefS34lJZmz5hZf/p7N6poktwVdndgbqYyKpu1XplI7FA+NWORtzlR1NS16SdIPJjvdST2ckDIq99P4pYTHfvR2JvuU0SIIGAEpg8z5LbHk1KTR0MmWrJpMp8x0xr+aL2Zlte/nYU5Ys0jZXn4ndA8ukTFJg+nZjhDEvL9dz5GAr8rvC24PrAsehXOwRvcds5''@;'; put 'put ''kVd+UHjLnpvQVOPI3R/WuMuQp1njV+0ndtS2UGD9BS3PxPjLgWx4nwRIwDsC9eNtxGUmpXEqXMJsMTkoWC1fdOZAunxRwkc5AIMOlk9eIUCBeQVF8d9RN/mkuSlZrW7yVP72xxWZcF20nhH59RMR6WgplCXTkaoanIzfl5IpKEnkZceed9BS9zgKy7/4rYh0Fmz/3jEKPkECJFACBCqqHVkOkTlt''@;'; put 'put ''gVox2cd8sCnXzPK9G2wk/kTFStGKORgjvz1Hgem3GclxPLEKWx76XELqx6OjDVqU5WvRr7eB9l7t523Z+POInD+e5yQYCL66RojLxyzXcplPcZnOHg/Jsd0hWfcjf/dgz9f8cr0kQAKFJRCGB2oJkn8WrHDgJWLyzzvo40dHW0puedqQPZuQ9GNRZL6Dkc+eoMD02YTkOhzNJl9wT0pufxQtDvs9''@;'; put 'put ''bmtzzeD06x0yQxJHp5vtr5hycLOZl1hF3afxsyxZjo4YdY1m3tzimd1TgZlE9vj6Hxlycn+ehXNmo7wlARIoeQIaS6/JP8vWpCQaS2dR589MUHy4NbNcDSevPmHK6f0oX8TYeF9PIgWmr6dn6IPTGMWaelse/iKKro/KT7LPwFG515D40odMQ07stuWtVyJyqdkbl7nuSwVKeiy4OyVz7rQliqtX''@;'; put 'put ''C7Xj8rm41kts4PzxEILK/dm5KJ/7z3WTAAmMPIGpC1NoMWlJFRI3NfGHyT9vz4lmlne3O27ST1uza+Z4+0Xe8xUBCkxfTYc3g1GL37I1SVmqNTHzbMXMjFi/5uq+6Oly0OZLO/6Y0o4Wi8NZ9Cq+rMKRKYttmb/CkoYmxFuqsPS4Q9FgY1OBaVumbHo6JIe2jmwppsHGx+dIgARKg8DYqZabtFk7''@;'; put 'put ''BpZMnBMpMt+ed7dn+REk/XwPPct7hvc78/baeC9fBCgw80V2BNebtmI6sGLGC2LFzOxq2poJoYmC7D2djpw7EoJV05ALJw3p6775SSActqWmEYlK82yZutCS+rFoqYazaj5jSTNj19u3rZfIkEcZpmT85mMe+HneJwESIAEvCdQi7vzO9yZk7FT1RjH5ZyBbTfrZ97otm59m0s9ALn66T4Hpp9nw''@;'; put 'put ''cCxqxVy4MinLHy6cFTMz/IzQDEdM16Xd02FLx0VDLp0LSRcys/s6ULBdswDxv1oqK5EZXoOr9PpxKRk1Wp8Lu20fbY+Lp2fGd71bFZippCGvo3PP0Z20Xl6PE58nARIoHAGtb3zH+xIyeTbiD1Esk5bMy+xxvlZjxuanUEpuM+IxbTzBxVcEKDB9NR3eDqa8yhLtT94wAbGLeShGns1o3a88EoFM''@;'; put 'put ''xGkauNWAdW3/lWlboaLObQmG522M0RrwWjbr9+o9Og5VvCf2oVPRE7giZoaiV2i5HhIggRwJxModuf3daC+5BP4piswrNPW3I5VAPOZ30pVMKL6voPHFHQpMX0xDfgahdTG1U8R9H0VdTFV0qu64vIOAaktNRuzvFjem5+JpZo6/AxKfIAESGFEC4YgttzyclHnLNXQH53Sez935cDv9nLNQsxiN''@;'; put 'put ''P+AhY6efET1Mr9o4BeZVOIL3QLv7rHg3Tkp3Ft5VXiw03dhLx0SpJUd2vca6l8UybxwnCZQaAQM9zJfej1qZKx107WWtzMz8azzmke22rPsxvE9J1x2VeYm3I0iAAnME4Rdi05p9WFVrywOfTko9srFHylVeiH0dzjZccYl/zh5Cz3G0vkwmeHIaDkd+hgRIoHAEFt+XlCWrIDKRGCn4n8ZMEc0s''@;'; put 'put ''3/KsyO4NiMdkiFPhDsYbbIkC8wZwgvKSiqix0xCP+cmkGFHtd8vTkc6tKyXhbepsDcmr349I23lmjQflmOd+kEDQCWh94KWrUxBW2FOKTLSWAwa0SH75e2FpPqxF2IN+BPh//ygw/T9HnowwBNfK3Nu1rpqNDG6ejTLiMtlnyIZfaJF4Zo17cqBxJSRAAgUjMHdFSm590JJwGdQUGreVuqbSWszt''@;'; put 'put ''zZfjMdsQj6nWFS4jRoACc8TQF37DWrrotoeSsmgV4zH1vGPbhux4OSS71kUKPxncIgmQAAl4QGDO7SoyUxIp05Oam87pwVqLdxUaj3l4q8j6n2iZPHqlRnImKTBHkv4IbDuCTMS7PpCSmbeUrshMX9Qasvf1kLz5HFwpaWf5CMwGN0kCJEACuROYudSSWx9NSlk5RabS1MzyTfBM7d9ssj5m7ofX''@;'; put 'put ''sNdAgTlsdMX7wRiKm9/zwbhMXWRKsg9+lRJaXHEZMuTgmyJbnkGvcS34zoUESIAEipzADIjM2ygy3VkMoeZyot+Wl74ZlYunYcXUOnRcCk6AArPgyEd+g5pZXlntyL0fTMnEBbBklojIzIjLA2868uYzUYrLkT8UOQISIAEPCajIXA6RGaMlU8KwYjYftVGEPSpxxNpzKTwBCszCM/fNFssqtM9t''@;'; put 'put ''SqYvhciMBzdC3L121fMLYi73bArJjhfRipKWS98chxwICZCAdwRmL08i1t6WSAwpPyWezxkpN2XnKyJbcc63WbrIu4MsyzVRYGYJKqhvi8RsWf4ICrHfYUhS20lqq8YALSouQ2G4S/pCsvNVCMz1iMlhzGWAZpi7QgIkcC2B2Uj8Wb4W2eWlLjLxA6C/Aa+gdNHpAzj301V+7aGS18cUmHnFWxwr''@;'; put 'put ''1+4QC1ehptp9Fgr3hlBLLBgiU13i2v+8sxVXsC+F5fhOtoAsjiOSoyQBEsiVwLw7U3LLAxCZ0dK2ZBooXdRxwZEXvhGWbpYuyvWwGtLnKTCHhCu4b9a+5VPmw5r5rqRUN5iS6i/e5B+9YtWiuyEDMTiHHXkDmeKXmikug3v0cs9IgAQGI7BoJTr+rEZWtVnavcu1dNH+zQ4yyyMoXeT+QgyGi895''@;'; put 'put ''TIAC02Ogxb06R2pGO67LfMoCwy3IXmxdf9JWS0P6ey3Z97oJl3gY7R8Z4F3cxyVHTwIkMFwCy9YkZNFKXHCjd3nJdrdRTYmfgQ1PhuUoPFmOTZE53ONpKJ+jwBwKrRJ5rxlG158Vliy6NylVdWFJFEECkJ4uNNZS/zt7xJEdr4Tl/HFaLUvkkOVukgAJXIeAeqdueyQl8+/Q0KfSFZka/tVzyZbn''@;'; put 'put ''vxaTjrb0b8V1kPFpjwhQYHoEMnirgTVzjCOL0et2+gJLzBgyrxP+yzR3hSXiLA0jJK3NNoqnm3JsO7PEg3c8co9IgASGSyAMo8GK9yTRYANrcEpXZKqr/BDK1G34aZhdfoZ7MA3hcxSYQ4BVim/Vq9+maZYsXGlJ0wyRMAKmkz4QmpkEHu01237RQmuwiBzaZkpfN10fpXiccp9JgARuTEArhtzz''@;'; put 'put ''vqRMXghfsVOiMZn4eTDg2Fr3o4gc22mgXTB/L2581OT2KgVmbvxK5tMqNCfMsmT27ZaMn25LWRWshChrVMiMc/dUAGtlOJyOD209I3J0uylHdyPmsptxliVzMHJHSYAEhkWgrMqWVR+GsQDncG24UYoxma6rvB2u8q/SVT6sg2gIH6LAHAIsvhUEIDRHN9kybYktk+ZYSAoKiQmrppWyxbIQ4+Nx''@;'; put 'put ''hSO1VGrbL9PUq01HutstaT4CNzhEZfNRCM0khSWPSxIgARLIlsCoBlvuezwpdeP0E6UpMtVVfnCLIxt/Rld5tsfNcN5HgTkcavyMSyBaZsvYqRYsm46MnWbLqDpHohVht7CtWjZtXB6rKMxGdLrWSRWTiKXUP42p1Of6+1LS0x5y+8meOWzKeYjK3i733ZwFEiABEiCBYRAYM9GSe2DJHFWvzTWy''@;'; put 'put ''OkUPYys+/oj7WyPy6ydMOb4rzALseZoqCsw8gS211ZphW2qRFNQwERbOCZogZEtljQXBaUg0elkwuuLxajKIN0c4kCOWbUsi4UiyV2ClDElHiyGXzhnSciYkXbifiFNUXk2OjwYSMFDzNAwrNy5RUI5FZHRDndy+dKHMnzVDImHt3uSxaX3gxod5Xy+++uNxaWvvlIuX2uVSe4f719HZJV3dvdLb''@;'; put 'put ''1y/JVGqYa+fHSODGBCbMSSEmMyWxKnxncCz67xty4/Hn+mq6ALstL349Kl34zdF4fi7eEqDA9JYn13aFAKyZZSLlVY7EKhGzWRnCYwdJQmqlvPwmCMsEit4m+0TiPSE3QaevN4Qi76GSO9ldwcY7VwhEI2EpLyuTyspyqa6skKqKChlVXSU1+jeqSirdx5VSWV4uFeVlUlYWc+PK9ODR12trRiG0''@;'; put 'put ''wt+lqvRHTf/S8XC4wEomXdHZB3HZ1dMrnV09V4Rna1uHtLa1u4K0HSK0o6tb+vrj8BLgKo0LCQyDwOzbknLHY9o8N23GLDWRqa7yXevQ6Q3NOCz2Kh/GEXTjj1Bg3pgPXyUBEsgDARVV5RCEVRCOdRCC9bU1Mrq+VhrqavBXi/t1MqqqQioqyt33RSMRicViCJ1IX53orYqyjLjK3Opzum7L0ixZ''@;'; put 'put ''jS8rrp9MHbsuun96X28z9zP7k0gkICz7pfuyAG3r6JQWWEBbLrXJxdY2aYEIVSGqVlAK0DwcvAFb5a1rE7J4FTzliKMvrm+LBxOhXzdo6xe/G0bXN3WVe7BOruIKAQrMKyh4hwRIwEsCGRFZW1Mto+vqZFxjgzSNHSONcF+Paah3LZGjqiulDMIxIx71MyoWM38qqgaKRy/HV6zrGihC1UKrj/U2''@;'; put 'put ''I0DjcLurAO3p7RMVn2r5PH+xVc5daHFvVYy2dXTABU/rZ7EeA16O2zRtuftDSZmxBImUSVyYebnyIliXGTXQlMOWl78VlXhfxr1WBAMvgiFSYBbBJHGIJOB3AmWxqGt5HNc4WiY2jXX/xo8bA2FZ67q1K2GJjMAKqWIoIxoHWhn1OS7eEFDGmb+MAM1YfJV5b1+fdHR2w9XeIc0trdJ8oVVOnjmH''@;'; put 'put ''2xbXEtoJ17sm6HEpHQLlFbas/lRSGicjJh4JmqU2+2G4yrc866C1cERsuso9O/ApMD1DyRWRQPAJqHDReMfG0fUyeUKTTJ3YJFMmjod1crTUw9VdVVWJOqXqakq7p1NIUsncp4j0x/Ghc6iCU8Vnxv2uVmIVnl0Qly2weJ5tviAnIDpVeJ7BfbWCJhJJf+wAR5EXAnWNttz/qbhU1cKKV2JJP1q5''@;'; put 'put ''JN6L2phfj0lbs/rNmfDjxUFGgekFRa6DBAJKQOuPumJyfJPMnj5Fpk+ZKBOaGiEma9z4SBUoKk7UMpZxawcUReB3KyM8M+JTH+sFQndPj7S0tsups81y7NQZOXryNIRnsys6dd65BIfARGSWr/xQSsIxSCyYMUvJkqkJP4e3ObL+J0j4YX1lTw5qCkxPMHIlJBAMAhoPqa7tGRCSc2ZMdW/Hjhnt''@;'; put 'put ''urnVMqkiUkWH3tIiGYw5v9leqODMiE691Uz3ru4eOXseVs7T52T/4WNy5Php93F/PHGz1fF1nxOYf1dSlj+KQWqinM/H6unw1GgJ4+2vfxCRE3s0iZBWzFz5UmDmSpCfJ4EiJhBBKaAmuLfnzJgmC+bMkOmTJ7iJOFWVle5eqYUqY50s4t3k0D0mkBGc6mbXRa2c5xHLqdbNvYeOysGjJ1yLZzLJ''@;'; put 'put ''Op4eo8/76mC4lrseS8isFYiXLrGkH+1K13rGkRe/EZG+Hib85HqwUWDmSpCfJ4EiIqDCoHZUtcycOkkWz5sl82ZPlwnjGmGhrHYTQzLWSbVQciGBbAnocaV/auXWpau7G3GcF+UAhObOvQdcwdmK7HUmD2VLdGTfF9Okn4+lZNx0xFKXWNKPusrffF5k12vw2DDhJ6cDkQIzJ3z8MAn4n0AYVqYJ''@;'; put 'put ''yOxWQblo7iyZOW2SWyZIxQAtlP6fv2Ic4UALpx5jrajRefj4KXkLYvOtvYeQOHQeoRaM3/Tz3NaNtWXNpxNSOQomzRJK+rmS8PNvSPi5oG5yusqHe5xSYA6XHD9HAj4moGWDpk+eKEsXznWF5dRJ49HdZpQbN6lWSv3R50IChSKgrvRM1rq2wjx64rRs27VPtu/e72aqsyVmoWZiaNuZujAl934w''@;'; put 'put ''JYZGQpRQ0o9aMQ9uEdn4M1OsFF3lQztq3n43BebbLHiPBIqagCbozJo2WW5dPF+WQVhORLZ3BdopDkzMKeod5OADQSDjStcsdY3d1AShzdt3ytad+5AodJEXPz6b5VseTMqS+9DwoJQ6/cBoqVn0L34nLOeOoOwaI4aGdVRSYA4LGz9EAv4gEIGbW62Ty5culOVL5rs1KcvRm1stlGqpZKa3P+aJ''@;'; put 'put ''oxicQEZs6u0ltLfUBKGNW3a41k3ttc5l5AmEI7bc9/GkTJoFT7lVOkXYw+jwc/awIy9/JyLJOK2YwzkSKTCHQ42fIYERJKCWH+3ZfRsslXctXyrzZk1HT+9KisoRnBNuOncC6kLPlMI6fe68vLF9l6x/Y7scO3lG6ELPnW8ua6hpQDzm5+JSXQOhVULxmNpGcsOThhzcmk5ey4VhKX6WArMUZ537''@;'; put 'put ''XJQE1Fo5fcoEuXfFrXLHrYtRXmiMux+ZzO+i3CkOmgQGIaBCU/+0beXOvQflVxvfkB1aevCmAABAAElEQVR7DqDbUP8g7+ZThSAwBfGYKy/HY5ZKJ1EjHJL2CyLPfCkKKyaTfYZ6nFFgDpUY308CBSagsZWL5s6UB1beIUsXzHWLnmuxaybqFHgiuLmCE1DXufaw1+P9CLLQX9nwhmx88y25hD7q''@;'; put 'put ''XApPYPkjSVl4T2nFY2rCz6anRfasixQeeJFvkQKzyCeQww8ugfKyGJJ15snDq+9yywvFIDT1h5Y1KoM759yzwQloWIgKTV1Oo2WlCs3XXn9TzrdcYpzx4Mjy8mwkBlf5JxOoj4ki7CVSHzNkhqS305an/6VM+rpoxRzKgUWBORRafC8JFIBALBqFpXKOvOuBlbJ4/mxR17gKSybsFAA+N+F7Auo6''@;'; put 'put ''13jNc8g4f3n9ZvkVxKYKTV54FWbqRk+w5IFPpSRaoZnWpZH0E4UVc8erIm8+RyvmUI4yCsyh0OJ7SSCPBMJh0+39/dja1XLnbUtEhSaFZR6Bc9VFTWCg0Hz+1Q2u2Gxto+u8EJM6D/3Kby+hfuUh5DYlEf77zJcj0tGSbo9aCM7Fvg0KzGKfQY6/6AmoZXJ0fa08ev+9cIffLXW1NXSFF/2scgcK''@;'; put 'put ''RSAjNI8cPylPvfCabHhzh/T09hVq8yW5nZDhyH2PJ2XKotLpV65WzL2bHNn402hJzvlwdpoCczjU+BkS8IiAWimXLZwjH3r3Wpk/e4Zbu5LJOx7B5WpKikAU3yX97mzduVd+9PQLbv9ztqPM3yEwCqWLHkQryap6xCWWQOkihAHj+HLkuX+NSus5WjGzObIoMLOhxPeQQB4INNTVymNr75NH7r9H''@;'; put 'put ''KivKJZFI5GErXCUJlA4BTQZSodmGLPNfvPCq/Oz5X0k8zu9Vvo6AGUstufsDqZKJxYzETDm83ZbXfhjLF9JArZcCM1DTyZ0pBgKaoDAbLR0//eHH3CQetbrQalkMM8cxFguBTN9zzTT/9pNPSfPF1mIZelGNEw5yuefDSZmxVLPKLW1XHuhFrZgw1srzX4vIhRO0Yt5ssikwb0aIr5OAhwQ0kWfV''@;'; put 'put ''HbfJJz7wLhnXOBrWlbiHa+eqSIAEMgTUmqmlvbR+5pe+9YTsP3xMUriY4+Itgeo6uMo/m5Tqeqy3BFzlasU8tsuSV74DK6YqTi7XJUCBeV00fIEEvCUQi0Vlzd23y+c/9n7R4umaIc6FBEggvwRUZGqf8y9/50nZtHUn207mAfeMZXCVvw+uctgwS8GKCWUJK2ZYmo/Tinmjw4kC80Z0+BoJeERA''@;'; put 'put ''i6Z/8NEH5MPvWYuL3hBd4h5x5WpIIBsCWqS9vz8uX/nuk/Iq3ObxBC/usuGW7XtUWN77kYRMX2KUhKs8gh7lJ/Y78vI3Y4EX1NkeA4O9jwJzMCp8jgQ8JFBRXiYff/+j8v5H1rhZ4iwI7SFcrooEsiSg5YwS8Bp8+Vs/ktc2UWRmiS3rt2lW+drPJaRyFNzGQS/Ajl1EF1N5/uthOXcknDWjUnsj''@;'; put 'put ''BWapzTj3t6AEVFx+BFbLjzz2sJslzm48BcXPjZHAVQRUZKol8x++9j26y68i482DOSuScud7oC8R6xp0V3kmFvNlxGKqV4rLOwlQYL6TCZ8hAU8IaI3Lh+67S37jEx9029jRcukJVq6EBHIioO7yVsRk/o9//JocOHJcLNvOaX388NsETBRgX/2JhEyYg+dQMzLIIjOtKRGL+XVTmo/Rivn2UfD2''@;'; put 'put ''PQrMt1nwHgl4RkDLpGgB9T/+3c+5CT0sQ+QZWq6IBHImoIk/ew8ekb/556/LBfQx5+IdgdETkVX+qYREyrVXOayZ3q3ad2tSK+bRncgo/y6tmINNDgXmYFT4HAnkSGDsmAb5T//uczJ35nSWIsqRJT9OAvkgUF5eLk+i48/3fvqs9Pah0TQXzwgsezApS1c5Ylt2oAUmksk13FR++dWIXDzFjPJr''@;'; put 'put ''DyAKzGuJ8DEJ5EhAM8Y/gIzxT37w3Yj34g9Xjjj5cRLICwEDWRra5ee//f1XZM+Bw3SVe0g5Vo6En8/HpX4cFBgiEIJuxTy41ZZ1P2J3n2sPIQrMa4nwMQnkQECDvSdPaJK/+KPfltH1dW7WeA6r40dJgATySKCsrEx+jYzyf/za96WrpzePWyq9VU9ZmJKVH7bFgMIMssDUWEwb8abPfDkql5pp''@;'; put 'put ''xRx4pFNgDqTB+ySQI4EyFFPX/uKf++j7ab3MkSU/TgL5JqAXhFoT8//6/74s+w4dpRXTQ+BaG3PVRxMydVHwa2NGy0zZvcGRTb+Iekiw+FdFgVn8c8g98BGBuppqxF5+Hj3G5zD20kfzwqGQwPUIaCzmD372nDzx1POMxbwepGE+39DkyJrPxKVME36wjqBaMkOoiRnvE3nmX6LS1YYHXFwCFJg8''@;'; put 'put ''EEjAIwIa0zVz6kS4x39XKivK3dJEHq2aqyEBEsgTgSjKie3ef0j++n99Vdo7u/O0ldJd7S0PJGXJaiT8pILtKlcr5raXHNn2Iq2YmaOdAjNDgrckkCOBCIo43718qfzRb3+GsZc5suTHSaBQBLSkWHtnl/zZ3/yTnDxzDlnBQbWzFYro1dupqHTkQST81DZqsGJwa2MaZkh6Omx56p9i0t9LK6Ye''@;'; put 'put ''BRSYV38X+IgEhk1AC6u/a8298kUUVo/H48NeDz9IAiRQOAIah5lMpeSvkE2+e/9hSaELDRdvCcy+LSV3vg/p5AEvW6RWzA0/Fdm3KeItwCJdGwVmkU4ch+0/Am6Cz0Or5XOPv48JPv6bHo6IBK5LQK2Y/x2dfd7YsQveBwrM64Ia5gtmxJEHUHy9aTriMAPc4ccMh6TlnC3PfqlMrJRGnZb2QoFZ''@;'; put 'put ''2vPPvfeQQBm6g7z7wZXyeWSQ04LpIViuigTySEAtmPr31//r3+TNnXsoMPPEeuJsC1nlKQmbwXWTK7pw1JCXv2PIiT1sH0mBmacvE1dbegSi6HG86s7b5A9+45OSSCRKDwD3mASKkIAm5/X3x+Wv/kELrh9hqaI8zaHa81Z9NB74skUqME/td+SFb0TdC5c84SyK1VJgFsU0cZDFQMDED9WCOTPk''@;'; put 'put ''T3//NyUajTBZoBgmjWMseQLqHr/Y2iZ//rf/JGeaL5Q8j3wCGDPJQp9yWDHLkEgV1FwqKGkH4abPfSUqLWdKO9mHAjOf3yauu+QINI6ulz/7g9+UaZMnSjKZLLn95w6TQLERiCG05c0du+X/+fK3pLOLZYryPX93PpaQ2XdgK8ngli1i4fX0UUSBme9vE9dfUgQqysvkU+hB/n70Iu/rQ+VdLiRA''@;'; put 'put ''Ar4moO0iv/KdJ+WZl9ehqw9DW/I9WTVjbHnoiwkB9sAWXw8ZIenrseVplCzq7SpdKyYFZr6/TVx/SRFQN/nCuTPlT2HF1LqYrKlXUtPPnS0yAmF8R1svtclf/M8vy4nTZ/l9LdD8LX8oKQtXBrv4uloxX/+5yJ6NpVuyiAKzQF8obqZ0CFRXVcjvfPojsvruFSxXVDrTzj0tQgLaJvJHaBH5fbSK''@;'; put 'put ''7O3rL8I9KM4hV9fBivmFuFSMMiSEwvZBDMc0IyG5eNqW576MkkVWaZYsosAszu8nR+1jAgZKnsydNc1N9qmqrMDJhXX1fDxdHFqJEtAWkafPNst/Q4H1U7jlUlgCyx5MytL7gm3F1LqYz3/DlLOHSrNkEQVmYb9T3FqJENCi6+9F0fXPfOS9rIlZInPO3SweApnal//wb9+TdZu3SYIJeQWfvMpa''@;'; put 'put ''Wx6GFbOyJrhWzEjMlEPbbPn1E7GC8/XDBikw/TALHEMgCdSOqpbf+8LH5a7ly5jwE8gZ5k4VKwFN7PnZcy/Lt3/8NF3jIziJSx9IyLL70KI8oC0kQ8jviSPX8+l/jkh3uzmCpEdm0xSYI8OdWy0BAmolmTCuUf74dz8rM6dNoSWzBOacu+h/Ahp3ueGN7fKPX/++tHV0+n/AAR5hZQ2smF/shxXT''@;'; put 'put ''DGwsppvs8zSSfdaVXrJPSQnMD73rAdmyY4+cOHMuwF9Z7pqfCGhW+ewZU+SPfuszMh5iky0k/TQ7HEupEVBxuX33Pvm7f/22nG+5VGq778v9dWMxVyEWM6BWTDfZ55TIs/8axT6WVrJPyQjM8WPHyD/+1X+Wvv6EfPvJp+T51zayJIUvTzfBG1QYnULmzZ4uv//FT8j4sRSZwZth7lExEFC3+Ft7''@;'; put 'put ''9ovGXZ670MLzv08mzc0o/3xCKmpQFzOgDX4MeMd/+bWINB8tLTd5yQhMtV5+8RMfcntEa+2z19/cIV//4c/k9Dm2BvPJeSbQw3AtmdOnyP+OmMypkybQkhno2ebO+YmAhqqouNy09S350reekOaLrX4aHscCAssfRl3Me4ObUa5u8r0bHdn482hJzXdJCEztNfs3f/IHKB0z3RWYOsN6wmlta5fv''@;'; put 'put ''wJr53K82lHxT+pI66vO0sxH0152xJCnHdoYR2P3O7g36Qzd5wjhYMj8pc2dOc49FFmLP02RwtSQAAnru17/nX90Az9XTcqm9Y9BzvXaXKa+25eJJU6xUabkx/XCg1IL/WmSUl5WHAtndxzBD0ttpyy/+MSb9ve/8bfDDHORjDCUhMOfOnCr//f/8A5ffwB90PfGoNXPd5q3yjSd+LufOt+SDMddZ''@;'; put 'put ''AgQM05GJsyy58wO2rH/ClDOHr+8Kmdg0Vj72vkdk5R23um461sksgQOEu1hwApFIBCFRcbeQ+lMvvubev94glqxOyrRFlrz6g6i0X1CBSZF5PVb5ev6u9yZk1gqsPaA9yrVk0Ws/FDm8vXSSfUpCYH7+8ffKR977yHVLxag1s6X1knznx8/IL3Glq5YmLiQwFAKxCkfu/WBCpi4wZd8blqz/cfSG''@;'; put 'put ''x9Go6ip5cOUd8oFH1khdbQ2tmUOBzfeSwA0I6Pk7Fou5RdS/8t0fyzYk9aRS1292ECt35IHP9kvT1LDseMWRt16NSDLO34AbIM7LS6MnWbL2UykJwxMUxNY+4aghJ/fa8tK3UBOzRDRG4AWmFrz+u7/8Y5kAq1EqlbruF2OgNfPrP/gZ43SuS4ovXEsghMj0xsmWrPl0SiJRuEK6Q/Lq90y5eOr6''@;'; put 'put ''VkxdRzhsytwZ0+Tx9z4kSxfMdVd7o2P02u3yMQmQwNUE1GqpHoFNW3fKE2gBefTkmZsm88y9PSnLH4U7PWJLd6sjL34rIh0t6sakyLyabn4fqXdx9ccSMmURuKfswGlM1ZSJhCPP/EtMOltLw00eeIF5y6J58pf/4XdvKC4Hfm20jEXzhYuuNfOldZsGvsT7JDAogUjMkYX3pOSWtTgvxtVSEpKj''@;'; put 'put ''O0TW/ySKk+TNf6SqqyplzT0r5D1rV0lT4xj3WKXbfFDUfJIEBiWQMRBo68cfP/uSrEedy55eVLi+yVJWKXL/J/pl9ER8a2E4MyKGbPyZATcmYjGTN//u3mT1fHmIBCbOsWTVRy0JG8ETmIrCrYn5FGpiri8NN3ngBea/++zj+OFefV33+GDHv8ZlGqhfqLGZas1kvbTBKPG5DIGySlvu+2hKmmYI''@;'; put 'put ''fpRs1/uRiBsQmIac2pddD1rtXz5pQpO8a829surO20RFZxLt62zbzmyGtyRAAtcQ0PO09hS/1NYhr76+RZ59ZZ2cbb54U6tlZjWL79N+2BCXhoXPwKuAOLkj20U2/cIcNFEv8zne5oeAiVj2Bz6TkHHTMRm4Vse/gVrCkZCcO+7IL/81lpXxodh3PtACs6qyHO7x/ySNo+tdt8lQJ0utmWebL8Ca''@;'; put 'put ''+bS8suGNoX6c7y8FAjB71DXa8iBOiuXVhjj2ZZsljB8Xz4TkV99DokFX9u6QCC5utDD7u9aslOVLF0hlRQWFZikcR9zHIRFQYanu8O6eXrf80DMvr5MjJ07dMNby2g2MnoALQ7hkK0bhO+uEXDGj2b7tLY689I0oWvtl/729dt18PHwCs29NyR3vx4V6EAuv43fBxm/Ecyi63nr2xiFUwyfon08G''@;'; put 'put ''WmDeccsi+bM//O0rpYmGg12tmRo0/hqujr/xw1/IxUttw1kNPxNQAiE3e9yW1R9PYA9x9rh8yZ2O4Tbk4JtqDYkM+Wo1Go3Iwjkz5dH775FlCPMoRyIaLZoBPYi4W1kTyLjCu7p75I0du+S5V9bL4WOnJAFr/1AWDWu57/G4NM3UsjiOa710P2+EJNXryAvfjkjrGVwwQnhyKSyBWLm2j0xIbaOq''@;'; put 'put ''McxNYTef962pm/zN5wUJZcF3kwdaYGrnlEfuv3dI7vHrHV1qzTxx+qzbBUjje7iQgBIwI47Mvg1X3O9xXPf4QCoqMq2UIVtfCsm+jcM7mcSQpDYf9VvXrrpLNJ5Ys89VaDJGcyBp3g8yAb3A1wt9FZda7WPz9l3y8vrNrrBM3iBx83pMVFAufzQpc+9QcZl2jV95r6snHSTpReXUIQjMEmvtd4XD''@;'; put 'put ''CN9ZtgahC6uhL5GwFTSBaYZD8G7Z8uyXymDNdA+4Eaadv80HVmBWV1W42eNjGobnHh8MuZ7kUjjgX8HJ7Xs/fRaF2jsGexufKyECboLPyqTc8kBIkv1Xl0JxTx34p79fZPPTYTmOAuzDXdR1PnPaJFl91+1yx62LZXR9nRufqVnnA2u7Dnf9/BwJ+I1Axg2ucch6cb9u8zY3eefc+Yti5RCbvOje''@;'; put 'put ''pCy5X4uwXyMuLwMwIADW/ciU47tZdH2kjgktvP4QCq/HKnARAIUZKJGJ3wS1y/7yKzFUGgl2GEZgBaYX7vHBvlx6Na1B5afOnHM7Q6zfQmvmYJxK5blImQ1xaSGLHPWB3Qzyq/fcFZk4h/ShdNHrPzfl1P7hi0xds7acHNc4Wu5evtT907aTGoumQpNWzavZ81HxERhorezs6pY9Bw7LrzdtRS3L''@;'; put 'put ''/aKPc13m3YlqD2uQpQwXuSB/bjDhYmom+c8NObLNlBQzyXNFPqzP60XzqscTMn0JrMioYTrYPA1rxT75kLrJt73oyLaXgt06MrAC8w/gHn/YI/f4YMdkxpr5MkoZfe+nz7ktyAZ7H58LNoEoijQvfwTuttthwRxEYOreuyIT8dx9+H3c8kxEju3yJri7sqJcFs+b5XYEWjh31lVWTWafB/u4C9re''@;'; put 'put ''qftbL5QSiYScPnferWP5OnqHHz911vUa5bq/Wqt28aqULFrliBmGsryOuNTtqMDc9DTip7ewVFGu3HP5/CQtWfQxS8xQ8EoWqZu85QxqYn45hjAA9xciF1S+/WwgBab+8P79fx1+9ni2s5WxZh4/dcatm7nxTRQ/5FJSBKIISF/xrhTiMK8vMBWInkJCSCCI9zuy5dmwHNkRfjuxIEdiGavmbUvm''@;'; put 'put ''y+1LF7lZ6FWVlVdc6BSbOQLmx/NCIJOwo8fnRcRW7oCV8nUUSN8Nq6XWsNTzqxeLdupZtjYps2+FuzWEMJYbiEvdHgWmF9RzX0cYhe8f+kJSGiYgy/8mc5b71gq8Bj20YaV9FuWKWpBMFtQlkALztsXz5S9QXF2TIQqxqDVTg83Vmvn9n/2S1sxCQPfJNrIVmDpc9+cS5xKtkXkAVa/2rotIf583''@;'; put 'put ''P6IZHBqrOWVik9yK74AmBU2fPFGqUFNTf8TVhU43eoYUbwtNQAXjwLhKTdjZd/g4ROVbsnv/YWnr6HSPUy/HpaWIboWHYfy0ECxFsIRl4WulwPRyBnJb16KVCbl1LdKyApjs42aT/xLZ5L8aXgJobmQL8+lACszf+fRH5L0P3+9J9ni205CxZh5FLTbtab5p285sP8r3FTGBoQjMzG4asGTqD93p''@;'; put 'put ''QyI70fc4X4HeGbG5ZMEcWTp/jkyfMtHte67HaiZmkwlCmVnhbT4I6LGmF+DuRTgu+NVSue/QMXlz5x5XVLZeakclmixU3xAHZ6B82PRFKVn2kC1V1TBaarmbLDdDgTlE2Hl8+6gGLVkUlzJN9sF2spzCPI7Iu1WbKLp+/pgtz32lDPvlraHBu1HmtqbACcwYEnD+7i//o0wcP879Ec0Nz9A/rXFE''@;'; put 'put ''ccQRaZvJH8CaqVflXIJLYDgCU2ngd9d1mfd02LL39bAc3prfziFhxLiNbqiTeTOnydKFc2X29CkydkyDVKD8llo3VXDqLQVncI/VQuxZxkqp7m+1Vvb29sq5Cy2umNwOF/jBo8elvbM7r8dZ3ThbFt6bkinz1d0N3+oQO8JQYBbiSMluG3o+uu+jCZmq/ckDVnhdfwOslCNPfykq7Re8icvPjmrh''@;'; put 'put ''3hU4gTl/9nT56//8++4JbKR+LAdaM7/15FPyxvbdhZtRbqmgBIYrMHWQes0aQucQB7XQzp90ZPc6U84eNGHR0Vfyu1SUl8nUieNl7qxpbp1NzUYfXV8rZSjoPtCdPlLfofzuPdfuFYFrBaWGJV1qa5ejJ8+4sZR7Dx51Swz19ce92uR11xOrcGTWLRYS7lJS3aAu8eytlgNXSoE5kMbI35+yICUr''@;'; put 'put ''P2KLgeDZIFkwlay6yTf+AuFSG4LpJg+cwPzEBx6VT33osYK6x6/3FXStmfGEvPDaRvnhL57HlXvX9d7K54uUQKTMkVsfTMmCuwcvU5TNbumVrLaoS8RD6F0usm+TKRdOGp4lOdxsDCoStID7ZFj9Z02fLLOnTZGpk8ZLQ10N4jer3I9r7KYKT1o5b0Yz2K9nBKW6vNVCqVnfbe0dyPy+ANf3UcRU''@;'; put 'put ''HpWjJ85IB851+XB9D0YXxlKZNC8lc++0ZNxkvAPfJ0fF5WBvzuI5CswsIBXwLVGUglM3ee1YnBMD1tknHDXk5P50a1LXrVVAroXYVKAEptp9/vbP/73MnTm9YAk+N5ukjDXz8LETbt3MLW/tudlH+HoREUjXwYRL7h7numWKst0dFZpm2EA5IwdFnpEIhDIpl86NTIZheVlMxo8d48Ztzpw62b0d''@;'; put 'put ''B5e6CtFYLOZ6CCg6s53Z4nxfRkxm3N26Fz09PUhi7HRLCR08clwOHjvpWijbO7pyKn4+HEIGSg81TrNlHoTlxFmOhBHTZqdyt3JRYA5nNvL7mdseTsqiex1P5je/Ix3a2kM4vff3iTzzTzHp7lAFE6wlUAJzEiww/++f/xEKoaP3c7YR3QWaz0yNt2fRO/eJp17wpGhwgYbOzdyAgJcCM7MZTQIK''@;'; put 'put ''oU5ab7stpw5qPb6wtJ5GweHMG0bgVksh1cOiqaJTrZuanT5p/FjEcY6WqsoKt/mADku/d5nuQmrt5OJ/AiokrxWTOo+9fX2uJbL5QivqUZ6RIydOywk0mGhGTKWWERqpc6y2ehwz2YErPCkT54VEyxDZiGXz6pRPgem/Y7ZxkiUPfDYpEfSpGMnzYD7IRGDF/NX3DTmaQ6e3fIzLi3UGSmA+uuZe''@;'; put 'put ''+b0vfMIX7vHBJidjzTx09IR880e/kG274A/lUtQE8iEwFYhey2rdTG1b19dty2kIzcNbDblwIoxSQ/5ApolDtTXVEJ2NSKobK9MQx6kCtHF0HZ4fJeWI51RXqgqRgcIz89gfe1E6o8iISL3NWCV1LtTN3dvX77q6my+2yqmzzXLyjP6dkwstl6Srp9cNjRhpUobhyNgptsxCjOXEWSJllegknsyu''@;'; put 'put ''9NBQxk6BORRahXmvzv3azyVk7FTIy4DVxNQ4zP2bHVn/k+B19QmUwPyT3/ui3LPiVvR+RvNnHy9qzexH0Pvzl2MzvWiB5uPdDfTQ8iUwB0JzXefoLpLAYX3huCOHUKT9LARn3OMamgO3Odz7Kl40gaihrtYVm01oazmhqdFtbzkG/dNrRlVJGVzs6mbX92bEprrb9T5jPIdHXlnqonGRumQEZOZ5''@;'; put 'put ''tSr3wSLpCkm4s1U4nm9pdV3dZ5svuI870IqxHzHjflsiMVvGz7JlJhJ4xk8NSaRMs2+9F5aZ/TZhUdryTEj2bcbFHFtFZrCM+O2ilUnUxNT42mC1jtT4+84WR57655gkE8FykwdGYNYgNuzv/usfuz9sxVBMWk/8+iOrcUxf/+HPZMeeAyP+BeYAhk6gEAIzMyrVEBqjaSHQvf2cI0d3m3Jyjykd''@;'; put 'put ''LSMTp5kZVza3eryXxaJSO6ra/Y5qiaTG0fVuqSTNXq+HxVNd7eUQp2r5VIGUEUeZ5KKMyz1zq4I0yEtm/3UfM8JRb/VPX8u8nrFCqiVSs7XV4qgXrS2oMdlyqc0Vjxdb2+QiHmvyTWd3jy8skjebu+p6W6bMtWTKEktGNxk49vMrLDPjCcdMefM5ZPa+jl7kCf9/tzLjDvpt3Vh09vl8XKLlOBEG''@;'; put 'put ''7KuvrUyf+2oUyZ3BKlcUGIG5fMkC+S9/9Du+Se7J9svuWjPjcXnucmxmF07+XIqHQCEFZoaKXuMaEJp6UurucKT5aMhNCmo+HpaED62amXHf6DaGuOnKigokEVVKHcTmOMR2ahZ7fe0o192uF5DaAlato5qApK73KGreZsTWwHVnrKAZATpQkGaeG/j+wZ4b+PpQ7mdE37WfGSgIM2Ix81zm8cDP''@;'; put 'put ''6Jj1QlnL/miXsP7+hPQn4q4FsqurxxWJrSgHpHV222CRbEPiTXtnp3R190ovPDhxH1oiB+7f9e5HY46MnmzL9IUpWC0dqarViEsk76gr/Hof8vh5V2D+MiR7NxoUmB6zzWV1eiRoHOb4GfCRB9BNvgVdfd4KWFefwAjML3zs/fLh9zzk2/jLG32x9IdGfyw1NpPWzBuR8t9rIyEwMxRcZwoMLOEw''@;'; put 'put ''LC1wGbZfQJmj/SGUvQhJ+9mwpHwSq5kZby63KsJUhKq4VAtnNdpfVsPiWVUFUYpSSlUQn3rfFaF4PSNEowhH0e9WBIxUlCorXZcmLelt5k+/g3o/I/oGik59buAy8DV9Xh8PFLV6P/Onr6UwESoSUyoY9RaP47ioVGujuqTVbd0HUaiJM92wPnbjtqcHf3Bp62N9Xl+PJ5KucLQCljylZYZqYZ2a''@;'; put 'put ''NM+SSbNTUjcOc4VwNHWDj4SQoMAceLT76/78u5Ny+yPBc5NruaLThxx54d9w4F9zvvHXDAxtNIEQmJps8D/+5Pdljo/KEw1tGtLvVmumZm4+89Kv5cfPvoQfF9Qv4OJrAmmBaaFM0fDrYHqxg65VE3GayAtC2QtbWs+F5PQ+Q84eNqT9IkoUW1eLJC+26fd1qDDUdpkqKvU2ghRUFZb6PVOxqm54''@;'; put 'put ''FaDu87hv4P1agSKzpD+f/mzmpG+hm4i6ogfWeFQxmYD40+fSVseUKyRVTCaT6fsqKlVgaiykPqf3rxWqme2Wwi2mREY1WjIB1qjxc2wZPR5JO2gHiOiPglorB2NNgTkYFX88VzvalrVfSCDBCzoMx0qhrNr53ntN6OzvseVpxGH2dAYnLCMQAnPCuEb5n//lPyCmMVr0J233Rw0/egcQm/nNJ34u''@;'; put 'put ''b+09mO9jm+vPgUAELr0lq5KyZE1Ikv3+MBnqBbDGamoqerzHgtg05MzBkJw7Epa2i5p5W3piM4cp5kc9IqDflfomW5qmOzJ+puVaLcsrTJyzCxNbme1uUGBmS6rw70u7yRNwk2PbASy6/tK3EFe/LzhxmIEQmA+uvEP+/W99xvfZ40P5OqpbT62Z2gHoyadfHMpH+d4CEtAfzcWrUrJ0DSyYPhGY''@;'; put 'put ''A3dfC/maprp+ITZh2VSBqTGb546giPtZXDX3BudqeeB+8/7IE4CxGDGUSNCZ5EBUWtKI2pVV9WiPF0NNV3i/1Rqst35bKDD9NiNXj2cB3OTLH4X1El6BoFgwdQ+1XNHO1xx549nglCsKhMD8w9/8pKxddXegBKYecGFYMl9EKaO//+p33dgwfY6Lvwj4XWAOpKV2SwNudBWdVkqk+5JaN9EH/Sha''@;'; put 'put ''U54ypas13a5y4Gd4nwSyJaDHVeUoGzGUtluvcgySdWrHiJRXIeMdFzl2ErGqKiqzXeEIvY8Cc4TAZ7lZtYKv/SyyycuC5Ykx0YnqwklHnv0SOqW5lZCzBOLjtxW9wFS3+N/9xX9EoedxbnyTj1kPeWgaj/S3//w12bRt15A/yw8UhkAxCcyBRNxTM+qvhdWVDh9lf78tXZccaT1jysVTIbdzUOcl''@;'; put 'put ''uP3jeJ0LCQxCIBKxpbJORMvHjJlkS8MEW0aNTgvKsApKnMDUSjkSiTqDDDfrpygws0Y1Im8Moej6Q59Lyli0CRVEJfn9giVbSOplSiYcNw6z81IwzrtFLzBnTp0kf/Onf+hmgAYpaF5jMc+jq8b/8X//vVuKJNuDlO8rLIFiFZjXUnKtmxCb2jlIY5v6+yzp7RBkpqvgNORSc0g6kKXe14NEjBJM''@;'; put 'put ''GLqWV6k9Nk0HiRW21DSK1I+33VjKukZHKmsdtGpEghQuVhyrOAXltXNJgXktEf89Xnp/0g1LCpqbPIIarK98PyTH3kLR1wAsRS8w3/3ASvnfPv/xoixPdKPjx0TW67pNW+Vv/+UbN3obXxthAkERmNdi1KvpEESDxm+qjcCCe7OvB3U320XamtPCU0VnF660412oF+iP/KZrd4OPh0HAjDhSUenA''@;'; put 'put ''GgkX91gISlgoa/Cn1spyFLlWV55mkLkxlBCVmqQTpIUC0/+zOXZKSh74TEq0GkGQDj+Nw9y93pZNT8X8PwlZjLDoBeYf/+5nZfXdKwIXf2mgbMo/ff378sJrr2cxjXzLSBEIqsC8lqdKCoHW1DI/IbVyQlWkIDrjKK3RC4HZAfd6J8ohdeBPYzl7ukIS70bXIQrPa1H65rEBq2SsDFbIOojJBgdi''@;'; put 'put ''0pEaiMpR9RCYNfoa6oWqmMTVhpPCRYbW38T/QfpBH2wyKDAHo+Kv5yJRRx7+YhzxvojvxbkoKMdkJg7zuf+fvesAkKo6u2fq9mVhadKLgKggCAFEaVKEqMRobFEsPxr9TTEaY/1jS6ImakSCYk9ETSxYwQIiUhRQmoICgvTey9Zpb/7zvWUImIXd2ZnZeffufbq8KW/uu/fcO/PO+8r5ns6gI8n+''@;'; put 'put ''1XUW8HH2RmmCKaLLj933ezRv2kS7+EvRwLzzobHYuIXmIrM5FoG6QjArmwD750/4x0FLp1g9o3Svh4KWrcVZVuShm53Ec7cbxXtJPPe6+Jxu9mLGGpW5qRXJUHb5kNlShoDA62WsZEZuFHkFTMKhS1tIZB5JZC6JZQWRpP4nM7tFi0+skTHLpFy1dblwxwOwIZjxoJW+Y08bGUKnXiSXCiSOVRcl''@;'; put 'put ''+b6yYBfjMP38vVQ/DlNpgqlr/KVUFFm6fBXueeTJCqtBdVenOa7WEajLBPNoYNuUkf8cQTxJVSxaM0XKKcj6AeXllEg6IJZOkHSSgPJx7HmAcZ6BUrpgwxWE52jnMa/bxkXGP1rIzAIyKD6dXc9Cdj7lgbjPpUs7u4DPs/leLv8yaYEWFQFexYRISka3JBJC3NwGzEMIGIJ5CApHP2jNcqIDLuJN''@;'; put 'put ''alQvuSKp6jPtJephLlNfD1Npgnn24H749ejL9Iu/9HjxxqQpeOnNyY7+gpvOAYZgxrcKbIMl/7H1Oe1/SJLYhCTo8TrBKjcspxikXFIp7ISiAPfltHiW0Q1fStIpj4OyLwHCAR7HYyMhciT+CWkSd64OmwzD440yy59/JI9+ksPMbBJJEsUsWiOz+ZdLi2RmHl3ZfD2DsZHiNpQkATevSzaJFFxp''@;'; put 'put ''JRZhIEnAERZpiGTVq8MQzKoxcsIRObx5GnFNObLzeNMka90JnUpCHyQOc/H0KBZOUV8PU2mCefN1ozC0f1/t4i/FRfXHMU+bKj5J+LKmugkhmKcMDOOUMyusc6k+n+7t2/SQ/0hWslw13EJC+X/sdYtEyWKN6jCJU9gmli6EKe0RJNkM0TIaLHfzMd30tJAG5LVyPqbUUohup3CQf6xiJMdLNSPL''@;'; put 'put ''kox4WvKoCRqReCe2Lao60YNZ8rYqRXXjoFi3znb3sxmGT9N6K8/lsdQ4j3I8/GNiqNTY9rIapawbL//8GSSG3EsspJe6fhlZFnx8LNZGv7zG432Mg/SQPHp9UkedbUs9UG5CqKOMixQrpC1YLiRdl6tsGhe6IZhpBD/OUw+5IoDmHfghfgl0Wfpiwdy8ysJHz2dU/KbEiYmTDleWYEr9cYm/bNOy''@;'; put 'put ''uXbxl9t27MKtfx6DomKaaczmaAQqapFbrEUuRMZktNTWZNkU6yDREtIlm9t+zndihFRelAMlN4XMS3JU5B8hZBYJakQIWUTqtHMvx9jvSz3sCqJm8T2JKY0eg2TKRY2foLWRpxViKScUQsm+CMEUUul2W/Zzed8jfeSf/X6MLB68Mh66QNp9kc4c7JP9gP2wXzH/pBoBQzBTjXDy2u/SP4Qew+Sm''@;'; put 'put ''UB83ufw2lBywMOmJDOUrrSlLMFtSWP3Ru2+GlFTUSf9S5IlmzV2AR556MXnfQtNSyhAwBDNl0Ka04UOe9IMPSPsqyOhhZz10zGGvHevhD62HRzw/+OSI147VmHkvbQgYgpk26OM+cdM2EQweRbkihpJocwNm34O68OFzXmxfz7tShTdlCeaAPj1w269G0w1G35dGm8gTPfvyREyeNkujUek7FEMw''@;'; put 'put ''9Z1bM7K6iYAhmOrMu4SUDL8myJKkZGW8e9OFZEoc5udvA8vnMZ5G4U1ZgnntZefjgrOHaZXgIzFcpWXluPvhJ/D9uo0KL6u603VDMOvOXJuR1g0EDMFUa54HXBxA2y5URtBIrkiS9VYuiGL2RLUTfZQlmA/e8Rt0PbETs0gZua/JJgRz3cbNuOPBsSgr18syq8kU/dcw/FlR/GhECCf0krrdJgbz''@;'; put 'put ''vwAyLxgEFEPA6/dg/ocuLJ/rsZPCFOt+netu59NC6H22XnGYHhaz2L05iklPZVYk8Ck6q0oSzHp5uXj8/ttQvyCfgfkVwfCK4n9EtyX+8pPZ8/D4c68c8bp54lwE/HTR9D47jI49DcF07iyZnhkEqo+AaIXOm+zGyvkeW22g+p80R6YDgYYtwxh2ZYRqC/q4yEUpIlAaweTxWSzPa0eIpwPahM+p''@;'; put 'put ''JME8sWM7PHjHjXZyj04JPqY8ZMLrudYbEILZ55wwOvQwBLPWwTcnNAikAAFDMFMAagqbrIjDDDAOk7IMGsVhyjqc+k9KFq2kFIWim5IEU0eB9Vj85f/9dRzWrN+k6HKqe932Z0dxxnkhtGEMUDhoXOR1bwWYEeuGgCGY6s3ogEuCaHMy+61RHKYk+sybBHzzmbqJPkoSzBuvuQzDB52hlcC6ib9U''@;'; put 'put ''70dNemwIpprzZnptEDgaAoZgHg0Z577e5Ywwegyni1wjPUxJ9Fm1MIpZb6ib6KMcwfRQVfmvf7gJndq3ZVk5lvLQZBP3uOhfPvr0BE1GVDeGYRPMn8rds9tYMOvGlJtRao6AIZjqTfBx7cMYfFmElbP0icOURJ+ddGZ+8JSfxR/UjMNUjmAW1q9nJ/jk5eZol+Dz3CsT8d7Umep9u+twjyX+p+95''@;'; put 'put ''EbTtKqUIjYu8Di8FM3RNEDAEU72JzM5jXfJrA8gpYF1yTeIwJdGnvJgVfcZnoPQA40sV3JQjmCd1bI8H77zRJpc6JfgEgyHc99hTWLZyjYLLqO522ZYpGh7GCb1Zi9zIFNXdhWBGrg0CQjDnvOPG94tNFrkqk0oVTAy5OohmbSm1XvG/Kl0/ej9ptJTQuY+eZ0WfdWpW9FGOYOqY4OOm23/rjp24''@;'; put 'put ''7U9jsL+o+OgLzrzjOAR8GVF0HRhGtzNJMMuNBdNxE2Q6ZBCIEwE3XZOzJ3qwbikJZlhN12ScQ9bicNEjPvmMKKywpVVFn5lvuLBqgZqZ5MoRzBuuvBgjzxqkVQUfIZiLli7D/Y89o1VddS1+taoYhMcfRaeeYfQ517jIq4DKvG0QUAMBcsqZr3qx8TsPrIghmGpMGnB89zBOv4C62Jplki+ZGcWX''@;'; put 'put ''H6iZ6KMcwdSxgo+XAusTJ0/Fi29Qk8BsSiHgZlB5i44WBl7KilKKBmIrBbjprEEglQiQT4aZOzp9At2SGzy84TcEM5VwJ7PtwuYRnHVVCF41uVilUHj9bmxYbmHahMxK33f6i0oRzLycbIy5/1Y0KmyACOUItNlcbjz61D/x2ZeLtRlSnRmIK4rCJhaGXhWEP4eB2BYDgMxmEDAIKImAy+NCyd4o''@;'; put 'put ''Ba79OLBbyKUhmKpMpCRcjvhFAPUK+TusSaKPm+tx306WjHwyQ8mqUkoRzLYtm+ORu2+mFIHcWepzIS8pLYMIrK/buEWV77Lp52EIZDGD8czLgmjc0s2YLX1Klx42RPPQIFAnEJAEn62rgRl0kZeXqJm5WycmqpJBCicYdgUTfTryTd7o68AQmOODQAB4/wk/ivaptx6VIpin9+yGu377CwJOxDXZ''@;'; put 'put ''JEts/aYtuOPBsSgtK9dkVHVrGL5MCz2GRnDSGSbRp27NvBmtbgiIuPXS2cDiaR6qQqh3QddtPuIdT8/hQXTpR36pUaKPWDE/et6DbWvVS/RRimBe+pPhuPLi87RK8PEw/nLO/MV4aNwL8X6XzPEOQUDiMFt3ttDvYgZvGQOmQ2bFdMMgED8C4iKf9ZoH65eZBJ/40Uv/Jzr0CKPvT/VL9Jn5OjPJ''@;'; put 'put ''FxqCmdIV9rvrRmFI/75alYj0eLx4/b2P8PJb76cUO9N46hAQ10y9BhYGM8C8XqGLmac6OGdSh5dp2SDgRASEXBbtAab904v9eyjYbeIvnThNx+xT41YRDL0yDK9XDxe5DFZqki+eHsXCKeplLyljwRQpn7/e9Vuc0KGdViUiwQSfvz39ImZ/seiYXxzzprMR8GVY1MKMoOsAI7ju7JkyvTMIVI6A''@;'; put 'put ''jxfyZZ8DC6bSPV5u3OOVo+TsV7Pzo/gxE32y85mexft8HW71JWxj9WILM17LcDb4lfROGYKZn5eLscwgb1C/QKsMcom7/MNfn8CaDSw6ajZlEXDx16xxS1oxR1EmQxQljKtc2bk0Ha+DCDCZwmKEy7SXvdixnu5xy2SPq7gK3O4oho8OoFEr9p6/wToQTEk827HBYk3yTOXGowzBbN3iODx69+9o''@;'; put 'put ''+vZqk0EuCT5bd+zCrX/8G4pKSlX8Pps+H4aAP9tCn7ND6NDDbcpGHoaLeWgQcDoCYiVasySKOW97ESgz1kunz9ex+tf/oiDancLikeGIcoSssnFJkk8RpbMmM5M8oJhlXRmC2bt7F9x98/UIBilorckmcktffbsC9zwyXhvSrMnU1GgYYsVs0pqSRZeH4MvgD5zRxKwRjuZDBoFaRcDNuOkwxdVf''@;'; put 'put ''8WLrGje/t8Z6Wav4J/lk3QeHcMogWi+pla2DBVOkisIh0cIUbVa1apIrQzBHDhuIG666RKsMcjcJ5kfTP8P4Ca8n+StmmksXAiJZdOqQCE6mVIapTZ6uWTDnNQhUHwE79nIukyg+8iFYbshl9ZFz5pHtu1WUjHRZ+tQkFyvmlBc8vAFSK5NcGYJ5/agLcd6IwVoRTJEoeu6ViXhv6kxnflNNr2qA''@;'; put 'put ''QBT5hYzFvCKEgoZGeL0GAJqPGARqDQG3102rkIXpL/uwb4e4xg3BrDXwU3Sixi0PZpL79Mok//RVMNnHlyLUUtOsMgTznpuvQ+9TT9FKZD1CF+pD457Dgq+XpWZ2TatpQcDWxTw5gv4XhCtcNDr4adKCpDmpQSCFCJBLCp2c/ZYX67/xsAqXIZcpRLvWms6tz0Sfa8qRnVshNKXDz69IFc2fEsXX''@;'; put 'put ''09WSKlKCYEpijyT4tG/TUiuJIikRKRV8Nm7ZVmtfPnOi2kHAli0aEkbXfi6T8FM7kJuzGATiQkASe5bMAr76xFTtiQs4hx/s9Vn48bVBFDQlwdSkJrkQzGVzLcx5Ry2pIiUIZv16+Xjsvt+jQUE9bSSKJIN809btuP2BMSguKXP4V9Z0ryYIZLNG+ek/C6JVJ7mARWrShPmMQcAgkAIEhFyu+9bC''@;'; put 'put ''3Ld9KC02WeMpgDh9TZJUDtWsJrnX78b65VF8MsEQzKQvrNbNKVF07y3wMilGqqbosIlw/JLlK3H3w09qMyYd5iWpY2BWeUFDCwMuCaGwmQfhoCGZScXXNGYQqAECQi63r4tg1kRm5e4St7hxjdcARkd/pO/IIDr0Zhc1qUnu8bqwa4tFqSLRwlRnvSphwTy1S2fcd8sNCIepJaHJJgk+02bNxdjn''@;'; put 'put ''/6XJiMwwKkNApIsatrDQ/8IQ8iXpJ2QU2CvDybxmEKgNBLx+D/ZstTDrDS/2bhODRW2c1ZyjthE4ZVAI3QfrI1UkWeTFey28R6miYJk6UkVKEMxhA07DzdddqVcGOWuQ/+vt9/Hqux/V9nfPnK+WEZDqEo1bR9DvggjyCt3GklnL+JvTGQQEgRi5/OwtD3ZvFnKpjiXIzGB8CBzfPYTTz+fdgyZS''@;'; put 'put ''RS5qtQbKK8TWi/epE9KhBMH8+U9H4IoLf6IVwXTRRT72uVcw/fMv4/vmmKOVRMAuJdkqgr4kmQWNXIgEjSVTyYk0nVYSAdstznJ7c5gxvne7sVwqOYlxdLpZ+zDOvCwCj0cTqSK5F6LqzPvP+LF7i7FgxrEUqj70N6N/jh8P7q8VwQyFwvjT488wDnNV1QCYI7RAQEhmg+Oi6H9RGPWbMDzIkEwt''@;'; put 'put ''5tUMwsEI8MIs5HLjCgvzJnkZc2m0Lh08W0nrWoPGFoaOLkdGFudbkzAIDzVbP37Rg00rDcFM2kKRhu5lichep3bVSgOzqLgEdz40lpnkO5KKlWnM6QjQXU5LZo/hFpq1ZbUficnU5AfQ6cib/tUtBMSt6GHs2spFUSya4kPJAcrWSN09s2mPQBYVPEZcG0BugVsrqaJP/02x9a/UEVt3vIvcQ1fy''@;'; put 'put ''o/f8Dse3ba2NBqb8yG3dvhO3PfA4DhQVa/9lNwP8IQKs9tMwiu7UyWzfBRDBfVO3/IcYmecGgZojINYeqd+8ZIYb384RBQd14tZqPmrzyRgCumphzpsUxTefqSO27niCmZuTjTHUwGzcsFArDczvVq+jBfPv2owp9sU2++ojIHfZJ54W5p8Fb4bJMK8+cuZIg8DRERDNwOK9UXw13Y3vF3thRYzV''@;'; put 'put ''8uho6fmOzPiQ/wmgWRu6hyr+V36gIrb+9Ywo5n9oCGbSJrNRYX2bYObm5DAhTI/ECJEomjv/Kzw47vmk4WQaSj8CYm1v0awJ2rZqjhlzFlSrQ76MKFqfFEG3MyOsYe6i1cW4zKsFnDnIIPADBFx0h4tLfOv3Liyc5sbOjW56Bqoml16vB5kZfpSUlhtN4h9gqvLTARcH0LaLC9GIpUUUkhDMFV9E''@;'; put 'put ''8dlbhmAmbV22a9UCD//hJv5w6COy7vX58MG0WRg/4fWk4WQaSj8CebS2//LqS9H1xI544PFn8c1331erU5L8U9jcQrfBEbTsJO5yJgxGTGBmtcAzBxkEiICHVstwuYXl8zx0ibtRVlS9RIiC/Dxcf8WFOOH4tviUih6vT5qKsvKAwVQDBHqfG0LnPvw91URs3cc1vvYbC9NfyVRmdhzvIu92Uif8''@;'; put 'put ''8dZf6SWyTg3MV96ajNfem6LMQjEdPTYCcgN0Conlnb++Bn6/D6vXbcBD417A9l17jv3Bw97NzLHQqVfEdpln5Rlr5mHQmIcGgUoRsBN5pMrJJuDrT1l+d5WXxQyqtlpKYxILf93lP8MIKpR4mBAk1dXGv/gapsycg2AwVOn5zIvqIKCb2LrX58bWtRY+eCZDmWQ1xxPMAX164HZetMvLy9VZ2VX0''@;'; put 'put ''VFzk41jBZyor+ZhNDwTycrN5sboQg/v1sdeqXKwWLlmGR5+eQNdb9WvNu6nb1riVha5nhtGsHbGhIdNYM/VYI2YUyUVArJahsiizxF1Y9pkXxfuEWFaPXEpPenU7GTdeezmyMyvqO2dkZGD5ytWUj3sWe/cfSG5nTWu1jkCnPmGcdq5YMCNauMilXORuVqGaJOUiFSkS4HiCOXLYANxw1aVaaWBK''@;'; put 'put ''1vDDT/4DXyxeWutfOnPC5CMglpDj27TEPZTTys/LtRO35DVxcn8yex6efmkiQnGWOc3IjuL4U5kA1NdCfn0XPy9M07jNkz97pkXVEHDzQis0cttaF5bMcnPvqbbVMjZWuSEUb8MJHXgXd7BepHxng6EQ7vvbU1ixai3VHfSI+Y+Nua7t23Zl9bQLI3BpUs1HykUe2BXFJJaLDCmiiuB4gjnqgnNw''@;'; put 'put ''Gf/KyqpvBXL6FykQDOLuh5/EyjXrnd5V079qIJDh97MQQD9ce9kFR2i1ygXL4sXrnQ8/wUtvvh93AoHEZtZrZOFkksy23SIUjBbpFZMEVI0pMYdoiIC4w70kl/sZdbJirgurFnkRKK2+xTIGiZcepNGXnIezBp0BNnnE99LP7/LY517GjLkLEDBu8hhkSu5bdIxgwCVheDWp5uPmYi0psjD5yQyU''@;'; put 'put ''Fashu+V4gvnLqy7GucMGaUUwi0tKcceDjxuRdSV/tv6702K1vImutt6VFAMQkhlmFuMbk6bUOObW66sQZz/xDAvN20fh8Zn4zP+eBfOKtgjwwuojsSwttrBmCTNp57ntijw1cRN6GSt9+QVn85oykHGXzDI/aL2MYZeZmYm3PpjGGPn3UVqmT1hWbHx1ad+oZQRDrwzDx99PHXw/dj3yAOuRj/Mz''@;'; put 'put ''HMQQzKSs5VtvuAqDTu+tTQymEI7tO3eTYI7Fnn37k4KRaSS9CDRv2hj33fK/aNKoYaXJaBKPKdaQf7/9Ad7+aHqNOyuSRs07RHBCHwtNGKfpYdC3sWjWGE7zQacjQOuij2s8QJ63aQWwfK4HOze7a6xrGSOXI88aRMslQ1h+QC4FDonDXPj1t3j4qRdNEQynr48q+lef5SKHjQ6wXKSYqas4WIG3''@;'; put 'put ''uWS59hmDSQvmvp3VU0lI97Acb8G8/5Yb0JPB2IGAHtIRQjA3bN6G2x8YY+6Q0736k3B+uWh16dwBd914LV0xR5fSknkPMdj8dVoyJ07+uNKLW3W748uwKGdkoSMzzpu2isJtiGZ1oTPHqYDAQYtlIGhh80oXvvvCg+3r44+zPHyoonV5+fnnYCQtl+JqrIxcyvHiPhcDwL2PPmk8TIcDqODj3PoW''@;'; put 'put ''hl8TQHZuRcyu8hyTBJMLFx8+68fOTYZgJrwk5aL88P/dhM4d21M2Iphwe05oQKxZK75fa6r4OGEyktAHv89LC3sv/Gb0ZVWuUZl7SfZ5mfGYk6bOSDiJQCyazWjR7HCqhaZto8jIFHc83UFGQzMJM2uaqG0ERCjdy78A9Sw3r3Tju/nuhImljCGLWeJXXTQSwwaeweQgfj8qsVzGxirXnHAkgj+N''@;'; put 'put ''eQZLl69K+Dsaa9fsax+B7FxaMK8pR34Djzb1yOXm6KMXvHZiW+0jGv8ZHW3B9FOQXMpEtmrRTJs65EIyFi1dbmcqxj9d5hNOQ0AuXucNPxNXXDiyWmEcMv+lFHKe/PEMWjKn0XWe+I2Tx2ehUXOgffewbdnMLmB8DnOBwhQY1sE15LQ5N/1JLgKSFS4ZsqX7o9hIV/iqhR7s3kKLZVhMNolt9evl''@;'; put 'put ''4xfUuuzbsxuJJSu6HINcxs7k43XnEbrIP/9ycdzqD7E2zD79CPgzoxhOF3lBE1owOe/KWzAJqdfrxscT3Nj4nTf9AFejB44mmLE65EeLbavG+Bx3iGhgzp63AA+Pf9FxfTMdih+B7KxMJg2cg/N/PKTaiWhCMoOhMGbOnW8nE+zdXxT/iSv5hJtZ53mFFlqdGEGbkyw0aFbxg2SsmpWAZV5KLwK0''@;'; put 'put ''xEhGuFSt2rvTwoZvPFi7xI19u6pX3rE6nZfY6F//z6U4sdPxjF2jFmI1yKW0K3GYT00QwfW5DM1K/AawOn01xyQfAY/HwohfhNDguCgJph732r4MDz55xYV1Sw3BTHjFyN3nY/f+Hg3q17O1BRNu0AENCMGc8unneOKfrzqgN6YLiSKQk52F0Zeeb8sUxSOlJSRTJIwWUYz9pTcnY93GLYl25YjP''@;'; put 'put ''+/xRNG1DsnlSGMd1iCJfrJo0CEWMC/0InMyTWkSA68/jcdNaCQTKLGynjuXapR5sWulBeYn0I3GLZWw0XTt3pFfhXHRq36bSxLvYcZXtJZP8H6+9g/emfIpyQzArg0iJ19zuKM66OojGbcguNXHmSD3yT19zYTUlulTYHG3BbNqoEI/ddyvESmRpInorQeQig/GP195VYX2YPlaBQG5OFq4fddGh''@;'; put 'put ''Cj5VHH7E2xLvJURz3aYteHniZHz51TdHvJ+MJzwFsvMYo9neQuvOEVYJiiKnHpOR+J8hm8lA2LRRFQLi/pYqJKJ4sG8H6N7zYMO3buzZVvOM8KOdUxLthvY/DRecPQSNGzaokWEiKyuLcdKT8eb7/eqQVQAACklJREFUH5u65EcDWoHX5bdvyNUBNBOCqYkF08vqVQunulgW1afADPCWsfvgnxJ6''@;'; put 'put ''Z24tmzWlBfMWO7Ovuu4NZ47kP73ysA75y29OYjbx1P+8aB4pi4AQTCkROYQXtZqWM5Wbjn0HiuzEn/c/mR1Xacl4gJM7+uwCSh21i6A5s9AbtSTZzHezri3jNY1lMx4ozbHHQoDrSZIRhFTSM40DuyPYtoakcrkbO9Z5bNkhublK9taEBokLzxmK/n16IjPDXyNyKX0SgvnqOx/aig9GCzPZs1S7''@;'; put 'put ''7Q0eFUCLjjwnq6A5lujEAYkQzK8/BUmmP45Ppe9QRxPMDm1b4S93/da28mhDMEkmnv/Xm3h3yoz0zbo5c9IQSAbBlM54aHkRQfZFS5fh37y4rV63MWl9rKwhqRKUW2DZ7qPmrHjRRMhmfTf7IVpr4krXxKdU2eDNa8lHgHzRS/e3i+tHLJVFrLazbb0bm1eIxJCLLnAhlMknlbGB/KjbSbjkJyNw''@;'; put 'put ''PK8ZDLZMyOMlLvIXX3+Xv9GfGgtmDGBF9wMvDaL1yew8Ex51IJhy07ZmCTDztQwlZsTRBPNkBmf/+fZfJ/Rj4bRZcPMKPu6Ff+HjWfOc1jXTnxogkCyCKacWq44QzW07dtmC7J/M/iIpWeZVDotkMzsnioYUb2/GSkGN20RQ0BDwM6Bc4kSNK71KBOveAeSKHlopXbzgybotL4ngwE4Xtq0jqfze''@;'; put 'put ''hV3U6Qva1X1TRyoF9IYNCmxtyyH9ToPUFw9TBizRzcRgJoqgcz7f/6IA2nVlMhlvmHUhmGtJMGcYgpn4Iut+8gm4//e/TMqPRuK9SVIL/DF+7JmXMGvewiQ1aJpJJwLJJJixcdjWTIqyL6Q1U0TZv1u9LvZWyvfiKfDz5rheEwvHtWGiEN3pDZqSgNZjcgbzhKK0bobpbhKXk9nqEALkieL2lnhK''@;'; put 'put ''qYITCkVQvBfYs9Vtk8rt61gjfIe4xLlIamHz0RPUp0dXnD9iMNq1aZmw1fLwLksW+fP/fgvvT5vNJB89CnwcPr669LjfzwJo300fginfvx0bLXzwdJYS0+hoC2afU7vgDzddX6WAtRJIH+xkhBfmR8b/A/MWLVWp26avR0EgFQRTTiVWIYnN3L13H6ZSLmXKjM+xa8++o/QidS+LKz0730LDFrCz''@;'; put 'put ''0huyvm+9hlFk5njZR8Y1GcKZOvDT2TJ5oodrMGahDAdIKA+4sG8bbOukuL33bmcZx1LpZGqtlD+EoWO71rb27I9Y4U10aEOh0A8PSei5EMzxL76GqbOMTFFCQDrgw6f/JIjje3F98oZdh1tiqUe+b3sU747LdAC6VXfB0QSzX+9Tcedvrq1x8kTVw6/9IyS27YG/P2eLrdf+2c0Zk41AqghmrJ9i''@;'; put 'put ''zSSTw9oNmyjOPhOfz/8qrSVG3R5qbTaIorA566G3tlDYzEJ+IQlnNqtliIWToZtyExUVC6cOv+ixidB5z+tvzN3NKEqGJEVRXkZCua/CKrlroxs7t7hwYAflhMTtHa1dQhmD/rgmDTGc1XjOPP1HqF9Qz/ZspSI23xDMGOLq7/UkmBYJprFgJrw6B/btidt/dU21BawTPmEtNBAMhvDnsc9iCcuQ''@;'; put 'put ''mU19BEQH80pW8Rl51qCUrlOpLiJlJpetXE2iOctOBgpwLaV7k8x0qfnboFnUzkovpKhxfkOL9X9JWvwkx5JwIUlDQjjlz2zpReAwy6SQSU4Ps7ojKD0AFO12UTqI8ZMkk/tpnSzex9Km1BlPRcZ3PCA0KqxPUtkLQ/r1QdPGDW3B9Iikp6doMwQzRcCmoVkdCeaebRYmPWEIZsLL6dyhA3DDVZdo''@;'; put 'put ''ZcGUyhD3/m0865GvSxgf00D6ERCCOepn59ouu3iE1mvS85jbXMSfly5fSbf5HCz6ZjlDSNJPNGPjEbd5JhOG6jVm0hDJZgNaOAv4OKcea6XnuCuqt5DViGtdEojEWmYsnTH0krinkdGOmZREHJJKWTuSrBUoJZlk4ajivR6SSdDl7aE2pcu2VgbL5fzpsU5WNnLRsTyjV3ebWIpknWzJSOKp7FyH''@;'; put 'put ''v2YI5uFoqP1YO4LJ73HRnijeGmNc5AmvzCt44b7kvBEs16VPoLUEjd/76HgmbqxPGB/TQPoRqE2CGRutkAWxaArR/Pa7VbYigdS3Lym103Zjhzlm76FbPTu/wrJZ0ISkk0lD+SxpmZ3PsnzZJJ5ZjOdkb+08T0M8qz9vBE3WAjkk5YEq9hJOYZFIBmmVDLA6TvEBNy2TJJI7hUhWWClLi2iZtH9S''@;'; put 'put ''BXXnbVLiUbxX/Xv3QDM+lq02iGUMCUMwY0iov9eNYNozwq/thLsNwUx4dV5+/tn4Of90IZhyMSgpLcVdf3mCpQE3J4yPaSD9CKSDYMZGHSOaYQawr1q7HjPmzMcXi5di526m9zp8q7B0WsirD+QyhrOAiUOSPJRNd3tWLvd5kuQkuoq0wNnedYnrFI97RXyn7Wy3/3H4QBPpnhBHfl4C+2WuxRIp''@;'; put 'put ''Gdzyori2g4EwiSRd3NSYLGECTvFexknSzX1gF5/TvV28HwiVixtcWnH25vV60LFtawxifGUvJu80LGxgy9PVJrGMIWQIZgwJ9fdaEkxOy4R7DMFMeHVeP+pCnDtsoDZZ5IZgJrwkHNdAOgnm4WCIRVPI19YdO/ElFQpmfbEQq9dvpls0dbFqh58/WY/dZJMZWYzrbGAhpwB2QlEuqw/JX1ZexXte''@;'; put 'put ''/rb6M4SAMsbTdv/y7CSf4nIXd7vtdudLkmh0iIMeepCsntawnQp+KIZGEsWKJzZpFPIozJH/S1ejtEJGKA4dDFh2HKSQyDJaHktJJEuYfFMkfxQzL9vvRlkp3d+2/KM0qtZWkJ+HHl07YwCr73Tu0A45Odl2Vng6SwMbgqnWGjpWb3UkmPLdePm+7GMN2zHvOTqL/LZfXo1+dJMkW4YiXegbgpku''@;'; put 'put ''5FN3XqcQzNgIRdpI6puXlJRiBfUzP/tyERZ/s0IJq2ZsDEfbe9wWvJkuZqxbdpxnZh5Y6lIsnizvl2sxxlNc7i5kZFjw8zi3Nwo3S/b6xBIqBE6EPIWQygliXIxsTnhpbLMpaex5bB978/B97PPc07Z46B2bOMozeUnalsdCfvmogjQKcZQ/un2ZQBMKuEgiKVROklhezOxtksgyurbLikgoiyus''@;'; put 'put ''k4EyN49hW9Z/ziPNqrpl+P2suNMSfXt2Q8+uJ+I4usE9nBv5nU9FVni8OBmCGS9izj1eN4JpyxTtoEzR340FM+FVd9sNJJh9DMFMGEjTQMoQcBrBjA005j6XC/b2nbuxdMUqzF3wFZYzuexAEZmLphsdwjap9Aqx9FnwMdnSz8fezCh8/E32ZXDPMr4iJu/xR1k5ifGs3FeQUVZSYla820twyAxt''@;'; put 'put ''PkqSam+yO8jvLBI9SyyGfC4Z8lZIpH1IGENCHGlN5D4UdiMc4D7oIpEkiWR4bDggRNFCJFiRnS1xkHK8fPZQ4/JQw02sza2aH4ceXTrbLvC2rVsgmzW/xcKeDjf4sSA2BPNY6Kj1npYEc7s6MkX/DwAA///r8VITAABAAElEQVTsXQd8FNX2/rZl0xMSSkLovXcBBUSKgNg7dkXF8tRn74o+n/7V''@;'; put 'put ''J4oFsIMdO4KCFEFA6b33HkpIAklI22z5nzNhNcQkpGyZuXvmR5jd2Zk7937nzsw3p5q6DrrUA50uj919C/r17o6ioiKd9rBq3TKZTMjNy8NTr4zDnv2pVTtY9tYlAlGREbjhigtxybCByM/P12UfLRYLbDYbHHQdHTpyFBu2bMfS1euxbdc+ZGXn6LLPeuqUx/P3LZKvYVkqh4DNakXD+kno2rEN''@;'; put 'put ''undqh6YNUxAXGwO32w2n04mSuFauxcDsZbfbMX7SZMxeuASFhY7AnFTO4hcEzrrUgVY9TPA4Xfj7KvbLqQLSqMlswvEjbvz0TkRAzlfTk5iEYNYUwsofLwSz8lgZZU8jEMySWFrpoc9/TDaPpKVj07adWLl+M7Zs3430Y8d1+9AvOQb5rF8EIiPC0aRhfXTt0Aad27VGo5QkxMbEaPOKSSWTS70v''@;'; put 'put ''YWFheOvDz/H74hUodKih3NA75v7q39lXFaJZJyKYLrc6BPMwEcxxQjBrPGdEg1ljCKUBPyNgNIJZEg6vZtPlciE94xh2k1Z93aZt2Eikc//Bw8gvKCy5u3wWBP6BgNlsRp3EWmjVtDE6t2+NNi2aoH69OoiIiADPK/4zAqksOTDW9o/94DMsWLJKexEr+Zt8NhYCqhFMs8WEQzs9mDkx3BCCEA1m''@;'; put 'put ''AMUkGswAgh2gUxmZYJaEiIkCP1h5yc8vQOrhNGzfvZfM6TvIlL4XR9IzyKzpKnmIfA5RBGKjozTTd8e2LdG2RVM0bZSChFrx4BcWJpRGd2kqJpifE8FcKQTT4HN84PWFaNiaBuH2KKHBtFhN2L0O+P1ruyEko2uC+fg9I9G3ZzfD37C8M0EIphcJddaqEMzSEuGHLBMG1j5l5+QQ4TyKrTt3Y8uO''@;'; put 'put ''Pdi5dz+Oph9DEZk8ZVEfAZ7jKUl10apZY7Rv3QLNGqeQ1jIBEeHhf/lTGk1LWZHUhGBWhI5xfmMf33NvdCClFfVZIYK5YzWw8DshmDWeiQ/dcQMG9OmlHMF8+tVx2L1PgnxqPEF00ICqBLMktKzdZLLp1VDlnMjFwSNp2LF7P5FOIpx79iMtI1NM6iVBM/Bn1lAmk5mbCWXblqyhbKCZwSPJ7M0v''@;'; put 'put ''yayhZE2lqosQTDUkazYRwbzFgaSmFN5Drr8qBPlYw8xYPRdYPTvMEELStQbzRorOHXHJeRTJp44vWKHDgefGTNA0QYaYIdLJChEIBYJZGoCShJO1BCeIcGZQgNCeAweJbB7Ajj37cODgERyjCHWViUhpXIz4nSO9E2vFUTBOMmkmG6Bl00ZaYE5iQi1NQ8lj4uAc/guVRQimGpI2W9wYdqsTtRu4''@;'; put 'put ''QVxTCYJps1uwdAawYX6xO5PeJaVrgnndZcNx3WUXqEUwKe3Fc68LwdT7hVHZ/oUiwSyNDWu1WLvJ0em8sIaL0x8dPpqB/amHsWvfAeyjNWs9s7JPiGm9NIAB+m61WlArNlbTTnKkd/MmDdGI0ghxkA6nD2L58QsDk8lQfjEQghmgCenn01htHgy/vRDxSSYimGr4YIaFWzB3sgm7Vhffa/0MYY2b''@;'; put 'put ''1zXBHHHxMNx45UVKEUwOlPjvm+9jLUXrymJ8BIRgli3DklpO3oOtEGxaT888rkWoc5T6vtRDREIzadsx5FFgkV7zIpY9Qv1uZRyjoyJRKy4WKcl10TC5Hho1SKZ1EmonxFPaoGhwKh5emEjyn0o+lDWVjBDMmiKoj+PDI9wYQgSzVh2zMj6YNjKRz/nCjL0bhGDWeJYN6tsTj9w9UrcJrKszQCfl''@;'; put 'put ''43pl3EdYsXZTdQ6XY3SGgBDMyguEtZys7WRNGa9ZU8YR68ezs8nEnqVFrh+k6PVDaRk4cOgwjmXlaMQzlLVpFaHLGsmoyEjEk/axXp0ELT0Qpwhi/8m6tRO07fw7486LkMmK0Pz7N56f/5swCYtXrBVt+9+wGO5TZCyZyG8rRHS8WRkNJkeRz/7EigPbiq9pvQtF1xrMc87qgcfvuU0pgumBCWPe''@;'; put 'put ''nYQ/l6/R+9yQ/lUCASGYlQCpgl2YaHq1nbzmPyaeeVTxKic3D8eJZLJ/J6dJOkLazqOUrzPzeJZmgj+Rl48CcjlRlYCaCRu7PQycvDyOkpXXio9BnYQEjUzWq5NI60QkkJYymoJyOKLba+JmDaaXTIpWuILJV85PrMEc894n+HPZGklTVA5GRtgcm1hMMMMjyUROHVYhyMdMlXx+/ciKw3uEYNZ4''@;'; put 'put ''Dp7ZvTOevn8UHBQYo8piogfo2A+oSsSi5aoMKaTHIQTTP+Jnoukln17iyWdi4sTm9gJKAp9P66ycE5pfJ6+PZ2VrWk/2/8wmczyb5HM1Ekr7ExFl4soWhGCag1mbGGazajlHw4k88vyJJi0jm7TjYqKIRMaRaTuGtI+x2nf2jeR9IohkhlMJQ68WmIkjj4fXPB4hkr6bh2Ii9x2WwWwpIcmNoSML''@;'; put 'put ''YQsneqkCu2SWTOmWfnk/DBkHhWDWeG717NIBzz54pzJpihgQC5lf3vn4S8yav7jG+EgDwUdACGZwZFCagHrJqJdwMeniYCPO2lBU5NQIJn9mX08Hlf/LLyjQCCoTVS4HWEBklbfzvk4isbzmsAD2mebPbs8/SxxyBLaNyKJ2bpOZ/Bpt8G5j8sg1re20LSLcjgj+TNtY08i/8TZtX/rdTv6QrH3k''@;'; put 'put ''MXmXkuPwEkghkV50/LsWgulffAPVer0mLgy+wUnXlhoBPmTQoPuRBz+PD0NWuhDMGs+jTu1a4b+P3qOUCYwJ5qTJU/DDjN9qjI80EHwEhGAGXwYV9cBL2pgEekko7+/dXvJzSQLn/exdl3cObpMX77rkZz7We7xXa1p6XXIfrSH5L+gICMEMugh80oGGrV045xonOB+mEgpMMo8X5rkwbUI4co//''@;'; put 'put ''/TLqE7D81IiufTA50e8rT92v3by9N2o/4RCwZi0WKyb/NB1f/kjJrGQxPAJMMDlf68XDBirlK2x4wcgABIFqIlBMMKUWeTXh081hLbq60OcyKgjALiS66VX1O8L+l7nZRDDHhaMgTwhm9ZE8eWRjSq3x+uiHNb8jVQgmm8J+mjkPH375Q43xkQaCjwD7zo0ccQnOG9iP/AILgt8h6YEgIAjUCAFO''@;'; put 'put ''4fQ2uTHN+3OZ5j5Ro8bk4KAh0LZPEXqdR+6X5PKiBMG0mJCV4cbP4+wocgjBrPHESq5XG2Ofe0TzZVKFYLKJfM6CxXjroy9rjI80EHwEoqMicOcNV2FQv95CMIMvDumBIFBjBNh3dsInX2MW3acLKThMFmMi0PXcInTpT0FwFNinAsHkFEUZB4Fp5IPp8RS75uhdMro2kXNSYNZgciSl13dJ74Ce''@;'; put 'put ''rn9MMBctW42Xx318ul3ldwMgwATzjuuvxOCzzxSCaQB5SRcFgdMhwATzwy++xy+/LdSCxE63v/yuTwTOutiBlj05MkYNDabVZkbqTjd+/dB+is+3PtEv7pWuCSZXnHjjuYeplFmCMoE+HFywZsMWKhf57l8BAHqeINK3ihEQglkxPvKrIGA0BMIp0n/S11M0VyZObyWLMRE4Z0QhGndkgqmGBpPr''@;'; put 'put ''kO9a78K8L8INIxBdE0zO+zb2+Ueo3Fk9LeebYVCtoKNMMLfv2ovHX3pTS4dSwa7ykwEQEBO5AYQkXRQEqoBAREQEvvjhZ3z/yxwtrVUVDpVddYKAiYziw251oG4TMo5ThjEVTORch3zTYg8WTSku86oTqCvshq4JJnsZjP3Po2jepBHloiuqcCBG+ZHTmaRSObzHXxpLiaDzjNJt6Wc5CMRSFZV7''@;'; put 'put ''Rl6Dvj27aQnAy9lNNgsCgoBBEGCCOXnKdHwzbZYQTIPIrHQ3w+xEMG8vQHxddcpEMsFcTdkNV86ylR6ubr/rmmAyai89fi86t2+jTDUfJphHMzLx1CvvIC09U7cTQzpWOQRioiM1H0wJ8qkcXrKXIKB3BESDqXcJnb5/UXFEMKkOeVQc5b/lfLSnP0T3ezDBXDwV2PinEEyfCeup+25D317dlQqg''@;'; put 'put ''4GoiTDD37E/1GU7SUHAQ4DRFt15zKYYN6KvUHA0OmnJWQSD4CLAP5kTywZxK6eTEBzP48qhOD5QrE0kgMMGc+6UJu9ZaqwNJUI7RvQbz37ddp+UYzM/PDwpA/jgpl5574c33sX7zdn80L20GEIFIqhF93aXDcfkFQyTRegBxl1MJAv5CwJumaOb8RVr5UH+dR9r1HwIprVwYQFV8LGY1tJeMFKcp''@;'; put 'put ''mjXJgtTtQjB9NnNuufpiXH3xeWo9vKlu8evvfYKFS1f5DCdpKDgIcF3pi4acg1tGXCoazOCIQM4qCPgUAYvFglfHT8SSleskENOnyAausZbdXDiLq/gokgMTHJDipjrk74ch86Ax6pCztHWvwbxs+CCMojyDKmkwORcm51mbOut3loEsBkbARrLs07MrHr7zJmUC0QwsDum6IFAjBDjLR0FhIZ4f''@;'; put 'put ''8y627txD/IRCkGUxHAJdBjjQZRDFkitSxcdEZSId+S5MHW+cOuQ8aXRPMAf26YlH/zVSKYLJ5SK/+3k2PvmWPHZlMTQCFnogtWnZFM8+cAfsVGJOlYpThhaKdF4QqCYCfG9OPXxEI5iH0tKr2YocFmwE+lxciBY9qZyiIknWzVQmMueYm+qQ2+EoMEaZSJ4DuieYZ3Ruj9EP3aWUdog1mPMXLceY''@;'; put 'put ''9z4N9nUo568hAkwo69VJxHM0RxulJCs1T2sIjRwuCBgOAfa/XLpqHd744HNk55wwXP+lw4QA3ZMH3+hASiv6TGZlFSLI2f/yaKobv5AG06PZy40had0TzJZNG+HVpx/QSiOpoh2Saj7GuDgq28sYiiT/1y3XoP+ZPcQPs7KgyX6CgA4R4Ajyz7//GT9Mn4P8gkId9lC6dDoEbGFunHebA/FJ6qQo''@;'; put 'put ''soaZsW+TG3M+M04VH5aT7glmct3aeIOq+UTQha9KPXLOhbn3wEGtmo/cxE53u9D/72FhNgzpfxbuvulqSbauf3FJDwWBMhHg+zL7XL7wxntYv2WHMuWJyxyswhuj492UZL0QkdFEMGmcKmgwi6v4uKmKj91QktM9wVSxHrkkWzfUNXLazrI8mzSoj/88cjfiYmPkwXRaxGQHQUB/CISRD/XWnbvx''@;'; put 'put ''0lsfIj3zuP46KD2qFAJ1G7lw7o1OWG1qmMd50Ewwl88A1v5unCTr3G/dE0x2un599ENo1rihUv5tHKk4+rUJ2EZ1yWUxPgJsJueSkWf3FjO58aUpIwhFBMQ8robUm3Z2ot/lbqrg41ZCe8lSYYI5bzKwc7UQTJ/PUtYM9ejcQSnzI/keY8y7n2DRijU+x0saDDwCVsqd17t7Jzxy181aJLkq/sKB''@;'; put 'put ''R1LOKAgEHgHOfclBPc+9/i527tkv2SACLwKfnVG1FEUMDEeRz/zYgkO7jJNknfutew0md/KBUddj6Dl9lUpVxJHkH335PX6a+TsPURYFEIgn8/hjlFKrc/vWSr0MKSAaGYIgUCECXH/859nztRKRuXnqVI2rcNCK/tj3CkpR1NUMjyIpisgDC04nJVkfH4asdOMkWefpZQiCeeMVF+Lay85XjmBO''@;'; put 'put ''/20B3v30W0Uv89AbFidd70tJ1x8YdYMWkCZazNCbAzJi4yHAWT2YVD5P2svt5LLkpjQ3shgTAbPJg3NHOpDUhGRIOfJVkKSZkqznZrsx9R07CvONkwOTZ5AhCOawAX1w/+03KEUw+aa2ct0m/IciFmVRBwEO8vn3rdfizB5dJGWROmKVkSiMAGsvv5n6Kyb/9Cvy8gsUHqn6Q4uMdmMopSiKSVAn''@;'; put 'put ''RRHnwEw74MH0CXYizBwXb5zFEARTxWTrTDD37E+VVEXGuVYq1VNvZZ8n770NMdFRElFeKdRkJ0EgOAhw5Piefal46e0PqYJPWnA6IWf1GQKJ9V0YeksRrGE+azLoDdnsFuxc68bvXxkrRREDZwiC2bRRCl575kGwI7ZKZses7Bw88fLbOHTkaNAnsXTAdwiE28Nw0ZBzcPPVl4gvpu9glZYEAZ8i''@;'; put 'put ''wC/5bA7nYMulq9ajyOn0afvSWOARaNqJIsivUC+CfM1cN1bMFILplxmVEB+Lsc8/ivi4WKU0Qi6XWzORr9u8zS+4SaPBQyAuJhr3UHWffr27K+XaETxE5cyCgG8R4LREP/wyG1/8OF1M476FNmitdR1UhM4DyPfS5VLC/5KB5BRFC74zYdtyY0WQc98NocG0Wi2UC/Nh5XJhmkkj++6n32DG3D9Y''@;'; put 'put ''FrIohAAnX29Yvx4evfsWbd4WUt5TWQQBQUAfCLDf5bLV6zGWao5nHs/SR6ekFzVGoP8IB5p0oGZIeaNCgA8DYuEURZOsOLjDWBHk3HdDEEzu6OgH70Cvbp2VMjlyEvmfZs7Fh1/+yEOURTEE2B+zXavmeOjOG1EnMQEOh0OxEcpwBAHjIWC327F73wG8Om4i9h08rJTblfGk4bseW60erURkQjIR''@;'; put 'put ''G2KXKhBMTlFU5OAURXZkZxorgpwlaxiCeecNV+KS8wYpZW5kH6BV6zdr6TF8d5lJS3pCgLXv3Tq0xX0UWc4uHkVFRXrqnvRFEAgpBJhcss/7axMmaVXUuPa4LGogEJdIAT63FSE8kogNDUkFgskJ1rPTPZhGBLPIYawIcp5VhiGYHDRx980jlCKYbEZNPXQEj744VsvDpsZlLqMojQDnx+zZtYPm''@;'; put 'put ''k8mR5UIySyMk3wUB/yPA5DItPUMzi6/fskMpf37/o6f/MzRs7UL/a12wUAJMFcglI24NMyN1u5uq+ITrXwBl9NAwBJMf0KMfvEs5MyMn+H361XcoZdHBMsQjm1RBgEkml5K8+6arEU11y50SsaqKaGUcBkCAyeVBSkP01kdfYuO2nUIuDSCzqnax09lF6DZEvQCfjYs8WPyTMfMuGYZgNk5Jxmuj''@;'; put 'put ''HwI/qFVKVQSTmdJkTMIfy1ZX9XqS/Q2GAJvLu3dsh/tuuw5cVlJ8Mg0mQOmuIRHgaPFde/fjzQ+/0OqMi1nckGI8bafPvqoQzTqZKIJcHQ0mR5D/SSEam5fYTjt+Pe5gGIIZEx2ppSriYAkXpSBQZeHcnt9Mm4nPv/9FlSHJOCpAgOV9Vo/OuIVyZNarkygkswKs5CdBoCYIsAsSay5Xk5/7BMrW''@;'; put 'put ''cYDckZRSTtQEHMWOtdrcOI8q+NRSKMCHRcRVfGZOtFAEufFSFHH/DUMw+Wbx8pP/Roc2LZV6KHOqomWr1uHFtz5kecgSAgiwJrND6xa49ZpL0bxJI20+y4MvBAQvQwwYAvwix0GUs+Yvwmff/aylIuJniCxqIlCrrhtDbimEPYpkrIgDJk9Xx8kI8hwDRpDzTDMMweTO3k+mxaED+ipV45lvevxm''@;'; put 'put ''/ZgE+rCIQ2bhh1+TBvVx/eXnU/qtTppPplsiWkNG/jJQ/yFgs9lQSCnBfp49H19NmYGCQkkP5j+09dFyk44unH2li9ITqWMe5/yXmUc9+GWcnZ4Pxnw5MhTBvHz4YNx+/RVKRZLz5ZlfUIhnKNBn594D+rhapRcBQyAhPg6XDhuA88/tjzB6MEqEecCglxMpiAD7W3Iwz+SfZuDP5WukQo+CMi5r''@;'; put 'put ''SN2HOdCpH+B2qkMwuQb57vUuzP3CmBHkLCdDEcwzOrfHcw/frZSJXBMCabPe+fhLzFm4tKxrR7YpjkBkRDj5ZXbBiIuHoX5SXTGZKy5vGZ7vEfCaxNnf8vMffsGOPfuV8tX3PWLqtMi6vcE3FyKlOVnH3R5VLORaichVczxYNduYEeQ8wwxFMBsk18WYZx/SHLdV8lnjij5sznnv8+/UuepDcSRU''@;'; put 'put ''PiIyGrBHeHAsrWpVF7jqT7MmDXHVhUPQm0zmvEgqo1CcRDLmqiLAgTw5J3K1e+jPcxbgWFZ2VZtATIIbucdNcLuNaYqs8oAVOiAixo3htxciKt5MJnJ1CCZrMOd+YSItpjEDfHiKGYpghtvDMPY/jyIlqZ5SD1/2x9uwZTue/d94KqEqlSWMeu8LI2LZY0gREhsAcz+zIje7aiSTx82J2Af17YlL''@;'; put 'put ''hg2kKPPaWmlUlV6mjCpb6bf+EGCtJf9t3LpTM4nzPdRR5KxyR9v3caLbQDc2Lzdh7TwrigqFZFYZxCAeUL+FCwOvddJcUIdccoCP00n+l+/acbyKyoogiuIfpzYUweTeP/fQXVQVpaNSNck50CfzeBae+L+3cORoxj+EJBv0j4DZ7EG9JnSju8EJm82CPRtclL+MyntV42FlpYdmk4b1cRn5HPfu''@;'; put 'put ''1lHT2EvOTP3PAelhYBDg+yVrLdMzMjF97h+YMXchjmefqNbJG7Zxos9lbkREe5B/woM5E8OQfpie7h4hmdUCNAgHdepPCdbPVSvB+t8lIsOoRGTVFRVBEEOZpzQcwbzl6otx9cXnKRfo4yLfkVfHf4xlqzeUKSjZqG8EwiLc6HVBEVp1N8Pp4DytFmxe5sGK6bZqm93YN5P9ji85byBaNWtC7biV''@;'; put 'put ''0tzrW6LSOz0iEBZGD1yqgrVk5VpM+XUe+Vruo2uienmR4+q4cc7VDsTVI1MeGY6sZJJcORvY8IcVzmq8GOoRL9X7xNadQdc50LAdjdSljgaTS0Tu2+TGnM+MG+DDc89wBLP/mT3w+D23KpWqiAXBpp5vplLCdXJQl8VgCJDvZWKyB+fe5IA9kipJ0MsCmzjcHnJ9WACsmmOj79XTiPANNCE+FoP7''@;'; put 'put ''9cYwStHFQUAcaa5SsQGDSVu6GwQEOPUQL9t27sGUmfOwYu3GGkWIs580V35JbmEq9tuj3IlmqxkZB9zk9xZWLfeWIMAS8qeMiPJg6KgCxNZSy/+SK/gYPcCHJ6fhCGbTRil47ZkHNUKmkm8a+2FyBOTzb7wn1SYMdtu02jxo09uFnsM9J7WXxQNgTulykVznmLDxz5qV+mKCmlS3Ns4lojmQfDTZ''@;'; put 'put ''P1OIpsEminS3yghwACS/fO/Zn4qZvy/C74uWIyuneuZw78nZV6/XRQ607EYXKOdN9Cbm1r56MO/LMKTuNFPJweq9FHrPI2v/I5DczIVB16vlf8mo2UiDOecLM/ZuMG6AD4/DcAQzItyOt//7OOrWTlRKi8MEIi09A0++/DbSM4+zbGQxCAL2SA/6XlGExm1NpxJM7j+5z7C5bdVvZDJfXPObhZnm''@;'; put 'put ''SXK9OhQI1EsjmnwdsOlc8mcaZLJINyuFAGss+aV7/8HD+G3hEsz7cznSjx2v8cs32RfQdYgLHfuQTZzs4n+Ry5O94sjdNfM8WPc75aQVM3mlZBXMnTqdTf6XQ9Tyv2TFRFGRGz9PsCM73RJMeGt8bsMRTB7x8w/fhTO6qBXow+MSP0xGwWiLh1KckJnmZgeiEujxRX5AJRdNB8Ik00Ekc45vSCa3''@;'; put 'put ''z0SzLtUyH3DWGejfuzsaplARXlqYaKqk2dcGJf+FBAL8ks3EkufvvtRDRCqX4ffFK7QXbp/MaWq30wAnugwgbmly/YNcMsgWmxkHd3ow/ysbCvKMG1wRChOG58TgG4rQoDXdcxXKf8n1xzMPE8EcH05KNGNr0Q1JMG+68kJcc+n5ygX6sDno22mz8Ol300Lh/qDEGE0UPZ7cnMw0lCbDxC+bp/JL''@;'; put 'put ''bYx/k0yQZsSKdQss1fbJLAu0WnGx6EWZFdg/uVWzRoiKitKStYufZlloyTa9IcCaSiaW/HK0ffc+zP1jKRZTEM+xrBzfdZXISEfSdnUeaILFSuSynGxwJirPl5flxsyJrD3iK9fYD3jfAai/liJjPTjvtgIl819uX+XBgm+Mm2DdO1sMSTDP6tEZT99/h1KpilggfKNdv3k7Rr8m+TC9E1Tva4vV''@;'; put 'put ''jRZdPTjrUhdcZNYob/GSTDf7ZM4in8wlpKkpf/fymqlwu53yxLZp3gRnk0azW8e2mp8mv+Vzwnapc14hdPJjgBFgbaXXvzIrOwfrNm/TzOBrN22tUfBOWcMwUxBex/5OdDqH7rEWijin666M98DiQ+lCdVMqzTmfW5G2x1LtDBBl9UO2+RaBhq1d6H+ti/J1qFMekhHiAJ9FP5mwaVHNXap8i3jV''@;'; put 'put ''WzMkwUyhSNoxox9COOVC84nppOq4+e2IbHJgf+Llt6ie7lG/nUMa9h0C1jA3OvR1o/sQD/lsnT5diuZfU2imFEaUDmU+JXX2Q44zflFJIK1m907t0Lt7J7Rp0RRxsTHatSJk03eyl5aqjgAH7Hi1lexfuWTlOixasQZ7ySRe3XRDFfXCaiWfy3OL0LY36SLNREQq8VLHOQgXfGulXLZmuA1uoqwI''@;'; put 'put ''G6P/1p2KWnTq71Gq/jgrzPkZMeNDG9L2Gtv/kueXIQmm1WrB66MfRrPGDdULbqDZNfaDzzB/8UqjX/8h0X+b3Y0ug1zodDb5P1aCYDIoZrNJ863ZtdaDNXMpJUqWpt/0C16sJapfrzbl0+ygEc4WTRsimkzootn0C9zSaBkIMKnkechz7iglR2dt5eIVa7GeKu+cyM0v4wjfbLJTbtqe5zvRvAsH''@;'; put 'put ''i/8zoKe8s7Af5uKpZmxfaSGrhP+uzfLOL9tPjwAXthhyi4OKW7D/ZQUa6dM3pas9+NnALho/jbejUAEfYEMSTJ4RD4y6HkP691EvHybdiGfO+wPjJn2tq4kvnSkbAVs4lYccWoR2Z5oqTTC5JQ7S8dDfIQooWDXbivRU/7+t2mxWNEiuh64d2qAHJXBv3rgBYmNiNPM5+2uKz2bZMpatVUOAzd9e''@;'; put 'put ''v0p2zcik6O+tO/dqfpVMKtMzjlFMRrlG6qqdrJy942q7Nc1lk/acl7by5JKbY4K55Gczti0XglkOvEHfXKuuG0NHFiKM8g6TB0T5Lg9B72nVOqAlWN9CFaU+sVftQJ3ubViCef7gs3HvyGuVC/ThmzPnfHvqlXeQm+e/t3udzkfDdUur4HO+C616VF6D6R0kiVozhxyn6qBrfrNhz3qOWg2MxoSt''@;'; put 'put ''AClJ9dClfSt069AWzZs0REKteC34iIMtmBio5n7ixV3WvkeACaVXU8llTdMzj2Hz9t1YRbl9N2zdoZFKF82pQCz1W7rQdZATtVPoWiqZ57KSJxeCWUmggrhb6zOc6H0xMUt6Mfbvq0pgB8n+lytm0vNgbs3yJge21+WfzbAEs2XTRnj16Qe0B6JqD0IHPeD/QwnXN27dWb7k5BddIFBMMJ1EMKum''@;'; put 'put ''wfR2numkyWJGYQGwdRkF//xhJdNIYEimtw9c+7x2YjzatWxGwUHtNJ/NOom1wGX5mGiK36YXKVl7EeAXYS+h5G3ZFKiTejgNm7bv0kzg23fto/rgOQF9SbGRP3TrXi6yJrgRGUfc0lm90oFCML1S1u/6bCrx2awjydhFL8L67WaVe8YpimZNsiJ1u/8tWlXuXDUOMCzB5DrNY59/hKqb1FHOtGe1''@;'; put 'put ''2vDlDz/jq59+rYZI5ZBAIlBTguntK/vesH7n8A56e51HEaz7gnODYeIQExWJFvQC16ltK7Rv3RwN69fTTOn8G5NNNqWr9lLnlYOsy0agNKHMy8ujwhCZVAt8PzZs2YEtO3cj9VAanDQ3grEkJLvQ+RwXGrbhSHEK/CiVj7YqfRKCWRW0Ar+vVh7y9kLEUt5hE7laqEIwNf/LEx5MfYdysOYG5/7v''@;'; put 'put ''a2kalmAyEE/eexv6UUqWggJS/yi0sGZg3aZtkq7IADL1FcHkoWomcyKaudkeqvpjIR8wKxwFgdVmloacTenJ9BLHkegdiGy2ataYqmglIDIyUttVzOmlEVPju9fkzfciXphQHqUKYzuJUG7ZsZt8KvfgwKEjPk8pVFX0wuweNOvGWksX4hIo3oMTbteQcQjBrKoUArt/wzYunHONi4qkqaW9ZP/L''@;'; put 'put ''A9s9mPUR5b/kh4ECi6EJ5mXDB2HU9Vcq54fJ84r9L5+kdEX7Ug8rMM3UHYIvCSajVGwyJ20mqTMP7TRpSdmP7NbP2yxbDlij2apZE3Ro0wKNqYIQm9O9hNNrTpe8m8aZ86ydZELJkd78mWV3Ijf3Lw0lm7u37dqDg0eOBp1QlkQ1qYkL7fu6kNKyWGvJVbRqyC215oVglkRZf597nU9pp84iWTvV''@;'; put 'put ''Ipia/+Vsyiwyx/gJ1r2zxtAEsy1pVV5+6n7NXKeayc5MmoP3P/8Ov8xZ4JWVrHWIgK8JpneI/AKrmUxygZ2rKG/mUgtyj+uvdF0x4UzSgoT4emzSsD7qJiYgOjpKIy18XXpJp2rXqFdWRlp7yaRXQ8l9ZwtQ5vEsHEpLx+59qUQm92prNoGzP7jelthE8rXs7USLTh6Ex3Bi9JprLUuOUQhmSTT0''@;'; put 'put ''9Zn9bIfdVoRaSR6loscZZfa//HWiBYd2GD/BunfWGJpgRoTb8eZ/HlXSD5NNU0tXrcOLb33olZWsdYiARjAvoCjy7lWPIq/McLR0RsQrjx/xYAuZzXett1A6JP0RTe9YwsJsqFc7USOazRo1IOLZgPJw1kV8XAyiTprVhXR60fLvmkkkE0rWTPJnxj0/Px9czCGNUgVxvW/2odx74KBW2CEnN0/T''@;'; put 'put ''Xvq3V9VvPTLGg+bdnGjZ3YXYRHoD46I8NbWHl9EdIZhlgKKTTay1HnorJ74k4ZO62hcaaz0MjZUJuTluTHvHjgIF8l96MTU0weRBPH7PSKrBfIZyfpg8No7CfOKlN3H4KOWxkUWXCIRFUB7MYWSy6VW9KPLKDIrN5mYreRyRf9nh3cCmJfSWu81KmsHKHB3cfZjgcNBQvTqJaNygvkY8G6UkIalO''@;'; put 'put ''bdSKj0VEePhfSbg5eIjNs/wn2s7KyY3x9f55Tdz8nbXGOSdywWUYj6RnYP/BIxqh5PVh0lTydn+Qs8r1ump7Rca40aQjlWQlX8uEJL4aSGPpI3N4WT0RglkWKvrYxgE+nSkFVQt6ybCRxk/TXuujazXqBftf7t/swexP1ch/6QXD8ATz/EH9cO+t1ynph2kircP4iZMxa8Fir7xkrTMEbOFUJnIw''@;'; put 'put ''+4L5R4NZcrjEGyg1jJmqVwEHd5JGc4mV/DSZePJD1zgLEyA2rdemvJv1k+qgQf0kNKDyr/Xr1aFcnHGIJfM6+3R6A0zKIp6hREC9BJLXjIlXM8kYFBYWIr+gEMezsin35HHNzM3BN4fSjpJWMo1M39na78aZHX/3NCrOgyYdqBJPNzcS6nHcAxMK//vdCcH8WwZ6/dSwjZPK8zqRkMzJ8DmrhV57''@;'; put 'put ''Wrl+sf/lkp+pfPBCNfJfekdteILJ1Ug4HybfeFV76FjItPXnslV4ZdxEr7xkrTMEmGB2G8z1yCtXi9wX3WeiyfWSnQ4mmiZsW2GmtfGrjjBxioqMQEJ8HFUcqktazkQkE+nkqHXeVkw8I2Cn/Jxcz9q7lNR68j2Av3sXvd4TmCx5Fx43L7z2/nl/Y3LtJZEnKJL7GBHGjGNZWgAOm7bTqPRiJn1n''@;'; put 'put ''a0dBIU0IBRau0tK0swuNO7gQz6bwABFLL3RCML1I6HsdGU3azMFFaNHVQ1aQk764+u5y2b3jKU5a+V8+CEP6fv0EdJbd2aptNTzBDKPyd2889ygaNUjWzEJVG76+9+aH0DHSTIiZXL9yCgbB9KLBHMVCpvMiCnJI28vBQFbs32pSooatd4zetY3SJcWQZjMuNgbx9JdIms7aCbU04plApva4mGiq''@;'; put 'put ''sR6paUbt9jCNhPJLJ5uNy3r59JJQ75rPw2S0NCEt/d3bn5IEkbfxd++2kp+95LHkcUwavflEC6nqDRPD/PwCMIHMzsklbWSOdt0zkeTgG/7LIr/JE+QjydrK8vrkPYcR11abB3WbuNG8E0eFU6L0WNLMk1YqGJHCQjCNNYMatXORNpMCf+oZU5vJyoKsdPK/HGeHs0i//vXVmRWGJ5g86H/dfDUu''@;'; put 'put ''HDJASTM5R5OPm/gVZs0XM3l1Jri/jwkmwfSOzUs02Ucz85AHezZasWeDGdnpat2svOMta82kjgOMIux2RETYERURoRFSJp2sFY0mk3tUZLj2OZyCA8PD7LDbbRoRDSNtKNdp54pGxSZoYu6kU7CSO4LJVBwcU/qcHipB6C196KJqIpxgnMkqE8aiIqdGGjkC2+Eo0ohhHkVq5xGJ5PRjubn5Gplk''@;'; put 'put ''H8lcCrrJzy/U9udjVSSPpbHzfuexxtYGGrV2olEHN+o0AKw2E1xkBueqA8GyegrB9ErIOOsICgDrOqgIzbu66aXSWL6ZbB7fstSDP35QJz2Rd+YoQTD79eqGJyjpOpuSVFtYA7J8zQYtmjyUHj5GkaMeCKYXK6ZFHAxkMnm0ZO0HdwB7N9hweI856AnbvX3U41ozS5/UQHJiea8Gkgkn/8YE3ruw''@;'; put 'put ''rxd/dxKpZELJf05nMbnk65MDZ+Q69aJV9poDNeo2pcCd9i4kkdYyKo4NhEQKivzvX1l2j07dKgTzVDyM9I3dKrqR2TwhyQJnoTHqlNvsFvw+2YSda9RJT+SdM0oQTA4WGEvpitiEVtLk5R2k0des6eCk6weoFJss+kJATwTTi4zGh0h5yWTJSdqgY4c9ZDrnKEULfSYzUnCq+Xm7J+sQRMBO2RZq''@;'; put 'put ''N3ShUVsXkpt6EFObEruzHzGR82BqK8sShRDMslAxzrbIWNJmDihCs+7km0kujXqONOeXVUcBmcfH23HiuFr+lzxjlCCYPJD/PnoPunZsSyYpNRzdeUzehYN9Pv7yB0yZOc+7SdY6QUCPBLMkNEw2zTYKHqEPBfkeZBwksrnFgoM7zMhKM14EesmxyWd9I2CPcCMxxU31wd1IIlIZVxfkisAmcDJ/''@;'; put 'put ''kwY4WCbw06EmBPN0CBnjd9aQdzuXk7LrV5tppXtz6g43Zn4cbgxQq9hLZQjm5cMH4XZFy0aymW795u0YPWYCaZ9E/VTFOe7X3fVOMEsOnt+WOSiI1/m5bvLXBFIp+vwwpTo6dpi0SYo5mJccu3wODAIRFNlbhzSV9VuRprIxaSrrkC8rkUoPkUq3jkllSXSEYJZEw9ifo0ib2UWLNGfXFv/mT60O''@;'; put 'put ''Uux/uWw6sG7+31kxqtOOXo9RhmC2aNJQS1fEZExFHyiONH1uzHhs3blXr3MpJPtlJIJZUkAUu0IBLcVks7DAQ9pMN47s4zJlZqQftCA/m/ZmJiqLIFABAmZ6aEcnUIBOIw9SWri0dXQtrh5E2nHKbmAUUllyiEIwS6KhxuemlJ2g60AH4pOscOnFN5Nur8xVZnB6ogPqmcd55ihDMNkhf8zoh9GM''@;'; put 'put ''8mJyChDVFk638t3Ps/HJt1NVG5qhx2NUglkSdKaRHBzE6TI4gvdElgfHDgKHiXCm7aUUGkctcOQL2SyJWSh/DrNT4vPk4rRCyRSsUyuJ0grF0MsKvdyzzy/8WGUnELgLwQwEyoE/Byfu7zLIQXkzi9+d/VkNqjKj49rjmQfd+PldO1km1cz4oQzBZIHeft1luPz8IUqmK+LIVq7Q8diLY7VUJ5WZ''@;'; put 'put ''wLKP/xFQgWCWREmjkScDhEDaqaJCIpzHgczDZqRRNPpRIp45aRby5xTCWRI3lT9brGTqTiBC2chNuSpJS9mAtJbxQFg4WYuYT5LpW2+BOjWRhxDMmqCn/2ObdXGSNpOS+NelF6IgajPZPL5uoQfLflYvPZF3FihFMLt2aIP/PPIvJTWYLDBO5THm3Un4c/kar/xkHWQEVCOYpeFkGmkizSb7bvIM''@;'; put 'put ''1Agnmc+z0kxITyXfTfrLPEI+nTkSnV4aO6N+t1DS8xgikAn1XahHhDKhvgfxtT2wRxancOJyjW6Daykrko0QzIrQUeO36HjOm+lAsy5cICE4vpmswZz1iQWp29RLT+SdJUoRTK5vPPb5R5BUt46SwTBSOtI7bfWzVp1glkZa01sS4SxOQu6hlzkPCvJIy5lJVaeOmJBxqDhgiJO8F+ZSbkOPaDpL''@;'; put 'put ''Y6i372GUQiiW/CgTUzxIbOBCYhJpKBPdlLDeqr1c/OVLqdewbx8DKgTTx4DqtDn2f+TE7F0GOlErwNpMdkfKyXRReqJwSlOkpnmcxa4UweQB3XfrtRg+6GwlzeQ8vmzKifn0K+9g/8HD/FWWICMQagSzNNwafaT7o4UTktMbOXmta1rO/FwP+XJyKiQyrx+yaBrP7Ayg8ASlDJFECKVhDNh3WxgR''@;'; put 'put ''R4qsja9DZDKZfCmJVMbVoWTnsVQJyU6CpHxWXkLJeYRChFOegr8QzFPgUP5LTLwbXSmdUdPOpM2kGR8I30xOrr51uRt/fG9XGl/lCGbvbp3wzAN3KJkPk2eixWLFVz/+gq9++lXpiWmUwYU6wSxLTsVaTpqrFKruJZ1OqtLCpDM/x4wcIprHj5roz4wT6SbkZpnIp7PYn6+s9mRb1RFgGYRFeqim''@;'; put 'put ''txtxiUQoiUzWqgf67CKCaUJ4JLk9aBk3in0oA/FQrfoognOEEMzg4B7Ms7I2s0U3NzqfQ5HmdSnS3OHfKkC2MDN++9xCZX3VjB73ylI5ghkbE423qKpPAlX3UTFnJKdh2rX3AJ5+9R0J9vHO4iCuhWBWDnyNdNJ/mj/nyfRIXDvdUeBCYR75cJ4gjecxC9VPNyE7kzSeR4E88vUszJP8nBUhzJmk''@;'; put 'put ''7EQkwyn/ZEwtN9X2Jo0k/XFQTjRpZsKjiWhGUI112pG1kRyQw2QyVLWTFWHp/U0IpheJ0FvzNcR5M5uTNpMvEn+8eJnJSpCbQ9Hj4+z00q2ueZxnj3IEkwf14KgbcG7/s1BQUMBflVs42Oe18ROxaOVa5cZmtAEJwayZxDTiSf5IXGnIfJJ4sjahiKI7CylSvZh8msjcToTzGK/NRDxNyMuh30gj''@;'; put 'put ''6ijg1Eqc+7Zm/dDz0VarmyK2vRpJUO1uIo/0IGQzd2QcmbxjSCNJfpQ2ikq1EJDs9soPRibwHv5TGBt/yE0Ipj9QNU6bfP9p1d2FzuSbGZtIwYs+1mayeXz7ag8WfK1u9LhX2koSzL49u+LJ+25HYWGhd5xKrS2U83PZ6vV48a0PtUStSg3OYIMRgukfgWnEk8gSE08T/ceaT20b3fxdFFjkKKIA''@;'; put 'put ''o0JaEwktIC1nYS4R0BO8JvJJnwv5cz7V+c2jYCN6z3QXAUVURZbJqJuy6gR7sVg84GhtK7lg2aiIhz2SNY2kcYwCIqI8RBpZKwnKL0mfo9ywhpOPZDiRSDKtWdnXlTWSRBw5kTlxSPogRNJXMhWC6Sskjd1OLAW6dSVtZpOOxb6ZnDnBFwtfw3O/NGP3enWjx704KUkwVTeTc07M/IJCPENm8h17''@;'; put 'put ''9ntlKesgICAEMwig0ynZNMz/kccIrTk2hQNUtI9ah1hz52QtHqXUcRK5dDrY1E5rqsHgJKLppHdPRyFpP3k7fS+i7S6NgNJvRRTo4mLNKFei0WgtkTn6TqTW42Zyx6cgOwKd30JKiGLjs4c0sNDIn4nyRtro2WGmtSXMQ8EznOaJCCSRSSsF2dh4bad9iFjy8RZaM2nkVFCsgSxun87ABJLZsLbm''@;'; put 'put ''UwqJ1ITr5/+EYPoZYEM1z76ZLnQf4iKXE7NmWalJ90PJPM44KUkweWD333Ydhg7oq6yZnCv7TJ05Dx98+QMPV5YgISAEM0jAV/K0XiLKuzN385I3vtFrX0qQUt6n3OUkuWPS99dCTZj5BNzUaRbtMI0rMkktboSTlGufuNHif6dpRX4OBAJCMAOBsrHOEVvbhZ7nFaFRe28J1OJruKqj0Mzjq8g8''@;'; put 'put ''/o365nHGRlmC2bNLB4x+6C5lo8lZe3I0IxNP/N9bSM+kUiuyBAUBJpjdB7vQvi9pwchvUBZBQBAwNgJCMI0tP3/1ni0VrXq5tLyZ0XGWat3vrSfN43tCwDzOclCWYEaE2/EmRZOrmnSdhWcmm9ykb6bgxxlz+assQUCA/eJ60Jtt216mat1wgtBlOaUgIAhUgIAQzArAkZ8oUwNpM4cVoXEHCgA6''@;'; put 'put ''WdWqMrBo5vFsF6a+E07+4ezbo/6iLMFk0Y26/nJcNvxcZZOuF6cs2o+nKPF6Xr6aEfN6vwQ5MKPXBS6KOhQNpt5lJf0TBCqDgBDMyqAU2vuwNrPNmS50HcB5ZSvnm8m1x7cspeTqP6idXL3kzFCaYHZo3QIvPn4v+cazc3z1fCZKgqXLz2Qqf/ujLzH3z2W67J7qndII5vlOtOohGkzVZS3jCw0E''@;'; put 'put ''hGCGhpx9Mcr4ui6yYDnRuK2ZggApo8NJ/+qy2uZ5NfsTEw5spai+EFmUJphWSuczZvRDaN6kEYqKKIRUwYVTFq3btA3PjZlAUbPiAxhoEQvBDDTicj5BwL8ICMH0L76qte7VZnYZ6KK0YmVrM7n2+PEMN34ZF07p0ioRFagISEoTTJbR1RcNxS0jLlXWTM5jdNFb0yvvfITlazfyV1kCiIAQzACC''@;'; put 'put ''LacSBAKAgBDMAICs4Clq1SvWZjZq809tJpvH1/7uxvIZoWMeZxErTzAb1k/StJhhlHROVTM5+2IuX7MBL739UXHePAUvXr0OSQimXiUj/RIEqoeAEMzq4SZHEaEyedD2TCdVAXIjMvqkNvOkwvLXD2xI26927fHSc0B5gskDfo7SFfXs2lHZyj48Rgdlin7xzQ+wbvM2/ipLgBAQghkgoOU0gkCA''@;'; put 'put ''EBCCGSCgFT5NfD0neg53oSFpMznH7eE9Tkx/P7y4UIPC4y49tJAgmOec2QOP3XOrsknXWahW0tDOX7Qcr737SWkZy3c/IhBGNaB7Dneg9Rll+9748dTStCAgCPgBASGYfgA1BJs0m0mb2ceJHkM8WDXHhPXzQye4xyvukCCYMVGRGEs5MeskJsClaCAMJ14vKHRQsM94bNmxxytfWfsZAZud69W6''@;'; put 'put ''0LGfpCnyM9TSvCAQEASYYC6aYsbO1RatbGhATionURaBhCQXCnJNyMsJjdyXJQUZEgSTBzzqOsqJeb66OTF5jBYqH7lwyQr8b4JoMRmPQCxcW7rdWW70GEa1r6WSTyAgl3MIAn5FgCN+F3xnwd71lEj7ZC16v55QGhcEFEUgZAhm6+aN8fKT95MTLiUVUDQnJo8tv6AQz78+QbSYAbpgLVYPmnZy''@;'; put 'put ''oe/lLridiuZaDRCWchpBIOgIcECGy4PfvrLh4A5LyPnMBR1/6YBSCIQMweT7xouP34fO7VsrW5+cZ6ZoMQN7fXLUYFITFwbd4ITZSucWjhlYAcjZBAFfImA2wZHrwZxPwpB+mJ4aHn5yyCIICALVQSBkCCaDc+7ZvfHgHTcpHewjWszqXAbVP4a14XGJHgy6yYHYRNKOk/ZDFkFAEDAmAmwezzxC''@;'; put 'put ''GsxJYcgNQZ85Y0pNeq1XBEKKYMZER2Hs848oHezDE421mH8sXan5YqrqDqCnC8oe6cZZlzrRtIMJTodUU9KTbKQvgkBVELDZLdi+0oMlv1jhyAu9oIyqYCX7CgKnQyCkCCaDMfLqi3HVxecpXdmHx+mg0pj/pbyY6zdv56+y+BEBi82DNj1d6HWhBPr4EWZpWhDwOwKWMDMWUwT59lUU4FMk5nG/''@;'; put 'put ''Ay4nUBqBkCOYjRsk47VnHoLNZlU22IdnLNcoX0GlIzn5usvtVnoSB3twFFuFhBQXhtzogC2CtB5UulMWQUAQMBgC5H9ZmOsm/0s7MsT/0mDCk+7qEYGQI5gshGfuH4Uze3RRurIPj5NrlL82YSKWrFrPX2XxIwL2SA/6XuZA4/ZmMZP7EWdpWhDwFwJWMo/vWushDaYVhfliHvcXztJu6CAQkgTz''@;'; put 'put ''jC7tMfrBu1BEZmSVF9Zibtq2E6PHTCAy7VB5qEEfm8XiQeOObvS7oogCfYLeHemAICAIVBUBskTM/9qK/VstlHJMzONVhU/2FwRKIxCSBNNGQTD/e+YBtGjaWHmSSYk/MX7SZMxesKS07OW7jxGIjHVj4DUO1GlsJv8tcUvwMbzSnCDgNwSsYRak7nBj4WQb8nJFe+k3oKXhkEIgJAkmS/j8Qf1w''@;'; put 'put ''763XKR/sYzabsS/1MJ58+S3knMgNqckd6MFarG406+JGn0vccLuEYAYafzmfIFAtBEhZyfrKBd9YsXczaS+lek+1YJSDBIHSCIQswYyNicYbzz2sfMoiFrjVasNn303FN9NmlZa/fPcxAhFRbpx9VRFSWokvpo+hleYEAb8gwKmJdorvpV+wlUZDG4GQJZgs9puuvBDXXHq+8lpMTr6ecSwLz7z6''@;'; put 'put ''Dg4eORraM97PozebqbJPMzcGjHDCaqdCIBJR7mfEpXlBoPoImCixegFV7vntUxsyDpops4j4XlYfTTlSEDgVgZAmmMn1auP10Q8jMiICbsVT+VhtNsya9yfenvjVqTNAvvkcAZvdg479i9B1oAlFhRLx43OApUFBwBcIEJdkF6Jl083YulzyXvoCUmlDECiJQEgTTAbivpHXYPjg/iGhxSygSPKX''@;'; put 'put ''3voQ6zZvKzkH5LMfEIiIJlP5lU40aC0k0w/wSpOCQI0RsIVbsHWZmwimDQ5JS1RjPKUBQaA0AiFPMFs0aYhXnn4AFnqTVb2sIqctWrtxK14Y+75W6af0ZJDvvkNAS76e7EL/EUVUq5yiyp0S9OM7dKUlQaBmCHDOy8O73FhAaYlysswU5COm8ZohKkcLAv9EIOQJJkPyxL234uzePVBQUPBPhBTb''@;'; put 'put ''YiIizWmLZs1frNjI9Dcck8WNBi0oAfvlRbBHmig6VSr86E9K0qNQQ8BqM+NYugfzJ1tx7JCFFAuhhoCMVxAIDAJCMAnnTm1b4oVH79E0mKprMTng58jRDDxNAT9HM44FZpaF8FksVg+atHfiTEpdZLFR0I+QzBCeDTL0YCNgIXJ54hhpLr+x4eh+M/nei+Yy2DKR86uLgBBMki2Trucfugs9unRQ''@;'; put 'put ''vnwkT2ULJZr/Zc4CvPfZt+rObB2NzGLzoHlnJ3qeLyRTR2KRroQYAkwuc7Pc+PMHGw7uJJcoIZchNgNkuIFGQAjmScTP6EzlI4lkql4+kofLhJoDfl586wOs37w90HMuJM/HJLMFkcwzLnBTXlKIuTwkZ4EMOlgIcKWe7AyXRi4P7xFyGSw5yHlDCwEhmCflzUE+/33sHnRu3yY0tJgn65Q///q7''@;'; put 'put ''yC8oDK1ZH6TRcqWf5p3d6HkB5cgkbYpU+wmSIOS0IYUAJ1LPPOzBoh8sSCOzuOS6DCnxy2CDiIAQzBLg9+7WEc88cCccDkeJrep+tFismPTNFPww/Td1B6mzkZktHrTs7kS3QW6Ex5ikZrnO5CPdUQsBTkV0aJcHi6dYcDxNAnrUkq6MRu8ICMEsISGr1YIXH7sXHdq0DAmSyabyrJwTGP2/8dhz''@;'; put 'put ''4GAJJOSjPxFgc3mDVk50H+ZBfG3A6ZAURv7EW9oOQQTMXCLXjN0bgGU/W8n3koN5JKAnBGeCDDmICAjBLAV+nzO64Mn7bg8JgslDt5JD4OIVa/DK+ElwuaTqTKnp4LevXFIyMcWF7kPdSGkOFHGeTOGZfsNbGg4dBMxU/pErs21facWKmRYUFRDblEUQEAQCjoAQzFKQh5oWk4cvuTFLTYIAfo2O''@;'; put 'put ''d1NZSSdadKfgH4skZA8g9HIqBRGwhJlReAJY+7sZO1bRZ6nQo6CUZUhGQUAIZhmSCqWIch4+1+NNS8/E6DHjcfDw0TIQkU3+RMAW7kbTjm50PseF2AQqLVlEqkxJ/uxPyKVt1RAwm8gaY0LaXmD1b1SlZze/rIlJXDUxy3iMhYAQzDLkxRHlLzz6L3Tp0DYkIsoZAqvNhoVLVmDMu5/CReYlWQKL''@;'; put 'put ''AJvMayW50GWACw3aerRUUm6nsMzASkHOZkQEOL+lk17Ktq0wY9NCK7KPc+FHIZdGlKX0WS0EhGCWI89uHdviOcqLGUp+iZqpfCKVkVwgZSTLmRZ+32yPcKNZFxfa9/EgjgKAioqIZLqFaPodeDmB4RAwkdbSQlrLzEMerJ1nwf6tRDQd4m9pOEFKh5VFQAhmOaLlCOvRD9yBXt07h0SNcoaBTeVc''@;'; put 'put ''PnL0a+ORejitHGRks78RMJkouryeG+37utCknRu2CDL3idnc37BL+0ZBgJSTNtJaFuR5yM8S2LTIhpxjrLEUraVRRCj9DA0EhGBWIOd2rZrhxcfv025bqtco98LApvIlWlT5RDidElXuxSUYa05nVL+5Cx36uFGvKZnNSWOjEc1gdEbOKQjoAAE2h7sp2wWXetz4hw1H9oB8LUVrqQPRSBcEgX8g''@;'; put 'put ''IATzH5CcuuGRu27GzJmaHAAAQABJREFUwL69QkaLyaM3U5Wfj778HlNnzT8VDPkWFATCIjxo0tGFNj1dqF3fRJVI+KEqfrJBEYacNCgImMkUbqYXrIyDbmxabMXeDRY4CkRjGRRhyEkFgUoiIATzNEA1bpCM/z3zIOxhYVputdPsrsTP7B5wIjcPXEZy++59SozJ6INgDXpUjAdNO7nQsqcbCfWI''@;'; put 'put ''aBLHFKJpdMlK/ytCgHNaMrnMJo+drStN2LnKgtxsCuGhe5QsgoAgoG8EhGBWQj533nAlLjlvEPLz8yuxtxq7WEiLuXHrTrww9j3k5ReoMSglRuFBRAzQrFNx7syEJB4Umc5ZoymxQEpIWAYBCt4xw2QBso+Sn+VqM3autiCHosPhEWIp80MQMAoCQjArIanaCfF447lHERcbHVJR5Vzl5/tfZlO9''@;'; put 'put ''8qmVQEl2CSQCHmKTkdFAo/YutOjGpnOP9lB2cmojiToPpCjkXL5CgLgjl3fk96TjR4hYrjFhzzoK4DlOG4RY+gplaUcQCBgCQjArCfWVF5yLW6+9PKS0mGyGKipy4vX3P8PilWsriZTsFmgErHY3GrR0o0VXCgZq5kF4uAlOF1FQ+pNFENA7Ahy8xknSucBAxgFg51rysdxoQT5V5JHIcL1LT/on''@;'; put 'put ''CJSPgBDM8rE55ZeoyAi8Pvph1E+qS9HVzlN+U/kLpy46cjQDz1LqosNp6SoP1fBjs1jdVN/cg+aURzOltQextdikCJqvYj43vHBVGwBrK6k0KsgMXpDjQepOE3atMVMFHqodXihmcNXELeMJTQSEYFZB7sMG9MF9t14XMtV9vNCwqXzZ6vV4ZdxEOIqKvJtlrVMEOI9mVJwbjdpRUFAHJ5FOyhto''@;'; put 'put ''59J5HkrxIlpNnYotJLploqAdK/3xS8+xI8C+TRbs3WTG8aNkGncJsQyJSSCDDBkEhGBWQdSsxXzm/jvQqV2rkCOZFosVX02ZTn8zqoCY7BpsBDiXZr1GLjSmWucpLUirSbXOObErk02P+GoGWzwhcX4mlRb6Y2169nEPDpO2cs96M9UNp1RDoq0MiTkggwxNBIRgVkHubC7mEpJP/fv2kEq+zhCx''@;'; put 'put ''P2aho4hqlX+CZWs2VAE12VUXCJBWMzIKSGnlQsN2LiQ14mh0Cz3zPaRNoie/kE1diEmVTvxFKulOmZvlwtH9ZuzbbMYhSpCel03aSlGkqyJqGYcgUC4CQjDLhabsH8JsVvzr5hEYOqBvSAX8MBqcuoj9MJ8bMwEHjxwtGyDZqnsETGb2z3Sjfis3GrYmv80GoIh0fuh7RLOpe+nptIOkoORE6Fwb''@;'; put 'put ''nPOz5ma7SUNpxoHt5Fe5g/LqZvH8op1kEQQEgZBBQAhmNUTdKCUJLz52X8ilLWKo2B9z5bpN5I/5MfILCquBnhyiJwTMFjabE9lsSWUpW7hQpwFpOkmzCdJ4aj6brNkUbZOeRKafvnD0N5m+TRSrwyVMsylPZdpe4OAOC47sNp3UVAqp1I/ApCeCQGAREIJZDbytVgsuGz4YI0dcGnJaTIaLSeZP''@;'; put 'put ''M+fhgy++l4oa1Zg/ej2ENZvRpNms19iDlJaUW5PIZkw8aaVsxVopTn0kpnS9Si8A/SKuaCFSyZV12JG3MNeJYxScc2SviUilGZmpFhTkcT+EVAZAGnIKQUD3CAjBrKaI4mNjMPrBO9GqeRM4HI5qtmLMw9gfk5VaEyZNxqwFS4w5COl1xQiQBjM8Akio70Jy8+JAobh6QEQUVVgh/uBxUfoj1m6K''@;'; put 'put ''72bFOBr5V5Izm721co3sg13gQm4O56okUrnHqhHLLCKYbon+NrKUpe+CgN8QEIJZTWjNdMPt1a0THvvXLVoL7L8WSguTzByqV/7yOx9pJSVDaeyhOFY2pcfU8mh5Nus1cSGxvhuxtSlQKNKqmdO1uuic3J2vg9C6FNSZDkQoWUNpIg0lX9/OQiKUWR5kHjHj6D6O+jbheJoZhfm0o2gp1ZG7jEQQ''@;'; put 'put ''8BMCQjBrACwH/Nw78lqc2/+skDSVc9DP/oOH8Z833tOSsdcASjnUYAhY2Jye6CENp5v8NilQiEpVxhHhDI8ivzwbabWIaHIlIRcFfIiWU4fC9WonmVCSDyWXYszPd5LfpAnHDpmQTlrK9FQzsohcFhQU/67DUYR8l2z0DLKH2RAVGYnwsDDY6LM3RJ/f85xUia2ALGx5efnII0G6tAsy5GETAAKE''@;'; put 'put ''gBDMGgLdILkeBfzcg4Ra8SFV4ccLG/tjrli7Aa+OnyRBP15QQnBtJpN6RCyRzLpEOpPcSEj2IJ4+R9E2O5nVuRQgazfZtM7k0y3BQ4GbJV7NJAXkEJ8kBTOVZSTtZP4JD7IzyHfysBkZRCozD1JKoWNmFGkeP6yllEVPCERGhCO5Xh00bVgfjVOStapyibXiEBsTjXA7kUubjYKuLKf4xTtdLi1n''@;'; put 'put ''M6eYyzmRi6MZx5B6OA17DxzCngMHkXoojdLPhZaLl55kqnpfhGDWUMKsxbtgcD/ceePV9KbPr/qht1jpxjZ9zgK8+9m3xSbS0INARlwGAnRpIDKWTOl1PKhFZDO+jovM6rQt3kWaTjPCqLoQ+/hpxJMt66zxZLWLmNnLQPM0m5gPklmb85lzDkr6qBENFwFamOdEfq4ZJ46xiZs0lEQos2idTd8d''@;'; put 'put ''eZKT8jTIBvXnlKQ66NS2FTrSX/PGDVA7IR6RpK3U/ODpOuGyxcXXT7F7Cn/m30ou/J3/OI+z94/3O0GEMy0jE1t27Maq9ZuxadtOHMvKKXmofBYEaoSAEMwawVd8MFf4efLe29CVkrAXFoZm6h6z2YJJ30zBjzPm+gBRaUJVBLiMpT2CUiGRZpPJZkxtIqAUuR5di4hnHJnYIz2w2oGwMCs9FAkF''@;'; put 'put ''IpyauZ3LqdNDkasPMQcNOT/Pk5yBrdmshmRizqZtjWjQJlehm4Jw3CjIp0TmWUBOOnCctJM5FISTfYzzUrJPJTdyKvng5mTRFwJ1EmuhZ5cO6Nm1I1o0aYha8XGanIuoTK/b7dauA1/0mOcOK0hY8+kiTWdaegY2bNmBhUtXYc2mrRS8KmWBfYFzKLchBNMH0ucLtW2Lpnj+4bvpwWjTbgI+aNZQ''@;'; put 'put ''TTAGRU6XVulnyap1huq7dFYPCHioXjpgJ4IZGcPkk9ZUTz2GSGcEE0+qQsS/hdE+VkqbZAujaHZW19GiEVEioExENULqjWw/SUY1Qso7/vWBv+hgOcn1NNqnMcdi4sg9I2WTRiR5SNqYyHeuyEF/RBId+R7SSBKJzLTgxHHgRCYlMifTdl6OCQW5bP7mFoRIMgpGWfjlqW3LZhjS/0x07dAGdWsn''@;'; put 'put ''aqSSM5Twb4FYmGyGkR8nE9mde/bhtz+WYQGRzeNZ2VpfAtEHOYdaCAjB9JE8beSLOOKSYbjusgtCMuCHYWTzy5GjGXiNyklu27XXR8hKM4IA0SUKKgqz0194MdEMjy4OKIqIdmvEMyKKfqO/cCagtI+VYh2sNjcsYTwvKfDISuZBzh+vqf0IUeJff1Ew/nCSyBWv6H/vM927Pp0QvI1p7RZ/0f7X''@;'; put 'put ''iGNx+381xc0T+eWAC05m73KaKFE5iEB6UFRABJL+ColA5hFZzD9Bf2S1zM+hYBtaF1AEtyOfgze49eLznK5r8rt+EeAX887tWmH4oH4aseRgHTZ7s0YxmAsTTSace/enYubvizB74RLNhzOYfZJzGw8BIZg+lBnnxnz2wTvQunnTkMuN6YWRSebOPfvx2nuf4OBhKSfpxUXWgUKATOyUUslMWk6L''@;'; put 'put ''1Wtu98BC5NQWRppPIp62cLdmhrfa6Hfaj9dc4pD3N1PWJYvVreV+5Ie/2UwklROLk2n/L9JZciisPiUNk5MIosftLbdJJmviBy4igW4nkUH6c1EchYO0j07vmrSMHFtRVGAm0zURy0Iz7c8+deyTKsSxJMSqfm7VrDEuHjqA0t11RGREhPbMCJS2srKYchAnm9B37d2Pb6fNwvwlK0PSQldZvGS/''@;'; put 'put ''UxEQgnkqHjX6xuSqS/vWeOb+UZpJQW83ixoNrgoHm+nNd82GLXjj/c9wPFucxqsAnewqCAgCiiOQQD6VlwwbgHPPPlOLAGeTtN6fFUwyeVm+ZgM++24adu8/qPs+Kz6NDDE8IZg+FhObym+66kJcccHQkDWVs+aHTZELl67EOxO/QkGhpMHw8TST5gQBQcCACPTs0h7XX34hmlFEOJvBOWjHSEsE''@;'; put 'put ''aVozMo/h66kz8ctvCzQ3DyP1X/oaWASEYPoBb35Dff7hu+gm0jBkTeVMMjnWYua8P/DR5B/J9BdcnyI/iFmaFAQEAUGgUgjEREXi6ouHYSgV5QgnR2H2szTqwr6Z/Dd/8Qp8TPf29EyKNJNFECgDASGYZYBS001cRrJbp7Z46r7bQ9pUziTTRSzzh+mz8cUP02sKqxwvCAgCgoDhEGhCidFvu/Yy''@;'; put 'put ''dGrXmvx03YbTWpYHOOfj3LZzN97++Cts371PTOblARXC24Vg+kn4xabyi8hUPiRkTeUMLfulchWJz7+fhqmz5vsJbWlWEBAEBAH9IdCzaweMvPoSpFDFNyNrLctD1m63I/PYcYz/5GssXbWeFArGMvmXNy7Z7hsEhGD6BscyW0mIj6WAH4oqb9E0ZBOwMzCsyWQ/zI+/+hGzFiwuEyvZKAgIAoKA''@;'; put 'put ''SggMpZyWN1x5EeKolKOK5NIrK44053KT73/+nZY7M9gplrz9knXwERCC6UcZsPauU9uWeJqiylmjaTSHbl9Cw1icyM3TyklypQhZBAFBQBBQFYFLKP3QNZcO12qEh8J9n30yWXv5yTc/YdpsDv4Rn3tV53ZVxiUEsypoVWNfq9WCERcNw/VXXBjSpnKGjknm8ewTGEeR5cso3YUsgoAgIAiohsDl''@;'; put 'put ''wwdT0Y3zEGYLLaUC39/ZWvXBF99j+tw/hGSqNrGrMR4hmNUAraqHRHOt8vu4Vnk7FBQUVPVwpfbnmxBHHY6bNBmr1m9WamwyGEFAEAhtBM6nijw3XXWxRi71ntvSH5Li+zuXbB1P9/d5fy6HUzSZ/oDZMG0KwQyAqPitrkWThnjuobsQEx0V8m92bE5JS8/E2A8+x4atOwIgATmFICAICAL+RaBf''@;'; put 'put ''r26468arqCpPeEhHVPP93UGBnS+P+wir1m3WCKd/kZfW9YqAEMwASYYvuvMG9MFdN10NI1Ru8Dcs/KZ7mOqWv/3Rl0Iy/Q22tC8ICAJ+RaBdq2Z4cNSNqJNYK6R97b0gc+WfoxmZ+M/r72HPAan648Ul1NZCMAMocbs9DPfecg0GU4mw/Pz8AJ5Zn6cSkqlPuUivBAFBoPII1E1MwKP/uhktmzYW''@;'; put 'put ''clkCtvDwcGzYvA0vvvWhlAwugUsofRSCGWBp162dgP88fDcapiSHbJWfkpALySyJhnwWBAQBIyHAQZysNDj7zB4wUcdD0e+yInlxMvYfZ8yhFHVT4KCa67KEFgJCMAMsbyZUXdq31oJ+Qj11kRd6L8l8hypCrN+y3btZ1oKAICAI6BqB4QP74pYRl1IaOouQyzIkxfEH/Pfau59g0fI1koi9DIxU''@;'; put 'put ''3iQEMwjS5bdeTmVxM1V4CPWoci/8TDKPUODP2x99QSRTAn+8uMhaEBAE9IlAY7JCPUHZQZLqJAq5rEBE7I+ZevgInnl1nBbcWcGu8pNiCAjBDJJAOdLw4TtvwllndBV/zJMy8EaXc9kxSWEUpIkppxUEBIHTImCloM37br1WM41zffFgLawd5Psm//HCL+q8eE31XEGIk557v2s/BuE/MZUHAXQd''@;'; put 'put ''nFIIZhCFkJJUF6MfvBP1ac2R5bJAu1FmUG3bdz/9FktXrxdIBAFBQBDQHQK9u3XCv2+7nir12ALeNyaVYWFh2nlzc3ORcSxLyy3M981cDh71gPplR1xsNNjnPyEuFvHxcZqp2ks4A91p7jPnxHxuzARs3Loz6IQ30OMP1fMJwQyi5M100XXr1BZP3Hsb+I04FEqKVQZufhs/np2jVYSQspKVQUz2''@;'; put 'put ''EQQEgUAhEBFux1P/vh0d2rREILWXrJ1kYpmbl4ct23dr1dA2Uh7hQ2npyMsvu4BHGJmnE2rFUYR7I3Tt0Aad27VGUt3aGsELtFKDo8qXrFyLl9/5WKtdHih5yXmCh4AQzOBhr52Z/TEvO2+Q5igu/ph/C4Nvply7/NNvp2Hm/EV//yCfBAFBQBAIIgID+5yBO2+8OqDVeuykkTxB2so/l63Gr78v''@;'; put 'put ''ws49+6tVJacWaTP7nNGFUuX1RvMmjTSCHKi64azF5OW/b74vCdiDOH8DeWohmIFEu5xzhVN+TPbnGdi3t/hjlsCISWZ+QSG+mjIdP838vcQv8lEQEAQEgcAjwNrLp/89Cu1aN2dHR793wOtfuYzchb6dNgvbdu2tFrEs3dEoKl88qG9PXDx0IJLr1UFhYWHpXfzyXbSYfoFVt40KwdSJaGonxGul''@;'; put 'put ''JJs1bhiwi10nQ6+wG0wyi5wuTPn1NyKav4Z8mc0KwZIfBQFBwK8IsPbvnluuRUR4mN/9CNkczlacyT/NwIy5f6LADySQ4wBGjrgEvbp3hpPiAPwdDMRaTK5V/ixFlG/cJr6Yfp2sOmhcCKYOhMBd4AuvXctmmm8P1ytnZ2xZihFgkukmZcHM3//AJ99M1bSago0gIAgIAoFEwEL3oYfvugm9u3Wm''@;'; put 'put ''0/pXe8km8dRDR/DuZ99g7aZt9Dxw+W2o7P9/1UVDtdR57LLl71iAiIgITJs1j3zsf5Dk636Tqj4aFoKpDzloveAb2MC+vXDvyGu0i9zfb5M6Gvppu8IE3ET4LFq+Gu999p2UHjstYrKDICAI+BKBZo0a4On7b0cCRWT7897M5HL3vgMY+8Hnmq8la/wCsZxLfpm3XnMZRaD7VzvLZv9Minh/7KU3''@;'; put 'put ''ceRoRiCGJucIEgJCMIMEfHmn5eo+119+Pq6++DzxxywFEpNMM92c1m7coqUxSj2cVmoP+SoICAKCgH8QuPLCIRhB92WL2eQ3gllMLlPx+vufEslM9bs2sTRS/Xp1IxeAEVqaI39qMnmcbxKB/u2PpT7xKS09DvmuDwSEYOpDDqf0gh3JOQl7n57dhGSegkzxFyuR8J1792MCJWTfunNvGXvIJkFA''@;'; put 'put ''EBAEfIcAp/th7WXHtq38FtzDFW/SqJrZa+9OwtYde4JWVvG8AX1w+/VXgNPo+UtTy8E+fyxdqZWQLHRIDmjfzVR9tSQEU1/y+Ks3nCD32QfugAT9/AXJKR+YZPLN+IMvvseSVetO+U2+CAKCgCDgSwSaNUohgnkHmcdj/UK6ioMZnZpZfOmq9RTYGFwf/Fsp8OcSSp/nr1gANpMfy8rGoy+8rpUI''@;'; put 'put ''9qWspC39ICAEUz+yOKUnbA5u3byJFvQTHxvjtwv9lJMa7AvfpHLz8im6fAamzZ7vlxu/wSCR7goCgoAfEBg+qB9uufoS2CgIxh9aPTYZfzN1Jr6ZNrPcpOl+GFa5TXIp46dPJpP3V55M1tj+39sfUvL1dUHT1pYLgPzgEwSEYPoERv80wkE/Z/borJnLmXD60yfGPyPwf6v85u9yufHLbwvw5Y/T''@;'; put 'put ''JcLc/5DLGQSBkEPg/tuvR/8ze/jFPM7kchOl7HmFKtwczTymG2zbtmiKZ6mUMbts+YNUc33yb6b+qhXTCLbGVjegK9YRIZg6FyinjbhoyDm47drL4XA4/HKh6xyC03ZPizA3mbF8zQa89/m3OJqhn5v0aTsvOwgCgoCuEeCk5Oyu1KpZY5/3k+9dHCM+5t1PNFcff6Yjqk7n77zxSgwfdDZcfjDZ''@;'; put 'put ''M7Feu3Ernn99AuX4dFSne3KMzhEQgqlzAXH32MH81msuxcXDBkrQTzny4hs1m8x37NmH9ymN0eYdu8vZUzYLAoKAIFB5BBqlJBHBvBOJVNPb1wuTrKXkQ/4GRVRn55zwdfM1bq9Bcl28+Ph9iIuJ9rlyg+/XGZSu6NEX3tCV5rbGoEkDfyEgBPMvKPT9gd+iH7rjRpx1RlchmRWIioN/+KbFCdnn''@;'; put 'put ''LVpewZ7ykyAgCAgCp0egZ9cOuP/2GxDpY1NxseXFhP9NmEQkM/iBPeUh8a+br8bQAX19rsXk8bvcbjz18ltaNhB/mOHLG5NsDwwCQjADg7NPzlInoRaevO82tKGKPwUFBT5pU8VG+M24kNwJps76nXx8ZmmfVRynjEkQEAT8j8CF5/bHTVddDKvF7FMtHge57KJ0ay+88b6uNXidKDXTMw+MovFb''@;'; put 'put ''fA42l8N8+Z2PqIDGGgn08Tm6wW9QCGbwZVDpHvAbX+MGyRTdNwrJ9epoPpmVPjjEduTgHyrAiaWr12Hi5Ck4lJYeYgjIcAUBQcAXCNxM5JJJpsXHBJNLJn7/y2x88cMvuogcLw8rDvJ5iczkzRo38HmgKWPwwRff4aeZ8/xaDrO8scl2/yIgBNO/+Pq8dSZOHdq0wBP33IroqEhJX1QBwl6/zL0H''@;'; put 'put ''DuKjr37E6g1bKthbfhIEBAFB4J8I+COC3Gsef21CcXCP3qOo777pKgwb2M/nZnKOJP/u51mY9PVPQc/9+U/Jy5aaIiAEs6YIBuF4b/qiB0fdCI4y91eesiAMzS+nZL/ME7l5Wo45NptzWiNZBAFBQBA4HQJMBB/71y3o1bXj6Xat0u+sKOCgnudff5eqkh3wqem9Sh2p5M5D+5+Ju2+5Bm6Xq5JH''@;'; put 'put ''VG431mDOnPcHxk2aDEdRcJPLV67HsldVEBCCWRW0dLQv+xlySa9RVNKL82OKg3TFwuEbOqcDWUjlyT79dpqkMqoYLvlVEBAECAF+gX/qvtvRuX1rcrjx3cL+l3v3H8Tzb7yrVSTzXcv+aalD6xZaqiabzerTE3DJyAWLV2i116VkpE+h1UVjQjB1IYbqdYJvflddOBTXX36B5MisBIQlTeYfk1/m''@;'; put 'put ''qvWbK3GU7CIICAKhioA9jGuQjyK3pJY+TbLO6Yk2bNmOl976EMezc3QPb0pSXfzfE/chJjrKp31lHJavXo+XKNCnUHJh+hRbPTQmBFMPUqhBH2xk/h1JdWMvHT5Y0hdVEkc2meecyNWizH+cMVeizCuJm+wmCIQaAlwycTRVs/F1knUmVivXbaQURZ/oMv9laTnXrZ2AFx+7B3USE3xqLWMcVq3b''@;'; put 'put ''hBfefF8IZmnQFfguBFMBIfJb9j0jr8G5Z58lJLOS8mSTOWs0V6zdiE/IZM6BQLIIAoKAIFASAbs9DKMpyXqblk19aiL3Eqv/UQWfLANoMGsnxGsaTH8QzOVrSIP5tmgwS847VT4LwVREkjEUUf7AqBskEXsV5cm+UEeOZuCrKTPw28Ilmp9mFZuQ3QUBQUBRBNhC9PT9t6Mj5YL0pQ8m53/cvH0X''@;'; put 'put ''/jv2fUOYyJPqJGoEs1Z8nE81mJoP5hLywXzvU7IkFSk6i0J3WEIwFZJ9QnwsHqRqPz06dxBNZhXkyiZzThOycMlKfE456aSWeRXAk10FAYURYEvHE/eMpHtqe5+Oku85Bw+n4bkxEwyRo7c55cB84dF7wDkxfblwFPnsBYvw9kdfShS5L4HVSVtCMHUiCF91oy75yDxKaTXaU9SfVPupPKolA4C+''@;'; put 'put ''/HEGFq1YU/mDZU9BQBBQFgEu0duvV3fS3PkuvRkT1/yCQox+bTy279oLt4dzXOh36d2tIx65eyTMvlTj0nA5D+aUGb/hwy9/kDyY+hV/tXsmBLPa0On3wOR6temt+za0bNZYSGYVxcSaBQeZamaTufzrn37FsazsKrYguwsCgoBKCIy67nKtFreF2JUv08GxmfzNDz/H74tWkPZO3+bhay4ehmsu''@;'; put 'put ''PZ9yCPs2VyVrMCdO/hHfT58jlXxUumhOjkUIpoJC5SE1rJ9ECYJHonmThkIyqyhj1mYy0dxFCZC//PEXLFm1vootyO6CgCCgCgJXnD8YIy4Z7vNa5Ox/OGPuQnDKNC4EodeF74fPUi3ybh3b+bxUJGMwhgKd5v25TGqR63UC1KBfQjBrAJ6eD+WbQtOG9TWS2TAlmVJAFOq5u7rsG5NMdjyf9+dS''@;'; put 'put ''qgI0S3wzdSkl6ZQg4F8EzjmzB+666Wpwtg5fajD5/nLoyFGMHjOe1un+HUQNWq9fr44W4BMbE12DVv55KD+jGM/nxryL9ZQTlAuGyKIWAkIw1ZLnKaPhC5idsx+5+xZNoykk8xR4KvWFfaX478DBI/h66q+YT1Un9O0tValhyU6CgCBQSQRaNG2Ep/99O+J8TLD49Gwmf4vN5HRf0WsU9aXnDcTN''@;'; put 'put ''V1/i8zKRfF/lfMSPvTgWqRTwJIt6CAjBVE+mp4yISWbLpg3x+D23ol6d2lrFn1N2kC+VQoBLc7roDXvR8jVaTfO9Bw5V6jjZSRAQBIyLQDSlf7vsvEE4b2BfhFNOTF8vnA9z3aateGXcRF36e3Oi+f9S9Di7Wvlaw8gp4rbt2oOnXn5bC3jyNbbSXvAREIIZfBn4vQdMMts0b0KazJuFZNYQbb4p''@;'; put 'put ''pqVnYurMeZg5f5HcGGuIpxwuCOgVgTMoNdHVFNzSiu6dbpfLp+bxkmPml9e3KE3PAkqTprdgn6HnnIW7bx7hc+0lj58DfGb9/ifemThZd+MuKR/5XH0EhGBWHztDHamRzBZEMu+6GUl164hPZg2kxw8EKgOETVt3kNl8JlZv2FKD1uRQQUAQ0BMCyeRzePnwQeh/5hla3sciP0d480vr7n2pePGt''@;'; put 'put ''D3A4TT++mLXiYvDfx+5Fg+R6Ptdesrw5wOftj76gF/XFFJ3u0tMUkL74CAEhmD4C0gjNFJPMpnjozhtRv15dIZk1FBo/GPLyC8gvczl+/HUuJU4+WsMW5XBBQBAIFgJsAh/crzcuGnIO6ifV1UiPr83C5Y2NydZPZBX57LtpyM3LL2+3gG6/44Yrcf7gs+GiIhS+XvhZxOngnnz5LeykbB2+DJ7y''@;'; put 'put ''dV+lveojIASz+tgZ8ki+sDm6/FFKYdRIostrLEN2VOdoUNY88APitz+W6uYBUePBSQOCQIgg0LVDG1x5wRB0aNtSKwnp9AOpqghKvi9z8OA4MhfrwVTet2dXPHD7DbBYzH4hf/xyvp38L59+dZzcLyuaGAb/TQimwQVYne4Xk8wUPEo+mY0bpkiezOqAWOoYNpubiGxuofrC3/08G8vWbPDLjbnU''@;'; put 'put ''aeWrICAI1ACBFNJUXkbmcK7UExUZEdQgSH5Rzco5gf+Nn4gNW3cGzWzcjDKPcNR8Yq14v5jGWVzsfzl5ynR88cN0qeBTg/mr90OFYOpdQn7sH2swH77zJs2JPT9fH2YZPw43IE3zmzk76i9ZuQ5TyGy+jcrAySIICAL6QoBzOg45u7dmAq5D5XXZBzBQ5vCKkOC0RVyj/PX3PtXuHZy5IpBLUt3a''@;'; put 'put ''ePLeW9G0UQOqrON70ziPxautfZa0lxvIj13M44GUcGDPJQQzsHjr7mwNkutqppD2bVpCSKbvxMMPimzSRsylChU/z1mgJVT2XevSkiAgCFQHgTCbVdNWXjz0HDRrXJx6R28BJpy6KPXQEYybNJkSkO8ImCYzqU4i+effhDYtmvqNXLLM+N64eftOqsM+Qczj1ZnEBjpGCKaBhOWvrtatnYB/33Yd''@;'; put 'put ''undqLyTThyB7/TPT0jMwY96flJJjEY5n5/jwDNKUICAIVAYB1pp169hWy2nZoU0L8i20wN/R4ZXpV3n7MAk7npWtlZFcuHSV39P4cEGO+269Tst36W9c2Dz+3qffYBq9ePtLS1oerrI9sAgIwQws3ro8G5so2N/m3pHX4KwzuiIvT791cXUJ4Gk6xQ8zJpv7KDn7dKo9zFpNjj6XRRAQBPyPAGvk''@;'; put 'put ''WGPZs2tHSpZuD6qfZVVGyz6ZTjLd/zr3D3z3yxxkHDtelcMrvW+fM7rgtmsvA7sK+Jtc8r2QX7Ife/ENXZfHrDR4smOFCAjBrBCe0PoxNjoKo66/AoPPPlML/BHfGN/Knx8YnD9z/aZtmtl85bpNVB7O4duTSGuCgCCgIcABPJefPxhMoGKiow2Zlo01r2wy37V3P76dNguLVqz1mTYzsVacptEd''@;'; put 'put ''RlWKbHRvCoSrQGRkJH6cPgcfffWjBPeEwHUqBDMEhFyVIUaE23HzVRfjQsoF5yDyIySzKuhVbl8OBOK6wxu2bMMvcxZizcatPntoVK4HspcgoC4C7EvI+SwH9OlJRSVqa2ZYPQTw1ARxNpmzOZmDYmaQRnPV+s3VtoJwAvVzzjoDwwb0BZNwbjcQ93m24uQXFODJ/3sbu/enBuScNcFcjq05AkIw''@;'; put 'put ''a46hci3w2+wIKpF21UVDtchKo9+c9Sgg1kywRrOw0IF1m7dppvO1G7cJ0dSjsKRPhkCAfckHEakcROSSiSXftwKhlQsUOHzP8BLNfamHsHzNRo1o7j1wENkncivsRgxZp5pRZPgZXdqhV7dOSKZqbkwqA+kDydrLKTNYezlF7nMVSkudH4VgqiNLn46EfWXOH9QPI0dcojnEB/JG5NOB6LyxkkRz''@;'; put 'put ''/Zbt+HXeH1R6cquYznUuN+mefhDg0o79e3fXtHKskeNF9fsVW0H4Hl1YWIj0zGOaP+Pho+nIPJ5N7k2FGgZ2qkwUHxuDFMoUUp8wYj97NrczNoHGh/vKWTWefPltMDmWJTQQEIIZGnKu1igtZNLoRzfuO6lkWHRUpN8dwKvVSUUOYqJZbDp3YPO2XZj5+59YSWYwvZSNUwRmGYZCCDCZPOesHhqx''@;'; put 'put ''DIZGTg9Q8n3Dm63C+9lr7ubv/Jk1uUwog6nN5cjxT7+dim+mzaS+SN1xPcydQPRBCGYgUDbwOfjm1ZHSejww6gbUrZ1oSEd5I8HPDwU2nbtcbkq0vAe/LVyCxZS0nSt8yCIICAJAEyp1O6hvL3A5Q458DrSpV2RQNQTYrM9BSs/+bzyOUeolWUIHASGYoSPrao+USQ+XD7v/tuvRslljyZVZbST/''@;'; put 'put ''v73zfI7qStP4u2NQzhEhDBJCEogcTDAGG9tg43EoxxnP7Hpqy7sftnb/jN2q/bjhw1ZN7Uxt7YTd8YzHM2MccMAYE2whkEgiCOWcc8Sw+z6HObjBwghJ3X3vPc+tajrQ995zfu9t9dPvecPMd7RC84Z6IBqaWgW18L746pR0dPfO/CB8JwkEhABWU0qKlpnkna0b1kqGZkDDIxdNr1xA0IZ1GsaL''@;'; put 'put ''qmf453//mcaMnhf8PePmDgEKTHdsPeeZ5moQ/d//9eumntyEZgPapZg5H5gH+E4CWDrHhoLtKFNy+ESFegRaPNHa7jsHzv8kgTkSQFWLdatKNHFnm7lHi0fUamTi4RzBRmh3LI2jLNHP//cPLEsUIeZeOg0Fppes4YOxJCclyJs/fFH2PbaTf+gjbC8EyuM2qIWKkXn+2bGT2kquZtblSiI8fJ6O''@;'; put 'put ''BGZMICMtVbZvXmeSd0qKCiRGf2RBWPJH7YwRRv2NSCiq1rJK//Rv/8ml8ahbIzoDoMCMDndfn3WBipwfaAmjV5/bxwzzKFgScbEmIUhLHNVqbBOWz788fVY6uXweBWvwlPNFANf1siV5snvbJtNRDJnPWGJFggqF5XxRjsxxEEeOH8L/+K8/lcu1jbRfZLB77iwUmJ4ziT8GhJioPTsf0hZjL2uX''@;'; put 'put ''jETftF/zB92ZjzJ0+RzFl7/4qlIuXq1Te1yb+UH4ThKIIoHEhHiz/L17+yZzn67eS8RWRrqUThQRBOrU+KGASMt/+ekvzI/f65rFzs1NAhSYbtp9XmaNPyRlxcvlH7SH+bIli017yXk5MA9y3wSsVxOdMmrqGk2sZnnlOSYF3TdJ7hAJArhel2h9xh2b18vDWzYYzyWyjRlfGQn64TsHPM740ftf''@;'; put 'put ''v/mDvPPhIZYkCh9qXxyZAtMXZvL2IFGP7u/eeE22bFjDHuZRNpXNPscwenr75Iz2PT92ssp4NYdHxqI8Op7edQKpmqSzrqxEdm3dJKtLiwTeSiTsQFhy8zcB/O3Bj4Tfaq3LX779HpN6/G3OeRk9Bea8YORBUIj9J68+L89o9x+WD/HG9QAvEf7gT2pP+aaWdm0rV21iNeubWk0vdG+MkqMIOoFY''@;'; put 'put ''vQaLly+V7dqicMv61bJYf5AijpveyuBYHuISST1/PHhIfs5WkMEx7BxnQoE5R4Dc/RsCyHB+af/j2sP8aUF5EXolvmET7UdYtoJ9RkZHTYmjijMXpOJstbZt62AtwWgbJ4Dnx7W2dPEi7X29Wm9rTB3d+Lg4xlYG0NY2POft9z5Wz+UB/ngNoI1nOyUKzNmS437TElio2YPwUrz5oxclf1Eu4zKn''@;'; put 'put ''pRS9F+0SOr4UhjTLs1braZZrAeTK85ektaOLYjN6pvH9mSEqES6zcc1K2bZxrRRpc4ZkXRK3rQqZCe57E39rAsgWh31//c778rbWu2QbyG8hcvoFCkynzR+eyUO8oNzI32qG+ca1q0x7SX65hIf1XI4KO+ELAqJzcGhI6nTpHJnolXprae+SKcbFzQWvE/suWABRmWtE5ZZ1ZVJUsERSU1JMWRpk''@;'; put 'put ''gbMgenAvAyyJoxTRz/7nHa3JWy7MFg+urWc7MwrM2ZLjfvckkJaSLD984WnZ//gjAjHDsiP3RBa1N4SKTSyjN2rM5pnqy3K2ukaFZ4surTNBKGrG8diJEf6CqhEbVpeaskLLl+ZLin7W8SOSotJjxgrDcPCDFB16rtQ2yH/892/kYk0961yGgXMQDkmBGQQrengOsTELtV7mVvmrV56T9NQU4830''@;'; put 'put ''8HA5NCVgl9Gx5DkxOSntunR+8Wq9VOkyek19k3T39tNb4diVgs46JZqos76s1GR/L87NkURN7LMJffRUunFBIJYbtv74yAn51e/fk76BITcmzlnOigAF5qywcaf7IYCi7KXa7u1vfvyyrNK6mZMqWrhkfj8Eo/temyAEMdE/MGgSg85pq8pqFZ0NzW0yNDwS3QHy7PNOICE+TutU5srKFYXqpSw2''@;'; put 'put ''STpZGemmxiGuAybwzTtyTx8QPzZRkaJOO4f9SksQoXMYl8Q9bTJPDI4C0xNmcGMQGWkp8uOXvi97d++41QLOjZkHZ5Z2KR33KH/Uo97MOk0UunClVi6p4Gxp75TRsfHgTNiRmcTGxkhuVoZ6KZfJ6pIiLSu0TPJyssxSKBBg6RvCkptbBPA5R6xlX/+AfHj4mLz70efqtRw0f7/dIsHZzoYABeZs''@;'; put 'put ''qHGfWROI0SXzx3XJ/A1dMk/jkvmsOXplR3g2kCiEDV2E+voHpb65VfsPN5iOQk2t7TI4PEqPtVcM9udxwEOZl5NtknJWFhWqhzJf8rT3d3JSkhEP9FJ6zGARHo71WGLF4mj5aTnw8RFpauvg5zjCdvD76Sgw/W5BH44fS+YrCpfKm6+/KGtXlZg+5ozh8qEhpxmyFZyI40QoBL6g2rp65KrGbiJL''@;'; put 'put ''vUFv3X39MjY+Mc3efCkcBFA6LC012Sx5o3QQPntL8/MkOyNN4ygTbwlKeCkZuhIOC/jjmPBWIhwGn93O7h45Vl6psZZfSqP+SOR14Q8bem2UFJhes4hD40HbuFef2yfPPrnb/GGb0iVXbsEiAMFpb/CKjY6NSa96OVvUG4JMdXg72zp7pKun14hOfpHNzf5IqkvRz9Vi9UYi03u5CkoUPM9SMYkV''@;'; put 'put ''AwgIbHbJm7znxtvPe0NIhopK1MW9VFsvxyvOyFenz0n/IBN4/GxfL4ydAtMLVnB4DPCubN+8Tt7QNpMP6hfhhC6z8ksvuBcEvtSs4MSXG0TnmIrOAf1y69J4zpa2TmlW8Qnh2dM3IAODwybWM7hEZjczMExNTpTM9DRT3BwFzvH5yc/LEZQHS9UbkjLwWQJj3LhKMDvWft4LnzdsVkziusFj3PC3''@;'; put 'put ''Fj/2EENddeGS3i7rj71u/v31s8E9NnYKTI8ZxMXh4I/d4twsLWX0vDyydaP5AwcPCzc3CIR++UF0YsPyOmpvDmqGeo8uqXd290q7LrV39fSZ5/0qPPH/ExOTckNFVBA3FDFP0HqDKUk3hWROVros0sSb3KxMyc3OlJzMdI2ZTDRJGBAOEJP43EBIUkwG8YqYfk74/MAzjR8ReGw3++Niauqaad84''@;'; put 'put ''rPVtkaCDzxKqP9Q2NEurCkoUSw/dz+7PexKYKwEKzLkS5P7zRgCZrHt3bTfF2TPUMwORwc1dAhCbuEE8WeGJL1FcF4jhHFHP59DQiC7lDZsvzl7NdMVjLO2hdBIE6PjklHk/vmS9IkQhHGNUEMSqhzEx4aaATE1JUs9jinokU029WNwjbhLL3YkqMuM1KcfGx1nhYIUknnNzkwCuCfyo+Ojz43Li''@;'; put 'put ''lJYOun7jz2IRnusbxvs/rj/CEJoyqp8ZfA64kUCkCFBgRoo0zzMjAkgAQtzYT157QTZpm0kbKzajnfkmZwhAcMLrYsUnnkNoWfEFETqpX6ao14iySRMqNEfHx81jPMeXLrLecQ8vKEouTU5eM+0xv1YRaz2B+JK+doc3HefAeRcuXCDf+4ub48DjGL3hCx/38XFxEqcdb+JURCYkxBmRiMxteCQT''@;'; put 'put ''9Tn+Hx1xIDLNvnqPY2Kz8wgVkPRIOnNpz2iiuPZRPqi1o9MUPD9WXsXWrjMixzdFkgAFZiRp81wzJgDPzvef2CUv7n/CxJPRmzljdHyjEsAXsF32s2IUz60n1ApSC8uKOjy3wi70Mf4/dMOxIAjtOUIf4zX7OvbBYysQ7zx26HlDj8/HJHA3AigLhmvq2MlKFZfvm5jlO6/Pu+3L10kgkgQoMCNJ''@;'; put 'put ''m+e6LwK2A9BfvvKs9j1eSW/mfdHjm+eLQKhYDD0mv9RDafBxJAjEqee7V2OS33r3Izl4+LjxvEfivDwHCcyGAAXmbKhxn4gSSNKex888/oi89MyTJiaN3syI4ufJSIAEokwAHnJ4Lk9WnZNf/O6A1De1slVjlG3C09+bAAXmvRnxHR4gcMub+bJ6M9esNBmTiJPjRgIkQAJBJoBYSzQseOeDQ/Le''@;'; put 'put ''p0dM3HCQ58u5BYcABWZwbOnETJAosV+9mS+rNzM9LdVkCHOp0gnTc5Ik4BQBeCzhuTx19oL88u0D2g2rmV5Lp64A/0+WAtP/NnRuBt/TAPdCzTR//YX9pkg7ACBbmBsJkAAJ+J0AYn7htUSs5e8/+FQ+OHSUXku/G9XR8VNgOmr4IEwbbfEe2/GQaTe5RLuYIDbTZusGYX6cAwmQgFsEUOYKW3nl''@;'; put 'put ''OVN+CAXRr2vhfG4k4EcCFJh+tBrHfIsAfu0v0q4mLz3zhOx5eKvWHIw3QvPWG/iABEiABDxOwHotO7Rb1VvvHpRPj37FougetxmHd28CFJj3ZsR3+IAAuqOsLyuRHzz/tKxZWcwkIB/YjEMkARIQ0zN+SkN8Dh8/KW+/94kWT+8yxfbJhgT8ToAC0+8W5PhvI4CSRvse3SEvPLVHcrRnM5bNmQR0''@;'; put 'put ''GyI+IQES8AABJPBgSbymrkF+/c4HmsxT/a2uUR4YJodAArMmQIE5a3Tc0asE0KUlf1GOvPLsXtm1daO27IvjsrlXjcVxkYBjBOxy+ODQsBz4+HN5V2+DwyOOUeB0XSBAgemClR2d481l81J57bl9Ztkcnkxmmzt6MXDaJOABAjHacx71e8urzstbfzoodY0tTOLxgF04hPAQoMAMD1ce1UME4uNi''@;'; put 'put ''Zc/OrfLi048Lss0hMq9fv+6hEXIoJEACQSZgl8PrGpvlt9rm8XjFGUHcJTcSCDIBCswgW5dzu0UAy1JZGWny3N5HNUbzYUlNSWZ85i06fEACJBAOAnY5HJ14Dnzyuda0PCb9g0PhOBWPSQKeI0CB6TmTcEDhJICWkwVL8403c+dDG0xB46mpKSYChRM6j00CDhJAsXQkGR4trzQF0xu1puUNDdPh''@;'; put 'put ''RgKuEKDAdMXSnOdtBBCfuVbLGaF+5vqyUtOSDUKTGwmQAAnMhYAtln7uUo387sBHcqb6isZdMiRnLky5rz8JUGD6024c9TwRiNEyIfBkPv/UY1JaVGg6ATERaJ7g8jAk4BAB2zsc3Xf++OEh+fzLCpmY5I9Why4BTvUOAhSYdwDhUzcJoH7mozu2yLNP7pZlSxazULublwFnTQL3TcAm8KALz4ef''@;'; put 'put ''HZWDh4/LgJYg4kYCrhOgwHT9CuD8byOQnpoiTzyyTZ7es1Py83JNSRGUFeFGAiRAAqEEUG8XZYcGNGnnM+3CgySe9s4exnOHQuJjpwlQYDptfk5+OgI243yfdgTau3uH5GZnUWhOB4qvkYCDBGxm+MjomCbwnJZ3PzosjS3trGfp4LXAKX83AQrM7+bD/3WYAL5IcjLTZa8KTXg1F+VkU2g6fD1w''@;'; put 'put ''6m4TwN8DeCzHxyfkq8pzRljW1DfJ16yp6/aFwdnflQAF5l3R8D9I4CYBKzSf3L1dnty1nUKTFwYJOETACstJrTJx6swF+ZN6LC9cqWOzBoeuAU51dgQoMGfHjXs5SOAboQmP5lYjNNERiDGaDl4MnHLgCYQKy9NnqzXG8oig9BBLDgXe9JzgPBGgwJwnkDyMOwTwxZOVniZ7VGTCo7lEk4HQ55x1''@;'; put 'put ''NN25BjjT4BLA5xtF0ie0SDo8lhCW5y9fpbAMrsk5szARoMAME1ge1g0CyDrftW2jaT9Z8GC+ILOUnYHcsD1nGSwCNit8VJN3KtRj+f6nX0h1TS2FZbDMzNlEkAAFZgRh81TBJADvJepoPrxlvXo0d8jKFQWCbh4o2H7jxo1gTpqzIoGAELB1LIeGRzR556wc/Oy4XKptYIxlQOzLaUSPAAVm9Njz''@;'; put 'put ''zAEkgM5A68qKZf+eXeY+KTHRCE3EanIjARLwDgF03sGtp7dPjlWckU+OnJD6plaWG/KOiTgSnxOgwPS5ATl8bxJY8MADUlTwoInR3L5prWRlZhiPCNtQetNeHJUbBBBfidUF3Le0dcjhExV6OykdXb1cbXDjEuAsI0iAAjOCsHkq9wjgiyw3O1N2b98sj27fIgUPLjYQIDSxtM6NBEgg/AQQXwlh''@;'; put 'put ''iZWEK3UNcuhouRyvqJL+QbZ0DD99nsFVAhSYrlqe8444gcSEeNm8dpU8pW0oVxYVSEJCApfPI24FntAlAnYZfHhkVM5drJFPvvhSKs9fMhniLnHgXEkgGgQoMKNBned0mkBsbIwKzEL1am6SzevKJCcr03gz6dV0+rLg5OeJAFYNICzhtezo6jaeyiNfnpbahmbGV84TYx6GBGZCgAJzJpT4HhII''@;'; put 'put ''A4Hv6Rdhji6fb9u4VnY+tEGKC5dKXFwcvZphYM1DBp8AssEhLPFDrb6pRfuEV8mhY+W6DD7EcJTgm58z9CABCkwPGoVDco9AnBZ2XlVcaEodbVm/2ng1QQFdgljqyL3rgTOeGYHQpJ3+gSE5e/GyHD5+UjvuXJUx7RnOjQRIIHoEKDCjx55nJoFvEcCyXmZ6qmzSWM1Htm6UUo3VTE5KMskJEJtM''@;'; put 'put ''DPoWMr7gIAFbuxL9wesbW8wy+IlTZ6W9q4f1Kx28HjhlbxKgwPSmXTgqEpCFutyHrHMsoW9ZXybLtFMQPJ0QmsiGpdjkReISAfz4whI4tq6eXjl97qIcO1kl1VdqNWlnyiUUnCsJ+IIABaYvzMRBuk4gThODykqKZOvGNbJpzSrJy82+FW/GIu6uXx3Bnb8VlVgKHxwalktX61VUVkrV+cvSp7GV''@;'; put 'put ''DB8Jru05M/8ToMD0vw05A4cI4Is2JSnRiE0UcF+7qtjEa2LJEMkNFJsOXQwBnarNAsc1PTI6KnWNrVJedU4qqi5Ia2cXe4MH1O6cVvAIUGAGz6ackSME4N1JS0mSNSuLZeuGNbK6dIVkZ6aLFZvw7nAZ3ZGLwefTDBWV45qc09jSJhVnL0jFmQuaEd4mU/rjiRsJkIC/CFBg+steHC0JTEsAYjM9''@;'; put 'put ''NUU9m8tNbc3VupyODkIxMTEmZpMJQtNi44tRJGCXv3E/Nj4uTS3tJq7y1NlqqW1slskpisoomoenJoE5E6DAnDNCHoAEvEXALqOXriiQDWWluoxeIvmLsiU+Pt7ErLH0kbfs5dJo4F3HDaJyeGREvZOtGk95SSovXDa1KykqXboaONegE6DADLqFOT/nCSTEx0nh0nxZp0JzfVmJLM3PkzT1dkKI''@;'; put 'put ''MiPd+csjrABwjUFQIvsb8cEoen61vkmqLlySM9VXpLW9S65pVQRuJEACwSNAgRk8m3JGJHBXAviyz8vJMvU1N6wplZLCZZoklGG8mxAAuDF28674+B8zIGC9lLjH0nen1qa8VNtglr+v1DVKT28/WzbOgCPfQgJ+J0CB6XcLcvwkMAcCSYkJUrBksSYIFZlbgdbaRCwnPE4QmlZ0zuEU3DXgBEJj''@;'; put 'put ''KXG99PYPmCSdcxdrtEZlndQ3t7KrTsCvAU6PBKYjQIE5HRW+RgIOEnhA4+Iy0lJl+bIlJlmoWL2bDy7OlXR9Dd4oKzjp4XTw4giZMq4FKyohKFGfsqW9Uy6rlxJFz6/WN0vfwCC9lCHM+JAEXCRAgemi1TlnEpgBAQjOLC17VKjdhFYVL5cVBUuN4ExNSZZY7SgUKjjxmFvwCCCG0opJ3CNmF4Ky''@;'; put 'put ''raNLrmgsJQqfI+O7s7uPNViDZ37OiATmRIACc074uDMJuEMAghPicmn+IikuXGo8nVhSz8pIk8SEBJM0hLqbNkudNTj9dW1YMQkhCS8ltomJCeONhIfyakOz1NQ1mWzvnn71UKr3khsJkAAJ3I0ABebdyPB1EiCBexJAhnp2ZoYs1yx1LK0jnjMvN0sLwCdLgopOiBV4NyE6ITjp6bwn0oi84U4x''@;'; put 'put ''ieeTk5MyNDyifb77pKm1QwVlk/FOtnV0y8jYOG0XEcvwJCQQHAIUmMGxJWdCAlEnAKGSlBhv2lcuW5JnBCc8nrlZmaY0UrK2uUQCEcSm9XZSeIbPbLCHFZM2dhK8xzW7e3h0zIjJ5rYOaWhuM4k5EJMoJfQ1vZPhMwqPTAKOEKDAdMTQnCYJRJNAfFysZKanaomkbI3jXCRL8nLU05ltWlumJCdJ''@;'; put 'put ''ghaBh/DEFhrbCTGEzd6bJ/znNgJWROLeikg8BjN4JYdHRmVA4yY7u3tNMg4EZasKSTyHx/I642dv48knJEAC80OAAnN+OPIoJEAC90kAIigxId6URUJbS9wW6/I6vJ2LsrM03jNJ63PGSZwmFEE4WdEEAYobBJRdcg+qAMWc7YZwg9AbXrcicnxiUkbHxjRecsh4Jds6u6S9s0c6e3qlW+tODg6N''@;'; put 'put ''sJ+3Bcl7EiCBiBCgwIwIZp6EBEjgfgjEag/1m+IzWT2faZKtxeCzNZkIZZTS01KMKE1U8QkBivei5zrEV6ggs0IU57VC1N7bsURSmIaODefHeO09/g83+xpex9gQu3rt2jX1RE7JmIpItFccGBzWWpOD0t7VLT19A0ZEwkMJEQmhGck5mQnwHxIgARKYhgAF5jRQ+BIJkIC3CSzU5XQkGOGGzPZU''@;'; put 'put ''XWZPSU785rHGeiLeEyIV74EXFPvExcbIAwu0daF6RO1ysvUKWvEZej+dWMP/W0FoKVnxaAUi7u178H57g2DEkvS1qWvGo4je2xMqHkc1iQZdbxAXiWVrCEbcQzTi8Yi+Pqr/Pz4xZUSnPS/vSYAESMCrBCgwvWoZjosESGBeCCxcuMCIy9iYhcbTiXsIzjiNC41diNcW3hSqRqQmmQx4/D/EaXJS''@;'; put 'put ''wm1jwGspKlzhKYQAvKFeRgjJGzf+T8Xh6E2hqGJxSOMecYNAnND3jmu5nyn1REJM4jY5NSVTt0TmlJb8YR3R20DzCQmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQ''@;'; put 'put ''AAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfs''@;'; put 'put ''wdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4i+ZHtw4AAADdSURBVAAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAF''@;'; put 'put ''prfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8JUGD63oScAAmQAAmQAAmQAAl4iwAFprfswdGQAAmQAAmQAAmQgO8J/D97oVzdCcK8fgAAAABJRU5ErkJggg=='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=spinner-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3MiA3MiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5jbHMtMSwKICAgICAgICAgICAgLmNscy0yIHsKICAg''@;'; put 'put ''ICAgICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY2xzLTEgewogICAgICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAw''@;'; put 'put ''OwogICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmNscy0yIHsKICAgICAgICAgICAgICAgIHN0cm9rZTogIzAwNzJhMzsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2RlZnM+CiAgICA8dGl0bGU+UHJl''@;'; put 'put ''bG9hZGVyXzcyeDI8L3RpdGxlPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNiIgY3k9IjM2IiByPSIzMyIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMyw2MC45QTMzLDMzLDAsMCwxLDM2LDMiPgogICAgPC9wYXRoPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=spinner.16f763cebc6b64df-svg; filename sascode temp lrecl=32767; data _null_; file sascode; put 'options mprint;'; put '%macro mp_replace(infile,'; put 'findvar=,'; put 'replacevar=,'; put 'outfile=0'; put ')/*/STORE SOURCE*/;'; put '%local inref outref dttm ds1 rc;'; put '/* create filerefs */'; put '%let rc=%sysfunc(filename(inref,,temp,lrecl=200));'; put '%let rc=%sysfunc(filename(outref,,temp,lrecl=200));'; put '%if &outfile=0 %then %let outfile=&infile;'; put '/* uniquely named 32 char datasets */'; put '%let ds1=all%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,29);'; put '%let ds2=start%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,27);'; put '/* START */'; put '%let dttm=%sysfunc(datetime());'; put 'filename &inref &infile lrecl=1 recfm=n;'; put 'data &ds1;'; put 'infile &inref;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'run;'; put 'data &ds2;'; put '/* set find string to length in bytes to cover trailing spaces */'; put 'length string $ %length(%superq(&findvar));'; put 'string =symget("&findvar");'; put 'drop string;'; put 'firstchar=char(string,1);'; put 'findlen=lengthm(string); /* <- for trailing bytes */'; put 'do _N_=1 to nobs;'; put 'set &ds1 nobs=nobs point=_N_;'; put 'if sourcechar=firstchar then do;'; put 'pos=1;'; put 's=0;'; put 'do point=_N_ to min(_N_ + findlen -1,nobs);'; put 'set &ds1 point=point;'; put 'if sourcechar=char(string, pos) then s + 1;'; put 'else goto _leave_;'; put 'pos+1;'; put 'end;'; put '_leave_:'; put 'if s=findlen then do;'; put 'START =_N_;'; put '_N_ =_N_+ s - 1;'; put 'STOP =_N_;'; put 'output;'; put 'end;'; put 'end;'; put 'end;'; put 'stop;'; put 'keep START STOP;'; put 'run;'; put 'data &ds1;'; put 'declare hash HS(dataset:"&ds2(keep=start)");'; put 'HS.defineKey("start");'; put 'HS.defineDone();'; put 'declare hash HE(dataset:"&ds2(keep=stop)");'; put 'HE.defineKey("stop");'; put 'HE.defineDone();'; put 'do until(eof);'; put 'set &ds1 end=eof curobs =n;'; put 'start = ^HS.check(key:n);'; put 'stop = ^HE.check(key:n);'; put 'length strt $ 1;'; put 'strt =put(start,best. -L);'; put 'retain out 1;'; put 'if out then output;'; put 'if start then out=0;'; put 'if stop then out=1;'; put 'end;'; put 'stop;'; put 'keep sourcechar strt;'; put 'run;'; put 'filename &outref &outfile recfm=n;'; put 'data _null_;'; put 'length replace $ %length(%superq(&replacevar));'; put 'replace=symget("&replacevar");'; put 'file &outref;'; put 'do until(eof);'; put 'set &ds1 end=eof;'; put 'if strt ="1" then put replace char.;'; put 'else put sourcechar char1.;'; put 'end;'; put 'stop;'; put 'run;'; put '/* END */'; put '%put &sysmacroname took %sysevalf(%sysfunc(datetime())-&dttm) seconds to run;'; put '%mend mp_replace;'; put '%macro sasjsout(type,fref=sasjs);'; put '%global sysprocessmode SYS_JES_JOB_URI;'; put '%if &type=JS or &type=JS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header('; put 'Content-type,application/javascript%str(;)charset=UTF-8'; put '));'; put '%end;'; put '%else %if &type=CSS or &type=CSS64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,text/css));'; put '%end;'; put '%else %if &type=PNG or &type=GIF or &type=JPEG or &type=JPG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/%lowcase(&type)));'; put '%end;'; put '%else %if &type=SVG or &type=SVG64 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/svg+xml));'; put '%end;'; put '%else %if &type=ICO %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,image/vnd.microsoft.icon));'; put '%end;'; put '%else %if &type=JSON %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,application/json));'; put '%end;'; put '%else %if &type=MP3 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/mpeg));'; put '%end;'; put '%else %if &type=WAV %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/x-wav));'; put '%end;'; put '%else %if &type=OGG %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,audio/ogg));'; put '%end;'; put '%else %if &type=WOFF or &type=WOFF2 or &type=TTF %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,font/%lowcase(&type)));'; put '%end;'; put '%else %if &type=MP4 %then %do;'; put '%let rc=%sysfunc(stpsrv_header(Content-type,video/mp4));'; put '%end;'; put '%if &type=HTML %then %do;'; put '/*'; put 'We need to perform some substitutions -eg to get the APPLOC and SERVERTYPE.'; put 'Therefore the developer should avoid writing lines that exceed 32k'; put 'characters (eg base64 encoded images) as they will get truncated when passing'; put 'through the datastep. This could of course be re-written using LUA, removing'; put 'the length restriction. Pull requests are welcome!'; put '*/'; put 'filename _sjsout temp;'; put 'data _null_;'; put 'file _sjsout lrecl=32767 encoding=''utf-8'';'; put 'infile &fref lrecl=32767;'; put 'input;'; put 'length appLoc expanded_path $1048;'; put 'if _n_=1 then do;'; put 'retain pgm "&_program" appLoc expanded_path;'; put '/* index is deployed in the /services/ folder under the appLoc */'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'expanded_path=cats(''?_PROGRAM='',appLoc,''/services/'');'; put 'end;'; put 'if find(_infile_,'' appLoc: '') then put '' appLoc: '' apploc:$quote1048. '','';'; put 'else if find(_infile_,'' serverType: '') then do;'; put 'put '' serverType: "SAS9" ,'';'; put 'end;'; put 'else if find(_infile_,'' serverUrl: '') then do;'; put '/* nothing - we are streaming, so remove to default as hostname */'; put 'end;'; put 'else do;'; put '/* More recently, SASjs apps avoid inline JS to allow strict CSP */'; put 'length infile in1 in2 $32767;'; put 'infile=cats(_infile_);'; put 'spos1=index(upcase(infile),''APPLOC="'');'; put 'if spos1>0 then do;'; put 'in1=substr(infile,1,spos1+7);'; put 'in2=subpad(infile,spos1+8);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,appLoc,in2);'; put 'putlog "new apploc: " infile=;'; put 'end;'; put '/* find & replace serverType in HTML attributes */'; put 'spos2=index(upcase(infile),''SERVERTYPE="'');'; put 'if spos2>0 then do;'; put 'in1=substr(infile,1,spos2+11);'; put 'in2=subpad(infile,spos2+12);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,"SAS9",in2);'; put 'putlog "new servertype: " infile=;'; put 'end;'; put '/* find & replace serverUrl in HTML attributes */'; put 'spos3=index(upcase(infile),''SERVERURL="'');'; put 'if spos3>0 then do;'; put 'in1=substr(infile,1,spos3+10);'; put 'in2=subpad(infile,spos3+11);'; put 'in2=substr(in2,index(in2,''"''));'; put 'infile=cats(in1,in2);'; put 'putlog "new serverUrl: " infile=;'; put 'end;'; put 'if sum(spos1,spos2,spos3)>0 then put infile;'; put 'else do;'; put '/* during SAS9 sasjs compile, dependencies get static GUID */'; put 'infile=tranwrd(_infile_,''?_PROGRAM=pZKd6F95jECvRQlN0LCfdA=='',cats(expanded_path));'; put 'put infile;'; put 'end;'; put 'end;'; put 'run;'; put '%let fref=_sjsout;'; put '%end;'; put '%else %if &type=JS64 or &type=CSS64 %then %do;'; put 'options nobomfile;'; put '%let fvar=pZKd6F95jECvRQlN0LCfdA==;'; put '%let stgfile="%sysfunc(pathname(work))/stgfile.txt";'; put '%let newfile="%sysfunc(pathname(work))/newfile.txt";'; put '/* convert from base64 */'; put 'filename _out64 &stgfile encoding=''utf-8'';'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_out64",''A'',1,''B'');'; put 'char= ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc =fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '/* get appLoc from _program */'; put 'data _null_;'; put 'pgm="&_program";'; put 'appLoc=substr(pgm,1,find(pgm,''/services/'')-1);'; put 'call symputx(''apploc'',cats(appLoc,''/services/''));'; put 'run;'; put '%put &=fvar;'; put '%put &=apploc;'; put '/* replace the GUID with appLoc */'; put '%mp_replace(&stgfile,'; put 'findvar=fvar,'; put 'replacevar=apploc,'; put 'outfile=&newfile'; put ')'; put 'filename &fref &newfile encoding=''utf-8'';'; put '%end;'; put '/**'; put '* In SAS9, JS & CSS files are base64 encoded to avoid UTF8 issues in WLATIN1'; put '* metadata - so in this case, decode and stream byte by byte.'; put '* */'; put '%if &type=GIF or &type=PNG or &type=JPG or &type=JPEG or &type=ICO or &type=MP3'; put 'or &type=WAV or &type=OGG or &type=WOFF or &type=WOFF2 or &type=TTF or &type=MP4'; put 'or &type=SVG64'; put '%then %do;'; put 'data _null_;'; put 'length filein 8 fileout 8;'; put 'filein = fopen("&fref",''I'',4,''B'');'; put 'fileout = fopen("_webout",''A'',1,''B'');'; put 'char = ''20''x;'; put 'do while(fread(filein)=0);'; put 'length raw $4 ;'; put 'do i=1 to 4;'; put 'rc=fget(filein,char,1);'; put 'substr(raw,i,1)=char;'; put 'end;'; put 'rc = fput(fileout, input(raw,$base64X4.));'; put 'rc = fwrite(fileout);'; put 'end;'; put 'rc = fclose(filein);'; put 'rc = fclose(fileout);'; put 'run;'; put '%end;'; put '%else %do;'; put '%put streaming to _webout;'; put 'data _null_;'; put 'infile &fref lrecl=1 recfm=n;'; put 'file _webout mod lrecl=1 recfm=n;'; put 'input sourcechar $char1. @@;'; put 'format sourcechar hex2.;'; put 'put sourcechar char1. @@;'; put 'run;'; put '%end;'; put '%mend sasjsout;'; put 'filename sasjs temp lrecl=99999999;'; put 'data _null_;'; put 'file sasjs;'; put 'put ''PHN2ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3MiA3MiI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5jbHMtMSwKICAgICAgICAgICAgLmNscy0yIHsKICAg''@;'; put 'put ''ICAgICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAuY2xzLTEgewogICAgICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAw''@;'; put 'put ''OwogICAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLmNscy0yIHsKICAgICAgICAgICAgICAgIHN0cm9rZTogIzAwNzJhMzsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2RlZnM+CiAgICA8dGl0bGU+UHJl''@;'; put 'put ''bG9hZGVyXzcyeDI8L3RpdGxlPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIzNiIgY3k9IjM2IiByPSIzMyIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMyw2MC45QTMzLDMzLDAsMCwxLDM2LDMiPgogICAgPC9wYXRoPgo8L3N2Zz4K'';'; put 'run;'; put '%sasjsout(SVG64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; options notes; data _null_; format url $256.; rc=METADATA_GETURI("Stored Process Web App",url); url=coalescec(url,"localhost/SASStoredProcess"); urlEscaped = tranwrd(trim(url)," ","%20"); putlog "NOTE: SASjs Streaming App Created! Check it out here:" ; putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- "; putlog "NOTE- " urlEscaped +(-1) "?_program=&appLoc/services/clickme" ; putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- ";putlog "NOTE- "; run;